summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS74
-rw-r--r--classes/autotools.bbclass2
-rw-r--r--classes/base.bbclass202
-rw-r--r--classes/cpan-base.bbclass55
-rw-r--r--classes/cpan.bbclass49
-rw-r--r--classes/cpan_build.bbclass47
-rw-r--r--classes/devshell.bbclass5
-rw-r--r--classes/dsmg600-image.bbclass20
-rw-r--r--classes/e.bbclass11
-rw-r--r--classes/gconf.bbclass2
-rw-r--r--classes/gpephone.bbclass7
-rw-r--r--classes/gtk-binver.bbclass2
-rw-r--r--classes/image.bbclass109
-rw-r--r--classes/insane.bbclass336
-rw-r--r--classes/kernel-arch.bbclass13
-rw-r--r--classes/kernel.bbclass84
-rw-r--r--classes/linux-kernel-base.bbclass4
-rw-r--r--classes/lsppchd-image.bbclass10
-rw-r--r--classes/lsppchg-image.bbclass10
-rw-r--r--classes/magicbox-image.bbclass37
-rw-r--r--classes/meta.bbclass5
-rw-r--r--classes/module.bbclass17
-rw-r--r--classes/n2100-image.bbclass32
-rw-r--r--classes/nas100d-image.bbclass20
-rw-r--r--classes/nslu2-image.bbclass20
-rw-r--r--classes/nslu2-jffs2-image.bbclass18
-rw-r--r--classes/nslu2-ramdisk-image.bbclass18
-rw-r--r--classes/nylon-image.bbclass5
-rw-r--r--classes/openmoko-base.bbclass20
-rw-r--r--classes/openmoko-panel-plugin.bbclass6
-rw-r--r--classes/openmoko.bbclass3
-rw-r--r--classes/opie.bbclass5
-rw-r--r--classes/own-mirrors.bbclass4
-rw-r--r--classes/package.bbclass38
-rw-r--r--classes/package_deb.bbclass245
-rw-r--r--classes/package_ipk.bbclass13
-rw-r--r--classes/package_tar.bbclass2
-rw-r--r--classes/palmtop.bbclass7
-rw-r--r--classes/patch.bbclass82
-rw-r--r--classes/qt3x11.bbclass4
-rw-r--r--classes/rm_work.bbclass2
-rw-r--r--classes/rootfs_deb.bbclass136
-rw-r--r--classes/rootfs_ipk.bbclass134
-rw-r--r--classes/sanity.bbclass2
-rw-r--r--classes/scons.bbclass4
-rw-r--r--classes/seppuku.bbclass333
-rw-r--r--classes/siteinfo.bbclass10
-rw-r--r--classes/storcenter-image.bbclass30
-rw-r--r--classes/tinderclient.bbclass4
-rw-r--r--classes/turbostation-image.bbclass32
-rw-r--r--classes/xfce.bbclass3
-rw-r--r--classes/xorg-module.bbclass31
-rw-r--r--conf/bitbake.conf62
-rw-r--r--conf/checksums.ini11895
-rw-r--r--conf/distro/amsdelta-oe.conf29
-rw-r--r--conf/distro/angstrom-2007.1-legacy.conf9
-rw-r--r--conf/distro/angstrom-2007.1-oabi.conf16
-rw-r--r--conf/distro/angstrom-2007.1.conf126
-rw-r--r--conf/distro/debianslug.conf133
-rw-r--r--conf/distro/familiar-unstable.conf1
-rw-r--r--conf/distro/familiar.conf1
-rw-r--r--conf/distro/foonas.conf67
-rw-r--r--conf/distro/generic.conf8
-rw-r--r--conf/distro/include/angstrom-glibc.inc5
-rw-r--r--conf/distro/include/angstrom-uclibc.inc2
-rw-r--r--conf/distro/include/angstrom.inc8
-rw-r--r--conf/distro/include/debianslug-packages.inc2
-rw-r--r--conf/distro/include/freeze.inc6
-rw-r--r--conf/distro/include/openmoko.inc142
-rw-r--r--conf/distro/include/openslug-native-packages.inc11
-rw-r--r--conf/distro/include/openslug-packages.inc2
-rw-r--r--conf/distro/include/openzaurus.inc25
-rw-r--r--conf/distro/include/oplinux.inc66
-rw-r--r--conf/distro/include/preferred-gpe-versions-2.7.inc2
-rw-r--r--conf/distro/include/preferred-gpe-versions-2.8.inc2
-rw-r--r--conf/distro/include/preferred-gpe-versions.inc2
-rw-r--r--conf/distro/include/preferred-openmoko-versions.inc60
-rw-r--r--conf/distro/include/preferred-opie-cvs-versions.inc3
-rw-r--r--conf/distro/include/preferred-opie-versions-1.2.3-pre.inc412
-rw-r--r--conf/distro/include/preferred-opie-versions.inc7
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.1.inc2
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.2.inc271
-rw-r--r--conf/distro/include/sane-srcdates.inc13
-rw-r--r--conf/distro/include/slugos-packages.inc259
-rw-r--r--conf/distro/include/slugos.inc110
-rw-r--r--conf/distro/include/ucslugc-packages.inc2
-rw-r--r--conf/distro/include/unslung-packages.inc41
-rw-r--r--conf/distro/mamona.conf60
-rw-r--r--conf/distro/mokoslug.conf27
-rw-r--r--conf/distro/nylon.conf26
-rw-r--r--conf/distro/openmoko.conf28
-rw-r--r--conf/distro/openomap.conf53
-rw-r--r--conf/distro/openprotium.conf5
-rw-r--r--conf/distro/openslug-native.conf20
-rw-r--r--conf/distro/openslug.conf133
-rw-r--r--conf/distro/openzaurus-unstable-uclibc.conf9
-rw-r--r--conf/distro/openzaurus-unstable.conf85
-rw-r--r--conf/distro/oplinux-uclibc.conf95
-rw-r--r--conf/distro/oplinux.conf146
-rw-r--r--conf/distro/slugos-bag.conf21
-rw-r--r--conf/distro/slugos-bau.conf19
-rw-r--r--conf/distro/slugos-btu.conf21
-rw-r--r--conf/distro/slugos-lag.conf22
-rw-r--r--conf/distro/slugos-lau.conf19
-rw-r--r--conf/distro/slugos-ltu.conf21
-rw-r--r--conf/distro/slugos-native.conf20
-rw-r--r--conf/distro/slugos.conf16
-rw-r--r--conf/distro/ucslugc.conf26
-rw-r--r--conf/distro/unslung.conf24
-rw-r--r--conf/documentation.conf26
-rw-r--r--conf/local.conf.sample8
-rw-r--r--conf/machine/a1200.conf2
-rw-r--r--conf/machine/a780.conf15
-rw-r--r--conf/machine/acern30.conf36
-rw-r--r--conf/machine/akita.conf4
-rw-r--r--conf/machine/amsdelta.conf2
-rw-r--r--conf/machine/asus730.conf40
-rw-r--r--conf/machine/aximx50.conf49
-rw-r--r--conf/machine/c7x0.conf4
-rw-r--r--conf/machine/collie.conf7
-rw-r--r--conf/machine/compulab-pxa270.conf22
-rw-r--r--conf/machine/db1200.conf2
-rw-r--r--conf/machine/devkitidp-pxa255.conf13
-rw-r--r--conf/machine/dht-walnut.conf12
-rw-r--r--conf/machine/efika.conf10
-rw-r--r--conf/machine/ep93xx.conf5
-rw-r--r--conf/machine/epia.conf17
-rw-r--r--conf/machine/fic-gta01.conf39
-rw-r--r--conf/machine/gumstix.conf2
-rw-r--r--conf/machine/h1910.conf3
-rw-r--r--conf/machine/h1940.conf5
-rw-r--r--conf/machine/h2200.conf2
-rw-r--r--conf/machine/h3600.conf6
-rw-r--r--conf/machine/h3900.conf2
-rw-r--r--conf/machine/h4000.conf8
-rw-r--r--conf/machine/h5000.conf8
-rw-r--r--conf/machine/htcblueangel.conf19
-rw-r--r--conf/machine/htchimalaya.conf34
-rw-r--r--conf/machine/htctornado.conf28
-rw-r--r--conf/machine/htcuniversal.conf15
-rw-r--r--conf/machine/hx2000.conf7
-rw-r--r--conf/machine/hx4700.conf11
-rw-r--r--conf/machine/include/LAB-settings.conf2
-rw-r--r--conf/machine/include/collie-2.4.conf6
-rw-r--r--conf/machine/include/collie-2.6.conf4
-rw-r--r--conf/machine/include/ixp4xx.conf147
-rw-r--r--conf/machine/include/lsppc.conf26
-rw-r--r--conf/machine/include/qemu.conf3
-rw-r--r--conf/machine/include/simpad-2.4.conf11
-rw-r--r--conf/machine/include/simpad-2.6.conf7
-rw-r--r--conf/machine/include/tune-ppc440.conf2
-rw-r--r--conf/machine/include/tune-thumb.conf10
-rw-r--r--conf/machine/include/tune-xscale.conf4
-rw-r--r--conf/machine/include/zaurus-2.6.conf8
-rw-r--r--conf/machine/include/zaurus-clamshell.conf23
-rw-r--r--conf/machine/ixp4xx.conf10
-rw-r--r--conf/machine/ixp4xxbe.conf14
-rw-r--r--conf/machine/ixp4xxle.conf12
-rw-r--r--conf/machine/jornada56x.conf2
-rw-r--r--conf/machine/jornada6xx.conf3
-rw-r--r--conf/machine/jornada7xx.conf3
-rw-r--r--conf/machine/lite5200.conf2
-rw-r--r--conf/machine/logicpd-pxa270.conf5
-rw-r--r--conf/machine/lsarm.conf31
-rw-r--r--conf/machine/lsppchd.conf8
-rw-r--r--conf/machine/lsppchg.conf8
-rw-r--r--conf/machine/magicbox.conf29
-rw-r--r--conf/machine/magician.conf25
-rw-r--r--conf/machine/mainstone.conf4
-rw-r--r--conf/machine/mtx-3a.conf13
-rw-r--r--conf/machine/mx21ads.conf2
-rw-r--r--conf/machine/mx31ads.conf5
-rw-r--r--conf/machine/n2100.conf27
-rwxr-xr-xconf/machine/netbook-pro.conf2
-rw-r--r--conf/machine/netvista.conf36
-rw-r--r--conf/machine/nokia770.conf6
-rw-r--r--conf/machine/nokia800.conf31
-rw-r--r--conf/machine/nslu2.conf2
-rw-r--r--conf/machine/nslu2be.conf19
-rw-r--r--conf/machine/nslu2le.conf19
-rw-r--r--conf/machine/omap1510inn.conf2
-rw-r--r--conf/machine/omap1610h2.conf2
-rw-r--r--conf/machine/omap1710h3.conf2
-rw-r--r--conf/machine/omap2420h4.conf2
-rw-r--r--conf/machine/omap5912osk.conf8
-rw-r--r--conf/machine/palmld.conf4
-rw-r--r--conf/machine/palmtt3.conf26
-rw-r--r--conf/machine/palmtx.conf32
-rw-r--r--conf/machine/palmz72.conf25
-rw-r--r--conf/machine/progear.conf11
-rw-r--r--conf/machine/qemuarm.conf2
-rw-r--r--conf/machine/qemux86.conf15
-rw-r--r--conf/machine/rokr-e2.conf33
-rw-r--r--conf/machine/rx3000.conf3
-rw-r--r--conf/machine/sequoia.conf26
-rw-r--r--conf/machine/shark.conf23
-rw-r--r--conf/machine/simpad.conf22
-rw-r--r--conf/machine/smdk2440.conf3
-rw-r--r--conf/machine/smdk2443.conf18
-rw-r--r--conf/machine/spitz.conf6
-rw-r--r--conf/machine/storcenter.conf20
-rw-r--r--conf/machine/titan.conf1
-rw-r--r--conf/machine/tosa.conf5
-rw-r--r--conf/machine/triton.conf2
-rw-r--r--conf/machine/turbostation.conf28
-rw-r--r--conf/machine/wrap.conf1
-rw-r--r--conf/machine/x86-uml.conf2
-rw-r--r--conf/machine/x86.conf5
-rw-r--r--conf/machine/xilinx-ml403.conf20
-rw-r--r--conf/tinder.conf2
-rwxr-xr-xcontrib/mtnpatch.py2
-rw-r--r--contrib/qa/bugzilla.py8279
-rw-r--r--contrib/qa/checksum/.mtn2git_empty (renamed from packages/altboot/files/.mtn2git_empty)0
-rw-r--r--contrib/qa/checksum/checksum.py74
-rw-r--r--contrib/qa/checksum/sample.conf9
-rw-r--r--contrib/qa/checksum/test.file (renamed from packages/altboot/files/akita/.mtn2git_empty)0
-rw-r--r--contrib/site-conf/aclocal.m440
-rw-r--r--contrib/site-conf/m4/mysql.m4100
-rw-r--r--files/device_table-ezx.txt1
-rw-r--r--files/device_table-minimal.txt12
-rw-r--r--packages/0xFFFF/.mtn2git_empty (renamed from packages/altboot/files/altboot-menu/.mtn2git_empty)0
-rw-r--r--packages/0xFFFF/0xffff-native_0.1.bb17
-rw-r--r--packages/0xFFFF/0xffff.inc14
-rw-r--r--packages/0xFFFF/0xffff_0.1.bb6
-rw-r--r--packages/aalib/aalib_1.4rc5.bb7
-rw-r--r--packages/abiword/abiword-2.5.inc61
-rw-r--r--packages/abiword/abiword-plugins_2.4.5.bb15
-rw-r--r--packages/abiword/abiword-plugins_2.4.6.bb14
-rw-r--r--packages/abiword/abiword.inc5
-rw-r--r--packages/abiword/abiword_2.5.1.bb7
-rwxr-xr-xpackages/abiword/files/cdump.pl32
-rwxr-xr-xpackages/acpid/acpid-1.0.2/init26
-rwxr-xr-xpackages/acpid/acpid-1.0.3/init26
-rwxr-xr-xpackages/acpid/acpid-1.0.4/init26
-rw-r--r--packages/acpid/acpid.inc20
-rw-r--r--packages/acpid/acpid_1.0.2.bb2
-rw-r--r--packages/acpid/acpid_1.0.3.bb2
-rw-r--r--packages/acpid/acpid_1.0.4.bb2
-rw-r--r--packages/acpid/files/.mtn2git_empty (renamed from packages/altboot/files/altboot-menu/Advanced/.mtn2git_empty)0
-rwxr-xr-xpackages/acpid/files/init26
-rw-r--r--packages/aircrack/aircrack-ng_0.7.bb25
-rw-r--r--packages/aircrack/aircrack_2.41.bb4
-rw-r--r--packages/alsa/alsa-lib/.mtn2git_empty (renamed from packages/altboot/files/altboot.rc/.mtn2git_empty)0
-rw-r--r--packages/alsa/alsa-lib/fix-tstamp-declaration.patch13
-rw-r--r--packages/alsa/alsa-lib_1.0.11.bb16
-rw-r--r--packages/alsa/alsa-lib_1.0.13.bb19
-rw-r--r--packages/alsa/alsa-state.bb50
-rw-r--r--packages/alsa/alsa-state/.mtn2git_empty (renamed from packages/altboot/files/c7x0/.mtn2git_empty)0
-rwxr-xr-xpackages/alsa/alsa-state/alsa-state29
-rw-r--r--packages/alsa/alsa-state/asound.state1
-rw-r--r--packages/alsa/alsa-state/fic-gta01/.mtn2git_empty (renamed from packages/altboot/files/collie/.mtn2git_empty)0
-rw-r--r--packages/alsa/alsa-state/fic-gta01/asound.state900
-rw-r--r--packages/alsa/alsa-utils_1.0.13.bb4
-rw-r--r--packages/altboot/README.txt5
-rw-r--r--packages/altboot/altboot_0.0.0.bb91
-rw-r--r--packages/altboot/altboot_1.0.5.bb34
-rw-r--r--packages/altboot/altboot_1.0.8.bb30
-rw-r--r--packages/altboot/altboot_1.1.1+wip-20061123.bb99
-rw-r--r--packages/altboot/altboot_1.1.1+wip-SVNR30.bb124
-rw-r--r--packages/altboot/altboot_svn.bb123
-rw-r--r--packages/altboot/altboot_wip.bb99
-rw-r--r--packages/altboot/files/akita/altboot-2.4.cfg31
-rw-r--r--packages/altboot/files/akita/altboot-2.6.cfg41
-rw-r--r--packages/altboot/files/altboot-menu/00-Default14
-rw-r--r--packages/altboot/files/altboot-menu/10-noGui14
-rw-r--r--packages/altboot/files/altboot-menu/15-bootSD32
-rw-r--r--packages/altboot/files/altboot-menu/20-bootCF32
-rw-r--r--packages/altboot/files/altboot-menu/99-ownScripts-example68
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick47
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/40-bootNFS110
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/55-bin-sh27
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/60-orig-init20
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/70-install-tgz264
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/70-setKernel68
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/80-configure-kexec248
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/80-copyrootfs323
-rw-r--r--packages/altboot/files/altboot.func828
-rw-r--r--packages/altboot/files/altboot.rc/Readme.txt2
-rw-r--r--packages/altboot/files/altboot.rc/disable_printk.sh6
-rw-r--r--packages/altboot/files/altboot.rc/loadkeymap.sh8
-rw-r--r--packages/altboot/files/altboot.rc/playbeep.sh34
-rwxr-xr-xpackages/altboot/files/altbootctl311
-rw-r--r--packages/altboot/files/altbootctl.conf98
-rw-r--r--packages/altboot/files/beep.raw1
-rw-r--r--packages/altboot/files/c7x0/altboot-2.4.cfg30
-rw-r--r--packages/altboot/files/c7x0/altboot-2.6.cfg39
-rw-r--r--packages/altboot/files/collie/altboot-2.4.cfg26
-rw-r--r--packages/altboot/files/init.altboot504
-rw-r--r--packages/altboot/files/poodle/altboot-2.4.cfg26
-rw-r--r--packages/altboot/files/poodle/altboot-2.6.cfg45
-rw-r--r--packages/altboot/files/spitz/altboot-2.6.cfg41
-rw-r--r--packages/altboot/files/tosa/altboot-2.4.cfg32
-rw-r--r--packages/altboot/files/tosa/altboot-2.6.cfg41
-rw-r--r--packages/angstrom/angstrom-bootstrap-image.bb18
-rw-r--r--packages/angstrom/angstrom-console-image.bb18
-rw-r--r--packages/angstrom/angstrom-e-image.bb36
-rw-r--r--packages/angstrom/angstrom-gpe-image.bb33
-rw-r--r--packages/angstrom/angstrom-mokogateway-image.bb20
-rw-r--r--packages/angstrom/angstrom-x11-image.bb32
-rw-r--r--packages/angstrom/task-angstrom-e.bb27
-rw-r--r--packages/angstrom/task-angstrom-x11.bb17
-rw-r--r--packages/anthy/anthy_7811.bb8
-rw-r--r--packages/apache2/apache2-2.2.3/configure-fix-cross-compile-ptr-check.patch17
-rw-r--r--packages/apache2/apache2_2.2.3.bb5
-rw-r--r--packages/apex/apex_1.4.11.bb58
-rw-r--r--packages/apex/apex_1.4.7.bb19
-rw-r--r--packages/apex/nslu2/defconfig38
-rw-r--r--packages/apt/apt-package.inc15
-rw-r--r--packages/apt/apt.inc9
-rw-r--r--packages/apt/apt_0.6.46.2.bb6
-rw-r--r--packages/apt/files/apt.conf4
-rw-r--r--packages/apt/files/environment.patch13
-rw-r--r--packages/arm-kernel-shim/.mtn2git_empty (renamed from packages/altboot/files/poodle/.mtn2git_empty)0
-rw-r--r--packages/arm-kernel-shim/arm-kernel-shim_1.3.bb77
-rw-r--r--packages/arm-kernel-shim/arm-kernel-shim_1.4.bb77
-rw-r--r--packages/arm-kernel-shim/files/.mtn2git_empty (renamed from packages/altboot/files/spitz/.mtn2git_empty)0
-rw-r--r--packages/arm-kernel-shim/files/cmdline_if_none.patch45
-rw-r--r--packages/arm-kernel-shim/files/config-dsmg600.h41
-rw-r--r--packages/arm-kernel-shim/files/config-fsg3.h35
-rw-r--r--packages/arm-kernel-shim/files/config-nas100d.h35
-rw-r--r--packages/arm-kernel-shim/files/config-nslu2.h35
-rw-r--r--packages/arm-kernel-shim/files/passthrough-atags.patch20
-rw-r--r--packages/arpwatch/arpwatch_2.1a15.bb4
-rw-r--r--packages/aspell/aspell-0.50.5/makefile.patch20
-rwxr-xr-xpackages/aspell/aspell-0.50.5/mk-dirs_h.py20
-rw-r--r--packages/aspell/aspell-lang.inc15
-rw-r--r--packages/aspell/aspell-native_0.50.5.bb16
-rw-r--r--packages/aspell/aspell-native_0.60.5.bb6
-rw-r--r--packages/aspell/aspell5-en_6.0-0.bb14
-rw-r--r--packages/aspell/aspell6-en_6.0-0.bb14
-rw-r--r--packages/aspell/aspell6-pl_6.0-20061121-0.bb17
-rw-r--r--packages/aspell/aspell_0.50.5.bb28
-rw-r--r--packages/aspell/aspell_0.60.5.bb19
-rw-r--r--packages/asterisk/asterisk-1.0.9/gsm.patch71
-rw-r--r--packages/asterisk/asterisk-1.0.9/makefile.patch311
-rw-r--r--packages/asterisk/asterisk-1.2.14/.mtn2git_empty (renamed from packages/altboot/files/tosa/.mtn2git_empty)0
-rw-r--r--packages/asterisk/asterisk-1.2.14/asterisk.patch (renamed from packages/asterisk/asterisk-1.2.12.1/asterisk.patch)0
-rw-r--r--packages/asterisk/asterisk-1.2.14/uclibc-compat-getloadavg.patch (renamed from packages/asterisk/asterisk-1.2.12.1/uclibc-compat-getloadavg.patch)0
-rw-r--r--packages/asterisk/asterisk-1.2.14/uclibc-dsn.patch (renamed from packages/asterisk/asterisk-1.2.12.1/uclibc-dsn.patch)0
-rw-r--r--packages/asterisk/asterisk-1.2.16/.mtn2git_empty (renamed from packages/aspell/aspell-0.50.5/.mtn2git_empty)0
-rw-r--r--packages/asterisk/asterisk-1.2.16/asterisk.patch221
-rw-r--r--packages/asterisk/asterisk-1.2.16/uclibc-compat-getloadavg.patch (renamed from packages/asterisk/asterisk-1.2.9.1/uclibc-compat-getloadavg.patch)0
-rw-r--r--packages/asterisk/asterisk-1.2.16/uclibc-dsn.patch (renamed from packages/asterisk/asterisk-1.2.9.1/uclibc-dsn.patch)0
-rw-r--r--packages/asterisk/asterisk-1.2.18/.mtn2git_empty (renamed from packages/asterisk/asterisk-1.0.9/.mtn2git_empty)0
-rw-r--r--packages/asterisk/asterisk-1.2.18/asterisk.patch221
-rw-r--r--packages/asterisk/asterisk-1.2.18/enable-speex.patch21
-rw-r--r--packages/asterisk/asterisk-1.2.18/uclibc-compat-getloadavg.patch13
-rw-r--r--packages/asterisk/asterisk-1.2.18/uclibc-dsn.patch18
-rw-r--r--packages/asterisk/asterisk-1.2.8/makefile.patch200
-rw-r--r--packages/asterisk/asterisk-1.2.9.1/asterisk.patch221
-rw-r--r--packages/asterisk/asterisk_1.0.9.bb33
-rw-r--r--packages/asterisk/asterisk_1.2.12.1.bb38
-rw-r--r--packages/asterisk/asterisk_1.2.13.bb5
-rw-r--r--packages/asterisk/asterisk_1.2.14.bb43
-rw-r--r--packages/asterisk/asterisk_1.2.16.bb43
-rw-r--r--packages/asterisk/asterisk_1.2.18.bb44
-rw-r--r--packages/asterisk/asterisk_1.2.8.bb32
-rw-r--r--packages/asterisk/asterisk_1.2.9.1.bb38
-rw-r--r--packages/aumix/aumix_2.8.bb2
-rw-r--r--packages/autofs/autofs-4.1.4/auto.net-sort-option-fix.patch11
-rw-r--r--packages/autofs/autofs-4.1.4/autofs-additional-distros.patch12
-rw-r--r--packages/autofs/autofs_4.1.4.bb6
-rw-r--r--packages/avahi/avahi.inc38
-rw-r--r--packages/avahi/avahi_0.6.10.bb3
-rw-r--r--packages/avahi/avahi_0.6.11.bb3
-rw-r--r--packages/avahi/avahi_0.6.12.bb7
-rw-r--r--packages/avahi/avahi_0.6.13.bb7
-rw-r--r--packages/avahi/avahi_0.6.14.bb8
-rw-r--r--packages/avahi/avahi_0.6.15.bb7
-rw-r--r--packages/avahi/avahi_0.6.16.bb (renamed from packages/avahi/avahi_0.6.5.bb)0
-rw-r--r--packages/avahi/avahi_0.6.17.bb (renamed from packages/avahi/avahi_0.6.8.bb)0
-rw-r--r--packages/avahi/avahi_0.6.18.bb1
-rw-r--r--packages/avahi/files/.mtn2git_empty (renamed from packages/asterisk/asterisk-1.2.12.1/.mtn2git_empty)0
-rwxr-xr-xpackages/avahi/files/00avahi-autoipd10
-rwxr-xr-xpackages/avahi/files/99avahi-autoipd10
-rw-r--r--packages/base-files/base-files/akita/fstab2
-rw-r--r--packages/base-files/base-files/angstrom/.mtn2git_empty (renamed from packages/asterisk/asterisk-1.2.8/.mtn2git_empty)0
-rw-r--r--packages/base-files/base-files/angstrom/issue11
-rw-r--r--packages/base-files/base-files/angstrom/issue.net12
-rw-r--r--packages/base-files/base-files/armzone-qt2410/.mtn2git_empty (renamed from packages/asterisk/asterisk-1.2.9.1/.mtn2git_empty)0
-rw-r--r--packages/base-files/base-files/armzone-qt2410/fstab16
-rw-r--r--packages/base-files/base-files/efika/.mtn2git_empty (renamed from packages/base-files/base-files/openzaurus/.mtn2git_empty)0
-rw-r--r--packages/base-files/base-files/efika/fstab5
-rw-r--r--packages/base-files/base-files/ep93xx/.mtn2git_empty (renamed from packages/bluez/files/openzaurus/.mtn2git_empty)0
-rw-r--r--packages/base-files/base-files/ep93xx/fstab5
-rw-r--r--packages/base-files/base-files/fic-gta01/.mtn2git_empty (renamed from packages/busybox/busybox-1.01/openzaurus/.mtn2git_empty)0
-rw-r--r--packages/base-files/base-files/fic-gta01/fstab17
-rw-r--r--packages/base-files/base-files/fstab2
-rw-r--r--packages/base-files/base-files/h5000/fstab6
-rw-r--r--packages/base-files/base-files/htcuniversal/fstab6
-rw-r--r--packages/base-files/base-files/netbook-pro/fstab2
-rw-r--r--packages/base-files/base-files/nokia770/fstab2
-rw-r--r--packages/base-files/base-files/openzaurus/issue2
-rw-r--r--packages/base-files/base-files/openzaurus/issue.net2
-rw-r--r--packages/base-files/base-files/oplinux-uclibc/.mtn2git_empty (renamed from packages/contacts/.mtn2git_empty)0
-rw-r--r--packages/base-files/base-files/oplinux-uclibc/issue14
-rw-r--r--packages/base-files/base-files/oplinux-uclibc/issue.net16
-rw-r--r--packages/base-files/base-files/oplinux-uclibc/motd12
-rw-r--r--packages/base-files/base-files/oplinux-uclibc/profile32
-rw-r--r--packages/base-files/base-files/oplinux/.mtn2git_empty (renamed from packages/contacts/files/.mtn2git_empty)0
-rw-r--r--packages/base-files/base-files/oplinux/issue10
-rw-r--r--packages/base-files/base-files/oplinux/issue.net11
-rw-r--r--packages/base-files/base-files/oplinux/motd8
-rw-r--r--packages/base-files/base-files/oplinux/profile32
-rw-r--r--packages/base-files/base-files/profile4
-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.bb4
-rw-r--r--packages/bash/bash.inc26
-rw-r--r--packages/bash/bash_3.0.bb28
-rw-r--r--packages/bash/bash_3.2.bb27
-rw-r--r--packages/bb/.mtn2git_empty (renamed from packages/dates/.mtn2git_empty)0
-rw-r--r--packages/bb/bb_1.2.bb16
-rw-r--r--packages/bb/files/.mtn2git_empty (renamed from packages/familiar/.mtn2git_empty)0
-rw-r--r--packages/bb/files/fix-compile.patch166
-rw-r--r--packages/beepmp/beepmp_0.9.7.bb2
-rw-r--r--packages/binutils/binutils-2.17.50.0.12/.mtn2git_empty (renamed from packages/gnome/gnome-vfs-dbus/.mtn2git_empty)0
-rw-r--r--packages/binutils/binutils-2.17.50.0.12/110-arm-eabi-conf.patch24
-rw-r--r--packages/binutils/binutils-2.17.50.0.12/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch31
-rw-r--r--packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-100-uclibc-conf.patch139
-rw-r--r--packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-300-001_ld_makefile_patch.patch50
-rw-r--r--packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-300-006_better_file_error.patch43
-rw-r--r--packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-300-012_check_ldrunpath_length.patch47
-rw-r--r--packages/binutils/binutils-cross_2.17.50.0.12.bb32
-rw-r--r--packages/binutils/binutils_2.17.50.0.12.bb12
-rw-r--r--packages/blueprobe/blueprobe-0.17/hwuart.patch21
-rw-r--r--packages/blueprobe/blueprobe-0.18/.mtn2git_empty (renamed from packages/gnupg/gnupg-1.4.0/.mtn2git_empty)0
-rw-r--r--packages/blueprobe/blueprobe-0.18/h4000.patch16
-rw-r--r--packages/blueprobe/blueprobe_0.17.bb9
-rw-r--r--packages/blueprobe/blueprobe_0.18.bb5
-rw-r--r--packages/blueprobe/blueprobe_svn.bb13
-rw-r--r--packages/blueprobe/files/.mtn2git_empty (renamed from packages/gtk+/gtk+-2.10.3/.mtn2git_empty)0
-rw-r--r--packages/blueprobe/files/blueprobe-svn-Makefile.patch250
-rw-r--r--packages/bluesnarfer/bluesnarfer.bb2
-rw-r--r--packages/bluez/bcm2035-tool/.mtn2git_empty (renamed from packages/gtk+/gtk+-2.10.6/.mtn2git_empty)0
-rw-r--r--packages/bluez/bcm2035-tool/addr-as-arg.patch104
-rw-r--r--packages/bluez/bcm2035-tool_0.0.bb19
-rw-r--r--packages/bluez/bluez-hcidump_1.25.bb15
-rw-r--r--packages/bluez/bluez-hcidump_1.33.bb13
-rw-r--r--packages/bluez/bluez-libs.inc (renamed from packages/bluez/bluez-libs_3.1.bb)0
-rw-r--r--packages/bluez/bluez-libs_3.8.bb22
-rw-r--r--packages/bluez/bluez-libs_3.9.bb1
-rw-r--r--packages/bluez/bluez-utils-3.9/.mtn2git_empty (renamed from packages/ifupdown/ifupdown-0.6.4/.mtn2git_empty)0
-rw-r--r--packages/bluez/bluez-utils-3.9/hciattach-ti-bts.patch498
-rw-r--r--packages/bluez/bluez-utils.inc53
-rw-r--r--packages/bluez/bluez-utils/handle-eintr.patch23
-rw-r--r--packages/bluez/bluez-utils_3.1.bb52
-rw-r--r--packages/bluez/bluez-utils_3.7.bb56
-rw-r--r--packages/bluez/bluez-utils_3.8.bb53
-rw-r--r--packages/bluez/bluez-utils_3.9.bb3
-rw-r--r--packages/bluez/files/openzaurus/bluetooth.default37
-rw-r--r--packages/bmon/.mtn2git_empty (renamed from packages/initscripts/initscripts-1.0/angstrom/.mtn2git_empty)0
-rw-r--r--packages/bmon/bmon_2.1.0.bb15
-rw-r--r--packages/bmon/files/.mtn2git_empty (renamed from packages/initscripts/initscripts-1.0/openzaurus/.mtn2git_empty)0
-rw-r--r--packages/bmon/files/no-strip.patch13
-rw-r--r--packages/bogofilter/bogofilter_0.96.0.bb2
-rw-r--r--packages/bogofilter/files/volatiles2
-rw-r--r--packages/bsdiff/.mtn2git_empty (renamed from packages/ipkg/ipkg-0.99.153/.mtn2git_empty)0
-rw-r--r--packages/btscanner/btscanner_2.0.bb8
-rw-r--r--packages/btscanner/files/.mtn2git_empty (renamed from packages/ipkg/ipkg-0.99.155/.mtn2git_empty)0
-rw-r--r--packages/btscanner/files/gcc-4.patch12
-rw-r--r--packages/btxml/btxml.bb6
-rw-r--r--packages/busybox/busybox-1.00/nylon/defconfig4
-rw-r--r--packages/busybox/busybox-1.01/nylon/defconfig4
-rw-r--r--packages/busybox/busybox-1.01/openzaurus/defconfig475
-rw-r--r--packages/busybox/busybox-1.2.0/nylon/defconfig4
-rw-r--r--packages/busybox/busybox-1.2.1/angstrom/defconfig2
-rw-r--r--packages/busybox/busybox-1.2.1/angstrom/syslog.conf9
-rw-r--r--packages/busybox/busybox-1.2.1/defconfig2
-rw-r--r--packages/busybox/busybox-1.2.1/foonas/.mtn2git_empty (renamed from packages/ixp4xx/ixp4xx-npe-native-2.3/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.2.1/foonas/defconfig643
-rw-r--r--packages/busybox/busybox-1.2.1/nylon/defconfig4
-rw-r--r--packages/busybox/busybox-1.2.1/slugos/defconfig65
-rw-r--r--packages/busybox/busybox-1.2.2/angstrom/defconfig2
-rw-r--r--packages/busybox/busybox-1.2.2/defconfig2
-rw-r--r--packages/busybox/busybox-1.2.2/nylon/defconfig4
-rw-r--r--packages/busybox/busybox-1.3.1/.mtn2git_empty (renamed from packages/libsdl/libsdl-qpe-1.2.7/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.3.1/add-getkey-applet.patch167
-rw-r--r--packages/busybox/busybox-1.3.1/angstrom/.mtn2git_empty (renamed from packages/libxslt/libxslt-1.1.17/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.3.1/angstrom/defconfig647
-rw-r--r--packages/busybox/busybox-1.3.1/below.patch46
-rwxr-xr-xpackages/busybox/busybox-1.3.1/busybox-mdev.sh69
-rw-r--r--packages/busybox/busybox-1.3.1/defconfig647
-rw-r--r--packages/busybox/busybox-1.3.1/dhcp-hostname.patch30
-rw-r--r--packages/busybox/busybox-1.3.1/dhcpretrytime.patch85
-rw-r--r--packages/busybox/busybox-1.3.1/fbset.patch24
-rw-r--r--packages/busybox/busybox-1.3.1/hdparm_M.patch47
-rw-r--r--packages/busybox/busybox-1.3.1/ifupdown-spurious-environ.patch12
-rw-r--r--packages/busybox/busybox-1.3.1/iproute-flush-cache.patch23
-rw-r--r--packages/busybox/busybox-1.3.1/mnci/.mtn2git_empty (renamed from packages/lighttpd/1.4.13/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.3.1/mnci/defconfig643
-rw-r--r--packages/busybox/busybox-1.3.1/mount-all-type.patch84
-rw-r--r--packages/busybox/busybox-1.3.1/nylon/.mtn2git_empty (renamed from packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.1/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.3.1/nylon/defconfig568
-rw-r--r--packages/busybox/busybox-1.3.1/openmn/.mtn2git_empty (renamed from packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.4/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.3.1/readlink.patch85
-rw-r--r--packages/busybox/busybox-1.3.1/rmmod.patch40
-rw-r--r--packages/busybox/busybox-1.3.1/slugos/.mtn2git_empty (renamed from packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.5/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.3.1/slugos/defconfig610
-rw-r--r--packages/busybox/busybox-1.3.1/slugos/udhcpscript.patch133
-rw-r--r--packages/busybox/busybox-1.3.1/sparc/.mtn2git_empty (renamed from packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.6/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.3.1/udhcppidfile-breakage.patch57
-rw-r--r--packages/busybox/busybox-1.3.1/udhcppidfile.patch274
-rw-r--r--packages/busybox/busybox-1.3.1/udhcpscript.patch17
-rw-r--r--packages/busybox/busybox-1.3.1/wrt54/.mtn2git_empty (renamed from packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh39/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.3.1/xargs-double-size.patch13
-rw-r--r--packages/busybox/busybox-1.5.0/.mtn2git_empty (renamed from packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.5.0/angstrom/.mtn2git_empty (renamed from packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.1/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.5.0/angstrom/defconfig647
-rwxr-xr-xpackages/busybox/busybox-1.5.0/busybox-mdev.sh69
-rw-r--r--packages/busybox/busybox-1.5.0/defconfig647
-rw-r--r--packages/busybox/busybox-1.5.0/df_rootfs.patch44
-rw-r--r--packages/busybox/busybox-1.5.0/dhcp-hostname.patch20
-rw-r--r--packages/busybox/busybox-1.5.0/dhcp-increase-retries.patch11
-rw-r--r--packages/busybox/busybox-1.5.0/ifupdown-spurious-environ.patch16
-rw-r--r--packages/busybox/busybox-1.5.0/mnci/.mtn2git_empty (renamed from packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.4/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.5.0/mnci/defconfig643
-rw-r--r--packages/busybox/busybox-1.5.0/nylon/.mtn2git_empty (renamed from packages/linux/linux-rp-2.6.18/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.5.0/nylon/defconfig568
-rw-r--r--packages/busybox/busybox-1.5.0/openmn/.mtn2git_empty (renamed from packages/linux/linux-rp-2.6.19/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.5.0/slugos/.mtn2git_empty (renamed from packages/linux/linux-smdk2440-2.6.19/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.5.0/slugos/defconfig686
-rw-r--r--packages/busybox/busybox-1.5.0/slugos/udhcpscript.patch133
-rw-r--r--packages/busybox/busybox-1.5.0/sparc/.mtn2git_empty (renamed from packages/linux/linux-titan-sh4-2.6.17/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.5.0/udhcpscript.patch17
-rw-r--r--packages/busybox/busybox-1.5.0/wrt54/.mtn2git_empty (renamed from packages/linux/nslu2-kernel/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.5.0/xargs-double-size.patch13
-rw-r--r--packages/busybox/busybox.inc4
-rw-r--r--packages/busybox/busybox_1.2.1.bb2
-rw-r--r--packages/busybox/busybox_1.3.1.bb99
-rw-r--r--packages/busybox/busybox_1.5.0.bb104
-rw-r--r--packages/busybox/files/syslog.conf14
-rw-r--r--packages/c3110x/.mtn2git_empty (renamed from packages/linux/nslu2-kernel/2.6.11-mm/.mtn2git_empty)0
-rw-r--r--packages/c3110x/cx3110x_1.1.bb18
-rw-r--r--packages/cairo/cairo-1.4.4/.mtn2git_empty (renamed from packages/linux/nslu2-kernel/2.6.12/.mtn2git_empty)0
-rw-r--r--packages/cairo/cairo-1.4.4/cairo-workqueue.patch2148
-rw-r--r--packages/cairo/cairo_1.3.10.bb7
-rw-r--r--packages/cairo/cairo_1.3.14.bb10
-rw-r--r--packages/cairo/cairo_1.4.0.bb7
-rw-r--r--packages/cairo/cairo_1.4.2.bb7
-rw-r--r--packages/cairo/cairo_1.4.4.bb7
-rw-r--r--packages/cairo/cairo_git.bb2
-rw-r--r--packages/cairo/files/cairo-surface-cache-3.patch371
-rw-r--r--packages/ccxstream/ccxstream_1.0.15.bb2
-rw-r--r--packages/chibitracker/.mtn2git_empty (renamed from packages/linux/nslu2-kernel/2.6.14-mm/.mtn2git_empty)0
-rw-r--r--packages/chibitracker/chibitracker_svn.bb13
-rw-r--r--packages/chrpath/.mtn2git_empty (renamed from packages/linux/nslu2-kernel/2.6.14/.mtn2git_empty)0
-rw-r--r--packages/chrpath/chrpath-native_0.13.bb3
-rw-r--r--packages/chrpath/chrpath.inc10
-rw-r--r--packages/chrpath/chrpath_0.13.bb1
-rw-r--r--packages/clutter/.mtn2git_empty (renamed from packages/linux/nslu2-kernel/2.6.15/.mtn2git_empty)0
-rw-r--r--packages/clutter/clutter-fpu.inc6
-rw-r--r--packages/clutter/clutter.inc26
-rw-r--r--packages/clutter/clutter_svn.bb9
-rw-r--r--packages/confuse/.mtn2git_empty (renamed from packages/linux/nslu2-kernel/2.6/.mtn2git_empty)0
-rw-r--r--packages/confuse/confuse-native_2.5.bb3
-rw-r--r--packages/confuse/confuse_2.5.bb17
-rw-r--r--packages/confuse/files/.mtn2git_empty (renamed from packages/linux/nslu2-kernel/files/.mtn2git_empty)0
-rw-r--r--packages/confuse/files/build-only-library.patch13
-rw-r--r--packages/contacts/contacts_0.1.bb23
-rw-r--r--packages/contacts/contacts_0.2.bb22
-rw-r--r--packages/contacts/contacts_svn.bb29
-rw-r--r--packages/coreutils/coreutils-6.0/.mtn2git_empty (renamed from packages/linux/nslu2-linksys-kernel-2.4.22/.mtn2git_empty)0
-rw-r--r--packages/coreutils/coreutils-6.0/man.patch42
-rw-r--r--packages/coreutils/coreutils-6.0/oe-old-tools.patch26
-rw-r--r--packages/coreutils/coreutils-6.0/onceonly.m463
-rw-r--r--packages/coreutils/coreutils-6.0/uptime-pow-lib.patch11
-rw-r--r--packages/coreutils/coreutils-native_6.0.bb7
-rw-r--r--packages/coreutils/coreutils_6.0.bb85
-rw-r--r--packages/corsair/corsair_0.2.5.bb27
-rw-r--r--packages/corsair/corsair_0.2.6.bb26
-rw-r--r--packages/corsair/files/corsair-opie.patch229
-rw-r--r--packages/cpio/cpio_2.5.bb6
-rw-r--r--packages/cppunit/cppunit_1.10.2.bb4
-rw-r--r--packages/cron/cron-3.0pl1/nonrootinstall.patch4
-rw-r--r--packages/cron/cron_3.0pl1.bb2
-rw-r--r--packages/cups/cups_1.2.10.bb76
-rw-r--r--packages/cups/cups_1.2.7.bb14
-rw-r--r--packages/curl/curl_7.16.0.bb51
-rw-r--r--packages/cvs/cvs_1.12.8.bb2
-rw-r--r--packages/cyrus-imapd/cyrus-imapd-2.2.12/remove-install-strip.patch45
-rw-r--r--packages/cyrus-imapd/cyrus-imapd_2.2.12.bb3
-rw-r--r--packages/cyrus-imapd/files/volatiles122
-rwxr-xr-xpackages/dates/dates_0.1.bb18
-rw-r--r--packages/dates/dates_svn.bb18
-rw-r--r--packages/davfs2/davfs2_0.2.8.bb2
-rw-r--r--packages/davfs2/files/volatiles2
-rw-r--r--packages/db/db_4.2.52.bb2
-rw-r--r--packages/db/db_4.3.29.bb2
-rw-r--r--packages/dbus/dbus-1.0.2/fix-waitpid.patch11
-rw-r--r--packages/dbus/dbus_1.0.2.bb4
-rw-r--r--packages/dcop/dcopidl-native_3.5.4.bb4
-rw-r--r--packages/dcop/dcopidl2cpp-native_3.5.4.bb4
-rw-r--r--packages/detect-stylus/detect-stylus_svn.bb18
-rw-r--r--packages/detect-stylus/files/.mtn2git_empty (renamed from packages/linux/nslu2-linksys-kernel-2.4.22/nslu2/.mtn2git_empty)0
-rw-r--r--packages/detect-stylus/files/detect-stylus-svn-build.patch229
-rw-r--r--packages/dfu-util/.mtn2git_empty (renamed from packages/madwifi/madwifi-ng-r1844-20061208/.mtn2git_empty)0
-rw-r--r--packages/dfu-util/dfu-util-native_svn.bb17
-rw-r--r--packages/dfu-util/dfu-util_svn.bb17
-rw-r--r--packages/dhcdbd/dhcdbd_1.14.bb17
-rw-r--r--packages/dhcdbd/dhcdbd_1.16.bb17
-rw-r--r--packages/dhcdbd/dhcdbd_2.0.bb17
-rw-r--r--packages/dhcp/dhcp_3.0.2.bb13
-rw-r--r--packages/dillo/dillo_0.8.6.bb13
-rw-r--r--packages/directfb/directfb_0.9.99+1.0.0rc2.bb39
-rw-r--r--packages/directfb/directfb_1.0.0.bb53
-rw-r--r--packages/directfb/files/fix-pkgconfig-specs.patch48
-rw-r--r--packages/directfb/files/tslib_support.patch818
-rw-r--r--packages/directfb/fusionsound_0.9.26+cvs20070207.bb37
-rw-r--r--packages/directfb/lite_0.9.26+cvs20070207.bb40
-rw-r--r--packages/distcc/distcc_2.18.3.bb21
-rw-r--r--packages/distcc/files/.mtn2git_empty (renamed from packages/maemo/gconf-osso/.mtn2git_empty)0
-rw-r--r--packages/distcc/files/default19
-rw-r--r--packages/distcc/files/distcc98
-rw-r--r--packages/dnsmasq/dnsmasq_2.38.bb1
-rw-r--r--packages/dosbox/dosbox_0.70.bb12
-rw-r--r--packages/dri/drm-kernel/.mtn2git_empty (renamed from packages/maemo/osso-gnome-vfs2/.mtn2git_empty)0
-rw-r--r--packages/dri/drm-kernel/make.patch (renamed from packages/dri/make.patch)0
-rw-r--r--packages/dri/drm_cvs.bb20
-rw-r--r--packages/dri/libdrm_2.3.0.bb10
-rw-r--r--packages/dropbear/dropbear-0.49/.mtn2git_empty (renamed from packages/mozilla/firefox-1.5.0.6/.mtn2git_empty)0
-rw-r--r--packages/dropbear/dropbear-0.49/configure.patch27
-rw-r--r--packages/dropbear/dropbear.inc2
-rw-r--r--packages/dropbear/dropbear_0.49.bb1
-rw-r--r--packages/dtc/.mtn2git_empty (renamed from packages/mozilla/firefox-2.0/.mtn2git_empty)0
-rw-r--r--packages/dtc/dtc-native_20070216.bb14
-rw-r--r--packages/dtc/dtc-native_git.bb14
-rw-r--r--packages/dtc/dtc_20070216.bb15
-rw-r--r--packages/dtc/dtc_git.bb15
-rw-r--r--packages/e17/e-wm_0.16.999.036.bb41
-rw-r--r--packages/e17/e-wm_0.16.999.037.bb43
-rw-r--r--packages/e17/entice_20060128.bb4
-rw-r--r--packages/e17/entice_20060416.bb4
-rw-r--r--packages/e17/entrance/Sessions/Enlightenment3
-rw-r--r--packages/e17/entrance_0.9.0.007.bb4
-rw-r--r--packages/e2fsprogs-libs/e2fsprogs-libs-1.39/.mtn2git_empty (renamed from packages/mozilla/firefox-2.0/arm/.mtn2git_empty)0
-rw-r--r--packages/e2fsprogs-libs/e2fsprogs-libs-1.39/configure.patch22
-rw-r--r--packages/e2fsprogs-libs/e2fsprogs-libs.inc2
-rw-r--r--packages/e2fsprogs-libs/e2fsprogs-libs_1.39.bb13
-rw-r--r--packages/e2fsprogs/e2fsprogs-native_1.38.bb15
-rw-r--r--packages/e2fsprogs/e2fsprogs.inc4
-rw-r--r--packages/e2fsprogs/e2fsprogs/e2fsprogs_1.34.bb20
-rw-r--r--packages/e2fsprogs/e2fsprogs_1.33.bb37
-rw-r--r--packages/e2fsprogs/e2fsprogs_1.34.bb38
-rw-r--r--packages/e2fsprogs/e2fsprogs_1.35.bb38
-rw-r--r--packages/e2fsprogs/e2fsprogs_1.38.bb55
-rw-r--r--packages/eb/.mtn2git_empty (renamed from packages/mozilla/firefox-2.0/powerpc/.mtn2git_empty)0
-rw-r--r--packages/eb/eb_4.3.bb14
-rw-r--r--packages/eds/eds-dbus/fix-bindig-tool.patch22
-rw-r--r--packages/eds/eds-dbus_svn.bb40
-rw-r--r--packages/efl/ecore-fb_0.9.9.036.bb29
-rw-r--r--packages/efl/ecore-fb_0.9.9.037.bb31
-rw-r--r--packages/efl/ecore-native_0.9.9.037.bb (renamed from packages/efl/ecore-native_0.9.9.036.bb)0
-rw-r--r--packages/efl/ecore-x11_0.9.9.037.bb (renamed from packages/efl/ecore-x11_0.9.9.036.bb)0
-rw-r--r--packages/efl/ecore.inc2
-rw-r--r--packages/efl/ecore/fix-tslib-configure.patch24
-rw-r--r--packages/efl/ecore/remove-bad-code.patch36
-rw-r--r--packages/efl/edb-native/.mtn2git_empty (renamed from packages/openzaurus/.mtn2git_empty)0
-rw-r--r--packages/efl/edb-native/no-gtk-forkbomb.patch12
-rw-r--r--packages/efl/edb-native_1.0.5.007.bb2
-rw-r--r--packages/efl/edb_1.0.5.007.bb1
-rw-r--r--packages/efl/edje-native_0.5.0.036.bb20
-rw-r--r--packages/efl/edje-native_0.5.0.037.bb20
-rw-r--r--packages/efl/edje-utils_0.5.0.037.bb (renamed from packages/efl/edje-utils_0.5.0.036.bb)0
-rw-r--r--packages/efl/edje_0.5.0.037.bb (renamed from packages/efl/edje_0.5.0.036.bb)0
-rw-r--r--packages/efl/eet-native_0.9.10.037.bb (renamed from packages/efl/eet-native_0.9.10.036.bb)0
-rw-r--r--packages/efl/eet_0.9.10.037.bb (renamed from packages/efl/eet_0.9.10.036.bb)0
-rw-r--r--packages/efl/embryo-native_0.9.1.037.bb (renamed from packages/efl/embryo-native_0.9.1.036.bb)0
-rw-r--r--packages/efl/embryo-utils_0.9.1.037.bb (renamed from packages/efl/embryo-utils_0.9.1.036.bb)0
-rw-r--r--packages/efl/embryo_0.9.1.037.bb (renamed from packages/efl/embryo_0.9.1.036.bb)0
-rw-r--r--packages/efl/evas-fb_0.9.9.036.bb47
-rw-r--r--packages/efl/evas-fb_0.9.9.037.bb47
-rw-r--r--packages/efl/evas-native_0.9.9.037.bb (renamed from packages/efl/evas-native_0.9.9.036.bb)0
-rw-r--r--packages/efl/evas-x11_0.9.9.036.bb53
-rw-r--r--packages/efl/evas-x11_0.9.9.037.bb53
-rw-r--r--packages/efl/evas.inc8
-rw-r--r--packages/efl/evas/fix-configure.patch19
-rw-r--r--packages/efl/imlib2-fb_1.2.2.001.bb1
-rw-r--r--packages/efl/imlib2-native_1.2.2.001.bb1
-rw-r--r--packages/efl/imlib2-x11_1.2.2.001.bb2
-rw-r--r--packages/efl/imlib2.inc12
-rw-r--r--packages/elvis/elvis_2.2.0.bb3
-rw-r--r--packages/enca/enca_1.9.bb11
-rw-r--r--packages/enca/files/configure-remove-dumbness.patch26
-rw-r--r--packages/enca/files/makefile-remove-tools.patch13
-rw-r--r--packages/enchant/enchant_1.1.3.bb2
-rw-r--r--packages/enchant/enchant_1.2.5.bb2
-rw-r--r--packages/enchant/enchant_1.3.0.bb22
-rw-r--r--packages/epdfview/epdfview_0.1.6.bb15
-rw-r--r--packages/esound/esound-gpe_20020817.bb33
-rw-r--r--packages/esound/esound_0.2.36.bb31
-rw-r--r--packages/esound/old/.mtn2git_empty (renamed from packages/opie-taskbar/opie-taskbar/akita/.mtn2git_empty)0
-rw-r--r--packages/esound/old/esound-gpe_20020817.bb35
-rw-r--r--packages/esound/old/esound-gpe_20070109.bb34
-rw-r--r--packages/espgs/espgs_8.15.3.bb45
-rw-r--r--packages/ethtool/ethtool_5.bb2
-rw-r--r--packages/exmap-console/.mtn2git_empty (renamed from packages/opie-taskbar/opie-taskbar/c7x0/.mtn2git_empty)0
-rw-r--r--packages/exmap-console/exmap-console.inc61
-rw-r--r--packages/exmap-console/exmap-console_0.4.bb2
-rw-r--r--packages/exmap-console/exmap-console_svn.bb10
-rw-r--r--packages/ezx/ezx-boot-usb-native_0.1.0.bb30
-rw-r--r--packages/ezx/ezx-boot-usb-native_1877.bb30
-rw-r--r--packages/ezx/ezx-boot-usb-native_svn.bb35
-rw-r--r--packages/ezx/opentapi/.mtn2git_empty (renamed from packages/opie-taskbar/opie-taskbar/htcuniversal/.mtn2git_empty)0
-rw-r--r--packages/ezx/opentapi/opentapi.init84
-rw-r--r--packages/ezx/opentapi_svn.bb18
-rw-r--r--packages/familiar/familiar-version.bb7
-rw-r--r--packages/fastcgi/.mtn2git_empty (renamed from packages/opie-taskbar/opie-taskbar/mnci/.mtn2git_empty)0
-rw-r--r--packages/fastcgi/fastcgi_2.4.0.bb19
-rw-r--r--packages/fbgrab/fbgrab_1.0.bb6
-rw-r--r--packages/fbreader/fbreader-0.8.2a/.mtn2git_empty (renamed from packages/opie-taskbar/opie-taskbar/simpad/.mtn2git_empty)0
-rw-r--r--packages/fbreader/fbreader-0.8.2a/480x640-buildfix.patch44
-rw-r--r--packages/fbreader/fbreader-0.8.2a/fbreader-0.8.2a_buildsys_oe.patch50
-rw-r--r--packages/fbreader/fbreader_0.7.3b.bb22
-rw-r--r--packages/fbreader/fbreader_0.7.3d.bb3
-rw-r--r--packages/fbreader/fbreader_0.7.4q.bb22
-rw-r--r--packages/fbreader/fbreader_0.8.2a.bb50
-rw-r--r--packages/fbreader/files/fbreader-0.7.4q_buildsys_oe.patch50
-rw-r--r--packages/fbset/fbset_2.1.bb37
-rw-r--r--packages/fbvncserver/fbvncserver-kmodule_0.9.4.bb2
-rw-r--r--packages/fceu/.mtn2git_empty (renamed from packages/opie-taskbar/opie-taskbar/spitz/.mtn2git_empty)0
-rw-r--r--packages/fceu/fceu_0.98.13-pre.bb27
-rw-r--r--packages/fceu/files/.mtn2git_empty (renamed from packages/opie-taskbar/opie-taskbar/tosa/.mtn2git_empty)0
-rw-r--r--packages/fceu/files/fceu.patch58
-rw-r--r--packages/ffmpeg/ffmpeg_cvs.bb84
-rw-r--r--packages/ffmpeg/ffmpeg_svn.bb127
-rw-r--r--packages/fftw/.mtn2git_empty (renamed from packages/portmap/portmap-5-24/.mtn2git_empty)0
-rw-r--r--packages/fftw/fftw_3.1.2.bb15
-rw-r--r--packages/file/file-native_4.16.bb8
-rw-r--r--packages/file/file-native_4.20.bb8
-rw-r--r--packages/file/file_4.16.bb18
-rw-r--r--packages/file/file_4.20.bb18
-rw-r--r--packages/flac/flac_1.1.2.bb3
-rw-r--r--packages/fltk/fltk_1.1.4.bb9
-rw-r--r--packages/fltk/fltk_1.1.7.bb27
-rw-r--r--packages/foonas-init/.mtn2git_empty (renamed from packages/qmake/qmake2-native-2.00a/.mtn2git_empty)0
-rw-r--r--packages/foonas-init/files/.mtn2git_empty (renamed from packages/qte/qte-2.3.10/openmn/.mtn2git_empty)0
-rw-r--r--packages/foonas-init/files/conffiles55
-rw-r--r--packages/foonas-init/files/functions413
-rw-r--r--packages/foonas-init/files/initscripts/.mtn2git_empty (renamed from packages/sqlite/sqlite3-3.3.7/.mtn2git_empty)0
-rw-r--r--packages/foonas-init/files/links.conf6
-rw-r--r--packages/foonas-init/files/modulefunctions39
-rw-r--r--packages/foonas-init/files/reflash163
-rw-r--r--packages/foonas-init/files/sysconf793
-rw-r--r--packages/foonas-init/files/turnup861
-rw-r--r--packages/foonas-init/foonas-init_0.10.bb122
-rw-r--r--packages/freetype/freetype-2.3.0/.mtn2git_empty (renamed from packages/sysvinit/sysvinit/htcuniversal/.mtn2git_empty)0
-rw-r--r--packages/freetype/freetype-2.3.0/configure.patch43
-rw-r--r--packages/freetype/freetype-2.3.0/no-hardcode.patch11
-rw-r--r--packages/freetype/freetype-2.3.1/.mtn2git_empty (renamed from packages/tor/tor-0.1.1.23/.mtn2git_empty)0
-rw-r--r--packages/freetype/freetype-2.3.1/fix-x86_64-build.patch26
-rw-r--r--packages/freetype/freetype-2.3.3/.mtn2git_empty (renamed from packages/uboot-utils/.mtn2git_empty)0
-rw-r--r--packages/freetype/freetype-2.3.3/fix-x86_64-build.patch26
-rw-r--r--packages/freetype/freetype-native_2.1.10.bb5
-rw-r--r--packages/freetype/freetype_2.3.0.bb38
-rw-r--r--packages/freetype/freetype_2.3.1.bb40
-rw-r--r--packages/freetype/freetype_2.3.3.bb41
-rw-r--r--packages/freeze/freeze.bb2
-rw-r--r--packages/freeze/unfreeze.bb2
-rw-r--r--packages/frodo/frodo_4.1b.bb2
-rw-r--r--packages/ftpd-topfield/files/usb-header-name.patch11
-rwxr-xr-xpackages/ftpd-topfield/ftpd-topfield_0.6.10.bb34
-rwxr-xr-xpackages/ftpd-topfield/ftpd-topfield_0.7.1.bb34
-rw-r--r--packages/fuse/fuse-2.6.5/.mtn2git_empty (renamed from packages/uboot/u-boot-LABEL.2006.06.30.2020/.mtn2git_empty)0
-rw-r--r--packages/fuse/fuse-2.6.5/not-run-updaterc.d-on-host.patch21
-rw-r--r--packages/fuse/fuse-module_2.5.3.bb29
-rw-r--r--packages/fuse/fuse-module_2.6.5.bb29
-rw-r--r--packages/fuse/fuse.inc2
-rw-r--r--packages/fuse/fuse_2.5.3.bb4
-rw-r--r--packages/fuse/fuse_2.6.5.bb27
-rw-r--r--packages/fuse/gmailfs_0.7.2.bb22
-rw-r--r--packages/fuse/gmailfs_0.7.3.bb22
-rw-r--r--packages/fuse/sshfs-fuse_1.7.bb17
-rw-r--r--packages/fush/fush_0.9.0.bb4
-rw-r--r--packages/g15daemon/.mtn2git_empty (renamed from packages/uicmoc/uicmoc4-native-4.1.1/.mtn2git_empty)0
-rw-r--r--packages/g15daemon/g15daemon_1.2.6a.bb25
-rw-r--r--packages/gaim/pidgin.inc74
-rw-r--r--packages/gaim/pidgin/.mtn2git_empty (renamed from packages/wpa-supplicant/wpa-supplicant-0.5.5/.mtn2git_empty)0
-rw-r--r--packages/gaim/pidgin/gconf-no-errors.patch12
-rw-r--r--packages/gaim/pidgin/sanitize-configure.ac.patch33
-rw-r--r--packages/gaim/pidgin_2.0.0.bb8
-rw-r--r--packages/galago/eds-feed_0.3.2.bb16
-rw-r--r--packages/galago/galago-daemon_0.3.4.bb12
-rw-r--r--packages/gamin/.mtn2git_empty (renamed from packages/zlib/files/.mtn2git_empty)0
-rw-r--r--packages/gamin/files/.mtn2git_empty (renamed from packages/opie-taskbar/opie-taskbar/locale.conf)0
-rw-r--r--packages/gamin/files/no-abstract-sockets.patch54
-rw-r--r--packages/gamin/gamin_0.1.8.bb11
-rw-r--r--packages/gammu/files/.mtn2git_empty0
-rw-r--r--packages/gammu/files/ldflags-again.patch13
-rw-r--r--packages/gammu/gammu_1.07.00.bb75
-rw-r--r--packages/gammu/gammu_1.10.0.bb77
-rw-r--r--packages/gcc/gcc-4.1.1/801-arm-bigendian-eabi.patch14
-rw-r--r--packages/gcc/gcc-4.1.1/gcc-ignore-cache.patch15
-rw-r--r--packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch2225
-rw-r--r--packages/gcc/gcc-4.1.1/ppc-sfp-long-double-gcc411-7.patch4271
-rw-r--r--packages/gcc/gcc-4.1.1/sh3-installfix-fixheaders.patch11
-rw-r--r--packages/gcc/gcc-4.1.2/.mtn2git_empty0
-rw-r--r--packages/gcc/gcc-4.1.2/100-uclibc-conf.patch544
-rw-r--r--packages/gcc/gcc-4.1.2/110-arm-eabi.patch27
-rw-r--r--packages/gcc/gcc-4.1.2/200-uclibc-locale.patch3261
-rw-r--r--packages/gcc/gcc-4.1.2/300-libstdc++-pic.patch46
-rw-r--r--packages/gcc/gcc-4.1.2/301-missing-execinfo_h.patch11
-rw-r--r--packages/gcc/gcc-4.1.2/302-c99-snprintf.patch11
-rw-r--r--packages/gcc/gcc-4.1.2/303-c99-complex-ugly-hack.patch12
-rw-r--r--packages/gcc/gcc-4.1.2/304-index_macro.patch24
-rw-r--r--packages/gcc/gcc-4.1.2/602-sdk-libstdc++-includes.patch20
-rw-r--r--packages/gcc/gcc-4.1.2/740-sh-pr24836.patch25
-rw-r--r--packages/gcc/gcc-4.1.2/800-arm-bigendian.patch127
-rw-r--r--packages/gcc/gcc-4.1.2/801-arm-bigendian-eabi.patch14
-rw-r--r--packages/gcc/gcc-4.1.2/README4
-rw-r--r--packages/gcc/gcc-4.1.2/arm-nolibfloat.patch24
-rw-r--r--packages/gcc/gcc-4.1.2/arm-softfloat.patch16
-rw-r--r--packages/gcc/gcc-4.1.2/arm-thumb-cache.patch29
-rw-r--r--packages/gcc/gcc-4.1.2/arm-thumb.patch64
-rw-r--r--packages/gcc/gcc-4.1.2/fix-ICE-in-arm_unwind_emit_set.diff18
-rw-r--r--packages/gcc/gcc-4.1.2/gcc41-configure.in.patch22
-rw-r--r--packages/gcc/gcc-4.1.2/ldflags.patch22
-rw-r--r--packages/gcc/gcc-4.1.2/sdk-libstdc++-includes.patch22
-rw-r--r--packages/gcc/gcc-4.1.2/sh3-installfix-fixheaders.patch11
-rw-r--r--packages/gcc/gcc-4.1.2/unbreak-armv4t.patch12
-rw-r--r--packages/gcc/gcc-4.1.2/zecke-no-host-includes.patch31
-rw-r--r--packages/gcc/gcc-4.1.2/zecke-xgcc-cpp.patch12
-rw-r--r--packages/gcc/gcc-cross-sdk_4.1.2.bb42
-rw-r--r--packages/gcc/gcc-cross_4.1.1.bb6
-rw-r--r--packages/gcc/gcc-cross_4.1.2.bb20
-rw-r--r--packages/gcc/gcc-package-sdk.inc2
-rw-r--r--packages/gcc/gcc-package.inc25
-rw-r--r--packages/gcc/gcc3-build-cross.inc4
-rw-r--r--packages/gcc/gcc_4.1.1.bb12
-rw-r--r--packages/gcc/gcc_4.1.2.bb51
-rw-r--r--packages/gd/gd_2.0.33.bb4
-rw-r--r--packages/gdado/.mtn2git_empty0
-rw-r--r--packages/gdado/gdado_2.2.bb15
-rw-r--r--packages/gdb/files/sim-install-makefile-common.patch22
-rw-r--r--packages/gdb/files/sim-install-makefile.patch11
-rw-r--r--packages/gdb/files/sim-install.patch34
-rw-r--r--packages/gdb/gdb-cross_6.3.bb5
-rw-r--r--packages/gdb/gdb-cross_6.6.bb4
-rw-r--r--packages/genlist/genlist.bb7
-rw-r--r--packages/geoclue/geoclue_svn.bb6
-rw-r--r--packages/gettext/gettext-0.14.1/getline.m4.patch32
-rw-r--r--packages/gettext/gettext_0.14.1.bb5
-rw-r--r--packages/ghettotooth/ghettotooth.bb2
-rw-r--r--packages/gift/gift_0.11.5.bb3
-rw-r--r--packages/gimp/gimp_2.3.10.bb3
-rw-r--r--packages/git/git_1.4.4.2.bb10
-rw-r--r--packages/gizmod/.mtn2git_empty0
-rw-r--r--packages/gizmod/files/.mtn2git_empty0
-rw-r--r--packages/gizmod/files/disable-bmp.patch105
-rw-r--r--packages/gizmod/files/disable-xmms.patch113
-rw-r--r--packages/gizmod/files/fix-python-configure.patch17
-rw-r--r--packages/gizmod/gizmod_2.3.bb24
-rw-r--r--packages/gkrellm/gkrellm/.mtn2git_empty0
-rw-r--r--packages/gkrellm/gkrellm/destdir.patch24
-rw-r--r--packages/gkrellm/gkrellm_2.2.10.bb24
-rw-r--r--packages/gkrellm/gkrellm_2.2.7.bb23
-rw-r--r--packages/glib-2.0/glib-2.0-2.12.10/.mtn2git_empty0
-rw-r--r--packages/glib-2.0/glib-2.0-2.12.10/configure-libtool.patch20
-rw-r--r--packages/glib-2.0/glib-2.0-2.12.11/.mtn2git_empty0
-rw-r--r--packages/glib-2.0/glib-2.0-2.12.11/configure-libtool.patch20
-rw-r--r--packages/glib-2.0/glib-2.0-2.12.12/.mtn2git_empty0
-rw-r--r--packages/glib-2.0/glib-2.0-2.12.12/configure-libtool.patch20
-rw-r--r--packages/glib-2.0/glib-2.0-2.12.9/.mtn2git_empty0
-rw-r--r--packages/glib-2.0/glib-2.0-2.12.9/configure-libtool.patch20
-rw-r--r--packages/glib-2.0/glib-2.0-native-2.12.4/.mtn2git_empty0
-rw-r--r--packages/glib-2.0/glib-2.0-native-2.12.4/glib-gettextize-dir.patch11
-rw-r--r--packages/glib-2.0/glib-2.0-native_2.12.4.bb49
-rw-r--r--packages/glib-2.0/glib-2.0-native_2.6.0.bb48
-rw-r--r--packages/glib-2.0/glib-2.0-native_2.6.1.bb48
-rw-r--r--packages/glib-2.0/glib-2.0-native_2.6.2.bb49
-rw-r--r--packages/glib-2.0/glib-2.0-native_2.6.6.bb51
-rw-r--r--packages/glib-2.0/glib-2.0_2.12.0.bb45
-rw-r--r--packages/glib-2.0/glib-2.0_2.12.1.bb45
-rw-r--r--packages/glib-2.0/glib-2.0_2.12.10.bb6
-rw-r--r--packages/glib-2.0/glib-2.0_2.12.11.bb6
-rw-r--r--packages/glib-2.0/glib-2.0_2.12.12.bb8
-rw-r--r--packages/glib-2.0/glib-2.0_2.12.3.bb45
-rw-r--r--packages/glib-2.0/glib-2.0_2.12.9.bb6
-rw-r--r--packages/glib-2.0/glib-2.0_2.4.5.bb117
-rw-r--r--packages/glib-2.0/glib-2.0_2.6.0.bb51
-rw-r--r--packages/glib-2.0/glib-2.0_2.6.2.bb51
-rw-r--r--packages/glib-2.0/glib-2.0_2.6.3.bb51
-rw-r--r--packages/glib-2.0/glib-2.0_2.6.6.bb (renamed from packages/glib-2.0/glib-2.0_2.6.1.bb)0
-rw-r--r--packages/glib-2.0/glib-2.0_2.8.1.bb50
-rw-r--r--packages/glib-2.0/glib-2.0_2.8.2.bb50
-rw-r--r--packages/glib-2.0/glib-2.0_2.8.4.bb44
-rw-r--r--packages/glib-2.0/glib.inc7
-rw-r--r--packages/glibc/files/ppc-ld-nofpu-20070104.patch190
-rw-r--r--packages/glibc/files/ppc-ports-ld-nofpu-20070114.patch38
-rw-r--r--packages/glibc/files/ppc-sfp-machine.patch297
-rw-r--r--packages/glibc/files/ppc-soft-fp-20070115.patch182
-rw-r--r--packages/glibc/glibc-2.4/ldd-unbash.patch11
-rw-r--r--packages/glibc/glibc-initial_2.5.bb3
-rw-r--r--packages/glibc/glibc-package.bbclass13
-rw-r--r--packages/glibc/glibc.inc13
-rw-r--r--packages/glibc/glibc_2.2.5.bb10
-rw-r--r--packages/glibc/glibc_2.3.2+cvs20040726.bb9
-rw-r--r--packages/glibc/glibc_2.3.2.bb11
-rw-r--r--packages/glibc/glibc_2.3.3+cvs20041128.bb9
-rw-r--r--packages/glibc/glibc_2.3.3+cvs20050221.bb9
-rw-r--r--packages/glibc/glibc_2.3.3+cvs20050420.bb9
-rw-r--r--packages/glibc/glibc_2.3.3.bb11
-rw-r--r--packages/glibc/glibc_2.3.5+cvs20050627.bb8
-rw-r--r--packages/glibc/glibc_2.4.bb8
-rw-r--r--packages/glibc/glibc_2.5.bb21
-rw-r--r--packages/glibc/glibc_cvs.bb8
-rw-r--r--packages/gmp/gmp-4.2.1/x86-fat.diff122
-rw-r--r--packages/gmp/gmp_4.2.1.bb9
-rw-r--r--packages/gnokii/gnokii_0.6.14.bb26
-rw-r--r--packages/gnokii/gnokii_0.6.4.bb4
-rw-r--r--packages/gnome/gconf-dbus_svn.bb29
-rw-r--r--packages/gnome/gnome-desktop/.mtn2git_empty0
-rw-r--r--packages/gnome/gnome-desktop/scrollkeeper.patch17
-rw-r--r--packages/gnome/gnome-desktop_2.16.1.bb23
-rw-r--r--packages/gnome/gnome-doc-utils_0.7.1.bb2
-rw-r--r--packages/gnome/gnome-keyring_0.4.4.bb2
-rw-r--r--packages/gnome/gnome-menus_2.16.1.bb14
-rw-r--r--packages/gnome/gnome-panel_2.12.1.bb8
-rw-r--r--packages/gnome/gnome-vfs-2.16.3/gnome-vfs-no-kerberos.patch51
-rw-r--r--packages/gnome/gnome-vfs-dbus/dbus-api-change.patch78
-rw-r--r--packages/gnome/gnome-vfs-dbus/glib-after-nameser.patch18
-rw-r--r--packages/gnome/gnome-vfs-dbus/gssapi.patch18
-rw-r--r--packages/gnome/gnome-vfs-dbus/werror_compile.patch11
-rw-r--r--packages/gnome/gnome-vfs-dbus_2.8.4.4.bb91
-rw-r--r--packages/gnome/gnome-vfs-dbus_svn.bb110
-rw-r--r--packages/gnome/gnome-vfs_2.16.3.bb10
-rw-r--r--packages/gnome/goffice_0.2.1.bb4
-rw-r--r--packages/gnome/goffice_0.3.2.bb4
-rw-r--r--packages/gnome/kanjipad_svn.bb19
-rw-r--r--packages/gnome/libart-lgpl/i486/.mtn2git_empty0
-rw-r--r--packages/gnome/libart-lgpl/i486/art_config.h10
-rw-r--r--packages/gnome/libbacon_cvs.bb20
-rw-r--r--packages/gnome/libbacon_svn.bb20
-rw-r--r--packages/gnome/libbonobo_2.14.0.bb6
-rw-r--r--packages/gnome/libbonoboui_2.14.0.bb5
-rw-r--r--packages/gnome/libgnomeprint_2.8.2.bb2
-rw-r--r--packages/gnome/libgnomeui_2.12.0.bb5
-rw-r--r--packages/gnome/libgnomeui_2.16.0.bb22
-rw-r--r--packages/gnome/libgnomeui_2.16.1.bb27
-rw-r--r--packages/gnome/libsoup_2.2.98.bb4
-rw-r--r--packages/gnumeric/gnumeric_1.6.3.bb3
-rw-r--r--packages/gnupg/gnupg-1.4.0/15_free_caps.patch93
-rw-r--r--packages/gnupg/gnupg-1.4.0/16_min_privileges.patch68
-rw-r--r--packages/gnupg/gnupg-1.4.0/18_ca_po_update.patch6430
-rw-r--r--packages/gnupg/gnupg-1.4.0/21_strgutil_update.patch200
-rw-r--r--packages/gnupg/gnupg2.inc77
-rw-r--r--packages/gnupg/gnupg2_1.9.15.bb3
-rw-r--r--packages/gnuplot/qtplot_0.2.bb2
-rw-r--r--packages/gnutls/gnutls.inc3
-rw-r--r--packages/gnutls/gnutls_1.4.5.bb (renamed from packages/gnutls/gnutls_1.4.4.bb)0
-rw-r--r--packages/gnutls/gnutls_1.6.0.bb7
-rw-r--r--packages/gnutls/gnutls_1.6.2.bb6
-rw-r--r--packages/gob2/.mtn2git_empty0
-rw-r--r--packages/gob2/gob2_2.0.14.bb17
-rw-r--r--packages/gpe-aerial/gpe-aerial_0.3.0.bb11
-rw-r--r--packages/gpe-aerial/gpe-aerial_svn.bb16
-rw-r--r--packages/gpe-appmgr/files/svn-build.patch229
-rw-r--r--packages/gpe-appmgr/gpe-appmgr_svn.bb17
-rw-r--r--packages/gpe-autostarter/gpe-autostarter-0.12/.mtn2git_empty0
-rw-r--r--packages/gpe-autostarter/gpe-autostarter-0.12/wireless.patch12
-rw-r--r--packages/gpe-autostarter/gpe-autostarter_0.12.bb2
-rw-r--r--packages/gpe-autostarter/gpe-autostarter_svn.bb15
-rw-r--r--packages/gpe-autostarter/svn-build.patch229
-rw-r--r--packages/gpe-beam/gpe-beam.inc5
-rw-r--r--packages/gpe-beam/gpe-beam_0.2.3.bb10
-rw-r--r--packages/gpe-beam/gpe-beam_0.2.6.bb12
-rw-r--r--packages/gpe-beam/gpe-beam_0.2.7.bb12
-rw-r--r--packages/gpe-beam/gpe-beam_0.2.8.bb11
-rw-r--r--packages/gpe-beam/gpe-beam_0.2.9.bb7
-rw-r--r--packages/gpe-bluetooth/gpe-bluetooth.inc11
-rw-r--r--packages/gpe-bluetooth/gpe-bluetooth_0.49.bb11
-rw-r--r--packages/gpe-bluetooth/gpe-bluetooth_0.51.bb14
-rw-r--r--packages/gpe-bluetooth/gpe-bluetooth_0.52.bb14
-rw-r--r--packages/gpe-bluetooth/gpe-bluetooth_0.53.bb14
-rw-r--r--packages/gpe-bluetooth/gpe-bluetooth_0.54.bb14
-rw-r--r--packages/gpe-bootsplash/files/angstrom/splash-l.svg26
-rw-r--r--packages/gpe-bootsplash/files/angstrom/splash-p.svg266
-rw-r--r--packages/gpe-bootsplash/files/splash-gpephone-landscape.svg66
-rw-r--r--packages/gpe-bootsplash/files/splash-gpephone-portrait.svg103
-rw-r--r--packages/gpe-bootsplash/files/svn-build.patch239
-rw-r--r--packages/gpe-bootsplash/gpe-bootsplash-theme-gpephone.bb29
-rw-r--r--packages/gpe-bootsplash/gpe-bootsplash_1.15.bb2
-rw-r--r--packages/gpe-bootsplash/gpe-bootsplash_svn.bb36
-rw-r--r--packages/gpe-buttonbox/gpe-buttonbox_cvs.bb17
-rw-r--r--packages/gpe-buttonbox/gpe-buttonbox_svn.bb15
-rw-r--r--packages/gpe-calendar/gpe-calendar_svn.bb2
-rw-r--r--packages/gpe-clock/files/.mtn2git_empty0
-rw-r--r--packages/gpe-clock/files/svn-build.patch240
-rw-r--r--packages/gpe-clock/gpe-clock.inc8
-rw-r--r--packages/gpe-clock/gpe-clock_0.14.bb8
-rw-r--r--packages/gpe-clock/gpe-clock_0.20.bb9
-rw-r--r--packages/gpe-clock/gpe-clock_0.21.bb10
-rw-r--r--packages/gpe-clock/gpe-clock_0.23.bb10
-rw-r--r--packages/gpe-clock/gpe-clock_0.24.bb10
-rw-r--r--packages/gpe-clock/gpe-clock_0.25.bb10
-rw-r--r--packages/gpe-clock/gpe-clock_svn.bb15
-rw-r--r--packages/gpe-conf/gpe-conf-0.2.4/.mtn2git_empty0
-rw-r--r--packages/gpe-conf/gpe-conf-0.2.4/scriptname.patch13
-rw-r--r--packages/gpe-conf/gpe-conf-0.2.5/.mtn2git_empty0
-rw-r--r--packages/gpe-conf/gpe-conf-0.2.5/backlight-bugfix.patch11
-rw-r--r--packages/gpe-conf/gpe-conf-0.2.5/wireless.patch16
-rw-r--r--packages/gpe-conf/gpe-conf_0.2.2.bb23
-rw-r--r--packages/gpe-conf/gpe-conf_0.2.3.bb21
-rw-r--r--packages/gpe-conf/gpe-conf_0.2.4.bb25
-rw-r--r--packages/gpe-conf/gpe-conf_0.2.5.bb27
-rw-r--r--packages/gpe-conf/gpe-conf_svn.bb8
-rw-r--r--packages/gpe-contacts/gpe-contacts_cvs.bb19
-rw-r--r--packages/gpe-contacts/gpe-contacts_svn.bb19
-rw-r--r--packages/gpe-dm/files/Xserver-cxk.patch11
-rw-r--r--packages/gpe-dm/files/collie-suspend-hack.patch19
-rw-r--r--packages/gpe-dm/files/mnci.patch27
-rw-r--r--packages/gpe-dm/files/remove-X-scripts.patch14
-rw-r--r--packages/gpe-dm/files/source-xsession-scripts.patch27
-rw-r--r--packages/gpe-dm/gpe-dm_0.50.bb13
-rw-r--r--packages/gpe-dm/gpe-dm_0.51.bb13
-rw-r--r--packages/gpe-dm/gpe-dm_svn.bb18
-rw-r--r--packages/gpe-edit/gpe-edit_0.40.bb8
-rw-r--r--packages/gpe-edit/gpe-edit_svn.bb12
-rw-r--r--packages/gpe-expenses/gpe-expenses_0.0.6.bb7
-rw-r--r--packages/gpe-filemanager/files/.mtn2git_empty0
-rw-r--r--packages/gpe-filemanager/files/svn-build.patch240
-rw-r--r--packages/gpe-filemanager/gpe-filemanager_0.23.bb2
-rw-r--r--packages/gpe-filemanager/gpe-filemanager_0.24.bb2
-rw-r--r--packages/gpe-filemanager/gpe-filemanager_0.25.bb2
-rw-r--r--packages/gpe-filemanager/gpe-filemanager_svn.bb18
-rw-r--r--packages/gpe-gallery/files/svn-build.patch240
-rw-r--r--packages/gpe-gallery/gpe-gallery_svn.bb19
-rw-r--r--packages/gpe-login/files/busybox-bad-perms.patch39
-rw-r--r--packages/gpe-login/files/highdpifontfix.patch14
-rw-r--r--packages/gpe-login/files/pre-session.patch56
-rw-r--r--packages/gpe-login/files/removeblue-fontsize8.patch2
-rw-r--r--packages/gpe-login/files/use-xtscal.patch11
-rw-r--r--packages/gpe-login/files/user-own-collie-devs.patch30
-rw-r--r--packages/gpe-login/gpe-login-0.88/.mtn2git_empty0
-rw-r--r--packages/gpe-login/gpe-login-0.88/chvt-keylaunch.patch12
-rw-r--r--packages/gpe-login/gpe-login_0.87.bb4
-rw-r--r--packages/gpe-login/gpe-login_0.88.bb15
-rw-r--r--packages/gpe-login/gpe-login_svn.bb17
-rw-r--r--packages/gpe-mini-browser/gpe-mini-browser_0.17.bb2
-rw-r--r--packages/gpe-mini-browser/gpe-mini-browser_0.18.bb2
-rw-r--r--packages/gpe-mini-browser/gpe-mini-browser_0.19.bb2
-rw-r--r--packages/gpe-mini-browser/gpe-mini-browser_0.20.bb52
-rw-r--r--packages/gpe-mini-browser/gpe-mini-browser_svn.bb17
-rw-r--r--packages/gpe-mininet/gpe-mininet_svn.bb18
-rw-r--r--packages/gpe-nmf/gpe-nmf.inc12
-rw-r--r--packages/gpe-nmf/gpe-nmf_0.17.bb9
-rw-r--r--packages/gpe-nmf/gpe-nmf_0.19.bb19
-rw-r--r--packages/gpe-nmf/gpe-nmf_0.20.bb21
-rw-r--r--packages/gpe-nmf/gpe-nmf_0.21.bb22
-rw-r--r--packages/gpe-nmf/gpe-nmf_0.22.bb27
-rw-r--r--packages/gpe-ownerinfo/gpe-ownerinfo.inc13
-rw-r--r--packages/gpe-ownerinfo/gpe-ownerinfo/compile.patch13
-rw-r--r--packages/gpe-ownerinfo/gpe-ownerinfo/svn-build.patch238
-rw-r--r--packages/gpe-ownerinfo/gpe-ownerinfo_0.23.bb12
-rw-r--r--packages/gpe-ownerinfo/gpe-ownerinfo_0.24.bb12
-rw-r--r--packages/gpe-ownerinfo/gpe-ownerinfo_0.25.bb12
-rw-r--r--packages/gpe-ownerinfo/gpe-ownerinfo_0.26.bb12
-rw-r--r--packages/gpe-ownerinfo/gpe-ownerinfo_0.27.bb12
-rw-r--r--packages/gpe-ownerinfo/gpe-ownerinfo_0.28.bb14
-rw-r--r--packages/gpe-ownerinfo/gpe-ownerinfo_svn.bb11
-rw-r--r--packages/gpe-plucker/gpe-plucker_0.4.bb5
-rw-r--r--packages/gpe-scap/gpe-scap-1.2/.mtn2git_empty0
-rw-r--r--packages/gpe-scap/gpe-scap-1.2/deviceinfo.patch22
-rw-r--r--packages/gpe-scap/gpe-scap_1.0.bb14
-rw-r--r--packages/gpe-scap/gpe-scap_1.2.bb15
-rw-r--r--packages/gpe-scap/gpe-scap_svn.bb12
-rw-r--r--packages/gpe-session-scripts/files/angstrom/.mtn2git_empty0
-rw-r--r--packages/gpe-session-scripts/files/angstrom/matchbox-session9
-rw-r--r--packages/gpe-session-scripts/gpe-session-scripts_0.67.bb8
-rw-r--r--packages/gpe-shield/gpe-shield_0.9.bb2
-rw-r--r--packages/gpe-sketchbook/files/.mtn2git_empty0
-rw-r--r--packages/gpe-sketchbook/files/svn-build.patch229
-rw-r--r--packages/gpe-sketchbook/gpe-sketchbook_svn.bb32
-rw-r--r--packages/gpe-snes/.mtn2git_empty0
-rw-r--r--packages/gpe-snes/gpe-snes_0.1.bb11
-rw-r--r--packages/gpe-soundserver/gpe-soundserver_0.4-1.bb3
-rw-r--r--packages/gpe-su/files/.mtn2git_empty0
-rw-r--r--packages/gpe-su/files/svn-build.patch240
-rw-r--r--packages/gpe-su/gpe-su_svn.bb14
-rw-r--r--packages/gpe-terminal/files/svn-build.patch238
-rw-r--r--packages/gpe-terminal/gpe-terminal_1.1.bb9
-rw-r--r--packages/gpe-terminal/gpe-terminal_svn.bb22
-rw-r--r--packages/gpe-themes/gpe-theme-clearlooks_0.2.bb15
-rw-r--r--packages/gpe-themes/gpe-theme-clearlooks_0.3.bb14
-rw-r--r--packages/gpe-themes/gpe-theme-industrial_0.2.bb14
-rw-r--r--packages/gpe-timesheet/gpe-timesheet_0.18.bb9
-rw-r--r--packages/gpe-timesheet/gpe-timesheet_0.19.bb9
-rw-r--r--packages/gpe-timesheet/gpe-timesheet_0.20.bb9
-rw-r--r--packages/gpe-timesheet/gpe-timesheet_0.21.bb9
-rw-r--r--packages/gpe-timesheet/gpe-timesheet_svn.bb15
-rw-r--r--packages/gpe-today/gpe-today_cvs.bb29
-rw-r--r--packages/gpe-today/gpe-today_svn.bb24
-rw-r--r--packages/gpe-todo/gpe-todo-hildon_0.54.bb2
-rw-r--r--packages/gpe-todo/gpe-todo-hildon_0.55.bb2
-rw-r--r--packages/gpe-todo/gpe-todo_svn.bb12
-rw-r--r--packages/gpe-what/gpe-what_cvs.bb13
-rw-r--r--packages/gpe-what/gpe-what_svn.bb12
-rw-r--r--packages/gpe-windowlist/gpe-windowlist_cvs.bb17
-rw-r--r--packages/gpe-windowlist/gpe-windowlist_svn.bb14
-rw-r--r--packages/gpephone/.mtn2git_empty0
-rw-r--r--packages/gpephone/addressbook_0.1.bb12
-rw-r--r--packages/gpephone/audioplayer_1.0.bb12
-rw-r--r--packages/gpephone/calendar_1.0.bb12
-rw-r--r--packages/gpephone/cms92init_0.1.bb21
-rw-r--r--packages/gpephone/connect_0.1.bb22
-rw-r--r--packages/gpephone/gpe-applauncher-0.7/.mtn2git_empty0
-rw-r--r--packages/gpephone/gpe-applauncher-0.7/default-icon.patch20
-rw-r--r--packages/gpephone/gpe-applauncher_0.7.bb16
-rw-r--r--packages/gpephone/gpe-phonepanel_0.7.bb12
-rw-r--r--packages/gpephone/gpe-session-scripts-phone/.mtn2git_empty0
-rw-r--r--packages/gpephone/gpe-session-scripts-phone/disable-composite.xsettings1
-rw-r--r--packages/gpephone/gpe-session-scripts-phone/matchbox-session7
-rw-r--r--packages/gpephone/gpe-session-scripts-phone/matchbox-session.vm15
-rwxr-xr-xpackages/gpephone/gpe-session-scripts-phone/phonesession62
-rw-r--r--packages/gpephone/gpe-session-scripts-phone/standard-apps.patch23
-rw-r--r--packages/gpephone/gpe-session-scripts-phone_0.67.bb53
-rw-r--r--packages/gpephone/gsmmux/.mtn2git_empty0
-rw-r--r--packages/gpephone/gsmmux/gsmmux-makefile.patch28
-rw-r--r--packages/gpephone/gsmmux_alpha-2.bb12
-rw-r--r--packages/gpephone/libabenabler_0.1.bb16
-rw-r--r--packages/gpephone/libcalenabler_1.0.bb16
-rw-r--r--packages/gpephone/libchenabler_0.1.bb16
-rw-r--r--packages/gpephone/libgemwidget/.mtn2git_empty0
-rw-r--r--packages/gpephone/libgemwidget/gemfilechooser-NULL-callback.patch12
-rw-r--r--packages/gpephone/libgemwidget_0.1.bb17
-rw-r--r--packages/gpephone/libgpephone_0.3.bb13
-rw-r--r--packages/gpephone/libiac_0.1.bb13
-rw-r--r--packages/gpephone/libidn_0.5.19.bb20
-rw-r--r--packages/gpephone/libim-0.1/.mtn2git_empty0
-rw-r--r--packages/gpephone/libim_0.2.bb22
-rw-r--r--packages/gpephone/liblipsevent_0.1.bb16
-rw-r--r--packages/gpephone/libmsgenabler_1.0.bb14
-rw-r--r--packages/gpephone/librecord2_0.1.bb15
-rw-r--r--packages/gpephone/librecord_0.1.bb15
-rw-r--r--packages/gpephone/libsettings_svn.bb22
-rw-r--r--packages/gpephone/libvocenabler_0.1.bb20
-rw-r--r--packages/gpephone/linphone-1.5.0/.mtn2git_empty0
-rw-r--r--packages/gpephone/linphone-1.5.0/linphone-1.5.0.patch115730
-rw-r--r--packages/gpephone/linphone-1.5.0/linphone-pkgconfig.patch41
-rw-r--r--packages/gpephone/linphone_1.5.0.bb47
-rw-r--r--packages/gpephone/phoneserver/.mtn2git_empty0
-rw-r--r--packages/gpephone/phoneserver/changeport.patch11
-rw-r--r--packages/gpephone/phoneserver_1.0.bb13
-rw-r--r--packages/gpephone/ptim-engine/.mtn2git_empty0
-rw-r--r--packages/gpephone/ptim-engine/gtkmodule-location.patch11
-rw-r--r--packages/gpephone/ptim-engine_svn.bb23
-rw-r--r--packages/gpephone/ptim-headers_svn.bb18
-rw-r--r--packages/gpephone/ptim-helper/.mtn2git_empty0
-rw-r--r--packages/gpephone/ptim-helper/gtkmodule-location.patch22
-rw-r--r--packages/gpephone/ptim-helper_svn.bb23
-rw-r--r--packages/gpephone/ptim-manager/.mtn2git_empty0
-rw-r--r--packages/gpephone/ptim-manager/gtkmodule-location.patch21
-rw-r--r--packages/gpephone/ptim-manager_svn.bb23
-rw-r--r--packages/gpephone/sms-1.0/.mtn2git_empty0
-rw-r--r--packages/gpephone/sms-1.0/somefixes.patch57
-rw-r--r--packages/gpephone/sms_1.0.bb15
-rw-r--r--packages/gpephone/soundserver/.mtn2git_empty0
-rw-r--r--packages/gpephone/soundserver/libtool.patch10
-rw-r--r--packages/gpephone/soundserver_1.0.bb26
-rw-r--r--packages/gpephone/videoplayer_0.1.bb12
-rw-r--r--packages/gpephone/voicecall_0.1.bb9
-rw-r--r--packages/gpephone/xoo-theme-gpephone/.mtn2git_empty0
-rw-r--r--packages/gpephone/xoo-theme-gpephone/gpephone.pngbin0 -> 38390 bytes
-rw-r--r--packages/gpephone/xoo-theme-gpephone/gpephone.xml59
-rw-r--r--packages/gpephone/xoo-theme-gpephone_1.0.bb17
-rw-r--r--packages/gpephone/xoo-vm/.mtn2git_empty0
-rw-r--r--packages/gpephone/xoo-vm/gpephone-vm.patch84
-rw-r--r--packages/gpephone/xoo-vm_0.7-20070204.bb16
-rw-r--r--packages/gperf/.mtn2git_empty0
-rw-r--r--packages/gperf/files/.mtn2git_empty0
-rw-r--r--packages/gperf/files/autoreconf.patch435
-rw-r--r--packages/gperf/gperf-native_3.0.3.bb10
-rw-r--r--packages/gperf/gperf_3.0.3.bb8
-rw-r--r--packages/gperiodic/gperiodic_1.3.3.bb2
-rw-r--r--packages/gpgme/gpgme_1.1.4.bb22
-rw-r--r--packages/gphoto2/gphoto2_2.1.4.bb5
-rw-r--r--packages/gphoto2/gphoto2_2.1.5.bb5
-rw-r--r--packages/gphoto2/gphoto2_2.1.6.bb6
-rw-r--r--packages/gpm/gpm_1.20.1.bb31
-rw-r--r--packages/gpsd/gpsd.inc18
-rw-r--r--packages/gpsd/gpsd_2.34.bb3
-rw-r--r--packages/gpstk/.mtn2git_empty0
-rw-r--r--packages/gpstk/files/.mtn2git_empty0
-rw-r--r--packages/gpstk/files/configure.patch10
-rw-r--r--packages/gpstk/gpstk_1.2.bb72
-rw-r--r--packages/granule/granule.inc14
-rw-r--r--packages/granule/granule_1.2.2.bb4
-rw-r--r--packages/granule/granule_1.2.4.bb4
-rw-r--r--packages/groff/groff_1.19.2.bb4
-rw-r--r--packages/grub/grub_0.93.bb7
-rw-r--r--packages/grub/grub_0.97.bb10
-rw-r--r--packages/gsm/.mtn2git_empty0
-rw-r--r--packages/gsm/files/.mtn2git_empty0
-rw-r--r--packages/gsm/files/default9
-rw-r--r--packages/gsm/files/fic-gta01/.mtn2git_empty0
-rw-r--r--packages/gsm/files/fic-gta01/default9
-rw-r--r--packages/gsm/files/gsmd106
-rw-r--r--packages/gsm/files/htcuniversal/.mtn2git_empty0
-rw-r--r--packages/gsm/files/htcuniversal/default10
-rw-r--r--packages/gsm/files/magician/.mtn2git_empty0
-rw-r--r--packages/gsm/files/magician/default10
-rw-r--r--packages/gsm/files/plugin.patch935
-rw-r--r--packages/gsm/files/qualcomm-extreply.patch13
-rw-r--r--packages/gsm/libgsmd_svn.bb42
-rw-r--r--packages/gspcav1/.mtn2git_empty0
-rw-r--r--packages/gspcav1/gspcav1-20070110/.mtn2git_empty0
-rw-r--r--packages/gspcav1/gspcav1-20070110/MS.patch29
-rw-r--r--packages/gspcav1/gspcav1-20070110/Makefile.patch11
-rw-r--r--packages/gspcav1/gspcav1_20070110.bb25
-rw-r--r--packages/gstreamer/gst-ffmpeg/.mtn2git_empty0
-rw-r--r--packages/gstreamer/gst-ffmpeg/armv5.patch1509
-rw-r--r--packages/gstreamer/gst-ffmpeg_0.10.2.bb30
-rw-r--r--packages/gstreamer/gst-plugins-bad/.mtn2git_empty0
-rw-r--r--packages/gstreamer/gst-plugins-bad/cross-compile.patch44
-rw-r--r--packages/gstreamer/gst-plugins-bad_0.10.1.bb2
-rw-r--r--packages/gstreamer/gst-plugins-bad_0.10.3.bb3
-rw-r--r--packages/gstreamer/gst-plugins-base_0.10.11.bb2
-rw-r--r--packages/gstreamer/gst-plugins-base_0.10.12.bb9
-rw-r--r--packages/gstreamer/gst-plugins-base_0.10.5.bb2
-rw-r--r--packages/gstreamer/gst-plugins-base_0.10.6.bb2
-rw-r--r--packages/gstreamer/gst-plugins-base_0.10.7.bb2
-rw-r--r--packages/gstreamer/gst-plugins-good_0.10.2.bb2
-rw-r--r--packages/gstreamer/gst-plugins-good_0.10.4.bb2
-rw-r--r--packages/gstreamer/gst-plugins-good_0.10.5.bb5
-rw-r--r--packages/gstreamer/gst-plugins-ugly/.mtn2git_empty0
-rw-r--r--packages/gstreamer/gst-plugins-ugly/cross-compile.patch16
-rw-r--r--packages/gstreamer/gst-plugins-ugly_0.10.2.bb2
-rw-r--r--packages/gstreamer/gst-plugins-ugly_0.10.4.bb3
-rw-r--r--packages/gstreamer/gst-plugins-ugly_0.10.5.bb5
-rw-r--r--packages/gstreamer/gst-plugins.inc10
-rw-r--r--packages/gstreamer/gstreamer_0.10.11.bb1
-rw-r--r--packages/gstreamer/gstreamer_0.10.12.bb24
-rw-r--r--packages/gstreamer/gstreamer_0.10.4.bb2
-rw-r--r--packages/gstreamer/gstreamer_0.10.5.bb2
-rw-r--r--packages/gstreamer/gstreamer_0.10.6.bb2
-rw-r--r--packages/gstreamer/gstreamer_0.10.8.bb2
-rw-r--r--packages/gtk+/gtk+-1.2_1.2.10.bb4
-rw-r--r--packages/gtk+/gtk+-2.10.10/.mtn2git_empty0
-rw-r--r--packages/gtk+/gtk+-2.10.10/automake-lossage.patch (renamed from packages/gtk+/gtk+-2.10.3/automake-lossage.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.10/disable-print.patch (renamed from packages/gtk+/gtk+-2.10.3/disable-print.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.10/disable-tooltips.patch (renamed from packages/gtk+/gtk+-2.10.3/disable-tooltips.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.10/gnome-bug-341177.patch217
-rw-r--r--packages/gtk+/gtk+-2.10.10/gtk+-handhelds.patch (renamed from packages/gtk+/gtk+-2.10.6/gtk+-handhelds.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.10/gtklabel-resize-patch (renamed from packages/gtk+/gtk+-2.10.3/gtklabel-resize-patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.10/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.10.10/integer-pixops.patch348
-rw-r--r--packages/gtk+/gtk+-2.10.10/menu-deactivate.patch (renamed from packages/gtk+/gtk+-2.10.3/menu-deactivate.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.10/migration.patch (renamed from packages/gtk+/gtk+-2.10.6/migration.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.10/no-demos.patch (renamed from packages/gtk+/gtk+-2.10.3/no-demos.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.10/no-xwc.patch (renamed from packages/gtk+/gtk+-2.10.3/no-xwc.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.10/plana-pixops.patch569
-rw-r--r--packages/gtk+/gtk+-2.10.10/run-iconcache.patch19
-rw-r--r--packages/gtk+/gtk+-2.10.10/scroll-timings.patch (renamed from packages/gtk+/gtk+-2.10.3/scroll-timings.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.10/single-click.patch (renamed from packages/gtk+/gtk+-2.10.6/single-click.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.10/small-gtkfilesel.patch (renamed from packages/gtk+/gtk+-2.10.3/small-gtkfilesel.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.10/spinbutton.patch (renamed from packages/gtk+/gtk+-2.10.6/spinbutton.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.10/xsettings.patch (renamed from packages/gtk+/gtk+-2.10.3/xsettings.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.12/.mtn2git_empty0
-rw-r--r--packages/gtk+/gtk+-2.10.12/automake-lossage.patch (renamed from packages/gtk+/gtk+-2.10.6/automake-lossage.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.12/disable-print.patch (renamed from packages/gtk+/gtk+-2.10.6/disable-print.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.12/disable-tooltips.patch (renamed from packages/gtk+/gtk+-2.10.6/disable-tooltips.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.12/gnome-bug-341177.patch217
-rw-r--r--packages/gtk+/gtk+-2.10.12/gtk+-handhelds.patch149
-rw-r--r--packages/gtk+/gtk+-2.10.12/gtklabel-resize-patch (renamed from packages/gtk+/gtk+-2.10.6/gtklabel-resize-patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.12/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.10.12/integer-pixops.patch348
-rw-r--r--packages/gtk+/gtk+-2.10.12/menu-deactivate.patch (renamed from packages/gtk+/gtk+-2.10.6/menu-deactivate.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.12/migration.patch611
-rw-r--r--packages/gtk+/gtk+-2.10.12/no-demos.patch (renamed from packages/gtk+/gtk+-2.10.6/no-demos.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.12/no-xwc.patch (renamed from packages/gtk+/gtk+-2.10.6/no-xwc.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.12/plana-pixops.patch569
-rw-r--r--packages/gtk+/gtk+-2.10.12/run-iconcache.patch19
-rw-r--r--packages/gtk+/gtk+-2.10.12/scroll-timings.patch (renamed from packages/gtk+/gtk+-2.10.6/scroll-timings.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.12/single-click.patch56
-rw-r--r--packages/gtk+/gtk+-2.10.12/small-gtkfilesel.patch (renamed from packages/gtk+/gtk+-2.10.6/small-gtkfilesel.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.12/spinbutton.patch130
-rw-r--r--packages/gtk+/gtk+-2.10.12/xsettings.patch (renamed from packages/gtk+/gtk+-2.10.6/xsettings.patch)0
-rw-r--r--packages/gtk+/gtk+-2.10.3/gtk+-handhelds.patch236
-rw-r--r--packages/gtk+/gtk+-2.10.3/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.10.3/migration.patch615
-rw-r--r--packages/gtk+/gtk+-2.10.3/run-iconcache.patch19
-rw-r--r--packages/gtk+/gtk+-2.10.3/single-click.patch54
-rw-r--r--packages/gtk+/gtk+-2.10.3/spinbutton.patch128
-rw-r--r--packages/gtk+/gtk+-2.10.6/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.10.6/pangoxft2.10.6.diff2456
-rw-r--r--packages/gtk+/gtk+-2.10.6/run-iconcache.patch21
-rw-r--r--packages/gtk+/gtk+-2.10.9/.mtn2git_empty0
-rw-r--r--packages/gtk+/gtk+-2.10.9/automake-lossage.patch24
-rw-r--r--packages/gtk+/gtk+-2.10.9/disable-print.patch50
-rw-r--r--packages/gtk+/gtk+-2.10.9/disable-tooltips.patch11
-rw-r--r--packages/gtk+/gtk+-2.10.9/gnome-bug-341177.patch217
-rw-r--r--packages/gtk+/gtk+-2.10.9/gtk+-handhelds.patch149
-rw-r--r--packages/gtk+/gtk+-2.10.9/gtklabel-resize-patch10
-rw-r--r--packages/gtk+/gtk+-2.10.9/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.10.9/integer-pixops.patch348
-rw-r--r--packages/gtk+/gtk+-2.10.9/menu-deactivate.patch51
-rw-r--r--packages/gtk+/gtk+-2.10.9/migration.patch611
-rw-r--r--packages/gtk+/gtk+-2.10.9/no-demos.patch10
-rw-r--r--packages/gtk+/gtk+-2.10.9/no-xwc.patch151
-rw-r--r--packages/gtk+/gtk+-2.10.9/run-iconcache.patch19
-rw-r--r--packages/gtk+/gtk+-2.10.9/scroll-timings.patch11
-rw-r--r--packages/gtk+/gtk+-2.10.9/single-click.patch56
-rw-r--r--packages/gtk+/gtk+-2.10.9/small-gtkfilesel.patch267
-rw-r--r--packages/gtk+/gtk+-2.10.9/spinbutton.patch130
-rw-r--r--packages/gtk+/gtk+-2.10.9/xsettings.patch16
-rw-r--r--packages/gtk+/gtk+-2.6.10/compile-against-newer-glib.patch49
-rw-r--r--packages/gtk+/gtk+-2.6.10/gtk+-2.6.10-bg.patch20
-rwxr-xr-xpackages/gtk+/gtk+-2.6.10/gtk.keynav.gtkcombobox.patch238
-rwxr-xr-xpackages/gtk+/gtk+-2.6.10/gtk.keynav.gtkentry.patch16
-rwxr-xr-xpackages/gtk+/gtk+-2.6.10/gtk.keynav.gtkiconview.patch91
-rwxr-xr-xpackages/gtk+/gtk+-2.6.10/gtk.keynav.gtkradiobutton.patch32
-rwxr-xr-xpackages/gtk+/gtk+-2.6.10/gtk.keynav.gtksettings.patch38
-rwxr-xr-xpackages/gtk+/gtk+-2.6.10/gtk.keynav.gtktextview.patch25
-rwxr-xr-xpackages/gtk+/gtk+-2.6.10/gtk.keynav.gtktreeview.patch121
-rwxr-xr-xpackages/gtk+/gtk+-2.6.10/gtk.keynav.gtkwidget.patch127
-rw-r--r--packages/gtk+/gtk+-directfb_2.10.9.bb38
-rw-r--r--packages/gtk+/gtk+_2.10.10.bb28
-rw-r--r--packages/gtk+/gtk+_2.10.12.bb28
-rw-r--r--packages/gtk+/gtk+_2.10.3.bb103
-rw-r--r--packages/gtk+/gtk+_2.10.6.bb103
-rw-r--r--packages/gtk+/gtk+_2.10.9.bb24
-rw-r--r--packages/gtk+/gtk+_2.6.10.bb40
-rw-r--r--packages/gtk+/gtk+_2.8.9.bb1
-rw-r--r--packages/gtk+/gtk-2.10.inc83
-rw-r--r--packages/gtk+/gtk-fpu.inc6
-rw-r--r--packages/gtk+/pixops-test.bb25
-rw-r--r--packages/gtk+/pixops-test/.mtn2git_empty0
-rw-r--r--packages/gtk+/pixops-test/gtk-logo-rgb.gifbin0 -> 6459 bytes
-rw-r--r--packages/gtk+/pixops-test/pixops-test.c69
-rw-r--r--packages/gtk-engines/gtk-sato-engine_svn.bb18
-rw-r--r--packages/gtk-theme-torturer/.mtn2git_empty0
-rw-r--r--packages/gtk-theme-torturer/gtk-theme-torturer_git.bb19
-rw-r--r--packages/gtk-webcore/files/build_silence.patch16
-rw-r--r--packages/gtk-webcore/osb-browser_svn.bb18
-rw-r--r--packages/gtk-webcore/osb-jscore_svn.bb41
-rw-r--r--packages/gtk-webcore/osb-nrcit_svn.bb39
-rw-r--r--packages/gtk-webcore/osb-nrcore_svn.bb13
-rw-r--r--packages/gtk2-ssh-askpass/gtk2-ssh-askpass_0.3.bb2
-rw-r--r--packages/gtkhtml/gtkhtml-3.8_3.8.2.bb18
-rw-r--r--packages/gtkhtml2/gtkhtml2_cvs.bb8
-rw-r--r--packages/hal/files/99_hal2
-rw-r--r--packages/hal/hal-info_git.bb20
-rw-r--r--packages/hal/hal_0.5.7.bb33
-rw-r--r--packages/hal/hal_0.5.8.1.bb36
-rw-r--r--packages/hal/hal_0.5.9.bb94
-rw-r--r--packages/haserl/.mtn2git_empty0
-rw-r--r--packages/haserl/haserl_0.8.0.bb9
-rw-r--r--packages/hdparm/hdparm-6.9/.mtn2git_empty0
-rw-r--r--packages/hdparm/hdparm-6.9/bswap.patch39
-rw-r--r--packages/hdparm/hdparm-6.9/uclibc.patch35
-rw-r--r--packages/hdparm/hdparm_6.9.bb14
-rw-r--r--packages/hfsplusutils/.mtn2git_empty0
-rw-r--r--packages/hfsplusutils/hfsplusutils-1.0.4-4/.mtn2git_empty0
-rw-r--r--packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-errno.patch19
-rw-r--r--packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-gcc4.patch132
-rw-r--r--packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-glob.patch12
-rw-r--r--packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-string.patch11
-rw-r--r--packages/hfsplusutils/hfsplusutils_1.0.4-4.bb26
-rw-r--r--packages/hfsutils/.mtn2git_empty0
-rw-r--r--packages/hfsutils/hfsutils-3.2.6/.mtn2git_empty0
-rw-r--r--packages/hfsutils/hfsutils-3.2.6/hfsutils-3.2.6-errno.patch13
-rw-r--r--packages/hfsutils/hfsutils-3.2.6/largerthan2gb.patch15
-rw-r--r--packages/hfsutils/hfsutils_3.2.6.bb32
-rw-r--r--packages/hostap/hostap-daemon.inc2
-rw-r--r--packages/hostap/hostap-daemon/init2
-rw-r--r--packages/hostap/hostap-daemon_0.3.7.bb2
-rw-r--r--packages/hostap/hostap-daemon_0.4.4.bb2
-rw-r--r--packages/hostap/hostap-daemon_0.4.8.bb2
-rw-r--r--packages/hostap/hostap-daemon_0.5.1.bb2
-rw-r--r--packages/hwdata/.mtn2git_empty0
-rw-r--r--packages/hwdata/hwdata_0.191.bb14
-rw-r--r--packages/id3lib/id3lib_3.8.3.bb8
-rw-r--r--packages/ifplugd/files/.mtn2git_empty0
-rw-r--r--packages/ifplugd/files/kernel-types.patch10
-rw-r--r--packages/ifplugd/ifplugd_0.25.bb2
-rw-r--r--packages/ifupdown/ifupdown-0.6.4/gcc34-fix.patch16
-rw-r--r--packages/ifupdown/ifupdown-0.6.4/udhcpc.patch26
-rw-r--r--packages/ifupdown/ifupdown-0.6.8/.mtn2git_empty0
-rw-r--r--packages/ifupdown/ifupdown-0.6.8/busybox.patch (renamed from packages/ifupdown/ifupdown-0.6.4/busybox.patch)0
-rw-r--r--packages/ifupdown/ifupdown-0.6.8/head-tail.patch (renamed from packages/ifupdown/ifupdown-0.6.4/head-tail.patch)0
-rw-r--r--packages/ifupdown/ifupdown-0.6.8/init (renamed from packages/ifupdown/ifupdown-0.6.4/init)0
-rw-r--r--packages/ifupdown/ifupdown-0.6.8/interfaces (renamed from packages/ifupdown/ifupdown-0.6.4/interfaces)0
-rw-r--r--packages/ifupdown/ifupdown-0.6.8/udhcpc.patch28
-rw-r--r--packages/ifupdown/ifupdown-0.6.8/zeroconf.patch (renamed from packages/ifupdown/ifupdown-0.6.4/zeroconf.patch)0
-rw-r--r--packages/ifupdown/ifupdown_0.6.4.bb36
-rw-r--r--packages/ifupdown/ifupdown_0.6.8.bb36
-rw-r--r--packages/images/angstrom-minimal-image.bb22
-rw-r--r--packages/images/bootstrap-image.bb3
-rw-r--r--packages/images/essential-image.bb2
-rw-r--r--packages/images/essential-machine-image.bb2
-rw-r--r--packages/images/gpe-image.bb1
-rw-r--r--packages/images/gpephone-image-vm.bb42
-rw-r--r--packages/images/gpephone-image.bb42
-rw-r--r--packages/images/maemo-image.bb2
-rw-r--r--packages/images/nylon-image-base.bb5
-rw-r--r--packages/images/nylon-image-mini.bb8
-rw-r--r--packages/images/nylon-image-standard.bb16
-rw-r--r--packages/images/openmoko-devel-image.bb7
-rw-r--r--packages/images/openmoko-image.bb29
-rw-r--r--packages/images/openmoko-sdk-image.bb5
-rw-r--r--packages/images/openprotium-image.bb9
-rw-r--r--packages/images/opie-image.bb5
-rw-r--r--packages/images/pivotboot-image.bb3
-rw-r--r--packages/images/sectest-gpe-image.bb2
-rw-r--r--packages/images/slugos-image.bb151
-rw-r--r--packages/images/slugos-imagename.bb29
-rw-r--r--packages/images/unslung-image.bb33
-rw-r--r--packages/images/xfce-image.bb4
-rwxr-xr-xpackages/initscripts/initscripts-1.0/checkroot.sh14
-rw-r--r--packages/initscripts/initscripts-1.0/foonas/.mtn2git_empty0
-rwxr-xr-xpackages/initscripts/initscripts-1.0/foonas/checkroot.sh212
-rwxr-xr-xpackages/initscripts/initscripts-1.0/foonas/devices70
-rw-r--r--packages/initscripts/initscripts-1.0/foonas/domainname.sh5
-rwxr-xr-xpackages/initscripts/initscripts-1.0/foonas/halt27
-rwxr-xr-xpackages/initscripts/initscripts-1.0/foonas/reboot12
-rw-r--r--packages/initscripts/initscripts-1.0/jornada6xx/devices7
-rwxr-xr-xpackages/initscripts/initscripts-1.0/openzaurus/checkversion31
-rw-r--r--packages/initscripts/initscripts-1.0/oplinux-uclibc/.mtn2git_empty0
-rwxr-xr-xpackages/initscripts/initscripts-1.0/oplinux-uclibc/checkroot.sh (renamed from packages/initscripts/initscripts-1.0/angstrom/checkroot.sh)0
-rwxr-xr-xpackages/initscripts/initscripts-1.0/oplinux-uclibc/mountall.sh45
-rw-r--r--packages/initscripts/initscripts-1.0/oplinux/.mtn2git_empty0
-rwxr-xr-xpackages/initscripts/initscripts-1.0/oplinux/checkroot.sh201
-rwxr-xr-xpackages/initscripts/initscripts-1.0/populate-volatile.sh5
-rw-r--r--packages/initscripts/initscripts-1.0/volatiles4
-rw-r--r--packages/initscripts/initscripts_1.0.bb21
-rw-r--r--packages/intltool/intltool_0.35.0.bb4
-rw-r--r--packages/ipaq-boot-params/files/.mtn2git_empty0
-rw-r--r--packages/ipaq-boot-params/files/h5000/.mtn2git_empty0
-rw-r--r--packages/ipaq-boot-params/files/h5000/params1
-rw-r--r--packages/ipaq-boot-params/files/params (renamed from packages/ipaq-boot-params/params)0
-rw-r--r--packages/ipaq-boot-params/ipaq-boot-params.bb14
-rw-r--r--packages/ipkg-utils/ipkg-utils-native/ipkg-py-sane-vercompare.patch51
-rw-r--r--packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb5
-rw-r--r--packages/ipkg/files/is-processing.patch179
-rw-r--r--packages/ipkg/ipkg-0.99.153/fix-bug1393.patch19
-rw-r--r--packages/ipkg/ipkg-0.99.155/upgrade-message-garbage.patch14
-rw-r--r--packages/ipkg/ipkg-0.99.163/.mtn2git_empty0
-rw-r--r--packages/ipkg/ipkg-0.99.163/patch-ipkg-localfilename29
-rw-r--r--packages/ipkg/ipkg-collateral.bb5
-rw-r--r--packages/ipkg/ipkg-collateral/oplinux-uclibc/.mtn2git_empty0
-rw-r--r--packages/ipkg/ipkg-collateral/oplinux-uclibc/dest3
-rw-r--r--packages/ipkg/ipkg-collateral/oplinux/.mtn2git_empty0
-rw-r--r--packages/ipkg/ipkg-collateral/oplinux/dest3
-rw-r--r--packages/ipkg/ipkg-native_0.99.152.bb3
-rw-r--r--packages/ipkg/ipkg-native_0.99.153.bb3
-rw-r--r--packages/ipkg/ipkg-native_0.99.154.bb3
-rw-r--r--packages/ipkg/ipkg-native_0.99.159.bb3
-rw-r--r--packages/ipkg/ipkg_0.99.152.bb2
-rw-r--r--packages/ipkg/ipkg_0.99.153.bb8
-rw-r--r--packages/ipkg/ipkg_0.99.154.bb2
-rw-r--r--packages/ipkg/ipkg_0.99.155.bb3
-rw-r--r--packages/ipkg/ipkg_0.99.159.bb2
-rw-r--r--packages/ipkg/ipkg_0.99.163.bb6
-rw-r--r--packages/iproute2/iproute2-2.6.20/.mtn2git_empty0
-rw-r--r--packages/iproute2/iproute2-2.6.20/ip6tunnel.patch10
-rw-r--r--packages/iproute2/iproute2-2.6.20/man-pages-fix.patch13
-rw-r--r--packages/iproute2/iproute2-2.6.20/new-flex-fix.patch83
-rw-r--r--packages/iproute2/iproute2-2.6.20/no-strip.patch36
-rw-r--r--packages/iproute2/iproute2.inc14
-rw-r--r--packages/iproute2/iproute2_2.6.16.bb6
-rw-r--r--packages/iproute2/iproute2_2.6.18.bb6
-rw-r--r--packages/ipsec-tools/ipsec-tools_0.6.6.bb3
-rw-r--r--packages/iptables/files/.mtn2git_empty0
-rw-r--r--packages/iptables/files/compile.patch17
-rw-r--r--packages/iptables/iptables_1.2.9.bb5
-rw-r--r--packages/iptables/iptables_1.3.3.bb5
-rw-r--r--packages/iptstate/.mtn2git_empty0
-rw-r--r--packages/iptstate/iptstate_2.2.1.bb19
-rwxr-xr-xpackages/irda-utils/files/init55
-rw-r--r--packages/irda-utils/irda-utils_0.9.16.bb6
-rw-r--r--packages/irssi/irssi_0.8.10.bb4
-rw-r--r--packages/irssi/irssi_svn.bb4
-rw-r--r--packages/ixp425-eth/ixp400-eth_1.4.bb3
-rw-r--r--packages/ixp425-eth/ixp400-eth_1.5.1.bb3
-rw-r--r--packages/ixp425-eth/ixp400-eth_1.5.bb3
-rw-r--r--packages/ixp4xx/ixp-osal_2.0.bb2
-rw-r--r--packages/ixp4xx/ixp-osal_2.1.1.bb2
-rw-r--r--packages/ixp4xx/ixp-osal_2.1.bb2
-rw-r--r--packages/ixp4xx/ixp4xx-csr_2.0.bb2
-rw-r--r--packages/ixp4xx/ixp4xx-csr_2.1.1.bb2
-rw-r--r--packages/ixp4xx/ixp4xx-csr_2.1.bb2
-rw-r--r--packages/ixp4xx/ixp4xx-npe-native-2.3.2/.mtn2git_empty0
-rw-r--r--packages/ixp4xx/ixp4xx-npe-native-2.3.2/IxNpeMicrocode.h (renamed from packages/ixp4xx/ixp4xx-npe-native-2.3/IxNpeMicrocode.h)0
-rw-r--r--packages/ixp4xx/ixp4xx-npe-native_2.3.2.bb19
-rw-r--r--packages/ixp4xx/ixp4xx-npe-native_2.3.bb19
-rw-r--r--packages/ixp4xx/ixp4xx-npe_2.1.bb9
-rw-r--r--packages/ixp4xx/ixp4xx-npe_2.3.2.bb33
-rw-r--r--packages/ixp4xx/ixp4xx-npe_2.3.bb35
-rw-r--r--packages/jhead/jhead_2.6.0.bb5
-rw-r--r--packages/jpeg/jpeg-6b/libtool.patch49
-rw-r--r--packages/jpeg/jpeg_6b.bb11
-rw-r--r--packages/js/files/arm/.mtn2git_empty0
-rw-r--r--packages/js/files/arm/jsautocfg.h52
-rw-r--r--packages/js/files/powerpc/.mtn2git_empty0
-rw-r--r--packages/js/files/powerpc/jsautocfg.h (renamed from packages/mozilla/firefox-2.0/powerpc/jsautocfg.h)0
-rw-r--r--packages/js/js_1.5.bb16
-rw-r--r--packages/kakasi/.mtn2git_empty0
-rw-r--r--packages/kakasi/files/.mtn2git_empty0
-rw-r--r--packages/kakasi/files/makefile.patch11
-rw-r--r--packages/kakasi/kakasi-native_2.3.4.bb11
-rw-r--r--packages/kakasi/kakasi.inc9
-rw-r--r--packages/kakasi/kakasi_2.3.4.bb14
-rw-r--r--packages/kanjipad/.mtn2git_empty0
-rw-r--r--packages/kanjipad/files/.mtn2git_empty0
-rw-r--r--packages/kanjipad/files/Makefile-kpengine-only.patch38
-rw-r--r--packages/kanjipad/kanjipad.inc11
-rw-r--r--packages/kanjipad/kpengine_0.1.bb9
-rw-r--r--packages/kazehakase/.mtn2git_empty0
-rw-r--r--packages/kazehakase/kazehakase_0.4.5.bb11
-rw-r--r--packages/kdepimpi/files/qt-mt.patch41
-rw-r--r--packages/kdepimpi/kdepimpi_2.2.7.bb3
-rw-r--r--packages/kexec/kexec-tools-1.101/kexec-tools-arm.patch2
-rw-r--r--packages/kexec/kexec-tools_1.101.bb2
-rw-r--r--packages/keymaps/files/collie/keymap-2.6.map6
-rw-r--r--packages/keymaps/files/htcuniversal/.mtn2git_empty0
-rw-r--r--packages/keymaps/files/htcuniversal/keymap-2.6.map10
-rw-r--r--packages/keymaps/keymaps_1.0.bb5
-rw-r--r--packages/kismet/files/no-chmod.patch173
-rw-r--r--packages/kismet/kismet_2007-01-R1b.bb28
-rw-r--r--packages/lame/lame/Makefile-lm.patch22
-rw-r--r--packages/lame/lame_3.96.1.bb5
-rw-r--r--packages/lcdproc/lcdproc_0.5.1.bb124
-rw-r--r--packages/lftp/lftp_3.5.1.bb2
-rw-r--r--packages/libaal/libaal_1.0.4.bb2
-rw-r--r--packages/libdaemon/libdaemon_0.10.bb3
-rw-r--r--packages/libesmtp/libesmtp_1.0.4.bb3
-rw-r--r--packages/libeventdb/libeventdb_0.19.bb2
-rw-r--r--packages/libeventdb/libeventdb_0.21.bb2
-rw-r--r--packages/libeventdb/libeventdb_0.30.bb2
-rw-r--r--packages/libeventdb/libeventdb_svn.bb2
-rw-r--r--packages/libftdi/.mtn2git_empty0
-rw-r--r--packages/libftdi/files/.mtn2git_empty0
-rw-r--r--packages/libftdi/files/doxygen-configure.patch28
-rw-r--r--packages/libftdi/files/ftdi_eeprom-0.2-moko.patch16
-rw-r--r--packages/libftdi/ftdi-eeprom-native_0.2.bb9
-rw-r--r--packages/libftdi/ftdi-eeprom_0.2.bb13
-rw-r--r--packages/libftdi/libftdi-native_0.8.bb5
-rw-r--r--packages/libftdi/libftdi_0.8.bb17
-rw-r--r--packages/libg15/.mtn2git_empty0
-rw-r--r--packages/libg15/libg15_1.2.1.bb18
-rw-r--r--packages/libg15render/.mtn2git_empty0
-rw-r--r--packages/libg15render/libg15render_1.2.bb18
-rw-r--r--packages/libglade/libglade_2.4.2.bb2
-rw-r--r--packages/libglade/libglade_2.5.1.bb2
-rw-r--r--packages/libgpelaunch/libgpelaunch_svn.bb20
-rw-r--r--packages/libgpepimc/libgpepimc-hildon_0.5.bb2
-rw-r--r--packages/libgpepimc/libgpepimc.inc2
-rw-r--r--packages/libgpepimc/libgpepimc_svn.bb27
-rw-r--r--packages/libgpeplugin/libgpeplugin_cvs.bb21
-rw-r--r--packages/libgpeplugin/libgpeplugin_svn.bb21
-rw-r--r--packages/libgpevtype/libgpevtype_0.15.bb2
-rw-r--r--packages/libgpevtype/libgpevtype_0.16.bb13
-rw-r--r--packages/libgpevtype/libgpevtype_0.17.bb9
-rw-r--r--packages/libgpevtype/libgpevtype_svn.bb30
-rw-r--r--packages/libgpewidget/libgpewidget-hildon_0.102.bb2
-rw-r--r--packages/libgpewidget/libgpewidget_0.114.bb2
-rw-r--r--packages/libgpewidget/libgpewidget_0.115.bb22
-rw-r--r--packages/libgpewidget/libgpewidget_svn.bb6
-rw-r--r--packages/libgpg-error/libgpg-error-1.4/.mtn2git_empty0
-rw-r--r--packages/libgpg-error/libgpg-error-1.4/pkgconfig.patch54
-rw-r--r--packages/libgpg-error/libgpg-error_1.4.bb29
-rw-r--r--packages/libgtkinput/libgtkinput_svn.bb18
-rw-r--r--packages/libgtkstylus/libgtkstylus_svn.bb21
-rw-r--r--packages/libhandoff/libhandoff_cvs.bb18
-rw-r--r--packages/libhandoff/libhandoff_svn.bb18
-rw-r--r--packages/libidl/libidl_0.8.2.bb2
-rw-r--r--packages/libidl/libidl_0.8.3.bb4
-rw-r--r--packages/libidl/libidl_0.8.6.bb4
-rw-r--r--packages/libloki/.mtn2git_empty0
-rw-r--r--packages/libmailwrapper/libmailwrapper.inc2
-rw-r--r--packages/libmailwrapper/libmailwrapper_1.2.2.bb1
-rw-r--r--packages/libmailwrapper/libmailwrapper_cvs.bb1
-rw-r--r--packages/libmimedir/files/libmimedir-0.4.0-duration-wkst.patch258
-rw-r--r--packages/libmimedir/libmimedir_0.4.0-20060804.bb27
-rw-r--r--packages/libmimedir/libmimedir_cvs.bb28
-rw-r--r--packages/libmimedir/libmimedir_svn.bb27
-rw-r--r--packages/libmpeg2/libmpeg2_0.4.0b.bb15
-rw-r--r--packages/libmrss/.mtn2git_empty0
-rw-r--r--packages/libmrss/files/.mtn2git_empty0
-rw-r--r--packages/libmrss/files/atom-right-date.patch15
-rw-r--r--packages/libmrss/libmrss_0.17.1.bb15
-rw-r--r--packages/libnet/libnet-1.0.2a/configure_x86-64-host.patch11
-rw-r--r--packages/libnet/libnet_1.0.2a.bb6
-rw-r--r--packages/libnet/libnet_1.1.2.1.bb3
-rw-r--r--packages/libnl/files/fix-helpers.patch49
-rw-r--r--packages/libnl/files/libnl-0.5.0-include.diff10
-rw-r--r--packages/libnl/libnl_0.5.0.bb11
-rw-r--r--packages/libnotify/libnotify_0.4.3.bb (renamed from packages/libnotify/libnotify_0.3.2.bb)0
-rw-r--r--packages/libnotify/libnotify_0.4.4.bb13
-rw-r--r--packages/libnss-mdns/libnss-mdns_0.8.bb33
-rw-r--r--packages/libnss-mdns/libnss-mdns_0.9.bb33
-rw-r--r--packages/libnxml/.mtn2git_empty0
-rw-r--r--packages/libnxml/libnxml_0.16.bb14
-rw-r--r--packages/liboil/liboil_0.3.11.bb11
-rw-r--r--packages/libol/libol_0.3.18.bb7
-rw-r--r--packages/libopie/libopie2.inc26
-rw-r--r--packages/libopie/libopie2/exports.patch11
-rw-r--r--packages/libopie/libopie2/ipaq-lcd-rotate-cleanup.patch39
-rw-r--r--packages/libopie/libopie2/wireless.patch12
-rw-r--r--packages/libopie/libopie2_1.2.2.bb2
-rw-r--r--packages/libopie/libopie2_cvs.bb11
-rw-r--r--packages/libpcre/libpcre_4.4.bb4
-rw-r--r--packages/libqpe/libqpe-opie.inc10
-rw-r--r--packages/libqpe/libqpe-opie/save-windows-pos-dynamic.patch113
-rw-r--r--packages/libqpe/libqpe-opie/unbreak-logging.patch21
-rw-r--r--packages/libqpe/libqpe-opie_1.2.2.bb3
-rw-r--r--packages/libqpe/libqpe-opie_cvs.bb9
-rw-r--r--packages/librcf/librcf_0.4.bb2
-rw-r--r--packages/librsvg/librsvg_2.16.0.bb3
-rw-r--r--packages/librsvg/librsvg_2.16.1.bb25
-rw-r--r--packages/libschedule/libschedule_svn.bb19
-rw-r--r--packages/libsdl/files/directfb_obsolete_calls.patch33
-rw-r--r--packages/libsdl/libsdl-directfb_1.2.9.bb60
-rw-r--r--packages/libsdl/libsdl-qpe-1.2.9/.mtn2git_empty0
-rw-r--r--packages/libsdl/libsdl-qpe-1.2.9/SDL-Akita-1.2.9.patch51
-rw-r--r--packages/libsdl/libsdl-qpe-1.2.9/acinclude.m4332
-rw-r--r--packages/libsdl/libsdl-qpe-1.2.9/agawa-piro-mickey-1.2.9.patch2054
-rw-r--r--packages/libsdl/libsdl-qpe-1.2.9/fixlibs-1.2.9.patch27
-rw-r--r--packages/libsdl/libsdl-qpe-1.2.9/ipaq-1.2.9.patch140
-rw-r--r--packages/libsdl/libsdl-qpe-1.2.9/kill-stdc++-1.2.9.patch422
-rw-r--r--packages/libsdl/libsdl-qpe-1.2.9/mouse-1.2.9.patch48
-rw-r--r--packages/libsdl/libsdl-qpe-1.2.9/pygame-1.2.9.patch191
-rw-r--r--packages/libsdl/libsdl-qpe_1.2.9.bb67
-rw-r--r--packages/libsexy/libsexy.inc16
-rw-r--r--packages/libsexy/libsexy_0.1.10.bb2
-rw-r--r--packages/libsexy/libsexy_0.1.11.bb2
-rw-r--r--packages/libsexy/libsexy_0.1.4.bb16
-rw-r--r--packages/libsexy/libsexy_0.1.5.bb16
-rw-r--r--packages/libsexy/libsexy_0.1.6.bb16
-rw-r--r--packages/libsexy/libsexy_0.1.8.bb17
-rw-r--r--packages/libsndfile/libsndfile1_1.0.16.bb6
-rw-r--r--packages/libsoundgen/libsoundgen_0.3.bb2
-rw-r--r--packages/libtododb/libtododb_svn.bb29
-rw-r--r--packages/libtool/libtool-1.5.22/.mtn2git_empty0
-rw-r--r--packages/libtool/libtool-1.5.22/autotools.patch127
-rw-r--r--packages/libtool/libtool-1.5.22/install-path-check.patch25
-rw-r--r--packages/libtool/libtool-1.5.22/libdir-la.patch52
-rw-r--r--packages/libtool/libtool-1.5.22/prefix.patch44
-rw-r--r--packages/libtool/libtool-1.5.22/sedvar.patch16
-rw-r--r--packages/libtool/libtool-1.5.22/tag.patch19
-rw-r--r--packages/libtool/libtool-1.5.22/tag1.patch13
-rw-r--r--packages/libtool/libtool-1.5.22/uclibc.patch19
-rw-r--r--packages/libtool/libtool-cross_1.5.22.bb30
-rw-r--r--packages/libtool/libtool-native_1.5.22.bb44
-rw-r--r--packages/libtool/libtool_1.5.22.bb37
-rw-r--r--packages/libusb/libusb_0.1.12.bb14
-rw-r--r--packages/libwpd/libwpd_0.8.4.bb2
-rw-r--r--packages/libwpd/libwpd_0.8.6.bb2
-rw-r--r--packages/libxfce4mcs/libxfce4mcs_4.3.99.2.bb (renamed from packages/libxfce4mcs/libxfce4mcs_4.2.2.bb)0
-rw-r--r--packages/libxfce4util/libxfce4util.inc31
-rw-r--r--packages/libxfce4util/libxfce4util_4.2.2.bb7
-rw-r--r--packages/libxfce4util/libxfce4util_4.3.99.2.bb22
-rw-r--r--packages/libxfcegui4/libxfcegui4_4.3.99.2.bb (renamed from packages/libxfcegui4/libxfcegui4_4.2.3.bb)0
-rw-r--r--packages/libxine/libxine-x11_1.0.bb2
-rw-r--r--packages/libxine/libxine_1.1.0.bb2
-rw-r--r--packages/libxml/libxml2-native_2.6.26.bb21
-rw-r--r--packages/libxml/libxml2-native_2.6.9.bb2
-rw-r--r--packages/libxml/libxml2_2.6.26.bb5
-rw-r--r--packages/libxsettings-client/libxsettings-client_svn.bb26
-rw-r--r--packages/libxsettings/files/.mtn2git_empty0
-rw-r--r--packages/libxsettings/files/Makefile.dpkg_ipkg114
-rw-r--r--packages/libxsettings/files/Makefile.translation107
-rw-r--r--packages/libxsettings/files/libxsettings-svn-makefile-fix.patch20
-rw-r--r--packages/libxsettings/libxsettings_svn.bb32
-rw-r--r--packages/libxslt/files/.mtn2git_empty0
-rw-r--r--packages/libxslt/files/destdir.patch (renamed from packages/libxslt/libxslt-1.1.17/destdir.patch)0
-rw-r--r--packages/libxslt/libxslt-native_1.1.17.bb4
-rw-r--r--packages/libxslt/libxslt_1.1.17.bb3
-rw-r--r--packages/lighttpd/1.4.13/configure.in.patch28
-rw-r--r--packages/lighttpd/lighttpd/.mtn2git_empty0
-rw-r--r--packages/lighttpd/lighttpd/configure.in.patch34
-rw-r--r--packages/lighttpd/lighttpd/index.html1
-rw-r--r--packages/lighttpd/lighttpd/lighttpd35
-rw-r--r--packages/lighttpd/lighttpd/lighttpd.conf328
-rw-r--r--packages/lighttpd/lighttpd/src-server.c.patch (renamed from packages/lighttpd/1.4.13/src-server.c.patch)0
-rw-r--r--packages/lighttpd/lighttpd_1.4.13.bb31
-rw-r--r--packages/links/links-x11_2.0+2.1pre26.bb3
-rw-r--r--packages/links/links_2.0+2.1pre26.bb4
-rw-r--r--packages/linphone/linphone_1.6.0.bb69
-rw-r--r--packages/linux-input/files/serio.h1
-rw-r--r--packages/linux-input/files/snes232.patch20
-rw-r--r--packages/linux-libc-headers/linux-libc-headers-2.6.20/.mtn2git_empty0
-rw-r--r--packages/linux-libc-headers/linux-libc-headers-2.6.20/procinfo.h24
-rw-r--r--packages/linux-libc-headers/linux-libc-headers.inc3
-rw-r--r--packages/linux-libc-headers/linux-libc-headers_2.6.11.1.bb5
-rw-r--r--packages/linux-libc-headers/linux-libc-headers_2.6.15.99.bb5
-rw-r--r--packages/linux-libc-headers/linux-libc-headers_2.6.18+2.6.19-rc1.bb14
-rw-r--r--packages/linux-libc-headers/linux-libc-headers_2.6.18.bb19
-rw-r--r--packages/linux-libc-headers/linux-libc-headers_2.6.20.bb71
-rw-r--r--packages/linux-libc-headers/linux-libc-headers_2.6.7.0.bb5
-rw-r--r--packages/linux-libc-headers/linux-libc-headers_2.6.8.1.bb5
-rw-r--r--packages/linux/collie-kernels-2.4-embedix.bb2
-rw-r--r--packages/linux/compulab-pxa270-2.6.20/.mtn2git_empty0
-rw-r--r--packages/linux/compulab-pxa270-2.6.20/0001-gitignore.patch31
-rw-r--r--packages/linux/compulab-pxa270-2.6.20/0002-cm-x270-base.patch2161
-rw-r--r--packages/linux/compulab-pxa270-2.6.20/0003-ramdisk_load.patch38
-rw-r--r--packages/linux/compulab-pxa270-2.6.20/0004-nand-driver.patch324
-rw-r--r--packages/linux/compulab-pxa270-2.6.20/0005-mmcsd_large_cards-r0.patch41
-rw-r--r--packages/linux/compulab-pxa270-2.6.20/0006-mmcsd_no_scr_check-r0.patch35
-rw-r--r--packages/linux/compulab-pxa270-2.6.20/defconfig1188
-rw-r--r--packages/linux/compulab-pxa270_2.6.16.bb37
-rw-r--r--packages/linux/compulab-pxa270_2.6.20.bb61
-rw-r--r--packages/linux/devkitidp-pxa255-2.6.19/.mtn2git_empty0
-rw-r--r--packages/linux/devkitidp-pxa255-2.6.19/defconfig1156
-rw-r--r--packages/linux/devkitidp-pxa255-2.6.19/linux-2.6.19_devkitidp1.patch1586
-rw-r--r--packages/linux/devkitidp-pxa255-kernel_2.6.11.bb40
-rw-r--r--packages/linux/devkitidp-pxa255_2.6.19.bb39
-rw-r--r--packages/linux/ep93xx-kernel/dynamic-phys-offset-2.6.20-rc7.diff199
-rw-r--r--packages/linux/ep93xx-kernel_2.6.19+2.6.20-rc7.bb57
-rw-r--r--packages/linux/gta01-kernel_2.6.bb1
-rw-r--r--packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.1/defconfig-ipaqpxa1578
-rw-r--r--packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.4/defconfig-h39001578
-rw-r--r--packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.4/mmc_h5400.patch20
-rw-r--r--packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.5/defconfig-h39001447
-rw-r--r--packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.6/defconfig-h39001468
-rw-r--r--packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh39/defconfig-h39001488
-rw-r--r--packages/linux/handhelds-pxa_2.4.19-rmk6-pxa1-hh40.bb71
-rw-r--r--packages/linux/handhelds-pxa_2.4.19-rmk6-pxa1-hh41.1.bb77
-rw-r--r--packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/defconfig-ipaqsa1505
-rw-r--r--packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/disable-pcmcia-probe.patch17
-rw-r--r--packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/ipsec.patch1446
-rw-r--r--packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/mkdep.patch16
-rw-r--r--packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.1/defconfig-ipaqsa1508
-rw-r--r--packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.4/defconfig-h36001464
-rw-r--r--packages/linux/handhelds-sa_2.4.19-rmk6-pxa1-hh36.12.bb58
-rw-r--r--packages/linux/handhelds-sa_2.4.19-rmk6-pxa1-hh37.1.bb57
-rw-r--r--packages/linux/handhelds-sa_2.4.19-rmk6-pxa1-hh37.4.bb55
-rw-r--r--packages/linux/ixp4xx-kernel-svnpatch.inc7
-rw-r--r--packages/linux/ixp4xx-kernel.inc130
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.19/.mtn2git_empty0
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.19/defconfig1950
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.19/series47
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.20/.mtn2git_empty0
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.20/defconfig2031
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.20/series43
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.21/.mtn2git_empty0
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.21/defconfig2063
-rw-r--r--packages/linux/ixp4xx-kernel_2.6.19.bb5
-rw-r--r--packages/linux/ixp4xx-kernel_2.6.20.bb24
-rw-r--r--packages/linux/ixp4xx-kernel_2.6.21.bb24
-rw-r--r--packages/linux/linux-dht-walnut-2.6.20/.mtn2git_empty0
-rw-r--r--packages/linux/linux-dht-walnut-2.6.20/dht-walnut_defconfig2311
-rw-r--r--packages/linux/linux-dht-walnut-2.6.20/remove-todc.patch920
-rw-r--r--packages/linux/linux-dht-walnut_2.6.20.bb72
-rw-r--r--packages/linux/linux-efika-2.6.20.11/.mtn2git_empty0
-rw-r--r--packages/linux/linux-efika-2.6.20.11/sched-cfs-v9-v2.6.20.11.patch5590
-rw-r--r--packages/linux/linux-efika-2.6.20/.mtn2git_empty0
-rw-r--r--packages/linux/linux-efika-2.6.20/0001-powerpc-serial-Dispose-irq-mapping-when-done-in-mpc52xx_serial.c.txt27
-rw-r--r--packages/linux/linux-efika-2.6.20/0003-powerpc-Add-device-tree-fixups-for-the-EFIKA.txt110
-rw-r--r--packages/linux/linux-efika-2.6.20/0004-powerpc-Use-common-52xx-of_platform-probe-code-for-EFIKA.txt106
-rw-r--r--packages/linux/linux-efika-2.6.20/0005-powerpc-Restore-proper-link-order-in-platform.txt33
-rw-r--r--packages/linux/linux-efika-2.6.20/0006-Rework-the-OHCI-quirk-mecanism-as-suggested-by-David.txt236
-rw-r--r--packages/linux/linux-efika-2.6.20/0007-Implement-support-for-split-endian-OHCI.txt367
-rw-r--r--packages/linux/linux-efika-2.6.20/0008-ohci-Rework-bus-glue-integration-to-allow-several-at-once.txt470
-rw-r--r--packages/linux/linux-efika-2.6.20/0009-ohci-Add-support-for-OHCI-controller-on-the-of_platform-bus.txt349
-rw-r--r--packages/linux/linux-efika-2.6.20/0010-libata-Add-support-for-the-MPC52xx-ATA-controller.txt620
-rw-r--r--packages/linux/linux-efika-2.6.20/0011-ohci-Whitespace-and-typo-fix-in-ohci-ppc-of.c.txt38
-rw-r--r--packages/linux/linux-efika-2.6.20/0012-ata-Fix-pata_mpc52xx.c-compatible-list.txt31
-rw-r--r--packages/linux/linux-efika-2.6.20/0013-powerpc-serial-Fix-mpc52xx_uart.c-compatible-list.txt28
-rw-r--r--packages/linux/linux-efika-2.6.20/0014-powerpc-Small-cleanup-of-EFIKA-platform.txt144
-rw-r--r--packages/linux/linux-efika-2.6.20/0015-powerpc-Add-a-unified-uevent-handler-for-bus-based-on-of_device.txt116
-rw-r--r--packages/linux/linux-efika-2.6.20/0016-macintosh-Use-the-new-of_device-common-uevent-handler.txt130
-rw-r--r--packages/linux/linux-efika-2.6.20/0017-powerpc-Add-uevent-handler-for-of_platform_bus.txt29
-rw-r--r--packages/linux/linux-efika-2.6.20/0018-powerpc-Add-uevent-handler-for-ibmebus.txt50
-rw-r--r--packages/linux/linux-efika-2.6.20/0019-MPC5200-Bestcomm-platform-driver.txt1439
-rw-r--r--packages/linux/linux-efika-2.6.20/0020-Fec-MPC5200-eth-driver.txt1783
-rw-r--r--packages/linux/linux-efika-2.6.20/0021-POWERPC-Copy-bestcomm-support-files-into-arch-powerpc.txt1335
-rw-r--r--packages/linux/linux-efika-2.6.20/0022-MPC52xx-PCI-now-working-on-lite5200.-ugly-but-working.txt464
-rw-r--r--packages/linux/linux-efika-2.6.20/0023-POWERPC-Make-FEC-work-on-the-lite5200.txt700
-rw-r--r--packages/linux/linux-efika-2.6.20/0024-Add-missing-function-prototype.txt26
-rw-r--r--packages/linux/linux-efika-2.6.20/0025-POWERPC-Misc-EFIKA-fixups-for-rtas-chrp.txt133
-rw-r--r--packages/linux/linux-efika-2.6.20/0026-POWERPC-Cleanup-mpc52xx-PCI-support.txt911
-rw-r--r--packages/linux/linux-efika-2.6.20/0027-POWERPC-Change-name-of-mpc52xx-pci-support-file-in-Makefile.txt28
-rw-r--r--packages/linux/linux-efika-2.6.20/0028-POWERPC-Change-link-order-so-mpc52xx-fec-always-shows-up-as-eth0.txt47
-rw-r--r--packages/linux/linux-efika-2.6.20/0029-POWERPC-Fixup-pr_print-format-for-mpc52xx-pci-support.txt28
-rw-r--r--packages/linux/linux-efika-2.6.20/0030-POWERPC-Add-mpc52xx-lite5200-PCI-support.txt871
-rw-r--r--packages/linux/linux-efika-2.6.20/0031-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt828
-rw-r--r--packages/linux/linux-efika-2.6.20/0032-POWERPC-EFIKA-Adds-missing-interrupts-from-bestcomm-node.txt36
-rw-r--r--packages/linux/linux-efika-2.6.20/0033-EFIKA-fullduplex-prpl_aln.txt27
-rw-r--r--packages/linux/linux-efika-2.6.20/defconfig1621
-rw-r--r--packages/linux/linux-efika-2.6.20/v4l.diff28
-rw-r--r--packages/linux/linux-efika/0001-powerpc-Add-device-tree-fixup-for-the-EFIKA.txt99
-rw-r--r--packages/linux/linux-efika/0001-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt834
-rw-r--r--packages/linux/linux-efika/defconfig9
-rw-r--r--packages/linux/linux-efika_2.6.18+2.6.19-rc6.bb8
-rw-r--r--packages/linux/linux-efika_2.6.20.11.bb86
-rw-r--r--packages/linux/linux-efika_2.6.20.bb83
-rw-r--r--packages/linux/linux-epia-2.6.19.2/.mtn2git_empty0
-rw-r--r--packages/linux/linux-epia-2.6.19.2/epia_defconfig1875
-rw-r--r--packages/linux/linux-epia_2.6.19.2.bb27
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/.mtn2git_empty0
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/defconfig-a7801249
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/ezx-core.patch1120
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/ezx-emu.patch332
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/ezx-fix-usb_pxa27x_udc-r3.patch16
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/ezx-mci.patch177
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/ezx-mtd-map.patch274
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/ezx-pcap.patch1197
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/ezx-serial-bug-workaround.patch45
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux-fix-init-errorpath.patch20
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux-fix-makefile.patch14
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux-fix-tty-driver.patch125
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux-fix.patch164
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux-ifdef-ezx-features.patch85
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux-linux-2.6.20.7-fix.patch96
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux-remove-flipbuffers.patch269
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux-remove-get_halted_bit.patch22
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux-remove-usbh_finished_resume.patch22
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux_cli.patch5395
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux_debug.patch551
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/usb_add_epalloc-r3.patch282
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/usb_pxa27x_udc-r3.patch2868
-rw-r--r--packages/linux/linux-ezx-2.6.21/.mtn2git_empty0
-rw-r--r--packages/linux/linux-ezx-2.6.21/defconfig-a7801253
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-core.patch1116
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-emu.patch315
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-kbd.patch139
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-mci.patch177
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-mtd-map.patch274
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-pcap.patch1211
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-pm.patch58
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-serial-bug-workaround.patch45
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-ts.patch399
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-fix-init-errorpath.patch20
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-fix-makefile.patch14
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-fix-tty-driver.patch125
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-fix.patch164
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-ifdef-ezx-features.patch86
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch224
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch297
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-remove-flipbuffers.patch269
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-remove-get_halted_bit.patch22
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-remove-usbh_finished_resume.patch22
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux_cli.patch5395
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux_debug.patch551
-rw-r--r--packages/linux/linux-ezx-2.6.21/pcap-ts.patch450
-rw-r--r--packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch237
-rw-r--r--packages/linux/linux-ezx-2.6.21/pxa-kbd.patch463
-rw-r--r--packages/linux/linux-ezx-2.6.21/pxa27x-udc-support.2.patch3037
-rw-r--r--packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch21
-rw-r--r--packages/linux/linux-ezx-2.6.21/wyrm-ts.diff124
-rw-r--r--packages/linux/linux-ezx/defconfig-a78029
-rw-r--r--packages/linux/linux-ezx/defconfig-rokr-e2904
-rw-r--r--packages/linux/linux-ezx/wyrm-ts.diff119
-rw-r--r--packages/linux/linux-ezx_2.6.16.13.bb14
-rw-r--r--packages/linux/linux-ezx_2.6.19+2.6.20-rc2.bb125
-rw-r--r--packages/linux/linux-ezx_2.6.20.7.bb125
-rw-r--r--packages/linux/linux-ezx_2.6.21.bb127
-rw-r--r--packages/linux/linux-gta01.inc95
-rw-r--r--packages/linux/linux-gta01/.mtn2git_empty0
-rw-r--r--packages/linux/linux-gta01/defconfig-2.6.20-fic-gta011781
-rw-r--r--packages/linux/linux-gta01/defconfig-2.6.21.1-fic-gta011837
-rw-r--r--packages/linux/linux-gta01/defconfig-fic-gta011621
-rw-r--r--packages/linux/linux-gta01/udc-nomodule-misccr.patch22
-rw-r--r--packages/linux/linux-gta01_2.6.17.14.bb101
-rw-r--r--packages/linux/linux-gta01_2.6.17.7.bb97
-rw-r--r--packages/linux/linux-gta01_2.6.20.bb102
-rw-r--r--packages/linux/linux-gta01_2.6.21.1.bb10
-rw-r--r--packages/linux/linux-hackndev-2.6/.mtn2git_empty0
-rw-r--r--packages/linux/linux-hackndev-2.6/palmld/.mtn2git_empty0
-rw-r--r--packages/linux/linux-hackndev-2.6/palmld/defconfig1300
-rw-r--r--packages/linux/linux-hackndev-2.6/palmtt3/.mtn2git_empty0
-rw-r--r--packages/linux/linux-hackndev-2.6/palmtt3/defconfig1383
-rw-r--r--packages/linux/linux-hackndev-2.6/palmtx/.mtn2git_empty0
-rw-r--r--packages/linux/linux-hackndev-2.6/palmtx/busybox-config571
-rw-r--r--packages/linux/linux-hackndev-2.6/palmtx/defconfig1221
-rwxr-xr-xpackages/linux/linux-hackndev-2.6/palmtx/init195
-rw-r--r--packages/linux/linux-hackndev-2.6/palmtx/initramfs_list243
-rw-r--r--packages/linux/linux-hackndev-2.6/palmz72/.mtn2git_empty0
-rw-r--r--packages/linux/linux-hackndev-2.6/palmz72/defconfig1121
-rw-r--r--packages/linux/linux-hackndev-2.6_svn.bb84
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.16/h1910/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.16/h1910/defconfig1201
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.16/htcuniversal/defconfig2
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.17/htcuniversal/defconfig2
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.18/htcuniversal/defconfig2
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/aximx50/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/aximx50/defconfig1495
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/h2200/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/h2200/defconfig1645
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/h3600/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/h3600/defconfig1101
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/h3900/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/h3900/defconfig1116
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/h4000/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/h4000/defconfig1150
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/htcblueangel/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/htcblueangel/defconfig1501
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/htcuniversal/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/htcuniversal/defconfig1447
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/hx4700/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/hx4700/defconfig1842
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/magician/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/magician/defconfig1524
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/rx3000/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.19/rx3000/defconfig1341
-rw-r--r--packages/linux/linux-handhelds-2.6.inc9
-rw-r--r--packages/linux/linux-handhelds-2.6/aximx50/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6/aximx50/defconfig1495
-rw-r--r--packages/linux/linux-handhelds-2.6/h3900/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6/h3900/defconfig1260
-rw-r--r--packages/linux/linux-handhelds-2.6/h4000/defconfig609
-rw-r--r--packages/linux/linux-handhelds-2.6/h5000/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6/h5000/defconfig1252
-rw-r--r--packages/linux/linux-handhelds-2.6/htcuniversal/defconfig426
-rw-r--r--packages/linux/linux-handhelds-2.6/hx4700/defconfig87
-rw-r--r--packages/linux/linux-handhelds-2.6/hx4700/defconfig.main1811
-rw-r--r--packages/linux/linux-handhelds-2.6/hx4700/defconfig.old1765
-rw-r--r--packages/linux/linux-handhelds-2.6/magician/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6/magician/defconfig1556
-rw-r--r--packages/linux/linux-handhelds-2.6/rx3000/defconfig217
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.16-hh7.bb15
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.16-hh8.bb16
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.16-hh9.bb13
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.17-hh2.bb17
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.17-hh4.bb (renamed from packages/linux/linux-handhelds-2.6_2.6.17-hh3.bb)0
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.18-hh1.bb15
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.19-hh11.bb15
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.19-hh13.bb15
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.20-hh4.bb (renamed from packages/linux/linux-handhelds-2.6_2.6.19-hh5.bb)0
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.20-hh5.bb (renamed from packages/linux/linux-handhelds-2.6_2.6.19-hh7.bb)0
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.20-hh6.bb11
-rw-r--r--packages/linux/linux-handhelds-2.6_cvs.bb6
-rw-r--r--packages/linux/linux-jlime-jornada6xx-2.6.17/keyboard-fix-deadkeys.patch204
-rw-r--r--packages/linux/linux-jlime-jornada6xx-2.6.21rc5/.mtn2git_empty0
-rw-r--r--packages/linux/linux-jlime-jornada6xx-2.6.21rc5/defconfig1245
-rw-r--r--packages/linux/linux-jlime-jornada6xx-2.6.21rc5/git-20070405-2.patch1058
-rw-r--r--packages/linux/linux-jlime-jornada6xx-2.6.21rc5/hp6xx-IRQ3.patch4
-rw-r--r--packages/linux/linux-jlime-jornada6xx_2.6.17.bb3
-rw-r--r--packages/linux/linux-jlime-jornada6xx_2.6.21rc5.bb33
-rw-r--r--packages/linux/linux-jlime-jornada7xx_2.6.19rc6.bb1
-rw-r--r--packages/linux/linux-linkstationarm/.mtn2git_empty0
-rw-r--r--packages/linux/linux-linkstationarm/defconfig1123
-rw-r--r--packages/linux/linux-linkstationarm/makefile.patch11
-rw-r--r--packages/linux/linux-linkstationarm_2.6.12.bb35
-rw-r--r--packages/linux/linux-linkstationppc/.mtn2git_empty0
-rw-r--r--packages/linux/linux-linkstationppc/defconfig1981
-rw-r--r--packages/linux/linux-linkstationppc_2.6.21-rc5.bb42
-rw-r--r--packages/linux/linux-magicbox-2.6.18.6/.mtn2git_empty0
-rw-r--r--packages/linux/linux-magicbox-2.6.18.6/000-fix-makefile.patch12
-rw-r--r--packages/linux/linux-magicbox-2.6.18.6/001-magicbox-board-2.6.18.patch381
-rw-r--r--packages/linux/linux-magicbox-2.6.18.6/002-magicbox-mtd-map-2.6.18.patch136
-rw-r--r--packages/linux/linux-magicbox-2.6.18.6/010-load-ramdisk-even-if-rootdev-equals-ramdisk.patch16
-rw-r--r--packages/linux/linux-magicbox-2.6.18.6/config-2.6.18-magicbox21204
-rw-r--r--packages/linux/linux-magicbox-2.6.18.6/kernel-2.6.18-layer7-2.6.patch2051
-rw-r--r--packages/linux/linux-magicbox-2.6.18.6/magicbox2-ide-cf_2.6.18.patch221
-rw-r--r--packages/linux/linux-magicbox-2.6.18.6/squashfs-lzma-support.patch890
-rw-r--r--packages/linux/linux-magicbox-2.6.18.6/squashfs3.1-patch4227
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/.mtn2git_empty0
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/001-magicbox_support.patch372
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/001-squashfs.patch4170
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/002-flash_map.patch147
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/002-lzma_decompress.patch780
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/003-squashfs_lzma.patch109
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/004-extra_optimization.patch13
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/006-gcc4_inline_fix.patch12
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/007-samsung_flash.patch37
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/009-revert_intel_flash_breakage.patch169
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/010-disable_old_squashfs_compatibility.patch21
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/011-mips_boot.patch14
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/012-mips_cpu_tlb.patch20
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/050-mtdpart_redboot_partition_truncate.patch61
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/060-rootfs_split.patch414
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/065-block2mtd_init.patch112
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/100-cf_slot.patch2306
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/100-netfilter_layer7_2.8.patch2053
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/101-netfilter_layer7_pktmatch.patch108
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/110-ipp2p_0.8.1rc1.patch948
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/120-openswan-2.4.0.kernel-2.6-natt.patch171
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/130-netfilter-ipset.patch5851
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/140-netfilter_time.patch241
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/150-netfilter_imq.patch892
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/160-netfilter_route.patch902
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/170-netfilter_chaostables.patch880
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/200-sched_esfq.patch730
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/201-multiple_default_gateways.patch1243
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/202-mips-freestanding.patch13
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/204-jffs2_eofdetect.patch58
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/207-powerpc_asm_segment_h.patch10
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/208-rtl8110sb_fix.patch25
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/209-mini_fo.patch7807
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/210-d80211_compat.patch11
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/211-no_block2mtd_readahead.patch11
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/212-block2mtd_erase_scan.patch11
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/510-Yaffs.patch13085
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/600-x86_lzma.patch1167
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/700-airprime.patch12
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/900-headers_type_and_time.patch48
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/901-asm_bitops_include.patch11
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/902-darwin_scripts_include.patch145
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/903-stddef_include.patch17
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/904-ls_time_locale.patch24
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/config-magicbox21619
-rw-r--r--packages/linux/linux-magicbox_2.6.18.6.bb79
-rw-r--r--packages/linux/linux-magicbox_2.6.19.2.bb114
-rw-r--r--packages/linux/linux-mtx-1-2.4.27/48-pptp.patch5092
-rw-r--r--packages/linux/linux-mtx-1_2.4.27.bb1
-rw-r--r--packages/linux/linux-mtx-2-2.4.27/45-acm-tty-and-sb2.patch721
-rw-r--r--packages/linux/linux-mtx-2-2.4.27/45-acm-tty.patch252
-rw-r--r--packages/linux/linux-mtx-2_2.4.27.bb2
-rw-r--r--packages/linux/linux-mtx-3_2.6.15.4.bb2
-rw-r--r--packages/linux/linux-netvista-2.4.27/netvista_defconfig1309
-rw-r--r--packages/linux/linux-netvista_2.4.27.bb25
-rw-r--r--packages/linux/linux-nokia770_2.6.16-osso26.bb2
-rw-r--r--packages/linux/linux-nokia800-2.6.18-osso29/.mtn2git_empty0
-rw-r--r--packages/linux/linux-nokia800-2.6.18-osso29/nokia770/.mtn2git_empty0
-rw-r--r--packages/linux/linux-nokia800-2.6.18-osso29/nokia800/.mtn2git_empty0
-rw-r--r--packages/linux/linux-nokia800.inc40
-rw-r--r--packages/linux/linux-nokia800_2.6.18-osso29.bb9
-rw-r--r--packages/linux/linux-omap1-2.6.18-omap1/defconfig1
-rw-r--r--packages/linux/linux-omap1-2.6.19-omap1/i2c-fix.patch56
-rw-r--r--packages/linux/linux-omap1-2.6.20-omap1/.mtn2git_empty0
-rw-r--r--packages/linux/linux-omap1-2.6.20-omap1/defconfig1301
-rw-r--r--packages/linux/linux-omap1-2.6.20-omap1/defconfig.eabi1320
-rw-r--r--packages/linux/linux-omap1.inc4
-rw-r--r--packages/linux/linux-omap1_2.6.12-rc2.bb2
-rw-r--r--packages/linux/linux-omap1_2.6.18+git.bb2
-rw-r--r--packages/linux/linux-omap1_2.6.18-omap1.bb2
-rw-r--r--packages/linux/linux-omap1_2.6.19-omap1.bb5
-rw-r--r--packages/linux/linux-omap1_2.6.20-omap1.bb8
-rw-r--r--packages/linux/linux-omap1_2.6.x+git.bb2
-rw-r--r--packages/linux/linux-rp-2.6.18/add-oz-release-string.patch23
-rw-r--r--packages/linux/linux-rp-2.6.18/collie-mcp-r1.patch16
-rw-r--r--packages/linux/linux-rp-2.6.18/defconfig-akita1565
-rw-r--r--packages/linux/linux-rp-2.6.18/defconfig-c7x01598
-rw-r--r--packages/linux/linux-rp-2.6.18/defconfig-collie1302
-rw-r--r--packages/linux/linux-rp-2.6.18/defconfig-hx20001025
-rw-r--r--packages/linux/linux-rp-2.6.18/defconfig-poodle1655
-rw-r--r--packages/linux/linux-rp-2.6.18/defconfig-qemuarm1193
-rw-r--r--packages/linux/linux-rp-2.6.18/defconfig-qemux861563
-rw-r--r--packages/linux/linux-rp-2.6.18/defconfig-spitz1565
-rw-r--r--packages/linux/linux-rp-2.6.18/defconfig-tosa1598
-rw-r--r--packages/linux/linux-rp-2.6.18/hrw-pcmcia-ids-r5.patch63
-rw-r--r--packages/linux/linux-rp-2.6.18/pxa-serial-hack.patch73
-rw-r--r--packages/linux/linux-rp-2.6.18/squashfs3.0-2.6.15.patch4195
-rw-r--r--packages/linux/linux-rp-2.6.18/tmio-nand-r6.patch577
-rw-r--r--packages/linux/linux-rp-2.6.18/tmio-nand-r7.patch593
-rw-r--r--packages/linux/linux-rp-2.6.18/tmio-ohci-r5.patch923
-rw-r--r--packages/linux/linux-rp-2.6.18/tmio-tc6393-r7.patch793
-rw-r--r--packages/linux/linux-rp-2.6.18/tosa-lcdnoise-r1.patch157
-rw-r--r--packages/linux/linux-rp-2.6.18/tosa-tmio-lcd-r10.patch472
-rw-r--r--packages/linux/linux-rp-2.6.18/tosa-tmio-lcd-r9.patch467
-rw-r--r--packages/linux/linux-rp-2.6.18/wm9712-reset-loop-r2.patch44
-rw-r--r--packages/linux/linux-rp-2.6.18/wm9712-suspend-cold-res-r2.patch16
-rw-r--r--packages/linux/linux-rp-2.6.19+git/defconfig-hx2000265
-rw-r--r--packages/linux/linux-rp-2.6.19/connectplus-remove-ide-HACK.patch12
-rw-r--r--packages/linux/linux-rp-2.6.19/defconfig-akita1572
-rw-r--r--packages/linux/linux-rp-2.6.19/defconfig-c7x01608
-rw-r--r--packages/linux/linux-rp-2.6.19/defconfig-collie1641
-rw-r--r--packages/linux/linux-rp-2.6.19/defconfig-hx20001028
-rw-r--r--packages/linux/linux-rp-2.6.19/defconfig-poodle1655
-rw-r--r--packages/linux/linux-rp-2.6.19/defconfig-qemuarm1193
-rw-r--r--packages/linux/linux-rp-2.6.19/defconfig-qemux861566
-rw-r--r--packages/linux/linux-rp-2.6.19/defconfig-spitz1603
-rw-r--r--packages/linux/linux-rp-2.6.19/defconfig-tosa1608
-rw-r--r--packages/linux/linux-rp-2.6.19/hrw-pcmcia-ids-r5.patch63
-rw-r--r--packages/linux/linux-rp-2.6.19/pxa-serial-hack.patch80
-rw-r--r--packages/linux/linux-rp-2.6.19/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch155
-rw-r--r--packages/linux/linux-rp-2.6.19/sharpsl-pm-postresume-r1.patch30
-rw-r--r--packages/linux/linux-rp-2.6.19/squashfs3.0-2.6.15.patch4191
-rw-r--r--packages/linux/linux-rp-2.6.19/tmio-nand-r7.patch593
-rw-r--r--packages/linux/linux-rp-2.6.19/tmio-ohci-r6.patch929
-rw-r--r--packages/linux/linux-rp-2.6.19/tmio-tc6393-r8.patch800
-rw-r--r--packages/linux/linux-rp-2.6.19/tosa-keyboard-r18.patch515
-rw-r--r--packages/linux/linux-rp-2.6.19/tosa-lcdnoise-r1.patch157
-rw-r--r--packages/linux/linux-rp-2.6.19/tosa-tmio-lcd-r10.patch472
-rw-r--r--packages/linux/linux-rp-2.6.19/wm9712-reset-loop-r2.patch44
-rw-r--r--packages/linux/linux-rp-2.6.19/wm9712-suspend-cold-res-r2.patch16
-rw-r--r--packages/linux/linux-rp-2.6.19/wm97xx-lcdnoise-r0.patch208
-rw-r--r--packages/linux/linux-rp-2.6.20/.mtn2git_empty0
-rw-r--r--packages/linux/linux-rp-2.6.20/add-oz-release-string.patch (renamed from packages/linux/linux-rp-2.6.19/add-oz-release-string.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.20/connectplus-remove-ide-HACK.patch (renamed from packages/linux/linux-rp-2.6.18/connectplus-remove-ide-HACK.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-akita1573
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-c7x01609
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-collie1738
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-hx20001162
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-ipaq-pxa2701021
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-poodle1656
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-qemuarm1191
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-qemux861563
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-spitz1604
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-tosa1609
-rw-r--r--packages/linux/linux-rp-2.6.20/hostap-monitor-mode.patch209
-rw-r--r--packages/linux/linux-rp-2.6.20/orinoco-remove-all-which-are-in-hostap-HACK.patch (renamed from packages/linux/linux-rp-2.6.18/orinoco-remove-all-which-are-in-hostap-HACK.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.20/pxa-serial-hack.patch90
-rw-r--r--packages/linux/linux-rp-2.6.20/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch (renamed from packages/linux/linux-rp-2.6.18/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.20/sharpsl-rc-r1.patch519
-rw-r--r--packages/linux/linux-rp-2.6.20/squashfs3.0-2.6.15.patch4191
-rw-r--r--packages/linux/linux-rp-2.6.20/vesafb-tng-1.0-rc2-2.6.20-rc2.patch3141
-rw-r--r--packages/linux/linux-rp-2.6.20/wm97xx-lcdnoise-r0.patch (renamed from packages/linux/linux-rp-2.6.18/wm97xx-lcdnoise-r0.patch)0
-rw-r--r--packages/linux/linux-rp.inc5
-rw-r--r--packages/linux/linux-rp_2.6.16.bb7
-rw-r--r--packages/linux/linux-rp_2.6.17.bb7
-rw-r--r--packages/linux/linux-rp_2.6.18.bb110
-rw-r--r--packages/linux/linux-rp_2.6.19+git.bb28
-rw-r--r--packages/linux/linux-rp_2.6.19.bb110
-rw-r--r--packages/linux/linux-rp_2.6.20.bb116
-rw-r--r--packages/linux/linux-smdk2440-2.6.19/smdk2440-touchscreen-r2.patch532
-rw-r--r--packages/linux/linux-smdk2440-2.6.20+git/.mtn2git_empty0
-rw-r--r--packages/linux/linux-smdk2440-2.6.20+git/0001-Enable-cs8900A-network-device-for-smdk2440-board.patch92
-rw-r--r--packages/linux/linux-smdk2440/defconfig-smdk2440341
-rw-r--r--packages/linux/linux-smdk2440/smdk2440-touchscreen-r3.patch529
-rw-r--r--packages/linux/linux-smdk2440_2.6.19.bb39
-rw-r--r--packages/linux/linux-smdk2440_2.6.20+git.bb38
-rw-r--r--packages/linux/linux-smdk2443/.mtn2git_empty0
-rw-r--r--packages/linux/linux-smdk2443/0020-Add-ASoC-S3C24xx-platform-support.patch1077
-rw-r--r--packages/linux/linux-smdk2443/0021-Add-Neo1973-ASoC-support.patch763
-rw-r--r--packages/linux/linux-smdk2443/0022-Add-initial-ASoC-SMDK2440-support.patch373
-rw-r--r--packages/linux/linux-smdk2443/0023-Add-ASoC-SMDK2440-support-for-WM8956-codec.patch391
-rw-r--r--packages/linux/linux-smdk2443/0033-arch-hardware.h-is-no-longer-allowed-to-be-directly.patch41
-rw-r--r--packages/linux/linux-smdk2443/0034-Export-ac97_dai.patch39
-rw-r--r--packages/linux/linux-smdk2443/0035-Fix-power-and-PLL.patch63
-rw-r--r--packages/linux/linux-smdk2443/0036-Move-s3c24xx_i2s_dai-and-add-dma_size.patch48
-rw-r--r--packages/linux/linux-smdk2443/0037-Use-dma_size-parameter-and-fix-buffdone-oops.patch104
-rw-r--r--packages/linux/linux-smdk2443/0038-Add-smdk2443-s3c2443-ac97-and-wm9710-support.patch724
-rw-r--r--packages/linux/linux-smdk2443/asoc-mainline.patch142
-rw-r--r--packages/linux/linux-smdk2443/defconfig-smdk24431480
-rw-r--r--packages/linux/linux-smdk2443_2.6.20+git.bb52
-rw-r--r--packages/linux/linux-titan-sh4-2.6.17/titan-config1551
-rw-r--r--packages/linux/linux-titan-sh4-2.6.21/.mtn2git_empty0
-rw-r--r--packages/linux/linux-titan-sh4-2.6.21/no-mm-mutex.patch47
-rw-r--r--packages/linux/linux-titan-sh4-2.6.21/titan-config1798
-rw-r--r--packages/linux/linux-titan-sh4/titan-flash.patch94
-rw-r--r--packages/linux/linux-titan-sh4_2.6.17.bb51
-rw-r--r--packages/linux/linux-titan-sh4_2.6.21.bb29
-rw-r--r--packages/linux/linux-tornado-omap2/.mtn2git_empty0
-rw-r--r--packages/linux/linux-tornado-omap2/htctornado/.mtn2git_empty0
-rw-r--r--packages/linux/linux-tornado-omap2/htctornado/defconfig894
-rw-r--r--packages/linux/linux-tornado-omap2/linux-2.6.16.16.patch5134
-rw-r--r--packages/linux/linux-tornado-omap2/tornado-20070320.patch6081
-rw-r--r--packages/linux/linux-tornado-omap2_2.6.16.16.bb47
-rw-r--r--packages/linux/linux-turbostation/.mtn2git_empty0
-rw-r--r--packages/linux/linux-turbostation/001_r1000.diff2334
-rw-r--r--packages/linux/linux-turbostation/002_qnap-pic.diff407
-rw-r--r--packages/linux/linux-turbostation/defconfig1871
-rw-r--r--packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_platforms_Makefile13
-rw-r--r--packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_platforms_sandpoint.c293
-rw-r--r--packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_platforms_sandpoint.h52
-rw-r--r--packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_syslib_Makefile13
-rw-r--r--packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_syslib_mpc10x_common.c19
-rw-r--r--packages/linux/linux-turbostation/linux-2.6.16_drivers_mtd_maps_physmap.c59
-rw-r--r--packages/linux/linux-turbostation/linux-2.6.16_include_asm-ppc_mpc10x.h14
-rw-r--r--packages/linux/linux-turbostation_2.6.20.2.bb51
-rw-r--r--packages/linux/linux-x86-2.6.17.9/defconfig118
-rw-r--r--packages/linux/linux-x86-2.6.17.9/guinness/defconfig6
-rw-r--r--packages/linux/linux-x86-2.6.20/.mtn2git_empty0
-rw-r--r--packages/linux/linux-x86-2.6.20/defconfig1535
-rw-r--r--packages/linux/linux-x86-2.6.20/netvista/.mtn2git_empty0
-rw-r--r--packages/linux/linux-x86-2.6.20/netvista/defconfig1720
-rw-r--r--packages/linux/linux-x86_2.6.20.bb27
-rw-r--r--packages/linux/linux-z/.mtn2git_empty0
-rw-r--r--packages/linux/linux-z/shark/.mtn2git_empty0
-rw-r--r--packages/linux/linux-z/shark/defconfig1126
-rw-r--r--packages/linux/linux-z_2.6.20.bb23
-rw-r--r--packages/linux/linux/acern30/.mtn2git_empty0
-rw-r--r--packages/linux/linux/acern30/defconfig1199
-rw-r--r--packages/linux/linux/acern30/gcc4-fixes.patch97
-rw-r--r--packages/linux/linux/acern30/gpio-sysfs.patch252
-rw-r--r--packages/linux/linux/acern30/mmc-plus.patch17
-rw-r--r--packages/linux/linux/acern30/n30-apm.patch73
-rw-r--r--packages/linux/linux/acern30/n30-backlight.patch97
-rw-r--r--packages/linux/linux/acern30/n30-batt.patch242
-rw-r--r--packages/linux/linux/acern30/n30-buttons.patch100
-rw-r--r--packages/linux/linux/acern30/n30-cleanup.patch30
-rw-r--r--packages/linux/linux/acern30/n30-hardcode.patch158
-rw-r--r--packages/linux/linux/acern30/n30-lcd.patch66
-rw-r--r--packages/linux/linux/acern30/n30-mmc-power.patch24
-rw-r--r--packages/linux/linux/acern30/n30-mmc-wprotect.patch54
-rw-r--r--packages/linux/linux/acern30/n30-mmc.patch53
-rw-r--r--packages/linux/linux/acern30/n30-nand-hack.patch32
-rw-r--r--packages/linux/linux/acern30/n30-nand.patch97
-rw-r--r--packages/linux/linux/acern30/n30-pm.patch296
-rw-r--r--packages/linux/linux/acern30/n30-ts.patch43
-rw-r--r--packages/linux/linux/acern30/n30-usbstart.patch59
-rw-r--r--packages/linux/linux/acern30/n35.patch80
-rw-r--r--packages/linux/linux/acern30/regdump.patch279
-rw-r--r--packages/linux/linux/acern30/s3c2410-nand-pm.patch53
-rw-r--r--packages/linux/linux/acern30/s3c2410_lcd-pm.c80
-rw-r--r--packages/linux/linux/acern30/s3c2410_ts-pm.patch73
-rw-r--r--packages/linux/linux/acern30/s3c2410fb-resume.patch13
-rw-r--r--packages/linux/linux/acern30/s3c2410mci-pm.patch84
-rw-r--r--packages/linux/linux/acern30/series27
-rw-r--r--packages/linux/linux/acern30/spi.patch121
-rw-r--r--packages/linux/linux/acern30/wingel-hacking.patch1146
-rw-r--r--packages/linux/linux/n2100/.mtn2git_empty0
-rw-r--r--packages/linux/linux/n2100/defconfig1843
-rw-r--r--packages/linux/linux/n2100/n2100-r8169-parity.patch39
-rw-r--r--packages/linux/linux/n2100/rtc-rs5c372-n2100.patch13
-rw-r--r--packages/linux/linux/progear/defconfig276
-rw-r--r--packages/linux/linux/simpad/.mtn2git_empty0
-rw-r--r--packages/linux/linux/simpad/defconfig1201
-rw-r--r--packages/linux/linux/simpad/linux-2.6.21-SIMpad-cs3-simpad.patch315
-rw-r--r--packages/linux/linux/simpad/linux-2.6.21-SIMpad-mq200.patch2511
-rw-r--r--packages/linux/linux/simpad/linux-2.6.21-SIMpad-serial-and-gpio_keys.patch194
-rw-r--r--packages/linux/linux/simpad/linux-2.6.21-SIMpad-ucb1x00-switches.patch189
-rw-r--r--packages/linux/linux/simpad/linux-2.6.21-pcmcia-device-to-platform-driver.patch54
-rw-r--r--packages/linux/linux_2.6.14.bb51
-rw-r--r--packages/linux/linux_2.6.19-rc6.bb26
-rw-r--r--packages/linux/linux_2.6.20.bb26
-rw-r--r--packages/linux/linux_2.6.21.bb23
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/.mtn2git_empty0
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/asoc-v0.12.4.patch31712
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/config-nr-tty-devices.patch1068
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/defconfig-logicpd-pxa2701444
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/input_power-r6.patch222
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/kexec-arm-r3.patch275
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-cf-hack.patch727
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-flash.patch244
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-hardware-id-hack.patch31
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-lcd-osd024ttea2.patch81
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-smc91x.patch35
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/pm_changes-r1.patch44
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/pxa25x_cpufreq-r1.patch398
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/pxa27x_overlay-r4.patch2469
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/pxa_irda_susres_fix-r0.patch93
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/pxa_keys-r5.patch211
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/pxa_timerfix-r0.patch77
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/pxafb_fix_params-r2.patch90
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/ucb1400-touchscreen.patch747
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/usb_add_epalloc-r3.patch282
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/usb_pxa27x_udc-r3.patch2878
-rw-r--r--packages/linux/logicpd-pxa270-2.6.19.2/xscale_cache_workaround-r1.patch93
-rw-r--r--packages/linux/logicpd-pxa270_2.6.19.2.bb60
-rw-r--r--packages/linux/mx21ads-kernel_2.6.19rc6.bb5
-rw-r--r--packages/linux/mx31ads-kernel_2.6.19rc6.bb9
-rw-r--r--packages/linux/nslu2-kernel.inc259
-rw-r--r--packages/linux/nslu2-kernel/2.6.11-mm/bootramdisk.patch13
-rw-r--r--packages/linux/nslu2-kernel/2.6.11-mm/defconfig1204
-rw-r--r--packages/linux/nslu2-kernel/2.6.11-mm/reiser4.patch617
-rw-r--r--packages/linux/nslu2-kernel/2.6.11-mm/x1205-rtc.c-mm.patch18
-rw-r--r--packages/linux/nslu2-kernel/2.6.12/defconfig1226
-rw-r--r--packages/linux/nslu2-kernel/2.6.12/disk_led_blinking.patch127
-rw-r--r--packages/linux/nslu2-kernel/2.6.12/missing-exports.patch19
-rw-r--r--packages/linux/nslu2-kernel/2.6.12/nslu2-arch.patch92
-rw-r--r--packages/linux/nslu2-kernel/2.6.12/nslu2-setup.c146
-rw-r--r--packages/linux/nslu2-kernel/2.6.12/x1205-rtc.c-id.patch18
-rw-r--r--packages/linux/nslu2-kernel/2.6.14-mm/00-memory-h-page-shift.patch10
-rw-r--r--packages/linux/nslu2-kernel/2.6.14-mm/30-i2c-x1205-mm1.patch1036
-rw-r--r--packages/linux/nslu2-kernel/2.6.14-mm/80-nslu2-class-device-create.patch20
-rw-r--r--packages/linux/nslu2-kernel/2.6.14-mm/defconfig1595
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/10-ixp4xx-copy-from.patch73
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/10-ixp4xx-le.patch54
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/10-mtdpart-redboot-fis-byteswap.patch70
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/15-ixp4xx-writesb-l-w.patch31
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/18-ixp4xx-io-h-addr.patch287
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/19-jffs2-force-be.patch13
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/20-timer.patch285
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/28-spinlock-up.patch32
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/29-ipv4-route-c-spinlock.patch11
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/30-i2c-x1205.patch714
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/50-nslu2-arch.patch461
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/55-nslu2-rtc.patch125
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/60-nslu2-beeper.patch175
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/70-nslu2-io.patch560
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/75-nslu2-leds.patch267
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/90-ixp4xx-pci-le.patch11
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/90-pegasus.patch13
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/defconfig1556
-rw-r--r--packages/linux/nslu2-kernel/2.6.15/00-memory-h-page-shift.patch91
-rw-r--r--packages/linux/nslu2-kernel/2.6.15/10-mtdpart-redboot-fis-byteswap.patch70
-rw-r--r--packages/linux/nslu2-kernel/2.6.15/15-jffs2-endian-config.patch68
-rw-r--r--packages/linux/nslu2-kernel/2.6.15/40-rtc-class.patch2719
-rw-r--r--packages/linux/nslu2-kernel/2.6.15/60-nslu2-beeper.patch184
-rw-r--r--packages/linux/nslu2-kernel/2.6.15/75-nslu2-leds.patch272
-rw-r--r--packages/linux/nslu2-kernel/2.6.15/80-nslu2-io.patch560
-rw-r--r--packages/linux/nslu2-kernel/2.6.15/85-timer.patch285
-rw-r--r--packages/linux/nslu2-kernel/2.6.15/defconfig1617
-rw-r--r--packages/linux/nslu2-kernel/2.6/40-scsi-idle.patch44
-rw-r--r--packages/linux/nslu2-kernel/2.6/91-maclist.patch377
-rw-r--r--packages/linux/nslu2-kernel/2.6/92-nslu2-maclist.patch80
-rw-r--r--packages/linux/nslu2-kernel/2.6/compile-switches.patch58
-rw-r--r--packages/linux/nslu2-kernel/2.6/ixp4xx-regs.patch11
-rw-r--r--packages/linux/nslu2-kernel/2.6/nslu2-io_rpbutton.patch139
-rw-r--r--packages/linux/nslu2-kernel/2.6/thumb-swi.patch19
-rw-r--r--packages/linux/nslu2-kernel/2.6/timer.patch24
-rw-r--r--packages/linux/nslu2-kernel/2.6/x1205-rtc.patch38
-rw-r--r--packages/linux/nslu2-kernel/files/anonymiser.patch22
-rw-r--r--packages/linux/nslu2-kernel_2.6.14-mm1.bb38
-rw-r--r--packages/linux/nslu2-kernel_2.6.14.5.bb42
-rw-r--r--packages/linux/nslu2-kernel_2.6.15.bb35
-rw-r--r--packages/linux/nslu2-linksys-kernel-2.4.22/nslu2/defconfig973
-rw-r--r--packages/linux/nslu2-linksys-kernel_2.4.22.bb45
-rw-r--r--packages/linux/unslung-kernel/config-fixes.patch (renamed from packages/linux/nslu2-linksys-kernel-2.4.22/config-fixes.patch)0
-rw-r--r--packages/linux/unslung-kernel/double_cpdo.patch (renamed from packages/linux/nslu2-linksys-kernel-2.4.22/double_cpdo.patch)0
-rw-r--r--packages/linux/unslung-kernel/gcc-registerparanoia.patch (renamed from packages/linux/nslu2-linksys-kernel-2.4.22/gcc-registerparanoia.patch)0
-rw-r--r--packages/linux/unslung-kernel/gcc3-userfuncs.patch (renamed from packages/linux/nslu2-linksys-kernel-2.4.22/gcc3-userfuncs.patch)0
-rw-r--r--packages/linux/unslung-kernel/linux-2.4.24-attribute-used.patch (renamed from packages/linux/nslu2-linksys-kernel-2.4.22/linux-2.4.24-attribute-used.patch)0
-rw-r--r--packages/linux/unslung-kernel/nofpu.patch (renamed from packages/linux/nslu2-linksys-kernel-2.4.22/nofpu.patch)0
-rw-r--r--packages/linux/unslung-kernel/short_loadbytes.patch (renamed from packages/linux/nslu2-linksys-kernel-2.4.22/short_loadbytes.patch)0
-rw-r--r--packages/linux/unslung-kernel_2.4.22.l2.3r63.bb75
-rw-r--r--packages/linux/xanadux-un-2.6_2.6.12.bb2
-rw-r--r--packages/lirc/lirc-modules_0.8.1+cvs20070307.bb46
-rw-r--r--packages/lirc/lirc-modules_0.8.1.bb42
-rw-r--r--packages/lirc/lirc_0.8.1+cvs20070307.bb71
-rw-r--r--packages/llvm/.mtn2git_empty0
-rw-r--r--packages/llvm/llvm-native_1.9.bb9
-rw-r--r--packages/llvm/llvm-native_cvs.bb13
-rw-r--r--packages/llvm/llvm.inc16
-rw-r--r--packages/lm_sensors/files/iconv.patch13
-rw-r--r--packages/lm_sensors/lmsensors-apps_2.10.1.bb4
-rw-r--r--packages/logrotate/.mtn2git_empty0
-rw-r--r--packages/logrotate/files/.mtn2git_empty0
-rw-r--r--packages/logrotate/files/logrotate-3.7.1.patch20
-rw-r--r--packages/logrotate/files/logrotate.conf30
-rw-r--r--packages/logrotate/logrotate_3.7.1.bb40
-rw-r--r--packages/loudmouth/loudmouth_1.1.1.bb11
-rw-r--r--packages/loudmouth/loudmouth_1.2.2.bb12
-rw-r--r--packages/lrzsz/lrzsz_0.12.20.bb20
-rw-r--r--packages/lsof/lsof_4.77.bb3
-rw-r--r--packages/ltp/.mtn2git_empty0
-rw-r--r--packages/ltp/ltp-20070228/.mtn2git_empty0
-rw-r--r--packages/ltp/ltp-20070228/cross-compile.patch51
-rw-r--r--packages/ltp/ltp-20070228/ltp-run4
-rw-r--r--packages/ltp/ltp-20070228/runltp-path.patch13
-rw-r--r--packages/ltp/ltp_20070228.bb42
-rw-r--r--packages/ltrace/files/.mtn2git_empty0
-rw-r--r--packages/ltrace/files/no-usr-include.patch16
-rw-r--r--packages/ltrace/ltrace_0.4.bb51
-rw-r--r--packages/lvm2/lvm2_2.01.15.bb2
-rw-r--r--packages/lzo/lzo-native_1.08.bb3
-rw-r--r--packages/m4/m4-native_1.4.4.bb (renamed from packages/m4/m4-native_1.4.2.bb)0
-rw-r--r--packages/m4/m4/make.patch41
-rw-r--r--packages/m4/m4_1.4.2.bb11
-rw-r--r--packages/m4/m4_1.4.4.bb10
-rw-r--r--packages/m4/m4_1.4.8.bb15
-rw-r--r--packages/madfu/.mtn2git_empty0
-rw-r--r--packages/madfu/files/.mtn2git_empty0
-rw-r--r--packages/madfu/files/autofoo.patch54
-rw-r--r--packages/madfu/madfu_1.2.bb27
-rw-r--r--packages/madwifi/files/10-xscale-be-elf-copts.patch8
-rw-r--r--packages/madwifi/files/10-xscale-le-elf-copts.patch8
-rw-r--r--packages/madwifi/files/20-xscale-VFP-wackelf.patch20
-rw-r--r--packages/madwifi/madwifi-modules-0.9.3/.mtn2git_empty0
-rw-r--r--packages/madwifi/madwifi-modules-0.9.3/madwifi-devname.patch115
-rw-r--r--packages/madwifi/madwifi-modules-0.9.3/madwifi-skbpanic.patch16
-rw-r--r--packages/madwifi/madwifi-modules_0.9.3.bb57
-rw-r--r--packages/madwifi/madwifi-ng-r1844-20061208/10-xscale-be-elf-copts.patch12
-rw-r--r--packages/madwifi/madwifi-ng-r1844-20061208/10-xscale-le-elf-copts.patch10
-rw-r--r--packages/madwifi/madwifi-ng_r.inc16
-rw-r--r--packages/madwifi/madwifi-ng_r1527-20060425.bb2
-rw-r--r--packages/madwifi/madwifi-ng_r1692-20060723.bb2
-rw-r--r--packages/madwifi/madwifi-ng_r2100-20070210.bb3
-rw-r--r--packages/madwifi/madwifi-ng_r2156-20070225.bb3
-rw-r--r--packages/madwifi/madwifi-ng_r2182-20070308.bb3
-rw-r--r--packages/madwifi/madwifi-ng_r2187-20070309.bb3
-rw-r--r--packages/maemo-mapper/maemo-mapper-nohildon_svn.bb2
-rw-r--r--packages/maemo/gconf-osso/free-entry-fix.diff11
-rwxr-xr-xpackages/maemo/gconf-osso/gconf-daemon-dbus-oe.sh7
-rw-r--r--packages/maemo/gconf-osso/gconf-daemon-oe.sh21
-rw-r--r--packages/maemo/gconf-osso/gconf-update.patch31
-rw-r--r--packages/maemo/gconf-osso/no-po-no-examples.diff34032
-rw-r--r--packages/maemo/gconf-osso/service-file.diff9
-rw-r--r--packages/maemo/gconf-osso_2.6.4-3.1osso13.bb42
-rw-r--r--packages/maemo/osso-gnome-vfs2/gconftool-lossage.patch11
-rw-r--r--packages/maemo3/.mtn2git_empty0
-rw-r--r--packages/maemo3/hildon-base-lib_0.11.1.bb13
-rw-r--r--packages/maemo3/hildon-lgpl_0.12.1.bb10
-rw-r--r--packages/maemo3/libgpsbt_0.1.bb13
-rw-r--r--packages/maemo3/libgpsmgr_0.1.bb11
-rw-r--r--packages/maemo3/libosso-gsf_1.11.10.4.bb20
-rw-r--r--packages/maemo3/libosso_1.20.bb19
-rw-r--r--packages/maemo3/mce-dev_1.5.6.bb15
-rw-r--r--packages/maemo3/outo_0.1.1.bb (renamed from packages/maemo/outo_0.1.1.bb)0
-rw-r--r--packages/matchbox-common/matchbox_0.9.1.bb5
-rw-r--r--packages/matchbox-keyboard/files/.mtn2git_empty0
-rw-r--r--packages/matchbox-keyboard/files/smallscreen-fontsize.patch22
-rw-r--r--packages/matchbox-keyboard/matchbox-keyboard_svn.bb5
-rw-r--r--packages/matchbox-panel/matchbox-panel.inc11
-rw-r--r--packages/matchbox-panel/matchbox-panel_0.9.3.bb2
-rw-r--r--packages/matchbox-themes-extra/matchbox-theme-sato_svn.bb15
-rw-r--r--packages/matchbox-wm/matchbox-wm/gconf-2.m439
-rw-r--r--packages/matchbox-wm/matchbox-wm_1.2.bb41
-rw-r--r--packages/matchbox2/.mtn2git_empty0
-rw-r--r--packages/matchbox2/files/.mtn2git_empty0
-rw-r--r--packages/matchbox2/files/glib-2.8-backport.patch110
-rw-r--r--packages/matchbox2/matchbox-panel-2_svn.bb27
-rw-r--r--packages/mb-desktop-xine/mb-desktop-xine_0.4.bb7
-rw-r--r--packages/mc/mc.inc52
-rw-r--r--packages/mc/mc_4.6.0.bb35
-rw-r--r--packages/mc/mc_4.6.1.bb44
-rw-r--r--packages/mdk/.mtn2git_empty0
-rw-r--r--packages/mdk/files/.mtn2git_empty0
-rw-r--r--packages/mdk/files/mdk2-ppcfix.patch12
-rw-r--r--packages/mdk/mdk2_v33.bb23
-rw-r--r--packages/mediatomb/mediatomb_0.8+0.9.0-pre.bb32
-rw-r--r--packages/mediatomb/mediatomb_0.9.0.bb30
-rw-r--r--packages/mediatomb/mediatomb_svn.bb29
-rw-r--r--packages/memtester/memtester_4.0.5.bb4
-rw-r--r--packages/memtester/memtester_4.0.6.bb22
-rw-r--r--packages/mesa/mesa-6.0.1/.mtn2git_empty0
-rw-r--r--packages/mesa/mesa-6.0.1/Make-config.patch (renamed from packages/mesa/Make-config.patch)0
-rw-r--r--packages/mesa/mesa-6.0.1/mklib.patch (renamed from packages/mesa/mklib.patch)0
-rw-r--r--packages/mesa/mesa-6.5.2/.mtn2git_empty0
-rw-r--r--packages/mesa/mesa-6.5.2/mklib-rpath-link.patch23
-rw-r--r--packages/mesa/mesa-common.inc9
-rw-r--r--packages/mesa/mesa-dri_6.5.2.bb37
-rw-r--r--packages/mesa/mesa-mesa.inc41
-rw-r--r--packages/mesa/mesa_6.5.2.bb3
-rw-r--r--packages/meta/foonas-packages.bb167
-rw-r--r--packages/meta/meta-e-x11-core.bb4
-rw-r--r--packages/meta/meta-e-x11.bb4
-rw-r--r--packages/meta/meta-gpe-extras.bb7
-rw-r--r--packages/meta/meta-gpe.bb7
-rw-r--r--packages/meta/meta-gpephone.bb12
-rw-r--r--packages/meta/meta-opie-all.bb18
-rw-r--r--packages/meta/meta-opie.bb5
-rw-r--r--packages/meta/meta-sdk-gpe.bb101
-rw-r--r--packages/meta/meta-sdk-sbox-gpe.bb101
-rw-r--r--packages/meta/meta-sdk-sbox.bb97
-rw-r--r--packages/meta/meta-sdk.bb28
-rw-r--r--packages/meta/meta-sdl.bb12
-rw-r--r--packages/meta/meta-sectest-gpe.bb7
-rw-r--r--packages/meta/meta-toolchain.bb6
-rw-r--r--packages/meta/nylon-feed.bb5
-rw-r--r--packages/meta/nylon-feed.inc3
-rw-r--r--packages/meta/openprotium-packages.bb2
-rw-r--r--packages/meta/package-index.bb9
-rw-r--r--packages/meta/slugos-native.bb12
-rw-r--r--packages/meta/slugos-packages.bb66
-rw-r--r--packages/meta/xbase-clients.bb3
-rw-r--r--packages/miconapl/.mtn2git_empty0
-rw-r--r--packages/miconapl/miconapl_0.0.1.bb31
-rw-r--r--packages/micro-evtd/.mtn2git_empty0
-rw-r--r--packages/micro-evtd/micro-evtd_0.0.1.bb22
-rw-r--r--packages/miniclipboard/miniclipboard-0.3/makefile.patch26
-rw-r--r--packages/miniclipboard/miniclipboard_0.3.bb7
-rw-r--r--packages/minipredict/minipredict.bb2
-rw-r--r--packages/modphp/modphp5.inc2
-rw-r--r--packages/modphp/modphp_5.1.6.bb2
-rw-r--r--packages/modutils/modutils-collateral.bb9
-rw-r--r--packages/mono/.mtn2git_empty0
-rw-r--r--packages/mono/files/.mtn2git_empty0
-rw-r--r--packages/mono/files/cpu-arm.h756
-rw-r--r--packages/mono/mono-native_1.2.2.1.bb5
-rw-r--r--packages/mono/mono.inc17
-rw-r--r--packages/mono/mono_1.2.2.1.bb17
-rw-r--r--packages/monotone/monotone-6_0.33.bb52
-rw-r--r--packages/monotone/monotone-6_0.34.bb52
-rw-r--r--packages/mozilla/files/arm/.mtn2git_empty0
-rw-r--r--packages/mozilla/files/arm/jsautocfg.h52
-rw-r--r--packages/mozilla/files/eabi-fix.patch66
-rw-r--r--packages/mozilla/files/eabi-fix2.patch56
-rw-r--r--packages/mozilla/files/eabi-fix3.patch15
-rw-r--r--packages/mozilla/files/powerpc/.mtn2git_empty0
-rw-r--r--packages/mozilla/files/powerpc/jsautocfg.h52
-rw-r--r--packages/mozilla/firefox-1.0.7/jsautocfg.h52
-rw-r--r--packages/mozilla/firefox-1.0.7/mozilla-eabi.patch28
-rw-r--r--packages/mozilla/firefox-1.0.7/xptcinvoke-arm.patch11
-rw-r--r--packages/mozilla/firefox-1.5.0.6/jsautocfg.h52
-rw-r--r--packages/mozilla/firefox-1.5.0.6/mozconfig53
-rw-r--r--packages/mozilla/firefox-2.0.0.3/.mtn2git_empty0
-rw-r--r--packages/mozilla/firefox-2.0.0.3/jsautocfg-dontoverwrite.patch (renamed from packages/mozilla/firefox-2.0/jsautocfg-dontoverwrite.patch)0
-rw-r--r--packages/mozilla/firefox-2.0.0.3/jsdtoa-float-type.patch13
-rw-r--r--packages/mozilla/firefox-2.0.0.3/mozconfig57
-rw-r--r--packages/mozilla/firefox-2.0.0.3/mozilla-eabi.patch42
-rw-r--r--packages/mozilla/firefox-2.0.0.3/mult-crash-fix.patch14
-rw-r--r--packages/mozilla/firefox-2.0.0.3/security-cross.patch (renamed from packages/mozilla/firefox-2.0/security-cross.patch)0
-rw-r--r--packages/mozilla/firefox-2.0.0.3/xptcinvoke-arm.patch11
-rw-r--r--packages/mozilla/firefox-2.0.0.3/xptcstubs.patch13
-rw-r--r--packages/mozilla/firefox-2.0/arm/jsautocfg.h52
-rw-r--r--packages/mozilla/firefox-2.0/mozconfig53
-rw-r--r--packages/mozilla/firefox_1.0.7.bb6
-rw-r--r--packages/mozilla/firefox_1.5.0.6.bb18
-rw-r--r--packages/mozilla/firefox_2.0.0.3.bb39
-rw-r--r--packages/mozilla/firefox_2.0.bb35
-rw-r--r--packages/mozilla/minimo/minimo.patch843
-rw-r--r--packages/mozilla/minimo_0.016+cvs.bb147
-rw-r--r--packages/mozilla/minimo_cvs.bb178
-rw-r--r--packages/mp3blaster/mp3blaster-3.2.3/.mtn2git_empty0
-rw-r--r--packages/mp3blaster/mp3blaster-3.2.3/includedir.patch37
-rw-r--r--packages/mp3blaster/mp3blaster_3.2.3.bb10
-rw-r--r--packages/mplayer/files/Makefile-codec-cfg.patch6
-rw-r--r--packages/mplayer/files/makefile-nostrip-svn.patch43
-rw-r--r--packages/mplayer/files/mplayer-imageon-svn.patch366
-rw-r--r--packages/mplayer/files/powerpc-is-ppc.diff11
-rw-r--r--packages/mplayer/files/pxa-video_out.patch22
-rw-r--r--packages/mplayer/files/pxa_configure.patch47
-rw-r--r--packages/mplayer/files/vo_pxa.c980
-rw-r--r--packages/mplayer/files/vo_pxa.h51
-rw-r--r--packages/mplayer/mplayer-common.bb2
-rw-r--r--packages/mplayer/mplayer_0.0+1.0rc1.bb27
-rw-r--r--packages/mplayer/mplayer_svn.bb32
-rw-r--r--packages/mrxvt/files/fix-compile.patch23
-rw-r--r--packages/mrxvt/mrxvt_0.4.1.bb14
-rw-r--r--packages/mrxvt/mrxvt_0.5.2.bb18
-rw-r--r--packages/msmtp/.mtn2git_empty0
-rw-r--r--packages/msmtp/msmtp_1.4.10.bb10
-rw-r--r--packages/mtd/mtd-utils-native.inc10
-rw-r--r--packages/mtd/mtd-utils-native_0.0.0+cvs20050801.bb12
-rw-r--r--packages/mtd/mtd-utils-native_0.0.0+cvs20060223.bb12
-rw-r--r--packages/mtd/mtd-utils-native_1.0.0+git.bb2
-rw-r--r--packages/mtd/mtd-utils-native_1.0.0.bb2
-rw-r--r--packages/mtd/mtd-utils/add-exclusion-to-mkfs-jffs2-git.patch106
-rw-r--r--packages/mtd/mtd-utils/add_lzo.patch220
-rw-r--r--packages/mtd/mtd-utils/favour_lzo.patch136
-rw-r--r--packages/mtd/mtd-utils/fix-ignoreerrors-git.patch26
-rw-r--r--packages/mtd/mtd-utils/more-verbosity.patch17
-rw-r--r--packages/mtd/mtd-utils/target-endian.patch11
-rw-r--r--packages/mtd/mtd-utils_0.0.0+cvs20041113.bb36
-rw-r--r--packages/mtd/mtd-utils_0.0.0+cvs20050801.bb37
-rw-r--r--packages/mtd/mtd-utils_0.0.0+cvs20060223.bb5
-rw-r--r--packages/mtd/mtd-utils_1.0.0+git.bb37
-rw-r--r--packages/mtd/mtd-utils_1.0.0.bb1
-rw-r--r--packages/mtpaint/.mtn2git_empty0
-rw-r--r--packages/mtpaint/mtpaint_3.02.bb25
-rw-r--r--packages/musicpd/glurp_0.11.3.bb11
-rw-r--r--packages/musicpd/glurp_0.11.6.bb12
-rw-r--r--packages/musicpd/gmpc_0.11.2.bb2
-rw-r--r--packages/musicpd/gmpc_0.13.0.bb12
-rw-r--r--packages/musicpd/gmpc_svn.bb14
-rw-r--r--packages/musicpd/libmpd_svn.bb21
-rw-r--r--packages/musicpd/mpc_0.11.2.bb6
-rw-r--r--packages/musicpd/mpc_0.12.0.bb10
-rw-r--r--packages/musicpd/mpd-alsa_0.11.5.bb2
-rw-r--r--packages/musicpd/mpd/fix-mod-support.patch23
-rw-r--r--packages/musicpd/mpd_0.11.2.bb2
-rw-r--r--packages/musicpd/mpd_0.11.5.bb2
-rw-r--r--packages/musicpd/mpd_svn.bb36
-rw-r--r--packages/musicpd/ncmpc_0.11.1.bb3
-rw-r--r--packages/musicpd/py-libmpdclient_0.10.0.bb9
-rw-r--r--packages/mutt/mutt-1.5.15/.mtn2git_empty0
-rw-r--r--packages/mutt/mutt-1.5.15/makedoc.patch26
-rw-r--r--packages/mutt/mutt-1.5.15/patch-1.5.15.sidebar.20070408.txt1347
-rw-r--r--packages/mutt/mutt_1.5.15.bb27
-rw-r--r--packages/mysql/mysql-native_4.1.18.bb5
-rw-r--r--packages/mythfront/mythfront-config.bb5
-rwxr-xr-xpackages/mythfront/mythfront-config/tftp.sh4
-rw-r--r--packages/mythtv/mythtv-0.20/.mtn2git_empty0
-rw-r--r--packages/mythtv/mythtv-0.20/configure.patch90
-rw-r--r--packages/mythtv/mythtv-0.20/libmyth-libdir.patch11
-rw-r--r--packages/mythtv/mythtv.inc32
-rw-r--r--packages/mythtv/mythtv_0.18.1.bb37
-rw-r--r--packages/mythtv/mythtv_0.20.bb71
-rw-r--r--packages/nasm/nasm_0.98.38.bb5
-rw-r--r--packages/nbd/files/cross-compile.patch31
-rw-r--r--packages/nbd/nbd_2.8.4.bb19
-rw-r--r--packages/nbd/nbd_2.8.7.bb21
-rw-r--r--packages/neon/files/gnutls-force-and-detect.patch23
-rw-r--r--packages/neon/neon_0.25.5.bb11
-rw-r--r--packages/net-snmp/net-snmp_5.1.2.bb4
-rw-r--r--packages/netatalk/.mtn2git_empty0
-rw-r--r--packages/netatalk/files/.mtn2git_empty0
-rwxr-xr-xpackages/netatalk/files/init111
-rw-r--r--packages/netatalk/netatalk-2.0.3/.mtn2git_empty0
-rw-r--r--packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-db43.patch32
-rw-r--r--packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-newerdb.patch28
-rw-r--r--packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-setXid.patch14
-rw-r--r--packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-xfs.patch22
-rw-r--r--packages/netatalk/netatalk_2.0.3.bb39
-rw-r--r--packages/netbase/netbase/fic-gta01/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/fic-gta01/interfaces28
-rw-r--r--packages/netbase/netbase/foonas/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/foonas/interfaces13
-rw-r--r--packages/netbase/netbase/if-down.d/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/if-post-down.d/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/if-pre-up.d/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/if-up.d/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/oplinux-uclibc/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/oplinux-uclibc/interfaces10
-rw-r--r--packages/netbase/netbase/oplinux-uclibc/options3
-rw-r--r--packages/netbase/netbase/oplinux/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/oplinux/interfaces10
-rw-r--r--packages/netbase/netbase/oplinux/options3
-rw-r--r--packages/netbase/netbase/slugos/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/slugos/if-down.d/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/slugos/if-post-down.d/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/slugos/if-pre-up.d/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/slugos/if-pre-up.d/udhcpc-fix12
-rw-r--r--packages/netbase/netbase/slugos/if-up.d/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase_4.21.bb17
-rw-r--r--packages/netcat/netcat_0.7.1.bb2
-rw-r--r--packages/netpbm/netpbm_10.28.bb19
-rw-r--r--packages/networkmanager/files/99_networkmanager2
-rw-r--r--packages/networkmanager/networkmanager_0.6.4.bb4
-rw-r--r--packages/nfs-utils/files/nfsserver2
-rw-r--r--packages/nfs-utils/nfs-utils-1.0.6/kernel-2.6.18+.patch13
-rw-r--r--packages/nfs-utils/nfs-utils_1.0.6.bb3
-rw-r--r--packages/nis/nis-all.bb6
-rw-r--r--packages/nis/nis.inc4
-rw-r--r--packages/nmap/nmap_3.81.bb4
-rw-r--r--packages/nonworking/bluez-bluefw/bluez-bluefw_0.9.bb4
-rw-r--r--packages/nonworking/exult/exult_1.2.bb8
-rw-r--r--packages/nonworking/icecast/icecast_2.2.0.bb2
-rw-r--r--packages/nonworking/lufs/lufs_0.9.7.bb20
-rw-r--r--packages/nonworking/pixdev/pixdev-stable_0.1.bb14
-rw-r--r--packages/nonworking/python/python-gsl_0.2.0.bb18
-rw-r--r--packages/nonworking/qualendar/qualendar_0.8.0.bb12
-rw-r--r--packages/nonworking/snmpz/snmpz_1.1.bb12
-rw-r--r--packages/nonworking/unison/unison_2.9.1.bb10
-rw-r--r--packages/nonworking/xfree86/xfree86_4.3.0.bb8
-rw-r--r--packages/notification-daemon/files/.mtn2git_empty0
-rw-r--r--packages/notification-daemon/files/dbus-glib-tool-prefix.patch13
-rw-r--r--packages/notification-daemon/notification-daemon_0.3.4.bb15
-rw-r--r--packages/notification-daemon/notification-daemon_0.3.5.bb12
-rw-r--r--packages/notification-daemon/notification-daemon_0.3.6.bb16
-rwxr-xr-xpackages/nslu2-binary-only/unslung-rootfs/unsling4
-rw-r--r--packages/ntfs-3g/.mtn2git_empty0
-rw-r--r--packages/ntfs-3g/ntfs-3g_1.0.bb12
-rw-r--r--packages/ntpclient/.mtn2git_empty0
-rw-r--r--packages/ntpclient/files/.mtn2git_empty0
-rw-r--r--packages/ntpclient/files/init42
-rw-r--r--packages/ntpclient/ntpclient_2003_194.bb32
-rw-r--r--packages/nunome/nunome_1.0.1.bb41
-rw-r--r--packages/nunome/nunome_1.0.2.bb40
-rw-r--r--packages/nylon/simple-firewall.bb11
-rw-r--r--packages/obsolete/libsdl/.mtn2git_empty0
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/.mtn2git_empty0
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch (renamed from packages/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch)0
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/acinclude.m4 (renamed from packages/libsdl/libsdl-qpe-1.2.7/acinclude.m4)0
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch (renamed from packages/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch)0
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/fixlibs.patch (renamed from packages/libsdl/libsdl-qpe-1.2.7/fixlibs.patch)0
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/gcc34.patch (renamed from packages/libsdl/libsdl-qpe-1.2.7/gcc34.patch)0
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/ipaq.patch (renamed from packages/libsdl/libsdl-qpe-1.2.7/ipaq.patch)0
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch (renamed from packages/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch)0
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/mouse.patch (renamed from packages/libsdl/libsdl-qpe-1.2.7/mouse.patch)0
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/pygame.patch (renamed from packages/libsdl/libsdl-qpe-1.2.7/pygame.patch)0
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe_1.2.7.bb (renamed from packages/libsdl/libsdl-qpe_1.2.7.bb)0
-rw-r--r--packages/obsolete/maemo/.mtn2git_empty0
-rw-r--r--packages/obsolete/maemo/gconf-osso/.mtn2git_empty0
-rw-r--r--packages/obsolete/maemo/osso-gnome-vfs2/.mtn2git_empty0
-rw-r--r--packages/obsolete/maemo/osso-gnome-vfs2/gconftool-lossage.patch (renamed from packages/gnome/gnome-vfs-dbus/gconftool-lossage.patch)0
-rw-r--r--packages/obsolete/maemo/osso-gnome-vfs2_2.8.4.4-1.bb (renamed from packages/maemo/osso-gnome-vfs2_2.8.4.4-1.bb)0
-rw-r--r--packages/openchrome/.mtn2git_empty0
-rw-r--r--packages/openchrome/configure.patch42
-rw-r--r--packages/openchrome/openchrome_svn.bb21
-rw-r--r--packages/openmoko-apps/.mtn2git_empty0
-rw-r--r--packages/openmoko-apps/files/.mtn2git_empty0
-rw-r--r--packages/openmoko-apps/files/unbreak-messages.patch29
-rw-r--r--packages/openmoko-apps/openmoko-appmanager_svn.bb7
-rw-r--r--packages/openmoko-apps/openmoko-dialer_svn.bb9
-rw-r--r--packages/openmoko-apps/openmoko-footer_svn.bb6
-rw-r--r--packages/openmoko-apps/openmoko-mainmenu_svn.bb9
-rw-r--r--packages/openmoko-apps/openmoko-messages_svn.bb7
-rw-r--r--packages/openmoko-apps/openmoko-rssreader_svn.bb9
-rw-r--r--packages/openmoko-apps/openmoko-simplemediaplayer_svn.bb19
-rw-r--r--packages/openmoko-apps/openmoko-taskmanager_svn.bb6
-rw-r--r--packages/openmoko-base/.mtn2git_empty0
-rw-r--r--packages/openmoko-base/files/.mtn2git_empty0
-rw-r--r--packages/openmoko-base/files/session19
-rw-r--r--packages/openmoko-base/openmoko-common_svn.bb21
-rw-r--r--packages/openmoko-base/openmoko-icon-theme-standard_svn.bb11
-rw-r--r--packages/openmoko-base/openmoko-libs_svn.bb36
-rw-r--r--packages/openmoko-base/openmoko-session_svn.bb29
-rw-r--r--packages/openmoko-base/openmoko-theme-standard-qvga_svn.bb25
-rw-r--r--packages/openmoko-base/openmoko-theme-standard_svn.bb25
-rw-r--r--packages/openmoko-examples/.mtn2git_empty0
-rw-r--r--packages/openmoko-examples/openmoko-finger-demo_svn.bb6
-rw-r--r--packages/openmoko-examples/openmoko-panel-demo-simple_svn.bb19
-rw-r--r--packages/openmoko-examples/openmoko-panel-demo_svn.bb9
-rw-r--r--packages/openmoko-examples/openmoko-stylus-demo-simple_svn.bb6
-rw-r--r--packages/openmoko-examples/openmoko-stylus-demo_svn.bb6
-rw-r--r--packages/openmoko-inputmethods/.mtn2git_empty0
-rw-r--r--packages/openmoko-inputmethods/openmoko-keyboard_svn.bb20
-rw-r--r--packages/openmoko-panel-plugins/.mtn2git_empty0
-rw-r--r--packages/openmoko-panel-plugins/openmoko-panel-battery_svn.bb6
-rw-r--r--packages/openmoko-panel-plugins/openmoko-panel-bt_svn.bb6
-rw-r--r--packages/openmoko-panel-plugins/openmoko-panel-clock_svn.bb5
-rw-r--r--packages/openmoko-panel-plugins/openmoko-panel-gps_svn.bb6
-rw-r--r--packages/openmoko-panel-plugins/openmoko-panel-gsm_svn.bb10
-rw-r--r--packages/openmoko-panel-plugins/openmoko-panel-mainmenu_svn.bb5
-rw-r--r--packages/openmoko-panel-plugins/openmoko-panel-usb_svn.bb5
-rw-r--r--packages/openmoko-pim/.mtn2git_empty0
-rw-r--r--packages/openmoko-pim/openmoko-contacts/.mtn2git_empty0
-rw-r--r--packages/openmoko-pim/openmoko-contacts/index.theme (renamed from packages/contacts/files/index.theme)0
-rw-r--r--packages/openmoko-pim/openmoko-contacts/intltool-update.in1089
-rw-r--r--packages/openmoko-pim/openmoko-contacts/stock_contact.png (renamed from packages/contacts/files/stock_contact.png)bin2311 -> 2311 bytes
-rw-r--r--packages/openmoko-pim/openmoko-contacts/stock_person.png (renamed from packages/contacts/files/stock_person.png)bin2280 -> 2280 bytes
-rw-r--r--packages/openmoko-pim/openmoko-contacts_svn.bb31
-rw-r--r--packages/openmoko-pim/openmoko-dates/.mtn2git_empty0
-rw-r--r--packages/openmoko-pim/openmoko-dates/compile-fix.patch12
-rw-r--r--packages/openmoko-pim/openmoko-dates/intltool-update.in1089
-rw-r--r--packages/openmoko-pim/openmoko-dates/om-dates-temp-buildfix_20070308.patch8
-rw-r--r--packages/openmoko-pim/openmoko-dates/remove-bogus-include.patch10
-rw-r--r--packages/openmoko-pim/openmoko-dates_svn.bb27
-rw-r--r--packages/openmoko-pim/openmoko-today_svn.bb8
-rw-r--r--packages/openmoko-tools/.mtn2git_empty0
-rw-r--r--packages/openmoko-tools/openmoko-chordmaster_svn.bb6
-rw-r--r--packages/openobex/openobex_1.2.bb3
-rw-r--r--packages/openocd/openocd-native_svn.bb10
-rw-r--r--packages/openocd/openocd_svn.bb12
-rw-r--r--packages/openpbx/.mtn2git_empty0
-rw-r--r--packages/openpbx/files/.mtn2git_empty0
-rw-r--r--packages/openpbx/files/init75
-rw-r--r--packages/openpbx/files/logrotate13
-rw-r--r--packages/openpbx/files/volatiles6
-rw-r--r--packages/openpbx/openpbx.org-1.2_rc3/.mtn2git_empty0
-rw-r--r--packages/openpbx/openpbx.org-1.2_rc3/bootstrap.patch37
-rw-r--r--packages/openpbx/openpbx.org-1.2_rc3/openssl.m4.patch46
-rw-r--r--packages/openpbx/openpbx.org-perl.bb24
-rw-r--r--packages/openpbx/openpbx.org_1.2_rc3.bb139
-rw-r--r--packages/openssh/openssh_4.3p2.bb6
-rw-r--r--packages/openssl/openssl-native_0.9.7g.bb2
-rw-r--r--packages/openssl/openssl.inc4
-rw-r--r--packages/openssl/openssl_0.9.7e.bb2
-rw-r--r--packages/openssl/openssl_0.9.7g.bb2
-rw-r--r--packages/opensync/libopensync-plugin-evo2-sync_0.22.bb6
-rw-r--r--packages/opensync/libopensync-plugin-evo2-sync_svn.bb8
-rw-r--r--packages/opensync/libopensync-plugin-file-sync_0.22.bb2
-rw-r--r--packages/opensync/libopensync-plugin-file-sync_svn.bb5
-rw-r--r--packages/opensync/libopensync-plugin-irmc-sync_0.22.bb4
-rw-r--r--packages/opensync/libopensync-plugin-syncml-client-plugin-0.1/.mtn2git_empty0
-rw-r--r--packages/opensync/libopensync-plugin-syncml-client-plugin-0.1/missing-syncml-config.patch8
-rw-r--r--packages/opensync/libopensync-plugin-syncml-client-plugin-0.1/syncml-client-plugin-cpp.patch11
-rw-r--r--packages/opensync/libopensync-plugin-syncml-client-plugin_0.1.bb13
-rw-r--r--packages/opensync/libopensync-plugin-syncml-plugin.bb16
-rw-r--r--packages/opensync/libopensync-plugin-syncml_0.22.bb13
-rw-r--r--packages/opensync/libopensync-plugin.inc24
-rw-r--r--packages/opensync/libopensync-plugin_0.22.inc12
-rw-r--r--packages/opensync/libopensync_0.22.bb21
-rw-r--r--packages/opensync/libopensync_svn.bb18
-rw-r--r--packages/opensync/libsyncml_svn.bb35
-rw-r--r--packages/opensync/msynctool_0.22.bb9
-rw-r--r--packages/opensync/msynctool_svn.bb10
-rw-r--r--packages/opensync/opensync-unpack.inc5
-rw-r--r--packages/opensync/syncml-client-0.1/.mtn2git_empty0
-rw-r--r--packages/opensync/syncml-client-0.1/syncml-client-pc-in-cross.patch10
-rw-r--r--packages/opensync/syncml-client-0.1/syncml-client-plugin-h.patch11
-rw-r--r--packages/opensync/syncml-client_0.1.bb12
-rw-r--r--packages/openzaurus/openzaurus-version.bb7
-rw-r--r--packages/opie-bartender/opie-bartender.inc2
-rw-r--r--packages/opie-bluetoothapplet/files/.mtn2git_empty0
-rw-r--r--packages/opie-bluetoothapplet/files/sysconfig-bluetooth.patch40
-rw-r--r--packages/opie-bluetoothapplet/opie-bluetoothapplet_cvs.bb3
-rw-r--r--packages/opie-button-settings/opie-button-settings.inc8
-rw-r--r--packages/opie-dagger/files/.mtn2git_empty0
-rw-r--r--packages/opie-dagger/files/opie-dagger-missing-include.patch11
-rw-r--r--packages/opie-dagger/opie-dagger_cvs.bb3
-rw-r--r--packages/opie-dasher/opie-dasher.inc2
-rw-r--r--packages/opie-dasher/opie-dasher_1.2.2.bb2
-rw-r--r--packages/opie-dasher/opie-dasher_cvs.bb1
-rw-r--r--packages/opie-handwriting/opie-handwriting.inc5
-rw-r--r--packages/opie-help-en/opie-help-en_cvs.bb3
-rw-r--r--packages/opie-i18n/opie-i18n_cvs.bb3
-rw-r--r--packages/opie-i18n/opie-lrelease-native_cvs.bb4
-rw-r--r--packages/opie-i18n/opie-lupdate-native_cvs.bb4
-rw-r--r--packages/opie-icon-reload/opie-icon-reload.inc4
-rw-r--r--packages/opie-icon-reload/opie-icon-reload_0.0.1.bb23
-rw-r--r--packages/opie-icon-reload/opie-icon-reload_cvs.bb5
-rw-r--r--packages/opie-init/.mtn2git_empty0
-rw-r--r--packages/opie-init/opie-init.inc43
-rw-r--r--packages/opie-init/opie-init/.mtn2git_empty0
-rw-r--r--packages/opie-init/opie-init/akita/.mtn2git_empty0
-rw-r--r--packages/opie-init/opie-init/akita/qpe.conf (renamed from packages/opie-taskbar/opie-taskbar/akita/qpe.conf)0
-rw-r--r--packages/opie-init/opie-init/c7x0/.mtn2git_empty0
-rwxr-xr-xpackages/opie-init/opie-init/c7x0/opie85
-rw-r--r--packages/opie-init/opie-init/c7x0/qpe-suspend-resume (renamed from packages/opie-taskbar/opie-taskbar/c7x0/qpe-suspend-resume)0
-rw-r--r--packages/opie-init/opie-init/c7x0/qpe.conf (renamed from packages/opie-taskbar/opie-taskbar/c7x0/qpe.conf)0
-rw-r--r--packages/opie-init/opie-init/htcuniversal/.mtn2git_empty0
-rw-r--r--packages/opie-init/opie-init/htcuniversal/qpe.conf (renamed from packages/opie-taskbar/opie-taskbar/htcuniversal/qpe.conf)0
-rw-r--r--packages/opie-init/opie-init/locale.conf0
-rw-r--r--packages/opie-init/opie-init/mnci/.mtn2git_empty0
-rwxr-xr-xpackages/opie-init/opie-init/mnci/opie (renamed from packages/opie-taskbar/opie-taskbar/mnci/opie)0
-rw-r--r--packages/opie-init/opie-init/mnci/qpe.conf (renamed from packages/opie-taskbar/opie-taskbar/mnci/qpe.conf)0
-rwxr-xr-xpackages/opie-init/opie-init/opie101
-rwxr-xr-xpackages/opie-init/opie-init/opie-reorgfiles (renamed from packages/opie-taskbar/opie-taskbar/opie-reorgfiles)0
-rw-r--r--packages/opie-init/opie-init/opie_defaults15
-rw-r--r--packages/opie-init/opie-init/qpe.conf (renamed from packages/opie-taskbar/opie-taskbar/qpe.conf)0
-rw-r--r--packages/opie-init/opie-init/simpad/.mtn2git_empty0
-rw-r--r--packages/opie-init/opie-init/simpad/qpe.conf (renamed from packages/opie-taskbar/opie-taskbar/simpad/qpe.conf)0
-rw-r--r--packages/opie-init/opie-init/spitz/.mtn2git_empty0
-rw-r--r--packages/opie-init/opie-init/spitz/qpe.conf (renamed from packages/opie-taskbar/opie-taskbar/spitz/qpe.conf)0
-rw-r--r--packages/opie-init/opie-init/tosa/.mtn2git_empty0
-rw-r--r--packages/opie-init/opie-init/tosa/qpe.conf (renamed from packages/opie-taskbar/opie-taskbar/tosa/qpe.conf)0
-rw-r--r--packages/opie-init/opie-init_1.2.2.bb10
-rw-r--r--packages/opie-irdaapplet/files/.mtn2git_empty0
-rw-r--r--packages/opie-irdaapplet/files/learning-cpp.patch13
-rw-r--r--packages/opie-irdaapplet/opie-irdaapplet_cvs.bb4
-rw-r--r--packages/opie-keytabs/opie-keytabs_cvs.bb3
-rw-r--r--packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin.inc4
-rw-r--r--packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_1.2.2.bb2
-rw-r--r--packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_cvs.bb1
-rw-r--r--packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin.inc4
-rw-r--r--packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_1.2.2.bb2
-rw-r--r--packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_cvs.bb1
-rw-r--r--packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin.inc4
-rw-r--r--packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_1.2.2.bb2
-rw-r--r--packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_cvs.bb1
-rw-r--r--packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin.inc4
-rw-r--r--packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_1.2.2.bb2
-rw-r--r--packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_cvs.bb1
-rw-r--r--packages/opie-mediaplayer1/opie-mediaplayer1-core.inc20
-rw-r--r--packages/opie-mediaplayer1/opie-mediaplayer1-core_1.2.2.bb6
-rw-r--r--packages/opie-mediaplayer1/opie-mediaplayer1-core_cvs.bb (renamed from packages/opie-mediaplayer1/opie-mediaplayer1_cvs.bb)0
-rw-r--r--packages/opie-mediaplayer1/opie-mediaplayer1-ogg-mp3_0.1.0.bb7
-rw-r--r--packages/opie-mediaplayer1/opie-mediaplayer1.inc22
-rw-r--r--packages/opie-mediaplayer1/opie-mediaplayer1_1.2.2.bb14
-rw-r--r--packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_cvs.bb3
-rw-r--r--packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_cvs.bb3
-rw-r--r--packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_cvs.bb3
-rw-r--r--packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_cvs.bb3
-rw-r--r--packages/opie-mediaplayer2/opie-mediaplayer2_cvs.bb3
-rw-r--r--packages/opie-multikey/files/.mtn2git_empty0
-rw-r--r--packages/opie-multikey/files/friendly-button-names.patch16
-rw-r--r--packages/opie-multikey/opie-multikey.inc1
-rw-r--r--packages/opie-multikey/opie-multikey_1.2.2.bb5
-rw-r--r--packages/opie-multikey/opie-multikey_cvs.bb3
-rw-r--r--packages/opie-networksettings/files/.mtn2git_empty0
-rw-r--r--packages/opie-networksettings/files/wireless.patch13
-rw-r--r--packages/opie-networksettings/opie-networksettings_cvs.bb4
-rw-r--r--packages/opie-pics/opie-pics.inc7
-rw-r--r--packages/opie-pics/opie-pics_cvs.bb3
-rw-r--r--packages/opie-sh-snes/opie-sh-snes.inc1
-rw-r--r--packages/opie-sh-snes/opie-sh-snes_cvs.bb5
-rw-r--r--packages/opie-sh/opie-sh.inc7
-rw-r--r--packages/opie-sounds/opie-sounds_cvs.bb3
-rw-r--r--packages/opie-sysinfo/opie-sysinfo_1.2.2.bb7
-rw-r--r--packages/opie-taskbar/opie-taskbar.inc37
-rwxr-xr-xpackages/opie-taskbar/opie-taskbar/c7x0/opie85
-rw-r--r--packages/opie-taskbar/opie-taskbar/htcuniversal/opie82
-rw-r--r--packages/opie-taskbar/opie-taskbar/no-builtin-qss-startup.patch11
-rwxr-xr-xpackages/opie-taskbar/opie-taskbar/opie80
-rw-r--r--packages/opie-taskbar/opie-taskbar/opie_defaults12
-rw-r--r--packages/opie-taskbar/opie-taskbar_1.2.2.bb10
-rw-r--r--packages/opie-taskbar/opie-taskbar_cvs.bb11
-rw-r--r--packages/opie-theme/opie-theme.inc3
-rw-r--r--packages/opie-theme/opie-theme_1.2.2.bb2
-rw-r--r--packages/opie-theme/opie-theme_cvs.bb1
-rw-r--r--packages/opie-todo/files/.mtn2git_empty0
-rw-r--r--packages/opie-todo/files/unbreak-logging.patch21
-rw-r--r--packages/opie-todo/opie-todo_cvs.bb4
-rw-r--r--packages/ossie/ossie-c-wavloader_svn.bb3
-rw-r--r--packages/ossie/ossie-channeldemo_svn.bb4
-rw-r--r--packages/ossie/ossie-demo_svn.bb4
-rw-r--r--packages/ossie/ossie-gpp-device_svn.bb4
-rw-r--r--packages/ossie/ossie-interpolator_svn.bb4
-rw-r--r--packages/ossie/ossie-modulator_svn.bb4
-rw-r--r--packages/ossie/ossie-nodebooter_svn.bb4
-rw-r--r--packages/ossie/ossie-randombits_svn.bb5
-rw-r--r--packages/ossie/ossie-rxdemo_svn.bb4
-rw-r--r--packages/ossie/ossie-sigproc_svn.bb6
-rw-r--r--packages/ossie/ossie-soundout-device_svn.bb6
-rw-r--r--packages/ossie/ossie-standardinterfaces_svn.bb8
-rw-r--r--packages/ossie/ossie-tx-random-data_svn.bb4
-rw-r--r--packages/ossie/ossie-usrp-device_svn.bb4
-rw-r--r--packages/ossie/ossie-usrp-tx-control_svn.bb6
-rw-r--r--packages/ossie/ossiecf_svn.bb9
-rw-r--r--packages/pam/libpam_0.79.bb2
-rw-r--r--packages/pango/pango-1.16.0/.mtn2git_empty0
-rw-r--r--packages/pango/pango-1.16.0/no-tests.patch10
-rw-r--r--packages/pango/pango-1.16.2/.mtn2git_empty0
-rw-r--r--packages/pango/pango-1.16.2/no-tests.patch10
-rw-r--r--packages/pango/pango-1.16.4/.mtn2git_empty0
-rw-r--r--packages/pango/pango-1.16.4/no-tests.patch10
-rw-r--r--packages/pango/pango_1.16.0.bb1
-rw-r--r--packages/pango/pango_1.16.2.bb1
-rw-r--r--packages/pango/pango_1.16.4.bb4
-rw-r--r--packages/parted/parted-1.8.0/.mtn2git_empty0
-rw-r--r--packages/parted/parted-1.8.0/memory_allocation.patch42
-rw-r--r--packages/parted/parted_1.8.0.bb3
-rw-r--r--packages/parted/parted_1.8.2.bb16
-rw-r--r--packages/pciutils/pciutils-2.2.4/configure-uclibc.patch14
-rw-r--r--packages/pciutils/pciutils_2.2.4.bb5
-rw-r--r--packages/perl/files/letgcc-find-errno.patch42
-rw-r--r--packages/perl/files/perl-5.8.8-gcc-4.2.patch13
-rw-r--r--packages/perl/libalgorithm-diff-perl_1.1902.bb2
-rw-r--r--packages/perl/libarchive-tar-perl_1.30.bb2
-rw-r--r--packages/perl/libcache-cache-perl_1.05.bb2
-rw-r--r--packages/perl/libclass-container-perl_0.12.bb2
-rw-r--r--packages/perl/libclass-data-inheritable-perl_0.06.bb2
-rw-r--r--packages/perl/libcompress-zlib-perl_1.42.bb8
-rw-r--r--packages/perl/libdata-optlist-perl_0.101.bb2
-rw-r--r--packages/perl/libdevel-stacktrace-perl_1.13.bb2
-rw-r--r--packages/perl/libdigest-sha1-perl_2.11.bb8
-rw-r--r--packages/perl/liberror-perl_0.17004.bb2
-rw-r--r--packages/perl/libexception-class-perl_1.23.bb2
-rw-r--r--packages/perl/libextutils-cbuilder-perl_0.18.bb2
-rw-r--r--packages/perl/libextutils-parsexs-perl_2.16.bb2
-rw-r--r--packages/perl/libintl-perl_1.16.bb1
-rw-r--r--packages/perl/libio-zlib-perl_1.04.bb2
-rw-r--r--packages/perl/libipc-sharelite-perl_0.09.bb8
-rw-r--r--packages/perl/liblocale-gettext-perl_1.05.bb8
-rw-r--r--packages/perl/liblog-dispatch-perl_2.13.bb2
-rw-r--r--packages/perl/liblog-log4perl-perl_1.06.bb2
-rw-r--r--packages/perl/libmail-sendmail-perl_0.79.bb2
-rw-r--r--packages/perl/libmath-bigint-gmp-perl_1.18.bb8
-rw-r--r--packages/perl/libmodule-build-perl_0.2805.bb2
-rw-r--r--packages/perl/libnet-ip-perl_1.25.bb2
-rw-r--r--packages/perl/libnetserver-generic-perl_1.03.bb2
-rw-r--r--packages/perl/libparams-util-perl_0.20.bb2
-rw-r--r--packages/perl/libparams-validate-perl_0.86.bb10
-rw-r--r--packages/perl/libperl6-junction-perl_1.10.bb2
-rw-r--r--packages/perl/libsub-exporter-perl_0.970.bb2
-rw-r--r--packages/perl/libsub-install-perl_0.922.bb2
-rw-r--r--packages/perl/libsub-uplevel-perl_0.13.bb2
-rw-r--r--packages/perl/libtest-builder-tester-perl_1.01.bb2
-rw-r--r--packages/perl/libtest-differences-perl_0.47.bb2
-rw-r--r--packages/perl/libtest-exception-perl_0.22.bb2
-rw-r--r--packages/perl/libtest-mockmodule-perl_0.05.bb2
-rw-r--r--packages/perl/libtest-output-perl_0.10.bb2
-rw-r--r--packages/perl/libtext-diff-perl_0.35.bb2
-rw-r--r--packages/perl/libversion-perl_0.6701.bb10
-rw-r--r--packages/perl/libxml-parser-perl_2.34.bb11
-rw-r--r--packages/perl/libyaml-perl_0.62.bb2
-rw-r--r--packages/perl/perl-5.8.4/.mtn2git_empty0
-rw-r--r--packages/perl/perl-5.8.4/Makefile.SH.patch (renamed from packages/perl/files/Makefile.SH.patch)0
-rw-r--r--packages/perl/perl-5.8.4/Makefile.patch (renamed from packages/perl/files/Makefile.patch)0
-rw-r--r--packages/perl/perl-5.8.4/config.sh-arm-linux.patch (renamed from packages/perl/files/config.sh-arm-linux.patch)0
-rw-r--r--packages/perl/perl-5.8.4/config.sh-i686-linux (renamed from packages/perl/files/config.sh-i686-linux)0
-rw-r--r--packages/perl/perl-5.8.4/config.sh-mipsel-linux (renamed from packages/perl/files/config.sh-mipsel-linux)0
-rw-r--r--packages/perl/perl-5.8.4/uclibc.patch (renamed from packages/perl/files/uclibc.patch)0
-rw-r--r--packages/perl/perl-5.8.7/config.sh-powerpc-linux66
-rw-r--r--packages/perl/perl-5.8.7/config.sh-x86_64-linux241
-rw-r--r--packages/perl/perl-5.8.8/.mtn2git_empty0
-rw-r--r--packages/perl/perl-5.8.8/09_fix_installperl.patch32
-rw-r--r--packages/perl/perl-5.8.8/52_debian_extutils_hacks.patch234
-rw-r--r--packages/perl/perl-5.8.8/53_debian_mod_paths.patch107
-rw-r--r--packages/perl/perl-5.8.8/54_debian_perldoc-r.patch16
-rw-r--r--packages/perl/perl-5.8.8/58_debian_cpan_config_path.patch14
-rw-r--r--packages/perl/perl-5.8.8/60_debian_libnet_config_path.patch16
-rw-r--r--packages/perl/perl-5.8.8/62_debian_cpan_definstalldirs.patch16
-rw-r--r--packages/perl/perl-5.8.8/64_debian_enc2xs_inc.patch28
-rw-r--r--packages/perl/perl-5.8.8/Makefile.SH.patch222
-rw-r--r--packages/perl/perl-5.8.8/Makefile.patch27
-rw-r--r--packages/perl/perl-5.8.8/config.sh1021
-rw-r--r--packages/perl/perl-5.8.8/config.sh-3258
-rw-r--r--packages/perl/perl-5.8.8/config.sh-32-be1
-rw-r--r--packages/perl/perl-5.8.8/config.sh-32-le1
-rw-r--r--packages/perl/perl-5.8.8/config.sh-6458
-rw-r--r--packages/perl/perl-5.8.8/config.sh-64-be1
-rw-r--r--packages/perl/perl-5.8.8/config.sh-64-le1
-rw-r--r--packages/perl/perl-5.8.8/generate-sh.patch16
-rw-r--r--packages/perl/perl-5.8.8/native-no-gdbminc.patch18
-rw-r--r--packages/perl/perl-5.8.8/native-nopacklist.patch84
-rw-r--r--packages/perl/perl-5.8.8/perl-configpm-switch.patch34
-rwxr-xr-xpackages/perl/perl-5.8.8/perl-configure.sh43
-rw-r--r--packages/perl/perl-5.8.8/perl-dynloader.patch23
-rw-r--r--packages/perl/perl-5.8.8/perl-moreconfig.patch16
-rw-r--r--packages/perl/perl-native_5.8.7.bb3
-rw-r--r--packages/perl/perl-native_5.8.8.bb55
-rw-r--r--packages/perl/perl-rdepends_5.8.8.inc1145
-rw-r--r--packages/perl/perl-rprovides.inc45
-rw-r--r--packages/perl/perl.inc34
-rw-r--r--packages/perl/perl_5.8.4.bb26
-rw-r--r--packages/perl/perl_5.8.7.bb60
-rw-r--r--packages/perl/perl_5.8.8.bb187
-rw-r--r--packages/php/php-5.1.4/acinclude-xml2-config.patch18
-rw-r--r--packages/php/php-5.2.0/.mtn2git_empty0
-rw-r--r--packages/php/php-5.2.0/acinclude-xml2-config.patch18
-rw-r--r--packages/php/php-5.2.0/autotools.patch95
-rw-r--r--packages/php/php-5.2.0/pear-makefile.patch11
-rw-r--r--packages/php/php-native_4.3.6.bb5
-rw-r--r--packages/php/php-native_4.4.4.bb (renamed from packages/php/php-native_4.3.10.bb)0
-rw-r--r--packages/php/php-native_5.2.0.bb9
-rw-r--r--packages/php/php_4.3.6.bb1
-rw-r--r--packages/php/php_4.4.4.bb (renamed from packages/php/php_4.3.10.bb)0
-rw-r--r--packages/php/php_5.1.4.bb21
-rw-r--r--packages/php/php_5.2.0.bb92
-rw-r--r--packages/picocom/picocom/.mtn2git_empty0
-rw-r--r--packages/picocom/picocom/gcc4.patch12
-rw-r--r--packages/picocom/picocom/nolock.patch35
-rw-r--r--packages/picocom/picocom_1.4.bb8
-rw-r--r--packages/pimlico/.mtn2git_empty0
-rw-r--r--packages/pimlico/contacts.inc16
-rw-r--r--packages/pimlico/contacts_0.5.bb5
-rw-r--r--packages/pimlico/contacts_svn.bb17
-rw-r--r--packages/pimlico/dates.inc20
-rw-r--r--packages/pimlico/dates_0.4.2.bb3
-rw-r--r--packages/pimlico/dates_svn.bb8
-rw-r--r--packages/pimlico/files/.mtn2git_empty0
-rw-r--r--packages/pimlico/files/stock_contact.pngbin0 -> 2311 bytes
-rw-r--r--packages/pimlico/files/stock_person.pngbin0 -> 2280 bytes
-rw-r--r--packages/pimlico/files/tasks-single.diff9
-rw-r--r--packages/pimlico/tasks.inc6
-rw-r--r--packages/pimlico/tasks_0.4.bb6
-rw-r--r--packages/pimlico/tasks_svn.bb8
-rw-r--r--packages/pipepanic/files/fix-datadir.patch2
-rw-r--r--packages/pipepanic/pipepanic_0.1.1.bb2
-rw-r--r--packages/poboxserver/poboxserver_1.2.5.bb4
-rw-r--r--packages/poppler/poppler.inc4
-rw-r--r--packages/poppler/poppler_0.5.1.bb14
-rw-r--r--packages/poppler/poppler_0.5.3.bb14
-rw-r--r--packages/poppler/poppler_0.5.4.bb2
-rw-r--r--packages/poptop/poptop_1.3.0.bb2
-rw-r--r--packages/portmap/portmap-5-25/.mtn2git_empty0
-rw-r--r--packages/portmap/portmap-5-25/make.patch (renamed from packages/portmap/portmap-5-24/make.patch)0
-rw-r--r--packages/portmap/portmap-5-26/.mtn2git_empty0
-rw-r--r--packages/portmap/portmap-5-26/make.patch73
-rw-r--r--packages/portmap/portmap-unslung_5-9.bb7
-rw-r--r--packages/portmap/portmap.inc15
-rw-r--r--packages/portmap/portmap_5-25.bb (renamed from packages/portmap/portmap_5-24.bb)0
-rw-r--r--packages/portmap/portmap_5-26.bb1
-rw-r--r--packages/postfix/files/internal_recipient2
-rw-r--r--packages/postfix/files/main.cf_2.063
-rw-r--r--packages/postfix/files/volatiles30
-rw-r--r--packages/postfix/postfix_2.0.20.bb4
-rw-r--r--packages/postgresql/postgresql_8.1.4.bb2
-rw-r--r--packages/postgresql/postgresql_8.1.8.bb20
-rw-r--r--packages/povray/povray_3.6.1.bb5
-rw-r--r--packages/ppp/ppp_2.4.3.bb3
-rw-r--r--packages/pptp-linux/pptp-linux_1.5.0.bb2
-rw-r--r--packages/prism3-support/files/hostap-fw-load4
-rw-r--r--packages/prism3-support/prism3-support_1.0.0.bb2
-rw-r--r--packages/prismstumbler/prismstumbler-0.7.3+0.7.4pre1/.mtn2git_empty0
-rw-r--r--packages/prismstumbler/prismstumbler-0.7.3+0.7.4pre1/gpsapi.patch13
-rw-r--r--packages/prismstumbler/prismstumbler-0.7.3/crosscompile.patch166
-rw-r--r--packages/prismstumbler/prismstumbler-0.7.3/fix-includes.patch26
-rw-r--r--packages/prismstumbler/prismstumbler-0.7.3/wireless.patch21
-rw-r--r--packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb42
-rw-r--r--packages/prismstumbler/prismstumbler_0.7.3.bb16
-rw-r--r--packages/procps/procps.inc14
-rw-r--r--packages/procps/procps_3.1.15.bb15
-rw-r--r--packages/procps/procps_3.2.1.bb16
-rw-r--r--packages/procps/procps_3.2.5.bb19
-rw-r--r--packages/procps/procps_3.2.7.bb19
-rw-r--r--packages/progear/.mtn2git_empty0
-rw-r--r--packages/progear/progear-ac/.mtn2git_empty0
-rw-r--r--packages/progear/progear-ac/paths.patch20
-rw-r--r--packages/progear/progear-ac_0.1.bb3
-rw-r--r--packages/progear/progear-battery/.mtn2git_empty0
-rw-r--r--packages/progear/progear-battery/kernel-update.patch13
-rw-r--r--packages/progear/progear-battery/paths.patch20
-rw-r--r--packages/progear/progear-battery_0.3.bb5
-rw-r--r--packages/progear/progear.inc19
-rw-r--r--packages/psplash/files/psplash-init9
-rw-r--r--packages/psplash/files/zzapsplash-init4
-rw-r--r--packages/psplash/psplash-zap_1.0.bb13
-rw-r--r--packages/psplash/psplash_svn.bb2
-rw-r--r--packages/pulseaudio/files/.mtn2git_empty0
-rw-r--r--packages/pulseaudio/files/volatiles.04_pulse2
-rw-r--r--packages/pulseaudio/pulseaudio_0.9.2.bb31
-rw-r--r--packages/pulseaudio/pulseaudio_0.9.5.bb95
-rw-r--r--packages/puppy/files/.mtn2git_empty0
-rw-r--r--packages/puppy/files/usb-header.patch20
-rw-r--r--packages/puppy/puppy_1.11.bb5
-rw-r--r--packages/puzzles/puzzles_r6915.bb47
-rw-r--r--packages/puzzles/puzzles_r7436.bb56
-rw-r--r--packages/puzzles/puzzles_svn.bb53
-rw-r--r--packages/python/python-2.4.4-manifest.inc13
-rw-r--r--packages/python/python-fuse_cvs.bb4
-rw-r--r--packages/python/python-gst/.mtn2git_empty0
-rw-r--r--packages/python/python-gst/python-path.patch24
-rw-r--r--packages/python/python-gst_0.10.7.bb22
-rw-r--r--packages/python/python-pygobject-native_2.12.3.bb7
-rw-r--r--packages/python/python-pygobject/.mtn2git_empty0
-rw-r--r--packages/python/python-pygobject/python-path.patch23
-rw-r--r--packages/python/python-pygobject_2.12.3.bb22
-rw-r--r--packages/python/python-pygtk2/acinclude.m46
-rw-r--r--packages/python/python-pygtk2_2.10.3.bb1
-rw-r--r--packages/python/python-pygtk2_2.6.3.bb36
-rw-r--r--packages/python/python-pygtk2_2.8.6.bb6
-rw-r--r--packages/python/python-pylirc_0.0.5.bb11
-rw-r--r--packages/python/python_2.4.4.bb2
-rw-r--r--packages/qiv/qiv_1.9.bb5
-rw-r--r--packages/qmake/files/linux-oe-qmake.conf3
-rw-r--r--packages/qmake/qmake-native_1.07a.bb2
-rw-r--r--packages/qmake/qmake2-native-2.01a/.mtn2git_empty0
-rw-r--r--packages/qmake/qmake2-native-2.01a/linux-oe-qmake.conf (renamed from packages/qmake/qmake2-native-2.00a/linux-oe-qmake.conf)0
-rw-r--r--packages/qmake/qmake2-native_2.00a.bb49
-rw-r--r--packages/qmake/qmake2-native_2.01a.bb49
-rw-r--r--packages/qof/qof_0.7.2.bb6
-rw-r--r--packages/qpe-games/hexatrolic_1.0beta3.bb3
-rw-r--r--packages/qpe-games/labyrinth_0.7.bb3
-rw-r--r--packages/qpe-games/win4_1.0.1.bb1
-rw-r--r--packages/qpe-games/ziq_1.1ern.bb3
-rw-r--r--packages/qpe-games/zsubhunt_1.0.0ern.bb1
-rw-r--r--packages/qpe-games/ztappy_0.9.3ern.bb1
-rw-r--r--packages/qpegps/qpegps_0.9.3.bb35
-rw-r--r--packages/qpf-fonts/qpf-qte_2.3.10.bb2
-rw-r--r--packages/qpf-fonts/qpf-unifont_1.0.bb1
-rw-r--r--packages/qpf-fonts/qpf-unismall_1.0.0.bb4
-rw-r--r--packages/qpf-fonts/terminus.bb3
-rw-r--r--packages/qt/qt-x11-free-common.inc88
-rw-r--r--packages/qt/qt-x11-free/configure.patch9
-rw-r--r--packages/qt/qt-x11-free_3.3.6.bb89
-rw-r--r--packages/qt/qt-x11-free_3.3.7.bb10
-rw-r--r--packages/qte/qte-2.3.10/c700-hardware.patch83
-rw-r--r--packages/qte/qte-2.3.10/deprecated/.mtn2git_empty0
-rw-r--r--packages/qte/qte-2.3.10/deprecated/mnci-touchscreen.patch (renamed from packages/qte/qte-2.3.10/mnci-touchscreen.patch)0
-rw-r--r--packages/qte/qte-2.3.10/deprecated/mnci.patch (renamed from packages/qte/qte-2.3.10/mnci.patch)0
-rw-r--r--packages/qte/qte-2.3.10/deprecated/openmn/.mtn2git_empty0
-rw-r--r--packages/qte/qte-2.3.10/deprecated/openmn/qkeyboard_qws.cpp (renamed from packages/qte/qte-2.3.10/openmn/qkeyboard_qws.cpp)0
-rw-r--r--packages/qte/qte-2.3.10/deprecated/openmn/qkeyboard_qws.h (renamed from packages/qte/qte-2.3.10/openmn/qkeyboard_qws.h)0
-rw-r--r--packages/qte/qte-2.3.10/kernel-asm-page.patch20
-rw-r--r--packages/qte/qte-2.3.10/kernel-keymap.patch116
-rw-r--r--packages/qte/qte-2.3.10/qpe.patch2
-rw-r--r--packages/qte/qte-2.3.10/simpad.patch60
-rw-r--r--packages/qte/qte-common_2.3.10.inc61
-rw-r--r--packages/qte/qte-common_2.3.12.inc5
-rw-r--r--packages/qte/qte-mt-static_2.3.10.bb2
-rw-r--r--packages/qte/qte-mt-static_2.3.12.bb2
-rw-r--r--packages/qte/qte-mt_2.3.10.bb2
-rw-r--r--packages/qte/qte-mt_2.3.12.bb2
-rw-r--r--packages/qte/qte_2.3.10.bb2
-rw-r--r--packages/quagga/files/volatiles.03_quagga2
-rw-r--r--packages/quagga/quagga.inc19
-rw-r--r--packages/quagga/quagga_0.99.4.bb2
-rw-r--r--packages/quagga/quagga_0.99.6.bb2
-rw-r--r--packages/quagga/quagga_0.99.7.bb3
-rw-r--r--packages/quilt/quilt-native.inc2
-rw-r--r--packages/quilt/quilt.inc1
-rw-r--r--packages/quilt/quilt_0.39.bb2
-rw-r--r--packages/quilt/quilt_0.45.bb2
-rw-r--r--packages/radlib/radlib-common.inc56
-rw-r--r--packages/radvd/files/.mtn2git_empty0
-rw-r--r--packages/radvd/files/radvd.conf.empty18
-rwxr-xr-xpackages/radvd/files/radvd.init115
-rw-r--r--packages/radvd/files/volatiles.03_radvd2
-rw-r--r--packages/radvd/radvd.inc41
-rw-r--r--packages/radvd/radvd_0.7.2.bb14
-rw-r--r--packages/radvd/radvd_1.0.bb5
-rw-r--r--packages/redboot-utils/.mtn2git_empty0
-rw-r--r--packages/redboot-utils/fconfig_20060419.bb14
-rw-r--r--packages/redboot-utils/fis_1.0.bb16
-rw-r--r--packages/reiser4progs/reiser4progs_1.0.4.bb2
-rw-r--r--packages/rfakeap/.mtn2git_empty0
-rw-r--r--packages/rfakeap/rfakeap_0.2.bb23
-rw-r--r--packages/rglueap/.mtn2git_empty0
-rw-r--r--packages/rglueap/rglueap_0.1.bb17
-rw-r--r--packages/rp-pppoe/rp-pppoe-3.8/.mtn2git_empty0
-rw-r--r--packages/rp-pppoe/rp-pppoe-3.8/configure_in_cross.patch86
-rw-r--r--packages/rp-pppoe/rp-pppoe-3.8/pppoe-no-timeout.patch16
-rw-r--r--packages/rp-pppoe/rp-pppoe-3.8/pppoe-src-restrictions.patch18
-rw-r--r--packages/rp-pppoe/rp-pppoe_3.8.bb29
-rw-r--r--packages/ruby/files/.mtn2git_empty0
-rw-r--r--packages/ruby/files/disable_wide_getaddrinfo_check.patch16
-rw-r--r--packages/ruby/files/extmk_run.patch15
-rw-r--r--packages/ruby/ruby-native_1.8.4.bb3
-rw-r--r--packages/ruby/ruby-native_1.8.5.bb3
-rw-r--r--packages/ruby/ruby.inc25
-rw-r--r--packages/ruby/ruby_1.8.3.bb11
-rw-r--r--packages/ruby/ruby_1.8.4.bb11
-rw-r--r--packages/ruby/ruby_1.8.5.bb13
-rw-r--r--packages/rxvt-unicode/rxvt-unicode_cvs.bb2
-rw-r--r--packages/s3c2410-utils/.mtn2git_empty0
-rw-r--r--packages/s3c2410-utils/files/.mtn2git_empty0
-rw-r--r--packages/s3c2410-utils/files/s3c2410_boot_usb-20060807.tar.bz2bin0 -> 3485 bytes
-rw-r--r--packages/s3c2410-utils/files/sjf2410-linux-20060807.tar.bz2bin0 -> 18471 bytes
-rw-r--r--packages/s3c2410-utils/s3c2410-boot-usb-native_20060807.bb31
-rw-r--r--packages/s3c2410-utils/s3c2410-boot-usb-native_svn.bb31
-rw-r--r--packages/s3c2410-utils/sjf2410-linux-native_20060807.bb32
-rw-r--r--packages/s3c2410-utils/sjf2410-linux-native_svn.bb32
-rw-r--r--packages/samba/samba-essential.inc9
-rw-r--r--packages/samba/samba-essential_3.0.20.bb13
-rw-r--r--packages/samba/samba.inc16
-rw-r--r--packages/samba/samba_3.0.10.bb5
-rw-r--r--packages/samba/samba_3.0.14a.bb12
-rw-r--r--packages/samba/samba_3.0.20.bb12
-rw-r--r--packages/samba/samba_3.0.23c.bb12
-rw-r--r--packages/samba/samba_3.0.5.bb5
-rw-r--r--packages/samba/samba_3.0.9.bb5
-rw-r--r--packages/sapwood/sapwood/sockets.patch75
-rw-r--r--packages/sapwood/sapwood_svn.bb7
-rw-r--r--packages/sccd/sccd_1.0.bb5
-rw-r--r--packages/scummvm/scummvm.inc2
-rw-r--r--packages/settings-daemon/settings-daemon_svn.bb12
-rw-r--r--packages/shared-mime-info/shared-mime-info_0.16.bb18
-rw-r--r--packages/shared-mime-info/shared-mime-info_0.20.bb18
-rw-r--r--packages/shasum/.mtn2git_empty0
-rw-r--r--packages/shasum/files/.mtn2git_empty0
-rw-r--r--packages/shasum/files/main.c60
-rw-r--r--packages/shasum/files/mhash_sha256.h64
-rw-r--r--packages/shasum/files/sha256.c322
-rw-r--r--packages/shasum/shasum-native.bb11
-rw-r--r--packages/shasum/shasum.inc20
-rw-r--r--packages/slugos-init/files/boot/disk9
-rw-r--r--packages/slugos-init/files/leds5
-rw-r--r--packages/slugos-init/files/turnup4
-rw-r--r--packages/slugos-init/slugos-init_0.10.bb7
-rw-r--r--packages/snes9x/snes9x-sdl-qpe_1.39.bb6
-rw-r--r--packages/snes9x/snes9x-sdl/gcc-4.1.patch28
-rw-r--r--packages/snes9x/snes9x-sdl_1.39.bb5
-rw-r--r--packages/soundtracker/soundtracker-gtk2_0.6.7.bb2
-rw-r--r--packages/sox/sox-native_13.0.0.bb19
-rw-r--r--packages/sox/sox/src-Makefile.am.patch11
-rw-r--r--packages/sox/sox_12.17.5.bb2
-rw-r--r--packages/sox/sox_13.0.0.bb18
-rw-r--r--packages/spandsp/.mtn2git_empty0
-rw-r--r--packages/spandsp/spandsp_0.0.2+0.0.3pre27.bb17
-rw-r--r--packages/spandsp/spandsp_0.0.3.bb18
-rw-r--r--packages/speex/speex_1.1.12+1.2beta1.bb3
-rw-r--r--packages/sqlite/sqlite3-3.3.12/.mtn2git_empty0
-rw-r--r--packages/sqlite/sqlite3-3.3.12/cross-compile.patch (renamed from packages/sqlite/sqlite3-3.3.7/cross-compile.patch)0
-rw-r--r--packages/sqlite/sqlite3-3.3.12/ldflags.patch70
-rw-r--r--packages/sqlite/sqlite3-3.3.12/libtool.patch (renamed from packages/sqlite/sqlite3-3.3.7/libtool.patch)0
-rw-r--r--packages/sqlite/sqlite3-3.3.13/.mtn2git_empty0
-rw-r--r--packages/sqlite/sqlite3-3.3.13/cross-compile.patch92
-rw-r--r--packages/sqlite/sqlite3-3.3.13/ldflags.patch70
-rw-r--r--packages/sqlite/sqlite3-3.3.13/libtool.patch25
-rw-r--r--packages/sqlite/sqlite3-3.3.7/ldflags.patch67
-rw-r--r--packages/sqlite/sqlite3_3.3.12.bb2
-rw-r--r--packages/sqlite/sqlite3_3.3.13.bb2
-rw-r--r--packages/sqlite/sqlite3_3.3.7.bb2
-rw-r--r--packages/starling/starling_0.1.bb7
-rw-r--r--packages/starling/starling_svn.bb24
-rw-r--r--packages/subversion/files/neon-detection.patch36
-rw-r--r--packages/subversion/subversion_1.4.0.bb9
-rw-r--r--packages/subversion/subversion_1.4.3.bb29
-rw-r--r--packages/suspend-desktop/suspend-desktop_1.0.bb2
-rw-r--r--packages/swig/swig-native_1.3.31.bb (renamed from packages/swig/swig-native_1.3.24.bb)0
-rw-r--r--packages/swig/swig_1.3.24.bb16
-rw-r--r--packages/swig/swig_1.3.31.bb16
-rw-r--r--packages/sword/sword-1.5.9/.mtn2git_empty0
-rw-r--r--packages/sword/sword-1.5.9/gcc-visibility.patch26
-rw-r--r--packages/sword/sword_1.5.9.bb3
-rw-r--r--packages/sylpheed/claws-mail_2.6.1.bb41
-rw-r--r--packages/sylpheed/claws-mail_2.7.2.bb41
-rw-r--r--packages/sylpheed/claws-plugin-gtkhtml2-viewer_0.14.1.bb20
-rw-r--r--packages/sylpheed/claws-plugin-maildir_0.24.4.bb20
-rw-r--r--packages/sylpheed/claws-plugin-mailmbox_1.12.4.bb20
-rw-r--r--packages/sylpheed/claws-plugin-rssyl_0.10.bb20
-rw-r--r--packages/sylpheed/sylpheed-claws-extra-plugins.inc13
-rw-r--r--packages/sylpheed/sylpheed-claws-plugin-gtkhtml2-viewer-0.10.1_2.3.0.bb6
-rw-r--r--packages/sylpheed/sylpheed-claws-plugin-gtkhtml2-viewer-0.10.2_2.4.0.bb6
-rw-r--r--packages/sylpheed/sylpheed-claws-plugin-maildir-0.24.1_2.3.0.bb6
-rw-r--r--packages/sylpheed/sylpheed-claws-plugin-maildir-0.24.1_2.4.0.bb6
-rw-r--r--packages/sylpheed/sylpheed-claws-plugin-mailmbox_1.12.1.bb5
-rw-r--r--packages/sylpheed/sylpheed-claws-plugin-rssyl-0.5_2.3.0.bb6
-rw-r--r--packages/sylpheed/sylpheed-claws-plugin-rssyl-0.6_2.4.0.bb6
-rw-r--r--packages/sylpheed/sylpheed-claws_2.3.1.bb34
-rw-r--r--packages/sylpheed/sylpheed-claws_2.4.0.bb34
-rw-r--r--packages/sylpheed/sylpheed_2.2.7.bb32
-rw-r--r--packages/sysconf/.mtn2git_empty0
-rw-r--r--packages/sysconf/files/.mtn2git_empty0
-rw-r--r--packages/sysconf/files/conffiles56
-rw-r--r--packages/sysconf/files/sysconf1041
-rw-r--r--packages/sysconf/files/sysconfsetup59
-rw-r--r--packages/sysconf/sysconf_0.1.bb52
-rw-r--r--packages/syslinux/syslinux-native_2.11.bb32
-rw-r--r--packages/syslinux/syslinux-native_3.11.bb38
-rw-r--r--packages/syslinux/syslinux-native_3.31.bb3
-rw-r--r--packages/syslinux/syslinux-native_3.36.bb3
-rw-r--r--packages/syslinux/syslinux.inc29
-rw-r--r--packages/syslinux/syslinux3.inc21
-rwxr-xr-xpackages/sysvinit/sysvinit/angstrom/rc54
-rw-r--r--packages/sysvinit/sysvinit/htcuniversal/inittab30
-rw-r--r--packages/sysvinit/sysvinit/oplinux-uclibc/.mtn2git_empty0
-rw-r--r--packages/sysvinit/sysvinit/oplinux-uclibc/inittab39
-rw-r--r--packages/sysvinit/sysvinit/oplinux/.mtn2git_empty0
-rw-r--r--packages/sysvinit/sysvinit/oplinux/inittab39
-rw-r--r--packages/sysvinit/sysvinit_2.86.bb4
-rw-r--r--packages/tapioca/libjingle-tapioca_0.3.10.bb14
-rw-r--r--packages/tapioca/libjingle-tapioca_svn.bb17
-rw-r--r--packages/tapioca/tapioca-xmpp_0.3.0.bb13
-rw-r--r--packages/tapioca/tapioca-xmpp_0.3.9.bb12
-rw-r--r--packages/tapioca/tapioca_0.3.0.bb18
-rw-r--r--packages/tapioca/tapioca_0.3.9.bb17
-rw-r--r--packages/tapioca/tapiocaui_0.3.0.bb11
-rw-r--r--packages/tapioca/tapiocaui_0.3.9.1.bb11
-rw-r--r--packages/tasks/task-base.bb406
-rw-r--r--packages/tasks/task-gmae.bb43
-rw-r--r--packages/tasks/task-gpe.bb24
-rw-r--r--packages/tasks/task-gpephone.bb96
-rw-r--r--packages/tasks/task-mokogateway.bb82
-rw-r--r--packages/tasks/task-mythfront.bb6
-rw-r--r--packages/tasks/task-openmoko.bb243
-rw-r--r--packages/tasks/task-opie.bb8
-rw-r--r--packages/tasks/task-ossie.bb2
-rw-r--r--packages/tasks/task-sdk-base.bb53
-rw-r--r--packages/tasks/task-sdk-extra.bb57
-rw-r--r--packages/tasks/task-sdk-gpephone.bb21
-rw-r--r--packages/tasks/task-sdk-opie.bb18
-rw-r--r--packages/tasks/task-sdk-sbox-gpe.bb20
-rw-r--r--packages/tasks/task-sdk-sbox.bb13
-rw-r--r--packages/tasks/task-sdk.bb123
-rw-r--r--packages/tasks/task-slugos.bb130
-rw-r--r--packages/tasks/task-xfce-base.bb9
-rw-r--r--packages/tcltk/tcl_8.4.11.bb3
-rw-r--r--packages/telepathy/empathy-0.1/.mtn2git_empty0
-rw-r--r--packages/telepathy/empathy-0.1/no-gnome.diff39
-rw-r--r--packages/telepathy/empathy_0.1.bb17
-rw-r--r--packages/telepathy/libtelepathy_0.0.53.bb15
-rw-r--r--packages/telepathy/telepathy-gabble-0.5.10/.mtn2git_empty0
-rw-r--r--packages/telepathy/telepathy-gabble-0.5.10/gabble.manager33
-rw-r--r--packages/telepathy/telepathy-gabble_0.3.0.bb12
-rw-r--r--packages/telepathy/telepathy-gabble_0.5.10.bb17
-rw-r--r--packages/telepathy/telepathy-glib_0.5.10.bb40
-rw-r--r--packages/telepathy/telepathy-mission-control_4.21.bb42
-rw-r--r--packages/testdisk/.mtn2git_empty0
-rw-r--r--packages/testdisk/testdisk_6.5+6.6-WIP.bb14
-rw-r--r--packages/texmaker/texmaker_1.3.bb2
-rw-r--r--packages/thttpd/files/htpasswd_shared.diff11
-rw-r--r--packages/thttpd/thttpd_2.25b.bb5
-rw-r--r--packages/tin/files/configure.patch205
-rw-r--r--packages/tin/files/makecfg-buildcc.patch24
-rw-r--r--packages/tin/tin.inc8
-rw-r--r--packages/tin/tin_1.7.3.bb21
-rw-r--r--packages/tin/tin_1.9.1.bb13
-rw-r--r--packages/tinymail/tinymail_svn.bb5
-rw-r--r--packages/tor/tor-0.1.1.26/.mtn2git_empty0
-rw-r--r--packages/tor/tor-0.1.1.26/compat.patch (renamed from packages/tor/tor-0.1.1.23/compat.patch)0
-rw-r--r--packages/tor/tor-0.1.1.26/configure.patch (renamed from packages/tor/tor-0.1.1.23/configure.patch)0
-rw-r--r--packages/tor/tor-0.1.1.26/make.patch (renamed from packages/tor/tor-0.1.1.23/make.patch)0
-rw-r--r--packages/tor/tor-0.1.1.26/openssl.patch (renamed from packages/tor/tor-0.1.1.23/openssl.patch)0
-rw-r--r--packages/tor/tor_0.1.1.23.bb24
-rw-r--r--packages/tor/tor_0.1.1.26.bb23
-rw-r--r--packages/tracker/.mtn2git_empty0
-rw-r--r--packages/tracker/files/.mtn2git_empty0
-rw-r--r--packages/tracker/files/no-ioprio.patch22
-rw-r--r--packages/tracker/tracker_0.5.4.bb14
-rw-r--r--packages/treecc/treecc_0.3.6.bb2
-rw-r--r--packages/tslib/tslib-1.0/.mtn2git_empty0
-rw-r--r--packages/tslib/tslib-1.0/fic-gta01/.mtn2git_empty0
-rw-r--r--packages/tslib/tslib-1.0/fic-gta01/ts.conf25
-rw-r--r--packages/tslib/tslib-1.0/ts.conf25
-rw-r--r--packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch120
-rw-r--r--packages/tslib/tslib/a780/tslib.sh6
-rw-r--r--packages/tslib/tslib/htctornado/.mtn2git_empty0
-rw-r--r--packages/tslib/tslib/htctornado/tslib.sh6
-rw-r--r--packages/tslib/tslib_1.0.bb5
-rw-r--r--packages/ttf-fonts/ttf-dejavu_2.15.bb (renamed from packages/ttf-fonts/ttf-dejavu_2.12.bb)0
-rw-r--r--packages/ttf-fonts/ttf-sazanami_20040629.bb10
-rw-r--r--packages/ttyrec/.mtn2git_empty0
-rw-r--r--packages/ttyrec/files/.mtn2git_empty0
-rw-r--r--packages/ttyrec/files/Makefile.patch8
-rw-r--r--packages/ttyrec/ttyrec_1.0.8.bb42
-rw-r--r--packages/tzcode/.mtn2git_empty0
-rw-r--r--packages/tzcode/tzcode-native_2007e.bb21
-rw-r--r--packages/tzdata/.mtn2git_empty0
-rw-r--r--packages/tzdata/tzdata_2007e.bb158
-rw-r--r--packages/uboot-utils/fw_env.h.patch24
-rw-r--r--packages/uboot-utils/uboot-utils_1.1.2.bb38
-rw-r--r--packages/uboot/files/fix-arm920t-eabi.patch9
-rw-r--r--packages/uboot/files/gta01_nand.h233
-rw-r--r--packages/uboot/files/qt2410.h256
-rw-r--r--packages/uboot/files/qt2410_nand.h256
-rw-r--r--packages/uboot/files/qt2410_ram.h256
-rw-r--r--packages/uboot/files/u-boot-20060807-qt2410.patch8435
-rw-r--r--packages/uboot/files/u-boot-20060907-gta01.patch901
-rw-r--r--packages/uboot/files/u-boot-20061030-ext2load_hex.patch14
-rw-r--r--packages/uboot/files/u-boot-20061030-gta01bv2.patch246
-rw-r--r--packages/uboot/files/u-boot-20061030-gta01v4.patch132
-rw-r--r--packages/uboot/files/u-boot-20061030-qt2410-gta01.patch9272
-rw-r--r--packages/uboot/u-boot-1.1.2/u-boot-emetec.patch2170
-rw-r--r--packages/uboot/u-boot-1.1.4/u-boot-dht-walnut-df2.patch186
-rw-r--r--packages/uboot/u-boot-1.1.6/.mtn2git_empty0
-rw-r--r--packages/uboot/u-boot-1.1.6/devkit-idp.patch28
-rw-r--r--packages/uboot/u-boot-1.2.0/.mtn2git_empty0
-rw-r--r--packages/uboot/u-boot-1.2.0/defconfig_lsppchd500
-rw-r--r--packages/uboot/u-boot-1.2.0/defconfig_lsppchg500
-rw-r--r--packages/uboot/u-boot-1.2.0/env-Makefile.patch (renamed from packages/uboot-utils/env-Makefile.patch)0
-rw-r--r--packages/uboot/u-boot-1.2.0/fic-gta01/.mtn2git_empty0
-rw-r--r--packages/uboot/u-boot-1.2.0/fic-gta01/fw_env.config6
-rw-r--r--packages/uboot/u-boot-1.2.0/fw_env.c.patch (renamed from packages/uboot-utils/fw_env.c.patch)0
-rw-r--r--packages/uboot/u-boot-1.2.0/fw_env.config7
-rw-r--r--packages/uboot/u-boot-1.2.0/kurobox_powerpc-20061105_target.gitdiff2286
-rw-r--r--packages/uboot/u-boot-1.2.0/qnap.diff1089
-rw-r--r--packages/uboot/u-boot-1.2.0/tools-Makefile.patch (renamed from packages/uboot-utils/tools-Makefile.patch)0
-rw-r--r--packages/uboot/u-boot-1.2.0/turbostation/.mtn2git_empty0
-rw-r--r--packages/uboot/u-boot-1.2.0/turbostation/fw_env.config7
-rw-r--r--packages/uboot/u-boot-1.2.0/u-boot-kurobox-fdt.patch29
-rw-r--r--packages/uboot/u-boot-1.2.0/u-boot-kurobox.patch5595
-rw-r--r--packages/uboot/u-boot-1.2.0/uboot-qnap.diff1100
-rw-r--r--packages/uboot/u-boot-LABEL.2006.06.30.2020/nohelloworld.patch14
-rw-r--r--packages/uboot/u-boot-mkimage-gta01-native_svn.bb18
-rw-r--r--packages/uboot/u-boot.inc31
-rw-r--r--packages/uboot/u-boot_1.1.2.bb26
-rw-r--r--packages/uboot/u-boot_1.1.4.bb21
-rw-r--r--packages/uboot/u-boot_1.1.6.bb8
-rw-r--r--packages/uboot/u-boot_1.2.0.bb25
-rw-r--r--packages/uboot/u-boot_LABEL.2006.06.30.2020.bb46
-rw-r--r--packages/uboot/u-boot_git.bb11
-rw-r--r--packages/uboot/uboot-devkitidp-pxa255_cvs.bb4
-rw-r--r--packages/uboot/uboot-gta01_svn.bb58
-rw-r--r--packages/uboot/uboot-qt2410_0.0+cvs20061030.bb41
-rw-r--r--packages/uboot/uboot-utils_1.2.0.bb43
-rw-r--r--packages/uboot/uboot_cvs.bb31
-rw-r--r--packages/uclibc/uclibc-0.9.28/i486/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-0.9.28/i486/uClibc.config177
-rw-r--r--packages/uclibc/uclibc-0.9.28/i586/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-0.9.28/i586/uClibc.config172
-rw-r--r--packages/uclibc/uclibc-0.9.28/powerpc/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-0.9.28/powerpc/uClibc.config180
-rw-r--r--packages/uclibc/uclibc-cvs/i486/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-cvs/i486/uClibc.config197
-rw-r--r--packages/uclibc/uclibc-cvs/i586/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-cvs/i586/uClibc.config197
-rw-r--r--packages/uclibc/uclibc-cvs/magicbox/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-cvs/magicbox/uClibc.config181
-rw-r--r--packages/uclibc/uclibc-cvs/powerpc/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-cvs/powerpc/uClibc.config180
-rw-r--r--packages/uclibc/uclibc.inc2
-rw-r--r--packages/uclibc/uclibc_0.9.28.bb2
-rw-r--r--packages/uclibc/uclibc_svn.bb2
-rw-r--r--packages/udev/udev_092.bb9
-rw-r--r--packages/udev/udev_097.bb9
-rw-r--r--packages/udev/udev_100.bb9
-rw-r--r--packages/uicmoc/uicmoc4-native-4.2.3/.mtn2git_empty0
-rw-r--r--packages/uicmoc/uicmoc4-native-4.2.3/fix-mkspecs.patch (renamed from packages/uicmoc/uicmoc4-native-4.1.1/fix-mkspecs.patch)0
-rw-r--r--packages/uicmoc/uicmoc4-native_4.1.1.bb42
-rw-r--r--packages/uicmoc/uicmoc4-native_4.2.3.bb41
-rw-r--r--packages/uim/uim-native_1.3.1.bb (renamed from packages/uim/uim-native_1.2.1.bb)0
-rw-r--r--packages/uim/uim.inc9
-rw-r--r--packages/uim/uim_1.2.1.bb142
-rw-r--r--packages/uim/uim_1.3.1.bb145
-rw-r--r--packages/upslug/upslug-native_1.0.bb2
-rw-r--r--packages/upslug/upslug-native_cvs.bb2
-rw-r--r--packages/upstart/.mtn2git_empty0
-rw-r--r--packages/upstart/files/.mtn2git_empty0
-rw-r--r--packages/upstart/files/autoconf_version.patch12
-rw-r--r--packages/upstart/upstart.inc26
-rw-r--r--packages/upstart/upstart_0.3.8.bb7
-rw-r--r--packages/usrp/files/fix_compile_h.patch13
-rw-r--r--packages/usrp/usrp_0.12.bb11
-rw-r--r--packages/util-linux/files/glibc-umount2.patch18
-rw-r--r--packages/util-linux/util-linux_2.12r.bb3
-rw-r--r--packages/uucp/uucp_1.07.bb6
-rw-r--r--packages/valgrind/valgrind_3.2.3.bb16
-rw-r--r--packages/vincent/.mtn2git_empty0
-rw-r--r--packages/vincent/vincent_svn.bb25
-rw-r--r--packages/vino/vino_2.16.0.bb2
-rw-r--r--packages/void11/.mtn2git_empty0
-rw-r--r--packages/void11/files/.mtn2git_empty0
-rw-r--r--packages/void11/files/oezc.patch112
-rw-r--r--packages/void11/void11_0.2.0.bb26
-rw-r--r--packages/vorbis-tools/vorbis-tools-1.0.1/remove-deprecated-curl-option.patch13
-rw-r--r--packages/vorbis-tools/vorbis-tools_1.0.1.bb11
-rw-r--r--packages/vte/vte_0.11.15.bb2
-rw-r--r--packages/webcam-server/.mtn2git_empty0
-rw-r--r--packages/webcam-server/webcam-server_0.50.bb23
-rw-r--r--packages/wireless-tools/wireless-tools_29-pre10.bb11
-rw-r--r--packages/wlan-ng/wlan-ng-modules-0.2.7/.mtn2git_empty0
-rw-r--r--packages/wlan-ng/wlan-ng-modules-0.2.7/only-the-modules.patch26
-rw-r--r--packages/wlan-ng/wlan-ng-modules_0.2.7.bb6
-rw-r--r--packages/wlan-ng/wlan-ng-utils-0.2.7/.mtn2git_empty0
-rw-r--r--packages/wlan-ng/wlan-ng-utils-0.2.7/config.in21
-rw-r--r--packages/wlan-ng/wlan-ng-utils-0.2.7/only-the-utils.patch26
-rw-r--r--packages/wlan-ng/wlan-ng-utils_0.2.7.bb69
-rw-r--r--packages/wpa-supplicant/wpa-supplicant-0.5.inc74
-rw-r--r--packages/wpa-supplicant/wpa-supplicant/.mtn2git_empty0
-rw-r--r--packages/wpa-supplicant/wpa-supplicant/gnutlsfix.patch (renamed from packages/wpa-supplicant/wpa-supplicant-0.5.5/gnutlsfix.patch)0
-rw-r--r--packages/wpa-supplicant/wpa-supplicant_0.5.1.bb56
-rw-r--r--packages/wpa-supplicant/wpa-supplicant_0.5.5.bb66
-rw-r--r--packages/wpa-supplicant/wpa-supplicant_0.5.7.bb1
-rw-r--r--packages/wv/.mtn2git_empty0
-rw-r--r--packages/wv/wv_1.2.0.bb12
-rw-r--r--packages/xaos/.mtn2git_empty0
-rw-r--r--packages/xaos/files/.mtn2git_empty0
-rw-r--r--packages/xaos/files/fix-aalib-configure.patch81
-rw-r--r--packages/xaos/files/fix-build.patch61
-rw-r--r--packages/xaos/xaos_3.2.3.bb29
-rw-r--r--packages/xcb/libxcb_0.9.93.bb47
-rw-r--r--packages/xcb/xcb-proto_0.9.93.bb19
-rw-r--r--packages/xcb/xcb-util_0.2.bb41
-rw-r--r--packages/xerces-c/xerces-c_2.6.0.bb8
-rw-r--r--packages/xerces-c/xerces-c_2.7.0.bb6
-rw-r--r--packages/xfce-mcs-manager/xfce-mcs-manager.inc24
-rw-r--r--packages/xfce-mcs-manager/xfce-mcs-manager_4.3.99.2.bb (renamed from packages/xfce-mcs-manager/xfce-mcs-manager_4.2.3.bb)0
-rw-r--r--packages/xfce-mcs-plugins/xfce-mcs-plugins_4.3.99.2.bb (renamed from packages/xfce-mcs-plugins/xfce-mcs-plugins_4.2.3.bb)0
-rw-r--r--packages/xfce-utils/xfce-utils.inc26
-rw-r--r--packages/xfce-utils/xfce-utils_4.3.99.2.bb6
-rw-r--r--packages/xfce/.mtn2git_empty0
-rw-r--r--packages/xfce/exo_0.3.2.bb17
-rw-r--r--packages/xfce/gtk-xfce-engine_2.4.1.bb9
-rw-r--r--packages/xfce/libxfce4mcs.inc (renamed from packages/libxfce4mcs/libxfce4mcs.inc)0
-rw-r--r--packages/xfce/libxfce4mcs_4.4.1.bb5
-rw-r--r--packages/xfce/libxfce4util.inc26
-rw-r--r--packages/xfce/libxfce4util_4.4.1.bb5
-rw-r--r--packages/xfce/libxfcegui4.inc (renamed from packages/libxfcegui4/libxfcegui4.inc)0
-rw-r--r--packages/xfce/libxfcegui4_4.4.1.bb5
-rw-r--r--packages/xfce/mousepad_0.2.12.bb6
-rw-r--r--packages/xfce/orage_4.4.1.bb5
-rw-r--r--packages/xfce/thunar_0.8.0.bb15
-rw-r--r--packages/xfce/xfce-mcs-manager.inc25
-rw-r--r--packages/xfce/xfce-mcs-manager_4.4.1.bb5
-rw-r--r--packages/xfce/xfce-mcs-plugins.inc (renamed from packages/xfce-mcs-plugins/xfce-mcs-plugins.inc)0
-rw-r--r--packages/xfce/xfce-mcs-plugins_4.4.1.bb5
-rw-r--r--packages/xfce/xfce-terminal_0.2.6.bb8
-rw-r--r--packages/xfce/xfce-utils.inc29
-rw-r--r--packages/xfce/xfce-utils_4.4.1.bb (renamed from packages/xfce-utils/xfce-utils_4.2.2.bb)0
-rw-r--r--packages/xfce/xfce4-appfinder.inc (renamed from packages/xfce4-goodies/xfce4-appfinder.inc)0
-rw-r--r--packages/xfce/xfce4-appfinder_4.4.1.bb (renamed from packages/xfce4-goodies/xfce4-appfinder_4.2.2.bb)0
-rw-r--r--packages/xfce/xfce4-dev-tools.inc12
-rw-r--r--packages/xfce/xfce4-dev-tools_4.4.0.bb1
-rw-r--r--packages/xfce/xfce4-icon-theme_4.4.1.bb6
-rw-r--r--packages/xfce/xfce4-mixer.inc (renamed from packages/xfce4-goodies/xfce4-mixer.inc)0
-rw-r--r--packages/xfce/xfce4-mixer_4.4.1.bb (renamed from packages/xfce4-goodies/xfce4-mixer_4.2.2.bb)0
-rw-r--r--packages/xfce/xfce4-panel.inc (renamed from packages/xfce4-panel/xfce4-panel.inc)0
-rw-r--r--packages/xfce/xfce4-panel_4.4.1.bb (renamed from packages/xfce4-panel/xfce4-panel_4.2.2.bb)0
-rw-r--r--packages/xfce/xfce4-session_4.4.1.bb4
-rw-r--r--packages/xfce/xfdesktop.inc14
-rw-r--r--packages/xfce/xfdesktop_4.4.1.bb (renamed from packages/xfdesktop/xfdesktop_4.2.2.bb)0
-rw-r--r--packages/xfce/xfprint_4.4.1.bb (renamed from packages/xfprint/xfprint_4.2.0.bb)0
-rw-r--r--packages/xfce/xfwm4-themes.inc (renamed from packages/xfwm4-themes/xfwm4-themes.inc)0
-rw-r--r--packages/xfce/xfwm4-themes_4.4.1.bb (renamed from packages/xfwm4-themes/xfwm4-themes_4.2.2.bb)0
-rw-r--r--packages/xfce/xfwm4.inc (renamed from packages/xfwm4/xfwm4.inc)0
-rw-r--r--packages/xfce/xfwm4_4.4.1.bb6
-rw-r--r--packages/xfce4-panel/xfce4-panel_4.3.99.2.bb6
-rw-r--r--packages/xfdesktop/xfdesktop.inc16
-rw-r--r--packages/xfdesktop/xfdesktop_4.3.99.2.bb6
-rw-r--r--packages/xffm/xffm_4.3.99.2.bb5
-rw-r--r--packages/xfprint/xfprint_4.3.99.2.bb9
-rw-r--r--packages/xfsprogs/xfsprogs_2.8.16.bb5
-rw-r--r--packages/xfwm4-themes/xfwm4-themes_4.3.99.2.bb5
-rw-r--r--packages/xfwm4/xfwm4_4.3.99.2.bb5
-rw-r--r--packages/xoo/files/.mtn2git_empty0
-rw-r--r--packages/xoo/files/gta01.pngbin0 -> 182899 bytes
-rw-r--r--packages/xoo/files/gta01.xml7
-rw-r--r--packages/xoo/xoo_svn.bb11
-rw-r--r--packages/xorg-app/appres_1.0.1.bb7
-rw-r--r--packages/xorg-app/beforelight_1.0.2.bb7
-rw-r--r--packages/xorg-app/editres_1.0.2.bb7
-rw-r--r--packages/xorg-app/fonttosfnt_1.0.3.bb7
-rw-r--r--packages/xorg-app/luit_1.0.2.bb7
-rw-r--r--packages/xorg-app/mkfontdir-native_1.0.3.bb11
-rw-r--r--packages/xorg-app/mkfontdir-native_X11R7.0-1.0.1.bb2
-rw-r--r--packages/xorg-app/mkfontdir-native_X11R7.1-1.0.2.bb2
-rw-r--r--packages/xorg-app/mkfontdir_1.0.3.bb7
-rw-r--r--packages/xorg-app/mkfontscale-native_X11R7.0-1.0.1.bb2
-rw-r--r--packages/xorg-app/sessreg_1.0.2.bb7
-rw-r--r--packages/xorg-app/setxkbmap_1.0.3.bb7
-rw-r--r--packages/xorg-app/twm_1.0.3.bb11
-rw-r--r--packages/xorg-app/xauth_1.0.2.bb7
-rw-r--r--packages/xorg-app/xdbedizzy_1.0.2.bb7
-rw-r--r--packages/xorg-app/xdm_1.1.3.bb8
-rw-r--r--packages/xorg-app/xdm_1.1.4.bb8
-rw-r--r--packages/xorg-app/xdpyinfo_1.0.2.bb11
-rw-r--r--packages/xorg-app/xf86dga_1.0.2.bb7
-rw-r--r--packages/xorg-app/xfs_1.0.4.bb7
-rw-r--r--packages/xorg-app/xinit_1.0.3.bb8
-rw-r--r--packages/xorg-app/xmodmap_1.0.2.bb8
-rw-r--r--packages/xorg-app/xorg-app-common.inc7
-rw-r--r--packages/xorg-app/xprop_1.0.2.bb7
-rw-r--r--packages/xorg-app/xrandr_1.2.0.bb8
-rw-r--r--packages/xorg-app/xrdb_1.0.3.bb7
-rw-r--r--packages/xorg-app/xterm_207.bb2
-rw-r--r--packages/xorg-doc/xorg-doc-common.inc3
-rw-r--r--packages/xorg-doc/xorg-sgml-doctools_1.1.1.bb8
-rw-r--r--packages/xorg-driver/xf86-input-evdev_1.1.5.bb7
-rw-r--r--packages/xorg-driver/xf86-input-keyboard_1.1.1.bb7
-rw-r--r--packages/xorg-driver/xf86-input-keyboard_1.2.0.bb7
-rw-r--r--packages/xorg-driver/xf86-input-mouse_1.1.2.bb7
-rw-r--r--packages/xorg-driver/xf86-input-mouse_1.2.1.bb7
-rw-r--r--packages/xorg-driver/xf86-input-penmount_1.2.0.bb7
-rw-r--r--packages/xorg-driver/xf86-video-ati_6.6.3.bb6
-rw-r--r--packages/xorg-driver/xf86-video-fbdev_0.3.1.bb6
-rw-r--r--packages/xorg-driver/xf86-video-i128_1.1.0.6.bb6
-rw-r--r--packages/xorg-driver/xf86-video-i810_1.6.5.bb7
-rw-r--r--packages/xorg-driver/xf86-video-newport_0.2.1.bb7
-rw-r--r--packages/xorg-driver/xf86-video-nsc_2.8.2.bb7
-rw-r--r--packages/xorg-driver/xf86-video-nv_1.2.2.1.bb6
-rw-r--r--packages/xorg-driver/xf86-video-rendition_4.1.3.bb6
-rw-r--r--packages/xorg-driver/xf86-video-s3_0.5.0.bb6
-rw-r--r--packages/xorg-driver/xf86-video-savage_2.1.2.bb6
-rw-r--r--packages/xorg-driver/xf86-video-siliconmotion_1.5.1.bb6
-rw-r--r--packages/xorg-driver/xf86-video-sis_0.9.3.bb7
-rw-r--r--packages/xorg-driver/xf86-video-tdfx_1.3.0.bb6
-rw-r--r--packages/xorg-driver/xf86-video-trident_1.2.3.bb6
-rw-r--r--packages/xorg-driver/xf86-video-tseng_1.1.1.bb6
-rw-r--r--packages/xorg-driver/xf86-video-vesa/.mtn2git_empty0
-rw-r--r--packages/xorg-driver/xf86-video-vesa/fix-includepath.patch13
-rw-r--r--packages/xorg-driver/xf86-video-vesa_1.3.0.bb8
-rw-r--r--packages/xorg-driver/xf86-video-vesa_X11R7.1-1.2.0.bb2
-rw-r--r--packages/xorg-driver/xf86-video-via_0.2.2.bb6
-rw-r--r--packages/xorg-driver/xf86-video-vmware_10.14.1.bb6
-rw-r--r--packages/xorg-driver/xf86-video-voodoo_1.1.1.bb6
-rw-r--r--packages/xorg-driver/xorg-driver-common.inc5
-rw-r--r--packages/xorg-font/encodings_1.0.2.bb8
-rw-r--r--packages/xorg-font/xorg-font-common.inc3
-rw-r--r--packages/xorg-lib/diet-x11/makekeys.diff12
-rw-r--r--packages/xorg-lib/diet-x11_1.1.1.bb11
-rw-r--r--packages/xorg-lib/diet-x11_X11R7.1-1.0.1.bb4
-rw-r--r--packages/xorg-lib/libfontenc_1.0.4.bb9
-rw-r--r--packages/xorg-lib/libice_1.0.3.bb12
-rw-r--r--packages/xorg-lib/libsm_1.0.2.bb10
-rw-r--r--packages/xorg-lib/libx11/makekeys.diff12
-rw-r--r--packages/xorg-lib/libx11_1.1.1.bb27
-rw-r--r--packages/xorg-lib/libx11_X11R7.1-1.0.1.bb5
-rw-r--r--packages/xorg-lib/libxau_1.0.3.bb11
-rw-r--r--packages/xorg-lib/libxaw_1.0.3.bb21
-rw-r--r--packages/xorg-lib/libxaw_X11R7.1-1.0.2.bb8
-rw-r--r--packages/xorg-lib/libxcomposite_0.3.1.bb12
-rw-r--r--packages/xorg-lib/libxcomposite_X11R7.1-0.3.bb2
-rw-r--r--packages/xorg-lib/libxcursor_1.1.8.bb11
-rw-r--r--packages/xorg-lib/libxdamage_1.0.4.bb11
-rw-r--r--packages/xorg-lib/libxdmcp-native_1.0.2.bb11
-rw-r--r--packages/xorg-lib/libxdmcp_1.0.2.bb11
-rw-r--r--packages/xorg-lib/libxevie_1.0.2.bb9
-rw-r--r--packages/xorg-lib/libxext_1.0.2.bb11
-rw-r--r--packages/xorg-lib/libxfixes_4.0.3.bb10
-rw-r--r--packages/xorg-lib/libxfont-native_X11R7.1-1.2.0.bb12
-rw-r--r--packages/xorg-lib/libxfont_1.2.7.bb14
-rw-r--r--packages/xorg-lib/libxfont_1.2.8.bb14
-rw-r--r--packages/xorg-lib/libxfontcache_1.0.4.bb9
-rw-r--r--packages/xorg-lib/libxft_X11R7.0-2.1.12.bb23
-rw-r--r--packages/xorg-lib/libxi_1.0.2.bb9
-rw-r--r--packages/xorg-lib/libxi_1.1.0.bb9
-rw-r--r--packages/xorg-lib/libxinerama_1.0.2.bb11
-rw-r--r--packages/xorg-lib/libxkbfile_1.0.4.bb9
-rw-r--r--packages/xorg-lib/libxmu_1.0.3.bb17
-rw-r--r--packages/xorg-lib/libxpm_3.5.6.bb14
-rw-r--r--packages/xorg-lib/libxrandr_1.1.2.bb10
-rw-r--r--packages/xorg-lib/libxrandr_1.2.1.bb10
-rw-r--r--packages/xorg-lib/libxrender_0.9.2.bb10
-rw-r--r--packages/xorg-lib/libxres_1.0.3.bb9
-rw-r--r--packages/xorg-lib/libxscrnsaver_1.1.2.bb14
-rw-r--r--packages/xorg-lib/libxt_1.0.4.bb20
-rw-r--r--packages/xorg-lib/libxt_1.0.5.bb20
-rw-r--r--packages/xorg-lib/libxv_1.0.3.bb9
-rw-r--r--packages/xorg-lib/libxvmc_1.0.4.bb9
-rw-r--r--packages/xorg-lib/xorg-lib-common.inc3
-rw-r--r--packages/xorg-lib/xtrans_1.0.3.bb9
-rw-r--r--packages/xorg-proto/damageproto_1.1.0.bb8
-rw-r--r--packages/xorg-proto/glproto_1.4.8.bb6
-rw-r--r--packages/xorg-proto/inputproto_1.4.1.bb4
-rw-r--r--packages/xorg-proto/inputproto_X11R7.1-1.4.bb4
-rw-r--r--packages/xorg-proto/randrproto_1.2.1.bb8
-rw-r--r--packages/xorg-proto/xorg-proto-common.inc3
-rw-r--r--packages/xorg-proto/xproto-native_7.0.10.bb9
-rw-r--r--packages/xorg-proto/xproto_7.0.10.bb6
-rw-r--r--packages/xorg-proto/xproto_X11R7.1-7.0.8.bb10
-rw-r--r--packages/xorg-util/files/.mtn2git_empty0
-rw-r--r--packages/xorg-util/files/unbreak_cross_compile.patch26
-rw-r--r--packages/xorg-util/util-macros-native_X11R7.1-1.1.5.bb11
-rw-r--r--packages/xorg-util/util-macros_X11R7.1-1.1.5.bb10
-rw-r--r--packages/xorg-xserver/xorg-xserver-common.inc27
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.2.0/.mtn2git_empty0
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.2.0/disable-xf86-dga-xorgcfg.patch (renamed from packages/xorg-xserver/xserver-kdrive/disable-xf86-dga-xorgcfg-git.patch)0
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.2.0/enable-epson.patch11
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.2.0/enable-tslib.patch12
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.2.0/enable-xcalibrate.patch51
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.2.0/optional-xkb.patch58
-rw-r--r--packages/xorg-xserver/xserver-kdrive-common.inc124
-rw-r--r--packages/xorg-xserver/xserver-kdrive-imageon_X11R7.1-1.1.0.bb52
-rw-r--r--packages/xorg-xserver/xserver-kdrive/build-fix-panoramix.patch18
-rw-r--r--packages/xorg-xserver/xserver-kdrive/devfs.patch47
-rw-r--r--packages/xorg-xserver/xserver-kdrive/kdrive-imageon.patch8851
-rw-r--r--packages/xorg-xserver/xserver-kdrive/kdrive-vidmemarea.patch756
-rw-r--r--packages/xorg-xserver/xserver-kdrive/kmode-palm.patch34
-rw-r--r--packages/xorg-xserver/xserver-kdrive/w100-fix-offscreen-bmp.patch15
-rw-r--r--packages/xorg-xserver/xserver-kdrive_1.2.0.bb19
-rw-r--r--packages/xorg-xserver/xserver-kdrive_X11R7.1-1.1.0.bb71
-rw-r--r--packages/xorg-xserver/xserver-kdrive_git.bb69
-rw-r--r--packages/xorg-xserver/xserver-xorg_1.2.0.bb10
-rw-r--r--packages/xorg-xserver/xserver-xorg_X11R7.0-1.0.1.bb2
-rw-r--r--packages/xorg-xserver/xserver-xorg_X11R7.1-1.1.0.bb2
-rw-r--r--packages/xournal/files/no-printing.diff178
-rw-r--r--packages/xournal/files/xournal.desktop9
-rw-r--r--packages/xournal/xournal_0.2.bb11
-rw-r--r--packages/xournal/xournal_0.3.1.bb11
-rw-r--r--packages/xournal/xournal_0.3.3.bb17
-rw-r--r--packages/xscreensaver/xscreensaver_4.16.bb23
-rw-r--r--packages/xscreensaver/xscreensaver_4.22.bb20
-rw-r--r--packages/xserver-common/files/calibrate-only-if-ts.patch9
-rw-r--r--packages/xserver-common/files/xserver-imageon.patch14
-rw-r--r--packages/xserver-common/xserver-common.inc9
-rw-r--r--packages/xserver-common/xserver-common_1.10.bb11
-rw-r--r--packages/xserver-common/xserver-common_1.11.bb11
-rw-r--r--packages/xserver-common/xserver-common_1.12.bb11
-rw-r--r--packages/xserver-common/xserver-common_1.13.bb15
-rw-r--r--packages/xserver-common/xserver-common_1.14.bb18
-rw-r--r--packages/xserver-common/xserver-common_1.15.bb18
-rw-r--r--packages/xserver-common/xserver-common_1.16.bb18
-rw-r--r--packages/xserver-common/xserver-common_1.3.bb12
-rw-r--r--packages/xserver-common/xserver-common_1.8.bb11
-rw-r--r--packages/xserver-common/xserver-common_1.9.bb11
-rw-r--r--packages/xserver-common/xserver-common_svn.bb15
-rw-r--r--packages/xserver-kdrive-common/.mtn2git_empty0
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/.mtn2git_empty0
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/.mtn2git_empty0
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/.mtn2git_empty0
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xdefaults3
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xinit16
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xserver111
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession26
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/.mtn2git_empty0
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/30xTs_Calibrate6
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/60xXDefaults4
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/90xXWindowManager8
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb18
-rw-r--r--packages/xserver-kdrive-common/xserver-nodm-init.bb21
-rw-r--r--packages/xserver-kdrive-common/xserver-nodm-init/.mtn2git_empty0
-rwxr-xr-xpackages/xserver-kdrive-common/xserver-nodm-init/xserver-nodm49
-rw-r--r--packages/xtscal/xtscal.inc8
-rw-r--r--packages/xtscal/xtscal/xtscal-cxk.patch30
-rw-r--r--packages/xtscal/xtscal_0.4.bb9
-rw-r--r--packages/xtscal/xtscal_0.5.1.bb10
-rw-r--r--packages/xtscal/xtscal_0.5.bb9
-rw-r--r--packages/xtscal/xtscal_0.6.3.bb13
-rw-r--r--packages/yeaphone/.mtn2git_empty0
-rw-r--r--packages/yeaphone/yeaphone_0.1.bb21
-rw-r--r--packages/zaurus-updater/encdec-updater.bb2
-rw-r--r--packages/zd1211/zd1211-firmware_1.3.bb16
-rw-r--r--packages/zd1211/zd1211-r85/.mtn2git_empty0
-rw-r--r--packages/zd1211/zd1211-r85/makefile-unslung.patch48
-rw-r--r--packages/zd1211/zd1211-r85/makefile.patch47
-rw-r--r--packages/zd1211/zd1211-r85/unslung-iwpriv-hack.patch19
-rw-r--r--packages/zd1211/zd1211-r85/unslung-writel-logging.patch14
-rw-r--r--packages/zd1211/zd1211_r85.bb33
-rw-r--r--packages/zip/zip-native_2.31.bb9
-rw-r--r--packages/zip/zip-native_2.32.bb5
-rw-r--r--packages/zip/zip.inc5
-rw-r--r--packages/zip/zip_2.31.bb2
-rw-r--r--packages/zip/zip_2.32.bb3
-rw-r--r--packages/zlib/files/visibility.patch1022
-rw-r--r--packages/zlib/files/zlib_1.2.2-8.diff.gzbin15553 -> 0 bytes
-rw-r--r--packages/zlib/zlib-native_1.1.4.bb4
-rw-r--r--packages/zlib/zlib-native_1.2.2.bb4
-rw-r--r--packages/zlib/zlib_1.1.4.bb33
-rw-r--r--packages/zlib/zlib_1.2.2.bb37
-rw-r--r--packages/zsafe/zsafe_2.1.3.bb2
-rw-r--r--packages/zudoku/zudoku_1.1.bb2
-rw-r--r--removal.txt5
-rw-r--r--site/arm-common236
-rw-r--r--site/arm-linux360
-rw-r--r--site/arm-linux-uclibc230
-rw-r--r--site/armeb-linux231
-rw-r--r--site/armeb-linux-uclibc231
-rw-r--r--site/common2
-rw-r--r--site/common-glibc6
-rw-r--r--site/common-uclibc0
-rw-r--r--site/endian-big3
-rw-r--r--site/endian-little4
-rw-r--r--site/ix86-common5
-rw-r--r--site/powerpc-common326
-rw-r--r--site/powerpc-linux310
-rw-r--r--site/powerpc-linux-uclibc200
-rw-r--r--site/sh-common4
-rw-r--r--site/sparc-linux21
-rw-r--r--site/x86_64-linux5
-rw-r--r--site/x86_64-linux-uclibc2
3711 files changed, 557901 insertions, 147632 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index c6937afde2..aa45d739e9 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -25,6 +25,16 @@ Machines: storcenter
Recipes: apache2, apc, gallery, initscripts-openprotium, linux-storcenter*,
Recipes: modphp, sccd, uboot-utils, xfsprogs
+Person: Bernhard Guillon
+Mail: Bernhard.Guillon@opensimpad.org
+Machines: simpad
+
+Person: Cliff Brake
+Mail: cbrake@bec-systems.com
+Website: http://bec-systems.com
+Interests: Support in OE for single board computers, web application support
+Machines: compulab-pxa270, logicpd-pxa270, devkitidp-pxa255
+
Person: Erik Hovland
Mail: erik@hovland.org
Distros: familiar
@@ -35,12 +45,14 @@ Recipes: at76c503a, dropbear, handhelds-sa, handhelds-pxa
Person: Florian Boor
Mail: fb@kernelconcepts.de
Website: http://fl0rian.wordpress.com, http://www.kernelconcepts.de/~fuchs/
-Machines: nokia770, netvista, htcuniversal, netbook-pro
+Machines: nokia770, netvista, htcuniversal, netbook-pro, htctornado
Distros:
-Interests: GPE, OpenSync, GPE, Matchbox, *dbus*, X, sqlite
+Interests: GPEPhone, OpenSync, GPE, Matchbox, *dbus*, X, sqlite, Palm TX,
+interests: phone devices
Recipes: gpe-*, libgpe*, libeventdb, libtododb, libcontactsdb, xserver-common
Recipes: gomunicator, mbmerlin, prismstumbler gkdial, fbreader, networkmanager
-Recipes: minimix, minilite, miniclipboard
+Recipes: minimix, minilite, miniclipboard, gpephone*
+Recipes: task-sdk-sbox, meta-sdk-sbox
Person: Graeme Gregory
Mail: dp@xora.org.uk
@@ -48,8 +60,8 @@ Website: http://www.xora.org.uk
Interests: Multimedia in gpe and on fbdev, and gtk+ apps on PDA devices.
Interests: GNOME on PDA
Recipes: mplayer, xmms, xmms-mad, xmms-tremor, dillo, links, links-x11
-Recipes: epdfview, kismet, sylpheed-claws, sylpheed, gqview, tightvnc
-Recipes: epdfview, gtk+_2.10.*
+Recipes: epdfview, sylpheed-claws, sylpheed, gqview, tightvnc
+Recipes: epdfview, gtk+_2.10.*
Person: Holger Hans Peter Freyther
Mail: zecke@selfish.org
@@ -69,7 +81,7 @@ Recipes: net-snmp, ebtables, ethtool, arpwatch, lib*-perl
Person: Joaquim Duran
Mail: joaquinduran@adtelecom.es
-Recipes: fltk
+Recipes: gtk+, gtkmm
Person: Justin Patrin
Mail: papercrane@reversefold.com
@@ -86,7 +98,7 @@ Distros: Ångström
Interests: OpenSync, GNOME, GPE, Matchbox
Recipes: abiword, bootchart, dia, farsight, freeciv, fuse, galago, geda, gimp,
Recipes: gnumeric, gobby, obby, imposter, inkscape
-Recipes: telepathy, tilibs, xchat, xournal.
+Recipes: *moko*, telepathy, tilibs, xchat, xournal.
Person: Kristoffer Ericson
Mail: Kristoffer_e1@hotmail.com
@@ -108,12 +120,12 @@ Recipes: mx31ads-kernel*
Person: Marcin Juszkiewicz
Mail: hrw@openembedded.org
Website: http://www.hrw.one.pl/
-Machines: collie, spitz, tosa
+Machines: collie, tosa, progear
Distros: OpenZaurus, celinux-test
Interests: WiFi, Opie, Qtopia fonts, Native SDK
-Recipes: hostap*, orinoco*, wpa-supplicant*, wireless-tools, keymaps
-Recipes: linux-rp, kdepimpi, subapplet, corsair, gammu, iqnotes, zbedic
-Recipes: ttf-fonts/* qpf-fonts/*
+Recipes: linux, hostap*, orinoco*, wpa-supplicant*, wireless-tools, keymaps
+Recipes: linux-rp, gammu
+Recipes: ttf-fonts/*
Person: Michael 'Mickey' Lauer
Mail: mlauer@vanille-media.de
@@ -125,8 +137,9 @@ Recipes: python*, qt*, qte*, sip*
Person: Paul Sokolovsky
Mail: pmiscml@gmail.com
Machines: h3900, h4000, hx4700
-Interests: handelds-pxa-2.6, PocketPC and Palm devices support
-Recipes: opie-*
+Interests: PocketPC and Palm devices support, Win32 support
+Interests: Cross-machine unification
+Recipes: linux-handhelds-2.6, opie-*
Person: Philip Balister
Mail: Crofton@balister.org
@@ -135,6 +148,12 @@ Machines: omap5912osk
Distros: openomap
Recipes: xerces-c, omniorb
+Person: Philippe De Swert
+Mail: philippedeswert@scarlet.be
+Recipes: gpe-*_svn, libgpe*_svn, libgtkstylus_svn, libtododb_svn
+Recipes: libxsettings*_svn, libgtkinput_svn, libschedule_svn
+Recipes: blueprobe_svn, detect-stylus_svn.
+
Person: Richard Purdie
Mail: rpurdie@rpsys.net
Distros: poky, openzaurus, Ångström
@@ -142,6 +161,14 @@ Machines: poodle, c7x0, spitz, nokia770, qemuarm, qemux86, hx2xxx
Interests: Kernels, Bitbake, Core OE infrastructure, Zaurus 2.6
Recipes: linux-rp, udev, zaurusd, task-base
+Person: Rick Farina
+Mail: sidhayn@gmail.com
+Website: http://zerochaos.aircrack-ng.org
+Interests: wifi, packet injection, security
+Distros: Angstrom
+Machines: akita
+Recipes: aircrack-ng, kismet, mdk2, rfakeap, rglueap, void11
+
Person: Rolf 'Laibsch' Leggewie
Mail: OE-recipes@rolf.leggewie.biz
Website: http://oz.leggewie.org
@@ -151,13 +178,26 @@ Machines: collie
Recipes: anthy, nunome, uim*, granule, qpobox*, qte-font-unifont*
Recipes: qpf-unismall, poboxserver, imkit*
+Person: Shane Volpe
+Mail: shanevolpe@gmail.com
+Machines: logicpd-pxa270
+Recipes: directfb, php
+
+Person: Stelios Koroneos
+Mail: skoroneos@digital-opsis.com
+Website: http://www.digital-opsis.com
+Distros: OPLinux, Angstrom
+Machines: Dht-walnut, Efika, Magicbox,Sequoia,Xilinx-ML403,RB5XX
+Interest: Cross-machine development
+Recipes: icecc.bbclass, ppc toolchain, asterisk,perl,php
+
Person: Øyvind Repvik
Mail: nail@nslu2-linux.org
-Machines: nslu2, fsg3, ixp4xx, n2100
-Distros: debianslug, openslug, slugos
+Machines: nslu2, fsg3, ixp4xx, n2100, turbostation
+Distros: foonas, slugos
Recipes: bwmon, watchdog, wakelan, libdvb, sane-backends, samba
-Recipes: ccxstream, eciadsl, ssmtp, gstreamer, ixp4xx-npe, joe
+Recipes: ccxstream, eciadsl, ssmtp, ixp4xx-npe, joe
Recipes: lcdproc, libol, mailx, mysql, musicpd, openntpd, qc-usb
Recipes: radlib, scsi-idle, rng-tools, slugos-init, syslog-ng
-Recipes: vsftpd, zd1211, wpa-supplicant
+Recipes: vsftpd, zd1211
diff --git a/classes/autotools.bbclass b/classes/autotools.bbclass
index 927e3432b7..33546e0eb6 100644
--- a/classes/autotools.bbclass
+++ b/classes/autotools.bbclass
@@ -115,7 +115,7 @@ autotools_do_configure() {
echo "no" | glib-gettextize --force --copy
fi
fi
- if grep "^AC_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
+ if grep "^[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
oenote Executing intltoolize --copy --force --automake
intltoolize --copy --force --automake
fi
diff --git a/classes/base.bbclass b/classes/base.bbclass
index 249a25a218..9752a1116c 100644
--- a/classes/base.bbclass
+++ b/classes/base.bbclass
@@ -1,5 +1,76 @@
BB_DEFAULT_TASK = "build"
+# like os.path.join but doesn't treat absolute RHS specially
+def base_path_join(a, *p):
+ path = a
+ for b in p:
+ if path == '' or path.endswith('/'):
+ path += b
+ else:
+ path += '/' + b
+ return path
+
+# for MD5/SHA handling
+def base_chk_load_parser(config_path):
+ import ConfigParser, os, bb
+ parser = ConfigParser.ConfigParser()
+ if not len(parser.read(config_path)) == 1:
+ bb.note("Can not open the '%s' ini file" % config_path)
+ raise Exception("Can not open the '%s'" % config_path)
+
+ return parser
+
+def base_chk_file(parser, pn, pv, src_uri, localpath, data):
+ import os, bb
+ # Try PN-PV-SRC_URI first and then try PN-SRC_URI
+ # we rely on the get method to create errors
+ pn_pv_src = "%s-%s-%s" % (pn,pv,src_uri)
+ pn_src = "%s-%s" % (pn,src_uri)
+ if parser.has_section(pn_pv_src):
+ md5 = parser.get(pn_pv_src, "md5")
+ sha256 = parser.get(pn_pv_src, "sha256")
+ elif parser.has_section(pn_src):
+ md5 = parser.get(pn_src, "md5")
+ sha256 = parser.get(pn_src, "sha256")
+ elif parser.has_section(src_uri):
+ md5 = parser.get(src_uri, "md5")
+ sha256 = parser.get(src_uri, "sha256")
+ else:
+ return False
+ #raise Exception("Can not find a section for '%s' '%s' and '%s'" % (pn,pv,src_uri))
+
+ # md5 and sha256 should be valid now
+ if not os.path.exists(localpath):
+ bb.note("The localpath does not exist '%s'" % localpath)
+ raise Exception("The path does not exist '%s'" % localpath)
+
+
+ # call md5(sum) and shasum
+ try:
+ md5pipe = os.popen('md5sum ' + localpath)
+ md5data = (md5pipe.readline().split() or [ "" ])[0]
+ md5pipe.close()
+ except OSError:
+ raise Exception("Executing md5sum failed")
+
+ try:
+ shapipe = os.popen('PATH=%s oe_sha256sum %s' % (bb.data.getVar('PATH', data, True), localpath))
+ shadata = (shapipe.readline().split() or [ "" ])[0]
+ shapipe.close()
+ except OSError:
+ raise Exception("Executing shasum failed")
+
+ if not md5 == md5data:
+ bb.note("The MD5Sums did not match. Wanted: '%s' and Got: '%s'" % (md5,md5data))
+ raise Exception("MD5 Sums do not match. Wanted: '%s' Got: '%s'" % (md5, md5data))
+
+ if not sha256 == shadata:
+ bb.note("The SHA256 Sums do not match. Wanted: '%s' Got: '%s'" % (sha256,shadata))
+ raise Exception("SHA256 Sums do not match. Wanted: '%s' Got: '%s'" % (sha256, shadata))
+
+ return True
+
+
def base_dep_prepend(d):
import bb;
#
@@ -7,16 +78,9 @@ def base_dep_prepend(d):
# the case where host == build == target, for now we don't work in
# that case though.
#
- deps = ""
-
- # INHIBIT_DEFAULT_DEPS doesn't apply to the patch command. Whether or not
- # we need that built is the responsibility of the patch function / class, not
- # the application.
- patchdeps = bb.data.getVar("PATCHTOOL", d, 1)
- if patchdeps:
- patchdeps = "%s-native" % patchdeps
- if not patchdeps in bb.data.getVar("PROVIDES", d, 1):
- deps = patchdeps
+ deps = "shasum-native "
+ if bb.data.getVar('PN', d, True) == "shasum-native":
+ deps = ""
if not bb.data.getVar('INHIBIT_DEFAULT_DEPS', d):
if (bb.data.getVar('HOST_SYS', d, 1) !=
@@ -41,12 +105,24 @@ def base_conditional(variable, checkvalue, truevalue, falsevalue, d):
else:
return falsevalue
-def base_contains(variable, checkvalue, truevalue, falsevalue, d):
- import bb
- if bb.data.getVar(variable,d,1).find(checkvalue) != -1:
- return truevalue
- else:
- return falsevalue
+def base_less_or_equal(variable, checkvalue, truevalue, falsevalue, d):
+ import bb
+ if float(bb.data.getVar(variable,d,1)) <= float(checkvalue):
+ return truevalue
+ else:
+ return falsevalue
+
+def base_contains(variable, checkvalues, truevalue, falsevalue, d):
+ import bb
+ matches = 0
+ if type(checkvalues).__name__ == "str":
+ checkvalues = [checkvalues]
+ for value in checkvalues:
+ if bb.data.getVar(variable,d,1).find(value) != -1:
+ matches = matches + 1
+ if matches == len(checkvalues):
+ return truevalue
+ return falsevalue
def base_both_contain(variable1, variable2, checkvalue, d):
import bb
@@ -356,6 +432,7 @@ python base_do_mrproper() {
addtask fetch
do_fetch[dirs] = "${DL_DIR}"
+do_fetch[depends] = "shasum-native:do_populate_staging"
python base_do_fetch() {
import sys
@@ -380,6 +457,40 @@ python base_do_fetch() {
except bb.fetch.FetchError:
(type, value, traceback) = sys.exc_info()
raise bb.build.FuncFailed("Fetch failed: %s" % value)
+ except bb.fetch.MD5SumError:
+ (type, value, traceback) = sys.exc_info()
+ raise bb.build.FuncFailed("MD5 failed: %s" % value)
+ except:
+ (type, value, traceback) = sys.exc_info()
+ raise bb.build.FuncFailed("Unknown fetch Error: %s" % value)
+
+
+ # Verify the SHA and MD5 sums we have in OE and check what do
+ # in
+ check_sum = bb.which(bb.data.getVar('BBPATH', d, True), "conf/checksums.ini")
+ if not check_sum:
+ bb.note("No conf/checksums.ini found, not checking checksums")
+ return
+
+ try:
+ parser = base_chk_load_parser(check_sum)
+ except:
+ bb.note("Creating the CheckSum parser failed")
+ return
+
+ pv = bb.data.getVar('PV', d, True)
+ pn = bb.data.getVar('PN', d, True)
+
+ # Check each URI
+ for url in src_uri.split():
+ localpath = bb.data.expand(bb.fetch.localpath(url, localdata), localdata)
+ (type,host,path,_,_,_) = bb.decodeurl(url)
+ uri = "%s://%s%s" % (type,host,path)
+ try:
+ if not base_chk_file(parser, pn, pv,uri, localpath, d):
+ bb.note("%s-%s-%s has no section, not checking URI" % (pn,pv,uri))
+ except Exception:
+ raise bb.build.FuncFailed("Checksum of '%s' failed" % uri)
}
addtask fetchall after do_fetch
@@ -674,9 +785,9 @@ python read_subpackage_metadata () {
bb.data.setVar(key, sdata[key], d)
}
-def base_after_parse_two(d):
- import bb
- import exceptions
+def base_after_parse(d):
+ import bb, os, exceptions
+
source_mirror_fetch = bb.data.getVar('SOURCE_MIRROR_FETCH', d, 0)
if not source_mirror_fetch:
need_host = bb.data.getVar('COMPATIBLE_HOST', d, 1)
@@ -693,8 +804,9 @@ def base_after_parse_two(d):
if this_machine and not re.match(need_machine, this_machine):
raise bb.parse.SkipPackage("incompatible with machine %s" % this_machine)
- pn = bb.data.getVar('PN', d, 1)
+
+ pn = bb.data.getVar('PN', d, 1)
# OBSOLETE in bitbake 1.7.4
srcdate = bb.data.getVar('SRCDATE_%s' % pn, d, 1)
if srcdate != None:
@@ -704,9 +816,6 @@ def base_after_parse_two(d):
if use_nls != None:
bb.data.setVar('USE_NLS', use_nls, d)
-def base_after_parse(d):
- import bb, os
-
# Make sure MACHINE *isn't* exported
bb.data.delVarFlag('MACHINE', 'export', d)
bb.data.setVarFlag('MACHINE', 'unexport', 1, d)
@@ -729,9 +838,54 @@ def base_after_parse(d):
bb.data.setVar('PACKAGE_ARCH', mach_arch, d)
return
+#
+# Various backwards compatibility stuff to be removed
+# when we switch to bitbake 1.8.2+ as a minimum version
+#
+def base_oldbitbake_workarounds(d):
+ import bb
+ from bb import __version__
+ from distutils.version import LooseVersion
+
+ if (LooseVersion(__version__) > "1.8.0"):
+ return
+
+ pn = bb.data.getVar('PN', d, True)
+ srcdate = bb.data.getVar('SRCDATE_%s' % pn, d, True)
+ if srcdate != None:
+ bb.data.setVar('SRCDATE', srcdate, d)
+ depends = bb.data.getVar('DEPENDS', d, False)
+ patchdeps = bb.data.getVar("PATCHTOOL", d, True)
+ if patchdeps:
+ patchdeps = "%s-native " % patchdeps
+ if not patchdeps in bb.data.getVar("PROVIDES", d, True):
+ depends = patchdeps + depends
+ if bb.data.inherits_class('rootfs_ipk', d):
+ depends = "ipkg-native ipkg-utils-native fakeroot-native " + depends
+ if bb.data.inherits_class('rootfs_deb', d):
+ depends = "dpkg-native apt-native fakeroot-native " + depends
+ if bb.data.inherits_class('image', d):
+ depends = "makedevs-native " + depends
+ for type in (bb.data.getVar('IMAGE_FSTYPES', d, True) or "").split():
+ deps = bb.data.getVar('IMAGE_DEPENDS_%s' % type, d) or ""
+ if deps:
+ depends = depends + " %s" % deps
+ for dep in (bb.data.getVar('EXTRA_IMAGEDEPENDS', d, True) or "").split():
+ depends = depends + " %s" % dep
+
+ packages = bb.data.getVar('PACKAGES', d, True)
+ if packages != '':
+ if bb.data.inherits_class('package_ipk', d):
+ depends = "ipkg-utils-native " + depends
+ if bb.data.inherits_class('package_deb', d):
+ depends = "dpkg-native " + depends
+ if bb.data.inherits_class('package', d):
+ depends = "${PACKAGE_DEPENDS} fakeroot-native " + depends
+
+ bb.data.setVar('DEPENDS', depends, d)
python () {
- base_after_parse_two(d)
+ base_oldbitbake_workarounds(d)
base_after_parse(d)
}
diff --git a/classes/cpan-base.bbclass b/classes/cpan-base.bbclass
new file mode 100644
index 0000000000..a5fdb33895
--- /dev/null
+++ b/classes/cpan-base.bbclass
@@ -0,0 +1,55 @@
+#
+# cpan-base providers various perl related information needed for building
+# cpan modules
+#
+FILES_${PN} += "${libdir}/perl5 ${datadir}/perl5"
+
+DEPENDS += "perl perl-native"
+RDEPENDS += "perl"
+
+# Determine the staged version of perl from the perl configuration file
+def get_perl_version(d):
+ import os, bb, re
+ cfg = bb.data.expand('${STAGING_DIR}/${HOST_SYS}/perl/config.sh', d)
+ try:
+ f = open(cfg, 'r')
+ except IOError:
+ return None
+ l = f.readlines();
+ f.close();
+ r = re.compile("version='(\d\.\d\.\d)'")
+ for s in l:
+ m = r.match(s)
+ if m:
+ return m.group(1)
+ return None
+
+# Only 5.8.7 and 5.8.4 existed at the time we moved to the new layout
+def is_new_perl(d):
+ ver = get_perl_version(d)
+ if ver == "5.8.4" or ver == "5.8.7":
+ return "no"
+ return "yes"
+
+# Determine where the library directories are
+def perl_get_libdirs(d):
+ import bb
+ libdir = bb.data.getVar('libdir', d, 1)
+ if is_new_perl(d) == "yes":
+ libdirs = libdir + '/perl5'
+ else:
+ libdirs = libdir + '/*/*/perl5'
+ return libdirs
+
+def is_target(d):
+ import bb
+ if not bb.data.inherits_class('native', d):
+ return "yes"
+ return "no"
+
+IS_NEW_PERL = "${@is_new_perl(d)}"
+PERLLIBDIRS = "${@perl_get_libdirs(d)}"
+
+FILES_${PN}-dbg += "${PERLLIBDIRS}/auto/*/.debug \
+ ${PERLLIBDIRS}/auto/*/*/.debug \
+ ${PERLLIBDIRS}/auto/*/*/*/.debug"
diff --git a/classes/cpan.bbclass b/classes/cpan.bbclass
index 74bbebf882..3b1a2b72ca 100644
--- a/classes/cpan.bbclass
+++ b/classes/cpan.bbclass
@@ -1,32 +1,49 @@
#
# This is for perl modules that use the old Makefile.PL build system
#
-FILES_${PN} += '${libdir}/perl5'
-EXTRA_CPANFLAGS = ""
+inherit cpan-base
-DEPENDS += "perl-native"
-RDEPENDS += "perl"
+EXTRA_CPANFLAGS ?= ""
+
+# Env var which tells perl if it should use host (no) or target (yes) settings
+export PERLCONFIGTARGET = "${@is_target(d)}"
cpan_do_configure () {
- perl Makefile.PL ${EXTRA_CPANFLAGS}
+ yes '' | perl Makefile.PL ${EXTRA_CPANFLAGS}
if [ "${BUILD_SYS}" != "${HOST_SYS}" ]; then
. ${STAGING_DIR}/${TARGET_SYS}/perl/config.sh
- sed -i -e "s:\(SITELIBEXP = \).*:\1${sitelibexp}:" \
- -e "s:\(SITEARCHEXP = \).*:\1${sitearchexp}:" \
- -e "s:\(INSTALLVENDORLIB = \).*:\1${D}${libdir}/perl5/site_perl/${version}:" \
- -e "s:\(INSTALLVENDORARCH = \).*:\1${D}${libdir}/perl5/site_perl/${version}:" \
- -e "s:\(LDDLFLAGS.*\)${STAGING_DIR}/${BUILD_SYS}/lib:\1${STAGING_LIBDIR}:" \
- Makefile
+ if [ "${IS_NEW_PERL}" = "yes" ]; then
+ sed -i -e "s:\(SITELIBEXP = \).*:\1${sitelibexp}:" \
+ -e "s:\(SITEARCHEXP = \).*:\1${sitearchexp}:" \
+ -e "s:\(INSTALLVENDORLIB = \).*:\1${D}${datadir}/perl5:" \
+ -e "s:\(INSTALLVENDORARCH = \).*:\1${D}${libdir}/perl5:" \
+ -e "s:\(LDDLFLAGS.*\)${STAGING_DIR}/${BUILD_SYS}/lib:\1${STAGING_LIBDIR}:" \
+ Makefile
+ else
+ sed -i -e "s:\(SITELIBEXP = \).*:\1${sitelibexp}:" \
+ -e "s:\(SITEARCHEXP = \).*:\1${sitearchexp}:" \
+ -e "s:\(INSTALLVENDORLIB = \).*:\1${D}${libdir}/perl5/site_perl/${version}:" \
+ -e "s:\(INSTALLVENDORARCH = \).*:\1${D}${libdir}/perl5/site_perl/${version}:" \
+ -e "s:\(LDDLFLAGS.*\)${STAGING_DIR}/${BUILD_SYS}/lib:\1${STAGING_LIBDIR}:" \
+ Makefile
+ fi
fi
}
cpan_do_compile () {
- # You must use gcc to link on sh
- OPTIONS=""
- if test ${TARGET_ARCH} = "sh3" -o ${TARGET_ARCH} = "sh4"; then
- OPTIONS="LD=${TARGET_ARCH}-${TARGET_OS}-gcc"
+ if [ "${IS_NEW_PERL}" = "yes" ]; then
+ oe_runmake PASTHRU_INC="${CFLAGS}" CCFLAGS="${CFLAGS}" LD="${CCLD}"
+ else
+ # You must use gcc to link on sh
+ OPTIONS=""
+ if test ${TARGET_ARCH} = "sh3" -o ${TARGET_ARCH} = "sh4"; then
+ OPTIONS="LD=${TARGET_ARCH}-${TARGET_OS}-gcc"
+ fi
+ if test ${TARGET_ARCH} = "powerpc" ; then
+ OPTIONS="LD=${TARGET_ARCH}-${TARGET_OS}-gcc"
+ fi
+ oe_runmake PASTHRU_INC="${CFLAGS}" CCFLAGS="${CFLAGS}" $OPTIONS
fi
- oe_runmake PASTHRU_INC="${CFLAGS}" CCFLAGS="${CFLAGS}" $OPTIONS
}
cpan_do_install () {
diff --git a/classes/cpan_build.bbclass b/classes/cpan_build.bbclass
index 0660ef9b82..63e716c099 100644
--- a/classes/cpan_build.bbclass
+++ b/classes/cpan_build.bbclass
@@ -1,16 +1,14 @@
#
# This is for perl modules that use the new Build.PL build system
#
-INHIBIT_NATIVE_STAGE_INSTALL = "1"
-FILES_${PN} += '${libdir}/perl5'
+inherit cpan-base
-DEPENDS += "perl-native"
-RDEPENDS += "perl"
+INHIBIT_NATIVE_STAGE_INSTALL = "1"
#
# We also need to have built libmodule-build-perl-native for
# everything except libmodule-build-perl-native itself (which uses
-# this class, but uses itself as the probider of
+# this class, but uses itself as the provider of
# libmodule-build-perl)
#
def cpan_build_dep_prepend(d):
@@ -24,24 +22,29 @@ def cpan_build_dep_prepend(d):
DEPENDS_prepend = "${@cpan_build_dep_prepend(d)}"
-def is_crosscompiling(d):
- import bb
- if not bb.data.inherits_class('native', d):
- return "yes"
- return "no"
-
cpan_build_do_configure () {
- if [ ${@is_crosscompiling(d)} == "yes" ]; then
+ if [ ${@is_target(d)} == "yes" ]; then
# build for target
. ${STAGING_DIR}/${TARGET_SYS}/perl/config.sh
- perl Build.PL --installdirs vendor \
- --destdir ${D} \
- --install_path lib="${libdir}/perl5/site_perl/${version}" \
- --install_path arch="${libdir}/perl5/site_perl/${version}/${TARGET_SYS}" \
- --install_path script=${bindir} \
- --install_path bin=${bindir} \
- --install_path bindoc=${mandir}/man1 \
- --install_path libdoc=${mandir}/man3
+ if [ "${IS_NEW_PERL}" = "yes" ]; then
+ perl Build.PL --installdirs vendor \
+ --destdir ${D} \
+ --install_path lib="${datadir}/perl5" \
+ --install_path arch="${libdir}/perl5" \
+ --install_path script=${bindir} \
+ --install_path bin=${bindir} \
+ --install_path bindoc=${mandir}/man1 \
+ --install_path libdoc=${mandir}/man3
+ else
+ perl Build.PL --installdirs vendor \
+ --destdir ${D} \
+ --install_path lib="${libdir}/perl5/site_perl/${version}" \
+ --install_path arch="${libdir}/perl5/site_perl/${version}/${TARGET_SYS}" \
+ --install_path script=${bindir} \
+ --install_path bin=${bindir} \
+ --install_path bindoc=${mandir}/man1 \
+ --install_path libdoc=${mandir}/man3
+ fi
else
# build for host
perl Build.PL --installdirs site
@@ -53,13 +56,13 @@ cpan_build_do_compile () {
}
cpan_build_do_install () {
- if [ ${@is_crosscompiling(d)} == "yes" ]; then
+ if [ ${@is_target(d)} == "yes" ]; then
perl Build install
fi
}
do_stage_append () {
- if [ ${@is_crosscompiling(d)} == "no" ]; then
+ if [ ${@is_target(d)} == "no" ]; then
perl Build install
fi
}
diff --git a/classes/devshell.bbclass b/classes/devshell.bbclass
index 14f957e12b..06152ef8bc 100644
--- a/classes/devshell.bbclass
+++ b/classes/devshell.bbclass
@@ -2,9 +2,10 @@ EXTRA_OEMAKE[export] = "1"
do_devshell[dirs] = "${S}"
do_devshell[nostamp] = "1"
-do_devshell[interactive] = "1"
+
devshell_do_devshell() {
- bash -i
+ export TERMWINDOWTITLE="Bitbake Developer Shell"
+ ${TERMCMD}
}
addtask devshell after do_patch
diff --git a/classes/dsmg600-image.bbclass b/classes/dsmg600-image.bbclass
new file mode 100644
index 0000000000..5ccf49267b
--- /dev/null
+++ b/classes/dsmg600-image.bbclass
@@ -0,0 +1,20 @@
+dsmg600_pack_image () {
+ install -d ${DEPLOY_DIR_IMAGE}/firmupgrade
+ install -m 0755 ${DEPLOY_DIR_IMAGE}/zImage-dsmg600${SITEINFO_ENDIANESS} \
+ ${DEPLOY_DIR_IMAGE}/firmupgrade/ip-ramdisk
+ install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
+ ${DEPLOY_DIR_IMAGE}/firmupgrade/rootfs.gz
+ touch ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs
+ chmod 0644 ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs
+ echo "hwid=1.0.1" >${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
+ echo "model=dsm-g600" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
+ echo "vendor=dlink" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
+ echo "" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
+ chmod 0744 ${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
+ tar -c -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-dsmg600.bin \
+ -C ${DEPLOY_DIR_IMAGE} firmupgrade
+ rm -rf ${DEPLOY_DIR_IMAGE}/firmupgrade
+}
+
+# dsmg600 is not a separate machine - use the nslu2 machine override.
+IMAGE_POSTPROCESS_COMMAND_nslu2 += "dsmg600_pack_image; "
diff --git a/classes/e.bbclass b/classes/e.bbclass
index f20c1f8b60..59f2771027 100644
--- a/classes/e.bbclass
+++ b/classes/e.bbclass
@@ -22,11 +22,12 @@ export ESMART_CONFIG = "${STAGING_BINDIR_CROSS}/esmart-config"
export FREETYPE_CONFIG = "${STAGING_BINDIR_CROSS}/freetype-config"
export IMLIB2_CONFIG = "${STAGING_BINDIR_CROSS}/imlib2-config"
-do_compile_prepend() {
- find ${S} -name Makefile | xargs sed -i 's:/usr/include:${STAGING_INCDIR}:'
- find ${S} -name Makefile | xargs sed -i 's:/usr/X11R6/include:${STAGING_INCDIR}:'
-}
+#do_compile_prepend() {
+# find ${S} -name Makefile | xargs sed -i 's:/usr/include:${STAGING_INCDIR}:'
+# find ${S} -name Makefile | xargs sed -i 's:/usr/X11R6/include:${STAGING_INCDIR}:'
+#}
-PACKAGES = "${PN}-dbg ${PN} ${PN}-themes"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-themes ${PN}-dev"
FILES_${PN} = "${libdir}/lib*.so*"
FILES_${PN}-themes = "${datadir}/${PN}/themes ${datadir}/${PN}/data ${datadir}/${PN}/fonts ${datadir}/${PN}/pointers ${datadir}/${PN}/images ${datadir}/${PN}/users ${datadir}/${PN}/images ${datadir}/${PN}/styles"
+FILES_${PN}-dev += "${includedir}" \ No newline at end of file
diff --git a/classes/gconf.bbclass b/classes/gconf.bbclass
index 686f8e6596..99f33e433a 100644
--- a/classes/gconf.bbclass
+++ b/classes/gconf.bbclass
@@ -1,4 +1,4 @@
-DEPENDS += "gconf"
+DEPENDS += "gconf gconf-native"
gconf_postinst() {
if [ "$1" = configure ]; then
diff --git a/classes/gpephone.bbclass b/classes/gpephone.bbclass
new file mode 100644
index 0000000000..57867b5d4b
--- /dev/null
+++ b/classes/gpephone.bbclass
@@ -0,0 +1,7 @@
+DEPENDS_prepend = "coreutils-native virtual/libintl intltool-native "
+GPE_TARBALL_SUFFIX ?= "gz"
+SRC_URI = "${GPEPHONE_MIRROR}/${PN}-${PV}/${PN}-${PV}.tar.${GPE_TARBALL_SUFFIX}"
+FILES_${PN} += "${datadir}/gpe ${datadir}/application-registry"
+SECTION ?= "gpe"
+
+inherit gettext autotools
diff --git a/classes/gtk-binver.bbclass b/classes/gtk-binver.bbclass
index d59145e641..8398cc5424 100644
--- a/classes/gtk-binver.bbclass
+++ b/classes/gtk-binver.bbclass
@@ -1,7 +1,7 @@
def gtkbinver_find(d):
import bb
try:
- for line in file( "%s/pkgconfig/gtk+-2.0.pc" % bb.data.getVar('STAGING_DATADIR', d, 1) ).readlines():
+ for line in file( "%s/gtk+-2.0.pc" % bb.data.getVar('PKG_CONFIG_PATH', d, 1) ).readlines():
if line.startswith( "gtk_binary_version" ):
# bb.note( "gtk_binary_version = '%s'" % line.split("=")[1].strip() )
return line.split("=")[1].strip()
diff --git a/classes/image.bbclass b/classes/image.bbclass
index 2beb137aef..5f1dfa2dce 100644
--- a/classes/image.bbclass
+++ b/classes/image.bbclass
@@ -1,27 +1,33 @@
-inherit rootfs_ipk
+inherit rootfs_${IMAGE_PKGTYPE}
+
+PACKAGES = ""
# We need to recursively follow RDEPENDS and RRECOMMENDS for images
BUILD_ALL_DEPS = "1"
-do_rootfs[recrdeptask] = "do_package_write"
+do_rootfs[recrdeptask] = "do_package_write do_deploy do_populate_staging"
# Images are generally built explicitly, do not need to be part of world.
EXCLUDE_FROM_WORLD = "1"
USE_DEVFS ?= "0"
-DEPENDS += "makedevs-native"
+PID = "${@os.getpid()}"
+
PACKAGE_ARCH = "${MACHINE_ARCH}"
-def get_image_deps(d):
- import bb
- str = ""
- for type in (bb.data.getVar('IMAGE_FSTYPES', d, 1) or "").split():
- deps = bb.data.getVar('IMAGE_DEPENDS_%s' % type, d) or ""
- if deps:
- str += " %s" % deps
- return str
+do_rootfs[depends] += "makedevs-native:do_populate_staging fakeroot-native:do_populate_staging"
-DEPENDS += "${@get_image_deps(d)}"
+python () {
+ import bb
+
+ deps = bb.data.getVarFlag('do_rootfs', 'depends', d) or ""
+ for type in (bb.data.getVar('IMAGE_FSTYPES', d, True) or "").split():
+ for dep in ((bb.data.getVar('IMAGE_DEPENDS_%s' % type, d) or "").split() or []):
+ deps += " %s:do_populate_staging" % dep
+ for dep in (bb.data.getVar('EXTRA_IMAGEDEPENDS', d, True) or "").split():
+ deps += " %s:do_populate_staging" % dep
+ bb.data.setVarFlag('do_rootfs', 'depends', deps, d)
+}
#
# Get a list of files containing device tables to create.
@@ -46,6 +52,17 @@ def get_devtable_list(d):
IMAGE_POSTPROCESS_COMMAND ?= ""
+# some default locales
+IMAGE_LINGUAS ?= "de-de fr-fr en-gb"
+
+LINGUAS_INSTALL = "${@" ".join(map(lambda s: "locale-base-%s" % s, bb.data.getVar('IMAGE_LINGUAS', d, 1).split()))}"
+
+ROOTFS_POSTPROCESS_COMMAND ?= ""
+
+do_rootfs[nostamp] = "1"
+do_rootfs[dirs] = "${TOPDIR}"
+do_build[nostamp] = "1"
+
# Must call real_do_rootfs() from inside here, rather than as a separate
# task, so that we have a single fakeroot context for the whole process.
fakeroot do_rootfs () {
@@ -59,15 +76,16 @@ fakeroot do_rootfs () {
done
fi
- real_do_rootfs
+ rootfs_${IMAGE_PKGTYPE}_do_rootfs
insert_feed_uris
- rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/lists/oe
+ rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/lists/*
${IMAGE_PREPROCESS_COMMAND}
export TOPDIR=${TOPDIR}
+ export MACHINE=${MACHINE}
for type in ${IMAGE_FSTYPES}; do
if test -z "$FAKEROOTKEY"; then
@@ -75,6 +93,10 @@ fakeroot do_rootfs () {
else
bbimage -n "${IMAGE_NAME}" -t "$type" -e "${FILE}"
fi
+
+ cd ${DEPLOY_DIR_IMAGE}/
+ rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.$type
+ ln -s ${IMAGE_NAME}.rootfs.$type ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.$type
done
${IMAGE_POSTPROCESS_COMMAND}
@@ -97,3 +119,62 @@ insert_feed_uris () {
echo "src/gz $feed_name $feed_uri" >> ${IMAGE_ROOTFS}/etc/ipkg/${feed_name}-feed.conf
done
}
+
+log_check() {
+ set +x
+ for target in $*
+ do
+ lf_path="${WORKDIR}/temp/log.do_$target.${PID}"
+
+ echo "log_check: Using $lf_path as logfile"
+
+ if test -e "$lf_path"
+ then
+ rootfs_${IMAGE_PKGTYPE}_log_check $target $lf_path
+ else
+ echo "Cannot find logfile [$lf_path]"
+ fi
+ echo "Logfile is clean"
+ done
+
+ set -x
+}
+
+# set '*' as the rootpassword so the images
+# can decide if they want it or not
+
+zap_root_password () {
+ sed 's%^root:[^:]*:%root:*:%' < ${IMAGE_ROOTFS}/etc/passwd >${IMAGE_ROOTFS}/etc/passwd.new
+ mv ${IMAGE_ROOTFS}/etc/passwd.new ${IMAGE_ROOTFS}/etc/passwd
+}
+
+create_etc_timestamp() {
+ date +%2m%2d%2H%2M%Y >${IMAGE_ROOTFS}/etc/timestamp
+}
+
+# Turn any symbolic /sbin/init link into a file
+remove_init_link () {
+ if [ -h ${IMAGE_ROOTFS}/sbin/init ]; then
+ LINKFILE=${IMAGE_ROOTFS}`readlink ${IMAGE_ROOTFS}/sbin/init`
+ rm ${IMAGE_ROOTFS}/sbin/init
+ cp $LINKFILE ${IMAGE_ROOTFS}/sbin/init
+ fi
+}
+
+make_zimage_symlink_relative () {
+ if [ -L ${IMAGE_ROOTFS}/boot/zImage ]; then
+ (cd ${IMAGE_ROOTFS}/boot/ && for i in `ls zImage-* | sort`; do ln -sf $i zImage; done)
+ fi
+}
+
+# Make login manager(s) enable automatic login.
+# Useful for devices where we do not want to log in at all (e.g. phones)
+set_image_autologin () {
+ sed -i 's%^AUTOLOGIN=\"false"%AUTOLOGIN="true"%g' ${IMAGE_ROOTFS}/etc/sysconfig/gpelogin
+}
+
+
+# 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
+
+addtask rootfs before do_build after do_install
diff --git a/classes/insane.bbclass b/classes/insane.bbclass
index e30375288d..c3a211eefd 100644
--- a/classes/insane.bbclass
+++ b/classes/insane.bbclass
@@ -9,6 +9,7 @@
# -Check if .la files wrongly point to workdir
# -Check if .pc files wrongly point to workdir
# -Check if packages contains .debug directories or .so files where they should be in -dev or -dbg
+# -Check if config.log contains traces to broken autoconf tests
#
@@ -21,26 +22,210 @@
# We play a special package function
inherit package
PACKAGE_DEPENDS += "pax-utils-native"
+#PACKAGE_DEPENDS += chrpath-native"
PACKAGEFUNCS += " do_package_qa "
+
+#
+# dictionary for elf headers
+#
+# feel free to add and correct.
+#
+# TARGET_OS TARGET_ARCH MACHINE, OSABI, ABIVERSION, Little Endian, 32bit?
+def package_qa_get_machine_dict():
+ return {
+ "linux" : {
+ "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),
+ "x64_64": (62, 0, 0, True, False),
+ "ia64": (50, 0, 0, True, False),
+ "alpha": (36902, 0, 0, True, False),
+ "hppa": (15, 3, 0, False, True),
+ "m68k": ( 4, 0, 0, False, True),
+ "mips": ( 8, 0, 0, False, True),
+ "mipsel": ( 8, 0, 0, True, True),
+ "s390": (22, 0, 0, False, True),
+ "sh4": (42, 0, 0, True, True),
+ "sparc": ( 2, 0, 0, False, True),
+ },
+ "linux-uclibc" : {
+ "arm" : (40, 97, 0, True, True),
+ "armeb": (40, 97, 0, False, True),
+ "powerpc": (20, 0, 0, False, True),
+ "mipsel": ( 8, 0, 0, True, True),
+ },
+ "linux-gnueabi" : {
+ "arm" : (40, 0, 0, True, True),
+ "armeb" : (40, 0, 0, False, True),
+ },
+ }
+
+# factory for a class, embedded in a method
+def package_qa_get_elf(path, bits32):
+ class ELFFile:
+ EI_NIDENT = 16
+
+ EI_CLASS = 4
+ EI_DATA = 5
+ EI_VERSION = 6
+ EI_OSABI = 7
+ EI_ABIVERSION = 8
+
+ # possible values for EI_CLASS
+ ELFCLASSNONE = 0
+ ELFCLASS32 = 1
+ ELFCLASS64 = 2
+
+ # possible value for EI_VERSION
+ EV_CURRENT = 1
+
+ # possible values for EI_DATA
+ ELFDATANONE = 0
+ ELFDATA2LSB = 1
+ ELFDATA2MSB = 2
+
+ def my_assert(expectation, result):
+ if not expectation == result:
+ #print "'%x','%x'" % (ord(expectation), ord(result))
+ raise "This does not work as expected"
+ my_assert = staticmethod(my_assert)
+
+ def __init__(self, name):
+ self.name = name
+
+ def open(self):
+ self.file = file(self.name, "r")
+ self.data = self.file.read(ELFFile.EI_NIDENT+4)
+
+ ELFFile.my_assert(len(self.data), ELFFile.EI_NIDENT+4)
+ ELFFile.my_assert(self.data[0], chr(0x7f) )
+ ELFFile.my_assert(self.data[1], 'E')
+ ELFFile.my_assert(self.data[2], 'L')
+ ELFFile.my_assert(self.data[3], 'F')
+ if bits32 :
+ ELFFile.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS32)) # only 32 bits
+ else:
+ ELFFile.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS64)) # only 64 bits
+ ELFFile.my_assert(self.data[ELFFile.EI_VERSION], chr(ELFFile.EV_CURRENT) )
+
+ self.sex = self.data[ELFFile.EI_DATA]
+ if self.sex == chr(ELFFile.ELFDATANONE):
+ raise "Can't be"
+ elif self.sex == chr(ELFFile.ELFDATA2LSB):
+ self.sex = "<"
+ elif self.sex == chr(ELFFile.ELFDATA2MSB):
+ self.sex = ">"
+ else:
+ raise "Even more worse"
+
+ def osAbi(self):
+ return ord(self.data[ELFFile.EI_OSABI])
+
+ def abiVersion(self):
+ return ord(self.data[ELFFile.EI_ABIVERSION])
+
+ def isLittleEndian(self):
+ return self.sex == "<"
+
+ def isBigEngian(self):
+ return self.sex == ">"
+
+ def machine(self):
+ """
+ We know the sex stored in self.sex and we
+ know the position
+ """
+ import struct
+ (a,) = struct.unpack(self.sex+"H", self.data[18:20])
+ return a
+
+ return ELFFile(path)
+
+
+#
+#
+# Known Error classes
+# 0 - non dev contains .so
+# 1 - package contains a dangerous RPATH
+# 2 - package depends on debug package
+# 3 - non dbg contains .so
+# 4 - wrong architecture
+# 5 - .la contains installed=yes or reference to the workdir
+# 6 - .pc contains reference to /usr/include or workdir
+#
+#
+
+def package_qa_clean_path(path,d):
+ import bb
+ return path.replace(bb.data.getVar('TMPDIR',d,True),"")
+
+def package_qa_make_fatal_error(error_class, name, path,d):
+ """
+ decide if an error is fatal
+
+ TODO: Load a whitelist of known errors
+ """
+ if error_class == 0:
+ return False
+ else:
+ return True
+
+def package_qa_write_error(error_class, name, path, d):
+ import bb, os
+ if not bb.data.getVar('QA_LOG', d):
+ return
+
+ ERROR_NAMES =[
+ "non dev contains .so",
+ "package contains RPATH",
+ "package depends on debug package",
+ "non dbg contains .debug",
+ "wrong architecture",
+ "evil hides inside the .la",
+ "evil hides inside the .pc",
+ ]
+
+
+ log_path = os.path.join( bb.data.getVar('T', d, True), "log.qa_package" )
+ f = file( log_path, "a+")
+ print >> f, "%s, %s, %s" % (ERROR_NAMES[error_class], name, package_qa_clean_path(path,d))
+ f.close()
+
+
def package_qa_check_rpath(file,name,d):
"""
Check for dangerous RPATHs
"""
import bb, os
scanelf = os.path.join(bb.data.getVar('STAGING_BINDIR_NATIVE',d,True),'scanelf')
+ #chrpath = os.path.join(bb.data.getVar('STAGING_BINDIR_NATIVE',d,True),'chrpath')
bad_dir = bb.data.getVar('TMPDIR', d, True) + "/work"
+ bad_dir_test = bb.data.getVar('TMPDIR', d, True)
if not os.path.exists(scanelf):
- bb.note("Can not check RPATH scanelf not found")
+ bb.fatal("Can not check RPATH, scanelf (part of pax-utils-native) not found")
+ #if not os.path.exists(chrpath):
+ # bb.fatal("Can not fix RPATH, chrpath (part of chrpath-native) not found")
if not bad_dir in bb.data.getVar('WORKDIR', d, True):
- bb.error("This class assumed that WORKDIR is ${TMPDIR}/work... Not doing any check")
-
- output = os.popen("%s -Byr %s" % (scanelf,file))
- txt = output.readline().rsplit()
- if bad_dir in txt:
- bb.error("QA Issue package %s contains bad RPATH %s in file %s" % (name, txt, file))
+ bb.fatal("This class assumed that WORKDIR is ${TMPDIR}/work... Not doing any check")
- pass
+ #bb.note("%s -B -F%%r#F %s" % (scanelf,file))
+ output = os.popen("%s -B -F%%r#F %s" % (scanelf,file))
+ txt = output.readline().split()
+ #bb.note("???%s???" % bad_dir_test)
+ for line in txt:
+ #bb.note("===%s===" % line)
+ if bad_dir in line:
+ package_qa_write_error( 1, name, file, d)
+ bb.error("QA Issue package %s contains bad RPATH %s in file %s" % (name, line, file))
+ #bb.note("Fixing RPATH for you in %s" % file)
+ #os.popen("%s -r /lib %s" % (chrpath,file))
+ return False
+ return True
def package_qa_check_devdbg(path, name,d):
"""
@@ -48,51 +233,132 @@ def package_qa_check_devdbg(path, name,d):
non dev packages containing
"""
- import bb
+ import bb, os
+ sane = True
+
if not "-dev" in name:
- if path[-3:] == ".so":
- bb.error("QA Issue: non dev package contains .so: %s" % name)
+ if path[-3:] == ".so" and os.path.islink(path):
+ package_qa_write_error( 0, name, path, d )
+ bb.error("QA Issue: non -dev package contains symlink .so: %s path '%s'" % (name, package_qa_clean_path(path,d)))
+ if package_qa_make_fatal_error( 0, name, path, d ):
+ sane = False
if not "-dbg" in name:
if '.debug' in path:
- bb.error("QA Issue: non debug package contains .debug directory: %s" % name)
+ package_qa_write_error( 3, name, path, d )
+ bb.error("QA Issue: non debug package contains .debug directory: %s path %s" % (name, package_qa_clean_path(path,d)))
+ if package_qa_make_fatal_error( 3, name, path, d ):
+ sane = False
+
+ return sane
def package_qa_check_perm(path,name,d):
"""
Check the permission of files
"""
- pass
+ sane = True
+ return sane
def package_qa_check_arch(path,name,d):
"""
Check if archs are compatible
"""
- pass
+ import bb, os
+ target_os = bb.data.getVar('TARGET_OS', d, True)
+ target_arch = bb.data.getVar('TARGET_ARCH', d, True)
+
+ # FIXME: Cross package confuse this check, so just skip them
+ if bb.data.inherits_class('cross', d):
+ return True
+
+ # avoid following links to /usr/bin (e.g. on udev builds)
+ # we will check the files pointed to anyway...
+ if os.path.islink(path):
+ return True
+
+ #if this will throw an exception, then fix the dict above
+ (machine, osabi, abiversion, littleendian, bits32) = package_qa_get_machine_dict()[target_os][target_arch]
+ elf = package_qa_get_elf(path, bits32)
+ try:
+ elf.open()
+ except:
+ # just for debbugging to check the parser, remove once convinced...
+ return True
+
+ if not machine == elf.machine():
+ bb.error("Architecture did not match (%d to %d) on %s" %(machine, elf.machine(), package_qa_clean_path(path,d)))
+ return not package_qa_make_fatal_error( 4, name, path, d )
+ elif not littleendian == elf.isLittleEndian():
+ bb.error("Endiannes did not match (%d to %d) on %s" % (littleendian, elf.isLittleEndian(), package_qa_clean_path(path,d)))
+ return not package_qa_make_fatal_error( 4, name, path, d )
+
+ return True
def package_qa_check_pcla(path,name,d):
"""
- .pc and .la files should not point
+ .pc and .la files should not point to the WORKDIR
"""
+ sane = True
+ return sane
def package_qa_check_staged(path,d):
"""
Check staged la and pc files for sanity
-e.g. installed being false
+
+ As this is run after every stage we should be able
+ to find the one responsible for the errors easily even
+ if we look at every .pc and .la file
"""
- pass
+ import os, bb
+
+ sane = True
+ workdir = os.path.join(bb.data.getVar('TMPDIR', d, True), "work")
+
+ if bb.data.inherits_class("native", d):
+ installed = "installed=no"
+ else:
+ installed = "installed=yes"
+
+ # find all .la and .pc files
+ # read the content
+ # and check for stuff that looks wrong
+ for root, dirs, files in os.walk(path):
+ for file in files:
+ path = os.path.join(root,file)
+ if file[-2:] == "la":
+ file_content = open(path).read()
+ if installed in file_content or workdir in file_content:
+ bb.error("QA issue: %s failed sanity test (reference to workdir or installed)" % file )
+ if package_qa_make_fatal_error( 5, "staging", path, d):
+ sane = True
+ elif file[-2:] == "pc":
+ file_content = open(path).read()
+ if workdir in file_content:
+ bb.error("QA issue: %s failed sanity test (reference to workdir)" % file )
+ if package_qa_make_fatal_error( 6, "staging", path, d):
+ sane = False
+
+ return sane
# Walk over all files in a directory and call func
def package_qa_walk(path, funcs, package,d):
import os
+ sane = True
+
for root, dirs, files in os.walk(path):
for file in files:
path = os.path.join(root,file)
for func in funcs:
- func(path, package,d)
+ if not func(path, package,d):
+ sane = False
+
+ return sane
def package_qa_check_rdepends(pkg, workdir, d):
- import bb
+ import bb
+ sane = True
if not "-dbg" in pkg and not "task-" in pkg and not "-image" in pkg:
# Copied from package_ipk.bbclass
# boiler plate to update the data
@@ -121,7 +387,12 @@ def package_qa_check_rdepends(pkg, workdir, d):
# Now do the sanity check!!!
for rdepend in rdepends:
if "-dbg" in rdepend:
+ package_qa_write_error( 2, name, rdepend, d )
bb.error("QA issue, koen give us a better msg!!!")
+ if package_qa_make_fatal_error( 2, name, rdepend, d ):
+ sane = False
+
+ return sane
# The PACKAGE FUNC to scan each package
python do_package_qa () {
@@ -133,19 +404,38 @@ python do_package_qa () {
if not packages:
return
+ walk_sane = True
+ rdepends_sane = True
for package in packages.split():
- bb.note("Package: %s" % package)
+ bb.note("Checking Package: %s" % package)
path = "%s/install/%s" % (workdir, package)
- package_qa_walk(path, [package_qa_check_rpath, package_qa_check_devdbg, package_qa_check_perm, package_qa_check_arch], package, d)
- package_qa_check_rdepends(package, workdir, d)
+ if not package_qa_walk(path, [package_qa_check_rpath, package_qa_check_devdbg, package_qa_check_perm, package_qa_check_arch], package, d):
+ walk_sane = False
+ if not package_qa_check_rdepends(package, workdir, d):
+ rdepends_sane = False
+ if not walk_sane or not rdepends_sane:
+ bb.fatal("QA run found fatal errors. Please consider fixing them.")
+ bb.note("DONE with PACKAGE QA")
}
# The Staging Func, to check all staging
addtask qa_staging after do_populate_staging before do_build
python do_qa_staging() {
- bb.note("Staged!")
+ bb.note("QA checking staging")
+
+ if not package_qa_check_staged(bb.data.getVar('STAGING_LIBDIR',d,True), d):
+ bb.fatal("QA staging was broken by the package built above")
+}
- package_qa_check_staged(bb.data.getVar('STAGING_DIR',d,True), d)
+# Check broken config.log files
+addtask qa_configure after do_configure before do_compile
+python do_qa_configure() {
+ bb.note("Checking sanity of the config.log file")
+ import os
+ for root, dirs, files in os.walk(bb.data.getVar('WORKDIR', d, True)):
+ if "config.log" in files:
+ if os.system("grep 'CROSS COMPILE Badness:' %s > /dev/null" % (os.path.join(root,"config.log"))) == 0:
+ bb.fatal("This autoconf log indicates errors, it looked at host includes. Rerun configure task after fixing this. Path was '%s'" % root)
}
diff --git a/classes/kernel-arch.bbclass b/classes/kernel-arch.bbclass
index b331d25614..c50a7d5ebf 100644
--- a/classes/kernel-arch.bbclass
+++ b/classes/kernel-arch.bbclass
@@ -4,10 +4,14 @@
# in the kernel source "arch" directory
#
-valid_archs = "alpha cris ia64 m68knommu ppc sh \
- sparc64 x86_64 arm h8300 m32r mips \
- ppc64 sh64 um arm26 i386 m68k \
- parisc s390 sparc v850"
+valid_archs = "alpha cris ia64 \
+ x86_64,i386 \
+ m68knommu m68k ppc powerpc ppc64 \
+ sparc sparc64 \
+ arm arm26 \
+ m32r mips \
+ sh sh64 um h8300 \
+ parisc s390 v850"
def map_kernel_arch(a, d):
import bb, re
@@ -17,7 +21,6 @@ def map_kernel_arch(a, d):
if re.match('(i.86|athlon)$', a): return 'i386'
elif re.match('arm26$', a): return 'arm26'
elif re.match('armeb$', a): return 'arm'
- elif re.match('powerpc$', a): return 'ppc'
elif re.match('mipsel$', a): return 'mips'
elif re.match('sh(3|4)$', a): return 'sh'
elif a in valid_archs: return a
diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass
index 13381740a1..4cc3784b6f 100644
--- a/classes/kernel.bbclass
+++ b/classes/kernel.bbclass
@@ -14,12 +14,7 @@ KERNEL_IMAGETYPE ?= "zImage"
KERNEL_PRIORITY = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[-1]}"
-# [jbowler 20051109] ${PV}${KERNEL_LOCALVERSION} is used throughout this
-# .bbclass to (apparently) find the full 'uname -r' kernel version, this
-# should be the same as UTS_RELEASE or (in this file) KERNEL_VERSION:
-# KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(LOCALVERSION)
-# but since this is not certain this overridable setting is used here:
-KERNEL_RELEASE ?= "${PV}${KERNEL_LOCALVERSION}"
+KERNEL_RELEASE ?= "${KERNEL_VERSION}"
KERNEL_CCSUFFIX ?= ""
KERNEL_LDSUFFIX ?= ""
@@ -111,9 +106,9 @@ kernel_do_stage() {
cp -fR drivers/sound/*.h ${STAGING_KERNEL_DIR}/include/drivers/sound/
fi
- install -m 0644 .config ${STAGING_KERNEL_DIR}/config-${KERNEL_RELEASE}
- ln -sf config-${KERNEL_RELEASE} ${STAGING_KERNEL_DIR}/.config
- ln -sf config-${KERNEL_RELEASE} ${STAGING_KERNEL_DIR}/kernel-config
+ install -m 0644 .config ${STAGING_KERNEL_DIR}/config-${KERNEL_VERSION}
+ ln -sf config-${KERNEL_VERSION} ${STAGING_KERNEL_DIR}/.config
+ ln -sf config-${KERNEL_VERSION} ${STAGING_KERNEL_DIR}/kernel-config
echo "${KERNEL_VERSION}" >${STAGING_KERNEL_DIR}/kernel-abiversion
echo "${S}" >${STAGING_KERNEL_DIR}/kernel-source
echo "${KERNEL_CCSUFFIX}" >${STAGING_KERNEL_DIR}/kernel-ccsuffix
@@ -128,7 +123,7 @@ kernel_do_stage() {
fi
cp -fR include/config* ${STAGING_KERNEL_DIR}/include/
install -m 0644 ${KERNEL_OUTPUT} ${STAGING_KERNEL_DIR}/${KERNEL_IMAGETYPE}
- install -m 0644 System.map ${STAGING_KERNEL_DIR}/System.map-${KERNEL_RELEASE}
+ install -m 0644 System.map ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION}
[ -e Module.symvers ] && install -m 0644 Module.symvers ${STAGING_KERNEL_DIR}/
cp -fR scripts ${STAGING_KERNEL_DIR}/
@@ -144,9 +139,9 @@ kernel_do_install() {
install -d ${D}/${KERNEL_IMAGEDEST}
install -d ${D}/boot
- install -m 0644 ${KERNEL_OUTPUT} ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_RELEASE}
- install -m 0644 System.map ${D}/boot/System.map-${KERNEL_RELEASE}
- install -m 0644 .config ${D}/boot/config-${KERNEL_RELEASE}
+ install -m 0644 ${KERNEL_OUTPUT} ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
+ install -m 0644 System.map ${D}/boot/System.map-${KERNEL_VERSION}
+ install -m 0644 .config ${D}/boot/config-${KERNEL_VERSION}
install -d ${D}/etc/modutils
# Check if scripts/genksyms exists and if so, build it
@@ -163,32 +158,37 @@ kernel_do_configure() {
}
pkg_postinst_kernel () {
- update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_RELEASE} ${KERNEL_PRIORITY} || true
+ cd /${KERNEL_IMAGEDEST}; update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE}-${KERNEL_VERSION} ${KERNEL_PRIORITY} || true
}
pkg_postrm_kernel () {
- update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_RELEASE} || true
+ cd /${KERNEL_IMAGEDEST}; update-alternatives --remove ${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE}-${KERNEL_VERSION} || true
}
inherit cml1
EXPORT_FUNCTIONS do_compile do_install do_stage do_configure
-PACKAGES = "kernel kernel-image kernel-dev"
+# kernel-base becomes kernel-${KERNEL_VERSION}
+# kernel-image becomes kernel-image-${KERNEL_VERISON}
+PACKAGES = "kernel kernel-base kernel-image kernel-dev"
FILES = ""
FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
FILES_kernel-dev = "/boot/System.map* /boot/config*"
-RDEPENDS_kernel = "kernel-image-${KERNEL_VERSION}"
+RDEPENDS_kernel = "kernel-base"
+RDEPENDS_kernel-base = "kernel-image"
PKG_kernel-image = "kernel-image-${KERNEL_VERSION}"
+PKG_kernel-base = "kernel-${KERNEL_VERSION}"
ALLOW_EMPTY_kernel = "1"
+ALLOW_EMPTY_kernel-base = "1"
ALLOW_EMPTY_kernel-image = "1"
pkg_postinst_kernel-image () {
-if [ ! -e "$D/lib/modules/${KERNEL_RELEASE}" ]; then
- mkdir -p $D/lib/modules/${KERNEL_RELEASE}
+if [ ! -e "$D/lib/modules/${KERNEL_VERSION}" ]; then
+ mkdir -p $D/lib/modules/${KERNEL_VERSION}
fi
if [ -n "$D" ]; then
- ${HOST_PREFIX}depmod-${KERNEL_MAJOR_VERSION} -A -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_RELEASE} ${KERNEL_VERSION}
+ ${HOST_PREFIX}depmod-${KERNEL_MAJOR_VERSION} -A -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION}
else
depmod -a
fi
@@ -196,7 +196,7 @@ fi
pkg_postinst_modules () {
if [ -n "$D" ]; then
- ${HOST_PREFIX}depmod-${KERNEL_MAJOR_VERSION} -A -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_RELEASE} ${KERNEL_VERSION}
+ ${HOST_PREFIX}depmod-${KERNEL_MAJOR_VERSION} -A -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION}
else
depmod -a
update-modules || true
@@ -257,7 +257,7 @@ python populate_packages_prepend () {
bb.error("D not defined")
return
- kernelver = bb.data.getVar('KERNEL_RELEASE', d, 1)
+ kernelver = bb.data.getVar('KERNEL_VERSION', d, 1)
kernelver_stripped = kernelver
m = re.match('^(.*-hh.*)[\.\+].*$', kernelver)
if m:
@@ -312,10 +312,6 @@ python populate_packages_prepend () {
continue
on = legitimize_package_name(m.group(1))
dependency_pkg = format % on
- v = bb.data.getVar("PARALLEL_INSTALL_MODULES", d, 1) or "0"
- if v == "1":
- kv = bb.data.getVar("KERNEL_MAJOR_VERSION", d, 1)
- dependency_pkg = "%s-%s" % (dependency_pkg, kv)
dependencies.append(dependency_pkg)
return dependencies
return []
@@ -371,13 +367,13 @@ python populate_packages_prepend () {
postinst = bb.data.getVar('pkg_postinst_modules', d, 1)
postrm = bb.data.getVar('pkg_postrm_modules', d, 1)
- do_split_packages(d, root='/lib/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='update-modules kernel-image-%s' % bb.data.getVar("KERNEL_VERSION", d, 1))
+ do_split_packages(d, root='/lib/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='update-modules kernel-%s' % bb.data.getVar("KERNEL_VERSION", d, 1))
import re, os
metapkg = "kernel-modules"
bb.data.setVar('ALLOW_EMPTY_' + metapkg, "1", d)
bb.data.setVar('FILES_' + metapkg, "", d)
- blacklist = [ 'kernel-dev', 'kernel-image' ]
+ blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base' ]
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))
@@ -391,36 +387,4 @@ python populate_packages_prepend () {
bb.data.setVar('DESCRIPTION_' + metapkg, 'Kernel modules meta package', d)
packages.append(metapkg)
bb.data.setVar('PACKAGES', ' '.join(packages), d)
-
- v = bb.data.getVar("PARALLEL_INSTALL_MODULES", d, 1) or "0"
- if v == "1":
- kv = bb.data.getVar("KERNEL_MAJOR_VERSION", d, 1)
- packages = bb.data.getVar("PACKAGES", d, 1).split()
- module_re = re.compile("^kernel-module-")
-
- newmetapkg = "kernel-modules-%s" % kv
- bb.data.setVar('ALLOW_EMPTY_' + newmetapkg, "1", d)
- bb.data.setVar('FILES_' + newmetapkg, "", d)
-
- newmetapkg_rdepends = []
-
- for p in packages:
- if not module_re.match(p):
- continue
- pkg = bb.data.getVar("PKG_%s" % p, d, 1) or p
- newpkg = "%s-%s" % (pkg, kv)
- bb.data.setVar("PKG_%s" % p, newpkg, d)
- rprovides = bb.data.getVar("RPROVIDES_%s" % p, d, 1)
- if rprovides:
- rprovides = "%s %s" % (rprovides, pkg)
- else:
- rprovides = pkg
- bb.data.setVar("RPROVIDES_%s" % p, rprovides, d)
- newmetapkg_rdepends.append(newpkg)
-
- bb.data.setVar('RDEPENDS_' + newmetapkg, ' '.join(newmetapkg_rdepends), d)
- bb.data.setVar('DESCRIPTION_' + newmetapkg, 'Kernel modules meta package', d)
- packages.append(newmetapkg)
- bb.data.setVar('PACKAGES', ' '.join(packages), d)
-
}
diff --git a/classes/linux-kernel-base.bbclass b/classes/linux-kernel-base.bbclass
index e58c228080..4e2e2da373 100644
--- a/classes/linux-kernel-base.bbclass
+++ b/classes/linux-kernel-base.bbclass
@@ -32,10 +32,6 @@ def get_kernelmajorversion(p):
def linux_module_packages(s, d):
import bb, os.path
suffix = ""
- if (bb.data.getVar("PARALLEL_INSTALL_MODULES", d, 1) == "1"):
- file = bb.data.expand('${STAGING_KERNEL_DIR}/kernel-abiversion', d)
- if (os.path.exists(file)):
- suffix = "-%s" % (get_kernelmajorversion(base_read_file(file)))
return " ".join(map(lambda s: "kernel-module-%s%s" % (s.lower().replace('_', '-').replace('@', '+'), suffix), s.split()))
# that's all
diff --git a/classes/lsppchd-image.bbclass b/classes/lsppchd-image.bbclass
new file mode 100644
index 0000000000..cb13222d64
--- /dev/null
+++ b/classes/lsppchd-image.bbclass
@@ -0,0 +1,10 @@
+IMAGE_PREPROCESS_COMMAND_lsppchd += "export KPATH=`ls -tr ${IMAGE_ROOTFS}/boot/uImage-* | tail -1`; ln -sf /boot/${KPATH##*/} ${IMAGE_ROOTFS}/boot/uImage;"
+IMAGE_PREPROCESS_COMMAND_lsppchd += "sed -i -es,^id:5:initdefault:,id:3:initdefault:, ${IMAGE_ROOTFS}/etc/inittab;"
+IMAGE_PREPROCESS_COMMAND_lsppchd += "sed -i -es,^root::0,root:BTMzOOAQfESg6:0, ${IMAGE_ROOTFS}/etc/passwd;"
+IMAGE_PREPROCESS_COMMAND_lsppchd += "sed -i -es,^VERBOSE=no,VERBOSE=very, ${IMAGE_ROOTFS}/etc/default/rcS;"
+
+lsppchd_pack_image() {
+:
+}
+
+IMAGE_POSTPROCESS_COMMAND += "lsppchd_pack_image; "
diff --git a/classes/lsppchg-image.bbclass b/classes/lsppchg-image.bbclass
new file mode 100644
index 0000000000..553414224d
--- /dev/null
+++ b/classes/lsppchg-image.bbclass
@@ -0,0 +1,10 @@
+IMAGE_PREPROCESS_COMMAND_lsppchg += "export KPATH=`ls -tr ${IMAGE_ROOTFS}/boot/uImage-* | tail -1`; ln -sf /boot/${KPATH##*/} ${IMAGE_ROOTFS}/boot/uImage;"
+IMAGE_PREPROCESS_COMMAND_lsppchg += "sed -i -es,^id:5:initdefault:,id:3:initdefault:, ${IMAGE_ROOTFS}/etc/inittab;"
+IMAGE_PREPROCESS_COMMAND_lsppchg += "sed -i -es,^root::0,root:BTMzOOAQfESg6:0, ${IMAGE_ROOTFS}/etc/passwd;"
+IMAGE_PREPROCESS_COMMAND_lsppchg += "sed -i -es,^VERBOSE=no,VERBOSE=very, ${IMAGE_ROOTFS}/etc/default/rcS;"
+
+lsppchg_pack_image() {
+:
+}
+
+IMAGE_POSTPROCESS_COMMAND += "lsppchg_pack_image; "
diff --git a/classes/magicbox-image.bbclass b/classes/magicbox-image.bbclass
new file mode 100644
index 0000000000..05de28b76b
--- /dev/null
+++ b/classes/magicbox-image.bbclass
@@ -0,0 +1,37 @@
+magicbox_gen_images() {
+ # find latest kernel
+ KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/uImage* | tail -1`
+ if [ -z "$KERNEL" ]; then
+ oefatal "No kernel found in ${DEPLOY_DIR_IMAGE}. Exiting !"
+ exit 1
+ fi
+
+ #squashfs
+ #We need to prep the image so that u-boot recognizes it
+ mv ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.squashfs.bin
+ ${STAGING_BINDIR_NATIVE}/mkimage -A ppc -O linux -T ramdisk -C none -n "OPLinux-uclibc-squashfs" \
+ -d ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.squashfs.bin ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs
+ rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.squashfs.bin
+
+
+ #squashfs-lzma
+ #same as squashfs
+ mv ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs-lzma ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.squashfs-lzma.bin
+ ${STAGING_BINDIR_NATIVE}/mkimage -A ppc -O linux -T ramdisk -C none -n "OPLinux-uclibc-squashfs-lzma" \
+ -d ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.squashfs-lzma.bin ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs-lzma
+ rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.squashfs-lzma.bin
+
+ #kernel+jffs2 in a single image
+ #Add jffs2 marker at the end of the rootfs file
+ echo -ne '\xde\xad\xc0\xde' >> ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2
+
+
+ ( dd if=$KERNEL bs=65536 conv=sync; \
+ dd if=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 bs=65536 conv=sync; \
+ ) > ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.jffs2.flash.bin
+
+}
+
+
+
+IMAGE_POSTPROCESS_COMMAND += "magicbox_gen_images; "
diff --git a/classes/meta.bbclass b/classes/meta.bbclass
new file mode 100644
index 0000000000..f7d41eec26
--- /dev/null
+++ b/classes/meta.bbclass
@@ -0,0 +1,5 @@
+
+PACKAGES = ""
+
+BUILD_ALL_DEPS = "1"
+do_build[recrdeptask] = "do_build" \ No newline at end of file
diff --git a/classes/module.bbclass b/classes/module.bbclass
index 6089f90462..7eac001ec4 100644
--- a/classes/module.bbclass
+++ b/classes/module.bbclass
@@ -3,23 +3,6 @@ DEPENDS += "virtual/kernel"
inherit module-base
-python populate_packages_prepend() {
- v = bb.data.getVar("PARALLEL_INSTALL_MODULES", d, 1) or "0"
- if v == "1":
- kv = bb.data.getVar("KERNEL_VERSION", d, 1)
- packages = bb.data.getVar("PACKAGES", d, 1)
- for p in packages.split():
- pkg = bb.data.getVar("PKG_%s" % p, d, 1) or p
- newpkg = "%s-%s" % (pkg, kv)
- bb.data.setVar("PKG_%s" % p, newpkg, d)
- rprovides = bb.data.getVar("RPROVIDES_%s" % p, d, 1)
- if rprovides:
- rprovides = "%s %s" % (rprovides, pkg)
- else:
- rprovides = pkg
- bb.data.setVar("RPROVIDES_%s" % p, rprovides, d)
-}
-
module_do_compile() {
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \
diff --git a/classes/n2100-image.bbclass b/classes/n2100-image.bbclass
new file mode 100644
index 0000000000..bc6c12e1fb
--- /dev/null
+++ b/classes/n2100-image.bbclass
@@ -0,0 +1,32 @@
+n2100_pack_image() {
+ # find latest kernel
+ KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/zImage* | tail -1`
+ if [ -z "$KERNEL" ]; then
+ oefatal "No kernel found in ${DEPLOY_DIR_IMAGE}. Bitbake linux to create one."
+ exit 1
+ fi
+ ROOTFS=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2
+ OUTPUT=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flash.img
+ PADFILE=${DEPLOY_DIR_IMAGE}/padfile.zzz
+ HEX_MAX_KERN_SIZE=1C0000
+ DEC_MAX_KERN_SIZE=`echo "ibase=16; $HEX_MAX_KERN_SIZE" | bc `
+ HEX_MAX_ROOT_SIZE=DC0000
+ DEC_MAX_ROOT_SIZE=`echo "ibase=16; $HEX_MAX_ROOT_SIZE" | bc `
+ KERNEL_SIZE=`ls -l $KERNEL | awk '{print $5}'`
+ if [ $KERNEL_SIZE -gt $DEC_MAX_KERN_SIZE ]; then
+ oefatal "Kernel too large at $KERNEL_SIZE bytes. Max is $DEC_MAX_KERN_SIZE."
+ exit 1
+ fi
+ ROOT_SIZE=`ls -l $ROOTFS | awk '{print $5}'`
+ if [ $ROOT_SIZE -gt $DEC_MAX_ROOT_SIZE ]; then
+ oefatal "Rootfs is too large at $ROOT_SIZE bytes. Max is $DEC_MAX_ROOT_SIZE."
+ exit 1
+ fi
+ PAD_SIZE=`echo "$DEC_MAX_KERN_SIZE - $KERNEL_SIZE" | bc `
+ dd if=/dev/zero of=$PADFILE bs=$PAD_SIZE count=1 2>>/dev/null
+ cat $KERNEL $PADFILE $ROOTFS > $OUTPUT
+ rm -f $PADFILE
+ ls -l $OUTPUT
+}
+
+IMAGE_POSTPROCESS_COMMAND += "n2100_pack_image; "
diff --git a/classes/nas100d-image.bbclass b/classes/nas100d-image.bbclass
new file mode 100644
index 0000000000..1150116bdb
--- /dev/null
+++ b/classes/nas100d-image.bbclass
@@ -0,0 +1,20 @@
+nas100d_pack_image () {
+ install -d ${DEPLOY_DIR_IMAGE}/firmupgrade
+ install -m 0755 ${DEPLOY_DIR_IMAGE}/zImage-nas100d${SITEINFO_ENDIANESS} \
+ ${DEPLOY_DIR_IMAGE}/firmupgrade/ip-ramdisk
+ install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
+ ${DEPLOY_DIR_IMAGE}/firmupgrade/rootfs.gz
+ touch ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs
+ chmod 0644 ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs
+ echo "hwid=1.0.1" >${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
+ echo "model=koala" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
+ echo "vendor=iomega" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
+ echo "" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
+ chmod 0744 ${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
+ tar -c -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-nas100d.bin \
+ -C ${DEPLOY_DIR_IMAGE} firmupgrade
+ rm -rf ${DEPLOY_DIR_IMAGE}/firmupgrade
+}
+
+# nas100d is not a separate machine - use the nslu2 machine override.
+IMAGE_POSTPROCESS_COMMAND_nslu2 += "nas100d_pack_image; "
diff --git a/classes/nslu2-image.bbclass b/classes/nslu2-image.bbclass
new file mode 100644
index 0000000000..14bf989055
--- /dev/null
+++ b/classes/nslu2-image.bbclass
@@ -0,0 +1,20 @@
+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 \
+ ${DEPLOY_DIR_IMAGE}/slug/
+ install -m 0644 ${DEPLOY_DIR_IMAGE}/zImage-nslu2${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 \
+ -r Ramdisk:1,Flashdisk:flashdisk.jffs2 -m NPE-B -t Trailer \
+ -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-nslu2.bin
+ rm -rf ${DEPLOY_DIR_IMAGE}/slug
+}
+
+EXTRA_IMAGEDEPENDS_nslu2 += 'slugimage-native nslu2-linksys-firmware ixp4xx-npe upslug2-native'
+IMAGE_POSTPROCESS_COMMAND_nslu2 += "nslu2_pack_image; "
diff --git a/classes/nslu2-jffs2-image.bbclass b/classes/nslu2-jffs2-image.bbclass
deleted file mode 100644
index 56ad0f0659..0000000000
--- a/classes/nslu2-jffs2-image.bbclass
+++ /dev/null
@@ -1,18 +0,0 @@
-NSLU2_SLUGIMAGE_ARGS ?= ""
-
-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 \
- ${DEPLOY_DIR_IMAGE}/slug/
- install -m 0644 ${DEPLOY_DIR_IMAGE}/zImage-${IMAGE_BASENAME} ${DEPLOY_DIR_IMAGE}/slug/vmlinuz
- install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 ${DEPLOY_DIR_IMAGE}/slug/flashdisk.jffs2
- cd ${DEPLOY_DIR_IMAGE}/slug
- slugimage -p -b RedBoot -s SysConf -r Ramdisk:1,Flashdisk:flashdisk.jffs2 -t Trailer \
- -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flashdisk.img ${NSLU2_SLUGIMAGE_ARGS}
- rm -rf ${DEPLOY_DIR_IMAGE}/slug
-}
-
-EXTRA_IMAGEDEPENDS += 'slugimage-native nslu2-linksys-firmware'
-IMAGE_POSTPROCESS_COMMAND += "nslu2_pack_image; "
diff --git a/classes/nslu2-ramdisk-image.bbclass b/classes/nslu2-ramdisk-image.bbclass
deleted file mode 100644
index 0b545854fd..0000000000
--- a/classes/nslu2-ramdisk-image.bbclass
+++ /dev/null
@@ -1,18 +0,0 @@
-NSLU2_SLUGIMAGE_ARGS ?= ""
-
-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 \
- ${DEPLOY_DIR_IMAGE}/slug/
- install -m 0644 ${DEPLOY_DIR_IMAGE}/zImage-${IMAGE_BASENAME} ${DEPLOY_DIR_IMAGE}/slug/vmlinuz
- install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext2.gz ${DEPLOY_DIR_IMAGE}/slug/ramdisk.ext2.gz
- cd ${DEPLOY_DIR_IMAGE}/slug
- slugimage -p -b RedBoot -s SysConf -r Ramdisk:ramdisk.ext2.gz -t Trailer \
- -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.ramdisk.img ${NSLU2_SLUGIMAGE_ARGS}
- rm -rf ${DEPLOY_DIR_IMAGE}/slug
-}
-
-EXTRA_IMAGEDEPENDS += 'slugimage-native nslu2-linksys-firmware'
-IMAGE_POSTPROCESS_COMMAND += "nslu2_pack_image; "
diff --git a/classes/nylon-image.bbclass b/classes/nylon-image.bbclass
index e24aa33cf4..6d867eab48 100644
--- a/classes/nylon-image.bbclass
+++ b/classes/nylon-image.bbclass
@@ -20,4 +20,7 @@ nylon_create_imgz() {
rm -r ${DEPLOY_DIR_IMAGE}/tmp
}
-IMAGE_POSTPROCESS_COMMAND += "nylon_create_imgz;"
+IMAGE_POSTPROCESS_COMMAND += "kldsköa"
+IMAGE_POSTPROCESS_COMMAND_mtx-1 += "nylon_create_imgz;"
+IMAGE_POSTPROCESS_COMMAND_mtx-2 += "nylon_create_imgz;"
+IMAGE_POSTPROCESS_COMMAND_mtx-3a += "nylon_create_initrd_uimage;"
diff --git a/classes/openmoko-base.bbclass b/classes/openmoko-base.bbclass
new file mode 100644
index 0000000000..8643daa7a4
--- /dev/null
+++ b/classes/openmoko-base.bbclass
@@ -0,0 +1,20 @@
+HOMEPAGE = "http://www.openmoko.org"
+LICENSE ?= "GPL"
+OPENMOKO_RELEASE ?= "OM-2007"
+OPENMOKO_MIRROR ?= "svn://svn.openmoko.org/trunk"
+
+def openmoko_base_get_subdir(d):
+ import bb
+ openmoko, section = bb.data.getVar('SECTION', d, 1).split("/")
+ if section == 'base' or section == 'libs': return ""
+ elif section in 'apps tools pim'.split(): return "applications"
+ elif section == "panel-plugin": return "panel-plugins"
+ elif section == "inputmethods": return "inputmethods"
+ else: return section
+
+SUBDIR = "${@openmoko_base_get_subdir(d)}"
+
+SRC_URI := "${OPENMOKO_MIRROR}/src/target/${OPENMOKO_RELEASE}/${SUBDIR};module=${PN};proto=http"
+S = "${WORKDIR}/${PN}"
+
+FILES_${PN} += "${datadir}/icons"
diff --git a/classes/openmoko-panel-plugin.bbclass b/classes/openmoko-panel-plugin.bbclass
new file mode 100644
index 0000000000..0494b412c6
--- /dev/null
+++ b/classes/openmoko-panel-plugin.bbclass
@@ -0,0 +1,6 @@
+SECTION = "openmoko/panel-plugin"
+DEPENDS += "matchbox-panel-2"
+
+inherit openmoko
+
+FILES_${PN} = "${libdir}/matchbox-panel/lib*.so* ${datadir}"
diff --git a/classes/openmoko.bbclass b/classes/openmoko.bbclass
new file mode 100644
index 0000000000..808ab8fcb6
--- /dev/null
+++ b/classes/openmoko.bbclass
@@ -0,0 +1,3 @@
+inherit openmoko-base autotools pkgconfig
+
+DEPENDS_prepend = "${@["openmoko-libs ", ""][(bb.data.getVar('PN', d, 1) == 'openmoko-libs')]}"
diff --git a/classes/opie.bbclass b/classes/opie.bbclass
index 922cb9435a..915de890cf 100644
--- a/classes/opie.bbclass
+++ b/classes/opie.bbclass
@@ -15,10 +15,7 @@
inherit palmtop
-# Note that when CVS changes to 1.2.2, the dash
-# should be removed from OPIE_CVS_PV to convert
-# to the standardised version format
-OPIE_CVS_PV = "1.2.2+cvs-${SRCDATE}"
+OPIE_CVS_PV ?= "1.2.2+cvs${SRCDATE}"
DEPENDS_prepend = "${@["libopie2 ", ""][(bb.data.getVar('PN', d, 1) == 'libopie2')]}"
diff --git a/classes/own-mirrors.bbclass b/classes/own-mirrors.bbclass
new file mode 100644
index 0000000000..32763ed24f
--- /dev/null
+++ b/classes/own-mirrors.bbclass
@@ -0,0 +1,4 @@
+PREMIRRORS() {
+http://.*/.* ${SOURCE_MIRROR_URL}
+ftp://.*/.* ${SOURCE_MIRROR_URL}
+}
diff --git a/classes/package.bbclass b/classes/package.bbclass
index 132fdcb37a..e044395347 100644
--- a/classes/package.bbclass
+++ b/classes/package.bbclass
@@ -116,8 +116,23 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst
bb.data.setVar('PACKAGES', ' '.join(packages), d)
-PACKAGE_DEPENDS ?= "file-native"
-DEPENDS_prepend =+ "${PACKAGE_DEPENDS} "
+PACKAGE_DEPENDS += "file-native"
+
+python () {
+ import bb
+
+ if bb.data.getVar('PACKAGES', d, True) != '':
+ deps = bb.data.getVarFlag('do_package', 'depends', d) or ""
+ for dep in (bb.data.getVar('PACKAGE_DEPENDS', d, True) or "").split():
+ deps += " %s:do_populate_staging" % dep
+ bb.data.setVarFlag('do_package', 'depends', deps, d)
+
+ deps = bb.data.getVarFlag('do_package_write', 'depends', d) or ""
+ for dep in (bb.data.getVar('PACKAGE_EXTRA_DEPENDS', d, True) or "").split():
+ deps += " %s:do_populate_staging" % dep
+ bb.data.setVarFlag('do_package_write', 'depends', deps, d)
+}
+
# file(1) output to match to consider a file an unstripped executable
FILE_UNSTRIPPED_MATCH ?= "not stripped"
#FIXME: this should be "" when any errors are gone!
@@ -126,7 +141,7 @@ IGNORE_STRIP_ERRORS ?= "1"
runstrip() {
# Function to strip a single file, called from RUNSTRIP in populate_packages below
# A working 'file' (one which works on the target architecture)
- # is necessary for this stuff to work, hence the addition to PACKAGES_DEPENDS
+ # is necessary for this stuff to work, hence the addition to do_package[depends]
local ro st
@@ -153,7 +168,7 @@ runstrip() {
if test $st -ne 0
then
oewarn "runstrip: ${STRIP} $1: strip failed" >&2
- if [ x${IGNORE_STRIP_ERRORS} == x1 ]
+ if [ x${IGNORE_STRIP_ERRORS} = x1 ]
then
#FIXME: remove this, it's for error detection
if file "$1" 2>/dev/null >&2
@@ -387,6 +402,7 @@ python populate_packages () {
bb.mkdirhier(root)
filesvar = bb.data.getVar('FILES', localdata, 1) or ""
files = filesvar.split()
+ cleandirs = []
for file in files:
if os.path.isabs(file):
file = '.' + file
@@ -395,6 +411,8 @@ python populate_packages () {
newfiles = [ os.path.join(file,x) for x in os.listdir(file) ]
if newfiles:
files += newfiles
+ if file != "./":
+ cleandirs = [file] + cleandirs
continue
globbed = glob.glob(file)
if globbed:
@@ -406,9 +424,16 @@ python populate_packages () {
fpath = os.path.join(root,file)
dpath = os.path.dirname(fpath)
bb.mkdirhier(dpath)
+# if file in cleandirs:
+# cleandirs.remove(file)
ret = bb.movefile(file,fpath)
if ret is None or ret == 0:
raise bb.build.FuncFailed("File population failed")
+# for dir in cleandirs:
+# if os.path.isdir(dir):
+# os.rmdir(dir)
+# else:
+# bb.note("ERROR: directory %s went away unexpectedly during package population" % dir)
del localdata
os.chdir(workdir)
@@ -563,6 +588,7 @@ python package_do_shlibs() {
bb.mkdirhier(shlibs_dir)
needed = {}
+ private_libs = bb.data.getVar('PRIVATE_LIBS', d, 1)
for pkg in packages.split():
needs_ldconfig = False
bb.debug(2, "calculating shlib provides for %s" % pkg)
@@ -586,7 +612,9 @@ python package_do_shlibs() {
needed[pkg].append(m.group(1))
m = re.match("\s+SONAME\s+([^\s]*)", l)
if m and not m.group(1) in sonames:
- sonames.append(m.group(1))
+ # if library is private (only used by package) then do not build shlib for it
+ if not private_libs or -1 == private_libs.find(m.group(1)):
+ sonames.append(m.group(1))
if m and libdir_re.match(root):
needs_ldconfig = True
shlibs_file = os.path.join(shlibs_dir, pkg + ".list")
diff --git a/classes/package_deb.bbclass b/classes/package_deb.bbclass
new file mode 100644
index 0000000000..d172fb1766
--- /dev/null
+++ b/classes/package_deb.bbclass
@@ -0,0 +1,245 @@
+inherit package
+
+PACKAGE_EXTRA_DEPENDS += "dpkg-native fakeroot-native"
+
+BOOTSTRAP_EXTRA_RDEPENDS += "dpkg"
+DISTRO_EXTRA_RDEPENDS += "dpkg"
+PACKAGE_WRITE_FUNCS += "do_package_deb"
+IMAGE_PKGTYPE ?= "deb"
+
+python package_deb_fn () {
+ from bb import data
+ bb.data.setVar('PKGFN', bb.data.getVar('PKG',d), d)
+}
+
+addtask package_deb_install
+python do_package_deb_install () {
+ import os, sys
+ pkg = bb.data.getVar('PKG', d, 1)
+ pkgfn = bb.data.getVar('PKGFN', d, 1)
+ rootfs = bb.data.getVar('IMAGE_ROOTFS', d, 1)
+ debdir = bb.data.getVar('DEPLOY_DIR_DEB', d, 1)
+ stagingdir = bb.data.getVar('STAGING_DIR', d, 1)
+ stagingbindir = bb.data.getVar('STAGING_BINDIR_NATIVE', d, 1)
+ tmpdir = bb.data.getVar('TMPDIR', d, 1)
+
+ if None in (pkg,pkgfn,rootfs):
+ raise bb.build.FuncFailed("missing variables (one or more of PKG, PKGFN, IMAGE_ROOTFS)")
+ try:
+ if not os.exists(rootfs):
+ os.makedirs(rootfs)
+ os.chdir(rootfs)
+ except OSError:
+ raise bb.build.FuncFailed(str(sys.exc_value))
+
+ # update packages file
+ (exitstatus, output) = commands.getstatusoutput('dpkg-scanpackages %s > %s/Packages' % (debdir, debdir))
+ if (exitstatus != 0 ):
+ raise bb.build.FuncFailed(output)
+
+ f = open(os.path.join(tmpdir, "stamps", "do_packages"), "w")
+ f.close()
+
+ # NOTE: this env stuff is racy at best, we need something more capable
+ # than 'commands' for command execution, which includes manipulating the
+ # env of the fork+execve'd processs
+
+ # Set up environment
+ apt_config = os.getenv('APT_CONFIG')
+ os.putenv('APT_CONFIG', os.path.join(stagingdir, 'etc', 'apt', 'apt.conf'))
+ path = os.getenv('PATH')
+ os.putenv('PATH', '%s:%s' % (stagingbindir, os.getenv('PATH')))
+
+ # install package
+ commands.getstatusoutput('apt-get update')
+ commands.getstatusoutput('apt-get install -y %s' % pkgfn)
+
+ # revert environment
+ os.putenv('APT_CONFIG', apt_config)
+ os.putenv('PATH', path)
+}
+
+python do_package_deb () {
+ import copy # to back up env data
+ import sys
+ import re
+
+ workdir = bb.data.getVar('WORKDIR', d, 1)
+ if not workdir:
+ bb.error("WORKDIR not defined, unable to package")
+ return
+
+ import os # path manipulations
+ outdir = bb.data.getVar('DEPLOY_DIR_DEB', d, 1)
+ if not outdir:
+ bb.error("DEPLOY_DIR_DEB not defined, unable to package")
+ return
+
+ dvar = bb.data.getVar('D', d, 1)
+ if not dvar:
+ bb.error("D not defined, unable to package")
+ return
+ bb.mkdirhier(dvar)
+
+ packages = bb.data.getVar('PACKAGES', d, 1)
+ if not packages:
+ bb.debug(1, "PACKAGES not defined, nothing to package")
+ return
+
+ tmpdir = bb.data.getVar('TMPDIR', d, 1)
+ # Invalidate the packages file
+ if os.access(os.path.join(tmpdir, "stamps", "do_packages"),os.R_OK):
+ os.unlink(os.path.join(tmpdir, "stamps", "do_packages"))
+
+ if packages == []:
+ bb.debug(1, "No packages; nothing to do")
+ return
+
+ for pkg in packages.split():
+ localdata = bb.data.createCopy(d)
+ root = "%s/install/%s" % (workdir, pkg)
+
+ bb.data.setVar('ROOT', '', localdata)
+ bb.data.setVar('ROOT_%s' % pkg, root, localdata)
+ pkgname = bb.data.getVar('PKG_%s' % pkg, localdata, 1)
+ if not pkgname:
+ pkgname = pkg
+ bb.data.setVar('PKG', pkgname, localdata)
+
+ overrides = bb.data.getVar('OVERRIDES', localdata)
+ if not overrides:
+ raise bb.build.FuncFailed('OVERRIDES not defined')
+ overrides = bb.data.expand(overrides, localdata)
+ bb.data.setVar('OVERRIDES', overrides + ':' + pkg, localdata)
+
+ bb.data.update_data(localdata)
+ basedir = os.path.join(os.path.dirname(root))
+
+ pkgoutdir = os.path.join(outdir, bb.data.getVar('PACKAGE_ARCH', localdata, 1))
+ bb.mkdirhier(pkgoutdir)
+
+ os.chdir(root)
+ from glob import glob
+ g = glob('*')
+ try:
+ del g[g.index('DEBIAN')]
+ del g[g.index('./DEBIAN')]
+ except ValueError:
+ pass
+ if not g and not bb.data.getVar('ALLOW_EMPTY', localdata):
+ from bb import note
+ note("Not creating empty archive for %s-%s-%s" % (pkg, bb.data.getVar('PV', localdata, 1), bb.data.getVar('PR', localdata, 1)))
+ continue
+ controldir = os.path.join(root, 'DEBIAN')
+ bb.mkdirhier(controldir)
+ try:
+ ctrlfile = file(os.path.join(controldir, 'control'), 'wb')
+ # import codecs
+ # ctrlfile = codecs.open("someFile", "w", "utf-8")
+ except OSError:
+ raise bb.build.FuncFailed("unable to open control file for writing.")
+
+ fields = []
+ pe = bb.data.getVar('PE', d, 1)
+ if pe and int(pe) > 0:
+ fields.append(["Version: %s:%s-%s\n", ['PE', 'PV', 'PR']])
+ else:
+ fields.append(["Version: %s-%s\n", ['PV', 'PR']])
+ fields.append(["Description: %s\n", ['DESCRIPTION']])
+ fields.append(["Section: %s\n", ['SECTION']])
+ fields.append(["Priority: %s\n", ['PRIORITY']])
+ fields.append(["Maintainer: %s\n", ['MAINTAINER']])
+ fields.append(["Architecture: %s\n", ['TARGET_ARCH']])
+ fields.append(["OE: %s\n", ['P']])
+ fields.append(["Homepage: %s\n", ['HOMEPAGE']])
+
+# Package, Version, Maintainer, Description - mandatory
+# Section, Priority, Essential, Architecture, Source, Depends, Pre-Depends, Recommends, Suggests, Conflicts, Replaces, Provides - Optional
+
+
+ def pullData(l, d):
+ l2 = []
+ for i in l:
+ data = bb.data.getVar(i, d, 1)
+ if data is None:
+ raise KeyError(f)
+ if i == 'TARGET_ARCH' and bb.data.getVar('PACKAGE_ARCH', d, 1) == 'all':
+ data = 'all'
+ l2.append(data)
+ return l2
+
+ ctrlfile.write("Package: %s\n" % pkgname)
+ # check for required fields
+ try:
+ for (c, fs) in fields:
+ ctrlfile.write(unicode(c % tuple(pullData(fs, localdata))))
+ except KeyError:
+ (type, value, traceback) = sys.exc_info()
+ ctrlfile.close()
+ raise bb.build.FuncFailed("Missing field for deb generation: %s" % value)
+ # more fields
+
+ bb.build.exec_func("mapping_rename_hook", localdata)
+
+ rdepends = explode_deps(unicode(bb.data.getVar("RDEPENDS", localdata, 1) or ""))
+ rdepends = [dep for dep in rdepends if not '*' in dep]
+ rrecommends = explode_deps(unicode(bb.data.getVar("RRECOMMENDS", localdata, 1) or ""))
+ rrecommends = [rec for rec in rrecommends if not '*' in rec]
+ rsuggests = (unicode(bb.data.getVar("RSUGGESTS", localdata, 1) or "")).split()
+ rprovides = (unicode(bb.data.getVar("RPROVIDES", localdata, 1) or "")).split()
+ rreplaces = (unicode(bb.data.getVar("RREPLACES", localdata, 1) or "")).split()
+ rconflicts = (unicode(bb.data.getVar("RCONFLICTS", localdata, 1) or "")).split()
+ if rdepends:
+ ctrlfile.write(u"Depends: %s\n" % ", ".join(rdepends))
+ if rsuggests:
+ ctrlfile.write(u"Suggests: %s\n" % ", ".join(rsuggests))
+ if rrecommends:
+ ctrlfile.write(u"Recommends: %s\n" % ", ".join(rrecommends))
+ if rprovides:
+ ctrlfile.write(u"Provides: %s\n" % ", ".join(rprovides))
+ if rreplaces:
+ ctrlfile.write(u"Replaces: %s\n" % ", ".join(rreplaces))
+ if rconflicts:
+ ctrlfile.write(u"Conflicts: %s\n" % ", ".join(rconflicts))
+ ctrlfile.close()
+
+ for script in ["preinst", "postinst", "prerm", "postrm"]:
+ scriptvar = bb.data.getVar('pkg_%s' % script, localdata, 1)
+ if not scriptvar:
+ continue
+ try:
+ scriptfile = file(os.path.join(controldir, script), 'w')
+ except OSError:
+ raise bb.build.FuncFailed("unable to open %s script file for writing." % script)
+ scriptfile.write("#!/bin/sh\n")
+ scriptfile.write(scriptvar)
+ scriptfile.close()
+ os.chmod(os.path.join(controldir, script), 0755)
+
+ conffiles_str = bb.data.getVar("CONFFILES", localdata, 1)
+ if conffiles_str:
+ try:
+ conffiles = file(os.path.join(controldir, 'conffiles'), 'w')
+ except OSError:
+ raise bb.build.FuncFailed("unable to open conffiles for writing.")
+ for f in conffiles_str.split():
+ conffiles.write('%s\n' % f)
+ conffiles.close()
+
+ os.chdir(basedir)
+ ret = os.system("PATH=\"%s\" fakeroot dpkg-deb -b %s %s" % (bb.data.getVar("PATH", localdata, 1), root, pkgoutdir))
+ if ret != 0:
+ raise bb.build.FuncFailed("dpkg-deb execution failed")
+
+ for script in ["preinst", "postinst", "prerm", "postrm", "control" ]:
+ scriptfile = os.path.join(controldir, script)
+ try:
+ os.remove(scriptfile)
+ except OSError:
+ pass
+ try:
+ os.rmdir(controldir)
+ except OSError:
+ pass
+ del localdata
+}
diff --git a/classes/package_ipk.bbclass b/classes/package_ipk.bbclass
index 4c14409b9d..b5cc6af3bb 100644
--- a/classes/package_ipk.bbclass
+++ b/classes/package_ipk.bbclass
@@ -1,5 +1,7 @@
inherit package
-DEPENDS_prepend="${@["ipkg-utils-native ", ""][(bb.data.getVar('PACKAGES', d, 1) == '')]}"
+
+PACKAGE_EXTRA_DEPENDS += "ipkg-utils-native fakeroot-native"
+
BOOTSTRAP_EXTRA_RDEPENDS += "ipkg-collateral ipkg"
PACKAGE_WRITE_FUNCS += "do_package_ipk"
IMAGE_PKGTYPE ?= "ipk"
@@ -75,6 +77,9 @@ python do_package_ipk () {
if not outdir:
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)
@@ -139,7 +144,11 @@ python do_package_ipk () {
raise bb.build.FuncFailed("unable to open control file for writing.")
fields = []
- fields.append(["Version: %s-%s\n", ['PV', 'PR']])
+ pe = bb.data.getVar('PE', d, 1)
+ if pe and int(pe) > 0:
+ fields.append(["Version: %s:%s-%s\n", ['PE', 'PV', 'PR']])
+ else:
+ fields.append(["Version: %s-%s\n", ['PV', 'PR']])
fields.append(["Description: %s\n", ['DESCRIPTION']])
fields.append(["Section: %s\n", ['SECTION']])
fields.append(["Priority: %s\n", ['PRIORITY']])
diff --git a/classes/package_tar.bbclass b/classes/package_tar.bbclass
index b048b08ebe..e94e763150 100644
--- a/classes/package_tar.bbclass
+++ b/classes/package_tar.bbclass
@@ -1,5 +1,7 @@
inherit package
+PACKAGE_EXTRA_DEPENDS += "tar-native"
+
PACKAGE_WRITE_FUNCS += "do_package_tar"
IMAGE_PKGTYPE ?= "tar"
diff --git a/classes/palmtop.bbclass b/classes/palmtop.bbclass
index b4bd21ab25..39b9bd2b60 100644
--- a/classes/palmtop.bbclass
+++ b/classes/palmtop.bbclass
@@ -17,4 +17,9 @@ EXTRA_QMAKEVARS_POST += '${@base_conditional("PALMTOP_USE_MULTITHREADED_QT", "ye
EXTRA_QMAKEVARS_POST += "${@["LIBS+=-lqpe ", ""][(bb.data.getVar('PN', d, 1) == 'libqpe-opie')]}"
DEPENDS_prepend = "${@["virtual/libqpe1 uicmoc-native ", ""][(bb.data.getVar('PN', d, 1) == 'libqpe-opie')]}"
-FILES_${PN} = "${palmtopdir}"
+PACKAGES = "${PN}-dbg ${PN}-dev ${PN} ${PN}-doc ${PN}-locale"
+FILES_${PN} = " ${palmtopdir} "
+FILES_${PN}-dev += " ${palmtopdir}/lib/lib*.so "
+FILES_${PN}-dbg += " ${palmtopdir}/lib/.debug \
+ ${palmtopdir}/bin/.debug \
+ ${palmtopdir}/plugins/*/.debug "
diff --git a/classes/patch.bbclass b/classes/patch.bbclass
index 0a7b94cffc..84cca7f5a0 100644
--- a/classes/patch.bbclass
+++ b/classes/patch.bbclass
@@ -3,10 +3,20 @@
def patch_init(d):
import os, sys
+ class NotFoundError(Exception):
+ def __init__(self, path):
+ self.path = path
+ def __str__(self):
+ return "Error: %s not found." % self.path
+
def md5sum(fname):
import md5, sys
- f = file(fname, 'rb')
+ try:
+ f = file(fname, 'rb')
+ except IOError:
+ raise NotFoundError(fname)
+
m = md5.new()
while True:
d = f.read(8096)
@@ -24,11 +34,6 @@ def patch_init(d):
def __str__(self):
return "Command Error: exit status: %d Output:\n%s" % (self.status, self.output)
- class NotFoundError(Exception):
- def __init__(self, path):
- self.path = path
- def __str__(self):
- return "Error: %s not found." % self.path
def runcmd(args, dir = None):
import commands
@@ -123,11 +128,14 @@ def patch_init(d):
i = 0
self.patches.insert(i, patch)
- def _applypatch(self, patch, force = None, reverse = None):
+ def _applypatch(self, patch, force = False, reverse = False, run = True):
shellcmd = ["cat", patch['file'], "|", "patch", "-p", patch['strippath']]
if reverse:
shellcmd.append('-R')
+ if not run:
+ return "sh" + "-c" + " ".join(shellcmd)
+
if not force:
shellcmd.append('--dry-run')
@@ -140,7 +148,7 @@ def patch_init(d):
output = runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
return output
- def Push(self, force = None, all = None):
+ def Push(self, force = False, all = False, run = True):
bb.note("self._current is %s" % self._current)
bb.note("patches is %s" % self.patches)
if all:
@@ -157,7 +165,7 @@ def patch_init(d):
else:
self._current = 0
bb.note("applying patch %s" % self.patches[self._current])
- self._applypatch(self.patches[self._current], force)
+ return self._applypatch(self.patches[self._current], force)
def Pop(self, force = None, all = None):
@@ -171,7 +179,9 @@ def patch_init(d):
""""""
class QuiltTree(PatchSet):
- def _runcmd(self, args):
+ def _runcmd(self, args, run = True):
+ if not run:
+ return ["quilt"] + args
runcmd(["quilt"] + args, self.dir)
def _quiltpatchpath(self, file):
@@ -246,7 +256,7 @@ def patch_init(d):
self.patches.insert(self._current or 0, patch)
- def Push(self, force = None, all = None):
+ def Push(self, force = False, all = False, run = True):
# quilt push [-f]
args = ["push"]
@@ -254,6 +264,8 @@ def patch_init(d):
args.append("-f")
if all:
args.append("-a")
+ if not run:
+ return self._runcmd(args, run)
self._runcmd(args)
@@ -340,16 +352,31 @@ def patch_init(d):
olddir = os.path.abspath(os.curdir)
os.chdir(self.patchset.dir)
- try:
- self.patchset.Push(True)
- except CmdError, v:
- # Patch application failed
- if sys.exc_value.output.strip() == "No patches applied":
- return
- print(sys.exc_value)
- print('NOTE: dropping user into a shell, so that patch rejects can be fixed manually.')
-
- os.system('/bin/sh')
+ try:
+ self.patchset.Push(False)
+ except CmdError, v:
+ # Patch application failed
+ patchcmd = self.patchset.Push(True, False, False)
+
+ t = bb.data.getVar('T', d, 1)
+ if not t:
+ bb.msg.fatal(bb.msg.domain.Build, "T not set")
+ bb.mkdirhier(t)
+ import random
+ rcfile = "%s/bashrc.%s.%s" % (t, str(os.getpid()), random.random())
+ f = open(rcfile, "w")
+ f.write("echo '*** Manual patch resolution mode ***'\n")
+ f.write("echo 'Dropping to a shell, so patch rejects can be fixed manually.'\n")
+ f.write("echo 'Run \"quilt refresh\" when patch is corrected, press CTRL+D to exit.'\n")
+ f.write("echo ''\n")
+ f.write(" ".join(patchcmd) + "\n")
+ f.write("#" + bb.data.getVar('TERMCMDRUN', d, 1))
+ f.close()
+ os.chmod(rcfile, 0775)
+
+ os.environ['TERMWINDOWTITLE'] = "Bitbake: Please fix patch rejects manually"
+ os.environ['TERMRCFILE'] = rcfile
+ os.system(bb.data.getVar('TERMCMDRUN', d, 1))
# Construct a new PatchSet after the user's changes, compare the
# sets, checking patches for modifications, and doing a remote
@@ -390,6 +417,17 @@ def patch_init(d):
addtask patch after do_unpack
do_patch[dirs] = "${WORKDIR}"
+
+python () {
+ import bb
+ # do_patch tasks require PATCHTOOL-native to have staged
+ patchdeps = bb.data.getVar("PATCHTOOL", d, True)
+ if patchdeps:
+ patchdeps = "%s-native" % patchdeps
+ if not patchdeps in bb.data.getVar("PROVIDES", d, True):
+ bb.data.setVarFlag('do_patch', 'depends', patchdeps + ":do_populate_staging", d)
+}
+
python patch_do_patch() {
import re
import bb.fetch
@@ -482,7 +520,7 @@ python patch_do_patch() {
bb.note("Applying patch '%s'" % pname)
try:
patchset.Import({"file":unpacked, "remote":url, "strippath": pnum}, True)
- except NotFoundError:
+ except:
import sys
raise bb.build.FuncFailed(str(sys.exc_value))
resolver.Resolve()
diff --git a/classes/qt3x11.bbclass b/classes/qt3x11.bbclass
index 24e824d06f..95ed4f538a 100644
--- a/classes/qt3x11.bbclass
+++ b/classes/qt3x11.bbclass
@@ -11,5 +11,5 @@ export OE_QMAKE_INCDIR_QT = "${QTDIR}/include"
export OE_QMAKE_LIBDIR_QT = "${QTDIR}/lib"
export OE_QMAKE_LIBS_QT = "qt"
export OE_QMAKE_LIBS_X11 = "-lXext -lX11 -lm"
-
-
+export OE_QMAKE_LIBS_OPENGL = "-lGLU -lGL -lXmu"
+export OE_QMAKE_LIBS_OPENGL_QT = "-lGL -lXmu"
diff --git a/classes/rm_work.bbclass b/classes/rm_work.bbclass
index 7f590e1b15..1b87004143 100644
--- a/classes/rm_work.bbclass
+++ b/classes/rm_work.bbclass
@@ -10,7 +10,7 @@ do_rm_work () {
cd ${WORKDIR}
for dir in *
do
- if [ `basename ${S}` == $dir ]; then
+ if [ `basename ${S}` = $dir ]; then
rm -rf $dir/*
elif [ $dir != 'temp' ]; then
rm -rf $dir
diff --git a/classes/rootfs_deb.bbclass b/classes/rootfs_deb.bbclass
new file mode 100644
index 0000000000..f444541509
--- /dev/null
+++ b/classes/rootfs_deb.bbclass
@@ -0,0 +1,136 @@
+
+do_rootfs[depends] += "dpkg-native:do_populate_staging apt-native:do_populate_staging"
+
+fakeroot rootfs_deb_do_rootfs () {
+ set +e
+ mkdir -p ${IMAGE_ROOTFS}/var/dpkg/{info,updates}
+
+ rm -f ${STAGING_DIR}/etc/apt/sources.list.rev
+ rm -f ${STAGING_DIR}/etc/apt/preferences
+ > ${IMAGE_ROOTFS}/var/dpkg/status
+ > ${IMAGE_ROOTFS}/var/dpkg/available
+ # > ${STAGING_DIR}/var/dpkg/status
+
+ priority=1
+ for arch in ${PACKAGE_ARCHS}; do
+ if [ ! -d ${DEPLOY_DIR_DEB}/$arch ]; then
+ continue;
+ fi
+ cd ${DEPLOY_DIR_DEB}/$arch
+ # if [ -z "${DEPLOY_KEEP_PACKAGES}" ]; then
+ rm -f Packages.gz Packages Packages.bz2
+ # fi
+ apt-ftparchive packages . | bzip2 > Packages.bz2
+ echo "Label: $arch" > Release
+
+ echo "deb file:${DEPLOY_DIR_DEB}/$arch/ ./" >> ${STAGING_DIR}/etc/apt/sources.list.rev
+ (echo "Package: *"
+ echo "Pin: release l=$arch"
+ echo "Pin-Priority: $((800 + $priority))"
+ echo) >> ${STAGING_DIR}/etc/apt/preferences
+ priority=$(expr $priority + 5)
+ done
+
+ tac ${STAGING_DIR}/etc/apt/sources.list.rev > ${STAGING_DIR}/etc/apt/sources.list
+
+ cat "${STAGING_DIR}/etc/apt/apt.conf.sample" \
+ | sed -e 's#Architecture ".*";#Architecture "${TARGET_ARCH}";#' \
+ > "${STAGING_DIR}/etc/apt/apt-rootfs.conf"
+
+ export APT_CONFIG="${STAGING_DIR}/etc/apt/apt-rootfs.conf"
+ export D=${IMAGE_ROOTFS}
+ export OFFLINE_ROOT=${IMAGE_ROOTFS}
+ export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
+
+ apt-get update
+
+ _flag () {
+ sed -i -e "/^Package: $2\$/{n; s/Status: install ok .*/Status: install ok $1/;}" ${IMAGE_ROOTFS}/var/dpkg/status
+ }
+ _getflag () {
+ cat ${IMAGE_ROOTFS}/var/dpkg/status | sed -n -e "/^Package: $2\$/{n; s/Status: install ok .*/$1/; p}"
+ }
+
+ if [ ! -z "${LINGUAS_INSTALL}" ]; then
+ apt-get install glibc-localedata-i18n
+ if [ $? -eq 1 ]; then
+ exit 1
+ fi
+ for i in ${LINGUAS_INSTALL}; do
+ apt-get install $i
+ if [ $? -eq 1 ]; then
+ exit 1
+ fi
+ done
+ fi
+
+ if [ ! -z "${PACKAGE_INSTALL}" ]; then
+ for i in ${PACKAGE_INSTALL}; do
+ apt-get install $i
+ if [ $? -eq 1 ]; then
+ exit 1
+ fi
+ find ${IMAGE_ROOTFS} -name \*.dpkg-new | for i in `cat`; do
+ mv $i `echo $i | sed -e's,\.dpkg-new$,,'`
+ done
+ done
+ fi
+
+ install -d ${IMAGE_ROOTFS}/${sysconfdir}
+ echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version
+
+ # Mark all packages installed
+ sed -i -e "s/Status: install ok unpacked/Status: install ok installed/;" ${IMAGE_ROOTFS}/var/dpkg/status
+
+ # Attempt to run preinsts
+ # Mark packages with preinst failures as unpacked
+ for i in ${IMAGE_ROOTFS}/var/dpkg/info/*.preinst; do
+ if [ -f $i ] && ! sh $i; then
+ _flag unpacked `basename $i .preinst`
+ fi
+ done
+
+ # Attempt to run postinsts
+ # Mark packages with postinst failures as unpacked
+ for i in ${IMAGE_ROOTFS}/var/dpkg/info/*.postinst; do
+ if [ -f $i ] && ! sh $i configure; then
+ _flag unpacked `basename $i .postinst`
+ fi
+ done
+
+ set -e
+
+ # Hacks to make dpkg/ipkg coexist for now
+ mv ${IMAGE_ROOTFS}/var/dpkg ${IMAGE_ROOTFS}/usr/
+ if [ -e ${IMAGE_ROOTFS}/usr/dpkg/alternatives ]; then
+ rmdir ${IMAGE_ROOTFS}/usr/dpkg/alternatives
+ fi
+ ln -s /usr/lib/ipkg/alternatives ${IMAGE_ROOTFS}/usr/dpkg/alternatives
+ ln -s /usr/dpkg/info ${IMAGE_ROOTFS}/usr/lib/ipkg/info
+ ln -s /usr/dpkg/status ${IMAGE_ROOTFS}/usr/lib/ipkg/status
+
+ ${ROOTFS_POSTPROCESS_COMMAND}
+
+ log_check rootfs
+}
+
+rootfs_deb_log_check() {
+ target="$1"
+ lf_path="$2"
+
+ lf_txt="`cat $lf_path`"
+ for keyword_die in "E:"
+ do
+ if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
+ then
+ echo "log_check: There were error messages in the logfile"
+ echo -e "log_check: Matched keyword: [$keyword_die]\n"
+ echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die"
+ echo ""
+ do_exit=1
+ fi
+ done
+ test "$do_exit" = 1 && exit 1
+ true
+}
+
diff --git a/classes/rootfs_ipk.bbclass b/classes/rootfs_ipk.bbclass
index 9af23c7a73..26eca34da9 100644
--- a/classes/rootfs_ipk.bbclass
+++ b/classes/rootfs_ipk.bbclass
@@ -5,48 +5,52 @@
# See image.bbclass for a usage of this.
#
-DEPENDS_prepend="ipkg-native ipkg-utils-native fakeroot-native "
-DEPENDS_append=" ${EXTRA_IMAGEDEPENDS}"
-RDEPENDS += "ipkg ipkg-collateral"
-
-PACKAGES = ""
-
-do_rootfs[nostamp] = "1"
-do_rootfs[dirs] = "${TOPDIR}"
-do_build[nostamp] = "1"
+do_rootfs[depends] += "ipkg-native:do_populate_staging ipkg-utils-native:do_populate_staging"
IPKG_ARGS = "-f ${T}/ipkg.conf -o ${IMAGE_ROOTFS}"
+RDEPENDS += "ipkg ipkg-collateral"
PACKAGE_INSTALL += "ipkg ipkg-collateral"
-ROOTFS_POSTPROCESS_COMMAND ?= ""
+rootfs_ipk_do_indexes () {
+ set -x
-PID = "${@os.getpid()}"
+ ipkgarchs="${PACKAGE_ARCHS}"
-# some default locales
-IMAGE_LINGUAS ?= "de-de fr-fr en-gb"
+ if [ -z "${DEPLOY_KEEP_PACKAGES}" ]; then
+ touch ${DEPLOY_DIR_IPK}/Packages
+ ipkg-make-index -r ${DEPLOY_DIR_IPK}/Packages -p ${DEPLOY_DIR_IPK}/Packages -l ${DEPLOY_DIR_IPK}/Packages.filelist -m ${DEPLOY_DIR_IPK}
+ fi
-LINGUAS_INSTALL = "${@" ".join(map(lambda s: "locale-base-%s" % s, bb.data.getVar('IMAGE_LINGUAS', d, 1).split()))}"
+ for arch in $ipkgarchs; do
+ if [ -z "${DEPLOY_KEEP_PACKAGES}" ]; then
+ if [ -e ${DEPLOY_DIR_IPK}/$arch/ ] ; then
+ touch ${DEPLOY_DIR_IPK}/$arch/Packages
+ ipkg-make-index -r ${DEPLOY_DIR_IPK}/$arch/Packages -p ${DEPLOY_DIR_IPK}/$arch/Packages -l ${DEPLOY_DIR_IPK}/$arch/Packages.filelist -m ${DEPLOY_DIR_IPK}/$arch/
+ fi
+ fi
+ done
+}
-real_do_rootfs () {
+fakeroot rootfs_ipk_do_rootfs () {
set -x
-
- mkdir -p ${IMAGE_ROOTFS}/dev
- #work around a build in ipkg-make-index
- touch ${DEPLOY_DIR_IPK}/Packages
+ rootfs_ipk_do_indexes
- if [ -z "${DEPLOY_KEEP_PACKAGES}" ]; then
- touch ${DEPLOY_DIR_IPK}/Packages
- ipkg-make-index -r ${DEPLOY_DIR_IPK}/Packages -p ${DEPLOY_DIR_IPK}/Packages -l ${DEPLOY_DIR_IPK}/Packages.filelist -m ${DEPLOY_DIR_IPK}
- fi
+ mkdir -p ${IMAGE_ROOTFS}/dev
mkdir -p ${T}
+
+ #Add deploy/ipk as well for backward compat
echo "src oe file:${DEPLOY_DIR_IPK}" > ${T}/ipkg.conf
ipkgarchs="${PACKAGE_ARCHS}"
+
priority=1
for arch in $ipkgarchs; do
echo "arch $arch $priority" >> ${T}/ipkg.conf
priority=$(expr $priority + 5)
+ if [ -e ${DEPLOY_DIR_IPK}/$arch/Packages ] ; then
+ echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${T}/ipkg.conf
+ fi
done
ipkg-cl ${IPKG_ARGS} update
if [ ! -z "${LINGUAS_INSTALL}" ]; then
@@ -60,6 +64,7 @@ real_do_rootfs () {
fi
export D=${IMAGE_ROOTFS}
+ export OFFLINE_ROOT=${IMAGE_ROOTFS}
export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
mkdir -p ${IMAGE_ROOTFS}/etc/ipkg/
grep "^arch" ${T}/ipkg.conf >${IMAGE_ROOTFS}/etc/ipkg/arch.conf
@@ -83,75 +88,22 @@ real_do_rootfs () {
log_check rootfs
}
-log_check() {
- set +x
- for target in $*
- do
- lf_path="${WORKDIR}/temp/log.do_$target.${PID}"
-
- echo "log_check: Using $lf_path as logfile"
-
- if test -e "$lf_path"
+rootfs_ipk_log_check() {
+ target="$1"
+ lf_path="$2"
+
+ lf_txt="`cat $lf_path`"
+ for keyword_die in "Cannot find package" "exit 1" ERR Fail
+ do
+ if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
then
- lf_txt="`cat $lf_path`"
-
- for keyword_die in "Cannot find package" "exit 1" ERR Fail
- do
-
- if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
- then
- echo "log_check: There were error messages in the logfile"
- echo -e "log_check: Matched keyword: [$keyword_die]\n"
- echo "$lf_txt" | grep -v log_check | grep -i "$keyword_die" -C1
- echo ""
- do_exit=1
- fi
- done
- test "$do_exit" = 1 && exit 1
- else
- echo "Cannot find logfile [$lf_path]"
+ echo "log_check: There were error messages in the logfile"
+ echo -e "log_check: Matched keyword: [$keyword_die]\n"
+ echo "$lf_txt" | grep -v log_check | grep -i "$keyword_die" -C1
+ echo ""
+ do_exit=1
fi
- echo "Logfile is clean"
done
-
- set -x
-
-}
-
-fakeroot do_rootfs () {
- rm -rf ${IMAGE_ROOTFS}
- real_do_rootfs
-}
-
-# set '*' as the rootpassword so the images
-# can decide if they want it or not
-
-zap_root_password () {
- sed 's%^root:[^:]*:%root:*:%' < ${IMAGE_ROOTFS}/etc/passwd >${IMAGE_ROOTFS}/etc/passwd.new
- mv ${IMAGE_ROOTFS}/etc/passwd.new ${IMAGE_ROOTFS}/etc/passwd
-}
-
-create_etc_timestamp() {
- date +%2m%2d%2H%2M%Y >${IMAGE_ROOTFS}/etc/timestamp
+ test "$do_exit" = 1 && exit 1
+ true
}
-
-# Turn any symbolic /sbin/init link into a file
-remove_init_link () {
- if [ -h ${IMAGE_ROOTFS}/sbin/init ]; then
- LINKFILE=${IMAGE_ROOTFS}`readlink ${IMAGE_ROOTFS}/sbin/init`
- rm ${IMAGE_ROOTFS}/sbin/init
- cp $LINKFILE ${IMAGE_ROOTFS}/sbin/init
- fi
-}
-
-make_zimage_symlink_relative () {
- if [ -L ${IMAGE_ROOTFS}/boot/zImage ]; then
- (cd ${IMAGE_ROOTFS}/boot/ && for i in `ls zImage-* | sort`; do ln -sf $i zImage; done)
- fi
-}
-
-# export the zap_root_password, create_etc_timestamp and remote_init_link
-EXPORT_FUNCTIONS zap_root_password create_etc_timestamp remove_init_link make_zimage_symlink_relative
-
-
-addtask rootfs before do_build after do_install
diff --git a/classes/sanity.bbclass b/classes/sanity.bbclass
index 958ab91fa6..ec73e0cab7 100644
--- a/classes/sanity.bbclass
+++ b/classes/sanity.bbclass
@@ -86,7 +86,7 @@ def check_sanity(e):
if not check_app_exists('${BUILD_PREFIX}g++', e.data):
missing = missing + "C++ Compiler (${BUILD_PREFIX}g++),"
- required_utilities = "patch diffstat texi2html makeinfo cvs svn git bzip2 tar gzip gawk"
+ required_utilities = "patch diffstat texi2html makeinfo cvs svn git bzip2 tar gzip gawk md5sum"
for util in required_utilities.split():
if not check_app_exists( util, e.data ):
diff --git a/classes/scons.bbclass b/classes/scons.bbclass
index 89b5da2d0e..534b3bd4c7 100644
--- a/classes/scons.bbclass
+++ b/classes/scons.bbclass
@@ -1,12 +1,12 @@
DEPENDS += "python-scons-native"
scons_do_compile() {
- ${STAGING_BINDIR_NATIVE}/scons || \
+ ${STAGING_BINDIR_NATIVE}/scons PREFIX=${prefix} prefix=${prefix} || \
oefatal "scons build execution failed."
}
scons_do_install() {
- ${STAGING_BINDIR_NATIVE}/scons install || \
+ ${STAGING_BINDIR_NATIVE}/scons PREFIX=${D}${prefix} prefix=${D}${prefix} install || \
oefatal "scons install execution failed."
}
diff --git a/classes/seppuku.bbclass b/classes/seppuku.bbclass
new file mode 100644
index 0000000000..4c0d4f9a82
--- /dev/null
+++ b/classes/seppuku.bbclass
@@ -0,0 +1,333 @@
+#
+# Small event handler to automatically open URLs and file
+# bug reports at a bugzilla of your choiche
+#
+# This class requires python2.4 because of the urllib2 usage
+#
+
+def seppuku_spliturl(url):
+ """
+ Split GET URL to return the host base and the query
+ as a param dictionary
+ """
+ import urllib
+ (uri,query) = urllib.splitquery(url)
+ param = {}
+ for par in query.split("&"):
+ (key,value) = urllib.splitvalue(par)
+ if not key or len(key) == 0 or not value:
+ continue
+ key = urllib.unquote(key)
+ value = urllib.unquote(value)
+ param[key] = value
+
+ return (uri,param)
+
+
+
+def seppuku_login(opener, login, user, password):
+ """
+ We need to post to query.cgi with the parameters
+ Bugzilla_login and Bugzilla_password and will scan
+ the resulting page then
+
+ @param opened = cookie enabled urllib2 opener
+ @param login = http://bugzilla.openmoko.org/cgi-bin/bugzilla/query.cgi?
+ @param user = Your username
+ @param password = Your password
+ """
+ import urllib
+ param = urllib.urlencode( {"GoAheadAndLogIn" : 1, "Bugzilla_login" : user, "Bugzilla_password" : password } )
+ result = opener.open(login + param)
+
+ if result.code != 200:
+ return False
+ txt = result.read()
+ if not '<a href="relogin.cgi">Log&nbsp;out</a>' in txt:
+ return False
+
+ return True
+
+def seppuku_find_bug_report_old():
+ from HTMLParser import HTMLParser
+
+ class BugQueryExtractor(HTMLParser):
+ STATE_NONE = 0
+ STATE_FOUND_TR = 1
+ STATE_FOUND_NUMBER = 2
+ STATE_FOUND_PRIO = 3
+ STATE_FOUND_PRIO2 = 4
+ STATE_FOUND_NAME = 5
+ STATE_FOUND_PLATFORM = 6
+ STATE_FOUND_STATUS = 7
+ STATE_FOUND_WHATEVER = 8 # I don't know this field
+ STATE_FOUND_DESCRIPTION =9
+
+ def __init__(self):
+ HTMLParser.__init__(self)
+ self.state = self.STATE_NONE
+ self.bugs = []
+ self.bug = None
+
+ def handle_starttag(self, tag, attr):
+ if self.state == self.STATE_NONE and tag.lower() == "tr":
+ if len(attr) == 1 and attr[0][0] == 'class' and \
+ ('bz_normal' in attr[0][1] or 'bz_blocker' in attr[0][1] or 'bz_enhancement' in attr[0][1] or 'bz_major' in attr[0][1] or 'bz_minor' in attr[0][1] or 'bz_trivial' in attr[0][1] or 'bz_critical' in attr[0][1] or 'bz_wishlist' in attr[0][1]) \
+ and 'bz_P' in attr[0][1]:
+ self.state = self.STATE_FOUND_TR
+ elif self.state == self.STATE_FOUND_TR and tag.lower() == "td":
+ self.state += 1
+
+ def handle_endtag(self, tag):
+ if tag.lower() == "tr":
+ if self.state != self.STATE_NONE:
+ self.bugs.append( (self.bug,self.status) )
+ self.state = self.STATE_NONE
+ self.bug = None
+ if self.state > 1 and tag.lower() == "td":
+ self.state += 1
+
+ def handle_data(self,data):
+ data = data.strip()
+
+ # skip garbage
+ if len(data) == 0:
+ return
+
+ if self.state == self.STATE_FOUND_NUMBER:
+ """
+ #1995 in bugs.oe.org has [SEC] additionally to the number and we want to ignore it
+ """
+ if not self.bug:
+ self.bug = data
+ elif self.state == self.STATE_FOUND_STATUS:
+ self.status = data
+
+ def result(self):
+ return self.bugs
+
+ return BugQueryExtractor()
+
+
+
+def seppuku_find_bug_report(opener, query, product, component, bugname):
+ """
+ Find a bug report with the sane name and return the bug id
+ and the status.
+
+ @param opener = urllib2 opener
+ @param query = e.g. https://bugzilla.openmoko.org/cgi-bin/bugzilla/query.cgi?
+ @param product = search for this product
+ @param component = search for this component
+ @param bugname = the bug to search for
+
+ https://bugzilla.openmoko.org/cgi-bin/bugzilla/buglist.cgi?short_desc_type=substring&short_desc=manual+test+bug&product=OpenMoko&emailreporter2=1&emailtype2=substring&email2=freyther%40yahoo.com
+ but it does not support ctype=csv...
+ """
+ result = opener.open("%(query)s?product=%(product)s&component=%(component)s&short_desc_type=substring&short_desc=%(bugname)s" % vars())
+ if result.code != 200:
+ raise "Can not query the bugzilla at all"
+ txt = result.read()
+ scanner = seppuku_find_bug_report_old()
+ scanner.feed(txt)
+ if len(scanner.result()) == 0:
+ return (False,None)
+ else: # silently pick the first result
+ (number,status) = scanner.result()[0]
+ return (not status in ["CLOS", "RESO", "VERI"],number)
+
+def seppuku_reopen_bug(poster, file, product, component, bug_number, bugname, text):
+ """
+ Reopen a bug report and append to the comment
+
+ Same as with opening a new report, some bits need to be inside the url
+
+ http://bugzilla.openmoko.org/cgi-bin/bugzilla/process_bug.cgi?id=239&bug_file_loc=http%3A%2F%2F&version=2007&longdesclength=2&product=OpenMoko&component=autobuilds&comment=bla&priority=P2&bug_severity=normal&op_sys=Linux&rep_platform=Neo1973&knob=reopen&target_milestone=Phase+0&short_desc=foo
+ """
+
+ import urllib2
+ (uri, param) = seppuku_spliturl( file )
+
+ # Prepare the post
+ param["product"] = product
+ param["component"] = component
+ param["longdesclength"] = 2
+ param["short_desc"] = bugname
+ param["knob"] = "reopen"
+ param["id"] = bug_number
+ param["comment"] = text
+
+ try:
+ result = poster.open( uri, param )
+ except urllib2.HTTPError, e:
+ print e.geturl()
+ print e.info()
+ return False
+ except Exception, e:
+ print e
+ return False
+
+ if result.code != 200:
+ return False
+ else:
+ return True
+
+def seppuku_file_bug(poster, file, product, component, bugname, text):
+ """
+ Create a completely new bug report
+
+
+ http://bugzilla.openmoko.org/cgi-bin/bugzilla/post_bug.cgi?bug_file_loc=http%3A%2F%2F&version=2007&product=OpenMoko&component=autobuilds&short_desc=foo&comment=bla&priority=P2&bug_severity=normal&op_sys=Linux&rep_platform=Neo1973
+
+ You are forced to add some default values to the bugzilla query and stop with '&'
+
+ @param opener urllib2 opener
+ @param file The url used to file a bug report
+ @param product Product
+ @param component Component
+ @param bugname Name of the to be created bug
+ @param text Text
+ """
+
+ import urllib2
+ (uri, param) = seppuku_spliturl( file )
+ param["product"] = product
+ param["component"] = component
+ param["short_desc"] = bugname
+ param["comment"] = text
+
+ try:
+ result = poster.open( uri, param )
+ except urllib2.HTTPError, e:
+ print e.geturl()
+ print e.info()
+ return False
+ except Exception, e:
+ print e
+ return False
+
+ if result.code != 200:
+ return False
+ else:
+ return True
+
+def seppuku_create_attachment(poster, attach_query, product, component, bug_number, text, file):
+ """
+
+ Create a new attachment for the failed report
+ """
+
+ if not bug_number:
+ import bb
+ bb.note("Can't create an attachment, the bug is not present")
+ return False
+
+ import urllib2
+ param = { "bugid" : bug_number, "action" : "insert", "data" : file, "description" : "Build log", "ispatch" : "0", "contenttypemethod" : "list", "contenttypeselection" : "text/plain", "comment" : text }
+
+ try:
+ result = poster.open( attach_query, param )
+ except urllib2.HTTPError, e:
+ print e.geturl()
+ print e.info()
+ return False
+ except Exception, e:
+ print e
+ return False
+
+ print result.read()
+ if result.code != 200:
+ return False
+ else:
+ return True
+
+
+addhandler seppuku_eventhandler
+python seppuku_eventhandler() {
+ """
+ Report task failures to the bugzilla
+ and succeeded builds to the box
+ """
+ from bb.event import NotHandled, getName
+ from bb import data, mkdirhier, build
+ import bb, os, glob
+
+ # Try to load our exotic libraries
+ try:
+ import MultipartPostHandler
+ except:
+ bb.note("You need to put the MultipartPostHandler into your PYTHONPATH. Download it from http://pipe.scs.fsu.edu/PostHandler/MultipartPostHandler.py")
+ return NotHandled
+
+ try:
+ import urllib2, cookielib
+ except:
+ bb.note("Failed to import the cookielib and urllib2, make sure to use python2.4")
+ return NotHandled
+
+ event = e
+ data = e.data
+ name = getName(event)
+ if name == "PkgFailed":
+ if not bb.data.getVar('SEPPUKU_AUTOBUILD', data, True) == "0":
+ build.exec_task('do_clean', data)
+ elif name == "TaskFailed" or name == "NoProvider":
+ cj = cookielib.CookieJar()
+ opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
+ poster = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj),MultipartPostHandler.MultipartPostHandler)
+ login = bb.data.getVar("SEPPUKU_LOGIN", data, True)
+ query = bb.data.getVar("SEPPUKU_QUERY", data, True)
+ newbug = bb.data.getVar("SEPPUKU_NEWREPORT", data, True)
+ reopen = bb.data.getVar("SEPPUKU_ADDCOMMENT", data, True)
+ attach = bb.data.getVar("SEPPUKU_ATTACHMENT", data, True)
+ user = bb.data.getVar("SEPPUKU_USER", data, True)
+ passw = bb.data.getVar("SEPPUKU_PASS", data, True)
+ product = bb.data.getVar("SEPPUKU_PRODUCT", data, True)
+ component = bb.data.getVar("SEPPUKU_COMPONENT", data, True)
+
+ if not seppuku_login(opener, login, user, passw):
+ bb.note("Login to bugzilla failed")
+ return NotHandled
+ else:
+ print "Logged into the box"
+
+ file = None
+ if name == "TaskFailed":
+ bugname = "%(package)s-%(pv)s-%(pr)s-%(task)s" % { "package" : bb.data.getVar("PN", data, True),
+ "pv" : bb.data.getVar("PV", data, True),
+ "pr" : bb.data.getVar("PR", data, True),
+ "task" : e.task }
+ log_file = glob.glob("%s/log.%s.*" % (bb.data.getVar('T', event.data, True), event.task))
+ text = "The package failed to build at %s" % bb.data.getVar('DATETIME', data, True)
+ if len(log_file) != 0:
+ file = open(log_file[0], 'r')
+ elif name == "NoProvider":
+ bugname = "noprovider for %s runtime: %s" % (event.getItem, event.getisRuntime)
+ text = "Please fix it"
+ else:
+ assert False
+
+ (bug_open, bug_number) = seppuku_find_bug_report(opener, query, product, component, bugname)
+
+ bb.note("Bug is open: %s and bug number: %s" % (bug_open, bug_number))
+
+ # The bug is present and still open, no need to attach an error log
+ if bug_number and bug_open:
+ bb.note("The bug is known as '%s'" % bug_number)
+ return NotHandled
+
+ if bug_number and not bug_open:
+ if not seppuku_reopen_bug(poster, reopen, product, component, bug_number, bugname, text):
+ bb.note("Failed to reopen the bug report")
+ elif not seppuku_file_bug(poster, newbug, product, component, bugname, text):
+ bb.note("Filing a bugreport failed")
+ else:
+ # get the new bug number and create an attachment
+ (bug_open, bug_number) = seppuku_find_bug_report(opener, query, product, component, bugname)
+
+ if file:
+ if not seppuku_create_attachment(poster, attach, product, component, bug_number, text, file):
+ bb.note("Failed to attach the build log")
+
+ return NotHandled
+}
diff --git a/classes/siteinfo.bbclass b/classes/siteinfo.bbclass
index 5a37768b52..6868750d2d 100644
--- a/classes/siteinfo.bbclass
+++ b/classes/siteinfo.bbclass
@@ -22,7 +22,9 @@ def get_siteinfo_list(d):
targetinfo = {\
"armeb-linux": "endian-big bit-32 common-glibc arm-common",\
+ "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-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",\
@@ -38,8 +40,9 @@ def get_siteinfo_list(d):
"mipsel-linux": "endian-little bit-32 common-glibc",\
"mipsel-linux-uclibc": "endian-little bit-32 common-uclibc",\
"powerpc-darwin": "endian-big bit-32 common-darwin",\
- "powerpc-linux": "endian-big bit-32 common-glibc",\
- "powerpc-linux-uclibc": "endian-big bit-32 common-uclibc",\
+ "ppc-linux": "endian-big bit-32 common-glibc powerpc-common",\
+ "powerpc-linux": "endian-big bit-32 common-glibc powerpc-common",\
+ "powerpc-linux-uclibc": "endian-big bit-32 common-uclibc powerpc-common",\
"sh3-linux": "endian-little bit-32 common-glibc sh-common",\
"sh4-linux": "endian-little bit-32 common-glibc sh-common",\
"sh4-linux-uclibc": "endian-little bit-32 common-uclibc sh-common",\
@@ -49,6 +52,7 @@ def get_siteinfo_list(d):
if target in targetinfo:
info = targetinfo[target].split()
info.append(target)
+ info.append("common")
return info
else:
bb.error("Information not available for target '%s'" % target)
@@ -90,7 +94,7 @@ def siteinfo_get_files(d):
if os.path.exists(fname):
sitefiles += fname + " "
- bb.note("SITE files " + sitefiles);
+ bb.debug(1, "SITE files " + sitefiles);
return sitefiles
#
diff --git a/classes/storcenter-image.bbclass b/classes/storcenter-image.bbclass
new file mode 100644
index 0000000000..de77f1b417
--- /dev/null
+++ b/classes/storcenter-image.bbclass
@@ -0,0 +1,30 @@
+storcenter_pack_image() {
+ # find latest kernel
+ KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/uImage* | tail -1`
+ if [ -z "$KERNEL" ]; then
+ oefatal "No kernel found in ${DEPLOY_DIR_IMAGE}. Bitbake linux-storcenter to create one."
+ exit 1
+ fi
+ ROOTFS=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2
+ OUTPUT=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flash.img
+ PADFILE=${DEPLOY_DIR_IMAGE}/padfile.zzz
+ HEX_MAX_KERN_SIZE=170000
+ DEC_MAX_KERN_SIZE=`echo "ibase=16; $HEX_MAX_KERN_SIZE" | bc `
+ HEX_MAX_ROOT_SIZE=590000
+ DEC_MAX_ROOT_SIZE=`echo "ibase=16; $HEX_MAX_ROOT_SIZE" | bc `
+ KERNEL_SIZE=`ls -l $KERNEL | awk '{print $5}'`
+ if [ $KERNEL_SIZE -gt $DEC_MAX_KERN_SIZE ]; then
+ oefatal "Kernel too large at $KERNEL_SIZE bytes. Max is $DEC_MAX_KERN_SIZE."
+ exit 1
+ fi
+ ROOT_SIZE=`ls -l $ROOTFS | awk '{print $5}'`
+ if [ $ROOT_SIZE -gt $DEC_MAX_ROOT_SIZE ]; then
+ oefatal "Rootfs is too large at $ROOT_SIZE bytes. Max is $DEC_MAX_ROOT_SIZE."
+ exit 1
+ fi
+ PAD_SIZE=`echo "$DEC_MAX_KERN_SIZE - $KERNEL_SIZE" | bc `
+ dd if=/dev/zero of=$PADFILE bs=$PAD_SIZE count=1 2>>/dev/null
+ cat $KERNEL $PADFILE $ROOTFS > $OUTPUT
+ rm -f $PADFILE
+ ls -l $OUTPUT
+}
diff --git a/classes/tinderclient.bbclass b/classes/tinderclient.bbclass
index 3f5183cc8f..d1d9f49fac 100644
--- a/classes/tinderclient.bbclass
+++ b/classes/tinderclient.bbclass
@@ -371,6 +371,10 @@ addhandler tinderclient_eventhandler
python tinderclient_eventhandler() {
from bb import note, error, data
from bb.event import NotHandled
+
+ if e.data is None:
+ return NotHandled
+
do_tinder_report = data.getVar('TINDER_REPORT', e.data, True)
if do_tinder_report and do_tinder_report == "1":
tinder_do_tinder_report(e)
diff --git a/classes/turbostation-image.bbclass b/classes/turbostation-image.bbclass
new file mode 100644
index 0000000000..5a0768c687
--- /dev/null
+++ b/classes/turbostation-image.bbclass
@@ -0,0 +1,32 @@
+turbostation_pack_image() {
+ # find latest kernel
+ KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/uImage* | tail -1`
+ if [ -z "$KERNEL" ]; then
+ oefatal "No kernel found in ${DEPLOY_DIR_IMAGE}. Bitbake linux-turbostation to create one."
+ exit 1
+ fi
+ ROOTFS=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2
+ OUTPUT=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flash.img
+ PADFILE=${DEPLOY_DIR_IMAGE}/padfile.zzz
+ HEX_MAX_KERN_SIZE=200000
+ DEC_MAX_KERN_SIZE=`echo "ibase=16; $HEX_MAX_KERN_SIZE" | bc `
+ HEX_MAX_ROOT_SIZE=D00000
+ DEC_MAX_ROOT_SIZE=`echo "ibase=16; $HEX_MAX_ROOT_SIZE" | bc `
+ KERNEL_SIZE=`ls -l $KERNEL | awk '{print $5}'`
+ if [ $KERNEL_SIZE -gt $DEC_MAX_KERN_SIZE ]; then
+ oefatal "Kernel too large at $KERNEL_SIZE bytes. Max is $DEC_MAX_KERN_SIZE."
+ exit 1
+ fi
+ ROOT_SIZE=`ls -l $ROOTFS | awk '{print $5}'`
+ if [ $ROOT_SIZE -gt $DEC_MAX_ROOT_SIZE ]; then
+ oefatal "Rootfs is too large at $ROOT_SIZE bytes. Max is $DEC_MAX_ROOT_SIZE."
+ exit 1
+ fi
+ PAD_SIZE=`echo "$DEC_MAX_KERN_SIZE - $KERNEL_SIZE" | bc `
+ dd if=/dev/zero of=$PADFILE bs=$PAD_SIZE count=1 2>>/dev/null
+ cat $KERNEL $PADFILE $ROOTFS > $OUTPUT
+ rm -f $PADFILE
+ ls -l $OUTPUT
+}
+
+IMAGE_POSTPROCESS_COMMAND += "turbostation_pack_image; "
diff --git a/classes/xfce.bbclass b/classes/xfce.bbclass
index 793348597f..ecc00825bc 100644
--- a/classes/xfce.bbclass
+++ b/classes/xfce.bbclass
@@ -6,8 +6,9 @@
HOMEPAGE = "http://www.xfce.org"
LICENSE = "LGPL-2"
+DEPENDS += "startup-notification"
-SRC_URI = "http://www.us.xfce.org/archive/xfce-${PV}/src/${PN}-${PV}.tar.gz"
+SRC_URI = "http://www.us.xfce.org/archive/xfce-${PV}/src/${PN}-${PV}.tar.bz2"
inherit autotools
diff --git a/classes/xorg-module.bbclass b/classes/xorg-module.bbclass
new file mode 100644
index 0000000000..135ca31c16
--- /dev/null
+++ b/classes/xorg-module.bbclass
@@ -0,0 +1,31 @@
+python populate_packages_prepend () {
+ import re, os.path
+
+ new_packages = []
+
+ def the_hook(file, pkg, pattern, format, basename):
+ new_packages.append(pkg)
+
+ do_split_packages(d, root=bb.data.expand('${libdir}/xorg/modules/drivers', d), file_regex='(.*)_drv\.so', output_pattern='xorg-driver-%s', description='xorg %s driver', extra_depends='xserver-xorg', hook=the_hook)
+
+ packages = bb.data.getVar('PACKAGES', d, 1).split()
+
+ so_to_la_re = "\.so$"
+
+ # fish out any debug or devel files corresponding to the new packages
+ for p in new_packages:
+ packages.append("%s-dbg" % p)
+ packages.append("%s-dev" % p)
+
+ files = bb.data.getVar("FILES_%s" % p, d).split()
+ dev_files = []
+ dbg_files = []
+ for f in files:
+ dev_files.append(re.sub(so_to_la_re, ".la", f))
+ (dir, file) = os.path.split(f)
+ dbg_files.append(os.path.join(dir, ".debug", file))
+ bb.data.setVar("FILES_%s-dbg" % p, " ".join(dbg_files), d)
+ bb.data.setVar("FILES_%s-dev" % p, " ".join(dev_files), d)
+
+ bb.data.setVar('PACKAGES', ' '.join(packages), d)
+}
diff --git a/conf/bitbake.conf b/conf/bitbake.conf
index 6ddf8ecaf4..c754dab273 100644
--- a/conf/bitbake.conf
+++ b/conf/bitbake.conf
@@ -82,7 +82,8 @@ ASSUME_PROVIDED = "cvs-native svn-native bzip2-native diffstat-native patch-nati
PN = "${@bb.parse.BBHandler.vars_from_file(bb.data.getVar('FILE',d),d)[0] or 'defaultpkgname'}"
PV = "${@bb.parse.BBHandler.vars_from_file(bb.data.getVar('FILE',d),d)[1] or '1.0'}"
PR = "${@bb.parse.BBHandler.vars_from_file(bb.data.getVar('FILE',d),d)[2] or 'r0'}"
-PF = "${PN}-${PV}-${PR}"
+PF = "${PN}-${EXTENDPE}${PV}-${PR}"
+EXTENDPE = "${@['','${PE\x7d_'][bb.data.getVar('PE',d,1) > 0]}"
P = "${PN}-${PV}"
# Package info.
@@ -124,7 +125,8 @@ FILES_${PN}-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la \
/lib/*.a /lib/*.o ${datadir}/aclocal"
FILES_${PN}-locale = "${datadir}/locale"
FILES_${PN}-dbg = "${bindir}/.debug ${sbindir}/.debug ${libexecdir}/.debug ${libdir}/.debug \
- /bin/.debug /sbin/.debug /lib/.debug ${libdir}/${PN}/.debug"
+ /bin/.debug /sbin/.debug /lib/.debug ${libdir}/${PN}/.debug \
+ ${libdir}/matchbox-panel/.debug"
# File manifest
@@ -168,6 +170,8 @@ DEPLOY_DIR_TAR = "${DEPLOY_DIR}/tar"
DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk"
DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm"
DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb"
+DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images"
+DEPLOY_DIR_TOOLS = "${DEPLOY_DIR}/tools"
##################################################################
# Kernel info.
@@ -180,32 +184,38 @@ STAGING_KERNEL_DIR = "${STAGING_DIR}/${HOST_SYS}/kernel"
# Specific image creation and rootfs population info.
##################################################################
-DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images"
IMAGE_ROOTFS = "${TMPDIR}/rootfs"
IMAGE_BASENAME = "rootfs"
IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DATETIME}"
+IMAGE_LINK_NAME = "${IMAGE_BASENAME}-${MACHINE}"
IMAGE_CMD = ""
-IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime \
+IMAGE_CMD_jffs2 = "mkfs.jffs2 -x lzo --root=${IMAGE_ROOTFS} --faketime \
--output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
${EXTRA_IMAGECMD}"
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 = "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"
+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"
+IMAGE_CMD_ext3 = "genext2fs -b ${IMAGE_ROOTFS_SIZE} -d ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3 ${EXTRA_IMAGECMD}; tune2fs -j ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3"
+IMAGE_CMD_ext3.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.ext3 ${EXTRA_IMAGECMD}; tune2fs -j ${DEPLOY_DIR_IMAGE}/tmp.gz/${IMAGE_NAME}.rootfs.ext3; gzip -f -9 ${DEPLOY_DIR_IMAGE}/tmp.gz/${IMAGE_NAME}.rootfs.ext3; mv ${DEPLOY_DIR_IMAGE}/tmp.gz/${IMAGE_NAME}.rootfs.ext3.gz ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3.gz; rmdir ${DEPLOY_DIR_IMAGE}/tmp.gz"
IMAGE_CMD_squashfs = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs ${EXTRA_IMAGECMD} -noappend"
IMAGE_CMD_squashfs-lzma = "mksquashfs-lzma ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs-lzma ${EXTRA_IMAGECMD} -noappend"
-IMAGE_CMD_tar = "cd ${IMAGE_ROOTFS} && tar -jcvf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.tar.bz2 ."
+IMAGE_CMD_tar = "cd ${IMAGE_ROOTFS} && tar -cvf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.tar ."
IMAGE_CMD_tar.gz = "cd ${IMAGE_ROOTFS} && tar -zcvf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.tar.gz ."
IMAGE_CMD_tar.bz2 = "cd ${IMAGE_ROOTFS} && tar -jcvf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.tar.bz2 ."
+IMAGE_CMD_cpio = "cd ${IMAGE_ROOTFS} && (find . | cpio -o -H newc >${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cpio)"
+IMAGE_CMD_cpio.gz = "cd ${IMAGE_ROOTFS} && (find . | cpio -o -H newc | gzip -c -9 >${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cpio.gz)"
EXTRA_IMAGECMD = ""
-EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x40000"
-EXTRA_IMAGECMD_squashfs = "-le -b 16384"
-EXTRA_IMAGECMD_squashfs-lzma = "-le -b 16384"
+EXTRA_IMAGECMD_jffs2 = ""
+EXTRA_IMAGECMD_squashfs = ""
+EXTRA_IMAGECMD_squashfs-lzma = ""
IMAGE_DEPENDS = ""
IMAGE_DEPENDS_jffs2 = "mtd-utils-native"
IMAGE_DEPENDS_cramfs = "cramfs-native"
IMAGE_DEPENDS_ext2 = "genext2fs-native"
IMAGE_DEPENDS_ext2.gz = "genext2fs-native"
+IMAGE_DEPENDS_ext3 = "genext2fs-native e2fsprogs-native"
+IMAGE_DEPENDS_ext3.gz = "genext2fs-native e2fsprogs-native"
IMAGE_DEPENDS_squashfs = "squashfs-tools-native"
IMAGE_DEPENDS_squashfs-lzma = "squashfs-lzma-tools-native"
EXTRA_IMAGEDEPENDS = ""
@@ -320,7 +330,10 @@ GNU_MIRROR = "ftp://ftp.gnu.org/gnu"
DEBIAN_MIRROR = "ftp://ftp.debian.org/debian/pool"
SOURCEFORGE_MIRROR = "http://downloads.sourceforge.net"
GPE_MIRROR = "http://gpe.linuxtogo.org/download/source"
+GPEPHONE_MIRROR = "http://gpephone.linuxtogo.org/download/gpephone"
GPE_SVN = "svn://projects.linuxtogo.org/svn/gpe/trunk/base;module=${PN}"
+GPE_EXTRA_SVN = "svn://projects.linuxtogo.org/svn/gpe/trunk/extra;module=${PN}"
+GPEPHONE_SVN = "svn://projects.linuxtogo.org/svn/gpephone/trunk/source;module=${PN}"
XLIBS_MIRROR = "http://xlibs.freedesktop.org/release"
XORG_MIRROR = "http://xorg.freedesktop.org/releases"
GNOME_MIRROR = "http://ftp.gnome.org/pub/GNOME/sources"
@@ -352,6 +365,25 @@ SRCDATE = "${DATE}"
SRC_URI = "file://${FILE}"
##################################################################
+# UI/Interaction Configuration
+##################################################################
+
+SHELLRCCMD = "bash --rcfile $TERMRCFILE"
+# Some common terminal programs to choose from
+GNOME_TERMCMD = 'gnome-terminal --disable-factory -t "$TERMWINDOWTITLE"'
+GNOME_TERMCMDRUN = '${GNOME_TERMCMD} -x ${SHELLRCCMD}'
+SCREEN_TERMCMD = 'screen -D -m -t "$TERMWINDOWTITLE"'
+SCREEN_TERMCMDRUN = '${SCREEN_TERMCMD} ${SHELLRCCMD}'
+XTERM_TERMCMD = 'xterm -T "$TERMWINDOWTITLE"'
+XTERM_TERMCMDRUN = '${XTERM_TERMCMD} -e ${SHELLRCCMD}'
+KONSOLE_TERMCMD = 'konsole -T "$TERMWINDOWTITLE"'
+KONSOLE_TERMCMDRUN = '${KCONSOLE_TERMCMD} -e ${SHELLRCCMD}'
+
+# Set a default
+TERMCMD ?= "${GNOME_TERMCMD}"
+TERMCMDRUN ?= "${GNOME_TERMCMDRUN}"
+
+##################################################################
# Miscellaneous utilities.
##################################################################
@@ -377,7 +409,7 @@ SLOT = "0"
# Other
-export PKG_CONFIG_PATH = "${STAGING_DATADIR}/pkgconfig"
+export PKG_CONFIG_PATH = "${STAGING_LIBDIR}/pkgconfig"
export PKG_CONFIG_DISABLE_UNINSTALLED = "yes"
export QMAKE_MKSPEC_PATH = "${STAGING_DIR}/${BUILD_SYS}/share/qmake"
@@ -424,6 +456,8 @@ PCMCIA_MANAGER ?= "pcmcia-cs"
MACHINE_TASK_PROVIDER ?= "task-base"
IMAGE_ROOTFS_SIZE_ext2 ?= "65536"
IMAGE_ROOTFS_SIZE_ext2.gz ?= "65536"
+IMAGE_ROOTFS_SIZE_ext3 ?= "65536"
+IMAGE_ROOTFS_SIZE_ext3.gz ?= "65536"
##################################################################
# Magic Cookie for SANITY CHECK
@@ -437,6 +471,11 @@ OES_BITBAKE_CONF = "1"
MACHINE_FEATURES ?= "kernel26"
DISTRO_FEATURES ?= ""
+# This is used to limit what packages goes into images built, so set big by default
+ROOT_FLASH_SIZE ?= "256"
+
+GUI_MACHINE_CLASS ?= "smallscreen"
+
DISTRO_EXTRA_RDEPENDS ?= ""
DISTRO_EXTRA_RRECOMMENDS ?= ""
MACHINE_EXTRA_RDEPENDS ?= ""
@@ -452,5 +491,6 @@ COMBINED_FEATURES = "\
${@base_both_contain("DISTRO_FEATURES", "MACHINE_FEATURES", "pcmcia", d)} \
${@base_both_contain("DISTRO_FEATURES", "MACHINE_FEATURES", "pci", d)} \
${@base_both_contain("DISTRO_FEATURES", "MACHINE_FEATURES", "usbgadget", d)} \
- ${@base_both_contain("DISTRO_FEATURES", "MACHINE_FEATURES", "usbhost", d)}"
+ ${@base_both_contain("DISTRO_FEATURES", "MACHINE_FEATURES", "usbhost", d)} \
+ ${@base_both_contain("DISTRO_FEATURES", "MACHINE_FEATURES", "wifi", d)}"
diff --git a/conf/checksums.ini b/conf/checksums.ini
new file mode 100644
index 0000000000..2f8e310b22
--- /dev/null
+++ b/conf/checksums.ini
@@ -0,0 +1,11895 @@
+[ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.1.1.tar.bz2]
+md5=c7b0aa7d7bd352f4c9dda541a8c864f9
+sha256=ba798267ba4cea6888353ae0447949ef4967a1e3d548f50beac3208337d15197
+
+[ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.1.3.tar.bz2]
+md5=ad19909ed6a7992f6917d6bc282f4a40
+sha256=7fd75a3accdfec1fb52fa5f715a54654f217361c4ec489db27ce0dd8423af1b1
+
+[ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.3.0.tar.bz2]
+md5=903890208248639ac723d2c4988e04bd
+sha256=7c3181475402d2b547a407a77b1a8de986eb3a19ee2051f2748e968a7ab83a8c
+
+[ftp://alpha.gnu.org/gnu/coreutils/coreutils-6.0.tar.bz2]
+md5=c15219721e6590fa13bf50af49e712c2
+sha256=efa27532ec6dc12a21f703ad4a0f612e613e9cc2575147685db81cc701952ac9
+
+[ftp://alpha.gnu.org/gnu/tar/tar-1.13.93.tar.gz]
+md5=71bfeab35c9935631fc133f9d272b041
+sha256=0ef70273b6a54357c7823ed1f11015523f5cc5fe16df097e0b5300ae725c44e1
+
+[ftp://arcana.linux.it/pub/gpm/gpm-1.20.1.tar.bz2]
+md5=2c63e827d755527950d9d13fe3d87692
+sha256=11fabe7f27a205ff1ea6aee23e1dc2bb2dc5dbfc45ff0320fca0cd559806a936
+
+[ftp://dante.ctan.org/tex-archive/systems/unix/teTeX/current/distrib/tetex-src-3.0.tar.gz]
+md5=944a4641e79e61043fdaf8f38ecbb4b3
+sha256=9c0f7eaeb5ba6dc6f66433404d264941bf95cded2fa798b1f7a9dd580c21649b
+
+[ftp://dante.ctan.org/tex-archive/systems/unix/teTeX/current/distrib/tetex-texmf-3.0.tar.gz]
+md5=ed9d30d9162d16ac8d5065cde6e0f6fa
+sha256=6c3b8fa619749cbb28ca0f8847e56773d13e0bb92f1ea34287420950373640c2
+
+[ftp://elsie.nci.nih.gov/pub/tzcode2007e.tar.gz]
+md5=4ac16fb9de55c6e8e4c86b4e3613fbcf
+sha256=86d0db25f691ba5b86939e8a5911939b9b306d1deb13fccc5d7f899a9fdabac3
+
+[ftp://elsie.nci.nih.gov/pub/tzdata2007e.tar.gz]
+md5=b74e5f71714e5222340f1fb30da30a76
+sha256=51d14a60ea12aa901bf91e5d39ea30c13ffdc299640e8ec9cb0d35a128874767
+
+[ftp://ftp-archives.postgresql.org/pub/source/v8.1.4/postgresql-8.1.4.tar.bz2]
+md5=a65bdc5d833169d28bf6fbaaa8d57fcf
+sha256=ac7e7d311b07abd27b084041bcc943398df303bc86601f281891537bdf1a4e0b
+
+[ftp://ftp-fourier.ujf-grenoble.fr/xcas/devel/sources/fltk-1.1.4-device.tar.gz]
+md5=826c6afa88c9c4da734fe7393ed59639
+sha256=a0e31ad5088414aaee003586a23127a5ace7717ba4f8fb4e02cf56bb9a5c30f4
+
+[ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.11.tar.bz2]
+md5=ef7ae78a0ef08cbeacb295f2518886ab
+sha256=6b25f3d22cdb2476233f6dd74880fd88fb65124d4c282704bb9f0bf3fbd4c8d2
+
+[ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.13.tar.bz2]
+md5=d55a9d7d2a79d738a1b7a511cffda4b6
+sha256=7a17403ac478cae0d837461b7efcd9075b17c6e7f3e2221fe1f2fdbd14f11dcf
+
+[ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-1.0.11.tar.bz2]
+md5=3106c2d59a329263867fa3dd44133dda
+sha256=6b688a3895a14945d0622e16cfdb9292ef9f953ab2d195b08595736f76e5a790
+
+[ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.11.tar.bz2]
+md5=ba9b8010120701d0f6daf061d392cfa2
+sha256=4b33229437ddab4196b8fd0bdfaf074314185a5afd3e24bbe28025022b42d01b
+
+[ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.13.tar.bz2]
+md5=dfe4bb5d3217f3ec662b172ce8397cf0
+sha256=d7fe8a7995bc74331c89fbc1937a0682d239339d6659a402cd7b8e4b96c050f0
+
+[ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/OLD-VERSIONS/imap/cyrus-imapd-2.2.5.tar.gz]
+md5=ad8e3ca17b04a38c934f8c7a80c8adec
+sha256=8f3b8a3076c16f21ef2912c29033975fb6072ceb68471f15d8a53d833f2873e7
+
+[ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/OLD-VERSIONS/sasl/cyrus-sasl-2.1.17.tar.gz]
+md5=4add6be2f194dc51aafc64193a1dd77b
+sha256=7a0b1d5135fa470d10b86f4efbf3f59d6412f1e539f7ea61604d44ac4505dba6
+
+[ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/OLD-VERSIONS/sasl/cyrus-sasl-2.1.18.tar.gz]
+md5=1eafae95f0289c10f187d8b2bc4032cf
+sha256=384279adfd582ad6f905197c46a5157f855462718530148fdbab3328cf621eb7
+
+[ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.2.12.tar.gz]
+md5=70b3bba526a8d36d3bb23a87d37e9188
+sha256=3c6f41255ba15d8b2ea78320dd5e0c98e07fe0b5c3c4b84bc20f503427bd1b7b
+
+[ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.19.tar.gz]
+md5=ea76410ad88fa7b6c17a6aac424382c9
+sha256=0ee2d5d04972a15c3154730f328467a5cf5c7e69766a73bab06664263666bfeb
+
+[ftp://ftp.arm.linux.org.uk/pub/armlinux/source/kernel-patches/v2.4/patch-2.4.25-vrs1.bz2]
+md5=ed2909e7dcf11950503e438457086765
+sha256=f7f3c7bb493df1f19da32fd2001a8d52cc6ab3c7286781ebdc4d7d2367debc1d
+
+[ftp://ftp.astron.com/pub/file/file-4.18.tar.gz]
+md5=ce1aa9b0316feb57d40a48cfe6b606e4
+sha256=5090d5123ea642842d04d3f93a821e1372e5d9e434c74c08ee2483cc150a6273
+
+[ftp://ftp.astron.com/pub/file/file-4.20.tar.gz]
+md5=402bdb26356791bd5d277099adacc006
+sha256=c0810fb3ddb6cb73c9ff045965e542af6e3eaa7f2995b3037181766d26d5e6e7
+
+[ftp://ftp.berlios.de/pub/cdrecord/cdrtools-2.01.tar.bz2]
+md5=d44a81460e97ae02931c31188fe8d3fd
+sha256=728b6175069a77c4d7d92ae60108cbda81fbbf7bc7aa02e25153ccf2092f6c22
+
+[ftp://ftp.berlios.de/pub/ser/0.9.0/src/ser-0.9.0_src.tar.gz]
+md5=ae1f9b237f0006785ff22eafa1470ac4
+sha256=65eb4c5735859f3ed191437749a85e9fd24a66a6567025f36a0739f9c34c444e
+
+[ftp://ftp.billsgames.com/unix/agenda/aliens/src/aliens_V1.0.0.tar.gz]
+md5=9d7cde75aecf4b85478c0e47343d4293
+sha256=0aa0084a74f912f4002f1c40a815ce62ac13331ec84787a954d8bea06e1c96c5
+
+[ftp://ftp.billsgames.com/unix/agenda/brickout/src/brickout-2002.06.09.tar.gz]
+md5=f191a5658e4262e85499e5b69433af89
+sha256=56e0abb8697b62949ab085419a3b6f83dd13db02d322759f4cd6c5e5286c2240
+
+[ftp://ftp.billsgames.com/unix/x/gemdropx/src/gemdropx-0.9.tar.gz]
+md5=fd0337e89778e2dba74461c555ea8e42
+sha256=e50495d292a1d456c28044efbf07c16d8865f8d95e1caba86f4c5b2e3fb1d28f
+
+[ftp://ftp.billsgames.com/unix/x/vectoroids/src/vectoroids-1.1.0.tar.gz]
+md5=c63ce56b09aa7da9a6e95d804e9ee314
+sha256=8d14dd281767e994108abd77c8e67d5a17718d0ad1e34d37e026911d14697b2e
+
+[ftp://ftp.bitrot.de/pub/otpkeygen/otpkeygen-src_1.3.0.tar.gz]
+md5=ec1c0a93a586361298faebce4fac9dbd
+sha256=b6129acb788726ab159ed790a85a625651fff5cdff3a2cd0517f19ccd41c2a54
+
+[ftp://ftp.bitwizard.nl/mtr/mtr-0.65.tar.gz]
+md5=32de3cb8f0763e352124ff4fd74690ab
+sha256=82da36fd013f33237a26f1a291e21fc041ebfeac90177a82cb8862732d824bc6
+
+[ftp://ftp.buici.com/pub/apex/apex-1.4.11.tar.gz]
+md5=7259a49d93b1853b1b3435753893ab7c
+sha256=bce6638d95fa8d32b109176a7cef6aa71e40c130068fac71b0df369d1a36c82c
+
+[ftp://ftp.buici.com/pub/apex/apex-1.4.7.tar.gz]
+md5=ed2183311aacf5714afbd825f3671417
+sha256=a319f936af9df20cd173d2e4c486cb6f1a011287ebcbd429a7f38c3214f555f3
+
+[ftp://ftp.cac.washington.edu/pine/pine4.64.tar.Z]
+md5=75af127948cc0c701d424d22d621f792
+sha256=62c7b97695cb486e420afbbbe21bef853dd68a71665d867ffef50cb34dfba5f4
+
+[ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/sysvinit-2.86.tar.gz]
+md5=7d5d61c026122ab791ac04c8a84db967
+sha256=035f98fae17d9cff002993c564ccc83dc4ed136127172caeff872b6abdb679d8
+
+[ftp://ftp.cm.nu/pub/people/shane/intercom/intercom-0.15.tar.gz]
+md5=11d11d1e5ec6dd9ec22bb0bd85b0e5c7
+sha256=734ff159feedf6198889d4daba233347ff7966e8fd6c22a89c9087c1c85cc5c3
+
+[ftp://ftp.cs.pdx.edu/pub/elvis/elvis-2.2_0.tar.gz]
+md5=6831b8df3e4a530395e66c2889783752
+sha256=9a8466b2293798441056bc279736af3a616baaba2f11940396cc60ff71924ea0
+
+[ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-4.4.tar.bz2]
+md5=89fc389191d9611b314c3fc23235377b
+sha256=1849733ce494a51334bd1cbf4cc96c63b037256ddab8cb2dc3672db916bb3094
+
+[ftp://ftp.cwru.edu/pub/bash/readline-4.3.tar.gz]
+md5=f86f7cb717ab321fe15f1bbcb058c11e
+sha256=eeaf6f050b9f515b0636e5b4f2c153f9ef78e9061ee5dd74f612fab54c77bf88
+
+[ftp://ftp.daper.net/pub/soft/moc/stable/moc-2.4.0.tar.bz2]
+md5=5b31665390fb0b30d19dadec4e90abb8
+sha256=9fffb28f0edb020dffe605b0d69d94f1b3abe3d1e8beffa2ea7809daecaff136
+
+[ftp://ftp.debian.org/debian/pool/main/a/apmd/apmd_3.2.2.orig.tar.gz]
+md5=b1e6309e8331e0f4e6efd311c2d97fa8
+sha256=7f7d9f60b7766b852881d40b8ff91d8e39fccb0d1d913102a5c75a2dbb52332d
+
+[ftp://ftp.debian.org/debian/pool/main/a/apt/apt_0.5.28.6.tar.gz]
+md5=26b37525371cdaaec552237e0667305d
+sha256=57de084860870cccf510de62eb8ded252f5951a6e59e34a963d61d69de3aff10
+
+[ftp://ftp.debian.org/debian/pool/main/a/apt/apt_0.6.46.2.tar.gz]
+md5=67d439a252996357b0313b3ad999739a
+sha256=6f1a7340d0de2a9a524055d0ed4289aa919dc29e9e1fe60aae598f2019105686
+
+[ftp://ftp.debian.org/debian/pool/main/a/at/at_3.1.8-11.tar.gz]
+md5=81dbae5162aaa8a398a81424d6631c77
+sha256=0d77c73a3c151a7da647dd924f32151e5ee4574530568fd65067882f79cd5a44
+
+[ftp://ftp.debian.org/debian/pool/main/a/atftp/atftp_0.7-7.diff.gz]
+md5=03ccc8d178ee956feb46ab970e982e94
+sha256=71e8890e709ee77756368b8508f65c6c9bf8c6ed5e1501726ef30e1dc105d4f5
+
+[ftp://ftp.debian.org/debian/pool/main/a/atftp/atftp_0.7.orig.tar.gz]
+md5=3b27365772d918050b2251d98a9c7c82
+sha256=9c548c44d3cfdf259118d9fd4e468e1fe4567456dbff8ff59838c5f70ef62ea3
+
+[ftp://ftp.debian.org/debian/pool/main/b/base-passwd/base-passwd_3.5.9.tar.gz]
+md5=2dd8ad238abcbab478db690085554d90
+sha256=a9d7ac67598b2b004a53a9e70592e0f274d3c8731ed9395ed704fd0259f0c0af
+
+[ftp://ftp.debian.org/debian/pool/main/c/chmlib/chmlib_0.380.orig.tar.gz]
+md5=2282c228ab3776c828e79b7b51f2ccc1
+sha256=36645bb9e89ba63c303591a4c365f1819a1dd435d46f227140640f4089bfe6f0
+
+[ftp://ftp.debian.org/debian/pool/main/d/debianutils/debianutils_2.17.3.tar.gz]
+md5=cc768faa584f6c31cc1e0a959a3b8c0c
+sha256=46c0991b71d1991aa2f90d6816d9efb737fc9f9b99713174fcdf8d323727a11c
+
+[ftp://ftp.debian.org/debian/pool/main/d/diffstat/diffstat_1.39-1.diff.gz]
+md5=14d2853df66054f83d73f7601bc60c8b
+sha256=51e9b659b480d59ca3bb48ac1e4701d3b23c1efde15cf02c1904b43af6690fad
+
+[ftp://ftp.debian.org/debian/pool/main/d/diffstat/diffstat_1.39.orig.tar.gz]
+md5=2d29a68f8fb75b3bed7a18f3d0a002bb
+sha256=e19f52cde20094ce20a1edee019ae7715bc1e8beca62ec4989a3da626ba9898a
+
+[ftp://ftp.debian.org/debian/pool/main/d/dpkg/dpkg_1.13.22.tar.gz]
+md5=0fc9fffc2c2cfa7107d8f422815078c1
+sha256=c33aeb300d93eaeac55927ce81dc6f3a1cf74b3b759b65182c9bfca31b75b98f
+
+[ftp://ftp.debian.org/debian/pool/main/e/enscript/enscript_1.6.4.orig.tar.gz]
+md5=b5174b59e4a050fb462af5dbf28ebba3
+sha256=45299a4db47c9c08c3649d4f62b211ae79ef5143360c264a40371a728f6ad99b
+
+[ftp://ftp.debian.org/debian/pool/main/f/fakechroot/fakechroot_2.5.orig.tar.gz]
+md5=e2d4dd31f06c116685d0bdbccef84d00
+sha256=8961b4d552493bf0a00cbee21010fdf5344ebd7f29f304349c8c5023218c0227
+
+[ftp://ftp.debian.org/debian/pool/main/f/fetchmail/fetchmail_6.2.5.orig.tar.gz]
+md5=9956b30139edaa4f5f77c4d0dbd80225
+sha256=c18e6f23315e0a3526229bd0ba5cf8ce0d747cb5e5ba7cb952ad08c85a1cafac
+
+[ftp://ftp.debian.org/debian/pool/main/f/fortune-mod/fortune-mod_1.99.1-2.diff.gz]
+md5=5f059f7c997adbc0a260f27947605be1
+sha256=d68c7c8ff6fe94341a3a73d22ab976da42921e3bec9bed628a428518c2c5f67a
+
+[ftp://ftp.debian.org/debian/pool/main/f/fortune-mod/fortune-mod_1.99.1.orig.tar.gz]
+md5=f208805b3b712e32997d7667e0ec52d8
+sha256=fc51aee1f73c936c885f4e0f8b6b48f4f68103e3896eaddc6a45d2b71e14eace
+
+[ftp://ftp.debian.org/debian/pool/main/g/genext2fs/genext2fs_1.3.orig.tar.gz]
+md5=1342f26b75d8edb1daa01999ce330d29
+sha256=8e7dfa34f3919226550dc6507a23753f9fda55e78b15b264291ecf5940d837e9
+
+[ftp://ftp.debian.org/debian/pool/main/g/gtk-industrial-engine/gtk-industrial-engine_0.2.46.0.tar.gz]
+md5=c0f131c265a585e5cfd84e2da6b6d3a0
+sha256=5e58ce65e7fe08eb28bd258a5de9c56c75998cdb48c3867b392b5ea74160aa32
+
+[ftp://ftp.debian.org/debian/pool/main/g/gzip/gzip_1.3.5.orig.tar.gz]
+md5=3d6c191dfd2bf307014b421c12dc8469
+sha256=631820e566353eafc4bdc0d9d8221c26c7ef6b5d10a254783dbe9bcac88caa07
+
+[ftp://ftp.debian.org/debian/pool/main/i/ifupdown/ifupdown_0.6.8.tar.gz]
+md5=0c4cf072305b1e798e9e704558ec01f1
+sha256=7305d27b5718e83872329e0ade92fc3b9710226c63418188744a3ce8c4030ceb
+
+[ftp://ftp.debian.org/debian/pool/main/l/ltrace/ltrace_0.4-1.diff.gz]
+md5=89c0ebdd0a27bc7f68726100f4bb079b
+sha256=27c0b2051949b88514d4a32300377d531db314d7c93750b0abff049c2b93d739
+
+[ftp://ftp.debian.org/debian/pool/main/l/ltrace/ltrace_0.4.orig.tar.gz]
+md5=8dbadad76ee360c2ed2caa915f5b1c8e
+sha256=28bbab4a69a3c78539b2588d2219327009d93cafc74fb59b9a4ea5f5b794f8db
+
+[ftp://ftp.debian.org/debian/pool/main/liba/libaio/libaio_0.3.106.orig.tar.gz]
+md5=9480e31cce6506091080d59211089bd4
+sha256=89f47d77d0f660cef80efeecc1cbd194ebf4afdd3be5ab2c3584bd8a90ac44c0
+
+[ftp://ftp.debian.org/debian/pool/main/libl/liblockfile/liblockfile_1.06.tar.gz]
+md5=2de88389da013488bfd31356523070c0
+sha256=14f9690328318d11f9ba13a9356a2c008bdd169b7a817f38cb7f9eb32cf7240e
+
+[ftp://ftp.debian.org/debian/pool/main/libn/libnet/libnet_1.1.2.1.orig.tar.gz]
+md5=be845c41170d72c7db524f3411b50256
+sha256=ab01882a3d0556176018c09342cd0731f7cbc8e687795009894c3326942c76ff
+
+[ftp://ftp.debian.org/debian/pool/main/libn/libnet0/libnet0_1.0.2a.orig.tar.gz]
+md5=bf4983ea440542f3ec019cc1bb6ca87d
+sha256=cf6bf75d590884fa9d0725d4d86afa93211e29cf0c5f333a60bb4e4eb347dc29
+
+[ftp://ftp.debian.org/debian/pool/main/m/mailx/mailx_8.1.2-0.20020411cvs-1.diff.gz]
+md5=816b337e1fb83a2ebac164412f8ea1fe
+sha256=f37d1c04b88f430a77aea1bea7048e114dc37990e64a6b7d49974511c6d4b7e0
+
+[ftp://ftp.debian.org/debian/pool/main/m/mailx/mailx_8.1.2-0.20020411cvs.orig.tar.gz]
+md5=61bb0ce78f7828b4fb9f6fe13eb4e425
+sha256=38fedc49b0b38018b3b5249499d28c6581b43a45a412f0c144341bee52575498
+
+[ftp://ftp.debian.org/debian/pool/main/m/mailx/mailx_8.1.2-0.20040524cvs-4.diff.gz]
+md5=e51180fe1b43fcdf3125fd9be4734b0c
+sha256=131fe674be66bd3f464ee40aa457a9613f3d2a17ea83c724c4145a5d072a252e
+
+[ftp://ftp.debian.org/debian/pool/main/m/mailx/mailx_8.1.2-0.20040524cvs.orig.tar.gz]
+md5=b7d8c2b5f64ac0b0ce51fdda482ec399
+sha256=b8a15528701669c728bbdc74060512eb41ce6284601c87f4ba6820b92380bec0
+
+[ftp://ftp.debian.org/debian/pool/main/m/mailx/mailx_8.1.2-0.20050715cvs-1.diff.gz]
+md5=38de40f8b082f4d592262c04275e2f30
+sha256=2fb891f912624766d0bef765d69cec75ad3334dda1aa58659f3c3c1d0579c2c3
+
+[ftp://ftp.debian.org/debian/pool/main/m/mailx/mailx_8.1.2-0.20050715cvs.orig.tar.gz]
+md5=3ba08abd8bbd0a87ea5bad05cded3bc3
+sha256=5c578a8c573b4430358d4f6523f8acd8b2c5039579d907c88ec09dab13b226d3
+
+[ftp://ftp.debian.org/debian/pool/main/m/makedev/makedev_2.3.1.orig.tar.gz]
+md5=89c4b6b4a89f6502626783716fc7d887
+sha256=8599712f2b2b3778eea344f59e1512cea284e802560317fac436585885a41dfa
+
+[ftp://ftp.debian.org/debian/pool/main/m/masqmail/masqmail_0.2.21.orig.tar.gz]
+md5=7e989a8b0562054aea22c654507f2cb5
+sha256=2257099c760c12daf094744c6b2269d476e3bc6b523366168ad81bdd2ebd2445
+
+[ftp://ftp.debian.org/debian/pool/main/m/mime-support/mime-support_3.28-1.tar.gz]
+md5=d779a0b8f58776c28296ae62f253784e
+sha256=8ee3e48da07e20899a11adb9f2dd4dfc4922b43bcb1dc7bd78c55aceeb5eccc1
+
+[ftp://ftp.debian.org/debian/pool/main/n/netbase/netbase_4.21.tar.gz]
+md5=4e4582ed5f84fa074137c1a7ee39a689
+sha256=aa54d1822f8505f600b4c8d5debdf289b956b3b86bfd72e2ba02026352c107fc
+
+[ftp://ftp.debian.org/debian/pool/main/o//offlineimap/offlineimap_4.0.14.tar.gz]
+md5=b374415d7f5d485993fa697ab9a678b4
+sha256=3b46936339fe5c2dcb8fb2f9213fa36dcddefaa1e00d1d93b5640d8cc9898ca1
+
+[ftp://ftp.debian.org/debian/pool/main/p/portmap/portmap_5-25.diff.gz]
+md5=b78c2ecfe378b03b8f1b36d2aed94eac
+sha256=09595393c56b24d45476bf414f9e32cf13d675711c8ac3f7e0754c938814e085
+
+[ftp://ftp.debian.org/debian/pool/main/p/portmap/portmap_5-26.diff.gz]
+md5=11118c91a095e8ff7f4a3f5f09062be7
+sha256=8478eee317686f53e24519657f4653293bd120fae9815153d7cf54e0f8be9feb
+
+[ftp://ftp.debian.org/debian/pool/main/p/portmap/portmap_5-9.diff.gz]
+md5=8b77092f74e5638e90825973f0274729
+sha256=a9ab1930048038d80a9e48e69a6f0d57e86a355545d6db3e2c67e06ec909b80a
+
+[ftp://ftp.debian.org/debian/pool/main/p/portmap/portmap_5.orig.tar.gz]
+md5=781e16ed4487c4caa082c6fef09ead4f
+sha256=e8fb4429ecf03809f60b2e194be120a811be1c5cc3cc5d933ede938114357b61
+
+[ftp://ftp.debian.org/debian/pool/main/p/prelink/prelink_0.0.20060712.orig.tar.gz]
+md5=f897774889b14e5414983c3bf65e1fad
+sha256=ffe91ca709c381b94f8ed99a51ea8d865dad9667186c572dcfd5711a1700b232
+
+[ftp://ftp.debian.org/debian/pool/main/r/resolvconf/resolvconf_1.28.tar.gz]
+md5=fa360e7dcdb195fa5738216facc881c6
+sha256=6c2bd1aa8894a7eb180945a39780e00f4b3949aa487fe278fcace5310d4a2da5
+
+[ftp://ftp.debian.org/debian/pool/main/s/screen/screen_4.0.2-4.1.diff.gz]
+md5=8f8725fa9b3385042115e84a06866ce6
+sha256=c426660739a93f94364de29cde222f7c3621364d9843b52c91735ba8b6a81c62
+
+[ftp://ftp.debian.org/debian/pool/main/s/scsi-idle/scsi-idle_2.4.23-5.tar.gz]
+md5=86b310223642b6841c9e04ecd4d7fed8
+sha256=6b53eb1645ac64667f0ee109b3456ba909b1c8bec432330a9d90e9a20980823b
+
+[ftp://ftp.debian.org/debian/pool/main/s/scw/scw_0.4.3.orig.tar.gz]
+md5=4c9fb66fa496cf32542e92f32f821818
+sha256=fca3763b05f064728c9ff248fa0766808d1ceae561b88ad202811924e4ccdb45
+
+[ftp://ftp.debian.org/debian/pool/main/s/setmixer/setmixer_27DEC94.orig.tar.gz]
+md5=b30985591b239d2913382b97817ba790
+sha256=4639247cb15c306f2182eea53982fe8007a8b9080cb9c1a8a38d5d2a45e4c20f
+
+[ftp://ftp.debian.org/debian/pool/main/s/ssmtp/ssmtp_2.61.orig.tar.gz]
+md5=957e6fff08625fe34f4fc33d0925bbc9
+sha256=2151ad18cb73f9a254f796dde2b48be7318b45410b59fedbb258db5a41044fb5
+
+[ftp://ftp.debian.org/debian/pool/main/t/t1lib/t1lib_5.0.2.orig.tar.gz]
+md5=cc5d4130b25bb8a1c930488b78930e9b
+sha256=34ff6a85d1dae64d06b5aca04fb17822dd26a734f40cd966e3dd980afa4a037a
+
+[ftp://ftp.debian.org/debian/pool/main/t/ttf-gentium/ttf-gentium_1.02.orig.tar.gz]
+md5=4c3e6ae586be277537ebb68f2a45b883
+sha256=4746c04c9a4ad9e0788a38e0a2f81919a630d8070ceabc89f156b6d41d8ceb37
+
+[ftp://ftp.debian.org/debian/pool/main/w/whois/whois_4.5.25.tar.gz]
+md5=516fc54ce709e874133fc3b3c7c05447
+sha256=99979ff161ee209da21ae118eff9ca6de7c5cb1b0dc3397de18df534e0afaf76
+
+[ftp://ftp.debian.org/debian/pool/non-free/n/netperf/netperf_2.3.orig.tar.gz]
+md5=b50e49d5f0d3780438af0027a182b997
+sha256=0578f4fafb309adf3413c9f56076b1b16476cb71e83c02ff7efafad172d91adb
+
+[ftp://ftp.debian.org/debian/pool/non-free/n/netperf/netperf_2.4.2.orig.tar.gz]
+md5=c747042975c2965b2cd45ebf8525c5f8
+sha256=844ba97e745a0b9f37afc7daa323cafcef00108cd0254667da0a00558eb323a7
+
+[ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.6.tar.bz2]
+md5=5b1b1f7b3b1e06f75f5bfbd79891067b
+sha256=778acb0eafe1d9b94c6f5ec5f333126c40d73704920ff8b23085c6dedecfd6e8
+
+[ftp://ftp.denx.de/pub/u-boot/u-boot-1.2.0.tar.bz2]
+md5=17aeee76ca4c07887bbfea8a52d40884
+sha256=62192ddf019c5d24f6538b33c9e69b6e5792bf5b0f464c0149061e2f0871108b
+
+[ftp://ftp.ee.lbl.gov/arpwatch-2.1a15.tar.gz]
+md5=cebfeb99c4a7c2a6cee2564770415fe7
+sha256=c1df9737e208a96a61fa92ddad83f4b4d9be66f8992f3c917e9edf4b05ff5898
+
+[ftp://ftp.feep.net/pub/software/fget/fget-1.3.3.tar.gz]
+md5=a556eef04aeb574ac8ab0dd8c868fcab
+sha256=ceaa67f19a1c5462f5e739fcd3b53dd42b0173d9deee579c55e5088801559e43
+
+[ftp://ftp.freebsd.org/pub/FreeBSD//ports/packages/archivers/rpm2cpio-1.2_2.tbz]
+md5=801fd27c30c2e68ab4f193f15f81abb3
+sha256=ecfcc4b5b6658f07eb01cee4d081e8a127b95c9b50a6dc94b622c09522545c53
+
+[ftp://ftp.freeciv.org/freeciv/stable/freeciv-1.14.1.tar.bz2]
+md5=d328f65e7fca5252f27161f5f9e97a03
+sha256=8a963570e5c4ea432b0e31d77d3605705bda91a9f97ff377c5c3204ca768e342
+
+[ftp://ftp.fsl.cs.sunysb.edu/pub/unionfs/unionfs-1.0.11.tar.gz]
+md5=494651fe0cf724c093b4be80e35e857f
+sha256=f1df81423a65590ffd20df43f5cd0be14cf6746437eb40c2c924f5f58a6e18a7
+
+[ftp://ftp.fsl.cs.sunysb.edu/pub/unionfs/unionfs-1.0.13.tar.gz]
+md5=1dca48ff260dacf890b8040a3cea55b3
+sha256=61b03ce855734b1a1b4b180856095876d562c22e359ba847a2544c488c7254b4
+
+[ftp://ftp.funet.fi/pub/CPAN/src/perl-5.8.4.tar.gz]
+md5=912050a9cb6b0f415b76ba56052fb4cf
+sha256=89dcc463f88e0b785ee2cf2662d97c6b7d045393283664876370970a09b8cbef
+
+[ftp://ftp.funet.fi/pub/CPAN/src/perl-5.8.7.tar.gz]
+md5=dacefa1fe3c5b6d7bbc334ad94826131
+sha256=916d7e1393ed09ca4c61b3c1ecb5f5564266c955db81ff587d2da8af7a7abaab
+
+[ftp://ftp.gimp.org/pub/gimp/v2.2/gimp-2.2.10.tar.bz2]
+md5=aa29506ed2272af02941a7a601a7a097
+sha256=41f4befa851177e2ca9bbab2fad19926178c831454ca51f2cb91fec0ed9e243e
+
+[ftp://ftp.gimp.org/pub/gimp/v2.3/gimp-2.3.10.tar.bz2]
+md5=a46acb413484300583ffca1fa54e0874
+sha256=38ddc0ebc452968db653efce31864d61bc4a5e521a9694a8b9b8f4fe49a2d131
+
+[ftp://ftp.gimp.org/pub/gimp/v2.3/gimp-2.3.7.tar.bz2]
+md5=dfc47a29b3a7ade07bd17244f0e83311
+sha256=2a6c869ba61c1b18bbafa95bdf89cdc8fe1f07b068aa37dc9332a158b7e295eb
+
+[ftp://ftp.gimp.org/pub/gimp/v2.3/gimp-2.3.8.tar.bz2]
+md5=393e7fb4e5e141faa2e3b44da3f301e3
+sha256=ea5cb59c739357003b3c7fb0d1166e8d8f913be6e9f4737c1905e62b93b0246f
+
+[ftp://ftp.gnome.org/pub/GNOME/sources/esound/0.2/esound-0.2.36.tar.bz2]
+md5=3facb5aa0115cc1c31771b9ad454ae76
+sha256=68bf399fcbd45c5e9ba99cd13a3a479e4ef2bc5dc52e540ffa00aef1e1b19a76
+
+[ftp://ftp.gnome.org/pub/GNOME/sources/glibmm/2.8/glibmm-2.8.4.tar.bz2]
+md5=952cdde2d6aef201c528d431036d71e1
+sha256=7ff592b6687caefa367b33d8cb8f66f3c0273fa86d4b688c0758d0d9fee7a2cb
+
+[ftp://ftp.gnome.org/pub/GNOME/sources/libIDL/0.8/libIDL-0.8.2.tar.bz2]
+md5=a75d2dbf3a3c66b567047c94245f8b82
+sha256=1c9529f7245778a4f1422d6257d446b7c90a19c3b603b1a25db1669552c464b3
+
+[ftp://ftp.gnome.org/pub/GNOME/sources/libglade/2.0/libglade-2.0.1.tar.bz2]
+md5=4d93f6b01510013ae429e91af432cfe2
+sha256=6386901d84cb41fb8a584f7aa1b54c984e0590f36f45ee016ef30aa45554194d
+
+[ftp://ftp.gnome.org/pub/GNOME/sources/libglademm/2.4/libglademm-2.4.1.tar.bz2]
+md5=81688d8499028aee8132db48a71e90eb
+sha256=4efb4fe267c19bf96e56f01f0d7a5508c1619cfac139a8e2e5c7f99a8d9cf97c
+
+[ftp://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.0/libsigc++-2.0.6.tar.gz]
+md5=9eab84e54790093be3aa93fb4163c4b9
+sha256=25d21557dccebbed2c7ff704fded0399194164d0a5e318791b4594a7db1cfa6b
+
+[ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/2.12/pygobject-2.12.2.tar.bz2]
+md5=394999abd1921ceff653c98165c713a0
+sha256=83787be6e11f6c7a45c111fa37f674a153274c45c2ab3f4b38b3b6dad933fcda
+
+[ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/2.12/pygobject-2.12.3.tar.bz2]
+md5=009986021225b7ea6e0ba848707785af
+sha256=efa81e0281668988b8cc2af9d0546befa4365662f1ebec37e0c7c863e969da41
+
+[ftp://ftp.gnome.org/pub/gnome/sources/dia/0.95/dia-0.95-pre3.tar.gz]
+md5=642f7e7d4c71dc144b60f51f9d65de62
+sha256=902da1b1e9d90dfda8aa1864846db8ad12386e7521fc9f8b18c8ba220dd0123a
+
+[ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.10/pygtk-2.10.3.tar.bz2]
+md5=57cd2b7e6e383b58ce145199d03e40b7
+sha256=03a605f106e30bea448b04007635a21140eeaba4c8844188d661c3b133cbee89
+
+[ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.6/pygtk-2.6.3.tar.bz2]
+md5=5acd4a4f5807f93a80389c1e9af48808
+sha256=1cd8e9bb0a011317862aec90a03e562bebbbf7fcf865a8ff12992548cdda746d
+
+[ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.8/pygtk-2.8.6.tar.bz2]
+md5=c69c2e5e86a8f21a5773df20e265fc3a
+sha256=dee1ec46a43bf624f1ff796903bd2d49e65c1cc8396385f46bf1489817bd6e60
+
+[ftp://ftp.gnu.org/gnu/adns/adns-1.0.tar.gz]
+md5=af4411ee10875b96c0d61f903018f438
+sha256=bed27a4ec5b71acc08333368e842a1248e83328018b582caf644985539967c5d
+
+[ftp://ftp.gnu.org/gnu/aspell/aspell-0.60.5.tar.gz]
+md5=17fd8acac6293336bcef44391b71e337
+sha256=ee9e81d2e3e66b01ad91da736e48568ed8acd6dfb6b664d904066ecc5ea4e84b
+
+[ftp://ftp.gnu.org/gnu/aspell/dict/en/aspell6-en-6.0-0.tar.bz2]
+md5=16449e0a266e1ecc526b2f3cd39d4bc2
+sha256=24f0688711d2b893fa06c16d14d0aa3a8000e326226b839aad32611f7ace4898
+
+[ftp://ftp.gnu.org/gnu/aspell/dict/pl/aspell6-pl-6.0_20061121-0.tar.bz2]
+md5=3139a69a1bd9ccb1d853d30aa024fc2b
+sha256=017741fcb70a885d718c534160c9de06b03cc72f352879bd106be165e024574d
+
+[ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.57.tar.bz2]
+md5=407ea53787ce13f5ca427e9a51e05bc2
+sha256=e1035aa2c21fae2a934d1ab56c774ce9d22717881dab8a1a5b16d294fb793489
+
+[ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.59.tar.bz2]
+md5=1ee40f7a676b3cfdc0e3f7cd81551b5f
+sha256=f0cde70a8f135098a6a3e85869f2e1cc3f141beea766fa3d6636e086cd8b90a7
+
+[ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.61.tar.bz2]
+md5=36d3fe706ad0950f1be10c46a429efe0
+sha256=93a2ceab963618b021db153f0c881a2de82455c1dc7422be436fcd5c554085a1
+
+[ftp://ftp.gnu.org/gnu/automake/automake-1.7.7.tar.bz2]
+md5=4323c25644ed092c3d4fdfef434ab28d
+sha256=d2c98fb12188461b0542bd928e91c3767db2cb6cd951a222b6c305bd99a75878
+
+[ftp://ftp.gnu.org/gnu/automake/automake-1.8.2.tar.bz2]
+md5=7a8138b29361baec06548e6a0ac63189
+sha256=e17e114a281ea38cd75d8908d75f8616a0ab8a893b1d048a1d8eb01e7e70605b
+
+[ftp://ftp.gnu.org/gnu/automake/automake-1.8.4.tar.bz2]
+md5=57f405a10fc5990ed6120fbbef3ab502
+sha256=be1d6f04743ceef1799a144f26080e299a352de68d86776688f0940e0e9d6718
+
+[ftp://ftp.gnu.org/gnu/automake/automake-1.9.2.tar.bz2]
+md5=b5799f983d0a062ec59810f6b289cd27
+sha256=8f0dfa44cdd55c2df211afa6baa386a5cdb06f9b9612ce7bd793811297710fbc
+
+[ftp://ftp.gnu.org/gnu/automake/automake-1.9.3.tar.bz2]
+md5=0ee08fb0ee48d20a4f8da99137340efd
+sha256=181b64e23c8e3f70191e5d7aec07c0ad02c90496367b2f3138a6fb73f27e05ff
+
+[ftp://ftp.gnu.org/gnu/automake/automake-1.9.6.tar.bz2]
+md5=c11b8100bb311492d8220378fd8bf9e0
+sha256=8eccaa98e1863d10e4a5f861d8e2ec349a23e88cb12ad10f6b6f79022ad2bb8d
+
+[ftp://ftp.gnu.org/gnu/bash/bash-3.0.tar.gz]
+md5=26c4d642e29b3533d8d754995bc277b3
+sha256=72d3f9d80fb4622e79ee5019314668b7bd6747182fa0928c8742002b7568586f
+
+[ftp://ftp.gnu.org/gnu/bash/bash-3.2.tar.gz]
+md5=00bfa16d58e034e3c2aa27f390390d30
+sha256=26c99025b59e30779300b68adb764f824974d267a4d7cc1b347d14a2393f9fb4
+
+[ftp://ftp.gnu.org/gnu/bc/bc-1.06.tar.gz]
+md5=d44b5dddebd8a7a7309aea6c36fda117
+sha256=4ef6d9f17c3c0d92d8798e35666175ecd3d8efac4009d6457b5c99cea72c0e33
+
+[ftp://ftp.gnu.org/gnu/bison/bison-2.0.tar.gz]
+md5=c17f964fd5504b88b07a183420de25e3
+sha256=31b816846903d319a6f6cd1c9aada5ff83914206cb7df69c235ae909785109a1
+
+[ftp://ftp.gnu.org/gnu/classpath/classpath-0.14.tar.gz]
+md5=227beb20b927c042628539601c867614
+sha256=a4ac64ff980f1fd23f4cd21e1bdf8cebc1c4147264fbd5c94981553adcfbf292
+
+[ftp://ftp.gnu.org/gnu/classpath/classpath-0.15.tar.gz]
+md5=036c23aec7cb53a43b7b9dc63a92fbbe
+sha256=19368b2ccd7d51b51bc265969042d39d48bcfecf6b4b58190009037f92b037c9
+
+[ftp://ftp.gnu.org/gnu/classpath/classpath-0.17.tar.gz]
+md5=eb620987422878e05ea889d5e7496c63
+sha256=3516577166c963a8ee1b7a47ac5243cba7f47a60d659fc0324ad02a171fd3aa8
+
+[ftp://ftp.gnu.org/gnu/classpath/classpath-0.18.tar.gz]
+md5=c0650c257aa93eafb709553f172f0bbb
+sha256=f2b3962b279a1d8f98c24e39cd5d62d4e9fbf50b7b8a75e90fcf0ded822824c2
+
+[ftp://ftp.gnu.org/gnu/classpath/classpath-0.19.tar.gz]
+md5=0b93b1c1dd3d33ef7fb6a47dbb29e41d
+sha256=154153797eae72fe4c6e22718e8b630e56317e686ca40857ed3fa9a1dd046199
+
+[ftp://ftp.gnu.org/gnu/classpath/classpath-0.20.tar.gz]
+md5=21e34b8e8acb4f7b31296bfaf4ad560a
+sha256=6a068f70f908ee4de0ba4d7e1d5127b12ad548da371494c668966d1ff98e05a2
+
+[ftp://ftp.gnu.org/gnu/classpath/classpath-0.90.tar.gz]
+md5=cf5aaaf07fe43567fa605b33165355d7
+sha256=4f2824c42062dea269e489c1acb2769c015bf78cdaa929ee75441d412f10a03b
+
+[ftp://ftp.gnu.org/gnu/coreutils/coreutils-5.0.tar.gz]
+md5=d16b769d380a0492a4c5ee61d2619985
+sha256=c27ce75e3f62455f4facf4f3fd55bc9e3877d0ab1d5c0426c94da168cc349883
+
+[ftp://ftp.gnu.org/gnu/cpio/cpio-2.5.tar.gz]
+md5=e02859af1bbbbd73fcbf757acb57e0a4
+sha256=dbf79293d0cafa7d7a3a266c2b0b90c00d556e7b3185d4243c74153291da24c8
+
+[ftp://ftp.gnu.org/gnu/dejagnu/dejagnu-1.4.4.tar.gz]
+md5=053f18fd5d00873de365413cab17a666
+sha256=d0fbedef20fb0843318d60551023631176b27ceb1e11de7468a971770d0e048d
+
+[ftp://ftp.gnu.org/gnu/diffutils/diffutils-2.8.1.tar.gz]
+md5=71f9c5ae19b60608f6c7f162da86a428
+sha256=c5001748b069224dd98bf1bb9ee877321c7de8b332c8aad5af3e2a7372d23f5a
+
+[ftp://ftp.gnu.org/gnu/findutils/findutils-4.2.29.tar.gz]
+md5=24e76434ca74ba3c2c6ad621eb64e1ff
+sha256=1a9ed8db0711f8419156e786b6aecd42dd05df29e53e380d8924e696f7071ae0
+
+[ftp://ftp.gnu.org/gnu/gawk/gawk-3.1.4.tar.gz]
+md5=3c8935efb9fdc7202720894279ad04a7
+sha256=5cdfe0c0919895e2ec87773c583cc6ebf2b84cba7617d5ec6cfd0150749e190f
+
+[ftp://ftp.gnu.org/gnu/gcc/gcc-3.4.1/gcc-3.4.1.tar.bz2]
+md5=31b459062499f9f68d451db9cbf3205c
+sha256=5f3685533f8dc4b42b926fe70bb371b31e1368223a0ad7398ba27ea3a20e8e7a
+
+[ftp://ftp.gnu.org/gnu/gcc/gcc-3.4.2/gcc-3.4.2.tar.bz2]
+md5=2fada3a3effd2fd791df09df1f1534b3
+sha256=522c53b92ff9096089f3074c50e17a5169952d32f4c883c6fdae350e8f1b344e
+
+[ftp://ftp.gnu.org/gnu/gcc/gcc-3.4.3/gcc-3.4.3.tar.bz2]
+md5=e744b30c834360fccac41eb7269a3011
+sha256=63dc1c03a107ec73871151bb765da7d5dfc1d699c0d0d6a3d244cf5ccb030913
+
+[ftp://ftp.gnu.org/gnu/gcc/gcc-3.4.4/gcc-3.4.4.tar.bz2]
+md5=b594ff4ea4fbef4ba9220887de713dfe
+sha256=3444179840638cb8664e8e53604900c4521d29d57785a5091202ee4937d8d0fd
+
+[ftp://ftp.gnu.org/gnu/gcc/gcc-4.0.0/gcc-4.0.0.tar.bz2]
+md5=55ee7df1b29f719138ec063c57b89db6
+sha256=38a9a01e195000976dcd04ec854c398478ada839510b1de384ffbd5f99791bdc
+
+[ftp://ftp.gnu.org/gnu/gcc/gcc-4.0.2/gcc-4.0.2.tar.bz2]
+md5=a659b8388cac9db2b13e056e574ceeb0
+sha256=37b3286c2bfb68da9df983f60721f868e29897f7a426306748fee93b25c5fb61
+
+[ftp://ftp.gnu.org/gnu/gcc/releases/gcc-3.3.3/gcc-3.3.3.tar.bz2]
+md5=3c6cfd9fcd180481063b4058cf6faff2
+sha256=9ac6618495b7dd2ff0cd50abd76fe3c51287efcc724340687407f9fc250bdc6a
+
+[ftp://ftp.gnu.org/gnu/gcc/releases/gcc-3.3.4/gcc-3.3.4.tar.bz2]
+md5=a1c267b34f05c8660b24251865614d8b
+sha256=3f409186acee739641341e5486e30ea9acecc039452e97a9eb850afbc6c3a691
+
+[ftp://ftp.gnu.org/gnu/gdb/gdb-6.3.tar.gz]
+md5=812de9e756d53c749ea5516d9ffa5905
+sha256=c06bf9715436b3a28c189163aa5ca42b46af8286659827f033eaaf7d8b1fc342
+
+[ftp://ftp.gnu.org/gnu/gdb/gdb-6.4.tar.bz2]
+md5=f62c14ba0316bc88e1b4b32a4e901ffb
+sha256=af6777836ab72b563a9e55467f990250e07e56c292cfac98762745c1512167ef
+
+[ftp://ftp.gnu.org/gnu/gdb/gdb-6.4.tar.gz]
+md5=7dc98022ee96bba5331f195dc8a5491a
+sha256=719f2bbd79d55cdd6f5e31b49cec49df71ddb32a4439dba678de0e09330096da
+
+[ftp://ftp.gnu.org/gnu/gdb/gdb-6.6.tar.gz]
+md5=18be4e7a1ac713bda93d00fee20bbef8
+sha256=c119ce82f0e42d3412420c42c1ead75e0b9de67131a5c9dd3cdab509f65ddfdd
+
+[ftp://ftp.gnu.org/gnu/gdbm/gdbm-1.8.3.tar.gz]
+md5=1d1b1d5c0245b1c00aff92da751e9aa1
+sha256=cc340338a2e28b40058ab9eb5354a21d53f88a1582ea21ba0bb185c37a281dc9
+
+[ftp://ftp.gnu.org/gnu/gettext/gettext-0.14.1.tar.gz]
+md5=78f4b862510beb2e5d43223dd610e77d
+sha256=41f20c469c7759acb34cfa7e0b3cac9096d59a58ad800e471f07424a8e7adbb7
+
+[ftp://ftp.gnu.org/gnu/ghostscript/gnu-ghostscript-8.16.tar.gz]
+md5=c42dfaebc37fe81eab0b5676b124ab63
+sha256=417922d35e66ee90cf93cf3e93fdf281ec6b92de4f7436c9c1a97c0cc35b94a8
+
+[ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.5.tar.gz]
+md5=e4c3eb8343b5df346ceaaec23459f1dc
+sha256=58dc8df59aed1e4d9d50eef9e4c4c0789fa283b50f7a093932d0f467424484ee
+
+[ftp://ftp.gnu.org/gnu/glibc/glibc-2.3.2.tar.gz]
+md5=2d72df1e1dd599dbdf3835b7c2951860
+sha256=dbf0deb003531cbd2493986718a1b34a113c914238a90de8b5b3218217257d82
+
+[ftp://ftp.gnu.org/gnu/glibc/glibc-2.3.3.tar.gz]
+md5=b45c4cfa714a4688c319149c15a1e060
+sha256=0ae1b1dc1ee870d307ae6ad4546778377b04055520d3771dab1290e60ab13286
+
+[ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.5.tar.gz]
+md5=c766a79a51668d7fa33f175a249655b4
+sha256=c027824ee6593a838e0883bdd4bf8bd455b3dcf4ff0aa77fe82452819d882f47
+
+[ftp://ftp.gnu.org/gnu/gmp/gmp-4.1.2.tar.bz2]
+md5=ed39b34dd14014cc504840776af5ba10
+sha256=51ba8551092510ef5c61798584f4cff054e0fbbe7c46fea2c8ff9ea9a52edcd1
+
+[ftp://ftp.gnu.org/gnu/gmp/gmp-4.1.4.tar.bz2]
+md5=0aa7d3b3f5b5ec5951e7dddd6f65e891
+sha256=1a6ed0ea17b24ea8864c4df516d20c41fac97a448559ddee5a8477aeeecca1a3
+
+[ftp://ftp.gnu.org/gnu/gmp/gmp-4.2.1.tar.bz2]
+md5=091c56e0e1cca6b09b17b69d47ef18e3
+sha256=d07ffcb37eecec35c5ec72516d10b35fdf6e6fef1fcf1dcd37e30b8cbf8bf941
+
+[ftp://ftp.gnu.org/gnu/gnuradio/usrp-0.12.tar.gz]
+md5=41ee5d5f1ef440fdd880f99c53fccf69
+sha256=c9be448984840ae960874c3c536942ba63c79a7f6a0dff3970540190b1500804
+
+[ftp://ftp.gnu.org/gnu/grep/grep-2.5.1.tar.bz2]
+md5=ddd99e2d5d4f4611357e31e97f080cf2
+sha256=fca0532a4b58021863b6673dc65b275f3e34cafd3b327dcf47da265af359778a
+
+[ftp://ftp.gnu.org/gnu/grep/grep-2.5.tar.bz2]
+md5=5e7bd36e089b637ab3795354ec25dcae
+sha256=cb47ab7e7e472e1cb27948d2ce055632ad68557f5ed5af989278e43117a611cd
+
+[ftp://ftp.gnu.org/gnu/gsl/gsl-1.4.tar.gz]
+md5=7513e13525c073dc07e02cc4354294e2
+sha256=850b4512fa5e4bbb964c67c215fe8ce64fe6f7e6b704180a783d8c2a04169ccb
+
+[ftp://ftp.gnu.org/gnu/inetutils/inetutils-1.4.2.tar.gz]
+md5=df0909a586ddac2b7a0d62795eea4206
+sha256=9f001daa0f3d571ae35aac88f04d5dd982a14e90257e4dfb535c143fa18d5830
+
+[ftp://ftp.gnu.org/gnu/less/less-381.tar.gz]
+md5=40c2dd4ac137b61b6a55a6478817daf4
+sha256=bb892b14965e1cf7c431cd8c6b2c744a57d6d6fc940ffd78ab4efa2b0bbc51d3
+
+[ftp://ftp.gnu.org/gnu/less/less-382.tar.gz]
+md5=103fe4aef6297b93f0f73f38cc3b1bd7
+sha256=d33cc51f220647d015fd526b3782cde03c5d8b18c5233e6388a0047a70446fe7
+
+[ftp://ftp.gnu.org/gnu/libtool/libtool-1.5.10.tar.gz]
+md5=e2093a85f6d48f1562c36920087502d6
+sha256=6524e6d7a4adbda7fcda27ecd7b08bbeab88ad59d81bc6b166c617530f3dee1a
+
+[ftp://ftp.gnu.org/gnu/m4/m4-1.4.4.tar.gz]
+md5=8d1d64dbecf1494690a0f3ba8db4482a
+sha256=a116c52d314c8e3365756cb1e14c6b460d6bd28769121f92373a362497359d88
+
+[ftp://ftp.gnu.org/gnu/m4/m4-1.4.8.tar.gz]
+md5=66542b27c0ffa7513b52aed0ce5d784c
+sha256=0f4e55d362408e189d0c0f4e6929f4b5be7eb281e46cbf0ce3f035370c00bc7e
+
+[ftp://ftp.gnu.org/gnu/macchanger/macchanger-1.5.0.tar.gz]
+md5=79b7cdaeca3d8ebafa764c4b0dd03ab7
+sha256=d44bfa27cb29c5a718627cb3ef3aa42eb5130426545eb2031120826cd73fa8fe
+
+[ftp://ftp.gnu.org/gnu/mailutils/mailutils-0.3.1.tar.bz2]
+md5=d2f0192b3dd95b33e764a0d480085cdd
+sha256=1d145c55cf9ef1cd9ad996bd7efe0df7765e0ec8ef60a0b95f5c239172efebdd
+
+[ftp://ftp.gnu.org/gnu/make/make-3.80.tar.bz2]
+md5=0bbd1df101bc0294d440471e50feca71
+sha256=a99b39e7b04c333724f48c38fede709481cfb69fafe7e32ae4285b7fadf92f1b
+
+[ftp://ftp.gnu.org/gnu/make/make-3.81.tar.bz2]
+md5=354853e0b2da90c527e35aabb8d6f1e6
+sha256=f3e69023771e23908f5d5592954d8271d3d6af09693cecfd29cee6fde8550dc8
+
+[ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.3.tar.gz]
+md5=5dcc9faa93157eafa572494bffed131a
+sha256=6cac973dd31f9e7a505e45ffa9bb82cfa6b41f84b4832fd775e15857ee9b35d4
+
+[ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.4.tar.gz]
+md5=069c8880072060373290a4fefff43520
+sha256=5abce063cf431790f4e6a801a96c7eea0b33a41ecd0970f6312f52575c083b36
+
+[ftp://ftp.gnu.org/gnu/osip/libosip2-2.2.2.tar.gz]
+md5=40ee3ec89030f0d6dfdb2cf6100e6685
+sha256=4e13febd65a2f8f18cb55151cd10f5f0888bf1e7dc2a4c0d54f39f170255de1c
+
+[ftp://ftp.gnu.org/gnu/parted/parted-1.6.23.tar.gz]
+md5=7e46a32def60ea355c193d9225691742
+sha256=5144f413dcce1a0b94263ebf3730f2a2afe6a9557bf261f9d6f48c890423f4c8
+
+[ftp://ftp.gnu.org/gnu/parted/parted-1.6.25.1.tar.gz]
+md5=8ad8b2c8aa865d9d6a43a4ecfe021782
+sha256=b8f151450dc71e2477d44b7f9ebb77a9ccf8d08776b77edb9bddee07885f1b02
+
+[ftp://ftp.gnu.org/gnu/parted/parted-1.8.0.tar.gz]
+md5=52d3e565fc3369d3388a9e02d4b17410
+sha256=6c57feb082c23e52f38366fff4ffa3961e5dc294d4ebb61ffa31462b5ae3681e
+
+[ftp://ftp.gnu.org/gnu/parted/parted-1.8.2.tar.gz]
+md5=cce5bce8fa1d430e1ca3de3722807e01
+sha256=2f67c40e2589e7804213493f24ebf80cd10847b47c95098854db0250511c3ed1
+
+[ftp://ftp.gnu.org/gnu/patch/patch-2.5.4.tar.gz]
+md5=ee5ae84d115f051d87fcaaef3b4ae782
+sha256=dd2fc5a745bfca5450d13d7032fdc47ab102514aae3efb3fe334a6eff87df799
+
+[ftp://ftp.gnu.org/gnu/pth/pth-2.0.2.tar.gz]
+md5=fc4d81a1dbf3d1af9a099b765f9a1be3
+sha256=2f18dc8e553b2eb9e40e429ccc829e2b8e25d2f82929cfbc4149b1147d00eee1
+
+[ftp://ftp.gnu.org/gnu/recode/recode-3.6.tar.gz]
+md5=be3f40ad2e93dae5cd5f628264bf1877
+sha256=e3e6a4f3f8e5c6052ab70155990c074d87aa0b614fc1be31d194750d1d962fcf
+
+[ftp://ftp.gnu.org/gnu/screen/screen-4.0.2.tar.gz]
+md5=ed68ea9b43d9fba0972cb017a24940a1
+sha256=05d087656d232b38c82379dfc66bf526d08e75e1f4c626acea4a2dda1ebcc845
+
+[ftp://ftp.gnu.org/gnu/sed/sed-4.0.8.tar.gz]
+md5=fb7fa2a7336afc358012763b292e2124
+sha256=a02d8c006bc0531bd646cae3082b7db8c7a1969084411cb129ec105fd12c0a13
+
+[ftp://ftp.gnu.org/gnu/sed/sed-4.0.9.tar.gz]
+md5=d8fb554bc6577aaedd39b94b3cb3df70
+sha256=c365874794187f8444e5d22998cd5888ffa47f36def4b77517a808dec27c0600
+
+[ftp://ftp.gnu.org/gnu/sed/sed-4.1.1.tar.gz]
+md5=570c0a53a64ec020d8fcbce51fb6d71a
+sha256=5e0bec79ff46ad189370e9defc95f72bd255990bfc3ad546e64f41eb08533fd9
+
+[ftp://ftp.gnu.org/gnu/sed/sed-4.1.2.tar.gz]
+md5=928f0e06422f414091917401f1a834d0
+sha256=638e837ba765d5da0a30c98b57c2953cecea96827882f594612acace93ceeeab
+
+[ftp://ftp.gnu.org/gnu/sed/sed-4.1.tar.gz]
+md5=d8a08cc12fda1826deb2028dd729e189
+sha256=57c86e7c17b8af6d6ecbdc17086ad22ec72d815f0db8a475a1d9adef2879f922
+
+[ftp://ftp.gnu.org/gnu/texinfo/texinfo-4.8a.tar.bz2]
+md5=0f429f87de9f20d6c0d952e63bf8e3fa
+sha256=efcda677be7ef093757d965736dff3b5af8c9fd36b3e7d3db09289a4a1d5d013
+
+[ftp://ftp.gnu.org/gnu/time/time-1.7.tar.gz]
+md5=e38d2b8b34b1ca259cf7b053caac32b3
+sha256=e37ea79a253bf85a85ada2f7c632c14e481a5fd262a362f6f4fd58e68601496d
+
+[ftp://ftp.gnu.org/gnu/units/units-1.80.tar.gz]
+md5=537f0e1fadc7715e1eb15c9aa33c8c64
+sha256=f1dc3a6e929618a1799d95e014dcb072963d13128aa8108772538b8c3e1535f8
+
+[ftp://ftp.gnu.org/gnu/wget/wget-1.9.1.tar.gz]
+md5=e6051f1e1487ec0ebfdbda72bedc70ad
+sha256=69044b87c517b986dbc17a5f7e4de430cb56e605330c19c6bb0d384d5c37e638
+
+[ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2]
+md5=a4a3eb15c96030906d8494959eeda23c
+sha256=cfc0efbcc6fcde0d416a32dfb246c9df022515a312683fac412578c4fd09a9bc
+
+[ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.5.tar.bz2]
+md5=1fb29764a6a650a4d5b409dda227ac9f
+sha256=9b2e12bb1eafb55ab2e5a868532b8e6ec39216c66c25b8998d7474bc4d4eb529
+
+[ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-2.5.tar.bz2]
+md5=8787868ba8962d9b125997ec2f25ac01
+sha256=de77e49e0beee6061d4c6e480f322566ba25d4e5e018c456a18ea4a8da5c0ede
+
+[ftp://ftp.gnu.org/pub/gnu/glibc/glibc-linuxthreads-2.3.2.tar.gz]
+md5=993efdb74f75990f4a5cb6f7e69c40b4
+sha256=74ec1a4a28f854a27deeb9dfd0673f9d8f8fb948b3db0b45503c287c1ec9d15f
+
+[ftp://ftp.gnu.org/pub/gnu/glibc/glibc-linuxthreads-2.3.3.tar.gz]
+md5=9006b8bff18beb864f6053857f25b410
+sha256=2d7af8211cda81abde3e0bb8ccedbd18924a27b244ff35d4eacafcf899038c56
+
+[ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-2.5.tar.bz2]
+md5=183f6d46e8fa5e4b2aff240ab1586c2e
+sha256=80c38a005325e7539012bd665fb8e06af9ee9bfc74efb236ebff121265bfd463
+
+[ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz]
+md5=6bc300365053c815b10b800a21e0bc7e
+sha256=fdb726c5d3761d4c1569e702b74cf9561dc07c6a5f48af3e3fd18685f50d490c
+
+[ftp://ftp.gnupg.org/gcrypt/alpha/libassuan/libassuan-0.6.7.tar.gz]
+md5=db4e6939fafbaae80cab11a67f28771d
+sha256=c72dc7b2a3bb2945d1fb693b401ddff44f3eefbe248f2e6d29c86487b69c1dd4
+
+[ftp://ftp.gnupg.org/gcrypt/alpha/libassuan/libassuan-0.6.9.tar.gz]
+md5=7f8aff75d034159b84faf2358263f444
+sha256=e62ac18effcbd578f7fae14c9384795321c9a954d258f6bd9da3a620b37f4106
+
+[ftp://ftp.gnupg.org/gcrypt/alpha/libgcrypt/libgcrypt-1.1.91.tar.gz]
+md5=8f3581d2d2a66c8f42b16f6ce13dedc3
+sha256=9ea092029d2b32dc5eb06b38494dcc264d1a46835296ac1ed0433fff25030b83
+
+[ftp://ftp.gnupg.org/gcrypt/alpha/libgpg-error/libgpg-error-0.6.tar.gz]
+md5=516623893401d391b6c346cba543681d
+sha256=32fe6ccae632a2d6ede51477dbdd5b39a0816510031bae0b5e5059099044a58c
+
+[ftp://ftp.gnupg.org/gcrypt/alpha/libgpg-error/libgpg-error-0.7.tar.gz]
+md5=5340fa28c365049c995996e8dc0f880c
+sha256=e8eb2c3a844a080144cbb994118e5110b08bc0f608f8c3f2f1977211167bda76
+
+[ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.2.2.tar.bz2]
+md5=c34736eb7cb687f9e5b6d4df48aaf7c8
+sha256=174e7f78c670d76984c4c4bd6077a0b9fec7b4be700b9f3e40c6889b78110c57
+
+[ftp://ftp.gnupg.org/gcrypt/gpgme/gpgme-1.0.0.tar.gz]
+md5=1abf7accd905c435da567d0852c080af
+sha256=685e0162af08d90e01251a02c2f916de59b2b4fa903e9a3a119208b6bcca6092
+
+[ftp://ftp.gnupg.org/gcrypt/gpgme/gpgme-1.0.3.tar.gz]
+md5=4d33cbdf844fcee1c724e4cf2a32dd11
+sha256=376796ba50ee251af63c1fe2aa17603aaac04b64527ba3bc89e4fa023322282f
+
+[ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.2.0.tar.gz]
+md5=5c508072d8387ce17d1ab05075c2be40
+sha256=75eb60ff711496c7e367f32344e832607034de3bd381bcb5600b2f48ee32390f
+
+[ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.2.1.tar.gz]
+md5=215b242586cbe85716a9198b28209f8c
+sha256=bc7df42e61aadd212e82853795e22d5518e93af79ec8a9ddee4bf44c4e7e0b5f
+
+[ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.2.2.tar.gz]
+md5=1a4f886e4c1eb9b6908d39831c6f75b3
+sha256=d4423a582510a1e3f47af9995337b590b9c480248821116b5397bc0652aeb52e
+
+[ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.2.3.tar.gz]
+md5=64304da2d9e21239246c66f1d449b2c6
+sha256=2b384172b54074aef4ec23b3fcc8292c86c7c4fb0efb943e7dea9d886a1d4846
+
+[ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.0.tar.gz]
+md5=ff409db977e4a4897aa09ea420a28a2f
+sha256=7baf0a33a717c5d5b24faf592ba16fc5e962f1537f46b11f6ed003010a8ff1e9
+
+[ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.3.tar.gz]
+md5=aae34a35b00c547f2e41c747cf87f8b7
+sha256=d815a1a5445fc26de5c7b10192acb77cf4277a100124842b616f85a5a4fbfe3b
+
+[ftp://ftp.gnuplot.info/pub/gnuplot/gnuplot-4.0.0.tar.gz]
+md5=66258443d9f93cc4f46b147dac33e63a
+sha256=a77ad7cb08b2551dacbaa0bb02e561fddb6b9f4a0f3d45eb1c38be219955ea48
+
+[ftp://ftp.gnutls.org/pub/gnutls/gnutls-1.4.4.tar.bz2]
+md5=de5e060eeb2da36654e9e8af6b8b012a
+sha256=dfcdcd622b80b00d28ee40881ee56fec771213110b7fc07048bce07df7cec035
+
+[ftp://ftp.gnutls.org/pub/gnutls/gnutls-1.6.1.tar.bz2]
+md5=fc3cc2509aa93e150cafd39619de7428
+sha256=7711a351913731db25e12b20bc6f51e488f28df9c2673efdfa6e35034884cb41
+
+[ftp://ftp.gtk.org/pub/gtk/python/v1.2/pygtk-0.6.12.tar.gz]
+md5=31f0991a18708d47fa29583c0ad956f6
+sha256=7c95e6ae35d282fb333dc7b29bd91e543518ea7f3dfa11f21d52be0654234010
+
+[ftp://ftp.gtk.org/pub/gtk/v1.2/glib-1.2.10.tar.gz]
+md5=6fe30dad87c77b91b632def29dd69ef9
+sha256=6e1ce7eedae713b11db82f11434d455d8a1379f783a79812cd2e05fc024a8d9f
+
+[ftp://ftp.gtk.org/pub/gtk/v1.2/gtk+-1.2.10.tar.gz]
+md5=4d5cb2fc7fb7830e4af9747a36bfce20
+sha256=3fb843ea671c89b909fd145fa09fd2276af3312e58cbab29ed1c93b462108c34
+
+[ftp://ftp.gtk.org/pub/gtk/v2.10/gtk+-2.10.10.tar.bz2]
+md5=73967e62a2e2e588ace772ac9db1bc32
+sha256=f6b3448fcb0eaad1be873eb33c4b733414288b9aada6b51c6ac44140001e89b1
+
+[ftp://ftp.gtk.org/pub/gtk/v2.10/gtk+-2.10.9.tar.bz2]
+md5=20d763198efb38263b22dee347f69da6
+sha256=3aab107fb97a280b77fa30d07540e325d1511907bbce1e7efa5b4db2dffa28a3
+
+[ftp://ftp.gtk.org/pub/gtk/v2.4/atk-1.6.0.tar.bz2]
+md5=5e699af22a934ea3c1c1ed3742da0500
+sha256=a838937ee54c9e794df3b0995935c1e35cad4a360c83922380f9429195ea7059
+
+[ftp://ftp.gtk.org/pub/gtk/v2.4/atk-1.6.1.tar.bz2]
+md5=f77be7e128c957bd3056c2e270b5f283
+sha256=f9a05f797f0b23c7e2d88c428779c450718df2f187bd83dcf0a898adbda1b3ab
+
+[ftp://ftp.gtk.org/pub/gtk/v2.4/glib-2.4.6.tar.bz2]
+md5=a45db7d82480da431f6cd00ea041a534
+sha256=d2ca79bac06a625d9276b48492c2c1caccf7f8962f9b331b39796391013e72f2
+
+[ftp://ftp.gtk.org/pub/gtk/v2.4/gtk+-2.4.13.tar.bz2]
+md5=3a438e1010704b11acaf060c9ba0fd7b
+sha256=9952cd6f167446d32d9d9e1f19101877deb86ba67ec2d406dcdfb6c60e849779
+
+[ftp://ftp.gtk.org/pub/gtk/v2.4/pango-1.4.1.tar.bz2]
+md5=39868e0da250fd4c00b2970e4eb84389
+sha256=4f35ba6d3537c9386d6262bfe601a418bf34fe0be3bb0139ec2d3bd9435d4d3f
+
+[ftp://ftp.gtk.org/pub/gtk/v2.6/atk-1.9.0.tar.bz2]
+md5=7f41bd9c6dcd83c8df391dc1805be653
+sha256=6a33f5b7caab4e837ac671b4b6974059f62a2ef0fd62a9bc04c74d47f077ff14
+
+[ftp://ftp.gtk.org/pub/gtk/v2.6/glib-2.6.4.tar.bz2]
+md5=af7eeb8aae764ff763418471ed6eb93d
+sha256=acaff937432e26158c398e888fdcdd4eaf5a16ead75b46ecec194167b80c1fbd
+
+[ftp://ftp.gtk.org/pub/gtk/v2.6/glib-2.6.5.tar.bz2]
+md5=777d2e34a60edad28319207b576cda91
+sha256=ca061bbd41c6484b4b0eabbee08f99e51ebf5f3a0c63e8b0787b8d37546cc2ca
+
+[ftp://ftp.gtk.org/pub/gtk/v2.6/glib-2.6.6.tar.bz2]
+md5=6e22b0639d314536f23ee118f29b43de
+sha256=de4f25424840b8e3b1fb03e6bac0c095affc3ca9c228f8b780817489914bdebf
+
+[ftp://ftp.gtk.org/pub/gtk/v2.6/gtk+-2.6.10.tar.bz2]
+md5=520090ef291e35ba93397060e20f5025
+sha256=d408b606c8dd414dfbf220ccc168a0bc85a419945439796792a5357a96ff02af
+
+[ftp://ftp.gtk.org/pub/gtk/v2.6/pango-1.8.2.tar.bz2]
+md5=f5b5da7a173f0566d8217ec112fde993
+sha256=4cf04489ff291f3f1835783b8cfa8347d99f6a05d7d9da21c8d737f441bea3ac
+
+[ftp://ftp.gtk.org/pub/gtk/v2.7/pango-1.9.1.tar.bz2]
+md5=91f386893ff483e14dc4571e352150e4
+sha256=97cc77b93ce65e4f138e284f799c9ae7153b6f81720553c3c120b7317692b537
+
+[ftp://ftp.gtk.org/pub/gtk/v2.8/atk-1.10.3.tar.bz2]
+md5=c84a01fea567b365c0d44b227fead948
+sha256=c596baf95f6a6cd7748b1018336b2ac45ca2ef668816e6c703b01691e09b8a89
+
+[ftp://ftp.gtk.org/pub/gtk/v2.8/glib-2.8.6.tar.bz2]
+md5=fce6835fd8c99ab4c3e5213bc5bcd0ed
+sha256=e2da2eec8c87dccdbce16dcd77489d225b613074764f2f39f2815db15b5deeea
+
+[ftp://ftp.gtk.org/pub/gtk/v2.8/gtk+-2.8.16.tar.bz2]
+md5=6dea9b6f546bd858401729d12bbd5919
+sha256=5073cb676347d7bfb4438795f586867fbcce68b197eb9c0683b0b82af77d5b8f
+
+[ftp://ftp.gtk.org/pub/gtk/v2.8/gtk+-2.8.9.tar.bz2]
+md5=e7a94132ae6353106c80cd4a1106a368
+sha256=e8fb1f414288e1c2b1ee6408280477ee361e0a19564e9113bd98f433aaa81195
+
+[ftp://ftp.gtk.org/pub/gtk/v2.8/pango-1.10.2.tar.bz2]
+md5=7302220d93ac17d2c44f356d852e81dc
+sha256=677d3a943cfeedebf138024de6e4a773f7f6626236613401f3a797f82f04eba7
+
+[ftp://ftp.handhelds.org/projects/gpe/source/gpe-mini-browser-0.15.tar.gz]
+md5=b048cee7254d7fe6eb1e2821ce8706df
+sha256=aa9c2dbe8d763b4461a42d46378cc49335a266a7d6dcd794ecd46fac037c8913
+
+[ftp://ftp.handhelds.org/projects/gpe/source/gpe-mini-browser-0.16.tar.gz]
+md5=858f3e7219cde7b18e69293526020416
+sha256=36d2487895d3579ae3e8693ebe789b5de454506fc572937dac2fb7ef512f105f
+
+[ftp://ftp.handhelds.org/projects/gpe/source/gpe-mini-browser-0.17.tar.gz]
+md5=749c571ec28e2ea4f31602f3d5609e4b
+sha256=19d345571344f65e35b06c3faad6cfc86afeb8a41533d39bfbf364e1da34188c
+
+[ftp://ftp.handhelds.org/projects/gpe/source/gpe-mini-browser-0.18.tar.gz]
+md5=dff468aa9b5306d68d60685a7b04a90e
+sha256=bdd64d7a7b47bb348bba2d9aecbb1b68d020bccfc7f54a1dd842c7efaa616ec6
+
+[ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-1.0.0.tar.gz]
+md5=442bdbdb024db27dc9c89207fac16f95
+sha256=c3ed189e314d0f1d106df3ecb80b1f1147e86fe6cd05ceb53652c1396b67ab2e
+
+[ftp://ftp.isc.org/isc/bind9/9.3.1/bind-9.3.1.tar.gz]
+md5=9ff3204eea27184ea0722f37e43fc95d
+sha256=9a9411115338d2554f2e99bc676c2e9a381a8d649bf9bd9c0b2ffa2cf74b563c
+
+[ftp://ftp.isc.org/isc/dhcp/dhcp-2.0-history/dhcp-2.0pl5.tar.gz]
+md5=ab22f363a7aff924e2cc9d1019a21498
+sha256=ef0fa044354ea42983584fcf94838445d8c8167b07630ad1a1057ea4783794b7
+
+[ftp://ftp.isc.org/isc/dhcp/dhcp-3.0-history/dhcp-3.0.1.tar.gz]
+md5=44f72d16a12acc3fbe09703157aa42d2
+sha256=043dea4144a93b26358ed73cd8fab79be76834a719f13fbb4344a26e8288fc38
+
+[ftp://ftp.isc.org/isc/dhcp/dhcp-3.0-history/dhcp-3.0.2.tar.gz]
+md5=04800a111521e7442749b2ce883f962b
+sha256=21a6e0476fb880e704e0c3cfe7b2bc6a97f6b2b0654db10b38bdd317f511a03a
+
+[ftp://ftp.jbj.org/pub/rpm-4.4.x/rpm-4.4-1.src.rpm]
+md5=07f932a5f2c06bc14278f91782613c12
+sha256=a515675401cc9aff33cf8fd48d23a177cb9385907758c0e29a1dab693f55efe2
+
+[ftp://ftp.kernel.org/pub/software/utils/pciutils/pciutils-2.2.4.tar.bz2]
+md5=10bab01d3c8856426cdf79f124fd4173
+sha256=61fd2a9225aad67d4e21727a297e571ddd6a973b845646cf10b24a92b88467bc
+
+[ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-0.2.1-pre26.tar.bz2]
+md5=fff64e543e094b2007d614697f505344
+sha256=0dd50d400ab39619b20e50183ec7d357ad4b96bdebd64eca916e764542616e1a
+
+[ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-0.2.3.tar.bz2]
+md5=f26e41336a2838d69a366ab3a2d93ea0
+sha256=97004d6cefd1b5c5f37efc1603e4103f9a809d79f8cc0faf2397fa882cdd6ee6
+
+[ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-0.2.7.tar.bz2]
+md5=b2b0ffd11d27c72a9c01b8a9ef3832b7
+sha256=9dbd0f6c92b33ae8b96c5a045a341a00b2454492c2229839d056e4fd1488bca5
+
+[ftp://ftp.linux.org.uk/pub/armlinux/source/kernel-patches/v2.4/patch-2.4.18-rmk7.gz]
+md5=90c1cfbc47c7069a14a5cb584a5ada9a
+sha256=8cbde563f5b77a7cf5ab900e7e627c493c1e36948b2c021b4738de82ca686d00
+
+[ftp://ftp.logilab.fr/pub/common/common-0.4.4.tar.gz]
+md5=4cd3ce38efbd27c6cf4223f0ced2a5b5
+sha256=21341f1900b0fe919a2ad057c334f5d7172588e4262b3d1b0904da03a9db0cff
+
+[ftp://ftp.logilab.org/pub/constraint/constraint-0.2.3.tar.gz]
+md5=17fd01667356cf4d9298c46ed6f88a4f
+sha256=e77e1cb6cdeb30367f75accf62a7b94598ece4400c42eb9d8181b7da4fc87f82
+
+[ftp://ftp.logilab.org/pub/hmm/hmm-0.4.tar.gz]
+md5=9cd5734e1a54fdcec60ebf345e2e83c3
+sha256=a6ca7fc30502b5d724c1ef52fbb2e587755831270fcfeb2e32a83984a6256b3c
+
+[ftp://ftp.logilab.org/pub/pylint/pylint-0.3.3.tar.gz]
+md5=4ed7fb4b8bc126ca2412d9cf074f49c8
+sha256=56399d61e1ab5662189bced26f6450684adf179f5dd308bab7602e7aee1334af
+
+[ftp://ftp.logilab.org/pub/pyreverse/pyreverse-0.5.0.tar.gz]
+md5=a35281f7b3fea3cceff54378ebac09a4
+sha256=703b204bd1d57b1bfc0ba95246d229a599259b782ee18072d6041656d412073b
+
+[ftp://ftp.mars.org/pub/hfs/hfsutils-3.2.6.tar.gz]
+md5=fa572afd6da969e25c1455f728750ec4
+sha256=bc9d22d6d252b920ec9cdf18e00b7655a6189b3f34f42e58d5bb152957289840
+
+[ftp://ftp.mars.org/pub/mpeg/libid3tag-0.15.0b.tar.gz]
+md5=a625307d2cda4f3c609b79c1e3a93d87
+sha256=794092368890321ffbb9cb1b260808d732658af093bd0a3e01c9b54c4bd657e5
+
+[ftp://ftp.mars.org/pub/mpeg/libmad-0.15.0b.tar.gz]
+md5=2e4487cdf922a6da2546bad74f643205
+sha256=5666a1dec6956a9b9869aacc3b05a10222639651790be3a9c43772890eb49cd6
+
+[ftp://ftp.mars.org/pub/mpeg/libmad-0.15.1b.tar.gz]
+md5=1be543bc30c56fb6bea1d7bf6a64e66c
+sha256=bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690
+
+[ftp://ftp.mars.org/pub/mpeg/madplay-0.15.2b.tar.gz]
+md5=6814b47ceaa99880c754c5195aa1aac1
+sha256=5a79c7516ff7560dffc6a14399a389432bc619c905b13d3b73da22fa65acede0
+
+[ftp://ftp.math.muni.cz/pub/math/people/Dobes/phalanx-22.tar.gz]
+md5=8120f6383bb6d19e0c06ea47f69c2bda
+sha256=6eb45f17b50d864157dac2028ee5d45f4f54548825f5a732e1a430d5aa2dd889
+
+[ftp://ftp.microwindows.org/pub/microwindows/flnx/flnx-0.17.tar.gz]
+md5=d44da0fc0fd495f580b9174d3beb6f7e
+sha256=84fa995c461066ed39c587c834414ef1a320f605b6b6e1db2d10d12fa6a587db
+
+[ftp://ftp.microwindows.org/pub/microwindows/microwindows-0.90.tar.gz]
+md5=203188db254cc418e9d9dd9791543b9a
+sha256=8253a341c3bdd49467ecfdb5ccc03b359eacec5aec0b35bd77cdce341e157399
+
+[ftp://ftp.mutt.org/mutt/devel/mutt-1.5.4i.tar.gz]
+md5=3d4088f25892af6d71148eef26604f33
+sha256=f89af1816b839736eaf5fd188c4574fc52bdd37a7dabc465edafe6d8c3914847
+
+[ftp://ftp.mutt.org/mutt/devel/mutt-1.5.9i.tar.gz]
+md5=c5318eba3404ebd78a15c680fa1b6056
+sha256=d80142bfe7dd2c8ee9c2345c71fedded8b971267a9a29a853d48c562dd0605d4
+
+[ftp://ftp.namesys.com/pub/reiser4progs/old-versions/libaal-1.0.4.tar.gz]
+md5=bdcdb1b8ca13dba897c0a2138d1643f5
+sha256=694ea8352edf845b0a7dc0c2e0e990bcb8507f64e405edc048ad115c6578e5f7
+
+[ftp://ftp.namesys.com/pub/reiser4progs/old-versions/reiser4progs-1.0.4.tar.gz]
+md5=b2cbc8eb9429b50e0e99ba4eeda4801e
+sha256=4990e24f9a49588cc2d7c3646fb9b5c3946213db26e1df129d218265a88ada2e
+
+[ftp://ftp.namesys.com/pub/reiserfsprogs/reiserfsprogs-3.6.19.tar.gz]
+md5=b42cf15f6651c3ceff5cb84996c0d539
+sha256=c0862c53aecd23724a72d32fb54706d61d9858925c78408a2852d042417e68bf
+
+[ftp://ftp.ncftp.com/ncftp/ncftp-3.2.0-src.tar.bz2]
+md5=384b7f01d725c89ccd30692628b3ac1b
+sha256=2ebc7b51af96cb0fa8b703c7cb995bfb46ccf5312e335270d0420e260544c376
+
+[ftp://ftp.nluug.nl/pub/ImageMagick/ImageMagick-6.2.9-2.tar.bz2]
+md5=b12df56aedcfd0af2e61c503b3643f51
+sha256=8c03d7fec2bc1f43be6b1b4d91b88e79fed3f02bf0f993553083222d24da6190
+
+[ftp://ftp.octave.org/pub/octave/bleeding-edge/octave-2.1.71.tar.gz]
+md5=811df48dfc472013e2d858cc5d1cad00
+sha256=158ea1d061855ebb0bff92530f4975dd34e8e83d22ee0e425b49920ff2146351
+
+[ftp://ftp.openbios.org/pub/bootsplash/rpm-sources/bootsplash/bootsplash-3.0.7.tar.bz2]
+md5=d7c7cdab692fb2edc5cf5ebb554f20a1
+sha256=9b20c37f2ae2247354b580e080bf0c3b650d3e63bf39c3d5573ef3b9c75fe0f0
+
+[ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-3.7.1p1.tar.gz]
+md5=f54e574e606c08ef63ebb1ab2f7689dc
+sha256=61d9b805f255e143dbbc50c6c60c24f55bc4f8f319909dd399b3a3a1ef7c77f9
+
+[ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-3.7.1p2.tar.gz]
+md5=61cf5b059938718308836d00f6764a94
+sha256=c77c45cda120a2df844639ed9545243e9c9a436bd723e556c9ea06c15a682d06
+
+[ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-3.8p1.tar.gz]
+md5=7861a4c0841ab69a6eec5c747daff6fb
+sha256=4304eebd70fb7e8a565fc8bb32930abb0682b274db9fca4b50f47677bf9966b6
+
+[ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-4.0p1.tar.gz]
+md5=7b36f28fc16e1b7f4ba3c1dca191ac92
+sha256=5adb9b2c2002650e15216bf94ed9db9541d9a17c96fcd876784861a8890bc92b
+
+[ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-4.3p2.tar.gz]
+md5=7e9880ac20a9b9db0d3fea30a9ff3d46
+sha256=4ba757d6c933e7d075b6424124d92d197eb5d91e4a58794596b67f5f0ca21d4f
+
+[ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.2.29.tgz]
+md5=6c4c72a1336aa45b463e738034c078d6
+sha256=82ed5a27d2b340826b2e10625e687627ccefc883a426314952e4a253d5a6af29
+
+[ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.3.11.tgz]
+md5=fbde128a8421b8d2ea587a25057a281e
+sha256=63d1c60a49277a4e95dcfb7f45dbb66a902d9e9023f8aca3a01cda4ff221d6a9
+
+[ftp://ftp.ossp.org/pkg/lib/pth/pth-2.0.0.tar.gz]
+md5=f84a87295fef3b41499f3b728b1f0050
+sha256=1935a06368c1555d5f80329ba1e53f5b1a7dd9efb7fc9354427f2d1a583c81a3
+
+[ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-2.0.20.tar.gz]
+md5=92479b64d132262be505a17ec02bc2a8
+sha256=78c03b41d75f7402a63a5e5e13f3690005411a85299bc6ec9edbe04888db6d18
+
+[ftp://ftp.porcupine.org/pub/security/tcp_wrappers_7.6.tar.gz]
+md5=e6fa25f71226d090f34de3f6b122fb5a
+sha256=9543d7adedf78a6de0b221ccbbd1952e08b5138717f4ade814039bb489a4315d
+
+[ftp://ftp.remotesensing.org/proj/proj-4.4.9.tar.gz]
+md5=3cc5c2407c213aadfd154c8df80efd6c
+sha256=672b753f911bfb7cbf996ece57f46dd91d3bac9aa852178e3a56b5e111672aa9
+
+[ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/popt-1.7.tar.gz]
+md5=5988e7aeb0ae4dac8d83561265984cc9
+sha256=4e75cb28793f0d44134f71fae53057d5f250805e6268fbd9c9780654b73b0dc1
+
+[ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.5.tar.gz]
+md5=3fbb02294a8ca33d4684055adba5ed6f
+sha256=19590e972b80333e26a6514c34d976c2037138361481a16f27b75e5d33f33a58
+
+[ftp://ftp.rz.tu-bs.de/pub/mirror/ftp.easysw.com/ftp/pub/fltk/1.1.7/fltk-1.1.7-source.tar.bz2]
+md5=2e29319119adc9d63b2f26b72cae0a88
+sha256=855a97e35da823f205253b865758715872cd2c7720e4dcf134a3b6dc18bfb96a
+
+[ftp://ftp.sane-project.org/pub/sane/old-versions/sane-backends-1.0.15/sane-backends-1.0.15.tar.gz]
+md5=3b804f35cdfbc5ad2d201ffe078bbac9
+sha256=89106b5bc5a66ca0eaf4553371c89ac8542a757964d7a91c07b8fb77e040eebe
+
+[ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.3.tar.bz2]
+md5=f7aee92355cae7e4c81cf26df4345b07
+sha256=24da6f7466d1d7b42b9e03255079a3f31595fd4932def8f81f9886f347e98d1d
+
+[ftp://ftp.suse.com/pub/people/mason/utils/aio-stress.c]
+md5=727e5fc3566837b3ea72f887d048769b
+sha256=3f32e5a1ef0ae84794cfdf7d60bd595a2b3c3995bb91bf79c2b96eb6be7e5529
+
+[ftp://ftp.tin.org/pub/news/clients/tin/v1.9/tin-1.9.1.tar.gz]
+md5=50ecd901467622fbc47bc935aca222b3
+sha256=0da9424503faad972860682107157d7348872f00f932ec270c78f17ee495dc97
+
+[ftp://ftp.trolltech.com/pub/freebies/tmake/tmake-1.11.tar.gz]
+md5=b007a86a83483ff9bd6795f45780ddce
+sha256=6d828029e276f42fee507f58ed0bd6890ef75f0e54f45f2b1129a2426c817c61
+
+[ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-2.3.10-free.tar.gz]
+md5=1f7ad30113afc500cab7f5b2f4dec0d7
+sha256=883363eb0c94de3d1e36f3ab9e09a8f127418d497213cc1a0ed1a1588ecd66b8
+
+[ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-free-3.3.5.tar.bz2]
+md5=022d7a3c572b554f3c47b12cae71a8a4
+sha256=a97656796c0ef8e87dd83e6138bc406e31830d08f9b213e039d8be39ea65c8e4
+
+[ftp://ftp.trolltech.com/pub/qt/source/qt-x11-opensource-src-4.1.1.tar.gz]
+md5=d82b0374d481f93e481aad4e3f26893a
+sha256=a23860a7390bbbc87cf98833f8716cd03b88b1d6fce77e0624daba3150a177e9
+
+[ftp://ftp.trolltech.com/pub/qt/source/qt-x11-opensource-src-4.2.3.tar.gz]
+md5=13f12bf58a32ebf15837fcd605cb3c99
+sha256=c163e72cb002435d1d261a47acdcb23e59c10e4263f983a5f2c2d2ca40ede75b
+
+[ftp://ftp.trolltech.com/qt/source/qt-embedded-free-3.3.5.tar.bz2]
+md5=022d7a3c572b554f3c47b12cae71a8a4
+sha256=a97656796c0ef8e87dd83e6138bc406e31830d08f9b213e039d8be39ea65c8e4
+
+[ftp://ftp.trolltech.com/qt/source/qt-x11-free-3.3.5.tar.bz2]
+md5=05d04688c0c0230ed54e89102d689ca4
+sha256=aac89e862c74b2f3ead768e50e9fa7ada1e4225fe9d1d9e05723a3279259eb96
+
+[ftp://ftp.trolltech.com/qt/source/qt-x11-free-3.3.6.tar.bz2]
+md5=dc1384c03ac08af21f6fefab32d982cf
+sha256=04f12083f6a6f7a8fd4d34a6c1efd37db76a67580c424f4fb7b7c43c0565e6ae
+
+[ftp://ftp.trolltech.com/qt/source/qt-x11-free-3.3.7.tar.bz2]
+md5=655e21cf6a7e66daf8ec6ceda81aae1e
+sha256=48c05b501029f0640db665fbc7f981a0efbf69ad3cf87a43c5eea4872f4f7ba1
+
+[ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-4.1.1.tar.gz]
+md5=d82b0374d481f93e481aad4e3f26893a
+sha256=a23860a7390bbbc87cf98833f8716cd03b88b1d6fce77e0624daba3150a177e9
+
+[ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-4.1.2.tar.gz]
+md5=18bca010d09b98e94210710047baca0a
+sha256=025655971eef7f76ece9754346d6eb4e2dd44ddf569c4c84de27836aa24b04a3
+
+[ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-src-4.2.0.tar.gz]
+md5=9519eccf0638c9962f73a7b20da77e0e
+sha256=8fdbc7da376b22796879d6e3b756f71a8800ed1b35fc88aa76cddffd6f1fd883
+
+[ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/netkit-base-0.17.tar.gz]
+md5=1f0193358e92559ec0f598b09ccbc0ec
+sha256=16dd81625ebfc8f5dcb0dfd2e6bac223aad325a9405d66a556fe349446b3c332
+
+[ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/netkit-ftp-0.17.tar.gz]
+md5=94441610c9b86ef45c4c6ec609444060
+sha256=61c913299b81a4671ff089aac821329f7db9bc111aa812993dd585798b700349
+
+[ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/netkit-rpc-0.17.tar.gz]
+md5=67212720482ea1aea9182a98653a9642
+sha256=421d63b414162237a72867061f1bd3e3752a0d962cd5d30b5e933ddad8a14d3b
+
+[ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/netkit-tftp-0.17.tar.gz]
+md5=b7262c798e2ff50e29c2ff50dfd8d6a8
+sha256=3a43c0010d4e61f412563fd83769d4667d8b8e82903526d21cb9205fe55ad14d
+
+[ftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/dosfstools/dosfstools-2.10.src.tar.gz]
+md5=59a02f311a891af8787c4c9e28c6b89b
+sha256=55a7b2f5ea4506bde935ee3145573e1773427fc72283a36796c7c2cf861dd064
+
+[ftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/dosfstools/dosfstools-2.11.src.tar.gz]
+md5=407d405ade410f7597d364ab5dc8c9f6
+sha256=0eac6d12388b3d9ed78684529c1b0d9346fa2abbe406c4d4a3eb5a023c98a484
+
+[ftp://ftp.us.debian.org/debian/pool/main/d/dialog/dialog_1.0-20050306.orig.tar.gz]
+md5=8ce5945be0660bd3152bd9eb0827f945
+sha256=e3968765ed916b348fce5e309029d25d068a61e1d422a69a506d0fc80ee6e976
+
+[ftp://ftp.us.postgresql.org/pub/mirrors/postgresql/source/v8.1.8/postgresql-8.1.8.tar.bz2]
+md5=b05e1d7f0cac9cc4e096aa21409dee55
+sha256=91f75eb29c07271fcbfa2082c8300690efe4a72f2fbf35dace98108b0c6f7ba3
+
+[ftp://ftp.vim.org/pub/vim/unix/vim-6.2.tar.bz2]
+md5=c49d360bbd069d00e2a57804f2a123d9
+sha256=0619ddfa76f3856461f8d61b070a9da792ed587629f2b5718212ddb0c184fa70
+
+[ftp://ftp.vim.org/pub/vim/unix/vim-6.4.tar.bz2]
+md5=774c14d93ce58674b3b2c880edd12d77
+sha256=5141ff8c7ed8ddc769fcf3b2bda386c6255d72163ae6727d8a6031d749be9f95
+
+[ftp://ftp.vim.org/pub/vim/unix/vim-7.0.tar.bz2]
+md5=4ca69757678272f718b1041c810d82d8
+sha256=494e27bd169d333917c0febcace466f89d119f71961e8959022fc6eab89764fc
+
+[ftp://ftp.wiretapped.net/pub/mirrors/lftp/old/lftp-3.5.1.tar.bz2]
+md5=c6d48782cdad4759000bf7cd24555723
+sha256=463f0b46ce3a0fc09ef9ad7a5429959034d50a1eadbed5dfeae36c25dca31130
+
+[ftp://ftp3.easysw.com/pub/cups/1.1.23/cups-1.1.23-source.tar.bz2]
+md5=4ce09b1dce09b6b9398af0daae9adf63
+sha256=87da0f7b1e03236e183045f1e787957132658ead56c4b0f80ac7f86c1574a85e
+
+[ftp://ftp3.easysw.com/pub/cups/1.2.10/cups-1.2.10-source.tar.bz2]
+md5=aad696a480b618e61bc7dab11623d3ac
+sha256=601b3b9256c55361477427c3e8db56c9ee4e141762814aea590bcf110a95bb36
+
+[ftp://ftp3.easysw.com/pub/cups/1.2.7/cups-1.2.7-source.tar.bz2]
+md5=bf44783d9b46130bee9f2995e6055470
+sha256=e7485d6b3dcbd338a2361aff66c516f8dfafc1c81ea5b01396f6ee5f365c4eb3
+
+[ftp://kermit.columbia.edu/kermit/archives/cku211.tar.gz]
+md5=5767ec5e6ff0857cbfe2d3ec1ee0e2bc
+sha256=39e7cd4892502344a635952843487d9b4bfa98e59d1e1acad5ef8aa969abba93
+
+[ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_4.77.tar.bz2]
+md5=7b0de0d1283f2d86407a98e5c2f05f04
+sha256=fe6fde629a97a2855e608cd6ae1f89e66ae42d7045499b1a6faca5cfb50f5f3b
+
+[ftp://metalab.unc.edu/pub/Linux/utils/file/stat-3.3.tar.gz]
+md5=37e247e8e400ad9205f1b0500b728fd3
+sha256=7071f0384a423a938dd542c1f08547a02824f6359acd3ef3f944b2c4c2d1ee09
+
+[ftp://oss.sgi.com/projects/fam/download/stable/fam-2.6.10.tar.gz]
+md5=1c5a2ea659680bdd1e238d7828a857a7
+sha256=885ced3480aef3cee519a459a572e31cd2fd5e24bcd35b1d0c8833361699026e
+
+[ftp://oss.sgi.com/projects/fam/download/stable/fam-2.7.0.tar.gz]
+md5=1bf3ae6c0c58d3201afc97c6a4834e39
+sha256=1e0aa136693a3e9f4b43ebd71e7bd934cea31817a4a6cba2edc7aac353b8a93f
+
+[ftp://oss.sgi.com/projects/xfs/download/download/cmd_tars/xfsprogs_2.8.16-1.tar.gz]
+md5=632c7745f884dc5e6fd707a18971aca3
+sha256=b3195456c99ab66103fd235ab410d6f3e6a56f2bdb7fb31d9d3789f2d453ec3f
+
+[ftp://ra.stsci.edu/pub/pyfits/pyfits-1.0.1.tar.gz]
+md5=7cab1ef229b47760f91437b427e43819
+sha256=cbd1ee276a6e1bbd525b4c88ec13df9be5c40833d6ffc78b3cd76420c25e9938
+
+[ftp://ra.stsci.edu/pub/pyraf/v2.3/pyraf-1.2.1.tar.gz]
+md5=cfa04c40cf969c81e882ad2820aa2914
+sha256=9fb0f6ce1b8234af3a18c589212fe418efca36cd5977a23ab8ee5887315358e8
+
+[ftp://sleepycat1.inetu.net/releases/db-3.2.9.tar.gz]
+md5=4df5c7051b11411e0a970f6c91613942
+sha256=3eccaec87bca4ca0f5728cf4579650da9d12e331187f1e98321e5c9e9e04b108
+
+[ftp://source.mvista.com/pub/xscale/pxa/diff-2.4.18-rmk7-pxa3.gz]
+md5=249c7a63a506d302c96be26517a70298
+sha256=ca569dfa1e5cfd2f4134f3f61f667bcfab5e15c7d43c8a6e835d384ac5b31a07
+
+[ftp://sources.redhat.com/pub/bzip2/v102/bzip2-1.0.2.tar.gz]
+md5=ee76864958d568677f03db8afad92beb
+sha256=4b526afa73ca1ccd6f5f1f5fd23813f159f715c3d0e00688f1df54b51f443cdd
+
+[ftp://sources.redhat.com/pub/dm/device-mapper.1.01.04.tgz]
+md5=42dd0610e24d4b4f2409a32a04e6e37f
+sha256=49c8303f58abf3a0efbbd42decdc5968688df32c154cffb20a1c3c1ae8b92048
+
+[ftp://sources.redhat.com/pub/dm/device-mapper.1.01.05.tgz]
+md5=074cf116cc2c7194f2d100bc5f743833
+sha256=963cc8a1f7e73a0929b7b527f6b4cfc5f78c932d673b5c13c889108d3182811a
+
+[ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/docbook-utils-0.6.13.tar.gz]
+md5=af785716b207a7a562551851298a3b1a
+sha256=f74e9485f1e1f7484be432f4979415afbd9d8c20d0bdf6eab42eb2931b9b5d97
+
+[ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/sgml-common-0.6.3.tgz]
+md5=103c9828f24820df86e55e7862e28974
+sha256=7dc418c1d361123ffc5e45d61f1b97257940a8eb35d0bfbbc493381cc5b1f959
+
+[ftp://sources.redhat.com/pub/lvm2/LVM2.2.01.15.tgz]
+md5=c71654baff263254fb5a226624ee8ef3
+sha256=80b47604ace83db4450f43d94a99fdf2ca317323fde8a591f57290d28ece7d3b
+
+[ftp://space.mit.edu/pub/davis/slang/v1.4/slang-1.4.9.tar.bz2]
+md5=4fbb1a7f1257e065ca830deefe13d350
+sha256=fa42e57e902f2161dc2b297e0dcb24ca180024770afa379027db582803ffa2fa
+
+[ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.5.tar.gz]
+md5=146062e8b2f93af43ff6c2c770feea94
+sha256=5462ebf0df2792dde8ea3cf5d87c715200aac388554b3f0a9ace6265edecfa5b
+
+[ftp://xmlsoft.org/libxml2/libxml2-2.6.26.tar.gz]
+md5=2d8d3805041edab967368b497642f981
+sha256=6fac5d751e078780f0709563bc6db37380f159852e13281f42397ccbcac415ed
+
+[ftp://xmlsoft.org/libxml2/libxslt-1.1.12.tar.gz]
+md5=cf82a767c016ff1668d1c295c47ae700
+sha256=dda7fc9847f1b12c8bdc67570c379f8fc625f00284f61506a9716d42636b573a
+
+[ftp://xmlsoft.org/libxml2/libxslt-1.1.17.tar.gz]
+md5=fde6a7a93c0eb14cba628692fa3a1000
+sha256=d337faebd64ddb8c52cde23df8469e1b3c65545af5f939e9bb4be9eeb9658c8a
+
+[ftp://xmlsoft.org/libxml2/old/libxml2-2.6.10.tar.gz]
+md5=299da4545913212ec4d82429d74314b9
+sha256=09f5452cd3007737e98644e4bcd4001e499efd35267657e91c62c0c3c63f3ec5
+
+[ftp://xmlsoft.org/libxml2/old/libxml2-2.6.9.tar.gz]
+md5=41e9ccf94c1cacb8b1d127b01fba8c38
+sha256=06e4be5214166e1de11715c8b58c61d1a1930df1b6bea035ee6b6a227054ae5b
+
+[http://0pointer.de/lennart/projects/ifplugd/ifplugd-0.20.tar.gz]
+md5=7d259502c75f5ea9aebcd57c1a3d0739
+sha256=1f8967e1a3d3a7f88bdc2aeaf54fdaea86e60ecf7424af912947193a9d2a4092
+
+[http://0pointer.de/lennart/projects/ifplugd/ifplugd-0.25.tar.gz]
+md5=cbb45e24684fe5ba7a60730248cf250b
+sha256=a43c0621dac846e42a3917f4f73e7976b2ac4b545712e8bc4bae5bac6158e07e
+
+[http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.10.tar.gz]
+md5=6812a5e4063b5016f25e9a0cebbd3dd9
+sha256=83004489cce844d4f9180fb74cc4781bb79e31aecf60d529608a510cf114484e
+
+[http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.6.tar.gz]
+md5=5b83dd22fd72130cc4fdd46bd1a7fe8a
+sha256=1f918fc7c51e8de4b97aa3556b829a03ef7a06bd44c344a494326dc222785a6a
+
+[http://0pointer.de/lennart/projects/nss-mdns/nss-mdns-0.9.tar.gz]
+md5=bc72f5b19cc6ce8cacde448236b30868
+sha256=0bf226bb3a1716e6eb97355e08a7ffcf09aadfb91ba41ccef2ef1ba7a01719a2
+
+[http://0pointer.de/lennart/projects/pulseaudio/pulseaudio-0.9.5.tar.gz]
+md5=99b5d9efd4fce35cabb4ae5d0ebb230d
+sha256=cd82eabcf9fa310a64b58b621730cebe5d3edae7596a9c121155db455b1e58f6
+
+[http://0pointer.de/public/distcc-avahi.patch]
+md5=621dc7dc1e3b9b6770110117df45611a
+sha256=e6651e3de7fee6d953b6ee56732eafa7d4666cb4070db5a925ba071626067c9a
+
+[http://0xcc.net/ttyrec/ttyrec-1.0.8.tar.gz]
+md5=ee74158c6c55ae16327595c70369ef83
+sha256=ef5e9bf276b65bb831f9c2554cd8784bd5b4ee65353808f82b7e2aef851587ec
+
+[http://194.213.43.198/vmedit/vmedit-0.02.tar.gz]
+md5=7550ea1dd951d2f7fb1a54caa88860b2
+sha256=bca8b0073d9527c0293b831c9b8d8f89fc3dc7b5ab30898e7b748843af07a978
+
+[http://212.10.30.205/rc12/src/mb-applet-cards-1.0.2.tar.bz2]
+md5=83661e2f9b67fd910f9ca0b1db06d9e8
+sha256=52980096f4dbe5ea52a8c1bded74e7c657f934de5320da3f30cf7baf4274c749
+
+[http://activecampus2.ucsd.edu/apt/sarge/easysoap++/easysoap++_0.6.1-5.diff.gz]
+md5=fecfbc5272922f85635d0229d1b05260
+sha256=37e5aab00a316a22329c64848f467b0ce73bba3bcb08c4cba6d193ba8f5e9b90
+
+[http://activecampus2.ucsd.edu/apt/sarge/easysoap++/easysoap++_0.6.1.orig.tar.gz]
+md5=b87c02bf22b6697bce9df32be40d018f
+sha256=eac200dacbde374a7c8b3830a665b9926eb82f695f593b54a3256b29e39df29e
+
+[http://alioth.debian.org/download.php/123/minicom-2.1.tar.gz]
+md5=1c8f3b247c38fb16c3c2170df9fc102a
+sha256=7f04535b3839fbbb0affa780108c32c330b924caf4e41dacd57dd23aa1fec392
+
+[http://andrzejekiert.ovh.org/software/fconfig/fconfig-20060419.tar.gz]
+md5=abc1aca11ee9c9d9b65057c3cf1ca88c
+sha256=d109960dd5e306d4a8ab73e99bfd519ef1c7c674b33b9cfd8fdd61cbd43dac60
+
+[http://anymore.nl/ipaq/udc_unbind.patch]
+md5=07da0085296fef529ca869a108e07edc
+sha256=3ffcdc0e4597046f476ae5d4250783eb563723614bad9f1f58cc0cd9932d0b1d
+
+[http://anymore.nl/ipaq/udc_usb_gadget_register_driver_fix.patch]
+md5=ee48a4ec191cb6ae61dad1bf6378cc85
+sha256=31cfb81c4a4b16a6a0fe8fec04241d37c9ca98fe3bb0a434141c287fcb98e2bb
+
+[http://anymore.nl/ipaq/usbgadget_fixups.patch]
+md5=261038b0a6890207b68a26be10a37822
+sha256=1d645fa76a9482a6630b9a7257d11eabfa94ef4337493ef7075e25cbb8820491
+
+[http://apache.mirrors.tds.net/httpd/httpd-2.2.3.tar.bz2]
+md5=887bf4a85505e97babe1d90635361c0d
+sha256=dd86e8221f9efb85497c46229d0f04237d4e66d293fabe98eb0745166aaf4b6c
+
+[http://archive.ubuntu.com/ubuntu/pool/main/h/hwdata/hwdata_0.191-1.diff.gz]
+md5=0719e6cccf5279b4d2fb0a3ddbecd874
+sha256=8276d76e45e3e827fc109940fcc3afe010ec8ddd583f44b3c946af6c29f2d828
+
+[http://archive.ubuntu.com/ubuntu/pool/main/h/hwdata/hwdata_0.191.orig.tar.gz]
+md5=7a261b9eb813406f73b5eca2570f949a
+sha256=3cc7f3ef2cd0f789ef1665102e214fe2e6b29b5eb285c3c8a3216c5c98fa563d
+
+[http://archive.ubuntu.com/ubuntu/pool/universe/s/sl/sl_3.03-14.diff.gz]
+md5=bbc8f69a7add52ed30dbac276d43ef92
+sha256=948499164f7be0c0b12e545bf49f1ab81e4546704cb3bedc1141d31a2d6dcbe6
+
+[http://archive.ubuntu.com/ubuntu/pool/universe/s/sl/sl_3.03.orig.tar.gz]
+md5=d0d997b964bb3478f7f4968eee13c698
+sha256=5986d9d47ea5e812d0cbd54a0fc20f127a02d13b45469bb51ec63856a5a6d3aa
+
+[http://artsoft.org/RELEASES/unix/rocksndiamonds/rocksndiamonds-3.2.0.tar.gz]
+md5=0403e252fd978095e9546c0f10fa55ac
+sha256=e85175ecbfc91623ec1f6b62fe2b23d69b00cc57482c9c4ddab275de6af60f99
+
+[http://avahi.org/download/avahi-0.6.15.tar.gz]
+md5=94dbd41336d18c47fc8213735a3fbf8e
+sha256=21dc28f464dbf158ad15dc5ee9d0bad78215ef5633086e55b7201294d5841da0
+
+[http://avahi.org/download/avahi-0.6.16.tar.gz]
+md5=3cbc460bbd55bae35f7b57443c063640
+sha256=794d4d1c485d4dc24659a25feb92706eb8bff4552333a1df83e856db123c36ce
+
+[http://avahi.org/download/avahi-0.6.17.tar.gz]
+md5=29ebb2181958d5721ee5fc45f035a77c
+sha256=2cb6a15a9fff56c0d24f3a95b7f67c52436a88716e640c7f7afd48c9a5cbd740
+
+[http://avr.auctionant.de/ark3116_linux_driver/releases/ark3116-0.4.1.tgz]
+md5=fb94d863514b2fa21ecd34571099a7a3
+sha256=7016b5e53e1e24803186e2719cf735109289c0f42cfc3006d468dbf72fae09ab
+
+[http://bazaar.canonical.com/releases/src/bazaar_1.2.tar.gz]
+md5=1fdb0aa41d7db06bf3429118d0136c8a
+sha256=d1b657f52dea785ce1b1a8b5acfdee4492c5d779422f9b58e145162e2d33c241
+
+[http://biolpc22.york.ac.uk/pub/CVS_HEAD/v1/wx-cvs-Gtk.tar.bz2]
+md5=cac58d215b73189e8574d1c361e771a6
+sha256=1e09f6ad9dd987403f9549c2640680cf932ba00df5afa20a4531e98544b413a5
+
+[http://bloodgate.com/perl/sdl/pub/SDL_perl-1.20.3.tar.gz]
+md5=ab7fb92a1ed0db54a88839e64b9ce2c6
+sha256=ac6f511404457592b88fd57c4c77f7feba8e3b55d62c3c45c117fe84f1e07a7d
+
+[http://bluez.sourceforge.net/download/bluez-gnome-0.6.tar.gz]
+md5=54334e3d7af70846eb4916191e46081c
+sha256=056ec158ea09b6be8b9ea07f37d8b58f6dec28da6dcb33f789ce9b3f932eb7cd
+
+[http://bluez.sourceforge.net/download/bluez-hcidump-1.26.tar.gz]
+md5=6eca8534fd6f0384d29f04198363f19c
+sha256=cd016375e9082268af224b26891cbea162fac5cf83a984f3e3988e6cee380a56
+
+[http://bluez.sourceforge.net/download/bluez-hcidump-1.29.tar.gz]
+md5=4e72efe8b67c3558eb776ad14e60de3e
+sha256=b80b0d399cf962946130e70c864ddc3477b0ce8878943a48cf211199fddf556a
+
+[http://bluez.sourceforge.net/download/bluez-hcidump-1.31.tar.gz]
+md5=505a0843eccfea4e4467304d63be8396
+sha256=c3ac791dfdfb03af20ea649ecedd8918bfb18d4113e0ca508c5db2338d2171a3
+
+[http://bluez.sourceforge.net/download/bluez-hcidump-1.32.tar.gz]
+md5=3320121113cf31fe9180470edff2c71d
+sha256=75bbccac0596d42e3cba1c0d3fa2c9502a175eb600f8b4e8c476dec40a09e1d6
+
+[http://bluez.sourceforge.net/download/bluez-hcidump-1.33.tar.gz]
+md5=58fff2bc38594fe8ab0803f66cce2325
+sha256=f25791ae3c83fe739a3c810c5fe0d7ac3e2ed02df9d3a65edff382703f5d2c65
+
+[http://bluez.sourceforge.net/download/bluez-libs-3.4.tar.gz]
+md5=8b73b0ccbcef6a4270468487b1309990
+sha256=6c40f8b2dcf9359cc7f6afa803fc5744652c1d95669c134b975758a8748a87e8
+
+[http://bluez.sourceforge.net/download/bluez-libs-3.7.tar.gz]
+md5=d384893177b4241462a591668cc439d6
+sha256=c8a8f3ccb1e64cdd6701d0e0d2ab61dd132e5dce2f55a8b86f397d5013446d2e
+
+[http://bluez.sourceforge.net/download/bluez-libs-3.8.tar.gz]
+md5=9f55aa8445f26500a8500ed23c9cd971
+sha256=66c806ead70b1cc1f517071ea27a452097987de7d70fb171155084ae25e9b224
+
+[http://bluez.sourceforge.net/download/bluez-libs-3.9.tar.gz]
+md5=53275e1824886368f11f586899707e08
+sha256=8e722a732f53c070ad68b7a70f8e9568eeb186558af68334571917a11f40cb0e
+
+[http://bluez.sourceforge.net/download/bluez-utils-3.4.tar.gz]
+md5=f63b440396baee7dee9259395a205d48
+sha256=44a50104072a39e4f941ab68b6ffce5feb2fec7a94f3dd32f0945939d09eca39
+
+[http://bluez.sourceforge.net/download/bluez-utils-3.7.tar.gz]
+md5=89f7290907d098163a2fa59a55dfafe7
+sha256=919dc824fb702b398cbcfb00597eae278e8934e603c4f30b0f099231a29554b0
+
+[http://bluez.sourceforge.net/download/bluez-utils-3.8.tar.gz]
+md5=2e73f6398d834035f35941b31716b276
+sha256=c98be5f123fc410b3cf970f184ca136720d75a1f8c19ce45ace7dc6f258e76e8
+
+[http://bluez.sourceforge.net/download/bluez-utils-3.9.tar.gz]
+md5=023a5e6a436f86a28baeec91e4c62736
+sha256=e3daae6c2647ac8beed0f616f21c1c815deaec5e6eb661fb8cb1955f1ad4c9fe
+
+[http://cairographics.org/releases/cairo-1.2.2.tar.gz]
+md5=2460487b1257a5583c889b1b9d2033ec
+sha256=9d53b8dd0bf76dd0da7cdbe65a6c6934be49bd3942dc5f7ef7bbcc7529d9ee02
+
+[http://cairographics.org/releases/cairo-1.2.4.tar.gz]
+md5=1222b2bfdf113e2c92f66b3389659f2d
+sha256=c1580ca951b2f57c4f8b34549997854bc48dbaf036ca1ca6c017c03db3504ddb
+
+[http://cairographics.org/releases/cairo-1.4.0.tar.gz]
+md5=b0882df4621bcf5b69f024b9475f8d4e
+sha256=583f9ae2c9b7d2ef33cfbd194148e71a335dafc226e13e213f07ff2dc398bb47
+
+[http://cairographics.org/releases/cairo-1.4.2.tar.gz]
+md5=b254633046eafe603776d0bee791b751
+sha256=7cf292ae376e7120ec548ad6a807a2f0f4f0539a304229a3bd98921453becd47
+
+[http://cairographics.org/releases/pycairo-1.2.2.tar.gz]
+md5=83a2e06d9fc3530753701d580a18087e
+sha256=ab10b00c209e9feaebfff944d411f300ca032d09d3ebb64e3498acf9fea09c6d
+
+[http://cairographics.org/snapshots/cairo-1.3.14.tar.gz]
+md5=08eef0800258bff5b3f13d787dd68402
+sha256=752918a5519a67a8ce05a740574116a26d98a44a37beba075f03b547903d3ff0
+
+[http://cairographics.org/snapshots/cairo-1.3.4.tar.gz]
+md5=bf3c1db35c8588022fa7c337688b4d63
+sha256=1c707e0ce129031ea3b8b27bbf61099f7537604e2eda2fc0ea33ee86a848d64a
+
+[http://cairographics.org/snapshots/libpixman-0.1.5.tar.gz]
+md5=756107dd2b23553df2f85cd92cab82d5
+sha256=4d18f3d9dbbe877b4cfd240891b711179e2ac8b8ad61392aa309e35d9c912d63
+
+[http://cairographics.org/snapshots/libpixman-0.1.6.tar.gz]
+md5=4af4bbf35840016f40f287a0bb6526b1
+sha256=e4ad16bd198722ba4ea41be77b17fe1c2b6e60de7a96fc4aac6a7b20f3fa448d
+
+[http://cairographics.org/snapshots/libsvg-0.1.4.tar.gz]
+md5=ce0715e3013f78506795fba16e8455d3
+sha256=4c3bf9292e676a72b12338691be64d0f38cd7f2ea5e8b67fbbf45f1ed404bc8f
+
+[http://cairographics.org/snapshots/libsvg-cairo-0.1.5.tar.gz]
+md5=422fe94b86ca92fc8f3a9d7c1e14de0a
+sha256=091f50b57dcd5e755be71ca8932892abccbbf8ae59c7131d5f06108033fec921
+
+[http://cairographics.org/snapshots/libsvg-cairo-0.1.6.tar.gz]
+md5=d79da7b3a60ad8c8e4b902c9b3563047
+sha256=a380be6a78ec2938100ce904363815a94068fca372c666b8cc82aa8711a0215c
+
+[http://camaya.net/download/gloox-0.8.1.tar.bz2]
+md5=9054d072f5972d5e567c428531734ad5
+sha256=7f836c8189b55ef4ec8f3387673687d0a5c1a713abc9617144638b28e6857bd2
+
+[http://carlthompson.net/dl/cpuspeed/cpuspeed-1.1.tar.gz]
+md5=ed3972d0e4f77c0278e336392be47c65
+sha256=93da5b3a30c5c7c06583635e5b93e9f04f687c01a044779872a29050c4f860e8
+
+[http://catb.org/~esr/fetchmail/fetchmail-6.2.3.tar.gz]
+md5=e131bdb6c3977fd47a3e122c43dcf19d
+sha256=d0867cf1dbc58031a6b65375cf899f565569a818400f762dcee3b50de9da9f56
+
+[http://centericq.de/archive/source/releases/centericq-4.11.0.tar.bz2]
+md5=bed5e7eeb60b5ac0045f201f13130964
+sha256=4f0f769a6e1cc7d76b527829deef34861ed8f79ae07e29d49566df3594308380
+
+[http://centericq.de/archive/source/releases/centericq-4.9.10.tar.bz2]
+md5=7def095ea14de6bef5fa217fe76a2f2c
+sha256=814f81d23596410c2ca7de314db8fcc795c4abd3b00a8fe305b9026415553283
+
+[http://centericq.de/archive/source/releases/centericq-4.9.7.tar.bz2]
+md5=955594716ba30b39f6634e9043e78c66
+sha256=0736510574fa44223bf01f526f06478edbe39b5f2ff3387dcdd0dba649208871
+
+[http://cgi.cse.unsw.edu.au/~neilb/source/wiggle/wiggle-0.6.tar.gz]
+md5=1884607cdebaf730737cb99b2909219b
+sha256=639f8bd48c58b1fa4f24a65bc8aa3e53219e7d48726e63e7c40f0701d1d89b9c
+
+[http://cheeseshop.python.org/packages/source/F/FormEncode/FormEncode-0.4.tar.gz]
+md5=bc5d1f77f9548a1c8c22e5ec1692e799
+sha256=042ed2bb4b15bbc1f1457447cd3ce0c14b339671ebfd3f68b4174e0aa039c043
+
+[http://cheeseshop.python.org/packages/source/S/SQLObject/SQLObject-0.7.0.tar.gz]
+md5=dccb921b5df6a15312b56630ac4ac205
+sha256=f6696120e12a58a922dc13bf4f0430774a72d522a9063dc4e1fc4d26ad33723b
+
+[http://clay.ll.pl/download/kanatest-0.3.6.tar.gz]
+md5=cd1eb1ce62a52cf69f4df9041a886794
+sha256=559c3d5e9336a56c9f83fcece75ab5211e62a1a868b3a6f539e9b7bd15f46576
+
+[http://codespeak.net/lxml/lxml-1.0.2.tgz]
+md5=bcebff4526b02dad4070cbbcb3d1b7e0
+sha256=2ac2154e3f66b5b32ca25d47e3977db115ac6dc52ddb7442ce16e65a4ac1afee
+
+[http://crimson.seul.org/files/crimson-0.4.8.tar.bz2]
+md5=460920e64b07ea0ef139a0f5d51bd2d9
+sha256=95784b14539dec30565b0bf1da8a3b1d51636142bbf1207c6d87256c92172aa7
+
+[http://crosswire.org/ftpmirror/pub/sword/source/v1.5/sword-1.5.8.tar.gz]
+md5=c36398c84bfb044c0c66ef3ffcf29400
+sha256=aeb57fe89716807f331eb17fcf23ef1ba3ad3e7018cd2d32560677ffe6937ce9
+
+[http://crosswire.org/ftpmirror/pub/sword/source/v1.5/sword-1.5.9.tar.gz]
+md5=e1f1af8c2add8310d0bbcddc9af523b8
+sha256=dd170431235cc419cbe6c40362640927a78dc93e082623709abe1310fe804481
+
+[http://curl.haxx.se/download/curl-7.14.0.tar.bz2]
+md5=46ce665e47d37fce1a0bad935cce58a9
+sha256=72987b68c265c262f073f7a0273f3c2f57dfe8b455da0f92f03914418d86f081
+
+[http://curl.haxx.se/download/curl-7.15.1.tar.bz2]
+md5=d330d48580bfade58c82d4f295f171f0
+sha256=8b1ea75a91ef7d1e00086865eba9a4cf8baefcb212ce451a61348e00b8756324
+
+[http://curl.haxx.se/download/curl-7.16.0.tar.bz2]
+md5=5819f56e93d04cde2992fe88b54cbfad
+sha256=fc8dcda5a933c370c15c832bf1e7316a0690f473fdd6000454d233edaa33bc23
+
+[http://cvs.haskell.org/Hugs/downloads/Nov2003/hugs98-Nov2003.tar.gz]
+md5=e80a6739ead9a260087fe4d3fc6a8359
+sha256=9f90613de73e1b8e90d9bbcb09046e83680f15a46fc630c3e26e9aa4ca0e6a1d
+
+[http://cxx.uclibc.org/src/uClibc++-0.1.9.tbz2]
+md5=ebf58e04d72eab5c131c2c9118737024
+sha256=82342a5d6088421e79699dd7af614ebecf6dd335eabce07690902a379f5ea8de
+
+[http://cyberelk.net/tim/data/patchutils/stable/patchutils-0.2.25.tar.bz2]
+md5=4a86341ad45eff6bc961c45f3af2348d
+sha256=cb3a710e9dfe7776aab45362e0cb28fe5440ab6e9e6983fa02eb174c010108d6
+
+[http://cyberelk.net/tim/data/patchutils/stable/patchutils-0.2.26.tar.bz2]
+md5=798d68d9d7ec3499d63b075ca4d4a6a9
+sha256=7630c3f1b0f7f8e3f3c9b814a553e910adaa2a13778ee095e86af27f6cb646dc
+
+[http://cyberelk.net/tim/data/patchutils/stable/patchutils-0.2.27.tar.bz2]
+md5=421c627f149ff261d07ac9e8afd4226e
+sha256=7b7abe4b63c506e3c487d2bf148d95037c7017a1e925133b070b668bfc778712
+
+[http://cyberelk.net/tim/data/patchutils/stable/patchutils-0.2.28.tar.bz2]
+md5=cb063425ae2d7065737857b4b58ae18a
+sha256=46e20652ae4b9ceab5879ab939ec3eb2e57de742ea734272749ca53c93a20339
+
+[http://cyberelk.net/tim/data/patchutils/stable/patchutils-0.2.30.tar.bz2]
+md5=6a33888e34c23f7fde09a6e94e4f5950
+sha256=6e3549b8586d8ac3ae8b2251b6cff9065f12a5d648c9c464543988ddb670545b
+
+[http://daemonizer.de/prism54/prism54-fw/fw-fullmac/1.0.3.0.arm]
+md5=1f0a68fbe45963f76e525c9789f5609c
+sha256=56524bd14b2bd3318824312f1272ed417de726110ef1d5e99c2a1171f65482fa
+
+[http://daemonizer.de/prism54/prism54-fw/fw-fullmac/1.0.4.3.arm]
+md5=8bd4310971772a486b9784c77f8a6df9
+sha256=dce24156c57234dba131429fbe8cd1de8ba818c9481ddc33cf7e5af9d57a737c
+
+[http://daniel.haxx.se/projects/c-ares/c-ares-1.3.0.tar.gz]
+md5=badb4563a02d4188b478df31fa1b657d
+sha256=5c4594f71eab62e24d12c67ae6a6aead306c537cf71e946c4e9fbebbe9786243
+
+[http://dast.nlanr.net/Projects/Iperf/iperf-1.7.0-source.tar.gz]
+md5=3e4aea85822bcf10ed14040f4b26bd26
+sha256=f54fabaf344b1120e8682c7e5f1ef80d08d88f0b8640037f92e261e51c9c1672
+
+[http://dast.nlanr.net/Projects/Iperf2.0/iperf-2.0.2.tar.gz]
+md5=bb658aba58a5af0356f5b1342dfe8f53
+sha256=e9baea8cb516b5d83013f746f9fa104abb45fcf15d444a03add06769916e41d6
+
+[http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.72.tar.gz]
+md5=6e92993aed234f13ea41c674dec40889
+sha256=bc80a1933a77fc4cb47716d06aec3c2181976879ba771888af8b644086f24210
+
+[http://dbus.freedesktop.org/releases/dbus-python/dbus-python-0.71.tar.gz]
+md5=ee893bc87b784a8c2285f5041b5e7033
+sha256=4af7a60f65cb02dabbcdf0cb6ca6f659932eb13c2533f6e1dbdab6e3700a2c57
+
+[http://dbus.freedesktop.org/releases/dbus/dbus-1.0.1.tar.gz]
+md5=52c70d18fe0b398f5de3b8a18a589960
+sha256=6e0730a39485fb502d640841f0f328c1a0212743f17b3fa61c78e6e32925f061
+
+[http://dbus.freedesktop.org/releases/dbus/dbus-1.0.2.tar.gz]
+md5=0552a9b54beb4a044951b7cdbc8fc855
+sha256=8a004125f58512a69575f21f105aead0d1217fce9cb54cbafeac06b4be28c6ca
+
+[http://de3.php.net/distributions/php-4.4.4.tar.bz2]
+md5=bc6fa8908e2ac36e93bab9f7d42cda3a
+sha256=9f0742fce014a255f8453c1264afee5de289a9e9dcd57c448c77b46978f6a76b
+
+[http://de3.php.net/distributions/php-5.1.6.tar.bz2]
+md5=08e423aa314369d4392a36b3f7246afc
+sha256=3e9510ce715f28b7e6b803fcdadb73b37c83792c0b5e1e9bcb066ab972649996
+
+[http://devel-home.kde.org/~hausmann/snapshots/Attic/konqueror-embedded-snapshot-20030705.tar.gz]
+md5=30dc3e109124e8532c7c0ed6ad3ec6fb
+sha256=305a7178d3351ea5e1faad157c2f056b633fbbabc006e19165a55314e9352d7b
+
+[http://developer.ezaurus.com/sl_j/source/c860/20031107/linux-2.4.18-rmk7-pxa3-embedix-slc860-20031107-rom1_10.bz2]
+md5=d74fc9ea01384bead3925434b932d6b7
+sha256=3dcafe41355fcc688f4a376a5dc71901ea2fbb95698397c87c6a6b12aa058c69
+
+[http://developer.kde.org/~wheeler/files/src/taglib-1.4.tar.gz]
+md5=dcd50ddb2544faeae77f194804559404
+sha256=0ff805bb8dbf72a45d347f2310f7e5c86e2e7419a069d546e53cf5f221c196ab
+
+[http://developer.osdl.org/dev/iproute2/download/iproute2-2.6.16-060323.tar.gz]
+md5=f31d4516b35bbfeaa72c762f5959e97c
+sha256=e382a4c0de31a5196e0c7829d6f7e29d0263cf90a4def10302db694fc2f30da2
+
+[http://developer.osdl.org/dev/iproute2/download/iproute2-2.6.18-061002.tar.gz]
+md5=193b570128cf852afba337438413adf9
+sha256=038aabd2894f46d3a4a7583ab2bff13b2da51682ccb921ceb7c87326ec1d344f
+
+[http://didiwiki.org/sources/didiwiki-0.2.tar.gz]
+md5=a8643526ced64ed066df407e013259e3
+sha256=a87cdc67ad367d6bde595811e7869f5c4715e4baeec7261bcfe45ab42621543a
+
+[http://didiwiki.org/sources/didiwiki-0.4.tar.gz]
+md5=412ba3aa58984d5783eb6393c5869857
+sha256=ca494bf9c1ccf2e74bee90cf903743eee78a0dfa5d9bf0840bc59c4ad498f9de
+
+[http://didiwiki.org/sources/didiwiki-0.5.tar.gz]
+md5=94d5fb06d091804b31658481f23b120f
+sha256=31e8e536f5efd7d7d1d5f4e4458b42aa9cd7910acf3da933cb7fa3507cf7f752
+
+[http://dircproxy.securiweb.net/pub/1.1/dircproxy-1.1.0.tar.gz]
+md5=066bd39d80f286ae5ce69a2adbbd01e4
+sha256=f0be78d2c2f0279cce26b0b2e87077bfe568f1da189eef2daec78b1e12699c4e
+
+[http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-4.8.tar.bz2]
+md5=b8f69ee5a4a2cd195892107be3a3cb29
+sha256=de644640cf71a6ce72f27ac6489b65434105fc6c94538c471925a15e2259b796
+
+[http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-4.9.tar.bz2]
+md5=cdd9e3bde4beec3242f2942911170164
+sha256=26c2a821795b92b5dc3ea35ce2b842ad4d6813b035631f8f9ddf070bd7805936
+
+[http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-5.3.tar.bz2]
+md5=1a5372a40d728c8a50e059b5d826490e
+sha256=1906326e75c27e2e7ad9a530e92d104359488c7b1bb7b1d113dd6a2efa8a60ca
+
+[http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-5.4.tar.bz2]
+md5=7efde6ec77c0ee47a32bd2f447d2937a
+sha256=0b9018e30281290cfdacf89f1680b6b0e961e47aab66fbb65c15a31d85ca473a
+
+[http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-5.6.tar.bz2]
+md5=d194dc03511b64544d2912b88fadd2b5
+sha256=2b8cb122f4d88c1a61b9a90c562f4829d4dd44bc64f66055c9a9b45ebeab7713
+
+[http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-7.7.tar.bz2]
+md5=68298390375da1b34f89a0aa634c9b20
+sha256=04ecd2577ee0c210df610b4a5d870f2bda57c80962fb5b51ae9c4a94098c726c
+
+[http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-7.9.tar.bz2]
+md5=7a0c73ccf0e31808ad37b61e730cd10e
+sha256=33d2363d40b1db7568864dc063ce4af70e50a9f9292a16445f0b167618d8fbba
+
+[http://distcc.samba.org/ftp/distcc/distcc-2.11.tar.bz2]
+md5=f3458779c13255d88ee89ea7ccddda29
+sha256=00ca6747501d1b6034398ba5482dcb1e7cf3aff8739fbff0c72e58602d68774c
+
+[http://distcc.samba.org/ftp/distcc/distcc-2.18.3.tar.bz2]
+md5=0d6b80a1efc3a3d816c4f4175f63eaa2
+sha256=6500f1bc2a30b1f044ebed79c6ce15457d1712263e65f0db7d6046af262ba434
+
+[http://distro.ibiblio.org/pub/linux/distributions/gentoo/distfiles/elfutils-0.108.tar.gz]
+md5=fd318a634c8f67c7ac8a975f16965cc3
+sha256=794070c8108a2d8b7c6890ba42edb37510cc845bf601517cf4a0ea5443dfde29
+
+[http://distro.ibiblio.org/pub/linux/distributions/gentoo/distfiles/pax-utils-0.1.13.tar.bz2]
+md5=5f09df47a16e83462384b44b75310539
+sha256=72f3cdad93b5436070dcc63b67764a06c594f324ccc001e8bfb974a8d1a86f36
+
+[http://dl.bytesex.org/releases/xawtv/xawtv-3.93.tar.gz]
+md5=8d2731e6e95f173f41a0ddc875d55804
+sha256=d5e333bc74c0a534bf96f40ea89b7e700f137d46f1fdbaea13fa552ad6227af8
+
+[http://dl.cihar.com/gammu/releases/gammu-1.10.0.tar.bz2]
+md5=05b623c30cfd69ea97f0bc054b19928d
+sha256=91062db1fd62095bdda21782e076157a343e0181e684738c2edbfff5fc860f64
+
+[http://dl.cihar.com/python-gammu/latest/python-gammu-0.13.tar.bz2]
+md5=e92083c150264a2851fa5a7a1ef7bb9f
+sha256=1f43959d29b12397082a621f9ff436a76ec4b89cd44442ebce2e127e524f9b06
+
+[http://dl.lm-sensors.org/lm-sensors/releases/lm_sensors-2.10.1.tar.gz]
+md5=cdc857b78e813b88cbf8be92441aa299
+sha256=a332cacfa9d0eed6e9158c394db714e536f38c27451d7df08b9634952118fa1b
+
+[http://dl.maptools.org/dl/libtiff/old/tiff-3.7.2.tar.gz]
+md5=9d7123bd0dbde2a3853fb758346adb78
+sha256=802e13e13cb0051e0b06e5f1e24e0cc613aa0f7c0ef742e5b90a667b40978c46
+
+[http://dominion.kabel.utwente.nl/koen/pda/files/gpe-fsi.tar.bz2]
+md5=e485b0c8424dc9666078d482d22447da
+sha256=6a7455e4a066d5ecd9520feb9cd7bb1a7ecfe267faef32cd04a97b5c1738f8ec
+
+[http://dominion.kabel.utwente.nl/koen/pda/files/gpe-theme-clearlooks-0.2.tar.gz]
+md5=043c21b35c7f00b21745c8a3a61c12ac
+sha256=a04f41837a995c1f1834a66be41bc0b7237ee181314607dfb0ef733984765d04
+
+[http://dominion.kabel.utwente.nl/koen/pda/files/gpe-theme-clearlooks-0.3.tar.gz]
+md5=949d3329e9b9904814302db7132d468a
+sha256=f2f1e03e3283f6182d02928cbdb5ea8160f786037d4a135947794da488ebe805
+
+[http://dominion.kabel.utwente.nl/koen/pda/files/gpe-theme-industrial-0.1.tar.gz]
+md5=75898910db553923aa312ed2b1545364
+sha256=6aeb1dd991f0e0bcc11562061148051520562c81dc6bf18c03f0cc86a72f6093
+
+[http://dominion.kabel.utwente.nl/koen/pda/files/gpe-theme-industrial-0.2.tar.gz]
+md5=756f38d53eaae09d87655f3ed3a660c2
+sha256=4524df3931041dc31985014b5f581396217b0b3f6aa00225d98060f1a9cc1b67
+
+[http://doolittle.icarus.com/ntpclient/ntpclient_2003_194.tar.gz]
+md5=94e84d5c6023c5e1f3890b28d0a08c92
+sha256=3f515a043bcd3b778d33938da224214e727faa528256d4a1a213bc8617ac2d0b
+
+[http://download.aircrack-ng.org/aircrack-ng-0.7.tar.gz]
+md5=34c0447951d438d76fa32d08eab5da01
+sha256=90cbd5030938ce1622a8e399c95088bf464bceb95adc290640d4610eb8522aeb
+
+[http://download.berlios.de/bitbake/bitbake-1.6.2.tar.gz]
+md5=1e80b2a4e0d17aba3e377b3ee140ab5e
+sha256=a226f7b37694669aa6efe6c30462e2d44f5881ca70604dac15c23fce66992872
+
+[http://download.berlios.de/emul/emul-1.0.5.tar.gz]
+md5=f713b4d3c6a733b429de2673e4427483
+sha256=b91c7fb6420f6787d34b88b1e0d2e705e1006b5bce17235356f84a3c14329612
+
+[http://download.berlios.de/gpsd/gpsd-2.28.tar.gz]
+md5=a49e1bd180a4ad4b1f5f9c3bd7f0e15d
+sha256=2e81676f9bcb01249216c413d253acddd1358a0dd982e77c5e14d15e6a45cabe
+
+[http://download.berlios.de/gpsd/gpsd-2.32.tar.gz]
+md5=4bb9b0c1642d36265c807a04da3d6f60
+sha256=95bee94daaf0168387152223fac186ba40d7b02657bfc0336c90edc5ea15bf10
+
+[http://download.berlios.de/gpsd/gpsd-2.33.tar.gz]
+md5=03b57754091e4a34e27c78e1dc35c55e
+sha256=e6a055689ad05f6adba7dbb9490891a18a240d1a30e34424b3a034f4152f2c28
+
+[http://download.berlios.de/gpsd/gpsd-2.34.tar.gz]
+md5=1ad07e10f34e46ffdaf10688743f2f43
+sha256=39e8d629da469d2032ad3554ff502d270e1037490707d7ae0e8a2de7b06263d8
+
+[http://download.berlios.de/iqnotes/iqnotes-2.1.0rc1.tar.bz2]
+md5=6b4bbf1b97d1fe777c881c0576e4cb65
+sha256=e3c0d1991f6a35f789bf305bc56971e2ced6208d19443ccea8d1d64417a90faf
+
+[http://download.berlios.de/net-tools/net-tools-1.60.tar.bz2]
+md5=888774accab40217dde927e21979c165
+sha256=7ae4dd6d44d6715f18e10559ffd270511b6e55a8900ca54fbebafe0ae6cf7d7b
+
+[http://download.berlios.de/sipsak/sipsak-0.9.6-1.tar.gz]
+md5=c4eb8e282902e75f4f040f09ea9d99d5
+sha256=5064c56d482a080b6a4aea71821b78c21b59d44f6d1aa14c27429441917911a9
+
+[http://download.berlios.de/tslib/tslib-1.0.tar.bz2]
+md5=92b2eb55b1e4ef7e2c0347069389390e
+sha256=9c40d914e4f6fe00bdd77137d671c7ce4f211686228f2eb8b2d3c2360bc249c8
+
+[http://download.devbase.at/voip/linphone-1.6.0-pl0.patch]
+md5=e713ab5a1cda18a1bcf01fb2a199ce28
+sha256=9f141c606cc93d0550eeb3532626f26ced56687c2bc9f2b8dad387798b929340
+
+[http://download.devbase.at/voip/yeaphone-0.1.tar.gz]
+md5=476552b3b88b651ba161d22c1db5314d
+sha256=2f596ef4c57e29708d6246949289341d9f9756d162bf49e89f0828180329aa51
+
+[http://download.gnome.org/sources/gcalctool/5.7/gcalctool-5.7.32.tar.gz]
+md5=c4d4234f6951389027399e9c596a8abe
+sha256=c232fc4b36d063b714d4470c603f462c9e6ccfcd9fb7c071e08356869376381e
+
+[http://download.gnome.org/sources/glib/2.12/glib-2.12.4.tar.bz2]
+md5=ef7b9595fa788e245a0f883bddba8a25
+sha256=1b1a0dc746a07c67aad15e22e3d751c3e7068c889d171efb1ab45efbab87c75d
+
+[http://download.gnome.org/sources/pango/1.12/pango-1.12.0.tar.bz2]
+md5=86c3e08169a18200e64a0c5ee1be7fd9
+sha256=92cb2441d436e10dc811f4aeb85b7cc32210a1ea250b1c3f5ba7e9dc1e6924a2
+
+[http://download.ikaaro.org/itools/itools-0.13.0.tar.gz]
+md5=007ff9e08e26504f5c28462d7bbdaa3e
+sha256=c682a23faf732203a7de9b82ffb736396e5948e000ab10c1a42b0e936b6cc329
+
+[http://download.insecure.org/nmap/dist-old/nmap-3.81.tar.bz2]
+md5=0713306dda85aee2c95ef31b4b7d2838
+sha256=1cfb120008f636a874b871f1625409082badaaf64177c9ac873480630390356c
+
+[http://download.ofb.net/liboop/liboop-1.0.tar.bz2]
+md5=88fc8decf99fd75d2af40e0a005fa0d3
+sha256=4a973d28466fde0b689099192f9bcd081b129d90b3c5a9815e5ade73052cf8d2
+
+[http://download.qballcow.nl/programs/gmpc-0.13/gmpc-0.13.0.tar.gz]
+md5=dbbb1880feb8b9c2493ece670520299b
+sha256=7b47fd0d2e5a2f2d626b3e9e903ff8a0c0ce7c926925944dcea1f9ca3e6cfda1
+
+[http://download.savannah.gnu.org/releases/confuse/confuse-2.5.tar.gz]
+md5=4bc9b73d77ebd571ac834619ce0b3582
+sha256=65451d8d6f5d4ca1dbd0700f3ef2ef257b52b542b3bab4bbeddd539f1c23f859
+
+[http://download.savannah.gnu.org/releases/quilt/quilt-0.39.tar.gz]
+md5=34f0c654aefba0342db6c676988634b5
+sha256=06b32d6f8fe7065b4c2c8142a244374e1be963757125bac20ba016b92231b5bf
+
+[http://download.savannah.gnu.org/releases/quilt/quilt-0.45.tar.gz]
+md5=5f8dd5a041ca7c700b16620228f922aa
+sha256=de7290f334baf631a14d031df304ee94cfb550aa69e7512aa589d21c2381c7d8
+
+[http://download.savannah.nongnu.org/releases/linphone/1.5.x/source/linphone-1.5.0.tar.gz]
+md5=e9b01b74a3bb989aa5859d06e56162bd
+sha256=8178dcf9552bf34cbb7098bbe6168fa1780232dbb649a2d1642eda18c87fa06f
+
+[http://download.savannah.nongnu.org/releases/linphone/1.6.x/sources/linphone-1.6.0.tar.gz]
+md5=fb345125e23c787df0818ff7caad5515
+sha256=ba1c32207fd62d374c9397a81fb1247da93edb859e30d0d855dc65e5457f690b
+
+[http://download.savannah.nongnu.org/releases/linphone/ortp/sources/ortp-0.7.1.tar.gz]
+md5=e69ba3f5a2ac76e3b6117826d0c536b2
+sha256=2f2fc74a13df58f560c40385cd78683c66623d7a8271cb17941a9de7be07d43f
+
+[http://download.sourceforge.jp/efont/10087/sazanami-20040629.tar.bz2]
+md5=ceef10579a75c92483171f3bd7f77df2
+sha256=3467ce2f70a9a3fbbf8d4d97355a2f334a6351baa6722251403637a8cbebf6b7
+
+[http://download.sourceforge.net/abiword/enchant-1.1.3.tar.gz]
+md5=c95186755fe46b27a78d9a85fef2175c
+sha256=6a8bce57437c514f2578e7ff09f8a48ff3b20e7ed746c3113372d2c75d382c83
+
+[http://download.sourceforge.net/bogofilter/bogofilter-0.96.0.tar.bz2]
+md5=ca946b43212d8a2909e86f7140e535db
+sha256=7aeb2c4eb6ad6636631f85816b4f4d21ce811f763412530b70b2c85602e795d3
+
+[http://download.videolan.org/pub/videolan/vlc/0.7.2/vlc-0.7.2.tar.gz]
+md5=25dfcc804cb92f46c0b64ce1466515cc
+sha256=1551c792384ae027995f498546d26c1fdd42a896a9cc2d94a8209d06af4b5874
+
+[http://download.videolan.org/pub/videolan/vlc/0.8.1/vlc-0.8.1.tar.gz]
+md5=3fb3ac4ed456f092d51a00d50159790f
+sha256=9f84c8e8a2f7f5969bc771741b1db64aa44c1b919e8ddbeba37875ca089b66d9
+
+[http://download.videolan.org/pub/videolan/vlc/0.8.4/vlc-0.8.4.tar.gz]
+md5=9cd5ca752f7236167715ca1916da92ad
+sha256=d4e586a7475a0a2390ef9a7225e5146aa65ab70ec408cf9568c79c5aee0ca647
+
+[http://download2.berlios.de/gsmmux/gsmmux-alpha-2.tar.gz]
+md5=5bfa5605d9565ff01138d7a574cc2614
+sha256=fc029984019736eab2b0f10ce28d48ff88f8ceed7a1739cb4b71b851c4b89b91
+
+[http://download2.berlios.de/qsvn/qsvn-0.3.0-src.tar.gz]
+md5=66cfcc9cb5f4e32ef30b2c13de51499b
+sha256=99e73cec97c62fecaccc4a7f354392ea9964d8c20b0a4a330890c32dbac87732
+
+[http://downloads.emperorlinux.com/contrib/pyiw/pyiw-0.3.2.tbz2]
+md5=24e7d7c4ffe9ec96412786fe58d23073
+sha256=cbc3fc0b95250078826b8bfdf98e982c6c3f28919b23a2bb0d2c1d204b13aada
+
+[http://downloads.emperorlinux.com/contrib/pywpa/pywpa-0.3.4.tbz2]
+md5=f118f45e5118517c6a099a68e8444d54
+sha256=1481afca7dfed9bcecfa6f4c8909a70bb0b90428e9b535b0bb40bc337bc62578
+
+[http://downloads.mozdev.org/enigmail/src/enigmail-0.92.0.tar.gz]
+md5=50c369ce6d6fcb2d275cd30319a601ff
+sha256=de820405e4f3ca5531108ca99fc2bb1f260670f2fc4b45c7fb70ef9aa164bf6c
+
+[http://downloads.mozdev.org/enigmail/src/ipc-1.1.3.tar.gz]
+md5=64ba4c6e3b52568468c4f6680ec7e679
+sha256=0265ae1a639e0975a8820928598a357f769350801ea3633016e974d32f7db725
+
+[http://downloads.mysql.com/archives/mysql-4.1/mysql-4.1.18.tar.gz]
+md5=a2db4edb3e1e3b8e0f8c2242225ea513
+sha256=7744d78131619b73a82adb6f73d6cfc6bad11a6ad2806c0f5130f88fe88ac9dd
+
+[http://downloads.openwrt.org/sources/m102.tar.gz]
+md5=c7817035dc41cb02e7cfb565cf9b7401
+sha256=d7ee2e668455f9a092418e5475f32676eb0b37c54ae38a7fcdf2d14e0fb80c91
+
+[http://downloads.sleepycat.com/db-4.2.52.tar.gz]
+md5=8b5cff6eb83972afdd8e0b821703c33c
+sha256=f4bddd8d1b4cde0daf5e13e3493ed62a25b736b0bf258e1d929e47bc6a82a28c
+
+[http://downloads.sleepycat.com/db-4.3.29.tar.gz]
+md5=200b9f5d74175875fcb3ee54adbf0007
+sha256=a1fa714482f25a67a19490303a0164326ac63bd7653ae3f4664c2536b14f3337
+
+[http://downloads.sourceforge.net/aa-project/aalib-1.4rc5.tar.gz]
+md5=9801095c42bba12edebd1902bcf0a990
+sha256=fbddda9230cf6ee2a4f5706b4b11e2190ae45f5eda1f0409dc4f99b35e0a70ee
+
+[http://downloads.sourceforge.net/acpid/acpid-1.0.2.tar.gz]
+md5=15884aaf0b82717954f9366b5c00808b
+sha256=7347042a5328b22965256d98462e8dd8f1cad37de992b135912f32c70163ae71
+
+[http://downloads.sourceforge.net/acpid/acpid-1.0.3.tar.gz]
+md5=8513c19d0f14ff396ea73caaea7f2ef8
+sha256=b36d6e83ecee4748cc3b8fa3cdbc8c59e620428ce77e22e241faa19c2e0e7dad
+
+[http://downloads.sourceforge.net/acpid/acpid-1.0.4.tar.gz]
+md5=3aff94e92186e99ed5fd6dcee2db7c74
+sha256=032a95967f8dd8a227ee1771de4a2646becc4d0f1123568faeca931006ec8f5f
+
+[http://downloads.sourceforge.net/albumshaper/albumshaper_2.1.tar.bz2]
+md5=242c260c50fd774f2301dba66deb668b
+sha256=67b43e51aa5afb22a7329fd78e9d17f489fceb4ac00d9861312993709739528e
+
+[http://downloads.sourceforge.net/arabeyes/arabic-fonts-1.0.tar.gz]
+md5=c6b1aa28bfecdd0c693a2afc43d7679e
+sha256=d5b93fb8dbfa73e4a542bb8ad7d61c8b48dcf79948da26da9e9ef3b1a49c4221
+
+[http://downloads.sourceforge.net/asio/boost_asio_0_3_7.tar.bz2]
+md5=815b8e5bd71c19d6af96aed6bf9e2ee7
+sha256=db61f4ac7e3fe252d6d547ff2ddd25a2f5411afd42c05f4d1efd6038a7d09e3d
+
+[http://downloads.sourceforge.net/atmelwlandriver/atmelwlandriver-3.3.5.6.tar.bz2]
+md5=dd9a11d175ba0fbb62cf7fec5426f5de
+sha256=d80b88753725e2ce83add9f80d120c022112527adbf4425368387da1936345f2
+
+[http://downloads.sourceforge.net/atmelwlandriver/atmelwlandriver-3.4.1.0.tar.bz2]
+md5=288882c65cc13fbe48d5c5ed69aba1a8
+sha256=dd3629e6ba6f638962f3a60035208facf6155397000c86b5f2f7ca2990ef59e1
+
+[http://downloads.sourceforge.net/avetanabt/avetanaBluetooth-20060413.tgz]
+md5=3cb3be404950ef08e51adbe59c7b811e
+sha256=c3648f02dd7d4dc8c0ef9a48089fda4ca47b81a977c838b17f55e6abf7f51447
+
+[http://downloads.sourceforge.net/bedic/libbedic_1.0-0.tgz]
+md5=f0f55eec32c641d0e8602c92acabd56c
+sha256=f490172a14c264f390d682c25cf33353ac5e6f9876722c8348c1e2d4b11dd1dd
+
+[http://downloads.sourceforge.net/bedic/zbedic_1.0-0.tgz]
+md5=96eb282a1a3e4fea69b94f1db069f4e9
+sha256=f218b25c4be2261c49b9c9e1f10c93b64eaf6132ace6bc4052cf0489e3ac56e8
+
+[http://downloads.sourceforge.net/beecrypt/beecrypt-3.1.0.tar.gz]
+md5=1472cada46e2ab9f532f984de9740386
+sha256=50b574d330fecbc9faed81746a1abfcec903c264ae753ac64d4edf22c701519f
+
+[http://downloads.sourceforge.net/beepmp/bmp-0.9.7.tar.gz]
+md5=5d74113f5de3d11a400d1d6c118d41c0
+sha256=7b458b6ca51c5f1c01ce328aedaab81e71028c796d37a953582e0deb55980c51
+
+[http://downloads.sourceforge.net/bluetooth-alsa/btsco-0.41.tar.gz]
+md5=5a7760ed42d7a8b02cbfc77c4e97647c
+sha256=0b71cda89cee84cba28cac91e90a30b9648ce09a16e761a370fb171a7ca12657
+
+[http://downloads.sourceforge.net/bluetooth-alsa/btsco-0.42.tar.gz]
+md5=b0b6bc4d6df04468349f2ad320b05fa9
+sha256=e4f5bc9be311a746bd37f5607d3c225462d7d9294e8b3c692f9a39717b65d843
+
+[http://downloads.sourceforge.net/bochs/bochs-2.1.tar.gz]
+md5=30bdb17e11fb416f9d3c6243e02f6e73
+sha256=90ec337d482a0e766e1f24679324445057abfc2e01d9d2c1f561b40ac7f1915b
+
+[http://downloads.sourceforge.net/bonnie/bonnie++-1.03a.tgz]
+md5=00b1eee7f98b68fa762c4efb3b34caa1
+sha256=2d1c6b2cfdc17d6348f25f0830e1fa5c1c1dd3f014caff74005294c9ed6a0cbf
+
+[http://downloads.sourceforge.net/boost/boost-jam-3.1.11.tgz]
+md5=b86fb56a824d4a3dedcbda12f8b1a2b3
+sha256=6cdb945ac41b5ac78e05435e742b3a9928e5d1a5ff22728656deff29249edc66
+
+[http://downloads.sourceforge.net/boost/boost_1_33_0.tar.bz2]
+md5=43d87bbd827a8299f408df5efe5f0fd8
+sha256=d6bcb5ad03da810c24703dde423b28aca49109591764dfe447e8a2ad5713be1d
+
+[http://downloads.sourceforge.net/boost/boost_1_33_1.tar.bz2]
+md5=2b999b2fb7798e1737d1fff8fac602ef
+sha256=6232e93205acbc8c705f44f15977aae158550c99a384f41606cff26c16393be0
+
+[http://downloads.sourceforge.net/bootchart/bootchart-0.9.tar.bz2]
+md5=4be91177d19069e21beeb106f2f77dff
+sha256=7738399ecfcfb2242e9f99a316b13a5f59e89052de05074dbf705ccf4edc327d
+
+[http://downloads.sourceforge.net/bridge/bridge-utils-0.9.7.tgz]
+md5=e4a7b1a7df4417d82e3f0c4d600dd78e
+sha256=49020d3cc60b58a95fc94b5333c3c4a3b630c82287b08a3a94ad5a74cfe7bd75
+
+[http://downloads.sourceforge.net/bridge/bridge-utils-1.0.4.tar.gz]
+md5=2cab42847c4654e58c4d0ba114bfe2c2
+sha256=3fd05b5b77b9913b93036b48ed28d23d794e67660ba2d2ad63b0b7701b22181d
+
+[http://downloads.sourceforge.net/bvi/bvi-1.3.1.src.tar.gz]
+md5=b9d77c57bda2e019207a1874d9bb4dea
+sha256=c94dbfa293cbc61b8571d025e90fd1f06a34f8d4e5b11a59856bfc1f13014de3
+
+[http://downloads.sourceforge.net/bwmon/bwmon-1.3.tar.gz]
+md5=53c44b73aa67d5e0282adfe928f3ba44
+sha256=624381208d0faae6c123bc6198a59d6c4316cd4fffb1ba5aca206374f5a42df6
+
+[http://downloads.sourceforge.net/bzflag/bzflag-1.10.6.20040515.tar.bz2]
+md5=8e3e5fbef3cfa21079eb06269e6b3d8b
+sha256=0329e3d0a59e9cc167733ed2b89a0dc2249725642a065cfd385bf1206fe30b19
+
+[http://downloads.sourceforge.net/cameraassistant/camera-assistant_0.2.0.tar.gz]
+md5=538e8d4691062524c4181da487d83250
+sha256=9caa3e654af03e55582dd515bfcc9bf5aa93c9d22842af16a87a9a226ec581ed
+
+[http://downloads.sourceforge.net/camsource/camsource-0.7.0.tar.bz2]
+md5=ffd824f13f99011984399fc3b7526c71
+sha256=837ba51635e01209dc2886491afbc2e97629bfaf32e73566a1862ea0dc090756
+
+[http://downloads.sourceforge.net/cbrpager/cbrpager-0.9.14.tar.gz]
+md5=0ce88fc52025b44812d090d10244b2a4
+sha256=9c86a5668a2834f02ec44967737d6341c575e2a1deec76944f47be0292a3cfd7
+
+[http://downloads.sourceforge.net/cccc/cccc-3.pre84.tar.gz]
+md5=7b3d8bd3cbb27d7b9debe5c3398f9f7f
+sha256=015c4237a532b873990aeeecdf351138ce5a811d062d6db73c611a4985de5435
+
+[http://downloads.sourceforge.net/cdstatus/cdstatus-0.96.05.tar.gz]
+md5=cd7ea4ef72a08b388523c528d81ba3ca
+sha256=f33cbb551e494747b76bfbeba3954b4839fe7c849f200746fd7dc21bd665aa56
+
+[http://downloads.sourceforge.net/check/check-0.9.2.tar.gz]
+md5=9a4d5665b8be07513f5ac4e6eec537e6
+sha256=fbd7a0595eba5cf0cb168d9893e883f5cc7a68a7d6fec23cb3688508b247fa22
+
+[http://downloads.sourceforge.net/cheetahtemplate/Cheetah-1.0.tar.gz]
+md5=aaa4907b8877093b9bb11e6cea6b029b
+sha256=ec27eff76846ec95cea4e156fbeac951946b6eb1d1b3e590e48c03904a625893
+
+[http://downloads.sourceforge.net/clamav/clamav-0.88.6.tar.gz]
+md5=db7f8b947bc21023f36e04bfdd555dd0
+sha256=cc7f90983aa61b3d893c3311e3f832c5faa204467143cff597ad80bf8ad24daa
+
+[http://downloads.sourceforge.net/clamav/clamav-0.88.7.tar.gz]
+md5=34a9d58cf5bcb04dbe3eb32b5367a3f8
+sha256=702cb5928bff3d0e647a4a6b505d434e3a0f10f2af74bddac5239a200b92d1e2
+
+[http://downloads.sourceforge.net/clearlooks/clearlooks-0.6.2.tar.bz2]
+md5=451ef33d1bffa261c5cbe01182199f97
+sha256=be080113c9e9d137ee14eaf7f731c5ae58d24924748aaa725d0f061d59265f3b
+
+[http://downloads.sourceforge.net/cmusphinx/pocketsphinx-0.2.1.tar.bz2]
+md5=65408ad948c0b9e21dd5813e68ef76ad
+sha256=74c83c3283178656a6fc1ee571fb1ebbddda8f3b7c32ad405477ae278b0cf867
+
+[http://downloads.sourceforge.net/cmusphinx/sphinxbase-0.1.tar.bz2]
+md5=5ff76b3a4799405ad91e88331eb938bb
+sha256=ffb5e646d98c058ad2f1f0d7738b39e29fbe432981b1b5d9c8a79cdcb168c3c6
+
+[http://downloads.sourceforge.net/corsair/corsair-0.2.6.tar.gz]
+md5=91dd4c6b5650aef03b293aa9a6f54d49
+sha256=db3782e57882a36ac42b69097a817dc3e2a4031cacb815a4e4a1115da108e519
+
+[http://downloads.sourceforge.net/cppunit/cppunit-1.10.2.tar.gz]
+md5=0bc06cd219410f7d4f6bbfc9bdd7c824
+sha256=71b626958e3d8927d236f462b2becd192a113d1d6d38b8d567bdc181b5069ccf
+
+[http://downloads.sourceforge.net/cpufreqd/cpufreqd-1.1.2.tar.gz]
+md5=d06dcf3e3b2f8eb25216431ec055aa4b
+sha256=c64eb1923366934357c917ff9a94237a8157de24a1fd96e0f91c4d5dfad83026
+
+[http://downloads.sourceforge.net/cramfs/cramfs-1.1.tar.gz]
+md5=d3912b9f7bf745fbfea68f6a9b9de30f
+sha256=133caca2c4e7c64106555154ee0ff693f5cf5beb9421ce2eb86baee997d22368
+
+[http://downloads.sourceforge.net/cscope/cscope-15.5.tar.gz]
+md5=beb6032a301bb11524aec74bfb5e4840
+sha256=be49cda0a9d33add89cabe0dfcef436a2863a7b0b833767875e0b7a6e8b4c4d1
+
+[http://downloads.sourceforge.net/ctags/ctags-5.5.4.tar.gz]
+md5=a84124caadd4103270e0b84596ecfe83
+sha256=7b83689a47efa627d4b5670317125de3d87ae9278cf69c3ac7e3b7be646e715d
+
+[http://downloads.sourceforge.net/ctorrent/ctorrent-1.3.4.tar.bz2]
+md5=823010ec78215d476537c9eba9381cdd
+sha256=7e2ef5d0656ac23cecd03374d9b00291a55b274c972adfe94d6f41ae3ba60c73
+
+[http://downloads.sourceforge.net/dav/davfs2-0.2.7.tar.gz]
+md5=c17d450b655bf4503c22f9f07bd9b087
+sha256=8e230254e8a1c426ddb6a78de62de931c0c8cfe0767686b7a10a5031c4340826
+
+[http://downloads.sourceforge.net/dav/davfs2-0.2.8.tar.gz]
+md5=586bdead055993a4a06bdeee5449310d
+sha256=04f98a83e6339f490046d908c0fcca1275e79462f11592187eb23c7368a172f1
+
+[http://downloads.sourceforge.net/dbh/dbh_1.0-18.tar.bz2]
+md5=dca09e2949616471669320e3429a49ef
+sha256=62c8c36df69c48bed9e8a1406faa5df5d057876b34fc110492c87260a70692c6
+
+[http://downloads.sourceforge.net/ddclient/ddclient-3.6.3.tar.bz2]
+md5=42a3a420e492c0111adc58ac08ff6d04
+sha256=28be7102bde3bc9b39be2732b89da9fbab79b7ac3898075ed414a45258bb3026
+
+[http://downloads.sourceforge.net/dejavu/dejavu-ttf-2.15.tar.bz2]
+md5=2f8c073084c27d0df40e747eda7f79ba
+sha256=22b1f489afef6849919220591ffc51615b9cddbea61b66b43791fdeebb4dbe09
+
+[http://downloads.sourceforge.net/devio/devio-1.0.tar.gz]
+md5=3f421c80bce00b8bfe68ef9f453932b7
+sha256=25380c3722c75b993d530c09d48f5941c0a640a4382f6a0e1878c4ee8459dd16
+
+[http://downloads.sourceforge.net/devio/devio-1.1.tar.gz]
+md5=fe2319ec57b6363c1da78a435ef714c5
+sha256=92984b9f18488d020459873c18503a08a3942469b510e7c0b6be73c590df7b39
+
+[http://downloads.sourceforge.net/devio/devio-1.2.tar.gz]
+md5=5d332c2bffc0791367bcf3368ba1a0d1
+sha256=a71e87f49f52cd90dbd45431f65e83d18e073fb2669f91c29c59019b175cd5a8
+
+[http://downloads.sourceforge.net/dosbox/dosbox-0.63.tar.gz]
+md5=629413e41224ae9cdd115fdafd55cbdc
+sha256=f4eeee90f076d891034faf1268b6352b8df9cb262b787384ed4386cf6ea4faa7
+
+[http://downloads.sourceforge.net/dosbox/dosbox-0.70.tar.gz]
+md5=ea0a936e88eb294038e67eeb0d7129c4
+sha256=05fdfd561eee33de12d978795b7f12338327c6da1ce65971463b58f2e90b48e4
+
+[http://downloads.sourceforge.net/dvd/libdvdnav-0.1.10.tar.gz]
+md5=c8ddee96ba1182d73447eaf0bb6fde81
+sha256=c2c6ee274cbd5759715a786b949df8ac3e848ffc771173c4f006b88c665346d0
+
+[http://downloads.sourceforge.net/e17genmenu/e17genmenu-4.2.0.tar.gz]
+md5=57b38240d044c9752b4af3b6581bfeae
+sha256=a077754b500b7cf5df1b0bd1edf1f1d28ed4f68b4f6fe33d509b8fd37bc97d41
+
+[http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-1.38.tar.gz]
+md5=d774d4412bfb80d12cf3a4fdfd59de5a
+sha256=c4e482687d0cff240d02a70fcf423cc14296b6a7869cd8dd42d5404d098e0bb7
+
+[http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.33.tar.gz]
+md5=c7545bb05e0c2fc59174f0dc455c6519
+sha256=a65d064bee3e97c164d07a490692db0e73da8da10019ad9a89866706c93ae703
+
+[http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.34.tar.gz]
+md5=b51824f1c34be88e8581d96fc418d224
+sha256=2c505a14157fe591bd540b9a0dca11f5d842e3b6c34a23dbbbd9eafcc9fa33fa
+
+[http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.35.tar.gz]
+md5=d31301cc2756dc9b0254b6aac03c376e
+sha256=236f1c173fe378b1306db797dc31f1884208ceac3ab81ad52f69e01f7bf61277
+
+[http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.39.tar.gz]
+md5=32a2f67223feb2d70233eb3f41e73311
+sha256=fe3c72d861f2a3791f31ea33043d25e29e9a4e3d6a3833b151237a62c5c703f9
+
+[http://downloads.sourceforge.net/ebtables/ebtables-v2.0.6.tar.gz]
+md5=c4559af2366c764c6c42a3fdd40d60d3
+sha256=6b5a71790120977a96d5a468ed69987107c5079f14b0a4081f460b3b14fbf952
+
+[http://downloads.sourceforge.net/esmtp/esmtp-0.5.1.tar.bz2]
+md5=9f0b809e891a548910f099efc4315b02
+sha256=ae023107f8e0c872a2bb6f23a9a5f019b254e9b7eebd20a309af996d9cb7e38e
+
+[http://downloads.sourceforge.net/espgs/espgs-7.07.1-source.tar.bz2]
+md5=d30bf5c09f2c7caa8291f6305cf03044
+sha256=7e0ed705da90a4c65368675d68ccecb871f89cb06d2efc61ddd0bb5fee5570f2
+
+[http://downloads.sourceforge.net/ettercap/ettercap-0.6.b.tar.gz]
+md5=f665cf82347a91f216184537f8f2c4bd
+sha256=2b6b0d1af5b8af63eb5edf7052fdc9f46c55b6f7b607c8772b18927cb481ecf9
+
+[http://downloads.sourceforge.net/expat/expat-1.95.6.tar.gz]
+md5=ca78d94e83e9f077b5da2bfe28ba986a
+sha256=b48761f9b67715bb1f85371d0059d744a60ed71e72065da7d5326bbb04e26a92
+
+[http://downloads.sourceforge.net/expat/expat-1.95.7.tar.gz]
+md5=2ff59c2a5cbdd21a285c5f343e214fa9
+sha256=c94817c67c8ff0d244092c19f5713ea8c76a9a19075ff6031d4ef93ec7b66256
+
+[http://downloads.sourceforge.net/expat/expat-2.0.0.tar.gz]
+md5=d945df7f1c0868c5c73cf66ba9596f3f
+sha256=c4280eb80fa8e14b3f204b1d0ec67af66fa04c4f9dae9c78a1a8ee4c6f485ddd
+
+[http://downloads.sourceforge.net/faac/faac-1.24.tar.gz]
+md5=e72dc74db17b42b06155613489077ad7
+sha256=a5844ff3bce0d7c885af71f41da01395d3253dcfc33863306a027a78a7cfad9e
+
+[http://downloads.sourceforge.net/faac/faad2-2.0.zip]
+md5=b6807fba02d52747ebb92097daee71e8
+sha256=50cf7188f6f99b75566f14d417915dcff1446d36d05982971c126893ae74a97a
+
+[http://downloads.sourceforge.net/fbpanel/fbpanel-4.3.tgz]
+md5=2d2f3713cf3c17b71997064f39d4c888
+sha256=e4db7a6305ffe2333fae08c940ded8f7e5b02999e0917b0ea4ef3764c80f58c8
+
+[http://downloads.sourceforge.net/fceultra/fceu-0.98.13-pre.src.tar.bz2]
+md5=1977214a15a341a4fd8bad14eda76866
+sha256=a227f2d8a3b79462a895435be26c1622f03c5978d2e3e5456d6284592e88a6c2
+
+[http://downloads.sourceforge.net/ffmpeg/ffmpeg-0.4.9-pre1.tar.gz]
+md5=700b66230a8322493c032c04372b8d74
+sha256=4b60386e4b44f5dfa6fe490e804f89f3110609a48c7df721b8a419935d13346b
+
+[http://downloads.sourceforge.net/flac/flac-1.1.0.tar.gz]
+md5=19b456a27b5fcf502c76cc33f33e1490
+sha256=897b0ac415b36ea241932c56852b8d6f3e083d0db66be9a96fc83c9cc42932a1
+
+[http://downloads.sourceforge.net/flac/flac-1.1.2.tar.gz]
+md5=2bfc127cdda02834d0491ab531a20960
+sha256=ce4f7d11b3c04a7368c916ca4abc284dd0c0256f461dfb7f07df1ab445e7a5c0
+
+[http://downloads.sourceforge.net/flex/flex-2.5.31.tar.bz2]
+md5=363dcc4afc917dc51306eb9d3de0152f
+sha256=701353279a17655d78e3b3678ad78d0375f5bf45877ad8b3507d589c42427f26
+
+[http://downloads.sourceforge.net/fluxbox/fluxbox-1.0rc.tar.gz]
+md5=2575d0b605bcacc406c5b8f89fb0d3c5
+sha256=84cabad81bb78fc08ae3d8abae57840cf575a0ca6ca719c7d9bed19505d06ea3
+
+[http://downloads.sourceforge.net/fnorb/Fnorb-1.3.tar.gz]
+md5=7de1500c7ef6592a603890b45e23261b
+sha256=d4380ab7fa8b8a9f564592b4e07c96117abd2d3f677b8a73c824cf4f904aa294
+
+[http://downloads.sourceforge.net/foosh/fush-0-9-0.tar.gz]
+md5=d7077d40a4bc18f05bc3a4895012646a
+sha256=ad4a64117094eafde12d7aa8c81f6425113d1ebf5b561c6cc93cfda46a2fef41
+
+[http://downloads.sourceforge.net/freeciv/freeciv-2.0.8.tar.gz]
+md5=7d597d59236cc0cc1cfaa0cbbda24bd4
+sha256=784b6eb132d37c51f7d9cd50a92138f4520146715f64b8fd64c410b5997f77de
+
+[http://downloads.sourceforge.net/freedroid/freedroid-1.0.2.tar.gz]
+md5=585a65f61c2cd308ab45d5c514f695dc
+sha256=0934bd29fb2ad0367ea3bdfdce47537179f9af6aa960cbcc897c40da2e1a0ee3
+
+[http://downloads.sourceforge.net/freetype/freetype-2.1.10.tar.bz2]
+md5=a4012e7d1f6400df44a16743b11b8423
+sha256=fed2ed148d7d105b95493c5e95561c8b05ee7909e00f828f036d8ed1be6a5e53
+
+[http://downloads.sourceforge.net/freetype/freetype-2.1.8.tar.bz2]
+md5=f717615787a1aadbdb164d1bc23c2308
+sha256=9466fa75380ddcbea4e99a6b47474acd85d7abe46fa08f9316778f5c9419006b
+
+[http://downloads.sourceforge.net/freetype/freetype-2.2.1.tar.bz2]
+md5=5b2f827082c544392a7701f7423f0781
+sha256=0e8eb40392752b306d3a3de21f9fa479d53c17bd774b8051771cb258e162e006
+
+[http://downloads.sourceforge.net/freetype/freetype-2.3.0.tar.bz2]
+md5=5b331456e0357e90d57cab5943dbe560
+sha256=1b1bb146b8d2fd04ea03106da5f8abfd83e44c04a060fd7a38d06d6a224390bd
+
+[http://downloads.sourceforge.net/freetype/freetype-2.3.1.tar.bz2]
+md5=11e1186ca5520c5a284fa0a03f652035
+sha256=be38eecd22880089223dc7e49ac79ce4fdfd1cb7ea09b3a4ef9bd1966f0d6155
+
+[http://downloads.sourceforge.net/freetype/freetype-2.3.3.tar.bz2]
+md5=c0367b4059f672789b7a41e65f7a4b4a
+sha256=6ce667f4beafed9fb15895ac5dbe81504febfd8e32cf94d85dfa31c21eee2f7b
+
+[http://downloads.sourceforge.net/fribidi/fribidi-0.10.4.tar.bz2]
+md5=0f6e7ecca08e6e108dc06337f5b5cabf
+sha256=f3ecdb9d108bd61ec9394df75f5fd68ba886a8da0863ba6258338893aec6c04f
+
+[http://downloads.sourceforge.net/fuse/fuse-2.5.3.tar.gz]
+md5=9c7e8b6606b9f158ae20b8521ba2867c
+sha256=19f9e27a35e65b61c25b999c44d0c35ba858ad586379226849d097d638579057
+
+[http://downloads.sourceforge.net/fuse/fuse-2.6.0.tar.gz]
+md5=fa6c7b07a0be3a3e30d6cf3a6bad5817
+sha256=782137879b964139e2dc4767114b763cb0e11ae322476404920cf767728e659e
+
+[http://downloads.sourceforge.net/fuse/fuse-2.6.3.tar.gz]
+md5=3f4f5d07d12dedc0a3fd23472171fe94
+sha256=804d7fae424c97dc3790ad12d798e7b27dc6c12e4116f8bd69ca0130773d3f9d
+
+[http://downloads.sourceforge.net/fuse/sshfs-fuse-1.3.tar.gz]
+md5=40fe4a353d03b80f8b37e4b0cc6159d3
+sha256=f80f713105fc0747197b6e5d2440cd77205cb1febe25b7b4fe08809ab67ace26
+
+[http://downloads.sourceforge.net/g-inspector/ginspector-20050529.tar.bz2]
+md5=0a8474e0d90b139b1baa70b097a4fd51
+sha256=7f55ec02b5ab9e86c64f5718be64854fd9c64899908e580e1a9759421ac3b436
+
+[http://downloads.sourceforge.net/g15daemon/g15daemon-1.2.6a.tar.bz2]
+md5=ba220f1fda33283af307c109cc520f61
+sha256=583c4bece816b712959aba51f49d78bb587e215fbb6a322efe832477c74f2564
+
+[http://downloads.sourceforge.net/g15tools/libg15-1.2.1.tar.bz2]
+md5=51d42e50ec00315f71be184ba1ddf32b
+sha256=fd9468704d55fc6796604380ee63454e954720519f827e5ac563e2144b719155
+
+[http://downloads.sourceforge.net/g15tools/libg15render-1.2.tar.bz2]
+md5=a5a2a833d098926c3d289aeae452cc53
+sha256=d22335af6a17ec44799da82671778d2072499b26c5773ab913d9ba20d159d20f
+
+[http://downloads.sourceforge.net/gaim/gaim-1.0.3.tar.bz2]
+md5=d0c40cbb57a80813fd495d3ffc6259df
+sha256=dfcc3ed2a7fd919f8f5937bdaae9424cc12f0525c89cb1ffe661e7085abb62c7
+
+[http://downloads.sourceforge.net/gaim/gaim-1.1.0.tar.bz2]
+md5=231f30505d7377bbdde0f350a4bcb838
+sha256=63b05733e09d611c0f5645fe6c6315586916de80a42d7aeedb368737feff2cce
+
+[http://downloads.sourceforge.net/gaim/gaim-1.1.1.tar.bz2]
+md5=5d554be5ccb2064a5b3d43117c7d6d4b
+sha256=77fbf159af9a5382cf437e9c7f6e36f881aac628600b7fa947159db29fa9e91b
+
+[http://downloads.sourceforge.net/gaim/gaim-1.1.2.tar.bz2]
+md5=d4bb61059214cfdbc75f85fe185b0e01
+sha256=39781205840b8b38fbb3ef86accc885a4267958b8aeea396806d0521dfd969e5
+
+[http://downloads.sourceforge.net/gaim/gaim-1.4.0.tar.bz2]
+md5=d7717cb771e556012ecd5b7f3bdb02ba
+sha256=9f44792ea9df64e0a1df9c9efe3baefb6150e4c93b8b414f0a2b398e3f8eb32c
+
+[http://downloads.sourceforge.net/gaim/gaim-1.5.0.tar.bz2]
+md5=9205321ac11fad271c90f2f0d7c5e7ce
+sha256=58e3b0340cfc9e54e46f8d8835e5a02e31201c9ed8820bbb4cea36c59b9682aa
+
+[http://downloads.sourceforge.net/gakusei/pobox-1.2.5.tar.bz2]
+md5=d1c988c2ac06d3111f80d59d30bb8bbb
+sha256=73bbc333d2a51d0e1cd73030012f2727ac26f5b1d41333994b01a47486fc16db
+
+[http://downloads.sourceforge.net/galculator/galculator-1.2.3.tar.bz2]
+md5=f42148bcaac4b6b097cf2055c780bcfc
+sha256=0ded02d0e6e648024f593f3c3748a73f8f569f680256c393c571144dd77b6fd6
+
+[http://downloads.sourceforge.net/genext2fs/genext2fs-1.4rc1.tar.gz]
+md5=664431bf6737df1c265500e1f0b5d40c
+sha256=e60f88763ee12c02a5c7ade1a58925ef0ab198f9ec6aaf404747dfc29074c7be
+
+[http://downloads.sourceforge.net/gift/gift-0.11.4.tar.bz2]
+md5=decc82159c6723be999b1306a808077f
+sha256=68149059b807b2fac505e376c18320e64104fbe0190e359f98059e73a63693dc
+
+[http://downloads.sourceforge.net/gift/gift-0.11.5.tar.bz2]
+md5=f492b6e3607aed801b77657f3808f5c1
+sha256=3d3013fb5648b6060202a63c13c160899da8baf756140c7fd8f4ed432b40fdd2
+
+[http://downloads.sourceforge.net/gizmod/gizmod-2.3.tar.bz2]
+md5=b7200b08149599c4c0f56d88f0c7f208
+sha256=53af32530e58ba23cbb752f063364612bbea57b31de2ee35814973452c2f63f2
+
+[http://downloads.sourceforge.net/gkernel/ethtool-3.tar.gz]
+md5=b4e71f7fa2629250677eefcb338442c5
+sha256=015d7c6084a668d7c2868d074e41a9cdd80bb6f0c7c6b9d275802e1629dd301f
+
+[http://downloads.sourceforge.net/gkernel/ethtool-4.tar.gz]
+md5=3882c7c9cb9b4c37b08846dea9370245
+sha256=4536d6bc9ce52b9f4d505ff36aefca23c1042a92fd2f9a54308eff6e09b1a22b
+
+[http://downloads.sourceforge.net/glurp/glurp-0.11.3.tar.gz]
+md5=cffb7c11906b71a54d4cd8e9d4bd043c
+sha256=dd419074ed74f5685d1a9d55249544bb3527f7e4ee86facd480ca5b7f3618f30
+
+[http://downloads.sourceforge.net/gmpy/gmpy-sources-101.zip]
+md5=7b2e951912d4bee9613c35244ca32673
+sha256=5cd061fa5d4906d6aa7183393c98d070dc689cbb946c13bebab6d6e4ecdc2231
+
+[http://downloads.sourceforge.net/gnome-power/gnome-power-0.0.5.tar.gz]
+md5=db310dadcc958a781a2752a6a7748e60
+sha256=78f7dc6946e178513202f06afc19496c8ac1e3ac6c43c56c40f4db1a23762179
+
+[http://downloads.sourceforge.net/gnomebaker/gnomebaker-0.6.0.tar.gz]
+md5=351363497017121d3a1d43b0e3a0f515
+sha256=b1639296a7c5de7fbc37464ed70d68007edcb884eb4b5983a1c5f9028f50fb0b
+
+[http://downloads.sourceforge.net/gnomesword/gnomesword-2.1.2.tar.gz]
+md5=ce1171f19a40256cfdd31f42c979d91c
+sha256=77cb4bd39a4cec2aa3d61b0519134f9e4a65613960b3b3ee34dd2452d5e12ba7
+
+[http://downloads.sourceforge.net/gpe-expenses/gpe-expenses-0.0.6.tar.gz]
+md5=ee998780d384e68cdd15748392f59980
+sha256=9ce4624ca3ca7e641fac7513dcef6614bce611c338466c742a0e19346cf94f82
+
+[http://downloads.sourceforge.net/gphoto/gphoto2-2.1.4.tar.bz2]
+md5=5bbee55d4e59b063d3cff0fbc9121006
+sha256=c52e77a52ad11a02ae9f0b8491915f3f09fec23f8f740cc6079570241caf63cb
+
+[http://downloads.sourceforge.net/gphoto/gphoto2-2.1.5.tar.gz]
+md5=9bd1a033389f9e4e6425dda4f6e603c9
+sha256=fefaabea8aede51ae9560ba71e2a7c31f4d856b0bb1fc0de7297d12e1215698c
+
+[http://downloads.sourceforge.net/gphoto/gphoto2-2.1.6.tar.gz]
+md5=2de2bcc62599b8a7337b54b0a067c50b
+sha256=82330519effc421a39c196d2a2806dc9c3cdcc891b7ec34dee04b3fe4ef4534a
+
+[http://downloads.sourceforge.net/gphoto/libgphoto2-2.1.4.tar.bz2]
+md5=a201650482bbc2edbd948449cf4d3f5a
+sha256=98af9747179c4d284104fc155b624c6cda4e91a554de0a04e6a6878c0e852c63
+
+[http://downloads.sourceforge.net/gphoto/libgphoto2-2.1.5.tar.gz]
+md5=210844f0d88f58842917af6eaff06382
+sha256=4691bc87f567eba4938d1465e7a2ddfaf7bdea86629390830111bd03bd227ed5
+
+[http://downloads.sourceforge.net/gphoto/libgphoto2-2.1.6.tar.gz]
+md5=1938cbd9718595fd419907bf2f7c3195
+sha256=f80dc7b4b280db736b07089e31aefc8112a47e285e7d0b4f53249630a07fec80
+
+[http://downloads.sourceforge.net/gpsbabel/gpsbabel-1.2.5.tar.gz]
+md5=cf9f349fec33760c8026c9b12c6f7a9d
+sha256=539d5c703799b12f5785286a689fd16f5fe957c2eaf460360e79f5f51d8c132e
+
+[http://downloads.sourceforge.net/gpstk/gpstk-1.2-src.tar.gz]
+md5=541ec5a5b86cf9e56f0b23cf6c80dd6e
+sha256=c1378384b1737b2fa330f8d63d7777db311c976bb20e0c0e0fcd5dac0e78672a
+
+[http://downloads.sourceforge.net/gqview/gqview-2.1.1.tar.gz]
+md5=2cd110305cfe4c530fcd6e34bb52e1f2
+sha256=948d389d72906b798db3b5013a1769d1f8c9c9f3b6dff66c8820dfa0820b02e2
+
+[http://downloads.sourceforge.net/granule/granule-1.2.4-1.tar.gz]
+md5=7f4e11d04e369391de27fca82ee60f11
+sha256=300a3151efbd984fe51e7c230ae419efd197fa2aaa6b8791188aeab3917a505c
+
+[http://downloads.sourceforge.net/grift/glrr-20050529.tar.bz2]
+md5=a78f1d1ee403ad3bb2959159f7ae0e69
+sha256=2bec403b16ebdcc2a82ea6523eea230e1d651e68094e4bb1af716b36f951ba06
+
+[http://downloads.sourceforge.net/grift/glrr-widgets-20050529.tar.bz2]
+md5=97bd37e930e4e3837ee3fae45a4eec8f
+sha256=62a88525ae1deb3112221c4e1068e8d940afb3b8e5664e353cf3360ab403b845
+
+[http://downloads.sourceforge.net/grip/grip-3.2.0.tar.gz]
+md5=9b51933a03dd7d7ddfbb3643fc82c2d0
+sha256=5a51a67f2828aa679a46bbb95cdc5346d6d4516f8ba74b7744b6049ccbe805ca
+
+[http://downloads.sourceforge.net/gsoap2/gsoap_2.7.7.tar.gz]
+md5=a0bbbfdc135034cd778537f979121df7
+sha256=7b531f1b6481fbe1a21620a86649f42cb2de9cf086e7bdde46335137d3ca11dc
+
+[http://downloads.sourceforge.net/gthumb/gthumb-2.6.9.tar.gz]
+md5=2819ec911a7cc4f46b95240b65f2b3e2
+sha256=b02423f0dc9f82a3e1a56cfd470c1cee5d351654fdc55c1a3cd5cff150828b3c
+
+[http://downloads.sourceforge.net/gtk-webcore/osb-browser-0.5.0.tar.gz]
+md5=4dad43f6e1291dfefaec6e9209928a0d
+sha256=78bed1f7a227c7844f4f1c3fd4eaa8c1c15f3ba6133ab1186f5b35371344de96
+
+[http://downloads.sourceforge.net/gtk-webcore/osb-jscore-0.5.0.tar.gz]
+md5=969cda923c419e35a319911b30b1d4b8
+sha256=f5ad6961288687b8dc44a3f5cd6d1901b1b5b293e592da7a63c201eee1089464
+
+[http://downloads.sourceforge.net/gtk-webcore/osb-nrcit-0.5.0.tar.gz]
+md5=b02f4a0dcaac722ad7cdc112db964df4
+sha256=8977c50529ecd51441897d675a3eca980d50e2b33fb0885f9dae1f3c9fd417c8
+
+[http://downloads.sourceforge.net/gtk-webcore/osb-nrcore-0.5.0.tar.gz]
+md5=16d9a9a322025cae1a7fe8225690695a
+sha256=39123e386671e18873392fe221616bbfc2be5ca6ddc3660d6cc001a6aa1f59a8
+
+[http://downloads.sourceforge.net/gtracer/gtracer-0.0.10.tar.bz2]
+md5=8f21636a60ed57265feb34806ffe4b00
+sha256=ce2a88a784c73d49b3600b5927f65624f665460684dc4b479989ad1c53e565c5
+
+[http://downloads.sourceforge.net/haserl/haserl-0.8.0.tar.gz]
+md5=bd9195d086566f56634c0bcbbbcbebea
+sha256=ba261a21539e1f204ba74590d313c501007e546b54aa9ae7210a99eaf3c097be
+
+[http://downloads.sourceforge.net/hdparm/hdparm-6.3.tar.gz]
+md5=0c12672f3a09c14ad0b0882f15fc9389
+sha256=08688a6a46ba495494bf838f8f26103e797584c1888eca94e43a171e1b37246d
+
+[http://downloads.sourceforge.net/hdparm/hdparm-6.6.tar.gz]
+md5=ecea69f775396e4ab6112dcf9066239f
+sha256=7e2db39a4e1f41bb327a9a8ef9e5e8359aaed0cc78e642a4ca67659629e3048b
+
+[http://downloads.sourceforge.net/hdparm/hdparm-6.9.tar.gz]
+md5=62749c6cdf28ce31aae335092fa107df
+sha256=cae6ed86296d01be98ee3be0c224c4323eee508941a7f162a0366d56655afe06
+
+[http://downloads.sourceforge.net/htbinit/htb.init-v0.8.5]
+md5=1713d9a4941120235cb0721ceba6493b
+sha256=acfda369dff72b9073a8b70f2b05b1397a61a1cdb23970e5ed216d632ff33586
+
+[http://downloads.sourceforge.net/httppc/httppc-0.8.5.tar.gz]
+md5=365684629378365de02e127f4a085628
+sha256=bedfd45364948a08ecaa212c5eda6667a83ac8bb547e2eb8478ade885898cad7
+
+[http://downloads.sourceforge.net/hunkyfonts/hunkyfonts-0.3.0.tar.bz2]
+md5=36444795a356fb8a56c63b2840729bab
+sha256=e0b1849c545b6af276407d93025c73094dd74fc259b07c1d91594fdbb9a0b829
+
+[http://downloads.sourceforge.net/icewm/icewm-1.2.20.tar.gz]
+md5=6c94dae56fbf9aa085a1d780538018c1
+sha256=0138dc364ee23156a58d890a5b2c61685bd91ea0017accf90118b38fef2df1d3
+
+[http://downloads.sourceforge.net/icewm/icewm-1.2.26.tar.gz]
+md5=097b12d3f8e0f57a964e4821bc1825ed
+sha256=96ed51cbaead5bd8c33522be5bf0baac4c051db0a826f764eb8528b2ec0c5497
+
+[http://downloads.sourceforge.net/id3lib/id3lib-3.8.3.tar.gz]
+md5=19f27ddd2dda4b2d26a559a4f0f402a7
+sha256=2749cc3c0cd7280b299518b1ddf5a5bcfe2d1100614519b68702230e26c7d079
+
+[http://downloads.sourceforge.net/ijbswa/privoxy-3.0.3-stable-src.tar.gz]
+md5=b0710be8af09409bfb03f52523a17010
+sha256=4dab0049049c1ae6cfb00faea606d981535d0f0a65aab17e3179cc3d75de9f84
+
+[http://downloads.sourceforge.net/imdbpy/imdbpy-2.5.tar.gz]
+md5=dbbb53f835fd3f7aebcf7601dd902920
+sha256=edaad2859a4f0785a34c3c0bb5a1e09d8f16efa3c0e4616f6a5a6cf18c282aa6
+
+[http://downloads.sourceforge.net/imposter/imposter-0.3.tar.gz]
+md5=5bcaa0fe3fec26840c8f1ecefc891887
+sha256=53b67c08477623bb03436f79bf2ca859d7cd9684c57775ea539e1db449658236
+
+[http://downloads.sourceforge.net/inkscape/inkscape-0.38.1.tar.bz2]
+md5=dffa08601c822de29b8c3e436a3994bf
+sha256=dc1d3525483fa503ad4312c3b6aa3742951c8e7428674de9f43077c26f353122
+
+[http://downloads.sourceforge.net/inkscape/inkscape-0.39.tar.bz2]
+md5=3542a646c6742686557b2f0e52c5f6dc
+sha256=9436f3c01dc69a1e7781633cd85936a40b3a84325e01930188bbae45e13fdbdc
+
+[http://downloads.sourceforge.net/inkscape/inkscape-0.42.tar.bz2]
+md5=4af587b942647bf9e27861e2238844c8
+sha256=00f94678fff587288f8e7848466b35c3f894dcc007e7101f467c46d155cddfb8
+
+[http://downloads.sourceforge.net/inkscape/inkscape-0.43.tar.bz2]
+md5=97c606182f5e177eef70c1e8a55efc1f
+sha256=74d6088a6f7521c36b73550baa9dd0381505d66658f0bc01802aa2dfc7430fbc
+
+[http://downloads.sourceforge.net/ipodlinux/uclinux-2.4.24-ipod0.patch.gz]
+md5=5d16f569d2a18b6536749cc2b229649d
+sha256=43604951abb43246ccd6b6e7b6935f92322f9313ded99044057b241a2a20b07b
+
+[http://downloads.sourceforge.net/ipsec-tools/ipsec-tools-0.5-rc1.tar.bz2]
+md5=74fc66f01937076f65079e194dd2b0d0
+sha256=325bfc9607ccf56e7de0e7973e18fac76678e50b8cf24d3818b4feb734a0e45d
+
+[http://downloads.sourceforge.net/ipsec-tools/ipsec-tools-0.5rc2.tar.bz2]
+md5=16cc2cea0a882c8df1da1393011d9cbe
+sha256=e1c8b396b8753cce4107ad3df76feba0a4bf0f0f9d2791d16eee1c07f662a174
+
+[http://downloads.sourceforge.net/ipsec-tools/ipsec-tools-0.6.6.tar.bz2]
+md5=e908f3cf367e31c7902df5ab16fbe5c3
+sha256=2291dd75794a4fc307eb420eb035087a4cf56d3ef6b187f1a1386d3e33851044
+
+[http://downloads.sourceforge.net/irda/irda-utils-0.9.15.tar.gz]
+md5=b69b75464d6ee72e6600a8459d9b68ac
+sha256=27df093409e65279b5cf60777c3310feb50a522bebd4f5038cfebe41a7a46809
+
+[http://downloads.sourceforge.net/irda/irda-utils-0.9.16.tar.gz]
+md5=2ff18f0571b5a331be7cd22fc3decd41
+sha256=09a30fa12d81014b2877e8b5c36f5a341788579669d72f2dec0e29d22efe11e9
+
+[http://downloads.sourceforge.net/jackit/jack-audio-connection-kit-0.99.0.tar.gz]
+md5=a891a699010452258d77e59842ebe4a0
+sha256=2096acc56c314e689faad0036bbc1d86dea1b9d9620f711d471de76b1dd6859e
+
+[http://downloads.sourceforge.net/jamvm/jamvm-1.3.0.tar.gz]
+md5=4f0af6c15f1b9fc50375d30a422bc88f
+sha256=445813850236d5ea54942df45046ee9414192b403fb8fb1b8e7cfce0f3ace761
+
+[http://downloads.sourceforge.net/jamvm/jamvm-1.3.1.tar.gz]
+md5=cceb887aec78fee99773949ede34759e
+sha256=3a089c19c49e0e29f319d60afac73708a80a22ac42a9728316193e680f4cec5d
+
+[http://downloads.sourceforge.net/jamvm/jamvm-1.3.2.tar.gz]
+md5=f63b7cf4b541a144c41f17fffb7cc869
+sha256=6740f2cef6a2620bc5959eb65562866ffb5c45050a04555aed244abcbe30f88d
+
+[http://downloads.sourceforge.net/jamvm/jamvm-1.4.1.tar.gz]
+md5=ed79d6b60e50b007614831f8c28321ac
+sha256=a73727c9c2e15d6302cf4f5d3aaf8378c5de9d60a302b9d5fa4ee5332341f867
+
+[http://downloads.sourceforge.net/jamvm/jamvm-1.4.2.tar.gz]
+md5=c7affcc61d4135ee838121a57b08de0f
+sha256=dae915b7f963762385df2f4660eaad497261fa72393ba69339530e5b0b5d8bc3
+
+[http://downloads.sourceforge.net/jikes/jikes-1.21.tar.bz2]
+md5=4e45eeab4c75918174e16ea2b695d812
+sha256=30093eab8df4cad8ef94a1c4197272b75c719bbbbdf077c8b64e7cfbb9cbc9ae
+
+[http://downloads.sourceforge.net/jikes/jikes-1.22.tar.bz2]
+md5=cda958c7fef6b43b803e1d1ef9afcb85
+sha256=0cb02c763bc441349f6d38cacd52adf762302cce3a08e269f1f75f726e6e14e3
+
+[http://downloads.sourceforge.net/joe-editor/joe-3.1.tar.gz]
+md5=2a6ef018870fca9b7df85401994fb0e0
+sha256=252390e4bc687957f09f334095904c8cc53b39c7b663ed47861ae1d11aef5946
+
+[http://downloads.sourceforge.net/justreader/justreader_2.0k.tgz]
+md5=74b2b89b12668cbbbb093b6343e9f52d
+sha256=55b0dd7ac3f9860a4cba0797213fdaa898b77f3228612e3499d54e6fe6144514
+
+[http://downloads.sourceforge.net/kdepimpi/kdepimpi-2.2.7.tar.gz]
+md5=9ea0265229fab492d4ec70d734e823f3
+sha256=ad5d912a4c726015e351981b5c71014f6cbd6b9d79d6b58d89ea8b4ffa31bb76
+
+[http://downloads.sourceforge.net/kdepimpi/kphone_pi_1.0.0.tar.gz]
+md5=90d1517db39d4e3f7934af566ea18fca
+sha256=a1b86dc2ef641bc644ff5a206b5e2d3a61dacf58c2c489e0669ba1d71d0534a0
+
+[http://downloads.sourceforge.net/kdepimpi/ktimetracker_pi097.tar.gz]
+md5=c2701d7f8e094b41aa5a7c771b981393
+sha256=204156fadfdefb31f6cbd3d0d7e5cb032af40c037a0682c75651c3191de09150
+
+[http://downloads.sourceforge.net/klimt/klimt-src-0.6.1.zip]
+md5=d12f56384b4ccde11cd756db2b14065c
+sha256=48ae508d72e453e2a1f5748870362259786b475548c545feaec1aea71d2f8fdb
+
+[http://downloads.sourceforge.net/lame/lame-3.96.1.tar.gz]
+md5=e1206c46a5e276feca11a7149e2fc6ac
+sha256=f4f093e371c999a2a079607b74582a8ef5c1c3c9b322e3e997a47c1ea2afe2a5
+
+[http://downloads.sourceforge.net/lcdproc/lcdproc-0.4.5.tar.gz]
+md5=c1e74364963054b26b2a77a37bd2bf36
+sha256=a2163b474d75dc87891c6a81ce9e89f0c9ceab7cbef14b50f066bf3508eec977
+
+[http://downloads.sourceforge.net/lcdproc/lcdproc-0.5.0.tar.gz]
+md5=4b67e421c19063fa322611a849ab5b80
+sha256=a7567f3f68517008e68d15b33630f36ba539540fbb361a2f9c440ce2ceb8393b
+
+[http://downloads.sourceforge.net/lcdproc/lcdproc-0.5.1.tar.gz]
+md5=ad13d6cce7a7e068d85a66d30285af95
+sha256=f459280eb4eeb70be584895364c97ffab22b888235b2351a31e1c87ca9710727
+
+[http://downloads.sourceforge.net/lct/console-tools-0.3.2.tar.gz]
+md5=bf21564fc38b3af853ef724babddbacd
+sha256=eea6b441672dacd251079fc85ed322e196282e0e66c16303ec64c3a2b1c126c2
+
+[http://downloads.sourceforge.net/lgames/lbreakout2-2.6beta.tar.gz]
+md5=41d6e0be4654b1716b1b3f5b53abf014
+sha256=3e406c76874827c236c7070c1349f8b4ee058aa664fc3066435c938bf6d5f0e8
+
+[http://downloads.sourceforge.net/libassa/libassa-3.4.2-2.tar.gz]
+md5=f619b4f01aeda6d5f2679be9dcec5a51
+sha256=ae2d5d228a1251666f9f80248178b40fb22513597cf78b976e4c3f15d8fc260c
+
+[http://downloads.sourceforge.net/libcdaudio/libcdaudio-0.99.12p2.tar.gz]
+md5=15de3830b751818a54a42899bd3ae72c
+sha256=5fdaf9af5ac4f75c0215d000b82b128fd054a582f81cc4f039a1e7fe69335ebb
+
+[http://downloads.sourceforge.net/libdbi-drivers/libdbi-drivers-0.7.1.tar.gz]
+md5=f11020119ceb7a6dee3969cb0589d4bc
+sha256=5ae76aff042249750437ab7e490ae7d9e19a10f0005cd9bb525106365998aca8
+
+[http://downloads.sourceforge.net/libdbi/libdbi-0.7.2.tar.gz]
+md5=308e5746a2d0804be1d638319ad7b9c0
+sha256=bd518b930f76c976bf693c247f0742d88808c776a2aeb51ab7830dedb0eb692d
+
+[http://downloads.sourceforge.net/libetpan/libetpan-0.46.tar.gz]
+md5=afa4abd73665e1a46b0510c4f4efa9a9
+sha256=74c81e8c29de3fda2e196ce7082a5ec35aad9399a6c7f67bb906b3c9d91dc6f3
+
+[http://downloads.sourceforge.net/libetpan/libetpan-0.48.tar.gz]
+md5=493de1bfc84c1e0f82fd865795e48ffb
+sha256=039861766d330b8ff2309334feb97d384e16d927dd859fdc0fad4c4a13d66b7c
+
+[http://downloads.sourceforge.net/libexif/libexif-0.5.12.tar.gz]
+md5=97e17fa05cb638eed5e8e59db431ed3a
+sha256=8daa7618787b3af2218eee9e074f90664bff5676896b997a760f8034383d70d6
+
+[http://downloads.sourceforge.net/libexif/libexif-0.6.13.tar.bz2]
+md5=1b1e2b495c5aa20c08725f30545a110b
+sha256=830802525700e65809afdd56ccdb5cd9950747044ab50666257bbb3d59a82754
+
+[http://downloads.sourceforge.net/libexif/libexif-0.6.9.tar.gz]
+md5=0aa142335a8a00c32bb6c7dbfe95fc24
+sha256=a2f309c702ee72967676d96b1a9d06806d069fde8e88076200cca6479c3d3c38
+
+[http://downloads.sourceforge.net/libgmail/libgmail-0.0.7.tgz]
+md5=804674b6c3efbf8a02f9a7f15a041897
+sha256=868b9320127904a96656a2852b602265f858c8d87116274836b1bdb9e3da5c42
+
+[http://downloads.sourceforge.net/libgmail/libgmail-0.1.3.3.tar.gz]
+md5=ebef72abd4fbccdad9291378ac625d9a
+sha256=24285b0d5d8ba33a900db27e8d2c55ae8bb0a0d5c753d01764978b83f4c70b5e
+
+[http://downloads.sourceforge.net/libmng/libmng-1.0.8.tar.gz]
+md5=d688ca879c934e9cde8b323cf3025f89
+sha256=321c2dc105dfbe61ddde859040c79dec65e4daef8fb44167484d1ce99119c14c
+
+[http://downloads.sourceforge.net/libnids/libnids-1.18.tar.gz]
+md5=9ee6dcdfac97bae6fe611aa27d2594a5
+sha256=b0275c914197a53c6ccf631eac756fd37ec6f2d8f09f15757061495cf9be0fcd
+
+[http://downloads.sourceforge.net/libpng/libpng-1.2.12.tar.bz2]
+md5=2287cfaad53a714acdf6eb75a7c1d15f
+sha256=7d06103ce32bffa39730d1c12c4b4dcfd50a8f1c18d2462807cfe7c0c3ca0e64
+
+[http://downloads.sourceforge.net/libpng/libpng-1.2.8.tar.bz2]
+md5=00cea4539bea4bd34cbf8b82ff9589cd
+sha256=9bec729a1e77d8bbc5800b14aa81f09290aa18daa40f344103f2c0d1d681531b
+
+[http://downloads.sourceforge.net/librsync/librsync-0.9.7.tar.gz]
+md5=24cdb6b78f45e0e83766903fd4f6bc84
+sha256=6633e4605662763a03bb6388529cbdfd3b11a9ec55b8845351c1bd9a92bc41d6
+
+[http://downloads.sourceforge.net/libsigc/libsigc++-1.2.5.tar.gz]
+md5=d0d1ffcae0eced97ef4f17ce0ba81352
+sha256=dcd6d3ea9a2c185b5286f80eefe9ac1402036b8fa21cfc742442d99579bd2b3e
+
+[http://downloads.sourceforge.net/libsigcx/libsigcx-0.6.4.tar.gz]
+md5=02e78c3cfbdb4be285d97653e563f65a
+sha256=bd55717374674ed69de46c13b52aaba0420d5c68582cac34d863e44f6f1d560e
+
+[http://downloads.sourceforge.net/libungif/libungif-4.1.3.tar.bz2]
+md5=8c198831cc0495596c78134b8849e9ad
+sha256=59e835a57e6df03e4d2253b2357253f3d13da9473ff465563a3b9833a744fc36
+
+[http://downloads.sourceforge.net/libusb/libusb-0.1.10a.tar.gz]
+md5=c6062b29acd2cef414bcc34e0decbdd1
+sha256=2f0ed0261074beaa6e060f9539c54017a3f3b4d2b272311e6cf60ba09c4aeadc
+
+[http://downloads.sourceforge.net/libusb/libusb-0.1.12.tar.gz]
+md5=caf182cbc7565dac0fd72155919672e6
+sha256=37f6f7d9de74196eb5fc0bbe0aea9b5c939de7f500acba3af6fd643f3b538b44
+
+[http://downloads.sourceforge.net/libvisual/libvisual-0.1.3.tar.gz]
+md5=e70e91d2e90831c0eb78944b6a9605ef
+sha256=fc04f2f2bae4b3eef7eb331330e2e3fd336d1894dbf4cae631c8b635622cdd52
+
+[http://downloads.sourceforge.net/libvisual/libvisual-plugins-0.1.3.tar.gz]
+md5=9c3012e7a648540ac8c7053a0801830f
+sha256=7f681c64c5940a757a636281915d170d715fc4936e294052957f635ea1af0d67
+
+[http://downloads.sourceforge.net/libvncserver/LibVNCServer-0.8.2.tar.gz]
+md5=17a18e398af6c1730f72068022a152aa
+sha256=f199f7558e6a071ae1ead06b9207c0819281b6b2094dcef6fc4201a4bdf8854d
+
+[http://downloads.sourceforge.net/libw100/mplayer-imageon.patch]
+md5=d605b6068b6c9aa2bc7550f49c60958c
+sha256=7e5e1768db0201981f90256fa94db3f09f23285ffd60dc60a51a753825084848
+
+[http://downloads.sourceforge.net/libwpd/libwpd-0.8.4.tar.gz]
+md5=0461d4bf2da534b4bed041b67d7f7064
+sha256=b6393088bf6c49b72a07d2aec7d84d14f6cab0ab00ad177c17157f03095f2096
+
+[http://downloads.sourceforge.net/libwpd/libwpd-0.8.6.tar.gz]
+md5=464a390c66511831821de81b887d3e61
+sha256=05a67a8b8d907ebcbac0e8505fc59fc50731ba9f73b8c177898ce41d0575bb17
+
+[http://downloads.sourceforge.net/lineak/lineakd-0.8.3.tar.gz]
+md5=fc1d3add18afbb8e61b8277b89c525c6
+sha256=cfde4a06df9fb4f26f8629d4ed3320ea813ba05a25217ec4ff55bbe5da04f504
+
+[http://downloads.sourceforge.net/linux-diag/sysfsutils-1.3.0.tar.gz]
+md5=d11c99271531be3c1e6d36b53968cd2b
+sha256=03e3dc79fd7b36266372de0d331d792c04d185e57495c6fb1d46a0ea0ed0b04d
+
+[http://downloads.sourceforge.net/linux-diag/sysfsutils-2.0.0.tar.gz]
+md5=b7857c045ef3b4810c9b8be965c05fb9
+sha256=d162ddc4f4a29c770549cb135da179e205480c065739dbe6c3c1bed6d84a3060
+
+[http://downloads.sourceforge.net/linux-usb/usbutils-0.70.tar.gz]
+md5=05276dc307a0297904bc892e9998bf59
+sha256=98d29c0c013debc32f1a17fd66f5e9248025959b07d13f1faba91aa5a1a9ba6b
+
+[http://downloads.sourceforge.net/lirc/lirc-0.8.0.tar.gz]
+md5=596e05980f75372fa998d50eb1dcade0
+sha256=4097abc39b928970ba3232942ac5a6db7ec4ed4164593b9223c90470c9c994dc
+
+[http://downloads.sourceforge.net/lirc/lirc-0.8.1.tar.gz]
+md5=5687331324ff5fc551f37ce419b2a926
+sha256=d701ba12a96d913fc963eb7e5cc751bbd12fefb921dae4e70c8549a43a108dd6
+
+[http://downloads.sourceforge.net/lmbench/lmbench-2.0.4.tgz]
+md5=eddf56af6f248812e3016a9e34b42bbd
+sha256=5a729a49ce591a58d241ac39979cb496ab30687556633782557196d2b262921e
+
+[http://downloads.sourceforge.net/ltp/ltp-full-20070228.tgz]
+md5=afd35e0770f28121a9f8d6093d20a62b
+sha256=bfc8cf4258574b48d33e9d622627db496e6533a469a6a87fd7ed76098dabb8a6
+
+[http://downloads.sourceforge.net/materm/mrxvt-0.5.2.tar.gz]
+md5=ed87b7dd9f4fb482de0f14f085085027
+sha256=558491d1f112362780abaf7429d14216e658b7768dd30f82f102ce646d3065cf
+
+[http://downloads.sourceforge.net/mediatomb/mediatomb-0.9.0-pre.tar.gz]
+md5=bd6bf1a44393ef96c490319606df70bb
+sha256=d48eca88957ba7c972a379321fb8165e67dae0e5a0039fe553183da1207b2ad6
+
+[http://downloads.sourceforge.net/mediatomb/mediatomb-0.9.0.tar.gz]
+md5=bfa110c41623ff689a60844430f91a34
+sha256=5876c28d5015c9a947ba87b5005e23d0eeaffd5de9eea2f321d6f42c8a71ed17
+
+[http://downloads.sourceforge.net/mesa3d/MesaLib-6.0.1.tar.bz2]
+md5=b7f14088c5c2f14490d2739a91102112
+sha256=2de039f7abe10569b681ea1d9e21fb65fd0081c8f4db40fb62b332acb11679fb
+
+[http://downloads.sourceforge.net/mesa3d/MesaLib-6.5.2.tar.bz2]
+md5=e4d894181f1859651658b3704633e10d
+sha256=137f50a30461d51eb9af5aac737bc788d536354cf47b26129b97bde6e41fb85f
+
+[http://downloads.sourceforge.net/mesa3d/MesaLib-6.5.tar.bz2]
+md5=61beda590bfc5b4a12e979d5f2d70d7a
+sha256=dcacf4c18af89b57e66dc7ba39e24c3b74ff6f83b8745bcc1390170a4190eebd
+
+[http://downloads.sourceforge.net/meta-tools/pytest-0.5.0.tar.gz]
+md5=984074d5d2ca0d6aafd770976e60b8d2
+sha256=b957b471779237e1f0adb578a59a7a3c07217d01e9525314c5e6c28c348533ef
+
+[http://downloads.sourceforge.net/meta-tools/pyweather-0.5.0.tar.gz]
+md5=b1539752674c3f955441339e340ea699
+sha256=a4fa2444a870ac70dfaddbb244aff0a4973c75c79b2eafe1a183567820eb4b79
+
+[http://downloads.sourceforge.net/metalog/metalog-0.7.tar.gz]
+md5=40940eb9829de7d5776b9bbd514f9d7e
+sha256=738f39e2bc4ff8a80a5f01f163b2dd30525466aca87b9791e140b9900402fe1c
+
+[http://downloads.sourceforge.net/miau/miau-0.5.3.tar.gz]
+md5=7f6a372f1f9371094d0dd433b89ec48d
+sha256=ebede057bf1c312182d069b958eccfafbb18fca4cbba0a41f0c5f35094cb15e2
+
+[http://downloads.sourceforge.net/modplug-xmms/libmodplug-0.7.tar.gz]
+md5=b6e7412f90cdd4a27a2dd3de94909905
+sha256=c80da366576501be18a987c28609bd8ffa340ed20fc03249c70c43634f077052
+
+[http://downloads.sourceforge.net/moin/moin-1.2.2.tar.gz]
+md5=4032f2305a3393ab18e02efe6550e1aa
+sha256=8447eb112e0e42db59e490fa98b0a1c9ed90ff3660b99734fe5119061eddce8e
+
+[http://downloads.sourceforge.net/motion/motion-3.2.6.tar.gz]
+md5=71e6bd13fcca70372e9b7c7806d62b30
+sha256=48c456dfcadec2db472320e317fa37dc697f184e12f99006a1ec0b6512d2ebcd
+
+[http://downloads.sourceforge.net/mp3blaster/mp3blaster-3.2.3.tar.gz]
+md5=0d892d7c99df175eb0efb2bc31086285
+sha256=6dae6f0a018010fbf65985eb03684c3da8ef5024edfc80cace22162377c96f2d
+
+[http://downloads.sourceforge.net/mpg321/mpg321-0.2.10.tar.gz]
+md5=bb403b35c2d25655d55f0f616b8f47bb
+sha256=db0c299592b8f1f704f41bd3fc3a2bf138658108588d51af61638c551af1b0d4
+
+[http://downloads.sourceforge.net/msmtp/msmtp-1.4.10.tar.bz2]
+md5=38c63aae762d5a31c5f6f5e58961cb52
+sha256=30261e2f1ab064e089784578e0c63f31d5696a198db5f6ec793776ce70ccddb3
+
+[http://downloads.sourceforge.net/mt-daapd/mt-daapd-0.2.1.1.tar.gz]
+md5=87356d2750ad82388a58d901aa566465
+sha256=92d9abd2d0cabaea198b9434100ebf1d5524283de8df02b0f04d907b2274959b
+
+[http://downloads.sourceforge.net/mt-daapd/mt-daapd-0.2.2.tar.gz]
+md5=e5aee70f66d383f37ef650941cd7703d
+sha256=5e06d8ed89ba98092c2cda16ecd9cdfeaa08b6c0e77ac459f49ae6e5dd64d639
+
+[http://downloads.sourceforge.net/mt-daapd/mt-daapd-0.2.3.tar.gz]
+md5=17aa3fa0601cbe172d18f53489141e5a
+sha256=17e3966a9da7acb0560af1d2c1a5c0162da8e01de195aa096d594ab6248c4930
+
+[http://downloads.sourceforge.net/mtpaint/mtpaint-3.02.tar.bz2]
+md5=828013176f135fc24ffdf16a011c51e6
+sha256=991a1376dc23d0663d45b3b395c0e5c5542fee3906a120889583d67f854f5206
+
+[http://downloads.sourceforge.net/musicpd/mpd-0.11.2.tar.gz]
+md5=b6e913dc4b63b161bb1b96030763c3a7
+sha256=e784f78b3cce93367c105619c690465b78a88d3e4c616cc829f4cb5e66f2bbe0
+
+[http://downloads.sourceforge.net/musicpd/mpd-0.11.5.tar.gz]
+md5=1a9a1a9d31f00a43838b3752024f7ebe
+sha256=30e454514ef84f65162182b7cbcd0e46fdda4c99111ac500b5b2df7678ca10fd
+
+[http://downloads.sourceforge.net/mysql-python/MySQL-python-1.2.1_p2.tar.gz]
+md5=e6b9ea21fd91cb4a5663304da727bb70
+sha256=59f44cd53cfa1189dcaa5bf2c48662d5765f347b03827feb807f4cd0ef18943e
+
+[http://downloads.sourceforge.net/nasm/nasm-0.98.38.tar.bz2]
+md5=9f682490c132b070d54e395cb6ee145e
+sha256=87e64eff736196862ed46c04a3dffa612d765df980fa974fc65e026d811bd9d0
+
+[http://downloads.sourceforge.net/nbd/nbd-2.8.7.tar.bz2]
+md5=bc7995b4961385269abc645575bcaf4d
+sha256=a69d1690ad587d81b85c34d1ef9bf47abf0ba21dc96876d95dd6a9a193a859f1
+
+[http://downloads.sourceforge.net/net-snmp/net-snmp-5.1.2.tar.gz]
+md5=8080555ab3f90011f25d5122042d9a8d
+sha256=1fca69e934c3d526e308450cc5af2478d440e012922dd0bb10388fcf093ef32e
+
+[http://downloads.sourceforge.net/netcat/netcat-0.7.1.tar.bz2]
+md5=0a29eff1736ddb5effd0b1ec1f6fe0ef
+sha256=b55af0bbdf5acc02d1eb6ab18da2acd77a400bafd074489003f3df09676332bb
+
+[http://downloads.sourceforge.net/netpbm/netpbm-10.28.tgz]
+md5=18ed6d0f1adf75a748df55d5e924fabb
+sha256=e42d3b3f30de0c1ad0a86aa039b35cf2bf64c7f64c29ee333cbf934784639973
+
+[http://downloads.sourceforge.net/nfs/nfs-utils-1.0.6.tar.gz]
+md5=f17e9983457e1cf61c37f0be4493fce6
+sha256=aa99fcb016971290f9a871331eed60150ebdd84785dda1b252556a54760b97bf
+
+[http://downloads.sourceforge.net/ngrep/ngrep-1.42.tar.bz2]
+md5=35e821cfd888e9523a90fb7e5074a072
+sha256=fd5a85b48613452fbfc9ce6d6e3fa3f37992731422eb2843235fbf4e02d6f1e9
+
+[http://downloads.sourceforge.net/nogravity/rt-nogravity-data.zip]
+md5=c7536e907363ea1da63430b49e42931d
+sha256=d7d5a3d17f492049fceb2b9ea22c4c2af7243506219d83f7005b77ae410add29
+
+[http://downloads.sourceforge.net/notecase/notecase-1.2.6_src.tar.gz]
+md5=0b8b1a58bfdb60fa41df46771a464b82
+sha256=a99b07c2193eebeb766bc422dd2ebba6649680457d58a4f5a86f2567ce49b3fa
+
+[http://downloads.sourceforge.net/ntop/ntop-3.0.tgz]
+md5=1ec6055c75f1acbb5d5600492481ef85
+sha256=c50cdf2c6cf7309f88c7ec0a56158eca76c80532502b36f3378eeca433423d83
+
+[http://downloads.sourceforge.net/numpy/Numeric-23.7.tar.gz]
+md5=8054781c58ae9cf6fe498316860b5ea8
+sha256=33225097777e84dfed251aee1265a9c0dd0976854e83f60e778a670027b12e7c
+
+[http://downloads.sourceforge.net/numpy/numarray-1.1.1.tar.gz]
+md5=40cec6ce8ca2e95a4fbc7a28879bf4a5
+sha256=7a6f7f2745cbcb02bf79cc7cd365a3f80679f2558dfaa378010675f40a7aff3b
+
+[http://downloads.sourceforge.net/omniorb/omniORB-4.0.7.tar.gz]
+md5=9d478031be34232e988f3d5874396499
+sha256=e4c0875794a74ac627b7b74b6098e75c8413bd156856dc434a49c4c112a68af2
+
+[http://downloads.sourceforge.net/opende/ode-0.5.tgz]
+md5=b33b21e04ee9661f27802b6b6c8eefd2
+sha256=5388c4cd4666f270f18216c90ab6526229c53fdc7e82f93ddb0824e69521df1c
+
+[http://downloads.sourceforge.net/openjade/OpenSP-1.5.tar.gz]
+md5=87f56e79ae0c20397f4207d61d154303
+sha256=987eeb9460185950e066e5db3b5fa531e53e213742b545288405552a5a7bb704
+
+[http://downloads.sourceforge.net/openjade/openjade-1.3.2.tar.gz]
+md5=7df692e3186109cc00db6825b777201e
+sha256=1d2d7996cc94f9b87d0c51cf0e028070ac177c4123ecbfd7ac1cb8d0b7d322d1
+
+[http://downloads.sourceforge.net/openobex/ircp-0.3.tar.gz]
+md5=a77124e7efa6b31369404371485179b2
+sha256=729da519ffeb604ac0b9b6c6d8123a3fdf17956134e105c04778f13c4d4ce4ae
+
+[http://downloads.sourceforge.net/openobex/obexftp-0.20.tar.gz]
+md5=085b9edc0504c0d79e7479a54e2018c5
+sha256=7246fc75257afcd30ff16dc70185057157bcefc12fa9fba111b3b201577cc40e
+
+[http://downloads.sourceforge.net/openobex/openobex-1.2.tar.gz]
+md5=c92746ae7bd69255c2c41f51e9349c65
+sha256=501c611a73d2f7d8a3de5ef83202ff3f9ab21d2c467e39548737e344b085f931
+
+[http://downloads.sourceforge.net/openttd/openttd-0.4.0.1-source.tar.gz]
+md5=ddd9790c86b7ccc68f60761704cbcf81
+sha256=56e844da580761ddbb580683fc455a8d9eb3179df631568c26b7188d1ff16363
+
+[http://downloads.sourceforge.net/openvpn/openvpn-1.5.0.tar.gz]
+md5=55d7ce958bb2ccf3d3204d1350c27179
+sha256=d34d0a1a29de12cbb4fc6f8d80eced7b674ee3574e3df3d678fb0467283f7826
+
+[http://downloads.sourceforge.net/openvpn/openvpn-1.6.0.tar.gz]
+md5=9eab3719b280a12d19ef1fda286cc363
+sha256=22072a24bcaef8038a1e84363f3e209f65eb7c7ab37741752172a334acb31fb8
+
+[http://downloads.sourceforge.net/oprofile/oprofile-0.9.2.tar.gz]
+md5=9af4e1e1aab89131516736bb60e9efba
+sha256=4b3780ee09efe665a69151c994e0e5f01a56c57338660c18df30916904df83a6
+
+[http://downloads.sourceforge.net/orinoco/orinoco-0.15rc1.tar.gz]
+md5=fb2b24560c993aba6a6badfdc5e666a6
+sha256=78b6313164702e2907ea0f746e5cff443c82a16433c3b4f62831ca5755f451e9
+
+[http://downloads.sourceforge.net/p3scan/p3scan-2.9.05d.tar.gz]
+md5=7f54ae7ebe9adbefc2a2ad55c62589da
+sha256=2c23dac41ef0ec0b74b38c4c1dc4b0f6f21386c97a0062a745a2896cdf026e8d
+
+[http://downloads.sourceforge.net/pcmanfm/pcmanfm-0.3.0.1.tar.gz]
+md5=ac676498175495a37bef0b41bca9ace9
+sha256=1f7dec1a275774cb6eff9a491b74bbea7a2276140d640c15ed260c798c8334ed
+
+[http://downloads.sourceforge.net/pcmanfm/pcmanfm-0.3.2-beta.tar.gz]
+md5=a0843bc54c60aac63cb04b55a6766402
+sha256=f840326e6d6569444adf1d1c5d0fb8e93e7d16f0ef71dca4b1eeefddab8282c5
+
+[http://downloads.sourceforge.net/pcmcia-cs/pcmcia-cs-3.2.8.tar.gz]
+md5=0d6d65be8896eff081aee996049afaa5
+sha256=ef93921e8555862df4c24b1c357430ff3d5ba1d3b6b7e324862ea37b511270c0
+
+[http://downloads.sourceforge.net/pexpect/pexpect-2.1.tar.gz]
+md5=fd3d67ac085332f074cd665424dcd631
+sha256=d986dcbd954435e0ba78aaef391106c71a9b548a1cbd29cfb4eec3cb8c841313
+
+[http://downloads.sourceforge.net/plone/Plone-2.1.2.tar.gz]
+md5=863311e29550f9b4bf6c2502fdbed1fa
+sha256=e9c0b53d887b53310daab656ef83b0abecdde39b679806a0f04f3cda222fbac2
+
+[http://downloads.sourceforge.net/poptop/pptpd-1.3.0.tar.gz]
+md5=75d494e881f7027f4e60b114163f6b67
+sha256=4f6fe4eb08ca7a69c83658ab13b23a77aa153ec1a2663596ddcbbf35768b0cee
+
+[http://downloads.sourceforge.net/poqetp/poqetp_0.0.6_src.tar.gz]
+md5=b003614237445d23b512cb9571565524
+sha256=4347a70fe84bd2ccecc90738fb121d28298cf0bfdb4963ceee088c56d3109899
+
+[http://downloads.sourceforge.net/portabase/portabase_1.9.tar.gz]
+md5=3319e8eff133de0bc9e8fe810e052202
+sha256=6b3d91811b098fb9e1a0f91d11a6c935c2d7e41d4431f022023d606d270fe0fc
+
+[http://downloads.sourceforge.net/pptpclient/pptp-linux-1.5.0.tar.gz]
+md5=281ee37788bdf3260426eca56a9af858
+sha256=a2a10abcdfcfbd7da0ba173d2996d6555908069108d59296bf3e1c5c48b5be60
+
+[http://downloads.sourceforge.net/prboom/prboom-2.2.6.tar.gz]
+md5=ef0abe0aad017514857552434b5c6aaa
+sha256=200d3c50b082ae46be8c014bb576b4e2d23b1704508fd528c47e3e2b3b04759e
+
+[http://downloads.sourceforge.net/prboom/prboom-2.3.1.tar.gz]
+md5=c53231604fe6cf7352e73911ad44c90d
+sha256=6465b37ef96c04d95dcb887f907da1af43a33783e8c5e80527bceda97202876a
+
+[http://downloads.sourceforge.net/prismstumbler/prismstumbler-0.7.2.tar.bz2]
+md5=3ef1bf7bfa9a144013155a144aaaa091
+sha256=3a568fbb3a68238d79731bcf933602171bb8d7d51226a7af722d357ab7d2a96b
+
+[http://downloads.sourceforge.net/prismstumbler/prismstumbler-0.7.3.tar.bz2]
+md5=3232b2a12136c6ec097bb2544cd7ab16
+sha256=57c30824fc0fb901545e888f2cdefd7f2e848a698d5ac724e1a7701245e63b68
+
+[http://downloads.sourceforge.net/psmisc/psmisc-20.2.tar.gz]
+md5=f0d40e38a150ee31123362e7c50bcf9d
+sha256=e2592a857ccc2b5ad6f327ce2acc7b5a0874ec10755476aa2cf6bfa054230214
+
+[http://downloads.sourceforge.net/psmisc/psmisc-21.8.tar.gz]
+md5=d6276e071c10ddf4b0d98856e5573e1a
+sha256=495463860415171d9019798ed4fdf5848ffe93f8a380662a39dd2690a04717ed
+
+[http://downloads.sourceforge.net/psmisc/psmisc-22.2.tar.gz]
+md5=77737c817a40ef2c160a7194b5b64337
+sha256=6bca237485a352362133792e000a3c8e367a26b0312c5c607db7c2a97717d15f
+
+[http://downloads.sourceforge.net/py-xmlrpc/py-xmlrpc-0.8.8.3.tar.gz]
+md5=d2aa74615aa9cf23413975a68613ffc1
+sha256=12527f130dd695184c44c6197deb619c26c9b5b31ce7699a5dd97e0ad2dd7bd1
+
+[http://downloads.sourceforge.net/pychecker/pychecker-0.8.14.tar.gz]
+md5=531214b2c922462eb57dde5d37f004ac
+sha256=4c8601f11112b7fce53634f65140da171d85fc1e1004d0be6d5120848eedcf77
+
+[http://downloads.sourceforge.net/pygoogle/pygoogle-0.6.tar.gz]
+md5=334e2d9e5a765ffa9769e2c4cdfcd110
+sha256=ad3f4530977a15e52b379ef301a4a80cf69a883f24dd6cebc5b47b3009c092a4
+
+[http://downloads.sourceforge.net/pyid3lib/pyid3lib-0.5.1.tar.bz2]
+md5=49818a591430e08057c27a11e4c40aef
+sha256=2a7bdd52c24ed0e70e4a2d82c697214c4ab5a70f94ea9e7934df15ca202d1169
+
+[http://downloads.sourceforge.net/pyirclib/pyirclib-0.4.3.tar.gz]
+md5=b9d60e69314a548dfd7d48da3d540d62
+sha256=1615a543e645dd2199f6315d606dcc561373d64d1d7dfc74aba2246a67632808
+
+[http://downloads.sourceforge.net/pylirc/pylirc-0.0.5.tar.gz]
+md5=4e3b6b50485610e273fededdb25b47ad
+sha256=a78315e1ddf5af61cf91000a4b2f8e2df0841edd97b2596b2e0c5505bf8330a2
+
+[http://downloads.sourceforge.net/pyode/PyODE-1.0.0.tar.bz2]
+md5=cc88fde823368d6c7843491cc5b4399e
+sha256=d349f65afa841ebeaef7176a26613ff43f9c68857852ab70296b23760720c11b
+
+[http://downloads.sourceforge.net/pyserial/pyserial-2.2.zip]
+md5=14e774b7b6e5aa52820f0590d3b8c4d9
+sha256=f37c49e29ab9efae5f0ee5004ed34da00436cc0a99810ac4aae53bacec12ab12
+
+[http://downloads.sourceforge.net/pysqlite/pysqlite-1.0.tar.gz]
+md5=f21b19ff048f6bafbbfc3edb86b4c4e4
+sha256=ca921f56f8e5aa4032abc25b13cf4c86bf5ba24f631c13dc4f511c45d3781dad
+
+[http://downloads.sourceforge.net/pythondialog/pythondialog-2.7.tar.bz2]
+md5=19e68b362fe61ef84b981d53d96f0735
+sha256=5f7dbcbd28eebadc736d957b9511a87ad5570c8fc822c8123a42e7259773cb7f
+
+[http://downloads.sourceforge.net/pyvisa/PyVISA-0.9.7.tar.gz]
+md5=706eae231519d9298c399c3b4878cc2a
+sha256=ff60b2c6d307022e223d1460825cfcd313b323669143e14a526f6083c7c5a8c1
+
+[http://downloads.sourceforge.net/pywebsvcs/SOAPpy-0.11.3.tar.gz]
+md5=dbdcafe76f73dffaa6948b026607d51b
+sha256=a4a0984583c32fbf69e6f9495590b9e0c8a2a4aa42cb83f20b63a75208590845
+
+[http://downloads.sourceforge.net/pyxml/PyXML-0.8.4.tar.gz]
+md5=1f7655050cebbb664db976405fdba209
+sha256=9fab66f9584fb8e67aebd8745a5c97bf1c5a2e2e461adf68862bcec64e448c13
+
+[http://downloads.sourceforge.net/pyzeroconf/pyzeroconf-0.12.tgz]
+md5=e7180e9440d961c6aba5056fdd7997f0
+sha256=00689fa56dd87eb47b30565ab7561c94d2cde58372e267116889d2531d880b98
+
+[http://downloads.sourceforge.net/qof/qof-0.6.0.tar.gz]
+md5=4a81867ea4212cb5ebd2a6bde91502c0
+sha256=5782703fe0cbed713dc17ed10560f55408350310461483715b2c0a58bcd83c49
+
+[http://downloads.sourceforge.net/qof/qof-0.7.2.tar.gz]
+md5=dff6bfda556544a240e833d22e509b50
+sha256=643359de7833c9fe661fcfc6fc0dc6e3f390bce55041eba123a495e661366990
+
+[http://downloads.sourceforge.net/qpdf2/qpdf2_2.2.1_20040217b.tgz]
+md5=6b94eda9bd8e2b884c753d70fee04b3f
+sha256=3378f7a92f3afbc3663cce8c99790092282eb01101ba21aed4709736cf875ad5
+
+[http://downloads.sourceforge.net/qpegps/qpegps_0.9.2.3.3_src.zip]
+md5=974ff064b13640329da21f565ac351e6
+sha256=5b070799c3eebf1dd94b1d800da0d532d2e9c353e061d4addc3466232e4a3072
+
+[http://downloads.sourceforge.net/qpegps/qpegps_0.9.3_src.zip]
+md5=2e477f949ee47f446c05e718fae4ec3b
+sha256=12b7f014e9ac0b650836ee9e54f58bd728c66591b7de94a9a8bd600bfb217622
+
+[http://downloads.sourceforge.net/qwt/qwt-4.2.0rc1.tgz]
+md5=142b10ab27e837c3c4603cf9a7e9343b
+sha256=3b6db68d53441119dced27e5bad26ec087294cb9d878d37bcea61e1f1e4849a1
+
+[http://downloads.sourceforge.net/radlib/radlib-2.6.2.tar.gz]
+md5=e3a4b94c4c70b66accb018fdd0e93209
+sha256=fff54e79937babd9e519f2f56c60e15eee6c453cba9ad2d238154d6fc96450bf
+
+[http://downloads.sourceforge.net/rdesktop/rdesktop-1.3.1.tar.gz]
+md5=968a1e3f5161bab80c306df31c54cfb1
+sha256=67332a0a16471c1c3592d3e51ae5cc0562f9a2f1b1ab942b493f7d5080bd2c33
+
+[http://downloads.sourceforge.net/rdesktop/rdesktop-1.4.1.tar.gz]
+md5=78dd2bae04edf1cb9f65c29930dcc993
+sha256=db3da6016ceec07efda277adcb175b14c4e5255b0f85137f4a1dce79b0ee5144
+
+[http://downloads.sourceforge.net/rdesktop/rdesktop-1.5.0.tar.gz]
+md5=433546f60fc0f201e99307ba188369ed
+sha256=5ead17c3d29cb1028aeca485ee7a8c65694c1b02a1b7014c3da920b265a438aa
+
+[http://downloads.sourceforge.net/re-aim-7/osdl-aim-7.0.1.13.tar.gz]
+md5=925eb6675ce86cb011699f38468a1fd1
+sha256=52d87bcb19fef6360d2e36274c2b5fe512e8427550eae04c5fa897ee77d34273
+
+[http://downloads.sourceforge.net/refdbg/refdbg-1.2.tar.gz]
+md5=ed807a83455b8aaff5e894e94161a352
+sha256=0b8591a646d214f0f959483dfcd9b9624996790d546982d814b47ca8fe4c5725
+
+[http://downloads.sourceforge.net/regina-rexx/regina33.zip]
+md5=600da451b706c4f24451299e348da555
+sha256=74f1521cc613855d26881c7b46fe72b59dafdf377cf26ec9d4f064979039a27f
+
+[http://downloads.sourceforge.net/rox/rox-filer-2.5.tar.bz2]
+md5=56e6a29f2dbdf11d6f4b74a3f03ff959
+sha256=d91120d78e770c9c09822560dacb42fca641d092cbe52064ca7232f089062921
+
+[http://downloads.sourceforge.net/rt2400/rt2570-1.1.0-b2.tar.gz]
+md5=f4131d670920a878b4d4a0f5d4d8b93a
+sha256=a677291149687339396fed06c46cc08fd76fcb62d0f4459cae02c6cf54b4eb39
+
+[http://downloads.sourceforge.net/sc2/uqm-0.3-source.tgz]
+md5=6abcdc3caf7efd3bd978332743ee7568
+sha256=e42ac3b45c1c8a3199bbd9b666e9225d76bc18d902339c54cbb4df3a75909e53
+
+[http://downloads.sourceforge.net/sc2/uqm-0.5.0-source.tar.gz]
+md5=9002b1bc2de9285588dd97b618a867a7
+sha256=bdb715784bf0c94825cf40f97c60a5ec83fd3e17e9e186a78cd145781c4d9804
+
+[http://downloads.sourceforge.net/schrodinger/schroedinger-0.2.0.0.tar.gz]
+md5=45f8d0efd9b76579a005e4ffe7f96ac3
+sha256=0b01f9fb9c869ecb6e066993d59e34789f82d445438480ac0e2dc30f29d047a0
+
+[http://downloads.sourceforge.net/scigraphica/gtk+extra-2.1.1.tar.gz]
+md5=1a933ca1286829383a0554cc2deb9e04
+sha256=82d179fd2eb3fd5acbc9fc4d74507c559c6bc3269c488dc8642f9bca47a5dbe4
+
+[http://downloads.sourceforge.net/scons/scons-0.96.90.tar.gz]
+md5=2dba56d8b7c3ecc6a36a26abb457d1b9
+sha256=2632398044dc6cb3d49b8760bfb0b878445daaa415af419d6d6a09eb7e423c31
+
+[http://downloads.sourceforge.net/scummvm/scummvm-0.6.0.tar.bz2]
+md5=efc4207a7f10b24e9fc5afa10ed9c455
+sha256=ac22ad70ad6f88c7c8450bc06ba38602331c7470abcafb9e7fe62bfb505b1a3b
+
+[http://downloads.sourceforge.net/sdcc/sdcc-2.5.0.tar.gz]
+md5=c572e7842fe36348f5b2972c1025a75a
+sha256=138d2e59569f76f1a5d35bd5d85e7006eeebc4f48cd3dac902e2824ed50c3d80
+
+[http://downloads.sourceforge.net/shfs/shfs-0.35.tar.gz]
+md5=f250003d998daea29af6bf81b5e7a1b4
+sha256=34cfa1df400b07d553488a3ab24bc445127b44fb2e8e6f4868f34ce9b3a7c3b8
+
+[http://downloads.sourceforge.net/slotsig/slotsig-0.6.tar.bz2]
+md5=dfe9f5d3f17075ec23eb923899ac5f24
+sha256=124499d3c5d2d44ab07b60c235547079044f3728fd3c907987900e270bd947f8
+
+[http://downloads.sourceforge.net/slrn/slrn-0.9.8.0.tar.bz2]
+md5=47e9931771114ba192356a0473e9649e
+sha256=b97ea8385c4c9db64d69a84fcf87e5ffd98239932c88ff19f2e4c107ae24cdb2
+
+[http://downloads.sourceforge.net/smartmontools/smartmontools-5.33.tar.gz]
+md5=53f6861a916169a88a9edb1848e27dd0
+sha256=2fdde1b4e610cd6e004db8f98ac1100fcbea03b8f11e236de536ce22bc6c620d
+
+[http://downloads.sourceforge.net/smartmontools/smartmontools-5.37.tar.gz]
+md5=4ab3668b7d1362ce923f64a211e0e568
+sha256=2984645b207c52ea9b8ef3951af8bd0c5aab469607fabf63ade05f8fe87309c1
+
+[http://downloads.sourceforge.net/smooth-engine/gtk-smooth-engine-0.5.8.tar.gz]
+md5=7b4aebf85040b357124de926807dc22a
+sha256=cb2b353839a7f1dcd8f93a6cb32b5c54a6fe560dee432585edb2f5eebe526c50
+
+[http://downloads.sourceforge.net/sofia-sip/sofia-sip-1.11.7.tar.gz]
+md5=09d027ee9817cc1a1b8c0e96271bade4
+sha256=328531d0f522a207a9721223c92b823643af5c82e5958fc5e9c945ea36ddafd6
+
+[http://downloads.sourceforge.net/sox/sox-12.17.5.tar.gz]
+md5=53a3ebe3da0f5845770fd99e2ff0a965
+sha256=9efdc359ccc15af51edc33ead837f0820d353165c633cbe8c86f65ff0d3be30c
+
+[http://downloads.sourceforge.net/sox/sox-13.0.0.tar.gz]
+md5=0243d62895caee558b5294d5b78cfbcb
+sha256=c66c52cfa42fe126592563c3d8974007a9858bd35d2c1136389a721eeebb9f8e
+
+[http://downloads.sourceforge.net/squashfs/squashfs2.0-r2.tar.gz]
+md5=0b7fcaab8e634ae2385984885c731082
+sha256=353b768294783959219f1203e76c128fb4c75fa37f3a3bb139603c5db55c6974
+
+[http://downloads.sourceforge.net/squashfs/squashfs2.2-r2.tar.gz]
+md5=a8d09a217240127ae4d339e8368d2de1
+sha256=750a7a4896d782698a0f531ca30582f0ddd365fe317a04c4dd4fa1ce2eb053eb
+
+[http://downloads.sourceforge.net/squashfs/squashfs3.1-r2.tar.gz]
+md5=c252e5286b142afa54ca49829c51a33f
+sha256=ec3159feae5324e78f7fc09f8f534bd6a3e7ed735144ee8a8e9e7871e77115e0
+
+[http://downloads.sourceforge.net/strace/strace-4.5.11.tar.bz2]
+md5=28335e15c83456a3db055a0a0efcb4fe
+sha256=9de428477d4d3f383d58c2f16b2544da2a5ec0acc50ee90ecb81dfe38f56edb8
+
+[http://downloads.sourceforge.net/strace/strace-4.5.12.tar.bz2]
+md5=c9dc77b9bd7f144f317e8289e0f6d40b
+sha256=d8d9d62f0ebab71fab62b5ba7eaddd8bb8df9b7f4988b4a8e0d0724662702acf
+
+[http://downloads.sourceforge.net/strace/strace-4.5.14.tar.bz2]
+md5=09bcd5d00ece28f8154dec11cadfce3c
+sha256=a6808914cbfead2595dfd061a0f14dcbb0a8bb645e3cfdfa5c247d7ded9e0e7d
+
+[http://downloads.sourceforge.net/streamripper/streamripper-1.61.10.tar.gz]
+md5=2d62a4546521980e1ed705a5094a6ec3
+sha256=08ca63620c1c071f4b2d42c5f63f38cee920aa57cde151ac3cfcf344437e3f11
+
+[http://downloads.sourceforge.net/streamripper/streamripper-1.61.3.tar.gz]
+md5=57cd09098917bda29f841d366649681c
+sha256=1747aee9fa4cc09b49e0fb14baace3293f8f870c0de27fd3550cde21d99e9cd7
+
+[http://downloads.sourceforge.net/subapplet/subapplet-1.0.8.tar.gz]
+md5=6042daa703d8bd34174b195843e7ffaa
+sha256=4cc4cc703bcd4da0df25e7b87b082bd9d1c836868bc4641b3c960931582dc3d2
+
+[http://downloads.sourceforge.net/subapplet/tasklist-105.tar.gz]
+md5=dc62a061d83cf72d1eca7e8ae2c8e1a6
+sha256=4078c44beebfd298995983b9e2ea189167a1ab081d96a7c485a67b65a974e878
+
+[http://downloads.sourceforge.net/super-tux/supertux-0.1.2.tar.bz2]
+md5=7c10acf574f09ae5cb9eb2a4b9bf93ff
+sha256=8f2275d9667909d3418213522d5d4ef3312c158190429062f79da6b982b9ce6b
+
+[http://downloads.sourceforge.net/supybot/Supybot-0.77.0.tar.bz2]
+md5=6d53a2a9901549d52fecfafb0012134b
+sha256=6fd69febfd804437a9d5b610502c6d3c2caabef7a4832a3bcac2357515adaa71
+
+[http://downloads.sourceforge.net/swig/swig-1.3.29.tar.gz]
+md5=44c6f6d8d724cf7fa4a5109e6f63c9b1
+sha256=68b1b032cdc6297f068ef8c3c09abdd46a08512e17705d477cc0bf7b80a550e8
+
+[http://downloads.sourceforge.net/swig/swig-1.3.31.tar.gz]
+md5=4a0bae63e3713e89b26db7209b6a7e05
+sha256=c2ad63095e34b4a474e7ff4adb6ea8b7ab238bb5738d00a739102bb8bb71d805
+
+[http://downloads.sourceforge.net/sylpheed-claws/claws-mail-2.7.2.tar.bz2]
+md5=079f167fba6e17ae2c688a0dae858b0f
+sha256=a47a079f583581c2d049195f12a26524390e272c820b2c7233a37582e887a5b5
+
+[http://downloads.sourceforge.net/synergy2/synergy-1.2.7.tar.gz]
+md5=da9effc847d13f9725b6db043d8283a5
+sha256=567a50863c04dc9ccf5def3c62bb9f0494e995357620603dd00bbe035ca7500e
+
+[http://downloads.sourceforge.net/tapioca-voip/libjingle-0.3.10.tar.gz]
+md5=7ee7d8c834f1e06093130a86cbb9e79a
+sha256=3453c1426fdc06b32bc5f4e7d3ce039ec7f38f0fa4018d505e515099b209dd25
+
+[http://downloads.sourceforge.net/tapioca-voip/tapioca-0.3.9.tar.gz]
+md5=e88c400394c092c2688bb2d490c80ccb
+sha256=fb89ac4e8578adc140e19cb4929b200d2898e5a8373230f500c16e59c803cba1
+
+[http://downloads.sourceforge.net/tapioca-voip/tapioca-xmpp-0.3.9.tar.gz]
+md5=8d810351eb5b30e70b202e067da450c1
+sha256=51dd2ecda515e5872971cf80216915492686f5a5c9745e12ba1b3c5aec826fce
+
+[http://downloads.sourceforge.net/tapioca-voip/tapiocaui-0.3.9.1.tar.gz]
+md5=2b0fc6997e793784763fe23c81a4986f
+sha256=d83dca75ba6088c90b993de9d30b4b0d3189e5efa84151c16d55ef0ec072c38a
+
+[http://downloads.sourceforge.net/tcl/tcl8.4.11-src.tar.gz]
+md5=629dfea34e4087eb4683f834060abb63
+sha256=8dcfa54b58a6aaf4853fc27752c25d6c2592c485952b2fad25a9bea4b52bed33
+
+[http://downloads.sourceforge.net/tcl/tk8.4.11-src.tar.gz]
+md5=408e34fe8a1cec497f98f05bbe89b348
+sha256=8475bb2ff42f5f162de6825c8c700fd61bae7b629de3e0aaf95cb54a224220ba
+
+[http://downloads.sourceforge.net/tcpick/tcpick-0.1.22.tar.gz]
+md5=77b991a686e83cb716fd241aaa6ea432
+sha256=db19142fd2ca6218ead04fb3144b1640e2ad5a1c784a4e790c8816a37a79ac2e
+
+[http://downloads.sourceforge.net/tesseract-ocr/tesseract-1.0.tar.gz]
+md5=e3bc57773a60134ef37e9f06fe541108
+sha256=6fc9e28a574bf22028249e9a12e033c8bee0aeccbf90621238a6f538e60e7d60
+
+[http://downloads.sourceforge.net/tilp/libticables-3.9.2.tar.gz]
+md5=354675bfbd881082a9447efde9935226
+sha256=1c091859f09d5a38c76f0d64a93db46aa2b5d637c8a7370d348f21e7be324c37
+
+[http://downloads.sourceforge.net/tilp/libticalcs-4.5.9.tar.gz]
+md5=8e93f2a4f4e67a9558d97166b4a4155f
+sha256=d9bc0f2f19eb8d21d8319a40dd85c2b1ef45a01499187a424a50173bbdd4ff12
+
+[http://downloads.sourceforge.net/tilp/libtifiles-0.6.5.tar.gz]
+md5=cfac4188328b888e80995f0ef3f6e0bf
+sha256=2216944bee1bafe60bf64ec01f6b8cd27ed9adfd2d1a185b43617d6e80d8b2c8
+
+[http://downloads.sourceforge.net/tn5250/tn5250-0.16.5.tar.gz]
+md5=2f9ef4509198e96bb184577fdddfce6d
+sha256=794687ae1b34aba9a3cf6f9b118d0ba91b8f83858fe92a9ded0611225db3ca0e
+
+[http://downloads.sourceforge.net/transconnect/transconnect-1.2.tar.gz]
+md5=c255ff48387ea6a7092707ba992237e7
+sha256=47d6cc44f78fc6d4cdb1dfee02fe6e0f4d8aae0ce2e3e92567667f0475736617
+
+[http://downloads.sourceforge.net/transconnect/transconnect-1.3-Beta.tar.gz]
+md5=50f75731e610fce00803cc7d98b301fd
+sha256=404df2c479517020290be9847191523c1fcbd3e929e8bb1191a7832209d04af8
+
+[http://downloads.sourceforge.net/u-boot/u-boot-1.1.2.tar.bz2]
+md5=f10b6954498bab5d08d0f50de381af50
+sha256=4f32cfd01f0678080f8e98009ba99ce37f1261d842e3af9a6b3add22005a80ca
+
+[http://downloads.sourceforge.net/u-boot/u-boot-1.1.4.tar.bz2]
+md5=096cac66046326659b97eeded007ec73
+sha256=1af9d68adfe044cb8fe1b3efa5b661c4cb57edf90f4a8daf38f0fc19692677a7
+
+[http://downloads.sourceforge.net/u-boot/u-boot-1.2.0.tar.bz2]
+md5=17aeee76ca4c07887bbfea8a52d40884
+sha256=62192ddf019c5d24f6538b33c9e69b6e5792bf5b0f464c0149061e2f0871108b
+
+[http://downloads.sourceforge.net/ulxmlrpcpp/ulxmlrpcpp-1.5.2-src.tar.bz2]
+md5=cea56d3a1a7e4f1a4d12697330c4526b
+sha256=00f40bf3c8e4ed3ca169ec54352fc7499d443e443d91b7460997ddca5448905e
+
+[http://downloads.sourceforge.net/upnp/libupnp-1.3.1.tar.gz]
+md5=6646be5e31e58188e8f47c6ce64faa4c
+sha256=4d0d6a5302222757fb36ee21d8f8e1b3de849c2de658ab1105272f32ff78767d
+
+[http://downloads.sourceforge.net/vde/vde-2.0.2.tar.bz2]
+md5=d97a8dbc72942c57542f50322b538a48
+sha256=05b473815f9706387a3c5eaeb4da2e492f624e0b7783432179454f9d69bb973c
+
+[http://downloads.sourceforge.net/vnc-tight/tightvnc-1.3dev7_unixsrc.tar.gz]
+md5=030903eeafc3c20ef1fb1610bfe6311d
+sha256=390fdd05d86e091300248a4f74a0ffe7b4169f75aa2c1a5461c997a4c2ed2c10
+
+[http://downloads.sourceforge.net/vtun/vtun-2.6.tar.gz]
+md5=309534fd03c5d13a19c43916f61f4bbf
+sha256=fc80dac6d622fdb2db16d772edc6ff7d0023ee6eb5f2acb79d894ee30197c2e5
+
+[http://downloads.sourceforge.net/wbxmllib/wbxml2-0.9.0-src.tar.gz]
+md5=3f9b5bf104ec523b8eebe69f93919ded
+sha256=acd218148d7f92ee7bd0539d6aabd0b42cca8ae4ffe241bfa8760d30605b28c9
+
+[http://downloads.sourceforge.net/webcamserver/webcam_server-0.50.tar.gz]
+md5=96830836f64edbb12c248eb84e6b0d18
+sha256=b8e200ae66c20897c9aaa80b0044e638a0016d3bdb6e67560fd61f1ef162f305
+
+[http://downloads.sourceforge.net/wireshark/wireshark-0.99.4.tar.bz2]
+md5=05fada181e12bfa94b52f0b10395b28c
+sha256=a4f15c73e2b67c888cbedfaa8093661dff6cb859357c197c60f3026baddb939e
+
+[http://downloads.sourceforge.net/wview/wview-3.1.3.tar.gz]
+md5=07f76102b9798f7a01cb35663589896f
+sha256=9dcbe3c0006ea63012c5a57720128170bef39b72d8e98e79ccbee202a3e7323f
+
+[http://downloads.sourceforge.net/wxwindows/wxBase-2.6.2.tar.bz2]
+md5=029ff5aac16ff5c42c89b9a7c7ac4029
+sha256=7c03f8e02b023c8843bc959bf32d972cdca27d5f6601c6c2ce1c1174208966d4
+
+[http://downloads.sourceforge.net/wxwindows/wxWidgets-2.6.3.tar.gz]
+md5=7af577ac8a6d78d6a0fef1b09cf1093e
+sha256=f4f42e8b649285fb0d8cf8109e420f6a0d16b2315985d017935279ceb26eb035
+
+[http://downloads.sourceforge.net/xine/gxine-0.4.1.tar.gz]
+md5=4a04df0d971a8952fb395b6eb0bc8dab
+sha256=48d93ef10f17cffe1ecbfec3078932ae48e08e3c172437e4bdfb22ae87d25421
+
+[http://downloads.sourceforge.net/xine/xine-lib-1.0.tar.gz]
+md5=96e5195c366064e7778af44c3e71f43a
+sha256=6a283d383358200a9d6866d5d666a0227c8412d9c33d41f166f39c011482aed4
+
+[http://downloads.sourceforge.net/xine/xine-lib-1.1.0.tar.gz]
+md5=3537cfd58d253b4be20a4975e7086e38
+sha256=795085a067b3a11c1b3de48b4d07b01d8ffb6123bd188a73cb53b0605f875c64
+
+[http://downloads.sourceforge.net/xmms-mad/xmms-mad-0.10.tar.bz2]
+md5=410b30968bdb4adce0baec8acc7f2ed4
+sha256=c0c89d93442c85296386199dc08a8ad9b480a29deea31936e5688c2bcc9a5265
+
+[http://downloads.sourceforge.net/xprint/xprint_mozdev_org_source-2004-07-07-release_009_001.tar.gz]
+md5=83a43006896fc270515a86f9ccec2c35
+sha256=03d2b69abb17382ead3bc796d451a61d576ff9ac2af34dcd6aba39f77e03df59
+
+[http://downloads.sourceforge.net/zapping/zvbi-0.2.22.tar.bz2]
+md5=a01cbe39a48579ba92582ff75a5e37c2
+sha256=a832819915838b364dd19f7f5d8d632b7d0493d8a19e2d011f9b5a3f2e8cf266
+
+[http://downloads.sourceforge.net/zapping/zvbi-0.2.24.tar.bz2]
+md5=918c8ebb03c0e2f3272e0d90a92f2289
+sha256=12f5b654f6b91953391d2492a09d2c9586d5b7af419f0eeb306e1d30245659d3
+
+[http://downloads.sourceforge.net/zaurus-shopper/Shopper-1.2.1.tar.gz]
+md5=ed4d8ce2227abf7e68de687a8c930fa4
+sha256=0e1ab08b22742d18b9ee0288874f63ddd74591e1b9f29003fe66dd0ba2289bcf
+
+[http://downloads.sourceforge.net/zd1211/zd1211-firmware1.3.tar.bz2]
+md5=cfff76ea35f4f93c37f6c99aa2058140
+sha256=78b013e2e0bb4c1af1adbd7acca4299cd3d83e96d8da2731f629f562b5f153a6
+
+[http://downloads.sourceforge.net/zeroconf/zcip-4.tar.gz]
+md5=ce40fdcd923110ee75717295a5fd4100
+sha256=09bff63fdf2ae0704423ad232d31e792b342433e12306e107c14dc02f06ed507
+
+[http://downloads.sourceforge.net/zile/zile-2.0beta6.tar.gz]
+md5=538e86a10a0c373f98a4c2dff29b39dd
+sha256=84568814469d4d7c44a324badb8023b049aae5d5f17e4b788a955f8d5137b3c4
+
+[http://downloads.sourceforge.net/zile/zile-2.2.15.tar.gz]
+md5=1fa62e2309fa52e26a5594cc38911aee
+sha256=2822148fdf6f2054b51c776db21f71e817761c225b370ab3f3ce7efe3711368f
+
+[http://downloads.sourceforge.net/zrally/zrally_0.90_src.tar.gz]
+md5=7084c0d2b28108563ca45e5ec1533ba1
+sha256=c4fb0477fdc110b63d867ae2a46cca7913fa6a0ca8bf574c7189329bea91dcdf
+
+[http://downloads.sourceforge.net/zziplib/zziplib-0.10.82.tar.bz2]
+md5=a6538f6c44ceeed0ed7e8e356f444168
+sha256=f684397ce39ec400ba3369521892b7c3a8711d3ef1be59115db9f8d57707bbb8
+
+[http://downloads.us.xiph.org/releases/speex/speex-1.1.12.tar.gz]
+md5=1bd6cdf3a0ebabf818cd72a3401e2610
+sha256=77c8505bd9b73192789770299e0a727fba9c1d556d853b8cc473bfee393709f8
+
+[http://downloads.us.xiph.org/releases/speex/speex-1.2beta1.tar.gz]
+md5=aac2e4ba42122b885c787ea280acb3d9
+sha256=d8bef008b3be87b3b155128c091286b269fee32a38b0849bc8cacb3cd5f7f6a0
+
+[http://downloads.videolan.org/pub/videolan/vlc/0.8.5/contrib/live.2005.10.05.tar.gz]
+md5=6f15406664ef31172c68d46567569bb8
+sha256=9532b981c9b8974ceedd3d25a8f9a0e167a92c9da0dece47f34a4ec34e34b1cf
+
+[http://downloads.xiph.org/releases/ao/libao-0.8.6.tar.gz]
+md5=12e136a4c0995068ff134997c84421ed
+sha256=99565c6f8a560abc24bf6c07726737d54db64daae08c8708fc9e8f3aeb723985
+
+[http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-alpha9.8.src.tgz]
+md5=7218e778b5970a86c958e597f952f193
+sha256=1b79fae1aedc692f87d1344410f5c6b666961afccdc78bc5c4c257c450dfa008
+
+[http://dri.freedesktop.org/libdrm/libdrm-2.3.0.tar.bz2]
+md5=01a1e1ee0268a2403db42fa630036ab2
+sha256=f8c711427fea50845811360c92f6350ff3dacb9533741470d54ae5d0a2f6848e
+
+[http://eaglet.rain.com/rick/linux/schedstat/v10/latency.c]
+md5=56a9be3b788ad32a169069f332ebf0f3
+sha256=cc1fc10fe3e8473efd3af315a47500d646665554fe6fe5993028adb1f189334b
+
+[http://eaglet.rain.com/rick/linux/schedstat/v10/stats-10.pl]
+md5=9c05c1831449219d063e803e3cf1dd88
+sha256=06e1f846b47c3b3b702b65489bc7d4d4c6b9f499609f4aec4556cb5046729202
+
+[http://easynews.dl.sourceforge.net/sourceforge/gallery/gallery-1.5.5-pl1.tar.gz]
+md5=d2f52d92776f47bf353787237607f23c
+sha256=9f17181cd8bf46203a288e3fc1d9bd82d5dc011fe419d33bee2f62bace081f08
+
+[http://easynews.dl.sourceforge.net/sourceforge/xaos/XaoS-3.2.3.tar.gz]
+md5=f1d9a9f3d2097906754b8824ba925e64
+sha256=b15420bcfafeca09eb29e5961cedbbe0572d0fc7912f6c545458a346188516c1
+
+[http://eciadsl.flashtux.org/download/eciadsl-usermode-0.11.tar.gz]
+md5=c3c60c83f6df30021e11da50a699dec9
+sha256=2382f315fda4241a0043bac1dfc669f006d8e93e87fa382b263b1672972f4077
+
+[http://efault.net/npat/hacks/picocom/dist/picocom-1.3.tar.gz]
+md5=21865bf2891222082afc44afdd80aeaa
+sha256=ed3e0190a1940cf08a167429aa3fd25b3ae7313fdf126f851a9abccc89845ee6
+
+[http://efault.net/npat/hacks/picocom/dist/picocom-1.4.tar.gz]
+md5=08fcc5f6bb9e7676a2569386d5ea9f70
+sha256=437c5fac2376e416b4427501d1b074da5aa6b8fea756a0d61aec22686f025721
+
+[http://effbot.org/downloads/Imaging-1.1.5.tar.gz]
+md5=a64512e39469213ced0d091b9eba76c0
+sha256=14fd700b64d3060e356fc217d8539d1fb468d8688a451f9d6e2faaef1139a58c
+
+[http://ekg.chmurka.net/ekg-1.6.tar.gz]
+md5=1094eee5062d9b9900c4b28bd68fb564
+sha256=c6dc601e20bb43c94f5689f05bca8e8501af4cff9dd760afdb3d6998c6952c28
+
+[http://enlightenment.freedesktop.org/files/ecore-0.9.9.037.tar.gz]
+md5=ec6d00a39ca6648f12f58f8d4f2208cc
+sha256=2c31372ccfc9b411edc73785450c5212dc4a2fe286de9f49f38a02dd24895aea
+
+[http://enlightenment.freedesktop.org/files/edb-1.0.5.007.tar.gz]
+md5=e5d8dcb5995913ae6b7f205e7ac28dbe
+sha256=75a4861bf7dcc96a871611350276f10a87b0f7c44a1bbab1108374828bccf509
+
+[http://enlightenment.freedesktop.org/files/edje-0.5.0.037.tar.gz]
+md5=e2f51f5e182201f0d22e042bca0ebfb1
+sha256=5160e0c79f533b1dc6ac2e4191569620e3833b844a4ef38a33ff173ee3d494d3
+
+[http://enlightenment.freedesktop.org/files/eet-0.9.10.037.tar.gz]
+md5=05c65e4cd84b36baa42e3eee1e652c97
+sha256=8d5154877e0f8aa57401a288c5650e5c1dc0efe0b4104796aae1d4b303febace
+
+[http://enlightenment.freedesktop.org/files/embryo-0.9.1.037.tar.gz]
+md5=2a09c0355f33112e96ed253bd0bb308a
+sha256=0b46174c68b9cb19d0335f3f5194ee41e26865f4a9a62df9410f30693865e2d5
+
+[http://enlightenment.freedesktop.org/files/enlightenment-0.16.999.037.tar.gz]
+md5=7ca0359905aecc81bca85208148d9264
+sha256=33d0d4542945685661b7344713a91d76f9eb0eb5153a61b5ed1cf1180637a492
+
+[http://enlightenment.freedesktop.org/files/entrance-0.9.0.007.tar.gz]
+md5=b789d09fa76e76a6466a786f0628d0ff
+sha256=789846f0a3df54b03a07cd117ee59b53f63a8677662cb2ff754a9be94032ec44
+
+[http://enlightenment.freedesktop.org/files/epeg-0.9.0.007.tar.gz]
+md5=383db51e46d13d986966459e4918d236
+sha256=bb12585b433fd0eca11865541bdb877166b9e53b0ea12624776f11cce3ce189b
+
+[http://enlightenment.freedesktop.org/files/epsilon-0.3.0.007.tar.gz]
+md5=408d3c63f9efa06e93e29a691c28985e
+sha256=6f40962eb8d76e0e9d76ec9f461d62c6af8561028d194358aed001827cc418fc
+
+[http://enlightenment.freedesktop.org/files/esmart-0.9.0.007.tar.gz]
+md5=a65b4a08818ac9ef9de3dd9d4f20f148
+sha256=5df5b02c568f5e4b744252fbd62f5fae71bf0eddecc423d2b396a0ffbfe94465
+
+[http://enlightenment.freedesktop.org/files/evas-0.9.9.037.tar.gz]
+md5=21cb713b01be39992a7c48d0ea23429b
+sha256=400046d55db03c3ac2de9e3346e38d0a75753501fb85ea953a497cdafc1340a1
+
+[http://enlightenment.freedesktop.org/files/ewl-0.0.4.007.tar.gz]
+md5=29bc8aec80b53480c2ea53aea1796e15
+sha256=0a0dba00517013082b8e094b4b7753162cf5fb71a170eb54cbc2eaa35717d5f6
+
+[http://enlightenment.freedesktop.org/files/imlib2-1.2.2.001.tar.gz]
+md5=ca9ad2142464f34a5716990aa162c94f
+sha256=beb929f4ceff865375a9e56c0156ffbfb197dff82299071bdb641bb60299f84b
+
+[http://ep09.pld-linux.org/~mmazur/linux-libc-headers/linux-libc-headers-2.6.11.1.tar.bz2]
+md5=1df3e4fbf2670712cecb4953e2d24834
+sha256=8dffedf772a9f75a8cee2a603e1b14e4b7848010dcfa0e6b087afcf4f66da6de
+
+[http://ep09.pld-linux.org/~mmazur/linux-libc-headers/linux-libc-headers-2.6.7.0.tar.bz2]
+md5=ac14861e5fa7e52d98a6174add34084d
+sha256=455f352e2ec707e4abf02091c4c49ffa5611294eb75959c25d77967a02636577
+
+[http://ep09.pld-linux.org/~mmazur/linux-libc-headers/linux-libc-headers-2.6.8.1.tar.bz2]
+md5=a75c264f90b07b4f3ba05febc7386f4b
+sha256=384c0e97100170b4566a0b335a18246c42c76df682377cae6ed1c72be8aadc0e
+
+[http://erlang.org/download/otp_src_R11B-1.tar.gz]
+md5=1fe3707d9bed898bc51444cb529fdd79
+sha256=d5a8530dfee0b2348c4ad0107409fa73ac3233f31e2300ece625a2abd9eb4da7
+
+[http://ewi546.ewi.utwente.nl/OE/eabi/linux-libc-headers-2.6.15.99.tar.bz2]
+md5=0ab7fdfc84522e16bfe78b8e0cc66bfa
+sha256=c8630034519e525347e0cb8435bdf0edf9fbad2d16392768ba142c06681b2305
+
+[http://ewi546.ewi.utwente.nl/OE/source/libopensync-0.18.tar.gz]
+md5=ce94a69fb7ae7533d1f8828b6402cec8
+sha256=f9c803ba28d5deb18d9feb5c7818ce99325b09204b7dc0447798f2f47a657a46
+
+[http://ewi546.ewi.utwente.nl/OE/source/libopensync-plugin-file-0.18.tar.gz]
+md5=a9ffd002169406fb31eee885c9742c26
+sha256=c03ad432d46e8f562ad4eaa08972c5bd229fdc45e5c01ac9af094cbfc38cdf59
+
+[http://ewi546.ewi.utwente.nl/OE/source/libopensync-plugin-gpe-0.18.tar.gz]
+md5=6b35732f34aad4becfc24ee500d32c9b
+sha256=218e8d5194d866109db3419c66d071cdbd319446288e7012ed135d4a6b8a3762
+
+[http://ewi546.ewi.utwente.nl/OE/source/libopensync-plugin-irmc-0.18.tar.gz]
+md5=52f86db50d653f5af0adefeb76cf9a31
+sha256=db7250647b86dc8d0bd45c73d454d73ca182c88f6ffe2ccf1760f40be81080f2
+
+[http://ewi546.ewi.utwente.nl/OE/source/libsyncml-0.4.0.tar.gz]
+md5=a6b5becd4b61e246ed2ee95db9f6e746
+sha256=2be78a947bdbfd24aa4f35ae97d2b7bafa60162c5e824cf3dd085b40eddee8ff
+
+[http://ewi546.ewi.utwente.nl/OE/source/multisync-0.90.18.tar.gz]
+md5=d55d8eaeecb825b87a25eeceaef92cb9
+sha256=c1454fdf5d3658f492253106c12bbf89a3bcc5789c36851a5f2f345d61a4ac0c
+
+[http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/qpf-freemono-1.0.tar.bz2]
+md5=28688d47cd80d3a6bb833adb22292e15
+sha256=5ac0513efe6270d45a2ada5dc653c434677da4282e026d8c1a9c156cd99e11c8
+
+[http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/qpf-freeserif-1.0.tar.bz2]
+md5=a7fa0210e02f42d5b14245e260bc72c3
+sha256=c8ee6e5e62b0a182dbee85865e56b1572e6875769b8256b39c75b2334a283e45
+
+[http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/qpf-helvetica.tar.bz2]
+md5=20c040a004f4949b6849658148a78388
+sha256=4b6a122b4f95cf90f9639ca423947e70bba4e567099f9baeada419a51b11924b
+
+[http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/qpf-hunkysans-0.3.0-r4.tar.bz2]
+md5=917d7f8f3ad3c5b94c747b37d0a5e74a
+sha256=c3cdd8f234cbc1694af777dc1739ca4439cd472567d85f333dc11264d6bda7c8
+
+[http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/qpf-hunkyserif-0.3.0-r4.tar.bz2]
+md5=02b38aeaf30c17e15b714b9594ca504d
+sha256=3c5890d6b0aee2d4c1e0c6b8101b6b5381985e86bc50dffc338b8601f4aa7ae8
+
+[http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/qpf-utopia.tar.bz2]
+md5=fa2563f3c2332c5bcb05add075908f1e
+sha256=599eed45edc9942f4b37858507c2223cb8decb13fea180cf33c6961ad48a33d1
+
+[http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/qt-embedded-2.3.10-snapshot-20060120.tar.gz]
+md5=fec42313fd5508d840240b5dd2fe27eb
+sha256=0a706cf4c2a70dfeff2e886f225007844a4675f5c6387fb46c4b7f7ef327b68e
+
+[http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/tickypip-levels_1.1.tar.bz2]
+md5=cfdaae67b3d33351e37021cb0394153c
+sha256=881109774a77e34c61fbf41a839fe02a95cb3e67a0218fe4aebc5e6999cbaa57
+
+[http://ewi546.ewi.utwente.nl/mirror/www.openzaurus.org/official/unstable/3.5.4/sources/irk-0.11.0.tgz]
+md5=5b39a7fb06fd24edfb543a3a0130065c
+sha256=5eeba81a5e5163e0b0b92b5e5aaf91c07b412a743a98f59975c75d28c133a85f
+
+[http://ewi546.ewi.utwente.nl/mirror/www.openzaurus.org/official/unstable/3.5.4/sources/irk-current.tgz]
+md5=a77eaea6930b9af5bbcd59bf9f8859c8
+sha256=942240421710da8a04fa6c7071f50f0737ab7198e31c1d96f1e0b73330e0d066
+
+[http://excess.org/urwid/urwid-0.8.4.tar.gz]
+md5=4bf9e297f1db0502ec2753f3e084f4cd
+sha256=03c1970273b211be8a6a8d23e44522b5d20a774781d31b51c26109985ac28cdd
+
+[http://familiar.handhelds.org/source/v0.8.2/gkdial-1.8.1.tar.gz]
+md5=b21c6f87b16e398a188a2ed7c5dcd387
+sha256=851ce45628729684bfcb2fab53f18e9be8fecb5ec8b6805071706a0e8f5bf983
+
+[http://familiar.handhelds.org/source/v0.8.3/stash_libc_sources.redhat.com__20050627.tar.gz]
+md5=ecbdba24ac6274076d4a073bf1ee8ef0
+sha256=b7bed167db8eb005b55392130a8b3f4d5567bcf62fb5f003a91f6c0bfffa5773
+
+[http://familiar.handhelds.org/source/v0.8.3/stash_ports_sources.redhat.com__20050627.tar.gz]
+md5=a457ecf845ef148b3879bd16ce7b89ea
+sha256=1e5d4c2277997dcf2f6eec77b10ed0a84865fb18b0d04da9b99f266e796ba820
+
+[http://fgouget.free.fr/bing/bing_src-1.1.3.tar.gz]
+md5=0ccd96cc01351c0562f1e4b94aaa2790
+sha256=3151893aa5597491b7cb7083b4e786017b522cac55dffacbe475c9abdd7fe61a
+
+[http://files.fredemmott.co.uk/mkbot-0.3.tar.bz2]
+md5=094b5693c602c5d872e49e24d2747ef2
+sha256=c1cace2663ee1ff32f95d14fc60a6b7eee3ec8e3d0e7c531e9a778bbf29960a1
+
+[http://files.jabberstudio.org/iksemel/iksemel-1.2.tar.gz]
+md5=82e7c8fdb6211839246b788c040a796b
+sha256=a606e230b22d9d029998b84e5d6311a8ba35a304fe457e254eb5fd19943cd639
+
+[http://fishsoup.net/software/kanjipad/kanjipad-2.0.0.tar.gz]
+md5=bdfe75534322840b3ff566e0a91c472d
+sha256=28272f61ec09c607a3578e3626e9e4fd43d1d9d1e21cb64328745766d00ee9e1
+
+[http://fontconfig.org/release/fontconfig-2.3.91.tar.gz]
+md5=098a36ec53ec893f6511712ec4010d38
+sha256=a906c3193de44e5a8d93174bb86e91f39e415f92ad9319b318fd3a46a2ad9b35
+
+[http://fontconfig.org/release/fontconfig-2.3.95.tar.gz]
+md5=6860be35882f6d34636d52345efd5944
+sha256=3c0901c0df62e5588370cbab13cd847e056c6a4d36fb69faa303d8edd5b41c09
+
+[http://fontconfig.org/release/fontconfig-2.4.1.tar.gz]
+md5=108f9a03fa9ed9dd779cc7ca236da557
+sha256=13f59a7cd5190983412689495c399444cf73c1ced0813149e4480c8848bb9f17
+
+[http://freedesktop.org/Software/desktop-file-utils/releases/desktop-file-utils-0.3.tar.gz]
+md5=40a93def0f37f1577c5edc638fcb35a5
+sha256=6e932e73818697ea9ec8909bed535a87ba34651031bbbedb63a42e4cdc423284
+
+[http://freedesktop.org/Software/desktop-file-utils/releases/desktop-file-utils-0.6.tar.gz]
+md5=0d6b6d4fa861f73e0b4225e93077578f
+sha256=64c05a48e91850627cfaa7314d4b4b847547bc4333fa9345994fa49c79276f3d
+
+[http://freedesktop.org/Software/startup-notification/releases/startup-notification-0.5.tar.gz]
+md5=c7a96f4615b07ed847061b0a9a0be989
+sha256=7d2f388f7b50fc5c929ef173c2df900c588329ab07c16184dee3745a26ac54ae
+
+[http://freedesktop.org/fontconfig/release/fontconfig-2.2.95.tar.gz]
+md5=6e64304b91cfea887558154d465bb752
+sha256=9d1eb5813a7d3e7907da4e6a69c93f4689c49a2ed8320c35ce4570f63448f2d0
+
+[http://freedesktop.org/software/dbus/releases/dbus-glib-0.71.tar.gz]
+md5=4e1e7348b26ee8b6485452113f4221cc
+sha256=b58a489fdd35a70d241f512bc08f3b6d9d8e05110f4a1d5341cff6a0b7d854b7
+
+[http://freedesktop.org/software/dbus/releases/dbus-python-0.71.tar.gz]
+md5=ee893bc87b784a8c2285f5041b5e7033
+sha256=4af7a60f65cb02dabbcdf0cb6ca6f659932eb13c2533f6e1dbdab6e3700a2c57
+
+[http://freedesktop.org/software/icon-theme/releases/hicolor-icon-theme-0.5.tar.gz]
+md5=947c7f6eb68fd95c7b86e87f853ceaa0
+sha256=8643ddab3b5afd2f94a2db771bae6710ec49d76a6c6890debaa711de8f3bf12e
+
+[http://freedesktop.org/~david/dist/hal-0.2.98.tar.gz]
+md5=cc289e50e00330032604e02392ffde3a
+sha256=b011f194e1ab90e753744405bb5b85949cdda1a02320cb174b8d4a8e5e182dc3
+
+[http://freedesktop.org/~david/dist/hal-0.5.2.tar.gz]
+md5=3b351822ba359669646026013a3d5a03
+sha256=46d0a75f90058909269da4cc42986cd51d5163a6af669e9d7fb4a7d170217d17
+
+[http://freedesktop.org/~david/dist/hal-0.5.4.tar.gz]
+md5=2f84ddbc22bc35baa9388e7794d1fa31
+sha256=ff837f077dcc4a29c4dd8c9c3b7115cbbd1362aa0c0cce1435e8bca0d966dc42
+
+[http://freedesktop.org/~david/dist/hal-0.5.7.tar.gz]
+md5=4163afb8285db64e00e7b1392b401d92
+sha256=63c78e9b9c8308914372f9a762b02fa057bca2c6a1c7478ab595ba0fa92781d5
+
+[http://freedesktop.org/~david/dist/hal-0.5.8.1.tar.gz]
+md5=568d7ce9831c18a5e6e502abd6781257
+sha256=0c51b41f5c8729e3568df26266485b4d32ec6ba04567f7a08d8e68cd76e59714
+
+[http://freedesktop.org/~david/dist/hal-0.5.9.tar.gz]
+md5=a6f532770cf9286e1de38d6570cbc6bc
+sha256=65d8f8eeb61e7609a8c5001b6660d90e7a482c4b74b4e226d09b433dc1a80c9d
+
+[http://freedesktop.org/~hadess/shared-mime-info-0.20.tar.bz2]
+md5=62184241d497d34138285bc248b3fabc
+sha256=6febe616fb850f4319efa7017312abb796024e7ac20da37c4d2ce34afa41776c
+
+[http://fresh.t-systems-sfr.com/linux/src/setserial-2.17.tar.gz]
+md5=c4867d72c41564318e0107745eb7a0f2
+sha256=7e4487d320ac31558563424189435d396ddf77953bb23111a17a3d1487b5794a
+
+[http://frodo.cebix.net/downloads/FrodoV4_1b.Src.tar.gz]
+md5=095b9f21c03204cc13f7f249e8866cd9
+sha256=ffae146dc20458698acf5ccc384dc32317cea1df0c95b44b5d47cca8b26bc986
+
+[http://ftp.5z.com/pub/gob/gob2-2.0.14.tar.gz]
+md5=f8721af6f4e90ff48bd7cb4c96a5a94c
+sha256=c2977b18d1166c62e3f04373feefc0e2af704da3cb98e32612be4a55fd77a3f9
+
+[http://ftp.acc.umu.se/pub/GNOME/sources/totem/0.99/totem-0.99.15.tar.gz]
+md5=08aeed6d3c70347e788f70e14976463f
+sha256=12535d584e611ce21921e5bb063b21a8c47d7117570f9f1b5fd91fa42439ed69
+
+[http://ftp.cwi.nl/aeb/util-linux/util-linux-2.12.tar.gz]
+md5=997adf78b98d9d1c5db4f37ea982acff
+sha256=9c239b947b9a7352d88625073ab512d601da92a00703f73dc1e1b83b78b4ca1d
+
+[http://ftp.debian.org/debian/pool/main/d/dash/dash_0.5.2.orig.tar.gz]
+md5=9f75e13d99fee819522ac05c64d3112e
+sha256=c13f16cf7d8bfd1a24211131530981c4884af0d6ad89fd707de5ab2f270b350a
+
+[http://ftp.debian.org/debian/pool/main/f/fbset/fbset_2.1.orig.tar.gz]
+md5=40ed9608f46d787bfb65fd1269f7f459
+sha256=517fa062d7b2d367f931a1c6ebb2bef84907077f0ce3f0c899e34490bbea9338
+
+[http://ftp.debian.org/debian/pool/main/k/kbd/kbd_1.12.orig.tar.gz]
+md5=7892c7010512a9bc6697a295c921da25
+sha256=f3bc6747dba7d1a35cd125ca0bd4649f88704be211cf7e47d36b43c7f44ce803
+
+[http://ftp.debian.org/debian/pool/main/l/logrotate/logrotate_3.7.1.orig.tar.gz]
+md5=552639142e163745f6bcd4f1f3816d8a
+sha256=7e79b03d65105541a5fdcc05087bee29ebc9e33149ac33d6563d0b20eddf79e0
+
+[http://ftp.debian.org/debian/pool/main/libg/libgtkhtml2/libgtkhtml2_2.6.3.orig.tar.gz]
+md5=29690b14762a970b9ff725c85627c24b
+sha256=ee8dcb9cb850f94e75e374273b0860bcf214fd242651ee22ac74cbfd37449b4f
+
+[http://ftp.debian.org/debian/pool/main/n/nkf/nkf_2.07.orig.tar.gz]
+md5=af11dcd3fe71d67831c020e3bfd5073b
+sha256=71d2ba992df209a00bb1dca45e3336729dc16e51b71526bd20f897cc6127a275
+
+[http://ftp.debian.org/debian/pool/main/u/uucp/uucp_1.07.orig.tar.gz]
+md5=64c54d43787339a7cced48390eb3e1d0
+sha256=060c15bfba6cfd1171ad81f782789032113e199a5aded8f8e0c1c5bd1385b62c
+
+[http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.13.tar.gz]
+md5=ad8fbe2198568f55c254045ecb3b7926
+sha256=8d197b118d9ee25bc8793b37d1daa6b54fd6074e6738f462368361e5698d98f8
+
+[http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.14.tar.gz]
+md5=2ce03466b99e0b9471e6c791ed14a5f2
+sha256=115248cb7b1fc35dc2be24218f91a87272cf5c0d8c2050a36da2314fadc05cf4
+
+[http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.16.tar.gz]
+md5=88cfcd5c3b2a8f2504e561cb93546299
+sha256=cc70d2ff8a2cafe3c7cce10dc5e90146111bc686ed6e08fc753e950c7050611e
+
+[http://ftp.digium.com/pub/asterisk/releases/asterisk-sounds-1.2.1.tar.gz]
+md5=bed4259905a7d7bc070c6319142b2075
+sha256=bfa7def7d0f1190a111bde232920d2b3481d3932e2d1056573b3a9c4801c602a
+
+[http://ftp.funet.fi/pub/CPAN/src/perl-5.8.4.tar.gz]
+md5=912050a9cb6b0f415b76ba56052fb4cf
+sha256=89dcc463f88e0b785ee2cf2662d97c6b7d045393283664876370970a09b8cbef
+
+[http://ftp.funet.fi/pub/CPAN/src/perl-5.8.7.tar.gz]
+md5=dacefa1fe3c5b6d7bbc334ad94826131
+sha256=916d7e1393ed09ca4c61b3c1ecb5f5564266c955db81ff587d2da8af7a7abaab
+
+[http://ftp.gnome.org/pub/GNOME/sources/GConf/2.6/GConf-2.6.1.tar.bz2]
+md5=194fab4e2e87c7ae3c7fea926fd281bc
+sha256=31d894960e0d2eba8fa2746e4fde31983a1e49dc856a880adb59d5f251a690cf
+
+[http://ftp.gnome.org/pub/GNOME/sources/ORBit2/2.10/ORBit2-2.10.2.tar.bz2]
+md5=c862e3261b52a84321e89f57e5600da6
+sha256=d43ff15c23f5391850f85a7d40e4bd26f82fe2c86669664fe56eff91f14c1594
+
+[http://ftp.gnome.org/pub/GNOME/sources/ORBit2/2.13/ORBit2-2.13.2.tar.bz2]
+md5=8d1e654f9b7e1399dc98da3bb4b96762
+sha256=fc87440d252c77f5c1afc17bb3015586cca264bc5fa8794bc54b869b8106265d
+
+[http://ftp.gnome.org/pub/GNOME/sources/ORBit2/2.14/ORBit2-2.14.0.tar.bz2]
+md5=bb1b4859522cb6e1a3a3dc4b7397db64
+sha256=412e4880d79533a2bbd33757e031a2bee24a7bc771f22cf4fed3cb81790b1b68
+
+[http://ftp.gnome.org/pub/GNOME/sources/atk/1.2/atk-1.2.0.tar.bz2]
+md5=06a84758129554ae044af8865ecb6f1c
+sha256=feb2639dd385a828ec75c6af12ac44a44aced40fb7a24cb63252f0d056f993b7
+
+[http://ftp.gnome.org/pub/GNOME/sources/eel/2.12/eel-2.12.2.tar.bz2]
+md5=d78cd3e33c656a62b5bf1f8d0b8d271f
+sha256=df6c696f84bc9c2af12f3715f2703060ab1692a918fb221ea0403212c03e0b73
+
+[http://ftp.gnome.org/pub/GNOME/sources/eel/2.6/eel-2.6.1.tar.bz2]
+md5=6dd46ef1905271cd1171a0bdddabee22
+sha256=889c8cff395bc488a6ccfb3fc22fd241a12c33f114bb7d7ec4138d5999da9c5d
+
+[http://ftp.gnome.org/pub/GNOME/sources/evince/0.5/evince-0.5.2.tar.bz2]
+md5=732df368435cebddd4cc8132a8a280bd
+sha256=c3f923e9becee6aa59cc4dafbc36d376a88099cf4017a5e928f367bd428174de
+
+[http://ftp.gnome.org/pub/GNOME/sources/evince/0.6/evince-0.6.1.tar.bz2]
+md5=55a1d4af3cac209c7cfbe83b7ffcee1d
+sha256=ee72f48ec0c76a8f44d8a6aed6759d43a147a9d5bb2b15f06460c4d6ef86025e
+
+[http://ftp.gnome.org/pub/GNOME/sources/gail/1.6/gail-1.6.6.tar.bz2]
+md5=0741e06cd58088d4973dda98d3995a99
+sha256=8bbd4713f9bbd752ae3116ec4d6e4f4f04f0f8f774e98dd989626d5e00c121f5
+
+[http://ftp.gnome.org/pub/GNOME/sources/gail/1.8/gail-1.8.5.tar.bz2]
+md5=7587a0a9ee643bb59ef6b2dea06c5a28
+sha256=1313a35d6cc4d3ae466dbb6b4f1588b341f339c071557fd66830c0daf72f09b4
+
+[http://ftp.gnome.org/pub/GNOME/sources/gal/1.99/gal-1.99.11.tar.bz2]
+md5=906c0640d3160a55aac98974aecfb316
+sha256=bb76484f73f5d6bc58d4e9990422043663af01204728aee73a1ce4565f8ef2ed
+
+[http://ftp.gnome.org/pub/GNOME/sources/gal/2.1/gal-2.1.10.tar.bz2]
+md5=27843dc0ad9b775c0f6bb0d173e49264
+sha256=44282f7939ce5a09cb2f0e0f0091ea27754309a605a5105a643f0c80f38094c4
+
+[http://ftp.gnome.org/pub/GNOME/sources/gcalctool/5.5/gcalctool-5.5.21.tar.bz2]
+md5=130baf0910aec9c0c5afad8007da90de
+sha256=e5a0f289969d070f4f10f25fb77efdf693805177b07d4eb2dbfe9fe91c2fdab0
+
+[http://ftp.gnome.org/pub/GNOME/sources/gdm/2.14/gdm-2.14.9.tar.bz2]
+md5=7e46bc3b0a5b08e79f1f2f1b869caf40
+sha256=0483dac71c88ca0da5ee85729c0c1dd6793d928109ac79ad56583aa1a5ff43d2
+
+[http://ftp.gnome.org/pub/GNOME/sources/glib/2.12/glib-2.12.10.tar.bz2]
+md5=82d44a53690b0eff8f7a5dc65e592f61
+sha256=00f2a189ed6b16ef654c2097ad14cb4c9da42cd4c3fbae54fcb61f3c1c85e8d1
+
+[http://ftp.gnome.org/pub/GNOME/sources/glib/2.12/glib-2.12.11.tar.bz2]
+md5=077a9917b673a9a0bc63f351786dde24
+sha256=706aa9da1c096af8d27b3ddb5da4e321dd6b10f881887639e280e4e10b81c4b3
+
+[http://ftp.gnome.org/pub/GNOME/sources/glib/2.12/glib-2.12.6.tar.bz2]
+md5=b13d971e7de0b844fc4ced7367702003
+sha256=142d5d4795bef093eb9cfd50e384ae87ba9b9934d22b667174535d377ad47f1b
+
+[http://ftp.gnome.org/pub/GNOME/sources/glib/2.12/glib-2.12.9.tar.bz2]
+md5=b3f6a2a318610af6398b3445f1a2d6c6
+sha256=10113e7b91f858557c7edb4b611cc009855c5ff8663af54977a65acb69445058
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-common/2.4/gnome-common-2.4.0.tar.bz2]
+md5=9f5163e616b2a02af633de9c82557fa0
+sha256=9509137496606b101c6f570579b9d10ae11f531a8f8d9bfc5d113534b62376d7
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-desktop/2.10/gnome-desktop-2.10.2.tar.bz2]
+md5=b912a6878ea307af9e3d015864ec0678
+sha256=de8ba10bf7321b70ba5b3bdd45b61411b5a9fbd401fbe639041a875be01bd8f4
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-desktop/2.16/gnome-desktop-2.16.1.tar.bz2]
+md5=e92edb17cd75faca45a4fe2d6806bdd8
+sha256=56c7dbe56e6a9fbcd3730c55892734a9daff23a86d69f49a381a4c965732f9d1
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-desktop/2.7/gnome-desktop-2.7.90.tar.bz2]
+md5=16691f6bdc7c09445c457387adaba1f1
+sha256=6a1499a1e50ac89210a9a1fdb36bc070ef6d1a02764a0f8d90de314dba01972e
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-doc-utils/0.7/gnome-doc-utils-0.7.1.tar.bz2]
+md5=21fe881ab473fdc9246c36bd8ef929b0
+sha256=5b51e0dfae64e7f48883fce6657fcf47a03f6429e2c67024203e31cc29032a22
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-games/2.6/gnome-games-2.6.1.tar.bz2]
+md5=6ea145547bfd8aa828b22cbbe34cbedf
+sha256=d7a823601f569589437d671d12b1b12f53abc08aeb7d25280bb3242299353086
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-icon-theme/1.3/gnome-icon-theme-1.3.3.tar.bz2]
+md5=e5fbfa461612916143a1321c9e0efde4
+sha256=9d31e7ff0ebed5c7213bf45c5a810656b079ad03ebe3cc8fb952d984a52d6ddb
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-keyring/0.2/gnome-keyring-0.2.1.tar.bz2]
+md5=2fe5fb39cc18d1a6792fd3281223dfff
+sha256=1c6d5a1732742469ec32ab7297f3b8eacfc0f4bfae5fdb096b603877dde12612
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-keyring/0.4/gnome-keyring-0.4.4.tar.bz2]
+md5=dc17fa8b04172d3b1993caa6959a7648
+sha256=f6799acf59bc91054c4832e7956cb3126effdf911f746139478dcfa8ec727653
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-menus/2.10/gnome-menus-2.10.2.tar.bz2]
+md5=97b0ad03ea219cc8f5c02585db1d237e
+sha256=0968a399590d94cf9e1640b647cc10f972a3a802cbd9602c0839f56fd2864193
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-menus/2.12/gnome-menus-2.12.0.tar.bz2]
+md5=615392c4f729f70c03aa3aa7dbe40a95
+sha256=f77192ca0b909000f675ad3cd520c313431ee117d554102c7ea486f76f396f6b
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-menus/2.16/gnome-menus-2.16.1.tar.bz2]
+md5=a5c467abe68003d23ec09a795ebfd29f
+sha256=72238f33406ada505fde8555ff93c00e7fec055a41500339b434c5445b09c87b
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-mime-data/2.4/gnome-mime-data-2.4.1.tar.bz2]
+md5=a8bd52c6876a5294abc402f8a581ac1a
+sha256=74846344de2c24a76408ee9c598dbc75d6c33a02f888f8b5491cb1af9a097cb4
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-mime-data/2.4/gnome-mime-data-2.4.2.tar.bz2]
+md5=37242776b08625fa10c73c18b790e552
+sha256=e8ee6534bd142ee0ed55134a5eb95f6e7f4b8640df2d3669ebd202f6d82f9a0d
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-panel/2.10/gnome-panel-2.10.1.tar.bz2]
+md5=a2719f5c79a9e48bca086f08a77a6889
+sha256=dc60f7f6e9b9ce52ad4e2ce1f7d6dca643590e86e49c749d513d9f8a25068a7a
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-panel/2.12/gnome-panel-2.12.1.tar.bz2]
+md5=a532717e8ac7f67b7198c256909cd7dd
+sha256=61a01f535b50ca0a4c35b4b59513287f17e0665c0b678952cae663b883b13827
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-themes/2.6/gnome-themes-2.6.2.tar.bz2]
+md5=4aae39232d77e1497f3180202b501adf
+sha256=471191e942fdd1d691095c71fb22c0a645b3644c3b2b1c58a6d6f1a2435fb818
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-vfs-extras/0.99/gnome-vfs-extras-0.99.13.tar.bz2]
+md5=29f6997c0523254b54f8d36f0361b824
+sha256=482bda65d8083a66f84d88d808388fac34b2c5d808676105d200ac9049efb82e
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-vfs/2.12/gnome-vfs-2.12.0.tar.bz2]
+md5=3323e7472a736716150337d2fc564a43
+sha256=c371e303363d087204e639f4a494bcdd3ea87a25b5d07459052222b08b5f8e38
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-vfs/2.16/gnome-vfs-2.16.3.tar.bz2]
+md5=586d6fe3740385c000a864d5e2cf8215
+sha256=657df4d40dd1c8cbc9a266b9f38fea36019ef8a917eafcd3c38c840b8e9c7777
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-vfs/2.6/gnome-vfs-2.6.0.tar.bz2]
+md5=4d0323cf015dd006210fcacd4bfe7420
+sha256=e2094c83a810319674e9c5ea24ac1325e8ea31e3df2e2efd41c70a07742caa6d
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnome-vfs/2.6/gnome-vfs-2.6.2.tar.bz2]
+md5=61bf3e145652089c63edd423ecbc9eba
+sha256=bd6b432e48532942475ea9cc814131054de1b30e8f5520017a42369ea2224c89
+
+[http://ftp.gnome.org/pub/GNOME/sources/gnumeric/1.6/gnumeric-1.6.3.tar.bz2]
+md5=78ffd75ae6abc3bb20dd04407a082a26
+sha256=badaa6899f71ef112515ce81aee02e559e18b5fa87c7f2262390764aaf9b1dc0
+
+[http://ftp.gnome.org/pub/GNOME/sources/goffice/0.2/goffice-0.2.1.tar.bz2]
+md5=73b733556db5721ddfd5c72fc6428a15
+sha256=158258dcb85fd4f3e4ee5a61df49560f8b65d94682ef9322cbb20fb2d3e93034
+
+[http://ftp.gnome.org/pub/GNOME/sources/goffice/0.3/goffice-0.3.2.tar.bz2]
+md5=bb86c6ee2d953da77519cac4e1a5c609
+sha256=fb35c1ae8dcd8cf81836a65536b7f62a274a90ccab6f579519c0885a575095bc
+
+[http://ftp.gnome.org/pub/GNOME/sources/gpdf/2.10/gpdf-2.10.0.tar.bz2]
+md5=9278cd3b9d06e3b1d364452f0e512fa9
+sha256=b6a5abf78363205e01bf1d238eaf4c349c9725f57aa18e2adc0445268540c7e6
+
+[http://ftp.gnome.org/pub/GNOME/sources/gpdf/2.7/gpdf-2.7.90.tar.bz2]
+md5=e0282b35b20b6634fdef14834eb5fb89
+sha256=a145e535bb707c67907a5591edab8ee64f5723e9c66a94ad120abb98e40d99f1
+
+[http://ftp.gnome.org/pub/GNOME/sources/gpdf/2.8/gpdf-2.8.0.tar.bz2]
+md5=a1c054d5de1d5ef361006975c57b45f5
+sha256=2fd7305384094a36b7763d6d82f114db28ba11835a154b2aab99629d0e53211d
+
+[http://ftp.gnome.org/pub/GNOME/sources/gpdf/2.8/gpdf-2.8.2.tar.bz2]
+md5=d7d87c097aa0e5fbb9a7cf2d039db609
+sha256=c1f6b7ef098408ff8108abe38a20f7845839126d62ee741e75ca7f8e086758fc
+
+[http://ftp.gnome.org/pub/GNOME/sources/gtk-engines/2.2/gtk-engines-2.2.0.tar.bz2]
+md5=78e9276c28b509f3203de4873c20a263
+sha256=140541cae8b003d2f7210e2ef060ac328d7e45a04e2cf5fa943fff73c9955dd6
+
+[http://ftp.gnome.org/pub/GNOME/sources/gtk-engines/2.6/gtk-engines-2.6.1.tar.bz2]
+md5=87849bc511cdba018c87fe5d6f7ba347
+sha256=f01b79ff49394c925978d4842c16d1859c9a122fa597b8067c8d62378dafbd15
+
+[http://ftp.gnome.org/pub/GNOME/sources/gtk-engines/2.6/gtk-engines-2.6.3.tar.bz2]
+md5=ba5975f8ab390fa43fc0bf94f4a3b023
+sha256=6d7f9686855225243ee3d56c4d1d17b3485a780ba60cc83b183c361ab7e3b7a0
+
+[http://ftp.gnome.org/pub/GNOME/sources/gtk-engines/2.6/gtk-engines-2.6.5.tar.bz2]
+md5=28469a797ba1e6aaa3f7eea4c9f5f9b7
+sha256=0d7b79b2a369d99f155e85f3f01fca9efb1a5059b5c4406357686a7d8bbfe0d3
+
+[http://ftp.gnome.org/pub/GNOME/sources/gtk-engines/2.7/gtk-engines-2.7.4.tar.bz2]
+md5=b0f27c0f6d5f610ca445a3d82d5779da
+sha256=0a40b43898a898e60bca29ed023034e362467573de52f5e841079c02528cc76c
+
+[http://ftp.gnome.org/pub/GNOME/sources/gtkhtml/3.0/gtkhtml-3.0.10.tar.bz2]
+md5=b05b8551f7803f32ecfcf505a6310f3f
+sha256=47492876466dcbcd82e371264c6a1422f82feb80e40fe25a42ccc1fb7897180c
+
+[http://ftp.gnome.org/pub/GNOME/sources/gtkhtml/3.1/gtkhtml-3.1.16.tar.bz2]
+md5=a16fc3d5e2c7b3d94791bf797588adc3
+sha256=a5b138e5cfa1f5c2c4dbb0a071d5492d49142c363ec9b92da8d7e3a6e6bb35b5
+
+[http://ftp.gnome.org/pub/GNOME/sources/gtkhtml/3.6/gtkhtml-3.6.2.tar.bz2]
+md5=37465fde0f1e1d7ba2284c5a4fd06fe7
+sha256=0c34357bd2b4ed3584e18a30f13a9f5d4c70738872ef90db97c1298013b2f7b9
+
+[http://ftp.gnome.org/pub/GNOME/sources/gtkhtml/3.8/gtkhtml-3.8.2.tar.bz2]
+md5=4455e24142cc914f00f1e8b81940df68
+sha256=d8fc9e7111773448bb07cc2619fbc3b8534a14a9b3075724465c7567cf1a94d0
+
+[http://ftp.gnome.org/pub/GNOME/sources/gtkmm/2.4/gtkmm-2.4.8.tar.bz2]
+md5=c2aee4c259a75fa0dc766d402bef253b
+sha256=218420f1c091846fa5f860e5f12c57650d8719f6cf9b922e7c6a69e0505aac32
+
+[http://ftp.gnome.org/pub/GNOME/sources/gtkmm/2.8/gtkmm-2.8.3.tar.bz2]
+md5=578dca71e56db17f400abd21ca8e7ce5
+sha256=c1c2e1fb0168ecb3a5e773ac0cd74a0e5caeaaf402f108479337794dab8aa75f
+
+[http://ftp.gnome.org/pub/GNOME/sources/gtksourceview/1.7/gtksourceview-1.7.2.tar.bz2]
+md5=a56ea78c74fe93a604357d7c555af0e5
+sha256=38c238ec57bf22023bbc50f70ecbaee8c06b817b9e11f1a3a0ae7faf95cc1f26
+
+[http://ftp.gnome.org/pub/GNOME/sources/imlib/1.9/imlib-1.9.15.tar.bz2]
+md5=7db987e6c52e4daf70d7d0f471238eae
+sha256=4e6a270308a9ae16586bfc133c1a3dfb2e56f431edb66aaa3a80e36e5ed84ce0
+
+[http://ftp.gnome.org/pub/GNOME/sources/intltool/0.30/intltool-0.30.tar.bz2]
+md5=7285d5f792966b563519996ea3af58d5
+sha256=7eb8133f019feedcf02ee1ea6308b58776c4271b091630f94225fd09016cd6f5
+
+[http://ftp.gnome.org/pub/GNOME/sources/intltool/0.31/intltool-0.31.tar.bz2]
+md5=ea8e0d71175c0d542b900e63fb426792
+sha256=2e384061f43317d0eb08d46ecd13a53ab148b0be158fcdd5260aed3e52b9a143
+
+[http://ftp.gnome.org/pub/GNOME/sources/intltool/0.34/intltool-0.34.tar.bz2]
+md5=32c196ae14a90c262310890b498d3512
+sha256=2bf2e0a4055148cda35eae442a98f7c6c80b0403467cde4248ca6c485b271e1d
+
+[http://ftp.gnome.org/pub/GNOME/sources/intltool/0.35/intltool-0.35.0.tar.bz2]
+md5=95c4bd2a91419083ee880a3f53f86edf
+sha256=4ebece4bb752e22b2f15a9fe24e83aec59a3a41b67a9fa9ffd6b805c519e90ba
+
+[http://ftp.gnome.org/pub/GNOME/sources/intltool/0.35/intltool-0.35.2.tar.bz2]
+md5=7cf1a436882a62d420a0fa00ace02a55
+sha256=04aed43abc77fccf20e91b1ba3659c0870c50091d9ce3472ac73a40a704c2fe2
+
+[http://ftp.gnome.org/pub/GNOME/sources/libIDL/0.8/libIDL-0.8.3.tar.bz2]
+md5=39640ea026d81e721b0c78a8aaeb7d59
+sha256=808cd8e7b499a3519f8492a5bda75c55e770f976c98b2c2c21edcca4b9c30168
+
+[http://ftp.gnome.org/pub/GNOME/sources/libIDL/0.8/libIDL-0.8.6.tar.bz2]
+md5=2fde1aed5ea77d532f9e11442f761b81
+sha256=9b9e93c0d7cf62c3c56652445843b7df0cd839376a6a7b89c49dea9f72a13aa8
+
+[http://ftp.gnome.org/pub/GNOME/sources/libart_lgpl/2.3/libart_lgpl-2.3.16.tar.bz2]
+md5=6bb13292b00649d01400a5b29a6c87cb
+sha256=18dc03fcf7514b0b0b0597e39c79353e00dd9d057aedaa5e14d4f08b8f92065f
+
+[http://ftp.gnome.org/pub/GNOME/sources/libbonobo/2.10/libbonobo-2.10.0.tar.bz2]
+md5=68179b91f5043ce0ef050dbbed04979b
+sha256=b1a185c6e20ac50c95ec3ba1aca486819984cd213e9cea69ab0dbca21db78b92
+
+[http://ftp.gnome.org/pub/GNOME/sources/libbonobo/2.14/libbonobo-2.14.0.tar.bz2]
+md5=f1f0255f94e3354250d142b688013fad
+sha256=d49cc01bf85a185836689013191f92c21b625e7f38bcfcd06b41e19201765754
+
+[http://ftp.gnome.org/pub/GNOME/sources/libbonobo/2.6/libbonobo-2.6.0.tar.bz2]
+md5=078942cb9c6a1a31f93958e993353f45
+sha256=cd579e8dff38882d685be01449db92dad7c78900885d5a9abf6160756f83a7a8
+
+[http://ftp.gnome.org/pub/GNOME/sources/libbonobo/2.6/libbonobo-2.6.2.tar.bz2]
+md5=d99ababb4569c66c3002cba97b076c31
+sha256=631f5a27399497fd8bc58be5337ea2cde153c9e6b8e5aa5077704fd887844fd0
+
+[http://ftp.gnome.org/pub/GNOME/sources/libbonoboui/2.10/libbonoboui-2.10.0.tar.bz2]
+md5=bd4fb92f993b7fb7e660bb999465ef3b
+sha256=1ba905987dacedaacec7fbea8575bf9569ad4b65c47fbca4a855630858a89afd
+
+[http://ftp.gnome.org/pub/GNOME/sources/libbonoboui/2.14/libbonoboui-2.14.0.tar.bz2]
+md5=dc26dc17cddc625cac37ecfab263a51a
+sha256=2dd02787e5bad91e1efbfe2fe041eefe8cf13ebce9607d6dd9764c69f37233a8
+
+[http://ftp.gnome.org/pub/GNOME/sources/libbonoboui/2.6/libbonoboui-2.6.1.tar.bz2]
+md5=ee26630368b541dc101a65e46e67f5c4
+sha256=9a7596434959dbecc975c5c90021da2990189016f3fc65d7362362162a4156aa
+
+[http://ftp.gnome.org/pub/GNOME/sources/libcroco/0.6/libcroco-0.6.0.tar.bz2]
+md5=78fb2bf78d469df83b1fc94ce196c1c4
+sha256=39d348bc3b821f7042c4018555c3beffaf887a42e8b084c1bb521c96421c38b2
+
+[http://ftp.gnome.org/pub/GNOME/sources/libcroco/0.6/libcroco-0.6.1.tar.bz2]
+md5=b0975bd01eb11964f1b3f254f267a43d
+sha256=d23619f37fbc175027315ca641adbc51cae8a055fb78f169a35b965d6ebf3059
+
+[http://ftp.gnome.org/pub/GNOME/sources/libglade/2.4/libglade-2.4.0.tar.bz2]
+md5=c8367c58b2f2c98b76ca0667f0f13bf5
+sha256=33b82b27b63368c2022af4f5697905ee704d847730d6a7d078fe862ce28618cc
+
+[http://ftp.gnome.org/pub/GNOME/sources/libglade/2.4/libglade-2.4.2.tar.bz2]
+md5=83d08f9ab485a10454bd5171d2d53fb0
+sha256=c08209650ac1d0f94cf7e4bf692bb3ce61beeeab62b6f375ac652947a386655f
+
+[http://ftp.gnome.org/pub/GNOME/sources/libglade/2.5/libglade-2.5.1.tar.bz2]
+md5=e4734a59f1f2308d7714dc0ebf8163f1
+sha256=15e4c95402caa3c97394189a6b1b693eced23d80e292fcca12585317434adc2e
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnome/2.10/libgnome-2.10.1.tar.bz2]
+md5=dfb1a9b5fd25da8680a166c83ce0b6a8
+sha256=9cf2d20f528470b2fc7995aea314c5898fad654fde265880002de0669b869c27
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnome/2.12/libgnome-2.12.0.1.tar.bz2]
+md5=f239a7ab132d2ec9039bb2537cca1e92
+sha256=f4cd8f6df545328b2b969d1fa8762d5398f7f6c517c7fac730f1d2196e4cf624
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnome/2.14/libgnome-2.14.1.tar.bz2]
+md5=bf53815df10db62bbf00defd4100b8d8
+sha256=4d091bd00e01392d65a856ca5b9fe648025c5988c844d58b25341a275b760fa7
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnome/2.16/libgnome-2.16.0.tar.bz2]
+md5=b3f030f6c677b0e1bcfca7c7e58d6c4a
+sha256=78a2d66bea1d856f06fbd3348abceded8975f09c767a17f58e1d9cd8011ab710
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnome/2.6/libgnome-2.6.1.1.tar.bz2]
+md5=8fb8d073987cb4c5d9bfe577550d11c2
+sha256=eda475bdbc875fcb2c0b53acdb6de0f403bafc7941dd42f076353366d4f348b2
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnomecanvas/2.10/libgnomecanvas-2.10.2.tar.bz2]
+md5=976eada7b499ae6e74966f8888c015d1
+sha256=82e7700a83aa203afc0c8903642546945b66472c66950cfc443f807b629ecc5a
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnomecanvas/2.12/libgnomecanvas-2.12.0.tar.bz2]
+md5=62c0edd3d27803d341662fd9088b2d9b
+sha256=77c57dab746a312cd188ce9fcf91bb99b9a7e06d164f438530d65d018afd35da
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnomecanvas/2.6/libgnomecanvas-2.6.1.1.tar.bz2]
+md5=040257b0231fd5fc507f731d73d9738b
+sha256=fd117570a94e527f76241bc54d2dd53cbea5e17455f5795b5e52afee25eccaca
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnomecups/0.2/libgnomecups-0.2.2.tar.bz2]
+md5=959d5524fe9c37efb55ccfa02e3a063b
+sha256=f70599274dbb575fbbc83bb58179b757800e5d87e59e35f5d95e618c7ec31444
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnomeprint/2.6/libgnomeprint-2.6.2.tar.bz2]
+md5=f742bb321fab833b67270f7b86af0fdb
+sha256=4c8c61d56cded77108d74467a4312e7b9d3bb5236fd1e09f6c3b1205ef5d3d32
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnomeprint/2.8/libgnomeprint-2.8.2.tar.bz2]
+md5=8361c4e1bc3d87b91435807d0c06a3e4
+sha256=155ea46d59a2f366f8c72f97ed3e2f64f6afd259f1049f1d6da93f64ed503389
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnomeprintui/2.6/libgnomeprintui-2.6.2.tar.bz2]
+md5=b26f7f70eb67fe29f20f6312d4f3085e
+sha256=7869603bbda88f35652d9b70af178836ca7612119ab36084ccc35f2d51c83f13
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnomeprintui/2.8/libgnomeprintui-2.8.2.tar.bz2]
+md5=b38d1f6813dd52879ba4174ddc3f1b1c
+sha256=5c4ba52ca52cdb2d89e2fb7a638891ded38e844c08dd992e482f0793cfbc71c7
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnomeui/2.12/libgnomeui-2.12.0.tar.bz2]
+md5=342a5b8a9d427ff950a71a245a5f4485
+sha256=b29baf52bf2c80bf896d59cfd4c4c1515b7df56b14069834b0e78910b9088dfe
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnomeui/2.15/libgnomeui-2.15.2.tar.bz2]
+md5=ec5841c2c01d79e97bc363414e446240
+sha256=3bb709d3dbb7287482d236e418e9ca4b858f28dfd374c6840f0aebae6b206894
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnomeui/2.16/libgnomeui-2.16.1.tar.bz2]
+md5=d9b975952bf5feee8818d3fb18cca0b3
+sha256=552c34d20f30847429e342e6c6ddeece707b69a5abe9aeeafcfeb65cec2eebd7
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgnomeui/2.6/libgnomeui-2.6.1.1.tar.bz2]
+md5=16e6717b5d7da982db00fea6167188ef
+sha256=0c6c91a59e411d196fe56c814bd368224b04e11a341a8ad552398035e8f19d93
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgsf/1.10/libgsf-1.10.0.tar.bz2]
+md5=d3b650ccef7e5278baf546025d4b3848
+sha256=ef86adadcb944cbfaa512c5ad2161c753b21000cd0550c4134364c791c333bfb
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgsf/1.12/libgsf-1.12.0.tar.bz2]
+md5=34c4672edd2e4e814fb82d7b94d71ffd
+sha256=d471b74e778be690d39dad4d41758bc779fc00bba8e87e9fad0457d09d987dd1
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgsf/1.12/libgsf-1.12.1.tar.bz2]
+md5=76473db3245f2f384475f2e40c4ca432
+sha256=d09305b12de8130be558ff0d81d2043e15d726316a255e6a873351c4e6a32f07
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgsf/1.12/libgsf-1.12.2.tar.bz2]
+md5=fe5007f3a21bf7ab707af6c5c0d24489
+sha256=5c8957da8042df34ff447f0911190ef5f212f251e9b6f5ab11c552080d188b1b
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgsf/1.13/libgsf-1.13.2.tar.bz2]
+md5=0894afd88f9e43eada27e52cb22cd0f1
+sha256=ef7833047caf66ed3de7b0195223911d28e45c78617d25c6bd05a53fd6c30a0c
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgsf/1.13/libgsf-1.13.3.tar.bz2]
+md5=b35e95f6bd7b8add9981b6cf6336674a
+sha256=458e7b2ca26f0d212f91b445f0a93db62a679ec671bd3cc980f3c1ac65f06b96
+
+[http://ftp.gnome.org/pub/GNOME/sources/libgsf/1.14/libgsf-1.14.2.tar.bz2]
+md5=aea16a8408b65f95c308b0db3e3d3d47
+sha256=8b78905b3c61f67dbe9b50782b7005ee5a44cdb48dd0f654f42732b4807c829d
+
+[http://ftp.gnome.org/pub/GNOME/sources/librsvg/2.11/librsvg-2.11.1.tar.bz2]
+md5=28400811169e8ed3cc31b5bb0e9555af
+sha256=55b6ce75d0526ddf53006ab6838ccc5eb4a04736b7f52d2df081296f4a6e3ac7
+
+[http://ftp.gnome.org/pub/GNOME/sources/librsvg/2.16/librsvg-2.16.0.tar.bz2]
+md5=dc6385e62ed278732146bca5aab74568
+sha256=2a918455246e8541ce737ea499fd0bcfa207d712cb4efa5583031b9c23c51c66
+
+[http://ftp.gnome.org/pub/GNOME/sources/librsvg/2.16/librsvg-2.16.1.tar.bz2]
+md5=37e046571097ff7ce77ae6e07f096324
+sha256=2989d6a969b6f80d354f8120a5dd625d2c0b4e9e04bf178e9e7b34ae28e2ac69
+
+[http://ftp.gnome.org/pub/GNOME/sources/librsvg/2.6/librsvg-2.6.5.tar.bz2]
+md5=2d1d16f9493c80ce8214e585727334ae
+sha256=11b97cbc654e366adedc28a93e334d34d46365b09a3adb028449119ab67cd643
+
+[http://ftp.gnome.org/pub/GNOME/sources/librsvg/2.9/librsvg-2.9.5.tar.bz2]
+md5=44799d75e940eb4150acdae4f63cbe2a
+sha256=33a5ae2cf0a4056d46f0f09d4bd464ccfa7fa8768a1f03833e2fad5081b9bba2
+
+[http://ftp.gnome.org/pub/GNOME/sources/libsigc++/1.2/libsigc++-1.2.7.tar.bz2]
+md5=212f48536019e1f003d2509b4c9b36df
+sha256=d9163d90e259bfde9164c7b218475a7664a7907a1b3197f17bc1035f36112225
+
+[http://ftp.gnome.org/pub/GNOME/sources/libsoup/2.2/libsoup-2.2.7.tar.bz2]
+md5=fd1d6bf0ec3e57c8a1498b935d13ace4
+sha256=bd5992ab97ae7da9dafce67a58513580831bb1f8ab61e00daed8c12cd7d7dc3f
+
+[http://ftp.gnome.org/pub/GNOME/sources/libsoup/2.2/libsoup-2.2.93.tar.bz2]
+md5=08f9c570a4331778da95c0bc317f6bf4
+sha256=9196f6bd888ade327cb475e95187ebd323594b13ddde7c2202e4e5cb16920a19
+
+[http://ftp.gnome.org/pub/GNOME/sources/libsoup/2.2/libsoup-2.2.96.tar.bz2]
+md5=2704961ca2b9597819f21b40d4a0e0aa
+sha256=e69f4cc9baee9be87400371cbdca1cb03428394c624640e64397089d090dbf0d
+
+[http://ftp.gnome.org/pub/GNOME/sources/libsoup/2.2/libsoup-2.2.98.tar.bz2]
+md5=c779f84c4add124e704e6ea3ccc4039c
+sha256=d98203f017c6e1de7dca2037c533000705fc86b12f29694ddb4db17854e5498a
+
+[http://ftp.gnome.org/pub/GNOME/sources/libwnck/2.10/libwnck-2.10.2.tar.bz2]
+md5=d8276da50ce560c5e66ed94e4238d9ef
+sha256=d03295e5cb22ed7d086ce1ce754c498ed6bc2388c45e4547417d922580d3cd7c
+
+[http://ftp.gnome.org/pub/GNOME/sources/libwnck/2.12/libwnck-2.12.1.tar.bz2]
+md5=f7aad7b8dad79b38d3055d84c3838e2c
+sha256=e881c527398904f450f3983dcebb71094b5f558f823fe57d0af5a4c1fa6f6f7f
+
+[http://ftp.gnome.org/pub/GNOME/sources/libwnck/2.8/libwnck-2.8.1.tar.bz2]
+md5=c0a5a8478064287e167c15e3ec0e82a1
+sha256=e9d15538a0bb97f6a440b23a5b372c41387773065dac69cab9fd1dc1d22a432b
+
+[http://ftp.gnome.org/pub/GNOME/sources/libxml++/2.14/libxml++-2.14.0.tar.bz2]
+md5=4f5644788dfd6ba87ce7c9b6cc28890d
+sha256=dcb0cc5d1871e91859071a0bfa9de1a66703f0482ef5fc745300aa1a2df04cbf
+
+[http://ftp.gnome.org/pub/GNOME/sources/nautilus-cd-burner/2.8/nautilus-cd-burner-2.8.5.tar.bz2]
+md5=970173a3f93270950ca9fd247bdf07a7
+sha256=978d470f5f0cc314fab20ad8b4f771c568915fb78e933960bf33444ac44f9a39
+
+[http://ftp.gnome.org/pub/GNOME/sources/nautilus/2.12/nautilus-2.12.2.tar.bz2]
+md5=1c1304e458eda551da11ed8c52b1faa2
+sha256=9b1a11fde474d0bc0891afeef912aaa01bf8189e453bb555b2977f60f98d5455
+
+[http://ftp.gnome.org/pub/GNOME/sources/nautilus/2.6/nautilus-2.6.1.tar.bz2]
+md5=50c5732c0c9736b7026bce1c6b0007dc
+sha256=83f1d6623e142af30a9b3fa9135ecf973fbb8c89f1dc36a218de0c0fef6ddf07
+
+[http://ftp.gnome.org/pub/GNOME/sources/pango/1.13/pango-1.13.3.tar.bz2]
+md5=9441c965bbf50d637a3e8016c628ee7e
+sha256=8b617cb4555c487a2b6f6a0e89a869506f9b4f320387068621c234c37e69c5ae
+
+[http://ftp.gnome.org/pub/GNOME/sources/pango/1.14/pango-1.14.0.tar.bz2]
+md5=39144843f377ec6b60dbbf1a25d2a49a
+sha256=db8b220a88cbebd51f29c0fbd9cbed7f0f875c1cc198abe1b119c0b7d2c3a3fe
+
+[http://ftp.gnome.org/pub/GNOME/sources/pango/1.14/pango-1.14.8.tar.bz2]
+md5=ed0add14bcfe8a6939ea6a5996aa8032
+sha256=857b832f893ef5fca761910873d96ef09a5879b61944f3713725ca3c9d7eca7f
+
+[http://ftp.gnome.org/pub/GNOME/sources/pango/1.15/pango-1.15.1.tar.bz2]
+md5=bb24f4fd3d303e84827f852b38a682f7
+sha256=80670a6205a52b036c9f17ff85f23c358be8cf41eaa7d9ea48ca4f4c00840a86
+
+[http://ftp.gnome.org/pub/GNOME/sources/pango/1.15/pango-1.15.2.tar.bz2]
+md5=3a57ff08498a210892fe665bf4812011
+sha256=940017c6868a4a3d43f44427a12edf2a9d49a98d4d9a5113f6e7b1c360f36e27
+
+[http://ftp.gnome.org/pub/GNOME/sources/pango/1.16/pango-1.16.0.tar.bz2]
+md5=3ff23998479e98c5dd9a7eaf08f6249d
+sha256=5d83329f9f6c7922b6790841d06794475c57926c9d7f981c49b7d64cbb719de2
+
+[http://ftp.gnome.org/pub/GNOME/sources/rhythmbox/0.8/rhythmbox-0.8.5.tar.gz]
+md5=5ac4e1b5ff4f2fdada81c007ac599cb9
+sha256=654d6b190f4644d82c10b4ce5645b72405c2e78ea346ce3d8eb385fc3f3732de
+
+[http://ftp.gnome.org/pub/GNOME/sources/rhythmbox/0.8/rhythmbox-0.8.7.tar.bz2]
+md5=2ea5f7cd44f79b64721ce60f1fc1c2b7
+sha256=c3ab591b02afbb5b3f76a0c1406c607b9561138bdb0a62105981de559d2920dc
+
+[http://ftp.gnome.org/pub/GNOME/sources/totem/1.0/totem-1.0.4.tar.gz]
+md5=e005e843829657fad1a80dda76f6fa25
+sha256=b7a2c39bcf8d0024519c3297c4b7dadf334bcac2c62198a2de330ff0d1ab0a7b
+
+[http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/ttf-bitstream-vera-1.10.tar.bz2]
+md5=bb22bd5b4675f5dbe17c6963d8c00ed6
+sha256=db5b27df7bbb318036ebdb75acd3e98f1bd6eb6608fb70a67d478cd243d178dc
+
+[http://ftp.gnome.org/pub/GNOME/sources/vino/2.16/vino-2.16.0.tar.bz2]
+md5=89937e6d6cd8f658d037da0a7cfd3f4e
+sha256=bcf62f1121fe704a019363467f9182e29931ee6779f3b65e996171f4caa11369
+
+[http://ftp.gnome.org/pub/GNOME/sources/vte/0.11/vte-0.11.15.tar.bz2]
+md5=a9dc7b330d52ce384e3e5715d396c72f
+sha256=c31e1e930bce109cccd40dc0378b7ee28933482855918f46573e79d9db818be7
+
+[http://ftp.gnome.org/pub/gnome/sources/file-roller/2.6/file-roller-2.6.1.tar.gz]
+md5=68a1b645b2e44227f7aca604fd42f8d1
+sha256=21e68eeb291ab5a9f4d618f2985c16c26cdfeb0f0f37d3b88550446678dab30a
+
+[http://ftp.gnome.org/pub/gnome/sources/glib/2.2/glib-2.2.3.tar.bz2]
+md5=aa214a10d873b68ddd67cd9de2ccae55
+sha256=af1456e075954c122bda008736437b048d5336d0b426847c627e607eb35e59e5
+
+[http://ftp.gnome.org/pub/gnome/sources/gnome-cups-manager/0.31/gnome-cups-manager-0.31.tar.bz2]
+md5=4144b2cf05e381e89fed066793e3b249
+sha256=8ccfd3816757fa8127cf96a530e374c81a449fbcd9391d2d3e1bac29f54ab3e6
+
+[http://ftp.gnome.org/pub/gnome/sources/gtk+/2.2/gtk+-2.2.4.tar.bz2]
+md5=605332199533e73bc6eec481fb4f1671
+sha256=9e6d32b850a45d9c9824fe96cf0cfbb3ad7697552817c9c5b4d60e9abcdd6545
+
+[http://ftp.gnu.org/gnu/binutils/binutils-2.16.tar.bz2]
+md5=bcb9fabaf0eaf91bd38c4ee148658df8
+sha256=5645c3371aac47cbbcc1354eab10ec32777837d7cb4ba47b94c9043612b12f36
+
+[http://ftp.gnu.org/gnu/binutils/binutils-2.17.tar.bz2]
+md5=e26e2e06b6e4bf3acf1dc8688a94c0d1
+sha256=e2c33ce6f23c9a366f109ced295626cb2f8bd6b2f08ff9df6dafb5448505a25e
+
+[http://ftp.gnu.org/gnu/groff/groff-1.19.1.tar.gz]
+md5=57d155378640c12a80642664dfdfc892
+sha256=e07c495a18679b79c7c6f6f475689a33ab2a8ee5af4783e915f08134d1f546d2
+
+[http://ftp.gnu.org/gnu/groff/groff-1.19.2.tar.gz]
+md5=f7c9cf2e4b9967d3af167d7c9fadaae4
+sha256=d864fbd0bf6dea24e4f71736da9902a1cae86d0a1a893b5fe17118927257ec3e
+
+[http://ftp.gnu.org/pub/gnu/ccaudio/ccaudio2-0.9.0.tar.gz]
+md5=1596d3dac1549430e8e395d7441acce5
+sha256=b7fa79d5059b2fab03d7eb064b57f0fe3175b30fb1cc30f232a323d1887bc096
+
+[http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.0/gcc-4.1.0.tar.bz2]
+md5=88785071f29ed0e0b6b61057a1079442
+sha256=1159457a0e4c054b709547ae21ff624aebab2033e0d9e5bf46c9cf88b1970606
+
+[http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2]
+md5=ad9f97a4d04982ccf4fd67cb464879f3
+sha256=985cbb23a486570a8783395a42a8689218f5218a0ccdd6bec590eef341367bb7
+
+[http://ftp.gnu.org/pub/gnu/guile/guile-1.6.4.tar.gz]
+md5=a4aceb5f185878c1de4e8aa7c38b6d1d
+sha256=6391c9735615ee929f4ae23bbfa8373c97ae64923c7fbe72cc4b0e262c4759e0
+
+[http://ftp.iasi.roedu.net/mirrors/gentoo.org/distfiles/fpconst-0.6.0.tar.gz]
+md5=5eaf8e8d1978ca4bbead5b3f163b23a1
+sha256=b8e60157a14739da9382e23e296a0236b0c246b486b4803a1baaa4a73c5bf8d9
+
+[http://ftp.imendio.com/pub/imendio/loudmouth/src/loudmouth-1.0.1.tar.gz]
+md5=d43408ecb82dcbacfc965b4bb989e9c3
+sha256=c7cdd8ebffedf878e7b7d5d3848ecaacec4a7d57afd29602c2c9d64f0d8b5a63
+
+[http://ftp.imendio.com/pub/imendio/loudmouth/src/loudmouth-1.1.1.tar.gz]
+md5=7abcba853b45a8595333da9aa807623c
+sha256=f7614a14e2ae31b2ba22e419f78ba0d21afbb98fdeb24ae117327c3c8af05f1d
+
+[http://ftp.info-zip.org/pub/infozip/src/unzip552.tar.gz]
+md5=9d23919999d6eac9217d1f41472034a9
+sha256=145d95e2ef1ef9add2e3c97d1340907e33ab8749eb1235372e7f0b7af600a8e9
+
+[http://ftp.info-zip.org/pub/infozip/src/zip232.tar.gz]
+md5=8a4da4460386e324debe97f3b7fe4d96
+sha256=d0d3743f732a9baa162f80d0c4567b9c545b41a3385825042113810f2a56eb2f
+
+[http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/1.0.7/source/firefox-1.0.7-source.tar.bz2]
+md5=5704a8c36de84b408e069afb0c5bc1df
+sha256=10056021004ae378baed886358dc4468af60eafbaa9fcac93401e4db9b9ef7fd
+
+[http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/1.5.0.6/source/firefox-1.5.0.6-source.tar.bz2]
+md5=3a659d384744cab77f90920f6d529c89
+sha256=79e47279d839914e5052e1b1f21588c51d7f62c3f5e32205f790a60cafdbb5ac
+
+[http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.1/source/firefox-2.0.0.1-source.tar.bz2]
+md5=7a1fc804ed735c5b7e9b1498bac8b5db
+sha256=b7db1a7d7ee37707dd5736a656982d1deaea7b29654f49564c2aa54c59ba1e24
+
+[http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/2.0/source/firefox-2.0-source.tar.bz2]
+md5=03709c15cba0e0375ff5336d538f77e7
+sha256=dba581583ef390fab90c39c9a667bf1a5bfbeaec75e6fbb2a9cedcc857d26800
+
+[http://ftp.mozilla.org/pub/mozilla.org/js/older-packages/js-1.5.tar.gz]
+md5=863bb6462f4ce535399a7c6276ae6776
+sha256=ef72a154320c9949f8de0732e8dbfa186b83feb0a5e890d90807757de9998585
+
+[http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/1.0.7/source/thunderbird-1.0.7-source.tar.bz2]
+md5=e6388feb0ffcd189af779f165c124b4d
+sha256=6b964fb220a46438adf6ec37082da66332a3ce74ca4913b863b17d9ab720681f
+
+[http://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-2.1.2.tar.gz]
+md5=88d35af903665fecbdee77eb6d5e6cdd
+sha256=f40f0318e8c8f7eee802de91ee8a9b5673c0f28a15527883bd20826e74dff54c
+
+[http://ftp.nluug.nl/languages/gcc/snapshots/4.2-20060513/gcc-4.2-20060513.tar.bz2]
+md5=ac6d19831220c4aeef4475492725486f
+sha256=98bdb26cd2644f2290e34453d9115b88bcff940bd1feb88db5a0fc557ec0ea5e
+
+[http://ftp.rz.tu-bs.de/pub/mirror/ftp.easysw.com/ftp/pub/ghostscript/8.15.3/espgs-8.15.3-source.tar.bz2]
+md5=4ec87a3da20c1b433ffbe0ffe3675fcd
+sha256=c1f5eefc058b08113f90bc583436399d71644b61872fa39ab4982a58a80baa62
+
+[http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries/en_GB.zip]
+md5=6fb885d57899c3e6aa2b27f3510deb37
+sha256=f4b43083923e2998298fd270a8a9f9ed570f4fbebeaa46ce5f1788b76920308b
+
+[http://ftp.sudo.ws/sudo/dist/sudo-1.6.8p12.tar.gz]
+md5=b29893c06192df6230dd5f340f3badf5
+sha256=56f7d86032538a4a98d90af3742903a09ba16d6db82b593e4a47605f87fa581a
+
+[http://ftp3.ie.freebsd.org/pub/gentoo/distfiles/fbgetty-0.1.698.tar.gz]
+md5=1705bc0f8f1e03fe50d324ba84ac4e56
+sha256=332cbffa7c489b39a7d13d12d581c27dfc57ba098041431a6845b44785cf2d35
+
+[http://gallium.prg.dtu.dk/HVSC/random/HVSC_45-all-of-them.rar]
+md5=5394dac412dbe34d2dfe63cb91bdce8d
+sha256=6068499eeb3aad19d2f860390c65496cf38c5f5e5b54422db6ec2f67abbb8d10
+
+[http://gnokii.org/download/gnocky/gnocky-0.0.3.tar.bz2]
+md5=239cfb4b743dc69723acbd01c44e7128
+sha256=fb11b959c039f1a2c5471b2dc1270607acfc15fb667a69c2d4bdb0970b3595bb
+
+[http://gnosis.cx/download/Gnosis_Utils.More/Gnosis_Utils-1.1.1.tar.gz]
+md5=de859c386a1311d386b7080f4eb5c137
+sha256=89eb9c69c5637e5b40f1bcb6f33ef07ff6b25841677d84ec2fd455ce741612b7
+
+[http://go-mono.com/sources/mono/mono-1.2.2.1.tar.gz]
+md5=b67ef657b83ca26249d7b9e9c5e7da69
+sha256=d68f597c303678c3f325f552a0e2780b613dbf34d093c2269c002127be4953e5
+
+[http://gpe.linuxtogo.org/download/source/blueprobe-0.13.tar.gz]
+md5=33745b0e86603124654773c1361df33e
+sha256=b4318d0e1ba7422ba4415838448718e037efe4d8236cf12132075ccf36d1803d
+
+[http://gpe.linuxtogo.org/download/source/blueprobe-0.14.tar.gz]
+md5=66fe515418b39103d6b985762be7a28d
+sha256=ee48eb2d5cd06247697e4651f19d8ab671f59798cf58348a67d3ec556b2bdc8c
+
+[http://gpe.linuxtogo.org/download/source/blueprobe-0.15.tar.gz]
+md5=3fcec51fae99527473b2bedbd5869a4d
+sha256=9473a68a4202d0df5c6883a6d0045447afda1af8d13969038afdc13291989376
+
+[http://gpe.linuxtogo.org/download/source/blueprobe-0.16.tar.gz]
+md5=3c07786b7811c0bd6f3887ac389cce13
+sha256=01b3fd44ff335df5cc5c43628676c94c75fbd6fd897cd2802c99fcc91b57d383
+
+[http://gpe.linuxtogo.org/download/source/blueprobe-0.17.tar.gz]
+md5=a3b637d2aee211800b066493f6ae5ae0
+sha256=63eda6008b0c7a422e1b4fdda91b594d936188c29af49379447cb7fb445965d6
+
+[http://gpe.linuxtogo.org/download/source/blueprobe-0.18.tar.gz]
+md5=174a1f2c9ffea150c7abe4becd99f2cd
+sha256=5980de18e195be06f99afbc76f3c72e7ef7dbba03f16814351d20b8a2531c474
+
+[http://gpe.linuxtogo.org/download/source/detect-stylus-0.10.tar.gz]
+md5=18934b6796441642847ce796bee3b23a
+sha256=9ae500ffb1af6e29da00114bad18b776c2f24872c254ee62f6283948beaefc15
+
+[http://gpe.linuxtogo.org/download/source/detect-stylus-0.13.tar.gz]
+md5=e52d681c5ca11f4a9491624ab8c4fa90
+sha256=e9f0cd45a82d2f60af7e927b1740b5971e9007bf7d05e39a900db2dcb7871916
+
+[http://gpe.linuxtogo.org/download/source/gpe-aerial-0.2.11.tar.gz]
+md5=4b06838f0ad963f8c01640e8311130cb
+sha256=30be2c450915938957bcb077bc5cf17b84eb9163ebe043e7324c359fb965c721
+
+[http://gpe.linuxtogo.org/download/source/gpe-aerial-0.2.12.tar.gz]
+md5=dcf115e16bcc393b2b45fe34ef06fdbc
+sha256=6280881516f851edb075882d8114bd9bee6906b924a9923645793e937e4d6e68
+
+[http://gpe.linuxtogo.org/download/source/gpe-aerial-0.2.13.tar.gz]
+md5=528f95a23999a248f4425436d67585a7
+sha256=0cd7a9229a0c583dc9dc74ef3a2c542ee5f64f8e6c641d50cadc11c664c0c109
+
+[http://gpe.linuxtogo.org/download/source/gpe-aerial-0.3.0.tar.bz2]
+md5=b0d4967f8d0af9d2c647ce6cfa2c7ab9
+sha256=c22a17a07acfa8f2f7243afe6e00005e09a4ebe8adeb78dbe83c06ccbfa7ec0f
+
+[http://gpe.linuxtogo.org/download/source/gpe-announce-0.10.tar.gz]
+md5=3791be9e14d08687fff3d6520cbd4e09
+sha256=a332aa05f21c9e977cf07bbe0a9a81e64fa0e3f8b807531609448f09976d8b2a
+
+[http://gpe.linuxtogo.org/download/source/gpe-announce-0.12.tar.gz]
+md5=111714426410274e8ba1a9abe2804d90
+sha256=8895c046511d06c47dcc8d8608cb220e0b608cede1ea169174ab3bc451d111c5
+
+[http://gpe.linuxtogo.org/download/source/gpe-announce-0.13.tar.gz]
+md5=74ca3a6e37c9d9ae9fe2c50fc6d8350f
+sha256=63490b00244b0e6d7b54205e0d27ab22784ad0b328c7fa3e56aa0133677884fe
+
+[http://gpe.linuxtogo.org/download/source/gpe-appmgr-2.8.tar.gz]
+md5=2dd3d56eee8905451e9c31cfda620f7a
+sha256=1a797188e9786936c32fee6ba3e20f01d562583f6407cf8d83f729ab708e1342
+
+[http://gpe.linuxtogo.org/download/source/gpe-autostarter-0.11.tar.gz]
+md5=d993818295e00754592ee6c13db4a723
+sha256=702c3336d96fb49678c1b0a95e16c76e398c63f58c947df6ba275e9cacad4629
+
+[http://gpe.linuxtogo.org/download/source/gpe-autostarter-0.12.tar.gz]
+md5=254a580e67d8e804adb3583281ae8586
+sha256=532e1b0122c845295987deddf72ebbfd3c319f6b714f033f5daa74f068acb1f2
+
+[http://gpe.linuxtogo.org/download/source/gpe-autostarter-0.6.tar.gz]
+md5=798085fd2e2b25f5145a05104d39ebc6
+sha256=8ce9aee873a337f876f82d54eb10a258911a03b3abb4eb79f9b2f04c8c304bbb
+
+[http://gpe.linuxtogo.org/download/source/gpe-autostarter-0.7.tar.gz]
+md5=f098c17601426c696f45c1b244fa1f73
+sha256=094157f59ac1a5146953bc74e5dac9f4b28fa14545bc12df87899f61cdfe18d6
+
+[http://gpe.linuxtogo.org/download/source/gpe-beam-0.2.3.tar.gz]
+md5=6133ef2870d2a9eacd967b1d4c3c066d
+sha256=8521f9584b83133bee7fd7c330d043e22139941cb6ee3147717e28091db23f6d
+
+[http://gpe.linuxtogo.org/download/source/gpe-beam-0.2.6.tar.gz]
+md5=4bd3894de194ee023a4c7af6c2a2e9cd
+sha256=86a0fe68a93308b6d5c0e19da85789a6e48d88ba08dee98516f21b3b0ed85854
+
+[http://gpe.linuxtogo.org/download/source/gpe-beam-0.2.7.tar.gz]
+md5=d68b45964816a6a3d98d1501bc520b6f
+sha256=386dd48c7bce7900291c27deef3a68fd00257f6072a1644517ce49a4b0cb1936
+
+[http://gpe.linuxtogo.org/download/source/gpe-beam-0.2.8.tar.gz]
+md5=2730dc64c643d4503346eca41bf40cc2
+sha256=056227431c47301b9ebfd9e12a5b2597d0f625697299b7027babf81d335b9d45
+
+[http://gpe.linuxtogo.org/download/source/gpe-beam-0.2.9.tar.gz]
+md5=a22e4b7ca7d5730e564cb92146de4b86
+sha256=656685f167454f577a5b6441ffb55a51d38b53a4b449fde7758a80852cfc0bc7
+
+[http://gpe.linuxtogo.org/download/source/gpe-bluetooth-0.49.tar.bz2]
+md5=fd8e7708a0ca7ef70b60741ad210c4c2
+sha256=0f6a83697edbab14ee47d9f2a84de12eb66a1f76169328b2410b2cb90604a487
+
+[http://gpe.linuxtogo.org/download/source/gpe-bluetooth-0.51.tar.bz2]
+md5=202ddaf102791f504e543593b88eff1d
+sha256=d6c2534e5e54bb24dbdb0e28085f92a076532a890655db7d37a56aa64d73e521
+
+[http://gpe.linuxtogo.org/download/source/gpe-bluetooth-0.52.tar.bz2]
+md5=ed12955524a0f65f83b33b23f260cf94
+sha256=7d85be0973837d5499f0410179f84ac1351dba88eea22eabb13f86b65c7250ee
+
+[http://gpe.linuxtogo.org/download/source/gpe-bluetooth-0.53.tar.bz2]
+md5=274dc2392120177ab88c5ecaca92ffde
+sha256=a20f1fc9b1f5d1a2d6e4cd85cf8e81301f63dc94f93b913318a737752be3f545
+
+[http://gpe.linuxtogo.org/download/source/gpe-bluetooth-0.54.tar.bz2]
+md5=197603d957dda95a92c92038fb9f8341
+sha256=5ffb41e7375c55450fc55428fd7b19e158a93ee91ae6b9519953363ec05f82c7
+
+[http://gpe.linuxtogo.org/download/source/gpe-bootsplash-1.13.tar.gz]
+md5=8be734730d5c241bc36fa9b65b1445a8
+sha256=842d0c6d40201cba0361b9a2d85e4e3363d9de34601d054e42582c82c637d239
+
+[http://gpe.linuxtogo.org/download/source/gpe-bootsplash-1.14.tar.gz]
+md5=cc11d81a1772cbf5629028dd39419abf
+sha256=3926b7ef0ccd68d6bd83797ca925945673e4ca0a938302d265ed0e4b1eea5657
+
+[http://gpe.linuxtogo.org/download/source/gpe-bootsplash-1.15.tar.gz]
+md5=205b47792c4adc4e1d07d6e4ce8cc466
+sha256=586c4635a104e6566284d5edf5d64fbd6d944a92b5c1b493baf16e78db540060
+
+[http://gpe.linuxtogo.org/download/source/gpe-buttonbox-0.5.tar.bz2]
+md5=c5c4bd13cbe72f05b72f182bdb466d96
+sha256=2a40c9cff09def44f3032d9165c0040ff13efef84f6b8a5940c787bd43391311
+
+[http://gpe.linuxtogo.org/download/source/gpe-calculator-0.2.tar.gz]
+md5=6dc5eed9b200a45cf007f7a7ed4c2d23
+sha256=e51bdbba46d7d6950c1f4d3139a167f4c823e403f8a53b30a16cea32c7d540dc
+
+[http://gpe.linuxtogo.org/download/source/gpe-calendar-0.72.tar.bz2]
+md5=b10a91ce3fb39b87656fc5c5510b68d6
+sha256=780ddb4f2bb72e3e8d970ebc647c8040cfef0fccd405773cf7776074c26175b6
+
+[http://gpe.linuxtogo.org/download/source/gpe-clock-0.14.tar.gz]
+md5=367d329ff8af75abcb7f214e9b669c9c
+sha256=fb5790c58430e1ce9cfdccef117de4937c35a411894642aea622638519e5b764
+
+[http://gpe.linuxtogo.org/download/source/gpe-clock-0.20.tar.gz]
+md5=3084a12de394a252048603128afe7c08
+sha256=a6e74b2a9a7ccc24e095dbbc473c9ad7e69e06e8a30cd9581941763a75237b78
+
+[http://gpe.linuxtogo.org/download/source/gpe-clock-0.21.tar.gz]
+md5=b0b2c843a562f72df32a66993a215e3c
+sha256=ff0dfe70c1ac68180dfb26da83d9aee9f0e9007d428dae225abe7dc3bba512b9
+
+[http://gpe.linuxtogo.org/download/source/gpe-clock-0.23.tar.gz]
+md5=050943c68ee61ef8f2a25410a60d725e
+sha256=5a1d21538353fbb2038b3948385fa32faec1951162cd0d2c52a2687c7fc6669b
+
+[http://gpe.linuxtogo.org/download/source/gpe-clock-0.24.tar.gz]
+md5=4e51de389b881d730f56d439e8573271
+sha256=2d40ea6851c2b90261b88941dc7a8ee83c4a333e7a2acdd4eb0afbc87b5e5da1
+
+[http://gpe.linuxtogo.org/download/source/gpe-clock-0.25.tar.gz]
+md5=75e087fcf8345cf1bfde7e172844e949
+sha256=0070e1c622f3f0cf9c40556f551de3e6059c7f8b3070516c0e4173dd09f57759
+
+[http://gpe.linuxtogo.org/download/source/gpe-conf-0.2.3.tar.bz2]
+md5=beec965857c6fb5f55dd2a322cae7e37
+sha256=75bfe61f49bad95ff4220581c04af4fa3617cb639d98141d833e6aef68b77468
+
+[http://gpe.linuxtogo.org/download/source/gpe-conf-0.2.4.tar.bz2]
+md5=c8685a71cfba4a78dd7eecd29e52fa72
+sha256=ffdc3070784c50487c0463d2c166da340f6f94eede18c37883c6c5bac3d5338b
+
+[http://gpe.linuxtogo.org/download/source/gpe-conf-0.2.5.tar.bz2]
+md5=11b9e8b7d7978fc44e5f079e7daa657f
+sha256=6a246caeb7d29c2afb48e8c70ef8e1f2ba2a4642faeef3defd266522304d278b
+
+[http://gpe.linuxtogo.org/download/source/gpe-confd-0.16.tar.gz]
+md5=2677260df7d834ec416450e09ae5ba72
+sha256=9ffba12d92466f9e34fed21e38baae5cbb6608436ee53fa3704fe3be5fceb4af
+
+[http://gpe.linuxtogo.org/download/source/gpe-contacts-0.40.tar.bz2]
+md5=bd846bb88824dc58c7919e4354ab9b11
+sha256=6fcbd13db6ee9c4b01504c4f7fcc940b5634775c71d61db98b8daf4ca71fff67
+
+[http://gpe.linuxtogo.org/download/source/gpe-contacts-0.42.tar.bz2]
+md5=3df07fc223f781fe7d6e3e9ec820ecd2
+sha256=e2c141aba89e8e0c88c2b4b7af3bf3a62d95a3e74d8564715e2175fd86706547
+
+[http://gpe.linuxtogo.org/download/source/gpe-contacts-0.45.tar.bz2]
+md5=8d7af11536ce8d7a732ed62d2b36bba6
+sha256=f35c5e664ba0e9c3b3d694cdb1ee9af7c9195b6ace8e2ddeec0a0c21d7632df0
+
+[http://gpe.linuxtogo.org/download/source/gpe-contacts-0.46.tar.bz2]
+md5=5fcffd454e9c8f0b14804283c32da0ee
+sha256=5ceab2c275036da754ae7b7cbe162f9f2a5936334050beb34838d4f82e89843c
+
+[http://gpe.linuxtogo.org/download/source/gpe-dm-0.48.tar.gz]
+md5=92e81fc34bb4643088efeaf1f6423483
+sha256=4a78e69b44209d1c79a8649024584175aea518e5862d39c582944719a9a5e995
+
+[http://gpe.linuxtogo.org/download/source/gpe-dm-0.50.tar.bz2]
+md5=f7b53abf39bd3fa48cd3e0378bd47534
+sha256=bc656eb1846509539bbfaf9269f07588f6f3c05c847b41b351a7571a252f6fee
+
+[http://gpe.linuxtogo.org/download/source/gpe-edit-0.29.tar.gz]
+md5=108d1739f06678d45d1529301de6a7c8
+sha256=ec3805a8d7b1577f30379f8b3bd59f5f1e1786aa574f75aa254a30bc19b6b79e
+
+[http://gpe.linuxtogo.org/download/source/gpe-edit-0.31.tar.gz]
+md5=68d5642f42a169a26bdf71e3e3f3ce50
+sha256=29e0fb191988afa5e7df2cb7ffcdb4650c49bb7ed44f4b1f01fc2644b793dbb0
+
+[http://gpe.linuxtogo.org/download/source/gpe-edit-0.32.tar.gz]
+md5=ea6fa0be7c84d69ab45c21c45c5a798b
+sha256=40f1753f39199bf88c128f2cd6b25e4ce3bd93c46395e12dd7a8cfa73cdbdc51
+
+[http://gpe.linuxtogo.org/download/source/gpe-edit-0.40.tar.bz2]
+md5=26bca78fb1619de3a36b6b242997339b
+sha256=9aee93207a4f48b16c17bf59fe151f2a8890731b73e07bfcb73d2fcc297eb848
+
+[http://gpe.linuxtogo.org/download/source/gpe-filemanager-0.23.tar.gz]
+md5=2ddfe35b6bcf3269de704bfb44b568e1
+sha256=434991a5c562ebb1e381e05dddc6c8916f5a8c851dc4d2a6b3781db1222a8f69
+
+[http://gpe.linuxtogo.org/download/source/gpe-filemanager-0.24.tar.gz]
+md5=8590fa6cee86c3ae66c449470da62b20
+sha256=172e19d8ccaec35329064184790f9e4e64f1b31f412ba8b12c21860208a4e35e
+
+[http://gpe.linuxtogo.org/download/source/gpe-filemanager-0.25.tar.gz]
+md5=625cb4e7a316c3a17f5cedca90dc3cb7
+sha256=debebb0d6572ebaeabcd7581d688f69e20024f25be5fde01e6d0d8aaa149ebb3
+
+[http://gpe.linuxtogo.org/download/source/gpe-gallery-0.97.tar.gz]
+md5=ba488fac2b1484862c2e52cd017793cb
+sha256=84ae88670b1e7ab5b94d2db83644b85f2e0c85eb7d91fe909fb7366c8a7fe2b3
+
+[http://gpe.linuxtogo.org/download/source/gpe-go-0.05.tar.gz]
+md5=79a077b7434e7964afe4c116c9da7295
+sha256=d6fdfd927c926145c488d099d6984c291218f898902bb9607ddef340201ae142
+
+[http://gpe.linuxtogo.org/download/source/gpe-icons-0.25.tar.gz]
+md5=9845af06d8337fa41725c731ba3dab08
+sha256=2914804f6dc63fd19247674cb6c8490f21ab66de9c267d0c55a9f891eebe0c72
+
+[http://gpe.linuxtogo.org/download/source/gpe-irc-0.08.tar.gz]
+md5=0f934a03d8c4d18a9a977ff704a741c5
+sha256=4731b10ca33f1a4cdf01dea88144d602bc23a8f5a8f12d925b59ce56e837b79c
+
+[http://gpe.linuxtogo.org/download/source/gpe-keylock-0.12.tar.gz]
+md5=933848f1db682edba169c34ea280a564
+sha256=3904c2dcf6d309247e1f8138ffba94ecd1d14e48c1b9306beebcccb28dbbd87b
+
+[http://gpe.linuxtogo.org/download/source/gpe-life-0.2.tar.gz]
+md5=dbba547ab6ec998ea35e110fa4daf823
+sha256=37cc3abf96ccbc2fc1e5d2691144154d80ad911d63614d6baa65b016268ebccd
+
+[http://gpe.linuxtogo.org/download/source/gpe-lights-0.12.tar.gz]
+md5=91d4344ab6d00115ee73f7d97c58acee
+sha256=98ce715b8627de958cbd4fbc11f72cfb7aed42825eb21995d4d46a676510c126
+
+[http://gpe.linuxtogo.org/download/source/gpe-lights-0.13.tar.gz]
+md5=fa4677ecb8640c5d85c421dcaebf64fb
+sha256=e9de4a153ee3adc66363a583cd7db6676e92f010d783e517ef935aa35e96370e
+
+[http://gpe.linuxtogo.org/download/source/gpe-login-0.87.tar.gz]
+md5=d6939028883ecbb36f0fa2988922065b
+sha256=c87b5b67205dded1df87436badf0af307937e8d8d67c6279e961ee043dd23388
+
+[http://gpe.linuxtogo.org/download/source/gpe-login-0.88.tar.gz]
+md5=459167b93c5ec6965d841e680243713f
+sha256=dde5a6aea6c997fa7621278c3c9fa95d4e18e1019409dd94a7e36b72615fa761
+
+[http://gpe.linuxtogo.org/download/source/gpe-mini-browser-0.15.tar.gz]
+md5=b048cee7254d7fe6eb1e2821ce8706df
+sha256=aa9c2dbe8d763b4461a42d46378cc49335a266a7d6dcd794ecd46fac037c8913
+
+[http://gpe.linuxtogo.org/download/source/gpe-mini-browser-0.16.tar.gz]
+md5=858f3e7219cde7b18e69293526020416
+sha256=36d2487895d3579ae3e8693ebe789b5de454506fc572937dac2fb7ef512f105f
+
+[http://gpe.linuxtogo.org/download/source/gpe-mini-browser-0.17.tar.gz]
+md5=749c571ec28e2ea4f31602f3d5609e4b
+sha256=19d345571344f65e35b06c3faad6cfc86afeb8a41533d39bfbf364e1da34188c
+
+[http://gpe.linuxtogo.org/download/source/gpe-mini-browser-0.19.tar.gz]
+md5=922640f40f67d15892d9ea8ec6c8ffea
+sha256=ece034b916a7760cfb854baab474b7931246bdb078c814366bf90a9fbff246af
+
+[http://gpe.linuxtogo.org/download/source/gpe-mini-browser-0.20.tar.gz]
+md5=1a7a4095cafed9cda21e500842b686a1
+sha256=ddba5fea0424c9c121269e96ea202014a29568263d478ac5682022973d2986f1
+
+[http://gpe.linuxtogo.org/download/source/gpe-mininet-0.5.tar.gz]
+md5=4d199db47e91da9c89817e8bfbc2cded
+sha256=288d2470e6c8febb717ed0affa1f55484a0d0a4cdb8a331fae08d56d298a5653
+
+[http://gpe.linuxtogo.org/download/source/gpe-mininet-0.6.tar.bz2]
+md5=4ac59b3a7718dea0e5eca05ee783a316
+sha256=80586b5691b9f0173d9280387258e49ff6740a6ef3d5f4dbad237a5de79fc86d
+
+[http://gpe.linuxtogo.org/download/source/gpe-mininet-0.7.tar.bz2]
+md5=5630b45b1862f4032dd3a177c2b74402
+sha256=980320814b23cc51303436afb110397b15b950896f7f229484005f81d5cb6346
+
+[http://gpe.linuxtogo.org/download/source/gpe-mixer-0.42.tar.gz]
+md5=41b1ef201e4583e55a7462f1404de70d
+sha256=f8eb8f0c3af15acd5ad8c17fcc6d1ed2a43c35877d68a403eeb5bc1a1f0b3ccf
+
+[http://gpe.linuxtogo.org/download/source/gpe-nmf-0.17.tar.gz]
+md5=3fd22f7d95f9e1f328d768dedf7313a5
+sha256=6c11e7af568bf13602dec79cba5aacea590a2ec585f96dc96f87fa8950ffc31d
+
+[http://gpe.linuxtogo.org/download/source/gpe-nmf-0.19.tar.gz]
+md5=380627dc5b640af23bcc5b25033dc9a8
+sha256=ef5e8fe2a95a8ffbf825b6955db8f8028b35f4247bbb3ce089d2a74858d01e3b
+
+[http://gpe.linuxtogo.org/download/source/gpe-nmf-0.20.tar.gz]
+md5=28e1ff870af9b38d0cce345d339b857a
+sha256=e3f89854fde8db448bd60fad1dce9a89aae994e75fa0cfdf97888891563e7232
+
+[http://gpe.linuxtogo.org/download/source/gpe-nmf-0.21.tar.gz]
+md5=3181586b20fa77d1bd83024bc0aaa584
+sha256=2629167d8d27b083e34a6b39e0c8fffa035c84819f8058fdc6dceab60e3a0cf9
+
+[http://gpe.linuxtogo.org/download/source/gpe-nmf-0.22.tar.gz]
+md5=c19ffe9fc19508c4b4fe82d322e926e2
+sha256=5ec530b1b0dc1b68d455106cf5b40e82bbda92448171a56c13b939e06701ac21
+
+[http://gpe.linuxtogo.org/download/source/gpe-othello-0.2-1.tar.gz]
+md5=2997e14b0956e73580e6c19ade35eb4f
+sha256=8beb35d6bc48e083adc6dd39851632f042ad364b5b8579c14bf8cdcf7dd91552
+
+[http://gpe.linuxtogo.org/download/source/gpe-ownerinfo-0.23.tar.gz]
+md5=172ce9f0a83b11eb1bb36a5b87e74e00
+sha256=bfd89166940eba6139173d922af4834e2dd36e75c29c0f5ac6702f5188d7ae7b
+
+[http://gpe.linuxtogo.org/download/source/gpe-ownerinfo-0.24.tar.gz]
+md5=c199248a2100398445542af9cab43338
+sha256=e997f5fda35c635533d37827c8a76361e124426ac5a130a18deebbd77b7502a8
+
+[http://gpe.linuxtogo.org/download/source/gpe-ownerinfo-0.25.tar.gz]
+md5=bdfe3aef56a0fa27e10af29dedd96083
+sha256=d06d917ce07cb3fedcd98aa558bc9f16473c8eeb9817ab8e68baeabd2a9152bd
+
+[http://gpe.linuxtogo.org/download/source/gpe-ownerinfo-0.26.tar.gz]
+md5=db85239008c08072c7fca7de528d2f84
+sha256=9616a0cf943e72974bc27fd4c90d76871ba9642f9f45e2119a3b8180930ce534
+
+[http://gpe.linuxtogo.org/download/source/gpe-ownerinfo-0.27.tar.gz]
+md5=30e0da89ab7610e53d5d15f7489d7982
+sha256=9011bf84c445b45aff1aedff23370df2877585d60d5c5e9fe2119095e5440b7f
+
+[http://gpe.linuxtogo.org/download/source/gpe-ownerinfo-0.28.tar.gz]
+md5=25b02a6d7fbbb2966e2481930bd55591
+sha256=3072876709e8fb58eda893ec0acb50b3eb6b8a7c808f4fbd74657c139933971a
+
+[http://gpe.linuxtogo.org/download/source/gpe-package-0.2.tar.gz]
+md5=764e50856c99140d20842e05ebb95e3e
+sha256=f82ddcf48e582eb1743727c1767a5dc81fa533c1a5ca40f3ac99a50a4479aefd
+
+[http://gpe.linuxtogo.org/download/source/gpe-package-0.3.tar.gz]
+md5=229ba1d7755cc3e77d1e711281ae3554
+sha256=4226c983948521ead98ea0b02939de6b28bacba6f929b9404b9154ffbfb3718e
+
+[http://gpe.linuxtogo.org/download/source/gpe-plucker-0.4.tar.gz]
+md5=05e4285049e9458bf1bb52a56f5ffc26
+sha256=5a97f5365d97b7332c9aa32e134ec7ae32587873416ec2b6eca2b73635c3f62d
+
+[http://gpe.linuxtogo.org/download/source/gpe-question-0.04.tar.gz]
+md5=8187ca6f6e5da27a3b224469a3cbb76d
+sha256=14fb095d231343a576da5e8aa7807b09cd7bde2df59a5a569495dc03a434d178
+
+[http://gpe.linuxtogo.org/download/source/gpe-scap-1.2.tar.bz2]
+md5=875ed73f43584cd3ece4a7ac28dd692a
+sha256=a7ec60003a96975523598c2ef5f2927c9a362e689e7159b268c7fe431754635a
+
+[http://gpe.linuxtogo.org/download/source/gpe-session-scripts-0.67.tar.gz]
+md5=774c64ed54455f1297ecbeeffdc52eed
+sha256=da051f5049d44415fff02b48368db4e3e3b6154135a50f990844d73896d18e19
+
+[http://gpe.linuxtogo.org/download/source/gpe-shield-0.9.tar.gz]
+md5=1373a00d9dba5508da579c585c585d6d
+sha256=07d2a2d1c1868b292e3c362e4df4bf32c2aa4b6b22e394a9c5448b8cff4075dc
+
+[http://gpe.linuxtogo.org/download/source/gpe-sketchbook-0.2.8.tar.gz]
+md5=72d9e5468cf1a53b66a378ee2e85dc1a
+sha256=6335c48b8cf61ad49d01470354fa9e2a9ec072871cd9fbbdfd872461d012359a
+
+[http://gpe.linuxtogo.org/download/source/gpe-sketchbook-0.2.9.tar.gz]
+md5=e95606bf33779b67acbfd626ad80000f
+sha256=dc0648a0f1eabbf42a5ec8d04e02a576097b68cc1ce0558546d9081cd89b5e1b
+
+[http://gpe.linuxtogo.org/download/source/gpe-soundbite-1.0.6.tar.gz]
+md5=9eac057d9a91b5b12b2b1cd7d88b60a6
+sha256=44278e12358531f588501b2d79bb3a32c69e3cddb243674a414df20e3990f196
+
+[http://gpe.linuxtogo.org/download/source/gpe-soundserver-0.4-1.tar.gz]
+md5=b9abca6437f13c4fc5bbb244738de9ea
+sha256=07c91f5433d7c6c44c54640e9f5b65addedaf0eec5c5705175608404bee6de37
+
+[http://gpe.linuxtogo.org/download/source/gpe-su-0.11.tar.gz]
+md5=557d54b0d55fa5134436e8b4afb1e624
+sha256=2ab8f54d65d1555fe71307a685b1be9b2d0e04f862feb5e2487f54ef140dad2b
+
+[http://gpe.linuxtogo.org/download/source/gpe-su-0.14.tar.gz]
+md5=d7a0b0ac64f60a7cceb77b65d50176e1
+sha256=405a5137e9de5487e942d54cc5ee8edb66c54cec48925ff90368b36e38942536
+
+[http://gpe.linuxtogo.org/download/source/gpe-su-0.15.tar.gz]
+md5=3830c34b4482f892607c3b768e6dc7f3
+sha256=468a61461e0569dc55eca454a5e8676163b6544f0af41241e97479604f029791
+
+[http://gpe.linuxtogo.org/download/source/gpe-su-0.18.tar.gz]
+md5=7e22069a6c59138f8b6e3f9cbc6bb616
+sha256=bf1df54e88dbfa94be7b9f9a4c897635dca1ec56885352d8ebeac99f747b0554
+
+[http://gpe.linuxtogo.org/download/source/gpe-su-0.19.tar.gz]
+md5=1225673cf9cc1671a031f0eb2b57b3f9
+sha256=b0a7db0fceeda65b88bb8abd8743afb9bf0d5674ed3fe6444439c0dad90da27b
+
+[http://gpe.linuxtogo.org/download/source/gpe-taskmanager-0.17.tar.gz]
+md5=fd52d952a11913f98c833f6af012099d
+sha256=7d5938bea991f00e33268305ae11c977b92e4ab3392576f59132cd71fb7d782c
+
+[http://gpe.linuxtogo.org/download/source/gpe-taskmanager-0.18.tar.gz]
+md5=dc5db99c16780086f76f48fc7d2e7ce5
+sha256=d6c219bbcb01db0bce13da92bcba618206a057b6cf191dcac788e8b1d6e858a0
+
+[http://gpe.linuxtogo.org/download/source/gpe-taskmanager-0.19.tar.gz]
+md5=b82b56730f927335f20c6eaf20f509e0
+sha256=406fe2dbc8cb6e8b56fa653f3d7b674203171233da097ee9ebb4413703f132ad
+
+[http://gpe.linuxtogo.org/download/source/gpe-taskmanager-0.20.tar.gz]
+md5=3754287bfccdcc7d219a3118ea2dd53f
+sha256=71c07e58b9eaa66ff140f5baa76c14d0fe3120223687bbb4b9817fe55b5e52e4
+
+[http://gpe.linuxtogo.org/download/source/gpe-tetris-0.6-2.tar.gz]
+md5=5c80c48fb82b88955214786843561e78
+sha256=592d66d654f8f9ffce6c811ae740e076e4be43c25f16c9945bacaa8eea1060c7
+
+[http://gpe.linuxtogo.org/download/source/gpe-tetris-0.6-4.tar.gz]
+md5=cd15add33be3857018eef8b57fc262a9
+sha256=f43b452ac845b7406fe6b6d7aa9ca64fad731142cd9912e79f03fc5c6b8c10ad
+
+[http://gpe.linuxtogo.org/download/source/gpe-timesheet-0.18.tar.gz]
+md5=07f5ede2c7865fc542d7a0957aef55d3
+sha256=a066ca50bfc3ca7fc1dcab619e042c9b2d4789acda61eaa43483d561ed8a0fcb
+
+[http://gpe.linuxtogo.org/download/source/gpe-timesheet-0.19.tar.gz]
+md5=431332c11b64a26f6254b6622456296b
+sha256=5b47401344ea3aa0af789be813cd5208b60abca4207c40b4b126b40c5a3bafc7
+
+[http://gpe.linuxtogo.org/download/source/gpe-timesheet-0.20.tar.gz]
+md5=7ec3e1680ee6604ba76c1e60d9262c47
+sha256=835ce8239beb7ec1c7b3441f7929914d42c0e7aef8683c457a2e39bbd3d5aa16
+
+[http://gpe.linuxtogo.org/download/source/gpe-timesheet-0.21.tar.gz]
+md5=0a5195862477696ce007e1cd2a6ce0b9
+sha256=865ebb06c3350d17df6fc827661ed396ab3bb9fff06302e3ec94169bfcd9e7d4
+
+[http://gpe.linuxtogo.org/download/source/gpe-timesheet-0.30.tar.bz2]
+md5=52697e77fb05181432f3278424954f25
+sha256=addaf005bbcc23482bb655a0bfe476b4cc5fb303c29a7d6633165f3cbea02571
+
+[http://gpe.linuxtogo.org/download/source/gpe-timesheet-0.31.tar.bz2]
+md5=402b0dcfff28bc5d2bfbcf7b1f644afe
+sha256=1200fd739898ce71303c758149150910faa803722bd790811b754a48e0ef944d
+
+[http://gpe.linuxtogo.org/download/source/gpe-today-0.10.tar.gz]
+md5=7cd5e86b94d84a48077ec6ab6357be60
+sha256=1b007d46df292109147f4b270a2a555a5e8c2a90804c37028f1e7d10db512729
+
+[http://gpe.linuxtogo.org/download/source/gpe-todo-0.50.tar.gz]
+md5=9732adc87bad946f18a060806feef134
+sha256=3b20b87f537c7cabd59c6e5fd453735f443ec4a6f439a11237f6d18802e2fb17
+
+[http://gpe.linuxtogo.org/download/source/gpe-todo-0.51.tar.gz]
+md5=cc3b6b7676671b81251fb237118daada
+sha256=ffaa97570c9d1a1f3c2081e208ec16a6b24e2700060b8cc3caad44ff447f16c7
+
+[http://gpe.linuxtogo.org/download/source/gpe-todo-0.53.tar.bz2]
+md5=b96e83e2e02ef55474878500587fd2a2
+sha256=b9b7a165ffd1998ac09ddf9359d2005f4f2dbc995887b9c9a4fec959e3f32646
+
+[http://gpe.linuxtogo.org/download/source/gpe-todo-0.54.tar.bz2]
+md5=8fdd52954a7a29691013900b65eb5702
+sha256=b3f51635b3ce6408fdfbd0283e1d8036c23b6ecb5adf0d66882e7e48eb5d97b9
+
+[http://gpe.linuxtogo.org/download/source/gpe-todo-0.55.tar.bz2]
+md5=e8c08165d9723779473e3390a949afac
+sha256=ec2ef95c967acce5834c8b4985c610014c16242d223d233947d67b4514ebe298
+
+[http://gpe.linuxtogo.org/download/source/gpe-todo-0.56.tar.bz2]
+md5=d60eda0b82431bc4dd92cf7c40c0efe9
+sha256=85124fe55ecd1ad303a3a333b9d8501deb627beeca85bfb6f66832389bc73f49
+
+[http://gpe.linuxtogo.org/download/source/gpe-watch-0.10.tar.gz]
+md5=0c1cc9a5e7086194c1d2ff462759f135
+sha256=4e3cc87dfde964eda9092f72f6a945765795d00dad5bb2368d9cb0a500f21fc8
+
+[http://gpe.linuxtogo.org/download/source/gpe-what-0.30.tar.gz]
+md5=cc4d46ec2000c17f1df047657a06f3f6
+sha256=780b89c09fb1cd9fea2368ddf5cffa4fdea706f1790e72d175d8612e3e6f6e85
+
+[http://gpe.linuxtogo.org/download/source/gpe-what-0.31.tar.gz]
+md5=da51ef2882dbad8e4a3e9c8a0d3afbeb
+sha256=a868777679b03b3293a454aee26002b5f1a7c78e04b9495f88641a0ec9e853c5
+
+[http://gpe.linuxtogo.org/download/source/gpe-what-0.33.tar.gz]
+md5=03d878dccd6c1215ef92ac668ef73dfe
+sha256=bc4f531f63bdaa2162867bab3e14ca5c37372d321efe7ce7c1004b4f4e57c00a
+
+[http://gpe.linuxtogo.org/download/source/gpe-what-0.41.tar.bz2]
+md5=92ff9623a237da368c23d5694c4d6b71
+sha256=8cfa56399576b2f166d34a94e05995a16038deabb086401644971726059d1c69
+
+[http://gpe.linuxtogo.org/download/source/gpe-what-0.42.tar.bz2]
+md5=96c6bcd7bf99ef35bf8c0a8153646ded
+sha256=a240c8a09292381c8aabc2207d720b2f285f19fb7e6953cb8bf2b63f65858499
+
+[http://gpe.linuxtogo.org/download/source/gpe-what-0.43.tar.bz2]
+md5=f04e358d686a48157248a7a3ba115bf9
+sha256=35b4b6a48f09221c220fb397a3db8725c3c1053a950534310db719fc71123736
+
+[http://gpe.linuxtogo.org/download/source/gpe-windowlist-0.1.tar.bz2]
+md5=4aebe132c5365706266838a73d2bcd2d
+sha256=4fcdbbfc8c965f93abee1d7b5c212e3f49b5daa6257271f10b40b3e81452b1aa
+
+[http://gpe.linuxtogo.org/download/source/gsoko-0.4.2-gpe5.tar.gz]
+md5=da4e3d05f18a44af4b43c76829ba110a
+sha256=741af12ec81dff5ba79e6ce284146e26557f267b5a77ccc4c5644f2d5619dcf3
+
+[http://gpe.linuxtogo.org/download/source/gsoko-0.4.2-gpe6.tar.gz]
+md5=b10893acb76c5d016c9bcfff6ba9418b
+sha256=484f528602bd64df26a1d1db6e249476df80fe31ee8b3f85bc246a1ab73e7fe7
+
+[http://gpe.linuxtogo.org/download/source/hotplug-dbus-0.9.tar.gz]
+md5=75245aa9adc5acb9d6ac8eae45533c96
+sha256=96144ffbb24f23acd3615594344902a3fad241bc05127d38e5dde8df300c27c0
+
+[http://gpe.linuxtogo.org/download/source/ipaq-sleep-0.7-9.tar.gz]
+md5=d16782bc55d03d431ae7dabf9f97323c
+sha256=b1b447e2141d4466d9150e2ce22aec154a543a4c1dccd5f5026316e913fd0744
+
+[http://gpe.linuxtogo.org/download/source/ipaq-sleep-0.8.tar.gz]
+md5=81931d4a4048f7f9f57ce80dfa84592f
+sha256=5de3cac55af090069227c6137fa7d20e570eb7e04c33d47486c173a280a1615a
+
+[http://gpe.linuxtogo.org/download/source/ipaq-sleep-0.9.tar.gz]
+md5=6163ba21421d47d449991f88959a06cb
+sha256=6e8c4f0ecc24c36436227ebb4cba2abbc0737be83103cb156f80ffa00aabbd8c
+
+[http://gpe.linuxtogo.org/download/source/keylaunch-2.0.10.tar.gz]
+md5=2d81de20b26eac5ad44b759eb412e8eb
+sha256=38715fcc508740deb3f169a01092f03ea4ce92c9ec3c2589a9510534aa52a540
+
+[http://gpe.linuxtogo.org/download/source/libcontactsdb-0.1.tar.bz2]
+md5=575442be0c61e4b1e05f2188e2ae3141
+sha256=33a61a28617e5513e58bde9c16ef21c82c582c1513a0a325735c090ebbd9aefe
+
+[http://gpe.linuxtogo.org/download/source/libcontactsdb-0.3.tar.bz2]
+md5=1398bee49a23bd33bbc3dfd9ac3555f4
+sha256=5912c1b64dd09a0cbeaa678772fae00e0eb64ffcad35f5dd80424fa7d4f33f7e
+
+[http://gpe.linuxtogo.org/download/source/libcontactsdb-0.4.tar.bz2]
+md5=a74c72dc7d9acf01109562d9a5f761e6
+sha256=8b48efab70ba1322e6f012b78d7614d6012411afe47107a5e2c1f27e1eaef3b7
+
+[http://gpe.linuxtogo.org/download/source/libcontactsdb-0.5.tar.bz2]
+md5=aba090380cc30c553b2e880382bc788e
+sha256=ec8f6bb5c8e0bfbf53cae21c8e5c3cfd3b442aa7ffb4eaa646c81c0449dc0bc9
+
+[http://gpe.linuxtogo.org/download/source/libdisplaymigration-0.28.tar.gz]
+md5=f976234f9dfd6a8e1288710b49d29964
+sha256=f776abe417432b3c4ff8b063201c4b4b45479a563fb43e6fd64504b538ef4689
+
+[http://gpe.linuxtogo.org/download/source/libdisplaymigration-0.99.tar.gz]
+md5=181f063344a0e674e5c2546544d5e27f
+sha256=b0159537f22453fcf30d7c4d7d9a39b6996233217c1f80a49ede135cf6ed32ca
+
+[http://gpe.linuxtogo.org/download/source/libdotdesktop-0.11.tar.gz]
+md5=7904caa236fe1797d2b033de7ea70e91
+sha256=e0089d1b643bf70626159bfacb367118015f69a589740458ec10000e40b9508e
+
+[http://gpe.linuxtogo.org/download/source/libeventdb-0.17.tar.bz2]
+md5=61a3bc3b4e33b01142b0d18cbef42f4c
+sha256=fcf56cc61742ed09b285cf11b3a67bd64689b503adc6b5681124fda26ab58aee
+
+[http://gpe.linuxtogo.org/download/source/libeventdb-0.18.tar.bz2]
+md5=b8612abfa0f7c104980bc5f11df5c6a5
+sha256=cf658f4be3e8ff301f1539b70a8c31f5a7e4893344cf7ea9f7abae12a0a53baf
+
+[http://gpe.linuxtogo.org/download/source/libeventdb-0.19.tar.bz2]
+md5=89e7e82ee764cadd21ec35e5b66f5009
+sha256=dd62e0614bef0de870b4626af398040ce8c5a29b59575625c079482443bd557d
+
+[http://gpe.linuxtogo.org/download/source/libeventdb-0.21.tar.bz2]
+md5=6f04df7771c575d5ec087de14669c810
+sha256=b6fa6a83fde364d69cc4592da45aa9b2016c843679f3c1421a57b5629a9bd170
+
+[http://gpe.linuxtogo.org/download/source/libeventdb-0.30.tar.bz2]
+md5=aeab2ac484b9cbb5a950f1f4ca2a32ad
+sha256=2905109d2331bdb1ad82b3e3386f78315182e6b4cfb52661b9b52d123730ddef
+
+[http://gpe.linuxtogo.org/download/source/libgpelaunch-0.14.tar.bz2]
+md5=cac106e90f57753511a4436ca2cdbc3b
+sha256=23425f74f304072f48d295e9d7168a6ecfb44c049074b34b71cfbf1f4d19ec85
+
+[http://gpe.linuxtogo.org/download/source/libgpepimc-0.2.tar.gz]
+md5=74e36fd1c34dc668801366d5aa11e93e
+sha256=19556cc4d3469f61c7b50db7a9979a669af0b03c0c2243441e34a8a5f737fa9d
+
+[http://gpe.linuxtogo.org/download/source/libgpepimc-0.3.tar.gz]
+md5=5142dd86386e1106a29f90837f57c3eb
+sha256=f6a27c361b7ca41e32f4fedcf588e19745437ad5955fa68612ed21f45e828fc5
+
+[http://gpe.linuxtogo.org/download/source/libgpepimc-0.4.tar.gz]
+md5=7aaa9220d1ffa77b70c1cf8355141b29
+sha256=260c329ca2e197e8c85f21da4186cf8a4746ad0398fb708fbb266453f570734a
+
+[http://gpe.linuxtogo.org/download/source/libgpepimc-0.5.tar.bz2]
+md5=bbb0efe3359510fc0393f3f305c1c6e7
+sha256=b0d1236dbb27f054f8b8a6f8ed4d735db89eb466be641bed67363f4dd76385ad
+
+[http://gpe.linuxtogo.org/download/source/libgpepimc-0.6.tar.bz2]
+md5=3e5ffa6c4e556c5ccc8ec8f53a27eb69
+sha256=71c7d6ab2ca142f100241d5256c58b67ac01a3d34d52722178e4da9d6ac0729f
+
+[http://gpe.linuxtogo.org/download/source/libgpepimc-0.8.tar.bz2]
+md5=308f75a47ab738cb2955f8a8051728e5
+sha256=b914f2cf05353e2f4471648b37782a82d73ebf895a50ab1e238e3a325cce2c65
+
+[http://gpe.linuxtogo.org/download/source/libgpevtype-0.14.tar.bz2]
+md5=66e2996cd89545827cba6d195904346f
+sha256=157d54ac1248a430dcbbef0ddd0c486d76e67712b4ebccf63c23603fb75b23aa
+
+[http://gpe.linuxtogo.org/download/source/libgpevtype-0.15.tar.bz2]
+md5=6bef54f2dbc76e77d5ba49c16e4f04e5
+sha256=a49c0a9d7b8e1edc7659469c524237ce55202b91dad61e08d95eb6749b2eb020
+
+[http://gpe.linuxtogo.org/download/source/libgpevtype-0.16.tar.bz2]
+md5=dc7b99c3799ac1b5b7ef1e21450f20e4
+sha256=9a272b4c133be4d828aa58c506ea729bc472434f6475d97ea60b388a40fe444d
+
+[http://gpe.linuxtogo.org/download/source/libgpevtype-0.17.tar.bz2]
+md5=c9c031ee32bcdb3c8bf0d31083330d63
+sha256=21c026c120861d8b1b1178e8744a3626a56ff231c35cce0a5176305a977949ff
+
+[http://gpe.linuxtogo.org/download/source/libgpewidget-0.102.tar.bz2]
+md5=9eb90850adf65ec0d0ff26833f7cb8c6
+sha256=ac25c961899ac71b0df93b517ac12b7b3c3083397abe9053a77f1e763e573822
+
+[http://gpe.linuxtogo.org/download/source/libgpewidget-0.114.tar.bz2]
+md5=36007105704bdc030c2c241c94bba165
+sha256=db67f8fd78da55e71fe61eb28263d823f1bcda8d878bc6f2ffd9254a925dc84a
+
+[http://gpe.linuxtogo.org/download/source/libgpewidget-0.115.tar.bz2]
+md5=88d53855c41fa7713263e913871a5fcc
+sha256=ebbbc25a27587c21ed640b5d87b7c7783f4820c59c22f7b07e29e2306f1bbd65
+
+[http://gpe.linuxtogo.org/download/source/libgtkinput-0.3.tar.bz2]
+md5=259328c5749a0075502bd474dcb9a383
+sha256=3915bd4e713b2a30f6af86d415d49edaad0846ecd440a6b7062d0c0935ad8f93
+
+[http://gpe.linuxtogo.org/download/source/libgtkstylus-0.1.tar.bz2]
+md5=fea0cf7333623ca2d8954b202d2cd89f
+sha256=be7359f95c926bc40d6be82aea835cd8a53459719249a625cdca879827470593
+
+[http://gpe.linuxtogo.org/download/source/libgtkstylus-0.3.tar.bz2]
+md5=211bd08961ad78bdeeaab4f33f20c639
+sha256=1964a9fb46e5f57bda75bfc37e19036b32c6a7d57bf13020776dfaaca348920b
+
+[http://gpe.linuxtogo.org/download/source/libmimedir-snapshot-20040307.tar.gz]
+md5=7c24a8ec76ad3342c642ac32976c8b04
+sha256=9841831972bebef827348a9f9b0875d8dd0f5079b0f1cb6b8283ceb43befd584
+
+[http://gpe.linuxtogo.org/download/source/librewrite-0.1.tar.bz2]
+md5=f25a9f8aefde5e2bf0dc5c8318020a00
+sha256=3a892543df587f645911289af7fead594bb161913ce04619360f25cb3adeefad
+
+[http://gpe.linuxtogo.org/download/source/libschedule-0.14.tar.gz]
+md5=f4fd8f525e2cd4100db89bd6b4f92934
+sha256=d86d490bada35c041b1134b15f1abc94364c798dedc974d2c5ff2127d1b80487
+
+[http://gpe.linuxtogo.org/download/source/libschedule-0.15.tar.gz]
+md5=58ac7e5b3d9b0a1b8adf0a57fd265c76
+sha256=9b3577052db92ac9282f4912eaa487729de34bf058585cfcbc79478831207889
+
+[http://gpe.linuxtogo.org/download/source/libschedule-0.16.tar.bz2]
+md5=da63b0ed460c0f44b9f85774caf3fb0d
+sha256=a33977201ff13a4c08d3a74de0fcdbe7f072e4a92a261d5f39fbf16aab069050
+
+[http://gpe.linuxtogo.org/download/source/libsoundgen-0.3.tar.gz]
+md5=5a36bc38b8b70a0951fb3acc479503f5
+sha256=d74ed600fab1bf5bab86a4815a5170157607317030bd9316e587486e29e815f8
+
+[http://gpe.linuxtogo.org/download/source/libtododb-0.07.tar.gz]
+md5=5df2e1f7564d066dce6ec24344605528
+sha256=bc3fb1a20ec97149f6e81285a22bdc48fea9c4fbc9abad6919b87ce2f44acbc3
+
+[http://gpe.linuxtogo.org/download/source/libtododb-0.08.tar.gz]
+md5=90b0b326aea78019aff9b85b37b99cc2
+sha256=4dc7c72cf11407ab6e7edddf09273d82fa46b3662077473503b75a69972140b1
+
+[http://gpe.linuxtogo.org/download/source/libtododb-0.09.tar.bz2]
+md5=5a45e6b0a84b1ad0bb7fddb2d11cd9ad
+sha256=8b8ed9c5d14330b5f6c79def8b54656b3e5241f2c5bd22e8fdc975af028f8f89
+
+[http://gpe.linuxtogo.org/download/source/libtododb-0.10.tar.bz2]
+md5=9d2fe77ad48a31476896dddc55eddda5
+sha256=f4e06f992f3237ad974a931c8c86e43b1025ffdc1fddc1f2cc98b77c8315b0ad
+
+[http://gpe.linuxtogo.org/download/source/libxsettings-0.11.tar.gz]
+md5=ea623deae839c41ef68c9a31233157ef
+sha256=4cae17ea07445660cedb34a8a0222055954ed67de3d5a527850d8b9e923e3543
+
+[http://gpe.linuxtogo.org/download/source/libxsettings-client-0.12.tar.gz]
+md5=43c0e93e2f96878856ad9475c702b2bb
+sha256=4fa21cc5118b66986f067e064971159849242662f7ad49faeff2d4e20f746bc1
+
+[http://gpe.linuxtogo.org/download/source/libxsettings-client-0.13.tar.gz]
+md5=6a9d49b146abafcc9a7e67baed800cf6
+sha256=3e9f5e5e61611e8df234aedd48286407ae57e40e8f6e6499eb66accb09d6b5c4
+
+[http://gpe.linuxtogo.org/download/source/libxsettings-client-0.16.tar.bz2]
+md5=bd572a17dce9bb5826441a8d1d5f3da5
+sha256=1622c837f0a7fef79b523b07d936bb807404974610a239cf3ada04fce2b13a11
+
+[http://gpe.linuxtogo.org/download/source/libxsettings-client-0.17.tar.bz2]
+md5=2c052bbe613d2d83abad391824b217ad
+sha256=900e9b131bd357a3e6bcc5fe9a94d42018d9cf52e85d1c772a7e69a7f99ea9ab
+
+[http://gpe.linuxtogo.org/download/source/mbmerlin-0.8.1-2.tar.gz]
+md5=c379c781ac05d3b64228f48362aecaca
+sha256=d2a482d4b7bce5cc41bacddc8ef48ebd21fecbe6585b74036e432c030595b11f
+
+[http://gpe.linuxtogo.org/download/source/miniclipboard-0.3.tar.gz]
+md5=8bea461bf4136aedbe110b6aec184d72
+sha256=7f9c937c0f04760d215f7e7d9ca2709f8148e69be2693206d1ae81e2c88a656e
+
+[http://gpe.linuxtogo.org/download/source/minilite-0.41.tar.gz]
+md5=135996a65350d5c40a2c020a2ddaf5ef
+sha256=2e01c8375e7d876a44b8703e00958aea88967124c1a9631031c4ea8019f5dd32
+
+[http://gpe.linuxtogo.org/download/source/minilite-0.43.tar.gz]
+md5=93fef25a7fecc7e6caa73c7fd34e6d28
+sha256=62fbcfbba464b13f857c054554b62593039f83f0363cb335b1a2f9f683d41e26
+
+[http://gpe.linuxtogo.org/download/source/minilite-0.44.tar.gz]
+md5=d9da95ba27ad0bd96fc9093f728c9f90
+sha256=c32a90c6ffd2f9bf018dde29f3b09d5e1a90369b4128b3e59003892efc72f31e
+
+[http://gpe.linuxtogo.org/download/source/minilite-0.47.tar.gz]
+md5=d0d91387df0897de8304f69af86e9d15
+sha256=8cadb3e56c19c3c5bca5e15074deb5ee451d8871d7f72a06c6d24e150ec352f5
+
+[http://gpe.linuxtogo.org/download/source/minilite-0.48.tar.gz]
+md5=aef833f6f80ccb1c7b6a57a25f3562bc
+sha256=b126f705c0be143acb5f14a832fd3e03ec25ae0c102269889b1c386ff77b73db
+
+[http://gpe.linuxtogo.org/download/source/minilite-0.49.tar.gz]
+md5=d60d58356ed9a9937e21711a9ceb0b79
+sha256=a018e95645ceed535e6df7fbf6fc22ba37fa26778f7e58e5ffface625bf97775
+
+[http://gpe.linuxtogo.org/download/source/minilite-0.50.tar.gz]
+md5=d81cecf269ad7bab0da960e6e7228332
+sha256=2b299425203246090a4949e034f1d0efb3ff99cd1591d0e16c57370a530b361e
+
+[http://gpe.linuxtogo.org/download/source/minimix-0.7.tar.bz2]
+md5=348ca2789f2a1ebc553ab187192f07bd
+sha256=cdea38d41a67dac16243e068d25dfe1560519a065c9445055595b6397fa1ccd5
+
+[http://gpe.linuxtogo.org/download/source/minimix-0.8.tar.bz2]
+md5=0cfb89bf2596710543935e31ad1d5a17
+sha256=aad022ce6fdefad1caf904bb66568e1f487b7b23301417a5a38faf826b418b5d
+
+[http://gpe.linuxtogo.org/download/source/startup-monitor-0.18-2.tar.gz]
+md5=2ac92d4deda518558036a5685fc28814
+sha256=0d1570843bd479ad6183f5014c3da3f68915f9c2626f11d96b422852a9991d86
+
+[http://gpe.linuxtogo.org/download/source/teleport-0.33.tar.gz]
+md5=f406e66bf6a1effc31abf150ea7b5da1
+sha256=f5e73b32337c2616114e0e45cdbd053975ffd38ec3fb28a411e165dbf27a583a
+
+[http://gpe.linuxtogo.org/download/source/teleport-0.34.tar.gz]
+md5=ae571a20333f90d4b79b68c446387925
+sha256=266d6ec9795c2b480101c8754988df68da2c5b3579687bf51ae31000b08ba8bd
+
+[http://gpe.linuxtogo.org/download/source/vtype-utils-0.6.tar.gz]
+md5=1bcb6f204f491d3813861dd8760cec61
+sha256=51fa4fa2e2a8ecdce773d42d7ecb4bdf33b89a332418059c275b8a9d3fd3e8f9
+
+[http://gpe.linuxtogo.org/download/source/xdemineur-2.1.1.tar.bz2]
+md5=b3884eaec59a63691f66bc29ce57a56d
+sha256=75378ad3eacbe32c625de3b4af3e1f6fc9772ab45c1cd1393483d95ac4da3b22
+
+[http://gpe.linuxtogo.org/download/source/xserver-common-1.10.tar.gz]
+md5=b73f38a79582e0d026a52bb5ee3ea0e3
+sha256=7ada44f9b7bd1071d846e7c0dea6399ebcfd45d37b9583a4e44d18cf5c5fca29
+
+[http://gpe.linuxtogo.org/download/source/xserver-common-1.11.tar.gz]
+md5=6a5f7bd7d20c6bbcb5ab3db4f425afac
+sha256=3494a5fb80514cd1f1be784f08bd9fce12b080dbdfeb9b7ad50961094e901d50
+
+[http://gpe.linuxtogo.org/download/source/xserver-common-1.12.tar.gz]
+md5=9e66d7699ca6bad1c3a5914ac8bfcb91
+sha256=e82ec094d193cdd91aba699eff95fa6adaa01235f9ec4a68b1dd022c1b4496ef
+
+[http://gpe.linuxtogo.org/download/source/xserver-common-1.13.tar.gz]
+md5=bd12dffbef3b5a87bf96fa3d8978127b
+sha256=fdfa2591756c5709d0531cc73fed07fb4bd50509c706c31ebd5c7301930be806
+
+[http://gpe.linuxtogo.org/download/source/xserver-common-1.14.tar.gz]
+md5=4cdc10f4c429cfcf5bc6e28fe028cf0f
+sha256=260faa13632aee22573f766c0dabed6573e959d1f686c5880b151f393df6d350
+
+[http://gpe.linuxtogo.org/download/source/xserver-common-1.15.tar.gz]
+md5=380e75e6ec4b19b90372cc90e249f859
+sha256=793e282c30c301ac5f2fd58f43dd59a691da1c18c7fbcbcbd9a08602f3ae8799
+
+[http://gpe.linuxtogo.org/download/source/xserver-common-1.16.tar.gz]
+md5=237d27a5b46d1fa88fb43fb1a40cf209
+sha256=c93e01cd754e8cafc6e02d32a7304d4b152e6aba9e6b0bcaea9ded12263f24b4
+
+[http://gpe.linuxtogo.org/download/source/xserver-common-1.3.tar.gz]
+md5=b55e9347b9aed725cc7baf91701cdd83
+sha256=177b5a3e65d7a64b5a0fbbf1b10f8e3d020a20c823b1bb9f3269dc835df213e1
+
+[http://gpe.linuxtogo.org/download/source/xserver-common-1.8.tar.gz]
+md5=1e2b9633a0cef8c525d66026a9f22c87
+sha256=cfbe37b066beee3c3a6e85806fc1588aa737b7bd7b3647e9eb91e03f21571527
+
+[http://gpe.linuxtogo.org/download/source/xserver-common-1.9.tar.gz]
+md5=6abed999858aff0fff9cf39f65ac5c3d
+sha256=7739ba3ab0203f98302338afdb6f6af1b4620454e9115f56fe88d177b50f8be8
+
+[http://gpe.linuxtogo.org/download/source/xsettings-client-0.14.tar.bz2]
+md5=63e6c23e5a2036cfba77bd22c9a7bff2
+sha256=33237bb8fdad27e7f9fef9122198654e4e39081582baeb60ca4246308ffa4eb2
+
+[http://gpe.linuxtogo.org/download/source/xst-0.15.tar.gz]
+md5=cbe38d183fa6cf0d7c29b4befd0d71d6
+sha256=f5d79766715012ea7bb7ef164994963950c3343ef025ee71d1540aa26ab48c8c
+
+[http://gpe.linuxtogo.org/download/source/xtscal-0.4.tar.bz2]
+md5=a5bb88b23d1b49d001010b6ab5efd1be
+sha256=c3eaee0abc49e401ef9d91d1e44d65441ec76db367e4d3ebf24a15aeab62a016
+
+[http://gpe.linuxtogo.org/download/source/xtscal-0.5.1.tar.bz2]
+md5=9ae79f1c64551a1cacf506fde6d83ef6
+sha256=39c354adb9783fc30d4df6edbe04f68b69d5005b1bd7353dca506ced3b8b594e
+
+[http://gpe.linuxtogo.org/download/source/xtscal-0.5.tar.bz2]
+md5=960acbb885e4de593210c680360dc234
+sha256=a3cfc867672924f27d5ed39a99bc089cc9417d193513984f0a081a92230e947b
+
+[http://gpe.linuxtogo.org/download/source/xtscal-0.6.3.tar.bz2]
+md5=9bcab80b474d5454477d1ca166a68c34
+sha256=27b9dc2203de9b1706ca39fa6ca80ecab8807909ec901c4a345b8e41178800a1
+
+[http://gpephone.linuxtogo.org/download/gpephone/GPRS/GPRS-0.1.tar.bz2]
+md5=ef2fb8e53946387922ee9e98fb0fe94b
+sha256=fffcf07aba1ef5aef03defc88449f6ae0929813e9fcfda65c0d12d7b5c765248
+
+[http://gpephone.linuxtogo.org/download/gpephone/addressbook-0.1/addressbook-0.1.tar.bz2]
+md5=b8a0821ef12a2243b537fde3207c8691
+sha256=85847b8e25d56f7d3af29207d6878601390e97dc5119e4d35bd0b096c27a478d
+
+[http://gpephone.linuxtogo.org/download/gpephone/audioplayer-1.0/audioplayer-1.0.tar.bz2]
+md5=7df1df597c655fc6e4c5630ec8052b53
+sha256=fce50bc26351bbbe31154d9a734cb433ec8fb404efc5febd50c149e5eaf62449
+
+[http://gpephone.linuxtogo.org/download/gpephone/calendar-1.0/calendar-1.0.tar.gz]
+md5=eb7be3b85955a1bbe7a0154cbf2f70f9
+sha256=7e6425b688a2d4bbeef0904cac52737b232d03fdc4d35866fd03359f2d5f1794
+
+[http://gpephone.linuxtogo.org/download/gpephone/gpe-applauncher-0.7/gpe-applauncher-0.7.tar.gz]
+md5=2eaedfe736b88624c360ddda2b6fa777
+sha256=2afd5a23705fe95f6abc12e842f2ebaaa038bd4c8cf8a971a848a48a14e100bc
+
+[http://gpephone.linuxtogo.org/download/gpephone/gpe-phonepanel-0.7/gpe-phonepanel-0.7.tar.gz]
+md5=2c60de78f2e539ea242c4ba891d3e5ed
+sha256=4b1e77ff0a5a74165bae6e842f122fc17a6331e0566a2b83d1ad8ac3ef5fe4b8
+
+[http://gpephone.linuxtogo.org/download/gpephone/libabenabler-0.1/libabenabler-0.1.tar.bz2]
+md5=49fe67302fd76543a7574a73c01395ba
+sha256=512674419ac2013d11eccf4f106d6cfc719c9c2b49215a8f0e89c5327d176a84
+
+[http://gpephone.linuxtogo.org/download/gpephone/libcalenabler-1.0/libcalenabler-1.0.tar.gz]
+md5=7f815fa70e9c3085897f755e124155f2
+sha256=97f63ed9c2d685a25306bd5ffa4bdf0a5e296c9ad28fd7210e6e53f75cf6dcc4
+
+[http://gpephone.linuxtogo.org/download/gpephone/libchenabler-0.1/libchenabler-0.1.tar.gz]
+md5=f29e1e63fcc55e3ae4e81f5ee9dd7bdd
+sha256=448a3ab76109664bb6bd8bcc2c62d957c7d44b52e39c37d91b3b73b5cfe35a3f
+
+[http://gpephone.linuxtogo.org/download/gpephone/libgemwidget-0.1/libgemwidget-0.1.tar.bz2]
+md5=95d269ad7e7cb7d3032498ad2e47643b
+sha256=b8a1da871aa34362caf0c76dcbd3df42aef7313a4ed08f38eddcb159b80302c5
+
+[http://gpephone.linuxtogo.org/download/gpephone/libgpephone-0.3/libgpephone-0.3.tar.bz2]
+md5=009af2f3554caaf547bbc282da0e83c6
+sha256=c40ea6d2282503ede882efe85ad526358683c311ea4592d41eaab0725ca75934
+
+[http://gpephone.linuxtogo.org/download/gpephone/libiac-0.1/libiac-0.1.tar.bz2]
+md5=cf829bb82f84728194c64a41e9f1cf32
+sha256=10197df9daee806453c5a7e99e538d7eac0421796f2a9ae114d4369d85fcf3af
+
+[http://gpephone.linuxtogo.org/download/gpephone/libim-0.2/lips_im-0.2.tar.gz]
+md5=4430d106ffc651c861374d729ffcd4c3
+sha256=31bfd0d68dc0cfdaf22c26295c8fc4b65a508d0e615daf8a43f032f2a701f2b7
+
+[http://gpephone.linuxtogo.org/download/gpephone/liblipsevent-0.1/lips_event-0.1.tar.gz]
+md5=bd92cf7fae640c7807b53d082bfe1d92
+sha256=d0941b9947be08be440716c888b58cc6d088a214debefebe7bca99b84f387c02
+
+[http://gpephone.linuxtogo.org/download/gpephone/libmsgenabler-1.0/libmsgenabler-1.0.tar.bz2]
+md5=53417c192cff3e32fb1d7b839201a04d
+sha256=8a58b9a9eb8cae0dc15453d7737050a3b241eb1030797f1559b4bbb5aff061e6
+
+[http://gpephone.linuxtogo.org/download/gpephone/librecord-0.1/librecord-0.1.tar.bz2]
+md5=a9e90187c1dc183f497bcae34718e415
+sha256=6fb70d0b8f410f05988e1f3a3e8c86990c3e84c9958041803e6d0658faae91ea
+
+[http://gpephone.linuxtogo.org/download/gpephone/libvocenabler-0.1/libvocenabler-0.1.tar.gz]
+md5=536cd97488c0882913c097a833cb2ca2
+sha256=748a9a5a1b2e6bf1db4cc767742acf58d836e551e56a493bd34ad759d3bb4f53
+
+[http://gpephone.linuxtogo.org/download/gpephone/phoneserver-1.0/phoneserver-1.0.tar.bz2]
+md5=195b684e025ff5c15617d6f757cf631f
+sha256=e14546d11e899e7e9f06ca58979fee14b273d53c637eb268d7c6fe3bf78d564d
+
+[http://gpephone.linuxtogo.org/download/gpephone/sms-1.0/sms-1.0.tar.bz2]
+md5=7c11b59753ae8fea2c1f1030c34bff42
+sha256=7b408a4e7eb5c4fa6861e3d5f0b49f5ce872c87775fb302a7d36956b77f1e2b9
+
+[http://gpephone.linuxtogo.org/download/gpephone/soundserver-1.0/soundserver-1.0.tar.bz2]
+md5=95a2346791fb461d570808369ac5a2bb
+sha256=0b1009cd6bb5a345be3fe69048b23c8f3248a86340832861f0ffda9e368a6015
+
+[http://gpephone.linuxtogo.org/download/gpephone/videoplayer-0.1/videoplayer-0.1.tar.gz]
+md5=405c8780f80f8f117622fa45698328c7
+sha256=3cf9b04025015ad06ab3449f20778e34887f5aecdfe367a983ae8e52e394b0df
+
+[http://gpephone.linuxtogo.org/download/gpephone/voicecall-0.1/voicecall-0.1.tar.gz]
+md5=c775c0663a5c499d3f2ac23602e98426
+sha256=52f8a7087960aa8845941d08d4fe58c29670c374fbeccd722dd5fbfe995fb89c
+
+[http://gperiodic.seul.org/downloads/gperiodic-1.3.3.tar.gz]
+md5=8b6344276252635b18572bca17aa62f6
+sha256=5858eb726867e8c28f42101dbff7a5234b960f5944c7800939bf39a775147322
+
+[http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-0.10.1.tar.bz2]
+md5=398729b82b911eebb14156c2fa02525b
+sha256=05d83a609aaea44ea8c979897f336cb8b5537a39b271af2831e6cca3851d3007
+
+[http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-0.10.3.tar.bz2]
+md5=8545a02c408976c5e9f0c2cf3c6a362e
+sha256=648f1ef813c64c7eedd45d164eb41ba21366bba8ec5fcbff3100458721be489e
+
+[http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.10.11.tar.bz2]
+md5=2e78ff25635b31d948def7c2b2d79054
+sha256=2193e3f940f0fd2ca10a137efbb79bc1edc8a12543b618b9a97f680f9d15bfb4
+
+[http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.10.5.tar.bz2]
+md5=2b5958fb0baaf8d1b4eae18f7b13d49b
+sha256=fe2fb4fe446a1d3f8ccd4284ae7ffd25cb9f1b836b3d0e29d2494d10c1ae3eac
+
+[http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.10.6.tar.bz2]
+md5=d8069d1026896d1379072b520de20ebc
+sha256=0ef1b8cbe6d7e898d0636342479de46a780f720033c1b4f7217c903aac6d80ad
+
+[http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.10.7.tar.bz2]
+md5=21ec9c7ac4b02de019a6d8e8c2aaa2a3
+sha256=7be5984162333dae48d8f7e58e6c7f4b43726c78e2ca13aca6618b1342af8d37
+
+[http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-0.10.2.tar.bz2]
+md5=03d3d0b5f19014fe0065234a3ea65ee6
+sha256=dd92993d08930cca071893b5d3f5cb40a4498f3ddaf12da98c0bbe8c27605e81
+
+[http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-0.10.4.tar.bz2]
+md5=e189496e7987898823d28d26b79f63dc
+sha256=f2b90ef5fb4b2d0b06d5fd8193a7c19b1d08d4f737abeafabf04d39673ea703b
+
+[http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-0.10.5.tar.bz2]
+md5=c45fc9ace9feb4d3df32da0a6d262d84
+sha256=dcf56a49b8fc0db16985bf133d4085d84602a19c15acb79890ac012d7cf9f962
+
+[http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.2.tar.bz2]
+md5=cf604b6acd80b57dc5173db7e93fc116
+sha256=c882c7485faec9803d2f61efbaedd02742e78d224a7d29d61a0a884cd962a09f
+
+[http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.4.tar.bz2]
+md5=c10f40e3641d827ca7853b0a3d560257
+sha256=4871c52b2421b582330a0f9dc6a42da3b706140c346aa0cd690eb40758afe152
+
+[http://gstreamer.freedesktop.org/src/gst-python/gst-python-0.10.7.tar.bz2]
+md5=16dd6515fd011ad449e5ce191dbb94be
+sha256=24520b3e33f98a3bcc79ad68f7d426475cbacf12e4c56338f58a05158523d71d
+
+[http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.11.tar.bz2]
+md5=67240094e08c845b7bbcfba755c95695
+sha256=d7130fbcbcac945c28402361b60e8d24d97f75d795ba91401617f81e595a7dd5
+
+[http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.4.tar.bz2]
+md5=263a7800ecf44d0f38d0cbc80bce65ff
+sha256=7b8add7db1e0b0e3671f374469ef32b151fa96bc9eb2aa265eefd79548752ffc
+
+[http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.5.tar.bz2]
+md5=f088c1303f19f0423f35d699deed92e3
+sha256=1c055d04fc31ac5730a766743ece1402f93f967c8f815cd5c97112dfab8f4aa1
+
+[http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.6.tar.bz2]
+md5=3b0ba3698bfdb0a59918563ca285cefd
+sha256=11d65e787ad24596af3f84744655f7c6ad0c747e2c285248dda4e5893d0b317a
+
+[http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.8.tar.bz2]
+md5=a094ea86d4cea4f23ef2eb8c6e7bfc10
+sha256=e17b33586d9f4ff656ed04559ed765b50affc19309074ef5bdf4ff62f5a1c863
+
+[http://handhelds.org/packages/gtk-2.0/gtk+-2.2.4.diff.bz2]
+md5=c6697665e06cad01e87c2cf8d0913725
+sha256=2a768a45adea587c4a7d6e3c3567ad7961bf7509e118ae62ce32f5369b1aeeb0
+
+[http://handhelds.org/packages/libosip/libosip-0.9.7-hh2.tar.gz]
+md5=ffc20af80f77653ab534d2a103a2276d
+sha256=b67c0218b7cd2d521783bf055b13c598bd04b623cbf4adbb3cc76bd3ac57dc5d
+
+[http://handhelds.org/packages/linphone/linphone-0.12.2.hh1.tar.gz]
+md5=b1e3bdcd92f57aa5f3e68cd84ab330eb
+sha256=460d29f603864281bef60a919e79d84d5477ac14e930da446e765d17f2706a6c
+
+[http://handhelds.org/~mallum/downloadables/figment/figment-0.3.5.tar.gz]
+md5=e20c642ffe7c8a492c0ddc7ee3016f44
+sha256=39fcbdea0c1e31338bca4ae60db700a3f0fce7b6cb75087abd559022e22a2927
+
+[http://handhelds.org/~mallum/xkbd/xkbd-0.8.15-CVS.tar.gz]
+md5=56271e79da101bbc31e5384a9499853d
+sha256=04bc9f6ea423f7fbd9150767cef6a1bc5c70c545eeb923539a93a549905457de
+
+[http://handhelds.org/~paxanima/files/libdictionary.tar.gz]
+md5=10ee733c70e96e8e9f01d3de2cc0c78c
+sha256=46f0a85f340e099e9010c8eb9a28d727830aedb32be48fe0a2f0cd081e0623fd
+
+[http://handhelds.org/~paxanima/files/minipredict.tar.gz]
+md5=d6793818b10c9af0f1c424a2e81009e1
+sha256=73edd3f8e7c36c81c895ea723e7faefd3ee5a3671d0b1e0ea7b3a960b169231e
+
+[http://handhelds.org/~pb/mb-panel-0.9.2-msgcancel.patch]
+md5=61a2f2be6d947618fc0f2e0c93dad6e1
+sha256=320634eacb957779f77a8632b1339276e5d2f7c6877933610250163f6862fc19
+
+[http://handhelds.org/~pb/mb-panel-0.9.2-polling.patch]
+md5=aef0c3abfdd35aefc7f1328204bc337e
+sha256=398484870bc78296c3186776fa7db5abf63036bbe1df674d049edd68d0af7ea8
+
+[http://handhelds.org/~philippe/gpe-mini-browser-0.14.tar.bz2]
+md5=38cf27404443d95db41a4f6b8a5b5540
+sha256=73231d3a600662ea5a0ce80b8562ce465ef49783f2601070e207daa8f74e3817
+
+[http://handhelds.org/~skyhusker/starling-0.1.tar.bz2]
+md5=4762b45291ff5f71691f187ee87a449e
+sha256=7a0002c9247b46ff61b44ecc800bec8b6239279475f9a359b35daf11e58c1406
+
+[http://handhelds.org/~zecke/oe_packages/aliens_V1.0.0.tar.gz]
+md5=9d7cde75aecf4b85478c0e47343d4293
+sha256=0aa0084a74f912f4002f1c40a815ce62ac13331ec84787a954d8bea06e1c96c5
+
+[http://handhelds.org/~zecke/oe_packages/atomic_V1.0.1.tar.gz]
+md5=537dc236f4654dd5760e0f39484222a1
+sha256=818a18c1ace9bc3e5b92bc91db1d62c859023cd16444d41692ecb3606cc6868c
+
+[http://handhelds.org/~zecke/oe_packages/checkers_V1.0.5ern.tar.gz]
+md5=82b08b1980ec6fbfc83b4dc0e2df10f7
+sha256=543435cb0988acc90a6e651e424eb331aba3f73361036d7af458bc1233973199
+
+[http://handhelds.org/~zecke/oe_packages/crossword_V0.0.3.tar.gz]
+md5=659d5c53cbace53f44fe7acb666bfe33
+sha256=8b718c344cf19417447cbc16867d2e04434654c13b330598b96720ead146b961
+
+[http://handhelds.org/~zecke/oe_packages/fish_V1.1.0.tar.gz]
+md5=78770f1abce09fbbaa0a46ce8ccc607f
+sha256=9d13db38c065d70f48ce70580c7d8cd940d923192c04bc3cb356cc98879b5788
+
+[http://handhelds.org/~zecke/oe_packages/glider_V1.0.0.tar.gz]
+md5=78fe56143bab9a7df232fa15e35a54a6
+sha256=972da0f1c35df459b99b24f5bbed5ddec150b714540e2254b6b37035117167ed
+
+[http://handhelds.org/~zecke/oe_packages/hexatrolic-103beta3-zecke1.tar.bz2]
+md5=1d9420e8b5a6d5fa491c458ffafd4adb
+sha256=b60a5358e56e676529e7d3d655d5107a76b9a2434e38952711fea794f65721ce
+
+[http://handhelds.org/~zecke/oe_packages/icebloxx_V1.0.0.tar.gz]
+md5=f134dc7324525cd41aa0096072a25449
+sha256=13a3c3dc16eb6aaa3a5854a80633f4b047a9396cfb92a30c910b460492fe8f26
+
+[http://handhelds.org/~zecke/oe_packages/labyrinth-0.7-zecke1.tar.gz]
+md5=027e5fd07dd6bd6c1f25161a266a0646
+sha256=547088fbbc3c3f4e60544dca8500c5f7097911427fd7dd04ad082db03f117001
+
+[http://handhelds.org/~zecke/oe_packages/mahjongg_V1.0.0.tar.gz]
+md5=83587af02f53eb222242d0d84380735a
+sha256=a059a2b0f438140a3bb1e30f410a28863eec61ebbb90c925209c7a473a89b76b
+
+[http://handhelds.org/~zecke/oe_packages/maki_V1.0.4ern.tar.gz]
+md5=cb5e4656fc3b13aa02d94096966ef2a9
+sha256=6d5f1f771de97e08378940070b28dd75ac394ea611965ed1751600adbd099a59
+
+[http://handhelds.org/~zecke/oe_packages/nmm_V0.0.2.tar.gz]
+md5=af4c4ad64196f26a245c385a234f462f
+sha256=5d6c456b30318cc05b19915aa601ea4c2cf46ddf43a39e33948dea6280ac5395
+
+[http://handhelds.org/~zecke/oe_packages/pairs_V1.1.1.tar.gz]
+md5=399e794dde87508b4214f1312cd79d06
+sha256=7526d8de006817e5c6bc79826f810a15490611dcbd2d4fb9d8e9b9991c7ed506
+
+[http://handhelds.org/~zecke/oe_packages/pdamaze_V1.0.0.tar.gz]
+md5=bf27dd51fe03c8b475080b74de043a13
+sha256=99d6bc6b360baabd6044e8883d467cc6ed7955f9ab66d8f87f61e3cc757fb97a
+
+[http://handhelds.org/~zecke/oe_packages/pipeman_V1.0.0.tar.gz]
+md5=8d8a69d0fea184dda5f4a15168039fbb
+sha256=a2d8473577c2b3b51ebf29e2c6cb31463158676a5d5b44438ff0db18e8aab949
+
+[http://handhelds.org/~zecke/oe_packages/shisensho_V1.0.0.tar.gz]
+md5=001103f5847e71b0198c3a11df7d62d0
+sha256=17cebdc8ae4374c3944a3233d86278f4d09aaf90279b48e98367e9387f7e6acc
+
+[http://handhelds.org/~zecke/oe_packages/sokoban_V1.3.8ern.tar.gz]
+md5=a362dc3f5f23d785990917103c76a43d
+sha256=084f8286eb945455f3f1567c0a7e7df3a759f2a4e1aab3b881b8ef1bda5bdb21
+
+[http://handhelds.org/~zecke/oe_packages/timesleuth_V1.05ern.tar.gz]
+md5=671e48a9ff01de9cd2853a353b8179cb
+sha256=f353a33e59a35f2667a00ce60998a06fa25948676dcb4a59599cf6518bd02ca6
+
+[http://handhelds.org/~zecke/oe_packages/tron_V1.0.0.tar.gz]
+md5=65e8a11836493aacae7b6d3895807efb
+sha256=226cd1c59495349686d82250ff59f40319f3f7f469a3320b837ed3c344bec037
+
+[http://handhelds.org/~zecke/oe_packages/win4_V1.0.1.tar.gz]
+md5=0817e2606cd87fe2cbead6b7104f7425
+sha256=00b2384e225d6a1cbda4994c63103ac229269bb2946537e9357655e5c5b84333
+
+[http://handhelds.org/~zecke/oe_packages/ziq_V1.1ern.tar.gz]
+md5=f8c6b4b8b5b6f62ec9fc117e4b35fd53
+sha256=995a52223365ec41ae72ef781bde2c8f2f34e0e5dd19e17245f5f354ac52fb8b
+
+[http://handhelds.org/~zecke/oe_packages/zrev7_V1.0.1.tar.gz]
+md5=fa339990ee78b0fd1bad994f0b35764c
+sha256=bc3487bf3927f7e3ea46cef770724d20e820883f4173eb7f8a1332c51d9b6431
+
+[http://handhelds.org/~zecke/oe_packages/zsubhunt_V1.0.0ern.tar.gz]
+md5=7f1fee1e58d92fbe72ffee34078c6fa2
+sha256=d31c51a3db059c564e77ee8776f441b3ea530089a7b48aa31a49d2ebf7bf9dc9
+
+[http://handhelds.org/~zecke/oe_packages/ztappy_V0.9.3ern.tar.gz]
+md5=2c3881503615d86b78b89ad5f4ec675c
+sha256=006c061dc031e711cc3ccccbb659ffb9b09b74ff3be6c5768aecd7297738b1c0
+
+[http://hauppauge.lightpath.net/de/nova-pci218c.exe]
+md5=139a1ed50a1a12e47b1f7deedf4f40c3
+sha256=4310a3a526ae5461e17f57353fc29f71d13820a215eaa62c629190cc2a026173
+
+[http://heanet.dl.sourceforge.net/sourceforge/bacula/bacula-1.38.11.tar.gz]
+md5=0d6d6614afdc468d214de4e66f9f5a26
+sha256=d095165d256771c918b80f836feaf837aedc1362b2d67171013d3ab7ac5ee47f
+
+[http://heanet.dl.sourceforge.net/sourceforge/gkernel/rng-tools-2.tar.gz]
+md5=63d503191eabed630324c104cc024475
+sha256=1126f0ecc8cab3af14a562cddc5d8ffeef47df7eba34a7aadcdee35a25ec2b1e
+
+[http://heanet.dl.sourceforge.net/sourceforge/linux-atm/linux-atm-2.4.1.tar.gz]
+md5=84fef49cc39ff2605204246666f65864
+sha256=a812816ee1742bf3bf8977a391b369a7351f54a1917dc90b27e666679dd1742a
+
+[http://heanet.dl.sourceforge.net/sourceforge/tuxnes/tuxnes-0.75.tar.gz]
+md5=5db0cd42dfdff3e681805e93b4867c43
+sha256=217fc57fdd2a5ec360c197ea36110ec929d3f27c88cf875f0f4723b3496ed7c2
+
+[http://heanet.dl.sourceforge.net/sourceforge/usb-midi-fw/madfuload-1.2.tar.gz]
+md5=6a2c68021e2e05c4eb35e67158b9414e
+sha256=324d0a55f73c82ad48635a94a8d72277a2280030df6d036eafe3498c933dee6d
+
+[http://heanet.dl.sourceforge.net/sourceforge/xine/xine-lib-1.0.tar.gz]
+md5=96e5195c366064e7778af44c3e71f43a
+sha256=6a283d383358200a9d6866d5d666a0227c8412d9c33d41f166f39c011482aed4
+
+[http://heim.ifi.uio.no/~jorgenam/h5400/fsi-client-20040803.tar.gz]
+md5=99adcf3275943c109d27a781addf7d63
+sha256=b0474b223a130e9412bb88f464138f40921e84f63b6024bf2ce5b32bd78d4bd8
+
+[http://helm.cs.unibo.it/mml-widget/sources/gtkmathview-0.7.6.tar.gz]
+md5=4bb348c98367228f0de0a2216a13d48f
+sha256=4b104ab94774ca429aa639a1a6f0adec1ca1443bfd444f2100c063e3cf70e6bb
+
+[http://hem.bredband.net/gmogmo/fbgrab/fbgrab-1.0.tar.gz]
+md5=7af4d8774684182ed690d5da82d6d234
+sha256=9158241a20978dcc4caf0692684da9dd3640fd6f5c8b72581bd099198d670510
+
+[http://hem.bredband.net/miko22/syncml-client-0.1.tar.gz]
+md5=a3a6ebd4d64a4de4234f6d8a7f7f61d5
+sha256=d5b4d8a69bf72abcea74a3d02d9bed470abff0d5252c601b73ce8fe933822aea
+
+[http://hinterhof.net/cdtool/dist/cdtool-2.1.8.tar.gz]
+md5=7b19b6f68d2c648296378b784d5f7681
+sha256=73de81ea2de2eae64b888e1b2739ef643ccea13c79790569f8e6278369976a21
+
+[http://hnb.sourceforge.net/.files/hnb-1.9.18.pre7.tar.gz]
+md5=65196f236b40ecc8bfccf8aec36e91f6
+sha256=0102d55afe4d2071b088624f401f8b830659cb63c3364d3c6e089b4e74138bcc
+
+[http://home.comcast.net/~fbui/fbui-0.9.14c.tar.bz2]
+md5=e97c609af171cceb85d08f366406374a
+sha256=112ba595859ad6e42f5ad522ada27a08da7702e3ea8c84df48ae1c5d6177ae8e
+
+[http://home.midsouth.rr.com/zaurus/qpenmapfe_1.0.0_src.tar.gz]
+md5=6e913e436a7b0f7572ec1ac77db41fde
+sha256=ded3abdab8333aaf7f451963f32465ca1451a38afb173ef64e0f898d907a6e02
+
+[http://home.tal.org/%7Emilang/n770/maemo-mapper-desktop-20061114-001.patch]
+md5=b391fd0d13f5cabbcb2aba3237156f32
+sha256=7701fa20a835f3ae504a6e04d2e449b0be2d2380e7522fa5736791a55abacf4c
+
+[http://homepage3.nifty.com/cam/slcalc_1.2.1_arm.tar.gz]
+md5=3052050235b4bc8fc14d28b8b5e13e49
+sha256=c7d7f2fb4a3903dd26a90df358f5757f2637c333cd6f6bf511f506a958349fa1
+
+[http://homepages.tu-darmstadt.de/~p_larbig/wlan/mdk2-v33.tar.bz2]
+md5=c02004f4588fdc19e5e861df896f5e2c
+sha256=38294fb58a3dfcc21d64f263370d039a2411dda0aa472d1e0d94b7864f1f8fc9
+
+[http://hostap.epitest.fi/releases/hostap-driver-0.3.10.tar.gz]
+md5=e861a032ab716e14864243e01db32ba7
+sha256=7cb8860a201f54036e78f830cfa4b099ca194267f34f3eb3d5638661d5c619fd
+
+[http://hostap.epitest.fi/releases/hostap-driver-0.3.7.tar.gz]
+md5=9d56a65386fd8e688f039ef927ac2ccb
+sha256=6f9bd7bc4dd59559e5b5ec1c7d76600572fa52690322b24f79b89713538a9425
+
+[http://hostap.epitest.fi/releases/hostap-driver-0.3.9.tar.gz]
+md5=6eac8910802c5535bc5248eae259b228
+sha256=8e6c0913b33542e5680bb5401f1745bda9b9857a7562cebd2f9c0af8a3287a40
+
+[http://hostap.epitest.fi/releases/hostap-driver-0.4.4.tar.gz]
+md5=e9b4a5cb992e06c3c6bf2bc99eca6625
+sha256=7b9ad6bb5cf6c485e320bd8901d2e398cb6661cda633ba6360200a9bf94eb5fb
+
+[http://hostap.epitest.fi/releases/hostap-driver-0.4.7.tar.gz]
+md5=ee495686cf27011b4e401963c2c7f62a
+sha256=e9a3e035a1483b371269936c6fde46bfbae71dc38fa04685c1338ca8ffe900a5
+
+[http://hostap.epitest.fi/releases/hostap-utils-0.3.7.tar.gz]
+md5=529a31e987924116b8c7409dbf5794f2
+sha256=9b98acd0e70fab72615f66f7e03f06231c9c35a367003c420291d1589f8911f0
+
+[http://hostap.epitest.fi/releases/hostap-utils-0.4.0.tar.gz]
+md5=c6775ca98721affeb336392def22289e
+sha256=2ce613f46985359eb1208cfe876899f133d4d1656936c424a60c1b40b2f64876
+
+[http://hostap.epitest.fi/releases/hostap-utils-0.4.7.tar.gz]
+md5=afe041581b8f01666e353bec20917c85
+sha256=c6f598d8e356c1620fa009eca0a700bf1105e16817eefd77d891994261009355
+
+[http://hostap.epitest.fi/releases/hostapd-0.1.3.tar.gz]
+md5=54563fb51f143c4bf26ddec2516e8f9f
+sha256=d14b56996ba9aa9cb6c78c889831113cc55a400bd1d237cec6eec7549a358c97
+
+[http://hostap.epitest.fi/releases/hostapd-0.3.7.tar.gz]
+md5=12ad3a43bf4a774f347b129c973bbe57
+sha256=b66e74bd493359c83e12f3c2a88fee57587c14b0cfbd68cc51feb211885e7ca5
+
+[http://hostap.epitest.fi/releases/hostapd-0.4.4.tar.gz]
+md5=79810ff32f6f12a37dc7827ce18af533
+sha256=684636fd31ad2cbe989a19f2ce844b7d1c46c1e009cda37c92f5d9ead9ba18b8
+
+[http://hostap.epitest.fi/releases/hostapd-0.4.8.tar.gz]
+md5=b8f30f23c04b74f18b2e4e6d8e0ee014
+sha256=4675ae608a9f16e0ac519af2003ef694e7e13a4ecda2fcbe29f12a306e460551
+
+[http://hostap.epitest.fi/releases/hostapd-0.5.1.tar.gz]
+md5=3e38533604187e291f45a2f6873b71cc
+sha256=f4754629eb70a63e9774ac97ebd28f3dea22fb5b422dd43d02ab5053d37ca61c
+
+[http://hostap.epitest.fi/releases/wpa_supplicant-0.2.6.tar.gz]
+md5=7f83c74bf5e6db7dc564c391a44a9fe7
+sha256=f32c5e7607312d3650684977e6d1888a4a53cdb4ba16746225fab66cf345d55a
+
+[http://hostap.epitest.fi/releases/wpa_supplicant-0.3.6.tar.gz]
+md5=e7691bc302beebe9ab3b290d0349925c
+sha256=ecc820bfa5f9495fed342e95a806ad723cdeae7175460b20b4227390f931334b
+
+[http://hostap.epitest.fi/releases/wpa_supplicant-0.3.8.tar.gz]
+md5=c9ced104f0322f834a84336c293b4b57
+sha256=f24a344e19a513d5725b1cdce9b0393676a80a7dc083e053a04fb3b703cf7115
+
+[http://hostap.epitest.fi/releases/wpa_supplicant-0.4.7.tar.gz]
+md5=1345730f15d5f93f2f083096ddc903eb
+sha256=002a5d52c1c8f516efe6a834227d3fe63ecf2588966e44fbde1e72a5844c334f
+
+[http://hostap.epitest.fi/releases/wpa_supplicant-0.4.8.tar.gz]
+md5=765d6c70d75e88cd4dc010fa6b52c45f
+sha256=6d03f514211c9b806fb649e8dc5d0b047aa55b4762ddc7b675cf0bd7de230cf8
+
+[http://hostap.epitest.fi/releases/wpa_supplicant-0.4.9.tar.gz]
+md5=98498c152cbfc388c306fd9bbf7d57d4
+sha256=bc7b0dc81248394d2456ea25059bdf1df2173fa8d178cda7d4570671ab916857
+
+[http://hostap.epitest.fi/releases/wpa_supplicant-0.5.5.tar.gz]
+md5=482dd85949c82aa15309e5ab3d2cf5c3
+sha256=d571021d74fe7433716fc968b568e458451f40cfb333b5a682cd4d8ee2373543
+
+[http://hostap.epitest.fi/releases/wpa_supplicant-0.5.7.tar.gz]
+md5=bd2436392ad3c6d2513da701a12f2d27
+sha256=cf688be96ba5f3227876b3412150e84a3cee60ddd0207b6d940d1fbbaf136b57
+
+[http://htun.runslinux.net/dist/htun-0.9.5.tar.gz]
+md5=f720686c841e9fefc06db76458fd9908
+sha256=1f8259a3a8ae583170816f5028329f3a7157f87f927da9c0a911a5fb9be263a1
+
+[http://ibiblio.org/pub/Linux/system/daemons/cron/cron3.0pl1.tar.gz]
+md5=d9f12c3edfca4a4918b8d299cce5f2b4
+sha256=99602e966e12347f2728b2153537a14195b06fe130d047e8d91b4f72b24866a0
+
+[http://ibiblio.org/pub/Linux/system/daemons/cron/dcron-2.3.3.tar.gz]
+md5=537cda2dff7dfaf87660fee91b2cf78f
+sha256=bd7ce3b854678209e8624698a4000d3e5337339c3825c58a4b3a0a2fbf1a7819
+
+[http://icculus.org/rott/releases/rott-1.0.tar.gz]
+md5=c1c6cbecf00f2229cf2e0053334dcfc1
+sha256=11f9cc331d0be87f0f172840e2bb6e03e27c3b8e9ecbb3eb8cffdc5b73afbd95
+
+[http://icon-theme.freedesktop.org/releases/hicolor-icon-theme-0.9.tar.gz]
+md5=1d0821cb80d394eac30bd8cec5b0b60c
+sha256=a6abad5dd62f12870ff5b32ae414e0c611f0922b905aeab6db2676b607bb1643
+
+[http://initd.org/pub/software/pysqlite/releases/2.2/2.2.2/pysqlite-2.2.2.tar.gz]
+md5=3260547d3f11c85613b2de8ed529a4fc
+sha256=76a82a6a45ae9c12c0409427765ae56c06d8dbb03321f21b8c4d7da48c7cd2b3
+
+[http://jabberstudio.2nw.net/kf/kf-0.5.4.1.tar.gz]
+md5=f963f289b7a1221f192a540fbda5cd55
+sha256=70068af405b4a18c84babded6a1d3fee1b87687d725c1c0456570f06c3841ef3
+
+[http://jerakeen.org/files/PythonDaap-0.4.tar.gz]
+md5=f7672bfd563787a76fb7e9a43c062f18
+sha256=5318946df77937e0b601c95a198790f9ba52d4afb4eb153480289350182bb739
+
+[http://johnath.com/beep/beep-1.2.2.tar.gz]
+md5=d541419fd7e5642952d7b48cbb40c712
+sha256=5c0445dac43950b7c7c3f235c6fb21f620ab3fd2f3aafaf09896e5730fcf49a1
+
+[http://josefsson.org/libidn/releases/libidn-0.5.19.tar.gz]
+md5=440835808c577073db7d571357223dce
+sha256=4f707c189259d7b3dda908d78a995366d388fe051aa3554b82cb324426997a23
+
+[http://joshuawise.com/code/softfan/softfan-0.10.tar.gz]
+md5=e19e8a55c70d9b78f3c5abfa456ebf0c
+sha256=d1cf80381378041049c2b5ec25afca56939cce1d7dd8a8d8ab2ac46e210e354d
+
+[http://jpj.net/~trevor/aumix/aumix-2.8.tar.bz2]
+md5=dc3fc7209752207c23e7c94ab886b340
+sha256=636eef7f400c2f3df489c0d2fa21507e88692113561e75a40a26c52bc422d7fc
+
+[http://kakasi.namazu.org/stable/kakasi-2.3.4.tar.gz]
+md5=4eff51aafbd56c9635791a20c03efa8f
+sha256=c272560f5c11fe45b011c4e26ada66218fb0109d5582c5876aa49c5e24718534
+
+[http://keepcool.kf.tu-berlin.de/public/mitarbeiter/sadowski/qtopia-squeak-3.4-2_patched.tar.gz]
+md5=0e2bab65b62784d8714057624373f70d
+sha256=f364de206e1e0f9b1fe84c22a41ff56ebe80d01f0779da2470bbd3efddb3feec
+
+[http://kernel.org//pub/linux/daemons/autofs/v3/autofs-3.1.7.tar.bz2]
+md5=4f602f82442b48ce9c2e0005d59c3408
+sha256=838c6e92c39827b54a37559a02c9b409a4f7ec3124cc6d20845aabfaabe2dd18
+
+[http://kernel.org//pub/linux/daemons/autofs/v4/autofs-4.1.4-misc-fixes.patch]
+md5=6342d6908c35af72b29231ecc6a10b5a
+sha256=4fc5725c683405e0da29021aacb3674c71ce1b61f62b810430aa112644773cf8
+
+[http://kernel.org//pub/linux/daemons/autofs/v4/autofs-4.1.4-multi-parse-fix.patch]
+md5=2783f4498c7e90a2cbf93b44d4fc4b94
+sha256=91d852ae612b19862d3925a807c319c74a0a06cc7a8f7390715591b6e1110108
+
+[http://kernel.org//pub/linux/daemons/autofs/v4/autofs-4.1.4-non-replicated-ping.patch]
+md5=b7d81c9aa92884d55ce5a1075d49fe78
+sha256=398c921161a57f1d87a5829ea264deed9e2f3adc64ac011f7f0490257d31b633
+
+[http://kernel.org//pub/linux/daemons/autofs/v4/autofs-4.1.4.tar.bz2]
+md5=7e3949114c00665b4636f0c318179657
+sha256=e25caa0e9639ea54dd7c4f21e8146ac9859a61fa126f397edf874b5fdc147430
+
+[http://kernel.org//pub/linux/daemons/autofs/v4/old/autofs-4.0.0-1.tar.bz2]
+md5=eca614ef301b49aa8105876e8abd91b5
+sha256=f5555e41fc351644fd5ff935c2d2340719a18fa32d1f6ccdc6bbd4c18a694f88
+
+[http://kernel.org//pub/linux/devel/binutils/binutils-2.14.90.0.6.tar.bz2]
+md5=71b99dba3045a359dc314dbebedcf502
+sha256=6f75f36f35d16fd1fdc6600926af3ceaaa3bdca4e91ae3bf22891594afa0116e
+
+[http://kernel.org//pub/linux/devel/binutils/binutils-2.14.90.0.7.tar.bz2]
+md5=b5b1608f7308c487c0f3af8e4592a71a
+sha256=204c2624b5712a3482d0e774bb84850c1ee6b1ccdfd885abfe1f7c23abf4f5c0
+
+[http://kernel.org//pub/linux/devel/binutils/binutils-2.15.94.0.1.tar.bz2]
+md5=4a4cde8e5d0c97249bf6933f095813fe
+sha256=c4ad801a7ed5a4e3d5d943d73c82f0af75998c95b69184dc884460bf40e48ee9
+
+[http://kernel.org//pub/linux/devel/binutils/binutils-2.16.91.0.6.tar.bz2]
+md5=00ef9f1429d5f18702d08552f5c09441
+sha256=7cffa91af850d3fd5f086e3690eae05c1d9d5ad82f915b36f0de920a3c9920be
+
+[http://kernel.org//pub/linux/devel/binutils/binutils-2.16.91.0.7.tar.bz2]
+md5=26c3fddb07bfe3128d2e09e628eb33a0
+sha256=af9cfdde06693ecaaf3b558e6a66e7245d04cb981812ce06d023de868aa92b41
+
+[http://kernel.org//pub/linux/devel/binutils/binutils-2.17.50.0.1.tar.bz2]
+md5=cfecfb29e260225fa192654f3763c2f8
+sha256=9a56b06e4f533745e9b7cde5b170f905f74d130b899f48498cbd6d376c664b7a
+
+[http://kernel.org//pub/linux/devel/binutils/binutils-2.17.50.0.12.tar.bz2]
+md5=6f3e83399b965d70008860f697c50ec2
+sha256=7360808266f72aed6fda41735242fb9f1b6dd3307cd6e283a646932438eaa929
+
+[http://kernel.org//pub/linux/devel/binutils/binutils-2.17.50.0.5.tar.bz2]
+md5=00eccd47e19a9f24410a137a849aa3fc
+sha256=bbfa06ee0173c5e9ae65ff14ba29502ddf4e355ac3419f88e3346299cfaf4e19
+
+[http://kernel.org//pub/linux/devel/binutils/binutils-2.17.50.0.8.tar.bz2]
+md5=1441fe6fa44b344d0575cb66d3f89252
+sha256=016b0faa1bbe20c13a4b5f495a5a4071349f6385012b767c89bb908452faecf2
+
+[http://kernel.org//pub/linux/docs/manpages/man-pages-2.41.tar.bz2]
+md5=7b193c2fcf1d8f625e998df54582fee9
+sha256=bc9e3fe06a550d6eb48fd84eaf58415c78fbc29ba042e4a074adb62736f50760
+
+[http://kernel.org//pub/linux/kernel/people/ck/apps/interbench/interbench-0.30.tar.bz2]
+md5=d197c4077ce15460a1c411f88f6a8053
+sha256=a77d4a82573b07a9f6c6d256b399accea1f6cd433f3f1e6d038272cf0d320365
+
+[http://kernel.org//pub/linux/kernel/people/ck/apps/kernbench/kernbench-0.41.tar.bz2]
+md5=50dda4c865dba5c341422e2d848fb6be
+sha256=6d5de792b0a3b119da3b584eb64076ed192d050516f7d44a36f95ecd8cf32362
+
+[http://kernel.org//pub/linux/kernel/people/dwmw2/kernel-headers/snapshot/linux-kernel-headers-2.6.19-rc1.tar.bz2]
+md5=f1fc22939d71224923f168ba179b3e51
+sha256=35b9045edc5992c2d168fc72ca04a57f4e1c81a0ea987fa88342e54f7c79fbd4
+
+[http://kernel.org//pub/linux/kernel/v2.4/linux-2.4.18.tar.bz2]
+md5=ad92859baaa837847b34d842b9f39d38
+sha256=90d9a45ba395f742050f791b6944f6263d0ab03c84aad8a32967ca866906490e
+
+[http://kernel.org//pub/linux/kernel/v2.4/linux-2.4.24.tar.bz2]
+md5=1e055c42921b2396a559d84df4c3d9aa
+sha256=9a6c37e048376cd2a9845f6f75cb44fb27c244d719e9d9dd81063a525f081e1f
+
+[http://kernel.org//pub/linux/kernel/v2.4/linux-2.4.25.tar.bz2]
+md5=5fc8e9f43fa44ac29ddf9a9980af57d8
+sha256=877af8ed89e56af004bb0662c1a9cfc785b40c602f71a8bf81521991026cf2f0
+
+[http://kernel.org//pub/linux/kernel/v2.6/linux-2.6.11.tar.bz2]
+md5=f00fd1b5a80f52baf9d1d83acddfa325
+sha256=1fa39c202efe168bfeb0ddd74c8e4814f77da7dc78993e47826bad9173b95808
+
+[http://kernel.org//pub/linux/kernel/v2.6/linux-2.6.12.6.tar.bz2]
+md5=1592bb2a8ec0deb1ff32e8238f25ecc5
+sha256=d8bbdd8064c3564e6ec74fec3332776733e7982e67af66c5311fd1955bf309dd
+
+[http://kernel.org//pub/linux/kernel/v2.6/linux-2.6.12.tar.bz2]
+md5=c5d2a1b62e1dad502c871bba267337d5
+sha256=727b55291a2c52f9f6b9f7ef03b2cd9fc54f7d4d1b0b2baed4c3dd6d9a890c71
+
+[http://kernel.org//pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2]
+md5=66d02cbd723876c6d69846a067875a22
+sha256=cc56285834bed461fd405c00a34d3c3095673333b94621580eeeb0c65237af15
+
+[http://kernel.org//pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2]
+md5=9a91b2719949ff0856b40bc467fd47be
+sha256=1200dcc7e60fcdaf68618dba991917a47e41e67099e8b22143976ec972e2cad7
+
+[http://kernel.org//pub/linux/kernel/v2.6/linux-2.6.17.tar.bz2]
+md5=37ddefe96625502161f075b9d907f21e
+sha256=ab0f647d52f124958439517df9e1ae0efda90cdb851f59f522fa1749f1d87d58
+
+[http://kernel.org//pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2]
+md5=296a6d150d260144639c3664d127d174
+sha256=c95280ff6c5d2a17788f7cc582d23ae8a9a7ba3f202ec6e4238eaadfce7c163d
+
+[http://kernel.org//pub/linux/kernel/v2.6/linux-2.6.19.tar.bz2]
+md5=443c265b57e87eadc0c677c3acc37e20
+sha256=c2fd6bcd2b7c1b3d37d64e4d1825703792a75474830a3db7d2dc603a8d392d58
+
+[http://kernel.org//pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2]
+md5=34b0f354819217e6a345f48ebbd8f13e
+sha256=2c14ada1ac7d272e03b430d3a530d60fc9ec69cc8252382aa049afba7d2b8558
+
+[http://kernel.org//pub/linux/kernel/v2.6/linux-2.6.9.tar.bz2]
+md5=e921200f074ca97184e150ef5a4af825
+sha256=f5dba6366e87e91234d1b0069cfea655b0a4cb37ea97f899226f16998e6ab9f1
+
+[http://kernel.org//pub/linux/kernel/v2.6/snapshots/old/patch-2.6.11-bk1.gz]
+md5=92d8225c6b75b142054ad2321a992a42
+sha256=2886eb4ceedac69f3924dbc9d979869b8a188dfb5b94a3e1068932859b4c9b3f
+
+[http://kernel.org//pub/linux/kernel/v2.6/testing/linux-2.6.12-rc2.tar.bz2]
+md5=b8b75ddeca0f48221f085703f2f72692
+sha256=2e36150665e7268d5dd03b70621a0e80c4f7abb04584694dba540774030f6a54
+
+[http://kernel.org//pub/linux/kernel/v2.6/testing/linux-2.6.12-rc5.tar.bz2]
+md5=0f9afd619a10872b3383362d55c892c3
+sha256=4cc5ca6e2ea8583f026620169e5d6eceb6c620181ba0633efbeb74cdb8c2fc59
+
+[http://kernel.org//pub/linux/libs/klibc/Stable/klibc-0.190.tar.bz2]
+md5=6c96f954676c7b898dfe230e0f2a1fb5
+sha256=5767cbb094300c5e26eb0bab588ecdbf9e5db2a637e9ae73c2efb8a62e05217e
+
+[http://kernel.org//pub/linux/libs/klibc/Stable/klibc-1.1.1.tar.bz2]
+md5=baa1f6e0b6acbf9576bb28cca5c32c89
+sha256=6a2efdfc757c518a8185f457799506086084b59498f53db37cfb6728008127e0
+
+[http://kernel.org//pub/linux/libs/pam/pre/library/Linux-PAM-0.79.tar.bz2]
+md5=0b89b73970c7d490ad9a13718b74d27b
+sha256=5ed480cb76c91c2739ddba87f15437510e58c60dfdd7ead6f469149b2da94bb7
+
+[http://kernel.org//pub/linux/libs/security/linux-privs/kernel-2.4/libcap-1.10.tar.bz2]
+md5=4426a413128142cab89eb2e6f13d8571
+sha256=66c3f033fdc8f9ba0bd9d0ae2d1f2c11f9fa51bf0d1418e5cb75e29e6577a5bc
+
+[http://kernel.org//pub/linux/utils/boot/syslinux/Old/syslinux-2.11.tar.bz2]
+md5=38a30cc790265f19f80330330ffaa527
+sha256=cdc785cb2356a7147e988e6b572d378c3762cf701c85e4c91a634545e6b9aff4
+
+[http://kernel.org//pub/linux/utils/boot/syslinux/Old/syslinux-3.11.tar.bz2]
+md5=513ff71287a4397d507879a1a836c2e8
+sha256=3baef57243c2475b46a913afe38bc7228ddc0297dfaa33e2213903eb9f130bd0
+
+[http://kernel.org//pub/linux/utils/boot/syslinux/syslinux-3.31.tar.bz2]
+md5=5faae89d18baf92e28bc820c62270db9
+sha256=57c4ca6e7836460297edcc45148373ec131157b29c184ee011b29ec491e010f0
+
+[http://kernel.org//pub/linux/utils/kernel/hotplug/diethotplug-0.4.tar.gz]
+md5=1fd89c902006271f00a774cc3183c15d
+sha256=dcc1809e8477b95317a7ff503cdd8b6d3f85b8d83a3245252ff47cf631523620
+
+[http://kernel.org//pub/linux/utils/kernel/hotplug/hotplug-2004_03_29.tar.gz]
+md5=167bd479a1ca30243c51ca088e0942b3
+sha256=397e06eefc4639342e9f650cc47336ebc8c86a37fdcd9b857e55f99d37d8da9f
+
+[http://kernel.org//pub/linux/utils/kernel/hotplug/hotplug-2004_09_20.tar.gz]
+md5=9e6b06dfa3b91f051b55e1483adb5a68
+sha256=3f2d989f7cbef92612b1ecd913398fc42165e29f214fdf68fa997a8e5b2a138f
+
+[http://kernel.org//pub/linux/utils/kernel/hotplug/hotplug-ng-001.tar.gz]
+md5=e81d4159a01620b37721b2a05d6a4740
+sha256=af40399fe434678454ae8ea100db6cba0482aa65b8972a05098c779cac57bc48
+
+[http://kernel.org//pub/linux/utils/kernel/hotplug/hotplug-ng-002.tar.gz]
+md5=faa08f321fefd2c61ce4c9355a62fe31
+sha256=ca7ef124cde06883fbf28c7e78ce1e4c5526434bbe5672ef0a3e85a61a9d0b5f
+
+[http://kernel.org//pub/linux/utils/kernel/hotplug/udev-092.tar.gz]
+md5=a3954a4fc25cee4e1f6df498de8f72c7
+sha256=e402e316ffddbdd5312d3a5957fccf47de7a8b62c7bb3710829a2e696e3818d1
+
+[http://kernel.org//pub/linux/utils/kernel/hotplug/udev-097.tar.gz]
+md5=dfee443eed87892cc7eb50969191ff17
+sha256=1af8fedef2e76c99ab4dbf75e5ff573739dd952adc7856c5dbcebf0512e4adbe
+
+[http://kernel.org//pub/linux/utils/kernel/hotplug/udev-100.tar.gz]
+md5=1ceb626a86630287cc28585eb16d7131
+sha256=faa9b6e000509039bbd4e1f24694adacf2cd86228d22240ec1a13acc13517aa6
+
+[http://kernel.org//pub/linux/utils/kernel/ksymoops/v2.4/ksymoops-2.4.9.tar.bz2]
+md5=231b6ea3afbc318c129ec770d10f8ec8
+sha256=125fcecc9f650dc2ec82db3194d17c0af40b48900204fedb0c695b5fcc5a99e3
+
+[http://kernel.org//pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.1.tar.bz2]
+md5=29aa770c6ce92cbbc6da00161d2784d8
+sha256=f7c66e151d3d89df02c41f82cae5c384cad76ad3956519a872d98d5676bddd47
+
+[http://kernel.org//pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.2.tar.bz2]
+md5=a1ad0a09d3231673f70d631f3f5040e9
+sha256=c080f7e42e60456eab33051026da388b5d21a360e9d2bee26ce9991427a758aa
+
+[http://kernel.org//pub/linux/utils/kernel/modutils/v2.4/modutils-2.4.27.tar.bz2]
+md5=bac989c74ed10f3bf86177fc5b4b89b6
+sha256=ab4c9191645f9ffb455ae7c014d8c45339c13a1d0f6914817cfbf30a0bc56bf0
+
+[http://kernel.org//pub/linux/utils/kernel/pcmcia/pcmciautils-010.tar.bz2]
+md5=ff3cb012fd1a8801e912054b45420ac2
+sha256=9ed7fe56197b4e1328a94842b602aef0a3a2e3380dacc95b4366661582e05661
+
+[http://kernel.org//pub/linux/utils/kernel/pcmcia/pcmciautils-013.tar.bz2]
+md5=5882b7c84f095a7492b1ebe7577dce5a
+sha256=7c1adf1a5ebeba124cef4102cbbf9ca65b8493ad6b8fcfb48091e27e983ffc41
+
+[http://kernel.org//pub/linux/utils/kernel/pcmcia/pcmciautils-014.tar.bz2]
+md5=3f07c926875f6c5dcb83240f39725177
+sha256=6bef7c05ba9fad231fe7a188043c61c116c24bab5fa79d9d72c1d8e11ff38925
+
+[http://kernel.org//pub/linux/utils/man/man-1.5p.tar.bz2]
+md5=3800006ccd2f1f16124a2ac3abf04b30
+sha256=5431073fb315f9b8dd43f430d7a9082e0a6232e20af559604da573270df8236b
+
+[http://kernel.org//pub/linux/utils/net/NIS/OLD/pwdutils/pwdutils-2.6.tar.bz2]
+md5=8567328b1ad7609f8851eec57658f1a0
+sha256=19c6eeb42f2688464cf4fc7dadecf58faeebfa6a13f05974f6dad910f5fd6b98
+
+[http://kernel.org//pub/linux/utils/net/NIS/OLD/ypserv/ypserv-2.17.tar.bz2]
+md5=d0366ade2f46a2292de47bc1fe60e8fd
+sha256=afed29dd6f0401be0fa2a8761993dd6dd93d1ad93aa1812a87ce8aa00736e89b
+
+[http://kernel.org//pub/linux/utils/net/NIS/yp-tools-2.9.tar.bz2]
+md5=19de06a04129ec26773f9198e086fcd4
+sha256=65c27f5c9ef3af56b17108ecb2e89276e0fe8722152d4353bb86672c1060a718
+
+[http://kernel.org//pub/linux/utils/net/NIS/ypbind-mt-1.19.tar.bz2]
+md5=4878b742d61590501230aa8baa6a4f53
+sha256=a39753a22b1f77b1fdb8163e800ee2d4f98a9e3018693d127459b509069a23f3
+
+[http://kernel.org//pub/linux/utils/raid/mdadm/mdadm-1.12.0.tar.bz2]
+md5=736705240e918294740929518477fc6f
+sha256=22831449225cc39948b187c9e3bd89ba12d5c8abee18b2d0242da883cb7d9490
+
+[http://kernel.org//pub/linux/utils/raid/mdadm/mdadm-2.5.5.tar.bz2]
+md5=099bb5f340c5d334445dd003a6d86460
+sha256=d54ae28bdafdbd3c71bfafa8f8814583356714b6a1436783161413a1e34a38c9
+
+[http://kernel.org//pub/linux/utils/util-linux/util-linux-2.12o.tar.bz2]
+md5=a7c0c2729ed27beac39cf656d2097dd3
+sha256=913a83f69a370b6ee858577f8f1d218cfe899fd39d7b8a380df4971b6059e8e0
+
+[http://kernel.org//pub/linux/utils/util-linux/util-linux-2.12q.tar.bz2]
+md5=54320aa1abbce00c0dc030e2c3afe5d7
+sha256=2e68a53d1393e97926340d9b21e1bde488aaef05ab3e8bcab4849d1859115c6d
+
+[http://kernel.org//pub/linux/utils/util-linux/util-linux-2.12r.tar.bz2]
+md5=af9d9e03038481fbf79ea3ac33f116f9
+sha256=b8e499b338ce9fbd1fb315194b26540ec823c0afc46c9e145ac7a3e38ad57e6b
+
+[http://kernel.org//pub/software/utils/pciutils/pciutils-2.1.11.tar.bz2]
+md5=2b3b2147b7bc91f362be55cb49fa1c4e
+sha256=8817295a7db11f31837c7c23f49e768131700b2b729d9fc724520d94a8b00f4b
+
+[http://klaus.geekserver.net/libflv/libflv.tar.gz]
+md5=5eb6b38393d81f16fb4155fe406e527c
+sha256=b53afe2a88fa24bdd53e2a3dd51ab660b89b46b1ba4918735d7331b2e56548d6
+
+[http://kstars.sourceforge.net/kstars-embedded-0.8.5.tar.gz]
+md5=ae02647516a4a5c47674316ef8343c11
+sha256=650f0b3ae4d30282b191e456ebf2679a4ec549da83f69667bd4396bad9abf9f5
+
+[http://leapingcat.org/martinhenne.de/temtor/files/temtor-0.0.1.tar.gz]
+md5=340bc7fa4a9cad1fe9ecc9b1df49d164
+sha256=1c76d6ac7e80de0ae88cc5cbdad7a2a564eac96788549359b001366dc52fe817
+
+[http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz]
+md5=caa9f5bc44232dc8aeea773fea56be80
+sha256=a21d724ab3b3933330194353687df82c475b5dfb997513eef4c25de6c865ec33
+
+[http://libmpeg2.sourceforge.net/files/mpeg2dec-0.4.0b.tar.gz]
+md5=52d10ea80595ec83d8557ba7ac6dc8e6
+sha256=9416376952812e5b479745d67a2bf874fbcad10137517314ce7de37abb756df8
+
+[http://liboil.freedesktop.org/download/liboil-0.3.10.tar.gz]
+md5=770f656bca8166dab33b322d5886a4bf
+sha256=4587753a023550a066abe59a7e467c1af35b9f5e81bfb40a12463ad2df8f088c
+
+[http://liboil.freedesktop.org/download/liboil-0.3.11.tar.gz]
+md5=65ce3266be385d0c7cd9a1157433332f
+sha256=deb6530d40ecad2b849d68912500e6d03bab4ac63de7a97340d05af1d7cf0ad4
+
+[http://liboil.freedesktop.org/download/liboil-0.3.9.tar.gz]
+md5=5d139b1fb16f0e93f0c84290ad2aaff8
+sha256=dd4d680ce95e586a1bbe767e1a7b25e1c53f842b8be6cf4e30e89cfa8232dd90
+
+[http://libtomcrypt.org/files/crypt-0.97b.tar.bz2]
+md5=ae5f51ac4dd94404a51d3b4601cab6d1
+sha256=68959ec2463ff0936db670370f50818bfdfc5bd3399f8547d04e6ac688529147
+
+[http://links.twibright.com/download/links-2.1pre26.tar.bz2]
+md5=841af2540c789e254b8465e07e24c684
+sha256=c89f10d42be2a0be8a017e1084897b1aabc5bca76817e9dab43b758dff051c56
+
+[http://linux.dell.com/devlabel/permalink/devlabel-0.48.01.tar.gz]
+md5=1a4032b942d8b47544da1957374a9786
+sha256=1dd2cce79f93cb3483fefdc02f65ed0868754ad12360c830d5f5cbe95da8e0e4
+
+[http://linux.tlk.fr/games/Powermanga/download/powermanga-0.79.tgz]
+md5=3a4f00658496921b7327413ac476c1b7
+sha256=99a9737480224be47362387d2d2389bee61d7685510b3a161b2b1db6c0556c26
+
+[http://linuxbrit.co.uk/downloads/camE-1.7.tar.gz]
+md5=afdab327ca50ee15197d2d9e19491df7
+sha256=e29b73e0bf763dead4a6ed80e648aaaea683f1a5865e5c21fed31fb9428e9430
+
+[http://linuxbrit.co.uk/downloads/feh-1.2.6.tar.gz]
+md5=6d40889465181de51bb26fbbe57fbfac
+sha256=281cec4cec724b53ba501718e8010bbff0ef49415649e4e7fe6431ec62ebea7d
+
+[http://linuxbrit.co.uk/downloads/feh-1.2.7.tar.gz]
+md5=a25a4ace719a69bab1df5929ad7b9716
+sha256=08db3709424613680c0400c6ab0bd28f623928e5f33f4d7469ecd71328fbf1c2
+
+[http://linuxbrit.co.uk/downloads/giblib-1.2.3.tar.gz]
+md5=06ae3113fdfe9f05a642bd844cc85eab
+sha256=42eb6bff68e88ef12a7ac2aa69848aeb29a8b69176b3bd3d9d67cf9a1233fe85
+
+[http://linuxbrit.co.uk/downloads/giblib-1.2.4.tar.gz]
+md5=c810ef5389baf24882a1caca2954385e
+sha256=176611c4d88d742ea4013991ad54c2f9d2feefbc97a28434c0f48922ebaa8bac
+
+[http://linuxsh.free.fr/tools/cetools-0.3.tar.gz]
+md5=58e8706e6d858e48d317cadf550c1224
+sha256=dd74c8f27c7b3ff4c7320803674e2446afce93880f84d96dfb142a9fa73db940
+
+[http://linuxtogo.org/~florian/themes/foxbox-0.1.tar.gz]
+md5=77bc0cc71d61af699e29f4b5c09b37bb
+sha256=bcf668c1123f4d73a4c503ff189446cf4b30d64466fea49628999cdce8661c67
+
+[http://linuxtogo.org/~koen/gpe/themes/gpe-theme-e17-0.1.tar.gz]
+md5=c6e9d80180861d0a744b313c59691655
+sha256=40df3e20e7c563b49ae0d5b4ff9151d0b9062815e7222f361b949cb60d9b0b59
+
+[http://linuz.sns.it/~max/twin/twin-0.4.6.tar.gz]
+md5=92429bb5550a4c231085585a3473bf4d
+sha256=67c4b7677469040b4fc37c084bc4f1ef4c365477e79862c3dc7c256c9f9257c2
+
+[http://linuz.sns.it/~max/twin/twutils-0.2.tar.gz]
+md5=313d47ae27c3c4d51317626421c78284
+sha256=e4ac5c2a59e1c9f80b19c5703240e125592018f40972c2628171d0eeddd15e7b
+
+[http://lisa-home.sourceforge.net/src/lisa-0.2.2.tar.bz2]
+md5=cba116a4880f77205e0813d93bf14310
+sha256=986a923a5247468db1d2a03e93268f4025ae5dc27e911dafc7b37e6a802122db
+
+[http://llvm.org/releases/1.9/llvm-1.9.tar.gz]
+md5=866ba97420f5ce978b6a6b1cb4338890
+sha256=17b82323151925ff5a7ad09a21781a0fa50ead4b87a339cee262271e4ededa13
+
+[http://lsc.fie.umich.mx/%7esadit/spyro/download/SPyDI-0.9.3.tar.gz]
+md5=9f54fc8a40e26edd61ce67902b315a66
+sha256=07675051b60343820b235a818f2c2d528b86d2a19c2f56833213e3f574f9cd1a
+
+[http://lsc.fie.umich.mx/%7esadit/spyro/download/SPyRO-0.9.14.tar.gz]
+md5=2cf73a4d293e3e581a2af0246349a470
+sha256=524843cba2a8afb2cb3489d3439ffcd0a7f708bd7d2addb22140058dc42e89f2
+
+[http://ltt.polymtl.ca/lttng/ltt-control-0.12-21062006.tar.gz]
+md5=053abb5ce58363ae09340e00de28c520
+sha256=c53f07c095642303e22b283212bb0da45020b0714e24310ed0e396c560a78e1f
+
+[http://ltt.polymtl.ca/packages/LinuxTraceToolkitViewer-0.8.41-12052006.tar.gz]
+md5=de139052f234cf54d714c960524bd5ef
+sha256=a21431358d7f2a5deb76b1a95ee80dc870b0dc2426d4860c61144343d48eff3e
+
+[http://luaforge.net/frs/download.php/989/lua-gtk2-0.3.tar.gz]
+md5=a2788c45d60ef8ce30168811d7e72334
+sha256=b3dd85e34b22cf757eafb6ef15c5505d5ec5e71803caef4b69ddc7fd5d46fabe
+
+[http://ludovic.lange.free.fr/CETools/ethload-1.2.tar.gz]
+md5=0e8cac9311ece27bed363d842c63dc50
+sha256=8a27bae79247f893592b9e919f80c6f01c082d8ac7320602490106c758a9c762
+
+[http://matt.ucc.asn.au/dropbear/releases/dropbear-0.45.tar.gz]
+md5=29babade35e1d8a322e4726886473a84
+sha256=af1cdd2333404db92d33c674a8bd1b770ce65cec7ec250c9b72505895cc45e7b
+
+[http://matt.ucc.asn.au/dropbear/releases/dropbear-0.46.tar.gz]
+md5=3c6daae8f45dce5c838ab3df81c4b5f9
+sha256=4c2d2d41ff093dc2ba0b0dbfbc538ac9b225a7350d5a00acb7483452d40b1a4c
+
+[http://matt.ucc.asn.au/dropbear/releases/dropbear-0.47.tar.gz]
+md5=49a72d314592438eb0e56e85a3517ab1
+sha256=5f30c174714c3783cc5e83ffcc343adda874290f0bd47a559ae0dec2acaedeb0
+
+[http://matt.ucc.asn.au/dropbear/releases/dropbear-0.48.1.tar.gz]
+md5=ca8e53a766faec831882831364568421
+sha256=fa6c3567e293fa0aa249db695b9d5e43ef3f8c11bab74a9b42acc9a0a5c96742
+
+[http://matt.ucc.asn.au/dropbear/releases/dropbear-0.49.tar.gz]
+md5=7b20c85f1ee34f018a1b948eae003df9
+sha256=152f87b4fbfe3976c0409fb9e0812af17c9aa0907b04549604110c05248f810f
+
+[http://mattcamp.paunix.org/usound/usound-0.2.0.tar.gz]
+md5=f863e1c02a8f7b634fd3102274163f8e
+sha256=31299e0308d7e1879cba6c54e3c06b1ba8de028d6cf8dc6ff99c0fe9974cefe2
+
+[http://members.dslextreme.com/users/billw/gkrellm/gkrellm-2.2.7.tar.bz2]
+md5=6ff47bc8e66ba88f42932365a947f9f3
+sha256=f921da7c8beb396278591b5ca7159b432a38902f1f872c4ae2d40aeb38f9cf01
+
+[http://memberwebs.com/nielsen/software/clamsmtp/clamsmtp-1.8.tar.gz]
+md5=04da6aab94934641fcf9e7a7598346fb
+sha256=c09b24c82f858845e235df4c8b2639240a7b786de66b595e351be86ab60663a5
+
+[http://mercury.chem.pitt.edu/~shank/gmpc-0.11.2.tar.gz]
+md5=a7cc8c0734fef9e0b05be76cea3c0a20
+sha256=cacf881ccdbc3fe5568636bf279392b5d339a481a5fb2c03d5c70a2de58f7407
+
+[http://mercury.chem.pitt.edu/~shank/mpc-0.11.2.tar.gz]
+md5=c8411da7936662312cf9483f3490e285
+sha256=1c35520f74ec932e8635896eca747925624574550813bcf71d1d77826385b633
+
+[http://mercury.chem.pitt.edu/~shank/ncmpc-0.11.1.tar.gz]
+md5=c90668b12f3676c73913a863482ec405
+sha256=aa0a6162e8543e01304f7dc2f6b227babebda9f2430664e6deae0277444cb817
+
+[http://mercury.chem.pitt.edu/~shank/py-libmpdclient-0.10.0.tar.gz]
+md5=3a26540b7e057f23187b56e85dc82f95
+sha256=fad4e6ca8e9e2a9e4bcddc96194db69827164f65b8a35cb326d0c8cd3a870238
+
+[http://meshcube.org/download/mobilemesh_1.2.tgz]
+md5=b3bb74dd4f5d5a1c427ad93d5cc401f5
+sha256=9e0e4da4c414449efc1c38e908ba81dfc6a095d5c8e5f346c07589b5df8748c1
+
+[http://meshcube.org/download/nylon-statistics_20050909.tgz]
+md5=103c5c821474ae6df7a3055ee72f4d00
+sha256=c80d9ea7ebca32b63ea23d2a52ac799cff32f8f30c66b491d2b8f93da05585e4
+
+[http://meshcube.org/download/yamonenv_20060814.tgz]
+md5=43c606bbd27c500b0022471ed704ab78
+sha256=014e744f40c773bf225328bce1ca80f5dde4835c1f6671e989a4f8c4ed24555f
+
+[http://meshcube.org/nylon/unstable/sources/simple-firewall_gruen.4g__20060810.tar.gz]
+md5=0ba39ad6dbc20361e6ed20fb41e924a7
+sha256=ba9c828fb982a2edc6228b3034d5369597603ad2b0df66a93edce7334014a17a
+
+[http://michael.toren.net/code/tcptraceroute/tcptraceroute-1.5beta6.tar.gz]
+md5=0200707ad81b88c31439820ae9bc5102
+sha256=08ce9b24ab7b6ad45ac7f668eccfb7007ef182406f7db0b7e455decfb0b49bec
+
+[http://mikmod.raphnet.net/files/libmikmod-3.1.11.tar.gz]
+md5=705106da305e8de191549f1e7393185c
+sha256=2d7598cd2a8c61c023f27c9c7c1aca8bbfd92aadbee2f98b7a6d421eae35c929
+
+[http://mikmod.raphnet.net/files/libmikmod-3.2.0-beta2.tar.gz]
+md5=19fc0879aebd1610813a23bd84726362
+sha256=857b66ef04d695f70414188b985e08b04f1f62cc250d72a43d0e0609dfbdba03
+
+[http://mikmod.raphnet.net/files/mikmod-3.2.2-beta1.tar.bz2]
+md5=006378681d520fa8ee1dacca965bbd3c
+sha256=0e760acb85584ea3e828989c5588f827f0dd845d3dd6948e2aea12bb6278651d
+
+[http://mirror1.pdaXrom.org/rc9/src/quake1src.tar.bz2]
+md5=28405a79f488570bf4e2e8d453f856a0
+sha256=5cd896faae49268327231f299a1187a974cb85acb509fffe8a60b84693a7e3e8
+
+[http://mirror1.pdaxrom.org/source/src/pak0.tar.gz]
+md5=677c4817c156136a3042025191ed243b
+sha256=3dfe058a121e5ff2d2c7675af74a7309b0048ff9fc6dd6129d2c37cef44f0105
+
+[http://mirror1.pdaxrom.org/source/src/xmms-tremor-1.0.tar.bz2]
+md5=998d2a399bd0fb9a2bcde6d5bd2443d4
+sha256=66514764e9aa0168af22a5b4334e9882fbb0b87285ee2055c1daceb3a2214315
+
+[http://monkey.org/~provos/libevent-1.1a.tar.gz]
+md5=6cc776458ecaf9247550863702a44d7c
+sha256=1725cd3dd9ec87a68316c36a50ab653c7e9581c91f9b1b7e9af42a9c7c499d8e
+
+[http://monotone.ca/downloads/0.33/monotone-0.33.tar.gz]
+md5=bfbc7842c13e9be23299ca0348b2d0c2
+sha256=21a0502ae8b888d046d889478e7a0244f4761c4162edf70ec42399d3c2911947
+
+[http://monotone.ca/downloads/0.34/monotone-0.34.tar.gz]
+md5=b7a3cd2d4fcb17287641ee2e33f660fd
+sha256=57cc436480dd29ac7e751c4d5adbc2b0289ba2273bda388352be15446894bc56
+
+[http://mpx.freeshell.net/w3cam-0.7.2.tar.gz]
+md5=eec0b301b32bc8e9f65a4e54248c9868
+sha256=96d659d916fafe555311068c9bf8662b93f10d099b12b17ed04d8a8fffbc72e0
+
+[http://mtools.linux.lu/mtools-3.9.9.tar.gz]
+md5=3e68b857b4e1f3a6521d1dfefbd30a36
+sha256=af083a73425d664d4607ef6c6564fd9319a0e47ee7c105259a45356cb834690e
+
+[http://music.mcgill.ca/~gary/rtaudio/release/rtaudio-3.0.1.tar.gz]
+md5=5b60500bc9605d2409b71124e48aa929
+sha256=59cc003bab753335b3ce14a908e663ea782514b3531dc7030379ff753ef1a78c
+
+[http://musthave.sunbase.org/progs/ccvs/Old/cvs-1.12.8/cvs-1.12.8.tar.bz2]
+md5=d320e4429755019e5058e726de753472
+sha256=52783a5b8bd195b1fa50453dfd5949e23a787d0db56f6acd3bbd92aad0f486fe
+
+[http://musthave.sunbase.org/progs/ccvs/cvs-1.12.9/cvs-1.12.9.tar.bz2]
+md5=41396dfe38c3c9f80de98ea53e6d55aa
+sha256=00383a2c79ea0956b2d4adb772895648ea774f46186d3e19a2f263c73a846963
+
+[http://mutab0r.chat.ru/soundtracker-0.6.7.gtk2.tar.bz2]
+md5=e10563187f49d9f39d360d4c59de6c6c
+sha256=6790d35f1d04ab74b1e48d3a65754fcc01c03f08cc2b5b3a458c5e5c11969695
+
+[http://mutt.kiev.ua/download/mutt-1.5.4/patch-1.5.4.rr.compressed.gz]
+md5=a7b37150c35ea65049b3cd1edab5079d
+sha256=a4780e1dcfe717567ef6a676fa4f9b9d9f2d44bb27dbc2374d7e3a01667f53bd
+
+[http://mutt.kiev.ua/download/mutt-1.5.4/patch-1.5.4.vvv.initials.gz]
+md5=d92517da934f5c32692aecf7ece596b7
+sha256=16b5845600aa2839d0ea2ff71868f2a15109542a693b8b2f305c0a18574cab4f
+
+[http://mutt.kiev.ua/download/mutt-1.5.4/patch-1.5.4.vvv.nntp.gz]
+md5=d0cb0f609aa0461d1b17137bd49c14cb
+sha256=f3e5fd05f7a1b9d57513f369c85c3af56bc4c7e75d765506da53b43c342073d4
+
+[http://mutt.kiev.ua/download/mutt-1.5.4/patch-1.5.4.vvv.quote.gz]
+md5=80d91491679b426b0f670fa965ae3777
+sha256=92e2dc76784a3cb49ac4d03b80d47830ee4cafd2d48323ddb81382a6f249d428
+
+[http://mutt.kiev.ua/download/mutt-1.5.9/patch-1.5.9.rr.compressed.gz]
+md5=9d9ef4ec0e970f9fc3de2d5c6219a349
+sha256=f28c30428119c9a82a91799ddd513c211db5b699b2c1d4868bbf2db6c38ccd1d
+
+[http://mutt.kiev.ua/download/mutt-1.5.9/patch-1.5.9.vvv.initials.gz]
+md5=149c52991b23b9ab3d6add27cb27e151
+sha256=fddb48945e979c3e179ff6a90ab3d0c27f32c4c32910d51d32e904965865504d
+
+[http://mutt.kiev.ua/download/mutt-1.5.9/patch-1.5.9.vvv.nntp.gz]
+md5=f7cf37af82169eefe94c6c42c6f3b9cd
+sha256=a09388316dff4346bf9e5ea4966157886c182a32d88f13d92877b1ccd37cd6e1
+
+[http://mutt.kiev.ua/download/mutt-1.5.9/patch-1.5.9.vvv.quote.gz]
+md5=08329134d8995c05a28dd8258174a668
+sha256=f4664f3d8f616a440e8b6d8b10d40087961cb6d0892809d12975c83e54a9b79d
+
+[http://mxhaard.free.fr/spca50x/Download/gspcav1-20070110.tar.gz]
+md5=1e3fa004490a07b7b76de03d70b3e8ea
+sha256=f05d6793b943b7d1115e2b4b047ec1131c07c9ef0fd890d1616e5be0edd4a555
+
+[http://mxhaard.free.fr/spca50x/Download/spca5xx-20060501.tar.gz]
+md5=8fcec25715aea10f9ebec5728c37e752
+sha256=b8049142742cc81bc945aadefb40d173aeb447e428ec62a93e781032ea9b40c2
+
+[http://my-zaurus.narod.ru/downloads/clockapplet.tar.gz]
+md5=7265673901eacb0b72a11cd6732cc698
+sha256=80fd209d065887729fdeb81f5a91638626e7ed31dabab40c446bd12042df9057
+
+[http://my-zaurus.narod.ru/downloads/qpealarmclock-1.0.9.tar.gz]
+md5=1d338397e60b8031458019bf4b322597
+sha256=5925931a046074598009ddee5c2989330f2fce570f6590c08a55ac955d1e64a6
+
+[http://nchipin.kos.to/libddmpeg/libddmpeg_1.5.orig.tar.gz]
+md5=89e59638d31384987d912741986398b6
+sha256=9422e73c55aa921fbbce06e5e01bba0b98bb7a0f1640c27cfd307c290dba792c
+
+[http://nick.kreucher.net/zuc/zuc_units]
+md5=0d4a28c847829208b0177483e174b3f5
+sha256=3bc5735516b47874208b0efe23d498b8d43e51a140b3ff60683d5f1a951f50ac
+
+[http://nslu.sf.net/downloads/mgetty_1.1.30.orig.tar.gz]
+md5=ff7872dbef3332dd8f550da78d387f2e
+sha256=008f0bea1fe7fd0f6484536442e660e533bad209ad7a57af3ee6f0a0300fd671
+
+[http://nz.cosc.canterbury.ac.nz/~greg/python/Pyrex/Pyrex-0.9.3.1.tar.gz]
+md5=0415b95a023061679021323d9ce56fe0
+sha256=e93c6f74e425d4b9e65ecc7e7b7854c586a1448009ce873b30e7a2d6c8ca30ae
+
+[http://only.mawhrin.net/fbreader/fbreader-sources-0.7.4q.tgz]
+md5=17062ae0f1d7d093e61cd002e39885ae
+sha256=190e2b5ae8467d4b0c26b10e091c74509e00d4bd895c240842ee02a870caa3eb
+
+[http://only.mawhrin.net/fbreader/obsolete/fbreader-sources-0.7.3d.tgz]
+md5=705a89bb03860fb312a7afa25db0310e
+sha256=ec9f93968147526a9b2dd17e31a6d2795356b2eeed309f796f655b37b98abd83
+
+[http://openembedded.org/dl/ccdv.c]
+md5=b8c51a2e3cccb381428426c0fc543244
+sha256=f1e44d628cc4cbac192bf33f492ad8d1e1988cae576924128df36f3638e9a485
+
+[http://openembedded.org/dl/matrixssl-1-1-1.tar.gz]
+md5=0f867a7b5ce70650f36caf00c4941ebf
+sha256=b46ade42d080851ba4c5a10d3c520eb169fc33ab5c259ee8ca147eff57741246
+
+[http://openvpn.net/release/openvpn-2.0.2.tar.gz]
+md5=862f8788f080f669b1ae00a74ef68001
+sha256=927512af1c0bc2af29690e205ce16c0cc920477be85742ebbedd8472ba01f807
+
+[http://openvpn.net/release/openvpn-2.0.9.tar.gz]
+md5=60745008b90b7dbe25fe8337c550fec6
+sha256=347c551e7c88affc1f4b7a4b715080253c9298dcc512ed29fe8ca5cd26d015d9
+
+[http://openvpn.net/release/openvpn-2.0.tar.gz]
+md5=7401faebc6baee9add32608709c54eec
+sha256=063f00d5b889beee910eb113c8cfbb4fc85cd404693494bcaaf79dd09a98335c
+
+[http://openzaurus.linuxtogo.org/download/3.5.4/sources/terminus-fonts.tar.bz2]
+md5=e7b056a7619cdd460b5db5a7e263cafc
+sha256=cf7becd610e298d23780216f474907745bd29484f7f81308a9d13cf07f2a4e2d
+
+[http://openzaurus.org/mirror/fakeroot_1.2.13.tar.gz]
+md5=cf25d5d4c943ebf2293fe6f23ecba0fd
+sha256=6f51ebdf0e18bea58d18f79e8ffebb797fe57bdf44b96dff9d84b70467af7841
+
+[http://openzaurus.org/mirror/fonts-bitstream-vera-sans-mono.tar.gz]
+md5=890615fa4b3e6c82cd1b9807b106f042
+sha256=42c15ed555719c27f67990454cdda791cbcd26ab98712fd88ca7e20e6ce3f1fd
+
+[http://openzaurus.org/mirror/oz-compat_0.5.tar.gz]
+md5=0005d4068b2227e26f4583c1a7415e97
+sha256=8db9b3948c607315f0ba0df61b32f747bec5479c38051d3e0e55b31b82c81af5
+
+[http://openzaurus.org/mirror/vera-qpf_1.10-3.tar.gz]
+md5=13327e7086fa5ceec44550745a914f42
+sha256=1ca61d438f3e5f4b7af853b48e16d68b226d568cd12eda36b94ffbf3cb9458c1
+
+[http://optusnet.dl.sourceforge.net/sourceforge/nail/nail-11.21.tar.bz2]
+md5=2478bff31a9223afffcb74e4dd021770
+sha256=e8caa07c0a841fab2f11db43809c073485b0c1aa12be5dc1b90ca72fa6660175
+
+[http://org.csail.mit.edu/pybluez/release/pybluez-src-0.2.tar.gz]
+md5=f51efe7a299ce1ecbf1a017a4dda11c8
+sha256=c16ac8a27af4fae6ef3f07cbd4da70bcf5b1be11dc664312f5c1e4d69c587d0a
+
+[http://osdn.dl.sourceforge.jp/anthy/20510/anthy-7811.tar.gz]
+md5=e3619c07bd175ce5f73d67388c0c2ea5
+sha256=140828e8aa7d690d8f2a9a54faeac38bcbf40ea18c1f44a186af51bd6964cd13
+
+[http://osdn.dl.sourceforge.jp/kazehakase/24791/kazehakase-0.4.5.tar.gz]
+md5=2171f02d58a575e148436c7102686afb
+sha256=87ad1345e1d6df6ffdb1b43af92cfd87a16eade7de4060c5ce2fabd4d37bf99a
+
+[http://osdn.dl.sourceforge.jp/zaurus-ja/773/unismall-1.0.0.tar.gz]
+md5=479afb66be55db729b60eb6b78874e1d
+sha256=e4add51ac1f53fc36e550cd9b85ca6a93f40b642dce0d12a9aa00f43befc97d2
+
+[http://oss.oracle.com/projects/libaio-oracle/dist/files/libaio-oracle-0.3.0.tar.gz]
+md5=165bbd6c75b8c1916e4b03988bafb372
+sha256=953e39b44b80bb89e52b00f7a7c4045fdd9c698e265bfa14a3d2291e64dffaf1
+
+[http://ovh.dl.sourceforge.net/sourceforge/freedoom/freedoom-iwad-0.3.zip]
+md5=9a26ec9743e45915e296e3e3ba9fe489
+sha256=cd563cdceae558e2b9f9a2239b9d7d48a9776125c9d5f5f5be3076d574747aee
+
+[http://ovh.dl.sourceforge.net/sourceforge/netatalk/netatalk-2.0.3.tar.gz]
+md5=17917abd7d255d231cc0c6188ccd27fb
+sha256=b6e01cfc0b4223f60fd994eee950635b165d54a96cf63bbe607a5ff64355bd8c
+
+[http://ozlabs.org/people/dgibson/dldwd/orinoco-0.13e.tar.gz]
+md5=4cea186648c335752bc241418fd54038
+sha256=07fbed267421ee26ee4b6bc410b68a10a284072d78e1e495c74865db0470306e
+
+[http://ozlabs.org/people/dgibson/dldwd/orinoco-0.15rc2.tar.gz]
+md5=2246f0879439d74f7aabc7935cec90c0
+sha256=2997613ab33ad42dc8269a63b7c40a6938b3552e196780a4a269cc7340dd23bd
+
+[http://packetstorm.linuxsecurity.com/groups/thc/thcrut-1.2.5.tar.gz]
+md5=190f08ce6839aecb0fa0ce8d5ddd09ee
+sha256=b32f3d71ac540248b7643baa39d8ecfb75af493228caaeb64608e49f2f092473
+
+[http://packetstorm.linuxsecurity.com/sniffers/msn-cap.c]
+md5=900be0beea498b18f03e2d67656d9d32
+sha256=f03c69e064f1269dfd5adbc668204d0a7e0eafb86317e293e9d6c1ce0a4f5761
+
+[http://packetstormsecurity.org/UNIX/scanners/dcetest-2.0.tar.gz]
+md5=74ee7617c8b01cc641992c1d13dc394b
+sha256=4a319a08ae0838234f5b6fbd0b4d2e0fac7560a7553a4e1b043527cc17032aa3
+
+[http://packetstormsecurity.org/wireless/redfang.2.5.tar.gz]
+md5=84c0a051ba5358546a9c0e393095ab91
+sha256=7cf45008810ca894b085ae0eb1a0071f0cb6989dd9ce35cfcd617fedf7018c7f
+
+[http://pages.sbcglobal.net/redelm/cpuburn_1_4_tar.gz]
+md5=f9bb5ff68afb6ccfca11718c90bcab68
+sha256=1b2a1672f455545a28d0f038737e792e8c3b97789f2029f765847fc2a807244a
+
+[http://penguinppc.org/historical/hfsplus/hfsplusutils-1.0.4-4.src.rpm]
+md5=e8760b432b7e95d03158b4bbca404149
+sha256=741577b91c091fc9d6732b57732bdafb85739c65cd65194e506e1d01425bda56
+
+[http://people.defora.org/~khorben/projects/gputty/gputty-0.9.8.tar.gz]
+md5=d227a37a8a7b036eed44e4278db45735
+sha256=fcee22d7e31a936cde4672ac318ffabb9d39b7fc3b74de391bdade1419c59dfd
+
+[http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.0.x/rrdtool-1.0.49.tar.gz]
+md5=fbe492dbf3d68abb1d86c2322e7ed44a
+sha256=20acb0aa347f1629c4d5529ab8afbe4986fe820555049af3f905653300e5ea74
+
+[http://people.openezx.org/ao2/fbgrab_network_mode.diff]
+md5=71bf1218c52a6e4a1f38406748285255
+sha256=e8cf4fe15d7e99e86016db3ddc1f403c35c49f40c4d37209d76cd5785c541aa8
+
+[http://people.redhat.com/dcantrel/dhcdbd/dhcdbd-1.16.tar.gz]
+md5=002e9d7d85a2f0e6261b6bf501c53a3e
+sha256=f399428e0e191233b4dcead88afbe78a26cc16bd9a47e305f6dd3299e011ef18
+
+[http://people.redhat.com/dcantrel/dhcdbd/dhcdbd-2.0.tar.bz2]
+md5=c3ae0208e6815491612bbd8586482ffe
+sha256=514bec6c457d3d503b5c0ba2e84db2c4da44857b5092bd00f2ff9a8e62351e88
+
+[http://people.redhat.com/jvdias/dhcdbd/dhcdbd-1.14.tar.gz]
+md5=1180dee7a51a4384d55768650634cf93
+sha256=e5facfcab28377d32fd4c70aa1fe0820d3dba4abdfc48bd15eda712c8815e505
+
+[http://people.suug.ch/~tgr/bmon/files/bmon-2.1.0.tar.gz]
+md5=3111a027907016c0902d67350c619df6
+sha256=36a5772fc0241298b15db3dc4fb2552dcbb43edeffd6fcea4cd8818e97ec99fe
+
+[http://people.suug.ch/~tgr/libnl/files/libnl-0.5.0.tar.gz]
+md5=c58ec5032f393f569ef7f489436651b3
+sha256=89a6b5086987460ddd9b24723f35a3a951ccf2886cabe26bef89b8c53528fec5
+
+[http://people.suug.ch/~tgr/libnl/files/libnl-1.0-pre6.tar.gz]
+md5=0f57cb7085dc27e054691bff858613c9
+sha256=c1d5b4edeb1f2b20ce35ab13b2c0464b6e03a43934d626161a780578bbbb8161
+
+[http://pknet.com/~joe/dgen-sdl-1.23.tar.gz]
+md5=b1896c1b21ddb152626aec2e8a157a3a
+sha256=44396b3b324433187cf7082d1059cd9f519f02accddd667e627a57ff8514d436
+
+[http://poppler.freedesktop.org/poppler-0.5.4.tar.gz]
+md5=053fdfd70533ecce1a06353fa945f061
+sha256=ca0f880a4ff07391e99b443f0e7c9860241df6a6aaa327b9d811b358d94a29c9
+
+[http://poppler.freedesktop.org/poppler-data-0.1.tar.gz]
+md5=5c700eb06dda9dafec09cd85225e34d4
+sha256=6bd37c49ab4b22c67ab457c531f841968a3acdebbf9361acea7d7275c903dbc5
+
+[http://ppp.samba.org/ftp/ppp/ppp-2.4.1.tar.gz]
+md5=fbc256801d5fcd8015039b149ae95eb0
+sha256=c8f2c4f125b1b4ac1b9c76172e3215c80e123e35ae4c2d473e310bc44c1baa9e
+
+[http://ppp.samba.org/ftp/ppp/ppp-2.4.3.tar.gz]
+md5=848f6c3cafeb6074ffeb293c3af79b7c
+sha256=1e0fddb5f53613dd14ab10b25435e88092fed1eff09b4ac4448d5be01f3b0b11
+
+[http://prdownloads.sourceforge.jp/tomoe/16048/tomoe-0.2.1.tar.gz]
+md5=e5f6d1d31d03004812d3eebb6a6d2460
+sha256=ade3070cf0d7864ec986df4d80b30045d86428c9cb0dd1259f7a438751543fad
+
+[http://prdownloads.sourceforge.jp/tomoe/17171/libtomoe-gtk-0.1.0.tar.gz]
+md5=a3ccb174bbc9b72204971bdd9953079d
+sha256=fa0c007bf3ee13dd79986878e6e1c9c0b71c08a5cc77dbbcbf5e054a89d268e6
+
+[http://prdownloads.sourceforge.jp/tomoe/17172/uim-tomoe-gtk-0.2.0.tar.gz]
+md5=f6402107eb961599c6d4f3560ef7fe75
+sha256=0d107205486760cada4043cde1ae51da3ca2f44851a9d4eaa26646a5f34d56e7
+
+[http://prdownloads.sourceforge.net/aa-project/bb-1.2.tar.gz]
+md5=1fdf51aeb20d908c29e39ddca2b3459c
+sha256=6714d9c1285fc04d39f03b85ebad3723be6f8709ca8935e984b280ac42e97492
+
+[http://procps.sourceforge.net/procps-3.1.15.tar.gz]
+md5=496d9f87be5eaebcd1080bb5b9999da4
+sha256=dda7201dc74e4c247f3feab8eea53cceeb55e8a6994ecb8ca3ca139f7ccfc15a
+
+[http://procps.sourceforge.net/procps-3.2.1.tar.gz]
+md5=2672014ec05deb20680713a7b750cb16
+sha256=6d1643b0c12771d26b4e8c50910c63124ada6d709d7c7efacda3cf830e608cc3
+
+[http://procps.sourceforge.net/procps-3.2.5.tar.gz]
+md5=cde0e3612d1d7c68f404d46f01c44fb4
+sha256=6d52c706401af197bd9d7e0187c35b4a3463ea720392ffa0c020d94899b361e5
+
+[http://procps.sourceforge.net/procps-3.2.7.tar.gz]
+md5=f490bca772b16472962c7b9f23b1e97d
+sha256=b439e04adab9b1e66e11f59c4331680da48f1722f2123123f7c16dfbed2c38dc
+
+[http://projects.linuxtogo.org/frs/download.php/13/thumbpad-0.8.tar.gz]
+md5=384af26008a38cb64e50b87e3186d3ac
+sha256=11b067df2ce38baa36566bd29ab14bbf2f7c0fcc15e01a5be2a6a85000c39104
+
+[http://projects.linuxtogo.org/frs/download.php/14/prismstumbler-0.7.4pre1.tar.gz]
+md5=5b2e91311c94579e4f5e1d4fdd9bc4fe
+sha256=81d536d5307b8d5b96587ff673e69b9e5049d11d56643b3ea6984b31baa0ab56
+
+[http://projects.o-hand.com/matchbox/sources/libmatchbox/1.2/libmatchbox-1.2.tar.bz2]
+md5=cf28ace4e666a8a9875c2397aa1ef9fd
+sha256=fc4fd138fe7efcbedd84ac99bb6dd2fa68ac44268c1bfc13712a2f051428a3ae
+
+[http://projects.o-hand.com/matchbox/sources/libmatchbox/1.3/libmatchbox-1.3.tar.bz2]
+md5=5c51480071ed590c38fd63ccaa517934
+sha256=f10daa2aee157605611c0ca3c0692e1ee9648c753c6999518d166f968a27f40b
+
+[http://projects.o-hand.com/matchbox/sources/libmatchbox/1.4/libmatchbox-1.4.tar.bz2]
+md5=6e667e5b963f64dd508080ed85a3354e
+sha256=9217887fbe9c0d75b92a5316042702cd676569c4444482aa21a4f549f6267627
+
+[http://projects.o-hand.com/matchbox/sources/libmatchbox/1.5/libmatchbox-1.5.tar.gz]
+md5=db2145115042fe1c8257a3f3c1437167
+sha256=1d5f4cd19fad6184dd1a7f149674954965af8aaf3a3f3cd17988e1ce0d6ba832
+
+[http://projects.o-hand.com/matchbox/sources/libmatchbox/1.6/libmatchbox-1.6.tar.gz]
+md5=239932b294cd29690b3358110301144a
+sha256=70a03ad0d377201f2d96204b8a0f87db6dd242d6abe3c4e5a39efd2c752c7124
+
+[http://projects.o-hand.com/matchbox/sources/libmatchbox/1.7/libmatchbox-1.7.tar.gz]
+md5=71dde5a06df6c755ed33f111aecaaf8c
+sha256=666ba9284bbdd91946c64cf2dc1bdab3e8290bb71af86881c157629e1cbd68fd
+
+[http://projects.o-hand.com/matchbox/sources/libmatchbox/1.8/libmatchbox-1.8.tar.gz]
+md5=8a91deea65388002bbd75c965e5b9d6f
+sha256=58169f20fa59b3f2a41ee39191d6f4ee7a121e63a3aba241e3323952054703fb
+
+[http://projects.o-hand.com/matchbox/sources/libmatchbox/1.9/libmatchbox-1.9.tar.gz]
+md5=465fa15c43bf0091a3810e7702fe143f
+sha256=f7054f93c57ba6b758d0e4f47d4d2dd96a7fe487e1157eb70a4d642910275aea
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-common/0.8/matchbox-common-0.8.tar.bz2]
+md5=107ac7cfb5f5ad3eacd14388a34a706b
+sha256=39672384843942210eca6e16396768b979e479a8e1a8d42d092ad517f561c20d
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-common/0.9/matchbox-common-0.9.1.tar.gz]
+md5=90acc81aeebc0dca8f88fbaa40166607
+sha256=cb56d6a1031c33b98751cb06b2fce73feba49cb38a1e4db1a104e8efdfb9a7dc
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-common/0.9/matchbox-common-0.9.tar.gz]
+md5=42f76caa0d51ecefc92979fc659ac29c
+sha256=9ceab55677a404db7ca83ae3b3c678fb1f292e0fee055079ad95f967a98a6e04
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-desktop/0.8/matchbox-desktop-0.8.1.tar.bz2]
+md5=f7838ae67134e60bc2afb68022404b5f
+sha256=9587182aab427103a8a1f9714dc16603c3a861076f7cd18d73321c3878b2048f
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-desktop/0.8/matchbox-desktop-0.8.tar.bz2]
+md5=7b2aab7fc14b8690b436a22a6c041695
+sha256=bced4bcb32dba30feee0da6e4d7c726f4c0c72dc29c2d7bbb648f9208357bc19
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-desktop/0.9/matchbox-desktop-0.9.1.tar.bz2]
+md5=3335a30b1a1aacfb39f23b505254765c
+sha256=ecb025d3660d80a9850973111b4fdfffaa50b47cbf0c5467b508d28d65146793
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-desktop/0.9/matchbox-desktop-0.9.tar.gz]
+md5=5621a74ac59ef1a42e0e1971ec996e1a
+sha256=b104d1bda4b68a49f22106d8c0692961f7a2c39e839caf6e968cf870d7c0ec7b
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-panel-manager/0.1/matchbox-panel-manager-0.1.tar.bz2]
+md5=0ea7b03abd7b90eda601b8658a859fb6
+sha256=32136aaaf66ff0083158476707f69aa5ee128bc4b3bd62a2be9f9db2dc5804b6
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-panel/0.8/matchbox-panel-0.8.1.tar.bz2]
+md5=cfdfb6b006af834513be839d128a4cd7
+sha256=771608e1e2baa2e16781024faa93b24a38556d383158883deff78f7093017534
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-panel/0.8/matchbox-panel-0.8.3.tar.bz2]
+md5=7e37e776d63c2f2596d786500ca4138e
+sha256=4fb8b6801dde49d4d37dadc3a5b73bc124bdb3798a554ff1c372c9eb3496bbcd
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-panel/0.8/matchbox-panel-0.8.tar.bz2]
+md5=053df6ffb53a80d0f06c6ea683f830cd
+sha256=e064cf0ab966d14212a4490f341aad574713282e54dc0ec9813a99c3cc2bc453
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-panel/0.9/matchbox-panel-0.9.1.tar.gz]
+md5=c047afdd9344c0103624d43a01bcecb7
+sha256=03af017c7d1b17b1fd511b9f84058f59dee548110770043964f1d1fa87a37643
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-panel/0.9/matchbox-panel-0.9.2.tar.gz]
+md5=3122b8d8a796824f9266235b38b0ff1f
+sha256=d89d292942e03459f1239e4b3b2e4933aa713f9a606dfe444718f18ff99c7241
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-panel/0.9/matchbox-panel-0.9.3.tar.gz]
+md5=48b58a2e9ada4ae4de6555315ee3506f
+sha256=1ec04f3660fecc9c47afd75a9197950ecf8ca5d051b428da188f0262ff982500
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-panel/0.9/matchbox-panel-0.9.tar.gz]
+md5=709bde40465d44eb12db7e74c1a2d1fe
+sha256=23247d33e26c95a7501908a9e907da05cd004faabd6cf39dd0efb8d4142fbb0c
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-themes-extra/0.3/matchbox-themes-extra-0.3.tar.bz2]
+md5=04312628f4a21f4105bce1251ea08035
+sha256=98a1c8695842b0cd7f32e67b0ef9118fd0f32db5297f3f08706c706dee8fc6be
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.8/matchbox-window-manager-0.8.3.tar.bz2]
+md5=b52024f7a121f5eafc70a8d4c2089d2d
+sha256=7292fab73c7c0539fd4be41e89e00933d1b78c4ddad2ba29ba3986a617f2c918
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.8/matchbox-window-manager-0.8.4.tar.bz2]
+md5=f7f4f5a66edfe29055848efac2202243
+sha256=13728dd551dcb8b6ccb448a8c58e960b2cb6b609bd60e891fd9d9fdcde390a0c
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.9/matchbox-window-manager-0.9.2.tar.gz]
+md5=659a2111c51d53503954af72cd873b1f
+sha256=89dde8c3dd8669f78f2034d1072893e7b6ae82084d5effdcca76b39c95adc262
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.9/matchbox-window-manager-0.9.3.tar.gz]
+md5=76243628e632348526c209746fb8bda7
+sha256=81b33171ace87360a73037421b41d2bc94af2239fca05586bb49da44681bbad7
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.9/matchbox-window-manager-0.9.4.tar.gz]
+md5=e8381a3b43c2a32cb9739259810d433e
+sha256=3be0a40e83bd417cb22da1de0ebd9e887a1423a8001f82d4e7d3c394b42cb186
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.9/matchbox-window-manager-0.9.5.tar.gz]
+md5=7343855f03e962307a350c1cfd03c740
+sha256=4580fe7345b57268da624f38c2797bd7171f84fa93bc5b1c9827f8adb7b74f54
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.9/matchbox-window-manager-0.9.tar.gz]
+md5=3cf2d404b5024d4cb1bcc08fc63ce84e
+sha256=2717520d41d3b69232e6b4ec84a91461ae0d52c2e75103ba0791ef0d52ac8e1c
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/1.0/matchbox-window-manager-1.0.tar.gz]
+md5=2a28fdcfd6c71a5edb1618b9449b7486
+sha256=f54035309b2a4d45a90979c2b56ab2488546826862062bfc22cd7e7ed8b5ebf6
+
+[http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/1.1/matchbox-window-manager-1.1.tar.gz]
+md5=42187ec7b3db21ba237a3a2858bf9acd
+sha256=fdf06c44ff8d7bc1d1a33d890e1dad8962d2a83c4521abce8381b6d1a4429cf2
+
+[http://projects.o-hand.com/matchbox/sources/mb-applet-input-manager/0.5/mb-applet-input-manager-0.5.tar.bz2]
+md5=bf36926ac97d0419a141f9d18ffab103
+sha256=7a1298ea42a976e7a133ec160400daee055450872dcc40d671f08376fc08850a
+
+[http://projects.o-hand.com/matchbox/sources/mb-applet-input-manager/0.6/mb-applet-input-manager-0.6.tar.gz]
+md5=d56ac682c94c7f8ef07bab6348d3f0e2
+sha256=e0ff8ad4d565247c480eb41a284bb947ba1ca0dd70aae9f4dde118320699cba4
+
+[http://projects.o-hand.com/matchbox/sources/mb-applet-startup-monitor/0.1/mb-applet-startup-monitor-0.1.tar.gz]
+md5=6d06e7542c3e927adee7e67f3c734858
+sha256=be52ed8fc2fdd0747e4aea25650de398efa284f7712838f5c90494b694c3719a
+
+[http://projects.o-hand.com/matchbox/sources/mb-applet-volume/0.1/mb-applet-volume-0.1.tar.gz]
+md5=d778eb73932dbaa944680f93b153b2bb
+sha256=7c43a4169b4bea9db1e86a9d16609ae62424b1743696d35ba58eb5665eddd26a
+
+[http://projects.o-hand.com/matchbox/sources/mb-desktop-xine/0.4/mb-desktop-xine-0.4.tar.bz2]
+md5=3805f463cbd1817c75fed5f9c4cd2f8b
+sha256=a550138cac9fcbb620a154fdf251d97e3420a5b9ac2017225b35d9df745e49f3
+
+[http://projects.o-hand.com/matchbox/sources/utils/xcursor-transparent-theme-0.1.1.tar.gz]
+md5=7b0c623049d4aab20600d6473f8aab23
+sha256=b26adf2d503d01299718390ae39dab4691a67220de09423be0364e9a060bf7e4
+
+[http://projects.o-hand.com/sources/contacts/contacts-0.4.tar.gz]
+md5=7d72fac4f0d6e1c771c37e4e80093e70
+sha256=e090ab64a02e4918f78312df19715bc2008aae7d44f6b0913c2a46a13d1881c4
+
+[http://projects.o-hand.com/sources/exmap-console/exmap-console-0.4.tgz]
+md5=eb8b6d834d2224e17561593dc4158e4d
+sha256=418c3b9e099b96f7b8e1456c34b585b2f4bd10af88fb976116a154e4cb54fa9b
+
+[http://projects.o-hand.com/sources/tasks/tasks-0.4.tar.gz]
+md5=c68ad2a0fa21c379195b7e93467d73b5
+sha256=65083a94bce9e539c4d9141b4e765415872e01bf17ec4be906d2e304aa8c3e7f
+
+[http://puzzle.dl.sourceforge.net/scummvm/scummvm-0.6.1b.tar.bz2]
+md5=143dd7cfe0995922c49e1f8a6cdf2055
+sha256=29007f54d9e5a37a3da9f51670de7828dde9a3559beddbdd5c2f59796fb220f6
+
+[http://puzzle.dl.sourceforge.net/scummvm/scummvm-0.9.0.tar.bz2]
+md5=5eede9c97d1883f80770a3e211419783
+sha256=5824f67aa37b00fc8b92ac4fcc413a9a7d868174dcd6df580c4d706807e4545e
+
+[http://puzzle.dl.sourceforge.net/sourceforge/libcwd/libcwd-0.99.44.tar.gz]
+md5=baee4e3f0a765eb664922fc78f346014
+sha256=9aa09bb2de91727de68ee57b1a1e4c03059cbbc7166f9f181ee8b5c2792e724d
+
+[http://pycurl.sourceforge.net/download/pycurl-7.14.0.tar.gz]
+md5=6f73d518fb520af14634a06ee1b7ddce
+sha256=a60e08b01fc3355ec18ec0e447349b6f8bff3f9628eb42891cff1eb51b9618b1
+
+[http://pyropus.ca/software/memtester/old-versions/memtester-4.0.5.tar.gz]
+md5=f6328b4863caf8f2013489c82c26cd1d
+sha256=cd907918ff4a7d1eea4ed618c181da0e0894bcfcdb1e3e4909a2795da120ae4c
+
+[http://pyropus.ca/software/memtester/old-versions/memtester-4.0.6.tar.gz]
+md5=0e6f7335075443ed0863a0df75689359
+sha256=2a4bf8bdac96d6498e323b93954099fb13a9d92ddd5704aa6553940b86a071bb
+
+[http://qolsr.lri.fr/code/qolyester-20050728.tar.bz2]
+md5=922ac0c5a70d8bcba50b23009b3c4878
+sha256=81ce65c833ecd7c98d0af1d19419a3d93af811d99865ed2c8b377a7e507af4a7
+
+[http://rcdrummond.net/uae/e-uae-0.8.28/e-uae-0.8.28.tar.bz2]
+md5=9fc186f9256d04f940304044e29175ef
+sha256=afc8b30fb9aa0819a4e53b3eb0db8e658e5a2b23d7dbf436f6b5a49b2269da86
+
+[http://releases.0x539.de/gobby/gobby-0.4.1.tar.gz]
+md5=a2c79bdda652a2d74fec104235d27bc0
+sha256=aad2ed23638f5a6aa655dc13395228cefc4c28e46b05eb05ac12481fac36aba3
+
+[http://releases.0x539.de/net6/net6-1.2.2.tar.gz]
+md5=8a551a2d9785b2b0ed431bb9eeb6cfd6
+sha256=ccdf8bfec6098b9da9a82c8d3a4d85266a5c2fd8e0240bb9448448ea39f3a68a
+
+[http://releases.0x539.de/net6/net6-1.3.1.tar.gz]
+md5=79ea8c9cfa4025e93fb12d98befd37b6
+sha256=9d5e27f290bbb954d512f37912d39a94ae03536a7ba3ef4dacec4df5f2476f47
+
+[http://releases.0x539.de/obby/obby-0.4.1.tar.gz]
+md5=84c35d0cc6b603442e5ba0083fc1b8bb
+sha256=c297862f85270b388e3b5668ad897025fa46b91eac5bd2495efb131de572a9bc
+
+[http://releases.chipx86.com/libsexy/libsexy/libsexy-0.1.10.tar.gz]
+md5=c009b0c89e5cf91dba17261f4cccfc4c
+sha256=e7720307f3fafb210963b6d91c608f25ae2088880260b3e39508c27aab13a3a0
+
+[http://releases.chipx86.com/libsexy/libsexy/libsexy-0.1.11.tar.gz]
+md5=33c079a253270ec8bfb9508e4bb30754
+sha256=8c4101a8cda5fccbba85ba1a15f46f2cf75deaa8b3c525ce5b135b9e1a8fe49e
+
+[http://releases.chipx86.com/libsexy/libsexy/libsexy-0.1.6.tar.gz]
+md5=495d8d986f0caa23b001f8e09d11eaf3
+sha256=835265bb0d39689e8a8580b5ffb53222b3f5f483d58aa533a5c7ebfc3d273d50
+
+[http://releases.chipx86.com/libsexy/libsexy/libsexy-0.1.8.tar.gz]
+md5=ddc52cc8196f9f0bf48a5c7569b6bb38
+sha256=83e82b9afe296584a6c9f1f8b3e3a70d324209021e0049f68d28bd1de8c18136
+
+[http://repository.maemo.org/pool/bora/free/source/hildon-base-lib_0.11.1-1.tar.gz]
+md5=d53afb4ef8ae2b02ddba6587e371f407
+sha256=1379b222f81a86f10f5ba0113f43d52a13b5700cd6c57ea4416c8e8650f28300
+
+[http://repository.maemo.org/pool/bora/free/source/hildon-lgpl_0.12.1-4.tar.gz]
+md5=ef2ee64157e161978b07e5adb82e79d5
+sha256=8899a280fb8d54594aa2423b7dea2c959070ae3fe4eb86458abdc8bb167ef483
+
+[http://repository.maemo.org/pool/bora/free/source/libgpsbt_0.1-18.tar.gz]
+md5=ce884aff8d063f9d51ebf75d899747fa
+sha256=495ebd711a63bee4eeaae7f0766323f2070bf30ab9b54f5ac18912baa1b41084
+
+[http://repository.maemo.org/pool/bora/free/source/libgpsmgr_0.1-10.tar.gz]
+md5=99ceada8d73504b5147f0ad6fa4af20f
+sha256=ebc670611d304d362fa082cf8773a8ac0c10fda455f29ba777fbdc830002ef68
+
+[http://repository.maemo.org/pool/bora/free/source/libosso-gsf_1.11.10.4-1.tar.gz]
+md5=4c5b31154943108ba0fecf00c8af9f3c
+sha256=687f46d5d5eb5ced18534f3cfcfdd82db6b25679437602f1519cae48d019b55d
+
+[http://repository.maemo.org/pool/bora/free/source/libosso_1.20-1.tar.gz]
+md5=6bb3f309371d398d321e52c9e52ca605
+sha256=90febc4d50cb7b383f4afe67aa80acce9a246ba6a927b5bf805e8f401f16b7bd
+
+[http://repository.maemo.org/pool/bora/free/source/mce-dev_1.5.6.tar.gz]
+md5=b3a28fe9bcec2fc7ae70f5d819bf3d1a
+sha256=aaaae4e3a25880d9f6af2dcf504b03f98946dcfb79e4c0a77adb9223aaa5cbc4
+
+[http://repository.maemo.org/pool/maemo/ossw/source/h/hildon-base-lib/hildon-base-lib_0.8.6-2.tar.gz]
+md5=388d916894122be839ba09d804eefeb5
+sha256=c8eabb77f72efaedb2ed4f1f18e2f3ca84164e0a9fa4dd313a23e3b0cc1ca3d4
+
+[http://repository.maemo.org/pool/maemo/ossw/source/h/hildon-control-panel/hildon-control-panel_0.9.1-1.2.tar.gz]
+md5=72c8b814ebeec8668cea575e08bb1548
+sha256=bbe77d297c7560d3fdad343ab49f23c9c0aa1574db77108d1b97845fb7bb26d5
+
+[http://repository.maemo.org/pool/maemo/ossw/source/h/hildon-fm/hildon-fm_0.9.1-2.tar.gz]
+md5=6d2646bf0ef3da795a34245b870f7983
+sha256=9305aff5ec4eefe462e94b49c0e1ec3037e9d3ae5a6fa47c8cb7136dadcb1e8c
+
+[http://repository.maemo.org/pool/maemo/ossw/source/h/hildon-home/hildon-home_0.8.20-2.tar.gz]
+md5=dd62148b18abe1e02182abba91e1d55b
+sha256=1b62825a44d7058e56162d6fc08d06454d30889cfaad6ff0bbd9e32bf4b0ce5c
+
+[http://repository.maemo.org/pool/maemo/ossw/source/h/hildon-initscripts/hildon-initscripts_0.8.14-1.tar.gz]
+md5=1dbed6346a9db52b4089cbea8786b365
+sha256=0dadf64980c5653336a0008b1fd8d77e54596710f5ae59b68115923731b2438f
+
+[http://repository.maemo.org/pool/maemo/ossw/source/h/hildon-lgpl/hildon-lgpl_0.9.14-2.tar.gz]
+md5=5218b2d7864f6f8af3ab6ea0cc27a313
+sha256=43a532c99b8cdcc0e2f60d95769dee89f2e03a37c5d5931b8de6e4c39ad721ad
+
+[http://repository.maemo.org/pool/maemo/ossw/source/h/hildon-libs/hildon-libs_0.9.6-2.tar.gz]
+md5=cba9fb4c6d61720d03aa4a4d543e2c5b
+sha256=763bd538f0647c373383c2d91fc0c76ae4840d64158509347162b20425a4c8f9
+
+[http://repository.maemo.org/pool/maemo/ossw/source/h/hildon-navigator/hildon-navigator_0.9.6-2.tar.gz]
+md5=e2c2bdfb741f4e2a7d3d696597890139
+sha256=51005d8161b45a422158f04e76b244394aa5eb99b5098b2846f989ee9845b9e6
+
+[http://repository.maemo.org/pool/maemo/ossw/source/h/hildon-status-bar/hildon-status-bar_0.8.11-1.tar.gz]
+md5=7948087bfe3b1bf8025a37fbb64bde44
+sha256=eca16f42de8e4a213acb3ba0978fa56fbdf2f38e5be5882163753068ab4a15cd
+
+[http://repository.maemo.org/pool/maemo/ossw/source/l/lessertunjo/lessertunjo_0.0.10-3.tar.gz]
+md5=b6d7ca9e9740286f0ce918da9fb8438b
+sha256=0ee6a3caee4812827b8e167d4a07dbf859cb08a00a20f09568c3baae379d6ce8
+
+[http://repository.maemo.org/pool/maemo/ossw/source/libo/libosso-help/libosso-help_1.0.01.tar.gz]
+md5=dbc3c68809e39bd6681aab8ad16ffe3c
+sha256=ef6f6fda31dfbf7b3186b6f1d0ffd12ee0675d9a057ad2994f81b5164213a693
+
+[http://repository.maemo.org/pool/maemo/ossw/source/libo/libosso/libosso_0.8.9-1.tar.gz]
+md5=f40c4c73f58cf62859129c3ff08d159d
+sha256=d832126b22dec3a60ee6cdbd476c908f7715fc94d6f1ee11731b1b1ffaf41d47
+
+[http://repository.maemo.org/pool/maemo/ossw/source/o/osso-app-killer/osso-app-killer_0.4-3.tar.gz]
+md5=54a7df1fcef0cc67f83797bd6b882195
+sha256=011efde2376624c70760417d0ca75a9a1fde1ebb6f925326b99ba3586a4b50c1
+
+[http://repository.maemo.org/pool/maemo/ossw/source/o/osso-application-installer/osso-application-installer_1.0.03-1.tar.gz]
+md5=05e47346d432bd4c78736b12f262d612
+sha256=f7129c56cd7e561c10457d101f37ebf3a8b02df83f42a30cb90b46eb0de5dede
+
+[http://repository.maemo.org/pool/maemo/ossw/source/o/osso-bttools/osso-bttools_0.25.1.tar.gz]
+md5=528eaa3b27b51e9823f2ca4261dc8354
+sha256=ad2e75c857888ab6fcb26b45a792729d42d42f3293090bcdb09256eebb0ed8be
+
+[http://repository.maemo.org/pool/maemo/ossw/source/o/osso-dsp-headers/osso-dsp-headers_0.1.orig.tar.gz]
+md5=ebf60b7d98260aeefec24d4dc22a3c2b
+sha256=53704f6b0aace1b2f24b5366530f6df51bf4ffea7209055e9eadee541c2c221f
+
+[http://repository.maemo.org/pool/maemo/ossw/source/o/osso-esd/osso-esd_0.5.orig.tar.gz]
+md5=7f110e130db541b1aa9fc428b2620602
+sha256=1a84b7d4939313e9b7ec0ce8f50934251fe1569e6144931dd323de8ee8dacccd
+
+[http://repository.maemo.org/pool/maemo/ossw/source/o/osso-gwconnect/osso-gwconnect_0.70.1.tar.gz]
+md5=e4a87e616807dfd8557663a28990e948
+sha256=1bebf4c6adf9d383014bf0da8f133c0dbb6aa420033347e8e1f307f79051bc86
+
+[http://repository.maemo.org/pool/maemo/ossw/source/o/osso-gwobex/osso-gwobex_0.26.1.tar.gz]
+md5=804ad2ed142c9ef31bee42a68704315c
+sha256=f5e784be11151f927c68f09ba4e2881a95b67c99de9ba597b8155a6d5421598f
+
+[http://repository.maemo.org/pool/maemo/ossw/source/o/osso-screenshot-tool/osso-screenshot-tool_1.20-1.tar.gz]
+md5=d07be50f058ef53fbdc5c1720f26b9ad
+sha256=c01553daef241e425afd17f421f0cd2b8bf8ba03f55f5a3e30192c36511aa199
+
+[http://repository.maemo.org/pool/maemo/ossw/source/o/osso-sounds/osso-sounds_0.3-1.tar.gz]
+md5=27e905aad10d3e29f03a7d1d1180ea3a
+sha256=90c601d2ed52b2ce967e76678894e74569f59104614cf35de20dab78eb0144b5
+
+[http://repository.maemo.org/pool/maemo/ossw/source/o/osso-thumbnail/osso-thumbnail_0.3.1-1.tar.gz]
+md5=95d35782e17404fa4c4b634ed7cd898d
+sha256=bec82e8b1b695f14403931a61ff438ebb62853a398598b540faabeea5fc774ad
+
+[http://repository.maemo.org/pool/maemo/ossw/source/o/outo/outo_0.1.1-2.diff.gz]
+md5=8e6f3899761533d990f1bcfb01d86cb3
+sha256=225a63cdebb1490a47f3af5d17d301cd3e9382395f21776c5b04e4cf17fdf2b7
+
+[http://repository.maemo.org/pool/maemo/ossw/source/o/outo/outo_0.1.1.orig.tar.gz]
+md5=798eb3a03c519bd5f829775f5b219a91
+sha256=49b2e7ecaac26c3d87ccd26279bc0536baa50f1e140b36e14fbeedde76aad0ef
+
+[http://repository.maemo.org/pool/maemo/ossw/source/s/sdk-default-icons/sdk-default-icons_0.2-1.tar.gz]
+md5=85ccc685b72f6f77da8a4b0ef7c5281b
+sha256=8dcd3aac06f24111461433353015cd36bfaaf45b74ff9aa336713759b6759b0c
+
+[http://repository.maemo.org/pool/maemo/ossw/source/s/sdk-default-theme-config/sdk-default-theme-config_1.0-1.tar.gz]
+md5=ed7202fcabcce02a41225906deb0c682
+sha256=1bc620973aa9448c7374e5c673f21b11f60abbc1d887b9719dd4a90cb99bea64
+
+[http://repository.maemo.org/pool/maemo/ossw/source/s/sdk-default-theme/sdk-default-theme_0.1-1.tar.gz]
+md5=39df0bf8ad0a7370a63c283bdcf67219
+sha256=114f8be9b73d75811cac866650a64cdbc88348353d281dda3b6aff4c1e109337
+
+[http://repository.maemo.org/pool/maemo/ossw/source/t/tscalib/tscalib_0.0.1-3.tar.gz]
+md5=a06f80dfda9688e033561f959aae2d5e
+sha256=b27add2e28f38feea0c554633f220cd7542a8bb768ba290636a317852774ecbb
+
+[http://repository.maemo.org/pool/maemo/ossw/source/x/xpext/xpext_1.0-5.tar.gz]
+md5=1b0cb67b6f2bd7c4abef17648b062896
+sha256=a3b06f5188fd9effd0799ae31352b3cd65cb913b964e2c1a923ffa9d3c08abbe
+
+[http://repository.maemo.org/pool/maemo/ossw/source/x/xsp/xsp_1.0.0-8.tar.gz]
+md5=2a0d8d02228d4cbd28b6e07bb7c17cf5
+sha256=8b722b952b64841d996c70c3278499886c81bb5012991beed5f66f4158418f59
+
+[http://rfakeap.tuxfamily.org/rfakeap-0.2.tar.gz]
+md5=38f159681196b566f20bf837aff1e8f8
+sha256=4e5f63d8488b0fbd1a709429feb797c8c679de48f47ef93ab4741f8506830667
+
+[http://rfakeap.tuxfamily.org/rglueap-0.1.tar.gz]
+md5=61b724a4e1a48d0735fb18d4f68c0506
+sha256=13cce714959056d41627ec9442342d46072f9d72ef57554b9d03ebfb353ed2d1
+
+[http://richard.jones.name/google-hacks/gmail-filesystem/gmailfs-0.7.2.tar.gz]
+md5=895ee1c3f02973d39e73ccbee9552296
+sha256=bff4adc856dcd14cc9d50c63177d1dd465ecd71c9d80594c26ff98afbf57b251
+
+[http://ring.asahi-net.or.jp/archives/XFree86/4.3.0/source/X430src-1.tgz]
+md5=4f241a4f867363f40efa2b00dca292af
+sha256=5276b045e154948fce7abba7d686406c65862d90b43b50f2546b33e38378f0d7
+
+[http://ring.asahi-net.or.jp/archives/XFree86/4.3.0/source/X430src-2.tgz]
+md5=844c2ee908d21dbf8911fd13115bf8b4
+sha256=0afbf41d0f4bcaceb1381fc1882b80f62548845b85c83c3eb0f3a9ac7f7f96ef
+
+[http://ring.asahi-net.or.jp/archives/XFree86/4.3.0/source/X430src-3.tgz]
+md5=b82a0443e1b7bf860e4343e6b6766cb6
+sha256=19a830e3657851ad575ca895eb59932f1d90cd03735dec68f900dbc1bb6c3b7f
+
+[http://ring.asahi-net.or.jp/archives/XFree86/4.3.0/source/X430src-4.tgz]
+md5=567903747018f2534965ab6cb3976b38
+sha256=f62081c6f8a70a35fb0b5b210329f6bba7f5e506e9b809e23ceba21a2c35278e
+
+[http://ring.asahi-net.or.jp/archives/XFree86/4.3.0/source/X430src-5.tgz]
+md5=4dbdbe9a85c8f7f98dd0ee015a3c7b4f
+sha256=3b732ed179dd34c17d1ba17867b60a36f20d82a3f0eca7b084fcb5396aa2b30c
+
+[http://roadmap.digitalomaha.net/maps/usdir.rdm.tgz]
+md5=7b407c7ff5a38216f85d648365d81894
+sha256=bfa16a53bf481178f0b1bb51fadf539e96312fc3b84f1e54c650d2bae6f1eccb
+
+[http://rohanpm.net/files/inotify-tools-2.1.tar.gz]
+md5=8053f441fc3fe0f0c73cf483399da17b
+sha256=84a111a6a979152cd25b60825b4945da4b167f19fb9ec115f9c59b4b49927547
+
+[http://rsync.samba.org/ftp/rsync/rsync-2.6.9.tar.gz]
+md5=996d8d8831dbca17910094e56dcb5942
+sha256=ca437301becd890e73300bc69a39189ff1564baa761948ff149b3dd7bde633f9
+
+[http://rtpnet.nerim.net/ipaq/2.6.11-bk1/2.6.11-bk1-h1940.patch]
+md5=7f76fd173b550b1236025592be88f84c
+sha256=f09d4ae3365b876da9f40f49178ab7241bb7e4c1d67db9e2f310f9c76d5834a6
+
+[http://rtpnet.nerim.net/ipaq/patches/2.6.14-3/full.patch]
+md5=230b98276779339a4102abdb1c36197a
+sha256=866d1e45a575f448148c227f60cde4c8b607c51f179da3a7ec1acb5036b8e3ec
+
+[http://rtpnet.nerim.net/ipaq/patches/2.6.14-3/v2.6.14-gitcurrent.patch]
+md5=e0b42e51630e9cd7e3b0adf1be42f4a1
+sha256=0c625e90d13f91269d3a02ebdfba97226651a849ad8d69a0734bb5df7964c571
+
+[http://rtpnet.nerim.net/ipaq/patches/2.6.17-1/WIP/bluetooth.patch]
+md5=d76dbdbb59924ace618e48fbddbf3365
+sha256=eaa1a9746a4613a75a9fe9fc0c54a724758b899c5a898b8b50578066d8a82ead
+
+[http://rtpnet.nerim.net/ipaq/patches/2.6.17-1/WIP/h1940_batt.patch]
+md5=2810d6a0aa41a349faf711bfc9facf14
+sha256=0d68bfb125997599470dbc4822d43e777a831da2f1cfa5356b5dc791cdd8b27f
+
+[http://rtpnet.nerim.net/ipaq/patches/2.6.17-1/WIP/h1940_leds.patch]
+md5=f1c690a1c94a4178cf71ddeba3d52acc
+sha256=efa90d22a191b1bf2511b722dc2b9ed823fa7dbdab4a6be4c5f0609f5ed83af3
+
+[http://rtpnet.nerim.net/ipaq/patches/2.6.17-1/WIP/mtd_partition.patch]
+md5=0f7cdd68da77a62e77f9012de052c513
+sha256=2e56fe35b6f3b93dac201c55764b8bf6d899c995e0d165381368cfca886c6739
+
+[http://rtpnet.nerim.net/ipaq/patches/2.6.17-1/WIP/serial_sparse.patch]
+md5=2734448ca22fc44c2d999a5e47c70d5d
+sha256=3a8b96d7955a022045c781c1b8ac266fa8cdd47295744d60e7c00a6e88abbb3d
+
+[http://rtpnet.nerim.net/ipaq/patches/2.6.17-1/full.patch]
+md5=230b98276779339a4102abdb1c36197a
+sha256=866d1e45a575f448148c227f60cde4c8b607c51f179da3a7ec1acb5036b8e3ec
+
+[http://rtpnet.nerim.net/ipaq/patches/2.6.17-1/v2.6.17-gitcurrent.patch]
+md5=d41d8cd98f00b204e9800998ecf8427e
+sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
+
+[http://sablevm.org/download/release/1.12/sablevm-classpath-1.12.tar.gz]
+md5=ae8788df73ee0c2dd1ba8ed0f6d9b817
+sha256=1e50e20b9f597235709eadda23e6d15d3cdd5e63dbfeed6f50aeb5a85b31c405
+
+[http://samba.org/ftp/ccache/ccache-2.4.tar.gz]
+md5=73c1ed1e767c1752dd0f548ec1e66ce7
+sha256=435f862ca5168c346f5aa9e242174bbf19a5abcaeecfceeac2f194558827aaa0
+
+[http://samba.org/ftp/tridge/dbench/dbench-3.04.tar.gz]
+md5=efd0c958da79c1cd941ecd3f63e637ae
+sha256=055e411081ae25fd358dd0f4c1547ee1bd7429bea0f1fad9156a50a09ddd668b
+
+[http://samba.org/samba/ftp/stable/samba-3.0.10.tar.gz]
+md5=b19fd86d3c11a1b43f75a5988cd9ceeb
+sha256=d13a8e562caaa21afe45027630baa33f0fab0bd25a7cfa2218307545dfbac73e
+
+[http://samba.org/samba/ftp/stable/samba-3.0.14a.tar.gz]
+md5=ebee37e66a8b5f6fd328967dc09088e8
+sha256=d8721cc71b9c4ac878d3eef02f01bde7aee18bddd4e40bf213fca577edf3fd18
+
+[http://samba.org/samba/ftp/stable/samba-3.0.20.tar.gz]
+md5=68e72ab16334c329901816febc43217a
+sha256=e5ecf89ed1be4c2a2f198e9c8b3d60223f2f1172b9d53d5388c08b5377e18e3a
+
+[http://samba.org/samba/ftp/stable/samba-3.0.23c.tar.gz]
+md5=9e06d5e10f4ae84f7fafad75d1b4184c
+sha256=f333051eadf6ae88c30bd3d62eb94e9d6cf4a21912c4923d6ffddb029a42631c
+
+[http://samba.org/samba/ftp/stable/samba-3.0.5.tar.gz]
+md5=5896ad33676e3c26efaab5dcd897c466
+sha256=88049771c0d48e69b24f7234b2e4400bad53e6d9948d834aff9d563aac3ea8ca
+
+[http://samba.org/samba/ftp/stable/samba-3.0.9.tar.gz]
+md5=9cf2bcef71509a81687dec8732545400
+sha256=550429c7b22e58f4874dece816003ee0b769edbf2030d95aaee8c58588fbd60f
+
+[http://sandbox.rulemaker.net/ngps/Dist/m2crypto-0.13.zip]
+md5=be2790a34349ab452dddbcfe4c95606a
+sha256=c1c67839d4af290aecd8f7743312aacc0a39ae99757f0910918531ef9a63e14f
+
+[http://savannah.nongnu.org/download/dhcp-fwd/dhcp-forwarder-0.6.tar.bz2]
+md5=cbe60c8c904394a8e38e12ac42c02284
+sha256=45b708fb49a9fab10d814eb1e340a0960dac91f92800b3d39ddf0245ac913e30
+
+[http://savannah.nongnu.org/download/dhcp-fwd/dhcp-forwarder-0.7.tar.bz2]
+md5=e7f876e615ebc3f96418f6477b4451e2
+sha256=eb20cb028176e52432a2b877b2e292100dc41b384e829bc9e6d4823075ed8188
+
+[http://savannah.nongnu.org/download/leafpad/leafpad-0.8.9.tar.gz]
+md5=66a502c2c9e87b8f7ef0370ecb83cbbb
+sha256=5e8014be4fbebd0ced491d16eef8ef38a03382c25ef0ce41f0ee22a9ada30a6f
+
+[http://savannah.nongnu.org/download/rdiff-backup/rdiff-backup-1.0.4.tar.gz]
+md5=756b38aaf2602d097cafd08996fb7887
+sha256=e754605b72b5498d11207920291d0eed6fa78ad46d3b9ad018cff9bb480224ea
+
+[http://savannah.nongnu.org/download/rdiff-backup/rdiff-backup-1.1.5.tar.gz]
+md5=37478b1d3e76ea521aac22216582ec58
+sha256=0cbfb4b3940ecc9e351bbd72b5a9c53af050f2f5f63d500e8ff714ab6c91e447
+
+[http://savannah.nongnu.org/download/regex-markup/regex-markup-0.10.0.tar.gz]
+md5=47f9df1cd3865d20aecd6d73e7a7518d
+sha256=879f0af7622c1eb2d1b7c5f7d0ec53ea96fd48b05bc4f4c17542a2ea17fafba5
+
+[http://savannah.nongnu.org/download/scew/scew-0.3.1.tar.gz]
+md5=e9a69f7014cad332cc78667b07eebbce
+sha256=0e966359b9e1de31bf375b2a982b7f63cc6dd0c253bda480d1913c668791972a
+
+[http://scratchbox.org/download/files/sbox-releases/1.0/src/sbrsh-7.1.tar.gz]
+md5=2ca6d18cf54af3d62bfcc01d884bd493
+sha256=0e2e0524f0559daa6816e4f7ad83b29891455c35c61694bcc5869e2011e3c808
+
+[http://scry.wanfear.com/~greear/vlan/vlan.1.8.tar.gz]
+md5=1edd81324b4ffc0702c9ff289a342d91
+sha256=5a254457f718df733a03e9e5c39caaba9c0aac864ea69cb5d8907ec6df28e57f
+
+[http://sdgsystems.com/download/fbvncserver-0.9.4.tar.gz]
+md5=01a37f17857641253541307f59dd8cc5
+sha256=e22ed10ecba059904649f344be260512fdb3cbecbd95ca965f8b5cc3ea1785b5
+
+[http://sdgsystems.com/pub/ipaq/hx4700/src/RADIO0d.BIN]
+md5=bbd9673a8de1f15c660b80931ce91b25
+sha256=ee75c05bb8a17a7978abbbc0f38fb79b1915c1e2357889e65657a39024d5b3a3
+
+[http://sdgsystems.com/pub/ipaq/hx4700/src/RADIO11.BIN]
+md5=a150750ad33c512edc4afee5270b37cb
+sha256=e005a93a0b463e01edba2b79038b54c29a7932efee61c851a2ac644b8a4e5dd4
+
+[http://sdgsystems.com/pub/ipaq/hx4700/src/TIInit_3.2.26.bts]
+md5=8741490a25b98230973446400971bba9
+sha256=c1f29cfd31c335a409bdc530c2e68661d20a1e3c2e5d64454470b6700a40681e
+
+[http://sdgsystems.com/pub/ipaq/hx4700/src/WLANGEN.BIN]
+md5=9716488c2d1cf2e5f97b165be4de18db
+sha256=3d92318dadef22b1d1b062925ef66bac2ad48a0fd4fc83b88dcabba38c182b7b
+
+[http://seafelt.unicity.com.au/downloads/libsnmp-0.1.1.tar.gz]
+md5=752653ae88159a00c796c891af334f1b
+sha256=13447233b19f7a9d4e14b362f28f1dbe4bb6652bdc182bba974234b0bc15e791
+
+[http://search.belnet.be/packages/lineox/4.0/updates/SRPMS/libaio-0.3.103-3.src.rpm]
+md5=3d6ca28cb7cf73ca1d9fe902924bdc84
+sha256=9f578643db9fff6ae088a492e6a4aca3cac4c2cbc51afce551687f4f0d36465f
+
+[http://search.cpan.org/CPAN/authors/id/A/AD/ADAMK/Params-Util-0.20.tar.gz]
+md5=33c4466239c97cc3e1063eff0577206c
+sha256=29f7e05045a5699b211d2a8332d36113c22f9c2e96174f40939e79dbc356905d
+
+[http://search.cpan.org/CPAN/authors/id/A/AD/ADIE/Test-Exception-0.22.tar.gz]
+md5=dcf44183af3d26b14d7f989fc5ee1117
+sha256=98b129aa38a729f9c63b3ae2118b500f76bcf3456bb03a5f049f67ddea7efc81
+
+[http://search.cpan.org/CPAN/authors/id/C/CF/CFRANKS/Perl6-Junction-1.10.tar.gz]
+md5=b014170483cf85a93d08ee59196c53f9
+sha256=1428a61246a98411c2f16fcaf051c7acb53fb1507b1982da52d5b6aa70f78c2b
+
+[http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Sub-Uplevel-0.13.tar.gz]
+md5=16ea7df857d28cbf50ef668fe19559f7
+sha256=c6e8d8ca900c3bee61b3c66888722b79d232731c9ee8f59533f06a4e486f23ec
+
+[http://search.cpan.org/CPAN/authors/id/D/DC/DCLINTON/Cache-Cache-1.05.tar.gz]
+md5=09e4d37979c8f8ce2518e1d1ccd10d99
+sha256=10106d94e0897c18cd5eb0b782c3212371c9785eba78a15f4623335e01dda23c
+
+[http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Devel-StackTrace-1.13.tar.gz]
+md5=35d85c3f2c91c1de389b13436659551a
+sha256=fe044ec9817a31f2b76f701b2cfd980809676943a901ba3d49200162807fa1f9
+
+[http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Exception-Class-1.23.tar.gz]
+md5=560b42c0cf8b795bdc793459edb7ec13
+sha256=9ad5a063bac80f3e77a179c91b7ea4490181640c8c1893292fdc6f2d92f40406
+
+[http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Log-Dispatch-2.13.tar.gz]
+md5=88349394af92f521e1ccc845d64fb9f2
+sha256=ab8fdcfdbb6c74ecef4cfaf9e83f955aa422e43f8cd8683c1f2648c70070b88c
+
+[http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Params-Validate-0.86.tar.gz]
+md5=99f6093ecf15717c1a888bb6040aea43
+sha256=cf381182872bedd5f70fdb297863373bdfcac4f10f1b276aa227e9722b258be5
+
+[http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-SHA1-2.11.tar.gz]
+md5=2449bfe21d6589c96eebf94dae24df6b
+sha256=3cebe0a6894daee3bfa5d9619fc90e7619cb6a77ac1b04d027341cd6033ae989
+
+[http://search.cpan.org/CPAN/authors/id/I/IN/INGY/YAML-0.62.tar.gz]
+md5=4be042a043ec520074b0ab6f7ca0bded
+sha256=fa668e8f01fe43fdddb33f0c5e294698818f37519000b9f782f504ece071c740
+
+[http://search.cpan.org/CPAN/authors/id/J/JP/JPEACOCK/version-0.6701.tar.gz]
+md5=eb5464a77d342ab5eb21f2fb82670d1c
+sha256=7fb38ae6ce9ff7b4f9f46838bbb4d1fce577afddfbb3cc89e37cd8cbc81d795c
+
+[http://search.cpan.org/CPAN/authors/id/K/KA/KANE/Archive-Tar-1.30.tar.gz]
+md5=89604ea8fadc990c7bb668259dacb439
+sha256=c456d5c73a57a567440bca5c138a549a21637aa2e4049228b5ba63cf68d75a1a
+
+[http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/Class-Container-0.12.tar.gz]
+md5=6896bdb4464b96ad638e22b0400acbc9
+sha256=771206f2b7a916ce0dfb93d82200472beaeb910248482734179bf36808e486b1
+
+[http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/ExtUtils-CBuilder-0.18.tar.gz]
+md5=d119f0c6c12787a8d5b255208c3c74c5
+sha256=fb707b2026de62c1de6ce7fb67e9f82d586211ac09c70e81b83631e77cb47fd1
+
+[http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/ExtUtils-ParseXS-2.16.tar.gz]
+md5=c64fddf17ee2b27d8a90ceb455c3e570
+sha256=1f8504c7f08d2d59c71a70915fc834a285b99587444ee33e23ee3f135c071da0
+
+[http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/Module-Build-0.2805.tar.gz]
+md5=598bb59b86c2c4842eeffb03392fab5b
+sha256=8fd609d1e6b460b5c95ad5612cb823aa863d51360ed55caea987909a9bab50f5
+
+[http://search.cpan.org/CPAN/authors/id/M/MA/MANU/Net-IP-1.25.tar.gz]
+md5=a49c0b02a9b793ff60191cdafc0c202e
+sha256=4cd6e2202fd88c46d5458d19bbea80e257b6ba0ec57ea3ac8ae94ed48c9a60c7
+
+[http://search.cpan.org/CPAN/authors/id/M/MA/MARKF/Test-Builder-Tester-1.01.tar.gz]
+md5=4751252f1e33af4f582c8af4c7b7666f
+sha256=62bc416ccb3f01c3911d9744d6c865d9fa4d008bd47dbecc2adde5c3892ce868
+
+[http://search.cpan.org/CPAN/authors/id/M/MA/MAURICE/IPC-ShareLite-0.09.tar.gz]
+md5=3942a55cfc5e6d3b612a46cc1a9515b9
+sha256=e6dafb82ddf7730ebe7ae2de0ce158d3052d782780b41a14c4fed304e463632e
+
+[http://search.cpan.org/CPAN/authors/id/M/MS/MSCHILLI/Log-Log4perl-1.06.tar.gz]
+md5=a7bda690ec0ad0bed457fa525e28034a
+sha256=ffac9cd4a6fbc59618bf4e79c389a927491a81b448528278e010a190e2483544
+
+[http://search.cpan.org/CPAN/authors/id/P/PE/PEVANS/Error-0.17004.tar.gz]
+md5=4dfca8732331a4f79c6803c3bc6b722f
+sha256=f464f0068772c276b81a7345f6788bdc3a243c13de24563346043d049a5497ba
+
+[http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Zlib-1.42.tar.gz]
+md5=1ab76bfd6731d80f6abbd1643c90cabd
+sha256=7794d91711e8c9e526431da72c53bb08e14790f326d0e330d9e9d651f3f6fc6c
+
+[http://search.cpan.org/CPAN/authors/id/P/PV/PVANDRY/gettext-1.05.tar.gz]
+md5=f3d3f474a1458f37174c410dfef61a46
+sha256=27367f3dc1be79c9ed178732756e37e4cfce45f9e2a27ebf26e1f40d80124694
+
+[http://search.cpan.org/CPAN/authors/id/R/RB/RBS/Test-Differences-0.47.tar.gz]
+md5=e4fa76bb11b0d1db2d4213390413f5af
+sha256=d7d17925c23a69d66073e44feee3177186b45ca64c23b73277a4b4100dcdeeeb
+
+[http://search.cpan.org/CPAN/authors/id/R/RB/RBS/Text-Diff-0.35.tar.gz]
+md5=4931662ea353384dec2a54a71b26ee8c
+sha256=0b654cd39126333a0dab7fdd2fd0c5023f6eb45e72d1d8bf9fb3cab175002bc7
+
+[http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/Data-OptList-0.101.tar.gz]
+md5=6e9bb994a8716112a78c1306261f4164
+sha256=a96fb122261fb5f069341d7e69dcf07a2988da7cfd8df65d50843b8b102fb55c
+
+[http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/Sub-Exporter-0.970.tar.gz]
+md5=10eaa77a13de4c23640cdd1aaf0f2412
+sha256=d95895fc8a8277b3b8ff34e2eaaebfb56bbc044c8bf6522dbb47e2fb714b238c
+
+[http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/Sub-Install-0.922.tar.gz]
+md5=48e8e9f72cdd5b3f5f7115b8b7de3ddf
+sha256=314de5dcc9550a9bff0784a7c9552f8092115452e2a5f4a59903c75bfbf658df
+
+[http://search.cpan.org/CPAN/authors/id/S/SI/SIMONFLK/Test-MockModule-0.05.tar.gz]
+md5=1b013aeeb221f83e7f325a2f98169296
+sha256=67c515258c76780009e58305ec56f195e1b110d0cabb52792d57dd1761396e07
+
+[http://search.cpan.org/CPAN/authors/id/S/SS/SSORICHE/Test-Output-0.10.tar.gz]
+md5=dcf67296e04a41a9f73f70c10fe5f825
+sha256=b72813be2639d49dda2a3f87928b7ce185633f3afaa25300afbfb844b12deea4
+
+[http://search.cpan.org/CPAN/authors/id/T/TE/TELS/math/Math-BigInt-GMP-1.18.tar.gz]
+md5=cd17afa7e9e7e9192457f6968d538f3f
+sha256=6948117f96cc9754bdbc53d92c48bca02f2de844a271a527b0a27065fcd06d24
+
+[http://search.cpan.org/CPAN/authors/id/T/TM/TMTM/Class-Data-Inheritable-0.06.tar.gz]
+md5=86d95ee16854a5503dc9f86a2f2ffa83
+sha256=8750d58745e57654820aa9359891cb0d875d804dbfcfa2e1bb95c56531e423d1
+
+[http://search.cpan.org/CPAN/authors/id/T/TO/TOMHUGHES/IO-Zlib-1.04.tar.gz]
+md5=1abf9e6161cc6c52ccd4c629e32e582e
+sha256=8401b31d22605e787edef75025eb048b2b3cfaee92ed8358bdcaedca5761f7ea
+
+[http://search.cpan.org/CPAN/authors/id/T/TY/TYEMQ/Algorithm-Diff-1.1902.tar.gz]
+md5=ff3e17ae485f8adfb8857b183991fbce
+sha256=c8b40dbf406770c6bcbd1a26a3f2343fa1563675085b63932d06f37e60098375
+
+[http://sebdelestaing.free.fr/gweled/Release/gweled-0.5.tar.gz]
+md5=238f5ef66317bb24c3d4018a7d1e9ec3
+sha256=d5baec578b22407e3fc78cc47393942f9704f1ab7b8d1c012577037d3421f90e
+
+[http://sidplayer.sourceforge.net/sidplayer.tar.gz]
+md5=bba4a99e59581066e905c9326a724ba5
+sha256=bc6bfd100c495e74baa651c470252484b19bfc2e6fa8520f591b0c01b9fcfb5d
+
+[http://simon.morlat.free.fr/download/0.12.2/source/linphone-0.12.2.tar.gz]
+md5=86c01dbbcdb41786229f51ec0994ff67
+sha256=02b7d27564cb06f56f7fb14cd4a4eb60093c441decfec9b475d892518a5509a1
+
+[http://snafu.freedom.org/Vmaps/Vmaps-1.1.tgz]
+md5=0ba6f2b97ff8eb3e975ed906f2311080
+sha256=f97b3c0a36c7422d38af67dd68855e5c25581f7b6e79f8671e298e66b4d0026e
+
+[http://snapshot.debian.net/archive/2005/07/11/debian/pool/main/d/dash/dash_0.5.2-6.diff.gz]
+md5=ff79ea963744833b64f53ea080e56727
+sha256=765e047005a7f712050e6dbded060681356b6bf96a694df98e9a40c2ddfe6138
+
+[http://snapshots.madwifi.org/madwifi-ng/madwifi-ng-r1844-20061208.tar.gz]
+md5=9ab58ff1c9b3803f76b064eba3555679
+sha256=da423f508cc3624a1f510e9c153ebb7c5413e765546e9d44d55818358862cc64
+
+[http://snapshots.madwifi.org/madwifi-ng/madwifi-ng-r2100-20070210.tar.gz]
+md5=e7e0f50615b48c4ea70e6d219d141728
+sha256=49d42bcb9e13534f357240890c4e6b344e5f2fe951d5d39bc4caee55fdf3c5b7
+
+[http://snapshots.madwifi.org/madwifi-ng/madwifi-ng-r2156-20070225.tar.gz]
+md5=8cee25705f94e1ffcf84cc084d5a6996
+sha256=d609af1a5bb6ecf6b00ae89ef338c607ee7f9ddba693085c3b7773f9be00b2e0
+
+[http://snapshots.madwifi.org/madwifi-ng/madwifi-ng-r2182-20070308.tar.gz]
+md5=8e6f80c2e5cc828b6cceeda1c66c687d
+sha256=d509a0d9cb791c0633c35b48c502fc972990ba0dcb963690edbe3261704d0af0
+
+[http://snapshots.madwifi.org/madwifi-ng/madwifi-ng-r2187-20070309.tar.gz]
+md5=a43d24457cb99fcf4c32c31923be9b6a
+sha256=955d5382d079327679c3a601361fb752f1caf2f8a832f1c1bffe945708e37dca
+
+[http://sources.nslu2-linux.org/sources/ctrlproxy-2.6.2.tar.gz]
+md5=37570a7f018f41d701cd29cd95b45241
+sha256=c8c42cc08b9b462f9c497441dacde1eac71fd717195ddfbeac68141bd0ad95a8
+
+[http://spacepants.org/src/pymad/download/pymad-0.5.1.tar.gz]
+md5=9b9a6c77d1b7a7706e77fd2e7e964c01
+sha256=4a854db3eefd5afcf5c5434f279a6c304129cce41d9046ba044db73686038412
+
+[http://spruce.sourceforge.net/gmime/sources/v2.1/gmime-2.1.7.tar.gz]
+md5=ed99c382471294896f576e5f77694142
+sha256=39ef812217a76982947a7ac3b4a97e8303466a3dd93709366d1559e0a7ec8a46
+
+[http://src.gentoo.pl/distfiles/gtk2-ssh-askpass-0.3.tar.gz]
+md5=14ca8c653ad19699b7299198d7a94e0a
+sha256=5b0a2b2ea2cbe26d7738a360ba5aad57d7d03297a662cf209a032c0b9725d33c
+
+[http://ssel.vub.ac.be/Members/DennisWagelaar/download/zaurus/supertux-0.1.2-fp.patch.gz]
+md5=05787c6553316940873e8bce192a4fe0
+sha256=ab958a3cc04858ab72f3fe2844362f249897c3bb2149208be22da2ce5d46c9c0
+
+[http://stag.mind.be/gpe-helpviewer-1.0.tar.bz2]
+md5=2d2c0ea709fdbc251e5d2fb9943d5409
+sha256=3b3dd5fe64b24536a6f089bc03c7a4dd05792dbd25005b160e93f15522d8c971
+
+[http://stag.mind.be/gpe-mini-browser-0.11.tar.bz2]
+md5=ebdb2eebb1ca1a5cb8ca7f1e4e3bb817
+sha256=372836198e10982525f01e8bf9d959777ab66f93d0688274c43200c4b8c959f8
+
+[http://stag.mind.be/gtkhtml-lite-3.0.10.tar.bz2]
+md5=1a3e312cec38645c2f811282566d12b0
+sha256=a16751d55a1a635eb2d04613353884c5bdb2ad2fc3afa4b951aa2868552602a9
+
+[http://stage.maemo.org/pool/maemo/ossw/source/a/audiofile/audiofile_0.2.6-3osso4.tar.gz]
+md5=7fe7cfb5d6abcef8edab841c0198205b
+sha256=afb8b7286ad4e13c3e6d8393b8f9154ffead6dff48dfc73c5033b0aa2a550344
+
+[http://stage.maemo.org/pool/maemo/ossw/source/s/sapwood/sapwood_1.20-1.tar.gz]
+md5=92dbb7fbcf468030662d4a103ecaca58
+sha256=d0baabff2a5dba4ad8dfc79f15f0d3110ab88564a451c835b56618cf808ba870
+
+[http://stage.maemo.org/pool/maemo/ossw/source/x/xserver-kdrive/xserver-kdrive_6.6.3-5.tar.gz]
+md5=a332bc9fd05b6d1203a73dba94985e53
+sha256=16f6f6ccb3eb29042ac53aac0c7d5f467f59bb0ce70224dc311eeff509a6a39b
+
+[http://stage.maemo.org:80/pool/maemo/ossw/source/o/osso-af-settings/osso-af-settings_0.8.5-1.tar.gz]
+md5=e24a9a9fb2167197ad6d141c891be9cf
+sha256=c243adca37a6b80e1ccd43da53e61d1794d4dede6787c9beebacd2c1932271ce
+
+[http://stage.maemo.org:80/pool/maemo/ossw/source/o/osso-af-startup/osso-af-startup_0.28-1.tar.gz]
+md5=dc36e212d738944ded9d05bc16171523
+sha256=b14cfdcedea92cef74c58cead4981c349f8e2cc7bbc24ace5e953dd3b6e83668
+
+[http://stage.maemo.org:80/pool/maemo/ossw/source/o/osso-af-utils/osso-af-utils_0.4-1.tar.gz]
+md5=8a10a5b3bb494d8bc2241fd041f0e4d4
+sha256=6a92a4bb2876fdfb7454723f0235ce9962f72cf41938aed58b1b49562c693a77
+
+[http://stage.maemo.org:80/pool/maemo/ossw/source/o/osso-core-config/osso-core-config_200515.1.tar.gz]
+md5=efa6dc867cec4b38febab2f0fe24a4d2
+sha256=fed674a5ae64cb65328eecc752403e5e75e9ce486c19d86c5fa633afb23e0969
+
+[http://subversion.tigris.org/downloads/subversion-1.3.1.tar.bz2]
+md5=cdb0c533b6983e8e1d447e277403e5bf
+sha256=efda6906a11a7fce514f400a5235b290efbe3458309bf8f547a2d49e10c56b1e
+
+[http://subversion.tigris.org/downloads/subversion-1.4.0.tar.bz2]
+md5=f0c5fef69fccfb12ef6c8598f484ed0e
+sha256=6960ed42174be9c54853e8708cc91a7c8355b23c4c3921a6d7fe7947d50843e4
+
+[http://subversion.tigris.org/downloads/subversion-1.4.3.tar.bz2]
+md5=de0e792c9804c7bce397d267af5eb30d
+sha256=8260a2d3a67c5cebc100e7662f81679582c0f05a2a28260e235bdf051e72aee3
+
+[http://sun.dhis.portside.net/~sakira/archive/SPainter_1.5_src.tar.gz]
+md5=8bd0e7e1f4d6549baba4cbb2384de2ff
+sha256=4925a4503cf7650e7880740113ee747d1bf828b6783b24580fbcb0ec894c0801
+
+[http://surfnet.dl.sourceforge.net/sourceforge/xbplayer/ccxstream-1.0.15.tar.gz]
+md5=c589fff48ce541f26b394c9d82ccbead
+sha256=2dec31ba4a176c921a653c0949a53c2d3497e047737724350897fd2534db18fe
+
+[http://svn.chezphil.org/utils/trunk/fis.c]
+md5=c71590c10aa615f1294c16a3af9d3970
+sha256=4f8b4f878ea4e8466325a2dfe22d174e1767365d45f0cca76fb00648623083d3
+
+[http://svn.o-hand.com/repos/web/trunk/patches/add-dom-functions.patch]
+md5=041be9711a16e629d01487664ba97152
+sha256=42956fb41341cf82ae8bce18b4cf96a7e2aa631b1b60657afb6d7e9be7cd138c
+
+[http://svn.o-hand.com/repos/web/trunk/patches/add-end-element-signal.patch]
+md5=651b1601d8a1b21c8a3040fadb729043
+sha256=d067e8331bf9c6851f1c6067d991a7f54327f532900b405ebdf8e149c071f381
+
+[http://svn.o-hand.com/repos/web/trunk/patches/at-import_box-pos.patch]
+md5=160c648e29637f2ed6301f4dfdecce21
+sha256=3ec786e6df9e1a935aff4848b6989cad8f87c1fa8813dc033b338e18b17138d8
+
+[http://svn.o-hand.com/repos/web/trunk/patches/css-media.patch]
+md5=d3fe4cda3545f3e4718f1acc186608ab
+sha256=3aefaa17ffa38143bf5df1161c51ab402d35bfbee41ab4643c313edf569165d5
+
+[http://svn.o-hand.com/repos/web/trunk/patches/css-stylesheet-user.patch]
+md5=05fc3627ca364095702dc804f41c8391
+sha256=df5cca50a8f95333505d7920929fea251daea3be25be6834a1c50a742d9eb674
+
+[http://svn.o-hand.com/repos/web/trunk/patches/iain-mem-leak.patch]
+md5=4e11dc7899d68f2be2e06ccee01d296d
+sha256=1e2cc080e654c1839c5cb4b4adf4c62a23e7da208427f3ba0b16cfed9e5cfa98
+
+[http://sweb.cz/tripie/utils/wmctrl/dist/wmctrl-1.07.tar.gz]
+md5=1fe3c7a2caa6071e071ba34f587e1555
+sha256=d78a1efdb62f18674298ad039c5cbdb1edb6e8e149bb3a8e3a01a4750aa3cca9
+
+[http://swfdec.freedesktop.org/download/swfdec/0.4/swfdec-0.4.0.tar.gz]
+md5=157d31c9dc02aa22b5f27323e5a203fc
+sha256=c31d3bbee984c7971d2b24cddc279d8ad65edff8216778d617484c147ba3ae3d
+
+[http://switch.dl.sourceforge.net/sourceforge/wvware/wv-1.2.0.tar.gz]
+md5=b6319d5e75611fe2210453b5feb82c0c
+sha256=a76f44468e78591e6d510d326702e7c3999d2b9dd3ab8ab8c1c9811fd5b111e4
+
+[http://sylpheed.good-day.net/sylpheed/v2.2/sylpheed-2.2.9.tar.bz2]
+md5=45e9e89775613b0afb732fbc11c73d26
+sha256=72a6ab7c8a0baf0d1d432929c19a7d096335ba4adc43e40488b6a77e5995a0f5
+
+[http://taiga0818.hp.infoseek.co.jp/rpms/qfish2-1.1.0.tar.gz]
+md5=2a8219bcb375fac66cea66394c3c36fa
+sha256=1e097fdccda0fc914c8229aab7d83964c5944cc95eb053fd69e357dca69461b9
+
+[http://talinux.fi.tal.org/pub/talinux/sources/balsa-2.0.17.tar.bz2]
+md5=851db68728ed9adea615eb2f249fa1ee
+sha256=c450b49ce9903d97ed5e4aa788b388e014c0eddcfc038b000237f67cd4528a3b
+
+[http://tango-project.org/releases/tango-icon-theme-0.7.2.tar.gz]
+md5=eace48f8340a95d7134632bad6287100
+sha256=6b368373f9a01f3f33f77ac25c170cbd052b29d6910f72308e55dc0a39af7722
+
+[http://tango-project.org/releases/tango-icon-theme-extras-0.1.0.tar.gz]
+md5=caaceaec7b61f1cbda0db9842f9db281
+sha256=b9252179ea2c546e6bb065281d51373f0ae06081e5a98d4255249af4fa8b33db
+
+[http://tbox.jpn.org/data/inputhelper_1.0.0_src.tar.gz]
+md5=d99128113077a9b0c8f4aebeaec38d27
+sha256=4bf2d82a434863737cb505d03c7edf4e09ae3dfb3aa2c250079b68a60aaa629f
+
+[http://teax.sourceforge.net/txdrug-0.1.tar.gz]
+md5=c867374392559d6e475eeb03f6a81169
+sha256=ee1044b61fc457ecc6025d06c5b9241994bd19e3d6ce98ae0827842caab00f0f
+
+[http://telepathy.freedesktop.org/releases/farsight/farsight-0.1.5.tar.gz]
+md5=2aaf871471a9ec037763c5dc7c193c57
+sha256=6b9785167934948a582839f9723e37214cab1607a9764c35f10d555f8e662575
+
+[http://telepathy.freedesktop.org/releases/gst-plugins-farsight/gst-plugins-farsight-0.10.1.tar.gz]
+md5=578ef83efd03124e7085abe719513bac
+sha256=623e187f87037a690b5d0beef5991b3f2a58bb5058fad8c75329f48f0b07da4b
+
+[http://telepathy.freedesktop.org/releases/telepathy-gabble/telepathy-gabble-0.3.0.tar.gz]
+md5=12a4508e338a39c63c24c41261eba3dd
+sha256=b4fcd32237271e400b00e779116e8203eac5efdaf53c78b9909b85a158fd81d8
+
+[http://thc.org/releases/hydra-4.4-src.tar.gz]
+md5=3a2e76b03f2e534119517aaa18083322
+sha256=1019b3fbeb3e7e2d0c8faf81191e722bfabc714ee03ec08703faf91dab443b64
+
+[http://thc.org/releases/hydra-4.5-src.tar.gz]
+md5=01f5cc3adbe9d161cf8e1855cec4fa15
+sha256=9a9b7092f2e48786e8f83e5bef99fd31988f87140ad9ca840583f91b3623d628
+
+[http://the.earth.li/pub/e3/pbltool-0.2.c]
+md5=c8fd507f831d2b017dfecf60bc55e28a
+sha256=2a1e31d4ae859e530895882273fad0170374a2d5b838bb4558303e59236e9cb6
+
+[http://thegraveyard.org/files/skippy-xd-0.5.0.tar.bz2]
+md5=0e847845c4cb8c16f79bc4538ae288ad
+sha256=52ff7476b3580a92c385167f1855583c2cf74ae1898a6a5e8446ce67c80bc139
+
+[http://thekonst.net/download/orpheus-1.5.tar.bz2]
+md5=9613e6be14ba7a0ca5d42a88e6ed3516
+sha256=45145ea27333be1552624065297b4d9d76feadf2a4a89fdf0ddafc830ced3a98
+
+[http://tinylogin.busybox.net/downloads/tinylogin-1.4.tar.bz2]
+md5=44da0ff2b727455669890b24305e351d
+sha256=5e542e4b7825305a3678bf73136c392feb0d44b8bbf926e8eda5453eea7ddd6b
+
+[http://tinyscheme.sourceforge.net/tinyscheme-1.35.tar.gz]
+md5=2dcdbfdca5aa4b28a637429900dcf36c
+sha256=7e45b6f6824b1342e598dee162368ed8d1c9c1bcee96d8e1eda9a4c63c599f08
+
+[http://tmrc.mit.edu/mirror/twisted/old/Twisted-1.2.0.tar.bz2]
+md5=d5150e8de83a9d5134d175d068482ab7
+sha256=9e488e3ee3fc0f56d8f8898f4729819512dd43afff0fba4e32390d1af4bd53d5
+
+[http://tor.eff.org/dist/tor-0.1.1.26.tar.gz]
+md5=0667df7a1f670bee5163b607aea172ba
+sha256=3be8c89be5b927e73b77a82ca3d83f0f162fceea2d6a14ce1c0cf5333b36cd1c
+
+[http://trevp.net/tlslite/tlslite-0.3.0.tar.gz]
+md5=2d5f7efafa5d04598b21f1889e981207
+sha256=bbc3bdbdefc81f7b186f1c5697f6939b5fc77d4569112edd1a6b3aceae177228
+
+[http://trific.ath.cx/Ftp//enca/enca-1.9.tar.bz2]
+md5=b3581e28d68d452286fb0bfe58bed3b3
+sha256=02acfef2b24a9c842612da49338138311f909f1cd33933520c07b8b26c410f4d
+
+[http://uazu.net/sbagen/sbagen-1.4.1.tgz]
+md5=7d672f2f2a8e33e664b06777459471fe
+sha256=3190534f4449f810d633b0a9848c7db1458b4c57249432a3932a468ecb06daea
+
+[http://ubahnstation.net/source/ubahnnav-0.4.1.tar.gz]
+md5=039d1215960b879d5b292e5b713ced8b
+sha256=7007261ad816938ee4824720eb08e9bff4ad6f796965ec928f56acfa3c24a1b9
+
+[http://udhcp.busybox.net/source/udhcp-0.9.8.tar.gz]
+md5=2d7e548820d2ded5e183933cb701defb
+sha256=da0ca1e821e3fa7cfbe73ddb1480b921002ee992f5e5fbc611422c103b907443
+
+[http://uim.freedesktop.org/releases/uim/stable/uim-1.3.1.tar.bz2]
+md5=2832e23d4778bbacbfa4b49bf642d667
+sha256=ed2cfa15018a4fd2557e875f66fcb3f0b9dabe12fa0700aa2f11cca69c2cb256
+
+[http://unimut.fsk.uni-heidelberg.de/demi/comprec/comprec-0.01.tar.gz]
+md5=dba850728cfa65403d5b699fd302399f
+sha256=b3b8da5e458f56246f735b499b32bc2a3a039d2d4092b1b249c60a188c2314d5
+
+[http://unimut.fsk.uni-heidelberg.de/demi/comprec/comprec-0.02.tar.gz]
+md5=705eebe74d98397e26193e0db9612b03
+sha256=905ee280a38f479ab7da75e6dfba21f221b23bb068111ebddc4c2e853f3fff09
+
+[http://us1.samba.org/samba/ftp/cifs-cvs/cifs-1.20c-2.4.tar.gz]
+md5=f3b96692f679239488de30f2bd896825
+sha256=885eda0bbe68018b5770437e542473508f88205bb09cbfde7fc6e0c31f5a6f83
+
+[http://us2.php.net/distributions/php-5.1.4.tar.bz2]
+md5=66a806161d4a2d3b5153ebe4cd0f2e1c
+sha256=b55253e9557eceb901d83217ec192da22c28c7b2fdf714d3f151f1db663b5a32
+
+[http://us2.php.net/distributions/php-5.2.0.tar.bz2]
+md5=e6029fafcee029edcfa2ceed7a005333
+sha256=e105b6aad55589aecf20ae70ab7aa81eb202296fc52531f62e546af23077cca1
+
+[http://user.cs.tu-berlin.de/~karlb/zmerlin/zmerlin.tar.gz]
+md5=ae1f9198544d1585f44dab7bab110ae3
+sha256=28e73da5403faad322022e8fb327f99677841d26396a1a1f1e854c768b47cf7c
+
+[http://user.cs.tu-berlin.de/~karlb/ztappy/ztappy.tar.gz]
+md5=9bc4d68ba2e17ff91df89452debe2188
+sha256=b23ec333618729edeafbae77b5a73183e6e168c671452b98fac2bf3f13660207
+
+[http://ushare.geexbox.org/releases/ushare-0.9.7.tar.bz2]
+md5=e978c648f808cf1740b1583a78b922ff
+sha256=b09616934c21e10a9bac2d3941bd8585b075ccc10c2f5218a0f652b0e9386a4c
+
+[http://v6web.litech.org/radvd/dist/radvd-0.7.2.tar.gz]
+md5=26ea468b2323e44cf827ae5f84d18dc8
+sha256=66ed3cbb85c77aaf8293e3e5df678dc9ade82253628d2ce8cec570655cf157e9
+
+[http://v6web.litech.org/radvd/dist/radvd-1.0.tar.gz]
+md5=8bce4a21757cf069f5a69e2f9bee9e5b
+sha256=fbc44fac8356426c115914eb5dce6fc84afea923ad6aba1670a3402c06bda7ab
+
+[http://venge.net/monotone/downloads/monotone-0.20.tar.gz]
+md5=3bdf4da35ff576a401483815952f4045
+sha256=56a5c5afd838f90146205ee4769b83988c6bafc85826c0fbcad982f1e0333d93
+
+[http://venge.net/monotone/downloads/monotone-0.21.tar.gz]
+md5=c30c96b97ae56268cac567bd8837b991
+sha256=a96adda6067adaeb01477c2fc58947c8567a7c5866a5f40c272bc7df728b72f5
+
+[http://venge.net/monotone/downloads/monotone-0.22.tar.gz]
+md5=ee0f25577b8a640df3015113e67bb718
+sha256=b1b65dacbeef990cd0cf9ba0b5ee8e2e6617e69c41a17cbb0d92d7e705c2532f
+
+[http://venge.net/monotone/downloads/monotone-0.23.tar.gz]
+md5=6d9e909480c2be0b23e2820c3a42e6f1
+sha256=2779f3ddb291516f03936c37425c6c9c8c3fbe71f545960be88d47ef14f3ec8a
+
+[http://venge.net/monotone/downloads/monotone-0.24.tar.gz]
+md5=8193203c8b48104500d956f9e524bfcd
+sha256=84fb5aac33ddd640a321f45b8f78f0f6f003d0e29ece1fd376fdf65b39ecc998
+
+[http://venge.net/monotone/downloads/monotone-0.25.2.tar.gz]
+md5=108c18666ce6ff9c05643f923027de8e
+sha256=ea95a2778e3dba087112dc6c42903f9629af17156c4da58c0ba3ac9761690159
+
+[http://venge.net/monotone/downloads/monotone-0.26.tar.gz]
+md5=21b902d1b48ffb868536d04c4ad38155
+sha256=4ced85ad82f7f74bc75f08d93009fa2f25b7516f11e78ece1f775a3db433054a
+
+[http://venge.net/monotone/downloads/monotone-0.27.tar.gz]
+md5=cf3d8f26b7570d0d65834c3949913e2d
+sha256=0a817e08b06141d78f2b8b0073aafd7110147679efb49c3e88c96a486532cacd
+
+[http://venge.net/monotone/downloads/monotone-0.31.tar.gz]
+md5=5a5feb8d053a5993ab516a1186bb5883
+sha256=ceda1a42c23d9cfd0bf609f059ee32f228f78384dcf155adb36a742c78976c84
+
+[http://weather.ou.edu/~apw/projects/stress/stress-0.18.8.tar.gz]
+md5=160d41166d98a1e88c3f95f556633b71
+sha256=3f753cd91828808ecbdeffd1fe3125eccc6f71ecad7756115acc08b3e2c764dc
+
+[http://web.mit.edu/~emin/www/source_code/pycodes/pycodes-1-1.tar.gz]
+md5=26c99a8b10ccb2a21ca4891b85a07978
+sha256=2a9fbef7d953e1fc1eec837a4087cd518e465226b060b5cb3ea67bcef1760269
+
+[http://wifi-radar.systemimager.org/pub/wifi-radar-1.9.6.tar.bz2]
+md5=4ab4cc22d68dd0655ab28b75c7aa6248
+sha256=bb94acb9da36e7148dc5090f07f43c816569b0b5d671135fd661b2376f19d719
+
+[http://wl500g.dyndns.org/loader/loader-0.04.tar.gz]
+md5=c0b7c36232d3910c425d03e56d0f532b
+sha256=6f11fc04a1f3f04ebb996723fc86ca363c3959ca1ef76d1057db9db3ea5a98d0
+
+[http://www-users.cs.york.ac.uk/~aw/pylinda/dist/linda-0.6.tar.gz]
+md5=c3e1b6c428218968e2963182c1df1fdc
+sha256=cba8ac22d77bbf8f6ed4a98933242b89ee2426cbc216f54415eafcac1274547a
+
+[http://www.0x50.org/download/0.4/0.4.29/cherokee-0.4.29.tar.gz]
+md5=854e6e61a69781746496012658d8ef98
+sha256=7091536ef2a51d2548ac6268cc846dda9c37f7f7348597868c793f42b9be7d78
+
+[http://www.0xbadc0de.be/libssh/libssh-0.11.tgz]
+md5=ad703c4702646c83ca4fcace92c220d3
+sha256=94ca32ac10615a7c0ba19180e67f2e40e2bfa4cc8de6ceb2a3a54d2dd83141cb
+
+[http://www.25thandclement.com/~william/projects/releases/libarena-0.2.tgz]
+md5=dc51d2466493d16a81af10ae0390b292
+sha256=560a17bc5d9e8ef71579391703c2a138d365e68396a5d8b21b1d9e1b232e16d0
+
+[http://www.25thandclement.com/~william/projects/releases/libevnet-0.3.1.tgz]
+md5=65884ee4548e2d7c48b9c59acec5ba70
+sha256=3bc2b8d1cd657b2f8f8ec82168791f7b0fce8c8161ab24eee4b577d5876026e0
+
+[http://www.68k.org/~michael/audiofile/audiofile-0.2.6.tar.gz]
+md5=9c1049876cd51c0f1b12c2886cce4d42
+sha256=4b6167b56e21556fb07c9ef06962fe32817064c62181ba47afd3322e0d0f22a9
+
+[http://www.7-zip.org/dl/lzma417.tar.bz2]
+md5=b1ab85e4dc1eb1323d77fef47a2cb71c
+sha256=84124d4501798ecb284fceb28931db023850535e1b1146c884add7b3b0331cbc
+
+[http://www.Vanille.de/mirror/flexis-zaurus-1.0.0.tar.bz2]
+md5=e7737236f1eccadd4cf8cfcc0c82e005
+sha256=ca7653a03f562057098c9fb956de34021a14017c2a44eedd3ab0963dc877e7e5
+
+[http://www.Vanille.de/mirror/insttrain-1.0.5.tgz]
+md5=2cec5b79969d0fc64c510edfe7113319
+sha256=2dd29e066dece7062cb30daeedad7e5baa0b5cb993c67ba700ebacd6e0212487
+
+[http://www.Vanille.de/mirror/zauralign-1.0.2.tar.gz]
+md5=c159a55ecc3ba800445d4bb73d0925e6
+sha256=f849da3eec59b22599a806d59e81729ba9234fc2318335804d45d9dce23fb532
+
+[http://www.abcsinc.com/small-linux/devmem2.c]
+md5=e23f236e94be4c429aa1ceac0f01544b
+sha256=3b15515693bae1ebd14d914e46d388edfec2175829ea1576a7a0c8606ebbe639
+
+[http://www.abisource.com/downloads/enchant/1.2.5/enchant-1.2.5.tar.gz]
+md5=e64ec808ed2cb687c242ebb835faeb61
+sha256=15348bf21125536b3bce1e477e50310e4b192c43c35476e949f41280bc7123d8
+
+[http://www.abisource.com/downloads/enchant/1.3.0/enchant-1.3.0.tar.gz]
+md5=f7edafae875616b83e7a17a7e5c2d585
+sha256=e65015aa0e6ada88a001b07b092265f4cbaf377d99b4233972995cdb94e698ef
+
+[http://www.abiword.org/downloads/abiword/2.4.5/source/abiword-2.4.5.tar.gz]
+md5=e05f15936535c4b737deaa721adf8d09
+sha256=ac5a45d89ad334fa340868e0bcbda9fa48e4d66d8008f116b305b0f1d8d76be5
+
+[http://www.abiword.org/downloads/abiword/2.4.6/source/abiword-2.4.6.tar.gz]
+md5=30fbd0a9b539f15f54f90d3812a75266
+sha256=98105f03b1f33f26cddbfc18d64b04e64a85db3c861508837ab290d26ca2fed3
+
+[http://www.abiword.org/downloads/abiword/2.5.1/source/abiword-2.5.1.tar.gz]
+md5=11d022458e0e090846b35ed4873c2e6e
+sha256=482891fb0e376e2aaeee25afa8b4913e6dc50f4fdc280f9f152b3ee8745d735d
+
+[http://www.access-company.com/downloads/hiker-0.9.tar.gz]
+md5=f4cbf05743ccb34282e4dc3aef489f72
+sha256=6633c4124c41d9a1ca526161062fd276f352b4228bde4f565d38d35c15a3005c
+
+[http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz]
+md5=156b249b3b0bcd48b06badd2db0d56c5
+sha256=07719b08b1cff6a21c08697a7bcb4395425b07ee753106262fb62a03a7d32360
+
+[http://www.agentpp.com/libdes-l-4.01.tar.gz]
+md5=6c5b6fff276c3a1171ceb41c6d4b6e34
+sha256=76866075a54aa04f4f18f2cf09cf19c84dee4ed22c45b741dc4067f5e224430d
+
+[http://www.agentpp.com/snmp++v3.2.10.tar.gz]
+md5=6df271fd6a92d7641d7b060dedf7fec6
+sha256=7eedc4ece1c82668c06222ef85457206139253e24a50e5b5d2401a41baee28c1
+
+[http://www.agere.com/mobility/docs/wl_lkm_718_release.tar.gz]
+md5=049c6c3d410e9f46884627b57485d3e7
+sha256=a28c7ea94d57a5354b7de06cf5f6416d80a40596911c129d4b6a4087dc916831
+
+[http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gz]
+md5=35df77e7f0e59c0ec4f80313be52c10a
+sha256=0d0fcbb41cba4a81c4ab494459472086f377f9edb78a2e2238ed19b58956b0be
+
+[http://www.amd.com/files/connectivitysolutions/geode/Patches_Linux_2.4.24_1.00.tar.gz]
+md5=5e47d51daf090c25635cf2c3597150bc
+sha256=5194ae0f07aaf274e46712cd3f2be553ca75970d2124ac388ce444adee5e2878
+
+[http://www.amd.com/files/connectivitysolutions/geode/geode_lx/AES_Linux_LX_02.01.0100.tar.gz]
+md5=12cb241a9037fffe31ba7c68a48ed614
+sha256=a6068b4aa0e2330eed6e4741bad3191dc9ca7d7326f7bfab578ac55e2b8b91a2
+
+[http://www.amd.com/files/connectivitysolutions/geode/geode_lx/AccessBus_Linux_5536_01.00.0401.tar.gz]
+md5=9e738b508a6031946ad15b6591d0e5d4
+sha256=d1edbe9c1c17cc3cc712b0b776c3eeab1f928f9e0a32467a4cb5a201c2902ab8
+
+[http://www.amd.com/files/connectivitysolutions/geode/geode_lx/Audio_LinuxALSA_5536_1.00.0500.tar.gz]
+md5=8bd2a92fb94faa1b4fc43865d40bd988
+sha256=a317cd11719659892bdae6ec54ee2e37549d0df7d5bdce02036963acc2ad1486
+
+[http://www.amd.com/files/connectivitysolutions/geode/geode_lx/Patches_Linux2.6.11_Common_02.03.0100.patch]
+md5=e26f719ad845910de35ab123e548794b
+sha256=7bae2d456ede67312e1b34e4bfc277af7331e0eee55b95226de392e2d4fee340
+
+[http://www.amk.ca/files/python/crypto/pycrypto-1.9a6.tar.gz]
+md5=cdcebdfd63e74754f57b9e9b0db4ea20
+sha256=a6d7db68c87699e283a1f58b637a7e730c350899fd7b35b88e63caa0e85a9ab9
+
+[http://www.andrewchatham.com/pyogg/download/pyao-0.82.tar.gz]
+md5=8e00f5154401a6f6d99efd20606e2819
+sha256=9a444518252f6d747e76a219e5efbc05b4e1742260a7419da9ddf93a519b30c5
+
+[http://www.andrewchatham.com/pyogg/download/pyogg-1.3.tar.gz]
+md5=45a4ecc4d0600661199e4040a81ea3fe
+sha256=10051f2894e901037dfa05b3c604fbdd76d891b9db2213a3c4f24ae79fbcc2a4
+
+[http://www.andrewchatham.com/pyogg/download/pyvorbis-1.3.tar.gz]
+md5=3ddd0dc996b57827c324910cc899d40b
+sha256=c7816f5ad6e45634d88de80cff288b1e1a30bf0afb80f7ca3773e634779d64c0
+
+[http://www.antlr.org/download/antlr-2.7.5.tar.gz]
+md5=1ef201f29283179c8e5ab618529cac78
+sha256=744d8f3a8206fbc45a5558d92163d5ef7e5e0cc0700283bb6a617fb1201629f9
+
+[http://www.apache.org/dist/apr/apr-0.9.12.tar.bz2]
+md5=63fef787c263bd8025c6ab6a6cecdd01
+sha256=cd1da2119dd812127ab6e6e8cbb954d9b74fe01ec744364ba79c9845865ffdaa
+
+[http://www.apache.org/dist/apr/apr-1.2.7.tar.bz2]
+md5=e77887dbafc515c63feac84686bcb3bc
+sha256=384437f3c4eb7d53ad27fdadce6cbc295ef16653b7f7739a480d91c784082ec9
+
+[http://www.apache.org/dist/apr/apr-util-0.9.12.tar.gz]
+md5=8e9cc71a1303b67b3278fbeab9799f2e
+sha256=5768fcc4d38fa6f811b0a89e2ef450d0f52688ff9263e548819adb096fbfc9c3
+
+[http://www.apache.org/dist/apr/apr-util-1.2.7.tar.gz]
+md5=c3702668a640be1695956115857ec22e
+sha256=8cd84eb2031a91572e1be2975f4171730a9be72c4cd88718c4c40ac7dc4fd7d3
+
+[http://www.apache.org/dist/httpd/httpd-2.2.3.tar.bz2]
+md5=887bf4a85505e97babe1d90635361c0d
+sha256=dd86e8221f9efb85497c46229d0f04237d4e66d293fabe98eb0745166aaf4b6c
+
+[http://www.axint.net/apache/xml/xerces-c/source/xerces-c-src_2_7_0.tar.gz]
+md5=04169609449a8846bc1e6891c04cadf4
+sha256=77fae8a1e7aa58007115c939aa68fd5028da79c481fc457dfce546b50c9dfda5
+
+[http://www.ba.cnr.it/~paolo/pmacct/pmacct-0.7.9.tar.gz]
+md5=4964e093254d04873d34f282a7110413
+sha256=63ed71d9b9c0f0e1283a5345f27e7e95f71a2cda8bab4150e2a4937cd8834b5d
+
+[http://www.balabit.com/downloads/libol/0.3/libol-0.3.16.tar.gz]
+md5=1f29be3f4bcddb5b2f3d965e78f04006
+sha256=68bebda39f43fd5fa13b4011a91c40b2684fe262af2a409e282f7d9a7d28ec9e
+
+[http://www.balabit.com/downloads/libol/0.3/libol-0.3.18.tar.gz]
+md5=cbadf4b7ea276dfa85acc38a1cc5ff17
+sha256=9de3bf13297ff882e02a1e6e5f6bf760a544aff92a9d8a1cf4328a32005cefe7
+
+[http://www.balabit.com/downloads/syslog-ng/1.6/src/syslog-ng-1.6.11.tar.gz]
+md5=8f9ca6140f428dc9adec9fa1c270a2dd
+sha256=dd37f1e280bd6c2d66c9a15aa3ee9e209a1b649e3b79e70fee58aea1cb0ea093
+
+[http://www.balabit.com/downloads/syslog-ng/1.6/src/syslog-ng-1.6.8.tar.gz]
+md5=ffbad7e8e6dcbe385820b8ffba23b622
+sha256=3c841fd89599ffb770cdf2844426980d75dc3dab12e0f707e4cbb51937f6125e
+
+[http://www.balabit.com/downloads/syslog-ng/2.0/src/eventlog-0.2.5.tar.gz]
+md5=a6bdba91f88540cc69b398fd138d86cd
+sha256=914319726bcd01a4055b1c5e09671085875af6de2b0d8589841916139574ee11
+
+[http://www.bangstate.com/changedfiles-1.0-rc1.tar.gz]
+md5=e44e2a833151632dae7b68e815400bc1
+sha256=26991b827f96a49ebd164409852d781b0a74a765c385c56c21a7ae44d030ab42
+
+[http://www.bedroomlan.org/~alexios/files/SOFTWARE/ttyconv/ttyconv_0.2.3.tar.gz]
+md5=7997ba54401a7685290a6666b9d28585
+sha256=d91b4addcbb241b04b6cf795447163ed890a436b10205d2cd9cc1885ea3d9433
+
+[http://www.bitchx.org/files/source/ircii-pana-1.1-final.tar.gz]
+md5=611d2dda222f00c10140236f4c331572
+sha256=7464cd75a10f2d117a10cf0184e5d4b9ece44de03a226402c17bdd3f2c7eca57
+
+[http://www.blackie.dk/Zaurus/custominput/custominput-1.1.0.tgz]
+md5=7a0f97339a1caed5695715581306b83e
+sha256=9af88287720701691b58ee13898d248dd9afc63d9c593eb79c1149cc2a7f4e92
+
+[http://www.boa.org/boa-0.94.13.tar.gz]
+md5=c8d6f46f9aa60909f171529068813fe0
+sha256=e00bb50eb859c736f2afc913976e82e8fc68a1fbe34fa294e014aa95f4d87366
+
+[http://www.boutell.com/gd/http/gd-2.0.21.tar.gz]
+md5=3134158635f5048dba99281c6b712a54
+sha256=c3b8b7b57019927dad40870c379eecfa6389443f7e2096aa0157a0224d400da1
+
+[http://www.boutell.com/gd/http/gd-2.0.22.tar.gz]
+md5=e1a41daf3bfc221afaf56751dc506f95
+sha256=e6bff5c00d7d93bade78535573494673f581118c38a8ca13c3afd63809335ba0
+
+[http://www.boutell.com/gd/http/gd-2.0.33.tar.gz]
+md5=be0a6d326cd8567e736fbc75df0a5c45
+sha256=2ba10c830e24781ec2e0594c6e49353e512e8bda782bc9a1851e70a5e8ced93e
+
+[http://www.busybox.net/downloads/busybox-1.00.tar.gz]
+md5=fa62459e098fc00b22772aaf2e75bc98
+sha256=f3e1592607d42cab45387790af0cb0fea2d061f70f8679672a4397bcfe3562e5
+
+[http://www.busybox.net/downloads/busybox-1.01.tar.gz]
+md5=63041103f88192d209f6b1d7944fd118
+sha256=1d7c1b1931549ac294f438c50148da052f69f501676ba361034ef72b111605d3
+
+[http://www.busybox.net/downloads/busybox-1.2.0.tar.gz]
+md5=6af69ebbbf8adc874ccb6d67dca95df5
+sha256=df6e3b0079194251a2ff68d7be7b06025c79f4fe62f4a73158ee52ff4bc515a0
+
+[http://www.busybox.net/downloads/busybox-1.2.1.tar.gz]
+md5=b9c853b2c453e80381077288f40035b3
+sha256=984b7974670d4f0291094ea2a36ee21fe46591f36cb51f95292dbe143c1eeab4
+
+[http://www.busybox.net/downloads/busybox-1.5.0.tar.gz]
+md5=158ccadd830fe6cb3d21a109f398e037
+sha256=08ef1e87c7198fb6d7c0a5f830fc2d99e5fd077dbb7d4ca1b66117ae924f6df3
+
+[http://www.caliban.org/files/bash/bash-completion-20040711.tar.gz]
+md5=90ee706965dbf7b24515220d3bdc1f85
+sha256=8e4ddca8aa5ae4261bfcba056292aec4c8bf26fe847e01b67f4b3065fc512a54
+
+[http://www.caside.lancs.ac.uk/bt/obexpush.tar.gz]
+md5=edb66ba97fe6c84b6160c670c4bcdea8
+sha256=341c6865aa392b6cf056e1bd9cda53d2f31a942460087ad22d6f6dc91bb0bd0e
+
+[http://www.catb.org/~esr/gif2png/gif2png-2.5.1.tar.gz]
+md5=85bb8ee345fc41c218de19dda0164806
+sha256=90825b05b675890bd405767a973d3c8c90eae36d22a7be6307e07a2e3c760d89
+
+[http://www.cgicc.org/files/cgicc-3.2.3.tar.bz2]
+md5=cd7a7a5a1fd186bd8f481c4e17354a0b
+sha256=88fc878aa30d9529d3599891732143c5ac602f4d863126ca2a51d7f7692b7b2d
+
+[http://www.cgsecurity.org/testdisk-6.6-WIP.tar.bz2]
+md5=3cc59a7e425c49dbdf76b54d85b55619
+sha256=2b472be7105eaa88e0c9cca241225c56fdcb80d34dec60ef1d865b0877be771c
+
+[http://www.cherokee-project.com/download/0.5/0.5.3/cherokee-0.5.3.tar.gz]
+md5=9e8dfc46f94ee150515be5d31bd40d16
+sha256=c91699fe8cd2140e3b236257e7cb5ca4cd42e587a8f3eb932363f82f0e7212ef
+
+[http://www.cherokee-project.com/download/0.5/0.5.5/cherokee-0.5.5.tar.gz]
+md5=fb891b3da7eb921c09a5eb93e296f5e1
+sha256=e9c6feee2a626a38cd69c726ed31ffbbf55d288386f50fe6f90fa63de410d67a
+
+[http://www.chillispot.org/download/chillispot-0.98.tar.gz]
+md5=4bcf48ec7a94f28faee8b7dc7a0dd97a
+sha256=bace8a6a0b27d09983a2c509d6e6bf8ab786935e269036f14dc158505feba602
+
+[http://www.chillispot.org/download/chillispot-1.0RC3.tar.gz]
+md5=9ad5f4181ae2e9e2d5ccb165c37dfdde
+sha256=395d082c2355369f958d8f12583f07bbac6c00f901266592959bfba09b825bb7
+
+[http://www.cinlug.org/modules/Static_Docs/data/db/zddice/zddice_1.0.0_arm.src.tar.gz]
+md5=791e8986c6e16dcd1c9878126725e06b
+sha256=eba57692dadd21df8d4afaea4daf8db5179c7398e11cd019fd462aa6947f4119
+
+[http://www.cinlug.org/modules/Static_Docs/data/db/zgs/zgscore_1.0.2_arm.src.tar.gz]
+md5=98e9dd2db54015c0f5193c5427f02d50
+sha256=a2683b8a6a172017f0fe6392fb07d87a5c02fc2714fbff4c98dcae67db588636
+
+[http://www.cinlug.org/modules/Static_Docs/data/db/zlaps/zlaps_1.0.0_arm.src.tar.gz]
+md5=6c3d5a05da141c7d3ceac0db3d587441
+sha256=23252f3d76c863f88daae8384c0c02a93638a883048a084a0f2fcfbd804eb5ae
+
+[http://www.claws-mail.org/downloads/plugins/gtkhtml2_viewer-0.14.1.tar.gz]
+md5=6282cc4d9e9cc9445c9d3736ac3aadf3
+sha256=a9cbed1b4d3491b4e22b80c9f066224ffb80eb7e1113869534ce53b599c7ea5b
+
+[http://www.claws-mail.org/downloads/plugins/maildir-0.24.4.tar.gz]
+md5=de207f0148ef52dfda3aba85509d53be
+sha256=f98e843a9b3012f61b1223958275687dcc0b6af46d12f1a84037e002b257a47d
+
+[http://www.claws-mail.org/downloads/plugins/mailmbox-1.12.4.tar.gz]
+md5=9802b55e3872dc2ea04e2cb457869ae5
+sha256=f066c03bfe4c8efb0c6a7ca2971cb03fb723fda9591e0c57a7afeec05f606adc
+
+[http://www.claws-mail.org/downloads/plugins/rssyl-0.10.tar.gz]
+md5=01a123319f2a32ecff7e560b95c2e4df
+sha256=d6bfdee4fd31c0e0089c6edab594eefaa5b7b95f0b783f1156dffadf1a90d820
+
+[http://www.clearsilver.net/downloads/clearsilver-0.10.3.tar.gz]
+md5=ff4104b0e58bca1b61d528edbd902769
+sha256=71d8c6459a4be1912dbc445e2e9d46303be6623cea51563c21abe39c8b5b0bd2
+
+[http://www.cmake.org/files/v2.2/cmake-2.2.3.tar.gz]
+md5=c0b57a115e24005f9828ca7b53908779
+sha256=f0127ba9cd9936b08f982999f6fd9004c8c4b97401e68bda4d91eec29300d8bd
+
+[http://www.codemonkey.org.uk/projects/fsx/fsx-linux.c]
+md5=0ee07cbdfe8c5f838f653c0fb7328c4d
+sha256=fa1b97a6d9d2f7d7699f6b0ccd433ab132c7d10835b449ed14b12b48e7749aad
+
+[http://www.conserver.com/conserver-8.1.14.tar.gz]
+md5=f7825728e5af8992ed4a99fb560a3df8
+sha256=48a9e2f8a02054bc6740ae354433bfa1636a6e726f2d62af22752d7a6103410b
+
+[http://www.conserver.com/conserver-8.1.2.tar.gz]
+md5=7f53d7a0bb05ad16116fb99f17bf06f0
+sha256=cb007ea21edb0e11f9e3a8a72c1623ce2718c49b7ddcabe6b815504b13d47c56
+
+[http://www.cosmicpenguin.net/pub/bootmenu/bootmenu-0.6.tar.gz]
+md5=d7d8343f90a149c1604e5a14ea2f967d
+sha256=3ff618bcbf9926f356aec2a604b1f1d617e3f87ad545b1d96c066ed712675845
+
+[http://www.cosmicpenguin.net/pub/bootmenu/bootmenu-0.7.tar.gz]
+md5=4bc23a411468c7fb579ec6c10d2684e2
+sha256=4e329b19c810d2a8dd5b9e98e56cfc5d6389798947e400e5fe541dbc1307278f
+
+[http://www.cpan.org/authors/id/G/GU/GUIDO/libintl-perl-1.16.tar.gz]
+md5=7dfcd9ac3a4ff41038a2c67a733d42b9
+sha256=1a64895c9a6cdbb5cdfff81f1520541fee28e85fb940d9b0484de656d69ae8f5
+
+[http://www.cpan.org/modules/by-module/Mail/Mail-Sendmail-0.79.tar.gz]
+md5=038f261afd091d8fad347d6c66d2833d
+sha256=8a5eb39d3b9a3a4219c6d6051328c62bd51e9b53723ee5b42cd66e8672e681b9
+
+[http://www.cpan.org/modules/by-module/NetServer/NetServer-Generic-1.03.tar.gz]
+md5=bbb47b15e1b624e1b728d8ef6ea93268
+sha256=174415168e1fc0451f3f6e34beb5c8779b83521a477243cf4ef865be4e161834
+
+[http://www.cpan.org/modules/by-module/XML/XML-Parser-2.34.tar.gz]
+md5=84d9e0001fe01c14867256c3fe115899
+sha256=55386de7bf78f67ad2b9ef664a578db66ee53f512a28eb067cd2303f5e23d740
+
+[http://www.crosswire.org/ftpmirror/pub/sword/source/v1.5/sword-1.5.8.tar.gz]
+md5=c36398c84bfb044c0c66ef3ffcf29400
+sha256=aeb57fe89716807f331eb17fcf23ef1ba3ad3e7018cd2d32560677ffe6937ce9
+
+[http://www.crosswire.org/ftpmirror/pub/sword/source/v1.5/sword-1.5.9.tar.gz]
+md5=e1f1af8c2add8310d0bbcddc9af523b8
+sha256=dd170431235cc419cbe6c40362640927a78dc93e082623709abe1310fe804481
+
+[http://www.crosswire.org/~dglassey/sword-1.5.7a.tar.gz]
+md5=617f87bc1f61fbbaf5f5306e9c7798a3
+sha256=c4db934c775024f5c931b57a2a6bee08e55ee1f1cd2a7e6ee4876729c4faa827
+
+[http://www.cs.csubak.edu/~dgriffi/proj/frotz/files/frotz-2.42.tar.gz]
+md5=a1cf81b39f749ea96e4585238ffc1b3f
+sha256=cbdd2b2911aaf57a3efa6e12d4b45036b80efbb3ede30e88118fc528d90a4768
+
+[http://www.cs.csubak.edu/~dgriffi/proj/frotz/files/frotz-2.43.tar.gz]
+md5=efe51879e012b92bb8d5f4a82e982677
+sha256=f831eae9182e4a1407a34cb1098a4f5ad5ad6c6632e34eed734b9601a06a764b
+
+[http://www.cs.unc.edu/~scheuerm/froot/froot-0.7.1.tar.gz]
+md5=ac310580a6a54b692b977e11a0e80242
+sha256=210a55754c4ff0fa4143c22334a22bb2768f0c8ded2f6efa60144ea1b0abed6a
+
+[http://www.dakotacom.net/~ymg/files/slsnif-0.4.4.tar.gz]
+md5=78eeff8ba36ee0c3a954ec0878d2a997
+sha256=315eb08a14255c137b435cb4f3c1dbfa67427be1c6bec62ff77a54246161c83e
+
+[http://www.deater.net/john/powernowd-0.96.tar.gz]
+md5=9c7131bce36bbb3e8b688478e8dc34c7
+sha256=44ea3e6777c471a514d1e0a53b60cd5a4e2e56802ba23ec67331b69f122ec3d7
+
+[http://www.denx.de/twiki/pub/Know/MiniFOHome/mini_fo-0-6-1-pre1.tar.bz2]
+md5=7e192e01b08023c7f3e63bf1c796bc14
+sha256=68c64a38f0b29347f86871248f0399e7e1b12645dc6263af7b2e4940f1392eaa
+
+[http://www.digital-opsis.com/openembedded/icecc-create-env-0.1.tar.gz]
+md5=641ec45fe377529c7fd914f77b11b44f
+sha256=9ff8360375432a7a5c476cc6d55b3fdea9d6f3edc080d295a60421d8f47b1834
+
+[http://www.dillo.org/download/dillo-0.6.6.tar.gz]
+md5=01d681ba8bec7fdb074d1bbf99c13285
+sha256=bd72287adedccf493f046f0e6ca29ef47f2cd3741c62a98d5eb82a9068846b73
+
+[http://www.dillo.org/download/dillo-0.8.6.tar.bz2]
+md5=b65233d368bbd265a55effcf2c17f84b
+sha256=47e695a5d370eb656f5e41eeb917ad6281b1559bf60172c9eca89b5518a9f9b9
+
+[http://www.directfb.org/download/DirectFB/DirectFB-1.0.0.tar.gz]
+md5=ad746c49dc89ba6f99df71b17bbb1dc8
+sha256=125941749103c08a5263f2ace01aac1533420d2ff6741d2bdde79689e5d02a05
+
+[http://www.directfb.org/downloads/Extras/++DFB-0.9.25.tar.gz]
+md5=c6a2705f6210d8ede50a947b375f1c0b
+sha256=b3dbf01563dd60d63cff543ea8cd0c885381e78ecbbab8ff176e46df3f198a88
+
+[http://www.directfb.org/downloads/Extras/DirectFB-examples-0.9.25.tar.gz]
+md5=835e850fddba8d8214d39ddd0646c3e8
+sha256=f83af60d53ab4319e5d71a4459cc10464ffd683efabacd6bd773bb807f8771fa
+
+[http://www.divmod.org/static/projects/pyflakes/pyflakes-0.2.0.tar.gz]
+md5=da243a4425bda4a714b1338fe73663fa
+sha256=1fe008b728923f25d3c8ebd7f28cc538aa0814f3b090df817e25c266fcaecf6a
+
+[http://www.dotaster.com/~shuu/linux/murasaki/0.8/8/murasaki-0.8.8.tar.gz]
+md5=ea7afa7e0bd9cfa0df7c04a9b270df88
+sha256=2033168723ffd612336acb8a64b33fcd91f7dedeaf78949d3dfce231cb962ce9
+
+[http://www.dtek.chalmers.se/groups/dvd/dist/libdvdread-0.9.6.tar.gz]
+md5=329401b84ad0b00aaccaad58f2fc393c
+sha256=509503979441e078866d75a628d8a6483e67737454feaa5366f609ecf2a0f5cf
+
+[http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.1/ntp-4.1.2.tar.gz]
+md5=98e16c7aa4ecd4c004b51bff18962e95
+sha256=9f4a5271a285d390c9225e3ea28f70049ea377d30fc6de4659007cfff278671a
+
+[http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.0.tar.gz]
+md5=0f8fabe87cf54f409b57c6283f0c0c3d
+sha256=da784d5c0363d4f708a25f3aad23ba9a3486aafd464444d2aa6a9f8d29213f25
+
+[http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.2p3.tar.gz]
+md5=45cee6d1ebf8fe46e412fd818b8e7b74
+sha256=385a606007eb14f5847f033ac6fa8ea48366597ad1f93aa99864e1f82e23ac88
+
+[http://www.egenix.com/files/python/egenix-mx-base-2.0.6.tar.gz]
+md5=66841151728a06f92d0b8dd2ed317a29
+sha256=03b1ab04397745d22d6e76bd71a6e7fbaf6988e0d75bf2d6face1c910309ac36
+
+[http://www.emma-soft.com/projects/epdfview/chrome/site/releases/epdfview-0.1.2.tar.bz2]
+md5=a7d4a62ad148182944ad60f7a3647cba
+sha256=baa8c7f981b3fb9c72a4cf7194c2fa6a3b7aa039f2a266b8ccdf74aec931cbc3
+
+[http://www.emma-soft.com/projects/epdfview/chrome/site/releases/epdfview-0.1.3.tar.bz2]
+md5=33d30b47e39dca2ea680a990ab2d73be
+sha256=69c03286f90945b79f2a757b011eca5778db486977c56a6b72346c5a292a86c3
+
+[http://www.emma-soft.com/projects/epdfview/chrome/site/releases/epdfview-0.1.4.tar.bz2]
+md5=2e1e5500dbab0b1f19b3631df6d8ea02
+sha256=af38ecbffded26fd6caf3216ce0d1286322c461498630a2c83ab8722b8a8b712
+
+[http://www.emma-soft.com/projects/epdfview/chrome/site/releases/epdfview-0.1.5.tar.bz2]
+md5=70b4c5c36781b6e1d5d2ed30a79db9c5
+sha256=d437b49f40f61e3ba5a3ed8edad783895dcbdfc3cd4cbe6ef37a56f7eea59573
+
+[http://www.equi4.com/pub/mk/older/metakit-2.4.9.3.tar.gz]
+md5=89a25775fee5db536937f36deb5223f6
+sha256=4d6c46289b1f1dea4e8bbc78332901491bde0c552727c27431ca9cb0234658da
+
+[http://www.ex-parrot.com/~chris/driftnet/driftnet-0.1.6.tar.gz]
+md5=8e11d77770452f97bb3c23f510489815
+sha256=dbdf7ead3ae14b109f88c86dedeb7524be8c257aa773a781891216f013373d6d
+
+[http://www.ez-ipupdate.com/dist/ez-ipupdate-3.0.10.tar.gz]
+md5=6505c9d18ef6b5ce13fe2a668eb5724b
+sha256=f7ff9bf972139b303616018a6937aa4c6df4e93c935ffd004b30845e2ad41ea6
+
+[http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz]
+md5=d15060a813b91383a9f3c66faf84867e
+sha256=66fc45c6b36a21bf2fbbb68e90f780cc21a9da1fffbae75e76d2b4402d3f05b9
+
+[http://www.ferzkopp.net/~aschiffler/Software/SDL_gfx-2.0/SDL_gfx-2.0.11.tar.gz]
+md5=10f6432ede2b239796f2924bdc7224b4
+sha256=6a3ef9f5556a3d75832b2b9138bdf3551dc59994d2849307f88a9dcd9732d16c
+
+[http://www.fftw.org/fftw-3.1.2.tar.gz]
+md5=08f2e21c9fd02f4be2bd53a62592afa4
+sha256=e1b92e97fe27efcbd150212d0d287ac907bd2fef0af32e16284fef5d1c1c26bf
+
+[http://www.fh-wedel.de/pub/fh-wedel/staff/herbert/misc/cxcrypt-1.0.tar.gz]
+md5=8b90c19943f1b893cd53072de34f2ca6
+sha256=100ec0afc6a5733f2b0c936058d8055d7965078c95ac187a573bf0a5a63cb268
+
+[http://www.freedesktop.org/software/pkgconfig/releases/pkgconfig-0.15.0.tar.gz]
+md5=a7e4f60a6657dbc434334deb594cc242
+sha256=a0aff7f241d74db8fcf42fed4d2c5d7737193a3781faf9a78473ceeab92d152a
+
+[http://www.freedesktop.org/software/startup-notification/releases/startup-notification-0.8.tar.gz]
+md5=9bba52ffe8c096cfeeaf7a1dcd9b943d
+sha256=7b5d0458b7831ed96633fca771e5707bfd2d3c1c91a8442c6f412e6fa98025bf
+
+[http://www.galago-project.org/files/releases/source/eds-feed/eds-feed-0.3.2.tar.gz]
+md5=1f6ac4910dc8bb0276549bd0308f8acb
+sha256=6b7448359284f5af75cbb7027c47616b28aca8b90f9a16b9ec954fa50e455ed3
+
+[http://www.galago-project.org/files/releases/source/galago-daemon/galago-daemon-0.3.4.tar.gz]
+md5=958ea4a9e1be61cb5e5f35f75a9bfede
+sha256=958ae2ddc89d218e7b3fe4f00a61f4ade48c8fefa768854c67425f5495387eed
+
+[http://www.galago-project.org/files/releases/source/libgalago/libgalago-0.3.3.tar.gz]
+md5=94d5223445deb1ed95973424d4958386
+sha256=148bc83e4ab6e87a6f26b60efdffc1258752a42079783e6f2b080f287e8b15fc
+
+[http://www.galago-project.org/files/releases/source/libnotify/libnotify-0.4.2.tar.gz]
+md5=ab588f9ce651feddab6a8225c102d24c
+sha256=e5bce6201e04fda4badcfb265405133ecbc26d413f2f4e0efd3053ad2845c022
+
+[http://www.galago-project.org/files/releases/source/libnotify/libnotify-0.4.3.tar.gz]
+md5=5c81a26b461b2abd4c02a918b8486539
+sha256=15b0492ac252f6e8ce57c106bda0722413196d16d198c97f20a05908d1b977af
+
+[http://www.galago-project.org/files/releases/source/libnotify/libnotify-0.4.4.tar.gz]
+md5=ba76f68b7e3bd284ac2c2a1b9c5ecb06
+sha256=2389a9b8220f776033f728a8d46352cfee5c8705066e34887bfb188f9f0d3856
+
+[http://www.galago-project.org/files/releases/source/notification-daemon/notification-daemon-0.3.5.tar.gz]
+md5=7977c4c15139f9d53ddbfa8af707270f
+sha256=83a15eb99bb7a895d52e31be1c1548789a8bc29e83d30e758cf034a6627a1184
+
+[http://www.galago-project.org/files/releases/source/notification-daemon/notification-daemon-0.3.6.tar.gz]
+md5=a5a9aa63205e624da8468e35722b08bf
+sha256=a187976c1957a7a0e17014ed97cbb4341f6898d5f60301f1b0c37e52188ebd13
+
+[http://www.gdal.org/dl/gdal-1.3.2.tar.gz]
+md5=67ed02dcea21e93f5e123bb0d322898a
+sha256=00f2b73fea5eff79ae26338928187f956427421bc70ddab0ab63fe5a58112b87
+
+[http://www.geda.seul.org/devel/20050820/geda-20050820.tar.gz]
+md5=e8d903d84515cc518e545b6f2e3d7a9d
+sha256=8e46a48d581f8b835f305bb17ffbb7776d53b9214113524819e96be842f9db98
+
+[http://www.geda.seul.org/devel/20050820/geda-gattrib-20050820.tar.gz]
+md5=6ff8e6343b621199dde7fcd9a7ff264a
+sha256=c3b2751303d18c5d685b2d2c380065a93dab17a233657a6d1a09d9f2da64800f
+
+[http://www.geda.seul.org/devel/20050820/geda-gnetlist-20050820.tar.gz]
+md5=bac5aa2529ddb5398ce9e1d09a6e6f8c
+sha256=33f9d862d92c0fb0b56268b73ed43083a84ed9eed15043e0eb6064991a210b69
+
+[http://www.geda.seul.org/devel/20050820/geda-gschem-20050820.tar.gz]
+md5=8ac2387999ec98016c3b004c95fab424
+sha256=166abaa8b0c98e6c826a7c7273b7ddfb57f82be9929e4afbf00e0e3de5d45ef9
+
+[http://www.geda.seul.org/devel/20050820/geda-gsymcheck-20050820.tar.gz]
+md5=c339abc4956987852b948c44118b2e2f
+sha256=3526fd4c30f351c3d548cb2632eda150eb632846b1273349aa2061d0400f9816
+
+[http://www.geda.seul.org/devel/20050820/geda-symbols-20050820.tar.gz]
+md5=a05c9bb11a31c246be3c9a799685bb0e
+sha256=0534ccda5d9136a120abd18ebe3bccd3dbcc6414ec321ad2fd5f9258389ae13d
+
+[http://www.geda.seul.org/devel/20050820/geda-utils-20050820.tar.gz]
+md5=6555466492f3273dbefb772bd4ffd486
+sha256=8140ff430e89c8564efabbc24da0d9b2858d5ac5e982dab9923eaf3b46a8aacb
+
+[http://www.geda.seul.org/devel/20050820/libgeda-20050820.tar.gz]
+md5=356182f379af726045a70de3024c7e6d
+sha256=c2fdec2c186c11aac2f941dc238ee89f51412707bd7c952e02faefa70e38d700
+
+[http://www.gelhaus.net/zaurus/sliderulez-0.92.tar.gz]
+md5=9b48fc595d7291fa8edddfafba2cb7a9
+sha256=28a6af2d1490374de26084e346bbd227586c0f6232dcf4cfebf80413adc7d932
+
+[http://www.geocities.co.jp/SiliconValley-Oakland/4550/inkwp-0.1.1.tar.gz]
+md5=a19896b756f1b29a33411a1fb2842c4b
+sha256=4afa4f4ddfdc40a32ef2c6034b2fa3bca415088b7eac4b7ad2b814202153f1e0
+
+[http://www.geocities.co.jp/SiliconValley-Oakland/8074/src/qmatrix-1.1.0.tar.gz]
+md5=03c874e403fcf1566d96a9a064cf73c9
+sha256=57d9c0be4714f9973ce50f70d77c68b874cc5456cab2d210861a4b1ee32cb67f
+
+[http://www.geocities.com/SiliconValley/Lakes/5147/sidplay/packages/libsidplay-1.36.59.tgz]
+md5=37c51ba4bd57164b1b0bb7b43b9adece
+sha256=3da9b38d4eb5bf9e936b9604ba92da0594ef38047d50cf806a8e11c400008024
+
+[http://www.gftp.org/gftp-2.0.18.tar.bz2]
+md5=44b19442d06f6dc68c7211d66029d826
+sha256=8145e18d1edf13e8cb6cd7a69bb69de5c46307086997755654488fb8282d38a2
+
+[http://www.gnokii.org/download/gnokii/0.6.x/gnokii-0.6.4.tar.bz2]
+md5=7f2a8cee97e62ebfa284363dc93b3178
+sha256=9605f7aee1b8d58cac10dd514c2bdfa340089d85b149db828816d18ac3ebaff8
+
+[http://www.gnokii.org/download/gnokii/gnokii-0.6.14.tar.bz2]
+md5=89449d613c7a7e765a0d8da57ef1bb88
+sha256=cea63cddf79864d306198c7a84091af0b4685816b352ae253a3e2bfac5e67cb7
+
+[http://www.gnomepro.com/tsclient/tsclient-0.132.tar.gz]
+md5=748aada74e9e096467a9d553538df885
+sha256=da12dc1257ffb9dd3f9acfc53c7f420b234738a67ffbbe0e9dd96e18d04ebad0
+
+[http://www.gnomepro.com/tsclient/tsclient-0.140.tar.gz]
+md5=c10a5a151a1ece653f62e07b11228534
+sha256=4a94b68885e101dda429493caff18b5254c1240aafdb98a74ea0d775dd83b713
+
+[http://www.gpsdrive.cc/gpsdrive-2.10pre2.tar.gz]
+md5=28b13b7253c8f019433be68686070558
+sha256=5f53807375473b00f3748456fc8de33e7af300686032d74557fe5f0a931b3227
+
+[http://www.handhelds.org/pub/packages/ipkg/ipkg-0.99.163.tar.gz]
+md5=0b10ad2924611bccaea8ddf98481a192
+sha256=405743e1ba320ed6095d42a898f1486e3af1d745cae2bd45dfe1d8403a4d8995
+
+[http://www.handhelds.org/~mallum/downloadables/xmonobut/xmonobut-0.4.tar.gz]
+md5=2d9472aa72a7d530509aa12df58efdf1
+sha256=c26fd58cd16b13fe305b7dadcabc1764552cdd30b55e798cb218df3cb0c88f03
+
+[http://www.handhelds.org/~mmp/files/NetworkManager-0.6.4-gpe.tar.gz]
+md5=832c91aa660c7b4e7220fa1263101fe3
+sha256=59eddefa715b3810af20b2b190ae16b46d0b733144d36dc7ddd51b32adac013e
+
+[http://www.handhelds.org/~mmp/files/libhal-nm-0.0.2.tar.gz]
+md5=2f0882a711759113b2388a790abe8fd8
+sha256=68dd467cf8bd54283da874af54ac35de58b88444371ea48bb5cef289a0942981
+
+[http://www.handhelds.org/~philippe/sources/xmonobut-0.4.1.tar.gz]
+md5=41d9da556205c7cfcb86362387fa6493
+sha256=5002223fd102fc5bd454a8b62feb9d281f454769624a071804d6bfc82416a0b4
+
+[http://www.holgerschurig.de/files/linux/patcher-20040913.tar.bz2]
+md5=08649756a41358b24e1857201a90f8bf
+sha256=bad7cc70c773ecc05edf7d511f37f50a3e753fa8cddea0a81f2fc8f582a10489
+
+[http://www.holtmann.org/linux/bluetooth/bt950-0.1.tar.gz]
+md5=41d6a2dfe88693b5ec999d9ae4e97aac
+sha256=e3ff9a7f6dead90d55f1a4a2b1277e3bf5f0ec44ccb6ba8f375acbbedb1263c1
+
+[http://www.holtschneider.com/notez/notez-1.1.0.tar.gz]
+md5=c348a626fc09265fa74a12470c83c113
+sha256=11ee0a660faca7993a2f525d2964391d135b9552d9e94abad6cb6c5f3983f964
+
+[http://www.hostname.org/fake_connect/fakeconnect-1.2.1.tar.gz]
+md5=55220ebadef5f541d705b72fe222b5b1
+sha256=4b891e1d58c8cdf397737ac81a9328d8c663743b41f835bb2267831866d75a3e
+
+[http://www.hping.org/hping2.0.0-rc3.tar.gz]
+md5=029bf240f2e0545b664b2f8b9118d9e8
+sha256=f59292de39b9a4010414bd120a494226399767148efa37278bd53d9613167964
+
+[http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc6.5.tar.gz]
+md5=00bf95cdcbedfa7321d14e0133b31cdb
+sha256=217df8b36d848a85eb81ec6fa2a411e9bf186a747c2ddb223cb82b5001e4d80b
+
+[http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc6.7.tar.gz]
+md5=be780413a0360306ad3b701e45fa8871
+sha256=b678dd4354e0305fc57fef9aa4fd1f316e8a5de33e5048e712fbc32d42ecea7c
+
+[http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.26.tar.gz]
+md5=a037f5c19ab8f3a89acb09e8cfd22d5b
+sha256=8942ca7cb87c2771b1e2d3cc91f895ed5e5f95dedf40762c6f5e9d6395382f6d
+
+[http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.27.tar.gz]
+md5=29891b66f23565e7e381d28404abb29a
+sha256=f3d6639079d4662458cd60d691644abbacb0ede7ec401fa861a10995c1db6ba5
+
+[http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.28.pre13.tar.gz]
+md5=eb2c01c2945df2682a9b3c75515fd389
+sha256=b993c360748161d03b9e5fddb9ac21f7a6727f11a792ede5595b4051579be6a6
+
+[http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.pre10.tar.gz]
+md5=d04cddba74f3d93a13a298dc1b905cc4
+sha256=1f767da365a8cdc62569b366ded609873f56ed033b0b9e66c18f63ccb604f11b
+
+[http://www.hwaci.com/sw/sqlite/sqlite-2.8.15.tar.gz]
+md5=0afa73e107bd106031d046c8ca6a94ab
+sha256=8ba158121f3b20b852bd4dae9c32b5b86a6807a5deebb57f07f667a09672ea4c
+
+[http://www.hwaci.com/sw/sqlite/sqlite-2.8.16.tar.gz]
+md5=9c79b461ff30240a6f9d70dd67f8faea
+sha256=d26e8a6fac1ad497a3ade719da4f1d6d60f586fd10f66253f1c3d3db7168984e
+
+[http://www.hwaci.com/sw/sqlite/sqlite-2.8.17.tar.gz]
+md5=838dbac20b56d2c4292e98848505a05b
+sha256=3f35ebfb67867fb5b583a03e480f900206af637efe7179b32294a6a0cf806f37
+
+[http://www.hwaci.com/sw/sqlite/sqlite-2.8.9.tar.gz]
+md5=0b19989fe083fd547d3baff619d62cda
+sha256=bec2e60f5ed26d4756654892ae62ff00e76a2666c81428622b4f813689b797de
+
+[http://www.ibiblio.org/pub/Linux/devel/lang/c/cflow-2.0.tar.gz]
+md5=09d6131980aa770289938f71401e8976
+sha256=f377e4be57862a260e924c3778a241a2a424772fb98ba8b8cc5f04050ff12ac5
+
+[http://www.ibiblio.org/pub/Linux/system/daemons/sysklogd-1.4.1.tar.gz]
+md5=d214aa40beabf7bdb0c9b3c64432c774
+sha256=44357e0fae8c8f0e315bf130b4e86a4f96b91d66eeb4e473def4ce8336fff102
+
+[http://www.ibiblio.org/pub/Linux/system/daemons/watchdog/watchdog-5.2.6.tar.gz]
+md5=5a1a4476087973852e30f8cdb5b0ff92
+sha256=c762525fdbf5f5dd32c6c950f2a63d8c1b15ec3dc7afca5d2dc3dbd1b129a00d
+
+[http://www.ibiblio.org/pub/Linux/system/network/misc/wakelan-1.1.tar.gz]
+md5=4a3a31d874967cd6ac761b7d4323e0d5
+sha256=3df5eb8f877648799ab623cf1718ecc6f86eb0c2f51d344d8e860442dcc5cd6f
+
+[http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-4.6.0.tar.gz]
+md5=70804dc9e2049e24f294ff7090a82a12
+sha256=396a2de3eed6d5d3c4604b372e11f6c0f18644ef3d8ee14978b715ec26aa0974
+
+[http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-4.6.1.tar.gz]
+md5=18b20db6e40480a53bac2870c56fc3c4
+sha256=086ab03daaac28a28c0ddb9a709040b59e1322f6bfa68e39d004d9c66b119e7e
+
+[http://www.ijg.org/files/jpegsrc.v6b.tar.gz]
+md5=dbd5f3b47ed13132f04c685d608a7547
+sha256=75c3ec241e9996504fe02a9ed4d12f16b74ade713972f3db9e65ce95cd27e35d
+
+[http://www.intra2net.com/de/produkte/opensource/ftdi/TGZ/ftdi_eeprom-0.2.tar.gz]
+md5=d133e77f625c496ae9d58629d7443596
+sha256=b3e0409d69783ecfa90c893c817bb584296b4c45d9f17b0f2fdd7c07ef411a3f
+
+[http://www.intra2net.com/de/produkte/opensource/ftdi/TGZ/libftdi-0.8.tar.gz]
+md5=0de290c864b64efbd02c265a683478a3
+sha256=c0516891d36c6987f7a573dab556630a1e5390b0cb2ef6ffcf177ae018622979
+
+[http://www.iozone.org/src/current/iozone3_263.tar]
+md5=44fd88df361ec4508e10c8d6615245fa
+sha256=920fde1a3843539570e2df4aa611e74df102e52d363c5973d5a9d15bdf976461
+
+[http://www.irssi.org/files/irssi-0.8.10.tar.bz2]
+md5=4b83d4047670eb75bd14ae1bdd68dc38
+sha256=47344b444d78ad5965eb40cc4c8df8450fdc54135e2b058710ee8c500b958d6c
+
+[http://www.isely.net/downloads/pvrusb2-mci-20050911.tar.bz2]
+md5=8522d37df012c70a954a966d40df1ad3
+sha256=2831d99c1f60074f6f348643b13ae7d6ff1224075ae153125dd59db5f21efa3c
+
+[http://www.isely.net/downloads/pvrusb2-mci-20050921.tar.bz2]
+md5=4ca12aedfb41e55ce49bbb8d75d3c4f6
+sha256=e20c6f60b93b0e85aa93c482e4a16a117c955c77d08c2d2fd6fed54bb14a7ee4
+
+[http://www.isely.net/downloads/pvrusb2-mci-20051016.tar.bz2]
+md5=983adf2ec776da2496b7c42263b4d8f3
+sha256=be8f3ed14623664aeb89d72e7837431be97a1285e7273a70e25b3572a0e40b64
+
+[http://www.isely.net/downloads/pvrusb2-mci-20051113.tar.bz2]
+md5=30e85fc2c581fa48e37d8d895bd47b0d
+sha256=e32fa324aff803c6aff7c00e8b740bbccdb39dd619b474e3b0061ed5af1bc3fc
+
+[http://www.isely.net/downloads/pvrusb2-mci-20060101.tar.bz2]
+md5=d4557bb7497a8f991c4fdfbeabd2cf47
+sha256=594913a6e4c4eeac70d0b72b96e3abf9b28991c998d7273f1b57ceb255bf1c6b
+
+[http://www.isely.net/downloads/pvrusb2-mci-20060103.tar.bz2]
+md5=74ca87784518920a2d0b117c1033f98c
+sha256=bef886360cab9a8005893ad477b5984a5b4df489bad51f43160903d0e5ed5b1c
+
+[http://www.isely.net/downloads/pvrusb2-mci-20060121.tar.bz2]
+md5=3f88a67067a557517e092bafe6aad651
+sha256=9a65085b186557bf13b14182902ac04cfe8c071b58b5ee32fe8dbb173a37dcfa
+
+[http://www.isely.net/downloads/pvrusb2-mci-20060209.tar.bz2]
+md5=6fc6a4684540eb782ef52f206e0443cb
+sha256=7e9c3f626703507197f253b7ba3cff9459b5d15f13993303be91639aac978763
+
+[http://www.isely.net/downloads/pvrusb2-mci-20060326.tar.bz2]
+md5=291180edf473d702c5c99d7ae1e11f93
+sha256=fc3a61c5407e338dfbd82d365e38287959e3122aad641c5f95c78674e7db048b
+
+[http://www.isely.net/downloads/pvrusb2-mci-20060329.tar.bz2]
+md5=609f332b7cfa12e100ae37b58bcc126b
+sha256=4c1e0a88a239e60e336f634af08de05e65741c19d9626277678ce1f7684a0c88
+
+[http://www.isely.net/downloads/pvrusb2-mci-20060423.tar.bz2]
+md5=0e94972a75042051da3b017ddcd444de
+sha256=3673170003ced7e6af4721aee4de7da79f18a291c3650348747f59116a638223
+
+[http://www.isely.net/downloads/pvrusb2-mci-20060517.tar.bz2]
+md5=bccc0d7c2e8b39a419a449c3ba889d07
+sha256=5bc12a647109915f1dd57c78991d816ab1ef1173c8d7ee18a77f4f678c10683c
+
+[http://www.isely.net/downloads/pvrusb2-mci-20060607.tar.bz2]
+md5=b9187e8b0aacc6744d7df726ec993f0e
+sha256=75e3a5db048f5253f2e4339916e2b94b1f37508e9ce026780a844d07c305ab94
+
+[http://www.isely.net/downloads/pvrusb2-mci-20060626.tar.bz2]
+md5=61e3f9367694537ccd2fbee7abd3e75f
+sha256=820f93704cbf60ca8d228ed0112ed1e96a5684a71c9d3788070acf7004f37550
+
+[http://www.isely.net/downloads/pvrusb2-mci-20060702.tar.bz2]
+md5=b858b031d9c3816832701c5f15c0d8ff
+sha256=219042fda606860d52f4d5a0bdee5bf18bf20ec7caba152a7ebadafc0fd1dd44
+
+[http://www.isely.net/downloads/pvrusb2-mci-20060726.tar.bz2]
+md5=90ad2a77ac4ae508326992a63d02c37a
+sha256=5190166e88f2f5cc1190fe2259b7a8e6796d472ced8436b5f90493075ecc0387
+
+[http://www.isely.net/downloads/pvrusb2-mci-20060903.tar.bz2]
+md5=64805cf3efcd43f39e500229ff511b5a
+sha256=fe73f3e7586cead55920d7fcdaca3924776b55d335d815042d14b16aa68d74fa
+
+[http://www.jdl.com/pub/software/dtc-20070216.tgz]
+md5=8762121262ead127171c4fce40ccc289
+sha256=dd687b4f691bf9970f53ca2c84d8481b9f82d857de347375d29bacf648b8da71
+
+[http://www.kaffe.org/ftp/pub/kaffe/v1.1.x-development/kaffe-1.1.5.tar.gz]
+md5=928c578d4808012fe5ba5587071d2aa2
+sha256=f4ed45720d76f5182f2dede135c1856ad01bdf9875f54459b6baa1071af67280
+
+[http://www.kernel.org/pub/software/scm/git/git-1.4.4.2.tar.bz2]
+md5=c4f72d96f62ae97c6e8d5cdb4afd55ca
+sha256=907138a7537ff8cef5a9bb258cbba3e32fa46b240f66cd16d5bf530e081ac6b9
+
+[http://www.kernelconcepts.de/~fuchs/files/gpe-today-0.11.tar.gz]
+md5=f5a9745d479879aaa1e1287a2c725ea4
+sha256=f9271db0ab5bd4cdc2e09d6185320c2041f62b1e64ba7fb78cab28d104ec7d79
+
+[http://www.kflog.org/fileadmin/user_upload/cumulus_downloads/1.2.1/cumulus-1.2.1.src.tar.bz2]
+md5=a13e49376594c51fbfa74067f8d14d45
+sha256=e3ed263ee98971674f3f3cf55e42b7f2e79755b0f931f8a105676108185e8010
+
+[http://www.kflog.org/fileadmin/user_upload/cumulus_snapshots/cumulus-snapshot.tbz]
+md5=854fd2826d96367999e5c252e16afbf5
+sha256=b82fbb74475244f2631247feaa77be49da3b8fd8ecc5cc9e9103f1d3227e01bf
+
+[http://www.kismetwireless.net/code/kismet-2005-04-R1.tar.gz]
+md5=19b4f192eb11a418ed3f6bf65c1226af
+sha256=921fcd3033ecfd97d33cad2d940c0a5e5bbf8cb36fd7a62646fd486993a5a96f
+
+[http://www.kismetwireless.net/code/kismet-2005-08-R1.tar.gz]
+md5=17edb7688e04dd28028d5268a77d0ce7
+sha256=27e657212881186d356907a7c45b168e7431a2f83f3411d2a90366afccf03916
+
+[http://www.kismetwireless.net/code/kismet-2006-04-R1.tar.gz]
+md5=8ec2de513f2911df1b7edfcba5ad1c26
+sha256=eb8a1c688b07adede53c362355e639d8ac29d30536d69eaee97235d14e6d7e76
+
+[http://www.kismetwireless.net/code/kismet-2007-01-R1b.tar.gz]
+md5=a1dcea71f0c3f881ef72f5bca2db7b39
+sha256=1b998b34e2e9377f5ac7704295d64507234fe7656e49d384f8bf95604e97e05b
+
+[http://www.klografx.net/qiv/download/qiv-1.9-src.tgz]
+md5=b368e00543b2b1d9a87b37fd5ba60c57
+sha256=7ffeb0b90892d71eff4f26227962f5b306d52a55539f1cb2a72993c8252ca518
+
+[http://www.kroah.com/linux-usb/usbview-1.0.tar.gz]
+md5=2ac1bdae03a858b965e895b211a75ad7
+sha256=7a7add52242142f37a7d220c76dfe77090f6592eacdf796e3d07fa61415340fd
+
+[http://www.labyrinth.net.au/~trandor/abuse/files/abuse_sdl-0.7.0.tar.bz2]
+md5=59ea4498886642aa975f04233cc92558
+sha256=bda8a3c42733853444e1d4bee16e85990b78c2eaafc4b26e0769be2e14dab931
+
+[http://www.lachner-net.de/Frames/Software/zshopi_0.2.tar.bz2]
+md5=1343c4de6d586a1b4ed2b5c97d53e717
+sha256=6a136cbc7fdb38c73fe5862f21913e8fe63864063bba833c149c1098d758a12f
+
+[http://www.lantz.com/filemgmt_data/files/slugtool.tar.gz]
+md5=d83e00e9c691984f36cb421d84873bc7
+sha256=0a2080a48f8a52d10d49aa78a66027205920b76c8e901d07fb040759191aad9e
+
+[http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.3.tar.gz]
+md5=d55826ffbd2bdc48b09cc64a9ed9e59e
+sha256=2f710b94f547ec7e39844f7872e1fe8d6fe2a434c896cc8a54b5540854bb5a69
+
+[http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.6.tar.gz]
+md5=2b8beffad9179d80e598c22c80efb135
+sha256=89f94840b1b42ddfe53a8aee415331516f1bbdd942b42d25e74906a332cdf22a
+
+[http://www.libsdl.org/projects/SDL_net/release/SDL_net-1.2.5.tar.gz]
+md5=e45b1048d2747480dcc65ece4130a920
+sha256=397dee6b7ac13dea70dd3dd2ae6044f45a632a1ba156da178c96df66fb8ccdcb
+
+[http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.3.tar.gz]
+md5=29d12d1b883bf834c291c93f52ba8dc5
+sha256=7e2e7b46088a7b9594b255b58123598d49c5c3d11bcc3c9a8f80969cd9caa6c5
+
+[http://www.libsdl.org/release/SDL-1.2.11.tar.gz]
+md5=418b42956b7cd103bfab1b9077ccc149
+sha256=6985823287b224b57390b1c1b6cbc54cc9a7d7757fbf9934ed20754b4cd23730
+
+[http://www.libsdl.org/release/SDL-1.2.7.tar.gz]
+md5=d29b34b6ba3ed213893fc9d8d35e357a
+sha256=f5708b3909261df2043859e771601a5ec973197b2c59d18c6649c1096b5151bd
+
+[http://www.libsdl.org/release/SDL-1.2.9.tar.gz]
+md5=80919ef556425ff82a8555ff40a579a0
+sha256=d5a168968051536641ab5a3ba5fc234383511c77a8bc5ceb8bed619bdd42e5f9
+
+[http://www.libspf2.org/spf/libspf2-1.0.4.tar.gz]
+md5=5fe69ba13bf35d505b733247032a8a64
+sha256=222803a98d1e86ac7eee9491beb5fbf30e259a3c74cd4166bda1796374c26cd1
+
+[http://www.lighttpd.net/download/lighttpd-1.4.13.tar.gz]
+md5=d775d6478391b95d841a1018c8db0b95
+sha256=62d5997fdb41afa9400adcdb040d04a1f5fa950045df96e3e3f593e8f0de5739
+
+[http://www.linuks.mine.nu/modplugplay/modplugplay-1.0.tar.gz]
+md5=ac8e98865d90dca25c85748b3916bf07
+sha256=d78a39b4158901695c59d0757e8fe622e9b4cebcfb77eedfc20b937e5a0d521d
+
+[http://www.linux-projects.org/downloads/sn9c102-1.32.tar.gz]
+md5=4d5b5bb9c70e69435a608c73da73b632
+sha256=780edfac5a67172a49bc4e8b1bd384fa9184ceaf55bf5ab002fd7b8415db7e3b
+
+[http://www.linux-solutions.at/projects/zaurus/source/zuc_V1.1.2ern.tar.gz]
+md5=c4ed24fa825940f4803bd494fd9c12a6
+sha256=8e7d8d05bcc99203f4ca8231647b2a24d51b10abffeb00910cb6eeee85427f86
+
+[http://www.litestream.org/litestream/litestream-1.3RC3.tar.gz]
+md5=68698f62d9eb9e620501f31c6f9acc42
+sha256=ee3edf1ea89a90f2b7f82ad09b83c25dc8ea8ca7cf0fce2aa921f897929b2bb9
+
+[http://www.littlecms.com/lcms-1.15.tar.gz]
+md5=76c921973fdea4f880944a024197f924
+sha256=930ef7de15eb028c1cdbfe3f1170aaa1d5b0b4d45a8fa496d944216e155122c2
+
+[http://www.lua.org/ftp/lua-5.0.2.tar.gz]
+md5=dea74646b7e5c621fef7174df83c34b1
+sha256=a6c85d85f912e1c321723084389d63dee7660b81b8292452b190ea7190dd73bc
+
+[http://www.lysator.liu.se/snes9x/1.43-WIP1/snes9x-1.43-WIP1-src.tar.gz]
+md5=caa2ed89fdc643a18310d2a50db1e02c
+sha256=bc14905c7a7967de59b70909c021d2439d9ec1c9bae835b70cdb786e59caa81c
+
+[http://www.lysator.liu.se/~nisse/archive/lsh-1.5.5.tar.gz]
+md5=a2b1ff6f5dcca6968516b5557c2e7ce7
+sha256=d1c10ca755db2f5fa8aa7c8ef2770d205a9bb9e5a6ed7272a5dda942647df4be
+
+[http://www.maradns.org/download/1.0/maradns-1.0.39.tar.bz2]
+md5=5ac39978f55ecaf6e887cd5be027b1c3
+sha256=4ac5940d25a9b5a52d0ff1f8223bb85462f9cfcceb4ac547e3ca9b6690aad394
+
+[http://www.mbedthis.com/software/appWeb-src-1.2.0-1.tar.gz]
+md5=3fb255992b2af8f61c60a9706effbfa6
+sha256=cc924ea10f77acae123194a33f46d8484642501cc6fe94b47491ecf3ad18419e
+
+[http://www.mbedthis.com/software/appWeb-src-2.0.4-1.tar.gz]
+md5=f2cb79a03bf17c0f66f0a3a1dc1e2c46
+sha256=17da486f983597f28c0efadb261b76b733155be7451ef34eefc65cb4058d883d
+
+[http://www.mega-nerd.com/SRC/libsamplerate-0.1.2.tar.gz]
+md5=06861c2c6b8e5273c9b80cf736b9fd0e
+sha256=98b8766323c78b7b718dfd4ef6b9292bbf0796b742abb2319b8278cbeee731d4
+
+[http://www.mega-nerd.com/libsndfile/libsndfile-1.0.16.tar.gz]
+md5=773b6639672d39b6342030c7fd1e9719
+sha256=79e305112a4d9598b93b614a7747604f9ef10d9a2dee52c5903b554bbeaedd7c
+
+[http://www.metzlerbros.org/dvb/libdvb-0.5.5.1.tar.gz]
+md5=47612d2f8a4d4dee746a166d8b7f6f77
+sha256=941e8020129111377652bd7253ea85e6c133fd1c23c66bd9fc0ca9eabab1385a
+
+[http://www.mneuroth.de/privat/zaurus/qscintilla-1.60-gpl-1.3_zaurus.tar.gz]
+md5=3823bdfc40af13adcfd5f44e6dae5cf0
+sha256=5df3def9192f704c52ee3ddcf4388a2977f237be1663353a97d836b69cc4f811
+
+[http://www.mneuroth.de/privat/zaurus/qscintilla-1.60-gpl-1.3b_zaurus.tar.gz]
+md5=44939519d6623596d874b73695176fef
+sha256=605ce768faedaebcfcff86c3e720c23a114f63850c4f4e975f83de01171a89e0
+
+[http://www.mneuroth.de/privat/zaurus/qscintilla-1.65-gpl-1.6_zaurus.tar.gz]
+md5=999d3a8b916cd1ef13a66843f6f26db7
+sha256=e828dc4aaa7948eafee343e70190dd8003498d50d9258d75d47f05f9970683db
+
+[http://www.mneuroth.de/privat/zaurus/qtplot-0.2.tar.gz]
+md5=0a481885a496092c77eb4017540b5cf6
+sha256=6df317183ff62cc82f3dcf88207a267cd6478cb5147f55d7530c94f1ad5f4132
+
+[http://www.mneuroth.de/privat/zaurus/visiscript_src_0.3.2.tar.gz]
+md5=c43beaef5817fe525099341620e3584b
+sha256=3ec61d179aa29811f1383bd99c529342aecea1b3b4cffaa8670aecd7486d0c94
+
+[http://www.mneuroth.de/privat/zaurus/visiscript_src_0.4.3.tar.gz]
+md5=f625eb9cffa82e35c3c477c58aa98795
+sha256=39f2dfd8aaf41b51aadaa06c862b75d82c8f0ffd268d03d37e5895c038366271
+
+[http://www.mobile-ipv6.org/software/download/mipv6-1.1-v2.4.26.tar.gz]
+md5=d9b86e649ee49cc5be2024d24e55cc3a
+sha256=d801b5ecdfce599b54142d32b0d89966cb33d97cbac94416907666d94c1a80a6
+
+[http://www.monkey.org/~dugsong/dsniff/dsniff-2.3.tar.gz]
+md5=183e336a45e38013f3af840bddec44b4
+sha256=82e492455486e655c315f027d393dbeb49ad930804acccdc51b30d57e1294ff5
+
+[http://www.mowem.de/elitaire/elitaire-0.0.5.tar.bz2]
+md5=3fb7b6073f3171d446698eb963fb087e
+sha256=91f16720df83b15da8747506d17224e2b3e5dd5e606c91a7f76cc7d784aae694
+
+[http://www.mpfr.org/mpfr-2.1.1/mpfr-2.1.1.tar.bz2]
+md5=843422d90349800ee721f6710d051c87
+sha256=df551fb075d5e6d0824b74d231962cf0e104c43f646e233675d952ef3c03debc
+
+[http://www.mr511.de/software/libelf-0.8.3.tar.gz]
+md5=f85d6dc4b4ef1c126080d86cf0ce63fd
+sha256=644262514d0f6c3572f66935921a5290383a15e804e9b085e293ab78102d3513
+
+[http://www.mr511.de/software/libelf-0.8.6.tar.gz]
+md5=d444fb0068cdfed01bb1fd1e91d29270
+sha256=6ff7a5dbb5ccf14995f6bde7f1fca6be5f7f91f62b2680a00d32e82b172c9499
+
+[http://www.muppetlabs.com/~breadbox/pub/software/ELFkickers-2.0a.tar.gz]
+md5=3bf4d8d285591a5b7f31170f9b87aba0
+sha256=c196988f55fc6633d9f9f6d9ddc2ae9b4dfa1f300edf4cbbad865c06a8656df7
+
+[http://www.muru.com/linux/omap/patches/patch-2.6.12-rc2-omap1.bz2]
+md5=39df92d9fa916779ab5e596c21c51081
+sha256=f3d8a74aee678e9d941fe4335d87b481a39fc568c761916dcc05f0cc8e536837
+
+[http://www.muru.com/linux/omap/patches/patch-2.6.12-rc5-omap2.bz2]
+md5=e52cf4f24b46bee3df0d9e9e257eecc3
+sha256=457ec3ccb135b80ce3b5c79ad356b142080405f7bd510b52c349567fff82fa46
+
+[http://www.muru.com/linux/omap/patches/patch-2.6.14-omap2.bz2]
+md5=f9c9b0fe2ce0eef71c50ef45ddd0075d
+sha256=e4ac37531a455776ace04e234001c2849cbe2b1a3563409d23e4a6b3390c3e2d
+
+[http://www.muru.com/linux/omap/patches/patch-2.6.16-omap2.bz2]
+md5=b8de4aa518292ad3aef913645898218a
+sha256=34beecc0dd156267e8004fb79efea9bf97e1157ed597bdde1841c16def2e9195
+
+[http://www.muru.com/linux/omap/patches/patch-2.6.18-omap1.bz2]
+md5=955088e5139ef5914d44fe15b4a50b90
+sha256=924c27b95f0c3792bf3d48ff854ef145e8916452b917067d653f59102f03c0d4
+
+[http://www.muru.com/linux/omap/patches/patch-2.6.19-omap1.bz2]
+md5=3590e42e1a6ea4676df5b187b830b402
+sha256=b7cba2e38e81abb4d1d33c3f7f7c028310b392d5ee1ed5e3b2137e024598d903
+
+[http://www.muru.com/linux/omap/patches/patch-2.6.20-omap1.bz2]
+md5=b220d8b8489003f3df03d897fbefa432
+sha256=f85096df0acc179f676497e75b9ba8d9b8685b92b0b2b8b1d6871619ed879fbd
+
+[http://www.muru.com/linux/omap/patches/patch-2.6.9-omap1.bz2]
+md5=d6249654087f0bcafaa860ac573316a4
+sha256=91806347cb386002a8bfd20ee66e536e4a7dfb01f207dd751341f2971090d9ac
+
+[http://www.musicpd.org/uploads/files/mpc-0.12.0.tar.bz2]
+md5=9ec03c5f3d136a9a58ef665dfb100e52
+sha256=55bdff5fefa619682c4da7cf25c8e1281f21f405e98580b24d3cfb7ff781a87d
+
+[http://www.nano-editor.org/dist/v1.2/nano-1.2.1.tar.gz]
+md5=188d24b9cc4c1041ac58d6b6f7941eb4
+sha256=f12483dbe029836cad6c58e53077281d9e71a062b1145e57342ea9671296ca40
+
+[http://www.nano-editor.org/dist/v1.3/nano-1.3.9.tar.gz]
+md5=8de48d0de02ed2332a4f7a07563c67af
+sha256=7052f6ce989040d9f16c50337c438d030f26e8d2bc90439d25e9c0ae1921eb20
+
+[http://www.netfilter.org/files/iptables-1.2.11.tar.bz2]
+md5=0a5f5f226e41ce408a895bec995e8c05
+sha256=be7bd67232fddbe3ce81f40f5b79123380a2e67cd166ec06e650842f8acb373d
+
+[http://www.netfilter.org/files/iptables-1.2.9.tar.bz2]
+md5=8299db6ffbe98496d7f57dbb00f17e7d
+sha256=56a84c6e8f38357525fbc8839d0c5ae2748097fba97692c78377d7296109fb13
+
+[http://www.netfilter.org/files/iptables-1.3.3.tar.bz2]
+md5=86d88455520cfdc56fd7ae27897a80a4
+sha256=84ac04a28ae41e17df0f181d8bc0049ae7a83baae07296e890ea5977a2952318
+
+[http://www.netsw.org/audio/convert/gsm-1.0.10.tar.gz]
+md5=4b148480f82e96d274248e13880ec873
+sha256=ddab700db455e13bcf9bc0592b320e61c6a7c692fb3cef7881b14b2df1a39069
+
+[http://www.nlnetlabs.nl/downloads/nsd/nsd-2.0.0.tar.gz]
+md5=a09542645b91ff60564b0f4db436af01
+sha256=8f486c4ef4d3f60fba4e0f855399184ca557f03a747cae6adde4cc2dffc53ff2
+
+[http://www.nothingisreal.com/gpp/gpp-2.21.tar.bz2]
+md5=0be03c6da8d1551a262be11798c00478
+sha256=c29373b752730195fc52e6ab0fc871f259284e2175bf2baf1701f027da60d200
+
+[http://www.ntfs-3g.org/ntfs-3g-1.0.tgz]
+md5=873a8de662849d129fc7c475ad3f5447
+sha256=b5bbf81230bb21573d69fc471721b0b0c404eaa5040ef28e7dcec38320a1b2e4
+
+[http://www.oberhumer.com/opensource/lzo/download/lzo-1.08.tar.gz]
+md5=ab94d3da364c7cbd5b78d76f1875b0f6
+sha256=bcead46b0bd887c3987e977a0a7d4c547b0f70f926d45e253784137569f57b9a
+
+[http://www.oesources.org/source/current/xstroke-0.6.tar.gz]
+md5=bdfa8834bc2e78c4874d558025d944e2
+sha256=a3a947e9982fe1feef235fcbcf41b01b5f86ebf46d106fa719801cf061f6bb00
+
+[http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz]
+md5=b5ce6a74abc9b9eb2af94dffdfd372a4
+sha256=c28b36b14bddb014d9e9c97c52459852f97bd405f89113f30bee45ed92728ff1
+
+[http://www.olsr.org/releases/0.4/olsrd-0.4.10.tar.bz2]
+md5=9807d4451e65cb4ec385155eef7bf3cf
+sha256=af04bdd8abd85bb4715fd6011566054847c75fcbac5e5e9cdee80858ac2957d3
+
+[http://www.olsr.org/releases/0.4/olsrd-0.4.8.tar.bz2]
+md5=4d8636af067f90822a47a062497680de
+sha256=b935aaf1e389f767ba8238c7a5c0b4387a345168acddf4f38bb6914149953a28
+
+[http://www.olsr.org/releases/0.4/olsrd-0.4.9.tar.bz2]
+md5=593c0861fa10d2a8d0e7d8617479c5cf
+sha256=b3404a5a5dd78c0e1ba12b8aa1445589fa7861fa4d9ecafb53b38be760876913
+
+[http://www.openembedded.org/sources/libopensync-0.20.tar.gz]
+md5=c685e69929333a763c51987b4a19d50d
+sha256=5da9e72de291e7654fb59bf40b647633f3afb3cde924bd11b80d6ed26c911feb
+
+[http://www.openezx.org/download/boot_usb-0.1.0.tar.bz2]
+md5=83687c351b2bee53f2d9f6418522afe0
+sha256=ca9006b7e5b568a1da84d2b0af00642f143247959ff45f9d9f2e9bd0a33d6c37
+
+[http://www.openezx.org/download/patches-2.6.16-2.6.16.13-ezx9.tar.bz2]
+md5=d63f298e12cf7580a257c901e026b2da
+sha256=e4fc7ea4e9719a038dbe2b5c738cab3d432af47994fb7a45e2dc8233f019ca29
+
+[http://www.openh323.org/bin/pwlib_1.5.2.tar.gz]
+md5=0fa33ba1b32b254abe0b731a52c0f2f9
+sha256=62b254548ad7a9e71231a160275827d67ff39022ee8e2854a7c9d9fe9a688e65
+
+[http://www.openpbx.org/releases/openpbx.org-1.2_rc3.tar.gz]
+md5=e270c40626dfa2131cc39dd1352b46f9
+sha256=934e1e5438c46927236f1f3254265e94c7e38e7c0e02d92abb7efc4e03ce91e9
+
+[http://www.openssl.org/source/openssl-0.9.7e.tar.gz]
+md5=a8777164bca38d84e5eb2b1535223474
+sha256=25121b5dbd2b830929519325e033086ce45861cff2d0000d928f48261b1e0b7c
+
+[http://www.openssl.org/source/openssl-0.9.7g.tar.gz]
+md5=991615f73338a571b6a1be7d74906934
+sha256=e7e1a287141dd1be7f4b4fedd54ec29fa904655ed76a13ac87ae69a3fc76b062
+
+[http://www.openswan.org/download/old/openswan-2.2.0-kernel-2.4-klips.patch.gz]
+md5=5c54040bba6fea2bfb47df01056e953f
+sha256=d35213dc854f1e1a08512154c7a92fb94d9f0506cc5107f8b2f248412679fb53
+
+[http://www.openswan.org/download/old/openswan-2.2.0.tar.gz]
+md5=f5f83204652627cf51d2567c53df5520
+sha256=62d36b998b9ec21864263d17e83aeb30a300a8f0d336a057ca9610b447b9ce7a
+
+[http://www.openswan.org/download/openswan-2.4.7.tar.gz]
+md5=70f22e8adc39e07a165f75eccb7cd079
+sha256=b839b024fd717a404711f5ec14ee9b9e412a080f23e90841cde14f20970dc5dd
+
+[http://www.openzaurus.org/mirror/knights.tar.gz]
+md5=fea3047d5501a1abea868bb661cbc0c8
+sha256=1f6d50b3602f01b852810ab1e62f3328edee5130fe3ba21fd868f376c89e66fd
+
+[http://www.openzaurus.org/mirror/qpf-unifont.tar.bz2]
+md5=92f6df1c5edb26351332df4f576dbb10
+sha256=c1c5b5ab3431896502c9275daeb47610fb2a840faa6d580e140909a3f4ef7391
+
+[http://www.openzaurus.org/mirror/tximage-0.2.tar.gz]
+md5=eca63798136caeeaf7fd4b24c3e10783
+sha256=88b11a3e89db847e1db51e6f2b0c69e2afa0035fb4a47f523d264765eedb2958
+
+[http://www.panix.com/~gesslein/am.tgz]
+md5=f7e4a6e3a214a82b035d0f69ae4bbc13
+sha256=988cce287562f67466ab512b7beef26e793d90c2a0793321c9f404e20d7a4423
+
+[http://www.pdaxrom.org/download/1.1.0beta4/src/mb-applet-tasks-1.0.0.tar.bz2]
+md5=3442d374f459c607395fd56998a6d7b0
+sha256=ae72570a433f4e928c4b424dde003c5035fee765fad23c8df76f4062d67c53a0
+
+[http://www.pellicosystems.com/zaurus/applications/resistorUI_1.5.0-0.9_armSRC.zip]
+md5=3ef812023466905883a19a22ead8615c
+sha256=467910e5f6b6e137db93a1ccaf668d4146c3dd27dfa0f368b2a20a0a14a23592
+
+[http://www.pentest.co.uk/src/btscanner-1.0.tar.gz]
+md5=6bfaaad5a3730f10d07500fb3ec8c797
+sha256=ca7349c3621c929f9fda0345991b35f8a0d38d4a88b6c89b7ca50a7dbcc08832
+
+[http://www.pentest.co.uk/src/btscanner-2.0.tar.bz2]
+md5=1cb558f02bb6707fa1c160b78b490404
+sha256=017b1b022118d7dad371d65ab4b6f4d6d7be99482a4af3facd9360ce55210780
+
+[http://www.physik3.uni-rostock.de/tim/kernel/utils/acct/acct-6.4-pre1.tar.gz]
+md5=9703f591801c5bbded35c9739d04f81c
+sha256=68b1d0acd1a6e17d91412635cd4f65ba58d293e62a01475a43f3712c49a46e7d
+
+[http://www.phystech.com/ftp/dhcpcd-1.3.22-pl4.tar.gz]
+md5=dd627a121e43835bead3ffef5b1a72fd
+sha256=f435e14e1f54dc8792f4e655463d07f2bdbe6d8a8581bd62f5167334ab18bb87
+
+[http://www.piro.hopto.org/~piro/zaurus/qclockchange-0.1a.tar.gz]
+md5=05bb0611a9523ef8c095e768b357ba0d
+sha256=eba68cb125b017743a768bdc3c8788e97674ea499a40a03edee7976bf7b89063
+
+[http://www.pobox.com/~sheff/sw/e2tools/e2tools-0.0.16.tar.gz]
+md5=1829b2b261e0e0d07566066769b5b28b
+sha256=4e3c8e17786ccc03fc9fb4145724edf332bb50e1b3c91b6f33e0e3a54861949b
+
+[http://www.porchdogsoft.com/download/howl-0.9.7.tar.gz]
+md5=85fbe016e2ebad99108b1212ae4b1d6f
+sha256=f8766c44291aac92b2b4abc762e1b11e3504dd9f2a855fdde371b5abd730fe9f
+
+[http://www.porchdogsoft.com/download/howl-1.0.0.tar.gz]
+md5=c389d3ffba0e69a179de2ec650f1fdcc
+sha256=6f0145ab1802092308adeb8dfa285f58e104f0822fa266e5ec97e9d27f0e1923
+
+[http://www.portaudio.com/archives/pa_snapshot_v19.tar.gz]
+md5=016e68eb361d542f8bfc2ef1a7bd6c95
+sha256=31909921a3c00d0ab13e0137541531415648c7bd51802f5ca9a3b11a0d1bd9f0
+
+[http://www.povray.org/redirect/www.povray.org/ftp/pub/povray/Official/Unix/povray-3.6.1.tar.bz2]
+md5=b5789bb7eeaed0809c5c82d0efda571d
+sha256=4e8a7fecd44807343b6867e1f2440aa0e09613d6d69a7385ac48f4e5e7737a73
+
+[http://www.progsoc.org/~wildfire/zeroconf/download/zeroconf-0.6.1.tar.gz]
+md5=31ac40fdaf24b3e666ed83c1320dd7a5
+sha256=3e93416ad44202c2952a1342dad12f2ad0e61dd3f1c59110d9ad8cb1d4c639e5
+
+[http://www.progsoc.org/~wildfire/zeroconf/download/zeroconf-0.9.tar.gz]
+md5=bdafb16b008ebb5633e4e581f77821d2
+sha256=a8c74df127753e2310fa1e072f3c9ca44a404bb0bbce9cfec7a84c6dff8bec7b
+
+[http://www.pygame.org/ftp/pygame-1.6.tar.gz]
+md5=ea5db930c0031873a7f5ad1f2f7926db
+sha256=dff059338cc1b3409567a5b7f12bd23facc21b2c4ad356257fe50e5e85d2ae02
+
+[http://www.pygame.org/ftp/pygame-1.7.1release.tar.gz]
+md5=05d86d1af446f79411359400951053b7
+sha256=11dfa923f5f831d2bedf476978e004efcac4cfa7d1f315dd094262265fcd8042
+
+[http://www.python.org/ftp/python/2.4.4/Python-2.4.4.tar.bz2]
+md5=0ba90c79175c017101100ebf5978e906
+sha256=325fdc7351a08bd8d811e7fb53c41bff11764648ab1a671abd910afec946b38a
+
+[http://www.python.org/ftp/python/2.4/Python-2.4.tar.bz2]
+md5=44c2226eff0f3fc1f2fedaa1ce596533
+sha256=0b2245250d5e800d1b6b6a2c5ca9e697052cae00833bf90ca0488f5bffd38477
+
+[http://www.quagga.net/download${QUAGGASUBDIR}/quagga-0.99.4.tar.gz]
+md5=a75d3f5ed0b3354274c28d195e3f6479
+sha256=4044bfacb44ec9fa9160b56aeb1e76e1ca62b17115ae38298065cbaad16491a7
+
+[http://www.quagga.net/download${QUAGGASUBDIR}/quagga-0.99.6.tar.gz]
+md5=78137ecaa66ff4c3780bd05f60e51cf5
+sha256=a22c927f9ceb7152b0c45c939ccb81217c8d614f3c411c86781b24520f2ec15a
+
+[http://www.rarlab.com/rar/unrarsrc-3.4.3.tar.gz]
+md5=06966791546a7b40a2b0139fba552cb0
+sha256=f53533b44a9c17972aff6ac7047c6ac1e2e5e2930254eccdb1239678a6dd1793
+
+[http://www.realvnc.com/dist/vnc-3.3.7-unixsrc.tar.gz]
+md5=511ffbc8ed8d9df82e7c67852164728c
+sha256=ee1faf72ef745a7d96e44cb4797d92a8cd2c9e290dfe602fae0fd955a11d4f3a
+
+[http://www.red-bean.com/~proski/firmware/1.7.4.tar.bz2]
+md5=ff4a902f62b8a8c4ccf1474ce27bee41
+sha256=2660ad1f217e2cff5465cfb90b0cc2d5a6c57653fe769591af31da2e4f860c14
+
+[http://www.red-bean.com/~proski/firmware/1.8.3.tar.bz2]
+md5=0b04d2c4f8942e8ece2729ae6f058a8f
+sha256=5f22b7e3e34342127a4390898f1c70b5759c2a374d3e534b8f20646adc103275
+
+[http://www.red-bean.com/~proski/firmware/1.8.4.tar.bz2]
+md5=a47cfee4f322762881247558253ec037
+sha256=5782f645ab00224e733b018f82ea6e84d72a9f16a56ad645f4930145576bc8b5
+
+[http://www.red-bean.com/~proski/firmware/primary.tar.bz2]
+md5=0c7c82264602ee2b7ad832d5cd1e1940
+sha256=3b5bd68653ff5054586f9fad7ad729bd2d551e76949aec2d14b8a89308393a36
+
+[http://www.reitwiessner.de/programs/u2nl-1.3.tar.gz]
+md5=d97a16d8b2231501ba418b5f1ffe018a
+sha256=7e1d8239a5bd43c50f6091b484acbc8a7c5886cd4523f1e369504266cbaca50d
+
+[http://www.remlab.net/files/ndisc6/ndisc6-0.6.7.tar.bz2]
+md5=77f4154d78304e87698d6da4f5f9ff86
+sha256=0b60f1101d49f99111232eb6034ec851a46434bf90a056fd087b4a62451ec9ed
+
+[http://www.rhodesmill.org/brandon/projects/pyephem-3.7b.tar.gz]
+md5=08ddcadfef79b6020d593b7665b4c3fa
+sha256=f310597a3da24cf6799f233cf88914ae5d4ddb2dc8ed6e47cbf95a39fa0e9634
+
+[http://www.rhythm.cx/~steve/devel/tcptrack/release/1.1.2/source/tcptrack-1.1.2.tar.gz]
+md5=f27e025d9e69f36a7d8b679c047daba1
+sha256=2bfbdd6df159c815b392cd99146df5a450c1a8ffab30a13fd34bced8ee33cda0
+
+[http://www.rittau.org/mimedir/libmimedir-0.3.1.tar.gz]
+md5=0ae54d1b2ddcd37f66bf60e4c034de51
+sha256=ac400327f564031b0297ea86bd1b0466ceb8ee60138ccb186791375a5d947d77
+
+[http://www.riverbankcomputing.com/Downloads/sip4/sip-4.4.5.tar.gz]
+md5=ba334c4412cee1dbc6c56ff9a58e7bb0
+sha256=a1f0467ac5c1355d2ddb4a51b198afe43082cce6446e8950020e6f42cb7c71b8
+
+[http://www.roadmap.digitalomaha.net/roadmap/roadmap_1_0_12p2_src.tar.gz]
+md5=749f5923a146f0e29f2bce127f09c2af
+sha256=2d544f4205cc42b4da2cd39ca589f2c826f56ad106e571450fc2694666440a92
+
+[http://www.saftware.de/bluetooth/btxml.c]
+md5=c17e047d1a6a3f3188de929dc8582e01
+sha256=58eb43e7e781a6b61e452fa36fa03198ef44c742da80c8a1b60be073e4ab949b
+
+[http://www.saillard.org/linux/pwc/files/pwc-10.0.12-rc1.tar.bz2]
+md5=8763f3d6fd0f9738ef9854de205a126d
+sha256=dad803c34e902e286a3d6fb052f48b826c62a8ad19a54ced2936da7641b62907
+
+[http://www.schwarzvogel.de/pkgs/pymetar-0.11.tar.gz]
+md5=7953d8ac04b889e0968620193c66473a
+sha256=f3237fe997390469af50f79ed5981f6c8cf051300f23c464aea332c900194a8c
+
+[http://www.scrypt.net/~celer/kweb/Keyring-0.6.8.tgz]
+md5=0f429212fdcfd99efe6bfd3904adece8
+sha256=272ddac7f039d12938f50c281f42941d6dea7ab940f1b3b3dd5ab28572678bd4
+
+[http://www.secdev.org/projects/etherpuppet/files/etherpuppet.c]
+md5=6180d3a7001e528e0f87d258116ee1c9
+sha256=71416d34294c584cf9e8b9b4d72a34ed412b94f9928010891e786fe7b0cd98c9
+
+[http://www.secdev.org/projects/scapy/files/scapy-0.9.17.tar.gz]
+md5=c7b0363d646fbdee7fd09042de6fb0a7
+sha256=2068e0dc61189a37487dcf432909540e30579e452907ccbbd97d914fd0e06911
+
+[http://www.sentex.net/~mwandel/jhead/jhead-2.6.tar.gz]
+md5=fa3f1d3243fab7bc3b81688a3f2eec25
+sha256=55a65214c19f9a61265fdef21ae4d7f59b725248d06c0595152c14774bd31065
+
+[http://www.server-side.de/download/havp-0.82.tar.gz]
+md5=9e6a16b7d074782d1c62f1f7316e56ab
+sha256=e2db8d3383cd8eca6a18ebee85875de895f3ac7414eab091a87f052d79a87b09
+
+[http://www.shorewall.net/pub/shorewall/2.0/shorewall-2.0.9/shorewall-2.0.9.tgz]
+md5=4d0f756b5b63a68593b2de560c1a5b35
+sha256=06064e929423b1bd60a31652d2a31763dccc48e86ea9cdefbcadf524df2bd3f2
+
+[http://www.simtec.co.uk/products/SWLINUX/files/patch-2.4.25-vrs1-bast1.bz2]
+md5=1f942ff4ffda9ae764a4e54e7e7935ec
+sha256=3dcee0a8e7ed320396fec2e7eaee380957f3b25350d2f04770e48bf1b724b41d
+
+[http://www.soft-switch.org/downloads/snapshots/spandsp/spandsp-20070123.tar.gz]
+md5=28b67b6f56d97051c48f251116e0519f
+sha256=18b335e1804cc24505ca683343d62cb98e845ff1e2e3c966502e67f1b61f2546
+
+[http://www.soundtracker.org/dl/v0.6/soundtracker-0.6.8.tar.gz]
+md5=1e5a2ef689e214933e53f687b3a199bb
+sha256=03b2f2c0edba48457ec6178b0a10edfe3481254112936715603a21f638822f50
+
+[http://www.southern-storm.com.au/download/treecc-0.3.6.tar.gz]
+md5=56426279e6017af909353176e582fb28
+sha256=c9b97a2c4a27a3d59caea3430485837f286ca8883504a8eb6bd86702275ba5fe
+
+[http://www.speech.cs.cmu.edu/flite/packed/flite-1.2/flite-1.2-release.tar.bz2]
+md5=24c1576f5b3eb23ecedf4bebde96710f
+sha256=10ff42ce08a628c7fd84d26b5228d549e9eecb1eb03cb158e87d8be66bc58ae2
+
+[http://www.sqlite.org/sqlite-3.2.2.tar.gz]
+md5=802f19e1f0eba56f3f1be8c6491c8a55
+sha256=e2f4731017f341160dcba64b00ff5dff16974040f6a8c2dea1449383ac85f611
+
+[http://www.sqlite.org/sqlite-3.2.5.tar.gz]
+md5=0f07cfd8591c3fcae159f0c69bf2436f
+sha256=e5894889e0d88373efeb47bc139061e0b1156fdb209cf252ace23866796c7b53
+
+[http://www.sqlite.org/sqlite-3.2.7.tar.gz]
+md5=34c92821b3b46380f192c0aaf2b2b217
+sha256=c6576eab65d34300116ceb1c82e393c685fd0ffa7baa1ea6b1fa30ea031910df
+
+[http://www.sqlite.org/sqlite-3.3.12.tar.gz]
+md5=ae251cc7a4b54b80941d400ed5af01b7
+sha256=e005781cb0356f65200c05979c04fea533b9a7d873e0060672a4d384468b7186
+
+[http://www.sqlite.org/sqlite-3.3.13.tar.gz]
+md5=6b24d9c364215fba82242a86f54e0ad1
+sha256=930144d92e91ef7b3a7edbbe768cc539db95c06cf05cb156350f8d35bb56625c
+
+[http://www.sqlite.org/sqlite-3.3.5.tar.gz]
+md5=dd2a7b6f2a07a4403a0b5e17e8ed5b88
+sha256=e81d1176960a14459f9ff492b2c4fb1e2b55d0b2c82fd225dbc37afd02334256
+
+[http://www.stack.nl/~brama/mp3blaster/src/mp3blaster-3.1.3.tar.gz]
+md5=38beb6a5648cbca4ec87ee14b0982283
+sha256=c1b110f2aa5ed8744f7f6eeabf24d6cd1cecc50f4b5473ec6ddf622935f360ee
+
+[http://www.stack.nl/~brama/mp3blaster/src/mp3blaster-3.2.0.tar.gz]
+md5=d01a36de2ebb5b4f7c407ae6cc7668b1
+sha256=723b4674980e378efe07e097cf909894852054dd52d44f3d6f948d847c940815
+
+[http://www.stack.nl/~brama/projects/nmixer/src/nmixer-2.0.tar.gz]
+md5=02108108f5b0aafdf10207aa86d1b976
+sha256=aac281c7437e4007236eb461a668311eb3453e85012acf619aa3d62683330a6a
+
+[http://www.stafford.uklinux.net/libesmtp/libesmtp-1.0.4.tar.bz2]
+md5=8b4e8a794adc46268f0c6a0b3fb79486
+sha256=407ec85a4c3ce2c4045608d28c36a8e19f1cfbad02bf3de784f6b6fa83d15a56
+
+[http://www.staikos.net/~staikos/pocketcellar/pocketcellar-1.1.tar.gz]
+md5=ef65260b37a0c11898c680a576846c94
+sha256=5ae5e9816bc8503b768f831f058bd1c379bb821e8c0776015ffeb998e1d912f8
+
+[http://www.stats.bris.ac.uk/R/src/base/R-2/R-2.0.0.tar.gz]
+md5=3900bca37cabb4b76b8d736d51cc9251
+sha256=a06c3546400503e6d4ca4505c3f838b9bbd03fab6a3cbab7993f6d9115b68b64
+
+[http://www.stud.uni-hannover.de/~michael/software/libelf-0.8.6.tar.gz]
+md5=d444fb0068cdfed01bb1fd1e91d29270
+sha256=6ff7a5dbb5ccf14995f6bde7f1fca6be5f7f91f62b2680a00d32e82b172c9499
+
+[http://www.stunnel.org/download/stunnel/src/stunnel-4.09.tar.gz]
+md5=2077669b04c36e4c0baa68348e8860a7
+sha256=56004db651fe180ed23882c555607c8f2723a3e99734d462fe644e531a574271
+
+[http://www.suspend2.net/downloads/all/hibernate-script-1.12.tar.gz]
+md5=0fb7c524a30daacf200f27de2e398646
+sha256=dd1c1bb297fc4bfdce73614322cb60d92d99db719e473b9cbb4c62e0ea444147
+
+[http://www.tcpdump.org/release/libpcap-0.9.3.tar.gz]
+md5=0ad921c881fdd3d278046afcd352a151
+sha256=f20d19b1f32e4ee465169ff1e17a3755bfda8c697cfed11fe36cbf6959c80441
+
+[http://www.tcpdump.org/release/libpcap-0.9.5.tar.gz]
+md5=b0626ad59004fe5767ddd2ce743a2271
+sha256=6a6568bc082c266864687674707628d1531e86cffad439af72b865ac3169c322
+
+[http://www.tcpdump.org/release/tcpdump-3.9.3.tar.gz]
+md5=26c2f6405d6a94f1160a83109b2f71dd
+sha256=d701a3e4d7ab296fecdd6f8f84610a3c6d275839f9db4269b1ff7db3e0a9c0e5
+
+[http://www.telefonica.net/web2/mteirap/gpe-snes-0.1.tar.gz]
+md5=28ec6921d665c8ccde521181a9d26e24
+sha256=ae9c0fcdc13c3fa69038a0471f459602a6a45de6c44a0fa8c5c3241b6925e3bd
+
+[http://www.thedirks.org/pub/v4l2/apps/apps20020317.tgz]
+md5=16d8cbed24945949956b6f7966f4a609
+sha256=9ec43259123b89980ad0b5a36b8d582cf877d918019f993f629a9fa5327a5c58
+
+[http://www.thekelleys.org.uk/dnsmasq/archive/dnsmasq-2.11.tar.gz]
+md5=02aa4ffb835cbc9bdf96fcb915901cb3
+sha256=2dac596d5150174d0a2d9170db698c1d72584a8ab3b5eedf907086f53f76cc87
+
+[http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.15.tar.gz]
+md5=72f59fa070a1dc7f664603b20134c383
+sha256=9aec45b395b6206e8eb85417f58186cdd0a307ed0f26f4b73af7031023a52225
+
+[http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.22.tar.gz]
+md5=b38f33cd0703fa664a37a4595d918189
+sha256=cc2c86cbd0ec020a4486ac9d195e6a848a0d11a280c3194e095719f60c9751a9
+
+[http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.38.tar.gz]
+md5=ab066a97c226066485ad20e5ad5ce424
+sha256=54f3e9ac2bd9f622b28ab0d5149e9bc13d62d8826be085c32abc929bc30dda6a
+
+[http://www.tinc-vpn.org/packages/tinc-1.0.2.tar.gz]
+md5=5396e8d279b5140e86113c80abc041ad
+sha256=2e6a535ba29d06337daf22ae12e17cbe10e70de95134ebd7b6e8a6838e3ca5a0
+
+[http://www.tux.org/pub/people/alexey-kuznetsov/ip-routing/iputils-ss020927.tar.gz]
+md5=b5493f7a2997130a4f86c486c9993b86
+sha256=25d45acf19e3acd09745df47581ac7a13e3694ee51fe4e642108f9f228cacca9
+
+[http://www.tux.org/pub/tux/benchmarks/System/unixbench/unixbench-4.1.0.tgz]
+md5=3561ae1f067f9dfb9707c062f536acac
+sha256=4605f3f0001afd3af91ffb554dfd65c5cd313b6b9ada52ae8b2efdccf894cfa2
+
+[http://www.uclinux.org/pub/uClinux/uClinux-2.4.x/uClinux-2.4.24-uc0.diff.gz]
+md5=cd8a3b23299305761c5b3b3f81dd017a
+sha256=c409609ce3bdf5bc4c040aa17ec28c6c214695a6aaaa408643edbda704142fcf
+
+[http://www.uk.debian.org/debian/pool/main/s/sparc-utils/sparc-utils_1.9.orig.tar.gz]
+md5=08bf3f6d8433a1f4981a2afaa6b49a6c
+sha256=b652bc27f95dcf10a7626b1d2943a1084e1e0b7f9bd3a97f9a46b6688370fe4b
+
+[http://www.unix-ag.uni-kl.de/~massar/vpnc/vpnc-0.3.2.tar.gz]
+md5=aaccdffc5656095a45dfe87c5bf612cb
+sha256=55702637d377d73e6f323462779aeb02f5049d71c7ea4e3bbe564566d9a8d488
+
+[http://www.unix-ag.uni-kl.de/~massar/vpnc/vpnc-0.3.3.tar.gz]
+md5=e7518cff21326fe7eb9795b60c25ae6a
+sha256=be4a8e87b044cb99349e71e6879446739dd537dbde13e99ec61817ed67605bd7
+
+[http://www.urban.ne.jp/home/kanemori/zaurus/FreeNote_1.12.0.tar.gz]
+md5=06b5aeb6cc97107090438a364f0ce89b
+sha256=e6a0a5b674c4803bfd1ffda9660c29f4399294623ed095b0d1c554367c7db73c
+
+[http://www.urban.ne.jp/home/kanemori/zaurus/IaiMaster_0.5.tar.gz]
+md5=6e3992e261e1fb7fbae08530d45886b7
+sha256=bb837de5130cdbe2c1f4dd7ded8c890ef11f37979526e480afd82b364605563b
+
+[http://www.us.xfce.org/archive/xfce-4.2.0/src/xfcalendar-4.2.0.tar.gz]
+md5=519ae7186ed4c083fdbe452cc24f8837
+sha256=36130c0535c34a5d7873a9ccf82aa45cd1aa5d0ad7191e4c7cc71faac9fbd3e7
+
+[http://www.us.xfce.org/archive/xfce-4.2.0/src/xfdesktop-4.2.0.tar.gz]
+md5=1cacd48e0ab475f4fd55d79020d60c55
+sha256=45a6c30d33f9b887d13f0dd6458e9055dae6664c307b24a68594fcff73d22127
+
+[http://www.us.xfce.org/archive/xfce-4.2.0/src/xffm-4.2.0.tar.gz]
+md5=476b50335da473d46b12f43a07a28e83
+sha256=dcd12681eaaf2b88dd512023949080b6d47426ff855efc03329790ab479280c9
+
+[http://www.us.xfce.org/archive/xfce-4.2.0/src/xfprint-4.2.0.tar.gz]
+md5=dce7378c3961122ca20b2518e939e57c
+sha256=6d643173a9ae18e1daa3566503bc461e9a056470595ec059b2eea70e4113b77b
+
+[http://www.us.xfce.org/archive/xfce-4.2.0/src/xfwm4-4.2.0.tar.gz]
+md5=da6d773f31ef91400174c2045f0f1a80
+sha256=4ba4bad5bf750045175dc6af58ec29d046c91fa30c3b769213ce69fc739c8046
+
+[http://www.us.xfce.org/archive/xfce-4.2.0/src/xfwm4-themes-4.2.0.tar.gz]
+md5=a8d0676fbf9cd3b3514d76a39d4ecbe1
+sha256=9aebac55dfc92a3533678a873d0f3babee285061b0ad5b26a56b6e72fb306ed4
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/libxfce4mcs-4.2.2.tar.gz]
+md5=06c3d8ea6826d9a2fbcc1da6b86f1361
+sha256=95b84b2b109f20e0fa6e2489dda55c5931a438ebfa21c8b4238350b0abdd0a6f
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/libxfce4util-4.2.2.tar.gz]
+md5=5f27635aa0ba5e40ffaf3031b530b36b
+sha256=8efb3416a37654050089234115fe7db9268c8da0ee0369ff3f5330cef3f15a66
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/libxfcegui4-4.2.2.tar.gz]
+md5=e88d6e8379eae60cee6dd6122bf3ae59
+sha256=bdd542e60ffbe4987b5ae765e581fe5bcfdfc4d623341d09aaff7794e90d4454
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/xfcalendar-4.2.2.tar.gz]
+md5=d964e45cc1d21f482f5e303129491987
+sha256=910a65a81b7efb18e638105a46cb1249df041df6e66fcfcb58ac7e95baaa7976
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/xfce-mcs-manager-4.2.2.tar.gz]
+md5=9f6cdb3f11fc57a458fe7c91540181c9
+sha256=b075e7503089a1e0b7a156fb05871ba83c4a20d22b822a4599545b6a3e410c40
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/xfce-mcs-plugins-4.2.2.tar.gz]
+md5=6e23972a2a0b3b3e7852bfc68dc0eeb8
+sha256=693166e49eac35a85e66a7ad5dee046657f08937dc0a9144ecd26148ab9917a9
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/xfce-utils-4.2.2.tar.gz]
+md5=585e1fd48dee70c50271ac478e8adcd0
+sha256=67091b02a85c9700d574416c4adfca6db042b679ac3234228967f4a6c560ad93
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/xfce4-appfinder-4.2.2.tar.gz]
+md5=0ef8c944e8aa2db06719e02b2c40d70c
+sha256=4bca692e0af03c0f70c6cf62f2b60274e71899beaa45815c2d0f46f7f19c06d5
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/xfce4-mixer-4.2.2.tar.gz]
+md5=fd5eb62c04d10659402a228b304f735b
+sha256=9d145dd0ad09c1bd1efe357bd0413fabc93945d7986d3f4662ac515625da93bc
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/xfce4-panel-4.2.2.tar.gz]
+md5=50699e6c8e4a79f0a4f962e12559c9d0
+sha256=b29e8524c448b9712f5eff0d7702706289a4a2967125b82a92a50ca142cc2d66
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/xfdesktop-4.2.2.tar.gz]
+md5=746641ae286994c0f42d7c4f58a90716
+sha256=abba9b334012c8d3771939d8644e25d1560f18174e94eda155c65c87924f08d1
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/xffm-4.2.2.tar.gz]
+md5=5eb5ede5b2bfac564c26d96ee06a3241
+sha256=0cde8831dc56669a046f6284b0a8dabd583942837e41832e7ed57e57020c4446
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/xfwm4-4.2.2.tar.gz]
+md5=e4c91c59da7d1bdc6141cde3263ea6f9
+sha256=02ab845725c59d4a2b6299e8d576df542011d7775637676080e9d76f02aa63da
+
+[http://www.us.xfce.org/archive/xfce-4.2.2/src/xfwm4-themes-4.2.2.tar.gz]
+md5=440977408bd1395f4464f18f01faf644
+sha256=b458f3d9dc1f6370ac596862e1ebcbc3e5227e58450ea9c1172d7de6534e34a1
+
+[http://www.us.xfce.org/archive/xfce-4.2.3.2/src/xfwm4-4.2.3.2.tar.gz]
+md5=d73e89c50179ccb438c076b3b71d59a4
+sha256=018628d7c5ef10d947cb0228ca4ed7527aebf9ea54eb6db49091a7b8f61c2b86
+
+[http://www.us.xfce.org/archive/xfce-4.2.3/src/libxfcegui4-4.2.3.tar.gz]
+md5=5d2bae78c5ef66e914ae7a930bbdeb57
+sha256=655c8c8657c16cf4fb9400722beb1a65841c0851e27a138c08b1908d5e254142
+
+[http://www.us.xfce.org/archive/xfce-4.2.3/src/xfcalendar-4.2.3.tar.gz]
+md5=d2e2c8e010cca708295aeaf621086205
+sha256=ad8d141d23f48736180d3913a0600d1733d71a341fd1889e69f727a998cfa0a3
+
+[http://www.us.xfce.org/archive/xfce-4.2.3/src/xfce-mcs-manager-4.2.3.tar.gz]
+md5=029e7cc2b20a3de5f908483b4253f492
+sha256=9bc1d715ee77a3d910214dd2fe6f537ee39960177f869a781361535a8d9a1828
+
+[http://www.us.xfce.org/archive/xfce-4.2.3/src/xfce-mcs-plugins-4.2.3.tar.gz]
+md5=cdd1ca3ff7610a45658aa801b91da8dc
+sha256=57dffc6ac2d44a8feb11e30f4a12810ab3a22b436b38ea873d3706a62caea169
+
+[http://www.us.xfce.org/archive/xfce-4.2.3/src/xffm-4.2.3.tar.gz]
+md5=5d2a990bb725b6720db93f34dd91a731
+sha256=791a05a2fd695508ff6b3fd3e0e2be66de28a3d0bf86ee22e14126992d7aef21
+
+[http://www.us.xfce.org/archive/xfce-4.3.99.2/src/libxfce4mcs-4.3.99.2.tar.bz2]
+md5=7ee4eab238e773b9dbf3fa1472643f6e
+sha256=8f3cd90d4ea258ffa35b8723c1eae7ace31409baa85361889664084c6c5d1b6d
+
+[http://www.us.xfce.org/archive/xfce-4.3.99.2/src/libxfce4util-4.3.99.2.tar.bz2]
+md5=4b327c64c292b2e672f69a0789deb2b7
+sha256=988efce9b4fd7252475234be3ca3fe8b737125ebaadc8c448d1c5d4cbc8bb521
+
+[http://www.us.xfce.org/archive/xfce-4.3.99.2/src/libxfcegui4-4.3.99.2.tar.bz2]
+md5=98679c67ac65c376833deacec9fcbecf
+sha256=a3da5f3b70e65d6679cfb21fd2baf10baedceb8b099347987f9b6c5fa7cd329b
+
+[http://www.us.xfce.org/archive/xfce-4.3.99.2/src/xfce-mcs-manager-4.3.99.2.tar.bz2]
+md5=59d6d8f4f931b562b39ea1decdf9e29e
+sha256=951cb843f1c98fb68e0ab71f260dda9bc77ffd7b3aa16883d22e395134125c48
+
+[http://www.us.xfce.org/archive/xfce-4.3.99.2/src/xfce-mcs-plugins-4.3.99.2.tar.bz2]
+md5=6234425227e1145319bd75ef52fa97f5
+sha256=f2773a4c007139f0a06c418b3535374ebeed8e10eef41d3ae69f4259f6f632a5
+
+[http://www.us.xfce.org/archive/xfce-4.3.99.2/src/xfce-utils-4.3.99.2.tar.bz2]
+md5=de6502dd93176b2a60e2e66bf052024f
+sha256=a40832c874dda5a06c0208cd178a8d02cd61cb2379aa46cdffbe3fb592fd551c
+
+[http://www.us.xfce.org/archive/xfce-4.3.99.2/src/xfce4-appfinder-4.3.99.2.tar.bz2]
+md5=a4636f51d79eb68ba65098336d120d56
+sha256=1e6c80b800dd02f6b1cbf69df36307cc0b341ab73438c5508ac760fd8be66232
+
+[http://www.us.xfce.org/archive/xfce-4.3.99.2/src/xfce4-mixer-4.3.99.2.tar.bz2]
+md5=9648fc403f9eb4baede230644bf5638d
+sha256=6beda572195d6f7ed108e0659592d1ca6ad5088e769e3d219cc4114533f8b169
+
+[http://www.us.xfce.org/archive/xfce-4.3.99.2/src/xfce4-panel-4.3.99.2.tar.bz2]
+md5=53f96a9db5628ac1c629c9e5ecd842e4
+sha256=1925b19457594b5e2a57f07f649375be428a038eb821c8b445dc1e7d2fe9c769
+
+[http://www.us.xfce.org/archive/xfce-4.3.99.2/src/xfdesktop-4.3.99.2.tar.bz2]
+md5=d44a81b9da9598425d9dd8dcd1cd5485
+sha256=427df09a88f9b4a38fbed68d8154090bf0c11fbdc132c26247dc5568ee5ae910
+
+[http://www.us.xfce.org/archive/xfce-4.3.99.2/src/xfprint-4.3.99.2.tar.bz2]
+md5=c2eb9dee0002e875b91e73557f7354a1
+sha256=4eee12555dbc296fa26afbfdbfabad3586000239d5666e54b6bfae7f8cd03e89
+
+[http://www.us.xfce.org/archive/xfce-4.3.99.2/src/xfwm4-4.3.99.2.tar.bz2]
+md5=3186d90ae752cce9687698c8bd6b26c3
+sha256=3600267ba477217f065628454bffb30d8819731940c7fdbfd197c731bca9125f
+
+[http://www.us.xfce.org/archive/xfce-4.3.99.2/src/xfwm4-themes-4.3.99.2.tar.bz2]
+md5=a77e9e700de66d38b6c4850a18283fb1
+sha256=10b2f7ffbf309c12ec82b4bc28b35014cb223208d3003bab3765b70dea9d96bd
+
+[http://www.users.waitrose.com/~thunor/pipepanic/dload/pipepanic-0.1.1-source.tar.gz]
+md5=1d5e267c57b126038689ce3bf26eea24
+sha256=468f25a70ef2dac90088caa6599c41ade6768e0cdc328dc3e82ab578903e69d4
+
+[http://www.vanheusden.com/setpwc/setpwc-0.9.tgz]
+md5=0ec56a142d79bc2dd346fc6f12f9aa5e
+sha256=827940306b30e3d92805052b31e8bff2f326fca7574b162260ca5386027091c1
+
+[http://www.vanheusden.com/setpwc/setpwc-1.1.tgz]
+md5=acc0266534c5dc13ad1153ec890c1b8d
+sha256=ee8b74fc74229b76c95d1d3360a5540239e77f32d100f8c3ed318e76fd19e09b
+
+[http://www.vanille.de/mirror/PyMP3-0.3.4.tar.gz]
+md5=28e884057750aa4f0da368678e5b20bd
+sha256=e534ea5505e2d0a571ca8baa4b34260953e796f6c762013756373f13411ebd6e
+
+[http://www.vanille.de/mirror/PyQt-x11-gpl-3.13.tar.gz]
+md5=a4145b39742a4d9df9b6bf06495f75f5
+sha256=10482fed3832ac804a495d4e5795838a1f99d1994e1247f9dd608a99a3ec3c66
+
+[http://www.vanille.de/mirror/PyQwt-20040118.tar.gz]
+md5=51a8550e9ffbce9f0a1ff11bfc2f4a01
+sha256=22cbbccabaea5262c1fae47bf475f06af6bb7b765898873c93149340cb2049b9
+
+[http://www.vanille.de/mirror/iqnotes-2.0.2-src.tar.bz2]
+md5=9d9504055b37247ece87b31895eb2e5b
+sha256=27badd5d9f3167443099c6b6cf66b05b9e32cc71f03d692cff474c2279c4f4cd
+
+[http://www.vanille.de/mirror/pbserver-1.2.5.tar.gz]
+md5=7afe4cb20d36b7d00002a522cbe724a8
+sha256=c64986ede63deda10a4b0aa5fd3fda1ae7fcd28d91ecc149fceec4ccffd9c620
+
+[http://www.vanille.de/mirror/pyserial-2.0.tar.bz2]
+md5=a8db6163466c21845faa6ef57af992da
+sha256=df76084516b34b5e04dd84e54ef38613d87c56bc04de3d0a711f72fb6707ab0b
+
+[http://www.vanille.de/mirror/python-inotify-0.0.6.tar.gz]
+md5=f6bbd996e7dde9eef849468f3123a8f0
+sha256=f88bfa19a707f83fe74613da74ac801b5e0cfb98628655ecc4cfac481c05ec38
+
+[http://www.vanille.de/mirror/qpe-gaim_20041030.tar.bz2]
+md5=b61c7005301956e231feacff707c7b19
+sha256=0b55004666e3353feef384c5795a05b5bf1a3b69a487aee5b8f8e9d66c133b86
+
+[http://www.vanille.de/mirror/qpobox-0.5.4.tar.gz]
+md5=45a7f9baeaaf638c6fcd0aa6f1f78080
+sha256=405538793e33bf959cfc53955544615e691da8e37538e79855532d64dad5a95b
+
+[http://www.vanille.de/mirror/sgmlop-1.1.tar.bz2]
+md5=45f77f33a6b2a5c09c28511ebb733b87
+sha256=7fd6495d6c3e8dac7ba086c68abed4930c958a94afc15359223074614559e462
+
+[http://www.vanille.de/mirror/sip-3.10.1.tar.gz]
+md5=7d7faa17422cd3e7b27d449ffbc9cd0f
+sha256=b0f36999b31c7e20927befc3df6112955376bff6a0c76ba4a4be4a357fc014be
+
+[http://www.vanille.de/mirror/sip-4.0.1.tar.gz]
+md5=a2aa4ef53cb4f18e7ce25bc2e123548e
+sha256=98d9f4937924d99db716ef8d80ff25a83fdef294981a43c089e97c9394ed08a7
+
+[http://www.vanille.de/mirror/sip-4.1.1.tar.gz]
+md5=f9dc81a7726305af114fede6c4107ce6
+sha256=0408ff3be6460686d53e9675510c8b2bac2fa91f1a7489f54e5ac0d1722cfb6d
+
+[http://www.vanille.de/mirror/sip-4.4.5.tar.gz]
+md5=ba334c4412cee1dbc6c56ff9a58e7bb0
+sha256=a1f0467ac5c1355d2ddb4a51b198afe43082cce6446e8950020e6f42cb7c71b8
+
+[http://www.vanille.de/mirror/snes9x-sdl-1.39.tar.bz2]
+md5=a7836a9b6eaae433079c1c9d19f2635a
+sha256=489bb2f9fb69922e9befc27ae1b8d19d31c83c586f55b7ecc503cb4f5e767da4
+
+[http://www.vanille.de/mirror/zbench-2.0.tar.bz2]
+md5=75beb13ea40ce93b7a141b82fbf4437a
+sha256=b1a1a5d98596fc24225968a480617feb5723390db9175cd6e01828b7fda3a921
+
+[http://www.vanille.de/mirror/zudoku-1.1.tar.gz]
+md5=8f8fd0e106c81897f0c8c3049dbf57de
+sha256=42494c9c712caaf3ca96f8abf59aaeb0fb3dbd2076c21d8642ea4c6cd9a04900
+
+[http://www.venge.net/monotone/downloads/monotone_0.19-1.tar.gz]
+md5=cd636aba15508940e202ff43dc483aa3
+sha256=e17c283be0afa5abdf0be276e0240b3f1805afaea76537aacadc8e2ff626f9ef
+
+[http://www.vorbis.com/files/1.0.1/unix/libogg-1.1.tar.gz]
+md5=461d7097bf47864b872085a94ff94e10
+sha256=01453d561255b5fcb361997904752860e4f8c6b9742f290578a44615fcc94356
+
+[http://www.vorbis.com/files/1.0.1/unix/libvorbis-1.0.1.tar.gz]
+md5=4d6726fd02ce02f6e24824e594b0949a
+sha256=20b3cbdb4b05322d470404a7d2e8cdae1e0ce5372113218ae3cada3b29da70f7
+
+[http://www.vorbis.com/files/1.0.1/unix/vorbis-tools-1.0.1.tar.gz]
+md5=80d3ae3bbae2a488d433d86b8fd64777
+sha256=4f1f6ba6410e5f2aeb473d0a09caaa528cc926866735ab66e05cdff9c5093a37
+
+[http://www.vorbis.com/files/1.0/unix/libogg-1.0.tar.gz]
+md5=382a7089f42e6f82e7d658c1cb8ee236
+sha256=920fa2a0924d66884825d36a2e843de069cfdf1af01945d05da25999bbd6396c
+
+[http://www.wardriving.ch/hpneu/blue/perl/ghettotooth.pl]
+md5=dc94cb07c6e43fc8c4745b728b0ce32b
+sha256=71e285da2f8f03dd0c6f6a969d1f541ab2a2f1a9d91e26f6f60779897d68824e
+
+[http://www.warmi.net/zaurus/files/puzz-le_2.0.0.tar.gz]
+md5=76535893b779926874f618d3fbf3e92b
+sha256=e4b4217b81ab0885db11cf7e0f18afdeaa969392fc15647a10c2aab9cbf583d8
+
+[http://www.warmi.net/zaurus/files/zipsc_0.4.3.tar.gz]
+md5=84c9037c144cb9a56137e2c218532ee1
+sha256=a5e989f87fd85b66b2cea1246f14577cbef9a618abde2df2c17a04030fb6cda6
+
+[http://www.webdav.org/neon/neon-0.25.5.tar.gz]
+md5=b5fdb71dd407f0a3de0f267d27c9ab17
+sha256=b5513f88cb54c5f11e4c8348ee6c7ace9767b45c263c3a3ba8a5ce4e2b40a07a
+
+[http://www.webdav.org/neon/neon-0.26.0.tar.gz]
+md5=076072f11c5278f4c4b7de189ea1506e
+sha256=76472e51576b42bfc129e487ae7dd3a5e1f1f380105b422fc14ee408e3a881df
+
+[http://www.wiggy.net/files/pyrad-0.8.tar.gz]
+md5=562ddc819d5f6b9d6e1458483e8bbd26
+sha256=0ba5090c66aa76a78dac74f92162f3220ac244ad79ce3ee749ff59022c6ca9fd
+
+[http://www.wirelessdefence.org/Contents/Files/aircrack-2.41.tgz]
+md5=05a37c8a165efb11ea226829c809deb3
+sha256=0273c476875e5dd09c7e15e8de58ed18fa9f5f2f9482a78e4171b3f56d75efa4
+
+[http://www.wirelessdefence.org/Contents/Files/void11-0.2.0.tar.bz2]
+md5=1c5b3e3e70916de74c2932c7f3e46d9e
+sha256=08d588ce0731d0c0e55a1cac35acf019e1b735d0f75f16962adfeb4fefd69441
+
+[http://www.xchat.org/files/source/2.6/xchat-2.6.0.tar.bz2]
+md5=0c827bf6df0572231cbbb1e25965fb61
+sha256=abdc3055a9c85996c84adc858b2c8f02116f330bdbaeff9e7b38a99da4b852a4
+
+[http://www.xchat.org/files/source/2.6/xchat-2.6.1.tar.bz2]
+md5=50fbc65bf9c051029ea081cf497493f3
+sha256=4827a11db099d4968183d322e326ea5657ddec560c3f2ceef8d210d0a3b83584
+
+[http://www.xinetd.org/xinetd-2.3.13.tar.gz]
+md5=4295b5fe12350f09b5892b363348ac8b
+sha256=eddfd1bf3684eaff3a7ba424421d3126878a7469ced0f3d370c7cf66bde64522
+
+[http://www.xiph.org/ao/src/libao-0.8.4.tar.gz]
+md5=0525549b0bf665f617913c916064cc87
+sha256=a2f434898bd5319024a97294cc4c7ba1d89bda4951af2015a887feca116e162f
+
+[http://www.xm1math.net/qxmp/qxmp-1.0.tar.bz2]
+md5=9eb52b5b6c1dda6ff96790acb9915da8
+sha256=285be4b83819c4bf24b2db1e120a9c8e1756863f49aa631acf09bbbae1e04709
+
+[http://www.xm1math.net/texmaker/texmaker-1.3.tar.bz2]
+md5=17f91175a32827e9c9f45dc7a20a0c2b
+sha256=6ae8157bbec2b36957bbee6895b4cd3f82406fa90fa7d597235c58ea19307be7
+
+[http://www.xmailserver.org/libpcl-1.4.tar.gz]
+md5=6d63c462911349de80109c0161ed6d37
+sha256=3c64155a9218c0367f3b0afd4bd8a4a46cc467ad6c85e98952a4ef517b183686
+
+[http://www.xmission.com/~ebiederm/files/kexec/kexec-tools-1.101.tar.gz]
+md5=b4f7ffcc294d41a6a4c40d6e44b7734d
+sha256=280b34fefa12c3d7a3e432c3730fe5d0d56e8d169c28b695cce9ba6d8dbe6e38
+
+[http://www.xmms.org/files/1.2.x/xmms-1.2.10.tar.bz2]
+md5=03a85cfc5e1877a2e1f7be4fa1d3f63c
+sha256=ff9eabae2074043294a19ec7beaf0959bd076f6cd60558264faeec08f4a0eb6a
+
+[http://www.xora.org.uk/oe/links2.png]
+md5=477e8787927c634614bac01b44355a33
+sha256=eddcd8b8c8698aa621d1a453943892d77b72ed492e0d14e0dbac5c6a57e52f47
+
+[http://www.xtreefanpage.org/download/lxt-1.0.tgz]
+md5=c703192481d94dfa3f4e24eed22c8182
+sha256=daa670b686f959ab15e457425e57c50f0b973ee4d24d6a4171c33f467961ad1d
+
+[http://www.zip.com.au/~dtucker/openntpd/release/openntpd-3.7p1.tar.gz]
+md5=10ed8eefd760e5819efcf3277b118f47
+sha256=313509a7ccb15565e911f61c599055afc705cfe4bf6370bdc1c30582d52a9ea9
+
+[http://www.zip.com.au/~dtucker/openntpd/release/openntpd-3.9p1.tar.gz]
+md5=afc34175f38d08867c1403d9008600b3
+sha256=83dd7c1e8ec8b4567afe49af539271b5a73562fb7a3ca51df73eccba89ec8c49
+
+[http://www.zlib.net/zlib-1.2.3.tar.bz2]
+md5=dee233bf288ee795ac96a98cc2e369b6
+sha256=e3b9950851a19904d642c4dec518623382cf4d2ac24f70a76510c944330d28ca
+
+[http://www.zsh.org/pub/old/zsh-4.1.1.tar.bz2]
+md5=48958b1a3fc86261a26eea40a4f7d4af
+sha256=f539e6db53233fa75d5fa389b4807d54add312fc96de71b5eb7cf4f071719027
+
+[http://www013.upp.so-net.ne.jp/hn43o/dviviewer/dviviewer-1.0.2.tar.gz]
+md5=cc101da3b436607ee2265b5af5001484
+sha256=ab7c305be32708c4ede670e13783b718e6a28e35b5495e6c42c31c35a8b512a6
+
+[http://www1.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc1.tar.bz2]
+md5=18c05d88e22c3b815a43ca8d7152ccdc
+sha256=8dd9dd61a0fe56904f5b76ddedb99bd359abaaf486e0b83b45e3357fecc81063
+
+[http://www2.autistici.org/bakunin/libmrss/libmrss-0.17.1.tar.gz]
+md5=bc6f32759db02cf32a83640d74fb9993
+sha256=cfa9b2d0f9b87a7a524abe149e7207adf86c077749c907342df63126a7ec292d
+
+[http://www2.autistici.org/bakunin/libnxml/libnxml-0.16.tar.gz]
+md5=85b6a42a9e17a23c01b2f2ed0ece0563
+sha256=6154872089834b0ffd34e92612d07e2d1ccec572698bd861da752eeeaab7ca78
+
+[http://www2.gol.com/users/ikezawa/zaurus/qcoptest_0.1.1.tar.gz]
+md5=a31f12647c5bb5f93c81465b4e5ff25a
+sha256=5795b9d619142e2d01016130c7ac71298aa1cabda4806f11762bb8fd489293af
+
+[http://www8.in.tum.de/~schneifa/group/sources/cpusage-0.1.tar.gz]
+md5=f779140995280de32817ec4a133f4d60
+sha256=feb0b8c73c771390a8771fc3a4ed01104c008bcd278a267eb00263794956778c
+
+[http://www8.in.tum.de/~schneifa/group/sources/cpusage-0.2.tar.gz]
+md5=4f2662346fa8e6feeebceafc4ec18090
+sha256=f301bca2f5999cd16fec01db58d0fbba781eb659ce30d532cc9569e7950b90bf
+
+[http://x.mame.net/download/historic/xmame-0.100.tar.bz2]
+md5=c289797531d540853c835a2bb9fad8bc
+sha256=7cceeadeab80f605ed1fba47feb9fd1736d08626ba3f5374dfbe55659232cdd3
+
+[http://x.mame.net/download/historic/xmame-0.86.tar.bz2]
+md5=b16782cd620ef970233eacd65462ad74
+sha256=bcb35dd4cb138e06bb016a42316dfcc59f82eeed6357902e1f230b4815e9ad93
+
+[http://x.mame.net/download/historic/xmame-0.87.tar.bz2]
+md5=817f825ea92baf5f5e98ecb13193b844
+sha256=5bd358381d75f17802a0c8dfc62dcdaf9e782ecad23c0fca3e5c5b6445ff7ba1
+
+[http://x.mame.net/download/historic/xmame-0.95.tar.bz2]
+md5=e2571ce90bdf1517eea4d8085170fe6c
+sha256=c3044870d1778b4f6d64463f0aeda2995aade1e0bea0feb6935d18bf44fcf6cb
+
+[http://xaxxon.slackworks.com/pme/pme-1.0.3.tar.gz]
+md5=da0da7ed1689469b45c8d62fa2dfb204
+sha256=25b84792473fa17d118e69b588f32fe940d13a01c3b3db89290ce6516ad01b2e
+
+[http://xcb.freedesktop.org/dist/libxcb-0.9.91.tar.bz2]
+md5=8bb01876468dd08d8e921e32ec9ff116
+sha256=a54ecc4ff5240876d49ec534a21e6ff682f3602da89b1540f5cd0b6f8e9089b7
+
+[http://xcb.freedesktop.org/dist/libxcb-0.9.92.tar.bz2]
+md5=6f01c8fa200deebb20b019f7401a2606
+sha256=64337d31564f3239ccb8f0d7f8e1c4987f570985af3ab83a38cf9af5736ef9b1
+
+[http://xcb.freedesktop.org/dist/libxcb-0.9.93.tar.bz2]
+md5=7967d0d4347502bc9af5373767afc748
+sha256=106b3747c3c49c2940973b18b487c604a5dffc8995fb02a4c46136d6ff267122
+
+[http://xcb.freedesktop.org/dist/libxcb-0.9.tar.bz2]
+md5=578037c76d791d4623f0f8b3e14fbabc
+sha256=824fed10aea3bfb3504b0c5f4e3a5208ae795e88f64730a5b07d5f5de3e771a8
+
+[http://xcb.freedesktop.org/dist/xcb-demo-0.1.tar.bz2]
+md5=872ceecda2cfe3c4056716e414b6802d
+sha256=20753bb59558dc00311a5a296fc6c4b3fcff04b86b2579fcb459c89b17d733a4
+
+[http://xcb.freedesktop.org/dist/xcb-proto-0.9.91.tar.bz2]
+md5=830cac0c81e43807849dd172bf7e65e2
+sha256=cefb1a052f8366d1ddfaabc9dc4207307855ab2b12862989fa3cbec02a48f1fa
+
+[http://xcb.freedesktop.org/dist/xcb-proto-0.9.92.tar.bz2]
+md5=dc05c33ae1efc3e59d725887de9fc1a6
+sha256=4590e383f9bb6cc724e2033911a96d36f5966a5f82771bd3f06a63add2aa3e10
+
+[http://xcb.freedesktop.org/dist/xcb-proto-0.9.93.tar.bz2]
+md5=43298a907d6d242132c20e4338c2f33f
+sha256=3f28eb14edd588878d39a33803adc0d3cc49e9dfaef77d9db0490125b3da786e
+
+[http://xcb.freedesktop.org/dist/xcb-proto-0.9.tar.bz2]
+md5=b1f8eec1a25d2c8a831dd9a1b19fbc38
+sha256=982023711ca2a561a2e01e37fd6e7c64ca62efd4846da2e48826754d69204344
+
+[http://xcb.freedesktop.org/dist/xcb-util-0.1.tar.bz2]
+md5=c3852c5f0569e2577a6a2b06276948d1
+sha256=9086821a37d29ec4158f841c948b26637f4e262f22344d834eefafb7a313d266
+
+[http://xcb.freedesktop.org/dist/xcb-util-0.2.tar.bz2]
+md5=b09bdebad50638709de22d8eb2dc3bf5
+sha256=a0d6a15ac4dcbcea832f2f9b2dbcf575b02cf69aa92f0ba90bd35b61cd75b01a
+
+[http://xlibs.freedesktop.org/release/compositeext-2.0.tar.bz2]
+md5=315ce9665059f1b2f4067cc8bd7ecf44
+sha256=a6d9b1e4e8720941e7fa7e68373a9a211c16bad0eb449438e0b8c6093190cab6
+
+[http://xlibs.freedesktop.org/release/damageext-1.0.tar.bz2]
+md5=1d88a72b12b5ec505747069053d54847
+sha256=4488bee8994e45dfe91563e89fd7e862779ae02a67b8a121d2ec10b263f2d2f3
+
+[http://xlibs.freedesktop.org/release/fixesext-2.0.1.tar.bz2]
+md5=6cc725db32346058a4adeef283335ae1
+sha256=c7ce53b1678268ec2f08d0a32580c2783b6e297941de36d8b880c0533ed51c26
+
+[http://xlibs.freedesktop.org/release/panoramixext-1.1.tar.bz2]
+md5=129f8623dc4f70188a015e3cbd7eae82
+sha256=74188aff5f2e5b77515a8cf3979199a598d58da8e4f573462b59cbf94cf1c99d
+
+[http://xlibs.freedesktop.org/release/randrext-1.0.tar.bz2]
+md5=19cb88ab378efcdebc15974fb9ba4a00
+sha256=9e1db25eec33ba1dff95010d6b8f1150ea40e7f953f1b6b7668a69a1171d23df
+
+[http://xlibs.freedesktop.org/release/renderext-0.8.tar.bz2]
+md5=b00a97b00bf93ab2ac6442ea13ea9c0b
+sha256=779317ca2e99f02b394af0c6f77f16def56de3b71a5d9f9ac6e5e9cfb65192e1
+
+[http://xlibs.freedesktop.org/release/resourceext-1.0.tar.bz2]
+md5=007713326ca5f1adfd39f3cb587c3b9b
+sha256=78e0a532bb84d6d85e90244bf3bb0ee9a5246545ebc9b677173e37e231d30cdc
+
+[http://xmlsoft.org/sources/libxml2/libxml2-2.6.22.tar.gz]
+md5=1db8d06b4f49a665a8f47dc6d94450e6
+sha256=675eb41ba5bfd328251c4b21920f8cded4c86ee09b3f7aa3dfa7e3d2bacb73be
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/appres-X11R7.0-1.0.0.tar.bz2]
+md5=3327357fc851a49e8e5dc44405e7b862
+sha256=bbc15785d609c7f26176b91d26354ca7bfcc5d9fe72d15a78f2809eeba1cb6b0
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/bdftopcf-X11R7.0-1.0.0.tar.bz2]
+md5=f43667fcf613054cae0679f5dc5a1e7a
+sha256=59760e300acf5b616400d08ac97d8ea265dfbb872b6131c65eb6246c61654803
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/bdftopcf-X11R7.0-1.0.0.tar.gz]
+md5=a0de7e91aada7a6fdca2c5fc52ba003e
+sha256=7967b6349c7467acd9208e0b8225a6d354475d5f18633a78eaa485afbcfc72c6
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/beforelight-X11R7.0-1.0.1.tar.bz2]
+md5=e0326eff9d1bd4e3a1af9e615a0048b3
+sha256=76c42ee8e503a34b2a95fff59bc00e342f9a8f69e677ba63123f5f53cd41ce18
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/bitmap-X11R7.0-1.0.1.tar.bz2]
+md5=bbb3df097821d3edb4d5a4b2ae731de6
+sha256=ac6a5c3f4aa88f39e8f04fe43f00972f0235674ac3edb994c70ac802a1ed0219
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/editres-X11R7.0-1.0.1.tar.bz2]
+md5=a9dc7f3b0cb59f08ab1e6554a5e60721
+sha256=1373ded7c35c38e479122ac1fd8a85682a533612538645c79d09992abcbaab10
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/fonttosfnt-X11R7.0-1.0.1.tar.bz2]
+md5=89b65e010acaa3c5d370e1cc0ea9fce9
+sha256=77fb4d23dfa8c12d69ccfda71f482af9804132fab800610970cd5fe9944a3016
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/fslsfonts-X11R7.0-1.0.1.tar.bz2]
+md5=c500b96cfec485e362204a8fc0bdfd44
+sha256=662c12ac9aa7009d3fdf1d1682417a86a5a332c46f6f2f17887d370c9adf8b21
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/fstobdf-X11R7.0-1.0.1.tar.bz2]
+md5=233615dca862b64c69bc212090a22b4c
+sha256=568896b458a4a8682a78a03248463a182bf3a34c18753a72cb9ca2c1bec3498c
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/iceauth-X11R7.0-1.0.1.tar.bz2]
+md5=92035bd69b4c9aba47607ba0efcc8530
+sha256=46a02c0dddbe80fbd802da47d0a9eac03002deb538b109dae804553fbbdfa7bd
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/ico-X11R7.0-1.0.1.tar.bz2]
+md5=9c63d68a779819ba79e45d9b15d26b1f
+sha256=9c8a1d037135642ab85391f92332fdfc22ceeb3ad1f2c0c9911ac5a62a12ee7d
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/lbxproxy-X11R7.0-1.0.1.tar.bz2]
+md5=d9c05283660eae742a77dcbc0091841a
+sha256=35360dd6160d94a981d923486a026fe91dfc3e0db2f5923aeb782b7e9c5e606f
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/listres-X11R7.0-1.0.1.tar.bz2]
+md5=2eeb802272a7910bb8a52b308bf0d5f6
+sha256=41711ff3c94144b8a561146948b9b5fd49a55756532fa4d254d9a959e6622d87
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/luit-X11R7.0-1.0.1.tar.bz2]
+md5=30428b8ff783a0cfd61dab05a17cfaa7
+sha256=fb423dc3ae75e64a256172c873732fe869ae482409cf1f3e7d980d222f070cee
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/mkcfm-X11R7.0-1.0.1.tar.bz2]
+md5=912e6305998441c26852309403742bec
+sha256=25cba395022c878cf0323da5b2b4aba1cca03001311a4e2d7632d6a199806294
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/mkfontdir-X11R7.0-1.0.1.tar.bz2]
+md5=29e6e5e8e7a29ed49abf33af192693cb
+sha256=409f2fdfd87b5185ca651197c1d1facc22619bc1399bfb8dda8fda1fbb6205b2
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/mkfontscale-X11R7.0-1.0.1.tar.bz2]
+md5=75bbd1dc425849e415a60afd9e74d2ff
+sha256=e83b80b4ccd7863223fac4a2d54974a64a79c635d6bdda0c6e7039f966eae9e2
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/oclock-X11R7.0-1.0.1.tar.bz2]
+md5=e35af9699c49f0b77fad45a3b942c3b1
+sha256=341d98894e76b4e3531c923b22bbb7603788a6f614a795c6285c339f6534bee9
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/proxymngr-X11R7.0-1.0.1.tar.bz2]
+md5=0d2ca6876d84302f966fd105a3b69a8e
+sha256=f1ce23f66ed90c4be505f23c5b659ce48578099521663e788733315f3c36fdb2
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/rgb-X11R7.0-1.0.0.tar.bz2]
+md5=675e72f221714c3db8730daf0b50f69f
+sha256=97aa9c7c1f7f0ef29d6be741a421f92ca27662775c7a5dd7734c38137ff0f82a
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/rstart-X11R7.0-1.0.1.tar.bz2]
+md5=6f33a1bd8e99372b7544ddfcad456369
+sha256=d662e932154df4d99ffcf29cd1efe5adb7b0eb1841ccffe9155b9c5d8055434c
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/scripts-X11R7.0-1.0.1.tar.bz2]
+md5=b5b43aa53372b78f1d67c86301e3dc02
+sha256=b502bc765cffc23189b77ba4d22e843fe03404bfab4e24b97ff4daee58176b33
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/sessreg-X11R7.0-1.0.0.tar.bz2]
+md5=8289a5b947165449c23bdfad9af02b4c
+sha256=3769ad5059a2841a8ee28fc8a7d3a3ca8eb59f4fd46d0bd629829f3841202734
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/setxkbmap-X11R7.0-1.0.1.tar.bz2]
+md5=28b141ab0b1c44a5e90d31ad73bd1078
+sha256=4d710b17c5440518b43d3d1f7cbcb78a62c72f25e48a1b385a0ae3872ec8b40b
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/showfont-X11R7.0-1.0.1.tar.bz2]
+md5=334cb5133960108ac2c24ee27e16bb8e
+sha256=58716b9fb29b8b9397577ebddfe01202f7dcd4be90c1f73fab2fb8794b83b390
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/smproxy-X11R7.0-1.0.1.tar.bz2]
+md5=60f54881b6fb27a8ba238629e4097c4d
+sha256=c56617fd511eac4bdcff5b9b171be0aeacb7d8ddfe48615aa61295cf90b62888
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/twm-X11R7.0-1.0.1.tar.bz2]
+md5=cd525ca3ac5e29d21a61deebc1e0c376
+sha256=2ce51682b63d1f3f3c566bddf84f74105634247d7b4ef559dd3f0199c9e6d41e
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/viewres-X11R7.0-1.0.1.tar.bz2]
+md5=004bf8dd4646aca86faf5aa22b0c3f2f
+sha256=0ee43fd2dd9c8b60fad0e3d89bb04dcb8d7e398b33bbcc603a8e0900c3144a28
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/x11perf-X11R7.0-1.0.1.tar.bz2]
+md5=9986b20301c6a37bb144cb9733bf35a0
+sha256=de56a33aaf723aac41575662b88fca9e90aa493905998290718c02658f516d87
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xauth-X11R7.0-1.0.1.tar.bz2]
+md5=ef2359ddaaea6ffaf9072fa342d6eb09
+sha256=cbb271f6c3586210f31953933c4d06bd34272df9c596f5e26124ca3caf8529be
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xbiff-X11R7.0-1.0.1.tar.bz2]
+md5=c4eb71a3187586d02365a67fc1445e54
+sha256=c9c899fddcb5053d6cf2a00a933b6e6b0429af547efbe85f89ad3bb35176bbec
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xcalc-X11R7.0-1.0.1.tar.bz2]
+md5=c1ecea85be15f746a59931e288768bdb
+sha256=a1af9c7474307077e69cf86c185c77a3a1454ada64e3abf766fcdee6e92b4fd6
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xclipboard-X11R7.0-1.0.1.tar.bz2]
+md5=a661b0f922cbdc62514bfd3e700d00fd
+sha256=74e949dc0fc1d275b60a170975a9bb99a12153687f2a3478b963b1ae4c607d96
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xclock-X11R7.0-1.0.1.tar.bz2]
+md5=00444fed4bf5cd51624476ee11dd1fab
+sha256=eb93d5278f5e46f8d7ff5b53a10a03fef09326e72966c3a0b8faa255436ee6b9
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xcmsdb-X11R7.0-1.0.1.tar.bz2]
+md5=1c8396ed5c416e3a6658394ff6c415ad
+sha256=6e1cdf207ca998acd4e1cc991bde47fcf9d01d24ba733f9d3afe3c64843ef838
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xconsole-X11R7.0-1.0.1.tar.bz2]
+md5=f983b589ba9de198d90abee220a80f81
+sha256=f62bd7916589515d338055cf977b544d031883659f0ec97cbbd08441256f1059
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xcursorgen-X11R7.0-1.0.0.tar.bz2]
+md5=4d7b26dbb4442e89ec65c4147b31a5f7
+sha256=8290616302932e72d4224cbe27d872efa5f44b0b8553ded0bbfb3537abe76907
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xdbedizzy-X11R7.0-1.0.1.tar.bz2]
+md5=ceaccde801650ffbffc1e5b0657960d2
+sha256=4511dc4df6ebb320a4a516b3b712c86f6924e5ee9832618f58ebba06c64712ea
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xditview-X11R7.0-1.0.1.tar.bz2]
+md5=21887fe4ec1965d637e82b7840650a6f
+sha256=c3662dc4e97f7eb0bbcd7cf952bd9f67218e8ceb8f5418fb6bf61ee5e8ec0392
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xdm-X11R7.0-1.0.1.tar.bz2]
+md5=9ac363721dbb8cd39aa1064b260624a6
+sha256=9bf8895b98fb35ee38ac713ce83c80abdd8e33de278e1ddf982a293c31b56b81
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xdpyinfo-X11R7.0-1.0.1.tar.bz2]
+md5=2b08e9ca783e3aa91d7fb84fdd716e93
+sha256=d97f2872f5400f7fb5c0ad9442eced4bea55ab523de27417bd479db0071e3fed
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xdriinfo-X11R7.0-1.0.0.tar.bz2]
+md5=75b8b53e29bb295f7fbae7909e0e9770
+sha256=84753f1c33be507ed9c1cc9d5e78565cc61e60d1403e499d7f25603d9a3b4f6b
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xedit-X11R7.0-1.0.1.tar.bz2]
+md5=19f607d033f62fb1ee5965f4236b19d4
+sha256=cfbea0872e9963ae3ff61b07000f92d840b65244eec0e1a9750a58a03d70db93
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xev-X11R7.0-1.0.1.tar.bz2]
+md5=5d0d3c13b03e9516eafe536e6bd756c7
+sha256=eb7ea9a7917fa6d603529e76f793e56baefa87a3034602634c73f9b284adc8b7
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xeyes-X11R7.0-1.0.1.tar.bz2]
+md5=3ffafa7f222ea799bcd9fcd85c60ab98
+sha256=e93bb322fe96ceabd0581bb70101aaa1001b0b8f894b3ae0e1fa2e4b38f41af2
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xf86dga-X11R7.0-1.0.1.tar.bz2]
+md5=f518fd7ebef3d9e8dbaa57e50a3e2631
+sha256=c8c90650a4f0c7e7684738a5f2fdbb92c8278afb315113ae6129b2d0bdd0a865
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xfd-X11R7.0-1.0.1.tar.bz2]
+md5=26c83a6fe245906cc05055abf877d0f2
+sha256=a3fe35b19aa957e5261a12ef78de2c62b47796aa612b2334088b3d98dcd77e8f
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xfindproxy-X11R7.0-1.0.1.tar.bz2]
+md5=5ef22b8876bb452f670e0fc425a12504
+sha256=33e4334126ee11aa6b68e0dc2c1aea0f0d37144240f650f21e10a90db9b05b6c
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xfontsel-X11R7.0-1.0.1.tar.bz2]
+md5=d1df7b8622b7f8ebca4b2463118d7073
+sha256=b87b5f171cb4d61e35ff0fda9231166c4b6132fe512b05e8ff63a91be47eab43
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xfs-X11R7.0-1.0.1.tar.bz2]
+md5=a297da3d906110e9c29ec56c5ea578a8
+sha256=5d9df9048863f6d281fc1b71601ff7d31d5075eceeba462b3a32dd4734440c6a
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xfsinfo-X11R7.0-1.0.1.tar.bz2]
+md5=55ca0cfd09b1c1555d492d6961d9af46
+sha256=8d5f6ad0318a8958eaf5772657007ffb545a36c9cd8190f2511cfa03c0069d63
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xfwp-X11R7.0-1.0.1.tar.bz2]
+md5=e1ef3fef10d1f7fbd936794982a8f0be
+sha256=d333ce08122e6cde1a9d4fc7cb8e58b13e9335b52fd249046e8380f23d9bf429
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xgamma-X11R7.0-1.0.1.tar.bz2]
+md5=07167da3f6b21985e27174ec70f213c0
+sha256=ec744335f06c070d30f7f256262f6326c2cfff35a0ed6178e7be18ad44ad8a86
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xgc-X11R7.0-1.0.1.tar.bz2]
+md5=8cd01cf558c3eed738115abcf720277d
+sha256=6151d08a12e7a9874738c46119c6ffe8383d1fe6c5d10ffc9d88e2adc8e454e8
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xhost-X11R7.0-1.0.0.tar.bz2]
+md5=76c44e84aaf4ad8e97cf15f4dbe4a24a
+sha256=5e3db5f2387457f67798d664ed67c67337d2f84c45f15d986ee2f46f9b45d0d1
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xinit-X11R7.0-1.0.1.tar.bz2]
+md5=6d2df59fa328cbc99c0de98bc2e14597
+sha256=e55c61ede6760ce0d8eaac6dc386850c7873311ab038c69338e35559ec0bbd02
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xkbcomp-X11R7.0-1.0.1.tar.bz2]
+md5=46d1e015897200d4dfed64990abaa8b9
+sha256=35825e80fa1905111302b5c069f5419f5fe63b370f9c437adb8c901fc10cfd16
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xkbevd-X11R7.0-1.0.1.tar.bz2]
+md5=7ba0496f079552d1918d73bd09bde9b2
+sha256=9b358d085bb4fcbfcb0a928cacd4825ba918ef21a2a5e4a3ee401f09abc97f90
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xkbprint-X11R7.0-1.0.1.tar.bz2]
+md5=6235c39690968d0a9a4c1b1c16c8905a
+sha256=d2e9c3c28e23010441ce40c48bda7adabd338a256cb9b99848be6ed937fc10e7
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xkbutils-X11R7.0-1.0.1.tar.bz2]
+md5=798502eca0c6c3e8c02d76fabb910532
+sha256=8178a1c45af6e844ca0adcfe72fbddcbaebf3f305452a83e39768373981be92f
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xkill-X11R7.0-1.0.1.tar.bz2]
+md5=35f47fd58d75c1ea5f414b21a10bdbf3
+sha256=fe59dfdcd43faf8efa778f9b2390525a606a62dcd7a70774982bc19301f6a3ce
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xload-X11R7.0-1.0.1.tar.bz2]
+md5=11080456822146ebc0118b15f4b911d9
+sha256=6b5b3ef58e6646f004a5f1cbc6be8f32b824cfbf78a30bf242e4f07083668770
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xlogo-X11R7.0-1.0.1.tar.bz2]
+md5=0314b2f5173da64957031400638fa5f8
+sha256=1397377bae07e8907f73bc445e967d4d4400769e683c2119598d952c8ad28131
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xlsatoms-X11R7.0-1.0.1.tar.bz2]
+md5=737b4d7893aa886e8e4181c94380a421
+sha256=6a079872319ac7934578cace787f4f89ea87258f6dd8b33e5b4359be1256e9a3
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xlsclients-X11R7.0-1.0.1.tar.bz2]
+md5=cc0d64e90eab0b90b38355e841824588
+sha256=05c269e322ed1ef54b8a32883c8676f46330ec70d85b0a158dbefc2b0e91ceb8
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xlsfonts-X11R7.0-1.0.1.tar.bz2]
+md5=e8681e5671e7f01922ce6c8f2327e602
+sha256=1f8d23d5f7dac0f06bc6c6fe6ed7d8e620fe1b0057654da314e24f7c6faefc6f
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xmag-X11R7.0-1.0.1.tar.bz2]
+md5=38ac487ac1b75be0253fe7f973947386
+sha256=d039d857c6d334d481452c20f5e419b1e120e03e6c9af709f071d9c00ffd9cd1
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xman-X11R7.0-1.0.1.tar.bz2]
+md5=a4f21547120952aeb8e5663ebd72e843
+sha256=3d159c703ba901657d9633b239d39b21c8de68a2c3358fd1aa4175d20359ef87
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xmessage-X11R7.0-1.0.1.tar.bz2]
+md5=5a17607184fd348c2b36b5499ae9d2e6
+sha256=e9cb13ed6ae88cdeffe200ea1ec008b2413f182171c9d1ee7dede049f61df473
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xmh-X11R7.0-1.0.1.tar.bz2]
+md5=53af2f87dc096d84f11ca6fbd6748b34
+sha256=e86cbfb7d4fcad741751afd2e1304c41af42af3d95d09745cc27fb34200d5b8b
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xmodmap-X11R7.0-1.0.0.tar.bz2]
+md5=240ed53111925e005d2f138ea98ef5e1
+sha256=017530da4262a6e52c87cb8ea47aebc83fcd82346cc8072f02ba9de060407be3
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xmore-X11R7.0-1.0.1.tar.bz2]
+md5=99a48c50d486b7c9098b4f5598782cac
+sha256=0616d2c8d7aa990787f6c27e412c65b3f5e1b9a42b12562700bc2da953def4c1
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xphelloworld-X11R7.0-1.0.1.tar.bz2]
+md5=80c9a23c7efb72b9674d7af6b7346992
+sha256=4fbc61ec9405b0797318dcf54f5c3a3cc83221f27014563113d2f3f78b3982bf
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xplsprinters-X11R7.0-1.0.1.tar.bz2]
+md5=1d0a68dada5e14ab07d7660abd4d03e3
+sha256=4f54239ec09f4555d15969d44ac84719e739f78071b0f7855ec620a1f0257a3b
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xpr-X11R7.0-1.0.1.tar.bz2]
+md5=487b5ab96b373acb80808758ce23eb49
+sha256=8c77256313114c80d49ac5db0013c439ddf9888f2d265f66c9ee3da2de46cdf4
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xprehashprinterlist-X11R7.0-1.0.1.tar.bz2]
+md5=3907bce78d304dedb2a5dd6944bd2ed5
+sha256=cc28f5d046d60c12e71b88863c502cca3c6457a07996bd54974debe115f11d73
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xprop-X11R7.0-1.0.1.tar.bz2]
+md5=6730f0fbad6969825580de46e66b44dd
+sha256=295a7f8bf08ca36c2db0defc1e5d38e498e7a7b6d7a0a78853e87ef71645388d
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xrandr-X11R7.0-1.0.1.tar.bz2]
+md5=e433ccca3c4f9ab8609dfd1c9c8e36ea
+sha256=40ccd95d26c43d326fb8396ca758334bf34854336007b46285d3e881cb66e73a
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xrdb-X11R7.0-1.0.1.tar.bz2]
+md5=a3c1fd6f5391de7f810239a912d39fa5
+sha256=adf3f97fcb0d768e19058e94dd4aaec70ea61afa8077f6c6e99aa70bc8564e14
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xrefresh-X11R7.0-1.0.1.tar.bz2]
+md5=5a46d5fb82aeeb4d6aac58c9cc367439
+sha256=9915ee47ff85d83eee825b1a44857b92b4b16558e4bf436671ae7a37f4ab65ad
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xrx-X11R7.0-1.0.1.tar.bz2]
+md5=9de3b04392c98df59c79a34fd51c385f
+sha256=2a177a9f36c92fdc109260a7c04980db6920fb9d3529d79e9bc019ae7f5a310e
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xset-X11R7.0-1.0.1.tar.bz2]
+md5=a0350e334a215829166266e2ce504b1c
+sha256=db17d017fff06df2e47f9d123bfb4f1d63a063eb3c08ec017292cc206bb293d1
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xsetmode-X11R7.0-1.0.0.tar.bz2]
+md5=d83d6ef0b73762feab724aab95d9a4a2
+sha256=ff7e076c77c35f746bc01d15d3ff9e203a45a850ef7e26ef11726b0b9f709e4a
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xsetpointer-X11R7.0-1.0.0.tar.bz2]
+md5=195614431e2431508e07a42a3b6d4568
+sha256=103e35a5523e9237ef3a27bb8e08ab4443de5ceedfe5784be48afde6fba6cd06
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xsetroot-X11R7.0-1.0.1.tar.bz2]
+md5=e2831b39cd395d6f6f4824b0e25f55ed
+sha256=8327c294491dbd13c06c8d5d6bf971dca215f59facce99d3e4d0c170d7f0fe44
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xsm-X11R7.0-1.0.1.tar.bz2]
+md5=e3588272ce3b7dc21d42ead683135a8a
+sha256=c66e75117b4aa9dc3272f1568f83321a1273ab50309fcb4bc64e62d124596a49
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xstdcmap-X11R7.0-1.0.1.tar.bz2]
+md5=e276aa02d44dcacf5ac13aa0cabd404d
+sha256=3af07e423eddf28593a424f6cd53291d1413b905ddd6915aaa3f44007b238a8c
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xtrap-X11R7.0-1.0.1.tar.bz2]
+md5=6d56946322d2875eb33f25f5e5f621a3
+sha256=be25959a38d1e2d3b54e5620863a95c2eb712c6b4bce698b88ccff66d2964559
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xvidtune-X11R7.0-1.0.1.tar.bz2]
+md5=a12e27fb732cb115b6adc4c724c44c5d
+sha256=f7b3925d7e9981d146d3e5774de0521e6d48e2ed99841f538f267e8bc58bf5cd
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xvinfo-X11R7.0-1.0.1.tar.bz2]
+md5=39d79590345bed51da6df838f6490cbf
+sha256=5b52a7241aef8e3372fb15f58f2276e043e19a87269aa6a0330b5823bc3697f6
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xwd-X11R7.0-1.0.1.tar.bz2]
+md5=596c443465ab9ab67c59c794261d4571
+sha256=8ec0abf34ec88f3681666c7727749bac1ccf3f935c1c7f78c009a764f7f0fb11
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xwininfo-X11R7.0-1.0.1.tar.bz2]
+md5=3ec67e4e1b9f5a1fe7e56b56ab931893
+sha256=75bc03d2eafd4c7139d707fb86b023376d5a5ad2e9315dad53b250cb19e8bce1
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xwud-X11R7.0-1.0.1.tar.bz2]
+md5=e08d2ee04abb89a6348f47c84a1ff3ed
+sha256=a10c7950ad632f07426ea9516b3743c562da8403f0da0cc678277031020f1586
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/data/xbitmaps-X11R7.0-1.0.1.tar.bz2]
+md5=22c6f4a17220cd6b41d9799905f8e357
+sha256=3d7b78cf588871caa00ef79f5f66657803cf9a07350ac5dcf56fbe5ca2a794a8
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/data/xcursor-themes-X11R7.0-1.0.1.tar.bz2]
+md5=c39afeae55a7d330297b2fec3d113634
+sha256=730029a4f23661094f0d246595041e51ec0b55e7405fcd5affee1ec7f9aba813
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/data/xkbdata-X11R7.0-1.0.1.tar.bz2]
+md5=1f706f92334ee65818512b3b45d7be65
+sha256=37af4603fa399760a055cc994c61b25778febf676af3fcfad84577f484a174e6
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/doc/xorg-docs-X11R7.0-1.0.1.tar.bz2]
+md5=ac0d76afa46ef5da9e1cf33558f4b303
+sha256=a3adf1c61247254cc81c80a6c020fe6a9fe0abbdc5f66f8631ec87a1a356c4ae
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/doc/xorg-sgml-doctools-X11R7.0-1.0.1.tar.bz2]
+md5=d08d4fd10ac46d8b4636efe4d8c0de74
+sha256=2a676fdaf45a7a1e40f4df2cbd09d542672c2d0fe1f890a874b8719e0a448ad7
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-acecad-X11R7.0-1.0.0.5.tar.bz2]
+md5=b35b1756579ebe296801622bdf063ab1
+sha256=699ba1716f74db0aaa66aa510ebf195560ff09f88001f98bde9275d2826f30ea
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-aiptek-X11R7.0-1.0.0.5.tar.bz2]
+md5=9ee5109ef33e281ce0784ad077f26cee
+sha256=62d1dfdc2f902d016999861ec3fd58b4630341e8f4df45e65c7bee730b51fd8e
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-calcomp-X11R7.0-1.0.0.5.tar.bz2]
+md5=f4199b5df063701462d5a8c84aadd190
+sha256=f3f913f627e0871a65a4e18cc3df3b0188bfe0e73a755436921488756753f989
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-citron-X11R7.0-2.1.1.5.tar.bz2]
+md5=62b5405d337bc055bc9345565cc0da8c
+sha256=fbac5de06334b6757d91fcc2abc08e2c56c7a57dcba1abdb5c99133decf7f795
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-digitaledge-X11R7.0-1.0.1.3.tar.bz2]
+md5=8342f3a0dcdaa1120af01dd25dabf0d7
+sha256=964a13291f412a6da62d3ad98bb8afa21ad7c884eb6234f279a0d40d7f912b58
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-dmc-X11R7.0-1.0.0.5.tar.bz2]
+md5=fdf127a2d419f7c2e02bec27273091d3
+sha256=6e03c373f3aa25b7305e927d76dd9fd233d83a3ec08bf517e8cbdd2b00d32be5
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-dynapro-X11R7.0-1.0.0.5.tar.bz2]
+md5=89dbb839ab4c5fca3dbc3c2805a7efb9
+sha256=28a2707b4633b99fa9b5fc5106d5eff9445344e50bd6a05a41094178a508e11b
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-elo2300-X11R7.0-1.0.0.5.tar.bz2]
+md5=6009a17f13a37bfde8b60c2fba5b0e5b
+sha256=6a4dec968d92c7a73dc801367c2743062b3a09b37bb8ed7ba720f435f1f53703
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-elographics-X11R7.0-1.0.0.5.tar.bz2]
+md5=24c33f833bb2db72a07c3d28bfc0aae9
+sha256=f1b7f84175d33f4d18c83cd0d37bd3962acd668922fa074a8ae29e18517cdda7
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-evdev-X11R7.0-1.0.0.5.tar.bz2]
+md5=d982c6f185f4c75a4b65703ceed7be06
+sha256=ba53e8ce6bfa01da7fa86a31853542a71722b41b511041bdb58cf66c10f3edb4
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-fpit-X11R7.0-1.0.0.5.tar.bz2]
+md5=fc0e11fefc322623914a2d819d5b6d51
+sha256=8f131c2b26b1e0e16e9dfacc73d457bb16cf6e455a1dbdc382f4a3e3b219c703
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-hyperpen-X11R7.0-1.0.0.5.tar.bz2]
+md5=0c4f2a6390e3045e4c48a48b47b6332c
+sha256=708011ed8fdb6d321e7ca91787ff06c7bcb011cc4a3b5d6c0c02562222da7ef4
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-jamstudio-X11R7.0-1.0.0.5.tar.bz2]
+md5=49de35ca024be2cb785832ae37ec30d0
+sha256=ed5c17b702a43192710b7476f3a8540d04bc800554fd05e348be4f510f651dfa
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-joystick-X11R7.0-1.0.0.5.tar.bz2]
+md5=9e3ba60836f4c1d2e4cebc63a28321b4
+sha256=9b69192a4368bafeaf94432ec50025dd3f60340290ef2500f6032159870ed489
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-keyboard-X11R7.0-1.0.1.3.tar.bz2]
+md5=8fb8a30fd9d7f152a1aef4eb8ef32b3f
+sha256=e82d510157d13be37eed604cfb0d9355c054c4d3ac39bdef0c6ef320f2973d77
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-magellan-X11R7.0-1.0.0.5.tar.bz2]
+md5=fd7367f467dc3302604274cee59a7c7b
+sha256=e13fb01c5b86b9409d1e4024c06b55a18d5c2eba98370e73870caa19f8ef973b
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-magictouch-X11R7.0-1.0.0.5.tar.bz2]
+md5=a51d84792b8c0079d7c8d13eb17acf31
+sha256=1e384f8cf5f516c3b460b8e1a94ef98dba9681a3ca0a2f2fb3687a9df12d00d5
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-microtouch-X11R7.0-1.0.0.5.tar.bz2]
+md5=0c25e0340b6483fb2a600b0e885724a2
+sha256=f113b6649719261da21137d4b18168862d37efc1a79db2dcd1e078f6dc9d8a3b
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-mouse-X11R7.0-1.0.3.1.tar.bz2]
+md5=12a908e5a97b1b03e8717abf167f4f27
+sha256=183c1cda6550c8821ef4b8d13e681a32813bcd32b6cf34a75d3870e399fa292d
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-mutouch-X11R7.0-1.0.0.5.tar.bz2]
+md5=4758e667bfbba517df2a58d51270cfe2
+sha256=f46f328c9d8ef4dd6fe118121831ff4cd34ea9f06b198f548af4c703a1aab771
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-palmax-X11R7.0-1.0.0.5.tar.bz2]
+md5=d138024a20298304af883631d23c5338
+sha256=0756cb4d78cd896811f06675b986bdaa8d48ef2b3c53bf68001634fe1f7806c9
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-penmount-X11R7.0-1.0.0.5.tar.bz2]
+md5=065b1cf862864741aebcfefcc7c09539
+sha256=314492cea0998182623f2a67461d64df00b910acd052c3a50f9349ead740151a
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-spaceorb-X11R7.0-1.0.0.5.tar.bz2]
+md5=193ca7b1e87c3995b86f15a01b63b297
+sha256=e5fa2e430b39ddfe443b6c433d975f02025b5fa90f31fa249942d8bf01452bc4
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-summa-X11R7.0-1.0.0.5.tar.bz2]
+md5=61d780857e5dc139081718c075e74a01
+sha256=6456ddecc0e1b962b5f14b98b81d2e936cb48dcdacdd871dfa0e24c0d252498c
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-tek4957-X11R7.0-1.0.0.5.tar.bz2]
+md5=df633403c91a48c6a316c6a5f48e53e2
+sha256=1cc4a964e2b407d2b9ebbac0bf38787e572d9bd88759fc0b229f588ac90ed139
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-ur98-X11R7.0-1.0.0.5.tar.bz2]
+md5=9b1530b3dcbb77690ad0e61f60489899
+sha256=2cbcca2d5c62de8376bbc9e1fea6f4564ece32f6f6b5e926b199c2e60a3dae7d
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-void-X11R7.0-1.0.0.5.tar.bz2]
+md5=c7ae53dee1f3e95fa5ce9659b34d8446
+sha256=ca90a522b78114d72748164c7a99274634cd2b50953f9c52f91b31746c790b5e
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-apm-X11R7.0-1.0.1.5.tar.bz2]
+md5=323911ab16a6147d3cabceff9336a3d2
+sha256=ceaf4a611b8ee8bc31bc784f1012b0d6be6380e8823f6bf03a9a1ee737264a78
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-ark-X11R7.0-0.5.0.5.tar.bz2]
+md5=342937e275dbc92f437417a3186a8222
+sha256=47aa2ecf4129e72e049796571e3125ff3bc8dae7fe31e27d361470d4a3b8d548
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-ati-X11R7.0-6.5.7.3.tar.bz2]
+md5=92525195a7a36f5ffbffcb4e6a564e50
+sha256=094da5eae789e50d1ebc4d7823d4c8ac701e3bbe387c0ff63285e2ab32aad1f8
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-chips-X11R7.0-1.0.1.3.tar.bz2]
+md5=90f23505faceac30d3f46ab94f7293e1
+sha256=2df2e34dc61907fb3c41b4590f51d39f951d2d74422d84f1f7d53ef6f5b25352
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-cirrus-X11R7.0-1.0.0.5.tar.bz2]
+md5=7708693ad9d73cd76d4caef7c644a46f
+sha256=29e6fdd67e8ec51c534f6123f9935a165711255d935fb9cb28cd44f9db278b3e
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-cyrix-X11R7.0-1.0.0.5.tar.bz2]
+md5=14f868d16554b19fef4f30398a7b9cf1
+sha256=6eb51d5d4489083c8a1eeabc1fbd22baeafe6486a7940516d1e2b741564acd06
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-dummy-X11R7.0-0.1.0.5.tar.bz2]
+md5=462654f9be7e3022f97147e3390db97a
+sha256=f50f6d3d7fd79c5ce40ea6039a2fb82f136b13c18afbc2b7e941d41d6568b698
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-fbdev-X11R7.0-0.1.0.5.tar.bz2]
+md5=1cf374eeb9151ac16a7ec2cd38048737
+sha256=c6032ec1753a0f5975b5a7488ca3ca0d46f84bc5dd8fcb42eebd807c7faec765
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-glint-X11R7.0-1.0.1.3.tar.bz2]
+md5=f14c2f1696c05760207adcaac856e5e5
+sha256=d5b4cb7b490edc3be57c40a00299002b60b8060396b3c902b2bf92090fcbd940
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-i128-X11R7.0-1.1.0.5.tar.bz2]
+md5=078eed8c3673488ee618dfc7a3ef101b
+sha256=543d7b8bc0c9e7889c686a647f98641f0a9b052e58321a8a17518d680e6db95a
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-i740-X11R7.0-1.0.0.5.tar.bz2]
+md5=625448b13ebe2a13b7defad1efec05c4
+sha256=b0f2f2dd17bd01018fa91d042214b596f9d2303a81a0b86de102400b00f87d09
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-i810-X11R7.0-1.4.1.3.tar.bz2]
+md5=fe6bec726fc1657b537508bbe8c2005b
+sha256=1d9227ba301152738c6b498ec512ddfa67ce7c09e40b883fdbf43cd31e85b523
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-imstt-X11R7.0-1.0.0.5.tar.bz2]
+md5=cc949688918b78f830d78a9613e6896b
+sha256=738463dbf1980b9d0f95936a2d951dc51bd776c7949215c2456580948660669e
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-mga-X11R7.0-1.2.1.3.tar.bz2]
+md5=cb0409782020b5cc7edc273624ffdd17
+sha256=8f4ef9e7a82aa1f4624b2d87da8ff0472e3f5c2ccdc7998f4418c6906cadc915
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-neomagic-X11R7.0-1.0.0.5.tar.bz2]
+md5=ffe9015678a41e97bdbd2825066bb47b
+sha256=cfaa594be277cd2a1bf9d796bb398e07319e9b34cff306b408145a37925dc97f
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-newport-X11R7.0-0.1.4.1.tar.bz2]
+md5=d74d9896d57c3caf224ba3472630d874
+sha256=88d4b58efd0dca626e926ce6dc531026c8a10e7126f2e6544e31a2fc00001c67
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-nsc-X11R7.0-2.7.6.5.tar.bz2]
+md5=ab16611b3ec7d21503b16b0a31addae0
+sha256=1f88d5c79cfa34230ed8a9079e6b7df194fce219909b6f7cc232c6511000839a
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-nv-X11R7.0-1.0.1.5.tar.bz2]
+md5=9a88547fe550e20edcc5a938d31e22b1
+sha256=0ce5ad1affc488f317fd297893a469ed20f451b8bd8b12bb36450ecc8c56e5d0
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-rendition-X11R7.0-4.0.1.3.tar.bz2]
+md5=f1a25db74a148dea45115e813027b932
+sha256=4ad42c65f60bc7f3f37f636eae5ae5a9049cdd4df5c546f93f201fdf16213f48
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-s3-X11R7.0-0.3.5.5.tar.bz2]
+md5=83b9e8a9b8fc1c49bda2811358e5007c
+sha256=3e11f78c39eb03fe4b9e6a2b68347420297fa38cd36f42235ee4be9c87175103
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-s3virge-X11R7.0-1.8.6.5.tar.bz2]
+md5=d0164c37749ab5f565db9813487e1900
+sha256=064293e33256c5baa8932b42f181ec0d2fc7c0ef5b72e655aefa72d58e2b91ff
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-savage-X11R7.0-2.0.2.3.tar.bz2]
+md5=6b638dd500d10dba1822d3ea5061fc65
+sha256=e4ee3af5989cc9b0c8ff59082f64a564420dc22a2eb9fd53e41da24260a65e98
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-siliconmotion-X11R7.0-1.3.1.5.tar.bz2]
+md5=957de4e2a3c687dbb2e9e18582397804
+sha256=6723b5b7e9ea5b3aebcbbaeaca59790e6a9ab6a7d5324c671454e426854aef3f
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-sis-X11R7.0-0.8.1.3.tar.bz2]
+md5=e3bac5a208b8bacfbec236b5a5b0ef40
+sha256=c578fec74f7028ee28a46a62ab2b22fdcbd6de8cefa7a185e73c68b1d8a12e8b
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-sisusb-X11R7.0-0.7.1.3.tar.bz2]
+md5=781d726a0ca54b65521e383ab99043c8
+sha256=6f972b126774d3d051b2f683e82661c07a1b4787b8ce04847eae80b283c5feb3
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-sunbw2-X11R7.0-1.0.0.5.tar.bz2]
+md5=0cdda1ab939ea1190c142aa8aabfaf83
+sha256=13ab882849164dd677228523b91081fa7bda6955daae128f0b8754759e2f7278
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-suncg14-X11R7.0-1.0.0.5.tar.bz2]
+md5=8f3a734d02ae716415f9c6344fa661bd
+sha256=809a8d57a49c07991d350d4bff955656256afa2c99978050d2aa320d071ef52d
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-suncg3-X11R7.0-1.0.0.5.tar.bz2]
+md5=799a54cef1f4435e00fa94a1d97d056f
+sha256=31831c2f44e7d28c928d816c2c5074cc0ec1f0cc83994bf28e46c7f840ab8866
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-suncg6-X11R7.0-1.0.0.5.tar.bz2]
+md5=2227f3fb86b02148f347e002662e53c8
+sha256=f6ddac6bc0b0a446ff9401467e4219340151498824d98c9274ed38a959330aea
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-sunffb-X11R7.0-1.0.1.3.tar.bz2]
+md5=bb5182e3b74b3baa6fee245ac8bbf09a
+sha256=318bd61c8da6e938d5c707a0c70ba3ada1c053ff3172a918f821a1a015b7b6ce
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-sunleo-X11R7.0-1.0.0.5.tar.bz2]
+md5=deb17a74ba68ee9593ac774206bd3612
+sha256=025e3636fb59dae9285dab63de9181fc8337d1d8438b7ee8f93095d6731deb0f
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-suntcx-X11R7.0-1.0.0.5.tar.bz2]
+md5=74d6ba5e55afdfebff84db08b6589e26
+sha256=38eb95f2991fab51c3442022bcef258de508ebfa0c631024edbdf55a1c4f24fd
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-tdfx-X11R7.0-1.1.1.3.tar.bz2]
+md5=0201415230bf0454384c3bad099520d2
+sha256=65e95c95bc4fa5fdb766b7edf8f39253cf8496fca66bc4bc06f260ab9e9ce504
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-tga-X11R7.0-1.0.0.5.tar.bz2]
+md5=fa67bf34454888d38e15708395cfed87
+sha256=96b071b4e12dcfd027402621b897c6d73818aada4d66f77a8802cc46b9efe206
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-trident-X11R7.0-1.0.1.2.tar.bz2]
+md5=69f28afc7b585d01bb06b1e2f872f8ea
+sha256=b7958afb0204bb1d3c8a33e7a56b94a6d4f09426dbcd141ef327e28f523d42eb
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-tseng-X11R7.0-1.0.0.5.tar.bz2]
+md5=981f46914c1e54742418f0444ea2e092
+sha256=5e67a6893375585be731b0fd822e9c3407a0930f7addbc8cf01fffad57f9d0b6
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-v4l-X11R7.0-0.0.1.5.tar.bz2]
+md5=e422c63bc83717ecd0686aef2036802b
+sha256=54094ee8388e4d067e111f64bf765b677536bc11c71d39c05c83ab6ea336e0f8
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-vesa-X11R7.0-1.0.1.3.tar.bz2]
+md5=049ada4df1abb5aa2b6633ba90353e78
+sha256=c6601cd278ebc30a0d20b49b6284bc21b4910f8ef5d24d1c62daa1591a251452
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-vga-X11R7.0-4.0.0.5.tar.bz2]
+md5=24437857707acc337cab331cc56f64e2
+sha256=325a11679316f3ccd83e4c0712e45301285bda62ff716df232446211fb19cb34
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-via-X11R7.0-0.1.33.2.tar.bz2]
+md5=4d3268d226a40f580ab105796bfed1f5
+sha256=75b73af76c2b0499180d670da94e3fde8e4c8796b2e17ec7bcb8473074cb4987
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-vmware-X11R7.0-10.11.1.3.tar.bz2]
+md5=4df79349e26add4c23f6be8bec347ad4
+sha256=79b0bf59d866d3760fa8a55b4a19d56ae7fa6a962d629a9de5c188cec5c98c9a
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-voodoo-X11R7.0-1.0.0.5.tar.bz2]
+md5=e00cc814ebdb3f3067e075bc93b26199
+sha256=2241fd7e5ae8de43f109f712f5125afa6ec5156068c941d7b65981ac7ce7548a
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/encodings-X11R7.0-1.0.0.tar.bz2]
+md5=385cbd4093b610610ca54c06cbb0f497
+sha256=6bf1203487811d81e792db04fa347f4269dfd96de6ecd6cc590edb3999695d8e
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-adobe-100dpi-X11R7.0-1.0.0.tar.bz2]
+md5=f5de34fa63976de9263f032453348f6c
+sha256=88a76f7d261b5a4466ab28f2985a8af838a03ae03ee83ce3a441ca8332742cc3
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-adobe-75dpi-X11R7.0-1.0.0.tar.bz2]
+md5=361fc4c9da3c34c5105df4f4688029d0
+sha256=f1c7377f6b3b1d91ef384b81f44853e9dc23ff62c11f9f30291e34e9cf6c9d87
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-adobe-utopia-100dpi-X11R7.0-1.0.1.tar.bz2]
+md5=b720eed8eba0e4c5bcb9fdf6c2003355
+sha256=b962d55a91510e70c108b0c34ee928f8016391b40a8bc26d6df85d59c1283af5
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-adobe-utopia-75dpi-X11R7.0-1.0.1.tar.bz2]
+md5=a6d5d355b92a7e640698c934b0b79b53
+sha256=168b326dbad59381d0e0a9544d26f1fb8bd23d3b5478fcc426f7ce470ee8a2f7
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-adobe-utopia-type1-X11R7.0-1.0.1.tar.bz2]
+md5=db1cc2f707cffd08a461f093b55ced5e
+sha256=0ba76231d9af3422376d9c1652ab3f8614bdd52acc2e2a839d911e1a54b5d5b6
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-alias-X11R7.0-1.0.1.tar.bz2]
+md5=de7035b15ba7edc36f8685ab3c17a9cf
+sha256=9c929ad5631e078d97835e5b631532edc8e3690d5068e59393d4aa04288022f4
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-arabic-misc-X11R7.0-1.0.0.tar.bz2]
+md5=b95dc750ddc7d511e1f570034d9e1b27
+sha256=264119a6bda478c5cb226161d660fdc1c24c957b124c1e1cc8e693a06607c6a0
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bh-100dpi-X11R7.0-1.0.0.tar.bz2]
+md5=29eeed0ad42653f27b929119581deb3e
+sha256=8f74dea65f4d39236f29cdf29ffbfe948d1e8a99963ceb9b1b87b081765dba55
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bh-75dpi-X11R7.0-1.0.0.tar.bz2]
+md5=7546c97560eb325400365adbc426308b
+sha256=73ce25f055e0e5b1dc1fa41e7cf7ef3c2903715db9b3a240c1a9c391c1e298ba
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bh-lucidatypewriter-100dpi-X11R7.0-1.0.0.tar.bz2]
+md5=8a56f4cbea74f4dbbf9bdac95686dca8
+sha256=9359a40738e7199d3b77ad0e55e02d0e27a6101aede4bc2a50e3c80d2c02cf03
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bh-lucidatypewriter-75dpi-X11R7.0-1.0.0.tar.bz2]
+md5=e5cccf93f4f1f793cd32adfa81cc1b40
+sha256=8d55580d9cf032127bd17b8d4a6bdcdb09392e76fe8ec075ce7472bc3de8e5d6
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bh-ttf-X11R7.0-1.0.0.tar.bz2]
+md5=53b984889aec3c0c2eb07f8aaa49dba9
+sha256=a268245101a49b1e4c2785a9d809d43fe8564b8243dcf7898a37f25abf4d9edf
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bh-type1-X11R7.0-1.0.0.tar.bz2]
+md5=302111513d1e94303c0ec0139d5ae681
+sha256=f7cede14e92d83d6c3d36eeb9d3d66fdd60372c39e8571cb9ae40a7d8c5182d5
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bitstream-100dpi-X11R7.0-1.0.0.tar.bz2]
+md5=dc595e77074de890974726769f25e123
+sha256=3e9b85774a062d8a9c997d57d45164179e403061f0bb3765e593b6a465c523e6
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bitstream-75dpi-X11R7.0-1.0.0.tar.bz2]
+md5=408515646743d14e1e2e240da4fffdc2
+sha256=71b1b6416e0018ad954225f53c0c9f2eaf8d663e1084657f3cb9b930073b7f6b
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bitstream-speedo-X11R7.0-1.0.0.tar.bz2]
+md5=068c78ce48e5e6c4f25e0bba839a6b7a
+sha256=f44bc571753fd04c09eac7b266d1e0256db9efd0d40ab834920b9dfbb4297d52
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bitstream-type1-X11R7.0-1.0.0.tar.bz2]
+md5=f4881a7e28eaeb7580d5eaf0f09239da
+sha256=f6f09d398a89595bec5825043d36056c0a080aa2d47ae3e52c01a7258119fd6d
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-cronyx-cyrillic-X11R7.0-1.0.0.tar.bz2]
+md5=447163fff74b57968fc5139d8b2ad988
+sha256=28593d204b638c430d3ba1ecd3c87d1416d72d8dd1874a44588371970dc44b34
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-cursor-misc-X11R7.0-1.0.0.tar.bz2]
+md5=82e89de0e1b9c95f32b0fc12f5131d2c
+sha256=5a67c7201388653eda3efaaa62c2f8d4db4ce980a666436418c45575034c42b4
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-daewoo-misc-X11R7.0-1.0.0.tar.bz2]
+md5=2fd7e6c8c21990ad906872efd02f3873
+sha256=c279ef1d730625a1cee74527529be25d0cbc91f7a8bb310ced871ce58cdc148d
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-dec-misc-X11R7.0-1.0.0.tar.bz2]
+md5=7ff9aba4c65aa226bda7528294c7998c
+sha256=e7ee982884f0c1fca409b6b9a946493afb23c9e61d33ac84ec29819717a66b75
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-ibm-type1-X11R7.0-1.0.0.tar.bz2]
+md5=fab2c49cb0f9fcee0bc0ac77e510d4e5
+sha256=534210f571a2166f3b6d4d8e1c37f74574c0130a4a1ed4c7d37b50a98fc95cfc
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-isas-misc-X11R7.0-1.0.0.tar.bz2]
+md5=c0981507c9276c22956c7bfe932223d9
+sha256=c845cfe0b4bc02ac2da322f4dbf6dab1ccfd204e926c40634b91c260316f55f7
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-jis-misc-X11R7.0-1.0.0.tar.bz2]
+md5=3732ca6c34d03e44c73f0c103512ef26
+sha256=7f4c3ce6ddfa52232d00e09b0bc20316b2ab9edd8007c57c8f08a742dd78b546
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-micro-misc-X11R7.0-1.0.0.tar.bz2]
+md5=eb0050d73145c5b9fb6b9035305edeb6
+sha256=23b9c222618a1ea090b3a2b688f4c958b8469ed5f30a5c3e3d54bb02b235b222
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-misc-cyrillic-X11R7.0-1.0.0.tar.bz2]
+md5=58d31311e8e51efbe16517adaf1a239d
+sha256=e332497fe6220c019c411912653a96d26c8706c03456ac8ff3ff5ef38b1cc77c
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-misc-ethiopic-X11R7.0-1.0.0.tar.bz2]
+md5=190738980705826a27fbf4685650d3b9
+sha256=04025084b8f4e7559e34938cab9a70b28cad8174ef5f5f6103abd633b54048d9
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-misc-meltho-X11R7.0-1.0.0.tar.bz2]
+md5=8812c57220bcd139b4ba6266eafbd712
+sha256=cacbf0c055b95db07e4e61716a549195f6ed054ba98d0b443879f57876ca253d
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-misc-misc-X11R7.0-1.0.0.tar.bz2]
+md5=4a5a7987183a9e1ea232c8391ae4c244
+sha256=bdc1b9407305a88bb687caa46443abddef6149d2e681597e12f1c48ec5bf3678
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-mutt-misc-X11R7.0-1.0.0.tar.bz2]
+md5=139b368edecf8185d16a33b4a7c09657
+sha256=386a8d522ffc427e00df8034a8ce834767643e104b0aac141cf1cbf3113dd1a4
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-schumacher-misc-X11R7.0-1.0.0.tar.bz2]
+md5=d51808138ef63b84363f7d82ed8bb681
+sha256=d5c6c9f293ffa4d2cdb312b463381271bb8ad763738396671fdea19456fb38df
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-screen-cyrillic-X11R7.0-1.0.0.tar.bz2]
+md5=c08da585feb173e1b27c3fbf8f90ba45
+sha256=0c6da93cecc16e4ddc6897e90b941d72087bc82cfcbb26ef54e9a59d371c601d
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-sony-misc-X11R7.0-1.0.0.tar.bz2]
+md5=014725f97635da9e5e9b303ab796817e
+sha256=4ea7d0a314b6c7ec65c92f44a3dad39ac9535b1bb9f54768573f60b69902e5cd
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-sun-misc-X11R7.0-1.0.0.tar.bz2]
+md5=0259436c430034f24f3b239113c9630e
+sha256=80094cd7060a08bda61eef0e481800e8f94d4bbb08b8297dcf6aecea99a09a07
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-util-X11R7.0-1.0.0.tar.bz2]
+md5=73cc445cb20a658037ad3a7ac571f525
+sha256=02eefdacc36d5df3707b3e454f5842d06c9c2eb9591e4cae93ccd3d66c78368f
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-util-X11R7.0-1.0.0.tar.gz]
+md5=63bb524570a6bb55dd398445dc1a9cb3
+sha256=0f7eb7e9b8d5c97e6da80e8e54d65d2587ebd0a0c2b0401a89273274ac970b94
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-winitzki-cyrillic-X11R7.0-1.0.0.tar.bz2]
+md5=6dc447609609e4e2454ad7da29873501
+sha256=5b6997057658e6b9e46c350c76fbeb32e597a6bb61c1e86b24494f5327742d1d
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-xfree86-type1-X11R7.0-1.0.0.tar.bz2]
+md5=27a6bbf5c8bbe998ff7e8537929ccbc8
+sha256=cda4fed7e7d462257f7282db3459fa94f94ab70934a401b7a90f5decb044f94f
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libAppleWM-X11R7.0-1.0.0.tar.bz2]
+md5=8af30932ebc278835375fca34a2790f5
+sha256=66d5b9d53816cc158a0f241772cbde60a52aa0a722e28d3ef76a5eb6c82840d5
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libFS-X11R7.0-1.0.0.tar.bz2]
+md5=12d2d89e7eb6ab0eb5823c3296f4e7a5
+sha256=15bedd7f892fbb130e2b9c17d4f927c4904362a7be5b73d07d56d8aa7025f6f1
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libICE-X11R7.0-1.0.0.tar.bz2]
+md5=c778084b135311726da8dc74a16b3555
+sha256=e37cffdb45bbb193e5cb75e74e7e0410554f4b3c3a1fe436debea907778e6aac
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libSM-X11R7.0-1.0.0.tar.bz2]
+md5=8a4eec299e8f14e26200718af7b2dcfc
+sha256=df219b7d5c2fac93bc7c8eb411ed365492eaeb3727ecbb04999890fd694d4e80
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libWindowsWM-X11R7.0-1.0.0.tar.bz2]
+md5=d94f0389cd655b50e2987d5b988b82a5
+sha256=76ccdb6adfc51a4c40e90fe66f599ee4de4787fca44860b851dd4bbf97f7889d
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libX11-X11R7.0-1.0.0.tar.bz2]
+md5=dcf59f148c978816ebbe3fbc5c9ef0e1
+sha256=89a3c2d8324ff9d0d91682503407310f7df30a74915cd253be3a75247b044248
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXScrnSaver-X11R7.0-1.0.1.tar.bz2]
+md5=b9deb6ac3194aeab15d8f6220481af6d
+sha256=66287d18ebe2b239b7b0adc02f4d40b6ea918761e5fde6b8db9c180742618c94
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXTrap-X11R7.0-1.0.0.tar.bz2]
+md5=8f2f1cc3b35f005e9030e162d89e2bdd
+sha256=c7e50c85803e326b3207bcae2bfcb05353f3de18238fb9082bc7ae8f6e329003
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXau-X11R7.0-1.0.0.tar.bz2]
+md5=51ceac78ae0eaf40ffb77b3cccc028cc
+sha256=9500d088e1b3cbf107a93703b81d4636f778492c1c1d14dea6aca7b8354e39e8
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXaw-X11R7.0-1.0.1.tar.bz2]
+md5=ded3c7ed6d6ca2c5e257f60079a1a824
+sha256=076ed9c4b07379b1a957753a3c8fd2a1d93ba460587d450787630f81a85f9741
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXcomposite-X11R7.0-0.2.2.2.tar.bz2]
+md5=5773fe74d0f44b7264bd37c874efc7b1
+sha256=d3d0e8883171a38802400836ba2bf7a40f3b22f669db80e01509c400137c5228
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXcursor-X11R7.0-1.1.5.2.tar.bz2]
+md5=048e15b725d8e081ac520e021af9a62c
+sha256=52bbd6e05de84e94ec11f2734029183411c91e2297779098fb17e162aca5e191
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXdamage-X11R7.0-1.0.2.2.tar.bz2]
+md5=e98c6cc1075db5f6e7e6c8aef303c562
+sha256=bba5acb547fee5c33d582cbd55ad8d03965b582808912a20a457c8b78ca04184
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXdmcp-X11R7.0-1.0.0.tar.bz2]
+md5=509390dc46af61e3a6d07656fc5ad0ec
+sha256=a9f12dc2d3dff9a36904fd1d14fed3cc1b84dfa5661349e88ad164a4107cc878
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXevie-X11R7.0-1.0.0.tar.bz2]
+md5=70b1787315d8d5f961edac05fef95fd6
+sha256=f12576dd82c1467be311bcd18d30f0c8bad6e515302857cec0e8ba011dac9752
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXext-X11R7.0-1.0.0.tar.bz2]
+md5=9e47f574ac747446ac58ff9f6f402ceb
+sha256=5ccefe638c3dfc12fd8c2f2de38ec7e0e0b54bb271fa75f687e474a58edbad28
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXfixes-X11R7.0-3.0.1.2.tar.bz2]
+md5=5a027e5959dae32b69dce42118938544
+sha256=bdcb52a46967aca4367e276f88de35354daa5a62b4d0776e6a89dc43c2d336e6
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXfont-X11R7.0-1.0.0.tar.bz2]
+md5=955c41694772c9fd214e3e206f5d2178
+sha256=47d4de6986f6ca85bc48ecd76188d7f3f009e1aeb640008cab12ac5ca5896622
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXfontcache-X11R7.0-1.0.1.tar.bz2]
+md5=1e3c7718ffaf4f617d3f67ada5a7601e
+sha256=3ae73ba79b28499082ea81527caf032004d5a884bf69ec8b8508dedd913556b8
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXft-X11R7.0-2.1.8.2.tar.bz2]
+md5=c42292b35325a9eeb24eb0f8d3a6ec52
+sha256=0473d1db21968f05b39ff9832b18545ba6b93be76d2e61b04a14208c515680f3
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXi-X11R7.0-1.0.0.tar.bz2]
+md5=99503799b4d52ec0cac8e203341bb7b3
+sha256=64e8ece13fc778b9dd86ef93c4b782de9a1176a005ed7d895552a73acb103d9b
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXinerama-X11R7.0-1.0.1.tar.bz2]
+md5=1a1be870bb106193a4acc73c8c584dbc
+sha256=72b5a499ddce72f1e18963586f7fb67e8ef69f989be455ba2c5d7f4d9b5f467a
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXmu-X11R7.0-1.0.0.tar.bz2]
+md5=df62f44da82c6780f07dc475a68dd9fa
+sha256=537ba847b3a7665e7c84dfa3d6d1719db495e780f87a3e4583671c5aafbd0e29
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXp-X11R7.0-1.0.0.tar.bz2]
+md5=63c3048e06da4f6a033c5ce25217b0c3
+sha256=7f58cb9039eff4f65a60d718797afaf2dfd0bd674e68d1fa83c72a35c54941ee
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXpm-X11R7.0-3.5.4.2.tar.bz2]
+md5=f3b3b6e687f567bbff7688d60edc81ba
+sha256=58bb490a8c97e8b7e57525f105378a65dc5f7571765aea6a8f473d93e8713807
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXprintAppUtil-X11R7.0-1.0.1.tar.bz2]
+md5=6d3f5d8d1f6c2c380bfc739128f41909
+sha256=8349266b3cc8cf743a02e810d67ad500fbd1bdfd5188470d19f4bf97663510f4
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXprintUtil-X11R7.0-1.0.1.tar.bz2]
+md5=47f1863042a53a48b40c2fb0aa55a8f7
+sha256=bb9fab969dc0320a3f47aec440d06f6524cbb64f0ba413b3ae8ffca1a5a60f0e
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXrandr-X11R7.0-1.1.0.2.tar.bz2]
+md5=e10aed44c2e1e5d9e6848a62ff2c90c7
+sha256=6b6a3fcf44621bf163ba2db6dbcc518bff4e8cf74695d1b86595387a3ff3c6fb
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXrender-X11R7.0-0.9.0.2.tar.bz2]
+md5=3f0fa590dd84df07568631c91fbe68ab
+sha256=f240490ce348cedcf09c2c5d170c7d79002790d72ea5dc3d7d702005684ff713
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXres-X11R7.0-1.0.0.tar.bz2]
+md5=cc5c4f130c9305e5bd973fbb7c56a254
+sha256=b8f68d40797e1baadb77053f7834428894696cb345591f732c8c8c7e1ff1f3b8
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXt-X11R7.0-1.0.0.tar.bz2]
+md5=d9c1c161f086a4d6c7510a924ee35c94
+sha256=dad0c901d3a542866dae53df27994498f320fb1981be2820d2ded81f4bf840f5
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXtst-X11R7.0-1.0.1.tar.bz2]
+md5=3a3a3b88b4bc2a82f0b6de8ff526cc8c
+sha256=93d9c1fb831e2aaaab4627835e79ae0550837cbe18a0d6bc91edc2aa3ea67ad3
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXv-X11R7.0-1.0.1.tar.bz2]
+md5=9f0075619fc8d8df460be8aaa9d9ab5d
+sha256=b3bcacd212b1aac947cdfe7e64175255f0302bc5a461e2c8925e3cf491532b10
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXvMC-X11R7.0-1.0.1.tar.bz2]
+md5=c3eb4f526f08862489355a99e3eda1bd
+sha256=fa18853a6cb877e59433fdc1455e5b7fde9bd47c617d97208c7e3e32ff84d774
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXxf86dga-X11R7.0-1.0.0.tar.bz2]
+md5=d2154a588953d8db4ae6252ebc7db439
+sha256=8bc2f9b7efe25f9765db6963501bcb06efef292006e184d5fe3f8b8f2a9c5199
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXxf86misc-X11R7.0-1.0.0.tar.bz2]
+md5=338568c9ca48b801f314c89c97327397
+sha256=94ea1585a426e1d36f9067d65b176c27d3fbecfdf59a076263014292d10862c5
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXxf86vm-X11R7.0-1.0.0.tar.bz2]
+md5=ed59db622581b33ec2a62e12b2f9c274
+sha256=f972bbd632cf9047a28b4c467a2f7c2c72f9b36959a98649b3dfef6bf898b8df
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libdmx-X11R7.0-1.0.1.tar.bz2]
+md5=ae6b3c48f1349fc5dfa7d7c4b9cf4718
+sha256=3dfb83a88826c7250e41180442e891ac39898e46e0c9c1c2aba352d4a4aa9973
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libfontenc-X11R7.0-1.0.1.tar.bz2]
+md5=d7971cbb2d1000737bba86a4bd70b900
+sha256=448a4e35a8685b60829d1b51b498e2a6e4107549fd0458fa17dcc801d29d5f72
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/liblbxutil-X11R7.0-1.0.0.tar.bz2]
+md5=1bcffde85723f78243d1ba60e1ebaef6
+sha256=e485f36d74f477f3d235a05bb67b502dc744092569842d9ab45e2f785f74f556
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/liboldX-X11R7.0-1.0.1.tar.bz2]
+md5=a443a2dc15aa96a3d18340a1617d1bae
+sha256=98a06dfb046c0bf064c12361333a88c6f624df311d8acbc0d25c93fdd6f2c1fe
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libxkbfile-X11R7.0-1.0.1.tar.bz2]
+md5=0b1bb70a1df474c26dd83feab52e733d
+sha256=2260663af7613e35996e7aa1e8911a062e849619bce88086529031e6c479c9ed
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libxkbui-X11R7.0-1.0.1.tar.bz2]
+md5=1992547d377b510517fc7681207eead5
+sha256=6bdd9529c9c3f37f93f6b6fa51541f380b92639b0456c5328638cc6a426e075c
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/xtrans-X11R7.0-1.0.0.tar.bz2]
+md5=153642136a003871a9093c8103d6ac5a
+sha256=c9a049b4367318b53cbad02bc7e3c4450778e3237400a515b2a6272405b8b912
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/applewmproto-X11R7.0-1.0.3.tar.bz2]
+md5=2acf46c814a27c40acd3e448ed17fee3
+sha256=db738777fd573bede8e41f121f31692e8ec70bb822b5dcd263973533273fc5ec
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/bigreqsproto-X11R7.0-1.0.2.tar.bz2]
+md5=ec15d17e3f04ddb5870ef7239b4ab367
+sha256=69d82eff84b1cef08a30e3a79de26df0bce7f531a86d2144ee0d5e43fc21ce86
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/compositeproto-X11R7.0-0.2.2.tar.bz2]
+md5=4de13ee64fdfd409134dfee9b184e6a9
+sha256=a30f75ce8d9fdfdee6c15d1b4428d0b08602b163debf7a8836c09838c2d795bc
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/damageproto-X11R7.0-1.0.3.tar.bz2]
+md5=b906344d68e09a5639deb0097bd74224
+sha256=f71ae6f74fd43af078c052d5e9daa262b6bd28cc0d40938c3743391eaeb58bfc
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/dmxproto-X11R7.0-2.2.2.tar.bz2]
+md5=21c79302beb868a078490549f558cdcf
+sha256=531b957d9589950a96cbdbf6a8376f31203797948baed311553cc2d2870c78db
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/evieext-X11R7.0-1.0.2.tar.bz2]
+md5=411c0d4f9eaa7d220a8d13edc790e3de
+sha256=d7dad048a9496058ec19c63e958e5216c27964d8cb766926fd5dcb96ff879f23
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/fixesproto-X11R7.0-3.0.2.tar.bz2]
+md5=ff8899d2325ed8a5787cde372ca8f80f
+sha256=dd7f67b0f01c253512b53a8a051271144316e82783d5f8391df77fc8c21ed327
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/fontcacheproto-X11R7.0-0.1.2.tar.bz2]
+md5=116997d63cf6f65b75593ff5ae7afecb
+sha256=72a6200a586f27c55b837cc6e537f15499a2f07783a826521c9ad2eaf35a6461
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/fontsproto-X11R7.0-2.0.2.tar.bz2]
+md5=e2ca22df3a20177f060f04f15b8ce19b
+sha256=90a5d9ad2328e682a58c179a7df9eac1193db06423e832b107bd4e7802f660b4
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/glproto-X11R7.0-1.4.3.tar.bz2]
+md5=0ecb98487d7457f0592298fe9b8688f0
+sha256=bbdf932d306065435c98ef5893dc9da46c5929dcdc6ae9a77367ea0f973a8ba5
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/inputproto-X11R7.0-1.3.2.tar.bz2]
+md5=0da271f396bede5b8d09a61f6d1c4484
+sha256=3b48f495f9af74fc7cca2fe913e10ce3d947d1aa5e677722e87620b32f1068d0
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/kbproto-X11R7.0-1.0.2.tar.bz2]
+md5=403f56d717b3fefe465ddd03d9c7bc81
+sha256=abfea195d72a6355dddacaf1ca37187ba9e8ca271af4bf6c38efaba4023b36a4
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/printproto-X11R7.0-1.0.3.tar.bz2]
+md5=15c629a109b074d669886b1c6b7b319e
+sha256=23bfd57906a1787814480f57763ded8fc10a696a903a4768869c56061283e972
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/randrproto-X11R7.0-1.1.2.tar.bz2]
+md5=bcf36d524f6f50aa16ee8e183350f7b8
+sha256=7a5eb58f10d02f58c2f7fb153bb5dc6d72173d5fa3d317bdbd9674f4577e0ad0
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/recordproto-X11R7.0-1.13.2.tar.bz2]
+md5=6f41a40e8cf4452f1c1725d46b08eb2e
+sha256=080aecbaaa5ad81750541ed19fb5ea6ccb45e1c2a5a93e9a2878a42532e40ba5
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/renderproto-X11R7.0-0.9.2.tar.bz2]
+md5=a7f3be0960c92ecb6a06a1022fe957df
+sha256=a875741d110a73952119460fac31e1bb7d0b0aff16f59c2a0a04bcd434c74f41
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/resourceproto-X11R7.0-1.0.2.tar.bz2]
+md5=e13d7b0aa5c591224f073bbbd9d1b038
+sha256=72df7c8fe3ea2177adcb9442fcc49dfde75231abf0300844bf4551393cdd42b4
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/scrnsaverproto-X11R7.0-1.0.2.tar.bz2]
+md5=3185971597710d8843d986da3271b83f
+sha256=b709305970c99107d5121717711b244a7cd7a25e65d08f2e97dea8109f17b3cd
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/trapproto-X11R7.0-3.4.3.tar.bz2]
+md5=84ab290758d2c177df5924e10bff4835
+sha256=522ded5292b80289e13dc8af9a0c11d35417f7079779969835cc8af55a38d006
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/videoproto-X11R7.0-2.2.2.tar.bz2]
+md5=de9e16a8a464531a54a36211d2f983bd
+sha256=074b4576113e89213940e3ea3901dd035ab317255cd78c929aa52d89227f1f37
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/windowswmproto-X11R7.0-1.0.3.tar.bz2]
+md5=ea2f71075f68371fec22eb98a6af8074
+sha256=e575dc15f7ac3bd4dd4241be617bd88806506cf6ff1fc9332a42ae2275a5118c
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/xcmiscproto-X11R7.0-1.1.2.tar.bz2]
+md5=77f3ba0cbef119e0230d235507a1d916
+sha256=f28e8f6baaaa590ed991314c98f16d114e4668b93c5c6e7fb1bf51f3cc7bf6c0
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/xextproto-X11R7.0-7.0.2.tar.bz2]
+md5=c0e88fc3483d90a7fea6a399298d90ea
+sha256=41c091d05943817c0b667192dab8c8f3a3a59c04a66dd311a9573f48a7b70b3b
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/xf86bigfontproto-X11R7.0-1.1.2.tar.bz2]
+md5=5509d420a2bc898ca7d817cd8bf1b2a7
+sha256=56498126f54f123e2ffde0a883ccbc914097818e85bfa6b2a4a47df687f50b79
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/xf86dgaproto-X11R7.0-2.0.2.tar.bz2]
+md5=48ddcc6b764dba7e711f8e25596abdb0
+sha256=c66920f0ad6921a33098008cd01f05eb9a47f550d214065dc6c7072f176c82cf
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/xf86driproto-X11R7.0-2.0.3.tar.bz2]
+md5=839a70dfb8d5b02bcfc24996ab99a618
+sha256=256fd04cbd97b2b96e7ef808b6752561da855ded3835a1bb0d7acbe07758e924
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/xf86miscproto-X11R7.0-0.9.2.tar.bz2]
+md5=1cc082d8a6da5177ede354bedbacd4ed
+sha256=ed0190e3db4c07fe042cfc9d726e3806af83a2e6dfdbd832a7f8c225805bde5b
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/xf86rushproto-X11R7.0-1.1.2.tar.bz2]
+md5=1a6b258d72c3c3baccfd695d278e847c
+sha256=861b881e2ac1e9164048c06217b54dffb5d88feb0bf72abf31984e663843b923
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/xf86vidmodeproto-X11R7.0-2.2.2.tar.bz2]
+md5=475f19a2ffbfab9a0886791c5f89c978
+sha256=2497487e51cb2e94dfe540b9084f625f8018eb0853a699d724be790b26d9fd15
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/xineramaproto-X11R7.0-1.1.2.tar.bz2]
+md5=80516ad305063f4e6c6c3ccf42ea2142
+sha256=f74d0dfb47d23f544a67464427754adf3fbc52b76b4a68834ab1caf8dc5406df
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/xproto-X11R7.0-7.0.4.tar.bz2]
+md5=643259d00e02db8e9a6f4c047281b5d9
+sha256=78dec6988b9eec524ede61e04a379ff52fac23816c2824d7782a6e618997c31c
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/xproxymanagementprotocol-X11R7.0-1.0.2.tar.bz2]
+md5=977ee3fd1525418aaa8bfc55ffbf6fc9
+sha256=f3c25042dfd332c3aee22176b3bcd244a99bc475112a97d9d4cc03505fe7b48f
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/protto/xextproto-X11R7.0-7.0.2.tar.bz2]
+md5=c0e88fc3483d90a7fea6a399298d90ea
+sha256=41c091d05943817c0b667192dab8c8f3a3a59c04a66dd311a9573f48a7b70b3b
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/util/gccmakedep-X11R7.0-1.0.1.tar.bz2]
+md5=328eea864d27b2d3a88ceb2fa66eca6d
+sha256=dc126b21e2e9b93df2587b55418d8593642eaa8e14a74e14bd4cf93262a64443
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/util/imake-X11R7.0-1.0.1.tar.bz2]
+md5=487b4b86b2bd0c09e6d220a85d94efae
+sha256=dec5cee4e529ac218e7d99a550122e065daf29a3a4105d0b545620e4ca57edc4
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/util/lndir-X11R7.0-1.0.1.tar.bz2]
+md5=aa3616b9795e2445c85b2c79b0f94f7b
+sha256=8f563e178ac29c64fcc0144c60d415092d998194a6797c7b45a95802d2df8410
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/util/makedepend-X11R7.0-1.0.0.tar.bz2]
+md5=7494c7ff65d8c31ef8db13661487b54c
+sha256=1caf464a967ff9335a040f2d3ffe050c881efda13c14531be49cf1aa8dabda92
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/util/util-macros-X11R7.0-1.0.1.tar.bz2]
+md5=bc6be634532d4936eb753de54e1663d3
+sha256=e95a45db65b33be472a3134492e348c4cd6edc200d02a85654ffe62bc2e6fdcd
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/util/xorg-cf-files-X11R7.0-1.0.1.tar.bz2]
+md5=f2dd453c37386293fb207431b4a073dd
+sha256=019ba3dbfe2f23e5847cc839a26c630cea20fe8d62df4775a21087176908b9d7
+
+[http://xorg.freedesktop.org/releases/X11R7.0/src/xserver/xorg-server-X11R7.0-1.0.1.tar.bz2]
+md5=0e7527480fb845a3c2e333bd0f47ff50
+sha256=0419124e1bab473f8f9e2d7de1dba8bae2ed1375b72d55cdfb9471dac357ed47
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/bitmap-X11R7.1-1.0.2.tar.bz2]
+md5=5a6228512bcce7d9fabe8fc2d66269bf
+sha256=5cd1a5aeace83a9305f7221e9ec95127b5a26870c619fd00ae48f1962d59f48b
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/fstobdf-X11R7.1-1.0.2.tar.bz2]
+md5=e6f102e10f0861c972a250e4fc57fdc2
+sha256=d8e6067ae7b24bbb4bd32ea1fadc119d72b58a71dc537bf8fb2635f3122d6906
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/mkfontdir-X11R7.1-1.0.2.tar.bz2]
+md5=384ee10787c455c520bcf031989de6f3
+sha256=94c4ab96ad858524b64864482f5623bd18f844b98788d7d4be1f8065a4f13a0d
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/rgb-X11R7.1-1.0.1.tar.bz2]
+md5=5b37afc6009cb754afb79847555d1aee
+sha256=24ee0f94226879038fe1d117c251900400376e942b4c82368d46f9466bb57243
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/rstart-X11R7.1-1.0.2.tar.bz2]
+md5=5efe197e5ffc2ffb576714a8d6054f53
+sha256=9aaff97266bb7725c967abba81506644edee96748f5823bb1864ce8059874e97
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/setxkbmap-X11R7.1-1.0.2.tar.bz2]
+md5=350180a6e4132a2b1262c7a15162c007
+sha256=4323581ddb6150677a36bcb87e3960100a7ea7c80906f0c7b7a27d1e43b055d9
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/smproxy-X11R7.1-1.0.2.tar.bz2]
+md5=668d00f87fe1123bb5bf0b22dec3e32e
+sha256=56f13e337de528530e35b192d84b869bd3d40cbd0320f3d108f7d741503b995b
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/x11perf-X11R7.1-1.4.1.tar.bz2]
+md5=23e2b7b53125d75820fa66db905a6a74
+sha256=202fb66a6ae84c03f6c1164e0bd4386f94285e9d85f65e32989b10d5b65c5412
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xclock-X11R7.1-1.0.2.tar.bz2]
+md5=349447c4398be41856f5cc8b67d5d6f4
+sha256=1584dcd6d9f5206b1b44eb4645b09b809cb8a6b06eef8b7d6dc9615906692e1b
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xconsole-X11R7.1-1.0.2.tar.bz2]
+md5=dd817a0fabe11b1b463492b37247b013
+sha256=be246df3bb5b5ed6bcc3d527f7b6015b3c3f2035090f52729ec4c796f5da20e9
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xcursorgen-X11R7.1-1.0.1.tar.bz2]
+md5=59d8d79fb950a55722c0089496fd18b1
+sha256=ae38043c9dbf99a516f4edc58ef6235ceba975d8b5f374244a2b3e96793d7d5a
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xdm-X11R7.1-1.0.4.tar.bz2]
+md5=03ca4af9bd9c96ce5240c87cad4f7157
+sha256=3c5c42cfd51f9122a3c5761fbf3c5a5fa7c89d101b3b8d19faeefcec53b3fade
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xdriinfo-X11R7.1-1.0.1.tar.bz2]
+md5=36cc576a71bca1177ce793003ed78f32
+sha256=9049146404b9596d70f77a0250d26aff93ba7ba6f42e99f7ee2302a757dfd362
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xedit-X11R7.1-1.0.2.tar.bz2]
+md5=591f578f37e0654cc7d1bb0923191797
+sha256=fb22559759a92f1a6c10716b743509ba20005f223725ec4b6492462bfe9237d0
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xfs-X11R7.1-1.0.2.tar.bz2]
+md5=b1650e876b19741762b654dcdb98be47
+sha256=15094fbb2ebbe067c88ed32a62724b71019ee577c849b25aa6ebf0115efc63c6
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xhost-X11R7.1-1.0.1.tar.bz2]
+md5=d12efb18c7e3025c5e6a6f63144c2145
+sha256=b968a10f52b0c5e807ec4c2c106f3aea301cf0ac00d04299b6961370c82c66d8
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xinit-X11R7.1-1.0.2.tar.bz2]
+md5=05ae7771d2245bf325ff30b13da92666
+sha256=c15dd54ad64e660d5a3e8c1ea0d14e50ba1127aab2e3211b82e3ee1e6c7045a4
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xkbcomp-X11R7.1-1.0.2.tar.bz2]
+md5=ed19a000dc13dae9ee45df8f26cebfc5
+sha256=d6ac3fdf1ad297b8d3a2cff3089feaa53e3ad34bb2c1a977873f9bcd01006d7a
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xkbevd-X11R7.1-1.0.2.tar.bz2]
+md5=af4fb106610b4ee3e36ddfdfe213f40f
+sha256=86ab048045dcd1de690de0b040235040f496c686730ad557c912e0f40edf5c4a
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xman-X11R7.1-1.0.2.tar.bz2]
+md5=89761d6047acca5fb6fb69eb2633afe9
+sha256=a7f195777e6520a912a231c3c97a5fba82d361bfeee8948a18c026da7b04654e
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xmodmap-X11R7.1-1.0.1.tar.bz2]
+md5=0e11f78c00e27e775c4606c7e021cbf4
+sha256=ba875a916f4f9db29c87a48494fec65121ade424a7d98538920d326d8724bed1
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xrandr-X11R7.1-1.0.2.tar.bz2]
+md5=e148e9ba69092127598c8d72debeae90
+sha256=f332a1826674b93c23d53a958c1ad9b144aead34e0222f3a94579f8721987793
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xrdb-X11R7.1-1.0.2.tar.bz2]
+md5=2187897f97f0c818b27f8b8d33f31fa8
+sha256=8be898b0514248d430a4c71be3ffdf6da8e296dabae27a186ed662f38c386397
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xrefresh-X11R7.1-1.0.2.tar.bz2]
+md5=16df4b8f3d844236dfd24efd88e8ea99
+sha256=964f96d9d86140564fa42de6f803bf3065ef287620cec4462d2fae8ca396034b
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xset-X11R7.1-1.0.2.tar.bz2]
+md5=ba1e928daa7146e44e3c55db323884f4
+sha256=f27e8dc088d9ca3aa9493ae13422a8c02ce07543780f1fe09985a0d8f41136d4
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xtrap-X11R7.1-1.0.2.tar.bz2]
+md5=435778018128f2b9402252c9022b44fa
+sha256=291ee660e3737f4bf95ea1499d218df108ed4eecdc3642f597f925f05d422fc7
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/app/xwininfo-X11R7.1-1.0.2.tar.bz2]
+md5=6a80a6512b9286f15a5bc47d3a019bc9
+sha256=55fc617d536e58f088c694e71e1a02d3019c887c9abd2222574f84866b145d5e
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/doc/xorg-docs-X11R7.1-1.2.tar.bz2]
+md5=a7c05bf0897ba99fe01af528c0831183
+sha256=5118569d9214c308b532cfb04df9cc14288f29b307adb00e3eed7f2ab5744efb
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/doc/xorg-sgml-doctools-X11R7.1-1.1.tar.bz2]
+md5=2b820facb5658160a08ff4d9ca906ad5
+sha256=594d9b543d3e183d5f0a3669a2a1e3c8e18b1f10bf6952dc6c614aabe1a288b5
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-acecad-X11R7.1-1.1.0.tar.bz2]
+md5=7ed47ca8feb1fbbe305f3a6732181550
+sha256=b2bcdb4ef8cb9645e476afcedeadbb9d1688f8e8f7bd010f6718a15f1673556b
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-aiptek-X11R7.1-1.0.1.tar.bz2]
+md5=e4ede86a636263c02530005ba958b65b
+sha256=1d0cd2377f61974dca5ed141304ec2b55814af6f9d084ce634694713cdb6da28
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-calcomp-X11R7.1-1.1.0.tar.bz2]
+md5=40a557a54cc8ff58cbc4dc1abd37bb18
+sha256=89f23360b8eadd5bf602712d78d83147245b51424aa06d9b643265f840857610
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-citron-X11R7.1-2.2.0.tar.bz2]
+md5=9d33544dc2beb9643cf329f5f4ab295b
+sha256=362d927749c899b18287afed4c3fff59480bc18cec63e9d104073b585fd3814a
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-digitaledge-X11R7.1-1.1.0.tar.bz2]
+md5=e98d51c032e9324ab961a1353f65b6b2
+sha256=a416d031dcf31c28f0b91866ddf11594d86d5e40437c3b4529f95cc8a2958254
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-dmc-X11R7.1-1.1.0.tar.bz2]
+md5=d26f4abbb4c14a64cb5d19676edc1a58
+sha256=8287cb7ca9af7996850eef6f32b4577f5747049ca635b6b5851fc56ff0b04bf3
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-dynapro-X11R7.1-1.1.0.tar.bz2]
+md5=5121ef14108585c902753ae6e4b813f7
+sha256=fe0f5a9dac8a7fa2e2758bbc5a50190d99b39c5510422ce99efd95d96e13889f
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-elo2300-X11R7.1-1.1.0.tar.bz2]
+md5=7eeb9f2018aef32299c37ad2b3744b8d
+sha256=46d3d459821a321cf82252bd4130134b5ecab0984cc0ec5ce0f0f8b3b6e41908
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-evdev-X11R7.1-1.1.2.tar.bz2]
+md5=6eba3b46ff77b99c44f93d2a08cc6935
+sha256=e1e2b2ffe37e1c70829eef55f700cf3cffd49b3b3e0e2d3bb47c2cdd5db5adf6
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-fpit-X11R7.1-1.1.0.tar.bz2]
+md5=223ef71e07b18e140ef227feef965ef2
+sha256=a11dbb0bdb6bfc65fc2a8b096edd4797816767aabe49349517a51497e373ac0b
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-hyperpen-X11R7.1-1.1.0.tar.bz2]
+md5=8f1d96c97e48c794a61d2e81dcc1d06a
+sha256=798bc6be1385c2c39483553a9f20b022247d364a8acf7e31b3ee2c61e31183e3
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-jamstudio-X11R7.1-1.1.0.tar.bz2]
+md5=ca01cca63fa57600c1cf6b307bb9aa8c
+sha256=cacc590ac4e57f3374e18b9898c6fa8992f31db6e1cf985391fe42c33a29fe15
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-joystick-X11R7.1-1.1.0.tar.bz2]
+md5=6c702a255a1753bb10a3f219a3ac227a
+sha256=240abf3bc4068f9823dbe6e8ff9c63e5aee1442fd85c80122f2ee44c00fe101e
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-keyboard-X11R7.1-1.1.0.tar.bz2]
+md5=d81490c79db78b0c182f0b2a37e02756
+sha256=33b2190541a96b601d22ce6f275b95b0869bad89af8629cf2d8035951f78c47e
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-magellan-X11R7.1-1.1.0.tar.bz2]
+md5=9e4bde8bbc56e99f43164bbe79343360
+sha256=80734e0406f6cd8263c22dd6c34b4cc387d75d27a1cee02c13fb7626df05ba53
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-magictouch-X11R7.1-1.0.0.5.tar.bz2]
+md5=b3ed11fd57bf99ca515d72a16875cf68
+sha256=ac0ff1cfa93d9512d0a2a5b47430f6ecbcb34bce2c3e76542e883e4731ea1f2b
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-microtouch-X11R7.1-1.1.0.tar.bz2]
+md5=cc96f2553c3c94dc963c07bc45a8ebb9
+sha256=2776fe554835a2be94e69cc40af7b4d4f7048d9a36a844ebaf1a792ba0868dea
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-mouse-X11R7.1-1.1.0.tar.bz2]
+md5=e427b9a1dfbed3d4c9de2bf01008fa60
+sha256=ffc07ecf8bdb4cc30d399f06ea950d8016f254614930e3d3fe476ab88748f3b3
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-mutouch-X11R7.1-1.1.0.tar.bz2]
+md5=1f15391dc1b24cd400ccb9c370f568d0
+sha256=751b2ea30696af593320b2cad3f0131b252851020fd3277ca5e1907a0ca29e4d
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-palmax-X11R7.1-1.1.0.tar.bz2]
+md5=7a1404b2ca2d84856d1e43efef69ccfe
+sha256=311ea26819f0ba66eede1fcc88026f6563b42807d0d4a239ea14574ccca26e26
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-penmount-X11R7.1-1.1.0.tar.bz2]
+md5=6093b35d21ce93029b2b28d8b69a1444
+sha256=101bee132f27fe7f53d8242955aa195a174aede066921445bc1ceb3ef1a35f07
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-spaceorb-X11R7.1-1.1.0.tar.bz2]
+md5=62c381b6c56d41a75858c16dccd06394
+sha256=06a4dff5bd575e65ef4984f5f6415e4ef11d2301b028bd3383d45117c125c737
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-summa-X11R7.1-1.1.0.tar.bz2]
+md5=56765c5ee99f67802bca8a1134ad7fc1
+sha256=57460dfa0429c58d598f192aa65661300dd104953073d977ad4f4b15a596eda8
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-tek4957-X11R7.1-1.1.0.tar.bz2]
+md5=4b6b9d67d2a7056a417d26115612ecc7
+sha256=064f75c31ac167e61b9b29c2cef86908ecf1e1a742019298b37799664d08d19d
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-ur98-X11R7.1-1.1.0.tar.bz2]
+md5=7e8288f4f75bcba1e3aaf6ef68664b38
+sha256=f06dea24204c6f3f42c29d1a89f51da801082094e393a716d592d638fa9ddb66
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-vmmouse-X11R7.1-12.4.0.tar.bz2]
+md5=f253663de03e0fbb377ce085947412b1
+sha256=973a51a442d0c97eb3f76af3b148194de8a4187e74f4a68033b0480c6408db42
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-void-X11R7.1-1.1.0.tar.bz2]
+md5=3683affae738de5ef130b6720bdfd6dd
+sha256=4612a45a90fb1aec8cabd36abeaf04f202ecc45d2074427bfa9f368f95514e43
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-apm-X11R7.1-1.1.1.tar.bz2]
+md5=a5320411ba92e637ffb233e9cbb80d13
+sha256=1e43d482e570328abcb8a1e03c62f8c3e3fcaf3eb09dc885503a1add158be0a2
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-ark-X11R7.1-0.6.0.tar.bz2]
+md5=a5bed67815b9e650182806da301b488c
+sha256=06c2462dfa65c32e31a972292531bf686c56c3f9cf21baf814ab0eda5cf26653
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-ast-X11R7.1-0.81.0.tar.bz2]
+md5=ac1595de8397efd740038994b1e9ef67
+sha256=f0020c88ca3f86b4826c556888b476f081b80010ba78239f95e5349835ad8811
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-ati-X11R7.1-6.6.0.tar.bz2]
+md5=c490366e7a663b4d05acb45713be45ee
+sha256=4f471f90fcedd164c5e550afbe2dd3f7247b38c19e3d44b0b8941bbcdf0f1a10
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-chips-X11R7.1-1.1.1.tar.bz2]
+md5=cae9b1b131c1fc1b45ad1a9604fdeb66
+sha256=e851ff555f177ebe6b4d8f961e088a1e2f5947ba739e5b891eb5b3ff4cdd652b
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-cirrus-X11R7.1-1.1.0.tar.bz2]
+md5=0af3af1dc5686e1f487815b231b3dc0a
+sha256=f1a07fb7b78604b2731d9e859d50d59f16ad839da3cb75b19a99fd0500006c0c
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-cyrix-X11R7.1-1.1.0.tar.bz2]
+md5=adb1e6346efd8dfe5dcccd47d46869cb
+sha256=25ba42dedc297ca2a7257fdb4e050e8d61cdd6710c8adabdb3925908b09f9d02
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-dummy-X11R7.1-0.2.0.tar.bz2]
+md5=d53836ac3d6f99920dc168fc22a09413
+sha256=73e08278ecfbcbf08e8fa0e55d347d2945aa4a5a7108cfc8b87fcf7cff6b9c00
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-fbdev-X11R7.1-0.3.0.tar.bz2]
+md5=c209e54fa8dcd3cd3342e84d261b02db
+sha256=d03eb7e5b47e2f1e1a665700f4e22d15651dc949196b0ec880f0d63cafb6814c
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-glint-X11R7.1-1.1.1.tar.bz2]
+md5=99073dcfdfa24df68879c7b01324e91a
+sha256=21b70d71593f123c470dae2b4e75bac7478fffa50503c85b02e8f2c1945417d2
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-i128-X11R7.1-1.1.0.5.tar.bz2]
+md5=9252e33d14c8869d995bf67e445ffb4e
+sha256=4973e6bd62eb307131e179ba313cfa6e79d15184eef5324bba985e2f781bb3d4
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-i740-X11R7.1-1.1.0.tar.bz2]
+md5=d20c7155266f67c588ecb5c4ada446d2
+sha256=51c5c1503c884459d8d4f699aa095d163c2de8c8c4d434f4309916efda4c89f6
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-i810-X11R7.1-1.6.0.tar.bz2]
+md5=fe6cc3eab247c7f0a1d152de0ee0fc80
+sha256=debd142a815e5e2611433f1af97d467e50361ad5b3baa0b54fb4b61b0280ef83
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-imstt-X11R7.1-1.1.0.tar.bz2]
+md5=4d76953e97ee760efb7627e7ac721dbf
+sha256=ea2b875a8bb8ab9d987192dbcb4fb595e511b382d06260baf23a936f7e61fa14
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-mga-X11R7.1-1.4.1.tar.bz2]
+md5=b42cab6a2742bf90a205a991c281f4e2
+sha256=d7e9fe8b79229cb76a2749eb9658dfa96ea580420de05170e5a7b402062a9592
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-neomagic-X11R7.1-1.1.1.tar.bz2]
+md5=7a0830940a0a8e99db1b5c1536b5d212
+sha256=2f3ba4a6775c66de2b269179a219bf1fcfee85c74db273c85784d80209e1ce81
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-newport-X11R7.1-0.2.0.tar.bz2]
+md5=6fa1d4b5f009999284374df1aba92b10
+sha256=7a17d709206ef881d1331c55c507f3d74f8d111060b6beae4152c92ee4b45dc5
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-nsc-X11R7.1-2.8.1.tar.bz2]
+md5=47a9691971e267073f99dbacf27f0ffc
+sha256=41350b8e67713fd9dcb2662e2a481e19b7de5a9d5e6dd7a346ba6662d908209b
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-nv-X11R7.1-1.1.1.tar.bz2]
+md5=b5c7144231652242ef8436ec8898138c
+sha256=8fd91ce003998739677556bf13146e9a3560970ea5342bad5c44c11fc49410cb
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-rendition-X11R7.1-4.1.0.tar.bz2]
+md5=6db91a9a10042424830c094ca870fe65
+sha256=053a60acae48000dfd03b4518fe10c6901240a8858dbfa49e0506557075a3c79
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-s3-X11R7.1-0.4.1.tar.bz2]
+md5=3083c03884d44468e395d26a8d990c53
+sha256=b9b9abdd80c00782ca2e1313016c3d3904dc10a1de1c94d29cd4efafeb1f52f3
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-s3virge-X11R7.1-1.9.1.tar.bz2]
+md5=a7c74570041b2dc9346bfdd6d2a1c582
+sha256=075fba99f38b900416858a39c7cd62f0f3f583ee48cb52d546b12e916fa13c32
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-savage-X11R7.1-2.1.1.tar.bz2]
+md5=7df6bc61424a566325e48e5eb89a21e2
+sha256=efc0b44d7146c0d0f966dd1f0bdf6098e086fec7a33f5b480f99fa17e2bc7cc4
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-siliconmotion-X11R7.1-1.4.1.tar.bz2]
+md5=559b7eeeb598b38afeb1542db6b48a0a
+sha256=eab737423bfd3ecf38ee4a8d4bed86c363bb023ece283a7d515afaa1a11a394a
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-sis-X11R7.1-0.9.1.tar.bz2]
+md5=f3ed22290e677381dd6236ef3bbfc7ac
+sha256=6c4c821941c571b39c950acd57ed4a646a6474070a68a0caa09eb7c3b2715e03
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-sisusb-X11R7.1-0.8.1.tar.bz2]
+md5=11d580e2cc795b902b6f1a326962190b
+sha256=bfdde9894930ffddb93343647a377a1456a830687d3de6fba2010ffe31c7b04d
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-sunbw2-X11R7.1-1.1.0.tar.bz2]
+md5=cae0b4709a2cc489182392094fe0bba3
+sha256=aa656c99ff6ba9c1013b6060c92bbcda2c30ceff72ecc49139c65eb935844f43
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-suncg14-X11R7.1-1.1.0.tar.bz2]
+md5=3d95d9bf985bcf13c0d040a5136334a1
+sha256=f9a1ee987c554607c6fed4ae27adbf75c825d628fe522802a717429a85327487
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-suncg3-X11R7.1-1.1.0.tar.bz2]
+md5=b719d82950a39e33903882c7b878415e
+sha256=9be5402d4f8f32154c01065f7b01a99e61c2deff959715eb8656259c63195adb
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-suncg6-X11R7.1-1.1.0.tar.bz2]
+md5=de3773fe837b633cd7841546358a90b0
+sha256=5b5e22e501b0cf03704fe4737abc49c6c2a2f08a1af28067634f4b69c838e621
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-sunffb-X11R7.1-1.1.0.tar.bz2]
+md5=5bcb5b90c679a046d604d4f98d804d0d
+sha256=38406fc4e7aa1367587517b4a872fe88dd0be9751aa057b84dc62a7238ccffcc
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-sunleo-X11R7.1-1.1.0.tar.bz2]
+md5=821ddc77ada3cd3efb0a2a7bc70bf825
+sha256=6c7339466d5b3cfc3c6ea3ca4ec4bad2f16666f1c472efc4f3048c1f711c67d4
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-suntcx-X11R7.1-1.1.0.tar.bz2]
+md5=fff6932624c93d8e208422913521bb4a
+sha256=275a6082d3d11614dbc737bab505b9dd72bcbfae44af6ccbe115db66bb2ad2f1
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-tdfx-X11R7.1-1.2.1.tar.bz2]
+md5=21500d264bccecde3122835bc39c7793
+sha256=018d27561286d39ea4fea5967f2433c6748da51472bd63db0c74bc32f18417e1
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-tga-X11R7.1-1.1.0.tar.bz2]
+md5=0a9356394373e42b96e9500b51f6c45c
+sha256=250ed70d94070f6f8b14540b6509e6ea25f38616b0e0c443f232cc4028765db7
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-trident-X11R7.1-1.2.1.tar.bz2]
+md5=d08a761111bbfef8d60131d0dc46d784
+sha256=69eda434078afe442c228195593108b860f9d297f7bd29c19c57eedeb59304ad
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-tseng-X11R7.1-1.1.0.tar.bz2]
+md5=62d58d822fdd32e67658bb86ab4e4390
+sha256=cd41d3b58a6ce65ebe4313735a2111880b27b910e5c2e09ea91720ad230f9006
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-v4l-X11R7.1-0.1.1.tar.bz2]
+md5=fac76ca4a56380f0765d884e1b20a487
+sha256=97b5ada6716fd6a2821224fd952fc064cbe721c7446547136794587a2e393114
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-vesa-X11R7.1-1.2.0.tar.bz2]
+md5=16a20d6bf7ba858d511e96daaf43700c
+sha256=54241149f54d8355c54035a6ddf2af8a51ede1a4b72a404ff43b1bba54e465fb
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-vga-X11R7.1-4.1.0.tar.bz2]
+md5=b08b488f1b98d9152f5416091bc85055
+sha256=f0885fc3f865005c06c11e383aa6924ecdff3bf5f306b2b63e2366201d6974e7
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-via-X11R7.1-0.2.1.tar.bz2]
+md5=f3ee13a05c62dd5298bd773dd0e5e951
+sha256=6444f1b61a53b9ea89551d95d32bcf98d4d018d0d3ff9c34626c5c24d1b60507
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-vmware-X11R7.1-10.13.0.tar.bz2]
+md5=ee3c0f3130a68c6833084db5deb441ca
+sha256=a260f9456db466fef3036aff01570f3a12fd275e35bf4c8c4c0ea0f63bf91281
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-voodoo-X11R7.1-1.1.0.tar.bz2]
+md5=0c96fac2d303dd5981de78e704d3a067
+sha256=35409b42f843ac3b352e344253f3075b2d9c8ae2ac5af02962fd67575427e066
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/font/font-util-X11R7.1-1.0.1.tar.bz2]
+md5=69ba2181665e291ea09908a11136c21a
+sha256=ffa19c42c70589996077380a297fe73edb480d20767199459695eca5463448c5
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/font/font-util-X11R7.1-1.0.1.tar.gz]
+md5=a868cad6703290e40b46609ffb17946e
+sha256=6ec8f7024e93568062b5e824f6799d3efcef97c03f798a094a60599a32180718
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libICE-X11R7.1-1.0.1.tar.bz2]
+md5=b372dcd527fd5b5058e77ee1b586afdf
+sha256=feb4abd0ea31b5a0b8344bfcb0e5987eefad723fa45f1d8e1e95c62acebab524
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libSM-X11R7.1-1.0.1.tar.bz2]
+md5=dc10726abe267727fa5e3c552594e3c8
+sha256=efde1a974723b9a0bf3c731903766bce9dd1ead3d0550eb2a4f2396d7b402e17
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libX11-X11R7.1-1.0.1.tar.bz2]
+md5=f592bec1848e55c377b45e629eb09df4
+sha256=b78ebc6a15b40e84d06b709c927d3659306bb333ade3ad07d5d739931489ac7c
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXScrnSaver-X11R7.1-1.1.0.tar.bz2]
+md5=e9a4ed1a499595003b75a34a5633e93e
+sha256=ba067e1e054ce21032cb3cc767c39545496d155681a965fd856783b5793f6608
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXau-X11R7.1-1.0.1.tar.bz2]
+md5=ae91d7080784df34b2fab7bff75cfb41
+sha256=fc4be4e8649324531c1c75b143a50e64e560d975aa970cc8f3e473258413ff80
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXaw-X11R7.1-1.0.2.tar.bz2]
+md5=99f2e6a3ff8e5535710150aa30f5b3c3
+sha256=d555a43a3a96ee2ab797baa357fab3e04856e264d693c7b76fd269d892d0e51e
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXcomposite-X11R7.1-0.3.tar.bz2]
+md5=f5229a7a38bc3d90380b7c18de10db5e
+sha256=142cd1c1958e2cb92ff2975a092a2c519dd5f4c433c9d1d8b6cc9ca967aad283
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXcursor-X11R7.1-1.1.6.tar.bz2]
+md5=a69f8735a0c1fc1df260ca4feaf4be87
+sha256=4da4a8c0268cf999ae89e870e16d66265b7553eaa1b1adf3c16cfdeba1fb2207
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXdamage-X11R7.1-1.0.3.tar.bz2]
+md5=e9cd3688623c9c5a86d7ddb62fd88d76
+sha256=96d4b70a3853894ceb4c71c3b44a0816014894bad63f494ddfcd30a89caa76c8
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXdmcp-X11R7.1-1.0.1.tar.bz2]
+md5=d74e6e52d598544f92e2c185e114e656
+sha256=2ac23a961df72cd91ff0dd8d6f3f7f9bb92b13afceaca9e70c36fecac8dd0f84
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXevie-X11R7.1-1.0.1.tar.bz2]
+md5=0f0eb4c5441a26341d3b774bc9db35ba
+sha256=7d5e274dc78dce6f140c63619aecc3cd7e09753540cf3358235e66f8275d098f
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXext-X11R7.1-1.0.1.tar.bz2]
+md5=273845ee8a2d5e272bb3fa08810512f3
+sha256=322db66638b6db7144ca8028ea968e7aa92d0381e08b99f00ec12193ed624bdc
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXfixes-X11R7.1-4.0.1.tar.bz2]
+md5=d6e91a6d366a72c090cae83da88af184
+sha256=2f0aebe1e3fed4038e3fa08a60d5736fe9fb42895ad040ef351171ebe198dd2e
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXfont-X11R7.1-1.1.0.tar.bz2]
+md5=d25a2c90b882c5f2ff7f13a300aa18f4
+sha256=cdd0f39c99d02b38e804c7dc2c7fdbdd956b8a0b68d2ebcaf7bf434533f58f1e
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXfontcache-X11R7.1-1.0.2.tar.bz2]
+md5=87299d9c6d74b3b68e60bb4b693f5d62
+sha256=9a1d1c4c494203fcc64e697c7d341ccd12ecfcf2983b09746f8a7113443fe3a4
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXi-X11R7.1-1.0.1.tar.bz2]
+md5=2e3782d25d5fa6c98cfcaf055556f5c7
+sha256=c29f0009f525ab002b788236fe5a2288ba6a360b460df61f007a119bbc9bd6cb
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXmu-X11R7.1-1.0.1.tar.bz2]
+md5=d68cacb66ee72e43d0a6b1f8b2dc901a
+sha256=8e29c2936c5f251dd68f1ccaf48f08927436d4b520b6ab37bd608649e644b8e5
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXpm-X11R7.1-3.5.5.tar.bz2]
+md5=00d91c2bcc4d2941e08339f3989c2351
+sha256=10a51e48294376f7e5a8563c64185f657efa053a3f59bd858863f4402fd73ddc
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXrandr-X11R7.1-1.1.1.tar.bz2]
+md5=021e870b637f26be58b4b1acbdea19ca
+sha256=5cfaac877aca06e3be09380037a68c6d2c4a57641fa6994bc14f07c0105cca25
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXrender-X11R7.1-0.9.1.tar.bz2]
+md5=54dbd492753409496066383a500a6e3e
+sha256=0ddcb6f9dcffd4c4c896012bf82da350ff6f1550fb53a99327f21e483c39c8a2
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXres-X11R7.1-1.0.1.tar.bz2]
+md5=60e5bc7d04f8995bd16febcd14c034ba
+sha256=7e293ecf534f1574dc81250ec40db8dc879aa651a83c20396c584de1a25f06e5
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXt-X11R7.1-1.0.2.tar.bz2]
+md5=a617ba32277ecffbb79be6bac49792d1
+sha256=fdfa4fb41234fbda904e796da5f70fce5f8edebf2fd2518fe064677aea5f943b
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXvMC-X11R7.1-1.0.2.tar.bz2]
+md5=f5fe1d950925e5d70401570df3ca8ebb
+sha256=9fd90dd49e89c7e71c41816ad73129cb1d69f9f7e24f99e9f5d757109838b196
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXxf86dga-X11R7.1-1.0.1.tar.bz2]
+md5=8350ee065737f68072c4b59bc0c66df1
+sha256=ed3bd1cc72252aebe8268c7357692dcdb72f003c2c36ee7a74da312b750afdb7
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXxf86misc-X11R7.1-1.0.1.tar.bz2]
+md5=19ba9ff3f98d769a46525b0d8ce0d1e2
+sha256=4adbde13bbb3109897fc7b5d05bdab4709c4dd1aa7313f47b8093f52f10e617c
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libXxf86vm-X11R7.1-1.0.1.tar.bz2]
+md5=3a5d54d0d2321c3d61c9cd9f3e2204a3
+sha256=494636571ae72af7524c3a7703324ef68dbf755f753054317489fe79ac895ae0
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libdmx-X11R7.1-1.0.2.tar.bz2]
+md5=fbc2c1fa3ef95a69e1a816fbe81372f8
+sha256=1f5e0f1c1afdea4548a226d242edf597fc931b7ad262c09b7bee5498f472e9ba
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libfontenc-X11R7.1-1.0.2.tar.bz2]
+md5=d8ca3192867c98669bd7d6a41ed26b09
+sha256=2cbce6d32c31c53df3e3f6fdd9d74c81b02ca1295598acd56061effa2b299b65
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/liblbxutil-X11R7.1-1.0.1.tar.bz2]
+md5=6cef76df73f86482fa478ad8252d9055
+sha256=d9ca5d502f8a4a6c146d1f0458ac27c95cc59724caa6d845e24946d299463bc5
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libxkbfile-X11R7.1-1.0.3.tar.bz2]
+md5=598ce15a8b8c9da26944ab4691df6984
+sha256=65e80effea1d03ef0808393a343ab62e254f6ae0bf8d5ddf80fc26a9fbe6af53
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/lib/libxkbui-X11R7.1-1.0.2.tar.bz2]
+md5=e66230bc7f369e113112d1d282f7833d
+sha256=a69d690af93646be28228553c05b71d9830e3bf2ea301f6ed369a2c1cddf2ddf
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/proto/compositeproto-X11R7.1-0.3.1.tar.bz2]
+md5=8e85c1e19a3169a42c5e860c36ec3e3b
+sha256=dc022c1ca5fbe047fce3d22fec0cac4a2d2b444dd901e6b7bbc139d6e643c25b
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/proto/fixesproto-X11R7.1-4.0.tar.bz2]
+md5=7ba155d9209fa7320fc387b338457bc6
+sha256=ea55da5c73aa0ca733f6e6efe5e4e77ff24779578a4170eb868da808a7e24f93
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/proto/glproto-X11R7.1-1.4.7.tar.bz2]
+md5=26744ff426147b2400b20e5c8b1eb735
+sha256=769fbff3cc640b4ef14823ec3bd1c7364e30b37702cf7df391bdec5fc21666ab
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/proto/scrnsaverproto-X11R7.1-1.1.0.tar.bz2]
+md5=567152e8b564c220f5eefa2e8464e550
+sha256=24ec219323a3d1e20a9d080b2352411f37d171a4a02e12a2930e6ea199ee4341
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/proto/xproto-X11R7.1-7.0.5.tar.bz2]
+md5=930c4c618a6523fec1095827d8117fed
+sha256=0a9930e2ed7501d638cd90c948278b4f20e225c78c92cf2619e2b55a024e890e
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/util/gccmakedep-X11R7.1-1.0.2.tar.bz2]
+md5=519e8b1a9911bdddfa2ee46fb36b9774
+sha256=d166685bbae221c8cd1ad5efa7903f8520b117228e9ef0e85261c99ebfc5f66a
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/util/imake-X11R7.1-1.0.2.tar.bz2]
+md5=db33c65135ebc78e55c6009292c51b43
+sha256=76167e10c30d60534dc2b04fa4e202e16531df8170fc23cc4414d9afff09c32a
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/util/util-macros-X11R7.1-1.0.2.tar.bz2]
+md5=6ce5a6e85653afdd10c48b89b4bcc8aa
+sha256=cef1e438a2f936efe00ffbb3758c80de72ed514f210e067cb8469a8b00b8feb4
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/util/xorg-cf-files-X11R7.1-1.0.2.tar.bz2]
+md5=073c1b4f0029249a05800900abd13077
+sha256=6044df7ff07d38c4ce1020453f259f4caa16272aca7d835204852e416dfa2605
+
+[http://xorg.freedesktop.org/releases/X11R7.1/src/xserver/xorg-server-X11R7.1-1.1.0.tar.bz2]
+md5=59bc20bcade0293042edc8a99aa2c832
+sha256=373e48b86e2b569d1c69274762ee50f30c49b1000d3524cbd05b3fc3ce60ccc2
+
+[http://xorg.freedesktop.org/releases/development/X11R7.0-RC4/extras/xterm-207.tar.gz]
+md5=3de8a3756c284a46a08c6d0308909486
+sha256=652f579171e6e8f73c13ab6b060d2447ae35ebfbd39a6002b7c05a1dfc0f7eb8
+
+[http://xorg.freedesktop.org/releases/development/X11R7.2-RC3/proto/xproto-7.0.9.tar.gz]
+md5=937c572775ff4a2edfbbf5568dc0e959
+sha256=e68db1c55c1c6d398098d69096b3c3b35863b5d25ef216cb2d1d4364ab0000af
+
+[http://xorg.freedesktop.org/releases/individual/app/appres-1.0.1.tar.bz2]
+md5=420e6cdf38bb771ec8b00228bf09e8ff
+sha256=15fef83a202b8dcee3420c88dba4aeed1f8fc840ab537487fb5411b99a2eb962
+
+[http://xorg.freedesktop.org/releases/individual/app/beforelight-1.0.2.tar.bz2]
+md5=8bc2e35cdcd2e6a80eab1b77c41f2a46
+sha256=00e217559c93779fe04fd948017820af118a3981d6b4371ace95107cb3b047a7
+
+[http://xorg.freedesktop.org/releases/individual/app/editres-1.0.2.tar.bz2]
+md5=9db49742bd4c17966fff7d76ac566d31
+sha256=978fbc134eef3da8a5f363c9e93494a3d7399e8f2b435ac6b1f2c63f09c167df
+
+[http://xorg.freedesktop.org/releases/individual/app/fonttosfnt-1.0.3.tar.bz2]
+md5=b0ebd86029571239b9d7b0c61191b591
+sha256=9d2b0149ea49a097ab6c563801c06af9975e98f9fa4c8af1a8ac3238e4fd5243
+
+[http://xorg.freedesktop.org/releases/individual/app/luit-1.0.2.tar.bz2]
+md5=aacda46598ce3af8ca16e2a8132db1b2
+sha256=c0c4d76df0350c626df7ce62bf3df7915f9959557d76abce96222857d782389c
+
+[http://xorg.freedesktop.org/releases/individual/app/sessreg-1.0.2.tar.bz2]
+md5=bee5d87d40615e67c84ab0b0c65049ba
+sha256=c23c12259854c7cec6d19bf397afff4a542a22170b14de73b321aa8cafcf3a86
+
+[http://xorg.freedesktop.org/releases/individual/app/setxkbmap-1.0.3.tar.bz2]
+md5=2b53542095a35a8a5731164118643883
+sha256=086f67c8272ceca059c64e127dbdb66ccad8de6f532aee02d22786543718a508
+
+[http://xorg.freedesktop.org/releases/individual/app/twm-1.0.3.tar.bz2]
+md5=a56b71dc40249195b32b304633c28a3e
+sha256=5b41550477a893bf2b82ab73fc7fb6c839ba52d0deac059be1a473dd7bb92a4e
+
+[http://xorg.freedesktop.org/releases/individual/app/xauth-1.0.2.tar.bz2]
+md5=31b956edaeb453ddaa640420e97b25b2
+sha256=569e5a581e5eb16abf1c04a66da22c6dade14578ab34e5e78b8724bb655f1f17
+
+[http://xorg.freedesktop.org/releases/individual/app/xdbedizzy-1.0.2.tar.bz2]
+md5=ecef9cfd197d00980e0d69ee4126d890
+sha256=74e882e9fee7ebeb274caf43071afff92531b8a41f34650376146a131166012d
+
+[http://xorg.freedesktop.org/releases/individual/app/xdm-1.1.3.tar.bz2]
+md5=619d0549c6c20ca15aa77769f2fbabe2
+sha256=9e640974c132ef1faafedc77e4602d55457b2791006b677cec071ee8afbf9a74
+
+[http://xorg.freedesktop.org/releases/individual/app/xdpyinfo-1.0.2.tar.bz2]
+md5=c9ee60ae52c97c51d4ca327e53f0cb61
+sha256=c9927fc33e8a4422d74b1ebee0d19dd5a16d9ebc435e8f47f0aa546501ccfed3
+
+[http://xorg.freedesktop.org/releases/individual/app/xf86dga-1.0.2.tar.bz2]
+md5=66feef21fb4e769cc1e2f193ae461a8c
+sha256=650633b83796e5a24d4c5ec30adfeb3958f75d9d0785060d5c42bab55ccc1857
+
+[http://xorg.freedesktop.org/releases/individual/app/xfs-1.0.4.tar.bz2]
+md5=f43cb64d623b748208dfd9012d17b654
+sha256=452dde2923c7ae5a2b8cb4b9735507c579c1c55a0e5e45a34210e52574ee641b
+
+[http://xorg.freedesktop.org/releases/individual/app/xinit-1.0.3.tar.bz2]
+md5=f04a903cc0e18b3c338f58eb90f6caf8
+sha256=c77a58cba815eb1dde2242a819e80d7d84d753678837ac24d385e3ec65d33186
+
+[http://xorg.freedesktop.org/releases/individual/app/xmodmap-1.0.2.tar.bz2]
+md5=ea78b3e32e27c3662f86ea68b3aec22f
+sha256=4bed79ba6efcaabb3ce055cf88419a5190f8ab9d3408e7b14d722351cbaf4b44
+
+[http://xorg.freedesktop.org/releases/individual/app/xprop-1.0.2.tar.bz2]
+md5=5b6f02a3b1cda0cadc35f84814fe53d4
+sha256=88b1e65703c68f14ac6cb735737d1a0e52751a18fdc8a39d2d1e5eaa07875ca0
+
+[http://xorg.freedesktop.org/releases/individual/doc/xorg-sgml-doctools-1.1.1.tar.bz2]
+md5=ae3d4f73c42953b0a5513bb2967ab913
+sha256=be1fbd7646a55eb9a9ad161f9b83034ba88a82c780e29d4a7888db2495947f25
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-keyboard-1.1.1.tar.bz2]
+md5=babf094e37bdfc08076d4adb4c69c1d9
+sha256=b7e7377d75f3a10cceb5df18019b8e4498fbed0100478edd4af75bf8cd45d6fd
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-mouse-1.1.2.tar.bz2]
+md5=d8bcd9fb1b4efb02acd251495f9a30c1
+sha256=7d4c2ecbe8f9327f7c8093c05401ab68b22f3343bcf04e4838cc40c21b7f8e0a
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-penmount-1.2.0.tar.bz2]
+md5=0589f2eaa84afb9bd49b226ce7dacdda
+sha256=dea18a07cf8f59e7bc981cfa1f6ef476dd14f7d9bee3bb1a55a6cc49f766150e
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-ati-6.6.3.tar.bz2]
+md5=f6d559f9d20f61567d381916b376590f
+sha256=d08a429e1fb1620ae81839181a4dc6cd579d52fc440d44d7bba36d19be355780
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-fbdev-0.3.1.tar.bz2]
+md5=9ae810c6c6c3c9713a67866fe794d4ff
+sha256=309d1f618c77559ea494c05d45b09577790c44900685e17bc812e4e1b19df6e7
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-i128-1.1.0.6.tar.bz2]
+md5=c483efc90b1935025b17e4b9e9c2e4df
+sha256=b52183f5a7d0adee1d21b4b0a0908886b7bbc69dc4498f1e7a3edc4b1988c41c
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-i810-1.6.5.tar.bz2]
+md5=fc1e0da3430551bf25a7babf7ccfd3bf
+sha256=30d0cd555d8b8b5bb53d93eaae1ad2aecb5c94a760e2346d60b6e194c254e40f
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-newport-0.2.1.tar.bz2]
+md5=2bd8e5b9ea68e0dcd80dfcaca0eff82c
+sha256=66ac855452690ef896400577806dc1dd86318940f8a62ce20039037318b1ce08
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-nsc-2.8.2.tar.bz2]
+md5=1fbdd5e9b5508b032c0102f72d1e555c
+sha256=060493a9dcad81e8912381d2a8d14a3e32a34414296a089756868f3442103c8c
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-nv-1.2.2.1.tar.bz2]
+md5=e4dc415b1e45db0bbdacc203ed33024a
+sha256=97d47df7720d3cfcb56c4debca9218c3fc5352d34d82bc4880c8a620185f8c5e
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-rendition-4.1.3.tar.bz2]
+md5=a8b97feccb32184820d5856fe78d34db
+sha256=37e7aef72f7466485f5a3bafd0d43190cb7439de16868bfba2c59bb4c9df4408
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-s3-0.5.0.tar.bz2]
+md5=d95ab6445cab477f39adfbbc81006f67
+sha256=4a1206cb1a200aad8881216547d9913d0e24928138f3b1bb912a3336b9c05c97
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-savage-2.1.2.tar.bz2]
+md5=6367e921a98f6a7fec9d0a9bc5ff0a47
+sha256=1a9aa442152c139e3c54bc6c323bd13edf0bfff70a81c03969bcb1159317edb2
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-sis-0.9.3.tar.bz2]
+md5=e35d817fa4ee7beb6cd5aa744b9c0783
+sha256=898ee8fb16fff89ba8ac5c83b9f5a2371084719db0cf034140427229191436f6
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-tdfx-1.3.0.tar.bz2]
+md5=04c49acb5c5dbde14eabd32d06df6e73
+sha256=6b1a00df5c9628817d08f07c6f18f578950744f3eb63b4397be8b0754e728624
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-trident-1.2.3.tar.bz2]
+md5=c0e8b2f54942b6902b7dd4f30defe800
+sha256=d23eb8fa165d238ddf64da63dcd60c70a01cd761608a18402cfb95aed6722495
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-tseng-1.1.1.tar.bz2]
+md5=488aa9c3ec7a95e6589afa4b50bec8b4
+sha256=c9c1f3318715b7268068bc733d00bcab93924e97eb38f94548e442fd6cdfd56e
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-vesa-1.3.0.tar.bz2]
+md5=4a307852f3b4850e436a41dab2a73676
+sha256=b96c80ae81f5123ecef344dac4c734b2e281143d3ab7a7e633d6bf04c893e203
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-via-0.2.2.tar.bz2]
+md5=d5fe25d3cfa0a64cc77681f15f9c3159
+sha256=5026bdaf644178fee66a26190453b0dddb99558b8c97c4a592a482a2434dc862
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-vmware-10.14.1.tar.bz2]
+md5=eaf1ce9fa23363799140602afaa10f37
+sha256=1971fd356ba54204c3611edb9144c43c25c21167a5fa5ee725d3f2e3f9864fa9
+
+[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-voodoo-1.1.1.tar.bz2]
+md5=bc878e795688b49a595b355482d27174
+sha256=3975601baee674b2bad0dfe696586f17cc913f1dc7f1d5c4e184623e0461751c
+
+[http://xorg.freedesktop.org/releases/individual/font/encodings-1.0.2.tar.bz2]
+md5=11adda157b03d63fd61d95ad7ef00466
+sha256=6d19107b66bbc96c085b0c2dd286ece22dcb73ba56a17fc95b0f2cbc5d6f4eac
+
+[http://xorg.freedesktop.org/releases/individual/lib/libSM-1.0.2.tar.bz2]
+md5=a254771550c01db372e88d1a1dc2e13a
+sha256=e290614797bd626c1b92bac8f83e8954b99bd66e6ecdaa1e935e176df099eba8
+
+[http://xorg.freedesktop.org/releases/individual/lib/libX11-1.1.1.tar.bz2]
+md5=848b80f77b20ae1fa5c882bbfa531ebc
+sha256=5359db57793430429786b648ac570d4ab205797306e049bf1e8675250af21541
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXScrnSaver-1.1.2.tar.bz2]
+md5=ac2d697dd02f51e5c15f7104f4be5328
+sha256=6c75debca746060e0c2408a6ca119613ae02d1054adebd4b26ff8beee79bcc67
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXau-1.0.3.tar.bz2]
+md5=75a9f2b85cd1617b5ca98c9095323853
+sha256=d6c30a88770a720e96e0bd7e13e0334f9ef60f1b475a92556764828005c19e3b
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXcomposite-0.3.1.tar.bz2]
+md5=a80650d660486ea7bb2e5fd84a83799a
+sha256=d42b59d3c38dae5e4fec375d12e56e7a5764ba10e8b8ec70f9ce951fc9cec72b
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXcursor-1.1.8.tar.bz2]
+md5=ec2acd10a7736a85dd1e1ed9ea5bec96
+sha256=8f039f81af52c88d583fba48b878abd074542221cb0030638ad52336b4ae1377
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXdamage-1.0.4.tar.bz2]
+md5=4d0eece7a8372a7754db1de08c2be324
+sha256=5df90f0efa77e1d6f9e1768a2b0adfc896d09c7a3d8680ed0980511b3625c636
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXdmcp-1.0.2.tar.bz2]
+md5=10facf2bc7cbd5e5c1a698b8a210a582
+sha256=f3e50c1847599145c22784a2f15818821960652ee91d21d905817fb7c10f96a8
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXevie-1.0.2.tar.bz2]
+md5=88e9bf535364e7c821ef4014fb1ca2dd
+sha256=ff70b81ad145932db2d206735cefcb698dadad241001df7ba6b97e8081d174da
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXext-1.0.2.tar.bz2]
+md5=cce89c5b941a493512b534f4847c6111
+sha256=368e4cf5117febd998e6fc40d096b3af19a571adccc5ed49b9d16e482b3a8f8e
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXfixes-4.0.3.tar.bz2]
+md5=1990d19725a3c7f32290037f02d3737f
+sha256=547e093c5037c4b85ce653ce26f5bd70a97b177f9b582f5351a626d8e0a829dd
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXfont-1.2.0.tar.bz2]
+md5=038315ade283d8da92422baebac553a2
+sha256=130d6991971a10ba8b54f52848bcb00cbb7b4229eb839f88500972e11fecf8f0
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXfont-1.2.7.tar.bz2]
+md5=2f2085310f75900044d9dcd469637d26
+sha256=2f8c004c0b914d460e6fd2b48d8b425cf4778d415467fc1f1d938b200462d18b
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXfontcache-1.0.4.tar.bz2]
+md5=1adca018aa7bf2d215f20a69c10828ad
+sha256=ffe747cfbf81cdd862af1b05d021ad1ab83b623eab5b32b0a618efb4c0f3e01c
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXft-2.1.12.tar.bz2]
+md5=1309301e2d979bd475dc58325cb8c056
+sha256=68b46f85caaf0b30c876bd983abe144c25755bee7532e8738ab7ebe29a428986
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXi-1.0.2.tar.bz2]
+md5=4a5207a29a6b220e5462129854689844
+sha256=7e6339539d3d0a4fc95cc23ca2b13ae67dd783e011b3cc5ca76040e376bff57f
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXmu-1.0.3.tar.bz2]
+md5=b926b95b811ece3e19cd590db85ee615
+sha256=b56e308e36da8d9cb48433ddb81fd04e26b4f1c695586ac8106ac48a35466d66
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXpm-3.5.6.tar.bz2]
+md5=37b7d1826c6a02107269632a93b8791f
+sha256=2d5c5242b8417db6aa758e5be387de33385d9960ff21c801af7d6a4730b4fd0d
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXrandr-1.1.2.tar.bz2]
+md5=962946952a01650bb43206043a3c0e12
+sha256=ba5adedc37da835a5c9e5a5d457dce13feead64fc364bc4719c41720ca0a3c50
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXrender-0.9.2.tar.bz2]
+md5=2f1b2c6e8dcbcb6d760e59f445abd92c
+sha256=0f749183ab1a0ece14d33c3299b3f70893122349c0bfa9d7bd0e66ce19d1802a
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXres-1.0.3.tar.bz2]
+md5=de66ffb657aba64c9d6dbdeabb757f3e
+sha256=a6d5ba7573f5ec0f091095f01b51d1e671dd0f14acb5b8559cdf366e398a0230
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXt-1.0.4.tar.bz2]
+md5=937735f342c046db239852fec0413f6c
+sha256=ec7088b2ffe8f56c177525283601fb048decaf6f175d9ee5db01e12810a4d345
+
+[http://xorg.freedesktop.org/releases/individual/lib/libXvMC-1.0.4.tar.bz2]
+md5=b54600573daf9d1a29b952e8d35b389e
+sha256=1217825ba8d66198466ee8306d0d6d237d2dd80d0f0783c98701296791833abb
+
+[http://xorg.freedesktop.org/releases/individual/lib/libfontenc-1.0.4.tar.bz2]
+md5=5cd16a2e51ca7b96a3081c7486ff98b9
+sha256=b993aa3d17e845a12a49160b5d96993059ce919c7ba902005b910b867b6258c8
+
+[http://xorg.freedesktop.org/releases/individual/lib/libxkbfile-1.0.4.tar.bz2]
+md5=12b4ceb5d42b520228b5fb40a96ae6c5
+sha256=468ade4eaa3951a7c34b6ae1c290ab1a1d364ee36c5c455ef0df15550825b8ae
+
+[http://xorg.freedesktop.org/releases/individual/lib/xtrans-1.0.3.tar.bz2]
+md5=bb196907ea1e182dcb396eb22f7d2c1a
+sha256=e1a3c4986f16a5fbca611d0547cc7499a1fa47ca2096593644037e2609363085
+
+[http://xorg.freedesktop.org/releases/individual/proto/damageproto-1.1.0.tar.bz2]
+md5=33ee591e0b1ca5ad7902934541db7d24
+sha256=9d2684fac835e9cdf78befff2a58292f54db90094acbfb9f2ed5316fa30d641d
+
+[http://xorg.freedesktop.org/releases/individual/proto/glproto-1.4.8.tar.bz2]
+md5=3dfbd17203c0c88b94b6f579f24c11cc
+sha256=2f5d84413853b688b7bb46c66fee108a499190e1f7810afffb775910778f053c
+
+[http://xorg.freedesktop.org/releases/individual/proto/inputproto-1.4.1.tar.bz2]
+md5=563cc41eeb590cf5eb2127807b838dfc
+sha256=913ff534aa777e3c36f3e9fe3e8638c3ccfe398daeb7532fa917e7bcd6fed07d
+
+[http://xorg.freedesktop.org/releases/individual/proto/inputproto-1.4.tar.gz]
+md5=3faf4bc1e2bb9353590d7b1fe50ec306
+sha256=5360e221354bbdfd67bf9834c2c1d7a0d83f22c17e057f92194411911fbb81f5
+
+[http://xorg.freedesktop.org/releases/individual/proto/kbproto-1.0.3.tar.bz2]
+md5=6092cdb0a1225f95356ddbe6c2abaad5
+sha256=7000005ebbd07a28a71477d72bcb76c47064e043a4ead26fcf4d5af394ce19df
+
+[http://xorg.freedesktop.org/releases/individual/proto/randrproto-1.2.1.tar.bz2]
+md5=e2e45564f8ce22e00e1360e79c8ccdeb
+sha256=102fd42f8f2562450f4e45c28bfb0390c2d30ffa6a805eead15d67018930f654
+
+[http://xorg.freedesktop.org/releases/individual/proto/xproto-7.0.10.tar.bz2]
+md5=2ed80e90992e7455eaac4c3e977ebd01
+sha256=6d659920262d41e48714184f94ff9cd2608515e0f3d2f074892fe0c048784df4
+
+[http://xorg.freedesktop.org/releases/individual/util/util-macros-1.1.5.tar.bz2]
+md5=51952682d8b42aeda3af5cee0133ce2c
+sha256=75939790e16b8bcc122e83f3f060d6f000ed1a98e97b4972fac0903142f5651b
+
+[http://xorg.freedesktop.org/releases/individual/util/util-macros-1.1.5.tar.gz]
+md5=d168aa001b946b58d9aab6088c09d256
+sha256=4f2a8a19e90ad82bc2da4eb52799a299a1c94bf5143bc2711e9e5d4cc5a7cdb4
+
+[http://xournal.sourceforge.net/xournal-0.3.3.tar.gz]
+md5=c617d08d2c565eef0d8defb304925ade
+sha256=77f3bf12ce006eb06fc79d9c60a13ff69403ca6c28cc2babafb0ae35a2240ead
+
+[http://z-soft.z-portal.info/zsafe/zsafe_2.1.3.tgz]
+md5=5e4e10a67de603b04b752ed00311455d
+sha256=0937b15ca5dcd6f49adff04096610cee1f70197e17d461aefa98ed52e5ea0b72
+
+[http://zarb.org/~gc/fb//frozen-bubble-1.0.0.tar.bz2]
+md5=2be5ead2aee72adc3fb643630a774b59
+sha256=fe7e46e529c7c3c969946c41efb519462f98dd5c280e247bd98ff629dcca1433
+
+[http://zaurus.colognearts.de/qpphoto/qpPhoto_1.0.2_src.tar.gz]
+md5=c3c806bd2910e6c49617acb230eee306
+sha256=ba2d98c4fabb31a66a66a235a5bbc9cb9e8a2c6f3939e71826d8763a8e7e3c0d
+
+[http://zaurus.vivaphp.net/nogravity.tar.bz2]
+md5=42d9e4cfd86b15826426797a0fb6d499
+sha256=f9c86a163bd27dc4fd05abb958bb857109a556a4a58f8d06663d49ac0559ac92
+
+[http://zd1211.ath.cx/download/zd1211-driver-r77.tgz]
+md5=ab79187f18b102df2fb576bd4cf733fd
+sha256=8e5715e9d2bd2cb489c601ff91305f81fd662b27cb2da5486071fbab5bd8b634
+
+[http://zd1211.ath.cx/download/zd1211-driver-r83.tgz]
+md5=a5751f0e6f1f368689077fa7758a4932
+sha256=8288a1299f8c6f0176f2cd1b51f83b2c4b919460a2aa4fe98699b019e583bfc1
+
+[http://zd1211.ath.cx/download/zd1211-driver-r85.tgz]
+md5=51691a15137fbc35515a630d45d03352
+sha256=dd71e82cd3df6ca60e629cc5655e7a380586b363a3d963482e9f151eb186dbad
+
+[http://zope.org/Products/Zope/2.7.1/Zope-2.7.1.tgz]
+md5=ae9d4bb3f7220dfffb6e91b42503b16c
+sha256=341f56aa4ece9001a118be8ff9675bfad6410dc1df86dd86aeb726adc732341b
+
+[http://zope.org/Products/Zope/2.9.2/Zope-2.9.2.tgz]
+md5=4e88a6c7215568a55d8714226da23a19
+sha256=7515a40396184cd82fd6a01d5b0e1fb79f009c5d35da8e59b8710c530e8e68b1
+
+[https://garage.maemo.org/frs/download.php/939/cx3110x-1.1.tar.gz]
+md5=18e5dc522aa9424cf9b32b86da19b85e
+sha256=b0e00a7c164711512549d3ad82707c53a20fd978c2448ec22d2ea76df1954eee
+
+[ftp://ftp.gnu.org/gnu/gperf/gperf-3.0.3.tar.gz]
+md5=cc20e58975a38075440423c8fb85fd00
+sha256=63287527c8d9e27e801cf0804436f3494bd569db05d49dcdd2a942ae72fa9055
diff --git a/conf/distro/amsdelta-oe.conf b/conf/distro/amsdelta-oe.conf
index 362e6e5a30..6e7adda029 100644
--- a/conf/distro/amsdelta-oe.conf
+++ b/conf/distro/amsdelta-oe.conf
@@ -2,7 +2,7 @@ DISTRO = "amsdelta-oe"
DISTRO_NAME = "AmsDelta Linux"
DISTRO_VERSION = "unstable-${DATE}"
-require conf/distro/include/familiar.inc
+require conf/distro/ansgstrom-2007.1.conf
DISTRO_TYPE = "debug"
@@ -10,33 +10,6 @@ DISTRO_TYPE = "debug"
#!!!!! DON'T FORGET TO ENABLE ZAPROOTPASSWD !!!!!
-FEED_URIS += " \
- base##http://familiar.handhelds.org/releases/${DISTRO_VERSION}/feed/base \
- updates##http://familiar.handhelds.org/releases/${DISTRO_VERSION}/feed/updates"
-
-#SRCDATE = 20050331
-#SRCDATE = "now"
-
-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_PROVIDER_virtual/libiconv="glibc"
-PREFERRED_PROVIDER_virtual/libintl="glibc"
-
-# The CSL compiler is unusable because
-# 1) certain programs stop to compile
-# 2) more programs segfault
-PREFERRED_VERSION_gcc ?= "3.4.4"
-PREFERRED_VERSION_gcc-cross ?= "3.4.4"
-PREFERRED_VERSION_gcc-cross-initial ?= "3.4.4"
-
-#
-# PIN the familiar build to a version
-#
-PREFERRED_VERSION_binutils-cross ?= "2.15.94.0.1"
-PREFERRED_VERSION_binutils ?= "2.15.94.0.1"
-
#
# Opie
#
diff --git a/conf/distro/angstrom-2007.1-legacy.conf b/conf/distro/angstrom-2007.1-legacy.conf
new file mode 100644
index 0000000000..a22a35d204
--- /dev/null
+++ b/conf/distro/angstrom-2007.1-legacy.conf
@@ -0,0 +1,9 @@
+#this is a special version of angstrom for legacy (e.g. kernel 2.4) software
+# that means:
+# * no udev
+# * no sysfs
+# * no EABI for ARM
+
+require conf/distro/angstrom-2007.1-oabi.conf
+
+# We'll have to fill this in as we go.
diff --git a/conf/distro/angstrom-2007.1-oabi.conf b/conf/distro/angstrom-2007.1-oabi.conf
index e63dc61a48..d2e59f85a4 100644
--- a/conf/distro/angstrom-2007.1-oabi.conf
+++ b/conf/distro/angstrom-2007.1-oabi.conf
@@ -3,16 +3,20 @@ require conf/distro/angstrom-2007.1.conf
#this is a special version of angstrom for armv4 based machines that can't do EABI
#see http://wiki.debian.org/ArmEabiPort for details on that
-#set compatible machine so people don't 'accidentally' use this
-COMPATIBLE_MACHINE = "(collie|h3600|h3800|simpad)"
+PREFERRED_PROVIDER_virtual/arm-angstrom-linux-libc-for-gcc = "glibc-intermediate"
#only glibc based builds are supported ATM
TARGET_OS = "linux"
-FEED_ARCH_collie = "arm"
-FEED_ARCH_h3600 = "arm"
-FEED_ARCH_h3800 = "arm"
-FEED_ARCH_simpad = "arm"
+PACKAGE_ARCH = "arm-oabi"
+PACKAGE_EXTRA_ARCHS = "arm-oabi"
+
+PREFERRED_VERSION_linux-handhelds-2.6_h3600 = "2.6.19-hh13"
+
+FEED_ARCH_collie = "arm-oabi"
+FEED_ARCH_h3600 = "arm-oabi"
+FEED_ARCH_h3800 = "arm-oabi"
+FEED_ARCH_simpad = "arm-oabi"
diff --git a/conf/distro/angstrom-2007.1.conf b/conf/distro/angstrom-2007.1.conf
index 11c4ce7dca..b97a1332e4 100644
--- a/conf/distro/angstrom-2007.1.conf
+++ b/conf/distro/angstrom-2007.1.conf
@@ -6,16 +6,26 @@
#@MAINTAINER: Michael 'Mickey' Lauer <mickey@Vanille.de>
#@--------------------------------------------------------------------
-#DISTRO_VERSION = "2007.3"
+#DISTRO_VERSION = "2007.4"
DISTRO_VERSION = "test-${DATE}"
-DISTRO_REVISION = "28"
+DISTRO_REVISION = "42"
require conf/distro/include/angstrom.inc
require conf/distro/include/sane-srcdates.inc
-DISTRO_TYPE = "debug"
+DISTRO_TYPE ?= "debug"
#DISTRO_TYPE = "release"
+# Ship just basic locale by default. Locales are big (~1Mb uncompr.), so
+# shipping some adhoc subset will be still useless and size burden for
+# users of all other languages/countries. Instead, worth to make it easy
+# to install additional languages: installer/wizard + metapackages which
+# will RRECOMMEND as much as possible content for a given language
+# (locales, UI transalations, help, etc. - useless for pros, but really
+# helpful for common users).
+# 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)}'
+
#Set the right arch for the feeds
#Alphabetically sorted
@@ -25,26 +35,37 @@ FEED_ARCH ?= "${TARGET_ARCH}"
FEED_ARCH_ep93xx = "armv4t"
FEED_ARCH_h6300 = "armv4t"
+FEED_ARCH_fic-gta01 = "armv4t"
#armv5t machines
FEED_ARCH_a780 = "armv5te"
+FEED_ARCH_aximx50 = "armv5te"
FEED_ARCH_akita = "armv5te"
FEED_ARCH_c7x0 = "armv5te"
FEED_ARCH_h2200 = "armv5te"
+FEED_ARCH_h3900 = "armv5te"
FEED_ARCH_h4000 = "armv5te"
FEED_ARCH_h5000 = "armv5te"
FEED_ARCH_htcuniversal = "armv5te"
FEED_ARCH_hx2000 = "armv5te"
FEED_ARCH_hx4700 = "armv5te"
FEED_ARCH_ixp4xx = "armv5te"
+FEED_ARCH_ixp4xxle = "armv5te"
FEED_ARCH_magician = "armv5te"
FEED_ARCH_netbook-pro = "armv5te"
FEED_ARCH_nokia770 = "armv5te"
+FEED_ARCH_omap5912osk = "armv5te"
FEED_ARCH_poodle = "armv5te"
FEED_ARCH_spitz = "armv5te"
FEED_ARCH_tosa = "armv5te"
+
+FEED_ARCH_ixp4xxbe = "armv5teb"
+
+#i586 machines
+FEED_ARCH_epia = "i586"
+
#i686 machines
FEED_ARCH_guinness = "i686"
@@ -67,15 +88,21 @@ FEED_URIS += " \
# We will lock down a SRCDATE when we go into release mode
-#SRCDATE = "20061029"
+#SRCDATE = "20070303"
-PREFERRED_VERSION_linux-handhelds-2.6 = "2.6.16-hh8"
-PREFERRED_VERSION_linux-handhelds-2.6_h3900 = "2.6.19-hh7"
-PREFERRED_VERSION_linux-handhelds-2.6_htcuniversal = "2.6.18-hh1"
+PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.16-hh9"
+PREFERRED_VERSION_linux-handhelds-2.6_h3900 ?= "2.6.20-hh6"
+PREFERRED_VERSION_linux-handhelds-2.6_h4000 ?= "2.6.20-hh6"
+PREFERRED_VERSION_linux-handhelds-2.6_h5000 ?= "2.6.20-hh6"
+PREFERRED_VERSION_linux-handhelds-2.6_htcuniversal ?= "2.6.19-hh13"
+PREFERRED_VERSION_linux-handhelds-2.6_hx4700 ?= "2.6.20-hh6"
+PREFERRED_VERSION_linux-handhelds-2.6_magician ?= "2.6.20-hh6"
+PREFERRED_VERSION_file = "4.18"
+PREFERRED_VERSION_file_native = "4.18"
-SRCDATE_gconf-dbus = "20060719"
-SRCDATE_gnome-vfs-dbus = "20060803"
+PREFERRED_VERSION_perl-native = "5.8.8"
+PREFERRED_VERSION_perl = "5.8.8"
CVS_TARBALL_STASH = "\
http://www.angstrom-distribution.org/unstable/sources/ \
@@ -88,25 +115,49 @@ require conf/distro/include/preferred-gpe-versions-2.8.inc
PREFERRED_PROVIDER_dbus-glib = "dbus-glib"
PREFERRED_PROVIDER_virtual/libsdl ?= "libsdl-x11"
PREFERRED_PROVIDER_virtual/libxine ?= "libxine-x11"
-
+PREFERRED_PROVIDER_esound ?= "pulseaudio"
+
+
+# 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+"
PREFERRED_VERSION_fontconfig = "2.4.1"
-PREFERRED_VERSION_freetype = "2.2.1"
-#fix screen corruption issues
-PREFERRED_VERSION_cairo = "1.3.10"
-
-#work around a segfault in gcc for armv4t
-PREFERRED_VERSION_glib-2.0_ep93xx = "2.12.3"
-PREFERRED_VERSION_glib-2.0_h6300 = "2.12.3"
+PREFERRED_VERSION_freetype = "2.3.3"
+PREFERRED_VERSION_freetype-native = "2.2.1"
+PREFERRED_VERSION_cairo = "1.4.4"
+PREFERRED_VERSION_glib-2.0 = "2.12.12"
+
+# older gtk-webcore releases don't work on ARM/EABI
+# We need to switch to a fixed SRCDATE or release as soon as possible
+PREFERRED_VERSION_osb-browser = "0.5.0+svn${SRCDATE}"
+PREFERRED_VERSION_osb-jscore = "0.5.2+svn${SRCDATE}"
+PREFERRED_VERSION_osb-nrcit = "0.5.2+svn${SRCDATE}"
+PREFERRED_VERSION_osb-nrcore = "0.5.2+svn${SRCDATE}"
#Small machines prefer kdrive, but we might ship full Xorg in other images
PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
PREFERRED_PROVIDER_xserver ?= "xserver-kdrive"
-require conf/distro/include/preferred-xorg-versions-X11R7.1.inc
+require conf/distro/include/preferred-xorg-versions-X11R7.2.inc
-PREFERRED_VERSION_xserver-kdrive = "X11R7.1-1.1.0"
-PREFERRED_VERSION_gtk+ = "2.10.6"
+#PREFERRED_VERSION_xserver-kdrive = "1.2.0"
+PREFERRED_VERSION_gtk+ = "2.10.12"
+PREFERRED_VERSION_libgnomeui = "2.16.1"
+
+PREFERRED_VERSION_prismstumbler = "0.7.3"
#zap extra stuff taking place in $MACHINE.conf
GPE_EXTRA_INSTALL = ""
@@ -134,6 +185,7 @@ PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11"
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"
@@ -141,34 +193,43 @@ PREFERRED_PROVIDER_ntp = "ntp"
PREFERRED_PROVIDER_hotplug = "udev"
PREFERRED_PROVIDER_libxss = "libxss"
-
-#EABI stuff
+#NPTL stuff
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-linux-libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/armeb-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"
+
#shouldn't that be uclibc-initial????
PREFERRED_PROVIDER_virtual/arm-angstrom-linux-uclibcgnueabi-libc-for-gcc = "uclibc-initial"
+PREFERRED_PROVIDER_virtual/armeb-angstrom-linux-uclibcgnueabi-libc-for-gcc = "uclibc-initial"
#use EABI toolchain
-PREFERRED_VERSION_gcc ?= "4.1.1"
-PREFERRED_VERSION_gcc-cross ?= "4.1.1"
-PREFERRED_VERSION_gcc-cross-sdk ?= "4.1.1"
+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.1"
PREFERRED_VERSION_binutils ?= "2.17.50.0.5"
PREFERRED_VERSION_binutils-cross ?= "2.17.50.0.5"
PREFERRED_VERSION_binutils-cross-sdk ?= "2.17.50.0.5"
+PREFERRED_VERSION_linux-libc-headers_i486 ?= "2.6.18"
+PREFERRED_VERSION_linux-libc-headers_i586 ?= "2.6.18"
PREFERRED_VERSION_linux-libc-headers_i686 ?= "2.6.18"
PREFERRED_VERSION_linux-libc-headers_powerpc ?= "2.6.18"
-PREFERRED_VERSION_linux-libc-headers ?= "2.6.15.99"
+PREFERRED_VERSION_linux-libc-headers_ixp4xx ?= "2.6.18"
+PREFERRED_VERSION_linux-libc-headers ?= "2.6.20"
PREFERRED_VERSION_glibc ?= "2.5"
PREFERRED_VERSION_glibc-intermediate_i686 ?= "2.4"
PREFERRED_VERSION_glibc-intermediate ?= "2.5"
+
PREFERRED_VERSION_glibc-initial ?= "2.5"
# To use an EABI compatible version 3 series gcc, either uncomment
@@ -184,9 +245,7 @@ PREFERRED_VERSION_busybox = "1.2.1"
PCMCIA_MANAGER = "pcmciautils"
PREFERRED_VERSION_dbus ?= "1.0.2"
-PREFERRED_VERSION_dbus-glib ?= "0.71"
-
-PREFERRED_VERSION_gstreamer ?= "0.10.11"
+PREFERRED_VERSION_dbus-glib ?= "0.72"
PREFERRED_PROVIDER_hostap-conf ?= "hostap-conf"
PREFERRED_PROVIDER_hostap-modules_h2200 ?= "hostap-modules"
@@ -219,7 +278,8 @@ EXTRA_STUFF ?= ""
# Angstrom want to ship some extra stuff. This should be moved into task-base eventually
-DISTRO_EXTRA_RDEPENDS = "\
+# contains ipkg specific stuff as well :(
+DISTRO_EXTRA_RDEPENDS += "\
update-modules module-init-tools modutils-initscripts \
sysvinit initscripts sysvinit-pidof \
${@base_contains("MACHINE_FEATURES", "screen", "psplash", "",d)} \
@@ -227,7 +287,13 @@ DISTRO_EXTRA_RDEPENDS = "\
angstrom-version \
ipkg ipkg-collateral \
util-linux-mount util-linux-umount \
+ avahi-daemon \
+ avahi-autoipd \
${EXTRA_STUFF} \
${DEBUG_APPS} \
"
+DISTRO_EXTRA_RRECOMMENDS += " \
+ kernel-module-vfat \
+ kernel-module-ext2 \
+ "
diff --git a/conf/distro/debianslug.conf b/conf/distro/debianslug.conf
deleted file mode 100644
index 2904db1108..0000000000
--- a/conf/distro/debianslug.conf
+++ /dev/null
@@ -1,133 +0,0 @@
-#@TYPE: Distribution
-#@NAME: DebianSlug
-#@DESCRIPTION: DebianSlug Linux Distribution for the NSLU2
-
-#----------------------------------------------------------------------------------
-# STANDARD DebianSlug DEFINITIONS
-#----------------------------------------------------------------------------------
-DISTRO_NAME = "DebianSlug"
-# DISTRO_VERSION = "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
-# DISTRO_FEED = "unstable"
-DISTRO_TYPE = "beta"
-SLUGOS_IMAGENAME = "debianslug"
-SLUGOS_IMAGESEX = "little-endian"
-
-# debianslug builds a complete image (not just the parts)
-SLUGOS_FLASH_IMAGE = "1"
-
-# NOTE: to build new packages set DEBIANSLUG_EXTRA_BBFILES to the full path name to
-# the .bb files for the packages to build - see debianslug-packages.conf in this
-# directory
-DEBIANSLUG_EXTRA_BBFILES ?= ""
-
-#----------------------------------------------------------------------------------
-# FIRMWARE CONFIGURATION
-#----------------------------------------------------------------------------------
-# EXTRA PACKAGES
-# --------------
-# Filesystem support modules are listed in here for easy removal,
-# as is the lrzsz serial package and other kernel modules which are
-# not absolutely required for boot.
-# NOTE: only jffs2 support is an absolute requirement of boot, even
-# the ext2/ext3 support is optional!
-DEBIANSLUG_EXT2_PROGS = "e2fsprogs-mke2fs e2fsprogs-fsck e2fsprogs-e2fsck e2fsprogs-badblocks"
-DEBIANSLUG_REISER_PROGS = "reiserfsprogs"
-
-# The standard firmware contents and additional packages built as requirements
-# of the firmware are defined here in DEBIANSLUG_STANDARD_RDEPENDS and
-# DEBIANSLUG_STANDARD_DEPENDS respectively.
-DEBIANSLUG_STANDARD_RDEPENDS = ""
-
-# Support for a variety of file systems is built in to the debianslug
-# image, programs to format disks with these file systems may be
-# added or removed. By default ext2. ext3 and reiserfs supported
-# is included by the following lines.
-#
-# These lines add support for formatting ext2 and ext3 file systems
-# on a hard disk attached to the NSLU2. ext3 is the standard Linux
-# file system.
-DEBIANSLUG_STANDARD_RDEPENDS += "${DEBIANSLUG_EXT2_PROGS}"
-
-# These lines add support for formatting reiserfs file systems on
-# a hard disk.
-DEBIANSLUG_STANDARD_RDEPENDS += "${DEBIANSLUG_REISER_PROGS}"
-
-# These lines add support for an X/Y/ZModem package called lrzsz
-# (this is of use for people with modified NSLU2 hardware which
-# supports a serial port.)
-DEBIANSLUG_STANDARD_RDEPENDS += "lrzsz"
-
-# Filesystem selection. Adding entries here adds the module to the
-# image. The module must be built as part of nslu2-kernel (i.e. it
-# must be specified as a module in the defconfig file). The NLS
-# support charset modules must be given explicitly and must match
-# the codepage/iocharset and NLS handling for the file systems which
-# require them. The installed lanugage set is minimal but sufficient
-# for any file system (since it uses utf8). See
-# http://www.nslu2-linux.orgwiki/HowTo/MountFATFileSystems
-# for more information on the language behaviour of the DOS file
-# systems.
-#
-# KERNEL LEVEL FILE SYSTEM SUPPORT
-# --------------------------------
-# NOTE: removing kernel-module-nfs from this list will prevent NFS
-# boot (however you can do a simple flash file system boot - no
-# attached disk - and install the nfs modules from ssh.)
-DEBIANSLUG_STANDARD_RDEPENDS += "\
-kernel-module-ext2 \
-kernel-module-jbd \
-kernel-module-ext3 \
-kernel-module-vfat \
-kernel-module-ntfs \
-kernel-module-isofs \
-kernel-module-udf \
-kernel-module-reiserfs \
-kernel-module-nls-cp437 \
-kernel-module-nls-utf8 \
-"
-
-# Add daemon required for HW RNG support
-DEBIANSLUG_STANDARD_RDEPENDS += "\
-rng-tools \
-"
-
-# Add modules required for usb support
-DEBIANSLUG_STANDARD_RDEPENDS += "\
-kernel-module-ohci-hcd \
-kernel-module-uhci-hcd \
-"
-
-# Add modules required for IDE support
-DEBIANSLUG_STANDARD_RDEPENDS += "\
-kernel-module-libata \
-kernel-module-pata-artop \
-"
-
-# This documents other file systems which are built but not installed
-# by default in the flash image.
-#
-# kernel-module-msdos - mounts a FAT file system without long file names
-# (use kernel-module-vfat, it shows the long names
-# if present.)
-
-# The 'standard' values are the defaults for the 'extra' packages added
-# to the firmware image. None of these things are requirements to have
-# a bootable, useable, system however they *are* expected to be present
-# in DebianSlug - see slugos-lag for a more minimal configuration and some
-# more instructions about how to make a non-debianslug image.
-DEBIANSLUG_EXTRA_RDEPENDS ?= ""
-SLUGOS_EXTRA_RDEPENDS = "${DEBIANSLUG_STANDARD_RDEPENDS} ${DEBIANSLUG_EXTRA_RDEPENDS}"
-
-#----------------------------------------------------------------------------------
-# PACKAGE VERSION CONTROL
-#----------------------------------------------------------------------------------
-PREFERRED_VERSION_nslu2-linksys-firmware ?= "2.3r63"
-
-#----------------------------------------------------------------------------------
-# BASE VERSION SELECTION
-#----------------------------------------------------------------------------------
-# l - little-endian
-# a - ARM instruction set
-# g - glibc
-#
-require conf/distro/slugos-lag.conf
diff --git a/conf/distro/familiar-unstable.conf b/conf/distro/familiar-unstable.conf
deleted file mode 100644
index 2b0c745bde..0000000000
--- a/conf/distro/familiar-unstable.conf
+++ /dev/null
@@ -1 +0,0 @@
-WARNING:="${@bb.fatal('\n*\n*\n* Sorry, the Familiar Linux support in OpenEmbedded is not up-to-date. \n If you want to produce Familiar Linux compatible packages,\n please use the Familiar Linux fork of OpenEmbedded.\n Otherwise, using a DISTRO like \"angstrom-2007.1\" or \"generic\"\n probably works well enough with your MACHINE configuration.\n*\n*\n')}"
diff --git a/conf/distro/familiar.conf b/conf/distro/familiar.conf
deleted file mode 100644
index 2b0c745bde..0000000000
--- a/conf/distro/familiar.conf
+++ /dev/null
@@ -1 +0,0 @@
-WARNING:="${@bb.fatal('\n*\n*\n* Sorry, the Familiar Linux support in OpenEmbedded is not up-to-date. \n If you want to produce Familiar Linux compatible packages,\n please use the Familiar Linux fork of OpenEmbedded.\n Otherwise, using a DISTRO like \"angstrom-2007.1\" or \"generic\"\n probably works well enough with your MACHINE configuration.\n*\n*\n')}"
diff --git a/conf/distro/foonas.conf b/conf/distro/foonas.conf
new file mode 100644
index 0000000000..234c92f62a
--- /dev/null
+++ b/conf/distro/foonas.conf
@@ -0,0 +1,67 @@
+
+#@--------------------------------------------------------------------
+#@TYPE: Distribution
+#@NAME: foonas <http://www.foonas.org>
+#@DESCRIPTION: A nas-centric distribution
+#@MAINTAINER: Øyvind Repvik <repvik@foonas.org>
+#@--------------------------------------------------------------------
+
+FOONAS_MODE ?= "glibc"
+ANGSTROM_MODE = ${FOONAS_MODE}
+require conf/distro/angstrom-2007.1.conf
+
+DISTRO = "foonas"
+DISTRO_NAME = "foonas"
+DISTRO_VERSION = "1.0-dev"
+DISTRO_REVISION = "1"
+DISTRO_TYPE = "debug"
+
+DISTRO_FEATURES = "uboot redboot"
+DISTRO_FEATURES_n2100 += "raid"
+DISTRO_FEATURES_storcenter += "raid"
+DISTRO_FEATURES_lsppchd += "raid"
+DISTRO_FEATURES_lsppchg += "raid"
+DISTRO_FEATURES_lsarm += "raid"
+
+# This isn't actually in OE yet
+#DISTRO_EXTRA_RDEPENDS = "openlink-machine"
+
+ENABLE_BINARY_LOCALE_GENERATION = "0"
+HOTPLUG = "udev"
+
+# No room for debug apps on an NSLU2.
+DEBUG_APPS = ""
+
+FEED_URIS = "foonas##http://ipkg.foonas.org/${MACHINE}/cross-${FOONAS_MODE}/1.0-dev/"
+
+IMAGE_PREPROCESS_COMMAND += "sed -i -es,^id:5:initdefault:,id:3:initdefault:, ${IMAGE_ROOTFS}/etc/inittab;"
+IMAGE_PREPROCESS_COMMAND += "sed -i -es,^root::0,root:BTMzOOAQfESg6:0, ${IMAGE_ROOTFS}/etc/passwd;"
+IMAGE_PREPROCESS_COMMAND += "sed -i -es,^VERBOSE=no,VERBOSE=very, ${IMAGE_ROOTFS}/etc/default/rcS;"
+IMAGE_PREPROCESS_COMMAND += "rm -f ${IMAGE_ROOTFS}/boot/*"
+IMAGE_PREPROCESS_COMMAND += "rm -f ${IMAGE_ROOTFS}/usr/lib/ipkg/lists/*"
+IMAGE_POSTPROCESS_COMMAND += "${MACHINE}_pack_image;"
+IMAGE_DEVICE_TABLE = "${@bb.which(bb.data.getVar('BBPATH', d, 1), 'files/device_table-slugos.txt')}"
+
+require conf/distro/include/sane-srcdates.inc
+PREFERRED_VERSION_openlink = "svn"
+PREFERRED_VERSION_dtc = "20070216"
+PREFERRED_VERSION_dtc-native = "20070216"
+PREFERRED_VERSION_udev = "097"
+
+# Various defines for QNAP Turbostation
+#FOONAS_KERNEL_turbostation = "kernel-module-ext3 kernel-module-minix \
+# kernel-module-usb-storage"
+#FOONAS_SUPPORT_turbostation += "uboot-utils"
+#BOOTSTRAP_EXTRA_RDEPENDS_turbostation = "udev mdadm"
+#
+# Various defines for Linkstations
+#FOONAS_KERNEL_lsppchg = "kernel-module-dm-mod kernel-module-raid1 \
+# kernel-module-raid0 kernel-module-raid456 \
+# kernel-module-multipath"
+#FOONAS_KERNEL_lsppchd = "${FOONAS_KERNEL_lsppchg}"
+#FOONAS_SUPPORT_lsppchd = "uboot-utils dtc"
+#FOONAS_SUPPORT_lsppchg = ${FOONAS_SUPPORT_lsppchd}
+#
+#FOONAS_KERNEL_storcenter = "kernel-module-dummy \
+# kernel-module-af-packet "
+
diff --git a/conf/distro/generic.conf b/conf/distro/generic.conf
index 27c0437cf5..a9d667372f 100644
--- a/conf/distro/generic.conf
+++ b/conf/distro/generic.conf
@@ -19,14 +19,13 @@ DISTRO_TYPE = "debug"
#
# Naming schemes
#
-PARALLEL_INSTALL_MODULES = "1"
INHERIT += "debian multimachine"
#
# Packaging and output format
#
INHERIT += "package_ipk"
-IMAGE_FSTYPES = "tar.gz ext2.gz jffs2"
+IMAGE_FSTYPES ?= "tar.gz ext2.gz jffs2"
#
# Kernel
@@ -53,10 +52,13 @@ PREFERRED_VERSION_binutils-cross ?= "2.17.50.0.5"
TARGET_OS = "linux"
TARGET_FPU_arm = "soft"
TARGET_FPU_armeb = "soft"
+
PREFERRED_PROVIDER_virtual/libiconv = "glibc"
PREFERRED_PROVIDER_virtual/libintl = "glibc"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}-libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/libc = "glibc"
PREFERRED_PROVIDER_virtual/arm-linux-libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}-libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/${TARGET_ARCH}-${TARGET_OS}-libc-for-gcc = "glibc-intermediate"
PREFERRED_VERSION_linux-libc-headers ?= "2.6.18"
PREFERRED_VERSION_glibc ?= "2.5"
PREFERRED_VERSION_glibc-intermediate ?= "2.5"
diff --git a/conf/distro/include/angstrom-glibc.inc b/conf/distro/include/angstrom-glibc.inc
index 28e3b3eddd..9b288e8e0b 100644
--- a/conf/distro/include/angstrom-glibc.inc
+++ b/conf/distro/include/angstrom-glibc.inc
@@ -3,17 +3,20 @@ PREFERRED_PROVIDER_virtual/libiconv ?= "glibc"
PREFERRED_PROVIDER_virtual/libintl ?= "glibc"
PREFERRED_PROVIDER_virtual/libc ?= "glibc"
-TARGET_OS = "linux${@['','-gnueabi'][bb.data.getVar('TARGET_ARCH',d,1)=='arm']}"
+TARGET_OS = "linux${@['','-gnueabi'][bb.data.getVar('TARGET_ARCH',d,1) in ['arm', 'armeb']]}"
#mess with compiler flags to use -Os instead of -O2
#Please see http://free-electrons.com/doc/embedded_linux_optimizations/img47.html for some more info
# perl has some problems, see http://bugs.openembedded.org/show_bug.cgi?id=1616
+# [23:00] oxo: glibc (any version) on sparc does not like (repeat me) "-Os"
FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os"
FULL_OPTIMIZATION_pn-perl = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O1"
+FULL_OPTIMIZATION_sparc = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2"
BUILD_OPTIMIZATION = "-Os"
BUILD_OPTIMIZATION_pn-perl = "-O1"
+BUILD_OPTIMIZATION_sparc = "-O2"
CXXFLAGS += "-fvisibility-inlines-hidden"
diff --git a/conf/distro/include/angstrom-uclibc.inc b/conf/distro/include/angstrom-uclibc.inc
index 149b8ed9d8..9c3274e58f 100644
--- a/conf/distro/include/angstrom-uclibc.inc
+++ b/conf/distro/include/angstrom-uclibc.inc
@@ -6,7 +6,7 @@ PREFERRED_PROVIDER_virtual/libintl ?= "gettext"
USE_NLS ?= "no"
-TARGET_OS = "linux${@['-uclibc','-uclibcgnueabi'][bb.data.getVar('TARGET_ARCH',d,1)=='arm']}"
+TARGET_OS = "linux${@['-uclibc','-uclibcgnueabi'][bb.data.getVar('TARGET_ARCH',d,1) in ['arm', 'armeb']]}"
#mess with compiler flags to use -Os instead of -O2
#Please see http://free-electrons.com/doc/embedded_linux_optimizations/img47.html for some more info
diff --git a/conf/distro/include/angstrom.inc b/conf/distro/include/angstrom.inc
index c057d1a05e..6605fff3e8 100644
--- a/conf/distro/include/angstrom.inc
+++ b/conf/distro/include/angstrom.inc
@@ -6,7 +6,6 @@ DISTRO = "angstrom"
DISTRO_NAME = "Angstrom"
TARGET_VENDOR = "-angstrom"
-MACHINE_TASK_PROVIDER = "task-base"
# Can be "glibc" and "uclibc"
ANGSTROM_MODE ?= "glibc"
@@ -22,7 +21,7 @@ MAINTAINER = "Angstrom Developers <angstrom-distro-devel@linuxtogo.org>"
#use ipkg package format with debian style naming
#use multimachine buildrules
-INHERIT += "package_ipk debian multimachine sanity devshell angstrom-mirrors"
+INHERIT += "package_ipk debian multimachine sanity devshell angstrom-mirrors insane"
#Generate locales on the buildsystem instead of on the target. Speeds up first boot, set to "1" to enable
PREFERRED_PROVIDER_qemu-native = "qemu-native"
@@ -37,10 +36,6 @@ TARGET_FPU_arm ?= "soft"
TARGET_FPU_armeb ?= "soft"
TARGET_FPU_ixp4xx ?= "soft"
-
-#Make a LE jffs2 image
-SLUGOS_IMAGESEX = "little-endian"
-
#Name the generated images in a sane way
IMAGE_NAME = "${DISTRO_NAME}-${IMAGE_BASENAME}-${DISTRO_VERSION}-${MACHINE}"
DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}"
@@ -50,3 +45,4 @@ DISTRO_CHECK := "${@bb.data.getVar("DISTRO_VERSION",d,1) or bb.fatal('Remove thi
# We want images supporting the following features (for task-base)
DISTRO_FEATURES = "nfs smbfs wifi ppp alsa bluetooth ext2 irda pcmcia usbgadget usbhost pci"
+DISTRO_FEATURES_nslu2 = "nfs smbfs alsa bluetooth ext2 usbhost pci"
diff --git a/conf/distro/include/debianslug-packages.inc b/conf/distro/include/debianslug-packages.inc
deleted file mode 100644
index a4b9a6720f..0000000000
--- a/conf/distro/include/debianslug-packages.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-SLUGOS_EXTRA_BBFILES = "${DEBIANSLUG_EXTRA_BBFILES}"
-require conf/distro/include/slugos-packages.conf
diff --git a/conf/distro/include/freeze.inc b/conf/distro/include/freeze.inc
index d41cb89111..4c2c8b1e2e 100644
--- a/conf/distro/include/freeze.inc
+++ b/conf/distro/include/freeze.inc
@@ -14,12 +14,10 @@ FROZEN_DIR ?= "/non/-existent/-directory/-for/-security"
# Pull in the frozen definitions (if they exist) The multiple
# includes allow the frozen file to be stored alongside local.conf
-# and in the conf/distro directory - the former take precedence over
-# the latter.
-require conf/distro/include/${DISTRO}-packages.inc
+# and in a distro-specific frozen directory - the former take
+# precedence over the latter.
include conf/${DISTRO}-packages.conf
include ${FROZEN_DIR}/${DISTRO}-packages.conf
-require conf/distro/include/${DISTRO}-bbfiles.inc
include conf/${DISTRO}-bbfiles.conf
include ${FROZEN_DIR}/${DISTRO}-bbfiles.conf
diff --git a/conf/distro/include/openmoko.inc b/conf/distro/include/openmoko.inc
new file mode 100644
index 0000000000..457aa997dd
--- /dev/null
+++ b/conf/distro/include/openmoko.inc
@@ -0,0 +1,142 @@
+#
+# Header
+#
+DISTRO_NAME = "OpenMoKo"
+
+#
+# Naming schemes
+#
+INHERIT += "debian multimachine"
+
+#
+# Packaging and output format
+#
+INHERIT += "package_ipk"
+IMAGE_FSTYPES = "tar.gz ext2.gz jffs2"
+IMAGE_FSTYPES_x86 = "tar.gz"
+IMAGE_ROOTFS_SIZE_ext2 = "131072"
+
+#
+# Binutils & Compiler
+#
+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"
+
+# EABI stuff
+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/arm-linux-libc-for-gcc = "glibc-intermediate"
+
+#
+# Target OS & FPU system
+#
+TARGET_OS = "linux"
+TARGET_FPU_arm = "soft"
+TARGET_FPU_armeb = "soft"
+PREFERRED_PROVIDER_virtual/libiconv = "glibc"
+PREFERRED_PROVIDER_virtual/libintl = "glibc"
+PREFERRED_VERSION_linux-libc-headers_x86 = "2.6.15.99"
+PREFERRED_VERSION_linux-libc_headers = "2.6.18"
+#
+# Features
+#
+DISTRO_FEATURES = "alsa bluetooth ext2 ipsec nfs ppp smbfs usbgadget usbhost"
+
+#
+# Bootstrap & Init
+#
+require conf/distro/include/sane-srcdates.inc
+
+#
+# Framebuffer & X
+#
+PREFERRED_PROVIDER_virtual/libx11 ?= "libx11"
+PREFERRED_PROVIDER_virtual/ecore ?= "ecore-x11"
+PREFERRED_PROVIDER_virtual/evas ?= "evas-x11"
+PREFERRED_PROVIDER_virtual/esmart ?= "esmart-x11"
+PREFERRED_PROVIDER_virtual/libsdl = "libsdl-x11"
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
+PREFERRED_PROVIDER_tslib ?= "tslib"
+PREFERRED_PROVIDER_xserver ?= "xserver-kdrive"
+require conf/distro/include/preferred-xorg-versions-X11R7.1.inc
+
+#
+# Gnome
+#
+PREFERRED_PROVIDER_dbus-glib = "dbus-glib"
+PREFERRED_PROVIDER_gconf = "gconf-dbus"
+#new
+#PREFERRED_PROVIDER_gnome-vfs = "gnome-vfs"
+#old
+PREFERRED_PROVIDER_gnome-vfs = "gnome-vfs"
+PREFERRED_PROVIDER_gnome-vfs-plugin-file = "gnome-vfs"
+
+PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
+PREFERRED_PROVIDER_bluez-utils = "bluez-utils-dbus"
+
+PREFERRED_VERSION_dbus-native = "1.0.2"
+PREFERRED_VERSION_dbus = "1.0.2"
+PREFERRED_VERSION_dbus-glib-native = "0.71"
+PREFERRED_VERSION_dbus-glib = "0.71"
+PREFERRED_VERSION_atk = "1.9.0"
+PREFERRED_VERSION_pango = "1.8.2"
+PREFERRED_VERSION_glib-2.0 = "2.12.3"
+PREFERRED_VERSION_gtk+ = "2.6.10"
+PREFERRED_VERSION_gtk-engines = "2.6.5"
+#PREFERRED_VERSION_gnome-vfs = "2.16.3"
+
+PREFERRED_VERSION_fontconfig = "2.4.1"
+
+# 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+"
+#
+# GPE
+#
+PREFERRED_PROVIDER_libgpewidget = "libgpewidget"
+
+#
+# O-Hand
+#
+PREFERRED_VERSION_contacts = "0.1"
+PREFERRED_VERSION_dates = "0.1"
+# PREFERRED_VERSION_web = "???"
+
+#
+# Development
+#
+PREFERRED_PROVIDER_qemu-native = "qemu-native"
+PREFERRED_VERSION_qemu-native = "0.8.2+cvs${SRCDATE}"
+
+#
+# Opie
+#
+QTE_VERSION = "2.3.10"
+PALMTOP_USE_MULTITHREADED_QTE = "yes"
+require conf/distro/include/preferred-opie-versions.inc
+
+#
+# Enlightenment
+#
+require conf/distro/include/preferred-e-versions.inc
+
+#
+# OpenMoko
+#
+
+#We comment this out since external developers don't needs to use SRCDATE="now" as that generated unneed traffic
+#require conf/distro/include/preferred-openmoko-versions.inc
+
diff --git a/conf/distro/include/openslug-native-packages.inc b/conf/distro/include/openslug-native-packages.inc
deleted file mode 100644
index 7f7a448434..0000000000
--- a/conf/distro/include/openslug-native-packages.inc
+++ /dev/null
@@ -1,11 +0,0 @@
-# automatically generated by bitbake freeze
-BBFILES := "\
-${PKGDIR}/packages/apache/*.bb \
-${PKGDIR}/packages/openssl/*.bb \
-${PKGDIR}/packages/ipkg-utils/*.bb \
-${PKGDIR}/packages/meta/package-index.bb \
-${PKGDIR}/packages/meta/openslug-native-packages.bb \
-${PKGDIR}/packages/freeze/*.bb \
-${PKGDIR}/packages/pcre/*.bb \
-${PKGDIR}/packages/expat/*.bb \
-${OPENSLUG_NATIVE_EXTRA_BBFILES}"
diff --git a/conf/distro/include/openslug-packages.inc b/conf/distro/include/openslug-packages.inc
deleted file mode 100644
index fe09a7bcfa..0000000000
--- a/conf/distro/include/openslug-packages.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-SLUGOS_EXTRA_BBFILES = "${OPENSLUG_EXTRA_BBFILES}"
-require conf/distro/include/slugos-packages.conf
diff --git a/conf/distro/include/openzaurus.inc b/conf/distro/include/openzaurus.inc
deleted file mode 100644
index 8274148823..0000000000
--- a/conf/distro/include/openzaurus.inc
+++ /dev/null
@@ -1,25 +0,0 @@
-#@TYPE: Distribution
-#@NAME: OpenZaurus
-#@DESCRIPTION: Distribution configuration for OpenZaurus (http://www.openzaurus.org)
-
-DISTRO = "openzaurus"
-DISTRO_NAME = "OpenZaurus"
-
-INHERIT += " package_ipk debian multimachine"
-# For some reason, this doesn't work
-# TARGET_OS ?= "linux"
-TARGET_OS = "linux"
-TARGET_FPU = "soft"
-
-BOOTSTRAP_EXTRA_RDEPENDS += "openzaurus-version"
-
-PARALLEL_INSTALL_MODULES = "1"
-
-DISTRO_CHECK := "${@bb.data.getVar("DISTRO_VERSION",d,1) or bb.fatal('Remove this line or set a dummy DISTRO_VERSION if you really want to build an unversioned distro')}"
-
-# Set minimal version of BitBake needed
-BB_MIN_VERSION = "1.4.4"
-INHERIT += "sanity"
-
-# We want images supporting the following features (for task-base)
-DISTRO_FEATURES = "nfs smbfs wifi ppp alsa bluetooth ext2 irda pcmcia usbgadget usbhost"
diff --git a/conf/distro/include/oplinux.inc b/conf/distro/include/oplinux.inc
new file mode 100644
index 0000000000..a700a830b8
--- /dev/null
+++ b/conf/distro/include/oplinux.inc
@@ -0,0 +1,66 @@
+#
+# extra checking for needed tools
+#
+
+# set minimal version of BitBake needed
+BB_MIN_VERSION = "1.6.3"
+
+#oplinux is a multimachine distro
+INHERIT += "multimachine"
+
+# check for required tools and minimal BitBake version
+INHERIT += "sanity"
+
+
+#
+# Naming schemes
+#
+PARALLEL_INSTALL_MODULES = "1"
+INHERIT += "package_ipk debian"
+
+#
+# Packaging and output format
+
+IMAGE_FSTYPES = "tar jffs2 ext2 cramfs squashfs squashfs-lzma cpio.gz"
+
+
+
+
+# Specifies a location to search for pre-generated tarballs when fetching
+# a cvs:// URI. Outcomment this, if you always want to pull directly from CVS.
+#CVS_TARBALL_STASH = "http://www.digital-opsis.com/oplinux/source/current/"
+
+#INHERIT += "owmnr-mirrors"
+
+#Uncommend this is if you are using bitbake multithread and you have multiple cpu's or cores you are running on
+#BB_NUMBER_THREADS = "5"
+
+#Uncommend this if you hava icecc installed
+#INHERIT += "icecc"
+#PARALLEL_MAKE = "-j6"
+#ICECC_PATH = "/usr/bin/icecc"
+#ICECC_ENV_EXEC = "/home/stelios/icecc-create-env"
+
+#
+# Bootstrap & Init
+PREFERRED_PROVIDER_task-bootstrap = "task-base"
+
+# We want images supporting the following features (for task-base
+DISTRO_FEATURES = "nfs smbfs ext2 pcmcia usbgadget usbhost pci"
+
+
+OPLINUX_URI = "http://www.ifaistos.awmn/oplinux"
+OPLINUX-uCLIBC_URI = "http://www.ifaistos.awmn/oplinux-uclibc"
+
+#Dir config
+IMAGE_ROOTFS = "${TMPDIR}/rootfs/${MACHINE}"
+
+#
+#Preferred versions of packages we need
+#
+PREFERRED_VERSION_busybox = "1.2.1"
+PREFERRED_VERSION_u-boot ?= "1.1.4"
+# Latest linphone supports yeaphone
+PREFERRED_VERSION_linphone ?= "1.6.0"
+
+
diff --git a/conf/distro/include/preferred-gpe-versions-2.7.inc b/conf/distro/include/preferred-gpe-versions-2.7.inc
index 662dfc386f..cbdaec0a21 100644
--- a/conf/distro/include/preferred-gpe-versions-2.7.inc
+++ b/conf/distro/include/preferred-gpe-versions-2.7.inc
@@ -7,7 +7,7 @@
#set some preferred providers:
PREFERRED_PROVIDER_gconf="gconf-dbus"
-PREFERRED_PROVIDER_gnome-vfs="gnome-vfs-dbus"
+PREFERRED_PROVIDER_gnome-vfs="gnome-vfs"
#specify versions, as the header says :)
PREFERRED_VERSION_libmatchbox ?= "1.7"
diff --git a/conf/distro/include/preferred-gpe-versions-2.8.inc b/conf/distro/include/preferred-gpe-versions-2.8.inc
index bf00aa8d01..a246633e07 100644
--- a/conf/distro/include/preferred-gpe-versions-2.8.inc
+++ b/conf/distro/include/preferred-gpe-versions-2.8.inc
@@ -4,7 +4,7 @@
#set some preferred providers:
PREFERRED_PROVIDER_gconf="gconf-dbus"
-PREFERRED_PROVIDER_gnome-vfs="gnome-vfs-dbus"
+PREFERRED_PROVIDER_gnome-vfs="gnome-vfs"
PREFERRED_VERSION_gaim ?= "2.0.0-cvs-mco1-20050904"
diff --git a/conf/distro/include/preferred-gpe-versions.inc b/conf/distro/include/preferred-gpe-versions.inc
index 7d4efea06e..5db9d7f06a 100644
--- a/conf/distro/include/preferred-gpe-versions.inc
+++ b/conf/distro/include/preferred-gpe-versions.inc
@@ -7,7 +7,7 @@
#set some preferred providers:
PREFERRED_PROVIDER_gconf="gconf-dbus"
-PREFERRED_PROVIDER_gnome-vfs="gnome-vfs-dbus"
+PREFERRED_PROVIDER_gnome-vfs="gnome-vfs"
#specify versions, as the header says :)
#PREFERRED_VERSION_libmatchbox ?= "1.6"
diff --git a/conf/distro/include/preferred-openmoko-versions.inc b/conf/distro/include/preferred-openmoko-versions.inc
new file mode 100644
index 0000000000..263406c90b
--- /dev/null
+++ b/conf/distro/include/preferred-openmoko-versions.inc
@@ -0,0 +1,60 @@
+#
+# Specify which versions of OpenMoko packages to build
+#
+
+#
+# Base
+#
+
+SRCDATE_uboot = "now"
+SRCDATE_uboot-gta01 = "now"
+SRCDATE_kernel = "now"
+SRCDATE_linux-gta01 = "now"
+SRCDATE_linux-gta01-nobbt = "now"
+SRCDATE_libgsmd = "now"
+SRCDATE_openmoko-session = "now"
+SRCDATE_openmoko-common = "now"
+SRCDATE_openmoko-theme-standard = "now"
+SRCDATE_openmoko-libs = "now"
+
+#
+# Examples
+#
+SRCDATE_openmoko-stylus-demo = "now"
+SRCDATE_openmoko-stylus-demo-simple = "now"
+SRCDATE_openmoko-finger-demo = "now"
+SRCDATE_openmoko-panel-demo = "now"
+SRCDATE_openmoko-panel-demo-simple = "now"
+
+#
+# PIM
+#
+SRCDATE_openmoko-contacts = "now"
+SRCDATE_openmoko-dates = "now"
+
+#
+# Applications
+#
+SRCDATE_openmoko-appmanager = "now"
+SRCDATE_openmoko-chordmaster = "now"
+SRCDATE_openmoko-dialer = "now"
+SRCDATE_openmoko-footer = "now"
+SRCDATE_openmoko-phone = "now"
+SRCDATE_openmoko-mainmenu = "now"
+SRCDATE_openmoko-taskmanager = "now"
+
+#
+# Multimedia
+#
+SRCDATE_openmoko-simplemediaplayer = "now"
+
+#
+# Panel Plugins
+#
+SRCDATE_openmoko-panel-clock = "now"
+SRCDATE_openmoko-panel-battery = "now"
+SRCDATE_openmoko-panel-mainmenu = "now"
+SRCDATE_openmoko-panel-gsm = "now"
+SRCDATE_openmoko-panel-gps = "now"
+SRCDATE_openmoko-panel-bt = "now"
+SRCDATE_openmoko-panel-usb = "now"
diff --git a/conf/distro/include/preferred-opie-cvs-versions.inc b/conf/distro/include/preferred-opie-cvs-versions.inc
index 93b068ee65..d27f56fb04 100644
--- a/conf/distro/include/preferred-opie-cvs-versions.inc
+++ b/conf/distro/include/preferred-opie-cvs-versions.inc
@@ -106,7 +106,8 @@ SRCDATE_opie-mediaplayer1-libmadplugin ?= "${OPIE_VERSION}"
SRCDATE_opie-mediaplayer1-libmodplugin ?= "${OPIE_VERSION}"
SRCDATE_opie-mediaplayer1-libtremorplugin ?= "${OPIE_VERSION}"
SRCDATE_opie-mediaplayer1-libwavplugin ?= "${OPIE_VERSION}"
-SRCDATE_opie-mediaplayer1 ?= "${OPIE_VERSION}"
+SRCDATE_opie-mediaplayer1-libwavplugin ?= "${OPIE_VERSION}"
+SRCDATE_opie-mediaplayer1-core ?= "${OPIE_VERSION}"
SRCDATE_opie-mediaplayer2 ?= "${OPIE_VERSION}"
SRCDATE_opie-mediaplayer2-skin-default ?= "${OPIE_VERSION}"
SRCDATE_opie-mediaplayer2-skin-default-landscape ?= "${OPIE_VERSION}"
diff --git a/conf/distro/include/preferred-opie-versions-1.2.3-pre.inc b/conf/distro/include/preferred-opie-versions-1.2.3-pre.inc
new file mode 100644
index 0000000000..6990c98000
--- /dev/null
+++ b/conf/distro/include/preferred-opie-versions-1.2.3-pre.inc
@@ -0,0 +1,412 @@
+#
+# Default versions
+QTE_VERSION ?= "2.3.10"
+PALMTOP_USE_MULTITHREADED_QT ?= "yes"
+
+OPIE_SRCDATE ?= "20070428"
+OPIE_VERSION ?= "1.2.2+cvs${OPIE_SRCDATE}"
+OPIE_CVS_PV ?= "1.2.2+cvs${OPIE_SRCDATE}"
+
+#
+#
+# Opie libraries
+#
+PREFERRED_PROVIDER_virtual/libqte2 = '${@base_conditional("PALMTOP_USE_MULTITHREADED_QT", "yes", "qte-mt", "qte", d)}'
+PREFERRED_PROVIDER_virtual/libqpe1 = "libqpe-opie"
+PREFERRED_VERSION_qte-mt = "${QTE_VERSION}"
+PREFERRED_VERSION_qte = "${QTE_VERSION}"
+
+PREFERRED_VERSION_libopie2 ?= "${OPIE_VERSION}"
+PREFERRED_VERSION_libopieobex0 = "${OPIE_VERSION}"
+PREFERRED_VERSION_libopietooth1 = "${OPIE_VERSION}"
+PREFERRED_VERSION_libqpe-opie = "${OPIE_VERSION}"
+PREFERRED_VERSION_libqtaux2 = "${OPIE_VERSION}"
+PREFERRED_VERSION_libmailwrapper = "${OPIE_VERSION}"
+
+SRCDATE_libopie2 ?= "${OPIE_SRCDATE}"
+SRCDATE_libopieobex0 = "${OPIE_SRCDATE}"
+SRCDATE_libopietooth1 = "${OPIE_SRCDATE}"
+SRCDATE_libqpe-opie = "${OPIE_SRCDATE}"
+SRCDATE_libqtaux2 = "${OPIE_SRCDATE}"
+SRCDATE_libmailwrapper = "${OPIE_SRCDATE}"
+
+#
+# Opie applications
+#
+PREFERRED_VERSION_opie-aboutapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-addressbook = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-advancedfm = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-alarm = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-appearance = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-aqpkg = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-autorotateapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-backgammon = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-backup = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-bartender = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-batteryapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-bluepin ?= "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-bluetoothapplet ?= "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-bluetoothmanager ?= "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-bounce = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-brightnessapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-button-settings = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-buzzword = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-calculator = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-calibrate = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-camera = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-cardmon = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-checkbook = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-citytime = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-clipboardapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-clockapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-clock = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-confeditor = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-console = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-dagger = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-dasher = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-datebook = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-datebook-chrisholidayplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-datebook-nationalholidayplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-datebook-birthdayplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-deco-flat = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-deco-liquid = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-deco-polished = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-doctab = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-drawpad = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-dvorak = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-embeddedkonsole = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-euroconv = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-examples-python = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-examples = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-eye = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-fifteen = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-formatter = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-freetype = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-ftplib = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-ftp = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-go = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-gutenbrowser = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-handwriting = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-helpbrowser = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-help-en = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-homeapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-i18n = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-lrelease-native = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-lupdate-native = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-icon-reload = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-irc = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-irdaapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-jumpx = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-kbill = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-kcheckers = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-keyboard = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-keypebble = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-keytabs = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-keyview = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-kjumpx = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-kpacman = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-language = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-launcher-settings = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-libqrsync = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-light-and-power = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-lockapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-login = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-logoutapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mailapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mail = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mediaplayer1-libmadplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mediaplayer1-libmodplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mediaplayer1-libtremorplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mediaplayer1-libwavplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mediaplayer1-core = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mediaplayer1 = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mediaplayer2 = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mediaplayer2-skin-default = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mediaplayer2-skin-default-landscape = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mediaplayer2-skin-pod = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mediaplayer2-skin-techno = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mediummount = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-memoryapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mindbreaker = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-minesweep = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mobilemsg = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-multikeyapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-multikey = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-networkapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-networksettings = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-notesapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-odict = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-osearch = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-oxygen = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-oyatzee = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-packagemanager = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-parashoot = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-pcmciaapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-performance = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-pickboard = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-pics = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-pimconverter = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-powerchord = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-pyquicklaunchapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-qasteroids = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-qcop = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-quicklauncher = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-qss = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-rdesktop = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-reader = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-recorder = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-remote = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-restartapplet2 = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-restartapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-restartapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-rotateapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-screenshotapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-search = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-security = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-securityplugin-blueping = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-securityplugin-dummy = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-securityplugin-notice = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-securityplugin-pin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-sfcave = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-sheet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-sh = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-showimg = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-snake = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-solitaire = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-sshkeys = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-style-flat = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-style-fresh = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-style-liquid = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-style-metal = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-style-phase = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-style-web = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-sounds = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-suspendapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-symlinker = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-sysinfo = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-systemtime = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-tableviewer = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-tabmanager = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-taskbar = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-tetrix = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-textedit = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-theme = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-tictac = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-tinykate = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-today-addressbookplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-today-datebookplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-today-fortuneplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-today-mailplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-today = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-today-stocktickerplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-today-todolistplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-today-weatherplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-todo = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-tonleiter = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-unikeyboard = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-usermanager = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-vmemo = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-vmemo-settings = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-volumeapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-vtapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-wellenreiter = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-wirelessapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-wordgame = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-write = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-zkbapplet = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-zlines = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-zsafe = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-zsame = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-sh-snes = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-stumbler = "${OPIE_VERSION}"
+
+PREFERRED_VERSION_konqueror-embedded = "20060404"
+
+
+SRCDATE_opie-aboutapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-addressbook = "${OPIE_SRCDATE}"
+SRCDATE_opie-advancedfm = "${OPIE_SRCDATE}"
+SRCDATE_opie-alarm = "${OPIE_SRCDATE}"
+SRCDATE_opie-appearance = "${OPIE_SRCDATE}"
+SRCDATE_opie-aqpkg = "${OPIE_SRCDATE}"
+SRCDATE_opie-autorotateapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-backgammon = "${OPIE_SRCDATE}"
+SRCDATE_opie-backup = "${OPIE_SRCDATE}"
+SRCDATE_opie-bartender = "${OPIE_SRCDATE}"
+SRCDATE_opie-batteryapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-bluepin ?= "${OPIE_SRCDATE}"
+SRCDATE_opie-bluetoothapplet ?= "${OPIE_SRCDATE}"
+SRCDATE_opie-bluetoothmanager ?= "${OPIE_SRCDATE}"
+SRCDATE_opie-bounce = "${OPIE_SRCDATE}"
+SRCDATE_opie-brightnessapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-button-settings = "${OPIE_SRCDATE}"
+SRCDATE_opie-buzzword = "${OPIE_SRCDATE}"
+SRCDATE_opie-calculator = "${OPIE_SRCDATE}"
+SRCDATE_opie-calibrate = "${OPIE_SRCDATE}"
+SRCDATE_opie-camera = "${OPIE_SRCDATE}"
+SRCDATE_opie-cardmon = "${OPIE_SRCDATE}"
+SRCDATE_opie-checkbook = "${OPIE_SRCDATE}"
+SRCDATE_opie-citytime = "${OPIE_SRCDATE}"
+SRCDATE_opie-clipboardapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-clockapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-clock = "${OPIE_SRCDATE}"
+SRCDATE_opie-confeditor = "${OPIE_SRCDATE}"
+SRCDATE_opie-console = "${OPIE_SRCDATE}"
+SRCDATE_opie-dagger = "${OPIE_SRCDATE}"
+SRCDATE_opie-dasher = "${OPIE_SRCDATE}"
+SRCDATE_opie-datebook = "${OPIE_SRCDATE}"
+SRCDATE_opie-datebook-chrisholidayplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-datebook-nationalholidayplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-datebook-birthdayplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-deco-flat = "${OPIE_SRCDATE}"
+SRCDATE_opie-deco-liquid = "${OPIE_SRCDATE}"
+SRCDATE_opie-deco-polished = "${OPIE_SRCDATE}"
+SRCDATE_opie-doctab = "${OPIE_SRCDATE}"
+SRCDATE_opie-drawpad = "${OPIE_SRCDATE}"
+SRCDATE_opie-dvorak = "${OPIE_SRCDATE}"
+SRCDATE_opie-embeddedkonsole = "${OPIE_SRCDATE}"
+SRCDATE_opie-euroconv = "${OPIE_SRCDATE}"
+SRCDATE_opie-examples-python = "${OPIE_SRCDATE}"
+SRCDATE_opie-examples = "${OPIE_SRCDATE}"
+SRCDATE_opie-eye = "${OPIE_SRCDATE}"
+SRCDATE_opie-fifteen = "${OPIE_SRCDATE}"
+SRCDATE_opie-formatter = "${OPIE_SRCDATE}"
+SRCDATE_opie-freetype = "${OPIE_SRCDATE}"
+SRCDATE_opie-ftplib = "${OPIE_SRCDATE}"
+SRCDATE_opie-ftp = "${OPIE_SRCDATE}"
+SRCDATE_opie-go = "${OPIE_SRCDATE}"
+SRCDATE_opie-gutenbrowser = "${OPIE_SRCDATE}"
+SRCDATE_opie-handwriting = "${OPIE_SRCDATE}"
+SRCDATE_opie-helpbrowser = "${OPIE_SRCDATE}"
+SRCDATE_opie-help-en = "${OPIE_SRCDATE}"
+SRCDATE_opie-homeapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-i18n = "${OPIE_SRCDATE}"
+SRCDATE_opie-lrelease-native = "${OPIE_SRCDATE}"
+SRCDATE_opie-lupdate-native = "${OPIE_SRCDATE}"
+SRCDATE_opie-icon-reload = "${OPIE_SRCDATE}"
+SRCDATE_opie-irc = "${OPIE_SRCDATE}"
+SRCDATE_opie-irdaapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-jumpx = "${OPIE_SRCDATE}"
+SRCDATE_opie-kbill = "${OPIE_SRCDATE}"
+SRCDATE_opie-kcheckers = "${OPIE_SRCDATE}"
+SRCDATE_opie-keyboard = "${OPIE_SRCDATE}"
+SRCDATE_opie-keypebble = "${OPIE_SRCDATE}"
+SRCDATE_opie-keytabs = "${OPIE_SRCDATE}"
+SRCDATE_opie-keyview = "${OPIE_SRCDATE}"
+SRCDATE_opie-kjumpx = "${OPIE_SRCDATE}"
+SRCDATE_opie-kpacman = "${OPIE_SRCDATE}"
+SRCDATE_opie-language = "${OPIE_SRCDATE}"
+SRCDATE_opie-launcher-settings = "${OPIE_SRCDATE}"
+SRCDATE_opie-libqrsync = "${OPIE_SRCDATE}"
+SRCDATE_opie-light-and-power = "${OPIE_SRCDATE}"
+SRCDATE_opie-lockapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-login = "${OPIE_SRCDATE}"
+SRCDATE_opie-logoutapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-mailapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-mail = "${OPIE_SRCDATE}"
+SRCDATE_opie-mediaplayer1-libmadplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-mediaplayer1-libmodplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-mediaplayer1-libtremorplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-mediaplayer1-libwavplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-mediaplayer1-core = "${OPIE_SRCDATE}"
+SRCDATE_opie-mediaplayer1 = "${OPIE_SRCDATE}"
+SRCDATE_opie-mediaplayer2 = "${OPIE_SRCDATE}"
+SRCDATE_opie-mediaplayer2-skin-default = "${OPIE_SRCDATE}"
+SRCDATE_opie-mediaplayer2-skin-default-landscape = "${OPIE_SRCDATE}"
+SRCDATE_opie-mediaplayer2-skin-pod = "${OPIE_SRCDATE}"
+SRCDATE_opie-mediaplayer2-skin-techno = "${OPIE_SRCDATE}"
+SRCDATE_opie-mediummount = "${OPIE_SRCDATE}"
+SRCDATE_opie-memoryapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-mindbreaker = "${OPIE_SRCDATE}"
+SRCDATE_opie-minesweep = "${OPIE_SRCDATE}"
+SRCDATE_opie-mobilemsg = "${OPIE_SRCDATE}"
+SRCDATE_opie-multikeyapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-multikey = "${OPIE_SRCDATE}"
+SRCDATE_opie-networkapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-networksettings = "${OPIE_SRCDATE}"
+SRCDATE_opie-notesapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-odict = "${OPIE_SRCDATE}"
+SRCDATE_opie-osearch = "${OPIE_SRCDATE}"
+SRCDATE_opie-oxygen = "${OPIE_SRCDATE}"
+SRCDATE_opie-oyatzee = "${OPIE_SRCDATE}"
+SRCDATE_opie-packagemanager = "${OPIE_SRCDATE}"
+SRCDATE_opie-parashoot = "${OPIE_SRCDATE}"
+SRCDATE_opie-pcmciaapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-performance = "${OPIE_SRCDATE}"
+SRCDATE_opie-pickboard = "${OPIE_SRCDATE}"
+SRCDATE_opie-pics = "${OPIE_SRCDATE}"
+SRCDATE_opie-pimconverter = "${OPIE_SRCDATE}"
+SRCDATE_opie-powerchord = "${OPIE_SRCDATE}"
+SRCDATE_opie-pyquicklaunchapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-qasteroids = "${OPIE_SRCDATE}"
+SRCDATE_opie-qcop = "${OPIE_SRCDATE}"
+SRCDATE_opie-quicklauncher = "${OPIE_SRCDATE}"
+SRCDATE_opie-qss = "${OPIE_SRCDATE}"
+SRCDATE_opie-rdesktop = "${OPIE_SRCDATE}"
+SRCDATE_opie-reader = "${OPIE_SRCDATE}"
+SRCDATE_opie-recorder = "${OPIE_SRCDATE}"
+SRCDATE_opie-remote = "${OPIE_SRCDATE}"
+SRCDATE_opie-restartapplet2 = "${OPIE_SRCDATE}"
+SRCDATE_opie-restartapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-restartapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-rotateapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-screenshotapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-search = "${OPIE_SRCDATE}"
+SRCDATE_opie-security = "${OPIE_SRCDATE}"
+SRCDATE_opie-securityplugin-blueping = "${OPIE_SRCDATE}"
+SRCDATE_opie-securityplugin-dummy = "${OPIE_SRCDATE}"
+SRCDATE_opie-securityplugin-notice = "${OPIE_SRCDATE}"
+SRCDATE_opie-securityplugin-pin = "${OPIE_SRCDATE}"
+SRCDATE_opie-sfcave = "${OPIE_SRCDATE}"
+SRCDATE_opie-sheet = "${OPIE_SRCDATE}"
+SRCDATE_opie-sh = "${OPIE_SRCDATE}"
+SRCDATE_opie-showimg = "${OPIE_SRCDATE}"
+SRCDATE_opie-snake = "${OPIE_SRCDATE}"
+SRCDATE_opie-solitaire = "${OPIE_SRCDATE}"
+SRCDATE_opie-sshkeys = "${OPIE_SRCDATE}"
+SRCDATE_opie-style-flat = "${OPIE_SRCDATE}"
+SRCDATE_opie-style-fresh = "${OPIE_SRCDATE}"
+SRCDATE_opie-style-liquid = "${OPIE_SRCDATE}"
+SRCDATE_opie-style-metal = "${OPIE_SRCDATE}"
+SRCDATE_opie-style-phase = "${OPIE_SRCDATE}"
+SRCDATE_opie-style-web = "${OPIE_SRCDATE}"
+SRCDATE_opie-sounds = "${OPIE_SRCDATE}"
+SRCDATE_opie-suspendapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-symlinker = "${OPIE_SRCDATE}"
+SRCDATE_opie-sysinfo = "${OPIE_SRCDATE}"
+SRCDATE_opie-systemtime = "${OPIE_SRCDATE}"
+SRCDATE_opie-tableviewer = "${OPIE_SRCDATE}"
+SRCDATE_opie-tabmanager = "${OPIE_SRCDATE}"
+SRCDATE_opie-taskbar = "${OPIE_SRCDATE}"
+SRCDATE_opie-tetrix = "${OPIE_SRCDATE}"
+SRCDATE_opie-textedit = "${OPIE_SRCDATE}"
+SRCDATE_opie-theme = "${OPIE_SRCDATE}"
+SRCDATE_opie-tictac = "${OPIE_SRCDATE}"
+SRCDATE_opie-tinykate = "${OPIE_SRCDATE}"
+SRCDATE_opie-today-addressbookplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-today-datebookplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-today-fortuneplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-today-mailplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-today = "${OPIE_SRCDATE}"
+SRCDATE_opie-today-stocktickerplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-today-todolistplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-today-weatherplugin = "${OPIE_SRCDATE}"
+SRCDATE_opie-todo = "${OPIE_SRCDATE}"
+SRCDATE_opie-tonleiter = "${OPIE_SRCDATE}"
+SRCDATE_opie-unikeyboard = "${OPIE_SRCDATE}"
+SRCDATE_opie-usermanager = "${OPIE_SRCDATE}"
+SRCDATE_opie-vmemo = "${OPIE_SRCDATE}"
+SRCDATE_opie-vmemo-settings = "${OPIE_SRCDATE}"
+SRCDATE_opie-volumeapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-vtapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-wellenreiter = "${OPIE_SRCDATE}"
+SRCDATE_opie-wirelessapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-wordgame = "${OPIE_SRCDATE}"
+SRCDATE_opie-write = "${OPIE_SRCDATE}"
+SRCDATE_opie-zkbapplet = "${OPIE_SRCDATE}"
+SRCDATE_opie-zlines = "${OPIE_SRCDATE}"
+SRCDATE_opie-zsafe = "${OPIE_SRCDATE}"
+SRCDATE_opie-zsame = "${OPIE_SRCDATE}"
+SRCDATE_opie-sh-snes = "${OPIE_SRCDATE}"
+SRCDATE_opie-stumbler = "${OPIE_SRCDATE}"
+
diff --git a/conf/distro/include/preferred-opie-versions.inc b/conf/distro/include/preferred-opie-versions.inc
index d7c5b94f7a..84c0b212ed 100644
--- a/conf/distro/include/preferred-opie-versions.inc
+++ b/conf/distro/include/preferred-opie-versions.inc
@@ -32,9 +32,9 @@ PREFERRED_VERSION_opie-backgammon = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-backup = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-bartender = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-batteryapplet = "${OPIE_VERSION}"
-PREFERRED_VERSION_opie-bluepin = "${OPIE_VERSION}"
-PREFERRED_VERSION_opie-bluetoothapplet = "${OPIE_VERSION}"
-PREFERRED_VERSION_opie-bluetoothmanager = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-bluepin ?= "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-bluetoothapplet ?= "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-bluetoothmanager ?= "${OPIE_VERSION}"
PREFERRED_VERSION_opie-bounce = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-brightnessapplet = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-button-settings = "${OPIE_VERSION}"
@@ -106,6 +106,7 @@ PREFERRED_VERSION_opie-mediaplayer1-libmadplugin = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-mediaplayer1-libmodplugin = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-mediaplayer1-libtremorplugin = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-mediaplayer1-libwavplugin = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-mediaplayer1-core = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-mediaplayer1 = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-mediaplayer2 = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-mediaplayer2-skin-default = "${OPIE_VERSION}"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.1.inc b/conf/distro/include/preferred-xorg-versions-X11R7.1.inc
index 27a6164e54..782549589d 100644
--- a/conf/distro/include/preferred-xorg-versions-X11R7.1.inc
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.1.inc
@@ -153,7 +153,7 @@ PREFERRED_VERSION_libxdmcp ?= "X11R7.1-1.0.1"
PREFERRED_VERSION_libxevie ?= "X11R7.1-1.0.1"
PREFERRED_VERSION_libxext ?= "X11R7.1-1.0.1"
PREFERRED_VERSION_libxfixes ?= "X11R7.1-4.0.1"
-PREFERRED_VERSION_libxfont-native ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_libxfont-native ?= "X11R7.1-1.2.0"
PREFERRED_VERSION_libxfont ?= "X11R7.1-1.2.0"
PREFERRED_VERSION_libxfontcache ?= "X11R7.1-1.0.2"
PREFERRED_VERSION_libxi ?= "X11R7.1-1.0.1"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.2.inc b/conf/distro/include/preferred-xorg-versions-X11R7.2.inc
new file mode 100644
index 0000000000..59a481a104
--- /dev/null
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.2.inc
@@ -0,0 +1,271 @@
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
+
+PREFERRED_PROVIDER_libxext ?= "libxext"
+PREFERRED_PROVIDER_xext ?= "libxext"
+PREFERRED_PROVIDER_libxi ?= "libxi"
+PREFERRED_PROVIDER_libxft ?= "libxft"
+PREFERRED_PROVIDER_virtual/libx11 ?= "libx11"
+PREFERRED_PROVIDER_libxpm ?= "libxpm"
+PREFERRED_PROVIDER_xpm ?= "libxpm"
+PREFERRED_PROVIDER_libxt ?= "libxt"
+PREFERRED_PROVIDER_libxaw ?= "libxaw"
+PREFERRED_PROVIDER_libice ?= "libice"
+PREFERRED_PROVIDER_libxrender ?= "libxrender"
+PREFERRED_PROVIDER_libxcursor ?= "libxcursor"
+PREFERRED_PROVIDER_xextensions ?= "xextensions"
+PREFERRED_PROVIDER_xproto ?= "xproto"
+PREFERRED_PROVIDER_x11 ?= "libx11"
+PREFERRED_PROVIDER_libxv ?= "libxv"
+PREFERRED_PROVIDER_xft ?= "libxft"
+PREFERRED_PROVIDER_libxrandr ?= "libxrandr"
+PREFERRED_PROVIDER_libxdamage ?= "libxdamage"
+PREFERRED_PROVIDER_libxcomposite ?= "libxcomposite"
+PREFERRED_PROVIDER_libxfixes ?= "libxfixes"
+PREFERRED_PROVIDER_libxinerama ?= "libxinerama"
+PREFERRED_PROVIDER_libxxf86vm ?= "libxxf86vm"
+PREFERRED_PROVIDER_libxmu ?= "libxmu"
+PREFERRED_PROVIDER_libsm ?= "libsm"
+PREFERRED_PROVIDER_xrandr ?= "xrandr"
+PREFERRED_PROVIDER_xserver ?= "xserver-xorg"
+PREFERRED_PROVIDER_virtual/xorg ?= "xserver-xorg"
+
+PREFERRED_VERSION_task-xorg ?= "X11R7.2"
+
+# app
+PREFERRED_VERSION_appres ?= "1.0.1"
+PREFERRED_VERSION_bdftopcf ?= "X11R7.0-1.0.0"
+PREFERRED_VERSION_beforelight ?= "1.0.2"
+PREFERRED_VERSION_bitmap ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_editres ?= "1.0.2"
+PREFERRED_VERSION_fontosfnt ?= "1.0.3"
+PREFERRED_VERSION_fslsfonts ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_fstobdf ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_iceauth ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_ico ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_lbxproxy ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_listres ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_luit ?= "1.0.2"
+PREFERRED_VERSION_mkfontdir-native ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_mkfontdir ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_mkfontscale ?= "1.0.3"
+PREFERRED_VERSION_oclock ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_proxymngr ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_rgb ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_rstart ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_scripts ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_sessreg ?= "1.0.2"
+PREFERRED_VERSION_setxkbmap ?= "1.0.3"
+PREFERRED_VERSION_smproxy ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_twm ?= "1.0.3"
+PREFERRED_VERSION_viewres ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_x11perf ?= "X11R7.1-1.4.1"
+PREFERRED_VERSION_xauth ?= "1.0.2"
+PREFERRED_VERSION_xbiff ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xcalc ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xclipboard ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xclock ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xcmsdb ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xconsole ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xcursorgen ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_xdbedizzy ?= "1.0.2"
+PREFERRED_VERSION_xditview ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xdm ?= "1.1.3"
+PREFERRED_VERSION_xdpyinfo ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xdriinfo ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_xedit ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xev ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xeyes ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xxf86dga ?= "1.0.2"
+PREFERRED_VERSION_xfd ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xfindproxy ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xfontsel ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xfs ?= "1.0.4"
+PREFERRED_VERSION_xfsinfo ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xfwp ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xgamma ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xgc ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xhost ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_xinit ?= "1.0.3"
+PREFERRED_VERSION_xkbcomp ?= "1.0.3"
+PREFERRED_VERSION_xkbevd ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xkbprint ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xkbutils ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xkill ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xload ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xlogo ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xlsatoms ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xlsclients ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xlsfonts ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xmag ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xman ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xmessage ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xmh ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xmodmap ?= "1.0.2"
+PREFERRED_VERSION_xmore ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xphelloworld ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xplsprinters ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xpr ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xprehashprinterlist ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xprop ?= "1.0.2"
+PREFERRED_VERSION_xrandr ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xrdb ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xrefresh ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xrx ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xset ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xsetmode ?= "X11R7.0-1.0.0"
+PREFERRED_VERSION_xsetpointer ?= "X11R7.0-1.0.0"
+PREFERRED_VERSION_xsetroot ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xsm ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xstdcmap ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xtrap ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xvidtune ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xvinfo ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xwd ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xwininfo ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xwud ?= "X11R7.0-1.0.1"
+
+#data
+PREFERRED_VERSION_xbitmaps ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xcursor-themes ?= "X11R7.0-1.0.1"
+
+# doc
+PREFERRED_VERSION_xorg-docs ?= "X11R7.1-1.2"
+PREFERRED_VERSION_xorg-sgml-doctools ?= "1.1.1"
+
+# driver
+PREFERRED_VERSION_xf86-input-acecad ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-aiptek ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_xf86-input-calcomp ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-citron ?= "X11R7.1-2.2.0"
+PREFERRED_VERSION_xf86-input-digitaledge ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-dmc ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-dynapro ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-elo2300 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-elographics ?= "X11R7.0-1.0.0.5"
+PREFERRED_VERSION_xf86-input-evdev ?= "X11R7.1-1.1.2"
+PREFERRED_VERSION_xf86-input-fpit ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-hyperpen ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-jamstudio ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-joystick ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-keyboard ?= "1.1.1"
+PREFERRED_VERSION_xf86-input-magellan ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-magictouch ?= "X11R7.1-1.0.0.5"
+PREFERRED_VERSION_xf86-input-microtouch ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-mouse ?= "1.1.2"
+PREFERRED_VERSION_xf86-input-mutouch ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-palmax ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-penmount ?= "1.2.0"
+PREFERRED_VERSION_xf86-input-spaceorb ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-summa ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-tek4957 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-ur98 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-vmmouse ?= "X11R7.1-12.4.0"
+PREFERRED_VERSION_xf86-input-void ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-apm ?= "X11R7.1-1.1.1"
+PREFERRED_VERSION_xf86-video-ark ?= "X11R7.1-0.6.0"
+PREFERRED_VERSION_xf86-video-ast ?= "X11R7.1-0.81.0"
+PREFERRED_VERSION_xf86-video-ati ?= "6.6.3"
+PREFERRED_VERSION_xf86-video-chips ?= "X11R7.1-1.1.1"
+PREFERRED_VERSION_xf86-video-cirrus ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-cyrix ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-dummy ?= "X11R7.1-0.2.0"
+PREFERRED_VERSION_xf86-video-fbdev ?= "0.3.1"
+PREFERRED_VERSION_xf86-video-glint ?= "X11R7.1-1.1.1"
+PREFERRED_VERSION_xf86-video-i128 ?= "1.1.0.6"
+PREFERRED_VERSION_xf86-video-i740 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-i810 ?= "1.6.5"
+PREFERRED_VERSION_xf86-video-imstt ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-mga ?= "1.4.6.1"
+PREFERRED_VERSION_xf86-video-neomagic ?= "X11R7.1-1.1.1"
+PREFERRED_VERSION_xf86-video-newport ?= "0.2.1"
+PREFERRED_VERSION_xf86-video-nsc ?= "2.8.2"
+PREFERRED_VERSION_xf86-video-nv ?= "1.2.2.1"
+PREFERRED_VERSION_xf86-video-rendition ?= "4.1.3"
+PREFERRED_VERSION_xf86-video-s3 ?= "0.5.0"
+PREFERRED_VERSION_xf86-video-s3virge ?= "X11R7.1-1.9.1"
+PREFERRED_VERSION_xf86-video-savage ?= "2.1.2"
+PREFERRED_VERSION_xf86-video-siliconmotion ?= "1.4.2"
+PREFERRED_VERSION_xf86-video-sis ?= "0.9.3"
+PREFERRED_VERSION_xf86-video-sisusb ?= "X11R7.1-0.8.1"
+PREFERRED_VERSION_xf86-video-sunbw2 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-suncg14 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-suncg3 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-suncg6 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-sunffb ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-sunleo ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-suntcx ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-tdfx ?= "1.3.0"
+PREFERRED_VERSION_xf86-video-tga ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-trident ?= "1.2.3"
+PREFERRED_VERSION_xf86-video-tseng ?= "1.1.1"
+PREFERRED_VERSION_xf86-video-v4l ?= "X11R7.1-0.1.1"
+PREFERRED_VERSION_xf86-video-vesa ?= "1.3.0"
+PREFERRED_VERSION_xf86-video-vga ?= "X11R7.1-4.1.0"
+PREFERRED_VERSION_xf86-video-via ?= "0.2.2"
+PREFERRED_VERSION_xf86-video-vmware ?= "10.14.1"
+PREFERRED_VERSION_xf86-video-voodoo ?= "1.1.1"
+
+# font
+PREFERRED_VERSION_encodings ?= "1.0.2"
+PREFERRED_VERSION_font-screen-cyrillic ?= "1.0.1"
+PREFERRED_VERSION_font-util-native ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_font-util ?= "X11R7.1-1.0.1"
+
+# lib
+PREFERRED_VERSION_diet-x11 ?= "1.1.1"
+PREFERRED_VERSION_libdmx ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_libfontenc ?= "1.0.4"
+PREFERRED_VERSION_libice ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_liblbxutil ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_libsm ?= "1.0.2"
+PREFERRED_VERSION_libx11 ?= "1.1.1"
+PREFERRED_VERSION_libx11-native ?= "1.1.1"
+PREFERRED_VERSION_libxau ?= "1.0.3"
+PREFERRED_VERSION_libxaw ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_libxcomposite ?= "0.3.1"
+PREFERRED_VERSION_libxcursor ?= "1.1.8"
+PREFERRED_VERSION_libxdamage ?= "1.0.4"
+PREFERRED_VERSION_libxdmcp-native ?= "1.0.2"
+PREFERRED_VERSION_libxdmcp ?= "1.0.2"
+PREFERRED_VERSION_libxevie ?= "1.0.2"
+PREFERRED_VERSION_libxext ?= "1.0.2"
+PREFERRED_VERSION_libxfixes ?= "4.0.3"
+PREFERRED_VERSION_libxfont ?= "1.2.7"
+PREFERRED_VERSION_libxfontcache ?= "1.0.4"
+PREFERRED_VERSION_libxi ?= "1.0.2"
+PREFERRED_VERSION_libxinerama ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_libxkbfile ?= "1.0.4"
+PREFERRED_VERSION_libxkbui ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_libxmu ?= "1.0.3"
+PREFERRED_VERSION_libxpm ?= "3.5.6"
+PREFERRED_VERSION_libxrandr ?= "1.1.2"
+PREFERRED_VERSION_libxrender ?= "0.9.2"
+PREFERRED_VERSION_libxres ?= "1.0.3"
+PREFERRED_VERSION_libxscrnsaver ?= "1.1.2"
+PREFERRED_VERSION_libxt ?= "1.0.4"
+PREFERRED_VERSION_libxvmc ?= "1.0.4"
+PREFERRED_VERSION_libxxf86dga ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_libxxf86misc ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_libxxf86vm ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_xtrans ?= "1.0.3"
+
+# proto
+PREFERRED_VERSION_compositeproto ?= "X11R7.1-0.3.1"
+PREFERRED_VERSION_fixesproto ?= "X11R7.1-4.0"
+PREFERRED_VERSION_glproto ?= "1.4.8"
+PREFERRED_VERSION_kbproto ?= "X11R7.1-1.0.3"
+PREFERRED_VERSION_scrnsaverproto ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xproto-native ?= "7.0.10"
+PREFERRED_VERSION_xproto ?= "7.0.10"
+
+# util
+PREFERRED_VERSION_gccmakedep ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_imake ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_util-macros-native ?= "X11R7.1-1.1.5"
+PREFERRED_VERSION_util-macros ?= "X11R7.1-1.1.5"
+PREFERRED_VERSION_xorg-cf-files ?= "X11R7.1-1.0.2"
+
+# xserver
+PREFERRED_VERSION_xserver-kdrive ?= "1.2.0"
+PREFERRED_VERSION_xserver-xorg ?= "1.2.0"
+
diff --git a/conf/distro/include/sane-srcdates.inc b/conf/distro/include/sane-srcdates.inc
index f73fa22e34..9fd71d05d8 100644
--- a/conf/distro/include/sane-srcdates.inc
+++ b/conf/distro/include/sane-srcdates.inc
@@ -22,31 +22,32 @@ SRCDATE_xxf86vmext ?= "20060814"
SRCDATE_contacts ?= "20060707"
SRCDATE_dates ?= "20060707"
SRCDATE_fstests ?= "20061122"
-SRCDATE_eds-dbus ?= "20061215"
+SRCDATE_eds-dbus ?= "20070215"
SRCDATE_libmatchbox ?= "20060612"
SRCDATE_libfakekey ?= "20051101"
SRCDATE_matchbox-common ?= "20060612"
SRCDATE_matchbox-config-gtk ?= "20060612"
SRCDATE_matchbox-desktop ?= "20060612"
-SRCDATE_matchbox-keyboard ?= "20060612"
+SRCDATE_matchbox-keyboard ?= "20060725"
SRCDATE_matchbox-panel ?= "20060612"
SRCDATE_matchbox-panel-manager ?= "20060612"
SRCDATE_matchbox-stroke ?= "20060612"
SRCDATE_matchbox-themes-extra ?= "20060612"
SRCDATE_matchbox-wm ?= "20060612"
-SRCDATE_psplash ?= "20061207"
+SRCDATE_libmatchbox ?= "20060612"
+SRCDATE_libfakekey ?= "20051101"
+SRCDATE_psplash ?= "20070330"
SRCDATE_web ?= "20060613"
SRCDATE_zaurusd ?= "20060628"
# GPE
SRCDATE_dasher-gpe ?= "20060814"
SRCDATE_rosetta ?= "20060804"
-SRCDATE_libmimedir ?= "20060804"
SRCDATE_gpesyncd ?= "20061128"
# GNOME
-SRCDATE_gconf-dbus ?= "20060719"
-SRCDATE_gnome-vfs-dbus ?= "20060119"
+SRCDATE_gconf-dbus ?= "20070412"
+SRCDATE_gnome-vfs ?= "20060119"
SRCDATE_gtkhtml2 ?= "20060323"
#Misc apps, sorted by alphabet
diff --git a/conf/distro/include/slugos-packages.inc b/conf/distro/include/slugos-packages.inc
deleted file mode 100644
index 650368a990..0000000000
--- a/conf/distro/include/slugos-packages.inc
+++ /dev/null
@@ -1,259 +0,0 @@
-BBFILES := "\
-${PKGDIR}/packages/alsa/*.bb \
-${PKGDIR}/packages/apr/*.bb \
-${PKGDIR}/packages/asterisk/*.bb \
-${PKGDIR}/packages/asterisk-sounds/*.bb \
-${PKGDIR}/packages/atftp/*.bb \
-${PKGDIR}/packages/audiofile/*.bb \
-${PKGDIR}/packages/aumix/*.bb \
-${PKGDIR}/packages/autoconf/*.bb \
-${PKGDIR}/packages/automake/*.bb \
-${PKGDIR}/packages/base-files/*.bb \
-${PKGDIR}/packages/base-passwd/*.bb \
-${PKGDIR}/packages/bash/*.bb \
-${PKGDIR}/packages/beep/*.bb \
-${PKGDIR}/packages/bind/*.bb \
-${PKGDIR}/packages/binutils/*.bb \
-${PKGDIR}/packages/bison/*.bb \
-${PKGDIR}/packages/bluez/*.bb \
-${PKGDIR}/packages/bogofilter/*.bb \
-${PKGDIR}/packages/boost/*.bb \
-${PKGDIR}/packages/bridge-utils/*.bb \
-${PKGDIR}/packages/btsco/*.bb \
-${PKGDIR}/packages/busybox/*.bb \
-${PKGDIR}/packages/bwmon/*.bb \
-${PKGDIR}/packages/bzip2/*.bb \
-${PKGDIR}/packages/ccxstream/*.bb \
-${PKGDIR}/packages/cdparanoia/*.bb \
-${PKGDIR}/packages/cdstatus/*.bb \
-${PKGDIR}/packages/cherokee/*.bb \
-${PKGDIR}/packages/coreutils/*.bb \
-${PKGDIR}/packages/cpio/*.bb \
-${PKGDIR}/packages/cron/*.bb \
-${PKGDIR}/packages/ctorrent/*.bb \
-${PKGDIR}/packages/ctrlproxy/*.bb \
-${PKGDIR}/packages/curl/*.bb \
-${PKGDIR}/packages/cvs/*.bb \
-${PKGDIR}/packages/cyrus-imapd/*.bb \
-${PKGDIR}/packages/cyrus-sasl/*.bb \
-${PKGDIR}/packages/davfs2/*.bb \
-${PKGDIR}/packages/db/*.bb \
-${PKGDIR}/packages/dbus/*.bb \
-${PKGDIR}/packages/devio/*.bb \
-${PKGDIR}/packages/device-mapper/*.bb \
-${PKGDIR}/packages/devlabel/*.bb \
-${PKGDIR}/packages/dhcp/*.bb \
-${PKGDIR}/packages/didiwiki/*.bb \
-${PKGDIR}/packages/diffstat/*.bb \
-${PKGDIR}/packages/diffutils/*.bb \
-${PKGDIR}/packages/dnsmasq/*.bb \
-${PKGDIR}/packages/docbook-utils/*.bb \
-${PKGDIR}/packages/dropbear/*.bb \
-${PKGDIR}/packages/dsniff/*.bb \
-${PKGDIR}/packages/e2fsprogs/*.bb \
-${PKGDIR}/packages/e2fsprogs-libs/*.bb \
-${PKGDIR}/packages/eciadsl/*.bb \
-${PKGDIR}/packages/expat/*.bb \
-${PKGDIR}/packages/ez-ipupdate/*.bb \
-${PKGDIR}/packages/fakeroot/*.bb \
-${PKGDIR}/packages/fetchmail/*.bb \
-${PKGDIR}/packages/file/*.bb \
-${PKGDIR}/packages/findutils/*.bb \
-${PKGDIR}/packages/flac/*.bb \
-${PKGDIR}/packages/flex/*.bb \
-${PKGDIR}/packages/freeze/*.bb \
-${PKGDIR}/packages/ftpd-topfield/*.bb \
-${PKGDIR}/packages/gawk/*.bb \
-${PKGDIR}/packages/gcc/*.bb \
-${PKGDIR}/packages/gd/*.bb \
-${PKGDIR}/packages/gdb/*.bb \
-${PKGDIR}/packages/gdbm/*.bb \
-${PKGDIR}/packages/gettext/*.bb \
-${PKGDIR}/packages/glib-1.2/*.bb \
-${PKGDIR}/packages/glib-2.0/*.bb \
-${PKGDIR}/packages/glibc/*.bb \
-${PKGDIR}/packages/gnu-config/*.bb \
-${PKGDIR}/packages/gnutls/*.bb \
-${PKGDIR}/packages/gphoto2/*.bb \
-${PKGDIR}/packages/gpsd/*.bb \
-${PKGDIR}/packages/grep/*.bb \
-${PKGDIR}/packages/groff/*.bb \
-${PKGDIR}/packages/gtk-doc/*.bb \
-${PKGDIR}/packages/gzip/*.bb \
-${PKGDIR}/packages/hal/*.bb \
-${PKGDIR}/packages/hotplug-ng/*.bb \
-${PKGDIR}/packages/icecast/*.bb \
-${PKGDIR}/packages/ifupdown/*.bb \
-${PKGDIR}/packages/initscripts/*.bb \
-${PKGDIR}/packages/install/*.bb \
-${PKGDIR}/packages/intltool/*.bb \
-${PKGDIR}/packages/iperf/*.bb \
-${PKGDIR}/packages/ipkg-utils/*.bb \
-${PKGDIR}/packages/ipkg/*.bb \
-${PKGDIR}/packages/iptables/*.bb \
-${PKGDIR}/packages/ircp/*.bb \
-${PKGDIR}/packages/irssi/*.bb \
-${PKGDIR}/packages/ixp425-eth/*.bb \
-${PKGDIR}/packages/ixp4xx/*.bb \
-${PKGDIR}/packages/joe/*.bb \
-${PKGDIR}/packages/jpeg/*.bb \
-${PKGDIR}/packages/lcdproc/*.bb \
-${PKGDIR}/packages/less/*.bb \
-${PKGDIR}/packages/libaal/*.bb \
-${PKGDIR}/packages/libao/*.bb \
-${PKGDIR}/packages/libdvb/*.bb \
-${PKGDIR}/packages/libexif/*.bb \
-${PKGDIR}/packages/libgcrypt/*.bb \
-${PKGDIR}/packages/libgpg-error/*.bb \
-${PKGDIR}/packages/libgphoto2/*.bb \
-${PKGDIR}/packages/libgsm/*.bb \
-${PKGDIR}/packages/libiconv/*.bb \
-${PKGDIR}/packages/libid3tag/*.bb \
-${PKGDIR}/packages/liblockfile/*.bb \
-${PKGDIR}/packages/libmad/*.bb \
-${PKGDIR}/packages/libmikmod/*.bb \
-${PKGDIR}/packages/libnet/*.bb \
-${PKGDIR}/packages/libnids/*.bb \
-${PKGDIR}/packages/libogg/*.bb \
-${PKGDIR}/packages/libol/*.bb \
-${PKGDIR}/packages/libpcap/*.bb \
-${PKGDIR}/packages/libpng/*.bb \
-${PKGDIR}/packages/libtiff/*.bb \
-${PKGDIR}/packages/libtool/*.bb \
-${PKGDIR}/packages/libusb/*.bb \
-${PKGDIR}/packages/libvorbis/*.bb \
-${PKGDIR}/packages/libxml/*.bb \
-${PKGDIR}/packages/libxslt/* \
-${PKGDIR}/packages/linux-libc-headers/*.bb \
-${PKGDIR}/packages/linux/*.bb \
-${PKGDIR}/packages/lirc/*.bb \
-${PKGDIR}/packages/lrzsz/*.bb \
-${PKGDIR}/packages/lsof/*.bb \
-${PKGDIR}/packages/lvm2/*.bb \
-${PKGDIR}/packages/lzo/*.bb \
-${PKGDIR}/packages/m4/*.bb \
-${PKGDIR}/packages/madplay/*.bb \
-${PKGDIR}/packages/madwifi/*.bb \
-${PKGDIR}/packages/mailx/*.bb \
-${PKGDIR}/packages/make/*.bb \
-${PKGDIR}/packages/makedevs/*.bb \
-${PKGDIR}/packages/man-pages/*.bb \
-${PKGDIR}/packages/man/*.bb \
-${PKGDIR}/packages/masqmail/*.bb \
-${PKGDIR}/packages/mdadm/*.bb \
-${PKGDIR}/packages/memtester/*.bb \
-${PKGDIR}/packages/meta/*.bb \
-${PKGDIR}/packages/mgetty/*.bb \
-${PKGDIR}/packages/miau/*.bb \
-${PKGDIR}/packages/microcom/*.bb \
-${PKGDIR}/packages/minicom/*.bb \
-${PKGDIR}/packages/module-init-tools/*.bb \
-${PKGDIR}/packages/modutils/*.bb \
-${PKGDIR}/packages/monotone/*.bb \
-${PKGDIR}/packages/motion/*.bb \
-${PKGDIR}/packages/mt-daapd/*.bb \
-${PKGDIR}/packages/mtd/*.bb \
-${PKGDIR}/packages/musicpd/*.bb \
-${PKGDIR}/packages/mutt/*.bb \
-${PKGDIR}/packages/mysql/*.bb \
-${PKGDIR}/packages/nail/*.bb \
-${PKGDIR}/packages/nano/*.bb \
-${PKGDIR}/packages/ncftp/*.bb \
-${PKGDIR}/packages/ncurses/*.bb \
-${PKGDIR}/packages/neon/*.bb \
-${PKGDIR}/packages/netbase/*.bb \
-${PKGDIR}/packages/netcat/*.bb \
-${PKGDIR}/packages/netpbm/*.bb \
-${PKGDIR}/packages/nfs-utils/*.bb \
-${PKGDIR}/packages/nis/*.bb \
-${PKGDIR}/packages/nmap/*.bb \
-${PKGDIR}/packages/nslu2-binary-only/*.bb \
-${PKGDIR}/packages/ntp/*.bb \
-${PKGDIR}/packages/obexftp/*.bb \
-${PKGDIR}/packages/openjade/*.bb \
-${PKGDIR}/packages/openldap/*.bb \
-${PKGDIR}/packages/openntpd/*.bb \
-${PKGDIR}/packages/openobex/*.bb \
-${PKGDIR}/packages/opensp/*.bb \
-${PKGDIR}/packages/openssh/*.bb \
-${PKGDIR}/packages/openssl/*.bb \
-${PKGDIR}/packages/openvpn/*.bb \
-${PKGDIR}/packages/pam/*.bb \
-${PKGDIR}/packages/patch/*.bb \
-${PKGDIR}/packages/patcher/*.bb \
-${PKGDIR}/packages/patchutils/*.bb \
-${PKGDIR}/packages/pciutils/*.bb \
-${PKGDIR}/packages/pcmcia-cs/*.bb \
-${PKGDIR}/packages/pcre/*.bb \
-${PKGDIR}/packages/perl/*.bb \
-${PKGDIR}/packages/php/*.bb \
-${PKGDIR}/packages/pkgconfig/*.bb \
-${PKGDIR}/packages/popt/*.bb \
-${PKGDIR}/packages/portmap/*.bb \
-${PKGDIR}/packages/postfix/*.bb \
-${PKGDIR}/packages/ppp/*.bb \
-${PKGDIR}/packages/procps/*.bb \
-${PKGDIR}/packages/psmisc/*.bb \
-${PKGDIR}/packages/puppy/*.bb \
-${PKGDIR}/packages/pvrusb2-mci/*.bb \
-${PKGDIR}/packages/pwc/*.bb \
-${PKGDIR}/packages/python/*.bb \
-${PKGDIR}/packages/qc-usb/*.bb \
-${PKGDIR}/packages/quilt/*.bb \
-${PKGDIR}/packages/radlib/*.bb \
-${PKGDIR}/packages/readline/*.bb \
-${PKGDIR}/packages/reiser4progs/*.bb \
-${PKGDIR}/packages/reiserfsprogs/*.bb \
-${PKGDIR}/packages/rsync/*.bb \
-${PKGDIR}/packages/samba/*.bb \
-${PKGDIR}/packages/sane-backends/*.bb \
-${PKGDIR}/packages/screen/*.bb \
-${PKGDIR}/packages/sed/*.bb \
-${PKGDIR}/packages/setpwc/*.bb \
-${PKGDIR}/packages/setserial/*.bb \
-${PKGDIR}/packages/sgml-common/*.bb \
-${PKGDIR}/packages/slugimage/*.bb \
-${PKGDIR}/packages/slugos-init/*.bb \
-${PKGDIR}/packages/spca5xx/*.bb \
-${PKGDIR}/packages/ssmtp/*.bb \
-${PKGDIR}/packages/strace/*.bb \
-${PKGDIR}/packages/streamripper/*.bb \
-${PKGDIR}/packages/subversion/*.bb \
-${PKGDIR}/packages/sudo/*.bb \
-${PKGDIR}/packages/sysfsutils/*.bb \
-${PKGDIR}/packages/syslog-ng/*.bb \
-${PKGDIR}/packages/sysvinit/*.bb \
-${PKGDIR}/packages/tar/*.bb \
-${PKGDIR}/packages/tcltk/*.bb \
-${PKGDIR}/packages/thttpd/*.bb \
-${PKGDIR}/packages/time/*.bb \
-${PKGDIR}/packages/timezones/*.bb \
-${PKGDIR}/packages/tinylogin/*.bb \
-${PKGDIR}/packages/uclibc/*.bb \
-${PKGDIR}/packages/udev/*.bb \
-${PKGDIR}/packages/unionfs/*.bb \
-${PKGDIR}/packages/unzip/*.bb \
-${PKGDIR}/packages/update-modules/*.bb \
-${PKGDIR}/packages/update-rc.d/*.bb \
-${PKGDIR}/packages/upslug/*.bb \
-${PKGDIR}/packages/usbutils/*.bb \
-${PKGDIR}/packages/util-linux/*.bb \
-${PKGDIR}/packages/vim/*.bb \
-${PKGDIR}/packages/vlan/*.bb \
-${PKGDIR}/packages/vpnc/*.bb \
-${PKGDIR}/packages/vsftpd/*.bb \
-${PKGDIR}/packages/w3cam/*.bb \
-${PKGDIR}/packages/wakelan/*.bb \
-${PKGDIR}/packages/wget/*.bb \
-${PKGDIR}/packages/whois/*.bb \
-${PKGDIR}/packages/wireless-tools/*.bb \
-${PKGDIR}/packages/wpa-supplicant/*.bb \
-${PKGDIR}/packages/wview/*.bb \
-${PKGDIR}/packages/xlibs/*.bb \
-${PKGDIR}/packages/xextensions/*.bb \
-${PKGDIR}/packages/xinetd/*.bb \
-${PKGDIR}/packages/xproto/*.bb \
-${PKGDIR}/packages/zd1211/*.bb \
-${PKGDIR}/packages/zip/*.bb \
-${PKGDIR}/packages/zlib/*.bb \
-${SLUGOS_EXTRA_BBFILES}"
diff --git a/conf/distro/include/slugos.inc b/conf/distro/include/slugos.inc
index b255e85488..4c7dd422c3 100644
--- a/conf/distro/include/slugos.inc
+++ b/conf/distro/include/slugos.inc
@@ -3,29 +3,7 @@
#@DESCRIPTION: SlugOS Linux Distribution for the NSLU2
# WARNING: this file should not be used directly, use one of
-# the supported slugos-???.conf instead:
-
-# Explanation of the naming
-#
-# slugos-dist - the base distro configuration for an NSLU2
-# slugos-[bl][at][gu] - a specific configuration encoded as follows:
-#
-# b or l - big or little endian
-# set ARCH_BYTE_SEX to match
-#
-# a or t - ARM or Thumb instructions in the low level libraries
-# set ARM_INSTRUCTION_SET to match
-#
-# g or u - glibc or uclibc libc implementation
-# set TARGET_OS to match
-#
-# The following names are deprecated:
-#
-# openslug - the historical name of a canonical slugos-bag distro
-# also the name of a standard slugos-bag distro with a package feed
-# ucslugc - the historical (and obsolete) name of slugos-btu
-# also the name of a standard slugos-btu distro with a package feed
-#
+# the supported slugos-derived distributions instead.
#----------------------------------------------------------------------------------
# STANDARD SLUGOS DEFINITIONS
@@ -34,28 +12,25 @@
#
#DISTRO_NAME
#DISTRO_TYPE
+#ARM_INSTRUCTION_SET "arm" or "thumb"
+#TARGET_OS "linux" or "linux-uclibc"
# The following may be overridden to make sub-versions
-SLUGOS_VERSION = "4.1"
+SLUGOS_VERSION = "4.4"
DISTRO_REVISION ?= ""
DISTRO_VERSION ?= "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
# For release (only):
# DISTRO_FEED ?= "${SLUGOS_VERSION}-${DISTRO_TYPE}"
DISTRO_FEED ?= "unstable"
-# The following must also be set, they define the basic format of the build
-#
-#ARCH_BYTE_SEX "be" or "le"
-#ARM_INSTRUCTION_SET "arm" or "thumb"
-#TARGET_OS "linux" or "linux-uclibc"
-#SLUGOS_IMAGESEX "big-endian" or "little-endian" (JFFS2 format)
+IMAGE_BASENAME = "${@['slugos${SITEINFO_ENDIANESS}', 'ucslugc'][bb.data.getVar('TARGET_OS', d, 1) == 'linux-uclibc']}"
# The following need not be set, the defaults should be adequate
#USE_NLS = "no" or "yes"
USE_NLS ?= "no"
# To make errors easier to identify:
-DISTRO_NAME ?= "INVALID-${ARCH_BYTE_SEX}-${ARM_INSTRUCTION_SET}-${TARGET_OS}"
+DISTRO_NAME ?= "INVALID-${SITEINFO_ENDIANESS}-${ARM_INSTRUCTION_SET}-${TARGET_OS}"
DISTRO_TYPE ?= "INVALID"
# The following must not be changed.
@@ -64,21 +39,11 @@ TARGET_FPU = "soft"
# glib-2.0 builds require USE_NLS to be overridden
USE_NLS_glib-2.0 = "yes"
-INHERIT += "package_ipk debian"
-
-DISTRO_BASE = ":slugos"
+INHERIT += "package_ipk debian multimachine"
-# packages/meta/slugos-image.bb generates a binary image of the root file system
-# with a name controlled by the following setting - it defaults to the top level
-# ${DISTRO_NAME} and this should always be correct, but it may be too specific (e.g.
-# if you change the DISTRO from one of the standard ones in a way which does not
-# change the generated image).
-SLUGOS_IMAGENAME ?= "${DISTRO_NAME}"
-
-# pull in the frozen list of bbfiles - this sets BBFILES and this will override any
-# setting in local.conf Since this depends on ${DISTRO} it doesn't actually do
-# anything by default unless conf/distro/${DISTRO}-packages.conf exists.
-# require conf/distro/include/freeze.conf
+# FULL_OPTIMIZATION
+# Optimization settings. Os works fine and is significantly better than O2.
+FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os"
#----------------------------------------------------------------------------------
# FEEDS
@@ -86,21 +51,9 @@ SLUGOS_IMAGENAME ?= "${DISTRO_NAME}"
# when downloading new packages or updating existing packages. Additional feeds
# (such as a local feed) can be defined in local.conf
#----------------------------------------------------------------------------------
-# Add to the user's feeds from local.conf (there may be none).
-# In general slugos-[bl][at][gu] is sufficient to identify a set of packages which
-# will work on any derived distro. The slugos-???.conf files set the FEED_URIS to
-# an appropriate ipkg.nslu2-linux.org default if nslu2-linux is actually building
-# such a feed:
-#
-#FEED_URIS_append += "cross##http://ipkg.nslu2-linux.org/feeds/${SLUGOS-foo}/cross/${DISTRO_FEED}"
-#FEED_URIS_append += "native##http://ipkg.nslu2-linux.org/feeds/${SLUGOS-foo}/native/${DISTRO_FEED}"
#
-# When such a feed exists the corresponding 'unstable' feed will normally also
-# exist - the packages in unstable are the latest but very unlikely to be the
-# greatest. Use at your own risk!
-#
-#FEED_URIS_append += "unstable_cross##http://ipkg.nslu2-linux.org/feeds/${SLUGOS-foo}/cross/unstable"
-#FEED_URIS_append += "unstable_native##http://ipkg.nslu2-linux.org/feeds/${SLUGOS-foo}/native/unstable"
+FEED_URIS_append += "cross##http://ipkg.nslu2-linux.org/feeds/${IMAGE_BASENAME}/cross/${DISTRO_FEED}"
+FEED_URIS_append += "native##http://ipkg.nslu2-linux.org/feeds/${IMAGE_BASENAME}/native/${DISTRO_FEED}"
#----------------------------------------------------------------------------------
# FIRMWARE CONFIGURATION
@@ -113,20 +66,6 @@ SLUGOS_IMAGENAME ?= "${DISTRO_NAME}"
# issues in the kernel need to cancel this (set CMDLINE_DEBUG empty in local.conf)
CMDLINE_DEBUG = "noirqdebug"
-# Building a full image. If you set SLUGOS_FLASH_IMAGE to "nslu2" a complete
-# 8MByte flash image will be built after the rootfs JFFS2 image. Other options
-# may later be defined for other vendor-flashable image types.
-#
-# If you do this you will need to find a source for the LinkSys software to be
-# placed in the full image - 'RedBoot' (the boot loader), 'Trailer' (just a bunch
-# of bytes to flag the image as valid) and 'SysConf' (actually just a block of
-# unset data - you could modify this to pre-configure the SysConf partition of the
-# image). If you own an NSLU2 then this data is already in the flash of the NSLU2
-# and you can download it (including new versions) from the LinkSys web site - see
-# packages/meta/slugos-image.bb for information about where to put the downloaded
-# data.
-SLUGOS_FLASH_IMAGE ?= "no"
-
# EXTRA PACKAGES
# --------------
# SlugOS builds an image with no extra packages - to add packages to the
@@ -139,7 +78,9 @@ SLUGOS_FLASH_IMAGE ?= "no"
#
# Everything in this list gets added to the flash image, along with any RDEPENDS
# it has itself!
-SLUGOS_EXTRA_RDEPENDS ?= ""
+DISTRO_EXTRA_DEPENDS ?= ""
+DISTRO_EXTRA_RDEPENDS ?= ""
+DISTRO_EXTRA_RRECOMMENDS ?= ""
#----------------------------------------------------------------------------------
# PACKAGE VERSION CONTROL
@@ -156,8 +97,7 @@ PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}libc-for-gcc:glibc"
PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod:module-init-tools-cross"
PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}libc-for-gcc:glibc"
-# compiler/binary/library versions (unslung uses different ones so these
-# cannot be in ${MACHINE}.conf)
+# compiler/binary/library versions
PREFERRED_VERSION_binutils ?= "2.16"
PREFERRED_VERSION_binutils-cross ?= "2.16"
PREFERRED_VERSION_gcc-cross-initial ?= "4.1.1"
@@ -171,15 +111,12 @@ PREFERRED_VERSION_glibc ?= "2.3.5+cvs20050627"
# 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_VERSION_ixp4xx-kernel ?= "2.6.19"
+PREFERRED_VERSION_ixp4xx-kernel ?= "2.6.21"
# Select the smallest provider of x11 libraries
PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11"
SRCDATE_diet-x11 ?= "20060106"
-# Latest wpa-supplicant which supports madwifi-ng
-PREFERRED_VERSION_wpa-supplicant ?= "0.5.1"
-
# Ensure consistency across all SlugOS builds for the provider of a
# relational database - use the latest version of the SleepyCat
# Berkeley database
@@ -194,8 +131,17 @@ SRCDATE_irssi ?= "20050930"
CVS_TARBALL_STASH = "http://sources.nslu2-linux.org/sources/"
INHERIT += "nslu2-mirrors"
-PREFERRED_VERSION_ipkg ?= "0.99.154"
-PREFERRED_VERSION_ipkg-native ?= "0.99.154"
+PREFERRED_VERSION_nslu2-linksys-firmware ?= "2.3r63"
+
+PREFERRED_VERSION_ipkg ?= "0.99.163"
+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" \ No newline at end of file
diff --git a/conf/distro/include/ucslugc-packages.inc b/conf/distro/include/ucslugc-packages.inc
deleted file mode 100644
index 3b3e9fca75..0000000000
--- a/conf/distro/include/ucslugc-packages.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-SLUGOS_EXTRA_BBFILES = "${UCSLUGC_EXTRA_BBFILES}"
-require conf/distro/include/slugos-packages.conf
diff --git a/conf/distro/include/unslung-packages.inc b/conf/distro/include/unslung-packages.inc
deleted file mode 100644
index e889a65df5..0000000000
--- a/conf/distro/include/unslung-packages.inc
+++ /dev/null
@@ -1,41 +0,0 @@
-BBFILES := "\
-${PKGDIR}/packages/autoconf/*.bb \
-${PKGDIR}/packages/automake/*.bb \
-${PKGDIR}/packages/binutils/*.bb \
-${PKGDIR}/packages/bison/*.bb \
-${PKGDIR}/packages/busybox/*.bb \
-${PKGDIR}/packages/cpio/*.bb \
-${PKGDIR}/packages/devio/*.bb \
-${PKGDIR}/packages/fakeroot/*.bb \
-${PKGDIR}/packages/file/*.bb \
-${PKGDIR}/packages/findutils/*.bb \
-${PKGDIR}/packages/flex/*.bb \
-${PKGDIR}/packages/freeze/*.bb \
-${PKGDIR}/packages/gcc/*.bb \
-${PKGDIR}/packages/genext2fs/*.bb \
-${PKGDIR}/packages/gettext/*.bb \
-${PKGDIR}/packages/glibc/*.bb \
-${PKGDIR}/packages/gnu-config/*.bb \
-${PKGDIR}/packages/ipkg-utils/*.bb \
-${PKGDIR}/packages/ipkg/*.bb \
-${PKGDIR}/packages/libtool/*.bb \
-${PKGDIR}/packages/linux-libc-headers/*.bb \
-${PKGDIR}/packages/linux/*.bb \
-${PKGDIR}/packages/m4/*.bb \
-${PKGDIR}/packages/makedevs/*.bb \
-${PKGDIR}/packages/meta/*.bb \
-${PKGDIR}/packages/modutils/*.bb \
-${PKGDIR}/packages/mtd/*.bb \
-${PKGDIR}/packages/nslu2-binary-only/*.bb \
-${PKGDIR}/packages/pkgconfig/*.bb \
-${PKGDIR}/packages/portmap/*.bb \
-${PKGDIR}/packages/python/*.bb \
-${PKGDIR}/packages/quilt/*.bb \
-${PKGDIR}/packages/slugimage/*.bb \
-${PKGDIR}/packages/unzip/*.bb \
-${PKGDIR}/packages/update-modules/*.bb \
-${PKGDIR}/packages/wget/*.bb \
-${PKGDIR}/packages/wireless-tools/*.bb \
-${PKGDIR}/packages/zlib/*.bb \
-${PKGDIR}/packages/zd1211/*.bb \
-${UNSLUNG_EXTRA_BBFILES}"
diff --git a/conf/distro/mamona.conf b/conf/distro/mamona.conf
new file mode 100644
index 0000000000..26bf8b94f1
--- /dev/null
+++ b/conf/distro/mamona.conf
@@ -0,0 +1,60 @@
+#@--------------------------------------------------------------------
+#@TYPE: Distribution
+#@NAME: Mamona
+#@--------------------------------------------------------------------
+
+DISTRO = "mamona"
+DISTRO_NAME = Mamona""
+DISTRO_VERSION = "test-${DATE}"
+DISTRO_TYPE = "debug"
+#DISTRO_TYPE = "release"
+
+TARGET_VENDOR = "-mamona"
+
+require conf/distro/include/angstrom-glibc.inc
+
+INHERIT += " package_deb debian"
+TARGET_OS = "linux-gnueabi"
+
+TARGET_FPU_nokia770 = "soft"
+TARGET_FPU_n800 = "hard"
+
+FEED_ARCH_nokia770 = "armv5te"
+
+# Actually n800 is armv6 but we are using armv5te because qemu does not emulate
+# armv6 yet.
+FEED_ARCH_n800 = "armv5te"
+#FEED_ARCH_n800 = "armv6"
+
+#Make sure we use 2.6 on machines with a 2.4/2.6 selector
+KERNEL = "kernel26"
+MACHINE_KERNEL_VERSION = "2.6"
+
+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"
+
+#NPTL stuff
+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/arm-mamona-linux-gnueabi-libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/arm-linux-libc-for-gcc = "glibc-intermediate"
+
+PREFERRED_VERSION_binutils = "2.17.50.0.5"
+PREFERRED_VERSION_binutils-cross = "2.17.50.0.5"
+
+PREFERRED_VERSION_gcc = "4.1.1"
+PREFERRED_VERSION_gcc-cross = "4.1.1"
+PREFERRED_VERSION_gcc-initial-cross = "4.1.1"
+
+PREFERRED_VERSION_linux-libc-headers ?= "2.6.15.99"
+
+PREFERRED_VERSION_glibc ?= "2.5"
+
+PREFERRED_VERSION_glibc-intermediate ?= "2.5"
+
+PREFERRED_VERSION_glibc-initial ?= "2.5"
+
+require conf/distro/include/sane-srcdates.inc
+
+
diff --git a/conf/distro/mokoslug.conf b/conf/distro/mokoslug.conf
new file mode 100644
index 0000000000..7278b62565
--- /dev/null
+++ b/conf/distro/mokoslug.conf
@@ -0,0 +1,27 @@
+#@--------------------------------------------------------------------
+#@TYPE: Distribution
+#@NAME: MokoSlug <http://www.nslu2-linux.org>
+#@DESCRIPTION: The Linux Server companion for OpenMoko phones
+#@MAINTAINER: Rod Whitby <rod@whitby.id.au>
+#@--------------------------------------------------------------------
+
+# MokoSlug is based on Angstrom, and would hopefully just be done by features one day ...
+require conf/distro/angstrom-2007.1.conf
+
+DISTRO = "mokoslug"
+DISTRO_NAME = "MokoSlug"
+DISTRO_VERSION = "1.0-alpha"
+DISTRO_REVISION = "1"
+DISTRO_TYPE = "debug"
+
+MACHINE_TASK_PROVIDER = "task-base sysconf"
+
+# Even though the NSLU2 does not have built-in bluetooth,
+# we assume that a MokoSlug gateway has a bluetooth dongle.
+MACHINE_FEATURES_append_nslu2 = " bluetooth"
+
+# No room for debug apps on an NSLU2.
+DEBUG_APPS_nslu2 = ""
+
+# No room for a kernel image on an NSLU2.
+IMAGE_PREPROCESS_COMMAND_append_nslu2 = "rm ${IMAGE_ROOTFS}/boot/zImage*;"
diff --git a/conf/distro/nylon.conf b/conf/distro/nylon.conf
index 0d21488bb0..334c8bba9b 100644
--- a/conf/distro/nylon.conf
+++ b/conf/distro/nylon.conf
@@ -29,7 +29,7 @@ SRCDATE := "20050527"
PREFERRED_VERSION_glibc = "2.3.3"
PREFERRED_VERSION_shorewall = "2.0.9-monolithic"
PREFERRED_VERSION_ppp-dsl = "0.1-monolithic"
-PREFERRED_VERSION_mtd-utils = "0.0.0+cvs20041113"
+PREFERRED_VERSION_mtd-utils = "0.0.0+cvs20060223"
PREFERRED_VERSION_kismet = "2005-01-R1"
PREFERRED_VERSION_gcc-cross-initial = "3.3.4"
@@ -39,13 +39,14 @@ PREFERRED_VERSION_gcc = "3.3.4"
PREFERRED_VERSION_binutils-cross = "2.14.90.0.7"
PREFERRED_VERSION_binutils-cross-sdk = "2.14.90.0.7"
PREFERRED_VERSION_binutils = "2.16"
+PREFERRED_VERSION_linux-libc-headers = "2.6.18"
PREFERRED_VERSION_prism54-firmware = "1.0.3.0"
KERNEL_VERSION_mtx-1 = "2.4.27"
KERNEL_VERSION_mtx-2 = "2.4.27"
-PREFERRED_VERSION_glibc_mtx-3 = "2.3.5+cvs20050627"
+#PREFERRED_VERSION_glibc_mtx-3 = "2.3.5+cvs20050627"
PREFERRED_VERSION_gcc-cross-initial_mtx-3 = "3.4.4"
PREFERRED_VERSION_gcc-cross_mtx-3 = "3.4.4"
PREFERRED_VERSION_gcc-cross-sdk_mtx-3 = "3.4.4"
@@ -57,10 +58,31 @@ PREFERRED_VERSION_gcc_mtx-3 = "3.4.4"
PREFERRED_VERSION_binutils-cross_mtx-3 = "2.15.94.0.1"
PREFERRED_VERSION_binutils-cross-sdk_mtx-3 = "2.15.94.0.1"
PREFERRED_VERSION_binutils_mtx-3 = "2.16"
+PREFERRED_VERSION_madwifi-modules = "0.9.3"
+PREFERRED_VERSION_madwifi-tools = "0.9.3"
PREFERRED_VERSION_udev = "089"
KERNEL_VERSION_mtx-3 = "2.6.15.4"
+PREFERRED_PROVIDER_virtual/kernel_mtx-3a = "linux-mtx-3a"
+
+
+#PREFERRED_VERSION_glibc_mtx-3a = "2.3.5+cvs20050627"
+PREFERRED_VERSION_gcc-cross-initial_mtx-3a = "3.4.4"
+PREFERRED_VERSION_gcc-cross_mtx-3a = "3.4.4"
+PREFERRED_VERSION_gcc-cross-sdk_mtx-3a = "3.4.4"
+PREFERRED_VERSION_gcc_mtx-3a = "3.4.4"
+### did not compile with:
+#PREFERRED_VERSION_binutils-cross_mtx-3a = "2.16.91.0.7"
+#PREFERRED_VERSION_binutils-cross-sdk_mtx-3a = "2.16.91.0.7"
+### falling back to:
+PREFERRED_VERSION_binutils-cross_mtx-3a = "2.15.94.0.1"
+PREFERRED_VERSION_binutils-cross-sdk_mtx-3a = "2.15.94.0.1"
+PREFERRED_VERSION_binutils_mtx-3a = "2.16"
+
+PREFERRED_VERSION_udev = "100"
+
+KERNEL_VERSION_mtx-3a = "2.6.16.6"
# usually overrrided from local.conf
diff --git a/conf/distro/openmoko.conf b/conf/distro/openmoko.conf
new file mode 100644
index 0000000000..6e33867aa9
--- /dev/null
+++ b/conf/distro/openmoko.conf
@@ -0,0 +1,28 @@
+#-----------------------------------------------------------------------------
+#@TYPE: Distribution
+#@NAME: OpenMoKo
+#@DESCRIPTION: Linux Distribution Configuration for the FIC GTA01 Project
+#-----------------------------------------------------------------------------
+
+#
+# Header
+#
+DISTRO_NAME = "OpenMoKo"
+DISTRO_VERSION = ".dev-snapshot-${DATE}"
+#DISTRO_TYPE = "release"
+DISTRO_TYPE = "debug"
+
+require conf/distro/include/openmoko.inc
+
+# Toolchain
+PREFERRED_VERSION_gcc ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-initial ?= "4.1.1"
+PREFERRED_VERSION_binutils ?= "2.17.50.0.5"
+PREFERRED_VERSION_binutils-cross ?= "2.17.50.0.5"
+PREFERRED_VERSION_linux-libc-headers ?= "2.6.18"
+# 2.5 has less bugs, but crashes dropbear :/
+PREFERRED_VERSION_glibc ?= "2.4"
+PREFERRED_VERSION_glibc-intermediate ?= "2.4"
+
+PREFERRED_VERSION_lmsensors-apps ?= "2.10.1"
diff --git a/conf/distro/openomap.conf b/conf/distro/openomap.conf
deleted file mode 100644
index f73a980c52..0000000000
--- a/conf/distro/openomap.conf
+++ /dev/null
@@ -1,53 +0,0 @@
-#@TYPE: Distribution
-#@NAME: OpenOMAP
-#@DESCRIPTION: OE Distribution for TI OMAP Development Boards
-
-INHERIT += " package_ipk debian"
-TARGET_OS ?= "linux-gnueabi"
-TARGET_FPU ?= "soft"
-
-# 2.4 vs 2.6 is a distro decision.
-MODUTILS = "26"
-
-PREFERRED_PROVIDER_hotplug = "udev"
-
-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_PROVIDER_virtual/libx11 ?= "diet-x11"
-
-#EABI stuff
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}-libc-for-gcc = "glibc-intermediate"
-PREFERRED_PROVIDER_virtual/arm-linux-gnueabi-libc-for-gcc = "glibc-intermediate"
-PREFERRED_PROVIDER_virtual/arm-linux-libc-for-gcc = "glibc-intermediate"
-
-# use latest booting kernel but allow to override it in local.conf
-PREFERRED_VERSION_linux-omap1_omap5912osk ?= "2.6.18-omap1"
-#PREFERRED_VERSION_linux-omap1_omap5912osk ?= "2.6.18+git"
-
-
-#use EABI toolchain
-PREFERRED_VERSION_gcc ?= "4.1.1"
-PREFERRED_VERSION_gcc-cross ?= "4.1.1"
-PREFERRED_VERSION_gcc-cross-initial ?= "4.1.1"
-PREFERRED_VERSION_binutils ?= "2.17.50.0.5"
-PREFERRED_VERSION_binutils-cross ?= "2.17.50.0.5"
-PREFERRED_VERSION_linux-libc-headers ?= "2.6.15.99"
-PREFERRED_VERSION_glibc ?= "2.5"
-PREFERRED_VERSION_glibc-intermediate ?= "2.5"
-
-#PREFERRED_VERSION_gcc ?= "4.1.1"
-#PREFERRED_VERSION_gcc-cross ?= "4.1.1"
-#PREFERRED_VERSION_gcc-cross-initial ?= "4.1.1"
-#PREFERRED_VERSION_binutils ?= "2.17"
-#PREFERRED_VERSION_binutils-cross ?= "2.17"
-#PREFERRED_VERSION_linux-libc-headers ?= "2.6.15.99"
-#PREFERRED_VERSION_glibc ?= "2.4"
-#PREFERRED_VERSION_glibc-intermediate ?= "2.4"
-
-# We want images supporting the following features (for task-base)
-DISTRO_FEATURES = "nfs pcmcia usbhost alsa"
-
-PCMCIA_MANAGER = "pcmciautils"
-
diff --git a/conf/distro/openprotium.conf b/conf/distro/openprotium.conf
index fc50cefe40..928817d815 100644
--- a/conf/distro/openprotium.conf
+++ b/conf/distro/openprotium.conf
@@ -8,7 +8,6 @@ DISTRO_TYPE = "alpha"
#
# Naming schemes
#
-#PARALLEL_INSTALL_MODULES = "1"
INHERIT += "debian"
#
@@ -19,6 +18,9 @@ IMAGE_BASENAME = "openprotium"
IMAGE_FSTYPES = "jffs2"
FEED_URIS = "openprotium##http://www.openprotium.org/ipkg.ppc.v1.0"
+# For protium on the turbostation
+IMAGE_BASENAME_turbostation = "openprotium-ts"
+
#
# binutils and compilers
#
@@ -47,7 +49,6 @@ PREFERRED_VERSION_glibc-initial = "2.3.2"
#
USE_NLS ?= "no"
TARGET_OS = "linux"
-TARGET_FPU = "hard"
HOTPLUG = "udev"
PREFERRED_PROVIDER_virtual/libiconv = "glibc"
PREFERRED_PROVIDER_virtual/libintl = "glibc"
diff --git a/conf/distro/openslug-native.conf b/conf/distro/openslug-native.conf
deleted file mode 100644
index 7452c26eaa..0000000000
--- a/conf/distro/openslug-native.conf
+++ /dev/null
@@ -1,20 +0,0 @@
-require conf/distro/openslug.conf
-
-# Corresponting packages should be in openslug-native.bb,
-# currently missing: ipkg-utils libtool quilt pkgconfig
-ASSUME_PROVIDED = "libtool-cross \
- libtool-native \
- automake-native \
- autoconf-native \
- quilt-native \
- ipkg-native \
- gnu-config-native \
- pkgconfig-native \
- virtual/armeb-linux-gcc \
- virtual/libc \
- update-rc.d \
- "
-
-# Our build host is armeb, not armv5eb that the kernel reports
-BUILD_ARCH = "armeb"
-
diff --git a/conf/distro/openslug.conf b/conf/distro/openslug.conf
deleted file mode 100644
index 8634d091f0..0000000000
--- a/conf/distro/openslug.conf
+++ /dev/null
@@ -1,133 +0,0 @@
-#@TYPE: Distribution
-#@NAME: OpenSlug
-#@DESCRIPTION: OpenSlug Linux Distribution for the NSLU2
-
-#----------------------------------------------------------------------------------
-# STANDARD OpenSlug DEFINITIONS
-#----------------------------------------------------------------------------------
-DISTRO_NAME = "OpenSlug"
-# DISTRO_VERSION = "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
-# DISTRO_FEED = "unstable"
-DISTRO_TYPE = "beta"
-SLUGOS_IMAGENAME = "openslug"
-SLUGOS_IMAGESEX = "big-endian"
-
-# openslug builds a complete image (not just the parts)
-SLUGOS_FLASH_IMAGE = "1"
-
-# NOTE: to build new packages set OPENSLUG_EXTRA_BBFILES to the full path name to
-# the .bb files for the packages to build - see ucslugc-packages.conf in this
-# directory
-OPENSLUG_EXTRA_BBFILES ?= ""
-
-#----------------------------------------------------------------------------------
-# FIRMWARE CONFIGURATION
-#----------------------------------------------------------------------------------
-# EXTRA PACKAGES
-# --------------
-# Filesystem support modules are listed in here for easy removal,
-# as is the lrzsz serial package and other kernel modules which are
-# not absolutely required for boot.
-# NOTE: only jffs2 support is an absolute requirement of boot, even
-# the ext2/ext3 support is optional!
-OPENSLUG_EXT2_PROGS = "e2fsprogs-mke2fs e2fsprogs-fsck e2fsprogs-e2fsck e2fsprogs-badblocks"
-OPENSLUG_REISER_PROGS = "reiserfsprogs"
-
-# The standard firmware contents and additional packages built as requirements
-# of the firmware are defined here in OPENSLUG_STANDARD_RDEPENDS and
-# OPENSLUG_STANDARD_DEPENDS respectively.
-OPENSLUG_STANDARD_RDEPENDS = ""
-
-# Support for a variety of file systems is built in to the openslug
-# image, programs to format disks with these file systems may be
-# added or removed. By default ext2. ext3 and reiserfs supported
-# is included by the following lines.
-#
-# These lines add support for formatting ext2 and ext3 file systems
-# on a hard disk attached to the NSLU2. ext3 is the standard Linux
-# file system.
-OPENSLUG_STANDARD_RDEPENDS += "${OPENSLUG_EXT2_PROGS}"
-
-# These lines add support for formatting reiserfs file systems on
-# a hard disk.
-OPENSLUG_STANDARD_RDEPENDS += "${OPENSLUG_REISER_PROGS}"
-
-# These lines add support for an X/Y/ZModem package called lrzsz
-# (this is of use for people with modified NSLU2 hardware which
-# supports a serial port.)
-OPENSLUG_STANDARD_RDEPENDS += "lrzsz"
-
-# Filesystem selection. Adding entries here adds the module to the
-# image. The module must be built as part of nslu2-kernel (i.e. it
-# must be specified as a module in the defconfig file). The NLS
-# support charset modules must be given explicitly and must match
-# the codepage/iocharset and NLS handling for the file systems which
-# require them. The installed lanugage set is minimal but sufficient
-# for any file system (since it uses utf8). See
-# http://www.nslu2-linux.orgwiki/HowTo/MountFATFileSystems
-# for more information on the language behaviour of the DOS file
-# systems.
-#
-# KERNEL LEVEL FILE SYSTEM SUPPORT
-# --------------------------------
-# NOTE: removing kernel-module-nfs from this list will prevent NFS
-# boot (however you can do a simple flash file system boot - no
-# attached disk - and install the nfs modules from ssh.)
-OPENSLUG_STANDARD_RDEPENDS += "\
-kernel-module-ext2 \
-kernel-module-jbd \
-kernel-module-ext3 \
-kernel-module-vfat \
-kernel-module-ntfs \
-kernel-module-isofs \
-kernel-module-udf \
-kernel-module-reiserfs \
-kernel-module-nls-cp437 \
-kernel-module-nls-utf8 \
-"
-
-# Add daemon required for HW RNG support
-OPENSLUG_STANDARD_RDEPENDS += "\
-rng-tools \
-"
-
-# Add modules required for usb support
-OPENSLUG_STANDARD_RDEPENDS += "\
-kernel-module-ohci-hcd \
-kernel-module-uhci-hcd \
-"
-
-# Add modules required for IDE support
-OPENSLUG_STANDARD_RDEPENDS += "\
-kernel-module-libata \
-kernel-module-pata-artop \
-"
-
-# This documents other file systems which are built but not installed
-# by default in the flash image.
-#
-# kernel-module-msdos - mounts a FAT file system without long file names
-# (use kernel-module-vfat, it shows the long names
-# if present.)
-
-# The 'standard' values are the defaults for the 'extra' packages added
-# to the firmware image. None of these things are requirements to have
-# a bootable, useable, system however they *are* expected to be present
-# in OpenSlug - see nslu2-bag for a more minimal configuration and some
-# more instructions about how to make a non-openslug image.
-OPENSLUG_EXTRA_RDEPENDS ?= ""
-SLUGOS_EXTRA_RDEPENDS = "${OPENSLUG_STANDARD_RDEPENDS} ${OPENSLUG_EXTRA_RDEPENDS}"
-
-#----------------------------------------------------------------------------------
-# PACKAGE VERSION CONTROL
-#----------------------------------------------------------------------------------
-PREFERRED_VERSION_nslu2-linksys-firmware ?= "2.3r63"
-
-#----------------------------------------------------------------------------------
-# BASE VERSION SELECTION
-#----------------------------------------------------------------------------------
-# b - big-endian
-# a - ARM instruction set
-# g - glibc
-#
-require conf/distro/slugos-bag.conf
diff --git a/conf/distro/openzaurus-unstable-uclibc.conf b/conf/distro/openzaurus-unstable-uclibc.conf
deleted file mode 100644
index 28b740c3dd..0000000000
--- a/conf/distro/openzaurus-unstable-uclibc.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-require conf/distro/include/openzaurus-unstable.inc
-
-TARGET_OS = "linux-uclibc"
-PREFERRED_PROVIDER_virtual/libiconv = "libiconv"
-PREFERRED_PROVIDER_virtual/libintl = "libintl"
-PREFERRED_PROVIDER_hostap-modules = "hostap-modules"
-
-# NOTE: you have to rename your 2.95 gcc and 2.11.2 ld
-ASSUME_PROVIDED += "virtual/arm-linux-uclibc-gcc-2.95"
diff --git a/conf/distro/openzaurus-unstable.conf b/conf/distro/openzaurus-unstable.conf
deleted file mode 100644
index 476249478d..0000000000
--- a/conf/distro/openzaurus-unstable.conf
+++ /dev/null
@@ -1,85 +0,0 @@
-#@--------------------------------------------------------------------
-#@TYPE: Distribution
-#@NAME: OpenZaurus <http://www.openzaurus.org>
-#@DESCRIPTION: A Linux Distribution for the Sharp Zaurus family
-#@--------------------------------------------------------------------
-
-DISTRO_VERSION = ".dev-snapshot-${DATE}"
-
-CVS_TARBALL_STASH = "\
-http://ewi546.ewi.utwente.nl/mirror/www.openzaurus.org/official/unstable/3.5.4/sources/ \
-"
-
-require conf/distro/include/sane-srcdates.inc
-require conf/distro/include/openzaurus.inc
-
-DISTRO_TYPE = "debug"
-# DISTRO_TYPE = "release"
-
-#FEED_URIS += " \
-# upgrades##http://openzaurus.org/official/unstable/${DISTRO_VERSION}/upgrades/ \
-#upgrades-${MACHINE}##http://openzaurus.org/official/unstable/${DISTRO_VERSION}/upgrades/${MACHINE} \
-# machine##http://openzaurus.org/official/unstable/${DISTRO_VERSION}/feed/machine/${MACHINE} \
-# base##http://openzaurus.org/official/unstable/${DISTRO_VERSION}/feed/base/ \
-# libs##http://openzaurus.org/official/unstable/${DISTRO_VERSION}/feed/libs/ \
-# console##http://openzaurus.org/official/unstable/${DISTRO_VERSION}/feed/console \
-# devel##http://openzaurus.org/official/unstable/${DISTRO_VERSION}/feed/devel"
-
-SRCDATE ?= "20060701"
-
-#
-# Zaurus
-#
-ASSUME_PROVIDED += "virtual/arm-linux-gcc-2.95"
-PREFERRED_PROVIDER_hostap-conf = "hostap-conf"
-PREFERRED_PROVIDER_task-bootstrap = "task-bootstrap"
-PREFERRED_PROVIDER_tslib ?= "tslib"
-
-KERNEL_CONSOLE = "ttyS0"
-#DEBUG_OPTIMIZATION = "-O -g3"
-#DEBUG_BUILD = "1"
-#INHIBIT_PACKAGE_STRIP = "1"
-
-# Glibc provides iconv and intl -- adjust, when doing uclibc builds
-PREFERRED_PROVIDER_virtual/libiconv = "glibc"
-PREFERRED_PROVIDER_virtual/libintl = "glibc"
-
-#
-# Base
-#
-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_VERSION_binutils-cross-sdk = "2.16"
-PREFERRED_VERSION_binutils-cross = "2.16"
-PREFERRED_VERSION_binutils = "2.16"
-
-PREFERRED_VERSION_glibc = "2.3.5+cvs20050627"
-PREFERRED_VERSION_gcc = "3.4.4"
-PREFERRED_VERSION_gcc-cross = "3.4.4"
-PREFERRED_VERSION_gcc-cross-sdk = "3.4.4"
-PREFERRED_VERSION_gcc-cross-initial = "3.4.4"
-
-PREFERRED_VERSION_wpa-supplicant = "0.5.5"
-
-#
-# Opie
-#
-QTE_VERSION = "2.3.10"
-OPIE_VERSION = "1.2.2"
-PALMTOP_USE_MULTITHREADED_QT = "yes"
-require conf/distro/include/preferred-opie-versions.inc
-
-#
-# GPE
-#
-PREFERRED_PROVIDERS += "virtual/xserver:xserver-kdrive"
-PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11"
-require conf/distro/include/preferred-gpe-versions-2.8.inc
-
-#
-# E
-#
-require conf/distro/include/preferred-e-versions.inc
-
diff --git a/conf/distro/oplinux-uclibc.conf b/conf/distro/oplinux-uclibc.conf
new file mode 100644
index 0000000000..0d31c8c8ac
--- /dev/null
+++ b/conf/distro/oplinux-uclibc.conf
@@ -0,0 +1,95 @@
+#-----------------------------------------------------------------------------
+#@TYPE: Distribution
+#@NAME: OPLinux uClibC
+#@DESCRIPTION: OPLinux uClibC Embedded Linux Distribution Configuration
+#
+#@COMMENT: This is a distribution for a number of embedded targets
+#@COMMENT: currently supported are
+#@COMMENT: generic x86
+#@COMMENT: wrap (x86)
+#@COMMENT: dht-walnut (ppc405)
+#@COMMENT: efika (ppc603)
+#@COMMENT: rb5xx (mips)
+#@COMMENT:
+#@COMMENT: for additional info please check www.digital-opsis.com
+#-----------------------------------------------------------------------------
+
+require conf/distro/include/oplinux.inc
+require conf/distro/include/sane-srcdates.inc
+
+#
+# Header
+#
+DISTRO_NAME = "OPLinux-uClibC"
+DISTRO_VERSION = ".dev-snapshot-${SRCDATE}"
+#DISTRO_TYPE = "release"
+DISTRO_TYPE = "debug"
+
+#
+# Target OS & FPU system
+#
+TARGET_OS = "linux-uclibc"
+PREFERRED_PROVIDER_virtual/libiconv = "libiconv"
+PREFERRED_PROVIDER_virtual/libintl = "libintl"
+
+#
+# Kernel
+#
+KERNEL = "kernel26"
+MACHINE_KERNEL_VERSION = "2.6"
+
+
+#
+# Binutils & Compiler
+#
+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_VERSION_gcc ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-initial ?= "4.1.1"
+PREFERRED_VERSION_binutils ?= "2.17.50.0.5"
+PREFERRED_VERSION_binutils-cross ?= "2.17.50.0.5"
+
+
+#PREFERRED_VERSION_linux-libc-headers = "2.6.15.99"
+PREFERRED_VERSION_linux-libc-headers = "2.6.11.1"
+
+SRCDATE_uclibc ?= "20061128"
+PREFERRED_VERSION_uclibc ?= "0.9.28+svn${SRCDATE_uclibc}"
+
+
+
+#Other packages we need
+#try to keep it minimal :)
+DISTRO_EXTRA_RDEPENDS += "\
+ nano pciutils"
+
+
+
+
+FEED_ARCH ?= "${TARGET_ARCH}"
+
+#i486 machines
+FEED_ARCH_x86 ="i486"
+
+#i586 machines
+FEED_ARCH_epia = "i586"
+
+#i686 machines
+FEED_ARCH_guinness = "i686"
+FEED_ARCH_progear = "i686"
+
+#powerpc machines
+FEED_ARCH_efika = "ppc603e"
+FEED_ARCH-dht-walnut = "ppc405"
+
+
+FEED_URIS += " \
+ no-arch##${OPLINUX-uCLIBC_URI}/unstable/feed/all \
+ base##${OPLINUX-uCLIBC_URI}/unstable/feed/${FEED_ARCH}/base \
+ perl##${OPLINUX-uCLIBC_URI}/unstable/feed/${FEED_ARCH}/perl \
+ python##${OPLINUX-uCLIBC_URI}/unstable/feed/${FEED_ARCH}/python \
+ debug##${OPLINUX-uCLIBC_URI}/unstable/feed/${FEED_ARCH}/debug \
+ ${MACHINE}##${OPLINUX-uCLIBC_URI}/unstable/feed/${FEED_ARCH}/machine/${MACHINE}"
diff --git a/conf/distro/oplinux.conf b/conf/distro/oplinux.conf
new file mode 100644
index 0000000000..d3e6c0344d
--- /dev/null
+++ b/conf/distro/oplinux.conf
@@ -0,0 +1,146 @@
+#-----------------------------------------------------------------------------
+#@TYPE: Distribution
+#@NAME: OPLinux uClibC
+#@DESCRIPTION: OPLinux uClibC Embedded Linux Distribution Configuration
+#
+#@COMMENT: This is a distribution for a number of embedded targets
+#@COMMENT: currently supported are
+#@COMMENT: generic x86
+#@COMMENT: wrap (x86)
+#@COMMENT: dht-walnut (ppc405)
+#@COMMENT: efika (ppc603)
+#@COMMENT: rb5xx (mips)
+#@COMMENT:
+#@COMMENT: for additional info please check www.digital-opsis.com
+#-----------------------------------------------------------------------------
+
+require conf/distro/include/oplinux.inc
+require conf/distro/include/sane-srcdates.inc
+
+
+#
+# Header
+#
+DISTRO_NAME = "OPLinux"
+DISTRO_VERSION = ".dev-snapshot-${SRCDATE}"
+#DISTRO_TYPE = "release"
+DISTRO_TYPE = "debug"
+
+#
+# Target OS & FPU system
+#
+TARGET_OS = "linux"
+
+PREFERRED_PROVIDER_dbus-glib = "dbus-glib"
+PREFERRED_PROVIDER_virtual/libsdl ?= "libsdl-x11"
+PREFERRED_PROVIDER_virtual/libxine ?= "libxine-x11"
+PREFERRED_PROVIDER_esound ?= "pulseaudio"
+PREFERRED_PROVIDER_virtual/libiconv ?= "libiconv"
+PREFERRED_PROVIDER_virtual/libintl ?= "libintl"
+
+
+
+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"
+
+
+#EABI stuff
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/powerpc-linux-libc-for-gcc ="glibc-intermediate"
+
+
+
+# Virtuals:
+PREFERRED_PROVIDER_virtual/db ?= "db"
+PREFERRED_PROVIDER_virtual/db-native ?= "db-native"
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
+
+# Others:
+PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11"
+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"
+
+
+PREFERRED_VERSION_gcc ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-sdk ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-initial ?= "4.1.1"
+
+PREFERRED_VERSION_binutils ?= "2.17.50.0.5"
+PREFERRED_VERSION_binutils-cross ?= "2.17.50.0.5"
+PREFERRED_VERSION_binutils-cross-sdk ?= "2.17.50.0.5"
+
+PREFERRED_VERSION_linux-libc-headers_i486 ?= "2.6.18"
+PREFERRED_VERSION_linux-libc-headers_i586 ?= "2.6.18"
+PREFERRED_VERSION_linux-libc-headers_i686 ?= "2.6.18"
+
+PREFERRED_VERSION_linux-libc-headers_powerpc ?= "2.6.18"
+PREFERRED_VERSION_linux-libc-headers ?= "2.6.18"
+
+PREFERRED_VERSION_glibc ?= "2.5"
+PREFERRED_VERSION_glibc_efika ?= "2.5"
+
+PREFERRED_VERSION_glibc-intermediate_i686 ?= "2.4"
+PREFERRED_VERSION_glibc-intermediate ?= "2.5"
+PREFERRED_VERSION_glibc-intermediate ?= "2.5"
+PREFERRED_VERSION_glibc-initial ?= "2.5"
+
+
+PCMCIA_MANAGER = "pcmciautils"
+
+PREFERRED_VERSION_dbus ?= "1.0.2"
+PREFERRED_VERSION_dbus-glib ?= "0.71"
+
+
+#
+# Kernel
+#
+KERNEL = "kernel26"
+MACHINE_KERNEL_VERSION = "2.6"
+
+
+
+#Other packages we need
+#try to keep it minimal :)
+DISTRO_EXTRA_RDEPENDS += "\
+ nano pciutils"
+
+
+
+
+FEED_ARCH ?= "${TARGET_ARCH}"
+
+#i486 machines
+FEED_ARCH_x86 ="i486"
+
+#i586 machines
+FEED_ARCH_epia = "i586"
+
+#i686 machines
+FEED_ARCH_guinness = "i686"
+FEED_ARCH_progear = "i686"
+
+#powerpc machines
+FEED_ARCH_efika = "ppc603e"
+FEED_ARCH_dht-walnut = "ppc405"
+
+
+FEED_URIS += " \
+ no-arch##${OPLINUX_URI}/unstable/feed/all \
+ base##${OPLINUX_URI}/unstable/feed/${FEED_ARCH}/base \
+ perl##${OPLINUX_URI}/unstable/feed/${FEED_ARCH}/perl \
+ python##${OPLINUX_URI}/unstable/feed/${FEED_ARCH}/python \
+ debug##${OPLINUX_URI}/unstable/feed/${FEED_ARCH}/debug \
+ ${MACHINE}##${OPLINUX_URI}/unstable/feed/${FEED_ARCH}/machine/${MACHINE}"
+
+
+
+
diff --git a/conf/distro/slugos-bag.conf b/conf/distro/slugos-bag.conf
deleted file mode 100644
index 12deb5e7d8..0000000000
--- a/conf/distro/slugos-bag.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-#@TYPE: Distribution
-#@NAME: SLUGOS-BAG
-#@DESCRIPTION: Linux Distribution for the NSLU2
-
-# See slugos.conf for an explanation of this file.
-
-# This slugos variant corresponds to OpenSlug
-DISTRO_NAME ?= "slugos-bag"
-# DISTRO_VERSION = "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
-# DISTRO_FEED ?= "unstable"
-DISTRO_TYPE ?= "beta"
-
-ARCH_BYTE_SEX = "be"
-ARM_INSTRUCTION_SET = "arm"
-TARGET_OS = "linux"
-SLUGOS_IMAGESEX ?= "big-endian"
-
-FEED_URIS_append += "cross##http://ipkg.nslu2-linux.org/feeds/slugos-bag/cross/${DISTRO_FEED}"
-FEED_URIS_append += "native##http://ipkg.nslu2-linux.org/feeds/slugos-bag/native/${DISTRO_FEED}"
-
-require conf/distro/include/slugos.inc
diff --git a/conf/distro/slugos-bau.conf b/conf/distro/slugos-bau.conf
deleted file mode 100644
index 1e74dfc526..0000000000
--- a/conf/distro/slugos-bau.conf
+++ /dev/null
@@ -1,19 +0,0 @@
-#@TYPE: Distribution
-#@NAME: SLUGOS-BAU
-#@DESCRIPTION: Linux Distribution for the NSLU2
-
-# See slugos.conf for an explanation of this file.
-
-# This slugos variant is not supported - there are no nslu2-linux.org
-# regular builds and there is no feed.
-DISTRO_NAME ?= "slugos-bau"
-# DISTRO_VERSION = "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
-# DISTRO_FEED ?= "unstable"
-DISTRO_TYPE ?= "alpha"
-
-ARCH_BYTE_SEX = "be"
-ARM_INSTRUCTION_SET = "arm"
-TARGET_OS = "linux-uclibc"
-SLUGOS_IMAGESEX ?= "big-endian"
-
-require conf/distro/include/slugos.inc
diff --git a/conf/distro/slugos-btu.conf b/conf/distro/slugos-btu.conf
deleted file mode 100644
index 125d6e0746..0000000000
--- a/conf/distro/slugos-btu.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-#@TYPE: Distribution
-#@NAME: SLUGOS-BTU
-#@DESCRIPTION: Linux Distribution for the NSLU2
-
-# See slugos.conf for an explanation of this file.
-
-# This slugos variant corresponds to UcSlugC
-DISTRO_NAME ?= "slugos-btu"
-# DISTRO_VERSION = "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
-# DISTRO_FEED ?= "unstable"
-DISTRO_TYPE ?= "beta"
-
-ARCH_BYTE_SEX = "be"
-ARM_INSTRUCTION_SET = "thumb"
-TARGET_OS = "linux-uclibc"
-SLUGOS_IMAGESEX ?= "big-endian"
-
-FEED_URIS_append += "cross##http://ipkg.nslu2-linux.org/feeds/slugos-btu/cross/${DISTRO_FEED}"
-FEED_URIS_append += "native##http://ipkg.nslu2-linux.org/feeds/slugos-btu/native/${DISTRO_FEED}"
-
-require conf/distro/include/slugos.inc
diff --git a/conf/distro/slugos-lag.conf b/conf/distro/slugos-lag.conf
deleted file mode 100644
index 5d65fcd78b..0000000000
--- a/conf/distro/slugos-lag.conf
+++ /dev/null
@@ -1,22 +0,0 @@
-#@TYPE: Distribution
-#@NAME: SLUGOS-LAG
-#@DESCRIPTION: Linux Distribution for the NSLU2
-
-# See slugos.conf for an explanation of this file.
-
-# This slugos variant corresponds to DebianSlug
-DISTRO_NAME ?= "slugos-lag"
-# DISTRO_VERSION = "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
-# DISTRO_FEED ?= "unstable"
-DISTRO_TYPE ?= "beta"
-
-ARCH_BYTE_SEX = "le"
-ARM_INSTRUCTION_SET = "arm"
-TARGET_OS = "linux"
-SLUGOS_IMAGESEX ?= "big-endian"
-
-FEED_URIS_append += "cross##http://ipkg.nslu2-linux.org/feeds/slugos-lag/cross/${DISTRO_FEED}"
-FEED_URIS_append += "native##http://ipkg.nslu2-linux.org/feeds/slugos-lag/native/${DISTRO_FEED}"
-
-
-require conf/distro/include/slugos.inc
diff --git a/conf/distro/slugos-lau.conf b/conf/distro/slugos-lau.conf
deleted file mode 100644
index 56c71fb329..0000000000
--- a/conf/distro/slugos-lau.conf
+++ /dev/null
@@ -1,19 +0,0 @@
-#@TYPE: Distribution
-#@NAME: SLUGOS-LAU
-#@DESCRIPTION: Linux Distribution for the NSLU2
-
-# This slugos variant is not supported - there are no nslu2-linux.org
-# regular builds and there is no feed.
-DISTRO_NAME ?= "slugos-lau"
-# DISTRO_VERSION = "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
-# DISTRO_FEED ?= "unstable"
-DISTRO_TYPE ?= "alpha"
-
-ARCH_BYTE_SEX = "le"
-ARM_INSTRUCTION_SET = "arm"
-TARGET_OS = "linux-uclibc"
-SLUGOS_IMAGESEX ?= "big-endian"
-
-# no feeds
-
-require conf/distro/include/slugos.inc
diff --git a/conf/distro/slugos-ltu.conf b/conf/distro/slugos-ltu.conf
deleted file mode 100644
index 5a4f22f017..0000000000
--- a/conf/distro/slugos-ltu.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-#@TYPE: Distribution
-#@NAME: SLUGOS-LTU
-#@DESCRIPTION: Linux Distribution for the NSLU2
-
-# See slugos.conf for an explanation of this file.
-
-DISTRO_NAME ?= "slugos-ltu"
-# DISTRO_VERSION = "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
-# DISTRO_FEED ?= "unstable"
-DISTRO_TYPE ?= "beta"
-
-ARCH_BYTE_SEX = "le"
-ARM_INSTRUCTION_SET = "thumb"
-TARGET_OS = "linux-uclibc"
-SLUGOS_IMAGESEX ?= "big-endian"
-
-FEED_URIS_append += "cross##http://ipkg.nslu2-linux.org/feeds/slugos-ltu/cross/${DISTRO_FEED}"
-FEED_URIS_append += "native##http://ipkg.nslu2-linux.org/feeds/slugos-ltu/native/${DISTRO_FEED}"
-
-
-require conf/distro/include/slugos.inc
diff --git a/conf/distro/slugos-native.conf b/conf/distro/slugos-native.conf
new file mode 100644
index 0000000000..77258c7148
--- /dev/null
+++ b/conf/distro/slugos-native.conf
@@ -0,0 +1,20 @@
+# Our build host is armeb, not armv5eb that the kernel reports
+BUILD_ARCH = "armeb"
+
+require conf/distro/slugos.conf
+
+# Corresponding packages should be in slugos-native.bb,
+# currently missing: ipkg-utils libtool quilt pkgconfig
+ASSUME_PROVIDED = "libtool-cross \
+ libtool-native \
+ automake-native \
+ autoconf-native \
+ quilt-native \
+ ipkg-native \
+ gnu-config-native \
+ pkgconfig-native \
+ virtual/armeb-linux-gcc \
+ virtual/libc \
+ update-rc.d \
+ "
+
diff --git a/conf/distro/slugos.conf b/conf/distro/slugos.conf
new file mode 100644
index 0000000000..980c158181
--- /dev/null
+++ b/conf/distro/slugos.conf
@@ -0,0 +1,16 @@
+#@TYPE: Distribution
+#@NAME: SlugOS
+#@DESCRIPTION: SlugOS Linux Distribution for the NSLU2
+
+#----------------------------------------------------------------------------------
+# STANDARD SlugOS/BE DEFINITIONS
+#----------------------------------------------------------------------------------
+DISTRO_NAME = "SlugOS"
+# DISTRO_VERSION = "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
+# DISTRO_FEED = "unstable"
+DISTRO_TYPE = "beta"
+TARGET_ARCH ?= "armeb"
+ARM_INSTRUCTION_SET = "arm"
+TARGET_OS = "linux"
+
+require conf/distro/include/slugos.inc
diff --git a/conf/distro/ucslugc.conf b/conf/distro/ucslugc.conf
index 81d5ea7397..441c3484ef 100644
--- a/conf/distro/ucslugc.conf
+++ b/conf/distro/ucslugc.conf
@@ -2,29 +2,17 @@
#@NAME: UcSlugC
#@DESCRIPTION: UcSlugC Linux Distribution for the NSLU2
-# This is SLUGOS-BTU with a different name...
DISTRO_NAME = "UcSlugC"
-# DISTRO_VERSION = "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
-# DISTRO_FEED = "unstable"
-DISTRO_TYPE = "beta"
-SLUGOS_IMAGENAME = "ucslugc"
-SLUGOS_IMAGESEX = "big-endian"
+IMAGE_BASENAME = "ucslugc"
+TARGET_ARCH = "armeb"
+ARM_INSTRUCTION_SET = "thumb"
+THUMB_INTERWORK = "yes"
+TARGET_OS = "linux-uclibc"
PREFERRED_VERSION_gcc-cross-initial = "3.4.4"
PREFERRED_VERSION_gcc-cross = "3.4.4"
PREFERRED_VERSION_gcc = "3.4.4"
-# NOTE: to build new packages set UCSLUGC_EXTRA_BBFILES to the full path name to
-# the .bb files for the packages to build - see ucslugc-packages.conf in this
-# directory
-UCSLUGC_EXTRA_BBFILES ?= ""
+require conf/distro/include/slugos.inc
-# For compatibility with the old way of overriding these settings names with the
-# prefix UCSLUGC_ are used here to default the values of the corresponding NSLU2_
-# setting - either may be set in local.conf to override these values.
-UCSLUGC_EXTRA_RDEPENDS ?= ""
-
-#
-SLUGOS_EXTRA_RDEPENDS ?= "${UCSLUGC_EXTRA_RDEPENDS}"
-
-require conf/distro/slugos-btu.conf
+OVERRIDES .= ":slugos"
diff --git a/conf/distro/unslung.conf b/conf/distro/unslung.conf
index 25ac84d270..aaf5c690a8 100644
--- a/conf/distro/unslung.conf
+++ b/conf/distro/unslung.conf
@@ -10,15 +10,10 @@ FEED_URIS = "cross##http://ipkg.nslu2-linux.org/feeds/optware/nslu2/cross/stabl
FEED_URIS += "native##http://ipkg.nslu2-linux.org/feeds/optware/nslu2/native/stable"
FEED_URIS += "oe##http://ipkg.nslu2-linux.org/feeds/unslung/modules/cross/stable"
-# pull in the frozen list of bbfiles
-# UNSLUNG_EXTRA_BBFILES ?= ""
-# require conf/distro/include/freeze.inc
-
TARGET_FPU = "soft"
TARGET_OS = "linux"
# select distro specific options to match that of the original LinkSys build
-ARCH_BYTE_SEX = "be"
ARM_INSTRUCTION_SET = "arm"
THUMB_INTERWORK = "no"
@@ -26,17 +21,19 @@ THUMB_INTERWORK = "no"
# to armeb - this makes this stuff independent of changes in machine/nslu2.conf
TARGET_ARCH = "armeb"
PACKAGE_ARCH = "${TARGET_ARCH}"
-# PACKAGE_EXTRA_ARCHS has the full list of supported architectures (from nslu2.conf)
+# PACKAGE_EXTRA_ARCHS has the full list of supported architectures (from nslu2be.conf).
+# We need "nslu2" added for backwards compatibility.
+PACKAGE_EXTRA_ARCHS += "nslu2"
# match the optimisation settings to that which has traditionally been used
# in unslung
FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2"
-INHERIT += " package_ipk nslu2-jffs2-image"
+INHERIT += " package_ipk"
IMAGE_FSTYPES = "jffs2"
UNSLUNG_DEVICE_TABLE = "${@bb.which(bb.data.getVar('BBPATH', d, 1), 'files/device_table-unslung.txt')}"
-EXTRA_IMAGECMD_jffs2 = "--no-eraseblock-headers --pad --big-endian --eraseblock=0x20000 -D ${UNSLUNG_DEVICE_TABLE}"
+EXTRA_IMAGECMD_jffs2 = "-n --pad --big-endian --eraseblock=0x20000 -D ${UNSLUNG_DEVICE_TABLE}"
UNSLUNG_EXTRA_DEPENDS ?= ""
UNSLUNG_EXTRA_RDEPENDS ?= ""
@@ -48,6 +45,7 @@ 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"
+PREFERRED_PROVIDERS += " virtual/libc:glibc"
PREFERRED_VERSION_binutils ?= "2.15.94.0.1"
PREFERRED_VERSION_binutils-cross ?= "2.15.94.0.1"
@@ -57,24 +55,16 @@ PREFERRED_VERSION_gcc ?= "3.4.4"
PREFERRED_VERSION_glibc ?= "2.2.5"
PREFERRED_VERSION_glibc-initial ?= "2.2.5"
-PREFERRED_PROVIDER_virtual/kernel ?= "unslung-kernel"
+PREFERRED_PROVIDER_virtual/kernel = "unslung-kernel"
PREFERRED_VERSION_unslung-kernel ?= "2.4.22.l2.3r63"
PREFERRED_VERSION_unslung-rootfs ?= "2.3r63"
PREFERRED_VERSION_nslu2-linksys-firmware ?= "2.3r63"
PREFERRED_VERSION_nslu2-linksys-libs ?= "2.3r63"
PREFERRED_VERSION_nslu2-linksys-ramdisk ?= "2.3r63"
-SRCDATE_ipkg-utils ?= "20060106"
-SRCDATE_ipkg-utils-native ?= "20060106"
-SRCDATE_ipkg-link ?= "20060106"
-SRCDATE_irssi ?= "20050930"
-
CVS_TARBALL_STASH = "http://sources.nslu2-linux.org/sources/"
INHERIT += "nslu2-mirrors"
-PREFERRED_VERSION_ipkg ?= "0.99.154"
-PREFERRED_VERSION_ipkg-native ?= "0.99.154"
-
#-------------------------------------------------------------------
# FIXME!
# This is clearly wrong, the headers should match the 2.4.22 kernel,
diff --git a/conf/documentation.conf b/conf/documentation.conf
index 392d1718b6..4782a053ba 100644
--- a/conf/documentation.conf
+++ b/conf/documentation.conf
@@ -105,3 +105,29 @@ COMPATIBLE_HOST[doc] = "A regular expression which matches the HOST_SYS names su
COMPATIBLE_MACHINE[doc] = "A regular expression which matches the MACHINES support by the package/file. Failure to match will cause the file to be skipped by the parser."
SOURCE_MIRROR_FETCH[doc] = "Switch marking build as source fetcher. Used to skip COMPATIBLE_* checking."
+SOURCE_MIRROR_URL[doc] = "URL to source mirror which will be used before fetching from original SRC_URI."
+
+BBINCLUDELOGS[doc] = "Boolean switch to get log printed on failure."
+BBINCLUDELOGS_LINES[doc] = "Amount of log lines printed on failure."
+
+
+# seppuku bbclass
+SEPPUKU_AUTOBUILD[doc] = "This is an autobuild, broken packages are cleaned automatically. Don't define this at all if this is not an autobuild"
+SEPPUKU_USER[doc] = "The login-name for the bugzilla account"
+SEPPUKU_PASS[doc] = "The password for this account"
+#SEPPUKU_LOGIN = "http://bugzilla.openmoko.org/cgi-bin/bugzilla/query.cgi?"
+SEPPUKU_LOGIN[doc] = "path to the login script of the bugzilla, note the ? at the end"
+#SEPPUKU_QUERY = "http://bugzilla.openmoko.org/cgi-bin/bugzilla/buglist.cgi"
+SEPPUKU_QUERY[doc] = "The query script of the bugzilla"
+#SEPPUKU_NEWREPORT = "http://bugzilla.openmoko.org/cgi-bin/bugzilla/post_bug.cgi?bug_file_loc=http%3A%2F%2F&version=unspecified&priority=P2&bug_severity=normal&op_sys=Linux&rep_platform=Neo1973&"
+SEPPUKU_NEWREPORT[doc]= "This is the url used to create a new bug report, note the defaults for version and priority and more, and the trailing &"
+#SEPPUKU_ADDCOMMENT = "http://bugzilla.openmoko.org/cgi-bin/bugzilla/process_bug.cgi?bug_file_loc=http%3A%2F%2F&version=unspecified&longdesclength=2&priority=P2&bug_severity=normal&op_sys=Linux&rep_platform=Neo1973&target_milestone=Phase+0&"
+SEPPUKU_ADDCOMMENT[doc]= "The url used to reopen bug reports and to add another new comment"
+#SEPPUKU_ATTACHMENT = "http:/bugzilla.openmoko.org/cgi-bin/bugzilla/attachment.cgi"
+SEPPUKU_ATTACHMENT[doc] = "The url used to create attachments."
+
+
+#SEPPUKU_PRODUCT = "OpenMoko"
+SEPPUKU_PRODUCT[doc] = "The product inside the bugtracker"
+#SEPPUKU_COMPONENT = "autobuilds"
+SEPPUKU_COMPONENT[doc]= "The component inside the bugtracker"
diff --git a/conf/local.conf.sample b/conf/local.conf.sample
index df00fbae37..daffdda6de 100644
--- a/conf/local.conf.sample
+++ b/conf/local.conf.sample
@@ -90,6 +90,12 @@ PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross"
# ENABLE_BINARY_LOCALE_GENERATION = "0"
# ASSUME_PROVIDED += "qemu-native"
+# If ENABLE_BINARY_LOCALE_GENERATION is set to "1", you can limit locales
+# generated to the list provided by GLIBC_GENERATE_LOCALES. This is huge
+# time-savior for developmental builds. Format: list of locale.encoding pairs
+# with spaces as separators.
+# GLIBC_GENERATE_LOCALES = "en_GB.UTF-8 de_DE.UTF-8"
+
# Uncomment this to select a particular major kernel version if the MACHINE setting
# supports more than one major kernel version. Currently this is suported by the
# following MACHINE types: poodle, tosa and simpad.
@@ -139,4 +145,4 @@ BBINCLUDELOGS = "yes"
#CVS_TARBALL_STASH = ""
# EDIT THIS FILE and then remove the line below before using!
-REMOVE_THIS_LINE:="${@oe.fatal('Read the comments in your conf/local.conf')}"
+REMOVE_THIS_LINE:="${@bb.fatal('Read the comments in your conf/local.conf')}"
diff --git a/conf/machine/a1200.conf b/conf/machine/a1200.conf
new file mode 100644
index 0000000000..3914d0e8f4
--- /dev/null
+++ b/conf/machine/a1200.conf
@@ -0,0 +1,2 @@
+WARNING:="${@bb.fatal('\n*\n*\n* Sorry, There is no dedicated configuration for the Motorola EZX A1200,\n* because \
+of the similarities between A780 and A1200 series. Use MACHINE = \"a780\".\n*\n*\n')}"
diff --git a/conf/machine/a780.conf b/conf/machine/a780.conf
index fe3cdbc481..1820569c2b 100644
--- a/conf/machine/a780.conf
+++ b/conf/machine/a780.conf
@@ -1,10 +1,10 @@
#@TYPE: Machine
-#@NAME: Motorola EZX A780, Motorola EZX E680, Motorola EZX E680i
-#@DESCRIPTION: Machine configuration for the Motorola GSM phones A780, E680, and E680i
+#@NAME: Motorola EZX A1200, Motorola EZX A780, Motorola EZX E680, Motorola EZX E680i
+#@DESCRIPTION: Machine configuration for the Motorola GSM phones A1200, A780, E680, and E680i
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
PREFERRED_PROVIDER_virtual/kernel = "linux-ezx"
@@ -20,11 +20,18 @@ EXTRA_IMAGECMD_jffs2 = "--pad=14680064 --little-endian --eraseblock=0x20000 -n"
MACHINE_FEATURES = "kernel26 touchscreen apm alsa bluetooth usbgadget usbhost keyboard screen"
+#the EZX phones need a userspace daemon to stop the BP from shutting down the phone
+MACHINE_EXTRA_RDEPENDS += "opentapi"
+
ROOT_FLASH_SIZE = "24"
EXTRA_IMAGEDEPENDS += "ezx-boot-usb-native"
+# Opentapi needs to be started very early so we need the mux devices in static /dev
+IMAGE_DEVICE_TABLES = "files/device_table-minimal.txt \
+ files/device_table-ezx.txt"
+
# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
-include conf/machine/include/tune-xscale.conf
+require conf/machine/include/tune-xscale.conf
SERIAL_CONSOLE = "115200 ttyS0"
diff --git a/conf/machine/acern30.conf b/conf/machine/acern30.conf
new file mode 100644
index 0000000000..4255769478
--- /dev/null
+++ b/conf/machine/acern30.conf
@@ -0,0 +1,36 @@
+#@TYPE: Machine
+#@NAME: Acer n30
+#@DESCRIPTION: Machine configuration for the Acer n30
+
+#
+# Hardware-based properties
+#
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t"
+
+# Samsung S3C2xxx CPU
+require conf/machine/include/tune-arm920t.conf
+
+ROOT_FLASH_SIZE = "32"
+VOLATILE_STORAGE_SIZE = "64"
+GUI_MACHINE_CLASS = "smallscreen"
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa irda bluetooth usbgadget screen"
+
+#
+# Software/packages selection
+#
+PREFERRED_PROVIDER_virtual/kernel = "linux"
+PREFERRED_VERSION_linux ?= "2.6.14"
+PCMCIA_MANAGER = "pcmciautils"
+PREFERRED_PROVIDER_xserver = "xserver-kdrive"
+
+#
+# Modules autoload and other boot properties
+#
+module_autoload_snd-pcm-oss = "snd-pcm-oss"
+module_autoload_g_ether = "g_ether"
+
+SERIAL_CONSOLE = "115200 ttyS0 vt100"
+USE_VT = "0"
+
+require conf/machine/include/LAB-settings.conf
diff --git a/conf/machine/akita.conf b/conf/machine/akita.conf
index 2682fb300f..fad73c53bf 100644
--- a/conf/machine/akita.conf
+++ b/conf/machine/akita.conf
@@ -2,8 +2,8 @@
#@NAME: Sharp Zaurus SL-C1000
#@DESCRIPTION: Machine configuration for the Sharp Zaurus SL-C1000 device
-include conf/machine/include/zaurus-2.6.conf
-include conf/machine/include/zaurus-clamshell.conf
+require conf/machine/include/zaurus-2.6.conf
+require conf/machine/include/zaurus-clamshell.conf
PACKAGE_EXTRA_ARCHS += "iwmmxt"
diff --git a/conf/machine/amsdelta.conf b/conf/machine/amsdelta.conf
index 85afdc85f4..d4877a1724 100644
--- a/conf/machine/amsdelta.conf
+++ b/conf/machine/amsdelta.conf
@@ -21,7 +21,7 @@ GUI_MACHINE_CLASS="smallscreen"
PREFERRED_VERSION_u-boot = "1.1.4"
-TARGET_CC_ARCH = "-march=armv4t -mtune=arm920t"
+require conf/machine/include/tune-arm920t.conf
IMAGE_ROOTFS_SIZE_ext2 = "8192"
IMAGE_ROOTFS_SIZE_ext2.gz = "8192"
diff --git a/conf/machine/asus730.conf b/conf/machine/asus730.conf
new file mode 100644
index 0000000000..85ca5d106a
--- /dev/null
+++ b/conf/machine/asus730.conf
@@ -0,0 +1,40 @@
+#@TYPE: Machine
+#@NAME: Asus MyPal A730
+#@DESCRIPTION: Machine configuration for the asus730 with a pxa27x CPU
+
+#
+# Hardware-based properties
+#
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt"
+
+# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
+require conf/machine/include/tune-xscale.conf
+
+# Uncomment this to use iwmmxt optimizations. Remove the above xscale stuff first
+#require conf/machine/include/tune-iwmmxt.conf
+
+ROOT_FLASH_SIZE = "64"
+VOLATILE_STORAGE_SIZE = "64"
+GUI_MACHINE_CLASS = "bigscreen"
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa pcmcia bluetooth irda wifi usbgadget screen"
+
+#
+# Software/packages selection
+#
+PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
+PCMCIA_MANAGER = "pcmciautils"
+MODUTILS = "26"
+XSERVER = "xserver-kdrive"
+
+PREFERRED_VERSION_orinoco-modules = "0.15rc1"
+
+
+#
+# Modules autoload and other boot properties
+#
+
+#FIXME: this should be controlled by a userspace utility later.
+module_autoload_g_ether = "g_ether"
+
+SERIAL_CONSOLE = "115200 ttyS0"
diff --git a/conf/machine/aximx50.conf b/conf/machine/aximx50.conf
new file mode 100644
index 0000000000..0d7e12e3cc
--- /dev/null
+++ b/conf/machine/aximx50.conf
@@ -0,0 +1,49 @@
+#@TYPE: Machine
+#@NAME: Axim x50/x50v/x51/x51v
+#@DESCRIPTION: Machine configuration for the Dell Axim x50/51(v) with a pxa27x CPU
+
+#
+# Hardware-based properties
+#
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt "
+
+# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
+require conf/machine/include/tune-xscale.conf
+
+# Uncomment this to use iwmmxt optimizations. Remove the above xscale stuff first
+#require conf/machine/include/tune-iwmmxt.conf
+
+ROOT_FLASH_SIZE = "256"
+VOLATILE_STORAGE_SIZE = "64"
+GUI_MACHINE_CLASS = "bigscreen" # caveat: only "v" models are VGA
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa pcmcia bluetooth irda wifi usbgadget screen"
+
+#
+# Software/packages selection
+#
+PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
+PCMCIA_MANAGER = "pcmciautils"
+MODUTILS = "26"
+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 \
+ kernel-module-i2c-pxa"
+
+#
+# Modules autoload and other boot properties
+#
+module_autoload_evdev = "evdev"
+module_autoload_mmc_block = "mmc_block"
+module_autoload_pxa27x_udc = "pxa27x_udc"
+
+#FIXME: this should be controlled by a userspace utility later.
+module_autoload_g_ether = "g_ether"
+
+SERIAL_CONSOLE = "115200 ttyS0"
diff --git a/conf/machine/c7x0.conf b/conf/machine/c7x0.conf
index d1afb882e3..098d0526f0 100644
--- a/conf/machine/c7x0.conf
+++ b/conf/machine/c7x0.conf
@@ -2,8 +2,8 @@
#@NAME: Sharp Zaurus SL-C7x0
#@DESCRIPTION: Machine configuration for the Sharp Zaurus SL-C700, Sharp Zaurus SL-C750, Sharp Zaurus SL-C760, Sharp Zaurus SL-C860 devices
-include conf/machine/include/zaurus-2.6.conf
-include conf/machine/include/zaurus-clamshell.conf
+require conf/machine/include/zaurus-2.6.conf
+require conf/machine/include/zaurus-clamshell.conf
IMAGE_FSTYPES ?= "jffs2"
diff --git a/conf/machine/collie.conf b/conf/machine/collie.conf
index e7e867e539..429463cc87 100644
--- a/conf/machine/collie.conf
+++ b/conf/machine/collie.conf
@@ -4,8 +4,8 @@
TARGET_ARCH = "arm"
-MACHINE_KERNEL_VERSION ?= "2.4"
-include conf/machine/include/collie-${MACHINE_KERNEL_VERSION}.conf
+MACHINE_KERNEL_VERSION ?= "2.6"
+require conf/machine/include/collie-${MACHINE_KERNEL_VERSION}.conf
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
@@ -18,10 +18,9 @@ IMAGE_LINGUAS = ""
IMAGE_FSTYPES ?= "jffs2 tar.gz"
-include conf/machine/include/tune-strongarm.conf
+require conf/machine/include/tune-strongarm.conf
ROOT_FLASH_SIZE = "14"
# actually 14680064, see EXTRA_IMAGECMD above
-MACHINE_TASK_PROVIDER = "task-base"
GUI_MACHINE_CLASS_poodle = "smallscreen"
diff --git a/conf/machine/compulab-pxa270.conf b/conf/machine/compulab-pxa270.conf
index 12f82773d4..378ab20e43 100644
--- a/conf/machine/compulab-pxa270.conf
+++ b/conf/machine/compulab-pxa270.conf
@@ -1,24 +1,30 @@
#@TYPE: Machine
#@Name: Compulab PXA270 system
-#@DESCRIPTION: Machine configuration for LogicPD PXA270 system
-#OLDEST_KERNEL = "2.6.17"
+#@DESCRIPTION: Machine configuration for Compulab PXA270 system
+#OLDEST_KERNEL = "2.6.16"
TARGET_ARCH = "arm"
-PREFERRED_VERSION_logicpd-pxa270 = "2.6.17"
-GUI_MACHINE_CLASS = "bigscreen"
+PREFERRED_VERSION_compulab-pxa270 = "2.6.16"
+GUI_MACHINE_CLASS ?= "bigscreen"
PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}"
PACKAGE_EXTRA_ARCHS = "armv4 armv5te"
-include conf/machine/include/tune-xscale.conf
+require conf/machine/include/tune-xscale.conf
# used by sysvinit_2
-SERIAL_CONSOLE = "115200 ttySA0"
+SERIAL_CONSOLE ?= "38400 ttySA0"
# used by opie-collections.inc
-ROOT_FLASH_SIZE = "32"
+ROOT_FLASH_SIZE ?= "32"
EXTRA_IMAGECMD_jffs2 = "--pad=0x1000000 --eraseblock=0x40000"
+# for NAND flash.
+EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 --pad=0x20000;\
+ sumtool -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
+ -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs-summary.jffs2 \
+ -e 0x20000 -p\
+ "
+
MACHINE_FEATURES = "kernel26 pcmcia usbhost usbgadget pcmcia touchscreen alsa"
-MACHINE_TASK_PROVIDER = "task-base"
diff --git a/conf/machine/db1200.conf b/conf/machine/db1200.conf
index efa45f6a2a..5fafb0cd56 100644
--- a/conf/machine/db1200.conf
+++ b/conf/machine/db1200.conf
@@ -13,3 +13,5 @@ TARGET_CC_ARCH="-march=mips32"
FLASH_OFFSET="0xBC000000"
#EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x10000 -q"
EXTRA_IMAGECMD_jffs2 = "--little-endian --pad=0x3C00000 -q"
+
+MACHINE_FEATURES = "kernel26 pcmcia usbhost"
diff --git a/conf/machine/devkitidp-pxa255.conf b/conf/machine/devkitidp-pxa255.conf
index 7d19d02439..c7266fee00 100644
--- a/conf/machine/devkitidp-pxa255.conf
+++ b/conf/machine/devkitidp-pxa255.conf
@@ -5,14 +5,14 @@
TARGET_ARCH = "arm"
GUI_MACHINE_CLASS = "bigscreen"
-PACKAGE_EXTRA_ARCHS = "armv5te"
+PACKAGE_EXTRA_ARCHS = "armv4 armv5te"
-PREFERRED_PROVIDER_virtual/bootloader = "uboot-${MACHINE}"
-PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}-kernel"
+PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
+PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}"
+PREFERRED_VERSION_u-boot = "1.1.6"
+UBOOT_MACHINE = "pxa255_idp_config"
-BOOTSTRAP_EXTRA_RDEPENDS += "uboot-${MACHINE} ${MACHINE}-kernel"
-
-include conf/machine/include/tune-xscale.conf
+require conf/machine/include/tune-xscale.conf
# used by sysvinit_2
SERIAL_CONSOLE = "115200 ttyS0"
@@ -20,4 +20,5 @@ SERIAL_CONSOLE = "115200 ttyS0"
# used by opie-collections.inc
ROOT_FLASH_SIZE = "32"
+MACHINE_FEATURES = "kernel26 pcmcia usbhost usbgadget pcmcia touchscreen alsa"
diff --git a/conf/machine/dht-walnut.conf b/conf/machine/dht-walnut.conf
index ffd114ace4..268b2a361c 100644
--- a/conf/machine/dht-walnut.conf
+++ b/conf/machine/dht-walnut.conf
@@ -3,13 +3,19 @@
#@DESCRIPTION: Machine configuration for the DHT-Walnut 405GP development platform
TARGET_ARCH = "powerpc"
-PACKAGE_ARCHS = "all powerpc ${MACHINE}"
+PACKAGE_EXTRA_ARCHS = "ppc405"
PREFERRED_PROVIDER_virtual/kernel = "linux-${MACHINE}"
+MACHINE_FEATURES = "kernel26 ext2"
+
TARGET_CPU = "405"
-OLDEST_KERNEL = "2.6.9"
+OLDEST_KERNEL = "2.6.12"
#tune for the 405 cpu
-include conf/machine/include/tune-ppc405.conf
+require conf/machine/include/tune-ppc405.conf
+
+
+
+SERIAL_CONSOLE = "115200 ttyS0"
diff --git a/conf/machine/efika.conf b/conf/machine/efika.conf
index 5b2c87b55c..ca1a7be8ff 100644
--- a/conf/machine/efika.conf
+++ b/conf/machine/efika.conf
@@ -4,14 +4,16 @@
TARGET_ARCH = "powerpc"
-PACKAGE_EXTRA_ARCHS = "ppc ppc603e"
-
-MACHINE_FEATURES = "kernel26 usbhost ext2 pci alsa"
+PACKAGE_EXTRA_ARCHS = "all ${MACHINE} ppc ppc603e"
PREFERRED_PROVIDER_virtual/kernel = "linux-${MACHINE}"
+MACHINE_FEATURES = "kernel26 usbhost ext2 alsa"
+
#don't try to access tty1
USE_VT = "0"
+SERIAL_CONSOLE = "115200 ttyPSC0"
+
#tune for the MPC5200B cpu
-include conf/machine/include/tune-ppc603e.conf
+require conf/machine/include/tune-ppc603e.conf
diff --git a/conf/machine/ep93xx.conf b/conf/machine/ep93xx.conf
index 5e9917ffaf..912cbc5c77 100644
--- a/conf/machine/ep93xx.conf
+++ b/conf/machine/ep93xx.conf
@@ -7,6 +7,7 @@ TARGET_ARCH = "arm"
PACKAGE_EXTRA_ARCHS = "armv4t"
PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}-kernel"
+PREFERRED_PROVIDER_xserver = "xserver-kdrive"
#don't try to access tty1
USE_VT = "0"
@@ -23,7 +24,7 @@ EXTRA_IMAGECMD_jffs2 = "--eraseblock=0x40000 --pad=0x500000 "
#tune for ep93xx cpus
#can be used for crunch support later on
-#include conf/machine/include/tune-ep9312.conf
+#require conf/machine/include/tune-ep9312.conf
-include conf/machine/include/tune-arm920t.conf
+require conf/machine/include/tune-arm920t.conf
diff --git a/conf/machine/epia.conf b/conf/machine/epia.conf
index 08f12a0ac6..1497e303c4 100644
--- a/conf/machine/epia.conf
+++ b/conf/machine/epia.conf
@@ -1,13 +1,14 @@
+require conf/machine/x86.conf
+
TARGET_ARCH = "i586"
-TARGET_VENDOR = "-oe"
+PACKAGE_EXTRA_ARCHS = "i386 i486"
+
PREFERRED_PROVIDER_virtual/kernel = "linux-epia"
-IMAGE_FSTYPES = "ext2.gz"
-BOOTSTRAP_EXTRA_RDEPENDS = "pciutils udev kernel-modules"
-udevdir = "/dev"
OLDEST_KERNEL = "2.6.5"
-GLIBC_ADDONS = "nptl"
-GLIBC_EXTRA_OECONF = "--with-tls"
-PACKAGE_EXTRA_ARCHS = "i386"
-include conf/machine/include/tune-c3.conf
+IMAGE_FSTYPES = "ext2.gz"
+
+MACHINE_FEATURES = "kernel26 screen keyboard pci ushbost acpi ext2"
+
+require conf/machine/include/tune-c3.conf
diff --git a/conf/machine/fic-gta01.conf b/conf/machine/fic-gta01.conf
new file mode 100644
index 0000000000..f10797bbaf
--- /dev/null
+++ b/conf/machine/fic-gta01.conf
@@ -0,0 +1,39 @@
+#-----------------------------------------------------------------------------
+#@TYPE: Machine
+#@NAME: FIC GTA01 (Neo1973)
+#@DESCRIPTION: Machine configuration for the FIC Neo1973 GSM phone
+#-----------------------------------------------------------------------------
+
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4t"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-gta01"
+
+MACHINE_FEATURES = "kernel26 apm alsa bluetooth usbgadget usbhost"
+
+MACHINE_EXTRA_RDEPENDS = "alsa-state"
+
+# package gta01 specific modules
+MACHINE_EXTRA_RRECOMMENDS = "\
+ kernel-module-gta01-pm-bt \
+ kernel-module-gta01-pm-gps \
+ kernel-module-gta01-pm-gsm \
+ kernel-module-gta01kbd \
+ kernel-module-s3cmci \
+ kernel-module-ext2 \
+ alsa-state"
+
+# used by sysvinit_2
+#SERIAL_CONSOLE = "115200 ttySAC0"
+
+# used by some images
+ROOT_FLASH_SIZE = "60"
+
+# extra jffs2 tweaks
+EXTRA_IMAGECMD_jffs2 = "--eraseblock=0x4000 -n"
+
+# build tools
+EXTRA_IMAGEDEPENDS += "sjf2410-linux-native"
+
+# tune for S3C24x0
+include conf/machine/include/tune-arm920t.conf
diff --git a/conf/machine/gumstix.conf b/conf/machine/gumstix.conf
index 0fccf05b3b..36ed04e67b 100644
--- a/conf/machine/gumstix.conf
+++ b/conf/machine/gumstix.conf
@@ -4,7 +4,7 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-gumstix"
OLDEST_KERNEL = "2.6.15"
MODUTILS = "26"
-include conf/machine/include/tune-xscale.conf
+require conf/machine/include/tune-xscale.conf
TARGET_CC_ARCH = "-Os -pipe -Os -march=armv5te -mtune=xscale -Wa,-mcpu=xscale"
PACKAGE_ARCH = "arm"
diff --git a/conf/machine/h1910.conf b/conf/machine/h1910.conf
index 0f18728087..e81dbdeaa9 100644
--- a/conf/machine/h1910.conf
+++ b/conf/machine/h1910.conf
@@ -6,7 +6,7 @@
# Hardware-based properties
#
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te ipaqpxa"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te "
require conf/machine/include/tune-xscale.conf
@@ -19,6 +19,7 @@ MACHINE_FEATURES = "kernel26 touchscreen apm alsa irda usbgadget screen"
# Software/packages selection
#
PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
+PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.16-hh9"
PCMCIA_MANAGER = "pcmciautils"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
diff --git a/conf/machine/h1940.conf b/conf/machine/h1940.conf
index 37f61433c7..1a63643868 100644
--- a/conf/machine/h1940.conf
+++ b/conf/machine/h1940.conf
@@ -12,8 +12,6 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-h1940"
# Set features for task-base
MACHINE_FEATURES = "kernel26 touchscreen apm bluetooth irda usbgadget screen"
-# Empty modules list for now
-HANDHELD_MODULES = ""
# Some extra configuration
VOLATILE_STORAGE_SIZE = "64"
@@ -22,3 +20,6 @@ GUI_MACHINE_CLASS = "smallscreen"
SERIAL_CONSOLE = "115200 ttySAC2 vt100"
USE_VT = "0"
+# tune for armv4t
+require conf/machine/include/tune-arm920t.conf
+
diff --git a/conf/machine/h2200.conf b/conf/machine/h2200.conf
index da8a58329a..6c43e75625 100644
--- a/conf/machine/h2200.conf
+++ b/conf/machine/h2200.conf
@@ -6,7 +6,7 @@
# Hardware-based properties
#
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te ipaqpxa"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te "
#Compile with armv5te optimizations, incompatible with armv4(t) cpus
require conf/machine/include/tune-xscale.conf
diff --git a/conf/machine/h3600.conf b/conf/machine/h3600.conf
index eb0b6d40e6..953c90590d 100644
--- a/conf/machine/h3600.conf
+++ b/conf/machine/h3600.conf
@@ -6,7 +6,7 @@
# Hardware-based properties
#
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 ipaqsa"
+PACKAGE_EXTRA_ARCHS = "armv4 "
require conf/machine/include/tune-strongarm.conf
@@ -24,13 +24,11 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
PCMCIA_MANAGER = "pcmciautils"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
-MACHINE_TASK_PROVIDER = "task-base"
-
MACHINE_EXTRA_RDEPENDS = "ipaq-boot-params"
MACHINE_EXTRA_RRECOMMENDS = "kernel-module-nls-cp437 \
kernel-module-micro"
-EXTRA_IMAGECMD_h3600_jffs2 = "-e 0x40000 -p"
+EXTRA_IMAGECMD_jffs2 = "-e 0x40000 -p ; echo '${IMAGE_NAME} ${IMAGE_NAME}.rootfs.jffs2 - root' >> ${DEPLOY_DIR_IMAGE}/reflash.ctl"
diff --git a/conf/machine/h3900.conf b/conf/machine/h3900.conf
index 323aa8f061..32b6a8ea8a 100644
--- a/conf/machine/h3900.conf
+++ b/conf/machine/h3900.conf
@@ -6,7 +6,7 @@
# Hardware-based properties
#
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te ipaqpxa"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te "
require conf/machine/include/tune-xscale.conf
diff --git a/conf/machine/h4000.conf b/conf/machine/h4000.conf
index 3eaa96b327..61d473929a 100644
--- a/conf/machine/h4000.conf
+++ b/conf/machine/h4000.conf
@@ -6,7 +6,7 @@
# Hardware-based properties
#
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te ipaqpxa"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te "
require conf/machine/include/tune-xscale.conf
@@ -22,10 +22,16 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
PCMCIA_MANAGER = "pcmciautils"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
+MACHINE_EXTRA_RDEPENDS = "tiinit acx-firmware"
+MACHINE_EXTRA_RRECOMMENDS = "kernel-module-snd-h4000-audio \
+ kernel-module-i2c-pxa"
+
#
# 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-h4000_audio = "snd-h4000_audio"
module_autoload_g_ether = "g_ether"
SERIAL_CONSOLE = "115200 ttyS0 vt100"
diff --git a/conf/machine/h5000.conf b/conf/machine/h5000.conf
index c0c9b2fefe..8645df3555 100644
--- a/conf/machine/h5000.conf
+++ b/conf/machine/h5000.conf
@@ -6,7 +6,7 @@
# Hardware-based properties
#
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te ipaqpxa h5xxx"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te h5xxx"
require conf/machine/include/tune-xscale.conf
@@ -20,11 +20,11 @@ MACHINE_FEATURES = "kernel26 touchscreen apm alsa pcmcia bluetooth irda wifi usb
#
PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
-EXTRA_IMAGECMD_h5000_jffs2 = "-e 0x40000 -p"
+EXTRA_IMAGECMD_jffs2 = "-e 0x40000 -p ; echo '${IMAGE_NAME} ${IMAGE_NAME}.rootfs.jffs2 - root' >> ${DEPLOY_DIR_IMAGE}/reflash.ctl"
MACHINE_EXTRA_RDEPENDS = "kernel ipaq-boot-params"
-MACHINE_EXTRA_RRECOMMENDS = " kernel-module-h5400_lcd \
- kernel-module-h5400_battery"
+MACHINE_EXTRA_RRECOMMENDS = " kernel-module-h5400-lcd \
+ kernel-module-h5400-battery"
#
# Modules autoload and other boot properties
diff --git a/conf/machine/htcblueangel.conf b/conf/machine/htcblueangel.conf
index a61656ab5c..77bb0b5639 100644
--- a/conf/machine/htcblueangel.conf
+++ b/conf/machine/htcblueangel.conf
@@ -6,7 +6,7 @@
# Hardware-based properties
#
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te ipaqpxa"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te "
require conf/machine/include/tune-xscale.conf
@@ -19,17 +19,20 @@ MACHINE_FEATURES = "kernel26 touchscreen apm alsa irda bluetooth wifi usbgadget
# Software/packages selection
#
PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
+PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.19-hh8"
PCMCIA_MANAGER = "pcmciautils"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
MACHINE_EXTRA_RDEPENDS = "acx-firmware"
-MACHINE_EXTRA_RRECOMMENDS = "blueangel_pcmcia \
- blueangel_audio \
- blueangel_rom \
- blueangel_kp
- blueangel_battery \
- blueangel_leds \
- "
+MACHINE_EXTRA_RRECOMMENDS = "kernel-module-blueangel_pcmcia \
+ kernel-module-blueangel_audio \
+ kernel-module-blueangel_rom \
+ kernel-module-blueangel_kp \
+ kernel-module-blueangel_battery \
+ kernel-module-blueangel_leds \
+ kernel-module-himalaya_tsc2200 \
+ kernel-module-himalaya_ts3 \
+ kernel-module-asic3-mmc"
#
# Modules autoload and other boot properties
#
diff --git a/conf/machine/htchimalaya.conf b/conf/machine/htchimalaya.conf
new file mode 100644
index 0000000000..d75a573f65
--- /dev/null
+++ b/conf/machine/htchimalaya.conf
@@ -0,0 +1,34 @@
+#@TYPE: Machine
+#@NAME: HTC Himalaya
+#@DESCRIPTION: Machine configuration for the HTC Himalaya device
+
+#
+# Hardware-based properties
+#
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te "
+
+require conf/machine/include/tune-xscale.conf
+
+ROOT_FLASH_SIZE = "32"
+VOLATILE_STORAGE_SIZE = "64"
+GUI_MACHINE_CLASS = "smallscreen"
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa irda usbgadget screen"
+
+#
+# Software/packages selection
+#
+PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
+PCMCIA_MANAGER = "pcmciautils"
+PREFERRED_PROVIDER_xserver = "xserver-kdrive"
+
+#
+# Modules autoload and other boot properties
+#
+module_autoload_snd-pcm-oss = "snd-pcm-oss"
+
+
+SERIAL_CONSOLE = "115200 ttyS0 vt100"
+USE_VT = "0"
+
+require conf/machine/include/LAB-settings.conf
diff --git a/conf/machine/htctornado.conf b/conf/machine/htctornado.conf
new file mode 100644
index 0000000000..ca77ec9c04
--- /dev/null
+++ b/conf/machine/htctornado.conf
@@ -0,0 +1,28 @@
+#-----------------------------------------------------------------------------
+#@TYPE: Machine
+#@NAME: HTC Typhoon, HTC Tornado, HTC Hurricane
+#@DESCRIPTION: Machine configuration for the HTC Typhoon/Tornado/Hurricane GSM phones
+#-----------------------------------------------------------------------------
+
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4t armv5te"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-tornado-omap2"
+
+MACHINE_FEATURES = "kernel26 apm alsa bluetooth usbgadget"
+
+MACHINE_EXTRA_RDEPENDS = "alsa-state"
+
+# package gta01 specific modules
+MACHINE_EXTRA_RRECOMMENDS = "\
+ kernel-module-ext2 \
+ alsa-state"
+
+# used by some images
+ROOT_FLASH_SIZE = "30"
+
+# extra jffs2 tweaks, not yet used
+EXTRA_IMAGECMD_jffs2 = "--eraseblock=0x4000 -n"
+
+# cpu tuning
+include conf/machine/include/tune-arm926ejs.conf
diff --git a/conf/machine/htcuniversal.conf b/conf/machine/htcuniversal.conf
index 0f8ed6ed82..980fc0e2eb 100644
--- a/conf/machine/htcuniversal.conf
+++ b/conf/machine/htcuniversal.conf
@@ -6,7 +6,7 @@
# Hardware-based properties
#
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "ipaqpxa armv4t armv5te iwmmxt"
+PACKAGE_EXTRA_ARCHS = " armv4t armv5te iwmmxt"
# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
require conf/machine/include/tune-xscale.conf
@@ -15,7 +15,7 @@ require conf/machine/include/tune-xscale.conf
#require conf/machine/include/tune-iwmmxt.conf
GUI_MACHINE_CLASS = "bigscreen"
-MACHINE_FEATURES = "kernel26 apm alsa irda usbgadget usbhost keyboard touchscreen screen wifi bluetooth"
+MACHINE_FEATURES = "kernel26 apm alsa irda usbgadget usbhost keyboard touchscreen screen wifi bluetooth phone"
#
# Software/packages selection
@@ -31,17 +31,24 @@ MACHINE_EXTRA_RRECOMMENDS = " kernel-module-nls-cp437 \
kernel-module-af-key \
kernel-module-bsd-comp \
kernel-module-i2c-pxa \
- kernel-module-htcuniversal-power \
kernel-module-snd-htcuniversal-audio \
kernel-module-htcuniversal-acx \
kernel-module-acx \
+ kernel-module-i2c-algo-bit \
+ kernel-module-rtc-sa1100 \
+ kernel-module-rtc-dev \
+ kernel-module-rtc-proc \
+ kernel-module-rtc-sysfs \
"
#
# Modules autoload and other boot properties
#
-module_autoload_acx = "acx"
+#module_autoload_acx = "acx"
module_autoload_htcuniversal_acx = "htcuniversal_acx"
+module_autoload_snd-pcm-oss = "snd-pcm-oss"
+module_autoload_snd-mixer-oss = "snd-mixer-oss"
+module_autoload_snd-htcuniversal_audio = "snd-htcuniversal_audio"
#FIXME: this should be controlled by a userspace utility later.
module_autoload_g_ether = "g_ether"
diff --git a/conf/machine/hx2000.conf b/conf/machine/hx2000.conf
index 48a4bbf3e5..ffffc3a569 100644
--- a/conf/machine/hx2000.conf
+++ b/conf/machine/hx2000.conf
@@ -3,7 +3,7 @@
#@DESCRIPTION: Machine configuration for the hx2000 iPAQs with a pxa27x CPU
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt ipaqpxa ipaq-pxa270"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt "
PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
@@ -22,11 +22,6 @@ MODUTILS = "26"
MACHINE_FEATURES = "kernel26 touchscreen apm alsa pcmcia bluetooth irda wifi usbgadget screen"
PCMCIA_MANAGER = "pcmciautils"
-BOOTMODULES_RRECOMMENDS = "${@linux_module_packages('${PXA270_MODULES}', d)}"
-BOOTSTRAP_EXTRA_RRECOMMENDS += " ${BOOTMODULES_RRECOMMENDS}"
-BOOTSTRAP_EXTRA_RDEPENDS = "tiinit acx-firmware"
-
-PXA270_MODULES = "nls_cp437 nls_iso8859-1 nls_utf8 af_key"
SERIAL_CONSOLE = "115200 ttyS0"
diff --git a/conf/machine/hx4700.conf b/conf/machine/hx4700.conf
index 53903f7982..52eb09b933 100644
--- a/conf/machine/hx4700.conf
+++ b/conf/machine/hx4700.conf
@@ -6,7 +6,7 @@
# Hardware-based properties
#
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt ipaqpxa ipaq-pxa270"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt "
# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
require conf/machine/include/tune-xscale.conf
@@ -35,14 +35,17 @@ MACHINE_EXTRA_RRECOMMENDS = "kernel-module-nls-cp437 \
kernel-module-nls-utf8 \
kernel-module-af-key \
kernel-module-i2c-pxa \
- kernel-module-hx4700-voltage \
+ kernel-module-pxa27x-voltage \
+ kernel-module-pxa27x-voltage-max158xx \
kernel-module-hx4700-acx \
+ kernel-module-hx4700-bt \
kernel-module-snd-hx4700-audio"
-
+#write out a reflash.ctl with the appriate entries for the rootfs, the ones for the kernel should already be there
EXTRA_IMAGECMD_jffs2 = "; sumtool -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs-summary.jffs2 \
- -e 256KiB -p"
+ -e 256KiB -p ; echo '${IMAGE_NAME} ${IMAGE_NAME}.rootfs.jffs2 - root' >> ${DEPLOY_DIR_IMAGE}/reflash.ctl"
+
#
# Modules autoload and other boot properties
diff --git a/conf/machine/include/LAB-settings.conf b/conf/machine/include/LAB-settings.conf
index 576846fbdf..d0100c9968 100644
--- a/conf/machine/include/LAB-settings.conf
+++ b/conf/machine/include/LAB-settings.conf
@@ -5,4 +5,4 @@
#
# LAB can only resolve relative symlinks
-ROOTFS_POSTPROCESS_COMMAND += "make_zimage_symlink_relative; "
+#ROOTFS_POSTPROCESS_COMMAND += "make_zimage_symlink_relative; "
diff --git a/conf/machine/include/collie-2.4.conf b/conf/machine/include/collie-2.4.conf
index 0412ea359a..eed8de9ab9 100644
--- a/conf/machine/include/collie-2.4.conf
+++ b/conf/machine/include/collie-2.4.conf
@@ -1,4 +1,8 @@
-PREFERRED_PROVIDER_virtual/kernel = "collie-kernels-2.4-embedix"
+PREFERRED_PROVIDER_virtual/kernel = "openzaurus-sa"
+COLLIE_MEMORY_SIZE ?= "64"
+
+# workaround for bug 1877
+PREFERRED_PROVIDER_hostap-modules = "hostap-modules"
SERIAL_CONSOLE = "115200 ttyS0"
#
diff --git a/conf/machine/include/collie-2.6.conf b/conf/machine/include/collie-2.6.conf
index eab879368c..f22ffce6c2 100644
--- a/conf/machine/include/collie-2.6.conf
+++ b/conf/machine/include/collie-2.6.conf
@@ -1,4 +1,6 @@
PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
SERIAL_CONSOLE = "115200 ttySA0"
-MACHINE_FEATURES = "kernel26 apm pcmcia screen irda usbgadget keyboard touchscreen"
+MACHINE_FEATURES = "kernel26 apm pcmcia screen irda usbgadget keyboard touchscreen wifi"
+
+MACHINE_EXTRA_RDEPENDS = "kernel-modules"
diff --git a/conf/machine/include/ixp4xx.conf b/conf/machine/include/ixp4xx.conf
index 0aba653201..6f0d5b20eb 100644
--- a/conf/machine/include/ixp4xx.conf
+++ b/conf/machine/include/ixp4xx.conf
@@ -2,151 +2,16 @@
#@NAME: ixp4xx
#@DESCRIPTION: genric machine configuration for ixp4xx platforms
-#-------------------------------------------------------------------------------
-# INPUTS
-#-------------------------------------------------------------------------------
-# conf/${DISTRO}.conf is included after this file and should be used to modify
-# variables identified as 'INPUTS' to the required values for the DISTRO, this
-# will cause the board specific settings (which depend for the most part on the
-# exact CPU used) to be set correctly within this file. The results are the
-# variables identifies here as 'OUTPUTS'
-#
-#variable = "default"
-# <possible values>
-# description
-
-ARCH_BYTE_SEX = "le"
-# "be" "le"
-# The memory byte sex and (on correctly implemented hardware - the IXP4XX is
-# correct) the byte sex of the buses within the system. 'be' (big-endian)
-# means that the first byte is the most significant byte on a bus, 'le'
-# (little-endian) means that the first byte is the least significant byte.
-
-ARM_INSTRUCTION_SET = "arm"
-# "arm" "thumb"
-# The instruction set the compiler should use when generating application
-# code. The kernel is always compiled with arm code at present. arm code
-# is the original 32 bit ARM instruction set, thumb code is the 16 bit
-# encoded RISC sub-set. Thumb code is smaller (maybe 70% of the ARM size)
-# but requires more instructions (140% for 70% smaller code) so may be
-# slower.
-
-THUMB_INTERWORK = "yes"
-# "yes" "no"
-# Whether to compile with code to allow interworking between the two
-# instruction sets. This allows thumb code to be executed on a primarily
-# arm system and vice versa. It is strongly recommended that DISTROs not
-# turn this off - the actual cost is very small.
-
-DISTRO_BASE = ""
-# "" ":<base>"
-# If given this must be the name of a 'distro' to add to the bitbake OVERRIDES
-# after ${DISTRO}, this allows different distros to share a common base of
-# overrides. The value given must include a leading ':' or chaos will result.
-
-IXP4XX_SUFFIX = "${MACHINE_ARCH}"
-# <string>
-# Kernel suffix - 'ixp4xxbe' or 'ixp4xxle' for a truely generic image, controls
-# the suffix on the name of the generated zImage, override in the DISTRO
-# configuration if patches or defconfig are changed for the DISTRO.
-
-#-------------------------------------------------------------------------------
-# OUTPUTS
-#-------------------------------------------------------------------------------
-
-#OVERRIDES
-# The standard ':' separated list of overrides used by bitbake - see the
-# basic setting in bitbake.conf. This list is based on that used for the
-# standard setting however :<base>, :thumb and :thumb-interwork will be
-# inserted at appropriate points if a base distro, default use of thumb or
-# arm/thumb interworking are enabled in the inputs.
-OVERRIDE_THUMB = "${@['', ':thumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}"
-OVERRIDE_INTERWORK = "${@['', ':thumb-interwork'][bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes']}"
-OVERRIDES = "local:${MACHINE}:ixp4xx:${DISTRO}${DISTRO_BASE}:${TARGET_OS}:${TARGET_ARCH}${OVERRIDE_THUMB}${OVERRIDE_INTERWORK}:build-${BUILD_OS}:fail-fast"
-
-# TARGET_CC_ARCH
-# TARGET_CC_KERNEL_ARCH
-# TARGET_LD_ARCH
-# TARGET_LD_KERNEL_ARCH
-# Compiler and linker options for application code and kernel code. These
-# options ensure that the compiler has the correct settings for the selected
-# instruction set and interworking.
-ARM_INTERWORK_M_OPT = "${@['-mno-thumb-interwork', '-mthumb-interwork'][bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes']}"
-ARM_THUMB_M_OPT = "${@['-mno-thumb', '-mthumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}"
-#
-TARGET_CC_ARCH = "-march=armv5te -mtune=xscale ${ARM_INTERWORK_M_OPT} ${ARM_THUMB_M_OPT}"
-TARGET_CC_KERNEL_ARCH = "-march=armv5te -mtune=xscale -mno-thumb-interwork -mno-thumb"
-TARGET_LD_ARCH = ""
-TARGET_LD_KERNEL_ARCH = ""
-
-# FULL_OPTIMIZATION
-# Optimization settings. Os works fine and is significantly better than O2.
-# The other settings are somewhat arbitrary. The optimisations chosen here
-# include the ones which 'break' symbolic debugging (because the compiler does
-# not include enough information to allow the debugger to know where given
-# values are.) The -fno options are an attempt to cancel explicit use of space
-# consuming options found in some packages (this isn't a complete list, this is
-# just the ones which package writers seem to know about and abuse).
-FULL_OPTIMIZATION = "-Os -fomit-frame-pointer -frename-registers \
- -fno-unroll-loops -fno-inline-functions \
- -fweb -funit-at-a-time"
-
-# TARGET_ARCH
-# The correct setting for the system endianness (ARCH_BYTE_SEX). This will
-# be arm (le) or armeb (be) - it is difficult to be more precise in the
-# setting because of the large number of ways it is used within OpenEmbedded.
-TARGET_ARCH = "${@['armeb', 'arm'][bb.data.getVar('ARCH_BYTE_SEX', d, 1) == 'le']}"
-
-# TARGET_PACKAGE_ARCH [not used]
-# The correct setting for the generated packages. This corresponds to the
-# -march flag passed to the compiler because that limits the architectures
-# on which the generated code will run.
-BYTE_SEX_CHAR = "${@['b', 'l'][bb.data.getVar('ARCH_BYTE_SEX', d, 1) == 'le']}"
-TARGET_PACKAGE_ARCH_BASE = "${@['armv5te', 'thumbv5t'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}"
-TARGET_PACKAGE_ARCH = "${TARGET_PACKAGE_ARCH_BASE}${BYTE_SEX_CHAR}"
+MACHINE_FEATURES = "kernel26 usbhost ext2"
-# MACHINE_ARCH
-# The correct setting for packages which are specific to the machine, this
-# defaults to ${MACHINE} in bitbake.conf, however it is set to ixp4xx here
-# because everything built here is no more specific than that.
-MACHINE_ARCH = "ixp4xx${ARCH_BYTE_SEX}"
+ROOT_FLASH_SIZE ?= "12"
-# PACKAGE_EXTRA_ARCHS
-# The full list of package architectures which should run on the system.
-# This takes into account both the board level issues and the INPUTS set
-# by the distro. The arm list is derived from the architecture settings
-# known to gcc, the thumb list is then derived from that (only the 't'
-# architectures of course).
-#[not used]: TARGET_ARCH is handled below because it is also currently
-# used for thumb packages.
-#ARM_ARCHITECTURES = "${TARGET_ARCH} armv2${BYTE_SEX_CHAR} armv2a${BYTE_SEX_CHAR} armv3${BYTE_SEX_CHAR} armv3m${BYTE_SEX_CHAR} armv4${BYTE_SEX_CHAR} armv4t${BYTE_SEX_CHAR} armv5${BYTE_SEX_CHAR} armv5t${BYTE_SEX_CHAR} armv5e${BYTE_SEX_CHAR} armv5te${BYTE_SEX_CHAR} xscale${BYTE_SEX_CHAR}"
-ARM_ARCHITECTURES = "armv2${BYTE_SEX_CHAR} armv2a${BYTE_SEX_CHAR} armv3${BYTE_SEX_CHAR} armv3m${BYTE_SEX_CHAR} armv4${BYTE_SEX_CHAR} armv4t${BYTE_SEX_CHAR} armv5${BYTE_SEX_CHAR} armv5t${BYTE_SEX_CHAR} armv5e${BYTE_SEX_CHAR} armv5te${BYTE_SEX_CHAR} xscale${BYTE_SEX_CHAR}"
-THUMB_ARCHITECTURES = "thumbe${BYTE_SEX_CHAR} thumbv4t${BYTE_SEX_CHAR} thumbv5t${BYTE_SEX_CHAR}"
+EXTRA_IMAGECMD_jffs2 = "--pad --eraseblock=0x20000 -n"
-# NOTE: this list contains just the things which rootfs_ipk.bbclass does
-# not add, rootfs_ipk.bbclass evaluates:
-#
-# ipkgarchs="all any noarch ${TARGET_ARCH} ${PACKAGE_EXTRA_ARCHS} ${MACHINE}"
-#
-# This is a priority ordered list - most desireable architecture at the end,
-# so put <ARM_INSTRUCTION_SET>_ARCHITECTURES at the end and, if
-# THUMB_INTERWORK precede this with the other architectures.
-PACKAGE_EXTRA_ARCHS = "ixp4xx ${MACHINE} \
- ${@(lambda arch_thumb, arch_arm, is_arm, interwork: \
- (interwork and (is_arm and arch_thumb or arch_arm) + ' ' or '') \
- + '${TARGET_ARCH} ' + (is_arm and arch_arm or arch_thumb)) \
- (bb.data.getVar('THUMB_ARCHITECTURES', d, 1), \
- bb.data.getVar('ARM_ARCHITECTURES', d, 1), \
- bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) != 'thumb', \
- bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes')} \
- ${MACHINE_ARCH} ${MACHINE}${ARCH_BYTE_SEX}"
+PREFERRED_PROVIDER_virtual/kernel ?= "ixp4xx-kernel"
-# IPKG_ARCH_LIST [not used]
-# This is used to override the ipkgarchs settings in rootfs_ipk.bbclass, allowing
-# the removal of the raw "${MACHINE}" from the end of the list. ${MACHINE} and
-# ixp4xx are included at the start (lower priority) as the non-byte-sex specific
-# versions.
-IPKG_ARCH_LIST = "all any noarch ixp4xx ${MACHINE} ${PACKAGE_EXTRA_ARCHS}"
+require conf/machine/include/tune-xscale.conf
+require conf/machine/include/tune-thumb.conf
#-------------------------------------------------------------------------------
# Board defaults
diff --git a/conf/machine/include/lsppc.conf b/conf/machine/include/lsppc.conf
new file mode 100644
index 0000000000..064db79b29
--- /dev/null
+++ b/conf/machine/include/lsppc.conf
@@ -0,0 +1,26 @@
+#@TYPE: Machine configuration
+#@Name: Buffalo PPC Linkstations
+#@DESCRIPTION: Generic Machine configuration for ppc based linkstations
+
+
+TARGET_ARCH = "powerpc"
+PACKAGE_EXTRA_ARCHS = "ppc ppc603e"
+MACHINE_FEATURES = "kernel26 usbhost ext2 pci uboot"
+TARGET_FPU = "hard"
+
+USE_DEVFS = "0"
+
+BOOTSTRAP_EXTRA_RDEPENDS = "udev module-init-tools kernel-modules"
+PREFERRED_PROVIDER_virtual/kernel = "linux-linkstationppc"
+
+#don't try to access tty1
+USE_VT = "0"
+
+HOTPLUG = "udev"
+udevdir = "/dev"
+
+IMAGE_DEVICE_TABLES = "files/device_table-slugos.txt"
+IMAGE_FSTYPES = "tar.gz"
+
+#tune for the MPC5200B cpu
+require conf/machine/include/tune-ppc603e.conf
diff --git a/conf/machine/include/qemu.conf b/conf/machine/include/qemu.conf
index b314fa9bea..26b78a6a9d 100644
--- a/conf/machine/include/qemu.conf
+++ b/conf/machine/include/qemu.conf
@@ -7,4 +7,5 @@ MACHINE_FEATURES = "kernel26 apm alsa pcmcia bluetooth irda usbgadget screen"
IMAGE_FSTYPES ?= "tar.bz2 ext2"
-ROOT_FLASH_SIZE = "100"
+ROOT_FLASH_SIZE = "200"
+IMAGE_ROOTFS_SIZE_ext2 = "200000"
diff --git a/conf/machine/include/simpad-2.4.conf b/conf/machine/include/simpad-2.4.conf
index 3d9c77539f..06f12f532f 100644
--- a/conf/machine/include/simpad-2.4.conf
+++ b/conf/machine/include/simpad-2.4.conf
@@ -1,7 +1,14 @@
PREFERRED_PROVIDER_virtual/kernel = "opensimpad-64+0"
+MACHINE_FEATURES_append = "kernel24"
+MACHINE_EXTRA_RRECOMMENDS = " kernel-module-sa1100-ir \
+ kernel-module-sa1100usb-core kernel-module-usb-eth \
+ kernel-module-pcnet-cs kernel-module-8390 "
+
+USE_DEVFS = "1"
+
+PREFERRED_PROVIDER_hostap-modules = "hostap-modules"
+
# Later versions are broken on kernel 2.4
PREFERRED_VERSION_orinoco-modules = "0.13e"
-BOOTSTRAP_EXTRA_RDEPENDS += "hostap-modules \
- pcmcia-cs apm hostap-utils wpa-supplicant-nossl"
diff --git a/conf/machine/include/simpad-2.6.conf b/conf/machine/include/simpad-2.6.conf
index 45ddac1bec..e485c7bf2a 100644
--- a/conf/machine/include/simpad-2.6.conf
+++ b/conf/machine/include/simpad-2.6.conf
@@ -1,4 +1,5 @@
-PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod-2.6:module-init-tools-cross"
+PREFERRED_PROVIDER_virtual/kernel = "linux"
-BOOTSTRAP_EXTRA_RDEPENDS += "udev module-init-tools"
+PCMCIA_MANAGER ?= "pcmciautils"
+
+MACHINE_FEATURES_append = "kernel26"
diff --git a/conf/machine/include/tune-ppc440.conf b/conf/machine/include/tune-ppc440.conf
new file mode 100644
index 0000000000..dff8dce684
--- /dev/null
+++ b/conf/machine/include/tune-ppc440.conf
@@ -0,0 +1,2 @@
+TARGET_CC_ARCH = "-mcpu=440"
+PACKAGE_ARCH = "ppc440"
diff --git a/conf/machine/include/tune-thumb.conf b/conf/machine/include/tune-thumb.conf
index 48003571f1..a25cb5320c 100644
--- a/conf/machine/include/tune-thumb.conf
+++ b/conf/machine/include/tune-thumb.conf
@@ -9,7 +9,7 @@ ARM_INSTRUCTION_SET ?= "arm"
# but requires more instructions (140% for 70% smaller code) so may be
# slower.
-THUMB_INTERWORK ?= "no"
+THUMB_INTERWORK ?= "yes"
# "yes" "no"
# Whether to compile with code to allow interworking between the two
# instruction sets. This allows thumb code to be executed on a primarily
@@ -18,15 +18,15 @@ THUMB_INTERWORK ?= "no"
OVERRIDE_THUMB = "${@['', ':thumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}"
OVERRIDE_INTERWORK = "${@['', ':thumb-interwork'][bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes']}"
-OVERRIDES += "${OVERRIDE_THUMB}${OVERRIDE_INTERWORK}"
+OVERRIDES .= "${OVERRIDE_THUMB}${OVERRIDE_INTERWORK}"
# Compiler and linker options for application code and kernel code. These
# options ensure that the compiler has the correct settings for the selected
# instruction set and interworking.
-ARM_INTERWORK_M_OPT = "${@['', '-mthumb-interwork'][bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes']}"
-ARM_THUMB_M_OPT = "${@['', '-mthumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}"
+ARM_INTERWORK_M_OPT = "${@['-mno-thumb-interwork', '-mthumb-interwork'][bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes']}"
+ARM_THUMB_M_OPT = "${@['-mno-thumb', '-mthumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}"
#
TARGET_CC_ARCH += "${ARM_INTERWORK_M_OPT} ${ARM_THUMB_M_OPT}"
-TARGET_CC_KERNEL_ARCH += "-mno-thumb"
+TARGET_CC_KERNEL_ARCH += "-mno-thumb-interwork -mno-thumb"
diff --git a/conf/machine/include/tune-xscale.conf b/conf/machine/include/tune-xscale.conf
index 0b98f09fc8..1d212946e4 100644
--- a/conf/machine/include/tune-xscale.conf
+++ b/conf/machine/include/tune-xscale.conf
@@ -1,3 +1,3 @@
TARGET_CC_ARCH = "-march=armv5te -mtune=xscale"
-PACKAGE_ARCH = "armv5te"
-
+TARGET_CC_KERNEL_ARCH = "-march=armv5te -mtune=xscale"
+PACKAGE_ARCH = "${@['armv5teb', 'armv5te'][bb.data.getVar('SITEINFO_ENDIANESS', d, 1) == 'le']}"
diff --git a/conf/machine/include/zaurus-2.6.conf b/conf/machine/include/zaurus-2.6.conf
index 45d8891b44..98f8cbdded 100644
--- a/conf/machine/include/zaurus-2.6.conf
+++ b/conf/machine/include/zaurus-2.6.conf
@@ -6,9 +6,12 @@ PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te"
MACHINE_KERNEL_VERSION = "2.6"
-EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x4000 --pad --faketime -n"
+ERASEBLOCKSIZE = "0x4000"
+ERASEBLOCKSIZE_akita = "0x20000"
-IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2.bin ${EXTRA_IMAGECMD}"
+EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=${ERASEBLOCKSIZE} --pad --faketime -n"
+
+IMAGE_CMD_jffs2 = "mkfs.jffs2 -x lzo --root=${IMAGE_ROOTFS} --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2.bin ${EXTRA_IMAGECMD}"
EXTRA_IMAGEDEPENDS += "zaurus-updater"
@@ -35,6 +38,5 @@ MACHINE_EXTRA_RRECOMMENDS_akita = "kernel-module-snd-soc-spitz"
MACHINE_EXTRA_RRECOMMENDS_spitz = "kernel-module-snd-soc-spitz"
MACHINE_EXTRA_RRECOMMENDS_poodle = "kernel-module-snd-soc-poodle"
-MACHINE_TASK_PROVIDER = "task-base"
GUI_MACHINE_CLASS = "bigscreen"
GUI_MACHINE_CLASS_poodle = "smallscreen"
diff --git a/conf/machine/include/zaurus-clamshell.conf b/conf/machine/include/zaurus-clamshell.conf
index 83d17aeb78..f66502eff1 100644
--- a/conf/machine/include/zaurus-clamshell.conf
+++ b/conf/machine/include/zaurus-clamshell.conf
@@ -1,14 +1,13 @@
EXTRA_IMAGEDEPENDS += "sharp-flash-header-c700"
-IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime \
- --output=${T}/${IMAGE_NAME}.rootfs.jffs2 ${EXTRA_IMAGECMD}; \
- cat ${STAGING_LIBDIR}/sharp-flash-header/header-c700.bin \
- ${T}/${IMAGE_NAME}.rootfs.jffs2 > ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.img"
-
-# add a summary to the jffs2 file to make it mount a lot faster
-EXTRA_IMAGECMD_jffs2 += "&& sumtool -i ${T}/${IMAGE_NAME}.rootfs.jffs2 \
- -o ${T}/${IMAGE_NAME}.rootfs.jffs2.summary \
- --eraseblock=0x4000 -l -p"
-
-IMAGE_CMD_jffs2 += "; cat ${STAGING_LIBDIR}/sharp-flash-header/header-c700.bin \
- ${T}/${IMAGE_NAME}.rootfs.jffs2.summary > ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.summary.img"
+IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime -m favourlzo \
+ --output=${T}/${IMAGE_NAME}.rootfs.jffs2 --pad --little-endian --eraseblock=${ERASEBLOCKSIZE} -n \
+ && sumtool -i ${T}/${IMAGE_NAME}.rootfs.jffs2 \
+ -o ${T}/${IMAGE_NAME}.rootfs.jffs2.summary \
+ --eraseblock=${ERASEBLOCKSIZE} -l -p; \
+ cat ${STAGING_LIBDIR}/sharp-flash-header/header-c700.bin \
+ ${T}/${IMAGE_NAME}.rootfs.jffs2 > ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2; \
+ rm ${T}/${IMAGE_NAME}.rootfs.jffs2; \
+ cat ${STAGING_LIBDIR}/sharp-flash-header/header-c700.bin \
+ ${T}/${IMAGE_NAME}.rootfs.jffs2.summary > ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.summary.jffs2; \
+ rm ${T}/${IMAGE_NAME}.rootfs.jffs2.summary;"
diff --git a/conf/machine/ixp4xx.conf b/conf/machine/ixp4xx.conf
index 6d7fd11a05..0a1e54c324 100644
--- a/conf/machine/ixp4xx.conf
+++ b/conf/machine/ixp4xx.conf
@@ -2,12 +2,4 @@
#@NAME: Generic IXP4XX kernel
#@DESCRIPTION: Machine configuration for a generic ixp4xx board
-MACHINE_FEATURES = "kernel26 usbhost ext2"
-
-include conf/machine/include/ixp4xx.conf
-
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te ixp4xx${ARCH_BYTE_SEX}"
-
-EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 --faketime -n"
-
-PREFERRED_PROVIDER_virtual/kernel ?= "ixp4xx-kernel"
+MACHINE_CHECK := ${@bb.fatal('You must set MACHINE to ixp4xxle or ixp4xxbe.')}
diff --git a/conf/machine/ixp4xxbe.conf b/conf/machine/ixp4xxbe.conf
index 700f7995fb..f208852d3a 100644
--- a/conf/machine/ixp4xxbe.conf
+++ b/conf/machine/ixp4xxbe.conf
@@ -1,15 +1,11 @@
#@TYPE: Machine
#@NAME: Generic IXP4XX kernel
-#@DESCRIPTION: Machine configuration for a generic ixp4xx board in bigendian mode
+#@DESCRIPTION: Machine configuration for a generic ixp4xx board in big-endian mode
-MACHINE_FEATURES = "kernel26 usbhost ext2"
+TARGET_ARCH = "armeb"
-ARCH_BYTE_SEX = "be"
-include conf/machine/include/ixp4xx.conf
+PACKAGE_EXTRA_ARCHS = "armv4b armv4tb armv5eb armv5teb"
-PACKAGE_EXTRA_ARCHS = "armv4eb armv4teb armv5eb armv5teb ixp4xxeb"
-
-EXTRA_IMAGECMD_jffs2 = "--pad --big-endian --eraseblock=0x20000 --faketime -n"
-
-PREFERRED_PROVIDER_virtual/kernel ?= "ixp4xx-kernel"
+require conf/machine/include/ixp4xx.conf
+EXTRA_IMAGECMD_jffs2 += "--big-endian"
diff --git a/conf/machine/ixp4xxle.conf b/conf/machine/ixp4xxle.conf
index 347c7ba3fb..d39fa1f603 100644
--- a/conf/machine/ixp4xxle.conf
+++ b/conf/machine/ixp4xxle.conf
@@ -2,14 +2,10 @@
#@NAME: Generic IXP4XX kernel
#@DESCRIPTION: Machine configuration for a generic ixp4xx board in little-endian mode
-MACHINE_FEATURES = "kernel26 usbhost ext2"
+TARGET_ARCH = "arm"
-ARCH_BYTE_SEX = "le"
-include conf/machine/include/ixp4xx.conf
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te ixp4xxle"
-
-EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 --faketime -n"
-
-PREFERRED_PROVIDER_virtual/kernel ?= "ixp4xx-kernel"
+require conf/machine/include/ixp4xx.conf
+EXTRA_IMAGECMD_jffs2 += " --little-endian"
diff --git a/conf/machine/jornada56x.conf b/conf/machine/jornada56x.conf
index d6b3c70454..385af0864a 100644
--- a/conf/machine/jornada56x.conf
+++ b/conf/machine/jornada56x.conf
@@ -12,4 +12,4 @@ EXTRA_IMAGECMD_jornada56x_jffs2 = "-e 0x40000 -p"
SERIAL_CONSOLE = "115200 ttySA0"
-include conf/machine/include/tune-strongarm.conf
+require conf/machine/include/tune-strongarm.conf
diff --git a/conf/machine/jornada6xx.conf b/conf/machine/jornada6xx.conf
index aa6631a524..40d3848df7 100644
--- a/conf/machine/jornada6xx.conf
+++ b/conf/machine/jornada6xx.conf
@@ -4,10 +4,9 @@
TARGET_ARCH = "sh3"
-include conf/machine/include/tune-sh3.conf
+require conf/machine/include/tune-sh3.conf
PREFERRED_PROVIDER_virtual/kernel = "linux-jlime-jornada6xx"
PCMCIA_MANAGER = "pcmciautils"
MACHINE_FEATURES = "kernel26 pcmcia irda keyboard touchscreen screen"
-MACHINE_TASK_PROVIDER = "task-base"
diff --git a/conf/machine/jornada7xx.conf b/conf/machine/jornada7xx.conf
index 811ea6a3e8..f08fb6f253 100644
--- a/conf/machine/jornada7xx.conf
+++ b/conf/machine/jornada7xx.conf
@@ -4,10 +4,9 @@
TARGET_ARCH = "arm"
-include conf/machine/include/tune-strongarm.conf
+require conf/machine/include/tune-strongarm.conf
PREFERRED_PROVIDER_virtual/kernel = "linux-jlime-jornada7xx"
PCMCIA_MANAGER = "pcmciautils"
MACHINE_FEATURES = "kernel26 apm alsa pcmcia irda keyboard touchscreen screen"
MACHINE_EXTRA_RDEPENDS = "kernel-modules"
-MACHINE_TASK_PROVIDER = "task-base"
diff --git a/conf/machine/lite5200.conf b/conf/machine/lite5200.conf
index 3cbc44485d..f47e773717 100644
--- a/conf/machine/lite5200.conf
+++ b/conf/machine/lite5200.conf
@@ -8,4 +8,4 @@ TARGET_PREFIX = "powerpc-603e-linux-gnu-"
IMAGE_FSTYPES = "jffs2 tar.bz2"
-include conf/machine/include/tune-ppc603e.conf
+require conf/machine/include/tune-ppc603e.conf
diff --git a/conf/machine/logicpd-pxa270.conf b/conf/machine/logicpd-pxa270.conf
index 8fd58bb5ed..f4dd576653 100644
--- a/conf/machine/logicpd-pxa270.conf
+++ b/conf/machine/logicpd-pxa270.conf
@@ -3,13 +3,13 @@
#@DESCRIPTION: Machine configuration for LogicPD PXA270 Zoom Development Platform
#OLDEST_KERNEL = "2.6.17-rc5"
TARGET_ARCH = "arm"
-PREFERRED_VERSION_logicpd-pxa270 = "2.6.17-rc5"
+PREFERRED_VERSION_logicpd-pxa270 = "2.6.19.2"
GUI_MACHINE_CLASS = "smallscreen"
PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}"
PACKAGE_EXTRA_ARCHS = "armv4 armv5te"
-include conf/machine/include/tune-xscale.conf
+require conf/machine/include/tune-xscale.conf
# used by sysvinit_2
SERIAL_CONSOLE = "115200 ttyS0"
@@ -25,5 +25,4 @@ ROOT_FLASH_SIZE = "32"
EXTRA_IMAGECMD_jffs2 = "--pad=0x1000000 --eraseblock=0x40000"
MACHINE_FEATURES = "kernel26 pcmcia usbhost usbgadget pcmcia touchscreen alsa"
-MACHINE_TASK_PROVIDER = "task-base"
diff --git a/conf/machine/lsarm.conf b/conf/machine/lsarm.conf
new file mode 100644
index 0000000000..15477f59c6
--- /dev/null
+++ b/conf/machine/lsarm.conf
@@ -0,0 +1,31 @@
+#@TYPE: Machine
+#@NAME: ARM based Buffalo Linkstation
+#@DESCRIPTION: Machine configuration for various different ARM based linkstations
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te"
+INHERIT += "lsarm-image"
+
+MACHINE_EXTRA_RDEPENDS = "miconapl micro-evtd"
+MACHINE_FEATURES = "kernel26 usbhost ext2 pci uboot"
+
+TARGET_FPU = "soft"
+
+PREFERRED_PROVIDER_virtual/bootloader = ""
+
+USE_DEVFS = "0"
+
+require conf/machine/include/tune-arm926ejs.conf
+
+IMAGE_FSTYPES = "tar.gz"
+
+# serial console port on devboard rev. B3
+SERIAL_CONSOLE = "115200 ttyS0"
+
+HOTPLUG = "udev"
+udevdir = "/dev"
+
+IMAGE_DEVICE_TABLES = "files/device_table-slugos.txt"
+
+BOOTSTRAP_EXTRA_RDEPENDS = "udev module-init-tools kernel-modules"
+PREFERRED_PROVIDER_virtual/kernel = "linux-linkstationarm"
+
diff --git a/conf/machine/lsppchd.conf b/conf/machine/lsppchd.conf
new file mode 100644
index 0000000000..ac22703de9
--- /dev/null
+++ b/conf/machine/lsppchd.conf
@@ -0,0 +1,8 @@
+#@TYPE: Machine
+#@NAME: HD Linkstation
+#@DESCRIPTION: Machine configuration for the Buffalo Linkstation HD
+UBOOT_MACHINE = "linkstation_HDLAN"
+IMAGE_FSTYPES = "tar.gz"
+require conf/machine/include/lsppc.conf
+
+INHERIT += "lsppchd-image"
diff --git a/conf/machine/lsppchg.conf b/conf/machine/lsppchg.conf
new file mode 100644
index 0000000000..9f03febba6
--- /dev/null
+++ b/conf/machine/lsppchg.conf
@@ -0,0 +1,8 @@
+#@TYPE: Machine
+#@NAME: HG Linkstation
+#@DESCRIPTION: Machine configuration for the Buffalo Linkstation HG
+UBOOT_MACHINE = "linkstation_HGLAN"
+IMAGE_FSTYPES = "tar.gz"
+require conf/machine/include/lsppc.conf
+
+INHERIT += "lsppchg-image"
diff --git a/conf/machine/magicbox.conf b/conf/machine/magicbox.conf
new file mode 100644
index 0000000000..19dae402d9
--- /dev/null
+++ b/conf/machine/magicbox.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@Name: Magicbox router board
+#@DESCRIPTION: Machine configuration for Magicbox router board http://wwww.magicbox.pl
+
+INHERIT += "magicbox-image"
+
+TARGET_ARCH = "powerpc"
+PACKAGE_EXTRA_ARCHS = "ppc405"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-${MACHINE}"
+
+MACHINE_FEATURES = "kernel26"
+MACHINE_TASK_PROVIDER = "task-base"
+
+TARGET_CPU = "405"
+OLDEST_KERNEL = "2.6.18"
+
+SERIAL_CONSOLE = "115200 ttyS0"
+
+PREFERRED_VERSION_u-boot = "1.1.2"
+EXTRA_IMAGECMD_jffs2 = "-pad --big-endian --squash -e 0x10000"
+EXTRA_IMAGECMD_squashfs = " -be -all-root -nopad -noappend -root-owned"
+EXTRA_IMAGECMD_squashfs-lzma = " -be -all-root -nopad -noappend -root-owned"
+
+
+
+#tune for the 405 cpu
+require conf/machine/include/tune-ppc405.conf
+
diff --git a/conf/machine/magician.conf b/conf/machine/magician.conf
index e16a46c619..719c9a5b03 100644
--- a/conf/machine/magician.conf
+++ b/conf/machine/magician.conf
@@ -6,7 +6,7 @@
# Hardware-based properties
#
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt ipaqpxa ipaq-pxa270"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt "
# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
require conf/machine/include/tune-xscale.conf
@@ -17,7 +17,12 @@ require conf/machine/include/tune-xscale.conf
ROOT_FLASH_SIZE = "80"
VOLATILE_STORAGE_SIZE = "64"
GUI_MACHINE_CLASS = "smallscreen"
-MACHINE_FEATURES = "kernel26 touchscreen apm alsa bluetooth irda usbgadget screen"
+MACHINE_FEATURES = "alsa apm bluetooth irda kernel26 phone screen touchscreen usbgadget usbhost"
+
+#
+# We don't support jffs2 installations (yet).
+#
+IMAGE_FSTYPES = "tar.bz2"
#
# Software/packages selection
@@ -31,10 +36,12 @@ PREFERRED_VERSION_orinoco-modules = "0.15rc1"
MACHINE_EXTRA_RRECOMMENDS = " \
kernel-module-leds-magician \
kernel-module-magician-ts \
- kernel-module-pxaficp-ir \
- kernel-module-uinput \
- kernel-module-hci-usb \
- "
+ kernel-module-magician-flash \
+ kernel-module-magician-ds1wm \
+ kernel-module-magician-battery \
+ kernel-module-magician-phone \
+ kernel-module-n-tihtc \
+ kernel-module-snd-soc-magician"
#
# Modules autoload and other boot properties
@@ -44,6 +51,12 @@ module_autoload_leds-magician = "leds-magician"
module_autoload_snd-pcm-oss = "snd-pcm-oss"
module_autoload_snd-mixer-oss = "snd-mixer-oss"
module_autoload_pxa27x_udc = "pxa27x_udc"
+module_autoload_magician_ds1wm = "magician_ds1wm"
+module_autoload_magician-battery = "magician-battery"
+module_autoload_magician_phone = "magician_phone"
+module_autoload_n_tihtc = "n_tihtc"
+module_autoload_snd-soc-magician = "snd-soc-magician"
+module_autoload_hci_usb = "hci_usb"
#FIXME: this should be controlled by a userspace utility later.
module_autoload_g_ether = "g_ether"
diff --git a/conf/machine/mainstone.conf b/conf/machine/mainstone.conf
index 914022c7bc..291c68ebd2 100644
--- a/conf/machine/mainstone.conf
+++ b/conf/machine/mainstone.conf
@@ -9,7 +9,7 @@ PACKAGE_EXTRA_ARCHS = "armv5te"
PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}-kernel"
-include conf/machine/include/tune-xscale.conf
+require conf/machine/include/tune-xscale.conf
# used by sysvinit_2
SERIAL_CONSOLE = "115200 ttyS0"
@@ -18,5 +18,3 @@ SERIAL_CONSOLE = "115200 ttyS0"
ROOT_FLASH_SIZE = "32"
MACHINE_FEATURES = "kernel26 pcmcia usbhost usbgadget pcmcia touchscreen keyboard alsa irda"
-
-MACHINE_TASK_PROVIDER = "task-base"
diff --git a/conf/machine/mtx-3a.conf b/conf/machine/mtx-3a.conf
new file mode 100644
index 0000000000..000b200840
--- /dev/null
+++ b/conf/machine/mtx-3a.conf
@@ -0,0 +1,13 @@
+#@TYPE: Machine - the orange marvell box
+#@NAME: 4G Systems mtx-3a
+#@DESCRIPTION: Machine configuration for the mtx-3a
+
+TARGET_ARCH = "arm"
+PACKAGE_ARCHS = "all arm ${MACHINE}"
+PREFERRED_PROVIDER_virtual/kernel = "linux-mtx-3a"
+EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 -n"
+TARGET_CC_ARCH = "-march=armv5te"
+USE_DEVFS = "1"
+USE_VT = "0"
+SERIAL_CONSOLE = "115200 ttyS0 vt100"
+BOOTSTRAP_EXTRA_RDEPENDS += ""
diff --git a/conf/machine/mx21ads.conf b/conf/machine/mx21ads.conf
index 77961714eb..160b9fd207 100644
--- a/conf/machine/mx21ads.conf
+++ b/conf/machine/mx21ads.conf
@@ -11,7 +11,7 @@ PACKAGE_EXTRA_ARCHS = "arm armv4t armv5te"
PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}-kernel"
-include conf/machine/include/tune-arm926ejs.conf
+require conf/machine/include/tune-arm926ejs.conf
# used by sysvinit_2
SERIAL_CONSOLE = "115200 ttymxc0"
diff --git a/conf/machine/mx31ads.conf b/conf/machine/mx31ads.conf
index 33456a4b03..55a29186e3 100644
--- a/conf/machine/mx31ads.conf
+++ b/conf/machine/mx31ads.conf
@@ -12,10 +12,13 @@ PACKAGE_EXTRA_ARCHS = "arm armv4t armv5te armv6"
PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}-kernel"
-include conf/machine/include/tune-arm1136jf-s.conf
+require conf/machine/include/tune-arm1136jf-s.conf
# used by sysvinit_2
SERIAL_CONSOLE = "115200 ttymxc0"
# used by opie-collections.inc
ROOT_FLASH_SIZE = "32"
+
+IMAGE_FSTYPES += "tar.gz"
+
diff --git a/conf/machine/n2100.conf b/conf/machine/n2100.conf
new file mode 100644
index 0000000000..f275d617de
--- /dev/null
+++ b/conf/machine/n2100.conf
@@ -0,0 +1,27 @@
+TARGET_ARCH = "arm"
+TARGET_OS = "linux"
+TARGET_FPU = "soft"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te"
+
+INHERIT += "n2100-image"
+
+SERIAL_CONSOLE="115200 console"
+USE_VT="0"
+
+MODUTILS=26
+MACHINE_FEATURES= "kernel26 usbhost pci ext2 redboot"
+PREFERRED_PROVIDER_virtual/kernel = "linux"
+PREFERRED_VERSION_linux = "2.6.20"
+
+# We want udev support in the image
+udevdir = "/dev"
+
+ERASEBLOCK_SIZE = "0x20000"
+IMAGE_FSTYPES = "jffs2"
+EXTRA_IMAGECMD = "--little-endian"
+# Creating an image that works with the webinterface required encrypting it
+# So we'll need openssl
+EXTRA_IMAGEDEPENDS = "openssl-native"
+IMAGE_DEVICE_TABLES = "files/device_table-slugos.txt"
+
+require conf/machine/include/tune-xscale.conf
diff --git a/conf/machine/netbook-pro.conf b/conf/machine/netbook-pro.conf
index f83de23786..3baf1c2878 100755
--- a/conf/machine/netbook-pro.conf
+++ b/conf/machine/netbook-pro.conf
@@ -31,4 +31,4 @@ GUI_MACHINE_CLASS = "bigscreen"
#The initrd needs /initrd present to be able to do pivot_root
ROOTFS_POSTPROCESS_COMMAND += " mkdir -p ${IMAGE_ROOTFS}/initrd; "
-include conf/machine/include/tune-xscale.conf
+require conf/machine/include/tune-xscale.conf
diff --git a/conf/machine/netvista.conf b/conf/machine/netvista.conf
index f5787e6448..e7aeab7389 100644
--- a/conf/machine/netvista.conf
+++ b/conf/machine/netvista.conf
@@ -1,23 +1,23 @@
#@TYPE: Machine
-#@NAME: IBM Netvista
-#@DESCRIPTION: Machine configuration for the IBM Netvista thin client
+#@NAME: X86
+#@DESCRIPTION: Machine configuration for a Linux running on x86 compatible machines
-TARGET_ARCH = "i386"
-PREFERRED_PROVIDER_xserver = "xserver-xorg"
-PREFERRED_PROVIDER_virtual/kernel = "linux-netvista"
-BOOTSTRAP_EXTRA_RDEPENDS = "kernel pciutils"
-#BOOTSTRAP_EXTRA_RRECOMMENDS = "hostap-modules"
-#IMAGE_FSTYPES = "cramfs"
-EXTRA_IMAGEDEPENDS = ""
-SERIAL_CONSOLE = "ttyS0 115200 vt100"
+# i386 doesn't work with NTPL, see http://ecos.sourceware.org/ml/libc-ports/2006-03/msg00030.html
+TARGET_ARCH = "i486"
+# TARGET_VENDOR = "-oe"
+PACKAGE_EXTRA_ARCHS = "netvista"
+PREFERRED_PROVIDER_virtual/kernel = "linux-x86"
+XSERVER = "xserver-kdrive-vesa"
-TARGET_VENDOR = "-oe"
-PREFERRED_PROVIDERS_append = " virtual/kernel:linux-netvista"
-IMAGE_FSTYPES = "ext2"
-GUI_MACHINE_CLASS = "bigscreen"
-GPE_EXTRA_INSTALL += "gaim sylpheed gpe-mini-browser abiword"
-
-#BOOTSTRAP_EXTRA_RDEPENDS = "pciutils udev module-init-tools kernel-modules strace
-#udevdir = "/dev"
+# todo: convert to task-base
+# BOOTSTRAP_EXTRA_RDEPENDS = "kernel pciutils udev kernel-modules"
+MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
+MACHINE_FEATURES = "kernel26 pci usbhost ext2 screen keyboard irda apm alsa"
+ROOT_FLASH_SIZE = "64"
+GUI_MACHINE_CLASS = "bigscreen"
+udevdir = "/dev"
+OLDEST_KERNEL = "2.6.17"
+GLIBC_ADDONS = "nptl"
+GLIBC_EXTRA_OECONF = "--with-tls"
diff --git a/conf/machine/nokia770.conf b/conf/machine/nokia770.conf
index de53f3c3bc..070cdcdd05 100644
--- a/conf/machine/nokia770.conf
+++ b/conf/machine/nokia770.conf
@@ -14,7 +14,7 @@ XSERVER = "xserver-kdrive-omap"
GUI_MACHINE_CLASS = "bigscreen"
# Use tune-arm926 per default. Machine independent feeds should be built with tune-strongarm.
-include conf/machine/include/tune-arm926ejs.conf
+require conf/machine/include/tune-arm926ejs.conf
#size of the root partition (yes, it is 123 MB)
ROOT_FLASH_SIZE = "123"
@@ -33,4 +33,6 @@ ROOTFS_POSTPROCESS_COMMAND += " remove_init_link; "
MACHINE_FEATURES = "kernel26 apm alsa bluetooth usbgadget usbhost screen"
MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "nokia770-init"
-MACHINE_TASK_PROVIDER = "task-base"
+# build tools
+EXTRA_IMAGEDEPENDS += "0xffff-native"
+
diff --git a/conf/machine/nokia800.conf b/conf/machine/nokia800.conf
new file mode 100644
index 0000000000..e31438819e
--- /dev/null
+++ b/conf/machine/nokia800.conf
@@ -0,0 +1,31 @@
+#@TYPE: Machine
+#@NAME: Nokia 770 internet tablet
+#@DESCRIPTION: Machine configuration for the Nokia 800
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6"
+
+PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-xomap"
+XSERVER = "xserver-kdrive-xomap"
+
+GUI_MACHINE_CLASS = "bigscreen"
+
+TARGET_FPU = "hard"
+include conf/machine/include/tune-arm1136jf-s.conf
+
+ROOT_FLASH_SIZE = "174"
+EXTRA_IMAGECMD_jffs2_nokia800 = "--pad --little-endian --eraseblock=0x20000 -n"
+
+IMAGE_FSTYPES ?= "jffs2"
+
+SERIAL_CONSOLE = "115200 ttyS0"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-nokia800"
+
+#use this if you are using the nokia initfs
+ROOTFS_POSTPROCESS_COMMAND += " remove_init_link; "
+
+MACHINE_FEATURES = "kernel26 apm alsa bluetooth usbgadget usbhost"
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "nokia770-init"
+
+# build tools
+EXTRA_IMAGEDEPENDS += "0xffff-native"
diff --git a/conf/machine/nslu2.conf b/conf/machine/nslu2.conf
index b00f8a520c..7e45825f69 100644
--- a/conf/machine/nslu2.conf
+++ b/conf/machine/nslu2.conf
@@ -2,4 +2,4 @@
#@NAME: Linksys NSLU2
#@DESCRIPTION: Machine configuration for the Linksys NSLU2 product
-include conf/machine/include/ixp4xx.conf
+MACHINE_CHECK := ${@bb.fatal('You must set MACHINE to nslu2le or nslu2be.')}
diff --git a/conf/machine/nslu2be.conf b/conf/machine/nslu2be.conf
new file mode 100644
index 0000000000..104bbdb397
--- /dev/null
+++ b/conf/machine/nslu2be.conf
@@ -0,0 +1,19 @@
+#@TYPE: Machine
+#@NAME: Linksys NSLU2 (big-endian)
+#@DESCRIPTION: Machine configuration for an NSLU2 in big-endian mode
+
+TARGET_ARCH = "armeb"
+
+PACKAGE_EXTRA_ARCHS = "armv4b armv4tb armv5eb armv5teb ixp4xxbe"
+
+MACHINE_ARCH = "ixp4xxbe"
+
+OVERRIDES = "local:${MACHINE}:nslu2:ixp4xx:${DISTRO}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}"
+
+ROOT_FLASH_SIZE ?= "6"
+
+require conf/machine/include/ixp4xx.conf
+
+EXTRA_IMAGECMD_jffs2 += "--big-endian"
+
+INHERIT += "nslu2-image"
diff --git a/conf/machine/nslu2le.conf b/conf/machine/nslu2le.conf
new file mode 100644
index 0000000000..86c4ce7a31
--- /dev/null
+++ b/conf/machine/nslu2le.conf
@@ -0,0 +1,19 @@
+#@TYPE: Machine
+#@NAME: Linksys NSLU2 (little-endian)
+#@DESCRIPTION: Machine configuration for an NSLU2 in little-endian mode
+
+TARGET_ARCH = "arm"
+
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te ixp4xxle"
+
+MACHINE_ARCH = "ixp4xxle"
+
+OVERRIDES = "local:${MACHINE}:nslu2:ixp4xx:${DISTRO}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}"
+
+ROOT_FLASH_SIZE ?= "6"
+
+require conf/machine/include/ixp4xx.conf
+
+EXTRA_IMAGECMD_jffs2 += "--little-endian"
+
+INHERIT += "nslu2-image"
diff --git a/conf/machine/omap1510inn.conf b/conf/machine/omap1510inn.conf
index 51d5b12f9d..0b26436bf5 100644
--- a/conf/machine/omap1510inn.conf
+++ b/conf/machine/omap1510inn.conf
@@ -14,4 +14,4 @@ BOOTSTRAP_EXTRA_RDEPENDS += "modutils-collateral"
SERIAL_CONSOLE ?= "115200 ttyS0"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x40000"
-include conf/machine/include/tune-arm926ejs.conf
+require conf/machine/include/tune-arm926ejs.conf
diff --git a/conf/machine/omap1610h2.conf b/conf/machine/omap1610h2.conf
index 51d5b12f9d..0b26436bf5 100644
--- a/conf/machine/omap1610h2.conf
+++ b/conf/machine/omap1610h2.conf
@@ -14,4 +14,4 @@ BOOTSTRAP_EXTRA_RDEPENDS += "modutils-collateral"
SERIAL_CONSOLE ?= "115200 ttyS0"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x40000"
-include conf/machine/include/tune-arm926ejs.conf
+require conf/machine/include/tune-arm926ejs.conf
diff --git a/conf/machine/omap1710h3.conf b/conf/machine/omap1710h3.conf
index 51d5b12f9d..0b26436bf5 100644
--- a/conf/machine/omap1710h3.conf
+++ b/conf/machine/omap1710h3.conf
@@ -14,4 +14,4 @@ BOOTSTRAP_EXTRA_RDEPENDS += "modutils-collateral"
SERIAL_CONSOLE ?= "115200 ttyS0"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x40000"
-include conf/machine/include/tune-arm926ejs.conf
+require conf/machine/include/tune-arm926ejs.conf
diff --git a/conf/machine/omap2420h4.conf b/conf/machine/omap2420h4.conf
index 70a3082956..a9e1a00cc5 100644
--- a/conf/machine/omap2420h4.conf
+++ b/conf/machine/omap2420h4.conf
@@ -14,4 +14,4 @@ BOOTSTRAP_EXTRA_RDEPENDS += "modutils-collateral"
SERIAL_CONSOLE ?= "115200 ttyS0"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x40000"
-include conf/machine/include/tune-arm926ejs.conf
+require conf/machine/include/tune-arm926ejs.conf
diff --git a/conf/machine/omap5912osk.conf b/conf/machine/omap5912osk.conf
index f8a3472f78..946a619d3f 100644
--- a/conf/machine/omap5912osk.conf
+++ b/conf/machine/omap5912osk.conf
@@ -11,14 +11,14 @@ PREFERRED_PROVIDER_xserver = "xserver-kdrive"
PREFERRED_PROVIDER_virtual/kernel = "linux-omap1"
PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod:module-init-tools-cross"
-PREFERRED_VERSION_u-boot = "LABEL.2006.06.30.2020"
+# PREFERRED_VERSION_u-boot = "1.1.6"
SERIAL_CONSOLE ?= "115200 ttyS0"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n"
-MACHINE_FEATURES = "kernel26 pcmcia usbhost alsa"
+ROOT_FLASH_SIZE = "29"
-MACHINE_TASK_PROVIDER = "task-base"
+MACHINE_FEATURES = "kernel26 pcmcia usbhost alsa"
MACHINE_EXTRA_RRECOMMENDS = "kernel-module-ide-cs \
kernel-module-ide-disk \
@@ -28,7 +28,7 @@ MACHINE_EXTRA_RRECOMMENDS = "kernel-module-ide-cs \
kernel-module-nls-base \
kernel-module-vfat"
-include conf/machine/include/tune-arm926ejs.conf
+require conf/machine/include/tune-arm926ejs.conf
# old modules setup - partially need to be added into MACHINE_EXTRA_RRECOMMENDS
diff --git a/conf/machine/palmld.conf b/conf/machine/palmld.conf
index ec7336fe06..ba67f473b2 100644
--- a/conf/machine/palmld.conf
+++ b/conf/machine/palmld.conf
@@ -5,7 +5,7 @@
TARGET_ARCH = "arm"
PACKAGE_EXTRA_ARCHS = "arm armv4t armv5te"
-PREFERRED_PROVIDER_virtual/kernel = "hackndev-2.6trunk"
+PREFERRED_PROVIDER_virtual/kernel = "linux-hackndev-2.6"
PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
@@ -18,6 +18,6 @@ SERIAL_CONSOLE = "115200 ttyS0"
GUI_MACHINE_CLASS = "bigscreen"
# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
-include conf/machine/tune-xscale.conf
+require conf/machine/include/tune-xscale.conf
module_autoload_sa1100-rtc = "sa1100-rtc"
diff --git a/conf/machine/palmtt3.conf b/conf/machine/palmtt3.conf
new file mode 100644
index 0000000000..8572838d2e
--- /dev/null
+++ b/conf/machine/palmtt3.conf
@@ -0,0 +1,26 @@
+#@TYPE: Machine
+#@NAME: Palm Tungsten|T3
+#@DESCRIPTION: Machine configuration for the Palm Tungsten|T3
+
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4t armv5te"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-hackndev-2.6"
+PREFERRED_PROVIDER_linux = "linux-hackndev-2.6"
+PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
+#SRCDATE_linux-hackndev-2.6 = "20070217"
+
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa irda bluetooth ext2 usbgadget screen"
+
+ROOT_FLASH_SIZE = "100"
+
+SERIAL_CONSOLE = "115200 ttyS3"
+
+GUI_MACHINE_CLASS = "bigscreen"
+
+# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
+require conf/machine/include/tune-xscale.conf
+
+module_autoload_sa1100-rtc = "sa1100-rtc"
+
+#EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --squash --eraseblock=0x10000 -n"
diff --git a/conf/machine/palmtx.conf b/conf/machine/palmtx.conf
new file mode 100644
index 0000000000..a9b92ff7cc
--- /dev/null
+++ b/conf/machine/palmtx.conf
@@ -0,0 +1,32 @@
+#@TYPE: Machine
+#@NAME: Palm TX
+#@DESCRIPTION: Machine configuration for the Palm TX
+
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4t armv5te"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-hackndev-2.6"
+
+PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
+
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa pcmcia irda bluetooth wifi ext2 usbgadget screen"
+
+ROOT_FLASH_SIZE = "100"
+
+SERIAL_CONSOLE = "115200 ttyS0"
+
+GUI_MACHINE_CLASS = "bigscreen"
+
+# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
+require conf/machine/include/tune-xscale.conf
+
+MACHINE_EXTRA_RRECOMMENDS += "kernel-module-pxa27x-keyboard \
+ kernel-module-pxapwm-bl \
+ kernel-module-wm97xx-ts \
+ kernel-module-palmtx-battery"
+
+module_autoload_sa1100-rtc = "sa1100-rtc"
+module_autoload_pxa27x-keyboard = "pxa27x-keyboard"
+module_autoload_pxapwm-bl = "pxapwm-bl"
+module_autoload_wm97xx-ts = "wm97xx-ts"
+module_autoload_palmtx-battery = "palmtx-battery"
diff --git a/conf/machine/palmz72.conf b/conf/machine/palmz72.conf
new file mode 100644
index 0000000000..ae3e74bee4
--- /dev/null
+++ b/conf/machine/palmz72.conf
@@ -0,0 +1,25 @@
+#@TYPE: Machine
+#@NAME: Palm Zire 72
+#@DESCRIPTION: Machine configuration for the Palm Zire 72
+
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "arm armv4t armv5te"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-hackndev-2.6"
+
+PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
+
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa pcmcia irda ext2 usbgadget screen"
+
+ROOT_FLASH_SIZE = "100"
+
+SERIAL_CONSOLE = "115200 ttyS0"
+
+GUI_MACHINE_CLASS = "bigscreen"
+
+# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
+require conf/machine/include/tune-xscale.conf
+require conf/machine/include/tune-thumb.conf
+
+module_autoload_sa1100-rtc = "sa1100-rtc"
+module_autoload_palmz72-battery = "palmz72-battery"
diff --git a/conf/machine/progear.conf b/conf/machine/progear.conf
index 37974cb0ad..7c293d9ebf 100644
--- a/conf/machine/progear.conf
+++ b/conf/machine/progear.conf
@@ -7,11 +7,20 @@ TARGET_ARCH = "i686"
PACKAGE_EXTRA_ARCHS = "x86 i386 i486 i586"
PREFERRED_PROVIDER_virtual/kernel = "linux"
+PREFERRED_PROVIDER_virtual/xserver = "xserver-xorg"
OLDEST_KERNEL = "2.6.17"
GLIBC_ADDONS = "nptl"
GLIBC_EXTRA_OECONF = "--with-tls"
-MACHINE_FEATURES = "kernel26 usbhost ext2 pci pcmcia apm screen alsa irda acpi screen"
+MACHINE_FEATURES = "kernel26 usbhost ext2 pci pcmcia screen alsa irda acpi screen touchscreen"
IMAGE_FSTYPES = "tar.gz"
+
+MACHINE_EXTRA_RRECOMMENDS = "\
+ progear-ac progear-battery \
+ kernel-module-snd-ali5451 \
+ kernel-module-i2c-ali1535 \
+ kernel-module-i2c-ali15x3 \
+ kernel-module-yenta-socket \
+ "
diff --git a/conf/machine/qemuarm.conf b/conf/machine/qemuarm.conf
index 371ba927bb..1742e1b1aa 100644
--- a/conf/machine/qemuarm.conf
+++ b/conf/machine/qemuarm.conf
@@ -11,5 +11,3 @@ require conf/machine/include/tune-arm926ejs.conf
SERIAL_CONSOLE = "115200 ttyAMA0"
PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
-
-MACHINE_TASK_PROVIDER = "task-base" \ No newline at end of file
diff --git a/conf/machine/qemux86.conf b/conf/machine/qemux86.conf
new file mode 100644
index 0000000000..60aa12ad7f
--- /dev/null
+++ b/conf/machine/qemux86.conf
@@ -0,0 +1,15 @@
+#@TYPE: Machine
+#@NAME: qemu x86 Emulator setup
+#@DESCRIPTION: Machine configuration for running an x86 system under qemu emulation
+
+TARGET_ARCH = "i586"
+PACKAGE_EXTRA_ARCHS = "x86"
+
+require conf/machine/include/qemu.conf
+
+SERIAL_CONSOLE = "115200 ttyS0"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
+
+GLIBC_ADDONS = "nptl"
+GLIBC_EXTRA_OECONF = "--with-tls"
diff --git a/conf/machine/rokr-e2.conf b/conf/machine/rokr-e2.conf
new file mode 100644
index 0000000000..53be3506af
--- /dev/null
+++ b/conf/machine/rokr-e2.conf
@@ -0,0 +1,33 @@
+#@TYPE: Machine
+#@NAME: Motorola EZX rokr e2
+#@DESCRIPTION: Machine configuration for the Motorola GSM phones rokr e2
+
+
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt"
+
+PREFERRED_PROVIDER_xserver = "xserver-kdrive"
+PREFERRED_PROVIDER_virtual/kernel = "linux-ezx"
+
+EXTRA_IMAGECMD_jffs2 = "--pad=14680064 --little-endian --eraseblock=0x20000 -n"
+
+#cat /proc/mtd
+#dev: size erasesize name
+#mtd0: 00020000 00008000 "Bootloader"
+#mtd1: 000e0000 00020000 "Kernel"
+#mtd2: 00580000 00020000 "VFM_Filesystem"
+#mtd3: 00020000 00020000 "Logo"
+
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa bluetooth usbgadget usbhost keyboard screen"
+
+#the a780 needs a userspace daemon to stop the BP from shutting down the phone
+MACHINE_EXTRA_RDEPENDS += "opentapi"
+
+ROOT_FLASH_SIZE = "24"
+
+EXTRA_IMAGEDEPENDS += "ezx-boot-usb-native"
+
+# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
+require conf/machine/include/tune-xscale.conf
+
+SERIAL_CONSOLE = "115200 ttyS0"
diff --git a/conf/machine/rx3000.conf b/conf/machine/rx3000.conf
index c0324c887d..190b5f54dd 100644
--- a/conf/machine/rx3000.conf
+++ b/conf/machine/rx3000.conf
@@ -9,7 +9,7 @@ TARGET_ARCH = "arm"
PACKAGE_EXTRA_ARCHS = "armv4 armv4t"
# Samsung S3C2xxx CPU
-include conf/machine/include/tune-arm920t.conf
+require conf/machine/include/tune-arm920t.conf
ROOT_FLASH_SIZE = "32"
VOLATILE_STORAGE_SIZE = "64"
@@ -20,6 +20,7 @@ MACHINE_FEATURES = "kernel26 touchscreen apm alsa irda bluetooth wifi usbgadget
# Software/packages selection
#
PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
+PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.18-hh2"
PCMCIA_MANAGER = "pcmciautils"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
diff --git a/conf/machine/sequoia.conf b/conf/machine/sequoia.conf
new file mode 100644
index 0000000000..b2d0f3593e
--- /dev/null
+++ b/conf/machine/sequoia.conf
@@ -0,0 +1,26 @@
+#@TYPE: Machine
+#@Name: AMCC Sequoia Development Platform
+#@DESCRIPTION: Machine configuration for the AMCC Sequoia development platform http://www.amcc.com/Embedded/Downloads/440EPx/
+
+
+TARGET_ARCH = "powerpc"
+PACKAGE_EXTRA_ARCHS = "all ${MACHINE} ppc ppc440"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-${MACHINE}"
+
+MACHINE_FEATURES = "kernel26 usbhost"
+MACHINE_TASK_PROVIDER = "task-base"
+
+#don't try to access tty1
+USE_VT = "0"
+
+
+SERIAL_CONSOLE = "115200 ttyS0"
+
+PREFERRED_VERSION_u-boot = "1.1.2"
+EXTRA_IMAGECMD = "--big-endian"
+ERASEBLOCK_SIZE = "0x10000"
+IMAGE_FSTYPES = "jffs2"
+
+#tune for the AMCC440 cpu
+require conf/machine/include/tune-ppc440.conf
diff --git a/conf/machine/shark.conf b/conf/machine/shark.conf
new file mode 100644
index 0000000000..61bec7f6f2
--- /dev/null
+++ b/conf/machine/shark.conf
@@ -0,0 +1,23 @@
+#@TYPE: Machine
+#@NAME: DNARD NetworkComputer/Shark
+#@DESCRIPTION: Machine configuration for the SHARK based SHARK
+
+MACHINE_KERNEL_VERSION ?= "2.6"
+
+TARGET_ARCH = "arm"
+PREFERRED_PROVIDER_xserver = "xserver-kdrive"
+PREFERRED_PROVIDER_virtual/kernel = "linux-z"
+
+EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 -n"
+EXTRA_IMAGEDEPENDS = ""
+SERIAL_CONSOLE = "ttySA0 115200 vt100"
+
+ROOT_FLASH_SIZE = "16"
+USE_VT = "0"
+
+require conf/machine/include/tune-strongarm.conf
+
+MACHINE_FEATURES = "kernel26 apm alsa pcmcia keyboard ext2"
+MACHINE_EXTRA_RDEPENDS_append = " mpg321 mpd madplay "
+
+GUI_MACHINE_CLASS = "bigscreen"
diff --git a/conf/machine/simpad.conf b/conf/machine/simpad.conf
index 13943bae39..8e2cc276d8 100644
--- a/conf/machine/simpad.conf
+++ b/conf/machine/simpad.conf
@@ -3,28 +3,20 @@
#@DESCRIPTION: Machine configuration for the SA1100 based SIEMENS SIMpad and Telekom T-Sinus PAD devices
MACHINE_KERNEL_VERSION ?= "2.4"
-require conf/machine/include/simpad-${MACHINE_KERNEL_VERSION}.conf
TARGET_ARCH = "arm"
-PREFERRED_PROVIDER_xserver = "xserver-kdrive"
-BOOTSTRAP_EXTRA_RDEPENDS += "kernel"
-BOOTSTRAP_EXTRA_RRECOMMENDS = "hostap-modules-cs \
-kernel-module-sa1100-ir kernel-module-sa1100usb-core kernel-module-usb-eth \
-kernel-module-pcnet-cs kernel-module-8390"
+MACHINE_FEATURES = " apm pcmcia irda screen touchscreen "
+
+include conf/machine/include/simpad-${MACHINE_KERNEL_VERSION}.conf
+require conf/machine/include/tune-strongarm.conf
-# This is needed for the ramdisk script to work
-BOOTSTRAP_EXTRA_RDEPENDS += "e2fsprogs-mke2fs"
+ROOT_FLASH_SIZE = "16"
EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 -n"
-EXTRA_IMAGEDEPENDS = ""
-SERIAL_CONSOLE = "ttySA0 115200 vt100"
-USE_DEVFS = "1"
GUI_MACHINE_CLASS = "bigscreen"
-ROOT_FLASH_SIZE = "16"
+SERIAL_CONSOLE = "ttySA0 115200 vt100"
USE_VT = "0"
-GPE_EXTRA_INSTALL += "suspend-desktop"
-
-require conf/machine/include/tune-strongarm.conf
+PREFERRED_PROVIDER_xserver = "xserver-kdrive"
diff --git a/conf/machine/smdk2440.conf b/conf/machine/smdk2440.conf
index 6a8deb9176..903685e8dd 100644
--- a/conf/machine/smdk2440.conf
+++ b/conf/machine/smdk2440.conf
@@ -13,7 +13,6 @@ SERIAL_CONSOLE = "115200 ttySAC0"
IMAGE_FSTYPES = "tar.gz"
-MACHINE_TASK_PROVIDER = "task-base"
MACHINE_FEATURES = "kernel26 apm screen"
-include conf/machine/include/tune-arm920t.conf
+require conf/machine/include/tune-arm920t.conf
diff --git a/conf/machine/smdk2443.conf b/conf/machine/smdk2443.conf
new file mode 100644
index 0000000000..0f7419f80b
--- /dev/null
+++ b/conf/machine/smdk2443.conf
@@ -0,0 +1,18 @@
+#@TYPE: Machine
+#@Name: Samsung SMDK2440 Dev BOard
+#@DESCRIPTION: Machine configuration for Samsung SMDK2440 Dev Board
+
+
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4t"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-smdk2443"
+
+# used by sysvinit_2
+SERIAL_CONSOLE = "115200 ttySAC0"
+
+IMAGE_FSTYPES = "tar.gz"
+
+MACHINE_FEATURES = "kernel26 apm screen"
+
+require conf/machine/include/tune-arm920t.conf
diff --git a/conf/machine/spitz.conf b/conf/machine/spitz.conf
index 455ae56677..6b08ec1aa9 100644
--- a/conf/machine/spitz.conf
+++ b/conf/machine/spitz.conf
@@ -2,12 +2,12 @@
#@NAME: Sharp Zaurus SL-C3000
#@DESCRIPTION: Machine configuration for the Sharp Zaurus SL-C3000 device
-include conf/machine/include/zaurus-2.6.conf
-include conf/machine/include/zaurus-clamshell.conf
+require conf/machine/include/zaurus-2.6.conf
+require conf/machine/include/zaurus-clamshell.conf
PIVOTBOOT_EXTRA_RDEPENDS += "pivotinit ${PCMCIA_MANAGER}"
PACKAGE_EXTRA_ARCHS += "iwmmxt"
-IMAGE_FSTYPES ?= "tar.gz"
+IMAGE_FSTYPES += "tar.gz"
ROOT_FLASH_SIZE = "100"
diff --git a/conf/machine/storcenter.conf b/conf/machine/storcenter.conf
index a36684b758..0898da1520 100644
--- a/conf/machine/storcenter.conf
+++ b/conf/machine/storcenter.conf
@@ -1,17 +1,23 @@
TARGET_ARCH = "powerpc"
TARGET_OS = "linux"
-# TARGET_VENDOR = "oe"
+TARGET_FPU = "hard"
PACKAGE_EXTRA_ARCHS = "ppc ppc603e"
+
+INHERIT += "storcenter-image"
+
# terminal specs - console, but no other ports
SERIAL_CONSOLE="115200 console"
USE_VT="0"
MODUTILS=26
-MACHINE_TASK_PROVIDER = "task-base"
-MACHINE_FEATURES= "kernel26 usbhost"
-# don't go udev until kernel >=2.6.13
-#BOOTSTRAP_EXTRA_RDEPENDS = "udev mdadm"
-BOOTSTRAP_EXTRA_RDEPENDS = "mdadm"
+MACHINE_FEATURES= "kernel26 usbhost pci ext2 uboot"
PREFERRED_PROVIDER_virtual/kernel = "linux-storcenter"
-include conf/machine/include/tune-ppc603e.conf
+# We want udev support in the image
+udevdir = "/dev"
+
+EXTRA_IMAGECMD = "--big-endian"
+ERASEBLOCK_SIZE = "0x10000"
+IMAGE_FSTYPES = "jffs2"
+
+require conf/machine/include/tune-ppc603e.conf
diff --git a/conf/machine/titan.conf b/conf/machine/titan.conf
index a7ce106356..bbf1e23b15 100644
--- a/conf/machine/titan.conf
+++ b/conf/machine/titan.conf
@@ -26,7 +26,6 @@ IMAGE_ROOTFS_SIZE_ext2 ?= "63984"
# Things to include in the fs image
MACHINE_FEATURES = "kernel26 pci ext2 usbhost"
-MACHINE_TASK_PROVIDER = "task-base"
# The kernel and lilo-sh need to installed to boot from flash
MACHINE_EXTRA_RDEPENDS = "kernel lilo-sh"
diff --git a/conf/machine/tosa.conf b/conf/machine/tosa.conf
index e893cf8ed0..ddaf6e03c9 100644
--- a/conf/machine/tosa.conf
+++ b/conf/machine/tosa.conf
@@ -2,7 +2,10 @@
#@NAME: Sharp Zaurus SL-6000
#@DESCRIPTION: Machine configuration for the PXA255 based Sharp Zaurus SL-6000 device
-include conf/machine/include/zaurus-2.6.conf
+require conf/machine/include/zaurus-2.6.conf
+
+# 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/triton.conf b/conf/machine/triton.conf
index 685dcd91fb..d79c23e4ac 100644
--- a/conf/machine/triton.conf
+++ b/conf/machine/triton.conf
@@ -14,5 +14,5 @@ SERIAL_CONSOLE = "38400 ttyS0"
KERNEL_CONSOLE = "ttys0,38400"
USE_VT = "0"
-include conf/machine/include/tune-xscale.conf
+require conf/machine/include/tune-xscale.conf
diff --git a/conf/machine/turbostation.conf b/conf/machine/turbostation.conf
new file mode 100644
index 0000000000..33e0427a8e
--- /dev/null
+++ b/conf/machine/turbostation.conf
@@ -0,0 +1,28 @@
+TARGET_ARCH = "powerpc"
+TARGET_OS = "linux"
+TARGET_FPU = "hard"
+PACKAGE_EXTRA_ARCHS = "ppc ppc603e"
+
+INHERIT += "turbostation-image"
+
+# terminal specs - console, but no other ports
+SERIAL_CONSOLE="115200 console"
+USE_VT="0"
+MACHINE_EXTRA_RDEPENDS = "u-boot"
+PREFERRED_VERSION_u-boot = "1.2.0"
+
+MODUTILS=26
+MACHINE_FEATURES = "kernel26 usbhost pci ext2 uboot"
+UBOOT_MACHINE = "qnap_config"
+PREFERRED_VERSION_u-boot = "1.2.0"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-turbostation"
+
+# We want udev support in the image
+udevdir = "/dev"
+
+IMAGE_FSTYPES = "jffs2"
+EXTRA_IMAGECMD_jffs2 = "--big-endian --eraseblock=0x20000"
+IMAGE_DEVICE_TABLES = "files/device_table-slugos.txt"
+
+require conf/machine/include/tune-ppc603e.conf
diff --git a/conf/machine/wrap.conf b/conf/machine/wrap.conf
index e0c65475f6..34d6775932 100644
--- a/conf/machine/wrap.conf
+++ b/conf/machine/wrap.conf
@@ -23,7 +23,6 @@ IMAGE_FSTYPE ?= "tar.gz"
# Things to include in the fs image
MACHINE_FEATURES = "kernel26 pci ext2"
-MACHINE_TASK_PROVIDER = "task-base"
# The kernel and grub need to installed to boot from flash
MACHINE_EXTRA_RDEPENDS = "kernel grub"
diff --git a/conf/machine/x86-uml.conf b/conf/machine/x86-uml.conf
index 34a6b89ab5..e90333836e 100644
--- a/conf/machine/x86-uml.conf
+++ b/conf/machine/x86-uml.conf
@@ -2,7 +2,7 @@
#@NAME: X86 User Mode Linux
#@DESCRIPTION: Machine configuration for a User Mode Linux running on an x86 compatible PC
-include conf/machine/x86.conf
+require conf/machine/x86.conf
PREFERRED_PROVIDER_virtual/kernel = "linux-uml"
diff --git a/conf/machine/x86.conf b/conf/machine/x86.conf
index 91663dfd7c..e0d4cc96a2 100644
--- a/conf/machine/x86.conf
+++ b/conf/machine/x86.conf
@@ -9,10 +9,9 @@ PACKAGE_EXTRA_ARCHS = "x86"
PREFERRED_PROVIDER_virtual/kernel = "linux-x86"
# todo: convert to task-base
# BOOTSTRAP_EXTRA_RDEPENDS = "kernel pciutils udev kernel-modules"
+MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
-MACHINE_TASK_PROVIDER = "task-base"
-
-MACHINE_FEATURES = "kernel26 pci usbhost"
+MACHINE_FEATURES = "kernel26 pci usbhost ext2 screen"
udevdir = "/dev"
OLDEST_KERNEL = "2.6.17"
diff --git a/conf/machine/xilinx-ml403.conf b/conf/machine/xilinx-ml403.conf
new file mode 100644
index 0000000000..662fb54692
--- /dev/null
+++ b/conf/machine/xilinx-ml403.conf
@@ -0,0 +1,20 @@
+#@TYPE: Machine
+#@Name: Xilinx ML403 FPGA Development Platform
+#@DESCRIPTION: Machine configuration for Xilinx ML403 (softcore ppc) development platform
+\http://www.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?key=HW-V4-ML403-USA&iLanguageID=1
+
+TARGET_ARCH = "powerpc"
+PACKAGE_EXTRA_ARCHS = "ppc405"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-${MACHINE}"
+
+MACHINE_FEATURES = "kernel26 ext2"
+
+TARGET_CPU = "405"
+OLDEST_KERNEL = "2.6.12"
+
+SERIAL_CONSOLE = "115200 ttyS0"
+
+#tune for the 405 cpu
+require conf/machine/include/tune-ppc405.conf
+
diff --git a/conf/tinder.conf b/conf/tinder.conf
index 99e263c96c..614ed89400 100644
--- a/conf/tinder.conf
+++ b/conf/tinder.conf
@@ -12,7 +12,7 @@ INHERIT += "tinderclient"
# HTTP posting
#TINDER_HOST = "ewi546.ewi.utwente.nl"
-#TINDER_URL = "/OE_qa/cgi-bin/process_builds.cgi"
+#TINDER_URL = "/tinderbox"
# Which branch do we build
#TINDER_BRANCH = "org.openembedded.dev"
diff --git a/contrib/mtnpatch.py b/contrib/mtnpatch.py
index f7abb6393d..4de9ecc460 100755
--- a/contrib/mtnpatch.py
+++ b/contrib/mtnpatch.py
@@ -30,7 +30,7 @@ def main(argv = None):
print "%s add %s" % (mtncmd, fileName)
else:
print "%s drop -e %s" % (mtncmd, fileName)
- elif cmd == "add":
+ elif cmd == "add" or cmd == "add_file" or cmd == "add_dir":
if reverse:
print "%s drop -e %s" % (mtncmd, fileName)
else:
diff --git a/contrib/qa/bugzilla.py b/contrib/qa/bugzilla.py
new file mode 100644
index 0000000000..17849552b0
--- /dev/null
+++ b/contrib/qa/bugzilla.py
@@ -0,0 +1,8279 @@
+#
+# BugZilla query page scanner to work with ancient
+# Debian Stable bugzilla installationss
+#
+# This includes three test sites
+# site contains one bug entry
+# all_bugs contains all OpenMoko bugs as of \today
+# no_bug is a query which showed no bug
+#
+
+from HTMLParser import HTMLParser
+
+class BugQueryExtractor(HTMLParser):
+ STATE_NONE = 0
+ STATE_FOUND_TR = 1
+ STATE_FOUND_NUMBER = 2
+ STATE_FOUND_PRIO = 3
+ STATE_FOUND_PRIO2 = 4
+ STATE_FOUND_NAME = 5
+ STATE_FOUND_PLATFORM = 6
+ STATE_FOUND_STATUS = 7
+ STATE_FOUND_WHATEVER = 8 # I don't know this field
+ STATE_FOUND_DESCRIPTION =9
+
+ def __init__(self):
+ HTMLParser.__init__(self)
+ self.state = self.STATE_NONE
+ self.bug = None
+ self.bugs = []
+
+ def handle_starttag(self, tag, attr):
+ if self.state == self.STATE_NONE and tag.lower() == "tr":
+ # check for bz_normal and bz_P2 as indicator in buglist.cgi
+ # use 'all' and 'map' on python2.5
+ if len(attr) == 1 and attr[0][0] == 'class' and \
+ ('bz_normal' in attr[0][1] or 'bz_blocker' in attr[0][1] or 'bz_enhancement' in attr[0][1] or 'bz_major' in attr[0][1] or 'bz_minor' in attr[0][1] or 'bz_trivial' in attr[0][1] or 'bz_critical' in attr[0][1] or 'bz_wishlist' in attr[0][1]) \
+ and 'bz_P' in attr[0][1]:
+ print "Found tr %s %s" % (tag, attr)
+ self.state = self.STATE_FOUND_TR
+ elif self.state == self.STATE_FOUND_TR and tag.lower() == "td":
+ self.state += 1
+
+ def handle_endtag(self, tag):
+ if tag.lower() == "tr":
+ print "Going back"
+ if self.state != self.STATE_NONE:
+ self.bugs.append( (self.bug,self.status) )
+ self.state = self.STATE_NONE
+ self.bug = None
+ if self.state > 1 and tag.lower() == "td":
+ print "Next TD"
+ self.state += 1
+
+ def handle_data(self,data):
+ data = data.strip()
+
+ # skip garbage
+ if len(data) == 0:
+ return
+
+ if self.state == self.STATE_FOUND_NUMBER:
+ """
+ #1995 in bugs.oe.org has [SEC] additionally to the number and we want to ignore it
+ """
+ print "Bug Number '%s'" % data.strip()
+ if self.bug:
+ print "Ignoring bug data"
+ return
+ self.bug = data
+
+ elif self.state == self.STATE_FOUND_STATUS:
+ print "Status Name '%s'" % data.strip()
+ self.status = data
+
+ def result(self):
+ print "Found bugs"
+ return self.bugs
+
+#
+bugs_openmoko = """<!-- 1.0@bugzilla.org -->
+
+
+
+
+
+
+
+
+
+
+
+<!-- 1.0@bugzilla.org -->
+
+
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>Bug List</title>
+
+
+
+
+
+ <link href="/style/style.css" rel="stylesheet" type="text/css" />
+
+ <link href="/bugzilla/css/buglist.css" rel="stylesheet" type="text/css">
+
+ </head>
+
+
+
+ <body bgcolor="#FFFFFF" onload="">
+
+
+<!-- 1.0@bugzilla.org -->
+
+
+
+
+ <div id="header">
+ <a href="http://bugzilla.openmoko.org/cgi-bin/bugzilla/" id="site_logo"><img src="/style/images/openmoko_logo.png" alt="openmoko.org" /></a>
+
+ <div id="main_navigation">
+ <ul>
+ <li><a href="http://www.openmoko.org/" class="nav_home"><span>Home</span></a></li>
+ <li><a href="http://wiki.openmoko.org/" class="nav_wiki"><span>Wiki</span></a></li>
+ <li><a href="http://bugzilla.openmoko.org/" class="nav_bugzilla selected"><span>Bugzilla</span></a></li>
+ <li><a href="http://planet.openmoko.org/" class="nav_planet"><span>Planet</span></a></li>
+ <li><a href="http://projects.openmoko.org/" class="nav_projects"><span>Projects</span></a></li>
+ <li><a href="http://lists.openmoko.org/" class="nav_lists"><span>Lists</span></a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="page_title">
+ <strong>Bug List</strong>
+ </div>
+
+ <div class="container">
+
+<div align="center">
+ <b>Fri Mar 16 20:51:52 CET 2007</b><br>
+
+
+ <a href="quips.cgi"><i>It was a time of great struggle and heroic deeds
+</i></a>
+
+</div>
+
+
+<hr>
+
+
+
+
+
+282 bugs found.
+
+
+
+
+
+
+
+
+
+
+
+<!-- 1.0@bugzilla.org -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <table class="bz_buglist" cellspacing="0" cellpadding="4" width="100%">
+ <colgroup>
+ <col class="bz_id_column">
+ <col class="bz_severity_column">
+ <col class="bz_priority_column">
+ <col class="bz_platform_column">
+ <col class="bz_owner_column">
+ <col class="bz_status_column">
+ <col class="bz_resolution_column">
+ <col class="bz_summary_column">
+ </colgroup>
+
+ <tr align="left">
+ <th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_id">ID</a>
+ </th>
+
+<th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_severity,bugs.bug_id">Sev</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.priority,bugs.bug_id">Pri</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.rep_platform,bugs.bug_id">Plt</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=map_assigned_to.login_name,bugs.bug_id">Owner</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_status,bugs.bug_id">State</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.resolution,bugs.bug_id">Result</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.short_desc,bugs.bug_id">Summary</a>
+ </th>
+
+
+ </tr>
+
+ <tr class="bz_critical bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=1">1</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>CLOS</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>kernel is running way too slow
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=2">2</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>SD card driver unstable
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=3">3</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>sean_chiang@fic.com.tw</nobr>
+ </td>
+ <td><nobr>CLOS</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Debug Board trying to control GSM_EN / FA_19
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=4">4</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>random crashes of gsmd
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=5">5</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>call progress information is lacking
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=6">6</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>sean_chiang@fic.com.tw</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>GSM_EN should be called nGSM_EN
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=7">7</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>CLOS</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>PMU RTC driver date/time conversion is erroneous
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P5 ">
+
+ <td>
+ <a href="show_bug.cgi?id=8">8</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P5</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>SD/MMC: Card sometimes not detected
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=9">9</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Boot speed too low (kernel part)
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=10">10</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>CLOS</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>u-boot support for usb-serial lacking
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=11">11</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>ken_zhao@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>u-boot lacks USB DFU support
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=12">12</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>gordon_hsu@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Boot speed too low (bootloader part)
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=13">13</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>teddy@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>power button should not immediately react
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=14">14</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>bootloader should display startup image before booting th...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=15">15</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>kernel oops when unloading g_ether
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=16">16</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>sean_chiang@fic.com.tw</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>bluetooth pullup / pulldown resistors
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=17">17</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>sean_chiang@fic.com.tw</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>microSD socket still has mechanical contact problems
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=18">18</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>OE build of u_boot with CVSDATE 20061030 uses latest git ...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=19">19</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>teddy@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>&quot;reboot&quot; doesn't work
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=20">20</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>connection status
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P3 ">
+
+ <td>
+ <a href="show_bug.cgi?id=21">21</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P3</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>sean_chiang@fic.com.tw</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>sms function missing
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=22">22</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>outgoing call generates 'segmentation fault' when the pee...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=23">23</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>dtmf support not available now
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_wishlist bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=24">24</a>
+ </td>
+
+ <td><nobr>wis</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>libgsmd/misc.h: lgsm_get_signal_quality()
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=25">25</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>davewu01@seed.net.tw</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>GtkSpinBox unfinished
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=26">26</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>ken_zhao@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Pixmap Engine and Shadows
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=27">27</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>ken_zhao@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Labels on GtkButton don't appear centered
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=28">28</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>ken_zhao@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>GtkComboBox styling woes
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=29">29</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>ken_zhao@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>GtkProgressBar styling woes
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=30">30</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>REOP</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Touchscreen emits bogus events under X
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=31">31</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Display colors are slightly off
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=32">32</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Common function for loading GdkPixbuf
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=33">33</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>incoming call status report causes gsmd to crash.
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=34">34</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>WORK</nobr>
+ </td>
+ <td>Need to decide if lgsm_handle is still valid.
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P5 ">
+
+ <td>
+ <a href="show_bug.cgi?id=35">35</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P5</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>WONT</nobr>
+ </td>
+ <td>Support debug board from u-boot
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=36">36</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Implement s3c2410 udc (usb device controller) driver in u...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=37">37</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>DUPL</nobr>
+ </td>
+ <td>Implement USB Device Firmware Upgrade (DFU)
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=38">38</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>DUPL</nobr>
+ </td>
+ <td>implement USB serial emulation in u-boot
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=39">39</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>gordon_hsu@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Move LCM initialization into u-boot (currently in kernel ...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=40">40</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>DUPL</nobr>
+ </td>
+ <td>test + debug display of image on LCM in u-boot
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=41">41</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>ken_zhao@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>evaluate sapwood theme engine
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P3 ">
+
+ <td>
+ <a href="show_bug.cgi?id=42">42</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P3</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>dynamic mtd partition table cration
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=43">43</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>StatusBar (Footer) API
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_wishlist bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=44">44</a>
+ </td>
+
+ <td><nobr>wis</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>InputMethod API
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=45">45</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Automatic opening input methods
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=46">46</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>266MHz initialization of GTA01Bv2
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=47">47</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>ken_zhao@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>DUPL</nobr>
+ </td>
+ <td>Evaluate sapwood theming engine
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=48">48</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>DUPL</nobr>
+ </td>
+ <td>Only power up the phone in case power button was pressed ...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=49">49</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Implement touchscreen &amp; click daemon
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=50">50</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Sound Event API
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=51">51</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Preferences API
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=52">52</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>cj_steven@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Single Instance Startup
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=53">53</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>tonyguan@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>DTMF tones during call
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P1 ">
+
+ <td>
+ <a href="show_bug.cgi?id=54">54</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P1</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>tonyguan@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>PIN Entry
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=55">55</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>tonyguan@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Don't pop up the dialer interface initially
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P4 ">
+
+ <td>
+ <a href="show_bug.cgi?id=56">56</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P4</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>tonyguan@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Integrate with contacts database
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=57">57</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>tonyguan@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>LATE</nobr>
+ </td>
+ <td>Recording Calls
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=58">58</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>API for devmand
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=59">59</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>ken_zhao@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Real DPI vs. Fake DPI
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=60">60</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>ken_zhao@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>fontconfig antialiasing
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=61">61</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>ken_zhao@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Theme is very slow
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_wishlist bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=62">62</a>
+ </td>
+
+ <td><nobr>wis</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>High Level Multi Layer Network Discovery API
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=63">63</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>matchbox-panel 1 vs. 2
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=64">64</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Show Cipher Status in GSM-Panel applet
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=65">65</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Visual indication for SMS overflow
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=66">66</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Applet for Missed Events
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=67">67</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>WONT</nobr>
+ </td>
+ <td>libmokopim not necessary
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=68">68</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>SIM backend for EDS
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=69">69</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Speed up System Initialization
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=70">70</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Minimize Services started on Bootup
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=71">71</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>gordon_hsu@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>make a short vibration pulse once u-boot is starting
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_wishlist bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=72">72</a>
+ </td>
+
+ <td><nobr>wis</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>gordon_hsu@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Add on-screen boot menu
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=73">73</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>test and verify battery charger control (pcf50606)
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P1 ">
+
+ <td>
+ <a href="show_bug.cgi?id=74">74</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P1</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>WONT</nobr>
+ </td>
+ <td>stub audio driver to power up amp and route audio through...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=75">75</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>PWM code for display brightness control
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=76">76</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>teddy@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Implement PWM control for vibrator
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=77">77</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>songcw@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Finish, test and verify agpsd implementation
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=78">78</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Implement and test ASoC platform driver
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P1 ">
+
+ <td>
+ <a href="show_bug.cgi?id=79">79</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P1</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>suspend/resume to RAM support
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=80">80</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>WONT</nobr>
+ </td>
+ <td>Add sysfs entry for PMU wakeup reason
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=81">81</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Decide how PMU RTC alarm interrupt is signalled to userspace
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=82">82</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>implement and test cpufreq interface to S3C2410 PLL / SLO...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=83">83</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>teddy@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>evaluate process and I/O schedulers
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=84">84</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>enable voluntary preemption
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=85">85</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>test NO_IDLE_HZ / tickless idle
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=86">86</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>APM emulation for battery / charger / charging and possib...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=87">87</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>define and implement how headphone jack routing/signallin...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=88">88</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>teddy@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>use and test PMU watchdog driver
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=89">89</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>teddy@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>determine correct gamma calibration values and put them i...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P1 ">
+
+ <td>
+ <a href="show_bug.cgi?id=90">90</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P1</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>GSM TS07.10 multiplex missing
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=91">91</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>DUPL</nobr>
+ </td>
+ <td>debug sd card timeout problems
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=92">92</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>test multiple microSD card vendors for compatibility with...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=93">93</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>test 4GB microSD card compatibility
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=94">94</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>tonyguan@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>+ symbol support
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=95">95</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>sean_chiang@fic.com.tw</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>verify charger current and battery temperature reading co...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=96">96</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>make sure PMU alarm (set via rtc interface) is persistent
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=97">97</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>remove static mtd partition table, use u-boot created dyn...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=98">98</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>how to do touch panel calibration in factory and store va...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=99">99</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>DUPL</nobr>
+ </td>
+ <td>Implement SMS support
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=100">100</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Implement Cell Broadcast support
+ </td>
+
+ </tr>
+
+
+ </table>
+
+
+
+ <table class="bz_buglist" cellspacing="0" cellpadding="4" width="100%">
+ <colgroup>
+ <col class="bz_id_column">
+ <col class="bz_severity_column">
+ <col class="bz_priority_column">
+ <col class="bz_platform_column">
+ <col class="bz_owner_column">
+ <col class="bz_status_column">
+ <col class="bz_resolution_column">
+ <col class="bz_summary_column">
+ </colgroup>
+
+ <tr align="left">
+ <th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_id">ID</a>
+ </th>
+
+<th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_severity,bugs.bug_id">Sev</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.priority,bugs.bug_id">Pri</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.rep_platform,bugs.bug_id">Plt</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=map_assigned_to.login_name,bugs.bug_id">Owner</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_status,bugs.bug_id">State</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.resolution,bugs.bug_id">Result</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.short_desc,bugs.bug_id">Summary</a>
+ </th>
+
+
+ </tr>
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=101">101</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Implement GPRS setup/teardown support
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=102">102</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>SIM phonebook access
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P1 ">
+
+ <td>
+ <a href="show_bug.cgi?id=103">103</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P1</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>power-up/power-down GSM Modem
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=104">104</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>tonyguan@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>LATE</nobr>
+ </td>
+ <td>Volume control
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=105">105</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>DUPL</nobr>
+ </td>
+ <td>add passthrough mode
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=106">106</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>tonyguan@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>LATE</nobr>
+ </td>
+ <td>Emergency Call Support
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=107">107</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>obtain list of operators / control operator selection
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=108">108</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>tonyguan@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>REOP</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>allow query of manufacturer/model/revision/imei
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=109">109</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>add dbus interface, like recent upstream gpsd
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=110">110</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>look into gps / agps integration
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=111">111</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>integrate agpsd in our system power management.
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=112">112</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>How to deliver kernel-level alarm to destination app
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=113">113</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>marcel@holtmann.org</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>bluetooth headset support
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=114">114</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Who is managing wakeup times?
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=115">115</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>marcel@holtmann.org</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>A2DP / alsa integration
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=116">116</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>marcel@holtmann.org</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>bluetooth HID support (host)
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=117">117</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>marcel@holtmann.org</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>bluetooth HID support (device)
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=118">118</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>marcel@holtmann.org</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>bluetooth networking support
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P3 ">
+
+ <td>
+ <a href="show_bug.cgi?id=119">119</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P3</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>merge openmoko-taskmanager into openmoko-footer
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=120">120</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>marcel@holtmann.org</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>bluetooth OBEX
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P3 ">
+
+ <td>
+ <a href="show_bug.cgi?id=121">121</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P3</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>merge openmoko-mainmenu into openmoko-mainmenu (panel)
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=122">122</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>rename openmoko-history to openmoko-taskmanager
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=123">123</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>DUPL</nobr>
+ </td>
+ <td>rename openmoko-history to openmoko-taskmanager
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=124">124</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>modem volume control on connection
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=125">125</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>davewu01@seed.net.tw</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>FInger UI is not usable on 2.8&quot; screen
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=126">126</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>sunzhiyong@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Remove back functionality from Main Menu
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=127">127</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>davewu01@seed.net.tw</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Power On / Off Images needed
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=128">128</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>cj_steven@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Tap and hold on panel icon doesn't change to Today applic...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=129">129</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>ken_zhao@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Create / Find better system fonts
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=130">130</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>GTK Popup menus size incorrectly
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=131">131</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>davewu01@seed.net.tw</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Move Search Open / Close buttons into same location
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=132">132</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>sunzhiyong@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Task Manager is not quick to use
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=133">133</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>davewu01@seed.net.tw</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Designer image layouts should have both 4 corners and ful...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=134">134</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Stylus applications need close function
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=135">135</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Finger applications need close functionality
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=136">136</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>application manager doesn't build
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=137">137</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>submit patch against ipkg upstream
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=138">138</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>sunzhiyong@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>REOP</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>submit patch against matchbox-window-manager upstream
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=139">139</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>GSM API
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=140">140</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>stefan@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>add network-enabled fbgrab from openEZX to openmoko-devel...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=141">141</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Need support for device under WIndows and OS X
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=142">142</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>sjf2410-linux cleanup / help message / NAND read
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=143">143</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>REOP</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Implement NAND write/read support in OpenOCD
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=144">144</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>when phone is hard-rebooted, Xfbdev complains about /tmp/...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=145">145</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>WONT</nobr>
+ </td>
+ <td>battery is not automatically charging
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=146">146</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>sjf2410-linux does not contain latest svn code
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=147">147</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>WONT</nobr>
+ </td>
+ <td>openmoko-panel-applet could not be resized
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P1 ">
+
+ <td>
+ <a href="show_bug.cgi?id=148">148</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P1</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>gsmd not talking to TI modem on GTA01Bv2
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=149">149</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>lm4857 not i2c address compliant
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=150">150</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>graeme.gregory@wolfsonmicro...</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>INVA</nobr>
+ </td>
+ <td>ASoC patch doesn't compile
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=151">151</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>cj_steven@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Does mainmenu need libmatchbox or not?
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=152">152</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>cj_steven@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>VFOLDERDIR is hardcoded
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=153">153</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>sunzhiyong@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Rationale for copying GtkIconView instead of deriving?
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=154">154</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>sunzhiyong@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>mainmenu crashes when clicking wheel the 2nd time
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=155">155</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>sunzhiyong@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>How to get back one level if you are in a subdirectory?
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=156">156</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>sunzhiyong@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Where is mainmenu going to look for applications?
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=157">157</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>davewu01@seed.net.tw</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>DUPL</nobr>
+ </td>
+ <td>The sizes of each keys are too small
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=158">158</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>musicplayer crashes
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=159">159</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>sunzhiyong@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>display thumbnails of actual applications
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=160">160</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>sunzhiyong@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>display thumbnails in 3x3 grid
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=161">161</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>davewu01@seed.net.tw</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Docked Keypad is too small
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=162">162</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>REMI</nobr>
+ </td>
+ <td>libmutil0_svn.bb setup misses libltdl creation
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=163">163</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Audio Profile Management
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P1 ">
+
+ <td>
+ <a href="show_bug.cgi?id=164">164</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P1</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>improve non-SanDisk microSD support in u-boot
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=165">165</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>openmoko-simplemediaplayer doesn't build in OE
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=166">166</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>u-boot cdc_acm hot un-plug/replug hang
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=167">167</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>stefan@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>add LCM QVGA switching support
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=168">168</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>usb0 is not automatically configured
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=169">169</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>gdb currently broken (gdb-6.4-r0)
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=170">170</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>usbtty: sometimes bogus characters arrive
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=171">171</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>agpsd source code and bitbake rules not in our svn
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P1 ">
+
+ <td>
+ <a href="show_bug.cgi?id=172">172</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P1</nobr>
+ </td>
+ <td><nobr>Oth</nobr>
+ </td>
+ <td><nobr>tonyguan@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>missing openmoko-dialer-window-pin.o breaks build
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=173">173</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Oth</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>no NAND partitions due to ID mismatch if using defaults
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=174">174</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Oth</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>defconfig-fic-gta01 could use updating
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=175">175</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>MOKO_FINGER_WINDOW has to show_all and then hide to initi...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=176">176</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>libgsmd need a mechanism to avoid dead waiting.
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=177">177</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>libmokoui widget functions should return GtkWidget
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=178">178</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>u-boot 'factory reset' option
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=179">179</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Implement u-boot power-off timer
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=180">180</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>uboot build broken for EABI
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_wishlist bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=181">181</a>
+ </td>
+
+ <td><nobr>wis</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Password Storage/Retrieval Application
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=182">182</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-panel-demo-simple hardcodes -Werror
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=183">183</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>openmoko-simple-mediaplayer missing mkinstalldirs and has...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=184">184</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>cj_steven@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>openmoko-mainmenu should link against libmb
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=185">185</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>thomas@openedhand.com</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-dates lacks intltool-update.in
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=186">186</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>thomas@openedhand.com</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Fingerbubbles take endless amount of ram and get OOMed
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=187">187</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>src/target/OM-2007/README doesn't mention ipkg patch
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=188">188</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-panel-demo fails to build
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P5 ">
+
+ <td>
+ <a href="show_bug.cgi?id=189">189</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P5</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>thomas@openedhand.com</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-dates tries to include non-existant header
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P5 ">
+
+ <td>
+ <a href="show_bug.cgi?id=190">190</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P5</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>thomas@openedhand.com</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>No rule to build dates.desktop
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=191">191</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>sean_chiang@fic.com.tw</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>investigate if we can set CPU voltage to 1.8V on 200MHz o...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=192">192</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Graphic bootsplash during userspace sysinit
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P3 ">
+
+ <td>
+ <a href="show_bug.cgi?id=193">193</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P3</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>sean_chiang@fic.com.tw</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Information about current charging status when AC is online
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=194">194</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>stefan@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>s3c2410fb 8bit mode corrupt
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=195">195</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>stefan@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>passthrough mode (Directly use GSM Modem from PC
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=196">196</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Merge back fixes to openmoko recipes from OE
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=197">197</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Make theme suitable for qvga screens.
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=198">198</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Please enable CONFIG_TUN as a module in defconfig-fic-gta01
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=199">199</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>sean_mosko@fic.com.tw</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>We need freely licensed ringtones
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=200">200</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>PARALLEL_MAKE seems to not work
+ </td>
+
+ </tr>
+
+
+ </table>
+
+
+
+ <table class="bz_buglist" cellspacing="0" cellpadding="4" width="100%">
+ <colgroup>
+ <col class="bz_id_column">
+ <col class="bz_severity_column">
+ <col class="bz_priority_column">
+ <col class="bz_platform_column">
+ <col class="bz_owner_column">
+ <col class="bz_status_column">
+ <col class="bz_resolution_column">
+ <col class="bz_summary_column">
+ </colgroup>
+
+ <tr align="left">
+ <th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_id">ID</a>
+ </th>
+
+<th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_severity,bugs.bug_id">Sev</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.priority,bugs.bug_id">Pri</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.rep_platform,bugs.bug_id">Plt</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=map_assigned_to.login_name,bugs.bug_id">Owner</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_status,bugs.bug_id">State</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.resolution,bugs.bug_id">Result</a>
+ </th><th colspan="1">
+ <a href="buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.short_desc,bugs.bug_id">Summary</a>
+ </th>
+
+
+ </tr>
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=201">201</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Use TEXT_BASE 0x37f80000 in u-boot on GTA01Bv2 and higher
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=202">202</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Start using NAND hardware ECC support
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=203">203</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>fix the web site: http://openmoko.com/
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=204">204</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Fatal error in Special:Newimages
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=205">205</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>add code to u-boot to query hardware revision and serial ...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=206">206</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Disallow setting of overvoltage via pcf50606 kernel driver
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=207">207</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>DFU mode should only be enabled when in &quot;911 key&quot; mode
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=208">208</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>u-boot DFU upload broken
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=209">209</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>u-boot DFU needs to block console access while in DFU mode
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=210">210</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Oth</nobr>
+ </td>
+ <td><nobr>henryk@ploetzli.ch</nobr>
+ </td>
+ <td><nobr>ASSI</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>&quot;now&quot; causes frequent rebuilds and fills disks
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=211">211</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>sjf2410-linux-native.bb has do_deploy in the wrong location
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=212">212</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Oth</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Charging seems completely broken
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=213">213</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Oth</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-dates-0.1+svnnow fails certificate check
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=214">214</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Add CVS_TARBALL_STASH for missing upstream sources
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=215">215</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>fingerwheel crashes mainmenu when touching the black part
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P3 ">
+
+ <td>
+ <a href="show_bug.cgi?id=216">216</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P3</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>thomas@openedhand.com</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>DUPL</nobr>
+ </td>
+ <td>contacts crashes when tying to enter import widget
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=217">217</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Implement NAND OTP area read/write as u-boot commands
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=218">218</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Distinguish stylus from finger via tslib
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=219">219</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>tonyguan@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-dialer r1159 fails to compile
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=220">220</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>libgsmd_device.c is missing
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=221">221</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>thomas@openedhand.com</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Can't add new contacts via the gui
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=222">222</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>thomas@openedhand.com</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>WORK</nobr>
+ </td>
+ <td>Can't add new events
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=223">223</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>thomas@openedhand.com</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>weekview only displays half the week
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=224">224</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>call to uboot-mkimage requires ${STAGING_BINDIR} prefix
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=225">225</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Fix ordering of do_deploy in uboot to be compatible with ...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=226">226</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>REOP</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>dfu-util-native do_deploy tries to install from wrong sou...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=227">227</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Add openmoko-mirrors.bbclass and enable use of it
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=228">228</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>openmoko applications(contacts, appmanager ...) easily c...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=229">229</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>davewu01@seed.net.tw</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>outgoing call/incoming call/talking status should be more...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_trivial bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=230">230</a>
+ </td>
+
+ <td><nobr>tri</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Use the toolchain speified in $CROSS_COMPILE in u-boot.
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_minor bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=231">231</a>
+ </td>
+
+ <td><nobr>min</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>switch display backlight GPIO to &quot;output, off&quot; when suspe...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=232">232</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Oth</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>n-plicate buglog mails
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=233">233</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>power-off timer should be halted in DFU mode
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=234">234</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>werner@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>check for bad blocks in first _and_ second page of each b...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=235">235</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Deploy openocd-native, not openocd, and make openocd-nati...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=236">236</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Close moko_dialog_window several times, moko_stylus_demo ...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=237">237</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Fix remaining https urls in bitbake recipes.
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=238">238</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Mac</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>LATE</nobr>
+ </td>
+ <td>manual test bug
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=239">239</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>LATE</nobr>
+ </td>
+ <td>foo
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=240">240</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>INVA</nobr>
+ </td>
+ <td>broken-1.0-r0-do_fetch
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=241">241</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>CLOS</nobr>
+ </td>
+ <td><nobr>LATE</nobr>
+ </td>
+ <td>broken-1.0-r0-do_fetch
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=242">242</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>INVA</nobr>
+ </td>
+ <td>broken-1.0-r0-do_compile
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=243">243</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>INVA</nobr>
+ </td>
+ <td>broken-1.0-r0-do_configure
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=244">244</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>I can't build Xorg7.1 from MokoMakefile
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=245">245</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Neo crashes when writing large amounts of data to SD
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=246">246</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>sean_chiang@fic.com.tw</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Debug board needs to be recognized by mainline linux kernel.
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=247">247</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>thomas@openedhand.com</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-dates svn rev. 335 does no longer build
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=248">248</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Buttons disappear under zoom
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=249">249</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>add command to print gsmd version number
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=250">250</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>INVA</nobr>
+ </td>
+ <td>broken-1.0-r0-do_compile
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=251">251</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>INVA</nobr>
+ </td>
+ <td>broken-1.0-r0-do_compile
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=252">252</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>REOP</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>openmoko-devel-image-1.0-r0-do_rootfs
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=253">253</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Mount /tmp as tmpfs
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=254">254</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Oth</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>bug with &quot;patch&quot; on arklinux 2006.1??
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=255">255</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>tony_tu@fiwin.com.tw</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>battery voltage scale is not correct
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_critical bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=256">256</a>
+ </td>
+
+ <td><nobr>cri</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>sean_chiang@fic.com.tw</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>GSM Modem doesn't seem to work on some devices
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=257">257</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Oth</nobr>
+ </td>
+ <td><nobr>sean_chiang@fic.com.tw</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>AUX button sticking
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_major bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=258">258</a>
+ </td>
+
+ <td><nobr>maj</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>All</nobr>
+ </td>
+ <td><nobr>cj_steven@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Main Menu needs to have Single Instance functionality
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=259">259</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>stefan@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>implement 500mA charging in u-boot
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=260">260</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>stefan@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>implement 100mA charging in Linux
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=261">261</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>stefan@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Implement 500mA charging using wall-outlet charger
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=262">262</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>Indicate different charging mode in battery applet
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_blocker bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=263">263</a>
+ </td>
+
+ <td><nobr>blo</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>gsmd doesn't receive AT reply from the modem properly.
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=264">264</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>package libelf-0.8.6-r0: task do_populate_staging: failed
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=265">265</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>MokoMakefile: perl-native fix
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=266">266</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>ftdi-eeprom-native missing confuse-native dependency
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_enhancement bz_P4 ">
+
+ <td>
+ <a href="show_bug.cgi?id=267">267</a>
+ </td>
+
+ <td><nobr>enh</nobr>
+ </td>
+ <td><nobr>P4</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>internal function duplicates strstr(3)
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=268">268</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>openmoko-today crashes when one of the buttons is pressed
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=269">269</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-contacts-0.1+svnnow-r3_0_200703151745-do_unpack
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=270">270</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>does our xserver need security updates?
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=271">271</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>laforge@openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>It would be nice if ppp was supported by kernel
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=272">272</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-contacts-0.1+svnnow-r3_0_200703152250-do_unpack
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=273">273</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-contacts-0.1+svnnow-r3_0_200703160254-do_unpack
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=274">274</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-contacts-0.1+svnnow-r3_0_200703160321-do_unpack
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=275">275</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-contacts-0.1+svnnow-r3_0_200703160350-do_unpack
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P3 ">
+
+ <td>
+ <a href="show_bug.cgi?id=276">276</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P3</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>songcw@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>The open file window is too ugly
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=277">277</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-contacts-0.1+svnnow-r3_0_200703160712-do_unpack
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=278">278</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>mickey@vanille-media.de</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>openmoko-contacts-0.1+svnnow-r3_0_200703160805-do_unpack
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=279">279</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>RESO</nobr>
+ </td>
+ <td><nobr>FIXE</nobr>
+ </td>
+ <td>Appmanager crush when install packages
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=280">280</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>songcw@fic-sh.com.cn</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>openmoko-appmanager not refresh the packages list after r...
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P3 ">
+
+ <td>
+ <a href="show_bug.cgi?id=281">281</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P3</nobr>
+ </td>
+ <td><nobr>PC</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>implicit declaration of function `strdup'
+ </td>
+
+ </tr>
+
+
+
+
+
+
+ <tr class="bz_normal bz_P2 ">
+
+ <td>
+ <a href="show_bug.cgi?id=282">282</a>
+ </td>
+
+ <td><nobr>nor</nobr>
+ </td>
+ <td><nobr>P2</nobr>
+ </td>
+ <td><nobr>Neo</nobr>
+ </td>
+ <td><nobr>buglog@lists.openmoko.org</nobr>
+ </td>
+ <td><nobr>NEW</nobr>
+ </td>
+ <td><nobr></nobr>
+ </td>
+ <td>microSD Problem
+ </td>
+
+ </tr>
+
+
+ </table>
+
+
+
+
+282 bugs found.
+
+
+<br>
+
+
+
+
+
+
+
+
+
+
+
+
+ <form method="post" action="long_list.cgi">
+ <input type="hidden" name="buglist" value="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282">
+ <input type="submit" value="Long Format">
+
+ <a href="query.cgi">Query Page</a> &nbsp;&nbsp;
+ <a href="enter_bug.cgi">Enter New Bug</a> &nbsp;&nbsp;
+ <a href="colchange.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">Change Columns</a> &nbsp;&nbsp;
+
+
+
+ <a href="query.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">Edit this Query</a> &nbsp;&nbsp;
+
+ </form>
+
+
+
+
+
+
+<!-- 1.0@bugzilla.org -->
+
+
+
+
+
+
+</div>
+
+<div class="footer">
+ <div class="group">This is <b>Bugzilla</b>: the Mozilla bug system. For more information about what Bugzilla is and what it can do, see <a href="http://www.bugzilla.org/">bugzilla.org</a>.</div>
+ <!-- 1.0@bugzilla.org -->
+
+
+
+
+
+
+<form method="get" action="show_bug.cgi">
+ <div class="group">
+ <a href="enter_bug.cgi">New</a> | <a href="query.cgi">Query</a> | <input type="submit" value="Find"> bug # <input name="id" size="6"> | <a href="reports.cgi">Reports</a>
+ </div>
+
+ <div>
+ <a href="createaccount.cgi">New&nbsp;Account</a> | <a href="query.cgi?GoAheadAndLogIn=1">Log&nbsp;In</a>
+ </div>
+</form>
+</div>
+
+</body>
+</html>
+"""
+
+bugfinder =BugQueryExtractor()
+bugfinder.feed(bugs_openmoko)
+print bugfinder.result()
+print len(bugfinder.result())
+
+seen_numbers = {}
+for (number,_) in bugfinder.result():
+ seen_numbers[number] = "Yes"
+
+for i in range(1,283):
+ if not seen_numbers.has_key(str(i)):
+ print "Not seen %d" % i
diff --git a/packages/altboot/files/.mtn2git_empty b/contrib/qa/checksum/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/altboot/files/.mtn2git_empty
+++ b/contrib/qa/checksum/.mtn2git_empty
diff --git a/contrib/qa/checksum/checksum.py b/contrib/qa/checksum/checksum.py
new file mode 100644
index 0000000000..6880f045d3
--- /dev/null
+++ b/contrib/qa/checksum/checksum.py
@@ -0,0 +1,74 @@
+#
+# Helper utilitiy to verify checksums of SRC_URI's
+#
+# To ease parsing I will use INI files to contain the
+# checksums, at least they will force some kind of structure. This allows
+# to easily add and replace new sums
+#
+#
+# Example:
+# [PN-PV-filename]
+# md5=THESUM
+# sha256=OTHERSUM
+#
+# [PN-filename]
+# md5=THESUM
+# sha256=OTHERSUM
+
+
+def verify_file(config_path, pn, pv, src_uri, localpath):
+ """
+ Verify using the INI file at config_path and check that
+ the localpath matches the one specified by the PN-PV-SRCURI
+ inside the ini file
+ """
+ import ConfigParser, os
+ parser = ConfigParser.ConfigParser()
+ if not len(parser.read(config_path)) == 1:
+ raise Exception("Can not open the '%s'" % config_path)
+
+ # Try PN-PV-SRC_URI first and then try PN-SRC_URI
+ # we rely on the get method to create errors
+ pn_pv_src = "%s-%s-%s" % (pn,pv,src_uri)
+ pn_src = "%s-%s" % (pn,src_uri)
+ if parser.has_section(pn_pv_src):
+ md5 = parser.get(pn_pv_src, "md5")
+ sha256 = parser.get(pn_pv_src, "sha256")
+ elif parser.has_section(pn_src):
+ md5 = parser.get(pn_src, "md5")
+ sha256 = parser.get(pn_src, "sha256")
+ else:
+ raise Exception("Can not find a section for '%s' '%s' and '%s'" % (pn,pv,src_uri))
+
+ # md5 and sha256 should be valid now
+ if not os.path.exists(localpath):
+ raise Exception("The path does not exist '%s'" % localpath)
+
+
+ # call md5(sum) and shasum
+ try:
+ md5pipe = os.popen('md5sum ' + localpath)
+ md5data = (md5pipe.readline().split() or [ "" ])[0]
+ md5pipe.close()
+ except OSError:
+ raise Exception("Executing md5sum failed")
+
+ try:
+ shapipe = os.popen('shasum -a256 -p ' + localpath)
+ shadata = (shapipe.readline().split() or [ "" ])[0]
+ shapipe.close()
+ except OSError:
+ raise Exception("Executing shasum failed")
+
+ if not md5 == md5data:
+ raise Exception("MD5 Sums do not match. Wanted: '%s' Got: '%s'" % (md5, md5data))
+
+ if not sha256 == shadata:
+ raise Exception("SHA256 Sums do not match. Wanted: '%s' Got: '%s'" % (sha256, shadata))
+
+
+ return True
+
+
+# Test it
+verify_file("sample.conf", "qtopia-core", "4.3.0", "ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-4.2.3.tar.gz", "test.file")
diff --git a/contrib/qa/checksum/sample.conf b/contrib/qa/checksum/sample.conf
new file mode 100644
index 0000000000..478a9a05f9
--- /dev/null
+++ b/contrib/qa/checksum/sample.conf
@@ -0,0 +1,9 @@
+[qtopia-core-4.3-ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-4.3.0beta.tar.gz]
+md5=123
+sha256=1000
+
+[qtopia-core-ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-4.2.3.tar.gz]
+md5=d41d8cd98f00b204e9800998ecf8427e
+sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
+
+# Test commets and such
diff --git a/packages/altboot/files/akita/.mtn2git_empty b/contrib/qa/checksum/test.file
index e69de29bb2..e69de29bb2 100644
--- a/packages/altboot/files/akita/.mtn2git_empty
+++ b/contrib/qa/checksum/test.file
diff --git a/contrib/site-conf/aclocal.m4 b/contrib/site-conf/aclocal.m4
index f415403d6d..65b9fa316a 100644
--- a/contrib/site-conf/aclocal.m4
+++ b/contrib/site-conf/aclocal.m4
@@ -11,5 +11,45 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
+m4_include([m4/apache.m4])
+m4_include([m4/bash.m4])
m4_include([m4/builtin.m4])
+m4_include([m4/clamav.m4])
+m4_include([m4/coreutils.m4])
+m4_include([m4/cvs.m4])
+m4_include([m4/dbus.m4])
+m4_include([m4/dpkg.m4])
+m4_include([m4/edb.m4])
+m4_include([m4/enca.m4])
+m4_include([m4/ettercap.m4])
+m4_include([m4/fget.m4])
+m4_include([m4/fnmatch.m4])
+m4_include([m4/gettext.m4])
+m4_include([m4/glib.m4])
+m4_include([m4/glib2.m4])
m4_include([m4/gnu.m4])
+m4_include([m4/httppc.m4])
+m4_include([m4/ipsectools.m4])
+m4_include([m4/jikes.m4])
+m4_include([m4/lftp.m4])
+m4_include([m4/libesmtp.m4])
+m4_include([m4/libidl.m4])
+m4_include([m4/libnet.m4])
+m4_include([m4/libxfce4util.m4])
+m4_include([m4/links.m4])
+m4_include([m4/mono.m4])
+m4_include([m4/mysql.m4])
+m4_include([m4/nano.m4])
+m4_include([m4/orbit2.m4])
+m4_include([m4/pcap.m4])
+m4_include([m4/php.m4])
+m4_include([m4/rsync.m4])
+m4_include([m4/samba.m4])
+m4_include([m4/screen.m4])
+m4_include([m4/sleepycat.m4])
+m4_include([m4/slrn.m4])
+m4_include([m4/socat.m4])
+m4_include([m4/ssh.m4])
+m4_include([m4/startupnotification.m4])
+m4_include([m4/sudo.m4])
+m4_include([m4/xffm.m4])
diff --git a/contrib/site-conf/m4/mysql.m4 b/contrib/site-conf/m4/mysql.m4
index 5c6157f865..2db7e668f3 100644
--- a/contrib/site-conf/m4/mysql.m4
+++ b/contrib/site-conf/m4/mysql.m4
@@ -1 +1,101 @@
# Tests for mysql
+
+# A local version of AC_CHECK_SIZEOF that includes sys/types.h
+dnl MYSQL_CHECK_SIZEOF(TYPE [, CROSS-SIZE])
+AC_DEFUN([MYSQL_CHECK_SIZEOF],
+[changequote(<<, >>)dnl
+dnl The name to #define.
+define(<<AC_TYPE_NAME>>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
+dnl The cache variable name.
+define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
+changequote([, ])dnl
+AC_MSG_CHECKING(size of $1)
+AC_CACHE_VAL(AC_CV_NAME,
+[AC_TRY_RUN([#include <stdio.h>
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+main()
+{
+ FILE *f=fopen("conftestval", "w");
+ if (!f) exit(1);
+ fprintf(f, "%d\n", sizeof($1));
+ exit(0);
+}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$2], , , AC_CV_NAME=$2))])dnl
+AC_MSG_RESULT($AC_CV_NAME)
+AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [ ])
+undefine([AC_TYPE_NAME])dnl
+undefine([AC_CV_NAME])dnl
+])
+
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_C_INLINE
+AC_TYPE_OFF_T
+AC_TYPE_SIZE_T
+AC_STRUCT_ST_RDEV
+AC_HEADER_TIME
+AC_STRUCT_TM
+
+AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
+AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
+AC_CHECK_TYPES([u_int32_t])
+
+dnl Checks for header files.
+AC_CHECK_HEADERS(malloc.h sys/cdefs.h)
+
+dnl Checks for library functions.
+AC_FUNC_ALLOCA
+AC_PROG_GCC_TRADITIONAL
+AC_TYPE_SIGNAL
+
+AC_CHECK_FUNCS(re_comp regcomp strdup)
+AC_CHECK_FUNCS(strlcat strlcpy)
+AC_CHECK_FUNCS(issetugid)
+AC_CHECK_FUNCS(fgetln)
+AC_CHECK_FUNCS(getline flockfile)
+AC_CHECK_FUNCS(lstat putenv select setenv setlocale strcoll tcgetattr)
+
+AC_FUNC_MMAP
+AC_TYPE_SIGNAL
+AC_FUNC_UTIME_NULL
+AC_FUNC_VPRINTF
+
+# AC_CHECK_SIZEOF return 0 when it does not find the size of a
+# type. We want a error instead.
+AC_CHECK_SIZEOF(char, 1)
+if test "$ac_cv_sizeof_char" -eq 0
+then
+ AC_MSG_ERROR([No size for char type.
+A likely cause for this could be that there isn't any
+static libraries installed. You can verify this by checking if you have libm.a
+in /lib, /usr/lib or some other standard place. If this is the problem,
+install the static libraries and try again. If this isn't the problem,
+examine config.log for possible errors. If you want to report this, use
+'scripts/mysqlbug' and include at least the last 20 rows from config.log!])
+fi
+AC_CHECK_SIZEOF(char*, 4)
+AC_CHECK_SIZEOF(int, 4)
+if test "$ac_cv_sizeof_int" -eq 0
+then
+ AC_MSG_ERROR("No size for int type.")
+fi
+AC_CHECK_SIZEOF(long, 4)
+if test "$ac_cv_sizeof_long" -eq 0
+then
+ AC_MSG_ERROR("No size for long type.")
+fi
+AC_CHECK_SIZEOF(long long, 8)
+if test "$ac_cv_sizeof_long_long" -eq 0
+then
+ AC_MSG_ERROR("MySQL needs a long long type.")
+fi
+# off_t is not a builtin type
+MYSQL_CHECK_SIZEOF(off_t, 4)
+if test "$ac_cv_sizeof_off_t" -eq 0
+then
+ AC_MSG_ERROR("MySQL needs a off_t type.")
+fi
diff --git a/files/device_table-ezx.txt b/files/device_table-ezx.txt
new file mode 100644
index 0000000000..5e54ff928b
--- /dev/null
+++ b/files/device_table-ezx.txt
@@ -0,0 +1 @@
+/dev/mux c 660 0 5 250 0 0 1 8
diff --git a/files/device_table-minimal.txt b/files/device_table-minimal.txt
index 66cafae8c5..04fcc413a2 100644
--- a/files/device_table-minimal.txt
+++ b/files/device_table-minimal.txt
@@ -1,3 +1,13 @@
+#<path> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>
+#/dev/mem c 640 0 0 1 1 0 0 -
+#
+#type can be one of:
+# f A regular file
+# d Directory
+# c Character special device file
+# b Block special device file
+# p Fifo (named pipe)
+
/dev/initctl p 600 0 0 - - - -
/dev/apm_bios c 660 0 46 10 134 - - -
/dev/fb0 c 600 0 0 29 0 - - -
@@ -18,3 +28,5 @@
/bin/tinylogin f 4755 0 0 - - - -
/bin/mount f 4755 0 0 - - - -
/bin/umount f 4755 0 0 - - - -
+/dev/random c 644 0 0 1 8 - - -
+/dev/urandom c 644 0 0 1 9 - - -
diff --git a/packages/altboot/files/altboot-menu/.mtn2git_empty b/packages/0xFFFF/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/altboot/files/altboot-menu/.mtn2git_empty
+++ b/packages/0xFFFF/.mtn2git_empty
diff --git a/packages/0xFFFF/0xffff-native_0.1.bb b/packages/0xFFFF/0xffff-native_0.1.bb
new file mode 100644
index 0000000000..b709977179
--- /dev/null
+++ b/packages/0xFFFF/0xffff-native_0.1.bb
@@ -0,0 +1,17 @@
+require 0xffff.inc
+
+inherit native
+
+do_stage() {
+ install -m 755 0xFFFF ${STAGING_BINDIR_NATIVE}
+}
+
+do_deploy[dirs] = "${S}"
+
+do_deploy() {
+ install -m 755 0xFFFF ${DEPLOY_DIR_IMAGE}
+}
+
+addtask deploy before do_package after do_install
+
+
diff --git a/packages/0xFFFF/0xffff.inc b/packages/0xFFFF/0xffff.inc
new file mode 100644
index 0000000000..2618a3b6bc
--- /dev/null
+++ b/packages/0xFFFF/0xffff.inc
@@ -0,0 +1,14 @@
+DESCRIPTION = "The 'Open Free Fiasco Firmware Flasher' aka 0xFFFF utility aims to implement a free (GPL'd) userspace handler for the NOLO bootloader."
+LICENSE = "GPLv2"
+
+SRC_URI = "http://www.nopcode.org/0xFFFF/get/0xFFFF-${PV}.tar.gz"
+
+S = "${WORKDIR}/0xFFFF-${PV}/src"
+
+CFLAGS += '-DVERSION="${PV}"'
+BUILD_CFLAGS += '-DVERSION="${PV}"'
+
+do_compile() {
+ oe_runmake
+}
+
diff --git a/packages/0xFFFF/0xffff_0.1.bb b/packages/0xFFFF/0xffff_0.1.bb
new file mode 100644
index 0000000000..fb3b93d415
--- /dev/null
+++ b/packages/0xFFFF/0xffff_0.1.bb
@@ -0,0 +1,6 @@
+require 0xffff.inc
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 755 0xFFFF ${D}${bindir}
+}
diff --git a/packages/aalib/aalib_1.4rc5.bb b/packages/aalib/aalib_1.4rc5.bb
index c2afe0856c..ed6ee78186 100644
--- a/packages/aalib/aalib_1.4rc5.bb
+++ b/packages/aalib/aalib_1.4rc5.bb
@@ -2,6 +2,7 @@ DEPENDS = "ncurses"
DESCRIPTION = "An ASCII art gfx library."
SECTION = "libs"
LICENSE="LGPL"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/aa-project/aalib-${PV}.tar.gz \
file://configure.patch;patch=1"
@@ -12,3 +13,9 @@ inherit autotools
EXTRA_OECONF = '--without-x11-driver --without-slang-driver \
--with-curses-driver --without-gpm \
--without-x --with-ncurses=${STAGING_LIBDIR}/..'
+
+do_stage() {
+ oe_libinstall -a -so -C src libaa ${STAGING_LIBDIR}
+ install -d ${STAGING_INCDIR}/
+ install -m 0644 src/*.h ${STAGING_INCDIR}/
+}
diff --git a/packages/abiword/abiword-2.5.inc b/packages/abiword/abiword-2.5.inc
new file mode 100644
index 0000000000..3184be72b4
--- /dev/null
+++ b/packages/abiword/abiword-2.5.inc
@@ -0,0 +1,61 @@
+DESCRIPTION = "AbiWord is free word processing program similar to Microsoft(r) Word"
+HOMEPAGE = "http://www.abiword.org""
+SECTION = "x11/office"
+LICENSE = "GPLv2"
+DEPENDS = "perl-native wv libgsf libgnomeprint libgnomeprintui libglade libfribidi enchant jpeg libpng libxml2"
+RDEPENDS = "enchant glibc-gconv-ibm850 glibc-gconv-cp1252 \
+ glibc-gconv-iso8859-15 glibc-gconv-iso8859-1"
+
+SRC_URI = "http://www.abiword.org/downloads/abiword/${PV}/source/abiword-${PV}.tar.gz"
+
+#want 2.x from 2.x.y for the installation directory
+SHRT_VER = "${@bb.data.getVar('PV',d,1).split('.')[0]}.${@bb.data.getVar('PV',d,1).split('.')[1]}"
+
+FILES_${PN} += " \
+ ${datadir}/icons/* \
+ ${datadir}/AbiSuite-${SHRT_VER}/AbiWord/glade \
+ ${datadir}/AbiSuite-${SHRT_VER}/AbiWord/scripts \
+ ${datadir}/AbiSuite-${SHRT_VER}/AbiWord/system.profile-en \
+ ${datadir}/AbiSuite-${SHRT_VER}/AbiWord/system.profile-en_GB \
+# ${datadir}/AbiSuite-${SHRT_VER}/templates/A4.awt \
+# ${datadir}/AbiSuite-${SHRT_VER}/templates/US-Letter.awt \
+ ${datadir}/AbiSuite-${SHRT_VER}/templates/normal.awt \
+ ${datadir}/AbiSuite-${SHRT_VER}/templates/normal.awt-en_GB \
+ ${datadir}/AbiSuite-${SHRT_VER}/templates/Employee-Directory.awt \
+ ${datadir}/AbiSuite-${SHRT_VER}/templates/Business-Report.awt \
+ ${datadir}/AbiSuite-${SHRT_VER}/templates/Fax-Coversheet.awt \
+ ${datadir}/AbiSuite-${SHRT_VER}/templates/Resume.awt \
+ ${datadir}/AbiSuite-${SHRT_VER}/templates/Two-Columns.awt \
+ ${datadir}/AbiSuite-${SHRT_VER}/templates/Memo.awt \
+ ${datadir}/AbiSuite-${SHRT_VER}/templates/Press-Release.awt "
+
+inherit autotools pkgconfig
+
+PARALLEL_MAKE = ""
+
+EXTRA_OECONF = " --disable-pspell \
+ --enable-enchant \
+ --with-sys-wv"
+
+# AbiWord configure.ac does not play nicely with autoreconf
+# so use the autogen.sh script that comes with AbiWord
+#
+do_configure() {
+ cd ${S}
+ export NOCONFIGURE="no"; ./autogen.sh
+ oe_runconf
+}
+
+
+do_install_append() {
+ install -d ${D}${datadir}/pixmaps/
+ mv ${D}${datadir}/icons/* ${D}${datadir}/pixmaps/
+}
+
+PACKAGES += " abiword-clipart abiword-icons abiword-strings abiword-systemprofiles abiword-templates "
+
+FILES_abiword-clipart += "${datadir}/AbiSuite-${SHRT_VER}/clipart"
+FILES_abiword-icons += "${datadir}/AbiSuite-${SHRT_VER}/icons"
+FILES_abiword-strings += "${datadir}/AbiSuite-${SHRT_VER}/AbiWord/strings"
+FILES_abiword-systemprofiles += "${datadir}/AbiSuite-${SHRT_VER}/AbiWord/system.profile*"
+FILES_abiword-templates += "${datadir}/AbiSuite-${SHRT_VER}/templates"
diff --git a/packages/abiword/abiword-plugins_2.4.5.bb b/packages/abiword/abiword-plugins_2.4.5.bb
index d488820620..0715026684 100644
--- a/packages/abiword/abiword-plugins_2.4.5.bb
+++ b/packages/abiword/abiword-plugins_2.4.5.bb
@@ -1,15 +1,14 @@
-DESCRIPTION ="AbiWord is free word processing program similar to Microsoft(r) Word""
-SECTION = "gnome/office"
-HOMEPAGE="http://www.abiword.org""
-LICENSE="GPLv2"
-
-DEPENDS = "libwpd librsvg goffice poppler"
-PR="r1"
+DESCRIPTION = "AbiWord is a free word processing program similar to Microsoft(r) Word""
+HOMEPAGE = "http://www.abiword.org""
+SECTION = "x11/office"
+LICENSE = "GPLv2"
+DEPENDS = "libwpd librsvg goffice poppler"
+RDEPENDS='abiword'
+PR = "r1"
SRC_URI = "http://www.abiword.org/downloads/abiword/${PV}/source/abiword-${PV}.tar.gz \
file://abiword-plugin-pdf-poppler.patch;patch=1;pnum=2"
S = "${WORKDIR}/abiword-${PV}/abiword-plugins"
-RDEPENDS='abiword'
inherit autotools
diff --git a/packages/abiword/abiword-plugins_2.4.6.bb b/packages/abiword/abiword-plugins_2.4.6.bb
index 28d076aaa4..21ac8ea909 100644
--- a/packages/abiword/abiword-plugins_2.4.6.bb
+++ b/packages/abiword/abiword-plugins_2.4.6.bb
@@ -1,15 +1,13 @@
-DESCRIPTION ="AbiWord is free word processing program similar to Microsoft(r) Word""
-SECTION = "gnome/office"
-HOMEPAGE="http://www.abiword.org""
-LICENSE="GPLv2"
-
-DEPENDS = "libwpd librsvg goffice poppler"
-PR="r0"
+DESCRIPTION = "AbiWord is a free word processing program similar to Microsoft(r) Word""
+HOMEPAGE = "http://www.abiword.org""
+SECTION = "x11/office"
+LICENSE = "GPLv2"
+DEPENDS = "libwpd librsvg goffice poppler"
+RDEPENDS = "abiword"
SRC_URI = "http://www.abiword.org/downloads/abiword/${PV}/source/abiword-${PV}.tar.gz \
file://abiword-plugin-pdf-poppler.patch;patch=1;pnum=2"
S = "${WORKDIR}/abiword-${PV}/abiword-plugins"
-RDEPENDS='abiword'
inherit autotools
diff --git a/packages/abiword/abiword.inc b/packages/abiword/abiword.inc
index c8f3243b9c..8569845394 100644
--- a/packages/abiword/abiword.inc
+++ b/packages/abiword/abiword.inc
@@ -1,8 +1,7 @@
-DESCRIPTION = "AbiWord is free word processing program similar to Microsoft(r) Word"
-SECTION = "gnome/office"
+DESCRIPTION = "AbiWord is a free word processing program similar to Microsoft(r) Word"
HOMEPAGE = "http://www.abiword.org""
+SECTION = "x11/office"
LICENSE = "GPLv2"
-
DEPENDS = "perl-native libgsf libgnomeprint libgnomeprintui libglade libfribidi enchant jpeg libpng libxml2"
RDEPENDS = "enchant glibc-gconv-ibm850 glibc-gconv-cp1252 \
glibc-gconv-iso8859-15 glibc-gconv-iso8859-1"
diff --git a/packages/abiword/abiword_2.5.1.bb b/packages/abiword/abiword_2.5.1.bb
new file mode 100644
index 0000000000..66d8fae0ad
--- /dev/null
+++ b/packages/abiword/abiword_2.5.1.bb
@@ -0,0 +1,7 @@
+require abiword-2.5.inc
+
+DEFAULT_PREFERENCE = "-1"
+
+PR = "r0"
+
+RCONFLICTS = "abiword-embedded"
diff --git a/packages/abiword/files/cdump.pl b/packages/abiword/files/cdump.pl
new file mode 100755
index 0000000000..76f9c8841b
--- /dev/null
+++ b/packages/abiword/files/cdump.pl
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+
+# This script replace the cdump tool we used to build the ap_wp_Splash.cpp
+# Because the cdump tool has to be run as a part of building the AW package,
+# it breaks cross-compilation. A perl script seemed like a generic solution
+
+
+if ($#ARGV != 1 )
+{
+ print "Usage: $0 datafile arrayname $#ARGV $ARGV[0] $ARGV[1]\n";
+ exit(-1);
+}
+
+open FROM, "<$ARGV[0]" or die "Could not open file $ARGV[0]";
+binmode FROM;
+
+print "unsigned char $ARGV[1] [] = {\n";
+
+while ($len = read(FROM, $buf, 16))
+{
+ foreach(split(//,$buf))
+ {
+ printf("0x%02x,", ord($_));
+ }
+
+ print "\n";
+}
+
+
+printf "};\nunsigned long $ARGV[1]_sizeof = sizeof($ARGV[1]);\n";
+
+close FROM; \ No newline at end of file
diff --git a/packages/acpid/acpid-1.0.2/init b/packages/acpid/acpid-1.0.2/init
deleted file mode 100755
index 4937e71e9f..0000000000
--- a/packages/acpid/acpid-1.0.2/init
+++ /dev/null
@@ -1,26 +0,0 @@
-#! /bin/sh -e
-
-test -x /usr/sbin/acpid || exit 0
-test -d /proc/acpi || exit 0
-
-case "$1" in
- start)
- echo -n "Starting Advanced Configuration and Power Interface daemon: "
- start-stop-daemon -S -x /usr/sbin/acpid -- -c /etc/acpi/events -s /var/run/.acpid.socket
- echo "acpid."
- ;;
- stop)
- echo -n "Stopping Advanced Configuration and Power Interface daemon: "
- start-stop-daemon -K -x /usr/sbin/acpid
- echo "acpid."
- ;;
- restart|force-reload)
- $0 stop
- $0 start
- ;;
- *)
- echo "Usage: /etc/init.d/acpid {start|stop|restart|force-reload}"
- exit 1
-esac
-
-exit 0
diff --git a/packages/acpid/acpid-1.0.3/init b/packages/acpid/acpid-1.0.3/init
deleted file mode 100755
index 4937e71e9f..0000000000
--- a/packages/acpid/acpid-1.0.3/init
+++ /dev/null
@@ -1,26 +0,0 @@
-#! /bin/sh -e
-
-test -x /usr/sbin/acpid || exit 0
-test -d /proc/acpi || exit 0
-
-case "$1" in
- start)
- echo -n "Starting Advanced Configuration and Power Interface daemon: "
- start-stop-daemon -S -x /usr/sbin/acpid -- -c /etc/acpi/events -s /var/run/.acpid.socket
- echo "acpid."
- ;;
- stop)
- echo -n "Stopping Advanced Configuration and Power Interface daemon: "
- start-stop-daemon -K -x /usr/sbin/acpid
- echo "acpid."
- ;;
- restart|force-reload)
- $0 stop
- $0 start
- ;;
- *)
- echo "Usage: /etc/init.d/acpid {start|stop|restart|force-reload}"
- exit 1
-esac
-
-exit 0
diff --git a/packages/acpid/acpid-1.0.4/init b/packages/acpid/acpid-1.0.4/init
deleted file mode 100755
index 4937e71e9f..0000000000
--- a/packages/acpid/acpid-1.0.4/init
+++ /dev/null
@@ -1,26 +0,0 @@
-#! /bin/sh -e
-
-test -x /usr/sbin/acpid || exit 0
-test -d /proc/acpi || exit 0
-
-case "$1" in
- start)
- echo -n "Starting Advanced Configuration and Power Interface daemon: "
- start-stop-daemon -S -x /usr/sbin/acpid -- -c /etc/acpi/events -s /var/run/.acpid.socket
- echo "acpid."
- ;;
- stop)
- echo -n "Stopping Advanced Configuration and Power Interface daemon: "
- start-stop-daemon -K -x /usr/sbin/acpid
- echo "acpid."
- ;;
- restart|force-reload)
- $0 stop
- $0 start
- ;;
- *)
- echo "Usage: /etc/init.d/acpid {start|stop|restart|force-reload}"
- exit 1
-esac
-
-exit 0
diff --git a/packages/acpid/acpid.inc b/packages/acpid/acpid.inc
index c96f431224..6e79915527 100644
--- a/packages/acpid/acpid.inc
+++ b/packages/acpid/acpid.inc
@@ -5,28 +5,20 @@ LICENSE="GPL"
SRC_URI = "${SOURCEFORGE_MIRROR}/acpid/acpid-${PV}.tar.gz \
file://init"
+inherit update-rc.d
+
+INITSCRIPT_NAME = "acpid"
+INITSCRIPT_PARAMS = "defaults"
+
EXTRA_OEMAKE = ""
do_compile () {
oe_runmake 'CC=${CC}' 'CROSS=${HOST_PREFIX}'
}
do_install () {
+ install -d ${D}${bindir}
oe_runmake 'INSTPREFIX=${D}' install
install -d ${D}${sysconfdir}/init.d
cat ${WORKDIR}/init | sed -e's,/usr/sbin,${sbindir},g' > ${D}${sysconfdir}/init.d/acpid
chmod 755 ${D}${sysconfdir}/init.d/acpid
}
-
-pkg_postinst () {
- if test -n "${D}"; then
- D="-r $D"
- fi
- update-rc.d $D acpid defaults
-}
-
-pkg_prerm () {
- if test -n "${D}"; then
- D="-r $D"
- fi
- update-rc.d $D acpid remove
-}
diff --git a/packages/acpid/acpid_1.0.2.bb b/packages/acpid/acpid_1.0.2.bb
index af1d3b2853..2a305eeac4 100644
--- a/packages/acpid/acpid_1.0.2.bb
+++ b/packages/acpid/acpid_1.0.2.bb
@@ -1 +1,3 @@
require acpid.inc
+PR = "r2"
+
diff --git a/packages/acpid/acpid_1.0.3.bb b/packages/acpid/acpid_1.0.3.bb
index 596ef49452..640acd5203 100644
--- a/packages/acpid/acpid_1.0.3.bb
+++ b/packages/acpid/acpid_1.0.3.bb
@@ -1,2 +1,4 @@
require acpid.inc
SRC_URI += "file://gcc40.patch;patch=1"
+PR = "r2"
+
diff --git a/packages/acpid/acpid_1.0.4.bb b/packages/acpid/acpid_1.0.4.bb
index 596ef49452..f48c262254 100644
--- a/packages/acpid/acpid_1.0.4.bb
+++ b/packages/acpid/acpid_1.0.4.bb
@@ -1,2 +1,4 @@
require acpid.inc
SRC_URI += "file://gcc40.patch;patch=1"
+PR = "r3"
+
diff --git a/packages/altboot/files/altboot-menu/Advanced/.mtn2git_empty b/packages/acpid/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/altboot/files/altboot-menu/Advanced/.mtn2git_empty
+++ b/packages/acpid/files/.mtn2git_empty
diff --git a/packages/acpid/files/init b/packages/acpid/files/init
new file mode 100755
index 0000000000..ef08b59596
--- /dev/null
+++ b/packages/acpid/files/init
@@ -0,0 +1,26 @@
+#! /bin/sh -e
+
+test -x /usr/sbin/acpid || exit 0
+test -d /proc/acpi || exit 0
+
+case "$1" in
+ start)
+ echo -n "Starting Advanced Configuration and Power Interface daemon: "
+ start-stop-daemon -S -x /usr/sbin/acpid -- -c /etc/acpi/events
+ echo "acpid."
+ ;;
+ stop)
+ echo -n "Stopping Advanced Configuration and Power Interface daemon: "
+ start-stop-daemon -K -x /usr/sbin/acpid
+ echo "acpid."
+ ;;
+ restart|force-reload)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "Usage: /etc/init.d/acpid {start|stop|restart|force-reload}"
+ exit 1
+esac
+
+exit 0
diff --git a/packages/aircrack/aircrack-ng_0.7.bb b/packages/aircrack/aircrack-ng_0.7.bb
new file mode 100644
index 0000000000..bf5bd27d9d
--- /dev/null
+++ b/packages/aircrack/aircrack-ng_0.7.bb
@@ -0,0 +1,25 @@
+SECTION = "console/network"
+DESCRIPTION = "Aircrack-ng is a set of tools for wep key statistical cracking"
+HOMEPAGE = "http://www.aircrack-ng.org/"
+LICENSE = "GPLv2"
+PR = "r2"
+
+SRC_URI = "http://download.aircrack-ng.org/aircrack-ng-${PV}.tar.gz"
+
+oe_compile() {
+ oe_runmake CC="${CC}" CXX="${CXX}" CFLAGS="-O3 ${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LD="${LD}" LDFLAGS="${LDFLAGS}"
+}
+
+do_install() {
+ install -d ${D}/${sbindir}
+ install -d ${D}/${bindir}
+ install -m 0755 airodump-ng ${D}/${sbindir}
+ install -m 0755 aircrack-ng ${D}/${bindir}
+ install -m 0755 aireplay-ng ${D}/${sbindir}
+ install -m 0755 airdecap-ng ${D}/${bindir}
+ install -m 0755 packetforge-ng ${D}/${bindir}
+ install -m 0755 airmon-ng ${D}/${sbindir}
+ install -m 0755 ivstools ${D}/${bindir}
+ install -m 0755 kstats ${D}/${bindir}
+ install -m 0755 airtun-ng ${D}/${bindir}
+}
diff --git a/packages/aircrack/aircrack_2.41.bb b/packages/aircrack/aircrack_2.41.bb
index 3e4d2a9b31..32f0bc864c 100644
--- a/packages/aircrack/aircrack_2.41.bb
+++ b/packages/aircrack/aircrack_2.41.bb
@@ -3,9 +3,9 @@ DESCRIPTION = "Aircrack is a set of tools for wep key statistical cracking"
HOMEPAGE = "http://www.cr0.net:8040/code/network/aircrack/"
LICENSE = "GPLv2"
DEPENDS = ""
-PR="r0"
+PR="r1"
-SRC_URI = "http://distfiles.gentoo.org/distfiles/${P}.tgz \
+SRC_URI = "http://www.wirelessdefence.org/Contents/Files/${P}.tgz \
file://oe.patch;patch=1;pnum=1"
inherit autotools
diff --git a/packages/altboot/files/altboot.rc/.mtn2git_empty b/packages/alsa/alsa-lib/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/altboot/files/altboot.rc/.mtn2git_empty
+++ b/packages/alsa/alsa-lib/.mtn2git_empty
diff --git a/packages/alsa/alsa-lib/fix-tstamp-declaration.patch b/packages/alsa/alsa-lib/fix-tstamp-declaration.patch
new file mode 100644
index 0000000000..59b3b6d150
--- /dev/null
+++ b/packages/alsa/alsa-lib/fix-tstamp-declaration.patch
@@ -0,0 +1,13 @@
+Index: alsa-lib-1.0.13/include/global.h
+===================================================================
+--- alsa-lib-1.0.13.orig/include/global.h
++++ alsa-lib-1.0.13/include/global.h
+@@ -29,6 +29,8 @@
+ #define __ALSA_GLOBAL_H_
+
+ /* for timeval and timespec */
++#define __need_timeval
++#define __need_timespec
+ #include <time.h>
+
+ #ifdef __cplusplus
diff --git a/packages/alsa/alsa-lib_1.0.11.bb b/packages/alsa/alsa-lib_1.0.11.bb
index 95b788ef8e..b9169e608f 100644
--- a/packages/alsa/alsa-lib_1.0.11.bb
+++ b/packages/alsa/alsa-lib_1.0.11.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Alsa sound library"
HOMEPAGE = "http://www.alsa-project.org"
SECTION = "libs/multimedia"
LICENSE = "GPL"
-PR = "r2"
+PR = "r4"
# 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,
@@ -25,9 +25,17 @@ do_stage() {
install -m 0644 utils/alsa.m4 ${STAGING_DATADIR}/aclocal/
}
-PACKAGES =+ "alsa-server libasound alsa-conf alsa-doc alsa-dev"
+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}"
-FILES_alsa-dev = "${libdir}/pkgconfig/ /usr/include/"
+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-lib_1.0.13.bb b/packages/alsa/alsa-lib_1.0.13.bb
index 987a5901f4..78df6dfe02 100644
--- a/packages/alsa/alsa-lib_1.0.13.bb
+++ b/packages/alsa/alsa-lib_1.0.13.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Alsa sound library"
HOMEPAGE = "http://www.alsa-project.org"
SECTION = "libs/multimedia"
LICENSE = "GPL"
-PR = "r0"
+PR = "r3"
# 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,
@@ -10,7 +10,8 @@ PR = "r0"
#FIXME: remove the following
ARM_INSTRUCTION_SET = "arm"
-SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${PV}.tar.bz2"
+SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${PV}.tar.bz2 \
+ file://fix-tstamp-declaration.patch;patch=1"
inherit autotools pkgconfig
@@ -25,9 +26,17 @@ do_stage() {
install -m 0644 utils/alsa.m4 ${STAGING_DATADIR}/aclocal/
}
-PACKAGES =+ "alsa-server libasound alsa-conf alsa-doc alsa-dev"
+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}"
-FILES_alsa-dev += "${libdir}/pkgconfig/ /usr/include/"
+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-state.bb b/packages/alsa/alsa-state.bb
new file mode 100644
index 0000000000..53c69c5c69
--- /dev/null
+++ b/packages/alsa/alsa-state.bb
@@ -0,0 +1,50 @@
+#! /bin/sh
+#
+# 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)
+#
+# Filename: alsa-state.bb
+# Date: 20070308 (YMD)
+
+DESCRIPTION = "Default ALSA configuration"
+MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
+HOMEPAGE = "<homepage>"
+LICENSE = "GPL"
+
+######################################################################################
+
+PV = "0.0.2"
+PR = "r0"
+
+######################################################################################
+
+SRC_URI = "file://asound.state \
+ file://alsa-state"
+
+FILES_${PN} = "/etc/*"
+
+######################################################################################
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "alsa-state"
+INITSCRIPT_PARAMS = "defaults 10"
+
+######################################################################################
+
+do_install() {
+ install -d ${D}${sysconfdir}/init.d
+
+ install -m 0644 ${WORKDIR}/asound.state ${D}${sysconfdir}
+ install -m 0755 ${WORKDIR}/alsa-state ${D}${sysconfdir}/init.d
+}
+
+
+pkg_postinst_${PN}() {
+ if test -x /usr/sbin/alsactl
+ then
+ /usr/sbin/alsactl -f ${sysconfdir}/asound.state restore
+ fi
+}
+
diff --git a/packages/altboot/files/c7x0/.mtn2git_empty b/packages/alsa/alsa-state/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/altboot/files/c7x0/.mtn2git_empty
+++ b/packages/alsa/alsa-state/.mtn2git_empty
diff --git a/packages/alsa/alsa-state/alsa-state b/packages/alsa/alsa-state/alsa-state
new file mode 100755
index 0000000000..c6bc1fd494
--- /dev/null
+++ b/packages/alsa/alsa-state/alsa-state
@@ -0,0 +1,29 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: alsa-state
+# Date: 20070308 (YMD)
+
+
+asound_restore(){
+ echo "ALSA: Restoring mixer settings..."
+ if test -x /usr/sbin/alsactl -a -e /etc/asound.state
+ then
+ /usr/sbin/alsactl -f /etc/asound.state restore
+ fi
+}
+
+asound_store(){
+ echo "ALSA: Storing mixer settings..."
+ if test -x /usr/sbin/alsactl
+ then
+ /usr/sbin/alsactl -f /etc/asound.state store
+ fi
+}
+
+case "$1" in
+start) asound_restore ;;
+stop) asound_store ;;
+esac
diff --git a/packages/alsa/alsa-state/asound.state b/packages/alsa/alsa-state/asound.state
new file mode 100644
index 0000000000..88b0d02657
--- /dev/null
+++ b/packages/alsa/alsa-state/asound.state
@@ -0,0 +1 @@
+# Dummy file, do not delete \ No newline at end of file
diff --git a/packages/altboot/files/collie/.mtn2git_empty b/packages/alsa/alsa-state/fic-gta01/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/altboot/files/collie/.mtn2git_empty
+++ b/packages/alsa/alsa-state/fic-gta01/.mtn2git_empty
diff --git a/packages/alsa/alsa-state/fic-gta01/asound.state b/packages/alsa/alsa-state/fic-gta01/asound.state
new file mode 100644
index 0000000000..903bc9d89a
--- /dev/null
+++ b/packages/alsa/alsa-state/fic-gta01/asound.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 127
+ value.1 127
+ }
+ 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 2
+ value.1 2
+ }
+ 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 false
+ value.1 false
+ }
+ 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 2
+ }
+ 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 23
+ value.1 23
+ }
+ 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 false
+ value.1 false
+ }
+ 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 HiFi
+ }
+ control.27 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Capture Filter Switch'
+ value true
+ }
+ 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 Off
+ }
+ control.31 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'ALC Capture ZC Switch'
+ value false
+ }
+ 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 2
+ }
+ control.35 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 31'
+ iface MIXER
+ name 'ALC Capture NG Threshold'
+ value 0
+ }
+ 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 Capture
+ }
+ 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 Stereo
+ }
+ 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 0
+ }
+ 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 0'
+ }
+ 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 Stereo
+ }
+ 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 'Line 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 'Line 2'
+ }
+ 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 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 'Left PGA'
+ }
+ 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 Stereo
+ }
+ 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 Stereo
+ }
+ 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 19
+ }
+ control.87 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 31'
+ iface MIXER
+ name 'Amp Right Playback Volume'
+ value 19
+ }
+ control.88 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 31'
+ iface MIXER
+ name 'Amp Mono Playback Volume'
+ value 0
+ }
+ 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 'Stereo Speakers + 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 Headphones
+ }
+ 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.13.bb b/packages/alsa/alsa-utils_1.0.13.bb
index 7c9ca42830..93054a3ab6 100644
--- a/packages/alsa/alsa-utils_1.0.13.bb
+++ b/packages/alsa/alsa-utils_1.0.13.bb
@@ -41,7 +41,7 @@ FILES_alsa-utils-alsactl = "${sbindir}/alsactl"
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-speaker-test = "speaker test tone generator for ALSA"
+DESCRIPTION_alsa-utils-speakertest = "speaker test tone generator for ALSA"
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"
@@ -51,6 +51,6 @@ DESCRIPTION_alsa-utils-alsaconf = "a bash script that creates ALSA configura
RDEPENDS_alsa-utils-aplay += "alsa-conf"
RDEPENDS_alsa-utils-amixer += "alsa-conf"
RDEPENDS_alsa-utils-alsamixer += "alsa-conf"
-RDEPENDS_alsa-utils-speaker-test += "alsa-conf"
+RDEPENDS_alsa-utils-speakertest += "alsa-conf"
ALLOW_EMPTY_alsa-utils = "1"
diff --git a/packages/altboot/README.txt b/packages/altboot/README.txt
new file mode 100644
index 0000000000..ed71b03957
--- /dev/null
+++ b/packages/altboot/README.txt
@@ -0,0 +1,5 @@
+altboot_1.0.5.bb - Last known-working version for clamshell
+ Zauruses running kernel 2.4
+altboot_1.0.8.bb - Last known-working version for all Zauruses
+altboot_1.1.1+wip-20061123.bb - Last known-working version for neo1973
+altboot_svn.bb - Altboot developer snapshot - avoid ;)
diff --git a/packages/altboot/altboot_0.0.0.bb b/packages/altboot/altboot_0.0.0.bb
deleted file mode 100644
index 0df86ad794..0000000000
--- a/packages/altboot/altboot_0.0.0.bb
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
-#
-# Filename: altboot_0.0.0.bb
-# Date: 07-May-06
-
-DESCRIPTION = "The altboot bootmanager"
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-LICENSE = "GPL"
-
-######################################################################################
-
-RRECOMMENDS_${PN} = "e2fsprogs-e2fsck dosfstools"
-RRECOMMENDS_${PN}_append_akita = " kexec-tools"
-RRECOMMENDS_${PN}_append_spitz = " kexec-tools"
-RRECOMMENDS_${PN}_append_c7x0 = " kexec-tools"
-
-RDEPENDS_${PN} = "${PN}-conf"
-
-######################################################################################
-
-PR = "r51"
-
-######################################################################################
-
-PACKAGES = "${PN}-conf ${PN}-doc ${PN}"
-
-PACKAGE_ARCH_${PN} = "all"
-PACKAGE_ARCH_${PN}-doc = "all"
-PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
-
-SRC_URI = "file://altboot-menu \
- file://altboot.rc \
- file://altboot.func \
- file://init.altboot \
- file://altboot*.cfg \
- file://altbootctl.conf \
- file://altbootctl \
- file://beep.raw"
-
-# S = "${WORKDIR}/altboot/"
-
-######################################################################################
-
-FILES_${PN}-conf = "/etc/altboot*.cfg"
-
-######################################################################################
-
-do_install() {
- install -d ${D}/sbin
- install -d ${D}/etc/altboot-menu
- install -d ${D}/etc/altboot-menu/Advanced
- install -d ${D}/etc/altboot.rc
- install -d ${D}/usr/share/doc/altboot
- install -d ${D}/usr/share/sounds
-
- install -m 0644 ${WORKDIR}/beep.raw ${D}/usr/share/sounds
- install -m 0644 ${WORKDIR}/altboot*.cfg ${D}/etc
- install -m 0644 ${WORKDIR}/altboot.func ${D}/etc
- install -m 0644 ${WORKDIR}/altbootctl.conf ${D}/etc
- install -m 0755 ${WORKDIR}/init.altboot ${D}/sbin
- install -m 0755 ${WORKDIR}/altbootctl ${D}/sbin
-
- install -m 0755 ${WORKDIR}/altboot-menu/*-* ${D}/etc/altboot-menu
-
- install -m 0755 ${WORKDIR}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
-
- install -m 0755 ${WORKDIR}/altboot.rc/*.sh ${D}/etc/altboot.rc
- install -m 0644 ${WORKDIR}/altboot.rc/*.txt ${D}/etc/altboot.rc
-}
-
-######################################################################################
-
-do_configure() {
- cat ${WORKDIR}/init.altboot | sed "s/^VERSION=.*/VERSION=\"0.0.0 Developer Snapshot (${DATE})\"/" > ${WORKDIR}/init.altboot_
- mv ${WORKDIR}/init.altboot_ ${WORKDIR}/init.altboot
-}
-
-######################################################################################
-
-pkg_postinst_${PN}() {
- update-alternatives --install /sbin/init init /sbin/init.altboot 55
-}
-
-######################################################################################
-
-pkg_postrm_${PN}() {
- update-alternatives --remove init /sbin/init.altboot
-}
-
diff --git a/packages/altboot/altboot_1.0.5.bb b/packages/altboot/altboot_1.0.5.bb
index 2762001dbd..15850e5bdc 100644
--- a/packages/altboot/altboot_1.0.5.bb
+++ b/packages/altboot/altboot_1.0.5.bb
@@ -1,7 +1,7 @@
#! /bin/sh
#
# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+# License: MIT (see COPYING.MIT)
#
# Filename: altboot_1.0.5-rc2.bb
# Date: 21-Feb-06
@@ -20,9 +20,9 @@ PACKAGE_ARCH = "${MACHINE}"
TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-')}"
-SRC_URI = "cvs://anonymous@hentges.net/hentgescvs;method=pserver;tag=${TAG};module=altboot"
+SRC_URI = "svn://hentges.net/altboot/tags/;module=${TAG};proto=svn"
-S = "${WORKDIR}/altboot/"
+S = "${WORKDIR}/${TAG}/"
######################################################################################
@@ -35,37 +35,37 @@ do_install() {
if test -d ${WORKDIR}/altboot/${MACHINE}
then
- install -m 0644 ${WORKDIR}/altboot/${MACHINE}/altboot*.cfg ${D}/etc
+ install -m 0644 ${S}/${MACHINE}/altboot*.cfg ${D}/etc
else
- install -m 0644 ${WORKDIR}/altboot/altboot*.cfg ${D}/etc
+ install -m 0644 ${S}/altboot*.cfg ${D}/etc
fi
- install -m 0644 ${WORKDIR}/altboot/altboot.func ${D}/etc
- install -m 0755 ${WORKDIR}/altboot/init.altboot ${D}/sbin
+ install -m 0644 ${S}/altboot.func ${D}/etc
+ install -m 0755 ${S}/init.altboot ${D}/sbin
- if test -d ${WORKDIR}/altboot/${MACHINE}/altboot-menu/
+ if test -d ${S}/${MACHINE}/altboot-menu/
then
- install -m 0755 ${WORKDIR}/altboot/${MACHINE}/altboot-menu/*-* ${D}/etc/altboot-menu
+ install -m 0755 ${S}/${MACHINE}/altboot-menu/*-* ${D}/etc/altboot-menu
else
- install -m 0755 ${WORKDIR}/altboot/altboot-menu/*-* ${D}/etc/altboot-menu
+ install -m 0755 ${S}/altboot-menu/*-* ${D}/etc/altboot-menu
fi
- if test -d ${WORKDIR}/altboot/${MACHINE}/altboot-menu/Advanced/
+ if test -d ${S}/${MACHINE}/altboot-menu/Advanced/
then
- install -m 0755 ${WORKDIR}/altboot/${MACHINE}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+ install -m 0755 ${S}/${MACHINE}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
else
- install -m 0755 ${WORKDIR}/altboot/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+ install -m 0755 ${S}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
fi
- install -m 0755 ${WORKDIR}/altboot/altboot.rc/*.sh ${D}/etc/altboot.rc
- install -m 0644 ${WORKDIR}/altboot/altboot.rc/*.txt ${D}/etc/altboot.rc
+ install -m 0755 ${S}/altboot.rc/*.sh ${D}/etc/altboot.rc
+ install -m 0644 ${S}/altboot.rc/*.txt ${D}/etc/altboot.rc
}
######################################################################################
do_configure() {
- cat ${WORKDIR}/altboot/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}\"/" > ${WORKDIR}/altboot/init.altboot_
- mv ${WORKDIR}/altboot/init.altboot_ ${WORKDIR}/altboot/init.altboot
+ cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}\"/" > ${S}/init.altboot_
+ mv ${S}/init.altboot_ ${S}/init.altboot
}
######################################################################################
diff --git a/packages/altboot/altboot_1.0.8.bb b/packages/altboot/altboot_1.0.8.bb
index c52c0972a3..9544e6b5ac 100644
--- a/packages/altboot/altboot_1.0.8.bb
+++ b/packages/altboot/altboot_1.0.8.bb
@@ -1,7 +1,7 @@
#! /bin/sh
#
# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+# License: MIT (see COPYING.MIT)
#
# Filename: altboot_1.0.5-rc2.bb
# Date: 21-Feb-06
@@ -34,9 +34,9 @@ PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-')}"
-SRC_URI = "cvs://anonymous@hentges.net/hentgescvs;method=pserver;tag=${TAG};module=altboot"
+SRC_URI = "svn://hentges.net/altboot/tags/;module=${TAG};proto=svn"
-S = "${WORKDIR}/altboot/"
+S = "${WORKDIR}/${TAG}/"
######################################################################################
@@ -52,30 +52,30 @@ do_install() {
install -d ${D}/usr/share/doc/altboot
install -d ${D}/usr/share/sounds
- if test -d ${WORKDIR}/altboot/${MACHINE}
+ if test -d ${S}/${MACHINE}
then
- install -m 0644 ${WORKDIR}/altboot/${MACHINE}/altboot*.cfg ${D}/etc
+ install -m 0644 ${S}/${MACHINE}/altboot*.cfg ${D}/etc
else
- install -m 0644 ${WORKDIR}/altboot/altboot*.cfg ${D}/etc
+ install -m 0644 ${S}/altboot*.cfg ${D}/etc
fi
- install -m 0644 ${WORKDIR}/altboot/beep.raw ${D}/usr/share/sounds
- install -m 0644 ${WORKDIR}/altboot/altboot.func ${D}/etc
- install -m 0755 ${WORKDIR}/altboot/init.altboot ${D}/sbin
+ install -m 0644 ${S}/beep.raw ${D}/usr/share/sounds
+ install -m 0644 ${S}/altboot.func ${D}/etc
+ install -m 0755 ${S}/init.altboot ${D}/sbin
- install -m 0755 ${WORKDIR}/altboot/altboot-menu/*-* ${D}/etc/altboot-menu
+ install -m 0755 ${S}/altboot-menu/*-* ${D}/etc/altboot-menu
- install -m 0755 ${WORKDIR}/altboot/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+ install -m 0755 ${S}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
- install -m 0755 ${WORKDIR}/altboot/altboot.rc/*.sh ${D}/etc/altboot.rc
- install -m 0644 ${WORKDIR}/altboot/altboot.rc/*.txt ${D}/etc/altboot.rc
+ install -m 0755 ${S}/altboot.rc/*.sh ${D}/etc/altboot.rc
+ install -m 0644 ${S}/altboot.rc/*.txt ${D}/etc/altboot.rc
}
######################################################################################
do_configure() {
- cat ${WORKDIR}/altboot/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}\"/" > ${WORKDIR}/altboot/init.altboot_
- mv ${WORKDIR}/altboot/init.altboot_ ${WORKDIR}/altboot/init.altboot
+ cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}\"/" > ${S}/init.altboot_
+ mv ${S}/init.altboot_ ${S}/init.altboot
}
######################################################################################
diff --git a/packages/altboot/altboot_1.1.1+wip-20061123.bb b/packages/altboot/altboot_1.1.1+wip-20061123.bb
new file mode 100644
index 0000000000..bc96c670e9
--- /dev/null
+++ b/packages/altboot/altboot_1.1.1+wip-20061123.bb
@@ -0,0 +1,99 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
+# License: MIT (see COPYING.MIT)
+#
+# Filename: altboot_1.0.5-rc2.bb
+# Date: 21-Feb-06
+
+DESCRIPTION = "The altboot bootmanager"
+MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
+HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
+LICENSE = "GPL"
+
+######################################################################################
+
+RRECOMMENDS_${PN} = "e2fsprogs-e2fsck dosfstools"
+RRECOMMENDS_${PN}_append_akita = " kexec-tools"
+RRECOMMENDS_${PN}_append_spitz = " kexec-tools"
+RRECOMMENDS_${PN}_append_c7x0 = " kexec-tools"
+
+RDEPENDS_${PN} = "${PN}-conf"
+RDEPENDS_${PN}-conf = "${PN}"
+
+######################################################################################
+
+WIP_DATE = "20061123"
+
+PV = "1.1.1+wip-${WIP_DATE}"
+PR = "r0"
+
+######################################################################################
+
+PACKAGES = "${PN}-conf ${PN}-doc ${PN}"
+
+PACKAGE_ARCH_${PN} = "all"
+PACKAGE_ARCH_${PN}-doc = "all"
+PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
+
+TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-').replace('+', '-')}"
+
+SRC_URI = "svn://hentges.net/altboot/tags/;module=${TAG};rev=2"
+
+S = "${WORKDIR}/${TAG}/"
+
+######################################################################################
+
+FILES_${PN}-conf = "/etc/altboot*cfg"
+
+######################################################################################
+
+do_install() {
+ install -d ${D}/sbin
+ install -d ${D}/etc/altboot-menu
+ install -d ${D}/etc/altboot-menu/Advanced
+ install -d ${D}/etc/altboot.rc
+ install -d ${D}/usr/share/doc/altboot
+ install -d ${D}/usr/share/sounds
+ install -d ${D}/etc/skel/altboot
+
+ if test -d ${S}/${MACHINE}
+ then
+ install -m 0644 ${S}/${MACHINE}/altboot*.cfg ${D}/etc/
+ else
+ install -m 0644 ${S}/altboot*.cfg ${D}/etc/
+ fi
+
+ install -m 0644 ${S}/beep.raw ${D}/usr/share/sounds
+ install -m 0644 ${S}/altboot.func ${D}/etc
+ install -m 0644 ${S}/altbootctl.conf ${D}/etc
+ install -m 0755 ${S}/init.altboot ${D}/sbin
+ install -m 0755 ${S}/altbootctl ${D}/sbin
+
+ install -m 0755 ${S}/altboot-menu/*-* ${D}/etc/altboot-menu
+
+ install -m 0755 ${S}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+
+ install -m 0755 ${S}/altboot.rc/*.sh ${D}/etc/altboot.rc
+ install -m 0644 ${S}/altboot.rc/*.txt ${D}/etc/altboot.rc
+}
+
+######################################################################################
+
+do_configure() {
+ cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}-${PR}\"/" > ${S}/init.altboot_
+ mv ${S}/init.altboot_ ${S}/init.altboot
+}
+
+######################################################################################
+
+pkg_postinst_${PN}() {
+ update-alternatives --install /sbin/init init /sbin/init.altboot 55
+}
+
+######################################################################################
+
+pkg_postrm_${PN}() {
+ update-alternatives --remove init /sbin/init.altboot
+}
+
diff --git a/packages/altboot/altboot_1.1.1+wip-SVNR30.bb b/packages/altboot/altboot_1.1.1+wip-SVNR30.bb
new file mode 100644
index 0000000000..b3ccb70497
--- /dev/null
+++ b/packages/altboot/altboot_1.1.1+wip-SVNR30.bb
@@ -0,0 +1,124 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
+# License: MIT (see COPYING.MIT)
+#
+# Filename: altboot_1.0.5-rc2.bb
+# Date: 21-Feb-06
+
+DESCRIPTION = "The altboot bootmanager"
+MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
+HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
+LICENSE = "GPL"
+
+######################################################################################
+
+RRECOMMENDS_${PN} = "e2fsprogs-e2fsck dosfstools"
+RRECOMMENDS_${PN}_append_akita = " kexec-tools"
+RRECOMMENDS_${PN}_append_spitz = " kexec-tools"
+RRECOMMENDS_${PN}_append_c7x0 = " kexec-tools"
+
+RDEPENDS_${PN} = "${PN}-conf"
+RDEPENDS_${PN}-conf = "${PN}"
+
+######################################################################################
+
+SVN_REV = "30"
+PR = "r1"
+
+######################################################################################
+
+PACKAGES = "${PN}-conf ${PN}-doc ${PN}"
+
+PACKAGE_ARCH_${PN} = "${MACHINE}"
+PACKAGE_ARCH_${PN}-doc = "all"
+PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
+
+SRC_URI = "svn://hentges.net/altboot;module=trunk;rev=${SVN_REV}"
+
+S = "${WORKDIR}/trunk/"
+
+######################################################################################
+
+FILES_${PN}-conf = "/etc/altboot*cfg"
+
+######################################################################################
+
+MACHINE_DIR = "${MACHINE}"
+MACHINE_DIR_nslu2be = "nslu2le"
+
+do_install() {
+ install -d ${D}/sbin
+ install -d ${D}/etc/altboot-menu
+ install -d ${D}/etc/altboot.rc
+ install -d ${D}/usr/share/doc/altboot
+ install -d ${D}/usr/share/sounds
+
+ if test -d ${S}/${MACHINE_DIR}
+ then
+ install -m 0644 ${S}/${MACHINE_DIR}/altboot*.cfg ${D}/etc/
+ else
+ install -m 0644 ${S}/altboot*.cfg ${D}/etc/
+ fi
+
+ install -m 0644 ${S}/beep.raw ${D}/usr/share/sounds
+ install -m 0644 ${S}/altboot.func ${D}/etc
+ install -m 0644 ${S}/altboot.sbin ${D}/etc
+ install -m 0644 ${S}/altbootctl.conf ${D}/etc
+ install -m 0755 ${S}/init.altboot ${D}/sbin
+ install -m 0755 ${S}/altbootctl ${D}/sbin
+
+ ln -s /sbin/init.altboot ${D}/sbin/altboot
+
+ if test -d ${S}/${MACHINE_DIR}/altboot-menu
+ then
+ install -m 0755 ${S}/${MACHINE_DIR}/altboot-menu/*-* ${D}/etc/altboot-menu
+
+ if test -d ${S}/${MACHINE_DIR}/altboot-menu/Advanced
+ then
+ install -d ${D}/etc/altboot-menu/Advanced
+ install -m 0755 ${S}/${MACHINE_DIR}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+ fi
+ else
+ install -m 0755 ${S}/altboot-menu/*-* ${D}/etc/altboot-menu
+
+ if test -d ${S}/altboot-menu/Advanced
+ then
+ install -d ${D}/etc/altboot-menu/Advanced
+ install -m 0755 ${S}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+ fi
+ fi
+
+ if test -d ${S}/${MACHINE_DIR}/altboot.rc
+ then
+ install -m 0755 ${S}/${MACHINE_DIR}/altboot.rc/*.sh ${D}/etc/altboot.rc
+ install -m 0644 ${S}/${MACHINE_DIR}/altboot.rc/*.txt ${D}/etc/altboot.rc
+ else
+ install -m 0755 ${S}/altboot.rc/*.sh ${D}/etc/altboot.rc
+ install -m 0644 ${S}/altboot.rc/*.txt ${D}/etc/altboot.rc
+ fi
+}
+
+######################################################################################
+
+do_configure() {
+ cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}-${PR}\"/" > ${S}/init.altboot_
+ mv ${S}/init.altboot_ ${S}/init.altboot
+}
+
+######################################################################################
+
+pkg_postinst_${PN}() {
+ test -L /linuxrc && update-alternatives --install /linuxrc linuxrc /sbin/init.altboot 55
+
+ update-alternatives --install /sbin/init init /sbin/init.altboot 55
+}
+
+######################################################################################
+
+pkg_postrm_${PN}() {
+ test -L /linuxrc && update_alternatives --remove linuxrc /sbin/init.altboot
+
+ update-alternatives --remove init /sbin/init.altboot
+}
+
diff --git a/packages/altboot/altboot_svn.bb b/packages/altboot/altboot_svn.bb
new file mode 100644
index 0000000000..1c43be8fd8
--- /dev/null
+++ b/packages/altboot/altboot_svn.bb
@@ -0,0 +1,123 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
+# License: MIT (see COPYING.MIT)
+#
+# Filename: altboot_1.0.5-rc2.bb
+# Date: 21-Feb-06
+
+DESCRIPTION = "The altboot bootmanager"
+MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
+HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
+LICENSE = "GPL"
+
+######################################################################################
+
+RRECOMMENDS_${PN} = "e2fsprogs-e2fsck dosfstools"
+RRECOMMENDS_${PN}_append_akita = " kexec-tools"
+RRECOMMENDS_${PN}_append_spitz = " kexec-tools"
+RRECOMMENDS_${PN}_append_c7x0 = " kexec-tools"
+
+RDEPENDS_${PN} = "${PN}-conf"
+RDEPENDS_${PN}-conf = "${PN}"
+
+######################################################################################
+
+PV = "1.1.1+wip-${SRCDATE}"
+PR = "r1"
+
+######################################################################################
+
+PACKAGES = "${PN}-conf ${PN}-doc ${PN}"
+
+PACKAGE_ARCH_${PN} = "${MACHINE}"
+PACKAGE_ARCH_${PN}-doc = "all"
+PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
+
+SRC_URI = "svn://hentges.net/altboot;module=trunk;proto=svn"
+
+S = "${WORKDIR}/trunk/"
+
+######################################################################################
+
+FILES_${PN}-conf = "/etc/altboot*cfg"
+
+######################################################################################
+
+MACHINE_DIR = "${MACHINE}"
+MACHINE_DIR_nslu2be = "nslu2le"
+
+do_install() {
+ install -d ${D}/sbin
+ install -d ${D}/etc/altboot-menu
+ install -d ${D}/etc/altboot-menu/Advanced
+ install -d ${D}/etc/altboot.rc
+ install -d ${D}/usr/share/doc/altboot
+ install -d ${D}/usr/share/sounds
+
+ if test -d ${S}/${MACHINE_DIR}
+ then
+ install -m 0644 ${S}/${MACHINE_DIR}/altboot*.cfg ${D}/etc/
+ else
+ install -m 0644 ${S}/altboot*.cfg ${D}/etc/
+ fi
+
+ install -m 0644 ${S}/beep.raw ${D}/usr/share/sounds
+ install -m 0644 ${S}/altboot.func ${D}/etc
+ install -m 0644 ${S}/altboot.sbin ${D}/etc
+ install -m 0644 ${S}/altbootctl.conf ${D}/etc
+ install -m 0755 ${S}/init.altboot ${D}/sbin
+ install -m 0755 ${S}/altbootctl ${D}/sbin
+
+ ln -s /sbin/init.altboot ${D}/sbin/altboot
+
+ if test -d ${S}/${MACHINE_DIR}/altboot-menu
+ then
+ install -m 0755 ${S}/${MACHINE_DIR}/altboot-menu/*-* ${D}/etc/altboot-menu
+
+ if test -d ${S}/${MACHINE_DIR}/altboot-menu/Advanced
+ then
+ install -m 0755 ${S}/${MACHINE_DIR}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+ fi
+ else
+ install -m 0755 ${S}/altboot-menu/*-* ${D}/etc/altboot-menu
+
+ if test -d ${S}/altboot-menu/Advanced
+ then
+ install -m 0755 ${S}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+ fi
+ fi
+
+ if test -d ${S}/${MACHINE_DIR}/altboot.rc
+ then
+ install -m 0755 ${S}/${MACHINE_DIR}/altboot.rc/*.sh ${D}/etc/altboot.rc
+ install -m 0644 ${S}/${MACHINE_DIR}/altboot.rc/*.txt ${D}/etc/altboot.rc
+ else
+ install -m 0755 ${S}/altboot.rc/*.sh ${D}/etc/altboot.rc
+ install -m 0644 ${S}/altboot.rc/*.txt ${D}/etc/altboot.rc
+ fi
+}
+
+######################################################################################
+
+do_configure() {
+ cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}-${PR}\"/" > ${S}/init.altboot_
+ mv ${S}/init.altboot_ ${S}/init.altboot
+}
+
+######################################################################################
+
+pkg_postinst_${PN}() {
+ test -L /linuxrc && update-alternatives --install /linuxrc linuxrc /sbin/init.altboot 55
+
+ update-alternatives --install /sbin/init init /sbin/init.altboot 55
+}
+
+######################################################################################
+
+pkg_postrm_${PN}() {
+ test -L /linuxrc && update_alternatives --remove linuxrc /sbin/init.altboot
+
+ update-alternatives --remove init /sbin/init.altboot
+}
+
diff --git a/packages/altboot/altboot_wip.bb b/packages/altboot/altboot_wip.bb
deleted file mode 100644
index 714a3d1d2b..0000000000
--- a/packages/altboot/altboot_wip.bb
+++ /dev/null
@@ -1,99 +0,0 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
-#
-# Filename: altboot_1.0.5-rc2.bb
-# Date: 21-Feb-06
-
-DESCRIPTION = "The altboot bootmanager"
-MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-LICENSE = "GPL"
-
-######################################################################################
-
-RRECOMMENDS_${PN} = "e2fsprogs-e2fsck dosfstools"
-RRECOMMENDS_${PN}_append_akita = " kexec-tools"
-RRECOMMENDS_${PN}_append_spitz = " kexec-tools"
-RRECOMMENDS_${PN}_append_c7x0 = " kexec-tools"
-
-RDEPENDS_${PN} = "${PN}-conf"
-RDEPENDS_${PN}-conf = "${PN}"
-
-######################################################################################
-
-WIP_DATE = "20061123"
-
-PV = "1.1.1+wip-${WIP_DATE}"
-PR = "r0"
-
-######################################################################################
-
-PACKAGES = "${PN}-conf ${PN}-doc ${PN}"
-
-PACKAGE_ARCH_${PN} = "all"
-PACKAGE_ARCH_${PN}-doc = "all"
-PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
-
-TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-').replace('+', '-')}"
-
-SRC_URI = "cvs://anonymous@hentges.net/hentgescvs;method=pserver;tag=${TAG};module=altboot"
-
-S = "${WORKDIR}/altboot/"
-
-######################################################################################
-
-FILES_${PN}-conf = "/etc/altboot*cfg"
-
-######################################################################################
-
-do_install() {
- install -d ${D}/sbin
- install -d ${D}/etc/altboot-menu
- install -d ${D}/etc/altboot-menu/Advanced
- install -d ${D}/etc/altboot.rc
- install -d ${D}/usr/share/doc/altboot
- install -d ${D}/usr/share/sounds
- install -d ${D}/etc/skel/altboot
-
- if test -d ${WORKDIR}/altboot/${MACHINE}
- then
- install -m 0644 ${WORKDIR}/altboot/${MACHINE}/altboot*.cfg ${D}/etc/
- else
- install -m 0644 ${WORKDIR}/altboot/altboot*.cfg ${D}/etc/
- fi
-
- install -m 0644 ${WORKDIR}/altboot/beep.raw ${D}/usr/share/sounds
- install -m 0644 ${WORKDIR}/altboot/altboot.func ${D}/etc
- install -m 0644 ${WORKDIR}/altboot/altbootctl.conf ${D}/etc
- install -m 0755 ${WORKDIR}/altboot/init.altboot ${D}/sbin
- install -m 0755 ${WORKDIR}/altboot/altbootctl ${D}/sbin
-
- install -m 0755 ${WORKDIR}/altboot/altboot-menu/*-* ${D}/etc/altboot-menu
-
- install -m 0755 ${WORKDIR}/altboot/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
-
- install -m 0755 ${WORKDIR}/altboot/altboot.rc/*.sh ${D}/etc/altboot.rc
- install -m 0644 ${WORKDIR}/altboot/altboot.rc/*.txt ${D}/etc/altboot.rc
-}
-
-######################################################################################
-
-do_configure() {
- cat ${WORKDIR}/altboot/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}-${PR}\"/" > ${WORKDIR}/altboot/init.altboot_
- mv ${WORKDIR}/altboot/init.altboot_ ${WORKDIR}/altboot/init.altboot
-}
-
-######################################################################################
-
-pkg_postinst_${PN}() {
- update-alternatives --install /sbin/init init /sbin/init.altboot 55
-}
-
-######################################################################################
-
-pkg_postrm_${PN}() {
- update-alternatives --remove init /sbin/init.altboot
-}
-
diff --git a/packages/altboot/files/akita/altboot-2.4.cfg b/packages/altboot/files/akita/altboot-2.4.cfg
deleted file mode 100644
index 4ea84ce32d..0000000000
--- a/packages/altboot/files/akita/altboot-2.4.cfg
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Altboot machine configuration for: Akita / Kernel 2.4
-#
-
-# Handled by /sbin/init.altboot
-# Allow booting images from SD or CF instead of booting
-# the ROM.
-ENABLE_ALTBOOT="yes"
-TIMEOUT="4"
-REAL_INIT="/sbin/init.sysvinit"
-SH_SHELL="/bin/sh"
-
-IMAGE_PATH="boot-images"
-IMAGE_TYPE="ext2"
-FSCK_IMAGES="yes"
-
-SD_DEVICE="/dev/mmcda1"
-SD_KERNEL_MODULE="/lib/modules/2.4.20/kernel/drivers/block/sharp_mmcsd_m.o"
-
-USB_HOST_AVAILABLE="yes"
-USB_STORAGE_MODULES="usb_ohci_pxa27x usb-storage"
-USB_STORAGE_PARTITION="/dev/sda1"
-USB_STORAGE_WAIT="4"
-
-INIT_RUNLEVEL="5"
-NO_GUI_RL="2"
-MASTER_PASSWORD=""
-ASK_PW_ON_BOOT="no"
-
-SD_MOUNTPOINT="/media/card"
-CF_MOUNTPOINT="/media/cf"
diff --git a/packages/altboot/files/akita/altboot-2.6.cfg b/packages/altboot/files/akita/altboot-2.6.cfg
deleted file mode 100644
index 62e8ea2434..0000000000
--- a/packages/altboot/files/akita/altboot-2.6.cfg
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Altboot machine configuration for: Akita / Kernel 2.6
-#
-
-# Handled by /sbin/init.altboot
-# Allow booting images from SD or CF instead of booting
-# the ROM.
-ENABLE_ALTBOOT="yes"
-TIMEOUT="4"
-REAL_INIT="/sbin/init.sysvinit"
-SH_SHELL="/bin/sh"
-
-ENABLE_SOUND="yes"
-
-IMAGE_PATH="boot-images"
-IMAGE_TYPE="ext2"
-FSCK_IMAGES="yes"
-ENABLE_IMAGECONF="yes"
-
-SD_DEVICE="/dev/mmcblk0p1"
-SD_KERNEL_MODULE=""
-
-USB_HOST_AVAILABLE="yes"
-USB_STORAGE_MODULES="ohci_hcd usb_storage sd_mod"
-USB_STORAGE_PARTITION="/dev/sda1"
-USB_STORAGE_WAIT="4"
-
-USB_NETWORKING_AVAILABLE="yes"
-USB_NW_MODULES="usbcore pxa27x_udc ohci-hcd g_ether"
-USB_NW_DEVICE="usb0"
-
-KEXEC_KERNEL_DIR="/boot"
-KEXEC_BIN="/usr/sbin/kexec"
-
-INIT_RUNLEVEL="5"
-NO_GUI_RL="2"
-MASTER_PASSWORD=""
-ASK_PW_ON_BOOT="no"
-
-SD_MOUNTPOINT="/media/card"
-CF_MOUNTPOINT="/media/cf"
diff --git a/packages/altboot/files/altboot-menu/00-Default b/packages/altboot/files/altboot-menu/00-Default
deleted file mode 100644
index 9d29fdae2a..0000000000
--- a/packages/altboot/files/altboot-menu/00-Default
+++ /dev/null
@@ -1,14 +0,0 @@
-# !/bin/sh
-M_TITLE="Normal Boot"
-
-
-run_module() {
- exec $REAL_INIT "$INIT_RUNLEVEL"
- exit 0
-}
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module;;
-esac
-
diff --git a/packages/altboot/files/altboot-menu/10-noGui b/packages/altboot/files/altboot-menu/10-noGui
deleted file mode 100644
index 57141d498d..0000000000
--- a/packages/altboot/files/altboot-menu/10-noGui
+++ /dev/null
@@ -1,14 +0,0 @@
-# !/bin/sh
-M_TITLE="Don't launch GUI"
-
-
-run_module() {
- clear ; exec $REAL_INIT "$NO_GUI_RL"
- exit 0
-}
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module;;
-esac
-
diff --git a/packages/altboot/files/altboot-menu/15-bootSD b/packages/altboot/files/altboot-menu/15-bootSD
deleted file mode 100644
index 3cf49deea5..0000000000
--- a/packages/altboot/files/altboot-menu/15-bootSD
+++ /dev/null
@@ -1,32 +0,0 @@
-# !/bin/sh
-#
-# Copyright Matthias Hentges (c) 2005
-#
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the GPL)
-
-
-M_TITLE="Boot SD card"
-
-test "$DISABLE_SD_BOOT" = yes && exit 0
-
-# This function is activated by init.altboot by calling this script with the "run" option
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- # Mount /proc, etc
- init_rootfs
-
- mount_sd
-
- # Check for a real fs and loop-images.
- check_target "$SD_MOUNTPOINT" >/dev/tty0
-
-}
-
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module "$2";;
-esac
-
diff --git a/packages/altboot/files/altboot-menu/20-bootCF b/packages/altboot/files/altboot-menu/20-bootCF
deleted file mode 100644
index 4add6e6631..0000000000
--- a/packages/altboot/files/altboot-menu/20-bootCF
+++ /dev/null
@@ -1,32 +0,0 @@
-# !/bin/sh
-#
-# Copyright Matthias Hentges (c) 2005
-#
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the GPL)
-
-
-M_TITLE="Boot CF card"
-
-test "$DISABLE_CF_BOOT" = yes && exit 0
-
-# This function is activated by init.altboot by calling this script with the "run" option
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- # Mount /proc, etc
- init_rootfs
-
- mount_cf
-
- # Check for a real fs and loop-images.
- check_target "$CF_MOUNTPOINT"
-
-}
-
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module "$2";;
-esac
-
diff --git a/packages/altboot/files/altboot-menu/99-ownScripts-example b/packages/altboot/files/altboot-menu/99-ownScripts-example
deleted file mode 100644
index 7566416b87..0000000000
--- a/packages/altboot/files/altboot-menu/99-ownScripts-example
+++ /dev/null
@@ -1,68 +0,0 @@
-# !/bin/sh
-#
-# Copyright Matthias Hentges (c) 2005
-#
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the GPL)
-
-
-# This file will teach you how to implement your own scripts while using existing altboot
-# code.
-
-# /sbin/init.altboot searches /etc/altboot-menu for scripts. It will only list scripts which
-# return a title when run with the "title" parameter.
-# Script which do not return a title will never be shown in the boot menu!
-#
-M_TITLE="altboot sample"
-
-# We can use that to deactivate certain scripts:
-exit 0
-
-# The "title" parameter is implemented at the end of this script so it will never be reached
-# and the script will simply be ignored by altboot.
-
-# This function is activated by init.altboot by calling this script with the "run" option
-run_module() {
-
- # altboot.func contains re-useable code. If you intend to use check_target (see below)
- # you must keep this line. If not, delete it.
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
-
- # The only thing you'll have to do is get your medium mounted.
- # The following lines mount a SD card on 2.4-series kernels on a Zaurus
-
- ##########################################
-
- # Mount /proc, etc
- init_rootfs
-
- echo -n "Loading SD kernel module..."
- /sbin/insmod $SD_KERNEL_MODULE >/dev/null 2>&1 && echo ok || die "insmod failed"
-
- echo -n "Mounting $SD_MOUNTPOINT..." >/dev/tty0
- /bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT >/dev/null 2>&1 && echo ok >/dev/tty0|| die "/bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT failed"
-
- echo ""
-
- # Give the SD and CF mounting some time. This is a must for SD
- sleep 2
- ##########################################
-
- # Once the medium (be it a CF or SD card, or even a NFS drive) is mounted somewhere,
- # just call check_target with the mountpoint as parameter.
- # check_target searches the medium for a real filesystem and loop-images and
- # asks the user what to boot if there are several choices.
-
- # Check for a real fs and loop-images.
- check_target "$SD_MOUNTPOINT" >/dev/tty0
-
- # Done :)
-
-}
-
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module "$2";;
-esac
-
diff --git a/packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick b/packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick
deleted file mode 100644
index b573e7a10c..0000000000
--- a/packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick
+++ /dev/null
@@ -1,47 +0,0 @@
-# !/bin/sh
-#
-# Copyright Matthias Hentges (c) 2005
-#
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the GPL)
-
-
-M_TITLE="Boot USB Storage"
-
-test "$USB_HOST_AVAILABLE" = "yes" || exit 0
-
-# This function is activated by init.altboot by calling this script with the "run" option
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- # Mount /proc, etc
- init_rootfs
-
- echo "Starting USB..."
-
- for module in $USB_STORAGE_MODULES
- do
- echo -en "\t - $module: "
- modprobe "$module" >/dev/null 2>&1 && echo ok || die "Failed to modprobe [$module]"
- done
-
- echo -n "Mounting $USB_STORAGE_PARTITION..." >/dev/tty0
-
- mkdir -p /media/usb-storage >/dev/null 2>&1
-
- sleep "$USB_STORAGE_WAIT"
-
- /bin/mount -t auto -o defaults,noatime $USB_STORAGE_PARTITION /media/usb-storage >/dev/null 2>&1 && echo ok >/dev/tty0|| die "/bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT failed"
-
- echo ""
-
- # Check for a real fs and loop-images.
- check_target "/media/usb-storage" >/dev/tty0
-}
-
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module "$2";;
-esac
-
diff --git a/packages/altboot/files/altboot-menu/Advanced/40-bootNFS b/packages/altboot/files/altboot-menu/Advanced/40-bootNFS
deleted file mode 100644
index 4f5c195be2..0000000000
--- a/packages/altboot/files/altboot-menu/Advanced/40-bootNFS
+++ /dev/null
@@ -1,110 +0,0 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
-#
-# Filename: 40-bootNFS
-# Date: 14-Apr-06
-
-
-M_TITLE="Boot from NFS"
-
-test "$DISABLE_NFS_BOOT" = yes && exit 0
-
-# This function is activated by init.altboot by calling this script with the "run" option
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- # Mount /proc, etc
- init_rootfs
-
- nfs_host="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $1}'|sed -n "s/\(.*\)\:\(.*\)/\1/p" `"
- nfs_mounts="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $1}'`"
- nfs_mountpoints="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $2}'`"
-
- start_networking "$nfs_host"
-
- if test -z "$nfs_host"
- then
- mdie "${C_RED}No configured NFS drives found in /etc/fstab$C_RESET"
-
- fi
-
-
- if test "` echo "$nfs_mountpoints" |wc -l | tr -d " "`" -gt 1
- then
- echo -e "Please select your NFS root:\n"
-
- cnt=1
- for nfs_mount in $nfs_mountpoints
- do
- echo -e "\t[$cnt] $nfs_mount"
- let cnt=$cnt+1
- done
-
- echo ""
-
- while test -z "$selection"
- do
- stty echo
- echo -n "Boot NFS root: "
-
- if test "$AUTOBOOT" != "yes"
- then
- read junk < /dev/tty1
- else
- if test -e /etc/.altboot-bootNFS-source.last
- then
- junk="`cat /etc/.altboot-bootNFS-source.last`"
- test -z "$junk" && read junk < /dev/tty1 || echo "$junk (autoboot)"
- else
- read junk < /dev/tty1
- fi
- fi
-
-
- cnt=1
- for nfs_mount in $nfs_mounts
- do
- if test "$junk" = "$cnt"
- then
- selection="$nfs_mount"
- echo "$junk" > /etc/.altboot-bootNFS-source.last
- fi
- let cnt=$cnt+1
- done
-
- done
- else
- test -z "$nfs_mounts" && die "No NFS mounts configured in /etc/fstab!"
- selection="$nfs_mounts"
- fi
-
- mkdir -p /media/nfsroot || mdie "mkdir -p /media/nfsroot failed!"
-
- echo -n "Mounting NFS root..."
-
- if ( mount | grep -q "/media/nfsroot" )
- then
- echo "/media/nfsroot already used, tying to umount..."
- umount /media/image
- losetup -d /dev/loop0
- umount /media/nfsroot || die "umount failed!"
- fi
-
- mount -t nfs "$selection" /media/nfsroot && echo ok || mdie "mount -t nfs "$selection" /media/nfsroot failed!"
-
- # Use configured resolv.conf in the pivoted rootfs
- #echo -n "Copying resolv.conf..."
- #cp /etc/resolv.conf /media/nfsroot/etc && echo ok || echo "FAILED"
-
- check_target "/media/nfsroot" bootNFS
-
-}
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module "$2";;
-esac
-
diff --git a/packages/altboot/files/altboot-menu/Advanced/55-bin-sh b/packages/altboot/files/altboot-menu/Advanced/55-bin-sh
deleted file mode 100644
index 6c9aef3f3e..0000000000
--- a/packages/altboot/files/altboot-menu/Advanced/55-bin-sh
+++ /dev/null
@@ -1,27 +0,0 @@
-# !/bin/sh
-M_TITLE="init=/bin/sh"
-
-test "$DISABLE_BINSH_BOOT" = yes && exit 0
-
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- test "$ASK_PW_ON_BOOT" != "yes" && verify_master_pw >/dev/tty0
-
- # Mount /proc, etc
- init_rootfs
-
- echo -e "\nBoot system with 'exec /sbin/init 5'\n"
- while true
- do
- exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
- echo "WARNING: Shell was killed!"
- done
-}
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module;;
-esac
-
diff --git a/packages/altboot/files/altboot-menu/Advanced/60-orig-init b/packages/altboot/files/altboot-menu/Advanced/60-orig-init
deleted file mode 100644
index ad9f2c78e1..0000000000
--- a/packages/altboot/files/altboot-menu/Advanced/60-orig-init
+++ /dev/null
@@ -1,20 +0,0 @@
-# !/bin/sh
-M_TITLE="Boot original INIT"
-
-exit 0
-
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- echo "altboot: Using real init [$REAL_INIT] [$INIT_RUNLEVEL] *" >/dev/tty1
- exec $REAL_INIT $INIT_RUNLEVEL
- exit 0
-
-}
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module;;
-esac
-
diff --git a/packages/altboot/files/altboot-menu/Advanced/70-install-tgz b/packages/altboot/files/altboot-menu/Advanced/70-install-tgz
deleted file mode 100644
index aca0d047c6..0000000000
--- a/packages/altboot/files/altboot-menu/Advanced/70-install-tgz
+++ /dev/null
@@ -1,264 +0,0 @@
-#!/bin/sh
-M_TITLE="Install RootFS from tar.gz"
-M_FLAGS="noRemember"
-
-run_module(){
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- # Mount /proc, etc
- init_rootfs
-
- # Mount
- mount_sd ingore_errors
- mount_cf
- mount_home
-
- for source in /home /media/card /media/cf
- do
- #echo "source: [$source]"
- rootfs_files="`ls -1 $source | grep "rootfs.tar.gz"`"
-
- #echo "rootfs_file: [$rootfs_files]"
- if test "`echo "$rootfs_files" | wc -l | tr -d " "`" -gt 1
- then
- echo "Multiple rootfs files not supported, yet"
- else
- if test -n "$rootfs_files"
- then
- rootfs_source="$source/$rootfs_files"
- echo "Using [$rootfs_source]"
- break
- fi
- fi
- done
-
- test -z "$rootfs_source" && die "No rootfs.tar.gz found"
-
- echo -e "\nPlease choose the target of this installation:\n"
-
- echo -e "\t [1] SD / MMC"
- echo -e "\t [2] Compact Flash"
-
- echo ""
- while true
- do
- echo -n "Your target: "
- read junk
-
- case "$junk" in
- 1) if (mount | grep -q "/media/card ")
- then
- rootfs_target="/media/card"; break
- else
- echo -e "\nInstallation target [/media/card] not mounted\n"
- fi ;;
- 2) if (mount | grep -q "/media/cf ")
- then
- rootfs_target="/media/cf"; break
- else
- echo -e "\nInstallation target [/media/cf] not mounted\n"
- fi ;;
- esac
- done
-
- echo -e "\nPlease choose the type of this installation:\n"
-
- echo -e "\t [1] Imagefile (loopfile)"
- echo -e "\t [2] Direct Install"
-
- echo ""
- while true
- do
- echo -n "Install type: "
- read junk
-
- case "$junk" in
- 1) if test -x /sbin/mkfs.ext2
- then
- rootfs_type="image"
- break
- else
- echo -e "\nNOTE: mkfs.ext2 (from e2fsprogs-mke2fs) not found, loop-images not supported\n"
- fi ;;
- 2) rootfs_type="direct" ; break ;;
- esac
- done
-
- case "$rootfs_type" in
- image) install_rootfs_image "$rootfs_target";;
- direct) install_rootfs_direct "$rootfs_target";;
- esac
-}
-
-clear_directories(){
- test "$1" = "/" -o "$1" = "/ " && die "clear_directories(): You don't want to do that."
-
- ! test -d "$1" && die "clear_directories(): [$1] not found."
-
- for d in bin dev media proc sys usr boot etc lib mnt sbin tmp var
- do
- if test -d "$1/$d"
- then
- echo "Removing [$1/$d]..."
- rm -rf "$1/$d"
- fi
- done
-
-}
-
-
-install_rootfs_direct(){
-
- mount | grep -q "$1 " || die "Installation target [$1] not mounted"
-
- echo -e "Do you want to remove existing directories from [$1]\n before installing the new rootfs?"
- echo ""
-
- while true
- do
- echo -n "Remove old directories? [Y|n] "
- read junk </dev/tty0 >/dev/tty0 2>&1
-
- case "$junk" in
- Y|y|"") clear_directories "$1"; break ;;
- esac
- done
-
- echo "Please press <ENTER> to begin the installation"
- read junk </dev/tty0 >/dev/tty0 2>&1
-
- test -d "$1" || die "Directory [$1] not found"
-
- echo -n "Installing rootfs, please wait..."
- tar -xzf "$rootfs_source" -C "$1" >/dev/null 2>&1 && echo ok || die "tar -xzf \"$rootfs_source\" -C \"$1\" failed!"
-
- echo -n "Syncing drives..."
- sync
- echo "done"
-
-# umount "$1"
-
- echo "Press <ENTER> to bring up the altboot menu"
- read junk </dev/tty0 >/dev/tty0 2>&1
- exec /sbin/init.altboot -force
-
-}
-
-install_rootfs_image(){
-
- mount | grep -q "$1 " || die "Installation target [$1] not mounted"
-
- echo ""
- echo "Please enter a name for the image file."
- echo "Do not use the <space> character"
- echo ""
-
-
- while true
- do
- echo -n "Image name: "
- read junk
-
- if test -n "$junk"
- then
- if test -e "$1/boot-images/${junk}-rootfs.bin"
- then
- echo -e "\nFile [$1/boot-images/${junk}-rootfs.bin] already exists."
-
- while true
- do
- echo -n "Overwrite? [y|N] "
- read junk2
-
- case "$junk2" in
- Y|y) break;;
- n|N|"") install_rootfs_image "$1"
- exit 0;;
- esac
- done
- rootfs_image_name="${junk}-rootfs.bin"
- break
- else
- echo -n "Use [$junk] as name? [Y|n] "
- read junk2
-
- case "$junk2" in
- "Y"|"y"|"") rootfs_image_name="${junk}-rootfs.bin"
- break ;;
- *) echo "err ]$junk]";;
- esac
- fi
- fi
- done
-
- echo ""
- echo "Please enter the image size in MegaBytes"
- echo "Must be at least 30Mb"
- echo ""
-
- while true
- do
- echo -n "Image size: "
- read junk
-
- junk="`echo "$junk" | sed "s/[a-zA-Z]//g"`"
-
- if test -n "$junk"
- then
- if test "$junk" -gt 29
- then
- echo -n "Is [${junk}Mb] correct? [Y|n] "
- read junk2
-
- case "$junk2" in
- Y|y|"") rootfs_image_size="$junk"
- break ;;
- esac
-
- else
- echo "Image size of [${junk}Mb] is too small!"
- fi
- fi
- done
-
- test -z "$rootfs_image_name" -o -z "$rootfs_image_size" && die "DEBUG: Empty VAR in install_rootfs_image()"
-
- echo ""
- echo "Creating [$rootfs_image_name] (${rootfs_image_size}Mb) on [$1]"
- echo "Please wait..."
- mkdir -p "$1/boot-images"
-
- dd if=/dev/zero of="$1/boot-images/$rootfs_image_name" bs=1024k count=$rootfs_image_size >/dev/null
-
- echo -n "Creating an ext2 filesystem on $rootfs_image_name..."
- losetup /dev/loop0 "$1/boot-images/$rootfs_image_name" || die "losetup /dev/loop0 \"$1/boot-images/$rootfs_image_name\" failed!"
- mkfs.ext2 -m0 /dev/loop0 >/dev/null 2>&1 && echo done || die "mkfs.ext2 -m0 /dev/loop0 failed!"
-
- echo -n "Mounting loopfile..."
- mkdir -p /media/image
- mount /dev/loop0 /media/image && echo ok || die "mount /dev/loop0 /media/image failed!"
-
- echo -n "Installing rootfs, please wait..."
- tar -xzf "$rootfs_source" -C "/media/image" >/dev/null 2>&1 && echo ok || die "tar -xzf \"$rootfs_source\" -C \"$1\" failed!"
-
- echo -n "Syncing drives..."
- sync
- echo "done"
-
- umount "/media/image" && losetup -d /dev/loop0
-
- echo "Press <ENTER> to bring up the altboot menu"
- read junk </dev/tty0 >/dev/tty0 2>&1
- exec /sbin/init.altboot -force
-
-}
-
-
-
-#run_module
-
-case "$1" in
-title) echo "$M_TITLE";;
-flags) echo "$M_FLAGS";;
-run) run_module "$2";;
-esac
diff --git a/packages/altboot/files/altboot-menu/Advanced/70-setKernel b/packages/altboot/files/altboot-menu/Advanced/70-setKernel
deleted file mode 100644
index 50f61d034f..0000000000
--- a/packages/altboot/files/altboot-menu/Advanced/70-setKernel
+++ /dev/null
@@ -1,68 +0,0 @@
-# !/bin/sh
-M_TITLE="Choose kernel for next boot"
-
-# Deprecated due to altbootctl
-exit 0
-
-# Only kernel 2.6 offers kexec support
-uname -r | grep -q "^2.6" || exit 0
-
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- test -z "$KEXEC_KERNEL_DIR" && KEXEC_KERNEL_DIR="/boot"
- test -x "$KEXEC_BIN" || mdie "kexec-tools not found [$KEXEC_BIN]"
-
- # Mount /proc, etc
- # init_rootfs
-
- if test `ls -1 $KEXEC_KERNEL_DIR | grep -v "kexec.cfg" | wc -l | tr -d " "` -gt 1
- then
- echo -e "\nSelect the kernel for use of the next boot:\n"
-
- cnt=1 ; reset_pref "kexec_klist"
- for k in `ls -1 $KEXEC_KERNEL_DIR/zImage* | grep -v "kexec.cfg" `
- do
- echo -e "\t[$cnt] $k"
- set_pref "kexec_klist" "$cnt" "$k"
-
- let cnt=$cnt+1
- done
-
- echo ""
-
- while true
- do
- echo -n "Select a kernel: "
- read junk
-
- #echo_pref kexec_klist
-
- get_pref "kexec_klist" "$junk" KEXEC_SELECTED_KERNEL && break
-
- done
- else
- KEXEC_SELECTED_KERNEL="`ls -1 $KEXEC_KERNEL_DIR/zImage* | grep -v "kexec.cfg" `"
- fi
-
- echo -e "\nUsing [$KEXEC_SELECTED_KERNEL]"
-
- if ! test -e "$KEXEC_SELECTED_KERNEL.kexec.cfg"
- then
- echo -e "\nWARNING: This kernel has not been configured."
- echo -e "It will only boot correctly if CMDLINE is compiled in.\n"
- fi
-
- export USE_KEXEC_ON_NEXT_BOOT=yes
- export KEXEC_SELECTED_KERNEL
- show_menu
-}
-
-
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module;;
-esac
-
diff --git a/packages/altboot/files/altboot-menu/Advanced/80-configure-kexec b/packages/altboot/files/altboot-menu/Advanced/80-configure-kexec
deleted file mode 100644
index 1b8fc6e547..0000000000
--- a/packages/altboot/files/altboot-menu/Advanced/80-configure-kexec
+++ /dev/null
@@ -1,248 +0,0 @@
-# !/bin/sh
-M_TITLE="Configure kexec CMDLINE"
-
-# Deprecated due to altbootctl
-exit 0
-
-
-# Only kernel 2.6 offers kexec support
-uname -r | grep -q "^2.6" || exit 0
-
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- test -z "$KEXEC_KERNEL_DIR" && KEXEC_KERNEL_DIR="/boot"
- test -x "$KEXEC_BIN" || mdie "kexec-tools not found [$KEXEC_BIN]"
-
- # Mount /proc, etc
- init_rootfs
-
- if test `ls -1 $KEXEC_KERNEL_DIR | grep -v "kexec.cfg" | wc -l | tr -d " "` -gt 1
- then
- echo -e "\nPlease select the kernel you want to configure:\n"
-
- cnt=1 ; reset_pref "kexec_klist"
- for k in `ls -1 $KEXEC_KERNEL_DIR/zImage* | grep -v "kexec.cfg" `
- do
- echo -e "\t[$cnt] $k"
- set_pref "kexec_klist" "$cnt" "$k"
-
- let cnt=$cnt+1
- done
-
- echo ""
-
- while true
- do
- echo -n "Select a kernel: "
- read junk
-
- get_pref "kexec_klist" "$junk" KEXEC_KERNEL && break
-
- done
- else
- KEXEC_KERNEL="`ls -1 $KEXEC_KERNEL_DIR/zImage* | grep -v "kexec.cfg" `"
- fi
-
- echo -e "\nUsing [$KEXEC_KERNEL]"
-
- configure_rootdev
- configure_roottype
- configure_verbose
- configure_custom
-
- CMDLINE="console=ttyS0,115200n8 console=tty1 dyntick=enable fbcon=rotate:1 noinitrd root=$KERNEL_ROOTDEV rootfstype=$KERNEL_ROOTFSTYPE $KERNEL_VERBOSE $KERNEL_CUSTOM"
-
- echo -en "\nWriting CMDLINE to $KEXEC_KERNEL.kexec.cfg..."
- echo "$CMDLINE" > $KEXEC_KERNEL.kexec.cfg && echo ok || mdie FAILED
-
- show_menu
-}
-
-configure_rootdev() {
-
- echo -e "\nPlease choose a root device (root=*):\n"
-
- cnt=1 ; reset_pref "kexec_rootdev"
- for root in /dev/mtdblock2 /dev/hda1 "Manual Entry"
- do
- echo -e "\t[$cnt] $root"
- set_pref kexec_rootdev "$cnt" "$root"
- let cnt=cnt+1
- done
-
- echo ""
-
- while true
- do
- echo -n "Select a root device: "
- read junk
-
- get_pref kexec_rootdev "$junk" KERNEL_ROOTDEV && break
- done
-
- if test "$KERNEL_ROOTDEV" = "Manual Entry"
- then
- echo ""
-
- KERNEL_ROOTDEV=""
-
- while test -z "$KERNEL_ROOTDEV"
- do
- while true
- do
- echo -n "Enter the root device: "
- read junk
- test -n "$junk" && break
- done
-
- echo -en "\nIs [$junk] correct? [Y|n] "
- read junk2
- while true
- do
- if test "$junk2" = y -o "$junk2" = Y -o -z "$junk2"
- then
- KERNEL_ROOTDEV="$junk"
- break
- fi
-
- break
- done
- done
- fi
-
- echo "Using [$KERNEL_ROOTDEV] as root device"
-}
-
-configure_roottype() {
-
- echo -e "\nPlease choose a rootfs type (rootfs=*):\n"
-
- cnt=1 ; reset_pref "kexec_rootfstype"
- for root in jffs2 ext2 ext3 "Manual Entry"
- do
- echo -e "\t[$cnt] $root"
- set_pref kexec_rootfstype "$cnt" "$root"
- let cnt=cnt+1
- done
-
- echo ""
-
- while true
- do
- echo -n "Select a rootfs type: "
- read junk
-
- get_pref kexec_rootfstype "$junk" KERNEL_ROOTFSTYPE && break
- done
-
- if test "$KERNEL_ROOTFSTYPE" = "Manual Entry"
- then
- echo ""
-
- KERNEL_ROOTFSTYPE=""
-
- while test -z "$KERNEL_ROOTFSTYPE"
- do
- while true
- do
- echo -n "Enter the rootfs type: "
- read junk
- test -n "$junk" && break
- done
-
- echo -en "\nIs [$junk] correct? [Y|n] "
- read junk2
- while true
- do
- if test "$junk2" = y -o "$junk2" = Y -o -z "$junk2"
- then
- KERNEL_ROOTFSTYPE="$junk"
- break
- fi
-
- break
- done
- done
- fi
-
- echo "Using [$KERNEL_ROOTFSTYPE] as rootfs type"
-}
-
-configure_verbose() {
- echo -e "\nDo you want to see kernel messages? ([quiet | debug]):\n"
-
- echo -e "\t[1] Yes"
- echo -e "\t[2] No"
-
- echo ""
-
- while true
- do
- echo -n "Select one of the above: "
- read junk
-
- test "$junk" = 1 -o "$junk" = 2 && break
- done
-
- test "$junk" = 1 && KERNEL_VERBOSE="debug" || KERNEL_VERBOSE="quiet"
-
-}
-
-configure_custom() {
- echo -e "\nDo you want to set custom kernel options?\n"
-
- echo -e "\t[1] Yes"
- echo -e "\t[2] No"
-
- echo ""
-
- while true
- do
- echo -n "Select one of the above: "
- read junk
-
- test "$junk" = 1 -o "$junk" = 2 && break
- done
-
- if test "$junk" = 1
- then
-
- echo ""
-
- KERNEL_CUSTOM=""
-
- while test -z "$KERNEL_CUSTOM"
- do
- while true
- do
- echo -n "Enter kernel options: "
- read junk
- test -n "$junk" && break
- done
-
- echo -en "\nIs [$junk] correct? [Y|n] "
- read junk2
- while true
- do
- if test "$junk2" = y -o "$junk2" = Y -o -z "$junk2"
- then
- KERNEL_CUSTOM="$junk"
- break
- fi
-
- break
- done
- done
- fi
-
- echo "Using [$KERNEL_CUSTOM] as custom kernel options"
-
-}
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module;;
-esac
-
diff --git a/packages/altboot/files/altboot-menu/Advanced/80-copyrootfs b/packages/altboot/files/altboot-menu/Advanced/80-copyrootfs
deleted file mode 100644
index 2d305e349f..0000000000
--- a/packages/altboot/files/altboot-menu/Advanced/80-copyrootfs
+++ /dev/null
@@ -1,323 +0,0 @@
-# !/bin/sh
-M_TITLE="Copy rootfs to SD/CF"
-M_FLAGS="noRemember"
-
-# Unfinished script.
-exit 0
-
-ask_target() {
- available_disks="`mount | grep "/media" | grep -v ram | awk '{print $3}'`"
-
- if test -z "$available_disks"
- then
- die "No mounted targets found!"
- fi
-
- cnt=1
- for d in $available_disks
- do
- echo -e "\t[$cnt] $d"
- let cnt=$cnt+1
- done
-
- while test -z "$ROOTFS_TARGET"
- do
- echo -n "Target: "
- read junk </dev/tty1
-
- x=1
- for d in $available_disks
- do
- if test "$junk" = "$x"
- then
- ROOTFS_TARGET="$d"
- break
- fi
- let x=$x+1
- done
-
-
- done
-
- ROOTFS_TARGET_DEV="`mount | grep "$ROOTFS_TARGET " | awk '{print $1}'`"
- ROOTFS_TARGET_FS="`mount | grep "$ROOTFS_TARGET " | awk '{print $5}'`"
-
- echo "Using [$ROOTFS_TARGET] on [$ROOTFS_TARGET_DEV] with [$ROOTFS_TARGET_FS] filesystem"
-}
-
-ask_format() {
- if test "$ROOTFS_TARGET_FS" != ext2
- then
- echo -e "\nYou are not using the ext2 filesystem on your target ($ROOTFS_TARGET_FS)$.\nYou now have two choices:"
- echo -e "\t[1] Reformat to ext2"
- echo -e "\t[2] Use an image-file ontop of the existing filesystem"
-
- while true
- do
- echo -n "Your choice: "
- read junk </dev/tty1
-
- case "$junk" in
- 1) ROOTFS_TARGET_TYPE="ext2"
- break ;;
- 2) ROOTFS_TARGET_TYPE="image"
- break ;;
- esac
- done
-
- echo "Mode: [$ROOTFS_TARGET_TYPE]"
- else
- echo -e "\nYou are using the ext2 filesystem on your target.\nYou now have two choices:"
- echo -e "\t[1] Install to the target directly"
- echo -e "\t[2] Use an image-file ontop of the existing filesystem\n"
-
- while true
- do
- echo -n "Your choice: "
- read junk </dev/tty1
-
- case "$junk" in
- 1) ROOTFS_TARGET_TYPE="direct"
- break ;;
- 2) ROOTFS_TARGET_TYPE="image"
- break ;;
- esac
- done
-
- echo "Mode: [$ROOTFS_TARGET_TYPE]"
-
- fi
-}
-
-ask_confirm() {
- echo -e "\nYour choices are:"
- echo -e "\tTarget:\t$ROOTFS_TARGET_DEV (currently mounted as $ROOTFS_TARGET)"
- case "$ROOTFS_TARGET_TYPE" in
- direct) echo -e "\tType:\t${C_RED}direct install, reformat if required${C_RESET}";;
- image) echo -e "\tType:\tinstall into image-file";;
- esac
-
- while true
- do
- echo -n "Continue? [y|n] "
- read junk </dev/tty1
-
- case "$junk" in
- y) break ;;
- n) exit 1
- esac
- done
-}
-
-direct_install() {
-
- #format_target
-
- echo -n "Creating temporary directory..."
- mkdir -p /media/temp && echo ok || die "mkdir -p /media/temp failed!"
-
- echo -n "Mounting [$ROOTFS_TARGET_DEV] as /media/temp..."
- mount "$ROOTFS_TARGET_DEV" /media/temp && echo "ok" || die "mount "$ROOTFS_TARGET_DEV" /media/temp FAILED"
-
- copy_files
-}
-
-format_target() {
- echo -e "\n\nI'm about to format your target ($ROOTFS_TARGET_DEV) to the ext2 filesystem\n"
- echo -e "${C_RED}YOU WILL LOSE ALL DATA ON YOUR TARGET IF YOU CONTINUE${C_RESET}\n"
-
- while true
- do
- echo -n "Continue? [y|n] "
- read junk </dev/tty1
-
- case "$junk" in
- y) break ;;
- n) die "User aborted mkfs"
- break ;;
- esac
- done
-
- echo -n "Umounting $ROOTFS_TARGET_DEV..."
- umount "$ROOTFS_TARGET_DEV" && echo "ok" || die "umount $ROOTFS_TARGET_DEV failed!"
-
-
- echo "Formatting..."
- /sbin/mkfs.ext2 -m0 "$ROOTFS_TARGET_DEV" && echo -e "\nmkfs.ext2 finished" || die "\nmkfs.ext2 FAILED"
- }
-
-image_install() {
- flash_size="` df -h | grep "/"$| awk '{print $3}'| sed s/M//`"
-
- echo -e "\nHow many MB do you want to configure for the image file?"
- echo -e "It is generally a good idea to use 2.5x the used flash size ($flash_size)\n"
-
- while test -z "$ROOTFS_IMAGE_SIZE"
- do
- echo -n "Size in MegaBytes: "
- read junk
-
- # test fails if $junk isn't a number
- if test "$junk" -gt 0 >/dev/null 2>&1
- then
- echo -n "Use [$junk]MB? [y|n] "
- read junk2
- if test "$junk2" = y
- then
- ROOTFS_IMAGE_SIZE="$junk"
- fi
- fi
- done
-
- echo -e "\nPlease enter a name for the image file."
- echo "The name must _not_ contain whitespaces or the '-' sign."
-
- while test -z "$ROOTFS_IMAGE_NAME"
- do
- echo -n "File name: "
- read junk
-
- if ! test -z "$junk"
- then
- echo -n "Use [$junk] as image name? [y|n] "
- read junk2
-
- if test "$junk2" = y
- then
- ROOTFS_IMAGE_NAME="$junk"
- fi
- fi
- done
-
- echo -e "\nDo you want to format [$ROOTFS_TARGET_DEV] to the ext2 filesystem?"
-
- while true
- do
- echo -n "Format to ext2? [y|n] "
- read junk
- case "$junk" in
- y) format_target
- break ;;
- n) break ;;
- esac
- done
-
- /etc/init.d/devices start
-
- echo -en "\nCreating image file [$ROOTFS_TARGET/$IMAGE_PATH/$ROOTFS_IMAGE_NAME-rootfs.bin] (${ROOTFS_IMAGE_SIZE}MB)..."
- mkdir -p "$ROOTFS_TARGET/$IMAGE_PATH"
-
- dd if=/dev/zero of="$ROOTFS_TARGET/$IMAGE_PATH/$ROOTFS_IMAGE_NAME-rootfs.bin" bs=1024k count=$ROOTFS_IMAGE_SIZE >/dev/null 2>&1 && echo ok || die "FAILED"
- losetup /dev/loop1 "$ROOTFS_TARGET/$IMAGE_PATH/$ROOTFS_IMAGE_NAME-rootfs.bin"
-
- echo -n "Creating filesystem..."
- mkfs.ext2 -m0 /dev/loop1 >/dev/null 2>&1 && echo ok || die FAILED
-
- mkdir -p /media/temp
- mount /dev/loop1 /media/temp || die "mount /dev/loop1 /media/temo FAILED!"
-
- copy_files
-
-}
-
-copy_files() {
- echo -e "\nCopying files..."
-
- exclude_list="tmp sys proc var dev media root"
- mkdir_list="var proc sys dev media/card media/cf /media/hdd"
-
- if (cat /etc/fstab | grep -q "/home")
- then
- echo "Note: /home appears to be mounted on a different flash partition: not copying /home"
- exclude_list="$exclude_list home"
- mkdir_list="$mkdir_list home/root"
-
- fi
-
-
-
- source_dirs="`ls -1 /`"
-
- echo -n "Excluding ["
- for d in $exclude_list
- do
- echo -n "$d "
- source_dirs="`echo "$source_dirs" | grep -v "$d"`"
- done
- echo "] from copy"
-
-
- cd /
- for dir in $source_dirs
- do
- if test -d "$dir"
- then
- echo -n "Copying [$dir]..."
- cp -a $dir /media/temp && echo ok || echo FAILED
- fi
- done
-
- for dir in $mkdir_list
- do
- mkdir -p /media/temp/$dir
- done
-
- rm /media/temp/etc/rcS.s/S39sd
-
-}
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- echo -e "${C_RED}* * * * * WARNING * * * * *${C_RESET}"
- echo -e "${C_RED}Continueing will delete the content of the selected target device.\nTHIS IS NO JOKE. If you do now know what this menu-item does, exit NOW${C_RESET}"
-
- mount -o remount,rw /
-
- while true
- do
- echo -en "\nContinue? [y|n] "
- read junk </dev/tty1
-
- if test "$junk" = n
- then
- exit 0
- fi
-
- if test "$junk" = y
- then
- break
- fi
- done
-
-# echo -n "Trying to activate PCMCIA..."
-# cardmgr -o >/dev/null 2>&1 && echo ok || echo "FAILED"
-#
-# echo -n "Trying to mount SD card..."
-# /etc/init.d/sd start >/dev/null 2>&1
-# sleep 3
-# /etc/sdcontrol insert >/dev/null 2>&1 && echo ok || echo "FAILED"
-
- #exit 0
- echo -e "\nPlease select the target device:"
-
- # Sets ROOTFS_TARGET*
- ask_target
-
- # Sets ROOTFS_TARGET_TYPE ([direct | image]
- ask_format
-
- # Ask confirmation
- ask_confirm
-
- case "$ROOTFS_TARGET_TYPE" in
- direct) direct_install;;
- image) image_install;;
- esac
-}
-
-case "$1" in
-title) echo "$M_TITLE";;
-flags) echo "$M_FLAGS";;
-run) run_module;;
-esac
diff --git a/packages/altboot/files/altboot.func b/packages/altboot/files/altboot.func
deleted file mode 100644
index 75808090ba..0000000000
--- a/packages/altboot/files/altboot.func
+++ /dev/null
@@ -1,828 +0,0 @@
-#! /bin/sh
-
-C_RED="\033[31m"
-C_YELLOW="\033[35m"
-C_BLUE="\033[34m"
-C_WHITE="\033[38m"
-C_RESET="\033[0m"
-
-
-# This function checks for the presence of a real filesystem and loop-images on the target
-# $1 = folder of rootfs, $2 = runlevel (defaults to 5)
-# $2 = name of calling module
-check_target() {
- # Check if there is a /sbin/init or /sbin/init.sysvinit on the card
- if test -x $1/sbin/init -o -x $1/$REAL_INIT
- then
- real_fs_found=1
- else
- echo -e "Note: No INIT [$REAL_INIT] found on target"
- fi
-
- # Check for loop-images
- if (ls $1/$IMAGE_PATH/*rootfs.bin) >/dev/null 2>&1
- then
- image_found=1
- else
- echo "Note: No boot-images found in [$1/$IMAGE_PATH]"
- fi
-
- # Check if we have both, a real fs and boot-images. If so, ask the user what to boot
- if test "$real_fs_found" = 1 -a "$image_found" = 1
- then
- echo -e "\nI have found a real filesystem and boot-images on the target"
- echo -e "What do you want to boot?\n"
-
- echo -e "\t[1] The real filesystem"
- echo -e "\t[2] A loop-image"
- echo ""
-
- while test -z "$ans"
- do
- echo -n "Your choice: "
-
- if test "$AUTOBOOT" != "yes"
- then
- read junk < "$OUT_TTY"
- else
- if test -e /etc/.altboot-real-or-loop.last
- then
- junk="`cat /etc/.altboot-real-or-loop.last`"
- test -z "$junk" && read junk < "$OUT_TTY" || echo "$junk (autoboot)"
- else
- read junk < "$OUT_TTY"
- fi
- fi
-
- if test "$junk" = 1 -o "$junk" = 2
- then
- ans="$junk"
- echo "$junk" > /etc/.altboot-real-or-loop.last
- fi
- done
-
- case "$ans" in
- 1) pivot_realfs "$1" "$2">"$OUT_TTY";;
- 2) pivot_image "$1" "$2">"$OUT_TTY";;
- esac
-
- exit 0
- fi
-
- # Boot a real filesystem
- test "$real_fs_found" = 1 && pivot_realfs "$1" >"$OUT_TTY"
-
- # Boot a loop-image
- test "$image_found" = 1 && pivot_image "$1" >"$OUT_TTY"
-
- if test "$real_fs_found" != 1 -a "$image_found" != 1
- then
- mdie "No direct-install or loop-images found. Nothing to do!"
- fi
-}
-
-boot_new_rootfs_splash() {
-C_RED="\033[37;44m"
-C_RESET="\033[0m"
-
- echo -e "${C_RED}+----------------------------------------------------------+${C_RESET}"
- echo -e "${C_RED}| |${C_RESET}"
- echo -e "${C_RED}| Booting the selected rootfs... |${C_RESET}"
- echo -e "${C_RED}| |${C_RESET}"
- echo -e "${C_RED}+----------------------------------------------------------+${C_RESET}"
-
-}
-
-# This function pivot_root's into a real filesystem calling $newrootfs/sbin/init
-# $1 = The new rootfs
-pivot_realfs() {
- #test -z "$2" && RL="5" || RL="$2"
- mkdir -p $1/media/ROM || die "mkdir -p $1/media/ROM failed"
-
- mount -o remount,ro / >/dev/null 2>&1
-
- test "$ENABLE_IMAGECONF" = yes && image_conf $1
-
- do_pivot "$1" "$RL"
-}
-
-# This function loop-mounts an image-file and pivot_root's into it
-# $1: The new rootfs
-pivot_image() {
- #test -z "$2" && RL="5" || RL="$2"
- cd $1/$IMAGE_PATH
-
- # Check for rootfs images on the card
- if test "`ls *rootfs.bin | wc -l | tr -d " "`" -gt 1
- then
- echo -e "\n\nPlease select a rootfs:\n"
-
- # Show all available images
- x=0
- for file in `ls *rootfs.bin`
- do
- let x=$x+1
- echo -e "\t\t[$x] $file"
- done
-
- echo ""
-
- IMAGE_NAME=""
- while test -z "$IMAGE_NAME"
- do
- echo -en "Please choose one of the above: "
- if test "$AUTOBOOT" != "yes"
- then
- read junk < "$OUT_TTY"
- else
- if test -e /etc/.altboot-loopimage.last
- then
- junk="`cat /etc/.altboot-loopimage.last`"
- test -z "$junk" && read junk < "$OUT_TTY" || echo "$junk (autoboot)"
- else
- read junk < "$OUT_TTY"
- fi
- fi
-
- x=0
- for file in `ls *rootfs.bin`
- do
- let x=$x+1
- if test "$x" = "$junk"
- then
- IMAGE_NAME="$file"
- echo "$junk" > /etc/.altboot-loopimage.last
- fi
- done
- done
- else
- IMAGE_NAME="`ls *rootfs.bin`"
- test -z "$IMAGE_NAME" && die "No rootfs found (*rootfs.bin) in $1/$IMAGE_PATH"
- fi
-
-
- echo ""
-
- mkdir -p /media/image || die "mkdir -p /media/image failed"
-
- losetup /dev/loop0 $1/$IMAGE_PATH/$IMAGE_NAME || die "losetup /dev/loop0 $1/$IMAGE_PATH/$IMAGE_NAME failed!"
- check_fs /dev/loop0 $IMAGE_TYPE
-
- echo -e "\n* * * Mounting rootfs image * * *\n"
-
- # Busybox's "mount" doesn't seem to like "-o loop" for some reason
- # It works on collie and b0rks on poodle.
- if [ "$IMAGE_TYPE" = "" ]; then
- IMAGE_TYPE="auto"
- fi
-
- # If mount fails it has the tendency to spew out a _lot_ of error messages.
- # We direct the output to /dev/null so the user can see which step actually failed.
- mount /dev/loop0 -t $IMAGE_TYPE /media/image >/dev/null 2>&1 || die "mount -t $IMAGE_TYPE /dev/loop0 /media/image failed!"
-
- mkdir -p /media/image/media/ROM || die "mkdir -p /media/image/media/ROM failed"
-
- test "$ENABLE_IMAGECONF" = yes && image_conf /media/image
-
- do_pivot /media/image "$RL"
-}
-
-#$1=mountpoint of the soon-to-be rootfs, $2=Runlevel
-do_pivot(){
-
- if test "$USE_KEXEC_ON_NEXT_BOOT" = yes
- then
- if test -e "$KEXEC_SELECTED_KERNEL.kexec.cfg"
- then
- CMDLINE="--append=\"`cat $KEXEC_SELECTED_KERNEL.kexec.cfg`\""
- else
- CMDLINE=""
- echo "WARNING: This kernel has not been configured!"
- echo "Trying to boot anyway..."
- fi
-
- echo "$KEXEC_BIN -l $KEXEC_SELECTED_KERNEL $CMDLINE"
- $KEXEC_BIN -l $KEXEC_SELECTED_KERNEL $CMDLINE
- sync
-
- read junk
- $KEXEC_BIN -e
- exit 0
- fi
-
-
- echo -n "Pivoting root..."
- if (/sbin/pivot_root "$1" "$1/media/ROM")
- then
- echo "Success"
-
- # This is important since we are still cd'ed into the old root
- cd /
-
- ! test -d "$1" && mkdir -p "$1"
-
- # Move mountpoints from the old rootfs into the new one.
- # The *real* mount is kinda touchy feely about that
- /bin/busybox mount -o move /media/ROM/proc /proc >/dev/null 2>&1
-
- for mpt in ` mount | grep "/media/ROM/" | awk '{print $3}'`
- do
- new_mpt="`echo "$mpt" | sed -n "s/\/media\/ROM//p"`"
-
- echo "Moving mountpoint [$mpt] -> [$new_mpt]" >"$OUT_TTY" 2>&1
-
- ! test -d "$new_mpt" && mkdir -p "$new_mpt"
- /bin/busybox mount -o move "$mpt" "$new_mpt"
- done
-
- clear
- boot_new_rootfs_splash
- echo "Calling INIT"
-
- exec /usr/sbin/chroot . $REAL_INIT $2 >"$OUT_TTY" 2>&1
- #exec /usr/sbin/chroot . /sbin/init $2 >/dev/tty0 2>&1
- else
- echo "FAILED"
- die "* * * pivot_root failed! * * *"
- fi
-
-}
-
-# $1: Path to mounted rootfs
-image_conf(){
- ! test -d "$1" && die "image_conf: [$1] not found / no directory"
-
- test -e "$1/etc/.image_conf.done" && return
-
- echo -e "\n\n* * * rootfs configuration * * *\n"
- echo -e "This setup lets you reconfigure your new rootfs."
- echo "Most probably the rootfs is configured with"
- echo "defaults based on a flash installation."
- echo "If unsure, go with the defaults by pressing <ENTER>."
- echo ""
-
- if ( cat $1/etc/fstab | grep -v "^#" | grep -q "/home " )
- then
- while true
- do
- echo "Usually your /home directory is located on another flash partition."
- echo -n "Do you want me to move /home inside the loop-image? [N|y] "
- read junk
-
- if test "$junk" = "y" -o "$junk" = "Y"
- then
- cat $1/etc/fstab | sed "/.*\/home.*/s/\/home/\/home.flash/" > $1/etc/fstab_
- mv $1/etc/fstab_ $1/etc/fstab
-
- mkdir -p $1/home.flash
- break
- fi
-
- test "$junk" = "" -o "$junk" = n -o "$junk" = N && break
- done
-
- fi
-
- echo ""
-
- if ( cat $1/etc/ipkg.conf | grep -q ^lists_dir )
- then
- while true
- do
- echo -e "Wasting RAM is never a good idea.\nOnly say Y if your rootfs is very small in size"
- echo -en "Do you want to store ipkg package data\nin RAM? [N|y] "
- read junk
-
- if test "$junk" = "" -o "$junk" = n -o "$junk" = N
- then
- cat $1/etc/ipkg.conf | sed "/^lists_dir.*/s/\(.*\)/#\ \1/"> $1/etc/ipkg.conf_
- mv $1/etc/ipkg.conf_ $1/etc/ipkg.conf
- break
- fi
-
- test "$junk" = "y" -o "$junk" = "Y" && break
- done
- fi
-
- echo ""
-
- if ( cat $1/etc/ipkg.conf | grep -q "^dest sd" )
- then
- while true
- do
- echo -en "Do you want to keep the SD, CF and /home\nipkg install targets? [N|y] "
- read junk
-
- if test "$junk" = "" -o "$junk" = n -o "$junk" = N
- then
- cat $1/etc/ipkg.conf | sed "/^dest\ \(sd\|cf\|home\).*/s/\(.*\)/#\ \1/" > $1/etc/ipkg.conf_
- mv $1/etc/ipkg.conf_ $1/etc/ipkg.conf
- break
- fi
-
- test "$junk" = "y" -o "$junk" = "Y" && break
- done
- fi
-
-
- touch "$1/etc/.image_conf.done"
-}
-
-# This functions configures the master password for altboot if none is set
-set_password() {
-
- test -e /etc/altboot.pwd && . /etc/altboot.pwd
-
- mount -o remount,rw /
- if test -z "$MASTER_PASSWORD" -a "$ENABLE_DEBUG" != yes
- then
- echo -e "\nAltboot is a boot-manager which allows to boot from SD,\nCF, USB-Storage and NFS"
- echo -e "\nFor security reasons altboot requires a password\nto boot into init=/bin/sh."
- echo -e "${C_RED}This is *not* your root password!\nIt is used by altboot alone!${C_RESET}\n"
-
- while true
- do
- echo -en "\nNew password: "
-
- stty -echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
- read junk1 < "$OUT_TTY"
- stty echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
-
- if ! test -z "$junk1"
- then
- echo -en "\nRepeat: "
-
- stty -echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
- read junk2 < "$OUT_TTY"
- stty echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
- echo ""
-
- if test "$junk1" = "$junk2"
- then
- crypt_pw="`echo "$junk1" | md5sum | awk '{print $1}'`"
-
- if test -e "/etc/altboot.pwd"
- then
- sed "/^MASTER_PASSWORD/s/\(.*\=\).*/\1\"$crypt_pw\"/" "${ALTBOOT_CFG_FILE}" > ${ALTBOOT_CFG_FILE}_
- mv ${ALTBOOT_CFG_FILE}_ ${ALTBOOT_CFG_FILE}
- MASTER_PASSWORD="$crypt_pw"
- echo "Password changed."
- else
- echo "MASTER_PASSWORD=\"$crypt_pw\"" > /etc/altboot.pwd
- echo "Password installed"
- fi
-
- break
- else
- echo -e "Passwords didn't match, try again\n"
- fi
- fi
- done
- fi
-
-}
-
-# This function asks for altboots master password. It only returns if the correct password was supplied
-verify_master_pw() {
-
- test -e /etc/altboot.pwd && . /etc/altboot.pwd
-
- if ! test -z "$MASTER_PASSWORD"
- then
- auth_timeout="3"
-
- echo -e "\nPlease enter your altboot master password"
-
- cnt=0
- while true
- do
- let cnt=$cnt+$auth_timeout
- echo -n "Password: "
- stty -echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
- read junk < "$OUT_TTY"
- stty echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
-
- if test "`echo "$junk" | md5sum | awk '{print $1}'`" = "$MASTER_PASSWORD"
- then
- break
- else
- echo "[`echo "$junk" | md5sum | awk '{print $1}'`]"
- echo "[$MASTER_PASSWORD]"
- echo "Wrong password, sleeping $cnt seconds..."
- sleep $cnt
-
-# if test "$cnt" -gt 10
-# then
-# break
-# fi
- fi
- done
-
- echo ""
- fi
-}
-
-
-check_fs() {
- if [ "$FSCK_IMAGES" = "yes" ]
- then
- FSCK=""
- if [ "$2" = "" ]; then
- FSTYPE="ext2"
- else
- FSTYPE="$2"
- fi
- case "$FSTYPE" in
- ext2 | ext3)
- if [ -e /sbin/fsck.ext3 ]; then
- FSCK="/sbin/fsck.ext3"
- elif [ -e /sbin/e3fsck ]; then
- FSCK="/sbin/e3fsck"
- elif [ -e /sbin/fsck.ext2 ]; then
- FSCK="/sbin/fsck.ext2"
- elif [ -e /sbin/e2fsck ]; then
- FSCK="/sbin/e2fsck"
- fi
- test -n "$FSCK" && FSCK="$FSCK -p"
- ;;
- vfat)
- if [ -e /sbin/dosfsck ]; then
- FSCK="/sbin/dosfsck -a"
- fi
- ;;
- esac
- if [ "$FSCK" = "" ]; then
- echo "Could not find fsck for $FSTYPE!"
- else
- echo "Checking file system on $1"
- $FSCK $1 || sleep 2
- fi
- fi
-}
-
-# Make the initial rootfs a bit more usable
-init_rootfs(){
-# echo -n "Mounting rootfs rw..."
- mount -o remount,rw / || die "mount -o remount,rw / failed"
-
- mount | grep -q "/proc " >/dev/null 2>&1 || mount proc -t proc /proc >"$OUT_TTY" 2>&1
-
- if ( uname -r | grep -q "2.6." )
- then
- mount | grep -q "/sys " >/dev/null 2>&1 || mount sys -t sysfs /sys >"$OUT_TTY" 2>&1
- fi
-
- /etc/init.d/devices start || die "FAILED"
-}
-
-mount_sd(){
- if mount | grep -q "/media/card"
- then
- echo "Note: /media/card is already mounted"
- else
- # We can't trust that the SD device file is there when running kernel 2.6 w/ udev
- # and starting udev at this point may not be the best idea...
- if `uname -r | grep -q "2.6"`
- then
- #Let's just assume the device file name never changes...
- dev_no="`echo "$SD_DEVICE" | sed -n "s/\/dev\/mmcblk\(.*\)p\(.*\)/\1/p"`"
- part_no="`echo "$SD_DEVICE" | sed -n "s/\/dev\/mmcblk\(.*\)p\(.*\)/\2/p"`"
- ! test -e /dev/mmcblk${dev_no} && mknod /dev/mmcblk${dev_no} b 254 0
- ! test -e /dev/mmcblk${dev_no}p${part_no} && mknod /dev/mmcblk${dev_no}p${part_no} b 254 $part_no
- fi
-
- # Kernel 2.6 has the SD driver compiled into the kernel
- if test -n "$SD_KERNEL_MODULE"
- then
- echo -n "Loading SD kernel module..."
- /sbin/insmod $SD_KERNEL_MODULE >/dev/null 2>&1 && echo ok || die "insmod failed"
- fi
-
- check_fs "$SD_DEVICE"
-
- echo -n "Mounting $SD_MOUNTPOINT..." >"$OUT_TTY"
-
- if test "$1" = ingore_errors
- then
- /bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT >/dev/null 2>&1 && echo ok >"$OUT_TTY" || echo "Could not mount SD card"
- else
- /bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT >/dev/null 2>&1 && echo ok >"$OUT_TTY"|| die "/bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT failed"
- fi
- fi
- echo ""
-
- # Give the SD and CF mounting some time. This is a must for SD
- sleep 2
-}
-
-mount_cf(){
- if mount | grep -q "/media/cf "
- then
- echo "Note: /media/cf is already mounted"
- else
- if ( cat /etc/fstab | grep -v "^#" | grep -q "/media/cf" )
- then
- # As of kernel 2.6.16, /e/i/pcmcia is replaced by udev
- if test -x /etc/init.d/pcmcia
- then
- /etc/init.d/pcmcia status | grep -q running || /etc/init.d/pcmcia start && echo "Note: cardmgr is already active"
- else
- for n in 1 2 3
- do
- ! test -e "/dev/hda$n" && mknod /dev/hda$n b 3 $n
- done
- fi
-
- # Give the SD and CF mounting some time. This is a must for SD
- sleep 2
-
- mount /media/cf -o async
- else
- echo "Note: Your system's fstab does not include an entry for /media/cf"
- fi
- fi
-}
-
-mount_home(){
- if mount | grep -q "/home "
- then
- echo "Note: /home is already mounted"
- else
-
- if ( cat /etc/fstab | grep -v "^#" | grep -q "/home " )
- then
- echo "Mounting /home"
- home_fstab="`grep "/home " /etc/fstab`"
- home_dev="`echo "$home_fstab" | awk '{print $1}'`"
- home_fs="`echo "$home_fstab" | awk '{print $3}'`"
- home_options="`echo "$home_fstab" | awk '{print $4}'`"
-
- mount -t "$home_fs" -o $home_options "$home_dev" /home
- else
- echo "Note: Your system's fstab does not include an entry for /home"
- fi
- fi
-}
-
-show_menu() {
-
- echo -e "\nPress <ENTER> to return to the menu"
- read junk
-
- test "$junk" = x && exec /bin/sh || exec /sbin/init.altboot -force<"$OUT_TTY" >"$OUT_TTY" 2>&1
-}
-
-mdie() {
- echo -e "${C_RED}ERROR:${C_RESET}${C_WHITE} $1${C_RESET}" >"$OUT_TTY"
-
- echo -e "\nPress <ENTER> to return to the menu"
- read junk
-
- test "$junk" = x && exec /bin/sh || exec /sbin/init.altboot -force<"$OUT_TTY" >"$OUT_TTY" 2>&1
-}
-
-# $1: uniq name, $2 identifier, $3 value
-set_pref() {
- data_name="$1"
- data_id="$2"
- data_value="$3"
-
- #debug_echo "[$1] [$2] [$3]"
- #export "${data_name}"="`eval echo -e \\$${data_name} | sed "s/\#\#\#/\#\#\#\\n/g"|sed s/^\ // | sed s/^$data_id.*//`"
-
- if test -z "$3"
- then
- debug_echo "set_pref(): WARNING, writing empty value to $data_name / $data_id! THIS WILL BREAK THINGS"
- #data_value=" "
- fi
- export "${data_name}"="`eval echo -e \\$${data_name} `$data_id##$data_value###"
-}
-
-# $1: uniq name
-reset_pref() {
- data_name="$1"
- export "${data_name}"=""
-}
-
-echo_pref() {
- data_name="$1"
- echo "****** $1 ******"
- echo "`eval echo -e \\$${data_name} | sed "s/\#\#\#/\#\#\#\\n/g"|sed s/^\ // `"
- echo "******"
-}
-
-dump_pref() {
- data_name="$1"
- echo "`eval echo -e \\$${data_name} | sed "s/\#\#\#/\#\#\#\\n/g"|sed s/^\ // `"
-
- #echo "-- `eval echo ${data_name}` --"
- #debug_echo "[$menu_fileflags]"
-}
-
-# $1 = name, $2 = cache_file
-export_pref() {
- data_name="$1"
- echo "`eval echo -e ${data_name}`" > "$2"
-}
-
-# $1 = name, $2 = cache_file
-import_pref() {
- data_name="$1"
- data_id="$2"
-
- #debug_echo "[$1] [$2] [$3]"
-
- if test -z "$3"
- then
- debug_echo "set_pref(): WARNING, writing empty value to $data_name / $data_id! THIS WILL BREAK THINGS"
- #data_value=" "
- fi
- export "${data_name}"="`cat "$2"`"
-
-}
-
-# $1: uniq name, $2 identifier, $3 out var
-get_pref() {
- data_name="$1"
- data_id="$2"
- data_out="$3"
- data_list="`eval echo -e \\$${data_name}`"
-
- #echo "data_list: [$data_list]"
- #data_value="`echo "$data_list"| sed "s/\#\#\#/\\n/g"|sed s/^\ // | grep "^$data_id##" | sed -n "s/.*\#\(.*\)$/\1/p"`"
- #data_value="`echo "$data_list"| sed "s/\#\#\#/\\n/g"|sed s/^\ // | sed -n "/^$data_id/s/.*\#\(.*\)$/\1/p"`"
- data_value="`echo "$data_list"| sed "s/\#\#\#/\\n/g" | sed -n "s/^\ //;/^$data_id\#/s/.*\#\(.*\)$/\1/p"`"
- #echo "WERT: [$data_value]"
-
- export "${data_out}"="$data_value"
- test -n "$data_value" && return 0
-}
-
-debug_echo() {
- test "$ENABLE_DEBUG" = "yes" && echo -e "${C_YELLOW}DEBUG:${C_RESET}${C_WHITE} $1 ${C_RESET}" >"$OUT_TTY" 2>&1
-}
-
-start_networking() {
-
- test -z "$1" && mdie "No remote host configured, check /etc/fstab for NFS hosts"
-
- if test "$USB_NETWORKING_AVAILABLE" = "yes"
- then
- echo ""
- echo "Select the type of your network connection:"
- echo ""
- echo -e "\t[1] LAN or WLAN NIC"
- echo -e "\t[2] USB Connection"
- echo ""
-
- if test "$AUTOBOOT" != "yes" -o ! -e /etc/.altboot-lanselect.last
- then
- while true
- do
- echo -n "Connection Type: "
- read junk
-
- test "$junk" = 1 -o "$junk" = 2 && break
- done
- else
- junk="`cat /etc/.altboot-lanselect.last`"
- test -z "$junk" && junk=1
-
- echo "Connection Type: $junk (autoboot)"
- fi
-
- case "$junk" in
- 1) NW_TYPE="NIC"
- ;;
- 2) NW_TYPE="USB"
- ;;
- esac
-
- echo "$junk" > /etc/.altboot-lanselect.last
- else
- NW_TYPE=NIC
- fi
-
-
-
- # Needed for NFS
- /etc/init.d/portmap start >/dev/null 2>&1 || die "/etc/init.d/portmap start failed!"
-
- # For some reason NFS mounts hang if /e/i/networking is not run.
- # For the time beeing I'm too lazy to investigate ;)
- /etc/init.d/networking start >/dev/null 2>&1 || die "/etc/init.d/networking start failed!"
-
- sleep 2
-
- if test "$NW_TYPE" = "NIC"
- then
- # After the PCMCIA service is started, an inserted WLAN card should automatically
- # activate itself.
-
- if test -x /etc/init.d/pcmcia
- then
- echo -e "\nRunning cardctl to setup networking..."
- /etc/init.d/pcmcia start >/dev/null 2>&1 || die "/etc/init.d/pcmcia start failed!"
- sleep 3
- else
- # With kernel 2.6.16+ udev is used
- echo -e "\nRunning udevd to setup networking..."
- ps ax | grep -v grep | grep -q udevd || /etc/init.d/udev start >/dev/null 2>&1 || die "/etc/init.d/udev start failed!"
-
- # Stop udev to work around some very ugly (yet harmless) error messages on boot
- /etc/init.d/udev stop >/dev/null 2>&1
- fi
- fi
-
- if test "$NW_TYPE" = "USB"
- then
- echo ""
- for module in $USB_NW_MODULES
- do
- echo "modprobing [$module]"
- modprobe $module || die "modprobe $module FAILED"
- done
-
- ifdown "$USB_NW_DEVICE" >/dev/null 2>&1
-
-
- echo -e "\nPlease make sure that usb0 is up on your PC and hit <ENTER>."
- read junk
-
- ifup "$USB_NW_DEVICE"
- fi
-
- WLAN_NIC="`iwconfig 2>/dev/null | grep ESSID | grep -v wifi | awk '{print $1}'`"
-
- if test -z "$WLAN_NIC"
- then
- # cardctl needs some time....
- echo -n "Waiting for WLAN card.."
- timeout=0
- while test "$timeout" -lt 10
- do
- WLAN_NIC="`iwconfig 2>/dev/null | grep ESSID | grep -v wifi | awk '{print $1}'`"
- test -n "$WLAN_NIC" && break
- echo -n "."
- let timeout=$timeout+1
- sleep 1
- done
-
- if test -z "$WLAN_NIC"
- then
- debug_echo "WARNING: WLAN_NIC is empty!\n"
- debug_echo "Filter result: [$WLAN_NIC]"
- debug_echo "iwconfig: [`iwconfig`]"
- mdie "No network interface found"
- fi
- fi
-
- # WLAN with DHCP needs some time to get a lease, set up the routing, etc.
- echo -n "Waiting for host [$1] on [$WLAN_NIC]."
- cnt=0
- while true
- do
- if (ping -c 1 $1) >/dev/null 2>&1
- then
- echo " found"
- break
- else
- if test "$cnt" = 30 -o "$cnt" = 60
- then
- echo ""
- echo "WARNING: $NW_TYPE didn't activate in $cnt seconds!"
-
- if test "$cnt" = 30
- then
- let cnt=$cnt+1
-
- if test "$NW_TYPE" = "NIC"
- then
- echo "Restarting udhcpc for [$WLAN_NIC]"
- killall udhcpc
-
- udhcpc -i "$WLAN_NIC" -H `cat /etc/hostname` >"$OUT_TTY" 2>&1
- fi
-
- if test "$NW_TYPE" = "USB"
- then
- echo "ifdown/up $USB_NW_DEVICE..."
- ifdown "$USB_NW_DEVICE"
- sleep 1
- ifup "$USB_NW_DEVICE"
- fi
-
- else
- mdie "Failed to activate $NW_TYPE!"
- break
- fi
- else
- echo -n "."
- let cnt=$cnt+1
- fi
- fi
- sleep 1
- done
-
-
-}
diff --git a/packages/altboot/files/altboot.rc/Readme.txt b/packages/altboot/files/altboot.rc/Readme.txt
deleted file mode 100644
index 985e1fe7d0..0000000000
--- a/packages/altboot/files/altboot.rc/Readme.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Scripts (*.sh) in this folder are run by altboot before printing the menu.
-Note: The rootfs is still mounted ro at this point.
diff --git a/packages/altboot/files/altboot.rc/disable_printk.sh b/packages/altboot/files/altboot.rc/disable_printk.sh
deleted file mode 100644
index af15adec44..0000000000
--- a/packages/altboot/files/altboot.rc/disable_printk.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-mount proc -t proc /proc >/dev/null 2>&1
-
-echo 0 > /proc/sys/kernel/printk
-
diff --git a/packages/altboot/files/altboot.rc/loadkeymap.sh b/packages/altboot/files/altboot.rc/loadkeymap.sh
deleted file mode 100644
index 97cff13dbb..0000000000
--- a/packages/altboot/files/altboot.rc/loadkeymap.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Note: With kernel 2.6 the standard keymap is unusable
-test -x /etc/init.d/keymap && /etc/init.d/keymap start >/dev/null 2>&1
-
-# Do not exit w/ errorcode when the if above fails
-/bin/true
-
diff --git a/packages/altboot/files/altboot.rc/playbeep.sh b/packages/altboot/files/altboot.rc/playbeep.sh
deleted file mode 100644
index b41f098630..0000000000
--- a/packages/altboot/files/altboot.rc/playbeep.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
-#
-# Filename: playbeep.sh
-# Date: 12-Apr-06
-
-if test -x /usr/sbin/alsactl -a -e /etc/modules -a "$ENABLE_SOUND" = yes
-then
- for module in `cat /etc/modules | grep snd | grep -v ^#`
- do
- #echo "loading $module"
- modprobe $module >/dev/null 2>&1
- done
-
- mount -o remount,rw /
-
- init_rootfs >/dev/null 2>&1
-
- ! test -e /dev/audio && mknod /dev/audio c 14 4
- ! test -e /dev/dsp && mknod /dev/dsp c 14 3
-
- mkdir /dev/snd >/dev/null 2>&1
- mknod /dev/snd/controlC0 c 116 0 >/dev/null 2>&1
- mknod /dev/snd/pcmC0D0c c 116 24 >/dev/null 2>&1
- mknod /dev/snd/pcmC0D0p c 116 16 >/dev/null 2>&1
- mknod /dev/snd/timer c 116 33 >/dev/null 2>&1
- /usr/sbin/alsactl restore >/dev/null 2>&1
-
- test -e /usr/share/sounds/beep.raw && cat /usr/share/sounds/beep.raw > /dev/dsp
-fi
-
-/bin/true
diff --git a/packages/altboot/files/altbootctl b/packages/altboot/files/altbootctl
deleted file mode 100755
index 58976afd0d..0000000000
--- a/packages/altboot/files/altbootctl
+++ /dev/null
@@ -1,311 +0,0 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
-#
-# Filename: hentges-setup.sh
-# Date: 03-Jun-06
-
-die() {
- echo -e "$*"
- exit 1
-}
-
-
-PERMANENT_CFG="/etc/altboot-`uname -r | cut -c1-3`.cfg"
-TEMPORARY_CFG="/etc/altboot-`uname -r | cut -c1-3`.cfg.next-reboot"
-
-CFG="$PERMANENT_CFG"
-SCRIPT_CONFIG="/etc/altbootctl.conf"
-
-test -e "$SCRIPT_CONFIG" && . "$SCRIPT_CONFIG" || die "$SCRIPT_CONFIG not found"
-
-# $1= Setting, $2 = new value
-set_pref() {
-
- if ( cat "$CFG" | grep -q "$1" )
- then
- cat "$CFG" | sed "/^$1/s/\(.*\)\=\(.*\)/\1\=\"$2\"/" > ${CFG}_
- mv ${CFG}_ ${CFG}
- else
- echo "$1=\"$2\"" >> "${CFG}"
- fi
-}
-
-# $1= Setting
-get_pref() {
- n="$1"
- value="`cat "${CFG}" | sed -n "/^$n/s/\(.*\)\=\\"\(.*\)\\"/\2/p"`"
- #echo "cat "${CFG}" | sed -n "/^$n/s/\(.*\)\=\"\(.*\)\"/\2/p""
- test -z "$value" && die "Couldn't get value for [$n]"
- echo "$value"
-}
-
-ask_pref() {
- SETTING_NAME="$1"
-
- SETTING_TEXT_="${SETTING_NAME}_TEXT"
- SETTING_TEXT="`eval echo -e \\$${SETTING_TEXT_}`"
-
- SETTING_VALUES_="${SETTING_NAME}_VALUES"
- SETTING_VALUES="`eval echo -e \\$${SETTING_VALUES_}`"
-
- SETTING_OLD_VALUE="`get_pref "$SETTING_NAME"`"
- test -z "$SETTING_TEXT" -o -z "$SETTING_VALUES" && die "ask_pref: [$1] -> [$SETTING_TEXT] [$SETTING_VALUES]"
-
- #echo "[$1] -> $SETTING_OLD_VALUE"
- #echo -e "$SETTING_TEXT"
-
-
- if test "$SETTING_VALUES" = "<STRING>"
- then
- while true
- do
- echo -e "\nPlease enter a new value [$SETTING_OLD_VALUE]"
- echo -en "Your Choice: "
- read junk
-
- echo ""
-
- while true
- do
- echo -n "Is the new value of [$junk] correct? [Y|n] "
- read junk2
-
- case "$junk2" in
- y|Y|"") END_LOOP=true
- break ;;
- *) END_LOOP=false
- break ;;
- esac
- done
-
- if test "$END_LOOP" = "true"
- then
- SETTING_NEW_VALUE="$junk"
- break
- fi
-
- done
-
- else
- # If it's not a string, it's a fixed list of possible settings
- echo -e "\nSelect one of the following:\n"
- cnt=1
-
- echo " $SETTING_VALUES"
- for val in $SETTING_VALUES
- do
- if test "$val" != "$SETTING_OLD_VALUE"
- then
- echo -e "\t[$cnt] $val"
- else
- echo -e "\t[$cnt] $val *"
- SETTING_OLD_VALUE_NUM="$cnt"
- fi
- let cnt=$cnt+1
- done
-
- echo ""
- while true
- do
- echo -en "Your choice [$SETTING_OLD_VALUE_NUM]: "
- read junk
-
- if test -n "$junk"
- then
- cnt=1 ; SETTING_NEW_VALUE=""
- for val in $SETTING_VALUES
- do
- if test "$junk" = "$cnt"
- then
- SETTING_NEW_VALUE="$val"
- break
- fi
-
- let cnt=$cnt+1
- done
- else
- SETTING_NEW_VALUE="$SETTING_OLD_VALUE"
- fi
-
- test -n "$SETTING_NEW_VALUE" && break
- done
-
- fi
-
-
- if test "$SETTING_NEW_VALUE" != "$SETTING_OLD_VALUE"
- then
- set_pref "$SETTING_NAME" "$SETTING_NEW_VALUE"
- echo "Changed $SETTING_NAME to $SETTING_NEW_VALUE"
- else
- echo "$SETTING_NAME remains unchanged"
- fi
- echo -e "\n"
-}
-
-build_menu() {
- for setting in $TARGETS
- do
- # SETTING_MENUPOS contains $setting_MENUPOS
- SETTING_MENUPOS_="${setting}_MENUPOS"
- SETTING_MENUPOS="`eval echo -e \\$${SETTING_MENUPOS_}`"
-
- # Store all entries in variables named after the menu name
- MENU_NAME="SUBMENU_${SETTING_MENUPOS}"
- export "${MENU_NAME}"="`eval echo -e \\$${MENU_NAME} ` $setting"
-
-
- echo "$AVAILABLE_MENUES" | grep -q "$SETTING_MENUPOS" || AVAILABLE_MENUES="$SETTING_MENUPOS $AVAILABLE_MENUES"
-
- done
-
- #echo "[$AVAILABLE_MENUES]"
-
- while true
- do
- echo -e "\nSelect a menu:\n"
- cnt=1
- for menu in $AVAILABLE_MENUES Exit
- do
- MENU_NAME="SUBMENU_$menu"
- echo -e "\t[$cnt] $menu"
- let cnt=$cnt+1
- done
-
- echo ""
-
- while true
- do
- echo -n "Your Choice: "
- read junk
-
- cnt=1 ; GET_MENU=""
- for menu in $AVAILABLE_MENUES Exit
- do
- if test "$cnt" = "$junk"
- then
- GET_MENU="$menu"
- break
- fi
- let cnt=$cnt+1
- done
-
- if test "$GET_MENU" = "Exit"
- then
- EXIT_PROG=true
- break
- else
- EXIT_PROG=false
- fi
-
- if test -n "$GET_MENU"
- then
- show_menu "$menu"
- break
- fi
- done
- test "$EXIT_PROG" = true && break
- done
-}
-
-show_menu() {
- MENU_NAME="SUBMENU_$1"
-
-
- while true
- do
- echo -e "\nEntries in this menu:\n"
- cnt=1
- for entry in `eval echo -e \\$${MENU_NAME}` Back
- do
- MENU_NAME_TEXT="${entry}_TEXT" || MENU_NAME_TEXT="${entry}"
-
- test "$entry" != Back && tmp_="`eval echo -e \\$${MENU_NAME_TEXT}`" || tmp_="Back"
-
- echo -e "\t[$cnt] $tmp_"
- let cnt=$cnt+1
- done
-
- echo ""
-
- while true
- do
- echo -en "Your Choice: "
- read junk
-
- cnt=1 ; GET_ENTRY=""
- for entry in `eval echo -e \\$${MENU_NAME}` Back
- do
- if test "$cnt" = "$junk"
- then
- GET_ENTRY="$entry"
- break
- fi
- let cnt=$cnt+1
- done
-
- if test "$GET_ENTRY" = "Back"
- then
- EXIT_MENU=true
- break
- else
- EXIT_MENU=false
- fi
-
-
- # At this point the user has selected a menuitem != "Back"
- if test -n "$GET_ENTRY"
- then
- select_config
- ask_pref "$GET_ENTRY"
- break
- fi
- done
-
- test "$EXIT_MENU" = true && break
- done
-}
-
-select_config() {
- echo -e "\nChange this setting only for the next reboot or permanently?\n"
-
- echo -e "Select one of the following:\n"
-
- echo -e "\t[1] Only for the next reboot"
- echo -e "\t[2] Permanently"
- echo ""
-
- while true
- do
- echo -en "Your Choice: "
- read junk
-
- case "$junk" in
- 2) CFG="$PERMANENT_CFG"
- break ;;
- 1) CFG="$TEMPORARY_CFG"
- break ;;
- esac
- done
-
- # Supress error message about missing config
- ! test -e "$CFG" && touch "$CFG"
-
-}
-
-go() {
- build_menu
-
- exit 0
- for setting in $TARGETS
- do
- ask_pref "$setting"
- done
-
-}
-
-
-! test -e "$CFG" && die "[$CFG] not found, exiting"
-go
diff --git a/packages/altboot/files/altbootctl.conf b/packages/altboot/files/altbootctl.conf
deleted file mode 100644
index 13f22b7e91..0000000000
--- a/packages/altboot/files/altbootctl.conf
+++ /dev/null
@@ -1,98 +0,0 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
-#
-# Filename: hentges-setup.conf
-# Date: 04-Jun-06
-
-
-TARGETS="REMEMBER_LAST_SELECTION ENABLE_ALTBOOT FSCK_IMAGES TIMEOUT INIT_RUNLEVEL NO_GUI_RL \
- USB_HOST_AVAILABLE USB_NETWORKING_AVAILABLE ASK_PW_ON_BOOT SD_DEVICE SD_KERNEL_MODULE \
- IMAGE_PATH IMAGE_TYPE ENABLE_IMAGECONF USB_STORAGE_MODULES USB_STORAGE_PARTITION \
- USB_STORAGE_WAIT SD_MOUNTPOINT ENABLE_DEBUGGING ENABLE_DEBUG_SHELL ENABLE_SOUND"
-
-
-REMEMBER_LAST_SELECTION_VALUES="yes no"
-REMEMBER_LAST_SELECTION_TEXT="Remember the last selected menu item for next boot"
-REMEMBER_LAST_SELECTION_MENUPOS="Core"
-
-ENABLE_ALTBOOT_VALUES="yes no"
-ENABLE_ALTBOOT_TEXT="Enable or disable the altboot boot-manager"
-ENABLE_ALTBOOT_MENUPOS="Core"
-
-TIMEOUT_VALUES="<STRING>"
-TIMEOUT_TEXT="Altboot boot-menu timeout in seconds"
-TIMEOUT_MENUPOS="Core"
-
-INIT_RUNLEVEL_VALUES="<STRING>"
-INIT_RUNLEVEL_TEXT="Default runlevel"
-INIT_RUNLEVEL_MENUPOS="Core"
-
-NO_GUI_RL_VALUES="<STRING>"
-NO_GUI_RL_TEXT="GUI-less runlevel"
-NO_GUI_RL_MENUPOS="Core"
-
-ENABLE_DEBUGGING_VALUES="auto yes no"
-ENABLE_DEBUGGING_TEXT="Enable debugging output"
-ENABLE_DEBUGGING_MENUPOS="Core"
-
-ENABLE_DEBUG_SHELL_VALUES="yes no"
-ENABLE_DEBUG_SHELL_TEXT="Enable a shell prompt after kernel init"
-ENABLE_DEBUG_SHELL_MENUPOS="Core"
-
-ENABLE_SOUND_VALUES="yes no"
-ENABLE_SOUND_TEXT="Emmit a beep on boot"
-ENABLE_SOUND_MENUPOS="Core"
-
-FSCK_IMAGES_VALUES="yes no"
-FSCK_IMAGES_TEXT="Automatically fsck loop-images"
-FSCK_IMAGES_MENUPOS="LoopImages"
-
-IMAGE_PATH_VALUES="<STRING>"
-IMAGE_PATH_TEXT="Subdirectory for loop-files"
-IMAGE_PATH_MENUPOS="LoopImages"
-
-IMAGE_TYPE_VALUES="<STRING>"
-IMAGE_TYPE_TEXT="Image FS type"
-IMAGE_TYPE_MENUPOS="LoopImages"
-
-ENABLE_IMAGECONF_VALUES="yes no"
-ENABLE_IMAGECONF_TEXT="Configure new loop-images on 1st boot"
-ENABLE_IMAGECONF_MENUPOS="LoopImages"
-
-USB_HOST_AVAILABLE_VALUES="yes no"
-USB_HOST_AVAILABLE_TEXT="Device supports full USB *HOST* mode"
-USB_HOST_AVAILABLE_MENUPOS="USB"
-
-USB_NETWORKING_AVAILABLE_VALUES="yes no"
-USB_NETWORKING_AVAILABLE_TEXT="USB networking is available"
-USB_NETWORKING_AVAILABLE_MENUPOS="USB"
-
-USB_STORAGE_MODULES_VALUES="<STRING>"
-USB_STORAGE_MODULES_TEXT="Kernelmodules required for USB"
-USB_STORAGE_MODULES_MENUPOS="USB"
-
-USB_STORAGE_PARTITION_VALUES="<STRING>"
-USB_STORAGE_PARTITION_TEXT="USB storage device file"
-USB_STORAGE_PARTITION_MENUPOS="USB"
-
-USB_STORAGE_WAIT_VALUES="<STRING>"
-USB_STORAGE_WAIT_TEXT="Wait x seconds before mount USB storage"
-USB_STORAGE_WAIT_MENUPOS="USB"
-
-ASK_PW_ON_BOOT_VALUES="yes no"
-ASK_PW_ON_BOOT_TEXT="Alway ask altboot password on boot"
-ASK_PW_ON_BOOT_MENUPOS="Core"
-
-SD_DEVICE_VALUES="<STRING>"
-SD_DEVICE_TEXT="The device-file for the SD card"
-SD_DEVICE_MENUPOS="SD_MMC"
-
-SD_KERNEL_MODULE_VALUES="<STRING>"
-SD_KERNEL_MODULE_TEXT="Kernelmodule required for SD operation"
-SD_KERNEL_MODULE_MENUPOS="SD_MMC"
-
-SD_MOUNTPOINT_VALUES="<STRING>"
-SD_MOUNTPOINT_TEXT="Mointpoint for the SD card"
-SD_MOUNTPOINT_MENUPOS="SD_MMC"
diff --git a/packages/altboot/files/beep.raw b/packages/altboot/files/beep.raw
deleted file mode 100644
index f76112185c..0000000000
--- a/packages/altboot/files/beep.raw
+++ /dev/null
@@ -1 +0,0 @@
-€~€~~~~€~€~€~€~~€~€~€~€~€~~€€~v…ok›”[l©‘Sp¯ŒMx³‚L‚³xM°nS’ªlT”®gOž°ZQ«©O\´œHj¸ŽFx¸€H…µuM°mR–«gVš¨dXœ¦aZŸ¤^[£¤Z\§¢U^­ Ob³›Jg·”Fo»ŒCx¼ƒC€»{Eˆ¸tIŽ´nM”¯iR—ªfX›¥b]žŸ_b¢š\h¥”Xo¨Vvª…T~«~T…«vUŒ©oX’¥j\—¡g`šœde›—cjœ’božŽasŸ‰_x¡…]|¢€\‚¤{Z‡¥uY¥pZ’¤k[–¢g^šŸcb›afŸ—_j¡“^o¢Ž]t£‰[y¤ƒ[¤~[„¤x\Š£r] l`•hc™™dh•al ^q¢‹]w£†\|£€\£{\†£v]Œ¡q_‘Ÿla•œgeš™chž•`m¡]r£‹[w¤†Z|¥€Z¥{[‡¤v\Œ¢q^Ÿma”œid˜™fhš•dlœbqžŒavŸ‡`{Ÿ‚a€}c…›xe‰™ugŒ—ri•oj’•kk–”flœ’`o¢ŽZt§ˆW{ªUªzV‡¨uXŒ¦qZ£m]“ j`–gcššcg•amŸ_r¡Š^x¢…]|¢€]¢|]…¡x^Š¡s_ŽŸoa’kd–™hh˜•fk™’eo›Žcr‹awŸ†_| €_‚ z`‡žvcŠšvhˆ“yq…Š|y‚‚€~ƒ~|ƒ~}€‚€~~‚~|‚„}{‚„}|‚ƒ}}~€}‚}€‚}€~~‚~|ƒ}|‚‚}~€~€€~€‚}€‚}€€~€€~~‚‚||„ƒz|…ƒz|„ƒ||‚„~z‡}w…‡ty’ƒe¡{Y‰§pY”£fa˜_m¡\w¤„Z~¦Wƒ©zUˆªtUŽ©nW”¦g[›¢a` œ]f¤–Zm¦Ys¦ŠYw¦…X|§W¨|W…¨xW‰§tYŒ¦pZ‘¥j\˜¢c` œ\g¥”Yn§Xu¦ˆZy¥„Z|¥€Z¥|[…£x\‰¢u^Œ¡r^ m_•Ÿga›œbe —]k£’[p¥ŒZu¦‡Y{¦‚Y€¦|Y†¥w[‹£r]¡m_”žib™›efœ—akŸ’^o¢]t£ˆ[y¤ƒ[~¤[ƒ£z\ˆ¢u^Œ¡q`‘žlb•›hf˜˜eiœ”bnž`r ‹^w¢†]|£\£{\†¢v]‹¡r_Ÿma”œhd™™ehœ•am ^r¢‹\w¤…Z}¥€Y‚¦zZˆ¥u[£p]’¡k_–žgcššdg–alŸ‘_q¡‹^v¢†]{¢]¢|^…¡w_Š s`Žžpb‘œme”™jh–•hk˜’fpšet›‰cx…b|€až|a…žxb‰tcœpd‘šlf”˜ii—•flš‘doœbtž‰axž…`}ž€až|b…œxcˆ›ue‹™rf˜nh’•jk—’fo›buž‡a{ž‚a~b‚{b†wcŠ›te™qh–nk’“mm“‘lo”jq–hu—‰lx…u{…ƒ~}…x€ˆw‡~z„~}‚€€€€€€|„z…~{„|€ƒ|ƒ~}‚}~‚~}ƒ}{‚…|zƒ„|{ƒƒ}|‚ƒ}|‚ƒ|{„„{{…„z|…‚{~ƒ}}‚‚~|ƒ~}€‚€}~ƒ€{‚…vy‘†ex¡†Yz©ƒT~«}T…ªvV§nZ”¢h_™žcdž˜_i¢“\n¥Ys¨ŠVwª…T|­€Q‚°zN‰±qN“¯gRœ«_W£¥Z]§ŸWcª™Ui«’Tp«ŒTvª…U}©V‚¨zXˆ¦tZ£p]‘¡l`•hc˜šeg›–ck’aoŸŽ`s ‰_x¡…^}¡€_‚ {_‡ v`ŒŸqamc”›ie—˜fi›”cmž`r ‹^w¢†]|£\£{\‡£v]Œ¡q_Ÿla•œhd™™dhœ•alŸ_q¡‹]v£†\{¤[€¤|[…£w\Š¢s^ n`“žjc—šffš—cj“`o Ž^s¢Š]x£…\}£€\‚£{]†¢v^‹ r`žnc“›jf——giš“dnœbržŠ`wŸ†_| _€ |`…Ÿxa‰žtbœpd‘™lg•–hj˜“fn›cqŒbvž‡azŸƒ`Ÿ~`„Ÿx`Šžsbnd“šjf—˜ghš•dkœ’bnž`r ‹^v¡†^{¡‚^ ~`ƒžzc‡›ve‹˜rh–nk““in˜dqœŒau ˆ^y¡„^}¡€^ |_…Ÿx`‰Ÿsažnb”œheš™chž•`l ‘_q¡Œ^u¡ˆ^y¢…]}£€[‚¤z[ˆ¤t\¡m`”œif–•jn“ŒoxŒƒv€†||…y€‡~y†~z„}‚~~‚~}‚}~ƒ{„{„~{‚ƒ||ƒ‚|~ƒ€{€„{„~{„}{‚„}|ƒƒ|}ƒ{€„|ƒ}}‚‚}}‚~~~~‚~~~€€~‚{~‡v„Œuo”hfœ^b¥Vd¬—Ql¯ŽPu¯…P}®~R„¬wT‹ªqV‘¨kX—¥e\œ¡`a ›]g£–\l¤[r¥‹Yw§†X|¨€V‚©zVˆ¨tW¦oZ“£j]˜ eaœ_e£—Yk¨Ts­‡P|°~O…°vPŒ®rR«pU©nW‘¨lW”¨iX˜¦e[¡`a¡›\h¥“Yp¦‹Xw§…X}¦Yƒ¥yZˆ¤t\¢p^’ ka–œhe™™ehœ•bmž`q Œ^u¢‡]z¢‚]¢~]„¢y^ˆ¡t_Ÿpa‘lc•›hf™—djœ“anŸ_r¡Š^w¢†]|¢]¢|]†¡w_ŠŸranc“šjg——gjš“dnœbsžŠ`wŸ…_| €_ |`†Ÿwa‹žrbœne“™jg—–fkš“cnarŸŠ_w †^{¡‚^€¡}^… x_‰ŸsaŽžoc’›ke•™hh˜•el›‘cpbužˆazŸƒ`~Ÿ~`ƒžyaˆucŒ›pe‘™mg”–ik—“fnšdrœ‹bwž†a{Ÿ`€Ÿ}`…Ÿxa‰žtbpc‘›ld•™if——fiš•dk’aoŸŽ_s¡Š]x¢„]~¢}_…žxc‰šug‹–sj”ql’on‘mq“ks”‹ju–‰hw˜‡fz™ƒh”}p„Šz{…€zƒ…y{ˆ„u{‹ƒu|Š‚w~‡z~…{~„€{€ƒ|€ƒ|€ƒ|€‚~}‚~}‚}}ƒ‚|~„€{€ƒ~}€}€‚}€‚~}~~€€~‚€|„{€„{€„~{ƒ~|‚„}z‚†}xƒˆ|w„ˆ{w„Šzp†–xcˆ¢uZŒ¦qY‘¥k\—¡daœ_f¢–\l¤‘Zq¦ŒXu¨‡Wz¨ƒW~¨Vƒ©yV‰¨rX¦kZ˜£d_Ÿ]e¥–Xm¨Vs©‰Uy«ƒT~«~TƒªyVˆ¨tX¦p[’£k^–Ÿgbš›cf—`k ’^o¢\t£ˆ[z¤ƒ[¤}\„£x]‰¢s^Ž n`“jc—›ff›—cjž“`n ^r¢‹\w¤†[|¥Z€¥|Z…¥x[‰¤s\Ž¢o^’Ÿka–œgdš™dh•alŸ‘_p¡Œ^u¢‡]z¢‚]¢}]„¡x^‰ t`Žžoc’›kf–˜giš”dmœaqŸ‹_v †^{¡]€¢}]…¡x^Š s_Žžnb“œjd—™ghš•cl‘apŸ_t¡ˆ^y¡„]~¢^‚¡z_‡ v`‹žrbœne“™kh––gk™’eo›ŽbsžŠawŸ…`| _€Ÿ|`…Ÿxa‰žtbœpd‘šlg•—ik—’go™Žfs™‹fv™‡eyš„e}›d‚›ze‡™ugŒ–rj“om‘‘mn“jo–gqšŒcu‡azžƒ`ž~a‚{b…xbˆœucŒ›qe™mh”•im˜frš‹cw†a|ž€až{a†vb‹œqd›me•šhfš˜ciž“_o¡_wžƒe€–{nˆŒuxŒ„sŒu‚‰~x†€z~…‚{|„„|zƒ…|zƒ†|yƒ†|y„†{y……z{„ƒ{}ƒ€}€€~€}~ƒ{~„{~„{}„‚{|„ƒ{{„„{z……yz‡„w{‰ƒu}Š€u€Š~w‚‡}{‚‚~~ƒ‚y}ˆv‚‹wrimœ•^j¦”Vn¬Rw¯‚Pƒ¯vQ¬kV™¦b\ŸŸ]c¤˜Yi¨“Vo«ŽSs­ŠQw¯…O}°Nƒ±yO‰¯sQ­lT•©gXš¥d]œ abŸš_h¡”]n£ŽZt¦ˆXz§‚W¨~Wƒ¨zX‡¦wZŠ¤t]¡p_‘žlc–šgg›–bl ]r¤‰Yy§ƒX€¨|W†§wYŠ¥s[Ž£p^ n`“žkb•œhd™šef˜ai •]l¤‘Zp¦Xu§ˆXz§‚Y€¥|[…¢w^‹Ÿramd“™jg—–fkš’což`t¡ˆ\z¤‚Y€§|X†§vX‹¦q[¢m_“ke“˜nkrtŠ‡x}…~|…‚x~‰€u€Šu€‰w€‡z€„|€‚}‚~}‚}}‚‚}}‚‚}}~~~€€€€~€~€~€~€~€~€€~€~€~€~€~€~€~€~€~€€~€~€~€~€~€~~€~€~€~€~~~~€~€€€€€€€€~€~€~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ \ No newline at end of file
diff --git a/packages/altboot/files/c7x0/altboot-2.4.cfg b/packages/altboot/files/c7x0/altboot-2.4.cfg
deleted file mode 100644
index 557730fa9f..0000000000
--- a/packages/altboot/files/c7x0/altboot-2.4.cfg
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Altboot machine configuration for: C7x0 / Kernel 2.4
-#
-
-# Handled by /sbin/init.altboot
-# Allow booting images from SD or CF instead of booting
-# the ROM.
-ENABLE_ALTBOOT="yes"
-TIMEOUT="4"
-REAL_INIT="/sbin/init.sysvinit"
-SH_SHELL="/bin/sh"
-
-IMAGE_PATH="boot-images"
-IMAGE_TYPE="ext2"
-FSCK_IMAGES="yes"
-
-SD_DEVICE="/dev/mmcda1"
-SD_KERNEL_MODULE="/lib/modules/2.4.28/kernel/drivers/block/sharp_mmcsd_m.o"
-
-USB_STORAGE_MODULES="usb_ohci_pxa27x usb-storage"
-USB_STORAGE_PARTITION="/dev/sda1"
-USB_STORAGE_WAIT="4"
-
-INIT_RUNLEVEL="5"
-NO_GUI_RL="2"
-MASTER_PASSWORD=""
-ASK_PW_ON_BOOT="no"
-
-SD_MOUNTPOINT="/media/card"
-CF_MOUNTPOINT="/media/cf"
diff --git a/packages/altboot/files/c7x0/altboot-2.6.cfg b/packages/altboot/files/c7x0/altboot-2.6.cfg
deleted file mode 100644
index 8d91602b25..0000000000
--- a/packages/altboot/files/c7x0/altboot-2.6.cfg
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Altboot machine configuration for: c7x0 / Kernel 2.6
-#
-
-# Handled by /sbin/init.altboot
-# Allow booting images from SD or CF instead of booting
-# the ROM.
-ENABLE_ALTBOOT="yes"
-TIMEOUT="4"
-REAL_INIT="/sbin/init.sysvinit"
-SH_SHELL="/bin/sh"
-
-ENABLE_SOUND="yes"
-
-IMAGE_PATH="boot-images"
-IMAGE_TYPE="ext2"
-FSCK_IMAGES="yes"
-
-SD_DEVICE="/dev/mmcblk0p1"
-SD_KERNEL_MODULE=""
-
-USB_STORAGE_MODULES="usb_ohci_pxa27x usb-storage"
-USB_STORAGE_PARTITION="/dev/sda1"
-USB_STORAGE_WAIT="4"
-
-USB_NETWORKING_AVAILABLE="yes"
-USB_NW_MODULES="usbcore pxa27x_udc ohci-hcd g_ether"
-USB_NW_DEVICE="usb0"
-
-KEXEC_KERNEL_DIR="/boot"
-KEXEC_BIN="/usr/sbin/kexec"
-
-INIT_RUNLEVEL="5"
-NO_GUI_RL="2"
-MASTER_PASSWORD=""
-ASK_PW_ON_BOOT="no"
-
-SD_MOUNTPOINT="/media/card"
-CF_MOUNTPOINT="/media/cf"
diff --git a/packages/altboot/files/collie/altboot-2.4.cfg b/packages/altboot/files/collie/altboot-2.4.cfg
deleted file mode 100644
index 702902c9d0..0000000000
--- a/packages/altboot/files/collie/altboot-2.4.cfg
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Altboot machine configuration for: Collie / Kernel 2.4
-#
-
-#
-# Handled by /sbin/init.altboot
-# Allow booting images from SD or CF instead of booting
-# the ROM.
-ENABLE_ALTBOOT="yes"
-TIMEOUT="3"
-REAL_INIT="/sbin/init.sysvinit"
-SH_SHELL="/bin/sh"
-IMAGE_PATH="boot-images"
-IMAGE_TYPE="ext2"
-FSCK_IMAGES="yes"
-ENABLE_IMAGECONF="yes"
-
-SD_DEVICE="/dev/mmcda1"
-SD_KERNEL_MODULE="/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/block/sharp_mmcsd_m.o"
-INIT_RUNLEVEL="5"
-NO_GUI_RL="2"
-MASTER_PASSWORD=""
-ASK_PW_ON_BOOT="no"
-
-SD_MOUNTPOINT="/media/card"
-CF_MOUNTPOINT="/media/cf"
diff --git a/packages/altboot/files/init.altboot b/packages/altboot/files/init.altboot
deleted file mode 100644
index 033fb2124f..0000000000
--- a/packages/altboot/files/init.altboot
+++ /dev/null
@@ -1,504 +0,0 @@
-#!/bin/sh
-#
-# altboot provides a simple bootmenu before init is beeing run.
-# There are two default menu entries: "Normal boot" and "Single user mode"
-# New menu entries can be created be putting files into /etc/altboot-menu.
-#
-
-test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
-CURRENT_ENV="`set`"
-VERSION="DEVELOPER SNAPSHOT"
-
-# Set some defaults in case altboot.cfg is missing
-REAL_INIT="/sbin/init.sysvinit"
-
-# Read default runlevel from inittab
-INIT_RUNLEVEL="`cat /etc/inittab | sed -n "/^id\:/s/id\:\([0-9]\)\:.*$/\1/p"`"
-test -z "$INIT_RUNLEVEL" && INIT_RUNLEVEL=5
-
-# If this step fails the results are fatal. Seen on Collie / kernel 2.4 (where else...)
-OUT_TTY="`tty`" ; test -z "$OUT_TTY" && OUT_TTY="/dev/tty1"
-
-if test -z "$OUT_TTY"
-then
- OUT_TTY="/dev/tty1"
- echo "WARNING: Assgnment of OUT_TTY failed!" > "$OUT_TTY"
-fi
-
-if ( echo "$OUT_TTY" | grep -q "not" )
-then
- OUT_TTY="/dev/tty1"
- echo "WARNING: Assignment of OUT_TTY failed (2)!" > "$OUT_TTY"
-fi
-
-case "`uname -r`" in
-2.6*) ALTBOOT_CFG_FILE="/etc/altboot-2.6.cfg";;
-2.4*) ALTBOOT_CFG_FILE="/etc/altboot-2.4.cfg";;
-*) echo "Warning: Unknown kernel [`uname -r`], using kernel 2.6 configuration!"
- ALTBOOT_CFG_FILE="/etc/altboot-2.6.cfg";;
-esac
-
-test -e "$ALTBOOT_CFG_FILE" && . "$ALTBOOT_CFG_FILE" || echo "WARNING: No $ALTBOOT_CFG_FILE found! Check your installation of Altboot!" > "$OUT_TTY"
-
-if test -e "${ALTBOOT_CFG_FILE}.next-reboot"
-then
- . "${ALTBOOT_CFG_FILE}.next-reboot"
- rm "${ALTBOOT_CFG_FILE}.next-reboot"
-fi
-
-test "$ENABLE_DEBUGGING" = "yes" && ENABLE_DEBUG="yes"
-
-C_RED="\033[31m"
-C_YELLOW="\033[33m"
-C_BLUE="\033[34m"
-C_WHITE="\033[37m"
-C_RESET="\033[0m"
-
-
-die() {
- echo -e "${C_RED}ERROR: $1${C_RESET}" >"$OUT_TTY"
- exec $SH_SHELL <"$OUT_TTY" >"$OUT_TTY" 2>&1
-}
-
-debug_shell() {
- # VT 2 = Opie, VT 3 = GPE
- test -z "$1" && VT=4 || VT=$1
-
- echo -e "\033c" > /dev/tty$VT
-
- echo -en "\nPress <ENTER> to activate the debug shell." > /dev/tty$VT
- read junk </dev/tty$VT
-
- echo "" > /dev/tty$VT
- /bin/sh </dev/tty$VT >/dev/tty$VT 2>&1
-
- #openvt -lf -c$VT -- /bin/sh </dev/tty$VT >/dev/tty$VT 2>&1
-}
-
-# This function prints the boot-menu
-# $1: Directory containing the scripts for the menu-items
-show_menu() {
- test -z "$1" && die "DEBUG: Parameter 1 is empty in show_menu"
- ! test -d "$1" && die "show_menu: [$1] not found or no directory."
-
- echo ""
- echo -e "altboot v$VERSION\n"
-
-
- m_entry=""
-
- cd $1
-
- cnt=0 ; reset_pref "menu_filelist"
- for file in `ls -1`
- do
- if ! test -d "$1/$file"
- then
- # NOTE: It is important to use "." here so that the script inherits
- # the shell environment / all set variables!
- M_TITLE="`. $1/$file title`"
- FLAGS="`$1/$file flags`"
-
- if ! test -z "$M_TITLE"
- then
- let cnt=$cnt+1
- # Keep a list of existing "modules" together with an index number
- # This sure is ugly, but Busybox sh doesn't do arrays....
- #m_entry="`echo -e "$m_entry\n$cnt:$file\n"`"
-
- set_pref "menu_filelist" "$cnt" "$file"
- test -n "$FLAGS" && set_pref "menu_fileflags" "$cnt" "$FLAGS"
- echo -e "\t\t[$cnt] $M_TITLE"
- fi
- M_TITLE=""
- fi
- done
-
- # Display directories below /etc/altboot-menu as menu-item
- # and add all scripts inside the directory to m_entry
- for dir in `ls -1`
- do
- if test -d "$1/$dir"
- then
- M_TITLE="`basename "$1/$dir"`"
- if ! test -z "$M_TITLE"
- then
- let cnt=$cnt+1
- # Keep a list of existing "modules" together with an index number
- # This sure is ugly, but Busybox sh doesn't do arrays....
-
- set_pref "menu_filelist" "$cnt" "$dir:DIR"
-
- # Set noRemember flag for directories
- set_pref "menu_fileflags" "$cnt" "noRemember"
-
- echo -e "\t\t[$cnt] $M_TITLE"
-
- OLD_PWD="$PWD"
- cd "$1/$dir"
- for file in `ls -1`
- do
- if ! test -d "$1/$dir/$file"
- then
- M_TITLE="`$1/$dir/$file title`"
- FLAGS="`$1/$dir/$file flags`"
-
- if ! test -z "$M_TITLE"
- then
- let cnt=$cnt+1
- # Keep a list of existing "modules" together with an index number
- # This sure is ugly, but Busybox sh doesn't do arrays....
-
- set_pref "menu_filelist" "$cnt" "$dir/$file"
- test -n "$FLAGS" && set_pref "menu_fileflags" "$cnt" "$FLAGS"
- fi
- M_TITLE=""
- fi
- done
- cd "$OLD_PWD"
-
- else
- debug_echo "show_menu(): \$M_TITLE is empty"
- fi
- M_TITLE=""
- fi
- done
-
- echo ""
-
-# export_pref "$menu_filelist" /tmp/menu_filelist.cache
-# export_pref "$menu_fileflags" /tmp/menu_fileflags.cache
-
-}
-
-# This function is used to display the content of directories below
-# /etc/altboot-menu as menu-items
-show_sub_menu() {
- dirname="`basename "$1"`"
-
- d_entries="`dump_pref "menu_filelist" | grep "$dirname/"`"
-
- #dump_pref "menu_filelist"
- #dump_pref "menu_fileflags"
- #echo "[$d_entries]"
-
- echo -e "\naltboot v$VERSION: $dirname menu\n"
-
- for d_entry in $d_entries
- do
- d_entry_number="`echo "$d_entry"| sed -n "s/\(.*\)\#\#\(.*\)\#\#\#/\1/p"`"
- d_entry_file="`echo "$d_entry"| sed -n "s/\(.*\)\#\#\(.*\)\#\#\#/\2/p"`"
- d_entry_title="`$d_entry_file title`"
-
-# echo "number: [$d_entry_number]"
-# echo "file: [$d_entry_file]"
-# echo "title: [$d_entry_title]"
-
- echo -e "\t\t[$d_entry_number] $d_entry_title"
- done
-
- echo ""
-
-}
-
-get_kbd_ints(){
- if ( uname -r | grep -q ^2.6 )
- then
- if test -z "$KBD_INT"
- then
- # find out how the keyboard is called
- for kbd in Spitzkbd corgikbd locomokbd tosakbd
- do
- if ( cat /proc/interrupts | grep -q "$kbd" )
- then
- debug_echo "run_timer(): Using [$kbd] as keyboard interrupt"
- KBD_INT="$kbd"
- break
- fi
- done
- fi
- key_ints="`cat /proc/interrupts | grep "$KBD_INT"`"
- #debug_echo "run_timer(): key_ints = [$key_ints]"
- else
- KBD_INT="$kbd"
- debug_echo "\nrun_timer(): Using [keyboard] as keyboard interrupt in kernel-2.4 mode"
- key_ints="`cat /proc/interrupts | grep keyboard | awk '{print $2}'`"
- fi
-
- test -z "$KBD_INT" && debug_echo "Couldn't read keyboard ints!"
-}
-
-# Shows the timer and sets $launch_altboot to yes if a keypress was detected
-run_timer() {
- if test "$TIMEOUT" != 0
- then
-
- mount -t proc proc /proc >/dev/null 2>&1
-
- get_kbd_ints
- kbd_ints_old="$key_ints"
-
- #debug_echo "run_timer() old:`echo $key_ints | md5sum`"
-
- stty -echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
- echo -en "\n\nPlease press any key to launch altboot." > "$OUT_TTY"
-
- test -z "$TIMEOUT" && TIMEOUT="3"
-
- cnt=0
- while test "$cnt" != "$TIMEOUT"
- do
- sleep 1
-
- get_kbd_ints
- kbd_ints_new="$key_ints"
-
- if test "$kbd_ints_new" != "$kbd_ints_old" -o -z "$kbd_ints_new"
- then
- launch_altboot=yes
- stty echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
- break
- fi
- echo -n "." >"$OUT_TTY"
- let cnt=$cnt+1
- done
-
- if test "$launch_altboot" != "yes"
- then
- AUTOBOOT=yes
- else
- rm -f /etc/.altboot*.last
- fi
-
- else
- launch_altboot=yes
- fi
-}
-
-# $1 = ID
-parse_module_flags() {
- if test -n "$1"
- then
- # Each module can set "flags" to influence handling of the module
- get_pref "menu_fileflags" "$1" flags
-
- test -n "$flags" && debug_echo "parse_module_flags(): [$1] has flags [$flags]"
-
- for flag in $flags
- do
- case "$flag" in
- noRemember) REMEMBER_LAST_SELECTION=no;;
- esac
- done
- else
- debug_echo "parse_module_flags(): Empty \$1"
- fi
-}
-
-# This function launches the selected menu item / script
-# $1: Directory containing the scripts for the menu-items
-launch_selection() {
- test -z "$1" && die "Parameter 1 of launch_selection is empty!"
-
- case "$junk" in
- *) #file="`echo "$m_entry"| sed -n "/$junk\:/s/^.*\:\(.*\)/\1/p"`"
-
- get_pref "menu_filelist" "$junk" file_
- type="`echo "$file_" | sed -n "s/\(.*\)\:\(.*\)/\2/p"`"
- file="`echo "$file_" | sed -n "s/\(.*\)\:\(.*\)/\1/p"`"
- test -z "$file" && file="$file_"
-
- #echo "[$file_]: [$type] : [$flags] / [$file] ($junk)"
-
- # The selected menu-item points to a directory
- if test "$type" = DIR
- then
- show_sub_menu /etc/altboot-menu/$file >"$OUT_TTY"
- wait_for_input >"$OUT_TTY"
- launch_selection /etc/altboot-menu >"$OUT_TTY"
- fi
-
- if test "$type" = MAIN
- then
- show_sub_menu /etc/altboot-menu >"$OUT_TTY"
- wait_for_input >"$OUT_TTY"
- launch_selection /etc/altboot-menu >"$OUT_TTY"
- fi
-
-
-
- . $1/$file run "$file" >"$OUT_TTY"
- die "WARNING: Using failsafe shell" >"$OUT_TTY"
-
- ;;
- esac
-}
-
-
-wait_for_input() {
- while true
- do
-
-
- # Do _not_ change the next few lines!
- #
- # This is required to work around an annoying busybox bug.
- # Every key you press while this script runs will be
- # picked up by the next "read $junk".
- # So the next read would pick up the "any" key the user pressed
- # above to launch the altboot menu.
-
-
- # Bash throws an ugly error on kill
- if ! (readlink /bin/sh | grep -q bash)
- then
- # This filters an "<ENTER>" from the user as "any key"
- ( while :; do read x< "$OUT_TTY" 2>&1; done; ) > /dev/null 2>&1 &
- sleep 1; kill $! >/dev/null 2>&1
- fi
-
- echo -n "Please choose one of the above [$last_selection]: " <"$OUT_TTY" > "$OUT_TTY" 2>&1
- stty echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
- read junk< "$OUT_TTY" 2>&1
-
- # This filters other chars the user may have used
-
- junk="`echo "$junk" | sed "s/[a-zA-Z]//g"`"
-
- if test "$junk" -lt "$cnt" -o "$junk" -eq "$cnt"
- then
- if test ! -z "$junk"
- then
- parse_module_flags "$junk"
-
- if test "$REMEMBER_LAST_SELECTION" != no
- then
- # Don't remount rw if the drive is already mounted rw
- # Only helpful for testing / debugging
- if test "`mount|sed -n "/\/dev\/root/s/.*(\(.*\))/\1/p"`" != "rw"
- then
- mount -o remount,rw / >/dev/null 2>&1
- echo "$junk" > /etc/altboot.conf
- mount -o remount,ro / >/dev/null 2>&1
- else
- echo "$junk" > /etc/altboot.conf
- fi
- fi
- else
- junk="$last_selection"
- parse_module_flags "$junk"
- break
- fi
- break
- fi
- done
-}
-
-# * * * * * * This is the main function * * * * * *
-
-if ( echo "$VERSION" | egrep -iq "(snapshot|-rc)" )
-then
- if test "$ENABLE_DEBUGGING" = "auto" -o -z "$ENABLE_DEBUGGING"
- then
- ENABLE_DEBUG="yes"
- fi
-fi
-
-test "$ENABLE_DEBUG_SHELL" = "yes" && debug_shell 4 >/dev/null 2>&1 &
-
-if test "$ENABLE_DEBUGGING" = "yes"
-then
- ENABLE_DEBUG="yes"
- debug_shell 4 >/dev/null 2>&1 &
-fi
-
-# Note: this is positively ugly. If someone knows a better way to detect whether
-# we are already booted into a runlevel _without_ reading /var and / or using `runlevel`
-# PLEASE let me know.
-
-if test -f /proc/cmdline -a "`ps ax|wc -l|tr -d " "`" -gt 30 -a "$1" != "-force" -a "$1" != "+force"
-then
- echo "altboot: Using real init [$REAL_INIT] [$*] [`ps ax|wc -l|tr -d " "`] *" >"$OUT_TTY"
- exec $REAL_INIT $*
-# exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
- exit 0
-else
- # Boot original init if altboot is turned off
- if test "$ENABLE_ALTBOOT" != "yes"
- then
- echo "altboot: Using real init [$REAL_INIT] **" >"$OUT_TTY"
- exec $REAL_INIT $INIT_RUNLEVEL
- exit 0
- fi
-
- # Execute scripts in /etc/altboot.rc before doing anything else.
- # Required in special situations, like booting spitz
- RC_FILES=`ls /etc/altboot.rc | grep \.sh$`
-
- for file in $RC_FILES
- do
- . /etc/altboot.rc/$file >"$OUT_TTY" 2>&1 || echo "/etc/altboot.rc/$file failed!"
- done
-
- # Make sure altboots master password is set
- set_password >"$OUT_TTY"
-
- test "$ASK_PW_ON_BOOT" = "yes" && verify_master_pw >"$OUT_TTY"
-
- # When started with -force, always print the menu
- echo "$*" | grep -q -- "-force" && TIMEOUT=0
-
- # This timeout works by reading /proc/interrupts to see if the keyboard interrupt
- # increases while the timer is running. A TIMEOUT of 0 will always launch altboot.
- run_timer >"$OUT_TTY"
-
- echo "" >"$OUT_TTY"
-
- # launch_altboot is set to "yes" by run_timer when the user presses the button during the timeout
- if test "$launch_altboot" != yes
- then
- # last_selection is the previously selected menu item by the user
- last_selection="`cat /etc/altboot.conf`" >/dev/null 2>&1
- test -z "$last_selection" && last_selection="1"
-
- echo "Booting last selection: [$last_selection]" >"$OUT_TTY"
-
- # Set up the wanna-be array of available menu entries and their numbers
- show_menu /etc/altboot-menu >/dev/null
- junk="$last_selection"
- launch_selection /etc/altboot-menu >"$OUT_TTY"
- fi
-
- # Anything after this point will never be reached if $launch_altboot != yes
-
- # Show the altboot menu
- stty -echo <"$OUT_TTY" >"$OUT_TTY" 2>&1
- show_menu /etc/altboot-menu >"$OUT_TTY"
-
- # Load last selection for use as default if <ENTER> is pressed at the prompt
- last_selection="`cat /etc/altboot.conf`" >/dev/null 2>&1
- test -z "$last_selection" && last_selection="1"
-
- # Ask the user which menu-item to use
- wait_for_input >"$OUT_TTY"
-
- # This should _never_ happen.
- if test -z "$junk"
- then
- echo "WARNING: Trying failsafe mode" >"$OUT_TTY"
- mount -o remount,rw / >"$OUT_TTY" 2>&1
- echo "Dumping environment to /altboot.env"
- echo "$CURRENT_ENV" > /altboot.env
- mount -o remount,ro / >"$OUT_TTY" 2>&1
- junk=1
- fi
-
- launch_selection /etc/altboot-menu >"$OUT_TTY"
-
- # Uhoh, something went terribly wrong if we reach this point!
- die "WARNING: Failsafe fall-through activated. Spawning emergency shell"
-
-fi
-
-
diff --git a/packages/altboot/files/poodle/altboot-2.4.cfg b/packages/altboot/files/poodle/altboot-2.4.cfg
deleted file mode 100644
index 1bce54015c..0000000000
--- a/packages/altboot/files/poodle/altboot-2.4.cfg
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Altboot machine configuration for: Poodle / Kernel 2.4
-#
-
-#
-# Handled by /sbin/init.altboot
-# Allow booting images from SD or CF instead of booting
-# the ROM.
-ENABLE_ALTBOOT="yes"
-TIMEOUT="3"
-REAL_INIT="/sbin/init.sysvinit"
-SH_SHELL="/bin/sh"
-IMAGE_PATH="boot-images"
-IMAGE_TYPE="ext2"
-FSCK_IMAGES="no"
-SD_DEVICE="/dev/mmcda1"
-SD_KERNEL_MODULE="/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/block/sharp_mmcsd_m.o"
-INIT_RUNLEVEL="5"
-NO_GUI_RL="2"
-MASTER_PASSWORD=""
-ASK_PW_ON_BOOT="no"
-
-ENABLE_IMAGECONF="yes"
-
-SD_MOUNTPOINT="/media/card"
-CF_MOUNTPOINT="/media/cf"
diff --git a/packages/altboot/files/poodle/altboot-2.6.cfg b/packages/altboot/files/poodle/altboot-2.6.cfg
deleted file mode 100644
index f867db6b05..0000000000
--- a/packages/altboot/files/poodle/altboot-2.6.cfg
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# Altboot machine configuration for: Poodle / Kernel 2.6
-#
-
-# Handled by /sbin/init.altboot
-# Allow booting images from SD or CF instead of booting
-# the ROM.
-ENABLE_ALTBOOT="yes"
-TIMEOUT="4"
-REAL_INIT="/sbin/init.sysvinit"
-SH_SHELL="/bin/sh"
-
-ENABLE_SOUND="yes"
-
-IMAGE_PATH="boot-images"
-IMAGE_TYPE="ext2"
-FSCK_IMAGES="yes"
-ENABLE_IMAGECONF="yes"
-
-SD_DEVICE="/dev/mmcblk0p1"
-SD_KERNEL_MODULE=""
-
-USB_HOST_AVAILABLE="no"
-USB_STORAGE_MODULES="ohci_hcd usb_storage sd_mod"
-USB_STORAGE_PARTITION="/dev/sda1"
-USB_STORAGE_WAIT="4"
-
-USB_NETWORKING_AVAILABLE="yes"
-USB_NW_MODULES="usbcore pxa27x_udc ohci-hcd g_ether"
-USB_NW_DEVICE="usb0"
-
-KEXEC_KERNEL_DIR="/boot"
-KEXEC_BIN="/usr/sbin/kexec"
-
-INIT_RUNLEVEL="5"
-NO_GUI_RL="2"
-MASTER_PASSWORD=""
-ASK_PW_ON_BOOT="no"
-
-SD_MOUNTPOINT="/media/card"
-CF_MOUNTPOINT="/media/cf"
-
-# Poodle already boots off SD natively!
-DISABLE_SD_BOOT="yes"
-
diff --git a/packages/altboot/files/spitz/altboot-2.6.cfg b/packages/altboot/files/spitz/altboot-2.6.cfg
deleted file mode 100644
index 0a2b643b76..0000000000
--- a/packages/altboot/files/spitz/altboot-2.6.cfg
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Altboot machine configuration for: Spitz / Kernel 2.6
-#
-
-# Handled by /sbin/init.altboot
-# Allow booting images from SD or CF instead of booting
-# the ROM.
-ENABLE_ALTBOOT="yes"
-TIMEOUT="4"
-REAL_INIT="/sbin/init.sysvinit"
-SH_SHELL="/bin/sh"
-
-ENABLE_SOUND="yes"
-
-IMAGE_PATH="boot-images"
-IMAGE_TYPE="ext2"
-FSCK_IMAGES="yes"
-ENABLE_IMAGECONF="yes"
-
-SD_DEVICE="/dev/mmcblk0p1"
-SD_KERNEL_MODULE=""
-
-USB_HOST_AVAILABLE="no"
-USB_STORAGE_MODULES="usb_ohci_pxa27x usb-storage"
-USB_STORAGE_PARTITION="/dev/sda1"
-USB_STORAGE_WAIT="4"
-
-USB_NETWORKING_AVAILABLE="yes"
-USB_NW_MODULES="usbcore pxa27x_udc ohci-hcd g_ether"
-USB_NW_DEVICE="usb0"
-
-KEXEC_KERNEL_DIR="/boot"
-KEXEC_BIN="/usr/sbin/kexec"
-
-INIT_RUNLEVEL="5"
-NO_GUI_RL="2"
-MASTER_PASSWORD=""
-ASK_PW_ON_BOOT="no"
-
-SD_MOUNTPOINT="/media/card"
-CF_MOUNTPOINT="/media/cf"
diff --git a/packages/altboot/files/tosa/altboot-2.4.cfg b/packages/altboot/files/tosa/altboot-2.4.cfg
deleted file mode 100644
index f84e2d57b9..0000000000
--- a/packages/altboot/files/tosa/altboot-2.4.cfg
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Altboot machine configuration for: Tosa / Kernel 2.4
-#
-
-# Handled by /sbin/init.altboot
-# Allow booting images from SD or CF instead of booting
-# the ROM.
-ENABLE_ALTBOOT="yes"
-TIMEOUT="4"
-REAL_INIT="/sbin/init.sysvinit"
-SH_SHELL="/bin/sh"
-
-IMAGE_PATH="boot-images"
-IMAGE_TYPE="ext2"
-FSCK_IMAGES="yes"
-ENABLE_IMAGECONF="yes"
-
-SD_DEVICE="/dev/mmcda1"
-SD_KERNEL_MODULE="/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/block/sharp_mmcsd_m.o"
-
-USB_HOST_AVAILABLE="yes"
-USB_STORAGE_MODULES="usb_ohci_tc6393 usb-storage"
-USB_STORAGE_PARTITION="/dev/sda1"
-USB_STORAGE_WAIT="4"
-
-INIT_RUNLEVEL="5"
-NO_GUI_RL="2"
-MASTER_PASSWORD=""
-ASK_PW_ON_BOOT="no"
-
-SD_MOUNTPOINT="/media/card"
-CF_MOUNTPOINT="/media/cf"
diff --git a/packages/altboot/files/tosa/altboot-2.6.cfg b/packages/altboot/files/tosa/altboot-2.6.cfg
deleted file mode 100644
index 62e8ea2434..0000000000
--- a/packages/altboot/files/tosa/altboot-2.6.cfg
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Altboot machine configuration for: Akita / Kernel 2.6
-#
-
-# Handled by /sbin/init.altboot
-# Allow booting images from SD or CF instead of booting
-# the ROM.
-ENABLE_ALTBOOT="yes"
-TIMEOUT="4"
-REAL_INIT="/sbin/init.sysvinit"
-SH_SHELL="/bin/sh"
-
-ENABLE_SOUND="yes"
-
-IMAGE_PATH="boot-images"
-IMAGE_TYPE="ext2"
-FSCK_IMAGES="yes"
-ENABLE_IMAGECONF="yes"
-
-SD_DEVICE="/dev/mmcblk0p1"
-SD_KERNEL_MODULE=""
-
-USB_HOST_AVAILABLE="yes"
-USB_STORAGE_MODULES="ohci_hcd usb_storage sd_mod"
-USB_STORAGE_PARTITION="/dev/sda1"
-USB_STORAGE_WAIT="4"
-
-USB_NETWORKING_AVAILABLE="yes"
-USB_NW_MODULES="usbcore pxa27x_udc ohci-hcd g_ether"
-USB_NW_DEVICE="usb0"
-
-KEXEC_KERNEL_DIR="/boot"
-KEXEC_BIN="/usr/sbin/kexec"
-
-INIT_RUNLEVEL="5"
-NO_GUI_RL="2"
-MASTER_PASSWORD=""
-ASK_PW_ON_BOOT="no"
-
-SD_MOUNTPOINT="/media/card"
-CF_MOUNTPOINT="/media/cf"
diff --git a/packages/angstrom/angstrom-bootstrap-image.bb b/packages/angstrom/angstrom-bootstrap-image.bb
deleted file mode 100644
index 3977e223af..0000000000
--- a/packages/angstrom/angstrom-bootstrap-image.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-#Angstrom bootstrap image
-LICENSE = "MIT"
-PR = "r3"
-
-ANGSTROM_EXTRA_INSTALL ?= ""
-
-DEPENDS = "task-base"
-RDEPENDS = "task-base-core-default \
- task-base \
- ${ANGSTROM_EXTRA_INSTALL} \
- "
-
-export IMAGE_BASENAME = "bootstrap-image"
-export IMAGE_LINGUAS = ""
-export PACKAGE_INSTALL = "${RDEPENDS}"
-
-inherit image
-
diff --git a/packages/angstrom/angstrom-console-image.bb b/packages/angstrom/angstrom-console-image.bb
new file mode 100644
index 0000000000..5368b0deaa
--- /dev/null
+++ b/packages/angstrom/angstrom-console-image.bb
@@ -0,0 +1,18 @@
+#Angstrom bootstrap image
+LICENSE = "MIT"
+PR = "r5"
+
+ANGSTROM_EXTRA_INSTALL ?= ""
+
+DEPENDS = "task-base psplash-zap"
+RDEPENDS = "task-base \
+ ${ANGSTROM_EXTRA_INSTALL} \
+ psplash-zap \
+ "
+
+export IMAGE_BASENAME = "console-image"
+export IMAGE_LINGUAS = ""
+export PACKAGE_INSTALL = "${RDEPENDS}"
+
+inherit image
+
diff --git a/packages/angstrom/angstrom-e-image.bb b/packages/angstrom/angstrom-e-image.bb
new file mode 100644
index 0000000000..4c9bb83507
--- /dev/null
+++ b/packages/angstrom/angstrom-e-image.bb
@@ -0,0 +1,36 @@
+#Angstrom e image
+LICENSE = "MIT"
+PR = "r1"
+
+
+PREFERRED_PROVIDER_virtual/evas ?= "evas-x11"
+PREFERRED_PROVIDER_virtual/ecore ?= "ecore-x11"
+PREFERRED_PROVIDER_virtual/imlib2 ?= "imlib2-x11"
+PREFERRED_PROVIDER_virtual/libx11 ?= "libx11"
+
+PREFERRED_PROVIDER_libgpewidget ?= "libgpewidget"
+PREFERRED_PROVIDER_tslib ?= "tslib"
+PREFERRED_PROVIDER_virtual/libsdl ?= "libsdl-x11"
+PREFERRED_PROVIDER_virtual/libxine ?= "libxine-x11"
+
+ANGSTROM_EXTRA_INSTALL ?= ""
+XSERVER ?= "xserver-kdrive-fbdev"
+
+export IMAGE_BASENAME = "e-image"
+
+DEPENDS = "task-base"
+RDEPENDS = "\
+ ${XSERVER} \
+ task-base \
+ angstrom-e-base-depends \
+ angstrom-e-depends \
+ angstrom-gpe-task-settings \
+ ${ANGSTROM_EXTRA_INSTALL}"
+
+
+export PACKAGE_INSTALL = "${RDEPENDS}"
+
+#zap root password for release images
+ROOTFS_POSTPROCESS_COMMAND += '${@base_conditional("DISTRO_TYPE", "release", "zap_root_password; ", "",d)}'
+
+inherit image
diff --git a/packages/angstrom/angstrom-gpe-image.bb b/packages/angstrom/angstrom-gpe-image.bb
deleted file mode 100644
index d366a62bf7..0000000000
--- a/packages/angstrom/angstrom-gpe-image.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-#Angstrom GPE image
-LICENSE = "MIT"
-PR = "r4"
-
-PREFERRED_PROVIDER_libgpewidget ?= "libgpewidget"
-PREFERRED_PROVIDER_tslib ?= "tslib"
-PREFERRED_PROVIDER_virtual/libsdl ?= "libsdl-x11"
-PREFERRED_PROVIDER_virtual/libxine ?= "libxine-x11"
-PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11"
-
-ANGSTROM_EXTRA_INSTALL ?= ""
-XSERVER ?= "xserver-kdrive-fbdev"
-
-export IMAGE_BASENAME = "gpe-image"
-
-DEPENDS = "task-base"
-RDEPENDS = "\
- ${XSERVER} \
- task-base-core-default \
- task-base \
- angstrom-x11-base-depends \
- angstrom-gpe-task-base \
- angstrom-gpe-task-settings \
- angstrom-gpe-task-pim \
- ${ANGSTROM_EXTRA_INSTALL}"
-
-
-export PACKAGE_INSTALL = "${RDEPENDS}"
-
-#zap root password for release images
-ROOTFS_POSTPROCESS_COMMAND += '${@base_conditional("DISTRO_TYPE", "release", "zap_root_password; ", "",d)}'
-
-inherit image
diff --git a/packages/angstrom/angstrom-mokogateway-image.bb b/packages/angstrom/angstrom-mokogateway-image.bb
new file mode 100644
index 0000000000..624274de37
--- /dev/null
+++ b/packages/angstrom/angstrom-mokogateway-image.bb
@@ -0,0 +1,20 @@
+#Angstrom moko gateway image
+# tries to be a companion for openmoko based phones
+LICENSE = "MIT"
+PR = "r2"
+
+ANGSTROM_EXTRA_INSTALL ?= ""
+
+DEPENDS = "task-base"
+RDEPENDS = " \
+ task-boot \
+ task-base-bluetooth \
+ bluez-utils \
+ blueprobe \
+ "
+export IMAGE_BASENAME = "mokogateway-image"
+export IMAGE_LINGUAS = ""
+export PACKAGE_INSTALL = "${RDEPENDS}"
+
+inherit image
+
diff --git a/packages/angstrom/angstrom-x11-image.bb b/packages/angstrom/angstrom-x11-image.bb
new file mode 100644
index 0000000000..14e83818a0
--- /dev/null
+++ b/packages/angstrom/angstrom-x11-image.bb
@@ -0,0 +1,32 @@
+#Angstrom X11 image
+LICENSE = "MIT"
+PR = "r8"
+
+PREFERRED_PROVIDER_libgpewidget ?= "libgpewidget"
+PREFERRED_PROVIDER_tslib ?= "tslib"
+PREFERRED_PROVIDER_virtual/libsdl ?= "libsdl-x11"
+PREFERRED_PROVIDER_virtual/libxine ?= "libxine-x11"
+PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11"
+
+ANGSTROM_EXTRA_INSTALL ?= "hal gstreamer"
+XSERVER ?= "xserver-kdrive-fbdev"
+
+export IMAGE_BASENAME = "x11-image"
+
+DEPENDS = "task-base"
+RDEPENDS = "\
+ ${XSERVER} \
+ task-base \
+ task-base-wifi \
+ angstrom-x11-base-depends \
+ angstrom-gpe-task-base \
+ angstrom-gpe-task-settings \
+ ${ANGSTROM_EXTRA_INSTALL}"
+
+
+export PACKAGE_INSTALL = "${RDEPENDS}"
+
+#zap root password for release images
+ROOTFS_POSTPROCESS_COMMAND += '${@base_conditional("DISTRO_TYPE", "release", "zap_root_password; ", "",d)}'
+
+inherit image
diff --git a/packages/angstrom/task-angstrom-e.bb b/packages/angstrom/task-angstrom-e.bb
new file mode 100644
index 0000000000..eb9f025743
--- /dev/null
+++ b/packages/angstrom/task-angstrom-e.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Task packages for the Angstrom distribution"
+PR = "r0"
+ALLOW_EMPTY = "1"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+PACKAGES = "\
+ angstrom-e-base-depends \
+ angstrom-e-depends"
+
+RDEPENDS_angstrom-e-base-depends := "\
+ angstrom-x11-base-depends \
+ rxvt-unicode xstroke xtscal xrandr xmodmap xdpyinfo \
+ ttf-bitstream-vera \
+ entrance e-wm \
+ glibc-charmap-utf-8 glibc-localedata-i18n"
+#xserver-kdrive-fbdev
+
+RDEPENDS_angstrom-e-depends := "\
+ pango-module-basic-fc \
+ gdk-pixbuf-loader-bmp \
+ gdk-pixbuf-loader-gif \
+ gdk-pixbuf-loader-jpeg \
+ gdk-pixbuf-loader-png \
+ gdk-pixbuf-loader-pnm \
+ gdk-pixbuf-loader-xbm \
+ gdk-pixbuf-loader-xpm"
diff --git a/packages/angstrom/task-angstrom-x11.bb b/packages/angstrom/task-angstrom-x11.bb
index c7ac97d2e5..a5f9be1938 100644
--- a/packages/angstrom/task-angstrom-x11.bb
+++ b/packages/angstrom/task-angstrom-x11.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Task packages for the Angstrom distribution"
-PR = "r26"
+PR = "r30"
ALLOW_EMPTY = "1"
PACKAGE_ARCH = "${MACHINE_ARCH}"
@@ -11,6 +11,7 @@ PACKAGES = "\
angstrom-gpe-task-pim \
angstrom-gpe-task-apps \
angstrom-gpe-task-games \
+ angstrom-ohand-task-pim \
angstrom-task-office \
angstrom-task-printing \
angstrom-task-sectest"
@@ -42,7 +43,6 @@ RDEPENDS_angstrom-gpe-task-base := "\
gpe-autostarter \
${@base_contains("MACHINE_FEATURES", "touchscreen", "libgtkstylus", "",d)} \
${@base_contains("MACHINE_FEATURES", "keyboard", "", "libgtkinput",d)} \
- ${@base_contains("MACHINE_FEATURES", "touchscreen", "detect-stylus", "",d)} \
suspend-desktop \
teleport \
xauth \
@@ -52,6 +52,7 @@ RDEPENDS_angstrom-gpe-task-base := "\
pango-module-basic-x \
pango-module-basic-fc \
${@base_contains("COMBINED_FEATURES", "bluetooth", "gpe-bluetooth", "",d)} \
+ ${@base_contains("COMBINED_FEATURES", "bluetooth", "bluez-gnome", "",d)} \
"
RDEPENDS_angstrom-gpe-task-pim := "\
@@ -61,6 +62,12 @@ RDEPENDS_angstrom-gpe-task-pim := "\
gpe-contacts \
gpesyncd"
+RDEPENDS_angstrom-ohand-task-pim := "\
+ dates \
+ contacts \
+ tasks \
+"
+
RDEPENDS_angstrom-gpe-task-settings := "\
matchbox-panel-manager \
gpe-su \
@@ -68,6 +75,7 @@ RDEPENDS_angstrom-gpe-task-settings := "\
gpe-package \
gpe-shield \
gpe-taskmanager \
+ keylaunch \
minilite \
minimix \
xmonobut"
@@ -101,12 +109,13 @@ RDEPENDS_angstrom-task-office := "\
gnumeric \
abiword \
imposter \
-# evince \
+ evince \
gqview"
RDEPENDS_angstrom-task-printing := "\
cups \
- gnome-cups-manager"
+# gnome-cups-manager \
+ "
RDEPENDS_angstrom-task-sectest := "\
nmap \
diff --git a/packages/anthy/anthy_7811.bb b/packages/anthy/anthy_7811.bb
index a6c8eff200..5ac651223b 100644
--- a/packages/anthy/anthy_7811.bb
+++ b/packages/anthy/anthy_7811.bb
@@ -3,8 +3,8 @@ AUTHOR = "Anthy Developers <anthy-dev@lists.sourceforge.jp>"
HOMEPAGE = "http://anthy.sourceforge.jp"
LICENSE = "GPL"
DEPENDS = "anthy-native"
-SECTION = "libs/inputmethod"
-PR = "r0"
+SECTION = "inputmethods"
+PR = "r1"
SRC_URI = "http://osdn.dl.sourceforge.jp/anthy/20510/anthy-7811.tar.gz \
file://not_build_elc.patch;patch=1 \
@@ -12,8 +12,6 @@ SRC_URI = "http://osdn.dl.sourceforge.jp/anthy/20510/anthy-7811.tar.gz \
file://change_anthy_dic_path.patch;patch=1 \
file://native-mkanthydic-mkdepgraph.patch;patch=1"
-S = "${WORKDIR}/anthy-${PV}"
-
inherit autotools pkgconfig
PACKAGES = "${PN} ${PN}-el libanthy0 libanthy-dev"
@@ -21,6 +19,8 @@ PACKAGES = "${PN} ${PN}-el libanthy0 libanthy-dev"
DESCRIPTION_anthy = "A Japanese input method (backend, dictionary and utility)"
DESCRIPTION_libanthy0 = "Anthy runtime library"
DESCRIPTION_libanthy-dev = "Anthy static library, headers and documets for developers"
+SECTION_libanthy0 = "libs/inputmethods"
+SECTION_libanthy-dev = "devel/libs"
# gettext
diff --git a/packages/apache2/apache2-2.2.3/configure-fix-cross-compile-ptr-check.patch b/packages/apache2/apache2-2.2.3/configure-fix-cross-compile-ptr-check.patch
new file mode 100644
index 0000000000..fab828ddc3
--- /dev/null
+++ b/packages/apache2/apache2-2.2.3/configure-fix-cross-compile-ptr-check.patch
@@ -0,0 +1,17 @@
+--- ./orig-configure 2007-02-20 11:05:12.000000000 +0200
++++ ./configure 2007-02-20 11:14:11.000000000 +0200
+@@ -6667,7 +6667,13 @@
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ if test "$cross_compiling" = yes; then
+- ap_void_ptr_lt_long=yes
++
++ if test "$ac_cv_sizeof_long_p" = "$ac_cv_sizeof_void_p"; then
++ ap_void_ptr_lt_long=no
++ else
++ ap_void_ptr_lt_long=yes
++ fi
++
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
diff --git a/packages/apache2/apache2_2.2.3.bb b/packages/apache2/apache2_2.2.3.bb
index aaf5ab4298..ddc4131dae 100644
--- a/packages/apache2/apache2_2.2.3.bb
+++ b/packages/apache2/apache2_2.2.3.bb
@@ -3,13 +3,14 @@ DESCRIPTION = "The apache v2 web server"
DEPENDS = "apache2-native openssl expat pcre"
RDEPENDS += "openssl"
-PR = "r4"
+PR = "r5"
SRC_URI = "http://apache.mirrors.tds.net/httpd/httpd-2.2.3.tar.bz2 \
file://dftables-makefile-patch;patch=1 \
file://apr-sockets-patch;patch=1 \
file://configure-patch;patch=1 \
- file://server-makefile-patch;patch=1"
+ file://server-makefile-patch;patch=1 \
+ file://configure-fix-cross-compile-ptr-check.patch;patch=1"
#
# over-ride needed since apache unpacks into httpd
diff --git a/packages/apex/apex_1.4.11.bb b/packages/apex/apex_1.4.11.bb
new file mode 100644
index 0000000000..713cc833fd
--- /dev/null
+++ b/packages/apex/apex_1.4.11.bb
@@ -0,0 +1,58 @@
+DESCRIPTION = "APEX Boot Loader"
+SECTION = ""
+PRIORITY = "optional"
+HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz \
+ file://defconfig"
+
+EXTRA_OEMAKE_append = " CROSS_COMPILE=${CROSS_DIR}/bin/${HOST_PREFIX}"
+
+oe_runmake() {
+ oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} "$@"
+ make ${PARALLEL_MAKE} LDFLAGS= CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} "$@" || die "oe_runmake failed"
+}
+
+# FIXME - make this the same as the distro kernel compilation
+CMDLINE="console=ttyS0,115200 rootfstype=jffs2 root=/dev/mtdblock4 rw init=/linuxrc noirqdebug"
+
+# Set the correct CONFIG_USER_xxx_ENDIAN and CONFIG_CMDLINE at the head
+# of the .config file and remove any settings in defconfig then append
+# defconfig to .config
+do_configure() {
+ rm -f ${S}/.config
+ . ${CONFIG_SITE}
+ if [ "x$ac_cv_c_bigendian" = "xyes" -o "x$ac_cv_c_littleendian" = "xno" ]; then
+ sed -e 's/.*CONFIG_USER_BIGENDIAN.*/CONFIG_USER_BIGENDIAN=y/' \
+ -e 's/.*CONFIG_BIGENDIAN.*/CONFIG_BIGENDIAN=y/' \
+ -e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE}\"|' \
+ ${WORKDIR}/defconfig > ${S}/.config
+ 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_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE}\"|' \
+ ${WORKDIR}/defconfig > ${S}/.config
+ else
+ oefatal do_configure cannot determine endianess
+ fi
+ oe_runmake oldconfig
+}
+
+DEPENDS += "devio-native"
+
+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.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.bin 'xp $,4'
+ else
+ oefatal do_populate_staging cannot determine endianess
+ fi
+}
diff --git a/packages/apex/apex_1.4.7.bb b/packages/apex/apex_1.4.7.bb
index bb45a310b0..713cc833fd 100644
--- a/packages/apex/apex_1.4.7.bb
+++ b/packages/apex/apex_1.4.7.bb
@@ -23,18 +23,20 @@ CMDLINE="console=ttyS0,115200 rootfstype=jffs2 root=/dev/mtdblock4 rw init=/linu
# defconfig to .config
do_configure() {
rm -f ${S}/.config
- if test '${ARCH_BYTE_SEX}' = be
- then
+ . ${CONFIG_SITE}
+ if [ "x$ac_cv_c_bigendian" = "xyes" -o "x$ac_cv_c_littleendian" = "xno" ]; then
sed -e 's/.*CONFIG_USER_BIGENDIAN.*/CONFIG_USER_BIGENDIAN=y/' \
-e 's/.*CONFIG_BIGENDIAN.*/CONFIG_BIGENDIAN=y/' \
-e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE}\"|' \
${WORKDIR}/defconfig > ${S}/.config
- else
+ 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_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE}\"|' \
${WORKDIR}/defconfig > ${S}/.config
+ else
+ oefatal do_configure cannot determine endianess
fi
oe_runmake oldconfig
}
@@ -43,11 +45,14 @@ DEPENDS += "devio-native"
do_populate_staging() {
install -d ${STAGING_LOADER_DIR}
- # FIXME - arch-arm should not be hard-coded
- if test '${ARCH_BYTE_SEX}' = be
- then
+ . ${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.bin
- else
+ 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.bin 'xp $,4'
+ else
+ oefatal do_populate_staging cannot determine endianess
fi
}
diff --git a/packages/apex/nslu2/defconfig b/packages/apex/nslu2/defconfig
index 2d2784457a..ccec463e98 100644
--- a/packages/apex/nslu2/defconfig
+++ b/packages/apex/nslu2/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version:
-# Fri Aug 18 09:47:40 2006
+# Tue Jan 9 22:31:18 2007
#
CONFIG_ARM=y
CONFIG_CPU_ARMV5=y
@@ -10,6 +10,7 @@ CONFIG_CPU_XSCALE=y
# CONFIG_ARCH_LH7A40X is not set
CONFIG_ARCH_IXP42X=y
# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_MX3 is not set
CONFIG_EXPERIMENTAL=y
# CONFIG_SMALL is not set
@@ -31,6 +32,7 @@ CONFIG_DISABLE_MMU_AT_BOOT=y
CONFIG_SDRAMBOOT_REPORT=y
CONFIG_STACK_SIZE=0x1000
CONFIG_STACKLIMIT=y
+# CONFIG_BOOTSTRAP_MEMTEST is not set
CONFIG_ATAG_PHYS=0x00000100
CONFIG_ARCH_NUMBER=597
CONFIG_APEX_VMA=0x00200000
@@ -45,6 +47,8 @@ CONFIG_NOR_BANK0_LENGTH=0x00800000
CONFIG_ENV_STARTUP=""
CONFIG_MACH="ixp42x"
CONFIG_MACH_NSLU2=y
+# CONFIG_MACH_NAS100D is not set
+# CONFIG_MACH_DSMG600 is not set
# CONFIG_MACH_AVILA2347 is not set
# CONFIG_USER_DEFAULTENDIAN is not set
# CONFIG_USER_BIGENDIAN is not set
@@ -73,7 +77,6 @@ CONFIG_CMD_COMPARE=y
CONFIG_CMD_DRVINFO=y
CONFIG_CMD_DUMP=y
CONFIG_CMD_ENV=y
-# CONFIG_CMD_ERASEENV is not set
CONFIG_CMD_SETENV=y
CONFIG_CMD_ERASE=y
CONFIG_CMD_FILL=y
@@ -94,32 +97,49 @@ CONFIG_DRIVER_FIS=y
CONFIG_DRIVER_FIS_BLOCKDEVICE="nor:0x7e0000+4k"
CONFIG_DRIVER_NOR_CFI=y
# CONFIG_DRIVER_NOR_CFI_NO_BUFFERED is not set
+# CONFIG_DRIVER_IXP4XX_NPE_ETH is not set
CONFIG_USES_NOR_CFI=y
CONFIG_USES_PATHNAME_PARSER=y
+CONFIG_USES_IXP4XX_NPE_ETH=y
#
# Environment
#
CONFIG_ENV=y
+CONFIG_ENV_MUTABLE=y
+CONFIG_ENV_LINK=y
+CONFIG_ENV_REGION="nor:0x7fc000+15k"
+CONFIG_ENV_CHECK_LEN=1024
+CONFIG_VARIATIONS=y
+CONFIG_VARIATION_SUFFIX="-alt"
# CONFIG_NO_BOOTSTRAP is not set
CONFIG_NOR_BOOT=y
# CONFIG_NAND_BOOT is not set
# CONFIG_COMPANION_EVT1_BOOT is not set
# CONFIG_COMPANION_EVT2_BOOT is not set
+
+#
+# Default Startup
+#
CONFIG_AUTOBOOT=y
CONFIG_AUTOBOOT_DELAY=10
-CONFIG_ENV_MUTABLE=y
-CONFIG_ENV_LINK=y
-CONFIG_ENV_REGION="nor:0x7fc000+15k"
-CONFIG_ENV_CHECK_LEN=1024
CONFIG_ENV_STARTUP_KERNEL_COPY=y
-CONFIG_ENV_REGION_KERNEL="fis://kernel"
# CONFIG_ENV_REGION_KERNEL_SWAP is not set
-# CONFIG_ENV_STARTUP_RAMDISK_COPY is not set
+
+#
+# Regions
+#
+CONFIG_ENV_REGION_KERNEL="fis://kernel"
+# CONFIG_ENV_REGION_KERNEL_ALT_P is not set
+
+#
+# Overrides
+#
CONFIG_ENV_DEFAULT_CMDLINE_OVERRIDE=y
CONFIG_ENV_DEFAULT_CMDLINE="console=ttyS0,115200 rootfstype=jffs2 root=/dev/mtdblock4 rw init=/linuxrc noirqdebug"
+# CONFIG_ENV_DEFAULT_CMDLINE_ALT_P is not set
# CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE is not set
+# CONFIG_ENV_DEFAULT_STARTUP_ALT_P is not set
CONFIG_USES_NOR_BOOTFLASH=y
-# CONFIG_LITTLEENDIAN is not set
CONFIG_CLEAR_STACKS=y
CONFIG_ALIASES=y
diff --git a/packages/apt/apt-package.inc b/packages/apt/apt-package.inc
index 43f54cadab..5a5d56930e 100644
--- a/packages/apt/apt-package.inc
+++ b/packages/apt/apt-package.inc
@@ -77,11 +77,18 @@ do_install () {
install -m 0755 bin/apt-sortpkgs ${D}${bindir}/
install -m 0755 bin/apt-extracttemplates ${D}${bindir}/
+ install -d ${D}${libdir}
eval `cat environment.mak | grep ^GLIBC_VER | sed -e's, = ,=,'`
- oe_libinstall -so -C bin libapt-pkg$GLIBC_VER-6 ${D}${libdir}/
- ln -sf libapt-pkg$GLIBC_VER-6.so ${D}${libdir}/libapt-pkg.so
- oe_libinstall -so -C bin libapt-inst$GLIBC_VER-6 ${D}${libdir}/
- ln -sf libapt-inst$GLIBC_VER-6.so ${D}${libdir}/libapt-inst.so
+ eval `cat apt-pkg/makefile | grep ^MAJOR | sed -e's, = ,=,'`
+ eval `cat apt-pkg/makefile | grep ^MINOR | sed -e's, = ,=,'`
+ install bin/libapt-pkg$GLIBC_VER-6.so.$MAJOR.$MINOR ${D}${libdir}/
+ ln -sf libapt-pkg$GLIBC_VER-6.so.$MAJOR.$MINOR ${D}${libdir}/libapt-pkg$GLIBC_VER-6.so.$MAJOR
+ ln -sf libapt-pkg$GLIBC_VER-6.so.$MAJOR.$MINOR ${D}${libdir}/libapt-pkg.so
+ eval `cat apt-inst/makefile | grep ^MAJOR | sed -e's, = ,=,'`
+ eval `cat apt-inst/makefile | grep ^MINOR | sed -e's, = ,=,'`
+ install bin/libapt-inst$GLIBC_VER-6.so.$MAJOR.$MINOR ${D}${libdir}/
+ ln -sf libapt-inst$GLIBC_VER-6.so.$MAJOR.$MINOR ${D}${libdir}/libapt-inst$GLIBC_VER-6.so.$MAJOR
+ ln -sf libapt-inst$GLIBC_VER-6.so.$MAJOR.$MINOR ${D}${libdir}/libapt-inst.so
install -d ${D}${libdir}/apt/methods
install -m 0755 bin/methods/* ${D}${libdir}/apt/methods/
diff --git a/packages/apt/apt.inc b/packages/apt/apt.inc
index b18ed93782..283b80d662 100644
--- a/packages/apt/apt.inc
+++ b/packages/apt/apt.inc
@@ -2,9 +2,16 @@ DESCRIPTION = "Advanced front-end for dpkg."
LICENSE = "GPL"
SECTION = "base"
-SRC_URI = "${DEBIAN_MIRROR}/main/a/apt/apt_${PV}.tar.gz"
+SRC_URI = "${DEBIAN_MIRROR}/main/a/apt/apt_${PV}.tar.gz \
+ file://environment.patch;patch=1"
S = "${WORKDIR}/apt-${PV}"
inherit autotools gettext
EXTRA_AUTORECONF = "--exclude=autopoint,autoheader"
+
+# Apt wants to know the glibc version by running a binary file, which will fail, so we have to tell configure which version to use
+# Since I don't know the impliations of setting a wrong value I only provide one for angstrom, which uses glibc 2.5 (which claims to be 2.4)
+# Koen - 20070327
+EXTRA_OECONF_append_angstrom = " ac_cv_glibc_ver=libc6.4"
+
diff --git a/packages/apt/apt_0.6.46.2.bb b/packages/apt/apt_0.6.46.2.bb
index 1cd8eb270e..24023f2a58 100644
--- a/packages/apt/apt_0.6.46.2.bb
+++ b/packages/apt/apt_0.6.46.2.bb
@@ -1,9 +1,11 @@
require apt.inc
-SRC_URI += "file://autofoo.patch;patch=1 \
- file://nodoc.patch;patch=1"
+SRC_URI += "file://nodoc.patch;patch=1"
require apt-package.inc
FILES_${PN} += "${bindir}/apt-key"
apt-manpages += "doc/apt-key.8"
+
+PR = "r1"
+
diff --git a/packages/apt/files/apt.conf b/packages/apt/files/apt.conf
index fc19018533..6fd653dfcd 100644
--- a/packages/apt/files/apt.conf
+++ b/packages/apt/files/apt.conf
@@ -21,6 +21,10 @@ Dir "${STAGING_DIR}/"
apt-get "apt-get";
apt-cache "apt-cache";
};
+ Etc "etc/apt/"
+ {
+ Preferences "preferences";
+ };
};
APT
diff --git a/packages/apt/files/environment.patch b/packages/apt/files/environment.patch
new file mode 100644
index 0000000000..5bea1a0130
--- /dev/null
+++ b/packages/apt/files/environment.patch
@@ -0,0 +1,13 @@
+Index: apt-0.6.46.2/buildlib/environment.mak.in
+===================================================================
+--- apt-0.6.46.2.orig/buildlib/environment.mak.in 2007-03-29 11:38:58.000000000 +0100
++++ apt-0.6.46.2/buildlib/environment.mak.in 2007-03-29 11:39:12.000000000 +0100
+@@ -62,7 +62,7 @@
+
+ # Shared library things
+ HOST_OS = @host_os@
+-ifneq ($(words $(filter linux-gnu gnu% %gnu,$(HOST_OS))),0)
++ifneq ($(words $(filter linux-gnu linux-gnueabi gnu% %gnu,$(HOST_OS))),0)
+ SONAME_MAGIC=-Wl,-soname -Wl,
+ LFLAGS_SO=
+ else
diff --git a/packages/altboot/files/poodle/.mtn2git_empty b/packages/arm-kernel-shim/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/altboot/files/poodle/.mtn2git_empty
+++ b/packages/arm-kernel-shim/.mtn2git_empty
diff --git a/packages/arm-kernel-shim/arm-kernel-shim_1.3.bb b/packages/arm-kernel-shim/arm-kernel-shim_1.3.bb
new file mode 100644
index 0000000000..339f663e25
--- /dev/null
+++ b/packages/arm-kernel-shim/arm-kernel-shim_1.3.bb
@@ -0,0 +1,77 @@
+DESCRIPTION = "ARM Kernel Shim"
+SECTION = ""
+PRIORITY = "optional"
+HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
+LICENSE = "GPL"
+PR = "r5"
+
+COMPATIBLE_MACHINE = "(ixp4xx|nslu2)"
+
+SRC_URI = "ftp://ftp.buici.com/pub/arm/arm-kernel-shim/arm-kernel-shim-${PV}.tar.gz \
+ file://passthrough-atags.patch;patch=1 \
+ file://cmdline_if_none.patch;patch=1 \
+ file://config-nslu2.h \
+ file://config-nas100d.h \
+ file://config-dsmg600.h \
+ file://config-fsg3.h"
+
+S = ${WORKDIR}/arm-kernel-shim-${PV}/${PV}
+
+EXTRA_OEMAKE_append = " CROSS_COMPILE=${CROSS_DIR}/bin/${HOST_PREFIX}"
+
+oe_runmake() {
+ mv ${S}/config.h ${S}/config.h.orig
+ # NSLU2
+ if [ ${SITEINFO_ENDIANESS} == "be" ] ; then
+ sed -e 's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' \
+ ${WORKDIR}/config-nslu2.h > ${S}/config.h
+ else
+ sed -e 's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' \
+ ${WORKDIR}/config-nslu2.h > ${S}/config.h
+ fi
+ rm -f ${S}/main.o
+ oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-nslu2
+ make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-nslu2 || die "oe_runmake failed"
+ # NAS100d
+ if [ ${SITEINFO_ENDIANESS} == "be" ] ; then
+ sed -e 's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' \
+ ${WORKDIR}/config-nas100d.h > ${S}/config.h
+ else
+ sed -e 's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' \
+ ${WORKDIR}/config-nas100d.h > ${S}/config.h
+ fi
+ rm -f ${S}/main.o
+ oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-nas100d
+ make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-nas100d || die "oe_runmake failed"
+ # DSMG-600
+ if [ ${SITEINFO_ENDIANESS} == "be" ] ; then
+ sed -e 's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' \
+ ${WORKDIR}/config-dsmg600.h > ${S}/config.h
+ else
+ sed -e 's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' \
+ ${WORKDIR}/config-dsmg600.h > ${S}/config.h
+ fi
+ rm -f ${S}/main.o
+ oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-dsmg600
+ make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-dsmg600 || die "oe_runmake failed"
+ # FSG-3
+ if [ ${SITEINFO_ENDIANESS} == "be" ] ; then
+ sed -e 's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' \
+ ${WORKDIR}/config-fsg3.h > ${S}/config.h
+ else
+ sed -e 's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' \
+ ${WORKDIR}/config-fsg3.h > ${S}/config.h
+ fi
+ rm -f ${S}/main.o
+ oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-fsg3
+ make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-fsg3 || die "oe_runmake failed"
+ mv ${S}/config.h.orig ${S}/config.h
+}
+
+do_populate_staging() {
+ install -d ${STAGING_LOADER_DIR}
+ cp ${S}/arm-kernel-shim-nslu2.bin ${STAGING_LOADER_DIR}/
+ cp ${S}/arm-kernel-shim-nas100d.bin ${STAGING_LOADER_DIR}/
+ cp ${S}/arm-kernel-shim-dsmg600.bin ${STAGING_LOADER_DIR}/
+ cp ${S}/arm-kernel-shim-fsg3.bin ${STAGING_LOADER_DIR}/
+}
diff --git a/packages/arm-kernel-shim/arm-kernel-shim_1.4.bb b/packages/arm-kernel-shim/arm-kernel-shim_1.4.bb
new file mode 100644
index 0000000000..3b20d33a7c
--- /dev/null
+++ b/packages/arm-kernel-shim/arm-kernel-shim_1.4.bb
@@ -0,0 +1,77 @@
+DESCRIPTION = "ARM Kernel Shim"
+SECTION = ""
+PRIORITY = "optional"
+HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
+LICENSE = "GPL"
+# PR = "r0"
+
+COMPATIBLE_MACHINE = "(ixp4xx|nslu2)"
+
+SRC_URI = "ftp://ftp.buici.com/pub/arm/arm-kernel-shim/arm-kernel-shim-${PV}.tar.gz \
+ file://passthrough-atags.patch;patch=1 \
+ file://cmdline_if_none.patch;patch=1 \
+ file://config-nslu2.h \
+ file://config-nas100d.h \
+ file://config-dsmg600.h \
+ file://config-fsg3.h"
+
+S = ${WORKDIR}/arm-kernel-shim-${PV}/1.3
+
+EXTRA_OEMAKE_append = " CROSS_COMPILE=${CROSS_DIR}/bin/${HOST_PREFIX}"
+
+oe_runmake() {
+ mv ${S}/config.h ${S}/config.h.orig
+ # NSLU2
+ if [ ${SITEINFO_ENDIANESS} == "be" ] ; then
+ sed -e 's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' \
+ ${WORKDIR}/config-nslu2.h > ${S}/config.h
+ else
+ sed -e 's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' \
+ ${WORKDIR}/config-nslu2.h > ${S}/config.h
+ fi
+ rm -f ${S}/main.o
+ oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-nslu2
+ make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-nslu2 || die "oe_runmake failed"
+ # NAS100d
+ if [ ${SITEINFO_ENDIANESS} == "be" ] ; then
+ sed -e 's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' \
+ ${WORKDIR}/config-nas100d.h > ${S}/config.h
+ else
+ sed -e 's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' \
+ ${WORKDIR}/config-nas100d.h > ${S}/config.h
+ fi
+ rm -f ${S}/main.o
+ oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-nas100d
+ make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-nas100d || die "oe_runmake failed"
+ # DSMG-600
+ if [ ${SITEINFO_ENDIANESS} == "be" ] ; then
+ sed -e 's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' \
+ ${WORKDIR}/config-dsmg600.h > ${S}/config.h
+ else
+ sed -e 's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' \
+ ${WORKDIR}/config-dsmg600.h > ${S}/config.h
+ fi
+ rm -f ${S}/main.o
+ oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-dsmg600
+ make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-dsmg600 || die "oe_runmake failed"
+ # FSG-3
+ if [ ${SITEINFO_ENDIANESS} == "be" ] ; then
+ sed -e 's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' \
+ ${WORKDIR}/config-fsg3.h > ${S}/config.h
+ else
+ sed -e 's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' \
+ ${WORKDIR}/config-fsg3.h > ${S}/config.h
+ fi
+ rm -f ${S}/main.o
+ oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-fsg3
+ make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} PACKAGE=arm-kernel-shim-fsg3 || die "oe_runmake failed"
+ mv ${S}/config.h.orig ${S}/config.h
+}
+
+do_populate_staging() {
+ install -d ${STAGING_LOADER_DIR}
+ cp ${S}/arm-kernel-shim-nslu2.bin ${STAGING_LOADER_DIR}/
+ cp ${S}/arm-kernel-shim-nas100d.bin ${STAGING_LOADER_DIR}/
+ cp ${S}/arm-kernel-shim-dsmg600.bin ${STAGING_LOADER_DIR}/
+ cp ${S}/arm-kernel-shim-fsg3.bin ${STAGING_LOADER_DIR}/
+}
diff --git a/packages/altboot/files/spitz/.mtn2git_empty b/packages/arm-kernel-shim/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/altboot/files/spitz/.mtn2git_empty
+++ b/packages/arm-kernel-shim/files/.mtn2git_empty
diff --git a/packages/arm-kernel-shim/files/cmdline_if_none.patch b/packages/arm-kernel-shim/files/cmdline_if_none.patch
new file mode 100644
index 0000000000..460f7be090
--- /dev/null
+++ b/packages/arm-kernel-shim/files/cmdline_if_none.patch
@@ -0,0 +1,45 @@
+--- arm-kernel-shim-1.3/main.c.orig 2007-02-14 19:05:35.000000000 -0600
++++ arm-kernel-shim-1.3/main.c 2007-02-14 22:48:06.000000000 -0600
+@@ -153,6 +153,42 @@
+ p->hdr.tag = ATAG_NONE;
+ p->hdr.size = 0;
+
++#else
++
++#ifdef CMDLINE_IF_NONE
++
++ /* Walk over the ATAG list, we need to find the end of the list.
++ * If we find a command line tag, stash away the pointer to the
++ * actual command line itself. Note that the implementation
++ * below assumes a single ATAG_CMDLINE passed in from the
++ * bootloader, which may not be a good assumption in all cases.
++ */
++ {
++ char *c = 0;
++ for_each_tag(p, (struct tag*) PHYS_PARAMS)
++ if (p->hdr.tag == ATAG_CMDLINE) c = p->u.cmdline.cmdline;
++
++ /* p -> final tag (ATAG_NONE), and c -> command line if found */
++ /* if no ATAG_CMDLINE, or command line is empty, add the default one. */
++
++ if ((c == 0) || (*c == 0)) {
++ p->hdr.tag = ATAG_CMDLINE;
++ p->hdr.size = tag_size (tag_cmdline)
++ + (sizeof (cmdline)+3)/4 - 1;
++ {
++ const char* sz = cmdline + offset;
++ int i;
++ for (i = 0; i < sizeof (cmdline); ++i)
++ p->u.cmdline.cmdline[i] = sz[i];
++ }
++ p = tag_next (p);
++ p->hdr.tag = ATAG_NONE;
++ p->hdr.size = 0;
++ }
++ }
++
++#endif
++
+ #endif
+
+ /* Pass control to the kernel */
diff --git a/packages/arm-kernel-shim/files/config-dsmg600.h b/packages/arm-kernel-shim/files/config-dsmg600.h
new file mode 100644
index 0000000000..f8caccecd4
--- /dev/null
+++ b/packages/arm-kernel-shim/files/config-dsmg600.h
@@ -0,0 +1,41 @@
+/* config.h
+
+ written by Marc Singer
+ 23 Jun 2006
+
+ Copyright (C) 2006 Marc Singer
+
+ -----------
+ DESCRIPTION
+ -----------
+
+*/
+
+#if !defined (__CONFIG_H__)
+# define __CONFIG_H__
+
+#define PHYS_PARAMS 0x00000100 /* Address for the parameter list */
+
+//#define RAM_BANK0_START 0x00000000
+//#define RAM_BANK0_LENGTH 0x04000000
+
+//#define RAM_BANK1_START 0xd0000000
+//#define RAM_BANK1_LENGTH 0x10000000
+
+#define COMMANDLINE \
+ "console=ttyS0,115200n8 root=/dev/mtdblock2 rootfstype=jffs2 init=/linuxrc rw noirqdebug"
+
+#define MACH_TYPE 964
+
+/* The DSM-G600 RedBoot sets up the ATAGs correctly */
+#define PASSTHROUGH_ATAGS
+
+/* but if the command line passed in is empty, use the default above. */
+#define CMDLINE_IF_NONE
+
+/* Uncomment one of these if you need to switch the CPU into a
+ specific mode. */
+//#define FORCE_LITTLEENDIAN
+//#define FORCE_BIGENDIAN
+
+#endif /* __CONFIG_H__ */
diff --git a/packages/arm-kernel-shim/files/config-fsg3.h b/packages/arm-kernel-shim/files/config-fsg3.h
new file mode 100644
index 0000000000..08684d708e
--- /dev/null
+++ b/packages/arm-kernel-shim/files/config-fsg3.h
@@ -0,0 +1,35 @@
+/* config.h
+
+ written by Marc Singer
+ 23 Jun 2006
+
+ Copyright (C) 2006 Marc Singer
+
+ -----------
+ DESCRIPTION
+ -----------
+
+*/
+
+#if !defined (__CONFIG_H__)
+# define __CONFIG_H__
+
+#define PHYS_PARAMS 0x00000100 /* Address for the parameter list */
+
+#define RAM_BANK0_START 0x00000000
+#define RAM_BANK0_LENGTH 0x04000000
+
+//#define RAM_BANK1_START 0xd0000000
+//#define RAM_BANK1_LENGTH 0x10000000
+
+//#define COMMANDLINE\
+// "console=ttyAMA0 root=/dev/memblk0 rootfstype=jffs"
+
+#define MACH_TYPE 1091
+
+/* Uncomment one of these if you need to switch the CPU into a
+ specific mode. */
+//#define FORCE_LITTLEENDIAN
+//#define FORCE_BIGENDIAN
+
+#endif /* __CONFIG_H__ */
diff --git a/packages/arm-kernel-shim/files/config-nas100d.h b/packages/arm-kernel-shim/files/config-nas100d.h
new file mode 100644
index 0000000000..62c5556999
--- /dev/null
+++ b/packages/arm-kernel-shim/files/config-nas100d.h
@@ -0,0 +1,35 @@
+/* config.h
+
+ written by Marc Singer
+ 23 Jun 2006
+
+ Copyright (C) 2006 Marc Singer
+
+ -----------
+ DESCRIPTION
+ -----------
+
+*/
+
+#if !defined (__CONFIG_H__)
+# define __CONFIG_H__
+
+#define PHYS_PARAMS 0x00000100 /* Address for the parameter list */
+
+#define RAM_BANK0_START 0x00000000
+#define RAM_BANK0_LENGTH 0x04000000
+
+//#define RAM_BANK1_START 0xd0000000
+//#define RAM_BANK1_LENGTH 0x10000000
+
+#define COMMANDLINE\
+ "console=ttyS0,115200n8 root=/dev/mtdblock2 rootfstype=jffs2 init=/linuxrc rw noirqdebug"
+
+#define MACH_TYPE 865
+
+/* Uncomment one of these if you need to switch the CPU into a
+ specific mode. */
+//#define FORCE_LITTLEENDIAN
+//#define FORCE_BIGENDIAN
+
+#endif /* __CONFIG_H__ */
diff --git a/packages/arm-kernel-shim/files/config-nslu2.h b/packages/arm-kernel-shim/files/config-nslu2.h
new file mode 100644
index 0000000000..2b597c2b7f
--- /dev/null
+++ b/packages/arm-kernel-shim/files/config-nslu2.h
@@ -0,0 +1,35 @@
+/* config.h
+
+ written by Marc Singer
+ 23 Jun 2006
+
+ Copyright (C) 2006 Marc Singer
+
+ -----------
+ DESCRIPTION
+ -----------
+
+*/
+
+#if !defined (__CONFIG_H__)
+# define __CONFIG_H__
+
+#define PHYS_PARAMS 0x00000100 /* Address for the parameter list */
+
+#define RAM_BANK0_START 0x00000000
+#define RAM_BANK0_LENGTH 0x02000000
+
+//#define RAM_BANK1_START 0xd0000000
+//#define RAM_BANK1_LENGTH 0x10000000
+
+#define COMMANDLINE\
+ "console=ttyS0,115200n8 root=/dev/mtdblock4 rootfstype=jffs2 init=/linuxrc rw noirqdebug"
+
+#define MACH_TYPE 597
+
+/* Uncomment one of these if you need to switch the CPU into a
+ specific mode. */
+//#define FORCE_LITTLEENDIAN
+//#define FORCE_BIGENDIAN
+
+#endif /* __CONFIG_H__ */
diff --git a/packages/arm-kernel-shim/files/passthrough-atags.patch b/packages/arm-kernel-shim/files/passthrough-atags.patch
new file mode 100644
index 0000000000..194279df89
--- /dev/null
+++ b/packages/arm-kernel-shim/files/passthrough-atags.patch
@@ -0,0 +1,20 @@
+--- arm-kernel-shim-1.3/main.c~ 2007-02-11 05:52:32.000000000 +1030
++++ arm-kernel-shim-1.3/main.c 2007-02-14 16:39:40.000000000 +1030
+@@ -100,6 +100,8 @@
+ : "+r" (offset)
+ :: "lr", "cc");
+
++#if !defined (PASSTHROUGH_ATAGS)
++
+ p = (struct tag*) PHYS_PARAMS;
+
+ /* Always start with the CORE tag */
+@@ -151,6 +153,8 @@
+ p->hdr.tag = ATAG_NONE;
+ p->hdr.size = 0;
+
++#endif
++
+ /* Pass control to the kernel */
+ boot (0, MACH_TYPE, PHYS_PARAMS);
+ }
diff --git a/packages/arpwatch/arpwatch_2.1a15.bb b/packages/arpwatch/arpwatch_2.1a15.bb
index 74e667c510..758c3c807f 100644
--- a/packages/arpwatch/arpwatch_2.1a15.bb
+++ b/packages/arpwatch/arpwatch_2.1a15.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www-nrg.ee.lbl.gov/"
SECTION = "network"
LICENSE = "BSD"
RRECOMMENDS = "arpwatch-data"
-PR = "r1"
+PR = "r2"
SRC_URI = "ftp://ftp.ee.lbl.gov/arpwatch-${PV}.tar.gz \
file://05debian_fhs.patch;patch=1 \
@@ -21,7 +21,7 @@ PACKAGES =+ "arpwatch-data"
FILES_arpwatch-data = "${datadir}/arpwatch/ethercodes.dat"
-do_install() {
+fakeroot do_install() {
install -d ${D}${bindir} ${D}${sbindir} ${D}${mandir}/man8 \
${D}${sysconfdir}/default \
${D}${sysconfdir}/init.d \
diff --git a/packages/aspell/aspell-0.50.5/makefile.patch b/packages/aspell/aspell-0.50.5/makefile.patch
deleted file mode 100644
index c16a32e3b9..0000000000
--- a/packages/aspell/aspell-0.50.5/makefile.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- aspell-0.50.5/common/Makefile.am~ 2002-11-05 00:24:14.000000000 +0000
-+++ aspell-0.50.5/common/Makefile.am 2004-06-27 14:33:37.000000000 +0100
-@@ -4,7 +4,7 @@
- pkgdatadir = @pkgdatadir@
- pkglibdir = @pkglibdir@
-
--noinst_PROGRAMS = mk-dirs_h
-+#noinst_PROGRAMS = mk-dirs_h
-
- dirs.h: mk-dirs_h
- echo '#define PREFIX "${prefix}"' > dirs.h
-@@ -12,7 +12,7 @@
- ./mk-dirs_h ${prefix} DATA_DIR ${pkgdatadir} >> dirs.h
- ./mk-dirs_h ${prefix} CONF_DIR ${sysconfdir} >> dirs.h
-
--mk_dirs_h_SOURCES = mk-dirs_h.cpp
-+#mk_dirs_h_SOURCES = mk-dirs_h.cpp
-
- config.cpp: dirs.h
-
diff --git a/packages/aspell/aspell-0.50.5/mk-dirs_h.py b/packages/aspell/aspell-0.50.5/mk-dirs_h.py
deleted file mode 100755
index a487751e81..0000000000
--- a/packages/aspell/aspell-0.50.5/mk-dirs_h.py
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-
-prefix=sys.argv[1]
-key=sys.argv[2]
-value=sys.argv[3]
-
-while prefix[-1] == '/':
- prefix = prefix[:-2]
-
-plen = len(prefix)
-
-if value[:plen] == prefix:
- value = value[plen:]
- while value[0] == '/':
- value = value[1:]
- print "#define " + key + " \"<prefix:" + value + ">\"\n"
-else:
- print "#define " + key + " \"" + value + "\"\n"
diff --git a/packages/aspell/aspell-lang.inc b/packages/aspell/aspell-lang.inc
index 709183b428..8c58136f0e 100644
--- a/packages/aspell/aspell-lang.inc
+++ b/packages/aspell/aspell-lang.inc
@@ -1,23 +1,20 @@
-FILES_${PN} = "/usr/lib/aspell/* /usr/share/aspell/*"
+FILES_${PN} = "/usr/lib/aspell* /usr/share/aspell*"
DEPENDS = "aspell-native"
do_configure() {
cd ${S}
- export dictdir=/usr/lib/aspell/
- export datadir=/usr/share/aspell/
- DESTDIR=${D} ./configure
+ DESTDIR=${D} ./configure --vars ASPELL=${STAGING_BINDIR_NATIVE}/aspell
}
do_compile() {
- export dictdir=/usr/lib/aspell/
- export datadir=/usr/share/aspell/
- dictdir=/usr/lib/aspell oe_runmake
+ sed -i -e "s|dictdir.*lib|dictdir = ${libdir}|" Makefile
+ sed -i -e "s|datadir.*lib|datadir = ${libdir}|" Makefile
+ oe_runmake
}
do_install() {
- export dictdir=/usr/lib/aspell/
- export datadir=/usr/share/aspell/
+ unset datadir
oe_runmake install
}
diff --git a/packages/aspell/aspell-native_0.50.5.bb b/packages/aspell/aspell-native_0.50.5.bb
deleted file mode 100644
index e87c6c6fd5..0000000000
--- a/packages/aspell/aspell-native_0.50.5.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SRC_URI = "ftp://ftp.gnu.org/gnu/aspell/aspell-${PV}.tar.gz \
- file://mk-dirs_h.py \
- file://makefile.patch;patch=1"
-DESCRIPTION = "GNU Aspell spell-checker"
-SECTION = "console/utils"
-LICENSE="LGPL"
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/aspell-${PV}"
-
-inherit autotools native
-
-S = "${WORKDIR}/aspell-${PV}"
-
-do_compile_prepend() {
- install ${WORKDIR}/mk-dirs_h.py ${S}/common/mk-dirs_h
-}
-
diff --git a/packages/aspell/aspell-native_0.60.5.bb b/packages/aspell/aspell-native_0.60.5.bb
new file mode 100644
index 0000000000..174821ce46
--- /dev/null
+++ b/packages/aspell/aspell-native_0.60.5.bb
@@ -0,0 +1,6 @@
+require aspell_${PV}.bb
+
+inherit native
+
+S = "${WORKDIR}/aspell-${PV}"
+
diff --git a/packages/aspell/aspell5-en_6.0-0.bb b/packages/aspell/aspell5-en_6.0-0.bb
deleted file mode 100644
index 568e692ab9..0000000000
--- a/packages/aspell/aspell5-en_6.0-0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-LICENSE = "Copyright file"
-SRC_URI = "ftp://ftp.gnu.org/gnu/aspell/dict/en/aspell5-en-${PV}.tar.bz2"
-PR="r1"
-
-require aspell-lang.inc
-
-FILES_${PN} += "${docdir}/Copyright"
-FILES_${PN}-doc = ""
-
-do_install_append() {
- install -d ${D}${docdir}
- install ${S}/Copyright ${D}${docdir}
-}
-
diff --git a/packages/aspell/aspell6-en_6.0-0.bb b/packages/aspell/aspell6-en_6.0-0.bb
new file mode 100644
index 0000000000..6c013eb546
--- /dev/null
+++ b/packages/aspell/aspell6-en_6.0-0.bb
@@ -0,0 +1,14 @@
+LICENSE = "Copyright file"
+SRC_URI = "ftp://ftp.gnu.org/gnu/aspell/dict/en/aspell6-en-${PV}.tar.bz2"
+PR="r1"
+
+require aspell-lang.inc
+
+FILES_${PN} += "${docdir}/Copyright"
+FILES_${PN}-doc = ""
+
+do_install_append() {
+ install -d ${D}${docdir}
+ install ${S}/Copyright ${D}${docdir}
+}
+
diff --git a/packages/aspell/aspell6-pl_6.0-20061121-0.bb b/packages/aspell/aspell6-pl_6.0-20061121-0.bb
new file mode 100644
index 0000000000..ef6802d2e8
--- /dev/null
+++ b/packages/aspell/aspell6-pl_6.0-20061121-0.bb
@@ -0,0 +1,17 @@
+LICENSE = "GPLv2"
+SRC_URI = "ftp://ftp.gnu.org/gnu/aspell/dict/pl/aspell6-pl-6.0_20061121-0.tar.bz2"
+PR="r1"
+
+require aspell-lang.inc
+
+S = "${WORKDIR}/aspell6-pl-6.0_20061121-0"
+
+FILES_${PN} += "${docdir}/Copyright"
+FILES_${PN}-doc = ""
+
+do_install_append() {
+ install -d ${D}${docdir}
+ install ${S}/Copyright ${D}${docdir}
+}
+
+
diff --git a/packages/aspell/aspell_0.50.5.bb b/packages/aspell/aspell_0.50.5.bb
deleted file mode 100644
index 8b8c5e779b..0000000000
--- a/packages/aspell/aspell_0.50.5.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SRC_URI = "ftp://ftp.gnu.org/gnu/aspell/aspell-${PV}.tar.gz \
- file://mk-dirs_h.py \
- file://makefile.patch;patch=1"
-DESCRIPTION = "GNU Aspell spell-checker"
-SECTION = "console/utils"
-LICENSE="LGPL"
-
-PACKAGES =+ "libaspell libpspell libpspell-dev aspell-utils"
-
-FILES_libaspell = "${libdir}/libaspell.so.* ${datadir}/aspell"
-FILES_aspell-utils = "${bindir}/word-list-compress ${bindir}/aspell-import ${bindir}/run-with-aspell"
-FILES_${PN} = "${bindir}/aspell"
-FILES_libpspell = "${libdir}/libpspell.so.*"
-FILES_libpspell-dev = "${libdir}/libpspell* ${bindir}/pspell-config ${includedir}/pspell"
-
-inherit autotools
-
-do_compile_prepend() {
- install ${WORKDIR}/mk-dirs_h.py ${S}/common/mk-dirs_h
-}
-
-do_stage() {
- oe_libinstall -C lib -so libaspell ${STAGING_LIBDIR}
- install -m 0644 interfaces/cc/aspell.h ${STAGING_INCDIR}
- oe_libinstall -C lib -so libpspell ${STAGING_LIBDIR}
- install -d ${STAGING_INCDIR}/pspell
- install -m 0644 interfaces/cc/pspell.h ${STAGING_INCDIR}/pspell
-}
diff --git a/packages/aspell/aspell_0.60.5.bb b/packages/aspell/aspell_0.60.5.bb
new file mode 100644
index 0000000000..66b21f9e52
--- /dev/null
+++ b/packages/aspell/aspell_0.60.5.bb
@@ -0,0 +1,19 @@
+SRC_URI = "ftp://ftp.gnu.org/gnu/aspell/aspell-${PV}.tar.gz"
+DESCRIPTION = "GNU Aspell spell-checker"
+SECTION = "console/utils"
+LICENSE="LGPL"
+
+PACKAGES += "libaspell libpspell libpspell-dev aspell-utils"
+
+FILES_${PN}-dbg += "${libdir}/aspell-0.60/.debu*"
+FILES_libaspell = "${libdir}/libaspell.so.* ${libdir}/aspell*"
+FILES_aspell-utils = "${bindir}/word-list-compress ${bindir}/aspell-import ${bindir}/run-with-aspell ${bindir}/pre*"
+FILES_${PN} = "${bindir}/aspell"
+FILES_libpspell = "${libdir}/libpspell.so.*"
+FILES_libpspell-dev = "${libdir}/libpspell* ${bindir}/pspell-config ${includedir}/pspell"
+
+inherit autotools
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/asterisk/asterisk-1.0.9/gsm.patch b/packages/asterisk/asterisk-1.0.9/gsm.patch
deleted file mode 100644
index c59aa80bba..0000000000
--- a/packages/asterisk/asterisk-1.0.9/gsm.patch
+++ /dev/null
@@ -1,71 +0,0 @@
---- asterisk-1.0.9.org/codecs/gsm/Makefile 2005-06-21 16:27:28.000000000 +0200
-+++ asterisk-1.0.9/codecs/gsm/Makefile 2005-08-14 21:47:10.000000000 +0200
-@@ -37,26 +37,6 @@
- ######### ppro's, etc, as well as the AMD K6 and K7. The compile will
- ######### probably require gcc.
-
--ifneq (${OSARCH},Darwin)
--ifneq (${PROC},x86_64)
--ifneq (${PROC},ultrasparc)
--ifneq ($(shell uname -m),ppc)
--ifneq ($(shell uname -m),alpha)
--ifneq ($(shell uname -m),armv4l)
--ifneq (${PROC},sparc64)
--ifneq (${PROC},ppc)
--ifneq (${PROC},ppc64)
--OPTIMIZE+=-march=$(PROC)
--endif
--endif
--endif
--endif
--endif
--endif
--endif
--endif
--endif
--
- #The problem with sparc is the best stuff is in newer versions of gcc (post 3.0) only.
- #This works for even old (2.96) versions of gcc and provides a small boost either way.
- #A ultrasparc cpu is really v9 but the stock debian stable 3.0 gcc doesn't support it.
-@@ -218,19 +198,6 @@
- $(SRC)/gsm_option.c \
- $(SRC)/short_term.c \
- $(SRC)/table.c
--ifeq (${OSARCH},Linux)
--ifneq ($(shell uname -m),x86_64)
--ifneq ($(shell uname -m),ppc)
--ifneq ($(shell uname -m),alpha)
--ifneq ($(shell uname -m),armv4l)
--ifneq ($(shell uname -m),sparc64)
--GSM_SOURCES+= $(SRC)/k6opt.s
--endif
--endif
--endif
--endif
--endif
--endif
-
- TOAST_SOURCES = $(SRC)/toast.c \
- $(SRC)/toast_lin.c \
-@@ -276,20 +243,6 @@
- $(SRC)/short_term.o \
- $(SRC)/table.o
-
--ifeq (${OSARCH},Linux)
--ifneq ($(shell uname -m), x86_64)
--ifneq ($(shell uname -m), ppc)
--ifneq ($(shell uname -m), alpha)
--ifneq ($(shell uname -m), armv4l)
--ifneq ($(shell uname -m), sparc64)
--GSM_OBJECTS+= $(SRC)/k6opt.o
--endif
--endif
--endif
--endif
--endif
--endif
--
- TOAST_OBJECTS = $(SRC)/toast.o \
- $(SRC)/toast_lin.o \
- $(SRC)/toast_ulaw.o \
-
diff --git a/packages/asterisk/asterisk-1.0.9/makefile.patch b/packages/asterisk/asterisk-1.0.9/makefile.patch
deleted file mode 100644
index 6684d8696e..0000000000
--- a/packages/asterisk/asterisk-1.0.9/makefile.patch
+++ /dev/null
@@ -1,311 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- asterisk-1.0.7/Makefile~makefile.patch
-+++ asterisk-1.0.7/Makefile
-@@ -127,64 +127,67 @@
- AGI_DIR=$(ASTVARLIBDIR)/agi-bin
-
- INCLUDE=-Iinclude -I../include
--CFLAGS=-pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG) $(INCLUDE) -D_REENTRANT -D_GNU_SOURCE #-DMAKE_VALGRIND_HAPPY
--CFLAGS+=$(OPTIMIZE)
-+my_CFLAGS=-pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG) $(INCLUDE) -D_REENTRANT -D_GNU_SOURCE #-DMAKE_VALGRIND_HAPPY
-+my_CFLAGS+=$(OPTIMIZE)
-
- ifneq ($(PROC),ultrasparc)
--CFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
-+my_CFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
- endif
-
--CFLAGS+=$(shell if uname -m | grep -q ppc; then echo "-fsigned-char"; fi)
--CFLAGS+=$(shell if [ -f /usr/include/osp/osp.h ]; then echo "-DOSP_SUPPORT -I/usr/include/osp" ; fi)
-+my_CFLAGS+=$(shell if uname -m | grep -q ppc; then echo "-fsigned-char"; fi)
-+my_CFLAGS+=$(shell if [ -f /usr/include/osp/osp.h ]; then echo "-DOSP_SUPPORT -I/usr/include/osp" ; fi)
-
- ifeq (${OSARCH},FreeBSD)
- OSVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
--CFLAGS+=$(shell if test ${OSVERSION} -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)
-+my_CFLAGS+=$(shell if test ${OSVERSION} -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)
- LIBS+=$(shell if test ${OSVERSION} -lt 502102 ; then echo "-lc_r"; else echo "-pthread"; fi)
- INCLUDE+=-I/usr/local/include
--CFLAGS+=$(shell if [ -d /usr/local/include/spandsp ]; then echo "-I/usr/local/include/spandsp"; fi)
-+my_CFLAGS+=$(shell if [ -d /usr/local/include/spandsp ]; then echo "-I/usr/local/include/spandsp"; fi)
- MPG123TARG=freebsd
- endif # FreeBSD
-
- ifeq (${OSARCH},NetBSD)
--CFLAGS+=-pthread
-+my_CFLAGS+=-pthread
- INCLUDE+=-I/usr/local/include -I/usr/pkg/include
- MPG123TARG=netbsd
- endif
-
- ifeq (${OSARCH},OpenBSD)
--CFLAGS+=-pthread
-+my_CFLAGS+=-pthread
- endif
-
- #Uncomment this to use the older DSP routines
- #CFLAGS+=-DOLD_DSP_ROUTINES
-
--CFLAGS+=$(shell if [ -f /usr/include/linux/zaptel.h ]; then echo "-DZAPTEL_OPTIMIZATIONS"; fi)
--CFLAGS+=$(shell if [ -f /usr/local/include/zaptel.h ]; then echo "-DZAPTEL_OPTIMIZATIONS"; fi)
-+my_CFLAGS+=$(shell if [ -f /usr/include/linux/zaptel.h ]; then echo "-DZAPTEL_OPTIMIZATIONS"; fi)
-+my_CFLAGS+=$(shell if [ -f /usr/local/include/zaptel.h ]; then echo "-DZAPTEL_OPTIMIZATIONS"; fi)
-
- LIBEDIT=editline/libedit.a
-
- ASTERISKVERSION=$(shell if [ -f .version ]; then cat .version; else if [ -d CVS ]; then if [ -f CVS/Tag ] ; then echo "CVS-`sed 's/^T//g' CVS/Tag`-`date +"%D-%T"`"; else echo "CVS-HEAD-`date +"%D-%T"`"; fi; fi; fi)
- HTTPDIR=$(shell if [ -d /var/www ]; then echo "/var/www"; else echo "/home/httpd"; fi)
- RPMVERSION=$(shell if [ -f .version ]; then sed 's/[-\/:]/_/g' .version; else echo "unknown" ; fi)
--CFLAGS+=-DASTERISK_VERSION=\"$(ASTERISKVERSION)\"
--CFLAGS+=-DINSTALL_PREFIX=\"$(INSTALL_PREFIX)\"
--CFLAGS+=-DASTETCDIR=\"$(ASTETCDIR)\"
--CFLAGS+=-DASTLIBDIR=\"$(ASTLIBDIR)\"
--CFLAGS+=-DASTVARLIBDIR=\"$(ASTVARLIBDIR)\"
--CFLAGS+=-DASTVARRUNDIR=\"$(ASTVARRUNDIR)\"
--CFLAGS+=-DASTSPOOLDIR=\"$(ASTSPOOLDIR)\"
--CFLAGS+=-DASTLOGDIR=\"$(ASTLOGDIR)\"
--CFLAGS+=-DASTCONFPATH=\"$(ASTCONFPATH)\"
--CFLAGS+=-DASTMODDIR=\"$(MODULES_DIR)\"
--CFLAGS+=-DASTAGIDIR=\"$(AGI_DIR)\"
-+my_CFLAGS+=-DASTERISK_VERSION=\"$(ASTERISKVERSION)\"
-+my_CFLAGS+=-DINSTALL_PREFIX=\"$(INSTALL_PREFIX)\"
-+my_CFLAGS+=-DASTETCDIR=\"$(ASTETCDIR)\"
-+my_CFLAGS+=-DASTLIBDIR=\"$(ASTLIBDIR)\"
-+my_CFLAGS+=-DASTVARLIBDIR=\"$(ASTVARLIBDIR)\"
-+my_CFLAGS+=-DASTVARRUNDIR=\"$(ASTVARRUNDIR)\"
-+my_CFLAGS+=-DASTSPOOLDIR=\"$(ASTSPOOLDIR)\"
-+my_CFLAGS+=-DASTLOGDIR=\"$(ASTLOGDIR)\"
-+my_CFLAGS+=-DASTCONFPATH=\"$(ASTCONFPATH)\"
-+my_CFLAGS+=-DASTMODDIR=\"$(MODULES_DIR)\"
-+my_CFLAGS+=-DASTAGIDIR=\"$(AGI_DIR)\"
-+
-+my_CFLAGS+= $(DEBUG_THREADS)
-+my_CFLAGS+= $(TRACE_FRAMES)
-+my_CFLAGS+= $(MALLOC_DEBUG)
-+my_CFLAGS+= $(BUSYDETECT)
-+my_CFLAGS+= $(OPTIONS)
-+my_CFLAGS+=# -fomit-frame-pointer
-+
-+override CFLAGS += $(my_CFLAGS)
-
--CFLAGS+= $(DEBUG_THREADS)
--CFLAGS+= $(TRACE_FRAMES)
--CFLAGS+= $(MALLOC_DEBUG)
--CFLAGS+= $(BUSYDETECT)
--CFLAGS+= $(OPTIONS)
--CFLAGS+=# -fomit-frame-pointer
- SUBDIRS=res channels pbx apps codecs formats agi cdr astman stdtime
- ifeq (${OSARCH},Linux)
- LIBS=-ldl -lpthread
-@@ -296,7 +299,7 @@
- fi
-
- asterisk: editline/libedit.a db1-ast/libdb1.a stdtime/libtime.a $(OBJS)
-- $(CC) $(DEBUG) -o asterisk $(ASTLINK) $(OBJS) $(LIBEDIT) db1-ast/libdb1.a stdtime/libtime.a $(LIBS)
-+ $(CC) $(DEBUG) -o asterisk $(ASTLINK) $(OBJS) $(LIBEDIT) db1-ast/libdb1.a stdtime/libtime.a $(LDFLAGS) $(LIBS)
-
- muted: muted.o
- $(CC) -o muted muted.o
---- asterisk-1.0.7/res/Makefile~makefile.patch
-+++ asterisk-1.0.7/res/Makefile
-@@ -13,15 +13,13 @@
-
- MODS=res_adsi.so res_features.so res_crypto.so res_musiconhold.so res_indications.so res_monitor.so \
- res_agi.so
--MODS+=$(shell if [ -f "/usr/include/odbcinst.h" ]; then echo "res_odbc.so res_config_odbc.so"; fi)
--MODS+=$(shell if [ -f "/usr/local/include/odbcinst.h" ]; then echo "res_odbc.so res_config_odbc.so"; fi)
--MODS+=$(shell if [ -f "/usr/include/osp/osp.h" ]; then echo "res_osp.so"; fi)
-+MODS+=$(shell if [ -f "${STAGING_INCDIR}/odbcinst.h" ]; then echo "res_odbc.so res_config_odbc.so"; fi)
-+MODS+=$(shell if [ -f "${STAGING_INCDIR}/osp/osp.h" ]; then echo "res_osp.so"; fi)
-
- CRYPTO_LIBS=-lssl -lcrypto
-
- CFLAGS+=
--CFLAGS+=$(shell [ -f /usr/include/linux/zaptel.h ] && echo " -DZAPATA_MOH")
--CFLAGS+=$(shell [ -f /usr/local/include/zaptel.h ] && echo " -DZAPATA_MOH")
-+CFLAGS+=$(shell [ -f ${STAGING_INCDIR}/linux/zaptel.h ] && echo " -DZAPATA_MOH")
- #
- # Work around buggy RedHat 9.0
- #
-@@ -37,7 +35,7 @@
- for x in $(MODS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
-
- res_crypto.so: res_crypto.o
-- $(CC) $(SOLINK) -o $@ $< $(CRYPTO_LIBS)
-+ $(CC) $(SOLINK) -o $@ $< $(LDFLAGS) $(CRYPTO_LIBS)
-
- clean:
- rm -f *.so *.o .depend
---- asterisk-1.0.7/channels/Makefile~makefile.patch
-+++ asterisk-1.0.7/channels/Makefile
-@@ -71,22 +71,20 @@
- CHANNEL_LIBS+=chan_oss.so
- endif
-
--CHANNEL_LIBS+=$(shell [ -f /usr/include/linux/ixjuser.h ] && echo chan_phone.so)
--CHANNEL_LIBS+=$(shell [ -f /usr/local/include/ixjuser.h ] && echo chan_phone.so)
-+CHANNEL_LIBS+=$(shell [ -f ${STAGING_INCDIR}/linux/ixjuser.h ] && echo chan_phone.so)
- CHANNEL_LIBS+=$(shell [ -f h323/libchanh323.a ] && echo chan_h323.so)
-
- CFLAGS+=-Wno-missing-prototypes -Wno-missing-declarations
--CFLAGS+=$(shell [ ! -f /usr/include/linux/if_wanpipe.h ] && echo " -DOLD_SANGOMA_API")
--CHANNEL_LIBS+=$(shell [ -f /usr/include/alsa/asoundlib.h ] && echo "chan_alsa.so")
--CFLAGS+=$(shell [ -f /usr/lib/libpri.so.1 ] && echo " -DZAPATA_PRI")
--CFLAGS+=$(shell [ -f /usr/lib/libmfcr2.so.1 ] && echo " -DZAPATA_R2")
-+CFLAGS+=$(shell [ ! -f ${STAGING_INCDIR}/linux/if_wanpipe.h ] && echo " -DOLD_SANGOMA_API")
-+CHANNEL_LIBS+=$(shell [ -f ${STAGING_INCDIR}/alsa/asoundlib.h ] && echo "chan_alsa.so")
-+CFLAGS+=$(shell [ -f ${STAGING_LIBDIR}/libpri.so.1 ] && echo " -DZAPATA_PRI")
-+CFLAGS+=$(shell [ -f ${STAGING_LIBDIR}/libmfcr2.so.1 ] && echo " -DZAPATA_R2")
- CFLAGS+=$(shell [ -f alsa-monitor.h ] && echo " -DALSA_MONITOR")
--ZAPPRI=$(shell [ -f /usr/lib/libpri.so.1 ] && echo "-lpri")
--ZAPR2=$(shell [ -f /usr/lib/libmfcr2.so.1 ] && echo "-lmfcr2")
--CFLAGS+=$(shell [ -f /usr/include/linux/zaptel.h ] && echo "-DIAX_TRUNKING")
--CFLAGS+=$(shell [ -f /usr/local/include/zaptel.h ] && echo "-DIAX_TRUNKING")
--CHANNEL_LIBS+=$(shell [ -f /usr/include/vpbapi.h ] && echo "chan_vpb.so" )
--CFLAGS+=$(shell [ -f /usr/include/vpbapi.h ] && echo " -DLINUX")
-+ZAPPRI=$(shell [ -f ${STAGING_LIBDIR}/libpri.so.1 ] && echo "-lpri")
-+ZAPR2=$(shell [ -f ${STAGING_LIBDIR}/libmfcr2.so.1 ] && echo "-lmfcr2")
-+CFLAGS+=$(shell [ -f ${STAGING_INCDIR}/linux/zaptel.h ] && echo "-DIAX_TRUNKING")
-+CHANNEL_LIBS+=$(shell [ -f ${STAGING_INCDIR}/vpbapi.h ] && echo "chan_vpb.so" )
-+CFLAGS+=$(shell [ -f ${STAGING_INCDIR}/vpbapi.h ] && echo " -DLINUX")
-
- ALSA_SRC=chan_alsa.c
- ALSA_SRC+=$(shell [ -f alsa-monitor.h ] && echo "alsa-monitor.h")
-@@ -106,10 +104,9 @@
-
- ZAPDIR=/usr/lib
-
--CHANNEL_LIBS+=$(shell [ -f /usr/include/linux/zaptel.h ] && echo "chan_zap.so")
--CHANNEL_LIBS+=$(shell [ -f /usr/local/include/zaptel.h ] && echo "chan_zap.so")
-+CHANNEL_LIBS+=$(shell [ -f ${STAGING_INCDIR}/linux/zaptel.h ] && echo "chan_zap.so")
-
--CHANNEL_LIBS+=$(shell [ -f /usr/include/nbs.h ] && echo "chan_nbs.so" )
-+CHANNEL_LIBS+=$(shell [ -f ${STAGING_INCDIR}/nbs.h ] && echo "chan_nbs.so" )
-
- ifndef OPENH323DIR
- OPENH323DIR=$(HOME)/openh323
-@@ -135,10 +132,10 @@
- endif
-
- gentone: gentone.c
-- $(CC) -o gentone gentone.c -lm
-+ $(BUILD_CC) -o gentone gentone.c -lm
-
- gentone-ulaw: gentone-ulaw.c
-- $(CC) -o gentone-ulaw gentone-ulaw.c -lm
-+ $(BUILD_CC) -o gentone-ulaw gentone-ulaw.c -lm
-
- busy.h: gentone
- ./gentone busy 480 620
---- asterisk-1.0.7/pbx/Makefile~makefile.patch
-+++ asterisk-1.0.7/pbx/Makefile
-@@ -16,7 +16,7 @@
- PBX_LIBS=pbx_config.so pbx_wilcalu.so pbx_spool.so # pbx_gtkconsole.so pbx_kdeconsole.so
-
- # Add GTK console if appropriate
--PBX_LIBS+=$(shell gtk-config --cflags >/dev/null 2>/dev/null && echo "pbx_gtkconsole.so")
-+PBX_LIBS+=$(shell ${STAGING_BINDIR_CROSS}/gtk-config --cflags >/dev/null 2>/dev/null && echo "pbx_gtkconsole.so")
- # Add KDE Console if appropriate
- #PBX_LIBS+=$(shell [ "$$QTDIR" != "" ] && echo "pbx_kdeconsole.so")
-
---- asterisk-1.0.7/codecs/lpc10/Makefile~makefile.patch
-+++ asterisk-1.0.7/codecs/lpc10/Makefile
-@@ -25,28 +25,6 @@
- CFLAGS += $(OPTIMIZE) -I$(LIB_TARGET_DIR) $(WARNINGS) -fPIC
- #CFLAGS+= $(shell if uname -m | grep -q 86; then echo "-mpentium" ; fi)
-
--#fix for PPC processors and ALPHA, And UltraSparc too
--ifneq ($(OSARCH),Darwin)
--ifneq ($(findstring BSD,${OSARCH}),BSD)
--ifneq ($(PROC),ppc)
--ifneq ($(PROC),x86_64)
--ifneq ($(PROC),alpha)
--#The problem with sparc is the best stuff is in newer versions of gcc (post 3.0) only.
--#This works for even old (2.96) versions of gcc and provides a small boost either way.
--#A ultrasparc cpu is really v9 but the stock debian stable 3.0 gcc doesn.t support it.
--#So we go lowest common available by gcc and go a step down, still a step up from
--#the default as we now have a better instruction set to work with. - Belgarath
--ifeq ($(PROC),ultrasparc)
-- CFLAGS+= -mtune=$(PROC) -mcpu=v8 -O3 -fomit-frame-pointer
--else
-- CFLAGS+= -march=$(PROC)
--endif
--endif
--endif
--endif
--endif
--endif
--
- LIB = $(LIB_TARGET_DIR)/liblpc10.a
-
- .PHONY: all clean
---- asterisk-1.0.7/cdr/Makefile~makefile.patch
-+++ asterisk-1.0.7/cdr/Makefile
-@@ -37,36 +37,25 @@
- #
- # unixODBC stuff...
- #
--MODS+=$(shell if [ -f "/usr/include/odbcinst.h" ]; then echo "cdr_odbc.so"; fi)
--MODS+=$(shell if [ -f "/usr/local/include/odbcinst.h" ]; then echo "cdr_odbc.so"; fi)
-+MODS+=$(shell if [ -f "${STAGING_INCDIR}/odbcinst.h" ]; then echo "cdr_odbc.so"; fi)
-
- #
- # FreeTDS stuff...
- #
--MODS+=$(shell if [ -f "/usr/include/tds.h" ]; then echo "cdr_tds.so"; fi)
--MODS+=$(shell if [ -f "/usr/local/include/tds.h" ]; then echo "cdr_tds.so"; fi)
-+MODS+=$(shell if [ -f "${STAGING_INCDIR}/tds.h" ]; then echo "cdr_tds.so"; fi)
-
- #
- # PGSQL stuff... Autoconf anyone??
- #
--MODS+=$(shell if [ -d /usr/local/pgsql/include ] || [ -d /usr/include/pgsql ] || [ -d /usr/local/include/pgsql ] || [ -d /opt/pgsql/include ] || [ -f /usr/include/libpq-fe.h ] ; then echo "cdr_pgsql.so"; fi)
--CFLAGS+=$(shell if [ -d /usr/local/pgsql/include ]; then echo "-I/usr/local/pgsql/include"; fi)
--CFLAGS+=$(shell if [ -d /usr/include/pgsql ]; then echo "-I/usr/include/pgsql"; fi)
--CFLAGS+=$(shell if [ -d /usr/include/postgresql ]; then echo "-I/usr/include/postgresql"; fi)
--CFLAGS+=$(shell if [ -d /usr/local/include/pgsql ]; then echo "-I/usr/local/include/pgsql"; fi)
--CFLAGS+=$(shell if [ -d /opt/pgsql/include ]; then echo "-I/opt/pgsql/include"; fi)
--#CFLAGS+=$(shell if [ -f /usr/include/libpq-fe.h ]; then echo "-I/usr/include"; fi)
-+CFLAGS+=$(shell if [ -d ${STAGING_INCDIR}/pgsql ]; then echo "-I${STAGING_INCDIR}/pgsql"; fi)
-+CFLAGS+=$(shell if [ -d ${STAGING_INCDIR}/postgresql ]; then echo "-I${STAGING_INCDIR}/postgresql"; fi)
- MLFLAGS=
--MLFLAGS+=$(shell if [ -d /usr/lib/pgsql ]; then echo "-L/usr/lib/pgsql"; fi)
--MLFLAGS+=$(shell if [ -d /usr/local/pgsql/lib ]; then echo "-L/usr/local/pgsql/lib"; fi)
--MLFLAGS+=$(shell if [ -d /usr/local/lib/pgsql ]; then echo "-L/usr/local/lib/pgsql"; fi)
--MLFLAGS+=$(shell if [ -d /opt/pgsql/lib ]; then echo "-L/opt/pgsql/lib"; fi)
--MLFLAGS+=$(shell if [ -f /usr/lib/libpq.so ]; then echo "-L/usr/lib"; fi)
-+MLFLAGS+=$(shell if [ -d ${STAGING_LIBDIR}/pgsql ]; then echo "-L${STAGING_LIBDIR}/pgsql"; fi)
-
- #
- # SQLIte stuff...
- #
--MODS+=$(shell if [ -f "/usr/include/sqlite.h" ]; then echo "cdr_sqlite.so"; fi)
-+MODS+=$(shell if [ -f "${STAGING_INCDIR}/sqlite.h" ]; then echo "cdr_sqlite.so"; fi)
-
- all: depend $(MODS)
-
-@@ -84,16 +73,16 @@
- endif
-
- cdr_odbc.so: cdr_odbc.o
-- $(CC) $(SOLINK) -o $@ $< -lodbc $(MLFLAGS)
-+ $(CC) $(SOLINK) -o $@ $< -lodbc $(LDFLAGS) $$(MLFLAGS)
-
- cdr_tds.so: cdr_tds.o
-- $(CC) $(SOLINK) -o $@ $< -ltds $(MLFLAGS)
-+ $(CC) $(SOLINK) -o $@ $< -ltds $(LDFLAGS) $$(MLFLAGS)
-
- cdr_pgsql.so: cdr_pgsql.o
-- $(CC) $(SOLINK) -o $@ $< -lpq -lz $(MLFLAGS)
-+ $(CC) $(SOLINK) -o $@ $< -lpq -lz $(LDFLAGS) $$(MLFLAGS)
-
- cdr_sqlite.so: cdr_sqlite.o
-- $(CC) $(SOLINK) -o $@ $< -lsqlite $(MLFLAGS)
-+ $(CC) $(SOLINK) -o $@ $< -lsqlite $(LDFLAGS) $(MLFLAGS)
-
- depend: .depend
-
diff --git a/packages/altboot/files/tosa/.mtn2git_empty b/packages/asterisk/asterisk-1.2.14/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/altboot/files/tosa/.mtn2git_empty
+++ b/packages/asterisk/asterisk-1.2.14/.mtn2git_empty
diff --git a/packages/asterisk/asterisk-1.2.12.1/asterisk.patch b/packages/asterisk/asterisk-1.2.14/asterisk.patch
index 006b8e9291..006b8e9291 100644
--- a/packages/asterisk/asterisk-1.2.12.1/asterisk.patch
+++ b/packages/asterisk/asterisk-1.2.14/asterisk.patch
diff --git a/packages/asterisk/asterisk-1.2.12.1/uclibc-compat-getloadavg.patch b/packages/asterisk/asterisk-1.2.14/uclibc-compat-getloadavg.patch
index a909513b1c..a909513b1c 100644
--- a/packages/asterisk/asterisk-1.2.12.1/uclibc-compat-getloadavg.patch
+++ b/packages/asterisk/asterisk-1.2.14/uclibc-compat-getloadavg.patch
diff --git a/packages/asterisk/asterisk-1.2.12.1/uclibc-dsn.patch b/packages/asterisk/asterisk-1.2.14/uclibc-dsn.patch
index 23657bcc76..23657bcc76 100644
--- a/packages/asterisk/asterisk-1.2.12.1/uclibc-dsn.patch
+++ b/packages/asterisk/asterisk-1.2.14/uclibc-dsn.patch
diff --git a/packages/aspell/aspell-0.50.5/.mtn2git_empty b/packages/asterisk/asterisk-1.2.16/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/aspell/aspell-0.50.5/.mtn2git_empty
+++ b/packages/asterisk/asterisk-1.2.16/.mtn2git_empty
diff --git a/packages/asterisk/asterisk-1.2.16/asterisk.patch b/packages/asterisk/asterisk-1.2.16/asterisk.patch
new file mode 100644
index 0000000000..006b8e9291
--- /dev/null
+++ b/packages/asterisk/asterisk-1.2.16/asterisk.patch
@@ -0,0 +1,221 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- asterisk-1.2.9.1/./Makefile~asterisk
++++ asterisk-1.2.9.1/./Makefile
+@@ -331,7 +331,7 @@
+ ASTCFLAGS+= $(TRACE_FRAMES)
+ ASTCFLAGS+= $(MALLOC_DEBUG)
+ ASTCFLAGS+= $(BUSYDETECT)
+-ASTCFLAGS+= $(OPTIONS)
++#ASTCFLAGS+= $(OPTIONS)
+ ifneq ($(findstring dont-optimize,$(MAKECMDGOALS)),dont-optimize)
+ ASTCFLAGS+= -fomit-frame-pointer
+ endif
+@@ -347,12 +347,12 @@
+ netsock.o slinfactory.o ast_expr2.o ast_expr2f.o \
+ cryptostub.o
+
+-ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/sys/poll.h),)
++ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/include/sys/poll.h),)
+ OBJS+= poll.o
+ ASTCFLAGS+=-DPOLLCOMPAT
+ endif
+
+-ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/dlfcn.h),)
++ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/include/dlfcn.h),)
+ OBJS+= dlfcn.o
+ ASTCFLAGS+=-DDLFCNCOMPAT
+ endif
+@@ -397,7 +397,7 @@
+ endif
+
+ ifeq ($(MAKETOPLEVEL),$(MAKELEVEL))
+- CFLAGS+=$(ASTCFLAGS)
++override CFLAGS+=$(ASTCFLAGS)
+ endif
+
+ # This is used when generating the doxygen documentation
+@@ -519,7 +519,7 @@
+ fi
+ rm -f include/asterisk/build.h.tmp
+ $(CC) -c -o buildinfo.o $(CFLAGS) buildinfo.c
+- $(CC) $(DEBUG) $(ASTOBJ) $(ASTLINK) $(OBJS) buildinfo.o $(LIBEDIT) db1-ast/libdb1.a stdtime/libtime.a $(LIBS)
++ $(CC) $(DEBUG) $(ASTOBJ) $(ASTLINK) $(OBJS) buildinfo.o $(LIBEDIT) db1-ast/libdb1.a stdtime/libtime.a $(LDFLAGS) $(LIBS)
+
+ muted: muted.o
+ $(CC) $(AUDIO_LIBS) -o muted muted.o
+--- asterisk-1.2.9.1/codecs/gsm/Makefile~asterisk
++++ asterisk-1.2.9.1/codecs/gsm/Makefile
+@@ -51,7 +51,7 @@
+ ifneq (${PROC},ppc)
+ ifneq (${PROC},ppc64)
+ ifneq (${PROC},s390)
+-OPTIMIZE+=-march=$(PROC)
++#OPTIMIZE+=-march=$(PROC)
+ endif
+ endif
+ endif
+@@ -243,7 +243,7 @@
+ ifneq (${PROC},arm)
+ ifneq ($(shell uname -m), parisc)
+ ifneq ($(shell uname -m),s390)
+-GSM_SOURCES+= $(SRC)/k6opt.s
++#GSM_SOURCES+= $(SRC)/k6opt.s
+ endif
+ endif
+ endif
+@@ -309,7 +309,7 @@
+ ifneq ($(shell uname -m), armv4l)
+ ifneq ($(shell uname -m), parisc)
+ ifneq ($(shell uname -m),s390)
+-GSM_OBJECTS+= $(SRC)/k6opt.o
++#GSM_OBJECTS+= $(SRC)/k6opt.o
+ endif
+ endif
+ endif
+--- asterisk-1.2.9.1/res/Makefile~asterisk
++++ asterisk-1.2.9.1/res/Makefile
+@@ -89,7 +89,7 @@
+ fi
+
+ res_crypto.so: res_crypto.o
+- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(CRYPTO_LIBS)
++ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< $(LDFLAGS) ${CYGSOLIB} $(CRYPTO_LIBS)
+
+ clean:
+ rm -f *.so *.o .depend
+--- asterisk-1.2.9.1/channels/Makefile~asterisk
++++ asterisk-1.2.9.1/channels/Makefile
+@@ -73,7 +73,7 @@
+ SOLINK+=-lrt
+ endif
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/linux/ixjuser.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/ixjuser.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/linux/ixjuser.h),)
+ CHANNEL_LIBS+=chan_phone.so
+ endif
+
+@@ -88,16 +88,16 @@
+
+ CFLAGS+=-Wno-missing-prototypes -Wno-missing-declarations
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/alsa/asoundlib.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/alsa/asoundlib.h),)
+ CHANNEL_LIBS+=chan_alsa.so
+ endif
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/libpri.so.1)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/lib/libpri.so.1),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/lib/libpri.so.1),)
+ CFLAGS+=-DZAPATA_PRI
+ ZAPPRI=-lpri
+ endif
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/libmfcr2.so.1)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/lib/libmfcr2.so.1),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/lib/libmfcr2.so.1),)
+ CFLAGS+=-DZAPATA_R2
+ ZAPR2=-lmfcr2
+ endif
+@@ -110,7 +110,7 @@
+ endif
+
+ ifndef WITHOUT_ZAPTEL
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/linux/zaptel.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/zaptel.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/pkg/include/zaptel.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/linux/zaptel.h),)
+ ifeq (${OSARCH},NetBSD)
+ SOLINK+=-L$(CROSS_COMPILE_TARGET)/usr/pkg/lib
+ endif
+@@ -122,7 +122,7 @@
+ endif
+ endif # WITHOUT_ZAPTEL
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/vpbapi.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/vpbapi.h),)
+ CHANNEL_LIBS+=chan_vpb.so
+ CFLAGS+=-DLINUX
+ endif
+@@ -137,7 +137,7 @@
+
+ ZAPDIR=/usr/lib
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/nbs.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/nbs.h),)
+ CHANNEL_LIBS+=chan_nbs.so
+ endif
+
+@@ -158,7 +158,7 @@
+ rm -f busy.h ringtone.h gentone gentone-ulaw
+
+ %.so : %.o
+- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} ${LIBS}
++ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< $(LDFLAGS) ${CYGSOLIB} ${LIBS}
+
+ ifneq ($(wildcard .depend),)
+ include .depend
+@@ -215,7 +215,7 @@
+ chan_alsa.o: $(ALSA_SRC)
+
+ chan_alsa.so: chan_alsa.o
+- $(CC) $(SOLINK) -o $@ $< -lasound -lm -ldl
++ $(CC) $(SOLINK) -o $@ $< -lasound -lm -ldl $(LDFLAGS)
+
+ chan_nbs.so: chan_nbs.o
+ $(CC) $(SOLINK) -o $@ $< -lnbs
+--- asterisk-1.2.9.1/pbx/Makefile~asterisk
++++ asterisk-1.2.9.1/pbx/Makefile
+@@ -59,7 +59,7 @@
+ $(CC) $(SOLINK) -o $@ $(KDE_CONSOLE_OBJS) $(KDE_LIBS)
+
+ pbx_dundi.so: dundi-parser.o pbx_dundi.o
+- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} pbx_dundi.o dundi-parser.o -lz ${CYGSOLIB}
++ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} pbx_dundi.o dundi-parser.o -lz ${CYGSOLIB} $(LDFLAGS)
+
+ %.moc : %.h
+ $(MOC) $< -o $@
+--- asterisk-1.2.9.1/formats/Makefile~asterisk
++++ asterisk-1.2.9.1/formats/Makefile
+@@ -25,7 +25,7 @@
+ #
+ # OGG/Vorbis format
+ #
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/vorbis/codec.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/vorbis/codec.h),)
+ FORMAT_LIBS+=format_ogg_vorbis.so
+ endif
+
+@@ -57,7 +57,7 @@
+ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} -lm
+
+ format_ogg_vorbis.so : format_ogg_vorbis.o
+- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} -logg -lvorbis -lvorbisenc -lm
++ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} -logg -lvorbis -lvorbisenc -lm $(LDFLAGS)
+
+ install: all
+ for x in $(FORMAT_LIBS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
+--- asterisk-1.2.9.1/utils/Makefile~asterisk
++++ asterisk-1.2.9.1/utils/Makefile
+@@ -22,11 +22,11 @@
+
+ TARGET=stereorize streamplayer
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/popt.h)$(wildcard -f $(CROSS_COMPILE_TARGET)/usr/local/include/popt.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/popt.h),)
+ TARGET+=smsq
+ endif
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/newt.h)$(wildcard -f $(CROSS_COMPILE_TARGET)/usr/local/include/newt.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/newt.h),)
+ TARGET+=astman
+ endif
+
+@@ -64,7 +64,7 @@
+ $(CC) $(CFLAGS) -o $@ $^
+
+ smsq: smsq.o
+- $(CC) $(CFLAGS) -o smsq ${SOL} smsq.o -lpopt
++ $(CC) $(CFLAGS) -o smsq ${SOL} smsq.o -lpopt $(LDFLAGS)
+
+ streamplayer: streamplayer.o
+ $(CC) $(CFLAGS) -o streamplayer ${SOL} streamplayer.o ${SOLLIBS}
diff --git a/packages/asterisk/asterisk-1.2.9.1/uclibc-compat-getloadavg.patch b/packages/asterisk/asterisk-1.2.16/uclibc-compat-getloadavg.patch
index a909513b1c..a909513b1c 100644
--- a/packages/asterisk/asterisk-1.2.9.1/uclibc-compat-getloadavg.patch
+++ b/packages/asterisk/asterisk-1.2.16/uclibc-compat-getloadavg.patch
diff --git a/packages/asterisk/asterisk-1.2.9.1/uclibc-dsn.patch b/packages/asterisk/asterisk-1.2.16/uclibc-dsn.patch
index 23657bcc76..23657bcc76 100644
--- a/packages/asterisk/asterisk-1.2.9.1/uclibc-dsn.patch
+++ b/packages/asterisk/asterisk-1.2.16/uclibc-dsn.patch
diff --git a/packages/asterisk/asterisk-1.0.9/.mtn2git_empty b/packages/asterisk/asterisk-1.2.18/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/asterisk/asterisk-1.0.9/.mtn2git_empty
+++ b/packages/asterisk/asterisk-1.2.18/.mtn2git_empty
diff --git a/packages/asterisk/asterisk-1.2.18/asterisk.patch b/packages/asterisk/asterisk-1.2.18/asterisk.patch
new file mode 100644
index 0000000000..006b8e9291
--- /dev/null
+++ b/packages/asterisk/asterisk-1.2.18/asterisk.patch
@@ -0,0 +1,221 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- asterisk-1.2.9.1/./Makefile~asterisk
++++ asterisk-1.2.9.1/./Makefile
+@@ -331,7 +331,7 @@
+ ASTCFLAGS+= $(TRACE_FRAMES)
+ ASTCFLAGS+= $(MALLOC_DEBUG)
+ ASTCFLAGS+= $(BUSYDETECT)
+-ASTCFLAGS+= $(OPTIONS)
++#ASTCFLAGS+= $(OPTIONS)
+ ifneq ($(findstring dont-optimize,$(MAKECMDGOALS)),dont-optimize)
+ ASTCFLAGS+= -fomit-frame-pointer
+ endif
+@@ -347,12 +347,12 @@
+ netsock.o slinfactory.o ast_expr2.o ast_expr2f.o \
+ cryptostub.o
+
+-ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/sys/poll.h),)
++ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/include/sys/poll.h),)
+ OBJS+= poll.o
+ ASTCFLAGS+=-DPOLLCOMPAT
+ endif
+
+-ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/dlfcn.h),)
++ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/include/dlfcn.h),)
+ OBJS+= dlfcn.o
+ ASTCFLAGS+=-DDLFCNCOMPAT
+ endif
+@@ -397,7 +397,7 @@
+ endif
+
+ ifeq ($(MAKETOPLEVEL),$(MAKELEVEL))
+- CFLAGS+=$(ASTCFLAGS)
++override CFLAGS+=$(ASTCFLAGS)
+ endif
+
+ # This is used when generating the doxygen documentation
+@@ -519,7 +519,7 @@
+ fi
+ rm -f include/asterisk/build.h.tmp
+ $(CC) -c -o buildinfo.o $(CFLAGS) buildinfo.c
+- $(CC) $(DEBUG) $(ASTOBJ) $(ASTLINK) $(OBJS) buildinfo.o $(LIBEDIT) db1-ast/libdb1.a stdtime/libtime.a $(LIBS)
++ $(CC) $(DEBUG) $(ASTOBJ) $(ASTLINK) $(OBJS) buildinfo.o $(LIBEDIT) db1-ast/libdb1.a stdtime/libtime.a $(LDFLAGS) $(LIBS)
+
+ muted: muted.o
+ $(CC) $(AUDIO_LIBS) -o muted muted.o
+--- asterisk-1.2.9.1/codecs/gsm/Makefile~asterisk
++++ asterisk-1.2.9.1/codecs/gsm/Makefile
+@@ -51,7 +51,7 @@
+ ifneq (${PROC},ppc)
+ ifneq (${PROC},ppc64)
+ ifneq (${PROC},s390)
+-OPTIMIZE+=-march=$(PROC)
++#OPTIMIZE+=-march=$(PROC)
+ endif
+ endif
+ endif
+@@ -243,7 +243,7 @@
+ ifneq (${PROC},arm)
+ ifneq ($(shell uname -m), parisc)
+ ifneq ($(shell uname -m),s390)
+-GSM_SOURCES+= $(SRC)/k6opt.s
++#GSM_SOURCES+= $(SRC)/k6opt.s
+ endif
+ endif
+ endif
+@@ -309,7 +309,7 @@
+ ifneq ($(shell uname -m), armv4l)
+ ifneq ($(shell uname -m), parisc)
+ ifneq ($(shell uname -m),s390)
+-GSM_OBJECTS+= $(SRC)/k6opt.o
++#GSM_OBJECTS+= $(SRC)/k6opt.o
+ endif
+ endif
+ endif
+--- asterisk-1.2.9.1/res/Makefile~asterisk
++++ asterisk-1.2.9.1/res/Makefile
+@@ -89,7 +89,7 @@
+ fi
+
+ res_crypto.so: res_crypto.o
+- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(CRYPTO_LIBS)
++ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< $(LDFLAGS) ${CYGSOLIB} $(CRYPTO_LIBS)
+
+ clean:
+ rm -f *.so *.o .depend
+--- asterisk-1.2.9.1/channels/Makefile~asterisk
++++ asterisk-1.2.9.1/channels/Makefile
+@@ -73,7 +73,7 @@
+ SOLINK+=-lrt
+ endif
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/linux/ixjuser.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/ixjuser.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/linux/ixjuser.h),)
+ CHANNEL_LIBS+=chan_phone.so
+ endif
+
+@@ -88,16 +88,16 @@
+
+ CFLAGS+=-Wno-missing-prototypes -Wno-missing-declarations
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/alsa/asoundlib.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/alsa/asoundlib.h),)
+ CHANNEL_LIBS+=chan_alsa.so
+ endif
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/libpri.so.1)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/lib/libpri.so.1),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/lib/libpri.so.1),)
+ CFLAGS+=-DZAPATA_PRI
+ ZAPPRI=-lpri
+ endif
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/libmfcr2.so.1)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/lib/libmfcr2.so.1),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/lib/libmfcr2.so.1),)
+ CFLAGS+=-DZAPATA_R2
+ ZAPR2=-lmfcr2
+ endif
+@@ -110,7 +110,7 @@
+ endif
+
+ ifndef WITHOUT_ZAPTEL
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/linux/zaptel.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/zaptel.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/pkg/include/zaptel.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/linux/zaptel.h),)
+ ifeq (${OSARCH},NetBSD)
+ SOLINK+=-L$(CROSS_COMPILE_TARGET)/usr/pkg/lib
+ endif
+@@ -122,7 +122,7 @@
+ endif
+ endif # WITHOUT_ZAPTEL
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/vpbapi.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/vpbapi.h),)
+ CHANNEL_LIBS+=chan_vpb.so
+ CFLAGS+=-DLINUX
+ endif
+@@ -137,7 +137,7 @@
+
+ ZAPDIR=/usr/lib
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/nbs.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/nbs.h),)
+ CHANNEL_LIBS+=chan_nbs.so
+ endif
+
+@@ -158,7 +158,7 @@
+ rm -f busy.h ringtone.h gentone gentone-ulaw
+
+ %.so : %.o
+- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} ${LIBS}
++ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< $(LDFLAGS) ${CYGSOLIB} ${LIBS}
+
+ ifneq ($(wildcard .depend),)
+ include .depend
+@@ -215,7 +215,7 @@
+ chan_alsa.o: $(ALSA_SRC)
+
+ chan_alsa.so: chan_alsa.o
+- $(CC) $(SOLINK) -o $@ $< -lasound -lm -ldl
++ $(CC) $(SOLINK) -o $@ $< -lasound -lm -ldl $(LDFLAGS)
+
+ chan_nbs.so: chan_nbs.o
+ $(CC) $(SOLINK) -o $@ $< -lnbs
+--- asterisk-1.2.9.1/pbx/Makefile~asterisk
++++ asterisk-1.2.9.1/pbx/Makefile
+@@ -59,7 +59,7 @@
+ $(CC) $(SOLINK) -o $@ $(KDE_CONSOLE_OBJS) $(KDE_LIBS)
+
+ pbx_dundi.so: dundi-parser.o pbx_dundi.o
+- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} pbx_dundi.o dundi-parser.o -lz ${CYGSOLIB}
++ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} pbx_dundi.o dundi-parser.o -lz ${CYGSOLIB} $(LDFLAGS)
+
+ %.moc : %.h
+ $(MOC) $< -o $@
+--- asterisk-1.2.9.1/formats/Makefile~asterisk
++++ asterisk-1.2.9.1/formats/Makefile
+@@ -25,7 +25,7 @@
+ #
+ # OGG/Vorbis format
+ #
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/vorbis/codec.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/vorbis/codec.h),)
+ FORMAT_LIBS+=format_ogg_vorbis.so
+ endif
+
+@@ -57,7 +57,7 @@
+ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} -lm
+
+ format_ogg_vorbis.so : format_ogg_vorbis.o
+- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} -logg -lvorbis -lvorbisenc -lm
++ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} -logg -lvorbis -lvorbisenc -lm $(LDFLAGS)
+
+ install: all
+ for x in $(FORMAT_LIBS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
+--- asterisk-1.2.9.1/utils/Makefile~asterisk
++++ asterisk-1.2.9.1/utils/Makefile
+@@ -22,11 +22,11 @@
+
+ TARGET=stereorize streamplayer
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/popt.h)$(wildcard -f $(CROSS_COMPILE_TARGET)/usr/local/include/popt.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/popt.h),)
+ TARGET+=smsq
+ endif
+
+-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/newt.h)$(wildcard -f $(CROSS_COMPILE_TARGET)/usr/local/include/newt.h),)
++ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/newt.h),)
+ TARGET+=astman
+ endif
+
+@@ -64,7 +64,7 @@
+ $(CC) $(CFLAGS) -o $@ $^
+
+ smsq: smsq.o
+- $(CC) $(CFLAGS) -o smsq ${SOL} smsq.o -lpopt
++ $(CC) $(CFLAGS) -o smsq ${SOL} smsq.o -lpopt $(LDFLAGS)
+
+ streamplayer: streamplayer.o
+ $(CC) $(CFLAGS) -o streamplayer ${SOL} streamplayer.o ${SOLLIBS}
diff --git a/packages/asterisk/asterisk-1.2.18/enable-speex.patch b/packages/asterisk/asterisk-1.2.18/enable-speex.patch
new file mode 100644
index 0000000000..0f5c578bd9
--- /dev/null
+++ b/packages/asterisk/asterisk-1.2.18/enable-speex.patch
@@ -0,0 +1,21 @@
+--- /codecs/orig-Makefile 2005-11-29 13:24:39.000000000 -0500
++++ /codecs/Makefile 2007-02-28 09:54:42.000000000 -0500
+@@ -29,7 +29,7 @@
+ endif
+
+ UI_SPEEX=$(wildcard $(CROSS_COMPILE_TARGET)/usr/include/speex.h)
+-UIS_SPEEX=$(wildcard $(CROSS_COMPILE_TARGET)/usr/include/speex/speex.h)
++UIS_SPEEX=$(wildcard $(CROSS_COMPILE_TARGET)/include/speex/speex.h)
+ ULI_SPEEX=$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/speex.h)
+ ULIS_SPEEX=$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/speex/speex.h)
+ ifneq (${UI_SPEEX},)
+@@ -38,7 +38,8 @@
+ endif
+ ifneq (${UIS_SPEEX},)
+ MODSPEEX=codec_speex.so
+- CFLAGS+=-I$(CROSS_COMPILE_TARGET)/usr/include/speex
++ CFLAGS+=-I$(CROSS_COMPILE_TARGET)/include/speex
++ LIBSPEEX=-L$(CROSS_COMPILE_TARGET)/lib
+ LIBSPEEX+=-lspeex -lm
+ endif
+ ifneq (${ULI_SPEEX},)
diff --git a/packages/asterisk/asterisk-1.2.18/uclibc-compat-getloadavg.patch b/packages/asterisk/asterisk-1.2.18/uclibc-compat-getloadavg.patch
new file mode 100644
index 0000000000..a909513b1c
--- /dev/null
+++ b/packages/asterisk/asterisk-1.2.18/uclibc-compat-getloadavg.patch
@@ -0,0 +1,13 @@
+diff -ruN asterisk-1.2.0-old/include/asterisk/compat.h asterisk-1.2.0-new/include/asterisk/compat.h
+--- asterisk-1.2.0-old/include/asterisk/compat.h 2005-11-08 05:13:19.000000000 +0100
++++ asterisk-1.2.0-new/include/asterisk/compat.h 2005-12-04 05:32:31.000000000 +0100
+@@ -75,7 +75,9 @@
+ #define HAVE_STRTOQ
+
+ #ifdef _BSD_SOURCE
++#ifndef __UCLIBC__
+ #define HAVE_GETLOADAVG
++#endif /* __UCLIBC__ */
+ #endif
+
+ #ifdef __linux__
diff --git a/packages/asterisk/asterisk-1.2.18/uclibc-dsn.patch b/packages/asterisk/asterisk-1.2.18/uclibc-dsn.patch
new file mode 100644
index 0000000000..23657bcc76
--- /dev/null
+++ b/packages/asterisk/asterisk-1.2.18/uclibc-dsn.patch
@@ -0,0 +1,18 @@
+diff -ruN asterisk-1.0.7-old/dns.c asterisk-1.0.7-new/dns.c
+--- asterisk-1.0.7-old/dns.c 2004-06-22 22:11:15.000000000 +0200
++++ asterisk-1.0.7-new/dns.c 2005-03-19 17:38:06.000000000 +0100
+@@ -153,7 +153,13 @@
+
+ #if defined(res_ninit)
+ #define HAS_RES_NINIT
+-#else
++#endif
++
++#ifdef __UCLIBC__
++#undef HAS_RES_NINIT
++#endif
++
++#ifndef HAS_RES_NINIT
+ AST_MUTEX_DEFINE_STATIC(res_lock);
+ #if 0
+ #warning "Warning, res_ninit is missing... Could have reentrancy issues"
diff --git a/packages/asterisk/asterisk-1.2.8/makefile.patch b/packages/asterisk/asterisk-1.2.8/makefile.patch
deleted file mode 100644
index 780868b91e..0000000000
--- a/packages/asterisk/asterisk-1.2.8/makefile.patch
+++ /dev/null
@@ -1,200 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- asterisk-1.2.8/Makefile~makefile
-+++ asterisk-1.2.8/Makefile
-@@ -16,6 +16,9 @@
- # Create OPTIONS variable
- OPTIONS=
- # If cross compiling, define these to suit
-+CROSS_COMPILE=$(CROSS_DIR)
-+CROSS_COMPILE_TARGET=$(STAGING_DIR)
-+CROSS_COMPILE_BIN=$(STAGING_BINDIR_CROSS)
- # CROSS_COMPILE=/opt/montavista/pro/devkit/arm/xscale_be/bin/xscale_be-
- # CROSS_COMPILE_BIN=/opt/montavista/pro/devkit/arm/xscale_be/bin/
- # CROSS_COMPILE_TARGET=/opt/montavista/pro/devkit/arm/xscale_be/target
-@@ -327,13 +330,13 @@
- endif
- endif
-
--ASTCFLAGS+= $(DEBUG_THREADS)
--ASTCFLAGS+= $(TRACE_FRAMES)
--ASTCFLAGS+= $(MALLOC_DEBUG)
--ASTCFLAGS+= $(BUSYDETECT)
--ASTCFLAGS+= $(OPTIONS)
-+#ASTCFLAGS+= $(DEBUG_THREADS)
-+#ASTCFLAGS+= $(TRACE_FRAMES)
-+#ASTCFLAGS+= $(MALLOC_DEBUG)
-+#ASTCFLAGS+= $(BUSYDETECT)
-+#ASTCFLAGS+= $(OPTIONS)
- ifneq ($(findstring dont-optimize,$(MAKECMDGOALS)),dont-optimize)
--ASTCFLAGS+= -fomit-frame-pointer
-+#ASTCFLAGS+= -fomit-frame-pointer
- endif
- SUBDIRS=res channels pbx apps codecs formats agi cdr funcs utils stdtime
-
-@@ -397,7 +400,7 @@
- endif
-
- ifeq ($(MAKETOPLEVEL),$(MAKELEVEL))
-- CFLAGS+=$(ASTCFLAGS)
-+override CFLAGS+=$(ASTCFLAGS)
- endif
-
- # This is used when generating the doxygen documentation
-@@ -519,7 +522,7 @@
- fi
- rm -f include/asterisk/build.h.tmp
- $(CC) -c -o buildinfo.o $(CFLAGS) buildinfo.c
-- $(CC) $(DEBUG) $(ASTOBJ) $(ASTLINK) $(OBJS) buildinfo.o $(LIBEDIT) db1-ast/libdb1.a stdtime/libtime.a $(LIBS)
-+ $(CC) $(DEBUG) $(ASTOBJ) $(ASTLINK) $(OBJS) buildinfo.o $(LIBEDIT) db1-ast/libdb1.a stdtime/libtime.a $(LDFLAGS) $(LIBS)
-
- muted: muted.o
- $(CC) $(AUDIO_LIBS) -o muted muted.o
---- asterisk-1.2.8/codecs/gsm/Makefile~makefile
-+++ asterisk-1.2.8/codecs/gsm/Makefile
-@@ -51,7 +51,7 @@
- ifneq (${PROC},ppc)
- ifneq (${PROC},ppc64)
- ifneq (${PROC},s390)
--OPTIMIZE+=-march=$(PROC)
-+#OPTIMIZE+=-march=$(PROC)
- endif
- endif
- endif
-@@ -243,7 +243,7 @@
- ifneq (${PROC},arm)
- ifneq ($(shell uname -m), parisc)
- ifneq (${PROC}, s390)
--GSM_SOURCES+= $(SRC)/k6opt.s
-+#GSM_SOURCES+= $(SRC)/k6opt.s
- endif
- endif
- endif
-@@ -309,7 +309,7 @@
- ifneq ($(shell uname -m), sparc64)
- ifneq ($(shell uname -m), armv4l)
- ifneq ($(shell uname -m), parisc)
--GSM_OBJECTS+= $(SRC)/k6opt.o
-+#GSM_OBJECTS+= $(SRC)/k6opt.o
- endif
- endif
- endif
---- asterisk-1.2.8/res/Makefile~makefile
-+++ asterisk-1.2.8/res/Makefile
-@@ -89,7 +89,7 @@
- fi
-
- res_crypto.so: res_crypto.o
-- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(CRYPTO_LIBS)
-+ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< $(LDFLAGS) ${CYGSOLIB} $(CRYPTO_LIBS)
-
- clean:
- rm -f *.so *.o .depend
---- asterisk-1.2.8/channels/Makefile~makefile
-+++ asterisk-1.2.8/channels/Makefile
-@@ -73,7 +73,7 @@
- SOLINK+=-lrt
- endif
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/linux/ixjuser.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/ixjuser.h),)
-+ifneq ($(wildcard $(STAGING_INCDIR)/linux/ixjuser.h),)
- CHANNEL_LIBS+=chan_phone.so
- endif
-
-@@ -88,16 +88,16 @@
-
- CFLAGS+=-Wno-missing-prototypes -Wno-missing-declarations
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/alsa/asoundlib.h),)
-+ifneq ($(wildcard $(STAGING_INCDIR)/alsa/asoundlib.h),)
- CHANNEL_LIBS+=chan_alsa.so
- endif
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/libpri.so.1)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/lib/libpri.so.1),)
-+ifneq ($(wildcard $(STAGING_LIBDIR)/libpri.so.1),)
- CFLAGS+=-DZAPATA_PRI
- ZAPPRI=-lpri
- endif
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/libmfcr2.so.1)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/lib/libmfcr2.so.1),)
-+ifneq ($(wildcard $(STAGING_LIBDIR)/libmfcr2.so.1),)
- CFLAGS+=-DZAPATA_R2
- ZAPR2=-lmfcr2
- endif
-@@ -110,7 +110,7 @@
- endif
-
- ifndef WITHOUT_ZAPTEL
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/linux/zaptel.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/zaptel.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/pkg/include/zaptel.h),)
-+ifneq ($(wildcard $(STAGING_INCDIR)/linux/zaptel.h),)
- ifeq (${OSARCH},NetBSD)
- SOLINK+=-L$(CROSS_COMPILE_TARGET)/usr/pkg/lib
- endif
-@@ -122,7 +122,7 @@
- endif
- endif # WITHOUT_ZAPTEL
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/vpbapi.h),)
-+ifneq ($(wildcard $(STAGING_INCDIR)/vpbapi.h),)
- CHANNEL_LIBS+=chan_vpb.so
- CFLAGS+=-DLINUX
- endif
-@@ -137,7 +137,7 @@
-
- ZAPDIR=/usr/lib
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/nbs.h),)
-+ifneq ($(wildcard $(STAGING_INCDIR)/nbs.h),)
- CHANNEL_LIBS+=chan_nbs.so
- endif
-
-@@ -158,7 +158,7 @@
- rm -f busy.h ringtone.h gentone gentone-ulaw
-
- %.so : %.o
-- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} ${LIBS}
-+ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< $(LDFLAGS) ${CYGSOLIB} ${LIBS}
-
- ifneq ($(wildcard .depend),)
- include .depend
---- asterisk-1.2.8/pbx/Makefile~makefile
-+++ asterisk-1.2.8/pbx/Makefile
-@@ -59,7 +59,7 @@
- $(CC) $(SOLINK) -o $@ $(KDE_CONSOLE_OBJS) $(KDE_LIBS)
-
- pbx_dundi.so: dundi-parser.o pbx_dundi.o
-- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} pbx_dundi.o dundi-parser.o -lz ${CYGSOLIB}
-+ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} pbx_dundi.o dundi-parser.o -lz ${CYGSOLIB} $(LDFLAGS)
-
- %.moc : %.h
- $(MOC) $< -o $@
---- asterisk-1.2.8/formats/Makefile~makefile
-+++ asterisk-1.2.8/formats/Makefile
-@@ -25,7 +25,7 @@
- #
- # OGG/Vorbis format
- #
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/vorbis/codec.h),)
-+ifneq ($(wildcard $(STAGING_INCDIR)/vorbis/codec.h),)
- FORMAT_LIBS+=format_ogg_vorbis.so
- endif
-
---- asterisk-1.2.8/utils/Makefile~makefile
-+++ asterisk-1.2.8/utils/Makefile
-@@ -22,11 +22,11 @@
-
- TARGET=stereorize streamplayer
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/popt.h)$(wildcard -f $(CROSS_COMPILE_TARGET)/usr/local/include/popt.h),)
-+ifneq ($(wildcard $(STAGING_INCDIR)/popt.h),)
- TARGET+=smsq
- endif
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/newt.h)$(wildcard -f $(CROSS_COMPILE_TARGET)/usr/local/include/newt.h),)
-+ifneq ($(wildcard $(STAGING_INCDIR)/newt.h),)
- TARGET+=astman
- endif
-
diff --git a/packages/asterisk/asterisk-1.2.9.1/asterisk.patch b/packages/asterisk/asterisk-1.2.9.1/asterisk.patch
deleted file mode 100644
index 9e93f9d5d7..0000000000
--- a/packages/asterisk/asterisk-1.2.9.1/asterisk.patch
+++ /dev/null
@@ -1,221 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- asterisk-1.2.9.1/./Makefile~asterisk
-+++ asterisk-1.2.9.1/./Makefile
-@@ -331,7 +331,7 @@
- ASTCFLAGS+= $(TRACE_FRAMES)
- ASTCFLAGS+= $(MALLOC_DEBUG)
- ASTCFLAGS+= $(BUSYDETECT)
--ASTCFLAGS+= $(OPTIONS)
-+#ASTCFLAGS+= $(OPTIONS)
- ifneq ($(findstring dont-optimize,$(MAKECMDGOALS)),dont-optimize)
- ASTCFLAGS+= -fomit-frame-pointer
- endif
-@@ -347,12 +347,12 @@
- netsock.o slinfactory.o ast_expr2.o ast_expr2f.o \
- cryptostub.o
-
--ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/sys/poll.h),)
-+ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/include/sys/poll.h),)
- OBJS+= poll.o
- ASTCFLAGS+=-DPOLLCOMPAT
- endif
-
--ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/dlfcn.h),)
-+ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/include/dlfcn.h),)
- OBJS+= dlfcn.o
- ASTCFLAGS+=-DDLFCNCOMPAT
- endif
-@@ -397,7 +397,7 @@
- endif
-
- ifeq ($(MAKETOPLEVEL),$(MAKELEVEL))
-- CFLAGS+=$(ASTCFLAGS)
-+override CFLAGS+=$(ASTCFLAGS)
- endif
-
- # This is used when generating the doxygen documentation
-@@ -519,7 +519,7 @@
- fi
- rm -f include/asterisk/build.h.tmp
- $(CC) -c -o buildinfo.o $(CFLAGS) buildinfo.c
-- $(CC) $(DEBUG) $(ASTOBJ) $(ASTLINK) $(OBJS) buildinfo.o $(LIBEDIT) db1-ast/libdb1.a stdtime/libtime.a $(LIBS)
-+ $(CC) $(DEBUG) $(ASTOBJ) $(ASTLINK) $(OBJS) buildinfo.o $(LIBEDIT) db1-ast/libdb1.a stdtime/libtime.a $(LDFLAGS) $(LIBS)
-
- muted: muted.o
- $(CC) $(AUDIO_LIBS) -o muted muted.o
---- asterisk-1.2.9.1/codecs/gsm/Makefile~asterisk
-+++ asterisk-1.2.9.1/codecs/gsm/Makefile
-@@ -51,7 +51,7 @@
- ifneq (${PROC},ppc)
- ifneq (${PROC},ppc64)
- ifneq (${PROC},s390)
--OPTIMIZE+=-march=$(PROC)
-+#OPTIMIZE+=-march=$(PROC)
- endif
- endif
- endif
-@@ -243,7 +243,7 @@
- ifneq (${PROC},arm)
- ifneq ($(shell uname -m), parisc)
- ifneq (${PROC}, s390)
--GSM_SOURCES+= $(SRC)/k6opt.s
-+#GSM_SOURCES+= $(SRC)/k6opt.s
- endif
- endif
- endif
-@@ -309,7 +309,7 @@
- ifneq ($(shell uname -m), sparc64)
- ifneq ($(shell uname -m), armv4l)
- ifneq ($(shell uname -m), parisc)
--GSM_OBJECTS+= $(SRC)/k6opt.o
-+#GSM_OBJECTS+= $(SRC)/k6opt.o
- endif
- endif
- endif
---- asterisk-1.2.9.1/res/Makefile~asterisk
-+++ asterisk-1.2.9.1/res/Makefile
-@@ -89,7 +89,7 @@
- fi
-
- res_crypto.so: res_crypto.o
-- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(CRYPTO_LIBS)
-+ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< $(LDFLAGS) ${CYGSOLIB} $(CRYPTO_LIBS)
-
- clean:
- rm -f *.so *.o .depend
---- asterisk-1.2.9.1/channels/Makefile~asterisk
-+++ asterisk-1.2.9.1/channels/Makefile
-@@ -73,7 +73,7 @@
- SOLINK+=-lrt
- endif
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/linux/ixjuser.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/ixjuser.h),)
-+ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/linux/ixjuser.h),)
- CHANNEL_LIBS+=chan_phone.so
- endif
-
-@@ -88,16 +88,16 @@
-
- CFLAGS+=-Wno-missing-prototypes -Wno-missing-declarations
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/alsa/asoundlib.h),)
-+ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/alsa/asoundlib.h),)
- CHANNEL_LIBS+=chan_alsa.so
- endif
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/libpri.so.1)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/lib/libpri.so.1),)
-+ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/lib/libpri.so.1),)
- CFLAGS+=-DZAPATA_PRI
- ZAPPRI=-lpri
- endif
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/libmfcr2.so.1)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/lib/libmfcr2.so.1),)
-+ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/lib/libmfcr2.so.1),)
- CFLAGS+=-DZAPATA_R2
- ZAPR2=-lmfcr2
- endif
-@@ -110,7 +110,7 @@
- endif
-
- ifndef WITHOUT_ZAPTEL
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/linux/zaptel.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/zaptel.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/pkg/include/zaptel.h),)
-+ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/linux/zaptel.h),)
- ifeq (${OSARCH},NetBSD)
- SOLINK+=-L$(CROSS_COMPILE_TARGET)/usr/pkg/lib
- endif
-@@ -122,7 +122,7 @@
- endif
- endif # WITHOUT_ZAPTEL
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/vpbapi.h),)
-+ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/vpbapi.h),)
- CHANNEL_LIBS+=chan_vpb.so
- CFLAGS+=-DLINUX
- endif
-@@ -137,7 +137,7 @@
-
- ZAPDIR=/usr/lib
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/nbs.h),)
-+ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/nbs.h),)
- CHANNEL_LIBS+=chan_nbs.so
- endif
-
-@@ -158,7 +158,7 @@
- rm -f busy.h ringtone.h gentone gentone-ulaw
-
- %.so : %.o
-- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} ${LIBS}
-+ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< $(LDFLAGS) ${CYGSOLIB} ${LIBS}
-
- ifneq ($(wildcard .depend),)
- include .depend
-@@ -215,7 +215,7 @@
- chan_alsa.o: $(ALSA_SRC)
-
- chan_alsa.so: chan_alsa.o
-- $(CC) $(SOLINK) -o $@ $< -lasound -lm -ldl
-+ $(CC) $(SOLINK) -o $@ $< -lasound -lm -ldl $(LDFLAGS)
-
- chan_nbs.so: chan_nbs.o
- $(CC) $(SOLINK) -o $@ $< -lnbs
---- asterisk-1.2.9.1/pbx/Makefile~asterisk
-+++ asterisk-1.2.9.1/pbx/Makefile
-@@ -59,7 +59,7 @@
- $(CC) $(SOLINK) -o $@ $(KDE_CONSOLE_OBJS) $(KDE_LIBS)
-
- pbx_dundi.so: dundi-parser.o pbx_dundi.o
-- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} pbx_dundi.o dundi-parser.o -lz ${CYGSOLIB}
-+ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} pbx_dundi.o dundi-parser.o -lz ${CYGSOLIB} $(LDFLAGS)
-
- %.moc : %.h
- $(MOC) $< -o $@
---- asterisk-1.2.9.1/formats/Makefile~asterisk
-+++ asterisk-1.2.9.1/formats/Makefile
-@@ -25,7 +25,7 @@
- #
- # OGG/Vorbis format
- #
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/vorbis/codec.h),)
-+ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/vorbis/codec.h),)
- FORMAT_LIBS+=format_ogg_vorbis.so
- endif
-
-@@ -57,7 +57,7 @@
- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} -lm
-
- format_ogg_vorbis.so : format_ogg_vorbis.o
-- $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} -logg -lvorbis -lvorbisenc -lm
-+ $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} -logg -lvorbis -lvorbisenc -lm $(LDFLAGS)
-
- install: all
- for x in $(FORMAT_LIBS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
---- asterisk-1.2.9.1/utils/Makefile~asterisk
-+++ asterisk-1.2.9.1/utils/Makefile
-@@ -22,11 +22,11 @@
-
- TARGET=stereorize streamplayer
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/popt.h)$(wildcard -f $(CROSS_COMPILE_TARGET)/usr/local/include/popt.h),)
-+ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/popt.h),)
- TARGET+=smsq
- endif
-
--ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/newt.h)$(wildcard -f $(CROSS_COMPILE_TARGET)/usr/local/include/newt.h),)
-+ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/include/newt.h),)
- TARGET+=astman
- endif
-
-@@ -64,7 +64,7 @@
- $(CC) $(CFLAGS) -o $@ $^
-
- smsq: smsq.o
-- $(CC) $(CFLAGS) -o smsq ${SOL} smsq.o -lpopt
-+ $(CC) $(CFLAGS) -o smsq ${SOL} smsq.o -lpopt $(LDFLAGS)
-
- streamplayer: streamplayer.o
- $(CC) $(CFLAGS) -o streamplayer ${SOL} streamplayer.o ${SOLLIBS}
diff --git a/packages/asterisk/asterisk_1.0.9.bb b/packages/asterisk/asterisk_1.0.9.bb
deleted file mode 100644
index 5e1bf87b06..0000000000
--- a/packages/asterisk/asterisk_1.0.9.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-DESCRIPTION="The Astersisk open source software PBX"
-HOMEPAGE="www.asterisk.org"
-LICENSE="GPL"
-DEPENDS="ncurses zlib openssl"
-PR = "r2"
-
-SRC_URI="http://ftp.digium.com/pub/asterisk/releases/asterisk-${PV}.tar.gz \
- file://gsm.patch;patch=1 \
- file://makefile.patch;patch=1"
-
-
-# Doh - they use 'L'inux intead of linux
-# FIXME: Do the sed here
-
-export OSARCH="Linux"
-export PROC="${TARGET_ARCH}"
-
-# We will probably have to edit the CFLAG in teh Makefile
-
-do_compile() {
- oe_runmake
-}
-
-do_install() {
- oe_runmake DESTDIR=${D} install
-}
-
-do_stage () {
- install -d ${STAGING_INCDIR}/asterisk
- install -m 0644 ${S}/include/asterisk/*.h ${STAGING_INCDIR}/asterisk/
-}
-
-
diff --git a/packages/asterisk/asterisk_1.2.12.1.bb b/packages/asterisk/asterisk_1.2.12.1.bb
deleted file mode 100644
index c0b7fc2ed9..0000000000
--- a/packages/asterisk/asterisk_1.2.12.1.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-DESCRIPTION="The Asterisk open source software PBX"
-HOMEPAGE="www.asterisk.org"
-LICENSE="GPL"
-DEPENDS="ncurses zlib openssl curl alsa-lib libogg libvorbis popt"
-PR = "r0"
-
-SRC_URI="http://ftp.digium.com/pub/asterisk/releases/asterisk-${PV}.tar.gz \
- file://uclibc-compat-getloadavg.patch;patch=1 \
- file://uclibc-dsn.patch;patch=1 \
- file://asterisk.patch;patch=1"
-
-
-export CROSS_COMPILE="${CCACHE}${HOST_PREFIX}"
-export CROSS_COMPILE_BIN="${STAGING_BINDIR_CROSS}"
-export CROSS_COMPILE_TARGET="${STAGING_DIR}/${HOST_SYS}"
-
-export CROSS_ARCH="Linux"
-
-export CROSS_PROC="${TARGET_ARCH}"
-
-export MAKECMDGOALS="dont-optimize"
-
-# We will probably have to edit the CFLAG in the Makefile
-
-do_compile() {
- oe_runmake
-}
-
-do_install() {
- oe_runmake DESTDIR=${D} install
-}
-
-do_stage () {
- install -d ${STAGING_INCDIR}/asterisk
- install -m 0644 ${S}/include/asterisk/*.h ${STAGING_INCDIR}/asterisk/
-}
-
-
diff --git a/packages/asterisk/asterisk_1.2.13.bb b/packages/asterisk/asterisk_1.2.13.bb
index 42a3214f0a..3378f6e48b 100644
--- a/packages/asterisk/asterisk_1.2.13.bb
+++ b/packages/asterisk/asterisk_1.2.13.bb
@@ -2,7 +2,7 @@ DESCRIPTION="The Asterisk open source software PBX"
HOMEPAGE="www.asterisk.org"
LICENSE="GPL"
DEPENDS="ncurses zlib openssl curl alsa-lib libogg libvorbis popt"
-PR = "r1"
+PR = "r2"
SRC_URI="http://ftp.digium.com/pub/asterisk/releases/asterisk-${PV}.tar.gz \
file://uclibc-compat-getloadavg.patch;patch=1 \
@@ -15,8 +15,7 @@ export CROSS_COMPILE_BIN="${STAGING_BINDIR_CROSS}"
export CROSS_COMPILE_TARGET="${STAGING_DIR}/${HOST_SYS}"
export CROSS_ARCH="Linux"
-export CROSS_PROC="arm"
-export SUB_PROC="xscale"
+export CROSS_PROC="${TARGET_ARCH}"
export MAKECMDGOALS="dont-optimize"
diff --git a/packages/asterisk/asterisk_1.2.14.bb b/packages/asterisk/asterisk_1.2.14.bb
new file mode 100644
index 0000000000..0ec55f8e42
--- /dev/null
+++ b/packages/asterisk/asterisk_1.2.14.bb
@@ -0,0 +1,43 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="www.asterisk.org"
+LICENSE="GPL"
+DEPENDS="ncurses zlib openssl curl alsa-lib libogg libvorbis popt"
+SECTION = "console/telephony"
+PR = "r4"
+
+SRC_URI="http://ftp.digium.com/pub/asterisk/releases/asterisk-${PV}.tar.gz \
+ file://uclibc-compat-getloadavg.patch;patch=1 \
+ file://uclibc-dsn.patch;patch=1 \
+ file://asterisk.patch;patch=1"
+
+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_ARCH="Linux"
+export CROSS_PROC="${TARGET_ARCH}"
+
+export MAKECMDGOALS="dont-optimize"
+
+# We will probably have to edit the CFLAG in the Makefile
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ oe_runmake DESTDIR=${D} install
+}
+
+do_stage () {
+ install -d ${STAGING_INCDIR}/asterisk
+ install -m 0644 ${S}/include/asterisk/*.h ${STAGING_INCDIR}/asterisk/
+}
+
+
+FILES_${PN}-dbg += "${libdir}/asterisk/modules/.debug"
+FILES_${PN}-dbg += "/var/lib/asterisk/agi-bin/.debug"
+
diff --git a/packages/asterisk/asterisk_1.2.16.bb b/packages/asterisk/asterisk_1.2.16.bb
new file mode 100644
index 0000000000..0ec55f8e42
--- /dev/null
+++ b/packages/asterisk/asterisk_1.2.16.bb
@@ -0,0 +1,43 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="www.asterisk.org"
+LICENSE="GPL"
+DEPENDS="ncurses zlib openssl curl alsa-lib libogg libvorbis popt"
+SECTION = "console/telephony"
+PR = "r4"
+
+SRC_URI="http://ftp.digium.com/pub/asterisk/releases/asterisk-${PV}.tar.gz \
+ file://uclibc-compat-getloadavg.patch;patch=1 \
+ file://uclibc-dsn.patch;patch=1 \
+ file://asterisk.patch;patch=1"
+
+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_ARCH="Linux"
+export CROSS_PROC="${TARGET_ARCH}"
+
+export MAKECMDGOALS="dont-optimize"
+
+# We will probably have to edit the CFLAG in the Makefile
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ oe_runmake DESTDIR=${D} install
+}
+
+do_stage () {
+ install -d ${STAGING_INCDIR}/asterisk
+ install -m 0644 ${S}/include/asterisk/*.h ${STAGING_INCDIR}/asterisk/
+}
+
+
+FILES_${PN}-dbg += "${libdir}/asterisk/modules/.debug"
+FILES_${PN}-dbg += "/var/lib/asterisk/agi-bin/.debug"
+
diff --git a/packages/asterisk/asterisk_1.2.18.bb b/packages/asterisk/asterisk_1.2.18.bb
new file mode 100644
index 0000000000..20d20a09b6
--- /dev/null
+++ b/packages/asterisk/asterisk_1.2.18.bb
@@ -0,0 +1,44 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="www.asterisk.org"
+LICENSE="GPL"
+DEPENDS="ncurses zlib openssl curl alsa-lib libogg libvorbis speex"
+SECTION = "console/telephony"
+PR = "r5"
+
+SRC_URI="http://ftp.digium.com/pub/asterisk/releases/asterisk-${PV}.tar.gz \
+ file://uclibc-compat-getloadavg.patch;patch=1 \
+ file://uclibc-dsn.patch;patch=1 \
+ file://asterisk.patch;patch=1 \
+ file://enable-speex.patch;patch=1"
+
+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_ARCH="Linux"
+export CROSS_PROC="${TARGET_ARCH}"
+
+export MAKECMDGOALS="dont-optimize"
+
+# We will probably have to edit the CFLAG in the Makefile
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ oe_runmake DESTDIR=${D} install
+}
+
+do_stage () {
+ install -d ${STAGING_INCDIR}/asterisk
+ install -m 0644 ${S}/include/asterisk/*.h ${STAGING_INCDIR}/asterisk/
+}
+
+
+FILES_${PN}-dbg += "${libdir}/asterisk/modules/.debug"
+FILES_${PN}-dbg += "/var/lib/asterisk/agi-bin/.debug"
+
diff --git a/packages/asterisk/asterisk_1.2.8.bb b/packages/asterisk/asterisk_1.2.8.bb
deleted file mode 100644
index a9917c6e62..0000000000
--- a/packages/asterisk/asterisk_1.2.8.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-DESCRIPTION="The Astersisk open source software PBX"
-HOMEPAGE="www.asterisk.org"
-LICENSE="GPL"
-DEPENDS="ncurses zlib openssl curl"
-PR = "r0"
-
-SRC_URI="http://ftp.digium.com/pub/asterisk/releases/asterisk-${PV}.tar.gz \
- file://makefile.patch;patch=1"
-
-
-# Doh - they use 'L'inux intead of linux
-# FIXME: Do the sed here
-
-export OSARCH="Linux"
-export PROC="${TARGET_ARCH}"
-
-# We will probably have to edit the CFLAG in the Makefile
-
-do_compile() {
- oe_runmake
-}
-
-do_install() {
- oe_runmake DESTDIR=${D} install
-}
-
-do_stage () {
- install -d ${STAGING_INCDIR}/asterisk
- install -m 0644 ${S}/include/asterisk/*.h ${STAGING_INCDIR}/asterisk/
-}
-
-
diff --git a/packages/asterisk/asterisk_1.2.9.1.bb b/packages/asterisk/asterisk_1.2.9.1.bb
deleted file mode 100644
index c1cedf67f6..0000000000
--- a/packages/asterisk/asterisk_1.2.9.1.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-DESCRIPTION="The Asterisk open source software PBX"
-HOMEPAGE="www.asterisk.org"
-LICENSE="GPL"
-DEPENDS="ncurses zlib openssl curl alsa-lib libogg libvorbis popt"
-PR = "r6"
-
-SRC_URI="http://ftp.digium.com/pub/asterisk/releases/asterisk-${PV}.tar.gz \
- file://uclibc-compat-getloadavg.patch;patch=1 \
- file://uclibc-dsn.patch;patch=1 \
- file://asterisk.patch;patch=1"
-
-
-export CROSS_COMPILE="${CCACHE}${HOST_PREFIX}"
-export CROSS_COMPILE_BIN="${STAGING_BINDIR_CROSS}"
-export CROSS_COMPILE_TARGET="${STAGING_DIR}/${HOST_SYS}"
-
-export CROSS_ARCH="Linux"
-
-export CROSS_PROC="${TARGET_ARCH}"
-
-export MAKECMDGOALS="dont-optimize"
-
-# We will probably have to edit the CFLAG in the Makefile
-
-do_compile() {
- oe_runmake
-}
-
-do_install() {
- oe_runmake DESTDIR=${D} install
-}
-
-do_stage () {
- install -d ${STAGING_INCDIR}/asterisk
- install -m 0644 ${S}/include/asterisk/*.h ${STAGING_INCDIR}/asterisk/
-}
-
-
diff --git a/packages/aumix/aumix_2.8.bb b/packages/aumix/aumix_2.8.bb
index 3edd51ddd9..50f2cec07a 100644
--- a/packages/aumix/aumix_2.8.bb
+++ b/packages/aumix/aumix_2.8.bb
@@ -1,7 +1,7 @@
-DEPENDS = "ncurses"
DESCRIPTION = "A mixer for the terminal or X11, with mouse support."
SECTION = "console/multimedia"
LICENSE = "GPLV2"
+DEPENDS = "ncurses"
SRC_URI = "http://jpj.net/~trevor/aumix/aumix-${PV}.tar.bz2 \
file://configure.patch;patch=1"
diff --git a/packages/autofs/autofs-4.1.4/auto.net-sort-option-fix.patch b/packages/autofs/autofs-4.1.4/auto.net-sort-option-fix.patch
new file mode 100644
index 0000000000..680e6ce4fc
--- /dev/null
+++ b/packages/autofs/autofs-4.1.4/auto.net-sort-option-fix.patch
@@ -0,0 +1,11 @@
+--- autofs-4.1.4/samples/auto.net~ 2005-04-05 08:02:09.000000000 -0500
++++ autofs-4.1.4/samples/auto.net 2007-04-07 14:41:19.000000000 -0500
+@@ -37,7 +37,7 @@
+ # Newer distributions get this right
+ SHOWMOUNT="$SMNT --no-headers -e $key"
+
+-$SHOWMOUNT | LC_ALL=C sort +0 | \
++$SHOWMOUNT | LC_ALL=C sort | \
+ awk -v key="$key" -v opts="$opts" -- '
+ BEGIN { ORS=""; first=1 }
+ { if (first) { print opts; first=0 }; print " \\\n\t" $1, key ":" $1 }
diff --git a/packages/autofs/autofs-4.1.4/autofs-additional-distros.patch b/packages/autofs/autofs-4.1.4/autofs-additional-distros.patch
new file mode 100644
index 0000000000..2b1af584b3
--- /dev/null
+++ b/packages/autofs/autofs-4.1.4/autofs-additional-distros.patch
@@ -0,0 +1,12 @@
+--- autofs-4.1.4/samples/rc.autofs.in~ 2005-04-11 06:30:54.000000000 -0500
++++ autofs-4.1.4/samples/rc.autofs.in 2007-04-07 13:18:44.000000000 -0500
+@@ -43,6 +43,9 @@
+ system=debian
+ elif [ -f /etc/redhat-release ]; then
+ system=redhat
++elif [ -f /etc/issue ] && grep -q "^SlugOS" /etc/issue ; then
++ # SlugOS behaves like Debian, at least for autofs purposes.
++ system=debian
+ else
+ echo "$0: Unknown system, please port and contact autofs@linux.kernel.org" 1>&2
+ exit 1
diff --git a/packages/autofs/autofs_4.1.4.bb b/packages/autofs/autofs_4.1.4.bb
index 128c24e296..ab2bacedb7 100644
--- a/packages/autofs/autofs_4.1.4.bb
+++ b/packages/autofs/autofs_4.1.4.bb
@@ -2,13 +2,17 @@ DESCRIPTION = "Kernel based automounter for linux."
SECTION = "base"
LICENSE = "GPL"
+PR = "r1"
+
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 \
${KERNELORG_MIRROR}/pub/linux/daemons/autofs/v4/autofs-4.1.4-multi-parse-fix.patch;patch=1 \
${KERNELORG_MIRROR}/pub/linux/daemons/autofs/v4/autofs-4.1.4-non-replicated-ping.patch;patch=1 \
file://cross.patch;patch=1 \
file://Makefile.rules-cross.patch;patch=1 \
- file://install.patch;patch=1"
+ file://install.patch;patch=1 \
+ file://auto.net-sort-option-fix.patch;patch=1 \
+ file://autofs-additional-distros.patch;patch=1"
inherit autotools
diff --git a/packages/avahi/avahi.inc b/packages/avahi/avahi.inc
index 19ef64f0e1..fa2884b98e 100644
--- a/packages/avahi/avahi.inc
+++ b/packages/avahi/avahi.inc
@@ -4,12 +4,14 @@ HOMEPAGE = "http://avahi.org"
SECTION = "network"
PRIORITY = "optional"
LICENSE = "GPL"
+PR="r3"
-DEPENDS = "expat libdaemon dbus"
+DEPENDS = "expat libdaemon dbus glib-2.0"
RRECOMMENDS = "libnss-mdns"
RRECOMMENDS_avahi-daemon = "libnss-mdns"
-SRC_URI = "http://avahi.org/download/avahi-${PV}.tar.gz"
+SRC_URI = "http://avahi.org/download/avahi-${PV}.tar.gz \
+ file://00avahi-autoipd file://99avahi-autoipd"
inherit autotools pkgconfig update-rc.d
@@ -34,6 +36,9 @@ FILES_avahi-dnsconfd = "${sbindir}/avahi-dnsconfd \
${sysconfdir}/init.d/avahi-dnsconfd"
FILES_libavahi-glib = "${libdir}/libavahi-glib.so.*"
FILES_avahi-utils = "${bindir}/avahi-*"
+FILES_avahi-autoipd = "${sbindir}/avahi-autoipd \
+ ${sysconfdir}/avahi/avahi-autoipd.action \
+ ${sysconfdir}/udhcpc.d/*avahi-autoipd"
CONFFILES_avahi-daemon = "${sysconfdir}/avahi/avahi-daemon.conf"
@@ -50,8 +55,8 @@ pkg_postinst_avahi-daemon () {
if [ "x$D" != "x" ]; then
exit 1
fi
- grep avahi /etc/group || addgroup avahi
- grep avahi /etc/passwd || adduser --disabled-password --system --home /var/run/avahi-daemon --no-create-home avahi --ingroup avahi -g Avahi
+ grep "^avahi:" /etc/group > /dev/null || addgroup avahi
+ grep "^avahi:" /etc/passwd > /dev/null || adduser --disabled-password --system --home /var/run/avahi-daemon --no-create-home avahi --ingroup avahi -g Avahi
DBUSPID=`pidof dbus-daemon`
@@ -60,7 +65,32 @@ pkg_postinst_avahi-daemon () {
fi
}
+pkg_postinst_avahi-autoipd () {
+ # can't do this offline
+ if [ "x$D" != "x" ]; then
+ exit 1
+ fi
+ grep "^avahi-autoipd:" /etc/group > /dev/null || addgroup avahi-autoipd
+ grep "^avahi-autoipd:" /etc/passwd > /dev/null || adduser --disabled-password --system --home /var/lib/avahi-autoipd --no-create-home avahi-autoipd --ingroup avahi-autoipd -g "Avahi autoip daemon"
+}
+
pkg_postrm_avahi-daemon () {
deluser avahi || true
delgroup avahi || true
}
+
+pkg_postrm_avahi-autoipd () {
+ deluser avahi-autoipd || true
+ delgroup avahi-autoipd || true
+}
+
+do_install() {
+ autotools_do_install
+ install -d ${D}${sysconfdir}/udhcpc.d
+ install ${WORKDIR}/00avahi-autoipd ${D}${sysconfdir}/udhcpc.d
+ install ${WORKDIR}/99avahi-autoipd ${D}${sysconfdir}/udhcpc.d
+}
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/avahi/avahi_0.6.10.bb b/packages/avahi/avahi_0.6.10.bb
deleted file mode 100644
index 27dcdcffcb..0000000000
--- a/packages/avahi/avahi_0.6.10.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require avahi.inc
-
-PR = "r1"
diff --git a/packages/avahi/avahi_0.6.11.bb b/packages/avahi/avahi_0.6.11.bb
deleted file mode 100644
index 27dcdcffcb..0000000000
--- a/packages/avahi/avahi_0.6.11.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require avahi.inc
-
-PR = "r1"
diff --git a/packages/avahi/avahi_0.6.12.bb b/packages/avahi/avahi_0.6.12.bb
deleted file mode 100644
index aad7d2661c..0000000000
--- a/packages/avahi/avahi_0.6.12.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require avahi.inc
-
-PR = "r2"
-
-do_stage() {
- autotools_stage_all
-}
diff --git a/packages/avahi/avahi_0.6.13.bb b/packages/avahi/avahi_0.6.13.bb
deleted file mode 100644
index 076dc0d148..0000000000
--- a/packages/avahi/avahi_0.6.13.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require avahi.inc
-
-PR = "r1"
-
-do_stage() {
- autotools_stage_all
-}
diff --git a/packages/avahi/avahi_0.6.14.bb b/packages/avahi/avahi_0.6.14.bb
deleted file mode 100644
index e42f4bbc13..0000000000
--- a/packages/avahi/avahi_0.6.14.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require avahi.inc
-
-FILES_avahi-autoipd = "${sbindir}/avahi-autoipd \
- ${sysconfdir}/avahi/avahi-autoipd.action"
-
-do_stage() {
- autotools_stage_all
-}
diff --git a/packages/avahi/avahi_0.6.15.bb b/packages/avahi/avahi_0.6.15.bb
index 07a429e133..b7645bc50f 100644
--- a/packages/avahi/avahi_0.6.15.bb
+++ b/packages/avahi/avahi_0.6.15.bb
@@ -1,10 +1,3 @@
require avahi.inc
SRC_URI += "file://patch-avahi-daemon_dbus-protocol.c.patch;patch=1;pnum=0"
-
-FILES_avahi-autoipd = "${sbindir}/avahi-autoipd \
- ${sysconfdir}/avahi/avahi-autoipd.action"
-
-do_stage() {
- autotools_stage_all
-}
diff --git a/packages/avahi/avahi_0.6.5.bb b/packages/avahi/avahi_0.6.16.bb
index 9189734dfa..9189734dfa 100644
--- a/packages/avahi/avahi_0.6.5.bb
+++ b/packages/avahi/avahi_0.6.16.bb
diff --git a/packages/avahi/avahi_0.6.8.bb b/packages/avahi/avahi_0.6.17.bb
index 9189734dfa..9189734dfa 100644
--- a/packages/avahi/avahi_0.6.8.bb
+++ b/packages/avahi/avahi_0.6.17.bb
diff --git a/packages/avahi/avahi_0.6.18.bb b/packages/avahi/avahi_0.6.18.bb
new file mode 100644
index 0000000000..9189734dfa
--- /dev/null
+++ b/packages/avahi/avahi_0.6.18.bb
@@ -0,0 +1 @@
+require avahi.inc
diff --git a/packages/asterisk/asterisk-1.2.12.1/.mtn2git_empty b/packages/avahi/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/asterisk/asterisk-1.2.12.1/.mtn2git_empty
+++ b/packages/avahi/files/.mtn2git_empty
diff --git a/packages/avahi/files/00avahi-autoipd b/packages/avahi/files/00avahi-autoipd
new file mode 100755
index 0000000000..a0ab814603
--- /dev/null
+++ b/packages/avahi/files/00avahi-autoipd
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
+
+case "$1" in
+
+ deconfig|renew|bound)
+ /usr/sbin/avahi-autoipd -k $interface 2> /dev/null
+ ;;
+esac
diff --git a/packages/avahi/files/99avahi-autoipd b/packages/avahi/files/99avahi-autoipd
new file mode 100755
index 0000000000..234cdaa3eb
--- /dev/null
+++ b/packages/avahi/files/99avahi-autoipd
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
+
+case "$1" in
+
+ leasefail)
+ /usr/sbin/avahi-autoipd -wD $interface 2> /dev/null
+ ;;
+esac
diff --git a/packages/base-files/base-files/akita/fstab b/packages/base-files/base-files/akita/fstab
index 754f140b34..0b64a3bc80 100644
--- a/packages/base-files/base-files/akita/fstab
+++ b/packages/base-files/base-files/akita/fstab
@@ -13,4 +13,6 @@ tmpfs /media/ram tmpfs defaults 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
+
diff --git a/packages/asterisk/asterisk-1.2.8/.mtn2git_empty b/packages/base-files/base-files/angstrom/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/asterisk/asterisk-1.2.8/.mtn2git_empty
+++ b/packages/base-files/base-files/angstrom/.mtn2git_empty
diff --git a/packages/base-files/base-files/angstrom/issue b/packages/base-files/base-files/angstrom/issue
new file mode 100644
index 0000000000..302ba10e3d
--- /dev/null
+++ b/packages/base-files/base-files/angstrom/issue
@@ -0,0 +1,11 @@
+.-------.
+| | .-.
+| | |-----.-----.-----.| | .----..-----.-----.
+| | | __ | ---'| '--.| .-'| | |
+| | | | | |--- || --'| | | ' | | | |
+'---'---'--'--'--. |-----''----''--' '-----'-'-'-'
+ -' |
+ '---'
+
+The Angstrom Distribution \n \l
+
diff --git a/packages/base-files/base-files/angstrom/issue.net b/packages/base-files/base-files/angstrom/issue.net
new file mode 100644
index 0000000000..182fc83759
--- /dev/null
+++ b/packages/base-files/base-files/angstrom/issue.net
@@ -0,0 +1,12 @@
+.-------.
+| | .-.
+| | |-----.-----.-----.| | .----..-----.-----.
+| | | __ | ---'| '--.| .-'| | |
+| | | | | |--- || --'| | | ' | | | |
+'---'---'--'--'--. |-----''----''--' '-----'-'-'-'
+ -' |
+ '---'
+
+The Angstrom Distribution %h
+
+
diff --git a/packages/asterisk/asterisk-1.2.9.1/.mtn2git_empty b/packages/base-files/base-files/armzone-qt2410/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/asterisk/asterisk-1.2.9.1/.mtn2git_empty
+++ b/packages/base-files/base-files/armzone-qt2410/.mtn2git_empty
diff --git a/packages/base-files/base-files/armzone-qt2410/fstab b/packages/base-files/base-files/armzone-qt2410/fstab
new file mode 100644
index 0000000000..d339f800d3
--- /dev/null
+++ b/packages/base-files/base-files/armzone-qt2410/fstab
@@ -0,0 +1,16 @@
+# Root and Pseudo
+/dev/mtdblock4 / jffs2 rw,noatime 1 1
+proc /proc proc defaults 0 0
+
+# devpts?
+# usb?
+
+# Temporary
+tmpfs /var tmpfs defaults 0 0
+tmpfs /media/ram tmpfs defaults 0 0
+
+# SD/MMC
+/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
+
+# USB Storage
+/dev/sda1 /media/hdd vfat noauto,umask=000,noatime,iocharset=utf8,codepage=932 0 0
diff --git a/packages/base-files/base-files/openzaurus/.mtn2git_empty b/packages/base-files/base-files/efika/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/base-files/base-files/openzaurus/.mtn2git_empty
+++ b/packages/base-files/base-files/efika/.mtn2git_empty
diff --git a/packages/base-files/base-files/efika/fstab b/packages/base-files/base-files/efika/fstab
new file mode 100644
index 0000000000..ac92724dbc
--- /dev/null
+++ b/packages/base-files/base-files/efika/fstab
@@ -0,0 +1,5 @@
+rootfs / auto defaults 1 1
+proc /proc proc defaults 0 0
+devpts /dev/pts devpts mode=0620,gid=5 0 0
+usbfs /proc/bus/usb usbfs auto 0 0
+tmpfs /var tmpfs defaults 0 0
diff --git a/packages/bluez/files/openzaurus/.mtn2git_empty b/packages/base-files/base-files/ep93xx/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/bluez/files/openzaurus/.mtn2git_empty
+++ b/packages/base-files/base-files/ep93xx/.mtn2git_empty
diff --git a/packages/base-files/base-files/ep93xx/fstab b/packages/base-files/base-files/ep93xx/fstab
new file mode 100644
index 0000000000..ac92724dbc
--- /dev/null
+++ b/packages/base-files/base-files/ep93xx/fstab
@@ -0,0 +1,5 @@
+rootfs / auto defaults 1 1
+proc /proc proc defaults 0 0
+devpts /dev/pts devpts mode=0620,gid=5 0 0
+usbfs /proc/bus/usb usbfs auto 0 0
+tmpfs /var tmpfs defaults 0 0
diff --git a/packages/busybox/busybox-1.01/openzaurus/.mtn2git_empty b/packages/base-files/base-files/fic-gta01/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.01/openzaurus/.mtn2git_empty
+++ b/packages/base-files/base-files/fic-gta01/.mtn2git_empty
diff --git a/packages/base-files/base-files/fic-gta01/fstab b/packages/base-files/base-files/fic-gta01/fstab
new file mode 100644
index 0000000000..392422ea6f
--- /dev/null
+++ b/packages/base-files/base-files/fic-gta01/fstab
@@ -0,0 +1,17 @@
+# Root and Pseudo
+/dev/mtdblock4 / jffs2 rw,noatime 1 1
+proc /proc proc defaults 0 0
+
+# devpts?
+# usb?
+
+# Temporary
+tmpfs /tmp tmpfs defaults 0 0
+tmpfs /var tmpfs defaults 0 0
+tmpfs /media/ram tmpfs defaults 0 0
+
+# microSD slot
+/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
+
+# USB Storage
+/dev/sda1 /media/hdd vfat noauto,umask=000,noatime,iocharset=utf8,codepage=932 0 0
diff --git a/packages/base-files/base-files/fstab b/packages/base-files/base-files/fstab
index 8bfb08720f..00d0072a41 100644
--- a/packages/base-files/base-files/fstab
+++ b/packages/base-files/base-files/fstab
@@ -3,7 +3,7 @@
rootfs / auto defaults 1 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
-usbdevfs /proc/bus/usb usbdevfs noauto 0 0
+usbfs /proc/bus/usb usbfs defaults 0 0
tmpfs /var tmpfs defaults 0 0
tmpfs /media/ram tmpfs defaults 0 0
diff --git a/packages/base-files/base-files/h5000/fstab b/packages/base-files/base-files/h5000/fstab
index b44d7eacee..63711f989e 100644
--- a/packages/base-files/base-files/h5000/fstab
+++ b/packages/base-files/base-files/h5000/fstab
@@ -1,8 +1,8 @@
-/dev/mtdblock/1 / jffs2 defaults 1 1
+/dev/mtdblock1 / jffs2 defaults 1 1
#breaks h51xx
-/dev/mtdblock/2 /home jffs2 defaults 1 1
+/dev/mtdblock2 /home jffs2 defaults 1 1
proc /proc proc defaults 0 0
/dev/hda1 /media/cf auto defaults,noauto,noatime,user,exec,suid 0 0
-/dev/mmc/part1 /media/card auto defaults,noauto,noatime,user,exec,suid 0 0
+/dev/mmcblk0p1 /media/card auto defaults,noauto,noatime,user,exec,suid 0 0
tmpfs /var tmpfs defaults 0 0
tmpfs /media/ram tmpfs defaults 0 0
diff --git a/packages/base-files/base-files/htcuniversal/fstab b/packages/base-files/base-files/htcuniversal/fstab
index b776dc0641..21b2bb1360 100644
--- a/packages/base-files/base-files/htcuniversal/fstab
+++ b/packages/base-files/base-files/htcuniversal/fstab
@@ -1,12 +1,10 @@
-# stock fstab - you probably want to override this with a machine specific one
-
rootfs / auto defaults 1 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
-#usbfs /proc/bus/usb usbfs noauto 0 0
+usbfs /proc/bus/usb usbfs defaults 0 0
tmpfs /var tmpfs defaults 0 0
tmpfs /media/ram tmpfs defaults 0 0
# uncomment this if your device has a SD/MMC/Transflash slot
-#/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
+/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
diff --git a/packages/base-files/base-files/netbook-pro/fstab b/packages/base-files/base-files/netbook-pro/fstab
index d10c78bd66..ac92724dbc 100644
--- a/packages/base-files/base-files/netbook-pro/fstab
+++ b/packages/base-files/base-files/netbook-pro/fstab
@@ -1,5 +1,5 @@
rootfs / auto defaults 1 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
-usbdevfs /proc/bus/usb usbdevfs noauto 0 0
+usbfs /proc/bus/usb usbfs auto 0 0
tmpfs /var tmpfs defaults 0 0
diff --git a/packages/base-files/base-files/nokia770/fstab b/packages/base-files/base-files/nokia770/fstab
index 68b56b63e3..40823df5fa 100644
--- a/packages/base-files/base-files/nokia770/fstab
+++ b/packages/base-files/base-files/nokia770/fstab
@@ -3,4 +3,4 @@ rootfs / rootfs defaults,errors=remount-ro,noatime 0
tmpfs /var tmpfs defaults 0 0
tmpfs /media/ram tmpfs defaults 0 0
proc /proc proc defaults 0 0
-usbdevfs /proc/bus/usb usbdevfs noauto 0 0
+usbfs /proc/bus/usb usbfs defaults 0 0
diff --git a/packages/base-files/base-files/openzaurus/issue b/packages/base-files/base-files/openzaurus/issue
deleted file mode 100644
index 1983c15318..0000000000
--- a/packages/base-files/base-files/openzaurus/issue
+++ /dev/null
@@ -1,2 +0,0 @@
-OpenZaurus Unofficial Snapshot Version \n \l
-
diff --git a/packages/base-files/base-files/openzaurus/issue.net b/packages/base-files/base-files/openzaurus/issue.net
deleted file mode 100644
index 17bc7423f9..0000000000
--- a/packages/base-files/base-files/openzaurus/issue.net
+++ /dev/null
@@ -1,2 +0,0 @@
-OpenZaurus Unofficial Snapshot %h
-
diff --git a/packages/contacts/.mtn2git_empty b/packages/base-files/base-files/oplinux-uclibc/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/contacts/.mtn2git_empty
+++ b/packages/base-files/base-files/oplinux-uclibc/.mtn2git_empty
diff --git a/packages/base-files/base-files/oplinux-uclibc/issue b/packages/base-files/base-files/oplinux-uclibc/issue
new file mode 100644
index 0000000000..9d0ef9c636
--- /dev/null
+++ b/packages/base-files/base-files/oplinux-uclibc/issue
@@ -0,0 +1,14 @@
+.-------.-------. .---. .---. .---. .---.
+| | __ | | | '---' \ \/ /
+| | | | | | .---.-----.--.--.\ /
+| | | .---' | '--| | | | |/ \
+| | | | | | | | | /\ \
+'-------'---' '------'---'--'--'-----'--' '---'
+=====================================================
+ .--.--.-----.--. .--.-----.-----.
+ | | | __| | | | -- | __|
+ | | | '-| | -- | |
+ '-----'-----'----'--'-----'-----'
+
+The OPLinux-uclibc distribution \l
+
diff --git a/packages/base-files/base-files/oplinux-uclibc/issue.net b/packages/base-files/base-files/oplinux-uclibc/issue.net
new file mode 100644
index 0000000000..b74869dba1
--- /dev/null
+++ b/packages/base-files/base-files/oplinux-uclibc/issue.net
@@ -0,0 +1,16 @@
+.-------.-------. .---. .---. .---. .---.
+| | __ | | | '---' \ \/ /
+| | | | | | .---.-----.--.--.\ /
+| | | .---' | '--| | | | |/ \
+| | | | | | | | | /\ \
+'-------'---' '------'---'--'--'-----'--' '---'
+=====================================================
+ .--.--.-----.--. .--.-----.-----.
+ | | | __| | | | -- | __|
+ | | | '-| | -- | |
+ '-----'-----'----'--'-----'-----'
+
+
+The OPLinux-uclibc distribution %h
+
+
diff --git a/packages/base-files/base-files/oplinux-uclibc/motd b/packages/base-files/base-files/oplinux-uclibc/motd
new file mode 100644
index 0000000000..5fad7d5707
--- /dev/null
+++ b/packages/base-files/base-files/oplinux-uclibc/motd
@@ -0,0 +1,12 @@
+.-------.-------. .---. .---. .---. .---.
+| | __ | | | '---' \ \/ /
+| | | | | | .---.-----.--.--.\ /
+| | | .---' | '--| | | | |/ \
+| | | | | | | | | /\ \
+'-------'---' '------'---'--'--'-----'--' '---'
+=====================================================
+ .--.--.-----.--. .--.-----.-----.
+ | | | __| | | | -- | __|
+ | | | '-| | -- | |
+ '-----'-----'----'--'-----'-----'
+
diff --git a/packages/base-files/base-files/oplinux-uclibc/profile b/packages/base-files/base-files/oplinux-uclibc/profile
new file mode 100644
index 0000000000..f6ae329b57
--- /dev/null
+++ b/packages/base-files/base-files/oplinux-uclibc/profile
@@ -0,0 +1,32 @@
+# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
+# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
+
+PATH="/usr/local/bin:/usr/bin:/bin"
+EDITOR="/usr/bin/nano" # needed for packages like cron
+TERM="linux" # Basic terminal capab. For screen etc.
+
+if [ ! -e /etc/localtime ]; then
+ TZ="UTC" # Time Zone. Look at http://theory.uwinnipeg.ca/gnu/glibc/libc_303.html
+ # for an explanation of how to set this to your local timezone.
+ export TZ
+fi
+
+if [ "`id -u`" -eq 0 ]; then
+ PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:
+fi
+if [ "$PS1" ]; then
+# works for bash and ash (no other shells known to be in use here)
+ PS1='\u@\h:\w\$ '
+fi
+
+if [ -d /etc/profile.d ]; then
+ for i in `ls /etc/profile.d/`; do
+ . /etc/profile.d/$i
+ done
+ unset i
+fi
+
+export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM
+
+umask 022
+
diff --git a/packages/contacts/files/.mtn2git_empty b/packages/base-files/base-files/oplinux/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/contacts/files/.mtn2git_empty
+++ b/packages/base-files/base-files/oplinux/.mtn2git_empty
diff --git a/packages/base-files/base-files/oplinux/issue b/packages/base-files/base-files/oplinux/issue
new file mode 100644
index 0000000000..9b9c437510
--- /dev/null
+++ b/packages/base-files/base-files/oplinux/issue
@@ -0,0 +1,10 @@
+.-------.-------. .---. .---. .---. .---.
+| | __ | | | '---' \ \/ /
+| | | | | | .---.-----.--.--.\ /
+| | | .---' | '--| | | | |/ \
+| | | | | | | | | /\ \
+'-------'---' '------'---'--'--'-----'--' '---'
+=====================================================
+
+The OPLinux distribution \l
+
diff --git a/packages/base-files/base-files/oplinux/issue.net b/packages/base-files/base-files/oplinux/issue.net
new file mode 100644
index 0000000000..93a6f8a7d5
--- /dev/null
+++ b/packages/base-files/base-files/oplinux/issue.net
@@ -0,0 +1,11 @@
+.-------.-------. .---. .---. .---. .---.
+| | __ | | | '---' \ \/ /
+| | | | | | .---.-----.--.--.\ /
+| | | .---' | '--| | | | |/ \
+| | | | | | | | | /\ \
+'-------'---' '------'---'--'--'-----'--' '---'
+=====================================================
+
+The OPLinux distribution %h
+
+
diff --git a/packages/base-files/base-files/oplinux/motd b/packages/base-files/base-files/oplinux/motd
new file mode 100644
index 0000000000..10e458b9b5
--- /dev/null
+++ b/packages/base-files/base-files/oplinux/motd
@@ -0,0 +1,8 @@
+.-------.-------. .---. .---. .---. .---.
+| | __ | | | '---' \ \/ /
+| | | | | | .---.-----.--.--.\ /
+| | | .---' | '--| | | | |/ \
+| | | | | | | | | /\ \
+'-------'---' '------'---'--'--'-----'--' '---'
+=====================================================
+
diff --git a/packages/base-files/base-files/oplinux/profile b/packages/base-files/base-files/oplinux/profile
new file mode 100644
index 0000000000..f6ae329b57
--- /dev/null
+++ b/packages/base-files/base-files/oplinux/profile
@@ -0,0 +1,32 @@
+# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
+# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
+
+PATH="/usr/local/bin:/usr/bin:/bin"
+EDITOR="/usr/bin/nano" # needed for packages like cron
+TERM="linux" # Basic terminal capab. For screen etc.
+
+if [ ! -e /etc/localtime ]; then
+ TZ="UTC" # Time Zone. Look at http://theory.uwinnipeg.ca/gnu/glibc/libc_303.html
+ # for an explanation of how to set this to your local timezone.
+ export TZ
+fi
+
+if [ "`id -u`" -eq 0 ]; then
+ PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:
+fi
+if [ "$PS1" ]; then
+# works for bash and ash (no other shells known to be in use here)
+ PS1='\u@\h:\w\$ '
+fi
+
+if [ -d /etc/profile.d ]; then
+ for i in `ls /etc/profile.d/`; do
+ . /etc/profile.d/$i
+ done
+ unset i
+fi
+
+export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM
+
+umask 022
+
diff --git a/packages/base-files/base-files/profile b/packages/base-files/base-files/profile
index a4c16944b9..3dc22f316a 100644
--- a/packages/base-files/base-files/profile
+++ b/packages/base-files/base-files/profile
@@ -2,8 +2,8 @@
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
PATH="/usr/local/bin:/usr/bin:/bin"
-EDITOR="/bin/vi" # needed for packages like cron
-TERM="vt100" # Basic terminal capab. For screen etc.
+EDITOR="/bin/vi" # needed for packages like cron
+test -z "$TERM" && TERM="vt100" # Basic terminal capab. For screen etc.
if [ ! -e /etc/localtime ]; then
TZ="UTC" # Time Zone. Look at http://theory.uwinnipeg.ca/gnu/glibc/libc_303.html
diff --git a/packages/base-files/base-files/spitz/fstab b/packages/base-files/base-files/spitz/fstab
index 3d0e508dfd..a1fb3d4da1 100644
--- a/packages/base-files/base-files/spitz/fstab
+++ b/packages/base-files/base-files/spitz/fstab
@@ -19,7 +19,7 @@ tmpfs /media/ram tmpfs defaults 0 0
#
/dev/sda1 /media/usbhdd vfat noauto,umask=000,noatime,iocharset=utf8,codepage=932 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
-usbfs /proc/bus/usb usbfs noauto 0 0
+usbfs /proc/bus/usb usbfs defaults 0 0
#
# Harddisk
diff --git a/packages/base-files/base-files/tosa/fstab b/packages/base-files/base-files/tosa/fstab
index fb37e07aec..4a784180ca 100644
--- a/packages/base-files/base-files/tosa/fstab
+++ b/packages/base-files/base-files/tosa/fstab
@@ -6,6 +6,8 @@ proc /proc proc defaults 0 0
tmpfs /var tmpfs defaults 0 0
tmpfs /media/ram tmpfs defaults 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
# SD/MMC in kernel 2.6
diff --git a/packages/base-files/base-files_3.0.14.bb b/packages/base-files/base-files_3.0.14.bb
index c5cc234f7d..1e80f4c7f3 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 = "r55"
+PR = "r65"
LICENSE = "GPL"
SRC_URI = " \
@@ -136,7 +136,7 @@ do_install_append_netbook-pro () {
}
PACKAGES = "${PN}-doc ${PN}"
-FILES_${PN} = "/"
+FILES_${PN} = "/*"
FILES_${PN}-doc = "${docdir} ${datadir}/common-licenses"
# M&N specific packaging
diff --git a/packages/bash/bash.inc b/packages/bash/bash.inc
new file mode 100644
index 0000000000..80aedfa1c8
--- /dev/null
+++ b/packages/bash/bash.inc
@@ -0,0 +1,26 @@
+DESCRIPTION = "An sh-compatible command language interpreter."
+HOMEPAGE = "http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html"
+DEPENDS = "ncurses"
+SECTION = "base/shell"
+LICENSE = "GPL"
+
+inherit autotools gettext
+
+PARALLEL_MAKE = ""
+
+bindir = "/bin"
+sbindir = "/sbin"
+
+EXTRA_OECONF = "--with-ncurses"
+export CC_FOR_BUILD = "${BUILD_CC}"
+
+do_configure () {
+ gnu-configize
+ oe_runconf
+}
+
+pkg_postinst () {
+ touch ${sysconfdir}/shells
+ grep -q "bin/bash" ${sysconfdir}/shells || echo /bin/bash >> ${sysconfdir}/shells
+ grep -q "bin/sh" ${sysconfdir}/shells || echo /bin/sh >> ${sysconfdir}/shells
+}
diff --git a/packages/bash/bash_3.0.bb b/packages/bash/bash_3.0.bb
index 75da58b00b..b4fb26a60f 100644
--- a/packages/bash/bash_3.0.bb
+++ b/packages/bash/bash_3.0.bb
@@ -1,30 +1,6 @@
-DESCRIPTION = "An sh-compatible command language interpreter."
-HOMEPAGE = "http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html"
-DEPENDS = "ncurses"
-SECTION = "base/shell"
-LICENSE = "GPL"
-PR = "r7"
+require bash.inc
+PR = "r8"
SRC_URI = "${GNU_MIRROR}/bash/bash-${PV}.tar.gz \
file://bash-3.0-fixes.patch;patch=1 \
file://signames-mipsel.diff;patch=1"
-
-inherit autotools gettext
-
-PARALLEL_MAKE = ""
-
-bindir = "/bin"
-sbindir = "/sbin"
-
-EXTRA_OECONF = "--with-ncurses"
-export CC_FOR_BUILD = "${BUILD_CC}"
-
-do_configure () {
- gnu-configize
- oe_runconf
-}
-
-pkg_postinst () {
- grep -q "bin/bash" ${sysconfdir}/shells || echo /bin/bash >> ${sysconfdir}/shells
- grep -q "bin/sh" ${sysconfdir}/shells || echo /bin/sh >> ${sysconfdir}/shells
-}
diff --git a/packages/bash/bash_3.2.bb b/packages/bash/bash_3.2.bb
index e3d6b0560c..8e0293e001 100644
--- a/packages/bash/bash_3.2.bb
+++ b/packages/bash/bash_3.2.bb
@@ -1,28 +1,5 @@
-DESCRIPTION = "An sh-compatible command language interpreter."
-HOMEPAGE = "http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html"
-DEPENDS = "ncurses"
-SECTION = "base/shell"
-LICENSE = "GPL"
+require bash.inc
+PR = "r1"
SRC_URI = "${GNU_MIRROR}/bash/bash-${PV}.tar.gz \
file://001-005.patch;patch=1"
-
-inherit autotools gettext
-
-PARALLEL_MAKE = ""
-
-bindir = "/bin"
-sbindir = "/sbin"
-
-EXTRA_OECONF = "--with-ncurses"
-export CC_FOR_BUILD = "${BUILD_CC}"
-
-do_configure () {
- gnu-configize
- oe_runconf
-}
-
-pkg_postinst () {
- grep -q "bin/bash" ${sysconfdir}/shells || echo /bin/bash >> ${sysconfdir}/shells
- grep -q "bin/sh" ${sysconfdir}/shells || echo /bin/sh >> ${sysconfdir}/shells
-}
diff --git a/packages/dates/.mtn2git_empty b/packages/bb/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/dates/.mtn2git_empty
+++ b/packages/bb/.mtn2git_empty
diff --git a/packages/bb/bb_1.2.bb b/packages/bb/bb_1.2.bb
new file mode 100644
index 0000000000..0629f74faf
--- /dev/null
+++ b/packages/bb/bb_1.2.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "bb, The portable aalib demo"
+HOMEPAGE = "http://aa-project.sourceforge.net/bb/"
+SECTION = "console/misc"
+LICENSE = "GPLv2"
+DEPENDS = "aalib"
+PR = "r1"
+
+SRC_URI = "http://prdownloads.sourceforge.net/aa-project/bb-1.2.tar.gz \
+ file://fix-compile.patch;patch=1"
+
+inherit autotools
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 755 bb ${D}${bindir}
+}
diff --git a/packages/familiar/.mtn2git_empty b/packages/bb/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/familiar/.mtn2git_empty
+++ b/packages/bb/files/.mtn2git_empty
diff --git a/packages/bb/files/fix-compile.patch b/packages/bb/files/fix-compile.patch
new file mode 100644
index 0000000000..75641da1e5
--- /dev/null
+++ b/packages/bb/files/fix-compile.patch
@@ -0,0 +1,166 @@
+Index: bb-1.2/bb.h
+===================================================================
+--- bb-1.2.orig/bb.h
++++ bb-1.2/bb.h
+@@ -23,7 +23,11 @@
+
+ #ifndef BB_H
+ #define BB_H
++//#include <aaint.h>
+ #include <aalib.h>
++struct parameters {
++ unsigned int p[AA_NPARAMS];
++};
+ #include "image.h"
+ #include "timers.h"
+ struct font {
+Index: bb-1.2/textform.c
+===================================================================
+--- bb-1.2.orig/textform.c
++++ bb-1.2/textform.c
+@@ -155,41 +155,41 @@ static char *text = "#cWell we've reache
+ "#c\n"
+ "#bThree goals of AA-Project:#n"
+ "\n\n"
+-"#f1)Port all important software (like Doom, Second Reality, X windows etc..) on new AA-lib.
+-
+-2)Port AA-lib on all available platforms (mainly ZX-Spectrum and Sharp).
+-
+-3)Force IBM to start manufacturing MDA cards again.
+-
+-AA-project was started by Jan Hubicka. In that times just few people knew about \
+-it. Then a new demo named BB has been relased to show the power \
+-of AA-lib technology. Now the project is freely available and anyone can help.
+-
+-Just join our mailing list: #baa#n at#b horac.ta.jcu.cz.#n by sending #bsubscribe aa#n to majordomo.
+-
+-All programs covered under AA-project can be obtained at
+-#c#bftp://ftp.ta.jcu.cz://pub/aa#n
+-#c
+-Or just browse our homepage at #bhttp://www.ta.jcu.cz://aa#n. Ton of \
+-examples of ascii-art generated by aalib, pointers to other AA-Project \
+-resources etc.
+-
+- We decided to distribute all of our aa-related programs freely (see \
+-COPYING for details). But if you want to help us develop more such software \
+-send a small amount (or big one ;-) to AA/BB maintainer address:
+-
+-Kamil Toman
+-CS Armady 1930, Tabor
+-390 03
+-Czech republic
+-
+-and contact us at:
+-
+-kupsaf@feld.cvut.cz (Filip Kupsa)
+-hubicka@paru.cas.cz (Jan Hubicka)
+-titania@horac.ta.jcu.cz (Mojmir Svoboda)
+-toman@horac.ta.jcu.cz (Kamil Toman)
+-#f"
++"#f1)Port all important software (like Doom, Second Reality, X windows etc..) on new AA-lib.\n"
++"\n"
++"2)Port AA-lib on all available platforms (mainly ZX-Spectrum and Sharp).\n"
++"\n"
++"3)Force IBM to start manufacturing MDA cards again.\n"
++"\n"
++"AA-project was started by Jan Hubicka. In that times just few people knew about "
++"it. Then a new demo named BB has been relased to show the power "
++"of AA-lib technology. Now the project is freely available and anyone can help.\n"
++"\n"
++"Just join our mailing list: #baa#n at#b horac.ta.jcu.cz.#n by sending #bsubscribe aa#n to majordomo.\n"
++"\n"
++"All programs covered under AA-project can be obtained at\n"
++"#c#bftp://ftp.ta.jcu.cz://pub/aa#n\n"
++"#c\n"
++"Or just browse our homepage at #bhttp://www.ta.jcu.cz://aa#n. Ton of "
++"examples of ascii-art generated by aalib, pointers to other AA-Project "
++"resources etc. \n"
++" \n"
++" We decided to distribute all of our aa-related programs freely (see "
++"COPYING for details). But if you want to help us develop more such software "
++"send a small amount (or big one ;-) to AA/BB maintainer address: \n"
++"\n"
++"Kamil Toman\n"
++"CS Armady 1930, Tabor\n"
++"390 03\n"
++"Czech republic\n"
++"\n"
++"and contact us at:\n"
++"\n"
++"kupsaf@feld.cvut.cz (Filip Kupsa)\n"
++"hubicka@paru.cas.cz (Jan Hubicka)\n"
++"titania@horac.ta.jcu.cz (Mojmir Svoboda)\n"
++"toman@horac.ta.jcu.cz (Kamil Toman)\n"
++"#f"
+ "\n"
+ "#l\n"
+ "#c#bAvailable programs#n\n"
+@@ -245,37 +245,37 @@ toman@horac.ta.jcu.cz (Kamil Toman)
+ "\n#l"
+ "\n"
+ "#c#bThe AA-Lib#n\n"
+-"#f#c
+-AA-lib is a low level gfx library just as many other libraries are. The \
+-main difference is that AA-lib does not require graphics device. In fact, \
+-there is no graphical output possible. AA-lib replaces those old-fashioned \
+-output methods with powerful ascii-art renderer. Now my linux boots \
+-with a nice penguin logo at secondary display (yes! Like Win95 does:) \
+-AA-lib API is designed to be similar to other graphics libraries. Learning \
+-a new API would be a piece of cake! \
+-#f
+-
+-#l
+-#c#bThe history#n
+-#f
+-Once upon a time we've (my friend Kamil and I) bought two old Herculeses \
+-as secondary monitors. We didn't know for that time that our Diamond \
+-Stealths 64 cards would become obsolete soon. Next day we downloaded \
+-the logo of Linux Texas Users Group \
+-- nice silly penguin looking like a cowboy! It was so exciting logo ... we \
+-decided that we couldn't live without it and we wanted to see it every time \
+-at a boot time as a logo on our secondary monitors. There was a small problem \
+-- Hercules doesn't support color graphics. So we decided to convert an image \
+-to ascii art using netpbm tools.
+-
+-The output was very ugly because the converting algorithm was absolutly stupid. \
+-During the night I designed a new convertor that used a font bitmap for \
+-creating aproximation table. The output wasn't very good since the algorithm \
+-wasn't so well tuned. Many months this small piece of code was waiting on my \
+-disc for the day \"D\". Meanwhile I started a new project XaoS (a fractal zoomer) \
+-with my friend Thomas. And then I got an idea: Ascii Art Mandelbrots! \
+-I was really impressed by the result! XaoS was faster, portable and looking \
+-much better than ever before. I found a new way to go... "
++"#f#c"
++"AA-lib is a low level gfx library just as many other libraries are. The "
++"main difference is that AA-lib does not require graphics device. In fact, "
++"there is no graphical output possible. AA-lib replaces those old-fashioned "
++"output methods with powerful ascii-art renderer. Now my linux boots "
++"with a nice penguin logo at secondary display (yes! Like Win95 does:) "
++"AA-lib API is designed to be similar to other graphics libraries. Learning "
++"a new API would be a piece of cake! "
++"#f"
++"\n"
++"#l"
++"#c#bThe history#n"
++"#f"
++"Once upon a time we've (my friend Kamil and I) bought two old Herculeses "
++"as secondary monitors. We didn't know for that time that our Diamond "
++"Stealths 64 cards would become obsolete soon. Next day we downloaded "
++"the logo of Linux Texas Users Group "
++"- nice silly penguin looking like a cowboy! It was so exciting logo ... we "
++"decided that we couldn't live without it and we wanted to see it every time "
++"at a boot time as a logo on our secondary monitors. There was a small problem "
++"- Hercules doesn't support color graphics. So we decided to convert an image "
++"to ascii art using netpbm tools."
++"\n"
++"The output was very ugly because the converting algorithm was absolutly stupid. "
++"During the night I designed a new convertor that used a font bitmap for "
++"creating aproximation table. The output wasn't very good since the algorithm "
++"wasn't so well tuned. Many months this small piece of code was waiting on my "
++"disc for the day \"D\". Meanwhile I started a new project XaoS (a fractal zoomer) "
++"with my friend Thomas. And then I got an idea: Ascii Art Mandelbrots! "
++"I was really impressed by the result! XaoS was faster, portable and looking "
++"much better than ever before. I found a new way to go... "
+ "#c\n"
+ "#f\n"
+ "\n"
diff --git a/packages/beepmp/beepmp_0.9.7.bb b/packages/beepmp/beepmp_0.9.7.bb
index e83237a18b..6eb86fa101 100644
--- a/packages/beepmp/beepmp_0.9.7.bb
+++ b/packages/beepmp/beepmp_0.9.7.bb
@@ -3,7 +3,7 @@
# Released under the MIT license (see packages/COPYING)
DESCRIPTION = "A GTK2 based media player that looks alot like XMMS"
-SECTION = "x11/multimedia"
+SECTION = "x11/multimedia"
HOMEPAGE = "http://beepmp.sourceforge.net"
LICENSE = "GPL"
diff --git a/packages/gnome/gnome-vfs-dbus/.mtn2git_empty b/packages/binutils/binutils-2.17.50.0.12/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gnome/gnome-vfs-dbus/.mtn2git_empty
+++ b/packages/binutils/binutils-2.17.50.0.12/.mtn2git_empty
diff --git a/packages/binutils/binutils-2.17.50.0.12/110-arm-eabi-conf.patch b/packages/binutils/binutils-2.17.50.0.12/110-arm-eabi-conf.patch
new file mode 100644
index 0000000000..be85ceb109
--- /dev/null
+++ b/packages/binutils/binutils-2.17.50.0.12/110-arm-eabi-conf.patch
@@ -0,0 +1,24 @@
+diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure
+--- binutils-2.16.91.0.7.orig/configure 2006-05-31 14:54:24.000000000 +0300
++++ binutils-2.16.91.0.7/configure 2006-05-31 14:55:53.000000000 +0300
+@@ -1299,7 +1299,7 @@
+ arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
+ noconfigdirs="$noconfigdirs target-libffi target-qthreads"
+ ;;
+- arm*-*-linux-gnueabi)
++ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
+ noconfigdirs="$noconfigdirs target-libffi target-qthreads"
+ noconfigdirs="$noconfigdirs target-libjava target-libobjc"
+ ;;
+diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in
+--- binutils-2.16.91.0.7.orig/configure.in 2006-05-31 14:54:24.000000000 +0300
++++ binutils-2.16.91.0.7/configure.in 2006-05-31 14:55:53.000000000 +0300
+@@ -497,7 +497,7 @@
+ arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
+ noconfigdirs="$noconfigdirs target-libffi target-qthreads"
+ ;;
+- arm*-*-linux-gnueabi)
++ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
+ noconfigdirs="$noconfigdirs target-libffi target-qthreads"
+ noconfigdirs="$noconfigdirs target-libjava target-libobjc"
+ ;;
diff --git a/packages/binutils/binutils-2.17.50.0.12/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch b/packages/binutils/binutils-2.17.50.0.12/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch
new file mode 100644
index 0000000000..4461bedd4e
--- /dev/null
+++ b/packages/binutils/binutils-2.17.50.0.12/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch
@@ -0,0 +1,31 @@
+# strip (and objcopy) fail to set the error code if there is no
+# output file name and the rename of the stripped (or copied) file
+# fails, yet the command fails to do anything. This fixes both
+# objcopy and strip.
+#
+# modification by bero: Ported to 2.16.91.0.6
+#
+#Signed-off-by: John Bowler <jbowler@acm.org>
+#Signed-off-by: Bernhard Rosenkraenzer <bero@arklinux.org>
+--- binutils-2.16.91.0.6/binutils/objcopy.c.ark 2006-03-11 15:59:07.000000000 +0100
++++ binutils-2.16.91.0.6/binutils/objcopy.c 2006-03-11 15:59:45.000000000 +0100
+@@ -2593,7 +2593,8 @@
+ if (preserve_dates)
+ set_times (tmpname, &statbuf);
+ if (output_file == NULL)
+- smart_rename (tmpname, argv[i], preserve_dates);
++ if(smart_rename (tmpname, argv[i], preserve_dates))
++ hold_status = 1;
+ status = hold_status;
+ }
+ else
+@@ -3184,7 +3185,8 @@
+ {
+ if (preserve_dates)
+ set_times (tmpname, &statbuf);
+- smart_rename (tmpname, input_filename, preserve_dates);
++ if (smart_rename (tmpname, input_filename, preserve_dates))
++ status = 1;
+ }
+ else
+ unlink (tmpname);
diff --git a/packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-100-uclibc-conf.patch b/packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-100-uclibc-conf.patch
new file mode 100644
index 0000000000..25222e5df2
--- /dev/null
+++ b/packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-100-uclibc-conf.patch
@@ -0,0 +1,139 @@
+--- binutils-2.16.91.0.7/bfd/configure
++++ binutils-2.16.91.0.7/bfd/configure
+@@ -3576,7 +3576,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux-gnu*|linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- binutils-2.16.91.0.7/binutils/configure
++++ binutils-2.16.91.0.7/binutils/configure
+@@ -3411,7 +3411,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux-gnu*|linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- binutils-2.16.91.0.7/configure
++++ binutils-2.16.91.0.7/configure
+@@ -1270,7 +1270,7 @@
+ am33_2.0-*-linux*)
+ noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
+ ;;
+- sh-*-linux*)
++ sh*-*-linux*)
+ noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
+ ;;
+ sh*-*-pe|mips*-*-pe|*arm-wince-pe)
+@@ -1578,7 +1578,7 @@
+ romp-*-*)
+ noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
+ ;;
+- sh-*-* | sh64-*-*)
++ sh*-*-* | sh64-*-*)
+ case "${host}" in
+ i[3456789]86-*-vsta) ;; # don't add gprof back in
+ i[3456789]86-*-go32*) ;; # don't add gprof back in
+--- binutils-2.16.91.0.7/configure.in
++++ binutils-2.16.91.0.7/configure.in
+@@ -468,7 +468,7 @@
+ am33_2.0-*-linux*)
+ noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
+ ;;
+- sh-*-linux*)
++ sh*-*-linux*)
+ noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
+ ;;
+ sh*-*-pe|mips*-*-pe|*arm-wince-pe)
+@@ -776,7 +776,7 @@
+ romp-*-*)
+ noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
+ ;;
+- sh-*-* | sh64-*-*)
++ sh*-*-* | sh64-*-*)
+ case "${host}" in
+ i[[3456789]]86-*-vsta) ;; # don't add gprof back in
+ i[[3456789]]86-*-go32*) ;; # don't add gprof back in
+--- binutils-2.16.91.0.7/gas/configure
++++ binutils-2.16.91.0.7/gas/configure
+@@ -3411,7 +3411,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux-gnu*|linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- binutils-2.16.91.0.7/gprof/configure
++++ binutils-2.16.91.0.7/gprof/configure
+@@ -3419,6 +3419,11 @@
+ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+ ;;
+
++linux-uclibc*)
++ lt_cv_deplibs_check_method=pass_all
++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
++ ;;
++
+ netbsd* | knetbsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
+--- binutils-2.16.91.0.7/ld/configure
++++ binutils-2.16.91.0.7/ld/configure
+@@ -3413,7 +3413,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux-gnu*|linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- binutils-2.16.91.0.7/libtool.m4
++++ binutils-2.16.91.0.7/libtool.m4
+@@ -739,7 +739,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux-gnu*|linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+--- binutils-2.16.91.0.7/ltconfig
++++ binutils-2.16.91.0.7/ltconfig
+@@ -602,6 +602,7 @@
+
+ # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+ case $host_os in
++linux-uclibc*) ;;
+ linux-gnu*) ;;
+ linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+ esac
+@@ -1247,7 +1248,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux-gnu*|linux-uclibc*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+--- binutils-2.16.91.0.7/opcodes/configure
++++ binutils-2.16.91.0.7/opcodes/configure
+@@ -3579,7 +3579,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux-gnu*)
++linux-gnu*|linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
diff --git a/packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-300-001_ld_makefile_patch.patch b/packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-300-001_ld_makefile_patch.patch
new file mode 100644
index 0000000000..04a7e61e25
--- /dev/null
+++ b/packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-300-001_ld_makefile_patch.patch
@@ -0,0 +1,50 @@
+#!/bin/sh -e
+## 001_ld_makefile_patch.dpatch
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Description: correct where ld scripts are installed
+## DP: Author: Chris Chimelis <chris@debian.org>
+## DP: Upstream status: N/A
+## DP: Date: ??
+
+if [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+
+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
+
+case "$1" in
+ -patch) patch $patch_opts -p1 < $0;;
+ -unpatch) patch $patch_opts -p1 -R < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1;;
+esac
+
+exit 0
+
+@DPATCH@
+--- binutils-2.16.91.0.1/ld/Makefile.am
++++ binutils-2.16.91.0.1/ld/Makefile.am
+@@ -20,7 +20,7 @@
+ # We put the scripts in the directory $(scriptdir)/ldscripts.
+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
+ # directives need to be different for native and cross linkers.
+-scriptdir = $(tooldir)/lib
++scriptdir = $(libdir)
+
+ EMUL = @EMUL@
+ EMULATION_OFILES = @EMULATION_OFILES@
+--- binutils-2.16.91.0.1/ld/Makefile.in
++++ binutils-2.16.91.0.1/ld/Makefile.in
+@@ -268,7 +268,7 @@
+ # We put the scripts in the directory $(scriptdir)/ldscripts.
+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
+ # directives need to be different for native and cross linkers.
+-scriptdir = $(tooldir)/lib
++scriptdir = $(libdir)
+ BASEDIR = $(srcdir)/..
+ BFDDIR = $(BASEDIR)/bfd
+ INCDIR = $(BASEDIR)/include
diff --git a/packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-300-006_better_file_error.patch b/packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-300-006_better_file_error.patch
new file mode 100644
index 0000000000..f337611edf
--- /dev/null
+++ b/packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-300-006_better_file_error.patch
@@ -0,0 +1,43 @@
+#!/bin/sh -e
+## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Specify which filename is causing an error if the filename is a
+## DP: directory. (#45832)
+
+if [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+
+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
+
+case "$1" in
+ -patch) patch $patch_opts -p1 < $0;;
+ -unpatch) patch $patch_opts -p1 -R < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1;;
+esac
+
+exit 0
+
+@DPATCH@
+diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
+--- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c 2003-07-23 16:08:09.000000000 +0100
++++ binutils-2.14.90.0.6/bfd/opncls.c 2003-09-10 22:35:00.000000000 +0100
+@@ -150,6 +150,13 @@
+ {
+ bfd *nbfd;
+ const bfd_target *target_vec;
++ struct stat s;
++
++ if (stat (filename, &s) == 0)
++ if (S_ISDIR(s.st_mode)) {
++ bfd_set_error (bfd_error_file_not_recognized);
++ return NULL;
++ }
+
+ nbfd = _bfd_new_bfd ();
+ if (nbfd == NULL)
diff --git a/packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-300-012_check_ldrunpath_length.patch b/packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-300-012_check_ldrunpath_length.patch
new file mode 100644
index 0000000000..498651a90c
--- /dev/null
+++ b/packages/binutils/binutils-2.17.50.0.12/binutils-uclibc-300-012_check_ldrunpath_length.patch
@@ -0,0 +1,47 @@
+#!/bin/sh -e
+## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
+## DP: cases where -rpath isn't specified. (#151024)
+
+if [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+
+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
+
+case "$1" in
+ -patch) patch $patch_opts -p1 < $0;;
+ -unpatch) patch $patch_opts -p1 -R < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1;;
+esac
+
+exit 0
+
+@DPATCH@
+diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
+--- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:58.000000000 +0100
++++ binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:59.000000000 +0100
+@@ -692,6 +692,8 @@
+ && command_line.rpath == NULL)
+ {
+ lib_path = (const char *) getenv ("LD_RUN_PATH");
++ if ((lib_path) && (strlen (lib_path) == 0))
++ lib_path = NULL;
+ if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
+ force))
+ break;
+@@ -871,6 +873,8 @@
+ rpath = command_line.rpath;
+ if (rpath == NULL)
+ rpath = (const char *) getenv ("LD_RUN_PATH");
++ if ((rpath) && (strlen (rpath) == 0))
++ rpath = NULL;
+ if (! (bfd_elf_size_dynamic_sections
+ (output_bfd, command_line.soname, rpath,
+ command_line.filter_shlib,
diff --git a/packages/binutils/binutils-cross_2.17.50.0.12.bb b/packages/binutils/binutils-cross_2.17.50.0.12.bb
new file mode 100644
index 0000000000..1f2f43ecf8
--- /dev/null
+++ b/packages/binutils/binutils-cross_2.17.50.0.12.bb
@@ -0,0 +1,32 @@
+SECTION = "devel"
+require binutils_${PV}.bb
+inherit cross
+DEPENDS += "flex-native bison-native"
+PROVIDES = "virtual/${TARGET_PREFIX}binutils"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/binutils-${PV}"
+PACKAGES = ""
+EXTRA_OECONF = "--with-sysroot=${CROSS_DIR}/${TARGET_SYS} \
+ --program-prefix=${TARGET_PREFIX}"
+
+do_stage () {
+ oe_runmake install
+
+ # We don't really need these, so we'll remove them...
+ rm -rf ${CROSS_DIR}/lib/ldscripts
+ rm -rf ${CROSS_DIR}/share/info
+ rm -rf ${CROSS_DIR}/share/locale
+ rm -rf ${CROSS_DIR}/share/man
+ rmdir ${CROSS_DIR}/share || :
+ rmdir ${CROSS_DIR}/${libdir}/gcc-lib || :
+ rmdir ${CROSS_DIR}/${libdir} || :
+ rmdir ${CROSS_DIR}/${prefix} || :
+
+ # We want to move this into the target specific location
+ mkdir -p ${CROSS_DIR}/${TARGET_SYS}/lib
+ mv -f ${CROSS_DIR}/lib/libiberty.a ${CROSS_DIR}/${TARGET_SYS}/lib
+ rmdir ${CROSS_DIR}/lib || :
+}
+
+do_install () {
+ :
+}
diff --git a/packages/binutils/binutils_2.17.50.0.12.bb b/packages/binutils/binutils_2.17.50.0.12.bb
new file mode 100644
index 0000000000..f832d97cd1
--- /dev/null
+++ b/packages/binutils/binutils_2.17.50.0.12.bb
@@ -0,0 +1,12 @@
+require binutils.inc
+
+
+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://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 \
+ file://binutils-uclibc-300-012_check_ldrunpath_length.patch;patch=1 \
+ "
diff --git a/packages/blueprobe/blueprobe-0.17/hwuart.patch b/packages/blueprobe/blueprobe-0.17/hwuart.patch
new file mode 100644
index 0000000000..274c1455d8
--- /dev/null
+++ b/packages/blueprobe/blueprobe-0.17/hwuart.patch
@@ -0,0 +1,21 @@
+Index: base/blueprobe/blueprobe.init
+===================================================================
+--- base/blueprobe/blueprobe.init (revision 8939)
++++ base/blueprobe/blueprobe.init (working copy)
+@@ -46,14 +46,14 @@
+ ;;
+ "HP iPAQ H5400")
+ BLUETOOTH=yes
+- PORT=/dev/tts/1
++ PORT=/dev/ttyS3
+ SPEED=921600
+ PROTO=any
+ PROBE=yes
+ ;;
+ "HP iPAQ H3900")
+ BLUETOOTH=yes
+- PORT=/dev/tts/1
++ PORT=/dev/ttyS1
+ SPEED=921600
+ PROTO=bcsp
+ PROBE=yes
diff --git a/packages/gnupg/gnupg-1.4.0/.mtn2git_empty b/packages/blueprobe/blueprobe-0.18/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gnupg/gnupg-1.4.0/.mtn2git_empty
+++ b/packages/blueprobe/blueprobe-0.18/.mtn2git_empty
diff --git a/packages/blueprobe/blueprobe-0.18/h4000.patch b/packages/blueprobe/blueprobe-0.18/h4000.patch
new file mode 100644
index 0000000000..35a30c4943
--- /dev/null
+++ b/packages/blueprobe/blueprobe-0.18/h4000.patch
@@ -0,0 +1,16 @@
+--- blueprobe-0.18/blueprobe.init.org 2007-01-11 11:54:09.000000000 +0000
++++ blueprobe-0.18/blueprobe.init 2007-02-11 17:05:51.000000000 +0000
+@@ -65,6 +65,13 @@
+ PROTO=bcsp
+ PROBE=yes
+ ;;
++ "HP iPAQ H4000")
++ BLUETOOTH=yes
++ PORT=/dev/ttyS1
++ SPEED=115200
++ PROTO=texas
++ PROBE=no
++ ;;
+ "HP iPAQ HX4700")
+ BLUETOOTH=yes
+ PORT=/dev/ttyS1
diff --git a/packages/blueprobe/blueprobe_0.17.bb b/packages/blueprobe/blueprobe_0.17.bb
index ffd83b66ae..b82bedf632 100644
--- a/packages/blueprobe/blueprobe_0.17.bb
+++ b/packages/blueprobe/blueprobe_0.17.bb
@@ -1,7 +1,8 @@
require blueprobe.inc
-PR = "r2"
+PR = "r3"
-SRC_URI += "file://hx4700.patch;patch=1\
- file://h2200-fixup.patch;patch=1\
- file://htcuniversal.patch;patch=1"
+SRC_URI += "file://hx4700.patch;patch=1 \
+ file://h2200-fixup.patch;patch=1 \
+ file://htcuniversal.patch;patch=1 \
+ file://hwuart.patch;patch=1;pnum=2"
diff --git a/packages/blueprobe/blueprobe_0.18.bb b/packages/blueprobe/blueprobe_0.18.bb
new file mode 100644
index 0000000000..ca455401e0
--- /dev/null
+++ b/packages/blueprobe/blueprobe_0.18.bb
@@ -0,0 +1,5 @@
+require blueprobe.inc
+
+PR = "r1"
+
+SRC_URI += "file://h4000.patch;patch=1"
diff --git a/packages/blueprobe/blueprobe_svn.bb b/packages/blueprobe/blueprobe_svn.bb
new file mode 100644
index 0000000000..5ef2dfcf8b
--- /dev/null
+++ b/packages/blueprobe/blueprobe_svn.bb
@@ -0,0 +1,13 @@
+PV = "0.18+svn${SRCDATE}"
+PR = "r0"
+
+inherit pkgconfig gpe autotools
+
+SRC_URI = "${GPE_SVN} \
+ file://blueprobe-svn-Makefile.patch;patch=1"
+
+S = "${WORKDIR}/${PN}"
+
+require blueprobe.inc
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gtk+/gtk+-2.10.3/.mtn2git_empty b/packages/blueprobe/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gtk+/gtk+-2.10.3/.mtn2git_empty
+++ b/packages/blueprobe/files/.mtn2git_empty
diff --git a/packages/blueprobe/files/blueprobe-svn-Makefile.patch b/packages/blueprobe/files/blueprobe-svn-Makefile.patch
new file mode 100644
index 0000000000..b51b46561d
--- /dev/null
+++ b/packages/blueprobe/files/blueprobe-svn-Makefile.patch
@@ -0,0 +1,250 @@
+diff -Naur blueprobe.orig/Makefile blueprobe/Makefile
+--- blueprobe.orig/Makefile 2007-02-10 16:23:12.158675487 +0200
++++ blueprobe/Makefile 2007-02-10 16:27:53.906731396 +0200
+@@ -1,7 +1,7 @@
+ PREFIX = /usr/local
+ PACKAGE = blueprobe
+ DEBUG = no
+-CVSBUILD = yes
++CVSBUILD = no
+ VERSION = 0.18
+
+ MEMBERS = blueprobe
+@@ -17,7 +17,7 @@
+ ifeq ($(CVSBUILD),yes)
+ BUILD = ../build
+ else
+-BUILD = build
++BUILD = .
+ endif
+
+ all: $(PACKAGE)
+diff -Naur blueprobe.orig/Makefile.dpkg_ipkg blueprobe/Makefile.dpkg_ipkg
+--- blueprobe.orig/Makefile.dpkg_ipkg 1970-01-01 02:00:00.000000000 +0200
++++ blueprobe/Makefile.dpkg_ipkg 2007-02-10 16:28:13.211831530 +0200
+@@ -0,0 +1,114 @@
++## Please read the README in this directory to see how to use this
++## Makefile snippet
++
++# Let's use whatever clean target the specific app provides
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# URL to source tarball
++SOURCE = http://gpe.linuxtogo.org/download/source/$(PACKAGE)-$(VERSION).tar.gz
++
++# can change this to e.g. /var/tmp/deb
++DEB_PATH = ../deb
++
++ifeq ($(CVSBUILD),yes)
++LIBGPEWIDGET_PC = libgpewidget-uninstalled
++PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget
++else
++LIBGPEWIDGET_PC = libgpewidget
++endif
++
++ifeq ($(IN_LIBGPEWIDGET),)
++GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC))
++GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC))
++endif
++
++GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0)
++GTKLIBS = $(shell pkg-config --libs gtk+-2.0)
++
++STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
++STANDARD_CFLAGS = -MD -Wall
++
++ifeq ($(DEBUG),yes)
++CFLAGS += -O2 -g
++LDFLAGS = -g
++else
++CFLAGS += -Os -fomit-frame-pointer
++endif
++
++dist: check-source clean dist-prep
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ mkdir ../$(PACKAGE)-$(VERSION)
++ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -)
++ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile )
++ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz )
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ $(MAKE) printinfo
++
++dist-upload: dist
++ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@linuxtogo.org:/media/data/projects/gpe/source/
++
++dist-prep:
++ipkg-prep:
++install-mo:
++# empty, can be filled in Makefile.translation
++
++install: install-program install-mo
++
++clean-dist:
++ rm -rf familiar/dist familiar/dist.list
++
++clean: clean-dist
++
++check-source:
++ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi
++
++ipkg: check-source ipkg-prep clean
++ rm -rf familiar/dist
++ mkdir -p familiar/dist/CONTROL
++ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control
++ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi
++ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi
++ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi
++ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi
++ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi
++ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program
++ rm -rf familiar/dist.list
++ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list
++ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi
++ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch
++ rm -rf familiar/dist familiar/dist.list
++ $(MAKE) printinfo
++
++dpkg: dist
++ mkdir -p $(DEB_PATH)
++ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz )
++ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian
++ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done
++
++CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
++printinfo:
++ @printf '-------------------------------------------------------------------------------\n'
++ @printf "If this becomes a package release, please add a CVS tag.\n"
++ @printf "You can use 'make tag' for that, it will execute\n"
++ @printf " cvs tag %s\n" $(CVSTAG)
++ @printf "Please upload a tarball (created with 'make dist') to\n"
++ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n"
++ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n"
++ @printf "You can use 'make dist-upload' to do that.\n"
++ @printf "You are currently known as USER %s.\n" $(USER)
++ @printf '-------------------------------------------------------------------------------\n'
++
++tag: check-source
++ cvs tag $(CVSTAG)
++
++retag: check-source
++ cvs tag -F $(CVSTAG)
++
++source: tag dist-upload
++
++%.pc: %.pc.in
++ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@
++
++.c.o:;
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@
+diff -Naur blueprobe.orig/Makefile.translation blueprobe/Makefile.translation
+--- blueprobe.orig/Makefile.translation 1970-01-01 02:00:00.000000000 +0200
++++ blueprobe/Makefile.translation 2007-02-10 16:28:17.996104169 +0200
+@@ -0,0 +1,107 @@
++.SUFFIXES: .mo .po .pot .po8
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# use ipkg-build or ipkg-deb-build
++IPKG_BUILD := ipkg-build
++
++TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint
++
++ifeq ($(DIR_PO),)
++DIR_PO := po
++endif
++
++ifeq ($(BINPACKAGE),)
++BINPACKAGE := $(PACKAGE)
++endif
++
++mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS))
++po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++
++ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present)
++desktop-files += $(PACKAGE).desktop
++endif
++
++ifneq ($(EXTRA_DESKTOPS),)
++desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS))
++endif
++
++all-mo: $(mo-files)
++
++all-desktop: $(desktop-files)
++
++install-mo: all-mo
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ if [ "x$(LINGUAS)" != "x" ]; then \
++ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \
++ fi; \
++ fi;
++
++.po8.mo:;
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ msgfmt -o $@ $<; \
++ fi;
++
++.po.po8:;
++ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@
++
++update-po: $(po-files) extract-po
++
++dist-prep: update-po freshen-po
++# empty
++
++ifeq ($(CVSBUILD),yes)
++ipkg-prep: freshen-po
++# empty
++endif
++
++extract-po:
++ mkdir -p $(DIR_PO)
++ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi )
++ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi
++
++clean: clean-po clean-dist-translation
++
++clean-po:
++ rm -rf $(DIR_PO)/*.mo
++ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done
++
++%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++ intltool-merge -u -d $(DIR_PO) $< $@
++
++freshen-po:
++ rm -rf tmp-po
++ mkdir tmp-po
++ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done
++ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done
++ rm -rf tmp-po
++
++# ------------------------------------------------------------------------
++
++MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-)
++
++ifndef BUILD
++BUILD = ../build
++endif
++
++transdist := familiar/dist-translation
++templates := $(BUILD)/familiar
++ipkglist := translation-ipkgs.txt
++
++clean-dist-translation:
++ rm -rf $(transdist) $(ipkglist)
++
++real-translation-package: all-mo
++ rm -rf $(transdist) $(ipkglist)
++ for LINGUA in $(LINGUAS); do \
++ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \
++ mkdir -p $(transdist)/$$i/CONTROL; \
++ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \
++ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \
++ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \
++ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \
++ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \
++ done
++
++translation-ipkg:
++ make PREFIX=/usr real-translation-package
diff --git a/packages/bluesnarfer/bluesnarfer.bb b/packages/bluesnarfer/bluesnarfer.bb
index 43d807f828..8ba346e526 100644
--- a/packages/bluesnarfer/bluesnarfer.bb
+++ b/packages/bluesnarfer/bluesnarfer.bb
@@ -1,4 +1,4 @@
-SECTION = "net/misc"
+SECTION = "network/misc"
DESCRIPTION = "Bluetooth cellphone information gatherer"
PV = "0.1"
SRC_URI = "http://www.remote-exploit.org/images/a/a0/Bluesnarfer.tar.gz"
diff --git a/packages/gtk+/gtk+-2.10.6/.mtn2git_empty b/packages/bluez/bcm2035-tool/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gtk+/gtk+-2.10.6/.mtn2git_empty
+++ b/packages/bluez/bcm2035-tool/.mtn2git_empty
diff --git a/packages/bluez/bcm2035-tool/addr-as-arg.patch b/packages/bluez/bcm2035-tool/addr-as-arg.patch
new file mode 100644
index 0000000000..28618c5bbb
--- /dev/null
+++ b/packages/bluez/bcm2035-tool/addr-as-arg.patch
@@ -0,0 +1,104 @@
+--- bcm2035-tool/bcm2035-tool.c 2007/05/07 12:48:06 2000
++++ bcm2035-tool/bcm2035-tool.c 2007/05/07 12:55:47 2001
+@@ -1,6 +1,8 @@
+-/* bcm2035-tool - bcm2035 tool for Motorola EZX phones
++/* bcm2035-tool
+ *
+ * (C) 2007 by Daniel Ribeiro <drwyrm@gmail.com>
++ *
++ * MAC address as argument extension by: Jan Herman <2hp@seznam.cz>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2
+@@ -17,10 +19,10 @@
+ *
+ */
+
++/* Default MAC address */
++#define BDADDR "\x06\x05\x04\x03\x02\x01"
+
+ //#define PATCH_FIRMWARE
+-#define BDADDR "\xab\x89\x67\x45\x23\x01"
+-
+
+ #include <stdio.h>
+ #include <string.h>
+@@ -33,6 +35,7 @@
+ #include <sys/ioctl.h>
+ #include <termios.h>
+ #include "bcm2035-tool.h"
++//#include "bluetooth.h"
+
+ #ifdef PATCH_FIRMWARE
+ #include "motorola_patches.h"
+@@ -180,18 +183,51 @@
+
+ }
+
++void mac2hex(const char *mac, u_char *dst)
++{
++
++ int i;
++ long l;
++ char *pp;
++
++ while (isspace(*mac))
++ mac++;
++
++ /* expect 6 hex octets separated by ':' or space/NUL if last octet */
++ for (i = 0; i < 6; i++) {
++ l = strtol(mac, &pp, 16);
++ if (pp == mac || l > 0xFF || l < 0)
++ return;
++ if (!(*pp == ':' || (i == 5 && (isspace(*pp) || *pp == '\0'))))
++ return;
++ /* 5-i swaps hex chars */
++ dst[5-i] = (u_char) l;
++ mac = pp + 1;
++ }
++ }
++
++char bdaddr[6];
++
+ int main(int argc, char **argv)
+ {
+ int fd, i;
+ struct termios term;
+ char buf[1024];
+- char bdaddr[6];
+-
+- if (argc < 2) {
+- printf("use: %s <device>\n", argv[0]);
++
++ if (argc < 3) {
++ printf("BCM2035 Tool:\n");
++ printf("Usage: %s <device> <bdaddr>\n", argv[0]);
+ exit(1);
+ }
+
++ if (strlen(argv[2]) < 17) {
++ printf("invalid argument %s!\n", argv[2]);
++ exit(1);
++ }
++
++ /* Converts MAC address to swapped HEX */
++ mac2hex(argv[2], bdaddr);
++
+ fd = open (argv[1], O_RDWR | O_NOCTTY );
+
+ if(fd < 0) exit(-1);
+@@ -212,7 +248,7 @@
+ #endif
+ set_baud(fd, 460800);
+
+- send_cmd(fd, CMD_SET_BDADDR, BDADDR, 6);
++ send_cmd(fd, CMD_SET_BDADDR, bdaddr, 6);
+
+ i = N_HCI;
+ if (ioctl(fd, TIOCSETD, &i) < 0) {
+@@ -228,5 +264,3 @@
+ while (1) sleep(999999999);
+ return 0;
+ }
+-
+-
diff --git a/packages/bluez/bcm2035-tool_0.0.bb b/packages/bluez/bcm2035-tool_0.0.bb
new file mode 100644
index 0000000000..636841de6f
--- /dev/null
+++ b/packages/bluez/bcm2035-tool_0.0.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Bluetooth firmware poker for bccm2035 chips (motorola phones and palms)"
+LICENSE = "GPLv2"
+
+PR = "r1"
+
+SRC_URI = "http://people.openezx.org/wyrm/bcm2035-tool.tgz \
+ file://addr-as-arg.patch;patch=1 \
+ "
+
+S = "${WORKDIR}/${PN}"
+
+do_compile() {
+ ${CC} bcm2035-tool.c -o bcm2035-tool
+}
+
+do_install() {
+ install -d ${D}${sbindir}
+ install -m 755 bcm2035-tool ${D}${sbindir}
+}
diff --git a/packages/bluez/bluez-hcidump_1.25.bb b/packages/bluez/bluez-hcidump_1.25.bb
deleted file mode 100644
index 0cbc0fd6ec..0000000000
--- a/packages/bluez/bluez-hcidump_1.25.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "Linux Bluetooth Stack HCI Debugger Tool."
-SECTION = "console"
-PRIORITY = "optional"
-DEPENDS = "bluez-libs"
-LICENSE = "GPL"
-PR = "r0"
-
-SRC_URI = "http://bluez.sourceforge.net/download/bluez-hcidump-${PV}.tar.gz"
-S = "${WORKDIR}/bluez-hcidump-${PV}"
-
-EXTRA_OECONF = "--with-bluez-libs=${STAGING_LIBDIR} --with-bluez-includes=${STAGING_INCDIR}"
-
-inherit autotools
-
-
diff --git a/packages/bluez/bluez-hcidump_1.33.bb b/packages/bluez/bluez-hcidump_1.33.bb
new file mode 100644
index 0000000000..877c8db33c
--- /dev/null
+++ b/packages/bluez/bluez-hcidump_1.33.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Linux Bluetooth Stack HCI Debugger Tool."
+SECTION = "console"
+PRIORITY = "optional"
+DEPENDS = "bluez-libs"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://bluez.sourceforge.net/download/bluez-hcidump-${PV}.tar.gz"
+S = "${WORKDIR}/bluez-hcidump-${PV}"
+
+EXTRA_OECONF = "--with-bluez-libs=${STAGING_LIBDIR} --with-bluez-includes=${STAGING_INCDIR}"
+
+inherit autotools
diff --git a/packages/bluez/bluez-libs_3.1.bb b/packages/bluez/bluez-libs.inc
index d740bd80a9..d740bd80a9 100644
--- a/packages/bluez/bluez-libs_3.1.bb
+++ b/packages/bluez/bluez-libs.inc
diff --git a/packages/bluez/bluez-libs_3.8.bb b/packages/bluez/bluez-libs_3.8.bb
new file mode 100644
index 0000000000..d740bd80a9
--- /dev/null
+++ b/packages/bluez/bluez-libs_3.8.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "Linux Bluetooth Stack Userland Libaries."
+SECTION = "libs"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.bluez.org"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://bluez.sourceforge.net/download/bluez-libs-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+HEADERS = "bluetooth.h bnep.h cmtp.h hci.h hci_lib.h hidp.h l2cap.h rfcomm.h sco.h sdp.h sdp_lib.h"
+
+do_stage() {
+ oe_libinstall -a -so -C src libbluetooth ${STAGING_LIBDIR}
+
+ install -d ${STAGING_INCDIR}/bluetooth/
+ for f in ${HEADERS}
+ do
+ install -m 0644 include/$f ${STAGING_INCDIR}/bluetooth/$f
+ done
+}
diff --git a/packages/bluez/bluez-libs_3.9.bb b/packages/bluez/bluez-libs_3.9.bb
new file mode 100644
index 0000000000..6ddf62a4fb
--- /dev/null
+++ b/packages/bluez/bluez-libs_3.9.bb
@@ -0,0 +1 @@
+require bluez-libs.inc
diff --git a/packages/ifupdown/ifupdown-0.6.4/.mtn2git_empty b/packages/bluez/bluez-utils-3.9/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/ifupdown/ifupdown-0.6.4/.mtn2git_empty
+++ b/packages/bluez/bluez-utils-3.9/.mtn2git_empty
diff --git a/packages/bluez/bluez-utils-3.9/hciattach-ti-bts.patch b/packages/bluez/bluez-utils-3.9/hciattach-ti-bts.patch
new file mode 100644
index 0000000000..87bd19f13b
--- /dev/null
+++ b/packages/bluez/bluez-utils-3.9/hciattach-ti-bts.patch
@@ -0,0 +1,498 @@
+Index: bluez-utils-3.9/tools/hciattach.c
+===================================================================
+--- bluez-utils-3.9.orig/tools/hciattach.c 2007-01-28 21:16:48.000000000 +0100
++++ bluez-utils-3.9/tools/hciattach.c 2007-01-29 22:51:30.000000000 +0100
+@@ -59,6 +59,8 @@
+ #define HCI_UART_3WIRE 2
+ #define HCI_UART_H4DS 3
+
++#include "ti_bts.h"
++
+ struct uart_t {
+ char *type;
+ int m_id;
+@@ -68,6 +70,7 @@
+ int speed;
+ int flags;
+ int (*init) (int fd, struct uart_t *u, struct termios *ti);
++ char *bts; /* bluetooth script */
+ };
+
+ #define FLOW_CTL 0x0001
+@@ -257,6 +260,114 @@
+ return 0;
+ }
+
++static int brf6150(int fd, struct uart_t *u, struct termios *ti)
++{
++ bts_t *bfp;
++ int i;
++ unsigned long vers;
++ unsigned char actionbuf[256];
++ unsigned char resp[128]; /* Response */
++ unsigned long count;
++ unsigned short atype;
++
++ if (u->bts == NULL) /* no script, ignore */
++ return 0;
++
++ bfp = bts_load_script( u->bts, &vers );
++ if (bfp == NULL)
++ return -1;
++
++ fprintf( stderr, "Loading BTS script version %lu\n", vers );
++
++ while ((count = bts_next_action( bfp, actionbuf,
++ sizeof actionbuf - 1, &atype )) != 0) {
++ if (atype == ACTION_REMARKS) {
++ if (actionbuf[0] != 0)
++ fprintf( stderr, "%s\n", actionbuf );
++ }
++ else if (atype == ACTION_SEND_COMMAND) {
++#if 0
++ fprintf( stderr, "ACTION_SEND_COMMAND: ", (int)atype );
++ for (i=0; i<count; i++) {
++ fprintf( stderr, "0x%02x ", actionbuf[i] );
++ }
++ fprintf( stderr, "\n" );
++#endif
++ int n;
++ n = write(fd, actionbuf, count);
++ if (n < 0 || n < count) {
++ perror("Failed to write TI action command");
++ return -1;
++ }
++ }
++ else if (atype == ACTION_WAIT_EVENT) {
++ action_wait_t *wait = (action_wait_t *)actionbuf;
++#if 0
++ fprintf( stderr, "ACTION_WAIT_EVENT: %u msec, %u size, data = ", wait->msec, wait->size );
++ for (i=0; i<wait->size; i++) {
++ fprintf( stderr, "0x%02x ", wait->data[i] );
++ }
++ fprintf( stderr, "\n" );
++#endif
++ usleep(wait->msec); /* seems they give usec, not msec */
++ /* Read reply. */
++ if ((count = read_hci_event(fd, resp, sizeof resp)) < 0) {
++ perror("Failed to read TI command response");
++ return -1;
++ }
++ if (count < wait->size) {
++ fprintf( stderr, "TI command response is short.");
++ }
++ for (i=0; i<wait->size; i++) {
++ if (i == 3) continue; /* ignore */
++ if (resp[i] != wait->data[i]) {
++ fprintf( stderr, "TI command response does not match expected result.\n" );
++ }
++ }
++ }
++ else if (atype == ACTION_SERIAL_PORT_PARAMETERS) {
++ action_serial_t *sercmd = (action_serial_t *)actionbuf;
++
++ /* Set actual baudrate */
++ fprintf( stderr,
++ "BTS changing baud rate to %u, flow control to %u\n",
++ sercmd->baud, sercmd->flow_control );
++
++ tcflush(fd, TCIOFLUSH);
++
++ if (sercmd->flow_control)
++ ti->c_cflag |= CRTSCTS;
++ else
++ ti->c_cflag &= ~CRTSCTS;
++ if (tcsetattr(fd, TCSANOW, ti) < 0) {
++ perror("Can't set port settings");
++ return -1;
++ }
++
++ u->speed = sercmd->baud;
++
++ tcflush(fd, TCIOFLUSH);
++ if (set_speed(fd, ti, sercmd->baud) < 0) {
++ perror("Can't set baud rate");
++ return -1;
++ }
++ }
++ else if (atype == ACTION_DELAY) {
++ action_delay_t *delay = (action_delay_t *)actionbuf;
++ usleep(delay->msec); /* seems they give usec, not msec */
++ }
++ else {
++ fprintf( stderr, "BTS action type = %d: ", (int)atype );
++ for (i=0; i<count; i++) {
++ fprintf( stderr, "0x%02x ", actionbuf[i] );
++ }
++ fprintf( stderr, "\n" );
++ }
++ }
++ bts_unload_script( bfp );
++ return 0;
++}
++
+ static int texas(int fd, struct uart_t *u, struct termios *ti)
+ {
+ struct timespec tm = {0, 50000};
+@@ -297,15 +408,26 @@
+ } while (resp[4] != cmd[1] && resp[5] != cmd[2]);
+
+ /* Verify manufacturer */
+- if ((resp[11] & 0xFF) != 0x0d)
++ if (resp[11] != 0x0d)
+ fprintf(stderr,"WARNING : module's manufacturer is not Texas Instrument\n");
+
+ /* Print LMP version */
+- fprintf(stderr, "Texas module LMP version : 0x%02x\n", resp[10] & 0xFF);
++ fprintf(stderr, "TI module LMP version : 0x%02x\n", resp[10]);
+
+ /* Print LMP subversion */
+- fprintf(stderr, "Texas module LMP sub-version : 0x%02x%02x\n", resp[14] & 0xFF, resp[13] & 0xFF);
+-
++ fprintf(stderr, "TI module LMP sub-version : 0x%02x%02x\n", resp[14], resp[13]);
++ if ((resp[14] >> 2) == 3) {
++ int err;
++ nanosleep(&tm, NULL);
++
++ /* BRF6150 */
++ if ((err=brf6150( fd, u, ti )) != 0) {
++ fprintf( stderr, "TI script failed (err=%d)\n",
++ err );
++ return -1;
++ }
++ }
++
+ nanosleep(&tm, NULL);
+ return 0;
+ }
+@@ -1128,7 +1250,7 @@
+ {
+ printf("hciattach - HCI UART driver initialization utility\n");
+ printf("Usage:\n");
+- printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] <tty> <type | id> [speed] [flow|noflow]\n");
++ printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] [-S bts-script] <tty> <type | id> [speed] [flow|noflow]\n");
+ printf("\thciattach -l\n");
+ }
+
+@@ -1143,11 +1265,12 @@
+ struct sigaction sa;
+ struct pollfd p;
+ char dev[PATH_MAX];
++ char *bts = NULL;
+
+ detach = 1;
+ printpid = 0;
+
+- while ((opt=getopt(argc, argv, "bnpt:s:l")) != EOF) {
++ while ((opt=getopt(argc, argv, "bnpt:s:S:l")) != EOF) {
+ switch(opt) {
+ case 'b':
+ send_break = 1;
+@@ -1169,6 +1292,10 @@
+ init_speed = atoi(optarg);
+ break;
+
++ case 'S':
++ bts = optarg;
++ break;
++
+ case 'l':
+ for (i = 0; uart[i].type; i++) {
+ printf("%-10s0x%04x,0x%04x\n", uart[i].type,
+@@ -1240,6 +1367,8 @@
+ if (init_speed)
+ u->init_speed = init_speed;
+
++ u->bts = bts;
++
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_flags = SA_NOCLDSTOP;
+ sa.sa_handler = sig_alarm;
+Index: bluez-utils-3.9/tools/Makefile.am
+===================================================================
+--- bluez-utils-3.9.orig/tools/Makefile.am 2007-01-28 21:16:48.000000000 +0100
++++ bluez-utils-3.9/tools/Makefile.am 2007-01-29 22:54:22.000000000 +0100
+@@ -37,7 +37,7 @@
+
+ noinst_PROGRAMS = hcisecfilter ppporc
+
+-hciattach_SOURCES = hciattach.c hciattach_st.c
++hciattach_SOURCES = hciattach.c hciattach_st.c ti_bts.h ti_bts.c
+ hciattach_LDADD = @BLUEZ_LIBS@
+
+ hciconfig_SOURCES = hciconfig.c csr.h csr.c
+Index: bluez-utils-3.9/tools/ti_bts.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ bluez-utils-3.9/tools/ti_bts.h 2007-01-29 22:51:30.000000000 +0100
+@@ -0,0 +1,116 @@
++/*
++ * Copyright (c) 2005 Texas Instruments, Inc.
++ * Ported by SDG Systems, LLC
++ *
++ * 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;
++ *
++ * 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 OF THIRD PARTY RIGHTS.
++ * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
++ * CLAIM, OR 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.
++ *
++ * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
++ * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
++ * SOFTWARE IS DISCLAIMED.
++ *
++ */
++
++#ifndef BT_SCRIPT_H
++#define BT_SCRIPT_H
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*
++ * Define the interface of Bluetooth Script
++ */
++
++typedef void bts_t;
++
++
++#define ACTION_SEND_COMMAND 1 /* Send out raw data (as is) */
++#define ACTION_WAIT_EVENT 2 /* Wait for data */
++#define ACTION_SERIAL_PORT_PARAMETERS 3
++#define ACTION_DELAY 4
++#define ACTION_RUN_SCRIPT 5
++#define ACTION_REMARKS 6
++
++/*
++ * Structure for ACTION_SEND_COMMAND
++ */
++typedef struct tagCActionCommand
++{
++ unsigned char data[1]; /* Data to send */
++} action_command_t;
++
++/*
++ * Structure for ACTION_WAIT_EVENT
++ */
++typedef struct tagCActionWaitEvent
++{
++ unsigned long msec; /* in milliseconds */
++ unsigned long size;
++ unsigned char data[1]; /* Data to wait for */
++} action_wait_t;
++
++
++/*
++ * Structure for ACTION_SERIAL_PORT_PARAMETERS
++ */
++typedef struct tagCActionSerialPortParameters
++{
++ unsigned long baud;
++ unsigned long flow_control;
++} action_serial_t;
++
++/* Flow Control Type */
++#define FCT_NONE 0
++#define FCT_HARDWARE 1
++
++#define DONT_CHANGE 0xFFFFFFFF /* For both baud rate and flow control */
++
++
++/*
++ * Structure for ACTION_DELAY
++ */
++typedef struct tagCActionDelay
++{
++ unsigned long msec; /* in milliseconds */
++} action_delay_t;
++
++/*
++ * Structure for ACTION_RUN_SCRIPT
++ */
++typedef struct tagCActionRunScript
++{
++ char filename[1];
++} action_run_t;
++
++/*
++ * Structure for ACTION_REMARKS
++ */
++typedef struct tagCActionRemarks
++{
++ char m_szRemarks[1];
++} action_remarks_t;
++
++
++const char *cis_create_filename(const unsigned char* cmdparms);
++bts_t * bts_load_script(const char* fname, unsigned long* version);
++unsigned long bts_next_action(const bts_t* bts_fp, unsigned char* action_buf,
++ unsigned long nMaxSize, unsigned short* ptype);
++void bts_unload_script(bts_t* bts_fp);
++
++#ifdef __cplusplus
++};
++#endif
++
++#endif /* BT_SCRIPT_H */
++
+Index: bluez-utils-3.9/tools/ti_bts.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ bluez-utils-3.9/tools/ti_bts.c 2007-01-29 22:51:30.000000000 +0100
+@@ -0,0 +1,149 @@
++/*
++ * Copyright (c) 2005 Texas Instruments, Inc.
++ * Ported by SDG Systems, LLC
++ *
++ * 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;
++ *
++ * 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 OF THIRD PARTY RIGHTS.
++ * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
++ * CLAIM, OR 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.
++ *
++ * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
++ * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
++ * SOFTWARE IS DISCLAIMED.
++ *
++ */
++
++
++#include <stdio.h>
++#include <stdlib.h>
++#include "ti_bts.h"
++
++#ifndef MAKEWORD
++#define MAKEWORD(a, b) ((unsigned short)(((unsigned char)(a)) | ((unsigned short)((unsigned char)(b))) << 8))
++#endif
++
++#define TI_MANUFACTURER_ID 13
++
++/*
++ * Common Init Script specific
++ */
++const char *
++cis_create_filename(const unsigned char* cmdparms)
++{
++ static char bts_file[50];
++
++ /* Check for TI's id */
++ unsigned short manfid = MAKEWORD(cmdparms[8], cmdparms[9]);
++
++ if (TI_MANUFACTURER_ID == manfid) {
++ unsigned short version = MAKEWORD(cmdparms[10], cmdparms[11]);
++
++ unsigned short chip = (version & 0x7C00) >> 10;
++ unsigned short min_ver = (version & 0x007F);
++ unsigned short maj_ver = (version & 0x0380) >> 7;
++
++ if (0 != (version & 0x8000)) {
++ maj_ver |= 0x0008;
++ }
++
++ sprintf( bts_file, "TIInit_%d.%d.%d.bts",
++ (int)chip, (int)maj_ver, (int)min_ver);
++
++ return &bts_file[0];
++ }
++ return NULL;
++}
++
++typedef struct tagCHeader
++{
++ unsigned long magic;
++ unsigned long version;
++ unsigned char future[24];
++} cheader_t;
++
++
++/* The value 0x42535442 stands for (in ASCII) BTSB */
++/* which is Bluetooth Script Binary */
++#define FILE_HEADER_MAGIC 0x42535442
++
++
++bts_t *
++bts_load_script(const char* fname, unsigned long* version)
++{
++ bts_t* bts = NULL;
++ FILE* fp = fopen(fname, "rb");
++
++ if (NULL != fp) {
++ /* Read header */
++ cheader_t header;
++
++ /* Read header */
++ if (1 == fread(&header, sizeof(header), 1, fp)) {
++ /* Check magic number for correctness */
++ if (header.magic == FILE_HEADER_MAGIC) {
++ /* If user wants the version number */
++ if (NULL != version) {
++ *version = header.version;
++ }
++ bts = (bts_t*)fp;
++ }
++ }
++ /* If failed reading the file, close it */
++ if (NULL == bts) {
++ fclose(fp);
++ }
++ }
++ return bts;
++}
++
++unsigned long
++bts_next_action(const bts_t* bts_fp, unsigned char* action_buf,
++ unsigned long nMaxSize, unsigned short* ptype)
++{
++ unsigned long bytes = 0;
++ FILE* fp = (FILE*)bts_fp;
++ unsigned char action_hdr[4];
++
++ if (bts_fp == NULL)
++ return 0;
++
++ /* Each Action has the following: */
++ /* UINT16 type of this action */
++ /* UINT16 size of rest */
++ /* BYTE[] action buffer (for HCI, includes the type byte e.g. 1 for hci command) */
++
++ if (1 == fread(&action_hdr[0], sizeof(action_hdr), 1, fp)) {
++ unsigned short type = *(unsigned short*)&action_hdr[0];
++ unsigned short size = *(unsigned short*)&action_hdr[2];
++
++ if (size <= nMaxSize) {
++ int nread = fread(action_buf, sizeof(action_buf[0]), size, fp);
++
++ if (nread == size) {
++ *ptype = type;
++ bytes = (unsigned long)size;
++ }
++ }
++ }
++
++ return bytes;
++}
++
++void
++bts_unload_script(bts_t* bts_fp)
++{
++ FILE* fp = (FILE*)bts_fp;
++
++ if (NULL != fp) {
++ fclose(fp);
++ }
++}
++
diff --git a/packages/bluez/bluez-utils.inc b/packages/bluez/bluez-utils.inc
index ff3916ea94..886a5a3d55 100644
--- a/packages/bluez/bluez-utils.inc
+++ b/packages/bluez/bluez-utils.inc
@@ -1,18 +1,18 @@
DESCRIPTION = "Linux Bluetooth Stack Userland Utilities."
SECTION = "console"
PRIORITY = "optional"
-DEPENDS = "bluez-libs-${PV} pcmcia-cs"
-RPROVIDES_${PN} = "bluez-pan bluez-sdp bluez-utils"
+DEPENDS = "bluez-libs-${PV} dbus cups"
+PROVIDES = "bluez-utils-dbus"
+RPROVIDES_${PN} = "bluez-pan bluez-sdp bluez-utils-dbus"
+RREPLACES = "bluez-utils-dbus"
+RCONFLICTS_${PN} = "bluez-utils-nodbus"
LICENSE = "GPL"
SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \
- file://base.patch;patch=1 \
- file://blueboxes.patch;patch=1 \
- file://no-user-include.patch;patch=1 \
file://hcid.conf \
- file://bluetooth.default \
- file://bluetooth.conf \
- file://02dtl1_cs.sh"
+ file://02dtl1_cs.sh \
+ file://hciattach-ti-bts.patch;patch=1 \
+ file://handle-eintr.patch;patch=1;status=applied"
# Almost all serial CF cards w/ manfid 0x0000,0x0000 seem to use the bcs protocol
# Let's default to that instead of 'any' until further notice...
@@ -20,41 +20,38 @@ SRC_URI += " file://default-manfid-0x0-to-bcps.patch;patch=1"
S = "${WORKDIR}/bluez-utils-${PV}"
-# We don't depend on openobex, fuse, alsa or usb but we set paths into staging
-# otherwise /usr/lib and /usr/include make it onto command lines with unpredictable results
-# Ideally acinclude.m4 needs fixing
-EXTRA_OECONF = "--with-bluez-libs=${STAGING_LIBDIR} --with-bluez-includes=${STAGING_INCDIR} \
- --enable-pcmcia --enable-initscripts --enable-bcm203x --enable-hid2hci \
- --disable-obex --disable-alsa \
- --with-openobex=${STAGING_DIR}/${HOST_SYS} --with-fuse=${STAGING_DIR}/${HOST_SYS} \
- --with-alsa=${STAGING_DIR}/${HOST_SYS} --with-usb=${STAGING_DIR}/${HOST_SYS} \
- --with-bluez=${STAGING_LIBDIR}/${HOST_SYS}"
+EXTRA_OECONF = "--enable-initscripts --enable-bccmd --enable-bcm203x --enable-hid2hci --enable-cups"
+# --enable-obex enable OBEX support
+# --enable-alsa enable ALSA support
+# --enable-cups install CUPS backend support
+# --enable-bccmd install BCCMD interface utility
+# --enable-avctrl install Audio/Video control utility
+# --enable-hid2hci install HID mode switching utility
+# --enable-dfutool install DFU firmware upgrade utility
inherit autotools update-rc.d
INITSCRIPT_NAME = "bluetooth"
INITSCRIPT_PARAMS = "defaults 23 19"
-do_compile_prepend() {
- find ${S} -name Makefile | xargs sed -i 's:/usr/include:${STAGING_INCDIR}:'
-}
-
do_install_append() {
- install -d ${D}${base_sbindir} ${D}${base_bindir}/ ${D}${sysconfdir}/apm/event.d/
+ install -d ${D}${base_sbindir} ${D}${base_bindir}/ ${D}${sysconfdir}/apm/event.d/
mv ${D}${sbindir}/* ${D}${base_sbindir}/
mv ${D}${bindir}/* ${D}${base_bindir}/
rmdir ${D}${bindir} ${D}${sbindir}
chmod u+s ${D}${base_sbindir}/hciattach ${D}${base_sbindir}/hciconfig
- chmod 755 ${D}${sysconfdir}/pcmcia/bluetooth
install -m 0644 ${WORKDIR}/hcid.conf ${D}${sysconfdir}/bluetooth/
- install -m 0644 ${WORKDIR}/bluetooth.default ${D}${sysconfdir}/default/bluetooth
- cat ${WORKDIR}/bluetooth.conf >> ${D}${sysconfdir}/pcmcia/bluetooth.conf
install -m 0755 ${WORKDIR}/02dtl1_cs.sh ${D}${sysconfdir}/apm/event.d/
+ install -m 0755 ${S}/daemon/.libs/passkey-agent ${D}${base_bindir}/
}
CONFFILES_${PN} = "${sysconfdir}/bluetooth/hcid.conf ${sysconfdir}/bluetooth/rfcomm.conf \
- ${sysconfdir}/bluetooth/pin ${sysconfdir}/default/bluetooth"
+ ${sysconfdir}/default/bluetooth"
-PACKAGES =+ "${PN}-ciptool ${PN}-bluepin"
+PACKAGES =+ "${PN}-ciptool bluez-cups-backend"
FILES_${PN}-ciptool = "/bin/ciptool"
-FILES_${PN}-bluepin = "/bin/bluepin"
+RREPLACES_${PN}-ciptool = "bluez-utils-dbus-ciptool"
+RCONFLICTS_${PN}-ciptool = "bluez-utils-dbus-ciptool bluez-utils-nodbus"
+
+FILES_bluez-cups-backend = "${libdir}/cups/backend/bluetooth"
+RDEPENDS_bluez-cups-backend = "cups"
diff --git a/packages/bluez/bluez-utils/handle-eintr.patch b/packages/bluez/bluez-utils/handle-eintr.patch
new file mode 100644
index 0000000000..effe5d9696
--- /dev/null
+++ b/packages/bluez/bluez-utils/handle-eintr.patch
@@ -0,0 +1,23 @@
+--- bluez-utils-3.9.org/tools/hciattach.c 2007-01-28 20:16:48.000000000 +0000
++++ bluez-utils-3.9/tools/hciattach.c 2007-02-12 16:50:49.000000000 +0000
+@@ -1135,7 +1256,7 @@
+ int main(int argc, char *argv[])
+ {
+ struct uart_t *u = NULL;
+- int detach, printpid, opt, i, n, ld;
++ int detach, printpid, opt, i, n, ld, err;
+ int to = 5;
+ int init_speed = 0;
+ int send_break = 0;
+@@ -1286,7 +1414,10 @@
+
+ while (!__io_canceled) {
+ p.revents = 0;
+- if (poll(&p, 1, 500))
++ err = poll(&p, 1, 500);
++ if (err < 0 && errno == EINTR)
++ continue;
++ if (err)
+ break;
+ }
+
diff --git a/packages/bluez/bluez-utils_3.1.bb b/packages/bluez/bluez-utils_3.1.bb
deleted file mode 100644
index 40aabaab50..0000000000
--- a/packages/bluez/bluez-utils_3.1.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-DESCRIPTION = "Linux Bluetooth Stack Userland Utilities."
-SECTION = "console"
-PRIORITY = "optional"
-DEPENDS = "bluez-libs-${PV} dbus"
-RPROVIDES_${PN} = "bluez-pan bluez-sdp bluez-utils-dbus"
-RREPLACES = "bluez-utils-dbus"
-RCONFLICTS = "bluez-utils-dbus bluez-utils-nodbus"
-LICENSE = "GPL"
-PR = "r1"
-
-SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \
- file://hcid.conf \
- file://02dtl1_cs.sh \
- file://hciattach-ti-bts.patch;patch=1"
-
-# Almost all serial CF cards w/ manfid 0x0000,0x0000 seem to use the bcs protocol
-# Let's default to that instead of 'any' until further notice...
-SRC_URI += " file://default-manfid-0x0-to-bcps.patch;patch=1"
-
-S = "${WORKDIR}/bluez-utils-${PV}"
-
-EXTRA_OECONF = "--enable-initscripts --enable-bcm203x --enable-hid2hci"
-# --enable-obex enable OBEX support
-# --enable-alsa enable ALSA support
-# --enable-cups install CUPS backend support
-# --enable-bccmd install BCCMD interface utility
-# --enable-avctrl install Audio/Video control utility
-# --enable-hid2hci install HID mode switching utility
-# --enable-dfutool install DFU firmware upgrade utility
-
-inherit autotools update-rc.d
-
-INITSCRIPT_NAME = "bluetooth"
-INITSCRIPT_PARAMS = "defaults 23 19"
-
-do_install_append() {
- install -d ${D}${base_sbindir} ${D}${base_bindir}/ ${D}${sysconfdir}/apm/event.d/
- mv ${D}${sbindir}/* ${D}${base_sbindir}/
- mv ${D}${bindir}/* ${D}${base_bindir}/
- rmdir ${D}${bindir} ${D}${sbindir}
- chmod u+s ${D}${base_sbindir}/hciattach ${D}${base_sbindir}/hciconfig
- install -m 0644 ${WORKDIR}/hcid.conf ${D}${sysconfdir}/bluetooth/
- install -m 0755 ${WORKDIR}/02dtl1_cs.sh ${D}${sysconfdir}/apm/event.d/
-}
-
-CONFFILES_${PN} = "${sysconfdir}/bluetooth/hcid.conf ${sysconfdir}/bluetooth/rfcomm.conf \
- ${sysconfdir}/default/bluetooth"
-
-PACKAGES =+ "${PN}-ciptool"
-FILES_${PN}-ciptool = "/bin/ciptool"
-RREPLACES_${PN}-ciptool = "bluez-utils-dbus-ciptool"
-RCONFLICTS_${PN}-ciptool = "bluez-utils-dbus-ciptool bluez-utils-nodbus"
diff --git a/packages/bluez/bluez-utils_3.7.bb b/packages/bluez/bluez-utils_3.7.bb
new file mode 100644
index 0000000000..3dbaa030c1
--- /dev/null
+++ b/packages/bluez/bluez-utils_3.7.bb
@@ -0,0 +1,56 @@
+DESCRIPTION = "Linux Bluetooth Stack Userland Utilities."
+SECTION = "console"
+PRIORITY = "optional"
+DEPENDS = "bluez-libs-${PV} dbus cups alsa-lib openobex"
+PROVIDES = "bluez-utils-dbus"
+RPROVIDES_${PN} = "bluez-pan bluez-sdp bluez-utils-dbus"
+RREPLACES = "bluez-utils-dbus"
+RCONFLICTS_${PN} = "bluez-utils-nodbus"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \
+ file://hcid.conf \
+ file://02dtl1_cs.sh \
+ file://hciattach-ti-bts.patch;patch=1"
+
+# Almost all serial CF cards w/ manfid 0x0000,0x0000 seem to use the bcs protocol
+# Let's default to that instead of 'any' until further notice...
+SRC_URI += " file://default-manfid-0x0-to-bcps.patch;patch=1"
+
+S = "${WORKDIR}/bluez-utils-${PV}"
+
+EXTRA_OECONF = "--enable-initscripts --enable-bcm203x --enable-hid2hci --enable-obex --enable-alsa --enable-cups"
+# --enable-obex enable OBEX support
+# --enable-alsa enable ALSA support
+# --enable-cups install CUPS backend support
+# --enable-bccmd install BCCMD interface utility
+# --enable-avctrl install Audio/Video control utility
+# --enable-hid2hci install HID mode switching utility
+# --enable-dfutool install DFU firmware upgrade utility
+
+inherit autotools update-rc.d
+
+INITSCRIPT_NAME = "bluetooth"
+INITSCRIPT_PARAMS = "defaults 23 19"
+
+do_install_append() {
+ install -d ${D}${base_sbindir} ${D}${base_bindir}/ ${D}${sysconfdir}/apm/event.d/
+ mv ${D}${sbindir}/* ${D}${base_sbindir}/
+ mv ${D}${bindir}/* ${D}${base_bindir}/
+ rmdir ${D}${bindir} ${D}${sbindir}
+ chmod u+s ${D}${base_sbindir}/hciattach ${D}${base_sbindir}/hciconfig
+ install -m 0644 ${WORKDIR}/hcid.conf ${D}${sysconfdir}/bluetooth/
+ install -m 0755 ${WORKDIR}/02dtl1_cs.sh ${D}${sysconfdir}/apm/event.d/
+}
+
+CONFFILES_${PN} = "${sysconfdir}/bluetooth/hcid.conf ${sysconfdir}/bluetooth/rfcomm.conf \
+ ${sysconfdir}/default/bluetooth"
+
+PACKAGES =+ "${PN}-ciptool bluez-cups-backend"
+FILES_${PN}-ciptool = "/bin/ciptool"
+RREPLACES_${PN}-ciptool = "bluez-utils-dbus-ciptool"
+RCONFLICTS_${PN}-ciptool = "bluez-utils-dbus-ciptool bluez-utils-nodbus"
+
+FILES_bluez-cups-backend = "${libdir}/cups/backend/bluetooth"
+RDEPENDS_bluez-cups-backend = "cups"
diff --git a/packages/bluez/bluez-utils_3.8.bb b/packages/bluez/bluez-utils_3.8.bb
new file mode 100644
index 0000000000..d549d12d30
--- /dev/null
+++ b/packages/bluez/bluez-utils_3.8.bb
@@ -0,0 +1,53 @@
+DESCRIPTION = "Linux Bluetooth Stack Userland Utilities."
+SECTION = "console"
+PRIORITY = "optional"
+DEPENDS = "bluez-libs-${PV} dbus"
+PROVIDES = "bluez-utils-dbus"
+RPROVIDES_${PN} = "bluez-pan bluez-sdp bluez-utils-dbus"
+RREPLACES = "bluez-utils-dbus"
+RCONFLICTS_${PN} = "bluez-utils-nodbus"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \
+ file://hcid.conf \
+ file://02dtl1_cs.sh \
+ file://hciattach-ti-bts.patch;patch=1"
+
+# Almost all serial CF cards w/ manfid 0x0000,0x0000 seem to use the bcs protocol
+# Let's default to that instead of 'any' until further notice...
+SRC_URI += " file://default-manfid-0x0-to-bcps.patch;patch=1"
+
+S = "${WORKDIR}/bluez-utils-${PV}"
+
+EXTRA_OECONF = "--enable-initscripts --enable-bcm203x --enable-hid2hci"
+# --enable-obex enable OBEX support
+# --enable-alsa enable ALSA support
+# --enable-cups install CUPS backend support
+# --enable-bccmd install BCCMD interface utility
+# --enable-avctrl install Audio/Video control utility
+# --enable-hid2hci install HID mode switching utility
+# --enable-dfutool install DFU firmware upgrade utility
+
+inherit autotools update-rc.d
+
+INITSCRIPT_NAME = "bluetooth"
+INITSCRIPT_PARAMS = "defaults 23 19"
+
+do_install_append() {
+ install -d ${D}${base_sbindir} ${D}${base_bindir}/ ${D}${sysconfdir}/apm/event.d/
+ mv ${D}${sbindir}/* ${D}${base_sbindir}/
+ mv ${D}${bindir}/* ${D}${base_bindir}/
+ rmdir ${D}${bindir} ${D}${sbindir}
+ chmod u+s ${D}${base_sbindir}/hciattach ${D}${base_sbindir}/hciconfig
+ install -m 0644 ${WORKDIR}/hcid.conf ${D}${sysconfdir}/bluetooth/
+ install -m 0755 ${WORKDIR}/02dtl1_cs.sh ${D}${sysconfdir}/apm/event.d/
+}
+
+CONFFILES_${PN} = "${sysconfdir}/bluetooth/hcid.conf ${sysconfdir}/bluetooth/rfcomm.conf \
+ ${sysconfdir}/default/bluetooth"
+
+PACKAGES =+ "${PN}-ciptool"
+FILES_${PN}-ciptool = "/bin/ciptool"
+RREPLACES_${PN}-ciptool = "bluez-utils-dbus-ciptool"
+RCONFLICTS_${PN}-ciptool = "bluez-utils-dbus-ciptool bluez-utils-nodbus"
diff --git a/packages/bluez/bluez-utils_3.9.bb b/packages/bluez/bluez-utils_3.9.bb
new file mode 100644
index 0000000000..e710e8c8f6
--- /dev/null
+++ b/packages/bluez/bluez-utils_3.9.bb
@@ -0,0 +1,3 @@
+require bluez-utils.inc
+
+PR = "r4"
diff --git a/packages/bluez/files/openzaurus/bluetooth.default b/packages/bluez/files/openzaurus/bluetooth.default
deleted file mode 100644
index e63ab137cc..0000000000
--- a/packages/bluez/files/openzaurus/bluetooth.default
+++ /dev/null
@@ -1,37 +0,0 @@
-# Bluetooth configuraton file
-
-# Start of hcid (allowed values are "true" and "false")
-HCID_ENABLE=true
-
-# Config file for hcid
-HCID_CONFIG="/etc/bluetooth/hcid.conf"
-
-# Start sdpd (allowed values are "true" and "false")
-SDPD_ENABLE=true
-
-# Start hidd (allowed values are "true" and "false")
-HIDD_ENABLE=false
-
-# Arguments to hidd
-HIDD_OPTIONS=""
-
-# Run hid2hci (allowed values are "true" and "false")
-HID2HCI_ENABLE=true
-
-# Bind rfcomm devices (allowed values are "true" and "false")
-RFCOMM_ENABLE=true
-
-# Config file for rfcomm
-RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"
-
-# Start dund (allowed values are "true" and "false")
-DUND_ENABLE=false
-
-# Arguments to dund
-DUND_OPTIONS="--listen --persist"
-
-# Start pand (allowed values are "true" and "false")
-PAND_ENABLE=false
-
-# Arguments to pand
-PAND_OPTIONS="--listen --role NAP"
diff --git a/packages/initscripts/initscripts-1.0/angstrom/.mtn2git_empty b/packages/bmon/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/initscripts/initscripts-1.0/angstrom/.mtn2git_empty
+++ b/packages/bmon/.mtn2git_empty
diff --git a/packages/bmon/bmon_2.1.0.bb b/packages/bmon/bmon_2.1.0.bb
new file mode 100644
index 0000000000..d6cd03f614
--- /dev/null
+++ b/packages/bmon/bmon_2.1.0.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Portable Bandwidth Monitor and rate estimator"
+HOMEPAGE = "http://people.suug.ch/~tgr/bmon/"
+SECTION = "console/utils"
+LICENSE = "MIT"
+# only works with libnl-0.5.0
+DEPENDS = "libnl"
+
+SRC_URI = "http://people.suug.ch/~tgr/bmon/files/bmon-2.1.0.tar.gz \
+ file://no-strip.patch;patch=1"
+
+inherit autotools
+
+do_compile() {
+ oe_runmake
+}
diff --git a/packages/initscripts/initscripts-1.0/openzaurus/.mtn2git_empty b/packages/bmon/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/initscripts/initscripts-1.0/openzaurus/.mtn2git_empty
+++ b/packages/bmon/files/.mtn2git_empty
diff --git a/packages/bmon/files/no-strip.patch b/packages/bmon/files/no-strip.patch
new file mode 100644
index 0000000000..f09e816857
--- /dev/null
+++ b/packages/bmon/files/no-strip.patch
@@ -0,0 +1,13 @@
+Index: bmon-2.1.0/GNUmakefile
+===================================================================
+--- bmon-2.1.0.orig/GNUmakefile
++++ bmon-2.1.0/GNUmakefile
+@@ -50,7 +50,7 @@ distclean: clean
+ install:
+ ./install-sh -d -m 0755 $(DESTDIR)$(prefix)/bin
+ ./install-sh -d -m 0755 $(DESTDIR)$(mandir)/man1
+- ./install-sh -c -s -m 0755 src/bmon $(DESTDIR)$(prefix)/bin
++ ./install-sh -c -m 0755 src/bmon $(DESTDIR)$(prefix)/bin
+ ./install-sh -c -m 0644 man/bmon.1 $(DESTDIR)$(mandir)/man1
+
+ show: Makefile.opts
diff --git a/packages/bogofilter/bogofilter_0.96.0.bb b/packages/bogofilter/bogofilter_0.96.0.bb
index dba0893b2b..72cec9be3c 100644
--- a/packages/bogofilter/bogofilter_0.96.0.bb
+++ b/packages/bogofilter/bogofilter_0.96.0.bb
@@ -5,7 +5,7 @@ DESCRIPTION = "Bogofilter is a mail filter that classifies mail as spam or ham (
by a statistical analysis of the message's header and content (body). \
The program is able to learn from the user's classifications and corrections."
LICENSE = "GPL"
-PR = "r6"
+PR = "r7"
PRIORITY = "optional"
SRC_URI = "http://download.sourceforge.net/bogofilter/bogofilter-${PV}.tar.bz2 \
diff --git a/packages/bogofilter/files/volatiles b/packages/bogofilter/files/volatiles
index 04960ff2d3..f460c91fea 100644
--- a/packages/bogofilter/files/volatiles
+++ b/packages/bogofilter/files/volatiles
@@ -1 +1 @@
-d spam filter 0770 /var/spool/filter
+d spam filter 0770 /var/spool/filter none
diff --git a/packages/ipkg/ipkg-0.99.153/.mtn2git_empty b/packages/bsdiff/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/ipkg/ipkg-0.99.153/.mtn2git_empty
+++ b/packages/bsdiff/.mtn2git_empty
diff --git a/packages/btscanner/btscanner_2.0.bb b/packages/btscanner/btscanner_2.0.bb
index ac991ef078..0478577320 100644
--- a/packages/btscanner/btscanner_2.0.bb
+++ b/packages/btscanner/btscanner_2.0.bb
@@ -2,11 +2,13 @@ DESCRIPTION = "Extract information from Bluetooth devices in range."
SECTION = "libs"
PRIORITY = "optional"
HOMEPAGE = "http://www.pentest.co.uk/cgi-bin/viewcat.cgi?cat=downloads&section=01_bluetooth"
-DEPENDS = "bluez-libs gdbm ncurses"
-PR = "r0"
+DEPENDS = "bluez-libs gdbm ncurses libxml2"
+PR = "r1"
LICENSE = "GPLv2"
-SRC_URI = "http://www.pentest.co.uk/src/btscanner-${PV}.tar.bz2"
+SRC_URI = "http://www.pentest.co.uk/src/btscanner-${PV}.tar.bz2 \
+ file://gcc-4.patch;patch=1 \
+ "
#Yes, the packages uses this ugly hardcoded path instead of ${sysconfdir}
FILES_${PN} += "/usr/share/oui.txt"
diff --git a/packages/ipkg/ipkg-0.99.155/.mtn2git_empty b/packages/btscanner/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/ipkg/ipkg-0.99.155/.mtn2git_empty
+++ b/packages/btscanner/files/.mtn2git_empty
diff --git a/packages/btscanner/files/gcc-4.patch b/packages/btscanner/files/gcc-4.patch
new file mode 100644
index 0000000000..dab2bfa2ff
--- /dev/null
+++ b/packages/btscanner/files/gcc-4.patch
@@ -0,0 +1,12 @@
+diff -Naur btscanner-2.0.orig/configure.in btscanner-2.0/configure.in
+--- btscanner-2.0.orig/configure.in 2004-11-01 12:56:02.000000000 +0100
++++ btscanner-2.0/configure.in 2007-03-11 14:58:09.000000000 +0100
+@@ -64,7 +64,7 @@
+
+ # CFLAGS
+ CFLAGS="$CFLAGS -Wall -pthread -Wshadow -Wbad-function-cast \
+- -Wformat -Wimplicit-function-dec -Wparentheses -Wsign-compare \
++ -Wformat -Wparentheses -Wsign-compare \
+ -Wstrict-prototypes -Wtrigraphs -Wundef -Wuninitialized \
+ -W -Wunused -Wformat-security -Wmissing-braces -Wbad-function-cast \
+ -Wcast-qual -falign-functions -falign-labels -falign-loops\
diff --git a/packages/btxml/btxml.bb b/packages/btxml/btxml.bb
index b48ebb79f6..d072b85bac 100644
--- a/packages/btxml/btxml.bb
+++ b/packages/btxml/btxml.bb
@@ -1,9 +1,9 @@
DESCRIPTION = "Bluetooh Download Data from remote phones"
-PRIORITY = "optional"
-SECTIONS = "apps"
-DEPENDS = "bluez-libs"
HOMEPAGE = "http://www.saftware.de"
+SECTION = "apps"
+PRIORITY = "optional"
LICENSE = "GPL"
+DEPENDS = "bluez-libs"
SRC_URI = "http://www.saftware.de/bluetooth/btxml.c"
S = "${WORKDIR}"
diff --git a/packages/busybox/busybox-1.00/nylon/defconfig b/packages/busybox/busybox-1.00/nylon/defconfig
index 3e4257ef04..7efd042cdc 100644
--- a/packages/busybox/busybox-1.00/nylon/defconfig
+++ b/packages/busybox/busybox-1.00/nylon/defconfig
@@ -41,8 +41,8 @@ CONFIG_AR=y
CONFIG_FEATURE_AR_LONG_FILENAMES=y
CONFIG_BUNZIP2=y
CONFIG_CPIO=y
-CONFIG_DPKG=y
-CONFIG_DPKG_DEB=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=y
diff --git a/packages/busybox/busybox-1.01/nylon/defconfig b/packages/busybox/busybox-1.01/nylon/defconfig
index 3e4257ef04..7efd042cdc 100644
--- a/packages/busybox/busybox-1.01/nylon/defconfig
+++ b/packages/busybox/busybox-1.01/nylon/defconfig
@@ -41,8 +41,8 @@ CONFIG_AR=y
CONFIG_FEATURE_AR_LONG_FILENAMES=y
CONFIG_BUNZIP2=y
CONFIG_CPIO=y
-CONFIG_DPKG=y
-CONFIG_DPKG_DEB=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=y
diff --git a/packages/busybox/busybox-1.01/openzaurus/defconfig b/packages/busybox/busybox-1.01/openzaurus/defconfig
deleted file mode 100644
index 34a5804a4d..0000000000
--- a/packages/busybox/busybox-1.01/openzaurus/defconfig
+++ /dev/null
@@ -1,475 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-# CONFIG_FEATURE_DEVFS is not set
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-CONFIG_LFS=y
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# 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_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_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNZIP is not set
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CMP is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-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_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 is not set
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_OD=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-CONFIG_STTY=y
-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
-
-#
-# test (forced enabled for use with shell)
-#
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# 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 and more
-#
-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 is not set
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-# CONFIG_DUMPKMAP is not set
-CONFIG_GETKEY=y
-# CONFIG_LOADFONT is not set
-# CONFIG_LOADKMAP is not set
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-# CONFIG_SETKEYCODES 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_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-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_MTIME=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_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_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# 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_U_W_TMP=y
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_CROND is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_TIME is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-CONFIG_FEATURE_2_4_MODULES=y
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-CONFIG_FEATURE_INSMOD_LOAD_MAP=y
-CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL=y
-CONFIG_LSMOD=y
-CONFIG_MODPROBE=y
-CONFIG_RMMOD=y
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD 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_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_IPCALC is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-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_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_FEATURE_TFTP_DEBUG is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE 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
-
-#
-# udhcp Server/Client
-#
-# CONFIG_UDHCPD is not set
-CONFIG_UDHCPC=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-# CONFIG_PIDOF is not set
-CONFIG_PS=y
-CONFIG_RENICE=y
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-# CONFIG_SYSCTL is not set
-
-#
-# Another Bourne-like Shell
-#
-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_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=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_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_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 is not set
-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 is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-# CONFIG_FEATURE_FBSET_READMODE is not set
-# 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 is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONGOPTIONS=y
-CONFIG_LOSETUP=y
-CONFIG_MKSWAP=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-CONFIG_SWAPONOFF=y
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.2.0/nylon/defconfig b/packages/busybox/busybox-1.2.0/nylon/defconfig
index 4d61408bf8..ee3373a62c 100644
--- a/packages/busybox/busybox-1.2.0/nylon/defconfig
+++ b/packages/busybox/busybox-1.2.0/nylon/defconfig
@@ -54,8 +54,8 @@ CONFIG_AR=y
CONFIG_FEATURE_AR_LONG_FILENAMES=y
CONFIG_BUNZIP2=y
CONFIG_CPIO=y
-CONFIG_DPKG=y
-CONFIG_DPKG_DEB=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=y
diff --git a/packages/busybox/busybox-1.2.1/angstrom/defconfig b/packages/busybox/busybox-1.2.1/angstrom/defconfig
index 981b7d7c71..7308eead76 100644
--- a/packages/busybox/busybox-1.2.1/angstrom/defconfig
+++ b/packages/busybox/busybox-1.2.1/angstrom/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
diff --git a/packages/busybox/busybox-1.2.1/angstrom/syslog.conf b/packages/busybox/busybox-1.2.1/angstrom/syslog.conf
new file mode 100644
index 0000000000..047e82419e
--- /dev/null
+++ b/packages/busybox/busybox-1.2.1/angstrom/syslog.conf
@@ -0,0 +1,9 @@
+DESTINATION="file" # log destinations (buffer file remote)
+MARKINT=20 # interval between --mark-- entries [min]
+REDUCE=no # reduced-size logging
+BUFFERSIZE=64 # buffer: size of circular buffer [kByte]
+LOGFILE=/var/log/messages # file: where to log
+ROTATESIZE=32 # file: rotate log if grown beyond X [kByte] (busybox 1.2+)
+ROTATEGENS=1 # file: keep X generations of rotated logs (busybox 1.2+)
+REMOTE=loghost:514 # remote: where to log
+FOREGROUND=no # run in foreground (don't use!)
diff --git a/packages/busybox/busybox-1.2.1/defconfig b/packages/busybox/busybox-1.2.1/defconfig
index 981b7d7c71..7308eead76 100644
--- a/packages/busybox/busybox-1.2.1/defconfig
+++ b/packages/busybox/busybox-1.2.1/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
diff --git a/packages/ixp4xx/ixp4xx-npe-native-2.3/.mtn2git_empty b/packages/busybox/busybox-1.2.1/foonas/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/ixp4xx/ixp4xx-npe-native-2.3/.mtn2git_empty
+++ b/packages/busybox/busybox-1.2.1/foonas/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.2.1/foonas/defconfig b/packages/busybox/busybox-1.2.1/foonas/defconfig
new file mode 100644
index 0000000000..322ccd7740
--- /dev/null
+++ b/packages/busybox/busybox-1.2.1/foonas/defconfig
@@ -0,0 +1,643 @@
+#
+# Automatically generated make config: don't edit
+#
+HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+CONFIG_NITPICK=y
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# 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=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+CONFIG_FEATURE_INSTALLER=y
+CONFIG_LOCALE_SUPPORT=y
+CONFIG_GETOPT_LONG=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_SUID=y
+# 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="powerpc-linux-"
+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=1
+
+#
+# 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=y
+# 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=y
+# CONFIG_CMP is not set
+# CONFIG_COMM is not set
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_DF=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_BINARY=y
+CONFIG_FEATURE_DIFF_DIR=y
+CONFIG_FEATURE_DIFF_MINIMAL=y
+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=y
+# CONFIG_HOSTID is not set
+CONFIG_ID=y
+CONFIG_INSTALL=y
+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+# 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=y
+CONFIG_NICE=y
+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=y
+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=y
+
+#
+# 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 is not set
+# CONFIG_LOADFONT is not set
+# CONFIG_LOADKMAP is not set
+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=y
+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=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+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=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+CONFIG_INIT=y
+# CONFIG_DEBUG_INIT is not set
+CONFIG_FEATURE_USE_INITTAB=y
+CONFIG_FEATURE_INIT_SCTTY=y
+# CONFIG_FEATURE_EXTRA_QUIET is not set
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+CONFIG_FEATURE_INITRD=y
+CONFIG_HALT=y
+# CONFIG_MESG is not set
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+# CONFIG_USE_BB_SHADOW is not set
+# CONFIG_USE_BB_PWD_GRP is not set
+CONFIG_ADDGROUP=y
+CONFIG_DELGROUP=y
+CONFIG_ADDUSER=y
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+CONFIG_FEATURE_UTMP=y
+CONFIG_FEATURE_WTMP=y
+CONFIG_LOGIN=y
+# CONFIG_FEATURE_SECURETTY is not set
+CONFIG_PASSWD=y
+CONFIG_SU=y
+CONFIG_SULOGIN=y
+# CONFIG_VLOCK is not set
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_E2FSCK=y
+CONFIG_FSCK=y
+CONFIG_LSATTR=y
+CONFIG_MKE2FS=y
+CONFIG_TUNE2FS=y
+CONFIG_E2LABEL=y
+CONFIG_FINDFS=y
+
+#
+# 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 is not set
+# CONFIG_FEATURE_FBSET_FANCY is not set
+# CONFIG_FEATURE_FBSET_READMODE is not set
+# 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=y
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
+CONFIG_GETOPT=y
+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=y
+# CONFIG_SETARCH is not set
+CONFIG_SWAPONOFF=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# 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=y
+# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_CRONTAB=y
+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=y
+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=y
+CONFIG_HDPARM=y
+CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
+# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
+CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
+# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
+CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
+# 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=y
+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=y
+# 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=y
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+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=y
+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=y
+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 is not set
+CONFIG_APP_UDHCPC=y
+# CONFIG_APP_DUMPLEASES is not set
+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=y
+CONFIG_ASH_BUILTIN_TEST=y
+# CONFIG_ASH_CMDCMD is not set
+# CONFIG_ASH_MAIL is not set
+# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
+CONFIG_ASH_RANDOM_SUPPORT=y
+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=y
+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-1.2.1/nylon/defconfig b/packages/busybox/busybox-1.2.1/nylon/defconfig
index 67c5408ada..8a7aa8b00f 100644
--- a/packages/busybox/busybox-1.2.1/nylon/defconfig
+++ b/packages/busybox/busybox-1.2.1/nylon/defconfig
@@ -54,8 +54,8 @@ CONFIG_AR=y
CONFIG_FEATURE_AR_LONG_FILENAMES=y
CONFIG_BUNZIP2=y
CONFIG_CPIO=y
-CONFIG_DPKG=y
-CONFIG_DPKG_DEB=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=y
diff --git a/packages/busybox/busybox-1.2.1/slugos/defconfig b/packages/busybox/busybox-1.2.1/slugos/defconfig
index c35b4f7f70..c76954e711 100644
--- a/packages/busybox/busybox-1.2.1/slugos/defconfig
+++ b/packages/busybox/busybox-1.2.1/slugos/defconfig
@@ -37,7 +37,7 @@ CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
# CONFIG_FEATURE_SHARED_BUSYBOX is not set
CONFIG_LFS=y
USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="arm-angstrom-linux-gnueabi-"
+CROSS_COMPILER_PREFIX="armeb-linux-"
CONFIG_BUILD_AT_ONCE=y
#
@@ -133,8 +133,8 @@ 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_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
CONFIG_DU=y
CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
CONFIG_ECHO=y
@@ -287,12 +287,24 @@ CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
# Finding Utilities
#
# CONFIG_FIND is not set
-CONFIG_FEATURE_FIND_EXEC=y
+# CONFIG_FEATURE_FIND_PRINT0 is not set
+# CONFIG_FEATURE_FIND_MTIME is not set
+# CONFIG_FEATURE_FIND_MMIN is not set
+# CONFIG_FEATURE_FIND_PERM is not set
+# CONFIG_FEATURE_FIND_TYPE is not set
+# CONFIG_FEATURE_FIND_XDEV is not set
+# CONFIG_FEATURE_FIND_NEWER is not set
+# CONFIG_FEATURE_FIND_INUM is not set
+# CONFIG_FEATURE_FIND_EXEC is not set
CONFIG_GREP=y
CONFIG_FEATURE_GREP_EGREP_ALIAS=y
CONFIG_FEATURE_GREP_FGREP_ALIAS=y
CONFIG_FEATURE_GREP_CONTEXT=y
# CONFIG_XARGS is not set
+# 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
@@ -331,10 +343,10 @@ CONFIG_FEATURE_UTMP=y
# Linux Ext2 FS Progs
#
CONFIG_CHATTR=y
-CONFIG_E2FSCK=y
-CONFIG_FSCK=y
+# CONFIG_E2FSCK is not set
+# CONFIG_FSCK is not set
# CONFIG_LSATTR is not set
-CONFIG_MKE2FS=y
+# CONFIG_MKE2FS is not set
# CONFIG_TUNE2FS is not set
# CONFIG_E2LABEL is not set
# CONFIG_FINDFS is not set
@@ -343,16 +355,19 @@ CONFIG_MKE2FS=y
# Linux Module Utilities
#
# CONFIG_INSMOD is not set
+# 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 is not set
# CONFIG_LSMOD is not set
+# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
# CONFIG_MODPROBE is not set
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+# CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS is not set
+# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
# CONFIG_FEATURE_2_4_MODULES is not set
-CONFIG_FEATURE_2_6_MODULES=y
+# CONFIG_FEATURE_2_6_MODULES is not set
# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
#
@@ -360,6 +375,8 @@ CONFIG_FEATURE_2_6_MODULES=y
#
CONFIG_DMESG=y
# CONFIG_FBSET is not set
+# CONFIG_FEATURE_FBSET_FANCY is not set
+# CONFIG_FEATURE_FBSET_READMODE is not set
# CONFIG_FDFLUSH is not set
# CONFIG_FDFORMAT is not set
CONFIG_FDISK=y
@@ -373,6 +390,7 @@ CONFIG_FEATURE_OSF_LABEL=y
# CONFIG_FREERAMDISK is not set
# CONFIG_FSCK_MINIX is not set
# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
# CONFIG_GETOPT is not set
CONFIG_HEXDUMP=y
CONFIG_HWCLOCK=y
@@ -388,16 +406,22 @@ CONFIG_MKSWAP=y
# CONFIG_FEATURE_MKSWAP_V0 is not set
CONFIG_MORE=y
CONFIG_FEATURE_USE_TERMIOS=y
-# CONFIG_MOUNT is not set
-# CONFIG_FEATURE_MOUNT_NFS is not set
+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 is not set
# CONFIG_SWITCH_ROOT is not set
-# CONFIG_UMOUNT is not set
-# CONFIG_FEATURE_UMOUNT_ALL is not set
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
#
# Miscellaneous Utilities
@@ -486,6 +510,11 @@ CONFIG_FEATURE_IFUPDOWN_IPV6=y
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
# CONFIG_FEATURE_INETD_RPC is not set
# CONFIG_IP is not set
+# CONFIG_FEATURE_IP_ADDRESS is not set
+# CONFIG_FEATURE_IP_LINK is not set
+# CONFIG_FEATURE_IP_ROUTE is not set
+# CONFIG_FEATURE_IP_TUNNEL is not set
+# CONFIG_FEATURE_IP_SHORT_FORMS is not set
# CONFIG_IPADDR is not set
# CONFIG_IPLINK is not set
# CONFIG_IPROUTE is not set
@@ -523,7 +552,7 @@ CONFIG_TRACEROUTE=y
#
# CONFIG_APP_UDHCPD is not set
CONFIG_APP_UDHCPC=y
-CONFIG_APP_DUMPLEASES=y
+# CONFIG_APP_DUMPLEASES is not set
CONFIG_FEATURE_UDHCP_SYSLOG=y
# CONFIG_FEATURE_UDHCP_DEBUG is not set
# CONFIG_VCONFIG is not set
diff --git a/packages/busybox/busybox-1.2.2/angstrom/defconfig b/packages/busybox/busybox-1.2.2/angstrom/defconfig
index 981b7d7c71..7308eead76 100644
--- a/packages/busybox/busybox-1.2.2/angstrom/defconfig
+++ b/packages/busybox/busybox-1.2.2/angstrom/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
diff --git a/packages/busybox/busybox-1.2.2/defconfig b/packages/busybox/busybox-1.2.2/defconfig
index 981b7d7c71..7308eead76 100644
--- a/packages/busybox/busybox-1.2.2/defconfig
+++ b/packages/busybox/busybox-1.2.2/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
diff --git a/packages/busybox/busybox-1.2.2/nylon/defconfig b/packages/busybox/busybox-1.2.2/nylon/defconfig
index 67c5408ada..8a7aa8b00f 100644
--- a/packages/busybox/busybox-1.2.2/nylon/defconfig
+++ b/packages/busybox/busybox-1.2.2/nylon/defconfig
@@ -54,8 +54,8 @@ CONFIG_AR=y
CONFIG_FEATURE_AR_LONG_FILENAMES=y
CONFIG_BUNZIP2=y
CONFIG_CPIO=y
-CONFIG_DPKG=y
-CONFIG_DPKG_DEB=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=y
diff --git a/packages/libsdl/libsdl-qpe-1.2.7/.mtn2git_empty b/packages/busybox/busybox-1.3.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libsdl/libsdl-qpe-1.2.7/.mtn2git_empty
+++ b/packages/busybox/busybox-1.3.1/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.3.1/add-getkey-applet.patch b/packages/busybox/busybox-1.3.1/add-getkey-applet.patch
new file mode 100644
index 0000000000..a75cf823c7
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/add-getkey-applet.patch
@@ -0,0 +1,167 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+Index: busybox-1.1.0/console-tools/getkey.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ busybox-1.1.0/console-tools/getkey.c 2006-03-14 17:17:28.000000000 +0100
+@@ -0,0 +1,94 @@
++/* vi: set sw=4 ts=4: */
++/*
++ * getkey.c - Michael 'Mickey' Lauer
++ *
++ * Version 0.1
++ *
++ * A simple keygrapper. Displays a configurable message and waits a dedicated number
++ * of seconds for a keypress. Sets the exit code accordingly (SUCCESS on keypress).
++ */
++#include <stdio.h>
++#include <fcntl.h>
++#include <memory.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <sys/types.h>
++#include <errno.h>
++#include <sys/ioctl.h>
++#include <sys/kd.h>
++#include "busybox.h"
++
++extern int getkey_main(int argc, char **argv)
++{
++ int status = EXIT_FAILURE;
++
++ if ( argc < 2 )
++ {
++ bb_show_usage();
++ }
++
++ /*
++ * If no terminal is attached it is quite useless
++ * to treat it like one.
++ */
++ if( !isatty(STDIN_FILENO) )
++ {
++ goto error_hard;
++ }
++
++ //bb_printf( "DEBUG: time = '%s'\n", argv[1] );
++ //bb_printf( "DEBUG: mesg = '%s'\n", argv[2] );
++
++ struct termios orig;
++ struct termios attr;
++
++ if ( tcgetattr(STDIN_FILENO, &orig) == -1 )
++ {
++ goto error_hard;
++ }
++
++ attr = orig;
++ attr.c_cc[VMIN] = 0;
++ attr.c_cc[VTIME] = 0;
++ attr.c_iflag |= INLCR;
++ attr.c_oflag |= OPOST|ONLCR;
++ attr.c_cflag &= ~PARENB;
++ attr.c_lflag &= ~(ICANON/*|ECHO*/);
++ if ( tcsetattr(STDIN_FILENO,TCSANOW,&attr) == -1 )
++ {
++ goto error_hard;
++ }
++
++ fd_set rfds;
++ struct timeval tv;
++ int retval;
++
++ FD_ZERO(&rfds);
++ FD_SET(0, &rfds);
++
++ tv.tv_sec = atoi( argv[1] );
++ tv.tv_usec = 0;
++
++ if ( argc == 3 )
++ {
++ bb_printf( argv[2], tv.tv_sec );
++ bb_printf( "\n" );
++ fflush(stdout);
++ }
++ retval = select(1, &rfds, NULL, NULL, &tv);
++ if (retval > 0)
++ {
++ status = EXIT_SUCCESS;
++ }
++
++ if (tcsetattr(STDIN_FILENO,TCSANOW,&orig) == -1 )
++ {
++ goto error_hard;
++ }
++
++ return status;
++
++error_hard :
++ return EXIT_FAILURE;
++};
++
+Index: busybox-1.1.0/console-tools/Makefile.in
+===================================================================
+--- busybox-1.1.0.orig/console-tools/Makefile.in 2006-01-11 06:43:57.000000000 +0100
++++ busybox-1.1.0/console-tools/Makefile.in 2006-03-14 17:18:18.000000000 +0100
+@@ -21,6 +21,7 @@
+ CONSOLETOOLS_DIR-$(CONFIG_OPENVT) += openvt.o
+ CONSOLETOOLS_DIR-$(CONFIG_RESET) += reset.o
+ CONSOLETOOLS_DIR-$(CONFIG_SETKEYCODES) += setkeycodes.o
++CONSOLETOOLS_DIR-$(CONFIG_GETKEY) += getkey.o
+
+ libraries-y+=$(CONSOLETOOLS_DIR)$(CONSOLETOOLS_AR)
+
+Index: busybox-1.1.0/console-tools/Config.in
+===================================================================
+--- busybox-1.1.0.orig/console-tools/Config.in 2006-01-11 06:43:57.000000000 +0100
++++ busybox-1.1.0/console-tools/Config.in 2006-03-14 17:17:28.000000000 +0100
+@@ -31,6 +31,14 @@
+ This program dumps the kernel's keyboard translation table to
+ stdout, in binary format. You can then use loadkmap to load it.
+
++config CONFIG_GETKEY
++ bool "getkey"
++ default n
++ help
++ This program displays a configurable message and waits
++ a dedicated number of seconds for a keypress. It sets
++ the exit code accordingly, i.e. SUCCESS if there was a keypress.
++
+ config CONFIG_LOADFONT
+ bool "loadfont"
+ default n
+Index: busybox-1.1.0/include/applets.h
+===================================================================
+--- busybox-1.1.0.orig/include/applets.h 2006-01-11 06:44:14.000000000 +0100
++++ busybox-1.1.0/include/applets.h 2006-03-14 17:17:28.000000000 +0100
+@@ -261,6 +261,9 @@
+ #ifdef CONFIG_FUSER
+ APPLET(fuser, fuser_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
+ #endif
++#ifdef CONFIG_GETKEY
++ APPLET(getkey, getkey_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
++#endif
+ #ifdef CONFIG_GETOPT
+ APPLET(getopt, getopt_main, _BB_DIR_BIN, _BB_SUID_NEVER)
+ #endif
+Index: busybox-1.1.0/include/usage.h
+===================================================================
+--- busybox-1.1.0.orig/include/usage.h 2006-01-11 06:44:14.000000000 +0100
++++ busybox-1.1.0/include/usage.h 2006-03-14 17:19:11.000000000 +0100
+@@ -841,6 +841,13 @@
+ "\t-p, --password Password to be used\n" \
+ "\t-P, --port Port number to be used"
+
++#define getkey_trivial_usage \
++ "time [message]"
++#define getkey_full_usage \
++ "Display a message and wait for a keypress."
++#define getkey_example_usage \
++ "$ getkey 5 'Press a key within %d seconds to interrupt autoboot.'"
++
+ #define fuser_trivial_usage \
+ "[options] file OR port/proto"
+ #define fuser_full_usage \
diff --git a/packages/libxslt/libxslt-1.1.17/.mtn2git_empty b/packages/busybox/busybox-1.3.1/angstrom/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxslt/libxslt-1.1.17/.mtn2git_empty
+++ b/packages/busybox/busybox-1.3.1/angstrom/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.3.1/angstrom/defconfig b/packages/busybox/busybox-1.3.1/angstrom/defconfig
new file mode 100644
index 0000000000..7308eead76
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/angstrom/defconfig
@@ -0,0 +1,647 @@
+#
+# 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-1.3.1/below.patch b/packages/busybox/busybox-1.3.1/below.patch
new file mode 100644
index 0000000000..95e8376e46
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/below.patch
@@ -0,0 +1,46 @@
+Index: busybox-1.1.0/modutils/modprobe.c
+===================================================================
+--- busybox-1.1.0.orig/modutils/modprobe.c 2006-01-11 06:43:56.000000000 +0100
++++ busybox-1.1.0/modutils/modprobe.c 2006-03-14 16:36:54.000000000 +0100
+@@ -509,6 +509,41 @@
+ }
+ }
+ }
++ else if ((strncmp (buffer, "below", 5) == 0) && isspace (buffer[5])) {
++ char *mod, *deps;
++ if (parse_tag_value (buffer + 6, &mod, &deps)) {
++ struct dep_t *dt;
++
++ for (dt = first; dt; dt = dt->m_next) {
++ if (strcmp (dt->m_name, mod) == 0)
++ break;
++ }
++ if (dt) {
++ char *pp;
++ char *name;
++
++ pp = name = deps;
++
++ for (;;) {
++ while (*pp != 0 && !isspace (*pp))
++ pp++;
++ if (isspace (*pp))
++ *(pp++) = 0;
++
++ dt->m_depcnt++;
++ dt->m_deparr = (char **) xrealloc (dt->m_deparr,
++ sizeof (char *) * dt->m_depcnt);
++ dt->m_deparr[dt->m_depcnt - 1] = bb_xstrdup (name);
++
++ while (isspace (*pp))
++ pp++;
++ name = pp;
++ if (*pp == 0)
++ break;
++ }
++ }
++ }
++ }
+ }
+ }
+ close ( fd );
diff --git a/packages/busybox/busybox-1.3.1/busybox-mdev.sh b/packages/busybox/busybox-1.3.1/busybox-mdev.sh
new file mode 100755
index 0000000000..9744322fa9
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/busybox-mdev.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+MDEV=/sbin/mdev
+DESC="Busybox mdev setup"
+
+# Complain if thing's aren't right
+if [ ! -e /proc/filesystems ]; then
+ echo "mdev requires a mounted procfs, not started."
+ exit 1
+fi
+
+if ! grep -q '[[:space:]]tmpfs$' /proc/filesystems; then
+ echo "mdev requires tmpfs support, not started."
+ exit 1
+fi
+
+if [ ! -d /sys/class/ ]; then
+ echo "mdev requires a mounted sysfs, not started."
+ exit 1
+fi
+
+if [ ! -e /proc/sys/kernel/hotplug ]; then
+ echo "mdev requires hotplug support, not started."
+ exit 1
+fi
+
+# We need to unmount /dev/pts/ and remount it later over the tmpfs
+if mountpoint -q /dev/pts/; then
+ umount -l /dev/pts/
+fi
+
+if mountpoint -q /dev/shm/; then
+ umount -l /dev/shm/
+fi
+
+# Create tmpfs for /dev
+echo "Creating tmpfs at /dev"
+mount -t tmpfs tmpfs /dev -o size=800k
+
+# Register mdev as hotplug event helper
+echo "$MDEV" > /proc/sys/kernel/hotplug
+
+# Populate /dev from /sys info
+echo "Populating /dev using mdev"
+$MDEV -s
+
+# Touch .udev to inform scripts that /dev needs no further setup
+touch /dev/.udev
+
+# Mount devpts
+TTYGRP=5
+TTYMODE=620
+mkdir -m 755 -p /dev/pts
+if [ ! -e /dev/ptmx ]; then
+ mknod -m 666 /dev/ptmx c 5 2
+fi
+mount -t devpts devpts /dev/pts -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE
+
+# Make shm directory
+mkdir -m 755 -p /dev/shm
+
+# Make extraneous links
+ln -sf /proc/self/fd /dev/fd
+ln -sf /proc/self/fd/0 /dev/stdin
+ln -sf /proc/self/fd/1 /dev/stdout
+ln -sf /proc/self/fd/2 /dev/stderr
+ln -sf /proc/kcore /dev/core
+ln -sf /proc/asound/oss/sndstat /dev/sndstat
+
+exit 0
diff --git a/packages/busybox/busybox-1.3.1/defconfig b/packages/busybox/busybox-1.3.1/defconfig
new file mode 100644
index 0000000000..7308eead76
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/defconfig
@@ -0,0 +1,647 @@
+#
+# 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-1.3.1/dhcp-hostname.patch b/packages/busybox/busybox-1.3.1/dhcp-hostname.patch
new file mode 100644
index 0000000000..e0adea662e
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/dhcp-hostname.patch
@@ -0,0 +1,30 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- busybox-1.01/networking/udhcp/dhcpc.c~dhcp-hostname
++++ busybox-1.01/networking/udhcp/dhcpc.c
+@@ -193,6 +193,7 @@
+ int max_fd;
+ int sig;
+ int no_clientid = 0;
++ char hostbuf[256]; /* SUSv2: hostnames are <= 255 bytes */
+
+ static const struct option arg_options[] = {
+ {"clientid", required_argument, 0, 'c'},
+@@ -211,6 +212,14 @@
+ {0, 0, 0, 0}
+ };
+
++ if (gethostname (hostbuf, sizeof (hostbuf)) == 0) {
++ len = strlen (hostbuf);
++ client_config.hostname = xmalloc (len + 2);
++ client_config.hostname[OPT_CODE] = DHCP_HOST_NAME;
++ client_config.hostname[OPT_LEN] = len;
++ strncpy(client_config.hostname + 2, hostbuf, len);
++ }
++
+ /* get options */
+ while (1) {
+ int option_index = 0;
diff --git a/packages/busybox/busybox-1.3.1/dhcpretrytime.patch b/packages/busybox/busybox-1.3.1/dhcpretrytime.patch
new file mode 100644
index 0000000000..893e346acf
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/dhcpretrytime.patch
@@ -0,0 +1,85 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+Index: busybox-1.1.0/networking/udhcp/dhcpc.c
+===================================================================
+--- busybox-1.1.0.orig/networking/udhcp/dhcpc.c 2006-03-14 17:19:31.000000000 +0100
++++ busybox-1.1.0/networking/udhcp/dhcpc.c 2006-03-14 17:20:45.000000000 +0100
+@@ -48,6 +48,7 @@
+ static unsigned long requested_ip; /* = 0 */
+ static unsigned long server_addr;
+ static unsigned long timeout;
++static unsigned long retrytime = 60;
+ static int packet_num; /* = 0 */
+ static int fd = -1;
+
+@@ -95,6 +96,7 @@
+ " -r, --request=IP IP address to request (default: none)\n"
+ " -s, --script=file Run file at dhcp events (default:\n"
+ " " DEFAULT_SCRIPT ")\n"
++" -t, --retrytime time to retry DHCP request (default 60s)\n")
+ " -v, --version Display version\n"
+ );
+ exit(0);
+@@ -214,6 +216,7 @@
+ {"quit", no_argument, 0, 'q'},
+ {"request", required_argument, 0, 'r'},
+ {"script", required_argument, 0, 's'},
++ {"retrytime", required_argument, 0, 't'},
+ {"version", no_argument, 0, 'v'},
+ {0, 0, 0, 0}
+ };
+@@ -229,7 +232,7 @@
+ /* get options */
+ while (1) {
+ int option_index = 0;
+- c = getopt_long(argc, argv, "c:CV:fbH:h:F:i:np:qr:s:v", arg_options, &option_index);
++ c = getopt_long(argc, argv, "c:CV:fbH:h:F:i:np:qr:s:t:v", arg_options, &option_index);
+ if (c == -1) break;
+
+ switch (c) {
+@@ -305,6 +308,9 @@
+ case 's':
+ client_config.script = optarg;
+ break;
++ case 't':
++ retrytime = atol(optarg);
++ break;
+ case 'v':
+ printf("udhcpcd, version %s\n\n", VERSION);
+ return 0;
+@@ -394,7 +400,7 @@
+ }
+ /* wait to try again */
+ packet_num = 0;
+- timeout = now + 60;
++ timeout = now + retrytime;
+ }
+ break;
+ case RENEW_REQUESTED:
+Index: busybox-1.1.0/networking/ifupdown.c
+===================================================================
+--- busybox-1.1.0.orig/networking/ifupdown.c 2006-01-11 06:43:51.000000000 +0100
++++ busybox-1.1.0/networking/ifupdown.c 2006-03-14 17:19:41.000000000 +0100
+@@ -506,7 +506,7 @@
+ static int dhcp_up(struct interface_defn_t *ifd, execfn *exec)
+ {
+ if (execable("/sbin/udhcpc")) {
+- return( execute("udhcpc -n -p /var/run/udhcpc.%iface%.pid -i "
++ return( execute("udhcpc -b -p /var/run/udhcpc.%iface%.pid -i "
+ "%iface% [[-H %hostname%]] [[-c %clientid%]]", ifd, exec));
+ } else if (execable("/sbin/pump")) {
+ return( execute("pump -i %iface% [[-h %hostname%]] [[-l %leasehours%]]", ifd, exec));
+@@ -526,8 +526,8 @@
+ /* SIGUSR2 forces udhcpc to release the current lease and go inactive,
+ * and SIGTERM causes udhcpc to exit. Signals are queued and processed
+ * sequentially so we don't need to sleep */
+- result = execute("kill -USR2 `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null", ifd, exec);
+- result += execute("kill -TERM `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null", ifd, exec);
++ result = execute("kill -USR2 `cat /var/run/udhcpc.%iface%.pid 2>/dev/null` 2>/dev/null", ifd, exec);
++ result += execute("kill -TERM `cat /var/run/udhcpc.%iface%.pid 2>/dev/null` 2>/dev/null", ifd, exec);
+ } else if (execable("/sbin/pump")) {
+ result = execute("pump -i %iface% -k", ifd, exec);
+ } else if (execable("/sbin/dhclient")) {
diff --git a/packages/busybox/busybox-1.3.1/fbset.patch b/packages/busybox/busybox-1.3.1/fbset.patch
new file mode 100644
index 0000000000..d0609ce6f7
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/fbset.patch
@@ -0,0 +1,24 @@
+--- busybox/util-linux/fbset.c~ 2004-07-03 16:24:23.000000000 +0100
++++ busybox/util-linux/fbset.c 2004-12-30 20:09:26.000000000 +0000
+@@ -337,7 +337,7 @@
+ {
+ struct fb_var_screeninfo var, varset;
+ int fh, i;
+- char *fbdev = DEFAULTFBDEV;
++ char *fbdev = NULL;
+ char *modefile = DEFAULTFBMODE;
+ char *thisarg, *mode = NULL;
+
+@@ -404,7 +404,12 @@
+ }
+ }
+
++ if (fbdev == NULL)
++ fbdev = DEFAULTFBDEV;
+ if ((fh = open(fbdev, O_RDONLY)) < 0)
++#ifdef CONFIG_FEATURE_DEVFS
++ if ((fh = open("/dev/fb0", O_RDONLY)) < 0)
++#endif
+ bb_perror_msg_and_die("fbset(open)");
+ if (ioctl(fh, FBIOGET_VSCREENINFO, &var))
+ bb_perror_msg_and_die("fbset(ioctl)");
diff --git a/packages/busybox/busybox-1.3.1/hdparm_M.patch b/packages/busybox/busybox-1.3.1/hdparm_M.patch
new file mode 100644
index 0000000000..9adcd36f92
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/hdparm_M.patch
@@ -0,0 +1,47 @@
+Index: busybox-1.1.0/miscutils/hdparm.c
+===================================================================
+--- busybox-1.1.0.orig/miscutils/hdparm.c 2006-01-11 06:44:13.000000000 +0100
++++ busybox-1.1.0/miscutils/hdparm.c 2006-03-14 17:22:22.000000000 +0100
+@@ -1255,6 +1255,7 @@
+ static unsigned long set_sleepnow, get_sleepnow;
+ static unsigned long get_powermode;
+ static unsigned long set_apmmode, get_apmmode, apmmode;
++static unsigned long set_acoustic = 0, get_acoustic = 0, acoustic = 0;
+ #endif
+ #ifdef CONFIG_FEATURE_HDPARM_GET_IDENTITY
+ static int get_IDentity;
+@@ -2124,6 +2125,20 @@
+ }
+ bb_ioctl(fd, HDIO_DRIVE_CMD, &args,"HDIO_DRIVE_CMD");
+ }
++ if (set_acoustic)
++ {
++ no_scsi();
++ acoustic=check_if_min_and_set_val(acoustic,0);
++ acoustic=check_if_maj_and_set_val(acoustic,254);
++ if_printf(get_acoustic," setting AAM level to 0x%02lX (%ld)\n", acoustic, acoustic);
++ bb_ioctl(fd, HDIO_SET_ACOUSTIC, (int*)acoustic,"HDIO_SET_ACOUSTIC");
++ }
++ if (get_acoustic)
++ {
++ no_scsi();
++ bb_ioctl(fd, HDIO_GET_ACOUSTIC, (unsigned long*)&parm,"HDIO_GET_ACOUSTIC");
++ printf(" acoustic = %2ld (128=quiet ... 254=fast)\n", parm);
++ }
+ if (set_wcache)
+ {
+ #ifdef DO_FLUSHCACHE
+@@ -2832,6 +2847,13 @@
+ p = *argv++, --argc;
+ p=GET_NUMBER(p,&set_readahead,&Xreadahead);
+ break;
++ case 'M':
++ get_acoustic = noisy;
++ noisy = 1;
++ if (!*p && argc && isalnum(**argv))
++ p = *argv++, --argc;
++ p=GET_NUMBER(p,&set_acoustic,&acoustic);
++ break;
+ case 'B':
+ get_apmmode = noisy;
+ noisy = 1;
diff --git a/packages/busybox/busybox-1.3.1/ifupdown-spurious-environ.patch b/packages/busybox/busybox-1.3.1/ifupdown-spurious-environ.patch
new file mode 100644
index 0000000000..8753315f2c
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/ifupdown-spurious-environ.patch
@@ -0,0 +1,12 @@
+--- busybox-1.00/networking/ifupdown.c.old 2005-06-11 19:51:59.000000000 +0100
++++ busybox-1.00/networking/ifupdown.c 2005-06-11 19:52:19.000000000 +0100
+@@ -148,6 +148,9 @@
+ struct mapping_defn_t *mappings;
+ };
+
++/* XXX */
++#define environ local_environ
++
+ static char no_act = 0;
+ static char verbose = 0;
+ static char **environ = NULL;
diff --git a/packages/busybox/busybox-1.3.1/iproute-flush-cache.patch b/packages/busybox/busybox-1.3.1/iproute-flush-cache.patch
new file mode 100644
index 0000000000..f8becc3390
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/iproute-flush-cache.patch
@@ -0,0 +1,23 @@
+Index: networking/libiproute/iproute.c
+===================================================================
+RCS file: /var/cvs/busybox/networking/libiproute/iproute.c,v
+retrieving revision 1.14
+diff -u -r1.14 iproute.c
+--- networking/libiproute/iproute.c 11 Aug 2004 08:10:58 -0000 1.14
++++ networking/libiproute/iproute.c 30 Nov 2004 20:43:44 -0000
+@@ -537,6 +537,15 @@
+ } else if (matches(*argv, "match") == 0) {
+ NEXT_ARG();
+ get_prefix(&filter.mdst, *argv, do_ipv6);
++ } else if (matches(*argv, "table") == 0) {
++ NEXT_ARG();
++ if (matches(*argv, "cache") == 0) {
++ filter.tb = -1;
++ } else if (matches(*argv, "main") != 0) {
++ invarg("invalid \"table\"", *argv);
++ }
++ } else if (matches(*argv, "cache") == 0) {
++ filter.tb = -1;
+ } else {
+ if (matches(*argv, "exact") == 0) {
+ NEXT_ARG();
diff --git a/packages/lighttpd/1.4.13/.mtn2git_empty b/packages/busybox/busybox-1.3.1/mnci/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/lighttpd/1.4.13/.mtn2git_empty
+++ b/packages/busybox/busybox-1.3.1/mnci/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.3.1/mnci/defconfig b/packages/busybox/busybox-1.3.1/mnci/defconfig
new file mode 100644
index 0000000000..6a04803f18
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/mnci/defconfig
@@ -0,0 +1,643 @@
+#
+# 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 is not set
+# CONFIG_FEATURE_VERBOSE_USAGE is not set
+# CONFIG_FEATURE_COMPRESS_USAGE is not set
+# CONFIG_FEATURE_INSTALLER is not set
+# CONFIG_LOCALE_SUPPORT is not set
+CONFIG_GETOPT_LONG=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_SUID=y
+# 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 is not set
+USING_CROSS_COMPILER=y
+CROSS_COMPILER_PREFIX="arm-linux-"
+# CONFIG_BUILD_AT_ONCE is not set
+
+#
+# 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=y
+# CONFIG_COMM is not set
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
+# CONFIG_FEATURE_DD_IBS_OBS is not set
+CONFIG_DF=y
+# CONFIG_DIFF is not set
+# CONFIG_FEATURE_DIFF_BINARY is not set
+# CONFIG_FEATURE_DIFF_DIR is not set
+# 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 is not set
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
+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 is not set
+CONFIG_LS=y
+# CONFIG_FEATURE_LS_FILETYPES is not set
+# CONFIG_FEATURE_LS_FOLLOWLINKS is not set
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+# CONFIG_FEATURE_LS_COLOR is not set
+# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
+CONFIG_NICE=y
+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 is not set
+CONFIG_SORT=y
+# CONFIG_FEATURE_SORT_BIG is not set
+CONFIG_STAT=y
+# 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 is not set
+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 is not set
+# 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 is not set
+CONFIG_WC=y
+# CONFIG_WHO is not set
+# CONFIG_WHOAMI is not set
+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 is not set
+
+#
+# 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=y
+CONFIG_SETLOGCONS=y
+
+#
+# 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 is not set
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_MATH=y
+# CONFIG_ED is not set
+# CONFIG_PATCH is not set
+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 is not set
+# CONFIG_FEATURE_GREP_CONTEXT is not set
+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=y
+
+#
+# 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=y
+# CONFIG_USE_BB_SHADOW is not set
+# CONFIG_USE_BB_PWD_GRP is not set
+CONFIG_ADDGROUP=y
+CONFIG_DELGROUP=y
+CONFIG_ADDUSER=y
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+# CONFIG_FEATURE_UTMP is not set
+# CONFIG_FEATURE_WTMP is not set
+CONFIG_LOGIN=y
+# CONFIG_FEATURE_SECURETTY is not set
+CONFIG_PASSWD=y
+CONFIG_SU=y
+# CONFIG_SULOGIN is not set
+# CONFIG_VLOCK is not set
+
+#
+# Linux Ext2 FS Progs
+#
+# CONFIG_CHATTR is not set
+# CONFIG_E2FSCK is not set
+# CONFIG_FSCK is not set
+# CONFIG_LSATTR is not set
+# CONFIG_MKE2FS is not set
+# 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=y
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
+
+#
+# Options common to multiple modutils
+#
+# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
+# 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 is not set
+# CONFIG_FEATURE_FBSET_FANCY is not set
+# CONFIG_FEATURE_FBSET_READMODE is not set
+# CONFIG_FDFLUSH is not set
+# CONFIG_FDFORMAT is not set
+# CONFIG_FDISK is not set
+# FDISK_SUPPORT_LARGE_DISKS is not set
+# CONFIG_FEATURE_FDISK_WRITABLE is not set
+# 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 is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
+CONFIG_GETOPT=y
+CONFIG_HEXDUMP=y
+CONFIG_HWCLOCK=y
+# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
+# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
+# CONFIG_IPCRM is not set
+CONFIG_IPCS=y
+# CONFIG_LOSETUP is not set
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+# CONFIG_FEATURE_MDEV_EXEC is not set
+# CONFIG_MKSWAP is not set
+# 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 is not set
+# CONFIG_READPROFILE is not set
+# CONFIG_SETARCH is not set
+# CONFIG_SWAPONOFF is not set
+# 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=y
+# 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=y
+# CONFIG_EJECT is not set
+# CONFIG_LAST is not set
+CONFIG_LESS=y
+# CONFIG_FEATURE_LESS_BRACKETS is not set
+# CONFIG_FEATURE_LESS_FLAGS is not set
+# 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 is not set
+CONFIG_ARPING=y
+# 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 is not set
+# CONFIG_FEATURE_IFUPDOWN_IPX is not set
+# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
+# 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 is not set
+# CONFIG_FEATURE_IP_ADDRESS is not set
+# CONFIG_FEATURE_IP_LINK is not set
+# CONFIG_FEATURE_IP_ROUTE is not set
+# CONFIG_FEATURE_IP_TUNNEL is not set
+# 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 is not set
+# CONFIG_FEATURE_FANCY_PING6 is not set
+CONFIG_ROUTE=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+# CONFIG_TELNETD is not set
+# CONFIG_FEATURE_TELNETD_INETD is not set
+# CONFIG_TFTP is not set
+# CONFIG_FEATURE_TFTP_GET is not set
+# CONFIG_FEATURE_TFTP_PUT is not set
+# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+
+#
+# udhcp Server/Client
+#
+# CONFIG_APP_UDHCPD is not set
+CONFIG_APP_UDHCPC=y
+# CONFIG_APP_DUMPLEASES is not set
+CONFIG_FEATURE_UDHCP_SYSLOG=y
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+# CONFIG_VCONFIG is not set
+CONFIG_WGET=y
+# CONFIG_FEATURE_WGET_STATUSBAR is not set
+# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
+# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_ZCIP=y
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+# CONFIG_FUSER is not set
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+# CONFIG_PIDOF is not set
+# 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 is not set
+
+#
+# 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=y
+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 is not set
+# 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=15
+# 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 is not set
+# CONFIG_FEATURE_REMOTE_LOG is not set
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
diff --git a/packages/busybox/busybox-1.3.1/mount-all-type.patch b/packages/busybox/busybox-1.3.1/mount-all-type.patch
new file mode 100644
index 0000000000..476094a804
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/mount-all-type.patch
@@ -0,0 +1,84 @@
+--- busybox-1.00/.pc/mount-all-type.patch/util-linux/mount.c 2004-08-02 17:14:02.000000000 -0700
++++ busybox-1.00/util-linux/mount.c 2005-05-13 00:17:19.054232796 -0700
+@@ -364,6 +364,56 @@
+ exit(EXIT_SUCCESS);
+ }
+
++/* Does this file system type, from /etc/fstab, match the given
++ * -t option value?
++ */
++static int match_fs(const char *option, const char *type)
++{
++ const int len = strlen(type);
++ const int no = option[0] == 'n' && option[1] == 'o';
++ const char *optp = option;
++
++ if (len > 0) do {
++ const char *match = strstr(optp, type);
++
++ if (match == NULL) {
++ /* No match, but if the option string starts 'no' no match
++ * means yes.
++ */
++ return no;
++ }
++
++ /* Match, may be partial, check for end-of-type in option string. */
++ if (match[len] == 0 || match[len] == ',') {
++ /* Ok, check for type or notype. */
++ if (match == option) {
++ /* Exact match at start (can't be 'no') */
++ return 1;
++ }
++ if (match > option+1) {
++ if (match[-1] == ',') {
++ /* Exact match in middle, might be 'no' */
++ return !no;
++ }
++ if (match == option+2 && no) {
++ /* Exact match to 'notype' at start. */
++ return 0;
++ }
++ if (match > option+2 && match[-3] == ',' &&
++ match[-2] == 'n' && match[-1] == 'o') {
++ return 0;
++ }
++ }
++ }
++
++ /* Look for another match. */
++ optp = match+1;
++ } while (1);
++
++ /* zero length type in fstab (impossible?), don't match it. */
++ return 0;
++}
++
+ extern int mount_main(int argc, char **argv)
+ {
+ struct stat statbuf;
+@@ -371,6 +421,7 @@
+ char *extra_opts;
+ int flags = 0;
+ char *filesystemType = "auto";
++ char *filesystemOption = 0;
+ int got_filesystemType = 0;
+ char *device = xmalloc(PATH_MAX);
+ char *directory = xmalloc(PATH_MAX);
+@@ -393,6 +444,7 @@
+ break;
+ case 't':
+ filesystemType = optarg;
++ filesystemOption = optarg;
+ got_filesystemType = 1;
+ break;
+ case 'w':
+@@ -460,6 +512,8 @@
+
+ strcpy(device, m->mnt_fsname);
+ strcpy(directory, m->mnt_dir);
++ if (all && filesystemOption != 0 && !match_fs(filesystemOption, m->mnt_type))
++ continue;
+ filesystemType = bb_xstrdup(m->mnt_type);
+ singlemount:
+ extra_opts = string_flags;
diff --git a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.1/.mtn2git_empty b/packages/busybox/busybox-1.3.1/nylon/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.1/.mtn2git_empty
+++ b/packages/busybox/busybox-1.3.1/nylon/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.3.1/nylon/defconfig b/packages/busybox/busybox-1.3.1/nylon/defconfig
new file mode 100644
index 0000000000..67c5408ada
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/nylon/defconfig
@@ -0,0 +1,568 @@
+#
+# Automatically generated make config: don't edit
+#
+HAVE_DOT_CONFIG=y
+
+#
+# General Configuration
+#
+# CONFIG_NITPICK is not set
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_FEATURE_VERBOSE_USAGE=y
+# CONFIG_FEATURE_INSTALLER is not set
+# CONFIG_LOCALE_SUPPORT is not set
+CONFIG_FEATURE_DEVFS=y
+# CONFIG_EJECT is not set
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_SUID=y
+CONFIG_FEATURE_SUID_CONFIG=y
+CONFIG_FEATURE_SUID_CONFIG_QUIET=y
+# 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_LFS is not set
+# USING_CROSS_COMPILER is not set
+EXTRA_CFLAGS_OPTIONS=""
+# CONFIG_BUILD_AT_ONCE is not set
+
+#
+# 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
+
+#
+# Archival Utilities
+#
+CONFIG_AR=y
+CONFIG_FEATURE_AR_LONG_FILENAMES=y
+CONFIG_BUNZIP2=y
+CONFIG_CPIO=y
+CONFIG_DPKG=y
+CONFIG_DPKG_DEB=y
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
+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 is not set
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_GZIP=y
+CONFIG_FEATURE_TAR_COMPRESS=y
+# CONFIG_FEATURE_TAR_LZMA is not set
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_UNCOMPRESS=y
+# CONFIG_UNLZMA is not set
+CONFIG_UNZIP=y
+
+#
+# Common options for cpio and tar
+#
+# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
+# CONFIG_FEATURE_DEB_TAR_LZMA is not set
+
+#
+# Common options for dpkg and dpkg_deb
+#
+CONFIG_FEATURE_DEB_TAR_GZ=y
+CONFIG_FEATURE_DEB_TAR_BZ2=y
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAL=y
+CONFIG_CAT=y
+# CONFIG_CATV is not set
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+CONFIG_DIFF=y
+# CONFIG_FEATURE_DIFF_BINARY is not set
+CONFIG_FEATURE_DIFF_DIR=y
+# CONFIG_FEATURE_DIFF_MINIMAL is not set
+# CONFIG_COMM is not set
+# CONFIG_CKSUM is not set
+# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
+# CONFIG_FEATURE_DD_IBS_OBS is not set
+CONFIG_CMP=y
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+
+#
+# date (forced enabled for use with watch)
+#
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_DF=y
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+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 is not set
+CONFIG_EXPR=y
+# CONFIG_EXPR_MATH_SUPPORT_64 is not set
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_INSTALL=y
+# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
+CONFIG_LENGTH=y
+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=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
+CONFIG_NICE=y
+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=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_SORT=y
+# CONFIG_FEATURE_SORT_BIG is not set
+CONFIG_STAT=y
+# 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=y
+# CONFIG_TEST is not set
+CONFIG_TOUCH=y
+CONFIG_TR=y
+# CONFIG_FEATURE_TR_CLASSES is not set
+# CONFIG_FEATURE_TR_EQUIV is not set
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+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 and more
+#
+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 is not set
+CONFIG_CLEAR=y
+# CONFIG_DEALLOCVT is not set
+CONFIG_DUMPKMAP=y
+CONFIG_GETKEY=y
+# CONFIG_LOADFONT is not set
+CONFIG_LOADKMAP=y
+# CONFIG_OPENVT is not set
+CONFIG_RESET=y
+CONFIG_SETCONSOLE=y
+# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
+CONFIG_SETKEYCODES=y
+CONFIG_SETLOGCONS=n
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+CONFIG_PIPE_PROGRESS=y
+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 is not set
+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 is not set
+#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=y
+#CONFIG_FEATURE_VI_READONLY=y
+#CONFIG_FEATURE_VI_SETOPTS=y
+#CONFIG_FEATURE_VI_SET=y
+#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=y
+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=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+# CONFIG_INIT is not set
+# CONFIG_HALT is not set
+# CONFIG_POWEROFF is not set
+# CONFIG_REBOOT 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_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_U_W_TMP=y
+# CONFIG_LOGIN 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 is not set
+# CONFIG_E2FSCK is not set
+# CONFIG_FSCK is not set
+# CONFIG_LSATTR is not set
+# CONFIG_MKE2FS is not set
+# CONFIG_TUNE2FS is not set
+# CONFIG_E2LABEL is not set
+# CONFIG_FINDFS is not set
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+CONFIG_CROND=y
+# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_CRONTAB=y
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_LAST is not set
+CONFIG_LESS=y
+# CONFIG_FEATURE_LESS_BRACKETS is not set
+# CONFIG_FEATURE_LESS_FLAGS is not set
+# 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_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=y
+
+#
+# Linux Module Utilities
+#
+# CONFIG_INSMOD is not set
+# CONFIG_LSMOD is not set
+# CONFIG_MODPROBE is not set
+# CONFIG_RMMOD is not set
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+CONFIG_ARPING=y
+# 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_HOSTNAME=y
+CONFIG_HTTPD=y
+CONFIG_FEATURE_HTTPD_WITHOUT_INETD=y
+CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
+# CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY is not set
+CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
+CONFIG_FEATURE_HTTPD_AUTH_MD5=y
+CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
+CONFIG_FEATURE_HTTPD_SETUID=y
+CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES=y
+CONFIG_FEATURE_HTTPD_CGI=y
+CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
+CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
+CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y
+CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+# CONFIG_FEATURE_IFCONFIG_SLIP is not set
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+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=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y
+# CONFIG_FEATURE_INETD_RPC is not set
+# CONFIG_IP is not set
+CONFIG_IPCALC=y
+CONFIG_FEATURE_IPCALC_FANCY=y
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+# CONFIG_IPADDR is not set
+# CONFIG_IPLINK is not set
+# CONFIG_IPROUTE is not set
+# CONFIG_IPTUNNEL is not set
+CONFIG_NAMEIF=y
+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=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+# CONFIG_TELNETD is not set
+CONFIG_TFTP=y
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
+CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_IP6_LITERAL=y
+# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
+CONFIG_ZCIP=y
+
+#
+# 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
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+# CONFIG_FUSER is not set
+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 is not set
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+FEATURE_CPU_USAGE_PERCENTAGE=y
+CONFIG_UPTIME=y
+CONFIG_SYSCTL=y
+
+#
+# Another Bourne-like Shell
+#
+# CONFIG_FEATURE_SH_IS_ASH is not set
+# 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=y
+# CONFIG_ASH is not set
+# CONFIG_HUSH is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# 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 is not set
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
+
+#
+# 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=y
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_GETOPT is not set
+CONFIG_HEXDUMP=y
+# CONFIG_HWCLOCK is not set
+# CONFIG_IPCRM is not set
+CONFIG_IPCS=y
+CONFIG_LOSETUP=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+# CONFIG_FEATURE_MDEV_EXEC is not set
+CONFIG_MKSWAP=y
+# CONFIG_FEATURE_MKSWAP_V0 is not set
+# CONFIG_MORE is not set
+CONFIG_PIVOT_ROOT=y
+CONFIG_FEATURE_MOUNT_NFS=y
+# CONFIG_RDATE is not set
+# CONFIG_READPROFILE is not set
+# CONFIG_SETARCH is not set
+CONFIG_SWAPONOFF=y
+# CONFIG_SWITCH_ROOT is not set
+CONFIG_MOUNT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_MOUNT_FORCE=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
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+CONFIG_DEBUG_YANK_SUSv2=y
diff --git a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.4/.mtn2git_empty b/packages/busybox/busybox-1.3.1/openmn/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.4/.mtn2git_empty
+++ b/packages/busybox/busybox-1.3.1/openmn/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.3.1/readlink.patch b/packages/busybox/busybox-1.3.1/readlink.patch
new file mode 100644
index 0000000000..0c5431085a
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/readlink.patch
@@ -0,0 +1,85 @@
+diff -p -u -r1.7 Config.in
+--- busybox-1.00/debianutils/Config.in 15 Mar 2004 08:28:24 -0000 1.7
++++ busybox-1.00-patched/debianutils/Config.in 16 Nov 2004 11:46:41 -0000
+@@ -24,6 +24,13 @@ config CONFIG_READLINK
+ This program reads a symbolic link and returns the name
+ of the file it points to
+
++config CONFIG_FEATURE_READLINK_FOLLOW
++ bool " Enable canonicalization by following all symlinks (-f)"
++ default n
++ depends on CONFIG_READLINK
++ help
++ Enable the readlink option (-f).
++
+ config CONFIG_RUN_PARTS
+ bool "run-parts"
+ default n
+diff -p -u -r1.2 readlink.c
+--- busybox-1.00/debianutils/readlink.c 19 Mar 2003 09:11:41 -0000 1.2
++++ busybox-1.00-patched/debianutils/readlink.c 16 Nov 2004 11:46:41 -0000
+@@ -23,18 +23,38 @@
+ #include <errno.h>
+ #include <unistd.h>
+ #include <stdlib.h>
++#include <getopt.h>
+ #include "busybox.h"
+
++#ifdef CONFIG_FEATURE_READLINK_FOLLOW
++# define READLINK_FOLLOW "f"
++# define READLINK_FLAG_f (1 << 0)
++#else
++# define READLINK_FOLLOW ""
++#endif
++
++static const char readlink_options[] = READLINK_FOLLOW;
++
+ int readlink_main(int argc, char **argv)
+ {
+ char *buf = NULL;
++ unsigned long opt = bb_getopt_ulflags(argc, argv, readlink_options);
++#ifdef CONFIG_FEATURE_READLINK_FOLLOW
++ RESERVE_CONFIG_BUFFER(resolved_path, PATH_MAX);
++#endif
+
+ /* no options, no getopt */
+
+- if (argc != 2)
++ if (optind + 1 != argc)
+ bb_show_usage();
+
+- buf = xreadlink(argv[1]);
++#ifdef CONFIG_FEATURE_READLINK_FOLLOW
++ if (opt & READLINK_FLAG_f) {
++ buf = realpath(argv[optind], resolved_path);
++ } else
++#endif
++ buf = xreadlink(argv[optind]);
++
+ if (!buf)
+ return EXIT_FAILURE;
+ puts(buf);
+diff -p -u -r1.222 usage.h
+--- busybox-1.00/include/usage.h 14 Sep 2004 16:23:56 -0000 1.222
++++ busybox-1.00-patched/include/usage.h 16 Nov 2004 11:46:42 -0000
+@@ -1985,10 +1985,18 @@
+ "\t-s\tSet the system date and time (default).\n" \
+ "\t-p\tPrint the date and time."
+
++#ifdef CONFIG_FEATURE_READLINK_FOLLOW
++#define USAGE_READLINK_FOLLOW(a) a
++#else
++#define USAGE_READLINK_FOLLOW(a)
++#endif
++
+ #define readlink_trivial_usage \
+- ""
++ USAGE_READLINK_FOLLOW("[-f] ") "FILE"
+ #define readlink_full_usage \
+- "Displays the value of a symbolic link."
++ "Displays the value of a symbolic link." \
++ USAGE_READLINK_FOLLOW("\n\nOptions:\n" \
++ "\t-f\tcanonicalize by following all symlinks")
+
+ #define realpath_trivial_usage \
+ "pathname ..."
diff --git a/packages/busybox/busybox-1.3.1/rmmod.patch b/packages/busybox/busybox-1.3.1/rmmod.patch
new file mode 100644
index 0000000000..20770e0dc4
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/rmmod.patch
@@ -0,0 +1,40 @@
+Index: busybox-1.1.0/modutils/rmmod.c
+===================================================================
+--- busybox-1.1.0.orig/modutils/rmmod.c 2006-01-11 06:43:56.000000000 +0100
++++ busybox-1.1.0/modutils/rmmod.c 2006-03-14 16:42:14.000000000 +0100
+@@ -29,6 +29,7 @@
+ #include <string.h>
+ #include <sys/utsname.h>
+ #include <sys/syscall.h>
++#include <sys/utsname.h>
+ #include "busybox.h"
+
+ #ifdef CONFIG_FEATURE_2_6_MODULES
+@@ -64,6 +65,16 @@
+ but must get */
+ size_t bufsize = sizeof(bb_common_bufsiz1);
+ #endif
++#ifdef CONFIG_FEATURE_2_6_MODULES
++ int k_version = 0;
++ struct utsname myuname;
++
++ if (uname(&myuname) == 0) {
++ if (myuname.release[0] == '2') {
++ k_version = myuname.release[2] - '0';
++ }
++ }
++#endif
+
+ /* Parse command line. */
+ n = bb_getopt_ulflags(argc, argv, "wfa");
+@@ -109,6 +120,10 @@
+ afterslash++;
+ module_name = alloca(strlen(afterslash) + 1);
+ filename2modname(module_name, afterslash);
++ if (k_version != 4)
++ filename2modname(module_name, afterslash);
++ else
++ strcpy(module_name, afterslash);
+ #else
+ #define module_name argv[n]
+ #endif
diff --git a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.5/.mtn2git_empty b/packages/busybox/busybox-1.3.1/slugos/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.5/.mtn2git_empty
+++ b/packages/busybox/busybox-1.3.1/slugos/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.3.1/slugos/defconfig b/packages/busybox/busybox-1.3.1/slugos/defconfig
new file mode 100644
index 0000000000..c35b4f7f70
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/slugos/defconfig
@@ -0,0 +1,610 @@
+#
+# 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=y
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+# 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=y
+# 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 is not set
+# 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=y
+# 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 is not set
+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 is not set
+CONFIG_CLEAR=y
+# CONFIG_DEALLOCVT is not set
+# CONFIG_DUMPKMAP is not set
+# CONFIG_LOADFONT is not set
+# CONFIG_LOADKMAP is not set
+# CONFIG_OPENVT is not set
+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=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+
+#
+# Finding Utilities
+#
+# CONFIG_FIND 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 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 is not set
+# CONFIG_RMMOD is not set
+# CONFIG_LSMOD is not set
+# CONFIG_MODPROBE is not set
+
+#
+# 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 is not set
+# 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=y
+# CONFIG_FEATURE_FDISK_ADVANCED is not set
+# CONFIG_FREERAMDISK is not set
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_MKFS_MINIX is not set
+# 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 is not set
+# 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 is not set
+# CONFIG_FEATURE_MOUNT_NFS is not set
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+# CONFIG_READPROFILE is not set
+# CONFIG_SETARCH is not set
+# CONFIG_SWAPONOFF is not set
+# CONFIG_SWITCH_ROOT is not set
+# CONFIG_UMOUNT is not set
+# CONFIG_FEATURE_UMOUNT_ALL 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 is not set
+# 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 is not set
+# 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 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=y
+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 is not set
+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-1.3.1/slugos/udhcpscript.patch b/packages/busybox/busybox-1.3.1/slugos/udhcpscript.patch
new file mode 100644
index 0000000000..dec6c18994
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/slugos/udhcpscript.patch
@@ -0,0 +1,133 @@
+--- busybox-1.00/.pc/udhcpscript.patch/examples/udhcp/simple.script 2004-10-13 00:18:05.000000000 -0700
++++ busybox-1.00/examples/udhcp/simple.script 2005-06-05 15:08:28.432605118 -0700
+@@ -1,40 +1,101 @@
+ #!/bin/sh
++# openslug UDHCP client script
++# this must set the HW address (MAC) on the interface
++#
++. /etc/default/functions
+
+-# udhcpc script edited by Tim Riker <Tim@Rikers.org>
+
+-[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
++echodns(){
++ local dns
++ if test $# -gt 0
++ then
++ for dns in "$@"
++ do
++ echo "nameserver $dns"
++ done
++ fi
++}
++
++# Output the correct contents for resolv.conf
++mkresolv() {
++ test -n "$domain" && echo "search $domain"
++ echodns $dns
++}
++
++# checksum of a file (or stdin if -)
++md5strm() {
++ md5sum $1 2>/dev/null | sed -n 's/^\([0-9A-Za-z]*\).*$/\1/p'
++}
++
++bind() {
++ local B N metric i olddomain
++ B=
++ test -n "$broadcast" && B="broadcast $broadcast"
++ N=
++ test -n "$subnet" && N="netmask $subnet"
++ ifconfig "$interface" "$ip" $B $N up
++
++ # If given router information delete the old information and
++ # enter new stuff, routers get metrics incremented by 1
++ # between each (this is somewhat arbitrary)
++ if test -n "$router"
++ then
++ while route del default gw 0.0.0.0 dev $interface 2>/dev/null
++ do
++ :
++ done
+
+-RESOLV_CONF="/etc/resolv.conf"
+-[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
+-[ -n "$subnet" ] && NETMASK="netmask $subnet"
++ metric=0
++ for i in $router
++ do
++ route add default gw "$i" dev "$interface" metric $((metric++))
++ done
++ fi
++
++ olddomain=
++ test -r /etc/defaultdomain && olddomain="$(cat /etc/defaultdomain)"
++ if test -n "$domain" -a "$domain" != "$olddomain"
++ then
++ echo "$domain" >/etc/defaultdomain
++ # and update the kernel view too
++ echo "$domain" >/proc/sys/kernel/domainname
++ fi
++
++ # Update /etc/resolv.conf to reflect domain and dns information,
++ # this always clears resolv.conf if none is given
++ md5old="$(md5strm /etc/resolv.conf)"
++ md5new="$(mkresolv | md5strm -)"
++ test "$md5old" != "$md5new" && mkresolv >/etc/resolv.conf
++}
+
+ case "$1" in
+- deconfig)
+- /sbin/ifconfig $interface 0.0.0.0
+- ;;
+-
+- renew|bound)
+- /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
+-
+- if [ -n "$router" ] ; then
+- echo "deleting routers"
+- while route del default gw 0.0.0.0 dev $interface ; do
+- :
+- done
+-
+- metric=0
+- for i in $router ; do
+- route add default gw $i dev $interface metric $((metric++))
+- done
++deconfig)
++ # Bring the interface up (without inet at this point)
++ ifconfig "$interface" 0.0.0.0;;
++
++renew|bound)
++ bind;;
++
++leasefail)
++ # Pull the values from the config data if (only only if) this
++ # is the config interface
++ if test "$interface" = "$(config iface)"
++ then
++ ip="$(config ip)"
++ if test -n "$ip"
++ then
++ router="$(config gateway)"
++ subnet="$(config netmask)"
++ broadcast="$(config broadcast)"
++ domain="$(config domain)"
++ dns="$(config dns)"
++
++ bind
+ fi
++ fi;;
+
+- echo -n > $RESOLV_CONF
+- [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
+- for i in $dns ; do
+- echo adding dns $i
+- echo nameserver $i >> $RESOLV_CONF
+- done
+- ;;
++*) echo "udhcpc: $*: unknown command" >&2
++ exit 1;;
+ esac
+
+ exit 0
diff --git a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.6/.mtn2git_empty b/packages/busybox/busybox-1.3.1/sparc/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.6/.mtn2git_empty
+++ b/packages/busybox/busybox-1.3.1/sparc/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.3.1/udhcppidfile-breakage.patch b/packages/busybox/busybox-1.3.1/udhcppidfile-breakage.patch
new file mode 100644
index 0000000000..031274908b
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/udhcppidfile-breakage.patch
@@ -0,0 +1,57 @@
+--- busybox-1.00/networking/udhcp/common.c~udhcppidfile2
++++ busybox-1.00/networking/udhcp/common.c
+@@ -74,7 +74,7 @@
+
+ if (pid > 0) {
+ /* parent */
+- if (pidfile_reassign(pidfile, pid) < 0) {
++ if (pidfile != NULL && pidfile_reassign(pidfile, pid) < 0) {
+ (void)kill(pid, SIGKILL);
+ exit(1);
+ } else
+@@ -119,7 +119,7 @@
+ sanitize_fds();
+
+ /* do some other misc startup stuff while we are here to save bytes */
+- if (pidfile_acquire(pidfile) < 0)
++ if (pidfile != NULL && pidfile_acquire(pidfile) < 0)
+ exit(1);
+
+ /* equivelent of doing a fflush after every \n */
+@@ -166,7 +166,7 @@
+ sanitize_fds();
+
+ /* do some other misc startup stuff while we are here to save bytes */
+- if (pidfile_acquire(pidfile) < 0)
++ if (pidfile != NULL && pidfile_acquire(pidfile) < 0)
+ exit(1);
+
+ /* equivelent of doing a fflush after every \n */
+--- busybox-1.00/networking/udhcp/pidfile.c~udhcppidfile2
++++ busybox-1.00/networking/udhcp/pidfile.c
+@@ -141,7 +141,11 @@
+ int pidfile_acquire(const char *pidfile)
+ {
+ int fd, result;
+- if (!pidfile) return (-1);
++
++ if (pidfile == NULL) {
++ LOG(LOG_ERR, "pidfile_acquire: filename is NULL\n");
++ return (-1);
++ }
+
+ if ((fd = pidfile_open(pidfile)) < 0)
+ return (-1);
+@@ -170,7 +174,11 @@
+ int pidfile_reassign(const char *pidfile, int pid)
+ {
+ int fd, result;
+- if (!pidfile) return (-1);
++
++ if (pidfile == NULL) {
++ LOG(LOG_ERR, "pidfile_reassign: filename is NULL\n");
++ return (-1);
++ }
+
+ if ((fd = pidfile_open(pidfile)) < 0)
+ return (-1);
diff --git a/packages/busybox/busybox-1.3.1/udhcppidfile.patch b/packages/busybox/busybox-1.3.1/udhcppidfile.patch
new file mode 100644
index 0000000000..b4b86b8775
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/udhcppidfile.patch
@@ -0,0 +1,274 @@
+Index: busybox-1.1.0/networking/udhcp/pidfile.h
+===================================================================
+--- busybox-1.1.0.orig/networking/udhcp/pidfile.h 2006-01-11 06:43:50.000000000 +0100
++++ busybox-1.1.0/networking/udhcp/pidfile.h 2006-03-14 17:15:45.000000000 +0100
+@@ -21,5 +21,5 @@
+
+
+ int pidfile_acquire(const char *pidfile);
+-void pidfile_write_release(int pid_fd);
++int pidfile_reassign(const char *pidfile, int newpid);
+
+Index: busybox-1.1.0/networking/udhcp/pidfile.c
+===================================================================
+--- busybox-1.1.0.orig/networking/udhcp/pidfile.c 2006-01-11 06:43:50.000000000 +0100
++++ busybox-1.1.0/networking/udhcp/pidfile.c 2006-03-14 17:15:45.000000000 +0100
+@@ -25,6 +25,7 @@
+ #include <unistd.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <errno.h>
+
+ #include "pidfile.h"
+ #include "common.h"
+@@ -37,39 +38,146 @@
+ }
+
+
+-int pidfile_acquire(const char *pidfile)
++static int pidfile_open(const char *pidfile)
+ {
+- int pid_fd;
+- if (!pidfile) return -1;
++ int fd;
+
+- pid_fd = open(pidfile, O_CREAT | O_WRONLY, 0644);
+- if (pid_fd < 0) {
+- LOG(LOG_ERR, "Unable to open pidfile %s: %m\n", pidfile);
+- } else {
+- lockf(pid_fd, F_LOCK, 0);
+- if (!saved_pidfile)
+- atexit(pidfile_delete);
+- saved_pidfile = (char *) pidfile;
++ if ((fd = open(pidfile, O_CREAT | O_RDWR, 0644)) < 0) {
++ LOG(LOG_ERR, "pidfile_open: open %s failed: %m\n", pidfile);
++ return (-1);
++ }
++
++ /* NOTE: lockf is not inherited by child after fork */
++ if (lockf(fd, F_LOCK, 0) < 0) {
++ LOG(LOG_ERR, "pidfile_open: lock %s failed: %m\n", pidfile);
++ close(fd);
++ return (-1);
++ }
++
++ return (fd);
++}
++
++
++static int pidfile_check(int fd, const char *pidfile)
++{
++ int len, pid;
++ char buf[20];
++
++ if (lseek(fd, 0L, SEEK_SET) < 0) {
++ LOG(LOG_ERR, "pidfile_check: lseek %s failed: %m\n", pidfile);
++ return (-1);
++ }
++
++ if ((len = read(fd, buf, sizeof buf - 1)) < 0) {
++ LOG(LOG_ERR, "pidfile_check: read %s failed: %m\n", pidfile);
++ return (-1);
++ }
++
++ if (len == 0)
++ return (0);
++
++ buf[len] = '\0';
++
++ if ((pid = atoi(buf)) <= 1) {
++ LOG(LOG_WARNING,
++ "pidfile_check: ignoring bogus pid (%s) in %s\n",
++ buf, pidfile);
++ return (0);
++ }
++
++ if (kill((pid_t)pid, 0) == 0) {
++ LOG(LOG_ERR, "pidfile_check: process %d exists (%s)\n",
++ pid, pidfile);
++ return (-1);
++ }
++
++ if (errno != ESRCH) {
++ LOG(LOG_ERR, "pidfile_check: kill %d failed (%s): %m\n",
++ pid, pidfile);
++ return (-1);
++ }
++
++ return (0);
++}
++
++
++static int pidfile_store(int fd, const char *pidfile, int pid)
++{
++ int len;
++ char buf[20];
++
++ if (lseek(fd, 0L, SEEK_SET) < 0) {
++ LOG(LOG_ERR, "pidfile_store: lseek %s failed: %m\n", pidfile);
++ return (-1);
++ }
++
++ len = snprintf(buf, sizeof buf - 1, "%d\n", pid);
++ buf[len] = '\0';
++
++ if (write(fd, buf, len) < 0) {
++ LOG(LOG_ERR, "pidfile_store: write %s failed: %m\n",
++ pidfile);
++ return (-1);
++ }
++
++ if (ftruncate(fd, len) < 0) {
++ LOG(LOG_ERR, "pidfile_store: ftruncate %d failed (%s): %m\n",
++ len, pidfile);
++ return (-1);
+ }
+
+- return pid_fd;
++ return (0);
+ }
+
+
+-void pidfile_write_release(int pid_fd)
++static void pidfile_close(int fd)
+ {
+- FILE *out;
++ (void)lseek(fd, 0L, SEEK_SET);
++ (void)lockf(fd, F_ULOCK, 0);
++ (void)close(fd);
++}
+
+- if (pid_fd < 0) return;
+
+- if ((out = fdopen(pid_fd, "w")) != NULL) {
+- fprintf(out, "%d\n", getpid());
+- fclose(out);
++int pidfile_acquire(const char *pidfile)
++{
++ int fd, result;
++ if (!pidfile) return (-1);
++
++ if ((fd = pidfile_open(pidfile)) < 0)
++ return (-1);
++
++ if ((result = pidfile_check(fd, pidfile)) == 0)
++ result = pidfile_store(fd, pidfile, getpid());
++
++ pidfile_close(fd);
++
++ if (result == 0) {
++ saved_pidfile = (char *) pidfile;
++ atexit(pidfile_delete);
+ }
+- lockf(pid_fd, F_UNLCK, 0);
+- close(pid_fd);
++
++ return (result);
+ }
+
+
++/*
++ * reassign the pid in a pidfile - used just after a fork so a parent
++ * can store the pid of its child into the file without any window
++ * where the pid in the file is a dead process (which might let another
++ * instance of the program start). Note the parent must use _exit() to
++ * avoid triggering the unlink scheduled above in pidfile_acquire()
++ */
++int pidfile_reassign(const char *pidfile, int pid)
++{
++ int fd, result;
++ if (!pidfile) return (-1);
++
++ if ((fd = pidfile_open(pidfile)) < 0)
++ return (-1);
+
++ result = pidfile_store(fd, pidfile, pid);
+
++ pidfile_close(fd);
++
++ return (result);
++}
+Index: busybox-1.1.0/networking/udhcp/common.c
+===================================================================
+--- busybox-1.1.0.orig/networking/udhcp/common.c 2006-01-11 06:43:50.000000000 +0100
++++ busybox-1.1.0/networking/udhcp/common.c 2006-03-14 17:15:45.000000000 +0100
+@@ -64,16 +64,34 @@
+ #ifdef __uClinux__
+ LOG(LOG_ERR, "Cannot background in uclinux (yet)");
+ #else /* __uClinux__ */
+- int pid_fd;
++ int pid, fd;
+
+- /* hold lock during fork. */
+- pid_fd = pidfile_acquire(pidfile);
+- if (daemon(0, 0) == -1) {
++ /* NOTE: lockf is not inherited by the child after fork */
++ if ((pid = fork()) < 0) {
+ perror("fork");
+ exit(1);
+ }
++
++ if (pid > 0) {
++ /* parent */
++ if (pidfile_reassign(pidfile, pid) < 0) {
++ (void)kill(pid, SIGKILL);
++ exit(1);
++ } else
++ _exit(0);
++ }
++
++ /* child */
++ (void)chdir("/");
++ if ((fd = open("/dev/null", O_RDWR)) >= 0) {
++ (void)dup2(fd, 0);
++ (void)dup2(fd, 1);
++ (void)dup2(fd, 2);
++ (void)close(fd);
++ }
++ (void)setsid();
++
+ daemonized++;
+- pidfile_write_release(pid_fd);
+ #endif /* __uClinux__ */
+ }
+
+@@ -97,14 +115,12 @@
+
+ void start_log_and_pid(const char *client_server, const char *pidfile)
+ {
+- int pid_fd;
+-
+ /* Make sure our syslog fd isn't overwritten */
+ sanitize_fds();
+
+ /* do some other misc startup stuff while we are here to save bytes */
+- pid_fd = pidfile_acquire(pidfile);
+- pidfile_write_release(pid_fd);
++ if (pidfile_acquire(pidfile) < 0)
++ exit(1);
+
+ /* equivelent of doing a fflush after every \n */
+ setlinebuf(stdout);
+@@ -150,8 +166,8 @@
+ sanitize_fds();
+
+ /* do some other misc startup stuff while we are here to save bytes */
+- pid_fd = pidfile_acquire(pidfile);
+- pidfile_write_release(pid_fd);
++ if (pidfile_acquire(pidfile) < 0)
++ exit(1);
+
+ /* equivelent of doing a fflush after every \n */
+ setlinebuf(stdout);
+Index: busybox-1.1.0/networking/udhcp/script.c
+===================================================================
+--- busybox-1.1.0.orig/networking/udhcp/script.c 2006-01-11 06:43:50.000000000 +0100
++++ busybox-1.1.0/networking/udhcp/script.c 2006-03-14 17:15:45.000000000 +0100
+@@ -229,6 +229,6 @@
+ execle(client_config.script, client_config.script,
+ name, NULL, envp);
+ LOG(LOG_ERR, "script %s failed: %m", client_config.script);
+- exit(1);
++ _exit(1);
+ }
+ }
diff --git a/packages/busybox/busybox-1.3.1/udhcpscript.patch b/packages/busybox/busybox-1.3.1/udhcpscript.patch
new file mode 100644
index 0000000000..fc21d440cd
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/udhcpscript.patch
@@ -0,0 +1,17 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- busybox-1.00-rc3/examples/udhcp/simple.script~udhcpscript
++++ busybox-1.00-rc3/examples/udhcp/simple.script
+@@ -17,8 +17,7 @@
+ /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
+
+ if [ -n "$router" ] ; then
+- echo "deleting routers"
+- while route del default gw 0.0.0.0 dev $interface ; do
++ while route del default gw 0.0.0.0 dev $interface 2>/dev/null ; do
+ :
+ done
+
diff --git a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh39/.mtn2git_empty b/packages/busybox/busybox-1.3.1/wrt54/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh39/.mtn2git_empty
+++ b/packages/busybox/busybox-1.3.1/wrt54/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.3.1/xargs-double-size.patch b/packages/busybox/busybox-1.3.1/xargs-double-size.patch
new file mode 100644
index 0000000000..df64554ffc
--- /dev/null
+++ b/packages/busybox/busybox-1.3.1/xargs-double-size.patch
@@ -0,0 +1,13 @@
+--- busybox-1.2.1/findutils/xargs.c.org 2006-09-19 18:18:17.084592997 +0200
++++ busybox-1.2.1/findutils/xargs.c 2006-09-19 18:18:09.820275793 +0200
+@@ -466,8 +466,8 @@
+ have it at 1 meg). Things will work fine with a large ARG_MAX but it
+ will probably hurt the system more than it needs to; an array of this
+ size is allocated. */
+- if (orig_arg_max > 20 * 1024)
+- orig_arg_max = 20 * 1024;
++ if (orig_arg_max > 40 * 1024)
++ orig_arg_max = 40 * 1024;
+ n_max_chars = orig_arg_max;
+ }
+ max_chars = xmalloc(n_max_chars);
diff --git a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/.mtn2git_empty b/packages/busybox/busybox-1.5.0/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/.mtn2git_empty
+++ b/packages/busybox/busybox-1.5.0/.mtn2git_empty
diff --git a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.1/.mtn2git_empty b/packages/busybox/busybox-1.5.0/angstrom/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.1/.mtn2git_empty
+++ b/packages/busybox/busybox-1.5.0/angstrom/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.5.0/angstrom/defconfig b/packages/busybox/busybox-1.5.0/angstrom/defconfig
new file mode 100644
index 0000000000..7308eead76
--- /dev/null
+++ b/packages/busybox/busybox-1.5.0/angstrom/defconfig
@@ -0,0 +1,647 @@
+#
+# 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-1.5.0/busybox-mdev.sh b/packages/busybox/busybox-1.5.0/busybox-mdev.sh
new file mode 100755
index 0000000000..9744322fa9
--- /dev/null
+++ b/packages/busybox/busybox-1.5.0/busybox-mdev.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+MDEV=/sbin/mdev
+DESC="Busybox mdev setup"
+
+# Complain if thing's aren't right
+if [ ! -e /proc/filesystems ]; then
+ echo "mdev requires a mounted procfs, not started."
+ exit 1
+fi
+
+if ! grep -q '[[:space:]]tmpfs$' /proc/filesystems; then
+ echo "mdev requires tmpfs support, not started."
+ exit 1
+fi
+
+if [ ! -d /sys/class/ ]; then
+ echo "mdev requires a mounted sysfs, not started."
+ exit 1
+fi
+
+if [ ! -e /proc/sys/kernel/hotplug ]; then
+ echo "mdev requires hotplug support, not started."
+ exit 1
+fi
+
+# We need to unmount /dev/pts/ and remount it later over the tmpfs
+if mountpoint -q /dev/pts/; then
+ umount -l /dev/pts/
+fi
+
+if mountpoint -q /dev/shm/; then
+ umount -l /dev/shm/
+fi
+
+# Create tmpfs for /dev
+echo "Creating tmpfs at /dev"
+mount -t tmpfs tmpfs /dev -o size=800k
+
+# Register mdev as hotplug event helper
+echo "$MDEV" > /proc/sys/kernel/hotplug
+
+# Populate /dev from /sys info
+echo "Populating /dev using mdev"
+$MDEV -s
+
+# Touch .udev to inform scripts that /dev needs no further setup
+touch /dev/.udev
+
+# Mount devpts
+TTYGRP=5
+TTYMODE=620
+mkdir -m 755 -p /dev/pts
+if [ ! -e /dev/ptmx ]; then
+ mknod -m 666 /dev/ptmx c 5 2
+fi
+mount -t devpts devpts /dev/pts -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE
+
+# Make shm directory
+mkdir -m 755 -p /dev/shm
+
+# Make extraneous links
+ln -sf /proc/self/fd /dev/fd
+ln -sf /proc/self/fd/0 /dev/stdin
+ln -sf /proc/self/fd/1 /dev/stdout
+ln -sf /proc/self/fd/2 /dev/stderr
+ln -sf /proc/kcore /dev/core
+ln -sf /proc/asound/oss/sndstat /dev/sndstat
+
+exit 0
diff --git a/packages/busybox/busybox-1.5.0/defconfig b/packages/busybox/busybox-1.5.0/defconfig
new file mode 100644
index 0000000000..7308eead76
--- /dev/null
+++ b/packages/busybox/busybox-1.5.0/defconfig
@@ -0,0 +1,647 @@
+#
+# 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-1.5.0/df_rootfs.patch b/packages/busybox/busybox-1.5.0/df_rootfs.patch
new file mode 100644
index 0000000000..3819b59106
--- /dev/null
+++ b/packages/busybox/busybox-1.5.0/df_rootfs.patch
@@ -0,0 +1,44 @@
+--- busybox-1.3.1.orig/coreutils/df.c 2006-12-26 22:54:50.000000000 -0600
++++ busybox-1.3.1/coreutils/df.c 2006-12-30 00:45:10.000000000 -0600
+@@ -47,6 +47,7 @@
+ struct statfs s;
+ static const char hdr_1k[] = "1k-blocks"; /* default display is kilobytes */
+ const char *disp_units_hdr = hdr_1k;
++ int root_done = 0;
+
+ #ifdef CONFIG_FEATURE_HUMAN_READABLE
+ opt_complementary = "h-km:k-hm:m-hk";
+@@ -77,7 +78,7 @@
+
+ do {
+ const char *device;
+- const char *mount_point;
++ char *mount_point;
+
+ if (mount_table) {
+ mount_entry = getmntent(mount_table);
+@@ -116,17 +117,20 @@
+ ) / (blocks_used + s.f_bavail);
+ }
+
+- if (strcmp(device, "rootfs") == 0) {
+- continue;
+- } else if (strcmp(device, "/dev/root") == 0) {
++ if (strcmp(device, "/dev/root") == 0 || strcmp(device, "rootfs") == 0) {
+ /* Adjusts device to be the real root device,
+ * or leaves device alone if it can't find it */
+- device = find_block_device("/");
++ device = find_block_device(mount_point);
+ if (!device) {
+ goto SET_ERROR;
+ }
+ }
+
++ if (strcmp(mount_point, "/") == 0) {
++ if (root_done) continue;
++ root_done = 1;
++ }
++
+ #ifdef CONFIG_FEATURE_HUMAN_READABLE
+ printf("%-20s %9s ", device,
+ make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr));
diff --git a/packages/busybox/busybox-1.5.0/dhcp-hostname.patch b/packages/busybox/busybox-1.5.0/dhcp-hostname.patch
new file mode 100644
index 0000000000..8e7e68a4c9
--- /dev/null
+++ b/packages/busybox/busybox-1.5.0/dhcp-hostname.patch
@@ -0,0 +1,20 @@
+--- busybox-1.5.0/networking/udhcp/dhcpc.c~ 2007-03-22 15:21:23.000000000 -0500
++++ busybox-1.5.0/networking/udhcp/dhcpc.c 2007-04-01 08:42:41.000000000 -0500
+@@ -136,6 +136,7 @@
+ int retval;
+ int len;
+ int no_clientid = 0;
++ char hostbuf[256]; /* (default hostname patch) */
+ fd_set rfds;
+ struct timeval tv;
+ struct dhcpMessage packet;
+@@ -214,6 +215,9 @@
+ client_config.background_if_no_lease = 1;
+ if (opt & OPT_h)
+ client_config.hostname = alloc_dhcp_option(DHCP_HOST_NAME, str_h, 0);
++ else /* (default hostname patch) default hostname is our hostname as set */
++ if (gethostname(hostbuf, sizeof(hostbuf)) == 0)
++ client_config.hostname = alloc_dhcp_option(DHCP_HOST_NAME, hostbuf, 0);
+ if (opt & OPT_F) {
+ client_config.fqdn = alloc_dhcp_option(DHCP_FQDN, str_F, 3);
+ /* Flags: 0000NEOS
diff --git a/packages/busybox/busybox-1.5.0/dhcp-increase-retries.patch b/packages/busybox/busybox-1.5.0/dhcp-increase-retries.patch
new file mode 100644
index 0000000000..f49aa16580
--- /dev/null
+++ b/packages/busybox/busybox-1.5.0/dhcp-increase-retries.patch
@@ -0,0 +1,11 @@
+--- busybox-1.5.0/networking/udhcp/dhcpc.c~ 2007-04-01 08:42:41.000000000 -0500
++++ busybox-1.5.0/networking/udhcp/dhcpc.c 2007-04-01 21:03:42.000000000 -0500
+@@ -188,7 +188,7 @@
+ /* Default options. */
+ client_config.interface = "eth0";
+ client_config.script = DEFAULT_SCRIPT;
+- client_config.retries = 3;
++ client_config.retries = 5;
+ client_config.timeout = 3;
+
+ /* Parse command line */
diff --git a/packages/busybox/busybox-1.5.0/ifupdown-spurious-environ.patch b/packages/busybox/busybox-1.5.0/ifupdown-spurious-environ.patch
new file mode 100644
index 0000000000..812a0b3ee8
--- /dev/null
+++ b/packages/busybox/busybox-1.5.0/ifupdown-spurious-environ.patch
@@ -0,0 +1,16 @@
+--- busybox-1.5.0/networking/ifupdown.c~ 2007-03-22 15:21:23.000000000 -0500
++++ busybox-1.5.0/networking/ifupdown.c 2007-04-01 08:52:25.000000000 -0500
+@@ -83,6 +83,13 @@
+ struct mapping_defn_t *mappings;
+ };
+
++/* XXX - ifupdown-spurious-environ.patch -- appears to be long obsolete,
++ * but is carried forward because it doesn't seem to hurt anything and
++ * it's non-obvious how to remove the patch from OE without breaking
++ * old builds. MJW
++ */
++#define environ local_environ
++
+ #define OPTION_STR "anvf" USE_FEATURE_IFUPDOWN_MAPPING("m") "i:"
+ enum {
+ OPT_do_all = 0x1,
diff --git a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.4/.mtn2git_empty b/packages/busybox/busybox-1.5.0/mnci/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.4/.mtn2git_empty
+++ b/packages/busybox/busybox-1.5.0/mnci/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.5.0/mnci/defconfig b/packages/busybox/busybox-1.5.0/mnci/defconfig
new file mode 100644
index 0000000000..6a04803f18
--- /dev/null
+++ b/packages/busybox/busybox-1.5.0/mnci/defconfig
@@ -0,0 +1,643 @@
+#
+# 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 is not set
+# CONFIG_FEATURE_VERBOSE_USAGE is not set
+# CONFIG_FEATURE_COMPRESS_USAGE is not set
+# CONFIG_FEATURE_INSTALLER is not set
+# CONFIG_LOCALE_SUPPORT is not set
+CONFIG_GETOPT_LONG=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_SUID=y
+# 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 is not set
+USING_CROSS_COMPILER=y
+CROSS_COMPILER_PREFIX="arm-linux-"
+# CONFIG_BUILD_AT_ONCE is not set
+
+#
+# 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=y
+# CONFIG_COMM is not set
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
+# CONFIG_FEATURE_DD_IBS_OBS is not set
+CONFIG_DF=y
+# CONFIG_DIFF is not set
+# CONFIG_FEATURE_DIFF_BINARY is not set
+# CONFIG_FEATURE_DIFF_DIR is not set
+# 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 is not set
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
+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 is not set
+CONFIG_LS=y
+# CONFIG_FEATURE_LS_FILETYPES is not set
+# CONFIG_FEATURE_LS_FOLLOWLINKS is not set
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+# CONFIG_FEATURE_LS_COLOR is not set
+# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
+CONFIG_NICE=y
+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 is not set
+CONFIG_SORT=y
+# CONFIG_FEATURE_SORT_BIG is not set
+CONFIG_STAT=y
+# 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 is not set
+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 is not set
+# 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 is not set
+CONFIG_WC=y
+# CONFIG_WHO is not set
+# CONFIG_WHOAMI is not set
+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 is not set
+
+#
+# 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=y
+CONFIG_SETLOGCONS=y
+
+#
+# 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 is not set
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_MATH=y
+# CONFIG_ED is not set
+# CONFIG_PATCH is not set
+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 is not set
+# CONFIG_FEATURE_GREP_CONTEXT is not set
+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=y
+
+#
+# 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=y
+# CONFIG_USE_BB_SHADOW is not set
+# CONFIG_USE_BB_PWD_GRP is not set
+CONFIG_ADDGROUP=y
+CONFIG_DELGROUP=y
+CONFIG_ADDUSER=y
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+# CONFIG_FEATURE_UTMP is not set
+# CONFIG_FEATURE_WTMP is not set
+CONFIG_LOGIN=y
+# CONFIG_FEATURE_SECURETTY is not set
+CONFIG_PASSWD=y
+CONFIG_SU=y
+# CONFIG_SULOGIN is not set
+# CONFIG_VLOCK is not set
+
+#
+# Linux Ext2 FS Progs
+#
+# CONFIG_CHATTR is not set
+# CONFIG_E2FSCK is not set
+# CONFIG_FSCK is not set
+# CONFIG_LSATTR is not set
+# CONFIG_MKE2FS is not set
+# 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=y
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
+
+#
+# Options common to multiple modutils
+#
+# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
+# 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 is not set
+# CONFIG_FEATURE_FBSET_FANCY is not set
+# CONFIG_FEATURE_FBSET_READMODE is not set
+# CONFIG_FDFLUSH is not set
+# CONFIG_FDFORMAT is not set
+# CONFIG_FDISK is not set
+# FDISK_SUPPORT_LARGE_DISKS is not set
+# CONFIG_FEATURE_FDISK_WRITABLE is not set
+# 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 is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
+CONFIG_GETOPT=y
+CONFIG_HEXDUMP=y
+CONFIG_HWCLOCK=y
+# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
+# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
+# CONFIG_IPCRM is not set
+CONFIG_IPCS=y
+# CONFIG_LOSETUP is not set
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+# CONFIG_FEATURE_MDEV_EXEC is not set
+# CONFIG_MKSWAP is not set
+# 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 is not set
+# CONFIG_READPROFILE is not set
+# CONFIG_SETARCH is not set
+# CONFIG_SWAPONOFF is not set
+# 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=y
+# 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=y
+# CONFIG_EJECT is not set
+# CONFIG_LAST is not set
+CONFIG_LESS=y
+# CONFIG_FEATURE_LESS_BRACKETS is not set
+# CONFIG_FEATURE_LESS_FLAGS is not set
+# 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 is not set
+CONFIG_ARPING=y
+# 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 is not set
+# CONFIG_FEATURE_IFUPDOWN_IPX is not set
+# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
+# 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 is not set
+# CONFIG_FEATURE_IP_ADDRESS is not set
+# CONFIG_FEATURE_IP_LINK is not set
+# CONFIG_FEATURE_IP_ROUTE is not set
+# CONFIG_FEATURE_IP_TUNNEL is not set
+# 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 is not set
+# CONFIG_FEATURE_FANCY_PING6 is not set
+CONFIG_ROUTE=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+# CONFIG_TELNETD is not set
+# CONFIG_FEATURE_TELNETD_INETD is not set
+# CONFIG_TFTP is not set
+# CONFIG_FEATURE_TFTP_GET is not set
+# CONFIG_FEATURE_TFTP_PUT is not set
+# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+
+#
+# udhcp Server/Client
+#
+# CONFIG_APP_UDHCPD is not set
+CONFIG_APP_UDHCPC=y
+# CONFIG_APP_DUMPLEASES is not set
+CONFIG_FEATURE_UDHCP_SYSLOG=y
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+# CONFIG_VCONFIG is not set
+CONFIG_WGET=y
+# CONFIG_FEATURE_WGET_STATUSBAR is not set
+# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
+# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_ZCIP=y
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+# CONFIG_FUSER is not set
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+# CONFIG_PIDOF is not set
+# 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 is not set
+
+#
+# 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=y
+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 is not set
+# 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=15
+# 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 is not set
+# CONFIG_FEATURE_REMOTE_LOG is not set
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
diff --git a/packages/linux/linux-rp-2.6.18/.mtn2git_empty b/packages/busybox/busybox-1.5.0/nylon/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-rp-2.6.18/.mtn2git_empty
+++ b/packages/busybox/busybox-1.5.0/nylon/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.5.0/nylon/defconfig b/packages/busybox/busybox-1.5.0/nylon/defconfig
new file mode 100644
index 0000000000..67c5408ada
--- /dev/null
+++ b/packages/busybox/busybox-1.5.0/nylon/defconfig
@@ -0,0 +1,568 @@
+#
+# Automatically generated make config: don't edit
+#
+HAVE_DOT_CONFIG=y
+
+#
+# General Configuration
+#
+# CONFIG_NITPICK is not set
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_FEATURE_VERBOSE_USAGE=y
+# CONFIG_FEATURE_INSTALLER is not set
+# CONFIG_LOCALE_SUPPORT is not set
+CONFIG_FEATURE_DEVFS=y
+# CONFIG_EJECT is not set
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_SUID=y
+CONFIG_FEATURE_SUID_CONFIG=y
+CONFIG_FEATURE_SUID_CONFIG_QUIET=y
+# 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_LFS is not set
+# USING_CROSS_COMPILER is not set
+EXTRA_CFLAGS_OPTIONS=""
+# CONFIG_BUILD_AT_ONCE is not set
+
+#
+# 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
+
+#
+# Archival Utilities
+#
+CONFIG_AR=y
+CONFIG_FEATURE_AR_LONG_FILENAMES=y
+CONFIG_BUNZIP2=y
+CONFIG_CPIO=y
+CONFIG_DPKG=y
+CONFIG_DPKG_DEB=y
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
+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 is not set
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_GZIP=y
+CONFIG_FEATURE_TAR_COMPRESS=y
+# CONFIG_FEATURE_TAR_LZMA is not set
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_UNCOMPRESS=y
+# CONFIG_UNLZMA is not set
+CONFIG_UNZIP=y
+
+#
+# Common options for cpio and tar
+#
+# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
+# CONFIG_FEATURE_DEB_TAR_LZMA is not set
+
+#
+# Common options for dpkg and dpkg_deb
+#
+CONFIG_FEATURE_DEB_TAR_GZ=y
+CONFIG_FEATURE_DEB_TAR_BZ2=y
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAL=y
+CONFIG_CAT=y
+# CONFIG_CATV is not set
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+CONFIG_DIFF=y
+# CONFIG_FEATURE_DIFF_BINARY is not set
+CONFIG_FEATURE_DIFF_DIR=y
+# CONFIG_FEATURE_DIFF_MINIMAL is not set
+# CONFIG_COMM is not set
+# CONFIG_CKSUM is not set
+# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
+# CONFIG_FEATURE_DD_IBS_OBS is not set
+CONFIG_CMP=y
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+
+#
+# date (forced enabled for use with watch)
+#
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_DF=y
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+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 is not set
+CONFIG_EXPR=y
+# CONFIG_EXPR_MATH_SUPPORT_64 is not set
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_INSTALL=y
+# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
+CONFIG_LENGTH=y
+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=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
+CONFIG_NICE=y
+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=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_SORT=y
+# CONFIG_FEATURE_SORT_BIG is not set
+CONFIG_STAT=y
+# 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=y
+# CONFIG_TEST is not set
+CONFIG_TOUCH=y
+CONFIG_TR=y
+# CONFIG_FEATURE_TR_CLASSES is not set
+# CONFIG_FEATURE_TR_EQUIV is not set
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+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 and more
+#
+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 is not set
+CONFIG_CLEAR=y
+# CONFIG_DEALLOCVT is not set
+CONFIG_DUMPKMAP=y
+CONFIG_GETKEY=y
+# CONFIG_LOADFONT is not set
+CONFIG_LOADKMAP=y
+# CONFIG_OPENVT is not set
+CONFIG_RESET=y
+CONFIG_SETCONSOLE=y
+# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
+CONFIG_SETKEYCODES=y
+CONFIG_SETLOGCONS=n
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+CONFIG_PIPE_PROGRESS=y
+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 is not set
+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 is not set
+#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=y
+#CONFIG_FEATURE_VI_READONLY=y
+#CONFIG_FEATURE_VI_SETOPTS=y
+#CONFIG_FEATURE_VI_SET=y
+#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=y
+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=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+# CONFIG_INIT is not set
+# CONFIG_HALT is not set
+# CONFIG_POWEROFF is not set
+# CONFIG_REBOOT 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_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_U_W_TMP=y
+# CONFIG_LOGIN 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 is not set
+# CONFIG_E2FSCK is not set
+# CONFIG_FSCK is not set
+# CONFIG_LSATTR is not set
+# CONFIG_MKE2FS is not set
+# CONFIG_TUNE2FS is not set
+# CONFIG_E2LABEL is not set
+# CONFIG_FINDFS is not set
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+CONFIG_CROND=y
+# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_CRONTAB=y
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_LAST is not set
+CONFIG_LESS=y
+# CONFIG_FEATURE_LESS_BRACKETS is not set
+# CONFIG_FEATURE_LESS_FLAGS is not set
+# 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_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=y
+
+#
+# Linux Module Utilities
+#
+# CONFIG_INSMOD is not set
+# CONFIG_LSMOD is not set
+# CONFIG_MODPROBE is not set
+# CONFIG_RMMOD is not set
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+CONFIG_ARPING=y
+# 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_HOSTNAME=y
+CONFIG_HTTPD=y
+CONFIG_FEATURE_HTTPD_WITHOUT_INETD=y
+CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
+# CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY is not set
+CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
+CONFIG_FEATURE_HTTPD_AUTH_MD5=y
+CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
+CONFIG_FEATURE_HTTPD_SETUID=y
+CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES=y
+CONFIG_FEATURE_HTTPD_CGI=y
+CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
+CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
+CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y
+CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+# CONFIG_FEATURE_IFCONFIG_SLIP is not set
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+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=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y
+# CONFIG_FEATURE_INETD_RPC is not set
+# CONFIG_IP is not set
+CONFIG_IPCALC=y
+CONFIG_FEATURE_IPCALC_FANCY=y
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+# CONFIG_IPADDR is not set
+# CONFIG_IPLINK is not set
+# CONFIG_IPROUTE is not set
+# CONFIG_IPTUNNEL is not set
+CONFIG_NAMEIF=y
+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=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+# CONFIG_TELNETD is not set
+CONFIG_TFTP=y
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
+CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_IP6_LITERAL=y
+# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
+CONFIG_ZCIP=y
+
+#
+# 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
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+# CONFIG_FUSER is not set
+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 is not set
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+FEATURE_CPU_USAGE_PERCENTAGE=y
+CONFIG_UPTIME=y
+CONFIG_SYSCTL=y
+
+#
+# Another Bourne-like Shell
+#
+# CONFIG_FEATURE_SH_IS_ASH is not set
+# 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=y
+# CONFIG_ASH is not set
+# CONFIG_HUSH is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# 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 is not set
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
+
+#
+# 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=y
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_GETOPT is not set
+CONFIG_HEXDUMP=y
+# CONFIG_HWCLOCK is not set
+# CONFIG_IPCRM is not set
+CONFIG_IPCS=y
+CONFIG_LOSETUP=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+# CONFIG_FEATURE_MDEV_EXEC is not set
+CONFIG_MKSWAP=y
+# CONFIG_FEATURE_MKSWAP_V0 is not set
+# CONFIG_MORE is not set
+CONFIG_PIVOT_ROOT=y
+CONFIG_FEATURE_MOUNT_NFS=y
+# CONFIG_RDATE is not set
+# CONFIG_READPROFILE is not set
+# CONFIG_SETARCH is not set
+CONFIG_SWAPONOFF=y
+# CONFIG_SWITCH_ROOT is not set
+CONFIG_MOUNT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_MOUNT_FORCE=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
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+CONFIG_DEBUG_YANK_SUSv2=y
diff --git a/packages/linux/linux-rp-2.6.19/.mtn2git_empty b/packages/busybox/busybox-1.5.0/openmn/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-rp-2.6.19/.mtn2git_empty
+++ b/packages/busybox/busybox-1.5.0/openmn/.mtn2git_empty
diff --git a/packages/linux/linux-smdk2440-2.6.19/.mtn2git_empty b/packages/busybox/busybox-1.5.0/slugos/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-smdk2440-2.6.19/.mtn2git_empty
+++ b/packages/busybox/busybox-1.5.0/slugos/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.5.0/slugos/defconfig b/packages/busybox/busybox-1.5.0/slugos/defconfig
new file mode 100644
index 0000000000..8c61fedfdb
--- /dev/null
+++ b/packages/busybox/busybox-1.5.0/slugos/defconfig
@@ -0,0 +1,686 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.5.0
+# Mon Apr 2 17:38:36 2007
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+# CONFIG_NITPICK is not set
+# CONFIG_DESKTOP 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=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+# 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=y
+CONFIG_FEATURE_SYSLOG=y
+# CONFIG_FEATURE_SUID_CONFIG is not set
+# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
+CONFIG_FEATURE_HAVE_RPC=y
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_EXEC_PREFER_APPLETS 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
+CONFIG_BUILD_AT_ONCE=y
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_WERROR is not set
+# CONFIG_NO_DEBUG_LIB is not set
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+CONFIG_INCLUDE_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
+CONFIG_PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SIZE_VS_SPEED=2
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_FANCY_KEYS=y
+# CONFIG_FEATURE_EDITING_VI is not set
+CONFIG_FEATURE_EDITING_HISTORY=15
+# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
+CONFIG_FEATURE_TAB_COMPLETION=y
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+CONFIG_AR=y
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+CONFIG_BUNZIP2=y
+# CONFIG_CPIO is not set
+# 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=y
+# 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=y
+CONFIG_UNIX2DOS=y
+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=y
+# 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 is not set
+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=y
+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_FEATURE_WC_LARGE is not set
+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 is not set
+CONFIG_CLEAR=y
+# CONFIG_DEALLOCVT is not set
+# CONFIG_DUMPKMAP is not set
+# CONFIG_LOADFONT is not set
+# CONFIG_LOADKMAP is not set
+# CONFIG_OPENVT is not set
+CONFIG_RESET=y
+# CONFIG_RESIZE is not set
+# CONFIG_FEATURE_RESIZE_PRINT is not set
+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=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+CONFIG_FEATURE_ALLOW_EXEC=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=y
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_NOT=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=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# 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_INIT_SYSLOG 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_LOGIN_SCRIPTS is not set
+# CONFIG_FEATURE_SECURETTY is not set
+# CONFIG_PASSWD is not set
+# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
+# CONFIG_SU is not set
+# CONFIG_FEATURE_SU_SYSLOG is not set
+# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
+# CONFIG_SULOGIN is not set
+# CONFIG_VLOCK is not set
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+# CONFIG_FSCK is not set
+# CONFIG_LSATTR is not set
+
+#
+# Linux Module Utilities
+#
+# CONFIG_INSMOD is not set
+# 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 is not set
+# CONFIG_LSMOD is not set
+# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
+# CONFIG_MODPROBE is not set
+# CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS is not set
+# CONFIG_FEATURE_MODPROBE_FANCY_ALIAS is not set
+# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
+# CONFIG_FEATURE_2_4_MODULES is not set
+# CONFIG_FEATURE_2_6_MODULES is not set
+# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
+
+#
+# Linux System Utilities
+#
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+# CONFIG_FBSET is not set
+# CONFIG_FEATURE_FBSET_FANCY is not set
+# CONFIG_FEATURE_FBSET_READMODE is not set
+# CONFIG_FDFLUSH is not set
+# CONFIG_FDFORMAT is not set
+CONFIG_FDISK=y
+CONFIG_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=y
+# CONFIG_FEATURE_FDISK_ADVANCED is not set
+# CONFIG_FREERAMDISK is not set
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
+# 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 is not set
+# 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_FEATURE_MOUNT_CIFS is not set
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+# CONFIG_READPROFILE is not set
+# CONFIG_SETARCH is not set
+# CONFIG_SWAPONOFF is not set
+# CONFIG_SWITCH_ROOT is not set
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# 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_CHRT 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 is not set
+# 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_MAXLINES=9999999
+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_NMETER is not set
+# CONFIG_RAIDAUTORUN is not set
+# CONFIG_READAHEAD 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_FEATURE_TASKSET_FANCY is not set
+CONFIG_TIME=y
+# CONFIG_WATCHDOG is not set
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+# CONFIG_ARP is not set
+# 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_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 is not set
+CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN=y
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+# CONFIG_FEATURE_IFUPDOWN_IPX is not set
+# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
+# 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 is not set
+# CONFIG_FEATURE_IP_ADDRESS is not set
+# CONFIG_FEATURE_IP_LINK is not set
+# CONFIG_FEATURE_IP_ROUTE is not set
+# CONFIG_FEATURE_IP_TUNNEL is not set
+# CONFIG_FEATURE_IP_RULE is not set
+# 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_IPRULE 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_SERVER is not set
+# CONFIG_NC_EXTRA is not set
+CONFIG_NETSTAT=y
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+CONFIG_PING6=y
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_ROUTE=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+# CONFIG_TELNETD is not set
+# CONFIG_FEATURE_TELNETD_STANDALONE 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=y
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+# CONFIG_APP_UDHCPD is not set
+# CONFIG_APP_DHCPRELAY is not set
+# CONFIG_APP_DUMPLEASES is not set
+CONFIG_APP_UDHCPC=y
+CONFIG_FEATURE_UDHCP_SYSLOG=y
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+# CONFIG_FEATURE_RFC3397 is not set
+# CONFIG_VCONFIG is not set
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=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_KILLALL5 is not set
+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
+
+#
+# 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
+
+#
+# Runit Utilities
+#
+# CONFIG_RUNSV is not set
+# CONFIG_RUNSVDIR is not set
+# CONFIG_SV is not set
+# CONFIG_SVLOGD is not set
+# CONFIG_CHPST is not set
+# CONFIG_SETUIDGID is not set
+# CONFIG_ENVUIDGID is not set
+# CONFIG_ENVDIR is not set
+# CONFIG_SOFTLIMIT is not set
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
diff --git a/packages/busybox/busybox-1.5.0/slugos/udhcpscript.patch b/packages/busybox/busybox-1.5.0/slugos/udhcpscript.patch
new file mode 100644
index 0000000000..dec6c18994
--- /dev/null
+++ b/packages/busybox/busybox-1.5.0/slugos/udhcpscript.patch
@@ -0,0 +1,133 @@
+--- busybox-1.00/.pc/udhcpscript.patch/examples/udhcp/simple.script 2004-10-13 00:18:05.000000000 -0700
++++ busybox-1.00/examples/udhcp/simple.script 2005-06-05 15:08:28.432605118 -0700
+@@ -1,40 +1,101 @@
+ #!/bin/sh
++# openslug UDHCP client script
++# this must set the HW address (MAC) on the interface
++#
++. /etc/default/functions
+
+-# udhcpc script edited by Tim Riker <Tim@Rikers.org>
+
+-[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
++echodns(){
++ local dns
++ if test $# -gt 0
++ then
++ for dns in "$@"
++ do
++ echo "nameserver $dns"
++ done
++ fi
++}
++
++# Output the correct contents for resolv.conf
++mkresolv() {
++ test -n "$domain" && echo "search $domain"
++ echodns $dns
++}
++
++# checksum of a file (or stdin if -)
++md5strm() {
++ md5sum $1 2>/dev/null | sed -n 's/^\([0-9A-Za-z]*\).*$/\1/p'
++}
++
++bind() {
++ local B N metric i olddomain
++ B=
++ test -n "$broadcast" && B="broadcast $broadcast"
++ N=
++ test -n "$subnet" && N="netmask $subnet"
++ ifconfig "$interface" "$ip" $B $N up
++
++ # If given router information delete the old information and
++ # enter new stuff, routers get metrics incremented by 1
++ # between each (this is somewhat arbitrary)
++ if test -n "$router"
++ then
++ while route del default gw 0.0.0.0 dev $interface 2>/dev/null
++ do
++ :
++ done
+
+-RESOLV_CONF="/etc/resolv.conf"
+-[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
+-[ -n "$subnet" ] && NETMASK="netmask $subnet"
++ metric=0
++ for i in $router
++ do
++ route add default gw "$i" dev "$interface" metric $((metric++))
++ done
++ fi
++
++ olddomain=
++ test -r /etc/defaultdomain && olddomain="$(cat /etc/defaultdomain)"
++ if test -n "$domain" -a "$domain" != "$olddomain"
++ then
++ echo "$domain" >/etc/defaultdomain
++ # and update the kernel view too
++ echo "$domain" >/proc/sys/kernel/domainname
++ fi
++
++ # Update /etc/resolv.conf to reflect domain and dns information,
++ # this always clears resolv.conf if none is given
++ md5old="$(md5strm /etc/resolv.conf)"
++ md5new="$(mkresolv | md5strm -)"
++ test "$md5old" != "$md5new" && mkresolv >/etc/resolv.conf
++}
+
+ case "$1" in
+- deconfig)
+- /sbin/ifconfig $interface 0.0.0.0
+- ;;
+-
+- renew|bound)
+- /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
+-
+- if [ -n "$router" ] ; then
+- echo "deleting routers"
+- while route del default gw 0.0.0.0 dev $interface ; do
+- :
+- done
+-
+- metric=0
+- for i in $router ; do
+- route add default gw $i dev $interface metric $((metric++))
+- done
++deconfig)
++ # Bring the interface up (without inet at this point)
++ ifconfig "$interface" 0.0.0.0;;
++
++renew|bound)
++ bind;;
++
++leasefail)
++ # Pull the values from the config data if (only only if) this
++ # is the config interface
++ if test "$interface" = "$(config iface)"
++ then
++ ip="$(config ip)"
++ if test -n "$ip"
++ then
++ router="$(config gateway)"
++ subnet="$(config netmask)"
++ broadcast="$(config broadcast)"
++ domain="$(config domain)"
++ dns="$(config dns)"
++
++ bind
+ fi
++ fi;;
+
+- echo -n > $RESOLV_CONF
+- [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
+- for i in $dns ; do
+- echo adding dns $i
+- echo nameserver $i >> $RESOLV_CONF
+- done
+- ;;
++*) echo "udhcpc: $*: unknown command" >&2
++ exit 1;;
+ esac
+
+ exit 0
diff --git a/packages/linux/linux-titan-sh4-2.6.17/.mtn2git_empty b/packages/busybox/busybox-1.5.0/sparc/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-titan-sh4-2.6.17/.mtn2git_empty
+++ b/packages/busybox/busybox-1.5.0/sparc/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.5.0/udhcpscript.patch b/packages/busybox/busybox-1.5.0/udhcpscript.patch
new file mode 100644
index 0000000000..fc21d440cd
--- /dev/null
+++ b/packages/busybox/busybox-1.5.0/udhcpscript.patch
@@ -0,0 +1,17 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- busybox-1.00-rc3/examples/udhcp/simple.script~udhcpscript
++++ busybox-1.00-rc3/examples/udhcp/simple.script
+@@ -17,8 +17,7 @@
+ /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
+
+ if [ -n "$router" ] ; then
+- echo "deleting routers"
+- while route del default gw 0.0.0.0 dev $interface ; do
++ while route del default gw 0.0.0.0 dev $interface 2>/dev/null ; do
+ :
+ done
+
diff --git a/packages/linux/nslu2-kernel/.mtn2git_empty b/packages/busybox/busybox-1.5.0/wrt54/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/nslu2-kernel/.mtn2git_empty
+++ b/packages/busybox/busybox-1.5.0/wrt54/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.5.0/xargs-double-size.patch b/packages/busybox/busybox-1.5.0/xargs-double-size.patch
new file mode 100644
index 0000000000..df64554ffc
--- /dev/null
+++ b/packages/busybox/busybox-1.5.0/xargs-double-size.patch
@@ -0,0 +1,13 @@
+--- busybox-1.2.1/findutils/xargs.c.org 2006-09-19 18:18:17.084592997 +0200
++++ busybox-1.2.1/findutils/xargs.c 2006-09-19 18:18:09.820275793 +0200
+@@ -466,8 +466,8 @@
+ have it at 1 meg). Things will work fine with a large ARG_MAX but it
+ will probably hurt the system more than it needs to; an array of this
+ size is allocated. */
+- if (orig_arg_max > 20 * 1024)
+- orig_arg_max = 20 * 1024;
++ if (orig_arg_max > 40 * 1024)
++ orig_arg_max = 40 * 1024;
+ n_max_chars = orig_arg_max;
+ }
+ max_chars = xmalloc(n_max_chars);
diff --git a/packages/busybox/busybox.inc b/packages/busybox/busybox.inc
index 37a9676257..ab17d96db4 100644
--- a/packages/busybox/busybox.inc
+++ b/packages/busybox/busybox.inc
@@ -42,8 +42,8 @@ INITSCRIPT_NAME_${PN}-udhcpd = "busybox-udhcpd"
INITSCRIPT_NAME_${PN} = "syslog"
CONFFILES_${PN} = "${sysconfdir}/syslog.conf"
-# This disables the syslog startup links in openslug (see openslug-init)
-INITSCRIPT_PARAMS_${PN}_openslug = "start 20 ."
+# This disables the syslog startup links in slugos (see slugos-init)
+INITSCRIPT_PARAMS_${PN}_slugos = "start 20 ."
inherit cml1 update-rc.d
diff --git a/packages/busybox/busybox_1.2.1.bb b/packages/busybox/busybox_1.2.1.bb
index d7d28ffeb2..054649e9df 100644
--- a/packages/busybox/busybox_1.2.1.bb
+++ b/packages/busybox/busybox_1.2.1.bb
@@ -1,6 +1,6 @@
require busybox.inc
-PR = "r10"
+PR = "r13"
SRC_URI += "file://wget-long-options.patch;patch=1 \
file://df_rootfs.patch;patch=1 \
diff --git a/packages/busybox/busybox_1.3.1.bb b/packages/busybox/busybox_1.3.1.bb
new file mode 100644
index 0000000000..a42a87c50d
--- /dev/null
+++ b/packages/busybox/busybox_1.3.1.bb
@@ -0,0 +1,99 @@
+require busybox.inc
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "file://defconfig"
+
+do_configure () {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config.oe
+
+ echo "CROSS_COMPILER_PREFIX=\"${TARGET_PREFIX}\"" > ${S}/.config
+ echo "USING_CROSS_COMPILER=y" >> ${S}/.config
+
+ sed -e '/CROSS_COMPILER_PREFIX/d' \
+ -e '/USING_CROSS_COMPILER/d' \
+ '${S}/.config.oe' >>'${S}/.config'
+ cml1_do_configure
+}
+
+do_install () {
+ install -d ${D}${sysconfdir}/init.d
+ oe_runmake "PREFIX=${D}" install
+ cp -pPR ${S}/_install/* ${D}/
+
+ # Move everything to /busybox (not supposed to end up in any package)
+ install -d ${D}/busybox
+ ls ${D} -R
+
+ cp -dPr ${D}${base_bindir} ${D}${base_sbindir} ${D}${prefix} ${D}/busybox/
+ # Move the busybox binary back to /bin
+ install -d ${D}${base_bindir}
+ mv ${D}/busybox${base_bindir}/busybox ${D}${base_bindir}/
+ # Move back the sh symlink
+ test -h ${D}/busybox${base_bindir}/sh && mv ${D}/busybox${base_bindir}/sh ${D}${base_bindir}/
+
+ install -m 0755 ${WORKDIR}/syslog ${D}${sysconfdir}/init.d/
+ install -m 644 ${WORKDIR}/syslog.conf ${D}${sysconfdir}/
+ if grep "CONFIG_CROND=y" ${WORKDIR}/defconfig; then
+ # Move crond back to /usr/sbin/crond
+ install -d ${D}${sbindir}
+ mv ${D}/busybox${sbindir}/crond ${D}${sbindir}/
+
+ install -m 0755 ${WORKDIR}/busybox-cron ${D}${sysconfdir}/init.d/
+ fi
+ if grep "CONFIG_HTTPD=y" ${WORKDIR}/defconfig; then
+ # Move httpd back to /usr/sbin/httpd
+ install -d ${D}${sbindir}
+ mv ${D}/busybox${sbindir}/httpd ${D}${sbindir}/
+
+ install -m 0755 ${WORKDIR}/busybox-httpd ${D}${sysconfdir}/init.d/
+ install -d ${D}/srv/www
+ fi
+ if grep "CONFIG_APP_UDHCPD=y" ${WORKDIR}/defconfig; then
+ # Move udhcpd back to /usr/sbin/udhcpd
+ install -d ${D}${sbindir}
+ mv ${D}/busybox${sbindir}/udhcpd ${D}${sbindir}/
+
+ install -m 0755 ${WORKDIR}/busybox-udhcpd ${D}${sysconfdir}/init.d/
+ fi
+ if grep "CONFIG_HWCLOCK=y" ${WORKDIR}/defconfig; then
+ # Move hwclock back to /sbin/hwclock
+ install -d ${D}${base_sbindir}
+ mv ${D}/busybox${base_sbindir}/hwclock ${D}${base_sbindir}/
+
+ install -m 0755 ${WORKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/
+ fi
+ if grep "CONFIG_APP_UDHCPC=y" ${WORKDIR}/defconfig; then
+ # Move dhcpc back to /usr/sbin/udhcpc
+ install -d ${D}${base_sbindir}
+ mv ${D}/busybox${base_sbindir}/udhcpc ${D}${base_sbindir}/
+
+ install -d ${D}${sysconfdir}/udhcpc.d
+ install -d ${D}${datadir}/udhcpc
+ install -m 0755 ${S}/examples/udhcp/simple.script ${D}${sysconfdir}/udhcpc.d/50default
+ install -m 0755 ${WORKDIR}/default.script ${D}${datadir}/udhcpc/default.script
+ fi
+
+ install -m 0644 ${S}/busybox.links ${D}${sysconfdir}
+}
+
+pkg_prerm_${PN} () {
+ # This is so you can make busybox commit suicide - removing busybox with no other packages
+ # providing its files, this will make update-alternatives work, but the update-rc.d part
+ # for syslog, httpd and/or udhcpd will fail if there is no other package providing sh
+ tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX`
+ ln -s /bin/busybox $tmpdir/[
+ ln -s /bin/busybox $tmpdir/test
+ ln -s /bin/busybox $tmpdir/head
+ ln -s /bin/busybox $tmpdir/sh
+ ln -s /bin/busybox $tmpdir/basename
+ ln -s /bin/busybox $tmpdir/echo
+ ln -s /bin/busybox $tmpdir/mv
+ ln -s /bin/busybox $tmpdir/ln
+ ln -s /bin/busybox $tmpdir/dirname
+ ln -s /bin/busybox $tmpdir/rm
+ ln -s /bin/busybox $tmpdir/sed
+ ln -s /bin/busybox $tmpdir/sort
+ export PATH=$PATH:$tmpdir
+ while read link; do case "$link" in /*/*/*) to="../../bin/busybox";; /bin/*) to="busybox";; /*/*) to="../bin/busybox";; esac; bn=`basename $link`; sh /usr/bin/update-alternatives --remove $bn $to; done </etc/busybox.links
+}
diff --git a/packages/busybox/busybox_1.5.0.bb b/packages/busybox/busybox_1.5.0.bb
new file mode 100644
index 0000000000..a8678602e7
--- /dev/null
+++ b/packages/busybox/busybox_1.5.0.bb
@@ -0,0 +1,104 @@
+require busybox.inc
+
+PR = "r0"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI += "file://dhcp-increase-retries.patch;patch=1 \
+ file://df_rootfs.patch;patch=1 \
+ file://defconfig"
+
+EXTRA_OEMAKE_append = " V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX}"
+
+do_configure () {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+ cml1_do_configure
+}
+
+do_compile () {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ base_do_compile
+}
+
+do_install () {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ install -d ${D}${sysconfdir}/init.d
+ oe_runmake "PREFIX=${D}" install
+ cp -pPR ${S}/_install/* ${D}/
+
+ # Move everything to /busybox (not supposed to end up in any package)
+ install -d ${D}/busybox
+ ls ${D} -R
+
+ cp -dPr ${D}${base_bindir} ${D}${base_sbindir} ${D}${prefix} ${D}/busybox/
+ # Move the busybox binary back to /bin
+ install -d ${D}${base_bindir}
+ mv ${D}/busybox${base_bindir}/busybox ${D}${base_bindir}/
+ # Move back the sh symlink
+ test -h ${D}/busybox${base_bindir}/sh && mv ${D}/busybox${base_bindir}/sh ${D}${base_bindir}/
+
+ install -m 0755 ${WORKDIR}/syslog ${D}${sysconfdir}/init.d/
+ install -m 644 ${WORKDIR}/syslog.conf ${D}${sysconfdir}/
+ if grep "CONFIG_CROND=y" ${WORKDIR}/defconfig; then
+ # Move crond back to /usr/sbin/crond
+ install -d ${D}${sbindir}
+ mv ${D}/busybox${sbindir}/crond ${D}${sbindir}/
+
+ install -m 0755 ${WORKDIR}/busybox-cron ${D}${sysconfdir}/init.d/
+ fi
+ if grep "CONFIG_HTTPD=y" ${WORKDIR}/defconfig; then
+ # Move httpd back to /usr/sbin/httpd
+ install -d ${D}${sbindir}
+ mv ${D}/busybox${sbindir}/httpd ${D}${sbindir}/
+
+ install -m 0755 ${WORKDIR}/busybox-httpd ${D}${sysconfdir}/init.d/
+ install -d ${D}/srv/www
+ fi
+ if grep "CONFIG_APP_UDHCPD=y" ${WORKDIR}/defconfig; then
+ # Move udhcpd back to /usr/sbin/udhcpd
+ install -d ${D}${sbindir}
+ mv ${D}/busybox${sbindir}/udhcpd ${D}${sbindir}/
+
+ install -m 0755 ${WORKDIR}/busybox-udhcpd ${D}${sysconfdir}/init.d/
+ fi
+ if grep "CONFIG_HWCLOCK=y" ${WORKDIR}/defconfig; then
+ # Move hwclock back to /sbin/hwclock
+ install -d ${D}${base_sbindir}
+ mv ${D}/busybox${base_sbindir}/hwclock ${D}${base_sbindir}/
+
+ install -m 0755 ${WORKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/
+ fi
+ if grep "CONFIG_APP_UDHCPC=y" ${WORKDIR}/defconfig; then
+ # Move dhcpc back to /usr/sbin/udhcpc
+ install -d ${D}${base_sbindir}
+ mv ${D}/busybox${base_sbindir}/udhcpc ${D}${base_sbindir}/
+
+ install -d ${D}${sysconfdir}/udhcpc.d
+ install -d ${D}${datadir}/udhcpc
+ install -m 0755 ${S}/examples/udhcp/simple.script ${D}${sysconfdir}/udhcpc.d/50default
+ install -m 0755 ${WORKDIR}/default.script ${D}${datadir}/udhcpc/default.script
+ fi
+
+ install -m 0644 ${S}/busybox.links ${D}${sysconfdir}
+}
+
+pkg_prerm_${PN} () {
+ # This is so you can make busybox commit suicide - removing busybox with no other packages
+ # providing its files, this will make update-alternatives work, but the update-rc.d part
+ # for syslog, httpd and/or udhcpd will fail if there is no other package providing sh
+ tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX`
+ ln -s /bin/busybox $tmpdir/[
+ ln -s /bin/busybox $tmpdir/test
+ ln -s /bin/busybox $tmpdir/head
+ ln -s /bin/busybox $tmpdir/sh
+ ln -s /bin/busybox $tmpdir/basename
+ ln -s /bin/busybox $tmpdir/echo
+ ln -s /bin/busybox $tmpdir/mv
+ ln -s /bin/busybox $tmpdir/ln
+ ln -s /bin/busybox $tmpdir/dirname
+ ln -s /bin/busybox $tmpdir/rm
+ ln -s /bin/busybox $tmpdir/sed
+ ln -s /bin/busybox $tmpdir/sort
+ export PATH=$PATH:$tmpdir
+ while read link; do case "$link" in /*/*/*) to="../../bin/busybox";; /bin/*) to="busybox";; /*/*) to="../bin/busybox";; esac; bn=`basename $link`; sh /usr/bin/update-alternatives --remove $bn $to; done </etc/busybox.links
+}
diff --git a/packages/busybox/files/syslog.conf b/packages/busybox/files/syslog.conf
index d4a0e02f5b..fc7ff8b37a 100644
--- a/packages/busybox/files/syslog.conf
+++ b/packages/busybox/files/syslog.conf
@@ -1,9 +1,9 @@
DESTINATION="buffer" # log destinations (buffer file remote)
-MARKINT=20 # intervall between --mark-- entries
-LOGFILE=/var/log/messages # where to log (file)
-REMOTE=loghost:514 # where to log (syslog remote)
-REDUCE=no # reduce-size logging
-#ROTATESIZE=0 # rotate log if grown beyond X [kByte] (incompatible with busybox)
-#ROTATEGENS=3 # keep X generations of rotated logs (incompatible with busybox)
-BUFFERSIZE=64 # size of circular buffer [kByte]
+MARKINT=20 # interval between --mark-- entries [min]
+REDUCE=no # reduced-size logging
+BUFFERSIZE=64 # buffer: size of circular buffer [kByte]
+LOGFILE=/var/log/messages # file: where to log
+ROTATESIZE=32 # file: rotate log if grown beyond X [kByte] (busybox 1.2+)
+ROTATEGENS=1 # file: keep X generations of rotated logs (busybox 1.2+)
+REMOTE=loghost:514 # remote: where to log
FOREGROUND=no # run in foreground (don't use!)
diff --git a/packages/linux/nslu2-kernel/2.6.11-mm/.mtn2git_empty b/packages/c3110x/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/nslu2-kernel/2.6.11-mm/.mtn2git_empty
+++ b/packages/c3110x/.mtn2git_empty
diff --git a/packages/c3110x/cx3110x_1.1.bb b/packages/c3110x/cx3110x_1.1.bb
new file mode 100644
index 0000000000..b3a9ce87e3
--- /dev/null
+++ b/packages/c3110x/cx3110x_1.1.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "cx3110x wifi support as found in the Nokia 770/800"
+SECTION = "kernel/modules"
+LICENSE = "GPL"
+PR = "r0"
+
+export KERNEL_SRC_DIR = ${STAGING_KERNEL_DIR}
+export LDFLAGS = ""
+
+SRC_URI = "https://garage.maemo.org/frs/download.php/939/cx3110x-1.1.tar.gz"
+
+S = "${WORKDIR}/cx3110x-${PV}"
+
+inherit module
+
+do_compile() {
+ oe_runmake modules
+}
+
diff --git a/packages/linux/nslu2-kernel/2.6.12/.mtn2git_empty b/packages/cairo/cairo-1.4.4/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/nslu2-kernel/2.6.12/.mtn2git_empty
+++ b/packages/cairo/cairo-1.4.4/.mtn2git_empty
diff --git a/packages/cairo/cairo-1.4.4/cairo-workqueue.patch b/packages/cairo/cairo-1.4.4/cairo-workqueue.patch
new file mode 100644
index 0000000000..4522e99e68
--- /dev/null
+++ b/packages/cairo/cairo-1.4.4/cairo-workqueue.patch
@@ -0,0 +1,2148 @@
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Wed, 18 Apr 2007 17:34:44 +0000 (+0100)
+Subject: Cache freed GCs
+X-Git-Url: http://gitweb.freedesktop.org/?p=users/ickle/cairo;a=commitdiff;h=3126c3948691cf7a6c0fc0f9cc6a7eca43c3553b
+
+Cache freed GCs
+
+Maintain a cache of freed GCs, one for each used depth.
+---
+
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -46,7 +46,11 @@ endif
+
+ if CAIRO_HAS_XLIB_SURFACE
+ libcairo_xlib_headers = cairo-xlib.h cairo-xlib-xrender.h
+-libcairo_xlib_sources = cairo-xlib-surface.c cairo-xlib-screen.c cairo-xlib-private.h cairo-xlib-test.h
++libcairo_xlib_sources = cairo-xlib-surface.c \
++ cairo-xlib-display.c \
++ cairo-xlib-screen.c \
++ cairo-xlib-private.h \
++ cairo-xlib-test.h
+ backend_pkgconfigs += cairo-xlib.pc
+ endif
+
+--- a/src/cairo-clip.c
++++ b/src/cairo-clip.c
+@@ -404,7 +404,8 @@ _cairo_clip_intersect_mask (cairo_clip_t
+ CAIRO_CONTENT_ALPHA,
+ surface_rect.width,
+ surface_rect.height,
+- CAIRO_COLOR_WHITE);
++ CAIRO_COLOR_WHITE,
++ NULL);
+ if (surface->status)
+ return CAIRO_STATUS_NO_MEMORY;
+
+--- a/src/cairo-debug.c
++++ b/src/cairo-debug.c
+@@ -59,10 +59,6 @@
+ void
+ cairo_debug_reset_static_data (void)
+ {
+-#if CAIRO_HAS_XLIB_SURFACE
+- _cairo_xlib_screen_reset_static_data ();
+-#endif
+-
+ _cairo_font_reset_static_data ();
+
+ #if CAIRO_HAS_FT_FONT
+--- a/src/cairo-directfb-surface.c
++++ b/src/cairo-directfb-surface.c
+@@ -1511,6 +1511,16 @@ _cairo_directfb_surface_show_glyphs ( vo
+ #endif /* DFB_SHOW_GLYPHS */
+
+
++static cairo_bool_t
++_cairo_directfb_surface_is_compatible (void *surface_a,
++ void *surface_b)
++{
++ cairo_directfb_surface_t *a = (cairo_directfb_surface_t *) surface_a;
++ cairo_directfb_surface_t *b = (cairo_directfb_surface_t *) surface_b;
++
++ return a->dfb == b->dfb;
++}
++
+ static cairo_surface_backend_t cairo_directfb_surface_backend = {
+ CAIRO_SURFACE_TYPE_DIRECTFB, /*type*/
+ _cairo_directfb_surface_create_similar,/*create_similar*/
+@@ -1560,7 +1570,8 @@ static cairo_surface_backend_t cairo_dir
+ #else
+ NULL, /* show_glyphs */
+ #endif
+- NULL /* snapshot */
++ NULL, /* snapshot */
++ _cairo_directfb_is_compatible
+ };
+
+
+--- a/src/cairo-glitz-surface.c
++++ b/src/cairo-glitz-surface.c
+@@ -1002,7 +1002,8 @@ _cairo_glitz_surface_fill_rectangles (vo
+ _cairo_surface_create_similar_solid (&dst->base,
+ CAIRO_CONTENT_COLOR_ALPHA,
+ 1, 1,
+- (cairo_color_t *) color);
++ (cairo_color_t *) color,
++ NULL);
+ if (src->base.status)
+ return CAIRO_STATUS_NO_MEMORY;
+
+@@ -2171,6 +2172,19 @@ _cairo_glitz_surface_flush (void *abstra
+ return CAIRO_STATUS_SUCCESS;
+ }
+
++static cairo_bool_t
++_cairo_glitz_surface_is_compatible (void *surface_a,
++ void *surface_b)
++{
++ cairo_glitz_surface_t *a = (cairo_glitz_surface_t *) surface_a;
++ cairo_glitz_surface_t *b = (cairo_glitz_surface_t *) surface_b;
++
++ glitz_drawable_t *drawable_a = glitz_surface_get_drawable (a->surface);
++ glitz_drawable_t *drawable_b = glitz_surface_get_drawable (b->surface);
++
++ return drawable_a == drawable_b;
++}
++
+ static const cairo_surface_backend_t cairo_glitz_surface_backend = {
+ CAIRO_SURFACE_TYPE_GLITZ,
+ _cairo_glitz_surface_create_similar,
+@@ -2193,7 +2207,16 @@ static const cairo_surface_backend_t cai
+ _cairo_glitz_surface_flush,
+ NULL, /* mark_dirty_rectangle */
+ _cairo_glitz_surface_scaled_font_fini,
+- _cairo_glitz_surface_scaled_glyph_fini
++ _cairo_glitz_surface_scaled_glyph_fini,
++
++ NULL, /* paint */
++ NULL, /* mask */
++ NULL, /* stroke */
++ NULL, /* fill */
++ NULL, /* show_glyphs */
++
++ NULL, /* snapshot */
++ _cairo_glitz_surface_is_compatible
+ };
+
+ static const cairo_surface_backend_t *
+--- a/src/cairo-mutex-list-private.h
++++ b/src/cairo-mutex-list-private.h
+@@ -34,7 +34,8 @@
+ #ifndef CAIRO_MUTEX_LIST_PRIVATE_H
+ #define CAIRO_MUTEX_LIST_PRIVATE_H
+
+-CAIRO_MUTEX_DECLARE (_cairo_pattern_solid_cache_lock);
++CAIRO_MUTEX_DECLARE (_cairo_pattern_solid_pattern_cache_lock);
++CAIRO_MUTEX_DECLARE (_cairo_pattern_solid_surface_cache_lock);
+
+ CAIRO_MUTEX_DECLARE (_cairo_font_face_mutex);
+ CAIRO_MUTEX_DECLARE (_cairo_scaled_font_map_mutex);
+@@ -44,7 +45,7 @@ CAIRO_MUTEX_DECLARE (_cairo_ft_unscaled_
+ #endif
+
+ #if CAIRO_HAS_XLIB_SURFACE
+-CAIRO_MUTEX_DECLARE (_cairo_xlib_screen_mutex);
++CAIRO_MUTEX_DECLARE (_cairo_xlib_display_mutex);
+ #endif
+
+ #endif
+--- a/src/cairo-pattern.c
++++ b/src/cairo-pattern.c
+@@ -282,7 +282,7 @@ _cairo_pattern_create_solid (const cairo
+ {
+ cairo_solid_pattern_t *pattern = NULL;
+
+- CAIRO_MUTEX_LOCK (_cairo_pattern_solid_cache_lock);
++ CAIRO_MUTEX_LOCK (_cairo_pattern_solid_pattern_cache_lock);
+
+ if (solid_pattern_cache.size) {
+ int i = --solid_pattern_cache.size %
+@@ -291,7 +291,7 @@ _cairo_pattern_create_solid (const cairo
+ solid_pattern_cache.patterns[i] = NULL;
+ }
+
+- CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_cache_lock);
++ CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_pattern_cache_lock);
+
+ if (pattern == NULL) {
+ /* None cached, need to create a new pattern. */
+@@ -306,12 +306,12 @@ _cairo_pattern_create_solid (const cairo
+ return &pattern->base;
+ }
+
+-void
+-_cairo_pattern_reset_static_data (void)
++static void
++_cairo_pattern_reset_solid_pattern_cache (void)
+ {
+ int i;
+
+- CAIRO_MUTEX_LOCK (_cairo_pattern_solid_cache_lock);
++ CAIRO_MUTEX_LOCK (_cairo_pattern_solid_pattern_cache_lock);
+
+ for (i = 0; i < MIN (ARRAY_LENGTH (solid_pattern_cache.patterns), solid_pattern_cache.size); i++) {
+ free (solid_pattern_cache.patterns[i]);
+@@ -319,7 +319,7 @@ _cairo_pattern_reset_static_data (void)
+ }
+ solid_pattern_cache.size = 0;
+
+- CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_cache_lock);
++ CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_pattern_cache_lock);
+ }
+
+ static const cairo_pattern_t *
+@@ -630,7 +630,7 @@ cairo_pattern_destroy (cairo_pattern_t *
+ if (pattern->type == CAIRO_PATTERN_TYPE_SOLID) {
+ int i;
+
+- CAIRO_MUTEX_LOCK (_cairo_pattern_solid_cache_lock);
++ CAIRO_MUTEX_LOCK (_cairo_pattern_solid_pattern_cache_lock);
+
+ i = solid_pattern_cache.size++ %
+ ARRAY_LENGTH (solid_pattern_cache.patterns);
+@@ -640,7 +640,7 @@ cairo_pattern_destroy (cairo_pattern_t *
+
+ solid_pattern_cache.patterns[i] = (cairo_solid_pattern_t *) pattern;
+
+- CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_cache_lock);
++ CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_pattern_cache_lock);
+ } else {
+ free (pattern);
+ }
+@@ -1235,6 +1235,17 @@ _cairo_pattern_acquire_surface_for_gradi
+ return status;
+ }
+
++/* We maintain a small cache here, because we don't want to constantly
++ * recreate surfaces for simple solid colors. */
++#define MAX_SURFACE_CACHE_SIZE 16
++static struct {
++ struct {
++ cairo_color_t color;
++ cairo_surface_t *surface;
++ } cache[MAX_SURFACE_CACHE_SIZE];
++ int size;
++} solid_surface_cache;
++
+ static cairo_int_status_t
+ _cairo_pattern_acquire_surface_for_solid (cairo_solid_pattern_t *pattern,
+ cairo_surface_t *dst,
+@@ -1245,12 +1256,54 @@ _cairo_pattern_acquire_surface_for_solid
+ cairo_surface_t **out,
+ cairo_surface_attributes_t *attribs)
+ {
+- *out = _cairo_surface_create_similar_solid (dst,
+- CAIRO_CONTENT_COLOR_ALPHA,
+- 1, 1,
+- &pattern->color);
+- if ((*out)->status)
+- return CAIRO_STATUS_NO_MEMORY;
++ static int i;
++
++ cairo_surface_t *surface;
++ cairo_status_t status;
++
++ CAIRO_MUTEX_LOCK (_cairo_pattern_solid_surface_cache_lock);
++
++ /* Check cache first */
++ if (i < solid_surface_cache.size &&
++ _cairo_color_equal (&solid_surface_cache.cache[i].color,
++ &pattern->color) &&
++ _cairo_surface_is_compatible (solid_surface_cache.cache[i].surface, dst))
++ goto DONE;
++
++ for (i = 0 ; i < solid_surface_cache.size; i++) {
++ if (_cairo_color_equal (&solid_surface_cache.cache[i].color,
++ &pattern->color) &&
++ _cairo_surface_is_compatible (solid_surface_cache.cache[i].surface, dst))
++ goto DONE;
++ }
++
++ /* Not cached, need to create new */
++ surface = _cairo_surface_create_similar_solid (dst,
++ CAIRO_CONTENT_COLOR_ALPHA,
++ 1, 1,
++ &pattern->color,
++ pattern);
++ assert (_cairo_surface_is_compatible (surface, dst));
++ if (surface->status) {
++ status = surface->status;
++ goto UNLOCK;
++ }
++
++ /* Cache new */
++ if (solid_surface_cache.size < MAX_SURFACE_CACHE_SIZE) {
++ solid_surface_cache.size++;
++ } else {
++ i = rand () % MAX_SURFACE_CACHE_SIZE;
++
++ /* Evict old */
++ cairo_surface_destroy (solid_surface_cache.cache[i].surface);
++ }
++
++ solid_surface_cache.cache[i].color = pattern->color;
++ solid_surface_cache.cache[i].surface = surface;
++
++DONE:
++ *out = cairo_surface_reference (solid_surface_cache.cache[i].surface);
+
+ attribs->x_offset = attribs->y_offset = 0;
+ cairo_matrix_init_identity (&attribs->matrix);
+@@ -1258,7 +1311,26 @@ _cairo_pattern_acquire_surface_for_solid
+ attribs->filter = CAIRO_FILTER_NEAREST;
+ attribs->acquired = FALSE;
+
+- return CAIRO_STATUS_SUCCESS;
++ status = CAIRO_STATUS_SUCCESS;
++
++UNLOCK:
++ CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_surface_cache_lock);
++
++ return status;
++}
++
++static void
++_cairo_pattern_reset_solid_surface_cache (void)
++{
++ int i;
++
++ CAIRO_MUTEX_LOCK (_cairo_pattern_solid_surface_cache_lock);
++
++ for (i = 0; i < solid_surface_cache.size; i++)
++ cairo_surface_destroy (solid_surface_cache.cache[i].surface);
++ solid_surface_cache.size = 0;
++
++ CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_surface_cache_lock);
+ }
+
+ /**
+@@ -2049,3 +2121,10 @@ cairo_pattern_get_radial_circles (cairo_
+
+ return CAIRO_STATUS_SUCCESS;
+ }
++
++void
++_cairo_pattern_reset_static_data (void)
++{
++ _cairo_pattern_reset_solid_pattern_cache ();
++ _cairo_pattern_reset_solid_surface_cache ();
++}
+--- a/src/cairo-surface.c
++++ b/src/cairo-surface.c
+@@ -288,7 +288,8 @@ cairo_surface_create_similar (cairo_surf
+
+ return _cairo_surface_create_similar_solid (other, content,
+ width, height,
+- CAIRO_COLOR_TRANSPARENT);
++ CAIRO_COLOR_TRANSPARENT,
++ NULL);
+ }
+ slim_hidden_def (cairo_surface_create_similar);
+
+@@ -297,7 +298,8 @@ _cairo_surface_create_similar_solid (cai
+ cairo_content_t content,
+ int width,
+ int height,
+- const cairo_color_t *color)
++ const cairo_color_t *color,
++ cairo_pattern_t *pattern)
+ {
+ cairo_status_t status;
+ cairo_surface_t *surface;
+@@ -310,19 +312,23 @@ _cairo_surface_create_similar_solid (cai
+ return (cairo_surface_t*) &_cairo_surface_nil;
+ }
+
+- source = _cairo_pattern_create_solid (color);
+- if (source->status) {
+- cairo_surface_destroy (surface);
+- _cairo_error (CAIRO_STATUS_NO_MEMORY);
+- return (cairo_surface_t*) &_cairo_surface_nil;
+- }
++ if (pattern == NULL) {
++ source = _cairo_pattern_create_solid (color);
++ if (source->status) {
++ cairo_surface_destroy (surface);
++ _cairo_error (CAIRO_STATUS_NO_MEMORY);
++ return (cairo_surface_t*) &_cairo_surface_nil;
++ }
++ } else
++ source = pattern;
+
+ status = _cairo_surface_paint (surface,
+ color == CAIRO_COLOR_TRANSPARENT ?
+ CAIRO_OPERATOR_CLEAR :
+ CAIRO_OPERATOR_SOURCE, source);
+
+- cairo_pattern_destroy (source);
++ if (source != pattern)
++ cairo_pattern_destroy (source);
+
+ if (status) {
+ cairo_surface_destroy (surface);
+@@ -1056,6 +1062,32 @@ _cairo_surface_snapshot (cairo_surface_t
+ return _cairo_surface_fallback_snapshot (surface);
+ }
+
++/**
++ * _cairo_surface_is_compatible
++ * @surface_a: a #cairo_surface_t
++ * @surface_b: a #cairo_surface_t
++ *
++ * Find out whether the given surfaces share the same backend,
++ * and if so, whether they can be considered compatible.
++ *
++ * The definition of "compatible" depends on the backend. In the
++ * xlib case, it means the surface share the same display.
++ *
++ * Return value: TRUE if the surfaces are compatible.
++ **/
++cairo_bool_t
++_cairo_surface_is_compatible (cairo_surface_t *surface_a,
++ cairo_surface_t *surface_b)
++{
++ if (surface_a->backend != surface_b->backend)
++ return FALSE;
++
++ if (surface_a->backend->is_compatible != NULL)
++ return surface_a->backend->is_compatible (surface_a, surface_b);
++
++ return TRUE;
++}
++
+ cairo_status_t
+ _cairo_surface_composite (cairo_operator_t op,
+ cairo_pattern_t *src,
+--- a/src/cairo-win32-surface.c
++++ b/src/cairo-win32-surface.c
+@@ -1854,6 +1854,16 @@ cairo_win32_surface_get_image (cairo_sur
+ return ((cairo_win32_surface_t*)surface)->image;
+ }
+
++static cairo_bool_t
++_cairo_win32_surface_is_compatible (void *surface_a,
++ void *surface_b)
++{
++ cairo_win32_surface_t *a = (cairo_win32_surface_t *) surface_a;
++ cairo_win32_surface_t *b = (cairo_win32_surface_t *) surface_b;
++
++ return a->dc == b->dc;
++}
++
+ static const cairo_surface_backend_t cairo_win32_surface_backend = {
+ CAIRO_SURFACE_TYPE_WIN32,
+ _cairo_win32_surface_create_similar,
+@@ -1884,7 +1894,8 @@ static const cairo_surface_backend_t cai
+ NULL, /* fill */
+ _cairo_win32_surface_show_glyphs,
+
+- NULL /* snapshot */
++ NULL, /* snapshot */
++ _cairo_win32_surface_is_compatible
+ };
+
+ /* Notes:
+--- a/src/cairo-xcb-surface.c
++++ b/src/cairo-xcb-surface.c
+@@ -1577,6 +1577,16 @@ _cairo_xcb_surface_show_glyphs (void
+ int num_glyphs,
+ cairo_scaled_font_t *scaled_font);
+
++static cairo_bool_t
++_cairo_xcb_surface_is_compatible (void *surface_a,
++ void *surface_b)
++{
++ cairo_xcb_surface_t *a = (cairo_xcb_surface_t *) surface_a;
++ cairo_xcb_surface_t *b = (cairo_xcb_surface_t *) surface_b;
++
++ return _cairo_xcb_surface_same_screen (dst, src);
++}
++
+ /* XXX: move this to the bottom of the file, XCB and Xlib */
+
+ static const cairo_surface_backend_t cairo_xcb_surface_backend = {
+@@ -1608,7 +1618,8 @@ static const cairo_surface_backend_t cai
+ NULL, /* stroke */
+ NULL, /* fill */
+ _cairo_xcb_surface_show_glyphs,
+- NULL /* snapshot */
++ NULL, /* snapshot */
++ _cairo_xcb_surface_is_compatible
+ };
+
+ /**
+--- /dev/null
++++ b/src/cairo-xlib-display.c
+@@ -0,0 +1,490 @@
++/* Cairo - a vector graphics library with display and print output
++ *
++ * Copyright © 2007 Chris Wilson
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it either under the terms of the GNU Lesser General Public
++ * License version 2.1 as published by the Free Software Foundation
++ * (the "LGPL") or, at your option, under the terms of the Mozilla
++ * Public License Version 1.1 (the "MPL"). If you do not alter this
++ * notice, a recipient may use your version of this file under either
++ * the MPL or the LGPL.
++ *
++ * You should have received a copy of the LGPL along with this library
++ * in the file COPYING-LGPL-2.1; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ * You should have received a copy of the MPL along with this library
++ * in the file COPYING-MPL-1.1
++ *
++ * The contents of this file are subject to the Mozilla Public License
++ * Version 1.1 (the "License"); you may not use this file except in
++ * compliance with the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/MPL/
++ *
++ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
++ * OF ANY KIND, either express or implied. See the LGPL or the MPL for
++ * the specific language governing rights and limitations.
++ *
++ * The Original Code is the cairo graphics library.
++ *
++ * The Initial Developer of the Original Code is Chris Wilson.
++ *
++ */
++
++#include "cairoint.h"
++
++#include "cairo-xlib-private.h"
++
++#include <fontconfig/fontconfig.h>
++
++#include <X11/Xlibint.h> /* For XESetCloseDisplay */
++#include <X11/extensions/Xrender.h>
++
++typedef int (*cairo_xlib_error_func_t) (Display *display,
++ XErrorEvent *event);
++
++struct _cairo_xlib_job {
++ cairo_xlib_job_t *next;
++ enum {
++ RESOURCE,
++ WORK
++ } type;
++ union {
++ struct {
++ cairo_xlib_notify_resource_func notify;
++ XID xid;
++ } resource;
++ struct {
++ cairo_xlib_notify_func notify;
++ void *data;
++ void (*destroy) (void *);
++ } work;
++ } func;
++};
++
++static cairo_xlib_display_t *_cairo_xlib_display_list = NULL;
++
++static void
++_cairo_xlib_call_close_display_hooks (cairo_xlib_display_t *info)
++{
++ cairo_xlib_screen_info_t *screen;
++ cairo_xlib_hook_t *hooks;
++
++ /* call all registered shutdown routines */
++ CAIRO_MUTEX_LOCK (info->mutex);
++
++ for (screen = info->screens; screen != NULL; screen = screen->next)
++ _cairo_xlib_screen_info_close_display (screen);
++
++ hooks = info->close_display_hooks;
++ while (hooks != NULL) {
++ info->close_display_hooks = NULL;
++ CAIRO_MUTEX_UNLOCK (info->mutex);
++
++ do {
++ cairo_xlib_hook_t *hook = hooks;
++ hooks = hook->next;
++
++ hook->func (info->display, hook->data);
++
++ free (hook);
++ } while (hooks != NULL);
++
++ CAIRO_MUTEX_LOCK (info->mutex);
++ hooks = info->close_display_hooks;
++ }
++ info->closed = TRUE;
++
++ CAIRO_MUTEX_UNLOCK (info->mutex);
++}
++
++cairo_xlib_display_t *
++_cairo_xlib_display_reference (cairo_xlib_display_t *info)
++{
++ if (info == NULL)
++ return NULL;
++
++ /* use our mutex until we get a real atomic inc */
++ CAIRO_MUTEX_LOCK (info->mutex);
++
++ assert (info->ref_count > 0);
++ info->ref_count++;
++
++ CAIRO_MUTEX_UNLOCK (info->mutex);
++
++ return info;
++}
++
++void
++_cairo_xlib_display_destroy (cairo_xlib_display_t *info)
++{
++ if (info == NULL)
++ return;
++
++ CAIRO_MUTEX_LOCK (info->mutex);
++ assert (info->ref_count > 0);
++ if (--info->ref_count == 0) {
++ assert (info->closed == TRUE);
++ assert (info->screens == NULL);
++
++ /* destroy all outstanding notifies */
++ while (info->workqueue != NULL) {
++ cairo_xlib_job_t *job = info->workqueue;
++ info->workqueue = job->next;
++
++ if (job->type == WORK && job->func.work.destroy != NULL)
++ job->func.work.destroy (job->func.work.data);
++
++ _cairo_freelist_free (&info->wq_freelist, job);
++ }
++ _cairo_freelist_fini (&info->wq_freelist);
++
++ CAIRO_MUTEX_UNLOCK (info->mutex);
++
++ free (info);
++ } else
++ CAIRO_MUTEX_UNLOCK (info->mutex);
++}
++
++static int
++_noop_error_handler (Display *display,
++ XErrorEvent *event)
++{
++ return False; /* return value is ignored */
++}
++static int
++_cairo_xlib_close_display (Display *dpy, XExtCodes *codes)
++{
++ cairo_xlib_display_t *info, **prev, *next;
++
++ /*
++ * Unhook from the global list
++ */
++ CAIRO_MUTEX_LOCK (_cairo_xlib_display_mutex);
++ prev = &_cairo_xlib_display_list;
++ for (info = _cairo_xlib_display_list; info; info = next) {
++ next = info->next;
++ if (info->display == dpy) {
++ cairo_xlib_error_func_t old_handler;
++
++ /* drop the list mutex whilst triggering the hooks */
++ CAIRO_MUTEX_UNLOCK (_cairo_xlib_display_mutex);
++
++ /* protect the notifies from triggering XErrors */
++ old_handler = XSetErrorHandler (_noop_error_handler);
++
++ _cairo_xlib_display_notify (info);
++ _cairo_xlib_call_close_display_hooks (info);
++
++ /* catch any that arrived before marking the display as closed */
++ _cairo_xlib_display_notify (info);
++
++ XSync (dpy, False);
++ XSetErrorHandler (old_handler);
++
++ CAIRO_MUTEX_LOCK (_cairo_xlib_display_mutex);
++ _cairo_xlib_display_destroy (info);
++ *prev = next;
++ break;
++ } else
++ prev = &info->next;
++ }
++ CAIRO_MUTEX_UNLOCK (_cairo_xlib_display_mutex);
++
++ /* Return value in accordance with requirements of
++ * XESetCloseDisplay */
++ return 0;
++}
++
++cairo_xlib_display_t *
++_cairo_xlib_display_get (Display *dpy)
++{
++ cairo_xlib_display_t *info;
++ cairo_xlib_display_t **prev;
++ XExtCodes *codes;
++
++ /* There is an apparent deadlock between this mutex and the
++ * mutex for the display, but it's actually safe. For the
++ * app to call XCloseDisplay() while any other thread is
++ * inside this function would be an error in the logic
++ * app, and the CloseDisplay hook is the only other place we
++ * acquire this mutex.
++ */
++ CAIRO_MUTEX_LOCK (_cairo_xlib_display_mutex);
++
++ for (prev = &_cairo_xlib_display_list; (info = *prev); prev = &(*prev)->next)
++ {
++ if (info->display == dpy) {
++ /*
++ * MRU the list
++ */
++ if (prev != &_cairo_xlib_display_list) {
++ *prev = info->next;
++ info->next = _cairo_xlib_display_list;
++ _cairo_xlib_display_list = info;
++ }
++ break;
++ }
++ }
++
++ if (info != NULL) {
++ info = _cairo_xlib_display_reference (info);
++ goto UNLOCK;
++ }
++
++ info = malloc (sizeof (cairo_xlib_display_t));
++ if (info == NULL)
++ goto UNLOCK;
++
++ codes = XAddExtension (dpy);
++ if (codes == NULL) {
++ free (info);
++ info = NULL;
++ goto UNLOCK;
++ }
++
++ XESetCloseDisplay (dpy, codes->extension, _cairo_xlib_close_display);
++
++ _cairo_freelist_init (&info->wq_freelist, sizeof (cairo_xlib_job_t));
++ info->ref_count = 2; /* add one for the CloseDisplay */
++ CAIRO_MUTEX_INIT (&info->mutex);
++ info->display = dpy;
++ info->screens = NULL;
++ info->workqueue = NULL;
++ info->close_display_hooks = NULL;
++ info->closed = FALSE;
++
++ info->next = _cairo_xlib_display_list;
++ _cairo_xlib_display_list = info;
++
++UNLOCK:
++ CAIRO_MUTEX_UNLOCK (_cairo_xlib_display_mutex);
++ return info;
++}
++
++cairo_bool_t
++_cairo_xlib_add_close_display_hook (Display *dpy, void (*func) (Display *, void *), void *data, const void *key)
++{
++ cairo_xlib_display_t *info;
++ cairo_xlib_hook_t *hook;
++ cairo_bool_t ret = FALSE;
++
++ info = _cairo_xlib_display_get (dpy);
++ if (info == NULL)
++ return FALSE;
++
++ hook = malloc (sizeof (cairo_xlib_hook_t));
++ if (hook != NULL) {
++ hook->func = func;
++ hook->data = data;
++ hook->key = key;
++
++ CAIRO_MUTEX_LOCK (info->mutex);
++ if (info->closed == FALSE) {
++ hook->next = info->close_display_hooks;
++ info->close_display_hooks = hook;
++ ret = TRUE;
++ }
++ CAIRO_MUTEX_UNLOCK (info->mutex);
++ }
++
++ _cairo_xlib_display_destroy (info);
++
++ return ret;
++}
++
++void
++_cairo_xlib_remove_close_display_hooks (Display *dpy, const void *key)
++{
++ cairo_xlib_display_t *info;
++ cairo_xlib_hook_t *hook, *next, **prev;
++
++ info = _cairo_xlib_display_get (dpy);
++ if (info == NULL)
++ return;
++
++ CAIRO_MUTEX_LOCK (info->mutex);
++ prev = &info->close_display_hooks;
++ for (hook = info->close_display_hooks; hook != NULL; hook = next) {
++ next = hook->next;
++ if (hook->key == key) {
++ *prev = hook->next;
++ free (hook);
++ } else
++ prev = &hook->next;
++ }
++ *prev = NULL;
++ CAIRO_MUTEX_UNLOCK (info->mutex);
++
++ _cairo_xlib_display_destroy (info);
++}
++
++void
++_cairo_xlib_display_cancel_resource (cairo_xlib_display_t *display,
++ XID xid)
++{
++ cairo_xlib_job_t *job, *next, **prev;
++
++ CAIRO_MUTEX_LOCK (display->mutex);
++ prev = &display->workqueue;
++ for (job = display->workqueue; job != NULL; job = next) {
++ next = job->next;
++ if (job->type == RESOURCE && job->func.resource.xid == xid) {
++ _cairo_freelist_free (&display->wq_freelist, job);
++
++ *prev = next;
++ break;
++ }
++ prev = &job->next;
++ }
++ CAIRO_MUTEX_UNLOCK (display->mutex);
++}
++
++static cairo_xlib_job_t *
++_cairo_xlib_display_find_resource (cairo_xlib_display_t *display, XID xid)
++{
++ cairo_xlib_job_t *job;
++
++ CAIRO_MUTEX_LOCK (display->mutex);
++ for (job = display->workqueue; job != NULL; job = job->next) {
++ if (job->type == RESOURCE && job->func.resource.xid == xid)
++ break;
++ }
++ CAIRO_MUTEX_UNLOCK (display->mutex);
++
++ return job;
++}
++
++cairo_status_t
++_cairo_xlib_display_queue_resource (cairo_xlib_display_t *display,
++ cairo_xlib_notify_resource_func notify,
++ XID xid)
++{
++ cairo_xlib_job_t *job;
++ cairo_status_t status = CAIRO_STATUS_SUCCESS;
++
++ assert (_cairo_xlib_display_find_resource (display, xid) == NULL);
++
++ job = _cairo_freelist_alloc (&display->wq_freelist);
++ if (job == NULL)
++ return CAIRO_STATUS_NO_MEMORY;
++
++ job->type = RESOURCE;
++ job->func.resource.xid = xid;
++ job->func.resource.notify = notify;
++
++ CAIRO_MUTEX_LOCK (display->mutex);
++ if (display->closed == FALSE) {
++ job->next = display->workqueue;
++ display->workqueue = job;
++ } else {
++ _cairo_freelist_free (&display->wq_freelist, job);
++ job = NULL;
++ status = CAIRO_STATUS_NO_MEMORY;
++ }
++ CAIRO_MUTEX_UNLOCK (display->mutex);
++
++ return status;
++}
++
++void
++_cairo_xlib_display_cancel_work (cairo_xlib_display_t *display,
++ void *data)
++{
++ cairo_xlib_job_t *job, *next, **prev;
++
++ CAIRO_MUTEX_LOCK (display->mutex);
++ prev = &display->workqueue;
++ for (job = display->workqueue; job != NULL; job = next) {
++ next = job->next;
++ if (job->type == WORK && job->func.work.data == data) {
++ if (job->func.work.destroy != NULL)
++ job->func.work.destroy (job->func.work.data);
++ _cairo_freelist_free (&display->wq_freelist, job);
++
++ *prev = next;
++ break;
++ }
++ prev = &job->next;
++ }
++ CAIRO_MUTEX_UNLOCK (display->mutex);
++}
++
++cairo_status_t
++_cairo_xlib_display_queue_work (cairo_xlib_display_t *display,
++ cairo_xlib_notify_func notify,
++ void *data,
++ void (*destroy) (void *))
++{
++ cairo_xlib_job_t *job;
++ cairo_status_t status = CAIRO_STATUS_SUCCESS;
++
++ job = _cairo_freelist_alloc (&display->wq_freelist);
++ if (job == NULL)
++ return CAIRO_STATUS_NO_MEMORY;
++
++ job->type = WORK;
++ job->func.work.data = data;
++ job->func.work.notify = notify;
++ job->func.work.destroy = destroy;
++
++ CAIRO_MUTEX_LOCK (display->mutex);
++ if (display->closed == FALSE) {
++ job->next = display->workqueue;
++ display->workqueue = job;
++ } else {
++ _cairo_freelist_free (&display->wq_freelist, job);
++ job = NULL;
++ status = CAIRO_STATUS_NO_MEMORY;
++ }
++ CAIRO_MUTEX_UNLOCK (display->mutex);
++
++ return status;
++}
++
++void
++_cairo_xlib_display_notify (cairo_xlib_display_t *display)
++{
++ cairo_xlib_job_t *jobs, *job;
++
++ CAIRO_MUTEX_LOCK (display->mutex);
++ jobs = display->workqueue;
++ while (jobs != NULL) {
++ display->workqueue = NULL;
++ CAIRO_MUTEX_UNLOCK (display->mutex);
++
++ /* reverse the list to obtain FIFO order */
++ job = NULL;
++ do {
++ cairo_xlib_job_t *next = jobs->next;
++ jobs->next = job;
++ job = jobs;
++ jobs = next;
++ } while (jobs != NULL);
++ jobs = job;
++
++ do {
++ job = jobs;
++ jobs = job->next;
++
++ switch (job->type){
++ case WORK:
++ job->func.work.notify (display->display, job->func.work.data);
++ if (job->func.work.destroy != NULL)
++ job->func.work.destroy (job->func.work.data);
++ break;
++
++ case RESOURCE:
++ job->func.resource.notify (display->display,
++ job->func.resource.xid);
++ break;
++ }
++
++ _cairo_freelist_free (&display->wq_freelist, job);
++ } while (jobs != NULL);
++
++ CAIRO_MUTEX_LOCK (display->mutex);
++ jobs = display->workqueue;
++ }
++ CAIRO_MUTEX_UNLOCK (display->mutex);
++}
+--- a/src/cairo-xlib-private.h
++++ b/src/cairo-xlib-private.h
+@@ -35,30 +35,82 @@
+
+ #include "cairoint.h"
+ #include "cairo-xlib.h"
++#include "cairo-freelist-private.h"
+
++typedef struct _cairo_xlib_display cairo_xlib_display_t;
+ typedef struct _cairo_xlib_screen_info cairo_xlib_screen_info_t;
+ typedef struct _cairo_xlib_hook cairo_xlib_hook_t;
++typedef struct _cairo_xlib_job cairo_xlib_job_t;
++typedef void (*cairo_xlib_notify_func) (Display *, void *);
++typedef void (*cairo_xlib_notify_resource_func) (Display *, XID);
+
+ struct _cairo_xlib_hook {
+ cairo_xlib_hook_t *next;
+ void (*func) (Display *display, void *data);
+ void *data;
+- void *key;
++ const void *key;
++};
++
++struct _cairo_xlib_display {
++ cairo_xlib_display_t *next;
++ unsigned int ref_count;
++ cairo_mutex_t mutex;
++
++ Display *display;
++ cairo_xlib_screen_info_t *screens;
++
++ cairo_xlib_job_t *workqueue;
++ cairo_freelist_t wq_freelist;
++
++ cairo_xlib_hook_t *close_display_hooks;
++ unsigned int closed :1;
+ };
+
+ struct _cairo_xlib_screen_info {
+ cairo_xlib_screen_info_t *next;
+ unsigned int ref_count;
+
+- Display *display;
++ cairo_xlib_display_t *display;
+ Screen *screen;
+ cairo_bool_t has_render;
+
+ cairo_font_options_t font_options;
+
+- cairo_xlib_hook_t *close_display_hooks;
++ GC gc[6];
+ };
+
++cairo_private cairo_xlib_display_t *
++_cairo_xlib_display_get (Display *display);
++
++cairo_private cairo_xlib_display_t *
++_cairo_xlib_display_reference (cairo_xlib_display_t *info);
++cairo_private void
++_cairo_xlib_display_destroy (cairo_xlib_display_t *info);
++
++cairo_private cairo_bool_t
++_cairo_xlib_add_close_display_hook (Display *display, void (*func) (Display *, void *), void *data, const void *key);
++cairo_private void
++_cairo_xlib_remove_close_display_hooks (Display *display, const void *key);
++
++cairo_private cairo_status_t
++_cairo_xlib_display_queue_work (cairo_xlib_display_t *display,
++ cairo_xlib_notify_func notify,
++ void *data,
++ void (*destroy)(void *));
++cairo_private cairo_status_t
++_cairo_xlib_display_queue_resource (cairo_xlib_display_t *display,
++ cairo_xlib_notify_resource_func notify,
++ XID resource);
++cairo_private void
++_cairo_xlib_display_cancel_work (cairo_xlib_display_t *display,
++ void *data);
++cairo_private void
++_cairo_xlib_display_cancel_resource (cairo_xlib_display_t *display,
++ XID resource);
++
++cairo_private void
++_cairo_xlib_display_notify (cairo_xlib_display_t *display);
++
+ cairo_private cairo_xlib_screen_info_t *
+ _cairo_xlib_screen_info_get (Display *display, Screen *screen);
+
+@@ -67,10 +119,14 @@ _cairo_xlib_screen_info_reference (cairo
+ cairo_private void
+ _cairo_xlib_screen_info_destroy (cairo_xlib_screen_info_t *info);
+
+-cairo_private cairo_bool_t
+-_cairo_xlib_add_close_display_hook (Display *display, void (*func) (Display *, void *), void *data, void *key);
+ cairo_private void
+-_cairo_xlib_remove_close_display_hook (Display *display, void *key);
++_cairo_xlib_screen_info_close_display (cairo_xlib_screen_info_t *info);
++
++
++cairo_private GC
++_cairo_xlib_screen_get_gc (cairo_xlib_screen_info_t *info, int depth);
++cairo_private void
++_cairo_xlib_screen_put_gc (cairo_xlib_screen_info_t *info, int depth, GC gc);
+
+ #if CAIRO_HAS_XLIB_XRENDER_SURFACE
+
+--- a/src/cairo-xlib-screen.c
++++ b/src/cairo-xlib-screen.c
+@@ -58,7 +58,6 @@
+
+ #include <fontconfig/fontconfig.h>
+
+-#include <X11/Xlibint.h> /* For XESetCloseDisplay */
+ #include <X11/extensions/Xrender.h>
+
+ static int
+@@ -133,7 +132,7 @@ get_integer_default (Display *dpy,
+ #endif
+
+ static void
+-_cairo_xlib_init_screen_font_options (cairo_xlib_screen_info_t *info)
++_cairo_xlib_init_screen_font_options (Display *dpy, cairo_xlib_screen_info_t *info)
+ {
+ cairo_bool_t xft_hinting;
+ cairo_bool_t xft_antialias;
+@@ -143,23 +142,23 @@ _cairo_xlib_init_screen_font_options (ca
+ cairo_subpixel_order_t subpixel_order;
+ cairo_hint_style_t hint_style;
+
+- if (!get_boolean_default (info->display, "antialias", &xft_antialias))
++ if (!get_boolean_default (dpy, "antialias", &xft_antialias))
+ xft_antialias = TRUE;
+
+- if (!get_boolean_default (info->display, "hinting", &xft_hinting))
++ if (!get_boolean_default (dpy, "hinting", &xft_hinting))
+ xft_hinting = TRUE;
+
+- if (!get_integer_default (info->display, "hintstyle", &xft_hintstyle))
++ if (!get_integer_default (dpy, "hintstyle", &xft_hintstyle))
+ xft_hintstyle = FC_HINT_FULL;
+
+- if (!get_integer_default (info->display, "rgba", &xft_rgba))
++ if (!get_integer_default (dpy, "rgba", &xft_rgba))
+ {
+ xft_rgba = FC_RGBA_UNKNOWN;
+
+ #if RENDER_MAJOR > 0 || RENDER_MINOR >= 6
+ if (info->has_render)
+ {
+- int render_order = XRenderQuerySubpixelOrder (info->display,
++ int render_order = XRenderQuerySubpixelOrder (dpy,
+ XScreenNumberOfScreen (info->screen));
+
+ switch (render_order)
+@@ -243,285 +242,165 @@ _cairo_xlib_init_screen_font_options (ca
+ cairo_font_options_set_hint_metrics (&info->font_options, CAIRO_HINT_METRICS_ON);
+ }
+
+-static cairo_xlib_screen_info_t *_cairo_xlib_screen_list = NULL;
+-
+-/* NOTE: This function must be called with _cairo_xlib_screen_mutex held. */
+-static void
+-_cairo_xlib_call_close_display_hooks (cairo_xlib_screen_info_t *info)
+-{
+- /* call all registered shutdown routines */
+- while (info->close_display_hooks != NULL) {
+- cairo_xlib_hook_t *hooks = info->close_display_hooks;
+- info->close_display_hooks = NULL;
+-
+- /* drop the list mutex whilst calling the hooks */
+- CAIRO_MUTEX_UNLOCK (_cairo_xlib_screen_mutex);
+- do {
+- cairo_xlib_hook_t *hook = hooks;
+- hooks = hook->next;
+-
+- hook->func (info->display, hook->data);
+-
+- free (hook);
+- } while (hooks != NULL);
+- CAIRO_MUTEX_LOCK (_cairo_xlib_screen_mutex);
+- }
+-}
+-
+-static void
+-_cairo_xlib_screen_info_reference_lock_held (cairo_xlib_screen_info_t *info)
+-{
+- assert (info->ref_count > 0);
+- info->ref_count++;
+-}
+-
+ cairo_xlib_screen_info_t *
+ _cairo_xlib_screen_info_reference (cairo_xlib_screen_info_t *info)
+ {
+ if (info == NULL)
+ return NULL;
+
+- /* use our global mutex until we get a real atomic inc */
+- CAIRO_MUTEX_LOCK (_cairo_xlib_screen_mutex);
+-
+- _cairo_xlib_screen_info_reference_lock_held (info);
+-
+- CAIRO_MUTEX_UNLOCK (_cairo_xlib_screen_mutex);
++ assert (info->ref_count > 0);
++ info->ref_count++;
+
+ return info;
+ }
+
+-static void
+-_cairo_xlib_screen_info_destroy_lock_held (cairo_xlib_screen_info_t *info)
++void
++_cairo_xlib_screen_info_close_display (cairo_xlib_screen_info_t *info)
+ {
+- assert (info->ref_count > 0);
+- if (--info->ref_count)
+- return;
++ int i;
+
+- _cairo_xlib_call_close_display_hooks (info);
+- free (info);
++ for (i = 0; i < ARRAY_LENGTH (info->gc); i++) {
++ if (info->gc[i] != NULL) {
++ XFreeGC (info->display->display, info->gc[i]);
++ info->gc[i] = NULL;
++ }
++ }
+ }
+
+ void
+ _cairo_xlib_screen_info_destroy (cairo_xlib_screen_info_t *info)
+ {
++ cairo_xlib_screen_info_t **prev;
++ cairo_xlib_screen_info_t *list;
++
+ if (info == NULL)
+ return;
+
+- CAIRO_MUTEX_LOCK (_cairo_xlib_screen_mutex);
+-
+- _cairo_xlib_screen_info_destroy_lock_held (info);
+-
+- CAIRO_MUTEX_UNLOCK (_cairo_xlib_screen_mutex);
+-}
+-
+-static int
+-_cairo_xlib_close_display (Display *dpy, XExtCodes *codes)
+-{
+- cairo_xlib_screen_info_t *info, **prev, *next;
++ assert (info->ref_count > 0);
++ if (--info->ref_count)
++ return;
+
+- /*
+- * Unhook from the global list
+- */
+- CAIRO_MUTEX_LOCK (_cairo_xlib_screen_mutex);
+-
+- prev = &_cairo_xlib_screen_list;
+- for (info = _cairo_xlib_screen_list; info; info = next) {
+- next = info->next;
+- if (info->display == dpy) {
+- /* trigger the hooks explicitly as we know the display is closing */
+- _cairo_xlib_call_close_display_hooks (info);
+- _cairo_xlib_screen_info_destroy_lock_held (info);
+- *prev = next;
+- } else {
+- prev = &info->next;
++ CAIRO_MUTEX_LOCK (info->display->mutex);
++ for (prev = &info->display->screens; (list = *prev); prev = &list->next) {
++ if (list == info) {
++ *prev = info->next;
++ break;
+ }
+ }
+- *prev = NULL;
+- CAIRO_MUTEX_UNLOCK (_cairo_xlib_screen_mutex);
+-
+- /* Return value in accordance with requirements of
+- * XESetCloseDisplay */
+- return 0;
+-}
+-
+-static void
+-_cairo_xlib_screen_info_reset (void)
+-{
+- /*
+- * Delete everything in the list.
+- */
+- CAIRO_MUTEX_LOCK (_cairo_xlib_screen_mutex);
++ assert (list != NULL);
++ CAIRO_MUTEX_UNLOCK (info->display->mutex);
+
+- while (_cairo_xlib_screen_list != NULL) {
+- cairo_xlib_screen_info_t *info = _cairo_xlib_screen_list;
+- _cairo_xlib_screen_list = info->next;
+- _cairo_xlib_screen_info_destroy_lock_held (info);
+- }
++ _cairo_xlib_screen_info_close_display (info);
+
+- CAIRO_MUTEX_UNLOCK (_cairo_xlib_screen_mutex);
++ _cairo_xlib_display_destroy (info->display);
+
++ free (info);
+ }
+
+-static cairo_xlib_screen_info_t *
+-_cairo_xlib_screen_info_get_lock_held (Display *dpy, Screen *screen)
++cairo_xlib_screen_info_t *
++_cairo_xlib_screen_info_get (Display *dpy, Screen *screen)
+ {
+- cairo_xlib_screen_info_t *info;
+- cairo_xlib_screen_info_t **prev;
+- int event_base, error_base;
+- XExtCodes *codes;
+- cairo_bool_t seen_display = FALSE;
++ cairo_xlib_display_t *display;
++ cairo_xlib_screen_info_t *info = NULL, **prev;
+
+- for (prev = &_cairo_xlib_screen_list; (info = *prev); prev = &(*prev)->next)
+- {
+- if (info->display == dpy) {
+- seen_display = TRUE;
+- if (info->screen == screen) {
+- /*
+- * MRU the list
+- */
+- if (prev != &_cairo_xlib_screen_list) {
+- *prev = info->next;
+- info->next = _cairo_xlib_screen_list;
+- _cairo_xlib_screen_list = info;
+- }
+- break;
+- }
+- }
+- }
+-
+- if (info)
+- return info;
+-
+- info = malloc (sizeof (cairo_xlib_screen_info_t));
+- if (!info)
++ display = _cairo_xlib_display_get (dpy);
++ if (display == NULL)
+ return NULL;
+
+- if (!seen_display) {
+- codes = XAddExtension (dpy);
+- if (!codes) {
+- free (info);
+- return NULL;
+- }
++ CAIRO_MUTEX_LOCK (display->mutex);
++ if (display->closed) {
++ CAIRO_MUTEX_UNLOCK (display->mutex);
++ goto DONE;
++ }
+
+- XESetCloseDisplay (dpy, codes->extension, _cairo_xlib_close_display);
++ for (prev = &display->screens; (info = *prev); prev = &(*prev)->next) {
++ if (info->screen == screen) {
++ /*
++ * MRU the list
++ */
++ if (prev != &display->screens) {
++ *prev = info->next;
++ info->next = display->screens;
++ display->screens = info;
++ }
++ break;
++ }
+ }
++ CAIRO_MUTEX_UNLOCK (display->mutex);
+
+- info->ref_count = 1;
+- info->display = dpy;
+- info->screen = screen;
+- info->close_display_hooks = NULL;
+- info->has_render = FALSE;
+- _cairo_font_options_init_default (&info->font_options);
++ if (info != NULL) {
++ info = _cairo_xlib_screen_info_reference (info);
++ } else {
++ info = malloc (sizeof (cairo_xlib_screen_info_t));
++ if (info != NULL) {
++ info->ref_count = 1;
++ info->display = _cairo_xlib_display_reference (display);
++ info->screen = screen;
++ info->has_render = FALSE;
++ _cairo_font_options_init_default (&info->font_options);
++ memset (info->gc, 0, sizeof (info->gc));
++
++ if (screen) {
++ int event_base, error_base;
++ info->has_render = (XRenderQueryExtension (dpy, &event_base, &error_base) &&
++ (XRenderFindVisualFormat (dpy, DefaultVisual (dpy, DefaultScreen (dpy))) != 0));
++ _cairo_xlib_init_screen_font_options (dpy, info);
++ }
+
+- if (screen) {
+- info->has_render = (XRenderQueryExtension (dpy, &event_base, &error_base) &&
+- (XRenderFindVisualFormat (dpy, DefaultVisual (dpy, DefaultScreen (dpy))) != 0));
+- _cairo_xlib_init_screen_font_options (info);
++ CAIRO_MUTEX_LOCK (display->mutex);
++ info->next = display->screens;
++ display->screens = info;
++ CAIRO_MUTEX_UNLOCK (display->mutex);
++ }
+ }
+
+- info->next = _cairo_xlib_screen_list;
+- _cairo_xlib_screen_list = info;
++DONE:
++ _cairo_xlib_display_destroy (display);
+
+ return info;
+ }
+-cairo_xlib_screen_info_t *
+-_cairo_xlib_screen_info_get (Display *dpy, Screen *screen)
+-{
+- cairo_xlib_screen_info_t *info;
+
+- /* There is an apparent deadlock between this mutex and the
+- * mutex for the display, but it's actually safe. For the
+- * app to call XCloseDisplay() while any other thread is
+- * inside this function would be an error in the logic
+- * app, and the CloseDisplay hook is the only other place we
+- * acquire this mutex.
+- */
+- CAIRO_MUTEX_LOCK (_cairo_xlib_screen_mutex);
+-
+- info = _cairo_xlib_screen_info_get_lock_held (dpy, screen);
+- if (info != NULL)
+- _cairo_xlib_screen_info_reference_lock_held (info);
+-
+- CAIRO_MUTEX_UNLOCK (_cairo_xlib_screen_mutex);
+-
+- return info;
++static int
++depth_to_index (int depth)
++{
++ switch(depth){
++ case 1: return 0;
++ case 8: return 1;
++ case 15: return 2;
++ case 16: return 3;
++ case 24: return 4;
++ case 32: return 5;
++ }
++ return 0;
+ }
+
+-cairo_bool_t
+-_cairo_xlib_add_close_display_hook (Display *dpy, void (*func) (Display *, void *), void *data, void *key)
++GC
++_cairo_xlib_screen_get_gc (cairo_xlib_screen_info_t *info, int depth)
+ {
+- cairo_xlib_screen_info_t *info;
+- cairo_xlib_hook_t *hook;
+- cairo_xlib_hook_t **prev;
+- cairo_bool_t success = FALSE;
+
+- CAIRO_MUTEX_LOCK (_cairo_xlib_screen_mutex);
++ GC gc;
+
+- info = _cairo_xlib_screen_info_get_lock_held (dpy, NULL);
+- if (!info)
+- goto unlock;
++ depth = depth_to_index (depth);
+
+- for (prev = &info->close_display_hooks; (hook = *prev); prev = &hook->next)
+- {
+- if (hook->key == key) {
+- /*
+- * MRU the list
+- */
+- if (prev != &info->close_display_hooks) {
+- *prev = hook->next;
+- hook->next = info->close_display_hooks;
+- info->close_display_hooks = hook;
+- }
+- break;
+- }
+- }
++ gc = info->gc[depth];
++ info->gc[depth] = NULL;
+
+- if (!hook) {
+- hook = malloc (sizeof (cairo_xlib_hook_t));
+- if (!hook)
+- goto unlock;
+- hook->func = func;
+- hook->data = data;
+- hook->key = key;
+- hook->next = info->close_display_hooks;
+- info->close_display_hooks = hook;
+- }
+-
+- success = TRUE;
+- unlock:
+- CAIRO_MUTEX_UNLOCK (_cairo_xlib_screen_mutex);
+- return success;
++ return gc;
+ }
+
+ void
+-_cairo_xlib_remove_close_display_hook (Display *dpy, void *key)
++_cairo_xlib_screen_put_gc (cairo_xlib_screen_info_t *info, int depth, GC gc)
+ {
+- cairo_xlib_screen_info_t *info;
+- cairo_xlib_hook_t *hook;
+- cairo_xlib_hook_t **prev;
+-
+- CAIRO_MUTEX_LOCK (_cairo_xlib_screen_mutex);
++ depth = depth_to_index (depth);
+
+- info = _cairo_xlib_screen_info_get_lock_held (dpy, NULL);
+- if (!info)
+- goto unlock;
+-
+- for (prev = &info->close_display_hooks; (hook = *prev); prev = &hook->next)
+- {
+- if (hook->key == key) {
+- *prev = hook->next;
+- free (hook);
+- break;
+- }
++ if (info->gc[depth] != NULL) {
++ cairo_status_t status;
++ status = _cairo_xlib_display_queue_work (info->display,
++ (cairo_xlib_notify_func) XFreeGC,
++ info->gc[depth],
++ NULL);
++ (void) status;
+ }
+
+-unlock:
+- CAIRO_MUTEX_UNLOCK (_cairo_xlib_screen_mutex);
+-}
+-
+-void
+-_cairo_xlib_screen_reset_static_data (void)
+-{
+- _cairo_xlib_screen_info_reset ();
++ info->gc[depth] = gc;
+ }
+--- a/src/cairo-xlib-surface.c
++++ b/src/cairo-xlib-surface.c
+@@ -127,8 +127,17 @@ struct _cairo_xlib_surface {
+ int num_clip_rects;
+
+ XRenderPictFormat *xrender_format;
++ cairo_filter_t filter;
++ int repeat;
++ XTransform xtransform;
+ };
+
++static const XTransform identity = { {
++ { 1 << 16, 0x00000, 0x00000 },
++ { 0x00000, 1 << 16, 0x00000 },
++ { 0x00000, 0x00000, 1 << 16 },
++} };
++
+ #define CAIRO_SURFACE_RENDER_AT_LEAST(surface, major, minor) \
+ (((surface)->render_major > major) || \
+ (((surface)->render_major == major) && ((surface)->render_minor >= minor)))
+@@ -281,6 +290,8 @@ _cairo_xlib_surface_create_similar (void
+ cairo_xlib_surface_t *surface;
+ Pixmap pix;
+
++ _cairo_xlib_display_notify (src->screen_info->display);
++
+ /* Start by examining the surface's XRenderFormat, or if it
+ * doesn't have one, then look one up through its visual (in the
+ * case of a bitmap, it won't even have that). */
+@@ -322,21 +333,75 @@ _cairo_xlib_surface_create_similar (void
+ return &surface->base;
+ }
+
++static void
++_cairo_xlib_reset_clip_mask (Display *dpy, GC gc)
++{
++ XSetClipMask(dpy, gc, None);
++}
++
+ static cairo_status_t
+ _cairo_xlib_surface_finish (void *abstract_surface)
+ {
+ cairo_xlib_surface_t *surface = abstract_surface;
+- if (surface->dst_picture != None)
+- XRenderFreePicture (surface->dpy, surface->dst_picture);
+-
+- if (surface->src_picture != None)
+- XRenderFreePicture (surface->dpy, surface->src_picture);
+-
+- if (surface->owns_pixmap)
+- XFreePixmap (surface->dpy, surface->drawable);
+-
+- if (surface->gc != NULL)
+- XFreeGC (surface->dpy, surface->gc);
++ cairo_xlib_display_t *display = surface->screen_info ?
++ surface->screen_info->display :
++ NULL;
++ cairo_status_t status = CAIRO_STATUS_SUCCESS;
++
++ if (surface->dst_picture != None) {
++ cairo_status_t status2;
++ assert (display != NULL);
++ status2 = _cairo_xlib_display_queue_resource (display,
++ XRenderFreePicture,
++ surface->dst_picture);
++ if (status2 == CAIRO_STATUS_SUCCESS)
++ surface->dst_picture = None;
++ else if (status == CAIRO_STATUS_SUCCESS)
++ status = status2;
++ }
++
++ if (surface->src_picture != None) {
++ cairo_status_t status2;
++ assert (display != NULL);
++ status2 = _cairo_xlib_display_queue_resource (display,
++ XRenderFreePicture,
++ surface->src_picture);
++ if (status2 == CAIRO_STATUS_SUCCESS)
++ surface->src_picture = None;
++ else if (status == CAIRO_STATUS_SUCCESS)
++ status = status2;
++ }
++
++ if (surface->owns_pixmap) {
++ cairo_status_t status2;
++ assert (display != NULL);
++ status2 = _cairo_xlib_display_queue_resource (display,
++ (cairo_xlib_notify_resource_func) XFreePixmap,
++ surface->drawable);
++ if (status2 == CAIRO_STATUS_SUCCESS) {
++ surface->owns_pixmap = FALSE;
++ surface->drawable = None;
++ } else if (status == CAIRO_STATUS_SUCCESS)
++ status = status2;
++ }
++
++ if (surface->gc != NULL) {
++ _cairo_xlib_screen_put_gc (surface->screen_info,
++ surface->depth,
++ surface->gc);
++ if (surface->have_clip_rects) {
++ cairo_status_t status2;
++ assert (display != NULL);
++ status2 = _cairo_xlib_display_queue_work (display,
++ (cairo_xlib_notify_func) _cairo_xlib_reset_clip_mask,
++ surface->gc,
++ NULL);
++ if (status2 == CAIRO_STATUS_SUCCESS)
++ surface->gc = NULL;
++ else if (status == CAIRO_STATUS_SUCCESS)
++ status = status2;
++ }
++ }
+
+ if (surface->clip_rects != NULL)
+ free (surface->clip_rects);
+@@ -344,9 +409,12 @@ _cairo_xlib_surface_finish (void *abstra
+ if (surface->screen_info != NULL)
+ _cairo_xlib_screen_info_destroy (surface->screen_info);
+
+- surface->dpy = NULL;
++ if (surface->dpy != NULL) {
++ _cairo_xlib_remove_close_display_hooks (surface->dpy, surface);
++ surface->dpy = NULL;
++ }
+
+- return CAIRO_STATUS_SUCCESS;
++ return status;
+ }
+
+ static int
+@@ -747,11 +815,15 @@ _cairo_xlib_surface_ensure_gc (cairo_xli
+ if (surface->gc)
+ return CAIRO_STATUS_SUCCESS;
+
+- gcv.graphics_exposures = False;
+- surface->gc = XCreateGC (surface->dpy, surface->drawable,
+- GCGraphicsExposures, &gcv);
+- if (!surface->gc)
+- return CAIRO_STATUS_NO_MEMORY;
++ surface->gc = _cairo_xlib_screen_get_gc (surface->screen_info,
++ surface->depth);
++ if (surface->gc == NULL) {
++ gcv.graphics_exposures = False;
++ surface->gc = XCreateGC (surface->dpy, surface->drawable,
++ GCGraphicsExposures, &gcv);
++ if (!surface->gc)
++ return CAIRO_STATUS_NO_MEMORY;
++ }
+
+ _cairo_xlib_surface_set_gc_clip_rects (surface);
+
+@@ -814,6 +886,8 @@ _cairo_xlib_surface_acquire_source_image
+ cairo_image_surface_t *image;
+ cairo_status_t status;
+
++ _cairo_xlib_display_notify (surface->screen_info->display);
++
+ status = _get_image_surface (surface, NULL, &image, NULL);
+ if (status)
+ return status;
+@@ -843,6 +917,8 @@ _cairo_xlib_surface_acquire_dest_image (
+ cairo_image_surface_t *image;
+ cairo_status_t status;
+
++ _cairo_xlib_display_notify (surface->screen_info->display);
++
+ status = _get_image_surface (surface, interest_rect, &image, image_rect_out);
+ if (status)
+ return status;
+@@ -894,6 +970,8 @@ _cairo_xlib_surface_clone_similar (void
+ cairo_xlib_surface_t *clone;
+ cairo_status_t status;
+
++ _cairo_xlib_display_notify (surface->screen_info->display);
++
+ if (src->backend == surface->base.backend ) {
+ cairo_xlib_surface_t *xlib_src = (cairo_xlib_surface_t *)src;
+
+@@ -952,19 +1030,17 @@ _cairo_xlib_surface_set_matrix (cairo_xl
+
+ if (!CAIRO_SURFACE_RENDER_HAS_PICTURE_TRANSFORM (surface))
+ {
+- static const XTransform identity = { {
+- { 1 << 16, 0x00000, 0x00000 },
+- { 0x00000, 1 << 16, 0x00000 },
+- { 0x00000, 0x00000, 1 << 16 },
+- } };
+-
+ if (memcmp (&xtransform, &identity, sizeof (XTransform)) == 0)
+ return CAIRO_STATUS_SUCCESS;
+
+ return CAIRO_INT_STATUS_UNSUPPORTED;
+ }
+
++ if (memcmp (&xtransform, &surface->xtransform, sizeof (XTransform)) == 0)
++ return CAIRO_STATUS_SUCCESS;
++
+ XRenderSetPictureTransform (surface->dpy, surface->src_picture, &xtransform);
++ surface->xtransform = xtransform;
+
+ return CAIRO_STATUS_SUCCESS;
+ }
+@@ -978,6 +1054,9 @@ _cairo_xlib_surface_set_filter (cairo_xl
+ if (!surface->src_picture)
+ return CAIRO_STATUS_SUCCESS;
+
++ if (surface->filter == filter)
++ return CAIRO_STATUS_SUCCESS;
++
+ if (!CAIRO_SURFACE_RENDER_HAS_FILTERS (surface))
+ {
+ if (filter == CAIRO_FILTER_FAST || filter == CAIRO_FILTER_NEAREST)
+@@ -1015,6 +1094,7 @@ _cairo_xlib_surface_set_filter (cairo_xl
+
+ XRenderSetPictureFilter (surface->dpy, surface->src_picture,
+ (char *) render_filter, NULL, 0);
++ surface->filter = filter;
+
+ return CAIRO_STATUS_SUCCESS;
+ }
+@@ -1028,10 +1108,14 @@ _cairo_xlib_surface_set_repeat (cairo_xl
+ if (!surface->src_picture)
+ return CAIRO_STATUS_SUCCESS;
+
++ if (surface->repeat == repeat)
++ return CAIRO_STATUS_SUCCESS;
++
+ mask = CPRepeat;
+ pa.repeat = repeat;
+
+ XRenderChangePicture (surface->dpy, surface->src_picture, mask, &pa);
++ surface->repeat = repeat;
+
+ return CAIRO_STATUS_SUCCESS;
+ }
+@@ -1327,6 +1411,8 @@ _cairo_xlib_surface_composite (cairo_ope
+ int itx, ity;
+ cairo_bool_t is_integer_translation;
+
++ _cairo_xlib_display_notify (dst->screen_info->display);
++
+ if (!CAIRO_SURFACE_RENDER_HAS_COMPOSITE (dst))
+ return CAIRO_INT_STATUS_UNSUPPORTED;
+
+@@ -1466,6 +1552,8 @@ _cairo_xlib_surface_fill_rectangles (voi
+ cairo_xlib_surface_t *surface = abstract_surface;
+ XRenderColor render_color;
+
++ _cairo_xlib_display_notify (surface->screen_info->display);
++
+ if (!CAIRO_SURFACE_RENDER_HAS_FILL_RECTANGLE (surface))
+ return CAIRO_INT_STATUS_UNSUPPORTED;
+
+@@ -1598,6 +1686,8 @@ _cairo_xlib_surface_composite_trapezoids
+ int render_src_x, render_src_y;
+ XRenderPictFormat *pict_format;
+
++ _cairo_xlib_display_notify (dst->screen_info->display);
++
+ if (!CAIRO_SURFACE_RENDER_HAS_TRAPEZOIDS (dst))
+ return CAIRO_INT_STATUS_UNSUPPORTED;
+
+@@ -1707,6 +1797,8 @@ _cairo_xlib_surface_set_clip_region (voi
+ {
+ cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *) abstract_surface;
+
++ _cairo_xlib_display_notify (surface->screen_info->display);
++
+ if (surface->clip_rects) {
+ free (surface->clip_rects);
+ surface->clip_rects = NULL;
+@@ -1793,6 +1885,16 @@ static void
+ _cairo_xlib_surface_scaled_glyph_fini (cairo_scaled_glyph_t *scaled_glyph,
+ cairo_scaled_font_t *scaled_font);
+
++static cairo_bool_t
++_cairo_xlib_surface_is_compatible (void *surface_a,
++ void *surface_b)
++{
++ cairo_xlib_surface_t *a = (cairo_xlib_surface_t *) surface_a;
++ cairo_xlib_surface_t *b = (cairo_xlib_surface_t *) surface_b;
++
++ return _cairo_xlib_surface_same_screen (a, b);
++}
++
+ static const cairo_surface_backend_t cairo_xlib_surface_backend = {
+ CAIRO_SURFACE_TYPE_XLIB,
+ _cairo_xlib_surface_create_similar,
+@@ -1822,7 +1924,8 @@ static const cairo_surface_backend_t cai
+ NULL, /* stroke */
+ NULL, /* fill */
+ _cairo_xlib_surface_show_glyphs,
+- NULL /* snapshot */
++ NULL, /* snapshot */
++ _cairo_xlib_surface_is_compatible,
+ };
+
+ /**
+@@ -1839,6 +1942,44 @@ _cairo_surface_is_xlib (cairo_surface_t
+ return surface->backend == &cairo_xlib_surface_backend;
+ }
+
++static void
++_cairo_xlib_surface_detach_display (Display *dpy, void *data)
++{
++ cairo_xlib_surface_t *surface = data;
++
++ surface->dpy = NULL;
++
++ if (surface->dst_picture != None) {
++ XRenderFreePicture (dpy, surface->dst_picture);
++ _cairo_xlib_display_cancel_resource (surface->screen_info->display,
++ surface->dst_picture);
++ surface->dst_picture = None;
++ }
++
++ if (surface->src_picture != None) {
++ XRenderFreePicture (dpy, surface->src_picture);
++ _cairo_xlib_display_cancel_resource (surface->screen_info->display,
++ surface->src_picture);
++ surface->src_picture = None;
++ }
++
++ if (surface->owns_pixmap) {
++ XFreePixmap (dpy, surface->drawable);
++ _cairo_xlib_display_cancel_resource (surface->screen_info->display,
++ surface->drawable);
++ surface->drawable = None;
++ surface->owns_pixmap = FALSE;
++ }
++
++ if (surface->gc != NULL) {
++ assert (surface->screen_info != NULL);
++ XFreeGC (dpy, surface->gc);
++ _cairo_xlib_display_cancel_work (surface->screen_info->display,
++ surface->gc);
++ surface->gc = NULL;
++ }
++}
++
+ static cairo_surface_t *
+ _cairo_xlib_surface_create_internal (Display *dpy,
+ Drawable drawable,
+@@ -1865,6 +2006,14 @@ _cairo_xlib_surface_create_internal (Dis
+ return (cairo_surface_t*) &_cairo_surface_nil;
+ }
+
++ if (! _cairo_xlib_add_close_display_hook (dpy,
++ _cairo_xlib_surface_detach_display, surface, surface)) {
++ free (surface);
++ _cairo_xlib_screen_info_destroy (screen_info);
++ _cairo_error (CAIRO_STATUS_NO_MEMORY);
++ return (cairo_surface_t*) &_cairo_surface_nil;
++ }
++
+ if (xrender_format) {
+ depth = xrender_format->depth;
+ } else if (visual) {
+@@ -1935,6 +2084,9 @@ _cairo_xlib_surface_create_internal (Dis
+ surface->visual = visual;
+ surface->xrender_format = xrender_format;
+ surface->depth = depth;
++ surface->filter = (cairo_filter_t) -1; /* XXX XRender default? */
++ surface->repeat = FALSE;
++ surface->xtransform = identity;
+
+ surface->have_clip_rects = FALSE;
+ surface->clip_rects = NULL;
+@@ -2125,14 +2277,26 @@ cairo_xlib_surface_set_drawable (cairo_s
+ return;
+
+ if (surface->drawable != drawable) {
+- if (surface->dst_picture)
+- XRenderFreePicture (surface->dpy, surface->dst_picture);
++ if (surface->dst_picture != None) {
++ cairo_status_t status;
++ status = _cairo_xlib_display_queue_resource (
++ surface->screen_info->display,
++ XRenderFreePicture,
++ surface->dst_picture);
++ (void) status;
++ surface->dst_picture = None;
++ }
++
++ if (surface->src_picture != None) {
++ cairo_status_t status;
++ status = _cairo_xlib_display_queue_resource (
++ surface->screen_info->display,
++ XRenderFreePicture,
++ surface->src_picture);
++ (void) status;
+
+- if (surface->src_picture)
+- XRenderFreePicture (surface->dpy, surface->src_picture);
+-
+- surface->dst_picture = None;
+- surface->src_picture = None;
++ surface->src_picture = None;
++ }
+
+ surface->drawable = drawable;
+ }
+@@ -2310,7 +2474,7 @@ typedef struct _cairo_xlib_surface_font_
+
+ static void
+ _cairo_xlib_surface_remove_scaled_font (Display *dpy,
+- void *data)
++ void *data)
+ {
+ cairo_scaled_font_t *scaled_font = data;
+ cairo_xlib_surface_font_private_t *font_private;
+@@ -2322,8 +2486,18 @@ _cairo_xlib_surface_remove_scaled_font (
+ _cairo_scaled_font_reset_cache (scaled_font);
+ CAIRO_MUTEX_UNLOCK (scaled_font->mutex);
+
+- if (font_private) {
++ if (font_private != NULL) {
++ cairo_xlib_display_t *display;
++
+ XRenderFreeGlyphSet (font_private->dpy, font_private->glyphset);
++
++ display = _cairo_xlib_display_get (dpy);
++ if (display != NULL) {
++ _cairo_xlib_display_cancel_resource (display,
++ font_private->glyphset);
++ _cairo_xlib_display_destroy (display);
++ }
++
+ free (font_private);
+ }
+ }
+@@ -2363,12 +2537,34 @@ _cairo_xlib_surface_scaled_font_fini (ca
+ cairo_xlib_surface_font_private_t *font_private = scaled_font->surface_private;
+
+ if (font_private) {
+- _cairo_xlib_remove_close_display_hook (font_private->dpy, scaled_font);
+- XRenderFreeGlyphSet (font_private->dpy, font_private->glyphset);
++ cairo_xlib_display_t *display;
++
++ _cairo_xlib_remove_close_display_hooks (font_private->dpy, scaled_font);
++
++ display = _cairo_xlib_display_get (font_private->dpy);
++ if (display != NULL) {
++ cairo_status_t status = _cairo_xlib_display_queue_resource (display,
++ XRenderFreeGlyphSet,
++ font_private->glyphset);
++ (void) status; /* cannot propagate failure */
++ _cairo_xlib_display_destroy (display);
++ }
++
+ free (font_private);
+ }
+ }
+
++struct _cairo_xlib_render_free_glyphs {
++ GlyphSet glyphset;
++ unsigned long glyph_index;
++};
++static void _cairo_xlib_render_free_glyphs (Display *dpy, struct _cairo_xlib_render_free_glyphs *arg)
++{
++ XRenderFreeGlyphs (dpy,
++ arg->glyphset,
++ &arg->glyph_index, 1);
++}
++
+ static void
+ _cairo_xlib_surface_scaled_glyph_fini (cairo_scaled_glyph_t *scaled_glyph,
+ cairo_scaled_font_t *scaled_font)
+@@ -2376,10 +2572,23 @@ _cairo_xlib_surface_scaled_glyph_fini (c
+ cairo_xlib_surface_font_private_t *font_private = scaled_font->surface_private;
+
+ if (font_private != NULL && scaled_glyph->surface_private != NULL) {
+- unsigned long glyph_index = _cairo_scaled_glyph_index(scaled_glyph);
+- XRenderFreeGlyphs (font_private->dpy,
+- font_private->glyphset,
+- &glyph_index, 1);
++ cairo_xlib_display_t *display = _cairo_xlib_display_get (font_private->dpy);
++ if (display != NULL) {
++ struct _cairo_xlib_render_free_glyphs *arg = malloc (sizeof (*arg));
++ if (arg != NULL) {
++ cairo_status_t status;
++ arg->glyphset = font_private->glyphset;
++ arg->glyph_index = _cairo_scaled_glyph_index (scaled_glyph);
++ status = _cairo_xlib_display_queue_work (display,
++ (cairo_xlib_notify_func) _cairo_xlib_render_free_glyphs,
++ arg,
++ free);
++ (void) status; /* cannot propagate failure */
++ }
++
++ _cairo_xlib_display_destroy (display);
++
++ }
+ }
+ }
+
+@@ -2990,6 +3199,7 @@ _cairo_xlib_surface_show_glyphs (void
+ _cairo_pattern_fini (&solid_pattern.base);
+ BAIL0:
+ _cairo_scaled_font_thaw_cache (scaled_font);
++ _cairo_xlib_display_notify (dst->screen_info->display);
+
+ return status;
+ }
+--- a/src/cairoint.h
++++ b/src/cairoint.h
+@@ -172,6 +172,11 @@ do { \
+ assert (NOT_REACHED); \
+ } while (0)
+
++/* Performs a compile time assert */
++#define CAIRO_STATIC_ASSERT(condition) _CAIRO_STATIC_ASSERT_IMPL(condition, __LINE__)
++#define _CAIRO_STATIC_ASSERT_IMPL(condition, line) _CAIRO_STATIC_ASSERT_IMPL2(condition, line)
++#define _CAIRO_STATIC_ASSERT_IMPL2(condition, line) typedef int _cairo_static_assert_line_##line[(condition) ? 1 : -1]
++
+ #define CAIRO_REF_COUNT_INVALID ((unsigned int) -1)
+
+ #include "cairo-mutex-private.h"
+@@ -591,12 +596,6 @@ _cairo_font_reset_static_data (void);
+ cairo_private void
+ _cairo_ft_font_reset_static_data (void);
+
+-cairo_private void
+-_cairo_xlib_surface_reset_static_data (void);
+-
+-cairo_private void
+-_cairo_xlib_screen_reset_static_data (void);
+-
+ /* the font backend interface */
+
+ struct _cairo_unscaled_font_backend {
+@@ -974,6 +973,10 @@ struct _cairo_surface_backend {
+
+ cairo_surface_t *
+ (*snapshot) (void *surface);
++
++ cairo_bool_t
++ (*is_compatible) (void *surface_a,
++ void *surface_b);
+ };
+
+ typedef struct _cairo_format_masks {
+@@ -1848,7 +1851,8 @@ _cairo_surface_create_similar_solid (cai
+ cairo_content_t content,
+ int width,
+ int height,
+- const cairo_color_t *color);
++ const cairo_color_t *color,
++ cairo_pattern_t *pattern);
+
+ cairo_private void
+ _cairo_surface_init (cairo_surface_t *surface,
+@@ -1993,6 +1997,10 @@ _cairo_surface_clone_similar (cairo_surf
+ cairo_private cairo_surface_t *
+ _cairo_surface_snapshot (cairo_surface_t *surface);
+
++cairo_private cairo_bool_t
++_cairo_surface_is_compatible (cairo_surface_t *surface_a,
++ cairo_surface_t *surface_b);
++
+ cairo_private unsigned int
+ _cairo_surface_get_current_clip_serial (cairo_surface_t *surface);
+
+--- a/test/create-for-stream.c
++++ b/test/create-for-stream.c
+@@ -177,12 +177,14 @@ test_surface (const char *filename,
+ if (fread (file_contents, 1, wc.index, fp) != wc.index) {
+ cairo_test_log ("Failed to read %s: %s\n",
+ filename, strerror (errno));
++ fclose (fp);
+ return CAIRO_TEST_FAILURE;
+ }
+
+ if (memcmp (file_contents, wc.buffer, wc.index) != 0) {
+ cairo_test_log ("Stream based output differ from file output for %s\n",
+ filename);
++ fclose (fp);
+ return CAIRO_TEST_FAILURE;
+ }
+
+@@ -195,35 +197,36 @@ test_surface (const char *filename,
+ int
+ main (void)
+ {
+- cairo_test_status_t status;
++ cairo_test_status_t status = CAIRO_TEST_SUCCESS;
++ cairo_test_status_t test_status;
+
+ cairo_test_init ("create-for-stream");
+
+ #if CAIRO_HAS_PS_SURFACE
+- status = test_surface ("create-for-stream.ps",
+- cairo_ps_surface_create,
+- cairo_ps_surface_create_for_stream);
+- if (status != CAIRO_TEST_SUCCESS)
+- return status;
++ test_status = test_surface ("create-for-stream.ps",
++ cairo_ps_surface_create,
++ cairo_ps_surface_create_for_stream);
++ if (status == CAIRO_TEST_SUCCESS)
++ status = test_status;
+ #endif
+
+ #if CAIRO_HAS_PDF_SURFACE
+- status = test_surface ("create-for-stream.pdf",
+- cairo_pdf_surface_create,
+- cairo_pdf_surface_create_for_stream);
+- if (status != CAIRO_TEST_SUCCESS)
+- return status;
++ test_status = test_surface ("create-for-stream.pdf",
++ cairo_pdf_surface_create,
++ cairo_pdf_surface_create_for_stream);
++ if (status == CAIRO_TEST_SUCCESS)
++ status = test_status;
+ #endif
+
+ #if CAIRO_HAS_SVG_SURFACE
+- status = test_surface ("create-for-stream.svg",
+- cairo_svg_surface_create,
+- cairo_svg_surface_create_for_stream);
+- if (status != CAIRO_TEST_SUCCESS)
+- return status;
++ test_status = test_surface ("create-for-stream.svg",
++ cairo_svg_surface_create,
++ cairo_svg_surface_create_for_stream);
++ if (status == CAIRO_TEST_SUCCESS)
++ status = test_status;
+ #endif
+
+ cairo_test_fini ();
+
+- return CAIRO_TEST_SUCCESS;
++ return status;
+ }
diff --git a/packages/cairo/cairo_1.3.10.bb b/packages/cairo/cairo_1.3.10.bb
deleted file mode 100644
index 883884d15f..0000000000
--- a/packages/cairo/cairo_1.3.10.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-#This is a development snapshot, so lets hint OE to use the releases
-DEFAULT_PREFERENCE = "-1"
-
-require cairo.inc
-
-SRC_URI = "http://cairographics.org/snapshots/cairo-${PV}.tar.gz"
-
diff --git a/packages/cairo/cairo_1.3.14.bb b/packages/cairo/cairo_1.3.14.bb
new file mode 100644
index 0000000000..6bc0cb37f7
--- /dev/null
+++ b/packages/cairo/cairo_1.3.14.bb
@@ -0,0 +1,10 @@
+#This is a development snapshot, so lets hint OE to use the releases
+DEFAULT_PREFERENCE = "-1"
+
+require cairo.inc
+
+SRC_URI = "http://cairographics.org/snapshots/cairo-${PV}.tar.gz \
+ file://cairo-surface-cache-3.patch;patch=1"
+
+PR = "r0"
+
diff --git a/packages/cairo/cairo_1.4.0.bb b/packages/cairo/cairo_1.4.0.bb
new file mode 100644
index 0000000000..3e5d2fdb15
--- /dev/null
+++ b/packages/cairo/cairo_1.4.0.bb
@@ -0,0 +1,7 @@
+require cairo.inc
+
+SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz \
+ file://cairo-surface-cache-3.patch;patch=1"
+
+PR = "r0"
+
diff --git a/packages/cairo/cairo_1.4.2.bb b/packages/cairo/cairo_1.4.2.bb
new file mode 100644
index 0000000000..3e5d2fdb15
--- /dev/null
+++ b/packages/cairo/cairo_1.4.2.bb
@@ -0,0 +1,7 @@
+require cairo.inc
+
+SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz \
+ file://cairo-surface-cache-3.patch;patch=1"
+
+PR = "r0"
+
diff --git a/packages/cairo/cairo_1.4.4.bb b/packages/cairo/cairo_1.4.4.bb
new file mode 100644
index 0000000000..5f4a36f572
--- /dev/null
+++ b/packages/cairo/cairo_1.4.4.bb
@@ -0,0 +1,7 @@
+require cairo.inc
+
+SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz \
+ file://cairo-workqueue.patch;patch=1"
+
+PR = "r0"
+
diff --git a/packages/cairo/cairo_git.bb b/packages/cairo/cairo_git.bb
index 55bdc019f0..3da41f382d 100644
--- a/packages/cairo/cairo_git.bb
+++ b/packages/cairo/cairo_git.bb
@@ -7,7 +7,7 @@ DEPENDS = "virtual/libx11 libsm libpng fontconfig libxrender"
DESCRIPTION = "Cairo graphics library"
LICENSE = "MPL LGPL"
-PV = "1.3.11+git${SRCDATE}"
+PV = "1.4.7+git${SRCDATE}"
SRC_URI = "git://git.cairographics.org/git/cairo;protocol=git \
"
diff --git a/packages/cairo/files/cairo-surface-cache-3.patch b/packages/cairo/files/cairo-surface-cache-3.patch
new file mode 100644
index 0000000000..ba714359a6
--- /dev/null
+++ b/packages/cairo/files/cairo-surface-cache-3.patch
@@ -0,0 +1,371 @@
+diff --git a/src/cairo-clip.c b/src/cairo-clip.c
+diff --git a/src/cairo-color.c b/src/cairo-color.c
+index a348839..0688167 100644
+--- a/src/cairo-color.c
++++ b/src/cairo-color.c
+@@ -159,3 +159,10 @@ _cairo_color_get_rgba_premultiplied (cai
+ *blue = color->blue * color->alpha;
+ *alpha = color->alpha;
+ }
++
++cairo_bool_t
++_cairo_color_equal (cairo_color_t *color_a,
++ cairo_color_t *color_b)
++{
++ return (memcmp (color_a, color_b, sizeof (cairo_color_t)) == 0);
++}
+diff --git a/src/cairo-directfb-surface.c b/src/cairo-directfb-surface.c
+index 686510d..96ee212 100644
+--- a/src/cairo-directfb-surface.c
++++ b/src/cairo-directfb-surface.c
+@@ -1514,6 +1514,15 @@ _cairo_directfb_surface_show_glyphs ( vo
+ }
+ #endif /* DFB_SHOW_GLYPHS */
+
++static cairo_bool_t
++_cairo_directfb_surface_is_compatible (void *surface_a,
++ void *surface_b)
++{
++ cairo_directfb_surface_t *a = (cairo_directfb_surface_t*) surface_a;
++ cairo_directfb_surface_t *b = (cairo_directfb_surface_t*) surface_b;
++
++ return (a->dfb == b->dfb);
++}
+
+ static cairo_surface_backend_t cairo_directfb_surface_backend = {
+ CAIRO_SURFACE_TYPE_DIRECTFB, /*type*/
+@@ -1564,7 +1573,8 @@ #if DFB_SHOW_GLYPHS
+ #else
+ NULL, /* show_glyphs */
+ #endif
+- NULL /* snapshot */
++ NULL, /* snapshot */
++ _cairo_directfb_is_compatible
+ };
+
+
+diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c
+diff --git a/src/cairo-glitz-surface.c b/src/cairo-glitz-surface.c
+index f492739..79e0162 100644
+--- a/src/cairo-glitz-surface.c
++++ b/src/cairo-glitz-surface.c
+@@ -1799,6 +1799,19 @@ _cairo_glitz_surface_scaled_glyph_fini (
+ }
+ }
+
++static cairo_bool_t
++_cairo_glitz_surface_is_compatible (void *surface_a,
++ void *surface_b)
++{
++ cairo_glitz_surface_t *a = (cairo_glitz_surface_t*) surface_a;
++ cairo_glitz_surface_t *b = (cairo_glitz_surface_t*) surface_b;
++
++ glitz_drawable *drawable_a = glitz_surface_get_drawable (a->surface);
++ glitz_drawable *drawable_b = glitz_surface_get_drawable (b->surface);
++
++ return (drawable_a == drawable_b);
++}
++
+ #define FIXED_TO_FLOAT(f) (((glitz_float_t) (f)) / 65536)
+
+ static cairo_status_t
+@@ -2194,7 +2207,16 @@ static const cairo_surface_backend_t cai
+ _cairo_glitz_surface_flush,
+ NULL, /* mark_dirty_rectangle */
+ _cairo_glitz_surface_scaled_font_fini,
+- _cairo_glitz_surface_scaled_glyph_fini
++ _cairo_glitz_surface_scaled_glyph_fini,
++
++ NULL, /* paint */
++ NULL, /* mask */
++ NULL, /* stroke */
++ NULL, /* fill */
++ NULL, /* show_glyphs */
++
++ NULL, /* snapshot */
++ _cairo_glitz_surface_is_compatible
+ };
+
+ static const cairo_surface_backend_t *
+diff --git a/src/cairo-gstate.c b/src/cairo-gstate.c
+diff --git a/src/cairo-meta-surface.c b/src/cairo-meta-surface.c
+diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c
+index b488d1f..28f8561 100644
+--- a/src/cairo-pattern.c
++++ b/src/cairo-pattern.c
+@@ -1020,6 +1020,8 @@ _cairo_pattern_acquire_surface_for_gradi
+ return status;
+ }
+
++#define MAX_CACHE_SIZE 16
++
+ static cairo_int_status_t
+ _cairo_pattern_acquire_surface_for_solid (cairo_solid_pattern_t *pattern,
+ cairo_surface_t *dst,
+@@ -1030,12 +1032,59 @@ _cairo_pattern_acquire_surface_for_solid
+ cairo_surface_t **out,
+ cairo_surface_attributes_t *attribs)
+ {
+- *out = _cairo_surface_create_similar_solid (dst,
+- CAIRO_CONTENT_COLOR_ALPHA,
+- 1, 1,
+- &pattern->color);
+- if ((*out)->status)
+- return CAIRO_STATUS_NO_MEMORY;
++ /* We have a small cache here, because we don't want to constantly
++ * recreate surfaces for simple solid colors */
++ static struct {
++ cairo_color_t color;
++ cairo_surface_t *surface;
++ } cache[MAX_CACHE_SIZE];
++ static int cache_size = 0;
++ static int i = 0;
++ CAIRO_MUTEX_DECLARE (cache_lock);
++
++ cairo_surface_t *surface;
++ cairo_status_t status;
++
++ CAIRO_MUTEX_LOCK (cache_lock);
++
++ /* Check cache first */
++ if (i < cache_size)
++ if (_cairo_color_equal (&cache[i].color, &pattern->color) &&
++ _cairo_surface_is_compatible (cache[i].surface, dst))
++ goto DONE;
++
++ for (i = 0; i < cache_size; i++)
++ if (_cairo_color_equal (&cache[i].color, &pattern->color) &&
++ _cairo_surface_is_compatible (cache[i].surface, dst))
++ goto DONE;
++
++ /* Not cached, need to create new */
++ surface = _cairo_surface_create_similar_solid (dst,
++ CAIRO_CONTENT_COLOR_ALPHA,
++ 1, 1,
++ &pattern->color);
++ if (surface->status) {
++ status = CAIRO_STATUS_NO_MEMORY;
++
++ goto UNLOCK;
++ }
++
++ /* Cache new */
++ if (cache_size < MAX_CACHE_SIZE)
++ cache_size++;
++ else {
++ i = rand () % MAX_CACHE_SIZE;
++
++ /* Evict old */
++ cairo_surface_destroy (cache[i].surface);
++ }
++
++ cache[i].color = pattern->color;
++ cache[i].surface = surface;
++
++DONE:
++
++ *out = cairo_surface_reference (cache[i].surface);
+
+ attribs->x_offset = attribs->y_offset = 0;
+ cairo_matrix_init_identity (&attribs->matrix);
+@@ -1043,7 +1092,13 @@ _cairo_pattern_acquire_surface_for_solid
+ attribs->filter = CAIRO_FILTER_NEAREST;
+ attribs->acquired = FALSE;
+
+- return CAIRO_STATUS_SUCCESS;
++ status = CAIRO_STATUS_SUCCESS;
++
++UNLOCK:
++
++ CAIRO_MUTEX_UNLOCK (cache_lock);
++
++ return status;
+ }
+
+ /**
+diff --git a/src/cairo-scaled-font.c b/src/cairo-scaled-font.c
+diff --git a/src/cairo-surface-fallback.c b/src/cairo-surface-fallback.c
+diff --git a/src/cairo-surface.c b/src/cairo-surface.c
+index 2bff0da..78cad9b 100644
+--- a/src/cairo-surface.c
++++ b/src/cairo-surface.c
+@@ -1078,6 +1078,32 @@ _cairo_surface_snapshot (cairo_surface_t
+ return _cairo_surface_fallback_snapshot (surface);
+ }
+
++/**
++ * _cairo_surface_is_compatible
++ * @surface_a: a #cairo_surface_t
++ * @surface_b: a #cairo_surface_t
++ *
++ * Find out whether the given surfaces share the same backend,
++ * and if so, whether they can be considered compatible.
++ *
++ * The definition of "compatible" depends on the backend. In the
++ * xlib case, it means the surfaces share the same display.
++ *
++ * Return value: TRUE if the surfaces are compatible.
++ **/
++cairo_bool_t
++_cairo_surface_is_compatible (cairo_surface_t *surface_a,
++ cairo_surface_t *surface_b)
++{
++ if (surface_a->backend != surface_b->backend)
++ return FALSE;
++
++ if (surface_a->backend->is_compatible)
++ return surface_a->backend->is_compatible (surface_a, surface_b);
++
++ return TRUE;
++}
++
+ cairo_status_t
+ _cairo_surface_composite (cairo_operator_t op,
+ cairo_pattern_t *src,
+diff --git a/src/cairo-win32-surface.c b/src/cairo-win32-surface.c
+index be7e706..81eb916 100644
+--- a/src/cairo-win32-surface.c
++++ b/src/cairo-win32-surface.c
+@@ -1609,6 +1609,16 @@ _cairo_win32_surface_show_glyphs (void
+ return (win_result) ? CAIRO_STATUS_SUCCESS : CAIRO_INT_STATUS_UNSUPPORTED;
+ }
+
++static cairo_bool_t
++_cairo_win32_surface_is_compatible (void *surface_a,
++ void *surface_b)
++{
++ cairo_win32_surface_t *a = (cairo_win32_surface_t*) surface_a;
++ cairo_win32_surface_t *b = (cairo_win32_surface_t*) surface_b;
++
++ return (a->dc == b->dc);
++}
++
+ #undef STACK_GLYPH_SIZE
+
+ /**
+@@ -1879,7 +1889,8 @@ static const cairo_surface_backend_t cai
+ NULL, /* fill */
+ _cairo_win32_surface_show_glyphs,
+
+- NULL /* snapshot */
++ NULL, /* snapshot */
++ _cairo_win32_surface_is_compatible
+ };
+
+ /*
+diff --git a/src/cairo-xcb-surface.c b/src/cairo-xcb-surface.c
+index 2fdf8a1..8df859d 100644
+--- a/src/cairo-xcb-surface.c
++++ b/src/cairo-xcb-surface.c
+@@ -1578,6 +1578,10 @@ _cairo_xcb_surface_show_glyphs (void
+ int num_glyphs,
+ cairo_scaled_font_t *scaled_font);
+
++static cairo_bool_t
++_cairo_xcb_surface_is_compatible (void *surface_a,
++ void *surface_b);
++
+ /* XXX: move this to the bottom of the file, XCB and Xlib */
+
+ static const cairo_surface_backend_t cairo_xcb_surface_backend = {
+@@ -1609,7 +1613,8 @@ static const cairo_surface_backend_t cai
+ NULL, /* stroke */
+ NULL, /* fill */
+ _cairo_xcb_surface_show_glyphs,
+- NULL /* snapshot */
++ NULL, /* snapshot */
++ _cairo_xcb_surface_is_compatible
+ };
+
+ /**
+@@ -2451,3 +2456,13 @@ _cairo_xcb_surface_show_glyphs (void
+
+ return status;
+ }
++
++static cairo_bool_t
++_cairo_xcb_surface_is_compatible (void *surface_a,
++ void *surface_b)
++{
++ cairo_xcb_surface_t *a = (cairo_xcb_surface_t*) surface_a;
++ cairo_xcb_surface_t *b = (cairo_xcb_surface_t*) surface_b;
++
++ return (a->dpy == b->dpy);
++}
+diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c
+index 6a0d3e4..9228c95 100644
+--- a/src/cairo-xlib-surface.c
++++ b/src/cairo-xlib-surface.c
+@@ -74,6 +74,10 @@ _cairo_xlib_surface_show_glyphs (void
+ int num_glyphs,
+ cairo_scaled_font_t *scaled_font);
+
++static cairo_bool_t
++_cairo_xlib_surface_is_compatible (void *surface_a,
++ void *surface_b);
++
+ /*
+ * Instead of taking two round trips for each blending request,
+ * assume that if a particular drawable fails GetImage that it will
+@@ -1783,7 +1787,8 @@ static const cairo_surface_backend_t cai
+ NULL, /* stroke */
+ NULL, /* fill */
+ _cairo_xlib_surface_show_glyphs,
+- NULL /* snapshot */
++ NULL, /* snapshot */
++ _cairo_xlib_surface_is_compatible
+ };
+
+ /**
+@@ -2913,3 +2918,13 @@ _cairo_xlib_surface_show_glyphs (void
+
+ return status;
+ }
++
++static cairo_bool_t
++_cairo_xlib_surface_is_compatible (void *surface_a,
++ void *surface_b)
++{
++ cairo_xlib_surface_t *a = (cairo_xlib_surface_t*) surface_a;
++ cairo_xlib_surface_t *b = (cairo_xlib_surface_t*) surface_b;
++
++ return (a->dpy == b->dpy);
++}
+diff --git a/src/cairo.c b/src/cairo.c
+diff --git a/src/cairoint.h b/src/cairoint.h
+index 060b988..01c0e2a 100755
+--- a/src/cairoint.h
++++ b/src/cairoint.h
+@@ -933,6 +933,10 @@ struct _cairo_surface_backend {
+
+ cairo_surface_t *
+ (*snapshot) (void *surface);
++
++ cairo_bool_t
++ (*is_compatible) (void *surface_a,
++ void *surface_b);
+ };
+
+ typedef struct _cairo_format_masks {
+@@ -1497,6 +1501,10 @@ _cairo_color_get_rgba_premultiplied (cai
+ double *blue,
+ double *alpha);
+
++cairo_private cairo_bool_t
++_cairo_color_equal (cairo_color_t *color_a,
++ cairo_color_t *color_b);
++
+ /* cairo-font.c */
+
+ cairo_private void
+@@ -1922,6 +1930,10 @@ _cairo_surface_clone_similar (cairo_surf
+ cairo_private cairo_surface_t *
+ _cairo_surface_snapshot (cairo_surface_t *surface);
+
++cairo_private cairo_bool_t
++_cairo_surface_is_compatible (cairo_surface_t *surface_a,
++ cairo_surface_t *surface_b);
++
+ cairo_private unsigned int
+ _cairo_surface_get_current_clip_serial (cairo_surface_t *surface);
+
diff --git a/packages/ccxstream/ccxstream_1.0.15.bb b/packages/ccxstream/ccxstream_1.0.15.bb
index cc42d895ca..466a116ec2 100644
--- a/packages/ccxstream/ccxstream_1.0.15.bb
+++ b/packages/ccxstream/ccxstream_1.0.15.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "XStream Server"
DEPENDS = "readline"
-LICENSE = "GPL-2"
+LICENSE = "GPLv2"
PR = "r2"
SRC_URI = "http://surfnet.dl.sourceforge.net/sourceforge/xbplayer/${P}.tar.gz \
diff --git a/packages/linux/nslu2-kernel/2.6.14-mm/.mtn2git_empty b/packages/chibitracker/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/nslu2-kernel/2.6.14-mm/.mtn2git_empty
+++ b/packages/chibitracker/.mtn2git_empty
diff --git a/packages/chibitracker/chibitracker_svn.bb b/packages/chibitracker/chibitracker_svn.bb
new file mode 100644
index 0000000000..ec7d9284a2
--- /dev/null
+++ b/packages/chibitracker/chibitracker_svn.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Chibitracker is an impulse tracker clone based on SDL"
+LICENSE = "GPL"
+HOMEPAGE = "http://www.chibitracker.com"
+SECTION = "multimedia"
+AUTHOR = "Juan Linietsky <reduzio@gmail.com>"
+DEPENDS = "virtual/libsdl libsdl-mixer"
+PV = "0.9.9+svn${SRCDATE}"
+
+SRC_URI = "svn://svn.berlios.de/chibitracker;module=trunk"
+S = "${WORKDIR}/trunk"
+
+inherit scons
+
diff --git a/packages/linux/nslu2-kernel/2.6.14/.mtn2git_empty b/packages/chrpath/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/nslu2-kernel/2.6.14/.mtn2git_empty
+++ b/packages/chrpath/.mtn2git_empty
diff --git a/packages/chrpath/chrpath-native_0.13.bb b/packages/chrpath/chrpath-native_0.13.bb
new file mode 100644
index 0000000000..6ba8feb5e6
--- /dev/null
+++ b/packages/chrpath/chrpath-native_0.13.bb
@@ -0,0 +1,3 @@
+require chrpath.inc
+
+inherit native
diff --git a/packages/chrpath/chrpath.inc b/packages/chrpath/chrpath.inc
new file mode 100644
index 0000000000..1858d47d2c
--- /dev/null
+++ b/packages/chrpath/chrpath.inc
@@ -0,0 +1,10 @@
+DESCRIPTION = "chrpath allows you to change the rpath (where the application looks for libraries) in an application. It does not (yet) allow you to add an rpath if there isn't one already."
+LICENSE = "GPL"
+
+SRC_URI = "http://ftp.debian.org/debian/pool/main/c/chrpath/chrpath_${PV}.orig.tar.gz"
+
+inherit autotools
+
+S = "${WORKDIR}/chrpath-${PV}"
+
+
diff --git a/packages/chrpath/chrpath_0.13.bb b/packages/chrpath/chrpath_0.13.bb
new file mode 100644
index 0000000000..15392d9ac2
--- /dev/null
+++ b/packages/chrpath/chrpath_0.13.bb
@@ -0,0 +1 @@
+require chrpath.inc
diff --git a/packages/linux/nslu2-kernel/2.6.15/.mtn2git_empty b/packages/clutter/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/nslu2-kernel/2.6.15/.mtn2git_empty
+++ b/packages/clutter/.mtn2git_empty
diff --git a/packages/clutter/clutter-fpu.inc b/packages/clutter/clutter-fpu.inc
new file mode 100644
index 0000000000..21a16feac2
--- /dev/null
+++ b/packages/clutter/clutter-fpu.inc
@@ -0,0 +1,6 @@
+
+def get_clutter_fpu_setting(bb, d):
+ if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]:
+ return "--without-fpu"
+ return ""
+
diff --git a/packages/clutter/clutter.inc b/packages/clutter/clutter.inc
new file mode 100644
index 0000000000..b89070f3ea
--- /dev/null
+++ b/packages/clutter/clutter.inc
@@ -0,0 +1,26 @@
+DESCRIPTION = "Clutter graphics library"
+HOMEPAGE = "http://www.clutter-project.org/"
+LICENSE = "LGPL"
+
+DEPENDS = "virtual/libx11 mesa gstreamer gtk-doc cairo pango gtk+"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-gtk-doc "
+
+#check for TARGET_FPU=soft and inform configure of the result so it can disable some floating points
+require clutter-fpu.inc
+
+EXTRA_OECONF += "${@get_clutter_fpu_setting(bb, d)}"
+
+#Fix up some weirdness in the docs
+do_configure_prepend() {
+ touch ${S}/gtk-doc.make
+ sed -i s:doc/reference/Makefile::g ${S}/configure.ac
+ sed -i s:doc::g ${S}/Makefile.am
+}
+
+do_stage () {
+ autotools_stage_all
+}
+
diff --git a/packages/clutter/clutter_svn.bb b/packages/clutter/clutter_svn.bb
new file mode 100644
index 0000000000..9939221d8d
--- /dev/null
+++ b/packages/clutter/clutter_svn.bb
@@ -0,0 +1,9 @@
+require clutter.inc
+
+PV = "0.2.0+svn${SRCDATE}"
+
+SRC_URI = "svn://svn.o-hand.com/repos/clutter/trunk;module=clutter;proto=http"
+
+S = "${WORKDIR}/clutter"
+
+
diff --git a/packages/linux/nslu2-kernel/2.6/.mtn2git_empty b/packages/confuse/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/nslu2-kernel/2.6/.mtn2git_empty
+++ b/packages/confuse/.mtn2git_empty
diff --git a/packages/confuse/confuse-native_2.5.bb b/packages/confuse/confuse-native_2.5.bb
new file mode 100644
index 0000000000..6a5dd797b5
--- /dev/null
+++ b/packages/confuse/confuse-native_2.5.bb
@@ -0,0 +1,3 @@
+require confuse_${PV}.bb
+
+inherit native
diff --git a/packages/confuse/confuse_2.5.bb b/packages/confuse/confuse_2.5.bb
new file mode 100644
index 0000000000..572bcd334c
--- /dev/null
+++ b/packages/confuse/confuse_2.5.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Library for parsing configuration files."
+HOMEPAGE = "http://www.nongnu.org/confuse/"
+LICENSE = "LGPL"
+SECTION = "libs"
+
+SRC_URI = "http://download.savannah.gnu.org/releases/confuse/confuse-${PV}.tar.gz \
+ file://build-only-library.patch;patch=1"
+S = "${WORKDIR}/confuse-${PV}"
+
+inherit autotools binconfig pkgconfig lib_package
+
+EXTRA_OECONF = "--enable-shared"
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/linux/nslu2-kernel/files/.mtn2git_empty b/packages/confuse/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/nslu2-kernel/files/.mtn2git_empty
+++ b/packages/confuse/files/.mtn2git_empty
diff --git a/packages/confuse/files/build-only-library.patch b/packages/confuse/files/build-only-library.patch
new file mode 100644
index 0000000000..43c46e0bf8
--- /dev/null
+++ b/packages/confuse/files/build-only-library.patch
@@ -0,0 +1,13 @@
+Index: confuse-2.5/Makefile.am
+===================================================================
+--- confuse-2.5.orig/Makefile.am
++++ confuse-2.5/Makefile.am
+@@ -4,7 +4,7 @@
+ AUTOMAKE_OPTIONS = foreign
+ CLEANFILES=*~ '\#*\#'
+ EXTRA_DIST=libconfuse.spec.in libconfuse.spec
+-SUBDIRS = m4 po src examples tests doc
++SUBDIRS = m4 po src
+
+ if HAVE_PKGCONFIG
+ pkgconfigdir = $(libdir)/pkgconfig
diff --git a/packages/contacts/contacts_0.1.bb b/packages/contacts/contacts_0.1.bb
deleted file mode 100644
index a7904a6576..0000000000
--- a/packages/contacts/contacts_0.1.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-LICENSE = "LGPL"
-SECTION = "x11"
-DEPENDS = "glib-2.0 gtk+ libglade eds-dbus"
-DESCRIPTION = "Contacts is an address-book application."
-PR = "r1"
-
-SRC_URI = "svn://svn.o-hand.com/repos/${PN}/tags;module=release-0.1;proto=http \
- file://stock_contact.png \
- file://stock_person.png"
-
-inherit autotools pkgconfig
-
-S = "${WORKDIR}/release-0.1"
-
-do_install_append () {
- install -d ${D}/${datadir}/pixmaps
- install -m 0644 ${WORKDIR}/stock_contact.png ${D}/${datadir}/pixmaps
- install -m 0644 ${WORKDIR}/stock_person.png ${D}/${datadir}/pixmaps
-}
-
-FILES_${PN} += "${datadir}/pixmaps/stock_contact.png \
- ${datadir}/pixmaps/stock_person.png"
-
diff --git a/packages/contacts/contacts_0.2.bb b/packages/contacts/contacts_0.2.bb
deleted file mode 100644
index 071c827709..0000000000
--- a/packages/contacts/contacts_0.2.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-LICENSE = "LGPL"
-SECTION = "x11"
-DEPENDS = "glib-2.0 gtk+ libglade libbacon eds-dbus"
-DESCRIPTION = "Contacts is an address-book application."
-PR = "r0"
-
-SRC_URI = "http://projects.o-hand.com/sources/contacts/contacts-0.2.tar.gz \
- file://stock_contact.png \
- file://stock_person.png"
-
-inherit autotools pkgconfig
-
-
-do_install_append () {
- install -d ${D}/${datadir}/pixmaps
- install -m 0644 ${WORKDIR}/stock_contact.png ${D}/${datadir}/pixmaps
- install -m 0644 ${WORKDIR}/stock_person.png ${D}/${datadir}/pixmaps
-}
-
-FILES_${PN} += "${datadir}/pixmaps/stock_contact.png \
- ${datadir}/pixmaps/stock_person.png"
-
diff --git a/packages/contacts/contacts_svn.bb b/packages/contacts/contacts_svn.bb
deleted file mode 100644
index bffa1832fd..0000000000
--- a/packages/contacts/contacts_svn.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-LICENSE = "LGPL"
-SECTION = "x11"
-DEPENDS = "glib-2.0 gtk+ libglade eds-dbus gnome-vfs"
-RDEPENDS = "gnome-vfs-plugin-file"
-RRECOMMENDS = "gnome-vfs-plugin-http"
-DESCRIPTION = "Contacts is an address-book application."
-PR = "r5"
-
-PV = "0.1+svn${SRCDATE}"
-
-SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http \
- file://stock_contact.png \
- file://stock_person.png"
-
-inherit autotools pkgconfig
-
-S = "${WORKDIR}/trunk"
-
-EXTRA_OECONF = "--enable-gnome-vfs"
-
-do_install_append () {
- install -d ${D}/${datadir}/pixmaps
- install -m 0644 ${WORKDIR}/stock_contact.png ${D}/${datadir}/pixmaps
- install -m 0644 ${WORKDIR}/stock_person.png ${D}/${datadir}/pixmaps
-}
-
-FILES_${PN} += "${datadir}/pixmaps/stock_contact.png \
- ${datadir}/pixmaps/stock_person.png"
-
diff --git a/packages/linux/nslu2-linksys-kernel-2.4.22/.mtn2git_empty b/packages/coreutils/coreutils-6.0/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/nslu2-linksys-kernel-2.4.22/.mtn2git_empty
+++ b/packages/coreutils/coreutils-6.0/.mtn2git_empty
diff --git a/packages/coreutils/coreutils-6.0/man.patch b/packages/coreutils/coreutils-6.0/man.patch
new file mode 100644
index 0000000000..5060e4fdff
--- /dev/null
+++ b/packages/coreutils/coreutils-6.0/man.patch
@@ -0,0 +1,42 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- coreutils-5.3.0/configure.ac~man
++++ coreutils-5.3.0/configure.ac
+@@ -237,6 +237,20 @@
+ AM_GNU_GETTEXT([external], [need-ngettext])
+ AM_GNU_GETTEXT_VERSION(0.13.1)
+
++AC_MSG_CHECKING([whether to build man pages])
++AC_ARG_WITH(manpages,
++ AS_HELP_STRING([--with-manpages],
++ [Enable building of manpages (default=yes)]),
++ [cu_cv_build_manpages=$enableval],
++ [cu_cv_build_manpages=yes])
++# help2man doesn't work when crosscompiling, as it needs to run the
++# binary that was built.
++if test x"$cross_compiling" = x"yes"; then
++ cu_cv_build_manpages=no
++fi
++AC_MSG_RESULT($cu_cv_build_manpages)
++AM_CONDITIONAL(ENABLE_MANPAGES, test x"$cu_cv_build_manpages" = x"yes")
++
+ AC_CONFIG_FILES(
+ Makefile
+ doc/Makefile
+--- coreutils-5.3.0/Makefile.am~man
++++ coreutils-5.3.0/Makefile.am
+@@ -1,6 +1,11 @@
+ ## Process this file with automake to produce Makefile.in -*-Makefile-*-
+
++if ENABLE_MANPAGES
+ SUBDIRS = lib src doc man po tests
++else
++SUBDIRS = lib src doc po tests
++endif
++
+ EXTRA_DIST = Makefile.cfg Makefile.maint GNUmakefile \
+ .kludge-stamp .prev-version THANKS-to-translators THANKStt.in \
+ .x-sc_space_tab .x-sc_sun_os_names \
diff --git a/packages/coreutils/coreutils-6.0/oe-old-tools.patch b/packages/coreutils/coreutils-6.0/oe-old-tools.patch
new file mode 100644
index 0000000000..495da36cf7
--- /dev/null
+++ b/packages/coreutils/coreutils-6.0/oe-old-tools.patch
@@ -0,0 +1,26 @@
+Index: coreutils-6.0/configure.ac
+===================================================================
+--- coreutils-6.0.orig/configure.ac 2007-04-02 11:21:27.000000000 +0200
++++ coreutils-6.0/configure.ac 2007-04-02 11:21:36.000000000 +0200
+@@ -26,7 +26,7 @@
+ AC_CONFIG_HEADERS([config.h:config.hin])
+
+ AB_INIT()
+-AM_INIT_AUTOMAKE([1.9.6 gnits dist-bzip2])
++AM_INIT_AUTOMAKE([1.9.3 gnits dist-bzip2])
+
+ gl_DEFAULT_POSIX2_VERSION
+ gl_USE_SYSTEM_EXTENSIONS
+Index: coreutils-6.0/m4/jm-macros.m4
+===================================================================
+--- coreutils-6.0.orig/m4/jm-macros.m4 2007-04-02 11:21:54.000000000 +0200
++++ coreutils-6.0/m4/jm-macros.m4 2007-04-02 11:22:02.000000000 +0200
+@@ -23,7 +23,7 @@
+
+ AC_DEFUN([gl_MACROS],
+ [
+- AC_PREREQ(2.60)
++ AC_PREREQ(2.59)
+
+ GNU_PACKAGE="GNU $PACKAGE"
+ AC_DEFINE_UNQUOTED(GNU_PACKAGE, "$GNU_PACKAGE",
diff --git a/packages/coreutils/coreutils-6.0/onceonly.m4 b/packages/coreutils/coreutils-6.0/onceonly.m4
new file mode 100644
index 0000000000..f6fec37cbf
--- /dev/null
+++ b/packages/coreutils/coreutils-6.0/onceonly.m4
@@ -0,0 +1,63 @@
+# onceonly.m4 serial 3
+dnl Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl This file defines some "once only" variants of standard autoconf macros.
+dnl AC_CHECK_HEADERS_ONCE like AC_CHECK_HEADERS
+dnl AC_CHECK_FUNCS_ONCE like AC_CHECK_FUNCS
+dnl AC_CHECK_DECLS_ONCE like AC_CHECK_DECLS
+dnl AC_REQUIRE([AC_HEADER_STDC]) like AC_HEADER_STDC
+dnl The advantage is that the check for each of the headers/functions/decls
+dnl will be put only once into the 'configure' file. It keeps the size of
+dnl the 'configure' file down, and avoids redundant output when 'configure'
+dnl is run.
+dnl The drawback is that the checks cannot be conditionalized. If you write
+dnl if some_condition; then gl_CHECK_HEADERS(stdlib.h); fi
+dnl inside an AC_DEFUNed function, the gl_CHECK_HEADERS macro call expands to
+dnl empty, and the check will be inserted before the body of the AC_DEFUNed
+dnl function.
+
+dnl Autoconf version 2.57 or newer is recommended.
+AC_PREREQ(2.54)
+
+# AC_CHECK_HEADERS_ONCE(HEADER1 HEADER2 ...) is a once-only variant of
+# AC_CHECK_HEADERS(HEADER1 HEADER2 ...).
+AC_DEFUN([AC_CHECK_HEADERS_ONCE], [
+ :
+ AC_FOREACH([gl_HEADER_NAME], [$1], [
+ AC_DEFUN([gl_CHECK_HEADER_]m4_quote(translit(defn([gl_HEADER_NAME]),
+ [-./], [___])), [
+ AC_CHECK_HEADERS(gl_HEADER_NAME)
+ ])
+ AC_REQUIRE([gl_CHECK_HEADER_]m4_quote(translit(gl_HEADER_NAME,
+ [-./], [___])))
+ ])
+])
+
+# AC_CHECK_FUNCS_ONCE(FUNC1 FUNC2 ...) is a once-only variant of
+# AC_CHECK_FUNCS(FUNC1 FUNC2 ...).
+AC_DEFUN([AC_CHECK_FUNCS_ONCE], [
+ :
+ AC_FOREACH([gl_FUNC_NAME], [$1], [
+ AC_DEFUN([gl_CHECK_FUNC_]defn([gl_FUNC_NAME]), [
+ AC_CHECK_FUNCS(defn([gl_FUNC_NAME]))
+ ])
+ AC_REQUIRE([gl_CHECK_FUNC_]defn([gl_FUNC_NAME]))
+ ])
+])
+
+# AC_CHECK_DECLS_ONCE(DECL1 DECL2 ...) is a once-only variant of
+# AC_CHECK_DECLS(DECL1, DECL2, ...).
+AC_DEFUN([AC_CHECK_DECLS_ONCE], [
+ :
+ AC_FOREACH([gl_DECL_NAME], [$1], [
+ AC_DEFUN([gl_CHECK_DECL_]defn([gl_DECL_NAME]), [
+ AC_CHECK_DECLS(defn([gl_DECL_NAME]))
+ ])
+ AC_REQUIRE([gl_CHECK_DECL_]defn([gl_DECL_NAME]))
+ ])
+])
diff --git a/packages/coreutils/coreutils-6.0/uptime-pow-lib.patch b/packages/coreutils/coreutils-6.0/uptime-pow-lib.patch
new file mode 100644
index 0000000000..5eb3fca676
--- /dev/null
+++ b/packages/coreutils/coreutils-6.0/uptime-pow-lib.patch
@@ -0,0 +1,11 @@
+--- coreutils-5.3.0/src/Makefile.am.orig 2005-09-27 22:34:35.659272058 -0700
++++ coreutils-5.3.0/src/Makefile.am 2005-09-27 22:34:39.403507668 -0700
+@@ -74,7 +74,7 @@
+ sleep_LDADD = $(nanosec_libs)
+ tail_LDADD = $(nanosec_libs)
+
+-uptime_LDADD = $(LDADD) $(GETLOADAVG_LIBS)
++uptime_LDADD = $(LDADD) $(POW_LIB) $(GETLOADAVG_LIBS)
+
+ su_LDADD = $(LDADD) $(LIB_CRYPT)
+
diff --git a/packages/coreutils/coreutils-native_6.0.bb b/packages/coreutils/coreutils-native_6.0.bb
new file mode 100644
index 0000000000..ee90981895
--- /dev/null
+++ b/packages/coreutils/coreutils-native_6.0.bb
@@ -0,0 +1,7 @@
+SECTION = "base"
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/coreutils-${PV}"
+S = "${WORKDIR}/coreutils-${PV}"
+
+require coreutils_${PV}.bb
+inherit native
diff --git a/packages/coreutils/coreutils_6.0.bb b/packages/coreutils/coreutils_6.0.bb
new file mode 100644
index 0000000000..59afd67bfb
--- /dev/null
+++ b/packages/coreutils/coreutils_6.0.bb
@@ -0,0 +1,85 @@
+require coreutils.inc
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "ftp://alpha.gnu.org/gnu/coreutils/coreutils-${PV}.tar.bz2 \
+ file://man.patch;patch=1 \
+ file://oe-old-tools.patch;patch=1 \
+ file://onceonly.m4"
+
+# [ gets a special treatment and is not included in this
+bindir_progs = "basename cksum comm csplit cut dir dircolors dirname du \
+ env expand expr factor fmt fold groups head hostid id install \
+ join link logname md5sum mkfifo nice nl nohup od paste pathchk \
+ pinky pr printenv printf ptx readlink seq sha1sum shred sort \
+ split stat sum tac tail tee test tr tsort tty unexpand uniq \
+ unlink users vdir wc who whoami yes \
+ "
+
+# hostname gets a special treatment and is not included in this
+base_bindir_progs = "cat chgrp chmod chown cp date dd echo false kill \
+ ln ls mkdir mknod mv pwd rm rmdir sleep stty sync touch \
+ true uname \
+ "
+
+sbindir_progs= "chroot"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/onceonly.m4 ${S}/m4
+}
+
+do_install () {
+ autotools_do_install
+
+ # Renaming the utilities that should go in /usr/bin
+ for i in ${bindir_progs}; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${PN}; done
+
+ # Renaming and moving the utilities that should go in /bin (FHS)
+ install -d ${D}${base_bindir}
+ for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i.${PN}; done
+
+ # Renaming and moving the utilities that should go in /usr/sbin (FHS)
+ install -d ${D}${sbindir}
+ for i in ${sbindir_progs}; do mv ${D}${bindir}/$i ${D}${sbindir}/$i.${PN}; done
+
+ # [ requires special handling because [.coreutils will cause the sed stuff
+ # in update-alternatives to fail, therefore use lbracket - the name used
+ # for the actual source file.
+ mv ${D}${bindir}/[ ${D}${bindir}/lbracket.${PN}
+ # hostname and uptime separated. busybox's versions are preferred
+ mv ${D}${bindir}/hostname ${D}${base_bindir}/hostname.${PN}
+ mv ${D}${bindir}/uptime ${D}${bindir}/uptime.${PN}
+
+}
+
+pkg_postinst_${PN} () {
+ # The utilities in /usr/bin
+ for i in ${bindir_progs}; do update-alternatives --install ${bindir}/$i $i $i.${PN} 100; done
+
+ # The utilities in /bin
+ for i in ${base_bindir_progs}; do update-alternatives --install ${base_bindir}/$i $i $i.${PN} 100; done
+
+ # The utilities in /usr/sbin
+ for i in ${sbindir_progs}; do update-alternatives --install ${sbindir}/$i $i $i.${PN} 100; done
+
+ # Special cases. uptime and hostname is broken, prefer busybox's version. [ needs to be treated separately.
+ update-alternatives --install ${bindir}/uptime uptime uptime.${PN} 10
+ update-alternatives --install ${base_bindir}/hostname hostname hostname.${PN} 10
+ update-alternatives --install '${bindir}/[' '[' 'lbracket.${PN}' 100
+}
+
+pkg_prerm_${PN} () {
+ # The utilities in /usr/bin
+ for i in ${bindir_progs}; do update-alternatives --remove $i $i.${PN}; done
+
+ # The utilities in /bin
+ for i in ${base_bindir_progs}; do update-alternatives --remove $i $i.${PN}; done
+
+ # The utilities in /usr/sbin
+ for i in ${sbindir_progs}; do update-alternatives --remove $i $i.${PN}; done
+
+ # The special cases
+ update-alternatives --remove hostname hostname.${PN}
+ update-alternatives --remove uptime uptime.${PN}
+ update-alternatives --remove '[' 'lbracket.${PN}'
+}
diff --git a/packages/corsair/corsair_0.2.5.bb b/packages/corsair/corsair_0.2.5.bb
deleted file mode 100644
index d765c51e37..0000000000
--- a/packages/corsair/corsair_0.2.5.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-DESCRIPTION = "RSS aggregator for Qtopia"
-SECTION = "opie/applications"
-LICENSE = "GPL"
-AUTHOR = "Joe Rumsey <joe@rumsey.org>"
-HOMEPAGE = "http://corsair.sf.net/"
-DEPENDS = "opie-pics"
-RDEPENDS = "opie-pics"
-
-inherit palmtop
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/corsair/corsair-${PV}.tar.gz \
- file://corsair-opie.patch;patch=1"
-
-S = "${WORKDIR}/corsair"
-
-do_configure() {
-}
-
-do_install() {
- install -d ${D}${palmtopdir}/pics/
- install -d ${D}${palmtopdir}/apps/Applications/
- install -d ${D}${palmtopdir}/bin
- install -m 0644 ${S}/Corsair.png ${D}${palmtopdir}/pics/
- install -m 0644 ${S}/corsair.desktop ${D}${palmtopdir}/apps/Applications/
- install -m 0644 ${S}/icons/newfeed.png ${S}/icons/get.png ${D}${palmtopdir}/pics/
- install -m 0755 ${S}/corsair ${D}${palmtopdir}/bin/
-}
diff --git a/packages/corsair/corsair_0.2.6.bb b/packages/corsair/corsair_0.2.6.bb
new file mode 100644
index 0000000000..125d419c22
--- /dev/null
+++ b/packages/corsair/corsair_0.2.6.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "RSS aggregator for Qtopia"
+SECTION = "opie/applications"
+LICENSE = "GPL"
+AUTHOR = "Joe Rumsey <joe@rumsey.org>"
+HOMEPAGE = "http://corsair.sf.net/"
+RDEPENDS = "opie-pics"
+
+inherit palmtop
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/corsair/corsair-${PV}.tar.gz \
+ file://corsair-opie.patch;patch=1"
+
+S = "${WORKDIR}/corsair"
+
+do_configure() {
+}
+
+do_install() {
+ install -d ${D}${palmtopdir}/pics/
+ install -d ${D}${palmtopdir}/apps/Applications/
+ install -d ${D}${palmtopdir}/bin
+ install -m 0644 ${S}/Corsair.png ${D}${palmtopdir}/pics/
+ install -m 0644 ${S}/corsair.desktop ${D}${palmtopdir}/apps/Applications/
+ install -m 0644 ${S}/icons/newfeed.png ${S}/icons/get.png ${D}${palmtopdir}/pics/
+ install -m 0755 ${S}/corsair ${D}${palmtopdir}/bin/
+}
diff --git a/packages/corsair/files/corsair-opie.patch b/packages/corsair/files/corsair-opie.patch
index ea651bef44..d1f9401c19 100644
--- a/packages/corsair/files/corsair-opie.patch
+++ b/packages/corsair/files/corsair-opie.patch
@@ -1,11 +1,6 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
--- corsair/corsair.cpp~corsair-opie
+++ corsair/corsair.cpp
-@@ -172,7 +172,7 @@
+@@ -177,7 +177,7 @@
QString CorsairWindow::homeDir()
{
@@ -14,7 +9,7 @@
if(home == "/home" && option("homeReallyIsHome", "false") != "true") {
home = "/media";
}
-@@ -265,7 +265,8 @@
+@@ -274,7 +274,8 @@
QString corsairDir = topDir();
// Don't let device power off while downloading. Will be reenabled when download completes.
@@ -24,7 +19,7 @@
Download *dl = NULL;
-@@ -401,7 +402,8 @@
+@@ -410,7 +410,8 @@
if(m_runningDownloads.isEmpty()) {
emit statusUpdate(res == Download::Success ? "Ready" : "Error");
@@ -34,32 +29,37 @@
}
delete dl;
---- corsair/Makefile~corsair-opie
-+++ corsair/Makefile
-@@ -14,10 +14,10 @@
+--- corsair/Makefile 2006-07-12 09:13:51.000000000 +0200
++++ corsair/Makefile.opie 2006-12-31 09:43:08.000000000 +0100
+@@ -13,12 +13,12 @@
+ # 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.
-
+-
-INCLUDES=-I/opt/Qtopia/include/
-CXXFLAGS=-O $(INCLUDES) -DQWS -fno-rtti -fno-exceptions
-LDFLAGS=-L $(QTDIR)/lib/
-LIBS=-lqte -lqpe -lqtopia -ljpeg -luuid
+-
++
+INCLUDES=-I$(QTDIR)/include
+CXXFLAGS += $(INCLUDES) -DQWS -fno-rtti -fno-exceptions
+LDFLAGS +=-L $(QTDIR)/lib/
+LIBS=-lqte -lqpe
-
++
SOURCES = main.cpp corsair.cpp feeds.cpp download.cpp info.cpp
MOCS = corsair_moc.cpp download_moc.cpp feeds_moc.cpp info_moc.cpp
-@@ -28,12 +28,15 @@
+
+@@ -28,12 +28,16 @@ ICONS=icons/newfeed.png \
icons/play.png
%_moc.cpp: %.h
- $(QTDIR)/bin/moc -o $@ $^
+ $(OE_QMAKE_MOC) -o $@ $^
+
-+#%.o: %.cpp
++# %.o: %.cpp
+# $(CXX) $(CXXFLAGS) -I$(QTDIR)/include -c -o $@ $^
++
OBJS = $(SOURCES:.cpp=.o) $(MOCS:.cpp=.o)
@@ -69,10 +69,12 @@
install: corsair
cp corsair.desktop $(QPEDIR)/apps/Applications
-@@ -54,263 +57,3 @@
- web:
- rsync -e ssh CHANGELOG FAQ README website/* tinyogre@shell.sourceforge.net:/home/groups/c/co/corsair/htdocs/
+@@ -52,291 +56,4 @@ depend:
+ makedepend $(INCLUDES) $(SOURCES)
+ web:
+- rsync -e ssh CHANGELOG FAQ README website/* tinyogre@shell.sourceforge.net:/home/groups/c/co/corsair/htdocs/
+-
-# DO NOT DELETE
-
-main.o: /opt/Qtopia/include/qmainwindow.h /opt/Qtopia/include/qwidget.h
@@ -83,7 +85,9 @@
-main.o: /opt/Qtopia/include/qgarray.h /opt/Qtopia/include/qshared.h
-main.o: /usr/include/string.h /usr/include/features.h
-main.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+-main.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stddef.h
-main.o: /opt/Qtopia/include/qnamespace.h /usr/include/limits.h
+-main.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/limits.h
-main.o: /opt/Qtopia/include/qobject.h /opt/Qtopia/include/qevent.h
-main.o: /opt/Qtopia/include/qregion.h /opt/Qtopia/include/qrect.h
-main.o: /opt/Qtopia/include/qsize.h /opt/Qtopia/include/qpoint.h
@@ -106,7 +110,8 @@
-main.o: /opt/Qtopia/include/qtopia/qcom.h /opt/Qtopia/include/qtopia/quuid.h
-main.o: /usr/include/memory.h /opt/Qtopia/include/qmetaobject.h
-main.o: /opt/Qtopia/include/qconnection.h /opt/Qtopia/include/qstrlist.h
--main.o: /opt/Qtopia/include/qlist.h /opt/Qtopia/include/qglist.h corsair.h
+-main.o: /opt/Qtopia/include/qlist.h /opt/Qtopia/include/qglist.h
+-main.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stdarg.h corsair.h
-main.o: feeds.h /opt/Qtopia/include/qxml.h /opt/Qtopia/include/qmodules.h
-main.o: /opt/Qtopia/include/qtextstream.h /usr/include/stdio.h
-main.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
@@ -124,7 +129,7 @@
-main.o: /opt/Qtopia/include/qsocketdevice.h
-main.o: /opt/Qtopia/include/qhostaddress.h
-main.o: /opt/Qtopia/include/qsocketnotifier.h /opt/Qtopia/include/qurl.h
--main.o: /opt/Qtopia/include/qdir.h /opt/Qtopia/include/qfileinfo.h
+-main.o: /opt/Qtopia/include/qdir.h /opt/Qtopia/include/qfileinfo.h version.h
-corsair.o: /opt/Qtopia/include/qmainwindow.h /opt/Qtopia/include/qwidget.h
-corsair.o: /opt/Qtopia/include/qwindowdefs.h
-corsair.o: /opt/Qtopia/include/qobjectdefs.h /opt/Qtopia/include/qglobal.h
@@ -133,19 +138,21 @@
-corsair.o: /opt/Qtopia/include/qarray.h /opt/Qtopia/include/qgarray.h
-corsair.o: /opt/Qtopia/include/qshared.h /usr/include/string.h
-corsair.o: /usr/include/features.h /usr/include/sys/cdefs.h
--corsair.o: /usr/include/gnu/stubs.h /opt/Qtopia/include/qnamespace.h
--corsair.o: /usr/include/limits.h /opt/Qtopia/include/qobject.h
--corsair.o: /opt/Qtopia/include/qevent.h /opt/Qtopia/include/qregion.h
--corsair.o: /opt/Qtopia/include/qrect.h /opt/Qtopia/include/qsize.h
--corsair.o: /opt/Qtopia/include/qpoint.h /opt/Qtopia/include/qmime.h
--corsair.o: /opt/Qtopia/include/qstringlist.h /opt/Qtopia/include/qvaluelist.h
--corsair.o: /opt/Qtopia/include/qdatastream.h /opt/Qtopia/include/qiodevice.h
--corsair.o: /opt/Qtopia/include/qregexp.h /opt/Qtopia/include/qpaintdevice.h
--corsair.o: /opt/Qtopia/include/qpalette.h /opt/Qtopia/include/qcolor.h
--corsair.o: /opt/Qtopia/include/qbrush.h /opt/Qtopia/include/qcursor.h
--corsair.o: /opt/Qtopia/include/qfont.h /opt/Qtopia/include/qfontmetrics.h
--corsair.o: /opt/Qtopia/include/qfontinfo.h /opt/Qtopia/include/qstyle.h
--corsair.o: /opt/Qtopia/include/qsizepolicy.h
+-corsair.o: /usr/include/gnu/stubs.h
+-corsair.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stddef.h
+-corsair.o: /opt/Qtopia/include/qnamespace.h /usr/include/limits.h
+-corsair.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/limits.h
+-corsair.o: /opt/Qtopia/include/qobject.h /opt/Qtopia/include/qevent.h
+-corsair.o: /opt/Qtopia/include/qregion.h /opt/Qtopia/include/qrect.h
+-corsair.o: /opt/Qtopia/include/qsize.h /opt/Qtopia/include/qpoint.h
+-corsair.o: /opt/Qtopia/include/qmime.h /opt/Qtopia/include/qstringlist.h
+-corsair.o: /opt/Qtopia/include/qvaluelist.h /opt/Qtopia/include/qdatastream.h
+-corsair.o: /opt/Qtopia/include/qiodevice.h /opt/Qtopia/include/qregexp.h
+-corsair.o: /opt/Qtopia/include/qpaintdevice.h /opt/Qtopia/include/qpalette.h
+-corsair.o: /opt/Qtopia/include/qcolor.h /opt/Qtopia/include/qbrush.h
+-corsair.o: /opt/Qtopia/include/qcursor.h /opt/Qtopia/include/qfont.h
+-corsair.o: /opt/Qtopia/include/qfontmetrics.h /opt/Qtopia/include/qfontinfo.h
+-corsair.o: /opt/Qtopia/include/qstyle.h /opt/Qtopia/include/qsizepolicy.h
-corsair.o: /opt/Qtopia/include/qpe/qpeapplication.h
-corsair.o: /opt/Qtopia/include/qtopia/qpeglobal.h
-corsair.o: /opt/Qtopia/include/qapplication.h
@@ -167,6 +174,7 @@
-corsair.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-corsair.o: /usr/include/_G_config.h /usr/include/wchar.h
-corsair.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+-corsair.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stdarg.h
-corsair.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-corsair.o: /opt/Qtopia/include/qfile.h /opt/Qtopia/include/qvaluestack.h
-corsair.o: /opt/Qtopia/include/qlistview.h /opt/Qtopia/include/qscrollview.h
@@ -179,16 +187,17 @@
-corsair.o: /opt/Qtopia/include/qhostaddress.h
-corsair.o: /opt/Qtopia/include/qsocketnotifier.h /opt/Qtopia/include/qurl.h
-corsair.o: /opt/Qtopia/include/qdir.h /opt/Qtopia/include/qfileinfo.h
--corsair.o: /opt/Qtopia/include/qtextbrowser.h /opt/Qtopia/include/qpixmap.h
--corsair.o: /opt/Qtopia/include/qtextview.h /opt/Qtopia/include/qtoolbar.h
--corsair.o: /opt/Qtopia/include/qtoolbutton.h /opt/Qtopia/include/qbutton.h
--corsair.o: /opt/Qtopia/include/qiconset.h /opt/Qtopia/include/qstatusbar.h
--corsair.o: /opt/Qtopia/include/qlineedit.h /opt/Qtopia/include/qhbox.h
--corsair.o: /opt/Qtopia/include/qlayout.h
+-corsair.o: version.h /opt/Qtopia/include/qtextbrowser.h
+-corsair.o: /opt/Qtopia/include/qpixmap.h /opt/Qtopia/include/qtextview.h
+-corsair.o: /opt/Qtopia/include/qtoolbar.h /opt/Qtopia/include/qtoolbutton.h
+-corsair.o: /opt/Qtopia/include/qbutton.h /opt/Qtopia/include/qiconset.h
+-corsair.o: /opt/Qtopia/include/qstatusbar.h /opt/Qtopia/include/qlineedit.h
+-corsair.o: /opt/Qtopia/include/qhbox.h /opt/Qtopia/include/qlayout.h
-corsair.o: /opt/Qtopia/include/qabstractlayout.h /opt/Qtopia/include/qlabel.h
-corsair.o: /opt/Qtopia/include/qclipboard.h /opt/Qtopia/include/qpushbutton.h
-corsair.o: /opt/Qtopia/include/qmenubar.h /opt/Qtopia/include/qpopupmenu.h
-corsair.o: /opt/Qtopia/include/qmenudata.h /opt/Qtopia/include/qprogressbar.h
+-corsair.o: /opt/Qtopia/include/qmessagebox.h /opt/Qtopia/include/qaccel.h
-corsair.o: /opt/Qtopia/include/qtopia/resource.h /opt/Qtopia/include/qimage.h
-corsair.o: /opt/Qtopia/include/qbitmap.h /opt/Qtopia/include/qtopia/config.h
-corsair.o: /opt/Qtopia/include/qtopia/qtopiawinexport.h
@@ -202,14 +211,17 @@
-feeds.o: /opt/Qtopia/include/qglobal.h /opt/Qtopia/include/qconfig.h
-feeds.o: /opt/Qtopia/include/qfeatures.h /usr/include/string.h
-feeds.o: /usr/include/features.h /usr/include/sys/cdefs.h
--feeds.o: /usr/include/gnu/stubs.h /opt/Qtopia/include/qlist.h
--feeds.o: /opt/Qtopia/include/qglist.h /opt/Qtopia/include/qcollection.h
--feeds.o: /opt/Qtopia/include/qxml.h /opt/Qtopia/include/qmodules.h
--feeds.o: /opt/Qtopia/include/qtextstream.h /opt/Qtopia/include/qiodevice.h
--feeds.o: /usr/include/stdio.h /usr/include/bits/types.h
--feeds.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
--feeds.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
+-feeds.o: /usr/include/gnu/stubs.h
+-feeds.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stddef.h
+-feeds.o: /opt/Qtopia/include/qlist.h /opt/Qtopia/include/qglist.h
+-feeds.o: /opt/Qtopia/include/qcollection.h /opt/Qtopia/include/qxml.h
+-feeds.o: /opt/Qtopia/include/qmodules.h /opt/Qtopia/include/qtextstream.h
+-feeds.o: /opt/Qtopia/include/qiodevice.h /usr/include/stdio.h
+-feeds.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
+-feeds.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+-feeds.o: /usr/include/_G_config.h /usr/include/wchar.h
-feeds.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+-feeds.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stdarg.h
-feeds.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-feeds.o: /opt/Qtopia/include/qfile.h /opt/Qtopia/include/qstringlist.h
-feeds.o: /opt/Qtopia/include/qvaluelist.h /opt/Qtopia/include/qdatastream.h
@@ -218,46 +230,52 @@
-feeds.o: /opt/Qtopia/include/qscrollview.h /opt/Qtopia/include/qframe.h
-feeds.o: /opt/Qtopia/include/qwidget.h /opt/Qtopia/include/qwindowdefs.h
-feeds.o: /opt/Qtopia/include/qobjectdefs.h /opt/Qtopia/include/qnamespace.h
--feeds.o: /usr/include/limits.h /opt/Qtopia/include/qobject.h
--feeds.o: /opt/Qtopia/include/qevent.h /opt/Qtopia/include/qregion.h
--feeds.o: /opt/Qtopia/include/qrect.h /opt/Qtopia/include/qsize.h
--feeds.o: /opt/Qtopia/include/qpoint.h /opt/Qtopia/include/qmime.h
--feeds.o: /opt/Qtopia/include/qpaintdevice.h /opt/Qtopia/include/qpalette.h
--feeds.o: /opt/Qtopia/include/qcolor.h /opt/Qtopia/include/qbrush.h
--feeds.o: /opt/Qtopia/include/qcursor.h /opt/Qtopia/include/qfont.h
--feeds.o: /opt/Qtopia/include/qfontmetrics.h /opt/Qtopia/include/qfontinfo.h
--feeds.o: /opt/Qtopia/include/qstyle.h /opt/Qtopia/include/qsizepolicy.h
--feeds.o: /opt/Qtopia/include/qscrollbar.h /opt/Qtopia/include/qrangecontrol.h
--feeds.o: /opt/Qtopia/include/qdrawutil.h /opt/Qtopia/include/qpainter.h
--feeds.o: /opt/Qtopia/include/qpen.h /opt/Qtopia/include/qpointarray.h
--feeds.o: /opt/Qtopia/include/qwmatrix.h /opt/Qtopia/include/qdatetime.h log.h
--feeds.o: download.h /opt/Qtopia/include/qsocket.h
--feeds.o: /opt/Qtopia/include/qsocketdevice.h
+-feeds.o: /usr/include/limits.h
+-feeds.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/limits.h
+-feeds.o: /opt/Qtopia/include/qobject.h /opt/Qtopia/include/qevent.h
+-feeds.o: /opt/Qtopia/include/qregion.h /opt/Qtopia/include/qrect.h
+-feeds.o: /opt/Qtopia/include/qsize.h /opt/Qtopia/include/qpoint.h
+-feeds.o: /opt/Qtopia/include/qmime.h /opt/Qtopia/include/qpaintdevice.h
+-feeds.o: /opt/Qtopia/include/qpalette.h /opt/Qtopia/include/qcolor.h
+-feeds.o: /opt/Qtopia/include/qbrush.h /opt/Qtopia/include/qcursor.h
+-feeds.o: /opt/Qtopia/include/qfont.h /opt/Qtopia/include/qfontmetrics.h
+-feeds.o: /opt/Qtopia/include/qfontinfo.h /opt/Qtopia/include/qstyle.h
+-feeds.o: /opt/Qtopia/include/qsizepolicy.h /opt/Qtopia/include/qscrollbar.h
+-feeds.o: /opt/Qtopia/include/qrangecontrol.h /opt/Qtopia/include/qdrawutil.h
+-feeds.o: /opt/Qtopia/include/qpainter.h /opt/Qtopia/include/qpen.h
+-feeds.o: /opt/Qtopia/include/qpointarray.h /opt/Qtopia/include/qwmatrix.h
+-feeds.o: /opt/Qtopia/include/qdatetime.h log.h download.h
+-feeds.o: /opt/Qtopia/include/qsocket.h /opt/Qtopia/include/qsocketdevice.h
-feeds.o: /opt/Qtopia/include/qhostaddress.h
-feeds.o: /opt/Qtopia/include/qsocketnotifier.h /opt/Qtopia/include/qurl.h
-feeds.o: /opt/Qtopia/include/qdir.h /opt/Qtopia/include/qstrlist.h
--feeds.o: /opt/Qtopia/include/qfileinfo.h /opt/Qtopia/include/qmainwindow.h
+-feeds.o: /opt/Qtopia/include/qfileinfo.h version.h
+-feeds.o: /opt/Qtopia/include/qmainwindow.h
-feeds.o: /opt/Qtopia/include/qtopia/resource.h
-feeds.o: /opt/Qtopia/include/qtopia/qpeglobal.h /opt/Qtopia/include/qimage.h
-feeds.o: /opt/Qtopia/include/qpixmap.h /opt/Qtopia/include/qbitmap.h
-feeds.o: /opt/Qtopia/include/qiconset.h opmlparser.h feedparser.h
+-feeds.o: /usr/include/ctype.h /usr/include/endian.h
+-feeds.o: /usr/include/bits/endian.h
-download.o: corsair.h feeds.h /opt/Qtopia/include/qstring.h
-download.o: /opt/Qtopia/include/qcstring.h /opt/Qtopia/include/qarray.h
-download.o: /opt/Qtopia/include/qgarray.h /opt/Qtopia/include/qshared.h
-download.o: /opt/Qtopia/include/qglobal.h /opt/Qtopia/include/qconfig.h
-download.o: /opt/Qtopia/include/qfeatures.h /usr/include/string.h
-download.o: /usr/include/features.h /usr/include/sys/cdefs.h
--download.o: /usr/include/gnu/stubs.h /opt/Qtopia/include/qlist.h
--download.o: /opt/Qtopia/include/qglist.h /opt/Qtopia/include/qcollection.h
--download.o: /opt/Qtopia/include/qxml.h /opt/Qtopia/include/qmodules.h
--download.o: /opt/Qtopia/include/qtextstream.h /opt/Qtopia/include/qiodevice.h
--download.o: /usr/include/stdio.h /usr/include/bits/types.h
--download.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
--download.o: /usr/include/libio.h /usr/include/_G_config.h
--download.o: /usr/include/wchar.h /usr/include/bits/wchar.h
--download.o: /usr/include/gconv.h /usr/include/bits/stdio_lim.h
--download.o: /usr/include/bits/sys_errlist.h /opt/Qtopia/include/qfile.h
--download.o: /opt/Qtopia/include/qstringlist.h
+-download.o: /usr/include/gnu/stubs.h
+-download.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stddef.h
+-download.o: /opt/Qtopia/include/qlist.h /opt/Qtopia/include/qglist.h
+-download.o: /opt/Qtopia/include/qcollection.h /opt/Qtopia/include/qxml.h
+-download.o: /opt/Qtopia/include/qmodules.h /opt/Qtopia/include/qtextstream.h
+-download.o: /opt/Qtopia/include/qiodevice.h /usr/include/stdio.h
+-download.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
+-download.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+-download.o: /usr/include/_G_config.h /usr/include/wchar.h
+-download.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+-download.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stdarg.h
+-download.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
+-download.o: /opt/Qtopia/include/qfile.h /opt/Qtopia/include/qstringlist.h
-download.o: /opt/Qtopia/include/qvaluelist.h
-download.o: /opt/Qtopia/include/qdatastream.h /opt/Qtopia/include/qregexp.h
-download.o: /opt/Qtopia/include/qvaluestack.h /opt/Qtopia/include/qmap.h
@@ -266,6 +284,7 @@
-download.o: /opt/Qtopia/include/qwindowdefs.h
-download.o: /opt/Qtopia/include/qobjectdefs.h
-download.o: /opt/Qtopia/include/qnamespace.h /usr/include/limits.h
+-download.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/limits.h
-download.o: /opt/Qtopia/include/qobject.h /opt/Qtopia/include/qevent.h
-download.o: /opt/Qtopia/include/qregion.h /opt/Qtopia/include/qrect.h
-download.o: /opt/Qtopia/include/qsize.h /opt/Qtopia/include/qpoint.h
@@ -285,21 +304,25 @@
-download.o: /opt/Qtopia/include/qhostaddress.h
-download.o: /opt/Qtopia/include/qsocketnotifier.h /opt/Qtopia/include/qurl.h
-download.o: /opt/Qtopia/include/qdir.h /opt/Qtopia/include/qstrlist.h
--download.o: /opt/Qtopia/include/qfileinfo.h /opt/Qtopia/include/qmainwindow.h
+-download.o: /opt/Qtopia/include/qfileinfo.h version.h
+-download.o: /opt/Qtopia/include/qmainwindow.h
-info.o: corsair.h feeds.h /opt/Qtopia/include/qstring.h
-info.o: /opt/Qtopia/include/qcstring.h /opt/Qtopia/include/qarray.h
-info.o: /opt/Qtopia/include/qgarray.h /opt/Qtopia/include/qshared.h
-info.o: /opt/Qtopia/include/qglobal.h /opt/Qtopia/include/qconfig.h
-info.o: /opt/Qtopia/include/qfeatures.h /usr/include/string.h
-info.o: /usr/include/features.h /usr/include/sys/cdefs.h
--info.o: /usr/include/gnu/stubs.h /opt/Qtopia/include/qlist.h
--info.o: /opt/Qtopia/include/qglist.h /opt/Qtopia/include/qcollection.h
--info.o: /opt/Qtopia/include/qxml.h /opt/Qtopia/include/qmodules.h
--info.o: /opt/Qtopia/include/qtextstream.h /opt/Qtopia/include/qiodevice.h
--info.o: /usr/include/stdio.h /usr/include/bits/types.h
--info.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h
--info.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
+-info.o: /usr/include/gnu/stubs.h
+-info.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stddef.h
+-info.o: /opt/Qtopia/include/qlist.h /opt/Qtopia/include/qglist.h
+-info.o: /opt/Qtopia/include/qcollection.h /opt/Qtopia/include/qxml.h
+-info.o: /opt/Qtopia/include/qmodules.h /opt/Qtopia/include/qtextstream.h
+-info.o: /opt/Qtopia/include/qiodevice.h /usr/include/stdio.h
+-info.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
+-info.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+-info.o: /usr/include/_G_config.h /usr/include/wchar.h
-info.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+-info.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stdarg.h
-info.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-info.o: /opt/Qtopia/include/qfile.h /opt/Qtopia/include/qstringlist.h
-info.o: /opt/Qtopia/include/qvaluelist.h /opt/Qtopia/include/qdatastream.h
@@ -308,28 +331,34 @@
-info.o: /opt/Qtopia/include/qscrollview.h /opt/Qtopia/include/qframe.h
-info.o: /opt/Qtopia/include/qwidget.h /opt/Qtopia/include/qwindowdefs.h
-info.o: /opt/Qtopia/include/qobjectdefs.h /opt/Qtopia/include/qnamespace.h
--info.o: /usr/include/limits.h /opt/Qtopia/include/qobject.h
--info.o: /opt/Qtopia/include/qevent.h /opt/Qtopia/include/qregion.h
--info.o: /opt/Qtopia/include/qrect.h /opt/Qtopia/include/qsize.h
--info.o: /opt/Qtopia/include/qpoint.h /opt/Qtopia/include/qmime.h
--info.o: /opt/Qtopia/include/qpaintdevice.h /opt/Qtopia/include/qpalette.h
--info.o: /opt/Qtopia/include/qcolor.h /opt/Qtopia/include/qbrush.h
--info.o: /opt/Qtopia/include/qcursor.h /opt/Qtopia/include/qfont.h
--info.o: /opt/Qtopia/include/qfontmetrics.h /opt/Qtopia/include/qfontinfo.h
--info.o: /opt/Qtopia/include/qstyle.h /opt/Qtopia/include/qsizepolicy.h
--info.o: /opt/Qtopia/include/qscrollbar.h /opt/Qtopia/include/qrangecontrol.h
--info.o: /opt/Qtopia/include/qdrawutil.h /opt/Qtopia/include/qpainter.h
--info.o: /opt/Qtopia/include/qpen.h /opt/Qtopia/include/qpointarray.h
--info.o: /opt/Qtopia/include/qwmatrix.h /opt/Qtopia/include/qdatetime.h log.h
--info.o: download.h /opt/Qtopia/include/qsocket.h
--info.o: /opt/Qtopia/include/qsocketdevice.h
+-info.o: /usr/include/limits.h
+-info.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/limits.h
+-info.o: /opt/Qtopia/include/qobject.h /opt/Qtopia/include/qevent.h
+-info.o: /opt/Qtopia/include/qregion.h /opt/Qtopia/include/qrect.h
+-info.o: /opt/Qtopia/include/qsize.h /opt/Qtopia/include/qpoint.h
+-info.o: /opt/Qtopia/include/qmime.h /opt/Qtopia/include/qpaintdevice.h
+-info.o: /opt/Qtopia/include/qpalette.h /opt/Qtopia/include/qcolor.h
+-info.o: /opt/Qtopia/include/qbrush.h /opt/Qtopia/include/qcursor.h
+-info.o: /opt/Qtopia/include/qfont.h /opt/Qtopia/include/qfontmetrics.h
+-info.o: /opt/Qtopia/include/qfontinfo.h /opt/Qtopia/include/qstyle.h
+-info.o: /opt/Qtopia/include/qsizepolicy.h /opt/Qtopia/include/qscrollbar.h
+-info.o: /opt/Qtopia/include/qrangecontrol.h /opt/Qtopia/include/qdrawutil.h
+-info.o: /opt/Qtopia/include/qpainter.h /opt/Qtopia/include/qpen.h
+-info.o: /opt/Qtopia/include/qpointarray.h /opt/Qtopia/include/qwmatrix.h
+-info.o: /opt/Qtopia/include/qdatetime.h log.h download.h
+-info.o: /opt/Qtopia/include/qsocket.h /opt/Qtopia/include/qsocketdevice.h
-info.o: /opt/Qtopia/include/qhostaddress.h
-info.o: /opt/Qtopia/include/qsocketnotifier.h /opt/Qtopia/include/qurl.h
-info.o: /opt/Qtopia/include/qdir.h /opt/Qtopia/include/qstrlist.h
--info.o: /opt/Qtopia/include/qfileinfo.h /opt/Qtopia/include/qmainwindow.h
--info.o: info.h /opt/Qtopia/include/qtextbrowser.h
--info.o: /opt/Qtopia/include/qpixmap.h /opt/Qtopia/include/qtextview.h
--info.o: /opt/Qtopia/include/qtopia/qprocess.h
+-info.o: /opt/Qtopia/include/qfileinfo.h version.h
+-info.o: /opt/Qtopia/include/qmainwindow.h info.h
+-info.o: /opt/Qtopia/include/qtextbrowser.h /opt/Qtopia/include/qpixmap.h
+-info.o: /opt/Qtopia/include/qtextview.h /opt/Qtopia/include/qdialog.h
+-info.o: /opt/Qtopia/include/qlayout.h /opt/Qtopia/include/qabstractlayout.h
+-info.o: /opt/Qtopia/include/qlabel.h /opt/Qtopia/include/qlineedit.h
+-info.o: /opt/Qtopia/include/qhbox.h /opt/Qtopia/include/qcheckbox.h
+-info.o: /opt/Qtopia/include/qbutton.h /opt/Qtopia/include/qtopia/qprocess.h
-info.o: /opt/Qtopia/include/qtopia/qpeglobal.h
-info.o: /opt/Qtopia/include/qtopia/qcopenvelope_qws.h
-info.o: /opt/Qtopia/include/qcopchannel_qws.h
++ rsync -e ssh CHANGELOG FAQ README website/* tinyogre@shell.sourceforge.net:/home/groups/c/co/corsair/htdocs/
diff --git a/packages/cpio/cpio_2.5.bb b/packages/cpio/cpio_2.5.bb
index 9762b2e764..c21a59a44a 100644
--- a/packages/cpio/cpio_2.5.bb
+++ b/packages/cpio/cpio_2.5.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "GNU cpio is a program to manage archives of files."
HOMEPAGE = "http://www.gnu.org/software/cpio/"
SECTION = "console"
LICENSE = "GPL"
-PR = "r3"
+PR = "r4"
DEPENDS += " texinfo-native "
@@ -14,16 +14,20 @@ inherit autotools
do_install () {
autotools_do_install
+ install -d ${D}${base_bindir}/
+ mv ${D}${bindir}/cpio ${D}${base_bindir}/cpio.${PN}
mv ${D}${libexecdir}/rmt ${D}${libexecdir}/rmt.${PN}
}
pkg_postinst_${PN} () {
+ update-alternatives --install ${base_bindir}/cpio cpio cpio.${PN} 100
update-alternatives --install ${libexecdir}/rmt rmt rmt.${PN} 50
}
pkg_prerm_${PN} () {
+ update-alternatives --remove cpio cpio.${PN}
update-alternatives --remove rmt rmt.${PN}
}
diff --git a/packages/cppunit/cppunit_1.10.2.bb b/packages/cppunit/cppunit_1.10.2.bb
index def3c9d1f3..e4c146eede 100644
--- a/packages/cppunit/cppunit_1.10.2.bb
+++ b/packages/cppunit/cppunit_1.10.2.bb
@@ -9,7 +9,9 @@ SECTION = "devel"
SRC_URI = "${SOURCEFORGE_MIRROR}/cppunit/cppunit-${PV}.tar.gz"
-inherit autotools
+inherit autotools binconfig
+
+CXXFLAGS_powerpc += "-lstdc++"
do_stage () {
autotools_stage_includes
diff --git a/packages/cron/cron-3.0pl1/nonrootinstall.patch b/packages/cron/cron-3.0pl1/nonrootinstall.patch
index 375862d905..e223ba2e6b 100644
--- a/packages/cron/cron-3.0pl1/nonrootinstall.patch
+++ b/packages/cron/cron-3.0pl1/nonrootinstall.patch
@@ -21,8 +21,8 @@
install : all
- $(INSTALL) -c -m 111 -o root -s cron $(DESTSBIN)/
- $(INSTALL) -c -m 4111 -o root -s crontab $(DESTBIN)/
-+ $(INSTALL) -c -m 111 $(INSTALLOWN) -s cron $(DESTSBIN)/
-+ $(INSTALL) -c -m 4111 $(INSTALLOWN) -s crontab $(DESTBIN)/
++ $(INSTALL) -c -m 111 $(INSTALLOWN) cron $(DESTSBIN)/
++ $(INSTALL) -c -m 4111 $(INSTALLOWN) crontab $(DESTBIN)/
sh putman.sh crontab.1 $(DESTMAN)
sh putman.sh cron.8 $(DESTMAN)
sh putman.sh crontab.5 $(DESTMAN)
diff --git a/packages/cron/cron_3.0pl1.bb b/packages/cron/cron_3.0pl1.bb
index 4d543de6c7..6b2a850eca 100644
--- a/packages/cron/cron_3.0pl1.bb
+++ b/packages/cron/cron_3.0pl1.bb
@@ -1,7 +1,7 @@
SECTION = "base"
DESCRIPTION = "Vixie cron."
LICENSE = "cron"
-PR="r7"
+PR="r8"
DEPENDS += "install-native"
SRC_URI = "http://ibiblio.org/pub/Linux/system/daemons/cron/cron${PV}.tar.gz \
diff --git a/packages/cups/cups_1.2.10.bb b/packages/cups/cups_1.2.10.bb
new file mode 100644
index 0000000000..8201dd9201
--- /dev/null
+++ b/packages/cups/cups_1.2.10.bb
@@ -0,0 +1,76 @@
+DESCRIPTION = "An Internet printing system for Unix."
+SECTION = "console/utils"
+LICENSE = "GPL LGPL"
+DEPENDS = "gnutls jpeg dbus dbus-glib libpng zlib install-native fakeroot-native"
+PR = "r0"
+
+SRC_URI = "ftp://ftp3.easysw.com/pub/cups/${PV}/cups-${PV}-source.tar.bz2 \
+ "
+
+inherit autotools binconfig
+
+LDFLAGS += " -L${STAGING_LIBDIR} "
+
+EXTRA_OECONF = " \
+ --enable-gnutls \
+ --enable-dbus \
+ --enable-browsing \
+ --disable-openssl \
+ --disable-tiff \
+ --without-php \
+ --without-perl \
+ --without-python \
+ --without-java \
+ "
+
+
+do_configure() {
+ gnu-configize
+ libtoolize --force
+ oe_runconf
+}
+
+do_compile () {
+ sed -i s:STRIP:NOSTRIP: Makedefs
+ sed -i s:serial:: backend/Makefile
+
+ echo "all:" > man/Makefile
+ echo "install:" >> man/Makefile
+
+ oe_runmake "SSLLIBS=-lgnutls -L${STAGING_LIBDIR}" \
+ "LIBPNG=-lpng -lm -L${STAGING_LIBDIR}" \
+ "LIBJPEG=-ljpeg -L${STAGING_LIBDIR}" \
+ "LIBZ=-lz -L${STAGING_LIBDIR}" \
+ "-I."
+}
+
+fakeroot do_install () {
+ oe_runmake "DSTROOT=${D}" install
+}
+
+do_stage () {
+ install -d ${STAGING_INCDIR}/cups
+ install ${S}/cups/*.h ${STAGING_INCDIR}/cups/
+ install ${S}/filter/*.h ${STAGING_INCDIR}/cups/
+ oe_libinstall -C cups -so libcups ${STAGING_LIBDIR}
+ oe_libinstall -C filter -so libcupsimage ${STAGING_LIBDIR}
+}
+
+FILES_${PN}-dbg += "${libdir}/cups/backend/.debug \
+ ${libdir}/cups/cgi-bin/.debug \
+ ${libdir}/cups/filter/.debug \
+ ${libdir}/cups/monitor/.debug \
+ ${libdir}/cups/notifier/.debug \
+ ${libdir}/cups/daemon/.debug \
+ "
+#package the html for the webgui inside the main packages (~1MB uncompressed)
+
+FILES_${PN} += "${datadir}/doc/cups/images \
+ ${datadir}/doc/cups/*html \
+ ${datadir}/doc/cups/*.css \
+ ${datadir}/icons/ \
+ "
+
+
+
+
diff --git a/packages/cups/cups_1.2.7.bb b/packages/cups/cups_1.2.7.bb
index acd735705c..24249fa3b1 100644
--- a/packages/cups/cups_1.2.7.bb
+++ b/packages/cups/cups_1.2.7.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "An Internet printing system for Unix."
SECTION = "console/utils"
LICENSE = "GPL LGPL"
DEPENDS = "gnutls jpeg dbus dbus-glib libpng zlib install-native fakeroot-native"
-PR = "r0"
+PR = "r1"
SRC_URI = "ftp://ftp3.easysw.com/pub/cups/${PV}/cups-${PV}-source.tar.bz2 \
"
@@ -17,6 +17,10 @@ EXTRA_OECONF = " \
--enable-browsing \
--disable-openssl \
--disable-tiff \
+ --without-php \
+ --without-perl \
+ --without-python \
+ --without-java \
"
@@ -52,7 +56,15 @@ do_stage () {
oe_libinstall -C filter -so libcupsimage ${STAGING_LIBDIR}
}
+FILES_${PN}-dbg += "${libdir}/cups/backend/.debug \
+ ${libdir}/cups/cgi-bin/.debug \
+ ${libdir}/cups/filter/.debug \
+ ${libdir}/cups/monitor/.debug \
+ ${libdir}/cups/notifier/.debug \
+ ${libdir}/cups/daemon/.debug \
+ "
#package the html for the webgui inside the main packages (~1MB uncompressed)
+
FILES_${PN} += "${datadir}/doc/cups/images \
${datadir}/doc/cups/*html \
${datadir}/doc/cups/*.css \
diff --git a/packages/curl/curl_7.16.0.bb b/packages/curl/curl_7.16.0.bb
new file mode 100644
index 0000000000..df98a6b4f2
--- /dev/null
+++ b/packages/curl/curl_7.16.0.bb
@@ -0,0 +1,51 @@
+DESCRIPTION = "Command line tool and library for client-side URL transfers."
+LICENSE = "MIT"
+DEPENDS = "zlib gnutls"
+SECTION = "console/network"
+PR = "r1"
+
+SRC_URI = "http://curl.haxx.se/download/curl-${PV}.tar.bz2"
+S = "${WORKDIR}/curl-${PV}"
+
+inherit autotools pkgconfig binconfig
+
+EXTRA_OECONF = "--with-zlib=${STAGING_LIBDIR}/../ \
+ --with-gnutls=${STAGING_BINDIR_CROSS}/ \
+ --without-ssl \
+ --with-random=/dev/urandom \
+ --without-idn \
+ --enable-crypto-auth \
+ "
+
+do_configure_prepend() {
+ sed -i s:OPT_GNUTLS/bin:OPT_GNUTLS:g configure.ac
+}
+
+do_stage () {
+ install -d ${STAGING_INCDIR}/curl
+ install -m 0644 ${S}/include/curl/*.h ${STAGING_INCDIR}/curl/
+ oe_libinstall -so -a -C lib libcurl ${STAGING_LIBDIR}
+}
+
+PACKAGES += "${PN}-certs libcurl libcurl-dev libcurl-doc"
+
+FILES_${PN} = "${bindir}/curl"
+
+FILES_${PN}-certs = "${datadir}/curl/curl-*"
+PACKAGE_ARCH_${PN}-certs = "all"
+
+FILES_${PN}-doc = "${mandir}/man1/curl.1"
+
+FILES_lib${PN} = "${libdir}/lib*.so.*"
+RRECOMMENDS_lib${PN} += "${PN}-certs"
+FILES_lib${PN}-dev = "${includedir} \
+ ${libdir}/lib*.so \
+ ${libdir}/lib*.a \
+ ${libdir}/lib*.la \
+ ${libdir}/pkgconfig \
+ ${datadir}/aclocal \
+ ${bindir}/*-config"
+
+FILES_lib${PN}-doc = "${mandir}/man3 \
+ ${mandir}/man1/curl-config.1"
+
diff --git a/packages/cvs/cvs_1.12.8.bb b/packages/cvs/cvs_1.12.8.bb
index 51aa9de2fb..b472a451eb 100644
--- a/packages/cvs/cvs_1.12.8.bb
+++ b/packages/cvs/cvs_1.12.8.bb
@@ -4,7 +4,7 @@ PRIORITY = "optional"
DEPENDS = ""
LICENSE = "GPL"
-SRC_URI = "https://cvs.cvshome.org/files/documents/19/170/cvs-${PV}.tar.bz2 \
+SRC_URI = "http://musthave.sunbase.org/progs/ccvs/Old/cvs-${PV}/cvs-${PV}.tar.bz2 \
file://m4.patch;patch=1"
inherit autotools gettext
diff --git a/packages/cyrus-imapd/cyrus-imapd-2.2.12/remove-install-strip.patch b/packages/cyrus-imapd/cyrus-imapd-2.2.12/remove-install-strip.patch
new file mode 100644
index 0000000000..bb43d16516
--- /dev/null
+++ b/packages/cyrus-imapd/cyrus-imapd-2.2.12/remove-install-strip.patch
@@ -0,0 +1,45 @@
+---
+ cyrus-imapd-2.2.12/imtest/Makefile.in | 2 +-
+ cyrus-imapd-2.2.12/installsieve/Makefile.in | 2 +-
+ cyrus-imapd-2.2.12/netnews/Makefile.in | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+Index: cyrus-imapd-2.2.12/imtest/Makefile.in
+===================================================================
+--- cyrus-imapd-2.2.12.orig/imtest/Makefile.in
++++ cyrus-imapd-2.2.12/imtest/Makefile.in
+@@ -72,7 +72,7 @@
+ all: imtest
+
+ install:
+- $(INSTALL) -s -m 755 imtest $(DESTDIR)$(exec_prefix)/bin
++ $(INSTALL) -m 755 imtest $(DESTDIR)$(exec_prefix)/bin
+ ln -f $(DESTDIR)$(exec_prefix)/bin/imtest $(DESTDIR)$(exec_prefix)/bin/pop3test
+ ln -f $(DESTDIR)$(exec_prefix)/bin/imtest $(DESTDIR)$(exec_prefix)/bin/nntptest
+ ln -f $(DESTDIR)$(exec_prefix)/bin/imtest $(DESTDIR)$(exec_prefix)/bin/lmtptest
+Index: cyrus-imapd-2.2.12/installsieve/Makefile.in
+===================================================================
+--- cyrus-imapd-2.2.12.orig/installsieve/Makefile.in
++++ cyrus-imapd-2.2.12/installsieve/Makefile.in
+@@ -66,7 +66,7 @@
+ all: installsieve
+
+ install:
+- $(INSTALL) -s -m 755 installsieve $(DESTDIR)$(exec_prefix)/bin
++ $(INSTALL) -m 755 installsieve $(DESTDIR)$(exec_prefix)/bin
+
+ OBJS=lex.o mystring.o request.o isieve.o
+
+Index: cyrus-imapd-2.2.12/netnews/Makefile.in
+===================================================================
+--- cyrus-imapd-2.2.12.orig/netnews/Makefile.in
++++ cyrus-imapd-2.2.12/netnews/Makefile.in
+@@ -69,7 +69,7 @@
+ all: remotepurge
+
+ install:
+- $(INSTALL) -s -m 755 remotepurge $(DESTDIR)$(service_path)
++ $(INSTALL) -m 755 remotepurge $(DESTDIR)$(service_path)
+
+ .c.o:
+ $(CC) -c $(CPPFLAGS) $(DEFS) $(CFLAGS) $<
diff --git a/packages/cyrus-imapd/cyrus-imapd_2.2.12.bb b/packages/cyrus-imapd/cyrus-imapd_2.2.12.bb
index 14fb728304..8167719aab 100644
--- a/packages/cyrus-imapd/cyrus-imapd_2.2.12.bb
+++ b/packages/cyrus-imapd/cyrus-imapd_2.2.12.bb
@@ -1,7 +1,7 @@
SECTION = "console/network"
DEPENDS = "cyrus-sasl virtual/db"
LICENSE = "BSD"
-PR = "r9"
+PR = "r11"
DEPENDS += "install-native"
SRC_URI = "ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-${PV}.tar.gz \
@@ -13,6 +13,7 @@ SRC_URI = "ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-${PV}.tar.gz \
file://cyrus.conf_2.2 \
file://imapd.conf_2.2 \
file://volatiles \
+ file://remove-install-strip.patch;patch=1 \
"
inherit autotools update-rc.d
diff --git a/packages/cyrus-imapd/files/volatiles b/packages/cyrus-imapd/files/volatiles
index e0a55493b3..a95841c53c 100644
--- a/packages/cyrus-imapd/files/volatiles
+++ b/packages/cyrus-imapd/files/volatiles
@@ -1,63 +1,63 @@
-d cyrus mail 0755 /var/lib/cyrus
-d cyrus root 0755 /var/lib/cyrus/db
-d cyrus mail 0755 /var/lib/cyrus/proc
-d cyrus mail 0755 /var/lib/cyrus/sieve
+d cyrus mail 0755 /var/lib/cyrus none
+d cyrus root 0755 /var/lib/cyrus/db none
+d cyrus mail 0755 /var/lib/cyrus/proc none
+d cyrus mail 0755 /var/lib/cyrus/sieve none
# if only i could: d cyrus mail 0755 /var/lib/cyrus/sieve/{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
-d cyrus mail 0755 /var/lib/cyrus/sieve/a
-d cyrus mail 0755 /var/lib/cyrus/sieve/b
-d cyrus mail 0755 /var/lib/cyrus/sieve/c
-d cyrus mail 0755 /var/lib/cyrus/sieve/d
-d cyrus mail 0755 /var/lib/cyrus/sieve/e
-d cyrus mail 0755 /var/lib/cyrus/sieve/f
-d cyrus mail 0755 /var/lib/cyrus/sieve/g
-d cyrus mail 0755 /var/lib/cyrus/sieve/h
-d cyrus mail 0755 /var/lib/cyrus/sieve/i
-d cyrus mail 0755 /var/lib/cyrus/sieve/j
-d cyrus mail 0755 /var/lib/cyrus/sieve/k
-d cyrus mail 0755 /var/lib/cyrus/sieve/l
-d cyrus mail 0755 /var/lib/cyrus/sieve/m
-d cyrus mail 0755 /var/lib/cyrus/sieve/n
-d cyrus mail 0755 /var/lib/cyrus/sieve/o
-d cyrus mail 0755 /var/lib/cyrus/sieve/p
-d cyrus mail 0755 /var/lib/cyrus/sieve/q
-d cyrus mail 0755 /var/lib/cyrus/sieve/r
-d cyrus mail 0755 /var/lib/cyrus/sieve/s
-d cyrus mail 0755 /var/lib/cyrus/sieve/t
-d cyrus mail 0755 /var/lib/cyrus/sieve/u
-d cyrus mail 0755 /var/lib/cyrus/sieve/v
-d cyrus mail 0755 /var/lib/cyrus/sieve/w
-d cyrus mail 0755 /var/lib/cyrus/sieve/x
-d cyrus mail 0755 /var/lib/cyrus/sieve/y
-d cyrus mail 0755 /var/lib/cyrus/sieve/z
-d cyrus root 0755 /var/lib/cyrus/socket
-d cyrus mail 0755 /var/lib/cyrus/user
+d cyrus mail 0755 /var/lib/cyrus/sieve/a none
+d cyrus mail 0755 /var/lib/cyrus/sieve/b none
+d cyrus mail 0755 /var/lib/cyrus/sieve/c none
+d cyrus mail 0755 /var/lib/cyrus/sieve/d none
+d cyrus mail 0755 /var/lib/cyrus/sieve/e none
+d cyrus mail 0755 /var/lib/cyrus/sieve/f none
+d cyrus mail 0755 /var/lib/cyrus/sieve/g none
+d cyrus mail 0755 /var/lib/cyrus/sieve/h none
+d cyrus mail 0755 /var/lib/cyrus/sieve/i none
+d cyrus mail 0755 /var/lib/cyrus/sieve/j none
+d cyrus mail 0755 /var/lib/cyrus/sieve/k none
+d cyrus mail 0755 /var/lib/cyrus/sieve/l none
+d cyrus mail 0755 /var/lib/cyrus/sieve/m none
+d cyrus mail 0755 /var/lib/cyrus/sieve/n none
+d cyrus mail 0755 /var/lib/cyrus/sieve/o none
+d cyrus mail 0755 /var/lib/cyrus/sieve/p none
+d cyrus mail 0755 /var/lib/cyrus/sieve/q none
+d cyrus mail 0755 /var/lib/cyrus/sieve/r none
+d cyrus mail 0755 /var/lib/cyrus/sieve/s none
+d cyrus mail 0755 /var/lib/cyrus/sieve/t none
+d cyrus mail 0755 /var/lib/cyrus/sieve/u none
+d cyrus mail 0755 /var/lib/cyrus/sieve/v none
+d cyrus mail 0755 /var/lib/cyrus/sieve/w none
+d cyrus mail 0755 /var/lib/cyrus/sieve/x none
+d cyrus mail 0755 /var/lib/cyrus/sieve/y none
+d cyrus mail 0755 /var/lib/cyrus/sieve/z none
+d cyrus root 0755 /var/lib/cyrus/socket none
+d cyrus mail 0755 /var/lib/cyrus/user none
# if only i could: d cyrus mail 0755 /var/lib/cyrus/user/{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
-d cyrus mail 0755 /var/lib/cyrus/user/a
-d cyrus mail 0755 /var/lib/cyrus/user/b
-d cyrus mail 0755 /var/lib/cyrus/user/c
-d cyrus mail 0755 /var/lib/cyrus/user/d
-d cyrus mail 0755 /var/lib/cyrus/user/e
-d cyrus mail 0755 /var/lib/cyrus/user/f
-d cyrus mail 0755 /var/lib/cyrus/user/g
-d cyrus mail 0755 /var/lib/cyrus/user/h
-d cyrus mail 0755 /var/lib/cyrus/user/i
-d cyrus mail 0755 /var/lib/cyrus/user/j
-d cyrus mail 0755 /var/lib/cyrus/user/k
-d cyrus mail 0755 /var/lib/cyrus/user/l
-d cyrus mail 0755 /var/lib/cyrus/user/m
-d cyrus mail 0755 /var/lib/cyrus/user/n
-d cyrus mail 0755 /var/lib/cyrus/user/o
-d cyrus mail 0755 /var/lib/cyrus/user/p
-d cyrus mail 0755 /var/lib/cyrus/user/q
-d cyrus mail 0755 /var/lib/cyrus/user/r
-d cyrus mail 0755 /var/lib/cyrus/user/s
-d cyrus mail 0755 /var/lib/cyrus/user/t
-d cyrus mail 0755 /var/lib/cyrus/user/u
-d cyrus mail 0755 /var/lib/cyrus/user/v
-d cyrus mail 0755 /var/lib/cyrus/user/w
-d cyrus mail 0755 /var/lib/cyrus/user/x
-d cyrus mail 0755 /var/lib/cyrus/user/y
-d cyrus mail 0755 /var/lib/cyrus/user/z
-d root root 0755 /var/spool/cyrus
-d cyrus mail 0750 /var/spool/cyrus/mail
-d cyrus mail 0750 /var/spool/cyrus/news
+d cyrus mail 0755 /var/lib/cyrus/user/a none
+d cyrus mail 0755 /var/lib/cyrus/user/b none
+d cyrus mail 0755 /var/lib/cyrus/user/c none
+d cyrus mail 0755 /var/lib/cyrus/user/d none
+d cyrus mail 0755 /var/lib/cyrus/user/e none
+d cyrus mail 0755 /var/lib/cyrus/user/f none
+d cyrus mail 0755 /var/lib/cyrus/user/g none
+d cyrus mail 0755 /var/lib/cyrus/user/h none
+d cyrus mail 0755 /var/lib/cyrus/user/i none
+d cyrus mail 0755 /var/lib/cyrus/user/j none
+d cyrus mail 0755 /var/lib/cyrus/user/k none
+d cyrus mail 0755 /var/lib/cyrus/user/l none
+d cyrus mail 0755 /var/lib/cyrus/user/m none
+d cyrus mail 0755 /var/lib/cyrus/user/n none
+d cyrus mail 0755 /var/lib/cyrus/user/o none
+d cyrus mail 0755 /var/lib/cyrus/user/p none
+d cyrus mail 0755 /var/lib/cyrus/user/q none
+d cyrus mail 0755 /var/lib/cyrus/user/r none
+d cyrus mail 0755 /var/lib/cyrus/user/s none
+d cyrus mail 0755 /var/lib/cyrus/user/t none
+d cyrus mail 0755 /var/lib/cyrus/user/u none
+d cyrus mail 0755 /var/lib/cyrus/user/v none
+d cyrus mail 0755 /var/lib/cyrus/user/w none
+d cyrus mail 0755 /var/lib/cyrus/user/x none
+d cyrus mail 0755 /var/lib/cyrus/user/y none
+d cyrus mail 0755 /var/lib/cyrus/user/z none
+d root root 0755 /var/spool/cyrus none
+d cyrus mail 0750 /var/spool/cyrus/mail none
+d cyrus mail 0750 /var/spool/cyrus/news none
diff --git a/packages/dates/dates_0.1.bb b/packages/dates/dates_0.1.bb
deleted file mode 100755
index 3245b07af5..0000000000
--- a/packages/dates/dates_0.1.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-LICENSE = "LGPL"
-SECTION = "x11"
-DEPENDS = "glib-2.0 gtk+ libglade eds-dbus"
-DESCRIPTION = "Dates is a calendar application."
-
-SRC_URI = "http://projects.o-hand.com/sources/dates/dates-0.1.tar.gz"
-
-inherit autotools pkgconfig gtk-icon-cache
-
-# EXTRA_OECONF = "--disable-debug"
-
-FILES_${PN} += "${datadir}/pixmaps/dates.png"
-
-do_install_append () {
- install -d ${D}/${datadir}/pixmaps
- install -m 0644 ${D}/${datadir}/icons/hicolor/48x48/apps/dates.png ${D}/${datadir}/pixmaps/
-}
-
diff --git a/packages/dates/dates_svn.bb b/packages/dates/dates_svn.bb
deleted file mode 100644
index 162e6f61a1..0000000000
--- a/packages/dates/dates_svn.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-LICENSE = "LGPL"
-SECTION = "x11"
-DEPENDS = "glib-2.0 gtk+ libglade eds-dbus"
-DESCRIPTION = "Dates is a calendar application."
-
-PV = "0.1+svn${SRCDATE}"
-S = "${WORKDIR}/trunk"
-
-SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http"
-
-inherit autotools pkgconfig gtk-icon-cache
-
-FILES_${PN} += "${datadir}/pixmaps/dates.png"
-
-do_install_append () {
- install -d ${D}/${datadir}/pixmaps
- install -m 0644 ${D}/${datadir}/icons/hicolor/48x48/apps/dates.png ${D}/${datadir}/pixmaps/
-}
diff --git a/packages/davfs2/davfs2_0.2.8.bb b/packages/davfs2/davfs2_0.2.8.bb
index ecb7034042..e49c4af424 100644
--- a/packages/davfs2/davfs2_0.2.8.bb
+++ b/packages/davfs2/davfs2_0.2.8.bb
@@ -6,7 +6,7 @@ DEPENDS = "neon-0.25.5"
RDEPENDS_${PN} = "kernel-module-coda"
LICENSE = "GPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "${SOURCEFORGE_MIRROR}/dav/${P}.tar.gz \
file://Makefile.in.patch;patch=1 \
diff --git a/packages/davfs2/files/volatiles b/packages/davfs2/files/volatiles
index 51405429d1..169fda7c3d 100644
--- a/packages/davfs2/files/volatiles
+++ b/packages/davfs2/files/volatiles
@@ -1 +1 @@
-d root users 0775 /var/run/mount.davfs
+d root users 0775 /var/run/mount.davfs none
diff --git a/packages/db/db_4.2.52.bb b/packages/db/db_4.2.52.bb
index 05565287f5..a0c394f7a4 100644
--- a/packages/db/db_4.2.52.bb
+++ b/packages/db/db_4.2.52.bb
@@ -91,7 +91,7 @@ do_install_append() {
if test -d "${D}/${prefix}/docs"
then
mkdir -p "${D}/${datadir}"
- test ! -d "${D}/${docdir}" || rmdir "${D}/${docdir}"
+ test ! -d "${D}/${docdir}" || rm -rf "${D}/${docdir}"
mv "${D}/${prefix}/docs" "${D}/${docdir}"
fi
}
diff --git a/packages/db/db_4.3.29.bb b/packages/db/db_4.3.29.bb
index 3c14b9eb96..474e73724f 100644
--- a/packages/db/db_4.3.29.bb
+++ b/packages/db/db_4.3.29.bb
@@ -92,7 +92,7 @@ do_install_append() {
if test -d "${D}/${prefix}/docs"
then
mkdir -p "${D}/${datadir}"
- test ! -d "${D}/${docdir}" || rmdir "${D}/${docdir}"
+ test ! -d "${D}/${docdir}" || rm -rf "${D}/${docdir}"
mv "${D}/${prefix}/docs" "${D}/${docdir}"
fi
}
diff --git a/packages/dbus/dbus-1.0.2/fix-waitpid.patch b/packages/dbus/dbus-1.0.2/fix-waitpid.patch
new file mode 100644
index 0000000000..80c431809c
--- /dev/null
+++ b/packages/dbus/dbus-1.0.2/fix-waitpid.patch
@@ -0,0 +1,11 @@
+--- /tmp/dbus-launch.c 2007-02-05 18:43:24.000000000 +0100
++++ dbus-1.0.2/tools/dbus-launch.c 2007-02-05 18:43:37.675251000 +0100
+@@ -622,7 +622,7 @@
+
+ exit_with_session = FALSE;
+ config_file = NULL;
+-
++ signal(SIGCHLD, SIG_DFL);
+ prev_arg = NULL;
+ i = 1;
+ while (i < argc)
diff --git a/packages/dbus/dbus_1.0.2.bb b/packages/dbus/dbus_1.0.2.bb
index 0198fa62c8..a660eb1586 100644
--- a/packages/dbus/dbus_1.0.2.bb
+++ b/packages/dbus/dbus_1.0.2.bb
@@ -1,3 +1,5 @@
require dbus.inc
-PR = "r1"
+SRC_URI += " file://fix-waitpid.patch;patch=1"
+
+PR = "r2"
diff --git a/packages/dcop/dcopidl-native_3.5.4.bb b/packages/dcop/dcopidl-native_3.5.4.bb
index 820700d56e..5f47effd24 100644
--- a/packages/dcop/dcopidl-native_3.5.4.bb
+++ b/packages/dcop/dcopidl-native_3.5.4.bb
@@ -1,15 +1,13 @@
DESCRIPTION = "DCOP IDL parser"
-SECTION = "kde/dev"
+SECTION = "kde/devel"
PRIORITY = "optional"
LICENSE = "GPL"
DEPENDS = "uicmoc3-native"
-
SRC_URI = "svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdelibs/dcop/;module=dcopidl \
file://dcopidl-compile.patch;patch=1 "
S = "${WORKDIR}/dcopidl"
-
inherit native qmake qt3e
export OE_QMAKE_LINK="${CXX}"
diff --git a/packages/dcop/dcopidl2cpp-native_3.5.4.bb b/packages/dcop/dcopidl2cpp-native_3.5.4.bb
index 29a4f71d3c..2b5cd126d7 100644
--- a/packages/dcop/dcopidl2cpp-native_3.5.4.bb
+++ b/packages/dcop/dcopidl2cpp-native_3.5.4.bb
@@ -1,16 +1,14 @@
DESCRIPTION = "DCOP IDL parser"
-SECTION = "kde/dev"
+SECTION = "kde/devel"
PRIORITY = "optional"
LICENSE = "GPL"
DEPENDS = "uicmoc3-native"
-
SRC_URI = "svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdelibs/dcop/;module=dcopidl2cpp "
#\
# file://dcopidl-compile.patch;patch=1 "
S = "${WORKDIR}/dcopidl2cpp"
-
inherit native qmake qt3e
export OE_QMAKE_LINK="${CXX}"
diff --git a/packages/detect-stylus/detect-stylus_svn.bb b/packages/detect-stylus/detect-stylus_svn.bb
new file mode 100644
index 0000000000..7f4385473c
--- /dev/null
+++ b/packages/detect-stylus/detect-stylus_svn.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Touchscreen detection utility"
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "virtual/libx11 xcursor-transparent-theme xrdb"
+RDEPENDS = "xrdb"
+PV = "0.13+svn${SRCDATE}"
+PR = "r0"
+
+inherit gpe pkgconfig
+
+SRC_URI = "${GPE_SVN} \
+ file://detect-stylus-svn-build.patch;patch=1"
+
+S = "${WORKDIR}/${PN}"
+
+export CVSBUILD="no"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/linux/nslu2-linksys-kernel-2.4.22/nslu2/.mtn2git_empty b/packages/detect-stylus/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/nslu2-linksys-kernel-2.4.22/nslu2/.mtn2git_empty
+++ b/packages/detect-stylus/files/.mtn2git_empty
diff --git a/packages/detect-stylus/files/detect-stylus-svn-build.patch b/packages/detect-stylus/files/detect-stylus-svn-build.patch
new file mode 100644
index 0000000000..ea1d67af6b
--- /dev/null
+++ b/packages/detect-stylus/files/detect-stylus-svn-build.patch
@@ -0,0 +1,229 @@
+diff -Naur detect-stylus.orig/build/Makefile.dpkg_ipkg detect-stylus/build/Makefile.dpkg_ipkg
+--- detect-stylus.orig/build/Makefile.dpkg_ipkg 1970-01-01 02:00:00.000000000 +0200
++++ detect-stylus/build/Makefile.dpkg_ipkg 2007-02-10 17:21:40.154584782 +0200
+@@ -0,0 +1,114 @@
++## Please read the README in this directory to see how to use this
++## Makefile snippet
++
++# Let's use whatever clean target the specific app provides
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# URL to source tarball
++SOURCE = http://gpe.linuxtogo.org/download/source/$(PACKAGE)-$(VERSION).tar.gz
++
++# can change this to e.g. /var/tmp/deb
++DEB_PATH = ../deb
++
++ifeq ($(CVSBUILD),yes)
++LIBGPEWIDGET_PC = libgpewidget-uninstalled
++PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget
++else
++LIBGPEWIDGET_PC = libgpewidget
++endif
++
++ifeq ($(IN_LIBGPEWIDGET),)
++GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC))
++GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC))
++endif
++
++GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0)
++GTKLIBS = $(shell pkg-config --libs gtk+-2.0)
++
++STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
++STANDARD_CFLAGS = -MD -Wall
++
++ifeq ($(DEBUG),yes)
++CFLAGS += -O2 -g
++LDFLAGS = -g
++else
++CFLAGS += -Os -fomit-frame-pointer
++endif
++
++dist: check-source clean dist-prep
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ mkdir ../$(PACKAGE)-$(VERSION)
++ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -)
++ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile )
++ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz )
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ $(MAKE) printinfo
++
++dist-upload: dist
++ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@linuxtogo.org:/media/data/projects/gpe/source/
++
++dist-prep:
++ipkg-prep:
++install-mo:
++# empty, can be filled in Makefile.translation
++
++install: install-program install-mo
++
++clean-dist:
++ rm -rf familiar/dist familiar/dist.list
++
++clean: clean-dist
++
++check-source:
++ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi
++
++ipkg: check-source ipkg-prep clean
++ rm -rf familiar/dist
++ mkdir -p familiar/dist/CONTROL
++ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control
++ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi
++ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi
++ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi
++ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi
++ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi
++ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program
++ rm -rf familiar/dist.list
++ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list
++ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi
++ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch
++ rm -rf familiar/dist familiar/dist.list
++ $(MAKE) printinfo
++
++dpkg: dist
++ mkdir -p $(DEB_PATH)
++ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz )
++ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian
++ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done
++
++CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
++printinfo:
++ @printf '-------------------------------------------------------------------------------\n'
++ @printf "If this becomes a package release, please add a CVS tag.\n"
++ @printf "You can use 'make tag' for that, it will execute\n"
++ @printf " cvs tag %s\n" $(CVSTAG)
++ @printf "Please upload a tarball (created with 'make dist') to\n"
++ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n"
++ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n"
++ @printf "You can use 'make dist-upload' to do that.\n"
++ @printf "You are currently known as USER %s.\n" $(USER)
++ @printf '-------------------------------------------------------------------------------\n'
++
++tag: check-source
++ cvs tag $(CVSTAG)
++
++retag: check-source
++ cvs tag -F $(CVSTAG)
++
++source: tag dist-upload
++
++%.pc: %.pc.in
++ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@
++
++.c.o:;
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@
+diff -Naur detect-stylus.orig/build/Makefile.translation detect-stylus/build/Makefile.translation
+--- detect-stylus.orig/build/Makefile.translation 1970-01-01 02:00:00.000000000 +0200
++++ detect-stylus/build/Makefile.translation 2007-02-10 17:21:46.170927636 +0200
+@@ -0,0 +1,107 @@
++.SUFFIXES: .mo .po .pot .po8
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# use ipkg-build or ipkg-deb-build
++IPKG_BUILD := ipkg-build
++
++TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint
++
++ifeq ($(DIR_PO),)
++DIR_PO := po
++endif
++
++ifeq ($(BINPACKAGE),)
++BINPACKAGE := $(PACKAGE)
++endif
++
++mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS))
++po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++
++ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present)
++desktop-files += $(PACKAGE).desktop
++endif
++
++ifneq ($(EXTRA_DESKTOPS),)
++desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS))
++endif
++
++all-mo: $(mo-files)
++
++all-desktop: $(desktop-files)
++
++install-mo: all-mo
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ if [ "x$(LINGUAS)" != "x" ]; then \
++ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \
++ fi; \
++ fi;
++
++.po8.mo:;
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ msgfmt -o $@ $<; \
++ fi;
++
++.po.po8:;
++ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@
++
++update-po: $(po-files) extract-po
++
++dist-prep: update-po freshen-po
++# empty
++
++ifeq ($(CVSBUILD),yes)
++ipkg-prep: freshen-po
++# empty
++endif
++
++extract-po:
++ mkdir -p $(DIR_PO)
++ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi )
++ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi
++
++clean: clean-po clean-dist-translation
++
++clean-po:
++ rm -rf $(DIR_PO)/*.mo
++ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done
++
++%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++ intltool-merge -u -d $(DIR_PO) $< $@
++
++freshen-po:
++ rm -rf tmp-po
++ mkdir tmp-po
++ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done
++ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done
++ rm -rf tmp-po
++
++# ------------------------------------------------------------------------
++
++MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-)
++
++ifndef BUILD
++BUILD = ../build
++endif
++
++transdist := familiar/dist-translation
++templates := $(BUILD)/familiar
++ipkglist := translation-ipkgs.txt
++
++clean-dist-translation:
++ rm -rf $(transdist) $(ipkglist)
++
++real-translation-package: all-mo
++ rm -rf $(transdist) $(ipkglist)
++ for LINGUA in $(LINGUAS); do \
++ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \
++ mkdir -p $(transdist)/$$i/CONTROL; \
++ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \
++ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \
++ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \
++ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \
++ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \
++ done
++
++translation-ipkg:
++ make PREFIX=/usr real-translation-package
diff --git a/packages/madwifi/madwifi-ng-r1844-20061208/.mtn2git_empty b/packages/dfu-util/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/madwifi/madwifi-ng-r1844-20061208/.mtn2git_empty
+++ b/packages/dfu-util/.mtn2git_empty
diff --git a/packages/dfu-util/dfu-util-native_svn.bb b/packages/dfu-util/dfu-util-native_svn.bb
new file mode 100644
index 0000000000..9bfe4bae2c
--- /dev/null
+++ b/packages/dfu-util/dfu-util-native_svn.bb
@@ -0,0 +1,17 @@
+require dfu-util_${PV}.bb
+
+inherit native
+
+DEPENDS = "libusb-native"
+
+do_stage() {
+ install -d ${STAGING_BINDIR_NATIVE}
+ install -m 0755 src/dfu-util ${STAGING_BINDIR_NATIVE}/
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0755 src/dfu-util_static ${DEPLOY_DIR_IMAGE}/dfu-util
+}
+
+addtask deploy before do_package after do_install
diff --git a/packages/dfu-util/dfu-util_svn.bb b/packages/dfu-util/dfu-util_svn.bb
new file mode 100644
index 0000000000..6f2e050569
--- /dev/null
+++ b/packages/dfu-util/dfu-util_svn.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "USB Device Firmware Upgrade utility"
+SECTION = "devel"
+AUTHOR = "Harald Welte"
+LICENSE = "GPL"
+PV = "0.1+svn${SRCDATE}"
+PR = "r0"
+
+DEPENDS = "libusb"
+
+SRC_URI = "svn://svn.openmoko.org/trunk/src/host/;module=dfu-util;proto=http"
+S = "${WORKDIR}/dfu-util"
+
+inherit autotools
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/dhcdbd/dhcdbd_1.14.bb b/packages/dhcdbd/dhcdbd_1.14.bb
index 8c05470f06..2da37f4466 100644
--- a/packages/dhcdbd/dhcdbd_1.14.bb
+++ b/packages/dhcdbd/dhcdbd_1.14.bb
@@ -1,16 +1,15 @@
-DESCRIPTION="DBus-enabled dhcp client"
-SECTION="net"
-LICENSE="GPL"
-HOMEPAGE="http://people.redhat.com/jvdias/dhcdbd/"
-
+DESCRIPTION = "DBus-enabled dhcp client"
+HOMEPAGE = "http://people.redhat.com/jvdias/dhcdbd/"
+SECTION = "net"
+LICENSE = "GPL"
DEPENDS = "dbus"
PR = "r1"
-SRC_URI="http://people.redhat.com/jvdias/dhcdbd/dhcdbd-${PV}.tar.gz \
- file://dhcdbd-1.14-pkgconfig_dbus.patch;patch=1 \
- file://dbus-api-fix.patch;patch=1 \
- file://dhcdbd"
+SRC_URI = "http://people.redhat.com/jvdias/dhcdbd/dhcdbd-${PV}.tar.gz \
+ file://dhcdbd-1.14-pkgconfig_dbus.patch;patch=1 \
+ file://dbus-api-fix.patch;patch=1 \
+ file://dhcdbd"
do_compile() {
CC=${TARGET_SYS}-gcc DESTDIR=${prefix} make
diff --git a/packages/dhcdbd/dhcdbd_1.16.bb b/packages/dhcdbd/dhcdbd_1.16.bb
index a510c49286..d2ef7288c8 100644
--- a/packages/dhcdbd/dhcdbd_1.16.bb
+++ b/packages/dhcdbd/dhcdbd_1.16.bb
@@ -1,15 +1,12 @@
-DESCRIPTION="DBus-enabled dhcp client"
-SECTION="net"
-LICENSE="GPL"
-HOMEPAGE="http://people.redhat.com/jvdias/dhcdbd/"
-
+DESCRIPTION = "DBus-enabled dhcp client"
+HOMEPAGE = "http://people.redhat.com/jvdias/dhcdbd/"
+SECTION = "net"
+LICENSE = "GPL"
DEPENDS = "dbus"
-PR = "r0"
-
-SRC_URI="http://people.redhat.com/dcantrel/dhcdbd/dhcdbd-${PV}.tar.gz \
- file://dhcdbd-1.14-pkgconfig_dbus.patch;patch=1 \
- file://dhcdbd"
+SRC_URI = "http://people.redhat.com/dcantrel/dhcdbd/dhcdbd-${PV}.tar.gz \
+ file://dhcdbd-1.14-pkgconfig_dbus.patch;patch=1 \
+ file://dhcdbd"
do_compile() {
CC=${TARGET_SYS}-gcc DESTDIR=${prefix} make
diff --git a/packages/dhcdbd/dhcdbd_2.0.bb b/packages/dhcdbd/dhcdbd_2.0.bb
index de9e24abd5..8495275ecb 100644
--- a/packages/dhcdbd/dhcdbd_2.0.bb
+++ b/packages/dhcdbd/dhcdbd_2.0.bb
@@ -1,16 +1,13 @@
-DESCRIPTION="DBus-enabled dhcp client"
-SECTION="net"
-LICENSE="GPL"
-HOMEPAGE="http://people.redhat.com/jvdias/dhcdbd/"
-
+DESCRIPTION = "DBus-enabled dhcp client"
+HOMEPAGE = "http://people.redhat.com/jvdias/dhcdbd/"
+SECTION = "net"
+LICENSE = "GPL"
DEPENDS = "dbus"
RDEPENDS = "dhcp-client"
-PR = "r0"
-
-SRC_URI="http://people.redhat.com/dcantrel/dhcdbd/dhcdbd-${PV}.tar.bz2 \
- file://no-ext-options.patch;patch=1 \
- file://dhcdbd"
+SRC_URI = "http://people.redhat.com/dcantrel/dhcdbd/dhcdbd-${PV}.tar.bz2 \
+ file://no-ext-options.patch;patch=1 \
+ file://dhcdbd"
do_compile() {
CC=${TARGET_SYS}-gcc DESTDIR=${prefix} make
diff --git a/packages/dhcp/dhcp_3.0.2.bb b/packages/dhcp/dhcp_3.0.2.bb
index c4843b7bda..851ae5ca95 100644
--- a/packages/dhcp/dhcp_3.0.2.bb
+++ b/packages/dhcp/dhcp_3.0.2.bb
@@ -2,11 +2,11 @@ SECTION = "console/network"
DESCRIPTION = "Internet Software Consortium DHCP package"
HOMEPAGE = "http://www.isc.org/"
LICENSE = "BSD"
-PR = "r4"
+PR = "r5"
SRC_URI = "ftp://ftp.isc.org/isc/dhcp/dhcp-3.0-history/dhcp-${PV}.tar.gz \
file://noattrmode.patch;patch=1 \
file://fixincludes.patch;patch=1 \
- file://dhcp-3.0.3-dhclient-dbus.patch;patch=1;pnum=0 \
+ file://dhcp-3.0.3-dhclient-dbus.patch;patch=1;pnum=0 \
file://init-relay file://default-relay \
file://init-server file://default-server \
file://dhclient.conf file://dhcpd.conf"
@@ -36,11 +36,12 @@ do_install() {
install -m 0644 ${WORKDIR}/dhcpd.conf ${D}${sysconfdir}/dhcp/dhcpd.conf
}
-PACKAGES =+ "dhcp-server dhcp-client dhcp-relay dhcp-omshell"
-FILES_dhcp-server = "${sbindir}/dhcpd /etc/init.d/dhcp-server /etc/default/dhcp-server /etc/dhcp/dhcpd.conf"
-FILES_dhcp-relay = "${sbindir}/dhcrelay /etc/init.d/dhcp-relay /etc/default/dhcp-relay"
+PACKAGES += "dhcp-server dhcp-client dhcp-relay dhcp-omshell"
+FILES_${PN} = ""
+FILES_dhcp-server = "${sbindir}/dhcpd ${sysconfdir}/init.d/dhcp-server ${sysconfdir}/default/dhcp-server ${sysconfdir}/dhcp/dhcpd.conf"
+FILES_dhcp-relay = "${sbindir}/dhcrelay ${sysconfdir}/init.d/dhcp-relay ${sysconfdir}/default/dhcp-relay"
-FILES_dhcp-client = "/sbin/ /etc/dhcp/dhclient.conf"
+FILES_dhcp-client = "${base_sbindir}/dhclient ${base_sbindir}/dhclient-script ${sysconfdir}/dhcp/dhclient.conf"
RDEPENDS_dhcp-client = "bash"
FILES_dhcp-omshell = "${bindir}/omshell"
diff --git a/packages/dillo/dillo_0.8.6.bb b/packages/dillo/dillo_0.8.6.bb
index 8eff692026..925583d6f7 100644
--- a/packages/dillo/dillo_0.8.6.bb
+++ b/packages/dillo/dillo_0.8.6.bb
@@ -1,23 +1,22 @@
-SECTION = "x11/network"
DESCRIPTION = "Lightweight gtk+ browser, enhanced version, with support for SSL, frames, tabs and much more..."
+HOMEPAGE = "http://www.dillo.org"
+SECTION = "x11/network"
+PRIORITY = "optional"
LICENSE = "GPL"
-PR = "r1"
DEPENDS = "gtk+-1.2 libpng openssl"
+RCONFLICTS = "dillo2"
+PR = "r2"
SRC_URI="http://www.dillo.org/download/dillo-${PV}.tar.bz2 \
file://dillo-i18n.diff;patch=1 \
file://dillo.desktop \
file://dillo.png"
-
-PRIORITY = "optional"
-
-RCONFLICTS = "dillo2"
-
S = "${WORKDIR}/dillo-${PV}/"
inherit autotools pkgconfig
FILES_${PN} += " /usr/lib/dillo/ /usr/bin/dpid /usr/bin/dpidc "
+FILES_${PN}-dbg += " ${libdir}/dillo/dpi/*/.debug/"
export PNG_CONFIG = "${STAGING_BINDIR_CROSS}/libpng-config"
diff --git a/packages/directfb/directfb_0.9.99+1.0.0rc2.bb b/packages/directfb/directfb_0.9.99+1.0.0rc2.bb
deleted file mode 100644
index 0298f2a247..0000000000
--- a/packages/directfb/directfb_0.9.99+1.0.0rc2.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-DESCRIPTION = "DirectFB is a thin library that provides developers \
-with hardware graphics acceleration, input device handling and \
-abstraction, an integrated windowing system with support for \
-translucent windows and multiple display layers on top of the \
-Linux framebuffer device."
-SECTION = "libs"
-LICENSE = "LGPL"
-HOMEPAGE = "http://directfb.org"
-DEPENDS = "jpeg libpng freetype zlib tslib"
-PR = "r1"
-RV = "1.0-0"
-
-SRC_URI = "http://directfb.org/downloads/Core/DirectFB-1.0.0-rc2.tar.gz \
- file://fix-pkgconfig-specs.patch;patch=1 \
- file://mkdfiff.patch;patch=1 \
- file://tslib_support.patch;patch=1"
-
-S = "${WORKDIR}/DirectFB-1.0.0-rc2"
-
-LDFLAGS_append =" -lts -lm"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--with-gfxdrivers=none --enable-libmpeg3=no --enable-freetype=yes --enable-sdl=no"
-PARALLEL_MAKE = ""
-
-do_stage() {
- autotools_stage_all
-}
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' install
-}
-
-FILES_directfb_append = " ${libdir}/directfb-${RV}/systems/*.so \
- ${libdir}/directfb-${RV}/inputdrivers/*.so \
- ${libdir}/directfb-${RV}/interfaces/*/*.so \
- ${libdir}/directfb-${RV}/wm/*.so \
- ${datadir}/directfb-${RV}"
diff --git a/packages/directfb/directfb_1.0.0.bb b/packages/directfb/directfb_1.0.0.bb
new file mode 100644
index 0000000000..5effeb8de6
--- /dev/null
+++ b/packages/directfb/directfb_1.0.0.bb
@@ -0,0 +1,53 @@
+DESCRIPTION = "DirectFB is a thin library that provides developers \
+with hardware graphics acceleration, input device handling and \
+abstraction, an integrated windowing system with support for \
+translucent windows and multiple display layers on top of the \
+Linux framebuffer device."
+SECTION = "libs"
+LICENSE = "LGPL"
+HOMEPAGE = "http://directfb.org"
+DEPENDS = "jpeg libpng freetype zlib tslib"
+PR = "r2"
+RV = "1.0-0"
+
+SRC_URI = "http://www.directfb.org/download/DirectFB/DirectFB-${PV}.tar.gz \
+ file://fix-pkgconfig-cflags.patch;patch=1 \
+ file://mkdfiff.patch;patch=1"
+
+S = "${WORKDIR}/DirectFB-1.0.0"
+
+LDFLAGS_append =" -lts -lm"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--with-gfxdrivers=none \
+ --enable-libmpeg3=no \
+ --enable-freetype=yes \
+ --enable-sdl=no \
+ "
+
+do_stage() {
+ autotools_stage_all
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+}
+
+
+FILES_directfb-dbg_append = " ${libdir}/directfb-${RV}/*/*/.debug/*.so \
+ ${libdir}/directfb-${RV}/*/.debug/*.so \
+ "
+
+FILES_directfb-dev_append = " ${libdir}/directfb-${RV}/systems/*.la \
+ ${libdir}/directfb-${RV}/inputdrivers/*.la \
+ ${libdir}/directfb-${RV}/interfaces/*/*.la \
+ ${libdir}/directfb-${RV}/wm/*.la"
+
+
+FILES_directfb_append = " ${libdir}/directfb-${RV}/systems/*.so \
+ ${libdir}/directfb-${RV}/inputdrivers/*.so \
+ ${libdir}/directfb-${RV}/interfaces/*/*.so \
+ ${libdir}/directfb-${RV}/wm/*.so \
+ ${datadir}/directfb-1.0.0 \
+ "
diff --git a/packages/directfb/files/fix-pkgconfig-specs.patch b/packages/directfb/files/fix-pkgconfig-specs.patch
index 401d7fa443..0273b58ec5 100644
--- a/packages/directfb/files/fix-pkgconfig-specs.patch
+++ b/packages/directfb/files/fix-pkgconfig-specs.patch
@@ -1,13 +1,45 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- DirectFB-0.9.25.1/directfb.pc.in~fix-pkgconfig-specs 2005-10-19 01:14:04.000000000 +0200
-+++ DirectFB-0.9.25.1/directfb.pc.in 2006-05-20 01:02:37.000000000 +0200
+diff -ur DirectFB-1.0.0~org/directfb-internal.pc.in DirectFB-1.0.0/directfb-internal.pc.in
+--- DirectFB-1.0.0~org/directfb-internal.pc.in 2003-07-04 13:30:22.000000000 -0400
++++ DirectFB-1.0.0/directfb-internal.pc.in 2007-03-16 22:34:17.000000000 -0400
+@@ -8,4 +8,4 @@
+ Description: Third party module support package for DirectFB.
+ Version: @VERSION@
+ Requires: directfb = @VERSION@
+-Cflags: @DFB_INTERNAL_CFLAGS@ -I@INTERNALINCLUDEDIR@
++Cflags: @DFB_INTERNAL_CFLAGS@ -I${includedir}
+diff -ur DirectFB-1.0.0~org/directfb.pc.in DirectFB-1.0.0/directfb.pc.in
+--- DirectFB-1.0.0~org/directfb.pc.in 2004-08-04 12:28:20.000000000 -0400
++++ DirectFB-1.0.0/directfb.pc.in 2007-03-16 22:31:33.000000000 -0400
@@ -8,4 +8,4 @@
Version: @VERSION@
Requires: fusion direct
Libs: -L${libdir} -ldirectfb @THREADLIB@ @DYNLIB@ @ZLIB_LIBS@ @OSX_LIBS@
-Cflags: @THREADFLAGS@ -I@INCLUDEDIR@
-+Cflags: @THREADFLAGS@ -I${includedir}/directfb
++Cflags: @THREADFLAGS@ -I${includedir}
+diff -ur DirectFB-1.0.0~org/lib/direct/direct.pc.in DirectFB-1.0.0/lib/direct/direct.pc.in
+--- DirectFB-1.0.0~org/lib/direct/direct.pc.in 2005-11-23 09:18:59.000000000 -0500
++++ DirectFB-1.0.0/lib/direct/direct.pc.in 2007-03-16 22:32:13.000000000 -0400
+@@ -7,4 +7,4 @@
+ Description: DirectFB base development library
+ Version: @VERSION@
+ Libs: -L${libdir} -ldirect @THREADLIB@ @DYNLIB@
+-Cflags: @THREADFLAGS@ -I@INCLUDEDIR@
++Cflags: @THREADFLAGS@ -I${includedir}
+diff -ur DirectFB-1.0.0~org/lib/fusion/fusion.pc.in DirectFB-1.0.0/lib/fusion/fusion.pc.in
+--- DirectFB-1.0.0~org/lib/fusion/fusion.pc.in 2004-05-19 07:30:56.000000000 -0400
++++ DirectFB-1.0.0/lib/fusion/fusion.pc.in 2007-03-16 22:32:34.000000000 -0400
+@@ -8,4 +8,4 @@
+ Version: @VERSION@
+ Requires: direct
+ Libs: -L${libdir} -lfusion
+-Cflags: -I@INCLUDEDIR@
++Cflags: -I${includedir}
+diff -ur DirectFB-1.0.0~org/lib/voodoo/voodoo.pc.in DirectFB-1.0.0/lib/voodoo/voodoo.pc.in
+--- DirectFB-1.0.0~org/lib/voodoo/voodoo.pc.in 2004-05-19 07:31:28.000000000 -0400
++++ DirectFB-1.0.0/lib/voodoo/voodoo.pc.in 2007-03-16 22:32:55.000000000 -0400
+@@ -8,4 +8,4 @@
+ Version: @VERSION@
+ Requires: direct
+ Libs: -L${libdir} -lvoodoo
+-Cflags: -I@INCLUDEDIR@
++Cflags: -I${includedir}
diff --git a/packages/directfb/files/tslib_support.patch b/packages/directfb/files/tslib_support.patch
deleted file mode 100644
index f444cb9574..0000000000
--- a/packages/directfb/files/tslib_support.patch
+++ /dev/null
@@ -1,818 +0,0 @@
-diff -u'rNF^function' DirectFB-1.0.0-rc1~org/configure.in DirectFB-1.0.0-rc1/configure.in
---- DirectFB-1.0.0-rc1~org/configure.in 2006-09-30 17:08:56.000000000 -0400
-+++ DirectFB-1.0.0-rc1/configure.in 2006-10-16 08:15:32.000000000 -0400
-@@ -998,6 +998,7 @@
- checkfor_serialmouse=no
- checkfor_sonypijogdial=no
- checkfor_ucb1x00=no
-+checkfor_tslib=no
- checkfor_wm97xx=no
-
- AC_MSG_CHECKING(which inputdrivers should be built)
-@@ -1027,6 +1028,7 @@
- checkfor_serialmouse=yes
- checkfor_sonypijogdial=yes
- checkfor_ucb1x00="$have_arm"
-+ checkfor_tslib=yes
- checkfor_wm97xx=yes
- AC_MSG_RESULT(all)
- else
-@@ -1083,6 +1085,9 @@
- ucb1x00)
- checkfor_ucb1x00=yes
- ;;
-+ tslib)
-+ checkfor_tslib=yes
-+ ;;
- wm97xx)
- checkfor_wm97xx=yes
- ;;
-@@ -1196,6 +1201,12 @@
- enable_ucb1x00_ts=yes
- fi
-
-+enable_tslib=no
-+if test "$checkfor_tslib" = "yes"; then
-+ dnl Test for TSLIB Touchscreen support
-+ enable_tslib=yes
-+fi
-+
- enable_wm97xx_ts=no
- if test "$checkfor_wm97xx" = "yes"; then
- dnl Test for WM97xx Touchscreen support
-@@ -1266,6 +1277,7 @@
- AM_CONDITIONAL(WM97XX_TS, test "$enable_wm97xx_ts" = "yes")
-
- AM_CONDITIONAL(UCB1X00_TS, test "$enable_ucb1x00_ts" = "yes")
-+AM_CONDITIONAL(TSLIB, test "$enable_tslib" = "yes")
-
- AM_CONDITIONAL(BUILD_TESTS, test "$with_tests" = "yes")
- AM_CONDITIONAL(BUILD_TOOLS, test "$with_tools" = "yes")
-@@ -1426,6 +1438,7 @@
- inputdrivers/serialmouse/Makefile
- inputdrivers/sonypi/Makefile
- inputdrivers/ucb1x00_ts/Makefile
-+inputdrivers/tslib/Makefile
- inputdrivers/wm97xx_ts/Makefile
-
- interfaces/Makefile
-@@ -1536,6 +1549,7 @@
- Serial Mouse $enable_serial_mouse
- SonyPI Jogdial $enable_sonypi_jogdial
- ucb1x00 Touchscreen $enable_ucb1x00_ts
-+ tslib Touchscreen $enable_tslib
- WM97xx Touchscreen $enable_wm97xx_ts]);
- fi
-
-diff -u'rNF^function' DirectFB-1.0.0-rc1~org/inputdrivers/Makefile.am DirectFB-1.0.0-rc1/inputdrivers/Makefile.am
---- DirectFB-1.0.0-rc1~org/inputdrivers/Makefile.am 2006-09-30 17:06:58.000000000 -0400
-+++ DirectFB-1.0.0-rc1/inputdrivers/Makefile.am 2006-10-16 08:06:27.000000000 -0400
-@@ -44,6 +44,10 @@
- UCB1X00_TS_DIR = ucb1x00_ts
- endif
-
-+if TSLIB
-+TSLIB_DIR = tslib
-+endif
-+
- if SONYPI
- SONYPI_DIR = sonypi
- endif
-@@ -80,6 +84,7 @@
- $(SERIALMOUSE_INPUT_DIR) \
- $(H3600_TS_DIR) \
- $(UCB1X00_TS_DIR) \
-+ $(TSLIB_DIR) \
- $(MUTOUCH_TS_DIR) \
- $(PENMOUNT_TS_DIR) \
- $(SONYPI_DIR) \
-diff -u'rNF^function' DirectFB-1.0.0-rc1~org/inputdrivers/tslib/Makefile.am DirectFB-1.0.0-rc1/inputdrivers/tslib/Makefile.am
---- DirectFB-1.0.0-rc1~org/inputdrivers/tslib/Makefile.am 1969-12-31 19:00:00.000000000 -0500
-+++ DirectFB-1.0.0-rc1/inputdrivers/tslib/Makefile.am 2006-10-13 07:44:02.000000000 -0400
-@@ -0,0 +1,31 @@
-+## Makefile.am for DirectFB/inputdrivers/tslib
-+
-+INCLUDES = \
-+ -I$(top_srcdir)/include \
-+ -I$(top_builddir)/lib \
-+ -I$(top_srcdir)/lib \
-+ -I$(top_srcdir)/src
-+
-+input_LTLIBRARIES = libdirectfb_tslib.la
-+
-+if BUILD_STATIC
-+input_DATA = $(input_LTLIBRARIES:.la=.o)
-+endif
-+
-+inputdir = $(MODULEDIR)/inputdrivers
-+
-+libdirectfb_tslib_la_SOURCES = \
-+ tslib.c
-+
-+libdirectfb_tslib_la_LDFLAGS = \
-+ -export-dynamic \
-+ -avoid-version \
-+ $(DFB_LDFLAGS)
-+
-+libdirectfb_tslib_la_LIBADD = \
-+ $(top_builddir)/lib/direct/libdirect.la \
-+ $(top_builddir)/src/libdirectfb.la
-+
-+
-+include $(top_srcdir)/rules/libobject.make
-+
-diff -u'rNF^function' DirectFB-1.0.0-rc1~org/inputdrivers/tslib/Makefile.in DirectFB-1.0.0-rc1/inputdrivers/tslib/Makefile.in
---- DirectFB-1.0.0-rc1~org/inputdrivers/tslib/Makefile.in 1969-12-31 19:00:00.000000000 -0500
-+++ DirectFB-1.0.0-rc1/inputdrivers/tslib/Makefile.in 2006-10-13 07:44:02.000000000 -0400
-@@ -0,0 +1,429 @@
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-+
-+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
-+# This Makefile.in is free software; the Free Software Foundation
-+# gives unlimited permission to copy and/or distribute it,
-+# with or without modifications, as long as this notice is preserved.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-+# PARTICULAR PURPOSE.
-+
-+
-+
-+SHELL = @SHELL@
-+
-+srcdir = @srcdir@
-+top_srcdir = @top_srcdir@
-+VPATH = @srcdir@
-+prefix = @prefix@
-+exec_prefix = @exec_prefix@
-+
-+bindir = @bindir@
-+sbindir = @sbindir@
-+libexecdir = @libexecdir@
-+datadir = @datadir@
-+sysconfdir = @sysconfdir@
-+sharedstatedir = @sharedstatedir@
-+localstatedir = @localstatedir@
-+libdir = @libdir@
-+infodir = @infodir@
-+mandir = @mandir@
-+includedir = @includedir@
-+oldincludedir = /usr/include
-+
-+DESTDIR =
-+
-+pkgdatadir = $(datadir)/@PACKAGE@
-+pkglibdir = $(libdir)/@PACKAGE@
-+pkgincludedir = $(includedir)/@PACKAGE@
-+
-+top_builddir = ../..
-+
-+ACLOCAL = @ACLOCAL@
-+AUTOCONF = @AUTOCONF@
-+AUTOMAKE = @AUTOMAKE@
-+AUTOHEADER = @AUTOHEADER@
-+
-+INSTALL = @INSTALL@
-+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
-+INSTALL_DATA = @INSTALL_DATA@
-+INSTALL_SCRIPT = @INSTALL_SCRIPT@
-+transform = @program_transform_name@
-+
-+NORMAL_INSTALL = :
-+PRE_INSTALL = :
-+POST_INSTALL = :
-+NORMAL_UNINSTALL = :
-+PRE_UNINSTALL = :
-+POST_UNINSTALL = :
-+host_alias = @host_alias@
-+host_triplet = @host@
-+AR = @AR@
-+AS = @AS@
-+ASFLAGS = @ASFLAGS@
-+CC = @CC@
-+CXX = @CXX@
-+CXXCPP = @CXXCPP@
-+DATADIR = @DATADIR@
-+DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@
-+DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@
-+DFB_LDFLAGS = @DFB_LDFLAGS@
-+DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@
-+DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@
-+DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@
-+DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@
-+DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@
-+DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@
-+DIRECTFB_VERSION = @DIRECTFB_VERSION@
-+DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@
-+DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@
-+DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@
-+DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@
-+DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@
-+DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@
-+DLLTOOL = @DLLTOOL@
-+DYNLIB = @DYNLIB@
-+ECHO = @ECHO@
-+EGREP = @EGREP@
-+EXEEXT = @EXEEXT@
-+F77 = @F77@
-+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-+FREETYPE_CONFIG = @FREETYPE_CONFIG@
-+FREETYPE_LIBS = @FREETYPE_LIBS@
-+FREETYPE_PROVIDER = @FREETYPE_PROVIDER@
-+FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@
-+GCJ = @GCJ@
-+GCJFLAGS = @GCJFLAGS@
-+GIF_PROVIDER = @GIF_PROVIDER@
-+HAVE_LIB = @HAVE_LIB@
-+HAVE_LINUX = @HAVE_LINUX@
-+INCLUDEDIR = @INCLUDEDIR@
-+INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@
-+JPEG_PROVIDER = @JPEG_PROVIDER@
-+LIB = @LIB@
-+LIBJPEG = @LIBJPEG@
-+LIBPNG = @LIBPNG@
-+LIBTOOL = @LIBTOOL@
-+LN_S = @LN_S@
-+LTLIB = @LTLIB@
-+LT_AGE = @LT_AGE@
-+LT_CURRENT = @LT_CURRENT@
-+LT_RELEASE = @LT_RELEASE@
-+LT_REVISION = @LT_REVISION@
-+MAINT = @MAINT@
-+MAKEINFO = @MAKEINFO@
-+MAN2HTML = @MAN2HTML@
-+MODULEDIR = @MODULEDIR@
-+MODULEDIRNAME = @MODULEDIRNAME@
-+OBJDUMP = @OBJDUMP@
-+OBJEXT = @OBJEXT@
-+OSX_LIBS = @OSX_LIBS@
-+PACKAGE = @PACKAGE@
-+PERL = @PERL@
-+PNG_PROVIDER = @PNG_PROVIDER@
-+RANLIB = @RANLIB@
-+RC = @RC@
-+RUNTIME_SYSROOT = @RUNTIME_SYSROOT@
-+SDL_CFLAGS = @SDL_CFLAGS@
-+SDL_CONFIG = @SDL_CONFIG@
-+SDL_LIBS = @SDL_LIBS@
-+SOPATH = @SOPATH@
-+STRIP = @STRIP@
-+SYSFS_LIBS = @SYSFS_LIBS@
-+THREADFLAGS = @THREADFLAGS@
-+THREADLIB = @THREADLIB@
-+VERSION = @VERSION@
-+VNC_CFLAGS = @VNC_CFLAGS@
-+VNC_CONFIG = @VNC_CONFIG@
-+VNC_LIBS = @VNC_LIBS@
-+X11_CFLAGS = @X11_CFLAGS@
-+X11_LIBS = @X11_LIBS@
-+ZLIB_LIBS = @ZLIB_LIBS@
-+
-+INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/lib -I$(top_srcdir)/lib -I$(top_srcdir)/src
-+
-+
-+input_LTLIBRARIES = libdirectfb_tslib.la
-+
-+@BUILD_STATIC_TRUE@input_DATA = $(input_LTLIBRARIES:.la=.o)
-+
-+inputdir = $(MODULEDIR)/inputdrivers
-+
-+libdirectfb_tslib_la_SOURCES = tslib.c
-+
-+
-+libdirectfb_tslib_la_LDFLAGS = -export-dynamic -avoid-version $(DFB_LDFLAGS)
-+
-+
-+libdirectfb_tslib_la_LIBADD = $(top_builddir)/lib/direct/libdirect.la $(top_builddir)/src/libdirectfb.la
-+
-+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+CONFIG_HEADER = ../../config.h
-+CONFIG_CLEAN_FILES =
-+LTLIBRARIES = $(input_LTLIBRARIES)
-+
-+
-+DEFS = @DEFS@ -I. -I$(srcdir) -I../..
-+CPPFLAGS = @CPPFLAGS@
-+LDFLAGS = @LDFLAGS@
-+LIBS = @LIBS@
-+libdirectfb_tslib_la_DEPENDENCIES = \
-+$(top_builddir)/lib/direct/libdirect.la \
-+$(top_builddir)/src/libdirectfb.la
-+libdirectfb_tslib_la_OBJECTS = tslib.lo
-+CFLAGS = @CFLAGS@
-+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CCLD = $(CC)
-+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
-+DATA = $(input_DATA)
-+
-+DIST_COMMON = Makefile.am Makefile.in
-+
-+
-+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-+
-+TAR = tar
-+GZIP_ENV = --best
-+SOURCES = $(libdirectfb_tslib_la_SOURCES)
-+OBJECTS = $(libdirectfb_tslib_la_OBJECTS)
-+
-+all: all-redirect
-+.SUFFIXES:
-+.SUFFIXES: .S .c .lo .o .obj .s
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/rules/libobject.make
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps inputdrivers/tslib/Makefile
-+
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+ cd $(top_builddir) \
-+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-+
-+
-+mostlyclean-inputLTLIBRARIES:
-+
-+clean-inputLTLIBRARIES:
-+ -test -z "$(input_LTLIBRARIES)" || rm -f $(input_LTLIBRARIES)
-+
-+distclean-inputLTLIBRARIES:
-+
-+maintainer-clean-inputLTLIBRARIES:
-+
-+install-inputLTLIBRARIES: $(input_LTLIBRARIES)
-+ @$(NORMAL_INSTALL)
-+ $(mkinstalldirs) $(DESTDIR)$(inputdir)
-+ @list='$(input_LTLIBRARIES)'; for p in $$list; do \
-+ if test -f $$p; then \
-+ echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(inputdir)/$$p"; \
-+ $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(inputdir)/$$p; \
-+ else :; fi; \
-+ done
-+
-+uninstall-inputLTLIBRARIES:
-+ @$(NORMAL_UNINSTALL)
-+ list='$(input_LTLIBRARIES)'; for p in $$list; do \
-+ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(inputdir)/$$p; \
-+ done
-+
-+.c.o:
-+ $(COMPILE) -c $<
-+
-+# FIXME: We should only use cygpath when building on Windows,
-+# and only if it is available.
-+.c.obj:
-+ $(COMPILE) -c `cygpath -w $<`
-+
-+.s.o:
-+ $(COMPILE) -c $<
-+
-+.S.o:
-+ $(COMPILE) -c $<
-+
-+mostlyclean-compile:
-+ -rm -f *.o core *.core
-+ -rm -f *.$(OBJEXT)
-+
-+clean-compile:
-+
-+distclean-compile:
-+ -rm -f *.tab.c
-+
-+maintainer-clean-compile:
-+
-+.c.lo:
-+ $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+
-+.s.lo:
-+ $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+
-+.S.lo:
-+ $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+
-+mostlyclean-libtool:
-+ -rm -f *.lo
-+
-+clean-libtool:
-+ -rm -rf .libs _libs
-+
-+distclean-libtool:
-+
-+maintainer-clean-libtool:
-+
-+libdirectfb_tslib.la: $(libdirectfb_tslib_la_OBJECTS) $(libdirectfb_tslib_la_DEPENDENCIES)
-+ $(LINK) -rpath $(inputdir) $(libdirectfb_tslib_la_LDFLAGS) $(libdirectfb_tslib_la_OBJECTS) $(libdirectfb_tslib_la_LIBADD) $(LIBS)
-+
-+install-inputDATA: $(input_DATA)
-+ @$(NORMAL_INSTALL)
-+ $(mkinstalldirs) $(DESTDIR)$(inputdir)
-+ @list='$(input_DATA)'; for p in $$list; do \
-+ if test -f $(srcdir)/$$p; then \
-+ echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(inputdir)/$$p"; \
-+ $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(inputdir)/$$p; \
-+ else if test -f $$p; then \
-+ echo " $(INSTALL_DATA) $$p $(DESTDIR)$(inputdir)/$$p"; \
-+ $(INSTALL_DATA) $$p $(DESTDIR)$(inputdir)/$$p; \
-+ fi; fi; \
-+ done
-+
-+uninstall-inputDATA:
-+ @$(NORMAL_UNINSTALL)
-+ list='$(input_DATA)'; for p in $$list; do \
-+ rm -f $(DESTDIR)$(inputdir)/$$p; \
-+ done
-+
-+tags: TAGS
-+
-+ID: $(HEADERS) $(SOURCES) $(LISP)
-+ list='$(SOURCES) $(HEADERS)'; \
-+ unique=`for i in $$list; do echo $$i; done | \
-+ awk ' { files[$$0] = 1; } \
-+ END { for (i in files) print i; }'`; \
-+ here=`pwd` && cd $(srcdir) \
-+ && mkid -f$$here/ID $$unique $(LISP)
-+
-+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
-+ tags=; \
-+ here=`pwd`; \
-+ list='$(SOURCES) $(HEADERS)'; \
-+ unique=`for i in $$list; do echo $$i; done | \
-+ awk ' { files[$$0] = 1; } \
-+ END { for (i in files) print i; }'`; \
-+ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-+
-+mostlyclean-tags:
-+
-+clean-tags:
-+
-+distclean-tags:
-+ -rm -f TAGS ID
-+
-+maintainer-clean-tags:
-+
-+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-+
-+subdir = inputdrivers/tslib
-+
-+distdir: $(DISTFILES)
-+ @for file in $(DISTFILES); do \
-+ d=$(srcdir); \
-+ if test -d $$d/$$file; then \
-+ cp -pr $$d/$$file $(distdir)/$$file; \
-+ else \
-+ test -f $(distdir)/$$file \
-+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
-+ || cp -p $$d/$$file $(distdir)/$$file || :; \
-+ fi; \
-+ done
-+
-+info-am:
-+info: info-am
-+dvi-am:
-+dvi: dvi-am
-+check-am: all-am
-+check: check-am
-+installcheck-am:
-+installcheck: installcheck-am
-+install-exec-am:
-+install-exec: install-exec-am
-+
-+install-data-am: install-inputLTLIBRARIES install-inputDATA
-+install-data: install-data-am
-+
-+install-am: all-am
-+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-+install: install-am
-+uninstall-am: uninstall-inputLTLIBRARIES uninstall-inputDATA
-+uninstall: uninstall-am
-+all-am: Makefile $(LTLIBRARIES) $(DATA)
-+all-redirect: all-am
-+install-strip:
-+ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-+installdirs:
-+ $(mkinstalldirs) $(DESTDIR)$(inputdir) $(DESTDIR)$(inputdir)
-+
-+
-+mostlyclean-generic:
-+
-+clean-generic:
-+
-+distclean-generic:
-+ -rm -f Makefile $(CONFIG_CLEAN_FILES)
-+ -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-+
-+maintainer-clean-generic:
-+mostlyclean-am: mostlyclean-inputLTLIBRARIES mostlyclean-compile \
-+ mostlyclean-libtool mostlyclean-tags \
-+ mostlyclean-generic
-+
-+mostlyclean: mostlyclean-am
-+
-+clean-am: clean-inputLTLIBRARIES clean-compile clean-libtool clean-tags \
-+ clean-generic mostlyclean-am
-+
-+clean: clean-am
-+
-+distclean-am: distclean-inputLTLIBRARIES distclean-compile \
-+ distclean-libtool distclean-tags distclean-generic \
-+ clean-am
-+ -rm -f libtool
-+
-+distclean: distclean-am
-+
-+maintainer-clean-am: maintainer-clean-inputLTLIBRARIES \
-+ maintainer-clean-compile maintainer-clean-libtool \
-+ maintainer-clean-tags maintainer-clean-generic \
-+ distclean-am
-+ @echo "This command is intended for maintainers to use;"
-+ @echo "it deletes files that may require special tools to rebuild."
-+
-+maintainer-clean: maintainer-clean-am
-+
-+.PHONY: mostlyclean-inputLTLIBRARIES distclean-inputLTLIBRARIES \
-+clean-inputLTLIBRARIES maintainer-clean-inputLTLIBRARIES \
-+uninstall-inputLTLIBRARIES install-inputLTLIBRARIES mostlyclean-compile \
-+distclean-compile clean-compile maintainer-clean-compile \
-+mostlyclean-libtool distclean-libtool clean-libtool \
-+maintainer-clean-libtool uninstall-inputDATA install-inputDATA tags \
-+mostlyclean-tags distclean-tags clean-tags maintainer-clean-tags \
-+distdir info-am info dvi-am dvi check check-am installcheck-am \
-+installcheck install-exec-am install-exec install-data-am install-data \
-+install-am install uninstall-am uninstall all-redirect all-am all \
-+installdirs mostlyclean-generic distclean-generic clean-generic \
-+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+
-+
-+%.o: .libs/%.a %.la
-+ rm -f $<.tmp/*.o
-+ if test -d $<.tmp; then rmdir $<.tmp; fi
-+ mkdir $<.tmp
-+ (cd $<.tmp && $(AR) x ../../$<)
-+ $(LD) -o $@ -r $<.tmp/*.o
-+ rm -f $<.tmp/*.o && rmdir $<.tmp
-+
-+.PHONY: $(LTLIBRARIES:%.la=.libs/%.a)
-+
-+# Tell versions [3.59,3.63) of GNU make to not export all variables.
-+# Otherwise a system limit (for SysV at least) may be exceeded.
-+.NOEXPORT:
-diff -u'rNF^function' DirectFB-1.0.0-rc1~org/inputdrivers/tslib/tslib.c DirectFB-1.0.0-rc1/inputdrivers/tslib/tslib.c
---- DirectFB-1.0.0-rc1~org/inputdrivers/tslib/tslib.c 1969-12-31 19:00:00.000000000 -0500
-+++ DirectFB-1.0.0-rc1/inputdrivers/tslib/tslib.c 2006-10-30 15:30:35.000000000 -0500
-@@ -0,0 +1,258 @@
-+/*
-+ (c) Copyright 2000-2002 convergence integrated media GmbH.
-+ (c) Copyright 2002-2004 convergence GmbH.
-+
-+ All rights reserved.
-+
-+ Written by Shane Volpe <shanevolpe@gmail.com
-+
-+ Based on usb1x00_ts writen by:
-+ Denis Oliver Kropp <dok@directfb.org>,
-+ Andreas Hundt <andi@fischlustig.de>,
-+ Sven Neumann <neo@directfb.org> and
-+ Ville Syrj��<syrjala@sci.fi>.
-+
-+ This 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 of the License, or (at your option) any later version.
-+
-+ This 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 this library; if not, write to the
-+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+ Boston, MA 02111-1307, USA.
-+*/
-+
-+#include <config.h>
-+
-+#include <stdlib.h>
-+#include <stdio.h>
-+
-+#include <tslib.h>
-+
-+#include <directfb.h>
-+
-+#include <core/coredefs.h>
-+#include <core/coretypes.h>
-+
-+#include <core/input.h>
-+
-+#include <direct/mem.h>
-+#include <direct/messages.h>
-+#include <direct/thread.h>
-+
-+#include <core/input_driver.h>
-+
-+
-+const char* ts_dev = "/dev/ts0";
-+#define TS_BLOCK 0
-+
-+DFB_INPUT_DRIVER( tslib )
-+
-+typedef struct {
-+ CoreInputDevice *device;
-+ DirectThread *thread;
-+ struct tsdev *ts;
-+} tslibData;
-+
-+
-+static void *
-+tslibEventThread( DirectThread *thread, void *driver_data )
-+{
-+ tslibData *data = (tslibData*) driver_data;
-+
-+ struct ts_sample ts_event;
-+
-+ int readlen;
-+
-+ unsigned short old_x = -1;
-+ unsigned short old_y = -1;
-+ unsigned short old_pressure = 0;
-+
-+ while ((readlen = ts_read(data->ts, &ts_event, 1)) >= 0)
-+ {
-+ DFBInputEvent evt;
-+
-+ direct_thread_testcancel( thread );
-+
-+ if (readlen < 1)
-+ continue;
-+
-+ if (ts_event.pressure) {
-+
-+
-+ if (ts_event.x != old_x) {
-+
-+ evt.type = DIET_AXISMOTION;
-+ evt.flags = DIEF_AXISABS;
-+ evt.axis = DIAI_X;
-+ evt.axisabs = ts_event.x;
-+
-+ dfb_input_dispatch( data->device, &evt );
-+
-+ old_x = ts_event.x;
-+ }
-+
-+ if (ts_event.y != old_y) {
-+ evt.type = DIET_AXISMOTION;
-+ evt.flags = DIEF_AXISABS;
-+ evt.axis = DIAI_Y;
-+ evt.axisabs = ts_event.y;
-+
-+ dfb_input_dispatch( data->device, &evt );
-+
-+ old_y = ts_event.y;
-+ }
-+ }
-+
-+ if (!ts_event.pressure != !old_pressure) {
-+ evt.type = (ts_event.pressure ?
-+ DIET_BUTTONPRESS : DIET_BUTTONRELEASE);
-+ evt.flags = DIEF_NONE;
-+ evt.button = DIBI_LEFT;
-+
-+ dfb_input_dispatch( data->device, &evt );
-+
-+ old_pressure = ts_event.pressure;
-+ }
-+ }
-+
-+ if (readlen <= 0)
-+ D_ERROR ("tslib Touchscreen thread died\n");
-+
-+ return NULL;
-+}
-+
-+
-+/* exported symbols */
-+
-+static int
-+driver_get_available()
-+{
-+ struct tsdev *tschk;
-+
-+// printf("tslib available check occured! \n");
-+
-+ tschk = ts_open(ts_dev, TS_BLOCK);
-+ if (!tschk) {
-+ D_ERROR( "DirectFB/tslib: Error opening `%s'!\n", ts_dev);
-+ return 0;
-+ }
-+
-+ if (ts_config(tschk)) {
-+ D_ERROR( "DirectFB/tslib: Error configuring `%s'!\n", ts_dev);
-+ ts_close( tschk );
-+ return 0;
-+ }
-+
-+ ts_close( tschk );
-+ D_INFO( "DirectFB/tslib: Found `%s'\n", ts_dev);
-+
-+ return 1;
-+}
-+
-+static void
-+driver_get_info( InputDriverInfo *info )
-+{
-+ /* fill driver info structure */
-+// printf("tslib getinfo occured! \n");
-+
-+ snprintf( info->name,
-+ DFB_INPUT_DRIVER_INFO_NAME_LENGTH, "tslib Touchscreen Driver" );
-+
-+ snprintf( info->vendor,
-+ DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH,
-+ "tslib" );
-+
-+ info->version.major = 0;
-+ info->version.minor = 1;
-+}
-+
-+static DFBResult
-+driver_open_device( CoreInputDevice *device,
-+ unsigned int number,
-+ InputDeviceInfo *info,
-+ void **driver_data )
-+{
-+ tslibData *data;
-+ struct tsdev *ts;
-+
-+ /* open device */
-+// printf("tslib open occured! \n");
-+
-+ ts = ts_open(ts_dev, TS_BLOCK);
-+ if (!ts) {
-+ D_ERROR( "DirectFB/tslib: Error opening `%s'!\n", ts_dev);
-+ return DFB_INIT;
-+ }
-+
-+ if (ts_config(ts)) {
-+ D_ERROR( "DirectFB/tslib: Error configuring `%s'!\n", ts_dev);
-+ ts_close( ts );
-+ return DFB_INIT;
-+ }
-+
-+ /* fill device info structure */
-+ snprintf( info->desc.name,
-+ DFB_INPUT_DEVICE_DESC_NAME_LENGTH, "tslib Touchscreen" );
-+
-+ snprintf( info->desc.vendor,
-+ DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "Unknown" );
-+
-+ info->prefered_id = DIDID_MOUSE;
-+
-+ info->desc.type = DIDTF_MOUSE;
-+ info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS;
-+ info->desc.max_axis = DIAI_Y;
-+ info->desc.max_button = DIBI_LEFT;
-+
-+ /* allocate and fill private data */
-+ data = D_CALLOC( 1, sizeof(tslibData) );
-+
-+ data->ts = ts;
-+ data->device = device;
-+
-+ /* start input thread */
-+ data->thread = direct_thread_create( DTT_INPUT, tslibEventThread, data, "tslib Input" );
-+
-+ /* set private data pointer */
-+ *driver_data = data;
-+ D_INFO("tslib open return \n");
-+
-+ return DFB_OK;
-+}
-+
-+/*
-+ * Fetch one entry from the device's keymap if supported.
-+ */
-+static DFBResult
-+driver_get_keymap_entry( CoreInputDevice *device,
-+ void *driver_data,
-+ DFBInputDeviceKeymapEntry *entry )
-+{
-+ return DFB_UNSUPPORTED;
-+}
-+
-+static void
-+driver_close_device( void *driver_data )
-+{
-+ tslibData *data = (tslibData*) driver_data;
-+// printf("tslib close occured! \n");
-+
-+ /* stop input thread */
-+ direct_thread_cancel( data->thread );
-+ direct_thread_join( data->thread );
-+ direct_thread_destroy( data->thread );
-+
-+ /* close device */
-+ if (ts_close(data->ts))
-+ D_ERROR( "DirectFB/tslib: Error closing `%s'!\n", ts_dev);
-+
-+ /* free private data */
-+ D_FREE( data );
-+}
diff --git a/packages/directfb/fusionsound_0.9.26+cvs20070207.bb b/packages/directfb/fusionsound_0.9.26+cvs20070207.bb
new file mode 100644
index 0000000000..fe04a195c1
--- /dev/null
+++ b/packages/directfb/fusionsound_0.9.26+cvs20070207.bb
@@ -0,0 +1,37 @@
+DESCRIPTION = "FusionSound for DirectFB"
+DEPENDS = "directfb"
+SECTION = "libs"
+LICENSE = "LGPL"
+
+# this is a CVS only release
+
+SRC_URI = "cvs://anonymous@cvs.directfb.org/cvs/directfb;method=pserver;module=FusionSound;date=${@bb.data.getVar('PV', d, 1)[9:]}"
+
+S = "${WORKDIR}/FusionSound"
+
+inherit autotools pkgconfig
+
+do_configure_append() {
+ find ${S} -type f | xargs sed -i 's:I/usr/include:I${STAGING_INCDIR}:g'
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+}
+
+FILES_fusionsound-dbg_append = " ${libdir}/directfb-1.0-0/*/*/.debug/*.so \
+ ${libdir}/directfb-1.0-0/*/.debug/*.so \
+ "
+
+FILES_fusionsound-dev_append = " ${libdir}/directfb-1.0-0/interfaces/*/*.la \
+ ${libdir}/directfb-1.0-0/snddrivers/*.la \
+ "
+
+FILES_fusionsound_append = " ${libdir}/directfb-1.0-0/interfaces/*/*.so \
+ ${libdir}/directfb-1.0-0/snddrivers/*.so \
+ "
+
diff --git a/packages/directfb/lite_0.9.26+cvs20070207.bb b/packages/directfb/lite_0.9.26+cvs20070207.bb
new file mode 100644
index 0000000000..2f43627829
--- /dev/null
+++ b/packages/directfb/lite_0.9.26+cvs20070207.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "LiTE stands for Lightweight Toolkit Enabler. Its role is to \
+ facilitate the functions of DirectFB so that a toolbox could \
+ be written on top of DirectFB with less effort. As such LiTE \
+ has abstractions for the underlying graphics and event systems."
+
+DEPENDS = "directfb"
+SECTION = "libs"
+LICENSE = "LGPL"
+
+# this is a CVS only release
+
+SRC_URI = "cvs://anonymous@cvs.directfb.org/cvs/directfb;method=pserver;module=lite;date=${@bb.data.getVar('PV', d, 1)[9:]}"
+
+S = "${WORKDIR}/lite"
+
+inherit autotools pkgconfig
+
+do_configure_append() {
+ find ${S} -type f | xargs sed -i 's:I/usr/include:I${STAGING_INCDIR}:g'
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+}
+
+FILES_lite-dbg_append = " ${libdir}/directfb-1.0-0/*/*/.debug/*.so \
+ ${libdir}/directfb-1.0-0/*/.debug/*.so \
+ "
+FILES_lite-dev_append = " ${libdir}/directfb-1.0-0/interfaces/*/*.la \
+ "
+
+FILES_lite_append = " ${libdir}/directfb-1.0-0/interfaces/*/*.so \
+ ${datadir}/LiTE/* \
+ ${datadir}/fonts/truetype/* \
+ "
+
diff --git a/packages/distcc/distcc_2.18.3.bb b/packages/distcc/distcc_2.18.3.bb
index 124f87fc7f..7f557c41d1 100644
--- a/packages/distcc/distcc_2.18.3.bb
+++ b/packages/distcc/distcc_2.18.3.bb
@@ -2,23 +2,34 @@ DESCRIPTION = "distcc is a parallel build system that distributes \
compilation of C/C++/ObjC code across machines on a network."
SECTION = "devel"
LICENSE = "GPLv2"
+PR = "r1"
DEPENDS = "avahi gtk+"
RRECOMMENDS = "avahi-daemon"
SRC_URI = "http://distcc.samba.org/ftp/distcc/distcc-${PV}.tar.bz2 \
- http://0pointer.de/public/distcc-avahi.patch;patch=1"
+ http://0pointer.de/public/distcc-avahi.patch;patch=1 \
+ file://default \
+ file://distcc"
-inherit autotools pkgconfig
+inherit autotools pkgconfig update-rc.d
+
+INITSCRIPT_NAME = "distcc"
EXTRA_OECONF = " --with-gtk "
+do_install_append() {
+ install -d ${D}${sysconfdir}/init.d/
+ install -d ${D}${sysconfdir}/default
+ install -m 0755 ${WORKDIR}/distcc ${D}${sysconfdir}/init.d/
+ install -m 0755 ${WORKDIR}/default ${D}${sysconfdir}/default/distcc
+}
+
PACKAGES += "distcc-distmon-gnome"
-FILES_${PN} = " ${bindir}/distcc \
+FILES_${PN} = " ${sysconfdir} \
+ ${bindir}/distcc \
${bindir}/distccd \
${bindir}/distccmon-text"
FILES_distcc-distmon-gnome = " ${bindir}/distccmon-gnome \
${datadir}/distcc"
-
-
diff --git a/packages/maemo/gconf-osso/.mtn2git_empty b/packages/distcc/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/maemo/gconf-osso/.mtn2git_empty
+++ b/packages/distcc/files/.mtn2git_empty
diff --git a/packages/distcc/files/default b/packages/distcc/files/default
new file mode 100644
index 0000000000..600e8cab45
--- /dev/null
+++ b/packages/distcc/files/default
@@ -0,0 +1,19 @@
+# Defaults for distcc initscript
+# sourced by /etc/init.d/distcc
+
+#
+# should distcc be started on boot?
+#
+# STARTDISTCC="true"
+
+STARTDISTCC="true"
+
+#
+# Which networks/hosts should be allowed to connect to the daemon?
+# You can list multiple hosts/networks separated by spaces.
+# Networks have to be in CIDR notation, f.e. 192.168.1.0/24
+# Hosts are represented by a single IP Adress
+#
+# ALLOWEDNETS="127.0.0.1"
+
+ALLOWEDNETS="192.168.0.0/24"
diff --git a/packages/distcc/files/distcc b/packages/distcc/files/distcc
new file mode 100644
index 0000000000..bbd4707497
--- /dev/null
+++ b/packages/distcc/files/distcc
@@ -0,0 +1,98 @@
+#!/bin/sh
+#
+# distccd Debian init.d script contributed by Jason Thomas. (Debian #161136)
+#
+# skeleton example file to build /etc/init.d/ scripts.
+# This file should be used to construct scripts for /etc/init.d.
+#
+# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+# Modified for Debian GNU/Linux
+# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+#
+# Version: @(#)skeleton 1.9.1 08-Apr-2002 miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/bin/distccd
+NAME=distcc
+DESC="Distributed Compiler Daemon"
+DAEMON_ARGS="--pid-file=/var/run/$NAME.pid --daemon"
+# please change those variables by overriding them in /etc/defaults/distcc
+ALLOWEDNETS="127.0.0.1"
+
+# Reads config file (will override defaults above)
+[ -r /etc/default/distcc ] && . /etc/default/distcc
+
+test -x $DAEMON || exit 0
+
+set -e
+
+# construct access list
+ALLOW=""
+for net in $ALLOWEDNETS
+do
+ ALLOW="$ALLOW --allow $net"
+done
+
+should_start() {
+ if [ "$STARTDISTCC" != "true" ] && [ "$STARTDISTCC" != "YES" ]; then
+ echo "STARTDISTCC is set to false in /etc/default/distcc"
+ echo "$DAEMON not starting"
+ exit 0
+ fi
+}
+
+case "$1" in
+ start)
+ should_start
+ echo -n "Starting $DESC: $NAME"
+ start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
+ --exec $DAEMON -- $DAEMON_ARGS $ALLOW ||
+ {
+ code=$?
+ echo "$0: start failed with error code $code" >&2
+ exit $code
+ }
+ echo "."
+ ;;
+ stop)
+ echo -n "Stopping $DESC: $NAME"
+ start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
+ --exec $DAEMON ||
+ {
+ code=$?
+ echo "$0: stop failed with error code $code" >&2
+ exit $code
+ }
+ echo "."
+ ;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart".
+ #
+ echo -n "Restarting $DESC: $NAME"
+ start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
+ --exec $DAEMON
+ sleep 1
+ should_start
+ start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
+ --exec $DAEMON -- $DAEMON_ARGS $ALLOW ||
+ {
+ code=$?
+ echo "$0: restart failed with error code $code" >&2
+ exit $code
+ }
+ echo "."
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+
diff --git a/packages/dnsmasq/dnsmasq_2.38.bb b/packages/dnsmasq/dnsmasq_2.38.bb
new file mode 100644
index 0000000000..83aea1d299
--- /dev/null
+++ b/packages/dnsmasq/dnsmasq_2.38.bb
@@ -0,0 +1 @@
+require dnsmasq.inc
diff --git a/packages/dosbox/dosbox_0.70.bb b/packages/dosbox/dosbox_0.70.bb
new file mode 100644
index 0000000000..9d68e27515
--- /dev/null
+++ b/packages/dosbox/dosbox_0.70.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Dos Emulator based on SDL"
+SECTION = "base"
+PRIORITY = "optional"
+DEPENDS = "virtual/libsdl"
+LICENSE = "GPL"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/dosbox/dosbox-${PV}.tar.gz \
+ file://nocdrom.patch;patch=1"
+CXXFLAGS_append = " -DC_SDL_NOCDROM"
+
+inherit autotools
+
diff --git a/packages/maemo/osso-gnome-vfs2/.mtn2git_empty b/packages/dri/drm-kernel/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/maemo/osso-gnome-vfs2/.mtn2git_empty
+++ b/packages/dri/drm-kernel/.mtn2git_empty
diff --git a/packages/dri/make.patch b/packages/dri/drm-kernel/make.patch
index f0dabecd5e..f0dabecd5e 100644
--- a/packages/dri/make.patch
+++ b/packages/dri/drm-kernel/make.patch
diff --git a/packages/dri/drm_cvs.bb b/packages/dri/drm_cvs.bb
deleted file mode 100644
index 0c235a3adb..0000000000
--- a/packages/dri/drm_cvs.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SECTION = "x11/base"
-LICENSE = "MIT"
-SRC_URI = "${FREEDESKTOP_CVS}/dri;module=drm;method=pserver"
-
-PV = "0.0+cvs${SRCDATE}"
-PR = "r3"
-
-S = "${WORKDIR}/drm"
-
-inherit autotools pkgconfig
-
-do_compile() {
- oe_runmake -C libdrm
-}
-
-do_stage() {
- autotools_stage_all
-}
-
-
diff --git a/packages/dri/libdrm_2.3.0.bb b/packages/dri/libdrm_2.3.0.bb
new file mode 100644
index 0000000000..9caf9b4bea
--- /dev/null
+++ b/packages/dri/libdrm_2.3.0.bb
@@ -0,0 +1,10 @@
+SECTION = "x11/base"
+LICENSE = "MIT"
+SRC_URI = "http://dri.freedesktop.org/libdrm/libdrm-${PV}.tar.bz2"
+PROVIDES = "drm"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/mozilla/firefox-1.5.0.6/.mtn2git_empty b/packages/dropbear/dropbear-0.49/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/mozilla/firefox-1.5.0.6/.mtn2git_empty
+++ b/packages/dropbear/dropbear-0.49/.mtn2git_empty
diff --git a/packages/dropbear/dropbear-0.49/configure.patch b/packages/dropbear/dropbear-0.49/configure.patch
new file mode 100644
index 0000000000..8d11b23f14
--- /dev/null
+++ b/packages/dropbear/dropbear-0.49/configure.patch
@@ -0,0 +1,27 @@
+Index: dropbear-0.49/configure.in
+===================================================================
+--- dropbear-0.49.orig/configure.in
++++ dropbear-0.49/configure.in
+@@ -164,14 +164,20 @@ AC_ARG_ENABLE(openpty,
+ AC_MSG_NOTICE(Not using openpty)
+ else
+ AC_MSG_NOTICE(Using openpty if available)
+- AC_SEARCH_LIBS(openpty, util, [AC_DEFINE(HAVE_OPENPTY,,Have openpty() function)])
++ AC_SEARCH_LIBS(openpty, util, [dropbear_cv_func_have_openpty=yes])
+ fi
+ ],
+ [
+ AC_MSG_NOTICE(Using openpty if available)
+- AC_SEARCH_LIBS(openpty, util, [AC_DEFINE(HAVE_OPENPTY)])
++ AC_SEARCH_LIBS(openpty, util, [dropbear_cv_func_have_openpty=yes])
+ ]
+ )
++
++if test "x$dropbear_cv_func_have_openpty" = "xyes"; then
++ AC_DEFINE(HAVE_OPENPTY,,Have openpty() function)
++ no_ptc_check=yes
++ no_ptmx_check=yes
++fi
+
+
+ AC_ARG_ENABLE(syslog,
diff --git a/packages/dropbear/dropbear.inc b/packages/dropbear/dropbear.inc
index 301ac24cb2..a53d2dbb87 100644
--- a/packages/dropbear/dropbear.inc
+++ b/packages/dropbear/dropbear.inc
@@ -26,7 +26,7 @@ BINCOMMANDS = "dbclient ssh scp"
EXTRA_OEMAKE = 'MULTI=1 SCPPROGRESS=1 PROGRAMS="${SBINCOMMANDS} ${BINCOMMANDS}"'
do_configure_prepend() {
- if [ "x${DISTRO}" != "xfamiliar" -a "${DISTRO_TYPE}" == "debug" ]; then
+ if [ "x${DISTRO}" != "xfamiliar" -a "${DISTRO_TYPE}" = "debug" ]; then
oenote "WARNING: applying allow-nopw.patch which allows password-less logins!"
patch -p1 < ${WORKDIR}/allow-nopw.patch
fi
diff --git a/packages/dropbear/dropbear_0.49.bb b/packages/dropbear/dropbear_0.49.bb
new file mode 100644
index 0000000000..f98c0ac8f6
--- /dev/null
+++ b/packages/dropbear/dropbear_0.49.bb
@@ -0,0 +1 @@
+require dropbear.inc
diff --git a/packages/mozilla/firefox-2.0/.mtn2git_empty b/packages/dtc/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/mozilla/firefox-2.0/.mtn2git_empty
+++ b/packages/dtc/.mtn2git_empty
diff --git a/packages/dtc/dtc-native_20070216.bb b/packages/dtc/dtc-native_20070216.bb
new file mode 100644
index 0000000000..8d8cf517a0
--- /dev/null
+++ b/packages/dtc/dtc-native_20070216.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "dtc tool"
+SECTION = "bootloader"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+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/dtc/dtc-native_git.bb b/packages/dtc/dtc-native_git.bb
new file mode 100644
index 0000000000..9ef9292e92
--- /dev/null
+++ b/packages/dtc/dtc-native_git.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "dtc tool"
+SECTION = "bootloader"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+SRC_URI = "git://www.jdl.com/software/dtc.git;protocol=git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools native
+
+do_stage() {
+ install -m 755 dtc ${STAGING_BINDIR}/dtc
+}
diff --git a/packages/dtc/dtc_20070216.bb b/packages/dtc/dtc_20070216.bb
new file mode 100644
index 0000000000..476a84eba8
--- /dev/null
+++ b/packages/dtc/dtc_20070216.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "dtc tool"
+SECTION = "bootloader"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+SRC_URI = "http://www.jdl.com/pub/software/dtc-${PV}.tgz"
+
+S = "${WORKDIR}/dtc"
+
+inherit autotools
+
+do_install() {
+ install -m 0755 -d ${D}${bindir}
+ install -m 755 dtc ${D}${bindir}/dtc
+}
diff --git a/packages/dtc/dtc_git.bb b/packages/dtc/dtc_git.bb
new file mode 100644
index 0000000000..e8523173a1
--- /dev/null
+++ b/packages/dtc/dtc_git.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "dtc tool"
+SECTION = "bootloader"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+SRC_URI = "git://www.jdl.com/software/dtc.git;protocol=git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+do_install() {
+ install -m 0755 -d ${D}${bindir}
+ install -m 755 dtc ${D}${bindir}/dtc
+}
diff --git a/packages/e17/e-wm_0.16.999.036.bb b/packages/e17/e-wm_0.16.999.036.bb
deleted file mode 100644
index 3084fd99bc..0000000000
--- a/packages/e17/e-wm_0.16.999.036.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "E17 - the Enlightenment Window Mananger"
-DEPENDS = "evas-x11 ecore-x11 edje eet embryo"
-LICENSE = "MIT"
-PR = "r4"
-
-inherit e update-alternatives
-
-SRC_URI = "${E_URI}/enlightenment-${PV}.tar.gz \
- file://fix-configure.patch;patch=1 \
- file://set-autoscroll-defaults.patch;patch=1 \
- file://Xsession.d/98enlightenment"
-
-S = "${WORKDIR}/enlightenment-${PV}"
-
-PROFILE = "LOWRES_PDA"
-PROFILE_c7x0 = "HIRES_PDA"
-PROFILE_tosa = "HIRES_PDA"
-PROFILE_spitz = "HIRES_PDA"
-PROFILE_akita = "HIRES_PDA"
-
-EXTRA_OECONF = "--with-profile=${PROFILE} \
- --with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc \
- --x-includes=${STAGING_INCDIR}/X11 \
- --x-libraries=${STAGING_LIBDIR}"
-
-FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir} ${sysconfdir}"
-
-do_compile_prepend() {
- find ${S} -name Makefile | xargs sed -i 's:/usr/include:${STAGING_INCDIR}:'
- find ${S} -name Makefile | xargs sed -i 's:/usr/X11R6/include:${STAGING_INCDIR}:'
-}
-
-do_install_append() {
- install -d ${D}/${sysconfdir}/X11/Xsession.d
- install -m 755 ${WORKDIR}/Xsession.d/98enlightenment ${D}/${sysconfdir}/X11/Xsession.d
-}
-
-ALTERNATIVE_PATH = "${bindir}/enlightenment"
-ALTERNATIVE_NAME = "x-window-manager"
-ALTERNATIVE_LINK = "${bindir}/x-window-manager"
-ALTERNATIVE_PRIORITY = "16"
diff --git a/packages/e17/e-wm_0.16.999.037.bb b/packages/e17/e-wm_0.16.999.037.bb
new file mode 100644
index 0000000000..0ccd0c67f2
--- /dev/null
+++ b/packages/e17/e-wm_0.16.999.037.bb
@@ -0,0 +1,43 @@
+DESCRIPTION = "E17 - the Enlightenment Window Mananger"
+DEPENDS = "evas-x11 ecore-x11 edje eet embryo"
+LICENSE = "MIT"
+PR = "r5"
+
+inherit e update-alternatives
+
+SRC_URI = "${E_URI}/enlightenment-${PV}.tar.gz \
+ file://fix-configure.patch;patch=1 \
+ file://set-autoscroll-defaults.patch;patch=1 \
+ file://Xsession.d/98enlightenment"
+
+S = "${WORKDIR}/enlightenment-${PV}"
+
+PROFILE = "LOWRES_PDA"
+PROFILE_c7x0 = "HIRES_PDA"
+PROFILE_tosa = "HIRES_PDA"
+PROFILE_spitz = "HIRES_PDA"
+PROFILE_akita = "HIRES_PDA"
+
+EXTRA_OECONF = "--with-profile=${PROFILE} \
+ --with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc \
+ --x-includes=${STAGING_INCDIR}/X11 \
+ --x-libraries=${STAGING_LIBDIR}"
+
+FILES_${PN} = "${bindir}/* ${libdir}/enlightenment/modules/*/*.edj ${libdir}/enlightenment/modules/*/*.desktop ${libdir}/enlightenment/modules/*/*/*.so ${libdir}/enlightenment/preload/*.so ${datadir} ${sysconfdir} ${libdir}/enlightenment/modules/cpufreq/*/freqset"
+FILES_${PN}-dev += "${libdir}/enlightenment/modules/*/*/*.a ${libdir}/enlightenment/modules/*/*/*.la ${libdir}/enlightenment/preload/*.a ${libdir}/enlightenment/preload/*.la"
+FILES_${PN}-dbg += "${libdir}/enlightenment/modules/*/*/.debug/ ${libdir}/enlightenment/preload/.debug/"
+
+do_compile_prepend() {
+ find ${S} -name Makefile | xargs sed -i 's:/usr/include:${STAGING_INCDIR}:'
+ find ${S} -name Makefile | xargs sed -i 's:/usr/X11R6/include:${STAGING_INCDIR}:'
+}
+
+do_install_append() {
+ install -d ${D}/${sysconfdir}/X11/Xsession.d
+ install -m 755 ${WORKDIR}/Xsession.d/98enlightenment ${D}/${sysconfdir}/X11/Xsession.d
+}
+
+ALTERNATIVE_PATH = "${bindir}/enlightenment"
+ALTERNATIVE_NAME = "x-window-manager"
+ALTERNATIVE_LINK = "${bindir}/x-window-manager"
+ALTERNATIVE_PRIORITY = "16"
diff --git a/packages/e17/entice_20060128.bb b/packages/e17/entice_20060128.bb
index 776f652b96..5b433de015 100644
--- a/packages/e17/entice_20060128.bb
+++ b/packages/e17/entice_20060128.bb
@@ -1,8 +1,8 @@
DESCRIPTION = "Entice is the E17 picture viewer"
# can also depend on GIMP for editing
-DEPENDS = "edb evas-x11 ecore-x11 edje epsilon esmart-x11"
LICENSE = "MIT"
-PR = "r3"
+DEPENDS = "edb evas-x11 ecore-x11 edje epsilon esmart-x11"
+PR = "r4"
inherit e
diff --git a/packages/e17/entice_20060416.bb b/packages/e17/entice_20060416.bb
index 87434e3d3b..663ee97cd8 100644
--- a/packages/e17/entice_20060416.bb
+++ b/packages/e17/entice_20060416.bb
@@ -1,8 +1,8 @@
DESCRIPTION = "Entice is the E17 picture viewer"
# can also depend on GIMP for editing
-DEPENDS = "edb evas-x11 ecore-x11 edje epsilon esmart-x11"
LICENSE = "MIT"
-PR = "r0"
+DEPENDS = "edb evas-x11 ecore-x11 edje epsilon esmart-x11"
+PR = "r1"
inherit e
diff --git a/packages/e17/entrance/Sessions/Enlightenment b/packages/e17/entrance/Sessions/Enlightenment
index 4d33bbb2e9..61498c2c6c 100644
--- a/packages/e17/entrance/Sessions/Enlightenment
+++ b/packages/e17/entrance/Sessions/Enlightenment
@@ -1,4 +1,3 @@
#!/bin/sh
-enlightenment
-
+enlightenment_start
diff --git a/packages/e17/entrance_0.9.0.007.bb b/packages/e17/entrance_0.9.0.007.bb
index 7f0a9a181e..50126cb5a9 100644
--- a/packages/e17/entrance_0.9.0.007.bb
+++ b/packages/e17/entrance_0.9.0.007.bb
@@ -1,10 +1,10 @@
DESCRIPTION = "Entrance is the Enlightenment login manager"
LICENSE = "MIT"
# can also use pam and crypt
-DEPENDS = "edb edb-native evas-x11 ecore-x11 edje esmart-x11 bash keylaunch xserver-common login-manager"
+DEPENDS = "evas-x11 ecore-x11 edje esmart-x11 bash keylaunch xserver-common login-manager"
RDEPENDS += "bash keylaunch xserver-common glibc-gconv-iso8859-1 login-manager entrance-themes"
HOMEPAGE = "http://www.enlightenment.org"
-PR = "r13"
+PR = "r14"
inherit e
diff --git a/packages/mozilla/firefox-2.0/arm/.mtn2git_empty b/packages/e2fsprogs-libs/e2fsprogs-libs-1.39/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/mozilla/firefox-2.0/arm/.mtn2git_empty
+++ b/packages/e2fsprogs-libs/e2fsprogs-libs-1.39/.mtn2git_empty
diff --git a/packages/e2fsprogs-libs/e2fsprogs-libs-1.39/configure.patch b/packages/e2fsprogs-libs/e2fsprogs-libs-1.39/configure.patch
new file mode 100644
index 0000000000..1b31c0b305
--- /dev/null
+++ b/packages/e2fsprogs-libs/e2fsprogs-libs-1.39/configure.patch
@@ -0,0 +1,22 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- e2fsprogs-libs-1.33/./lib/uuid/configure.in~configure
++++ e2fsprogs-libs-1.33/./lib/uuid/configure.in
+@@ -2,9 +2,11 @@
+ dnl Not used now, for the future when uuid is separated out into its
+ dnl own package.
+ dnl
+-AC_INIT(gen_uuid.c)
+-AC_PREREQ(2.12)
++AC_INIT
++AC_CONFIG_SRCDIR([gen_uuid.c])
++AC_PREREQ(2.57)
+
+ AC_CHECK_HEADERS(stdlib.h unistd.h sys/sockio.h net/if.h netinet/in.h)
+ AC_CHECK_FUNCS(srandom)
+-AC_OUTPUT(Makefile)
++AC_CONFIG_FILES([Makefile])
++AC_OUTPUT
diff --git a/packages/e2fsprogs-libs/e2fsprogs-libs.inc b/packages/e2fsprogs-libs/e2fsprogs-libs.inc
index 03f9c8dc22..9efa6d1d70 100644
--- a/packages/e2fsprogs-libs/e2fsprogs-libs.inc
+++ b/packages/e2fsprogs-libs/e2fsprogs-libs.inc
@@ -3,7 +3,7 @@ LICENSE = "GPL"
SECTION = "base"
PRIORITY = "optional"
-inherit autotools
+inherit autotools pkgconfig
SRC_URI = "${SOURCEFORGE_MIRROR}/e2fsprogs/e2fsprogs-libs-${PV}.tar.gz \
file://configure.patch;patch=1 \
diff --git a/packages/e2fsprogs-libs/e2fsprogs-libs_1.39.bb b/packages/e2fsprogs-libs/e2fsprogs-libs_1.39.bb
new file mode 100644
index 0000000000..dfd83e3c1f
--- /dev/null
+++ b/packages/e2fsprogs-libs/e2fsprogs-libs_1.39.bb
@@ -0,0 +1,13 @@
+require e2fsprogs-libs.inc
+
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/e2fsprogs/e2fsprogs-libs-${PV}.tar.gz \
+ file://configure.patch;patch=1"
+
+EXTRA_OECONF=" --enable-elf-shlibs "
+
+do_compile_prepend () {
+ find ./ -print|xargs chmod u=rwX
+ ( cd util; ${BUILD_CC} subst.c -o subst )
+}
diff --git a/packages/e2fsprogs/e2fsprogs-native_1.38.bb b/packages/e2fsprogs/e2fsprogs-native_1.38.bb
index 8d1d580c90..dcb5c412d0 100644
--- a/packages/e2fsprogs/e2fsprogs-native_1.38.bb
+++ b/packages/e2fsprogs/e2fsprogs-native_1.38.bb
@@ -1,20 +1,13 @@
SECTION = "base"
-require e2fsprogs_${PV}.bb
+require e2fsprogs.inc
inherit native
+EXTRA_OECONF = ""
+
FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/e2fsprogs-${PV}', '${FILE_DIRNAME}/e2fsprogs', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
PACKAGES = ""
DEPENDS = ""
do_stage () {
- oe_libinstall -a -C lib libe2p ${STAGING_LIBDIR}/
- oe_libinstall -a -C lib libext2fs ${STAGING_LIBDIR}/
- install -d ${STAGING_INCDIR}/e2p
- for h in ${e2pheaders}; do
- install -m 0644 lib/e2p/$h ${STAGING_INCDIR}/e2p/ || die "failed to install $h"
- done
- install -d ${STAGING_INCDIR}/ext2fs
- for h in ${ext2fsheaders}; do
- install -m 0644 lib/ext2fs/$h ${STAGING_INCDIR}/ext2fs/ || die "failed to install $h"
- done
+ oe_runmake install
}
diff --git a/packages/e2fsprogs/e2fsprogs.inc b/packages/e2fsprogs/e2fsprogs.inc
index b6bb469cd3..f209baf3b4 100644
--- a/packages/e2fsprogs/e2fsprogs.inc
+++ b/packages/e2fsprogs/e2fsprogs.inc
@@ -5,8 +5,10 @@ SECTION = "base"
SRC_URI = "${SOURCEFORGE_MIRROR}/e2fsprogs/e2fsprogs-${PV}.tar.gz"
+S = "${WORKDIR}/e2fsprogs-${PV}"
+
inherit autotools
EXTRA_OECONF = " --enable-dynamic-e2fsck"
-
+PARALLEL_MAKE = ""
diff --git a/packages/e2fsprogs/e2fsprogs/e2fsprogs_1.34.bb b/packages/e2fsprogs/e2fsprogs/e2fsprogs_1.34.bb
index a0a449042f..6558236ae4 100644
--- a/packages/e2fsprogs/e2fsprogs/e2fsprogs_1.34.bb
+++ b/packages/e2fsprogs/e2fsprogs/e2fsprogs_1.34.bb
@@ -1,14 +1,14 @@
-DESCRIPTION="EXT2 Filesystem Utilities"
-SECTION="base"
-PRIORITY="optional"
-RDEPENDS="libc6"
-DEPENDS=virtual/libc
+DESCRIPTION = "EXT2 Filesystem Utilities"
+SECTION = "base"
+PRIORITY = "optional"
+DEPENDS = "virtual/libc"
+RDEPENDS = "libc6"
-SRC_URI=${SOURCEFORGE_MIRROR}/e2fsprogs/e2fsprogs-${PV}.tar.gz \
- file://${FILESDIR}/ln.patch;patch=1 \
- file://${FILESDIR}/configure.patch;patch=1 \
- file://${FILESDIR}/compile-subst.patch;patch=1 \
- file://${FILESDIR}/m4.patch;patch=1
+SRC_URI = "${SOURCEFORGE_MIRROR}/e2fsprogs/e2fsprogs-${PV}.tar.gz \
+ file://${FILESDIR}/ln.patch;patch=1 \
+ file://${FILESDIR}/configure.patch;patch=1 \
+ file://${FILESDIR}/compile-subst.patch;patch=1 \
+ file://${FILESDIR}/m4.patch;patch=1
inherit autotools
diff --git a/packages/e2fsprogs/e2fsprogs_1.33.bb b/packages/e2fsprogs/e2fsprogs_1.33.bb
deleted file mode 100644
index 80572a0d41..0000000000
--- a/packages/e2fsprogs/e2fsprogs_1.33.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-require e2fsprogs.inc
-
-PR = "r1"
-
-SRC_URI += "file://ln.patch;patch=1 \
- file://configure.patch;patch=1 \
- file://compile-subst.patch;patch=1 \
- file://m4.patch;patch=1"
-
-sbindir = "/sbin"
-
-PACKAGES_prepend = "e2fsprogs-e2fsck e2fsprogs-mke2fs e2fsprogs-fsck "
-FILES_e2fsprogs-fsck = "${sbindir}/fsck"
-FILES_e2fsprogs-e2fsck = "${sbindir}/e2fsck ${sbindir}/fsck.ext2 ${sbindir}/fsck.ext3"
-FILES_e2fsprogs-mke2fs = "${sbindir}/mke2fs ${sbindir}/mkfs.ext2 ${sbindir}/mkfs.ext3"
-
-do_compile_prepend () {
- find ./ -print|xargs chmod u=rwX
- ( cd util; ${BUILD_CC} subst.c -o subst )
-}
-
-ext2fsheaders = "ext2_ext_attr.h bitops.h ext2_err.h \
- ext2_types.h ext2_fs.h ext2_io.h \
- ext2fs.h"
-e2pheaders = "e2p.h"
-do_stage () {
- oe_libinstall -a -C lib libe2p ${STAGING_LIBDIR}/
- oe_libinstall -a -C lib libext2fs ${STAGING_LIBDIR}/
- install -d ${STAGING_INCDIR}/e2p
- for h in ${e2pheaders}; do
- install -m 0644 lib/e2p/$h ${STAGING_INCDIR}/e2p/ || die "failed to install $h"
- done
- install -d ${STAGING_INCDIR}/ext2fs
- for h in ${ext2fsheaders}; do
- install -m 0644 lib/ext2fs/$h ${STAGING_INCDIR}/ext2fs/ || die "failed to install $h"
- done
-}
diff --git a/packages/e2fsprogs/e2fsprogs_1.34.bb b/packages/e2fsprogs/e2fsprogs_1.34.bb
deleted file mode 100644
index 837cf962a0..0000000000
--- a/packages/e2fsprogs/e2fsprogs_1.34.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-require e2fsprogs.inc
-
-PR = "r1"
-
-SRC_URI += "file://ln.patch;patch=1 \
- file://configure.patch;patch=1 \
- file://compile-subst.patch;patch=1 \
- file://m4.patch;patch=1 \
- file://ldflags.patch;patch=1"
-
-sbindir = "/sbin"
-
-PACKAGES_prepend = "e2fsprogs-e2fsck e2fsprogs-mke2fs e2fsprogs-fsck "
-FILES_e2fsprogs-fsck = "${sbindir}/fsck"
-FILES_e2fsprogs-e2fsck = "${sbindir}/e2fsck ${sbindir}/fsck.ext2 ${sbindir}/fsck.ext3"
-FILES_e2fsprogs-mke2fs = "${sbindir}/mke2fs ${sbindir}/mkfs.ext2 ${sbindir}/mkfs.ext3"
-
-do_compile_prepend () {
- find ./ -print|xargs chmod u=rwX
- ( cd util; ${BUILD_CC} subst.c -o subst )
-}
-
-ext2fsheaders = "ext2_ext_attr.h bitops.h ext2_err.h \
- ext2_types.h ext2_fs.h ext2_io.h \
- ext2fs.h"
-e2pheaders = "e2p.h"
-do_stage () {
- oe_libinstall -a -C lib libe2p ${STAGING_LIBDIR}/
- oe_libinstall -a -C lib libext2fs ${STAGING_LIBDIR}/
- install -d ${STAGING_INCDIR}/e2p
- for h in ${e2pheaders}; do
- install -m 0644 lib/e2p/$h ${STAGING_INCDIR}/e2p/ || die "failed to install $h"
- done
- install -d ${STAGING_INCDIR}/ext2fs
- for h in ${ext2fsheaders}; do
- install -m 0644 lib/ext2fs/$h ${STAGING_INCDIR}/ext2fs/ || die "failed to install $h"
- done
-}
diff --git a/packages/e2fsprogs/e2fsprogs_1.35.bb b/packages/e2fsprogs/e2fsprogs_1.35.bb
deleted file mode 100644
index 837cf962a0..0000000000
--- a/packages/e2fsprogs/e2fsprogs_1.35.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-require e2fsprogs.inc
-
-PR = "r1"
-
-SRC_URI += "file://ln.patch;patch=1 \
- file://configure.patch;patch=1 \
- file://compile-subst.patch;patch=1 \
- file://m4.patch;patch=1 \
- file://ldflags.patch;patch=1"
-
-sbindir = "/sbin"
-
-PACKAGES_prepend = "e2fsprogs-e2fsck e2fsprogs-mke2fs e2fsprogs-fsck "
-FILES_e2fsprogs-fsck = "${sbindir}/fsck"
-FILES_e2fsprogs-e2fsck = "${sbindir}/e2fsck ${sbindir}/fsck.ext2 ${sbindir}/fsck.ext3"
-FILES_e2fsprogs-mke2fs = "${sbindir}/mke2fs ${sbindir}/mkfs.ext2 ${sbindir}/mkfs.ext3"
-
-do_compile_prepend () {
- find ./ -print|xargs chmod u=rwX
- ( cd util; ${BUILD_CC} subst.c -o subst )
-}
-
-ext2fsheaders = "ext2_ext_attr.h bitops.h ext2_err.h \
- ext2_types.h ext2_fs.h ext2_io.h \
- ext2fs.h"
-e2pheaders = "e2p.h"
-do_stage () {
- oe_libinstall -a -C lib libe2p ${STAGING_LIBDIR}/
- oe_libinstall -a -C lib libext2fs ${STAGING_LIBDIR}/
- install -d ${STAGING_INCDIR}/e2p
- for h in ${e2pheaders}; do
- install -m 0644 lib/e2p/$h ${STAGING_INCDIR}/e2p/ || die "failed to install $h"
- done
- install -d ${STAGING_INCDIR}/ext2fs
- for h in ${ext2fsheaders}; do
- install -m 0644 lib/ext2fs/$h ${STAGING_INCDIR}/ext2fs/ || die "failed to install $h"
- done
-}
diff --git a/packages/e2fsprogs/e2fsprogs_1.38.bb b/packages/e2fsprogs/e2fsprogs_1.38.bb
index a909419437..2e8bf3d219 100644
--- a/packages/e2fsprogs/e2fsprogs_1.38.bb
+++ b/packages/e2fsprogs/e2fsprogs_1.38.bb
@@ -1,11 +1,8 @@
require e2fsprogs.inc
-PR = "r6"
+PR = "r8"
SRC_URI += "file://no-hardlinks.patch;patch=1"
-S = "${WORKDIR}/e2fsprogs-${PV}"
-
-PARALLEL_MAKE = ""
EXTRA_OECONF += " --sbindir=${base_sbindir}"
@@ -30,6 +27,7 @@ do_stage () {
for h in ${ext2fsheaders}; do
install -m 0644 lib/ext2fs/$h ${STAGING_INCDIR}/ext2fs/ || die "failed to install $h"
done
+ autotools_stage_all
}
# blkid used to be part of e2fsprogs but is useful outside, add it
@@ -40,8 +38,51 @@ RDEPENDS_e2fsprogs = "e2fsprogs-blkid e2fsprogs-uuidgen e2fsprogs-badblocks"
PACKAGES =+ "e2fsprogs-blkid e2fsprogs-uuidgen e2fsprogs-e2fsck e2fsprogs-mke2fs e2fsprogs-fsck e2fsprogs-tune2fs e2fsprogs-badblocks"
FILES_e2fsprogs-blkid = "${base_sbindir}/blkid"
FILES_e2fsprogs-uuidgen = "${bindir}/uuidgen"
-FILES_e2fsprogs-fsck = "${base_sbindir}/fsck"
-FILES_e2fsprogs-e2fsck = "${base_sbindir}/e2fsck ${base_sbindir}/fsck.ext*"
-FILES_e2fsprogs-mke2fs = "${base_sbindir}/mke2fs ${base_sbindir}/mkfs.ext*"
+FILES_e2fsprogs-fsck = "${base_sbindir}/fsck.${PN}"
+FILES_e2fsprogs-e2fsck = "${base_sbindir}/e2fsck.${PN} ${base_sbindir}/fsck.ext*.${PN}"
+FILES_e2fsprogs-mke2fs = "${base_sbindir}/mke2fs.${PN} ${base_sbindir}/mkfs.ext*.${PN}"
FILES_e2fsprogs-tune2fs = "${base_sbindir}/tune2fs ${base_sbindir}/e2label ${base_sbindir}/findfs"
FILES_e2fsprogs-badblocks = "${base_sbindir}/badblocks"
+
+do_install_append () {
+ mv ${D}${base_sbindir}/fsck ${D}${base_sbindir}/fsck.${PN}
+ mv ${D}${base_sbindir}/e2fsck ${D}${base_sbindir}/e2fsck.${PN}
+ mv ${D}${base_sbindir}/fsck.ext2 ${D}${base_sbindir}/fsck.ext2.${PN}
+ mv ${D}${base_sbindir}/fsck.ext3 ${D}${base_sbindir}/fsck.ext3.${PN}
+ mv ${D}${base_sbindir}/mke2fs ${D}${base_sbindir}/mke2fs.${PN}
+ mv ${D}${base_sbindir}/mkfs.ext2 ${D}${base_sbindir}/mkfs.ext2.${PN}
+ mv ${D}${base_sbindir}/mkfs.ext3 ${D}${base_sbindir}/mkfs.ext3.${PN}
+}
+
+pkg_postinst_e2fsprogs-fsck () {
+ update-alternatives --install ${base_sbindir}/fsck fsck fsck.${PN} 100
+}
+
+pkg_prerm_e2fsprogs-fsck () {
+ update-alternatives --remove fsck fsck.${PN}
+}
+
+pkg_postinst_e2fsprogs-e2fsck () {
+ update-alternatives --install ${base_sbindir}/e2fsck e2fsck e2fsck.${PN} 100
+ update-alternatives --install ${base_sbindir}/fsck.ext2 fsck.ext2 fsck.ext2.${PN} 100
+ update-alternatives --install ${base_sbindir}/fsck.ext3 fsck.ext3 fsck.ext3.${PN} 100
+}
+
+pkg_prerm_e2fsprogs-e2fsck () {
+ update-alternatives --remove e2fsck e2fsck.${PN}
+ update-alternatives --remove fsck.ext2 fsck.ext2.${PN}
+ update-alternatives --remove fsck.ext3 fsck.ext3.${PN}
+}
+
+pkg_postinst_e2fsprogs-mke2fs () {
+ update-alternatives --install ${base_sbindir}/mke2fs mke2fs mke2fs.${PN} 100
+ update-alternatives --install ${base_sbindir}/mkfs.ext2 mkfs.ext2 mkfs.ext2.${PN} 100
+ update-alternatives --install ${base_sbindir}/mkfs.ext3 mkfs.ext3 mkfs.ext3.${PN} 100
+}
+
+pkg_prerm_e2fsprogs-mke2fs () {
+ update-alternatives --remove mke2fs mke2fs.${PN}
+ update-alternatives --remove mkfs.ext2 mkfs.ext2.${PN}
+ update-alternatives --remove mkfs.ext3 mkfs.ext3.${PN}
+}
+
diff --git a/packages/mozilla/firefox-2.0/powerpc/.mtn2git_empty b/packages/eb/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/mozilla/firefox-2.0/powerpc/.mtn2git_empty
+++ b/packages/eb/.mtn2git_empty
diff --git a/packages/eb/eb_4.3.bb b/packages/eb/eb_4.3.bb
new file mode 100644
index 0000000000..29bd53dfea
--- /dev/null
+++ b/packages/eb/eb_4.3.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Electronic book library"
+HOMEPAGE = "http://www.sra.co.jp/people/m-kasahr/eb"
+SECTION = "libs"
+LICENSE = "GPL"
+
+SRC_URI = "ftp://ftp.sra.co.jp/pub/misc/eb/eb-${PV}.tar.bz2"
+
+inherit autotools pkgconfig
+
+do_stage () {
+ install -d ${STAGING_INCDIR}/eb/
+ install -m 0644 eb/*.h ${STAGING_INCDIR}/eb/
+ install eb/.libs/libeb.so ${STAGING_LIBDIR}
+}
diff --git a/packages/eds/eds-dbus/fix-bindig-tool.patch b/packages/eds/eds-dbus/fix-bindig-tool.patch
new file mode 100644
index 0000000000..704df84f69
--- /dev/null
+++ b/packages/eds/eds-dbus/fix-bindig-tool.patch
@@ -0,0 +1,22 @@
+--- /tmp/Makefile.am 2007-01-16 13:56:57.000000000 +0100
++++ trunk/calendar/libecal-dbus/Makefile.am 2007-01-16 13:57:40.045251000 +0100
+@@ -64,7 +64,7 @@
+ dbus-binding-tool --mode=glib-server --output=$@ --prefix=$(subst -,_,$*) $^
+
+ %-bindings.h: ../libedata-cal-dbus/%.xml
+- dbus-binding-tool --mode=glib-client --output=$@ $^
++ dbus-binding-tool --mode=glib-client --prefix= --output=$@ $^
+
+ BUILT_SOURCES = $(DBUS_GENERATED_H) $(MARSHAL_GENERATED)
+ CLEANFILES = $(BUILT_SOURCES)
+--- /tmp/Makefile.am 2007-01-16 14:05:49.000000000 +0100
++++ trunk/calendar/libedata-cal-dbus/Makefile.am 2007-01-16 14:06:15.865251000 +0100
+@@ -90,7 +90,7 @@
+ dbus-binding-tool --mode=glib-server --output=$@ --prefix=$(subst -,_,$*) $^
+
+ %-bindings.h: %.xml
+- dbus-binding-tool --mode=glib-client --output=$@ $^
++ dbus-binding-tool --mode=glib-client --prefix= --output=$@ $^
+
+
+ DBUS_BINDINGS = e-data-cal-factory-bindings.h e-data-cal-bindings.h e-data-cal-view-bindings.h
diff --git a/packages/eds/eds-dbus_svn.bb b/packages/eds/eds-dbus_svn.bb
index b97ed984bc..4b38c8e552 100644
--- a/packages/eds/eds-dbus_svn.bb
+++ b/packages/eds/eds-dbus_svn.bb
@@ -1,17 +1,17 @@
DESCRIPTION = "Evolution database backend server"
HOMEPAGE = "http://projects.o-hand.com/eds"
LICENSE = "LGPL"
-DEPENDS = "glib-2.0 gtk+ gconf dbus db gnome-common libglade virtual/libiconv zlib intltool"
+DEPENDS = "intltool-native libglade glib-2.0 gtk+ gconf dbus db gnome-common virtual/libiconv zlib intltool"
PV = "1.4.0+svn${SRCDATE}"
+PR = "r5"
SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http \
file://no_libdb.patch;patch=1 \
file://no_iconv_test.patch;patch=1 \
- file://no_libedataserverui-20060126.patch;patch=1;maxdate=20061214 \
- file://no_libedataserverui.patch;patch=1;mindate=20061215 \
- file://disable_orbit.patch;patch=1;maxdate=20061214 \
+ file://no_libedataserverui.patch;patch=1 \
file://iconv-detect.h"
+
S = "${WORKDIR}/trunk"
inherit autotools pkgconfig
@@ -23,20 +23,32 @@ EXTRA_OECONF = "--without-openldap --with-dbus --without-bug-buddy --without-sou
acpaths = " -I ${STAGING_DATADIR}/aclocal/gnome-macros "
-FILES_${PN} += "${libdir}/evolution-data-server-1.2/extensions/*.so \
- ${libdir}/evolution-data-server-1.2/camel-providers/*.so \
- ${libdir}/evolution-data-server-1.2/camel-providers/*.urls \
- ${datadir}/evolution-data-server-1.4/zoneinfo/zones.tab \
- ${datadir}/evolution-data-server-1.4/zoneinfo/*/*.ics \
- ${datadir}/evolution-data-server-1.4/zoneinfo/*/*/*.ics \
- ${datadir}/dbus-1/services/*.service"
-FILES_${PN}-dev += "${libdir}/evolution-data-server-1.2/extensions/*.la \
- ${libdir}/evolution-data-server-1.2/camel-providers/*.la"
+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"
+
+FILES_${PN}-dev =+ "${libdir}/pkgconfig/evolution-data-server-*.pc"
+FILES_${PN}-dbg =+ "${libdir}/evolution-data-server-*/camel-providers/.debug ${libdir}/evolution-data-server*/extensions/.debug/"
+
+FILES_libcamel = "${libdir}/libcamel-*.so.* ${libexecdir}/camel-*"
+FILES_libcamel-dev = "${libdir}/libcamel-*.so ${libdir}/libcamel-provider-*.so ${libdir}/pkgconfig/camel*pc ${includedir}/evolution-data-server*/camel"
+FILES_libcamel-collateral = "${libdir}/libcamel-provider-*.so.* ${libdir}/evolution-data-server-*/camel-providers/*.so ${libdir}/evolution-data-server-*/camel-providers/*.urls"
+
+FILES_libebook = "${libdir}/libebook-*.so.*"
+FILES_libebook-dev = "${libdir}/libebook-1.2.so ${libdir}/pkgconfig/libebook-*.pc ${includedir}/evolution-data-server*/libebook/*.h"
+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"
+
+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"
+
+FILES_libedata-cal = "${libexecdir}/e-calendar-factory ${datadir}/dbus-1/services/*.Calendar.service ${libdir}/libedata-cal-*.so.* ${libdir}/evolution-data-server-*/extensions/libecal*.so"
+FILES_libedata-cal-dev = "${libdir}/libedata-cal-*.so ${libdir}/pkgconfig/libedata-cal-*.pc ${includedir}/evolution-data-server-*/libedata-cal"
+
+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/efl/ecore-fb_0.9.9.036.bb b/packages/efl/ecore-fb_0.9.9.036.bb
deleted file mode 100644
index 49c32927af..0000000000
--- a/packages/efl/ecore-fb_0.9.9.036.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-require ecore.inc
-PR = "r2"
-
-EXTRA_OECONF = "--enable-ecore-fb \
- --enable-ecore-job \
- --enable-ecore-file \
- --enable-poll \
- --enable-ecore-dbus \
- --enable-ecore-evas \
- --enable-ecore-evas-buffer \
- --enable-ecore-evas-fb \
- --disable-ecore-evas-x \
- --disable-ecore-evas-xrender \
- --disable-ecore-evas-gl \
- --enable-ecore-con \
- --enable-ecore-config \
- --enable-ecore-ipc \
- --enable-ecore-txt \
- --disable-ecore-x \
- --disable-curl \
- --without-curl-config \
- --enable-ecore-config \
- --enable-ecore-desktop \
- --disable-openssl"
-
-parts = "Ecore Ecore_Job Ecore_File Ecore_DBus \
- Ecore_Txt Ecore_Fb Ecore_Con \
- Ecore_Ipc Ecore_Evas Ecore_Config \
- Ecore_Desktop"
diff --git a/packages/efl/ecore-fb_0.9.9.037.bb b/packages/efl/ecore-fb_0.9.9.037.bb
new file mode 100644
index 0000000000..b856d38bd9
--- /dev/null
+++ b/packages/efl/ecore-fb_0.9.9.037.bb
@@ -0,0 +1,31 @@
+require ecore.inc
+PR = "r2"
+
+SRC_URI += "file://remove-bad-code.patch;patch=1"
+
+EXTRA_OECONF = "--enable-ecore-fb \
+ --enable-ecore-job \
+ --enable-ecore-file \
+ --enable-poll \
+ --enable-ecore-dbus \
+ --enable-ecore-evas \
+ --enable-ecore-evas-buffer \
+ --enable-ecore-evas-fb \
+ --disable-ecore-evas-x \
+ --disable-ecore-evas-xrender \
+ --disable-ecore-evas-gl \
+ --enable-ecore-con \
+ --enable-ecore-config \
+ --enable-ecore-ipc \
+ --enable-ecore-txt \
+ --disable-ecore-x \
+ --disable-curl \
+ --without-curl-config \
+ --enable-ecore-config \
+ --enable-ecore-desktop \
+ --disable-openssl"
+
+parts = "Ecore Ecore_Job Ecore_File Ecore_DBus \
+ Ecore_Txt Ecore_Fb Ecore_Con \
+ Ecore_Ipc Ecore_Evas Ecore_Config \
+ Ecore_Desktop"
diff --git a/packages/efl/ecore-native_0.9.9.036.bb b/packages/efl/ecore-native_0.9.9.037.bb
index 7d7ed2370a..7d7ed2370a 100644
--- a/packages/efl/ecore-native_0.9.9.036.bb
+++ b/packages/efl/ecore-native_0.9.9.037.bb
diff --git a/packages/efl/ecore-x11_0.9.9.036.bb b/packages/efl/ecore-x11_0.9.9.037.bb
index 1deb641326..1deb641326 100644
--- a/packages/efl/ecore-x11_0.9.9.036.bb
+++ b/packages/efl/ecore-x11_0.9.9.037.bb
diff --git a/packages/efl/ecore.inc b/packages/efl/ecore.inc
index e0e65b69c0..7d89435598 100644
--- a/packages/efl/ecore.inc
+++ b/packages/efl/ecore.inc
@@ -3,7 +3,7 @@ foundation libraries. It makes makes doing selections, drag and drop, event loop
timeouts and idle handlers fast, optimized, and convenient."
LEAD_SONAME = "libecore.so"
LICENSE = "MIT"
-# can also have openssl, dbus
+# can also have openssl, dbus, iconv
DEPENDS += "virtual/evas curl eet"
PROVIDES += "virtual/ecore"
diff --git a/packages/efl/ecore/fix-tslib-configure.patch b/packages/efl/ecore/fix-tslib-configure.patch
index 5a23f904dc..2c82b2741e 100644
--- a/packages/efl/ecore/fix-tslib-configure.patch
+++ b/packages/efl/ecore/fix-tslib-configure.patch
@@ -1,12 +1,12 @@
-diff -Nur ecore-0.9.9.015~/configure.in ecore-0.9.9.015/configure.in
---- ecore-0.9.9.015~/configure.in 2005-09-27 17:22:38.000000000 -0700
-+++ ecore-0.9.9.015/configure.in 2005-09-27 17:23:40.000000000 -0700
-@@ -103,7 +102,7 @@
- tslib_libs=""
- AC_CHECK_HEADER(tslib.h,
- [
-- tslib_libs="-ltslib"
-+ tslib_libs="-lts"
- AC_DEFINE(HAVE_TSLIB, 1, [Build Ecore_X Module])
- ],[
- AC_MSG_RESULT("No tslib header found. No tslib support being built")
+diff -Nur ecore-0.9.9.037~/configure.in ecore-0.9.9.037/configure.in
+--- ecore-0.9.9.037~/configure.in 2007-01-14 20:21:42.000000000 -0800
++++ ecore-0.9.9.037/configure.in 2007-01-14 20:22:18.000000000 -0800
+@@ -578,7 +578,7 @@
+ if test "x$want_ecore_fb" = "xyes"; then
+ AC_CHECK_HEADER(tslib.h,
+ [
+- tslib_libs="-ltslib"
++ tslib_libs="-lts"
+ AC_DEFINE(HAVE_TSLIB, 1, [Build Ecore_FB Touchscreen Code])
+ ]
+ )
diff --git a/packages/efl/ecore/remove-bad-code.patch b/packages/efl/ecore/remove-bad-code.patch
new file mode 100644
index 0000000000..87a8d16bd6
--- /dev/null
+++ b/packages/efl/ecore/remove-bad-code.patch
@@ -0,0 +1,36 @@
+Index: ecore-0.9.9.037/src/lib/ecore_fb/ecore_fb_private.h
+===================================================================
+--- ecore-0.9.9.037.orig/src/lib/ecore_fb/ecore_fb_private.h
++++ ecore-0.9.9.037/src/lib/ecore_fb/ecore_fb_private.h
+@@ -19,8 +19,8 @@
+ #define kernel_ulong_t unsigned long
+ #define BITS_PER_LONG 32
+ #include <linux/input.h>
+- #undef kernel_ulong_t <-added
+- #undef BITS_PER_LONG <-added
++ #undef kernel_ulong_t
++ #undef BITS_PER_LONG
+ #else
+ #include <linux/input.h>
+ #endif
+Index: ecore-0.9.9.037/src/lib/ecore_fb/ecore_fb_li.c
+===================================================================
+--- ecore-0.9.9.037.orig/src/lib/ecore_fb/ecore_fb_li.c
++++ ecore-0.9.9.037/src/lib/ecore_fb/ecore_fb_li.c
+@@ -1,6 +1,6 @@
+ #include "Ecore_Fb.h"
+ #include "ecore_fb_private.h"
+-
++/*
+ struct input_absinfo {
+ __s32 value;
+ __s32 minimum;
+@@ -8,7 +8,7 @@ struct input_absinfo {
+ __s32 fuzz;
+ __s32 flat;
+ };
+-
++*/
+
+ #define EV_SYN 0x00
+ #define EV_PWR 0x16
diff --git a/packages/openzaurus/.mtn2git_empty b/packages/efl/edb-native/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/openzaurus/.mtn2git_empty
+++ b/packages/efl/edb-native/.mtn2git_empty
diff --git a/packages/efl/edb-native/no-gtk-forkbomb.patch b/packages/efl/edb-native/no-gtk-forkbomb.patch
new file mode 100644
index 0000000000..8fe226846e
--- /dev/null
+++ b/packages/efl/edb-native/no-gtk-forkbomb.patch
@@ -0,0 +1,12 @@
+diff -Nur edb-1.0.5.007~/configure.in edb-1.0.5.007/configure.in
+--- edb-1.0.5.007~/configure.in 2007-01-15 01:01:31.000000000 -0800
++++ edb-1.0.5.007/configure.in 2007-01-15 01:01:40.000000000 -0800
+@@ -404,7 +404,7 @@
+ ncurses_ok=no
+ gtk_ok=no
+
+-GTK_CONFIG=`which gtk-config`
++GTK_CONFIG=
+ if test -x "$GTK_CONFIG"; then
+ AC_CHECK_LIB(gtk, gtk_init, gtk_ok=yes, gtk_ok=no, `$GTK_CONFIG --libs`)
+ fi
diff --git a/packages/efl/edb-native_1.0.5.007.bb b/packages/efl/edb-native_1.0.5.007.bb
index 82095f03cc..f3f94086ce 100644
--- a/packages/efl/edb-native_1.0.5.007.bb
+++ b/packages/efl/edb-native_1.0.5.007.bb
@@ -2,6 +2,8 @@ require edb_${PV}.bb
inherit native
DEPENDS = "zlib-native"
+SRC_URI += "file://no-gtk-forkbomb.patch;patch=1"
+
EXTRA_OECONF += "--disable-gtk --disable-ncurses"
do_stage_append () {
diff --git a/packages/efl/edb_1.0.5.007.bb b/packages/efl/edb_1.0.5.007.bb
index a152530b47..9632fc4acc 100644
--- a/packages/efl/edb_1.0.5.007.bb
+++ b/packages/efl/edb_1.0.5.007.bb
@@ -1,6 +1,7 @@
DESCRIPTION = "EDB is a database convenience library wrapped around the \
Berkeley DB 2.7.7 by Sleepycat Software."
DEPENDS = "zlib ncurses"
+# can depend on gtk and tcl/tk
LICENSE = "BSD"
PR = "r4"
diff --git a/packages/efl/edje-native_0.5.0.036.bb b/packages/efl/edje-native_0.5.0.036.bb
deleted file mode 100644
index c66639d25e..0000000000
--- a/packages/efl/edje-native_0.5.0.036.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require edje_${PV}.bb
-PR = "r3"
-
-inherit native
-
-DEPENDS = "evas-native ecore-native eet-native embryo-native"
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/edje"
-
-do_configure_prepend() {
- sed -i 's:EMBRYO_PREFIX"/bin:"${STAGING_BINDIR}:' ${S}/src/bin/edje_cc_out.c
- sed -i 's:cpp -I:/usr/bin/cpp -I:' ${S}/src/bin/edje_cc_parse.c
- sed -i 's:gcc -I:/usr/bin/gcc -I:' ${S}/src/bin/edje_cc_parse.c
-}
-
-do_stage_append() {
- edje_data_dir=`${STAGING_BINDIR}/edje-config-native --datadir`
- # could also use ${STAGING_DATADIR}/edje/include
- install -d $edje_data_dir/include
- install -m 0644 data/include/edje.inc $edje_data_dir/include
-}
diff --git a/packages/efl/edje-native_0.5.0.037.bb b/packages/efl/edje-native_0.5.0.037.bb
new file mode 100644
index 0000000000..4e878ab204
--- /dev/null
+++ b/packages/efl/edje-native_0.5.0.037.bb
@@ -0,0 +1,20 @@
+require edje_${PV}.bb
+PR = "r4"
+
+inherit native
+
+DEPENDS = "evas-native ecore-native eet-native embryo-native"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/edje"
+
+do_configure_prepend() {
+ sed -i 's:EMBRYO_PREFIX"/bin:"${STAGING_BINDIR}:' ${S}/src/bin/edje_cc_out.c
+ sed -i 's:cpp -I:/usr/bin/cpp -I:' ${S}/src/bin/edje_cc_parse.c
+ sed -i 's:gcc -I:/usr/bin/gcc -I:' ${S}/src/bin/edje_cc_parse.c
+}
+
+do_install_append() {
+ edje_data_dir=`${S}/edje-config --datadir`
+ # could also use ${STAGING_DATADIR}/edje/include
+ install -d $edje_data_dir/include
+ install -m 0644 data/include/edje.inc $edje_data_dir/include
+}
diff --git a/packages/efl/edje-utils_0.5.0.036.bb b/packages/efl/edje-utils_0.5.0.037.bb
index f8eb917e4d..f8eb917e4d 100644
--- a/packages/efl/edje-utils_0.5.0.036.bb
+++ b/packages/efl/edje-utils_0.5.0.037.bb
diff --git a/packages/efl/edje_0.5.0.036.bb b/packages/efl/edje_0.5.0.037.bb
index d51dd119e4..d51dd119e4 100644
--- a/packages/efl/edje_0.5.0.036.bb
+++ b/packages/efl/edje_0.5.0.037.bb
diff --git a/packages/efl/eet-native_0.9.10.036.bb b/packages/efl/eet-native_0.9.10.037.bb
index 9e2426ca9f..9e2426ca9f 100644
--- a/packages/efl/eet-native_0.9.10.036.bb
+++ b/packages/efl/eet-native_0.9.10.037.bb
diff --git a/packages/efl/eet_0.9.10.036.bb b/packages/efl/eet_0.9.10.037.bb
index 6e6032e098..6e6032e098 100644
--- a/packages/efl/eet_0.9.10.036.bb
+++ b/packages/efl/eet_0.9.10.037.bb
diff --git a/packages/efl/embryo-native_0.9.1.036.bb b/packages/efl/embryo-native_0.9.1.037.bb
index 76fe80fe3d..76fe80fe3d 100644
--- a/packages/efl/embryo-native_0.9.1.036.bb
+++ b/packages/efl/embryo-native_0.9.1.037.bb
diff --git a/packages/efl/embryo-utils_0.9.1.036.bb b/packages/efl/embryo-utils_0.9.1.037.bb
index d507c53cce..d507c53cce 100644
--- a/packages/efl/embryo-utils_0.9.1.036.bb
+++ b/packages/efl/embryo-utils_0.9.1.037.bb
diff --git a/packages/efl/embryo_0.9.1.036.bb b/packages/efl/embryo_0.9.1.037.bb
index 0009c0a149..0009c0a149 100644
--- a/packages/efl/embryo_0.9.1.036.bb
+++ b/packages/efl/embryo_0.9.1.037.bb
diff --git a/packages/efl/evas-fb_0.9.9.036.bb b/packages/efl/evas-fb_0.9.9.036.bb
deleted file mode 100644
index 3e29b80cc0..0000000000
--- a/packages/efl/evas-fb_0.9.9.036.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-require evas.inc
-PR = "r5"
-
-EXTRA_OECONF = "--enable-fb \
- --disable-directfb \
- --enable-buffer \
- --disable-software-qtopia \
- --disable-software-x11 \
- --disable-gl-x11 \
- --disable-xrender-x11 \
- --enable-image-loader-eet \
- --disable-image-loader-edb \
- --enable-image-loader-png \
- --enable-image-loader-jpeg \
- --enable-small-dither-mask \
- --enable-cpu-c \
- --enable-font-loader-eet \
- --enable-scale-sample \
- --enable-scale-smooth \
- --enable-convert-yuv \
- --enable-convert-8-rgb-332 \
- --enable-convert-8-rgb-666 \
- --enable-convert-8-rgb-232 \
- --enable-convert-8-rgb-222 \
- --enable-convert-8-rgb-221 \
- --enable-convert-8-rgb-121 \
- --enable-convert-8-rgb-111 \
- --enable-convert-16-rgb-565 \
- --enable-convert-16-rgb-555 \
- --enable-convert-16-rgb-444 \
- --enable-convert-16-rgb-ipq \
- --enable-convert-16-rgb-rot-0 \
- --enable-convert-16-rgb-rot-90 \
- --enable-convert-16-rgb-rot-270 \
- --enable-convert-24-rgb-888 \
- --enable-convert-24-bgr-888 \
- --enable-convert-32-rgb-8888 \
- --enable-convert-32-rgbx-8888 \
- --enable-convert-32-bgr-8888 \
- --enable-convert-32-bgrx-8888 \
- --enable-convert-32-rgb-rot-0 \
- --enable-convert-32-rgb-rot-90 \
- --enable-convert-32-rgb-rot-270"
-
-headers = "../modules/engines/buffer/Evas_Engine_Buffer.h \
- ../modules/engines/fb/Evas_Engine_FB.h \
- Evas.h"
diff --git a/packages/efl/evas-fb_0.9.9.037.bb b/packages/efl/evas-fb_0.9.9.037.bb
new file mode 100644
index 0000000000..4acc857982
--- /dev/null
+++ b/packages/efl/evas-fb_0.9.9.037.bb
@@ -0,0 +1,47 @@
+require evas.inc
+PR = "r6"
+
+EXTRA_OECONF = "--enable-fb \
+ --disable-directfb \
+ --enable-buffer \
+ --disable-software-qtopia \
+ --disable-software-x11 \
+ --disable-gl-x11 \
+ --disable-xrender-x11 \
+ --enable-image-loader-eet \
+ --disable-image-loader-edb \
+ --enable-image-loader-png \
+ --enable-image-loader-jpeg \
+ --enable-small-dither-mask \
+ --enable-cpu-c \
+ --enable-font-loader-eet \
+ --enable-scale-sample \
+ --enable-scale-smooth \
+ --enable-convert-yuv \
+ --enable-convert-8-rgb-332 \
+ --enable-convert-8-rgb-666 \
+ --enable-convert-8-rgb-232 \
+ --enable-convert-8-rgb-222 \
+ --enable-convert-8-rgb-221 \
+ --enable-convert-8-rgb-121 \
+ --enable-convert-8-rgb-111 \
+ --enable-convert-16-rgb-565 \
+ --enable-convert-16-rgb-555 \
+ --enable-convert-16-rgb-444 \
+ --enable-convert-16-rgb-ipq \
+ --enable-convert-16-rgb-rot-0 \
+ --enable-convert-16-rgb-rot-90 \
+ --enable-convert-16-rgb-rot-270 \
+ --enable-convert-24-rgb-888 \
+ --enable-convert-24-bgr-888 \
+ --enable-convert-32-rgb-8888 \
+ --enable-convert-32-rgbx-8888 \
+ --enable-convert-32-bgr-8888 \
+ --enable-convert-32-bgrx-8888 \
+ --enable-convert-32-rgb-rot-0 \
+ --enable-convert-32-rgb-rot-90 \
+ --enable-convert-32-rgb-rot-270"
+
+headers = "../modules/engines/buffer/Evas_Engine_Buffer.h \
+ ../modules/engines/fb/Evas_Engine_FB.h \
+ Evas.h"
diff --git a/packages/efl/evas-native_0.9.9.036.bb b/packages/efl/evas-native_0.9.9.037.bb
index 68dacbc809..68dacbc809 100644
--- a/packages/efl/evas-native_0.9.9.036.bb
+++ b/packages/efl/evas-native_0.9.9.037.bb
diff --git a/packages/efl/evas-x11_0.9.9.036.bb b/packages/efl/evas-x11_0.9.9.036.bb
deleted file mode 100644
index 121922591e..0000000000
--- a/packages/efl/evas-x11_0.9.9.036.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-require evas.inc
-DEPENDS += "edb virtual/libx11 libxext freetype"
-PR = "r7"
-
-EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
- --x-libraries=${STAGING_LIBDIR} \
- --enable-fb \
- --disable-directfb \
- --enable-buffer \
- --disable-software-qtopia \
- --enable-software-x11 \
- --disable-gl-x11 \
- --enable-image-loader-eet \
- --enable-image-loader-edb \
- --enable-image-loader-png \
- --enable-image-loader-jpeg \
- --enable-small-dither-mask \
- --enable-cpu-c \
- --enable-font-loader-eet \
- --enable-scale-sample \
- --enable-scale-smooth \
- --enable-convert-yuv \
- --disable-image-loader-svg \
- --disable-convert-8-rgb-332 \
- --disable-convert-8-rgb-666 \
- --disable-convert-8-rgb-232 \
- --disable-convert-8-rgb-222 \
- --disable-convert-8-rgb-221 \
- --disable-convert-8-rgb-121 \
- --disable-convert-8-rgb-111 \
- --enable-convert-16-rgb-565 \
- --disable-convert-16-rgb-555 \
- --disable-convert-16-rgb-444 \
- --disable-convert-16-rgb-ipq \
- --enable-convert-16-rgb-rot-0 \
- --disable-convert-16-rgb-rot-90 \
- --enable-convert-16-rgb-rot-270 \
- --disable-convert-24-rgb-888 \
- --disable-convert-24-bgr-888 \
- --disable-convert-32-rgb-8888 \
- --disable-convert-32-rgbx-8888 \
- --disable-convert-32-bgr-8888 \
- --disable-convert-32-bgrx-8888 \
- --disable-convert-32-rgb-rot-0 \
- --disable-convert-32-rgb-rot-90 \
- --disable-convert-32-rgb-rot-270"
-
-headers = "../modules/engines/software_x11/Evas_Engine_Software_X11.h \
- ../modules/engines/xrender_x11/Evas_Engine_XRender_X11.h \
- ../modules/engines/buffer/Evas_Engine_Buffer.h \
- ../modules/engines/fb/Evas_Engine_FB.h \
- Evas.h"
-
diff --git a/packages/efl/evas-x11_0.9.9.037.bb b/packages/efl/evas-x11_0.9.9.037.bb
new file mode 100644
index 0000000000..765a8b73d4
--- /dev/null
+++ b/packages/efl/evas-x11_0.9.9.037.bb
@@ -0,0 +1,53 @@
+require evas.inc
+DEPENDS += "edb virtual/libx11 libxext freetype"
+PR = "r8"
+
+EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
+ --x-libraries=${STAGING_LIBDIR} \
+ --enable-fb \
+ --disable-directfb \
+ --enable-buffer \
+ --disable-software-qtopia \
+ --enable-software-x11 \
+ --disable-gl-x11 \
+ --enable-image-loader-eet \
+ --enable-image-loader-edb \
+ --enable-image-loader-png \
+ --enable-image-loader-jpeg \
+ --enable-small-dither-mask \
+ --enable-cpu-c \
+ --enable-font-loader-eet \
+ --enable-scale-sample \
+ --enable-scale-smooth \
+ --enable-convert-yuv \
+ --disable-image-loader-svg \
+ --disable-convert-8-rgb-332 \
+ --disable-convert-8-rgb-666 \
+ --disable-convert-8-rgb-232 \
+ --disable-convert-8-rgb-222 \
+ --disable-convert-8-rgb-221 \
+ --disable-convert-8-rgb-121 \
+ --disable-convert-8-rgb-111 \
+ --enable-convert-16-rgb-565 \
+ --disable-convert-16-rgb-555 \
+ --disable-convert-16-rgb-444 \
+ --disable-convert-16-rgb-ipq \
+ --enable-convert-16-rgb-rot-0 \
+ --disable-convert-16-rgb-rot-90 \
+ --enable-convert-16-rgb-rot-270 \
+ --disable-convert-24-rgb-888 \
+ --disable-convert-24-bgr-888 \
+ --disable-convert-32-rgb-8888 \
+ --disable-convert-32-rgbx-8888 \
+ --disable-convert-32-bgr-8888 \
+ --disable-convert-32-bgrx-8888 \
+ --disable-convert-32-rgb-rot-0 \
+ --disable-convert-32-rgb-rot-90 \
+ --disable-convert-32-rgb-rot-270"
+
+headers = "../modules/engines/software_x11/Evas_Engine_Software_X11.h \
+ ../modules/engines/xrender_x11/Evas_Engine_XRender_X11.h \
+ ../modules/engines/buffer/Evas_Engine_Buffer.h \
+ ../modules/engines/fb/Evas_Engine_FB.h \
+ Evas.h"
+
diff --git a/packages/efl/evas.inc b/packages/efl/evas.inc
index f065d944f8..ceca03c0a8 100644
--- a/packages/efl/evas.inc
+++ b/packages/efl/evas.inc
@@ -28,6 +28,10 @@ do_configure_prepend() {
fi
}
+#do_install_append() {
+# find "${S}" -name .debug -type d | xargs -iBLAH rm -rf "BLAH"
+#}
+
do_stage_append() {
cd src
modules=`find modules -name ".libs"`
@@ -40,4 +44,6 @@ do_stage_append() {
headers = "<override me>"
libraries = "libevas"
-FILES_${PN} += "/usr/lib/evas/"
+FILES_${PN} += "/usr/lib/evas/modules/*/*/*/*.so"
+FILES_${PN}-dev += "/usr/lib/evas/modules/*/*/*/*.a /usr/lib/evas/modules/*/*/*/*.la"
+FILES_${PN}-dbg += "/usr/lib/evas/modules/*/*/*/.debug/" \ No newline at end of file
diff --git a/packages/efl/evas/fix-configure.patch b/packages/efl/evas/fix-configure.patch
index 61e2446c24..abf9b94bdf 100644
--- a/packages/efl/evas/fix-configure.patch
+++ b/packages/efl/evas/fix-configure.patch
@@ -1,17 +1,18 @@
---- evas-0.9.9.023/configure.in~ 2006-01-11 21:34:57.000000000 -0800
-+++ evas-0.9.9.023/configure.in 2006-02-03 12:15:45.000000000 -0800
-@@ -152,9 +152,7 @@
+diff -Nur evas-0.9.9.037~/configure.in evas-0.9.9.037/configure.in
+--- evas-0.9.9.037~/configure.in 2007-01-14 20:09:57.000000000 -0800
++++ evas-0.9.9.037/configure.in 2007-01-14 20:11:09.000000000 -0800
+@@ -161,9 +161,7 @@
+ AC_CHECK_HEADER(X11/X.h,
[
- AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_X11, true)
AC_DEFINE(BUILD_ENGINE_SOFTWARE_X11, 1, [Software X11 Rendering Backend])
- x_dir=${x_dir:-/usr/X11R6}
- x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
- x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
+ x_libs="-lX11 -lXext"
- ENGINE_SOFTWARE_X11_PRG="evas_software_x11_test evas_software_x11_perf_test evas_software_x11_perf_load"
],
[
-@@ -423,10 +421,10 @@
+ AC_MSG_RESULT(disabling software X11 engine)
+@@ -407,10 +405,10 @@
AC_DEFINE(BUILD_ENGINE_GL_X11, 1, [OpenGL X11 Rendering Backend])
AM_CONDITIONAL(BUILD_ENGINE_GL_COMMON, true)
AC_DEFINE(BUILD_ENGINE_GL_COMMON, 1, [Generic OpenGL Rendering Support])
@@ -23,8 +24,8 @@
+ gl_cflags=""
gl_libs="-lGL -lGLU -lpthread"
gl_dir=""
- ENGINE_GL_X11_PRG="evas_gl_x11_test"
-@@ -489,7 +487,7 @@
+ ], [
+@@ -471,7 +469,7 @@
AC_DEFINE(BUILD_ENGINE_CAIRO_X11, 1, [Cairo X11 Rendering Backend])
AM_CONDITIONAL(BUILD_ENGINE_CAIRO_COMMON, true)
AC_DEFINE(BUILD_ENGINE_CAIRO_COMMON, 1, [Generic Cairo Rendering Support])
@@ -32,4 +33,4 @@
+ x_dir="";
x_cflags="-I"$x_dir"/include"
x_libs="-L"$x_dir"/lib -lX11 -lXext"
- ENGINE_CAIRO_X11_PRG="evas_cairo_x11_test"
+ ], [
diff --git a/packages/efl/imlib2-fb_1.2.2.001.bb b/packages/efl/imlib2-fb_1.2.2.001.bb
index 776acb43f6..f2ee48f5d9 100644
--- a/packages/efl/imlib2-fb_1.2.2.001.bb
+++ b/packages/efl/imlib2-fb_1.2.2.001.bb
@@ -1,4 +1,5 @@
require imlib2.inc
+PR = "r2"
EXTRA_OECONF = "--without-x \
--disable-mmx"
diff --git a/packages/efl/imlib2-native_1.2.2.001.bb b/packages/efl/imlib2-native_1.2.2.001.bb
index da75e8f439..65c5b672b2 100644
--- a/packages/efl/imlib2-native_1.2.2.001.bb
+++ b/packages/efl/imlib2-native_1.2.2.001.bb
@@ -2,6 +2,7 @@ require imlib2.inc
inherit native
PROVIDES = "imlib2-native"
DEPENDS = "freetype-native libpng-native jpeg-native"
+PR = "r2"
EXTRA_OECONF = "--disable-mmx \
--without-x"
diff --git a/packages/efl/imlib2-x11_1.2.2.001.bb b/packages/efl/imlib2-x11_1.2.2.001.bb
index e7814971c3..67ed947e08 100644
--- a/packages/efl/imlib2-x11_1.2.2.001.bb
+++ b/packages/efl/imlib2-x11_1.2.2.001.bb
@@ -1,6 +1,6 @@
require imlib2.inc
DEPENDS += "virtual/libx11 libxext"
-PR = "r1"
+PR = "r3"
EXTRA_OECONF = "--disable-mmx \
--with-x \
diff --git a/packages/efl/imlib2.inc b/packages/efl/imlib2.inc
index 4691bf2ce0..6a040c5386 100644
--- a/packages/efl/imlib2.inc
+++ b/packages/efl/imlib2.inc
@@ -30,8 +30,9 @@ do_stage_append() {
}
do_install() {
+ install -d "${D}${includedir}"
oe_libinstall -C src/lib libImlib2 ${D}${libdir}/
- install -m 0644 ${S}/src/lib/Imlib2.h ${D}${incdir}/
+ install -m 0644 ${S}/src/lib/Imlib2.h ${D}${includedir}/
install -d ${D}${libdir}/imlib2/loaders
for i in src/modules/loaders/.libs/*.so
@@ -46,9 +47,12 @@ do_install() {
done
}
-PACKAGES =+ "imlib2-loaders imlib2-filters"
-FILES_${PN} = "${libdir}/lib*.so.* ${libdir}/imlib2"
-FILES_${PN}-dev += "${bindir}/imlib2-config"
+PACKAGES =+ "imlib2-loaders-dbg imlib2-filters-dbg imlib2-loaders imlib2-filters"
+FILES_${PN} = "${libdir}/lib*.so.* ${libdir}/imlib2/*/*.so"
+FILES_${PN}-dbg = "${libdir}/.debug/"
+FILES_${PN}-dev += "${bindir}/imlib2-config ${libdir}/*.so ${includedir}"
FILES_imlib2-bin = "${bindir}"
FILES_imlib2-loaders = "${libdir}/imlib2/loaders/*.so"
FILES_imlib2-filters = "${libdir}/imlib2/filters/*.so"
+FILES_imlib2-loaders-dbg += "${libdir}/imlib2/loaders/.debug"
+FILES_imlib2-filters-dbg += "${libdir}/imlib2/filters/.debug"
diff --git a/packages/elvis/elvis_2.2.0.bb b/packages/elvis/elvis_2.2.0.bb
index 3f1ff12e65..738822b139 100644
--- a/packages/elvis/elvis_2.2.0.bb
+++ b/packages/elvis/elvis_2.2.0.bb
@@ -4,7 +4,8 @@ PRIORITY = "optional"
LICENSE = "Perl Clarified Artistic License"
DEPENDS = "ncurses"
-SRC_URI = "ftp://ftp.cs.pdx.edu/pub/elvis/elvis-2.2_0.tar.gz"
+#SRC_URI = "ftp://ftp.cs.pdx.edu/pub/elvis/elvis-2.2_0.tar.gz"
+SRC_URI = "http://www.fh-wedel.de/pub/elvis/elvis-2.2_0.tar.gz"
S = "${WORKDIR}/elvis-2.2_0"
CFLAGS_prepend = " -I. -Iosunix -L${STAGING_LIBDIR} "
diff --git a/packages/enca/enca_1.9.bb b/packages/enca/enca_1.9.bb
index 8151c86865..7f84ebe4fe 100644
--- a/packages/enca/enca_1.9.bb
+++ b/packages/enca/enca_1.9.bb
@@ -3,21 +3,26 @@ LICENSE = "GPL2"
SECTION = "libs"
PRIORITY = "optional"
HOMEPAGE = "http://trific.ath.cx/software/enca/"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://trific.ath.cx/Ftp//enca/enca-${PV}.tar.bz2 \
file://configure-hack.patch;patch=1 \
- file://dont-run-tests.patch;patch=1 "
+ file://dont-run-tests.patch;patch=1 \
+ file://configure-remove-dumbness.patch;patch=1 \
+ file://makefile-remove-tools.patch;patch=1 "
inherit autotools
+EXTRA_OECONF="--with-libiconv-prefix=${STAGING_DIR}"
+
do_configure_append() {
sed -i s:-I/usr/include::g Makefile
sed -i s:-I/usr/include::g */Makefile
}
do_compile() {
- cd ${S}/tools && make CC="${BUILD_CC}" CFLAGS="-O2" CPPFLAGS=""
+ cd ${S}/tools && ${BUILD_CC} -o make_hash make_hash.c
+ cd ..
oe_runmake
}
diff --git a/packages/enca/files/configure-remove-dumbness.patch b/packages/enca/files/configure-remove-dumbness.patch
new file mode 100644
index 0000000000..6f6f3e320e
--- /dev/null
+++ b/packages/enca/files/configure-remove-dumbness.patch
@@ -0,0 +1,26 @@
+--- enca-1.9/configure.ac.orig 2006-06-29 15:30:44.000000000 +0100
++++ enca-1.9/configure.ac 2006-06-29 15:31:41.000000000 +0100
+@@ -92,14 +92,15 @@
+ dnl And for gtk-doc
+ gtk_CHECK_GTK_DOC
+
+-dnl Dirty path hack. Helps some people with badly set up search paths.
+-if test "$prefix" = "NONE"; then
+- LDFLAGS="$LDFLAGS -L$ac_default_prefix/lib"
+- CPPFLAGS="$CPPFLAGS -I$ac_default_prefix/include"
+-else
+- LDFLAGS="$LDFLAGS -L$prefix/lib"
+- CPPFLAGS="$CPPFLAGS -I$prefix/include"
+-fi
++# This is really dumb code
++#dnl Dirty path hack. Helps some people with badly set up search paths.
++#if test "$prefix" = "NONE"; then
++# LDFLAGS="$LDFLAGS -L$ac_default_prefix/lib"
++# CPPFLAGS="$CPPFLAGS -I$ac_default_prefix/include"
++#else
++# LDFLAGS="$LDFLAGS -L$prefix/lib"
++# CPPFLAGS="$CPPFLAGS -I$prefix/include"
++#fi
+
+ dnl Checks for libraries.
+ ye_CHECK_LIBM
diff --git a/packages/enca/files/makefile-remove-tools.patch b/packages/enca/files/makefile-remove-tools.patch
new file mode 100644
index 0000000000..accfbccd6b
--- /dev/null
+++ b/packages/enca/files/makefile-remove-tools.patch
@@ -0,0 +1,13 @@
+--- enca-1.9/Makefile.am.orig 2006-06-29 15:34:55.000000000 +0100
++++ enca-1.9/Makefile.am 2006-06-29 15:35:20.000000000 +0100
+@@ -1,8 +1,8 @@
+ # @(#) $Id: Makefile.am,v 1.35 2005/11/24 10:21:32 yeti Exp $
+ if MAINTAINER_MODE
+-SUBDIRS = tools data script lib src devel-docs test
++SUBDIRS = data script lib src devel-docs test
+ else
+-SUBDIRS = tools script lib src devel-docs
++SUBDIRS = script lib src devel-docs
+ endif
+ man_MANS = man/enca.1
+
diff --git a/packages/enchant/enchant_1.1.3.bb b/packages/enchant/enchant_1.1.3.bb
index a1e70852b0..c33a1a3927 100644
--- a/packages/enchant/enchant_1.1.3.bb
+++ b/packages/enchant/enchant_1.1.3.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Enchant Spell checker API Library"
PRIORITY = "optional"
-SECTION = "libs"
+SECTION = "libs"
DEPENDS = "aspell"
RDEPENDS = "aspell"
diff --git a/packages/enchant/enchant_1.2.5.bb b/packages/enchant/enchant_1.2.5.bb
index 5045a762b0..5896d1275a 100644
--- a/packages/enchant/enchant_1.2.5.bb
+++ b/packages/enchant/enchant_1.2.5.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Enchant Spell checker API Library"
PRIORITY = "optional"
-SECTION = "libs"
+SECTION = "libs"
LICENSE = "LGPL"
DEPENDS = "aspell"
RDEPENDS = "aspell"
diff --git a/packages/enchant/enchant_1.3.0.bb b/packages/enchant/enchant_1.3.0.bb
new file mode 100644
index 0000000000..f1544336af
--- /dev/null
+++ b/packages/enchant/enchant_1.3.0.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "Enchant Spell checker API Library"
+PRIORITY = "optional"
+SECTION = "libs"
+LICENSE = "LGPL"
+DEPENDS = "aspell"
+RDEPENDS = "aspell"
+
+inherit autotools pkgconfig
+
+PR = "r0"
+
+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"
+
+FILES_${PN} = "/usr/bin/* /usr/lib/enchant/*.so /usr/share/enchant /usr/lib/libenchant*.so.*"
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/epdfview/epdfview_0.1.6.bb b/packages/epdfview/epdfview_0.1.6.bb
new file mode 100644
index 0000000000..14966601c2
--- /dev/null
+++ b/packages/epdfview/epdfview_0.1.6.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "A minimal PDF viewer based on gtk and poppler"
+HOMEPAGE = "http://www.emma-soft.com/projects/epdfview/"
+LICENSE = "GPLv2"
+SECTION = "x11/applications"
+DEPENDS = "poppler gtk+ cups"
+PR="r1"
+
+SRC_URI = "http://www.emma-soft.com/projects/epdfview/chrome/site/releases/epdfview-${PV}.tar.bz2"
+
+inherit autotools
+
+do_compile_append () {
+ sed -i 's|\$.*prefix./|/usr/|' data/epdfview.desktop
+}
+
diff --git a/packages/esound/esound-gpe_20020817.bb b/packages/esound/esound-gpe_20020817.bb
deleted file mode 100644
index b757354c8e..0000000000
--- a/packages/esound/esound-gpe_20020817.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-DESCRIPTION = "Enlightened Sound Daemon - GPE version"
-SECTION = "gpe/base"
-LICENSE = "GPL"
-DEPENDS = "audiofile"
-PR = "r5"
-PROVIDES += "esound"
-RPROVIDES += "esound"
-
-SRCDATE = "${PV}"
-SRC_URI = "svn://projects.linuxtogo.org/svn/gpe/trunk/base/;module=esound;date=20061119 \
- file://audiofile-please.patch;patch=1 \
- file://configure.patch;patch=1"
-
-S = "${WORKDIR}/esound"
-
-inherit autotools binconfig pkgconfig
-
-EXTRA_OECONF = "--disable-alsa"
-
-SOV = "0.2.28"
-
-do_stage () {
- install -m 0644 esd.h ${STAGING_INCDIR}/esd.h
- oe_soinstall .libs/libesd.so.${SOV} ${STAGING_LIBDIR}
- install -m 0644 .libs/libesd.lai ${STAGING_LIBDIR}/libesd.la
- install -m 0644 esd.m4 ${STAGING_DATADIR}/aclocal
-}
-
-PACKAGES =+ "esddsp esd esd-utils"
-
-FILES_esddsp = "${bindir}/esddsp ${libdir}/libesddsp.so.*"
-FILES_esd = "${bindir}/esd"
-FILES_esd-utils = "${bindir}/*"
diff --git a/packages/esound/esound_0.2.36.bb b/packages/esound/esound_0.2.36.bb
new file mode 100644
index 0000000000..1cf99ac90a
--- /dev/null
+++ b/packages/esound/esound_0.2.36.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Enlightened Sound Daemon - GPE version"
+SECTION = "gpe/base"
+LICENSE = "GPL"
+DEPENDS = "audiofile"
+
+PR = "r1"
+
+inherit gnome binconfig
+
+SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/esound/0.2/esound-0.2.36.tar.bz2"
+
+EXTRA_OECONF = " \
+ --disable-alsa \
+ --disable-arts \
+ --disable-artstest \
+ "
+do_configure_prepend() {
+ sed -i -e 's:/usr/include/mme:${STAGING_INCDIR}/mme:g' configure.ac
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+
+PACKAGES =+ "esddsp esd esd-utils"
+
+FILES_esddsp = "${bindir}/esddsp ${libdir}/libesddsp.so.*"
+FILES_esd = "${bindir}/esd"
+FILES_esd-utils = "${bindir}/*"
+
diff --git a/packages/opie-taskbar/opie-taskbar/akita/.mtn2git_empty b/packages/esound/old/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/opie-taskbar/opie-taskbar/akita/.mtn2git_empty
+++ b/packages/esound/old/.mtn2git_empty
diff --git a/packages/esound/old/esound-gpe_20020817.bb b/packages/esound/old/esound-gpe_20020817.bb
new file mode 100644
index 0000000000..a698211f7d
--- /dev/null
+++ b/packages/esound/old/esound-gpe_20020817.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "Enlightened Sound Daemon - GPE version"
+SECTION = "gpe/base"
+LICENSE = "GPL"
+DEPENDS = "audiofile"
+PR = "r5"
+PROVIDES += "esound"
+RPROVIDES += "esound"
+
+SRCDATE := "${PV}"
+SRC_URI = "svn://projects.linuxtogo.org/svn/gpe/trunk/base/;module=esound;date=20061119 \
+ file://audiofile-please.patch;patch=1 \
+ file://configure.patch;patch=1"
+
+S = "${WORKDIR}/esound"
+
+inherit autotools binconfig pkgconfig
+
+EXTRA_OECONF = "--disable-alsa"
+
+SOV = "0.2.28"
+PV = "${SOV}+cvs${SRCDATE}"
+
+
+do_stage () {
+ install -m 0644 esd.h ${STAGING_INCDIR}/esd.h
+ oe_soinstall .libs/libesd.so.${SOV} ${STAGING_LIBDIR}
+ install -m 0644 .libs/libesd.lai ${STAGING_LIBDIR}/libesd.la
+ install -m 0644 esd.m4 ${STAGING_DATADIR}/aclocal
+}
+
+PACKAGES =+ "esddsp esd esd-utils"
+
+FILES_esddsp = "${bindir}/esddsp ${libdir}/libesddsp.so.*"
+FILES_esd = "${bindir}/esd"
+FILES_esd-utils = "${bindir}/*"
diff --git a/packages/esound/old/esound-gpe_20070109.bb b/packages/esound/old/esound-gpe_20070109.bb
new file mode 100644
index 0000000000..850def76a0
--- /dev/null
+++ b/packages/esound/old/esound-gpe_20070109.bb
@@ -0,0 +1,34 @@
+DESCRIPTION = "Enlightened Sound Daemon - GPE version"
+SECTION = "gpe/base"
+LICENSE = "GPL"
+DEPENDS = "audiofile"
+PR = "r0"
+PROVIDES += "esound"
+RPROVIDES += "esound"
+
+SRCDATE = "${PV}"
+SRC_URI = "svn://projects.linuxtogo.org/svn/gpe/trunk/;module=extra/esound;rev=8935 \
+ file://audiofile-please.patch;patch=1 \
+ file://configure.patch;patch=1"
+
+S = "${WORKDIR}/esound"
+
+inherit autotools binconfig pkgconfig
+
+EXTRA_OECONF = "--disable-alsa"
+
+SOV = "0.2.28"
+PV = "${SOV}+cvs${SRCDATE}"
+
+do_stage () {
+ install -m 0644 esd.h ${STAGING_INCDIR}/esd.h
+ oe_soinstall .libs/libesd.so.${SOV} ${STAGING_LIBDIR}
+ install -m 0644 .libs/libesd.lai ${STAGING_LIBDIR}/libesd.la
+ install -m 0644 esd.m4 ${STAGING_DATADIR}/aclocal
+}
+
+PACKAGES =+ "esddsp esd esd-utils"
+
+FILES_esddsp = "${bindir}/esddsp ${libdir}/libesddsp.so.*"
+FILES_esd = "${bindir}/esd"
+FILES_esd-utils = "${bindir}/*"
diff --git a/packages/espgs/espgs_8.15.3.bb b/packages/espgs/espgs_8.15.3.bb
new file mode 100644
index 0000000000..50f2ca2d36
--- /dev/null
+++ b/packages/espgs/espgs_8.15.3.bb
@@ -0,0 +1,45 @@
+DESCRIPTION = "ESP Ghostscript is an up-to-date GNU Ghostscript distribution \
+including bug fixes, new drivers, and additional support for CUPS."
+HOMEPAGE = "http://www.cups.org/espgs/"
+SECTION = "libs"
+DEPENDS = "jpeg zlib libpng fontconfig"
+LICENSE = "GPL"
+
+SRC_URI = "http://ftp.rz.tu-bs.de/pub/mirror/ftp.easysw.com/ftp/pub/ghostscript/${PV}/espgs-${PV}-source.tar.bz2"
+S = "${WORKDIR}/espgs-${PV}"
+
+PARALLEL_MAKE = ""
+
+inherit autotools
+
+PACKAGES += "espgs-examples espgs-resources"
+
+# I added the lib dir to the central package, since espgs complained of a missing file when run.
+# If I find exactly which files are needed for operation, I'll just add those, and split the package.
+
+FILES_${PN} += "${datadir}/ghostscript/8.15/lib/*"
+FILES_${PN}-doc += "${datadir}/ghostscript/8.15/doc/*"
+FILES_${PN}-examples += "${datadir}/ghostscript/8.15/examples/*"
+FILES_${PN}-resources += "${datadir}/ghostscript/8.15/Resource/*"
+
+EXTRA_OECONF = "--with-drivers= \
+ --disable-cups \
+ --disable-gtk \
+ --without-ijs \
+ --without-gimp-print \
+ --without-x \
+ --without-omni"
+
+do_compile() {
+ oe_runmake CCAUX="${BUILD_CC}"
+}
+
+do_install () {
+ oe_runmake 'prefix=${D}${prefix}' \
+ 'bindir=${D}${bindir}' \
+ 'datadir=${D}${datadir}' \
+ 'gsdir=${D}${datadir}/ghostscript' \
+ 'gsdatadir=${D}${datadir}/ghostscript/8.15' \
+ 'mandir=${D}${mandir}' \
+ 'docdir=${D}${datadir}/doc/espgs/' install
+}
diff --git a/packages/ethtool/ethtool_5.bb b/packages/ethtool/ethtool_5.bb
new file mode 100644
index 0000000000..c1d30c678d
--- /dev/null
+++ b/packages/ethtool/ethtool_5.bb
@@ -0,0 +1,2 @@
+require ethtool.inc
+PR="r0"
diff --git a/packages/opie-taskbar/opie-taskbar/c7x0/.mtn2git_empty b/packages/exmap-console/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/opie-taskbar/opie-taskbar/c7x0/.mtn2git_empty
+++ b/packages/exmap-console/.mtn2git_empty
diff --git a/packages/exmap-console/exmap-console.inc b/packages/exmap-console/exmap-console.inc
new file mode 100644
index 0000000000..4c107d5f07
--- /dev/null
+++ b/packages/exmap-console/exmap-console.inc
@@ -0,0 +1,61 @@
+DESCRIPTION = "Console based version of exmap, a memory usage analysis tool"
+HOMEPAGE = "http://projects.o-hand.com/exmap-console"
+SECTION = "devel"
+LICENSE = "GPL"
+DEPENDS = "virtual/kernel"
+
+SRC_URI = "http://projects.o-hand.com/sources/exmap-console/exmap-console-${PV}.tgz"
+
+inherit module-base
+inherit autotools
+
+MYPV := "${PV}"
+
+PACKAGES += "exmap-server kernel-module-exmap"
+
+FILES_exmap-console = "${bindir}/exmap ${bindir}/exmapd"
+PACKAGE_ARCH_exmap-console = "${TARGET_ARCH}"
+RDEPENDS_exmap-console += "kernel-module-exmap"
+
+FILES_exmap-server = "${bindir}/exmapserver"
+PACKAGE_ARCH_exmap-server = "${TARGET_ARCH}"
+RDEPENDS_exmap-server += "kernel-module-exmap"
+
+FILES_kernel-module-exmap = "${base_libdir}"
+PACKAGE_ARCH_kernel-module-exmap = "${MACHINE_ARCH}"
+PV_kernel-module-exmap = "${MYPV}-${KERNEL_VERSION}"
+RDEPENDS_kernel-module-exmap += "kernel (${KERNEL_VERSION})"
+
+S = "${WORKDIR}/exmap-console-${PV}"
+
+export MODULE_PATH="${D}${base_libdir}/modules/${KERNEL_VERSION}"
+
+do_compile() {
+ cd ${S}/src
+ make
+
+ cd ${S}/kernel
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \
+ KERNEL_SRC=${STAGING_KERNEL_DIR} \
+ KERNEL_VERSION=${KERNEL_VERSION} \
+ CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
+ ${MAKE_TARGETS}
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' 'DEPMOD=/bin/true' install
+}
+
+pkg_postinst_append_kernel-module-exmap () {
+ if [ -n "$D" ]; then
+ exit 1
+ fi
+ depmod -a
+ update-modules || true
+}
+
+pkg_postrm_append_kernel-module-exmap () {
+ update-modules || true
+}
+
diff --git a/packages/exmap-console/exmap-console_0.4.bb b/packages/exmap-console/exmap-console_0.4.bb
new file mode 100644
index 0000000000..5d89f04937
--- /dev/null
+++ b/packages/exmap-console/exmap-console_0.4.bb
@@ -0,0 +1,2 @@
+require exmap-console.inc
+
diff --git a/packages/exmap-console/exmap-console_svn.bb b/packages/exmap-console/exmap-console_svn.bb
new file mode 100644
index 0000000000..9e6ca80dc0
--- /dev/null
+++ b/packages/exmap-console/exmap-console_svn.bb
@@ -0,0 +1,10 @@
+PR = "r10"
+PV = "0.4+svn${SRCDATE}"
+
+SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=exmap-console;proto=http"
+
+S = "${WORKDIR}/exmap-console"
+
+MYPV := "${PV}"
+PV_kernel-module-exmap = "${MYPV}-${KERNEL_VERSION}"
+
diff --git a/packages/ezx/ezx-boot-usb-native_0.1.0.bb b/packages/ezx/ezx-boot-usb-native_0.1.0.bb
new file mode 100644
index 0000000000..5919f28a11
--- /dev/null
+++ b/packages/ezx/ezx-boot-usb-native_0.1.0.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "Boots an EZX device with a user supplied kernel zImage"
+DEPENDS = "libusb-native"
+SECTION = "devel"
+AUTHOR = "Harald Welte"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://www.openezx.org/download/boot_usb-${PV}.tar.bz2"
+S = "${WORKDIR}/boot_usb-${PV}"
+
+inherit native
+
+do_compile() {
+ ${CC} ${CFLAGS} ${LDFLAGS} -lusb -o ezx-boot-usb boot_usb.c
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0755 ezx-boot-usb ${DEPLOY_DIR_IMAGE}/ezx-boot-usb
+}
+
+do_stage() {
+ :
+}
+
+do_install() {
+ :
+}
+
+addtask deploy before do_build after do_compile
diff --git a/packages/ezx/ezx-boot-usb-native_1877.bb b/packages/ezx/ezx-boot-usb-native_1877.bb
deleted file mode 100644
index 5fe3294fee..0000000000
--- a/packages/ezx/ezx-boot-usb-native_1877.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-DESCRIPTION = "Boots an EZX device with a user supplied kernel zImage"
-DEPENDS = "libusb-native"
-SECTION = "devel"
-AUTHOR = "Harald Welte"
-LICENSE = "GPL"
-PR = "r1"
-
-SRC_URI = "svn://svn.openezx.org/trunk/src/host;module=boot_usb;proto=http;rev=${PV}"
-S = "${WORKDIR}/boot_usb"
-
-inherit native
-
-do_compile() {
- ${CC} ${CFLAGS} ${LDFLAGS} -lusb -o ezx-boot-usb boot_usb.c
-}
-
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0755 ezx-boot-usb ${DEPLOY_DIR_IMAGE}/ezx-boot-usb
-}
-
-do_stage() {
- :
-}
-
-do_install() {
- :
-}
-
-addtask deploy before do_build after do_compile
diff --git a/packages/ezx/ezx-boot-usb-native_svn.bb b/packages/ezx/ezx-boot-usb-native_svn.bb
new file mode 100644
index 0000000000..64e8a486e0
--- /dev/null
+++ b/packages/ezx/ezx-boot-usb-native_svn.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "Boots an EZX device with a user supplied kernel zImage"
+DEPENDS = "libusb-native"
+SECTION = "devel"
+AUTHOR = "Harald Welte"
+LICENSE = "GPL"
+PR = "r1"
+
+DEFAULT_PREFERENCE = "-1"
+
+REV = "1922"
+PV = "0.1.0+r${REV}"
+
+SRC_URI = "svn://svn.openezx.org/trunk/src/host;module=boot_usb;proto=http;rev=${REV}"
+S = "${WORKDIR}/boot_usb"
+
+inherit native
+
+do_compile() {
+ ${CC} ${CFLAGS} ${LDFLAGS} -lusb -o ezx-boot-usb boot_usb.c
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0755 ezx-boot-usb ${DEPLOY_DIR_IMAGE}/ezx-boot-usb
+}
+
+do_stage() {
+ :
+}
+
+do_install() {
+ :
+}
+
+addtask deploy before do_build after do_compile
diff --git a/packages/opie-taskbar/opie-taskbar/htcuniversal/.mtn2git_empty b/packages/ezx/opentapi/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/opie-taskbar/opie-taskbar/htcuniversal/.mtn2git_empty
+++ b/packages/ezx/opentapi/.mtn2git_empty
diff --git a/packages/ezx/opentapi/opentapi.init b/packages/ezx/opentapi/opentapi.init
new file mode 100644
index 0000000000..0b41418e00
--- /dev/null
+++ b/packages/ezx/opentapi/opentapi.init
@@ -0,0 +1,84 @@
+#! /bin/sh
+# -*- coding: utf-8 -*-
+# init.d script for opentapi
+
+set -e
+
+DAEMON=/usr/bin/opentapi
+NAME=opentapi
+PIDDIR=/var/run/opentapi
+PIDFILE=$PIDDIR/pid
+DESC="OpenTAPI server"
+
+test -x $DAEMON || exit 0
+
+# Source defaults file; edit that file to configure this script.
+ENABLED=1
+PARAMS=""
+if [ -e /etc/default/opentapi ]; then
+ . /etc/default/opentapi
+fi
+
+test "$ENABLED" != "0" || exit 0
+
+start_it_up()
+{
+ if [ ! -d $PIDDIR ]; then
+ mkdir -p $PIDDIR
+ fi
+ if [ -e $PIDFILE ]; then
+ PIDDIR=/proc/$(cat $PIDFILE)
+ if [ -d ${PIDDIR} -a "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then
+ echo "$DESC already started; not starting."
+ else
+ echo "Removing stale PID file $PIDFILE."
+ rm -f $PIDFILE
+ fi
+ fi
+
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --background --quiet --pidfile $PIDFILE \
+ --exec $DAEMON -- --system $PARAMS
+ # We need to sleep here because opening the mux devices takes some time
+ sleep 15
+ echo "$NAME."
+ if [ -d $EVENTDIR ]; then
+ run-parts --arg=start $EVENTDIR
+ fi
+}
+
+shut_it_down()
+{
+ if [ -d $EVENTDIR ]; then
+ run-parts --reverse --arg=stop $EVENTDIR
+ fi
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE
+
+ # We no longer include these arguments so that start-stop-daemon
+ # can do its job even given that we may have been upgraded.
+ # We rely on the pidfile being sanely managed
+ # --exec $DAEMON -- --system $PARAMS
+ echo "$NAME."
+ rm -f $PIDFILE
+}
+
+case "$1" in
+ start)
+ start_it_up
+ ;;
+ stop)
+ shut_it_down
+ ;;
+ restart|force-reload)
+ shut_it_down
+ sleep 1
+ start_it_up
+ ;;
+ *)
+ echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/packages/ezx/opentapi_svn.bb b/packages/ezx/opentapi_svn.bb
index e27aa68b97..e27b2fbe6c 100644
--- a/packages/ezx/opentapi_svn.bb
+++ b/packages/ezx/opentapi_svn.bb
@@ -1,14 +1,28 @@
-DESCRIPTION = "Open implementation of motorola's tapisrc"
+DESCRIPTION = "Open implementation of motorola's tapisrv"
LICENSE = "GPLv2"
+SECTION = "devel"
+AUTHOR = "Daniel Willmann"
PV = "0.0+svn${SRCDATE}"
+PR = "r3"
+
+SRC_URI = "svn://svn.openezx.org/trunk/src/userspace/;module=opentapi;proto=http \
+ file://opentapi.init \
+ "
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "opentapi"
+INITSCRIPT_PARAMS = "start 00 S ."
-SRC_URI = "svn://svn.openezx.org/trunk/src/userspace/;module=opentapi;proto=http"
S = "${WORKDIR}/${PN}"
do_install() {
install -d ${D}${bindir}
install -m 755 opentapi ${D}${bindir}
+
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/opentapi.init ${D}${sysconfdir}/init.d/opentapi
}
diff --git a/packages/familiar/familiar-version.bb b/packages/familiar/familiar-version.bb
deleted file mode 100644
index 98048605f4..0000000000
--- a/packages/familiar/familiar-version.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-PV = "${DISTRO_VERSION}"
-
-do_compile() {
- mkdir -p ${D}${sysconfdir}
- echo "Familiar ${DISTRO_VERSION}" > ${D}${sysconfdir}/familiar-version
-
-}
diff --git a/packages/opie-taskbar/opie-taskbar/mnci/.mtn2git_empty b/packages/fastcgi/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/opie-taskbar/opie-taskbar/mnci/.mtn2git_empty
+++ b/packages/fastcgi/.mtn2git_empty
diff --git a/packages/fastcgi/fastcgi_2.4.0.bb b/packages/fastcgi/fastcgi_2.4.0.bb
new file mode 100644
index 0000000000..a42949cb96
--- /dev/null
+++ b/packages/fastcgi/fastcgi_2.4.0.bb
@@ -0,0 +1,19 @@
+LICENSE = "Open Market"
+DESCRIPTION = "Fast CGI backend (web server to CGI handler) library"
+PR = "r0"
+
+SRC_URI = "http://www.fastcgi.com/dist/fcgi-${PV}.tar.gz"
+
+S=${WORKDIR}/fcgi-${PV}
+
+LEAD_SONAME = "libfcgi.so*"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
+
+do_compile() {
+}
+
diff --git a/packages/fbgrab/fbgrab_1.0.bb b/packages/fbgrab/fbgrab_1.0.bb
index 331fa260c3..8790fe0a28 100644
--- a/packages/fbgrab/fbgrab_1.0.bb
+++ b/packages/fbgrab/fbgrab_1.0.bb
@@ -2,10 +2,14 @@ SECTION = "console/network"
DESCRIPTION = "framebuffer screenshot program"
LICENSE = "GPL"
+PR = "r1"
+
DEPENDS = " zlib libpng "
SRC_URI = "http://hem.bredband.net/gmogmo/fbgrab/fbgrab-${PV}.tar.gz \
- file://makefile.patch;patch=1"
+ file://makefile.patch;patch=1 \
+ http://people.openezx.org/ao2/fbgrab_network_mode.diff;patch=1 \
+ "
do_install() {
install -d ${D}${bindir} ${D}${mandir}/man1/
diff --git a/packages/opie-taskbar/opie-taskbar/simpad/.mtn2git_empty b/packages/fbreader/fbreader-0.8.2a/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/opie-taskbar/opie-taskbar/simpad/.mtn2git_empty
+++ b/packages/fbreader/fbreader-0.8.2a/.mtn2git_empty
diff --git a/packages/fbreader/fbreader-0.8.2a/480x640-buildfix.patch b/packages/fbreader/fbreader-0.8.2a/480x640-buildfix.patch
new file mode 100644
index 0000000000..fba1f614db
--- /dev/null
+++ b/packages/fbreader/fbreader-0.8.2a/480x640-buildfix.patch
@@ -0,0 +1,44 @@
+diff -Nurd fbreader-0.7.4q.orig/fbreader/data/default/styles.gpe480x640.xml fbreader-0.7.4q/fbreader/data/default/styles.gpe480x640.xml
+--- fbreader-0.7.4q.orig/fbreader/data/default/styles.gpe480x640.xml 1970-01-01 00:00:00.000000000 +0000
++++ fbreader-0.7.4q/fbreader/data/default/styles.gpe480x640.xml 2007-04-24 00:02:38.000000000 +0000
+@@ -0,0 +1,40 @@
++<DefaultStyles>
++ <base family="Sans" fontSize="16"/>
++ <style id="0" name="Regular Paragraph" firstLineIndentDelta="15" allowHyphenations="true"/>
++ <style id="1" name="Title" fontSizeDelta="10" bold="true" spaceBefore="2" spaceAfter="7" alignment="center" allowHyphenations="false"/>
++ <style id="3" name="Poem Title" fontSizeDelta="2" bold="true" spaceBefore="6" spaceAfter="6" leftIndent="40" allowHyphenations="false"/>
++ <style id="2" name="Section Title" fontSizeDelta="6" bold="true" spaceAfter="5" alignment="center" allowHyphenations="false"/>
++ <style id="31" name="Header 1" fontSizeDelta="6" bold="true" spaceAfter="5" alignment="center" allowHyphenations="false"/>
++ <style id="32" name="Header 2" fontSizeDelta="6" bold="true" spaceAfter="5" alignment="center" allowHyphenations="false"/>
++ <style id="5" name="Annotation" fontSizeDelta="-2" firstLineIndentDelta="15" allowHyphenations="true"/>
++ <style id="6" name="Epigraph" fontSizeDelta="-2" italic="true" leftIndent="80" allowHyphenations="true"/>
++ <style id="4" name="Subtitle" bold="true" allowHyphenations="true"/>
++ <style id="33" name="Header 3" bold="true" allowHyphenations="true"/>
++ <style id="34" name="Header 4" bold="true" allowHyphenations="true"/>
++ <style id="13" name="Author" leftIndent="20" allowHyphenations="false"/>
++ <style id="14" name="Date" leftIndent="40" allowHyphenations="false"/>
++ <style id="7" name="Stanza" spaceBefore="6" spaceAfter="6" alignment="left" allowHyphenations="false"/>
++ <style id="8" name="Verse" leftIndent="20" alignment="left" allowHyphenations="false"/>
++ <style id="10" name="Image" spaceBefore="8" alignment="center"/>
++ <style id="23" name="Contents Table" spaceAfter="7" leftIndent="15" firstLineIndentDelta="-15" alignment="left"/>
++ <style id="24" name="Author in Library" fontSizeDelta="-2" alignment="left" allowHyphenations="false"/>
++ <style id="25" name="Book in Library" fontSizeDelta="-2" alignment="left" allowHyphenations="false"/>
++ <style id="26" name="Recent Book List" spaceAfter="3" leftIndent="15" firstLineIndentDelta="-15" alignment="left" lineSpacing="1.2"/>
++ <style id="9" name="Preformatted text" italic="true" alignment="left" allowHyphenations="false"/>
++
++ <style id="12" partial="true" name="Cite" italic="true"/>
++ <style id="15" partial="true" name="Hyperlink" allowHyphenations="false" isHyperlink="true"/>
++ <style id="16" partial="true" name="Footnote" fontSizeDelta="-6" vShift="10" allowHyphenations="false" isHyperlink="true"/>
++ <style id="17" partial="true" name="Emphasis" italic="true"/>
++ <style id="18" partial="true" name="Strong" bold="true"/>
++ <style id="35" name="Header 5" bold="true"/>
++ <style id="36" name="Header 6" bold="true"/>
++ <style id="19" partial="true" name="Subscript" fontSizeDelta="-4" vShift="-4" allowHyphenations="false"/>
++ <style id="20" partial="true" name="Superscript" fontSizeDelta="-4" vShift="10" allowHyphenations="false"/>
++ <style id="21" partial="true" name="Code" italic="true" allowHyphenations="false"/>
++ <style id="22" partial="true" name="StrikeThrough"/>
++ <style id="27" partial="true" name="Italic" italic="true"/>
++ <style id="28" partial="true" name="Bold" bold="true"/>
++ <style id="29" partial="true" name="Definition" italic="true"/>
++ <style id="30" partial="true" name="Definition Description" italic="true"/>
++</DefaultStyles>
diff --git a/packages/fbreader/fbreader-0.8.2a/fbreader-0.8.2a_buildsys_oe.patch b/packages/fbreader/fbreader-0.8.2a/fbreader-0.8.2a_buildsys_oe.patch
new file mode 100644
index 0000000000..858a713125
--- /dev/null
+++ b/packages/fbreader/fbreader-0.8.2a/fbreader-0.8.2a_buildsys_oe.patch
@@ -0,0 +1,50 @@
+diff -Nur fbreader-0.8.2a.orig/makefiles/arch/openzaurus.mk fbreader-0.8.2a/makefiles/arch/openzaurus.mk
+--- fbreader-0.8.2a.orig/makefiles/arch/openzaurus.mk 2007-04-17 18:53:46.000000000 +0000
++++ fbreader-0.8.2a/makefiles/arch/openzaurus.mk 2007-04-24 00:57:17.000000000 +0000
+@@ -17,7 +17,7 @@
+ RM = rm -rvf
+ RM_QUIET = rm -rf
+ QTINCLUDE = -I $(INCPATH)/qt2
+-GTKINCLUDE = -I$(LIBPATH)/glib-2.0/include -I$(LIBPATH)/gtk-2.0/include -I$(INCPATH)/glib-2.0 -I$(INCPATH)/gtk-2.0 -I$(INCPATH)/pango-1.0 -I$(INCPATH)/atk-1.0
++GTKINCLUDE = -I$(LIBPATH)/glib-2.0/include -I$(LIBPATH)/gtk-2.0/include -I$(INCPATH)/cairo -I$(INCPATH)/glib-2.0 -I$(INCPATH)/gtk-2.0 -I$(INCPATH)/pango-1.0 -I$(INCPATH)/atk-1.0
+ MOC = $(TOOLSPATH)/moc
+ CC = $(TOOLSPATH)/arm-linux-gcc
+ AR = $(TOOLSPATH)/arm-linux-ar rsu
+@@ -28,10 +28,10 @@
+ ARCHIVER_LIB = -lbz2
+
+ ifeq "$(UI_TYPE)" "opie"
+- UILIBS = -lqte -lqpe
++ UILIBS = -lqt-mt
+ else
+- UILIBS = -lgpewidget -lgtk-x11-2.0 -lgdk-x11-2.0 -lgdk_pixbuf-2.0
++ UILIBS = $(shell pkg-config --libs gtk+-2.0) -lgpewidget
+ endif
+
+-CFLAGS = -pipe -DOPIE_NO_DEBUG -DQT_NO_DEBUG -DQWS -fno-exceptions -fno-rtti -march=armv4 -mtune=xscale --param large-function-growth=2000 --param inline-unit-growth=200 -Wall -Wno-ctor-dtor-privacy -W -Winline
+-LDFLAGS = -Wl,-rpath,$(LIBDIR)
++CFLAGS = -pipe -DOPIE_NO_DEBUG -DQT_NO_DEBUG -DQWS -fno-exceptions -fno-rtti $(OE_CFLAGS)
++LDFLAGS = -Wl,-rpath,$(LIBDIR) -Wl,-rpath,$(LIBPATH)
+diff -Nur fbreader-0.8.2a.orig/makefiles/target.mk fbreader-0.8.2a/makefiles/target.mk
+--- fbreader-0.8.2a.orig/makefiles/target.mk 2007-04-17 18:53:46.000000000 +0000
++++ fbreader-0.8.2a/makefiles/target.mk 2007-04-24 00:58:30.000000000 +0000
+@@ -1,6 +1,5 @@
+-#TARGET_ARCH = openzaurus
+-#UI_TYPE = opie
+-#UI_TYPE = gpe
++TARGET_ARCH = openzaurus
++UI_TYPE = gpe
+
+ #TARGET_ARCH = opensimpad-0.9.0
+ #UI_TYPE = opie
+@@ -17,8 +16,8 @@
+ #UI_TYPE = qt
+ #UI_TYPE = qt4
+
+-TARGET_ARCH = win32
+-UI_TYPE = win32
++#TARGET_ARCH = win32
++#UI_TYPE = win32
+
+ #TARGET_ARCH = pocketpc
+ #UI_TYPE = win32
diff --git a/packages/fbreader/fbreader_0.7.3b.bb b/packages/fbreader/fbreader_0.7.3b.bb
deleted file mode 100644
index 9e7d546780..0000000000
--- a/packages/fbreader/fbreader_0.7.3b.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-DESCRIPTION = "FBreader is an ebook reader"
-LICENSE = "GPL2"
-HOMEPAGE = "http://only.mawhrin.net/fbreader/"
-SECTION = "x11/utils"
-PRIORITY = "optional"
-DEPENDS = "gtk+ enca expat"
-
-SRC_URI = "http://only.mawhrin.net/fbreader/fbreader-sources-${PV}.tgz \
- file://hack-makefile.patch;patch=1 \
- file://set-target.patch;patch=1 \
- file://change-desktop.patch;patch=1"
-
-FILES_${PN} += "/usr/share/FBReader"
-
-inherit autotools pkgconfig
-
-do_install_append() {
- install -d ${D}${datadir}/applications
- install -d ${D}${datadir}/pixmaps
- install -m 0644 ${WORKDIR}/${PN}-${PV}/fbreader/pdaxrom/usr/share/applications/FBReader.desktop ${D}${datadir}/applications/fbreader.desktop
- install -m 0644 ${WORKDIR}/${PN}-${PV}/fbreader/icons/34x28/FBReader.png ${D}${datadir}/pixmaps/fbreader.png
-}
diff --git a/packages/fbreader/fbreader_0.7.3d.bb b/packages/fbreader/fbreader_0.7.3d.bb
index 078932e2c4..9fe9c3190c 100644
--- a/packages/fbreader/fbreader_0.7.3d.bb
+++ b/packages/fbreader/fbreader_0.7.3d.bb
@@ -3,7 +3,8 @@ LICENSE = "GPL2"
HOMEPAGE = "http://only.mawhrin.net/fbreader/"
SECTION = "x11/utils"
PRIORITY = "optional"
-DEPENDS = "gtk+ enca expat"
+DEPENDS = "gtk+ enca expat bzip2"
+PR = "r1"
SRC_URI = "http://only.mawhrin.net/fbreader/obsolete/fbreader-sources-${PV}.tgz \
file://fbreader-0.7.3d_buildsys_oe.patch;patch=1"
diff --git a/packages/fbreader/fbreader_0.7.4q.bb b/packages/fbreader/fbreader_0.7.4q.bb
new file mode 100644
index 0000000000..bcea83a4a1
--- /dev/null
+++ b/packages/fbreader/fbreader_0.7.4q.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "FBreader is an ebook reader"
+LICENSE = "GPL2"
+HOMEPAGE = "http://only.mawhrin.net/fbreader/"
+SECTION = "x11/utils"
+PRIORITY = "optional"
+DEPENDS = "gtk+ enca expat bzip2 libgpewidget"
+PR = "r1"
+
+SRC_URI = "http://only.mawhrin.net/fbreader/obsolete/fbreader-sources-${PV}.tgz \
+ file://fbreader-0.7.4q_buildsys_oe.patch;patch=1"
+
+FILES_${PN} += "${datadir}/FBReader ${datadir}/zlibrary"
+
+CFLAGS_append = " RESOLUTION=240x320 INSTALLDIR=/usr"
+EXTRA_OEMAKE = "CC='${CXX}' LD='${CXX}' OE_CFLAGS='${CXXFLAGS}' INCPATH='${STAGING_INCDIR}' LIBPATH='${STAGING_LIBDIR}'"
+
+inherit pkgconfig
+
+do_install () {
+ cd fbreader/openzaurus; oe_runmake .builddir RESOLUTION=240x320
+ cp -r data/* ${D}
+}
diff --git a/packages/fbreader/fbreader_0.8.2a.bb b/packages/fbreader/fbreader_0.8.2a.bb
new file mode 100644
index 0000000000..b21aa7f930
--- /dev/null
+++ b/packages/fbreader/fbreader_0.8.2a.bb
@@ -0,0 +1,50 @@
+DESCRIPTION = "FBreader is an ebook reader"
+LICENSE = "GPL2"
+HOMEPAGE = "http://only.mawhrin.net/fbreader/"
+SECTION = "x11/utils"
+PRIORITY = "optional"
+DEPENDS = "gtk+ enca expat bzip2 libgpewidget"
+PR = "r3"
+
+# The RESOLUTION is defined at compile time which makes
+# this package MACHINE specific.
+PACKAGE_ARCH_${PN} = "${MACHINE}"
+
+SRC_URI = "http://only.mawhrin.net/fbreader/fbreader-sources-${PV}.tgz \
+ file://fbreader-0.8.2a_buildsys_oe.patch;patch=1 \
+ file://480x640-buildfix.patch;patch=1"
+
+# Set the defaults
+READER_RESOLUTION = "240x320"
+READER_ARCH = "openzaurus"
+READER_GUI = "gpe"
+READER_STATUS = "release"
+
+# Set device specific overrides
+RESOLUTION_fic-gta01 = "480x640"
+
+FILES_${PN} += "${datadir}/FBReader ${datadir}/zlibrary"
+
+CFLAGS_append = " RESOLUTION=${RESOLUTION} INSTALLDIR=/usr"
+EXTRA_OEMAKE = "CC='${CXX}' LD='${CXX}' OE_CFLAGS='${CXXFLAGS}' INCPATH='${STAGING_INCDIR}' LIBPATH='${STAGING_LIBDIR}'"
+
+inherit pkgconfig
+
+do_configure() {
+ cd ${WORKDIR}/${PN}-${PV}
+ mv makefiles/target.mk makefiles/target.mk.orig
+
+ echo "TARGET_ARCH = ${READER_ARCH}" > makefiles/target.mk
+ echo "UI_TYPE = ${READER_GUI}" >> makefiles/target.mk
+ echo "TARGET_STATUS = ${READER_STATUS}" >> makefiles/target.mk
+
+ cd fbreader/data/help
+
+ # FIXME: Add native _480x640 file with propper linebreaks
+ ln -s MiniHelp.240x320.fb2 MiniHelp.openzaurus_480x640.fb2
+}
+
+do_install () {
+ cd fbreader/${READER_ARCH}; oe_runmake .builddir RESOLUTION=${RESOLUTION}
+ cp -r data/* ${D}
+}
diff --git a/packages/fbreader/files/fbreader-0.7.4q_buildsys_oe.patch b/packages/fbreader/files/fbreader-0.7.4q_buildsys_oe.patch
new file mode 100644
index 0000000000..530edc7f18
--- /dev/null
+++ b/packages/fbreader/files/fbreader-0.7.4q_buildsys_oe.patch
@@ -0,0 +1,50 @@
+diff -ur fbreader-0.7.4q.org/makefiles/arch/openzaurus.mk fbreader-0.7.4q/makefiles/arch/openzaurus.mk
+--- fbreader-0.7.4q.org/makefiles/arch/openzaurus.mk 2006-12-05 10:47:51.000000000 +0000
++++ fbreader-0.7.4q/makefiles/arch/openzaurus.mk 2007-01-07 04:58:17.000000000 +0000
+@@ -15,7 +15,7 @@
+ RM = rm -rvf
+ RM_QUIET = rm -rf
+ QTINCLUDE = -I $(INCPATH)/qt2
+-GTKINCLUDE = -I$(LIBPATH)/glib-2.0/include -I$(LIBPATH)/gtk-2.0/include -I$(INCPATH)/glib-2.0 -I$(INCPATH)/gtk-2.0 -I$(INCPATH)/pango-1.0 -I$(INCPATH)/atk-1.0
++GTKINCLUDE = -I$(LIBPATH)/glib-2.0/include -I$(LIBPATH)/gtk-2.0/include -I$(INCPATH)/cairo -I$(INCPATH)/glib-2.0 -I$(INCPATH)/gtk-2.0 -I$(INCPATH)/pango-1.0 -I$(INCPATH)/atk-1.0
+ MOC = $(TOOLSPATH)/moc
+ CC = $(TOOLSPATH)/arm-linux-gcc
+ AR = $(TOOLSPATH)/arm-linux-ar rsu
+@@ -26,10 +26,10 @@
+ BZIP2LIBS = -lbz2
+
+ ifeq "$(UI_TYPE)" "opie"
+- UILIBS = -lqte -lqpe
++ UILIBS = -lqt-mt
+ else
+- UILIBS = -lgpewidget -lgtk-x11-2.0 -lgdk-x11-2.0 -lgdk_pixbuf-2.0
++ UILIBS = $(shell pkg-config --libs gtk+-2.0) -lgpewidget
+ endif
+
+-CFLAGS = -pipe -DOPIE_NO_DEBUG -DQT_NO_DEBUG -DQWS -fno-exceptions -fno-rtti -march=armv4 -mtune=xscale --param large-function-growth=2000 --param inline-unit-growth=200 -Wall -Wno-ctor-dtor-privacy -W -Winline
+-LDFLAGS = -Wl,-rpath,$(LIBDIR)
++CFLAGS = -pipe -DOPIE_NO_DEBUG -DQT_NO_DEBUG -DQWS -fno-exceptions -fno-rtti $(OE_CFLAGS)
++LDFLAGS = -Wl,-rpath,$(LIBDIR) -Wl,-rpath,$(LIBPATH)
+diff -ur fbreader-0.7.4q.org/makefiles/target.mk fbreader-0.7.4q/makefiles/target.mk
+--- fbreader-0.7.4q.org/makefiles/target.mk 2006-12-05 10:47:51.000000000 +0000
++++ fbreader-0.7.4q/makefiles/target.mk 2007-01-07 04:16:20.000000000 +0000
+@@ -1,6 +1,6 @@
+-#TARGET_ARCH = openzaurus
++TARGET_ARCH = openzaurus
+ #UI_TYPE = opie
+-#UI_TYPE = gpe
++UI_TYPE = gpe
+
+ #TARGET_ARCH = opensimpad-0.9.0
+ #UI_TYPE = opie
+@@ -11,8 +11,8 @@
+ #TARGET_ARCH = maemo
+ #UI_TYPE = maemo
+
+-TARGET_ARCH = desktop
+-UI_TYPE = gtk
++#TARGET_ARCH = desktop
++#UI_TYPE = gtk
+ #UI_TYPE = qt
+
+ #TARGET_ARCH = zaurus
diff --git a/packages/fbset/fbset_2.1.bb b/packages/fbset/fbset_2.1.bb
index 28161f7636..ab505110e4 100644
--- a/packages/fbset/fbset_2.1.bb
+++ b/packages/fbset/fbset_2.1.bb
@@ -6,40 +6,27 @@
# Date: 28-May-06
DESCRIPTION = "The fbset console tool"
-HOMEPAGE = ""
LICENSE = "GPL"
-######################################################################################
+PR = "r2"
SRC_URI = "http://ftp.debian.org/debian/pool/main/f/fbset/fbset_2.1.orig.tar.gz \
- file://makefile.patch;patch=1"
+ file://makefile.patch;patch=1"
-######################################################################################
+inherit autotools update-alternatives
-PR = "r1"
-PARALLEL_MAKE=""
-
-######################################################################################
-
-inherit autotools
-
-######################################################################################
+PARALLEL_MAKE = ""
do_install() {
- install -d ${D}/usr/sbin ${D}/usr/share/man/man8 ${D}/usr/share/man/man5
-
- install -m 0755 ${WORKDIR}/${P}/fbset ${D}/usr/sbin/fbset.real
-
- install -m 0644 ${WORKDIR}/${P}/*.5 ${D}/usr/share/man/man5
- install -m 0644 ${WORKDIR}/${P}/*.8 ${D}/usr/share/man/man8
+ install -d ${D}/usr/sbin ${D}/usr/share/man/man8 ${D}/usr/share/man/man5
+ install -m 0755 ${WORKDIR}/${P}/fbset ${D}/usr/sbin/fbset.real
+ install -m 0644 ${WORKDIR}/${P}/*.5 ${D}/usr/share/man/man5
+ install -m 0644 ${WORKDIR}/${P}/*.8 ${D}/usr/share/man/man8
}
-######################################################################################
+ALTERNATIVE_NAME = "fbset"
+ALTERNATIVE_LINK = "${sbindir}/${ALTERNATIVE_NAME}"
+ALTERNATIVE_PATH = "${sbindir}/fbset.real"
+ALTERNATIVE_PRIORITY = "55"
-pkg_postinst_${PN}() {
- update-alternatives --install /usr/sbin/fbset fbset /usr/sbin/fbset.real 55
-}
-pkg_postrm_${PN}() {
- update-alternatives --remove fbset /usr/sbin/fbset.real
-}
diff --git a/packages/fbvncserver/fbvncserver-kmodule_0.9.4.bb b/packages/fbvncserver/fbvncserver-kmodule_0.9.4.bb
index 9e1fc13da6..4abdb6c7b0 100644
--- a/packages/fbvncserver/fbvncserver-kmodule_0.9.4.bb
+++ b/packages/fbvncserver/fbvncserver-kmodule_0.9.4.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Framebuffer VNC server keyboard events module"
-SECTION = "kernel/module"
+SECTION = "kernel/modules"
LICENSE = "GPL"
PR = "r1"
diff --git a/packages/opie-taskbar/opie-taskbar/spitz/.mtn2git_empty b/packages/fceu/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/opie-taskbar/opie-taskbar/spitz/.mtn2git_empty
+++ b/packages/fceu/.mtn2git_empty
diff --git a/packages/fceu/fceu_0.98.13-pre.bb b/packages/fceu/fceu_0.98.13-pre.bb
new file mode 100644
index 0000000000..a2645e9d5c
--- /dev/null
+++ b/packages/fceu/fceu_0.98.13-pre.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "FCEU Ultra NES Emulator"
+
+SECTION = "games"
+LICENSE = "GPL"
+HOMEPAGE = "http://fceultra.sourceforge.net"
+DEPENDS = "virtual/libsdl"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/fceultra/fceu-${PV}.src.tar.bz2 \
+ file://fceu.patch;pnum=0;patch=1 \
+ "
+
+S = "${WORKDIR}/fceu"
+
+inherit autotools pkgconfig
+
+do_configure() {
+ oe_runconf
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+}
diff --git a/packages/opie-taskbar/opie-taskbar/tosa/.mtn2git_empty b/packages/fceu/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/opie-taskbar/opie-taskbar/tosa/.mtn2git_empty
+++ b/packages/fceu/files/.mtn2git_empty
diff --git a/packages/fceu/files/fceu.patch b/packages/fceu/files/fceu.patch
new file mode 100644
index 0000000000..ae54671cde
--- /dev/null
+++ b/packages/fceu/files/fceu.patch
@@ -0,0 +1,58 @@
+--- configure.orig Wed Sep 15 20:31:55 2004
++++ configure Mon Feb 28 08:45:42 2005
+@@ -308,7 +308,7 @@
+ # 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 INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE CPP CCAS CCASFLAGS CXX CXXFLAGS ac_ct_CXX CXXDEPMODE CXXCPP WIN32_TRUE WIN32_FALSE UNIX_TRUE UNIX_FALSE USE_SEXYAL_TRUE USE_SEXYAL_FALSE NATIVEWIN32_TRUE NATIVEWIN32_FALSE OPENGL_TRUE OPENGL_FALSE HAVE_GTK_TRUE HAVE_GTK_FALSE EGREP SDL_CONFIG SDL_CFLAGS SDL_LIBS C80x86_TRUE C80x86_FALSE LIBOBJS LTLIBOBJS'
++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 INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE CPP CCAS CCASFLAGS CXX CXXFLAGS ac_ct_CXX CXXDEPMODE CXXCPP WIN32_TRUE WIN32_FALSE UNIX_TRUE UNIX_FALSE USE_SEXYAL_TRUE USE_SEXYAL_FALSE NATIVEWIN32_TRUE NATIVEWIN32_FALSE OPENGL_TRUE OPENGL_FALSE HAVE_GTK_TRUE HAVE_GTK_FALSE EGREP SDL_CONFIG SDL_CFLAGS SDL_LIBS LIBOBJS LTLIBOBJS'
+ ac_subst_files=''
+
+ # Initialize some variables set by options.
+@@ -5130,21 +5130,11 @@
+ fi
+
+
+-if expr match "$target_cpu" 'i.86' > /dev/null; then
++if echo ${target_cpu} | grep -q 'i.86' > /dev/null; then
+ cat >>confdefs.h <<\_ACEOF
+ #define C80x86 1
+ _ACEOF
+
+-
+-
+-if true; then
+- C80x86_TRUE=
+- C80x86_FALSE='#'
+-else
+- C80x86_TRUE='#'
+- C80x86_FALSE=
+-fi
+-
+ fi
+
+ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+@@ -5589,13 +5579,6 @@
+ Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-if test -z "${C80x86_TRUE}" && test -z "${C80x86_FALSE}"; then
+- { { echo "$as_me:$LINENO: error: conditional \"C80x86\" was never defined.
+-Usually this means the macro was only invoked conditionally." >&5
+-echo "$as_me: error: conditional \"C80x86\" was never defined.
+-Usually this means the macro was only invoked conditionally." >&2;}
+- { (exit 1); exit 1; }; }
+-fi
+
+ : ${CONFIG_STATUS=./config.status}
+ ac_clean_files_save=$ac_clean_files
+@@ -6188,8 +6171,6 @@
+ s,@SDL_CONFIG@,$SDL_CONFIG,;t t
+ s,@SDL_CFLAGS@,$SDL_CFLAGS,;t t
+ s,@SDL_LIBS@,$SDL_LIBS,;t t
+-s,@C80x86_TRUE@,$C80x86_TRUE,;t t
+-s,@C80x86_FALSE@,$C80x86_FALSE,;t t
+ s,@LIBOBJS@,$LIBOBJS,;t t
+ s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+ CEOF
+
diff --git a/packages/ffmpeg/ffmpeg_cvs.bb b/packages/ffmpeg/ffmpeg_cvs.bb
deleted file mode 100644
index bfd68eb3e2..0000000000
--- a/packages/ffmpeg/ffmpeg_cvs.bb
+++ /dev/null
@@ -1,84 +0,0 @@
-#Remove the dash after cvs below when 0.4.9 changes in PV
-PV = "0.4.9-pre1+cvs-${SRCDATE}"
-DESCRIPTION = "ffmpeg"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "zlib libvorbis faac liba52 lame"
-LICENSE = "GPL"
-PR = "r1"
-S = "${WORKDIR}/ffmpeg"
-DEFAULT_PREFERENCE = "-1"
-
-inherit autotools
-
-SRC_URI = "cvs://anonymous@mplayerhq.hu/cvsroot/ffmpeg;module=ffmpeg \
- file://configure.patch;patch=0 \
- file://common.patch;patch=1 \
- file://soname.patch;patch=1 \
- "
-
-TARGET_LDFLAGS_append = " -lm -la52 "
-
-EXTRA_OECONF=" \
- --enable-mp3lame \
- --enable-vorbis \
- --enable-faac \
- --enable-a52 \
- --enable-a52bin \
- --enable-pp \
-# --enable-shared-pp \
- --enable-shared \
- --disable-amr_nb \
- --enable-amr_nb-fixed \
- --disable-amr_wb \
- --enable-pthreads \
- --enable-gpl \
- --enable-zlib \
- \
- --disable-audio-beos \
- --disable-v4l \
- --disable-dv1394 \
- --disable-debug \
- --disable-ffserver \
- --disable-ffplay \
- \
- --cross-prefix=${TARGET_PREFIX} \
- --extra-cflags=\$(TARGET_CFLAGS) \
- --extra-ldflags=\$(TARGET_LDFLAGS) \
- --extra-libs=\$(TARGET_LDFLAGS) \
- \
- --cpu=${PACKAGE_ARCH} \
- --prefix=${D}${prefix} \
- --mandir=${D}${prefix}/share/man \
-"
-
-PACKAGES += "libavcodec libavcodec-dev libavformat libavformat-dev"
-FILES_${PN} = "${bindir}"
-FILES_${PN}-dev = "${includedir}"
-FILES_libavcodec = "${libdir}/libavcodec*.so.*"
-FILES_libavcodec-dev = "${libdir}/libavcodec*.so ${libdir}/libavcodec*.la ${libdir}/libavcodec*.a"
-FILES_libavformat = "${libdir}/libavformat*.so.*"
-FILES_libavformat-dev = "${libdir}/libavformat*.so ${libdir}/libavformat*.la ${libdir}/libavformat*.a"
-
-# We do this because the install program is called with -s which causes it to call "strip" and it then mangles cross compiled stuff..
-PATH_prepend="${CROSS_DIR}/${TARGET_SYS}/bin:"
-
-
-do_configure_prepend() {
- export CC="${CC}"
-}
-
-do_stage() {
- oe_libinstall -a -so -C libavcodec libavcodec ${STAGING_LIBDIR}
- oe_libinstall -a -so -C libavformat libavformat ${STAGING_LIBDIR}
-
- install -d ${STAGING_INCDIR}/ffmpeg
- install -m 0644 ${S}/libavcodec/avcodec.h ${STAGING_INCDIR}/ffmpeg/avcodec.h
- install -m 0644 ${S}/libavcodec/common.h ${STAGING_INCDIR}/ffmpeg/common.h
- install -m 0644 ${S}/libavcodec/rational.h ${STAGING_INCDIR}/ffmpeg/rational.h
- install -m 0644 ${S}/libavformat/avformat.h ${STAGING_INCDIR}/ffmpeg/avformat.h
- install -m 0644 ${S}/libavformat/avio.h ${STAGING_INCDIR}/ffmpeg/avio.h
- install -m 0644 ${S}/libavformat/rtp.h ${STAGING_INCDIR}/ffmpeg/rtp.h
- install -m 0644 ${S}/libavformat/rtsp.h ${STAGING_INCDIR}/ffmpeg/rtsp.h
- install -m 0644 ${S}/libavformat/rtspcodes.h ${STAGING_INCDIR}/ffmpeg/rtspcodes.h
-}
diff --git a/packages/ffmpeg/ffmpeg_svn.bb b/packages/ffmpeg/ffmpeg_svn.bb
new file mode 100644
index 0000000000..4098d721f9
--- /dev/null
+++ b/packages/ffmpeg/ffmpeg_svn.bb
@@ -0,0 +1,127 @@
+DESCRIPTION = "ffmpeg"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "zlib libvorbis faac liba52 lame"
+PV = "0.4.9+svn${SRCDATE}"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "svn://svn.mplayerhq.hu/ffmpeg/;module=trunk"
+
+S = "${WORKDIR}/trunk"
+
+inherit autotools
+
+TARGET_LDFLAGS_append = " -lm -la52 "
+
+EXTRA_OECONF = " \
+ --enable-mp3lame \
+ --enable-vorbis \
+ --enable-faad \
+ --enable-a52 \
+ --enable-a52bin \
+ --enable-pp \
+ --enable-shared \
+ --enable-pthreads \
+ --enable-gpl \
+ \
+ --disable-audio-beos \
+ --disable-v4l \
+ --disable-dv1394 \
+ --disable-debug \
+ --disable-ffserver \
+ --disable-ffplay \
+ \
+ --cross-prefix=${TARGET_PREFIX} \
+ \
+ --cpu=${PACKAGE_ARCH} \
+"
+
+
+# We do this because the install program is called with -s
+# which causes it to call "strip" and it then mangles cross compiled stuff..
+PATH_prepend="${CROSS_DIR}/${TARGET_SYS}/bin:"
+
+do_configure_prepend() {
+ export CC="${CC}"
+}
+
+oe_runconf () {
+ if [ -x ${S}/configure ] ; then
+ cfgcmd="${S}/configure \
+ --prefix=${prefix} \
+ --mandir=${mandir} \
+ ${EXTRA_OECONF} \
+ $@"
+ oenote "Running $cfgcmd..."
+ $cfgcmd || oefatal "oe_runconf failed"
+ else
+ oefatal "no configure script found"
+ fi
+
+}
+
+do_stage() {
+ oe_libinstall -a -so -C libavcodec libavcodec ${STAGING_LIBDIR}
+ oe_libinstall -a -so -C libavformat libavformat ${STAGING_LIBDIR}
+ oe_libinstall -a -so -C libavutil libavutil ${STAGING_LIBDIR}
+ oe_libinstall -a -so -C libpostproc libpostproc ${STAGING_LIBDIR}
+
+ install -d ${STAGING_INCDIR}/ffmpeg
+ install -m 0644 ${S}/libavcodec/avcodec.h \
+ ${STAGING_INCDIR}/ffmpeg/avcodec.h
+
+ install -m 0644 ${S}/libavformat/avformat.h \
+ ${STAGING_INCDIR}/ffmpeg/avformat.h
+ install -m 0644 ${S}/libavformat/avio.h \
+ ${STAGING_INCDIR}/ffmpeg/avio.h
+ install -m 0644 ${S}/libavformat/rtp.h \
+ ${STAGING_INCDIR}/ffmpeg/rtp.h
+ install -m 0644 ${S}/libavformat/rtsp.h \
+ ${STAGING_INCDIR}/ffmpeg/rtsp.h
+ install -m 0644 ${S}/libavformat/rtspcodes.h \
+ ${STAGING_INCDIR}/ffmpeg/rtspcodes.h
+
+ install -m 0644 ${S}/libavutil/avutil.h \
+ ${STAGING_INCDIR}/ffmpeg/avutil.h
+ install -m 0644 ${S}/libavutil/bswap.h \
+ ${STAGING_INCDIR}/ffmpeg/bswap.h
+ install -m 0644 ${S}/libavutil/common.h \
+ ${STAGING_INCDIR}/ffmpeg/common.h
+ install -m 0644 ${S}/libavutil/crc.h \
+ ${STAGING_INCDIR}/ffmpeg/crc.h
+ install -m 0644 ${S}/libavutil/integer.h \
+ ${STAGING_INCDIR}/ffmpeg/integer.h
+ install -m 0644 ${S}/libavutil/intfloat_readwrite.h \
+ ${STAGING_INCDIR}/ffmpeg/intfloat_readwrite.h
+ install -m 0644 ${S}/libavutil/mathematics.h \
+ ${STAGING_INCDIR}/ffmpeg/mathematics.h
+ install -m 0644 ${S}/libavutil/rational.h \
+ ${STAGING_INCDIR}/ffmpeg/rational.h
+}
+
+PACKAGES += "libavcodec libavcodec-dev \
+ libavformat libavformat-dev \
+ libavutil libavutil-dev \
+ libpostproc libpostproc-dev"
+
+FILES_${PN} = "${bindir}"
+FILES_${PN}-dev = "${includedir}"
+FILES_${PN}-doc = "${mandir}"
+
+FILES_libavcodec = "${libdir}/libavcodec*.so.*"
+FILES_libavcodec-dev = "${libdir}/libavcodec*.so \
+ ${libdir}/libavcodec*.la ${libdir}/libavcodec*.a"
+
+FILES_libavformat = "${libdir}/libavformat*.so.*"
+FILES_libavformat-dev = "${libdir}/libavformat*.so \
+ ${libdir}/libavformat*.la ${libdir}/libavformat*.a"
+
+FILES_libavutil = "${libdir}/libavutil*.so.*"
+FILES_libavutil-dev = "${libdir}/libavutil*.so \
+ ${libdir}/libavutil*.la ${libdir}/libavutil*.a"
+
+FILES_libpostproc = "${libdir}/libpostproc*.so.*"
+FILES_libpostproc-dev = "${libdir}/libpostproc*.so \
+ ${libdir}/libpostproc*.la ${libdir}/libpostproc*.a"
diff --git a/packages/portmap/portmap-5-24/.mtn2git_empty b/packages/fftw/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/portmap/portmap-5-24/.mtn2git_empty
+++ b/packages/fftw/.mtn2git_empty
diff --git a/packages/fftw/fftw_3.1.2.bb b/packages/fftw/fftw_3.1.2.bb
new file mode 100644
index 0000000000..58603ef24c
--- /dev/null
+++ b/packages/fftw/fftw_3.1.2.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "FFTW"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+SRC_URI = "http://www.fftw.org/fftw-${PV}.tar.gz"
+
+EXTRA_OECONF = "--disable-fortran --enable-single --enable-shared"
+
+inherit autotools pkgconfig
+
+do_stage () {
+ autotools_stage_all
+}
+
diff --git a/packages/file/file-native_4.16.bb b/packages/file/file-native_4.16.bb
deleted file mode 100644
index 63554b01fb..0000000000
--- a/packages/file/file-native_4.16.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require file_${PV}.bb
-inherit native
-
-# avoid dependency loop
-DEPENDS = ""
-PR = "r1"
-
-SRC_URI += "file://native-fix.diff;patch=1"
diff --git a/packages/file/file-native_4.20.bb b/packages/file/file-native_4.20.bb
new file mode 100644
index 0000000000..b797cff8ad
--- /dev/null
+++ b/packages/file/file-native_4.20.bb
@@ -0,0 +1,8 @@
+require file_${PV}.bb
+inherit native
+
+# avoid dependency loop
+DEPENDS = ""
+PR = "r0"
+
+SRC_URI += "file://native-fix.diff;patch=1"
diff --git a/packages/file/file_4.16.bb b/packages/file/file_4.16.bb
deleted file mode 100644
index b2c2e6ed91..0000000000
--- a/packages/file/file_4.16.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "File attempts to classify files depending \
-on their contents and prints a description if a match is found."
-SECTION = "console/utils"
-LICENSE = "BSD-ADV"
-DEPENDS = "file-native"
-
-SRC_URI = "ftp://ftp.astron.com/pub/file/file-${PV}.tar.gz"
-S = "${WORKDIR}/file-${PV}"
-
-inherit autotools
-
-do_configure_prepend() {
- sed -i -e 's,$(top_builddir)/src/file,file,' ${S}/magic/Makefile.am
-}
-
-do_stage() {
- autotools_stage_all
-}
diff --git a/packages/file/file_4.20.bb b/packages/file/file_4.20.bb
new file mode 100644
index 0000000000..2b37d2515c
--- /dev/null
+++ b/packages/file/file_4.20.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "File attempts to classify files depending \
+on their contents and prints a description if a match is found."
+SECTION = "console/utils"
+LICENSE = "BSD-ADV"
+DEPENDS = "file-native"
+
+SRC_URI = "ftp://ftp.astron.com/pub/file/file-${PV}.tar.gz"
+S = "${WORKDIR}/file-${PV}"
+
+inherit autotools
+
+do_configure_prepend() {
+ sed -i -e 's,$(top_builddir)/src/file,file,' ${S}/magic/Makefile.am
+}
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/flac/flac_1.1.2.bb b/packages/flac/flac_1.1.2.bb
index cdd96bbf2d..85ffc9beb9 100644
--- a/packages/flac/flac_1.1.2.bb
+++ b/packages/flac/flac_1.1.2.bb
@@ -31,6 +31,9 @@ do_configure () {
install -d ${S}/m4
install -m 0644 ${WORKDIR}/xmms.m4 ${S}/m4/
autotools_do_configure
+ # removes '-read-only-relocs' which is enabled for PowerPC builds.
+ # It makes the build fail, other archs are not affected. Fixes #1775.
+ sed -i 's/-Wl,-read_only_relocs,warning//g' src/libFLAC/Makefile
}
do_stage () {
diff --git a/packages/fltk/fltk_1.1.4.bb b/packages/fltk/fltk_1.1.4.bb
index 08ce8080cb..66c4b214ec 100644
--- a/packages/fltk/fltk_1.1.4.bb
+++ b/packages/fltk/fltk_1.1.4.bb
@@ -3,9 +3,8 @@ HOMEPAGE = "http://www.fltk.org"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "LGPL"
-DEPENDS = "jpeg libpng zlib"
-
-PR = "FLDevice-r0"
+DEPENDS = "jpeg libpng mesa zlib"
+PR = "r1"
SRC_URI = "ftp://ftp-fourier.ujf-grenoble.fr/xcas/devel/sources/fltk-${PV}-device.tar.gz"
@@ -13,7 +12,9 @@ S = "${WORKDIR}/fltk-${PV}-Fl_Device"
inherit autotools binconfig lib_package
-EXTRA_OECONF = "--enable-shared --disable-gl --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR}"
+CXXFLAGS = ""
+
+EXTRA_OECONF = "--enable-shared --enable-gl --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR}"
do_configure() {
oe_runconf
diff --git a/packages/fltk/fltk_1.1.7.bb b/packages/fltk/fltk_1.1.7.bb
index 10b68ef017..3e095b45a3 100644
--- a/packages/fltk/fltk_1.1.7.bb
+++ b/packages/fltk/fltk_1.1.7.bb
@@ -3,7 +3,8 @@ HOMEPAGE = "http://www.fltk.org"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "LGPL"
-DEPENDS = "jpeg libpng zlib"
+DEPENDS = "zlib jpeg libpng libxext libxft"
+PR = "r2"
SRC_URI = "ftp://ftp.rz.tu-bs.de/pub/mirror/ftp.easysw.com/ftp/pub/fltk/${PV}/fltk-${PV}-source.tar.bz2"
@@ -11,26 +12,26 @@ S = "${WORKDIR}/fltk-${PV}"
inherit autotools binconfig
-EXTRA_OECONF = "--enable-shared --disable-gl --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR}"
+EXTRA_OECONF = "--enable-shared --enable-xdbe --enable-xft --enable-gl --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR}"
do_configure() {
oe_runconf
}
+do_stage() {
+ oe_runmake install prefix="${STAGING_DIR}" \
+ bindir="${STAGING_BINDIR}" \
+ includedir="${STAGING_INCDIR}" \
+ libdir="${STAGING_LIBDIR}" \
+ datadir="${STAGING_DATADIR}"
+}
+
do_install () {
- oe_runmake prefix="${D}${prefix}" \
+ oe_runmake install prefix="${D}${prefix}" \
bindir="${D}${bindir}" \
libdir="${D}${libdir}" \
includedir="${D}${includedir}" \
- install
-}
-
-do_stage() {
- oe_runmake install prefix=${STAGING_DIR} \
- bindir=${STAGING_BINDIR} \
- includedir=${STAGING_INCDIR} \
- libdir=${STAGING_LIBDIR} \
- datadir=${STAGING_DATADIR}
+ datadir="${STAGING_DATADIR}"
}
python populate_packages_prepend () {
@@ -39,5 +40,3 @@ python populate_packages_prepend () {
}
LEAD_SONAME = "libfltk.so"
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-dev += " ${bindir}/fltk-config"
diff --git a/packages/qmake/qmake2-native-2.00a/.mtn2git_empty b/packages/foonas-init/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qmake/qmake2-native-2.00a/.mtn2git_empty
+++ b/packages/foonas-init/.mtn2git_empty
diff --git a/packages/qte/qte-2.3.10/openmn/.mtn2git_empty b/packages/foonas-init/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qte/qte-2.3.10/openmn/.mtn2git_empty
+++ b/packages/foonas-init/files/.mtn2git_empty
diff --git a/packages/foonas-init/files/conffiles b/packages/foonas-init/files/conffiles
new file mode 100644
index 0000000000..e1408a3227
--- /dev/null
+++ b/packages/foonas-init/files/conffiles
@@ -0,0 +1,55 @@
+# conffiles
+# Known SlugOS configuration files. These files are preserved on
+# a flash upgrade. Other configuration files, found from:
+#
+# /usr/lib/ipkg/*.conffiles
+# /etc/*.conf
+#
+# are preserved too with an operation of 'diff' if they have been
+# changed since /etc/.configured was created.
+#
+# Lines starting with # are comments, other lines have
+# two fields:
+#
+# operation file
+#
+# The file must *NOT* have a leading /
+#
+# operation may be:
+# ignore Do not preserve this file
+# preserve Preserve this file unconditionally
+# diff Compare file with the new version, ask if different
+#
+preserve linuxrc
+preserve etc/.configured
+preserve etc/TZ
+diff etc/default/conffiles
+diff etc/default/devpts
+preserve etc/default/rcS
+preserve etc/default/sysconf
+diff etc/default/usbd
+preserve etc/defaultdomain
+preserve etc/dropbear/dropbear_dss_host_key
+preserve etc/dropbear/dropbear_rsa_host_key
+preserve etc/ssh/ssh_host_dsa_key
+preserve etc/ssh/ssh_host_dsa_key.pub
+preserve etc/ssh/ssh_host_rsa_key
+preserve etc/ssh/ssh_host_rsa_key.pub
+preserve etc/fstab
+preserve etc/group
+preserve etc/gshadow
+preserve etc/hostname
+preserve etc/hosts
+preserve etc/localtime
+ignore etc/modules
+ignore etc/modules.conf
+preserve etc/motd
+preserve etc/network/interfaces
+preserve etc/ntp.drift
+preserve etc/passwd
+preserve etc/profile
+preserve etc/resolv.conf
+preserve etc/shadow
+preserve etc/syslog.conf
+preserve etc/timezone
+preserve root/.ssh/authorized_keys
diff --git a/packages/foonas-init/files/functions b/packages/foonas-init/files/functions
new file mode 100644
index 0000000000..2108288ab5
--- /dev/null
+++ b/packages/foonas-init/files/functions
@@ -0,0 +1,413 @@
+#!/bin/sh
+# . this file to load the following utility functions
+#
+# hardware
+# the 'Hardware' string from cpuinfo, or, if not found
+# try a little harder with 'machine'
+hardware(){
+ local hdw
+ hdw=`sed -n 's!^Hardware *: !!p' /proc/cpuinfo`
+ test -n "$hdw" || {
+ hdw=`sed -n 's!^machine *: !!p' /proc/cpuinfo`
+ }
+ echo $hdw
+}
+#
+# machine
+# outputs an identifier of the current machine - i.e. the board
+# slugos is running on.
+machine(){
+ case "$(hardware)" in
+ *Coyote*) echo coyote;;
+ *IXDPG425*) echo ixdpg425;;
+ *WRV54G*) echo wrv54g;;
+ *IXDP425*) echo ixdp425;;
+ *IXDP465*) echo ixdp465;;
+ *IXCDP1100*) echo ixcdp1100*;;
+ *Avila*) echo avila;;
+ *Loft*) echo loft;;
+ *NAS?100d*) echo nas100d;;
+ *NSLU2*) echo nslu2;;
+ *StorCenter*) echo storcenter;;
+ *) echo unknown;;
+ esac
+}
+#
+# single_user_ok
+# if the machine is capable of single user interaction return
+# true, else return false. The result of this function is
+# preempted by setting SULOGIN to 'yes' or 'ok' in /etc/default/rcS
+single_user_ok() {
+ # list known good machines in the 'case'
+ test "$SULOGIN" = yes -o "$SULOGIN" = ok ||
+ case "$(machine)" in
+ ixdp*|avila|loft)
+ test "$SULOGIN" != never;;
+ *) return 1;;
+ esac
+}
+#
+# load_functions "source"
+# load the functions in '/sbin/source' - relies on /sbin/source being
+# a shell script and having support for this function.
+load_functions(){
+ test -n "$1" -a -x "/sbin/$1" && . "/sbin/$1" || {
+ echo "$0: /sbin/$1: script not found" >&2
+ return 1
+ }
+}
+#
+# mtdev "name"
+# return (output) the character device name for flash parition "name"
+# /proc/mtd has the general form:
+# dev: size erasesize name
+# mtd5: 00020000 00020000 "FIS directory"
+# use this rather than hard-wiring the device because the partition
+# table can change - looking in /proc/mtd is more reliable.
+mtdev(){
+ if test $(machine) = storcenter ; then
+ sed -n 's!^mtd\([0-9][0-9]*\):[^"]*"'"$1"'"$!/dev/mtd/\1!p' /proc/mtd
+ else
+ sed -n 's!^\(mtd[0-9][0-9]*\):[^"]*"'"$1"'"$!/dev/\1!p' /proc/mtd
+ fi
+}
+#
+# mtblockdev "name"
+# as mtdev but output the name of the block (not character) device
+mtblockdev(){
+ if test "$(machine)" = storcenter ; then
+ sed -n 's!^mtd\([0-9][0-9]*\):[^"]*"'"$1"'"$!/dev/mtdblock/\1!p' /proc/mtd
+ else
+ sed -n 's!^mtd\([0-9][0-9]*\):[^"]*"'"$1"'"$!/dev/mtdblock\1!p' /proc/mtd
+ fi
+}
+#
+# mtsize "name"
+# the size of the partition as a hexadecimal value (with 0x at the front)
+mtsize(){
+ sed -n 's!^mtd[0-9][0-9]*: \([^ ]*\)[^"]*"'"$1"'"$!0x\1!p' /proc/mtd
+}
+#
+# sysvalmatch "section" "name" 'pattern' "configuration file"
+# sysvalof "section" "name" "configuration file"
+# sysval "section" "name"
+# outputs the value of the SysConf variable 'name' from section 'section',
+# if there are multiple definitions only the last is output
+# NOTE: these functions should only be used internally, add entries to 'config'
+# below if necessary. This is because 'config' does the defaulting.
+sysvalmatch(){
+ sed -n '/^\['"$1"'\]$/,/^\[.*\]$/s/^'"$2"'=\('"$3"'\)$/\1/p' "$4" | sed -n '$p'
+}
+sysvalof(){
+ sysvalmatch "$1" "$2" '.*' "$3"
+}
+sysval(){
+ test -r "$config_root/etc/default/sysconf" &&
+ sysvalof "$1" "$2" "$config_root/etc/default/sysconf"
+}
+#
+# syssection "section"
+# outputs all the values from the given section changed to the format "name value"
+# (i.e. the '=' is dropped).
+syssection(){
+ test -r "$config_root/etc/default/sysconf" &&
+ sed -n '/^\['"$1"'\]$/,/^\[.*\]$/s/^\([^=]*\)=\(.*\)$/\1 \2/p' "$config_root/etc/default/sysconf"
+}
+#
+# config "value"
+# convenience callers for specific values to avoid mis-typing in scripts
+# NOTE: this function does the defaulting, 'sysval' does not!
+# config_root: if set this will override the root where config/sysval
+# looks for /etc/default/sysconf
+config(){
+ local mac
+ mac="$(test -r /proc/net/maclist &&
+ sed -n '/^[0-9A-Za-z][0-9A-Za-z]:[0-9A-Za-z][0-9A-Za-z]:[0-9A-Za-z][0-9A-Za-z]:[0-9A-Za-z][0-9A-Za-z]:[0-9A-Za-z][0-9A-Za-z]:[0-9A-Za-z][0-9A-Za-z]$/p' /proc/net/maclist |
+ sed -n 1p)"
+ #
+ case "$1" in
+ mac) test -n "$mac" && echo "$mac";;
+ host) if test -n "$(sysval network disk_server_name)"
+ then
+ sysval network disk_server_name
+ elif test -n "$(sysval network default_server_name)"
+ then
+ sysval network default_server_name
+ elif test -n "$mac"
+ then
+ echo "$mac" | sed -n 's/^\(..\):\(..\):\(..\):\(..\):\(..\):\(..\)$/slug\1\2\3\4\5\6/p'
+ else
+ # because we want the name to remain constant:
+ echo "turbostation"
+ fi;;
+ domain) sysval network w_d_name;;
+ iface) if test -n "$(sysval network lan_interface)"
+ then
+ sysval network lan_interface
+ else
+ echo eth0
+ fi;;
+ ip) if test -n "$(sysval network ip_addr)"
+ then
+ sysval network ip_addr
+ else
+ echo 192.168.1.16
+ fi;;
+ netmask)sysval network netmask;;
+ gateway)sysval network gateway;;
+ dns) sysval network dns_server1;;
+ dns2) sysval network dns_server2;;
+ dns3) sysval network dns_server3;;
+ boot) if test -n "$(sysval network bootproto)"
+ then
+ sysval network bootproto
+ else
+ echo dhcp
+ fi;;
+ valid) test -r "$config_root/etc/default/sysconf" -a -n "$mac";;
+ *) return 1;;
+ esac
+}
+#
+# checkif "iface"
+# Validate an interface name by making sure that it exists
+# in /proc/net/dev (and is not lo). The listing outputs the
+# interface followed by a :, the check function looks for
+# something of the form '$1[a-zA-Z0-9]*:' and outputs the
+# part preceding the ':'
+checkif(){
+ sed -n '/^[ ]*lo:/d;s/^[ ]*\('"$1"'[a-zA-Z0-9]*\):.*$/\1/p;tE;d;:E;q' /proc/net/dev
+}
+#
+# checkmount "mountpoint"
+# tests an already mounted mountpoint to see whether to attempt to
+# boot with this as root. Returns success if it appears ok.
+checkmount(){
+ # basic test for init (the kernel will try to load this)
+ # but require a shell in bin/sh too
+ test \( -d "$1/mnt" \) -a \
+ \( -x "$1/bin/sh" -o -h "$1/bin/sh" \) -a \
+ \( -x "$1/usr/sbin/chroot" -o -h "$1/usr/sbin/chroot" -o \
+ -x "$1/sbin/chroot" -o -h "$1/sbin/chroot" \) -a \
+ \( -x "$1/sbin/init" -o -h "$1/sbin/init" -o \
+ -x "$1/etc/init" -o -h "$1/etc/init" -o \
+ -x "$1/bin/init" -o -h "$1/bin/init" \)
+}
+#
+# swivel "new root" "old root"
+# NOTE: the arguments must be paths relative to /, bad things
+# will happen if the arguments themselves start with /
+# Pivot to a new root. This does all the fancy pivot_root stuff
+# including closing streams and does a umount /proc - it doesn't
+# matter if this fails (failure codes are ignored), but if /proc
+# was mounted it must be restored by the caller on return.
+# Normally this function never returns!
+# On return 0,1,2 are connected to /dev/console - this may not
+# have been true before!
+swivel(){
+ cd "$1"
+ exec <&- >&- 2>&-
+ # This is just-in-case the called mounted /proc and was
+ # unable to close it because of the streams
+ umount /proc 2>/dev/null
+ if pivot_root . "$2"
+ then
+ # everything must move out of the old root, this process
+ # is $2/bin/sh so it must die, IO is redirected
+ # just in case - typically it will be to a device so it
+ # won't hold the old root open.
+ # the exec here is the first point at which the old root
+ # is unused - before the exec regardless of the close of
+ # 0,1,2 above ash still has *this* shell script open!
+ # (it's on fd 10).
+ # init closes all file descriptors, there's no point
+ # supplying it with fds.
+ # NOTE: this used to use $2/usr/sbin/chroot, however on
+ # linux / is already . when the command is executed
+ # therefore it is essential to use the local (new root)
+ # chroot to ensure it gets the correct shared libraries.
+ if test -x usr/sbin/chroot -o -h usr/sbin/chroot
+ then
+ chroot=usr/sbin/chroot
+ elif test -x sbin/chroot -o -h sbin/chroot
+ then
+ chroot=sbin/chroot
+ else
+ chroot=chroot
+ fi
+ #
+ exec "$chroot" . bin/sh -c "\
+ test -x sbin/init && exec sbin/init
+ test -x etc/init && exec etc/init
+ test -x bin/init && exec bin/init
+ mount -t sysfs sysfs /mnt
+ umount /mnt
+ sync;sync;sync
+ exit 1"
+ fi
+ #
+ # recovery - must restore the old root
+ cd "$2"
+ sbin/pivot_root . "$1"
+ # cd is back to $1 - either pivot_root doesn't change it and the
+ # chroot above was not executed, or pivot_root does change it and
+ # has just changed it back!
+ exec <>/dev/console >&0 2>&0
+}
+#
+# ifup "interface"
+# bring that interface up with the configured ip and other
+# information
+ifup(){
+ local ip hostname router subnet iface HOSTNAME NETMASK BROADCAST
+
+ iface="$1"
+ ip="$(config ip)"
+ hostname="$(config host)"
+ router="$(config gateway)"
+ broadcast=
+
+ if test -n "$ip"
+ then
+ # only if an ip was specified
+ subnet="$(config netmask)"
+ else
+ ip=192.168.1.77
+ fi
+
+ # First try udhcpc - note that the /boot/udhcpc.script
+ # simply records the values returned and the udhcpc
+ # is not left running so this will only work for
+ # the lease length time!
+ ifconfig "$iface" up
+ if test "$(config boot)" != static
+ then
+ test -n "$hostname" && HOSTNAME="-H $hostname"
+ # The script writes the required shell variable assignments
+ # to file descriptor 9
+ eval $(udhcpc -i "$iface" -n -q -r "$ip" $HOSTNAME -s /boot/udhcpc.script 9>&1 >/dev/null)
+ fi
+
+ test -n "$broadcast" && BROADCAST="broadcast $broadcast"
+ test -n "$subnet" && NETMASK="netmask $subnet"
+
+ if ifconfig "$iface" "$ip" $NETMASK $BROADCAST
+ then
+ for route in $router
+ do
+ route add default gw "$route" dev "$iface"
+ done
+ return 0
+ else
+ ifconfig "$iface" down
+ return 1
+ fi
+}
+#
+# ifdown "interface"
+# take the interface down
+ifdown(){
+ ifconfig "$1" down
+}
+#
+# mountflash "flash device" "flash root directory" {mount options}
+# Finds and mounts the flash file system on the given directory
+mountflash(){
+ local ffsdev ffsdir
+
+ ffsdev="$1"
+ test -n "$ffsdev" -a -b "$ffsdev" || {
+ echo "$0: unable to find flash file system to copy ($ffsdev)" >&2
+ return 1
+ }
+ shift
+
+ ffsdir="$1"
+ test -n "$ffsdir" -a -d "$ffsdir" || {
+ echo "$0: mountflash $ffsdir: not a directory (internal error)" >&2
+ return 1
+ }
+ shift
+
+ mount -t jffs2 "$@" "$ffsdev" "$ffsdir" || {
+ echo "$0: $ffsdev: unable to mount flash file system on $ffsdir" >&2
+ return 1
+ }
+ return 0
+}
+#
+# umountflash [-r] "flash device"
+# unmount any instance of the given flash device, if -r is specified a mount on
+# root is an error, otherwise a mount on root is ignored (and remains).
+umountflash(){
+ local rootok ffsno ffsdev
+ rootok=1
+ case "$1" in
+ -r) rootok=
+ shift;;
+ esac
+ #
+ # The argument is ffsdev
+ ffsdev="$1"
+ ffsno="$(devio "<<$ffsdev" prd)"
+ test -n "$ffsno" -a "$ffsno" -ge 0 || {
+ echo "$0: $ffsdev: device number $ffsno is not valid, cannot continue." >&2
+ return 1
+ }
+ #
+ # Make sure that Flashdisk isn't mounted on /
+ if test -z "$rootok" -a "$(devio "<</etc/init.d/sysconfsetup" prd)" -eq "$ffsno"
+ then
+ echo "$0: $ffsdev is mounted on /, use turnup ram" >&2
+ return 1
+ fi
+ #
+ # The function is currently always used interactively, so output
+ echo "$0: umounting any existing mount of $ffsdev" >&2
+ #
+ # check each mount point, do this last first because otherwise nested
+ # mounts of ffsdev cannot be umounted.
+ ffs_umount() {
+ local device mp type options stuff
+
+ read device mp type options stuff
+ test -z "$device" && return 0
+
+ # handle following entries first
+ ffs_umount || return 1
+
+ # handle this entry, since this is currently only used for unmounting
+ # the flash root partition we know a file which must exist...
+ case "$mp/$type" in
+ //jffs2);; # skip /
+ */jffs2)test "$(devio "<<$mp/etc/init.d/sysconfsetup" prd 2>/dev/null)" -ne "$ffsno" ||
+ umount "$mp" || {
+ echo "$0: $mp: unable to umount $ffsdev" >&2
+ return 1
+ };;
+ esac
+
+ return 0
+ }
+ #
+ ffs_umount </proc/mounts || {
+ echo "$0: umount $ffsdev from all mount points then re-run $0" >&2
+ return 1
+ }
+
+ return 0
+}
+
+#
+# uuid_by_partition
+# output a list of partitions and their UUIDs
+uuid_by_partition() {
+ blkid -c /dev/null -s UUID | sed -n 's/^\([^:]*\): .*UUID="\([^"]*\)".*$/\1 \2/p'
+}
+
+#
+# partition_of uuid
+# return the partition corresponding to the UUID
+partition_of() {
+ sed -n 's/^\([^ ]*\) '"$1"'$/\1/p'
+}
diff --git a/packages/sqlite/sqlite3-3.3.7/.mtn2git_empty b/packages/foonas-init/files/initscripts/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/sqlite/sqlite3-3.3.7/.mtn2git_empty
+++ b/packages/foonas-init/files/initscripts/.mtn2git_empty
diff --git a/packages/foonas-init/files/links.conf b/packages/foonas-init/files/links.conf
new file mode 100644
index 0000000000..fdd1f3ce23
--- /dev/null
+++ b/packages/foonas-init/files/links.conf
@@ -0,0 +1,6 @@
+# This file does not exist. Please do not ask the debian maintainer about it.
+# You may use it to do strange and wonderful things, at your risk.
+
+# The new RTC class does not create the /dev/rtc symlink, and udev rules don't get run for built-in modules.
+# So it looks like we have to do this here for the moment, until someone comes up with a better idea ...
+L rtc rtc0
diff --git a/packages/foonas-init/files/modulefunctions b/packages/foonas-init/files/modulefunctions
new file mode 100644
index 0000000000..430e376ad8
--- /dev/null
+++ b/packages/foonas-init/files/modulefunctions
@@ -0,0 +1,39 @@
+#!/bin/sh
+# "." this file, then call the appropriate routines to load modules
+# you might need. This is run from /etc/rcS.d/S21loadmodules.sh
+# at boot time. Possible examples are commented out, none of which
+# are needed on openprotium since they are already in the kernel.
+
+. /etc/default/functions
+
+
+loaddiskmods(){
+ :
+# modprobe scsi_mod
+# modprobe sd_mod
+# modprobe usbcore
+# case "$(machine)" in
+# nslu2)
+# modprobe ehci-hcd
+# modprobe ohci-hcd
+# ;;
+# esac
+# modprobe usb-storage
+}
+
+loadnetmods(){
+ :
+# modprobe af_packet
+# case "$(machine)" in
+# ixdp425|nslu2|nas100d)
+# modprobe ixp4xx_mac
+# ;;
+# esac
+}
+
+loadmiscmods(){
+ :
+# modprobe ixp4xx_rng
+# modprobe i2c_dev
+}
+
diff --git a/packages/foonas-init/files/reflash b/packages/foonas-init/files/reflash
new file mode 100644
index 0000000000..f2947822f6
--- /dev/null
+++ b/packages/foonas-init/files/reflash
@@ -0,0 +1,163 @@
+#!/bin/sh
+#
+# Open Protium Reflash. This script will take a firmware image consisting
+# of a compressed linux kernel image, concatentated with a jffs2 root
+# filesystem image. The kernel MTD device is discovered by locating
+# the MTD partition with the tag "kernel" and the filesystem MTD device
+# is dicovered by locating the MTD partition with the tag "filesystem."
+# There is no TOC inside the firmware images so there is no direct way
+# to validate that the sizes of the parts in the firmware match the
+# existing MTD partitions. So there could be a mismatch. However, a
+# a mismatch size will be detect as this script mounts the newly laid
+# done filesystem, a mismatch guarantees this to fail. That being said
+# the script does validate the total size to prevent overwriting
+# uboot. Furthermore the script makes sure the fsdev is not in use and
+# that the various images are block aligned.
+
+flimg=$1
+if [ -z "$flimg" ]; then
+ echo "Usage: reflash <image file>"
+ exit 1
+fi
+
+if [ \! -f $flimg -o \! -r $flimg ]; then
+ #
+ # not a file or not readable
+ #
+ echo "error: Image file [$flimg] not available"
+ exit 1
+fi
+
+dmesg | grep StorCenter >/dev/null 2>&1
+if [ $? -ne 0 ]; then
+ exit 0
+fi
+
+blksize=512
+mtd=/proc/mtd
+mtab=/proc/mounts
+mntdir=/tmp/fs.$$
+
+ktag=kernel
+fstag=filesystem
+
+kdev=` grep $ktag $mtd | awk -F: '{print $1}' | sed -e 's?mtd?/dev/mtdblock/?g'`
+fsdev=`grep $fstag $mtd | awk -F: '{print $1}' | sed -e 's?mtd?/dev/mtdblock/?g'`
+
+flsize=`ls -l $flimg | awk '{print $5}'`
+ksize=`grep $ktag $mtd | awk '{print "0x" $2}'`
+fssize=`grep $fstag $mtd | awk '{print "0x" $2}'`
+
+#
+# Size comes out of dc in exp notation and test wont accept a hex number
+# so dumo it in hex then use awk to convert to decimal
+#
+size=0x`dc 16 o $ksize $fssize + p`
+size=`echo $size | awk '{printf ("%d",$1)}'`
+
+#
+# Make sure we are block aligned
+#
+kblks=`dc $ksize $blksize / p`
+r=`dc $ksize $blksize % p`
+if [ $r -ne 0 ]; then
+ echo "error: Kernel partition is not block aligned."
+ exit 1
+fi
+
+#
+# Make sure we are block aligned
+#
+fsblks=`dc $fssize $blksize / p`
+r=`dc $fssize $blksize % p`
+if [ $r -ne 0 ]; then
+ echo "error: Filesystem partition is not block aligned."
+ exit 1
+fi
+
+#
+# Check to see that we have enough room
+#
+if [ $flsize -gt $size ]; then
+ echo "error: Image size is bigger then available space."
+ exit 1
+fi
+
+#
+# Is fsdev mounted?
+#
+grep $fsdev $mtab > /dev/null 2>&1
+if [ $? -eq 0 ]; then
+ echo "error: $fsdev mounted"
+ exit 1
+fi
+
+#
+# If root is a jffs2 then close enough, im out
+#
+grep jffs2 $mtab > /dev/null 2>&1
+if [ $? -eq 0 ]; then
+ echo "error: $fsdev may be mounted"
+ exit 1
+fi
+
+
+#
+# Mount fsdev and save fsdev/linuxrc
+#
+mkdir $mntdir /tmp/$$
+mount -t jffs2 $fsdev $mntdir
+if [ $? -ne 0 ]; then
+ echo "error: Unable to mount $fsdev"
+ exit 1
+fi
+echo "Preserving /linuxrc in /tmp/$$"
+cp $mntdir/linuxrc* /tmp/$$
+umount $mntdir
+
+echo "Image:"
+echo " Name : $flimg"
+echo " Length: $flsize"
+echo
+echo "Kernel:"
+echo " Device: $kdev"
+echo " Length: $ksize"
+echo " Blocks: $kblks"
+echo
+echo "Filesystem:"
+echo " Device: $fsdev"
+echo " Length: $fssize"
+echo " Blocks: $fsblks"
+echo
+echo 'Ready to flash, Continue? (yes/no)'
+read continue
+if [ "z$continue" != "zyes" ]; then
+ rm -rf $mntdir /tmp/$$
+ exit 0
+fi
+
+#
+# Lets do the flash
+#
+echo Preserving existing flash in: $flimg.sav.$$
+dd of=$flimg.sav.$$ if=$kdev bs=$blksize count=$kblks
+dd of=$flimg.sav.$$ if=$fsdev bs=$blksize count=$fsblks seek=$kblks
+
+echo Flashing new firmware....
+dd if=$flimg of=$kdev bs=$blksize count=$kblks
+dd if=$flimg of=$fsdev bs=$blksize count=$fsblks skip=$kblks
+sync
+sleep 5
+
+#
+# Mount fsdev and restore fsdev/linuxrc
+#
+mount -t jffs2 $fsdev $mntdir
+if [ $? -ne 0 ]; then
+ echo "error: Unable to re-mount $fsdev"
+ exit 1
+fi
+echo "Restoring /linuxrc"
+cp /tmp/$$/linuxrc* $mntdir
+umount $mntdir
+rm -rf $mntdir /tmp/$$
diff --git a/packages/foonas-init/files/sysconf b/packages/foonas-init/files/sysconf
new file mode 100644
index 0000000000..8866c076b8
--- /dev/null
+++ b/packages/foonas-init/files/sysconf
@@ -0,0 +1,793 @@
+#!/bin/sh
+# sysconf
+#
+# utility to manipulate system configuration information help
+# in a RedBoot SysConf partition
+#
+# load the utility functions (unless this is being called just
+# to load these functions!)
+test "$1" != sysconf && . /etc/default/functions
+
+# NSLU2 flash layout is non-standard.
+case "$(machine)" in
+nslu2)
+ kpart="Kernel"
+ syspart="SysConf"
+ ffspart="Flashdisk";;
+*)
+ kpart="kernel"
+ syspart="sysconfig"
+ ffspart="filesystem";;
+esac
+#
+# sysconf_valid
+# return true if the SysConf partition exists and seems to be
+# potentially valid (it starts with a reasonable length).
+sysconf_valid(){
+ local sysdev
+ sysdev="$(mtblockdev $syspart)"
+ test -n "$sysdev" -a -b "$sysdev" &&
+ devio "<<$sysdev" '!! b.10>s32768<&!'
+}
+
+#
+# sysconf_read [prefix]
+# read the $syspart partition (if present) writing the result into
+# /etc/default/sysconf, if the result is empty it will be removed.
+sysconf_read(){
+ local sysdev sedcmd mac config_root
+ config_root="$1"
+ rm -f /tmp/sysconf.new
+ sysdev="$(mtblockdev $syspart)"
+ if sysconf_valid
+ then
+ # Read the defined part of $syspart into /etc/default/sysconf.
+ # $syspart has lines of two forms:
+ #
+ # [section]
+ # name=value
+ #
+ # In practice $syspart also contains other stuff, use the command:
+ #
+ # devio '<</dev/mtd1;cpb'
+ #
+ # to examine the current settings. The badly formatted stuff
+ # is removed (to be exact, the sed script selects only lines
+ # which match one of the two above). The lan interface, which
+ # on NSLU2 defaults to ixp0, is changed to the correct value for
+ # slugos, eth0. The bootproto, which LinkSys sets to static in
+ # manufacturing, is reset to dhcp if the IP is still the
+ # original (192.168.1.77)
+ sedcmd='/^\[[^][]*\]$/p;'
+ # only do the ip_addr and lan_interface fixups on NSLU2
+ if test "$(machine)" = nslu2
+ then
+ sedcmd="$sedcmd"'
+ s/^lan_interface=ixp0$/lan_interface=eth0/;
+ /^ip_addr=192\.168\.1\.77$/,/^bootproto/s/^bootproto=static$/bootproto=dhcp/;'
+ fi
+ # always fix up the hardware addr if it is present
+ mac="$(config mac)"
+ if test -n "$mac"
+ then
+ sedcmd="$sedcmd"'
+ s/^hw_addr=.*$/hw_addr='"$mac"'/;'
+ fi
+ # and only print lines of the correct form
+ sedcmd="$sedcmd"'
+ /^[-a-zA-Z0-9_][-a-zA-Z0-9_]*=/p'
+
+ devio "<<$sysdev" cpb fb1,10 | sed -n "$sedcmd" >/tmp/sysconf.new
+ fi
+ #
+ # test the result - sysconf must be non-empty
+ if test -s /tmp/sysconf.new
+ then
+ mv /tmp/sysconf.new "$config_root/etc/default/sysconf"
+ else
+ rm -f /tmp/sysconf.new
+ return 1
+ fi
+}
+
+#
+# sysconf_default [prefix]
+# Provde a default /etc/default/sysconf when there is no $syspart partition,
+# or when it is invalid, this function will read from an existing sysconf,
+# copying the values into the new one.
+# sysconf_line tag config-tag
+# write an appropriate line if the config value is non-empty
+sysconf_line(){
+ config "$2" | {
+ local value
+ read value
+ test -n "$value" && echo "$1"="$value"
+ }
+}
+#
+sysconf_default(){
+ local config_root
+ config_root="$1"
+ { echo '[network]'
+ sysconf_line hw_addr mac
+ sysconf_line disk_server_name host
+ sysconf_line w_d_name domain
+ sysconf_line lan_interface iface
+ sysconf_line ip_addr ip
+ sysconf_line netmask netmask
+ sysconf_line gateway gateway
+ sysconf_line dns_server1 dns
+ sysconf_line dns_server2 dns2
+ sysconf_line dns_server3 dns3
+ sysconf_line bootproto boot
+ } >/tmp/sysconf.new
+ mv /tmp/sysconf.new "$config_root/etc/default/sysconf"
+}
+
+#
+# sysconf_reload [prefix]
+# read the values from /etc/default/sysconf and use these values to set
+# up the following system files:
+#
+# /etc/hostname
+# /etc/defaultdomain
+# /etc/resolv.conf
+# /etc/network/interfaces
+# /etc/motd
+#
+sysconf_reload(){
+ local config_root host domain iface boot ip netmask gateway ifname iftype
+ config_root="$1"
+ host="$(config host)"
+ test -n "$host" && echo "$host" >"$config_root/etc/hostname"
+ domain="$(config domain)"
+ test -n "$domain" && echo "$domain" >"$config_root/etc/defaultdomain"
+ #
+ # The DNS server information gives up to three nameservers,
+ # but this currently only binds in the first.
+ {
+ test -n "$domain" && echo "search $domain"
+ test -n "$(config dns)" && echo "nameserver $(config dns)"
+ test -n "$(config dns2)" && echo "nameserver $(config dns2)"
+ test -n "$(config dns3)" && echo "nameserver $(config dns3)"
+ } >"$config_root/etc/resolv.conf"
+ #
+ # Ethernet information. This goes into /etc/network/interfaces,
+ # however this is only used for static setup (and this is not
+ # the default). With dhcp the slugos udhcp script,
+ # /etc/udhcpc.d/50default, loads the values from sysconf.
+ iface="$(config iface)"
+ boot="$(config boot)"
+ # Only dhcp and static are supported at present - bootp
+ # support requires installation of appropriate packages
+ # dhcp is the fail-safe
+ case "$boot" in
+ dhcp|static) ;;
+ *) boot=dhcp;;
+ esac
+ #
+ ip="$(config ip)"
+ netmask="$(config netmask)"
+ gateway="$(config gateway)"
+ {
+ echo "# /etc/network/interfaces"
+ echo "# configuration file for ifup(8), ifdown(8)"
+ echo "#"
+ echo "# The loopback interface"
+ echo "auto lo"
+ echo "iface lo inet loopback"
+ echo "#"
+ echo "# The interface used by default during boot"
+ echo "auto $iface"
+ echo "# Automatically generated from /etc/default/sysconf"
+ echo "# address, netmask and gateway are ignored for 'dhcp'"
+ echo "# but required for 'static'"
+ echo "iface $iface inet $boot"
+ # The following are ignored for DHCP but are harmless
+ test -n "$ip" && echo " address $ip"
+ test -n "$netmask" && echo " netmask $netmask"
+ test -n "$gateway" && echo " gateway $gateway"
+ #
+ # Now read all the other ARPHRD_ETHER (type=1) interfaces
+ # and add an entry for each.
+ for ifname in $(test -d /sys/class/net && ls /sys/class/net)
+ do
+ if test -r "/sys/class/net/$ifname/type" -a "$ifname" != "$iface"
+ then
+ read iftype <"/sys/class/net/$ifname/type"
+ case "$iftype" in
+ 1) echo "#"
+ echo "# /sys/class/net/$ifname:"
+ echo "auto $ifname"
+ echo "iface $ifname inet dhcp";;
+ esac
+ fi
+ done
+ } >"$config_root/etc/network/interfaces"
+ #
+ # Finally rewrite /etc/motd
+ { echo "Host name: $host"
+ echo "Domain name: $domain"
+ echo "Host MAC: $(config mac)"
+ echo "Network boot method: $boot"
+ case "$boot" in
+ static) echo "Host IP address: $ip";;
+ esac
+ echo "Use 'turnup init' to reset the configuration"
+ echo "Use 'turnup preserve' to save the configuration permanently"
+ echo "Use 'turnup restore' to restore a previously saved configuration"
+ echo "Use 'turnup disk|nfs -i <device> options to initialise a non-flash root"
+ echo "Use 'turnup help' for more information"
+ } >"$config_root/etc/motd"
+}
+
+#
+# sysconf_save_conffiles <flash-directory> <dest> <list>
+# preserve the configuration files in a directory or in a CPIO archive
+# (which is *not* compressed). If <dest> is a directory the files are
+# copied, otherwise a CPIO archive is made with that name. <list> is
+# the listing file giving the preserved files and the processing option.
+sysconf_save_conffiles(){
+ local ffsdir dest list file
+ ffsdir="$1"
+ saved="$2"
+ list="$3"
+ test -n "$ffsdir" -a -r "$ffsdir/etc/default/conffiles" -a -n "$saved" -a -n "$list" || {
+ echo "sysconf_save_conffiles: invalid arguments: '$*'" >&2
+ echo " usage sysconf_save_conffiles <flash-directory> <dest> <list>" >&2
+ return 1
+ }
+ #
+ ( cd "$ffsdir"
+ find etc/*.conf $(sed 's!^/!!' usr/lib/ipkg/info/*.conffiles) ! -type d -newer etc/.configured -print |
+ sed 's/^/diff /'
+ exec sed 's/#.*$//;/^[ ]*$/d' etc/default/conffiles
+ ) | sed 's!^/*!!' |
+ awk '{ op=$1; $1=""; file[$0]=op }
+ END{ for (f in file) if (file[f] != "ignore") print file[f] f }' |
+ while read op file
+ do
+ if test -e "$ffsdir/$file"
+ then
+ echo "$op $file" >&3
+ echo "$file"
+ fi
+ done 3>"$list" | (
+ cd "$ffsdir"
+ if test -d "$saved"
+ then
+ exec cpio -p -d -m -u "$saved"
+ else
+ exec cpio -o -H crc >"$saved"
+ fi
+ )
+}
+
+#
+# sysconf_verify file
+# this is called with the name of a 'diff' file which is, indeed,
+# different and with all the std streams connected to the tty. It
+# returns a status code to say whether (0) or not (1) to copy the
+# file over.
+#
+# globals: the following must be defined in the calling context!
+# saved: the directory containing the unpacked saved files
+# ffsdir: the flash directory to which the files are being restored (/)
+#
+sysconf_verify_help() {
+ echo "Please specify how to handle this file or link, the options are as follows,"
+ echo "two character abbreviations may be used:"
+ echo
+ echo " keep: retain the old file, overwrite the new flash image file"
+ echo " upgrade: retain the new file, the old (saved) file is not used"
+ echo " diff: display the differences between the old and the new using diff -u"
+ echo " shell: temporarily start an interactive shell (sh -i), exit to continue"
+ echo " skip: ignore this file for the moment. The file is left in the directory"
+ echo " $saved and many be handled after this script has completed"
+}
+#
+sysconf_verify() {
+ local command file
+
+ # return 1 here causes the file not to be overwritten,
+ # control should never get here!
+ test -n "$sysconf_noninteractive" && {
+ echo "$0: $*: changed file cannot be handled non-interactively" >&2
+ return 1
+ }
+
+ file="$1"
+ echo "$0: $file: configuration file changed."
+ sysconf_verify_help "$file"
+ while :
+ do
+ echo -n "option: "
+ read command
+ case "$command" in
+ ke*) return 0;;
+ up*) rm "$saved/$file"
+ return 1;;
+ di*) echo "DIFF OLD($saved) NEW($ffsdir)"
+ diff -u "$saved/$file" "$ffsdir/$file";;
+ sh*) PS1="$file: " sh -i;;
+ sk*) return 1;;
+ *) sysconf_verify_help "$file";;
+ esac
+ done
+}
+# the same, but for a link
+sysconf_verify_link() {
+ local command link
+
+ # return 1 here causes the file not to be overwritten,
+ # control should never get here!
+ test -n "$sysconf_noninteractive" && {
+ echo "$0: $*: changed link cannot be handled non-interactively" >&2
+ return 1
+ }
+
+ link="$1"
+ echo "reflash: $link: configuration link changed."
+ sysconf_verify_help "$link"
+ while :
+ do
+ echo -n "option: "
+ read command
+ case "$command" in
+ ke*) return 0;;
+ up*) rm "$saved/$link"
+ return 1;;
+ di*) echo "DIFF:"
+ echo "OLD($saved): $link -> $(readlink "$saved/$link")"
+ echo "NEW($ffsdir): $link -> $(readlink "$ffsdir/$link")";;
+ sh*) PS1="$link: " sh -i;;
+ sk*) return 1;;
+ *) sysconf_verify_help "$link";;
+ esac
+ done
+}
+
+#
+# sysconf_restore_conffiles <flash-directory> <source-dir> <restore>
+# restore the configuration files from a directory. 'source-dir'
+# If <source> is a directory of files from sysconf_save_conffiles. The
+# list of files restored is written to the third argument (restore),
+# but is not required (/dev/null would be ok).
+#
+# the list of files to restore is read from stdin, along with the
+# processing option for each file (the format is as produced by
+# sysconf_save_conffiles in the 'list' output).
+sysconf_restore_conffiles(){
+ local ffsdir saved restore
+ # these are the globals used by the above function
+ ffsdir="$1"
+ saved="$2"
+ restore="$3"
+ test -n "$ffsdir" -a -r "$ffsdir/etc/default/conffiles" -a -d "$saved" -a -n "$restore" || {
+ echo "restore_conffiles: invalid arguments: '$*'" >&2
+ echo " usage sysconf_restore_conffiles <flash-directory> <source-dir> <list>" >&2
+ return 1
+ }
+ #
+ # read the list and process each given file
+ while read op file
+ do
+ # handle .configured specially (to preserve the original datestamp)
+ if test "$file" = "etc/.configured"
+ then
+ # this should definately not fail because of the test above!
+ if cp -a "$saved/$file" "$ffsdir/$file"
+ then
+ echo "$file" >&3
+ else
+ echo "sysconf_restore_conffiles: $file: timestamp copy failed (ignored)" >&2
+ fi
+ elif test -h "$saved/file" -o -h "$ffsdir/$file"
+ then
+ # new or old symbolic link
+ if test -h "$saved/$file" -a -h "$ffsdir/$file" &&
+ test "$(readlink "$saved/$file")" = "$(readlink "$ffsdir/$file")"
+ then
+ # no change
+ echo "$file" >&3
+ else
+ # assume a change regardless
+ case "$op" in
+ preserve)
+ echo "$file"
+ echo "$file" >&3;;
+ diff) # need user input
+ if sysconf_verify_link "$file" <>/dev/tty >&0 2>&0
+ then
+ echo "$file"
+ echo "$file" >&3
+ fi;;
+ esac
+ fi
+ else
+ # only overwrite if necessary
+ if test -e "$ffsdir/$file" && cmp -s "$saved/$file" "$ffsdir/$file"
+ then
+ # do not overwrite
+ echo "$file" >&3
+ elif test ! -e "$ffsdir/$file"
+ then
+ # always preserve
+ echo "$file"
+ echo "$file" >&3
+ else
+ case "$op" in
+ preserve)
+ echo "$file"
+ echo "$file" >&3;;
+ diff) # the files are different, get user input
+ if sysconf_verify "$file" <>/dev/tty >&0 2>&0
+ then
+ echo "$file"
+ echo "$file" >&3
+ fi;;
+ esac
+ fi
+ fi
+ done 3>"$restore" | (cd "$saved"; exec cpio -p -d -u "$ffsdir")
+}
+
+#
+# sysconf_test_restore <flash-directory> <source-dir>
+# return true only if the restore does not need to do an interactive
+# compare
+sysconf_test_restore(){
+ local ffsdir saved
+ # these are the globals used by the above function
+ ffsdir="$1"
+ saved="$2"
+ # this is an error case, but return 0 so that the error is
+ # detected later
+ test -n "$ffsdir" -a -r "$ffsdir/etc/default/conffiles" -a -d "$saved" ||
+ return 0
+ #
+ # read the list and check each diff file (this is just a copy of the
+ # logic above with all the work removed!)
+ while read op file
+ do
+ # handle .configured specially (to preserve the original datestamp)
+ if test "$op" != diff
+ then
+ : # no diff required
+ elif test "$file" = "etc/.configured"
+ then
+ : # special handling
+ elif test -h "$saved/file" -o -h "$ffsdir/$file"
+ then
+ # new or old symbolic link
+ if test -h "$saved/$file" -a -h "$ffsdir/$file" &&
+ test "$(readlink "$saved/$file")" = "$(readlink "$ffsdir/$file")"
+ then
+ : # no change
+ else
+ # assume a change regardless
+ return 1
+ fi
+ else
+ # only overwrite if necessary
+ if test -e "$ffsdir/$file" && cmp -s "$saved/$file" "$ffsdir/$file"
+ then
+ : # do not overwrite
+ elif test ! -e "$ffsdir/$file"
+ then
+ : # always preserve
+ else
+ # a change
+ return 1
+ fi
+ fi
+ done
+
+ return 0
+}
+
+#
+# sysconf_save
+# save the system configuration to $syspart - $syspart must exist and
+# there must be a writeable device for it.
+sysconf_save(){
+ local sysdev ffsdev ffsdir saved list size status
+ ffsdev="$(mtblockdev $ffspart)"
+ sysdev="$(mtblockdev $syspart)"
+ status=1
+ if test -n "$sysdev" -a -b "$sysdev" -a -n "$ffsdev" -a -b "$ffsdev"
+ then
+ # this will succeed silently if the flash device is on /
+ umountflash "$ffsdev" || exit 1
+ #
+ # Everything is umounted, now remount on a temporary directory.
+ ffsdir="/tmp/flashdisk.$$"
+ mkdir "$ffsdir" || {
+ echo "$0: $ffsdir: failed to create temporary directory" >&2
+ exit 1
+ }
+ #
+ mountflash "$ffsdev" "$ffsdir" -o ro || {
+ rmdir "$ffsdir"
+ exit 1
+ }
+ # need temporary files for the cpio output and the listing
+ saved=/tmp/cpio.$$
+ list=/tmp/preserve.$$
+ rm -rf "$saved" "$list"
+ sysconf_save_conffiles "$ffsdir" "$saved" "$list" || {
+ echo "$0: $saved: archive of saved configuration files failed" >&2
+ rm -rf "$saved"
+ rm "$list"
+ umount "$ffsdir" && rmdir "$ffsdir" ||
+ echo "$0: $ffsdir: temporary directory cleanup failed" >&2
+ return 1
+ }
+ # ignore the error in this case:
+ umount "$ffsdir" && rmdir "$ffsdir" ||
+ echo "$0: $ffsdir: temporary directory cleanup failed" >&2
+ #
+ # we now have:
+ # /etc/default/sysconf the basic config
+ # /tmp/preserve.$$ the list of saved files
+ # /tmp/cpio.$$ the CPIO archive of those files
+ #
+ # make one big file with the sysconf data followed by the
+ # compressed archive in /tmp/sysconf.$$
+ { { cat /etc/default/sysconf
+ echo '[preserve]'
+ } | sed -n '1,/^\[preserve\]^/p'
+ while read op file
+ do
+ echo "$op"="$file"
+ done <"$list"
+ } >/tmp/sysconf.$$
+ size="$(devio "<</tmp/sysconf.$$" 'pr$')"
+ gzip -9 <"$saved" >>/tmp/sysconf.$$
+ #
+ # more cleanup, then try to write the new sysconf to $syspart
+ # the format is a 4 byte big-endian length then the text data
+ # if the data won't fit exit with error code 7
+ rm "$saved" "$list"
+ devio -p "<</tmp/sysconf.$$" ">>$sysdev" '
+ $( $4+ # >
+ !! 7
+ $) 0
+ wb '"$size"',4
+ cp $'
+ case $? in
+ 0) echo " done" >&2
+ status=0;;
+ 1) echo " failed" >&2
+ echo " $syspart could not be written (no changes made)" >&2;;
+ 3) echo " failed" >&2
+ echo " $syspart partially written, you may want to reset it" >&2;;
+ 7) echo " failed" >&2
+ echo " $syspart is too small: $size bytes required" >&2
+ echo " No change made" >&2;;
+ *) echo " failed" >&2
+ echo " Internal error writing $syspart" >&2;;
+ esac
+ #
+ rm -f /tmp/sysconf.$$
+ else
+ echo "sysconf save: $syspart or $ffspart partition not found" >&2
+ echo " A RedBoot partition named '$syspart' must exist in the system" >&2
+ echo " flash memory for this command to work, and there must be a" >&2
+ echo " block device to access this partition (udev will normally" >&2
+ echo " create this automatically. The flash partition contents must" >&2
+ echo " also be accessible in a partition called '$ffspart'" >&2
+ echo
+ echo " To create the $syspart partition use the 'fis create' command" >&2
+ echo " in the RedBoot boot loader, it is sufficient to make the" >&2
+ echo " partition one erase block in size unless you have substantially" >&2
+ echo " increased the size of the files listed in /etc/default/conffiles" >&2
+ fi
+
+ return $status
+}
+
+#
+# sysconf_restore [auto]
+# restore previously saved configuration information from $syspart
+sysconf_restore_error(){
+ local root
+ root="$1"
+ shift
+ # -------------------------------------------------------------------------------
+ { echo " WARNING: saved configuration files not restored"
+ test -n "$1" && echo "$*"
+ echo
+ echo "The configuration of this machine has been reinitialised using the values"
+ echo "from /etc/default/sysconf, however configuration files saved in the $syspart"
+ echo "partition have not been restored."
+ echo
+ echo "You can restore these files by correcting any reported errors then running"
+ echo
+ echo " sysconf restore"
+ echo
+ echo "from the command line. This will completely reinitialise the configuration"
+ echo "using the information in the $syspart partition."
+ } >"$root/etc/motd"
+ cat "$root/etc/motd" >&2
+}
+#
+sysconf_restore(){
+ local sysdev ffsdev ffsdir saved restore size status sysconf_noninteractive config_root
+
+ # if set this means 'do no diff' - this avoids the code above which
+ # would open /dev/tty and therefore allows this stuff to be done from
+ # an init script
+ sysconf_noninteractive=
+ test "$1" = auto && sysconf_noninteractive=1
+
+ ffsdev="$(mtblockdev $ffspart)"
+ sysdev="$(mtblockdev $syspart)"
+ status=1
+ if test -n "$sysdev" -a -b "$sysdev" -a -n "$ffsdev" -a -b "$ffsdev" &&
+ sysconf_valid
+ then
+ # this will succeed silently if the flash device is on /
+ umountflash "$ffsdev" || exit 1
+ #
+ # Everything is umounted, now remount on a temporary directory.
+ ffsdir="/tmp/flashdisk.$$"
+ config_root="$ffsdir"
+ mkdir "$ffsdir" || {
+ echo "$0: $ffsdir: failed to create temporary directory" >&2
+ exit 1
+ }
+ #
+ mountflash "$ffsdev" "$ffsdir" || {
+ rmdir "$ffsdir"
+ exit 1
+ }
+ #
+ # first restore the $syspart section
+ sysconf_read "$ffsdir" || sysconf_default "$ffsdir"
+ #
+ # now use this to regenerate the system files
+ sysconf_reload "$ffsdir"
+ #
+ # now examine the [preserve] section, if it is there restore
+ # it if possible.
+ if test -n "$(syssection preserve)"
+ then
+ # 'saved' is a directory, 'restore' is a file (which is
+ # used to detect unrestored files). The directory needs
+ # to be populated with files.
+ saved=/tmp/cpio.$$
+ restore=/tmp/restore.$$
+ rm -rf "$saved" "$restore"
+ #
+ mkdir "$saved" || {
+ sysconf_restore_error "$ffsdir" "$saved: failed to create temporary directory"
+ return 1
+ }
+ #
+ # the CPIO archive is gzip compressed after the text part
+ # of sysconf, gzip will handle the LZ stream termination
+ # correctly (and break the pipe) so we don't need to know
+ # the real length of the data
+ devio "<<$sysdev" '<=b4+.' 'cp $s-' | gunzip | (
+ cd "$saved"
+ exec cpio -i -d -m -u
+ ) || {
+ rm -rf "$saved"
+ sysconf_restore_error "$ffsdir" "$saved: cpio -i failed"
+ return 1
+ }
+ # either there must be no 'diff' files or it must
+ # be possible to interact with a real user.
+ if test -z "$sysconf_noninteractive" ||
+ syssection preserve | sysconf_test_restore "$ffsdir" "$saved"
+ then
+ #
+ # remove the 'init' motd from sysconf_reload
+ rm "$ffsdir/etc/motd"
+ #
+ # now restore from the directory, using the information in
+ # the preserve section, if this fails in a non-interactive
+ # setting the system might not reboot
+ syssection preserve |
+ sysconf_restore_conffiles "$ffsdir" "$saved" "$restore" || {
+ # there is a chance of the user cleaning this up
+#------------------------------------------------------------------------------
+ sysconf_restore_error "$ffsdir" \
+"$0: $saved: restore of saved configuration files failed.
+ The flash file system is mounted on $ffsdir.
+ The saved files are in $saved and the list of files selected for
+ restore is in $restore.
+ You should restore any required configuration from $saved, then umount
+ $ffsdir and reboot."
+ # this prevents cleanup/umount
+ return 1
+ }
+ #
+ # remove the copied files (i.e. the ones which were preserved)
+ ( cd "$saved"
+ exec rm $(cat "$restore")
+ )
+ rm "$restore"
+ #
+ # clean up, files left in $saved need to be handled by the user
+ files="$(find "$saved" ! -type d -print)"
+ if test -n "$files"
+ then
+#------------------------------------------------------------------------------
+ sysconf_restore_error "$ffsdir" \
+"$0: some saved configuration files have not been handled:
+
+$files
+
+These files can be examined in $saved and restored to
+$ffsdir if required. The saved files are in a temporary
+directory and will not be retained across a reboot - copy then elsewhere if
+you are unsure whether they are needed."
+ return 1
+ fi
+ #
+ # so this is safe now (no files, links etc)
+ rm -rf "$saved"
+ else
+ rm -rf "$saved"
+ # non-interactive and some changed diff files
+ sysconf_restore_error "$ffsdir" \
+"$0: some of the saved configuration files must be
+examined before restoration"
+ # but continue to the umount
+ fi
+ fi
+ #
+ # ignore the error in this case:
+ umount "$ffsdir" && rmdir "$ffsdir" ||
+ echo "$0: $ffsdir: temporary directory cleanup failed" >&2
+ status=0
+ else
+ echo "sysconf restore: $syspart or $ffspart partition not found" >&2
+ echo " You must have used 'sysconf save' to save configuration data" >&2
+ echo " into the $syspart partition before using this command. The command" >&2
+ echo " will restore the configuration data to the flash root partition" >&2
+ echo " named '$ffspart' - this must also be accessible." >&2
+ fi
+
+ return $status
+}
+
+#
+# sysconf_help
+# help text
+sysconf_help(){
+ # -------------------------------------------------------------------------------
+ echo "sysconf: usage: sysconf read|default|reload|save|restore" >&2
+ echo " read: the current $syspart partition is read into /etc/default/sysconf" >&2
+ echo " default: a default /etc/default/sysconf is created" >&2
+ echo " reload: system configuration files are recreated from /etc/default/sysconf" >&2
+ echo " save: /etc/default/sysconf and the files listed in /etc/default/conffiles" >&2
+ echo " are written to the $syspart partition" >&2
+ echo " restore: the configuration information in the $syspart partition saved by" >&2
+ echo " 'sysconf save' is restored" >&2
+}
+
+#
+# the real commands
+#if [ "$(machine)" = "storcenter" ]; then
+# echo "sysconf not (yet) supported on storcenter"
+# exit 0
+#fi
+sysconf_command="$1"
+test $# -gt 0 && shift
+case "$sysconf_command" in
+read) sysconf_read "$@";;
+default)sysconf_default "$@";;
+reload) sysconf_reload "$@";;
+save) sysconf_save "$@";;
+restore)sysconf_restore "$@";;
+valid) sysconf_valid "$@";;
+
+sysconf)# just load the functions
+ ;;
+
+*) # help text
+ sysconf_help "$@";;
+esac
diff --git a/packages/foonas-init/files/turnup b/packages/foonas-init/files/turnup
new file mode 100644
index 0000000000..73befd26c9
--- /dev/null
+++ b/packages/foonas-init/files/turnup
@@ -0,0 +1,861 @@
+#!/bin/sh
+# turnup
+# See the help block at the end for documentation.
+#
+. /etc/default/functions
+
+#
+# configuration
+# The following variables control which directories in /var end
+# up on the rootfs and which end up in a temporary file system.
+INRAM_MEMSTICK="/var/cache /var/lock /var/log /var/run /var/tmp /var/lib/ipkg"
+INRAM_NFS="/var/cache /var/lock /var/run /var/tmp"
+INRAM_DISK=""
+
+#
+# force: override certain checks
+force=
+
+#
+# pfile: the uuid/partition file
+pfile=/etc/uuid_by_partition
+
+#
+# fstype new
+# The type of the file system mounted on "new" Outputs the last
+# piece of information found, which should be the one for the
+# currently visible mount!
+fstype() {
+ local cwd dev mp type options pass freq result
+ cwd="$(cd "$1"; /bin/pwd)"
+ result=
+ while read dev mp type options pass freq
+ do
+ case "$mp" in
+ "$cwd") result="$type";;
+ esac
+ done </proc/mounts
+ echo "$result"
+}
+
+#
+# fsoptions arguments
+# Collapses the mount (-o) options into a single list which is
+# printed on stdout. Accepts an arbitrary list of options and
+# just joins them together.
+fsoptions() {
+ local options
+ options=
+ while test $# -gt 1
+ do
+ case "$1" in
+ -t) shift;;
+ -o) if test -n "$2"
+ then
+ if test -n "$options"
+ then
+ options="$options,$2"
+ else
+ options="$2"
+ fi
+ fi
+ shift;;
+ esac
+ shift
+ done
+ if test -n "$options"
+ then
+ echo "$options"
+ else
+ echo defaults
+ fi
+}
+
+#
+# get_flash <directory> {mount options}
+# mount the flash device, writeable, on the given directory
+get_flash() {
+ local ffsdir ffsdev
+
+ ffsdir="$1"
+ shift
+ test -n "$ffsdir" -a -d "$ffsdir" || {
+ echo "$0: $ffsdir: internal error, flash mount point not a directory" >&2
+ return 1
+ }
+
+ case "$(machine)" in
+ nslu2) ffsdev="$(mtblockdev Flashdisk)";;
+ *) ffsdev="$(mtblockdev filesystem)";;
+ esac
+ umountflash "$ffsdev" &&
+ mountflash "$ffsdev" "$ffsdir" "$@"
+}
+
+#
+# check_rootfs [-i] <root fs directory>
+# Make sure the candidate rootfs is empty
+# Environment: rootdev=device or NFS root path
+check_rootfs() {
+ local fcount
+
+ case "$1" in
+ -i) shift
+ case "$force" in
+ -f) return 0;;
+ esac
+
+ fcount="$(find "$1" ! -type d -print | wc -l)"
+ test "$fcount" -eq 0 && return 0
+
+ echo "turnup: $rootdev: partition contains existing files, specify -f to overwrite" >&2
+ return 1;;
+ *) checkmount "$1" && return 0
+
+ echo "turnup: $rootdev: partition does not seem to be a valid root partition" >&2
+ echo " The partition must contain a full operating system. To ensure that" >&2
+ echo " this is the case it is checked for the following, all of which must" >&2
+ echo " exist for the bootstrap to work:" >&2
+ echo
+ echo " 1) A directory /mnt." >&2
+ echo " 2) A command line interpreter program in /bin/sh." >&2
+ echo " 3) The program chroot in /sbin or /usr/sbin." >&2
+ echo " 4) The program init in /sbin, /etc or /bin." >&2
+ echo
+ echo " One or more of these items is missing. Mount $rootdev on /mnt" >&2
+ echo " and examine its contents. You can use turnup disk|nfs -i -f" >&2
+ echo " to copy this operating system onto the disk, but it may overwrite" >&2
+ echo " files on the disk." >&2
+ return 1;;
+ esac
+}
+
+#
+# copy_rootfs old new
+# Make a copy of the given root file system, copying only the
+# directories needed. The root must be the flash file system
+copy_rootfs() {
+ local old new
+ old="$1"
+ new="$2"
+ test -d "$old" -a -d "$new" || {
+ echo "turnup: rootfs: copy $old $new: not a directory" >&2
+ return 1
+ }
+ #
+ # There are no problem file names in the flash file system, so
+ # it is possible to use -print, not -print0. The following
+ # files and directories are not copied:
+ #
+ # /dev/*
+ # /boot, /boot/*
+ # /linuxrc*
+ # /var/*
+ echo "turnup: copying root file system" >&2
+ ( cd "$1"
+ find . -mount -print |
+ sed '\@^./dev/@d;\@^./boot/@d;\@^./boot$@d;\@^./linuxrc@d;\@^./var/@d' |
+ cpio -p -d -m -u "$2"
+ ) || {
+ echo "turnup: rootfs: cpio $old $new failed" >&2
+ return 1
+ }
+ echo "done" >&2
+}
+
+#
+# setup_dev new device_table
+# In flash file systems /dev is in ramfs, in disk systems /dev
+# can be populated permanently. This is done by creating a
+# single entry '.noram' in /dev - the devices init script will
+# then populate the directory without overmounting it. The
+# devices in the passed in device table are also created, but
+# note that this is insufficient, /etc/init.d/devices must
+# also run.
+setup_dev() {
+ test -n "$1" -a -d "$1"/dev -a -r "$2" || {
+ echo "turnup: setup_dev($1,$2): expected a directory and a file" >&2
+ return 1
+ }
+ echo "turnup: initialising dev file system" >&2
+ # init tries to open the following devices:
+ # /dev/console
+ # /dev/tty0
+ # /dev/null
+ # syslog, and maybe other things, only work if fd 1 is valid, therefore
+ # we must create these devices here...
+ makedevs --root="$1" --devtable="$2"
+ :>"$1"/dev/.noram
+ return 0
+}
+
+#
+# setup_bootdev new device_table
+# As above but actually uses the supplied device table - this is possible if
+# the table is just used for boot because the extra setup is not required.
+setup_bootdev() {
+ test -n "$1" -a -d "$1"/dev -a -r "$2" || {
+ echo "turnup: setup_bootdev($1,$2): expected a directory and a file" >&2
+ return 1
+ }
+ # NOTE: this fails silently with 0 return code(!) when a directory
+ # does not exist yet things are created within it.
+ makedevs -r "$1" -D "$2"
+}
+
+#
+# setup_var new type
+# Populates /var.
+# Removes the /var tmpfs entry from /etc/fstab.
+# Creates links from /var into /media/ram for NFS and Memstick.
+setup_var() {
+ local ram_targets directory
+
+ test -n "$1" -a -d "$1"/var || {
+ echo "turnup: setup_var($1,$2): expected a directory" >&2
+ return 1
+ }
+ case "$2" in
+ disk|nfs|memstick);;
+ *) echo "turnup: setup_var($1,$2): expected 'disk', 'nfs' or 'memstick'" >&2
+ return 1;;
+ esac
+ #
+ # populate /var, there is a shell script to do this, but it uses
+ # absolute path names
+ chroot "$1" /bin/busybox sh /etc/init.d/populate-volatile.sh || {
+ echo "turnup: /var: could not populate directory" >&2
+ return 1
+ }
+
+ case "$2" in
+ disk) ram_targets="$INRAM_DISK";;
+ nfs) ram_targets="$INRAM_NFS";;
+ memstick)
+ ram_targets="$INRAM_MEMSTICK";;
+ esac
+
+ for directory in $ram_targets
+ do
+ rm -rf "$1/$directory"
+ ln -s "/media/ram/$directory" "$1/$directory"
+ done
+ # the startup link is left for the moment, this seems safer
+ #rm "$1"/etc/rc?.d/[KS]??populate-var.sh
+ # remove the /var tmpfs entry from the new /etc/fstab
+ sed -i '\@[ ]/var[ ][ ]*tmpfs[ ]@d' "$1"/etc/fstab
+ echo "turnup: tmpfs will no longer be mounted on /var" >&2
+ #
+ # Previous versions of turnup removed populate-var.sh from the
+ # startup links, this one doesn't, so /var can be made back into
+ # a tmpfs just by a change to /etc/fstab.
+ return 0
+}
+
+#
+# setup_syslog new
+# Moves the syslog to a file - appropriate for disk and nfs types, not
+# otherwise.
+setup_syslog() {
+ test -n "$1" -a -d "$1"/etc || {
+ echo "turnup: setup_syslog($1): expected a directory" >&2
+ return 1
+ }
+ #
+ # if the syslog is to the buffer redirect it to a file
+ if egrep -q '^DESTINATION="buffer"' "$1"/etc/syslog.conf
+ then
+ if cp "$1"/etc/syslog.conf "$1"/etc/syslog.conf.sav
+ then
+ # the busybox syslog will fail with ROTATESIZE and ROTATEGENS
+ sed -i 's!DESTINATION="buffer"!DESTINATION="file"!
+ /^ROTATESIZE=/d
+ /^ROTATEGENS=/d' "$1"/etc/syslog.conf
+ echo "turnup: /etc/syslog.conf: changed to file buffering" >&2
+ echo " Old (buffer) version in /etc/syslog.conf.sav" >&2
+ echo " Log messages will be in /var/log/messages" >&2
+ else
+ echo "turnup: /etc/syslog.conf: failed to make a copy" >&2
+ echo " syslog will log to a buffer" >&2
+ fi
+ fi
+ return 0
+}
+
+#
+# setup_rootfs type new device_table
+# Populates the /dev and /var directories, alters the startup to
+# not mount or populate them further. Does the right thing according
+# to the given $type
+setup_rootfs() {
+ local type new table
+ type="$1"
+ new="$2"
+ table="$3"
+
+ test -n "$new" -a -d "$new" -a -f "$table" || {
+ echo "turnup: setup_rootfs($type,$new,$table): expected a directory and a file" >&2
+ return 1
+ }
+
+ case "$type" in
+ flash) return 0;;
+ disk) setup_dev "$new" "$table" &&
+ setup_var "$new" "$type" &&
+ setup_syslog "$new";;
+ memstick)
+ setup_bootdev "$new" "$table" &&
+ setup_var "$new" "$type" ;;
+ nfs) setup_dev "$new" "$table" &&
+ setup_var "$new" "$type" &&
+ setup_syslog "$new";;
+ *) echo "turnup: setup_rootfs: $type: unknown rootfs type" >&2
+ return 1;;
+ esac
+ # return code of last setup function
+}
+
+#
+# setup_fstab new fsdev fstype fsoptions
+# Alters the /etc/fstab entry for / to refer to the correct device and
+# have the correct type and options. Essential for checkroot to remount
+# / with the correct options. Writes the initial uuid file.
+# bad, since sed won't fail even if it changes nothing.
+setup_fstab() {
+ sed -i '\@^[^ ]*[ ][ ]*/[ ]@s@^.*$@'"$2 / $3 $4 1 1"'@' "$1"/etc/fstab
+ egrep -q "^$2 / $3 $4 1 1\$" "$1"/etc/fstab || {
+ echo "turnup: /etc/fstab: root(/) entry not changed" >&2
+ echo " you probably need to check the options in /etc/fstab" >&2
+ echo " to ensure that the root partition is mounted correctly" >&2
+ return 1
+ }
+ #
+ # build $pfile
+ uuid_by_partition >"$1""$pfile" ||
+ echo "turnup: $pfile: blkid failed (ignored)" >&2
+ return 0
+}
+
+#
+# boot_rootfs <boot type> <flash file system> <sleep time> (<device> <uuid>|<nfsroot>) [options]
+# Change the flash partition (not the current root!) to boot off
+# the new root file system
+boot_rootfs() {
+ local type ffs sleep device uuid opt
+
+ type="$1"
+ ffs="$2"
+ sleep="$3"
+ device="$4"
+ uuid=
+
+ # test this first as the test does not depend on the correctness
+ # of the other arguments
+ test -n "$ffs" -a -d "$ffs" || {
+ echo "turnup: boot_rootfs($type, $ffs, $device): expected directory" >&2
+ return 1
+ }
+ test -x "$ffs"/boot/"$type" || {
+ echo "turnup: boot_rootfs($type, $ffs, $device): invalid boot type $type" >&2
+ return 1
+ }
+ shift
+ shift
+
+ case "$type" in
+ disk) test -n "$device" -a -b "$device" || {
+ echo "turnup: boot_rootfs($ffs, $type, $device): expected block device" >&2
+ return 1
+ }
+ uuid="$3"
+ shift 3;;
+ nfs) shift 2;;
+ flash) ;;
+ ram) ;;
+ *) echo "turnup: boot_rootfs($type, $ffs, $device): unknown type" >&2
+ return 1;;
+ esac
+
+ #
+ # The /linuxrc records the correct options to mount the device,
+ # since we have already mounted if correctly with these options
+ # we can be sure (maybe) that the boot will work. If not /boot/disk
+ # falls back to flash.
+ #
+ # This modifies the boot process, until this point no harm has been
+ # done to the system, but at this point the boot rootfs will change
+ rm -f "$ffs"/linuxrc.new || {
+ echo "turnup: boot_rootfs: failed to remove $ffs/linuxrc.new" >&2
+ return 1
+ }
+ case "$type" in
+ flash) ln -s "boot/flash" "$ffs"/linuxrc.new || {
+ echo "turnup: boot_rootfs: failed to create $ffs/linuxrc.new" >&2
+ return 1
+ };;
+ ram) { echo '#!/bin/sh'
+ echo 'rm -f /linuxrc.new'
+ echo 'ln -s boot/flash /linuxrc.new'
+ echo 'mv /linuxrc.new /linuxrc'
+ echo 'exec /boot/ram /dev/ram0'
+ echo 'exec /boot/flash'
+ } >"$ffs"/linuxrc.new &&
+ chmod 744 "$ffs"/linuxrc.new || {
+ echo "turnup: boot_rootfs: failed to write $ffs/linuxrc.new" >&2
+ return 1
+ };;
+ *) { echo '#!/bin/sh'
+ test "$sleep" -gt 0 && echo -n "sleep='$sleep' "
+ test -n "$uuid" && echo -n "UUID='$uuid' "
+ echo -n "exec '/boot/$type' '$device'"
+ for opt in "$@"
+ do
+ echo -n " '$opt'"
+ done
+ echo
+ echo 'exec /boot/flash'
+ } >"$ffs"/linuxrc.new &&
+ chmod 744 "$ffs"/linuxrc.new || {
+ echo "turnup: boot_rootfs: failed to write $ffs/linuxrc.new" >&2
+ return 1
+ };;
+ esac
+ rm -f "$ffs"/linuxrc.sav || {
+ echo "turnup: boot_rootfs: failed to remove $ffs/linuxrc.sav" >&2
+ return 1
+ }
+ ln "$ffs"/linuxrc "$ffs"/linuxrc.sav || {
+ echo "turnup: boot_rootfs: failed to save /linuxrc.sav" >&2
+ return 1
+ }
+ mv -f "$ffs"/linuxrc.new "$ffs"/linuxrc || {
+ echo "turnup: boot_rootfs: failed to install new /linuxrc" >&2
+ return 1
+ }
+ return 0
+}
+
+#
+# disk [-m] [-i] [-s<time>] <device> {options}
+# Carefully copy the flash file system to the named device.
+disk() {
+ local setup_type sleep init device uuid new ffs fst fso
+
+ setup_type=disk
+ sleep=0
+ init=
+ while test $# -gt 0
+ do
+ case "$1" in
+ -f) force="$1"
+ shift;;
+ -m) setup_type=memstick
+ shift;;
+ -i) init="$1"
+ shift;;
+ -s*) sleep="${1#-s}"
+ sleep="${sleep:-10}"
+ shift;;
+ *) break;;
+ esac
+ done
+
+ device="$1"
+ test -n "$device" -a -b "$device" || {
+ echo "turnup disk: $device: block device required" >&2
+ return 1
+ }
+ shift
+
+ # find the uuid if available
+ uuid="$(blkid -c /dev/null -s UUID -o value "$device")"
+ # XXX nasty hack - using the UUID fails on storcenter, for now,
+ # probably due to various devfs problems. fix later.
+ if [ $(machine) = storcenter ]; then
+ uuid=
+ fi
+
+ # make temporary directories for the mount points
+ new="/tmp/rootfs.$$"
+ ffs="/tmp/flashdisk.$$"
+ mkdir "$new" "$ffs" || {
+ echo "turnup: disk: failed to create temporary directories" >&2
+ return 1
+ }
+
+ # make sure we can get to the flash file system first
+ get_flash "$ffs" || {
+ rmdir "$new" "$ffs"
+ return 1
+ }
+
+ # Now mount the device with the given options, note that specifying
+ # read only is *not* an option, this is important because the boot/disk
+ # script needs a rw file system
+ status=1
+ fst=
+ fso="$(fsoptions "$@")"
+ if if test -n "$uuid"
+ then
+ mount "$@" -U "$uuid" "$new"
+ else
+ mount "$@" "$device" "$new"
+ fi
+ then
+ fst="$(fstype "$new")"
+ umount "$new" ||
+ echo "turnup disk: $device($new): umount does not seem to work" >&2
+ fi
+
+ if test -n "$fst" &&
+ if test -n "$uuid"
+ then
+ mount -t "$fst" -o "$fso" -U "$uuid" "$new"
+ else
+ mount -t "$fst" -o "$fso" "$device" "$new"
+ fi
+ then
+ if rootdev="$device" check_rootfs $init "$new" && {
+ test -z "$init" || {
+ copy_rootfs "$ffs" "$new" &&
+ setup_rootfs "$setup_type" "$new" "$ffs"/etc/device_table
+ }
+ }
+ then
+ setup_fstab "$new" "$device" "$fst" "$fso"
+ status=0
+ fi
+
+ # clean up the disk. It is worrying if this umount fails!
+ umount "$new" || test "$force" = "-f" || {
+ echo "turnup disk: $device: umount failed" >&2
+ echo " you must unmount this device cleanly yourself, then use" >&2
+ if test -z "$init"
+ then
+ echo " turnup with the -f option to boot from the device" >&2
+ else
+ echo " turnup without the -i option to boot from the device" >&2
+ fi
+ status=1
+ }
+
+ # if everything went ok boot from this disk
+ if test $status -eq 0
+ then
+ # memsticks boot like disks, so ignore the -m
+ boot_rootfs disk "$ffs" "$sleep" "$device" "$uuid" -t "$fst" -o "$fso"
+ fi
+ else
+ echo "turnup disk: $device($*): unable to mount device on $new" >&2
+ # If it worked first time
+ if test -n "$fst"
+ then
+ echo " options used: -t $fst -o $fso [error in this script]" >&2
+ test -n "$uuid" &&
+ echo " uuid: $uuid (passed with -U)" >&2
+ fi
+ fi
+
+ # clean up the flash file system
+ umount "$ffs"
+ rmdir "$new" "$ffs"
+ return $status
+}
+
+#
+# boot_reset <type>
+# Resets the boot type to flash or ram, as appropriate
+boot_reset() {
+ local ffs typ status
+
+ case "$1" in
+ flash|ram)type="$1"
+ shift;;
+ *) echo "turnup: boot_reset($1): invalid type" >&2
+ return 1;;
+ esac
+
+ ffs="/tmp/flashdisk.$$"
+ mkdir "$ffs" || {
+ echo "turnup: $1: failed to create temporary directory" >&2
+ return 1
+ }
+
+ get_flash "$ffs" || {
+ rmdir "$ffs"
+ return 1
+ }
+
+ # now try to set the /linuxrc appropriately
+ boot_rootfs "$type" "$ffs"
+ status=$?
+
+ # clean up
+ umount "$ffs"
+ rmdir "$ffs"
+ return $status
+}
+
+#
+# nfs [-i] <root partition> {options}
+# Copy the flash file system to the given NFS root partition.
+nfs() {
+ local init nfsroot new ffs
+
+ init=
+ while test $# -gt 0
+ do
+ case "$1" in
+ -i) init="$1"
+ shift;;
+ -f) force="$1"
+ shift;;
+ *) break;;
+ esac
+ done
+
+ nfsroot="$1"
+ test -n "$nfsroot" || {
+ echo "turnup nfs: $nfsroot: NFS root file system required" >&2
+ return 1
+ }
+ shift
+
+ # make temporary directories for the mount points
+ new="/tmp/rootfs.$$"
+ ffs="/tmp/flashdisk.$$"
+ mkdir "$new" "$ffs" || {
+ echo "turnup nfs: failed to create temporary directories" >&2
+ return 1
+ }
+
+ # make sure we can get to the flash file system first
+ get_flash "$ffs" || {
+ rmdir "$new" "$ffs"
+ return 1
+ }
+
+ # Now mount the device with the given options, note that specifying
+ # read only is *not* an option, this is important because the boot/disk
+ # script needs a rw file system
+ status=1
+ fst=
+ # These settings for for NFS, something better will probably have to
+ # be done to support other network file systems.
+ nfsopt="nolock,noatime,hard,intr,rsize=1024,wsize=1024"
+ fso="$(fsoptions -o "$nfsopt" "$@")"
+ if mount -o "$nfsopt" "$@" "$nfsroot" "$new"
+ then
+ fst="$(fstype "$new")"
+ umount "$new" ||
+ echo "turnup nfs: $nfsroot($new): umount does not seem to work" >&2
+ fi
+
+ if test -n "$fst" && mount -t "$fst" -o "$fso" "$nfsroot" "$new"
+ then
+ if :>"$new"/ttt && test -O "$new"/ttt && rm "$new"/ttt
+ then
+ if rootdev="$nfsroot" check_rootfs $init "$new" && {
+ test -z "$init" || {
+ copy_rootfs "$ffs" "$new" &&
+ setup_rootfs nfs "$new" "$ffs"/etc/device_table
+ }
+ }
+ then
+ setup_fstab "$new" "$nfsroot" "$fst" "$fso"
+ status=0
+ fi
+ else
+ echo "turnup nfs: $nfsroot: partition must be exported no_root_squash" >&2
+ fi
+
+ # clean up the disk. It is worrying if this umount fails!
+ umount "$new" || test "$force" = "-f" || {
+ echo "turnup nfs: $nfsroot: umount failed" >&2
+ if test $status -eq 0
+ then
+ echo " you must unmount this partition cleanly yourself, then use" >&2
+ if test -z "$init"
+ then
+ echo " turnup with the -f option to boot from the NFS root" >&2
+ else
+ echo " turnup without the -i option to boot from the NFS root" >&2
+ fi
+ status=1
+ fi
+ }
+
+ # if everything went ok boot from this disk
+ if test $status -eq 0
+ then
+ # the options used are exactly those which worked before.
+ boot_rootfs nfs "$ffs" 0 "$nfsroot" -t nfs -o "$fso"
+ fi
+ else
+ echo "turnup nfs: $nfsroot($*): unable to mount device on $new" >&2
+ # If it worked first time
+ if test -n "$fst"
+ then
+ echo " options obtained: -t $fst -o $fso" >&2
+ fi
+ fi
+
+ # clean up the flash file system
+ umount "$ffs"
+ rmdir "$new" "$ffs"
+ return $status
+}
+
+#
+# read_one 'prompt' 'group' 'name'
+# read a single value
+read_one() {
+ local n o
+ o="$(sysval "$2" "$3")"
+ echo -n "$1 [$o]: " >/dev/tty
+ read n </dev/tty
+ test -z "$n" && n="$o"
+ eval "$3='$n'"
+}
+
+#
+# init_network
+# Change the network initialisation
+init_network() {
+ # fix the root password
+ echo "Please enter a new password for 'root'." >/dev/tty
+ echo "The password must be non-empty for ssh login to succeed!" >/dev/tty
+ passwd
+ # now the network configuration
+ read_one "Host name" network disk_server_name
+ read_one "Domain name" network w_d_name
+ read_one "Boot protocol (dhcp|static)" network bootproto
+ case "$bootproto" in
+ static) read_one "IP address" network ip_addr
+ read_one "IP netmask" network netmask
+ read_one "IP gateway" network gateway
+ read_one "First DNS server" network dns_server1
+ read_one "Second DNS server" network dns_server2
+ read_one "Third DNS server" network dns_server3
+ echo "$ip_addr $disk_server_name" >> /etc/hosts
+ ;;
+ dhcp) sed -i -e "s/localhost\$/localhost $disk_server_name/" /etc/hosts
+ ;;
+ *) bootproto=dhcp;;
+ esac
+ #
+ # The other stuff which cannot be changed
+ hw_addr="$(config mac)"
+ lan_interface="$(config iface)"
+ #
+ # Write this out to a new sysconf
+ { echo "[network]"
+ echo "hw_addr=$hw_addr"
+ echo "lan_interface=$lan_interface"
+ test -n "$disk_server_name" && echo "disk_server_name=$disk_server_name"
+ test -n "$w_d_name" && echo "w_d_name=$w_d_name"
+ echo "bootproto=$bootproto"
+ case "$bootproto" in
+ static) echo "ip_addr=$ip_addr"
+ test -n "$netmask" && echo "netmask=$netmask"
+ test -n "$gateway" && echo "gateway=$gateway"
+ test -n "$dns_server1" && echo "dns_server1=$dns_server1"
+ test -n "$dns_server2" && echo "dns_server2=$dns_server2"
+ test -n "$dns_server3" && echo "dns_server3=$dns_server3"
+ ;;
+ esac
+ } >/etc/default/sysconf
+ #
+ # And reload the result
+ sysconf reload
+ #
+ # The remove the spurious 'init' motd
+ rm /etc/motd
+}
+
+#
+# Basic command switch (this should be the only thing in this
+# script which actually does anything!)
+case "$1" in
+init) shift
+ if init_network "$@"
+ then
+ echo "turnup init: you must reboot for the changes to take effect" >&2
+ echo " You may want to run 'turnup preserve' to save these settings," >&2
+ echo " after making any additional configuration changes which you" >&2
+ echo " require." >&2
+ else
+ exit 1
+ fi;;
+disk) shift
+ disk "$@";;
+memstick)
+ shift
+ disk -m "$@" -o noatime;;
+nfs) shift
+ nfs "$@";;
+flash) boot_reset flash;;
+ram) boot_reset ram;;
+preserve)
+ shift
+ sysconf save "$@";;
+restore)
+ shift
+ sysconf restore "$@";;
+*) echo "\
+usage: turnup command [options]
+ commands:
+ help
+ output this help
+ init
+ correct errors in network information
+ initialise network information when DHCP is not available
+ change network information
+ disk [-i] [-s<seconds>] <device>|<uuid> [mount options]
+ With -i make <device> a bootable file system then (with or
+ without -i) arrange for the next reboot to use that device.
+ The device must already be formatted as a file system, with
+ -i it must be completely empty, without it must contain an
+ apparently bootable file system. -s (for example -s5)
+ specifies a delay in seconds to wait at boot time before
+ mounting the device.
+ memstick [-i] <device>|<uuid> [mount options]
+ Behaves as disk however options appropriate to a flash memory
+ stick are automatically added
+ nfs [-i] <nfs mount path> [mount options]
+ <nfs mount path> must be a mountable NFS file system. With
+ -i the partition must be empty and is initialised with a
+ bootable file system. Without -i the partition must already
+ contain a bootable file system. In either case the NFS
+ partition must be available to be mounted without root id
+ sqashing (i.e. root must be root) and it will be selected
+ as the root file system for subsequent reboots.
+ A default set of -o options are provided, additional options
+ may be given on the command line (multiple -o options will
+ be combined into a single -o).
+ flash
+ Revert to booting from the flash disk on next reboot.
+ ram
+ Boot (once) into a ramdisk, subsequent boots will be to
+ the flash file system.
+ preserve
+ Save the system configuration to the SysConf partition, you
+ will need to create the SysConf partition from the boot loader
+ before using this if SysConf does not already exist. This
+ just runs 'sysconf save'.
+ restore
+ Restore a previously saved system configuration. This just
+ runs 'sysconf restore'.
+ disk formatting:
+ The argument to 'nfs' or 'disk' must be an empty partition
+ of sufficient size to hold the root file system (at least
+ 16MByte but more is recommended to allow package installation).
+ An appropriate ext3 partition can be made using the command:
+
+ mke2fs -j <device> # for example: /dev/sda1
+
+ An appropriate NFS partition can be emptied using 'rm', but
+ must be set up (exported) on the NFS server." >&2
+ exit 0;;
+esac
+# Exit with return code from command.
diff --git a/packages/foonas-init/foonas-init_0.10.bb b/packages/foonas-init/foonas-init_0.10.bb
new file mode 100644
index 0000000000..c8a1b05232
--- /dev/null
+++ b/packages/foonas-init/foonas-init_0.10.bb
@@ -0,0 +1,122 @@
+DESCRIPTION = "FooNAS initial boot and config"
+SECTION = "base"
+PRIORITY = "required"
+LICENSE = "GPL"
+DEPENDS = "base-files devio"
+RDEPENDS = "busybox devio"
+PR = "r1"
+
+SRC_URI = "file://initscripts/fixfstab \
+ file://initscripts/syslog.buffer \
+ file://initscripts/syslog.file \
+ file://initscripts/syslog.network \
+ file://initscripts/rmrecovery \
+ file://initscripts/sysconfsetup \
+ file://initscripts/umountinitrd.sh \
+ file://initscripts/loadmodules.sh \
+ file://functions \
+ file://modulefunctions \
+ file://conffiles \
+ file://sysconf \
+ file://turnup \
+ file://reflash \
+ file://links.conf \
+ "
+
+SBINPROGS = ""
+USRSBINPROGS = ""
+CPROGS = "${USRSBINPROGS} ${SBINPROGS}"
+SCRIPTS = "turnup reflash sysconf"
+INITSCRIPTS = "syslog.buffer syslog.file syslog.network \
+ rmrecovery sysconfsetup umountinitrd.sh \
+ fixfstab loadmodules.sh"
+
+# This just makes things easier...
+
+S="${WORKDIR}"
+
+do_compile() {
+ set -ex
+ for p in ${CPROGS}
+ do
+ ${CC} ${CFLAGS} -o $p $p.c
+ done
+ set +ex
+}
+
+do_install() {
+ set -ex
+
+ # Directories
+ install -d ${D}${sysconfdir} \
+ ${D}${sysconfdir}/default \
+ ${D}${sysconfdir}/init.d \
+ ${D}${sysconfdir}/modutils \
+ ${D}${sysconfdir}/udev \
+ ${D}${sbindir} \
+ ${D}${base_sbindir} \
+ ${D}/initrd \
+
+ # C programs
+ for p in ${USRSBINPROGS}
+ do
+ install -m 0755 $p ${D}${sbindir}/$p
+ done
+ for p in ${SBINPROGS}
+ do
+ install -m 0755 $p ${D}${base_sbindir}/$p
+ done
+
+ # Shell scripts
+ for p in ${SCRIPTS}
+ do
+ install -m 0755 $p ${D}${base_sbindir}/$p
+ done
+
+ #
+ # Init scripts
+ install -m 0644 functions ${D}${sysconfdir}/default
+ install -m 0644 modulefunctions ${D}${sysconfdir}/default
+ for s in ${INITSCRIPTS}
+ do
+ install -m 0755 initscripts/$s ${D}${sysconfdir}/init.d/
+ done
+
+ #
+ # Udev configuration files
+ install -m 0644 links.conf ${D}${sysconfdir}/udev
+
+ # Configuration files
+ install -m 0644 conffiles ${D}${sysconfdir}/default
+
+ set +ex
+}
+
+# NB: do not use '08' (etc) for the first argument after start/stop,
+# the value is interpreted as an octal number if there is a leading
+# zero.
+pkg_postinst_foonas-init() {
+ opt=
+ test -n "$D" && opt="-r $D"
+ update-rc.d $opt hwclock.sh start 8 S . start 45 0 6 .
+ update-rc.d $opt umountinitrd.sh start 9 S .
+ update-rc.d $opt fixfstab start 10 S .
+ update-rc.d $opt syslog.buffer start 11 S . start 49 0 6 .
+ update-rc.d $opt sysconfsetup start 12 S .
+ update-rc.d $opt loadmodules.sh start 21 S .
+ update-rc.d $opt syslog.file start 39 S . start 47 0 6 .
+ update-rc.d $opt syslog.network start 44 S . start 39 0 6 .
+ update-rc.d $opt rmrecovery start 99 1 2 3 4 5 .
+}
+
+pkg_postrm_foonas-init() {
+ opt=
+ test -n "$D" && opt="-r $D"
+ for s in ${INITSCRIPTS}
+ do
+ update-rc.d $opt "$s" remove
+ done
+}
+
+PACKAGES = "${PN}"
+FILES_${PN} = "/"
diff --git a/packages/sysvinit/sysvinit/htcuniversal/.mtn2git_empty b/packages/freetype/freetype-2.3.0/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/sysvinit/sysvinit/htcuniversal/.mtn2git_empty
+++ b/packages/freetype/freetype-2.3.0/.mtn2git_empty
diff --git a/packages/freetype/freetype-2.3.0/configure.patch b/packages/freetype/freetype-2.3.0/configure.patch
new file mode 100644
index 0000000000..7c2035d7e8
--- /dev/null
+++ b/packages/freetype/freetype-2.3.0/configure.patch
@@ -0,0 +1,43 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+Index: freetype-2.3.0/builds/unix/configure.ac
+===================================================================
+--- freetype-2.3.0.orig/builds/unix/configure.ac 2007-01-17 12:51:51.000000000 +0100
++++ freetype-2.3.0/builds/unix/configure.ac 2007-01-19 00:10:00.000000000 +0100
+@@ -159,7 +159,7 @@
+
+ # don't quote AS_HELP_STRING!
+ AC_ARG_WITH([zlib],
+- AS_HELP_STRING([--without-zlib],
++ AC_HELP_STRING([--without-zlib],
+ [use internal zlib instead of system-wide]))
+ if test x$with_zlib != xno && test -z "$LIBZ"; then
+ AC_CHECK_LIB([z], [gzsetparams], [AC_CHECK_HEADER([zlib.h], [LIBZ='-lz'])])
+@@ -175,7 +175,7 @@
+
+ # don't quote AS_HELP_STRING!
+ AC_ARG_WITH([old-mac-fonts],
+- AS_HELP_STRING([--with-old-mac-fonts],
++ AC_HELP_STRING([--with-old-mac-fonts],
+ [allow Mac resource-based fonts to be used]))
+ if test x$with_old_mac_fonts = xyes; then
+ orig_LDFLAGS="${LDFLAGS}"
+Index: freetype-2.3.0/builds/unix/unix-cc.in
+===================================================================
+--- freetype-2.3.0.orig/builds/unix/unix-cc.in 2006-10-15 10:57:22.000000000 +0200
++++ freetype-2.3.0/builds/unix/unix-cc.in 2007-01-19 00:10:53.000000000 +0100
+@@ -14,8 +14,10 @@
+
+ CC := @CC@
+ COMPILER_SEP := $(SEP)
++SHELL := @SHELL@
++top_builddir := $(BUILD_DIR)
+
+-LIBTOOL ?= $(BUILD_DIR)/libtool
++LIBTOOL := @LIBTOOL@
+
+
+ # The object file extension (for standard and static libraries). This can be
diff --git a/packages/freetype/freetype-2.3.0/no-hardcode.patch b/packages/freetype/freetype-2.3.0/no-hardcode.patch
new file mode 100644
index 0000000000..65289758d5
--- /dev/null
+++ b/packages/freetype/freetype-2.3.0/no-hardcode.patch
@@ -0,0 +1,11 @@
+--- freetype-2.2.1/builds/unix/freetype-config.in.orig 2006-07-10 10:51:47.000000000 +0100
++++ freetype-2.2.1/builds/unix/freetype-config.in 2006-07-10 10:52:27.000000000 +0100
+@@ -16,7 +16,7 @@
+ libdir=@libdir@
+ enable_shared=@enable_shared@
+ wl=@wl@
+-hardcode_libdir_flag_spec='@hardcode_libdir_flag_spec@'
++hardcode_libdir_flag_spec=''
+
+ usage()
+ {
diff --git a/packages/tor/tor-0.1.1.23/.mtn2git_empty b/packages/freetype/freetype-2.3.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/tor/tor-0.1.1.23/.mtn2git_empty
+++ b/packages/freetype/freetype-2.3.1/.mtn2git_empty
diff --git a/packages/freetype/freetype-2.3.1/fix-x86_64-build.patch b/packages/freetype/freetype-2.3.1/fix-x86_64-build.patch
new file mode 100644
index 0000000000..ae504dcb0b
--- /dev/null
+++ b/packages/freetype/freetype-2.3.1/fix-x86_64-build.patch
@@ -0,0 +1,26 @@
+Index: freetype-2.3.1/builds/unix/configure.raw
+===================================================================
+--- freetype-2.3.1.orig/builds/unix/configure.raw
++++ freetype-2.3.1/builds/unix/configure.raw
+@@ -40,7 +40,7 @@ AC_SUBST(EXEEXT)
+ # checks for native programs to generate building tool
+
+ if test ${cross_compiling} = yes; then
+- AC_CHECK_PROG(CC_BUILD, ${build}-gcc, ${build-gcc})
++ AC_CHECK_PROG(CC_BUILD, ${build}-gcc, ${build}-gcc)
+ test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, gcc, gcc)
+ test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, cc, cc, , , /usr/ucb/cc)
+ test -z "${CC_BUILD}" && AC_MSG_ERROR([cannot find native C compiler])
+Index: freetype-2.3.1/builds/unix/configure.ac
+===================================================================
+--- freetype-2.3.1.orig/builds/unix/configure.ac
++++ freetype-2.3.1/builds/unix/configure.ac
+@@ -40,7 +40,7 @@ AC_SUBST(EXEEXT)
+ # checks for native programs to generate building tool
+
+ if test ${cross_compiling} = yes; then
+- AC_CHECK_PROG(CC_BUILD, ${build}-gcc, ${build-gcc})
++ AC_CHECK_PROG(CC_BUILD, ${build}-gcc, ${build}-gcc)
+ test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, gcc, gcc)
+ test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, cc, cc, , , /usr/ucb/cc)
+ test -z "${CC_BUILD}" && AC_MSG_ERROR([cannot find native C compiler])
diff --git a/packages/uboot-utils/.mtn2git_empty b/packages/freetype/freetype-2.3.3/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uboot-utils/.mtn2git_empty
+++ b/packages/freetype/freetype-2.3.3/.mtn2git_empty
diff --git a/packages/freetype/freetype-2.3.3/fix-x86_64-build.patch b/packages/freetype/freetype-2.3.3/fix-x86_64-build.patch
new file mode 100644
index 0000000000..ae504dcb0b
--- /dev/null
+++ b/packages/freetype/freetype-2.3.3/fix-x86_64-build.patch
@@ -0,0 +1,26 @@
+Index: freetype-2.3.1/builds/unix/configure.raw
+===================================================================
+--- freetype-2.3.1.orig/builds/unix/configure.raw
++++ freetype-2.3.1/builds/unix/configure.raw
+@@ -40,7 +40,7 @@ AC_SUBST(EXEEXT)
+ # checks for native programs to generate building tool
+
+ if test ${cross_compiling} = yes; then
+- AC_CHECK_PROG(CC_BUILD, ${build}-gcc, ${build-gcc})
++ AC_CHECK_PROG(CC_BUILD, ${build}-gcc, ${build}-gcc)
+ test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, gcc, gcc)
+ test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, cc, cc, , , /usr/ucb/cc)
+ test -z "${CC_BUILD}" && AC_MSG_ERROR([cannot find native C compiler])
+Index: freetype-2.3.1/builds/unix/configure.ac
+===================================================================
+--- freetype-2.3.1.orig/builds/unix/configure.ac
++++ freetype-2.3.1/builds/unix/configure.ac
+@@ -40,7 +40,7 @@ AC_SUBST(EXEEXT)
+ # checks for native programs to generate building tool
+
+ if test ${cross_compiling} = yes; then
+- AC_CHECK_PROG(CC_BUILD, ${build}-gcc, ${build-gcc})
++ AC_CHECK_PROG(CC_BUILD, ${build}-gcc, ${build}-gcc)
+ test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, gcc, gcc)
+ test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, cc, cc, , , /usr/ucb/cc)
+ test -z "${CC_BUILD}" && AC_MSG_ERROR([cannot find native C compiler])
diff --git a/packages/freetype/freetype-native_2.1.10.bb b/packages/freetype/freetype-native_2.1.10.bb
index b5e8b307cd..6f99f7ee84 100644
--- a/packages/freetype/freetype-native_2.1.10.bb
+++ b/packages/freetype/freetype-native_2.1.10.bb
@@ -1,5 +1,5 @@
require freetype_${PV}.bb
-inherit native
+inherit pkgconfig native
DEPENDS = ""
FILESPATH = "${FILE_DIRNAME}/freetype-${PV}:${FILE_DIRNAME}/freetype:${FILE_DIRNAME}/files"
@@ -11,8 +11,7 @@ do_configure() {
}
do_stage() {
- autotools_stage_includes
- oe_libinstall -so -a -C objs libfreetype ${STAGING_LIBDIR}
+ autotools_stage_all
}
do_install() {
diff --git a/packages/freetype/freetype_2.3.0.bb b/packages/freetype/freetype_2.3.0.bb
new file mode 100644
index 0000000000..3c574486c1
--- /dev/null
+++ b/packages/freetype/freetype_2.3.0.bb
@@ -0,0 +1,38 @@
+DESCRIPTION = "Freetype font rendering library"
+SECTION = "libs"
+LICENSE = "freetype"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/freetype/freetype-${PV}.tar.bz2 \
+ file://configure.patch;patch=1 \
+ file://no-hardcode.patch;patch=1"
+S = "${WORKDIR}/freetype-${PV}"
+
+inherit autotools pkgconfig binconfig
+
+DEFAULT_PREFERENCE = "-1"
+
+LIBTOOL = "${S}/builds/unix/${HOST_SYS}-libtool"
+EXTRA_OEMAKE = "'LIBTOOL=${LIBTOOL}'"
+EXTRA_OECONF = "--without-zlib"
+
+do_configure() {
+ cd builds/unix
+ gnu-configize
+ aclocal -I .
+ autoconf
+ cd ${S}
+ oe_runconf
+}
+
+do_compile_prepend() {
+ ${BUILD_CC} -o objs/apinames src/tools/apinames.c
+}
+
+do_stage() {
+ autotools_stage_includes
+ oe_libinstall -so -a -C objs libfreetype ${STAGING_LIBDIR}
+}
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir}"
diff --git a/packages/freetype/freetype_2.3.1.bb b/packages/freetype/freetype_2.3.1.bb
new file mode 100644
index 0000000000..79633a3d7f
--- /dev/null
+++ b/packages/freetype/freetype_2.3.1.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "Freetype font rendering library"
+SECTION = "libs"
+LICENSE = "freetype"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/freetype/freetype-${PV}.tar.bz2 \
+ file://fix-x86_64-build.patch;patch=1"
+# file://no-hardcode.patch;patch=1"
+# file://configure.patch;patch=1 \
+S = "${WORKDIR}/freetype-${PV}"
+
+inherit autotools pkgconfig binconfig
+
+DEFAULT_PREFERENCE = "-1"
+
+LIBTOOL = "${S}/builds/unix/${HOST_SYS}-libtool"
+EXTRA_OEMAKE = "'LIBTOOL=${LIBTOOL}'"
+EXTRA_OECONF = "--without-zlib"
+
+do_configure() {
+ cd builds/unix
+ gnu-configize
+ aclocal -I .
+ autoconf
+ cd ${S}
+ oe_runconf
+}
+
+do_compile_prepend() {
+ ${BUILD_CC} -o objs/apinames src/tools/apinames.c
+}
+
+do_stage() {
+ export LIBTOOL='${LIBTOOL}'
+ autotools_stage_includes
+ oe_libinstall -so -a -C objs libfreetype ${STAGING_LIBDIR}
+}
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir}"
diff --git a/packages/freetype/freetype_2.3.3.bb b/packages/freetype/freetype_2.3.3.bb
new file mode 100644
index 0000000000..c1febe8a90
--- /dev/null
+++ b/packages/freetype/freetype_2.3.3.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "Freetype font rendering library"
+SECTION = "libs"
+LICENSE = "freetype"
+PR = "r2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/freetype/freetype-${PV}.tar.bz2 \
+ file://fix-x86_64-build.patch;patch=1 \
+ file://no-hardcode.patch;patch=1 \
+ "
+
+S = "${WORKDIR}/freetype-${PV}"
+
+inherit autotools pkgconfig binconfig
+
+DEFAULT_PREFERENCE = "-1"
+
+LIBTOOL = "${S}/builds/unix/${HOST_SYS}-libtool"
+EXTRA_OEMAKE = "'LIBTOOL=${LIBTOOL}'"
+EXTRA_OECONF = "--without-zlib"
+
+do_configure() {
+ cd builds/unix
+ gnu-configize
+ aclocal -I .
+ autoconf
+ cd ${S}
+ oe_runconf
+}
+
+do_compile_prepend() {
+ ${BUILD_CC} -o objs/apinames src/tools/apinames.c
+}
+
+do_stage() {
+ export LIBTOOL='${LIBTOOL}'
+ autotools_stage_all
+ oe_libinstall -so -a -C objs libfreetype ${STAGING_LIBDIR}
+}
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir}"
diff --git a/packages/freeze/freeze.bb b/packages/freeze/freeze.bb
index 48a0ba63d2..fa11fecb97 100644
--- a/packages/freeze/freeze.bb
+++ b/packages/freeze/freeze.bb
@@ -13,7 +13,7 @@
# as appropriate, directory is the sub-directory of 'packages'.
#
DESCRIPTION = "Freeze the bitbake files in the build"
-SECTION = "console/networking"
+SECTION = "console/network"
PRIORITY = "optional"
LICENSE = "MIT"
PR = "r1"
diff --git a/packages/freeze/unfreeze.bb b/packages/freeze/unfreeze.bb
index ff280dee9c..f2232c304f 100644
--- a/packages/freeze/unfreeze.bb
+++ b/packages/freeze/unfreeze.bb
@@ -2,7 +2,7 @@
# configuration fails empty (they just contain a comment).
#
DESCRIPTION = "Unfreeze the bitbake files in the build"
-SECTION = "console/networking"
+SECTION = "console/network"
PRIORITY = "optional"
LICENSE = "MIT"
PR = "r1"
diff --git a/packages/frodo/frodo_4.1b.bb b/packages/frodo/frodo_4.1b.bb
index 669187e0c7..fa0de0bbc3 100644
--- a/packages/frodo/frodo_4.1b.bb
+++ b/packages/frodo/frodo_4.1b.bb
@@ -4,7 +4,7 @@ DEPENDS = "libsdl-qpe"
LICENSE = "GPL"
PR = "r1"
-SRC_URI = "http://wwwthep.physik.uni-mainz.de/~cbauer/FrodoV4_1b.Src.tar.gz \
+SRC_URI = "http://frodo.cebix.net/downloads/FrodoV4_1b.Src.tar.gz \
file://frodo-qte.diff;patch=1 \
file://frodo-joystick-4state.diff;patch=1 \
file://frodorc \
diff --git a/packages/ftpd-topfield/files/usb-header-name.patch b/packages/ftpd-topfield/files/usb-header-name.patch
new file mode 100644
index 0000000000..b3149341e2
--- /dev/null
+++ b/packages/ftpd-topfield/files/usb-header-name.patch
@@ -0,0 +1,11 @@
+--- ../../libtopfield/usb_io.h.orig 2006-01-05 14:55:10.000000000 +1030
++++ ../../libtopfield/usb_io.h 2007-02-20 02:25:43.000000000 +1030
+@@ -34,7 +34,7 @@
+ #include <linux/types.h>
+ #include <linux/version.h>
+
+-#include <linux/usb.h>
++#include <linux/usb_ch9.h>
+ #include <linux/usbdevice_fs.h>
+
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
diff --git a/packages/ftpd-topfield/ftpd-topfield_0.6.10.bb b/packages/ftpd-topfield/ftpd-topfield_0.6.10.bb
deleted file mode 100755
index fab729b209..0000000000
--- a/packages/ftpd-topfield/ftpd-topfield_0.6.10.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-# This package builds the ftpd-topfield program
-PR = "r0"
-DESCRIPTION = "ftpd-topfield - FTP access to TopField PVR"
-HOMEPAGE = "http://sourceforge.net/projects/puppy"
-SECTION = "net"
-LICENSE = "MIT"
-
-SRC_URI = "cvs://anonymous@puppy.cvs.sourceforge.net/cvsroot/puppy;method=pserver;module=ftpd-topfield;tag=FTPD_TOPFIELD_0_6_10 \
- cvs://anonymous@puppy.cvs.sourceforge.net/cvsroot/puppy;method=pserver;module=libtopfield;tag=FTPD_TOPFIELD_0_6_10 \
- file://init"
-
-# The source will end up in the subdirectory 'ftpd-topfield' - no release name
-S = "${WORKDIR}/ftpd-topfield"
-
-inherit update-rc.d
-
-INITSCRIPT_NAME = "ftpd-topfield"
-INITSCRIPT_PARAMS = "defaults"
-
-# Just the one package at present
-PACKAGES = "${PN}"
-
-inherit autotools
-
-do_compile() {
- oe_runmake
-}
-
-do_install() {
- install -d ${D}${sbindir}
- install -m 0755 ${S}/ftpd ${D}${sbindir}/ftpd-topfield
- install -d ${D}${sysconfdir}/ ${D}${sysconfdir}/init.d
- install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/ftpd-topfield
-}
diff --git a/packages/ftpd-topfield/ftpd-topfield_0.7.1.bb b/packages/ftpd-topfield/ftpd-topfield_0.7.1.bb
new file mode 100755
index 0000000000..5ba92e0930
--- /dev/null
+++ b/packages/ftpd-topfield/ftpd-topfield_0.7.1.bb
@@ -0,0 +1,34 @@
+# This package builds the ftpd-topfield program
+PR = "r0"
+DESCRIPTION = "ftpd-topfield - FTP access to TopField PVR"
+HOMEPAGE = "http://sourceforge.net/projects/puppy"
+SECTION = "net"
+LICENSE = "MIT"
+
+SRC_URI = "cvs://anonymous@puppy.cvs.sourceforge.net/cvsroot/puppy;method=pserver;module=ftpd-topfield;tag=FTPD_TOPFIELD_0_7_1 \
+ cvs://anonymous@puppy.cvs.sourceforge.net/cvsroot/puppy;method=pserver;module=libtopfield;tag=FTPD_TOPFIELD_0_7_1 \
+ file://init"
+
+# The source will end up in the subdirectory 'ftpd-topfield' - no release name
+S = "${WORKDIR}/ftpd-topfield"
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "ftpd-topfield"
+INITSCRIPT_PARAMS = "defaults"
+
+# Just the one package at present
+PACKAGES = "${PN}"
+
+inherit autotools
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ install -d ${D}${sbindir}
+ install -m 0755 ${S}/ftpd ${D}${sbindir}/ftpd-topfield
+ install -d ${D}${sysconfdir}/ ${D}${sysconfdir}/init.d
+ install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/ftpd-topfield
+}
diff --git a/packages/uboot/u-boot-LABEL.2006.06.30.2020/.mtn2git_empty b/packages/fuse/fuse-2.6.5/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uboot/u-boot-LABEL.2006.06.30.2020/.mtn2git_empty
+++ b/packages/fuse/fuse-2.6.5/.mtn2git_empty
diff --git a/packages/fuse/fuse-2.6.5/not-run-updaterc.d-on-host.patch b/packages/fuse/fuse-2.6.5/not-run-updaterc.d-on-host.patch
new file mode 100644
index 0000000000..2496b77f70
--- /dev/null
+++ b/packages/fuse/fuse-2.6.5/not-run-updaterc.d-on-host.patch
@@ -0,0 +1,21 @@
+--- fuse-2.6.3/util/Makefile.am~ 2007-02-27 22:50:15.000000000 -0600
++++ fuse-2.6.3/util/Makefile.am 2007-02-27 22:53:31.000000000 -0600
+@@ -29,10 +29,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)
+@@ -42,7 +38,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.5.3.bb b/packages/fuse/fuse-module_2.5.3.bb
deleted file mode 100644
index 4c71b0b9f9..0000000000
--- a/packages/fuse/fuse-module_2.5.3.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-require fuse.inc
-
-RRECOMMENDS = "fuse"
-PR = "r1"
-
-S = "${WORKDIR}/fuse-${PV}"
-FILES_${PN} = "/dev ${base_libdir}/modules ${sysconfdir}"
-EXTRA_OECONF = " --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-module_2.6.5.bb b/packages/fuse/fuse-module_2.6.5.bb
new file mode 100644
index 0000000000..6d516185be
--- /dev/null
+++ b/packages/fuse/fuse-module_2.6.5.bb
@@ -0,0 +1,29 @@
+require fuse.inc
+
+RRECOMMENDS = "fuse"
+PR = "r1"
+
+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.inc b/packages/fuse/fuse.inc
index abc408561a..41952050a4 100644
--- a/packages/fuse/fuse.inc
+++ b/packages/fuse/fuse.inc
@@ -4,7 +4,7 @@ LICENSE = "GPL"
DEPENDS = "fakeroot-native"
RRECOMMENDS_fuse = "fuse-module kernel-module-fuse"
-SRC_URI = "${SOURCEFORGE_MIRROR}/fuse/${P}.tar.gz"
+SRC_URI = "${SOURCEFORGE_MIRROR}/fuse/fuse-${PV}.tar.gz"
inherit autotools pkgconfig
diff --git a/packages/fuse/fuse_2.5.3.bb b/packages/fuse/fuse_2.5.3.bb
index 5f5ce701d3..b3f45381a0 100644
--- a/packages/fuse/fuse_2.5.3.bb
+++ b/packages/fuse/fuse_2.5.3.bb
@@ -1,10 +1,10 @@
require fuse.inc
-PR = "r1"
+PR = "r2"
#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"
-FILES_${PN} = "${libdir}/*.so*"
+FILES_${PN} = "${libdir}/*.so.*"
FILES_${PN}-dev += "${libdir}/*.la"
FILES_fuse-utils = "${bindir} ${base_sbindir}"
DEBIAN_NOAUTONAME_fuse-utils = "1"
diff --git a/packages/fuse/fuse_2.6.5.bb b/packages/fuse/fuse_2.6.5.bb
new file mode 100644
index 0000000000..a1795e7f0c
--- /dev/null
+++ b/packages/fuse/fuse_2.6.5.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_0.7.2.bb b/packages/fuse/gmailfs_0.7.2.bb
deleted file mode 100644
index 6f286ad4cf..0000000000
--- a/packages/fuse/gmailfs_0.7.2.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-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 = "GPL"
-
-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/gmailfs-0.7.2.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
new file mode 100644
index 0000000000..9f1c676c87
--- /dev/null
+++ b/packages/fuse/gmailfs_0.7.3.bb
@@ -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/sshfs-fuse_1.7.bb b/packages/fuse/sshfs-fuse_1.7.bb
new file mode 100644
index 0000000000..1f40ac8c8c
--- /dev/null
+++ b/packages/fuse/sshfs-fuse_1.7.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "This is a filesystem client based on the SSH File Transfer Protocol using FUSE."
+AUTHOR = "Miklos Szeredi <miklos@szeredi.hu>"
+HOMEPAGE = "http://fuse.sourceforge.net/sshfs.html"
+SECTION = "console/network"
+PRIORITY = "optional"
+LICENSE = "GPLv2"
+DEPENDS = "glib-2.0 fuse"
+
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/fuse/${P}.tar.gz"
+
+S = "${WORKDIR}/${P}"
+
+inherit autotools
+
+FILES_${PN} += "${libdir}/sshnodelay.so"
diff --git a/packages/fush/fush_0.9.0.bb b/packages/fush/fush_0.9.0.bb
index 3763a4f7e8..8f5024381c 100644
--- a/packages/fush/fush_0.9.0.bb
+++ b/packages/fush/fush_0.9.0.bb
@@ -3,8 +3,8 @@ HOMEPAGE = "http://sourceforge.net/projects/foosh/"
LICENSE = "GPL"
DEPENDS = "readline"
PRIORITY = "optional"
-SECTION = "console/shells"
-PR = "r2"
+SECTION = "base/shell"
+PR = "r3"
RV = "${@bb.data.getVar('PV', d, 1).replace('.', '-')}"
SRC_URI = "${SOURCEFORGE_MIRROR}/foosh/fush-${RV}.tar.gz \
diff --git a/packages/uicmoc/uicmoc4-native-4.1.1/.mtn2git_empty b/packages/g15daemon/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uicmoc/uicmoc4-native-4.1.1/.mtn2git_empty
+++ b/packages/g15daemon/.mtn2git_empty
diff --git a/packages/g15daemon/g15daemon_1.2.6a.bb b/packages/g15daemon/g15daemon_1.2.6a.bb
new file mode 100644
index 0000000000..0522b27a28
--- /dev/null
+++ b/packages/g15daemon/g15daemon_1.2.6a.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "G15daemon takes control of the G15 keyboard, \
+allowing the use of all keys through the linux kernel uinput \
+device driver. It also controls the use of the keyboard's \
+LCD display, allows multiple, simultaneous client applications \
+to connect, and gives the user the ability to switch between \
+client apps at the press of a button."
+HOMEPAGE = "http://g15tools.sourceforge.net"
+LICENSE = "GPLv2"
+SECTION = "console/utils"
+PRIORITY = "optional"
+DEPENDS = "libdaemon libg15"
+RDEPENDS = "libg15"
+RRECOMMENDS = "kernel-module-uinput"
+PR="r2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/g15daemon/g15daemon-${PV}.tar.bz2"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-gnu-ld"
+
+do_stage () {
+ autotools_stage_all
+}
+
diff --git a/packages/gaim/pidgin.inc b/packages/gaim/pidgin.inc
new file mode 100644
index 0000000000..37fa996b53
--- /dev/null
+++ b/packages/gaim/pidgin.inc
@@ -0,0 +1,74 @@
+SECTION = "x11/network"
+DESCRIPTION = "multi-protocol instant messaging client"
+LICENSE = "GPL"
+
+DEPENDS = "gtk+ ncurses gnutls virtual/libintl gstreamer dbus"
+RRECOMMENDS_${PN} = "libpurple-protocol-irc libpurple-protocol-jabber"
+
+EXTRA_OECONF = " \
+ --disable-audio \
+ --disable-perl \
+ --disable-tcl \
+ --disable-deprecated \
+ --disable-gevolution \
+ --x-includes=${STAGING_INCDIR} \
+ --x-libraries=${STAGING_LIBDIR} \
+ --enable-gnutls=yes \
+ --with-ncurses-headers=${STAGING_INCDIR} \
+ --with-gnutls-includes=${STAGING_INCDIR} \
+ --with-gnutls-libs=${STAGING_LIBDIR} \
+ "
+
+PACKAGES =+ "libpurple libpurple-dev libpurple-dbg finch finch-dev finch-dbg"
+
+
+LEAD_SONAME = "libpurple.so.0"
+FILES_libpurple = "${libdir}/libpurple*.so.*"
+FILES_libpurple-dev = "${libdir}/libpurple* \
+ ${libdir}/purple-2/*.la "
+FILES_libpurple-dbg = "${libdir}/.debug/libpurple* \
+ ${libdir}/purple-2/.debug"
+FILES_finch = "${bindir}/finch"
+FILES_finch-dev = "${libdir}/finch/*.la"
+FILES_finch-dbg = "${bindir}/.debug/finch \
+ ${libdir}/finch/.debug"
+
+FILES_${PN} = "${bindir} ${sbindir} ${libexecdir} ${libdir}/lib*.so.* \
+ ${sysconfdir} ${sharedstatedir} ${localstatedir} \
+ /bin /sbin /lib/*.so* ${datadir}/${PN} ${libdir}/${PN}/*.so \
+ ${datadir}/pixmaps ${datadir}/applications \
+ ${datadir}/idl ${datadir}/omf ${datadir}/sounds \
+ ${libdir}/bonobo/servers ${datadir}/icons"
+FILES_${PN}-dev += "${libdir}/pidgin/*.la"
+
+inherit autotools gettext pkgconfig gconf
+
+PACKAGES_DYNAMIC = "libpurple-protocol-* libpurple-plugin-* pidgin-plugin-* finch-plugin-*"
+
+python populate_packages_prepend () {
+ root = bb.data.expand('${libdir}/pidgin', d)
+ purple = bb.data.expand('${libdir}/purple-2', d)
+ finch = bb.data.expand('${libdir}/finch', d)
+
+ do_split_packages(d, root, '^([^l][^i][^b].*)\.so$',
+ output_pattern='pidgin-plugin-%s',
+ description='Pidgin plugin %s',
+ prepend=True)
+
+ do_split_packages(d, purple, '^lib(.*)\.so$',
+ output_pattern='libpurple-protocol-%s',
+ description='Libpurple protocol plugin for %s',
+ prepend=True)
+
+ do_split_packages(d, purple, '^([^l][^i][^b].*)\.so$',
+ output_pattern='libpurple-plugin-%s',
+ description='libpurple plugin %s',
+ prepend=True)
+
+ do_split_packages(d, finch, '^([^l][^i][^b].*)\.so$',
+ output_pattern='finch-plugin-%s',
+ description='Finch plugin %s',
+ prepend=True)
+
+
+}
diff --git a/packages/wpa-supplicant/wpa-supplicant-0.5.5/.mtn2git_empty b/packages/gaim/pidgin/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/wpa-supplicant/wpa-supplicant-0.5.5/.mtn2git_empty
+++ b/packages/gaim/pidgin/.mtn2git_empty
diff --git a/packages/gaim/pidgin/gconf-no-errors.patch b/packages/gaim/pidgin/gconf-no-errors.patch
new file mode 100644
index 0000000000..9a95175ac9
--- /dev/null
+++ b/packages/gaim/pidgin/gconf-no-errors.patch
@@ -0,0 +1,12 @@
+--- /tmp/Makefile.am 2007-05-08 18:39:49.000000000 +0200
++++ pidgin-2.0.0/libpurple/gconf/Makefile.am 2007-05-08 18:40:13.755251000 +0200
+@@ -8,8 +8,7 @@
+
+ if GCONF_SCHEMAS_INSTALL
+ install-data-local:
+- GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(schema_DATA) 2>&1 | \
+- grep -v "^WARNING: failed to install schema" | grep -v "^Attached schema" 1>&2
++ GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(schema_DATA) 2>&1
+ else
+ install-data-local:
+ endif
diff --git a/packages/gaim/pidgin/sanitize-configure.ac.patch b/packages/gaim/pidgin/sanitize-configure.ac.patch
new file mode 100644
index 0000000000..a77d64f40b
--- /dev/null
+++ b/packages/gaim/pidgin/sanitize-configure.ac.patch
@@ -0,0 +1,33 @@
+--- /tmp/configure.ac 2007-05-08 17:29:02.000000000 +0200
++++ pidgin-2.0.0/configure.ac 2007-05-08 17:30:30.325251000 +0200
+@@ -472,7 +472,7 @@
+ if test "x$enable_consoleui" = "xyes"; then
+ dnl # Some distros put the headers in ncursesw/, some don't
+ found_ncurses_h=no
+- for location in $ac_ncurses_includes $NCURSES_HEADERS /usr/include/ncursesw /usr/include
++ for location in $ac_ncurses_includes $NCURSES_HEADERS
+ do
+ f="$location/ncurses.h"
+ AC_CHECK_HEADER($f,[
+@@ -1860,10 +1860,6 @@
+ KRB4_CFLAGS="$KRB4_CFLAGS -I${kerberos}/include/kerberosIV"
+ fi
+ KRB4_LDFLAGS="-L${kerberos}/lib"
+- elif test -d /usr/local/include/kerberosIV ; then
+- KRB4_CFLAGS="-I/usr/local/include/kerberosIV"
+- elif test -d /usr/include/kerberosIV ; then
+- KRB4_CFLAGS="-I/usr/include/kerberosIV"
+ fi
+ AC_DEFINE(ZEPHYR_USES_KERBEROS, 1, [Define if kerberos should be used in Zephyr.])
+
+@@ -1896,10 +1892,6 @@
+ ZEPHYR_LDFLAGS="-L${zephyr}/lib"
+ elif test -d /usr/athena/include/zephyr ; then
+ ZEPHYR_CFLAGS="-I/usr/athena/include"
+- elif test -d /usr/include/zephyr ; then
+- ZEPHYR_CFLAGS="-I/usr/include"
+- elif test -d /usr/local/include/zephyr ; then
+- ZEPHYR_CFLAGS="-I/usr/local/include"
+ fi
+ AC_DEFINE(LIBZEPHYR_EXT, 1 , [Define if external libzephyr should be used.])
+ AM_CONDITIONAL(EXTERNAL_LIBZEPHYR, test "x$zephyr" != "xno")
diff --git a/packages/gaim/pidgin_2.0.0.bb b/packages/gaim/pidgin_2.0.0.bb
new file mode 100644
index 0000000000..a39e7aeaf9
--- /dev/null
+++ b/packages/gaim/pidgin_2.0.0.bb
@@ -0,0 +1,8 @@
+require pidgin.inc
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pidgin/pidgin-${PV}.tar.bz2 \
+ file://sanitize-configure.ac.patch;patch=1 \
+ file://gconf-no-errors.patch;patch=1 \
+ "
+
+
diff --git a/packages/galago/eds-feed_0.3.2.bb b/packages/galago/eds-feed_0.3.2.bb
index 5ad9a822a6..59dc914eb2 100644
--- a/packages/galago/eds-feed_0.3.2.bb
+++ b/packages/galago/eds-feed_0.3.2.bb
@@ -1,11 +1,11 @@
-DESCRIPTION = "Galago linkage to the Evolution Data Server."
-HOMEPAGE = "http://www.galago-project.org/"
-LICENSE = "GPL"
-DEPENDS = "gettext libgalago dbus glib-2.0 eds-dbus"
-
-SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${P}.tar.gz \
- file://disable-bonobo.patch;patch=1"
-# file://no-check.patch;patch=1"
+DESCRIPTION = "Galago linkage to the Evolution Data Server."
+HOMEPAGE = "http://www.galago-project.org/"
+LICENSE = "GPL"
+DEPENDS = "gettext libgalago dbus glib-2.0 eds-dbus"
+
+SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${P}.tar.gz \
+ file://disable-bonobo.patch;patch=1"
+# file://no-check.patch;patch=1"
#EXTRA_OECONF = "--disable-binreloc"
FILES_${PN} += "${libdir}/galago/eds-feed"
diff --git a/packages/galago/galago-daemon_0.3.4.bb b/packages/galago/galago-daemon_0.3.4.bb
index 9e27f72605..243e42da4e 100644
--- a/packages/galago/galago-daemon_0.3.4.bb
+++ b/packages/galago/galago-daemon_0.3.4.bb
@@ -1,11 +1,11 @@
-DESCRIPTION = "Galago is a desktop presence framework, designed to transmit presence information between programs."
-HOMEPAGE = "http://www.galago-project.org/"
-LICENSE = "GPL"
-DEPENDS = "gettext libgalago dbus glib-2.0"
+DESCRIPTION = "Galago is a desktop presence framework, designed to transmit presence information between programs."
+HOMEPAGE = "http://www.galago-project.org/"
+LICENSE = "GPL"
+DEPENDS = "gettext libgalago dbus glib-2.0"
PR = "r1"
-SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${P}.tar.gz \
- file://no-check.patch;patch=1"
+SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${P}.tar.gz \
+ file://no-check.patch;patch=1"
EXTRA_OECONF = "--disable-binreloc"
FILES_${PN} += "${datadir}/dbus-1/services/"
diff --git a/packages/zlib/files/.mtn2git_empty b/packages/gamin/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/zlib/files/.mtn2git_empty
+++ b/packages/gamin/.mtn2git_empty
diff --git a/packages/opie-taskbar/opie-taskbar/locale.conf b/packages/gamin/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/opie-taskbar/opie-taskbar/locale.conf
+++ b/packages/gamin/files/.mtn2git_empty
diff --git a/packages/gamin/files/no-abstract-sockets.patch b/packages/gamin/files/no-abstract-sockets.patch
new file mode 100644
index 0000000000..b8aacfb23c
--- /dev/null
+++ b/packages/gamin/files/no-abstract-sockets.patch
@@ -0,0 +1,54 @@
+--- /tmp/configure.in 2007-04-30 13:08:49.000000000 +0200
++++ gamin-0.1.8/configure.in 2007-04-30 13:10:53.285251000 +0200
+@@ -354,51 +354,6 @@
+ AC_DEFINE(HAVE_CMSGCRED,1,[Have cmsgcred structure])
+ fi
+
+-#### Abstract sockets
+-
+-AC_MSG_CHECKING(abstract socket namespace)
+-AC_LANG_PUSH(C)
+-AC_RUN_IFELSE([AC_LANG_PROGRAM(
+-[[
+-#include <sys/types.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include <stdio.h>
+-#include <sys/socket.h>
+-#include <sys/un.h>
+-#include <errno.h>
+-]],
+-[[
+- int listen_fd;
+- struct sockaddr_un addr;
+-
+- listen_fd = socket (PF_UNIX, SOCK_STREAM, 0);
+-
+- if (listen_fd < 0)
+- {
+- fprintf (stderr, "socket() failed: %s\n", strerror (errno));
+- exit (1);
+- }
+-
+- memset (&addr, '\0', sizeof (addr));
+- addr.sun_family = AF_UNIX;
+- strcpy (addr.sun_path, "X/tmp/dbus-fake-socket-path-used-in-configure-test");
+- addr.sun_path[0] = '\0'; /* this is what makes it abstract */
+-
+- if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0)
+- {
+- fprintf (stderr, "Abstract socket namespace bind() failed: %s\n",
+- strerror (errno));
+- exit (1);
+- }
+- else
+- exit (0);
+-]])],
+- [have_abstract_sockets=yes],
+- [have_abstract_sockets=no])
+-AC_LANG_POP(C)
+-AC_MSG_RESULT($have_abstract_sockets)
+-
+ if test x$enable_abstract_sockets = xyes; then
+ if test x$have_abstract_sockets = xno; then
+ AC_MSG_ERROR([Abstract sockets explicitly required, and support not detected.])
diff --git a/packages/gamin/gamin_0.1.8.bb b/packages/gamin/gamin_0.1.8.bb
new file mode 100644
index 0000000000..c4da068c34
--- /dev/null
+++ b/packages/gamin/gamin_0.1.8.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Gamin is a file and directory monitoring system defined to be a subset of the FAM (File Alteration Monitor) system."
+LICENSE = "LGPL"
+
+SRC_URI = "http://www.gnome.org/~veillard/gamin/sources/gamin-${PV}.tar.gz \
+ file://no-abstract-sockets.patch;patch=1"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/gammu/files/.mtn2git_empty b/packages/gammu/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gammu/files/.mtn2git_empty
diff --git a/packages/gammu/files/ldflags-again.patch b/packages/gammu/files/ldflags-again.patch
new file mode 100644
index 0000000000..90311e5f39
--- /dev/null
+++ b/packages/gammu/files/ldflags-again.patch
@@ -0,0 +1,13 @@
+Index: gammu-1.10.0/cfg/Makefile.glo
+===================================================================
+--- gammu-1.10.0.orig/cfg/Makefile.glo 2007-03-30 17:55:18.000000000 +0200
++++ gammu-1.10.0/cfg/Makefile.glo 2007-03-30 17:55:46.000000000 +0200
+@@ -152,7 +152,7 @@
+
+ $(TOPDIR)/gammu/gammu-shared: $(COMMON) $(GAMMU) $(TOPDIR)/common/$(LIBGAMMU_FULLNAME)
+ @echo Linking gammu-shared
+- @$(CC) -L$(TOPDIR)/common -lGammu $(GAMMU_CFLAGS) $(GAMMU_LIBS) $(SMSD_LIBS) $(GAMMU) -o $(TOPDIR)/gammu/gammu-shared
++ @$(CC) -L$(TOPDIR)/common -lGammu $(LDLIBS) $(GAMMU_CFLAGS) $(GAMMU_LIBS) $(SMSD_LIBS) $(GAMMU) -o $(TOPDIR)/gammu/gammu-shared
+
+ shared: $(TOPDIR)/common/$(LIBGAMMU_FULLNAME) $(TOPDIR)/common/$(LIBGAMMU_STATIC) $(TOPDIR)/gammu/gammu-shared
+
diff --git a/packages/gammu/gammu_1.07.00.bb b/packages/gammu/gammu_1.07.00.bb
deleted file mode 100644
index 49a2f21399..0000000000
--- a/packages/gammu/gammu_1.07.00.bb
+++ /dev/null
@@ -1,75 +0,0 @@
-DESCRIPTION = "GNU All Mobile Managment Utilities"
-SECTION = "console/network"
-DEPENDS = "bluez-libs"
-LICENSE = "GPL"
-HOMEPAGE = "http://mwiacek.com/gsm/soft/gammu.html"
-AUTHOR = "Marcin Wiacek <marcin@mwiacek.com>"
-
-SRC_URI = "http://www.mwiacek.com/zips/gsm/gammu/stable/1_0x/gammu-${PV}.tar.gz "
-
-EXTRA_OECONF = "--disable-mysql"
-
-inherit autotools
-
-do_compile () {
- oe_runmake shared
-}
-
-do_stage() {
- install -d ${STAGING_INCDIR}/gammu/misc ${STAGING_INCDIR}/gammu/misc/coding \
- ${STAGING_INCDIR}/gammu/phone ${STAGING_INCDIR}/gammu/phone/at \
- ${STAGING_INCDIR}/gammu/phone/obex ${STAGING_INCDIR}/gammu/phone/nokia \
- ${STAGING_INCDIR}/gammu/phone/nokia/dct3 ${STAGING_INCDIR}/gammu/phone/nokia/dct4tiku \
- ${STAGING_INCDIR}/gammu/phone/symbian ${STAGING_INCDIR}/gammu/phone/alcatel \
- ${STAGING_INCDIR}/gammu/service ${STAGING_INCDIR}/gammu/service/sms \
- ${STAGING_INCDIR}/gammu/service/backup ${STAGING_INCDIR}/gammu/device \
- ${STAGING_INCDIR}/gammu/device/irda ${STAGING_INCDIR}/gammu/device/bluetoth \
- ${STAGING_INCDIR}/gammu/device/serial ${STAGING_INCDIR}/gammu/protocol \
- ${STAGING_INCDIR}/gammu/protocol/at ${STAGING_INCDIR}/gammu/protocol/obex \
- ${STAGING_INCDIR}/gammu/protocol/nokia ${STAGING_INCDIR}/gammu/protocol/symbian \
- ${STAGING_INCDIR}/gammu/protocol/alcatel
-
- oe_libinstall -so -C common libGammu ${STAGING_LIBDIR}
-
- install -m 0644 common/*.h ${STAGING_INCDIR}/gammu/
- install -m 0644 common/misc/*.h ${STAGING_INCDIR}/gammu/misc
- install -m 0644 common/misc/coding/*.h ${STAGING_INCDIR}/gammu/misc/coding
- install -m 0644 common/phone/*.h ${STAGING_INCDIR}/gammu/phone
- install -m 0644 common/phone/at/*.h ${STAGING_INCDIR}/gammu/phone/at
- install -m 0644 common/phone/obex/*.h ${STAGING_INCDIR}/gammu/phone/obex
- install -m 0644 common/phone/nokia/*.h ${STAGING_INCDIR}/gammu/phone/nokia
- install -m 0644 common/phone/nokia/dct3/*.h ${STAGING_INCDIR}/gammu/phone/nokia/dct3
- install -m 0644 common/phone/nokia/dct4tiku/*.h ${STAGING_INCDIR}/gammu/phone/nokia/dct4tiku
- install -m 0644 common/phone/symbian/*.h ${STAGING_INCDIR}/gammu/phone/symbian
- install -m 0644 common/phone/alcatel/*.h ${STAGING_INCDIR}/gammu/phone/alcatel
- install -m 0644 common/service/*.h ${STAGING_INCDIR}/gammu/service
- install -m 0644 common/service/sms/*.h ${STAGING_INCDIR}/gammu/service/sms
- install -m 0644 common/service/backup/*.h ${STAGING_INCDIR}/gammu/service/backup
- install -m 0644 common/device/*.h ${STAGING_INCDIR}/gammu/device
- install -m 0644 common/device/irda/*.h ${STAGING_INCDIR}/gammu/device/irda
- install -m 0644 common/device/bluetoth/*.h ${STAGING_INCDIR}/gammu/device/bluetoth
- install -m 0644 common/device/serial/*.h ${STAGING_INCDIR}/gammu/device/serial
- install -m 0644 common/protocol/*.h ${STAGING_INCDIR}/gammu/protocol
- install -m 0644 common/protocol/at/*.h ${STAGING_INCDIR}/gammu/protocol/at
- install -m 0644 common/protocol/obex/*.h ${STAGING_INCDIR}/gammu/protocol/obex
- install -m 0644 common/protocol/nokia/*.h ${STAGING_INCDIR}/gammu/protocol/nokia
- install -m 0644 common/protocol/symbian/*.h ${STAGING_INCDIR}/gammu/protocol/symbian
- install -m 0644 common/protocol/alcatel/*.h ${STAGING_INCDIR}/gammu/protocol/alcatel
-}
-
-do_install () {
- oe_runmake 'DESTDIR=${D}' installshared
-}
-
-PACKAGES =+ "libgammu"
-
-FILES_${PN} = "${bindir}/gammu"
-FILES_libgammu = "${libdir}/libGammu.so*"
-
-PACKAGES_DYNAMIC = "gammu-locale-*"
-
-python populate_packages_prepend () {
- help_dir = bb.data.expand('${datadir}/gammu/', d)
-
- do_split_packages(d, help_dir, file_regex='^gammu_(.*)\.txt$', output_pattern='gammu-locale-%s', description='%s translation for Gammu')
-}
diff --git a/packages/gammu/gammu_1.10.0.bb b/packages/gammu/gammu_1.10.0.bb
new file mode 100644
index 0000000000..9e3f611697
--- /dev/null
+++ b/packages/gammu/gammu_1.10.0.bb
@@ -0,0 +1,77 @@
+DESCRIPTION = "GNU All Mobile Managment Utilities"
+SECTION = "console/network"
+DEPENDS = "bluez-libs"
+LICENSE = "GPL"
+HOMEPAGE = "http://www.gammu.org/"
+
+SRC_URI = "http://dl.cihar.com/gammu/releases/gammu-${PV}.tar.bz2 \
+ file://ldflags-again.patch;patch=1"
+
+EXTRA_OECONF = "--disable-mysql --with-bluedir=${STAGING_DIR}"
+
+EXTRA_LDFLAGS = "-lbluetooth2"
+
+inherit autotools
+
+do_compile () {
+ oe_runmake shared LDFLAGS='-L${STAGING_LIBDIR} -lbluetooth'
+}
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/gammu/misc ${STAGING_INCDIR}/gammu/misc/coding \
+ ${STAGING_INCDIR}/gammu/phone ${STAGING_INCDIR}/gammu/phone/at \
+ ${STAGING_INCDIR}/gammu/phone/obex ${STAGING_INCDIR}/gammu/phone/nokia \
+ ${STAGING_INCDIR}/gammu/phone/nokia/dct3 ${STAGING_INCDIR}/gammu/phone/nokia/dct4s40 \
+ ${STAGING_INCDIR}/gammu/phone/symbian ${STAGING_INCDIR}/gammu/phone/alcatel \
+ ${STAGING_INCDIR}/gammu/service ${STAGING_INCDIR}/gammu/service/sms \
+ ${STAGING_INCDIR}/gammu/service/backup ${STAGING_INCDIR}/gammu/device \
+ ${STAGING_INCDIR}/gammu/device/irda ${STAGING_INCDIR}/gammu/device/bluetoth \
+ ${STAGING_INCDIR}/gammu/device/serial ${STAGING_INCDIR}/gammu/protocol \
+ ${STAGING_INCDIR}/gammu/protocol/at ${STAGING_INCDIR}/gammu/protocol/obex \
+ ${STAGING_INCDIR}/gammu/protocol/nokia ${STAGING_INCDIR}/gammu/protocol/symbian \
+ ${STAGING_INCDIR}/gammu/protocol/alcatel
+
+ oe_libinstall -so -C common libGammu ${STAGING_LIBDIR}
+
+ install -m 0644 common/*.h ${STAGING_INCDIR}/gammu/
+ install -m 0644 common/misc/*.h ${STAGING_INCDIR}/gammu/misc
+ install -m 0644 common/misc/coding/*.h ${STAGING_INCDIR}/gammu/misc/coding
+ install -m 0644 common/phone/*.h ${STAGING_INCDIR}/gammu/phone
+ install -m 0644 common/phone/at/*.h ${STAGING_INCDIR}/gammu/phone/at
+ install -m 0644 common/phone/obex/*.h ${STAGING_INCDIR}/gammu/phone/obex
+ install -m 0644 common/phone/nokia/*.h ${STAGING_INCDIR}/gammu/phone/nokia
+ install -m 0644 common/phone/nokia/dct3/*.h ${STAGING_INCDIR}/gammu/phone/nokia/dct3
+ install -m 0644 common/phone/nokia/dct4s40/*.h ${STAGING_INCDIR}/gammu/phone/nokia/dct4s40
+ install -m 0644 common/phone/symbian/*.h ${STAGING_INCDIR}/gammu/phone/symbian
+ install -m 0644 common/phone/alcatel/*.h ${STAGING_INCDIR}/gammu/phone/alcatel
+ install -m 0644 common/service/*.h ${STAGING_INCDIR}/gammu/service
+ install -m 0644 common/service/sms/*.h ${STAGING_INCDIR}/gammu/service/sms
+ install -m 0644 common/service/backup/*.h ${STAGING_INCDIR}/gammu/service/backup
+ install -m 0644 common/device/*.h ${STAGING_INCDIR}/gammu/device
+ install -m 0644 common/device/irda/*.h ${STAGING_INCDIR}/gammu/device/irda
+ install -m 0644 common/device/bluetoth/*.h ${STAGING_INCDIR}/gammu/device/bluetoth
+ install -m 0644 common/device/serial/*.h ${STAGING_INCDIR}/gammu/device/serial
+ install -m 0644 common/protocol/*.h ${STAGING_INCDIR}/gammu/protocol
+ install -m 0644 common/protocol/at/*.h ${STAGING_INCDIR}/gammu/protocol/at
+ install -m 0644 common/protocol/obex/*.h ${STAGING_INCDIR}/gammu/protocol/obex
+ install -m 0644 common/protocol/nokia/*.h ${STAGING_INCDIR}/gammu/protocol/nokia
+ install -m 0644 common/protocol/symbian/*.h ${STAGING_INCDIR}/gammu/protocol/symbian
+ install -m 0644 common/protocol/alcatel/*.h ${STAGING_INCDIR}/gammu/protocol/alcatel
+}
+
+do_install () {
+ oe_runmake 'DESTDIR=${D}' installshared
+}
+
+PACKAGES =+ "libgammu"
+
+FILES_${PN} = "${bindir}/gammu"
+FILES_libgammu = "${libdir}/libGammu.so*"
+
+PACKAGES_DYNAMIC = "gammu-locale-*"
+
+python populate_packages_prepend () {
+ help_dir = bb.data.expand('${datadir}/gammu/', d)
+
+ do_split_packages(d, help_dir, file_regex='^gammu_(.*)\.txt$', output_pattern='gammu-locale-%s', description='%s translation for Gammu')
+}
diff --git a/packages/gcc/gcc-4.1.1/801-arm-bigendian-eabi.patch b/packages/gcc/gcc-4.1.1/801-arm-bigendian-eabi.patch
new file mode 100644
index 0000000000..54490fc24f
--- /dev/null
+++ b/packages/gcc/gcc-4.1.1/801-arm-bigendian-eabi.patch
@@ -0,0 +1,14 @@
+Index: gcc-4.1.1/gcc/config/arm/linux-eabi.h
+===================================================================
+--- gcc-4.1.1.orig/gcc/config/arm/linux-eabi.h 2007-02-20 14:51:33.416193250 +0100
++++ gcc-4.1.1/gcc/config/arm/linux-eabi.h 2007-02-20 14:52:11.622581000 +0100
+@@ -48,7 +48,8 @@
+ #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
+
+ #undef SUBTARGET_EXTRA_LINK_SPEC
+-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi"
++#define SUBTARGET_EXTRA_LINK_SPEC \
++ " %{mbig-endian:-m armelfb_linux_eabi} %{mlittle-endian:-m armelf_linux_eabi} "
+
+ /* Use ld-linux.so.3 so that it will be possible to run "classic"
+ GNU/Linux binaries on an EABI system. */
diff --git a/packages/gcc/gcc-4.1.1/gcc-ignore-cache.patch b/packages/gcc/gcc-4.1.1/gcc-ignore-cache.patch
new file mode 100644
index 0000000000..396b4b2345
--- /dev/null
+++ b/packages/gcc/gcc-4.1.1/gcc-ignore-cache.patch
@@ -0,0 +1,15 @@
+--- /gcc/orig-configure 2007-03-11 21:50:28.000000000 +0200
++++ /gcc/configure 2007-03-11 21:53:27.000000000 +0200
+@@ -12272,9 +12272,11 @@
+ esac
+ saved_CFLAGS="${CFLAGS}"
+ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
++ CONFIG_SITE=""
+ ${realsrcdir}/configure \
+ --enable-languages=${enable_languages-all} \
+- --target=$target_alias --host=$build_alias --build=$build_alias
++ --target=$target_alias --host=$build_alias --build=$build_alias \
++ --cache-file=./tmp-cache
+ CFLAGS="${saved_CFLAGS}"
+
+ # We just finished tests for the build machine, so rename
diff --git a/packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch b/packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch
new file mode 100644
index 0000000000..166e79c7e9
--- /dev/null
+++ b/packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch
@@ -0,0 +1,2225 @@
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/ChangeLog gcc-41-20060515/gcc/ChangeLog
+--- gcc-41-20060515.orig/gcc/ChangeLog 2006-05-15 11:14:20.000000000 -0500
++++ gcc-41-20060515/gcc/ChangeLog 2006-05-15 14:00:27.693964000 -0500
+@@ -724,6 +724,51 @@
+ * reload1.c (choose_reload_regs): Added call of regno_clobbered_p
+ with new meaning of SETS.
+
++2006-02-14 Jakub Jelinek <jakub@redhat.com>
++ Aldy Hernandez <aldyh@redhat.com>
++
++ PR target/25864
++ * configure.ac: Add --with{out}-long-double-128 configure option.
++ (TARGET_DEFAULT_LONG_DOUBLE_128): New test.
++ * configure: Rebuilt.
++ * config.in: Rebuilt.
++ * doc/install.texi (Options specification): Document
++ --with-long-double-128.
++
++ * config.gcc (sparc-*-linux*): Add sparc/t-linux to tmake_file.
++ (sparc64-*-linux*): Likewise.
++ * config/sparc/t-linux64 (SHLIB_MAPFILES): Removed.
++ * config/sparc/t-linux: New file.
++ * config/sparc/libgcc-sparc-glibc.ver (__fixtfdi, __fixunstfdi,
++ __floatditf): Export at GCC_LDBL_3.0 if -m32 -mlong-double-128.
++ (__divtc3, __multc3, __powitf2): Export at GCC_LDBL_4.0.0 if
++ -m32 -mlong-double-128.
++
++ * config.gcc (alpha*-*-linux*): Add alpha/t-linux to tmake_file.
++ * config/alpha/t-linux: New file.
++ * config/alpha/libgcc-alpha-ldbl.ver: New file.
++
++ * config/sparc/linux.h (TARGET_OS_CPP_BUILTINS): Define
++ __LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128.
++ (CPP_SUBTARGET_SPEC): Don't add -D__LONG_DOUBLE_128__ here.
++ * config/sparc/linux64.h (TARGET_OS_CPP_BUILTINS): Define
++ __LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128 and TARGET_ARCH32.
++ (CPP_ARCH32_SPEC): Remove.
++
++ * config/s390/s390.c (override_options): Handle
++ TARGET_DEFAULT_LONG_DOUBLE_128.
++
++ * config/alpha/alpha.c (override_options): Handle
++ TARGET_DEFAULT_LONG_DOUBLE_128.
++
++ * config/sparc/sparc.c (sparc_override_options): Handle
++ TARGET_DEFAULT_LONG_DOUBLE_128.
++
++ * config/rs6000/linux.h [TARGET_DEFAULT_LONG_DOUBLE_128]
++ (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128.
++ * config/rs6000/linux64.h [TARGET_DEFAULT_LONG_DOUBLE_128]
++ (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128.
++
+ 2006-02-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * doc/install.texi: Add missing `@samp'.
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/alpha/alpha.c gcc-41-20060515/gcc/config/alpha/alpha.c
+--- gcc-41-20060515.orig/gcc/config/alpha/alpha.c 2006-05-15 11:13:49.000000000 -0500
++++ gcc-41-20060515/gcc/config/alpha/alpha.c 2006-05-15 13:47:27.566272961 -0500
+@@ -516,6 +516,11 @@ override_options (void)
+ REAL_MODE_FORMAT (DFmode) = &vax_g_format;
+ REAL_MODE_FORMAT (TFmode) = NULL;
+ }
++
++#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
++ if (!(target_flags_explicit & MASK_LONG_DOUBLE_128))
++ target_flags |= MASK_LONG_DOUBLE_128;
++#endif
+ }
+
+ /* Returns 1 if VALUE is a mask that contains full bytes of zero or ones. */
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/alpha/libgcc-alpha-ldbl.ver gcc-41-20060515/gcc/config/alpha/libgcc-alpha-ldbl.ver
+--- gcc-41-20060515.orig/gcc/config/alpha/libgcc-alpha-ldbl.ver 1969-12-31 18:00:00.000000000 -0600
++++ gcc-41-20060515/gcc/config/alpha/libgcc-alpha-ldbl.ver 2006-05-15 13:47:27.566272961 -0500
+@@ -0,0 +1,32 @@
++%ifdef __LONG_DOUBLE_128__
++
++# long double 128 bit support in libgcc_s.so.1 is only available
++# when configured with --with-long-double-128. Make sure all the
++# symbols are available at @@GCC_LDBL_* versions to make it clear
++# there is a configurable symbol set.
++
++%exclude {
++ __fixtfdi
++ __fixunstfdi
++ __floatditf
++
++ __divtc3
++ __multc3
++ __powitf2
++}
++
++%inherit GCC_LDBL_3.0 GCC_3.0
++GCC_LDBL_3.0 {
++ __fixtfdi
++ __fixunstfdi
++ __floatditf
++}
++
++%inherit GCC_LDBL_4.0.0 GCC_4.0.0
++GCC_LDBL_4.0.0 {
++ __divtc3
++ __multc3
++ __powitf2
++}
++
++%endif
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/alpha/t-linux gcc-41-20060515/gcc/config/alpha/t-linux
+--- gcc-41-20060515.orig/gcc/config/alpha/t-linux 1969-12-31 18:00:00.000000000 -0600
++++ gcc-41-20060515/gcc/config/alpha/t-linux 2006-05-15 13:47:27.567272807 -0500
+@@ -0,0 +1 @@
++SHLIB_MAPFILES += $(srcdir)/config/alpha/libgcc-alpha-ldbl.ver
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/rs6000/linux64.h gcc-41-20060515/gcc/config/rs6000/linux64.h
+--- gcc-41-20060515.orig/gcc/config/rs6000/linux64.h 2006-05-15 11:14:02.000000000 -0500
++++ gcc-41-20060515/gcc/config/rs6000/linux64.h 2006-05-15 13:47:27.568272653 -0500
+@@ -570,3 +570,8 @@ while (0)
+ #endif
+
+ #define POWERPC_LINUX
++
++/* ppc{32,64} linux has 128-bit long double support in glibc 2.4 and later. */
++#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
++#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
++#endif
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/rs6000/linux.h gcc-41-20060515/gcc/config/rs6000/linux.h
+--- gcc-41-20060515.orig/gcc/config/rs6000/linux.h 2006-05-15 11:14:02.000000000 -0500
++++ gcc-41-20060515/gcc/config/rs6000/linux.h 2006-05-15 13:47:27.567272807 -0500
+@@ -120,3 +120,8 @@
+ #endif
+
+ #define POWERPC_LINUX
++
++/* ppc linux has 128-bit long double support in glibc 2.4 and later. */
++#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
++#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
++#endif
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/s390/s390.c gcc-41-20060515/gcc/config/s390/s390.c
+--- gcc-41-20060515.orig/gcc/config/s390/s390.c 2006-05-15 11:13:50.000000000 -0500
++++ gcc-41-20060515/gcc/config/s390/s390.c 2006-05-15 13:47:27.574271730 -0500
+@@ -1415,6 +1415,11 @@ override_options (void)
+ }
+ else if (s390_stack_guard)
+ error ("-mstack-guard implies use of -mstack-size");
++
++#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
++ if (!(target_flags_explicit & MASK_LONG_DOUBLE_128))
++ target_flags |= MASK_LONG_DOUBLE_128;
++#endif
+ }
+
+ /* Map for smallest class containing reg regno. */
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/libgcc-sparc-glibc.ver gcc-41-20060515/gcc/config/sparc/libgcc-sparc-glibc.ver
+--- gcc-41-20060515.orig/gcc/config/sparc/libgcc-sparc-glibc.ver 2006-05-15 11:13:55.000000000 -0500
++++ gcc-41-20060515/gcc/config/sparc/libgcc-sparc-glibc.ver 2006-05-15 13:47:27.574271730 -0500
+@@ -26,3 +26,36 @@ GLIBC_VER {
+ __frame_state_for
+ __register_frame_info_table
+ }
++
++%if !defined (__arch64__) && defined (__LONG_DOUBLE_128__)
++
++# long double 128 bit support from 32-bit libgcc_s.so.1 is only available
++# when configured with --with-long-double-128. Make sure all the
++# symbols are available at @@GCC_LDBL_* versions to make it clear
++# there is a configurable symbol set.
++
++%exclude {
++ __fixtfdi
++ __fixunstfdi
++ __floatditf
++
++ __divtc3
++ __multc3
++ __powitf2
++}
++
++%inherit GCC_LDBL_3.0 GCC_3.0
++GCC_LDBL_3.0 {
++ __fixtfdi
++ __fixunstfdi
++ __floatditf
++}
++
++%inherit GCC_LDBL_4.0.0 GCC_4.0.0
++GCC_LDBL_4.0.0 {
++ __divtc3
++ __multc3
++ __powitf2
++}
++
++%endif
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/linux64.h gcc-41-20060515/gcc/config/sparc/linux64.h
+--- gcc-41-20060515.orig/gcc/config/sparc/linux64.h 2006-05-15 11:13:55.000000000 -0500
++++ gcc-41-20060515/gcc/config/sparc/linux64.h 2006-05-15 13:47:27.576271422 -0500
+@@ -20,22 +20,24 @@ along with GCC; see the file COPYING. I
+ the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+-#define TARGET_OS_CPP_BUILTINS() \
+- do \
+- { \
+- builtin_define_std ("unix"); \
+- builtin_define_std ("linux"); \
+- builtin_define ("_LONGLONG"); \
+- builtin_define ("__gnu_linux__"); \
+- builtin_assert ("system=linux"); \
+- builtin_assert ("system=unix"); \
+- builtin_assert ("system=posix"); \
+- if (flag_pic) \
+- { \
+- builtin_define ("__PIC__"); \
+- builtin_define ("__pic__"); \
+- } \
+- } \
++#define TARGET_OS_CPP_BUILTINS() \
++ do \
++ { \
++ builtin_define_std ("unix"); \
++ builtin_define_std ("linux"); \
++ builtin_define ("_LONGLONG"); \
++ builtin_define ("__gnu_linux__"); \
++ builtin_assert ("system=linux"); \
++ builtin_assert ("system=unix"); \
++ builtin_assert ("system=posix"); \
++ if (flag_pic) \
++ { \
++ builtin_define ("__PIC__"); \
++ builtin_define ("__pic__"); \
++ } \
++ if (TARGET_ARCH32 && TARGET_LONG_DOUBLE_128) \
++ builtin_define ("__LONG_DOUBLE_128__"); \
++ } \
+ while (0)
+
+ /* Don't assume anything about the header files. */
+@@ -59,13 +61,6 @@ Boston, MA 02110-1301, USA. */
+ #undef ASM_CPU_DEFAULT_SPEC
+ #define ASM_CPU_DEFAULT_SPEC "-Av9a"
+
+-#ifdef SPARC_BI_ARCH
+-
+-#undef CPP_ARCH32_SPEC
+-#define CPP_ARCH32_SPEC "%{mlong-double-128:-D__LONG_DOUBLE_128__}"
+-
+-#endif
+-
+ /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add
+ the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
+ provides part of the support for getting C++ file-scope static
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/linux.h gcc-41-20060515/gcc/config/sparc/linux.h
+--- gcc-41-20060515.orig/gcc/config/sparc/linux.h 2006-05-15 11:13:55.000000000 -0500
++++ gcc-41-20060515/gcc/config/sparc/linux.h 2006-05-15 13:47:27.575271576 -0500
+@@ -23,17 +23,19 @@ Boston, MA 02110-1301, USA. */
+ #define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+- builtin_define_std ("unix"); \
+- builtin_define_std ("linux"); \
+- builtin_define ("__gnu_linux__"); \
+- builtin_assert ("system=linux"); \
+- builtin_assert ("system=unix"); \
+- builtin_assert ("system=posix"); \
+- if (flag_pic) \
+- { \
+- builtin_define ("__PIC__"); \
+- builtin_define ("__pic__"); \
+- } \
++ builtin_define_std ("unix"); \
++ builtin_define_std ("linux"); \
++ builtin_define ("__gnu_linux__"); \
++ builtin_assert ("system=linux"); \
++ builtin_assert ("system=unix"); \
++ builtin_assert ("system=posix"); \
++ if (flag_pic) \
++ { \
++ builtin_define ("__PIC__"); \
++ builtin_define ("__pic__"); \
++ } \
++ if (TARGET_LONG_DOUBLE_128) \
++ builtin_define ("__LONG_DOUBLE_128__"); \
+ } \
+ while (0)
+
+@@ -100,8 +102,7 @@ Boston, MA 02110-1301, USA. */
+
+ #undef CPP_SUBTARGET_SPEC
+ #define CPP_SUBTARGET_SPEC \
+-"%{posix:-D_POSIX_SOURCE} \
+-%{pthread:-D_REENTRANT} %{mlong-double-128:-D__LONG_DOUBLE_128__}"
++"%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
+
+ #undef LIB_SPEC
+ #define LIB_SPEC \
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/sparc.c gcc-41-20060515/gcc/config/sparc/sparc.c
+--- gcc-41-20060515.orig/gcc/config/sparc/sparc.c 2006-05-15 11:13:55.000000000 -0500
++++ gcc-41-20060515/gcc/config/sparc/sparc.c 2006-05-15 13:47:27.581270653 -0500
+@@ -790,6 +790,11 @@ sparc_override_options (void)
+ sparc_costs = &ultrasparc3_costs;
+ break;
+ };
++
++#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
++ if (!(target_flags_explicit & MASK_LONG_DOUBLE_128))
++ target_flags |= MASK_LONG_DOUBLE_128;
++#endif
+ }
+
+ #ifdef SUBTARGET_ATTRIBUTE_TABLE
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/t-linux gcc-41-20060515/gcc/config/sparc/t-linux
+--- gcc-41-20060515.orig/gcc/config/sparc/t-linux 1969-12-31 18:00:00.000000000 -0600
++++ gcc-41-20060515/gcc/config/sparc/t-linux 2006-05-15 13:47:27.582270499 -0500
+@@ -0,0 +1,5 @@
++# Override t-slibgcc-elf-ver to export some libgcc symbols with
++# the symbol versions that glibc used.
++# Avoid the t-linux version file.
++SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
++ $(srcdir)/config/sparc/libgcc-sparc-glibc.ver
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/t-linux64 gcc-41-20060515/gcc/config/sparc/t-linux64
+--- gcc-41-20060515.orig/gcc/config/sparc/t-linux64 2006-05-15 11:13:55.000000000 -0500
++++ gcc-41-20060515/gcc/config/sparc/t-linux64 2006-05-15 13:47:27.582270499 -0500
+@@ -8,12 +8,6 @@ INSTALL_LIBGCC = install-multilib
+ EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \
+ crtfastmath.o
+
+-# Override t-slibgcc-elf-ver to export some libgcc symbols with
+-# the symbol versions that glibc used.
+-# Avoid the t-linux version file.
+-SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
+- $(srcdir)/config/sparc/libgcc-sparc-glibc.ver
+-
+ CRTSTUFF_T_CFLAGS = `if test x$$($(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) \
+ -print-multi-os-directory) \
+ = x../lib64; then echo -mcmodel=medany; fi`
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config.gcc gcc-41-20060515/gcc/config.gcc
+--- gcc-41-20060515.orig/gcc/config.gcc 2006-05-15 11:14:20.000000000 -0500
++++ gcc-41-20060515/gcc/config.gcc 2006-05-15 13:47:27.555274654 -0500
+@@ -568,7 +568,7 @@ alpha*-*-unicosmk*)
+ alpha*-*-linux*)
+ tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h"
+ target_cpu_default="MASK_GAS"
+- tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee"
++ tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee alpha/t-linux"
+ ;;
+ alpha*-*-gnu*)
+ target_cpu_default="MASK_GAS"
+@@ -2056,7 +2056,7 @@ sparc-*-elf*)
+ sparc-*-linux*) # SPARC's running GNU/Linux, libc6
+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h"
+ extra_options="${extra_options} sparc/long-double-switch.opt"
+- tmake_file="${tmake_file} sparc/t-crtfm"
++ tmake_file="${tmake_file} sparc/t-linux sparc/t-crtfm"
+ ;;
+ sparc-*-rtems*)
+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h"
+@@ -2175,7 +2175,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
+ sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
+ tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux64.h"
+ extra_options="${extra_options} sparc/long-double-switch.opt"
+- tmake_file="${tmake_file} sparc/t-linux64 sparc/t-crtfm"
++ tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
+ ;;
+ sparc64-*-netbsd*)
+ tm_file="sparc/biarch64.h ${tm_file}"
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config.in gcc-41-20060515/gcc/config.in
+--- gcc-41-20060515.orig/gcc/config.in 2006-05-15 11:14:20.000000000 -0500
++++ gcc-41-20060515/gcc/config.in 2006-05-15 13:47:27.559274038 -0500
+@@ -1277,6 +1277,12 @@
+ #endif
+
+
++/* Define if TFmode long double should be the default */
++#ifndef USED_FOR_TARGET
++#undef TARGET_DEFAULT_LONG_DOUBLE_128
++#endif
++
++
+ /* Define if your target C library provides stack protector support */
+ #ifndef USED_FOR_TARGET
+ #undef TARGET_LIBC_PROVIDES_SSP
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/configure gcc-41-20060515/gcc/configure
+--- gcc-41-20060515.orig/gcc/configure 2006-05-15 11:14:19.000000000 -0500
++++ gcc-41-20060515/gcc/configure 2006-05-15 13:47:27.594268652 -0500
+@@ -931,6 +931,7 @@ Optional Packages:
+ --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
+ --without-libiconv-prefix don't search for libiconv in includedir and libdir
+ --with-system-libunwind use installed libunwind
++ --with-long-double-128 Use 128-bit long double by default.
+ --with-gc={page,zone} choose the garbage collection mechanism to use
+ with the compiler
+ --with-system-zlib use installed libz
+@@ -7492,7 +7493,7 @@ if test "${gcc_cv_prog_makeinfo_modern+s
+ else
+ ac_prog_version=`$MAKEINFO --version 2>&1 |
+ sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
+- echo "configure:7495: version of makeinfo is $ac_prog_version" >&5
++ echo "configure:7496: version of makeinfo is $ac_prog_version" >&5
+ case $ac_prog_version in
+ '') gcc_cv_prog_makeinfo_modern=no;;
+ 4.[2-9]*)
+@@ -16213,6 +16214,46 @@ _ACEOF
+
+ fi
+
++# Check if TFmode long double should be used by default or not.
++# Some glibc targets used DFmode long double, but with glibc 2.4
++# and later they can use TFmode.
++case "$target" in
++ powerpc*-*-*gnu* | \
++ sparc*-*-linux* | \
++ s390*-*-linux* | \
++ alpha*-*-linux*)
++
++# Check whether --with-long-double-128 or --without-long-double-128 was given.
++if test "${with_long_double_128+set}" = set; then
++ withval="$with_long_double_128"
++ gcc_cv_target_ldbl128="$with_long_double_128"
++else
++ gcc_cv_target_ldbl128=no
++ if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
++ if test "x$with_sysroot" = x; then
++ glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
++ elif test "x$with_sysroot" = xyes; then
++ glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
++ else
++ glibc_header_dir="${with_sysroot}/usr/include"
++ fi
++ else
++ glibc_header_dir=/usr/include
++ fi
++ grep '^ *#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
++ $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \
++ && gcc_cv_target_ldbl128=yes
++fi;
++ ;;
++esac
++if test x$gcc_cv_target_ldbl128 = xyes; then
++
++cat >>confdefs.h <<\_ACEOF
++#define TARGET_DEFAULT_LONG_DOUBLE_128 1
++_ACEOF
++
++fi
++
+ # Find out what GC implementation we want, or may, use.
+
+ # Check whether --with-gc or --without-gc was given.
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/configure.ac gcc-41-20060515/gcc/configure.ac
+--- gcc-41-20060515.orig/gcc/configure.ac 2006-05-15 11:14:20.000000000 -0500
++++ gcc-41-20060515/gcc/configure.ac 2006-05-15 13:47:27.597400000 -0500
+@@ -3130,6 +3130,39 @@ if test x$gcc_cv_libc_provides_ssp = xye
+ [Define if your target C library provides stack protector support])
+ fi
+
++# Check if TFmode long double should be used by default or not.
++# Some glibc targets used DFmode long double, but with glibc 2.4
++# and later they can use TFmode.
++case "$target" in
++ powerpc*-*-*gnu* | \
++ sparc*-*-linux* | \
++ s390*-*-linux* | \
++ alpha*-*-linux*)
++ AC_ARG_WITH(long-double-128,
++[ --with-long-double-128 Use 128-bit long double by default.],
++ gcc_cv_target_ldbl128="$with_long_double_128",
++ [gcc_cv_target_ldbl128=no
++ if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
++ if test "x$with_sysroot" = x; then
++ glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
++ elif test "x$with_sysroot" = xyes; then
++ glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
++ else
++ glibc_header_dir="${with_sysroot}/usr/include"
++ fi
++ else
++ glibc_header_dir=/usr/include
++ fi
++ grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
++ $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \
++ && gcc_cv_target_ldbl128=yes])
++ ;;
++esac
++if test x$gcc_cv_target_ldbl128 = xyes; then
++ AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
++ [Define if TFmode long double should be the default])
++fi
++
+ # Find out what GC implementation we want, or may, use.
+ AC_ARG_WITH(gc,
+ [ --with-gc={page,zone} choose the garbage collection mechanism to use
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/doc/install.texi gcc-41-20060515/gcc/doc/install.texi
+--- gcc-41-20060515.orig/gcc/doc/install.texi 2006-05-15 11:10:10.000000000 -0500
++++ gcc-41-20060515/gcc/doc/install.texi 2006-05-15 13:47:27.600399538 -0500
+@@ -1224,6 +1224,14 @@ error message.
+ All support for systems which have been obsoleted in one release of GCC
+ is removed entirely in the next major release, unless someone steps
+ forward to maintain the port.
++
++@item --with-long-double-128
++Specify if @code{long double} type should be 128-bit by default on selected
++GNU/Linux architectures. If using @code{--without-long-double-128},
++@code{long double} will be by default 64-bit, the same as @code{double} type.
++When neither of these configure options are used, the default will be
++128-bit @code{long double} when built against GNU C Library 2.4 and later,
++64-bit @code{long double} otherwise.
+ @end table
+
+ @subheading Cross-Compiler-Specific Options
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/ChangeLog gcc-41-20060515/libstdc++-v3/ChangeLog
+--- gcc-41-20060515.orig/libstdc++-v3/ChangeLog 2006-05-15 11:15:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/ChangeLog 2006-05-15 14:02:07.401662657 -0500
+@@ -153,6 +153,64 @@
+ Likewise.
+ * docs/html/ext/pb_assoc/tree_assoc_cntnr_node_iterator.html: Likewise.
+
++2006-02-07 Jakub Jelinek <jakub@redhat.com>
++ Benjamin Kosnik <bkoz@redhat.com>
++
++ PR target/25864
++ * configure.ac (_GLIBCXX_LONG_DOUBLE_COMPAT): New check.
++ If true, set also port_specific_symbol_files and create
++ as_symver_specs.
++ (GLIBCXX_LDBL_COMPAT): New GLIBCXX_CONDITIONAL.
++ * configure: Rebuilt.
++ * config.h.in: Rebuilt.
++ * config/os/gnu-linux/ldbl-extra.ver: New file.
++ * config/linker-map.gnu: Make sure no __float128 symbols are
++ exported.
++ * include/bits/c++config (_GLIBCXX_LONG_DOUBLE_COMPAT,
++ _GLIBCXX_LDBL_NAMESPACE, _GLIBCXX_BEGIN_LDBL_NAMESPACE,
++ _GLIBCXX_END_LDBL_NAMESPACE): Define.
++ * include/bits/localefwd.h: Use them to conditionally scope facets.
++ * include/bits/locale_facets.h: Surround std::{money,num}_{get,put}
++ with _GLIBCXX_BEGIN_LDBL_NAMESPACE and _GLIBCXX_END_LDBL_NAMESPACE.
++ [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::money_get): Add __do_get method.
++ [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::money_put): Add __do_put method.
++ [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::num_get): Add __do_get method.
++ [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::num_put): Add __do_put method.
++ * include/bits/locale_facets.tcc: Surround std::{money,num}_{get,put}
++ with _GLIBCXX_BEGIN_LDBL_NAMESPACE and _GLIBCXX_END_LDBL_NAMESPACE.
++ (std::money_get::__do_get, std::money_put::__do_put,
++ std::num_get::__do_get, std::num_put::__do_put): New
++ specializations.
++ * include/Makefile.am: Conditionally define
++ _GLIBCXX_LONG_DOUBLE_COMPAT in c++config.
++ * include/Makefile.in: Regenerate.
++ * src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT] (_GLIBCXX_LOC_ID,
++ _GLIBCXX_SYNC_ID): Define, use them.
++ * src/compatibility-ldbl.cc: New file.
++ * src/complex_io.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Add compatibility
++ symbols.
++ * src/limits.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
++ * src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
++ * src/locale-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
++ * src/locale-misc-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
++ * src/istream-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
++ * src/ostream-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
++ * src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
++ * src/wlocale-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
++ * src/compatibility.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
++ * config/locale/generic/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]:
++ Likewise.
++ * config/locale/gnu/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]:
++ Likewise.
++ * src/Makefile.am (libstdc++-symbol.ver): Append instead of
++ insert in the middle if port specific symbol file requests it.
++ (ldbl_compat_sources): New variable.
++ (sources): Use it.
++ (compatibility-ldbl.lo, compatibility-ldbl.o): New rules.
++ * src/Makefile.in: Rebuilt.
++ * testsuite/testsuite_abi.cc: Recognize GLIBCXX_LDBL_3.4,
++ GLIBCXX_LDBL_3.4.7, CXXABI_LDBL_1.3.
++
+ 2006-02-07 Paolo Carlini <pcarlini@suse.de>
+
+ * include/tr1/hashtable: Trivial formatting fixes.
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/config/linker-map.gnu gcc-41-20060515/libstdc++-v3/config/linker-map.gnu
+--- gcc-41-20060515.orig/libstdc++-v3/config/linker-map.gnu 2006-05-15 11:15:41.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/config/linker-map.gnu 2006-05-15 13:47:27.603399076 -0500
+@@ -1,6 +1,6 @@
+ ## Linker script for GNU ld 2.13.91+ only.
+ ##
+-## Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
++## Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ ##
+ ## This file is part of the libstdc++ version 3 distribution.
+ ##
+@@ -44,7 +44,10 @@ GLIBCXX_3.4 {
+ std::basic_[j-n]*;
+ std::basic_o[a-e]*;
+ # std::basic_ofstream;
+- std::basic_o[g-z]*;
++# std::basic_o[g-z]*;
++ std::basic_o[g-r]*;
++ std::basic_ostr[a-d]*;
++ std::basic_ostr[f-z]*;
+ std::basic_[p-r]*;
+ std::basic_streambuf*;
+ # std::basic_string
+@@ -88,7 +91,14 @@ GLIBCXX_3.4 {
+ std::locale::_[J-Ra-z]*;
+ std::locale::_S_normalize_category*;
+ std::locale::_[T-Za-z]*;
+- std::[A-Zm-r]*;
++# std::[A-Zm-r]*;
++ std::[A-Zmp-r]*;
++ std::n[^u]*;
++ std::nu[^m]*;
++ std::num[^e]*;
++ std::ostrstream*;
++ std::out_of_range*;
++ std::overflow_error*;
+ std::set_new_handler*;
+ std::set_terminate*;
+ std::set_unexpected*;
+@@ -256,7 +266,7 @@ GLIBCXX_3.4 {
+ _ZNSi[0-9][a-h]*;
+ _ZNSi[0-9][j-z]*;
+ _ZNSi6ignoreE[il][il];
+- _ZNSirsE*;
++ _ZNSirsE*[^g];
+
+ # std::basic_istream<wchar_t>
+ _ZNSt13basic_istreamIwSt11char_traitsIwEEC*;
+@@ -265,7 +275,7 @@ GLIBCXX_3.4 {
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE[0-9][a-h]*;
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE[0-9][j-z]*;
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[il][ijlm];
+- _ZNSt13basic_istreamIwSt11char_traitsIwEErsE*;
++ _ZNSt13basic_istreamIwSt11char_traitsIwEErsE*[^g];
+
+ # std::istream operators and inserters
+ _ZSt7getlineI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_istream*;
+@@ -277,6 +287,37 @@ GLIBCXX_3.4 {
+ _ZStrsIe[cw]St11char_traitsI[cw]EERSt13basic_istream*;
+ _ZStrsIf[cw]St11char_traitsI[cw]EERSt13basic_istream*;
+
++ # std::basic_ostream<char>
++ _ZNSoC*;
++ _ZNSoD*;
++ _ZNKSo6sentrycvbEv;
++ _ZNSo8_M_write*;
++ _ZNSo[0-9][a-z]*;
++ _ZNSolsE*[^g];
++
++ # std::basic_ostream<wchar_t>
++ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC*;
++ _ZNSt13basic_ostreamIwSt11char_traitsIwEED*;
++ _ZNKSt13basic_ostreamIwSt11char_traitsIwEE[0-9][a-z]*;
++ _ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw;
++ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv;
++ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpE*;
++ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv;
++ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKw*;
++ _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentry*;
++ _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_write*;
++ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsE*[^g];
++
++ # std::ostream operators and inserters
++ _ZSt4end[ls]I[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
++ _ZSt5flushI[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
++ _ZStlsI[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
++ _ZStlsI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_ostream*;
++ _ZStlsISt11char_traitsI[cw]EERSt13basic_ostream*;
++ _ZStlsId[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
++ _ZStlsIe[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
++ _ZStlsIf[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
++
+ # std::locale destructors
+ _ZNSt6localeD*;
+
+@@ -292,14 +333,23 @@ GLIBCXX_3.4 {
+ _ZNSt8ios_base4InitD*;
+
+ # bool std::has_facet
+- _ZSt9has_facet*;
++ _ZSt9has_facetIS*;
+
+ # std::num_get
+ _ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
+
++ # std::num_put
++ _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
++
+ # std::money_get
+ _ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
+
++ # std::money_put
++ _ZNKSt9money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
++
++ # std::numeric_limits
++ _ZNSt14numeric_limitsI[^g]*;
++
+ # std::_Rb_tree
+ _ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base;
+ _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base;
+@@ -327,7 +377,7 @@ GLIBCXX_3.4 {
+ _ZNSt12__basic_fileIcED*;
+
+ # std::__convert_to_v
+- _ZSt14__convert_to_v*;
++ _ZSt14__convert_to_vI[^g]*;
+
+ # __gnu_cxx::stdio_sync_filebuf
+ _ZTVN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
+@@ -399,7 +449,8 @@ GLIBCXX_3.4 {
+ _ZTSN9__gnu_cxx13stdio_filebufI[cw]St11char_traitsI[cw]EEE;
+
+ # function-scope static objects requires a guard variable.
+- _ZGVNSt*;
++ _ZGVNSt[^1]*;
++ _ZGVNSt1[^7]*;
+
+ # virtual function thunks
+ _ZThn8_NS*;
+@@ -665,9 +716,9 @@ CXXABI_1.3 {
+ _ZTVN10__cxxabiv121__vmi_class_type_infoE;
+
+ # typeinfo structure (and some names)
+- _ZTI[a-z];
+- _ZTIP[a-z];
+- _ZTIPK[a-z];
++ _ZTI[a-fh-z];
++ _ZTIP[a-fh-z];
++ _ZTIPK[a-fh-z];
+ _ZTIN10__cxxabiv117__array_type_infoE;
+ _ZTIN10__cxxabiv117__class_type_infoE;
+ _ZTIN10__cxxabiv116__enum_type_infoE;
+@@ -680,9 +731,9 @@ CXXABI_1.3 {
+ _ZTIN10__cxxabiv121__vmi_class_type_infoE;
+
+ # typeinfo name
+- _ZTS[a-z];
+- _ZTSP[a-z];
+- _ZTSPK[a-z];
++ _ZTS[a-fh-z];
++ _ZTSP[a-fh-z];
++ _ZTSPK[a-fh-z];
+ _ZTSN10__cxxabiv117__array_type_infoE;
+ _ZTSN10__cxxabiv117__class_type_infoE;
+ _ZTSN10__cxxabiv116__enum_type_infoE;
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/config/locale/generic/c_locale.cc gcc-41-20060515/libstdc++-v3/config/locale/generic/c_locale.cc
+--- gcc-41-20060515.orig/libstdc++-v3/config/locale/generic/c_locale.cc 2006-05-15 11:15:39.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/config/locale/generic/c_locale.cc 2006-05-15 13:47:27.605398768 -0500
+@@ -1,6 +1,6 @@
+ // Wrapper for underlying C-language localization -*- C++ -*-
+
+-// Copyright (C) 2001, 2002, 2003, 2004, 2005
++// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -168,3 +168,10 @@ namespace std
+ {
+ const char* const* const locale::_S_categories = __gnu_cxx::category_names;
+ } // namespace std
++
++// XXX GLIBCXX_ABI Deprecated
++#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
++#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
++ extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
++_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
++#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/config/locale/gnu/c_locale.cc gcc-41-20060515/libstdc++-v3/config/locale/gnu/c_locale.cc
+--- gcc-41-20060515.orig/libstdc++-v3/config/locale/gnu/c_locale.cc 2006-05-15 11:15:39.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/config/locale/gnu/c_locale.cc 2006-05-15 13:47:27.606398615 -0500
+@@ -1,6 +1,6 @@
+ // Wrapper for underlying C-language localization -*- C++ -*-
+
+-// Copyright (C) 2001, 2002, 2003, 2004, 2005
++// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -132,3 +132,10 @@ namespace std
+ {
+ const char* const* const locale::_S_categories = __gnu_cxx::category_names;
+ } // namespace std
++
++// XXX GLIBCXX_ABI Deprecated
++#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
++#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
++ extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
++_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct);
++#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver gcc-41-20060515/libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver
+--- gcc-41-20060515.orig/libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver 1969-12-31 18:00:00.000000000 -0600
++++ gcc-41-20060515/libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver 2006-05-15 13:47:27.606398615 -0500
+@@ -0,0 +1,19 @@
++# Appended to version file.
++
++GLIBCXX_LDBL_3.4 {
++ _ZNSt14numeric_limitsIg*;
++ _ZNSirsERg;
++ _ZNSolsEg;
++ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg;
++ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg;
++ _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP*;
++ _ZStlsIg[cw]St11char_traitsI[cw]EERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E;
++ _ZStrsIg[cw]St11char_traitsI[cw]EERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E;
++ *__gnu_cxx_ldbl128*;
++};
++
++CXXABI_LDBL_1.3 {
++ _ZT[IS]g;
++ _ZT[IS]Pg;
++ _ZT[IS]PKg;
++};
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/config.h.in gcc-41-20060515/libstdc++-v3/config.h.in
+--- gcc-41-20060515.orig/libstdc++-v3/config.h.in 2006-05-15 11:15:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/config.h.in 2006-05-15 13:47:27.601399384 -0500
+@@ -658,6 +658,9 @@
+ /* Define to 1 if a full hosted library is built, or 0 if freestanding. */
+ #undef _GLIBCXX_HOSTED
+
++/* Define if compatibility should be provided for -mlong-double-64. */
++#undef _GLIBCXX_LONG_DOUBLE_COMPAT
++
+ /* Define if ptrdiff_t is int. */
+ #undef _GLIBCXX_PTRDIFF_T_IS_INT
+
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/configure gcc-41-20060515/libstdc++-v3/configure
+--- gcc-41-20060515.orig/libstdc++-v3/configure 2006-05-15 11:15:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/configure 2006-05-15 13:47:27.664389689 -0500
+@@ -309,7 +309,7 @@ ac_includes_default="\
+ # 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 libtool_VERSION multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar glibcxx_builddir glibcxx_srcdir toplevel_srcdir CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LN_S AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBTOOL CXXCPP CPPFLAGS enable_shared enable_static GLIBCXX_HOSTED_TRUE GLIBCXX_HOSTED_FALSE GLIBCXX_BUILD_PCH_TRUE GLIBCXX_BUILD_PCH_FALSE glibcxx_PCHFLAGS CSTDIO_H BASIC_FILE_H BASIC_FILE_CC CPP EGREP check_msgfmt glibcxx_MOFILES glibcxx_POFILES glibcxx_localedir USE_NLS CLOCALE_H CMESSAGES_H CCODECVT_CC CCOLLATE_CC CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_H CTIME_CC CLOCALE_CC CLOCALE_INTERNAL_H ALLOCATOR_H ALLOCATOR_NAME C_INCLUDE_DIR GLIBCXX_C_HEADERS_C_TRUE GLIBCXX_C_HEADERS_C_FALSE GLIBCXX_C_HEADERS_C_STD_TRUE GLIBCXX_C_HEADERS_C_STD_FALSE GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE DEBUG_FLAGS GLIBCXX_BUILD_DEBUG_TRUE GLIBCXX_BUILD_DEBUG_FALSE EXTRA_CXX_FLAGS glibcxx_thread_h WERROR SECTION_FLAGS SECTION_LDFLAGS OPT_LDFLAGS LIBMATHOBJS LIBICONV SYMVER_MAP port_specific_symbol_files ENABLE_SYMVERS_GNU_TRUE ENABLE_SYMVERS_GNU_FALSE ENABLE_SYMVERS_DARWIN_EXPORT_TRUE ENABLE_SYMVERS_DARWIN_EXPORT_FALSE baseline_dir ATOMICITY_SRCDIR ATOMIC_WORD_SRCDIR CPU_DEFINES_SRCDIR ABI_TWEAKS_SRCDIR OS_INC_SRCDIR glibcxx_prefixdir gxx_include_dir glibcxx_toolexecdir glibcxx_toolexeclibdir GLIBCXX_INCLUDES TOPLEVEL_INCLUDES OPTIMIZE_CXXFLAGS WARN_FLAGS LIBSUPCXX_PICFLAGS LIBOBJS LTLIBOBJS'
++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 libtool_VERSION multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar glibcxx_builddir glibcxx_srcdir toplevel_srcdir CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LN_S AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBTOOL CXXCPP CPPFLAGS enable_shared enable_static GLIBCXX_HOSTED_TRUE GLIBCXX_HOSTED_FALSE GLIBCXX_BUILD_PCH_TRUE GLIBCXX_BUILD_PCH_FALSE glibcxx_PCHFLAGS CSTDIO_H BASIC_FILE_H BASIC_FILE_CC CPP EGREP check_msgfmt glibcxx_MOFILES glibcxx_POFILES glibcxx_localedir USE_NLS CLOCALE_H CMESSAGES_H CCODECVT_CC CCOLLATE_CC CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_H CTIME_CC CLOCALE_CC CLOCALE_INTERNAL_H ALLOCATOR_H ALLOCATOR_NAME C_INCLUDE_DIR GLIBCXX_C_HEADERS_C_TRUE GLIBCXX_C_HEADERS_C_FALSE GLIBCXX_C_HEADERS_C_STD_TRUE GLIBCXX_C_HEADERS_C_STD_FALSE GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE DEBUG_FLAGS GLIBCXX_BUILD_DEBUG_TRUE GLIBCXX_BUILD_DEBUG_FALSE EXTRA_CXX_FLAGS glibcxx_thread_h WERROR SECTION_FLAGS SECTION_LDFLAGS OPT_LDFLAGS LIBMATHOBJS LIBICONV SYMVER_MAP port_specific_symbol_files ENABLE_SYMVERS_GNU_TRUE ENABLE_SYMVERS_GNU_FALSE ENABLE_SYMVERS_DARWIN_EXPORT_TRUE ENABLE_SYMVERS_DARWIN_EXPORT_FALSE GLIBCXX_LDBL_COMPAT_TRUE GLIBCXX_LDBL_COMPAT_FALSE baseline_dir ATOMICITY_SRCDIR ATOMIC_WORD_SRCDIR CPU_DEFINES_SRCDIR ABI_TWEAKS_SRCDIR OS_INC_SRCDIR glibcxx_prefixdir gxx_include_dir glibcxx_toolexecdir glibcxx_toolexeclibdir GLIBCXX_INCLUDES TOPLEVEL_INCLUDES OPTIMIZE_CXXFLAGS WARN_FLAGS LIBSUPCXX_PICFLAGS LIBOBJS LTLIBOBJS'
+ ac_subst_files=''
+
+ # Initialize some variables set by options.
+@@ -87959,6 +87959,72 @@ echo "${ECHO_T}$glibcxx_ptrdiff_t_is_i"
+ echo "$as_me: versioning on shared library symbols is $enable_symvers" >&6;}
+
+
++ac_ldbl_compat=no
++case "$target" in
++ powerpc*-*-*gnu* | \
++ sparc*-*-linux* | \
++ s390*-*-linux* | \
++ alpha*-*-linux*)
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++#if !defined __LONG_DOUBLE_128__ || (defined(__sparc__) && defined(__arch64__))
++#error no need for long double compatibility
++#endif
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_ldbl_compat=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_ldbl_compat=no
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++ if test "$ac_ldbl_compat" = yes; then
++
++cat >>confdefs.h <<\_ACEOF
++#define _GLIBCXX_LONG_DOUBLE_COMPAT 1
++_ACEOF
++
++ port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver"
++ fi
++esac
++
++
+ # This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
+
+ if $GLIBCXX_IS_NATIVE ; then
+@@ -88811,6 +88877,17 @@ fi
+
+
+
++if test $ac_ldbl_compat = yes; then
++ GLIBCXX_LDBL_COMPAT_TRUE=
++ GLIBCXX_LDBL_COMPAT_FALSE='#'
++else
++ GLIBCXX_LDBL_COMPAT_TRUE='#'
++ GLIBCXX_LDBL_COMPAT_FALSE=
++fi
++
++
++
++
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+@@ -89166,6 +89243,13 @@ echo "$as_me: error: conditional \"ENABL
+ Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
++if test -z "${GLIBCXX_LDBL_COMPAT_TRUE}" && test -z "${GLIBCXX_LDBL_COMPAT_FALSE}"; then
++ { { echo "$as_me:$LINENO: error: conditional \"GLIBCXX_LDBL_COMPAT\" was never defined.
++Usually this means the macro was only invoked conditionally." >&5
++echo "$as_me: error: conditional \"GLIBCXX_LDBL_COMPAT\" was never defined.
++Usually this means the macro was only invoked conditionally." >&2;}
++ { (exit 1); exit 1; }; }
++fi
+
+ : ${CONFIG_STATUS=./config.status}
+ ac_clean_files_save=$ac_clean_files
+@@ -89836,6 +89920,8 @@ s,@ENABLE_SYMVERS_GNU_TRUE@,$ENABLE_SYMV
+ s,@ENABLE_SYMVERS_GNU_FALSE@,$ENABLE_SYMVERS_GNU_FALSE,;t t
+ s,@ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@,$ENABLE_SYMVERS_DARWIN_EXPORT_TRUE,;t t
+ s,@ENABLE_SYMVERS_DARWIN_EXPORT_FALSE@,$ENABLE_SYMVERS_DARWIN_EXPORT_FALSE,;t t
++s,@GLIBCXX_LDBL_COMPAT_TRUE@,$GLIBCXX_LDBL_COMPAT_TRUE,;t t
++s,@GLIBCXX_LDBL_COMPAT_FALSE@,$GLIBCXX_LDBL_COMPAT_FALSE,;t t
+ s,@baseline_dir@,$baseline_dir,;t t
+ s,@ATOMICITY_SRCDIR@,$ATOMICITY_SRCDIR,;t t
+ s,@ATOMIC_WORD_SRCDIR@,$ATOMIC_WORD_SRCDIR,;t t
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/configure.ac gcc-41-20060515/libstdc++-v3/configure.ac
+--- gcc-41-20060515.orig/libstdc++-v3/configure.ac 2006-05-15 11:15:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/configure.ac 2006-05-15 13:47:27.665389535 -0500
+@@ -281,6 +281,25 @@ fi
+ # This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no.
+ GLIBCXX_ENABLE_SYMVERS([yes])
+
++ac_ldbl_compat=no
++case "$target" in
++ powerpc*-*-*gnu* | \
++ sparc*-*-linux* | \
++ s390*-*-linux* | \
++ alpha*-*-linux*)
++ AC_TRY_COMPILE(, [
++#if !defined __LONG_DOUBLE_128__ || (defined(__sparc__) && defined(__arch64__))
++#error no need for long double compatibility
++#endif
++ ], [ac_ldbl_compat=yes], [ac_ldbl_compat=no])
++ if test "$ac_ldbl_compat" = yes; then
++ AC_DEFINE([_GLIBCXX_LONG_DOUBLE_COMPAT],1,
++ [Define if compatibility should be provided for -mlong-double-64.])
++ port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver"
++ fi
++esac
++GLIBCXX_CONDITIONAL(GLIBCXX_LDBL_COMPAT, test $ac_ldbl_compat = yes)
++
+ # This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
+ GLIBCXX_CONFIGURE_TESTSUITE
+
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/include/bits/c++config gcc-41-20060515/libstdc++-v3/include/bits/c++config
+--- gcc-41-20060515.orig/libstdc++-v3/include/bits/c++config 2006-05-15 11:14:38.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/include/bits/c++config 2006-05-15 13:47:27.668389073 -0500
+@@ -1,6 +1,6 @@
+ // Predefined symbols and macros -*- C++ -*-
+
+-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -65,6 +65,26 @@ namespace std
+ # define _GLIBCXX_STD std
+ #endif
+
++/* Define if compatibility should be provided for -mlong-double-64. */
++#undef _GLIBCXX_LONG_DOUBLE_COMPAT
++
++// XXX GLIBCXX_ABI Deprecated
++// Namespace associations for long double 128 mode.
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
++# define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128::
++# define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 {
++# define _GLIBCXX_END_LDBL_NAMESPACE }
++namespace std
++{
++ namespace __gnu_cxx_ldbl128 { }
++ using namespace __gnu_cxx_ldbl128 __attribute__((__strong__));
++}
++#else
++# define _GLIBCXX_LDBL_NAMESPACE
++# define _GLIBCXX_BEGIN_LDBL_NAMESPACE
++# define _GLIBCXX_END_LDBL_NAMESPACE
++#endif
++
+ // Allow use of "export template." This is currently not a feature
+ // that g++ supports.
+ // #define _GLIBCXX_EXPORT_TEMPLATE 1
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/include/bits/locale_facets.h gcc-41-20060515/libstdc++-v3/include/bits/locale_facets.h
+--- gcc-41-20060515.orig/libstdc++-v3/include/bits/locale_facets.h 2006-05-15 11:14:38.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/include/bits/locale_facets.h 2006-05-15 13:47:27.673388304 -0500
+@@ -1,6 +1,6 @@
+ // Locale support -*- C++ -*-
+
+-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -1910,6 +1910,7 @@ namespace std
+ ~numpunct_byname() { }
+ };
+
++_GLIBCXX_BEGIN_LDBL_NAMESPACE
+ /**
+ * @brief Facet for parsing number strings.
+ *
+@@ -2176,13 +2177,27 @@ namespace std
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ double&) const;
+
++ // XXX GLIBCXX_ABI Deprecated
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
++ virtual iter_type
++ __do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
++ double&) const;
++#else
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ long double&) const;
++#endif
+
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ void*&) const;
++
++ // XXX GLIBCXX_ABI Deprecated
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
++ virtual iter_type
++ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
++ long double&) const;
++#endif
+ //@}
+ };
+
+@@ -2438,17 +2453,30 @@ namespace std
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, double __v) const;
+
++ // XXX GLIBCXX_ABI Deprecated
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
++ virtual iter_type
++ __do_put(iter_type, ios_base&, char_type __fill, double __v) const;
++#else
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
++#endif
+
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, const void* __v) const;
++
++ // XXX GLIBCXX_ABI Deprecated
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
++ virtual iter_type
++ do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
++#endif
+ //@}
+ };
+
+ template <typename _CharT, typename _OutIter>
+ locale::id num_put<_CharT, _OutIter>::id;
+
++_GLIBCXX_END_LDBL_NAMESPACE
+
+ /**
+ * @brief Facet for localized string comparison.
+@@ -3953,6 +3981,7 @@ namespace std
+ template<typename _CharT, bool _Intl>
+ const bool moneypunct_byname<_CharT, _Intl>::intl;
+
++_GLIBCXX_BEGIN_LDBL_NAMESPACE
+ /**
+ * @brief Facet for parsing monetary amounts.
+ *
+@@ -4064,9 +4093,16 @@ namespace std
+ * value. This function is a hook for derived classes to change the
+ * value returned. @see get() for details.
+ */
++ // XXX GLIBCXX_ABI Deprecated
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
++ virtual iter_type
++ __do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
++ ios_base::iostate& __err, double& __units) const;
++#else
+ virtual iter_type
+ do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
+ ios_base::iostate& __err, long double& __units) const;
++#endif
+
+ /**
+ * @brief Read and parse a monetary value.
+@@ -4079,6 +4115,13 @@ namespace std
+ do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
+ ios_base::iostate& __err, string_type& __digits) const;
+
++ // XXX GLIBCXX_ABI Deprecated
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
++ virtual iter_type
++ do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
++ ios_base::iostate& __err, long double& __units) const;
++#endif
++
+ template<bool _Intl>
+ iter_type
+ _M_extract(iter_type __s, iter_type __end, ios_base& __io,
+@@ -4191,9 +4234,16 @@ namespace std
+ * @param units Place to store result of parsing.
+ * @return Iterator after writing.
+ */
++ // XXX GLIBCXX_ABI Deprecated
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
++ virtual iter_type
++ __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
++ double __units) const;
++#else
+ virtual iter_type
+ do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
+ long double __units) const;
++#endif
+
+ /**
+ * @brief Format and output a monetary value.
+@@ -4217,6 +4267,13 @@ namespace std
+ do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
+ const string_type& __digits) const;
+
++ // XXX GLIBCXX_ABI Deprecated
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
++ virtual iter_type
++ do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
++ long double __units) const;
++#endif
++
+ template<bool _Intl>
+ iter_type
+ _M_insert(iter_type __s, ios_base& __io, char_type __fill,
+@@ -4226,6 +4283,8 @@ namespace std
+ template<typename _CharT, typename _OutIter>
+ locale::id money_put<_CharT, _OutIter>::id;
+
++_GLIBCXX_END_LDBL_NAMESPACE
++
+ /**
+ * @brief Messages facet base class providing catalog typedef.
+ */
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/include/bits/locale_facets.tcc gcc-41-20060515/libstdc++-v3/include/bits/locale_facets.tcc
+--- gcc-41-20060515.orig/libstdc++-v3/include/bits/locale_facets.tcc 2006-05-15 11:14:38.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/include/bits/locale_facets.tcc 2006-05-15 13:47:27.676387842 -0500
+@@ -1,6 +1,6 @@
+ // Locale support -*- C++ -*-
+
+-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -272,6 +272,8 @@ namespace std
+ __verify_grouping(const char* __grouping, size_t __grouping_size,
+ const string& __grouping_tmp);
+
++_GLIBCXX_BEGIN_LDBL_NAMESPACE
++
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+@@ -446,6 +448,8 @@ namespace std
+ return __beg;
+ }
+
++_GLIBCXX_END_LDBL_NAMESPACE
++
+ template<typename _ValueT>
+ struct __to_unsigned_type
+ { typedef _ValueT __type; };
+@@ -460,6 +464,8 @@ namespace std
+ { typedef unsigned long long __type; };
+ #endif
+
++_GLIBCXX_BEGIN_LDBL_NAMESPACE
++
+ template<typename _CharT, typename _InIter>
+ template<typename _ValueT>
+ _InIter
+@@ -772,6 +778,21 @@ namespace std
+ return __beg;
+ }
+
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
++ template<typename _CharT, typename _InIter>
++ _InIter
++ num_get<_CharT, _InIter>::
++ __do_get(iter_type __beg, iter_type __end, ios_base& __io,
++ ios_base::iostate& __err, double& __v) const
++ {
++ string __xtrc;
++ __xtrc.reserve(32);
++ __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
++ std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
++ return __beg;
++ }
++#endif
++
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+@@ -822,6 +843,8 @@ namespace std
+ __len = static_cast<int>(__w);
+ }
+
++_GLIBCXX_END_LDBL_NAMESPACE
++
+ // Forwarding functions to peel signed from unsigned integer types and
+ // either cast or compute the absolute value for the former, depending
+ // on __basefield.
+@@ -911,6 +934,8 @@ namespace std
+ return __bufend - __buf;
+ }
+
++_GLIBCXX_BEGIN_LDBL_NAMESPACE
++
+ template<typename _CharT, typename _OutIter>
+ void
+ num_put<_CharT, _OutIter>::
+@@ -1233,6 +1258,14 @@ namespace std
+ do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
+ { return _M_insert_float(__s, __io, __fill, char(), __v); }
+
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
++ template<typename _CharT, typename _OutIter>
++ _OutIter
++ num_put<_CharT, _OutIter>::
++ __do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
++ { return _M_insert_float(__s, __io, __fill, char(), __v); }
++#endif
++
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+@@ -1474,6 +1507,23 @@ namespace std
+ return __beg;
+ }
+
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
++ template<typename _CharT, typename _InIter>
++ _InIter
++ money_get<_CharT, _InIter>::
++ __do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io,
++ ios_base::iostate& __err, double& __units) const
++ {
++ string __str;
++ if (__intl)
++ __beg = _M_extract<true>(__beg, __end, __io, __err, __str);
++ else
++ __beg = _M_extract<false>(__beg, __end, __io, __err, __str);
++ std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale());
++ return __beg;
++ }
++#endif
++
+ template<typename _CharT, typename _InIter>
+ _InIter
+ money_get<_CharT, _InIter>::
+@@ -1678,7 +1728,18 @@ namespace std
+ __io.width(0);
+ return __s;
+ }
+-
++
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
++ template<typename _CharT, typename _OutIter>
++ _OutIter
++ money_put<_CharT, _OutIter>::
++ __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
++ double __units) const
++ {
++ return this->do_put(__s, __intl, __io, __fill, (long double) __units);
++ }
++#endif
++
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ money_put<_CharT, _OutIter>::
+@@ -1726,6 +1787,7 @@ namespace std
+ { return __intl ? _M_insert<true>(__s, __io, __fill, __digits)
+ : _M_insert<false>(__s, __io, __fill, __digits); }
+
++_GLIBCXX_END_LDBL_NAMESPACE
+
+ // NB: Not especially useful. Without an ios_base object or some
+ // kind of locale reference, we are left clawing at the air where
+@@ -2511,12 +2573,12 @@ namespace std
+ extern template class moneypunct<char, true>;
+ extern template class moneypunct_byname<char, false>;
+ extern template class moneypunct_byname<char, true>;
+- extern template class money_get<char>;
+- extern template class money_put<char>;
++ extern template class _GLIBCXX_LDBL_NAMESPACE money_get<char>;
++ extern template class _GLIBCXX_LDBL_NAMESPACE money_put<char>;
+ extern template class numpunct<char>;
+ extern template class numpunct_byname<char>;
+- extern template class num_get<char>;
+- extern template class num_put<char>;
++ extern template class _GLIBCXX_LDBL_NAMESPACE num_get<char>;
++ extern template class _GLIBCXX_LDBL_NAMESPACE num_put<char>;
+ extern template class __timepunct<char>;
+ extern template class time_put<char>;
+ extern template class time_put_byname<char>;
+@@ -2638,12 +2700,12 @@ namespace std
+ extern template class moneypunct<wchar_t, true>;
+ extern template class moneypunct_byname<wchar_t, false>;
+ extern template class moneypunct_byname<wchar_t, true>;
+- extern template class money_get<wchar_t>;
+- extern template class money_put<wchar_t>;
++ extern template class _GLIBCXX_LDBL_NAMESPACE money_get<wchar_t>;
++ extern template class _GLIBCXX_LDBL_NAMESPACE money_put<wchar_t>;
+ extern template class numpunct<wchar_t>;
+ extern template class numpunct_byname<wchar_t>;
+- extern template class num_get<wchar_t>;
+- extern template class num_put<wchar_t>;
++ extern template class _GLIBCXX_LDBL_NAMESPACE num_get<wchar_t>;
++ extern template class _GLIBCXX_LDBL_NAMESPACE num_put<wchar_t>;
+ extern template class __timepunct<wchar_t>;
+ extern template class time_put<wchar_t>;
+ extern template class time_put_byname<wchar_t>;
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/include/bits/localefwd.h gcc-41-20060515/libstdc++-v3/include/bits/localefwd.h
+--- gcc-41-20060515.orig/libstdc++-v3/include/bits/localefwd.h 2006-05-15 11:14:38.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/include/bits/localefwd.h 2006-05-15 13:47:27.676387842 -0500
+@@ -129,10 +129,12 @@ namespace std
+ class codecvt_byname;
+
+ // 22.2.2 and 22.2.3 numeric
++_GLIBCXX_BEGIN_LDBL_NAMESPACE
+ template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
+ class num_get;
+ template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+ class num_put;
++_GLIBCXX_END_LDBL_NAMESPACE
+ template<typename _CharT> class numpunct;
+ template<typename _CharT> class numpunct_byname;
+
+@@ -155,10 +157,12 @@ namespace std
+
+ // 22.2.6 money
+ class money_base;
++_GLIBCXX_BEGIN_LDBL_NAMESPACE
+ template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
+ class money_get;
+ template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+ class money_put;
++_GLIBCXX_END_LDBL_NAMESPACE
+ template<typename _CharT, bool _Intl = false>
+ class moneypunct;
+ template<typename _CharT, bool _Intl = false>
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/include/Makefile.am gcc-41-20060515/libstdc++-v3/include/Makefile.am
+--- gcc-41-20060515.orig/libstdc++-v3/include/Makefile.am 2006-05-15 11:14:39.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/include/Makefile.am 2006-05-15 13:47:27.666389381 -0500
+@@ -825,13 +825,18 @@ ${host_builddir}/c++config.h: ${top_buil
+ ${glibcxx_srcdir}/include/bits/c++config \
+ stamp-${host_alias} \
+ ${toplevel_srcdir}/gcc/DATESTAMP
+- @cat ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
++ @ldbl_compat='' ;\
++ grep "^[ ]*#[ ]*define[ ][ ]*_GLIBCXX_LONG_DOUBLE_COMPAT[ ][ ]*1[ ]*$$" \
++ ${CONFIG_HEADER} > /dev/null 2>&1 \
++ && ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\
++ sed -e "$$ldbl_compat" ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
+ sed -e 's/^/#define __GLIBCXX__ /' \
+- < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\
++ < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\
+ sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
+ -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
+ -e 's/VERSION/_GLIBCXX_VERSION/g' \
+ -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
++ -e '/[ ]_GLIBCXX_LONG_DOUBLE_COMPAT[ ]/d' \
+ < ${CONFIG_HEADER} >> $@ ;\
+ echo "#endif // _CXXCONFIG_" >>$@
+
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/include/Makefile.in gcc-41-20060515/libstdc++-v3/include/Makefile.in
+--- gcc-41-20060515.orig/libstdc++-v3/include/Makefile.in 2006-05-15 11:14:39.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/include/Makefile.in 2006-05-15 13:47:27.668389073 -0500
+@@ -1203,13 +1203,18 @@ ${host_builddir}/c++config.h: ${top_buil
+ ${glibcxx_srcdir}/include/bits/c++config \
+ stamp-${host_alias} \
+ ${toplevel_srcdir}/gcc/DATESTAMP
+- @cat ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
++ @ldbl_compat='' ;\
++ grep "^[ ]*#[ ]*define[ ][ ]*_GLIBCXX_LONG_DOUBLE_COMPAT[ ][ ]*1[ ]*$$" \
++ ${CONFIG_HEADER} > /dev/null 2>&1 \
++ && ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\
++ sed -e "$$ldbl_compat" ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
+ sed -e 's/^/#define __GLIBCXX__ /' \
+- < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\
++ < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\
+ sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
+ -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
+ -e 's/VERSION/_GLIBCXX_VERSION/g' \
+ -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
++ -e '/[ ]_GLIBCXX_LONG_DOUBLE_COMPAT[ ]/d' \
+ < ${CONFIG_HEADER} >> $@ ;\
+ echo "#endif // _CXXCONFIG_" >>$@
+
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/compatibility.cc gcc-41-20060515/libstdc++-v3/src/compatibility.cc
+--- gcc-41-20060515.orig/libstdc++-v3/src/compatibility.cc 2006-05-15 11:14:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/src/compatibility.cc 2006-05-15 13:47:27.681387073 -0500
+@@ -1,6 +1,6 @@
+ // Compatibility symbols for previous versions -*- C++ -*-
+
+-// Copyright (C) 2005
++// Copyright (C) 2005, 2006
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -49,6 +49,7 @@
+ #include <istream>
+ #include <fstream>
+ #include <sstream>
++#include <cmath>
+
+ namespace std
+ {
+@@ -362,6 +363,107 @@ namespace std
+
+ #endif
+
++// gcc-4.1.0
++#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
++#define _GLIBCXX_MATHL_WRAPPER(name, argdecl, args, ver) \
++extern "C" double \
++__ ## name ## l_wrapper argdecl \
++{ \
++ return name args; \
++} \
++asm (".symver __" #name "l_wrapper, " #name "l@" #ver)
++
++#define _GLIBCXX_MATHL_WRAPPER1(name, ver) \
++ _GLIBCXX_MATHL_WRAPPER (name, (double x), (x), ver)
++
++#define _GLIBCXX_MATHL_WRAPPER2(name, ver) \
++ _GLIBCXX_MATHL_WRAPPER (name, (double x, double y), (x, y), ver)
++
++#ifdef _GLIBCXX_HAVE_ACOSL
++_GLIBCXX_MATHL_WRAPPER1 (acos, GLIBCXX_3.4.3);
++#endif
++#ifdef _GLIBCXX_HAVE_ASINL
++_GLIBCXX_MATHL_WRAPPER1 (asin, GLIBCXX_3.4.3);
++#endif
++#ifdef _GLIBCXX_HAVE_ATAN2L
++_GLIBCXX_MATHL_WRAPPER2 (atan2, GLIBCXX_3.4);
++#endif
++#ifdef _GLIBCXX_HAVE_ATANL
++_GLIBCXX_MATHL_WRAPPER1 (atan, GLIBCXX_3.4.3);
++#endif
++#ifdef _GLIBCXX_HAVE_CEILL
++_GLIBCXX_MATHL_WRAPPER1 (ceil, GLIBCXX_3.4.3);
++#endif
++#ifdef _GLIBCXX_HAVE_COSHL
++_GLIBCXX_MATHL_WRAPPER1 (cosh, GLIBCXX_3.4);
++#endif
++#ifdef _GLIBCXX_HAVE_COSL
++_GLIBCXX_MATHL_WRAPPER1 (cos, GLIBCXX_3.4);
++#endif
++#ifdef _GLIBCXX_HAVE_EXPL
++_GLIBCXX_MATHL_WRAPPER1 (exp, GLIBCXX_3.4);
++#endif
++#ifdef _GLIBCXX_HAVE_FLOORL
++_GLIBCXX_MATHL_WRAPPER1 (floor, GLIBCXX_3.4.3);
++#endif
++#ifdef _GLIBCXX_HAVE_FMODL
++_GLIBCXX_MATHL_WRAPPER2 (fmod, GLIBCXX_3.4.3);
++#endif
++#ifdef _GLIBCXX_HAVE_FREXPL
++_GLIBCXX_MATHL_WRAPPER (frexp, (double x, int *y), (x, y), GLIBCXX_3.4.3);
++#endif
++#ifdef _GLIBCXX_HAVE_HYPOTL
++_GLIBCXX_MATHL_WRAPPER2 (hypot, GLIBCXX_3.4);
++#endif
++#ifdef _GLIBCXX_HAVE_LDEXPL
++_GLIBCXX_MATHL_WRAPPER (ldexp, (double x, int y), (x, y), GLIBCXX_3.4.3);
++#endif
++#ifdef _GLIBCXX_HAVE_LOG10L
++_GLIBCXX_MATHL_WRAPPER1 (log10, GLIBCXX_3.4);
++#endif
++#ifdef _GLIBCXX_HAVE_LOGL
++_GLIBCXX_MATHL_WRAPPER1 (log, GLIBCXX_3.4);
++#endif
++#ifdef _GLIBCXX_HAVE_MODFL
++_GLIBCXX_MATHL_WRAPPER (modf, (double x, double *y), (x, y), GLIBCXX_3.4.3);
++#endif
++#ifdef _GLIBCXX_HAVE_POWL
++_GLIBCXX_MATHL_WRAPPER2 (pow, GLIBCXX_3.4);
++#endif
++#ifdef _GLIBCXX_HAVE_SINHL
++_GLIBCXX_MATHL_WRAPPER1 (sinh, GLIBCXX_3.4);
++#endif
++#ifdef _GLIBCXX_HAVE_SINL
++_GLIBCXX_MATHL_WRAPPER1 (sin, GLIBCXX_3.4);
++#endif
++#ifdef _GLIBCXX_HAVE_SQRTL
++_GLIBCXX_MATHL_WRAPPER1 (sqrt, GLIBCXX_3.4);
++#endif
++#ifdef _GLIBCXX_HAVE_TANHL
++_GLIBCXX_MATHL_WRAPPER1 (tanh, GLIBCXX_3.4);
++#endif
++#ifdef _GLIBCXX_HAVE_TANL
++_GLIBCXX_MATHL_WRAPPER1 (tan, GLIBCXX_3.4);
++#endif
++#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
++
++#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
++extern void *_ZTVN10__cxxabiv123__fundamental_type_infoE[];
++extern void *_ZTVN10__cxxabiv119__pointer_type_infoE[];
++extern __attribute__((used, weak)) const char _ZTSe[2] = "e";
++extern __attribute__((used, weak)) const char _ZTSPe[3] = "Pe";
++extern __attribute__((used, weak)) const char _ZTSPKe[4] = "PKe";
++extern __attribute__((used, weak)) const void *_ZTIe[2]
++ = { (void *) &_ZTVN10__cxxabiv123__fundamental_type_infoE[2],
++ (void *) _ZTSe };
++extern __attribute__((used, weak)) const void *_ZTIPe[4]
++ = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
++ (void *) _ZTSPe, (void *) 0L, (void *) _ZTIe };
++extern __attribute__((used, weak)) const void *_ZTIPKe[4]
++ = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
++ (void *) _ZTSPKe, (void *) 1L, (void *) _ZTIe };
++#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
++
+ #ifdef __APPLE__
+ #if (defined(__ppc__) || defined (__ppc64__)) && defined (PIC)
+ /* __eprintf shouldn't have been made visible from libstdc++, or
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/compatibility-ldbl.cc gcc-41-20060515/libstdc++-v3/src/compatibility-ldbl.cc
+--- gcc-41-20060515.orig/libstdc++-v3/src/compatibility-ldbl.cc 1969-12-31 18:00:00.000000000 -0600
++++ gcc-41-20060515/libstdc++-v3/src/compatibility-ldbl.cc 2006-05-15 13:47:27.680387227 -0500
+@@ -0,0 +1,73 @@
++// Compatibility symbols for -mlong-double-64 compatibility -*- C++ -*-
++
++// Copyright (C) 2006
++// Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++#include <locale>
++
++#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
++
++#ifdef __LONG_DOUBLE_128__
++#error "compatibility-ldbl.cc must be compiled with -mlong-double-64"
++#endif
++
++namespace std
++{
++#define C char
++ template class num_get<C, istreambuf_iterator<C> >;
++ template class num_put<C, ostreambuf_iterator<C> >;
++ template class money_get<C, istreambuf_iterator<C> >;
++ template class money_put<C, ostreambuf_iterator<C> >;
++ template const num_put<C>& use_facet<num_put<C> >(const locale&);
++ template const num_get<C>& use_facet<num_get<C> >(const locale&);
++ template const money_put<C>& use_facet<money_put<C> >(const locale&);
++ template const money_get<C>& use_facet<money_get<C> >(const locale&);
++ template bool has_facet<num_put<C> >(const locale&);
++ template bool has_facet<num_get<C> >(const locale&);
++ template bool has_facet<money_put<C> >(const locale&);
++ template bool has_facet<money_get<C> >(const locale&);
++#undef C
++#ifdef _GLIBCXX_USE_WCHAR_T
++#define C wchar_t
++ template class num_get<C, istreambuf_iterator<C> >;
++ template class num_put<C, ostreambuf_iterator<C> >;
++ template class money_get<C, istreambuf_iterator<C> >;
++ template class money_put<C, ostreambuf_iterator<C> >;
++ template const num_put<C>& use_facet<num_put<C> >(const locale&);
++ template const num_get<C>& use_facet<num_get<C> >(const locale&);
++ template const money_put<C>& use_facet<money_put<C> >(const locale&);
++ template const money_get<C>& use_facet<money_get<C> >(const locale&);
++ template bool has_facet<num_put<C> >(const locale&);
++ template bool has_facet<num_get<C> >(const locale&);
++ template bool has_facet<money_put<C> >(const locale&);
++ template bool has_facet<money_get<C> >(const locale&);
++#undef C
++#endif
++}
++
++#endif
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/complex_io.cc gcc-41-20060515/libstdc++-v3/src/complex_io.cc
+--- gcc-41-20060515.orig/libstdc++-v3/src/complex_io.cc 2006-05-15 11:14:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/src/complex_io.cc 2006-05-15 13:47:27.681387073 -0500
+@@ -1,6 +1,6 @@
+ // The template and inlines for the -*- C++ -*- complex number classes.
+
+-// Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++// Copyright (C) 2000, 2001, 2006 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -91,3 +91,20 @@ namespace std
+ const complex<long double>&);
+ #endif //_GLIBCXX_USE_WCHAR_T
+ } // namespace std
++
++// XXX GLIBCXX_ABI Deprecated
++#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
++
++#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
++ extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
++
++_GLIBCXX_LDBL_COMPAT (_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E,
++ _ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E);
++_GLIBCXX_LDBL_COMPAT (_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E,
++ _ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E);
++_GLIBCXX_LDBL_COMPAT (_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E,
++ _ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E);
++_GLIBCXX_LDBL_COMPAT (_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E,
++ _ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E);
++
++#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/istream-inst.cc gcc-41-20060515/libstdc++-v3/src/istream-inst.cc
+--- gcc-41-20060515.orig/libstdc++-v3/src/istream-inst.cc 2006-05-15 11:14:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/src/istream-inst.cc 2006-05-15 13:47:27.682386919 -0500
+@@ -1,6 +1,6 @@
+ // Explicit instantiation file.
+
+-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
++// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2006
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -68,3 +68,19 @@ namespace std
+ template wistream& operator>>(wistream&, _Setw);
+ #endif
+ } // namespace std
++
++// XXX GLIBCXX_ABI Deprecated
++#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
++
++#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
++ extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
++_GLIBCXX_LDBL_COMPAT (_ZNSirsERd, _ZNSirsERe);
++_GLIBCXX_LDBL_COMPAT (_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd,
++ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERe);
++// These 2 are in GCC 4.2+ only so far
++// _GLIBCXX_LDBL_COMPAT (_ZNSi10_M_extractIdEERSiRT_,
++// _ZNSi10_M_extractIeEERSiRT_);
++// _GLIBCXX_LDBL_COMPAT (_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_,
++// _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_);
++
++#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/limits.cc gcc-41-20060515/libstdc++-v3/src/limits.cc
+--- gcc-41-20060515.orig/libstdc++-v3/src/limits.cc 2006-05-15 11:14:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/src/limits.cc 2006-05-15 13:47:27.683386765 -0500
+@@ -1,6 +1,6 @@
+ // Static data members of -*- C++ -*- numeric_limits classes
+
+-// Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
++// Copyright (C) 1999, 2001, 2002, 2006 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -447,3 +447,34 @@ namespace std
+ const bool numeric_limits<long double>::tinyness_before;
+ const float_round_style numeric_limits<long double>::round_style;
+ } // namespace std
++
++// XXX GLIBCXX_ABI Deprecated
++#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
++
++#define _GLIBCXX_NUM_LIM_COMPAT(type, member, len) \
++ extern "C" type _ZNSt14numeric_limitsIeE ## len ## member ## E \
++ __attribute__ ((alias ("_ZNSt14numeric_limitsIdE" #len #member "E")))
++_GLIBCXX_NUM_LIM_COMPAT (bool, is_specialized, 14);
++_GLIBCXX_NUM_LIM_COMPAT (int, digits, 6);
++_GLIBCXX_NUM_LIM_COMPAT (int, digits10, 8);
++_GLIBCXX_NUM_LIM_COMPAT (bool, is_signed, 9);
++_GLIBCXX_NUM_LIM_COMPAT (bool, is_integer, 10);
++_GLIBCXX_NUM_LIM_COMPAT (bool, is_exact, 8);
++_GLIBCXX_NUM_LIM_COMPAT (int, radix, 5);
++_GLIBCXX_NUM_LIM_COMPAT (int, min_exponent, 12);
++_GLIBCXX_NUM_LIM_COMPAT (int, min_exponent10, 14);
++_GLIBCXX_NUM_LIM_COMPAT (int, max_exponent, 12);
++_GLIBCXX_NUM_LIM_COMPAT (int, max_exponent10, 14);
++_GLIBCXX_NUM_LIM_COMPAT (bool, has_infinity, 12);
++_GLIBCXX_NUM_LIM_COMPAT (bool, has_quiet_NaN, 13);
++_GLIBCXX_NUM_LIM_COMPAT (bool, has_signaling_NaN, 17);
++_GLIBCXX_NUM_LIM_COMPAT (std::float_denorm_style, has_denorm, 10);
++_GLIBCXX_NUM_LIM_COMPAT (bool, has_denorm_loss, 15);
++_GLIBCXX_NUM_LIM_COMPAT (bool, is_iec559, 9);
++_GLIBCXX_NUM_LIM_COMPAT (bool, is_bounded, 10);
++_GLIBCXX_NUM_LIM_COMPAT (bool, is_modulo, 9);
++_GLIBCXX_NUM_LIM_COMPAT (bool, traps, 5);
++_GLIBCXX_NUM_LIM_COMPAT (bool, tinyness_before, 15);
++_GLIBCXX_NUM_LIM_COMPAT (std::float_round_style, round_style, 11);
++
++#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/locale.cc gcc-41-20060515/libstdc++-v3/src/locale.cc
+--- gcc-41-20060515.orig/libstdc++-v3/src/locale.cc 2006-05-15 11:14:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/src/locale.cc 2006-05-15 14:06:44.932155273 -0500
+@@ -41,6 +41,21 @@ namespace __gnu_internal
+ static __glibcxx_mutex_define_initialized(locale_cache_mutex);
+ }
+
++// XXX GLIBCXX_ABI Deprecated
++#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
++# define _GLIBCXX_LOC_ID(mangled) extern std::locale::id mangled
++_GLIBCXX_LOC_ID (_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
++_GLIBCXX_LOC_ID (_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
++_GLIBCXX_LOC_ID (_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
++_GLIBCXX_LOC_ID (_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
++# ifdef _GLIBCXX_USE_WCHAR_T
++_GLIBCXX_LOC_ID (_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
++_GLIBCXX_LOC_ID (_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
++_GLIBCXX_LOC_ID (_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
++_GLIBCXX_LOC_ID (_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
++# endif
++#endif
++
+ namespace std
+ {
+ // Definitions for static const data members of locale.
+@@ -397,9 +412,29 @@ namespace std
+ locale::id::_M_id() const
+ {
+ if (!_M_index)
+- _M_index = 1 + __gnu_cxx::__exchange_and_add(&_S_refcount, 1);
++ {
++ // XXX GLIBCXX_ABI Deprecated
++#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
++ locale::id *f = 0;
++# define _GLIBCXX_SYNC_ID(facet, mangled) \
++ if (this == &::mangled) \
++ f = &facet::id
++ _GLIBCXX_SYNC_ID (num_get<char>, _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
++ _GLIBCXX_SYNC_ID (num_put<char>, _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
++ _GLIBCXX_SYNC_ID (money_get<char>, _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
++ _GLIBCXX_SYNC_ID (money_put<char>, _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
++# ifdef _GLIBCXX_USE_WCHAR_T
++ _GLIBCXX_SYNC_ID (num_get<wchar_t>, _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
++ _GLIBCXX_SYNC_ID (num_put<wchar_t>, _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
++ _GLIBCXX_SYNC_ID (money_get<wchar_t>, _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
++ _GLIBCXX_SYNC_ID (money_put<wchar_t>, _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
++# endif
++ if (f)
++ _M_index = 1 + f->_M_id();
++ else
++#endif
++ _M_index = 1 + __gnu_cxx::__exchange_and_add(&_S_refcount, 1);
++ }
+ return _M_index - 1;
+ }
+ } // namespace std
+-
+-
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/locale-inst.cc gcc-41-20060515/libstdc++-v3/src/locale-inst.cc
+--- gcc-41-20060515.orig/libstdc++-v3/src/locale-inst.cc 2006-05-15 11:14:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/src/locale-inst.cc 2006-05-15 13:47:27.684386611 -0500
+@@ -1,6 +1,6 @@
+ // Locale support -*- C++ -*-
+
+-// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
++// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2006
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -37,6 +37,7 @@
+ // Instantiation configuration.
+ #ifndef C
+ # define C char
++# define C_is_char
+ #endif
+
+ namespace std
+@@ -48,6 +49,7 @@ namespace std
+ template struct __moneypunct_cache<C, true>;
+ template class moneypunct_byname<C, false>;
+ template class moneypunct_byname<C, true>;
++_GLIBCXX_BEGIN_LDBL_NAMESPACE
+ template class money_get<C, istreambuf_iterator<C> >;
+ template class money_put<C, ostreambuf_iterator<C> >;
+ template
+@@ -73,11 +75,13 @@ namespace std
+ money_put<C, ostreambuf_iterator<C> >::
+ _M_insert<false>(ostreambuf_iterator<C>, ios_base&, C,
+ const string_type&) const;
++_GLIBCXX_END_LDBL_NAMESPACE
+
+ // numpunct, numpunct_byname, num_get, and num_put
+ template class numpunct<C>;
+ template struct __numpunct_cache<C>;
+ template class numpunct_byname<C>;
++_GLIBCXX_BEGIN_LDBL_NAMESPACE
+ template class num_get<C, istreambuf_iterator<C> >;
+ template class num_put<C, ostreambuf_iterator<C> >;
+ template
+@@ -161,7 +165,8 @@ namespace std
+ num_put<C, ostreambuf_iterator<C> >::
+ _M_insert_float(ostreambuf_iterator<C>, ios_base&, C, char,
+ long double) const;
+-
++_GLIBCXX_END_LDBL_NAMESPACE
++
+ // time_get and time_put
+ template class __timepunct<C>;
+ template struct __timepunct_cache<C>;
+@@ -314,3 +319,44 @@ namespace std
+ ios_base::fmtflags, bool);
+ #endif
+ } // namespace std
++
++// XXX GLIBCXX_ABI Deprecated
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined C_is_char
++
++#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
++ extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
++
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
++ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
++ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
++ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
++ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
++ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
++ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_,
++ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_,
++ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_,
++ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_,
++ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_,
++ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_,
++ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
++ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
++ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs,
++ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs,
++ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs);
++
++#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/locale-misc-inst.cc gcc-41-20060515/libstdc++-v3/src/locale-misc-inst.cc
+--- gcc-41-20060515.orig/libstdc++-v3/src/locale-misc-inst.cc 2006-05-15 11:14:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/src/locale-misc-inst.cc 2006-05-15 13:47:27.685386457 -0500
+@@ -1,6 +1,7 @@
+ // Locale support -*- C++ -*-
+
+-// Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2006
++// Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -45,3 +46,19 @@ namespace std
+ __convert_from_v(char*, const int, const char*, long double,
+ const __c_locale&, int);
+ } // namespace std
++
++// XXX GLIBCXX_ABI Deprecated
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT
++
++#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
++ extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
++
++# if _GLIBCXX_C_LOCALE_GNU
++_GLIBCXX_LDBL_COMPAT(_ZSt16__convert_from_vIdEiPciPKcT_RKP15__locale_structi,
++ _ZSt16__convert_from_vIeEiPciPKcT_RKP15__locale_structi);
++# else
++_GLIBCXX_LDBL_COMPAT(_ZSt16__convert_from_vIdEiPciPKcT_RKPii,
++ _ZSt16__convert_from_vIeEiPciPKcT_RKPii);
++# endif
++
++#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/Makefile.am gcc-41-20060515/libstdc++-v3/src/Makefile.am
+--- gcc-41-20060515.orig/libstdc++-v3/src/Makefile.am 2006-05-15 11:14:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/src/Makefile.am 2006-05-15 13:47:27.677387688 -0500
+@@ -35,10 +35,15 @@ libstdc++-symbol.ver: ${glibcxx_srcdir}
+ $(port_specific_symbol_files)
+ cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver
+ if test "x$(port_specific_symbol_files)" != x; then \
+- sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
+- sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
+- cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
+- rm tmp.top tmp.bottom; \
++ if grep '^# Appended to version file.' \
++ $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \
++ cat $(port_specific_symbol_files) >> $@; \
++ else \
++ sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
++ sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
++ cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
++ rm tmp.top tmp.bottom; \
++ fi; \
+ fi
+
+ if ENABLE_SYMVERS_GNU
+@@ -113,6 +118,12 @@ c++locale.cc: ${glibcxx_srcdir}/$(CLOCAL
+ basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC)
+ $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true
+
++if GLIBCXX_LDBL_COMPAT
++ldbl_compat_sources = compatibility-ldbl.cc
++else
++ldbl_compat_sources =
++endif
++
+ # Sources present in the src directory.
+ sources = \
+ bitmap_allocator.cc \
+@@ -160,7 +171,8 @@ sources = \
+ wlocale-inst.cc \
+ wstring-inst.cc \
+ ${host_sources} \
+- ${host_sources_extra}
++ ${host_sources_extra} \
++ ${ldbl_compat_sources}
+
+ VPATH = $(top_srcdir)/src:$(top_srcdir)
+
+@@ -191,6 +203,15 @@ concept-inst.lo: concept-inst.cc
+ concept-inst.o: concept-inst.cc
+ $(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $<
+
++if GLIBCXX_LDBL_COMPAT
++# Use special rules for compatibility-ldbl.cc compilation, as we need to
++# pass -mlong-double-64.
++compatibility-ldbl.lo: compatibility-ldbl.cc
++ $(LTCXXCOMPILE) -mlong-double-64 -c $<
++compatibility-ldbl.o: compatibility-ldbl.cc
++ $(CXXCOMPILE) -mlong-double-64 -c $<
++endif
++
+ # AM_CXXFLAGS needs to be in each subdirectory so that it can be
+ # modified in a per-library or per-sub-library way. Need to manually
+ # set this option because CONFIG_CXXFLAGS has to be after
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/Makefile.in gcc-41-20060515/libstdc++-v3/src/Makefile.in
+--- gcc-41-20060515.orig/libstdc++-v3/src/Makefile.in 2006-05-15 11:14:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/src/Makefile.in 2006-05-15 13:47:27.679387380 -0500
+@@ -59,11 +59,27 @@ am__strip_dir = `echo $$p | sed -e 's|^.
+ am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
+ toolexeclibLTLIBRARIES_INSTALL = $(INSTALL)
+ LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
++am__libstdc___la_SOURCES_DIST = bitmap_allocator.cc pool_allocator.cc \
++ mt_allocator.cc codecvt.cc compatibility.cc complex_io.cc \
++ ctype.cc debug.cc debug_list.cc functexcept.cc \
++ globals_locale.cc globals_io.cc ios.cc ios_failure.cc \
++ ios_init.cc ios_locale.cc limits.cc list.cc locale.cc \
++ locale_init.cc locale_facets.cc localename.cc stdexcept.cc \
++ strstream.cc tree.cc allocator-inst.cc concept-inst.cc \
++ fstream-inst.cc ext-inst.cc ios-inst.cc iostream-inst.cc \
++ istream-inst.cc istream.cc locale-inst.cc locale-misc-inst.cc \
++ misc-inst.cc ostream-inst.cc sstream-inst.cc streambuf-inst.cc \
++ streambuf.cc string-inst.cc valarray-inst.cc wlocale-inst.cc \
++ wstring-inst.cc atomicity.cc codecvt_members.cc \
++ collate_members.cc ctype_members.cc messages_members.cc \
++ monetary_members.cc numeric_members.cc time_members.cc \
++ basic_file.cc c++locale.cc compatibility-ldbl.cc
+ am__objects_1 = atomicity.lo codecvt_members.lo collate_members.lo \
+ ctype_members.lo messages_members.lo monetary_members.lo \
+ numeric_members.lo time_members.lo
+ am__objects_2 = basic_file.lo c++locale.lo
+-am__objects_3 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \
++@GLIBCXX_LDBL_COMPAT_TRUE@am__objects_3 = compatibility-ldbl.lo
++am__objects_4 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \
+ codecvt.lo compatibility.lo complex_io.lo ctype.lo debug.lo \
+ debug_list.lo functexcept.lo globals_locale.lo globals_io.lo \
+ ios.lo ios_failure.lo ios_init.lo ios_locale.lo limits.lo \
+@@ -74,8 +90,9 @@ am__objects_3 = bitmap_allocator.lo pool
+ locale-inst.lo locale-misc-inst.lo misc-inst.lo \
+ ostream-inst.lo sstream-inst.lo streambuf-inst.lo streambuf.lo \
+ string-inst.lo valarray-inst.lo wlocale-inst.lo \
+- wstring-inst.lo $(am__objects_1) $(am__objects_2)
+-am_libstdc___la_OBJECTS = $(am__objects_3)
++ wstring-inst.lo $(am__objects_1) $(am__objects_2) \
++ $(am__objects_3)
++am_libstdc___la_OBJECTS = $(am__objects_4)
+ libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS)
+ DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+ depcomp =
+@@ -84,7 +101,7 @@ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_IN
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+ CXXLD = $(CXX)
+ SOURCES = $(libstdc___la_SOURCES)
+-DIST_SOURCES = $(libstdc___la_SOURCES)
++DIST_SOURCES = $(am__libstdc___la_SOURCES_DIST)
+ ETAGS = etags
+ CTAGS = ctags
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+@@ -152,6 +169,8 @@ GLIBCXX_C_HEADERS_C_TRUE = @GLIBCXX_C_HE
+ GLIBCXX_HOSTED_FALSE = @GLIBCXX_HOSTED_FALSE@
+ GLIBCXX_HOSTED_TRUE = @GLIBCXX_HOSTED_TRUE@
+ GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
++GLIBCXX_LDBL_COMPAT_FALSE = @GLIBCXX_LDBL_COMPAT_FALSE@
++GLIBCXX_LDBL_COMPAT_TRUE = @GLIBCXX_LDBL_COMPAT_TRUE@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -302,6 +321,8 @@ host_sources_extra = \
+ basic_file.cc \
+ c++locale.cc
+
++@GLIBCXX_LDBL_COMPAT_FALSE@ldbl_compat_sources =
++@GLIBCXX_LDBL_COMPAT_TRUE@ldbl_compat_sources = compatibility-ldbl.cc
+
+ # Sources present in the src directory.
+ sources = \
+@@ -350,7 +371,8 @@ sources = \
+ wlocale-inst.cc \
+ wstring-inst.cc \
+ ${host_sources} \
+- ${host_sources_extra}
++ ${host_sources_extra} \
++ ${ldbl_compat_sources}
+
+ libstdc___la_SOURCES = $(sources)
+ libstdc___la_LIBADD = \
+@@ -677,10 +699,15 @@ libstdc++-symbol.ver: ${glibcxx_srcdir}
+ $(port_specific_symbol_files)
+ cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver
+ if test "x$(port_specific_symbol_files)" != x; then \
+- sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
+- sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
+- cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
+- rm tmp.top tmp.bottom; \
++ if grep '^# Appended to version file.' \
++ $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \
++ cat $(port_specific_symbol_files) >> $@; \
++ else \
++ sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
++ sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
++ cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
++ rm tmp.top tmp.bottom; \
++ fi; \
+ fi
+ @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@libstdc++-symbol.explist : libstdc++-symbol.ver \
+ @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@ ${glibcxx_srcdir}/scripts/make_exports.pl \
+@@ -733,6 +760,13 @@ concept-inst.lo: concept-inst.cc
+ concept-inst.o: concept-inst.cc
+ $(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $<
+
++# Use special rules for compatibility-ldbl.cc compilation, as we need to
++# pass -mlong-double-64.
++@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.lo: compatibility-ldbl.cc
++@GLIBCXX_LDBL_COMPAT_TRUE@ $(LTCXXCOMPILE) -mlong-double-64 -c $<
++@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.o: compatibility-ldbl.cc
++@GLIBCXX_LDBL_COMPAT_TRUE@ $(CXXCOMPILE) -mlong-double-64 -c $<
++
+ # Added bits to build debug library.
+ @GLIBCXX_BUILD_DEBUG_TRUE@all-local: build_debug
+ @GLIBCXX_BUILD_DEBUG_TRUE@install-data-local: install_debug
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/ostream-inst.cc gcc-41-20060515/libstdc++-v3/src/ostream-inst.cc
+--- gcc-41-20060515.orig/libstdc++-v3/src/ostream-inst.cc 2006-05-15 11:14:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/src/ostream-inst.cc 2006-05-15 13:47:27.685386457 -0500
+@@ -1,6 +1,6 @@
+ // Explicit instantiation file.
+
+-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
++// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2006
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -74,3 +74,19 @@ namespace std
+ template wostream& operator<<(wostream&, _Setw);
+ #endif
+ } // namespace std
++
++// XXX GLIBCXX_ABI Deprecated
++#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
++
++#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
++ extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
++_GLIBCXX_LDBL_COMPAT (_ZNSolsEd, _ZNSolsEe);
++_GLIBCXX_LDBL_COMPAT (_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd,
++ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe);
++// These 2 are in GCC 4.2+ only so far
++// _GLIBCXX_LDBL_COMPAT (_ZNSo9_M_insertIdEERSoT_,
++// _ZNSo9_M_insertIeEERSoT_);
++// _GLIBCXX_LDBL_COMPAT (_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_,
++// _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_);
++
++#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/wlocale-inst.cc gcc-41-20060515/libstdc++-v3/src/wlocale-inst.cc
+--- gcc-41-20060515.orig/libstdc++-v3/src/wlocale-inst.cc 2006-05-15 11:14:42.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/src/wlocale-inst.cc 2006-05-15 13:47:27.686386303 -0500
+@@ -1,6 +1,7 @@
+ // Locale support -*- C++ -*-
+
+-// Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2006
++// Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -36,4 +37,45 @@
+ #ifdef _GLIBCXX_USE_WCHAR_T
+ #define C wchar_t
+ #include "locale-inst.cc"
++
++// XXX GLIBCXX_ABI Deprecated
++#if defined _GLIBCXX_LONG_DOUBLE_COMPAT
++
++#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
++ extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
++
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
++ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
++ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
++ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
++ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
++ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
++ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_,
++ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_,
++ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_,
++ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_,
++ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_,
++ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_,
++ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
++ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
++ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE,
++ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE);
++_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE,
++ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE);
++
++#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+ #endif
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/testsuite/testsuite_abi.cc gcc-41-20060515/libstdc++-v3/testsuite/testsuite_abi.cc
+--- gcc-41-20060515.orig/libstdc++-v3/testsuite/testsuite_abi.cc 2006-05-15 11:15:38.000000000 -0500
++++ gcc-41-20060515/libstdc++-v3/testsuite/testsuite_abi.cc 2006-05-15 14:14:57.231341148 -0500
+@@ -187,8 +187,11 @@ check_version(symbol& test, bool added)
+ known_versions.push_back("GLIBCXX_3.4.6");
+ known_versions.push_back("GLIBCXX_3.4.7");
+ known_versions.push_back("GLIBCXX_3.4.8");
++ known_versions.push_back("GLIBCXX_LDBL_3.4");
++ known_versions.push_back("GLIBCXX_LDBL_3.4.7");
+ known_versions.push_back("CXXABI_1.3");
+ known_versions.push_back("CXXABI_1.3.1");
++ known_versions.push_back("CXXABI_LDBL_1.3");
+ }
+ compat_list::iterator begin = known_versions.begin();
+ compat_list::iterator end = known_versions.end();
+@@ -224,9 +227,7 @@ check_version(symbol& test, bool added)
+ // New version labels are ok. The rest are not.
+ compat_list::iterator it2 = find(begin, end, test.name);
+ if (it2 != end)
+- {
+- test.version_status = symbol::compatible;
+- }
++ test.version_status = symbol::compatible;
+ else
+ test.version_status = symbol::incompatible;
+ }
+@@ -370,7 +371,7 @@ compare_symbols(const char* baseline_fil
+ added_names.erase(it);
+ }
+ else
+- missing_names.push_back(what);
++ missing_names.push_back(what);
+ }
+
+ // Check missing names for compatibility.
diff --git a/packages/gcc/gcc-4.1.1/ppc-sfp-long-double-gcc411-7.patch b/packages/gcc/gcc-4.1.1/ppc-sfp-long-double-gcc411-7.patch
new file mode 100644
index 0000000000..e3a87c87d0
--- /dev/null
+++ b/packages/gcc/gcc-4.1.1/ppc-sfp-long-double-gcc411-7.patch
@@ -0,0 +1,4271 @@
+ * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
+ (strong_alias): Define.
+ (__gcc_qmul): Provide non-FMA for soft-float.
+ (__gcc_qdiv): Same.
+ (__gcc_qneg): New.
+ (__gcc_qeq): New.
+ (__gcc_qle): New.
+ (__gcc_qge): New.
+ (__gcc_qunord): New.
+ (__gcc_stoq): New.
+ (__gcc_dtoq): New.
+ (__gcc_qtos): New.
+ (__gcc_qtod): New.
+ (__gcc_qtoi): New.
+ (__gcc_qtou): New.
+ (__gcc_itoq): New.
+ (__gcc_utoq): New.
+ (fmsub): New.
+ * config/rs6000/rs6000.c (rs6000_emit_move): Handle TFmode
+ constant for soft-float.
+ (rs6000_init_libfuncs): Initialize soft-float functions.
+ * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
+ * config/rs6000/rs6000.md (movtf): Allow soft-float.
+ (movtf_softfloat): New.
+ * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS): Add
+ -mlong-double-128.
+ (ldblspecs): Remove.
+ * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
+ about long double soft float.
+
+diff -urN gcc-4.1.1/gcc/config/rs6000/darwin-ldouble.c gcc-4.1.1-patched/gcc/config/rs6000/darwin-ldouble.c
+--- gcc-4.1.1/gcc/config/rs6000/darwin-ldouble.c 2006-03-23 16:23:58.000000000 -0600
++++ gcc-4.1.1-patched/gcc/config/rs6000/darwin-ldouble.c 2006-09-12 14:30:16.000000000 -0500
+@@ -49,7 +49,8 @@
+
+ This code currently assumes big-endian. */
+
+-#if (!defined (__NO_FPRS__) && !defined (__LITTLE_ENDIAN__) \
++#if ((!defined (__NO_FPRS__) || defined (_SOFT_FLOAT)) \
++ && !defined (__LITTLE_ENDIAN__) \
+ && (defined (__MACH__) || defined (__powerpc__) || defined (_AIX)))
+
+ #define fabs(x) __builtin_fabs(x)
+@@ -60,14 +61,19 @@
+
+ #define nonfinite(a) unlikely (! isless (fabs (a), inf ()))
+
++/* Define ALIASNAME as a strong alias for NAME. */
++# define strong_alias(name, aliasname) _strong_alias(name, aliasname)
++# define _strong_alias(name, aliasname) \
++ extern __typeof (name) aliasname __attribute__ ((alias (#name)));
++
+ /* All these routines actually take two long doubles as parameters,
+ but GCC currently generates poor code when a union is used to turn
+ a long double into a pair of doubles. */
+
+-extern long double __gcc_qadd (double, double, double, double);
+-extern long double __gcc_qsub (double, double, double, double);
+-extern long double __gcc_qmul (double, double, double, double);
+-extern long double __gcc_qdiv (double, double, double, double);
++long double __gcc_qadd (double, double, double, double);
++long double __gcc_qsub (double, double, double, double);
++long double __gcc_qmul (double, double, double, double);
++long double __gcc_qdiv (double, double, double, double);
+
+ #if defined __ELF__ && defined SHARED \
+ && (defined __powerpc64__ || !(defined __linux__ || defined __gnu_hurd__))
+@@ -139,6 +145,10 @@
+ return __gcc_qadd (a, b, -c, -d);
+ }
+
++#ifdef _SOFT_FLOAT
++static double fmsub (double, double, double);
++#endif
++
+ long double
+ __gcc_qmul (double a, double b, double c, double d)
+ {
+@@ -154,7 +164,11 @@
+ /* Sum terms of two highest orders. */
+
+ /* Use fused multiply-add to get low part of a * c. */
++#ifndef _SOFT_FLOAT
+ asm ("fmsub %0,%1,%2,%3" : "=f"(tau) : "f"(a), "f"(c), "f"(t));
++#else
++ tau = fmsub (a, c, t);
++#endif
+ v = a*d;
+ w = b*c;
+ tau += v + w; /* Add in other second-order terms. */
+@@ -187,7 +201,11 @@
+ numerically necessary. */
+
+ /* Use fused multiply-add to get low part of c * t. */
++#ifndef _SOFT_FLOAT
+ asm ("fmsub %0,%1,%2,%3" : "=f"(sigma) : "f"(c), "f"(t), "f"(s));
++#else
++ sigma = fmsub (c, t, s);
++#endif
+ v = a - s;
+
+ tau = ((v-sigma)+w)/c; /* Correction to t. */
+@@ -201,4 +219,3959 @@
+ return z.ldval;
+ }
+
++#ifdef _SOFT_FLOAT
++
++long double __gcc_qneg (double, double);
++int __gcc_qeq (double, double, double, double);
++int __gcc_qne (double, double, double, double);
++int __gcc_qge (double, double, double, double);
++int __gcc_qle (double, double, double, double);
++int __gcc_qunord (double, double, double, double);
++long double __gcc_stoq (float);
++long double __gcc_dtoq (double);
++float __gcc_qtos (double, double);
++double __gcc_qtod (double, double);
++int __gcc_qtoi (double, double);
++unsigned int __gcc_qtou (double, double);
++long double __gcc_itoq (int);
++long double __gcc_utoq (unsigned int);
++
++extern int __eqdf2 (double, double);
++extern int __ledf2 (double, double);
++extern int __gedf2 (double, double);
++extern int __unorddf2 (double, double);
++
++/* Negate 'long double' value and return the result. */
++long double
++__gcc_qneg (double a, double aa)
++{
++ longDblUnion x;
++
++ x.dval[0] = -a;
++ x.dval[1] = -aa;
++ return x.ldval;
++}
++
++/* Compare two 'long double' values for equality. */
++int
++__gcc_qeq (double a, double aa, double c, double cc)
++{
++ if (__eqdf2 (a, c) == 0)
++ return __eqdf2 (aa, cc);
++ return 1;
++}
++
++strong_alias (__gcc_qeq, __gcc_qne);
++
++/* Compare two 'long double' values for less than or equal. */
++int
++__gcc_qle (double a, double aa, double c, double cc)
++{
++ if (__eqdf2 (a, c) == 0)
++ return __ledf2 (aa, cc);
++ return __ledf2 (a, c);
++}
++
++strong_alias (__gcc_qle, __gcc_qlt);
++
++/* Compare two 'long double' values for greater than or equal. */
++int
++__gcc_qge (double a, double aa, double c, double cc)
++{
++ if (__eqdf2 (a, c) == 0)
++ return __gedf2 (aa, cc);
++ return __gedf2 (a, c);
++}
++
++strong_alias (__gcc_qge, __gcc_qgt);
++
++/* Compare two 'long double' values for unordered. */
++int
++__gcc_qunord (double a, double aa, double c, double cc)
++{
++ if (__eqdf2 (a, c) == 0)
++ return __unorddf2 (aa, cc);
++ return __unorddf2 (a, c);
++}
++
++/* Convert single to long double. */
++long double
++__gcc_stoq (float a)
++{
++ longDblUnion x;
++
++ x.dval[0] = (double) a;
++ x.dval[1] = 0.0;
++
++ return x.ldval;
++}
++
++/* Convert double to long double. */
++long double
++__gcc_dtoq (double a)
++{
++ longDblUnion x;
++
++ x.dval[0] = a;
++ x.dval[1] = 0.0;
++
++ return x.ldval;
++}
++
++/* Convert long double to single. */
++float
++__gcc_qtos (double a, double aa __attribute__ ((__unused__)))
++{
++ return (float) a;
++}
++
++/* Convert long double to double. */
++double
++__gcc_qtod (double a, double aa __attribute__ ((__unused__)))
++{
++ return a;
++}
++
++/* Convert long double to int. */
++int
++__gcc_qtoi (double a, double aa)
++{
++ double z = a + aa;
++ return (int) z;
++}
++
++/* Convert long double to unsigned int. */
++unsigned int
++__gcc_qtou (double a, double aa)
++{
++ double z = a + aa;
++ return (unsigned int) z;
++}
++
++/* Convert int to long double. */
++long double
++__gcc_itoq (int a)
++{
++ return __gcc_dtoq ((double) a);
++}
++
++/* Convert unsigned int to long double. */
++long double
++__gcc_utoq (unsigned int a)
++{
++ return __gcc_dtoq ((double) a);
++}
++
++typedef int QItype __attribute__ ((mode (QI)));
++typedef int SItype __attribute__ ((mode (SI)));
++typedef int DItype __attribute__ ((mode (DI)));
++typedef unsigned int UQItype __attribute__ ((mode (QI)));
++typedef unsigned int USItype __attribute__ ((mode (SI)));
++typedef unsigned int UDItype __attribute__ ((mode (DI)));
++
++typedef unsigned int UHWtype __attribute__ ((mode (HI)));
++extern const UQItype __clz_tab[256];
++extern void abort (void);
++typedef float DFtype __attribute__ ((mode (DF)));
++
++union _FP_UNION_D
++{
++ DFtype flt;
++ struct
++ {
++
++ unsigned sign:1;
++ unsigned exp:11;
++ unsigned frac1:53 - (((unsigned long) 1 << (53 - 1) % 32) != 0) - 32;
++ unsigned frac0:32;
++ } bits __attribute__ ((packed));
++};
++typedef float TFtype __attribute__ ((mode (TF)));
++
++union _FP_UNION_Q
++{
++ TFtype flt;
++ struct
++ {
++
++ unsigned sign:1;
++ unsigned exp:15;
++ unsigned long frac3:113 - (((unsigned long) 1 << (113 - 1) % 32) !=
++ 0) - (32 * 3);
++ unsigned long frac2:32;
++ unsigned long frac1:32;
++ unsigned long frac0:32;
++ } bits __attribute__ ((packed));
++};
++
++static double
++fmsub (double a, double b, double c)
++{
++ int _fex = 0;
++ long A_c __attribute__ ((unused)), A_s, A_e;
++ unsigned long A_f0, A_f1;
++ long B_c __attribute__ ((unused)), B_s, B_e;
++ unsigned long B_f0, B_f1;
++ long C_c __attribute__ ((unused)), C_s, C_e;
++ unsigned long C_f0, C_f1;
++ long X_c __attribute__ ((unused)), X_s, X_e;
++ unsigned long X_f[4];
++ long Y_c __attribute__ ((unused)), Y_s, Y_e;
++ unsigned long Y_f[4];
++ long Z_c __attribute__ ((unused)), Z_s, Z_e;
++ unsigned long Z_f[4];
++ long U_c __attribute__ ((unused)), U_s, U_e;
++ unsigned long U_f[4];
++ long V_c __attribute__ ((unused)), V_s, V_e;
++ unsigned long V_f[4];
++ long R_c __attribute__ ((unused)), R_s, R_e;
++ unsigned long R_f0, R_f1;
++ double r;
++ long double u, v, x, y, z;
++
++/* FP_INIT_ROUNDMODE */
++ do
++ {
++ }
++ while (0);
++
++/* FP_UNPACK_RAW_D (A, a) */
++ do
++ {
++ union _FP_UNION_D _flo;
++ _flo.flt = (a);
++ A_f0 = _flo.bits.frac0;
++ A_f1 = _flo.bits.frac1;
++ A_e = _flo.bits.exp;
++ A_s = _flo.bits.sign;
++ }
++ while (0);
++
++/* FP_UNPACK_RAW_D (B, b) */
++ do
++ {
++ union _FP_UNION_D _flo;
++ _flo.flt = (b);
++ B_f0 = _flo.bits.frac0;
++ B_f1 = _flo.bits.frac1;
++ B_e = _flo.bits.exp;
++ B_s = _flo.bits.sign;
++ }
++ while (0);
++
++/* FP_UNPACK_RAW_D (C, c) */
++ do
++ {
++ union _FP_UNION_D _flo;
++ _flo.flt = (c);
++ C_f0 = _flo.bits.frac0;
++ C_f1 = _flo.bits.frac1;
++ C_e = _flo.bits.exp;
++ C_s = _flo.bits.sign;
++ }
++ while (0);
++
++ /* Extend double to quad. */
++/* FP_EXTEND(Q,D,4,2,X,A) */
++ do
++ {
++ if (113 < 53 || (32767 - 16383 < 2047 - 1023) || 16383 < 1023 + 53 - 1)
++ abort ();
++ X_s = A_s;
++ do
++ {
++ X_f[0] = A_f0;
++ X_f[1] = A_f1;
++ X_f[2] = X_f[3] = 0;
++ }
++ while (0);
++ if ((((A_e + 1) & 2047) > 1))
++ {
++ X_e = A_e + 16383 - 1023;
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = ((113 - 53)) / 32;
++ _up = ((113 - 53)) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ X_f[_i] = X_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ X_f[_i] =
++ X_f[_i - _skip] << _up | X_f[_i - _skip - 1] >> _down;
++ X_f[_i--] = X_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ X_f[_i] = 0;
++ }
++ while (0);
++ }
++ else
++ {
++ if (A_e == 0)
++ {
++ if (((A_f1 | A_f0) == 0))
++ X_e = 0;
++ else
++ {
++ int _lz;
++ _fex |= (0);
++ do
++ {
++ if (A_f1)
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _lz = __builtin_clz (A_f1);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _lz = __builtin_clzl (A_f1);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _lz = __builtin_clzll (A_f1);
++ else
++ abort ();
++ }
++ while (0);
++ else
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _lz = __builtin_clz (A_f0);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _lz = __builtin_clzl (A_f0);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _lz = __builtin_clzll (A_f0);
++ else
++ abort ();
++ }
++ while (0);
++ _lz += 32;
++ }
++ }
++ while (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (_lz + 113 - (2 * 32)) / 32;
++ _up = (_lz + 113 - (2 * 32)) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ X_f[_i] = X_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ X_f[_i] =
++ X_f[_i - _skip] << _up | X_f[_i - _skip -
++ 1] >> _down;
++ X_f[_i--] = X_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ X_f[_i] = 0;
++ }
++ while (0);
++ X_e = (16383 - 1023 + 1 + ((2 * 32) - 53) - _lz);
++ }
++ }
++ else
++ {
++ X_e = 32767;
++ if (!((A_f1 | A_f0) == 0))
++ {
++ if (!((A_f1) & ((unsigned long) 1 << (53 - 2) % 32)))
++ _fex |= (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = ((113 - 53)) / 32;
++ _up = ((113 - 53)) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ X_f[_i] = X_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ X_f[_i] =
++ X_f[_i - _skip] << _up | X_f[_i - _skip -
++ 1] >> _down;
++ X_f[_i--] = X_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ X_f[_i] = 0;
++ }
++ while (0);
++ }
++ }
++ }
++ }
++ while (0);
++
++/* FP_EXTEND(Q,D,4,2,Y,B) */
++ do
++ {
++ if (113 < 53 || (32767 - 16383 < 2047 - 1023) || 16383 < 1023 + 53 - 1)
++ abort ();
++ Y_s = B_s;
++ do
++ {
++ Y_f[0] = B_f0;
++ Y_f[1] = B_f1;
++ Y_f[2] = Y_f[3] = 0;
++ }
++ while (0);
++ if ((((B_e + 1) & 2047) > 1))
++ {
++ Y_e = B_e + 16383 - 1023;
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = ((113 - 53)) / 32;
++ _up = ((113 - 53)) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ Y_f[_i] = Y_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ Y_f[_i] =
++ Y_f[_i - _skip] << _up | Y_f[_i - _skip - 1] >> _down;
++ Y_f[_i--] = Y_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ Y_f[_i] = 0;
++ }
++ while (0);
++ }
++ else
++ {
++ if (B_e == 0)
++ {
++ if (((B_f1 | B_f0) == 0))
++ Y_e = 0;
++ else
++ {
++ int _lz;
++ _fex |= (0);
++ do
++ {
++ if (B_f1)
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _lz = __builtin_clz (B_f1);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _lz = __builtin_clzl (B_f1);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _lz = __builtin_clzll (B_f1);
++ else
++ abort ();
++ }
++ while (0);
++ else
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _lz = __builtin_clz (B_f0);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _lz = __builtin_clzl (B_f0);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _lz = __builtin_clzll (B_f0);
++ else
++ abort ();
++ }
++ while (0);
++ _lz += 32;
++ }
++ }
++ while (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (_lz + 113 - (2 * 32)) / 32;
++ _up = (_lz + 113 - (2 * 32)) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ Y_f[_i] = Y_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ Y_f[_i] =
++ Y_f[_i - _skip] << _up | Y_f[_i - _skip -
++ 1] >> _down;
++ Y_f[_i--] = Y_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ Y_f[_i] = 0;
++ }
++ while (0);
++ Y_e = (16383 - 1023 + 1 + ((2 * 32) - 53) - _lz);
++ }
++ }
++ else
++ {
++ Y_e = 32767;
++ if (!((B_f1 | B_f0) == 0))
++ {
++ if (!((B_f1) & ((unsigned long) 1 << (53 - 2) % 32)))
++ _fex |= (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = ((113 - 53)) / 32;
++ _up = ((113 - 53)) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ Y_f[_i] = Y_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ Y_f[_i] =
++ Y_f[_i - _skip] << _up | Y_f[_i - _skip -
++ 1] >> _down;
++ Y_f[_i--] = Y_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ Y_f[_i] = 0;
++ }
++ while (0);
++ }
++ }
++ }
++ }
++ while (0);
++
++/* FP_EXTEND(Q,D,4,2,Z,C) */
++ do
++ {
++ if (113 < 53 || (32767 - 16383 < 2047 - 1023) || 16383 < 1023 + 53 - 1)
++ abort ();
++ Z_s = C_s;
++ do
++ {
++ Z_f[0] = C_f0;
++ Z_f[1] = C_f1;
++ Z_f[2] = Z_f[3] = 0;
++ }
++ while (0);
++ if ((((C_e + 1) & 2047) > 1))
++ {
++ Z_e = C_e + 16383 - 1023;
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = ((113 - 53)) / 32;
++ _up = ((113 - 53)) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ Z_f[_i] = Z_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ Z_f[_i] =
++ Z_f[_i - _skip] << _up | Z_f[_i - _skip - 1] >> _down;
++ Z_f[_i--] = Z_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ Z_f[_i] = 0;
++ }
++ while (0);
++ }
++ else
++ {
++ if (C_e == 0)
++ {
++ if (((C_f1 | C_f0) == 0))
++ Z_e = 0;
++ else
++ {
++ int _lz;
++ _fex |= (0);
++ do
++ {
++ if (C_f1)
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _lz = __builtin_clz (C_f1);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _lz = __builtin_clzl (C_f1);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _lz = __builtin_clzll (C_f1);
++ else
++ abort ();
++ }
++ while (0);
++ else
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _lz = __builtin_clz (C_f0);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _lz = __builtin_clzl (C_f0);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _lz = __builtin_clzll (C_f0);
++ else
++ abort ();
++ }
++ while (0);
++ _lz += 32;
++ }
++ }
++ while (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (_lz + 113 - (2 * 32)) / 32;
++ _up = (_lz + 113 - (2 * 32)) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ Z_f[_i] = Z_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ Z_f[_i] =
++ Z_f[_i - _skip] << _up | Z_f[_i - _skip -
++ 1] >> _down;
++ Z_f[_i--] = Z_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ Z_f[_i] = 0;
++ }
++ while (0);
++ Z_e = (16383 - 1023 + 1 + ((2 * 32) - 53) - _lz);
++ }
++ }
++ else
++ {
++ Z_e = 32767;
++ if (!((C_f1 | C_f0) == 0))
++ {
++ if (!((C_f1) & ((unsigned long) 1 << (53 - 2) % 32)))
++ _fex |= (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = ((113 - 53)) / 32;
++ _up = ((113 - 53)) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ Z_f[_i] = Z_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ Z_f[_i] =
++ Z_f[_i - _skip] << _up | Z_f[_i - _skip -
++ 1] >> _down;
++ Z_f[_i--] = Z_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ Z_f[_i] = 0;
++ }
++ while (0);
++ }
++ }
++ }
++ }
++ while (0);
++
++/* FP_PACK_RAW_Q(x,X) */
++ do
++ {
++ union _FP_UNION_Q _flo;
++ _flo.bits.frac0 = X_f[0];
++ _flo.bits.frac1 = X_f[1];
++ _flo.bits.frac2 = X_f[2];
++ _flo.bits.frac3 = X_f[3];
++ _flo.bits.exp = X_e;
++ _flo.bits.sign = X_s;
++ (x) = _flo.flt;
++ }
++ while (0);
++
++/* FP_PACK_RAW_Q(y,Y) */
++ do
++ {
++ union _FP_UNION_Q _flo;
++ _flo.bits.frac0 = Y_f[0];
++ _flo.bits.frac1 = Y_f[1];
++ _flo.bits.frac2 = Y_f[2];
++ _flo.bits.frac3 = Y_f[3];
++ _flo.bits.exp = Y_e;
++ _flo.bits.sign = Y_s;
++ (y) = _flo.flt;
++ }
++ while (0);
++
++/* FP_PACK_RAW_Q(z,Z) */
++ do
++ {
++ union _FP_UNION_Q _flo;
++ _flo.bits.frac0 = Z_f[0];
++ _flo.bits.frac1 = Z_f[1];
++ _flo.bits.frac2 = Z_f[2];
++ _flo.bits.frac3 = Z_f[3];
++ _flo.bits.exp = Z_e;
++ _flo.bits.sign = Z_s;
++ (z) = _flo.flt;
++ }
++ while (0);
++
++/* FP_HANDLE_EXCEPTIONS */
++ do
++ {
++ }
++ while (0);
++
++ /* Multiply. */
++/* FP_INIT_ROUNDMODE */
++ do
++ {
++ }
++ while (0);
++
++/* FP_UNPACK_Q(X,x) */
++ do
++ {
++ do
++ {
++ union _FP_UNION_Q _flo;
++ _flo.flt = (x);
++ X_f[0] = _flo.bits.frac0;
++ X_f[1] = _flo.bits.frac1;
++ X_f[2] = _flo.bits.frac2;
++ X_f[3] = _flo.bits.frac3;
++ X_e = _flo.bits.exp;
++ X_s = _flo.bits.sign;
++ }
++ while (0);
++ do
++ {
++ switch (X_e)
++ {
++ default:
++ (X_f[3]) |= ((unsigned long) 1 << (113 - 1) % 32);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _up = (3) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ X_f[_i] = X_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ X_f[_i] =
++ X_f[_i - _skip] << _up | X_f[_i - _skip -
++ 1] >> _down;
++ X_f[_i--] = X_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ X_f[_i] = 0;
++ }
++ while (0);
++ X_e -= 16383;
++ X_c = 0;
++ break;
++ case 0:
++ if (((X_f[0] | X_f[1] | X_f[2] | X_f[3]) == 0))
++ X_c = 1;
++ else
++ {
++ long _shift;
++ do
++ {
++ if (X_f[3])
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _shift = __builtin_clz (X_f[3]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _shift = __builtin_clzl (X_f[3]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _shift = __builtin_clzll (X_f[3]);
++ else
++ abort ();
++ }
++ while (0);
++ }
++ else if (X_f[2])
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _shift = __builtin_clz (X_f[2]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _shift = __builtin_clzl (X_f[2]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _shift = __builtin_clzll (X_f[2]);
++ else
++ abort ();
++ }
++ while (0);
++ _shift += 32;
++ }
++ else if (X_f[1])
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _shift = __builtin_clz (X_f[1]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _shift = __builtin_clzl (X_f[1]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _shift = __builtin_clzll (X_f[1]);
++ else
++ abort ();
++ }
++ while (0);
++ _shift += 32 * 2;
++ }
++ else
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _shift = __builtin_clz (X_f[0]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _shift = __builtin_clzl (X_f[0]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _shift = __builtin_clzll (X_f[0]);
++ else
++ abort ();
++ }
++ while (0);
++ _shift += 32 * 3;
++ }
++ }
++ while (0);
++ _shift -= ((4 * 32) - 113);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = ((_shift + 3)) / 32;
++ _up = ((_shift + 3)) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ X_f[_i] = X_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ X_f[_i] =
++ X_f[_i - _skip] << _up | X_f[_i - _skip -
++ 1] >> _down;
++ X_f[_i--] = X_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ X_f[_i] = 0;
++ }
++ while (0);
++ X_e -= 16383 - 1 + _shift;
++ X_c = 0;
++ _fex |= (0);
++ }
++ break;
++ case 32767:
++ if (((X_f[0] | X_f[1] | X_f[2] | X_f[3]) == 0))
++ X_c = 2;
++ else
++ {
++ X_c = 3;
++ if (!((X_f[3]) & ((unsigned long) 1 << (113 - 2) % 32)))
++ _fex |= (0);
++ } break;
++ }
++ }
++ while (0);
++ }
++ while (0);
++
++/* FP_UNPACK_Q(Y,y) */
++ do
++ {
++ do
++ {
++ union _FP_UNION_Q _flo;
++ _flo.flt = (y);
++ Y_f[0] = _flo.bits.frac0;
++ Y_f[1] = _flo.bits.frac1;
++ Y_f[2] = _flo.bits.frac2;
++ Y_f[3] = _flo.bits.frac3;
++ Y_e = _flo.bits.exp;
++ Y_s = _flo.bits.sign;
++ }
++ while (0);
++ do
++ {
++ switch (Y_e)
++ {
++ default:
++ (Y_f[3]) |= ((unsigned long) 1 << (113 - 1) % 32);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _up = (3) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ Y_f[_i] = Y_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ Y_f[_i] =
++ Y_f[_i - _skip] << _up | Y_f[_i - _skip -
++ 1] >> _down;
++ Y_f[_i--] = Y_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ Y_f[_i] = 0;
++ }
++ while (0);
++ Y_e -= 16383;
++ Y_c = 0;
++ break;
++ case 0:
++ if (((Y_f[0] | Y_f[1] | Y_f[2] | Y_f[3]) == 0))
++ Y_c = 1;
++ else
++ {
++ long _shift;
++ do
++ {
++ if (Y_f[3])
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _shift = __builtin_clz (Y_f[3]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _shift = __builtin_clzl (Y_f[3]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _shift = __builtin_clzll (Y_f[3]);
++ else
++ abort ();
++ }
++ while (0);
++ }
++ else if (Y_f[2])
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _shift = __builtin_clz (Y_f[2]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _shift = __builtin_clzl (Y_f[2]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _shift = __builtin_clzll (Y_f[2]);
++ else
++ abort ();
++ }
++ while (0);
++ _shift += 32;
++ }
++ else if (Y_f[1])
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _shift = __builtin_clz (Y_f[1]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _shift = __builtin_clzl (Y_f[1]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _shift = __builtin_clzll (Y_f[1]);
++ else
++ abort ();
++ }
++ while (0);
++ _shift += 32 * 2;
++ }
++ else
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ _shift = __builtin_clz (Y_f[0]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ _shift = __builtin_clzl (Y_f[0]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ _shift = __builtin_clzll (Y_f[0]);
++ else
++ abort ();
++ }
++ while (0);
++ _shift += 32 * 3;
++ }
++ }
++ while (0);
++ _shift -= ((4 * 32) - 113);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = ((_shift + 3)) / 32;
++ _up = ((_shift + 3)) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ Y_f[_i] = Y_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ Y_f[_i] =
++ Y_f[_i - _skip] << _up | Y_f[_i - _skip -
++ 1] >> _down;
++ Y_f[_i--] = Y_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ Y_f[_i] = 0;
++ }
++ while (0);
++ Y_e -= 16383 - 1 + _shift;
++ Y_c = 0;
++ _fex |= (0);
++ }
++ break;
++ case 32767:
++ if (((Y_f[0] | Y_f[1] | Y_f[2] | Y_f[3]) == 0))
++ Y_c = 2;
++ else
++ {
++ Y_c = 3;
++ if (!((Y_f[3]) & ((unsigned long) 1 << (113 - 2) % 32)))
++ _fex |= (0);
++ } break;
++ }
++ }
++ while (0);
++ }
++ while (0);
++
++/* FP_MUL_Q(U,X,Y) */
++ do
++ {
++ U_s = X_s ^ Y_s;
++ switch ((((X_c) << 2) | (Y_c)))
++ {
++ case (((0) << 2) | (0)):
++ U_c = 0;
++ U_e = X_e + Y_e + 1;
++ do
++ {
++ unsigned long _z_f[8];
++ unsigned long _b_f0, _b_f1;
++ unsigned long _c_f0, _c_f1;
++ unsigned long _d_f0, _d_f1;
++ unsigned long _e_f0, _e_f1;
++ unsigned long _f_f0, _f_f1;
++ do
++ {
++ USItype __m0 = (X_f[0]), __m1 = (Y_f[0]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" ((_z_f[1])):"%r" (X_f[0]),
++ "r" (Y_f
++ [0]));
++ ((_z_f[0])) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[0]), __m1 = (Y_f[1]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_b_f1):"%r" (X_f[0]),
++ "r" (Y_f
++ [1]));
++ (_b_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[1]), __m1 = (Y_f[0]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_c_f1):"%r" (X_f[1]),
++ "r" (Y_f
++ [0]));
++ (_c_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[1]), __m1 = (Y_f[1]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_d_f1):"%r" (X_f[1]),
++ "r" (Y_f
++ [1]));
++ (_d_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[0]), __m1 = (Y_f[2]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_e_f1):"%r" (X_f[0]),
++ "r" (Y_f
++ [2]));
++ (_e_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[2]), __m1 = (Y_f[0]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_f_f1):"%r" (X_f[2]),
++ "r" (Y_f
++ [0]));
++ (_f_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[1]) = _b_f0 + (_z_f[1]);
++ _c1 = (_z_f[1]) < _b_f0;
++ (_z_f[2]) = _b_f1 + 0;
++ _c2 = (_z_f[2]) < _b_f1;
++ (_z_f[2]) += _c1;
++ _c2 |= (_z_f[2]) < _c1;
++ (_z_f[3]) = 0 + 0 + _c2;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[1]) = _c_f0 + (_z_f[1]);
++ _c1 = (_z_f[1]) < _c_f0;
++ (_z_f[2]) = _c_f1 + (_z_f[2]);
++ _c2 = (_z_f[2]) < _c_f1;
++ (_z_f[2]) += _c1;
++ _c2 |= (_z_f[2]) < _c1;
++ (_z_f[3]) = 0 + (_z_f[3]) + _c2;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[2]) = _d_f0 + (_z_f[2]);
++ _c1 = (_z_f[2]) < _d_f0;
++ (_z_f[3]) = _d_f1 + (_z_f[3]);
++ _c2 = (_z_f[3]) < _d_f1;
++ (_z_f[3]) += _c1;
++ _c2 |= (_z_f[3]) < _c1;
++ (_z_f[4]) = 0 + 0 + _c2;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[2]) = _e_f0 + (_z_f[2]);
++ _c1 = (_z_f[2]) < _e_f0;
++ (_z_f[3]) = _e_f1 + (_z_f[3]);
++ _c2 = (_z_f[3]) < _e_f1;
++ (_z_f[3]) += _c1;
++ _c2 |= (_z_f[3]) < _c1;
++ (_z_f[4]) = 0 + (_z_f[4]) + _c2;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[2]) = _f_f0 + (_z_f[2]);
++ _c1 = (_z_f[2]) < _f_f0;
++ (_z_f[3]) = _f_f1 + (_z_f[3]);
++ _c2 = (_z_f[3]) < _f_f1;
++ (_z_f[3]) += _c1;
++ _c2 |= (_z_f[3]) < _c1;
++ (_z_f[4]) = 0 + (_z_f[4]) + _c2;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[0]), __m1 = (Y_f[3]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_b_f1):"%r" (X_f[0]),
++ "r" (Y_f
++ [3]));
++ (_b_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[3]), __m1 = (Y_f[0]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_c_f1):"%r" (X_f[3]),
++ "r" (Y_f
++ [0]));
++ (_c_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[1]), __m1 = (Y_f[2]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_d_f1):"%r" (X_f[1]),
++ "r" (Y_f
++ [2]));
++ (_d_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[2]), __m1 = (Y_f[1]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_e_f1):"%r" (X_f[2]),
++ "r" (Y_f
++ [1]));
++ (_e_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[3]) = _b_f0 + (_z_f[3]);
++ _c1 = (_z_f[3]) < _b_f0;
++ (_z_f[4]) = _b_f1 + (_z_f[4]);
++ _c2 = (_z_f[4]) < _b_f1;
++ (_z_f[4]) += _c1;
++ _c2 |= (_z_f[4]) < _c1;
++ (_z_f[5]) = 0 + 0 + _c2;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[3]) = _c_f0 + (_z_f[3]);
++ _c1 = (_z_f[3]) < _c_f0;
++ (_z_f[4]) = _c_f1 + (_z_f[4]);
++ _c2 = (_z_f[4]) < _c_f1;
++ (_z_f[4]) += _c1;
++ _c2 |= (_z_f[4]) < _c1;
++ (_z_f[5]) = 0 + (_z_f[5]) + _c2;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[3]) = _d_f0 + (_z_f[3]);
++ _c1 = (_z_f[3]) < _d_f0;
++ (_z_f[4]) = _d_f1 + (_z_f[4]);
++ _c2 = (_z_f[4]) < _d_f1;
++ (_z_f[4]) += _c1;
++ _c2 |= (_z_f[4]) < _c1;
++ (_z_f[5]) = 0 + (_z_f[5]) + _c2;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[3]) = _e_f0 + (_z_f[3]);
++ _c1 = (_z_f[3]) < _e_f0;
++ (_z_f[4]) = _e_f1 + (_z_f[4]);
++ _c2 = (_z_f[4]) < _e_f1;
++ (_z_f[4]) += _c1;
++ _c2 |= (_z_f[4]) < _c1;
++ (_z_f[5]) = 0 + (_z_f[5]) + _c2;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[2]), __m1 = (Y_f[2]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_b_f1):"%r" (X_f[2]),
++ "r" (Y_f
++ [2]));
++ (_b_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[1]), __m1 = (Y_f[3]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_c_f1):"%r" (X_f[1]),
++ "r" (Y_f
++ [3]));
++ (_c_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[3]), __m1 = (Y_f[1]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_d_f1):"%r" (X_f[3]),
++ "r" (Y_f
++ [1]));
++ (_d_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[2]), __m1 = (Y_f[3]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_e_f1):"%r" (X_f[2]),
++ "r" (Y_f
++ [3]));
++ (_e_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[3]), __m1 = (Y_f[2]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_f_f1):"%r" (X_f[3]),
++ "r" (Y_f
++ [2]));
++ (_f_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[4]) = _b_f0 + (_z_f[4]);
++ _c1 = (_z_f[4]) < _b_f0;
++ (_z_f[5]) = _b_f1 + (_z_f[5]);
++ _c2 = (_z_f[5]) < _b_f1;
++ (_z_f[5]) += _c1;
++ _c2 |= (_z_f[5]) < _c1;
++ (_z_f[6]) = 0 + 0 + _c2;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[4]) = _c_f0 + (_z_f[4]);
++ _c1 = (_z_f[4]) < _c_f0;
++ (_z_f[5]) = _c_f1 + (_z_f[5]);
++ _c2 = (_z_f[5]) < _c_f1;
++ (_z_f[5]) += _c1;
++ _c2 |= (_z_f[5]) < _c1;
++ (_z_f[6]) = 0 + (_z_f[6]) + _c2;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[4]) = _d_f0 + (_z_f[4]);
++ _c1 = (_z_f[4]) < _d_f0;
++ (_z_f[5]) = _d_f1 + (_z_f[5]);
++ _c2 = (_z_f[5]) < _d_f1;
++ (_z_f[5]) += _c1;
++ _c2 |= (_z_f[5]) < _c1;
++ (_z_f[6]) = 0 + (_z_f[6]) + _c2;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[5]) = _e_f0 + (_z_f[5]);
++ _c1 = (_z_f[5]) < _e_f0;
++ (_z_f[6]) = _e_f1 + (_z_f[6]);
++ _c2 = (_z_f[6]) < _e_f1;
++ (_z_f[6]) += _c1;
++ _c2 |= (_z_f[6]) < _c1;
++ (_z_f[7]) = 0 + 0 + _c2;
++ }
++ while (0);
++ do
++ {
++ unsigned long _c1, _c2;
++ (_z_f[5]) = _f_f0 + (_z_f[5]);
++ _c1 = (_z_f[5]) < _f_f0;
++ (_z_f[6]) = _f_f1 + (_z_f[6]);
++ _c2 = (_z_f[6]) < _f_f1;
++ (_z_f[6]) += _c1;
++ _c2 |= (_z_f[6]) < _c1;
++ (_z_f[7]) = 0 + (_z_f[7]) + _c2;
++ }
++ while (0);
++ do
++ {
++ USItype __m0 = (X_f[3]), __m1 = (Y_f[3]);
++ __asm__ ("mulhwu %0,%1,%2": "=r" (_b_f1):"%r" (X_f[3]),
++ "r" (Y_f
++ [3]));
++ (_b_f0) = __m0 * __m1;
++ }
++ while (0);
++ do
++ {
++ if (__builtin_constant_p ((_z_f[7])) && ((_z_f[7])) == 0)
++ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2": "=r" ((_z_f[7])), "=&r" ((_z_f[6])):"r" (_b_f1), "%r" (_b_f0),
++ "rI" ((_z_f
++ [6])));
++ else if (__builtin_constant_p ((_z_f[7]))
++ && ((_z_f[7])) == ~(USItype) 0)
++ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2": "=r" ((_z_f[7])), "=&r" ((_z_f[6])):"r" (_b_f1), "%r" (_b_f0),
++ "rI" ((_z_f
++ [6])));
++ else
++ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3": "=r" ((_z_f[7])), "=&r" ((_z_f[6])):"%r" (_b_f1), "r" ((_z_f[7])), "%r" (_b_f0),
++ "rI" ((_z_f
++ [6])));
++ }
++ while (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ unsigned long _s;
++ _skip = ((3 + 113) - 1) / 32;
++ _down = ((3 + 113) - 1) % 32;
++ _up = 32 - _down;
++ for (_s = _i = 0; _i < _skip; ++_i)
++ _s |= _z_f[_i];
++ if (!_down)
++ for (_i = 0; _i <= 7 - _skip; ++_i)
++ _z_f[_i] = _z_f[_i + _skip];
++ else
++ {
++ _s |= _z_f[_i] << _up;
++ for (_i = 0; _i < 7 - _skip; ++_i)
++ _z_f[_i] =
++ _z_f[_i + _skip] >> _down | _z_f[_i + _skip +
++ 1] << _up;
++ _z_f[_i++] = _z_f[7] >> _down;
++ }
++ for (; _i < 8; ++_i)
++ _z_f[_i] = 0;
++ _z_f[0] |= (_s != 0);
++ }
++ while (0);
++ (U_f[3] = (_z_f[3]), U_f[2] = (_z_f[2]), U_f[1] =
++ (_z_f[1]), U_f[0] = (_z_f[0]));
++ }
++ while (0);
++ if (((U_f[3]) & ((unsigned long) 1 << ((3 + 113) % 32))))
++ do
++ {
++ int _sticky;
++ do
++ {
++ long _up, _down, _skip, _i;
++ unsigned long _s;
++ _skip = (1) / 32;
++ _down = (1) % 32;
++ _up = 32 - _down;
++ for (_s = _i = 0; _i < _skip; ++_i)
++ _s |= U_f[_i];
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ U_f[_i] = U_f[_i + _skip];
++ else
++ {
++ _s |= U_f[_i] << _up;
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ U_f[_i] =
++ U_f[_i + _skip] >> _down | U_f[_i + _skip +
++ 1] << _up;
++ U_f[_i++] = U_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ U_f[_i] = 0;
++ _sticky = (_s != 0);
++ }
++ while (0);
++ U_f[0] |= _sticky;
++ }
++ while (0);
++ else
++ U_e--;
++ break;
++ case (((3) << 2) | (3)):
++ do
++ {
++ if (((X_f[3]) & ((unsigned long) 1 << (113 - 2) % 32))
++ && !((Y_f[3]) & ((unsigned long) 1 << (113 - 2) % 32)))
++ {
++ U_s = Y_s;
++ (U_f[0] = Y_f[0], U_f[1] = Y_f[1], U_f[2] = Y_f[2], U_f[3] =
++ Y_f[3]);
++ }
++ else
++ {
++ U_s = X_s;
++ (U_f[0] = X_f[0], U_f[1] = X_f[1], U_f[2] = X_f[2], U_f[3] =
++ X_f[3]);
++ }
++ U_c = 3;
++ }
++ while (0);
++ break;
++ case (((3) << 2) | (0)):
++ case (((3) << 2) | (2)):
++ case (((3) << 2) | (1)):
++ U_s = X_s;
++ case (((2) << 2) | (2)):
++ case (((2) << 2) | (0)):
++ case (((1) << 2) | (0)):
++ case (((1) << 2) | (1)):
++ (U_f[0] = X_f[0], U_f[1] = X_f[1], U_f[2] = X_f[2], U_f[3] =
++ X_f[3]);
++ U_c = X_c;
++ break;
++ case (((0) << 2) | (3)):
++ case (((2) << 2) | (3)):
++ case (((1) << 2) | (3)):
++ U_s = Y_s;
++ case (((0) << 2) | (2)):
++ case (((0) << 2) | (1)):
++ (U_f[0] = Y_f[0], U_f[1] = Y_f[1], U_f[2] = Y_f[2], U_f[3] =
++ Y_f[3]);
++ U_c = Y_c;
++ break;
++ case (((2) << 2) | (1)):
++ case (((1) << 2) | (2)):
++ U_s = 0;
++ U_c = 3;
++ (U_f[3] =
++ ((((unsigned long) 1 << (113 - 2) % 32) << 1) - 1), U_f[2] =
++ -1, U_f[1] = -1, U_f[0] = -1);
++ _fex |= (0);
++ break;
++ default:
++ abort ();
++ }
++ }
++ while (0);
++
++/* FP_PACK_Q(u,U) */
++ do
++ {
++ do
++ {
++ switch (U_c)
++ {
++ case 0:
++ U_e += 16383;
++ if (U_e > 0)
++ {
++ do
++ {
++ if ((U_f[0]) & 7)
++ _fex |= (0);
++ switch (0)
++ {
++ case 0:
++ do
++ {
++ if (((U_f[0]) & 15) != ((unsigned long) 1 << 2))
++ do
++ {
++ unsigned long _t;
++ _t =
++ ((U_f[0] +=
++ ((unsigned long) 1 << 2)) <
++ ((unsigned long) 1 << 2));
++ U_f[1] += _t;
++ _t = (U_f[1] < _t);
++ U_f[2] += _t;
++ _t = (U_f[2] < _t);
++ U_f[3] += _t;
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ case 1:
++ (void) 0;
++ break;
++ case 2:
++ do
++ {
++ if (!U_s && ((U_f[0]) & 7))
++ do
++ {
++ unsigned long _t;
++ _t =
++ ((U_f[0] +=
++ ((unsigned long) 1 << 3)) <
++ ((unsigned long) 1 << 3));
++ U_f[1] += _t;
++ _t = (U_f[1] < _t);
++ U_f[2] += _t;
++ _t = (U_f[2] < _t);
++ U_f[3] += _t;
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ case 3:
++ do
++ {
++ if (U_s && ((U_f[0]) & 7))
++ do
++ {
++ unsigned long _t;
++ _t =
++ ((U_f[0] +=
++ ((unsigned long) 1 << 3)) <
++ ((unsigned long) 1 << 3));
++ U_f[1] += _t;
++ _t = (U_f[1] < _t);
++ U_f[2] += _t;
++ _t = (U_f[2] < _t);
++ U_f[3] += _t;
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ }
++ }
++ while (0);
++ if (((U_f[3]) & ((unsigned long) 1 << ((3 + 113) % 32))))
++ {
++ ((U_f[3]) &= ~((unsigned long) 1 << ((3 + 113) % 32)));
++ U_e++;
++ }
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _down = (3) % 32;
++ _up = 32 - _down;
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ U_f[_i] = U_f[_i + _skip];
++ else
++ {
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ U_f[_i] =
++ U_f[_i + _skip] >> _down | U_f[_i + _skip +
++ 1] << _up;
++ U_f[_i++] = U_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ U_f[_i] = 0;
++ }
++ while (0);
++ if (U_e >= 32767)
++ {
++ switch (0)
++ {
++ case 0:
++ U_c = 2;
++ break;
++ case 2:
++ if (!U_s)
++ U_c = 2;
++ break;
++ case 3:
++ if (U_s)
++ U_c = 2;
++ break;
++ }
++ if (U_c == 2)
++ {
++ U_e = 32767;
++ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 0);
++ }
++ else
++ {
++ U_e = 32767 - 1;
++ (U_f[3] = (~(signed long) 0), U_f[2] =
++ (~(signed long) 0), U_f[1] =
++ (~(signed long) 0), U_f[0] = (~(signed long) 0));
++ } _fex |= (0);
++ _fex |= (0);
++ }
++ }
++ else
++ {
++ U_e = -U_e + 1;
++ if (U_e <= (3 + 113))
++ {
++ do
++ {
++ int _sticky;
++ do
++ {
++ long _up, _down, _skip, _i;
++ unsigned long _s;
++ _skip = (U_e) / 32;
++ _down = (U_e) % 32;
++ _up = 32 - _down;
++ for (_s = _i = 0; _i < _skip; ++_i)
++ _s |= U_f[_i];
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ U_f[_i] = U_f[_i + _skip];
++ else
++ {
++ _s |= U_f[_i] << _up;
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ U_f[_i] =
++ U_f[_i + _skip] >> _down | U_f[_i +
++ _skip +
++ 1] <<
++ _up;
++ U_f[_i++] = U_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ U_f[_i] = 0;
++ _sticky = (_s != 0);
++ }
++ while (0);
++ U_f[0] |= _sticky;
++ }
++ while (0);
++ do
++ {
++ if ((U_f[0]) & 7)
++ _fex |= (0);
++ switch (0)
++ {
++ case 0:
++ do
++ {
++ if (((U_f[0]) & 15) !=
++ ((unsigned long) 1 << 2))
++ do
++ {
++ unsigned long _t;
++ _t =
++ ((U_f[0] +=
++ ((unsigned long) 1 << 2)) <
++ ((unsigned long) 1 << 2));
++ U_f[1] += _t;
++ _t = (U_f[1] < _t);
++ U_f[2] += _t;
++ _t = (U_f[2] < _t);
++ U_f[3] += _t;
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ case 1:
++ (void) 0;
++ break;
++ case 2:
++ do
++ {
++ if (!U_s && ((U_f[0]) & 7))
++ do
++ {
++ unsigned long _t;
++ _t =
++ ((U_f[0] +=
++ ((unsigned long) 1 << 3)) <
++ ((unsigned long) 1 << 3));
++ U_f[1] += _t;
++ _t = (U_f[1] < _t);
++ U_f[2] += _t;
++ _t = (U_f[2] < _t);
++ U_f[3] += _t;
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ case 3:
++ do
++ {
++ if (U_s && ((U_f[0]) & 7))
++ do
++ {
++ unsigned long _t;
++ _t =
++ ((U_f[0] +=
++ ((unsigned long) 1 << 3)) <
++ ((unsigned long) 1 << 3));
++ U_f[1] += _t;
++ _t = (U_f[1] < _t);
++ U_f[2] += _t;
++ _t = (U_f[2] < _t);
++ U_f[3] += _t;
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ }
++ }
++ while (0);
++ if ((U_f[3]) &
++ (((unsigned long) 1 << ((3 + 113) % 32)) >> 1))
++ {
++ U_e = 1;
++ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 0);
++ }
++ else
++ {
++ U_e = 0;
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _down = (3) % 32;
++ _up = 32 - _down;
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ U_f[_i] = U_f[_i + _skip];
++ else
++ {
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ U_f[_i] =
++ U_f[_i + _skip] >> _down | U_f[_i +
++ _skip +
++ 1] <<
++ _up;
++ U_f[_i++] = U_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ U_f[_i] = 0;
++ }
++ while (0);
++ _fex |= (0);
++ }
++ }
++ else
++ {
++ U_e = 0;
++ if (!((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
++ {
++ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 1);
++ do
++ {
++ if ((U_f[0]) & 7)
++ _fex |= (0);
++ switch (0)
++ {
++ case 0:
++ do
++ {
++ if (((U_f[0]) & 15) !=
++ ((unsigned long) 1 << 2))
++ do
++ {
++ unsigned long _t;
++ _t =
++ ((U_f[0] +=
++ ((unsigned long) 1 << 2)) <
++ ((unsigned long) 1 << 2));
++ U_f[1] += _t;
++ _t = (U_f[1] < _t);
++ U_f[2] += _t;
++ _t = (U_f[2] < _t);
++ U_f[3] += _t;
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ case 1:
++ (void) 0;
++ break;
++ case 2:
++ do
++ {
++ if (!U_s && ((U_f[0]) & 7))
++ do
++ {
++ unsigned long _t;
++ _t =
++ ((U_f[0] +=
++ ((unsigned long) 1 << 3)) <
++ ((unsigned long) 1 << 3));
++ U_f[1] += _t;
++ _t = (U_f[1] < _t);
++ U_f[2] += _t;
++ _t = (U_f[2] < _t);
++ U_f[3] += _t;
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ case 3:
++ do
++ {
++ if (U_s && ((U_f[0]) & 7))
++ do
++ {
++ unsigned long _t;
++ _t =
++ ((U_f[0] +=
++ ((unsigned long) 1 << 3)) <
++ ((unsigned long) 1 << 3));
++ U_f[1] += _t;
++ _t = (U_f[1] < _t);
++ U_f[2] += _t;
++ _t = (U_f[2] < _t);
++ U_f[3] += _t;
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ }
++ }
++ while (0);
++ (U_f[0]) >>= (3);
++ }
++ _fex |= (0);
++ }
++ }
++ break;
++ case 1:
++ U_e = 0;
++ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 0);
++ break;
++ case 2:
++ U_e = 32767;
++ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 0);
++ break;
++ case 3:
++ U_e = 32767;
++ if (!1)
++ {
++ (U_f[3] =
++ ((((unsigned long) 1 << (113 - 2) % 32) << 1) - 1),
++ U_f[2] = -1, U_f[1] = -1, U_f[0] = -1);
++ U_s = 0;
++ }
++ else
++ (U_f[3]) |= ((unsigned long) 1 << (113 - 2) % 32);
++ break;
++ }
++ }
++ while (0);
++ do
++ {
++ union _FP_UNION_Q _flo;
++ _flo.bits.frac0 = U_f[0];
++ _flo.bits.frac1 = U_f[1];
++ _flo.bits.frac2 = U_f[2];
++ _flo.bits.frac3 = U_f[3];
++ _flo.bits.exp = U_e;
++ _flo.bits.sign = U_s;
++ (u) = _flo.flt;
++ }
++ while (0);
++ }
++ while (0);
++
++/* FP_HANDLE_EXCEPTIONS */
++ do
++ {
++ }
++ while (0);
++
++ /* Subtract. */
++/* FP_INIT_ROUNDMODE */
++ do
++ {
++ }
++ while (0);
++
++/* FP_UNPACK_SEMIRAW_Q(U,u) */
++ do
++ {
++ do
++ {
++ union _FP_UNION_Q _flo;
++ _flo.flt = (u);
++ U_f[0] = _flo.bits.frac0;
++ U_f[1] = _flo.bits.frac1;
++ U_f[2] = _flo.bits.frac2;
++ U_f[3] = _flo.bits.frac3;
++ U_e = _flo.bits.exp;
++ U_s = _flo.bits.sign;
++ }
++ while (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _up = (3) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ U_f[_i] = U_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ U_f[_i] =
++ U_f[_i - _skip] << _up | U_f[_i - _skip - 1] >> _down;
++ U_f[_i--] = U_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ U_f[_i] = 0;
++ }
++ while (0);
++ }
++ while (0);
++
++/* FP_UNPACK_SEMIRAW_Q(Z,z) */
++ do
++ {
++ do
++ {
++ union _FP_UNION_Q _flo;
++ _flo.flt = (z);
++ Z_f[0] = _flo.bits.frac0;
++ Z_f[1] = _flo.bits.frac1;
++ Z_f[2] = _flo.bits.frac2;
++ Z_f[3] = _flo.bits.frac3;
++ Z_e = _flo.bits.exp;
++ Z_s = _flo.bits.sign;
++ }
++ while (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _up = (3) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ Z_f[_i] = Z_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ Z_f[_i] =
++ Z_f[_i - _skip] << _up | Z_f[_i - _skip - 1] >> _down;
++ Z_f[_i--] = Z_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ Z_f[_i] = 0;
++ }
++ while (0);
++ }
++ while (0);
++
++/* FP_SUB_Q(V,U,Z) */
++ do
++ {
++ if (!(Z_e == 32767 && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0)))
++ Z_s ^= 1;
++ do
++ {
++ if (U_s == Z_s)
++ {
++ V_s = U_s;
++ int ediff = U_e - Z_e;
++ if (ediff > 0)
++ {
++ V_e = U_e;
++ if (Z_e == 0)
++ {
++ if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
++ {
++ do
++ {
++ if (U_e == 32767
++ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3]) ==
++ 0)
++ && !((U_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3) %
++ 32)))
++ _fex |= (0);
++ }
++ while (0);
++ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
++ U_f[2], V_f[3] = U_f[3]);
++ goto add_done;
++ }
++ else
++ {
++ _fex |= (0);
++ ediff--;
++ if (ediff == 0)
++ {
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = U_f[0] + Z_f[0];
++ _c1 = V_f[0] < U_f[0];
++ V_f[1] = U_f[1] + Z_f[1];
++ _c2 = V_f[1] < U_f[1];
++ V_f[1] += _c1;
++ _c2 |= V_f[1] < _c1;
++ V_f[2] = U_f[2] + Z_f[2];
++ _c3 = V_f[2] < U_f[2];
++ V_f[2] += _c2;
++ _c3 |= V_f[2] < _c2;
++ V_f[3] = U_f[3] + Z_f[3] + _c3;
++ }
++ while (0);
++ goto add3;
++ }
++ if (U_e == 32767)
++ {
++ do
++ {
++ if (U_e == 32767
++ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3])
++ == 0)
++ && !((U_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3)
++ % 32)))
++ _fex |= (0);
++ }
++ while (0);
++ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
++ U_f[2], V_f[3] = U_f[3]);
++ goto add_done;
++ }
++ goto add1;
++ }
++ }
++ else if (U_e == 32767)
++ {
++ do
++ {
++ if (U_e == 32767
++ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0)
++ && !((U_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3) % 32)))
++ _fex |= (0);
++ }
++ while (0);
++ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
++ U_f[2], V_f[3] = U_f[3]);
++ goto add_done;
++ }
++ (Z_f[3]) |= ((unsigned long) 1 << (113 - 1 + 3) % 32);
++ add1:if (ediff <= (3 + 113))
++ do
++ {
++ int _sticky;
++ do
++ {
++ long _up, _down, _skip, _i;
++ unsigned long _s;
++ _skip = (ediff) / 32;
++ _down = (ediff) % 32;
++ _up = 32 - _down;
++ for (_s = _i = 0; _i < _skip; ++_i)
++ _s |= Z_f[_i];
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ Z_f[_i] = Z_f[_i + _skip];
++ else
++ {
++ _s |= Z_f[_i] << _up;
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ Z_f[_i] =
++ Z_f[_i + _skip] >> _down | Z_f[_i +
++ _skip +
++ 1] << _up;
++ Z_f[_i++] = Z_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ Z_f[_i] = 0;
++ _sticky = (_s != 0);
++ }
++ while (0);
++ Z_f[0] |= _sticky;
++ }
++ while (0);
++ else if (!((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
++ (Z_f[3] = 0, Z_f[2] = 0, Z_f[1] = 0, Z_f[0] = 1);
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = U_f[0] + Z_f[0];
++ _c1 = V_f[0] < U_f[0];
++ V_f[1] = U_f[1] + Z_f[1];
++ _c2 = V_f[1] < U_f[1];
++ V_f[1] += _c1;
++ _c2 |= V_f[1] < _c1;
++ V_f[2] = U_f[2] + Z_f[2];
++ _c3 = V_f[2] < U_f[2];
++ V_f[2] += _c2;
++ _c3 |= V_f[2] < _c2;
++ V_f[3] = U_f[3] + Z_f[3] + _c3;
++ }
++ while (0);
++ }
++ else if (ediff < 0)
++ {
++ ediff = -ediff;
++ V_e = Z_e;
++ if (U_e == 0)
++ {
++ if (((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
++ {
++ do
++ {
++ if (Z_e == 32767
++ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) ==
++ 0)
++ && !((Z_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3) %
++ 32)))
++ _fex |= (0);
++ }
++ while (0);
++ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
++ Z_f[2], V_f[3] = Z_f[3]);
++ goto add_done;
++ }
++ else
++ {
++ _fex |= (0);
++ ediff--;
++ if (ediff == 0)
++ {
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = Z_f[0] + U_f[0];
++ _c1 = V_f[0] < Z_f[0];
++ V_f[1] = Z_f[1] + U_f[1];
++ _c2 = V_f[1] < Z_f[1];
++ V_f[1] += _c1;
++ _c2 |= V_f[1] < _c1;
++ V_f[2] = Z_f[2] + U_f[2];
++ _c3 = V_f[2] < Z_f[2];
++ V_f[2] += _c2;
++ _c3 |= V_f[2] < _c2;
++ V_f[3] = Z_f[3] + U_f[3] + _c3;
++ }
++ while (0);
++ goto add3;
++ }
++ if (Z_e == 32767)
++ {
++ do
++ {
++ if (Z_e == 32767
++ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3])
++ == 0)
++ && !((Z_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3)
++ % 32)))
++ _fex |= (0);
++ }
++ while (0);
++ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
++ Z_f[2], V_f[3] = Z_f[3]);
++ goto add_done;
++ }
++ goto add2;
++ }
++ }
++ else if (Z_e == 32767)
++ {
++ do
++ {
++ if (Z_e == 32767
++ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0)
++ && !((Z_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3) % 32)))
++ _fex |= (0);
++ }
++ while (0);
++ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
++ Z_f[2], V_f[3] = Z_f[3]);
++ goto add_done;
++ }
++ (U_f[3]) |= ((unsigned long) 1 << (113 - 1 + 3) % 32);
++ add2:if (ediff <= (3 + 113))
++ do
++ {
++ int _sticky;
++ do
++ {
++ long _up, _down, _skip, _i;
++ unsigned long _s;
++ _skip = (ediff) / 32;
++ _down = (ediff) % 32;
++ _up = 32 - _down;
++ for (_s = _i = 0; _i < _skip; ++_i)
++ _s |= U_f[_i];
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ U_f[_i] = U_f[_i + _skip];
++ else
++ {
++ _s |= U_f[_i] << _up;
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ U_f[_i] =
++ U_f[_i + _skip] >> _down | U_f[_i +
++ _skip +
++ 1] << _up;
++ U_f[_i++] = U_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ U_f[_i] = 0;
++ _sticky = (_s != 0);
++ }
++ while (0);
++ U_f[0] |= _sticky;
++ }
++ while (0);
++ else if (!((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
++ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 1);
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = Z_f[0] + U_f[0];
++ _c1 = V_f[0] < Z_f[0];
++ V_f[1] = Z_f[1] + U_f[1];
++ _c2 = V_f[1] < Z_f[1];
++ V_f[1] += _c1;
++ _c2 |= V_f[1] < _c1;
++ V_f[2] = Z_f[2] + U_f[2];
++ _c3 = V_f[2] < Z_f[2];
++ V_f[2] += _c2;
++ _c3 |= V_f[2] < _c2;
++ V_f[3] = Z_f[3] + U_f[3] + _c3;
++ }
++ while (0);
++ }
++ else
++ {
++ if (!(((U_e + 1) & 32767) > 1))
++ {
++ if (U_e == 0)
++ {
++ V_e = 0;
++ if (((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
++ {
++ if (!((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
++ _fex |= (0);
++ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
++ Z_f[2], V_f[3] = Z_f[3]);
++ goto add_done;
++ }
++ else if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
++ {
++ _fex |= (0);
++ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
++ U_f[2], V_f[3] = U_f[3]);
++ goto add_done;
++ }
++ else
++ {
++ _fex |= (0);
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = U_f[0] + Z_f[0];
++ _c1 = V_f[0] < U_f[0];
++ V_f[1] = U_f[1] + Z_f[1];
++ _c2 = V_f[1] < U_f[1];
++ V_f[1] += _c1;
++ _c2 |= V_f[1] < _c1;
++ V_f[2] = U_f[2] + Z_f[2];
++ _c3 = V_f[2] < U_f[2];
++ V_f[2] += _c2;
++ _c3 |= V_f[2] < _c2;
++ V_f[3] = U_f[3] + Z_f[3] + _c3;
++ }
++ while (0);
++ if ((V_f[3]) &
++ ((unsigned long) 1 << (113 - 1 + 3) % 32))
++ {
++ (V_f[3]) &=
++ ~(unsigned long) ((unsigned long) 1 <<
++ (113 - 1 + 3) % 32);
++ V_e = 1;
++ }
++ goto add_done;
++ }
++ }
++ else
++ {
++ do
++ {
++ if (U_e == 32767
++ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3]) ==
++ 0)
++ && !((U_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3) %
++ 32)))
++ _fex |= (0);
++ }
++ while (0);
++ do
++ {
++ if (Z_e == 32767
++ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) ==
++ 0)
++ && !((Z_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3) %
++ 32)))
++ _fex |= (0);
++ }
++ while (0);
++ V_e = 32767;
++ if (((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
++ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
++ Z_f[2], V_f[3] = Z_f[3]);
++ else if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
++ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
++ U_f[2], V_f[3] = U_f[3]);
++ else
++ do
++ {
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _down = (3) % 32;
++ _up = 32 - _down;
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ U_f[_i] = U_f[_i + _skip];
++ else
++ {
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ U_f[_i] =
++ U_f[_i +
++ _skip] >> _down | U_f[_i +
++ _skip +
++ 1] <<
++ _up;
++ U_f[_i++] = U_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ U_f[_i] = 0;
++ }
++ while (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _down = (3) % 32;
++ _up = 32 - _down;
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ Z_f[_i] = Z_f[_i + _skip];
++ else
++ {
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ Z_f[_i] =
++ Z_f[_i +
++ _skip] >> _down | Z_f[_i +
++ _skip +
++ 1] <<
++ _up;
++ Z_f[_i++] = Z_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ Z_f[_i] = 0;
++ }
++ while (0);
++ do
++ {
++ if (((U_f[3]) &
++ ((unsigned long) 1 << (113 - 2) %
++ 32))
++ && !((Z_f[3]) &
++ ((unsigned long) 1 << (113 - 2) %
++ 32)))
++ {
++ V_s = Z_s;
++ (V_f[0] = Z_f[0], V_f[1] =
++ Z_f[1], V_f[2] = Z_f[2], V_f[3] =
++ Z_f[3]);
++ }
++ else
++ {
++ V_s = U_s;
++ (V_f[0] = U_f[0], V_f[1] =
++ U_f[1], V_f[2] = U_f[2], V_f[3] =
++ U_f[3]);
++ }
++ V_c = 3;
++ }
++ while (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _up = (3) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ V_f[_i] = V_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ V_f[_i] =
++ V_f[_i - _skip] << _up | V_f[_i -
++ _skip
++ -
++ 1] >>
++ _down;
++ V_f[_i--] = V_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ V_f[_i] = 0;
++ }
++ while (0);
++ }
++ while (0);
++ goto add_done;
++ }
++ }
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = U_f[0] + Z_f[0];
++ _c1 = V_f[0] < U_f[0];
++ V_f[1] = U_f[1] + Z_f[1];
++ _c2 = V_f[1] < U_f[1];
++ V_f[1] += _c1;
++ _c2 |= V_f[1] < _c1;
++ V_f[2] = U_f[2] + Z_f[2];
++ _c3 = V_f[2] < U_f[2];
++ V_f[2] += _c2;
++ _c3 |= V_f[2] < _c2;
++ V_f[3] = U_f[3] + Z_f[3] + _c3;
++ }
++ while (0);
++ V_e = U_e + 1;
++ do
++ {
++ int _sticky;
++ do
++ {
++ long _up, _down, _skip, _i;
++ unsigned long _s;
++ _skip = (1) / 32;
++ _down = (1) % 32;
++ _up = 32 - _down;
++ for (_s = _i = 0; _i < _skip; ++_i)
++ _s |= V_f[_i];
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ V_f[_i] = V_f[_i + _skip];
++ else
++ {
++ _s |= V_f[_i] << _up;
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ V_f[_i] =
++ V_f[_i + _skip] >> _down | V_f[_i + _skip +
++ 1] << _up;
++ V_f[_i++] = V_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ V_f[_i] = 0;
++ _sticky = (_s != 0);
++ }
++ while (0);
++ V_f[0] |= _sticky;
++ }
++ while (0);
++ if (V_e == 32767)
++ do
++ {
++ if (0 == 0 || (0 == 2 && !V_s) || (0 == 3 && V_s))
++ {
++ V_e = 32767;
++ (V_f[3] = 0, V_f[2] = 0, V_f[1] = 0, V_f[0] = 0);
++ }
++ else
++ {
++ V_e = 32767 - 1;
++ _fex |= (0);
++ _fex |= (0);
++ (V_f[3] = (~(signed long) 0), V_f[2] =
++ (~(signed long) 0), V_f[1] =
++ (~(signed long) 0), V_f[0] = (~(signed long) 0));
++ }
++ }
++ while (0);
++ goto add_done;
++ }
++ add3:if ((V_f[3]) &
++ ((unsigned long) 1 << (113 - 1 + 3) % 32))
++ {
++ (V_f[3]) &=
++ ~(unsigned long) ((unsigned long) 1 << (113 - 1 + 3) %
++ 32);
++ V_e++;
++ do
++ {
++ int _sticky;
++ do
++ {
++ long _up, _down, _skip, _i;
++ unsigned long _s;
++ _skip = (1) / 32;
++ _down = (1) % 32;
++ _up = 32 - _down;
++ for (_s = _i = 0; _i < _skip; ++_i)
++ _s |= V_f[_i];
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ V_f[_i] = V_f[_i + _skip];
++ else
++ {
++ _s |= V_f[_i] << _up;
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ V_f[_i] =
++ V_f[_i + _skip] >> _down | V_f[_i + _skip +
++ 1] << _up;
++ V_f[_i++] = V_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ V_f[_i] = 0;
++ _sticky = (_s != 0);
++ }
++ while (0);
++ V_f[0] |= _sticky;
++ }
++ while (0);
++ if (V_e == 32767)
++ do
++ {
++ if (0 == 0 || (0 == 2 && !V_s) || (0 == 3 && V_s))
++ {
++ V_e = 32767;
++ (V_f[3] = 0, V_f[2] = 0, V_f[1] = 0, V_f[0] = 0);
++ }
++ else
++ {
++ V_e = 32767 - 1;
++ _fex |= (0);
++ _fex |= (0);
++ (V_f[3] = (~(signed long) 0), V_f[2] =
++ (~(signed long) 0), V_f[1] =
++ (~(signed long) 0), V_f[0] = (~(signed long) 0));
++ }
++ }
++ while (0);
++ }
++ add_done:;
++ }
++ else
++ {
++ int ediff = U_e - Z_e;
++ if (ediff > 0)
++ {
++ V_e = U_e;
++ V_s = U_s;
++ if (Z_e == 0)
++ {
++ if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
++ {
++ do
++ {
++ if (U_e == 32767
++ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3]) ==
++ 0)
++ && !((U_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3) %
++ 32)))
++ _fex |= (0);
++ }
++ while (0);
++ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
++ U_f[2], V_f[3] = U_f[3]);
++ goto sub_done;
++ }
++ else
++ {
++ _fex |= (0);
++ ediff--;
++ if (ediff == 0)
++ {
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = U_f[0] - Z_f[0];
++ _c1 = V_f[0] > U_f[0];
++ V_f[1] = U_f[1] - Z_f[1];
++ _c2 = V_f[1] > U_f[1];
++ V_f[1] -= _c1;
++ _c2 |= _c1 && (Z_f[1] == U_f[1]);
++ V_f[2] = U_f[2] - Z_f[2];
++ _c3 = V_f[2] > U_f[2];
++ V_f[2] -= _c2;
++ _c3 |= _c2 && (Z_f[2] == U_f[2]);
++ V_f[3] = U_f[3] - Z_f[3] - _c3;
++ }
++ while (0);
++ goto sub3;
++ }
++ if (U_e == 32767)
++ {
++ do
++ {
++ if (U_e == 32767
++ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3])
++ == 0)
++ && !((U_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3)
++ % 32)))
++ _fex |= (0);
++ }
++ while (0);
++ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
++ U_f[2], V_f[3] = U_f[3]);
++ goto sub_done;
++ }
++ goto sub1;
++ }
++ }
++ else if (U_e == 32767)
++ {
++ do
++ {
++ if (U_e == 32767
++ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0)
++ && !((U_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3) % 32)))
++ _fex |= (0);
++ }
++ while (0);
++ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
++ U_f[2], V_f[3] = U_f[3]);
++ goto sub_done;
++ }
++ (Z_f[3]) |= ((unsigned long) 1 << (113 - 1 + 3) % 32);
++ sub1:if (ediff <= (3 + 113))
++ do
++ {
++ int _sticky;
++ do
++ {
++ long _up, _down, _skip, _i;
++ unsigned long _s;
++ _skip = (ediff) / 32;
++ _down = (ediff) % 32;
++ _up = 32 - _down;
++ for (_s = _i = 0; _i < _skip; ++_i)
++ _s |= Z_f[_i];
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ Z_f[_i] = Z_f[_i + _skip];
++ else
++ {
++ _s |= Z_f[_i] << _up;
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ Z_f[_i] =
++ Z_f[_i + _skip] >> _down | Z_f[_i +
++ _skip +
++ 1] << _up;
++ Z_f[_i++] = Z_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ Z_f[_i] = 0;
++ _sticky = (_s != 0);
++ }
++ while (0);
++ Z_f[0] |= _sticky;
++ }
++ while (0);
++ else if (!((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
++ (Z_f[3] = 0, Z_f[2] = 0, Z_f[1] = 0, Z_f[0] = 1);
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = U_f[0] - Z_f[0];
++ _c1 = V_f[0] > U_f[0];
++ V_f[1] = U_f[1] - Z_f[1];
++ _c2 = V_f[1] > U_f[1];
++ V_f[1] -= _c1;
++ _c2 |= _c1 && (Z_f[1] == U_f[1]);
++ V_f[2] = U_f[2] - Z_f[2];
++ _c3 = V_f[2] > U_f[2];
++ V_f[2] -= _c2;
++ _c3 |= _c2 && (Z_f[2] == U_f[2]);
++ V_f[3] = U_f[3] - Z_f[3] - _c3;
++ }
++ while (0);
++ }
++ else if (ediff < 0)
++ {
++ ediff = -ediff;
++ V_e = Z_e;
++ V_s = Z_s;
++ if (U_e == 0)
++ {
++ if (((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
++ {
++ do
++ {
++ if (Z_e == 32767
++ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) ==
++ 0)
++ && !((Z_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3) %
++ 32)))
++ _fex |= (0);
++ }
++ while (0);
++ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
++ Z_f[2], V_f[3] = Z_f[3]);
++ goto sub_done;
++ }
++ else
++ {
++ _fex |= (0);
++ ediff--;
++ if (ediff == 0)
++ {
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = Z_f[0] - U_f[0];
++ _c1 = V_f[0] > Z_f[0];
++ V_f[1] = Z_f[1] - U_f[1];
++ _c2 = V_f[1] > Z_f[1];
++ V_f[1] -= _c1;
++ _c2 |= _c1 && (U_f[1] == Z_f[1]);
++ V_f[2] = Z_f[2] - U_f[2];
++ _c3 = V_f[2] > Z_f[2];
++ V_f[2] -= _c2;
++ _c3 |= _c2 && (U_f[2] == Z_f[2]);
++ V_f[3] = Z_f[3] - U_f[3] - _c3;
++ }
++ while (0);
++ goto sub3;
++ }
++ if (Z_e == 32767)
++ {
++ do
++ {
++ if (Z_e == 32767
++ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3])
++ == 0)
++ && !((Z_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3)
++ % 32)))
++ _fex |= (0);
++ }
++ while (0);
++ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
++ Z_f[2], V_f[3] = Z_f[3]);
++ goto sub_done;
++ }
++ goto sub2;
++ }
++ }
++ else if (Z_e == 32767)
++ {
++ do
++ {
++ if (Z_e == 32767
++ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0)
++ && !((Z_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3) % 32)))
++ _fex |= (0);
++ }
++ while (0);
++ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
++ Z_f[2], V_f[3] = Z_f[3]);
++ goto sub_done;
++ }
++ (U_f[3]) |= ((unsigned long) 1 << (113 - 1 + 3) % 32);
++ sub2:if (ediff <= (3 + 113))
++ do
++ {
++ int _sticky;
++ do
++ {
++ long _up, _down, _skip, _i;
++ unsigned long _s;
++ _skip = (ediff) / 32;
++ _down = (ediff) % 32;
++ _up = 32 - _down;
++ for (_s = _i = 0; _i < _skip; ++_i)
++ _s |= U_f[_i];
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ U_f[_i] = U_f[_i + _skip];
++ else
++ {
++ _s |= U_f[_i] << _up;
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ U_f[_i] =
++ U_f[_i + _skip] >> _down | U_f[_i +
++ _skip +
++ 1] << _up;
++ U_f[_i++] = U_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ U_f[_i] = 0;
++ _sticky = (_s != 0);
++ }
++ while (0);
++ U_f[0] |= _sticky;
++ }
++ while (0);
++ else if (!((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
++ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 1);
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = Z_f[0] - U_f[0];
++ _c1 = V_f[0] > Z_f[0];
++ V_f[1] = Z_f[1] - U_f[1];
++ _c2 = V_f[1] > Z_f[1];
++ V_f[1] -= _c1;
++ _c2 |= _c1 && (U_f[1] == Z_f[1]);
++ V_f[2] = Z_f[2] - U_f[2];
++ _c3 = V_f[2] > Z_f[2];
++ V_f[2] -= _c2;
++ _c3 |= _c2 && (U_f[2] == Z_f[2]);
++ V_f[3] = Z_f[3] - U_f[3] - _c3;
++ }
++ while (0);
++ }
++ else
++ {
++ if (!(((U_e + 1) & 32767) > 1))
++ {
++ if (U_e == 0)
++ {
++ V_e = 0;
++ if (((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
++ {
++ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
++ Z_f[2], V_f[3] = Z_f[3]);
++ if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
++ V_s = (0 == 3);
++ else
++ {
++ _fex |= (0);
++ V_s = Z_s;
++ }
++ goto sub_done;
++ }
++ else if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
++ {
++ _fex |= (0);
++ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
++ U_f[2], V_f[3] = U_f[3]);
++ V_s = U_s;
++ goto sub_done;
++ }
++ else
++ {
++ _fex |= (0);
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = U_f[0] - Z_f[0];
++ _c1 = V_f[0] > U_f[0];
++ V_f[1] = U_f[1] - Z_f[1];
++ _c2 = V_f[1] > U_f[1];
++ V_f[1] -= _c1;
++ _c2 |= _c1 && (Z_f[1] == U_f[1]);
++ V_f[2] = U_f[2] - Z_f[2];
++ _c3 = V_f[2] > U_f[2];
++ V_f[2] -= _c2;
++ _c3 |= _c2 && (Z_f[2] == U_f[2]);
++ V_f[3] = U_f[3] - Z_f[3] - _c3;
++ }
++ while (0);
++ V_s = U_s;
++ if ((V_f[3]) &
++ ((unsigned long) 1 << (113 - 1 + 3) % 32))
++ {
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = Z_f[0] - U_f[0];
++ _c1 = V_f[0] > Z_f[0];
++ V_f[1] = Z_f[1] - U_f[1];
++ _c2 = V_f[1] > Z_f[1];
++ V_f[1] -= _c1;
++ _c2 |= _c1 && (U_f[1] == Z_f[1]);
++ V_f[2] = Z_f[2] - U_f[2];
++ _c3 = V_f[2] > Z_f[2];
++ V_f[2] -= _c2;
++ _c3 |= _c2 && (U_f[2] == Z_f[2]);
++ V_f[3] = Z_f[3] - U_f[3] - _c3;
++ }
++ while (0);
++ V_s = Z_s;
++ }
++ else
++ if (((V_f[0] | V_f[1] | V_f[2] | V_f[3]) ==
++ 0))
++ V_s = (0 == 3);
++ goto sub_done;
++ }
++ }
++ else
++ {
++ do
++ {
++ if (U_e == 32767
++ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3]) ==
++ 0)
++ && !((U_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3) %
++ 32)))
++ _fex |= (0);
++ }
++ while (0);
++ do
++ {
++ if (Z_e == 32767
++ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) ==
++ 0)
++ && !((Z_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3) %
++ 32)))
++ _fex |= (0);
++ }
++ while (0);
++ V_e = 32767;
++ if (((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
++ {
++ if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
++ {
++ V_s = 0;
++ (V_f[3] =
++ ((((unsigned long) 1 << (113 - 2) %
++ 32) << 1) - 1), V_f[2] = -1, V_f[1] =
++ -1, V_f[0] = -1);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _up = (3) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ V_f[_i] = V_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ V_f[_i] =
++ V_f[_i -
++ _skip] << _up | V_f[_i -
++ _skip -
++ 1] >>
++ _down;
++ V_f[_i--] = V_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ V_f[_i] = 0;
++ }
++ while (0);
++ _fex |= (0);
++ }
++ else
++ {
++ V_s = Z_s;
++ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
++ Z_f[2], V_f[3] = Z_f[3]);
++ }
++ }
++ else
++ {
++ if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
++ {
++ V_s = U_s;
++ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
++ U_f[2], V_f[3] = U_f[3]);
++ }
++ else
++ {
++ do
++ {
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _down = (3) % 32;
++ _up = 32 - _down;
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip;
++ ++_i)
++ U_f[_i] = U_f[_i + _skip];
++ else
++ {
++ for (_i = 0; _i < 3 - _skip;
++ ++_i)
++ U_f[_i] =
++ U_f[_i +
++ _skip] >> _down | U_f[_i
++ +
++ _skip
++ +
++ 1]
++ << _up;
++ U_f[_i++] = U_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ U_f[_i] = 0;
++ }
++ while (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _down = (3) % 32;
++ _up = 32 - _down;
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip;
++ ++_i)
++ Z_f[_i] = Z_f[_i + _skip];
++ else
++ {
++ for (_i = 0; _i < 3 - _skip;
++ ++_i)
++ Z_f[_i] =
++ Z_f[_i +
++ _skip] >> _down | Z_f[_i
++ +
++ _skip
++ +
++ 1]
++ << _up;
++ Z_f[_i++] = Z_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ Z_f[_i] = 0;
++ }
++ while (0);
++ do
++ {
++ if (((U_f[3]) &
++ ((unsigned long) 1 << (113 - 2)
++ % 32))
++ && !((Z_f[3]) &
++ ((unsigned long) 1 <<
++ (113 - 2) % 32)))
++ {
++ V_s = Z_s;
++ (V_f[0] = Z_f[0], V_f[1] =
++ Z_f[1], V_f[2] =
++ Z_f[2], V_f[3] = Z_f[3]);
++ }
++ else
++ {
++ V_s = U_s;
++ (V_f[0] = U_f[0], V_f[1] =
++ U_f[1], V_f[2] =
++ U_f[2], V_f[3] = U_f[3]);
++ }
++ V_c = 3;
++ }
++ while (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _up = (3) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ V_f[_i] = V_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ V_f[_i] =
++ V_f[_i -
++ _skip] << _up | V_f[_i -
++ _skip
++ -
++ 1]
++ >> _down;
++ V_f[_i--] = V_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ V_f[_i] = 0;
++ }
++ while (0);
++ }
++ while (0);
++ }
++ }
++ goto sub_done;
++ }
++ }
++ V_e = U_e;
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = U_f[0] - Z_f[0];
++ _c1 = V_f[0] > U_f[0];
++ V_f[1] = U_f[1] - Z_f[1];
++ _c2 = V_f[1] > U_f[1];
++ V_f[1] -= _c1;
++ _c2 |= _c1 && (Z_f[1] == U_f[1]);
++ V_f[2] = U_f[2] - Z_f[2];
++ _c3 = V_f[2] > U_f[2];
++ V_f[2] -= _c2;
++ _c3 |= _c2 && (Z_f[2] == U_f[2]);
++ V_f[3] = U_f[3] - Z_f[3] - _c3;
++ }
++ while (0);
++ V_s = U_s;
++ if ((V_f[3]) & ((unsigned long) 1 << (113 - 1 + 3) % 32))
++ {
++ do
++ {
++ unsigned long _c1, _c2, _c3;
++ V_f[0] = Z_f[0] - U_f[0];
++ _c1 = V_f[0] > Z_f[0];
++ V_f[1] = Z_f[1] - U_f[1];
++ _c2 = V_f[1] > Z_f[1];
++ V_f[1] -= _c1;
++ _c2 |= _c1 && (U_f[1] == Z_f[1]);
++ V_f[2] = Z_f[2] - U_f[2];
++ _c3 = V_f[2] > Z_f[2];
++ V_f[2] -= _c2;
++ _c3 |= _c2 && (U_f[2] == Z_f[2]);
++ V_f[3] = Z_f[3] - U_f[3] - _c3;
++ }
++ while (0);
++ V_s = Z_s;
++ }
++ else if (((V_f[0] | V_f[1] | V_f[2] | V_f[3]) == 0))
++ {
++ V_e = 0;
++ V_s = (0 == 3);
++ goto sub_done;
++ }
++ goto norm;
++ }
++ sub3:if ((V_f[3]) &
++ ((unsigned long) 1 << (113 - 1 + 3) % 32))
++ {
++ int diff;
++ (V_f[3]) &= ((unsigned long) 1 << (113 - 1 + 3) % 32) - 1;
++ norm:do
++ {
++ if (V_f[3])
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ diff = __builtin_clz (V_f[3]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ diff = __builtin_clzl (V_f[3]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ diff = __builtin_clzll (V_f[3]);
++ else
++ abort ();
++ }
++ while (0);
++ }
++ else if (V_f[2])
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ diff = __builtin_clz (V_f[2]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ diff = __builtin_clzl (V_f[2]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ diff = __builtin_clzll (V_f[2]);
++ else
++ abort ();
++ }
++ while (0);
++ diff += 32;
++ }
++ else if (V_f[1])
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ diff = __builtin_clz (V_f[1]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ diff = __builtin_clzl (V_f[1]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ diff = __builtin_clzll (V_f[1]);
++ else
++ abort ();
++ }
++ while (0);
++ diff += 32 * 2;
++ }
++ else
++ {
++ do
++ {
++ if (sizeof (unsigned long) ==
++ sizeof (unsigned int))
++ diff = __builtin_clz (V_f[0]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long))
++ diff = __builtin_clzl (V_f[0]);
++ else if (sizeof (unsigned long) ==
++ sizeof (unsigned long long))
++ diff = __builtin_clzll (V_f[0]);
++ else
++ abort ();
++ }
++ while (0);
++ diff += 32 * 3;
++ }
++ }
++ while (0);
++ diff -= ((4 * 32) - (3 + 113));
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (diff) / 32;
++ _up = (diff) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ V_f[_i] = V_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ V_f[_i] =
++ V_f[_i - _skip] << _up | V_f[_i - _skip -
++ 1] >> _down;
++ V_f[_i--] = V_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ V_f[_i] = 0;
++ }
++ while (0);
++ if (V_e <= diff)
++ {
++ diff = diff - V_e + 1;
++ do
++ {
++ int _sticky;
++ do
++ {
++ long _up, _down, _skip, _i;
++ unsigned long _s;
++ _skip = (diff) / 32;
++ _down = (diff) % 32;
++ _up = 32 - _down;
++ for (_s = _i = 0; _i < _skip; ++_i)
++ _s |= V_f[_i];
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ V_f[_i] = V_f[_i + _skip];
++ else
++ {
++ _s |= V_f[_i] << _up;
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ V_f[_i] =
++ V_f[_i + _skip] >> _down | V_f[_i +
++ _skip +
++ 1] <<
++ _up;
++ V_f[_i++] = V_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ V_f[_i] = 0;
++ _sticky = (_s != 0);
++ }
++ while (0);
++ V_f[0] |= _sticky;
++ }
++ while (0);
++ V_e = 0;
++ }
++ else
++ {
++ V_e -= diff;
++ (V_f[3]) &=
++ ~(unsigned long) ((unsigned long) 1 << (113 - 1 + 3) %
++ 32);
++ }
++ }
++ sub_done:;
++ }
++ }
++ while (0);
++ }
++ while (0);
++
++/* FP_PACK_SEMIRAW_Q(v,V) */
++ do
++ {
++ do
++ {
++ do
++ {
++ if ((V_f[0]) & 7)
++ _fex |= (0);
++ switch (0)
++ {
++ case 0:
++ do
++ {
++ if (((V_f[0]) & 15) != ((unsigned long) 1 << 2))
++ do
++ {
++ unsigned long _t;
++ _t =
++ ((V_f[0] +=
++ ((unsigned long) 1 << 2)) <
++ ((unsigned long) 1 << 2));
++ V_f[1] += _t;
++ _t = (V_f[1] < _t);
++ V_f[2] += _t;
++ _t = (V_f[2] < _t);
++ V_f[3] += _t;
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ case 1:
++ (void) 0;
++ break;
++ case 2:
++ do
++ {
++ if (!V_s && ((V_f[0]) & 7))
++ do
++ {
++ unsigned long _t;
++ _t =
++ ((V_f[0] +=
++ ((unsigned long) 1 << 3)) <
++ ((unsigned long) 1 << 3));
++ V_f[1] += _t;
++ _t = (V_f[1] < _t);
++ V_f[2] += _t;
++ _t = (V_f[2] < _t);
++ V_f[3] += _t;
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ case 3:
++ do
++ {
++ if (V_s && ((V_f[0]) & 7))
++ do
++ {
++ unsigned long _t;
++ _t =
++ ((V_f[0] +=
++ ((unsigned long) 1 << 3)) <
++ ((unsigned long) 1 << 3));
++ V_f[1] += _t;
++ _t = (V_f[1] < _t);
++ V_f[2] += _t;
++ _t = (V_f[2] < _t);
++ V_f[3] += _t;
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ }
++ }
++ while (0);
++ if ((V_f[3]) & (((unsigned long) 1 << ((3 + 113) % 32)) >> 1))
++ {
++ (V_f[3]) &= ~(((unsigned long) 1 << ((3 + 113) % 32)) >> 1);
++ V_e++;
++ if (V_e == 32767)
++ do
++ {
++ if (0 == 0 || (0 == 2 && !V_s) || (0 == 3 && V_s))
++ {
++ V_e = 32767;
++ (V_f[3] = 0, V_f[2] = 0, V_f[1] = 0, V_f[0] = 0);
++ }
++ else
++ {
++ V_e = 32767 - 1;
++ _fex |= (0);
++ _fex |= (0);
++ (V_f[3] = (~(signed long) 0), V_f[2] =
++ (~(signed long) 0), V_f[1] =
++ (~(signed long) 0), V_f[0] = (~(signed long) 0));
++ }
++ }
++ while (0);
++ }
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _down = (3) % 32;
++ _up = 32 - _down;
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ V_f[_i] = V_f[_i + _skip];
++ else
++ {
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ V_f[_i] =
++ V_f[_i + _skip] >> _down | V_f[_i + _skip + 1] << _up;
++ V_f[_i++] = V_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ V_f[_i] = 0;
++ }
++ while (0);
++ if (!(((V_e + 1) & 32767) > 1)
++ && !((V_f[0] | V_f[1] | V_f[2] | V_f[3]) == 0))
++ {
++ if (V_e == 0)
++ _fex |= (0);
++ else
++ {
++ if (!1)
++ {
++ (V_f[3] =
++ ((((unsigned long) 1 << (113 - 2) % 32) << 1) - 1),
++ V_f[2] = -1, V_f[1] = -1, V_f[0] = -1);
++ V_s = 0;
++ }
++ else
++ (V_f[3]) |= ((unsigned long) 1 << (113 - 2) % 32);
++ }
++ }
++ }
++ while (0);
++ do
++ {
++ union _FP_UNION_Q _flo;
++ _flo.bits.frac0 = V_f[0];
++ _flo.bits.frac1 = V_f[1];
++ _flo.bits.frac2 = V_f[2];
++ _flo.bits.frac3 = V_f[3];
++ _flo.bits.exp = V_e;
++ _flo.bits.sign = V_s;
++ (v) = _flo.flt;
++ }
++ while (0);
++ }
++ while (0);
++
++/* FP_HANDLE_EXCEPTIONS */
++ do
++ {
++ }
++ while (0);
++
++ /* Truncate quad to double. */
++/* FP_INIT_ROUNDMODE */
++ do
++ {
++ }
++ while (0);
++
++/* FP_UNPACK_SEMIRAW_Q(V,v) */
++ do
++ {
++ do
++ {
++ union _FP_UNION_Q _flo;
++ _flo.flt = (v);
++ V_f[0] = _flo.bits.frac0;
++ V_f[1] = _flo.bits.frac1;
++ V_f[2] = _flo.bits.frac2;
++ V_f[3] = _flo.bits.frac3;
++ V_e = _flo.bits.exp;
++ V_s = _flo.bits.sign;
++ }
++ while (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (3) / 32;
++ _up = (3) % 32;
++ _down = 32 - _up;
++ if (!_up)
++ for (_i = 3; _i >= _skip; --_i)
++ V_f[_i] = V_f[_i - _skip];
++ else
++ {
++ for (_i = 3; _i > _skip; --_i)
++ V_f[_i] =
++ V_f[_i - _skip] << _up | V_f[_i - _skip - 1] >> _down;
++ V_f[_i--] = V_f[0] << _up;
++ }
++ for (; _i >= 0; --_i)
++ V_f[_i] = 0;
++ }
++ while (0);
++ }
++ while (0);
++
++/* FP_TRUNC(D,Q,2,4,R,V) */
++ do
++ {
++ if (113 < 53 || 16383 < 1023 + 53 - 1)
++ abort ();
++ R_s = V_s;
++ if ((((V_e + 1) & 32767) > 1))
++ {
++ R_e = V_e + 1023 - 16383;
++ if (R_e >= 2047)
++ do
++ {
++ if (0 == 0 || (0 == 2 && !R_s) || (0 == 3 && R_s))
++ {
++ R_e = 2047;
++ (R_f0 = 0, R_f1 = 0);
++ }
++ else
++ {
++ R_e = 2047 - 1;
++ _fex |= (0);
++ _fex |= (0);
++ (R_f0 = (~(signed long) 0), R_f1 = (~(signed long) 0));
++ }
++ }
++ while (0);
++ else
++ {
++ if (R_e <= 0)
++ {
++ if (R_e <= 1 - 53)
++ (V_f[3] = 0, V_f[2] = 0, V_f[1] = 0, V_f[0] = 0);
++ else
++ {
++ (V_f[3]) |= ((unsigned long) 1 << (113 - 1 + 3) % 32);
++ do
++ {
++ int _sticky;
++ do
++ {
++ long _up, _down, _skip, _i;
++ unsigned long _s;
++ _skip = (((3 + 113) - (3 + 53) + 1 - R_e)) / 32;
++ _down = (((3 + 113) - (3 + 53) + 1 - R_e)) % 32;
++ _up = 32 - _down;
++ for (_s = _i = 0; _i < _skip; ++_i)
++ _s |= V_f[_i];
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ V_f[_i] = V_f[_i + _skip];
++ else
++ {
++ _s |= V_f[_i] << _up;
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ V_f[_i] =
++ V_f[_i + _skip] >> _down | V_f[_i +
++ _skip +
++ 1] <<
++ _up;
++ V_f[_i++] = V_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ V_f[_i] = 0;
++ _sticky = (_s != 0);
++ }
++ while (0);
++ V_f[0] |= _sticky;
++ }
++ while (0);
++ }
++ R_e = 0;
++ }
++ else
++ do
++ {
++ int _sticky;
++ do
++ {
++ long _up, _down, _skip, _i;
++ unsigned long _s;
++ _skip = (((3 + 113) - (3 + 53))) / 32;
++ _down = (((3 + 113) - (3 + 53))) % 32;
++ _up = 32 - _down;
++ for (_s = _i = 0; _i < _skip; ++_i)
++ _s |= V_f[_i];
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ V_f[_i] = V_f[_i + _skip];
++ else
++ {
++ _s |= V_f[_i] << _up;
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ V_f[_i] =
++ V_f[_i + _skip] >> _down | V_f[_i + _skip +
++ 1] << _up;
++ V_f[_i++] = V_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ V_f[_i] = 0;
++ _sticky = (_s != 0);
++ }
++ while (0);
++ V_f[0] |= _sticky;
++ }
++ while (0);
++ do
++ {
++ R_f0 = V_f[0];
++ R_f1 = V_f[1];
++ }
++ while (0);
++ }
++ }
++ else
++ {
++ if (V_e == 0)
++ {
++ R_e = 0;
++ (R_f0 = 0, R_f1 = 0);
++ if (!((V_f[0] | V_f[1] | V_f[2] | V_f[3]) == 0))
++ {
++ _fex |= (0);
++ _fex |= (0);
++ }
++ }
++ else
++ {
++ R_e = 2047;
++ if (((V_f[0] | V_f[1] | V_f[2] | V_f[3]) == 0))
++ (R_f0 = 0, R_f1 = 0);
++ else
++ {
++ do
++ {
++ if (V_e == 32767
++ && !((V_f[0] | V_f[1] | V_f[2] | V_f[3]) == 0)
++ && !((V_f[3]) &
++ ((unsigned long) 1 << (113 - 2 + 3) % 32)))
++ _fex |= (0);
++ }
++ while (0);
++ do
++ {
++ long _up, _down, _skip, _i;
++ _skip = (((3 + 113) - (3 + 53))) / 32;
++ _down = (((3 + 113) - (3 + 53))) % 32;
++ _up = 32 - _down;
++ if (!_down)
++ for (_i = 0; _i <= 3 - _skip; ++_i)
++ V_f[_i] = V_f[_i + _skip];
++ else
++ {
++ for (_i = 0; _i < 3 - _skip; ++_i)
++ V_f[_i] =
++ V_f[_i + _skip] >> _down | V_f[_i + _skip +
++ 1] << _up;
++ V_f[_i++] = V_f[3] >> _down;
++ }
++ for (; _i < 4; ++_i)
++ V_f[_i] = 0;
++ }
++ while (0);
++ do
++ {
++ R_f0 = V_f[0];
++ R_f1 = V_f[1];
++ }
++ while (0);
++ (R_f1) |= ((unsigned long) 1 << (53 - 2 + 3) % 32);
++ }
++ }
++ }
++ }
++ while (0);
++
++/* FP_PACK_SEMIRAW_D(r,R) */
++ do
++ {
++ do
++ {
++ do
++ {
++ if ((R_f0) & 7)
++ _fex |= (0);
++ switch (0)
++ {
++ case 0:
++ do
++ {
++ if (((R_f0) & 15) != ((unsigned long) 1 << 2))
++ do
++ {
++ if (__builtin_constant_p (0) && (0) == 0)
++ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2": "=r" (R_f1), "=&r" (R_f0):"r" (R_f1), "%r" (R_f0),
++ "rI" (((unsigned long) 1 <<
++ 2)));
++ else if (__builtin_constant_p (0)
++ && (0) == ~(USItype) 0)
++ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2": "=r" (R_f1), "=&r" (R_f0):"r" (R_f1), "%r" (R_f0),
++ "rI" (((unsigned long) 1 <<
++ 2)));
++ else
++ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3": "=r" (R_f1), "=&r" (R_f0):"%r" (R_f1), "r" (0), "%r" (R_f0),
++ "rI" (((unsigned long) 1 <<
++ 2)));
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ case 1:
++ (void) 0;
++ break;
++ case 2:
++ do
++ {
++ if (!R_s && ((R_f0) & 7))
++ do
++ {
++ if (__builtin_constant_p (0) && (0) == 0)
++ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2": "=r" (R_f1), "=&r" (R_f0):"r" (R_f1), "%r" (R_f0),
++ "rI" (((unsigned long) 1 <<
++ 3)));
++ else if (__builtin_constant_p (0)
++ && (0) == ~(USItype) 0)
++ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2": "=r" (R_f1), "=&r" (R_f0):"r" (R_f1), "%r" (R_f0),
++ "rI" (((unsigned long) 1 <<
++ 3)));
++ else
++ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3": "=r" (R_f1), "=&r" (R_f0):"%r" (R_f1), "r" (0), "%r" (R_f0),
++ "rI" (((unsigned long) 1 <<
++ 3)));
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ case 3:
++ do
++ {
++ if (R_s && ((R_f0) & 7))
++ do
++ {
++ if (__builtin_constant_p (0) && (0) == 0)
++ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2": "=r" (R_f1), "=&r" (R_f0):"r" (R_f1), "%r" (R_f0),
++ "rI" (((unsigned long) 1 <<
++ 3)));
++ else if (__builtin_constant_p (0)
++ && (0) == ~(USItype) 0)
++ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2": "=r" (R_f1), "=&r" (R_f0):"r" (R_f1), "%r" (R_f0),
++ "rI" (((unsigned long) 1 <<
++ 3)));
++ else
++ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3": "=r" (R_f1), "=&r" (R_f0):"%r" (R_f1), "r" (0), "%r" (R_f0),
++ "rI" (((unsigned long) 1 <<
++ 3)));
++ }
++ while (0);
++ }
++ while (0);
++ break;
++ }
++ }
++ while (0);
++ if ((R_f1) & (((unsigned long) 1 << (3 + 53) % 32) >> 1))
++ {
++ (R_f1) &= ~(((unsigned long) 1 << (3 + 53) % 32) >> 1);
++ R_e++;
++ if (R_e == 2047)
++ do
++ {
++ if (0 == 0 || (0 == 2 && !R_s) || (0 == 3 && R_s))
++ {
++ R_e = 2047;
++ (R_f0 = 0, R_f1 = 0);
++ }
++ else
++ {
++ R_e = 2047 - 1;
++ _fex |= (0);
++ _fex |= (0);
++ (R_f0 = (~(signed long) 0), R_f1 =
++ (~(signed long) 0));
++ }
++ }
++ while (0);
++ }
++ (void) (((3) < 32) ? (
++ {
++ R_f0 = R_f0 >> (3) | R_f1 << (32 - (3)); R_f1 >>= (3);}):(
++ {
++ R_f0 = R_f1 >> ((3) - 32); R_f1 = 0;}));
++ if (!(((R_e + 1) & 2047) > 1) && !((R_f1 | R_f0) == 0))
++ {
++ if (R_e == 0)
++ _fex |= (0);
++ else
++ {
++ if (!1)
++ {
++ (R_f0 = -1, R_f1 =
++ ((((unsigned long) 1 << (53 - 2) % 32) << 1) - 1));
++ R_s = 0;
++ }
++ else
++ (R_f1) |= ((unsigned long) 1 << (53 - 2) % 32);
++ }
++ }
++ }
++ while (0);
++ do
++ {
++ union _FP_UNION_D _flo;
++ _flo.bits.frac0 = R_f0;
++ _flo.bits.frac1 = R_f1;
++ _flo.bits.exp = R_e;
++ _flo.bits.sign = R_s;
++ (r) = _flo.flt;
++ }
++ while (0);
++ }
++ while (0);
++
++/* FP_HANDLE_EXCEPTIONS */
++ do
++ {
++ }
++ while (0);
++
++ return r;
++}
++
++
++#endif
++
+ #endif
+diff -urN gcc42-trunc-20060802/gcc/config/rs6000/libgcc-ppc-glibc.ver gcc42-patched-20060802/gcc/config/rs6000/libgcc-ppc-glibc.ver
+--- gcc42-trunc-20060802/gcc/config/rs6000/libgcc-ppc-glibc.ver 2006-08-02 11:07:16.000000000 -0500
++++ gcc42-patched-20060802/gcc/config/rs6000/libgcc-ppc-glibc.ver 2006-09-01 08:28:29.000000000 -0500
+@@ -21,11 +21,32 @@
+ %else
+ GCC_3.4.4 {
+ %endif
++%else
++GCC_4.2.0 {
++%endif
+
+ # long double support
+ __gcc_qadd
+ __gcc_qsub
+ __gcc_qmul
+ __gcc_qdiv
+-}
++
++%ifdef _SOFT_FLOAT
++ __gcc_qneg
++ __gcc_qeq
++ __gcc_qne
++ __gcc_ggt
++ __gcc_qge
++ __gcc_qlt
++ __gcc_qle
++ __gcc_qunord
++ __gcc_stoq
++ __gcc_dtoq
++ __gcc_qtos
++ __gcc_qtod
++ __gcc_qtoi
++ __gcc_qtou
++ __gcc_itoq
++ __gcc_utoq
+ %endif
++}
+diff -urN gcc42-trunc-20060802/gcc/config/rs6000/rs6000.c gcc42-patched-20060802/gcc/config/rs6000/rs6000.c
+--- gcc42-trunc-20060802/gcc/config/rs6000/rs6000.c 2006-08-02 11:07:16.000000000 -0500
++++ gcc42-patched-20060802/gcc/config/rs6000/rs6000.c 2006-09-01 08:28:29.000000000 -0500
+@@ -4016,8 +4016,7 @@
+
+ /* 128-bit constant floating-point values on Darwin should really be
+ loaded as two parts. */
+- if (!TARGET_IEEEQUAD
+- && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128
++ if (!TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128
+ && mode == TFmode && GET_CODE (operands[1]) == CONST_DOUBLE)
+ {
+ /* DImode is used, not DFmode, because simplify_gen_subreg doesn't
+@@ -9175,9 +9174,6 @@
+ static void
+ rs6000_init_libfuncs (void)
+ {
+- if (!TARGET_HARD_FLOAT)
+- return;
+-
+ if (DEFAULT_ABI != ABI_V4 && TARGET_XCOFF
+ && !TARGET_POWER2 && !TARGET_POWERPC)
+ {
+@@ -9196,6 +9192,27 @@
+ set_optab_libfunc (sub_optab, TFmode, "__gcc_qsub");
+ set_optab_libfunc (smul_optab, TFmode, "__gcc_qmul");
+ set_optab_libfunc (sdiv_optab, TFmode, "__gcc_qdiv");
++
++ if (TARGET_SOFT_FLOAT)
++ {
++ set_optab_libfunc (neg_optab, TFmode, "__gcc_qneg");
++ set_optab_libfunc (eq_optab, TFmode, "__gcc_qeq");
++ set_optab_libfunc (ne_optab, TFmode, "__gcc_qne");
++ set_optab_libfunc (gt_optab, TFmode, "__gcc_qgt");
++ set_optab_libfunc (ge_optab, TFmode, "__gcc_qge");
++ set_optab_libfunc (lt_optab, TFmode, "__gcc_qlt");
++ set_optab_libfunc (le_optab, TFmode, "__gcc_qle");
++ set_optab_libfunc (unord_optab, TFmode, "__gcc_qunord");
++
++ set_conv_libfunc (sext_optab, TFmode, SFmode, "__gcc_stoq");
++ set_conv_libfunc (sext_optab, TFmode, DFmode, "__gcc_dtoq");
++ set_conv_libfunc (trunc_optab, SFmode, TFmode, "__gcc_qtos");
++ set_conv_libfunc (trunc_optab, DFmode, TFmode, "__gcc_qtod");
++ set_conv_libfunc (sfix_optab, SImode, TFmode, "__gcc_qtoi");
++ set_conv_libfunc (ufix_optab, SImode, TFmode, "__gcc_qtou");
++ set_conv_libfunc (sfloat_optab, TFmode, SImode, "__gcc_itoq");
++ set_conv_libfunc (ufloat_optab, TFmode, SImode, "__gcc_utoq");
++ }
+ }
+ else
+ {
+diff -urN gcc42-trunc-20060802/gcc/config/rs6000/rs6000.md gcc42-patched-20060802/gcc/config/rs6000/rs6000.md
+--- gcc42-trunc-20060802/gcc/config/rs6000/rs6000.md 2006-08-02 11:07:16.000000000 -0500
++++ gcc42-patched-20060802/gcc/config/rs6000/rs6000.md 2006-09-01 08:28:29.000000000 -0500
+@@ -7920,42 +7920,44 @@
+ "")
+
+ (define_insn "*movcc_internal1"
+- [(set (match_operand:CC 0 "nonimmediate_operand" "=y,x,?y,r,r,r,r,q,cl,r,m")
+- (match_operand:CC 1 "nonimmediate_operand" "y,r,r,x,y,r,h,r,r,m,r"))]
++ [(set (match_operand:CC 0 "nonimmediate_operand" "=y,x,?y,y,r,r,r,r,r,q,cl,r,m")
++ (match_operand:CC 1 "general_operand" "y,r,r,O,x,y,r,I,h,r,r,m,r"))]
+ "register_operand (operands[0], CCmode)
+ || register_operand (operands[1], CCmode)"
+ "@
+ mcrf %0,%1
+ mtcrf 128,%1
+ {rlinm|rlwinm} %1,%1,%F0,0xffffffff\;mtcrf %R0,%1\;{rlinm|rlwinm} %1,%1,%f0,0xffffffff
++ crxor %0,%0,%0
+ mfcr %0%Q1
+ mfcr %0%Q1\;{rlinm|rlwinm} %0,%0,%f1,0xf0000000
+ mr %0,%1
++ {lil|li} %0,%1
+ mf%1 %0
+ mt%0 %1
+ mt%0 %1
+ {l%U1%X1|lwz%U1%X1} %0,%1
+ {st%U0%U1|stw%U0%U1} %1,%0"
+ [(set (attr "type")
+- (cond [(eq_attr "alternative" "0")
++ (cond [(eq_attr "alternative" "0,3")
+ (const_string "cr_logical")
+ (eq_attr "alternative" "1,2")
+ (const_string "mtcr")
+- (eq_attr "alternative" "5,7")
++ (eq_attr "alternative" "6,7,9")
+ (const_string "integer")
+- (eq_attr "alternative" "6")
+- (const_string "mfjmpr")
+ (eq_attr "alternative" "8")
++ (const_string "mfjmpr")
++ (eq_attr "alternative" "10")
+ (const_string "mtjmpr")
+- (eq_attr "alternative" "9")
++ (eq_attr "alternative" "11")
+ (const_string "load")
+- (eq_attr "alternative" "10")
++ (eq_attr "alternative" "12")
+ (const_string "store")
+ (ne (symbol_ref "TARGET_MFCRF") (const_int 0))
+ (const_string "mfcrf")
+ ]
+ (const_string "mfcr")))
+- (set_attr "length" "4,4,12,4,8,4,4,4,4,4,4")])
++ (set_attr "length" "4,4,12,4,4,8,4,4,4,4,4,4,4")])
+
+ ;; For floating-point, we normally deal with the floating-point registers
+ ;; unless -msoft-float is used. The sole exception is that parameter passing
+@@ -8313,8 +8315,7 @@
+ (define_expand "movtf"
+ [(set (match_operand:TF 0 "general_operand" "")
+ (match_operand:TF 1 "any_operand" ""))]
+- "!TARGET_IEEEQUAD
+- && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128"
++ "!TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128"
+ "{ rs6000_emit_move (operands[0], operands[1], TFmode); DONE; }")
+
+ ; It's important to list the o->f and f->o moves before f->f because
+@@ -8333,6 +8334,19 @@
+ { rs6000_split_multireg_move (operands[0], operands[1]); DONE; }
+ [(set_attr "length" "8,8,8,20,20,16")])
+
++(define_insn_and_split "*movtf_softfloat"
++ [(set (match_operand:TF 0 "nonimmediate_operand" "=r,Y,r")
++ (match_operand:TF 1 "input_operand" "YGHF,r,r"))]
++ "!TARGET_IEEEQUAD
++ && (TARGET_SOFT_FLOAT || !TARGET_FPRS) && TARGET_LONG_DOUBLE_128
++ && (gpc_reg_operand (operands[0], TFmode)
++ || gpc_reg_operand (operands[1], TFmode))"
++ "#"
++ "&& reload_completed"
++ [(pc)]
++{ rs6000_split_multireg_move (operands[0], operands[1]); DONE; }
++ [(set_attr "length" "20,20,16")])
++
+ (define_expand "extenddftf2"
+ [(parallel [(set (match_operand:TF 0 "nonimmediate_operand" "")
+ (float_extend:TF (match_operand:DF 1 "input_operand" "")))
+diff -urN gcc42-trunc-20060802/gcc/config/rs6000/sysv4.h gcc42-patched-20060802/gcc/config/rs6000/sysv4.h
+--- gcc42-trunc-20060802/gcc/config/rs6000/sysv4.h 2006-08-02 11:07:16.000000000 -0500
++++ gcc42-patched-20060802/gcc/config/rs6000/sysv4.h 2006-09-01 08:28:29.000000000 -0500
+@@ -215,10 +215,6 @@
+ error ("-msecure-plt not supported by your assembler"); \
+ } \
+ \
+- if (TARGET_SOFT_FLOAT && TARGET_LONG_DOUBLE_128 \
+- && rs6000_explicit_options.long_double) \
+- warning (0, "-msoft-float and -mlong-double-128 not supported"); \
+- \
+ /* Treat -fPIC the same as -mrelocatable. */ \
+ if (flag_pic > 1 && DEFAULT_ABI != ABI_AIX) \
+ { \
+diff -urN gcc42-trunc-20060802/gcc/config/rs6000/t-ppccomm gcc42-patched-20060802/gcc/config/rs6000/t-ppccomm
+--- gcc42-trunc-20060802/gcc/config/rs6000/t-ppccomm 2006-08-02 11:07:16.000000000 -0500
++++ gcc42-patched-20060802/gcc/config/rs6000/t-ppccomm 2006-09-01 08:28:29.000000000 -0500
+@@ -12,15 +12,8 @@
+ cat $(srcdir)/config/rs6000/tramp.asm > tramp.S
+
+ ifneq (,$findstring gnu,$(target))
+-TARGET_LIBGCC2_CFLAGS += -specs=ldblspecs
+-
++TARGET_LIBGCC2_CFLAGS += -mlong-double-128
+ SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-ppc-glibc.ver
+-
+-# Hack to use -mlong-double-128 only when not compiling nof libgcc
+-mklibgcc: ldblspecs
+-
+-ldblspecs: specs
+- sed -e '/cc1_options/{ n; s/$$/ %{!msoft-float:-mlong-double-128}/; }' < specs > $@
+ endif
+
+ # Switch synonyms
diff --git a/packages/gcc/gcc-4.1.1/sh3-installfix-fixheaders.patch b/packages/gcc/gcc-4.1.1/sh3-installfix-fixheaders.patch
new file mode 100644
index 0000000000..a06cd2e075
--- /dev/null
+++ b/packages/gcc/gcc-4.1.1/sh3-installfix-fixheaders.patch
@@ -0,0 +1,11 @@
+--- gcc-4.1.1/gcc/Makefile.in_orig 2007-01-31 21:24:23.000000000 +0000
++++ gcc-4.1.1/gcc/Makefile.in 2007-01-31 21:24:43.000000000 +0000
+@@ -3772,8 +3772,6 @@
+ $(INSTALL_SCRIPT) $(mkinstalldirs) \
+ $(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
+ $(INSTALL_SCRIPT) $(srcdir)/fixproto $(DESTDIR)$(itoolsdir)/fixproto ; \
+- $(INSTALL_PROGRAM) build/fix-header$(build_exeext) \
+- $(DESTDIR)$(itoolsdir)/fix-header$(build_exeext) ; \
+ else :; fi
+ echo 'SYSTEM_HEADER_DIR="'"$(SYSTEM_HEADER_DIR)"'"' \
+ > $(DESTDIR)$(itoolsdatadir)/mkheaders.conf
diff --git a/packages/gcc/gcc-4.1.2/.mtn2git_empty b/packages/gcc/gcc-4.1.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/.mtn2git_empty
diff --git a/packages/gcc/gcc-4.1.2/100-uclibc-conf.patch b/packages/gcc/gcc-4.1.2/100-uclibc-conf.patch
new file mode 100644
index 0000000000..49d576c7dd
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/100-uclibc-conf.patch
@@ -0,0 +1,544 @@
+--- gcc-4.1.0/gcc/config/t-linux-uclibc
++++ gcc-4.1.0/gcc/config/t-linux-uclibc
+@@ -0,0 +1,5 @@
++# Remove glibc specific files added in t-linux
++SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES))
++
++# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc
++LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH))
+--- gcc-4.1.0/gcc/config.gcc
++++ gcc-4.1.0/gcc/config.gcc
+@@ -1887,7 +1887,7 @@ s390x-ibm-tpf*)
+ ;;
+ sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
+ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
+- sh-*-linux* | sh[346lbe]*-*-linux* | \
++ sh*-*-linux* | sh[346lbe]*-*-linux* | \
+ sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
+ sh64-*-netbsd* | sh64l*-*-netbsd*)
+ tmake_file="${tmake_file} sh/t-sh sh/t-elf"
+@@ -2341,6 +2341,12 @@ m32c-*-elf*)
+ ;;
+ esac
+
++# Rather than hook into each target, just do it after all the linux
++# targets have been processed
++case ${target} in
++*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc"
++esac
++
+ case ${target} in
+ i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1)
+ tmake_file="${tmake_file} i386/t-gmm_malloc"
+--- gcc-4.1.0/boehm-gc/configure
++++ gcc-4.1.0/boehm-gc/configure
+@@ -4320,6 +4320,11 @@ linux-gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++linux-uclibc*)
++ lt_cv_deplibs_check_method=pass_all
++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
++ ;;
++
+ netbsd* | knetbsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
+--- gcc-4.1.0/configure
++++ gcc-4.1.0/configure
+@@ -1133,7 +1133,7 @@ no)
+ ;;
+ "")
+ case "${target}" in
+- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
++ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
+ # Enable libmudflap by default in GNU and friends.
+ ;;
+ *-*-freebsd*)
+--- gcc-4.1.0/configure.in
++++ gcc-4.1.0/configure.in
+@@ -341,7 +341,7 @@ no)
+ ;;
+ "")
+ case "${target}" in
+- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
++ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
+ # Enable libmudflap by default in GNU and friends.
+ ;;
+ *-*-freebsd*)
+--- gcc-4.1.0/contrib/regression/objs-gcc.sh
++++ gcc-4.1.0/contrib/regression/objs-gcc.sh
+@@ -105,6 +105,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H
+ then
+ make all-gdb all-dejagnu all-ld || exit 1
+ make install-gdb install-dejagnu install-ld || exit 1
++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
++ then
++ make all-gdb all-dejagnu all-ld || exit 1
++ make install-gdb install-dejagnu install-ld || exit 1
+ elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
+ make bootstrap || exit 1
+ make install || exit 1
+--- gcc-4.1.0/gcc/config/alpha/linux-elf.h
++++ gcc-4.1.0/gcc/config/alpha/linux-elf.h
+@@ -27,7 +27,11 @@ Boston, MA 02110-1301, USA. */
+ #define SUBTARGET_EXTRA_SPECS \
+ { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
+
++#if defined USE_UCLIBC
++#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#else
+ #define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#endif
+
+ #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \
+ %{O*:-O3} %{!O*:-O1} \
+--- gcc-4.1.0/gcc/config/arm/linux-elf.h
++++ gcc-4.1.0/gcc/config/arm/linux-elf.h
+@@ -51,7 +51,11 @@
+
+ #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
+
++#ifdef USE_UCLIBC
++#define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0"
++#else
+ #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2"
++#endif
+
+ #define LINUX_TARGET_LINK_SPEC "%{h*} %{version:-v} \
+ %{b} \
+--- gcc-4.1.0/gcc/config/cris/linux.h
++++ gcc-4.1.0/gcc/config/cris/linux.h
+@@ -73,6 +73,25 @@ Boston, MA 02110-1301, USA. */
+ #undef CRIS_DEFAULT_CPU_VERSION
+ #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
+
++#ifdef USE_UCLIBC
++
++#undef CRIS_SUBTARGET_VERSION
++#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc"
++
++#undef CRIS_LINK_SUBTARGET_SPEC
++#define CRIS_LINK_SUBTARGET_SPEC \
++ "-mcrislinux\
++ -rpath-link include/asm/../..%s\
++ %{shared} %{static}\
++ %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\
++ %{!shared: \
++ %{!static: \
++ %{rdynamic:-export-dynamic} \
++ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \
++ %{!r:%{O2|O3: --gc-sections}}"
++
++#else /* USE_UCLIBC */
++
+ #undef CRIS_SUBTARGET_VERSION
+ #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu"
+
+@@ -87,6 +106,8 @@ Boston, MA 02110-1301, USA. */
+ %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\
+ %{!r:%{O2|O3: --gc-sections}}"
+
++#endif /* USE_UCLIBC */
++
+
+ /* Node: Run-time Target */
+
+--- gcc-4.1.0/gcc/config/i386/linux.h
++++ gcc-4.1.0/gcc/config/i386/linux.h
+@@ -107,6 +107,11 @@ Boston, MA 02110-1301, USA. */
+ #define LINK_EMULATION "elf_i386"
+ #define DYNAMIC_LINKER "/lib/ld-linux.so.2"
+
++#if defined USE_UCLIBC
++#undef DYNAMIC_LINKER
++#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#endif
++
+ #undef SUBTARGET_EXTRA_SPECS
+ #define SUBTARGET_EXTRA_SPECS \
+ { "link_emulation", LINK_EMULATION },\
+--- gcc-4.1.0/gcc/config/i386/linux64.h
++++ gcc-4.1.0/gcc/config/i386/linux64.h
+@@ -54,14 +54,21 @@ Boston, MA 02110-1301, USA. */
+ When the -shared link option is used a final link is not being
+ done. */
+
++#ifdef USE_UCLIBC
++#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
++#else
++#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2"
++#endif
+ #undef LINK_SPEC
+ #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
+ %{shared:-shared} \
+ %{!shared: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
++ %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \
++ %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \
+ %{static:-static}}"
+
+ /* Similar to standard Linux, but adding -ffast-math support. */
+--- gcc-4.1.0/gcc/config/ia64/linux.h
++++ gcc-4.1.0/gcc/config/ia64/linux.h
+@@ -37,13 +37,18 @@ do { \
+ /* Define this for shared library support because it isn't in the main
+ linux.h file. */
+
++#ifdef USE_UCLIBC
++#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#else
++#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
++#endif
+ #undef LINK_SPEC
+ #define LINK_SPEC "\
+ %{shared:-shared} \
+ %{!shared: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+- %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
++ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
+ %{static:-static}}"
+
+
+--- gcc-4.1.0/gcc/config/m68k/linux.h
++++ gcc-4.1.0/gcc/config/m68k/linux.h
+@@ -123,12 +123,17 @@ Boston, MA 02110-1301, USA. */
+
+ /* If ELF is the default format, we should not use /lib/elf. */
+
++#ifdef USE_UCLIBC
++#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#else
++#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
++#endif
+ #undef LINK_SPEC
+ #define LINK_SPEC "-m m68kelf %{shared} \
+ %{!shared: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+- %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \
++ %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
+ %{static}}"
+
+ /* For compatibility with linux/a.out */
+--- gcc-4.1.0/gcc/config/mips/linux.h
++++ gcc-4.1.0/gcc/config/mips/linux.h
+@@ -105,6 +105,11 @@ Boston, MA 02110-1301, USA. */
+
+ /* Borrowed from sparc/linux.h */
+ #undef LINK_SPEC
++#ifdef USE_UCLIBC
++#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#else
++#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
++#endif
+ #define LINK_SPEC \
+ "%(endian_spec) \
+ %{shared:-shared} \
+@@ -112,7 +117,7 @@ Boston, MA 02110-1301, USA. */
+ %{!ibcs: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
++ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
+ %{static:-static}}}"
+
+ #undef SUBTARGET_ASM_SPEC
+--- gcc-4.1.0/gcc/config/pa/pa-linux.h
++++ gcc-4.1.0/gcc/config/pa/pa-linux.h
+@@ -49,13 +49,18 @@ Boston, MA 02110-1301, USA. */
+ /* Define this for shared library support because it isn't in the main
+ linux.h file. */
+
++#ifdef USE_UCLIBC
++#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#else
++#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
++#endif
+ #undef LINK_SPEC
+ #define LINK_SPEC "\
+ %{shared:-shared} \
+ %{!shared: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
++ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
+ %{static:-static}}"
+
+ /* glibc's profiling functions don't need gcc to allocate counters. */
+--- gcc-4.1.0/gcc/config/rs6000/linux.h
++++ gcc-4.1.0/gcc/config/rs6000/linux.h
+@@ -72,7 +72,11 @@
+ #define LINK_START_DEFAULT_SPEC "%(link_start_linux)"
+
+ #undef LINK_OS_DEFAULT_SPEC
++#ifdef USE_UCLIBC
++#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)"
++#else
+ #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
++#endif
+
+ #define LINK_GCC_C_SEQUENCE_SPEC \
+ "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
+--- gcc-4.1.0/gcc/config/rs6000/sysv4.h
++++ gcc-4.1.0/gcc/config/rs6000/sysv4.h
+@@ -866,6 +866,7 @@ extern int fixuplabelno;
+ mcall-linux : %(link_os_linux) ; \
+ mcall-gnu : %(link_os_gnu) ; \
+ mcall-netbsd : %(link_os_netbsd) ; \
++ mcall-linux-uclibc : %(link_os_linux_uclibc); \
+ mcall-openbsd: %(link_os_openbsd) ; \
+ : %(link_os_default) }"
+
+@@ -1043,6 +1044,10 @@ extern int fixuplabelno;
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
+
++#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \
++ %{rdynamic:-export-dynamic} \
++ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}"
++
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+ # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
+ #endif
+@@ -1209,6 +1214,7 @@ ncrtn.o%s"
+ { "link_os_sim", LINK_OS_SIM_SPEC }, \
+ { "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \
+ { "link_os_linux", LINK_OS_LINUX_SPEC }, \
++ { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \
+ { "link_os_gnu", LINK_OS_GNU_SPEC }, \
+ { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \
+ { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \
+--- gcc-4.1.0/gcc/config/s390/linux.h
++++ gcc-4.1.0/gcc/config/s390/linux.h
+@@ -77,6 +77,13 @@ Software Foundation, 51 Franklin Street,
+ #define MULTILIB_DEFAULTS { "m31" }
+ #endif
+
++#ifdef USE_UCLIBC
++#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
++#else
++#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1"
++#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1"
++#endif
+ #undef LINK_SPEC
+ #define LINK_SPEC \
+ "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
+@@ -86,8 +93,8 @@ Software Foundation, 51 Franklin Street,
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker: \
+- %{m31:-dynamic-linker /lib/ld.so.1} \
+- %{m64:-dynamic-linker /lib/ld64.so.1}}}}"
++ %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \
++ %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}"
+
+
+ #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+--- gcc-4.1.0/gcc/config/sh/linux.h
++++ gcc-4.1.0/gcc/config/sh/linux.h
+@@ -56,12 +56,21 @@ Boston, MA 02110-1301, USA. */
+ #undef SUBTARGET_LINK_EMUL_SUFFIX
+ #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
+ #undef SUBTARGET_LINK_SPEC
++#ifdef USE_UCLIBC
++#define SUBTARGET_LINK_SPEC \
++ "%{shared:-shared} \
++ %{!static: \
++ %{rdynamic:-export-dynamic} \
++ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \
++ %{static:-static}"
++#else
+ #define SUBTARGET_LINK_SPEC \
+ "%{shared:-shared} \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{static:-static}"
++#endif
+
+ /* Output assembler code to STREAM to call the profiler. */
+
+--- gcc-4.1.0/gcc/config/sparc/linux.h
++++ gcc-4.1.0/gcc/config/sparc/linux.h
+@@ -125,6 +125,11 @@ Boston, MA 02110-1301, USA. */
+
+ /* If ELF is the default format, we should not use /lib/elf. */
+
++#ifdef USE_UCLIBC
++#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#else
++#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#endif
+ #undef LINK_SPEC
+ #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
+ %{!mno-relax:%{!r:-relax}} \
+@@ -132,7 +137,7 @@ Boston, MA 02110-1301, USA. */
+ %{!ibcs: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
++ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
+ %{static:-static}}}"
+
+ /* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
+--- gcc-4.1.0/gcc/config/sparc/linux64.h
++++ gcc-4.1.0/gcc/config/sparc/linux64.h
+@@ -162,12 +162,17 @@ Boston, MA 02110-1301, USA. */
+ { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \
+ { "link_arch", LINK_ARCH_SPEC },
+
++#ifdef USE_UCLIBC
++#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#else
++#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#endif
+ #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
+ %{!shared: \
+ %{!ibcs: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
++ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
+ %{static:-static}}} \
+ "
+
+--- gcc-4.1.0/libffi/configure
++++ gcc-4.1.0/libffi/configure
+@@ -3457,6 +3457,11 @@ linux-gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++linux-uclibc*)
++ lt_cv_deplibs_check_method=pass_all
++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
++ ;;
++
+ netbsd* | knetbsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
+--- gcc-4.1.0/libgfortran/configure
++++ gcc-4.1.0/libgfortran/configure
+@@ -3699,6 +3699,11 @@ linux-gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++linux-uclibc*)
++ lt_cv_deplibs_check_method=pass_all
++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
++ ;;
++
+ netbsd* | knetbsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
+--- gcc-4.1.0/libjava/configure
++++ gcc-4.1.0/libjava/configure
+@@ -5137,6 +5137,11 @@ linux-gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++linux-uclibc*)
++ lt_cv_deplibs_check_method=pass_all
++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
++ ;;
++
+ netbsd* | knetbsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
+--- gcc-4.1.0/libmudflap/configure
++++ gcc-4.1.0/libmudflap/configure
+@@ -5382,6 +5382,11 @@ linux-gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++linux-uclibc*)
++ lt_cv_deplibs_check_method=pass_all
++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
++ ;;
++
+ netbsd* | knetbsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
+--- gcc-4.1.0/libobjc/configure
++++ gcc-4.1.0/libobjc/configure
+@@ -3312,6 +3312,11 @@ linux-gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++linux-uclibc*)
++ lt_cv_deplibs_check_method=pass_all
++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
++ ;;
++
+ netbsd* | knetbsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
+--- gcc-4.1.0/libtool.m4
++++ gcc-4.1.0/libtool.m4
+@@ -743,6 +743,11 @@ linux-gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++linux-uclibc*)
++ lt_cv_deplibs_check_method=pass_all
++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
++ ;;
++
+ netbsd* | knetbsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
+--- gcc-4.1.0/ltconfig
++++ gcc-4.1.0/ltconfig
+@@ -603,6 +603,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-
+
+ # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+ case $host_os in
++linux-uclibc*) ;;
+ linux-gnu*) ;;
+ linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+ esac
+@@ -1274,6 +1275,23 @@ linux-gnu*)
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
++linux-uclibc*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
++ soname_spec='${libname}${release}.so$major'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ # This implies no fast_install, which is unacceptable.
++ # Some rework will be needed to allow for fast_install
++ # before this can be enabled.
++ hardcode_into_libs=yes
++ # Assume using the uClibc dynamic linker.
++ dynamic_linker="uClibc ld.so"
++ ;;
++
+ netbsd*)
+ need_lib_prefix=no
+ need_version=no
+--- gcc-4.1.0/zlib/configure
++++ gcc-4.1.0/zlib/configure
+@@ -3426,6 +3426,11 @@ linux-gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++linux-uclibc*)
++ lt_cv_deplibs_check_method=pass_all
++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
++ ;;
++
+ netbsd* | knetbsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
diff --git a/packages/gcc/gcc-4.1.2/110-arm-eabi.patch b/packages/gcc/gcc-4.1.2/110-arm-eabi.patch
new file mode 100644
index 0000000000..acebe5308f
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/110-arm-eabi.patch
@@ -0,0 +1,27 @@
+--- gcc-2005q3-1.orig/gcc/config.gcc 2005-10-31 19:02:54.000000000 +0300
++++ gcc-2005q3-1/gcc/config.gcc 2006-01-27 01:09:09.000000000 +0300
+@@ -674,7 +674,7 @@
+ tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
+ tmake_file="t-slibgcc-elf-ver t-linux arm/t-arm"
+ case ${target} in
+- arm*-*-linux-gnueabi)
++ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
+ tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
+ tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
+ # The BPABI long long divmod functions return a 128-bit value in
+
+diff -urN gcc-2005q3-2/gcc/config/arm/linux-eabi.h gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h
+--- gcc-2005q3-2/gcc/config/arm/linux-eabi.h 2005-12-07 23:14:16.000000000 +0300
++++ gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h 2006-03-29 19:02:34.000000000 +0400
+@@ -53,7 +53,11 @@
+ /* Use ld-linux.so.3 so that it will be possible to run "classic"
+ GNU/Linux binaries on an EABI system. */
+ #undef LINUX_TARGET_INTERPRETER
++#ifdef USE_UCLIBC
++#define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0"
++#else
+ #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.3"
++#endif
+
+ /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
+ use the GNU/Linux version, not the generic BPABI version. */
diff --git a/packages/gcc/gcc-4.1.2/200-uclibc-locale.patch b/packages/gcc/gcc-4.1.2/200-uclibc-locale.patch
new file mode 100644
index 0000000000..9d65a6234e
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/200-uclibc-locale.patch
@@ -0,0 +1,3261 @@
+diff -urN gcc-4.1.0-dist/libstdc++-v3/acinclude.m4 gcc-4.1.0/libstdc++-v3/acinclude.m4
+--- gcc-4.1.0-dist/libstdc++-v3/acinclude.m4 2006-03-26 12:08:28.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/acinclude.m4 2006-03-25 22:06:30.000000000 -0700
+@@ -1071,7 +1071,7 @@
+ AC_MSG_CHECKING([for C locale to use])
+ GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@],
+ [use MODEL for target locale package],
+- [permit generic|gnu|ieee_1003.1-2001|yes|no|auto])
++ [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto])
+
+ # If they didn't use this option switch, or if they specified --enable
+ # with no specific model, we'll have to look for one. If they
+@@ -1087,6 +1087,9 @@
+ # Default to "generic".
+ if test $enable_clocale_flag = auto; then
+ case ${target_os} in
++ *-uclibc*)
++ enable_clocale_flag=uclibc
++ ;;
+ linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+ AC_EGREP_CPP([_GLIBCXX_ok], [
+ #include <features.h>
+@@ -1230,6 +1233,40 @@
+ CTIME_CC=config/locale/generic/time_members.cc
+ CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
+ ;;
++ uclibc)
++ AC_MSG_RESULT(uclibc)
++
++ # Declare intention to use gettext, and add support for specific
++ # languages.
++ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
++ ALL_LINGUAS="de fr"
++
++ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
++ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
++ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
++ USE_NLS=yes
++ fi
++ # Export the build objects.
++ for ling in $ALL_LINGUAS; do \
++ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
++ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
++ done
++ AC_SUBST(glibcxx_MOFILES)
++ AC_SUBST(glibcxx_POFILES)
++
++ CLOCALE_H=config/locale/uclibc/c_locale.h
++ CLOCALE_CC=config/locale/uclibc/c_locale.cc
++ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
++ CCOLLATE_CC=config/locale/uclibc/collate_members.cc
++ CCTYPE_CC=config/locale/uclibc/ctype_members.cc
++ CMESSAGES_H=config/locale/uclibc/messages_members.h
++ CMESSAGES_CC=config/locale/uclibc/messages_members.cc
++ CMONEY_CC=config/locale/uclibc/monetary_members.cc
++ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
++ CTIME_H=config/locale/uclibc/time_members.h
++ CTIME_CC=config/locale/uclibc/time_members.cc
++ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
++ ;;
+ esac
+
+ # This is where the testsuite looks for locale catalogs, using the
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
+--- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2006-03-25 22:18:37.000000000 -0700
+@@ -0,0 +1,63 @@
++// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
++
++// Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++// Written by Jakub Jelinek <jakub@redhat.com>
++
++#include <bits/c++config.h>
++#include <clocale>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning clean this up
++#endif
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++
++extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l;
++extern "C" __typeof(strcoll_l) __strcoll_l;
++extern "C" __typeof(strftime_l) __strftime_l;
++extern "C" __typeof(strtod_l) __strtod_l;
++extern "C" __typeof(strtof_l) __strtof_l;
++extern "C" __typeof(strtold_l) __strtold_l;
++extern "C" __typeof(strxfrm_l) __strxfrm_l;
++extern "C" __typeof(newlocale) __newlocale;
++extern "C" __typeof(freelocale) __freelocale;
++extern "C" __typeof(duplocale) __duplocale;
++extern "C" __typeof(uselocale) __uselocale;
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++extern "C" __typeof(iswctype_l) __iswctype_l;
++extern "C" __typeof(towlower_l) __towlower_l;
++extern "C" __typeof(towupper_l) __towupper_l;
++extern "C" __typeof(wcscoll_l) __wcscoll_l;
++extern "C" __typeof(wcsftime_l) __wcsftime_l;
++extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
++extern "C" __typeof(wctype_l) __wctype_l;
++#endif
++
++#endif // GLIBC 2.3 and later
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.cc
+--- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.cc 2006-03-25 22:18:37.000000000 -0700
+@@ -0,0 +1,152 @@
++// Wrapper for underlying C-language localization -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004, 2005
++// Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.8 Standard locale categories.
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <cerrno> // For errno
++#include <locale>
++#include <stdexcept>
++#include <langinfo.h>
++#include <bits/c++locale_internal.h>
++
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __strtol_l(S, E, B, L) strtol((S), (E), (B))
++#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B))
++#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B))
++#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B))
++#define __strtof_l(S, E, L) strtof((S), (E))
++#define __strtod_l(S, E, L) strtod((S), (E))
++#define __strtold_l(S, E, L) strtold((S), (E))
++#warning should dummy __newlocale check for C|POSIX ?
++#define __newlocale(a, b, c) NULL
++#define __freelocale(a) ((void)0)
++#define __duplocale(a) __c_locale()
++#endif
++
++namespace std
++{
++ template<>
++ void
++ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
++ const __c_locale& __cloc)
++ {
++ char* __sanity;
++ errno = 0;
++ float __f = __strtof_l(__s, &__sanity, __cloc);
++ if (__sanity != __s && errno != ERANGE)
++ __v = __f;
++ else
++ __err |= ios_base::failbit;
++ }
++
++ template<>
++ void
++ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
++ const __c_locale& __cloc)
++ {
++ char* __sanity;
++ errno = 0;
++ double __d = __strtod_l(__s, &__sanity, __cloc);
++ if (__sanity != __s && errno != ERANGE)
++ __v = __d;
++ else
++ __err |= ios_base::failbit;
++ }
++
++ template<>
++ void
++ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
++ const __c_locale& __cloc)
++ {
++ char* __sanity;
++ errno = 0;
++ long double __ld = __strtold_l(__s, &__sanity, __cloc);
++ if (__sanity != __s && errno != ERANGE)
++ __v = __ld;
++ else
++ __err |= ios_base::failbit;
++ }
++
++ void
++ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s,
++ __c_locale __old)
++ {
++ __cloc = __newlocale(1 << LC_ALL, __s, __old);
++#ifdef __UCLIBC_HAS_XLOCALE__
++ if (!__cloc)
++ {
++ // This named locale is not supported by the underlying OS.
++ __throw_runtime_error(__N("locale::facet::_S_create_c_locale "
++ "name not valid"));
++ }
++#endif
++ }
++
++ void
++ locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
++ {
++ if (__cloc && _S_get_c_locale() != __cloc)
++ __freelocale(__cloc);
++ }
++
++ __c_locale
++ locale::facet::_S_clone_c_locale(__c_locale& __cloc)
++ { return __duplocale(__cloc); }
++} // namespace std
++
++namespace __gnu_cxx
++{
++ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
++ {
++ "LC_CTYPE",
++ "LC_NUMERIC",
++ "LC_TIME",
++ "LC_COLLATE",
++ "LC_MONETARY",
++ "LC_MESSAGES",
++#if _GLIBCXX_NUM_CATEGORIES != 0
++ "LC_PAPER",
++ "LC_NAME",
++ "LC_ADDRESS",
++ "LC_TELEPHONE",
++ "LC_MEASUREMENT",
++ "LC_IDENTIFICATION"
++#endif
++ };
++}
++
++namespace std
++{
++ const char* const* const locale::_S_categories = __gnu_cxx::category_names;
++} // namespace std
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.h
+--- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.h 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.h 2006-03-26 13:03:42.000000000 -0700
+@@ -0,0 +1,117 @@
++// Wrapper for underlying C-language localization -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.8 Standard locale categories.
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#ifndef _C_LOCALE_H
++#define _C_LOCALE_H 1
++
++#pragma GCC system_header
++
++#include <cstring> // get std::strlen
++#include <cstdio> // get std::snprintf or std::sprintf
++#include <clocale>
++#include <langinfo.h> // For codecvt
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix this
++#endif
++#ifdef __UCLIBC_HAS_LOCALE__
++#include <iconv.h> // For codecvt using iconv, iconv_t
++#endif
++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
++#include <libintl.h> // For messages
++#endif
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning what is _GLIBCXX_C_LOCALE_GNU for
++#endif
++#define _GLIBCXX_C_LOCALE_GNU 1
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix categories
++#endif
++// #define _GLIBCXX_NUM_CATEGORIES 6
++#define _GLIBCXX_NUM_CATEGORIES 0
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++namespace __gnu_cxx
++{
++ extern "C" __typeof(uselocale) __uselocale;
++}
++#endif
++
++namespace std
++{
++#ifdef __UCLIBC_HAS_XLOCALE__
++ typedef __locale_t __c_locale;
++#else
++ typedef int* __c_locale;
++#endif
++
++ // Convert numeric value of type _Tv to string and return length of
++ // string. If snprintf is available use it, otherwise fall back to
++ // the unsafe sprintf which, in general, can be dangerous and should
++ // be avoided.
++ template<typename _Tv>
++ int
++ __convert_from_v(char* __out,
++ const int __size __attribute__ ((__unused__)),
++ const char* __fmt,
++#ifdef __UCLIBC_HAS_XLOCALE__
++ _Tv __v, const __c_locale& __cloc, int __prec)
++ {
++ __c_locale __old = __gnu_cxx::__uselocale(__cloc);
++#else
++ _Tv __v, const __c_locale&, int __prec)
++ {
++# ifdef __UCLIBC_HAS_LOCALE__
++ char* __old = std::setlocale(LC_ALL, NULL);
++ char* __sav = new char[std::strlen(__old) + 1];
++ std::strcpy(__sav, __old);
++ std::setlocale(LC_ALL, "C");
++# endif
++#endif
++
++ const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __gnu_cxx::__uselocale(__old);
++#elif defined __UCLIBC_HAS_LOCALE__
++ std::setlocale(LC_ALL, __sav);
++ delete [] __sav;
++#endif
++ return __ret;
++ }
++}
++
++#endif
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
+--- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2006-03-25 22:18:37.000000000 -0700
+@@ -0,0 +1,306 @@
++// std::codecvt implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.1.5 - Template class codecvt
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <locale>
++#include <bits/c++locale_internal.h>
++
++namespace std
++{
++ // Specializations.
++#ifdef _GLIBCXX_USE_WCHAR_T
++ codecvt_base::result
++ codecvt<wchar_t, char, mbstate_t>::
++ do_out(state_type& __state, const intern_type* __from,
++ const intern_type* __from_end, const intern_type*& __from_next,
++ extern_type* __to, extern_type* __to_end,
++ extern_type*& __to_next) const
++ {
++ result __ret = ok;
++ state_type __tmp_state(__state);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++
++ // wcsnrtombs is *very* fast but stops if encounters NUL characters:
++ // in case we fall back to wcrtomb and then continue, in a loop.
++ // NB: wcsnrtombs is a GNU extension
++ for (__from_next = __from, __to_next = __to;
++ __from_next < __from_end && __to_next < __to_end
++ && __ret == ok;)
++ {
++ const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0',
++ __from_end - __from_next);
++ if (!__from_chunk_end)
++ __from_chunk_end = __from_end;
++
++ __from = __from_next;
++ const size_t __conv = wcsnrtombs(__to_next, &__from_next,
++ __from_chunk_end - __from_next,
++ __to_end - __to_next, &__state);
++ if (__conv == static_cast<size_t>(-1))
++ {
++ // In case of error, in order to stop at the exact place we
++ // have to start again from the beginning with a series of
++ // wcrtomb.
++ for (; __from < __from_next; ++__from)
++ __to_next += wcrtomb(__to_next, *__from, &__tmp_state);
++ __state = __tmp_state;
++ __ret = error;
++ }
++ else if (__from_next && __from_next < __from_chunk_end)
++ {
++ __to_next += __conv;
++ __ret = partial;
++ }
++ else
++ {
++ __from_next = __from_chunk_end;
++ __to_next += __conv;
++ }
++
++ if (__from_next < __from_end && __ret == ok)
++ {
++ extern_type __buf[MB_LEN_MAX];
++ __tmp_state = __state;
++ const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state);
++ if (__conv > static_cast<size_t>(__to_end - __to_next))
++ __ret = partial;
++ else
++ {
++ memcpy(__to_next, __buf, __conv);
++ __state = __tmp_state;
++ __to_next += __conv;
++ ++__from_next;
++ }
++ }
++ }
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++
++ return __ret;
++ }
++
++ codecvt_base::result
++ codecvt<wchar_t, char, mbstate_t>::
++ do_in(state_type& __state, const extern_type* __from,
++ const extern_type* __from_end, const extern_type*& __from_next,
++ intern_type* __to, intern_type* __to_end,
++ intern_type*& __to_next) const
++ {
++ result __ret = ok;
++ state_type __tmp_state(__state);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++
++ // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
++ // in case we store a L'\0' and then continue, in a loop.
++ // NB: mbsnrtowcs is a GNU extension
++ for (__from_next = __from, __to_next = __to;
++ __from_next < __from_end && __to_next < __to_end
++ && __ret == ok;)
++ {
++ const extern_type* __from_chunk_end;
++ __from_chunk_end = static_cast<const extern_type*>(memchr(__from_next, '\0',
++ __from_end
++ - __from_next));
++ if (!__from_chunk_end)
++ __from_chunk_end = __from_end;
++
++ __from = __from_next;
++ size_t __conv = mbsnrtowcs(__to_next, &__from_next,
++ __from_chunk_end - __from_next,
++ __to_end - __to_next, &__state);
++ if (__conv == static_cast<size_t>(-1))
++ {
++ // In case of error, in order to stop at the exact place we
++ // have to start again from the beginning with a series of
++ // mbrtowc.
++ for (;; ++__to_next, __from += __conv)
++ {
++ __conv = mbrtowc(__to_next, __from, __from_end - __from,
++ &__tmp_state);
++ if (__conv == static_cast<size_t>(-1)
++ || __conv == static_cast<size_t>(-2))
++ break;
++ }
++ __from_next = __from;
++ __state = __tmp_state;
++ __ret = error;
++ }
++ else if (__from_next && __from_next < __from_chunk_end)
++ {
++ // It is unclear what to return in this case (see DR 382).
++ __to_next += __conv;
++ __ret = partial;
++ }
++ else
++ {
++ __from_next = __from_chunk_end;
++ __to_next += __conv;
++ }
++
++ if (__from_next < __from_end && __ret == ok)
++ {
++ if (__to_next < __to_end)
++ {
++ // XXX Probably wrong for stateful encodings
++ __tmp_state = __state;
++ ++__from_next;
++ *__to_next++ = L'\0';
++ }
++ else
++ __ret = partial;
++ }
++ }
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++
++ return __ret;
++ }
++
++ int
++ codecvt<wchar_t, char, mbstate_t>::
++ do_encoding() const throw()
++ {
++ // XXX This implementation assumes that the encoding is
++ // stateless and is either single-byte or variable-width.
++ int __ret = 0;
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++ if (MB_CUR_MAX == 1)
++ __ret = 1;
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++ return __ret;
++ }
++
++ int
++ codecvt<wchar_t, char, mbstate_t>::
++ do_max_length() const throw()
++ {
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++ // XXX Probably wrong for stateful encodings.
++ int __ret = MB_CUR_MAX;
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++ return __ret;
++ }
++
++ int
++ codecvt<wchar_t, char, mbstate_t>::
++ do_length(state_type& __state, const extern_type* __from,
++ const extern_type* __end, size_t __max) const
++ {
++ int __ret = 0;
++ state_type __tmp_state(__state);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++
++ // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
++ // in case we advance past it and then continue, in a loop.
++ // NB: mbsnrtowcs is a GNU extension
++
++ // A dummy internal buffer is needed in order for mbsnrtocws to consider
++ // its fourth parameter (it wouldn't with NULL as first parameter).
++ wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t)
++ * __max));
++ while (__from < __end && __max)
++ {
++ const extern_type* __from_chunk_end;
++ __from_chunk_end = static_cast<const extern_type*>(memchr(__from, '\0',
++ __end
++ - __from));
++ if (!__from_chunk_end)
++ __from_chunk_end = __end;
++
++ const extern_type* __tmp_from = __from;
++ size_t __conv = mbsnrtowcs(__to, &__from,
++ __from_chunk_end - __from,
++ __max, &__state);
++ if (__conv == static_cast<size_t>(-1))
++ {
++ // In case of error, in order to stop at the exact place we
++ // have to start again from the beginning with a series of
++ // mbrtowc.
++ for (__from = __tmp_from;; __from += __conv)
++ {
++ __conv = mbrtowc(NULL, __from, __end - __from,
++ &__tmp_state);
++ if (__conv == static_cast<size_t>(-1)
++ || __conv == static_cast<size_t>(-2))
++ break;
++ }
++ __state = __tmp_state;
++ __ret += __from - __tmp_from;
++ break;
++ }
++ if (!__from)
++ __from = __from_chunk_end;
++
++ __ret += __from - __tmp_from;
++ __max -= __conv;
++
++ if (__from < __end && __max)
++ {
++ // XXX Probably wrong for stateful encodings
++ __tmp_state = __state;
++ ++__from;
++ ++__ret;
++ --__max;
++ }
++ }
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++
++ return __ret;
++ }
++#endif
++}
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/collate_members.cc
+--- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/collate_members.cc 2006-03-25 22:18:37.000000000 -0700
+@@ -0,0 +1,80 @@
++// std::collate implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.4.1.2 collate virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <locale>
++#include <bits/c++locale_internal.h>
++
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __strcoll_l(S1, S2, L) strcoll((S1), (S2))
++#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N))
++#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2))
++#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N))
++#endif
++
++namespace std
++{
++ // These are basically extensions to char_traits, and perhaps should
++ // be put there instead of here.
++ template<>
++ int
++ collate<char>::_M_compare(const char* __one, const char* __two) const
++ {
++ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate);
++ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
++ }
++
++ template<>
++ size_t
++ collate<char>::_M_transform(char* __to, const char* __from,
++ size_t __n) const
++ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ template<>
++ int
++ collate<wchar_t>::_M_compare(const wchar_t* __one,
++ const wchar_t* __two) const
++ {
++ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate);
++ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
++ }
++
++ template<>
++ size_t
++ collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from,
++ size_t __n) const
++ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); }
++#endif
++}
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc
+--- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2006-03-25 22:18:37.000000000 -0700
+@@ -0,0 +1,314 @@
++// std::ctype implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions.
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#define _LIBC
++#include <locale>
++#undef _LIBC
++#include <bits/c++locale_internal.h>
++
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __wctype_l(S, L) wctype((S))
++#define __towupper_l(C, L) towupper((C))
++#define __towlower_l(C, L) towlower((C))
++#define __iswctype_l(C, M, L) iswctype((C), (M))
++#endif
++
++namespace std
++{
++ // NB: The other ctype<char> specializations are in src/locale.cc and
++ // various /config/os/* files.
++ template<>
++ ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
++ : ctype<char>(0, false, __refs)
++ {
++ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
++ {
++ this->_S_destroy_c_locale(this->_M_c_locale_ctype);
++ this->_S_create_c_locale(this->_M_c_locale_ctype, __s);
++#ifdef __UCLIBC_HAS_XLOCALE__
++ this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper;
++ this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower;
++ this->_M_table = this->_M_c_locale_ctype->__ctype_b;
++#endif
++ }
++ }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ ctype<wchar_t>::__wmask_type
++ ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const
++ {
++ __wmask_type __ret;
++ switch (__m)
++ {
++ case space:
++ __ret = __wctype_l("space", _M_c_locale_ctype);
++ break;
++ case print:
++ __ret = __wctype_l("print", _M_c_locale_ctype);
++ break;
++ case cntrl:
++ __ret = __wctype_l("cntrl", _M_c_locale_ctype);
++ break;
++ case upper:
++ __ret = __wctype_l("upper", _M_c_locale_ctype);
++ break;
++ case lower:
++ __ret = __wctype_l("lower", _M_c_locale_ctype);
++ break;
++ case alpha:
++ __ret = __wctype_l("alpha", _M_c_locale_ctype);
++ break;
++ case digit:
++ __ret = __wctype_l("digit", _M_c_locale_ctype);
++ break;
++ case punct:
++ __ret = __wctype_l("punct", _M_c_locale_ctype);
++ break;
++ case xdigit:
++ __ret = __wctype_l("xdigit", _M_c_locale_ctype);
++ break;
++ case alnum:
++ __ret = __wctype_l("alnum", _M_c_locale_ctype);
++ break;
++ case graph:
++ __ret = __wctype_l("graph", _M_c_locale_ctype);
++ break;
++ default:
++ __ret = __wmask_type();
++ }
++ return __ret;
++ }
++
++ wchar_t
++ ctype<wchar_t>::do_toupper(wchar_t __c) const
++ { return __towupper_l(__c, _M_c_locale_ctype); }
++
++ const wchar_t*
++ ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
++ {
++ while (__lo < __hi)
++ {
++ *__lo = __towupper_l(*__lo, _M_c_locale_ctype);
++ ++__lo;
++ }
++ return __hi;
++ }
++
++ wchar_t
++ ctype<wchar_t>::do_tolower(wchar_t __c) const
++ { return __towlower_l(__c, _M_c_locale_ctype); }
++
++ const wchar_t*
++ ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
++ {
++ while (__lo < __hi)
++ {
++ *__lo = __towlower_l(*__lo, _M_c_locale_ctype);
++ ++__lo;
++ }
++ return __hi;
++ }
++
++ bool
++ ctype<wchar_t>::
++ do_is(mask __m, wchar_t __c) const
++ {
++ // The case of __m == ctype_base::space is particularly important,
++ // due to its use in many istream functions. Therefore we deal with
++ // it first, exploiting the knowledge that on GNU systems _M_bit[5]
++ // is the mask corresponding to ctype_base::space. NB: an encoding
++ // change would not affect correctness!
++ bool __ret = false;
++ if (__m == _M_bit[5])
++ __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype);
++ else
++ {
++ // Highest bitmask in ctype_base == 10, but extra in "C"
++ // library for blank.
++ const size_t __bitmasksize = 11;
++ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
++ if (__m & _M_bit[__bitcur])
++ {
++ if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
++ {
++ __ret = true;
++ break;
++ }
++ else if (__m == _M_bit[__bitcur])
++ break;
++ }
++ }
++ return __ret;
++ }
++
++ const wchar_t*
++ ctype<wchar_t>::
++ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
++ {
++ for (; __lo < __hi; ++__vec, ++__lo)
++ {
++ // Highest bitmask in ctype_base == 10, but extra in "C"
++ // library for blank.
++ const size_t __bitmasksize = 11;
++ mask __m = 0;
++ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
++ if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype))
++ __m |= _M_bit[__bitcur];
++ *__vec = __m;
++ }
++ return __hi;
++ }
++
++ const wchar_t*
++ ctype<wchar_t>::
++ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
++ {
++ while (__lo < __hi && !this->do_is(__m, *__lo))
++ ++__lo;
++ return __lo;
++ }
++
++ const wchar_t*
++ ctype<wchar_t>::
++ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
++ {
++ while (__lo < __hi && this->do_is(__m, *__lo) != 0)
++ ++__lo;
++ return __lo;
++ }
++
++ wchar_t
++ ctype<wchar_t>::
++ do_widen(char __c) const
++ { return _M_widen[static_cast<unsigned char>(__c)]; }
++
++ const char*
++ ctype<wchar_t>::
++ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
++ {
++ while (__lo < __hi)
++ {
++ *__dest = _M_widen[static_cast<unsigned char>(*__lo)];
++ ++__lo;
++ ++__dest;
++ }
++ return __hi;
++ }
++
++ char
++ ctype<wchar_t>::
++ do_narrow(wchar_t __wc, char __dfault) const
++ {
++ if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
++ return _M_narrow[__wc];
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_ctype);
++#endif
++ const int __c = wctob(__wc);
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++ return (__c == EOF ? __dfault : static_cast<char>(__c));
++ }
++
++ const wchar_t*
++ ctype<wchar_t>::
++ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault,
++ char* __dest) const
++ {
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_ctype);
++#endif
++ if (_M_narrow_ok)
++ while (__lo < __hi)
++ {
++ if (*__lo >= 0 && *__lo < 128)
++ *__dest = _M_narrow[*__lo];
++ else
++ {
++ const int __c = wctob(*__lo);
++ *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
++ }
++ ++__lo;
++ ++__dest;
++ }
++ else
++ while (__lo < __hi)
++ {
++ const int __c = wctob(*__lo);
++ *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
++ ++__lo;
++ ++__dest;
++ }
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++ return __hi;
++ }
++
++ void
++ ctype<wchar_t>::_M_initialize_ctype()
++ {
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_ctype);
++#endif
++ wint_t __i;
++ for (__i = 0; __i < 128; ++__i)
++ {
++ const int __c = wctob(__i);
++ if (__c == EOF)
++ break;
++ else
++ _M_narrow[__i] = static_cast<char>(__c);
++ }
++ if (__i == 128)
++ _M_narrow_ok = true;
++ else
++ _M_narrow_ok = false;
++ for (size_t __j = 0;
++ __j < sizeof(_M_widen) / sizeof(wint_t); ++__j)
++ _M_widen[__j] = btowc(__j);
++
++ for (size_t __k = 0; __k <= 11; ++__k)
++ {
++ _M_bit[__k] = static_cast<mask>(_ISbit(__k));
++ _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]);
++ }
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#endif
++ }
++#endif // _GLIBCXX_USE_WCHAR_T
++}
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.cc
+--- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.cc 2006-03-25 22:18:37.000000000 -0700
+@@ -0,0 +1,100 @@
++// std::messages implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.7.1.2 messages virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <locale>
++#include <bits/c++locale_internal.h>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix gettext stuff
++#endif
++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
++extern "C" char *__dcgettext(const char *domainname,
++ const char *msgid, int category);
++#undef gettext
++#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
++#else
++#undef gettext
++#define gettext(msgid) (msgid)
++#endif
++
++namespace std
++{
++ // Specializations.
++ template<>
++ string
++ messages<char>::do_get(catalog, int, int, const string& __dfault) const
++ {
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_messages);
++ const char* __msg = const_cast<const char*>(gettext(__dfault.c_str()));
++ __uselocale(__old);
++ return string(__msg);
++#elif defined __UCLIBC_HAS_LOCALE__
++ char* __old = strdup(setlocale(LC_ALL, NULL));
++ setlocale(LC_ALL, _M_name_messages);
++ const char* __msg = gettext(__dfault.c_str());
++ setlocale(LC_ALL, __old);
++ free(__old);
++ return string(__msg);
++#else
++ const char* __msg = gettext(__dfault.c_str());
++ return string(__msg);
++#endif
++ }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ template<>
++ wstring
++ messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const
++ {
++# ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(_M_c_locale_messages);
++ char* __msg = gettext(_M_convert_to_char(__dfault));
++ __uselocale(__old);
++ return _M_convert_from_char(__msg);
++# elif defined __UCLIBC_HAS_LOCALE__
++ char* __old = strdup(setlocale(LC_ALL, NULL));
++ setlocale(LC_ALL, _M_name_messages);
++ char* __msg = gettext(_M_convert_to_char(__dfault));
++ setlocale(LC_ALL, __old);
++ free(__old);
++ return _M_convert_from_char(__msg);
++# else
++ char* __msg = gettext(_M_convert_to_char(__dfault));
++ return _M_convert_from_char(__msg);
++# endif
++ }
++#endif
++}
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.h
+--- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.h 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.h 2006-03-25 22:18:37.000000000 -0700
+@@ -0,0 +1,121 @@
++// std::messages implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.7.1.2 messages functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix prototypes for *textdomain funcs
++#endif
++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
++extern "C" char *__textdomain(const char *domainname);
++extern "C" char *__bindtextdomain(const char *domainname,
++ const char *dirname);
++#else
++#undef __textdomain
++#undef __bindtextdomain
++#define __textdomain(D) ((void)0)
++#define __bindtextdomain(D,P) ((void)0)
++#endif
++
++ // Non-virtual member functions.
++ template<typename _CharT>
++ messages<_CharT>::messages(size_t __refs)
++ : facet(__refs), _M_c_locale_messages(_S_get_c_locale()),
++ _M_name_messages(_S_get_c_name())
++ { }
++
++ template<typename _CharT>
++ messages<_CharT>::messages(__c_locale __cloc, const char* __s,
++ size_t __refs)
++ : facet(__refs), _M_c_locale_messages(NULL), _M_name_messages(NULL)
++ {
++ const size_t __len = std::strlen(__s) + 1;
++ char* __tmp = new char[__len];
++ std::memcpy(__tmp, __s, __len);
++ _M_name_messages = __tmp;
++
++ // Last to avoid leaking memory if new throws.
++ _M_c_locale_messages = _S_clone_c_locale(__cloc);
++ }
++
++ template<typename _CharT>
++ typename messages<_CharT>::catalog
++ messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
++ const char* __dir) const
++ {
++ __bindtextdomain(__s.c_str(), __dir);
++ return this->do_open(__s, __loc);
++ }
++
++ // Virtual member functions.
++ template<typename _CharT>
++ messages<_CharT>::~messages()
++ {
++ if (_M_name_messages != _S_get_c_name())
++ delete [] _M_name_messages;
++ _S_destroy_c_locale(_M_c_locale_messages);
++ }
++
++ template<typename _CharT>
++ typename messages<_CharT>::catalog
++ messages<_CharT>::do_open(const basic_string<char>& __s,
++ const locale&) const
++ {
++ // No error checking is done, assume the catalog exists and can
++ // be used.
++ __textdomain(__s.c_str());
++ return 0;
++ }
++
++ template<typename _CharT>
++ void
++ messages<_CharT>::do_close(catalog) const
++ { }
++
++ // messages_byname
++ template<typename _CharT>
++ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
++ : messages<_CharT>(__refs)
++ {
++ if (this->_M_name_messages != locale::facet::_S_get_c_name())
++ delete [] this->_M_name_messages;
++ char* __tmp = new char[std::strlen(__s) + 1];
++ std::strcpy(__tmp, __s);
++ this->_M_name_messages = __tmp;
++
++ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
++ {
++ this->_S_destroy_c_locale(this->_M_c_locale_messages);
++ this->_S_create_c_locale(this->_M_c_locale_messages, __s);
++ }
++ }
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
+--- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2006-03-25 22:18:37.000000000 -0700
+@@ -0,0 +1,692 @@
++// std::moneypunct implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#define _LIBC
++#include <locale>
++#undef _LIBC
++#include <bits/c++locale_internal.h>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning optimize this for uclibc
++#warning tailor for stub locale support
++#endif
++
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __nl_langinfo_l(N, L) nl_langinfo((N))
++#endif
++
++namespace std
++{
++ // Construct and return valid pattern consisting of some combination of:
++ // space none symbol sign value
++ money_base::pattern
++ money_base::_S_construct_pattern(char __precedes, char __space, char __posn)
++ {
++ pattern __ret;
++
++ // This insanely complicated routine attempts to construct a valid
++ // pattern for use with monyepunct. A couple of invariants:
++
++ // if (__precedes) symbol -> value
++ // else value -> symbol
++
++ // if (__space) space
++ // else none
++
++ // none == never first
++ // space never first or last
++
++ // Any elegant implementations of this are welcome.
++ switch (__posn)
++ {
++ case 0:
++ case 1:
++ // 1 The sign precedes the value and symbol.
++ __ret.field[0] = sign;
++ if (__space)
++ {
++ // Pattern starts with sign.
++ if (__precedes)
++ {
++ __ret.field[1] = symbol;
++ __ret.field[3] = value;
++ }
++ else
++ {
++ __ret.field[1] = value;
++ __ret.field[3] = symbol;
++ }
++ __ret.field[2] = space;
++ }
++ else
++ {
++ // Pattern starts with sign and ends with none.
++ if (__precedes)
++ {
++ __ret.field[1] = symbol;
++ __ret.field[2] = value;
++ }
++ else
++ {
++ __ret.field[1] = value;
++ __ret.field[2] = symbol;
++ }
++ __ret.field[3] = none;
++ }
++ break;
++ case 2:
++ // 2 The sign follows the value and symbol.
++ if (__space)
++ {
++ // Pattern either ends with sign.
++ if (__precedes)
++ {
++ __ret.field[0] = symbol;
++ __ret.field[2] = value;
++ }
++ else
++ {
++ __ret.field[0] = value;
++ __ret.field[2] = symbol;
++ }
++ __ret.field[1] = space;
++ __ret.field[3] = sign;
++ }
++ else
++ {
++ // Pattern ends with sign then none.
++ if (__precedes)
++ {
++ __ret.field[0] = symbol;
++ __ret.field[1] = value;
++ }
++ else
++ {
++ __ret.field[0] = value;
++ __ret.field[1] = symbol;
++ }
++ __ret.field[2] = sign;
++ __ret.field[3] = none;
++ }
++ break;
++ case 3:
++ // 3 The sign immediately precedes the symbol.
++ if (__precedes)
++ {
++ __ret.field[0] = sign;
++ __ret.field[1] = symbol;
++ if (__space)
++ {
++ __ret.field[2] = space;
++ __ret.field[3] = value;
++ }
++ else
++ {
++ __ret.field[2] = value;
++ __ret.field[3] = none;
++ }
++ }
++ else
++ {
++ __ret.field[0] = value;
++ if (__space)
++ {
++ __ret.field[1] = space;
++ __ret.field[2] = sign;
++ __ret.field[3] = symbol;
++ }
++ else
++ {
++ __ret.field[1] = sign;
++ __ret.field[2] = symbol;
++ __ret.field[3] = none;
++ }
++ }
++ break;
++ case 4:
++ // 4 The sign immediately follows the symbol.
++ if (__precedes)
++ {
++ __ret.field[0] = symbol;
++ __ret.field[1] = sign;
++ if (__space)
++ {
++ __ret.field[2] = space;
++ __ret.field[3] = value;
++ }
++ else
++ {
++ __ret.field[2] = value;
++ __ret.field[3] = none;
++ }
++ }
++ else
++ {
++ __ret.field[0] = value;
++ if (__space)
++ {
++ __ret.field[1] = space;
++ __ret.field[2] = symbol;
++ __ret.field[3] = sign;
++ }
++ else
++ {
++ __ret.field[1] = symbol;
++ __ret.field[2] = sign;
++ __ret.field[3] = none;
++ }
++ }
++ break;
++ default:
++ __ret = pattern();
++ }
++ return __ret;
++ }
++
++ template<>
++ void
++ moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc,
++ const char*)
++ {
++ if (!_M_data)
++ _M_data = new __moneypunct_cache<char, true>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_data->_M_decimal_point = '.';
++ _M_data->_M_thousands_sep = ',';
++ _M_data->_M_grouping = "";
++ _M_data->_M_grouping_size = 0;
++ _M_data->_M_curr_symbol = "";
++ _M_data->_M_curr_symbol_size = 0;
++ _M_data->_M_positive_sign = "";
++ _M_data->_M_positive_sign_size = 0;
++ _M_data->_M_negative_sign = "";
++ _M_data->_M_negative_sign_size = 0;
++ _M_data->_M_frac_digits = 0;
++ _M_data->_M_pos_format = money_base::_S_default_pattern;
++ _M_data->_M_neg_format = money_base::_S_default_pattern;
++
++ for (size_t __i = 0; __i < money_base::_S_end; ++__i)
++ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
++ }
++ else
++ {
++ // Named locale.
++ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT,
++ __cloc));
++ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP,
++ __cloc));
++ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
++ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
++
++ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
++ if (!__nposn)
++ _M_data->_M_negative_sign = "()";
++ else
++ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
++ __cloc);
++ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
++
++ // _Intl == true
++ _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
++ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
++ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS,
++ __cloc));
++ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
++ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
++ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
++ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
++ __pposn);
++ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
++ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
++ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
++ __nposn);
++ }
++ }
++
++ template<>
++ void
++ moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc,
++ const char*)
++ {
++ if (!_M_data)
++ _M_data = new __moneypunct_cache<char, false>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_data->_M_decimal_point = '.';
++ _M_data->_M_thousands_sep = ',';
++ _M_data->_M_grouping = "";
++ _M_data->_M_grouping_size = 0;
++ _M_data->_M_curr_symbol = "";
++ _M_data->_M_curr_symbol_size = 0;
++ _M_data->_M_positive_sign = "";
++ _M_data->_M_positive_sign_size = 0;
++ _M_data->_M_negative_sign = "";
++ _M_data->_M_negative_sign_size = 0;
++ _M_data->_M_frac_digits = 0;
++ _M_data->_M_pos_format = money_base::_S_default_pattern;
++ _M_data->_M_neg_format = money_base::_S_default_pattern;
++
++ for (size_t __i = 0; __i < money_base::_S_end; ++__i)
++ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
++ }
++ else
++ {
++ // Named locale.
++ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT,
++ __cloc));
++ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP,
++ __cloc));
++ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
++ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
++
++ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
++ if (!__nposn)
++ _M_data->_M_negative_sign = "()";
++ else
++ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
++ __cloc);
++ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
++
++ // _Intl == false
++ _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
++ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
++ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
++ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
++ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
++ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
++ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
++ __pposn);
++ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
++ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
++ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
++ __nposn);
++ }
++ }
++
++ template<>
++ moneypunct<char, true>::~moneypunct()
++ { delete _M_data; }
++
++ template<>
++ moneypunct<char, false>::~moneypunct()
++ { delete _M_data; }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ template<>
++ void
++ moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc,
++#ifdef __UCLIBC_HAS_XLOCALE__
++ const char*)
++#else
++ const char* __name)
++#endif
++ {
++ if (!_M_data)
++ _M_data = new __moneypunct_cache<wchar_t, true>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_data->_M_decimal_point = L'.';
++ _M_data->_M_thousands_sep = L',';
++ _M_data->_M_grouping = "";
++ _M_data->_M_grouping_size = 0;
++ _M_data->_M_curr_symbol = L"";
++ _M_data->_M_curr_symbol_size = 0;
++ _M_data->_M_positive_sign = L"";
++ _M_data->_M_positive_sign_size = 0;
++ _M_data->_M_negative_sign = L"";
++ _M_data->_M_negative_sign_size = 0;
++ _M_data->_M_frac_digits = 0;
++ _M_data->_M_pos_format = money_base::_S_default_pattern;
++ _M_data->_M_neg_format = money_base::_S_default_pattern;
++
++ // Use ctype::widen code without the facet...
++ for (size_t __i = 0; __i < money_base::_S_end; ++__i)
++ _M_data->_M_atoms[__i] =
++ static_cast<wchar_t>(money_base::_S_atoms[__i]);
++ }
++ else
++ {
++ // Named locale.
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(__cloc);
++#else
++ // Switch to named locale so that mbsrtowcs will work.
++ char* __old = strdup(setlocale(LC_ALL, NULL));
++ setlocale(LC_ALL, __name);
++#endif
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix this... should be monetary
++#endif
++#ifdef __UCLIBC__
++# ifdef __UCLIBC_HAS_XLOCALE__
++ _M_data->_M_decimal_point = __cloc->decimal_point_wc;
++ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
++# else
++ _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
++ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
++# endif
++#else
++ union { char *__s; wchar_t __w; } __u;
++ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
++ _M_data->_M_decimal_point = __u.__w;
++
++ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
++ _M_data->_M_thousands_sep = __u.__w;
++#endif
++ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++
++ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
++ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
++ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
++
++ wchar_t* __wcs_ps = 0;
++ wchar_t* __wcs_ns = 0;
++ const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
++ try
++ {
++ mbstate_t __state;
++ size_t __len = strlen(__cpossign);
++ if (__len)
++ {
++ ++__len;
++ memset(&__state, 0, sizeof(mbstate_t));
++ __wcs_ps = new wchar_t[__len];
++ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
++ _M_data->_M_positive_sign = __wcs_ps;
++ }
++ else
++ _M_data->_M_positive_sign = L"";
++ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
++
++ __len = strlen(__cnegsign);
++ if (!__nposn)
++ _M_data->_M_negative_sign = L"()";
++ else if (__len)
++ {
++ ++__len;
++ memset(&__state, 0, sizeof(mbstate_t));
++ __wcs_ns = new wchar_t[__len];
++ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
++ _M_data->_M_negative_sign = __wcs_ns;
++ }
++ else
++ _M_data->_M_negative_sign = L"";
++ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
++
++ // _Intl == true.
++ __len = strlen(__ccurr);
++ if (__len)
++ {
++ ++__len;
++ memset(&__state, 0, sizeof(mbstate_t));
++ wchar_t* __wcs = new wchar_t[__len];
++ mbsrtowcs(__wcs, &__ccurr, __len, &__state);
++ _M_data->_M_curr_symbol = __wcs;
++ }
++ else
++ _M_data->_M_curr_symbol = L"";
++ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
++ }
++ catch (...)
++ {
++ delete _M_data;
++ _M_data = 0;
++ delete __wcs_ps;
++ delete __wcs_ns;
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#else
++ setlocale(LC_ALL, __old);
++ free(__old);
++#endif
++ __throw_exception_again;
++ }
++
++ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS,
++ __cloc));
++ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
++ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
++ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
++ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
++ __pposn);
++ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
++ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
++ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
++ __nposn);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#else
++ setlocale(LC_ALL, __old);
++ free(__old);
++#endif
++ }
++ }
++
++ template<>
++ void
++ moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc,
++#ifdef __UCLIBC_HAS_XLOCALE__
++ const char*)
++#else
++ const char* __name)
++#endif
++ {
++ if (!_M_data)
++ _M_data = new __moneypunct_cache<wchar_t, false>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_data->_M_decimal_point = L'.';
++ _M_data->_M_thousands_sep = L',';
++ _M_data->_M_grouping = "";
++ _M_data->_M_grouping_size = 0;
++ _M_data->_M_curr_symbol = L"";
++ _M_data->_M_curr_symbol_size = 0;
++ _M_data->_M_positive_sign = L"";
++ _M_data->_M_positive_sign_size = 0;
++ _M_data->_M_negative_sign = L"";
++ _M_data->_M_negative_sign_size = 0;
++ _M_data->_M_frac_digits = 0;
++ _M_data->_M_pos_format = money_base::_S_default_pattern;
++ _M_data->_M_neg_format = money_base::_S_default_pattern;
++
++ // Use ctype::widen code without the facet...
++ for (size_t __i = 0; __i < money_base::_S_end; ++__i)
++ _M_data->_M_atoms[__i] =
++ static_cast<wchar_t>(money_base::_S_atoms[__i]);
++ }
++ else
++ {
++ // Named locale.
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __c_locale __old = __uselocale(__cloc);
++#else
++ // Switch to named locale so that mbsrtowcs will work.
++ char* __old = strdup(setlocale(LC_ALL, NULL));
++ setlocale(LC_ALL, __name);
++#endif
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix this... should be monetary
++#endif
++#ifdef __UCLIBC__
++# ifdef __UCLIBC_HAS_XLOCALE__
++ _M_data->_M_decimal_point = __cloc->decimal_point_wc;
++ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
++# else
++ _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
++ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
++# endif
++#else
++ union { char *__s; wchar_t __w; } __u;
++ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
++ _M_data->_M_decimal_point = __u.__w;
++
++ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
++ _M_data->_M_thousands_sep = __u.__w;
++#endif
++ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++
++ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
++ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
++ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
++
++ wchar_t* __wcs_ps = 0;
++ wchar_t* __wcs_ns = 0;
++ const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
++ try
++ {
++ mbstate_t __state;
++ size_t __len;
++ __len = strlen(__cpossign);
++ if (__len)
++ {
++ ++__len;
++ memset(&__state, 0, sizeof(mbstate_t));
++ __wcs_ps = new wchar_t[__len];
++ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
++ _M_data->_M_positive_sign = __wcs_ps;
++ }
++ else
++ _M_data->_M_positive_sign = L"";
++ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
++
++ __len = strlen(__cnegsign);
++ if (!__nposn)
++ _M_data->_M_negative_sign = L"()";
++ else if (__len)
++ {
++ ++__len;
++ memset(&__state, 0, sizeof(mbstate_t));
++ __wcs_ns = new wchar_t[__len];
++ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
++ _M_data->_M_negative_sign = __wcs_ns;
++ }
++ else
++ _M_data->_M_negative_sign = L"";
++ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
++
++ // _Intl == true.
++ __len = strlen(__ccurr);
++ if (__len)
++ {
++ ++__len;
++ memset(&__state, 0, sizeof(mbstate_t));
++ wchar_t* __wcs = new wchar_t[__len];
++ mbsrtowcs(__wcs, &__ccurr, __len, &__state);
++ _M_data->_M_curr_symbol = __wcs;
++ }
++ else
++ _M_data->_M_curr_symbol = L"";
++ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
++ }
++ catch (...)
++ {
++ delete _M_data;
++ _M_data = 0;
++ delete __wcs_ps;
++ delete __wcs_ns;
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#else
++ setlocale(LC_ALL, __old);
++ free(__old);
++#endif
++ __throw_exception_again;
++ }
++
++ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
++ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
++ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
++ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
++ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
++ __pposn);
++ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
++ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
++ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
++ __nposn);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __uselocale(__old);
++#else
++ setlocale(LC_ALL, __old);
++ free(__old);
++#endif
++ }
++ }
++
++ template<>
++ moneypunct<wchar_t, true>::~moneypunct()
++ {
++ if (_M_data->_M_positive_sign_size)
++ delete [] _M_data->_M_positive_sign;
++ if (_M_data->_M_negative_sign_size
++ && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
++ delete [] _M_data->_M_negative_sign;
++ if (_M_data->_M_curr_symbol_size)
++ delete [] _M_data->_M_curr_symbol;
++ delete _M_data;
++ }
++
++ template<>
++ moneypunct<wchar_t, false>::~moneypunct()
++ {
++ if (_M_data->_M_positive_sign_size)
++ delete [] _M_data->_M_positive_sign;
++ if (_M_data->_M_negative_sign_size
++ && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
++ delete [] _M_data->_M_negative_sign;
++ if (_M_data->_M_curr_symbol_size)
++ delete [] _M_data->_M_curr_symbol;
++ delete _M_data;
++ }
++#endif
++}
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
+--- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2006-03-25 22:18:37.000000000 -0700
+@@ -0,0 +1,173 @@
++// std::numpunct implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#define _LIBC
++#include <locale>
++#undef _LIBC
++#include <bits/c++locale_internal.h>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning tailor for stub locale support
++#endif
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __nl_langinfo_l(N, L) nl_langinfo((N))
++#endif
++
++namespace std
++{
++ template<>
++ void
++ numpunct<char>::_M_initialize_numpunct(__c_locale __cloc)
++ {
++ if (!_M_data)
++ _M_data = new __numpunct_cache<char>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_data->_M_grouping = "";
++ _M_data->_M_grouping_size = 0;
++ _M_data->_M_use_grouping = false;
++
++ _M_data->_M_decimal_point = '.';
++ _M_data->_M_thousands_sep = ',';
++
++ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
++ _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i];
++
++ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
++ _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j];
++ }
++ else
++ {
++ // Named locale.
++ _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT,
++ __cloc));
++ _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP,
++ __cloc));
++
++ // Check for NULL, which implies no grouping.
++ if (_M_data->_M_thousands_sep == '\0')
++ _M_data->_M_grouping = "";
++ else
++ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++ }
++
++ // NB: There is no way to extact this info from posix locales.
++ // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
++ _M_data->_M_truename = "true";
++ _M_data->_M_truename_size = 4;
++ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
++ _M_data->_M_falsename = "false";
++ _M_data->_M_falsename_size = 5;
++ }
++
++ template<>
++ numpunct<char>::~numpunct()
++ { delete _M_data; }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ template<>
++ void
++ numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc)
++ {
++ if (!_M_data)
++ _M_data = new __numpunct_cache<wchar_t>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_data->_M_grouping = "";
++ _M_data->_M_grouping_size = 0;
++ _M_data->_M_use_grouping = false;
++
++ _M_data->_M_decimal_point = L'.';
++ _M_data->_M_thousands_sep = L',';
++
++ // Use ctype::widen code without the facet...
++ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
++ _M_data->_M_atoms_out[__i] =
++ static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
++
++ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
++ _M_data->_M_atoms_in[__j] =
++ static_cast<wchar_t>(__num_base::_S_atoms_in[__j]);
++ }
++ else
++ {
++ // Named locale.
++ // NB: In the GNU model wchar_t is always 32 bit wide.
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix this
++#endif
++#ifdef __UCLIBC__
++# ifdef __UCLIBC_HAS_XLOCALE__
++ _M_data->_M_decimal_point = __cloc->decimal_point_wc;
++ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
++# else
++ _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
++ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
++# endif
++#else
++ union { char *__s; wchar_t __w; } __u;
++ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
++ _M_data->_M_decimal_point = __u.__w;
++
++ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
++ _M_data->_M_thousands_sep = __u.__w;
++#endif
++
++ if (_M_data->_M_thousands_sep == L'\0')
++ _M_data->_M_grouping = "";
++ else
++ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++ }
++
++ // NB: There is no way to extact this info from posix locales.
++ // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
++ _M_data->_M_truename = L"true";
++ _M_data->_M_truename_size = 4;
++ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
++ _M_data->_M_falsename = L"false";
++ _M_data->_M_falsename_size = 5;
++ }
++
++ template<>
++ numpunct<wchar_t>::~numpunct()
++ { delete _M_data; }
++ #endif
++}
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.cc
+--- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.cc 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.cc 2006-03-25 22:18:37.000000000 -0700
+@@ -0,0 +1,406 @@
++// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
++// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <locale>
++#include <bits/c++locale_internal.h>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning tailor for stub locale support
++#endif
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __nl_langinfo_l(N, L) nl_langinfo((N))
++#endif
++
++namespace std
++{
++ template<>
++ void
++ __timepunct<char>::
++ _M_put(char* __s, size_t __maxlen, const char* __format,
++ const tm* __tm) const
++ {
++#ifdef __UCLIBC_HAS_XLOCALE__
++ const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
++ _M_c_locale_timepunct);
++#else
++ char* __old = strdup(setlocale(LC_ALL, NULL));
++ setlocale(LC_ALL, _M_name_timepunct);
++ const size_t __len = strftime(__s, __maxlen, __format, __tm);
++ setlocale(LC_ALL, __old);
++ free(__old);
++#endif
++ // Make sure __s is null terminated.
++ if (__len == 0)
++ __s[0] = '\0';
++ }
++
++ template<>
++ void
++ __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
++ {
++ if (!_M_data)
++ _M_data = new __timepunct_cache<char>;
++
++ if (!__cloc)
++ {
++ // "C" locale
++ _M_c_locale_timepunct = _S_get_c_locale();
++
++ _M_data->_M_date_format = "%m/%d/%y";
++ _M_data->_M_date_era_format = "%m/%d/%y";
++ _M_data->_M_time_format = "%H:%M:%S";
++ _M_data->_M_time_era_format = "%H:%M:%S";
++ _M_data->_M_date_time_format = "";
++ _M_data->_M_date_time_era_format = "";
++ _M_data->_M_am = "AM";
++ _M_data->_M_pm = "PM";
++ _M_data->_M_am_pm_format = "";
++
++ // Day names, starting with "C"'s Sunday.
++ _M_data->_M_day1 = "Sunday";
++ _M_data->_M_day2 = "Monday";
++ _M_data->_M_day3 = "Tuesday";
++ _M_data->_M_day4 = "Wednesday";
++ _M_data->_M_day5 = "Thursday";
++ _M_data->_M_day6 = "Friday";
++ _M_data->_M_day7 = "Saturday";
++
++ // Abbreviated day names, starting with "C"'s Sun.
++ _M_data->_M_aday1 = "Sun";
++ _M_data->_M_aday2 = "Mon";
++ _M_data->_M_aday3 = "Tue";
++ _M_data->_M_aday4 = "Wed";
++ _M_data->_M_aday5 = "Thu";
++ _M_data->_M_aday6 = "Fri";
++ _M_data->_M_aday7 = "Sat";
++
++ // Month names, starting with "C"'s January.
++ _M_data->_M_month01 = "January";
++ _M_data->_M_month02 = "February";
++ _M_data->_M_month03 = "March";
++ _M_data->_M_month04 = "April";
++ _M_data->_M_month05 = "May";
++ _M_data->_M_month06 = "June";
++ _M_data->_M_month07 = "July";
++ _M_data->_M_month08 = "August";
++ _M_data->_M_month09 = "September";
++ _M_data->_M_month10 = "October";
++ _M_data->_M_month11 = "November";
++ _M_data->_M_month12 = "December";
++
++ // Abbreviated month names, starting with "C"'s Jan.
++ _M_data->_M_amonth01 = "Jan";
++ _M_data->_M_amonth02 = "Feb";
++ _M_data->_M_amonth03 = "Mar";
++ _M_data->_M_amonth04 = "Apr";
++ _M_data->_M_amonth05 = "May";
++ _M_data->_M_amonth06 = "Jun";
++ _M_data->_M_amonth07 = "Jul";
++ _M_data->_M_amonth08 = "Aug";
++ _M_data->_M_amonth09 = "Sep";
++ _M_data->_M_amonth10 = "Oct";
++ _M_data->_M_amonth11 = "Nov";
++ _M_data->_M_amonth12 = "Dec";
++ }
++ else
++ {
++ _M_c_locale_timepunct = _S_clone_c_locale(__cloc);
++
++ _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
++ _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
++ _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
++ _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
++ _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
++ _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT,
++ __cloc);
++ _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
++ _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
++ _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
++
++ // Day names, starting with "C"'s Sunday.
++ _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
++ _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
++ _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
++ _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
++ _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
++ _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
++ _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
++
++ // Abbreviated day names, starting with "C"'s Sun.
++ _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
++ _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
++ _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
++ _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
++ _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
++ _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
++ _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
++
++ // Month names, starting with "C"'s January.
++ _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
++ _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
++ _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
++ _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
++ _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
++ _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
++ _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
++ _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
++ _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
++ _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
++ _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
++ _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
++
++ // Abbreviated month names, starting with "C"'s Jan.
++ _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
++ _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
++ _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
++ _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
++ _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
++ _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
++ _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
++ _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
++ _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
++ _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
++ _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
++ _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
++ }
++ }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ template<>
++ void
++ __timepunct<wchar_t>::
++ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format,
++ const tm* __tm) const
++ {
++#ifdef __UCLIBC_HAS_XLOCALE__
++ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
++ const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
++ _M_c_locale_timepunct);
++#else
++ char* __old = strdup(setlocale(LC_ALL, NULL));
++ setlocale(LC_ALL, _M_name_timepunct);
++ const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
++ setlocale(LC_ALL, __old);
++ free(__old);
++#endif
++ // Make sure __s is null terminated.
++ if (__len == 0)
++ __s[0] = L'\0';
++ }
++
++ template<>
++ void
++ __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
++ {
++ if (!_M_data)
++ _M_data = new __timepunct_cache<wchar_t>;
++
++#warning wide time stuff
++// if (!__cloc)
++ {
++ // "C" locale
++ _M_c_locale_timepunct = _S_get_c_locale();
++
++ _M_data->_M_date_format = L"%m/%d/%y";
++ _M_data->_M_date_era_format = L"%m/%d/%y";
++ _M_data->_M_time_format = L"%H:%M:%S";
++ _M_data->_M_time_era_format = L"%H:%M:%S";
++ _M_data->_M_date_time_format = L"";
++ _M_data->_M_date_time_era_format = L"";
++ _M_data->_M_am = L"AM";
++ _M_data->_M_pm = L"PM";
++ _M_data->_M_am_pm_format = L"";
++
++ // Day names, starting with "C"'s Sunday.
++ _M_data->_M_day1 = L"Sunday";
++ _M_data->_M_day2 = L"Monday";
++ _M_data->_M_day3 = L"Tuesday";
++ _M_data->_M_day4 = L"Wednesday";
++ _M_data->_M_day5 = L"Thursday";
++ _M_data->_M_day6 = L"Friday";
++ _M_data->_M_day7 = L"Saturday";
++
++ // Abbreviated day names, starting with "C"'s Sun.
++ _M_data->_M_aday1 = L"Sun";
++ _M_data->_M_aday2 = L"Mon";
++ _M_data->_M_aday3 = L"Tue";
++ _M_data->_M_aday4 = L"Wed";
++ _M_data->_M_aday5 = L"Thu";
++ _M_data->_M_aday6 = L"Fri";
++ _M_data->_M_aday7 = L"Sat";
++
++ // Month names, starting with "C"'s January.
++ _M_data->_M_month01 = L"January";
++ _M_data->_M_month02 = L"February";
++ _M_data->_M_month03 = L"March";
++ _M_data->_M_month04 = L"April";
++ _M_data->_M_month05 = L"May";
++ _M_data->_M_month06 = L"June";
++ _M_data->_M_month07 = L"July";
++ _M_data->_M_month08 = L"August";
++ _M_data->_M_month09 = L"September";
++ _M_data->_M_month10 = L"October";
++ _M_data->_M_month11 = L"November";
++ _M_data->_M_month12 = L"December";
++
++ // Abbreviated month names, starting with "C"'s Jan.
++ _M_data->_M_amonth01 = L"Jan";
++ _M_data->_M_amonth02 = L"Feb";
++ _M_data->_M_amonth03 = L"Mar";
++ _M_data->_M_amonth04 = L"Apr";
++ _M_data->_M_amonth05 = L"May";
++ _M_data->_M_amonth06 = L"Jun";
++ _M_data->_M_amonth07 = L"Jul";
++ _M_data->_M_amonth08 = L"Aug";
++ _M_data->_M_amonth09 = L"Sep";
++ _M_data->_M_amonth10 = L"Oct";
++ _M_data->_M_amonth11 = L"Nov";
++ _M_data->_M_amonth12 = L"Dec";
++ }
++#if 0
++ else
++ {
++ _M_c_locale_timepunct = _S_clone_c_locale(__cloc);
++
++ union { char *__s; wchar_t *__w; } __u;
++
++ __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc);
++ _M_data->_M_date_format = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc);
++ _M_data->_M_date_era_format = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc);
++ _M_data->_M_time_format = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc);
++ _M_data->_M_time_era_format = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc);
++ _M_data->_M_date_time_format = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc);
++ _M_data->_M_date_time_era_format = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc);
++ _M_data->_M_am = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc);
++ _M_data->_M_pm = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc);
++ _M_data->_M_am_pm_format = __u.__w;
++
++ // Day names, starting with "C"'s Sunday.
++ __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc);
++ _M_data->_M_day1 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc);
++ _M_data->_M_day2 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc);
++ _M_data->_M_day3 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc);
++ _M_data->_M_day4 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc);
++ _M_data->_M_day5 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc);
++ _M_data->_M_day6 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc);
++ _M_data->_M_day7 = __u.__w;
++
++ // Abbreviated day names, starting with "C"'s Sun.
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc);
++ _M_data->_M_aday1 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc);
++ _M_data->_M_aday2 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc);
++ _M_data->_M_aday3 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc);
++ _M_data->_M_aday4 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc);
++ _M_data->_M_aday5 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc);
++ _M_data->_M_aday6 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc);
++ _M_data->_M_aday7 = __u.__w;
++
++ // Month names, starting with "C"'s January.
++ __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc);
++ _M_data->_M_month01 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc);
++ _M_data->_M_month02 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc);
++ _M_data->_M_month03 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc);
++ _M_data->_M_month04 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc);
++ _M_data->_M_month05 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc);
++ _M_data->_M_month06 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc);
++ _M_data->_M_month07 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc);
++ _M_data->_M_month08 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc);
++ _M_data->_M_month09 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc);
++ _M_data->_M_month10 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc);
++ _M_data->_M_month11 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc);
++ _M_data->_M_month12 = __u.__w;
++
++ // Abbreviated month names, starting with "C"'s Jan.
++ __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc);
++ _M_data->_M_amonth01 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc);
++ _M_data->_M_amonth02 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc);
++ _M_data->_M_amonth03 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc);
++ _M_data->_M_amonth04 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc);
++ _M_data->_M_amonth05 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc);
++ _M_data->_M_amonth06 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc);
++ _M_data->_M_amonth07 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc);
++ _M_data->_M_amonth08 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc);
++ _M_data->_M_amonth09 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc);
++ _M_data->_M_amonth10 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc);
++ _M_data->_M_amonth11 = __u.__w;
++ __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc);
++ _M_data->_M_amonth12 = __u.__w;
++ }
++#endif // 0
++ }
++#endif
++}
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.h
+--- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.h 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.h 2005-10-21 02:34:06.000000000 -0600
+@@ -0,0 +1,76 @@
++// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.5.1.2 - time_get functions
++// ISO C++ 14882: 22.2.5.3.2 - time_put functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++ template<typename _CharT>
++ __timepunct<_CharT>::__timepunct(size_t __refs)
++ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
++ _M_name_timepunct(_S_get_c_name())
++ { _M_initialize_timepunct(); }
++
++ template<typename _CharT>
++ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
++ : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL),
++ _M_name_timepunct(_S_get_c_name())
++ { _M_initialize_timepunct(); }
++
++ template<typename _CharT>
++ __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
++ size_t __refs)
++ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
++ _M_name_timepunct(NULL)
++ {
++ const size_t __len = std::strlen(__s) + 1;
++ char* __tmp = new char[__len];
++ std::memcpy(__tmp, __s, __len);
++ _M_name_timepunct = __tmp;
++
++ try
++ { _M_initialize_timepunct(__cloc); }
++ catch(...)
++ {
++ delete [] _M_name_timepunct;
++ __throw_exception_again;
++ }
++ }
++
++ template<typename _CharT>
++ __timepunct<_CharT>::~__timepunct()
++ {
++ if (_M_name_timepunct != _S_get_c_name())
++ delete [] _M_name_timepunct;
++ delete _M_data;
++ _S_destroy_c_locale(_M_c_locale_timepunct);
++ }
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_base.h
+--- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_base.h 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_base.h 2006-03-25 22:06:30.000000000 -0700
+@@ -0,0 +1,64 @@
++// Locale support -*- C++ -*-
++
++// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004
++// Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.1 Locales
++//
++
++/** @file ctype_base.h
++ * This is an internal header file, included by other library headers.
++ * You should not attempt to use it directly.
++ */
++
++// Information as gleaned from /usr/include/ctype.h
++
++ /// @brief Base class for ctype.
++ struct ctype_base
++ {
++ // Note: In uClibc, the following two types depend on configuration.
++
++ // Non-standard typedefs.
++ typedef const __ctype_touplow_t* __to_type;
++
++ // NB: Offsets into ctype<char>::_M_table force a particular size
++ // on the mask type. Because of this, we don't use an enum.
++ typedef __ctype_mask_t mask;
++ static const mask upper = _ISupper;
++ static const mask lower = _ISlower;
++ static const mask alpha = _ISalpha;
++ static const mask digit = _ISdigit;
++ static const mask xdigit = _ISxdigit;
++ static const mask space = _ISspace;
++ static const mask print = _ISprint;
++ static const mask graph = _ISalpha | _ISdigit | _ISpunct;
++ static const mask cntrl = _IScntrl;
++ static const mask punct = _ISpunct;
++ static const mask alnum = _ISalpha | _ISdigit;
++ };
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_inline.h
+--- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_inline.h 2006-03-25 22:06:30.000000000 -0700
+@@ -0,0 +1,69 @@
++// Locale support -*- C++ -*-
++
++// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.1 Locales
++//
++
++// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
++// functions go in ctype.cc
++
++ bool
++ ctype<char>::
++ is(mask __m, char __c) const
++ { return _M_table[static_cast<unsigned char>(__c)] & __m; }
++
++ const char*
++ ctype<char>::
++ is(const char* __low, const char* __high, mask* __vec) const
++ {
++ while (__low < __high)
++ *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
++ return __high;
++ }
++
++ const char*
++ ctype<char>::
++ scan_is(mask __m, const char* __low, const char* __high) const
++ {
++ while (__low < __high
++ && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
++ ++__low;
++ return __low;
++ }
++
++ const char*
++ ctype<char>::
++ scan_not(mask __m, const char* __low, const char* __high) const
++ {
++ while (__low < __high
++ && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
++ ++__low;
++ return __low;
++ }
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h
+--- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h 2006-03-25 22:06:30.000000000 -0700
+@@ -0,0 +1,92 @@
++// Locale support -*- C++ -*-
++
++// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
++// Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.1 Locales
++//
++
++// Information as gleaned from /usr/include/ctype.h
++
++ const ctype_base::mask*
++ ctype<char>::classic_table() throw()
++ { return __C_ctype_b; }
++
++ ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
++ size_t __refs)
++ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()),
++ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
++ {
++ _M_toupper = __C_ctype_toupper;
++ _M_tolower = __C_ctype_tolower;
++ _M_table = __table ? __table : __C_ctype_b;
++ memset(_M_widen, 0, sizeof(_M_widen));
++ memset(_M_narrow, 0, sizeof(_M_narrow));
++ }
++
++ ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
++ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()),
++ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
++ {
++ _M_toupper = __C_ctype_toupper;
++ _M_tolower = __C_ctype_tolower;
++ _M_table = __table ? __table : __C_ctype_b;
++ memset(_M_widen, 0, sizeof(_M_widen));
++ memset(_M_narrow, 0, sizeof(_M_narrow));
++ }
++
++ char
++ ctype<char>::do_toupper(char __c) const
++ { return _M_toupper[static_cast<unsigned char>(__c)]; }
++
++ const char*
++ ctype<char>::do_toupper(char* __low, const char* __high) const
++ {
++ while (__low < __high)
++ {
++ *__low = _M_toupper[static_cast<unsigned char>(*__low)];
++ ++__low;
++ }
++ return __high;
++ }
++
++ char
++ ctype<char>::do_tolower(char __c) const
++ { return _M_tolower[static_cast<unsigned char>(__c)]; }
++
++ const char*
++ ctype<char>::do_tolower(char* __low, const char* __high) const
++ {
++ while (__low < __high)
++ {
++ *__low = _M_tolower[static_cast<unsigned char>(*__low)];
++ ++__low;
++ }
++ return __high;
++ }
+diff -urN gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/os_defines.h gcc-4.1.0/libstdc++-v3/config/os/uclibc/os_defines.h
+--- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/os_defines.h 1969-12-31 17:00:00.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/os_defines.h 2006-03-25 22:06:30.000000000 -0700
+@@ -0,0 +1,44 @@
++// Specific definitions for GNU/Linux -*- C++ -*-
++
++// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This 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 General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction. Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License. This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++#ifndef _GLIBCXX_OS_DEFINES
++#define _GLIBCXX_OS_DEFINES 1
++
++// System-specific #define, typedefs, corrections, etc, go here. This
++// file will come before all others.
++
++// This keeps isanum, et al from being propagated as macros.
++#define __NO_CTYPE 1
++
++#include <features.h>
++
++// We must not see the optimized string functions GNU libc defines.
++#define __NO_STRING_INLINES
++
++#endif
+diff -urN gcc-4.1.0-dist/libstdc++-v3/configure gcc-4.1.0/libstdc++-v3/configure
+--- gcc-4.1.0-dist/libstdc++-v3/configure 2006-03-26 12:08:28.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/configure 2006-03-25 22:06:30.000000000 -0700
+@@ -4005,6 +4005,11 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++linux-uclibc*)
++ lt_cv_deplibs_check_method=pass_all
++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
++ ;;
++
+ netbsd* | knetbsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
+@@ -5740,7 +5745,7 @@
+ enableval="$enable_clocale"
+
+ case "$enableval" in
+- generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
++ generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;;
+ *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5
+ echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;}
+ { (exit 1); exit 1; }; } ;;
+@@ -5765,6 +5770,9 @@
+ # Default to "generic".
+ if test $enable_clocale_flag = auto; then
+ case ${target_os} in
++ linux-uclibc*)
++ enable_clocale_flag=uclibc
++ ;;
+ linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5995,6 +6003,76 @@
+ CTIME_CC=config/locale/generic/time_members.cc
+ CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
+ ;;
++ uclibc)
++ echo "$as_me:$LINENO: result: uclibc" >&5
++echo "${ECHO_T}uclibc" >&6
++
++ # Declare intention to use gettext, and add support for specific
++ # languages.
++ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
++ ALL_LINGUAS="de fr"
++
++ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
++ # Extract the first word of "msgfmt", so it can be a program name with args.
++set dummy msgfmt; 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_check_msgfmt+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$check_msgfmt"; then
++ ac_cv_prog_check_msgfmt="$check_msgfmt" # 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_check_msgfmt="yes"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no"
++fi
++fi
++check_msgfmt=$ac_cv_prog_check_msgfmt
++if test -n "$check_msgfmt"; then
++ echo "$as_me:$LINENO: result: $check_msgfmt" >&5
++echo "${ECHO_T}$check_msgfmt" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
++ USE_NLS=yes
++ fi
++ # Export the build objects.
++ for ling in $ALL_LINGUAS; do \
++ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
++ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
++ done
++
++
++
++ CLOCALE_H=config/locale/uclibc/c_locale.h
++ CLOCALE_CC=config/locale/uclibc/c_locale.cc
++ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
++ CCOLLATE_CC=config/locale/uclibc/collate_members.cc
++ CCTYPE_CC=config/locale/uclibc/ctype_members.cc
++ CMESSAGES_H=config/locale/uclibc/messages_members.h
++ CMESSAGES_CC=config/locale/uclibc/messages_members.cc
++ CMONEY_CC=config/locale/uclibc/monetary_members.cc
++ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
++ CTIME_H=config/locale/uclibc/time_members.h
++ CTIME_CC=config/locale/uclibc/time_members.cc
++ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
++ ;;
+ esac
+
+ # This is where the testsuite looks for locale catalogs, using the
+diff -urN gcc-4.1.0-dist/libstdc++-v3/configure.host gcc-4.1.0/libstdc++-v3/configure.host
+--- gcc-4.1.0-dist/libstdc++-v3/configure.host 2006-03-26 12:08:28.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/configure.host 2006-03-25 22:06:30.000000000 -0700
+@@ -261,6 +261,12 @@
+ ;;
+ esac
+
++# Override for uClibc since linux-uclibc gets mishandled above.
++case "${host_os}" in
++ *-uclibc*)
++ os_include_dir="os/uclibc"
++ ;;
++esac
+
+ # Set any OS-dependent and CPU-dependent bits.
+ # THIS TABLE IS SORTED. KEEP IT THAT WAY.
+diff -urN gcc-4.1.0-dist/libstdc++-v3/crossconfig.m4 gcc-4.1.0/libstdc++-v3/crossconfig.m4
+--- gcc-4.1.0-dist/libstdc++-v3/crossconfig.m4 2006-03-26 12:08:28.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/crossconfig.m4 2006-03-25 22:06:30.000000000 -0700
+@@ -143,6 +143,99 @@
+ ;;
+ esac
+ ;;
++ *-uclibc*)
++# Temporary hack until we implement the float versions of the libm funcs
++ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
++ machine/endian.h machine/param.h sys/machine.h sys/types.h \
++ fp.h float.h endian.h inttypes.h locale.h float.h stdint.h])
++ SECTION_FLAGS='-ffunction-sections -fdata-sections'
++ AC_SUBST(SECTION_FLAGS)
++ GLIBCXX_CHECK_LINKER_FEATURES
++ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
++ GLIBCXX_CHECK_WCHAR_T_SUPPORT
++
++ # For LFS.
++ AC_DEFINE(HAVE_INT64_T)
++ case "$target" in
++ *-uclinux*)
++ # Don't enable LFS with uClinux
++ ;;
++ *)
++ AC_DEFINE(_GLIBCXX_USE_LFS)
++ esac
++
++ # For showmanyc_helper().
++ AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
++ GLIBCXX_CHECK_POLL
++ GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
++
++ # For xsputn_2().
++ AC_CHECK_HEADERS(sys/uio.h)
++ GLIBCXX_CHECK_WRITEV
++
++# AC_DEFINE(HAVE_ACOSF)
++# AC_DEFINE(HAVE_ASINF)
++# AC_DEFINE(HAVE_ATANF)
++# AC_DEFINE(HAVE_ATAN2F)
++ AC_DEFINE(HAVE_CEILF)
++ AC_DEFINE(HAVE_COPYSIGN)
++# AC_DEFINE(HAVE_COPYSIGNF)
++# AC_DEFINE(HAVE_COSF)
++# AC_DEFINE(HAVE_COSHF)
++# AC_DEFINE(HAVE_EXPF)
++# AC_DEFINE(HAVE_FABSF)
++ AC_DEFINE(HAVE_FINITE)
++ AC_DEFINE(HAVE_FINITEF)
++ AC_DEFINE(HAVE_FLOORF)
++# AC_DEFINE(HAVE_FMODF)
++# AC_DEFINE(HAVE_FREXPF)
++ AC_DEFINE(HAVE_HYPOT)
++# AC_DEFINE(HAVE_HYPOTF)
++ AC_DEFINE(HAVE_ISINF)
++ AC_DEFINE(HAVE_ISINFF)
++ AC_DEFINE(HAVE_ISNAN)
++ AC_DEFINE(HAVE_ISNANF)
++# AC_DEFINE(HAVE_LOGF)
++# AC_DEFINE(HAVE_LOG10F)
++# AC_DEFINE(HAVE_MODFF)
++# AC_DEFINE(HAVE_SINF)
++# AC_DEFINE(HAVE_SINHF)
++# AC_DEFINE(HAVE_SINCOS)
++# AC_DEFINE(HAVE_SINCOSF)
++ AC_DEFINE(HAVE_SQRTF)
++# AC_DEFINE(HAVE_TANF)
++# AC_DEFINE(HAVE_TANHF)
++ if test x"long_double_math_on_this_cpu" = x"yes"; then
++ AC_MSG_ERROR([long_double_math_on_this_cpu is yes!])
++# AC_DEFINE(HAVE_ACOSL)
++# AC_DEFINE(HAVE_ASINL)
++# AC_DEFINE(HAVE_ATANL)
++# AC_DEFINE(HAVE_ATAN2L)
++# AC_DEFINE(HAVE_CEILL)
++# AC_DEFINE(HAVE_COPYSIGNL)
++# AC_DEFINE(HAVE_COSL)
++# AC_DEFINE(HAVE_COSHL)
++# AC_DEFINE(HAVE_EXPL)
++# AC_DEFINE(HAVE_FABSL)
++# AC_DEFINE(HAVE_FINITEL)
++# AC_DEFINE(HAVE_FLOORL)
++# AC_DEFINE(HAVE_FMODL)
++# AC_DEFINE(HAVE_FREXPL)
++# AC_DEFINE(HAVE_HYPOTL)
++# AC_DEFINE(HAVE_ISINFL)
++# AC_DEFINE(HAVE_ISNANL)
++# AC_DEFINE(HAVE_LOGL)
++# AC_DEFINE(HAVE_LOG10L)
++# AC_DEFINE(HAVE_MODFL)
++# AC_DEFINE(HAVE_POWL)
++# AC_DEFINE(HAVE_SINL)
++# AC_DEFINE(HAVE_SINHL)
++# AC_DEFINE(HAVE_SINCOSL)
++# AC_DEFINE(HAVE_SQRTL)
++# AC_DEFINE(HAVE_TANL)
++# AC_DEFINE(HAVE_TANHL)
++ fi
++ ;;
+ *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu)
+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
+ machine/endian.h machine/param.h sys/machine.h sys/types.h \
+@@ -157,7 +250,7 @@
+ AC_DEFINE(HAVE_INT64_T)
+ case "$target" in
+ *-uclinux*)
+- # Don't enable LFS with uClibc
++ # Don't enable LFS with uClinux
+ ;;
+ *)
+ AC_DEFINE(_GLIBCXX_USE_LFS)
+diff -urN gcc-4.1.0-dist/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.1.0/libstdc++-v3/include/c_compatibility/wchar.h
+--- gcc-4.1.0-dist/libstdc++-v3/include/c_compatibility/wchar.h 2006-03-26 12:08:28.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/include/c_compatibility/wchar.h 2006-03-25 22:06:30.000000000 -0700
+@@ -101,7 +101,9 @@
+ using std::wmemcpy;
+ using std::wmemmove;
+ using std::wmemset;
++#if _GLIBCXX_HAVE_WCSFTIME
+ using std::wcsftime;
++#endif
+
+ #if _GLIBCXX_USE_C99
+ using std::wcstold;
+diff -urN gcc-4.1.0-dist/libstdc++-v3/include/c_std/std_cwchar.h gcc-4.1.0/libstdc++-v3/include/c_std/std_cwchar.h
+--- gcc-4.1.0-dist/libstdc++-v3/include/c_std/std_cwchar.h 2006-03-26 12:08:28.000000000 -0700
++++ gcc-4.1.0/libstdc++-v3/include/c_std/std_cwchar.h 2006-03-25 22:06:30.000000000 -0700
+@@ -180,7 +180,9 @@
+ using ::wcscoll;
+ using ::wcscpy;
+ using ::wcscspn;
++#if _GLIBCXX_HAVE_WCSFTIME
+ using ::wcsftime;
++#endif
+ using ::wcslen;
+ using ::wcsncat;
+ using ::wcsncmp;
diff --git a/packages/gcc/gcc-4.1.2/300-libstdc++-pic.patch b/packages/gcc/gcc-4.1.2/300-libstdc++-pic.patch
new file mode 100644
index 0000000000..89d03a85e5
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/300-libstdc++-pic.patch
@@ -0,0 +1,46 @@
+# DP: Build and install libstdc++_pic.a library.
+
+--- gcc-4.1.0/libstdc++-v3/src/Makefile.am 2004-11-15 17:33:05.000000000 -0600
++++ gcc-4.1.0-patched/libstdc++-v3/src/Makefile.am 2005-04-25 20:05:59.186930896 -0500
+@@ -214,6 +214,10 @@
+ $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
+
+
++install-exec-local:
++ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
++ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
++
+ # Added bits to build debug library.
+ if GLIBCXX_BUILD_DEBUG
+ all-local: build_debug
+--- gcc-4.1.0/libstdc++-v3/src/Makefile.in 2005-04-11 19:13:08.000000000 -0500
++++ gcc-4.1.0-patched/libstdc++-v3/src/Makefile.in 2005-04-25 20:12:33.284316275 -0500
+@@ -627,7 +627,7 @@
+
+ install-data-am: install-data-local
+
+-install-exec-am: install-toolexeclibLTLIBRARIES
++install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
+
+ install-info: install-info-am
+
+@@ -660,6 +660,7 @@
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-data-local install-exec \
++ install-exec-local \
+ install-exec-am install-info install-info-am install-man \
+ install-strip install-toolexeclibLTLIBRARIES installcheck \
+ installcheck-am installdirs maintainer-clean \
+@@ -745,6 +746,11 @@
+ install_debug:
+ (cd ${debugdir} && $(MAKE) \
+ toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
++
++install-exec-local:
++ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
++ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
++
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+ .NOEXPORT:
diff --git a/packages/gcc/gcc-4.1.2/301-missing-execinfo_h.patch b/packages/gcc/gcc-4.1.2/301-missing-execinfo_h.patch
new file mode 100644
index 0000000000..0e2092f3fb
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/301-missing-execinfo_h.patch
@@ -0,0 +1,11 @@
+--- gcc-4.0.0/boehm-gc/include/gc.h-orig 2005-04-28 22:28:57.000000000 -0500
++++ gcc-4.0.0/boehm-gc/include/gc.h 2005-04-28 22:30:38.000000000 -0500
+@@ -500,7 +500,7 @@
+ #ifdef __linux__
+ # include <features.h>
+ # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
+- && !defined(__ia64__)
++ && !defined(__ia64__) && !defined(__UCLIBC__)
+ # ifndef GC_HAVE_BUILTIN_BACKTRACE
+ # define GC_HAVE_BUILTIN_BACKTRACE
+ # endif
diff --git a/packages/gcc/gcc-4.1.2/302-c99-snprintf.patch b/packages/gcc/gcc-4.1.2/302-c99-snprintf.patch
new file mode 100644
index 0000000000..dfb22d681b
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/302-c99-snprintf.patch
@@ -0,0 +1,11 @@
+--- gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h-orig 2005-04-29 00:08:41.000000000 -0500
++++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h 2005-04-29 00:08:45.000000000 -0500
+@@ -142,7 +142,7 @@
+ using ::vsprintf;
+ }
+
+-#if _GLIBCXX_USE_C99
++#if _GLIBCXX_USE_C99 || defined(__UCLIBC__)
+
+ #undef snprintf
+ #undef vfscanf
diff --git a/packages/gcc/gcc-4.1.2/303-c99-complex-ugly-hack.patch b/packages/gcc/gcc-4.1.2/303-c99-complex-ugly-hack.patch
new file mode 100644
index 0000000000..2ccc80d9bb
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/303-c99-complex-ugly-hack.patch
@@ -0,0 +1,12 @@
+--- gcc-4.0.0/libstdc++-v3/configure-old 2005-04-30 22:04:48.061603912 -0500
++++ gcc-4.0.0/libstdc++-v3/configure 2005-04-30 22:06:13.678588152 -0500
+@@ -7194,6 +7194,9 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <complex.h>
++#ifdef __UCLIBC__
++#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs
++#endif
+ int
+ main ()
+ {
diff --git a/packages/gcc/gcc-4.1.2/304-index_macro.patch b/packages/gcc/gcc-4.1.2/304-index_macro.patch
new file mode 100644
index 0000000000..1fac112fa9
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/304-index_macro.patch
@@ -0,0 +1,24 @@
+--- gcc-4.1.0/libstdc++-v3/include/ext/rope.mps 2006-03-24 01:49:51 +0100
++++ gcc-4.1.0/libstdc++-v3/include/ext/rope 2006-03-24 01:49:37 +0100
+@@ -59,6 +59,9 @@
+ #include <bits/allocator.h>
+ #include <ext/hash_fun.h>
+
++/* cope w/ index defined as macro, SuSv3 proposal */
++#undef index
++
+ # ifdef __GC
+ # define __GC_CONST const
+ # else
+--- gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h.mps 2006-03-24 01:50:04 +0100
++++ gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h 2006-03-24 01:50:28 +0100
+@@ -53,6 +53,9 @@
+ #include <ext/memory> // For uninitialized_copy_n
+ #include <ext/numeric> // For power
+
++/* cope w/ index defined as macro, SuSv3 proposal */
++#undef index
++
+ namespace __gnu_cxx
+ {
+ using std::size_t;
diff --git a/packages/gcc/gcc-4.1.2/602-sdk-libstdc++-includes.patch b/packages/gcc/gcc-4.1.2/602-sdk-libstdc++-includes.patch
new file mode 100644
index 0000000000..23fce7544d
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/602-sdk-libstdc++-includes.patch
@@ -0,0 +1,20 @@
+--- gcc-4.1.0/libstdc++-v3/fragment.am 2005-03-21 11:40:14.000000000 -0600
++++ gcc-4.1.0-patched/libstdc++-v3/fragment.am 2005-04-25 20:14:39.856251785 -0500
+@@ -21,5 +21,5 @@
+ $(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
+
+ # -I/-D flags to pass when compiling.
+-AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
++AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
+
+--- gcc-4.1.0/libstdc++-v3/libmath/Makefile.am 2005-03-21 11:40:18.000000000 -0600
++++ gcc-4.1.0-patched/libstdc++-v3/libmath/Makefile.am 2005-04-25 20:14:39.682280735 -0500
+@@ -35,7 +35,7 @@
+
+ libmath_la_SOURCES = stubs.c
+
+-AM_CPPFLAGS = $(CANADIAN_INCLUDES)
++AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
+
+ # Only compiling "C" sources in this directory.
+ LIBTOOL = @LIBTOOL@ --tag CC
diff --git a/packages/gcc/gcc-4.1.2/740-sh-pr24836.patch b/packages/gcc/gcc-4.1.2/740-sh-pr24836.patch
new file mode 100644
index 0000000000..7992282cff
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/740-sh-pr24836.patch
@@ -0,0 +1,25 @@
+http://sourceforge.net/mailarchive/forum.php?thread_id=8959304&forum_id=5348
+http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24836
+
+--- gcc/gcc/configure.ac (revision 106699)
++++ gcc/gcc/configure.ac (working copy)
+@@ -2446,7 +2446,7 @@
+ tls_first_minor=14
+ tls_as_opt="-m64 -Aesame --fatal-warnings"
+ ;;
+- sh-*-* | sh[34]-*-*)
++ sh-*-* | sh[34]*-*-*)
+ conftest_s='
+ .section ".tdata","awT",@progbits
+ foo: .long 25
+--- gcc/gcc/configure
++++ gcc/gcc/configure
+@@ -14846,7 +14846,7 @@
+ tls_first_minor=14
+ tls_as_opt="-m64 -Aesame --fatal-warnings"
+ ;;
+- sh-*-* | sh[34]-*-*)
++ sh-*-* | sh[34]*-*-*)
+ conftest_s='
+ .section ".tdata","awT",@progbits
+ foo: .long 25
diff --git a/packages/gcc/gcc-4.1.2/800-arm-bigendian.patch b/packages/gcc/gcc-4.1.2/800-arm-bigendian.patch
new file mode 100644
index 0000000000..0a9417419e
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/800-arm-bigendian.patch
@@ -0,0 +1,127 @@
+By Lennert Buytenhek <buytenh@wantstofly.org>
+Adds support for arm*b-linux* big-endian ARM targets
+
+See http://gcc.gnu.org/PR16350
+
+Index: gcc-4.1.1/gcc/config/arm/linux-elf.h
+===================================================================
+--- gcc-4.1.1.orig/gcc/config/arm/linux-elf.h
++++ gcc-4.1.1/gcc/config/arm/linux-elf.h
+@@ -28,19 +28,33 @@
+ #undef TARGET_VERSION
+ #define TARGET_VERSION fputs (" (ARM GNU/Linux with ELF)", stderr);
+
++/*
++ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
++ * (big endian) configurations.
++ */
++#if TARGET_BIG_ENDIAN_DEFAULT
++#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
++#define TARGET_ENDIAN_OPTION "mbig-endian"
++#define TARGET_LINKER_EMULATION "armelfb_linux"
++#else
++#define TARGET_ENDIAN_DEFAULT 0
++#define TARGET_ENDIAN_OPTION "mlittle-endian"
++#define TARGET_LINKER_EMULATION "armelf_linux"
++#endif
++
+ #undef TARGET_DEFAULT_FLOAT_ABI
+ #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
+
+ #undef TARGET_DEFAULT
+-#define TARGET_DEFAULT (0)
++#define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT)
+
+ #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
+
+-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
++#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
+
+ #undef MULTILIB_DEFAULTS
+ #define MULTILIB_DEFAULTS \
+- { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
++ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
+
+ /* Now we define the strings used to build the spec file. */
+ #undef LIB_SPEC
+@@ -61,7 +75,7 @@
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker " LINUX_TARGET_INTERPRETER "} \
+ -X \
+- %{mbig-endian:-EB}" \
++ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
+ SUBTARGET_EXTRA_LINK_SPEC
+
+ #undef LINK_SPEC
+Index: gcc-4.1.1/gcc/config.gcc
+===================================================================
+--- gcc-4.1.1.orig/gcc/config.gcc
++++ gcc-4.1.1/gcc/config.gcc
+@@ -672,6 +672,11 @@ arm*-*-netbsd*)
+ ;;
+ arm*-*-linux*) # ARM GNU/Linux with ELF
+ tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
++ case $target in
++ arm*b-*)
++ tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
++ ;;
++ esac
+ tmake_file="${tmake_file} t-linux arm/t-arm"
+ case ${target} in
+ arm*-*-linux-gnueabi)
+Index: gcc-4.1.1/gcc/config/arm/linux-eabi.h
+===================================================================
+--- gcc-4.1.1.orig/gcc/config/arm/linux-eabi.h
++++ gcc-4.1.1/gcc/config/arm/linux-eabi.h
+@@ -20,6 +20,17 @@
+ the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
++/*
++ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
++ * (big endian) configurations.
++ */
++#undef TARGET_LINKER_EMULATION
++#if TARGET_BIG_ENDIAN_DEFAULT
++#define TARGET_LINKER_EMULATION "armelfb_linux_eabi"
++#else
++#define TARGET_LINKER_EMULATION "armelf_linux_eabi"
++#endif
++
+ /* On EABI GNU/Linux, we want both the BPABI builtins and the
+ GNU/Linux builtins. */
+ #undef TARGET_OS_CPP_BUILTINS
+@@ -48,7 +59,7 @@
+ #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
+
+ #undef SUBTARGET_EXTRA_LINK_SPEC
+-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi"
++#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION
+
+ /* Use ld-linux.so.3 so that it will be possible to run "classic"
+ GNU/Linux binaries on an EABI system. */
+Index: gcc-4.1.1/gcc/config/arm/bpabi.h
+===================================================================
+--- gcc-4.1.1.orig/gcc/config/arm/bpabi.h
++++ gcc-4.1.1/gcc/config/arm/bpabi.h
+@@ -33,9 +33,19 @@
+ #undef FPUTYPE_DEFAULT
+ #define FPUTYPE_DEFAULT FPUTYPE_VFP
+
++/*
++ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
++ * (big endian) configurations.
++ */
++#if TARGET_BIG_ENDIAN_DEFAULT
++#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
++#else
++#define TARGET_ENDIAN_DEFAULT 0
++#endif
++
+ /* EABI targets should enable interworking by default. */
+ #undef TARGET_DEFAULT
+-#define TARGET_DEFAULT MASK_INTERWORK
++#define TARGET_DEFAULT (MASK_INTERWORK | TARGET_ENDIAN_DEFAULT)
+
+ /* The ARM BPABI functions return a boolean; they use no special
+ calling convention. */
diff --git a/packages/gcc/gcc-4.1.2/801-arm-bigendian-eabi.patch b/packages/gcc/gcc-4.1.2/801-arm-bigendian-eabi.patch
new file mode 100644
index 0000000000..54490fc24f
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/801-arm-bigendian-eabi.patch
@@ -0,0 +1,14 @@
+Index: gcc-4.1.1/gcc/config/arm/linux-eabi.h
+===================================================================
+--- gcc-4.1.1.orig/gcc/config/arm/linux-eabi.h 2007-02-20 14:51:33.416193250 +0100
++++ gcc-4.1.1/gcc/config/arm/linux-eabi.h 2007-02-20 14:52:11.622581000 +0100
+@@ -48,7 +48,8 @@
+ #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
+
+ #undef SUBTARGET_EXTRA_LINK_SPEC
+-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi"
++#define SUBTARGET_EXTRA_LINK_SPEC \
++ " %{mbig-endian:-m armelfb_linux_eabi} %{mlittle-endian:-m armelf_linux_eabi} "
+
+ /* Use ld-linux.so.3 so that it will be possible to run "classic"
+ GNU/Linux binaries on an EABI system. */
diff --git a/packages/gcc/gcc-4.1.2/README b/packages/gcc/gcc-4.1.2/README
new file mode 100644
index 0000000000..b85840dc20
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/README
@@ -0,0 +1,4 @@
+The numbered patches come from
+http://www.uclibc.org/cgi-bin/viewcvs.cgi/trunk/buildroot/toolchain/gcc/4.1.1/
+Other patches are locally added to fix things (mostly inherited and reapplied
+from gcc 3.4.4 where applicable)
diff --git a/packages/gcc/gcc-4.1.2/arm-nolibfloat.patch b/packages/gcc/gcc-4.1.2/arm-nolibfloat.patch
new file mode 100644
index 0000000000..c4897c0330
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/arm-nolibfloat.patch
@@ -0,0 +1,24 @@
+# Dimitry Andric <dimitry@andric.com>, 2004-05-01
+#
+# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed
+# anymore. (The required functions are now in libgcc.)
+#
+# Fixes errors like
+# arm-softfloat-linux-gnu/3.4.0/../../../../arm-softfloat-linux-gnu/bin/ld: cannot find -lfloat
+# collect2: ld returned 1 exit status
+# make[2]: *** [arm-softfloat-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/iconvdata/ISO8859-1.so] Error 1
+# when building glibc-2.3.3 with gcc-3.4.0 for arm-softfloat
+
+Index: gcc-4.0.2/gcc/config/arm/linux-elf.h
+===================================================================
+--- gcc-4.0.2.orig/gcc/config/arm/linux-elf.h 2005-03-04 16:14:01.000000000 +0000
++++ gcc-4.0.2/gcc/config/arm/linux-elf.h 2005-11-11 18:02:54.000000000 +0000
+@@ -56,7 +56,7 @@
+ %{shared:-lc} \
+ %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
+
+-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
++#define LIBGCC_SPEC "-lgcc"
+
+ /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add
+ the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
diff --git a/packages/gcc/gcc-4.1.2/arm-softfloat.patch b/packages/gcc/gcc-4.1.2/arm-softfloat.patch
new file mode 100644
index 0000000000..c86c83ed15
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/arm-softfloat.patch
@@ -0,0 +1,16 @@
+Index: gcc-4.0.2/gcc/config/arm/t-linux
+===================================================================
+--- gcc-4.0.2.orig/gcc/config/arm/t-linux 2004-05-15 12:41:35.000000000 +0000
++++ gcc-4.0.2/gcc/config/arm/t-linux 2005-11-11 16:07:53.000000000 +0000
+@@ -4,7 +4,10 @@
+ LIBGCC2_DEBUG_CFLAGS = -g0
+
+ LIB1ASMSRC = arm/lib1funcs.asm
+-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
++LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
++ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
++ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
++ _fixsfsi _fixunssfsi _floatdidf _floatdisf
+
+ # MULTILIB_OPTIONS = mhard-float/msoft-float
+ # MULTILIB_DIRNAMES = hard-float soft-float
diff --git a/packages/gcc/gcc-4.1.2/arm-thumb-cache.patch b/packages/gcc/gcc-4.1.2/arm-thumb-cache.patch
new file mode 100644
index 0000000000..fa63846c8c
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/arm-thumb-cache.patch
@@ -0,0 +1,29 @@
+--- gcc-4.1.1/gcc/config/arm/linux-gas.h- 2005-06-25 03:22:41.000000000 +0200
++++ gcc-4.1.1/gcc/config/arm/linux-gas.h 2006-06-18 10:23:46.000000000 +0200
+@@ -44,6 +44,7 @@
+
+ /* Clear the instruction cache from `beg' to `end'. This makes an
+ inline system call to SYS_cacheflush. */
++#if !defined(__thumb__)
+ #define CLEAR_INSN_CACHE(BEG, END) \
+ { \
+ register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
+@@ -53,3 +54,18 @@
+ : "=r" (_beg) \
+ : "0" (_beg), "r" (_end), "r" (_flg)); \
+ }
++#else
++#define CLEAR_INSN_CACHE(BEG, END) \
++{ \
++ register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
++ register unsigned long _end __asm ("a2") = (unsigned long) (END); \
++ register unsigned long _flg __asm ("a3") = 0; \
++ register unsigned long _swi __asm ("a4") = 0xf0002; \
++ __asm __volatile ("push {r7}\n" \
++ " mov r7,a4\n" \
++ " swi 0 @ sys_cacheflush\n" \
++ " pop {r7}\n" \
++ : "=r" (_beg) \
++ : "0" (_beg), "r" (_end), "r" (_flg), "r" (_swi)); \
++}
++#endif
diff --git a/packages/gcc/gcc-4.1.2/arm-thumb.patch b/packages/gcc/gcc-4.1.2/arm-thumb.patch
new file mode 100644
index 0000000000..69e2f68cf2
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/arm-thumb.patch
@@ -0,0 +1,64 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- gcc-4.1.1/gcc/config/arm/lib1funcs.asm~gcc
++++ gcc-4.1.1/gcc/config/arm/lib1funcs.asm
+@@ -995,10 +995,24 @@
+ .code 32
+ FUNC_START div0
+
++#if ! defined __thumb__
+ stmfd sp!, {r1, lr}
+ mov r0, #SIGFPE
+ bl SYM(raise) __PLT__
+ RETLDM r1
++#else
++ push {r1, lr}
++ mov r0, #SIGFPE
++ bl SYM(raise) __PLT__
++#if __ARM_ARCH__ > 4
++ pop {r1, pc}
++#else
++ @ on 4T that won't work
++ pop {r1}
++ pop {r3}
++ bx r3
++#endif
++#endif
+
+ FUNC_END div0
+
+@@ -1141,11 +1155,12 @@
+ code here switches to the correct mode before executing the function. */
+
+ .text
+- .align 0
++ .align 1
+ .force_thumb
+
+ .macro call_via register
+ THUMB_FUNC_START _call_via_\register
++ .hidden SYM (_call_via_\register)
+
+ bx \register
+ nop
+@@ -1242,6 +1257,7 @@
+ .code 16
+
+ THUMB_FUNC_START _interwork_call_via_\register
++ .hidden SYM (_interwork_call_via_\register)
+
+ bx pc
+ nop
+--- gcc-4.1.1/gcc/config/arm/t-linux~gcc
++++ gcc-4.1.1/gcc/config/arm/t-linux
+@@ -7,6 +7,7 @@
+ LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
++ _call_via_rX \
+ _fixsfsi _fixunssfsi _floatdidf _floatdisf
+
+ # MULTILIB_OPTIONS = mhard-float/msoft-float
diff --git a/packages/gcc/gcc-4.1.2/fix-ICE-in-arm_unwind_emit_set.diff b/packages/gcc/gcc-4.1.2/fix-ICE-in-arm_unwind_emit_set.diff
new file mode 100644
index 0000000000..568e15abff
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/fix-ICE-in-arm_unwind_emit_set.diff
@@ -0,0 +1,18 @@
+--- trunk/gcc/config/arm/arm.c 2006/09/19 13:18:27 117055
++++ trunk/gcc/config/arm/arm.c 2006/09/19 13:19:24 117056
+@@ -15415,6 +15415,15 @@
+ /* Move from sp to reg. */
+ asm_fprintf (asm_out_file, "\t.movsp %r\n", REGNO (e0));
+ }
++ else if (GET_CODE (e1) == PLUS
++ && GET_CODE (XEXP (e1, 0)) == REG
++ && REGNO (XEXP (e1, 0)) == SP_REGNUM
++ && GET_CODE (XEXP (e1, 1)) == CONST_INT)
++ {
++ /* Set reg to offset from sp. */
++ asm_fprintf (asm_out_file, "\t.movsp %r, #%d\n",
++ REGNO (e0), (int)INTVAL(XEXP (e1, 1)));
++ }
+ else
+ abort ();
+ break;
diff --git a/packages/gcc/gcc-4.1.2/gcc41-configure.in.patch b/packages/gcc/gcc-4.1.2/gcc41-configure.in.patch
new file mode 100644
index 0000000000..3d33bcb978
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/gcc41-configure.in.patch
@@ -0,0 +1,22 @@
+--- gcc-3.4.4/configure.in.orig 2005-08-09 19:57:51.504323183 -0700
++++ gcc-3.4.4/configure.in 2005-08-09 20:00:12.073168623 -0700
+@@ -1907,7 +1907,7 @@
+ *) gxx_include_dir=${with_gxx_include_dir} ;;
+ esac
+
+-FLAGS_FOR_TARGET=
++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
+ case " $target_configdirs " in
+ *" newlib "*)
+ case " $target_configargs " in
+--- gcc-3.4.4/configure.orig 2005-08-09 21:02:29.668360660 -0700
++++ gcc-3.4.4/configure 2005-08-09 21:02:50.157649970 -0700
+@@ -2669,7 +2669,7 @@
+ *) gxx_include_dir=${with_gxx_include_dir} ;;
+ esac
+
+-FLAGS_FOR_TARGET=
++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
+ case " $target_configdirs " in
+ *" newlib "*)
+ case " $target_configargs " in
diff --git a/packages/gcc/gcc-4.1.2/ldflags.patch b/packages/gcc/gcc-4.1.2/ldflags.patch
new file mode 100644
index 0000000000..9576f60778
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/ldflags.patch
@@ -0,0 +1,22 @@
+--- /tmp/Makefile.in 2006-02-23 20:56:01.399758728 +0100
++++ gcc-4.1-20060217/Makefile.in 2006-02-23 20:56:16.874406224 +0100
+@@ -334,7 +334,7 @@
+ CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
+ LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
+ LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
+-LDFLAGS_FOR_TARGET =
++LDFLAGS_FOR_TARGET = @LDFLAGS@
+ PICFLAG_FOR_TARGET =
+
+ # ------------------------------------
+--- /tmp/Makefile.tpl 2006-02-23 20:50:34.077519272 +0100
++++ gcc-4.1-20060217/Makefile.tpl 2006-02-23 21:04:31.092273688 +0100
+@@ -337,7 +337,7 @@
+ CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
+ LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
+ LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
+-LDFLAGS_FOR_TARGET =
++LDFLAGS_FOR_TARGET = @LDFLAGS@
+ PICFLAG_FOR_TARGET =
+
+ # ------------------------------------
diff --git a/packages/gcc/gcc-4.1.2/sdk-libstdc++-includes.patch b/packages/gcc/gcc-4.1.2/sdk-libstdc++-includes.patch
new file mode 100644
index 0000000000..4377c2143b
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/sdk-libstdc++-includes.patch
@@ -0,0 +1,22 @@
+--- gcc-3.4.1/libstdc++-v3/libmath/Makefile.am~ 2003-08-27 22:29:42.000000000 +0100
++++ gcc-3.4.1/libstdc++-v3/libmath/Makefile.am 2004-07-22 16:41:45.152130128 +0100
+@@ -32,7 +32,7 @@
+
+ libmath_la_SOURCES = stubs.c
+
+-AM_CPPFLAGS = $(CANADIAN_INCLUDES)
++AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
+
+ # Only compiling "C" sources in this directory.
+ LIBTOOL = @LIBTOOL@ --tag CC
+--- gcc-3.4.1/libstdc++-v3/fragment.am.old 2004-07-22 18:24:58.024083656 +0100
++++ gcc-3.4.1/libstdc++-v3/fragment.am 2004-07-22 18:24:59.019932264 +0100
+@@ -18,7 +18,7 @@
+ $(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
+
+ # -I/-D flags to pass when compiling.
+-AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
++AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
+
+
+
diff --git a/packages/gcc/gcc-4.1.2/sh3-installfix-fixheaders.patch b/packages/gcc/gcc-4.1.2/sh3-installfix-fixheaders.patch
new file mode 100644
index 0000000000..a06cd2e075
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/sh3-installfix-fixheaders.patch
@@ -0,0 +1,11 @@
+--- gcc-4.1.1/gcc/Makefile.in_orig 2007-01-31 21:24:23.000000000 +0000
++++ gcc-4.1.1/gcc/Makefile.in 2007-01-31 21:24:43.000000000 +0000
+@@ -3772,8 +3772,6 @@
+ $(INSTALL_SCRIPT) $(mkinstalldirs) \
+ $(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
+ $(INSTALL_SCRIPT) $(srcdir)/fixproto $(DESTDIR)$(itoolsdir)/fixproto ; \
+- $(INSTALL_PROGRAM) build/fix-header$(build_exeext) \
+- $(DESTDIR)$(itoolsdir)/fix-header$(build_exeext) ; \
+ else :; fi
+ echo 'SYSTEM_HEADER_DIR="'"$(SYSTEM_HEADER_DIR)"'"' \
+ > $(DESTDIR)$(itoolsdatadir)/mkheaders.conf
diff --git a/packages/gcc/gcc-4.1.2/unbreak-armv4t.patch b/packages/gcc/gcc-4.1.2/unbreak-armv4t.patch
new file mode 100644
index 0000000000..b3399abfdb
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/unbreak-armv4t.patch
@@ -0,0 +1,12 @@
+diff -urN gcc-4.1.1/gcc/config/arm/linux-eabi.h gcc-4.1.1-arm9tdmi/gcc/config/arm/linux-eabi.h
+--- gcc-4.1.1/gcc/config/arm/linux-eabi.h 2006-10-22 11:11:49.000000000 -0700
++++ gcc-4.1.1-arm9tdmi/gcc/config/arm/linux-eabi.h 2006-10-24 21:34:01.000000000 -0700
+@@ -45,7 +45,7 @@
+ The ARM10TDMI core is the default for armv5t, so set
+ SUBTARGET_CPU_DEFAULT to achieve this. */
+ #undef SUBTARGET_CPU_DEFAULT
+-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
+
+ #undef SUBTARGET_EXTRA_LINK_SPEC
+ #define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi"
diff --git a/packages/gcc/gcc-4.1.2/zecke-no-host-includes.patch b/packages/gcc/gcc-4.1.2/zecke-no-host-includes.patch
new file mode 100644
index 0000000000..6afb10d6ef
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/zecke-no-host-includes.patch
@@ -0,0 +1,31 @@
+Index: gcc-4.0.2/gcc/c-incpath.c
+===================================================================
+--- gcc-4.0.2.orig/gcc/c-incpath.c 2005-01-23 16:05:27.000000000 +0100
++++ gcc-4.0.2/gcc/c-incpath.c 2006-05-15 21:23:02.000000000 +0200
+@@ -350,6 +350,26 @@
+ p->construct = 0;
+ p->user_supplied_p = user_supplied_p;
+
++#ifdef CROSS_COMPILE
++ /* A common error when cross compiling is including
++ host headers. This code below will try to fail fast
++ for cross compiling. Currently we consider /usr/include,
++ /opt/include and /sw/include as harmful. */
++ {
++ /* printf("Adding Path: %s\n", p->name ); */
++ if( strstr(p->name, "/usr/include" ) == p->name ) {
++ fprintf(stderr, _("CROSS COMPILE Badness: /usr/include in INCLUDEPATH: %s\n"), p->name);
++ abort();
++ } else if( strstr(p->name, "/sw/include") == p->name ) {
++ fprintf(stderr, _("CROSS COMPILE Badness: /sw/include in INCLUDEPATH: %s\n"), p->name);
++ abort();
++ } else if( strstr(p->name, "/opt/include") == p->name ) {
++ fprintf(stderr, _("CROSS COMPILE Badness: /opt/include in INCLUDEPATH: %s\n"), p->name);
++ abort();
++ }
++ }
++#endif
++
+ add_cpp_dir_path (p, chain);
+ }
+
diff --git a/packages/gcc/gcc-4.1.2/zecke-xgcc-cpp.patch b/packages/gcc/gcc-4.1.2/zecke-xgcc-cpp.patch
new file mode 100644
index 0000000000..42ec190600
--- /dev/null
+++ b/packages/gcc/gcc-4.1.2/zecke-xgcc-cpp.patch
@@ -0,0 +1,12 @@
+Index: gcc-4.1.1/Makefile.in
+===================================================================
+--- gcc-4.1.1.orig/Makefile.in 2006-08-06 13:32:44.000000000 +0200
++++ gcc-4.1.1/Makefile.in 2006-08-06 13:32:46.000000000 +0200
+@@ -194,6 +194,7 @@
+ AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
+ CC="$(CC_FOR_TARGET)"; export CC; \
+ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
++ CPP="$(CC_FOR_TARGET) -E"; export CCP; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
+ CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
+ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
diff --git a/packages/gcc/gcc-cross-sdk_4.1.2.bb b/packages/gcc/gcc-cross-sdk_4.1.2.bb
new file mode 100644
index 0000000000..f3968f512d
--- /dev/null
+++ b/packages/gcc/gcc-cross-sdk_4.1.2.bb
@@ -0,0 +1,42 @@
+DESCRIPTION = "The GNU cc and gcc C compilers."
+HOMEPAGE = "http://www.gnu.org/software/gcc/"
+SECTION = "devel"
+LICENSE = "GPL"
+PR = "r0"
+
+inherit sdk
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
+
+DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc"
+PACKAGES = "${PN}"
+
+require gcc_${PV}.bb
+require gcc4-build-sdk.inc
+require gcc-package-sdk.inc
+
+SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2 \
+ file://100-uclibc-conf.patch;patch=1 \
+ file://110-arm-eabi.patch;patch=1 \
+ file://200-uclibc-locale.patch;patch=1 \
+ file://300-libstdc++-pic.patch;patch=1 \
+ file://301-missing-execinfo_h.patch;patch=1 \
+ file://302-c99-snprintf.patch;patch=1 \
+ file://303-c99-complex-ugly-hack.patch;patch=1 \
+ file://304-index_macro.patch;patch=1 \
+ file://602-sdk-libstdc++-includes.patch;patch=1 \
+ file://740-sh-pr24836.patch;patch=1 \
+ file://800-arm-bigendian.patch;patch=1 \
+ file://801-arm-bigendian-eabi.patch;patch=1 \
+ file://arm-nolibfloat.patch;patch=1 \
+ file://arm-softfloat.patch;patch=1 \
+ file://gcc41-configure.in.patch;patch=1 \
+ file://arm-thumb.patch;patch=1 \
+ file://arm-thumb-cache.patch;patch=1 \
+ file://ldflags.patch;patch=1 \
+ file://unbreak-armv4t.patch;patch=1 \
+ file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \
+ "
+
+SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
+
diff --git a/packages/gcc/gcc-cross_4.1.1.bb b/packages/gcc/gcc-cross_4.1.1.bb
index 5721dee50b..08bc3a836e 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 = "r9"
+PR = "r12"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
@@ -15,4 +15,6 @@ require gcc3-build-cross.inc
# cross packaging
require gcc-package-cross.inc
-EXTRA_OECONF += "--with-mpfr=${STAGING_DIR}/${BUILD_SYS}"
+SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
+
+EXTRA_OECONF += "--disable-libunwind-exceptions --with-mpfr=${STAGING_DIR}/${BUILD_SYS}"
diff --git a/packages/gcc/gcc-cross_4.1.2.bb b/packages/gcc/gcc-cross_4.1.2.bb
new file mode 100644
index 0000000000..b11259676e
--- /dev/null
+++ b/packages/gcc/gcc-cross_4.1.2.bb
@@ -0,0 +1,20 @@
+require gcc_${PV}.bb
+# path mangling, needed by the cross packaging
+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*
+# remember to increment this one too.
+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++"
+
+# cross build
+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}/${BUILD_SYS}"
diff --git a/packages/gcc/gcc-package-sdk.inc b/packages/gcc/gcc-package-sdk.inc
index 9d44fb51ab..1e5f2aaa5d 100644
--- a/packages/gcc/gcc-package-sdk.inc
+++ b/packages/gcc/gcc-package-sdk.inc
@@ -41,7 +41,7 @@ do_install () {
# the packaging.
if [ "x${OLD_INHIBIT_PACKAGE_STRIP}" != "x1" ]; then
${TARGET_PREFIX}strip ${D}${libdir}/libstdc++.so.*
- ${TARGET_PREFIX}strip ${D}${libdir}/libg2c.so.*
+ ${TARGET_PREFIX}strip ${D}${libdir}/libg2c.so.* || true
${TARGET_PREFIX}strip ${D}${base_libdir}/libgcc_s.so.*
fi
}
diff --git a/packages/gcc/gcc-package.inc b/packages/gcc/gcc-package.inc
index 3ed8599e2d..82bf78db80 100644
--- a/packages/gcc/gcc-package.inc
+++ b/packages/gcc/gcc-package.inc
@@ -1,14 +1,14 @@
gcclibdir ?= "${libdir}/gcc"
BINV ?= "${PV}"
-# libgcc libstdc++ libg2c are listed in our FILES_*, but are actually
-# packaged in the respective cross packages.
-PACKAGES = "${PN} ${PN}-symlinks \
+PACKAGES = "libgcc ${PN} ${PN}-symlinks \
g++ g++-symlinks \
cpp cpp-symlinks \
g77 g77-symlinks \
gcov gcov-symlinks \
- libstdc++-dev libg2c-dev \
+ libmudflap libmudflap-dev \
+ libstdc++ libg2c \
+ libstdc++-dev libg2c-dev \
${PN}-doc"
FILES_${PN} = "${bindir}/${TARGET_PREFIX}gcc \
@@ -35,7 +35,11 @@ FILES_cpp-symlinks = "${bindir}/cpp"
FILES_gcov = "${bindir}/${TARGET_PREFIX}gcov"
FILES_gcov-symlinks = "${bindir}/gcov"
+FILES_libgcc = "${base_libdir}/libgcc*.so.*"
+FILES_libgcc-dev = "${base_libdir}/libgcc*.so"
+
# Called from within gcc-cross, so libdir is set wrong
+FILES_libg2c = "${target_libdir}/libg2c.so.*"
FILES_libg2c-dev = "${libdir}/libg2c.so \
${libdir}/libg2c.a \
${libdir}/libfrtbegin.a"
@@ -45,6 +49,7 @@ FILES_g++ = "${bindir}/${TARGET_PREFIX}g++ \
FILES_g++-symlinks = "${bindir}/c++ \
${bindir}/g++"
+FILES_libstdc++ = "${libdir}/libstdc++.so.*"
FILES_libstdc++-dev = "${includedir}/c++/${BINV} \
${libdir}/libstdc++.so \
${libdir}/libstdc++.la \
@@ -52,10 +57,22 @@ FILES_libstdc++-dev = "${includedir}/c++/${BINV} \
${libdir}/libsupc++.la \
${libdir}/libsupc++.a"
+FILES_libmudflap = "${libdir}/libmudflap*.so.*"
+FILES_libmudflap-dev = "${libdir}/libmudflap*.so \
+ ${libdir}/libmudflap*.a \
+ ${libdir}/libmudflap*.a"
+
+
FILES_${PN}-doc = "${infodir} \
${mandir} \
${gcclibdir}/${TARGET_SYS}/${BINV}/include/README"
+python do_package() {
+ if bb.data.getVar('DEBIAN_NAMES', d, 1):
+ bb.data.setVar('PKG_libgcc', 'libgcc1', d)
+ bb.build.exec_func('package_do_package', d)
+}
+
do_install () {
autotools_do_install
diff --git a/packages/gcc/gcc3-build-cross.inc b/packages/gcc/gcc3-build-cross.inc
index 62a7bf3b23..0c90eeac16 100644
--- a/packages/gcc/gcc3-build-cross.inc
+++ b/packages/gcc/gcc3-build-cross.inc
@@ -41,4 +41,8 @@ do_stage_append () {
do
rm -rf ${CROSS_DIR}/$d
done
+
+ #fix up libsupc++ and libstdc++ la files
+ sed -i "s|dependency_libs\s*=\s*.*|dependency_libs='-L${CROSS_DIR}/${TARGET_SYS}/lib -lgcc_s -lc -lm '|" ${CROSS_DIR}/${TARGET_SYS}/lib/libsupc++.la || true
+ sed -i "s|dependency_libs\s*=\s*.*|dependency_libs='-L${CROSS_DIR}/${TARGET_SYS}/lib -lgcc_s -lc -lm '|" ${CROSS_DIR}/${TARGET_SYS}/lib/libstdc++.la || true
}
diff --git a/packages/gcc/gcc_4.1.1.bb b/packages/gcc/gcc_4.1.1.bb
index ee8bfb00d9..9135daca18 100644
--- a/packages/gcc/gcc_4.1.1.bb
+++ b/packages/gcc/gcc_4.1.1.bb
@@ -1,4 +1,4 @@
-PR = "r9"
+PR = "r14"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
@@ -20,6 +20,7 @@ SRC_URI = "http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2 \
file://602-sdk-libstdc++-includes.patch;patch=1 \
file://740-sh-pr24836.patch;patch=1 \
file://800-arm-bigendian.patch;patch=1 \
+ file://801-arm-bigendian-eabi.patch;patch=1 \
file://arm-nolibfloat.patch;patch=1 \
file://arm-softfloat.patch;patch=1 \
file://gcc41-configure.in.patch;patch=1 \
@@ -31,9 +32,16 @@ SRC_URI = "http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2 \
file://unbreak-armv4t.patch;patch=1 \
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 \
"
-SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
+SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
+
+#This is a dirty hack to get gcc 4.1.1 to compile for glibc AND uclibc on ppc
+#the patch that is need it to get gcc support soft-floats with glibc, makes gcc fail with uclibc
+SRC_URI_append_linux = " file://ppc-gcc-41-20060515.patch;patch=1 \
+ file://ppc-sfp-long-double-gcc411-7.patch;patch=1 "
+
#Set the fortran bits
# 'fortran' or '', not 'f77' like gcc3 had
diff --git a/packages/gcc/gcc_4.1.2.bb b/packages/gcc/gcc_4.1.2.bb
new file mode 100644
index 0000000000..bd205f68eb
--- /dev/null
+++ b/packages/gcc/gcc_4.1.2.bb
@@ -0,0 +1,51 @@
+PR = "r2"
+DESCRIPTION = "The GNU cc and gcc C compilers."
+HOMEPAGE = "http://www.gnu.org/software/gcc/"
+SECTION = "devel"
+LICENSE = "GPL"
+
+inherit autotools gettext
+
+require gcc-package.inc
+
+SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2 \
+ file://100-uclibc-conf.patch;patch=1 \
+ file://110-arm-eabi.patch;patch=1 \
+ file://200-uclibc-locale.patch;patch=1 \
+ file://300-libstdc++-pic.patch;patch=1 \
+ file://301-missing-execinfo_h.patch;patch=1 \
+ file://302-c99-snprintf.patch;patch=1 \
+ file://303-c99-complex-ugly-hack.patch;patch=1 \
+ file://304-index_macro.patch;patch=1 \
+ file://602-sdk-libstdc++-includes.patch;patch=1 \
+ file://740-sh-pr24836.patch;patch=1 \
+ file://800-arm-bigendian.patch;patch=1 \
+ file://arm-nolibfloat.patch;patch=1 \
+ file://arm-softfloat.patch;patch=1 \
+ file://gcc41-configure.in.patch;patch=1 \
+ file://arm-thumb.patch;patch=1 \
+ file://arm-thumb-cache.patch;patch=1 \
+ file://ldflags.patch;patch=1 \
+ file://zecke-xgcc-cpp.patch;patch=1 \
+ file://unbreak-armv4t.patch;patch=1 \
+ file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \
+ "
+
+SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
+
+#Set the fortran bits
+# 'fortran' or '', not 'f77' like gcc3 had
+FORTRAN = ""
+HAS_GFORTRAN = "no"
+HAS_G2C = "no"
+
+#Set the java bits
+JAVA_arm = ""
+JAVA = ""
+
+LANGUAGES = "c,c++${FORTRAN}${JAVA}"
+require gcc3-build.inc
+
+
+EXTRA_OECONF += " --disable-libssp "
+
diff --git a/packages/gd/gd_2.0.33.bb b/packages/gd/gd_2.0.33.bb
index 78500bbcbd..7c1f7c3d19 100644
--- a/packages/gd/gd_2.0.33.bb
+++ b/packages/gd/gd_2.0.33.bb
@@ -2,7 +2,7 @@ SECTION = "libs"
LICENSE = "GD"
DESCRIPTION = "gd is a library used to create PNG, JPEG, or WBMP images."
DEPENDS = "libpng jpeg zlib"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://www.boutell.com/gd/http/gd-${PV}.tar.gz"
S = "${WORKDIR}/gd-${PV}"
@@ -12,6 +12,8 @@ inherit autotools binconfig gettext
EXTRA_OECONF += " --with-zlib=${STAGING_LIBDIR}/.. \
--with-png=${STAGING_LIBDIR}/.. \
--with-jpeg=${STAGING_LIBDIR}/.. \
+ --without-freetype \
+ --without-fontconfig \
--without-xpm \
--without-x"
diff --git a/packages/gdado/.mtn2git_empty b/packages/gdado/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gdado/.mtn2git_empty
diff --git a/packages/gdado/gdado_2.2.bb b/packages/gdado/gdado_2.2.bb
new file mode 100644
index 0000000000..feaa6ed991
--- /dev/null
+++ b/packages/gdado/gdado_2.2.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "gtk+ based dice roller for RPG games"
+HOMEPAGE = "http://gdado.sf.net"
+SECTION = "x11/games"
+LICENSE = "GPLv2"
+DEPENDS = "libgnomeui gtk+"
+PR = "r1"
+SRC_URI = "${SOURCEFORGE_MIRROR}/gdado/gdado-${PV}.tar.gz"
+
+inherit autotools
+
+do_install_prepend() {
+ sed -i -e "s|Icon=gdado.png|Icon=${datadir}/pixmaps/gdado/gdado.png|" \
+ gdado.desktop
+}
+
diff --git a/packages/gdb/files/sim-install-makefile-common.patch b/packages/gdb/files/sim-install-makefile-common.patch
new file mode 100644
index 0000000000..24550edc6c
--- /dev/null
+++ b/packages/gdb/files/sim-install-makefile-common.patch
@@ -0,0 +1,22 @@
+--- gdb-6.1/sim/common/Make-common.in~sim-install.patch 2003-09-08 18:24:59.000000000 +0100
++++ gdb-6.1/sim/common/Make-common.in 2004-07-22 17:56:18.947423032 +0100
+@@ -581,14 +581,14 @@
+
+ install-common: installdirs
+ n=`echo run | sed '$(program_transform_name)'`; \
+- $(INSTALL_PROGRAM) run$(EXEEXT) $(bindir)/$$n$(EXEEXT)
++ $(INSTALL_PROGRAM) run$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
+ n=`echo libsim.a | sed s/libsim.a/lib$(target_alias)-sim.a/`; \
+- $(INSTALL_DATA) libsim.a $(libdir)/$$n ; \
+- ( cd $(libdir) ; $(RANLIB) $$n )
++ $(INSTALL_DATA) libsim.a $(DESTDIR)$(libdir)/$$n ; \
++ ( cd $(DESTDIR)$(libdir) ; $(RANLIB) $$n )
+
+ installdirs:
+- $(SHELL) $(srcdir)/../../mkinstalldirs $(bindir)
+- $(SHELL) $(srcdir)/../../mkinstalldirs $(libdir)
++ $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(bindir)
++ $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(libdir)
+
+ check:
+ cd ../testsuite && $(MAKE) check RUNTESTFLAGS="$(RUNTESTFLAGS)"
diff --git a/packages/gdb/files/sim-install-makefile.patch b/packages/gdb/files/sim-install-makefile.patch
new file mode 100644
index 0000000000..7ac67496ac
--- /dev/null
+++ b/packages/gdb/files/sim-install-makefile.patch
@@ -0,0 +1,11 @@
+--- gdb-6.6~org/sim/common/Makefile.in 2007-01-30 09:23:31.000000000 -0500
++++ gdb-6.6/sim/common/Makefile.in 2007-01-30 09:25:32.000000000 -0500
+@@ -34,7 +34,7 @@
+
+ datadir = @datadir@
+ mandir = @mandir@
+-man1dir = $(mandir)/man1
++man1dir = $(DESTDIR)$(mandir)/man1
+ infodir = @infodir@
+ includedir = @includedir@
+
diff --git a/packages/gdb/files/sim-install.patch b/packages/gdb/files/sim-install.patch
deleted file mode 100644
index 3c88c4c059..0000000000
--- a/packages/gdb/files/sim-install.patch
+++ /dev/null
@@ -1,34 +0,0 @@
---- gdb-6.1/sim/common/Makefile.in~ 2004-01-15 21:25:06.000000000 +0000
-+++ gdb-6.1/sim/common/Makefile.in 2004-07-22 17:07:46.237809032 +0100
-@@ -34,7 +34,7 @@
-
- datadir = @datadir@
- mandir = @mandir@
--man1dir = $(mandir)/man1
-+man1dir = $(DESTDIR)$(mandir)/man1
- infodir = @infodir@
- includedir = @includedir@
-
-
---- gdb-6.1/sim/common/Make-common.in~sim-install.patch 2003-09-08 18:24:59.000000000 +0100
-+++ gdb-6.1/sim/common/Make-common.in 2004-07-22 17:56:18.947423032 +0100
-@@ -581,14 +581,14 @@
-
- install-common: installdirs
- n=`echo run | sed '$(program_transform_name)'`; \
-- $(INSTALL_PROGRAM) run$(EXEEXT) $(bindir)/$$n$(EXEEXT)
-+ $(INSTALL_PROGRAM) run$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
- n=`echo libsim.a | sed s/libsim.a/lib$(target_alias)-sim.a/`; \
-- $(INSTALL_DATA) libsim.a $(libdir)/$$n ; \
-- ( cd $(libdir) ; $(RANLIB) $$n )
-+ $(INSTALL_DATA) libsim.a $(DESTDIR)$(libdir)/$$n ; \
-+ ( cd $(DESTDIR)$(libdir) ; $(RANLIB) $$n )
-
- installdirs:
-- $(SHELL) $(srcdir)/../../mkinstalldirs $(bindir)
-- $(SHELL) $(srcdir)/../../mkinstalldirs $(libdir)
-+ $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(bindir)
-+ $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(libdir)
-
- check:
- cd ../testsuite && $(MAKE) check RUNTESTFLAGS="$(RUNTESTFLAGS)"
diff --git a/packages/gdb/gdb-cross_6.3.bb b/packages/gdb/gdb-cross_6.3.bb
index 9cc72cca69..5dd5cf5ac5 100644
--- a/packages/gdb/gdb-cross_6.3.bb
+++ b/packages/gdb/gdb-cross_6.3.bb
@@ -5,9 +5,12 @@ DEPENDS = "ncurses-native"
inherit autotools sdk
+PR = "r1"
+
S = "${WORKDIR}/gdb-${PV}"
SRC_URI = "${GNU_MIRROR}/gdb/gdb-${PV}.tar.gz \
- file://sim-install.patch;patch=1"
+ file://sim-install-makefile.patch;patch=1 \
+ file://sim-install-makefile-common.patch;patch=1"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gdb-${PV}"
diff --git a/packages/gdb/gdb-cross_6.6.bb b/packages/gdb/gdb-cross_6.6.bb
index 32076b529e..03d9cda12c 100644
--- a/packages/gdb/gdb-cross_6.6.bb
+++ b/packages/gdb/gdb-cross_6.6.bb
@@ -6,9 +6,11 @@ DEPENDS = "ncurses-native"
inherit autotools sdk
+PR = "r1"
+
S = "${WORKDIR}/gdb-${PV}"
SRC_URI = "${GNU_MIRROR}/gdb/gdb-${PV}.tar.gz \
- file://sim-install.patch;patch=1"
+ file://sim-install-makefile.patch;patch=1"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gdb-${PV}"
diff --git a/packages/genlist/genlist.bb b/packages/genlist/genlist.bb
index 467a5ee7bd..6c8695228b 100644
--- a/packages/genlist/genlist.bb
+++ b/packages/genlist/genlist.bb
@@ -1,14 +1,15 @@
-SECTION = "utility"
DESCRIPTION = "IP Address List Generator"
+SECTION = "utils"
+LICENSE = "GPL"
+PR = "r1"
SRC_URI = "file://genlist.c \
file://Makefile"
DEFAULT_PREFERENCE="-1"
-
S = "${WORKDIR}"
-LICENSE = "GPL"
+
do_compile() {
oe_runmake all
}
diff --git a/packages/geoclue/geoclue_svn.bb b/packages/geoclue/geoclue_svn.bb
index f0d8bc16d8..4237d1ebe6 100644
--- a/packages/geoclue/geoclue_svn.bb
+++ b/packages/geoclue/geoclue_svn.bb
@@ -1,9 +1,10 @@
DESCRIPTION = "GeoClue is a project that provide all kinds of geography information to an application"
HOMEPAGE = "http://live.gnome.org/GeoClue"
-DEPENDS = "gpsd gnome-panel libsoup dbus-glib"
+DEPENDS = "gpsd libsoup dbus-glib"
PV = "0.0+svn${SRCDATE}"
+PR = "r1"
inherit autotools pkgconfig
@@ -11,6 +12,9 @@ SRC_URI = "svn://svn.foinse-project.org/geoclue;module=trunk;proto=http"
S = "${WORKDIR}/trunk"
+
+EXTRA_OECONF = "--disable-panel-applet"
+
do_install_append() {
mkdir -p ${D}/usr/share/
cp -pPr ${D}${STAGING_DATADIR}/* ${D}/usr/share
diff --git a/packages/gettext/gettext-0.14.1/getline.m4.patch b/packages/gettext/gettext-0.14.1/getline.m4.patch
new file mode 100644
index 0000000000..c3f99bb9ae
--- /dev/null
+++ b/packages/gettext/gettext-0.14.1/getline.m4.patch
@@ -0,0 +1,32 @@
+--- /gettext-tools/m4/orig-getline.m4 2003-07-18 18:11:37.000000000 +0300
++++ /gettext-tools/m4/getline.m4 2007-02-03 13:33:41.000000000 +0200
+@@ -42,12 +42,23 @@
+ return 1;
+ len = getline (&line, &siz, in);
+ exit ((len == 4 && line && strcmp (line, "foo\n") == 0) ? 0 : 1);
+- }
+- ], am_cv_func_working_getline=yes dnl The library version works.
+- , am_cv_func_working_getline=no dnl The library version does NOT work.
+- , am_cv_func_working_getline=no dnl We're cross compiling.
+- )])
+- fi
++ }
++ ], am_cv_func_working_getline=yes dnl The library version works.
++ , am_cv_func_working_getline=no dnl The library version does NOT work.
++! , dnl We're cross compiling. Assume ir works on glibc2 systems.
++! [AC_EGREP_CPP([Lucky GNU user],
++! [
++! #include <features.h>
++! #ifdef __GNU_LIBRARY__
++! #if (__GLIBC__ >= 2)
++! Lucky GNU user
++! #endif
++! #endif
++! ],
++! [am_cv_func_working_getline=yes],
++! [am_cv_func_working_getline=no])]
++ )])
++ fi
+
+ if test $am_cv_func_working_getline = no; then
+ dnl We must choose a different name for our function, since on ELF systems
diff --git a/packages/gettext/gettext_0.14.1.bb b/packages/gettext/gettext_0.14.1.bb
index 9e2222aa0e..906aba8d53 100644
--- a/packages/gettext/gettext_0.14.1.bb
+++ b/packages/gettext/gettext_0.14.1.bb
@@ -2,12 +2,13 @@ DESCRIPTION = "The GNU internationalization library."
HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
SECTION = "libs"
LICENSE = "GPL"
-PR = "r3"
+PR = "r4"
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://fixchicken.patch;patch=1;pnum=1 \
+ file://getline.m4.patch;patch=1"
PARALLEL_MAKE = ""
diff --git a/packages/ghettotooth/ghettotooth.bb b/packages/ghettotooth/ghettotooth.bb
index 413d81a819..426a657848 100644
--- a/packages/ghettotooth/ghettotooth.bb
+++ b/packages/ghettotooth/ghettotooth.bb
@@ -1,4 +1,4 @@
-SECTION = "net/misc"
+SECTION = "network/misc"
DESCRIPTION = "Bluetooth scanner"
LICENSE = "GPL"
RDEPENDS = "perl"
diff --git a/packages/gift/gift_0.11.5.bb b/packages/gift/gift_0.11.5.bb
index 6446398311..23ba2378ca 100644
--- a/packages/gift/gift_0.11.5.bb
+++ b/packages/gift/gift_0.11.5.bb
@@ -1,9 +1,10 @@
SECTION = "console/network"
LICENSE = "GPL"
-DEPENDS = "libvorbis libogg"
+DEPENDS = "libvorbis libogg libtool"
DESCRIPTION = "giFT is a framework for bridging multiple \
backend peer-to-peer protocols and the user interface \
associated with them."
+PR="r1"
FILES_gift_append = " ${datadir}/giFT"
SRC_URI = "${SOURCEFORGE_MIRROR}/gift/gift-${PV}.tar.bz2"
diff --git a/packages/gimp/gimp_2.3.10.bb b/packages/gimp/gimp_2.3.10.bb
index eec0be6fd8..a1e875be89 100644
--- a/packages/gimp/gimp_2.3.10.bb
+++ b/packages/gimp/gimp_2.3.10.bb
@@ -11,6 +11,9 @@ SRC_URI = "ftp://ftp.gimp.org/pub/gimp/v2.3/gimp-${PV}.tar.bz2 \
inherit autotools pkgconfig
+FILES_gimp-dbg =+ "${libdir}/gimp/2.0/modules/.debug \
+ ${libdir}/gimp/2.0/plug-ins/.debug"
+
#Don't laugh, this just builds a threaded gimp
EXTRA_OECONF = " --disable-gtktest \
--disable-print \
diff --git a/packages/git/git_1.4.4.2.bb b/packages/git/git_1.4.4.2.bb
index 37f71cfb04..5a22f040f3 100644
--- a/packages/git/git_1.4.4.2.bb
+++ b/packages/git/git_1.4.4.2.bb
@@ -1,3 +1,11 @@
require git.inc
DEPENDS = "openssl curl"
-RDEPENDS = "perl perl-module-file-path"
+RDEPENDS = "perl perl-module-file-path cpio findutils"
+
+PR="r1"
+
+do_install() {
+ oe_runmake install DESTDIR="${D}" bindir="${bindir}" \
+ template_dir="${datadir}/git-core/templates" \
+ GIT_PYTHON_DIR="${datadir}/git-core/python"
+}
diff --git a/packages/gizmod/.mtn2git_empty b/packages/gizmod/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gizmod/.mtn2git_empty
diff --git a/packages/gizmod/files/.mtn2git_empty b/packages/gizmod/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gizmod/files/.mtn2git_empty
diff --git a/packages/gizmod/files/disable-bmp.patch b/packages/gizmod/files/disable-bmp.patch
new file mode 100644
index 0000000000..89dfad3446
--- /dev/null
+++ b/packages/gizmod/files/disable-bmp.patch
@@ -0,0 +1,105 @@
+Index: gizmod-2.3/configure.ac
+===================================================================
+--- gizmod-2.3.orig/configure.ac
++++ gizmod-2.3/configure.ac
+@@ -319,76 +319,6 @@ fi
+
+ ###########################################################################
+ ##
+-## Check whether to build BMP plugin
+-##
+-
+-##################
+-## enabled?
+-########
+-
+-AC_MSG_CHECKING(Whether or not to build BMP plugin)
+-AC_ARG_ENABLE(bmp,
+- [ --enable-bmp build BMP plugin <default = no>],
+- [enable_bmp="$enableval"], enable_bmp=no)
+-AC_MSG_RESULT($enable_bmp)
+-
+-AM_CONDITIONAL(BUILD_EXTERNALPLUGIN_BMP, test x$enable_bmp = xyes)
+-AM_CONDITIONAL(BUILD_PLUGIN_BMPCONTROL, test x$enable_bmp = xyes)
+-
+-##################
+-## can we build it if it's enabled?
+-########
+-
+-if test "$enable_bmp" == "yes"; then
+-
+-BEEP_CFLAGS=""
+-BEEP_LIBS=""
+-
+-#check stuff
+-AM_PATH_GLIB_2_0(2.4.0, ,
+- AC_MSG_ERROR([GTK+ >= 2.4.0 not installed - required for BMP plugin]))
+-AM_PATH_GTK_2_0(2.4.0, ,
+- AC_MSG_ERROR([GTK+ >= 2.4.0 not installed - required for BMP plugin]))
+-
+-dnl check for beep
+-PKG_CHECK_MODULES(BEEP, [ bmp >= 0.9.7], ,
+- AC_MSG_ERROR("You need the BEEP development files to build the BEEP plugin!"))
+-
+-BEEP_PLUGIN_DIR="`$PKG_CONFIG --variable=output_plugin_dir bmp`"
+-BEEP_INPUT_PLUGIN_DIR="`$PKG_CONFIG --variable=input_plugin_dir bmp`"
+-BEEP_OUTPUT_PLUGIN_DIR="`$PKG_CONFIG --variable=output_plugin_dir bmp`"
+-BEEP_GENERAL_PLUGIN_DIR="`$PKG_CONFIG --variable=general_plugin_dir bmp`"
+-BEEP_VISUALIZATION_PLUGIN_DIR="`$PKG_CONFIG --variable=visualization_plugin_dir bmp`"
+-BEEP_EFFECT_PLUGIN_DIR="`$PKG_CONFIG --variable=effect_plugin_dir bmp`"
+-BEEP_DATA_DIR="`$PKG_CONFIG --variable=data_dir bmp`"
+-
+-AC_SUBST(BEEP_PLUGIN_DIR)
+-AC_SUBST(BEEP_INPUT_PLUGIN_DIR)
+-AC_SUBST(BEEP_OUTPUT_PLUGIN_DIR)
+-AC_SUBST(BEEP_GENERAL_PLUGIN_DIR)
+-AC_SUBST(BEEP_VISUALIZATION_PLUGIN_DIR)
+-AC_SUBST(BEEP_EFFECT_PLUGIN_DIR)
+-AC_SUBST(BEEP_DATA_DIR)
+-
+-dnl make BEEP_DATA_DIR a variable in config.h
+-AH_TEMPLATE(BEEP_DATA_DIR, "Path to bmp-touch.config")
+-AC_DEFINE_UNQUOTED(BEEP_DATA_DIR, "$BEEP_DATA_DIR")
+-
+-CPPFLAGS="$CPPFLAGS $BEEP_CFLAGS"
+-
+-AC_CHECK_HEADER(bmp/beepctrl.h, [
+- AC_DEFINE(HAVE_BEEPCTRL_H, 1, [Has bmp/beepctrl.h])
+- ], [
+- AC_MSG_ERROR([Cannot find beepctrl.h!])
+- ])
+-
+-AC_SUBST(BEEP_CFLAGS)
+-AC_SUBST(BEEP_LIBS)
+-
+-fi
+-
+-###########################################################################
+-##
+ ## Check whether to build Sound Visualization plugin
+ ##
+
+@@ -633,9 +563,7 @@ AC_CONFIG_FILES([
+ plugins/soundVisualization/Makefile
+ plugins/cpuUsage/Makefile
+ plugins/x11/Makefile
+- plugins/bmpControl/Makefile
+ plugins/externalPlugins/Makefile
+- plugins/externalPlugins/bmp/Makefile
+ plugins/lirc/Makefile
+ ])
+ AC_OUTPUT
+Index: gizmod-2.3/plugins/Makefile.am
+===================================================================
+--- gizmod-2.3.orig/plugins/Makefile.am
++++ gizmod-2.3/plugins/Makefile.am
+@@ -1 +1 @@
+-SUBDIRS=scriptingPlugins powermate alsaMixer xosd generic externalPlugins soundVisualization cpuUsage x11 bmpControl lirc
++SUBDIRS=scriptingPlugins powermate alsaMixer xosd generic externalPlugins soundVisualization cpuUsage x11 lirc
+Index: gizmod-2.3/plugins/externalPlugins/Makefile.am
+===================================================================
+--- gizmod-2.3.orig/plugins/externalPlugins/Makefile.am
++++ gizmod-2.3/plugins/externalPlugins/Makefile.am
+@@ -1 +1 @@
+-SUBDIRS=bmp
++SUBDIRS=
diff --git a/packages/gizmod/files/disable-xmms.patch b/packages/gizmod/files/disable-xmms.patch
new file mode 100644
index 0000000000..e8aea12b4c
--- /dev/null
+++ b/packages/gizmod/files/disable-xmms.patch
@@ -0,0 +1,113 @@
+Index: gizmod-2.3/configure.ac
+===================================================================
+--- gizmod-2.3.orig/configure.ac
++++ gizmod-2.3/configure.ac
+@@ -393,60 +393,6 @@ fi
+
+ ###########################################################################
+ ##
+-## Check whether to build XMMS plugin
+-##
+-
+-##################
+-## enabled?
+-########
+-
+-AC_MSG_CHECKING(Whether or not to build XMMS plugin)
+-AC_ARG_ENABLE(xmms,
+- [ --enable-xmms build XMMS plugin <default = yes>],
+- [enable_xmms="$enableval"], enable_xmms=yes)
+-AC_MSG_RESULT($enable_xmms)
+-
+-AM_CONDITIONAL(BUILD_EXTERNALPLUGIN_XMMS, test x$enable_xmms = xyes)
+-AM_CONDITIONAL(BUILD_PLUGIN_XMMSCONTROL, test x$enable_xmms = xyes)
+-
+-##################
+-## can we build it if it's enabled?
+-########
+-
+-if test "$enable_xmms" == "yes"; then
+-
+-XMMS_CFLAGS=""
+-XMMS_LIBS=""
+-
+-#check stuff
+-
+-AM_PATH_XMMS(1.2.4,
+- XMMS_CFLAGS=`xmms-config --cflags`
+- CPPFLAGS="$CPPFLAGS $XMMS_CFLAGS"
+- XMMS_LIBS=`xmms-config --libs`
+- ,
+- AC_MSG_ERROR([You must have the XMMS development headers installed to build the XMMS plugin!])
+-)
+-
+-AC_CHECK_HEADER(xmms/xmmsctrl.h, [
+- AC_DEFINE(HAVE_XMMSCTRL_H, 1, [Has xmms/xmmsctrl.h])
+- ], [
+- AC_MSG_ERROR([Cannot find xmmsctrl.h!])
+- ])
+-
+-AC_CHECK_HEADER(xmms/plugin.h, [
+- AC_DEFINE(HAVE_XMMSPLUGIN_H, 1, [Has xmms/xmmsplugin.h])
+- ], [
+- AC_MSG_ERROR([Cannot find xmms/plugin.h!])
+- ])
+-
+-AC_SUBST(XMMS_CFLAGS)
+-AC_SUBST(XMMS_LIBS)
+-
+-fi
+-
+-###########################################################################
+-##
+ ## Check whether to build Sound Visualization plugin
+ ##
+
+@@ -691,10 +637,8 @@ AC_CONFIG_FILES([
+ plugins/soundVisualization/Makefile
+ plugins/cpuUsage/Makefile
+ plugins/x11/Makefile
+- plugins/xmmsControl/Makefile
+ plugins/bmpControl/Makefile
+ plugins/externalPlugins/Makefile
+- plugins/externalPlugins/xmms/Makefile
+ plugins/externalPlugins/bmp/Makefile
+ plugins/lirc/Makefile
+ ])
+@@ -774,22 +718,10 @@ else
+ echo " BMP Control plugin: Disabled"
+ fi
+
+-if test "$enable_xmms" == "yes"; then
+- echo " XMMS Control plugin: Enabled"
+-else
+- echo " XMMS Control plugin: Disabled"
+-fi
+-
+ if test "$enable_bmp" == "yes"; then
+ echo " BMP Visualization plugin: Enabled"
+ else
+ echo " BMP Visualization plugin: Disabled"
+ fi
+
+-if test "$enable_xmms" == "yes"; then
+- echo " XMMS Visualization plugin: Enabled"
+-else
+- echo " XMMS Visualization plugin: Disabled"
+-fi
+-
+ echo
+Index: gizmod-2.3/plugins/Makefile.am
+===================================================================
+--- gizmod-2.3.orig/plugins/Makefile.am
++++ gizmod-2.3/plugins/Makefile.am
+@@ -1 +1 @@
+-SUBDIRS=scriptingPlugins powermate alsaMixer xosd generic externalPlugins soundVisualization cpuUsage x11 xmmsControl bmpControl lirc
++SUBDIRS=scriptingPlugins powermate alsaMixer xosd generic externalPlugins soundVisualization cpuUsage x11 bmpControl lirc
+Index: gizmod-2.3/plugins/externalPlugins/Makefile.am
+===================================================================
+--- gizmod-2.3.orig/plugins/externalPlugins/Makefile.am
++++ gizmod-2.3/plugins/externalPlugins/Makefile.am
+@@ -1 +1 @@
+-SUBDIRS=xmms bmp
++SUBDIRS=bmp
diff --git a/packages/gizmod/files/fix-python-configure.patch b/packages/gizmod/files/fix-python-configure.patch
new file mode 100644
index 0000000000..9b48c9790f
--- /dev/null
+++ b/packages/gizmod/files/fix-python-configure.patch
@@ -0,0 +1,17 @@
+Index: gizmod-2.3/configure.ac
+===================================================================
+--- gizmod-2.3.orig/configure.ac
++++ gizmod-2.3/configure.ac
+@@ -162,11 +162,7 @@ CFLAGS="$PYTHON_INC $CFLAGS"
+ # AC_MSG_ERROR([Cannot find python.h!])
+ # ])
+
+-AC_CHECK_FILE(${py_prefix}/include/python${py_ver}/Python.h, [
+- AC_DEFINE(HAVE_PYTHON_H, 1, [Has Python.h])
+- ], [
+- AC_MSG_ERROR([Cannot find Python.h!])
+- ])
++AC_DEFINE(HAVE_PYTHON_H, 1, [Has Python.h])
+
+ CFLAGS="$OLD_CFLAGS"
+
diff --git a/packages/gizmod/gizmod_2.3.bb b/packages/gizmod/gizmod_2.3.bb
new file mode 100644
index 0000000000..ff9ae25640
--- /dev/null
+++ b/packages/gizmod/gizmod_2.3.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "Gizmo Daemon"
+HOMEPAGE = "http://gizmod.sourceforge.net"
+LICENSE = "GPLv2"
+MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
+SECTION = "console/multimedia"
+DEPENDS = "python virtual/libx11 xf86vidmodeproto alsa-lib"
+SRC_URI = "${SOURCEFORGE_MIRROR}/gizmod/gizmod-${PV}.tar.bz2 \
+ file://disable-xmms.patch;patch=1 \
+ file://fix-python-configure.patch;patch=1 \
+ file://disable-bmp.patch;patch=1"
+
+PR = "r0"
+
+inherit autotools
+
+EXTRA_OECONF = "--disable-xmms --disable-bmp --disable-xosd"
+
+#do_configure_prepend() {
+# sed -i 's/TARGET_SYS/${TARGET_SYS}/' ${S}/configure.ac
+#}
+
+FILES_${PN} += "${datadir}/gizmo/scripts ${datadir}/gizmo/plugins/*.so ${datadir}/gizmo/plugins/*.so.*"
+FILES_${PN}-dev += "${datadir}/gizmo/plugins/*.a ${datadir}/gizmo/plugins/*.la"
+FILES_${PN}-dbg += "${datadir}/gizmo/plugins/.debug" \ No newline at end of file
diff --git a/packages/gkrellm/gkrellm/.mtn2git_empty b/packages/gkrellm/gkrellm/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gkrellm/gkrellm/.mtn2git_empty
diff --git a/packages/gkrellm/gkrellm/destdir.patch b/packages/gkrellm/gkrellm/destdir.patch
new file mode 100644
index 0000000000..3800fb7868
--- /dev/null
+++ b/packages/gkrellm/gkrellm/destdir.patch
@@ -0,0 +1,24 @@
+diff -Naur gkrellm-2.2.7-orig/server/Makefile gkrellm-2.2.7/server/Makefile
+--- gkrellm-2.2.7-orig/server/Makefile 2004-04-12 15:30:48.000000000 +0200
++++ gkrellm-2.2.7/server/Makefile 2007-04-06 12:48:08.000000000 +0200
+@@ -129,7 +129,7 @@
+
+ install:
+ $(INSTALL) -d -m $(INSTALLDIRMODE) $(SINSTALLDIR)
+- $(INSTALL) -c $(STRIP) -m $(BINMODE) gkrellmd $(SINSTALLDIR)/$(PACKAGE_D)
++ $(INSTALL) -c $(STRIP) -m $(BINMODE) gkrellmd $(SINSTALLDIR)
+ $(INSTALL) -d -m $(INCLUDEDIRMODE) $(INCLUDEDIR)/gkrellm2
+ $(INSTALL) -c -m $(INCLUDEMODE) $(GKRELLMD_INCLUDES) $(INCLUDEDIR)/gkrellm2
+ $(INSTALL) -d -m $(MANDIRMODE) $(SMANDIR)
+diff -Naur gkrellm-2.2.7-orig/src/Makefile gkrellm-2.2.7/src/Makefile
+--- gkrellm-2.2.7-orig/src/Makefile 2005-05-09 18:54:03.000000000 +0200
++++ gkrellm-2.2.7/src/Makefile 2007-04-06 12:48:24.000000000 +0200
+@@ -144,7 +144,7 @@
+
+ install:
+ $(INSTALL) -d -m $(INSTALLDIRMODE) $(INSTALLDIR)
+- $(INSTALL) -c $(STRIP) -m $(BINMODE) gkrellm $(INSTALLDIR)/$(PACKAGE)
++ $(INSTALL) -c $(STRIP) -m $(BINMODE) gkrellm $(INSTALLDIR)
+ $(INSTALL) -d -m $(INCLUDEDIRMODE) $(INCLUDEDIR)/gkrellm2
+ $(INSTALL) -c -m $(INCLUDEMODE) $(GKRELLM_INCLUDES) $(INCLUDEDIR)/gkrellm2
+ $(INSTALL) -d -m $(MANDIRMODE) $(MANDIR)
diff --git a/packages/gkrellm/gkrellm_2.2.10.bb b/packages/gkrellm/gkrellm_2.2.10.bb
new file mode 100644
index 0000000000..ca13f4732e
--- /dev/null
+++ b/packages/gkrellm/gkrellm_2.2.10.bb
@@ -0,0 +1,24 @@
+SECTION = "x11/utils"
+DESCRIPTION = "GKrellM is a GTK-based stacked monitor program."
+LICENSE = "GPL"
+DEPENDS = "gtk+ glib-2.0 libsm libice"
+
+SRC_URI = "http://members.dslextreme.com/users/billw/gkrellm/gkrellm-${PV}.tar.bz2 \
+ file://destdir.patch;patch=1"
+
+inherit pkgconfig
+
+EXTRA_OEMAKE = "'glib12=0' 'STRIP=/bin/true'"
+export LINK_FLAGS = "${LDFLAGS}"
+export SMC_LIBS = "-lSM -lICE"
+
+do_install () {
+ oe_runmake 'INSTALLDIR=${D}${bindir}' \
+ 'SINSTALLDIR=${D}${bindir}' \
+ 'MANDIR=${D}${mandir}/man1' \
+ 'SMANDIR=${D}${mandir}/man1' \
+ 'INCLUDEDIR=${D}${includedir}' \
+ 'PKGCONFIGDIR=${D}${libdir}/pkgconfig' \
+ 'LOCALEDIR=${D}${datadir}/locale' \
+ install
+}
diff --git a/packages/gkrellm/gkrellm_2.2.7.bb b/packages/gkrellm/gkrellm_2.2.7.bb
deleted file mode 100644
index 5fd83e6923..0000000000
--- a/packages/gkrellm/gkrellm_2.2.7.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SECTION = "x11/utils"
-DESCRIPTION = "GKrellM is a GTK-based stacked monitor program."
-LICENSE = "GPL"
-DEPENDS = "gtk+ glib-2.0 libsm libice"
-
-SRC_URI = "http://members.dslextreme.com/users/billw/gkrellm/gkrellm-${PV}.tar.bz2"
-
-inherit pkgconfig
-
-EXTRA_OEMAKE = "'glib12=0' 'STRIP=/bin/true'"
-export LINK_FLAGS = "${LDFLAGS}"
-export SMC_LIBS = "-lSM -lICE"
-
-do_install () {
- oe_runmake 'INSTALLDIR=${D}${bindir}' \
- 'SINSTALLDIR=${D}${bindir}' \
- 'MANDIR=${D}${mandir}/man1' \
- 'SMANDIR=${D}${mandir}/man1' \
- 'INCLUDEDIR=${D}${includedir}' \
- 'PKGCONFIGDIR=${D}${libdir}/pkgconfig' \
- 'LOCALEDIR=${D}${datadir}/locale' \
- install
-}
diff --git a/packages/glib-2.0/glib-2.0-2.12.10/.mtn2git_empty b/packages/glib-2.0/glib-2.0-2.12.10/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-2.12.10/.mtn2git_empty
diff --git a/packages/glib-2.0/glib-2.0-2.12.10/configure-libtool.patch b/packages/glib-2.0/glib-2.0-2.12.10/configure-libtool.patch
new file mode 100644
index 0000000000..50ffc628db
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-2.12.10/configure-libtool.patch
@@ -0,0 +1,20 @@
+--- /tmp/configure.in 2007-02-04 12:07:05.000000000 +0100
++++ glib-2.12.9/configure.in 2007-02-04 12:08:04.655251000 +0100
+@@ -1174,7 +1174,7 @@
+ G_MODULE_LDFLAGS=
+ else
+ export SED
+- G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++ G_MODULE_LDFLAGS=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ fi
+ dnl G_MODULE_IMPL= don't reset, so cmd-line can override
+ G_MODULE_NEED_USCORE=0
+@@ -1239,7 +1239,7 @@
+ LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
+ dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
+ echo "void glib_plugin_test(void) { }" > plugin.c
+- ${SHELL} ./libtool --mode=compile ${CC} -shared \
++ ${SHELL} ./$host_alias-libtool --mode=compile ${CC} -shared \
+ -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
+ AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
+ glib_cv_rtldglobal_broken,[
diff --git a/packages/glib-2.0/glib-2.0-2.12.11/.mtn2git_empty b/packages/glib-2.0/glib-2.0-2.12.11/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-2.12.11/.mtn2git_empty
diff --git a/packages/glib-2.0/glib-2.0-2.12.11/configure-libtool.patch b/packages/glib-2.0/glib-2.0-2.12.11/configure-libtool.patch
new file mode 100644
index 0000000000..50ffc628db
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-2.12.11/configure-libtool.patch
@@ -0,0 +1,20 @@
+--- /tmp/configure.in 2007-02-04 12:07:05.000000000 +0100
++++ glib-2.12.9/configure.in 2007-02-04 12:08:04.655251000 +0100
+@@ -1174,7 +1174,7 @@
+ G_MODULE_LDFLAGS=
+ else
+ export SED
+- G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++ G_MODULE_LDFLAGS=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ fi
+ dnl G_MODULE_IMPL= don't reset, so cmd-line can override
+ G_MODULE_NEED_USCORE=0
+@@ -1239,7 +1239,7 @@
+ LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
+ dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
+ echo "void glib_plugin_test(void) { }" > plugin.c
+- ${SHELL} ./libtool --mode=compile ${CC} -shared \
++ ${SHELL} ./$host_alias-libtool --mode=compile ${CC} -shared \
+ -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
+ AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
+ glib_cv_rtldglobal_broken,[
diff --git a/packages/glib-2.0/glib-2.0-2.12.12/.mtn2git_empty b/packages/glib-2.0/glib-2.0-2.12.12/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-2.12.12/.mtn2git_empty
diff --git a/packages/glib-2.0/glib-2.0-2.12.12/configure-libtool.patch b/packages/glib-2.0/glib-2.0-2.12.12/configure-libtool.patch
new file mode 100644
index 0000000000..50ffc628db
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-2.12.12/configure-libtool.patch
@@ -0,0 +1,20 @@
+--- /tmp/configure.in 2007-02-04 12:07:05.000000000 +0100
++++ glib-2.12.9/configure.in 2007-02-04 12:08:04.655251000 +0100
+@@ -1174,7 +1174,7 @@
+ G_MODULE_LDFLAGS=
+ else
+ export SED
+- G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++ G_MODULE_LDFLAGS=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ fi
+ dnl G_MODULE_IMPL= don't reset, so cmd-line can override
+ G_MODULE_NEED_USCORE=0
+@@ -1239,7 +1239,7 @@
+ LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
+ dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
+ echo "void glib_plugin_test(void) { }" > plugin.c
+- ${SHELL} ./libtool --mode=compile ${CC} -shared \
++ ${SHELL} ./$host_alias-libtool --mode=compile ${CC} -shared \
+ -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
+ AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
+ glib_cv_rtldglobal_broken,[
diff --git a/packages/glib-2.0/glib-2.0-2.12.9/.mtn2git_empty b/packages/glib-2.0/glib-2.0-2.12.9/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-2.12.9/.mtn2git_empty
diff --git a/packages/glib-2.0/glib-2.0-2.12.9/configure-libtool.patch b/packages/glib-2.0/glib-2.0-2.12.9/configure-libtool.patch
new file mode 100644
index 0000000000..50ffc628db
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-2.12.9/configure-libtool.patch
@@ -0,0 +1,20 @@
+--- /tmp/configure.in 2007-02-04 12:07:05.000000000 +0100
++++ glib-2.12.9/configure.in 2007-02-04 12:08:04.655251000 +0100
+@@ -1174,7 +1174,7 @@
+ G_MODULE_LDFLAGS=
+ else
+ export SED
+- G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++ G_MODULE_LDFLAGS=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ fi
+ dnl G_MODULE_IMPL= don't reset, so cmd-line can override
+ G_MODULE_NEED_USCORE=0
+@@ -1239,7 +1239,7 @@
+ LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
+ dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
+ echo "void glib_plugin_test(void) { }" > plugin.c
+- ${SHELL} ./libtool --mode=compile ${CC} -shared \
++ ${SHELL} ./$host_alias-libtool --mode=compile ${CC} -shared \
+ -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
+ AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
+ glib_cv_rtldglobal_broken,[
diff --git a/packages/glib-2.0/glib-2.0-native-2.12.4/.mtn2git_empty b/packages/glib-2.0/glib-2.0-native-2.12.4/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-native-2.12.4/.mtn2git_empty
diff --git a/packages/glib-2.0/glib-2.0-native-2.12.4/glib-gettextize-dir.patch b/packages/glib-2.0/glib-2.0-native-2.12.4/glib-gettextize-dir.patch
new file mode 100644
index 0000000000..efe3325578
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-native-2.12.4/glib-gettextize-dir.patch
@@ -0,0 +1,11 @@
+--- glib-2.10.3/glib-gettextize.in.old 2006-06-21 12:46:45.000000000 +0100
++++ glib-2.10.3/glib-gettextize.in 2006-06-21 12:48:14.000000000 +0100
+@@ -49,7 +49,7 @@
+ ;;
+ esac
+
+-gettext_dir=$prefix/share/glib-2.0/gettext
++gettext_dir=@datadir@/glib-2.0/gettext
+
+ while test $# -gt 0; do
+ case "$1" in
diff --git a/packages/glib-2.0/glib-2.0-native_2.12.4.bb b/packages/glib-2.0/glib-2.0-native_2.12.4.bb
new file mode 100644
index 0000000000..065f5bc3e7
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-native_2.12.4.bb
@@ -0,0 +1,49 @@
+DESCRIPTION = "GLib is a general-purpose utility library, \
+which provides many useful data types, macros, \
+type conversions, string utilities, file utilities, a main \
+loop abstraction, and so on. It works on many \
+UNIX-like platforms, Windows, OS/2 and BeOS."
+LICENSE = "LGPL"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS += "gtk-doc-native"
+PR="r1"
+
+EXTRA_OECONF = "--disable-debug"
+
+SRC_URI = "http://download.gnome.org/sources/glib/2.12/glib-${PV}.tar.bz2 \
+ file://glib-gettextize-dir.patch;patch=1 \
+ file://glibconfig-sysdefs.h"
+
+S = "${WORKDIR}/glib-${PV}"
+
+inherit autotools pkgconfig native gettext
+
+acpaths = ""
+do_configure_prepend () {
+ install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
+}
+
+do_stage () {
+ install -m 0755 gobject/glib-mkenums ${STAGING_BINDIR}/
+ install -m 0755 gobject/.libs/glib-genmarshal ${STAGING_BINDIR}/
+ install -m 0755 glib-gettextize ${STAGING_BINDIR}/
+ oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
+ autotools_stage_includes
+ install -d ${STAGING_INCDIR}/glib-2.0/glib
+ install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
+ install -d ${STAGING_DATADIR}/aclocal
+ install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
+ install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
+ install -d ${STAGING_DATADIR}/glib-2.0/gettext/po
+ install -m 0755 mkinstalldirs ${STAGING_DATADIR}/glib-2.0/gettext/
+ install -m 0644 po/Makefile.in.in ${STAGING_DATADIR}/glib-2.0/gettext/po/
+}
+
+do_install () {
+ :
+}
+
diff --git a/packages/glib-2.0/glib-2.0-native_2.6.0.bb b/packages/glib-2.0/glib-2.0-native_2.6.0.bb
deleted file mode 100644
index 354b8c9cc6..0000000000
--- a/packages/glib-2.0/glib-2.0-native_2.6.0.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-DESCRIPTION = "GLib is a general-purpose utility library, \
-which provides many useful data types, macros, \
-type conversions, string utilities, file utilities, a main \
-loop abstraction, and so on. It works on many \
-UNIX-like platforms, Windows, OS/2 and BeOS."
-LICENSE = "LGPL"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "gtk-doc-native"
-PR = "r1"
-
-EXTRA_OECONF = "--disable-debug"
-
-SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/glib-${PV}.tar.bz2 \
- file://glibconfig-sysdefs.h \
- file://configure-libtool.patch;patch=1"
-
-S = "${WORKDIR}/glib-${PV}"
-
-inherit autotools pkgconfig native gettext
-
-acpaths = ""
-do_configure_prepend () {
- install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
-}
-
-do_stage () {
- install -m 0755 gobject/glib-mkenums ${STAGING_BINDIR}/
- install -m 0755 gobject/.libs/glib-genmarshal ${STAGING_BINDIR}/
- install -m 0755 glib-gettextize ${STAGING_BINDIR}/
- oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
- autotools_stage_includes
- install -d ${STAGING_INCDIR}/glib-2.0/glib
- install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
- install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
- install -d ${STAGING_DATADIR}/glib-2.0/gettext/po
- install -m 0755 mkinstalldirs ${STAGING_DATADIR}/glib-2.0/gettext/
- install -m 0644 po/Makefile.in.in ${STAGING_DATADIR}/glib-2.0/gettext/po/
-}
-
-do_install () {
- :
-}
diff --git a/packages/glib-2.0/glib-2.0-native_2.6.1.bb b/packages/glib-2.0/glib-2.0-native_2.6.1.bb
deleted file mode 100644
index 354b8c9cc6..0000000000
--- a/packages/glib-2.0/glib-2.0-native_2.6.1.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-DESCRIPTION = "GLib is a general-purpose utility library, \
-which provides many useful data types, macros, \
-type conversions, string utilities, file utilities, a main \
-loop abstraction, and so on. It works on many \
-UNIX-like platforms, Windows, OS/2 and BeOS."
-LICENSE = "LGPL"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "gtk-doc-native"
-PR = "r1"
-
-EXTRA_OECONF = "--disable-debug"
-
-SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/glib-${PV}.tar.bz2 \
- file://glibconfig-sysdefs.h \
- file://configure-libtool.patch;patch=1"
-
-S = "${WORKDIR}/glib-${PV}"
-
-inherit autotools pkgconfig native gettext
-
-acpaths = ""
-do_configure_prepend () {
- install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
-}
-
-do_stage () {
- install -m 0755 gobject/glib-mkenums ${STAGING_BINDIR}/
- install -m 0755 gobject/.libs/glib-genmarshal ${STAGING_BINDIR}/
- install -m 0755 glib-gettextize ${STAGING_BINDIR}/
- oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
- autotools_stage_includes
- install -d ${STAGING_INCDIR}/glib-2.0/glib
- install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
- install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
- install -d ${STAGING_DATADIR}/glib-2.0/gettext/po
- install -m 0755 mkinstalldirs ${STAGING_DATADIR}/glib-2.0/gettext/
- install -m 0644 po/Makefile.in.in ${STAGING_DATADIR}/glib-2.0/gettext/po/
-}
-
-do_install () {
- :
-}
diff --git a/packages/glib-2.0/glib-2.0-native_2.6.2.bb b/packages/glib-2.0/glib-2.0-native_2.6.2.bb
deleted file mode 100644
index 1ba63f92e2..0000000000
--- a/packages/glib-2.0/glib-2.0-native_2.6.2.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-DESCRIPTION = "GLib is a general-purpose utility library, \
-which provides many useful data types, macros, \
-type conversions, string utilities, file utilities, a main \
-loop abstraction, and so on. It works on many \
-UNIX-like platforms, Windows, OS/2 and BeOS."
-LICENSE = "LGPL"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "gtk-doc-native"
-PR = "r2"
-
-EXTRA_OECONF = "--disable-debug"
-
-SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/glib-${PV}.tar.bz2 \
- file://glib-gettextize-dir.patch;patch=1 \
- file://glibconfig-sysdefs.h \
- file://configure-libtool.patch;patch=1"
-
-S = "${WORKDIR}/glib-${PV}"
-
-inherit autotools pkgconfig native gettext
-
-acpaths = ""
-do_configure_prepend () {
- install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
-}
-
-do_stage () {
- install -m 0755 gobject/glib-mkenums ${STAGING_BINDIR}/
- install -m 0755 gobject/.libs/glib-genmarshal ${STAGING_BINDIR}/
- install -m 0755 glib-gettextize ${STAGING_BINDIR}/
- oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
- autotools_stage_includes
- install -d ${STAGING_INCDIR}/glib-2.0/glib
- install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
- install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
- install -d ${STAGING_DATADIR}/glib-2.0/gettext/po
- install -m 0755 mkinstalldirs ${STAGING_DATADIR}/glib-2.0/gettext/
- install -m 0644 po/Makefile.in.in ${STAGING_DATADIR}/glib-2.0/gettext/po/
-}
-
-do_install () {
- :
-}
diff --git a/packages/glib-2.0/glib-2.0-native_2.6.6.bb b/packages/glib-2.0/glib-2.0-native_2.6.6.bb
new file mode 100644
index 0000000000..0e47fec346
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-native_2.6.6.bb
@@ -0,0 +1,51 @@
+DESCRIPTION = "GLib is a general-purpose utility library, \
+which provides many useful data types, macros, \
+type conversions, string utilities, file utilities, a main \
+loop abstraction, and so on. It works on many \
+UNIX-like platforms, Windows, OS/2 and BeOS."
+LICENSE = "LGPL"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS = "gtk-doc-native"
+PR = "r4"
+
+export PERL_PATH="/usr/bin/env perl"
+EXTRA_OECONF = "--disable-debug"
+
+SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/glib-${PV}.tar.bz2 \
+ file://glib-gettextize-dir.patch;patch=1 \
+ file://glib-mkenums-nowarn.patch;patch=1 \
+ file://glibconfig-sysdefs.h \
+ file://configure-libtool.patch;patch=1"
+
+S = "${WORKDIR}/glib-${PV}"
+
+inherit autotools pkgconfig native gettext
+
+acpaths = ""
+do_configure_prepend () {
+ install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
+}
+
+do_stage () {
+ install -m 0755 gobject/glib-mkenums ${STAGING_BINDIR}/
+ install -m 0755 gobject/.libs/glib-genmarshal ${STAGING_BINDIR}/
+ install -m 0755 glib-gettextize ${STAGING_BINDIR}/
+ oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
+ autotools_stage_includes
+ install -d ${STAGING_INCDIR}/glib-2.0/glib
+ install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
+ install -d ${STAGING_DATADIR}/aclocal
+ install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
+ install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
+ install -d ${STAGING_DATADIR}/glib-2.0/gettext/po
+ install -m 0755 mkinstalldirs ${STAGING_DATADIR}/glib-2.0/gettext/
+ install -m 0644 po/Makefile.in.in ${STAGING_DATADIR}/glib-2.0/gettext/po/
+}
+
+do_install () {
+ :
+}
diff --git a/packages/glib-2.0/glib-2.0_2.12.0.bb b/packages/glib-2.0/glib-2.0_2.12.0.bb
deleted file mode 100644
index 7d666b5903..0000000000
--- a/packages/glib-2.0/glib-2.0_2.12.0.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-DESCRIPTION = "GLib is a general-purpose utility library, \
-which provides many useful data types, macros, \
-type conversions, string utilities, file utilities, a main \
-loop abstraction, and so on. It works on many \
-UNIX-like platforms, Windows, OS/2 and BeOS."
-LICENSE = "LGPL"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS += "glib-2.0-native gtk-doc"
-DEPENDS += "virtual/libiconv virtual/libintl"
-PACKAGES =+ "glib-2.0-utils "
-PR = "r1"
-
-LEAD_SONAME = "libglib-2.0.*"
-FILES_glib-2.0-utils = "${bindir}/*"
-
-EXTRA_OECONF = "--disable-debug"
-
-SRC_URI = "ftp://ftp.gtk.org/pub/glib/2.12/glib-${PV}.tar.bz2 \
- file://glibconfig-sysdefs.h \
- file://configure-libtool.patch;patch=1"
-
-S = "${WORKDIR}/glib-${PV}"
-
-inherit autotools pkgconfig gettext
-
-require glib-2.0.inc
-
-acpaths = ""
-do_configure_prepend () {
- install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
-}
-
-do_stage () {
- oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
- autotools_stage_includes
- install -d ${STAGING_INCDIR}/glib-2.0/glib
- install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
- install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
-}
diff --git a/packages/glib-2.0/glib-2.0_2.12.1.bb b/packages/glib-2.0/glib-2.0_2.12.1.bb
deleted file mode 100644
index 90904d0b54..0000000000
--- a/packages/glib-2.0/glib-2.0_2.12.1.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-DESCRIPTION = "GLib is a general-purpose utility library, \
-which provides many useful data types, macros, \
-type conversions, string utilities, file utilities, a main \
-loop abstraction, and so on. It works on many \
-UNIX-like platforms, Windows, OS/2 and BeOS."
-LICENSE = "LGPL"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS += "glib-2.0-native gtk-doc"
-DEPENDS += "virtual/libiconv virtual/libintl"
-PACKAGES =+ "glib-2.0-utils "
-PR = "r0"
-
-LEAD_SONAME = "libglib-2.0.*"
-FILES_glib-2.0-utils = "${bindir}/*"
-
-EXTRA_OECONF = "--disable-debug"
-
-SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glib/2.12/glib-${PV}.tar.bz2 \
- file://glibconfig-sysdefs.h \
- file://configure-libtool.patch;patch=1"
-
-S = "${WORKDIR}/glib-${PV}"
-
-inherit autotools pkgconfig gettext
-
-require glib-2.0.inc
-
-acpaths = ""
-do_configure_prepend () {
- install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
-}
-
-do_stage () {
- oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
- autotools_stage_includes
- install -d ${STAGING_INCDIR}/glib-2.0/glib
- install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
- install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
-}
diff --git a/packages/glib-2.0/glib-2.0_2.12.10.bb b/packages/glib-2.0/glib-2.0_2.12.10.bb
new file mode 100644
index 0000000000..4d8e59b355
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0_2.12.10.bb
@@ -0,0 +1,6 @@
+require glib.inc
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glib/2.12/glib-${PV}.tar.bz2 \
+ file://glibconfig-sysdefs.h \
+ file://configure-libtool.patch;patch=1"
+
diff --git a/packages/glib-2.0/glib-2.0_2.12.11.bb b/packages/glib-2.0/glib-2.0_2.12.11.bb
new file mode 100644
index 0000000000..4d8e59b355
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0_2.12.11.bb
@@ -0,0 +1,6 @@
+require glib.inc
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glib/2.12/glib-${PV}.tar.bz2 \
+ file://glibconfig-sysdefs.h \
+ file://configure-libtool.patch;patch=1"
+
diff --git a/packages/glib-2.0/glib-2.0_2.12.12.bb b/packages/glib-2.0/glib-2.0_2.12.12.bb
new file mode 100644
index 0000000000..f8eb9e5537
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0_2.12.12.bb
@@ -0,0 +1,8 @@
+require glib.inc
+
+PR = "r0"
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glib/2.12/glib-${PV}.tar.bz2 \
+ file://glibconfig-sysdefs.h \
+ file://configure-libtool.patch;patch=1"
+
diff --git a/packages/glib-2.0/glib-2.0_2.12.3.bb b/packages/glib-2.0/glib-2.0_2.12.3.bb
deleted file mode 100644
index 90904d0b54..0000000000
--- a/packages/glib-2.0/glib-2.0_2.12.3.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-DESCRIPTION = "GLib is a general-purpose utility library, \
-which provides many useful data types, macros, \
-type conversions, string utilities, file utilities, a main \
-loop abstraction, and so on. It works on many \
-UNIX-like platforms, Windows, OS/2 and BeOS."
-LICENSE = "LGPL"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS += "glib-2.0-native gtk-doc"
-DEPENDS += "virtual/libiconv virtual/libintl"
-PACKAGES =+ "glib-2.0-utils "
-PR = "r0"
-
-LEAD_SONAME = "libglib-2.0.*"
-FILES_glib-2.0-utils = "${bindir}/*"
-
-EXTRA_OECONF = "--disable-debug"
-
-SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glib/2.12/glib-${PV}.tar.bz2 \
- file://glibconfig-sysdefs.h \
- file://configure-libtool.patch;patch=1"
-
-S = "${WORKDIR}/glib-${PV}"
-
-inherit autotools pkgconfig gettext
-
-require glib-2.0.inc
-
-acpaths = ""
-do_configure_prepend () {
- install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
-}
-
-do_stage () {
- oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
- autotools_stage_includes
- install -d ${STAGING_INCDIR}/glib-2.0/glib
- install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
- install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
-}
diff --git a/packages/glib-2.0/glib-2.0_2.12.9.bb b/packages/glib-2.0/glib-2.0_2.12.9.bb
new file mode 100644
index 0000000000..4d8e59b355
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0_2.12.9.bb
@@ -0,0 +1,6 @@
+require glib.inc
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glib/2.12/glib-${PV}.tar.bz2 \
+ file://glibconfig-sysdefs.h \
+ file://configure-libtool.patch;patch=1"
+
diff --git a/packages/glib-2.0/glib-2.0_2.4.5.bb b/packages/glib-2.0/glib-2.0_2.4.5.bb
deleted file mode 100644
index a1a6012398..0000000000
--- a/packages/glib-2.0/glib-2.0_2.4.5.bb
+++ /dev/null
@@ -1,117 +0,0 @@
-LICENSE = "LGPL"
-DESCRIPTION = "GLib is a general-purpose utility library, \
-which provides many useful data types, macros, \
-type conversions, string utilities, file utilities, a main \
-loop abstraction, and so on. It works on many \
-UNIX-like platforms, Windows, OS/2 and BeOS."
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "glib-2.0-native"
-DEPENDS += "virtual/libiconv virtual/libintl"
-PACKAGES =+ "glib-2.0-utils "
-
-LEAD_SONAME = "libglib-2.0.*"
-FILES_glib-2.0-utils = "${bindir}/*"
-
-# Add some files to glib-2.0 dev that normally don't get pulled in
-
-FILES_${PN}-dev += "${libdir}/glib-2.0/include/glibconfig.h \
- ${datadir}/glib-2.0/gettext/po/Makefile.in.in"
-
-EXTRA_OECONF = "--disable-debug"
-
-SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.4/glib-${PV}.tar.bz2 \
- file://gtk-doc.patch;patch=1 \
- file://glibconfig-sysdefs.h \
- file://configure-libtool.patch;patch=1"
-
-S = "${WORKDIR}/glib-${PV}"
-PR = "r1"
-
-inherit autotools pkgconfig gettext
-
-require glib-2.0.inc
-
-acpaths = ""
-do_configure_prepend () {
- install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
-}
-
-do_stage () {
- oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
- install -d ${STAGING_INCDIR}/glib-2.0/glib
- install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
- install -m 0644 ${S}/glib/glib-object.h ${STAGING_INCDIR}/glib-2.0/glib-object.h
- install -m 0644 ${S}/glib/glib.h ${STAGING_INCDIR}/glib-2.0/glib.h
- install -m 0644 ${S}/gmodule/gmodule.h ${STAGING_INCDIR}/glib-2.0/gmodule.h
- install -m 0644 ${S}/glib/galloca.h ${STAGING_INCDIR}/glib-2.0/glib/galloca.h
- install -m 0644 ${S}/glib/gatomic.h ${STAGING_INCDIR}/glib-2.0/glib/gatomic.h
- install -m 0644 ${S}/glib/garray.h ${STAGING_INCDIR}/glib-2.0/glib/garray.h
- install -m 0644 ${S}/glib/gasyncqueue.h ${STAGING_INCDIR}/glib-2.0/glib/gasyncqueue.h
- install -m 0644 ${S}/glib/gbacktrace.h ${STAGING_INCDIR}/glib-2.0/glib/gbacktrace.h
- install -m 0644 ${S}/glib/gcache.h ${STAGING_INCDIR}/glib-2.0/glib/gcache.h
- install -m 0644 ${S}/glib/gcompletion.h ${STAGING_INCDIR}/glib-2.0/glib/gcompletion.h
- install -m 0644 ${S}/glib/gconvert.h ${STAGING_INCDIR}/glib-2.0/glib/gconvert.h
- install -m 0644 ${S}/glib/gdataset.h ${STAGING_INCDIR}/glib-2.0/glib/gdataset.h
- install -m 0644 ${S}/glib/gdate.h ${STAGING_INCDIR}/glib-2.0/glib/gdate.h
- install -m 0644 ${S}/glib/gdir.h ${STAGING_INCDIR}/glib-2.0/glib/gdir.h
- install -m 0644 ${S}/glib/gerror.h ${STAGING_INCDIR}/glib-2.0/glib/gerror.h
- install -m 0644 ${S}/glib/gfileutils.h ${STAGING_INCDIR}/glib-2.0/glib/gfileutils.h
- install -m 0644 ${S}/glib/ghash.h ${STAGING_INCDIR}/glib-2.0/glib/ghash.h
- install -m 0644 ${S}/glib/ghook.h ${STAGING_INCDIR}/glib-2.0/glib/ghook.h
- install -m 0644 ${S}/glib/giochannel.h ${STAGING_INCDIR}/glib-2.0/glib/giochannel.h
- install -m 0644 ${S}/glib/glist.h ${STAGING_INCDIR}/glib-2.0/glib/glist.h
- install -m 0644 ${S}/glib/gmacros.h ${STAGING_INCDIR}/glib-2.0/glib/gmacros.h
- install -m 0644 ${S}/glib/gmain.h ${STAGING_INCDIR}/glib-2.0/glib/gmain.h
- install -m 0644 ${S}/glib/gmarkup.h ${STAGING_INCDIR}/glib-2.0/glib/gmarkup.h
- install -m 0644 ${S}/glib/gmem.h ${STAGING_INCDIR}/glib-2.0/glib/gmem.h
- install -m 0644 ${S}/glib/gmessages.h ${STAGING_INCDIR}/glib-2.0/glib/gmessages.h
- install -m 0644 ${S}/glib/gnode.h ${STAGING_INCDIR}/glib-2.0/glib/gnode.h
- install -m 0644 ${S}/glib/gpattern.h ${STAGING_INCDIR}/glib-2.0/glib/gpattern.h
- install -m 0644 ${S}/glib/gprimes.h ${STAGING_INCDIR}/glib-2.0/glib/gprimes.h
- install -m 0644 ${S}/glib/gqsort.h ${STAGING_INCDIR}/glib-2.0/glib/gqsort.h
- install -m 0644 ${S}/glib/gquark.h ${STAGING_INCDIR}/glib-2.0/glib/gquark.h
- install -m 0644 ${S}/glib/gqueue.h ${STAGING_INCDIR}/glib-2.0/glib/gqueue.h
- install -m 0644 ${S}/glib/grand.h ${STAGING_INCDIR}/glib-2.0/glib/grand.h
- install -m 0644 ${S}/glib/grel.h ${STAGING_INCDIR}/glib-2.0/glib/grel.h
- install -m 0644 ${S}/glib/gscanner.h ${STAGING_INCDIR}/glib-2.0/glib/gscanner.h
- install -m 0644 ${S}/glib/gshell.h ${STAGING_INCDIR}/glib-2.0/glib/gshell.h
- install -m 0644 ${S}/glib/gslist.h ${STAGING_INCDIR}/glib-2.0/glib/gslist.h
- install -m 0644 ${S}/glib/gspawn.h ${STAGING_INCDIR}/glib-2.0/glib/gspawn.h
- install -m 0644 ${S}/glib/gstrfuncs.h ${STAGING_INCDIR}/glib-2.0/glib/gstrfuncs.h
- install -m 0644 ${S}/glib/gstring.h ${STAGING_INCDIR}/glib-2.0/glib/gstring.h
- install -m 0644 ${S}/glib/gthread.h ${STAGING_INCDIR}/glib-2.0/glib/gthread.h
- install -m 0644 ${S}/glib/gthreadpool.h ${STAGING_INCDIR}/glib-2.0/glib/gthreadpool.h
- install -m 0644 ${S}/glib/gtimer.h ${STAGING_INCDIR}/glib-2.0/glib/gtimer.h
- install -m 0644 ${S}/glib/gtree.h ${STAGING_INCDIR}/glib-2.0/glib/gtree.h
- install -m 0644 ${S}/glib/gtypes.h ${STAGING_INCDIR}/glib-2.0/glib/gtypes.h
- install -m 0644 ${S}/glib/gunicode.h ${STAGING_INCDIR}/glib-2.0/glib/gunicode.h
- install -m 0644 ${S}/glib/gutils.h ${STAGING_INCDIR}/glib-2.0/glib/gutils.h
- install -m 0644 ${S}/glib/gwin32.h ${STAGING_INCDIR}/glib-2.0/glib/gwin32.h
- install -m 0644 ${S}/glib/gprintf.h ${STAGING_INCDIR}/glib-2.0/glib/gprintf.h
- install -m 0644 ${S}/glib/gi18n.h ${STAGING_INCDIR}/glib-2.0/glib/gi18n.h
- install -d ${STAGING_INCDIR}/glib-2.0/gobject
- install -m 0644 ${S}/gobject/gboxed.h ${STAGING_INCDIR}/glib-2.0/gobject/gboxed.h
- install -m 0644 ${S}/gobject/gclosure.h ${STAGING_INCDIR}/glib-2.0/gobject/gclosure.h
- install -m 0644 ${S}/gobject/genums.h ${STAGING_INCDIR}/glib-2.0/gobject/genums.h
- install -m 0644 ${S}/gobject/gobject.h ${STAGING_INCDIR}/glib-2.0/gobject/gobject.h
- install -m 0644 ${S}/gobject/gparam.h ${STAGING_INCDIR}/glib-2.0/gobject/gparam.h
- install -m 0644 ${S}/gobject/gparamspecs.h ${STAGING_INCDIR}/glib-2.0/gobject/gparamspecs.h
- install -m 0644 ${S}/gobject/gsignal.h ${STAGING_INCDIR}/glib-2.0/gobject/gsignal.h
- install -m 0644 ${S}/gobject/gsourceclosure.h ${STAGING_INCDIR}/glib-2.0/gobject/gsourceclosure.h
- install -m 0644 ${S}/gobject/gtype.h ${STAGING_INCDIR}/glib-2.0/gobject/gtype.h
- install -m 0644 ${S}/gobject/gtypemodule.h ${STAGING_INCDIR}/glib-2.0/gobject/gtypemodule.h
- install -m 0644 ${S}/gobject/gtypeplugin.h ${STAGING_INCDIR}/glib-2.0/gobject/gtypeplugin.h
- install -m 0644 ${S}/gobject/gvalue.h ${STAGING_INCDIR}/glib-2.0/gobject/gvalue.h
- install -m 0644 ${S}/gobject/gvaluearray.h ${STAGING_INCDIR}/glib-2.0/gobject/gvaluearray.h
- install -m 0644 ${S}/gobject/gvaluecollector.h ${STAGING_INCDIR}/glib-2.0/gobject/gvaluecollector.h
- install -m 0644 ${S}/gobject/gvaluetypes.h ${STAGING_INCDIR}/glib-2.0/gobject/gvaluetypes.h
- install -m 0644 ${S}/gobject/gobjectnotifyqueue.c ${STAGING_INCDIR}/glib-2.0/gobject/gobjectnotifyqueue.c
- install -m 0644 ${S}/gobject/gmarshal.h ${STAGING_INCDIR}/glib-2.0/gobject/gmarshal.h
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
- install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
-}
diff --git a/packages/glib-2.0/glib-2.0_2.6.0.bb b/packages/glib-2.0/glib-2.0_2.6.0.bb
deleted file mode 100644
index e59d9cc282..0000000000
--- a/packages/glib-2.0/glib-2.0_2.6.0.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-DESCRIPTION = "GLib is a general-purpose utility library, \
-which provides many useful data types, macros, \
-type conversions, string utilities, file utilities, a main \
-loop abstraction, and so on. It works on many \
-UNIX-like platforms, Windows, OS/2 and BeOS."
-SECTION = "libs"
-LICENSE = "LGPL"
-PRIORITY = "optional"
-DEPENDS += "glib-2.0-native gtk-doc"
-DEPENDS += "virtual/libiconv virtual/libintl"
-PACKAGES =+ "glib-2.0-utils "
-PR = "r1"
-
-LEAD_SONAME = "libglib-2.0.*"
-FILES_glib-2.0-utils = "${bindir}/*"
-
-# Add some files to glib-2.0 dev that normally don't get pulled in
-
-FILES_${PN}-dev += "${libdir}/glib-2.0/include/glibconfig.h \
- ${datadir}/glib-2.0/gettext/po/Makefile.in.in"
-
-EXTRA_OECONF = "--disable-debug"
-
-SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/glib-${PV}.tar.bz2 \
- file://glibinclude.patch;patch=1;pnum=2 \
- file://glibconfig-sysdefs.h \
- file://configure-libtool.patch;patch=1"
-
-S = "${WORKDIR}/glib-${PV}"
-
-inherit autotools pkgconfig gettext
-
-require glib-2.0.inc
-
-acpaths = ""
-do_configure_prepend () {
- install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
-}
-
-do_stage () {
- oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
- autotools_stage_includes
- install -d ${STAGING_INCDIR}/glib-2.0/glib
- install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
- install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
-}
diff --git a/packages/glib-2.0/glib-2.0_2.6.2.bb b/packages/glib-2.0/glib-2.0_2.6.2.bb
deleted file mode 100644
index 682df4dbbb..0000000000
--- a/packages/glib-2.0/glib-2.0_2.6.2.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-DESCRIPTION = "GLib is a general-purpose utility library, \
-which provides many useful data types, macros, \
-type conversions, string utilities, file utilities, a main \
-loop abstraction, and so on. It works on many \
-UNIX-like platforms, Windows, OS/2 and BeOS."
-LICENSE = "LGPL"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS += "glib-2.0-native gtk-doc"
-DEPENDS += "virtual/libiconv virtual/libintl"
-PACKAGES =+ "glib-2.0-utils "
-PR = "r1"
-
-LEAD_SONAME = "libglib-2.0.*"
-FILES_glib-2.0-utils = "${bindir}/*"
-
-# Add some files to glib-2.0 dev that normally don't get pulled in
-
-FILES_${PN}-dev += "${libdir}/glib-2.0/include/glibconfig.h \
- ${datadir}/glib-2.0/gettext/po/Makefile.in.in"
-
-EXTRA_OECONF = "--disable-debug"
-
-SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/glib-${PV}.tar.bz2 \
- file://glibinclude.patch;patch=1;pnum=2 \
- file://glibconfig-sysdefs.h \
- file://configure-libtool.patch;patch=1"
-
-S = "${WORKDIR}/glib-${PV}"
-
-inherit autotools pkgconfig gettext
-
-require glib-2.0.inc
-
-acpaths = ""
-do_configure_prepend () {
- install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
-}
-
-do_stage () {
- oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
- autotools_stage_includes
- install -d ${STAGING_INCDIR}/glib-2.0/glib
- install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
- install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
-}
diff --git a/packages/glib-2.0/glib-2.0_2.6.3.bb b/packages/glib-2.0/glib-2.0_2.6.3.bb
deleted file mode 100644
index 682df4dbbb..0000000000
--- a/packages/glib-2.0/glib-2.0_2.6.3.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-DESCRIPTION = "GLib is a general-purpose utility library, \
-which provides many useful data types, macros, \
-type conversions, string utilities, file utilities, a main \
-loop abstraction, and so on. It works on many \
-UNIX-like platforms, Windows, OS/2 and BeOS."
-LICENSE = "LGPL"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS += "glib-2.0-native gtk-doc"
-DEPENDS += "virtual/libiconv virtual/libintl"
-PACKAGES =+ "glib-2.0-utils "
-PR = "r1"
-
-LEAD_SONAME = "libglib-2.0.*"
-FILES_glib-2.0-utils = "${bindir}/*"
-
-# Add some files to glib-2.0 dev that normally don't get pulled in
-
-FILES_${PN}-dev += "${libdir}/glib-2.0/include/glibconfig.h \
- ${datadir}/glib-2.0/gettext/po/Makefile.in.in"
-
-EXTRA_OECONF = "--disable-debug"
-
-SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/glib-${PV}.tar.bz2 \
- file://glibinclude.patch;patch=1;pnum=2 \
- file://glibconfig-sysdefs.h \
- file://configure-libtool.patch;patch=1"
-
-S = "${WORKDIR}/glib-${PV}"
-
-inherit autotools pkgconfig gettext
-
-require glib-2.0.inc
-
-acpaths = ""
-do_configure_prepend () {
- install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
-}
-
-do_stage () {
- oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
- autotools_stage_includes
- install -d ${STAGING_INCDIR}/glib-2.0/glib
- install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
- install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
-}
diff --git a/packages/glib-2.0/glib-2.0_2.6.1.bb b/packages/glib-2.0/glib-2.0_2.6.6.bb
index 682df4dbbb..682df4dbbb 100644
--- a/packages/glib-2.0/glib-2.0_2.6.1.bb
+++ b/packages/glib-2.0/glib-2.0_2.6.6.bb
diff --git a/packages/glib-2.0/glib-2.0_2.8.1.bb b/packages/glib-2.0/glib-2.0_2.8.1.bb
deleted file mode 100644
index 218cb53c46..0000000000
--- a/packages/glib-2.0/glib-2.0_2.8.1.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-DESCRIPTION = "GLib is a general-purpose utility library, \
-which provides many useful data types, macros, \
-type conversions, string utilities, file utilities, a main \
-loop abstraction, and so on. It works on many \
-UNIX-like platforms, Windows, OS/2 and BeOS."
-LICENSE = "LGPL"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS += "glib-2.0-native gtk-doc"
-DEPENDS += "virtual/libiconv virtual/libintl"
-PACKAGES =+ "glib-2.0-utils "
-PR = "r1"
-
-LEAD_SONAME = "libglib-2.0.*"
-FILES_glib-2.0-utils = "${bindir}/*"
-
-# Add some files to glib-2.0 dev that normally don't get pulled in
-
-FILES_${PN}-dev += "${libdir}/glib-2.0/include/glibconfig.h \
- ${datadir}/glib-2.0/gettext/po/Makefile.in.in"
-
-EXTRA_OECONF = "--disable-debug"
-
-SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.8/glib-${PV}.tar.bz2 \
- file://glibconfig-sysdefs.h \
- file://configure-libtool.patch;patch=1"
-
-S = "${WORKDIR}/glib-${PV}"
-
-inherit autotools pkgconfig gettext
-
-require glib-2.0.inc
-
-acpaths = ""
-do_configure_prepend () {
- install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
-}
-
-do_stage () {
- oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
- autotools_stage_includes
- install -d ${STAGING_INCDIR}/glib-2.0/glib
- install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
- install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
-}
diff --git a/packages/glib-2.0/glib-2.0_2.8.2.bb b/packages/glib-2.0/glib-2.0_2.8.2.bb
deleted file mode 100644
index d26f248447..0000000000
--- a/packages/glib-2.0/glib-2.0_2.8.2.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-DESCRIPTION = "GLib is a general-purpose utility library, \
-which provides many useful data types, macros, \
-type conversions, string utilities, file utilities, a main \
-loop abstraction, and so on. It works on many \
-UNIX-like platforms, Windows, OS/2 and BeOS."
-LICENSE = "LGPL"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS += "glib-2.0-native gtk-doc"
-DEPENDS += "virtual/libiconv virtual/libintl"
-PACKAGES =+ "glib-2.0-utils "
-PR = "r3"
-
-LEAD_SONAME = "libglib-2.0.*"
-FILES_glib-2.0-utils = "${bindir}/*"
-
-# Add some files to glib-2.0 dev that normally don't get pulled in
-
-FILES_${PN}-dev += "${libdir}/glib-2.0/include/glibconfig.h \
- ${datadir}/glib-2.0/gettext/po/Makefile.in.in"
-
-EXTRA_OECONF = "--disable-debug"
-
-SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.8/glib-${PV}.tar.bz2 \
- file://glibconfig-sysdefs.h \
- file://configure-libtool.patch;patch=1"
-
-S = "${WORKDIR}/glib-${PV}"
-
-inherit autotools pkgconfig gettext
-
-require glib-2.0.inc
-
-acpaths = ""
-do_configure_prepend () {
- install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
-}
-
-do_stage () {
- oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
- autotools_stage_includes
- install -d ${STAGING_INCDIR}/glib-2.0/glib
- install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
- install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
-}
diff --git a/packages/glib-2.0/glib-2.0_2.8.4.bb b/packages/glib-2.0/glib-2.0_2.8.4.bb
deleted file mode 100644
index c11e8bf887..0000000000
--- a/packages/glib-2.0/glib-2.0_2.8.4.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-DESCRIPTION = "GLib is a general-purpose utility library, \
-which provides many useful data types, macros, \
-type conversions, string utilities, file utilities, a main \
-loop abstraction, and so on. It works on many \
-UNIX-like platforms, Windows, OS/2 and BeOS."
-LICENSE = "LGPL"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS += "glib-2.0-native gtk-doc"
-DEPENDS += "virtual/libiconv virtual/libintl"
-PACKAGES =+ "glib-2.0-utils "
-PR = "r2"
-
-LEAD_SONAME = "libglib-2.0.*"
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-dev += "${libdir}/glib-2.0/include ${datadir}/glib-2.0/gettext \
- ${libdir}/glib-2.0/include/glibconfig.h"
-FILES_glib-2.0-utils = "${bindir}/*"
-
-EXTRA_OECONF = "--disable-debug"
-
-SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.8/glib-${PV}.tar.bz2 \
- file://glibconfig-sysdefs.h \
- file://configure-libtool.patch;patch=1"
-
-S = "${WORKDIR}/glib-${PV}"
-
-inherit autotools pkgconfig gettext
-
-require glib-2.0.inc
-
-acpaths = ""
-do_configure_prepend () {
- install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
-}
-
-do_stage () {
- autotools_stage_all
- install -d ${STAGING_INCDIR}/glib-2.0/glib
- install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
- install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
-}
diff --git a/packages/glib-2.0/glib.inc b/packages/glib-2.0/glib.inc
index 6a33291d52..6b384ad6c7 100644
--- a/packages/glib-2.0/glib.inc
+++ b/packages/glib-2.0/glib.inc
@@ -10,10 +10,15 @@ DEPENDS += "glib-2.0-native gtk-doc"
DEPENDS += "virtual/libiconv virtual/libintl"
PACKAGES =+ "glib-2.0-utils "
+PR = "r1"
+
LEAD_SONAME = "libglib-2.0.*"
FILES_glib-2.0-utils = "${bindir}/*"
-EXTRA_OECONF = "--disable-debug"
+EXTRA_OECONF = "--disable-debug "
+
+# Add and entry for your favourite arch if your (g)libc has a sane printf
+EXTRA_OECONF_append_glibc_arm = " --enable-included-printf=no "
S = "${WORKDIR}/glib-${PV}"
diff --git a/packages/glibc/files/ppc-ld-nofpu-20070104.patch b/packages/glibc/files/ppc-ld-nofpu-20070104.patch
new file mode 100644
index 0000000000..d5b1d31774
--- /dev/null
+++ b/packages/glibc/files/ppc-ld-nofpu-20070104.patch
@@ -0,0 +1,190 @@
+2007-01-12 Steven Munroe <sjmunroe@us.ibm.com>
+ Joe Kerian <jkerian@us.us.ibm.com>
+
+ [BZ #2749]
+ * sysdeps/ieee754/ldbl-128ibm/s_copysignl.c:
+ Include <math_ldbl_opt.h>.
+ Remove weak_alias. Use long_double_symbol macro.
+ (__copysignl): Use signbit() for comparison.
+ * sysdeps/ieee754/ldbl-128ibm/s_fabsl.c: Correct parms for
+ SET_LDOUBLE_WORDS64.
+
+ [BZ #2423, #2749]
+ * sysdeps/ieee754/ldbl-128ibm/s_ceill.c: Don't include <fenv_libc.h>.
+ (__ceill): Remove calls to fegetround(), fesetround().
+ * sysdeps/ieee754/ldbl-128ibm/s_floorl.c: Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/s_roundl.c: Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/s_truncl.c: Likewise.
+
+diff -urN libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_ceill.c libc24/sysdeps/ieee754/ldbl-128ibm/s_ceill.c
+--- libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_ceill.c 2006-03-16 05:46:37.000000000 -0600
++++ libc24/sysdeps/ieee754/ldbl-128ibm/s_ceill.c 2007-01-11 10:30:12.856890432 -0600
+@@ -19,7 +19,6 @@
+ 02111-1307 USA. */
+
+ #include <math.h>
+-#include <fenv_libc.h>
+ #include <math_ldbl_opt.h>
+ #include <float.h>
+ #include <ieee754.h>
+@@ -44,11 +43,9 @@
+ __builtin_inf ()), 1))
+ {
+ double orig_xh;
+- int save_round = fegetround ();
+
+ /* Long double arithmetic, including the canonicalisation below,
+ only works in round-to-nearest mode. */
+- fesetround (FE_TONEAREST);
+
+ /* Convert the high double to integer. */
+ orig_xh = xh;
+@@ -81,8 +78,6 @@
+ /* Ensure we return -0 rather than +0 when appropriate. */
+ if (orig_xh < 0.0)
+ xh = -__builtin_fabs (xh);
+-
+- fesetround (save_round);
+ }
+
+ return ldbl_pack (xh, xl);
+diff -urN libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c libc24/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c
+--- libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c 2006-01-27 18:07:25.000000000 -0600
++++ libc24/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c 2007-01-11 10:30:12.857890280 -0600
+@@ -25,6 +25,7 @@
+
+ #include "math.h"
+ #include "math_private.h"
++#include <math_ldbl_opt.h>
+
+ #ifdef __STDC__
+ long double __copysignl(long double x, long double y)
+@@ -33,13 +34,13 @@
+ long double x,y;
+ #endif
+ {
+- if (y < 0.0)
+- {
+- if (x >= 0.0)
+- x = -x;
+- }
+- else if (x < 0.0)
++ if( signbit(x) != signbit(y) )
+ x = -x;
+ return x;
+ }
+-weak_alias (__copysignl, copysignl)
++
++#ifdef IS_IN_libm
++long_double_symbol (libm, __copysignl, copysignl);
++#else
++long_double_symbol (libc, __copysignl, copysignl);
++#endif
+diff -urN libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c libc24/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c
+--- libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c 2006-01-27 18:07:25.000000000 -0600
++++ libc24/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c 2007-01-11 10:30:12.857890280 -0600
+@@ -37,7 +37,7 @@
+ GET_LDOUBLE_WORDS64(hx,lx,x);
+ lx = lx ^ ( hx & 0x8000000000000000LL );
+ hx = hx & 0x7fffffffffffffffLL;
+- SET_LDOUBLE_WORDS64(hx,lx,x);
++ SET_LDOUBLE_WORDS64(x,hx,lx);
+ return x;
+ }
+ long_double_symbol (libm, __fabsl, fabsl);
+diff -urN libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_floorl.c libc24/sysdeps/ieee754/ldbl-128ibm/s_floorl.c
+--- libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_floorl.c 2006-03-16 05:46:37.000000000 -0600
++++ libc24/sysdeps/ieee754/ldbl-128ibm/s_floorl.c 2007-01-11 10:30:12.858890128 -0600
+@@ -19,7 +19,6 @@
+ 02111-1307 USA. */
+
+ #include <math.h>
+-#include <fenv_libc.h>
+ #include <math_ldbl_opt.h>
+ #include <float.h>
+ #include <ieee754.h>
+@@ -43,11 +42,8 @@
+ && __builtin_isless (__builtin_fabs (xh),
+ __builtin_inf ()), 1))
+ {
+- int save_round = fegetround ();
+-
+ /* Long double arithmetic, including the canonicalisation below,
+ only works in round-to-nearest mode. */
+- fesetround (FE_TONEAREST);
+
+ /* Convert the high double to integer. */
+ hi = ldbl_nearbyint (xh);
+@@ -75,8 +71,6 @@
+ xh = hi;
+ xl = lo;
+ ldbl_canonicalize (&xh, &xl);
+-
+- fesetround (save_round);
+ }
+
+ return ldbl_pack (xh, xl);
+diff -urN libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_roundl.c libc24/sysdeps/ieee754/ldbl-128ibm/s_roundl.c
+--- libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_roundl.c 2006-03-16 05:46:37.000000000 -0600
++++ libc24/sysdeps/ieee754/ldbl-128ibm/s_roundl.c 2007-01-11 10:30:12.859889976 -0600
+@@ -22,7 +22,6 @@
+ when it's coded in C. */
+
+ #include <math.h>
+-#include <fenv_libc.h>
+ #include <math_ldbl_opt.h>
+ #include <float.h>
+ #include <ieee754.h>
+@@ -47,11 +46,9 @@
+ __builtin_inf ()), 1))
+ {
+ double orig_xh;
+- int save_round = fegetround ();
+
+ /* Long double arithmetic, including the canonicalisation below,
+ only works in round-to-nearest mode. */
+- fesetround (FE_TONEAREST);
+
+ /* Convert the high double to integer. */
+ orig_xh = xh;
+@@ -88,8 +85,6 @@
+ xh = hi;
+ xl = lo;
+ ldbl_canonicalize (&xh, &xl);
+-
+- fesetround (save_round);
+ }
+
+ return ldbl_pack (xh, xl);
+diff -urN libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_truncl.c libc24/sysdeps/ieee754/ldbl-128ibm/s_truncl.c
+--- libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_truncl.c 2006-03-16 05:46:37.000000000 -0600
++++ libc24/sysdeps/ieee754/ldbl-128ibm/s_truncl.c 2007-01-11 10:30:12.860889824 -0600
+@@ -22,7 +22,6 @@
+ when it's coded in C. */
+
+ #include <math.h>
+-#include <fenv_libc.h>
+ #include <math_ldbl_opt.h>
+ #include <float.h>
+ #include <ieee754.h>
+@@ -47,11 +46,9 @@
+ __builtin_inf ()), 1))
+ {
+ double orig_xh;
+- int save_round = fegetround ();
+
+ /* Long double arithmetic, including the canonicalisation below,
+ only works in round-to-nearest mode. */
+- fesetround (FE_TONEAREST);
+
+ /* Convert the high double to integer. */
+ orig_xh = xh;
+@@ -92,8 +89,6 @@
+ /* Ensure we return -0 rather than +0 when appropriate. */
+ if (orig_xh < 0.0)
+ xh = -__builtin_fabs (xh);
+-
+- fesetround (save_round);
+ }
+
+ return ldbl_pack (xh, xl);
diff --git a/packages/glibc/files/ppc-ports-ld-nofpu-20070114.patch b/packages/glibc/files/ppc-ports-ld-nofpu-20070114.patch
new file mode 100644
index 0000000000..b4d99592f6
--- /dev/null
+++ b/packages/glibc/files/ppc-ports-ld-nofpu-20070114.patch
@@ -0,0 +1,38 @@
+2007-01-14 Steven Munroe <sjmunroe@us.ibm.com>
+
+ [BZ #2749]
+ * sysdeps/powerpc/nofpu/fenv_libc.h: New file.
+
+diff -urN dummy-libc/ports-cvstip-20070104/sysdeps/powerpc/nofpu/fenv_libc.h libc25/ports/sysdeps/powerpc/nofpu/fenv_libc.h
+--- dummy-libc/ports-cvstip-20070104/sysdeps/powerpc/nofpu/fenv_libc.h Wed Dec 31 18:00:00 1969
++++ libc25/ports/sysdeps/powerpc/nofpu/fenv_libc.h Thu Jan 11 11:00:53 2007
+@@ -0,0 +1,29 @@
++/* Internal libc stuff for floating point environment routines.
++ Copyright (C) 2007 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ 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.
++
++ 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, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _FENV_LIBC_H
++#define _FENV_LIBC_H 1
++
++/* fenv_libc.h is used in libm implementations of ldbl-128ibm. So we
++ need this version in the soft-fp to at minimum include fenv.h to
++ get the fegetround definition. */
++
++#include <fenv.h>
++
++#endif /* fenv_libc.h */
diff --git a/packages/glibc/files/ppc-sfp-machine.patch b/packages/glibc/files/ppc-sfp-machine.patch
new file mode 100644
index 0000000000..6171a03411
--- /dev/null
+++ b/packages/glibc/files/ppc-sfp-machine.patch
@@ -0,0 +1,297 @@
+This patch combined with the other patches from Bugzilla #2749 allows
+powerpc32 to build. The Subdirs pulls in the soft-fp directory from
+libc, The Implies pulls in the ports powerpc/soft-fp directory which
+includes sfp-machine.h
+
+The get/set/swapcontext changes overide the common implimentation in
+libc to avoid using hardware FP instructions.
+
+
+
+2006-06-01 Steven Munroe <sjmunroe@us.ibm.com>
+
+ [BZ #2749]
+ * sysdeps/powerpc/soft-fp/Subdirs: New file.
+ * sysdeps/powerpc/soft-fp/sfp-machine.h: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies: New file.
+
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S:
+ New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S:
+ New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S:
+ New file.
+
+diff -urN dummy-libc/ports-cvstip-20060512/sysdeps/powerpc/soft-fp/Subdirs
+libc24/ports/sysdeps/powerpc/soft-fp/Subdirs
+--- dummy-libc/ports-cvstip-20060512/sysdeps/powerpc/soft-fp/Subdirs Wed Dec 31 18:00:00 1969
++++ libc24/ports/sysdeps/powerpc/soft-fp/Subdirs Wed May 31 16:58:44 2006
+@@ -0,0 +1,1 @@
++soft-fp
+diff -urN dummy-libc/ports-cvstip-20060512/sysdeps/powerpc/soft-fp/sfp-machine.h
+libc24/ports/sysdeps/powerpc/soft-fp/sfp-machine.h
+--- dummy-libc/ports-cvstip-20060512/sysdeps/powerpc/soft-fp/sfp-machine.h Wed Dec 31 18:00:00 1969
++++ libc24/ports/sysdeps/powerpc/soft-fp/sfp-machine.h Wed May 31 13:57:07 2006
+@@ -0,0 +1,63 @@
++#define _FP_W_TYPE_SIZE 32
++#define _FP_W_TYPE unsigned long
++#define _FP_WS_TYPE signed long
++#define _FP_I_TYPE long
++
++#define _FP_MUL_MEAT_S(R,X,Y) \
++ _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
++#define _FP_MUL_MEAT_D(R,X,Y) \
++ _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
++#define _FP_MUL_MEAT_Q(R,X,Y) \
++ _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
++
++#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y)
++#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y)
++#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
++
++#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1)
++#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1
++#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
++#define _FP_NANSIGN_S 0
++#define _FP_NANSIGN_D 0
++#define _FP_NANSIGN_Q 0
++
++#define _FP_KEEPNANFRACP 1
++
++/* Someone please check this. */
++#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
++ do { \
++ if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \
++ && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \
++ { \
++ R##_s = Y##_s; \
++ _FP_FRAC_COPY_##wc(R,Y); \
++ } \
++ else \
++ { \
++ R##_s = X##_s; \
++ _FP_FRAC_COPY_##wc(R,X); \
++ } \
++ R##_c = FP_CLS_NAN; \
++ } while (0)
++
++/* Exception flags. We use the bit positions of the appropriate bits
++ in the FPSCR, which also correspond to the FE_* bits. This makes
++ everything easier ;-). */
++#define FP_EX_INVALID (1 << (31 - 2))
++#define FP_EX_OVERFLOW (1 << (31 - 3))
++#define FP_EX_UNDERFLOW (1 << (31 - 4))
++#define FP_EX_DENORM FP_EX_UNDERFLOW
++#define FP_EX_DIVZERO (1 << (31 - 5))
++#define FP_EX_INEXACT (1 << (31 - 6))
++
++#define FP_HANDLE_EXCEPTIONS __simulate_exceptions (_fex)
++#define FP_ROUNDMODE __sim_round_mode
++
++extern int __sim_exceptions;
++libc_hidden_proto (__sim_exceptions);
++extern int __sim_disabled_exceptions;
++libc_hidden_proto (__sim_disabled_exceptions);
++extern int __sim_round_mode;
++libc_hidden_proto (__sim_round_mode);
++
++extern void __simulate_exceptions (int x) attribute_hidden;
+diff -urN dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies
+libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies
+--- dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies Wed Dec 31 18:00:00 1969
++++ libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies Wed May 31 15:46:44 2006
+@@ -0,0 +1,1 @@
++powerpc/soft-fp
+diff -urN dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S
+libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S
+--- dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S Wed Dec 31 18:00:00 1969
++++ libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S Thu Jun 01 15:31:03 2006
+@@ -0,0 +1,59 @@
++/* Save current context.
++ Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ 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.
++
++ 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, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++#include <rtld-global-offsets.h>
++#include <shlib-compat.h>
++
++#define __ASSEMBLY__
++#include <asm/ptrace.h>
++#include "ucontext_i.h"
++
++#define __CONTEXT_FUNC_NAME __getcontext
++#undef __CONTEXT_ENABLE_FPRS
++#undef __CONTEXT_ENABLE_VRS
++
++#include "getcontext-common.S"
++
++versioned_symbol (libc, __getcontext, getcontext, GLIBC_2_3_4)
++
++#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
++
++/* For the nofpu case the old/new versions are the same function. */
++strong_alias (__getcontext, __novec_getcontext)
++
++compat_symbol (libc, __novec_getcontext, getcontext, GLIBC_2_3_3)
++
++#endif
++
++#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_3_3)
++
++#define _ERRNO_H 1
++#include <bits/errno.h>
++
++ compat_text_section
++ENTRY (__getcontext_stub)
++ li r3,ENOSYS
++ b __syscall_error@local
++END (__getcontext_stub)
++ .previous
++
++compat_symbol (libc, __getcontext_stub, getcontext, GLIBC_2_1)
++
++#endif
+diff -urN dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S
+libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S
+--- dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S Wed Dec 31 18:00:00 1969
++++ libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S Thu Jun 01 15:31:03 2006
+@@ -0,0 +1,59 @@
++/* Jump to a new context.
++ Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ 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.
++
++ 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, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++#include <rtld-global-offsets.h>
++#include <shlib-compat.h>
++
++#define __ASSEMBLY__
++#include <asm/ptrace.h>
++#include "ucontext_i.h"
++
++#define __CONTEXT_FUNC_NAME __setcontext
++#undef __CONTEXT_ENABLE_FPRS
++#undef __CONTEXT_ENABLE_VRS
++
++#include "setcontext-common.S"
++
++versioned_symbol (libc, __setcontext, setcontext, GLIBC_2_3_4)
++
++#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
++
++/* For the nofpu case the old/new versions are the same function. */
++strong_alias (__setcontext, __novec_setcontext)
++
++compat_symbol (libc, __novec_setcontext, setcontext, GLIBC_2_3_3)
++
++#endif
++
++#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_3)
++
++#define _ERRNO_H 1
++#include <bits/errno.h>
++
++ compat_text_section
++ENTRY (__setcontext_stub)
++ li r3,ENOSYS
++ b __syscall_error@local
++END (__setcontext_stub)
++ .previous
++
++compat_symbol (libc, __setcontext_stub, setcontext, GLIBC_2_0)
++
++#endif
+diff -urN dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S
+libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S
+--- dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S Wed Dec 31 18:00:00 1969
++++ libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S Thu Jun 01 15:31:03 2006
+@@ -0,0 +1,59 @@
++/* Save current context and jump to a new context.
++ Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ 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.
++
++ 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, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++#include <rtld-global-offsets.h>
++#include <shlib-compat.h>
++
++#define __ASSEMBLY__
++#include <asm/ptrace.h>
++#include "ucontext_i.h"
++
++#define __CONTEXT_FUNC_NAME __swapcontext
++#undef __CONTEXT_ENABLE_FPRS
++#undef __CONTEXT_ENABLE_VRS
++
++# include "swapcontext-common.S"
++
++versioned_symbol (libc, __swapcontext, swapcontext, GLIBC_2_3_4)
++
++#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
++
++/* For the nofpu case the old/new versions are the same function. */
++strong_alias (__swapcontext, __novec_swapcontext)
++
++compat_symbol (libc, __novec_swapcontext, swapcontext, GLIBC_2_3_3)
++
++#endif
++
++#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_3_3)
++
++#define _ERRNO_H 1
++#include <bits/errno.h>
++
++ compat_text_section
++ENTRY (__swapcontext_stub)
++ li r3,ENOSYS
++ b __syscall_error@local
++END (__swapcontext_stub)
++ .previous
++
++compat_symbol (libc, __swapcontext_stub, swapcontext, GLIBC_2_1)
++
++#endif
+
diff --git a/packages/glibc/files/ppc-soft-fp-20070115.patch b/packages/glibc/files/ppc-soft-fp-20070115.patch
new file mode 100644
index 0000000000..a84bc2f7cb
--- /dev/null
+++ b/packages/glibc/files/ppc-soft-fp-20070115.patch
@@ -0,0 +1,182 @@
+2007-01-14 Steven Munroe <sjmunroe@us.ibm.com>
+ Joe Kerian <jkerian@us.us.ibm.com>
+
+ [BZ #2749]
+ * soft-fp/op-4.h (__FP_FRAC_SUB_3, __FP_FRAC_SUB_4): Correct borrow
+ handling for high words.
+ * soft-fp/op-common.h (_FP_OVERFLOW_SEMIRAW): Always set inexact
+ and overflow for infinity.
+ (_FP_PACK_SEMIRAW): Update comment. Do not round if NaN or Inf.
+
+ * math/basic-test.c (truncdfsf_test): New function.
+ [!NO_LONG_DOUBLE] (trunctfsf_test): New function.
+ [!NO_LONG_DOUBLE] (trunctfdf_test): New function.
+ Change main() to do_test. Define TEST_FUNCTION. Include test-skeleton.c.
+ (do_test): Run new tests.
+
+2007-01-15 Jakub Jelinek <jakub@redhat.com>
+
+ * soft-fp/op-common.h (FP_TRUNC): When truncating a NaN, clear
+ workbits in semi-raw fraction.
+
+
+diff -urN libc25-cvstip-20070104/math/basic-test.c libc24/math/basic-test.c
+--- libc25-cvstip-20070104/math/basic-test.c 2001-07-05 23:55:35.000000000 -0500
++++ libc24/math/basic-test.c 2007-01-15 11:41:17.260963824 -0600
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de>, 1999.
+
+@@ -107,17 +107,90 @@
+ TEST_FUNC (double_test, double, nan, DBL_EPSILON, HUGE_VAL)
+ #ifndef NO_LONG_DOUBLE
+ TEST_FUNC (ldouble_test, long double, nanl, LDBL_EPSILON, HUGE_VALL)
++
++void
++trunctfsf_test(void)
++{
++ volatile long double Inf_var, NaN_var, zero_var, one_var;
++ float x1, x2;
++
++ zero_var = 0.0;
++ one_var = 1.0;
++ NaN_var = zero_var/zero_var;
++ Inf_var = one_var / zero_var;
++
++ (void) &zero_var;
++ (void) &one_var;
++ (void) &NaN_var;
++ (void) &Inf_var;
++
++ x1 = (float)NaN_var;
++ check (" float x = (float)((long double)NaN))", isnan (x1) != 0);
++ x2 = (float)Inf_var;
++ check (" float x = (float)((long double)Inf))", isinf (x2) != 0);
++}
++
++void
++trunctfdf_test(void)
++{
++ volatile long double Inf_var, NaN_var, zero_var, one_var;
++ double x1, x2;
++
++ zero_var = 0.0;
++ one_var = 1.0;
++ NaN_var = zero_var/zero_var;
++ Inf_var = one_var / zero_var;
++
++ (void) &zero_var;
++ (void) &one_var;
++ (void) &NaN_var;
++ (void) &Inf_var;
++
++ x1 = (double)NaN_var;
++ check (" double x = (double)((long double)NaN))", isnan (x1) != 0);
++ x2 = (double)Inf_var;
++ check (" double x = (double)((long double)Inf))", isinf (x2) != 0);
++}
++
+ #endif
+
++void
++truncdfsf_test(void)
++{
++ volatile double Inf_var, NaN_var, zero_var, one_var;
++ float x1, x2;
++
++ zero_var = 0.0;
++ one_var = 1.0;
++ NaN_var = zero_var/zero_var;
++ Inf_var = one_var / zero_var;
++
++ (void) &zero_var;
++ (void) &one_var;
++ (void) &NaN_var;
++ (void) &Inf_var;
++
++ x1 = (float)NaN_var;
++ check (" float x = (float)((double)NaN))", isnan (x1) != 0);
++ x2 = (float)Inf_var;
++ check (" float x = (float)((double)Inf))", isinf (x2) != 0);
++}
++
+ int
+-main (void)
++do_test (void)
+ {
+ float_test ();
+ double_test ();
++ truncdfsf_test();
+
+ #ifndef NO_LONG_DOUBLE
+ ldouble_test ();
++ trunctfsf_test();
++ trunctfdf_test();
+ #endif
+
+ return errors != 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff -urN libc25-cvstip-20070104/soft-fp/op-4.h libc24/soft-fp/op-4.h
+--- libc25-cvstip-20070104/soft-fp/op-4.h 2006-04-04 03:24:47.000000000 -0500
++++ libc24/soft-fp/op-4.h 2007-01-11 11:00:53.000000000 -0600
+@@ -564,7 +564,7 @@
+ r1 = x1 - y1; \
+ _c2 = r1 > x1; \
+ r1 -= _c1; \
+- _c2 |= r1 > _c1; \
++ _c2 |= _c1 && (y1 == x1); \
+ r2 = x2 - y2 - _c2; \
+ } while (0)
+ #endif
+@@ -578,11 +578,11 @@
+ r1 = x1 - y1; \
+ _c2 = r1 > x1; \
+ r1 -= _c1; \
+- _c2 |= r1 > _c1; \
++ _c2 |= _c1 && (y1 == x1); \
+ r2 = x2 - y2; \
+ _c3 = r2 > x2; \
+ r2 -= _c2; \
+- _c3 |= r2 > _c2; \
++ _c3 |= _c2 && (y2 == x2); \
+ r3 = x3 - y3 - _c3; \
+ } while (0)
+ #endif
+diff -urN libc25-cvstip-20070104/soft-fp/op-common.h libc24/soft-fp/op-common.h
+--- libc25-cvstip-20070104/soft-fp/op-common.h 2006-04-04 03:24:47.000000000 -0500
++++ libc24/soft-fp/op-common.h 2007-01-15 11:46:17.290882288 -0600
+@@ -1,5 +1,5 @@
+ /* Software floating-point emulation. Common operations.
+- Copyright (C) 1997,1998,1999,2006 Free Software Foundation, Inc.
++ Copyright (C) 1997,1998,1999,2006,2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson (rth@cygnus.com),
+ Jakub Jelinek (jj@ultra.linux.cz),
+@@ -99,10 +99,10 @@
+ else \
+ { \
+ X##_e = _FP_EXPMAX_##fs - 1; \
+- FP_SET_EXCEPTION(FP_EX_OVERFLOW); \
+- FP_SET_EXCEPTION(FP_EX_INEXACT); \
+ _FP_FRAC_SET_##wc(X, _FP_MAXFRAC_##wc); \
+ } \
++ FP_SET_EXCEPTION(FP_EX_INEXACT); \
++ FP_SET_EXCEPTION(FP_EX_OVERFLOW); \
+ } while (0)
+
+ /* Check for a semi-raw value being a signaling NaN and raise the
+@@ -1252,6 +1252,9 @@
+ _FP_FRAC_SRL_##swc(S, (_FP_WFRACBITS_##sfs \
+ - _FP_WFRACBITS_##dfs)); \
+ _FP_FRAC_COPY_##dwc##_##swc(D, S); \
++ /* Semi-raw NaN must have all workbits cleared. */ \
++ _FP_FRAC_LOW_##dwc(D) \
++ &= ~(_FP_W_TYPE) ((1 << _FP_WORKBITS) - 1); \
+ _FP_FRAC_HIGH_##dfs(D) |= _FP_QNANBIT_SH_##dfs; \
+ } \
+ } \
diff --git a/packages/glibc/glibc-2.4/ldd-unbash.patch b/packages/glibc/glibc-2.4/ldd-unbash.patch
new file mode 100644
index 0000000000..2fb8854b49
--- /dev/null
+++ b/packages/glibc/glibc-2.4/ldd-unbash.patch
@@ -0,0 +1,11 @@
+--- glibc-2.5/elf/ldd.bash.in.org 2006-04-30 16:06:20.000000000 +0000
++++ glibc-2.5/elf/ldd.bash.in 2007-03-30 19:18:57.000000000 +0000
+@@ -110,7 +110,7 @@
+ # environments where the executed program might not have permissions
+ # to write to the console/tty. But only bash 3.x supports the pipefail
+ # option, and we don't bother to handle the case for older bash versions.
+-if set -o pipefail 2> /dev/null; then
++if false; then
+ try_trace() {
+ eval $add_env '"$@"' | cat
+ }
diff --git a/packages/glibc/glibc-initial_2.5.bb b/packages/glibc/glibc-initial_2.5.bb
index b6bf3ece51..64f8d4a21e 100644
--- a/packages/glibc/glibc-initial_2.5.bb
+++ b/packages/glibc/glibc-initial_2.5.bb
@@ -9,11 +9,12 @@ PACKAGES = ""
do_configure () {
sed -ie 's,{ (exit 1); exit 1; }; },{ (exit 0); }; },g' ${S}/configure
chmod +x ${S}/configure
+ unset CFLAGS
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 \
--enable-hacker-mode
- if grep -q GLIBC_2.3 ${S}/ChangeLog; then
+ if grep -q GLIBC_2.5 ${S}/ChangeLog; then
# glibc-2.3.x passes cross options to $(CC) when generating errlist-compat.c, which fails without a real cross-compiler.
# Fortunately, we don't need errlist-compat.c, since we just need .h files,
# so work around this by creating a fake errlist-compat.c and satisfying its dependencies.
diff --git a/packages/glibc/glibc-package.bbclass b/packages/glibc/glibc-package.bbclass
index 4cad10fd73..4bd4223657 100644
--- a/packages/glibc/glibc-package.bbclass
+++ b/packages/glibc/glibc-package.bbclass
@@ -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 += " ${libdir}/gconv/.debug"
+FILES_${PN}-dbg += "${libexecdir}/getconf/.debug ${libdir}/gconv/.debug"
FILES_catchsegv = "${bindir}/catchsegv"
RDEPENDS_catchsegv = "libsegfault"
FILES_glibc-pcprofile = "/lib/libpcprofile.so"
@@ -202,9 +202,14 @@ python package_do_split_gconvs () {
do_split_packages(d, locales_dir, file_regex='(.*)', output_pattern='glibc-localedata-%s', description='locale definition for %s', hook=calc_locale_deps, extra_depends='')
bb.data.setVar('PACKAGES', bb.data.getVar('PACKAGES', d) + ' glibc-gconv', d)
- f = open(os.path.join(bb.data.getVar('WORKDIR', d, 1), "SUPPORTED"), "r")
- supported = f.readlines()
- f.close()
+ supported = bb.data.getVar('GLIBC_GENERATE_LOCALES', d, 1)
+ if not supported or supported == "all":
+ f = open(os.path.join(bb.data.getVar('WORKDIR', d, 1), "SUPPORTED"), "r")
+ supported = f.readlines()
+ f.close()
+ else:
+ supported = supported.split()
+ supported = map(lambda s:s.replace(".", " ") + "\n", supported)
dot_re = re.compile("(.*)\.(.*)")
diff --git a/packages/glibc/glibc.inc b/packages/glibc/glibc.inc
index 4e785d8275..10c2796825 100644
--- a/packages/glibc/glibc.inc
+++ b/packages/glibc/glibc.inc
@@ -3,3 +3,16 @@ HOMEPAGE = "http://www.gnu.org/software/libc/libc.html"
SECTION = "libs"
PRIORITY = "required"
LICENSE = "LGPL"
+# nptl needs unwind support in gcc, which can't be built without glibc.
+DEPENDS = "${@['virtual/${TARGET_PREFIX}gcc-initial', 'virtual/${TARGET_PREFIX}gcc']['nptl' in '${GLIBC_ADDONS}']} linux-libc-headers"
+#this leads to circular deps, so lets not add it yet
+#RDEPENDS_ldd += " bash"
+PROVIDES = "virtual/libc ${@['virtual/${TARGET_PREFIX}libc-for-gcc', '']['nptl' in '${GLIBC_ADDONS}']}"
+PROVIDES += "virtual/libintl virtual/libiconv"
+
+inherit autotools
+
+GLIBC_EXTRA_OECONF ?= ""
+INHIBIT_DEFAULT_DEPS = "1"
+
+PACKAGES = "glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile"
diff --git a/packages/glibc/glibc_2.2.5.bb b/packages/glibc/glibc_2.2.5.bb
index 6f00011d00..adb8a45283 100644
--- a/packages/glibc/glibc_2.2.5.bb
+++ b/packages/glibc/glibc_2.2.5.bb
@@ -6,7 +6,6 @@ PR = "r10"
DEFAULT_PREFERENCE_sh3 = "-99"
GLIBC_ADDONS ?= "linuxthreads"
-GLIBC_EXTRA_OECONF ?= ""
#
# For now, we will skip building of a gcc package if it is a uclibc one
@@ -24,14 +23,7 @@ python __anonymous () {
bb.data.getVar('TARGET_OS', d, 1))
}
-PACKAGES = "glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile"
-
-# nptl needs unwind support in gcc, which can't be built without glibc.
-PROVIDES = "virtual/libc ${@['virtual/${TARGET_PREFIX}libc-for-gcc', '']['nptl' in '${GLIBC_ADDONS}']}"
PROVIDES_unslung = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc"
-PROVIDES += "virtual/libintl virtual/libiconv"
-DEPENDS = "${@['virtual/${TARGET_PREFIX}gcc-initial', 'virtual/${TARGET_PREFIX}gcc']['nptl' in '${GLIBC_ADDONS}']} linux-libc-headers"
-INHIBIT_DEFAULT_DEPS = "1"
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*"
@@ -115,8 +107,6 @@ SRC_URI = "${GNU_MIRROR}/glibc/glibc-${PV}.tar.gz \
S = "${WORKDIR}/glibc-${PV}"
B = "${WORKDIR}/build-${TARGET_SYS}"
-inherit autotools
-
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
--without-cvs --disable-profile --disable-debug --without-gd \
--enable-clocale=gnu \
diff --git a/packages/glibc/glibc_2.3.2+cvs20040726.bb b/packages/glibc/glibc_2.3.2+cvs20040726.bb
index 40fef7bed4..85f64371a8 100644
--- a/packages/glibc/glibc_2.3.2+cvs20040726.bb
+++ b/packages/glibc/glibc_2.3.2+cvs20040726.bb
@@ -6,13 +6,6 @@ FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs"
PR = "r22"
GLIBC_ADDONS ?= "linuxthreads"
-GLIBC_EXTRA_OECONF ?= ""
-
-# nptl needs unwind support in gcc, which can't be built without glibc.
-PROVIDES = "virtual/libc ${@['virtual/${TARGET_PREFIX}libc-for-gcc', '']['nptl' in '${GLIBC_ADDONS}']}"
-PROVIDES += "virtual/libintl virtual/libiconv"
-DEPENDS = "${@['virtual/${TARGET_PREFIX}gcc-initial', 'virtual/${TARGET_PREFIX}gcc']['nptl' in '${GLIBC_ADDONS}']} linux-libc-headers"
-INHIBIT_DEFAULT_DEPS = "1"
# file://noinfo.patch;patch=1
# file://ldconfig.patch;patch=1;pnum=0
@@ -38,8 +31,6 @@ SRC_URI_append_openmn = " file://ldsocache-varrun.patch;patch=1"
S = "${WORKDIR}/libc"
B = "${WORKDIR}/build-${TARGET_SYS}"
-inherit autotools
-
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
--without-cvs --disable-profile --disable-debug --without-gd \
--enable-clocale=gnu \
diff --git a/packages/glibc/glibc_2.3.2.bb b/packages/glibc/glibc_2.3.2.bb
index 12db1928c6..87a6906915 100644
--- a/packages/glibc/glibc_2.3.2.bb
+++ b/packages/glibc/glibc_2.3.2.bb
@@ -5,7 +5,6 @@ PR = "r11"
DEFAULT_PREFERENCE_sh3 = "-99"
GLIBC_ADDONS ?= "linuxthreads"
-GLIBC_EXTRA_OECONF ?= ""
#
# For now, we will skip building of a gcc package if it is a uclibc one
@@ -23,14 +22,6 @@ python __anonymous () {
bb.data.getVar('TARGET_OS', d, 1))
}
-PACKAGES = "glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile"
-PROVIDES += "virtual/libintl virtual/libiconv"
-
-# nptl needs unwind support in gcc, which can't be built without glibc.
-PROVIDES = "virtual/libc ${@['virtual/${TARGET_PREFIX}libc-for-gcc', '']['nptl' in '${GLIBC_ADDONS}']}"
-DEPENDS = "${@['virtual/${TARGET_PREFIX}gcc-initial', 'virtual/${TARGET_PREFIX}gcc']['nptl' in '${GLIBC_ADDONS}']} linux-libc-headers"
-INHIBIT_DEFAULT_DEPS = "1"
-
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*"
FILES_${PN} = "${sysconfdir} ${libc_baselibs} /sbin/ldconfig ${libexecdir} ${datadir}/zoneinfo"
@@ -115,8 +106,6 @@ SRC_URI = "ftp://ftp.gnu.org/gnu/glibc/glibc-${PV}.tar.gz \
S = "${WORKDIR}/glibc-${PV}"
B = "${WORKDIR}/build-${TARGET_SYS}"
-inherit autotools
-
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
--without-cvs --disable-profile --disable-debug --without-gd \
--enable-clocale=gnu \
diff --git a/packages/glibc/glibc_2.3.3+cvs20041128.bb b/packages/glibc/glibc_2.3.3+cvs20041128.bb
index 9286fce398..6bbc8ec8af 100644
--- a/packages/glibc/glibc_2.3.3+cvs20041128.bb
+++ b/packages/glibc/glibc_2.3.3+cvs20041128.bb
@@ -6,7 +6,6 @@ FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs"
PR = "r7"
GLIBC_ADDONS ?= "linuxthreads"
-GLIBC_EXTRA_OECONF ?= ""
DEFAULT_PREFERENCE = "-1"
DEFAULT_PREFERENCE_i686 = "0"
@@ -29,12 +28,6 @@ python __anonymous () {
bb.data.getVar('TARGET_OS', d, 1))
}
-# nptl needs unwind support in gcc, which can't be built without glibc.
-PROVIDES = "virtual/libc ${@['virtual/${TARGET_PREFIX}libc-for-gcc', '']['nptl' in '${GLIBC_ADDONS}']}"
-PROVIDES += "virtual/libintl virtual/libiconv"
-DEPENDS = "${@['virtual/${TARGET_PREFIX}gcc-initial', 'virtual/${TARGET_PREFIX}gcc']['nptl' in '${GLIBC_ADDONS}']} linux-libc-headers"
-INHIBIT_DEFAULT_DEPS = "1"
-
# file://noinfo.patch;patch=1
# file://ldconfig.patch;patch=1;pnum=0
SRC_URI = "cvs://anoncvs@sources.redhat.com/cvs/glibc;module=libc;date=${@bb.data.getVar('PV', d, 1)[9:]} \
@@ -57,8 +50,6 @@ SRC_URI_append_openmn = " file://ldsocache-varrun.patch;patch=1"
S = "${WORKDIR}/libc"
B = "${WORKDIR}/build-${TARGET_SYS}"
-inherit autotools
-
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
--without-cvs --disable-profile --disable-debug --without-gd \
--enable-clocale=gnu \
diff --git a/packages/glibc/glibc_2.3.3+cvs20050221.bb b/packages/glibc/glibc_2.3.3+cvs20050221.bb
index 6382d12e57..576047ce1e 100644
--- a/packages/glibc/glibc_2.3.3+cvs20050221.bb
+++ b/packages/glibc/glibc_2.3.3+cvs20050221.bb
@@ -6,19 +6,12 @@ FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs"
PR = "r7"
GLIBC_ADDONS ?= "linuxthreads"
-GLIBC_EXTRA_OECONF ?= ""
DEFAULT_PREFERENCE = "-1"
DEFAULT_PREFERENCE_i686 = "0"
DEFAULT_PREFERENCE_sh3 = "0"
DEFAULT_PREFERENCE_sh4 = "0"
-# nptl needs unwind support in gcc, which can't be built without glibc.
-PROVIDES = "virtual/libc ${@['virtual/${TARGET_PREFIX}libc-for-gcc', '']['nptl' in '${GLIBC_ADDONS}']}"
-PROVIDES += "virtual/libintl virtual/libiconv"
-DEPENDS = "${@['virtual/${TARGET_PREFIX}gcc-initial', 'virtual/${TARGET_PREFIX}gcc']['nptl' in '${GLIBC_ADDONS}']} linux-libc-headers"
-INHIBIT_DEFAULT_DEPS = "1"
-
# file://noinfo.patch;patch=1
# file://ldconfig.patch;patch=1;pnum=0
SRC_URI = "cvs://anoncvs@sources.redhat.com/cvs/glibc;module=libc;date=${@bb.data.getVar('PV', d, 1)[9:]} \
@@ -42,8 +35,6 @@ SRC_URI_append_openmn = " file://ldsocache-varrun.patch;patch=1"
S = "${WORKDIR}/libc"
B = "${WORKDIR}/build-${TARGET_SYS}"
-inherit autotools
-
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
--without-cvs --disable-profile --disable-debug --without-gd \
--enable-clocale=gnu \
diff --git a/packages/glibc/glibc_2.3.3+cvs20050420.bb b/packages/glibc/glibc_2.3.3+cvs20050420.bb
index f955a6e0a0..4a548fa9bc 100644
--- a/packages/glibc/glibc_2.3.3+cvs20050420.bb
+++ b/packages/glibc/glibc_2.3.3+cvs20050420.bb
@@ -8,16 +8,9 @@ FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs"
PR = "r5"
GLIBC_ADDONS ?= "linuxthreads"
-GLIBC_EXTRA_OECONF ?= ""
DEFAULT_PREFERENCE = "-1"
-# nptl needs unwind support in gcc, which can't be built without glibc.
-PROVIDES = "virtual/libc ${@['virtual/${TARGET_PREFIX}libc-for-gcc', '']['nptl' in '${GLIBC_ADDONS}']}"
-PROVIDES += "virtual/libintl virtual/libiconv"
-DEPENDS = "${@['virtual/${TARGET_PREFIX}gcc-initial', 'virtual/${TARGET_PREFIX}gcc']['nptl' in '${GLIBC_ADDONS}']} linux-libc-headers"
-INHIBIT_DEFAULT_DEPS = "1"
-
# file://noinfo.patch;patch=1
# file://ldconfig.patch;patch=1;pnum=0
SRC_URI = "cvs://anoncvs@sources.redhat.com/cvs/glibc;module=libc;date=${@bb.data.getVar('PV', d, 1)[9:]} \
@@ -43,8 +36,6 @@ SRC_URI_append_openmn = " file://ldsocache-varrun.patch;patch=1"
S = "${WORKDIR}/libc"
B = "${WORKDIR}/build-${TARGET_SYS}"
-inherit autotools
-
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
--without-cvs --disable-profile --disable-debug --without-gd \
--enable-clocale=gnu \
diff --git a/packages/glibc/glibc_2.3.3.bb b/packages/glibc/glibc_2.3.3.bb
index 7c2bf09e4e..3f3690a73c 100644
--- a/packages/glibc/glibc_2.3.3.bb
+++ b/packages/glibc/glibc_2.3.3.bb
@@ -8,7 +8,6 @@ DEFAULT_PREFERENCE = "-1"
DEFAULT_PREFERENCE_mipsel = "0"
GLIBC_ADDONS ?= "linuxthreads"
-GLIBC_EXTRA_OECONF ?= ""
#
# For now, we will skip building of a gcc package if it is a uclibc one
@@ -26,14 +25,6 @@ python __anonymous () {
bb.data.getVar('TARGET_OS', d, 1))
}
-PACKAGES = "glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile"
-
-# nptl needs unwind support in gcc, which can't be built without glibc.
-PROVIDES = "virtual/libc ${@['virtual/${TARGET_PREFIX}libc-for-gcc', '']['nptl' in '${GLIBC_ADDONS}']}"
-PROVIDES += "virtual/libintl virtual/libiconv"
-DEPENDS = "${@['virtual/${TARGET_PREFIX}gcc-initial', 'virtual/${TARGET_PREFIX}gcc']['nptl' in '${GLIBC_ADDONS}']} linux-libc-headers"
-INHIBIT_DEFAULT_DEPS = "1"
-
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*"
FILES_${PN} = "${sysconfdir} ${libc_baselibs} /sbin/ldconfig ${libexecdir} ${datadir}/zoneinfo"
@@ -60,8 +51,6 @@ SRC_URI = "ftp://ftp.gnu.org/gnu/glibc/glibc-${PV}.tar.gz \
S = "${WORKDIR}/glibc-${PV}"
B = "${WORKDIR}/build-${TARGET_SYS}"
-inherit autotools
-
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
--without-cvs --disable-profile --disable-debug --without-gd \
--enable-clocale=gnu \
diff --git a/packages/glibc/glibc_2.3.5+cvs20050627.bb b/packages/glibc/glibc_2.3.5+cvs20050627.bb
index 985df1dfaa..1319fb33d3 100644
--- a/packages/glibc/glibc_2.3.5+cvs20050627.bb
+++ b/packages/glibc/glibc_2.3.5+cvs20050627.bb
@@ -8,7 +8,6 @@ PR = "r13"
DEFAULT_PREFERENCE_sh3="-1"
GLIBC_ADDONS ?= "ports,linuxthreads"
-GLIBC_EXTRA_OECONF ?= ""
GLIBC_BROKEN_LOCALES = "sid_ET tr_TR mn_MN"
@@ -28,12 +27,7 @@ python __anonymous () {
bb.data.getVar('TARGET_OS', d, 1))
}
-# nptl needs unwind support in gcc, which can't be built without glibc.
-PROVIDES = "virtual/libc ${@['virtual/${TARGET_PREFIX}libc-for-gcc', '']['nptl' in '${GLIBC_ADDONS}']}"
-PROVIDES += "virtual/libintl virtual/libiconv"
-DEPENDS = "${@['virtual/${TARGET_PREFIX}gcc-initial', 'virtual/${TARGET_PREFIX}gcc']['nptl' in '${GLIBC_ADDONS}']} linux-libc-headers"
RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
-INHIBIT_DEFAULT_DEPS = "1"
# file://noinfo.patch;patch=1
# file://ldconfig.patch;patch=1;pnum=0
@@ -71,8 +65,6 @@ SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1 \
S = "${WORKDIR}/libc"
B = "${WORKDIR}/build-${TARGET_SYS}"
-inherit autotools
-
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
--without-cvs --disable-profile --disable-debug --without-gd \
--enable-clocale=gnu \
diff --git a/packages/glibc/glibc_2.4.bb b/packages/glibc/glibc_2.4.bb
index 4cf0b82b92..3752da1040 100644
--- a/packages/glibc/glibc_2.4.bb
+++ b/packages/glibc/glibc_2.4.bb
@@ -14,7 +14,6 @@ TARGET_CPPFLAGS = "-I${STAGING_DIR}/${TARGET_SYS}/include"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4"
GLIBC_ADDONS ?= "ports,nptl,libidn"
-GLIBC_EXTRA_OECONF ?= ""
GLIBC_BROKEN_LOCALES = "sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN"
@@ -34,12 +33,7 @@ python __anonymous () {
bb.data.getVar('TARGET_OS', d, 1))
}
-# nptl needs unwind support in gcc, which can't be built without glibc.
-PROVIDES = "virtual/libc ${@['virtual/${TARGET_PREFIX}libc-for-gcc', '']['nptl' in '${GLIBC_ADDONS}']}"
-PROVIDES += "virtual/libintl virtual/libiconv"
-DEPENDS = "${@['virtual/${TARGET_PREFIX}gcc-initial', 'virtual/${TARGET_PREFIX}gcc']['nptl' in '${GLIBC_ADDONS}']} linux-libc-headers"
RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
-INHIBIT_DEFAULT_DEPS = "1"
# file://noinfo.patch;patch=1
# file://ldconfig.patch;patch=1;pnum=0
@@ -76,8 +70,6 @@ SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
S = "${WORKDIR}/glibc-2.4"
B = "${WORKDIR}/build-${TARGET_SYS}"
-inherit autotools
-
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
--without-cvs --disable-profile --disable-debug --without-gd \
--enable-clocale=gnu \
diff --git a/packages/glibc/glibc_2.5.bb b/packages/glibc/glibc_2.5.bb
index 23230392e9..f14ce45a94 100644
--- a/packages/glibc/glibc_2.5.bb
+++ b/packages/glibc/glibc_2.5.bb
@@ -2,7 +2,10 @@ require glibc.inc
ARM_INSTRUCTION_SET = "arm"
-PR = "r4"
+PACKAGES_DYNAMIC = "libc6*"
+RPROVIDES_${PN}-dev = "libc6-dev"
+
+PR = "r6"
# the -isystem in bitbake.conf screws up glibc do_stage
BUILD_CPPFLAGS = "-I${STAGING_DIR}/${BUILD_SYS}/include"
@@ -12,7 +15,6 @@ TARGET_CPPFLAGS = "-I${STAGING_DIR}/${TARGET_SYS}/include"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4"
GLIBC_ADDONS ?= "ports,nptl,libidn"
-GLIBC_EXTRA_OECONF ?= ""
GLIBC_BROKEN_LOCALES = "sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN"
@@ -32,12 +34,7 @@ python __anonymous () {
bb.data.getVar('TARGET_OS', d, 1))
}
-# nptl needs unwind support in gcc, which can't be built without glibc.
-PROVIDES = "virtual/libc ${@['virtual/${TARGET_PREFIX}libc-for-gcc', '']['nptl' in '${GLIBC_ADDONS}']}"
-PROVIDES += "virtual/libintl virtual/libiconv"
-DEPENDS = "${@['virtual/${TARGET_PREFIX}gcc-initial', 'virtual/${TARGET_PREFIX}gcc']['nptl' in '${GLIBC_ADDONS}']} linux-libc-headers"
RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
-INHIBIT_DEFAULT_DEPS = "1"
# file://noinfo.patch;patch=1
# file://ldconfig.patch;patch=1;pnum=0
@@ -59,6 +56,7 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
# 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 \
@@ -71,13 +69,16 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1"
SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
-SRC_URI_append_powerpc = " file://powerpc-sqrt-hack.diff;patch=1"
+#powerpc patches to add support for soft-float
+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""
S = "${WORKDIR}/glibc-${PV}"
B = "${WORKDIR}/build-${TARGET_SYS}"
-inherit autotools
-
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
--without-cvs --disable-profile --disable-debug --without-gd \
--enable-clocale=gnu \
diff --git a/packages/glibc/glibc_cvs.bb b/packages/glibc/glibc_cvs.bb
index c85aa500f1..0ddcb8a447 100644
--- a/packages/glibc/glibc_cvs.bb
+++ b/packages/glibc/glibc_cvs.bb
@@ -5,7 +5,6 @@ PR = "r5"
PV = "2.3.5+cvs${SRCDATE}"
GLIBC_ADDONS ?= "ports,linuxthreads"
-GLIBC_EXTRA_OECONF ?= ""
DEFAULT_PREFERENCE = "-1"
@@ -25,11 +24,6 @@ python __anonymous () {
bb.data.getVar('TARGET_OS', d, 1))
}
-# nptl needs unwind support in gcc, which can't be built without glibc.
-PROVIDES = "virtual/libc ${@['virtual/${TARGET_PREFIX}libc-for-gcc', '']['nptl' in '${GLIBC_ADDONS}']}"
-PROVIDES += "virtual/libintl virtual/libiconv"
-DEPENDS = "${@['virtual/${TARGET_PREFIX}gcc-initial', 'virtual/${TARGET_PREFIX}gcc']['nptl' in '${GLIBC_ADDONS}']} linux-libc-headers"
-INHIBIT_DEFAULT_DEPS = "1"
RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
# file://noinfo.patch;patch=1
@@ -58,8 +52,6 @@ SRC_URI_append_arm = " file://dyn-ldconfig-20041128.patch;patch=1"
S = "${WORKDIR}/libc"
B = "${WORKDIR}/build-${TARGET_SYS}"
-inherit autotools
-
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
--without-cvs --disable-profile --disable-debug --without-gd \
--enable-clocale=gnu \
diff --git a/packages/gmp/gmp-4.2.1/x86-fat.diff b/packages/gmp/gmp-4.2.1/x86-fat.diff
new file mode 100644
index 0000000000..2a54622a26
--- /dev/null
+++ b/packages/gmp/gmp-4.2.1/x86-fat.diff
@@ -0,0 +1,122 @@
+See:
+
+ http://gmplib.org/patches/x86-fat.diff
+ http://gmplib.org/list-archives/gmp-bugs/2006-October/000579.html
+ http://gmplib.org/#BUGREPORTS
+
+Removed the configure part of the patch since we patch configure.in. It was
+only needed for FAT binaries anyway and this is being included to fix
+linking errors.
+
+Index: mpn/generic/addsub_n.c
+===================================================================
+RCS file: /home/cvsfiles/gmp42/mpn/generic/addsub_n.c,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -p -2 -r1.1 -r1.2
+*** mpn/generic/addsub_n.c 14 Mar 2006 15:57:54 -0000 1.1
+--- mpn/generic/addsub_n.c 15 May 2006 22:38:42 -0000 1.2
+***************
+*** 1,5 ****
+ /* mpn_addsub_n -- Add and Subtract two limb vectors of equal, non-zero length.
+
+! Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
+
+ This file is part of the GNU MP Library.
+--- 1,5 ----
+ /* mpn_addsub_n -- Add and Subtract two limb vectors of equal, non-zero length.
+
+! Copyright 1999, 2000, 2001, 2006 Free Software Foundation, Inc.
+
+ This file is part of the GNU MP Library.
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 59,63 ****
+ {
+ this_n = MIN (n - off, PART_SIZE);
+! #if HAVE_NATIVE_mpn_add_nc || !HAVE_NATIVE_mpn_add_n
+ acyo = mpn_add_nc (r1p + off, s1p + off, s2p + off, this_n, acyo);
+ #else
+--- 59,63 ----
+ {
+ this_n = MIN (n - off, PART_SIZE);
+! #if HAVE_NATIVE_mpn_add_nc
+ acyo = mpn_add_nc (r1p + off, s1p + off, s2p + off, this_n, acyo);
+ #else
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 65,69 ****
+ acyo = acyn + mpn_add_1 (r1p + off, r1p + off, this_n, acyo);
+ #endif
+! #if HAVE_NATIVE_mpn_sub_nc || !HAVE_NATIVE_mpn_sub_n
+ scyo = mpn_sub_nc (r2p + off, s1p + off, s2p + off, this_n, scyo);
+ #else
+--- 65,69 ----
+ acyo = acyn + mpn_add_1 (r1p + off, r1p + off, this_n, acyo);
+ #endif
+! #if HAVE_NATIVE_mpn_sub_nc
+ scyo = mpn_sub_nc (r2p + off, s1p + off, s2p + off, this_n, scyo);
+ #else
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 82,86 ****
+ {
+ this_n = MIN (n - off, PART_SIZE);
+! #if HAVE_NATIVE_mpn_sub_nc || !HAVE_NATIVE_mpn_sub_n
+ scyo = mpn_sub_nc (r2p + off, s1p + off, s2p + off, this_n, scyo);
+ #else
+--- 82,86 ----
+ {
+ this_n = MIN (n - off, PART_SIZE);
+! #if HAVE_NATIVE_mpn_sub_nc
+ scyo = mpn_sub_nc (r2p + off, s1p + off, s2p + off, this_n, scyo);
+ #else
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 88,92 ****
+ scyo = scyn + mpn_sub_1 (r2p + off, r2p + off, this_n, scyo);
+ #endif
+! #if HAVE_NATIVE_mpn_add_nc || !HAVE_NATIVE_mpn_add_n
+ acyo = mpn_add_nc (r1p + off, s1p + off, s2p + off, this_n, acyo);
+ #else
+--- 88,92 ----
+ scyo = scyn + mpn_sub_1 (r2p + off, r2p + off, this_n, scyo);
+ #endif
+! #if HAVE_NATIVE_mpn_add_nc
+ acyo = mpn_add_nc (r1p + off, s1p + off, s2p + off, this_n, acyo);
+ #else
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 98,102 ****
+ else
+ {
+! /* r1 and r2 are identical to s1 and s2 (r1==s1 and r2=s2 or vice versa)
+ Need temporary storage. */
+ mp_limb_t tp[PART_SIZE];
+--- 98,102 ----
+ else
+ {
+! /* r1 and r2 are identical to s1 and s2 (r1==s1 and r2==s2 or vice versa)
+ Need temporary storage. */
+ mp_limb_t tp[PART_SIZE];
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 106,110 ****
+ {
+ this_n = MIN (n - off, PART_SIZE);
+! #if HAVE_NATIVE_mpn_add_nc || !HAVE_NATIVE_mpn_add_n
+ acyo = mpn_add_nc (tp, s1p + off, s2p + off, this_n, acyo);
+ #else
+--- 106,110 ----
+ {
+ this_n = MIN (n - off, PART_SIZE);
+! #if HAVE_NATIVE_mpn_add_nc
+ acyo = mpn_add_nc (tp, s1p + off, s2p + off, this_n, acyo);
+ #else
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 112,116 ****
+ acyo = acyn + mpn_add_1 (tp, tp, this_n, acyo);
+ #endif
+! #if HAVE_NATIVE_mpn_sub_nc || !HAVE_NATIVE_mpn_sub_n
+ scyo = mpn_sub_nc (r2p + off, s1p + off, s2p + off, this_n, scyo);
+ #else
+--- 112,116 ----
+ acyo = acyn + mpn_add_1 (tp, tp, this_n, acyo);
+ #endif
+! #if HAVE_NATIVE_mpn_sub_nc
+ scyo = mpn_sub_nc (r2p + off, s1p + off, s2p + off, this_n, scyo);
+ #else
diff --git a/packages/gmp/gmp_4.2.1.bb b/packages/gmp/gmp_4.2.1.bb
index 8ad8e29ad1..452553beda 100644
--- a/packages/gmp/gmp_4.2.1.bb
+++ b/packages/gmp/gmp_4.2.1.bb
@@ -1,9 +1,6 @@
-PR = "r1"
+PR = "r2"
-SRC_URI += "file://sh4-asmfix.patch;patch=1"
+SRC_URI_append += "file://sh4-asmfix.patch;patch=1 \
+ file://x86-fat.diff;patch=1;pnum=0 "
require gmp.inc
-
-# Builds on sh but can't be used due to not compiling in some functions
-DEFAULT_PREFERENCE_sh3 = "-1"
-DEFAULT_PREFERENCE_sh4 = "-1"
diff --git a/packages/gnokii/gnokii_0.6.14.bb b/packages/gnokii/gnokii_0.6.14.bb
new file mode 100644
index 0000000000..7a7a3d71e3
--- /dev/null
+++ b/packages/gnokii/gnokii_0.6.14.bb
@@ -0,0 +1,26 @@
+LICENSE = "GPL"
+DESCRIPTION = "Cellphone tools and driver software"
+SRC_URI = "http://www.gnokii.org/download/gnokii/gnokii-${PV}.tar.bz2 \
+ file://configure.patch;patch=1"
+
+DEPENDS = "libxpm gtk+"
+
+inherit autotools pkgconfig
+
+PARALLEL_MAKE = ""
+
+PACKAGES += "libgnokii libgnokii-dev"
+
+FILES_${PN} = "${bindir} ${sbindir}"
+FILES_libgnokii-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la \
+ ${libdir}/*.a ${libdir}/*.o ${libdir}/pkgconfig \
+ /lib/*.a /lib/*.o ${datadir}/aclocal"
+FILES_${PN}-dev = ""
+FILES_libgnokii = "${libdir}/libgnokii.so.*"
+
+do_stage() {
+ autotools_stage_includes
+
+ oe_libinstall -C common -so libgnokii ${STAGING_LIBDIR}
+}
+
diff --git a/packages/gnokii/gnokii_0.6.4.bb b/packages/gnokii/gnokii_0.6.4.bb
index 34d1edeb0b..44582f3db6 100644
--- a/packages/gnokii/gnokii_0.6.4.bb
+++ b/packages/gnokii/gnokii_0.6.4.bb
@@ -16,6 +16,10 @@ FILES_libgnokii-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la \
FILES_${PN}-dev = ""
FILES_libgnokii = "${libdir}/libgnokii.so.*"
+do_compile_prepend() {
+ sed -i s:foo::g Makefile.global
+}
+
do_stage() {
autotools_stage_includes
diff --git a/packages/gnome/gconf-dbus_svn.bb b/packages/gnome/gconf-dbus_svn.bb
index 87daa1d227..3647059de1 100644
--- a/packages/gnome/gconf-dbus_svn.bb
+++ b/packages/gnome/gconf-dbus_svn.bb
@@ -1,18 +1,15 @@
SECTION = "x11/utils"
-DEPENDS = "gtk+ glib-2.0 dbus dbus-glib libxml2 popt"
+DEPENDS = "gtk+ glib-2.0 dbus dbus-glib libxml2 popt intltool-native"
DESCRIPTION = "Settings daemon using DBUS for communication."
LICENSE = "GPL"
PROVIDES = "gconf"
RPROVIDES_${PN} = "gconf"
RPROVIDES_${PN}-dev = "gconf-dev"
-PV = "2.10.0+svn${SRCDATE}"
+PV = "2.16.0+svn${SRCDATE}"
PR = "r0"
SRC_URI = "svn://developer.imendio.com/svn/gconf-dbus;module=trunk;proto=http \
- file://gconf-dbus-update.patch;patch=1;pnum=0 \
- file://xml-backend-locks-compile-fix.patch;patch=1 \
- file://xml-backend-oldxml-Makefile.patch \
file://69gconfd-dbus"
inherit pkgconfig autotools
@@ -20,23 +17,22 @@ S = "${WORKDIR}/trunk"
PARALLEL_MAKE = ""
-FILES_${PN} += " ${libdir}/gconf-dbus/2/*.so ${libdir}/dbus-1.0 ${sysconfdir} ${datadir}/dbus*"
-FILES_${PN}-dbg += "${libdir}/gconf-dbus/2/.debug"
+FILES_${PN} += " ${libdir}/gconf-dbus/2/*.so \
+ ${libdir}/GConf-dbus/2/*.so \
+ ${libdir}/dbus-1.0 \
+ ${sysconfdir} \
+ ${datadir}/dbus*"
+FILES_${PN}-dbg += "${libdir}/gconf-dbus/2/.debug \
+ ${libdir}/GConf-dbus/2/.debug ""
EXTRA_OECONF = " --with-ipc=dbus --disable-gtk-doc --enable-gtk --host=${HOST_SYS} --enable-shared --disable-static"
-HEADERS = "gconf.h gconf-changeset.h gconf-listeners.h gconf-schema.h gconf-value.h gconf-error.h gconf-engine.h gconf-client.h gconf-enum-types.h"
-
-do_compile_prepend() {
- cd ${S}
- patch -p1 < ../xml-backend-oldxml-Makefile.patch
+do_configure_prepend() {
+ touch ${S}/gtk-doc.make
}
do_stage() {
- oe_libinstall -so -C gconf libgconf-2 ${STAGING_LIBDIR}
- install -d ${STAGING_INCDIR}/gconf/2/gconf/
- ( cd gconf; for i in ${HEADERS}; do install -m 0644 $i ${STAGING_INCDIR}/gconf/2/gconf/$i; done )
- install -m 0644 gconf.m4 ${STAGING_DATADIR}/aclocal/gconf-2.m4
+ autotools_stage_all
}
do_install_append () {
@@ -45,3 +41,4 @@ do_install_append () {
install -d ${D}/${datadir}/dbus-1.0/services/
install -m 644 gconf/gconf.service ${D}${datadir}/dbus-1.0/services/
}
+
diff --git a/packages/gnome/gnome-desktop/.mtn2git_empty b/packages/gnome/gnome-desktop/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gnome/gnome-desktop/.mtn2git_empty
diff --git a/packages/gnome/gnome-desktop/scrollkeeper.patch b/packages/gnome/gnome-desktop/scrollkeeper.patch
new file mode 100644
index 0000000000..c1b7f3b44a
--- /dev/null
+++ b/packages/gnome/gnome-desktop/scrollkeeper.patch
@@ -0,0 +1,17 @@
+Index: gnome-desktop-2.16.1/configure.in
+===================================================================
+--- gnome-desktop-2.16.1.orig/configure.in 2006-10-02 19:00:52.000000000 +0000
++++ gnome-desktop-2.16.1/configure.in 2007-04-12 21:12:36.000000000 +0000
+@@ -113,9 +113,9 @@
+ dnl scrollkeeper checks
+
+ AC_PATH_PROG(SCROLLKEEPER_CONFIG, scrollkeeper-config,no)
+-if test x$SCROLLKEEPER_CONFIG = xno; then
+- AC_MSG_ERROR(Couldn't find scrollkeeper-config. Please install the scrollkeeper package)
+-fi
++dnl if test x$SCROLLKEEPER_CONFIG = xno; then
++dnl AC_MSG_ERROR(Couldn't find scrollkeeper-config. Please install the scrollkeeper package)
++dnl fi
+
+ dnl Language Support
+
diff --git a/packages/gnome/gnome-desktop_2.16.1.bb b/packages/gnome/gnome-desktop_2.16.1.bb
new file mode 100644
index 0000000000..1e3e814d17
--- /dev/null
+++ b/packages/gnome/gnome-desktop_2.16.1.bb
@@ -0,0 +1,23 @@
+LICENSE = "GPL"
+SECTION = "x11/gnome"
+PR = "r1"
+DESCRIPTION = "GNOME library for reading .desktop files"
+inherit gnome pkgconfig
+
+DEPENDS = "gnome-common gnome-doc-utils libgnomeui"
+
+SRC_URI += "file://scrollkeeper.patch;patch=1"
+
+EXTRA_OECONF = "--disable-scrollkeeper"
+EXTRA_AUTORECONF = "-I ${STAGING_DIR}/${HOST_SYS}/share/aclocal/gnome2-macros"
+
+do_configure_prepend () {
+ cp ${STAGING_DIR}/${HOST_SYS}/share/gnome-common/data/omf.make ${S}
+}
+
+FILES_${PN} += "${datadir}/gnome-about"
+
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gnome/gnome-doc-utils_0.7.1.bb b/packages/gnome/gnome-doc-utils_0.7.1.bb
index 18d6d3012a..f190a5ae13 100644
--- a/packages/gnome/gnome-doc-utils_0.7.1.bb
+++ b/packages/gnome/gnome-doc-utils_0.7.1.bb
@@ -5,6 +5,8 @@ PR = "r1"
inherit gnome
+EXTRA_OECONF = "--disable-scrollkeeper"
+
FILES_${PN} += "${datadir}/xml*"
do_stage() {
diff --git a/packages/gnome/gnome-keyring_0.4.4.bb b/packages/gnome/gnome-keyring_0.4.4.bb
index 366e450c1d..d0efaaf608 100644
--- a/packages/gnome/gnome-keyring_0.4.4.bb
+++ b/packages/gnome/gnome-keyring_0.4.4.bb
@@ -4,7 +4,7 @@ SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/${PN}/0.4/${PN}-${PV}.tar.bz2"
inherit autotools pkgconfig
-DEPENDS = ""
+DEPENDS = "gtk+"
EXTRA_OECONF = "--disable-gtk-doc"
diff --git a/packages/gnome/gnome-menus_2.16.1.bb b/packages/gnome/gnome-menus_2.16.1.bb
new file mode 100644
index 0000000000..30e0abc14f
--- /dev/null
+++ b/packages/gnome/gnome-menus_2.16.1.bb
@@ -0,0 +1,14 @@
+DEPENDS = "python gnome-vfs libxml2 gconf popt gtk+"
+LICENSE = "GPL"
+
+
+inherit gnome pkgconfig
+
+do_stage() {
+autotools_stage_all
+}
+
+PACKAGES += "${PN}-python"
+FILES_${PN} += "${datadir}/desktop-directories/"
+FILES_${PN}-python = "${libdir}/python*"
+
diff --git a/packages/gnome/gnome-panel_2.12.1.bb b/packages/gnome/gnome-panel_2.12.1.bb
new file mode 100644
index 0000000000..3bb11dc052
--- /dev/null
+++ b/packages/gnome/gnome-panel_2.12.1.bb
@@ -0,0 +1,8 @@
+LICENSE = "GPL"
+DEPENDS = "libwnck orbit2 gtk+ libgnome libgnomeui gnome-desktop libglade gnome-menus"
+
+inherit gnome pkgconfig
+
+do_stage() {
+autotools_stage_all
+}
diff --git a/packages/gnome/gnome-vfs-2.16.3/gnome-vfs-no-kerberos.patch b/packages/gnome/gnome-vfs-2.16.3/gnome-vfs-no-kerberos.patch
new file mode 100644
index 0000000000..e25ecdd66f
--- /dev/null
+++ b/packages/gnome/gnome-vfs-2.16.3/gnome-vfs-no-kerberos.patch
@@ -0,0 +1,51 @@
+removes kerberos completely to avoid conflicts with installed kerberos
+--- configure.in.orig 2007-01-05 19:42:26.418541610 +0200
++++ configure.in 2007-01-05 19:42:56.604261797 +0200
+@@ -436,47 +436,6 @@
+ ])
+ AM_CONDITIONAL(HAVE_CDDA, test $have_cdda = yes)
+ AC_SUBST(CDDA_LIBS)
+-
+-dnl GSSAPI
+-dnl Check for Kerberos installation
+-have_gssapi=no
+-AC_PATH_PROG([KRB5_CONFIG], krb5-config, none, $PATH:/usr/kerberos/bin)
+-
+-if test "x$KRB5_CONFIG" != "xnone"; then
+- GSSAPI_LIBS="`${KRB5_CONFIG} --libs gssapi`"
+- GSSAPI_CFLAGS="`${KRB5_CONFIG} --cflags gssapi`"
+-
+- saved_CPPFLAGS="$CPPFLAGS"
+- saved_LIBS="$LIBS"
+- LIBS="$LIBS $GSSAPI_LIBS"
+- CPPFLAGS="$CPPFLAGS $GSSAPI_CFLAGS"
+- # MIT and Heimdal put gssapi.h in different places
+- AC_CHECK_HEADERS(gssapi/gssapi.h gssapi.h, [
+- AC_CHECK_FUNCS(gss_init_sec_context, [
+- AC_MSG_NOTICE([GSSAPI authentication support enabled])
+- AC_DEFINE(HAVE_GSSAPI, 1, [Define if GSSAPI support is enabled])
+- AC_CHECK_HEADERS(gssapi/gssapi_generic.h)
+- have_gssapi=yes
+-
+- # MIT Kerberos lacks GSS_C_NT_HOSTBASED_SERVICE
+- AC_CHECK_DECL([GSS_C_NT_HOSTBASED_SERVICE],,
+- [AC_DEFINE([GSS_C_NT_HOSTBASED_SERVICE], gss_nt_service_name,
+- [Define if GSS_C_NT_HOSTBASED_SERVICE is not defined otherwise])
+- ], [
+- #ifdef HAVE_GSSAPI_GSSAPI_H
+- #include <gssapi/gssapi.h>
+- #else
+- #include <gssapi.h>
+- #endif
+- ])
+- ])
+- break
+- ])
+- LIBS="$saved_LIBS"
+- CPPFLAGS="$saved_CPPFLAGS"
+-fi
+-AC_SUBST(GSSAPI_LIBS)
+-AC_SUBST(GSSAPI_CFLAGS)
+
+ dnl ******************************
+ dnl http-method (neon checks)
diff --git a/packages/gnome/gnome-vfs-dbus/dbus-api-change.patch b/packages/gnome/gnome-vfs-dbus/dbus-api-change.patch
deleted file mode 100644
index 38480c21e1..0000000000
--- a/packages/gnome/gnome-vfs-dbus/dbus-api-change.patch
+++ /dev/null
@@ -1,78 +0,0 @@
---- trunk/dbus-daemon/vfs-daemon.c.orig 2006-08-09 10:43:26.000000000 +0100
-+++ trunk/dbus-daemon/vfs-daemon.c 2006-08-09 10:45:59.000000000 +0100
-@@ -91,7 +91,7 @@
- g_warning ("Failed to acquire vfs-daemon service: %s", error.message);
- dbus_error_free (&error);
-
-- dbus_connection_disconnect (conn);
-+ dbus_connection_close (conn);
- dbus_connection_unref (conn);
- conn = NULL;
-
-@@ -101,7 +101,7 @@
- if (ret == DBUS_REQUEST_NAME_REPLY_EXISTS) {
- g_printerr ("VFS daemon already running, exiting.\n");
-
-- dbus_connection_disconnect (conn);
-+ dbus_connection_close (conn);
- dbus_connection_unref (conn);
- conn = NULL;
-
-@@ -111,7 +111,7 @@
- if (ret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
- g_printerr ("Not primary owner of the service, exiting.\n");
-
-- dbus_connection_disconnect (conn);
-+ dbus_connection_close (conn);
- dbus_connection_unref (conn);
- conn = NULL;
-
-@@ -124,7 +124,7 @@
- NULL)) {
- g_printerr ("Failed to register object with D-BUS.\n");
-
-- dbus_connection_disconnect (conn);
-+ dbus_connection_close (conn);
- dbus_connection_unref (conn);
- conn = NULL;
-
-@@ -152,7 +152,7 @@
- return;
- }
-
-- dbus_connection_disconnect (conn);
-+ dbus_connection_close (conn);
- dbus_connection_unref (conn);
- }
-
---- trunk/dbus-daemon/daemon-connection.c.orig 2006-08-09 10:43:32.000000000 +0100
-+++ trunk/dbus-daemon/daemon-connection.c 2006-08-09 10:46:26.000000000 +0100
-@@ -321,7 +321,7 @@
- d(g_print ("Last unref\n"));
-
- if (dbus_connection_get_is_connected (conn->conn)) {
-- dbus_connection_disconnect (conn->conn);
-+ dbus_connection_close (conn->conn);
- }
- dbus_connection_unref (conn->conn);
-
---- trunk/dbus-daemon/dbus-method.c.orig 2006-08-09 10:43:38.000000000 +0100
-+++ trunk/dbus-daemon/dbus-method.c 2006-08-09 10:46:57.000000000 +0100
-@@ -220,7 +220,7 @@
- if (!dbus_connection_add_filter (dbus_conn, message_handler,
- NULL, NULL)) {
- g_warning ("Failed to add filter to the connection.");
-- dbus_connection_disconnect (dbus_conn);
-+ dbus_connection_close (dbus_conn);
- dbus_connection_unref (dbus_conn);
-
- dbus_conn = NULL;
-@@ -1666,7 +1666,7 @@
- vfs_module_shutdown (GnomeVFSMethod* method)
- {
- if (dbus_conn) {
-- dbus_connection_disconnect (dbus_conn);
-+ dbus_connection_close (dbus_conn);
- dbus_connection_unref (dbus_conn);
-
- dbus_conn = NULL;
diff --git a/packages/gnome/gnome-vfs-dbus/glib-after-nameser.patch b/packages/gnome/gnome-vfs-dbus/glib-after-nameser.patch
deleted file mode 100644
index 87bf7c3939..0000000000
--- a/packages/gnome/gnome-vfs-dbus/glib-after-nameser.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- trunk/libgnomevfs/gnome-vfs-resolve.c.orig 2006-02-08 19:18:43.000000000 +0100
-+++ trunk/libgnomevfs/gnome-vfs-resolve.c 2006-02-08 19:21:42.000000000 +0100
-@@ -23,7 +23,6 @@
-
- #include <errno.h>
- #include <string.h>
--#include <glib.h>
- #ifndef G_OS_WIN32
- /* Keep <sys/types.h> above the network includes for FreeBSD. */
- #include <sys/types.h>
-@@ -48,6 +47,7 @@
- #define RELOAD_TIMEVAL 2
- #endif
-
-+#include <glib.h>
- #include <glib-object.h>
-
- #include <libgnomevfs/gnome-vfs-resolve.h>
diff --git a/packages/gnome/gnome-vfs-dbus/gssapi.patch b/packages/gnome/gnome-vfs-dbus/gssapi.patch
deleted file mode 100644
index a4fcd605f2..0000000000
--- a/packages/gnome/gnome-vfs-dbus/gssapi.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- gnome-vfs-dbus-2.8.4.4/configure.in~gssapi
-+++ gnome-vfs-dbus-2.8.4.4/configure.in
-@@ -456,6 +456,10 @@
- ])
- LIBS="$saved_LIBS"
- CPPFLAGS="$saved_CPPFLAGS"
-+ if test "x$have_gssapi" != "xyes"; then
-+ GSSAPI_LIBS=
-+ GSSAPI_CFLAGS=
-+ fi
- fi
- AC_SUBST(GSSAPI_LIBS)
- AC_SUBST(GSSAPI_CFLAGS)
diff --git a/packages/gnome/gnome-vfs-dbus/werror_compile.patch b/packages/gnome/gnome-vfs-dbus/werror_compile.patch
deleted file mode 100644
index f2eba7d712..0000000000
--- a/packages/gnome/gnome-vfs-dbus/werror_compile.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gnome-vfs-dbus-2.8.4.4/configure.in.old 2006-01-26 11:56:09.000000000 +0100
-+++ gnome-vfs-dbus-2.8.4.4/configure.in 2006-01-26 11:45:02.000000000 +0100
-@@ -279,7 +279,7 @@
-
- if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
- echo "enable compile warnings = $set_more_warnings"
-- VFS_CFLAGS="-Wall -Werror \
-+ VFS_CFLAGS="-Wall \
- -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
- -Wnested-externs -Wpointer-arith"
-
diff --git a/packages/gnome/gnome-vfs-dbus_2.8.4.4.bb b/packages/gnome/gnome-vfs-dbus_2.8.4.4.bb
deleted file mode 100644
index 5717115ebc..0000000000
--- a/packages/gnome/gnome-vfs-dbus_2.8.4.4.bb
+++ /dev/null
@@ -1,91 +0,0 @@
-LICENSE = "GPL"
-SECTION = "x11/gnome"
-PR = "r1"
-PROVIDES = "gnome-vfs"
-RPROVIDES = "gnome-vfs"
-
-inherit gnome pkgconfig
-
-DEPENDS = "libxml2 gconf-dbus dbus bzip2 gnome-mime-data zlib samba-3.0.14a"
-RRECOMMENDS = "gnome-vfs-plugin-file shared-mime-info"
-
-
-SRC_URI = "http://ftp.imendio.com/pub/extra/${PN}/${PN}-${PV}.tar.gz \
- file://gssapi.patch;patch=1;pnum=1 \
- file://gconftool-lossage.patch;patch=1;pnum=1"
-
-EXTRA_OECONF = "--with-ipc=dbus"
-
-FILES_${PN} += " ${libdir}/vfs"
-FILES_${PN}-dev += " ${libdir}/gnome-vfs-2.0/modules/*.a ${libdir}/gnome-vfs-2.0/modules/*.la ${libdir}/gnome-vfs-2.0/include"
-FILES_${PN}-doc += " ${datadir}/gtk-doc"
-
-GNOME_VFS_HEADERS = " \
-gnome-vfs-utils.h \
-gnome-vfs-application-registry.h \
-gnome-vfs-async-ops.h \
-gnome-vfs-ops.h \
-gnome-vfs-uri.h \
-gnome-vfs-standard-callbacks.h \
-gnome-vfs-module-callback.h \
-gnome-vfs-context.h \
-gnome-vfs-file-info.h \
-gnome-vfs-directory.h \
-gnome-vfs-mime-monitor.h \
-gnome-vfs-mime-handlers.h \
-gnome-vfs-result.h \
-gnome-vfs-job-limit.h \
-gnome-vfs-file-size.h \
-gnome-vfs-mime-utils.h \
-gnome-vfs-find-directory.h \
-gnome-vfs-init.h \
-gnome-vfs-handle.h \
-gnome-vfs.h \
-gnome-vfs-cancellation.h \
-gnome-vfs-xfer.h \
-gnome-vfs-monitor.h \
-gnome-vfs-types.h \
-gnome-vfs-volume-monitor.h \
-gnome-vfs-drive.h \
-gnome-vfs-volume.h \
-gnome-vfs-enum-types.h \
-gnome-vfs-address.h \
-gnome-vfs-dns-sd.h \
-gnome-vfs-mime-info-cache.h \
-gnome-vfs-resolve.h"
-
-GNOME_VFS_MODULE_HEADERS = " \
-gnome-vfs-mime-info.h \
-gnome-vfs-transform.h \
-gnome-vfs-ssl.h \
-gnome-vfs-inet-connection.h \
-gnome-vfs-socket.h \
-gnome-vfs-parse-ls.h \
-gnome-vfs-method.h \
-gnome-vfs-cancellable-ops.h \
-gnome-vfs-module.h \
-gnome-vfs-module-shared.h \
-gnome-vfs-module-callback-module-api.h \
-gnome-vfs-mime.h \
-gnome-vfs-socket-buffer.h"
-
-do_stage() {
- oe_libinstall -so -C libgnomevfs libgnomevfs-2 ${STAGING_LIBDIR}
- install -d ${STAGING_INCDIR}/gnome-vfs-2.0/libgnomevfs
- for i in ${GNOME_VFS_HEADERS}; do install -m 0644 libgnomevfs/$i ${STAGING_INCDIR}/gnome-vfs-2.0/libgnomevfs/; done
- install -d ${STAGING_INCDIR}/gnome-vfs-module-2.0/libgnomevfs
- for i in ${GNOME_VFS_MODULE_HEADERS}; do install -m 0644 libgnomevfs/$i ${STAGING_INCDIR}/gnome-vfs-module-2.0/libgnomevfs/; done
-}
-
-do_install() {
- oe_runmake ORBIT_IDL="${ORBIT_IDL_SRC}" DESTDIR="${D}" install
-}
-
-PACKAGES_DYNAMIC = "gnome-vfs-plugin-*"
-
-python populate_packages_prepend () {
- print bb.data.getVar('FILES_gnome-vfs', d, 1)
-
- plugindir = bb.data.expand('${libdir}/gnome-vfs-2.0/modules/', d)
- do_split_packages(d, plugindir, '^lib(.*)\.so$', 'gnome-vfs-plugin-%s', 'GNOME VFS plugin for %s')
-}
diff --git a/packages/gnome/gnome-vfs-dbus_svn.bb b/packages/gnome/gnome-vfs-dbus_svn.bb
deleted file mode 100644
index 7a48fb6ca3..0000000000
--- a/packages/gnome/gnome-vfs-dbus_svn.bb
+++ /dev/null
@@ -1,110 +0,0 @@
-LICENSE = "GPL"
-SECTION = "x11/gnome"
-PR = "r1"
-PROVIDES = "gnome-vfs"
-RPROVIDES = "gnome-vfs"
-
-PV = "2.8.4.4+svn${SRCDATE}"
-
-inherit gnome pkgconfig
-
-DEPENDS = "gtk-doc-native libxml2 gconf-dbus dbus bzip2 gnome-mime-data zlib samba-3.0.14a"
-RRECOMMENDS = "gnome-vfs-plugin-file shared-mime-info"
-
-
-SRC_URI = "svn://developer.imendio.com/svn/gnome-vfs-dbus;module=trunk;proto=http \
- file://gssapi.patch;patch=1;pnum=1 \
- file://gconftool-lossage.patch;patch=1;pnum=1 \
- file://glib-after-nameser.patch;patch=1;pnum=1 \
- file://gtk-doc.m4 \
- file://gtk-doc.make \
- file://werror_compile.patch;patch=1;pnum=1 \
- file://dbus-api-change.patch;patch=1"
-
-EXTRA_OECONF = "--with-ipc=dbus --disable-gtk-doc"
-S = "${WORKDIR}/trunk"
-
-FILES_${PN} += " ${libdir}/vfs"
-FILES_${PN}-dev += " ${libdir}/gnome-vfs-2.0/modules/*.a ${libdir}/gnome-vfs-2.0/modules/*.la ${libdir}/gnome-vfs-2.0/include"
-#FILES_${PN}-doc += " ${datadir}/gtk-doc"
-
-GNOME_VFS_HEADERS = " \
-gnome-vfs-utils.h \
-gnome-vfs-application-registry.h \
-gnome-vfs-async-ops.h \
-gnome-vfs-ops.h \
-gnome-vfs-uri.h \
-gnome-vfs-standard-callbacks.h \
-gnome-vfs-module-callback.h \
-gnome-vfs-context.h \
-gnome-vfs-file-info.h \
-gnome-vfs-directory.h \
-gnome-vfs-mime-monitor.h \
-gnome-vfs-mime-handlers.h \
-gnome-vfs-mime-deprecated.h \
-gnome-vfs-result.h \
-gnome-vfs-job-limit.h \
-gnome-vfs-file-size.h \
-gnome-vfs-mime-utils.h \
-gnome-vfs-find-directory.h \
-gnome-vfs-init.h \
-gnome-vfs-handle.h \
-gnome-vfs.h \
-gnome-vfs-cancellation.h \
-gnome-vfs-xfer.h \
-gnome-vfs-monitor.h \
-gnome-vfs-types.h \
-gnome-vfs-volume-monitor.h \
-gnome-vfs-drive.h \
-gnome-vfs-volume.h \
-gnome-vfs-enum-types.h \
-gnome-vfs-address.h \
-gnome-vfs-dns-sd.h \
-gnome-vfs-mime-info-cache.h \
-gnome-vfs-resolve.h"
-
-GNOME_VFS_MODULE_HEADERS = " \
-gnome-vfs-mime-info.h \
-gnome-vfs-transform.h \
-gnome-vfs-ssl.h \
-gnome-vfs-inet-connection.h \
-gnome-vfs-socket.h \
-gnome-vfs-parse-ls.h \
-gnome-vfs-method.h \
-gnome-vfs-cancellable-ops.h \
-gnome-vfs-module.h \
-gnome-vfs-module-shared.h \
-gnome-vfs-module-callback-module-api.h \
-gnome-vfs-mime.h \
-gnome-vfs-socket-buffer.h"
-
-do_configure_prepend() {
- mkdir -p m4
- install ${WORKDIR}/gtk-doc.m4 ./m4/
- install ${WORKDIR}/gtk-doc.make ./
-}
-
-do_compile_prepend() {
- find ${S} -name Makefile | xargs sed -i 's:-Werror::'
-}
-
-do_stage() {
- oe_libinstall -so -C libgnomevfs libgnomevfs-2 ${STAGING_LIBDIR}
- install -d ${STAGING_INCDIR}/gnome-vfs-2.0/libgnomevfs
- for i in ${GNOME_VFS_HEADERS}; do install -m 0644 libgnomevfs/$i ${STAGING_INCDIR}/gnome-vfs-2.0/libgnomevfs/; done
- install -d ${STAGING_INCDIR}/gnome-vfs-module-2.0/libgnomevfs
- for i in ${GNOME_VFS_MODULE_HEADERS}; do install -m 0644 libgnomevfs/$i ${STAGING_INCDIR}/gnome-vfs-module-2.0/libgnomevfs/; done
-}
-
-do_install() {
- oe_runmake ORBIT_IDL="${ORBIT_IDL_SRC}" DESTDIR="${D}" install
-}
-
-PACKAGES_DYNAMIC = "gnome-vfs-plugin-*"
-
-python populate_packages_prepend () {
- print bb.data.getVar('FILES_gnome-vfs', d, 1)
-
- plugindir = bb.data.expand('${libdir}/gnome-vfs-2.0/modules/', d)
- do_split_packages(d, plugindir, '^lib(.*)\.so$', 'gnome-vfs-plugin-%s', 'GNOME VFS plugin for %s')
-}
diff --git a/packages/gnome/gnome-vfs_2.16.3.bb b/packages/gnome/gnome-vfs_2.16.3.bb
index a0180fdbb2..b1f634c0e9 100644
--- a/packages/gnome/gnome-vfs_2.16.3.bb
+++ b/packages/gnome/gnome-vfs_2.16.3.bb
@@ -2,21 +2,23 @@ LICENSE = "GPL"
DEPENDS = "libxml2 gconf gnutls avahi dbus bzip2 gnome-mime-data zlib"
RRECOMMENDS = "gnome-vfs-plugin-file gnome-mime-data shared-mime-info"
-PR = "r0"
+PR = "r2"
inherit gnome
# This is to provide compatibility with the gnome-vfs DBus fork
PROVIDES = "gnome-vfs-plugin-dbus"
-RRPEPLACES = "gnome-vfs-dbus"
+RREPLACES = "gnome-vfs-dbus"
-SRC_URI += "file://gconftool-lossage.patch;patch=1;pnum=1"
+SRC_URI += "file://gconftool-lossage.patch;patch=1;pnum=1 \
+ file://gnome-vfs-no-kerberos.patch;patch=1;pnum=0"
EXTRA_OECONF = " \
--disable-openssl \
--enable-gnutls \
--enable-avahi \
- "
+ --with-samba-includes=${STAGING_INCDIR} \
+ "
FILES_${PN} += " ${libdir}/vfs"
FILES_${PN}-dev += " ${libdir}/gnome-vfs-2.0/include"
diff --git a/packages/gnome/goffice_0.2.1.bb b/packages/gnome/goffice_0.2.1.bb
index 59372fa5ec..2048cdd34d 100644
--- a/packages/gnome/goffice_0.2.1.bb
+++ b/packages/gnome/goffice_0.2.1.bb
@@ -1,9 +1,11 @@
DESCRIPTION="Gnome Office Library"
LICENSE="GPLv2"
-PR="r0"
+PR="r1"
DEPENDS="glib-2.0 gtk+ pango libgnomeprint libgsf libglade libxml2 libart-lgpl"
+FILES_${PN}-dbg += "${libdir}/goffice/${PV}/plugins/*/.debug"
+
inherit gnome pkgconfig
do_stage() {
diff --git a/packages/gnome/goffice_0.3.2.bb b/packages/gnome/goffice_0.3.2.bb
index 90586ffbd6..a81f96910c 100644
--- a/packages/gnome/goffice_0.3.2.bb
+++ b/packages/gnome/goffice_0.3.2.bb
@@ -1,11 +1,13 @@
DESCRIPTION="Gnome Office Library"
LICENSE="GPLv2"
-PR="r0"
+PR="r1"
DEFAULT_PREFERENCE = "-1"
DEPENDS="glib-2.0 gtk+ pango cairo libgnomeprint libgsf libglade libxml2 libart-lgpl"
+FILES_${PN}-dbg += "${libdir}/goffice/${PV}/plugins/*/.debug"
+
inherit gnome pkgconfig
do_stage() {
diff --git a/packages/gnome/kanjipad_svn.bb b/packages/gnome/kanjipad_svn.bb
new file mode 100644
index 0000000000..1e0d943da7
--- /dev/null
+++ b/packages/gnome/kanjipad_svn.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "KanjiPad is a very simple program for handwriting recognition"
+LICENSE = "GPLv2"
+
+DEPENDS = "gtk+ perl-native"
+
+PV = "2.0.0+svn${SRCDATE}"
+
+inherit pkgconfig
+
+SRC_URI = "svn://svn.gnome.org/svn/${PN}/;module=trunk"
+
+S = "${WORKDIR}/trunk"
+
+do_compile_prepend() {
+ export CFLAGS='${TARGET_CFLAGS} -DFOR_PILOT_COMPAT -DKP_LIBDIR="${libdir}/kanjipad" -DBINDIR="${bindir}" `pkg-config --cflags gtk+-2.0` `pkg-config --cflags glib-2.0`'
+}
+
+
+
diff --git a/packages/gnome/libart-lgpl/i486/.mtn2git_empty b/packages/gnome/libart-lgpl/i486/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gnome/libart-lgpl/i486/.mtn2git_empty
diff --git a/packages/gnome/libart-lgpl/i486/art_config.h b/packages/gnome/libart-lgpl/i486/art_config.h
new file mode 100644
index 0000000000..b0e74ad6ae
--- /dev/null
+++ b/packages/gnome/libart-lgpl/i486/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 4
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/packages/gnome/libbacon_cvs.bb b/packages/gnome/libbacon_cvs.bb
deleted file mode 100644
index ce4b72ccab..0000000000
--- a/packages/gnome/libbacon_cvs.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "Bacon is a multimedia library"
-LICENSE = "GPLv2"
-
-DEPENDS = "glib-2.0"
-
-PV = "0.0+cvs${SRCDATE}"
-
-inherit gnome
-
-SRC_URI = "cvs://anonymous@anoncvs.gnome.org/cvs/gnome;module=${PN}"
-
-S = "${WORKDIR}/${PN}"
-
-do_stage() {
- autotools_stage_all
-}
-
-
-
-
diff --git a/packages/gnome/libbacon_svn.bb b/packages/gnome/libbacon_svn.bb
new file mode 100644
index 0000000000..2f36c3d808
--- /dev/null
+++ b/packages/gnome/libbacon_svn.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Bacon is a multimedia library"
+LICENSE = "GPLv2"
+
+DEPENDS = "glib-2.0"
+
+PV = "0.0+svn${SRCDATE}"
+
+inherit gnome
+
+SRC_URI = "svn://svn.gnome.org/svn/${PN}/;module=trunk"
+
+S = "${WORKDIR}/trunk"
+
+do_stage() {
+ autotools_stage_all
+}
+
+
+
+
diff --git a/packages/gnome/libbonobo_2.14.0.bb b/packages/gnome/libbonobo_2.14.0.bb
index 0399b8b6c0..7b4cbb08e7 100644
--- a/packages/gnome/libbonobo_2.14.0.bb
+++ b/packages/gnome/libbonobo_2.14.0.bb
@@ -1,5 +1,5 @@
LICENSE = "GPL"
-PR = "r0"
+PR = "r1"
SECTION = "x11/gnome/libs"
DESCRIPTION = "Bonobo CORBA interfaces library"
@@ -12,9 +12,13 @@ DEPENDS = "glib-2.0 orbit2 intltool-native libxml2"
ORBIT_IDL_SRC = "${STAGING_BINDIR_NATIVE}/orbit-idl-2"
FILES_${PN} += "${libdir}/orbit-2.0/*.so ${libdir}/bonobo/monikers/*.so"
+FILES_${PN}-dbg += "${libdir}/bonobo/monikers/.debug \
+ ${libdir}/bonobo-2.0/samples/.debug ${libdir}/orbit-2.0/.debug"
FILES_${PN}-dev += "${libdir}/orbit-2.0/* ${libdir}/bonobo/monikers/* \
${libdir}/bonobo-2.0/samples"
+LEAD_SONAME = "libbonobo-2.so"
+
PARALLEL_MAKE = ""
do_configure_prepend() {
diff --git a/packages/gnome/libbonoboui_2.14.0.bb b/packages/gnome/libbonoboui_2.14.0.bb
index 049eb135ad..53380c6fa0 100644
--- a/packages/gnome/libbonoboui_2.14.0.bb
+++ b/packages/gnome/libbonoboui_2.14.0.bb
@@ -1,13 +1,14 @@
LICENSE = "GPL"
SECTION = "x11/gnome/libs"
-PR = "r0"
+PR = "r1"
inherit gnome pkgconfig
FILES_${PN} += "${libdir}/libglade/2.0/*.so"
FILES_${PN}-dev += "${libdir}/libglade/2.0/* ${datadir}/gnome-2.0/ui \
${libdir}/bonobo-2.0/samples"
-FILES_${PN}-dbg += "${libdir}/libglade/2.0/.debug/*.so"
+FILES_${PN}-dbg += "${libdir}/bonobo-2.0/samples/.debug \
+ ${libdir}/libglade/2.0/.debug"
DEPENDS = "libgnomecanvas libbonobo libgnome glib-2.0 gtk-doc gconf libxml2 libglade"
diff --git a/packages/gnome/libgnomeprint_2.8.2.bb b/packages/gnome/libgnomeprint_2.8.2.bb
index b154c5b652..a7db775e22 100644
--- a/packages/gnome/libgnomeprint_2.8.2.bb
+++ b/packages/gnome/libgnomeprint_2.8.2.bb
@@ -6,6 +6,8 @@ DEPENDS = "libxml2 libgnomecups glib-2.0 pango libart-lgpl fontconfig popt gnome
inherit flow-lossage pkgconfig gnome
+FILES_${PN}-dbg += "${libdir}/libgnomeprint/2.8.2/modules/transports/.debug \
+ ${libdir}/libgnomeprint/2.8.2/modules/.debug"
do_stage() {
install -d ${STAGING_LIBDIR}
diff --git a/packages/gnome/libgnomeui_2.12.0.bb b/packages/gnome/libgnomeui_2.12.0.bb
index 2465de03ca..9324676cec 100644
--- a/packages/gnome/libgnomeui_2.12.0.bb
+++ b/packages/gnome/libgnomeui_2.12.0.bb
@@ -1,6 +1,6 @@
LICENSE = "GPL"
SECTION = "x11/gnome/libs"
-PR = "r2"
+PR = "r3"
DEPENDS = "libgnome libgnomecanvas libbonoboui gnome-keyring"
DESCRIPTION = "GNOME User Interface Library"
@@ -9,6 +9,9 @@ FILES_${PN} += "${libdir}/gtk-2.0/*/filesystems/lib*.so \
inherit gnome
+FILES_${PN}-dev += "${libdir}/gtk-2.0/*/filesystems/*.la ${libdir}/gtk-2.0/*/filesystems/*.a ${libdir}/libglade/*/*.la ${libdir}/libglade/*/*.a"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/*/filesystems/.debug/ ${libdir}/libglade/*/.debug/"
+
SRC_URI += "file://gnome-stock-pixbufs.h file://no-pixbuf-csource.patch;patch=1"
EXTRA_OECONF = "--disable-gtk-doc"
diff --git a/packages/gnome/libgnomeui_2.16.0.bb b/packages/gnome/libgnomeui_2.16.0.bb
deleted file mode 100644
index 8f3e0a725c..0000000000
--- a/packages/gnome/libgnomeui_2.16.0.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-LICENSE = "GPL"
-SECTION = "x11/gnome/libs"
-PR = "r0"
-DEPENDS = "libgnome libgnomecanvas libbonoboui gnome-keyring"
-DESCRIPTION = "GNOME User Interface Library"
-
-FILES_${PN} += "${libdir}/gtk-2.0/*/filesystems/lib*.so \
- ${libdir}/libglade/*/lib*.so"
-
-inherit gnome
-
-SRC_URI += "file://gnome-stock-pixbufs.h file://no-pixbuf-csource.patch;patch=1"
-
-EXTRA_OECONF = "--disable-gtk-doc"
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/gnome-stock-pixbufs.h ${S}/libgnomeui/pixmaps/gnome-stock-pixbufs.h
-}
-
-do_stage() {
-autotools_stage_all
-}
diff --git a/packages/gnome/libgnomeui_2.16.1.bb b/packages/gnome/libgnomeui_2.16.1.bb
new file mode 100644
index 0000000000..ca299d8cac
--- /dev/null
+++ b/packages/gnome/libgnomeui_2.16.1.bb
@@ -0,0 +1,27 @@
+LICENSE = "GPL"
+SECTION = "x11/gnome/libs"
+PR = "r1"
+DEPENDS = "libgnome libgnomecanvas libbonoboui gnome-keyring"
+DESCRIPTION = "GNOME User Interface Library"
+
+DEFAULT_PREFERENCE = "-1"
+
+FILES_${PN} += "${libdir}/gtk-2.0/*/filesystems/lib*.so \
+ ${libdir}/libglade/*/lib*.so"
+
+inherit gnome
+
+FILES_${PN}-dev += "${libdir}/gtk-2.0/*/filesystems/*.la ${libdir}/gtk-2.0/*/filesystems/*.a ${libdir}/libglade/*/*.la ${libdir}/libglade/*/*.a"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/*/filesystems/.debug/ ${libdir}/libglade/*/.debug/"
+
+SRC_URI += "file://gnome-stock-pixbufs.h file://no-pixbuf-csource.patch;patch=1"
+
+EXTRA_OECONF = "--disable-gtk-doc"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/gnome-stock-pixbufs.h ${S}/libgnomeui/pixmaps/gnome-stock-pixbufs.h
+}
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/gnome/libsoup_2.2.98.bb b/packages/gnome/libsoup_2.2.98.bb
index 2cddb02ac4..c466a3a9c9 100644
--- a/packages/gnome/libsoup_2.2.98.bb
+++ b/packages/gnome/libsoup_2.2.98.bb
@@ -13,7 +13,7 @@ FILES_${PN}-dev = "${includedir}/ ${libdir}/"
FILES_${PN}-doc = "${datadir}/"
do_stage() {
- rm -f ${STAGING_DATADIR}/pkgconfig/libsoup*
+ rm -f ${PKG_CONFIG_PATH}/libsoup*
autotools_stage_all
- ln -s ${STAGING_DATADIR}/pkgconfig/libsoup.pc ${STAGING_DATADIR}/pkgconfig/libsoup-2.2.pc
+ ln -sf ${PKG_CONFIG_PATH}/libsoup.pc ${PKG_CONFIG_PATH}/libsoup-2.2.pc
}
diff --git a/packages/gnumeric/gnumeric_1.6.3.bb b/packages/gnumeric/gnumeric_1.6.3.bb
index c41b971530..9c757fb7ff 100644
--- a/packages/gnumeric/gnumeric_1.6.3.bb
+++ b/packages/gnumeric/gnumeric_1.6.3.bb
@@ -4,6 +4,8 @@ S = "${WORKDIR}/gnumeric-${PV}"
DEPENDS = "libgsf gtk+ libxml2 goffice libglade libart-lgpl intltool-native libgnomecanvas libgnomeprint libgnomeprintui libbonoboui"
DESCRIPTION = "Gnumeric spreadsheet for GNOME"
+PR = "r1"
+
inherit gnome flow-lossage
SRC_URI += "file://remove-docs.patch;patch=1"
@@ -12,6 +14,7 @@ EXTRA_OECONF=" --without-perl "
PACKAGES_DYNAMIC = "gnumeric-plugin-*"
+FILES_${PN}-dbg += "${libdir}/gnumeric/1.6.3/plugins/*/.debug"
FILES_gnumeric_append = " /usr/lib/libspreadsheet-${PV}.so "
python populate_packages_prepend () {
diff --git a/packages/gnupg/gnupg-1.4.0/15_free_caps.patch b/packages/gnupg/gnupg-1.4.0/15_free_caps.patch
deleted file mode 100644
index 20949a7d49..0000000000
--- a/packages/gnupg/gnupg-1.4.0/15_free_caps.patch
+++ /dev/null
@@ -1,93 +0,0 @@
---- /home/weasel/tmp/debian-gpg/gnupg-1.2.5/g10/status.c 2004-07-21 09:59:45.000000000 +0200
-+++ gnupg-1.2.5/g10/status.c 2004-08-01 20:07:42.071690680 +0200
-@@ -346,6 +346,9 @@
- {
- char buf[100];
- struct shmid_ds shmds;
-+#ifdef USE_CAPABILITIES
-+ cap_t caps;
-+#endif
-
- #ifndef IPC_RMID_DEFERRED_RELEASE
- atexit( remove_shmid );
-@@ -371,7 +374,9 @@
- (unsigned)shm_size/1024, shm_area, shm_id );
- if( lock_mem ) {
- #ifdef USE_CAPABILITIES
-- cap_set_proc( cap_from_text("cap_ipc_lock+ep") );
-+ caps = cap_from_text("cap_ipc_lock=ep");
-+ cap_set_proc( caps );
-+ cap_free( caps );
- #endif
- /* (need the cast for Solaris with Sun's workshop compilers) */
- if ( mlock ( (char*)shm_area, shm_size) )
-@@ -380,7 +385,9 @@
- else
- shm_is_locked = 1;
- #ifdef USE_CAPABILITIES
-- cap_set_proc( cap_from_text("cap_ipc_lock+p") );
-+ caps = cap_from_text("cap_ipc_lock=p");
-+ cap_set_proc( caps );
-+ cap_free( caps );
- #endif
- }
-
-@@ -407,7 +414,9 @@
-
- if( lock_mem ) {
- #ifdef USE_CAPABILITIES
-- cap_set_proc( cap_from_text("cap_ipc_lock+ep") );
-+ caps = cap_from_text("cap_ipc_lock=ep");
-+ cap_set_proc( caps );
-+ cap_free( caps );
- #endif
- #ifdef IPC_HAVE_SHM_LOCK
- if ( shmctl (shm_id, SHM_LOCK, 0) )
-@@ -419,7 +428,9 @@
- log_info("Locking shared memory %d failed: No way to do it\n", shm_id );
- #endif
- #ifdef USE_CAPABILITIES
-- cap_set_proc( cap_from_text("cap_ipc_lock+p") );
-+ caps = cap_from_text("cap_ipc_lock=p");
-+ cap_set_proc( caps );
-+ cap_free( caps );
- #endif
- }
-
---- /home/weasel/tmp/debian-gpg/gnupg-1.2.5/util/secmem.c 2004-02-24 17:06:58.000000000 +0100
-+++ gnupg-1.2.5/util/secmem.c 2004-08-01 20:08:10.873412378 +0200
-@@ -97,12 +97,18 @@
- {
- #if defined(USE_CAPABILITIES) && defined(HAVE_MLOCK)
- int err;
-+ cap_t caps;
-+
-+ caps = cap_from_text("cap_ipc_lock=ep");
-+ cap_set_proc( caps );
-+ cap_free( caps );
-
-- cap_set_proc( cap_from_text("cap_ipc_lock+ep") );
- err = mlock( p, n );
- if( err && errno )
- err = errno;
-- cap_set_proc( cap_from_text("cap_ipc_lock+p") );
-+ caps = cap_from_text("cap_ipc_lock=p");
-+ cap_set_proc( caps );
-+ cap_free( caps );
-
- if( err ) {
- if( errno != EPERM
-@@ -301,8 +307,12 @@
- if( !n ) {
- #ifndef __riscos__
- #ifdef USE_CAPABILITIES
-+ cap_t caps;
-+
- /* drop all capabilities */
-- cap_set_proc( cap_from_text("all-eip") );
-+ caps = cap_from_text("all-eip");
-+ cap_set_proc( caps );
-+ cap_free( caps );
-
- #elif !defined(HAVE_DOSISH_SYSTEM)
- uid_t uid;
diff --git a/packages/gnupg/gnupg-1.4.0/16_min_privileges.patch b/packages/gnupg/gnupg-1.4.0/16_min_privileges.patch
deleted file mode 100644
index b29233b33b..0000000000
--- a/packages/gnupg/gnupg-1.4.0/16_min_privileges.patch
+++ /dev/null
@@ -1,68 +0,0 @@
---- gnupg-1.4.0/g10/g10.c 2004-12-16 09:47:36.000000000 +0000
-+++ /tmp/dpep.O5S02c/gnupg-1.4.0/g10/g10.c 2005-02-03 23:31:40.645873299 +0000
-@@ -69,6 +69,11 @@
- #endif
-
-
-+#ifdef USE_CAPABILITIES
-+#include <sys/capability.h>
-+#include <sys/prctl.h>
-+#endif
-+
- enum cmd_and_opt_values
- {
- aNull = 0,
-@@ -1618,6 +1623,10 @@
- #ifdef USE_SHM_COPROCESSING
- ulong requested_shm_size=0;
- #endif
-+#ifdef USE_CAPABILITIES
-+ uid_t curr_uid;
-+ cap_t caps;
-+#endif
-
- #ifdef __riscos__
- opt.lock_once = 1;
-@@ -1629,6 +1638,33 @@
- * when adding any stuff between here and the call to
- * secmem_init() somewhere after the option parsing
- */
-+
-+ /* if we use capabilities and run as root, we can immediately setuid back
-+ * to the normal user and only keep CAP_IPC_LOCK until the shared memory is
-+ * set up.
-+ */
-+#ifdef USE_CAPABILITIES
-+ curr_uid = getuid();
-+ if( curr_uid && !geteuid() ) { /* we are setuid root */
-+ if( prctl( PR_SET_KEEPCAPS, 1, 0, 0, 0 ) ) {
-+ perror( "main(): could not keep capabilities" );
-+ return -100;
-+ }
-+
-+ if( setuid( curr_uid ) ) {
-+ perror( "main(): could not set user id" );
-+ return -100;
-+ }
-+
-+ caps = cap_from_text( "cap_ipc_lock=p" );
-+ if( cap_set_proc( caps ) ) {
-+ perror( "main(): could not install capabilities" );
-+ return -100;
-+ }
-+ cap_free( caps );
-+ }
-+#endif
-+
- log_set_name("gpg");
- secure_random_alloc(); /* put random number into secure memory */
- may_coredump = disable_core_dumps();
-@@ -1747,7 +1783,7 @@
- }
- #endif
- /* initialize the secure memory. */
-- got_secmem=secmem_init( 32768 );
-+ got_secmem=secmem_init( 32768 ); /* this will drop all remaining privileges */
- maybe_setuid = 0;
- /* Okay, we are now working under our real uid */
-
diff --git a/packages/gnupg/gnupg-1.4.0/18_ca_po_update.patch b/packages/gnupg/gnupg-1.4.0/18_ca_po_update.patch
deleted file mode 100644
index cb7d46b087..0000000000
--- a/packages/gnupg/gnupg-1.4.0/18_ca_po_update.patch
+++ /dev/null
@@ -1,6430 +0,0 @@
---- gnupg-1.4.0/po/ca.po 2004-12-16 09:57:09.000000000 +0000
-+++ /tmp/dpep.nbDh2k/gnupg-1.4.0/po/ca.po 2005-02-05 00:49:28.000000000 +0000
-@@ -1,44 +1,44 @@
--# Missatges de gnupg en catal�.
--# Copyright � 2001, 2002, 2003 Free Software Foundation, Inc.
--# Carles Sadurn� Anguita <sadurni@jazzfree.com>, 2001.
--# Jordi Mallach <jordi@gnu.org>, 2001, 2002, 2003.
-+# Missatges de gnupg en català.
-+# Copyright © 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
-+# Carles Sadurní Anguita <sadurni@jazzfree.com>, 2001.
-+# Jordi Mallach <jordi@gnu.org>, 2001, 2002, 2003, 2005.
- #
- # Coses (jm):
--# ID d'usuari �s mascul�? Hi ha una mescla...
--# (ivb: ID == identificador -> mascul�)
-+# ID d'usuari és masculí? Hi ha una mescla...
-+# (ivb: ID == identificador -> masculí)
- # Canviar ID -> ID d'usuari
- # Xifratge vs. Xifrat
--# (ivb: xifratge -> acci�, xifrat -> adjectiu)
-+# (ivb: xifratge -> acció, xifrat -> adjectiu)
- # + coses (ivb):
--# - Algunes frases incompletes �x desconegut� -> �x �s desconegut�.
--# - �algoritme� o �algorisme�? (ambd�s s�n correctes)
-+# - Algunes frases incompletes «x desconegut» -> «x és desconegut».
-+# - «algoritme» o «algorisme»? (ambdós són correctes)
- # - digest -> resum
--# - �anell� o �clauer�? (key ring -> clauer)
-+# - «anell» o «clauer»? (key ring -> clauer)
- # - bug -> error? (del recull)
--# - Crec q uses m�s �signatura� q �firma�; unifique.
--# - Usar maj�scules x ressaltar (com original)?
-+# - Crec q uses més «signatura» q «firma»; unifique.
-+# - Usar majúscules x ressaltar (com original)?
- # - Hi ha cert desordre en les cometes ;)
--# - Frases �ndies completades.
--# - Algunes incoher�ncies: error {en la lectura,en llegir,mentre es llegia}
-+# - Frases índies completades.
-+# - Algunes incoherències: error {en la lectura,en llegir,mentre es llegia}
- # - Probablement he clavat la pota en tots els Photo ID :P
--# - Nom�s es maneja amb les mans.
--# - sapigueu -> sapieu? (x coher�ncia)
-+# - Només es maneja amb les mans.
-+# - sapigueu -> sapieu? (x coherència)
- msgid ""
- msgstr ""
--"Project-Id-Version: gnupg 1.2.4rc\n"
-+"Project-Id-Version: gnupg 1.4.0\n"
- "Report-Msgid-Bugs-To: gnupg-i18n@gnupg.org\n"
- "POT-Creation-Date: 2004-12-16 10:56+0100\n"
--"PO-Revision-Date: 2003-12-05 19:15+0100\n"
-+"PO-Revision-Date: 2005-02-04 02:04+0100\n"
- "Last-Translator: Jordi Mallach <jordi@gnu.org>\n"
- "Language-Team: Catalan <ca@dodds.net>\n"
- "MIME-Version: 1.0\n"
--"Content-Type: text/plain; charset=ISO-8859-1\n"
-+"Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-
- #: cipher/primegen.c:120
--#, fuzzy, c-format
-+#, c-format
- msgid "can't gen prime with pbits=%u qbits=%u\n"
--msgstr "no s'ha pogut generar un prim amb menys de %d bits\n"
-+msgstr "no s'ha pogut generar un prim amb pbits=%u qbits=%u\n"
-
- #: cipher/primegen.c:311
- #, c-format
-@@ -47,7 +47,7 @@
-
- #: cipher/random.c:163
- msgid "no entropy gathering module detected\n"
--msgstr "no s'ha trobat cap m�dul d'acumulaci� d'entropia\n"
-+msgstr "no s'ha trobat cap mòdul d'acumulació d'entropia\n"
-
- #: cipher/random.c:387 g10/card-util.c:613 g10/card-util.c:682
- #: g10/dearmor.c:60 g10/dearmor.c:109 g10/encode.c:181 g10/encode.c:488
-@@ -58,32 +58,31 @@
- #: g10/tdbio.c:600
- #, c-format
- msgid "can't open `%s': %s\n"
--msgstr "no s'ha pogut obrir �%s�: %s\n"
-+msgstr "no s'ha pogut obrir «%s»: %s\n"
-
- #: cipher/random.c:391
- #, c-format
- msgid "can't stat `%s': %s\n"
--msgstr "no es pot fer stat de �%s�: %s\n"
-+msgstr "no es pot fer stat de «%s»: %s\n"
-
--# Descartar, deixar passar... ignorar �s un anglicisme. ivb
-+# Descartar, deixar passar... ignorar és un anglicisme. ivb
- #: cipher/random.c:396
- #, c-format
- msgid "`%s' is not a regular file - ignored\n"
--msgstr "�%s� no �s un fitxer regular: es descarta\n"
-+msgstr "«%s» no és un fitxer regular: es descarta\n"
-
- #: cipher/random.c:401
- msgid "note: random_seed file is empty\n"
--msgstr "nota: el fitxer random_seed �s buit\n"
-+msgstr "nota: el fitxer random_seed és buit\n"
-
- #: cipher/random.c:407
- msgid "WARNING: invalid size of random_seed file - not used\n"
--msgstr ""
--"AV�S: el tamany del fitxer random_seed no �s v�lid - no s'usar�\n"
-+msgstr "AVÃS: el tamany del fitxer random_seed no és vàlid - no s'usarà\n"
-
- #: cipher/random.c:415
- #, c-format
- msgid "can't read `%s': %s\n"
--msgstr "no s'ha pogut llegir �%s�: %s\n"
-+msgstr "no s'ha pogut llegir «%s»: %s\n"
-
- #: cipher/random.c:453
- msgid "note: random_seed file not updated\n"
-@@ -94,22 +93,22 @@
- #: g10/openfile.c:348 g10/sign.c:779 g10/sign.c:1037 g10/tdbio.c:535
- #, c-format
- msgid "can't create `%s': %s\n"
--msgstr "no s'ha pogut crear �%s�: %s\n"
-+msgstr "no s'ha pogut crear «%s»: %s\n"
-
- #: cipher/random.c:480
- #, c-format
- msgid "can't write `%s': %s\n"
--msgstr "no s'ha pogut escriure �%s�: %s\n"
-+msgstr "no s'ha pogut escriure «%s»: %s\n"
-
- # No em passe! ;) ivb
- #: cipher/random.c:483
- #, c-format
- msgid "can't close `%s': %s\n"
--msgstr "no s'ha pogut tancar �%s�: %s\n"
-+msgstr "no s'ha pogut tancar «%s»: %s\n"
-
- #: cipher/random.c:728
- msgid "WARNING: using insecure random number generator!!\n"
--msgstr "AV�S: esteu usant un generador de nombres aleatoris insegur!!\n"
-+msgstr "AVÃS: esteu usant un generador de nombres aleatoris insegur!!\n"
-
- #: cipher/random.c:729
- msgid ""
-@@ -119,8 +118,8 @@
- "DON'T USE ANY DATA GENERATED BY THIS PROGRAM!!\n"
- "\n"
- msgstr ""
--"El generador de nombres aleatoris �s nom�s un peda�\n"
--"per a que funcioni - de cap manera �s un GNA fort!\n"
-+"El generador de nombres aleatoris és només un pedaç\n"
-+"per a que funcioni - de cap manera és un GNA fort!\n"
- "\n"
- "NO UTILITZEU CAP DADA GENERADA PER AQUEST PROGRAMA!!\n"
- "\n"
-@@ -132,7 +131,7 @@
- "of the entropy.\n"
- msgstr ""
- "Si us plau, espereu mentre es genera entropia. Feu alguna tasca si\n"
--"vos ajuda no avorrir-vos, ja que ajudar� a la qualitat de la entropia.\n"
-+"vos ajuda no avorrir-vos, ja que ajudarà a la qualitat de la entropia.\n"
-
- #: cipher/rndlinux.c:134
- #, c-format
-@@ -143,18 +142,17 @@
- msgstr ""
- "\n"
- "No hi ha prou bytes aleatoris. Per favor, feu alguna altra cosa per que el\n"
--"sistema tinga oportunitat de recollir m�s entropia. (Calen %d bytes "
--"m�s)\n"
-+"sistema tinga oportunitat de recollir més entropia. (Calen %d bytes més)\n"
-
- #: g10/app-openpgp.c:539
--#, fuzzy, c-format
-+#, c-format
- msgid "failed to store the fingerprint: %s\n"
--msgstr "no s'ha pogut inicialitzar la base de dades de confian�a: %s\n"
-+msgstr "no s'ha pogut emmagatzemar l'empremta digital: %s\n"
-
- #: g10/app-openpgp.c:552
- #, fuzzy, c-format
- msgid "failed to store the creation date: %s\n"
--msgstr "no s'ha pogut reconstruir la mem�ria cau de l'anell: %s\n"
-+msgstr "no s'ha pogut reconstruir la memòria cau de l'anell: %s\n"
-
- #: g10/app-openpgp.c:776 g10/app-openpgp.c:868 g10/app-openpgp.c:1379
- #, c-format
-@@ -204,22 +202,22 @@
- #: g10/app-openpgp.c:1025
- #, fuzzy, c-format
- msgid "error getting new PIN: %s\n"
--msgstr "error en la creaci� de la contrasenya: %s\n"
-+msgstr "error en crear «%s»: %s\n"
-
- #: g10/app-openpgp.c:1091 g10/app-openpgp.c:1233
- #, fuzzy
- msgid "error reading application data\n"
--msgstr "s'ha produ�t un error en llegir el bloc de claus: %s\n"
-+msgstr "s'ha produït un error en llegir el bloc de claus: %s\n"
-
- #: g10/app-openpgp.c:1098 g10/app-openpgp.c:1240
- #, fuzzy
- msgid "error reading fingerprint DO\n"
--msgstr "%s: error en llegir el registre lliure: %s\n"
-+msgstr "error: l'empremta digital és invàlida\n"
-
- #: g10/app-openpgp.c:1107
- #, fuzzy
- msgid "key already exists\n"
--msgstr "�%s� ja est� comprimida\n"
-+msgstr "«%s» ja està comprimida\n"
-
- #: g10/app-openpgp.c:1111
- msgid "existing key will be replaced\n"
-@@ -237,12 +235,12 @@
- #: g10/app-openpgp.c:1138
- #, fuzzy
- msgid "generating key failed\n"
--msgstr "no s'ha pogut eliminar el bloc de claus: %s\n"
-+msgstr "La generació de claus ha fallat: %s\n"
-
- #: g10/app-openpgp.c:1141
- #, fuzzy, c-format
- msgid "key generation completed (%d seconds)\n"
--msgstr "La generaci� de claus ha fallat: %s\n"
-+msgstr "La generació de claus ha fallat: %s\n"
-
- #: g10/app-openpgp.c:1147 g10/app-openpgp.c:1878
- msgid "response does not contain the public key data\n"
-@@ -271,19 +269,19 @@
- msgstr ""
-
- #: g10/app-openpgp.c:1653 g10/app-openpgp.c:1663
--#, fuzzy, c-format
-+#, c-format
- msgid "can't access %s - invalid OpenPGP card?\n"
--msgstr "no s'han trobat dades OpenPGP v�lides.\n"
-+msgstr ""
-
- #: g10/app-openpgp.c:1734
- #, fuzzy, c-format
- msgid "error getting serial number: %s\n"
--msgstr "error en la creaci� de la contrasenya: %s\n"
-+msgstr "error en la creació de la contrasenya: %s\n"
-
- #: g10/app-openpgp.c:1829
- #, fuzzy, c-format
- msgid "failed to store the key: %s\n"
--msgstr "no s'ha pogut inicialitzar la base de dades de confian�a: %s\n"
-+msgstr "no s'ha pogut inicialitzar la base de dades de confiança: %s\n"
-
- #: g10/app-openpgp.c:1871
- #, fuzzy
-@@ -297,18 +295,18 @@
-
- #: g10/armor.c:346
- msgid "invalid armor header: "
--msgstr "la cap�alera d'armadura �s inv�lida: "
-+msgstr "la capçalera d'armadura és invàlida: "
-
- #: g10/armor.c:353
- msgid "armor header: "
--msgstr "cap�alera d'armadura: "
-+msgstr "capçalera d'armadura: "
-
- #: g10/armor.c:364
- msgid "invalid clearsig header\n"
--msgstr "la cap�alera de signatura clara �s inv�lida\n"
-+msgstr "la capçalera de signatura clara és invàlida\n"
-
--# �s un missatge d'error? ivb
--# �Anidada� �s un castellanisme. Niuades? Imbricades (SC)?? ivb
-+# És un missatge d'error? ivb
-+# «Anidada» és un castellanisme. Niuades? Imbricades (SC)?? ivb
- #: g10/armor.c:416
- msgid "nested clear text signatures\n"
- msgstr "signatures en text pla imbricades\n"
-@@ -321,12 +319,12 @@
-
- #: g10/armor.c:563
- msgid "invalid dash escaped line: "
--msgstr "la l�nia escapada amb gui� �s inv�lida: "
-+msgstr "la línia escapada amb guió és invàlida: "
-
- #: g10/armor.c:715 g10/armor.c:1300
- #, fuzzy, c-format
- msgid "invalid radix64 character %02X skipped\n"
--msgstr "el car�cter radix64 %02x inv�lid s'ha om�s\n"
-+msgstr "el caràcter radix64 %02x invàlid s'ha omés\n"
-
- #: g10/armor.c:758
- msgid "premature eof (no CRC)\n"
-@@ -348,84 +346,79 @@
- #: g10/armor.c:824
- #, fuzzy
- msgid "premature eof (in trailer)\n"
--msgstr "f� de fitxer prematur (al final)\n"
-+msgstr "fí de fitxer prematur (al final)\n"
-
- #: g10/armor.c:828
- msgid "error in trailer line\n"
--msgstr "error en l'�ltima l�nia\n"
-+msgstr "error en l'última línia\n"
-
- #: g10/armor.c:1115
- msgid "no valid OpenPGP data found.\n"
--msgstr "no s'han trobat dades OpenPGP v�lides.\n"
-+msgstr "no s'han trobat dades OpenPGP vàlides.\n"
-
- #: g10/armor.c:1120
- #, c-format
- msgid "invalid armor: line longer than %d characters\n"
--msgstr ""
--"l'armadura �s inv�lida: la l�nia �s m�s llarga que %d car�cters\n"
-+msgstr "l'armadura és invàlida: la línia és més llarga que %d caràcters\n"
-
- #: g10/armor.c:1124
- msgid ""
- "quoted printable character in armor - probably a buggy MTA has been used\n"
- msgstr ""
--"hi ha un car�cter �quoted printable� en l'armadura - probablement s'ha "
-+"hi ha un caràcter «quoted printable» en l'armadura - probablement s'ha "
- "utilitzat un MTA amb errors\n"
-
- #: g10/card-util.c:58 g10/card-util.c:282
- #, fuzzy, c-format
- msgid "OpenPGP card not available: %s\n"
--msgstr "la clau secreta no est� disponible"
-+msgstr "la clau secreta no està disponible"
-
- #: g10/card-util.c:63
- #, c-format
- msgid "OpenPGP card no. %s detected\n"
- msgstr ""
-
--# Dest�s? ivb
--# Desat�s, s�. jm
-+# Destès? ivb
-+# Desatès, sí. jm
- #: g10/card-util.c:70 g10/card-util.c:1285 g10/delkey.c:120 g10/keyedit.c:1353
- #: g10/keygen.c:2432 g10/revoke.c:216 g10/revoke.c:417
- #, fuzzy
- msgid "can't do this in batch mode\n"
--msgstr "no es pot fet aix� en mode desat�s\n"
-+msgstr "no es pot fet això en mode desatès\n"
-
- #: g10/card-util.c:94 g10/card-util.c:1065 g10/card-util.c:1147
- #: g10/keyedit.c:412 g10/keyedit.c:433 g10/keyedit.c:447 g10/keygen.c:1298
- #: g10/keygen.c:1363
- msgid "Your selection? "
--msgstr "Seleccioneu: "
-+msgstr "La vostra selecció? "
-
- #: g10/card-util.c:194 g10/card-util.c:244
- msgid "[not set]"
--msgstr ""
-+msgstr "[no establert]"
-
- #: g10/card-util.c:378
--#, fuzzy
- msgid "male"
--msgstr "enable"
-+msgstr "home"
-
- #: g10/card-util.c:379
--#, fuzzy
- msgid "female"
--msgstr "enable"
-+msgstr "dóna"
-
- #: g10/card-util.c:379
--#, fuzzy
- msgid "unspecified"
--msgstr "No s'ha especificat cap ra�"
-+msgstr "no especificat"
-
--# G�nere? Nombre? Passat, futur? ivb
--# Probablement �s una clau, femen�. jm
-+# Gènere? Nombre? Passat, futur? ivb
-+# Probablement és una clau, femení. jm
- # Werner FIXME: please add translator comment saying *what* is
- # uncompressed so we know the gender. jm
- #: g10/card-util.c:406
--#, fuzzy
- msgid "not forced"
--msgstr "no processat"
-+msgstr "no forçat"
-
- #: g10/card-util.c:406
- msgid "forced"
--msgstr ""
-+msgstr "forçat"
-
- #: g10/card-util.c:458
- msgid "Error: Only plain ASCII is currently allowed.\n"
-@@ -455,7 +448,7 @@
- #: g10/card-util.c:521
- #, fuzzy
- msgid "URL to retrieve public key: "
--msgstr "no hi ha cap clau p�blica corresponent: %s\n"
-+msgstr "no hi ha cap clau pública corresponent: %s\n"
-
- #: g10/card-util.c:529
- #, c-format
-@@ -465,7 +458,7 @@
- #: g10/card-util.c:622 g10/card-util.c:691 g10/import.c:263
- #, c-format
- msgid "error reading `%s': %s\n"
--msgstr "error en la lectura de �%s�: %s\n"
-+msgstr "error en la lectura de «%s»: %s\n"
-
- #: g10/card-util.c:630
- msgid "Login data (account name): "
-@@ -488,17 +481,17 @@
- #: g10/card-util.c:729
- #, fuzzy
- msgid "Language preferences: "
--msgstr "prefer�ncies actualitzades"
-+msgstr "preferències actualitzades"
-
- #: g10/card-util.c:737
- #, fuzzy
- msgid "Error: invalid length of preference string.\n"
--msgstr "hi ha un car�cter inv�lid en la cadena de prefer�ncia\n"
-+msgstr "hi ha un caràcter invàlid en la cadena de preferència\n"
-
- #: g10/card-util.c:746
- #, fuzzy
- msgid "Error: invalid characters in preference string.\n"
--msgstr "hi ha un car�cter inv�lid en la cadena de prefer�ncia\n"
-+msgstr "hi ha un caràcter invàlid en la cadena de preferència\n"
-
- #: g10/card-util.c:767
- msgid "Sex ((M)ale, (F)emale or space): "
-@@ -507,7 +500,7 @@
- #: g10/card-util.c:781
- #, fuzzy
- msgid "Error: invalid response.\n"
--msgstr "error: l'empremta digital �s inv�lida\n"
-+msgstr "error: l'empremta digital és invàlida\n"
-
- #: g10/card-util.c:802
- #, fuzzy
-@@ -517,23 +510,22 @@
- #: g10/card-util.c:825
- #, fuzzy
- msgid "Error: invalid formatted fingerprint.\n"
--msgstr "error: l'empremta digital �s inv�lida\n"
-+msgstr "error: l'empremta digital és invàlida\n"
-
- #: g10/card-util.c:873
- #, fuzzy, c-format
- msgid "key operation not possible: %s\n"
--msgstr "La generaci� de claus ha fallat: %s\n"
-+msgstr "La generació de claus ha fallat: %s\n"
-
- #: g10/card-util.c:874
- #, fuzzy
- msgid "not an OpenPGP card"
--msgstr "no s'han trobat dades OpenPGP v�lides.\n"
-+msgstr "no s'han trobat dades OpenPGP vàlides.\n"
-
- #: g10/card-util.c:883
- #, fuzzy, c-format
- msgid "error getting current key info: %s\n"
--msgstr ""
--"s'ha produ�t un error mentre s'escrivia l'anell secret �%s�: %s\n"
-+msgstr "s'ha produït un error mentre s'escrivia l'anell secret «%s»: %s\n"
-
- #: g10/card-util.c:966
- msgid "Replace existing key? (y/N) "
-@@ -561,14 +553,13 @@
- msgstr "Seleccioneu quin tipus de clau voleu:\n"
-
- #: g10/card-util.c:1058 g10/card-util.c:1138
--#, fuzzy
- msgid " (1) Signature key\n"
--msgstr "Aquesta signatura va caducar el %s\n"
-+msgstr ""
-
- #: g10/card-util.c:1059 g10/card-util.c:1140
- #, fuzzy
- msgid " (2) Encryption key\n"
--msgstr " (%d) RSA (nom�s xifrar)\n"
-+msgstr " (%d) RSA (només xifrar)\n"
-
- #: g10/card-util.c:1060 g10/card-util.c:1142
- msgid " (3) Authentication key\n"
-@@ -577,39 +568,39 @@
- #: g10/card-util.c:1076 g10/card-util.c:1158 g10/keyedit.c:907
- #: g10/keygen.c:1402 g10/revoke.c:642
- msgid "Invalid selection.\n"
--msgstr "La selecci� �s inv�lida.\n"
-+msgstr "La selecció és invàlida.\n"
-
- #: g10/card-util.c:1135
- #, fuzzy
- msgid "Please select where to store the key:\n"
--msgstr "Seleccioneu la ra� de la revocaci�:\n"
-+msgstr "Seleccioneu la raó de la revocació:\n"
-
- #: g10/card-util.c:1170
- #, fuzzy
- msgid "unknown key protection algorithm\n"
--msgstr "l'algorisme de protecci� �s desconegut\n"
-+msgstr "l'algorisme de protecció és desconegut\n"
-
- #: g10/card-util.c:1175
- #, fuzzy
- msgid "secret parts of key are not available\n"
--msgstr "Les parts secretes de la clau prim�ria no estan disponibles.\n"
-+msgstr "Les parts secretes de la clau primària no estan disponibles.\n"
-
- #: g10/card-util.c:1180
- #, fuzzy
- msgid "secret key already stored on a card\n"
--msgstr "es descarta: la clau secreta ja �s present\n"
-+msgstr "es descarta: la clau secreta ja és present\n"
-
- #: g10/card-util.c:1250 g10/keyedit.c:1285
- msgid "quit this menu"
--msgstr "ix del men�"
-+msgstr "ix del menú"
-
- #: g10/card-util.c:1252
- #, fuzzy
- msgid "show admin commands"
- msgstr "les ordres entren en conflicte\n"
-
--# �pantalla� o �ajuda�? ivb
--# �ajuda�, evidentment. jm
-+# «pantalla» o «ajuda»? ivb
-+# «ajuda», evidentment. jm
- #: g10/card-util.c:1253 g10/keyedit.c:1288
- msgid "show this help"
- msgstr "mostra aquesta ajuda"
-@@ -617,7 +608,7 @@
- #: g10/card-util.c:1255
- #, fuzzy
- msgid "list all available data"
--msgstr "La clau �s disponible en: "
-+msgstr "La clau és disponible en: "
-
- #: g10/card-util.c:1258
- msgid "change card holder's name"
-@@ -639,7 +630,7 @@
- #: g10/card-util.c:1262
- #, fuzzy
- msgid "change the language preferences"
--msgstr "canvia la confian�a"
-+msgstr "canvia la confiança"
-
- #: g10/card-util.c:1263
- msgid "change card holder's sex"
-@@ -673,18 +664,16 @@
- msgstr "les ordres entren en conflicte\n"
-
- #: g10/card-util.c:1384
--#, fuzzy
- msgid "Admin commands are allowed\n"
--msgstr "les ordres entren en conflicte\n"
-+msgstr ""
-
- #: g10/card-util.c:1386
--#, fuzzy
- msgid "Admin commands are not allowed\n"
--msgstr "s'est� escrivint la clau secreta a �%s�\n"
-+msgstr ""
-
- #: g10/card-util.c:1455 g10/keyedit.c:1928
- msgid "Invalid command (try \"help\")\n"
--msgstr "L'ordre no �s v�lida (proveu �help�)\n"
-+msgstr "L'ordre no és vàlida (proveu «help»)\n"
-
- #: g10/cardglue.c:287
- msgid "Please insert the card and hit return or enter 'c' to cancel: "
-@@ -704,12 +693,12 @@
- #: g10/cardglue.c:687
- #, fuzzy
- msgid "Enter New Admin PIN: "
--msgstr "Introdu�u el nom d'usuari: "
-+msgstr "Introduïu el nom d'usuari: "
-
- #: g10/cardglue.c:688
- #, fuzzy
- msgid "Enter New PIN: "
--msgstr "Introdu�u el nom d'usuari: "
-+msgstr "Introduïu el nom d'usuari: "
-
- #: g10/cardglue.c:689
- msgid "Enter Admin PIN: "
-@@ -718,7 +707,7 @@
- #: g10/cardglue.c:690
- #, fuzzy
- msgid "Enter PIN: "
--msgstr "Introdu�u el nom d'usuari: "
-+msgstr "Introduïu el nom d'usuari: "
-
- #: g10/cardglue.c:704
- #, fuzzy
-@@ -734,7 +723,7 @@
- #: g10/keyring.c:662 g10/verify.c:101 g10/verify.c:154
- #, c-format
- msgid "can't open `%s'\n"
--msgstr "no s'ha pogut obrir �%s�\n"
-+msgstr "no s'ha pogut obrir «%s»\n"
-
- #: g10/decrypt.c:104 g10/encode.c:859
- msgid "--output doesn't work for this command\n"
-@@ -744,24 +733,24 @@
- #: g10/revoke.c:226
- #, fuzzy, c-format
- msgid "key \"%s\" not found: %s\n"
--msgstr "no s'ha trobat la clau �%s�: %s\n"
-+msgstr "no s'ha trobat la clau «%s»: %s\n"
-
- #: g10/delkey.c:82 g10/export.c:198 g10/keyserver.c:1435 g10/revoke.c:232
- #: g10/revoke.c:439
- #, c-format
- msgid "error reading keyblock: %s\n"
--msgstr "s'ha produ�t un error en llegir el bloc de claus: %s\n"
-+msgstr "s'ha produït un error en llegir el bloc de claus: %s\n"
-
- #: g10/delkey.c:121 g10/delkey.c:128
- msgid "(unless you specify the key by fingerprint)\n"
- msgstr "(a no ser que especifiqueu la clau per la empremta digital)\n"
-
--# Ah�! Abans �batch� est� tal qual. Cal unificar. ivb
-+# Ahà! Abans «batch» està tal qual. Cal unificar. ivb
- # Fet. jm
- #: g10/delkey.c:127
- #, fuzzy
- msgid "can't do this in batch mode without \"--yes\"\n"
--msgstr "no es pot fer aix� en el mode desat�s sense �--yes�\n"
-+msgstr "no es pot fer això en el mode desatès sense «--yes»\n"
-
- #: g10/delkey.c:139
- #, fuzzy
-@@ -771,7 +760,7 @@
- #: g10/delkey.c:147
- #, fuzzy
- msgid "This is a secret key! - really delete? (y/N) "
--msgstr "�s una clau secreta! Voleu esborrar-la? "
-+msgstr "És una clau secreta! Voleu esborrar-la? "
-
- #: g10/delkey.c:157
- #, c-format
-@@ -780,51 +769,50 @@
-
- #: g10/delkey.c:167
- msgid "ownertrust information cleared\n"
--msgstr "s'ha netejat la informaci� de la confian�a\n"
-+msgstr "s'ha netejat la informació de la confiança\n"
-
- #: g10/delkey.c:195
- #, c-format
- msgid "there is a secret key for public key \"%s\"!\n"
--msgstr "hi ha una clau secreta per a la clau p�blica �%s�!\n"
-+msgstr "hi ha una clau secreta per a la clau pública «%s»!\n"
-
- #: g10/delkey.c:197
- msgid "use option \"--delete-secret-keys\" to delete it first.\n"
--msgstr ""
--"utilitzeu l'opci� �--delete-secret-keys� per a eliminar-la primer.\n"
-+msgstr "utilitzeu l'opció «--delete-secret-keys» per a eliminar-la primer.\n"
-
- #: g10/encode.c:210 g10/sign.c:1186
- #, c-format
- msgid "error creating passphrase: %s\n"
--msgstr "error en la creaci� de la contrasenya: %s\n"
-+msgstr "error en la creació de la contrasenya: %s\n"
-
- #: g10/encode.c:215
- msgid "can't use a symmetric ESK packet due to the S2K mode\n"
--msgstr "no es pot usar un paquet asim�tric ESK al estar en mode S2K\n"
-+msgstr "no es pot usar un paquet asimètric ESK al estar en mode S2K\n"
-
- #: g10/encode.c:228
- #, fuzzy, c-format
- msgid "using cipher %s\n"
--msgstr "Ha fallat el proc�s de signatura: %s\n"
-+msgstr "Ha fallat el procés de signatura: %s\n"
-
- #: g10/encode.c:238 g10/encode.c:558
- #, c-format
- msgid "`%s' already compressed\n"
--msgstr "�%s� ja est� comprimida\n"
-+msgstr "«%s» ja està comprimida\n"
-
- #: g10/encode.c:308 g10/encode.c:604 g10/sign.c:551
- #, c-format
- msgid "WARNING: `%s' is an empty file\n"
--msgstr "AV�S: �%s� �s un fitxer buit\n"
-+msgstr "AVÃS: «%s» és un fitxer buit\n"
-
- #: g10/encode.c:472
- msgid "you can only encrypt to RSA keys of 2048 bits or less in --pgp2 mode\n"
- msgstr ""
--"nom�s podeu xifrar a claus RSA de 2048 bits o menys en el mode --pgp2\n"
-+"només podeu xifrar a claus RSA de 2048 bits o menys en el mode --pgp2\n"
-
- #: g10/encode.c:494
- #, c-format
- msgid "reading from `%s'\n"
--msgstr "s'est� llegint des de �%s�\n"
-+msgstr "s'està llegint des de «%s»\n"
-
- #: g10/encode.c:530
- msgid ""
-@@ -838,8 +826,7 @@
- msgid ""
- "WARNING: forcing symmetric cipher %s (%d) violates recipient preferences\n"
- msgstr ""
--"for�ar el xifrat asim�tric %s (%d) viola les prefer�ncies del "
--"destinatari\n"
-+"forçar el xifrat asimètric %s (%d) viola les preferències del destinatari\n"
-
- #: g10/encode.c:648 g10/sign.c:877
- #, fuzzy, c-format
-@@ -847,15 +834,14 @@
- "WARNING: forcing compression algorithm %s (%d) violates recipient "
- "preferences\n"
- msgstr ""
--"for�ar l'algoritme de compressi� %s (%d) viola les prefer�ncies del "
-+"forçar l'algoritme de compressió %s (%d) viola les preferències del "
- "destinatari\n"
-
- #: g10/encode.c:735
- #, c-format
- msgid "forcing symmetric cipher %s (%d) violates recipient preferences\n"
- msgstr ""
--"for�ar el xifrat asim�tric %s (%d) viola les prefer�ncies del "
--"destinatari\n"
-+"forçar el xifrat asimètric %s (%d) viola les preferències del destinatari\n"
-
- #: g10/encode.c:805 g10/pkclist.c:721 g10/pkclist.c:757
- #, c-format
-@@ -865,7 +851,7 @@
- #: g10/encode.c:832
- #, c-format
- msgid "%s/%s encrypted for: \"%s\"\n"
--msgstr "%s/%s xifrat per a: �%s�\n"
-+msgstr "%s/%s xifrat per a: «%s»\n"
-
- #: g10/encr-data.c:66 g10/mainproc.c:301
- #, c-format
-@@ -877,28 +863,28 @@
- msgid "encrypted with unknown algorithm %d\n"
- msgstr "xifrat amb l'algoritme %d (desconegut)\n"
-
--# �s no-wrap? ivb
-+# És no-wrap? ivb
- # Com? jm
- #: g10/encr-data.c:92
- msgid ""
- "WARNING: message was encrypted with a weak key in the symmetric cipher.\n"
- msgstr ""
--"ATENCI�: el missatge s'ha xifrat amb una clau feble durant el xifratge\n"
--"sim�tric.\n"
-+"ATENCIÓ: el missatge s'ha xifrat amb una clau feble durant el xifratge\n"
-+"simètric.\n"
-
- #: g10/encr-data.c:103
- msgid "problem handling encrypted packet\n"
- msgstr "problema en tractar amb un paquet xifrat\n"
-
--# Execuci� de programes remots, o execuci� remota de programes? jm
-+# Execució de programes remots, o execució remota de programes? jm
- #: g10/exec.c:48
- msgid "no remote program execution supported\n"
--msgstr "no hi ha suport per a l'execuci� remota de programes\n"
-+msgstr "no hi ha suport per a l'execució remota de programes\n"
-
- #: g10/exec.c:184 g10/openfile.c:406
- #, c-format
- msgid "can't create directory `%s': %s\n"
--msgstr "no es pot crear el directori �%s�: %s\n"
-+msgstr "no es pot crear el directori «%s»: %s\n"
-
- #: g10/exec.c:325
- msgid ""
-@@ -917,21 +903,21 @@
- #: g10/exec.c:433
- #, fuzzy, c-format
- msgid "unable to execute program `%s': %s\n"
--msgstr "no s'ha pogut executar %s �%s�: %s\n"
-+msgstr "no s'ha pogut executar %s «%s»: %s\n"
-
- #: g10/exec.c:436
- #, fuzzy, c-format
- msgid "unable to execute shell `%s': %s\n"
--msgstr "no s'ha pogut executar %s �%s�: %s\n"
-+msgstr "no s'ha pogut executar %s «%s»: %s\n"
-
- #: g10/exec.c:521
- #, c-format
- msgid "system error while calling external program: %s\n"
--msgstr "s'ha produ�t un error del sistema en cridar el programa extern: %s\n"
-+msgstr "s'ha produït un error del sistema en cridar el programa extern: %s\n"
-
- #: g10/exec.c:532 g10/exec.c:598
- msgid "unnatural exit of external program\n"
--msgstr "s'ha produ�t una eixida no natural del programa extern\n"
-+msgstr "s'ha produït una eixida no natural del programa extern\n"
-
- #: g10/exec.c:547
- msgid "unable to execute external program\n"
-@@ -945,22 +931,22 @@
- #: g10/exec.c:609 g10/exec.c:616
- #, c-format
- msgid "WARNING: unable to remove tempfile (%s) `%s': %s\n"
--msgstr "AV�S: no s'ha pogut eliminar el fitxer temporal (%s) �%s�: %s\n"
-+msgstr "AVÃS: no s'ha pogut eliminar el fitxer temporal (%s) «%s»: %s\n"
-
- #: g10/exec.c:621
- #, c-format
- msgid "WARNING: unable to remove temp directory `%s': %s\n"
--msgstr "AV�S: no s'ha pogut eliminar el directori temporal �%s�: %s\n"
-+msgstr "AVÃS: no s'ha pogut eliminar el directori temporal «%s»: %s\n"
-
- #: g10/export.c:182
- #, fuzzy
- msgid "exporting secret keys not allowed\n"
--msgstr "s'est� escrivint la clau secreta a �%s�\n"
-+msgstr "s'està escrivint la clau secreta a «%s»\n"
-
- #: g10/export.c:211
- #, fuzzy, c-format
- msgid "key %s: not protected - skipped\n"
--msgstr "clau %08lX: no est� protegida - es descarta\n"
-+msgstr "clau %08lX: no està protegida - es descarta\n"
-
- #: g10/export.c:219
- #, fuzzy, c-format
-@@ -970,12 +956,11 @@
- #: g10/export.c:384
- #, fuzzy, c-format
- msgid "WARNING: secret key %s does not have a simple SK checksum\n"
--msgstr ""
--"AV�S: la clau secreta %08lX no te una simple suma de comprovaci� SK\n"
-+msgstr "AVÃS: la clau secreta %08lX no te una simple suma de comprovació SK\n"
-
- #: g10/export.c:416
- msgid "WARNING: nothing exported\n"
--msgstr "AV�S: no s'ha exportat res\n"
-+msgstr "AVÃS: no s'ha exportat res\n"
-
- #: g10/g10.c:358
- msgid ""
-@@ -1003,7 +988,7 @@
-
- #: g10/g10.c:365
- msgid "encryption only with symmetric cipher"
--msgstr "xifra nom�s amb xifratge sim�tric"
-+msgstr "xifra només amb xifratge simètric"
-
- #: g10/g10.c:367
- msgid "decrypt data (default)"
-@@ -1021,13 +1006,13 @@
- msgid "list keys and signatures"
- msgstr "llista claus i signatures"
-
--# �de les claus� o �de la clau�? ivb
-+# «de les claus» o «de la clau»? ivb
- #: g10/g10.c:374
- #, fuzzy
- msgid "list and check key signatures"
- msgstr "comprova les signatures de la claus"
-
--# �dactilars� o �digitals�? ivb
-+# «dactilars» o «digitals»? ivb
- #: g10/g10.c:375
- msgid "list keys and fingerprints"
- msgstr "llista claus i empremtes digitals"
-@@ -1042,7 +1027,7 @@
-
- #: g10/g10.c:378
- msgid "remove keys from the public keyring"
--msgstr "elimina claus de l'anell p�blic"
-+msgstr "elimina claus de l'anell públic"
-
- #: g10/g10.c:380
- msgid "remove keys from the secret keyring"
-@@ -1062,7 +1047,7 @@
-
- #: g10/g10.c:384
- msgid "generate a revocation certificate"
--msgstr "genera un certificat de revocaci�"
-+msgstr "genera un certificat de revocació"
-
- #: g10/g10.c:386
- msgid "export keys"
-@@ -1102,7 +1087,7 @@
-
- #: g10/g10.c:408
- msgid "update the trust database"
--msgstr "actualitza la base de dades de confian�a"
-+msgstr "actualitza la base de dades de confiança"
-
- #: g10/g10.c:415
- msgid "|algo [files]|print message digests"
-@@ -1132,17 +1117,17 @@
-
- #: g10/g10.c:435
- msgid "|N|set compress level N (0 disables)"
--msgstr "|N|nivell de compressi� N (0 no comprimeix)"
-+msgstr "|N|nivell de compressió N (0 no comprimeix)"
-
- #: g10/g10.c:440
- msgid "use canonical text mode"
--msgstr "usa el mode de text can�nic"
-+msgstr "usa el mode de text canònic"
-
- #: g10/g10.c:450
- msgid "use as output file"
- msgstr "fitxer d'eixida"
-
--# Un dels dos �s en la llista d'opcions amb --help. Urgh. jm
-+# Un dels dos és en la llista d'opcions amb --help. Urgh. jm
- #: g10/g10.c:452 g10/gpgv.c:67
- msgid "verbose"
- msgstr "detall"
-@@ -1169,11 +1154,11 @@
- "(See the man page for a complete listing of all commands and options)\n"
- msgstr ""
- "@\n"
--"(En la p�gina del man hi ha una llista completa d'ordres i d'opcions)\n"
-+"(En la pàgina del man hi ha una llista completa d'ordres i d'opcions)\n"
-
--# Crec q (A)lice (orig.), (B)ob (dest.), etc. s�n noms usats pel Zimmerman
-+# Crec q (A)lice (orig.), (B)ob (dest.), etc. són noms usats pel Zimmerman
- # en el manual original de PGP. A, B, C... ivb
--# En efecte. Idem per a Mallory m�s endavant. Els deixe com a l'original. jm
-+# En efecte. Idem per a Mallory més endavant. Els deixe com a l'original. jm
- #: g10/g10.c:535
- msgid ""
- "@\n"
-@@ -1200,7 +1185,7 @@
-
- #: g10/g10.c:733
- msgid "Usage: gpg [options] [files] (-h for help)"
--msgstr "Forma d'�s: gpg [opcions] [fitxers] (-h per a veure l'ajuda)"
-+msgstr "Forma d'ús: gpg [opcions] [fitxers] (-h per a veure l'ajuda)"
-
- #: g10/g10.c:736
- msgid ""
-@@ -1210,12 +1195,12 @@
- msgstr ""
- "Sintaxi: gpg [opcions] [fitxers]\n"
- "signa, comprova, xifra o desxifra\n"
--"l'operaci� predeterminada dep�n de les dades introdu�des\n"
-+"l'operació predeterminada depén de les dades introduïdes\n"
-
- # Suportats? ivb
--# A Softcatal� diuen molt �implementat?. jm
--# Precissament acabem de parlar d'�implementat a la llista del GNOME
--# i s'ha dit que �s erroni, igual que �suportat� :) Les alternatives
-+# A Softcatalà diuen molt «implementat». jm
-+# Precissament acabem de parlar d'«implementat a la llista del GNOME
-+# i s'ha dit que és erroni, igual que «suportat» :) Les alternatives
- # encara no m'agraden massa... jm
- #: g10/g10.c:747
- msgid ""
-@@ -1227,7 +1212,7 @@
-
- #: g10/g10.c:750
- msgid "Pubkey: "
--msgstr "Clau p�blica: "
-+msgstr "Clau pública: "
-
- #: g10/g10.c:756 g10/keyedit.c:1965
- msgid "Cipher: "
-@@ -1235,191 +1220,183 @@
-
- #: g10/g10.c:762
- msgid "Hash: "
--msgstr "Dispersi�: "
-+msgstr "Dispersió: "
-
- #: g10/g10.c:768 g10/keyedit.c:2011
- msgid "Compression: "
--msgstr "Compressi�: "
-+msgstr "Compressió: "
-
- #: g10/g10.c:851
- msgid "usage: gpg [options] "
--msgstr "forma d'�s: gpg [opcions] "
-+msgstr "forma d'ús: gpg [opcions] "
-
- #: g10/g10.c:999
- msgid "conflicting commands\n"
- msgstr "les ordres entren en conflicte\n"
-
- #: g10/g10.c:1017
--#, fuzzy, c-format
-+#, c-format
- msgid "no = sign found in group definition `%s'\n"
--msgstr "no s'ha trobat cap signe = en la definici� de grup �%s�\n"
-+msgstr "no s'ha trobat cap signe = a la definició de grup «%s»\n"
-
- # Indi. ivb
- #: g10/g10.c:1214
- #, fuzzy, c-format
- msgid "WARNING: unsafe ownership on homedir `%s'\n"
--msgstr "AV�S: el propietari �s insegur en %s �%s�\n"
-+msgstr "AVÃS: el propietari és insegur en %s «%s»\n"
-
- # Indi. ivb
- #: g10/g10.c:1217
- #, fuzzy, c-format
- msgid "WARNING: unsafe ownership on configuration file `%s'\n"
--msgstr "AV�S: el propietari �s insegur en %s �%s�\n"
-+msgstr "AVÃS: el propietari és insegur en %s «%s»\n"
-
- # Indi. ivb
- #: g10/g10.c:1220
- #, fuzzy, c-format
- msgid "WARNING: unsafe ownership on extension `%s'\n"
--msgstr "AV�S: el propietari �s insegur en %s �%s�\n"
-+msgstr "AVÃS: el propietari és insegur en %s «%s»\n"
-
- #: g10/g10.c:1226
- #, fuzzy, c-format
- msgid "WARNING: unsafe permissions on homedir `%s'\n"
--msgstr "AV�S: els permissos s�n insegurs en %s �%s�\n"
-+msgstr "AVÃS: els permissos són insegurs en %s «%s»\n"
-
- #: g10/g10.c:1229
- #, fuzzy, c-format
- msgid "WARNING: unsafe permissions on configuration file `%s'\n"
--msgstr "AV�S: els permissos s�n insegurs en %s �%s�\n"
-+msgstr "AVÃS: els permissos són insegurs en %s «%s»\n"
-
- #: g10/g10.c:1232
- #, fuzzy, c-format
- msgid "WARNING: unsafe permissions on extension `%s'\n"
--msgstr "AV�S: els permissos s�n insegurs en %s �%s�\n"
-+msgstr "AVÃS: els permissos són insegurs en %s «%s»\n"
-
- #: g10/g10.c:1238
- #, fuzzy, c-format
- msgid "WARNING: unsafe enclosing directory ownership on homedir `%s'\n"
--msgstr ""
--"AV�S: el propietari del directori envoltant �s insegur en %s �%s�\n"
-+msgstr "AVÃS: el propietari del directori envoltant és insegur en %s «%s»\n"
-
- #: g10/g10.c:1241
- #, fuzzy, c-format
- msgid ""
- "WARNING: unsafe enclosing directory ownership on configuration file `%s'\n"
--msgstr ""
--"AV�S: el propietari del directori envoltant �s insegur en %s �%s�\n"
-+msgstr "AVÃS: el propietari del directori envoltant és insegur en %s «%s»\n"
-
- #: g10/g10.c:1244
- #, fuzzy, c-format
- msgid "WARNING: unsafe enclosing directory ownership on extension `%s'\n"
--msgstr ""
--"AV�S: el propietari del directori envoltant �s insegur en %s �%s�\n"
-+msgstr "AVÃS: el propietari del directori envoltant és insegur en %s «%s»\n"
-
- #: g10/g10.c:1250
- #, fuzzy, c-format
- msgid "WARNING: unsafe enclosing directory permissions on homedir `%s'\n"
--msgstr ""
--"AV�S: els permissos del directori envoltant s�n insegurs en %s �%s�\n"
-+msgstr "AVÃS: els permissos del directori envoltant són insegurs en %s «%s»\n"
-
- #: g10/g10.c:1253
- #, fuzzy, c-format
- msgid ""
- "WARNING: unsafe enclosing directory permissions on configuration file `%s'\n"
--msgstr ""
--"AV�S: els permissos del directori envoltant s�n insegurs en %s �%s�\n"
-+msgstr "AVÃS: els permissos del directori envoltant són insegurs en %s «%s»\n"
-
- #: g10/g10.c:1256
- #, fuzzy, c-format
- msgid "WARNING: unsafe enclosing directory permissions on extension `%s'\n"
--msgstr ""
--"AV�S: els permissos del directori envoltant s�n insegurs en %s �%s�\n"
-+msgstr "AVÃS: els permissos del directori envoltant són insegurs en %s «%s»\n"
-
- #: g10/g10.c:1397
- #, fuzzy, c-format
- msgid "unknown configuration item `%s'\n"
--msgstr "s'ha creat el nou fitxer d'opcions �%s�\n"
-+msgstr "s'ha creat el nou fitxer d'opcions «%s»\n"
-
- #: g10/g10.c:1798
- #, c-format
- msgid "NOTE: old default options file `%s' ignored\n"
--msgstr "NOTA: es descarta el fitxer d'opcions predeterminades antic �%s�\n"
-+msgstr "NOTA: es descarta el fitxer d'opcions predeterminades antic «%s»\n"
-
- #: g10/g10.c:1840
- #, c-format
- msgid "NOTE: no default option file `%s'\n"
--msgstr "NOTA: no existeix el fitxer d'opcions predeterminades �%s�\n"
-+msgstr "NOTA: no existeix el fitxer d'opcions predeterminades «%s»\n"
-
- #: g10/g10.c:1844
- #, c-format
- msgid "option file `%s': %s\n"
--msgstr "fitxer d'opcions �%s�: %s\n"
-+msgstr "fitxer d'opcions «%s»: %s\n"
-
- #: g10/g10.c:1851
- #, c-format
- msgid "reading options from `%s'\n"
--msgstr "s'estan llegint opcions de �%s�\n"
-+msgstr "s'estan llegint opcions de «%s»\n"
-
- #: g10/g10.c:2065 g10/g10.c:2583 g10/g10.c:2594
- #, c-format
- msgid "NOTE: %s is not for normal use!\n"
--msgstr "NOTA: %s no �s per a �s normal!\n"
-+msgstr "NOTA: %s no és per a ús normal!\n"
-
- #: g10/g10.c:2078
- #, fuzzy, c-format
- msgid "cipher extension `%s' not loaded due to unsafe permissions\n"
- msgstr ""
--"la extensi� de xifrat �%s� no s'ha carregat per tindre permissos "
--"insegurs\n"
-+"la extensió de xifrat «%s» no s'ha carregat per tindre permissos insegurs\n"
-
- #: g10/g10.c:2292
- #, fuzzy, c-format
- msgid "`%s' is not a valid character set\n"
--msgstr "%s no �s un joc de car�cters v�lid\n"
-+msgstr "%s no és un joc de caràcters vàlid\n"
-
- #: g10/g10.c:2311 g10/keyedit.c:3498
- #, fuzzy
- msgid "could not parse keyserver URL\n"
--msgstr ""
--"no s'ha pogut analitzar sint�cticament la URI del servidor de claus\n"
-+msgstr "no s'ha pogut analitzar sintàcticament la URI del servidor de claus\n"
-
- #: g10/g10.c:2317
- #, fuzzy, c-format
- msgid "%s:%d: invalid keyserver options\n"
--msgstr "%s:%d opcions d'exportaci� no v�lides\n"
-+msgstr "%s:%d opcions d'exportació no vàlides\n"
-
- #: g10/g10.c:2320
- #, fuzzy
- msgid "invalid keyserver options\n"
--msgstr "opcions d'exportaci� no v�lides\n"
-+msgstr "opcions d'exportació no vàlides\n"
-
- #: g10/g10.c:2327
- #, c-format
- msgid "%s:%d: invalid import options\n"
--msgstr "%s:%d: opcions d'importanci� no v�lides\n"
-+msgstr "%s:%d: opcions d'importanció no vàlides\n"
-
- #: g10/g10.c:2330
- msgid "invalid import options\n"
--msgstr "opcions d'importaci� no v�lides\n"
-+msgstr "opcions d'importació no vàlides\n"
-
- #: g10/g10.c:2337
- #, c-format
- msgid "%s:%d: invalid export options\n"
--msgstr "%s:%d opcions d'exportaci� no v�lides\n"
-+msgstr "%s:%d opcions d'exportació no vàlides\n"
-
- #: g10/g10.c:2340
- msgid "invalid export options\n"
--msgstr "opcions d'exportaci� no v�lides\n"
-+msgstr "opcions d'exportació no vàlides\n"
-
- #: g10/g10.c:2347
- #, fuzzy, c-format
- msgid "%s:%d: invalid list options\n"
--msgstr "%s:%d: opcions d'importanci� no v�lides\n"
-+msgstr "%s:%d: opcions d'importanció no vàlides\n"
-
- #: g10/g10.c:2350
- #, fuzzy
- msgid "invalid list options\n"
--msgstr "opcions d'importaci� no v�lides\n"
-+msgstr "opcions d'importació no vàlides\n"
-
- #: g10/g10.c:2372
- #, fuzzy, c-format
- msgid "%s:%d: invalid verify options\n"
--msgstr "%s:%d opcions d'exportaci� no v�lides\n"
-+msgstr "%s:%d opcions d'exportació no vàlides\n"
-
- #: g10/g10.c:2375
- #, fuzzy
- msgid "invalid verify options\n"
--msgstr "opcions d'exportaci� no v�lides\n"
-+msgstr "opcions d'exportació no vàlides\n"
-
- #: g10/g10.c:2382
- #, c-format
-@@ -1428,24 +1405,24 @@
-
- #: g10/g10.c:2572
- msgid "WARNING: program may create a core file!\n"
--msgstr "AV�S: el programa podria crear un fitxer core!\n"
-+msgstr "AVÃS: el programa podria crear un fitxer core!\n"
-
--# FIXME: prefer�ncia? jm
--# Ho discut�rem en la llista, segur. Deu ser als arxius. ivb
-+# FIXME: preferència? jm
-+# Ho discutírem en la llista, segur. Deu ser als arxius. ivb
- #: g10/g10.c:2576
- #, c-format
- msgid "WARNING: %s overrides %s\n"
--msgstr "AV�S: %s t� prefer�ncia sobre %s\n"
-+msgstr "AVÃS: %s té preferència sobre %s\n"
-
- #: g10/g10.c:2585
- #, c-format
- msgid "%s not allowed with %s!\n"
--msgstr "%s no �s perm�s amb %s!\n"
-+msgstr "%s no és permés amb %s!\n"
-
- #: g10/g10.c:2588
- #, c-format
- msgid "%s makes no sense with %s!\n"
--msgstr "%s no t� sentit amb %s!\n"
-+msgstr "%s no té sentit amb %s!\n"
-
- #: g10/g10.c:2602
- #, c-format
-@@ -1455,7 +1432,7 @@
- # clares -> en clar? ivb
- #: g10/g10.c:2616
- msgid "you can only make detached or clear signatures while in --pgp2 mode\n"
--msgstr "nom�s podeu fer signatures separades o en clar en el mode --pgp2\n"
-+msgstr "només podeu fer signatures separades o en clar en el mode --pgp2\n"
-
- #: g10/g10.c:2622
- msgid "you can't sign and encrypt at the same time while in --pgp2 mode\n"
-@@ -1473,20 +1450,20 @@
-
- #: g10/g10.c:2711 g10/g10.c:2735
- msgid "selected cipher algorithm is invalid\n"
--msgstr "l'algorisme de xifratge triat no �s v�lid\n"
-+msgstr "l'algorisme de xifratge triat no és vàlid\n"
-
- #: g10/g10.c:2717 g10/g10.c:2741
- msgid "selected digest algorithm is invalid\n"
--msgstr "l'algorisme de resum seleccionat no �s v�lid\n"
-+msgstr "l'algorisme de resum seleccionat no és vàlid\n"
-
- #: g10/g10.c:2723
- #, fuzzy
- msgid "selected compression algorithm is invalid\n"
--msgstr "l'algorisme de xifratge triat no �s v�lid\n"
-+msgstr "l'algorisme de xifratge triat no és vàlid\n"
-
- #: g10/g10.c:2729
- msgid "selected certification digest algorithm is invalid\n"
--msgstr "l'algorisme de resum de certificaci� seleccionat no �s v�lid\n"
-+msgstr "l'algorisme de resum de certificació seleccionat no és vàlid\n"
-
- #: g10/g10.c:2744
- msgid "completes-needed must be greater than 0\n"
-@@ -1504,36 +1481,36 @@
- #: g10/g10.c:2750
- #, fuzzy
- msgid "invalid default-cert-level; must be 0, 1, 2, or 3\n"
--msgstr "default-check-level �s inv�lid; ha de ser 0, 1, 2 o 3\n"
-+msgstr "default-check-level és invàlid; ha de ser 0, 1, 2 o 3\n"
-
- #: g10/g10.c:2752
- #, fuzzy
- msgid "invalid min-cert-level; must be 1, 2, or 3\n"
--msgstr "default-check-level �s inv�lid; ha de ser 0, 1, 2 o 3\n"
-+msgstr "default-check-level és invàlid; ha de ser 0, 1, 2 o 3\n"
-
- #: g10/g10.c:2755
- msgid "NOTE: simple S2K mode (0) is strongly discouraged\n"
--msgstr "NOTA: el mode S2K simple (0) no �s gens recomanable\n"
-+msgstr "NOTA: el mode S2K simple (0) no és gens recomanable\n"
-
- #: g10/g10.c:2759
- msgid "invalid S2K mode; must be 0, 1 or 3\n"
--msgstr "el mode S2K �s inv�lid; ha de ser 0, 1 o 3\n"
-+msgstr "el mode S2K és invàlid; ha de ser 0, 1 o 3\n"
-
- #: g10/g10.c:2766
- msgid "invalid default preferences\n"
--msgstr "les prefer�ncies per defecte s�n inv�lides\n"
-+msgstr "les preferències per defecte són invàlides\n"
-
- #: g10/g10.c:2775
- msgid "invalid personal cipher preferences\n"
--msgstr "les prefer�ncies personals de xifrat s�n inv�lides\n"
-+msgstr "les preferències personals de xifrat són invàlides\n"
-
- #: g10/g10.c:2779
- msgid "invalid personal digest preferences\n"
--msgstr "les prefer�ncies personals de digest s�n inv�lides\n"
-+msgstr "les preferències personals de digest són invàlides\n"
-
- #: g10/g10.c:2783
- msgid "invalid personal compress preferences\n"
--msgstr "les prefer�ncies personals de compressi� s�n inv�lides\n"
-+msgstr "les preferències personals de compressió són invàlides\n"
-
- #: g10/g10.c:2816
- #, c-format
-@@ -1543,8 +1520,7 @@
- #: g10/g10.c:2863
- #, fuzzy, c-format
- msgid "you may not use cipher algorithm `%s' while in %s mode\n"
--msgstr ""
--"no podeu usar l'algorisme de xifratge �%s� mentre esteu en mode %s\n"
-+msgstr "no podeu usar l'algorisme de xifratge «%s» mentre esteu en mode %s\n"
-
- #: g10/g10.c:2868
- #, fuzzy, c-format
-@@ -1554,17 +1530,17 @@
- #: g10/g10.c:2873
- #, fuzzy, c-format
- msgid "you may not use compression algorithm `%s' while in %s mode\n"
--msgstr "no podeu usar l'algorisme de compressi� %s mentre esteu en mode %s\n"
-+msgstr "no podeu usar l'algorisme de compressió %s mentre esteu en mode %s\n"
-
- #: g10/g10.c:2969
- #, c-format
- msgid "failed to initialize the TrustDB: %s\n"
--msgstr "no s'ha pogut inicialitzar la base de dades de confian�a: %s\n"
-+msgstr "no s'ha pogut inicialitzar la base de dades de confiança: %s\n"
-
- #: g10/g10.c:2980
- msgid "WARNING: recipients (-r) given without using public key encryption\n"
- msgstr ""
--"AV�S: s'han donat destinataris (-r) sense usar xifratge de clau p�blica\n"
-+"AVÃS: s'han donat destinataris (-r) sense usar xifratge de clau pública\n"
-
- #: g10/g10.c:2991
- msgid "--store [filename]"
-@@ -1655,12 +1631,12 @@
- #: g10/g10.c:3276
- #, c-format
- msgid "keyserver receive failed: %s\n"
--msgstr "la recepci� des del servidor de claus ha fallat: %s\n"
-+msgstr "la recepció des del servidor de claus ha fallat: %s\n"
-
- #: g10/g10.c:3278
- #, c-format
- msgid "key export failed: %s\n"
--msgstr "l'exportaci� de la clau ha fallat: %s\n"
-+msgstr "l'exportació de la clau ha fallat: %s\n"
-
- #: g10/g10.c:3289
- #, c-format
-@@ -1685,7 +1661,7 @@
- #: g10/g10.c:3435
- #, c-format
- msgid "invalid hash algorithm `%s'\n"
--msgstr "l'algoritme de dispersi� �s inv�lid �%s�\n"
-+msgstr "l'algoritme de dispersió és invàlid «%s»\n"
-
- #: g10/g10.c:3558
- msgid "[filename]"
-@@ -1700,34 +1676,34 @@
- "a notation name must have only printable characters or spaces, and end with "
- "an '='\n"
- msgstr ""
--"un nom de notaci� nom�s pot tenir car�cters imprimibles o espais i "
--"acabar amb el signe �=�\n"
-+"un nom de notació només pot tenir caràcters imprimibles o espais i acabar "
-+"amb el signe «=»\n"
-
- #: g10/g10.c:3860
- msgid "a user notation name must contain the '@' character\n"
--msgstr "un nom de notaci� d'usuari no pot contenir el car�cter �@�\n"
-+msgstr "un nom de notació d'usuari no pot contenir el caràcter «@»\n"
-
- #: g10/g10.c:3870
- msgid "a notation value must not use any control characters\n"
--msgstr "un valor de notaci� no pot utilitzar cap car�cter de control\n"
-+msgstr "un valor de notació no pot utilitzar cap caràcter de control\n"
-
- #: g10/g10.c:3904
- msgid "the given certification policy URL is invalid\n"
--msgstr "la URL de pol�tica de certificaci� donada no �s v�lida\n"
-+msgstr "la URL de política de certificació donada no és vàlida\n"
-
- #: g10/g10.c:3906
- msgid "the given signature policy URL is invalid\n"
--msgstr "la URL de pol�tica de signatura donada no �s v�lida\n"
-+msgstr "la URL de política de signatura donada no és vàlida\n"
-
- #: g10/g10.c:3939
- #, fuzzy
- msgid "the given preferred keyserver URL is invalid\n"
--msgstr "la URL de pol�tica de signatura donada no �s v�lida\n"
-+msgstr "la URL de política de signatura donada no és vàlida\n"
-
- #: g10/getkey.c:150
- msgid "too many entries in pk cache - disabled\n"
- msgstr ""
--"hi ha massa entrades en la mem�ria cau de claus p�bliques - desactivada\n"
-+"hi ha massa entrades en la memòria cau de claus públiques - desactivada\n"
-
- #: g10/getkey.c:186 g10/getkey.c:2711
- #, fuzzy
-@@ -1738,27 +1714,27 @@
- #, fuzzy, c-format
- msgid "Invalid key %s made valid by --allow-non-selfsigned-uid\n"
- msgstr ""
--"La clau inv�lida %08lX s'ha fet v�lida amb --allow-non-selfsigned-uid\n"
-+"La clau invàlida %08lX s'ha fet vàlida amb --allow-non-selfsigned-uid\n"
-
- #: g10/getkey.c:2189
- #, fuzzy, c-format
- msgid "no secret subkey for public subkey %s - ignoring\n"
- msgstr ""
--"no hi ha una clau secreta per a la subclau p�blica %08lX - es descarta\n"
-+"no hi ha una clau secreta per a la subclau pública %08lX - es descarta\n"
-
- #: g10/getkey.c:2420
- #, fuzzy, c-format
- msgid "using secondary key %s instead of primary key %s\n"
--msgstr "s'usar� la clau secund�ria %08lX en lloc de la prim�ria %08lX\n"
-+msgstr "s'usarà la clau secundària %08lX en lloc de la primària %08lX\n"
-
- #: g10/getkey.c:2467
- #, fuzzy, c-format
- msgid "key %s: secret key without public key - skipped\n"
--msgstr "clau %08lX: clau secreta sense clau p�blica - es descarta\n"
-+msgstr "clau %08lX: clau secreta sense clau pública - es descarta\n"
-
- #: g10/gpgv.c:68
- msgid "be somewhat more quiet"
--msgstr "una mica m�s silenci�s"
-+msgstr "una mica més silenciós"
-
- #: g10/gpgv.c:69
- msgid "take the keys from this keyring"
-@@ -1766,24 +1742,24 @@
-
- #: g10/gpgv.c:71
- msgid "make timestamp conflicts only a warning"
--msgstr "fes els conflictes de marques de temps nom�s un av�s"
-+msgstr "fes els conflictes de marques de temps només un avís"
-
- #: g10/gpgv.c:72
- msgid "|FD|write status info to this FD"
--msgstr "|FD|escriu informaci� d'estat en aquest FD"
-+msgstr "|FD|escriu informació d'estat en aquest FD"
-
- #: g10/gpgv.c:96
- msgid "Usage: gpgv [options] [files] (-h for help)"
--msgstr "Forma d'�s: gpgv [opcions] [fitxers] (-h per a veure l'ajuda)"
-+msgstr "Forma d'ús: gpgv [opcions] [fitxers] (-h per a veure l'ajuda)"
-
--# Werner FIXME: should it use �Usage�?
-+# Werner FIXME: should it use «Usage»?
- #: g10/gpgv.c:99
- msgid ""
- "Syntax: gpg [options] [files]\n"
- "Check signatures against known trusted keys\n"
- msgstr ""
- "Sintaxi: gpg [opcions] [fitxers]\n"
--"Comprova signatures amb claus conegudes amb confian�a\n"
-+"Comprova signatures amb claus conegudes amb confiança\n"
-
- #: g10/helptext.c:48
- msgid ""
-@@ -1791,11 +1767,9 @@
- "to any 3rd party. We need it to implement the web-of-trust; it has nothing\n"
- "to do with the (implicitly created) web-of-certificates."
- msgstr ""
--"L'assignaci� d'un valor ac� �s cosa vostra; aquest valor mai "
--"s'exportar�\n"
--"a cap tercer. Ho necessitem per a implementar la xarxa de confian�a; no "
--"t�\n"
--"res a veure amb la xarxa de certificats (creada impl�citament)."
-+"L'assignació d'un valor ací és cosa vostra; aquest valor mai s'exportarà\n"
-+"a cap tercer. Ho necessitem per a implementar la xarxa de confiança; no té\n"
-+"res a veure amb la xarxa de certificats (creada implícitament)."
-
- #: g10/helptext.c:54
- msgid ""
-@@ -1804,26 +1778,22 @@
- "access to the secret key. Answer \"yes\" to set this key to\n"
- "ultimately trusted\n"
- msgstr ""
--"Per a construir la xarxa de confian�a, GnuPG necessita saber quines claus\n"
--"tenen confian�a absoluta - aquestes s�n normalment les claus per a les "
--"que\n"
--"teniu acc�s a la clau secreta. Contesteu �s�� per a donar a aquesta "
--"clau\n"
--"confian�a absoluta\n"
-+"Per a construir la xarxa de confiança, GnuPG necessita saber quines claus\n"
-+"tenen confiança absoluta - aquestes són normalment les claus per a les que\n"
-+"teniu accés a la clau secreta. Contesteu «sí» per a donar a aquesta clau\n"
-+"confiança absoluta\n"
-
- # "clau no confiable"? jm
--# No fiable, no de confian�a, no de fiar... ivb
-+# No fiable, no de confiança, no de fiar... ivb
- #: g10/helptext.c:61
- msgid "If you want to use this untrusted key anyway, answer \"yes\"."
- msgstr ""
--"Si voleu utilitzar aquesta clau no de confian�a de totes maneres, dieu "
--"�s��."
-+"Si voleu utilitzar aquesta clau no de confiança de totes maneres, dieu «sí»."
-
- #: g10/helptext.c:65
- msgid ""
- "Enter the user ID of the addressee to whom you want to send the message."
--msgstr ""
--"Introdu�u l'ID d'usuari de la persona a qui voleu enviar el missatge."
-+msgstr "Introduïu l'ID d'usuari de la persona a qui voleu enviar el missatge."
-
- #: g10/helptext.c:69
- msgid ""
-@@ -1845,18 +1815,18 @@
- "encryption. This algorithm should only be used in certain domains.\n"
- "Please consult your security expert first."
- msgstr ""
--"En general no �s bona idea utilitzar la mateixa clau per a signar i\n"
--"xifrar. Aquest algoritme nom�s s'hauria d'usar en tasques concretes.\n"
-+"En general no és bona idea utilitzar la mateixa clau per a signar i\n"
-+"xifrar. Aquest algoritme només s'hauria d'usar en tasques concretes.\n"
- "Si us plau, consulteu al vostre expert en seguretat primer."
-
- #: g10/helptext.c:90
- msgid "Enter the size of the key"
--msgstr "Introdu�u la grand�ria de la clau"
-+msgstr "Introduïu la grandària de la clau"
-
- #: g10/helptext.c:94 g10/helptext.c:99 g10/helptext.c:111 g10/helptext.c:143
- #: g10/helptext.c:171 g10/helptext.c:176 g10/helptext.c:181
- msgid "Answer \"yes\" or \"no\""
--msgstr "Contesteu �s�� o �no�"
-+msgstr "Contesteu «sí» o «no»"
-
- #: g10/helptext.c:104
- msgid ""
-@@ -1865,22 +1835,22 @@
- "get a good error response - instead the system tries to interpret\n"
- "the given value as an interval."
- msgstr ""
--"Introdu�u el valor requerit tal i com es mostra en l'indicatiu.\n"
--"�s possible introduir una data ISO (AAAA-MM-DD) per� no rebreu\n"
--"una bona resposta d'error - en canvi, el sistema tractar� d'interpretar\n"
-+"Introduïu el valor requerit tal i com es mostra en l'indicatiu.\n"
-+"És possible introduir una data ISO (AAAA-MM-DD) però no rebreu\n"
-+"una bona resposta d'error - en canvi, el sistema tractarà d'interpretar\n"
- "el valor donat com un interval."
-
- #: g10/helptext.c:116
- msgid "Enter the name of the key holder"
--msgstr "Introdu�u el nom del propietari de la clau"
-+msgstr "Introduïu el nom del propietari de la clau"
-
- #: g10/helptext.c:121
- msgid "please enter an optional but highly suggested email address"
--msgstr "introdu�u una adre�a de correu (opcional per� molt recomanable)"
-+msgstr "introduïu una adreça de correu (opcional però molt recomanable)"
-
- #: g10/helptext.c:125
- msgid "Please enter an optional comment"
--msgstr "Introdu�u un comentari opcional"
-+msgstr "Introduïu un comentari opcional"
-
- #: g10/helptext.c:130
- msgid ""
-@@ -1892,14 +1862,13 @@
- msgstr ""
- "N canvia el nom.\n"
- "C canvia el comentari.\n"
--"E canvia l'adre�a de correu electr�nic.\n"
--"O continua la generaci� de les claus.\n"
-+"E canvia l'adreça de correu electrònic.\n"
-+"O continua la generació de les claus.\n"
- "Q ix."
-
- #: g10/helptext.c:139
- msgid "Answer \"yes\" (or just \"y\") if it is okay to generate the sub key."
--msgstr ""
--"Contesteu �s�� (o nom�s �s�) si �s correcte generar la subclau."
-+msgstr "Contesteu «sí» (o només «s») si és correcte generar la subclau."
-
- #: g10/helptext.c:147
- msgid ""
-@@ -1941,66 +1910,61 @@
- "\n"
- "If you don't know what the right answer is, answer \"0\"."
- msgstr ""
--"Quan signeu un ID d'usuari d'una clau, primer haur?eu de verificar que la "
-+"Quan signeu un ID d'usuari d'una clau, primer hauríeu de verificar que la "
- "clau\n"
--"pertany a la persona esmentada en l'ID d'usuari. �s �til per a altres "
-+"pertany a la persona esmentada en l'ID d'usuari. És útil per a altres "
- "saber\n"
--"amb quanta cura heu verificat a��.\n"
-+"amb quanta cura heu verificat açò.\n"
- "\n"
--"�0� significa que no feu cap declaraci� de amb quanta cura heu "
--"verificat\n"
-+"«0» significa que no feu cap declaració de amb quanta cura heu verificat\n"
- " la clau.\n"
- "\n"
--"�1� significa que creieu que la clau �s de la persona que diu que �s "
--"la\n"
--" propiet�ria, per� no heu pogut, o no heu verificat la clau de cap "
-+"«1» significa que creieu que la clau és de la persona que diu que és la\n"
-+" propietària, però no heu pogut, o no heu verificat la clau de cap "
- "manera.\n"
--" A�� �s �til per a la verificaci� d'un �rol�, quan signeu "
--"la clau d'un\n"
--" usuari amb pseud�nim.\n"
-+" Açò és útil per a la verificació d'un «rol», quan signeu la clau d'un\n"
-+" usuari amb pseudònim.\n"
- "\n"
--"�2� significa que heu fet algunes comprovacions de la clau. Per exemple, "
--"a��\n"
-+"«2» significa que heu fet algunes comprovacions de la clau. Per exemple, "
-+"açò\n"
- " pot significar que heu verificat la emprenta digital de la clau i "
- "verificat\n"
- " l'ID d'usuari en la clau amb el photo ID.\n"
- "\n"
--"�3� significa que heu fet una verificaci� exhaustiva de la clau. Per "
-+"«3» significa que heu fet una verificació exhaustiva de la clau. Per "
- "exemple,\n"
--" a�� pot significar que heu verificat la emprenta digital amb el "
-+" açò pot significar que heu verificat la emprenta digital amb el "
- "propietari\n"
--" de la clau en persona, i que heu comprovat, mitjan�ant un document "
--"dif�cil\n"
-+" de la clau en persona, i que heu comprovat, mitjançant un document "
-+"difícil\n"
- " de falsificar amb photo ID (com un passaport) que el nom del propietari\n"
- " coincideix amb el nom de l'ID d'usuari en la clau, i finalment que heu\n"
--" verificat (per intercanvi de correu) que l'adre�a de correu en la "
--"clau\n"
-+" verificat (per intercanvi de correu) que l'adreça de correu en la clau\n"
- " pertany al propietari de la clau.\n"
- "\n"
- "Teniu en compte que els exemples donats anteriorment per als nivels 2 i 3 "
--"s�n\n"
--"*nom�s* exemples. Al final, �s cosa vostra decidir qu� significa "
--"�alguna� i\n"
--"�exhaustiva� per a vosaltres quan voleu signar altres claus.\n"
-+"són\n"
-+"*només* exemples. Al final, és cosa vostra decidir què significa «alguna» i\n"
-+"«exhaustiva» per a vosaltres quan voleu signar altres claus.\n"
- "\n"
--"Si no sabeu quina �s la resposta correcta, contesteu �0�."
-+"Si no sabeu quina és la resposta correcta, contesteu «0»."
-
- #: g10/helptext.c:185
- #, fuzzy
- msgid "Answer \"yes\" if you want to sign ALL the user IDs"
--msgstr "Contesteu �s�� si voleu signar TOTS els ID d'usuari"
-+msgstr "Contesteu «sí» si voleu signar TOTS els ID d'usuari"
-
- #: g10/helptext.c:189
- msgid ""
- "Answer \"yes\" if you really want to delete this user ID.\n"
- "All certificates are then also lost!"
- msgstr ""
--"Contesteu �s�� si realment voleu eliminar aquest ID d'usuari.\n"
--"Tots els certificats tamb� es perdran!"
-+"Contesteu «sí» si realment voleu eliminar aquest ID d'usuari.\n"
-+"Tots els certificats també es perdran!"
-
- #: g10/helptext.c:194
- msgid "Answer \"yes\" if it is okay to delete the subkey"
--msgstr "Contesteu �s�� si �s correcte eliminar la subclau"
-+msgstr "Contesteu «sí» si és correcte eliminar la subclau"
-
- #: g10/helptext.c:199
- msgid ""
-@@ -2008,9 +1972,9 @@
- "to delete this signature because it may be important to establish a\n"
- "trust connection to the key or another key certified by this key."
- msgstr ""
--"Aquesta �s una signatura v�lida en la clau; normalment no voldreu\n"
--"eliminar aquesta signatura perqu� pot ser important per a establir\n"
--"una connexi� de confian�a a la clau o a un altra clau certificada\n"
-+"Aquesta és una signatura vàlida en la clau; normalment no voldreu\n"
-+"eliminar aquesta signatura perquè pot ser important per a establir\n"
-+"una connexió de confiança a la clau o a un altra clau certificada\n"
- "per aquesta clau."
-
- #: g10/helptext.c:204
-@@ -2020,11 +1984,10 @@
- "know which key was used because this signing key might establish\n"
- "a trust connection through another already certified key."
- msgstr ""
--"Aquesta signatura no es pot comprovar perqu� no teniu la clau\n"
--"corresponent. Haur�eu de posposar la seua eliminaci� fins que\n"
-+"Aquesta signatura no es pot comprovar perquè no teniu la clau\n"
-+"corresponent. Hauríeu de posposar la seua eliminació fins que\n"
- "sapieu quina clau es va utilitzar ja que aquesta clau de signatura\n"
--"podria establir una connexi� de confian�a a trav�s d'una altra clau "
--"ja\n"
-+"podria establir una connexió de confiança a través d'una altra clau ja\n"
- "certificada."
-
- #: g10/helptext.c:210
-@@ -2032,7 +1995,7 @@
- "The signature is not valid. It does make sense to remove it from\n"
- "your keyring."
- msgstr ""
--"La signatura no �s v�lida. T� sentit que l'elimineu de l'anell\n"
-+"La signatura no és vàlida. Té sentit que l'elimineu de l'anell\n"
- "de claus."
-
- #: g10/helptext.c:214
-@@ -2043,11 +2006,10 @@
- "only if this self-signature is for some reason not valid and\n"
- "a second one is available."
- msgstr ""
--"Aquesta �s una signatura que enlla�a l'ID de l'usuari amb la clau.\n"
--"Normalment no �s una bona idea eliminar una signatura com aquesta.\n"
--"Actualment, GnuPG podria no poder utilitzar aquesta clau de nou, aix�\n"
--"que feu a�� nom�s si l'autosignatura no �s v�lida per alguna ra� "
--"i\n"
-+"Aquesta és una signatura que enllaça l'ID de l'usuari amb la clau.\n"
-+"Normalment no és una bona idea eliminar una signatura com aquesta.\n"
-+"Actualment, GnuPG podria no poder utilitzar aquesta clau de nou, així\n"
-+"que feu açò només si l'autosignatura no és vàlida per alguna raó i\n"
- "hi ha una segona disponible."
-
- #: g10/helptext.c:222
-@@ -2056,18 +2018,18 @@
- "to the current list of preferences. The timestamp of all affected\n"
- "self-signatures will be advanced by one second.\n"
- msgstr ""
--"Canvia les prefer�ncies de tots els ID d'usuari (o nom�s els dels "
-+"Canvia les preferències de tots els ID d'usuari (o només els dels "
- "seleccionats)\n"
--"a la llista actual de prefer�ncies. Les marques de temps de totes les\n"
--"autosignatures afectades s'avan�aran un segon.\n"
-+"a la llista actual de preferències. Les marques de temps de totes les\n"
-+"autosignatures afectades s'avançaran un segon.\n"
-
- #: g10/helptext.c:229
- msgid "Please enter the passhrase; this is a secret sentence \n"
--msgstr "Introdu�u la contrasenya; aquesta ha de ser una frase secreta \n"
-+msgstr "Introduïu la contrasenya; aquesta ha de ser una frase secreta \n"
-
- #: g10/helptext.c:235
- msgid "Please repeat the last passphrase, so you are sure what you typed in."
--msgstr "Per favor, repetiu l'�ltima contrasenya per confirmar-la."
-+msgstr "Per favor, repetiu l'última contrasenya per confirmar-la."
-
- #: g10/helptext.c:239
- msgid "Give the name of the file to which the signature applies"
-@@ -2075,15 +2037,15 @@
-
- #: g10/helptext.c:244
- msgid "Answer \"yes\" if it is okay to overwrite the file"
--msgstr "Contesteu �s�� si �s correcte sobreescriure el fitxer"
-+msgstr "Contesteu «sí» si és correcte sobreescriure el fitxer"
-
- #: g10/helptext.c:249
- msgid ""
- "Please enter a new filename. If you just hit RETURN the default\n"
- "file (which is shown in brackets) will be used."
- msgstr ""
--"Introdu�u un nom de fitxer. Si premeu RETORN s'hi usar� el fitxer\n"
--"predeterminat (apareix entre claud�tors)."
-+"Introduïu un nom de fitxer. Si premeu RETORN s'hi usarà el fitxer\n"
-+"predeterminat (apareix entre claudàtors)."
-
- #: g10/helptext.c:255
- msgid ""
-@@ -2100,21 +2062,19 @@
- " Use this to state that the user ID should not longer be used;\n"
- " this is normally used to mark an email address invalid.\n"
- msgstr ""
--"Haur�eu d'especificar una ra� per a la certificaci�. Depenent del\n"
-+"Hauríeu d'especificar una raó per a la certificació. Depenent del\n"
- "context teniu l'habilitat de triar d'aquesta llista:\n"
--" �La clau ha estat compromesa�\n"
--" Utilitzeu a�� si teniu alguna ra� per creure que persones no\n"
--" autoritzades han tingut acc�s a la vostra clau secreta.\n"
--" �La clau ha estat reempla�ada�\n"
--" Utilitzeu a�� si heu reempla�at aquesta clau amb una m�s "
--"nova.\n"
--" �La clau ja no est� en �s�\n"
--" Utilitzeu a�� si heu retirat aquesta clau.\n"
--" �L'ID de l'usuari ja no �s v�lid�\n"
--" Utilitzeu a�� per a constatar que l'ID de l'usuari no s'hauria\n"
--" d'utilitzar m�s; a�� s'utilitza normalment per a marcar una "
--"adre�a\n"
--" de correu com a inv�lida.\n"
-+" «La clau ha estat compromesa»\n"
-+" Utilitzeu açò si teniu alguna raó per creure que persones no\n"
-+" autoritzades han tingut accés a la vostra clau secreta.\n"
-+" «La clau ha estat reemplaçada»\n"
-+" Utilitzeu açò si heu reemplaçat aquesta clau amb una més nova.\n"
-+" «La clau ja no està en ús»\n"
-+" Utilitzeu açò si heu retirat aquesta clau.\n"
-+" «L'ID de l'usuari ja no és vàlid»\n"
-+" Utilitzeu açò per a constatar que l'ID de l'usuari no s'hauria\n"
-+" d'utilitzar més; açò s'utilitza normalment per a marcar una adreça\n"
-+" de correu com a invàlida.\n"
-
- #: g10/helptext.c:271
- msgid ""
-@@ -2122,9 +2082,9 @@
- "revocation certificate. Please keep this text concise.\n"
- "An empty line ends the text.\n"
- msgstr ""
--"Si voleu podeu introduir un text que descriga per qu� expediu aquest\n"
--"certificat de revocaci�. Per favor, sigueu concisos.\n"
--"Una l�nia buida indica el final del text.\n"
-+"Si voleu podeu introduir un text que descriga per què expediu aquest\n"
-+"certificat de revocació. Per favor, sigueu concisos.\n"
-+"Una línia buida indica el final del text.\n"
-
- #: g10/helptext.c:286
- msgid "No help available"
-@@ -2218,7 +2178,7 @@
- #: g10/import.c:547
- #, fuzzy
- msgid "algorithms on these user IDs:\n"
--msgstr "Heu signat els seg�ents ID d'usuari:\n"
-+msgstr "Heu signat els següents ID d'usuari:\n"
-
- #: g10/import.c:584
- #, c-format
-@@ -2256,26 +2216,26 @@
- #: g10/import.c:715
- #, fuzzy, c-format
- msgid "key %s: PKS subkey corruption repaired\n"
--msgstr "clau %08lX: corrupci� de la subclau HKP reparada\n"
-+msgstr "clau %08lX: corrupció de la subclau HKP reparada\n"
-
- #: g10/import.c:730
- #, fuzzy, c-format
- msgid "key %s: accepted non self-signed user ID \"%s\"\n"
--msgstr "clau %08lX: s'ha acceptat la ID d'usuari no autosignada �%s�\n"
-+msgstr "clau %08lX: s'ha acceptat la ID d'usuari no autosignada «%s»\n"
-
- #: g10/import.c:736
- #, fuzzy, c-format
- msgid "key %s: no valid user IDs\n"
--msgstr "clau %08lX: l'ID no �s v�lid\n"
-+msgstr "clau %08lX: l'ID no és vàlid\n"
-
- #: g10/import.c:738
- msgid "this may be caused by a missing self-signature\n"
--msgstr "a�� pot ser causat per l'abs�ncia d'autosignatura\n"
-+msgstr "açò pot ser causat per l'absència d'autosignatura\n"
-
- #: g10/import.c:748 g10/import.c:1170
- #, fuzzy, c-format
- msgid "key %s: public key not found: %s\n"
--msgstr "clau %08lX: no s'ha trobat la clau p�blica: %s\n"
-+msgstr "clau %08lX: no s'ha trobat la clau pública: %s\n"
-
- #: g10/import.c:754
- #, fuzzy, c-format
-@@ -2290,22 +2250,22 @@
- #: g10/import.c:768 g10/openfile.c:261 g10/sign.c:784 g10/sign.c:1042
- #, c-format
- msgid "writing to `%s'\n"
--msgstr "s'est� escrivint en �%s�\n"
-+msgstr "s'està escrivint en «%s»\n"
-
- #: g10/import.c:774 g10/import.c:864 g10/import.c:1089 g10/import.c:1231
- #, c-format
- msgid "error writing keyring `%s': %s\n"
--msgstr "error mentre s'escrivia l'anell �%s�: %s\n"
-+msgstr "error mentre s'escrivia l'anell «%s»: %s\n"
-
- #: g10/import.c:793
- #, fuzzy, c-format
- msgid "key %s: public key \"%s\" imported\n"
--msgstr "clau %08lX: s'ha importat la clau p�blica �%s�\n"
-+msgstr "clau %08lX: s'ha importat la clau pública «%s»\n"
-
- #: g10/import.c:817
- #, fuzzy, c-format
- msgid "key %s: doesn't match our copy\n"
--msgstr "clau %08lX: no correspon a la nostra c�pia\n"
-+msgstr "clau %08lX: no correspon a la nostra còpia\n"
-
- #: g10/import.c:834 g10/import.c:1188
- #, fuzzy, c-format
-@@ -2320,47 +2280,47 @@
- #: g10/import.c:874
- #, fuzzy, c-format
- msgid "key %s: \"%s\" 1 new user ID\n"
--msgstr "clau %08lX: �%s� 1 ID d'usuari nou\n"
-+msgstr "clau %08lX: «%s» 1 ID d'usuari nou\n"
-
- #: g10/import.c:877
- #, fuzzy, c-format
- msgid "key %s: \"%s\" %d new user IDs\n"
--msgstr "clau %08lX: �%s� %d ID d'usuari nous\n"
-+msgstr "clau %08lX: «%s» %d ID d'usuari nous\n"
-
- #: g10/import.c:880
- #, fuzzy, c-format
- msgid "key %s: \"%s\" 1 new signature\n"
--msgstr "clau %08lX: �%s� 1 signatura nova\n"
-+msgstr "clau %08lX: «%s» 1 signatura nova\n"
-
- #: g10/import.c:883
- #, fuzzy, c-format
- msgid "key %s: \"%s\" %d new signatures\n"
--msgstr "clau %08lX: �%s� %d signatures noves\n"
-+msgstr "clau %08lX: «%s» %d signatures noves\n"
-
- #: g10/import.c:886
- #, fuzzy, c-format
- msgid "key %s: \"%s\" 1 new subkey\n"
--msgstr "clau %08lX: �%s� 1 subclau nova\n"
-+msgstr "clau %08lX: «%s» 1 subclau nova\n"
-
- #: g10/import.c:889
- #, fuzzy, c-format
- msgid "key %s: \"%s\" %d new subkeys\n"
--msgstr "clau %08lX: �%s� %d subclaus noves\n"
-+msgstr "clau %08lX: «%s» %d subclaus noves\n"
-
- #: g10/import.c:910
- #, fuzzy, c-format
- msgid "key %s: \"%s\" not changed\n"
--msgstr "clau %08lX: �%s� no ha estat modificada\n"
-+msgstr "clau %08lX: «%s» no ha estat modificada\n"
-
- #: g10/import.c:1055
- #, fuzzy, c-format
- msgid "key %s: secret key with invalid cipher %d - skipped\n"
--msgstr "clau %08lX: clau secreta amb xifrat %d no v�lid - es descarta\n"
-+msgstr "clau %08lX: clau secreta amb xifrat %d no vàlid - es descarta\n"
-
- #: g10/import.c:1066
- #, fuzzy
- msgid "importing secret keys not allowed\n"
--msgstr "s'est� escrivint la clau secreta a �%s�\n"
-+msgstr "s'està escrivint la clau secreta a «%s»\n"
-
- #: g10/import.c:1083
- #, c-format
-@@ -2386,22 +2346,21 @@
- #, fuzzy, c-format
- msgid "key %s: no public key - can't apply revocation certificate\n"
- msgstr ""
--"clau %08lX: falta la clau p�blica: no es pot aplicar el certificat\n"
--"de revocaci�\n"
-+"clau %08lX: falta la clau pública: no es pot aplicar el certificat\n"
-+"de revocació\n"
-
--# O �rebutjara�? ivb
--# Per tots els canvis d'anglicisme �ignorat� -> �es descarta�,
--# �es rebutja� est� b�. jm
-+# O «rebutjara»? ivb
-+# Per tots els canvis d'anglicisme «ignorat» -> «es descarta»,
-+# «es rebutja» està bé. jm
- #: g10/import.c:1206
- #, fuzzy, c-format
- msgid "key %s: invalid revocation certificate: %s - rejected\n"
--msgstr ""
--"clau %08lX: el certificat de revocaci� �s inv�lid: %s: es rebutja\n"
-+msgstr "clau %08lX: el certificat de revocació és invàlid: %s: es rebutja\n"
-
- #: g10/import.c:1238
- #, fuzzy, c-format
- msgid "key %s: \"%s\" revocation certificate imported\n"
--msgstr "clau %08lX: s'ha importat el certificat de revocaci� �%s�\n"
-+msgstr "clau %08lX: s'ha importat el certificat de revocació «%s»\n"
-
- #: g10/import.c:1303
- #, fuzzy, c-format
-@@ -2412,50 +2371,49 @@
- #, fuzzy, c-format
- msgid "key %s: unsupported public key algorithm on user ID \"%s\"\n"
- msgstr ""
--"clau %08lX: l'algoritme de clau p�blica no es suporta sobre l'id d'usuari "
--"�%s�\n"
-+"clau %08lX: l'algoritme de clau pública no es suporta sobre l'id d'usuari «%"
-+"s»\n"
- "\n"
-
- #: g10/import.c:1320
- #, fuzzy, c-format
- msgid "key %s: invalid self-signature on user ID \"%s\"\n"
--msgstr ""
--"clau %08lX: l'autosignatura no �s v�lida en l'id d'usuari �%s�\n"
-+msgstr "clau %08lX: l'autosignatura no és vàlida en l'id d'usuari «%s»\n"
-
- #: g10/import.c:1338
- #, fuzzy, c-format
- msgid "key %s: no subkey for key binding\n"
--msgstr "clau %08lX: no hi ha una subclau per a l'enlla� de la clau\n"
-+msgstr "clau %08lX: no hi ha una subclau per a l'enllaç de la clau\n"
-
- #: g10/import.c:1349 g10/import.c:1399
- #, fuzzy, c-format
- msgid "key %s: unsupported public key algorithm\n"
--msgstr "clau %08lX: l'algoritme de clau p�blica no �s suportat\n"
-+msgstr "clau %08lX: l'algoritme de clau pública no és suportat\n"
-
- #: g10/import.c:1351
- #, fuzzy, c-format
- msgid "key %s: invalid subkey binding\n"
--msgstr "clau %08lX: l'enlla� de subclau �s inv�lid\n"
-+msgstr "clau %08lX: l'enllaç de subclau és invàlid\n"
-
- #: g10/import.c:1366
- #, fuzzy, c-format
- msgid "key %s: removed multiple subkey binding\n"
--msgstr "clau %08lX: s'ha eliminat un enlla� de subclau m�ltiple\n"
-+msgstr "clau %08lX: s'ha eliminat un enllaç de subclau múltiple\n"
-
- #: g10/import.c:1388
- #, fuzzy, c-format
- msgid "key %s: no subkey for key revocation\n"
--msgstr "clau %08lX: no hi ha una subclau per a la clau de revocaci�\n"
-+msgstr "clau %08lX: no hi ha una subclau per a la clau de revocació\n"
-
- #: g10/import.c:1401
- #, fuzzy, c-format
- msgid "key %s: invalid subkey revocation\n"
--msgstr "clau %08lX: Subclau de revocaci� no v�lida\n"
-+msgstr "clau %08lX: Subclau de revocació no vàlida\n"
-
- #: g10/import.c:1416
- #, fuzzy, c-format
- msgid "key %s: removed multiple subkey revocation\n"
--msgstr "clau %08lX: s'han eliminat subclaus de revocaci� m�ltiples\n"
-+msgstr "clau %08lX: s'han eliminat subclaus de revocació múltiples\n"
-
- #: g10/import.c:1458
- #, fuzzy, c-format
-@@ -2470,34 +2428,32 @@
- #: g10/import.c:1506
- #, fuzzy, c-format
- msgid "key %s: non exportable signature (class 0x%02X) - skipped\n"
--msgstr ""
--"clau %08lX: la signatura �s inexportable (classe %02x) - es descarta\n"
-+msgstr "clau %08lX: la signatura és inexportable (classe %02x) - es descarta\n"
-
- #: g10/import.c:1516
- #, fuzzy, c-format
- msgid "key %s: revocation certificate at wrong place - skipped\n"
- msgstr ""
--"clau %08lX: el certificat de revocaci� �s en el lloc equivocat - es "
-+"clau %08lX: el certificat de revocació és en el lloc equivocat - es "
- "descarta\n"
-
- #: g10/import.c:1533
- #, fuzzy, c-format
- msgid "key %s: invalid revocation certificate: %s - skipped\n"
--msgstr ""
--"clau %08lX: el certificat de revocaci� �s inv�lid: %s - es descarta\n"
-+msgstr "clau %08lX: el certificat de revocació és invàlid: %s - es descarta\n"
-
- #: g10/import.c:1547
- #, fuzzy, c-format
- msgid "key %s: subkey signature in wrong place - skipped\n"
- msgstr ""
--"clau %08lX: la signatura de la subclau �s en el lloc equivocat - es "
-+"clau %08lX: la signatura de la subclau és en el lloc equivocat - es "
- "descarta\n"
-
- #: g10/import.c:1555
- #, fuzzy, c-format
- msgid "key %s: unexpected signature class (0x%02X) - skipped\n"
- msgstr ""
--"clau %08lX: la classe de signatura �s inesperada (0x%02x) - es descarta\n"
-+"clau %08lX: la classe de signatura és inesperada (0x%02x) - es descarta\n"
-
- #: g10/import.c:1655
- #, fuzzy, c-format
-@@ -2508,20 +2464,20 @@
- #, fuzzy, c-format
- msgid "WARNING: key %s may be revoked: fetching revocation key %s\n"
- msgstr ""
--"AV�S: la clau %08lX pot estar revocada: s'adquireix la clau de revocaci� "
--"%08lX\n"
-+"AVÃS: la clau %08lX pot estar revocada: s'adquireix la clau de revocació %"
-+"08lX\n"
-
- #: g10/import.c:1731
- #, fuzzy, c-format
- msgid "WARNING: key %s may be revoked: revocation key %s not present.\n"
- msgstr ""
--"AV�S: la clau %08lX pot estar revocada: la clau de revocaci� %08lX no "
--"est� present.\n"
-+"AVÃS: la clau %08lX pot estar revocada: la clau de revocació %08lX no està "
-+"present.\n"
-
- #: g10/import.c:1790
- #, fuzzy, c-format
- msgid "key %s: \"%s\" revocation certificate added\n"
--msgstr "clau %08lX: s'hi ha afegit el certificat de revocaci� �%s�\n"
-+msgstr "clau %08lX: s'hi ha afegit el certificat de revocació «%s»\n"
-
- #: g10/import.c:1824
- #, fuzzy, c-format
-@@ -2531,21 +2487,21 @@
- #: g10/keydb.c:167
- #, c-format
- msgid "error creating keyring `%s': %s\n"
--msgstr "error en crear l'anell �%s�: %s\n"
-+msgstr "error en crear l'anell «%s»: %s\n"
-
- #: g10/keydb.c:174
- #, c-format
- msgid "keyring `%s' created\n"
--msgstr "s'ha creat l'anell �%s?\n"
-+msgstr "s'ha creat l'anell «%s»\n"
-
- #: g10/keydb.c:685
- #, c-format
- msgid "failed to rebuild keyring cache: %s\n"
--msgstr "no s'ha pogut reconstruir la mem�ria cau de l'anell: %s\n"
-+msgstr "no s'ha pogut reconstruir la memòria cau de l'anell: %s\n"
-
- #: g10/keyedit.c:253
- msgid "[revocation]"
--msgstr "[revocaci�]"
-+msgstr "[revocació]"
-
- #: g10/keyedit.c:254
- msgid "[self-signature]"
-@@ -2553,12 +2509,12 @@
-
- #: g10/keyedit.c:332 g10/keylist.c:342
- msgid "1 bad signature\n"
--msgstr "1 signatura err�nia\n"
-+msgstr "1 signatura errònia\n"
-
- #: g10/keyedit.c:334 g10/keylist.c:344
- #, c-format
- msgid "%d bad signatures\n"
--msgstr "%d signatures err�nies\n"
-+msgstr "%d signatures errònies\n"
-
- #: g10/keyedit.c:336 g10/keylist.c:346
- msgid "1 signature not checked due to a missing key\n"
-@@ -2580,12 +2536,12 @@
-
- #: g10/keyedit.c:344
- msgid "1 user ID without valid self-signature detected\n"
--msgstr "Ha estat detectat 1 ID sense autosignatura v�lida\n"
-+msgstr "Ha estat detectat 1 ID sense autosignatura vàlida\n"
-
- #: g10/keyedit.c:346
- #, c-format
- msgid "%d user IDs without valid self-signatures detected\n"
--msgstr "Han estat detectats %d IDs sense autosignatura v�lida\n"
-+msgstr "Han estat detectats %d IDs sense autosignatura vàlida\n"
-
- #: g10/keyedit.c:402 g10/pkclist.c:262
- #, fuzzy
-@@ -2623,7 +2579,7 @@
- #: g10/keyedit.c:584
- #, c-format
- msgid "User ID \"%s\" is revoked."
--msgstr "L'ID d'usuari �%s� est� revocat."
-+msgstr "L'ID d'usuari «%s» està revocat."
-
- #: g10/keyedit.c:593 g10/keyedit.c:619 g10/keyedit.c:644 g10/keyedit.c:799
- #: g10/keyedit.c:857 g10/keyedit.c:1543
-@@ -2640,12 +2596,12 @@
- #: g10/keyedit.c:610
- #, c-format
- msgid "User ID \"%s\" is expired."
--msgstr "L'ID d'usuari �%s� ha caducat."
-+msgstr "L'ID d'usuari «%s» ha caducat."
-
- #: g10/keyedit.c:636
- #, c-format
- msgid "User ID \"%s\" is not self-signed."
--msgstr "L'ID d'usuari �%s� no est� autosignat."
-+msgstr "L'ID d'usuari «%s» no està autosignat."
-
- #: g10/keyedit.c:675
- #, c-format
-@@ -2653,8 +2609,8 @@
- "The self-signature on \"%s\"\n"
- "is a PGP 2.x-style signature.\n"
- msgstr ""
--"La vostra signatura en �%s�\n"
--"�s una signatura d'estil PGP 2.x.\n"
-+"La vostra signatura en «%s»\n"
-+"és una signatura d'estil PGP 2.x.\n"
-
- #: g10/keyedit.c:684
- msgid "Do you want to promote it to an OpenPGP self-signature? (y/N) "
-@@ -2666,12 +2622,12 @@
- "Your current signature on \"%s\"\n"
- "has expired.\n"
- msgstr ""
--"La vostra signatura actual en �%s�\n"
-+"La vostra signatura actual en «%s»\n"
- "ha caducat.\n"
-
- #: g10/keyedit.c:702
- msgid "Do you want to issue a new signature to replace the expired one? (y/N) "
--msgstr "Voleu crear una nova signatura per a reempla�ar la caducada? (s/N) "
-+msgstr "Voleu crear una nova signatura per a reemplaçar la caducada? (s/N) "
-
- #: g10/keyedit.c:723
- #, c-format
-@@ -2679,8 +2635,8 @@
- "Your current signature on \"%s\"\n"
- "is a local signature.\n"
- msgstr ""
--"La vostra signatura en �%s�\n"
--"�s una signatura local.\n"
-+"La vostra signatura en «%s»\n"
-+"és una signatura local.\n"
-
- #: g10/keyedit.c:727
- msgid "Do you want to promote it to a full exportable signature? (y/N) "
-@@ -2689,12 +2645,12 @@
- #: g10/keyedit.c:748
- #, fuzzy, c-format
- msgid "\"%s\" was already locally signed by key %s\n"
--msgstr "�%s� ja estava signada localment amb la clau %08lX\n"
-+msgstr "«%s» ja estava signada localment amb la clau %08lX\n"
-
- #: g10/keyedit.c:751
- #, fuzzy, c-format
- msgid "\"%s\" was already signed by key %s\n"
--msgstr "�%s� ja estava signada amb la clau %08lX\n"
-+msgstr "«%s» ja estava signada amb la clau %08lX\n"
-
- #: g10/keyedit.c:756
- msgid "Do you want to sign it again anyway? (y/N) "
-@@ -2712,7 +2668,7 @@
- #: g10/keyedit.c:813
- #, c-format
- msgid "This key is due to expire on %s.\n"
--msgstr "Aquesta clau caducar� el %s.\n"
-+msgstr "Aquesta clau caducarà el %s.\n"
-
- #: g10/keyedit.c:817
- msgid "Do you want your signature to expire at the same time? (Y/n) "
-@@ -2727,7 +2683,7 @@
-
- #: g10/keyedit.c:852
- msgid "This would make the key unusable in PGP 2.x.\n"
--msgstr "A�� inutilitzaria la clau en PGP 2.x.\n"
-+msgstr "Açò inutilitzaria la clau en PGP 2.x.\n"
-
- #: g10/keyedit.c:877
- msgid ""
-@@ -2736,8 +2692,8 @@
- "to the person named above? If you don't know what to answer, enter \"0\".\n"
- msgstr ""
- "Amb quanta cura heu verificat que la clau que esteu a punt de signar \n"
--"pertany realment a la persona esmentada anteriorment? Si no sabeu qu� \n"
--"contestar, entreu �0�.\n"
-+"pertany realment a la persona esmentada anteriorment? Si no sabeu què \n"
-+"contestar, entreu «0».\n"
-
- #: g10/keyedit.c:882
- #, c-format
-@@ -2762,9 +2718,7 @@
- #: g10/keyedit.c:894
- #, fuzzy
- msgid "Your selection? (enter `?' for more information): "
--msgstr ""
--"Seleccioneu una opci� (introdu�u �?� per obtindre m�s "
--"informaci�):"
-+msgstr "Seleccioneu una opció (introduïu «?» per obtindre més informació):"
-
- #: g10/keyedit.c:918
- #, fuzzy, c-format
-@@ -2780,35 +2734,35 @@
- msgid "This will be a self-signature.\n"
- msgstr ""
- "\n"
--"A�� ser� una autosignatura.\n"
-+"Açò serà una autosignatura.\n"
-
- #: g10/keyedit.c:931
- #, fuzzy
- msgid "WARNING: the signature will not be marked as non-exportable.\n"
- msgstr ""
- "\n"
--"AV�S: la signatura no es marcar� com a inexportable.\n"
-+"AVÃS: la signatura no es marcarà com a inexportable.\n"
-
- #: g10/keyedit.c:939
- #, fuzzy
- msgid "WARNING: the signature will not be marked as non-revocable.\n"
- msgstr ""
- "\n"
--"AV�S: la signatura no es marcar� com a irrevocable.\n"
-+"AVÃS: la signatura no es marcarà com a irrevocable.\n"
-
- #: g10/keyedit.c:949
- #, fuzzy
- msgid "The signature will be marked as non-exportable.\n"
- msgstr ""
- "\n"
--"La signatura es marcar� com a inexportable.\n"
-+"La signatura es marcarà com a inexportable.\n"
-
- #: g10/keyedit.c:956
- #, fuzzy
- msgid "The signature will be marked as non-revocable.\n"
- msgstr ""
- "\n"
--"La signatura es marcar� com a irrevocable.\n"
-+"La signatura es marcarà com a irrevocable.\n"
-
- #: g10/keyedit.c:963
- #, fuzzy
-@@ -2840,19 +2794,19 @@
- #: g10/sign.c:369
- #, c-format
- msgid "signing failed: %s\n"
--msgstr "Ha fallat el proc�s de signatura: %s\n"
-+msgstr "Ha fallat el procés de signatura: %s\n"
-
- #: g10/keyedit.c:1084
- msgid "This key is not protected.\n"
--msgstr "Aquesta clau no est� protegida.\n"
-+msgstr "Aquesta clau no està protegida.\n"
-
- #: g10/keyedit.c:1088
- msgid "Secret parts of primary key are not available.\n"
--msgstr "Les parts secretes de la clau prim�ria no estan disponibles.\n"
-+msgstr "Les parts secretes de la clau primària no estan disponibles.\n"
-
- #: g10/keyedit.c:1092
- msgid "Key is protected.\n"
--msgstr "La clau est� protegida.\n"
-+msgstr "La clau està protegida.\n"
-
- #: g10/keyedit.c:1112
- #, c-format
-@@ -2864,7 +2818,7 @@
- "Enter the new passphrase for this secret key.\n"
- "\n"
- msgstr ""
--"Introdu�u la nova contrasenya per a la clau secreta.\n"
-+"Introduïu la nova contrasenya per a la clau secreta.\n"
- "\n"
-
- #: g10/keyedit.c:1127 g10/keygen.c:1818
-@@ -2876,18 +2830,18 @@
- "You don't want a passphrase - this is probably a *bad* idea!\n"
- "\n"
- msgstr ""
--"No voleu contrasenya: a�� �s probablement una *mala* idea!\n"
-+"No voleu contrasenya: açò és probablement una *mala* idea!\n"
- "\n"
-
- # No abusis dels pronoms! (Rowan Atkinson @ Llei i Desordre) ivb
- #: g10/keyedit.c:1135
- #, fuzzy
- msgid "Do you really want to do this? (y/N) "
--msgstr "Esteu segur de voler fer a��? "
-+msgstr "Esteu segur de voler fer açò? "
-
- #: g10/keyedit.c:1201
- msgid "moving a key signature to the correct place\n"
--msgstr "s'est� posant la signatura al lloc correcte\n"
-+msgstr "s'està posant la signatura al lloc correcte\n"
-
- #: g10/keyedit.c:1287
- msgid "save and quit"
-@@ -2902,14 +2856,14 @@
- msgstr "llista claus i ID"
-
- # Per aquesta zona (keyedit) hi ha un cacau d'infinitius i presents... ivb
--# Yeah, els vaig corregir abans de que enviares la teua correcci�. jm
-+# Yeah, els vaig corregir abans de que enviares la teua correcció. jm
- #: g10/keyedit.c:1293
- msgid "select user ID N"
- msgstr "tria l'ID d'usuari N"
-
- #: g10/keyedit.c:1294
- msgid "select secondary key N"
--msgstr "tria la clau secund�ria N"
-+msgstr "tria la clau secundària N"
-
- #: g10/keyedit.c:1295
- msgid "list signatures"
-@@ -2928,9 +2882,9 @@
- msgstr "afegeix un ID d'usuari"
-
- # Com estava escrit abans. ivb
--# Si et refereixes a Photo vs. photo, ho deixe en min�scules, que en tot
--# el men� est� tot en min�scules. Tb hi ha molts ID vs. id en els msgids
--# i no hem unificat en catal�. Potser li ho dir� a Werner. jm.
-+# Si et refereixes a Photo vs. photo, ho deixe en minúscules, que en tot
-+# el menú està tot en minúscules. Tb hi ha molts ID vs. id en els msgids
-+# i no hem unificat en català. Potser li ho diré a Werner. jm.
- #: g10/keyedit.c:1304
- msgid "add a photo ID"
- msgstr "afegeix un photo ID"
-@@ -2941,7 +2895,7 @@
-
- #: g10/keyedit.c:1308
- msgid "add a secondary key"
--msgstr "afegeix una clau secund�ria"
-+msgstr "afegeix una clau secundària"
-
- #: g10/keyedit.c:1310
- msgid "add a key to a smartcard"
-@@ -2953,11 +2907,11 @@
-
- #: g10/keyedit.c:1313
- msgid "delete a secondary key"
--msgstr "esborra una clau secund�ria"
-+msgstr "esborra una clau secundària"
-
- #: g10/keyedit.c:1314
- msgid "add a revocation key"
--msgstr "afegeix una clau de revocaci�"
-+msgstr "afegeix una clau de revocació"
-
- #: g10/keyedit.c:1315
- msgid "delete signatures"
-@@ -2973,29 +2927,28 @@
-
- #: g10/keyedit.c:1318
- msgid "toggle between secret and public key listing"
--msgstr "canvia entre el llistat de claus secretes i p�bliques"
-+msgstr "canvia entre el llistat de claus secretes i públiques"
-
- #: g10/keyedit.c:1320
- msgid "list preferences (expert)"
--msgstr "llista les prefer�ncies (expert)"
-+msgstr "llista les preferències (expert)"
-
- #: g10/keyedit.c:1321
- msgid "list preferences (verbose)"
--msgstr "llista les prefer�ncies (detallat)"
-+msgstr "llista les preferències (detallat)"
-
- #: g10/keyedit.c:1322
- msgid "set preference list"
--msgstr "estableix la llista de prefer�ncies"
-+msgstr "estableix la llista de preferències"
-
- #: g10/keyedit.c:1323
- msgid "updated preferences"
--msgstr "prefer�ncies actualitzades"
-+msgstr "preferències actualitzades"
-
- #: g10/keyedit.c:1324
- #, fuzzy
- msgid "set preferred keyserver URL"
--msgstr ""
--"no s'ha pogut analitzar sint�cticament la URI del servidor de claus\n"
-+msgstr "no s'ha pogut analitzar sintàcticament la URI del servidor de claus\n"
-
- #: g10/keyedit.c:1325
- msgid "change the passphrase"
-@@ -3003,7 +2956,7 @@
-
- #: g10/keyedit.c:1326
- msgid "change the ownertrust"
--msgstr "canvia la confian�a"
-+msgstr "canvia la confiança"
-
- #: g10/keyedit.c:1327
- msgid "revoke signatures"
-@@ -3015,7 +2968,7 @@
-
- #: g10/keyedit.c:1329
- msgid "revoke a secondary key"
--msgstr "revoca una clau secund�ria"
-+msgstr "revoca una clau secundària"
-
- #: g10/keyedit.c:1330
- msgid "disable a key"
-@@ -3034,23 +2987,23 @@
- #: g10/keyedit.c:1386
- #, fuzzy, c-format
- msgid "error reading secret keyblock \"%s\": %s\n"
--msgstr "error en llegir el bloc de claus secretes �%s�: %s\n"
-+msgstr "error en llegir el bloc de claus secretes «%s»: %s\n"
-
- #: g10/keyedit.c:1404
- msgid "Secret key is available.\n"
--msgstr "La clau secreta est� disponible.\n"
-+msgstr "La clau secreta està disponible.\n"
-
- #: g10/keyedit.c:1481
- msgid "Need the secret key to do this.\n"
--msgstr "Cal la clau secreta per a fer a��.\n"
-+msgstr "Cal la clau secreta per a fer açò.\n"
-
- #: g10/keyedit.c:1489
- msgid "Please use the command \"toggle\" first.\n"
--msgstr "Useu l'ordre �toggle� abans.\n"
-+msgstr "Useu l'ordre «toggle» abans.\n"
-
- #: g10/keyedit.c:1537
- msgid "Key is revoked."
--msgstr "La clau est� revocada."
-+msgstr "La clau està revocada."
-
- #: g10/keyedit.c:1557
- #, fuzzy
-@@ -3064,12 +3017,12 @@
- #: g10/keyedit.c:1568
- #, fuzzy, c-format
- msgid "Unknown signature type `%s'\n"
--msgstr "la classe de signatura �s desconeguda"
-+msgstr "la classe de signatura és desconeguda"
-
- #: g10/keyedit.c:1591
- #, c-format
- msgid "This command is not allowed while in %s mode.\n"
--msgstr "Aquesta ordre no est� permesa mentre s'est� en mode %s.\n"
-+msgstr "Aquesta ordre no està permesa mentre s'està en mode %s.\n"
-
- #: g10/keyedit.c:1613 g10/keyedit.c:1633 g10/keyedit.c:1736
- msgid "You must select at least one user ID.\n"
-@@ -3077,7 +3030,7 @@
-
- #: g10/keyedit.c:1615
- msgid "You can't delete the last user ID!\n"
--msgstr "No podeu esborrar l'�ltim ID d'usuari!\n"
-+msgstr "No podeu esborrar l'últim ID d'usuari!\n"
-
- #: g10/keyedit.c:1617
- #, fuzzy
-@@ -3092,16 +3045,16 @@
- #: g10/keyedit.c:1668
- #, fuzzy
- msgid "Really move the primary key? (y/N) "
--msgstr "Realment voleu eliminar aquest ID d'usuari? "
-+msgstr "Realment voleu esborrar aquesta autosignatura? (s/N)"
-
- #: g10/keyedit.c:1680
- #, fuzzy
- msgid "You must select exactly one key.\n"
--msgstr "Heu de seleccionar, si m�s no, una clau.\n"
-+msgstr "Heu de seleccionar, si més no, una clau.\n"
-
- #: g10/keyedit.c:1700 g10/keyedit.c:1755
- msgid "You must select at least one key.\n"
--msgstr "Heu de seleccionar, si m�s no, una clau.\n"
-+msgstr "Heu de seleccionar, si més no, una clau.\n"
-
- #: g10/keyedit.c:1703
- #, fuzzy
-@@ -3141,18 +3094,18 @@
- #: g10/keyedit.c:1831
- #, fuzzy
- msgid "Set preference list to:\n"
--msgstr "estableix la llista de prefer�ncies"
-+msgstr "estableix la llista de preferències"
-
- #: g10/keyedit.c:1837
- #, fuzzy
- msgid "Really update the preferences for the selected user IDs? (y/N) "
- msgstr ""
--"Voleu actualitzar les prefer�ncies per a les ID d'usuaris seleccionades?"
-+"Voleu actualitzar les preferències per a les ID d'usuaris seleccionades?"
-
- #: g10/keyedit.c:1839
- #, fuzzy
- msgid "Really update the preferences? (y/N) "
--msgstr "Realment voleu actualitzar les prefer�ncies? "
-+msgstr "Realment voleu actualitzar les preferències? "
-
- #: g10/keyedit.c:1889
- #, fuzzy
-@@ -3167,16 +3120,16 @@
- #: g10/keyedit.c:1902
- #, c-format
- msgid "update failed: %s\n"
--msgstr "ha fallat l'actualitzaci�: %s\n"
-+msgstr "ha fallat l'actualització: %s\n"
-
- #: g10/keyedit.c:1909
- #, c-format
- msgid "update secret failed: %s\n"
--msgstr "ha fallat l'actualitzaci� de la clau secreta: %s\n"
-+msgstr "ha fallat l'actualització de la clau secreta: %s\n"
-
- #: g10/keyedit.c:1916
- msgid "Key not changed so no update needed.\n"
--msgstr "La clau no ha canviat, per tant no cal actualitzaci�.\n"
-+msgstr "La clau no ha canviat, per tant no cal actualització.\n"
-
- #: g10/keyedit.c:1988
- msgid "Digest: "
-@@ -3194,8 +3147,8 @@
- msgid "Preferred keyserver: "
- msgstr ""
-
--# Potser %s haja d'anar darrere de �clau�. ivb
--# �s cert. Nova funcionalitat de 1.2.0, IIRC. jm
-+# Potser %s haja d'anar darrere de «clau». ivb
-+# És cert. Nova funcionalitat de 1.2.0, IIRC. jm
- #: g10/keyedit.c:2309
- #, fuzzy, c-format
- msgid "This key may be revoked by %s key %s"
-@@ -3230,14 +3183,14 @@
- msgstr " [caduca: %s]"
-
- #: g10/keyedit.c:2340
--#, fuzzy, c-format
-+#, c-format
- msgid "usage: %s"
--msgstr " confian�a: %c/%c"
-+msgstr ""
-
- #: g10/keyedit.c:2355
- #, fuzzy, c-format
- msgid "trust: %s"
--msgstr " confian�a: %c/%c"
-+msgstr " confiança: %c/%c"
-
- #: g10/keyedit.c:2359
- #, c-format
-@@ -3254,15 +3207,14 @@
-
- #: g10/keyedit.c:2461
- msgid "There are no preferences on a PGP 2.x-style user ID.\n"
--msgstr "No hi ha prefer�ncies en un ID d'usuari d'estil PGP 2.x.\n"
-+msgstr "No hi ha preferències en un ID d'usuari d'estil PGP 2.x.\n"
-
- #: g10/keyedit.c:2469
- msgid ""
- "Please note that the shown key validity is not necessarily correct\n"
- "unless you restart the program.\n"
- msgstr ""
--"Teniu en compte que la validesa de la clau mostrada no �s "
--"necess�riament\n"
-+"Teniu en compte que la validesa de la clau mostrada no és necessàriament\n"
- "correcta a no ser que torneu a executar el programa.\n"
-
- #: g10/keyedit.c:2533 g10/keyserver.c:376 g10/mainproc.c:1575
-@@ -3282,8 +3234,8 @@
- "WARNING: no user ID has been marked as primary. This command may\n"
- " cause a different user ID to become the assumed primary.\n"
- msgstr ""
--"AV�S: no s'ha marcat cap ID d'usuari com prim�ria. Aquesta ordre pot\n"
--" causar que una ID d'usuari diferent esdevinga en la prim�ria "
-+"AVÃS: no s'ha marcat cap ID d'usuari com primària. Aquesta ordre pot\n"
-+" causar que una ID d'usuari diferent esdevinga en la primària "
- "assumida.\n"
-
- # Photo ID com abans. ivb
-@@ -3293,7 +3245,7 @@
- "versions\n"
- " of PGP to reject this key.\n"
- msgstr ""
--"AV�S: Aquesta �s una clau d'estil PGP2. Afegir un photo ID pot fer que "
-+"AVÃS: Aquesta és una clau d'estil PGP2. Afegir un photo ID pot fer que "
- "algunes versions de PGP rebutgen aquesta clau.\n"
-
- #: g10/keyedit.c:2665 g10/keyedit.c:2943
-@@ -3304,15 +3256,15 @@
- msgid "You may not add a photo ID to a PGP2-style key.\n"
- msgstr "No podeu afegir un photo ID a una clau d'estil PGP2.\n"
-
--# Aquesta i les seg�ents no haurien de portar (s/N/q) i no (y/N/q)? ivb
--# Hmm. S�... (s/N/x) jm
-+# Aquesta i les següents no haurien de portar (s/N/q) i no (y/N/q)? ivb
-+# Hmm. Sí... (s/N/x) jm
- #: g10/keyedit.c:2811
- msgid "Delete this good signature? (y/N/q)"
- msgstr "Voleu esborrar aquesta signatura correcta? (s/N/x)"
-
- #: g10/keyedit.c:2821
- msgid "Delete this invalid signature? (y/N/q)"
--msgstr "Voleu esborrar aquesta signatura inv�lida? (s/N/x)"
-+msgstr "Voleu esborrar aquesta signatura invàlida? (s/N/x)"
-
- #: g10/keyedit.c:2825
- msgid "Delete this unknown signature? (y/N/q)"
-@@ -3344,8 +3296,7 @@
- "cause\n"
- " some versions of PGP to reject this key.\n"
- msgstr ""
--"AV�S: Aquesta �s una clau d'estil PGP 2.x. Afegir un revocador designat "
--"pot\n"
-+"AVÃS: Aquesta és una clau d'estil PGP 2.x. Afegir un revocador designat pot\n"
- "fer que algunes versions de PGP rebutjen aquesta clau.\n"
-
- #: g10/keyedit.c:2949
-@@ -3354,7 +3305,7 @@
-
- #: g10/keyedit.c:2969
- msgid "Enter the user ID of the designated revoker: "
--msgstr "Introdu�u l'ID d'usuari del revocador designat: "
-+msgstr "Introduïu l'ID d'usuari del revocador designat: "
-
- #: g10/keyedit.c:2992
- msgid "cannot appoint a PGP 2.x style key as a designated revoker\n"
-@@ -3368,13 +3319,12 @@
- #: g10/keyedit.c:3029
- #, fuzzy
- msgid "this key has already been designated as a revoker\n"
--msgstr "AV�S: Aquesta clau ha estat revocada pel propietari!\n"
-+msgstr "no podeu nominar una clau com el seu propi revocador designat\n"
-
- #: g10/keyedit.c:3048
- msgid "WARNING: appointing a key as a designated revoker cannot be undone!\n"
- msgstr ""
--"AV�S: no es pot desfer la nominaci� d'una clau com a revocador "
--"designat!\n"
-+"AVÃS: no es pot desfer la nominació d'una clau com a revocador designat!\n"
-
- #: g10/keyedit.c:3054
- #, fuzzy
-@@ -3389,15 +3339,15 @@
-
- #: g10/keyedit.c:3121
- msgid "Please select at most one secondary key.\n"
--msgstr "Per favor, seleccioneu com a molt una clau secund�ria.\n"
-+msgstr "Per favor, seleccioneu com a molt una clau secundària.\n"
-
- #: g10/keyedit.c:3125
- msgid "Changing expiration time for a secondary key.\n"
--msgstr "S'est� canviant la data de caducitat per a una clau secund�ria.\n"
-+msgstr "S'està canviant la data de caducitat per a una clau secundària.\n"
-
- #: g10/keyedit.c:3128
- msgid "Changing expiration time for the primary key.\n"
--msgstr "S'est� canviant la data de caducitat per a una clau prim�ria.\n"
-+msgstr "S'està canviant la data de caducitat per a una clau primària.\n"
-
- #: g10/keyedit.c:3174
- msgid "You can't change the expiration date of a v3 key\n"
-@@ -3414,7 +3364,7 @@
- #: g10/keyedit.c:3309 g10/keyedit.c:3419 g10/keyedit.c:3538
- #, fuzzy, c-format
- msgid "skipping v3 self-signature on user ID \"%s\"\n"
--msgstr "es descarta l'autosignatura v3 en l'id d'usuari �%s�\n"
-+msgstr "es descarta l'autosignatura v3 en l'id d'usuari «%s»\n"
-
- #: g10/keyedit.c:3480
- msgid "Enter your preferred keyserver URL: "
-@@ -3433,22 +3383,24 @@
- #: g10/keyedit.c:3622
- #, c-format
- msgid "No user ID with index %d\n"
--msgstr "No hi ha cap ID amb l'�ndex %d\n"
-+msgstr "No hi ha cap ID amb l'índex %d\n"
-
- #: g10/keyedit.c:3668
- #, c-format
- msgid "No secondary key with index %d\n"
--msgstr "No hi ha cap clau secund�ria amb l'�ndex %d\n"
-+msgstr "No hi ha cap clau secundària amb l'índex %d\n"
-
- #: g10/keyedit.c:3785
- #, fuzzy, c-format
- msgid "user ID: \"%s\"\n"
--msgstr "ID d'usuari: �"
-+msgstr "ID d'usuari: «"
-
- #: g10/keyedit.c:3788 g10/keyedit.c:3852 g10/keyedit.c:3895
- #, fuzzy, c-format
- msgid "signed by your key %s on %s%s%s\n"
--msgstr " signat per %08lX el %s%s%s\n"
-+msgstr ""
-+"»\n"
-+"signat amb la vostra clau %08lX el %s\n"
-
- #: g10/keyedit.c:3790 g10/keyedit.c:3854 g10/keyedit.c:3897
- msgid " (non-exportable)"
-@@ -3467,13 +3419,12 @@
- # S! jm
- #: g10/keyedit.c:3802
- msgid "Create a revocation certificate for this signature? (y/N) "
--msgstr ""
--"Voleu crear un certificat de revocaci� per a aquesta signatura? (s/N) "
-+msgstr "Voleu crear un certificat de revocació per a aquesta signatura? (s/N) "
-
- #: g10/keyedit.c:3829
- #, fuzzy, c-format
- msgid "You have signed these user IDs on key %s:\n"
--msgstr "Heu signat els seg�ents ID d'usuari:\n"
-+msgstr "Heu signat els següents ID d'usuari:\n"
-
- #: g10/keyedit.c:3855
- #, fuzzy
-@@ -3492,7 +3443,7 @@
- # (s/N)? ivb
- #: g10/keyedit.c:3904
- msgid "Really create the revocation certificates? (y/N) "
--msgstr "Realment voleu crear els certificats de revocaci�? (s/N) "
-+msgstr "Realment voleu crear els certificats de revocació? (s/N) "
-
- #: g10/keyedit.c:3934
- msgid "no secret key\n"
-@@ -3501,61 +3452,60 @@
- #: g10/keyedit.c:4004
- #, c-format
- msgid "user ID \"%s\" is already revoked\n"
--msgstr "l'ID d'usuari �%s� ja est� revocat\n"
-+msgstr "l'ID d'usuari «%s» ja està revocat\n"
-
- #: g10/keyedit.c:4021
- #, c-format
- msgid "WARNING: a user ID signature is dated %d seconds in the future\n"
--msgstr ""
--"AV�S: una signatura d'ID d'usuari est� datada %d segons en el futur\n"
-+msgstr "AVÃS: una signatura d'ID d'usuari està datada %d segons en el futur\n"
-
- #: g10/keyedit.c:4190
- #, fuzzy, c-format
- msgid "Displaying %s photo ID of size %ld for key %s (uid %d)\n"
- msgstr ""
--"S'est� mostrant el photo ID %s de mida %ld per a la clau 0x%08lX (uid %d)\n"
-+"S'està mostrant el photo ID %s de mida %ld per a la clau 0x%08lX (uid %d)\n"
-
- #: g10/keygen.c:293
- #, fuzzy, c-format
- msgid "preference `%s' duplicated\n"
--msgstr "la prefer�ncia %c%lu �s duplicada\n"
-+msgstr "la preferència %c%lu és duplicada\n"
-
- #: g10/keygen.c:300
- #, fuzzy
- msgid "too many cipher preferences\n"
--msgstr "hi ha massa prefer�ncies �%c�\n"
-+msgstr "hi ha massa preferències «%c»\n"
-
- #: g10/keygen.c:302
- #, fuzzy
- msgid "too many digest preferences\n"
--msgstr "hi ha massa prefer�ncies �%c�\n"
-+msgstr "hi ha massa preferències «%c»\n"
-
- #: g10/keygen.c:304
- #, fuzzy
- msgid "too many compression preferences\n"
--msgstr "hi ha massa prefer�ncies �%c�\n"
-+msgstr "hi ha massa preferències «%c»\n"
-
- #: g10/keygen.c:401
- #, fuzzy, c-format
- msgid "invalid item `%s' in preference string\n"
--msgstr "hi ha un car�cter inv�lid en la cadena de prefer�ncia\n"
-+msgstr "hi ha un caràcter invàlid en la cadena de preferència\n"
-
- #: g10/keygen.c:827
- msgid "writing direct signature\n"
--msgstr "s'est� escrivint una signatura directa\n"
-+msgstr "s'està escrivint una signatura directa\n"
-
- #: g10/keygen.c:866
- msgid "writing self signature\n"
--msgstr "s'est� escrivint l'autosignatura\n"
-+msgstr "s'està escrivint l'autosignatura\n"
-
- #: g10/keygen.c:912
- msgid "writing key binding signature\n"
--msgstr "s'est� escrivint la signatura de comprovaci� de la clau\n"
-+msgstr "s'està escrivint la signatura de comprovació de la clau\n"
-
- #: g10/keygen.c:974 g10/keygen.c:1058 g10/keygen.c:1149 g10/keygen.c:2625
- #, c-format
- msgid "keysize invalid; using %u bits\n"
--msgstr "la mida de la clau �s inv�lida; s'hi usaran %u bits\n"
-+msgstr "la mida de la clau és invàlida; s'hi usaran %u bits\n"
-
- #: g10/keygen.c:979 g10/keygen.c:1063 g10/keygen.c:1154 g10/keygen.c:2631
- #, c-format
-@@ -3595,9 +3545,9 @@
- msgstr ""
-
- #: g10/keygen.c:1288
--#, fuzzy, c-format
-+#, c-format
- msgid " (%c) Toggle the encrypt capability\n"
--msgstr " (%d) ElGamal (nom�s xifrar)\n"
-+msgstr ""
-
- #: g10/keygen.c:1291
- #, c-format
-@@ -3621,32 +3571,32 @@
- #: g10/keygen.c:1351
- #, c-format
- msgid " (%d) DSA (sign only)\n"
--msgstr " (%d) DSA (nom�s signar)\n"
-+msgstr " (%d) DSA (només signar)\n"
-
- #: g10/keygen.c:1353
- #, fuzzy, c-format
- msgid " (%d) DSA (set your own capabilities)\n"
--msgstr " (%d) RSA (nom�s xifrar)\n"
-+msgstr " (%d) DSA (només signar)\n"
-
- #: g10/keygen.c:1355
- #, fuzzy, c-format
- msgid " (%d) Elgamal (encrypt only)\n"
--msgstr " (%d) ElGamal (nom�s xifrar)\n"
-+msgstr " (%d) ElGamal (només xifrar)\n"
-
- #: g10/keygen.c:1356
- #, c-format
- msgid " (%d) RSA (sign only)\n"
--msgstr " (%d) RSA (nom�s signar)\n"
-+msgstr " (%d) RSA (només signar)\n"
-
- #: g10/keygen.c:1358
- #, c-format
- msgid " (%d) RSA (encrypt only)\n"
--msgstr " (%d) RSA (nom�s xifrar)\n"
-+msgstr " (%d) RSA (només xifrar)\n"
-
- #: g10/keygen.c:1360
- #, fuzzy, c-format
- msgid " (%d) RSA (set your own capabilities)\n"
--msgstr " (%d) RSA (nom�s xifrar)\n"
-+msgstr " (%d) RSA (només xifrar)\n"
-
- #: g10/keygen.c:1429 g10/keygen.c:2502
- #, fuzzy, c-format
-@@ -3661,7 +3611,7 @@
- #: g10/keygen.c:1446
- #, fuzzy, c-format
- msgid "What keysize do you want? (%u) "
--msgstr "Quina grand�ria voleu? (1024) "
-+msgstr "Quina grandària voleu? (1024) "
-
- #: g10/keygen.c:1460
- #, c-format
-@@ -3671,7 +3621,7 @@
- #: g10/keygen.c:1466
- #, c-format
- msgid "Requested keysize is %u bits\n"
--msgstr "La grand�ria sol�licitada �s %u bits\n"
-+msgstr "La grandària sol·licitada és %u bits\n"
-
- #: g10/keygen.c:1471 g10/keygen.c:1476
- #, c-format
-@@ -3720,7 +3670,7 @@
-
- #: g10/keygen.c:1566
- msgid "invalid value\n"
--msgstr "el valor no �s v�lid\n"
-+msgstr "el valor no és vàlid\n"
-
- #: g10/keygen.c:1571
- #, c-format
-@@ -3732,20 +3682,20 @@
- msgid "%s expires at %s\n"
- msgstr "%s caduca el %s\n"
-
--# Amb �it� es refereix a les dates? ivb
--# Aix� vaig entendre jo. jm
-+# Amb «it» es refereix a les dates? ivb
-+# Això vaig entendre jo. jm
- #: g10/keygen.c:1584
- msgid ""
- "Your system can't display dates beyond 2038.\n"
- "However, it will be correctly handled up to 2106.\n"
- msgstr ""
- "El vostre sistema no pot representar dates posteriors a l'any 2038.\n"
--"Tanmateix, les tractar� b� fins l'any 2106.\n"
-+"Tanmateix, les tractarà bé fins l'any 2106.\n"
-
- #: g10/keygen.c:1589
- #, fuzzy
- msgid "Is this correct? (y/N) "
--msgstr "�s correcte? (s/n)"
-+msgstr "És correcte? (s/n)"
-
- #: g10/keygen.c:1632
- #, fuzzy
-@@ -3759,7 +3709,7 @@
- msgstr ""
- "\n"
- "Necessiteu un ID d'usuari per a identificar la vostra clau; el programa\n"
--"construeix l'id de l'usuari amb el Nom, Comentari i Adre�a electr�nica\n"
-+"construeix l'id de l'usuari amb el Nom, Comentari i Adreça electrònica\n"
- "d'aquesta forma:\n"
- " \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
- "\n"
-@@ -3770,23 +3720,23 @@
-
- #: g10/keygen.c:1652
- msgid "Invalid character in name\n"
--msgstr "Hi ha un car�cter inv�lid en el camp *nom*\n"
-+msgstr "Hi ha un caràcter invàlid en el camp *nom*\n"
-
- #: g10/keygen.c:1654
- msgid "Name may not start with a digit\n"
--msgstr "El nom no pot comen�ar amb un d�git\n"
-+msgstr "El nom no pot començar amb un dígit\n"
-
- #: g10/keygen.c:1656
- msgid "Name must be at least 5 characters long\n"
--msgstr "El nom ha de tenir, si m�s no, 5 car�cters\n"
-+msgstr "El nom ha de tenir, si més no, 5 caràcters\n"
-
- #: g10/keygen.c:1664
- msgid "Email address: "
--msgstr "Adre�a electr�nica: "
-+msgstr "Adreça electrònica: "
-
- #: g10/keygen.c:1675
- msgid "Not a valid email address\n"
--msgstr "No �s una adre�a v�lida\n"
-+msgstr "No és una adreça vàlida\n"
-
- #: g10/keygen.c:1683
- msgid "Comment: "
-@@ -3794,12 +3744,12 @@
-
- #: g10/keygen.c:1689
- msgid "Invalid character in comment\n"
--msgstr "Hi ha un car�cter inv�lid en el camp *comentari*\n"
-+msgstr "Hi ha un caràcter invàlid en el camp *comentari*\n"
-
- #: g10/keygen.c:1712
- #, c-format
- msgid "You are using the `%s' character set.\n"
--msgstr "Esteu usant el joc de car�cters `%s'.\n"
-+msgstr "Esteu usant el joc de caràcters `%s'.\n"
-
- #: g10/keygen.c:1718
- #, c-format
-@@ -3814,11 +3764,10 @@
-
- #: g10/keygen.c:1723
- msgid "Please don't put the email address into the real name or the comment\n"
--msgstr ""
--"No inclogueu l'adre�a ni en el camp *nom* ni en el camp *comentari*\n"
-+msgstr "No inclogueu l'adreça ni en el camp *nom* ni en el camp *comentari*\n"
-
- # xX? ivb
--# Hmm... s�. jm
-+# Hmm... sí. jm
- #: g10/keygen.c:1739
- msgid "NnCcEeOoQq"
- msgstr "NnCcEeOoXx"
-@@ -3855,9 +3804,9 @@
- "using this program with the option \"--edit-key\".\n"
- "\n"
- msgstr ""
--"No voleu contrasenya: �s una mala idea!\n"
--"B�. Si voleu canviar-la m�s endavant,\n"
--"useu aquest programa amb l'opci� \"--edit-key\".\n"
-+"No voleu contrasenya: és una mala idea!\n"
-+"Bé. Si voleu canviar-la més endavant,\n"
-+"useu aquest programa amb l'opció \"--edit-key\".\n"
- "\n"
-
- #: g10/keygen.c:1847
-@@ -3867,36 +3816,35 @@
- "disks) during the prime generation; this gives the random number\n"
- "generator a better chance to gain enough entropy.\n"
- msgstr ""
--"Cal generar molts bits aleat?riament. �s bona idea fer alguna altra cosa\n"
--"(teclejar, moure el ratol�, usar els discos) durant la generaci� de\n"
--"nombres primers; a�� d�na oportunitat al generador de nombres "
--"aleatoris\n"
-+"Cal generar molts bits aleatòriament. És bona idea fer alguna altra cosa\n"
-+"(teclejar, moure el ratolí, usar els discos) durant la generació de\n"
-+"nombres primers; açò dóna oportunitat al generador de nombres aleatoris\n"
- "d'aconseguir prou entropia.\n"
-
- #: g10/keygen.c:2571
- msgid "Key generation canceled.\n"
--msgstr "La generaci� de claus ha estat cancel�lada.\n"
-+msgstr "La generació de claus ha estat cancel·lada.\n"
-
- #: g10/keygen.c:2759 g10/keygen.c:2896
- #, c-format
- msgid "writing public key to `%s'\n"
--msgstr "s'est� escrivint la clau p�blica a �%s�\n"
-+msgstr "s'està escrivint la clau pública a «%s»\n"
-
- #: g10/keygen.c:2761 g10/keygen.c:2899
- #, fuzzy, c-format
- msgid "writing secret key stub to `%s'\n"
--msgstr "s'est� escrivint la clau secreta a �%s�\n"
-+msgstr "s'està escrivint la clau secreta a «%s»\n"
-
- #: g10/keygen.c:2764 g10/keygen.c:2902
- #, c-format
- msgid "writing secret key to `%s'\n"
--msgstr "s'est� escrivint la clau secreta a �%s�\n"
-+msgstr "s'està escrivint la clau secreta a «%s»\n"
-
- # Potser no hi haja cap anell! ivb
- #: g10/keygen.c:2885
- #, c-format
- msgid "no writable public keyring found: %s\n"
--msgstr "no s'ha trobat cap anell p�blic escrivible: %s\n"
-+msgstr "no s'ha trobat cap anell públic escrivible: %s\n"
-
- #: g10/keygen.c:2891
- #, c-format
-@@ -3908,18 +3856,16 @@
- #: g10/keygen.c:2909
- #, c-format
- msgid "error writing public keyring `%s': %s\n"
--msgstr ""
--"s'ha produ�t un error mentre s'escrivia l'anell p�blic �%s�: %s\n"
-+msgstr "s'ha produït un error mentre s'escrivia l'anell públic «%s»: %s\n"
-
- #: g10/keygen.c:2916
- #, c-format
- msgid "error writing secret keyring `%s': %s\n"
--msgstr ""
--"s'ha produ�t un error mentre s'escrivia l'anell secret �%s�: %s\n"
-+msgstr "s'ha produït un error mentre s'escrivia l'anell secret «%s»: %s\n"
-
- #: g10/keygen.c:2939
- msgid "public and secret key created and signed.\n"
--msgstr "s'han creat i signat les claus p�blica i secreta.\n"
-+msgstr "s'han creat i signat les claus pública i secreta.\n"
-
- #: g10/keygen.c:2950
- msgid ""
-@@ -3927,12 +3873,12 @@
- "the command \"--edit-key\" to generate a secondary key for this purpose.\n"
- msgstr ""
- "Noteu que aquesta clau no serveix per a xifrar. Potser vulgueu usar l'ordre\n"
--"\"--edit-key\" per a generar una clau secund�ria per a tal prop�sit.\n"
-+"\"--edit-key\" per a generar una clau secundària per a tal propòsit.\n"
-
- #: g10/keygen.c:2962 g10/keygen.c:3077 g10/keygen.c:3192
- #, c-format
- msgid "Key generation failed: %s\n"
--msgstr "La generaci� de claus ha fallat: %s\n"
-+msgstr "La generació de claus ha fallat: %s\n"
-
- # Werner FIXME: Use ngettext. jm
- #: g10/keygen.c:3013 g10/keygen.c:3128 g10/sign.c:290
-@@ -3954,7 +3900,7 @@
-
- #: g10/keygen.c:3024 g10/keygen.c:3141
- msgid "NOTE: creating subkeys for v3 keys is not OpenPGP compliant\n"
--msgstr "NOTA: crear subclaus per a claus v3 no �s conforme amb OpenPGP\n"
-+msgstr "NOTA: crear subclaus per a claus v3 no és conforme amb OpenPGP\n"
-
- #: g10/keygen.c:3052 g10/keygen.c:3174
- #, fuzzy
-@@ -3969,12 +3915,12 @@
- #: g10/keygen.c:3374
- #, fuzzy, c-format
- msgid "can't create backup file `%s': %s\n"
--msgstr "no s'ha pogut crear �%s�: %s\n"
-+msgstr "no s'ha pogut crear «%s»: %s\n"
-
- #: g10/keygen.c:3397
--#, fuzzy, c-format
-+#, c-format
- msgid "NOTE: backup of card key saved to `%s'\n"
--msgstr "NOTA: la clau secreta %08lX caduca el %s\n"
-+msgstr ""
-
- #: g10/keygen.c:3464
- #, c-format
-@@ -3996,11 +3942,11 @@
-
- #: g10/keylist.c:201
- msgid "Critical signature policy: "
--msgstr "Pol�tica de signatura cr�tica: "
-+msgstr "Política de signatura crítica: "
-
- #: g10/keylist.c:203
- msgid "Signature policy: "
--msgstr "Pol�tica de signatura: "
-+msgstr "Política de signatura: "
-
- #: g10/keylist.c:242
- msgid "Critical preferred keyserver: "
-@@ -4008,15 +3954,15 @@
-
- #: g10/keylist.c:291 g10/keylist.c:335
- msgid "WARNING: invalid notation data found\n"
--msgstr "AV�S: s'hi han trobat dades de notaci� inv�lides\n"
-+msgstr "AVÃS: s'hi han trobat dades de notació invàlides\n"
-
- #: g10/keylist.c:309
- msgid "Critical signature notation: "
--msgstr "Notaci� de signatura cr�tica: "
-+msgstr "Notació de signatura crítica: "
-
- #: g10/keylist.c:311
- msgid "Signature notation: "
--msgstr "Notaci� de signatura: "
-+msgstr "Notació de signatura: "
-
- #: g10/keylist.c:322
- msgid "not human readable"
-@@ -4033,7 +3979,7 @@
-
- #: g10/keylist.c:1425
- msgid "Primary key fingerprint:"
--msgstr "Empremtes digital de la clau prim�ria:"
-+msgstr "Empremtes digital de la clau primària:"
-
- #: g10/keylist.c:1427
- msgid " Subkey fingerprint:"
-@@ -4041,7 +3987,7 @@
-
- #: g10/keylist.c:1434
- msgid " Primary key fingerprint:"
--msgstr " Empremta digital de la clau prim�ria:"
-+msgstr " Empremta digital de la clau primària:"
-
- #: g10/keylist.c:1436
- msgid " Subkey fingerprint:"
-@@ -4063,17 +4009,17 @@
-
- #: g10/keyring.c:1251
- msgid "WARNING: 2 files with confidential information exists.\n"
--msgstr "AV�S: hi ha 2 fitxers amb informaci� confidencial.\n"
-+msgstr "AVÃS: hi ha 2 fitxers amb informació confidencial.\n"
-
- #: g10/keyring.c:1253
- #, c-format
- msgid "%s is the unchanged one\n"
--msgstr "%s �s el que no ha canviat\n"
-+msgstr "%s és el que no ha canviat\n"
-
- #: g10/keyring.c:1254
- #, c-format
- msgid "%s is the new one\n"
--msgstr "%s �s el nou\n"
-+msgstr "%s és el nou\n"
-
- #: g10/keyring.c:1255
- msgid "Please fix this possible security flaw\n"
-@@ -4082,7 +4028,7 @@
- #: g10/keyring.c:1375
- #, fuzzy, c-format
- msgid "caching keyring `%s'\n"
--msgstr "s'est� comprovant l'anell �%s�\n"
-+msgstr "s'està comprovant l'anell «%s»\n"
-
- #: g10/keyring.c:1421
- #, fuzzy, c-format
-@@ -4105,8 +4051,7 @@
- #, fuzzy, c-format
- msgid "WARNING: keyserver option `%s' is not used on this platform\n"
- msgstr ""
--"AV�S: les opcions en �%s� encara no estan actives durant aquesta "
--"execuci�\n"
-+"AVÃS: les opcions en «%s» encara no estan actives durant aquesta execució\n"
-
- #: g10/keyserver.c:378
- #, fuzzy
-@@ -4118,56 +4063,55 @@
- msgstr ""
-
- #: g10/keyserver.c:662 g10/keyserver.c:1147
--#, fuzzy, c-format
-+#, c-format
- msgid "invalid keyserver protocol (us %d!=handler %d)\n"
--msgstr "opcions d'exportaci� no v�lides\n"
-+msgstr ""
-
- #: g10/keyserver.c:752
- #, fuzzy, c-format
- msgid "key \"%s\" not found on keyserver\n"
--msgstr "no s'ha trobat la clau �%s�: %s\n"
-+msgstr "no s'ha trobat la clau «%s»: %s\n"
-
- #: g10/keyserver.c:754
- #, fuzzy
- msgid "key not found on keyserver\n"
--msgstr "no s'ha trobat la clau �%s�: %s\n"
-+msgstr "no s'ha trobat la clau «%s»: %s\n"
-
- #: g10/keyserver.c:901
- #, fuzzy, c-format
- msgid "requesting key %s from %s server %s\n"
--msgstr "s'est� sol�licitant la clau %08lX de %s\n"
-+msgstr "s'està sol·licitant la clau %08lX de %s\n"
-
- #: g10/keyserver.c:905
- #, fuzzy, c-format
- msgid "requesting key %s from %s\n"
--msgstr "s'est� sol�licitant la clau %08lX de %s\n"
-+msgstr "s'està sol·licitant la clau %08lX de %s\n"
-
- #: g10/keyserver.c:1050
- #, fuzzy, c-format
- msgid "sending key %s to %s server %s\n"
--msgstr "s'est� cercant �%s� al servidor HKP %s\n"
-+msgstr "s'està cercant «%s» al servidor HKP %s\n"
-
- #: g10/keyserver.c:1054
- #, fuzzy, c-format
- msgid "sending key %s to %s\n"
--msgstr ""
--"�\n"
--"signat amb la vostra clau %08lX el %s\n"
-+msgstr "s'està sol·licitant la clau %08lX de %s\n"
-
- #: g10/keyserver.c:1097
- #, fuzzy, c-format
- msgid "searching for \"%s\" from %s server %s\n"
--msgstr "s'est� cercant �%s� al servidor HKP %s\n"
-+msgstr "s'està cercant «%s» al servidor HKP %s\n"
-
- #: g10/keyserver.c:1100
- #, fuzzy, c-format
- msgid "searching for \"%s\" from %s\n"
--msgstr "s'est� cercant �%s� al servidor HKP %s\n"
-+msgstr "s'està cercant «%s» al servidor HKP %s\n"
-
-+# «del servidor», «en el servidor»? ivb
- #: g10/keyserver.c:1107 g10/keyserver.c:1202
- #, fuzzy
- msgid "no keyserver action!\n"
--msgstr "opcions d'exportaci� no v�lides\n"
-+msgstr "error de servidor de claus"
-
- #: g10/keyserver.c:1155
- #, c-format
-@@ -4180,7 +4124,7 @@
-
- #: g10/keyserver.c:1223
- msgid "no keyserver known (use option --keyserver)\n"
--msgstr "no es coneix cap servidor de claus (useu l'opci� \"--keyserver\")\n"
-+msgstr "no es coneix cap servidor de claus (useu l'opció \"--keyserver\")\n"
-
- #: g10/keyserver.c:1229
- msgid "external keyserver calls are not supported in this build\n"
-@@ -4201,13 +4145,13 @@
- msgid "gpgkeys_%s does not support handler version %d\n"
- msgstr ""
-
--# �del servidor�, �en el servidor�? ivb
-+# «del servidor», «en el servidor»? ivb
- #: g10/keyserver.c:1261
- #, fuzzy
- msgid "keyserver timed out\n"
- msgstr "error de servidor de claus"
-
--# �del servidor�, �en el servidor�? ivb
-+# «del servidor», «en el servidor»? ivb
- #: g10/keyserver.c:1266
- #, fuzzy
- msgid "keyserver internal error\n"
-@@ -4216,44 +4160,43 @@
- #: g10/keyserver.c:1275
- #, fuzzy, c-format
- msgid "keyserver communications error: %s\n"
--msgstr "la recepci� des del servidor de claus ha fallat: %s\n"
-+msgstr "la recepció des del servidor de claus ha fallat: %s\n"
-
- #: g10/keyserver.c:1300 g10/keyserver.c:1334
- #, fuzzy, c-format
- msgid "\"%s\" not a key ID: skipping\n"
--msgstr "%s: no �s un ID v�lid\n"
-+msgstr "%s: no és un ID vàlid\n"
-
- #: g10/keyserver.c:1585
- #, fuzzy, c-format
- msgid "WARNING: unable to refresh key %s via %s: %s\n"
--msgstr "AV�S: no s'ha pogut eliminar el fitxer temporal (%s) �%s�: %s\n"
-+msgstr "AVÃS: no s'ha pogut eliminar el fitxer temporal (%s) «%s»: %s\n"
-
- #: g10/keyserver.c:1607
- #, fuzzy, c-format
- msgid "refreshing 1 key from %s\n"
--msgstr "s'est� sol�licitant la clau %08lX de %s\n"
-+msgstr "s'està sol·licitant la clau %08lX de %s\n"
-
- #: g10/keyserver.c:1609
- #, fuzzy, c-format
- msgid "refreshing %d keys from %s\n"
--msgstr "s'est� sol�licitant la clau %08lX de %s\n"
-+msgstr "s'està sol·licitant la clau %08lX de %s\n"
-
- #: g10/mainproc.c:248
- #, c-format
- msgid "weird size for an encrypted session key (%d)\n"
--msgstr "mida extranya per a una clau de sessi� xifrada (%d)\n"
-+msgstr "mida extranya per a una clau de sessió xifrada (%d)\n"
-
- #: g10/mainproc.c:262
- #, c-format
- msgid "bad passphrase or unknown cipher algorithm (%d)\n"
- msgstr ""
--"la contrasenya �s incorrecta o l'algoritme de xifratge (%d) �s "
--"desconegut\n"
-+"la contrasenya és incorrecta o l'algoritme de xifratge (%d) és desconegut\n"
-
- #: g10/mainproc.c:299
- #, c-format
- msgid "%s encrypted session key\n"
--msgstr "clau de sessi� xifrada amb %s\n"
-+msgstr "clau de sessió xifrada amb %s\n"
-
- #: g10/mainproc.c:309
- #, fuzzy, c-format
-@@ -4263,11 +4206,11 @@
- #: g10/mainproc.c:373
- #, fuzzy, c-format
- msgid "public key is %s\n"
--msgstr "la clau p�blica �s %08lX\n"
-+msgstr "la clau pública és %08lX\n"
-
- #: g10/mainproc.c:428
- msgid "public key encrypted data: good DEK\n"
--msgstr "dades xifrades amb clau p�blica: bona clau de xifratge (DEK)\n"
-+msgstr "dades xifrades amb clau pública: bona clau de xifratge (DEK)\n"
-
- #: g10/mainproc.c:461
- #, fuzzy, c-format
-@@ -4275,9 +4218,9 @@
- msgstr "xifrat amb una clau %2$s de %1$u bits, ID %3$08lX, creada en %4$s\n"
-
- #: g10/mainproc.c:465 g10/pkclist.c:218
--#, fuzzy, c-format
-+#, c-format
- msgid " \"%s\"\n"
--msgstr " alias \""
-+msgstr ""
-
- #: g10/mainproc.c:469
- #, fuzzy, c-format
-@@ -4287,7 +4230,7 @@
- #: g10/mainproc.c:483
- #, c-format
- msgid "public key decryption failed: %s\n"
--msgstr "ha fallat el desxifratge amb la clau p�blica: %s\n"
-+msgstr "ha fallat el desxifratge amb la clau pública: %s\n"
-
- #: g10/mainproc.c:497
- #, c-format
-@@ -4299,20 +4242,20 @@
- msgid "encrypted with 1 passphrase\n"
- msgstr "xifrat amb 1 contrasenya\n"
-
--# I no ser� �dades xifrades amb %s�? ivb
--# Sembla que s�, ho marque per a mirar-ho m�s endavant. jm
-+# I no serà «dades xifrades amb %s»? ivb
-+# Sembla que sí, ho marque per a mirar-ho més endavant. jm
- #: g10/mainproc.c:527 g10/mainproc.c:549
- #, c-format
- msgid "assuming %s encrypted data\n"
- msgstr "s'assumeixen dades xifrades amb %s\n"
-
--# L'optim�stic �s aquell que t� una Fe Cega en que Tot Anir� B�! ivb
-+# L'optimístic és aquell que té una Fe Cega en que Tot Anirà Bé! ivb
- #: g10/mainproc.c:535
- #, c-format
- msgid "IDEA cipher unavailable, optimistically attempting to use %s instead\n"
- msgstr ""
--"El xifratge IDEA no est� disponible, s'intentar� utilitzar optimistament "
--"%s en el seu lloc\n"
-+"El xifratge IDEA no està disponible, s'intentarà utilitzar optimistament %s "
-+"en el seu lloc\n"
-
- #: g10/mainproc.c:567
- msgid "decryption okay\n"
-@@ -4320,11 +4263,11 @@
-
- #: g10/mainproc.c:571
- msgid "WARNING: message was not integrity protected\n"
--msgstr "AV�S: el missatge no tenia protecci� d'integritat\n"
-+msgstr "AVÃS: el missatge no tenia protecció d'integritat\n"
-
- #: g10/mainproc.c:584
- msgid "WARNING: encrypted message has been manipulated!\n"
--msgstr "AV�S: el missatge xifrat ha estat manipulat!\n"
-+msgstr "AVÃS: el missatge xifrat ha estat manipulat!\n"
-
- #: g10/mainproc.c:590
- #, c-format
-@@ -4333,7 +4276,7 @@
-
- #: g10/mainproc.c:610
- msgid "NOTE: sender requested \"for-your-eyes-only\"\n"
--msgstr "NOTA: el remitent ha sol�licitat \"alt secret\"\n"
-+msgstr "NOTA: el remitent ha sol·licitat \"alt secret\"\n"
-
- #: g10/mainproc.c:612
- #, c-format
-@@ -4342,15 +4285,15 @@
-
- #: g10/mainproc.c:784
- msgid "standalone revocation - use \"gpg --import\" to apply\n"
--msgstr "revocaci� aut�noma: useu \"gpg --import\" per a aplicar-la\n"
-+msgstr "revocació autònoma: useu \"gpg --import\" per a aplicar-la\n"
-
- #: g10/mainproc.c:1288
- msgid "signature verification suppressed\n"
--msgstr "s'ha eliminat la verificaci� de signatura\n"
-+msgstr "s'ha eliminat la verificació de signatura\n"
-
- #: g10/mainproc.c:1330 g10/mainproc.c:1340
- msgid "can't handle these multiple signatures\n"
--msgstr "no es poden tractar aquestes signatures m�ltiples\n"
-+msgstr "no es poden tractar aquestes signatures múltiples\n"
-
- #: g10/mainproc.c:1350
- #, fuzzy, c-format
-@@ -4362,7 +4305,7 @@
- msgid " using %s key %s\n"
- msgstr " alias \""
-
--# �%.*s� no ser� una data? Caldr� �el� al davant. ivb
-+# «%.*s» no serà una data? Caldrà «el» al davant. ivb
- #: g10/mainproc.c:1355
- #, fuzzy, c-format
- msgid "Signature made %s using %s key ID %s\n"
-@@ -4370,7 +4313,7 @@
-
- #: g10/mainproc.c:1375
- msgid "Key available at: "
--msgstr "La clau �s disponible en: "
-+msgstr "La clau és disponible en: "
-
- #: g10/mainproc.c:1480 g10/mainproc.c:1528
- #, fuzzy, c-format
-@@ -4430,19 +4373,18 @@
-
- #: g10/mainproc.c:1760 g10/mainproc.c:1776 g10/mainproc.c:1862
- msgid "not a detached signature\n"
--msgstr "no �s una signatura separada\n"
-+msgstr "no és una signatura separada\n"
-
- #: g10/mainproc.c:1803
- msgid ""
- "WARNING: multiple signatures detected. Only the first will be checked.\n"
- msgstr ""
--"AV�S: s'han detectat m�ltiples signatures. Nom�s es comprovar� la "
--"primera.\n"
-+"AVÃS: s'han detectat múltiples signatures. Només es comprovarà la primera.\n"
-
- #: g10/mainproc.c:1811
- #, c-format
- msgid "standalone signature of class 0x%02x\n"
--msgstr "signatura aut�noma de classe 0x%02x\n"
-+msgstr "signatura autònoma de classe 0x%02x\n"
-
- #: g10/mainproc.c:1868
- msgid "old style (PGP 2.x) signature\n"
-@@ -4450,33 +4392,33 @@
-
- #: g10/mainproc.c:1878
- msgid "invalid root packet detected in proc_tree()\n"
--msgstr "s'ha detectat un paquet arrel inv�lid en proc_tree()\n"
-+msgstr "s'ha detectat un paquet arrel invàlid en proc_tree()\n"
-
--# bolcats de mem�ria? ivb
-+# bolcats de memòria? ivb
- #: g10/misc.c:105
- #, c-format
- msgid "can't disable core dumps: %s\n"
--msgstr "no s'han pogut desactivar els bolcats de mem�ria: %s\n"
-+msgstr "no s'han pogut desactivar els bolcats de memòria: %s\n"
-
- #: g10/misc.c:125 g10/misc.c:153 g10/misc.c:225
- #, fuzzy, c-format
- msgid "fstat of `%s' failed in %s: %s\n"
--msgstr "ha fallat l'actualitzaci� de la base de dades de confian�a: %s\n"
-+msgstr "ha fallat l'actualització de la base de dades de confiança: %s\n"
-
- #: g10/misc.c:190
- #, fuzzy, c-format
- msgid "fstat(%d) failed in %s: %s\n"
--msgstr "base de dades de confian�a: ha fallat la lectura (n=%d): %s\n"
-+msgstr "base de dades de confiança: ha fallat la lectura (n=%d): %s\n"
-
- #: g10/misc.c:299
- #, fuzzy, c-format
- msgid "WARNING: using experimental public key algorithm %s\n"
--msgstr "no es pot treballar amb l'algoritme de clau p�blica %d\n"
-+msgstr "no es pot treballar amb l'algoritme de clau pública %d\n"
-
- #: g10/misc.c:314
- #, fuzzy, c-format
- msgid "WARNING: using experimental cipher algorithm %s\n"
--msgstr "l'algoritme de xifratge no �s implementat"
-+msgstr "l'algoritme de xifratge no és implementat"
-
- #: g10/misc.c:329
- #, fuzzy, c-format
-@@ -4486,43 +4428,40 @@
- #: g10/misc.c:334
- #, fuzzy, c-format
- msgid "WARNING: digest algorithm %s is deprecated\n"
--msgstr ""
--"for�ar l'algoritme de digest %s (%d) viola les prefer�ncies del "
--"destinatari\n"
-+msgstr "AVÃS: %s és una opció desaconsellada.\n"
-
- #: g10/misc.c:430
- msgid "the IDEA cipher plugin is not present\n"
--msgstr "el m�dul de xifratge IDEA no est� present\n"
-+msgstr "el mòdul de xifratge IDEA no està present\n"
-
- #: g10/misc.c:431
- msgid ""
- "please see http://www.gnupg.org/why-not-idea.html for more information\n"
--msgstr ""
--"vegeu http://www.gnupg.org/why-not-idea.html per a m�s informaci�\n"
-+msgstr "vegeu http://www.gnupg.org/why-not-idea.html per a més informació\n"
-
- #: g10/misc.c:664
- #, c-format
- msgid "%s:%d: deprecated option \"%s\"\n"
--msgstr "%s:%d: l'opci� �%s� est� desaconsellada.\n"
-+msgstr "%s:%d: l'opció «%s» està desaconsellada.\n"
-
- #: g10/misc.c:668
- #, c-format
- msgid "WARNING: \"%s\" is a deprecated option\n"
--msgstr "AV�S: %s �s una opci� desaconsellada.\n"
-+msgstr "AVÃS: %s és una opció desaconsellada.\n"
-
- #: g10/misc.c:670
- #, c-format
- msgid "please use \"%s%s\" instead\n"
--msgstr "si us plau, utilitzeu �%s%s� en el seu lloc\n"
-+msgstr "si us plau, utilitzeu «%s%s» en el seu lloc\n"
-
--# G�nere? Nombre? Passat, futur? ivb
-+# Gènere? Nombre? Passat, futur? ivb
- # Werner FIXME: please add translator comment saying *what* is
- # uncompressed so we know the gender. jm
- #: g10/misc.c:681
- msgid "Uncompressed"
- msgstr "No comprimit"
-
--# G�nere? Nombre? Passat, futur? ivb
-+# Gènere? Nombre? Passat, futur? ivb
- # Werner FIXME: please add translator comment saying *what* is
- # uncompressed so we know the gender. jm
- #: g10/misc.c:706
-@@ -4538,17 +4477,17 @@
- #: g10/misc.c:973
- #, fuzzy, c-format
- msgid "ambiguous option `%s'\n"
--msgstr "s'estan llegint opcions de �%s�\n"
-+msgstr "s'estan llegint opcions de «%s»\n"
-
- #: g10/misc.c:998
- #, fuzzy, c-format
- msgid "unknown option `%s'\n"
--msgstr "el destinatari predeterminat �s desconegut �%s�\n"
-+msgstr "el destinatari predeterminat és desconegut «%s»\n"
-
- #: g10/openfile.c:84
- #, c-format
- msgid "File `%s' exists. "
--msgstr "El fitxer �%s� existeix. "
-+msgstr "El fitxer «%s» existeix. "
-
- #: g10/openfile.c:86
- #, fuzzy
-@@ -4558,33 +4497,32 @@
- #: g10/openfile.c:119
- #, c-format
- msgid "%s: unknown suffix\n"
--msgstr "%s: el sufix �s desconegut\n"
-+msgstr "%s: el sufix és desconegut\n"
-
- #: g10/openfile.c:141
- msgid "Enter new filename"
--msgstr "Introdu�u el nou nom del fitxer"
-+msgstr "Introduïu el nou nom del fitxer"
-
- # Indi? ivb
- #: g10/openfile.c:184
- msgid "writing to stdout\n"
--msgstr "s'est� escrivint en stdout\n"
-+msgstr "s'està escrivint en stdout\n"
-
- #: g10/openfile.c:296
- #, c-format
- msgid "assuming signed data in `%s'\n"
--msgstr "s'asumeix que hi ha dades signades en �%s�\n"
-+msgstr "s'asumeix que hi ha dades signades en «%s»\n"
-
- #: g10/openfile.c:375
- #, c-format
- msgid "new configuration file `%s' created\n"
--msgstr "s'ha creat el nou fitxer d'opcions �%s�\n"
-+msgstr "s'ha creat el nou fitxer d'opcions «%s»\n"
-
- #: g10/openfile.c:377
- #, c-format
- msgid "WARNING: options in `%s' are not yet active during this run\n"
- msgstr ""
--"AV�S: les opcions en �%s� encara no estan actives durant aquesta "
--"execuci�\n"
-+"AVÃS: les opcions en «%s» encara no estan actives durant aquesta execució\n"
-
- #: g10/openfile.c:409
- #, fuzzy, c-format
-@@ -4594,22 +4532,21 @@
- #: g10/parse-packet.c:119
- #, c-format
- msgid "can't handle public key algorithm %d\n"
--msgstr "no es pot treballar amb l'algoritme de clau p�blica %d\n"
-+msgstr "no es pot treballar amb l'algoritme de clau pública %d\n"
-
- #: g10/parse-packet.c:688
- msgid "WARNING: potentially insecure symmetrically encrypted session key\n"
- msgstr ""
--"AV�S: la clau de sessi� pot estar xifrada sim�tricament de forma "
--"insegura\n"
-+"AVÃS: la clau de sessió pot estar xifrada simètricament de forma insegura\n"
-
- #: g10/parse-packet.c:1112
- #, c-format
- msgid "subpacket of type %d has critical bit set\n"
--msgstr "el subpaquet de tipus %d t� el bit cr�tic activat\n"
-+msgstr "el subpaquet de tipus %d té el bit crític activat\n"
-
- #: g10/passphrase.c:478 g10/passphrase.c:525
- msgid "gpg-agent is not available in this session\n"
--msgstr "gpg-agent no est� disponible en aquesta sessi�\n"
-+msgstr "gpg-agent no està disponible en aquesta sessió\n"
-
- #: g10/passphrase.c:486
- msgid "can't set client pid for the agent\n"
-@@ -4626,25 +4563,25 @@
-
- #: g10/passphrase.c:534
- msgid "malformed GPG_AGENT_INFO environment variable\n"
--msgstr "la variable d'entorn GPG_AGENT_INFO �s malformada\n"
-+msgstr "la variable d'entorn GPG_AGENT_INFO és malformada\n"
-
- #: g10/passphrase.c:547
- #, c-format
- msgid "gpg-agent protocol version %d is not supported\n"
--msgstr "la versi� %d del protocol de gpg-agent no est� suportada\n"
-+msgstr "la versió %d del protocol de gpg-agent no està suportada\n"
-
- #: g10/passphrase.c:568
- #, c-format
- msgid "can't connect to `%s': %s\n"
--msgstr "no s'ha pogut connectar amb �%s�: %s\n"
-+msgstr "no s'ha pogut connectar amb «%s»: %s\n"
-
- #: g10/passphrase.c:590
- msgid "communication problem with gpg-agent\n"
--msgstr "hi ha un problema de comunicaci� amb el gpg-agent\n"
-+msgstr "hi ha un problema de comunicació amb el gpg-agent\n"
-
- #: g10/passphrase.c:597 g10/passphrase.c:932 g10/passphrase.c:1044
- msgid "problem with the agent - disabling agent use\n"
--msgstr "hi ha un problema amb l'agent: es deshabilitar� el seu �s\n"
-+msgstr "hi ha un problema amb l'agent: es deshabilitarà el seu ús\n"
-
- #: g10/passphrase.c:700 g10/passphrase.c:1205
- #, fuzzy, c-format
-@@ -4654,14 +4591,14 @@
- # Com es canvia l'ordre dels arguments? jm
- # Ah, bingo! jm
- # Uh, ara torna a donar error. FIXME
--# La idea �s ficar:
-+# La idea és ficar:
- # "Necessiteu la contrasenya per desblocar la clau secreta de l'usuari:\n"
--# "�%1$.*s�\n"
-+# "«%1$.*s»\n"
- # "clau %3$s de %2$u bits, ID %4$08lX, creada en %5$s%6$s\n"
- # jm
--# Se't passava l'argument �*�. printf(3), hieroglyph(7). ivb
-+# Se't passava l'argument «*». printf(3), hieroglyph(7). ivb
- # Ah! Prova-ho, no casque alguna cosa :P ivb
--# Ah, ja veig! Moltes gr�cies! Aquest msgstr ha quedat curi�s :) jm
-+# Ah, ja veig! Moltes gràcies! Aquest msgstr ha quedat curiós :) jm
- #: g10/passphrase.c:714
- #, fuzzy, c-format
- msgid ""
-@@ -4670,7 +4607,7 @@
- "%u-bit %s key, ID %s, created %s%s\n"
- msgstr ""
- "Necessiteu la contrasenya per desblocar la clau secreta de l'usuari:\n"
--"�%2$.*1$s�\n"
-+"«%2$.*1$s»\n"
- "clau %4$s de %3$u bits, ID %5$08lX, creada en %6$s%7$s\n"
-
- #: g10/passphrase.c:739
-@@ -4679,19 +4616,19 @@
-
- #: g10/passphrase.c:741
- msgid "Enter passphrase\n"
--msgstr "Introdu�u la contrasenya\n"
-+msgstr "Introduïu la contrasenya\n"
-
- #: g10/passphrase.c:779
- msgid "passphrase too long\n"
--msgstr "la contrasenya �s massa llarga\n"
-+msgstr "la contrasenya és massa llarga\n"
-
- #: g10/passphrase.c:792
- msgid "invalid response from agent\n"
--msgstr "la resposta de l'agent �s inv�lida\n"
-+msgstr "la resposta de l'agent és invàlida\n"
-
- #: g10/passphrase.c:807 g10/passphrase.c:926
- msgid "cancelled by user\n"
--msgstr "s'ha cancel�lat per l'usuari\n"
-+msgstr "s'ha cancel·lat per l'usuari\n"
-
- #: g10/passphrase.c:812 g10/passphrase.c:1015
- #, c-format
-@@ -4701,11 +4638,11 @@
- #: g10/passphrase.c:1096 g10/passphrase.c:1258
- #, fuzzy
- msgid "can't query passphrase in batch mode\n"
--msgstr "no es pot demanar la contrasenya en mode desat�s\n"
-+msgstr "no es pot demanar la contrasenya en mode desatès\n"
-
- #: g10/passphrase.c:1103 g10/passphrase.c:1263
- msgid "Enter passphrase: "
--msgstr "Introdu�u la contrasenya: "
-+msgstr "Introduïu la contrasenya: "
-
- #: g10/passphrase.c:1186
- #, fuzzy, c-format
-@@ -4742,19 +4679,18 @@
- "\n"
- "Seleccioneu una imatge per a utilitzarla en el vostre photo ID. La imatge\n"
- "ha de ser un fitxer JPEG. Recordeu que la imatge es desa dins de la vostra\n"
--"clau p�blica. Si utilitzeu una foto molt gran, la vostra clau tamb� es "
--"far�\n"
-+"clau pública. Si utilitzeu una foto molt gran, la vostra clau també es farà\n"
- "molt gran!\n"
- "Es recomana una imatge amb una mida aproximada de 240x288.\n"
-
- #: g10/photoid.c:80
- msgid "Enter JPEG filename for photo ID: "
--msgstr "Introdu�u el nom del fitxer JPEG per al photo ID: "
-+msgstr "Introduïu el nom del fitxer JPEG per al photo ID: "
-
- #: g10/photoid.c:94
- #, fuzzy, c-format
- msgid "unable to open JPEG file `%s': %s\n"
--msgstr "no es pot obrir el fitxer: %s\n"
-+msgstr "No s'ha pogut obrir la foto «%s»: %s\n"
-
- #: g10/photoid.c:102
- #, c-format
-@@ -4769,11 +4705,11 @@
- #: g10/photoid.c:119
- #, fuzzy, c-format
- msgid "`%s' is not a JPEG file\n"
--msgstr "�%s� no �s un fitxer JPEG\n"
-+msgstr "«%s» no és un fitxer JPEG\n"
-
- #: g10/photoid.c:136
- msgid "Is this photo correct (y/N/q)? "
--msgstr "�s aquesta foto correcta (s/N/x)? "
-+msgstr "És aquesta foto correcta (s/N/x)? "
-
- #: g10/photoid.c:338
- msgid "unable to display photo ID!\n"
-@@ -4781,11 +4717,11 @@
-
- #: g10/pkclist.c:61 g10/revoke.c:580
- msgid "No reason specified"
--msgstr "No s'ha especificat cap ra�"
-+msgstr "No s'ha especificat cap raó"
-
- #: g10/pkclist.c:63 g10/revoke.c:582
- msgid "Key is superseded"
--msgstr "La clau ha estat substitu�da"
-+msgstr "La clau ha estat substituïda"
-
- #: g10/pkclist.c:65 g10/revoke.c:581
- msgid "Key has been compromised"
-@@ -4797,15 +4733,15 @@
-
- #: g10/pkclist.c:69 g10/revoke.c:584
- msgid "User ID is no longer valid"
--msgstr "L'ID d'usuari ja no �s v�lid"
-+msgstr "L'ID d'usuari ja no és vàlid"
-
- #: g10/pkclist.c:73
- msgid "reason for revocation: "
--msgstr "ra� de la revocaci�: "
-+msgstr "raó de la revocació: "
-
- #: g10/pkclist.c:90
- msgid "revocation comment: "
--msgstr "comentari de la revocaci�: "
-+msgstr "comentari de la revocació: "
-
- #: g10/pkclist.c:205
- msgid "iImMqQsS"
-@@ -4815,24 +4751,25 @@
- #, fuzzy
- msgid "No trust value assigned to:\n"
- msgstr ""
--"No hi ha cap valor de confian�a assignat a:\n"
-+"No hi ha cap valor de confiança assignat a:\n"
- "%4u%c/%08lX %s \""
-
- #: g10/pkclist.c:245
--#, fuzzy, c-format
-+#, c-format
- msgid " aka \"%s\"\n"
--msgstr " alias \""
-+msgstr ""
-
- #: g10/pkclist.c:255
- #, fuzzy
- msgid ""
- "How much do you trust that this key actually belongs to the named user?\n"
--msgstr "Aquesta clau pertany probablement al seu propietari\n"
-+msgstr ""
-+"%08lX: No hi ha res que indique que la signatura pertany al seu propietari.\n"
-
- #: g10/pkclist.c:270
- #, fuzzy, c-format
- msgid " %d = I don't know or won't say\n"
--msgstr " %d = No ho s�\n"
-+msgstr " %d = No ho sé\n"
-
- #: g10/pkclist.c:272
- #, fuzzy, c-format
-@@ -4847,7 +4784,7 @@
- #: g10/pkclist.c:284
- #, fuzzy
- msgid " m = back to the main menu\n"
--msgstr " m = torna al men� principal\n"
-+msgstr " m = torna al menú principal\n"
-
- #: g10/pkclist.c:287
- #, fuzzy
-@@ -4868,16 +4805,16 @@
-
- #: g10/pkclist.c:298 g10/revoke.c:609
- msgid "Your decision? "
--msgstr "La vostra decisi�? "
-+msgstr "La vostra decisió? "
-
- #: g10/pkclist.c:319
- #, fuzzy
- msgid "Do you really want to set this key to ultimate trust? (y/N) "
--msgstr "Realment voleu assignar confian�a absoluta a aquesta clau? "
-+msgstr "Realment voleu assignar confiança absoluta a aquesta clau? "
-
- #: g10/pkclist.c:333
- msgid "Certificates leading to an ultimately trusted key:\n"
--msgstr "Certificats que duen a una clau de confian�a absoluta:\n"
-+msgstr "Certificats que duen a una clau de confiança absoluta:\n"
-
- #: g10/pkclist.c:418
- #, fuzzy, c-format
-@@ -4898,7 +4835,7 @@
-
- #: g10/pkclist.c:434
- msgid "This key belongs to us\n"
--msgstr "Aquesta clau �s nostra\n"
-+msgstr "Aquesta clau és nostra\n"
-
- #: g10/pkclist.c:460
- #, fuzzy
-@@ -4907,9 +4844,9 @@
- "in the user ID. If you *really* know what you are doing,\n"
- "you may answer the next question with yes.\n"
- msgstr ""
--"NO �s segur que la clau pertanya a la persona esmentada en\n"
--"l'ID d'usuari. Si *realment* sabeu qu� feu, podeu respondre\n"
--"�s�� a la seg�ent pregunta\n"
-+"NO és segur que la clau pertanya a la persona esmentada en\n"
-+"l'ID d'usuari. Si *realment* sabeu què feu, podeu respondre\n"
-+"«sí» a la següent pregunta\n"
- "\n"
-
- #: g10/pkclist.c:467
-@@ -4919,32 +4856,32 @@
-
- #: g10/pkclist.c:501
- msgid "WARNING: Using untrusted key!\n"
--msgstr "AV�S: S'est� usant una clau no fiable!\n"
-+msgstr "AVÃS: S'està usant una clau no fiable!\n"
-
- #: g10/pkclist.c:508
- #, fuzzy
- msgid "WARNING: this key might be revoked (revocation key not present)\n"
- msgstr ""
--"AV�S: la clau %08lX pot estar revocada: la clau de revocaci� %08lX no "
--"est� present.\n"
-+"AVÃS: la clau %08lX pot estar revocada: la clau de revocació %08lX no està "
-+"present.\n"
-
- #: g10/pkclist.c:517
- #, fuzzy
- msgid "WARNING: This key has been revoked by its designated revoker!\n"
--msgstr "AV�S: Aquesta clau ha estat revocada pel propietari!\n"
-+msgstr "AVÃS: Aquesta clau ha estat revocada pel propietari!\n"
-
- #: g10/pkclist.c:520
- msgid "WARNING: This key has been revoked by its owner!\n"
--msgstr "AV�S: Aquesta clau ha estat revocada pel propietari!\n"
-+msgstr "AVÃS: Aquesta clau ha estat revocada pel propietari!\n"
-
- #: g10/pkclist.c:521
- #, fuzzy
- msgid " This could mean that the signature is forged.\n"
--msgstr " A�� podria significar que la signatura �s falsificada.\n"
-+msgstr " Açò podria significar que la signatura és falsificada.\n"
-
- #: g10/pkclist.c:527
- msgid "WARNING: This subkey has been revoked by its owner!\n"
--msgstr "AV�S: Aquesta subclau ha estat revocada pel propietari!\n"
-+msgstr "AVÃS: Aquesta subclau ha estat revocada pel propietari!\n"
-
- #: g10/pkclist.c:532
- msgid "Note: This key has been disabled.\n"
-@@ -4956,8 +4893,7 @@
-
- #: g10/pkclist.c:548
- msgid "WARNING: This key is not certified with a trusted signature!\n"
--msgstr ""
--"AV�S: Aquesta clau no ve certificada per una signatura de confian�a!\n"
-+msgstr "AVÃS: Aquesta clau no ve certificada per una signatura de confiança!\n"
-
- #: g10/pkclist.c:550
- msgid ""
-@@ -4967,20 +4903,20 @@
-
- #: g10/pkclist.c:558
- msgid "WARNING: We do NOT trust this key!\n"
--msgstr "AV�S: La clau NO �s de confian�a!\n"
-+msgstr "AVÃS: La clau NO és de confiança!\n"
-
- #: g10/pkclist.c:559
- msgid " The signature is probably a FORGERY.\n"
--msgstr " Probablement la signatura �s FALSA.\n"
-+msgstr " Probablement la signatura és FALSA.\n"
-
- #: g10/pkclist.c:567
- msgid ""
- "WARNING: This key is not certified with sufficiently trusted signatures!\n"
--msgstr "AV�S: Aquesta clau no ve certificada per signatures prou fiables!\n"
-+msgstr "AVÃS: Aquesta clau no ve certificada per signatures prou fiables!\n"
-
- #: g10/pkclist.c:569
- msgid " It is not certain that the signature belongs to the owner.\n"
--msgstr "No �s segur que la signatura pertanya al seu propietari.\n"
-+msgstr "No és segur que la signatura pertanya al seu propietari.\n"
-
- #: g10/pkclist.c:734 g10/pkclist.c:767 g10/pkclist.c:936 g10/pkclist.c:996
- #, c-format
-@@ -4990,11 +4926,11 @@
- #: g10/pkclist.c:744 g10/pkclist.c:968
- #, c-format
- msgid "%s: skipped: public key already present\n"
--msgstr "%s: es descarta: la clau p�blica ja est� present\n"
-+msgstr "%s: es descarta: la clau pública ja està present\n"
-
- #: g10/pkclist.c:786
- msgid "You did not specify a user ID. (you may use \"-r\")\n"
--msgstr "No heu especificat un ID d'usuari. (podeu usar �-r�)\n"
-+msgstr "No heu especificat un ID d'usuari. (podeu usar «-r»)\n"
-
- #: g10/pkclist.c:802
- msgid "Current recipients:\n"
-@@ -5006,7 +4942,7 @@
- "Enter the user ID. End with an empty line: "
- msgstr ""
- "\n"
--"Introdu�u l'ID d'usuari. Finalitzeu amb una l�nia en blanc: "
-+"Introduïu l'ID d'usuari. Finalitzeu amb una línia en blanc: "
-
- #: g10/pkclist.c:844
- msgid "No such user ID.\n"
-@@ -5014,38 +4950,38 @@
-
- #: g10/pkclist.c:849 g10/pkclist.c:911
- msgid "skipped: public key already set as default recipient\n"
--msgstr "es descarta: la clau p�blica ja s'ha especificat com a destinatari\n"
-+msgstr "es descarta: la clau pública ja s'ha especificat com a destinatari\n"
-
- #: g10/pkclist.c:867
- msgid "Public key is disabled.\n"
--msgstr "La clau p�blica est� desactivada.\n"
-+msgstr "La clau pública està desactivada.\n"
-
- #: g10/pkclist.c:874
- msgid "skipped: public key already set\n"
--msgstr "es descarta: la clau p�blica ja est� establida\n"
-+msgstr "es descarta: la clau pública ja està establida\n"
-
- #: g10/pkclist.c:903
- #, fuzzy, c-format
- msgid "unknown default recipient \"%s\"\n"
--msgstr "el destinatari predeterminat �s desconegut �%s�\n"
-+msgstr "el destinatari predeterminat és desconegut «%s»\n"
-
- #: g10/pkclist.c:948
- #, c-format
- msgid "%s: skipped: public key is disabled\n"
--msgstr "%s: es descarta: la clau p�blica est� desactivada\n"
-+msgstr "%s: es descarta: la clau pública està desactivada\n"
-
- #: g10/pkclist.c:1003
- msgid "no valid addressees\n"
--msgstr "no hi ha adreces v�lides\n"
-+msgstr "no hi ha adreces vàlides\n"
-
- #: g10/plaintext.c:90
- msgid "data not saved; use option \"--output\" to save it\n"
--msgstr "les dades no s'han desat; useu l'opci� \"--output\" per desar-les\n"
-+msgstr "les dades no s'han desat; useu l'opció \"--output\" per desar-les\n"
-
- #: g10/plaintext.c:135 g10/plaintext.c:140 g10/plaintext.c:158
- #, c-format
- msgid "error creating `%s': %s\n"
--msgstr "error en crear �%s�: %s\n"
-+msgstr "error en crear «%s»: %s\n"
-
- # Indi? ivb
- # Em pense que no. jm
-@@ -5055,11 +4991,11 @@
-
- #: g10/plaintext.c:450
- msgid "Please enter name of data file: "
--msgstr "Introdu�u el nom del fitxer de dades: "
-+msgstr "Introduïu el nom del fitxer de dades: "
-
- #: g10/plaintext.c:478
- msgid "reading stdin ...\n"
--msgstr "s'est� llegint d'stdin...\n"
-+msgstr "s'està llegint d'stdin...\n"
-
- #: g10/plaintext.c:512
- msgid "no signed data\n"
-@@ -5075,26 +5011,25 @@
- #: g10/pubkey-enc.c:103
- #, fuzzy, c-format
- msgid "anonymous recipient; trying secret key %s ...\n"
--msgstr "el destinatari �s an�nim; es provar� la clau secreta %08lX ...\n"
-+msgstr "el destinatari és anònim; es provarà la clau secreta %08lX ...\n"
-
- #: g10/pubkey-enc.c:119
- msgid "okay, we are the anonymous recipient.\n"
--msgstr "d'acord, som el destinatari an�nim.\n"
-+msgstr "d'acord, som el destinatari anònim.\n"
-
- #: g10/pubkey-enc.c:207
- msgid "old encoding of the DEK is not supported\n"
--msgstr "la codificaci� antiga del DEK no est� suportada\n"
-+msgstr "la codificació antiga del DEK no està suportada\n"
-
- #: g10/pubkey-enc.c:228
- #, c-format
- msgid "cipher algorithm %d%s is unknown or disabled\n"
--msgstr "l'algoritme de xifratge %d%s �s desconegut o est� desactivat\n"
-+msgstr "l'algoritme de xifratge %d%s és desconegut o està desactivat\n"
-
- #: g10/pubkey-enc.c:266
- #, fuzzy, c-format
- msgid "WARNING: cipher algorithm %s not found in recipient preferences\n"
--msgstr ""
--"NOTA: no s'ha trobat l'algoritme de xifratge %d en les prefer�ncies\n"
-+msgstr "NOTA: no s'ha trobat l'algoritme de xifratge %d en les preferències\n"
-
- #: g10/pubkey-enc.c:286
- #, fuzzy, c-format
-@@ -5122,16 +5057,16 @@
-
- #: g10/revoke.c:276
- msgid "(This is a sensitive revocation key)\n"
--msgstr "(Aquesta �s una clau de revocaci� sensible)\n"
-+msgstr "(Aquesta és una clau de revocació sensible)\n"
-
- #: g10/revoke.c:280
- #, fuzzy
- msgid "Create a designated revocation certificate for this key? (y/N) "
--msgstr "Voleu crear un certificat de revocaci� per a aquesta clau? "
-+msgstr "Voleu crear un certificat de revocació per a aquesta clau? "
-
- #: g10/revoke.c:293 g10/revoke.c:511
- msgid "ASCII armored output forced.\n"
--msgstr "s'ha for�at l'eixida d'armadura ASCII.\n"
-+msgstr "s'ha forçat l'eixida d'armadura ASCII.\n"
-
- #: g10/revoke.c:307 g10/revoke.c:525
- #, c-format
-@@ -5140,39 +5075,39 @@
-
- #: g10/revoke.c:370
- msgid "Revocation certificate created.\n"
--msgstr "S'ha creat el certificat de revocaci�.\n"
-+msgstr "S'ha creat el certificat de revocació.\n"
-
- #: g10/revoke.c:376
- #, fuzzy, c-format
- msgid "no revocation keys found for \"%s\"\n"
--msgstr "no s'han ttrobat claus de revocaci� per a �%s�\n"
-+msgstr "no s'han ttrobat claus de revocació per a «%s»\n"
-
- #: g10/revoke.c:432
- #, fuzzy, c-format
- msgid "secret key \"%s\" not found: %s\n"
--msgstr "no s'ha trobat la clau secreta �%s�: %s\n"
-+msgstr "no s'ha trobat la clau secreta «%s»: %s\n"
-
- #: g10/revoke.c:461
- #, c-format
- msgid "no corresponding public key: %s\n"
--msgstr "no hi ha cap clau p�blica corresponent: %s\n"
-+msgstr "no hi ha cap clau pública corresponent: %s\n"
-
- #: g10/revoke.c:472
- msgid "public key does not match secret key!\n"
--msgstr "la clau p�blica no coincideix amb la clau secreta!\n"
-+msgstr "la clau pública no coincideix amb la clau secreta!\n"
-
- #: g10/revoke.c:479
- #, fuzzy
- msgid "Create a revocation certificate for this key? (y/N) "
--msgstr "Voleu crear un certificat de revocaci� per a aquesta clau? "
-+msgstr "Voleu crear un certificat de revocació per a aquesta clau? "
-
- #: g10/revoke.c:496
- msgid "unknown protection algorithm\n"
--msgstr "l'algorisme de protecci� �s desconegut\n"
-+msgstr "l'algorisme de protecció és desconegut\n"
-
- #: g10/revoke.c:500
- msgid "NOTE: This key is not protected!\n"
--msgstr "NOTA: Aquesta clau no est� protegida!\n"
-+msgstr "NOTA: Aquesta clau no està protegida!\n"
-
- #: g10/revoke.c:551
- msgid ""
-@@ -5184,47 +5119,46 @@
- "your media become unreadable. But have some caution: The print system of\n"
- "your machine might store the data and make it available to others!\n"
- msgstr ""
--"S'ha creat un certificat de revocaci�.\n"
-+"S'ha creat un certificat de revocació.\n"
- "\n"
- "Si us plau, mogueu-lo a un medi que pugueu amagar; si Mallory aconsegueix\n"
--"acc�s a aquest certificat pot utilitzar-lo per a fer la vostra clau\n"
--"inservible. �s intel�ligent imprimir aquest certificat i amagar-lo, per\n"
--"si el vostre medi es torna illegible. Per� aneu amb compte: el sistema\n"
--"d'impressi� de la vostra m�quina podria emmagatzemar les dades i fer-"
--"les\n"
-+"accés a aquest certificat pot utilitzar-lo per a fer la vostra clau\n"
-+"inservible. És intel·ligent imprimir aquest certificat i amagar-lo, per\n"
-+"si el vostre medi es torna illegible. Però aneu amb compte: el sistema\n"
-+"d'impressió de la vostra màquina podria emmagatzemar les dades i fer-les\n"
- "disponibles a altres!\n"
-
- #: g10/revoke.c:592
- msgid "Please select the reason for the revocation:\n"
--msgstr "Seleccioneu la ra� de la revocaci�:\n"
-+msgstr "Seleccioneu la raó de la revocació:\n"
-
- #: g10/revoke.c:602
- msgid "Cancel"
--msgstr "Cancel�la"
-+msgstr "Cancel·la"
-
- #: g10/revoke.c:604
- #, c-format
- msgid "(Probably you want to select %d here)\n"
--msgstr "(Segurament voleu seleccionar %d ac�)\n"
-+msgstr "(Segurament voleu seleccionar %d ací)\n"
-
- #: g10/revoke.c:645
- msgid "Enter an optional description; end it with an empty line:\n"
- msgstr ""
--"Introdu�u una descripci� opcional; finalitzeu amb una l�nia en blanc:\n"
-+"Introduïu una descripció opcional; finalitzeu amb una línia en blanc:\n"
-
- #: g10/revoke.c:673
- #, c-format
- msgid "Reason for revocation: %s\n"
--msgstr "Ra� de la revocaci�: %s\n"
-+msgstr "Raó de la revocació: %s\n"
-
- #: g10/revoke.c:675
- msgid "(No description given)\n"
--msgstr "(No es va donar una descripci�)\n"
-+msgstr "(No es va donar una descripció)\n"
-
- #: g10/revoke.c:680
- #, fuzzy
- msgid "Is this okay? (y/N) "
--msgstr "�s a�� correcte? "
-+msgstr "És açò correcte? "
-
- # Parts? Peces? ivb
- #: g10/seckey-cert.c:54
-@@ -5234,16 +5168,16 @@
- #: g10/seckey-cert.c:60
- #, c-format
- msgid "protection algorithm %d%s is not supported\n"
--msgstr "l'algoritme de protecci� %d%s no est� suportat\n"
-+msgstr "l'algoritme de protecció %d%s no està suportat\n"
-
- #: g10/seckey-cert.c:71
- #, fuzzy, c-format
- msgid "protection digest %d is not supported\n"
--msgstr "l'algoritme de protecci� %d%s no est� suportat\n"
-+msgstr "l'algoritme de protecció %d%s no està suportat\n"
-
- #: g10/seckey-cert.c:250
- msgid "Invalid passphrase; please try again"
--msgstr "La contrasenya no �s v�lida; torneu a intentar-ho"
-+msgstr "La contrasenya no és vàlida; torneu a intentar-ho"
-
- #: g10/seckey-cert.c:251
- #, c-format
-@@ -5252,33 +5186,33 @@
-
- #: g10/seckey-cert.c:311
- msgid "WARNING: Weak key detected - please change passphrase again.\n"
--msgstr "AV�S: la clau �s feble; per favor, canvieu la contrasenya.\n"
-+msgstr "AVÃS: la clau és feble; per favor, canvieu la contrasenya.\n"
-
- #: g10/seckey-cert.c:349
- msgid "generating the deprecated 16-bit checksum for secret key protection\n"
- msgstr ""
--"s'est� generant la suma de comprovaci� desaconsellada de 16-bits per a "
--"la protecci� de la clau secreta\n"
-+"s'està generant la suma de comprovació desaconsellada de 16-bits per a la "
-+"protecció de la clau secreta\n"
-
- #: g10/seskey.c:52
- msgid "weak key created - retrying\n"
- msgstr "s'hi ha creat una clau feble - reintent\n"
-
--# �s no-wrap? ivb
-+# És no-wrap? ivb
- #: g10/seskey.c:57
- #, c-format
- msgid "cannot avoid weak key for symmetric cipher; tried %d times!\n"
- msgstr ""
--"no s'ha pogut evitar una clau feble per a xifratge sim�tric;\n"
-+"no s'ha pogut evitar una clau feble per a xifratge simètric;\n"
- "hi ha hagut %d intents!\n"
-
- #: g10/seskey.c:213
- msgid "DSA requires the use of a 160 bit hash algorithm\n"
--msgstr "DSA requereix l'�s d'un algoritme de dispersi� de 160 bits\n"
-+msgstr "DSA requereix l'ús d'un algoritme de dispersió de 160 bits\n"
-
- #: g10/sig-check.c:75
- msgid "WARNING: signature digest conflict in message\n"
--msgstr "AV�S: conflicte de signatures digest en el missatge\n"
-+msgstr "AVÃS: conflicte de signatures digest en el missatge\n"
-
- #: g10/sig-check.c:99
- #, c-format
-@@ -5289,18 +5223,17 @@
- #, fuzzy, c-format
- msgid "WARNING: signing subkey %s has an invalid cross-certification\n"
- msgstr ""
--"AV�S: no es pot desfer la nominaci� d'una clau com a revocador "
--"designat!\n"
-+"AVÃS: no es pot desfer la nominació d'una clau com a revocador designat!\n"
-
- #: g10/sig-check.c:168
- #, fuzzy, c-format
- msgid "public key %s is %lu second newer than the signature\n"
--msgstr "la clau p�blica %08lX �s %lu segons anterior a la signatura\n"
-+msgstr "la clau pública %08lX és %lu segons anterior a la signatura\n"
-
- #: g10/sig-check.c:169
- #, fuzzy, c-format
- msgid "public key %s is %lu seconds newer than the signature\n"
--msgstr "la clau p�blica %08lX �s %lu segons anterior a la signatura\n"
-+msgstr "la clau pública %08lX és %lu segons anterior a la signatura\n"
-
- # Werner FIXME: Use ngettext. jm
- #: g10/sig-check.c:180
-@@ -5329,58 +5262,58 @@
- #, fuzzy, c-format
- msgid "assuming bad signature from key %s due to an unknown critical bit\n"
- msgstr ""
--"es supossa una signatura incorrecta de la clau %08lX a causa d'un bit "
--"cr�tic desconegut\n"
-+"es supossa una signatura incorrecta de la clau %08lX a causa d'un bit crític "
-+"desconegut\n"
-
- #: g10/sig-check.c:532
- #, fuzzy, c-format
- msgid "key %s: no subkey for subkey revocation signature\n"
- msgstr ""
--"clau %08lX: no hi ha una subclau per al paquet de la subclau de revocaci�\n"
-+"clau %08lX: no hi ha una subclau per al paquet de la subclau de revocació\n"
-
- #: g10/sig-check.c:558
- #, fuzzy, c-format
- msgid "key %s: no subkey for subkey binding signature\n"
- msgstr ""
--"clau %08lX: no hi ha una subclau per a la signatura de l'enlla� de la "
-+"clau %08lX: no hi ha una subclau per a la signatura de l'enllaç de la "
- "subclau\n"
-
- #: g10/sign.c:85
- msgid "can't put notation data into v3 (PGP 2.x style) signatures\n"
- msgstr ""
--"no es poden ficar dades de notaci� dins de signatures v3 (estil PGP 2.x)\n"
-+"no es poden ficar dades de notació dins de signatures v3 (estil PGP 2.x)\n"
-
- #: g10/sign.c:93
- msgid "can't put notation data into v3 (PGP 2.x style) key signatures\n"
- msgstr ""
--"no es poden ficar dades de notaci� dins de signatures de clau v3 (estil "
--"PGP 2.x)\n"
-+"no es poden ficar dades de notació dins de signatures de clau v3 (estil PGP "
-+"2.x)\n"
-
- #: g10/sign.c:112
- #, c-format
- msgid "WARNING: unable to %%-expand notation (too large). Using unexpanded.\n"
- msgstr ""
--"AV�S: no s'ha pogut %%-expandir la notaci� (massa gran). S'utilitza no "
-+"AVÃS: no s'ha pogut %%-expandir la notació (massa gran). S'utilitza no "
- "expandida.\n"
-
- #: g10/sign.c:138
- msgid "can't put a policy URL into v3 (PGP 2.x style) signatures\n"
- msgstr ""
--"no es pot ficar una URL de pol�tica dins de signatures v3 (estil PGP 2.x)\n"
-+"no es pot ficar una URL de política dins de signatures v3 (estil PGP 2.x)\n"
-
- #: g10/sign.c:146
- msgid "can't put a policy URL into v3 key (PGP 2.x style) signatures\n"
- msgstr ""
--"no es pot ficar una URL de pol�tica dins de signatures de clau v3 (estil "
--"PGP 2.x)\n"
-+"no es pot ficar una URL de política dins de signatures de clau v3 (estil PGP "
-+"2.x)\n"
-
- #: g10/sign.c:159
- #, fuzzy, c-format
- msgid ""
- "WARNING: unable to %%-expand policy URL (too large). Using unexpanded.\n"
- msgstr ""
--"AV�S: no s'ha pogut %%-expandir l'url de pol�tica (massa gran). "
--"S'utilitza no expandida.\n"
-+"AVÃS: no s'ha pogut %%-expandir l'url de política (massa gran). S'utilitza "
-+"no expandida.\n"
-
- #: g10/sign.c:187
- #, fuzzy, c-format
-@@ -5388,8 +5321,8 @@
- "WARNING: unable to %%-expand preferred keyserver URL (too large). Using "
- "unexpanded.\n"
- msgstr ""
--"AV�S: no s'ha pogut %%-expandir l'url de pol�tica (massa gran). "
--"S'utilitza no expandida.\n"
-+"AVÃS: no s'ha pogut %%-expandir l'url de política (massa gran). S'utilitza "
-+"no expandida.\n"
-
- #: g10/sign.c:364
- #, c-format
-@@ -5399,21 +5332,20 @@
- #: g10/sign.c:373
- #, fuzzy, c-format
- msgid "%s/%s signature from: \"%s\"\n"
--msgstr "%s signatura de: �%s�\n"
-+msgstr "%s signatura de: «%s»\n"
-
- #: g10/sign.c:741
- msgid "you can only detach-sign with PGP 2.x style keys while in --pgp2 mode\n"
- msgstr ""
--"nom�s podeu fer signatures separades amb claus d'estil PGP 2.x mentre "
--"esteu en mode --pgp2\n"
-+"només podeu fer signatures separades amb claus d'estil PGP 2.x mentre esteu "
-+"en mode --pgp2\n"
-
- #: g10/sign.c:808
- #, fuzzy, c-format
- msgid ""
- "WARNING: forcing digest algorithm %s (%d) violates recipient preferences\n"
- msgstr ""
--"for�ar l'algoritme de digest %s (%d) viola les prefer�ncies del "
--"destinatari\n"
-+"forçar l'algoritme de digest %s (%d) viola les preferències del destinatari\n"
-
- #: g10/sign.c:900
- msgid "signing:"
-@@ -5422,44 +5354,44 @@
- #: g10/sign.c:1007
- msgid "you can only clearsign with PGP 2.x style keys while in --pgp2 mode\n"
- msgstr ""
--"nom�s podeu signar en clar amb claus d'estil PGP 2.x en el mode --pgp2\n"
-+"només podeu signar en clar amb claus d'estil PGP 2.x en el mode --pgp2\n"
-
- #: g10/sign.c:1180
- #, c-format
- msgid "%s encryption will be used\n"
--msgstr "s'utilitzar� xifratge %s\n"
-+msgstr "s'utilitzarà xifratge %s\n"
-
- #: g10/skclist.c:126 g10/skclist.c:190
- msgid "key is not flagged as insecure - can't use it with the faked RNG!\n"
- msgstr ""
--"la clau no est� marcada com a insegura - no es pot utilitzar amb el GNA "
-+"la clau no està marcada com a insegura - no es pot utilitzar amb el GNA "
- "fals!\n"
-
- #: g10/skclist.c:157
- #, fuzzy, c-format
- msgid "skipped \"%s\": duplicated\n"
--msgstr "es descarta �%s�: duplicat\n"
-+msgstr "es descarta «%s»: duplicat\n"
-
- #: g10/skclist.c:165 g10/skclist.c:175 g10/skclist.c:184
- #, fuzzy, c-format
- msgid "skipped \"%s\": %s\n"
--msgstr "es descarta �%s�: %s\n"
-+msgstr "es descarta «%s»: %s\n"
-
- #: g10/skclist.c:170
- msgid "skipped: secret key already present\n"
--msgstr "es descarta: la clau secreta ja �s present\n"
-+msgstr "es descarta: la clau secreta ja és present\n"
-
- #: g10/skclist.c:185
- #, fuzzy
- msgid "this is a PGP generated Elgamal key which is not secure for signatures!"
- msgstr ""
--"es descarta �%s�: �s una clau ElGamal generada per PGP que no �s "
--"segura per a signatures!\n"
-+"es descarta «%s»: és una clau ElGamal generada per PGP que no és segura per "
-+"a signatures!\n"
-
- #: g10/tdbdump.c:59 g10/trustdb.c:365
- #, c-format
- msgid "trust record %lu, type %d: write failed: %s\n"
--msgstr "registre de confian�a %lu, tipus %d: no s'ha pogut escriure: %s\n"
-+msgstr "registre de confiança %lu, tipus %d: no s'ha pogut escriure: %s\n"
-
- #: g10/tdbdump.c:104
- #, c-format
-@@ -5467,18 +5399,18 @@
- "# List of assigned trustvalues, created %s\n"
- "# (Use \"gpg --import-ownertrust\" to restore them)\n"
- msgstr ""
--"# Llista de valors de confian�a assignats, creat el %s\n"
--"# (Utilitzeu �gpg --import-ownertrust� per a restaurar-les)\n"
-+"# Llista de valors de confiança assignats, creat el %s\n"
-+"# (Utilitzeu «gpg --import-ownertrust» per a restaurar-les)\n"
-
- #: g10/tdbdump.c:159 g10/tdbdump.c:167 g10/tdbdump.c:172 g10/tdbdump.c:177
- #, fuzzy, c-format
- msgid "error in `%s': %s\n"
--msgstr "error en la lectura de �%s�: %s\n"
-+msgstr "error en la lectura de «%s»: %s\n"
-
- #: g10/tdbdump.c:159
- #, fuzzy
- msgid "line too long"
--msgstr "la l�nia �s massa llarga\n"
-+msgstr "la línia és massa llarga\n"
-
- #: g10/tdbdump.c:167
- msgid "colon missing"
-@@ -5487,17 +5419,17 @@
- #: g10/tdbdump.c:173
- #, fuzzy
- msgid "invalid fingerprint"
--msgstr "error: l'empremta digital �s inv�lida\n"
-+msgstr "error: l'empremta digital és invàlida\n"
-
- #: g10/tdbdump.c:178
- #, fuzzy
- msgid "ownertrust value missing"
--msgstr "importa els valors de confian�a"
-+msgstr "importa els valors de confiança"
-
- #: g10/tdbdump.c:214
- #, fuzzy, c-format
- msgid "error finding trust record in `%s': %s\n"
--msgstr "error en trobar el registre de confian�a: %s\n"
-+msgstr "error en trobar el registre de confiança: %s\n"
-
- #: g10/tdbdump.c:218
- #, fuzzy, c-format
-@@ -5507,29 +5439,29 @@
- #: g10/tdbdump.c:227 g10/trustdb.c:380
- #, c-format
- msgid "trustdb: sync failed: %s\n"
--msgstr "base de dades de confian�a: no s'ha pogut sincronitzar: %s\n"
-+msgstr "base de dades de confiança: no s'ha pogut sincronitzar: %s\n"
-
- #: g10/tdbio.c:128 g10/tdbio.c:1440
- #, c-format
- msgid "trustdb rec %lu: lseek failed: %s\n"
--msgstr "reg de la base de dades de confian�a %lu: ha fallat lseek: %s\n"
-+msgstr "reg de la base de dades de confiança %lu: ha fallat lseek: %s\n"
-
- #: g10/tdbio.c:134 g10/tdbio.c:1447
- #, c-format
- msgid "trustdb rec %lu: write failed (n=%d): %s\n"
- msgstr ""
--"reg de la base de dades de confian�a %lu: ha fallat la escriptura (n=%d): %"
-+"reg de la base de dades de confiança %lu: ha fallat la escriptura (n=%d): %"
- "s\n"
-
- #: g10/tdbio.c:244
- msgid "trustdb transaction too large\n"
--msgstr "la transacci� de la base de dades de confian�a �s massa gran\n"
-+msgstr "la transacció de la base de dades de confiança és massa gran\n"
-
- # No em passe! ;) ivb
- #: g10/tdbio.c:497
- #, fuzzy, c-format
- msgid "can't access `%s': %s\n"
--msgstr "no s'ha pogut tancar �%s�: %s\n"
-+msgstr "no s'ha pogut tancar «%s»: %s\n"
-
- #: g10/tdbio.c:512
- #, c-format
-@@ -5539,82 +5471,82 @@
- #: g10/tdbio.c:522 g10/tdbio.c:545 g10/tdbio.c:588
- #, fuzzy, c-format
- msgid "can't create lock for `%s'\n"
--msgstr "no s'ha pogut crear �%s�: %s\n"
-+msgstr "no es pot crear el directori «%s»: %s\n"
-
- #: g10/tdbio.c:524 g10/tdbio.c:591
- #, fuzzy, c-format
- msgid "can't lock `%s'\n"
--msgstr "no s'ha pogut obrir �%s�\n"
-+msgstr "no s'ha pogut obrir «%s»\n"
-
- #: g10/tdbio.c:550
- #, c-format
- msgid "%s: failed to create version record: %s"
--msgstr "%s: no s'ha pogut crear un registre de versi�: %s"
-+msgstr "%s: no s'ha pogut crear un registre de versió: %s"
-
- #: g10/tdbio.c:554
- #, c-format
- msgid "%s: invalid trustdb created\n"
--msgstr "%s: s'ha creat una base de dades de confian�a inv�lida\n"
-+msgstr "%s: s'ha creat una base de dades de confiança invàlida\n"
-
- #: g10/tdbio.c:557
- #, c-format
- msgid "%s: trustdb created\n"
--msgstr "%s: s'ha creat la base de dades de confian�a\n"
-+msgstr "%s: s'ha creat la base de dades de confiança\n"
-
- #: g10/tdbio.c:597
- msgid "NOTE: trustdb not writable\n"
--msgstr "NOTA: no es pot escriure en la base de dades de confian�a\n"
-+msgstr "NOTA: no es pot escriure en la base de dades de confiança\n"
-
- #: g10/tdbio.c:614
- #, c-format
- msgid "%s: invalid trustdb\n"
--msgstr "%s: la base de dades de confian�a �s inv�lida\n"
-+msgstr "%s: la base de dades de confiança és invàlida\n"
-
- #: g10/tdbio.c:646
- #, c-format
- msgid "%s: failed to create hashtable: %s\n"
--msgstr "%s: no s'ha pogut crear la taula de dispersi�: %s\n"
-+msgstr "%s: no s'ha pogut crear la taula de dispersió: %s\n"
-
- #: g10/tdbio.c:654
- #, c-format
- msgid "%s: error updating version record: %s\n"
--msgstr "%s: error en actualitzar el registre de la versi�: %s\n"
-+msgstr "%s: error en actualitzar el registre de la versió: %s\n"
-
- #: g10/tdbio.c:671 g10/tdbio.c:691 g10/tdbio.c:707 g10/tdbio.c:721
- #: g10/tdbio.c:751 g10/tdbio.c:1373 g10/tdbio.c:1400
- #, c-format
- msgid "%s: error reading version record: %s\n"
--msgstr "%s: error en llegir el registre de la versi�: %s\n"
-+msgstr "%s: error en llegir el registre de la versió: %s\n"
-
- #: g10/tdbio.c:730
- #, c-format
- msgid "%s: error writing version record: %s\n"
--msgstr "%s: error en escriure el registre de la versi?: %s\n"
-+msgstr "%s: error en escriure el registre de la versió: %s\n"
-
- #: g10/tdbio.c:1169
- #, c-format
- msgid "trustdb: lseek failed: %s\n"
--msgstr "base de dades de confian�a: ha fallat lseek: %s\n"
-+msgstr "base de dades de confiança: ha fallat lseek: %s\n"
-
- #: g10/tdbio.c:1177
- #, c-format
- msgid "trustdb: read failed (n=%d): %s\n"
--msgstr "base de dades de confian�a: ha fallat la lectura (n=%d): %s\n"
-+msgstr "base de dades de confiança: ha fallat la lectura (n=%d): %s\n"
-
- #: g10/tdbio.c:1198
- #, c-format
- msgid "%s: not a trustdb file\n"
--msgstr "%s no �s un fitxer de base de dades de confian�a\n"
-+msgstr "%s no és un fitxer de base de dades de confiança\n"
-
- #: g10/tdbio.c:1216
- #, c-format
- msgid "%s: version record with recnum %lu\n"
--msgstr "%s: registre de versi� amb n�mero de registre %lu\n"
-+msgstr "%s: registre de versió amb número de registre %lu\n"
-
- #: g10/tdbio.c:1221
- #, c-format
- msgid "%s: invalid file version %d\n"
--msgstr "%s: la versi� de fitxer %d �s inv�lida\n"
-+msgstr "%s: la versió de fitxer %d és invàlida\n"
-
- #: g10/tdbio.c:1406
- #, c-format
-@@ -5639,23 +5571,23 @@
- #: g10/tdbio.c:1499
- msgid "the trustdb is corrupted; please run \"gpg --fix-trustdb\".\n"
- msgstr ""
--"la base de dades de confian�a est� corrompuda; per favor, executeu "
--"�gpg --fix-trustdb�.\n"
-+"la base de dades de confiança està corrompuda; per favor, executeu «gpg --"
-+"fix-trustdb».\n"
-
- #: g10/textfilter.c:142
- #, c-format
- msgid "can't handle text lines longer than %d characters\n"
--msgstr "no es poden tractar l�nies m�s llargues de %d car�cters\n"
-+msgstr "no es poden tractar línies més llargues de %d caràcters\n"
-
- #: g10/textfilter.c:239
- #, c-format
- msgid "input line longer than %d characters\n"
--msgstr "la l�nia d'entrada �s superior a %d car�cters\n"
-+msgstr "la línia d'entrada és superior a %d caràcters\n"
-
- #: g10/trustdb.c:226
- #, c-format
- msgid "`%s' is not a valid long keyID\n"
--msgstr "�%s� no �s un ID de clau llarg v�lid\n"
-+msgstr "«%s» no és un ID de clau llarg vàlid\n"
-
- #: g10/trustdb.c:257
- #, fuzzy, c-format
-@@ -5666,28 +5598,28 @@
- #, fuzzy, c-format
- msgid "key %s occurs more than once in the trustdb\n"
- msgstr ""
--"la clau %08lX apareix m�s d'una vegada en la base de dades de confian�a\n"
-+"la clau %08lX apareix més d'una vegada en la base de dades de confiança\n"
-
- #: g10/trustdb.c:310
- #, fuzzy, c-format
- msgid "key %s: no public key for trusted key - skipped\n"
- msgstr ""
--"clau %08lX: no hi ha una clau p�blica per a la clau fiable - es descarta\n"
-+"clau %08lX: no hi ha una clau pública per a la clau fiable - es descarta\n"
-
- #: g10/trustdb.c:320
- #, fuzzy, c-format
- msgid "key %s marked as ultimately trusted\n"
--msgstr "s'ha marcat la clau com a de confian�a absoluta.\n"
-+msgstr "s'ha marcat la clau com a de confiança absoluta.\n"
-
- #: g10/trustdb.c:344
- #, c-format
- msgid "trust record %lu, req type %d: read failed: %s\n"
--msgstr "registre de confian�a %lu, tipus %d: no s'ha pogut llegir: %s\n"
-+msgstr "registre de confiança %lu, tipus %d: no s'ha pogut llegir: %s\n"
-
- #: g10/trustdb.c:350
- #, c-format
- msgid "trust record %lu is not of requested type %d\n"
--msgstr "el registre de confian�a %lu no �s del tipus demanat %d\n"
-+msgstr "el registre de confiança %lu no és del tipus demanat %d\n"
-
- #: g10/trustdb.c:446
- #, c-format
-@@ -5758,33 +5690,32 @@
- #: g10/trustdb.c:576
- msgid "no need for a trustdb check\n"
- msgstr ""
--"no �s necess�ria una comprovaci� de la base de dades de confian�a\n"
-+"no és necessària una comprovació de la base de dades de confiança\n"
- "\n"
-
- #: g10/trustdb.c:582 g10/trustdb.c:2143
- #, c-format
- msgid "next trustdb check due at %s\n"
--msgstr ""
--"la pr?xima comprovaci� de la base de dades de confian�a ser� el %s\n"
-+msgstr "la pròxima comprovació de la base de dades de confiança serà el %s\n"
-
- #: g10/trustdb.c:591
- #, fuzzy, c-format
- msgid "no need for a trustdb check with `%s' trust model\n"
- msgstr ""
--"no �s necess�ria una comprovaci� de la base de dades de confian�a\n"
-+"no és necessària una comprovació de la base de dades de confiança\n"
- "\n"
-
- #: g10/trustdb.c:606
- #, fuzzy, c-format
- msgid "no need for a trustdb update with `%s' trust model\n"
- msgstr ""
--"no �s necess�ria una comprovaci� de la base de dades de confian�a\n"
-+"no és necessària una comprovació de la base de dades de confiança\n"
- "\n"
-
- #: g10/trustdb.c:824 g10/trustdb.c:1262
- #, fuzzy, c-format
- msgid "public key %s not found: %s\n"
--msgstr "no s'ha trobat la clau p�blica %08lX: %s\n"
-+msgstr "no s'ha trobat la clau pública %08lX: %s\n"
-
- #: g10/trustdb.c:1019
- msgid "please do a --check-trustdb\n"
-@@ -5792,7 +5723,7 @@
-
- #: g10/trustdb.c:1023
- msgid "checking the trustdb\n"
--msgstr "s'est� comprovant la base de dades de confian�a\n"
-+msgstr "s'està comprovant la base de dades de confiança\n"
-
- #: g10/trustdb.c:1887
- #, c-format
-@@ -5801,13 +5732,13 @@
-
- #: g10/trustdb.c:1951
- msgid "no ultimately trusted keys found\n"
--msgstr "no s'han trobat claus amb confian�a absoluta\n"
-+msgstr "no s'han trobat claus amb confiança absoluta\n"
-
- #: g10/trustdb.c:1965
- #, fuzzy, c-format
- msgid "public key of ultimately trusted key %s not found\n"
- msgstr ""
--"no s'ha trobat la clau p�blica de la clau amb confian�a absoluta %08lX\n"
-+"no s'ha trobat la clau pública de la clau amb confiança absoluta %08lX\n"
-
- #: g10/trustdb.c:1988
- #, c-format
-@@ -5823,7 +5754,7 @@
- #: g10/trustdb.c:2149
- #, fuzzy, c-format
- msgid "unable to update trustdb version record: write failed: %s\n"
--msgstr "registre de confian�a %lu, tipus %d: no s'ha pogut escriure: %s\n"
-+msgstr "registre de confiança %lu, tipus %d: no s'ha pogut escriure: %s\n"
-
- #: g10/verify.c:116
- msgid ""
-@@ -5833,14 +5764,13 @@
- msgstr ""
- "no s'ha pogut verificar la signatura.\n"
- "Recordeu que el fitxer de signatura (.sig o .asc)\n"
--"ha de ser el primer que figure en la l�nia d'ordres.\n"
-+"ha de ser el primer que figure en la línia d'ordres.\n"
-
--# LF -> fi de l�nia? ivb
-+# LF -> fi de línia? ivb
- #: g10/verify.c:189
- #, c-format
- msgid "input line %u too long or missing LF\n"
--msgstr ""
--"la l�nia d'entrada %u �s massa llarga o hi falta un f� de l�nia\n"
-+msgstr "la línia d'entrada %u és massa llarga o hi falta un fí de línia\n"
-
- #: util/errors.c:54
- msgid "general error"
-@@ -5848,47 +5778,47 @@
-
- #: util/errors.c:55
- msgid "unknown packet type"
--msgstr "el tipus de paquet �s desconegut"
-+msgstr "el tipus de paquet és desconegut"
-
- #: util/errors.c:56
- msgid "unknown version"
--msgstr "la versi� �s desconeguda"
-+msgstr "la versió és desconeguda"
-
- #: util/errors.c:57
- msgid "unknown pubkey algorithm"
--msgstr "l'algoritme de clau p�blica �s desconegut"
-+msgstr "l'algoritme de clau pública és desconegut"
-
- #: util/errors.c:58
- msgid "unknown digest algorithm"
--msgstr "l'algoritme de resum �s desconegut"
-+msgstr "l'algoritme de resum és desconegut"
-
- #: util/errors.c:59
- msgid "bad public key"
--msgstr "la clau p�blica �s err�nia"
-+msgstr "la clau pública és errònia"
-
- #: util/errors.c:60
- msgid "bad secret key"
--msgstr "la clau secreta �s err�nia"
-+msgstr "la clau secreta és errònia"
-
- #: util/errors.c:61
- msgid "bad signature"
--msgstr "la signatura �s err�nia"
-+msgstr "la signatura és errònia"
-
- #: util/errors.c:62
- msgid "checksum error"
--msgstr "la suma de control �s err�nia"
-+msgstr "la suma de control és errònia"
-
- #: util/errors.c:63
- msgid "bad passphrase"
--msgstr "la contrasenya �s err�nia"
-+msgstr "la contrasenya és errònia"
-
- #: util/errors.c:64
- msgid "public key not found"
--msgstr "no s'ha trobat la clau p�blica"
-+msgstr "no s'ha trobat la clau pública"
-
- #: util/errors.c:65
- msgid "unknown cipher algorithm"
--msgstr "l'algoritme de xifratge �s desconegut"
-+msgstr "l'algoritme de xifratge és desconegut"
-
- #: util/errors.c:66
- msgid "can't open the keyring"
-@@ -5896,11 +5826,11 @@
-
- #: util/errors.c:67
- msgid "invalid packet"
--msgstr "el paquet �s inv�lid"
-+msgstr "el paquet és invàlid"
-
- #: util/errors.c:68
- msgid "invalid armor"
--msgstr "l'armadura �s inv�lida"
-+msgstr "l'armadura és invàlida"
-
- #: util/errors.c:69
- msgid "no such user id"
-@@ -5908,22 +5838,22 @@
-
- #: util/errors.c:70
- msgid "secret key not available"
--msgstr "la clau secreta no est� disponible"
-+msgstr "la clau secreta no està disponible"
-
- #: util/errors.c:71
- msgid "wrong secret key used"
- msgstr "s'ha utilitzat una clau secreta incorrecta"
-
--# G�nere? Nombre? ivb
-+# Gènere? Nombre? ivb
- # Werner FIXME: please add translator comment saying *what* is
- # uncompressed so we know the gender. jm
- #: util/errors.c:72
- msgid "not supported"
--msgstr "no �s suportat"
-+msgstr "no és suportat"
-
- #: util/errors.c:73
- msgid "bad key"
--msgstr "la clau �s incorrecta"
-+msgstr "la clau és incorrecta"
-
- #: util/errors.c:74
- msgid "file read error"
-@@ -5935,7 +5865,7 @@
-
- #: util/errors.c:76
- msgid "unknown compress algorithm"
--msgstr "l'algoritme de compressi� �s desconegut"
-+msgstr "l'algoritme de compressió és desconegut"
-
- #: util/errors.c:77
- msgid "file open error"
-@@ -5943,47 +5873,47 @@
-
- #: util/errors.c:78
- msgid "file create error"
--msgstr "error en la creaci� del fitxer"
-+msgstr "error en la creació del fitxer"
-
- #: util/errors.c:79
- msgid "invalid passphrase"
--msgstr "la contrasenya �s inv�lida"
-+msgstr "la contrasenya és invàlida"
-
- #: util/errors.c:80
- msgid "unimplemented pubkey algorithm"
--msgstr "l'algoritme de clau p�blica no �s implementat"
-+msgstr "l'algoritme de clau pública no és implementat"
-
- #: util/errors.c:81
- msgid "unimplemented cipher algorithm"
--msgstr "l'algoritme de xifratge no �s implementat"
-+msgstr "l'algoritme de xifratge no és implementat"
-
- #: util/errors.c:82
- msgid "unknown signature class"
--msgstr "la classe de signatura �s desconeguda"
-+msgstr "la classe de signatura és desconeguda"
-
- #: util/errors.c:83
- msgid "trust database error"
--msgstr "error de la base de dades de confian�a"
-+msgstr "error de la base de dades de confiança"
-
- #: util/errors.c:84
- msgid "bad MPI"
--msgstr "l'MPI �s erroni"
-+msgstr "l'MPI és erroni"
-
- #: util/errors.c:85
- msgid "resource limit"
--msgstr "l�mit de recursos"
-+msgstr "límit de recursos"
-
- #: util/errors.c:86
- msgid "invalid keyring"
--msgstr "l'anell no �s v�lid"
-+msgstr "l'anell no és vàlid"
-
- #: util/errors.c:87
- msgid "bad certificate"
--msgstr "el certificat �s incorrecte"
-+msgstr "el certificat és incorrecte"
-
- #: util/errors.c:88
- msgid "malformed user id"
--msgstr "l'id d'usuari �s malformat"
-+msgstr "l'id d'usuari és malformat"
-
- #: util/errors.c:89
- msgid "file close error"
-@@ -5995,7 +5925,7 @@
-
- #: util/errors.c:91
- msgid "file delete error"
--msgstr "error en l'eliminaci� del fitxer"
-+msgstr "error en l'eliminació del fitxer"
-
- #: util/errors.c:92
- msgid "unexpected data"
-@@ -6005,47 +5935,47 @@
- msgid "timestamp conflict"
- msgstr "conflicte de data"
-
--# Ac� veus pq jo pose �no �s v�lid� en comptes de ��s inv�lid�. ivb
-+# Ací veus pq jo pose «no és vàlid» en comptes de «és invàlid». ivb
- #: util/errors.c:94
- msgid "unusable pubkey algorithm"
--msgstr "l'algoritme de clau p�blica �s inusable"
-+msgstr "l'algoritme de clau pública és inusable"
-
- #: util/errors.c:95
- msgid "file exists"
- msgstr "el fitxer existeix"
-
--# Segons context: la clau �s feble? ivb
-+# Segons context: la clau és feble? ivb
- #: util/errors.c:96
- msgid "weak key"
- msgstr "clau feble"
-
- #: util/errors.c:97
- msgid "invalid argument"
--msgstr "l'argument �s inv�lid"
-+msgstr "l'argument és invàlid"
-
--# La �U� �s masculina o femenina? ivb
-+# La «U» és masculina o femenina? ivb
- #: util/errors.c:98
- msgid "bad URI"
--msgstr "l'URI �s err�nia"
-+msgstr "l'URI és errònia"
-
--# �dem. ivb
-+# Ãdem. ivb
- #: util/errors.c:99
- msgid "unsupported URI"
--msgstr "l'URI no �s suportada"
-+msgstr "l'URI no és suportada"
-
- #: util/errors.c:100
- msgid "network error"
- msgstr "error de la xarxa"
-
--# G�nere? Nombre? ivb
-+# Gènere? Nombre? ivb
- # Werner FIXME: please add translator comment saying *what* is
- # uncompressed so we know the gender. jm
- #: util/errors.c:102
- msgid "not encrypted"
--msgstr "no �s xifrat"
-+msgstr "no és xifrat"
-
--# G�nere? Nombre? Passat, futur? ivb
--# Probablement �s una clau, femen�. jm
-+# Gènere? Nombre? Passat, futur? ivb
-+# Probablement és una clau, femení. jm
- # Werner FIXME: please add translator comment saying *what* is
- # uncompressed so we know the gender. jm
- #: util/errors.c:103
-@@ -6054,13 +5984,13 @@
-
- #: util/errors.c:105
- msgid "unusable public key"
--msgstr "ls clau p�blica �s inusable"
-+msgstr "ls clau pública és inusable"
-
- #: util/errors.c:106
- msgid "unusable secret key"
--msgstr "la clau secreta �s inusable"
-+msgstr "la clau secreta és inusable"
-
--# �del servidor�, �en el servidor�? ivb
-+# «del servidor», «en el servidor»? ivb
- #: util/errors.c:107
- msgid "keyserver error"
- msgstr "error de servidor de claus"
-@@ -6068,15 +5998,15 @@
- #: util/errors.c:108
- #, fuzzy
- msgid "canceled"
--msgstr "Cancel�la"
-+msgstr "Cancel·la"
-
--# G�nere? Nombre? ivb
-+# Gènere? Nombre? ivb
- # Werner FIXME: please add translator comment saying *what* is
- # uncompressed so we know the gender. jm
- #: util/errors.c:109
- #, fuzzy
- msgid "no card"
--msgstr "no �s xifrat"
-+msgstr "no és xifrat"
-
- #: util/logger.c:157
- msgid "ERROR: "
-@@ -6089,7 +6019,7 @@
- #: util/logger.c:223
- #, c-format
- msgid "... this is a bug (%s:%d:%s)\n"
--msgstr "... a�� �s un bug (%s:%d:%s)\n"
-+msgstr "... açò és un bug (%s:%d:%s)\n"
-
- #: util/logger.c:229
- #, c-format
-@@ -6098,7 +6028,7 @@
-
- #: util/miscutil.c:307 util/miscutil.c:344
- msgid "yes"
--msgstr "s�|si"
-+msgstr "sí|si"
-
- #: util/miscutil.c:308 util/miscutil.c:349
- msgid "yY"
-@@ -6116,7 +6046,7 @@
- msgid "quit"
- msgstr "ix"
-
--# �xX�? ivb
-+# «xX»? ivb
- #: util/miscutil.c:351
- msgid "qQ"
- msgstr "xX"
-@@ -6140,409 +6070,36 @@
-
- #: util/secmem.c:90
- msgid "WARNING: using insecure memory!\n"
--msgstr "AV�S: esteu usant mem�ria insegura!\n"
-+msgstr "AVÃS: esteu usant memòria insegura!\n"
-
- #: util/secmem.c:91
- msgid "please see http://www.gnupg.org/faq.html for more information\n"
- msgstr ""
--"si us plau, visiteu http://www.gnupg.org/faq.html per a m�s informaci�\n"
-+"si us plau, visiteu http://www.gnupg.org/faq.html per a més informació\n"
-
--# �ltimament pense si �iniciar� no ser� millor que �inicialitzar�? ivb
--# Segons SC, hi ha difer�ncia. jm
-+# Últimament pense si «iniciar» no serà millor que «inicialitzar»? ivb
-+# Segons SC, hi ha diferència. jm
- #: util/secmem.c:343
- msgid "operation is not possible without initialized secure memory\n"
--msgstr "l'operaci� no �s possible sense mem�ria segura inicialitzada\n"
-+msgstr "l'operació no és possible sense memòria segura inicialitzada\n"
-
- #: util/secmem.c:344
- msgid "(you may have used the wrong program for this task)\n"
- msgstr "(potser heu utilitzat el programa erroni per a aquesta tasca)\n"
-
--#~ msgid "--nrsign-key user-id"
--#~ msgstr "--nrsign-key user-id"
--
--#~ msgid "--nrlsign-key user-id"
--#~ msgstr "--nrlsign-key user-id"
--
--#, fuzzy
--#~ msgid "make a trust signature"
--#~ msgstr "crea una signatura separada"
--
--#~ msgid "sign the key non-revocably"
--#~ msgstr "signa la clau irrevocablement"
--
--#~ msgid "sign the key locally and non-revocably"
--#~ msgstr "signa la clau localment i irrevocablement"
--
--#~ msgid "q"
--#~ msgstr "q"
--
--#~ msgid "help"
--#~ msgstr "ajuda"
--
--#~ msgid "list"
--#~ msgstr "llista"
--
--#~ msgid "l"
--#~ msgstr "l"
--
--#~ msgid "debug"
--#~ msgstr "depura"
--
--#, fuzzy
--#~ msgid "name"
--#~ msgstr "enable"
--
--#, fuzzy
--#~ msgid "login"
--#~ msgstr "lsign"
--
--#, fuzzy
--#~ msgid "cafpr"
--#~ msgstr "fpr"
--
--#, fuzzy
--#~ msgid "forcesig"
--#~ msgstr "revsig"
--
--#, fuzzy
--#~ msgid "generate"
--#~ msgstr "error general"
--
--#~ msgid "passwd"
--#~ msgstr "passwd"
--
--#~ msgid "save"
--#~ msgstr "desa"
--
--#~ msgid "fpr"
--#~ msgstr "fpr"
--
--#~ msgid "uid"
--#~ msgstr "uid"
--
--#~ msgid "key"
--#~ msgstr "clau"
--
--#~ msgid "check"
--#~ msgstr "comprova"
--
--#~ msgid "c"
--#~ msgstr "c"
--
--#~ msgid "sign"
--#~ msgstr "sign"
--
--#~ msgid "s"
--#~ msgstr "s"
--
--#, fuzzy
--#~ msgid "tsign"
--#~ msgstr "sign"
--
--#~ msgid "lsign"
--#~ msgstr "lsign"
--
--#~ msgid "nrsign"
--#~ msgstr "nrsign"
--
--#~ msgid "nrlsign"
--#~ msgstr "nrlsign"
--
--#~ msgid "adduid"
--#~ msgstr "adduid"
--
--#~ msgid "addphoto"
--#~ msgstr "addphoto"
--
--#~ msgid "deluid"
--#~ msgstr "deluid"
--
--#~ msgid "delphoto"
--#~ msgstr "delphoto"
--
--#~ msgid "addkey"
--#~ msgstr "addkey"
--
--#, fuzzy
--#~ msgid "addcardkey"
--#~ msgstr "addkey"
--
--#~ msgid "delkey"
--#~ msgstr "delkey"
--
--#~ msgid "addrevoker"
--#~ msgstr "addrevoker"
--
--#~ msgid "delsig"
--#~ msgstr "delsig"
--
--#~ msgid "expire"
--#~ msgstr "expire"
--
--#~ msgid "primary"
--#~ msgstr "primari"
--
--#~ msgid "toggle"
--#~ msgstr "toggle"
--
--#~ msgid "t"
--#~ msgstr "t"
--
--#~ msgid "pref"
--#~ msgstr "pref"
--
--#~ msgid "showpref"
--#~ msgstr "showpref"
--
--#~ msgid "setpref"
--#~ msgstr "setpref"
--
--#~ msgid "updpref"
--#~ msgstr "updpref"
--
--# �del servidor�, �en el servidor�? ivb
--#, fuzzy
--#~ msgid "keyserver"
--#~ msgstr "error de servidor de claus"
--
--#~ msgid "trust"
--#~ msgstr "trust"
--
--#~ msgid "revsig"
--#~ msgstr "revsig"
--
--#~ msgid "revuid"
--#~ msgstr "revuid"
--
--#~ msgid "revkey"
--#~ msgstr "revkey"
--
--#~ msgid "disable"
--#~ msgstr "disable"
--
--#~ msgid "enable"
--#~ msgstr "enable"
--
--#~ msgid "showphoto"
--#~ msgstr "showphoto"
--
- #~ msgid "digest algorithm `%s' is read-only in this release\n"
--#~ msgstr ""
--#~ "l'algorisme de resum �%s� es de nom�s lectura en aquesta versi�\n"
--
--#~ msgid ""
--#~ "About to generate a new %s keypair.\n"
--#~ " minimum keysize is 768 bits\n"
--#~ " default keysize is 1024 bits\n"
--#~ " highest suggested keysize is 2048 bits\n"
--#~ msgstr ""
--#~ "Preparat per a generar un nou parell de claus %s.\n"
--#~ " grand�ria m�nima: 768 bits\n"
--#~ " grand�ria predeterminada: 1024 bits\n"
--#~ " grand�ria m�xima aconsellada: 2048 bits\n"
--
--#~ msgid "DSA only allows keysizes from 512 to 1024\n"
--#~ msgstr "DSA nom�s permet claus entre 512 i 1024 bits\n"
--
--#~ msgid "keysize too small; 1024 is smallest value allowed for RSA.\n"
--#~ msgstr ""
--#~ "la clau �s massa petita; 1024 bits ?s el m�nim perm�s per a claus "
--#~ "RSA.\n"
--
--#~ msgid "keysize too small; 768 is smallest value allowed.\n"
--#~ msgstr "la clau �s massa petita; 768 bits �s el m�nim perm�s.\n"
--
--# Jo tinc Deep Thought MMX a casa i m'ho fa en 42 segons. ivb
--#~ msgid "keysize too large; %d is largest value allowed.\n"
--#~ msgstr "la clau �s massa llarga; %d �s el m�xim perm�s.\n"
--
--#~ msgid ""
--#~ "Keysizes larger than 2048 are not suggested because\n"
--#~ "computations take REALLY long!\n"
--#~ msgstr ""
--#~ "No es recomanen claus m�s llargues de 2048 bits perqu�\n"
--#~ "els c�lculs s�n VERITABLEMENT llargs!\n"
--
--#, fuzzy
--#~ msgid "Are you sure that you want this keysize? (y/N) "
--#~ msgstr "Segur que voleu aquesta grand�ria? "
--
--#~ msgid ""
--#~ "Okay, but keep in mind that your monitor and keyboard radiation is also "
--#~ "very vulnerable to attacks!\n"
--#~ msgstr ""
--#~ "D'acord, per� sapieu que la radiaci� del monitor i del teclat tamb� "
--#~ "son molt vulnerables als atacs!\n"
--
--#~ msgid "Experimental algorithms should not be used!\n"
--#~ msgstr "No haur�eu d'usar algoritmes experimentals!\n"
--
--#~ msgid ""
--#~ "this cipher algorithm is deprecated; please use a more standard one!\n"
--#~ msgstr ""
--#~ "aquest algoritme de xifratge est� desaconsellat; useu-ne un de m�s "
--#~ "est�ndard!\n"
--
--#, fuzzy
--#~ msgid "writing to file `%s'\n"
--#~ msgstr "s'est� escrivint en �%s�\n"
--
--#~ msgid "sorry, can't do this in batch mode\n"
--#~ msgstr "no es pot fet aix� en mode desat�s\n"
--
--#~ msgid "key `%s' not found: %s\n"
--#~ msgstr "no s'ha trobat la clau �%s�: %s\n"
--
--#, fuzzy
--#~ msgid "can't create file `%s': %s\n"
--#~ msgstr "no s'ha pogut crear �%s�: %s\n"
--
--#, fuzzy
--#~ msgid "can't open file `%s': %s\n"
--#~ msgstr "no es pot obrir el fitxer: %s\n"
--
--#, fuzzy
--#~ msgid " \""
--#~ msgstr " alias \""
--
--#~ msgid " i = please show me more information\n"
--#~ msgstr " i = mostra m�s informaci�\n"
--
--#~ msgid "key %08lX: key has been revoked!\n"
--#~ msgstr "clau %08lX: aquesta clau ha estat revocada!\n"
--
--#~ msgid "key %08lX: subkey has been revoked!\n"
--#~ msgstr "clau %08lX: aquesta subclau ha estat revocada!\n"
--
--#~ msgid "%08lX: key has expired\n"
--#~ msgstr "%08lX: la clau ha caducat\n"
--
--#~ msgid "%08lX: We do NOT trust this key\n"
--#~ msgstr "%08lX: La clau NO �s de confian�a\n"
--
--#~ msgid " (%d) RSA (sign and encrypt)\n"
--#~ msgstr " (%d) RSA (signar i xifrar)\n"
--
--#, fuzzy
--#~ msgid " (%d) RSA (auth only)\n"
--#~ msgstr " (%d) RSA (nom�s signar)\n"
--
--#, fuzzy
--#~ msgid " (%d) RSA (sign and auth)\n"
--#~ msgstr " (%d) RSA (signar i xifrar)\n"
--
--#, fuzzy
--#~ msgid " (%d) RSA (encrypt and auth)\n"
--#~ msgstr " (%d) RSA (nom�s xifrar)\n"
--
--#, fuzzy
--#~ msgid " (%d) RSA (sign, encrypt and auth)\n"
--#~ msgstr " (%d) RSA (signar i xifrar)\n"
--
--#~ msgid "%s: can't open: %s\n"
--#~ msgstr "%s: no s'ha pogut obrir: %s\n"
--
--#~ msgid "%s: WARNING: empty file\n"
--#~ msgstr "%s: AV�S: el fitxer �s buit\n"
--
--#~ msgid "can't open %s: %s\n"
--#~ msgstr "no s'ha pogut obrir %s: %s\n"
--
--#, fuzzy
--#~ msgid " (%d) I trust marginally\n"
--#~ msgstr " %d = Hi confie marginalment\n"
--
--#, fuzzy
--#~ msgid " (%d) I trust fully\n"
--#~ msgstr " %d = Hi confie plenament\n"
--
--#, fuzzy
--#~ msgid "expires"
--#~ msgstr "expire"
--
--#, fuzzy
--#~ msgid ""
--#~ "\"\n"
--#~ "locally signed with your key %s at %s\n"
--#~ msgstr ""
--#~ "�\n"
--#~ "signat localment amb la vostra clau %08lX el %s\n"
--
--#, fuzzy
--#~ msgid " signed by %s on %s%s\n"
--#~ msgstr " signat per %08lX el %s%s\n"
--
--#~ msgid "%s: can't access: %s\n"
--#~ msgstr "%s: no s'ha pogut accedir: %s\n"
--
--# blocatge? ivb
--# yep. jm
--#~ msgid "%s: can't create lock\n"
--#~ msgstr "%s: no s'ha pogut crear el blocatge\n"
--
--#~ msgid "%s: can't make lock\n"
--#~ msgstr "%s: no s'ha pogut crear el blocatge\n"
--
--#~ msgid "%s: can't create: %s\n"
--#~ msgstr "%s: no s'ha pogut crear: %s\n"
--
--#~ msgid "%s: can't create directory: %s\n"
--#~ msgstr "%s: no s'ha pogut crear el directori: %s\n"
--
--#~ msgid "If you want to use this revoked key anyway, answer \"yes\"."
--#~ msgstr ""
--#~ "Si voleu utilitzar aquesta clau revocada de totes maneres, dieu "
--#~ "�s��."
--
--#~ msgid "Unable to open photo \"%s\": %s\n"
--#~ msgstr "No s'ha pogut obrir la foto �%s�: %s\n"
--
--#~ msgid "can't open file: %s\n"
--#~ msgstr "no es pot obrir el fitxer: %s\n"
--
--#~ msgid "error: missing colon\n"
--#~ msgstr "error: falten dos punts\n"
--
--#~ msgid "error: no ownertrust value\n"
--#~ msgstr "error: no hi ha cap valor de confian�a\n"
--
--#~ msgid " (main key ID %08lX)"
--#~ msgstr " (ID de la clau principal %08lX)"
--
--#~ msgid "rev! subkey has been revoked: %s\n"
--#~ msgstr "rev! la subclau ha estat revocada: %s\n"
--
--#~ msgid "rev- faked revocation found\n"
--#~ msgstr "rev- s'ha trobat una revocaci� falsa\n"
--
--#~ msgid "rev? problem checking revocation: %s\n"
--#~ msgstr "rev? hi ha problemes en la comprovaci� de la revocaci�: %s\n"
--
--#, fuzzy
--#~ msgid " [expired: %s]"
--#~ msgstr " [caduca: %s]"
--
--#~ msgid " [expires: %s]"
--#~ msgstr " [caduca: %s]"
--
--#, fuzzy
--#~ msgid " [revoked: %s]"
--#~ msgstr "[revocada]"
--
--#~ msgid "can't create %s: %s\n"
--#~ msgstr "no s'ha pogut creat %s: %s\n"
-+#~ msgstr "l'algorisme de resum «%s» es de només lectura en aquesta versió\n"
-
- #~ msgid ""
- #~ "WARNING: digest `%s' is not part of OpenPGP. Use at your own risk!\n"
- #~ msgstr ""
--#~ "AV�S: el resum �%s� no �s part d'OpenPGP. Utilitzeu-lo assumint "
--#~ "el risc!\n"
-+#~ "AVÃS: el resum «%s» no és part d'OpenPGP. Utilitzeu-lo assumint el risc!\n"
-
- #~ msgid "|[files]|encrypt files"
- #~ msgstr "|[fitxers]|xifra fitxers"
-
- #~ msgid "store only"
--#~ msgstr "nom�s emmagatzema"
-+#~ msgstr "només emmagatzema"
-
- #~ msgid "|[files]|decrypt files"
- #~ msgstr "|[fitxers]|desxifra fitxers"
-@@ -6550,21 +6107,21 @@
- #~ msgid "sign a key non-revocably"
- #~ msgstr "signa una clau irrevocablement"
-
--# D'altres formes o no queda clar o �s massa literari :P ivb
-+# D'altres formes o no queda clar o és massa literari :P ivb
- #~ msgid "sign a key locally and non-revocably"
- #~ msgstr "signa una clau de forma local i irrevocable"
-
- #~ msgid "list only the sequence of packets"
--#~ msgstr "llista nom�s la seq��ncia de paquets"
-+#~ msgstr "llista només la seqüència de paquets"
-
- #~ msgid "export the ownertrust values"
--#~ msgstr "exporta els valors de confian�a"
-+#~ msgstr "exporta els valors de confiança"
-
- #~ msgid "unattended trust database update"
--#~ msgstr "actualitzaci� no atesa de la base de dades de confian�a"
-+#~ msgstr "actualització no atesa de la base de dades de confiança"
-
- #~ msgid "fix a corrupted trust database"
--#~ msgstr "arregla una base de dades de confian�a corrompuda"
-+#~ msgstr "arregla una base de dades de confiança corrompuda"
-
- #~ msgid "De-Armor a file or stdin"
- #~ msgstr "lleva l'armadura a un fitxer o a stdin"
-@@ -6582,16 +6139,16 @@
- #~ msgstr "no usa el terminal en absolut"
-
- #~ msgid "force v3 signatures"
--#~ msgstr "for�a signatures v3"
-+#~ msgstr "força signatures v3"
-
- #~ msgid "do not force v3 signatures"
--#~ msgstr "no for�a signatures v3"
-+#~ msgstr "no força signatures v3"
-
- #~ msgid "force v4 key signatures"
--#~ msgstr "for�a signatures de clau v4"
-+#~ msgstr "força signatures de clau v4"
-
- #~ msgid "do not force v4 key signatures"
--#~ msgstr "no for�a signatures de clau v4"
-+#~ msgstr "no força signatures de clau v4"
-
- #~ msgid "always use a MDC for encryption"
- #~ msgstr "sempre utilitza un MDC per a xifrar"
-@@ -6602,15 +6159,15 @@
- #~ msgid "use the gpg-agent"
- #~ msgstr "utilitza el gpg-agent"
-
--# Mode desat�s (SC) ivb
-+# Mode desatès (SC) ivb
- #~ msgid "batch mode: never ask"
--#~ msgstr "mode desat�s: no pregunta mai"
-+#~ msgstr "mode desatès: no pregunta mai"
-
- #~ msgid "assume yes on most questions"
--#~ msgstr "suposa �s�� en la majoria de les preguntes"
-+#~ msgstr "suposa «sí» en la majoria de les preguntes"
-
- #~ msgid "assume no on most questions"
--#~ msgstr "suposa �no� en la majoria de les preguntes"
-+#~ msgstr "suposa «no» en la majoria de les preguntes"
-
- #~ msgid "add this keyring to the list of keyrings"
- #~ msgstr "afegeix aquest anell a la llista"
-@@ -6619,7 +6176,7 @@
- #~ msgstr "afegeix aquest anell secret a la llista"
-
- #~ msgid "show which keyring a listed key is on"
--#~ msgstr "mostra en quin anell de claus est� una clau llistada"
-+#~ msgstr "mostra en quin anell de claus està una clau llistada"
-
- #~ msgid "|NAME|use NAME as default secret key"
- #~ msgstr "|NOM|usa NOM com a clau secreta predeterminada"
-@@ -6628,19 +6185,19 @@
- #~ msgstr "|HOST|usa aquest servidor per a cercar claus"
-
- #~ msgid "|NAME|set terminal charset to NAME"
--#~ msgstr "|NOM|el joc de car�cters ser� NOM"
-+#~ msgstr "|NOM|el joc de caràcters serà NOM"
-
- #~ msgid "read options from file"
- #~ msgstr "llig opcions del fitxer"
-
- #~ msgid "|[file]|write status info to file"
--#~ msgstr "|fitxer|escriu informaci� d'estat en un fitxer"
-+#~ msgstr "|fitxer|escriu informació d'estat en un fitxer"
-
- #~ msgid "|KEYID|ultimately trust this key"
- #~ msgstr "|IDCLAU|confia absolutament en aquesta clau"
-
- #~ msgid "|FILE|load extension module FILE"
--#~ msgstr "|FITXER|carrega el m�dul d'extensi� especificat"
-+#~ msgstr "|FITXER|carrega el mòdul d'extensió especificat"
-
- #~ msgid "emulate the mode described in RFC1991"
- #~ msgstr "emula el mode descrit en RFC1991"
-@@ -6672,7 +6229,7 @@
- #~ msgstr "|NOM|usa l'algoritme de resum de missatges NOM"
-
- #~ msgid "|N|use compress algorithm N"
--#~ msgstr "|N|usa l'algoritme de compressi� N"
-+#~ msgstr "|N|usa l'algoritme de compressió N"
-
- # elimina o descarta? jm
- #~ msgid "throw keyid field of encrypted packets"
-@@ -6692,54 +6249,270 @@
-
- #~ msgid "compress algorithm `%s' is read-only in this release\n"
- #~ msgstr ""
--#~ "l'algorisme de compressi� �%s� es de nom�s lectura en aquesta "
--#~ "versi�\n"
-+#~ "l'algorisme de compressió «%s» es de només lectura en aquesta versió\n"
-
- #~ msgid "compress algorithm must be in range %d..%d\n"
--#~ msgstr "l'algoritme de compressi� ha d'estar en l'interval %d..%d\n"
-+#~ msgstr "l'algoritme de compressió ha d'estar en l'interval %d..%d\n"
-+
-+#~ msgid "--nrsign-key user-id"
-+#~ msgstr "--nrsign-key user-id"
-+
-+#~ msgid "--nrlsign-key user-id"
-+#~ msgstr "--nrlsign-key user-id"
-+
-+#~ msgid "can't open %s: %s\n"
-+#~ msgstr "no s'ha pogut obrir %s: %s\n"
-+
-+#~ msgid " i = please show me more information\n"
-+#~ msgstr " i = mostra més informació\n"
-+
-+#~ msgid "key %08lX: key has been revoked!\n"
-+#~ msgstr "clau %08lX: aquesta clau ha estat revocada!\n"
-+
-+#~ msgid "key %08lX: subkey has been revoked!\n"
-+#~ msgstr "clau %08lX: aquesta subclau ha estat revocada!\n"
-+
-+#~ msgid "%08lX: key has expired\n"
-+#~ msgstr "%08lX: la clau ha caducat\n"
-+
-+#~ msgid "%08lX: We do NOT trust this key\n"
-+#~ msgstr "%08lX: La clau NO és de confiança\n"
-
- #~ msgid ""
- #~ "%08lX: It is not sure that this key really belongs to the owner\n"
- #~ "but it is accepted anyway\n"
- #~ msgstr ""
- #~ "%08lX: No hi ha garanties que aquesta clau pertanya realment al seu\n"
--#~ "propietari per� s'accepta de tota manera\n"
-+#~ "propietari però s'accepta de tota manera\n"
-
- #~ msgid "preference %c%lu is not valid\n"
--#~ msgstr "la prefer�ncia %c%lu no �s v�lida\n"
-+#~ msgstr "la preferència %c%lu no és vàlida\n"
-+
-+#~ msgid " (%d) RSA (sign and encrypt)\n"
-+#~ msgstr " (%d) RSA (signar i xifrar)\n"
-+
-+#~ msgid ""
-+#~ "About to generate a new %s keypair.\n"
-+#~ " minimum keysize is 768 bits\n"
-+#~ " default keysize is 1024 bits\n"
-+#~ " highest suggested keysize is 2048 bits\n"
-+#~ msgstr ""
-+#~ "Preparat per a generar un nou parell de claus %s.\n"
-+#~ " grandària mínima: 768 bits\n"
-+#~ " grandària predeterminada: 1024 bits\n"
-+#~ " grandària màxima aconsellada: 2048 bits\n"
-+
-+#~ msgid "DSA only allows keysizes from 512 to 1024\n"
-+#~ msgstr "DSA només permet claus entre 512 i 1024 bits\n"
-+
-+#~ msgid "keysize too small; 1024 is smallest value allowed for RSA.\n"
-+#~ msgstr ""
-+#~ "la clau és massa petita; 1024 bits és el mínim permés per a claus RSA.\n"
-+
-+#~ msgid "keysize too small; 768 is smallest value allowed.\n"
-+#~ msgstr "la clau és massa petita; 768 bits és el mínim permés.\n"
-+
-+# Jo tinc Deep Thought MMX a casa i m'ho fa en 42 segons. ivb
-+#~ msgid "keysize too large; %d is largest value allowed.\n"
-+#~ msgstr "la clau és massa llarga; %d és el màxim permés.\n"
-+
-+#~ msgid ""
-+#~ "Keysizes larger than 2048 are not suggested because\n"
-+#~ "computations take REALLY long!\n"
-+#~ msgstr ""
-+#~ "No es recomanen claus més llargues de 2048 bits perquè\n"
-+#~ "els càlculs són VERITABLEMENT llargs!\n"
-+
-+#~ msgid "Are you sure that you want this keysize? "
-+#~ msgstr "Segur que voleu aquesta grandària? "
-+
-+#~ msgid ""
-+#~ "Okay, but keep in mind that your monitor and keyboard radiation is also "
-+#~ "very vulnerable to attacks!\n"
-+#~ msgstr ""
-+#~ "D'acord, però sapieu que la radiació del monitor i del teclat també son "
-+#~ "molt vulnerables als atacs!\n"
-+
-+#~ msgid "%s: can't open: %s\n"
-+#~ msgstr "%s: no s'ha pogut obrir: %s\n"
-+
-+#~ msgid "%s: WARNING: empty file\n"
-+#~ msgstr "%s: AVÃS: el fitxer és buit\n"
-
- #~ msgid "key %08lX: not a rfc2440 key - skipped\n"
--#~ msgstr "clau %08lX: no �s una clau rfc2440 - es descarta\n"
-+#~ msgstr "clau %08lX: no és una clau rfc2440 - es descarta\n"
-
- #~ msgid ""
- #~ "NOTE: Elgamal primary key detected - this may take some time to import\n"
- #~ msgstr ""
--#~ "NOTA: s'ha detectat una clau prim�ria Elgamal - a�� pot trigar un "
--#~ "temps en importar-se\n"
-+#~ "NOTA: s'ha detectat una clau primària Elgamal - açò pot trigar un temps "
-+#~ "en importar-se\n"
-
- #~ msgid " (default)"
- #~ msgstr " (predeterminat)"
-
-+#~ msgid "q"
-+#~ msgstr "q"
-+
-+#~ msgid "save"
-+#~ msgstr "desa"
-+
-+#~ msgid "help"
-+#~ msgstr "ajuda"
-+
-+#~ msgid "fpr"
-+#~ msgstr "fpr"
-+
-+#~ msgid "list"
-+#~ msgstr "llista"
-+
-+#~ msgid "l"
-+#~ msgstr "l"
-+
-+#~ msgid "uid"
-+#~ msgstr "uid"
-+
-+#~ msgid "key"
-+#~ msgstr "clau"
-+
-+#~ msgid "check"
-+#~ msgstr "comprova"
-+
-+#~ msgid "s"
-+#~ msgstr "s"
-+
-+#~ msgid "lsign"
-+#~ msgstr "lsign"
-+
-+#~ msgid "nrsign"
-+#~ msgstr "nrsign"
-+
-+#~ msgid "sign the key non-revocably"
-+#~ msgstr "signa la clau irrevocablement"
-+
-+#~ msgid "nrlsign"
-+#~ msgstr "nrlsign"
-+
-+#~ msgid "sign the key locally and non-revocably"
-+#~ msgstr "signa la clau localment i irrevocablement"
-+
-+#~ msgid "debug"
-+#~ msgstr "depura"
-+
-+#~ msgid "adduid"
-+#~ msgstr "adduid"
-+
-+#~ msgid "addphoto"
-+#~ msgstr "addphoto"
-+
-+#~ msgid "deluid"
-+#~ msgstr "deluid"
-+
-+#~ msgid "delphoto"
-+#~ msgstr "delphoto"
-+
-+#~ msgid "addkey"
-+#~ msgstr "addkey"
-+
-+#~ msgid "delkey"
-+#~ msgstr "delkey"
-+
-+#~ msgid "addrevoker"
-+#~ msgstr "addrevoker"
-+
-+#~ msgid "delsig"
-+#~ msgstr "delsig"
-+
-+#~ msgid "primary"
-+#~ msgstr "primari"
-+
-+#~ msgid "toggle"
-+#~ msgstr "toggle"
-+
-+#~ msgid "t"
-+#~ msgstr "t"
-+
-+#~ msgid "pref"
-+#~ msgstr "pref"
-+
-+#~ msgid "showpref"
-+#~ msgstr "showpref"
-+
-+#~ msgid "setpref"
-+#~ msgstr "setpref"
-+
-+#~ msgid "updpref"
-+#~ msgstr "updpref"
-+
-+#~ msgid "passwd"
-+#~ msgstr "passwd"
-+
-+#~ msgid "trust"
-+#~ msgstr "trust"
-+
-+#~ msgid "revsig"
-+#~ msgstr "revsig"
-+
-+#~ msgid "revuid"
-+#~ msgstr "revuid"
-+
-+#~ msgid "revkey"
-+#~ msgstr "revkey"
-+
-+#~ msgid "showphoto"
-+#~ msgstr "showphoto"
-+
- #~ msgid "%s%c %4u%c/%08lX created: %s expires: %s"
- #~ msgstr "%s%c %4u%c/%08lX creada: %s caduca: %s"
-
-+#~ msgid "rev! subkey has been revoked: %s\n"
-+#~ msgstr "rev! la subclau ha estat revocada: %s\n"
-+
-+#~ msgid "rev- faked revocation found\n"
-+#~ msgstr "rev- s'ha trobat una revocació falsa\n"
-+
-+#~ msgid "rev? problem checking revocation: %s\n"
-+#~ msgstr "rev? hi ha problemes en la comprovació de la revocació: %s\n"
-+
-+#~ msgid ""
-+#~ "\"\n"
-+#~ "locally signed with your key %08lX at %s\n"
-+#~ msgstr ""
-+#~ "»\n"
-+#~ "signat localment amb la vostra clau %08lX el %s\n"
-+
-+#~ msgid " signed by %08lX at %s%s%s\n"
-+#~ msgstr " signat per %08lX el %s%s%s\n"
-+
-+#~ msgid " signed by %08lX at %s%s\n"
-+#~ msgstr " signat per %08lX el %s%s\n"
-+
- #~ msgid "Notation: "
--#~ msgstr "Notaci�: "
-+#~ msgstr "Notació: "
-
- #~ msgid "Policy: "
--#~ msgstr "Pol�tica: "
-+#~ msgstr "Política: "
-+
-+#~ msgid "Experimental algorithms should not be used!\n"
-+#~ msgstr "No hauríeu d'usar algoritmes experimentals!\n"
-+
-+#~ msgid ""
-+#~ "this cipher algorithm is deprecated; please use a more standard one!\n"
-+#~ msgstr ""
-+#~ "aquest algoritme de xifratge està desaconsellat; useu-ne un de més "
-+#~ "estàndard!\n"
-
- #~ msgid "can't get key from keyserver: %s\n"
- #~ msgstr "no s'ha pogut obtenir del servidor la clau: %s\n"
-
- #~ msgid "error sending to `%s': %s\n"
--#~ msgstr "error mentre s'enviava a �%s�: %s\n"
-+#~ msgstr "error mentre s'enviava a «%s»: %s\n"
-
- #~ msgid "success sending to `%s' (status=%u)\n"
--#~ msgstr "l'enviament a �%s� ha tingut �xit (status=%u)\n"
-+#~ msgstr "l'enviament a «%s» ha tingut èxit (status=%u)\n"
-
- #~ msgid "failed sending to `%s': status=%u\n"
--#~ msgstr "l'enviament a �%s� ha fallat: status=%u\n"
-+#~ msgstr "l'enviament a «%s» ha fallat: status=%u\n"
-
- #~ msgid "this keyserver does not support --search-keys\n"
- #~ msgstr "aquest servidor de claus no suporta --search-keys\n"
-@@ -6752,7 +6525,7 @@
- #~ "key %08lX: this is a PGP generated ElGamal key which is NOT secure for "
- #~ "signatures!\n"
- #~ msgstr ""
--#~ "clau %08lX: aquesta �s una clau ElGamal que NO �s segura per a "
-+#~ "clau %08lX: aquesta és una clau ElGamal que NO és segura per a "
- #~ "signatures!\n"
-
- #~ msgid ""
-@@ -6771,6 +6544,20 @@
- #~ "problemes\n"
- #~ "amb el rellotge)\n"
-
-+#~ msgid "%s: can't access: %s\n"
-+#~ msgstr "%s: no s'ha pogut accedir: %s\n"
-+
-+# blocatge? ivb
-+# yep. jm
-+#~ msgid "%s: can't create lock\n"
-+#~ msgstr "%s: no s'ha pogut crear el blocatge\n"
-+
-+#~ msgid "%s: can't make lock\n"
-+#~ msgstr "%s: no s'ha pogut crear el blocatge\n"
-+
-+#~ msgid "%s: can't create: %s\n"
-+#~ msgstr "%s: no s'ha pogut crear: %s\n"
-+
- #~ msgid "key %08lX marked as ultimately trusted\n"
- #~ msgstr "s'ha marcat la clau %08lX com confiada absolutament\n"
-
-@@ -6782,8 +6569,15 @@
-
- #~ msgid "checking at depth %d signed=%d ot(-/q/n/m/f/u)=%d/%d/%d/%d/%d/%d\n"
- #~ msgstr ""
--#~ "s'est� comprovant en profunditat %d signat=%d ot(-/q/n/m/f/u)=%d/%d/%d/%"
--#~ "d/%d/%d\n"
-+#~ "s'està comprovant en profunditat %d signat=%d ot(-/q/n/m/f/u)=%d/%d/%d/%d/"
-+#~ "%d/%d\n"
-+
-+#~ msgid "%s: can't create directory: %s\n"
-+#~ msgstr "%s: no s'ha pogut crear el directori: %s\n"
-+
-+#~ msgid "If you want to use this revoked key anyway, answer \"yes\"."
-+#~ msgstr ""
-+#~ "Si voleu utilitzar aquesta clau revocada de totes maneres, dieu «sí»."
-
- #~ msgid ""
- #~ "Select the algorithm to use.\n"
-@@ -6810,30 +6604,27 @@
- #~ msgstr ""
- #~ "Seleccioneu l'algoritme a utilitzar.\n"
- #~ "\n"
--#~ "DSA (tamb� conegut com a DSS) �s el algorisme de signatura digital "
--#~ "que nom�s\n"
--#~ "pot ser utilitzat per a signatures. Aquest �s el algoritme suggerit "
--#~ "perqu�\n"
--#~ "la comprovaci� de signatures DSA �s molt m�s r�pida que les "
--#~ "d'ElGamal.\n"
-+#~ "DSA (també conegut com a DSS) és el algorisme de signatura digital que "
-+#~ "només\n"
-+#~ "pot ser utilitzat per a signatures. Aquest és el algoritme suggerit "
-+#~ "perquè\n"
-+#~ "la comprovació de signatures DSA és molt més ràpida que les d'ElGamal.\n"
- #~ "\n"
--#~ "ElGamal �s un algorisme que es pot utilitzar per a signatures i "
-+#~ "ElGamal és un algorisme que es pot utilitzar per a signatures i "
- #~ "xifratge.\n"
--#~ "OpenPGP distingueix entre 2 variants d'aquest algorisme: una de nom�s "
-+#~ "OpenPGP distingueix entre 2 variants d'aquest algorisme: una de només "
- #~ "xifratge\n"
--#~ "i una de signatura+xifratge; en veritat �s el mateix, per� alguns "
--#~ "par�metres\n"
--#~ "han de seleccionar-se d'una manera especial per a crear claus m�s "
-+#~ "i una de signatura+xifratge; en veritat és el mateix, però alguns "
-+#~ "paràmetres\n"
-+#~ "han de seleccionar-se d'una manera especial per a crear claus més "
- #~ "segures\n"
--#~ "per a signatures: aquest programa fa a��, per� altres "
--#~ "implementacions\n"
-+#~ "per a signatures: aquest programa fa açò, però altres implementacions\n"
- #~ "d'OpenPGP no estan obligades a entendre la variant signatura+xifratge.\n"
- #~ "\n"
--#~ "La primera clau (prim�ria) ha de ser sempre una clau que siga capa� "
--#~ "de signar;\n"
--#~ "aquesta �s la ra� per la qual la clau de nom�s xifratge ElGamal no "
--#~ "est�\n"
--#~ "disponible en aquest men�."
-+#~ "La primera clau (primària) ha de ser sempre una clau que siga capaç de "
-+#~ "signar;\n"
-+#~ "aquesta és la raó per la qual la clau de només xifratge ElGamal no està\n"
-+#~ "disponible en aquest menú."
-
- #~ msgid ""
- #~ "Although these keys are defined in RFC2440 they are not suggested\n"
-@@ -6841,8 +6632,8 @@
- #~ "with them are quite large and very slow to verify."
- #~ msgstr ""
- #~ "Encara que aquestes claus estan definides en RFC2440, no es recomanen\n"
--#~ "perqu� no tots els programes hi poden treballar i perqu� les\n"
--#~ "signatures que generen s�n molt llargues i lentes de verificar."
-+#~ "perquè no tots els programes hi poden treballar i perquè les\n"
-+#~ "signatures que generen són molt llargues i lentes de verificar."
-
- #~ msgid "%lu keys so far checked (%lu signatures)\n"
- #~ msgstr "fins ara s'han comprovat %lu claus (%lu signature)\n"
-@@ -6851,7 +6642,19 @@
- #~ msgstr "clau incompleta\n"
-
- #~ msgid "key %08lX incomplete\n"
--#~ msgstr "la clau %08lX �s incompleta\n"
-+#~ msgstr "la clau %08lX és incompleta\n"
-+
-+#~ msgid "sorry, can't do this in batch mode\n"
-+#~ msgstr "no es pot fet això en mode desatès\n"
-+
-+#~ msgid "can't open file: %s\n"
-+#~ msgstr "no es pot obrir el fitxer: %s\n"
-+
-+#~ msgid "error: missing colon\n"
-+#~ msgstr "error: falten dos punts\n"
-+
-+#~ msgid "error: no ownertrust value\n"
-+#~ msgstr "error: no hi ha cap valor de confiança\n"
-
- #~ msgid " (%d) ElGamal (sign and encrypt)\n"
- #~ msgstr " (%d) ElGamal (signar i xifrar)\n"
-@@ -6862,46 +6665,44 @@
- #~ "also\n"
- #~ "very slow, and may not be as secure as the other choices.\n"
- #~ msgstr ""
--#~ "L'�s d'aquest algorisme nom�s est� suportat per GnuPG. No podreu "
-+#~ "L'ús d'aquest algorisme només està suportat per GnuPG. No podreu "
- #~ "utilitzar aquesta clau per a comunicar-vos amb usuaris de PGP. Aquest "
--#~ "algorisme tamb� �s molt lent, i potser no �s tan segur com les "
--#~ "altres alternatives.\n"
-+#~ "algorisme també és molt lent, i potser no és tan segur com les altres "
-+#~ "alternatives.\n"
-
- #~ msgid "Create anyway? "
- #~ msgstr "Voleu crear la clau de tota manera? "
-
- #~ msgid "invalid symkey algorithm detected (%d)\n"
--#~ msgstr "algoritme de clau sim�tric inv�lid detectat (%d)\n"
-+#~ msgstr "algoritme de clau simètric invàlid detectat (%d)\n"
-
- #~ msgid "this keyserver is not fully HKP compatible\n"
--#~ msgstr "aquest servidor de clau no �s completament compatible amb HKP\n"
-+#~ msgstr "aquest servidor de clau no és completament compatible amb HKP\n"
-
- #~ msgid "The use of this algorithm is deprecated - create anyway? "
- #~ msgstr ""
--#~ "L'�s d'aquest algoritme est� desaconsellat - el voleu crear "
--#~ "igualment? "
-+#~ "L'ús d'aquest algoritme està desaconsellat - el voleu crear igualment? "
-
- #~ msgid "|NAME=VALUE|use this notation data"
--#~ msgstr "|NOM=VALOR|usa aquesta notaci� de dades"
-+#~ msgstr "|NOM=VALOR|usa aquesta notació de dades"
-
- #~ msgid ""
- #~ "the first character of a notation name must be a letter or an underscore\n"
- #~ msgstr ""
--#~ "el primer car�cter de la notaci� ha de ser una lletra o un "
--#~ "subratllat\n"
-+#~ "el primer caràcter de la notació ha de ser una lletra o un subratllat\n"
-
- #~ msgid "dots in a notation name must be surrounded by other characters\n"
--#~ msgstr "els punts han d'estar envoltats per altres car�cters\n"
-+#~ msgstr "els punts han d'estar envoltats per altres caràcters\n"
-
- #~ msgid ""
- #~ "WARNING: This key already has a photo ID.\n"
- #~ " Adding another photo ID may confuse some versions of PGP.\n"
- #~ msgstr ""
--#~ "AV�S: Aquesta clau ja te un photo ID.\n"
-+#~ "AVÃS: Aquesta clau ja te un photo ID.\n"
- #~ " Afegir un altre photo ID pot confondre algunes versions de PGP.\n"
-
- #~ msgid "You may only have one photo ID on a key.\n"
--#~ msgstr "Nom�s podeu tenir un photo ID en una clau.\n"
-+#~ msgstr "Només podeu tenir un photo ID en una clau.\n"
-
- #~ msgid " Fingerprint:"
- #~ msgstr " Empremta digital:"
-@@ -6911,13 +6712,13 @@
- #~ "heu d'executar GnuPG de nou per que puga llegir el nou fitxer d'opcions\n"
-
- #~ msgid "changing permission of `%s' failed: %s\n"
--#~ msgstr "no s'han pogut canviar els permissos de �%s�: %s\n"
-+#~ msgstr "no s'han pogut canviar els permissos de «%s»: %s\n"
-
- #~ msgid "too many random bits requested; the limit is %d\n"
--#~ msgstr "massa bits aleatoris sol�licitats; el l�mit �s %d\n"
-+#~ msgstr "massa bits aleatoris sol·licitats; el límit és %d\n"
-
- #~ msgid "|[NAMES]|check the trust database"
--#~ msgstr "|[NOMS]|comprova la base de dades de confian�a"
-+#~ msgstr "|[NOMS]|comprova la base de dades de confiança"
-
- #~ msgid "--delete-secret-key user-id"
- #~ msgstr "--delete-secret-key user-id"
-@@ -6929,7 +6730,7 @@
- #~ msgstr "--delete-secret-and-public-key user-id"
-
- #~ msgid "For info see http://www.gnupg.org"
--#~ msgstr "Si voleu m�s informaci� vegeu http://www.gnupg.org"
-+#~ msgstr "Si voleu més informació vegeu http://www.gnupg.org"
-
- #~ msgid "sSmMqQ"
- #~ msgstr "sSmMqQ"
-@@ -6939,43 +6740,40 @@
- #~ "can assign some missing owner trust values.\n"
- #~ "\n"
- #~ msgstr ""
--#~ "No s'ha trobat un cam� de confian�a v�lid a la clau. Vegem si "
--#~ "podem\n"
--#~ "assignar valors de confian�a no assignats.\n"
-+#~ "No s'ha trobat un camí de confiança vàlid a la clau. Vegem si podem\n"
-+#~ "assignar valors de confiança no assignats.\n"
- #~ "\n"
-
- #~ msgid ""
- #~ "No path leading to one of our keys found.\n"
- #~ "\n"
- #~ msgstr ""
--#~ "No s'ha trobat un cam� que condueixe a una de les nostres claus.\n"
-+#~ "No s'ha trobat un camí que condueixe a una de les nostres claus.\n"
- #~ "\n"
-
- #~ msgid ""
- #~ "No certificates with undefined trust found.\n"
- #~ "\n"
- #~ msgstr ""
--#~ "No s'han trobat certificats amb confian�a no definida.\n"
-+#~ "No s'han trobat certificats amb confiança no definida.\n"
- #~ "\n"
-
- #~ msgid ""
- #~ "No trust values changed.\n"
- #~ "\n"
- #~ msgstr ""
--#~ "No s'ha canviat cap valor de confian�a.\n"
-+#~ "No s'ha canviat cap valor de confiança.\n"
- #~ "\n"
-
- #~ msgid "%08lX: no info to calculate a trust probability\n"
- #~ msgstr ""
--#~ "%08lX: no hi ha informaci� per a calcular una probabilitat de "
--#~ "confian�a\n"
-+#~ "%08lX: no hi ha informació per a calcular una probabilitat de confiança\n"
-
- #~ msgid "skipped: public key already set with --encrypt-to\n"
--#~ msgstr ""
--#~ "es descarta: la clau p�blica ja s'ha especificat amb --encrypt-to\n"
-+#~ msgstr "es descarta: la clau pública ja s'ha especificat amb --encrypt-to\n"
-
- #~ msgid "%s: error checking key: %s\n"
--#~ msgstr "%s: error en la comprovaci� de la clau: %s\n"
-+#~ msgstr "%s: error en la comprovació de la clau: %s\n"
-
- #~ msgid "Do you really want to create a sign and encrypt key? "
- #~ msgstr "Segur que voleu crear una clau de signatura i xifratge? "
-@@ -6991,19 +6789,19 @@
-
- #~ msgid "too many entries in unk cache - disabled\n"
- #~ msgstr ""
--#~ "massa entrades en la mem�ria cau de claus desconegudes - desactivada\n"
-+#~ "massa entrades en la memòria cau de claus desconegudes - desactivada\n"
-
- #~ msgid "secret key %08lX not imported (use %s to allow for it)\n"
- #~ msgstr "clau secreta %08lX no importada (utilitzeu %s per a permitir-ho)\n"
-
- #~ msgid "key %08lX: our copy has no self-signature\n"
--#~ msgstr "clau %08lX: la nostra c�pia no t� autosignatura\n"
-+#~ msgstr "clau %08lX: la nostra còpia no té autosignatura\n"
-
- #~ msgid "%s: user not found\n"
- #~ msgstr "%s: no s'ha trobat l'usuari\n"
-
- #~ msgid "assuming bad MDC due to an unknown critical bit\n"
--#~ msgstr "es suposa MDC erroni a causa d'un bit cr�tic desconegut\n"
-+#~ msgstr "es suposa MDC erroni a causa d'un bit crític desconegut\n"
-
- #~ msgid "error reading dir record for LID %lu: %s\n"
- #~ msgstr "error al llegir el registre de directori per al LID %lu: %s\n"
-@@ -7012,63 +6810,63 @@
- #~ msgstr "lid %lu: s'esperava registre de directori, s'ha obtingut %d\n"
-
- #~ msgid "no primary key for LID %lu\n"
--#~ msgstr "no hi ha una clau prim�ria per al LID %lu\n"
-+#~ msgstr "no hi ha una clau primària per al LID %lu\n"
-
- #~ msgid "error reading primary key for LID %lu: %s\n"
--#~ msgstr "error al llegir clau prim�ria per al LID %lu: %s\n"
-+#~ msgstr "error al llegir clau primària per al LID %lu: %s\n"
-
- #~ msgid "key %08lX: query record failed\n"
- #~ msgstr "clau %08lX: la consulta del registre ha fallat\n"
-
- #~ msgid "key %08lX: already in trusted key table\n"
--#~ msgstr "clau %08lX: ja es troba en la taula de claus de confian�a\n"
-+#~ msgstr "clau %08lX: ja es troba en la taula de claus de confiança\n"
-
- #~ msgid "NOTE: secret key %08lX is NOT protected.\n"
--#~ msgstr "NOTE: la clau secreta %08lX no est� protegida.\n"
-+#~ msgstr "NOTE: la clau secreta %08lX no està protegida.\n"
-
- #~ msgid "key %08lX: secret and public key don't match\n"
--#~ msgstr "clau %08lX: les claus p�blica i secreta no coincideixen\n"
-+#~ msgstr "clau %08lX: les claus pública i secreta no coincideixen\n"
-
- #~ msgid "key %08lX.%lu: Good subkey binding\n"
--#~ msgstr "clau %08lX.%lu: Enlla� de subclau correcta\n"
-+#~ msgstr "clau %08lX.%lu: Enllaç de subclau correcta\n"
-
- #~ msgid "key %08lX.%lu: Invalid subkey binding: %s\n"
--#~ msgstr "clau %08lX.%lu: Enlla� de subclau inv�lid: %s\n"
-+#~ msgstr "clau %08lX.%lu: Enllaç de subclau invàlid: %s\n"
-
- #~ msgid "key %08lX.%lu: Valid key revocation\n"
--#~ msgstr "clau %08lX.%lu: Revocaci� de clau v�lida\n"
-+#~ msgstr "clau %08lX.%lu: Revocació de clau vàlida\n"
-
- #~ msgid "key %08lX.%lu: Invalid key revocation: %s\n"
--#~ msgstr "clau %08lX.%lu: Revocaci� de clau inv�lida: %s\n"
-+#~ msgstr "clau %08lX.%lu: Revocació de clau invàlida: %s\n"
-
- #~ msgid "Good self-signature"
- #~ msgstr "Auto-signatura correcta"
-
- #~ msgid "Invalid self-signature"
--#~ msgstr "Auto-signatura inv�lida"
-+#~ msgstr "Auto-signatura invàlida"
-
- #~ msgid "Valid user ID revocation skipped due to a newer self signature"
- #~ msgstr ""
--#~ "Es descarta una revocaci� d'ID d'usuari v�lida degut a una "
--#~ "autosignatura m�s recent"
-+#~ "Es descarta una revocació d'ID d'usuari vàlida degut a una autosignatura "
-+#~ "més recent"
-
- #~ msgid "Valid user ID revocation"
--#~ msgstr "Revocaci� d'ID d'usuari v�lida"
-+#~ msgstr "Revocació d'ID d'usuari vàlida"
-
- #~ msgid "Invalid user ID revocation"
--#~ msgstr "Revocaci� d'ID d'usuari inv�lida"
-+#~ msgstr "Revocació d'ID d'usuari invàlida"
-
- #~ msgid "Valid certificate revocation"
--#~ msgstr "Certificat de revocaci� v�lid"
-+#~ msgstr "Certificat de revocació vàlid"
-
- #~ msgid "Good certificate"
- #~ msgstr "Certificat correcte"
-
- #~ msgid "Invalid certificate revocation"
--#~ msgstr "Certificat de revocaci� inv�lid"
-+#~ msgstr "Certificat de revocació invàlid"
-
- #~ msgid "Invalid certificate"
--#~ msgstr "Certificat inv�lid"
-+#~ msgstr "Certificat invàlid"
-
- #~ msgid "sig record %lu[%d] points to wrong record.\n"
- #~ msgstr "el registre de signatura %lu[%d] apunta a un registre incorrecte.\n"
-@@ -7080,10 +6878,10 @@
- #~ msgstr "tdbio_search_dir ha fallat: %s\n"
-
- #~ msgid "lid ?: insert failed: %s\n"
--#~ msgstr "lid ?: la inserci� ha fallat: %s\n"
-+#~ msgstr "lid ?: la inserció ha fallat: %s\n"
-
- #~ msgid "lid %lu: insert failed: %s\n"
--#~ msgstr "lid %lu: la inserci� ha fallat: %s\n"
-+#~ msgstr "lid %lu: la inserció ha fallat: %s\n"
-
- #~ msgid "lid %lu: inserted\n"
- #~ msgstr "lid %lu: inserit\n"
-@@ -7098,7 +6896,7 @@
- #~ msgstr "lid %lu: registre de directori sense clau - es descarta\n"
-
- #~ msgid "\t%lu due to new pubkeys\n"
--#~ msgstr "\\t%lu degut a noves claus p�bliques\n"
-+#~ msgstr "\\t%lu degut a noves claus públiques\n"
-
- #~ msgid "\t%lu keys skipped\n"
- #~ msgstr "\t%lu claus es descarta\n"
-@@ -7117,11 +6915,10 @@
-
- #~ msgid "key %08lX: insert trust record failed: %s\n"
- #~ msgstr ""
--#~ "clau %08lX: ha fallat la inserci� en la base de dades de confian�a: %"
--#~ "s\n"
-+#~ "clau %08lX: ha fallat la inserció en la base de dades de confiança: %s\n"
-
- #~ msgid "key %08lX.%lu: inserted into trustdb\n"
--#~ msgstr "clau %08lX.%lu: inserida en la base de dades de confian�a\n"
-+#~ msgstr "clau %08lX.%lu: inserida en la base de dades de confiança\n"
-
- #~ msgid "key %08lX.%lu: created in future (time warp or clock problem)\n"
- #~ msgstr ""
-@@ -7132,30 +6929,26 @@
- #~ msgstr "clau %08lX.%lu: caducada el %s\n"
-
- #~ msgid "key %08lX.%lu: trust check failed: %s\n"
--#~ msgstr "clau %08lX.%lu: ha fallat la verificaci� de confian�a: %s\n"
-+#~ msgstr "clau %08lX.%lu: ha fallat la verificació de confiança: %s\n"
-
- #~ msgid "problem finding '%s' in trustdb: %s\n"
--#~ msgstr ""
--#~ "problema al cercar �%s� en la base de dades de confian�a: %s\n"
-+#~ msgstr "problema al cercar «%s» en la base de dades de confiança: %s\n"
-
- #~ msgid "user '%s' not in trustdb - inserting\n"
- #~ msgstr ""
--#~ "l'usuari �%s� no est� en la base de dades de confian�a - inserint-"
--#~ "lo\n"
-+#~ "l'usuari «%s» no està en la base de dades de confiança - inserint-lo\n"
-
- #~ msgid "failed to put '%s' into trustdb: %s\n"
--#~ msgstr ""
--#~ "no s'ha pogut posar �%s� en la base de dades de confian�a - %s\n"
-+#~ msgstr "no s'ha pogut posar «%s» en la base de dades de confiança - %s\n"
-
- #~ msgid "WARNING: can't yet handle long pref records\n"
--#~ msgstr ""
--#~ "AV�S: encara no es poden manejar registres de pref�ncies llargs\n"
-+#~ msgstr "AVÃS: encara no es poden manejar registres de prefències llargs\n"
-
- #~ msgid "%s: can't create keyring: %s\n"
- #~ msgstr "%s: no s'ha creat l'anell: %s\n"
-
- #~ msgid "RSA key cannot be used in this version\n"
--#~ msgstr "No es poden usar claus RSA en aquesta versi�\n"
-+#~ msgstr "No es poden usar claus RSA en aquesta versió\n"
-
- #~ msgid "No key for user ID\n"
- #~ msgstr "No hi ha clau per a l'usuari\n"
-@@ -7164,7 +6957,7 @@
- #~ msgstr "No hi ha usuari per a la clau\n"
-
- #~ msgid "invalid"
--#~ msgstr "inv�lida"
-+#~ msgstr "invàlida"
-
- #~ msgid "no secret key for decryption available\n"
- #~ msgstr "no hi ha clau secreta disponible per al desxifratge\n"
diff --git a/packages/gnupg/gnupg-1.4.0/21_strgutil_update.patch b/packages/gnupg/gnupg-1.4.0/21_strgutil_update.patch
deleted file mode 100644
index 8343fc0281..0000000000
--- a/packages/gnupg/gnupg-1.4.0/21_strgutil_update.patch
+++ /dev/null
@@ -1,200 +0,0 @@
---- gnupg-1.4.0/util/strgutil.c 2004-11-17 15:50:58.000000000 +0000
-+++ /tmp/dpep.GtChya/gnupg-1.4.0/util/strgutil.c 2005-02-05 00:53:22.921264222 +0000
-@@ -1,6 +1,6 @@
- /* strgutil.c - string utilities
- * Copyright (C) 1994, 1998, 1999, 2000, 2001,
-- * 2003 Free Software Foundation, Inc.
-+ * 2003, 2004, 2005 Free Software Foundation, Inc.
- *
- * This file is part of GnuPG.
- *
-@@ -144,6 +144,8 @@
- {
- log_info (_("error loading `%s': %s\n"),
- "iconv.dll", dlerror ());
-+ log_info(_("please see http://www.gnupg.org/download/iconv.html "
-+ "for more information\n"));
- iconv_open = NULL;
- iconv = NULL;
- iconv_close = NULL;
-@@ -451,10 +453,33 @@
- handle_iconv_error (const char *to, const char *from, int use_fallback)
- {
- if (errno == EINVAL)
-- log_error (_("conversion from `%s' to `%s' not available\n"),
-- from, to);
-+ {
-+ static int shown1, shown2;
-+ int x;
-+
-+ if (to && !strcmp (to, "utf-8"))
-+ {
-+ x = shown1;
-+ shown1 = 1;
-+ }
-+ else
-+ {
-+ x = shown2;
-+ shown2 = 1;
-+ }
-+
-+ if (!x)
-+ log_info (_("conversion from `%s' to `%s' not available\n"),
-+ from, to);
-+ }
- else
-- log_error (_("iconv_open failed: %s\n"), strerror (errno));
-+ {
-+ static int shown;
-+
-+ if (!shown)
-+ log_info (_("iconv_open failed: %s\n"), strerror (errno));
-+ shown = 1;
-+ }
-
- if (use_fallback)
- {
-@@ -479,28 +504,78 @@
- if (!newset) {
- #ifdef _WIN32
- static char codepage[30];
-+ unsigned int cpno;
-+ const char *aliases;
-
- /* We are a console program thus we need to use the
-- GetConsoleOutputCP fucntion and not the the GetACP which
-+ GetConsoleOutputCP function and not the the GetACP which
- would give the codepage for a GUI program. Note this is
- not a bulletproof detection because GetConsoleCP might
-- retrun a different one for console input. Not sure how to
-- cope with that. */
-- sprintf (codepage, "CP%u", (unsigned int)GetConsoleOutputCP ());
-- /* If it is the Windows name for Latin-1 we use the standard
-- name instead to avoid loading of iconv.dll. Unfortunately
-- it is often CP850 and we don't have a custom translation
-- for it. */
-- if (!strcmp (codepage, "CP1252"))
-- newset = "iso-8859-1";
-- else
-- newset = codepage;
-+ return a different one for console input. Not sure how to
-+ cope with that. If the console Code page is not known we
-+ fall back to the system code page. */
-+ cpno = GetConsoleOutputCP ();
-+ if (!cpno)
-+ cpno = GetACP ();
-+ sprintf (codepage, "CP%u", cpno );
-+ /* Resolve alias. We use a long string string and not the
-+ usual array to optimize if the code is taken to a DSO.
-+ Taken from libiconv 1.9.2. */
-+ newset = codepage;
-+ for (aliases = ("CP936" "\0" "GBK" "\0"
-+ "CP1361" "\0" "JOHAB" "\0"
-+ "CP20127" "\0" "ASCII" "\0"
-+ "CP20866" "\0" "KOI8-R" "\0"
-+ "CP21866" "\0" "KOI8-RU" "\0"
-+ "CP28591" "\0" "ISO-8859-1" "\0"
-+ "CP28592" "\0" "ISO-8859-2" "\0"
-+ "CP28593" "\0" "ISO-8859-3" "\0"
-+ "CP28594" "\0" "ISO-8859-4" "\0"
-+ "CP28595" "\0" "ISO-8859-5" "\0"
-+ "CP28596" "\0" "ISO-8859-6" "\0"
-+ "CP28597" "\0" "ISO-8859-7" "\0"
-+ "CP28598" "\0" "ISO-8859-8" "\0"
-+ "CP28599" "\0" "ISO-8859-9" "\0"
-+ "CP28605" "\0" "ISO-8859-15" "\0");
-+ *aliases;
-+ aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
-+ {
-+ if (!strcmp (codepage, aliases) ||(*aliases == '*' && !aliases[1]))
-+ {
-+ newset = aliases + strlen (aliases) + 1;
-+ break;
-+ }
-+ }
-+
- #else
- #ifdef HAVE_LANGINFO_CODESET
- newset = nl_langinfo (CODESET);
--#else
-- newset = "iso-8859-1";
--#endif
-+#else /* !HAVE_LANGINFO_CODESET */
-+ /* Try to get the used charset from environment variables. */
-+ static char codepage[30];
-+ const char *lc, *dot, *mod;
-+
-+ strcpy (codepage, "iso-8859-1");
-+ lc = getenv ("LC_ALL");
-+ if (!lc || !*lc) {
-+ lc = getenv ("LC_CTYPE");
-+ if (!lc || !*lc)
-+ lc = getenv ("LANG");
-+ }
-+ if (lc && *lc) {
-+ dot = strchr (lc, '.');
-+ if (dot) {
-+ mod = strchr (++dot, '@');
-+ if (!mod)
-+ mod = dot + strlen (dot);
-+ if (mod - dot < sizeof codepage && dot != mod) {
-+ memcpy (codepage, dot, mod - dot);
-+ codepage [mod - dot] = 0;
-+ }
-+ }
-+ }
-+ newset = codepage;
-+#endif /* !HAVE_LANGINFO_CODESET */
- #endif
- }
-
-@@ -511,9 +586,18 @@
- newset++;
- }
-
-+ /* Note that we silently assume that plain ASCII is actually meant
-+ as Latin-1. This makes sense because many Unix system don't
-+ have their locale set up properly and thus would get annoying
-+ error messages and we have to handle all the "bug"
-+ reports. Latin-1 has always been the character set used for 8
-+ bit characters on Unix systems. */
- if( !*newset
- || !ascii_strcasecmp (newset, "8859-1" )
-- || !ascii_strcasecmp (newset, "8859-15" ) ) {
-+ || !ascii_strcasecmp (newset, "646" )
-+ || !ascii_strcasecmp (newset, "ASCII" )
-+ || !ascii_strcasecmp (newset, "ANSI_X3.4-1968" )
-+ ) {
- active_charset_name = "iso-8859-1";
- no_translation = 0;
- active_charset = NULL;
-@@ -645,8 +729,12 @@
- if ( iconv (cd, (ICONV_CONST char **)&inptr, &inbytes,
- &outptr, &outbytes) == (size_t)-1)
- {
-- log_error (_("conversion from `%s' to `%s' failed: %s\n"),
-- active_charset_name, "utf-8", strerror (errno));
-+ static int shown;
-+
-+ if (!shown)
-+ log_info (_("conversion from `%s' to `%s' failed: %s\n"),
-+ active_charset_name, "utf-8", strerror (errno));
-+ shown = 1;
- /* We don't do any conversion at all but use the strings as is. */
- strcpy (buffer, string);
- }
-@@ -919,8 +1007,12 @@
- outbuf = outptr = m_alloc (outbytes);
- if ( iconv (cd, (ICONV_CONST char **)&inptr, &inbytes,
- &outptr, &outbytes) == (size_t)-1) {
-- log_error (_("conversion from `%s' to `%s' failed: %s\n"),
-- "utf-8", active_charset_name, strerror (errno));
-+ static int shown;
-+
-+ if (!shown)
-+ log_info (_("conversion from `%s' to `%s' failed: %s\n"),
-+ "utf-8", active_charset_name, strerror (errno));
-+ shown = 1;
- /* Didn't worked out. Temporary disable the use of
- * iconv and fall back to our old code. */
- m_free (buffer);
diff --git a/packages/gnupg/gnupg2.inc b/packages/gnupg/gnupg2.inc
deleted file mode 100644
index d362981f3c..0000000000
--- a/packages/gnupg/gnupg2.inc
+++ /dev/null
@@ -1,77 +0,0 @@
-SECTION = "console/utils"
-DESCRIPTION = "gnupg - GNU privacy guard - development version"
-HOMEPAGE = "http://www.gnupg.org/"
-LICENSE = "GPLv2"
-# DEPENDS = "zlib libgpg-error libgcrypt libassuan ksba opensc"
-DEPENDS = "zlib libgpg-error libgcrypt libassuan"
-
-inherit autotools gettext
-
-SRC_URI = "ftp://ftp.gnupg.org/gcrypt/alpha/gnupg/gnupg-${PV}.tar.bz2"
-S = "${WORKDIR}/gnupg-${PV}"
-libexecdir := "${libexecdir}/gnupg2"
-FILES_${PN} += "${datadir}/gnupg"
-
-# NOTE: gpgsm and scdaemon binaries aren't buildable if you dont have libksba. -CL
-# --with-ksba-prefix=${STAGING_LIBDIR}/..
-
-# NOTE: opensc is needed by the scdaemon binary. if you don't have opensc, it can
-# only build a limited scdaemon. -CL
-# --with-opensc-prefix=${STAGING_LIBDIR}/..
-
-# NOTE: given those facts, the current build will disable scdaemon and gpgsm.
-# Threads are disabled currently to avoid the pth dependency. -CL
-
-EXTRA_OECONF = "--disable-ldap \
- --with-zlib=${STAGING_LIBDIR}/.. \
- --disable-threads \
- --disable-gpgsm \
- --disable-scdaemon"
-
-# Bypass the tests
-EXTRA_OEMAKE += "'TESTS_ENVIRONMENT=/bin/true'"
-
-# --disable-gpg do not build the gpg program
-# --disable-gpgsm do not build the gpgsm program
-# --disable-agent do not build the agent program
-# --disable-scdaemon do not build the scdaemon program
-# --enable-agent-only build only the gpg-agent
-# --disable-exec disable all external program execution
-# --disable-photo-viewers disable photo ID viewers
-# --disable-keyserver-helpers disable all external keyserver support
-# --disable-ldap disable LDAP keyserver interface
-# --disable-hkp disable HKP keyserver interface
-# --disable-mailto disable email keyserver interface
-# --disable-keyserver-path disable the exec-path option for keyserver helpers
-# --disable-largefile omit support for large files
-# --disable-threads allow building without Pth support
-# --disable-dns-srv disable the use of DNS SRV in HKP
-# --disable-nls do not use Native Language Support
-# --disable-rpath do not hardcode runtime library paths
-# --disable-regex do not handle regular expressions in trust sigs
-# --with-agent-pgm=PATH Use PATH as the default for the agent)
-# --with-pinentry-pgm=PATH Use PATH as the default for the pinentry)
-# --with-scdaemon-pgm=PATH Use PATH as the default for the scdaemon)
-# --with-dirmngr-pgm=PATH Use PATH as the default for the dirmngr)
-# --with-protect-tool-pgm=PATH Use PATH as the default for the protect-tool)
-# --with-photo-viewer=FIXED_VIEWER set a fixed photo ID viewer
-# --with-capabilities use linux capabilities default=no
-# --with-gpg-error-prefix=PFX
-# prefix where GPG Error is installed (optional)
-# --with-libgcrypt-prefix=PFX
-# prefix where LIBGCRYPT is installed (optional)
-# --with-libassuan-prefix=PFX
-# prefix where LIBASSUAN is installed (optional)
-# --with-ksba-prefix=PFX prefix where KSBA is installed (optional)
-# --with-opensc-prefix=PFX
-# prefix where OpenSC is installed (optional)
-# --with-pth-prefix=PFX prefix where GNU Pth is installed (optional)
-# --with-mailprog=NAME use "NAME -t" for mail transport
-# --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
-# --without-libiconv-prefix don't search for libiconv in includedir and libdir
-# --with-included-gettext use the GNU gettext library included here
-# --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib
-# --without-libintl-prefix don't search for libintl in includedir and libdir
-# --with-included-regex use the included GNU regex library
-# --with-zlib=DIR use libz in DIR
-# --with-pkits-tests run the PKITS based tests
diff --git a/packages/gnupg/gnupg2_1.9.15.bb b/packages/gnupg/gnupg2_1.9.15.bb
deleted file mode 100644
index 39de9c6d51..0000000000
--- a/packages/gnupg/gnupg2_1.9.15.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require gnupg2.inc
-
-PR = "r3"
diff --git a/packages/gnuplot/qtplot_0.2.bb b/packages/gnuplot/qtplot_0.2.bb
index 8b22c0e5d5..80b3e4a603 100644
--- a/packages/gnuplot/qtplot_0.2.bb
+++ b/packages/gnuplot/qtplot_0.2.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "QT Gnuplot is a front end for Gnuplot. Install Opie-Embedded \
console to enable the Launch Gnuplot menu option."
-SECTION = "opie/applications"
+SECTION = "opie/applications"
PRIORITY = "optional"
LICENSE = "GPL"
PRIORITY = "optional"
diff --git a/packages/gnutls/gnutls.inc b/packages/gnutls/gnutls.inc
index 2fefe34ceb..ed96e3f588 100644
--- a/packages/gnutls/gnutls.inc
+++ b/packages/gnutls/gnutls.inc
@@ -9,7 +9,7 @@ SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/gnutls-${PV}.tar.bz2 \
file://onceonly.m4 \
file://gnutls-texinfo-euro.patch;patch=1"
-inherit autotools binconfig
+inherit autotools binconfig pkgconfig
EXTRA_OECONF="--with-included-opencdk --with-included-libtasn1"
@@ -25,6 +25,7 @@ do_stage() {
install -d ${STAGING_DATADIR}/aclocal
cp ${S}/lib/libgnutls.m4 ${STAGING_DATADIR}/aclocal/
+ cp ${S}/libextra/libgnutls-extra.m4 ${STAGING_DATADIR}/aclocal/
}
PACKAGES =+ "${PN}-openssl ${PN}-extra ${PN}-bin ${PN}-xx"
diff --git a/packages/gnutls/gnutls_1.4.4.bb b/packages/gnutls/gnutls_1.4.5.bb
index 3337e0b370..3337e0b370 100644
--- a/packages/gnutls/gnutls_1.4.4.bb
+++ b/packages/gnutls/gnutls_1.4.5.bb
diff --git a/packages/gnutls/gnutls_1.6.0.bb b/packages/gnutls/gnutls_1.6.0.bb
deleted file mode 100644
index 01e593f49d..0000000000
--- a/packages/gnutls/gnutls_1.6.0.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require gnutls.inc
-
-PR = "r2"
-
-do_configure_prepend() {
- sed -i "s/2.60/2.59/" ${S}/configure.in
-}
diff --git a/packages/gnutls/gnutls_1.6.2.bb b/packages/gnutls/gnutls_1.6.2.bb
new file mode 100644
index 0000000000..68077c0c5a
--- /dev/null
+++ b/packages/gnutls/gnutls_1.6.2.bb
@@ -0,0 +1,6 @@
+require gnutls.inc
+PR = "r1"
+
+do_configure_prepend() {
+ sed -i "s/2.60/2.59/" ${S}/configure.in
+}
diff --git a/packages/gob2/.mtn2git_empty b/packages/gob2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gob2/.mtn2git_empty
diff --git a/packages/gob2/gob2_2.0.14.bb b/packages/gob2/gob2_2.0.14.bb
new file mode 100644
index 0000000000..89f64d00e0
--- /dev/null
+++ b/packages/gob2/gob2_2.0.14.bb
@@ -0,0 +1,17 @@
+LICENSE = "LGPL"
+DESCRIPTION = "A library to make creating GObjects easier"
+HOMEPAGE = "http://www.5z.com/jirka/gob.html"
+SECTION = "libs"
+DEPENDS = "gtk+ bison flex"
+SRC_URI = "http://ftp.5z.com/pub/gob/gob2-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+do_compile_prepend() {
+ find ${S} -name Makefile | xargs sed -i 's~-I/usr/include~-I${STAGING_INCDIR}~g'
+ find ${S} -name Makefile | xargs sed -i 's~-I$(includedir)~-I${STAGING_INCDIR}~g'
+}
+
+do_stage_append() {
+ install -m 0644 ${S}/gob2.m4 ${STAGING_DATADIR}/aclocal
+}
diff --git a/packages/gpe-aerial/gpe-aerial_0.3.0.bb b/packages/gpe-aerial/gpe-aerial_0.3.0.bb
new file mode 100644
index 0000000000..9158305a80
--- /dev/null
+++ b/packages/gpe-aerial/gpe-aerial_0.3.0.bb
@@ -0,0 +1,11 @@
+inherit gpe autotools
+
+PR = "r0"
+DESCRIPTION = "GPE wireless LAN communication applet"
+DEPENDS = "gtk+ libgpewidget prismstumbler"
+RDEPENDS = "prismstumbler"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+GPE_TARBALL_SUFFIX = "bz2"
diff --git a/packages/gpe-aerial/gpe-aerial_svn.bb b/packages/gpe-aerial/gpe-aerial_svn.bb
new file mode 100644
index 0000000000..faa8b5c813
--- /dev/null
+++ b/packages/gpe-aerial/gpe-aerial_svn.bb
@@ -0,0 +1,16 @@
+inherit gpe autotools
+
+DESCRIPTION = "GPE wireless LAN communication applet"
+DEPENDS = "gtk+ libgpewidget prismstumbler"
+RDEPENDS = "prismstumbler"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+PR = "r0"
+PV = "0.3.0+svn${SRCDATE}"
+
+SRC_URI = "${GPE_EXTRA_SVN}"
+
+S = "${WORKDIR}/gpe-aerial"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-appmgr/files/svn-build.patch b/packages/gpe-appmgr/files/svn-build.patch
new file mode 100644
index 0000000000..ea1d67af6b
--- /dev/null
+++ b/packages/gpe-appmgr/files/svn-build.patch
@@ -0,0 +1,229 @@
+diff -Naur detect-stylus.orig/build/Makefile.dpkg_ipkg detect-stylus/build/Makefile.dpkg_ipkg
+--- detect-stylus.orig/build/Makefile.dpkg_ipkg 1970-01-01 02:00:00.000000000 +0200
++++ detect-stylus/build/Makefile.dpkg_ipkg 2007-02-10 17:21:40.154584782 +0200
+@@ -0,0 +1,114 @@
++## Please read the README in this directory to see how to use this
++## Makefile snippet
++
++# Let's use whatever clean target the specific app provides
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# URL to source tarball
++SOURCE = http://gpe.linuxtogo.org/download/source/$(PACKAGE)-$(VERSION).tar.gz
++
++# can change this to e.g. /var/tmp/deb
++DEB_PATH = ../deb
++
++ifeq ($(CVSBUILD),yes)
++LIBGPEWIDGET_PC = libgpewidget-uninstalled
++PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget
++else
++LIBGPEWIDGET_PC = libgpewidget
++endif
++
++ifeq ($(IN_LIBGPEWIDGET),)
++GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC))
++GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC))
++endif
++
++GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0)
++GTKLIBS = $(shell pkg-config --libs gtk+-2.0)
++
++STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
++STANDARD_CFLAGS = -MD -Wall
++
++ifeq ($(DEBUG),yes)
++CFLAGS += -O2 -g
++LDFLAGS = -g
++else
++CFLAGS += -Os -fomit-frame-pointer
++endif
++
++dist: check-source clean dist-prep
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ mkdir ../$(PACKAGE)-$(VERSION)
++ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -)
++ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile )
++ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz )
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ $(MAKE) printinfo
++
++dist-upload: dist
++ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@linuxtogo.org:/media/data/projects/gpe/source/
++
++dist-prep:
++ipkg-prep:
++install-mo:
++# empty, can be filled in Makefile.translation
++
++install: install-program install-mo
++
++clean-dist:
++ rm -rf familiar/dist familiar/dist.list
++
++clean: clean-dist
++
++check-source:
++ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi
++
++ipkg: check-source ipkg-prep clean
++ rm -rf familiar/dist
++ mkdir -p familiar/dist/CONTROL
++ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control
++ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi
++ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi
++ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi
++ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi
++ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi
++ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program
++ rm -rf familiar/dist.list
++ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list
++ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi
++ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch
++ rm -rf familiar/dist familiar/dist.list
++ $(MAKE) printinfo
++
++dpkg: dist
++ mkdir -p $(DEB_PATH)
++ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz )
++ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian
++ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done
++
++CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
++printinfo:
++ @printf '-------------------------------------------------------------------------------\n'
++ @printf "If this becomes a package release, please add a CVS tag.\n"
++ @printf "You can use 'make tag' for that, it will execute\n"
++ @printf " cvs tag %s\n" $(CVSTAG)
++ @printf "Please upload a tarball (created with 'make dist') to\n"
++ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n"
++ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n"
++ @printf "You can use 'make dist-upload' to do that.\n"
++ @printf "You are currently known as USER %s.\n" $(USER)
++ @printf '-------------------------------------------------------------------------------\n'
++
++tag: check-source
++ cvs tag $(CVSTAG)
++
++retag: check-source
++ cvs tag -F $(CVSTAG)
++
++source: tag dist-upload
++
++%.pc: %.pc.in
++ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@
++
++.c.o:;
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@
+diff -Naur detect-stylus.orig/build/Makefile.translation detect-stylus/build/Makefile.translation
+--- detect-stylus.orig/build/Makefile.translation 1970-01-01 02:00:00.000000000 +0200
++++ detect-stylus/build/Makefile.translation 2007-02-10 17:21:46.170927636 +0200
+@@ -0,0 +1,107 @@
++.SUFFIXES: .mo .po .pot .po8
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# use ipkg-build or ipkg-deb-build
++IPKG_BUILD := ipkg-build
++
++TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint
++
++ifeq ($(DIR_PO),)
++DIR_PO := po
++endif
++
++ifeq ($(BINPACKAGE),)
++BINPACKAGE := $(PACKAGE)
++endif
++
++mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS))
++po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++
++ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present)
++desktop-files += $(PACKAGE).desktop
++endif
++
++ifneq ($(EXTRA_DESKTOPS),)
++desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS))
++endif
++
++all-mo: $(mo-files)
++
++all-desktop: $(desktop-files)
++
++install-mo: all-mo
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ if [ "x$(LINGUAS)" != "x" ]; then \
++ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \
++ fi; \
++ fi;
++
++.po8.mo:;
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ msgfmt -o $@ $<; \
++ fi;
++
++.po.po8:;
++ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@
++
++update-po: $(po-files) extract-po
++
++dist-prep: update-po freshen-po
++# empty
++
++ifeq ($(CVSBUILD),yes)
++ipkg-prep: freshen-po
++# empty
++endif
++
++extract-po:
++ mkdir -p $(DIR_PO)
++ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi )
++ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi
++
++clean: clean-po clean-dist-translation
++
++clean-po:
++ rm -rf $(DIR_PO)/*.mo
++ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done
++
++%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++ intltool-merge -u -d $(DIR_PO) $< $@
++
++freshen-po:
++ rm -rf tmp-po
++ mkdir tmp-po
++ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done
++ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done
++ rm -rf tmp-po
++
++# ------------------------------------------------------------------------
++
++MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-)
++
++ifndef BUILD
++BUILD = ../build
++endif
++
++transdist := familiar/dist-translation
++templates := $(BUILD)/familiar
++ipkglist := translation-ipkgs.txt
++
++clean-dist-translation:
++ rm -rf $(transdist) $(ipkglist)
++
++real-translation-package: all-mo
++ rm -rf $(transdist) $(ipkglist)
++ for LINGUA in $(LINGUAS); do \
++ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \
++ mkdir -p $(transdist)/$$i/CONTROL; \
++ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \
++ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \
++ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \
++ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \
++ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \
++ done
++
++translation-ipkg:
++ make PREFIX=/usr real-translation-package
diff --git a/packages/gpe-appmgr/gpe-appmgr_svn.bb b/packages/gpe-appmgr/gpe-appmgr_svn.bb
new file mode 100644
index 0000000000..25492b1bc6
--- /dev/null
+++ b/packages/gpe-appmgr/gpe-appmgr_svn.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "GPE application launcher"
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "libgpewidget libgpelaunch cairo libxsettings-client"
+PV = "2.8+svn${SRCDATE}"
+PR = "r0"
+
+inherit gpe
+
+SRC_URI = "${GPE_SVN} \
+ file://svn-build.patch;patch=1"
+
+S = "${WORKDIR}/${PN}"
+
+export CVSBUILD="no"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-autostarter/gpe-autostarter-0.12/.mtn2git_empty b/packages/gpe-autostarter/gpe-autostarter-0.12/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpe-autostarter/gpe-autostarter-0.12/.mtn2git_empty
diff --git a/packages/gpe-autostarter/gpe-autostarter-0.12/wireless.patch b/packages/gpe-autostarter/gpe-autostarter-0.12/wireless.patch
new file mode 100644
index 0000000000..b375507ca8
--- /dev/null
+++ b/packages/gpe-autostarter/gpe-autostarter-0.12/wireless.patch
@@ -0,0 +1,12 @@
+--- gpe-autostarter-0.12/net.c.orig 2007-04-30 21:26:40.000000000 +0200
++++ gpe-autostarter-0.12/net.c 2007-04-30 21:33:20.000000000 +0200
+@@ -18,7 +18,9 @@
+ #include <locale.h>
+ #include <signal.h>
+
++#include <linux/types.h>
+ #include <sys/socket.h>
++#include <linux/if.h>
+ #include <linux/wireless.h>
+ #include <sys/ioctl.h>
+
diff --git a/packages/gpe-autostarter/gpe-autostarter_0.12.bb b/packages/gpe-autostarter/gpe-autostarter_0.12.bb
index f92b5df16b..c47f75797e 100644
--- a/packages/gpe-autostarter/gpe-autostarter_0.12.bb
+++ b/packages/gpe-autostarter/gpe-autostarter_0.12.bb
@@ -4,3 +4,5 @@ DEPENDS = "glib-2.0 dbus-glib hotplug-dbus virtual/libx11"
RDEPENDS = "hotplug-dbus"
inherit gpe
+
+SRC_URI += "file://wireless.patch;patch=1"
diff --git a/packages/gpe-autostarter/gpe-autostarter_svn.bb b/packages/gpe-autostarter/gpe-autostarter_svn.bb
new file mode 100644
index 0000000000..2742952e0f
--- /dev/null
+++ b/packages/gpe-autostarter/gpe-autostarter_svn.bb
@@ -0,0 +1,15 @@
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "glib-2.0 dbus-glib hotplug-dbus virtual/libx11"
+RDEPENDS = "hotplug-dbus"
+
+inherit gpe
+
+SRC_URI = "${GPE_SVN} \
+ file://svn-build.patch;patch=1"
+
+S = "${WORKDIR}/${PN}"
+
+export CVSBUILD="no"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-autostarter/svn-build.patch b/packages/gpe-autostarter/svn-build.patch
new file mode 100644
index 0000000000..ea1d67af6b
--- /dev/null
+++ b/packages/gpe-autostarter/svn-build.patch
@@ -0,0 +1,229 @@
+diff -Naur detect-stylus.orig/build/Makefile.dpkg_ipkg detect-stylus/build/Makefile.dpkg_ipkg
+--- detect-stylus.orig/build/Makefile.dpkg_ipkg 1970-01-01 02:00:00.000000000 +0200
++++ detect-stylus/build/Makefile.dpkg_ipkg 2007-02-10 17:21:40.154584782 +0200
+@@ -0,0 +1,114 @@
++## Please read the README in this directory to see how to use this
++## Makefile snippet
++
++# Let's use whatever clean target the specific app provides
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# URL to source tarball
++SOURCE = http://gpe.linuxtogo.org/download/source/$(PACKAGE)-$(VERSION).tar.gz
++
++# can change this to e.g. /var/tmp/deb
++DEB_PATH = ../deb
++
++ifeq ($(CVSBUILD),yes)
++LIBGPEWIDGET_PC = libgpewidget-uninstalled
++PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget
++else
++LIBGPEWIDGET_PC = libgpewidget
++endif
++
++ifeq ($(IN_LIBGPEWIDGET),)
++GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC))
++GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC))
++endif
++
++GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0)
++GTKLIBS = $(shell pkg-config --libs gtk+-2.0)
++
++STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
++STANDARD_CFLAGS = -MD -Wall
++
++ifeq ($(DEBUG),yes)
++CFLAGS += -O2 -g
++LDFLAGS = -g
++else
++CFLAGS += -Os -fomit-frame-pointer
++endif
++
++dist: check-source clean dist-prep
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ mkdir ../$(PACKAGE)-$(VERSION)
++ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -)
++ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile )
++ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz )
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ $(MAKE) printinfo
++
++dist-upload: dist
++ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@linuxtogo.org:/media/data/projects/gpe/source/
++
++dist-prep:
++ipkg-prep:
++install-mo:
++# empty, can be filled in Makefile.translation
++
++install: install-program install-mo
++
++clean-dist:
++ rm -rf familiar/dist familiar/dist.list
++
++clean: clean-dist
++
++check-source:
++ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi
++
++ipkg: check-source ipkg-prep clean
++ rm -rf familiar/dist
++ mkdir -p familiar/dist/CONTROL
++ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control
++ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi
++ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi
++ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi
++ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi
++ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi
++ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program
++ rm -rf familiar/dist.list
++ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list
++ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi
++ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch
++ rm -rf familiar/dist familiar/dist.list
++ $(MAKE) printinfo
++
++dpkg: dist
++ mkdir -p $(DEB_PATH)
++ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz )
++ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian
++ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done
++
++CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
++printinfo:
++ @printf '-------------------------------------------------------------------------------\n'
++ @printf "If this becomes a package release, please add a CVS tag.\n"
++ @printf "You can use 'make tag' for that, it will execute\n"
++ @printf " cvs tag %s\n" $(CVSTAG)
++ @printf "Please upload a tarball (created with 'make dist') to\n"
++ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n"
++ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n"
++ @printf "You can use 'make dist-upload' to do that.\n"
++ @printf "You are currently known as USER %s.\n" $(USER)
++ @printf '-------------------------------------------------------------------------------\n'
++
++tag: check-source
++ cvs tag $(CVSTAG)
++
++retag: check-source
++ cvs tag -F $(CVSTAG)
++
++source: tag dist-upload
++
++%.pc: %.pc.in
++ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@
++
++.c.o:;
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@
+diff -Naur detect-stylus.orig/build/Makefile.translation detect-stylus/build/Makefile.translation
+--- detect-stylus.orig/build/Makefile.translation 1970-01-01 02:00:00.000000000 +0200
++++ detect-stylus/build/Makefile.translation 2007-02-10 17:21:46.170927636 +0200
+@@ -0,0 +1,107 @@
++.SUFFIXES: .mo .po .pot .po8
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# use ipkg-build or ipkg-deb-build
++IPKG_BUILD := ipkg-build
++
++TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint
++
++ifeq ($(DIR_PO),)
++DIR_PO := po
++endif
++
++ifeq ($(BINPACKAGE),)
++BINPACKAGE := $(PACKAGE)
++endif
++
++mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS))
++po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++
++ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present)
++desktop-files += $(PACKAGE).desktop
++endif
++
++ifneq ($(EXTRA_DESKTOPS),)
++desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS))
++endif
++
++all-mo: $(mo-files)
++
++all-desktop: $(desktop-files)
++
++install-mo: all-mo
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ if [ "x$(LINGUAS)" != "x" ]; then \
++ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \
++ fi; \
++ fi;
++
++.po8.mo:;
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ msgfmt -o $@ $<; \
++ fi;
++
++.po.po8:;
++ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@
++
++update-po: $(po-files) extract-po
++
++dist-prep: update-po freshen-po
++# empty
++
++ifeq ($(CVSBUILD),yes)
++ipkg-prep: freshen-po
++# empty
++endif
++
++extract-po:
++ mkdir -p $(DIR_PO)
++ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi )
++ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi
++
++clean: clean-po clean-dist-translation
++
++clean-po:
++ rm -rf $(DIR_PO)/*.mo
++ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done
++
++%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++ intltool-merge -u -d $(DIR_PO) $< $@
++
++freshen-po:
++ rm -rf tmp-po
++ mkdir tmp-po
++ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done
++ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done
++ rm -rf tmp-po
++
++# ------------------------------------------------------------------------
++
++MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-)
++
++ifndef BUILD
++BUILD = ../build
++endif
++
++transdist := familiar/dist-translation
++templates := $(BUILD)/familiar
++ipkglist := translation-ipkgs.txt
++
++clean-dist-translation:
++ rm -rf $(transdist) $(ipkglist)
++
++real-translation-package: all-mo
++ rm -rf $(transdist) $(ipkglist)
++ for LINGUA in $(LINGUAS); do \
++ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \
++ mkdir -p $(transdist)/$$i/CONTROL; \
++ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \
++ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \
++ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \
++ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \
++ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \
++ done
++
++translation-ipkg:
++ make PREFIX=/usr real-translation-package
diff --git a/packages/gpe-beam/gpe-beam.inc b/packages/gpe-beam/gpe-beam.inc
new file mode 100644
index 0000000000..5ca6df0b03
--- /dev/null
+++ b/packages/gpe-beam/gpe-beam.inc
@@ -0,0 +1,5 @@
+DESCRIPTION = "GPE infrared communication applet"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libgpewidget libmimedir libgpevtype openobex irda-utils dbus-glib"
diff --git a/packages/gpe-beam/gpe-beam_0.2.3.bb b/packages/gpe-beam/gpe-beam_0.2.3.bb
index b009b10372..e5861f069a 100644
--- a/packages/gpe-beam/gpe-beam_0.2.3.bb
+++ b/packages/gpe-beam/gpe-beam_0.2.3.bb
@@ -1,7 +1,5 @@
-inherit gpe pkgconfig
-LICENSE = "GPL"
-DESCRIPTION = "GPE infrared communication applet"
-DEPENDS = "gtk+ libgpewidget libmimedir libgpevtype openobex"
+require ${PN}.inc
+
RDEPENDS = "libopenobex-1.0-1"
-SECTION = "gpe"
-PRIORITY = "optional"
+
+inherit gpe pkgconfig
diff --git a/packages/gpe-beam/gpe-beam_0.2.6.bb b/packages/gpe-beam/gpe-beam_0.2.6.bb
index 71af4db7e6..89f8e8230a 100644
--- a/packages/gpe-beam/gpe-beam_0.2.6.bb
+++ b/packages/gpe-beam/gpe-beam_0.2.6.bb
@@ -1,12 +1,8 @@
-PR = "r1"
-
-inherit gpe
+require ${PN}.inc
-DESCRIPTION = "GPE infrared communication applet"
-DEPENDS = "gtk+ libgpewidget libmimedir libgpevtype openobex irda-utils dbus-glib"
RDEPENDS = "libopenobex-1.0-1 irda-utils"
-SECTION = "gpe"
-PRIORITY = "optional"
-LICENSE = "GPL"
+PR = "r1"
SRC_URI += "file://vcard-send.patch;patch=1;pnum=0"
+
+inherit gpe
diff --git a/packages/gpe-beam/gpe-beam_0.2.7.bb b/packages/gpe-beam/gpe-beam_0.2.7.bb
index 51b99fcfc6..f19b64d933 100644
--- a/packages/gpe-beam/gpe-beam_0.2.7.bb
+++ b/packages/gpe-beam/gpe-beam_0.2.7.bb
@@ -1,12 +1,8 @@
-PR = "r1"
-
-inherit gpe
+require ${PN}.inc
-DESCRIPTION = "GPE infrared communication applet"
-DEPENDS = "gtk+ libgpewidget libmimedir libgpevtype openobex irda-utils dbus-glib"
RDEPENDS = "libopenobex-1.0-1 irda-utils"
-SECTION = "gpe"
-PRIORITY = "optional"
-LICENSE = "GPL"
+PR = "r1"
SRC_URI += "file://decl.patch;patch=1;pnum=0"
+
+inherit gpe
diff --git a/packages/gpe-beam/gpe-beam_0.2.8.bb b/packages/gpe-beam/gpe-beam_0.2.8.bb
index f68b50341a..9795827aa8 100644
--- a/packages/gpe-beam/gpe-beam_0.2.8.bb
+++ b/packages/gpe-beam/gpe-beam_0.2.8.bb
@@ -1,12 +1,7 @@
-PR = "r0"
+require ${PN}.inc
-inherit gpe
-
-DESCRIPTION = "GPE infrared communication applet"
-DEPENDS = "gtk+ libgpewidget libmimedir libgpevtype openobex irda-utils dbus-glib"
RDEPENDS = "irda-utils"
-SECTION = "gpe"
-PRIORITY = "optional"
-LICENSE = "GPL"
SRC_URI += "file://dbus-new-api.patch;patch=1"
+
+inherit gpe
diff --git a/packages/gpe-beam/gpe-beam_0.2.9.bb b/packages/gpe-beam/gpe-beam_0.2.9.bb
index 8275cf6c3a..b96bed4a2f 100644
--- a/packages/gpe-beam/gpe-beam_0.2.9.bb
+++ b/packages/gpe-beam/gpe-beam_0.2.9.bb
@@ -1,9 +1,6 @@
-DESCRIPTION = "GPE infrared communication applet"
-DEPENDS = "gtk+ libgpewidget libmimedir libgpevtype openobex irda-utils dbus-glib"
+require ${PN}.inc
+
RDEPENDS = "irda-utils"
-SECTION = "gpe"
-PRIORITY = "optional"
-LICENSE = "GPL"
inherit gpe
diff --git a/packages/gpe-bluetooth/gpe-bluetooth.inc b/packages/gpe-bluetooth/gpe-bluetooth.inc
new file mode 100644
index 0000000000..c258832c8b
--- /dev/null
+++ b/packages/gpe-bluetooth/gpe-bluetooth.inc
@@ -0,0 +1,11 @@
+DESCRIPTION = "GPE bluetooth support user interface tool."
+SECTION = "gpe"
+LICENSE = "GPL"
+PRIORITY = "optional"
+DEPENDS = "gtk+ libcontactsdb libdisplaymigration libgpewidget openobex libgpevtype bluez-libs sqlite dbus-glib libglade blueprobe bluez-utils-dbus"
+RDEPENDS = "bluez-utils-dbus blueprobe"
+
+GPE_TARBALL_SUFFIX= "bz2"
+inherit gpe autotools
+
+FILES_${PN} += '${datadir}/bluez-pin'
diff --git a/packages/gpe-bluetooth/gpe-bluetooth_0.49.bb b/packages/gpe-bluetooth/gpe-bluetooth_0.49.bb
index f3129fcf17..396beeb014 100644
--- a/packages/gpe-bluetooth/gpe-bluetooth_0.49.bb
+++ b/packages/gpe-bluetooth/gpe-bluetooth_0.49.bb
@@ -1,12 +1,3 @@
-LICENSE = "GPL"
-DESCRIPTION = "GPE bluetooth support"
-SECTION = "gpe"
-PRIORITY = "optional"
+require gpe-bluetooth.inc
DEPENDS = "gtk+ libdisplaymigration libgpewidget openobex libgpevtype bluez-libs sqlite dbus-glib libglade blueprobe bluez-utils-dbus libcontactsdb"
-RDEPENDS = "bluez-utils-dbus blueprobe"
-
-GPE_TARBALL_SUFFIX= "bz2"
-inherit gpe autotools
-
-FILES_${PN} += '${datadir}/bluez-pin'
diff --git a/packages/gpe-bluetooth/gpe-bluetooth_0.51.bb b/packages/gpe-bluetooth/gpe-bluetooth_0.51.bb
index 2eaa992955..98cdbc4b7f 100644
--- a/packages/gpe-bluetooth/gpe-bluetooth_0.51.bb
+++ b/packages/gpe-bluetooth/gpe-bluetooth_0.51.bb
@@ -1,16 +1,6 @@
-LICENSE = "GPL"
-DESCRIPTION = "GPE bluetooth support user interface tool."
-SECTION = "gpe"
-PRIORITY = "optional"
-PR = "r1"
+require gpe-bluetooth.inc
-DEPENDS = "gtk+ libcontactsdb libdisplaymigration libgpewidget openobex libgpevtype bluez-libs sqlite dbus-glib libglade blueprobe bluez-utils-dbus"
-RDEPENDS = "bluez-utils-dbus blueprobe"
-
-GPE_TARBALL_SUFFIX= "bz2"
-inherit gpe autotools
-
-FILES_${PN} += '${datadir}/bluez-pin'
+PR = "r1"
do_configure () {
autotools_do_configure
diff --git a/packages/gpe-bluetooth/gpe-bluetooth_0.52.bb b/packages/gpe-bluetooth/gpe-bluetooth_0.52.bb
index 7720647cf8..66bc3f0b24 100644
--- a/packages/gpe-bluetooth/gpe-bluetooth_0.52.bb
+++ b/packages/gpe-bluetooth/gpe-bluetooth_0.52.bb
@@ -1,13 +1 @@
-LICENSE = "GPL"
-DESCRIPTION = "GPE bluetooth support user interface tool."
-SECTION = "gpe"
-PRIORITY = "optional"
-PR = "r0"
-
-DEPENDS = "gtk+ libcontactsdb libdisplaymigration libgpewidget openobex libgpevtype bluez-libs sqlite dbus-glib libglade blueprobe bluez-utils-dbus"
-RDEPENDS = "bluez-utils-dbus blueprobe"
-
-GPE_TARBALL_SUFFIX= "bz2"
-inherit gpe autotools
-
-FILES_${PN} += '${datadir}/bluez-pin'
+require gpe-bluetooth.inc
diff --git a/packages/gpe-bluetooth/gpe-bluetooth_0.53.bb b/packages/gpe-bluetooth/gpe-bluetooth_0.53.bb
index 7720647cf8..66bc3f0b24 100644
--- a/packages/gpe-bluetooth/gpe-bluetooth_0.53.bb
+++ b/packages/gpe-bluetooth/gpe-bluetooth_0.53.bb
@@ -1,13 +1 @@
-LICENSE = "GPL"
-DESCRIPTION = "GPE bluetooth support user interface tool."
-SECTION = "gpe"
-PRIORITY = "optional"
-PR = "r0"
-
-DEPENDS = "gtk+ libcontactsdb libdisplaymigration libgpewidget openobex libgpevtype bluez-libs sqlite dbus-glib libglade blueprobe bluez-utils-dbus"
-RDEPENDS = "bluez-utils-dbus blueprobe"
-
-GPE_TARBALL_SUFFIX= "bz2"
-inherit gpe autotools
-
-FILES_${PN} += '${datadir}/bluez-pin'
+require gpe-bluetooth.inc
diff --git a/packages/gpe-bluetooth/gpe-bluetooth_0.54.bb b/packages/gpe-bluetooth/gpe-bluetooth_0.54.bb
index 24d3ff48ce..9164cc4088 100644
--- a/packages/gpe-bluetooth/gpe-bluetooth_0.54.bb
+++ b/packages/gpe-bluetooth/gpe-bluetooth_0.54.bb
@@ -1,16 +1,6 @@
-LICENSE = "GPL"
-DESCRIPTION = "GPE bluetooth support user interface tool."
-SECTION = "gpe"
-PRIORITY = "optional"
-PR = "r1"
+require gpe-bluetooth.inc
-DEPENDS = "gtk+ libcontactsdb libdisplaymigration libgpewidget openobex libgpevtype bluez-libs sqlite dbus-glib libglade blueprobe bluez-utils-dbus"
-RDEPENDS = "bluez-utils-dbus blueprobe"
-
-GPE_TARBALL_SUFFIX= "bz2"
-inherit gpe autotools
+PR = "r1"
SRC_URI += "file://hciattach-bts.patch;patch=1 \
file://include-sdp_lib.patch;patch=1"
-
-FILES_${PN} += '${datadir}/bluez-pin'
diff --git a/packages/gpe-bootsplash/files/angstrom/splash-l.svg b/packages/gpe-bootsplash/files/angstrom/splash-l.svg
index 9aad9bbf6e..5af0402cb9 100644
--- a/packages/gpe-bootsplash/files/angstrom/splash-l.svg
+++ b/packages/gpe-bootsplash/files/angstrom/splash-l.svg
@@ -7,16 +7,16 @@
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="841.88977pt"
height="595.27557pt"
id="svg2"
sodipodi:version="0.32"
- inkscape:version="0.43"
+ inkscape:version="0.43+0.44pre4"
version="1.0"
- sodipodi:docbase="/Users/koen/Projects/Ångström"
- sodipodi:docname="angstrom-background.svg"
+ sodipodi:docbase="J:\"
+ sodipodi:docname="foo.svg"
inkscape:export-filename="/Users/koen/Projects/Ångström/angstrom-background.png"
inkscape:export-xdpi="55.049999"
inkscape:export-ydpi="55.049999">
@@ -150,7 +150,7 @@
fx="202.1609"
fy="581.95923"
r="161.44482"
- gradientTransform="matrix(0.404735,2.39512e-7,-2.549551e-7,0.430831,83.00297,330.5175)"
+ gradientTransform="matrix(0.404735,2.39512e-7,-2.549551e-7,0.430831,83.00297,226.5175)"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
@@ -162,13 +162,13 @@
inkscape:pageshadow="2"
inkscape:zoom="0.57230612"
inkscape:cx="596.83002"
- inkscape:cy="32.789024"
+ inkscape:cy="104.03094"
inkscape:document-units="px"
inkscape:current-layer="layer1"
inkscape:window-width="989"
inkscape:window-height="622"
- inkscape:window-x="0"
- inkscape:window-y="22" />
+ inkscape:window-x="121"
+ inkscape:window-y="262" />
<metadata
id="metadata7">
<rdf:RDF>
@@ -205,24 +205,24 @@
xml:space="preserve"
style="font-size:66.54315948px;font-style:normal;font-weight:normal;fill:#3d74c0;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
id="text2249"
- y="813.42664"
+ y="709.42664"
x="555.96344"><tspan
id="tspan2251"
- y="813.42664"
+ y="709.42664"
x="555.96344"
sodipodi:role="line">Embedded power</tspan></text>
<path
style="fill:url(#radialGradient3311);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 166.00737,492.46796 L 7.4907863,757.45093 L 322.15804,757.45093 L 166.00737,492.46796 z "
+ d="M 166.00737,388.46796 L 7.4907863,653.45093 L 322.15804,653.45093 L 166.00737,388.46796 z "
id="path1449"
sodipodi:nodetypes="cccc" />
<path
style="font-size:114.39354706px;font-style:normal;font-weight:normal;fill:#fb8900;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
- d="M 331.08665,757.03785 L 316.38285,757.03785 L 316.38285,707.29524 C 316.38279,703.28042 316.14814,699.52625 315.67894,696.03274 C 315.2096,692.48722 314.34928,689.72373 313.09796,687.74229 C 311.79435,685.55245 309.91728,683.93606 307.46673,682.89317 C 305.01602,681.79829 301.83541,681.25082 297.92489,681.25073 C 293.90997,681.25082 289.71261,682.24148 285.3328,684.22278 C 280.95291,686.2042 276.75556,688.73305 272.74072,691.80931 L 272.74072,757.03785 L 258.03691,757.03785 L 258.03691,669.67541 L 272.74072,669.67541 L 272.74072,679.37364 C 277.3291,675.56742 282.07395,672.59538 286.97526,670.45752 C 291.87647,668.31982 296.90809,667.25092 302.07012,667.25083 C 311.50758,667.25092 318.70306,670.09262 323.65655,675.77592 C 328.60986,681.45938 331.08656,689.64552 331.08665,700.33438 L 331.08665,757.03785 M 430.57191,747.10497 C 430.57182,761.91304 427.20873,772.78446 420.48261,779.71925 C 413.75633,786.65399 403.40632,790.12136 389.43256,790.1214 C 384.79197,790.12136 380.25569,789.78245 375.82374,789.10466 C 371.44386,788.47892 367.11614,787.56647 362.84058,786.36725 L 362.84058,771.35058 L 363.62272,771.35058 C 366.02118,772.28912 369.82748,773.43622 375.04161,774.7919 C 380.25569,776.19969 385.46979,776.90361 390.68394,776.90362 C 395.68945,776.90361 399.83467,776.30399 403.11962,775.10475 C 406.40443,773.9055 408.95935,772.23698 410.78435,770.09921 C 412.60922,768.06569 413.91276,765.61506 414.69494,762.74732 C 415.47697,759.87954 415.86804,756.67288 415.86811,753.12726 L 415.86811,745.14969 C 411.43605,748.69529 407.18656,751.35448 403.11962,753.12726 C 399.10468,754.84792 393.9688,755.70825 387.71191,755.70825 C 377.28364,755.70825 368.99322,751.9541 362.84058,744.44577 C 356.74005,736.88532 353.68981,726.24855 353.68983,712.53541 C 353.68981,705.02713 354.73264,698.56165 356.81828,693.1389 C 358.95606,687.66414 361.84989,682.94539 365.4998,678.98259 C 368.88893,675.28065 373.00807,672.4129 377.85723,670.3793 C 382.70632,668.29374 387.52937,667.25092 392.3264,667.25083 C 397.38404,667.25092 401.60746,667.77235 404.99669,668.81508 C 408.43794,669.80585 412.06174,671.344 415.86811,673.42955 L 416.80667,669.67541 L 430.57191,669.67541 L 430.57191,747.10497 M 415.86811,733.02687 L 415.86811,685.39594 C 411.95746,683.62323 408.30757,682.37184 404.91847,681.64178 C 401.58139,680.85975 398.24437,680.46869 394.90739,680.46862 C 386.82548,680.46869 380.46426,683.18002 375.82374,688.60263 C 371.18314,694.02537 368.86288,701.89866 368.86289,712.22255 C 368.86288,722.02513 370.58353,729.45523 374.02485,734.51289 C 377.46613,739.5706 383.17559,742.09945 391.15322,742.09942 C 395.42873,742.09945 399.70432,741.29127 403.97994,739.67486 C 408.30757,738.00637 412.27031,735.79036 415.86811,733.02687 M 522.236,731.85368 C 522.23595,739.8313 518.92498,746.37502 512.30312,751.48481 C 505.7333,756.59466 496.73895,759.14957 485.3201,759.14957 C 478.85456,759.14957 472.91049,758.39354 467.48784,756.88143 C 462.11728,755.3172 457.60708,753.62261 453.95721,751.79768 L 453.95721,735.295 L 454.73932,735.295 C 459.37988,738.78848 464.54185,741.57803 470.22524,743.66366 C 475.90859,745.69718 481.35733,746.71392 486.57149,746.71391 C 493.03694,746.71392 498.09462,745.6711 501.74454,743.58544 C 505.39436,741.49982 507.2193,738.21493 507.21937,733.73077 C 507.2193,730.28948 506.22863,727.68243 504.24733,725.9096 C 502.26591,724.13684 498.4596,722.62475 492.82843,721.37333 C 490.74274,720.90409 488.00534,720.35662 484.6162,719.73088 C 481.27914,719.10522 478.22887,718.42741 475.46543,717.69737 C 467.80066,715.66392 462.35192,712.69187 459.11917,708.78124 C 455.93857,704.81856 454.34826,699.96946 454.34827,694.23387 C 454.34826,690.6362 455.07824,687.24702 456.5382,684.06636 C 458.05026,680.88582 460.31841,678.04412 463.34262,675.54128 C 466.26249,673.09073 469.96451,671.16151 474.44867,669.75361 C 478.98492,668.29374 484.04259,667.56378 489.62175,667.56368 C 494.8358,667.56378 500.10204,668.21554 505.42052,669.51898 C 510.79098,670.77044 515.24903,672.30861 518.79471,674.13348 L 518.79471,689.85402 L 518.01258,689.85402 C 514.25836,687.09061 509.69601,684.77031 504.32554,682.89317 C 498.95495,680.96403 493.6887,679.99942 488.52678,679.99934 C 483.15621,679.99942 478.61993,681.04225 474.91795,683.12781 C 471.21591,685.16137 469.3649,688.21164 469.36492,692.27857 C 469.3649,695.87638 470.48594,698.58772 472.72801,700.41259 C 474.91793,702.23759 478.4635,703.7236 483.3648,704.87065 C 486.07611,705.4964 489.10029,706.1221 492.43736,706.74773 C 495.82649,707.37349 498.6421,707.94702 500.88422,708.46839 C 507.71465,710.03269 512.98089,712.71794 516.68299,716.5242 C 520.38493,720.3827 522.23595,725.4925 522.236,731.85368 M 588.71596,756.25573 C 585.95242,756.98572 582.92825,757.58534 579.64339,758.0546 C 576.41061,758.52389 573.51678,758.75851 570.9619,758.75851 C 562.04573,758.75851 555.2674,756.36003 550.62686,751.56304 C 545.98629,746.76607 543.66601,739.07525 543.66602,728.49058 L 543.66602,682.03284 L 533.73313,682.03284 L 533.73313,669.67541 L 543.66602,669.67541 L 543.66602,644.56945 L 558.36982,644.56945 L 558.36982,669.67541 L 588.71596,669.67541 L 588.71596,682.03284 L 558.36982,682.03284 L 558.36982,721.84259 C 558.36979,726.43105 558.47406,730.02878 558.68269,732.6358 C 558.8912,735.19074 559.62118,737.58924 560.87259,739.83128 C 562.01966,741.91694 563.5839,743.4551 565.56529,744.44577 C 567.59877,745.38432 570.6751,745.85359 574.79428,745.85358 C 577.19271,745.85359 579.6955,745.51469 582.30261,744.83684 C 584.9096,744.10688 586.78669,743.50726 587.93384,743.03796 L 588.71596,743.03796 L 588.71596,756.25573 M 661.06174,685.7088 L 660.27962,685.7088 C 658.08963,685.18745 655.95184,684.82248 653.86627,684.61383 C 651.8327,684.35319 649.40813,684.22284 646.59257,684.22278 C 642.05625,684.22284 637.67641,685.2396 633.45301,687.27303 C 629.22954,689.25445 625.16254,691.83545 621.25198,695.01599 L 621.25198,757.03785 L 606.54819,757.03785 L 606.54819,669.67541 L 621.25198,669.67541 L 621.25198,682.58033 C 627.09175,677.88771 632.22766,674.57674 636.65969,672.64744 C 641.14379,670.66618 645.70611,669.67549 650.34674,669.67541 C 652.90159,669.67549 654.7526,669.75369 655.89977,669.91004 C 657.04681,670.0144 658.76746,670.24904 661.06174,670.61394 L 661.06174,685.7088 M 749.51916,713.39574 C 749.51908,727.63028 745.8692,738.86669 738.56953,747.10497 C 731.26969,755.34327 721.49325,759.46241 709.24014,759.46243 C 696.88266,759.46241 687.05407,755.34327 679.75433,747.10497 C 672.50671,738.86669 668.8829,727.63028 668.8829,713.39574 C 668.8829,699.16126 672.50671,687.92486 679.75433,679.68648 C 687.05407,671.39615 696.88266,667.25092 709.24014,667.25083 C 721.49325,667.25092 731.26969,671.39615 738.56953,679.68648 C 745.8692,687.92486 749.51908,699.16126 749.51916,713.39574 M 734.34608,713.39574 C 734.34601,702.08116 732.13002,693.68646 727.69809,688.21158 C 723.26603,682.68469 717.11339,679.92121 709.24014,679.92113 C 701.26251,679.92121 695.05773,682.68469 690.62576,688.21158 C 686.24589,693.68646 684.05594,702.08116 684.05597,713.39574 C 684.05594,724.34541 686.27196,732.6619 690.70397,738.34527 C 695.13594,743.97652 701.31465,746.79215 709.24014,746.79214 C 717.06125,746.79215 723.18783,744.00258 727.6199,738.42347 C 732.10396,732.79225 734.34601,724.44968 734.34608,713.39574 M 733.17291,655.04982 L 717.60879,655.04982 L 717.60879,639.79852 L 733.17291,639.79852 L 733.17291,655.04982 M 700.87149,655.04982 L 685.30736,655.04982 L 685.30736,639.79852 L 700.87149,639.79852 L 700.87149,655.04982 M 899.84206,757.03785 L 885.13827,757.03785 L 885.13827,707.29524 C 885.13814,703.5411 884.95566,699.91729 884.59078,696.4238 C 884.27781,692.9304 883.5739,690.14087 882.47907,688.05514 C 881.2797,685.81313 879.55903,684.11856 877.3171,682.97139 C 875.07491,681.82436 871.84216,681.25082 867.61885,681.25073 C 863.49959,681.25082 859.38045,682.29363 855.2614,684.37919 C 851.14215,686.41277 847.02301,689.01983 842.90396,692.20035 C 843.0603,693.39968 843.19063,694.80748 843.29501,696.4238 C 843.39919,697.9881 843.45134,699.55232 843.45143,701.11649 L 843.45143,757.03785 L 828.74763,757.03785 L 828.74763,707.29524 C 828.74757,703.43684 828.56507,699.78697 828.20015,696.34559 C 827.88724,692.85221 827.18334,690.06264 826.08843,687.97693 C 824.88912,685.73495 823.16846,684.06642 820.92647,682.97139 C 818.68433,681.82436 815.45159,681.25082 811.22823,681.25073 C 807.21332,681.25082 803.17236,682.24148 799.10541,684.22278 C 795.0905,686.2042 791.07564,688.73305 787.0608,691.80931 L 787.0608,757.03785 L 772.357,757.03785 L 772.357,669.67541 L 787.0608,669.67541 L 787.0608,679.37364 C 791.64918,675.56742 796.21153,672.59538 800.74784,670.45752 C 805.33623,668.31982 810.21143,667.25092 815.37344,667.25083 C 821.31745,667.25092 826.34907,668.50231 830.46829,671.00501 C 834.6395,673.50785 837.74191,676.97524 839.77548,681.40713 C 845.71948,676.40168 851.14215,672.80396 856.04351,670.61394 C 860.94467,668.37196 866.18487,667.25092 871.76407,667.25083 C 881.3579,667.25092 888.42303,670.17083 892.95943,676.01055 C 897.54771,681.79829 899.84193,689.90623 899.84206,700.33438 L 899.84206,757.03785"
+ d="M 331.08665,653.03785 L 316.38285,653.03785 L 316.38285,603.29524 C 316.38279,599.28042 316.14814,595.52625 315.67894,592.03274 C 315.2096,588.48722 314.34928,585.72373 313.09796,583.74229 C 311.79435,581.55245 309.91728,579.93606 307.46673,578.89317 C 305.01602,577.79829 301.83541,577.25082 297.92489,577.25073 C 293.90997,577.25082 289.71261,578.24148 285.3328,580.22278 C 280.95291,582.2042 276.75556,584.73305 272.74072,587.80931 L 272.74072,653.03785 L 258.03691,653.03785 L 258.03691,565.67541 L 272.74072,565.67541 L 272.74072,575.37364 C 277.3291,571.56742 282.07395,568.59538 286.97526,566.45752 C 291.87647,564.31982 296.90809,563.25092 302.07012,563.25083 C 311.50758,563.25092 318.70306,566.09262 323.65655,571.77592 C 328.60986,577.45938 331.08656,585.64552 331.08665,596.33438 L 331.08665,653.03785 M 430.57191,643.10497 C 430.57182,657.91304 427.20873,668.78446 420.48261,675.71925 C 413.75633,682.65399 403.40632,686.12136 389.43256,686.1214 C 384.79197,686.12136 380.25569,685.78245 375.82374,685.10466 C 371.44386,684.47892 367.11614,683.56647 362.84058,682.36725 L 362.84058,667.35058 L 363.62272,667.35058 C 366.02118,668.28912 369.82748,669.43622 375.04161,670.7919 C 380.25569,672.19969 385.46979,672.90361 390.68394,672.90362 C 395.68945,672.90361 399.83467,672.30399 403.11962,671.10475 C 406.40443,669.9055 408.95935,668.23698 410.78435,666.09921 C 412.60922,664.06569 413.91276,661.61506 414.69494,658.74732 C 415.47697,655.87954 415.86804,652.67288 415.86811,649.12726 L 415.86811,641.14969 C 411.43605,644.69529 407.18656,647.35448 403.11962,649.12726 C 399.10468,650.84792 393.9688,651.70825 387.71191,651.70825 C 377.28364,651.70825 368.99322,647.9541 362.84058,640.44577 C 356.74005,632.88532 353.68981,622.24855 353.68983,608.53541 C 353.68981,601.02713 354.73264,594.56165 356.81828,589.1389 C 358.95606,583.66414 361.84989,578.94539 365.4998,574.98259 C 368.88893,571.28065 373.00807,568.4129 377.85723,566.3793 C 382.70632,564.29374 387.52937,563.25092 392.3264,563.25083 C 397.38404,563.25092 401.60746,563.77235 404.99669,564.81508 C 408.43794,565.80585 412.06174,567.344 415.86811,569.42955 L 416.80667,565.67541 L 430.57191,565.67541 L 430.57191,643.10497 M 415.86811,629.02687 L 415.86811,581.39594 C 411.95746,579.62323 408.30757,578.37184 404.91847,577.64178 C 401.58139,576.85975 398.24437,576.46869 394.90739,576.46862 C 386.82548,576.46869 380.46426,579.18002 375.82374,584.60263 C 371.18314,590.02537 368.86288,597.89866 368.86289,608.22255 C 368.86288,618.02513 370.58353,625.45523 374.02485,630.51289 C 377.46613,635.5706 383.17559,638.09945 391.15322,638.09942 C 395.42873,638.09945 399.70432,637.29127 403.97994,635.67486 C 408.30757,634.00637 412.27031,631.79036 415.86811,629.02687 M 522.236,627.85368 C 522.23595,635.8313 518.92498,642.37502 512.30312,647.48481 C 505.7333,652.59466 496.73895,655.14957 485.3201,655.14957 C 478.85456,655.14957 472.91049,654.39354 467.48784,652.88143 C 462.11728,651.3172 457.60708,649.62261 453.95721,647.79768 L 453.95721,631.295 L 454.73932,631.295 C 459.37988,634.78848 464.54185,637.57803 470.22524,639.66366 C 475.90859,641.69718 481.35733,642.71392 486.57149,642.71391 C 493.03694,642.71392 498.09462,641.6711 501.74454,639.58544 C 505.39436,637.49982 507.2193,634.21493 507.21937,629.73077 C 507.2193,626.28948 506.22863,623.68243 504.24733,621.9096 C 502.26591,620.13684 498.4596,618.62475 492.82843,617.37333 C 490.74274,616.90409 488.00534,616.35662 484.6162,615.73088 C 481.27914,615.10522 478.22887,614.42741 475.46543,613.69737 C 467.80066,611.66392 462.35192,608.69187 459.11917,604.78124 C 455.93857,600.81856 454.34826,595.96946 454.34827,590.23387 C 454.34826,586.6362 455.07824,583.24702 456.5382,580.06636 C 458.05026,576.88582 460.31841,574.04412 463.34262,571.54128 C 466.26249,569.09073 469.96451,567.16151 474.44867,565.75361 C 478.98492,564.29374 484.04259,563.56378 489.62175,563.56368 C 494.8358,563.56378 500.10204,564.21554 505.42052,565.51898 C 510.79098,566.77044 515.24903,568.30861 518.79471,570.13348 L 518.79471,585.85402 L 518.01258,585.85402 C 514.25836,583.09061 509.69601,580.77031 504.32554,578.89317 C 498.95495,576.96403 493.6887,575.99942 488.52678,575.99934 C 483.15621,575.99942 478.61993,577.04225 474.91795,579.12781 C 471.21591,581.16137 469.3649,584.21164 469.36492,588.27857 C 469.3649,591.87638 470.48594,594.58772 472.72801,596.41259 C 474.91793,598.23759 478.4635,599.7236 483.3648,600.87065 C 486.07611,601.4964 489.10029,602.1221 492.43736,602.74773 C 495.82649,603.37349 498.6421,603.94702 500.88422,604.46839 C 507.71465,606.03269 512.98089,608.71794 516.68299,612.5242 C 520.38493,616.3827 522.23595,621.4925 522.236,627.85368 M 588.71596,652.25573 C 585.95242,652.98572 582.92825,653.58534 579.64339,654.0546 C 576.41061,654.52389 573.51678,654.75851 570.9619,654.75851 C 562.04573,654.75851 555.2674,652.36003 550.62686,647.56304 C 545.98629,642.76607 543.66601,635.07525 543.66602,624.49058 L 543.66602,578.03284 L 533.73313,578.03284 L 533.73313,565.67541 L 543.66602,565.67541 L 543.66602,540.56945 L 558.36982,540.56945 L 558.36982,565.67541 L 588.71596,565.67541 L 588.71596,578.03284 L 558.36982,578.03284 L 558.36982,617.84259 C 558.36979,622.43105 558.47406,626.02878 558.68269,628.6358 C 558.8912,631.19074 559.62118,633.58924 560.87259,635.83128 C 562.01966,637.91694 563.5839,639.4551 565.56529,640.44577 C 567.59877,641.38432 570.6751,641.85359 574.79428,641.85358 C 577.19271,641.85359 579.6955,641.51469 582.30261,640.83684 C 584.9096,640.10688 586.78669,639.50726 587.93384,639.03796 L 588.71596,639.03796 L 588.71596,652.25573 M 661.06174,581.7088 L 660.27962,581.7088 C 658.08963,581.18745 655.95184,580.82248 653.86627,580.61383 C 651.8327,580.35319 649.40813,580.22284 646.59257,580.22278 C 642.05625,580.22284 637.67641,581.2396 633.45301,583.27303 C 629.22954,585.25445 625.16254,587.83545 621.25198,591.01599 L 621.25198,653.03785 L 606.54819,653.03785 L 606.54819,565.67541 L 621.25198,565.67541 L 621.25198,578.58033 C 627.09175,573.88771 632.22766,570.57674 636.65969,568.64744 C 641.14379,566.66618 645.70611,565.67549 650.34674,565.67541 C 652.90159,565.67549 654.7526,565.75369 655.89977,565.91004 C 657.04681,566.0144 658.76746,566.24904 661.06174,566.61394 L 661.06174,581.7088 M 749.51916,609.39574 C 749.51908,623.63028 745.8692,634.86669 738.56953,643.10497 C 731.26969,651.34327 721.49325,655.46241 709.24014,655.46243 C 696.88266,655.46241 687.05407,651.34327 679.75433,643.10497 C 672.50671,634.86669 668.8829,623.63028 668.8829,609.39574 C 668.8829,595.16126 672.50671,583.92486 679.75433,575.68648 C 687.05407,567.39615 696.88266,563.25092 709.24014,563.25083 C 721.49325,563.25092 731.26969,567.39615 738.56953,575.68648 C 745.8692,583.92486 749.51908,595.16126 749.51916,609.39574 M 734.34608,609.39574 C 734.34601,598.08116 732.13002,589.68646 727.69809,584.21158 C 723.26603,578.68469 717.11339,575.92121 709.24014,575.92113 C 701.26251,575.92121 695.05773,578.68469 690.62576,584.21158 C 686.24589,589.68646 684.05594,598.08116 684.05597,609.39574 C 684.05594,620.34541 686.27196,628.6619 690.70397,634.34527 C 695.13594,639.97652 701.31465,642.79215 709.24014,642.79214 C 717.06125,642.79215 723.18783,640.00258 727.6199,634.42347 C 732.10396,628.79225 734.34601,620.44968 734.34608,609.39574 M 733.17291,551.04982 L 717.60879,551.04982 L 717.60879,535.79852 L 733.17291,535.79852 L 733.17291,551.04982 M 700.87149,551.04982 L 685.30736,551.04982 L 685.30736,535.79852 L 700.87149,535.79852 L 700.87149,551.04982 M 899.84206,653.03785 L 885.13827,653.03785 L 885.13827,603.29524 C 885.13814,599.5411 884.95566,595.91729 884.59078,592.4238 C 884.27781,588.9304 883.5739,586.14087 882.47907,584.05514 C 881.2797,581.81313 879.55903,580.11856 877.3171,578.97139 C 875.07491,577.82436 871.84216,577.25082 867.61885,577.25073 C 863.49959,577.25082 859.38045,578.29363 855.2614,580.37919 C 851.14215,582.41277 847.02301,585.01983 842.90396,588.20035 C 843.0603,589.39968 843.19063,590.80748 843.29501,592.4238 C 843.39919,593.9881 843.45134,595.55232 843.45143,597.11649 L 843.45143,653.03785 L 828.74763,653.03785 L 828.74763,603.29524 C 828.74757,599.43684 828.56507,595.78697 828.20015,592.34559 C 827.88724,588.85221 827.18334,586.06264 826.08843,583.97693 C 824.88912,581.73495 823.16846,580.06642 820.92647,578.97139 C 818.68433,577.82436 815.45159,577.25082 811.22823,577.25073 C 807.21332,577.25082 803.17236,578.24148 799.10541,580.22278 C 795.0905,582.2042 791.07564,584.73305 787.0608,587.80931 L 787.0608,653.03785 L 772.357,653.03785 L 772.357,565.67541 L 787.0608,565.67541 L 787.0608,575.37364 C 791.64918,571.56742 796.21153,568.59538 800.74784,566.45752 C 805.33623,564.31982 810.21143,563.25092 815.37344,563.25083 C 821.31745,563.25092 826.34907,564.50231 830.46829,567.00501 C 834.6395,569.50785 837.74191,572.97524 839.77548,577.40713 C 845.71948,572.40168 851.14215,568.80396 856.04351,566.61394 C 860.94467,564.37196 866.18487,563.25092 871.76407,563.25083 C 881.3579,563.25092 888.42303,566.17083 892.95943,572.01055 C 897.54771,577.79829 899.84193,585.90623 899.84206,596.33438 L 899.84206,653.03785"
id="text1367" />
<path
style="font-size:191.88253784px;font-style:normal;font-weight:normal;fill:#fb8900;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
- d="M 235.46782,757.54586 L 213.81376,757.54586 L 198.62512,714.95612 L 132.94458,714.95612 L 117.75596,757.54586 L 97.128158,757.54586 L 150.39096,613.15128 C 144.30178,610.14107 139.40997,605.9334 135.71549,600.52828 C 132.08933,595.05507 130.27628,588.82912 130.27632,581.85038 C 130.27628,572.0669 133.76555,563.85683 140.74414,557.22018 C 147.72266,550.58391 156.20638,547.26568 166.19536,547.26546 C 176.25261,547.26568 184.73633,550.58391 191.64658,557.22018 C 198.62502,563.85683 202.11431,572.0669 202.11442,581.85038 C 202.11431,588.69227 200.30124,594.91824 196.67524,600.52828 C 193.11745,606.07024 188.29404,610.2779 182.20499,613.15128 L 235.46782,757.54586 M 186.72052,582.05564 C 186.72044,576.17193 184.77056,571.28011 180.87085,567.38014 C 176.97098,563.41213 172.07916,561.42804 166.19536,561.42783 C 160.31141,561.42804 155.41958,563.41213 151.51985,567.38014 C 147.62002,571.34852 145.67014,576.24035 145.67018,582.05564 C 145.67014,587.93968 147.62002,592.86573 151.51985,596.83376 C 155.48799,600.73369 160.37982,602.68359 166.19536,602.68344 C 172.07916,602.68359 176.97098,600.73369 180.87085,596.83376 C 184.77056,592.86573 186.72044,587.93968 186.72052,582.05564 M 192.26233,697.50973 L 165.78485,624.13223 L 139.20476,697.50973 L 192.26233,697.50973"
+ d="M 235.46782,653.54586 L 213.81376,653.54586 L 198.62512,610.95612 L 132.94458,610.95612 L 117.75596,653.54586 L 97.128158,653.54586 L 150.39096,509.15128 C 144.30178,506.14107 139.40997,501.9334 135.71549,496.52828 C 132.08933,491.05507 130.27628,484.82912 130.27632,477.85038 C 130.27628,468.0669 133.76555,459.85683 140.74414,453.22018 C 147.72266,446.58391 156.20638,443.26568 166.19536,443.26546 C 176.25261,443.26568 184.73633,446.58391 191.64658,453.22018 C 198.62502,459.85683 202.11431,468.0669 202.11442,477.85038 C 202.11431,484.69227 200.30124,490.91824 196.67524,496.52828 C 193.11745,502.07024 188.29404,506.2779 182.20499,509.15128 L 235.46782,653.54586 M 186.72052,478.05564 C 186.72044,472.17193 184.77056,467.28011 180.87085,463.38014 C 176.97098,459.41213 172.07916,457.42804 166.19536,457.42783 C 160.31141,457.42804 155.41958,459.41213 151.51985,463.38014 C 147.62002,467.34852 145.67014,472.24035 145.67018,478.05564 C 145.67014,483.93968 147.62002,488.86573 151.51985,492.83376 C 155.48799,496.73369 160.37982,498.68359 166.19536,498.68344 C 172.07916,498.68359 176.97098,496.73369 180.87085,492.83376 C 184.77056,488.86573 186.72044,483.93968 186.72052,478.05564 M 192.26233,593.50973 L 165.78485,520.13223 L 139.20476,593.50973 L 192.26233,593.50973"
id="text1330" />
</g>
</svg>
diff --git a/packages/gpe-bootsplash/files/angstrom/splash-p.svg b/packages/gpe-bootsplash/files/angstrom/splash-p.svg
new file mode 100644
index 0000000000..45383e2072
--- /dev/null
+++ b/packages/gpe-bootsplash/files/angstrom/splash-p.svg
@@ -0,0 +1,266 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448"
+ height="1052.3622"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.43+0.44pre4"
+ version="1.0"
+ sodipodi:docbase="j:\"
+ sodipodi:docname="foo.svg"
+ inkscape:export-filename="/Users/koen/Projects/Ångström/angstrom-background.png"
+ inkscape:export-xdpi="55.049999"
+ inkscape:export-ydpi="55.049999">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3283">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop3285" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop3287" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2374">
+ <stop
+ style="stop-color:#fbda93;stop-opacity:1;"
+ offset="0"
+ id="stop2376" />
+ <stop
+ style="stop-color:#bb7b25;stop-opacity:0.93814433;"
+ offset="1"
+ id="stop2378" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2366">
+ <stop
+ style="stop-color:#d4950e;stop-opacity:1;"
+ offset="0"
+ id="stop2368" />
+ <stop
+ style="stop-color:#f2ce3a;stop-opacity:1;"
+ offset="1"
+ id="stop2370" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2344">
+ <stop
+ style="stop-color:#616161;stop-opacity:1;"
+ offset="0"
+ id="stop2346" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.6082474;"
+ offset="1"
+ id="stop2348" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2324">
+ <stop
+ style="stop-color:#a16c25;stop-opacity:0;"
+ offset="0"
+ id="stop2326" />
+ <stop
+ style="stop-color:#a16c25;stop-opacity:0.7525773;"
+ offset="1"
+ id="stop2328" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4005">
+ <stop
+ style="stop-color:#faff8b;stop-opacity:1;"
+ offset="0"
+ id="stop4007" />
+ <stop
+ style="stop-color:#ffda89;stop-opacity:0;"
+ offset="1"
+ id="stop4009" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient8471">
+ <stop
+ id="stop8479"
+ offset="0"
+ style="stop-color:#cbd0e5;stop-opacity:0.98039216;" />
+ <stop
+ style="stop-color:#2b469d;stop-opacity:0.96078432;"
+ offset="1"
+ id="stop8475" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient8447">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop8449" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop8451" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6662">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop6664" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop6666" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6662"
+ id="linearGradient6668"
+ x1="69.1875"
+ y1="721.51025"
+ x2="1115.5"
+ y2="721.51025"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.437349e-7,-8.924495e-6)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4005"
+ id="linearGradient4015"
+ x1="73.751465"
+ y1="619.28882"
+ x2="205.8764"
+ y2="619.28882"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2374"
+ id="radialGradient3311"
+ cx="202.1609"
+ cy="581.95923"
+ fx="202.1609"
+ fy="581.95923"
+ r="161.44482"
+ gradientTransform="matrix(0.281574,1.666278e-7,-1.773716e-7,0.299729,-4.54534,519.7451)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.57230612"
+ inkscape:cx="596.83002"
+ inkscape:cy="549.6484"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ inkscape:window-width="1280"
+ inkscape:window-height="968"
+ inkscape:window-x="-4"
+ inkscape:window-y="-4" />
+ <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:license
+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ id="layer1"
+ inkscape:groupmode="layer">
+ <text
+ xml:space="preserve"
+ style="font-size:46.29391098px;font-style:normal;font-weight:normal;fill:#3d74c0;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ id="text2249"
+ y="855.70374"
+ x="324.49207"><tspan
+ id="tspan2251"
+ y="855.70374"
+ x="324.49207"
+ sodipodi:role="line">Embedded power</tspan></text>
+ <path
+ style="fill:url(#radialGradient3311);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 53.20061,632.41367 L -57.078981,816.76166 L 161.83424,816.76166 L 53.20061,632.41367 z "
+ id="path1449"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="font-size:114.39354706px;font-style:normal;font-weight:normal;fill:#fb8900;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ d="M 168.04585,816.47428 L 157.81645,816.47428 L 157.81645,781.86847 C 157.81641,779.07537 157.65318,776.4636 157.32676,774.03318 C 157.00023,771.56658 156.40171,769.64402 155.53116,768.26553 C 154.62426,766.74206 153.31838,765.61755 151.61353,764.89201 C 149.90859,764.13031 147.69584,763.74944 144.9753,763.74937 C 142.18213,763.74944 139.26203,764.43865 136.21502,765.81703 C 133.16794,767.19549 130.24785,768.9548 127.45474,771.09495 L 127.45474,816.47428 L 117.22533,816.47428 L 117.22533,755.69645 L 127.45474,755.69645 L 127.45474,762.44348 C 130.64687,759.79551 133.94785,757.72787 137.35768,756.24056 C 140.76743,754.75337 144.26791,754.00975 147.85913,754.00969 C 154.42475,754.00975 159.43062,755.98671 162.87675,759.94056 C 166.32276,763.89453 168.04579,769.58962 168.04585,777.02582 L 168.04585,816.47428 M 237.25751,809.56401 C 237.25745,819.86595 234.91776,827.42917 230.23841,832.25369 C 225.55894,837.07816 218.35847,839.49041 208.63696,839.49044 C 205.4085,839.49041 202.25264,839.25461 199.16933,838.78308 C 196.12226,838.34776 193.11148,837.71297 190.13698,836.87868 L 190.13698,826.43162 L 190.68112,826.43162 C 192.34973,827.08456 194.99776,827.8826 198.6252,828.82574 C 202.25264,829.80513 205.88007,830.29486 209.50755,830.29487 C 212.98986,830.29486 215.87368,829.8777 218.15902,829.04338 C 220.44424,828.20907 222.22171,827.04829 223.49134,825.56104 C 224.76091,824.14633 225.66778,822.44143 226.21194,820.44635 C 226.75599,818.45124 227.02805,816.22039 227.0281,813.7537 L 227.0281,808.20373 C 223.94474,810.67039 220.98837,812.52037 218.15902,813.7537 C 215.36584,814.95075 211.79281,815.54928 207.43991,815.54928 C 200.18498,815.54928 194.41736,812.93753 190.13698,807.71402 C 185.89287,802.45422 183.77082,795.05424 183.77083,785.51405 C 183.77082,780.29055 184.49631,775.79253 185.94729,772.01994 C 187.43453,768.21117 189.44776,764.92834 191.987,762.17144 C 194.34481,759.59601 197.21049,757.60092 200.58404,756.18614 C 203.95753,754.73523 207.31291,754.00975 210.65019,754.00969 C 214.16878,754.00975 217.10702,754.3725 219.46489,755.09793 C 221.85896,755.78719 224.38003,756.85729 227.0281,758.3082 L 227.68106,755.69645 L 237.25751,755.69645 L 237.25751,809.56401 M 227.0281,799.76991 L 227.0281,766.63319 C 224.30748,765.39992 221.76826,764.52933 219.41046,764.02142 C 217.08888,763.47738 214.76732,763.20531 212.44578,763.20527 C 206.82322,763.20531 202.39774,765.09157 199.16933,768.86408 C 195.94088,772.63666 194.32669,778.11408 194.3267,785.29638 C 194.32669,792.11602 195.52373,797.28513 197.91786,800.80372 C 200.31195,804.32236 204.284,806.08168 209.83403,806.08166 C 212.80849,806.08168 215.783,805.51944 218.75754,804.39489 C 221.76826,803.23413 224.52512,801.69246 227.0281,799.76991 M 301.02799,798.95373 C 301.02795,804.50374 298.72452,809.05618 294.11771,812.61105 C 289.5471,816.16596 283.28975,817.94341 275.34569,817.94341 C 270.84762,817.94341 266.71235,817.41744 262.93982,816.36547 C 259.20353,815.27723 256.0658,814.09832 253.5266,812.82872 L 253.5266,801.34784 L 254.07071,801.34784 C 257.29913,803.77825 260.89031,805.71894 264.84422,807.1699 C 268.79812,808.58462 272.58879,809.29195 276.21628,809.29194 C 280.71428,809.29195 284.23288,808.56647 286.77213,807.11548 C 289.31129,805.66452 290.58091,803.37922 290.58095,800.25961 C 290.58091,797.86551 289.8917,796.0518 288.51331,794.81844 C 287.13484,793.58513 284.4868,792.53318 280.56921,791.66256 C 279.1182,791.33612 277.2138,790.95525 274.85598,790.51992 C 272.53439,790.08465 270.41233,789.61309 268.48983,789.10521 C 263.15746,787.69054 259.36677,785.6229 257.11776,782.90228 C 254.90503,780.14545 253.79865,776.77196 253.79866,772.78172 C 253.79865,770.27883 254.3065,767.92098 255.32218,765.7082 C 256.37412,763.49551 257.95208,761.51855 260.05601,759.77732 C 262.08735,758.07248 264.66283,756.73033 267.78246,755.75086 C 270.93831,754.73523 274.45692,754.22739 278.33833,754.22733 C 281.96573,754.22739 285.62944,754.68082 289.3295,755.58763 C 293.06571,756.45827 296.16717,757.52836 298.63389,758.79791 L 298.63389,769.73467 L 298.08977,769.73467 C 295.47797,767.81217 292.30394,766.19793 288.56772,764.89201 C 284.83141,763.54992 281.16769,762.87884 277.57655,762.87878 C 273.84027,762.87884 270.6844,763.60433 268.10893,765.05525 C 265.53343,766.46999 264.24568,768.59206 264.2457,771.42141 C 264.24568,773.9244 265.0256,775.81068 266.58539,777.08023 C 268.10892,778.34988 270.57556,779.38369 273.98538,780.18169 C 275.87164,780.61703 277.97555,781.05233 280.29715,781.48757 C 282.65495,781.92292 284.61376,782.32192 286.1736,782.68463 C 290.92552,783.77291 294.58923,785.64104 297.16477,788.28903 C 299.7402,790.97338 301.02795,794.52827 301.02799,798.95373 M 347.27793,815.93017 C 345.35534,816.43802 343.25142,816.85517 340.96616,817.18165 C 338.71712,817.50812 336.70389,817.67135 334.92647,817.67135 C 328.72352,817.67135 324.00785,816.00273 320.77944,812.66548 C 317.551,809.32823 315.93678,803.97775 315.9368,796.61402 L 315.9368,764.29349 L 309.02651,764.29349 L 309.02651,755.69645 L 315.9368,755.69645 L 315.9368,738.23029 L 326.1662,738.23029 L 326.1662,755.69645 L 347.27793,755.69645 L 347.27793,764.29349 L 326.1662,764.29349 L 326.1662,791.98903 C 326.16618,795.18121 326.23872,797.68414 326.38385,799.49785 C 326.52892,801.2753 327.03677,802.94394 327.90736,804.50372 C 328.70538,805.9547 329.79362,807.0248 331.17207,807.71402 C 332.58675,808.36695 334.72694,808.69343 337.59265,808.69342 C 339.26123,808.69343 341.00242,808.45764 342.81618,807.98607 C 344.62985,807.47823 345.93574,807.06109 346.73381,806.7346 L 347.27793,806.7346 L 347.27793,815.93017 M 397.60872,766.85085 L 397.06459,766.85085 C 395.54102,766.48815 394.05376,766.23423 392.60283,766.08909 C 391.18809,765.90774 389.50133,765.81706 387.54254,765.81703 C 384.38663,765.81706 381.3396,766.52443 378.40139,767.93907 C 375.46312,769.31755 372.63372,771.11315 369.91316,773.32584 L 369.91316,816.47428 L 359.68376,816.47428 L 359.68376,755.69645 L 369.91316,755.69645 L 369.91316,764.67438 C 373.97586,761.40974 377.54891,759.1063 380.63226,757.76408 C 383.75184,756.38573 386.92584,755.6965 390.15431,755.69645 C 391.93172,755.6965 393.21946,755.75091 394.01754,755.85968 C 394.81552,755.9323 396.01259,756.09553 397.60872,756.34939 L 397.60872,766.85085 M 459.14832,786.11258 C 459.14826,796.01551 456.60904,803.83265 451.53069,809.56401 C 446.4522,815.29537 439.65075,818.16105 431.1263,818.16106 C 422.52923,818.16105 415.6915,815.29537 410.6131,809.56401 C 405.57095,803.83265 403.04987,796.01551 403.04987,786.11258 C 403.04987,776.20968 405.57095,768.39254 410.6131,762.66113 C 415.6915,756.89358 422.52923,754.00975 431.1263,754.00969 C 439.65075,754.00975 446.4522,756.89358 451.53069,762.66113 C 456.60904,768.39254 459.14826,776.20968 459.14832,786.11258 M 448.59245,786.11258 C 448.59239,778.24106 447.05074,772.40087 443.96746,768.59203 C 440.88407,764.74697 436.6037,762.82443 431.1263,762.82438 C 425.57629,762.82443 421.25963,764.74697 418.17632,768.59203 C 415.12926,772.40087 413.60571,778.24106 413.60573,786.11258 C 413.60571,793.73024 415.14741,799.516 418.23073,803.46989 C 421.31405,807.38755 425.61255,809.34638 431.1263,809.34637 C 436.56743,809.34638 440.82967,807.40568 443.91306,803.52432 C 447.0326,799.60668 448.59239,793.80277 448.59245,786.11258 M 447.77627,745.52147 L 436.94835,745.52147 L 436.94835,734.91117 L 447.77627,734.91117 L 447.77627,745.52147 M 425.30426,745.52147 L 414.47632,745.52147 L 414.47632,734.91117 L 425.30426,734.91117 L 425.30426,745.52147 M 563.72758,816.47428 L 553.4982,816.47428 L 553.4982,781.86847 C 553.4981,779.25674 553.37115,776.73566 553.11731,774.30525 C 552.89957,771.87489 552.40987,769.93423 551.64819,768.48318 C 550.8138,766.92342 549.61673,765.74452 548.05702,764.94643 C 546.49714,764.14845 544.24813,763.74944 541.30998,763.74937 C 538.44422,763.74944 535.57854,764.47491 532.71293,765.92583 C 529.84717,767.34059 526.9815,769.15432 524.11589,771.367 C 524.22465,772.20136 524.31531,773.18078 524.38795,774.30525 C 524.46042,775.39353 524.4967,776.48174 524.49676,777.56993 L 524.49676,816.47428 L 514.26737,816.47428 L 514.26737,781.86847 C 514.26733,779.18419 514.14035,776.64499 513.88647,774.25084 C 513.6688,771.8205 513.17909,769.8798 512.41736,768.42878 C 511.58301,766.86903 510.38596,765.70824 508.8262,764.94643 C 507.26635,764.14845 505.01734,763.74944 502.07916,763.74937 C 499.28599,763.74944 496.47472,764.43865 493.64534,765.81703 C 490.85218,767.19549 488.05906,768.9548 485.26595,771.09495 L 485.26595,816.47428 L 475.03655,816.47428 L 475.03655,755.69645 L 485.26595,755.69645 L 485.26595,762.44348 C 488.45807,759.79551 491.63208,757.72787 494.78798,756.24056 C 497.98011,754.75337 501.37177,754.00975 504.96296,754.00969 C 509.0982,754.00975 512.59869,754.88034 515.46441,756.62146 C 518.36633,758.36268 520.52467,760.77493 521.93941,763.85818 C 526.07464,760.3759 529.84717,757.87298 533.25704,756.34939 C 536.66677,754.78964 540.31236,754.00975 544.19379,754.00969 C 550.8682,754.00975 555.7834,756.04112 558.93935,760.10379 C 562.13141,764.13031 563.72748,769.77098 563.72758,777.02582 L 563.72758,816.47428"
+ id="text1367" />
+ <path
+ style="font-size:191.88253784px;font-style:normal;font-weight:normal;fill:#fb8900;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ d="M 101.52407,816.82771 L 86.4594,816.82771 L 75.89269,787.19813 L 30.198912,787.19813 L 19.632227,816.82771 L 5.281514,816.82771 L 42.33631,716.37276 C 38.100083,714.27857 34.696867,711.3513 32.126627,707.59097 C 29.603911,703.78327 28.342578,699.45189 28.34261,694.59679 C 28.342578,687.79046 30.770061,682.07872 35.625051,677.46163 C 40.479985,672.84478 46.382087,670.5363 53.3314,670.53615 C 60.328195,670.5363 66.230301,672.84478 71.037754,677.46163 C 75.89263,682.07872 78.32012,687.79046 78.3202,694.59679 C 78.32012,699.35669 77.05877,703.68807 74.53617,707.59097 C 72.06102,711.4465 68.705395,714.37376 64.469261,716.37276 L 101.52407,816.82771 M 67.610701,694.73959 C 67.61065,690.6463 66.254109,687.24309 63.541099,684.52988 C 60.827967,681.76935 57.424742,680.38902 53.3314,680.38887 C 49.23794,680.38902 45.834713,681.76935 43.121682,684.52988 C 40.408585,687.29067 39.052053,690.69391 39.052076,694.73959 C 39.052053,698.83311 40.408585,702.26014 43.121682,705.02069 C 45.882305,707.73387 49.285532,709.09041 53.3314,709.0903 C 57.424742,709.09041 60.827967,707.73387 63.541099,705.02069 C 66.254109,702.26014 67.61065,698.83311 67.610701,694.73959 M 71.466113,775.06072 L 53.045808,724.01218 L 34.554099,775.06072 L 71.466113,775.06072"
+ id="text1330" />
+ <g
+ id="g625"
+ transform="matrix(1.57221,0,0,1.783879,117.3601,-832.5448)">
+ <path
+ style="font-size:12px;fill:#3673b9;fill-rule:evenodd;stroke:black;stroke-width:5;stroke-linecap:round;stroke-linejoin:round"
+ d="M 94.0243,653.144 C 92.9148,643.848 92.7925,633.53 100.937,626.205 C 110.403,617.654 128.339,609.24 161.179,608.437 C 198.937,607.895 218.386,616.406 225.076,630.58 C 228.365,637.914 224.721,648.089 221.448,650.927 C 213.78,658.207 201.683,661.711 188.673,661.848 C 186.641,661.928 175.967,663.211 169.531,664.713 C 164.673,665.763 155.85,669.834 156.459,677.063 C 156.844,681.447 161.193,684.034 165.183,684.871 C 170.445,686.339 176.027,688.99 178.258,694.859 C 181.546,704.105 177.959,710.957 168.8,715.903 C 161.709,719.634 154.415,719.213 147.278,719.071 C 140.141,718.929 133.162,719.066 126.7,716.626 C 117.33,713.315 110.463,707.247 105.645,695.933 C 97.8806,678.555 95.4338,662.383 94.0243,653.144 z "
+ id="path616"
+ sodipodi:nodetypes="cssssssssssssss" />
+ <path
+ style="font-size:12px;fill:#3673b9;fill-rule:evenodd;stroke:black;stroke-width:5;stroke-linecap:round;stroke-linejoin:round"
+ d="M 194.062,704.69 C 193.14,694.185 196.652,689.208 200.953,687.124 C 209.472,682.649 222.59,684.248 225.987,684.099 C 229.385,683.951 240.209,683.735 243.865,684.205 C 249.754,684.601 256.049,688.543 258.82,692.571 C 265.332,701.232 261.469,710.7 256.411,712.489 C 249.962,715.244 244.289,715.677 227.774,716.564 C 204.065,718.344 195.456,716.622 194.062,704.69 z "
+ id="path617"
+ sodipodi:nodetypes="csssssss" />
+ <path
+ style="font-size:12px;fill:#3673b9;fill-rule:evenodd;stroke:black;stroke-width:5;stroke-linecap:round;stroke-linejoin:round"
+ d="M 223.572,534.437 C 234.346,534.712 236.996,549.599 235.829,563.596 C 235.421,567.174 233.429,584.092 233.002,587.692 C 231.882,597.71 226.094,605.34 215.928,601.764 C 208.095,599.279 204.245,594.862 204.961,585.102 C 205.236,571.731 206.463,562.435 206.901,558.881 C 208.572,545.91 212.509,533.783 223.572,534.437 z "
+ id="path618"
+ sodipodi:nodetypes="cssssss" />
+ <path
+ style="font-size:12px;fill:#3673b9;fill-rule:evenodd;stroke:black;stroke-width:5;stroke-linecap:round;stroke-linejoin:round"
+ d="M 190.996,543.844 C 191.248,547.435 190.83,570.43 190.842,574.055 C 190.523,588.357 184.241,590.165 176.737,590.029 C 168.365,589.868 163.49,586.734 162.868,574.191 C 162.796,570.779 162.302,547.265 162.343,543.724 C 162.467,532.535 165.296,520.122 176.461,519.777 C 188.953,519.799 190.569,532.18 190.996,543.844 z "
+ id="path619"
+ sodipodi:nodetypes="cssssss" />
+ <path
+ style="font-size:12px;fill:#3673b9;fill-rule:evenodd;stroke:black;stroke-width:5;stroke-linecap:round;stroke-linejoin:round"
+ d="M 130.758,527.278 C 119.981,527.402 117.124,542.25 118.094,556.262 C 118.452,559.846 120.207,576.79 120.584,580.395 C 121.563,590.428 126.706,597.399 135.905,595.198 C 144.244,593.308 148.701,589.506 148.659,578.198 C 148.244,564.831 147.473,555.513 147.086,551.953 C 145.597,538.96 141.829,526.779 130.758,527.278 z "
+ id="path620"
+ sodipodi:nodetypes="cssssss" />
+ <path
+ style="font-size:12px;fill:#3673b9;fill-rule:evenodd;stroke:black;stroke-width:5;stroke-linecap:round;stroke-linejoin:round"
+ d="M 85.9856,547.512 C 75.8101,548.42 74.2169,562.557 76.1787,575.631 C 76.7843,578.964 79.706,594.216 81.3616,598.086 C 84.0428,607.187 88.7859,615.406 97.9757,610.333 C 107.283,605.467 110.045,600.467 108.762,592.936 C 106.17,580.739 104.92,575.864 103.257,569.463 C 99.9087,557.613 96.4103,546.232 85.9856,547.512 z "
+ id="path621"
+ sodipodi:nodetypes="cssssss" />
+ </g>
+ <path
+ style="font-size:24px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ d="M 245.74955,585.39436 L 245.74955,563.04013 L 229.53613,563.04013 L 229.53613,553.78626 L 255.57587,553.78626 L 255.57587,589.5196 C 251.74354,592.60423 247.51823,594.94559 242.89991,596.54362 C 238.28153,598.10453 233.35199,598.88497 228.11133,598.88497 C 216.64728,598.88497 207.67256,595.09426 201.18722,587.51275 C 194.7346,579.89412 191.50831,569.30236 191.50831,555.73741 C 191.50831,542.13535 194.7346,531.54357 201.18722,523.96205 C 207.67256,516.34345 216.64728,512.53413 228.11133,512.53409 C 232.89341,512.53413 237.42988,513.2031 241.72077,514.54092 C 246.04429,515.87893 250.02392,517.84862 253.65974,520.45003 L 253.65974,532.43548 C 249.99117,528.90496 246.09344,526.24769 241.96641,524.46377 C 237.83933,522.67994 233.49936,521.788 228.94657,521.78795 C 219.97182,521.788 213.22443,524.63108 208.70434,530.31713 C 204.21697,536.00327 201.97331,544.47669 201.97331,555.73741 C 201.97331,566.96099 204.21697,575.41583 208.70434,581.10192 C 213.22443,586.78803 219.97182,589.63111 228.94657,589.63111 C 232.45124,589.63111 235.57928,589.29665 238.3307,588.62766 C 241.08198,587.92154 243.55497,586.84379 245.74955,585.39436 M 283.67911,523.2931 L 283.67911,554.5667 L 296.15855,554.5667 C 300.77687,554.56674 304.34708,553.21029 306.86922,550.49727 C 309.39128,547.7843 310.65233,543.91922 310.65237,538.90206 C 310.65233,533.92208 309.39128,530.0756 306.86922,527.36255 C 304.34708,524.64967 300.77687,523.29317 296.15855,523.2931 L 283.67911,523.2931 M 273.75456,514.0392 L 296.15855,514.0392 C 304.37982,514.0393 310.5868,516.15765 314.77941,520.39429 C 319.00466,524.59392 321.11732,530.76314 321.11738,538.90206 C 321.11732,547.11537 319.00466,553.32174 314.77941,557.52129 C 310.5868,561.72088 304.37982,563.8206 296.15855,563.8206 L 283.67911,563.8206 L 283.67911,597.26835 L 273.75456,597.26835 L 273.75456,514.0392 M 334.48116,514.0392 L 380.86136,514.0392 L 380.86136,523.51607 L 344.40574,523.51607 L 344.40574,548.15592 L 379.33828,548.15592 L 379.33828,557.6328 L 344.40574,557.6328 L 344.40574,587.79148 L 381.74574,587.79148 L 381.74574,597.26835 L 334.48116,597.26835 L 334.48116,514.0392 M 439.62269,587.79148 L 474.26044,587.79148 L 474.26044,597.26835 L 427.68376,597.26835 L 427.68376,587.79148 C 431.45047,583.36893 436.57654,577.44127 443.06193,570.00844 C 449.58002,562.53845 453.6743,557.72568 455.34478,555.57013 C 458.52195,551.5193 460.73286,548.10022 461.97759,545.31284 C 463.25492,542.48842 463.89366,539.71969 463.89371,537.00668 C 463.89366,532.58416 462.51797,528.97927 459.76663,526.19189 C 457.04802,523.40465 453.49414,522.01099 449.10509,522.01091 C 445.99341,522.01099 442.70157,522.62423 439.22963,523.85054 C 435.79044,525.07703 432.10555,526.93521 428.17507,529.42518 L 428.17507,518.05293 C 432.17107,516.23201 435.90505,514.85693 439.37705,513.92775 C 442.84898,512.99869 446.02614,512.53413 448.90857,512.53409 C 456.50756,512.53413 462.56709,514.68968 467.08726,519.00062 C 471.60732,523.31175 473.86735,529.07217 473.8674,536.28195 C 473.86735,539.70114 473.29415,542.95298 472.14783,546.03756 C 471.03411,549.08504 468.98695,552.68997 466.00634,556.8523 C 465.18746,557.9301 462.5835,561.05189 458.19443,566.21767 C 453.80533,571.34634 447.61475,578.53761 439.62269,587.79148 M 495.14137,583.10876 L 505.50815,583.10876 L 505.50815,597.26835 L 495.14137,597.26835 L 495.14137,583.10876 M 524.66944,514.0392 L 571.83575,514.0392 L 571.83575,518.83342 L 545.20645,597.26835 L 534.83968,597.26835 L 559.89676,523.51607 L 524.66944,523.51607 L 524.66944,514.0392"
+ id="text1326" />
+ </g>
+</svg>
diff --git a/packages/gpe-bootsplash/files/splash-gpephone-landscape.svg b/packages/gpe-bootsplash/files/splash-gpephone-landscape.svg
new file mode 100644
index 0000000000..fe602b8998
--- /dev/null
+++ b/packages/gpe-bootsplash/files/splash-gpephone-landscape.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="116.443" height="62.092"
+ viewBox="0 0 116.443 62.092" overflow="visible" enable-background="new 0 0 116.443 62.092" xml:space="preserve">
+<path d="M18.423,54.975c-3.621,0.32-6.418-1.433-9.069-6.17c-2.65-4.737-8.222-18.436-8.918-21.989
+ c-0.714-3.646-0.762-6.208,1.488-6.534c2.25-0.329,3.169,1.686,3.426,3.456c0.268,1.841,1.858,8.563,4.768,7.96
+ c2.91-0.601-0.223-7.294-1.375-9.94C7.59,19.111,3.575,10.56,8.149,9.755c4.575-0.803,5.91,7.485,6.434,9.34
+ c0.523,1.854,1.392,6.74,3.642,6.413c2.25-0.327,1.028-4.332,0.16-6.877C17.517,16.086,12.183-0.088,17.745,0
+ c5.99,0.095,6.329,13.55,6.157,15.912c-0.154,2.125-0.286,9.02,2.516,8.999c2.958,0.134,2.891-4.054,2.24-7.829
+ c-0.651-3.774-1.52-15.031,3.483-14.366c5.002,0.665,2.774,17.271,2.696,21.865c-0.079,4.592,0.874,6.782,5.447,2.88"/>
+<path fill="#0084FF" d="M38.287,28.396c2.004-3.67,2.145-8.613,4.87-10.347c1.227-0.78,3.773-1.875,4.39-1.391
+ c0.759,0.597,0.553,2.032,0.423,3.063c-0.177,1.404-1.297,14.868-1.901,19.217c-1.63,11.743-3.426,20.386-8.565,22.401
+ c-3.672,1.439-11.917,0.386-15.984,0.296c-5.341-0.118-6.237-4.937-6.596-10.208c-0.149-2.186,0.087-11.423,0.705-16.466
+ c0.48-3.922,4.639-4.614,6.849-4.783c1.75-0.134,4.309-0.109,8.534-0.227C34.407,29.857,37.353,30.106,38.287,28.396z"/>
+<path fill="#0084FF" d="M68.1,48.104c-0.827,0.121-1.656,0.182-2.487,0.182c-1.287,0-2.462-0.164-3.525-0.494
+ c-1.063-0.33-1.972-0.821-2.73-1.474c-0.757-0.652-1.345-1.469-1.765-2.447c-0.419-0.979-0.628-2.116-0.628-3.415
+ c0-1.325,0.213-2.496,0.639-3.511c0.426-1.014,1.025-1.863,1.797-2.548s1.698-1.2,2.78-1.548c1.081-0.347,2.279-0.521,3.596-0.521
+ c0.706,0,1.397,0.052,2.074,0.155c0.677,0.103,1.331,0.271,1.963,0.507l-0.132,2.573c-0.604-0.251-1.208-0.422-1.814-0.514
+ c-0.607-0.092-1.253-0.139-1.937-0.139c-0.964,0-1.798,0.128-2.504,0.383s-1.291,0.621-1.754,1.1
+ c-0.462,0.479-0.807,1.061-1.031,1.748c-0.225,0.688-0.336,1.468-0.336,2.34c0,0.789,0.112,1.519,0.336,2.188
+ c0.224,0.67,0.559,1.252,1.004,1.744s1,0.876,1.665,1.151s1.44,0.413,2.322,0.413c0.286,0,0.573-0.018,0.86-0.055
+ c0.286-0.036,0.566-0.095,0.838-0.176v-5.234H70.5v7.023C69.728,47.794,68.927,47.983,68.1,48.104z"/>
+<path d="M92.542,37.561c0,0.896-0.17,1.667-0.513,2.314c-0.342,0.647-0.799,1.185-1.369,1.61c-0.57,0.425-1.229,0.739-1.976,0.943
+ s-1.525,0.31-2.334,0.316c-0.31,0-0.609-0.004-0.9-0.011c-0.29-0.007-0.601-0.011-0.933-0.011v5.808h-3.191V32.859
+ c0.795-0.103,1.595-0.176,2.401-0.22c0.806-0.044,1.609-0.066,2.412-0.066c0.537,0,1.068,0.033,1.596,0.099
+ c0.525,0.065,1.025,0.175,1.501,0.328c0.474,0.152,0.914,0.354,1.319,0.605c0.404,0.251,0.754,0.562,1.048,0.933
+ c0.295,0.371,0.525,0.806,0.69,1.305C92.459,36.341,92.542,36.914,92.542,37.561z M89.292,37.671c0-0.497-0.083-0.927-0.248-1.288
+ c-0.166-0.36-0.393-0.654-0.68-0.882c-0.288-0.228-0.629-0.395-1.022-0.503c-0.395-0.108-0.816-0.163-1.266-0.163
+ c-0.259,0-0.519,0.006-0.78,0.017c-0.261,0.011-0.521,0.034-0.779,0.07v5.52c0.259,0.036,0.513,0.057,0.763,0.06
+ c0.251,0.004,0.502,0.006,0.752,0.006c0.457,0,0.884-0.056,1.282-0.168c0.398-0.111,0.743-0.284,1.034-0.52
+ c0.29-0.234,0.521-0.528,0.69-0.882S89.292,38.161,89.292,37.671z"/>
+<path d="M103.84,48.531h-5.703c-0.729,0-1.324-0.094-1.789-0.281c-0.463-0.188-0.829-0.448-1.099-0.783
+ c-0.268-0.335-0.452-0.732-0.552-1.192s-0.148-0.958-0.148-1.495V32.573h8.95l0.22,2.503h-5.979v3.949h5.521v2.411h-5.521v2.914
+ c0,0.206,0.02,0.408,0.06,0.607c0.041,0.198,0.114,0.377,0.222,0.535c0.105,0.158,0.253,0.287,0.441,0.387
+ c0.187,0.099,0.428,0.148,0.722,0.148h4.877L103.84,48.531z"/>
+<g>
+ <path fill="#0084FF" d="M116.318,32.939h-5.853v-1.453c0.251-0.175,0.519-0.365,0.803-0.572s0.564-0.426,0.84-0.656
+ c0.274-0.23,0.538-0.472,0.789-0.723c0.251-0.252,0.473-0.51,0.664-0.775c0.192-0.264,0.345-0.536,0.46-0.815
+ c0.114-0.279,0.172-0.562,0.172-0.848c0-0.397-0.103-0.711-0.308-0.941c-0.205-0.23-0.49-0.346-0.855-0.346
+ c-0.318,0-0.564,0.107-0.74,0.32c-0.177,0.214-0.282,0.486-0.317,0.817l-1.521-0.463c0.062-0.379,0.177-0.695,0.344-0.95
+ c0.168-0.254,0.372-0.459,0.615-0.614c0.242-0.154,0.515-0.265,0.819-0.332c0.304-0.066,0.623-0.1,0.958-0.1
+ c0.4,0,0.779,0.051,1.134,0.154c0.355,0.102,0.668,0.257,0.937,0.463c0.27,0.207,0.482,0.467,0.64,0.78
+ c0.156,0.313,0.235,0.681,0.235,1.103c0,0.332-0.053,0.647-0.156,0.946s-0.243,0.582-0.417,0.851
+ c-0.175,0.269-0.376,0.524-0.605,0.768c-0.23,0.242-0.472,0.472-0.726,0.688c-0.254,0.215-0.511,0.419-0.771,0.613
+ s-0.509,0.378-0.747,0.553v0.039h3.731L116.318,32.939z"/>
+</g>
+<path d="M76.6,48.07c-0.382-0.452-0.747-0.952-1.095-1.503c-0.348-0.55-0.654-1.15-0.922-1.802
+ c-0.266-0.651-0.478-1.352-0.634-2.102s-0.235-1.553-0.235-2.409s0.079-1.662,0.235-2.418s0.368-1.46,0.634-2.11
+ c0.268-0.651,0.574-1.254,0.922-1.806c0.348-0.554,0.713-1.056,1.095-1.507h1.832c-0.395,0.544-0.749,1.094-1.063,1.649
+ c-0.316,0.556-0.586,1.146-0.812,1.768c-0.227,0.622-0.399,1.292-0.521,2.01s-0.182,1.511-0.182,2.379
+ c0,0.875,0.06,1.673,0.182,2.397c0.122,0.723,0.295,1.397,0.521,2.022c0.226,0.626,0.495,1.217,0.812,1.776
+ c0.314,0.558,0.669,1.109,1.063,1.654H76.6z"/>
+<path d="M110.568,40.285c0,0.79-0.072,1.532-0.217,2.228c-0.146,0.696-0.343,1.347-0.589,1.95c-0.249,0.604-0.533,1.162-0.856,1.673
+ c-0.322,0.51-0.661,0.976-1.016,1.395h-1.716c0.365-0.506,0.695-1.018,0.991-1.536c0.295-0.519,0.546-1.07,0.753-1.656
+ c0.207-0.585,0.366-1.214,0.479-1.885c0.112-0.672,0.169-1.413,0.169-2.225c0-0.806-0.057-1.54-0.169-2.204
+ c-0.113-0.663-0.272-1.284-0.479-1.861c-0.207-0.578-0.458-1.123-0.753-1.636c-0.296-0.514-0.626-1.022-0.991-1.527h1.716
+ c0.354,0.419,0.693,0.885,1.016,1.397c0.323,0.514,0.607,1.073,0.856,1.681c0.246,0.607,0.443,1.262,0.589,1.963
+ C110.496,38.741,110.568,39.49,110.568,40.285z"/>
+<path fill="#FFFFFF" d="M33.396,34.556c5.372,0.147,7.137,2.96,7.137,6.409c0,3.461-1.811,6.281-7.192,6.411
+ c-0.129,0.003-5.146,0.005-5.273,0.005c-5.441,0-7.24-2.873-7.24-6.416s1.798-6.416,7.24-6.416
+ C28.212,34.549,33.248,34.551,33.396,34.556z"/>
+</svg>
diff --git a/packages/gpe-bootsplash/files/splash-gpephone-portrait.svg b/packages/gpe-bootsplash/files/splash-gpephone-portrait.svg
new file mode 100644
index 0000000000..2e4be0a4e3
--- /dev/null
+++ b/packages/gpe-bootsplash/files/splash-gpephone-portrait.svg
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<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://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg1"
+ sodipodi:version="0.32"
+ inkscape:version="0.43"
+ width="170.00000pt"
+ height="226.00000pt"
+ sodipodi:docname="blue-portrait.svg"
+ sodipodi:docbase="/home/fuchs/Projekte/terracotta/gpephone/marketing">
+ <metadata
+ id="metadata1148">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs3" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2"
+ inkscape:cx="123.79126"
+ inkscape:cy="136.7073"
+ inkscape:window-width="879"
+ inkscape:window-height="682"
+ showguides="true"
+ snaptoguides="true"
+ inkscape:window-x="575"
+ inkscape:window-y="31"
+ inkscape:current-layer="svg1"
+ showborder="true"
+ inkscape:showpageshadow="false" />
+ <path
+ d="M 96.11295,172.47525 C 87.896908,173.15778 81.550522,169.4188 75.53541,159.31524 C 69.522567,149.21168 56.879712,119.99305 55.300491,112.41484 C 53.680427,104.63828 53.571513,99.17378 58.676759,98.478454 C 63.782004,97.776729 65.867213,102.07453 66.450344,105.84977 C 67.058436,109.77644 70.666141,124.11381 77.268924,122.82767 C 83.871707,121.5458 76.762938,107.27028 74.149053,101.62662 C 71.532899,95.980825 62.422873,77.742372 72.801267,76.025385 C 83.181932,74.312663 86.211044,91.990163 87.399999,95.946698 C 88.586683,99.9011 90.558442,110.32246 95.66369,109.62501 C 100.76893,108.92755 97.99622,100.38527 96.02673,94.957031 C 94.05724,89.528793 81.954404,55.031219 94.57457,55.218915 C 108.16586,55.421542 108.93505,84.119752 108.54479,89.157668 C 108.19536,93.690087 107.89585,108.39645 114.25358,108.35166 C 120.96528,108.63747 120.81326,99.70487 119.33614,91.653165 C 117.85902,83.603589 115.88726,59.5935 127.23906,61.011879 C 138.58858,62.430262 133.53326,97.849248 133.35627,107.6478 C 133.17702,117.44209 135.33938,122.11315 145.7155,113.79056"
+ id="path3" />
+ <path
+ d="M 141.18432,115.78483 C 145.73139,107.95708 146.05132,97.414135 152.23433,93.715682 C 155.01839,92.052017 160.79526,89.716489 162.19523,90.748814 C 163.9174,92.022157 163.44999,95.082872 163.15502,97.281895 C 162.75341,100.27649 160.21213,128.9939 158.84165,138.26989 C 155.14319,163.31657 151.06807,181.75125 139.40769,186.04905 C 131.07593,189.1183 112.36805,186.87235 103.14003,186.68039 C 91.021318,186.4287 88.988297,176.15025 88.173726,164.90771 C 87.835646,160.24519 88.371128,140.54356 89.77337,129.78734 C 90.862488,121.42209 100.29925,119.94612 105.31373,119.58566 C 109.28448,119.29985 115.09084,119.35317 124.67736,119.10149 C 132.3806,118.901 139.06507,119.43209 141.18432,115.78483 z "
+ id="path5"
+ style="fill:#0084ff" />
+ <path
+ d="M 73.578809,234.4565 C 71.702347,234.71458 69.821348,234.84469 67.935811,234.84469 C 65.015612,234.84469 62.34954,234.49489 59.937596,233.79103 C 57.52565,233.08717 55.463132,232.03992 53.743232,230.64713 C 52.025601,229.25648 50.69143,227.5139 49.738451,225.42792 C 48.787741,223.33981 48.313521,220.9147 48.313521,218.14406 C 48.313521,215.31796 48.796818,212.82033 49.763411,210.65543 C 50.730003,208.49267 52.089132,206.68184 53.8408,205.2208 C 55.592465,203.75976 57.693556,202.66131 60.148612,201.91906 C 62.601398,201.17895 65.319658,200.80782 68.307927,200.80782 C 69.909838,200.80782 71.477717,200.91873 73.013828,201.13842 C 74.54994,201.35811 76.033863,201.71644 77.46787,202.2198 L 77.168361,207.70776 C 75.797889,207.1724 74.427414,206.80768 73.052401,206.61145 C 71.67512,206.41522 70.209347,206.31498 68.657353,206.31498 C 66.470039,206.31498 64.577696,206.58799 62.975784,207.13188 C 61.37387,207.67577 60.046508,208.45641 58.995961,209.47807 C 57.947685,210.49973 57.16488,211.74108 56.656625,213.20639 C 56.1461,214.67382 55.894242,216.33749 55.894242,218.19738 C 55.894242,219.88024 56.148369,221.43726 56.656625,222.86417 C 57.16488,224.29322 57.924994,225.53457 58.934698,226.58395 C 59.944403,227.63334 61.203696,228.45238 62.71258,229.03892 C 64.221463,229.62547 65.979935,229.91981 67.981192,229.91981 C 68.630125,229.91981 69.281326,229.88142 69.93253,229.8025 C 70.581463,229.72572 71.216782,229.59988 71.833948,229.42711 L 71.833948,218.2635 L 79.024402,218.2635 L 79.024402,233.24288 C 77.272736,233.7953 75.45527,234.19842 73.578809,234.4565 z "
+ id="path7"
+ style="fill:#0084ff" />
+ <path
+ d="M 129.03764,211.9693 C 129.03764,213.88038 128.65192,215.52485 127.87365,216.90484 C 127.09765,218.28483 126.06072,219.43233 124.76739,220.33881 C 123.47406,221.2453 121.97879,221.91503 120.28385,222.35014 C 118.58891,222.78525 116.82363,223.01134 114.98801,223.02414 C 114.28462,223.02414 113.60619,223.01561 112.94591,223.00068 C 112.28791,222.98575 111.58225,222.97721 110.82894,222.97721 L 110.82894,235.36511 L 103.58857,235.36511 L 103.58857,201.94039 C 105.39242,201.7207 107.20762,201.565 109.03643,201.47115 C 110.86524,201.37731 112.68725,201.33038 114.50925,201.33038 C 115.72771,201.33038 116.93254,201.40077 118.13057,201.54154 C 119.3218,201.68018 120.4563,201.9148 121.53634,202.24113 C 122.61185,202.56533 123.6102,202.99618 124.52915,203.53154 C 125.44582,204.0669 126.23997,204.73023 126.90706,205.52154 C 127.57641,206.31284 128.09828,207.24066 128.47267,208.30497 C 128.84932,209.36716 129.03764,210.58931 129.03764,211.9693 z M 121.6634,212.20392 C 121.6634,211.14387 121.47508,210.22672 121.10069,209.45674 C 120.72404,208.6889 120.20898,208.06182 119.55777,207.57552 C 118.9043,207.08922 118.13057,206.73303 117.23886,206.50267 C 116.3426,206.27232 115.38736,206.15501 114.36631,206.15501 C 113.77864,206.15501 113.1887,206.16781 112.59649,206.19127 C 112.00428,206.21473 111.41434,206.26379 110.82894,206.34057 L 110.82894,218.1142 C 111.41661,218.19098 111.99294,218.23577 112.56019,218.24217 C 113.1297,218.2507 113.69922,218.25497 114.26647,218.25497 C 115.3034,218.25497 116.27227,218.13552 117.17533,217.89664 C 118.07839,217.65989 118.86119,217.2909 119.52147,216.78753 C 120.17948,216.28843 120.70362,215.66136 121.08708,214.90631 C 121.47054,214.15126 121.6634,213.24904 121.6634,212.20392 z "
+ id="path9" />
+ <path
+ d="M 154.67278,235.36725 L 141.73269,235.36725 C 140.07859,235.36725 138.72853,235.16675 137.67345,234.7679 C 136.6229,234.36692 135.79245,233.81236 135.17982,233.09784 C 134.57173,232.38332 134.15423,231.53655 133.92734,230.55542 C 133.70044,229.57428 133.59152,228.5121 133.59152,227.36673 L 133.59152,201.33038 L 153.89905,201.33038 L 154.39823,206.66904 L 140.83189,206.66904 L 140.83189,215.09187 L 153.35903,215.09187 L 153.35903,220.2343 L 140.83189,220.2343 L 140.83189,226.44958 C 140.83189,226.88896 140.87727,227.31981 140.96803,227.74425 C 141.06106,228.16657 141.2267,228.54836 141.47175,228.88536 C 141.71,229.22235 142.04581,229.4975 142.47238,229.71079 C 142.89668,229.92195 143.44351,230.02646 144.1106,230.02646 L 155.1765,230.02646 L 154.67278,235.36725 z "
+ id="path11" />
+ <g
+ id="g13"
+ transform="matrix(2.268998,0,0,2.132904,-80.93994,131.8553)">
+ <path
+ d="M 116.318,32.939 L 110.465,32.939 L 110.465,31.486 C 110.716,31.311 110.984,31.121 111.268,30.914 C 111.552,30.707 111.832,30.488 112.108,30.258 C 112.382,30.028 112.646,29.786 112.897,29.535 C 113.148,29.283 113.37,29.025 113.561,28.76 C 113.753,28.496 113.906,28.224 114.021,27.945 C 114.135,27.666 114.193,27.383 114.193,27.097 C 114.193,26.7 114.09,26.386 113.885,26.156 C 113.68,25.926 113.395,25.81 113.03,25.81 C 112.712,25.81 112.466,25.917 112.29,26.13 C 112.113,26.344 112.008,26.616 111.973,26.947 L 110.452,26.484 C 110.514,26.105 110.629,25.789 110.796,25.534 C 110.964,25.28 111.168,25.075 111.411,24.92 C 111.653,24.766 111.926,24.655 112.23,24.588 C 112.534,24.522 112.853,24.488 113.188,24.488 C 113.588,24.488 113.967,24.539 114.322,24.642 C 114.677,24.744 114.99,24.899 115.259,25.105 C 115.529,25.312 115.741,25.572 115.899,25.885 C 116.055,26.198 116.134,26.566 116.134,26.988 C 116.134,27.32 116.081,27.635 115.978,27.934 C 115.875,28.233 115.735,28.516 115.561,28.785 C 115.386,29.054 115.185,29.309 114.956,29.553 C 114.726,29.795 114.484,30.025 114.23,30.241 C 113.976,30.456 113.719,30.66 113.459,30.854 C 113.199,31.048 112.95,31.232 112.712,31.407 L 112.712,31.446 L 116.443,31.446 L 116.318,32.939 z "
+ id="path15"
+ style="fill:#0084ff" />
+
+</g>
+ <path
+ d="M 92.86529,234.38398 C 91.99853,233.41991 91.170346,232.35346 90.380734,231.17823 C 89.591123,230.00513 88.896811,228.72539 88.288718,227.33474 C 87.685166,225.94622 87.204139,224.45105 86.850174,222.85137 C 86.496211,221.2517 86.31696,219.53898 86.31696,217.71321 C 86.31696,215.88744 86.496211,214.16832 86.850174,212.55585 C 87.204139,210.94338 87.685166,209.44181 88.288718,208.05543 C 88.896811,206.66691 89.591123,205.38076 90.380734,204.2034 C 91.170346,203.02177 91.99853,201.95106 92.86529,200.98912 L 97.02209,200.98912 C 96.12584,202.14942 95.32261,203.32251 94.61015,204.50627 C 93.89314,205.69217 93.28051,206.95058 92.76772,208.27725 C 92.25266,209.60391 91.862391,211.03296 91.585573,212.56438 C 91.308755,214.09581 91.172616,215.7872 91.172616,217.63856 C 91.172616,219.50485 91.308755,221.2069 91.585573,222.75113 C 91.862391,224.29322 92.25493,225.73079 92.76772,227.06386 C 93.28051,228.39905 93.89087,229.6596 94.61015,230.85189 C 95.32261,232.04205 96.1281,233.21728 97.02209,234.37971 L 92.86529,234.37971 L 92.86529,234.38398 z "
+ id="path17" />
+ <path
+ d="M 169.93859,217.77933 C 169.93859,219.46432 169.77523,221.04694 169.44622,222.53144 C 169.11495,224.01594 168.66796,225.40446 168.10978,226.6906 C 167.5448,227.97887 166.90041,229.16903 166.16752,230.25895 C 165.4369,231.34673 164.66771,232.34066 163.86222,233.23434 L 159.96862,233.23434 C 160.7968,232.1551 161.54557,231.06305 162.2172,229.9582 C 162.88655,228.85123 163.45607,227.676 163.92575,226.42612 C 164.39543,225.17837 164.75621,223.83677 165.0126,222.4056 C 165.26673,220.97229 165.39606,219.3918 165.39606,217.65989 C 165.39606,215.94077 165.26673,214.37522 165.0126,212.95897 C 164.75621,211.54486 164.39543,210.22032 163.92575,208.98964 C 163.45607,207.75682 162.88655,206.59439 162.2172,205.50021 C 161.54557,204.4039 160.7968,203.32038 159.96862,202.24326 L 163.86222,202.24326 C 164.66544,203.13695 165.43463,204.13089 166.16752,205.22293 C 166.90041,206.31924 167.5448,207.51153 168.10978,208.80834 C 168.66796,210.10301 169.11495,211.50006 169.44622,212.99523 C 169.77523,214.48613 169.93859,216.08367 169.93859,217.77933 z "
+ id="path19" />
+ <path
+ d="M 130.08665,128.92351 C 142.2757,129.23705 146.28048,135.2369 146.28048,142.59328 C 146.28048,149.97526 142.17133,155.99005 129.96185,156.26733 C 129.66915,156.27372 118.28559,156.27799 117.99743,156.27799 C 105.65181,156.27799 101.56989,150.15016 101.56989,142.59328 C 101.56989,135.03641 105.64954,128.90858 117.99743,128.90858 C 118.32417,128.90858 129.75084,128.91285 130.08665,128.92351 z "
+ id="path21"
+ style="fill:#ffffff" />
+</svg>
diff --git a/packages/gpe-bootsplash/files/svn-build.patch b/packages/gpe-bootsplash/files/svn-build.patch
new file mode 100644
index 0000000000..83bb069a7c
--- /dev/null
+++ b/packages/gpe-bootsplash/files/svn-build.patch
@@ -0,0 +1,239 @@
+--- gpe-bootsplash.orig/Makefile 2007-04-08 02:00:43.064935587 +0300
++++ gpe-bootsplash/Makefile 2007-04-08 02:01:24.703308411 +0300
+@@ -1,6 +1,6 @@
+ PACKAGE = gpe-bootsplash
+ VERSION = 1.15
+-CVSBUILD = yes
++CVSBUILD = no
+
+ PACKAGE_CFLAGS = `pkg-config --cflags gdk-pixbuf-2.0 libsvg-cairo` `pkg-config --libs gdk-pixbuf-2.0 libsvg-cairo` -DGTK2
+ CFLAGS = -fomit-frame-pointer -Os
+diff -Naur gpe-bootsplash.orig/build/Makefile.dpkg_ipkg gpe-bootsplash/build/Makefile.dpkg_ipkg
+--- gpe-bootsplash.orig/build/Makefile.dpkg_ipkg 1970-01-01 02:00:00.000000000 +0200
++++ gpe-bootsplash/build/Makefile.dpkg_ipkg 2007-02-10 17:21:40.154584782 +0200
+@@ -0,0 +1,114 @@
++## Please read the README in this directory to see how to use this
++## Makefile snippet
++
++# Let's use whatever clean target the specific app provides
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# URL to source tarball
++SOURCE = http://gpe.linuxtogo.org/download/source/$(PACKAGE)-$(VERSION).tar.gz
++
++# can change this to e.g. /var/tmp/deb
++DEB_PATH = ../deb
++
++ifeq ($(CVSBUILD),yes)
++LIBGPEWIDGET_PC = libgpewidget-uninstalled
++PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget
++else
++LIBGPEWIDGET_PC = libgpewidget
++endif
++
++ifeq ($(IN_LIBGPEWIDGET),)
++GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC))
++GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC))
++endif
++
++GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0)
++GTKLIBS = $(shell pkg-config --libs gtk+-2.0)
++
++STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
++STANDARD_CFLAGS = -MD -Wall
++
++ifeq ($(DEBUG),yes)
++CFLAGS += -O2 -g
++LDFLAGS = -g
++else
++CFLAGS += -Os -fomit-frame-pointer
++endif
++
++dist: check-source clean dist-prep
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ mkdir ../$(PACKAGE)-$(VERSION)
++ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -)
++ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile )
++ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz )
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ $(MAKE) printinfo
++
++dist-upload: dist
++ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@linuxtogo.org:/media/data/projects/gpe/source/
++
++dist-prep:
++ipkg-prep:
++install-mo:
++# empty, can be filled in Makefile.translation
++
++install: install-program install-mo
++
++clean-dist:
++ rm -rf familiar/dist familiar/dist.list
++
++clean: clean-dist
++
++check-source:
++ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi
++
++ipkg: check-source ipkg-prep clean
++ rm -rf familiar/dist
++ mkdir -p familiar/dist/CONTROL
++ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control
++ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi
++ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi
++ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi
++ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi
++ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi
++ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program
++ rm -rf familiar/dist.list
++ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list
++ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi
++ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch
++ rm -rf familiar/dist familiar/dist.list
++ $(MAKE) printinfo
++
++dpkg: dist
++ mkdir -p $(DEB_PATH)
++ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz )
++ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian
++ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done
++
++CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
++printinfo:
++ @printf '-------------------------------------------------------------------------------\n'
++ @printf "If this becomes a package release, please add a CVS tag.\n"
++ @printf "You can use 'make tag' for that, it will execute\n"
++ @printf " cvs tag %s\n" $(CVSTAG)
++ @printf "Please upload a tarball (created with 'make dist') to\n"
++ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n"
++ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n"
++ @printf "You can use 'make dist-upload' to do that.\n"
++ @printf "You are currently known as USER %s.\n" $(USER)
++ @printf '-------------------------------------------------------------------------------\n'
++
++tag: check-source
++ cvs tag $(CVSTAG)
++
++retag: check-source
++ cvs tag -F $(CVSTAG)
++
++source: tag dist-upload
++
++%.pc: %.pc.in
++ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@
++
++.c.o:;
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@
+diff -Naur gpe-bootsplash.orig/build/Makefile.translation gpe-bootsplash/build/Makefile.translation
+--- gpe-bootsplash.orig/build/Makefile.translation 1970-01-01 02:00:00.000000000 +0200
++++ gpe-bootsplash/build/Makefile.translation 2007-02-10 17:21:46.170927636 +0200
+@@ -0,0 +1,107 @@
++.SUFFIXES: .mo .po .pot .po8
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# use ipkg-build or ipkg-deb-build
++IPKG_BUILD := ipkg-build
++
++TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint
++
++ifeq ($(DIR_PO),)
++DIR_PO := po
++endif
++
++ifeq ($(BINPACKAGE),)
++BINPACKAGE := $(PACKAGE)
++endif
++
++mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS))
++po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++
++ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present)
++desktop-files += $(PACKAGE).desktop
++endif
++
++ifneq ($(EXTRA_DESKTOPS),)
++desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS))
++endif
++
++all-mo: $(mo-files)
++
++all-desktop: $(desktop-files)
++
++install-mo: all-mo
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ if [ "x$(LINGUAS)" != "x" ]; then \
++ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \
++ fi; \
++ fi;
++
++.po8.mo:;
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ msgfmt -o $@ $<; \
++ fi;
++
++.po.po8:;
++ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@
++
++update-po: $(po-files) extract-po
++
++dist-prep: update-po freshen-po
++# empty
++
++ifeq ($(CVSBUILD),yes)
++ipkg-prep: freshen-po
++# empty
++endif
++
++extract-po:
++ mkdir -p $(DIR_PO)
++ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi )
++ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi
++
++clean: clean-po clean-dist-translation
++
++clean-po:
++ rm -rf $(DIR_PO)/*.mo
++ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done
++
++%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++ intltool-merge -u -d $(DIR_PO) $< $@
++
++freshen-po:
++ rm -rf tmp-po
++ mkdir tmp-po
++ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done
++ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done
++ rm -rf tmp-po
++
++# ------------------------------------------------------------------------
++
++MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-)
++
++ifndef BUILD
++BUILD = ../build
++endif
++
++transdist := familiar/dist-translation
++templates := $(BUILD)/familiar
++ipkglist := translation-ipkgs.txt
++
++clean-dist-translation:
++ rm -rf $(transdist) $(ipkglist)
++
++real-translation-package: all-mo
++ rm -rf $(transdist) $(ipkglist)
++ for LINGUA in $(LINGUAS); do \
++ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \
++ mkdir -p $(transdist)/$$i/CONTROL; \
++ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \
++ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \
++ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \
++ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \
++ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \
++ done
++
++translation-ipkg:
++ make PREFIX=/usr real-translation-package
diff --git a/packages/gpe-bootsplash/gpe-bootsplash-theme-gpephone.bb b/packages/gpe-bootsplash/gpe-bootsplash-theme-gpephone.bb
new file mode 100644
index 0000000000..c170746e79
--- /dev/null
+++ b/packages/gpe-bootsplash/gpe-bootsplash-theme-gpephone.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "A GPE Phone Edition theme for gpe-bootsplash"
+SECTION = "base"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "gpe-bootsplash"
+RDEPENDS = "gpe-bootsplash"
+PR = "r0"
+
+export THEME = "gpephone"
+
+SRC_URI = "file://splash-${THEME}-portrait.svg \
+ file://splash-${THEME}-landscape.svg"
+
+do_install() {
+ install -d "${D}${datadir}/gpe"
+ install -m 0644 ${WORKDIR}/splash-${THEME}* ${D}${datadir}/gpe
+}
+
+pkg_postinst() {
+ update-alternatives --install /usr/share/gpe/splash-l.svg bootsplash-l /usr/share/gpe/splash-${THEME}-landscape.svg 20
+ update-alternatives --install /usr/share/gpe/splash-p.svg bootsplash-p /usr/share/gpe/splash-${THEME}-portrait.svg 20
+}
+
+pkg_postrm() {
+ update-alternatives --remove bootsplash-l /usr/share/gpe/splash-${THEME}-landscape.svg
+ update-alternatives --remove bootsplash-p /usr/share/gpe/splash-${THEME}-portrait.svg
+}
+
+FILES_${PN} = "/usr/share/gpe/splash-${THEME}-*"
diff --git a/packages/gpe-bootsplash/gpe-bootsplash_1.15.bb b/packages/gpe-bootsplash/gpe-bootsplash_1.15.bb
index d9b4141204..fdb73492db 100644
--- a/packages/gpe-bootsplash/gpe-bootsplash_1.15.bb
+++ b/packages/gpe-bootsplash/gpe-bootsplash_1.15.bb
@@ -4,7 +4,7 @@ DEPENDS = "gtk+ libsvg-cairo"
SECTION = "gpe"
PRIORITY = "optional"
LICENSE = "GPL"
-PR = "r6"
+PR = "r7"
SRC_URI += "file://splash-p.svg \
file://splash-l.svg \
diff --git a/packages/gpe-bootsplash/gpe-bootsplash_svn.bb b/packages/gpe-bootsplash/gpe-bootsplash_svn.bb
new file mode 100644
index 0000000000..df6d5da0c1
--- /dev/null
+++ b/packages/gpe-bootsplash/gpe-bootsplash_svn.bb
@@ -0,0 +1,36 @@
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libsvg-cairo"
+PR = "r0"
+PV = "1.15+svn-${SRCDATE}"
+
+inherit autotools
+
+SRC_URI += "${GPE_SVN} \
+ file://splash-p.svg \
+ file://splash-l.svg \
+ file://init.patch;patch=1 \
+ file://svn-build.patch;patch=1"
+
+S = "${WORKDIR}/${PN}"
+
+
+do_install_append() {
+ install -m 0644 ${WORKDIR}/splash-p.svg ${D}${datadir}/gpe/splash-gpe-portrait.svg
+ install -m 0644 ${WORKDIR}/splash-l.svg ${D}${datadir}/gpe/splash-gpe-landscape.svg
+ mv ${D}${sysconfdir}/rcS.d/S00bootsplash ${D}${sysconfdir}/rcS.d/S07bootsplash
+}
+
+FILES_${PN} += "${datadir}/gpe"
+
+pkg_postinst() {
+ update-alternatives --install /usr/share/gpe/splash-l.svg bootsplash-l /usr/share/gpe/splash-gpe-landscape.svg 10
+ update-alternatives --install /usr/share/gpe/splash-p.svg bootsplash-p /usr/share/gpe/splash-gpe-portrait.svg 10
+}
+pkg_postrm() {
+ update-alternatives --remove bootsplash-l /usr/share/gpe/splash-gpe-landscape.svg
+ update-alternatives --remove bootsplash-p /usr/share/gpe/splash-gpe-portrait.svg
+}
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-buttonbox/gpe-buttonbox_cvs.bb b/packages/gpe-buttonbox/gpe-buttonbox_cvs.bb
deleted file mode 100644
index f982c4517f..0000000000
--- a/packages/gpe-buttonbox/gpe-buttonbox_cvs.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-DEFAULT_PREFERENCE = "-1"
-LICENSE = "GPL"
-DESCRIPTION = "Buttonbox for gpe"
-
-SRC_URI = "${HANDHELDS_CVS};module=gpe/base/gpe-buttonbox"
-
-DEPENDS = "libgpewidget libgpelaunch"
-
-S = "${WORKDIR}/${PN}"
-#Remove the dash below when 0.5 changes in PV
-PV = "0.5+cvs-${SRCDATE}"
-PR = "r0"
-
-inherit autotools
-
-FILES_${PN} += "${datadir}/gpe"
-
diff --git a/packages/gpe-buttonbox/gpe-buttonbox_svn.bb b/packages/gpe-buttonbox/gpe-buttonbox_svn.bb
new file mode 100644
index 0000000000..f1a932f788
--- /dev/null
+++ b/packages/gpe-buttonbox/gpe-buttonbox_svn.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Buttonbox for gpe"
+LICENSE = "GPL"
+DEPENDS = "libgpewidget libgpelaunch"
+PV = "0.5+svn-${SRCDATE}"
+PR = "r0"
+
+inherit autotools
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+FILES_${PN} += "${datadir}/gpe"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-calendar/gpe-calendar_svn.bb b/packages/gpe-calendar/gpe-calendar_svn.bb
index d6a232b225..d83ee3a151 100644
--- a/packages/gpe-calendar/gpe-calendar_svn.bb
+++ b/packages/gpe-calendar/gpe-calendar_svn.bb
@@ -10,7 +10,7 @@ RDEPENDS = "gpe-icons"
inherit autotools gpe
-PV = "0.72+svn${SRCDATE}"
+PV = "0.90+svn${SRCDATE}"
PR = "r0"
SRC_URI = "${GPE_SVN}"
diff --git a/packages/gpe-clock/files/.mtn2git_empty b/packages/gpe-clock/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpe-clock/files/.mtn2git_empty
diff --git a/packages/gpe-clock/files/svn-build.patch b/packages/gpe-clock/files/svn-build.patch
new file mode 100644
index 0000000000..69c6d6d07f
--- /dev/null
+++ b/packages/gpe-clock/files/svn-build.patch
@@ -0,0 +1,240 @@
+--- gpe-clock/Makefile.orig 2007-04-07 13:50:17.507459397 +0300
++++ gpe-clock/Makefile 2007-04-07 13:50:25.711926944 +0300
+@@ -2,7 +2,7 @@
+ PREFIX = /usr/local
+ DEBUG = no
+ GTK2 = yes
+-CVSBUILD = yes
++CVSBUILD = no
+ VERSION = 0.25
+
+ LINGUAS = nl pt cs fr de ro ru sr sk sv es
+diff -Naur gpe-clock.orig/build/Makefile.dpkg_ipkg gpe-clock/build/Makefile.dpkg_ipkg
+--- gpe-clock.orig/build/Makefile.dpkg_ipkg 1970-01-01 02:00:00.000000000 +0200
++++ gpe-clock/build/Makefile.dpkg_ipkg 2007-02-10 17:21:40.154584782 +0200
+@@ -0,0 +1,114 @@
++## Please read the README in this directory to see how to use this
++## Makefile snippet
++
++# Let's use whatever clean target the specific app provides
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# URL to source tarball
++SOURCE = http://gpe.linuxtogo.org/download/source/$(PACKAGE)-$(VERSION).tar.gz
++
++# can change this to e.g. /var/tmp/deb
++DEB_PATH = ../deb
++
++ifeq ($(CVSBUILD),yes)
++LIBGPEWIDGET_PC = libgpewidget-uninstalled
++PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget
++else
++LIBGPEWIDGET_PC = libgpewidget
++endif
++
++ifeq ($(IN_LIBGPEWIDGET),)
++GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC))
++GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC))
++endif
++
++GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0)
++GTKLIBS = $(shell pkg-config --libs gtk+-2.0)
++
++STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
++STANDARD_CFLAGS = -MD -Wall
++
++ifeq ($(DEBUG),yes)
++CFLAGS += -O2 -g
++LDFLAGS = -g
++else
++CFLAGS += -Os -fomit-frame-pointer
++endif
++
++dist: check-source clean dist-prep
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ mkdir ../$(PACKAGE)-$(VERSION)
++ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -)
++ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile )
++ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz )
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ $(MAKE) printinfo
++
++dist-upload: dist
++ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@linuxtogo.org:/media/data/projects/gpe/source/
++
++dist-prep:
++ipkg-prep:
++install-mo:
++# empty, can be filled in Makefile.translation
++
++install: install-program install-mo
++
++clean-dist:
++ rm -rf familiar/dist familiar/dist.list
++
++clean: clean-dist
++
++check-source:
++ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi
++
++ipkg: check-source ipkg-prep clean
++ rm -rf familiar/dist
++ mkdir -p familiar/dist/CONTROL
++ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control
++ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi
++ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi
++ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi
++ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi
++ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi
++ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program
++ rm -rf familiar/dist.list
++ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list
++ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi
++ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch
++ rm -rf familiar/dist familiar/dist.list
++ $(MAKE) printinfo
++
++dpkg: dist
++ mkdir -p $(DEB_PATH)
++ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz )
++ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian
++ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done
++
++CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
++printinfo:
++ @printf '-------------------------------------------------------------------------------\n'
++ @printf "If this becomes a package release, please add a CVS tag.\n"
++ @printf "You can use 'make tag' for that, it will execute\n"
++ @printf " cvs tag %s\n" $(CVSTAG)
++ @printf "Please upload a tarball (created with 'make dist') to\n"
++ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n"
++ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n"
++ @printf "You can use 'make dist-upload' to do that.\n"
++ @printf "You are currently known as USER %s.\n" $(USER)
++ @printf '-------------------------------------------------------------------------------\n'
++
++tag: check-source
++ cvs tag $(CVSTAG)
++
++retag: check-source
++ cvs tag -F $(CVSTAG)
++
++source: tag dist-upload
++
++%.pc: %.pc.in
++ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@
++
++.c.o:;
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@
+diff -Naur gpe-clock.orig/build/Makefile.translation gpe-clock/build/Makefile.translation
+--- gpe-clock.orig/build/Makefile.translation 1970-01-01 02:00:00.000000000 +0200
++++ gpe-clock/build/Makefile.translation 2007-02-10 17:21:46.170927636 +0200
+@@ -0,0 +1,107 @@
++.SUFFIXES: .mo .po .pot .po8
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# use ipkg-build or ipkg-deb-build
++IPKG_BUILD := ipkg-build
++
++TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint
++
++ifeq ($(DIR_PO),)
++DIR_PO := po
++endif
++
++ifeq ($(BINPACKAGE),)
++BINPACKAGE := $(PACKAGE)
++endif
++
++mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS))
++po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++
++ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present)
++desktop-files += $(PACKAGE).desktop
++endif
++
++ifneq ($(EXTRA_DESKTOPS),)
++desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS))
++endif
++
++all-mo: $(mo-files)
++
++all-desktop: $(desktop-files)
++
++install-mo: all-mo
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ if [ "x$(LINGUAS)" != "x" ]; then \
++ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \
++ fi; \
++ fi;
++
++.po8.mo:;
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ msgfmt -o $@ $<; \
++ fi;
++
++.po.po8:;
++ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@
++
++update-po: $(po-files) extract-po
++
++dist-prep: update-po freshen-po
++# empty
++
++ifeq ($(CVSBUILD),yes)
++ipkg-prep: freshen-po
++# empty
++endif
++
++extract-po:
++ mkdir -p $(DIR_PO)
++ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi )
++ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi
++
++clean: clean-po clean-dist-translation
++
++clean-po:
++ rm -rf $(DIR_PO)/*.mo
++ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done
++
++%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++ intltool-merge -u -d $(DIR_PO) $< $@
++
++freshen-po:
++ rm -rf tmp-po
++ mkdir tmp-po
++ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done
++ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done
++ rm -rf tmp-po
++
++# ------------------------------------------------------------------------
++
++MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-)
++
++ifndef BUILD
++BUILD = ../build
++endif
++
++transdist := familiar/dist-translation
++templates := $(BUILD)/familiar
++ipkglist := translation-ipkgs.txt
++
++clean-dist-translation:
++ rm -rf $(transdist) $(ipkglist)
++
++real-translation-package: all-mo
++ rm -rf $(transdist) $(ipkglist)
++ for LINGUA in $(LINGUAS); do \
++ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \
++ mkdir -p $(transdist)/$$i/CONTROL; \
++ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \
++ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \
++ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \
++ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \
++ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \
++ done
++
++translation-ipkg:
++ make PREFIX=/usr real-translation-package
diff --git a/packages/gpe-clock/gpe-clock.inc b/packages/gpe-clock/gpe-clock.inc
new file mode 100644
index 0000000000..d4ae3da39c
--- /dev/null
+++ b/packages/gpe-clock/gpe-clock.inc
@@ -0,0 +1,8 @@
+DESCRIPTION = "GPE panel clock"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libschedule libgpewidget gpe-announce atd libgpelaunch"
+RDEPENDS = "gpe-announce"
+
+inherit gpe
diff --git a/packages/gpe-clock/gpe-clock_0.14.bb b/packages/gpe-clock/gpe-clock_0.14.bb
index 9dcb7a6fcb..8b888f5126 100644
--- a/packages/gpe-clock/gpe-clock_0.14.bb
+++ b/packages/gpe-clock/gpe-clock_0.14.bb
@@ -1,11 +1,5 @@
-inherit gpe
+require gpe-clock.inc
-DESCRIPTION = "GPE panel clock"
-DEPENDS = "gtk+ libschedule libgpewidget gpe-announce atd"
-RDEPENDS = "gpe-announce atd"
-SECTION = "gpe"
-PRIORITY = "optional"
-LICENSE = "GPL"
PR = "r1"
SRC_URI = "${GPE_MIRROR}/${PN}-${PV}.tar.gz \
diff --git a/packages/gpe-clock/gpe-clock_0.20.bb b/packages/gpe-clock/gpe-clock_0.20.bb
index 121db0c807..3ef23edcb2 100644
--- a/packages/gpe-clock/gpe-clock_0.20.bb
+++ b/packages/gpe-clock/gpe-clock_0.20.bb
@@ -1,10 +1,3 @@
-inherit gpe
-
-DESCRIPTION = "GPE panel clock"
-DEPENDS = "gtk+ libschedule libgpewidget gpe-announce atd libgpelaunch"
-RDEPENDS = "gpe-announce atd"
-SECTION = "gpe"
-PRIORITY = "optional"
-LICENSE = "GPL"
+require gpe-clock.inc
SRC_URI += "file://default-time-24hrs.patch;patch=1"
diff --git a/packages/gpe-clock/gpe-clock_0.21.bb b/packages/gpe-clock/gpe-clock_0.21.bb
index 51b001208b..de509fda40 100644
--- a/packages/gpe-clock/gpe-clock_0.21.bb
+++ b/packages/gpe-clock/gpe-clock_0.21.bb
@@ -1,9 +1 @@
-inherit gpe
-
-DESCRIPTION = "GPE panel clock"
-DEPENDS = "gtk+ libschedule libgpewidget gpe-announce atd libgpelaunch"
-RDEPENDS = "gpe-announce atd"
-SECTION = "gpe"
-PRIORITY = "optional"
-LICENSE = "GPL"
-
+require gpe-clock.inc
diff --git a/packages/gpe-clock/gpe-clock_0.23.bb b/packages/gpe-clock/gpe-clock_0.23.bb
index 51b001208b..de509fda40 100644
--- a/packages/gpe-clock/gpe-clock_0.23.bb
+++ b/packages/gpe-clock/gpe-clock_0.23.bb
@@ -1,9 +1 @@
-inherit gpe
-
-DESCRIPTION = "GPE panel clock"
-DEPENDS = "gtk+ libschedule libgpewidget gpe-announce atd libgpelaunch"
-RDEPENDS = "gpe-announce atd"
-SECTION = "gpe"
-PRIORITY = "optional"
-LICENSE = "GPL"
-
+require gpe-clock.inc
diff --git a/packages/gpe-clock/gpe-clock_0.24.bb b/packages/gpe-clock/gpe-clock_0.24.bb
index 51b001208b..de509fda40 100644
--- a/packages/gpe-clock/gpe-clock_0.24.bb
+++ b/packages/gpe-clock/gpe-clock_0.24.bb
@@ -1,9 +1 @@
-inherit gpe
-
-DESCRIPTION = "GPE panel clock"
-DEPENDS = "gtk+ libschedule libgpewidget gpe-announce atd libgpelaunch"
-RDEPENDS = "gpe-announce atd"
-SECTION = "gpe"
-PRIORITY = "optional"
-LICENSE = "GPL"
-
+require gpe-clock.inc
diff --git a/packages/gpe-clock/gpe-clock_0.25.bb b/packages/gpe-clock/gpe-clock_0.25.bb
index 51b001208b..de509fda40 100644
--- a/packages/gpe-clock/gpe-clock_0.25.bb
+++ b/packages/gpe-clock/gpe-clock_0.25.bb
@@ -1,9 +1 @@
-inherit gpe
-
-DESCRIPTION = "GPE panel clock"
-DEPENDS = "gtk+ libschedule libgpewidget gpe-announce atd libgpelaunch"
-RDEPENDS = "gpe-announce atd"
-SECTION = "gpe"
-PRIORITY = "optional"
-LICENSE = "GPL"
-
+require gpe-clock.inc
diff --git a/packages/gpe-clock/gpe-clock_svn.bb b/packages/gpe-clock/gpe-clock_svn.bb
new file mode 100644
index 0000000000..a8bbb89e67
--- /dev/null
+++ b/packages/gpe-clock/gpe-clock_svn.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "GPE panel clock"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libschedule libgpewidget gpe-announce atd libgpelaunch"
+RDEPENDS = "gpe-announce"
+
+inherit autotools
+
+SRC_URI = "${GPE_SVN} \
+ file://svn-build.patch;patch=1"
+
+S = "${WORKDIR}/${PN}"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-conf/gpe-conf-0.2.4/.mtn2git_empty b/packages/gpe-conf/gpe-conf-0.2.4/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpe-conf/gpe-conf-0.2.4/.mtn2git_empty
diff --git a/packages/gpe-conf/gpe-conf-0.2.4/scriptname.patch b/packages/gpe-conf/gpe-conf-0.2.4/scriptname.patch
new file mode 100644
index 0000000000..e66d509c9f
--- /dev/null
+++ b/packages/gpe-conf/gpe-conf-0.2.4/scriptname.patch
@@ -0,0 +1,13 @@
+Index: Makefile.am
+===================================================================
+--- Makefile.am (revision 9037)
++++ Makefile.am (working copy)
+@@ -178,7 +178,7 @@
+
+ install-data-hook:
+ chmod u+s $(DESTDIR)$(bindir)/gpe-conf
+- cd $(DESTDIR)/$(xscriptsdir) && mv soundsettings.sh S30soundsettings
++ cd $(DESTDIR)/$(xscriptsdir) && mv soundsettings.sh 30soundsettings
+
+ deb: dist
+ -mkdir $(top_builddir)/debian-build
diff --git a/packages/gpe-conf/gpe-conf-0.2.5/.mtn2git_empty b/packages/gpe-conf/gpe-conf-0.2.5/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpe-conf/gpe-conf-0.2.5/.mtn2git_empty
diff --git a/packages/gpe-conf/gpe-conf-0.2.5/backlight-bugfix.patch b/packages/gpe-conf/gpe-conf-0.2.5/backlight-bugfix.patch
new file mode 100644
index 0000000000..7a953c25ec
--- /dev/null
+++ b/packages/gpe-conf/gpe-conf-0.2.5/backlight-bugfix.patch
@@ -0,0 +1,11 @@
+--- gpe-conf-0.2.5/modules/screen/brightness.c~brightness
++++ gpe-conf-0.2.5/modules/screen/brightness.c
+@@ -216,7 +216,7 @@
+ FILE *f_power;
+ gint value = SYS_STATE_ON;
+
+- f_power = fopen(SYS_BRIGHTNESS, "r");
++ f_power = fopen(SYS_POWER, "r");
+ if (f_power != NULL)
+ {
+ fscanf(f_power,"%i", &value);
diff --git a/packages/gpe-conf/gpe-conf-0.2.5/wireless.patch b/packages/gpe-conf/gpe-conf-0.2.5/wireless.patch
new file mode 100644
index 0000000000..4e52f8b092
--- /dev/null
+++ b/packages/gpe-conf/gpe-conf-0.2.5/wireless.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- gpe-conf-0.2.5/modules/sysinfo.c~wireless
++++ gpe-conf-0.2.5/modules/sysinfo.c
+@@ -28,6 +28,8 @@
+ #include <sys/utsname.h>
+
+ #include <sys/socket.h>
++#include <linux/types.h>
++#include <linux/if.h>
+ #include <linux/wireless.h>
+ #include <sys/ioctl.h>
+
diff --git a/packages/gpe-conf/gpe-conf_0.2.2.bb b/packages/gpe-conf/gpe-conf_0.2.2.bb
deleted file mode 100644
index deea518a86..0000000000
--- a/packages/gpe-conf/gpe-conf_0.2.2.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "Configuration applets for GPE"
-SECTION = "gpe"
-PRIORITY = "optional"
-LICENSE = "GPL"
-
-DEPENDS = "gtk+ esound audiofile libgpewidget libxsettings libxsettings-client"
-RDEPENDS_${PN} = "xst xset ipaq-sleep ntpdate gpe-login gpe-icons timezones"
-RDEPENDS_gpe-conf-panel = "gpe-conf"
-
-PR = "r0"
-
-GPE_TARBALL_SUFFIX = "bz2"
-
-inherit gpe autotools pkgconfig
-
-PACKAGES += "gpe-conf-panel"
-
-FILES_${PN} = "${sysconfdir} ${bindir} ${datadir}/pixmaps \
- ${datadir}/applications/gpe-conf-* ${datadir}/gpe/pixmaps \
- ${datadir}/gpe-conf"
-FILES_gpe-conf-panel = "${datadir}/applications/gpe-conf.desktop"
-
-
diff --git a/packages/gpe-conf/gpe-conf_0.2.3.bb b/packages/gpe-conf/gpe-conf_0.2.3.bb
new file mode 100644
index 0000000000..0cb645c5d4
--- /dev/null
+++ b/packages/gpe-conf/gpe-conf_0.2.3.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Configuration applets for GPE"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+DEPENDS = "gtk+ esound audiofile libgpewidget libxsettings libxsettings-client"
+RDEPENDS_${PN} = "xst xset ipaq-sleep ntpdate gpe-login gpe-icons tzdata"
+RDEPENDS_gpe-conf-panel = "gpe-conf"
+
+PR = "r1"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpe autotools pkgconfig
+
+PACKAGES += "gpe-conf-panel"
+
+FILES_${PN} = "${sysconfdir} ${bindir} ${datadir}/pixmaps \
+ ${datadir}/applications/gpe-conf-* ${datadir}/gpe/pixmaps \
+ ${datadir}/gpe-conf"
+FILES_gpe-conf-panel = "${datadir}/applications/gpe-conf.desktop"
diff --git a/packages/gpe-conf/gpe-conf_0.2.4.bb b/packages/gpe-conf/gpe-conf_0.2.4.bb
new file mode 100644
index 0000000000..15a5bce0f3
--- /dev/null
+++ b/packages/gpe-conf/gpe-conf_0.2.4.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Configuration applets for GPE"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+DEPENDS = "gtk+ esound audiofile libgpewidget libxsettings libxsettings-client libxrandr"
+RDEPENDS_${PN} = "xst xset ntpdate gpe-login gpe-icons tzdata xrandr"
+RDEPENDS_gpe-conf-panel = "gpe-conf"
+
+PR = "r2"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpe autotools pkgconfig
+
+SRC_URI += "file://scriptname.patch;patch=1;pnum=0"
+
+PACKAGES += "gpe-conf-panel"
+
+FILES_${PN} = "${sysconfdir} ${bindir} ${datadir}/pixmaps \
+ ${datadir}/applications/gpe-conf-* ${datadir}/gpe/pixmaps \
+ ${datadir}/gpe-conf"
+FILES_gpe-conf-panel = "${datadir}/applications/gpe-conf.desktop"
+
+
diff --git a/packages/gpe-conf/gpe-conf_0.2.5.bb b/packages/gpe-conf/gpe-conf_0.2.5.bb
new file mode 100644
index 0000000000..8cb2d61f3d
--- /dev/null
+++ b/packages/gpe-conf/gpe-conf_0.2.5.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Configuration applets for GPE"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+DEPENDS = "gtk+ esound audiofile libgpewidget libxsettings libxsettings-client libxrandr"
+RDEPENDS_${PN} = "xst xset ntpdate gpe-login gpe-icons tzdata xrandr"
+RDEPENDS_gpe-conf-panel = "gpe-conf"
+
+RPROVIDES_${PN} += " bl"
+RCONFLICTS_${PN} = "bl"
+
+PR = "r4"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpe autotools pkgconfig
+
+PACKAGES += "gpe-conf-panel"
+
+FILES_${PN} = "${sysconfdir} ${bindir} ${datadir}/pixmaps \
+ ${datadir}/applications/gpe-conf-* ${datadir}/gpe/pixmaps \
+ ${datadir}/gpe-conf"
+FILES_gpe-conf-panel = "${datadir}/applications/gpe-conf.desktop"
+
+SRC_URI += "file://backlight-bugfix.patch;patch=1 \
+ file://wireless.patch;patch=1"
diff --git a/packages/gpe-conf/gpe-conf_svn.bb b/packages/gpe-conf/gpe-conf_svn.bb
index e4675ecfae..266053073a 100644
--- a/packages/gpe-conf/gpe-conf_svn.bb
+++ b/packages/gpe-conf/gpe-conf_svn.bb
@@ -5,14 +5,14 @@ SECTION = "gpe"
PRIORITY = "optional"
LICENSE = "GPL"
-DEPENDS = "gtk+ libgpewidget libxsettings libxsettings-client pcmcia-cs xst xset ipaq-sleep ntp gpe-login gpe-icons"
-RDEPENDS_${PN} = "xst xset ipaq-sleep ntpdate gpe-login gpe-icons"
+DEPENDS = "gtk+ libgpewidget libxsettings libxsettings-client pcmcia-cs xst xset ntp gpe-login gpe-icons"
+RDEPENDS_${PN} = "xst tzdata xset ntpdate gpe-login gpe-icons"
RDEPENDS_gpe-conf-panel = "gpe-conf"
inherit autotools gpe
-PV = "0.2.2+svn${SRCDATE}"
-PR = "r0"
+PV = "0.2.5+svn${SRCDATE}"
+PR = "r1"
SRC_URI = "${GPE_SVN}"
S = "${WORKDIR}/${PN}"
diff --git a/packages/gpe-contacts/gpe-contacts_cvs.bb b/packages/gpe-contacts/gpe-contacts_cvs.bb
deleted file mode 100644
index d73b31ea3b..0000000000
--- a/packages/gpe-contacts/gpe-contacts_cvs.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-LICENSE = "GPL"
-DEFAULT_PREFERENCE = "-1"
-
-S = "${WORKDIR}/${PN}"
-PV = "0.43+cvs${SRCDATE}"
-PR = "r0"
-
-inherit autotools gpe
-
-SRC_URI = "${HANDHELDS_CVS};module=gpe/base/${PN}"
-
-
-DEPENDS = "libcontactsdb libgpewidget libgpepimc libdisplaymigration libgpevtype dbus"
-SECTION = "gpe"
-RDEPENDS = "gpe-icons"
-DESCRIPTION = "GPE contacts manager"
-
-
-FILES_${PN} += " ${datadir}/gpe ${datadir}/gpe-contacts"
diff --git a/packages/gpe-contacts/gpe-contacts_svn.bb b/packages/gpe-contacts/gpe-contacts_svn.bb
new file mode 100644
index 0000000000..b5a22ebad2
--- /dev/null
+++ b/packages/gpe-contacts/gpe-contacts_svn.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "GPE contacts manager"
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "libcontactsdb libgpewidget libgpepimc libdisplaymigration libgpevtype dbus"
+RDEPENDS = "gpe-icons"
+PV = "0.43+svn${SRCDATE}"
+PR = "r0"
+
+inherit autotools gpe
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+
+FILES_${PN} += " ${datadir}/gpe ${datadir}/gpe-contacts"
+
+DEFAULT_PREFERENCE = "-1"
+
diff --git a/packages/gpe-dm/files/Xserver-cxk.patch b/packages/gpe-dm/files/Xserver-cxk.patch
deleted file mode 100644
index 89187a0e31..0000000000
--- a/packages/gpe-dm/files/Xserver-cxk.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gpe-dm-0.47/Xserver~ 2005-07-29 11:58:59.000000000 -0700
-+++ gpe-dm-0.47/Xserver 2005-08-01 11:20:42.000000000 -0700
-@@ -62,6 +62,8 @@
- ;;
- "SHARP Shepherd" | "SHARP Husky" | "SHARP Corgi")
- ARGS="$ARGS -rgba rgb" ;;
-+ "SHARP Spitz" | "SHARP Akita" | "SHARP Borzoi")
-+ ARGS="$ARGS -rgba rgb -screen 640x480@270" ;;
- "Simpad")
- ARGS="$ARGS -rgba rgb" ;;
- "Generic OMAP1510/1610/1710")
diff --git a/packages/gpe-dm/files/collie-suspend-hack.patch b/packages/gpe-dm/files/collie-suspend-hack.patch
deleted file mode 100644
index 94fc287f4e..0000000000
--- a/packages/gpe-dm/files/collie-suspend-hack.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -urNd ../gpe-dm-0.44-r1/gpe-dm-0.44/Xserver gpe-dm-0.44/Xserver
---- ../gpe-dm-0.44-r1/gpe-dm-0.44/Xserver 2005-02-20 17:39:31 +00:00
-+++ gpe-dm-0.44/Xserver 2005-04-01 21:47:12 +01:00
-@@ -45,8 +45,14 @@
- "HP iPAQ H5400" | "HP iPAQ H2200")
- ARGS="$ARGS -rgba rgb" ;;
- # both 'Sharp-Collie' and just 'Collie' have been reported
-- *Collie | *Poodle)
-+ *Poodle)
- ARGS="$ARGS -screen 320x240@270 -rgba vrgb" ;;
-+ *Collie)
-+ ARGS="$ARGS -screen 320x240@270 -rgba vrgb"
-+ # Horrible hack required to enable resuming after suspend
-+ rm -f /dev/apm_bios
-+ killall -9 apmd
-+ ;;
- "SHARP Shepherd" | "SHARP Husky" | "SHARP Corgi")
- ARGS="$ARGS -rgba rgb" ;;
- "Simpad")
diff --git a/packages/gpe-dm/files/mnci.patch b/packages/gpe-dm/files/mnci.patch
deleted file mode 100644
index 8cd7358f36..0000000000
--- a/packages/gpe-dm/files/mnci.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- gpe-dm-0.44/gpe-dm.init~ramses
-+++ gpe-dm-0.44/gpe-dm.init
-@@ -19,7 +19,7 @@
- stop)
- echo "Stopping GPE display manager: gpe-dm"
- killproc /usr/bin/gpe-dm
-- dd if=/dev/zero of=/dev/fb0 2>/dev/null
-+ dd if=/dev/zero of=/dev/fb0 2>/dev/null || dd if=/dev/zero of=/dev/fb/0 2>/dev/null
- ;;
-
- *)
---- gpe-dm-0.44/Xserver~ramses
-+++ gpe-dm-0.44/Xserver
-@@ -44,6 +44,8 @@
- ARGS="$ARGS -screen 320x240@270 -rgba vbgr" ;;
- "HP iPAQ H5400" | "HP iPAQ H2200")
- ARGS="$ARGS -rgba rgb" ;;
-+ "Ramses")
-+ ARGS="$ARGS -screen 320x240@90 -rgba vrgb vt2" ;;
- # both 'Sharp-Collie' and just 'Collie' have been reported
- *Poodle)
- ARGS="$ARGS -screen 320x240@270 -rgba vrgb" ;;
diff --git a/packages/gpe-dm/files/remove-X-scripts.patch b/packages/gpe-dm/files/remove-X-scripts.patch
deleted file mode 100644
index b3c85be788..0000000000
--- a/packages/gpe-dm/files/remove-X-scripts.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -Nur gpe-dm-0.47~/Makefile gpe-dm-0.47/Makefile
---- gpe-dm-0.47~/Makefile 2005-08-19 18:27:54.000000000 -0700
-+++ gpe-dm-0.47/Makefile 2005-08-19 18:28:37.000000000 -0700
-@@ -31,10 +31,6 @@
- install -d $(DESTDIR)/etc/init.d
- install -d $(DESTDIR)/etc/rc2.d
- install gpe-dm.init $(DESTDIR)/etc/init.d/gpe-dm
-- install -d $(DESTDIR)/etc/X11
-- install Xsession $(DESTDIR)/etc/X11/Xsession
-- install Xinit $(DESTDIR)/etc/X11/Xinit
-- install Xserver $(DESTDIR)/etc/X11/Xserver
-
- clean: clean-po
- rm -f gpe-dm gpe-dm.o
diff --git a/packages/gpe-dm/files/source-xsession-scripts.patch b/packages/gpe-dm/files/source-xsession-scripts.patch
deleted file mode 100644
index c92f230618..0000000000
--- a/packages/gpe-dm/files/source-xsession-scripts.patch
+++ /dev/null
@@ -1,27 +0,0 @@
---- gpe-dm-0.43/Xsession.old 2005-02-23 11:39:23.000000000 +0000
-+++ gpe-dm-0.43/Xsession 2005-02-23 12:21:28.011314968 +0000
-@@ -25,4 +25,23 @@
- SYSSESSIONDIR=/etc/X11/Xsession.d
- fi
-
--exec run-parts $SYSSESSIONDIR
-+# Use run-parts to source every file in the session directory; we source
-+# instead of executing so that the variables and functions defined above
-+# are available to the scripts, and so that they can pass variables to each
-+# other.
-+
-+# Can't use run-parts like this, busybox doesn't support it. Use ls instead
-+#SESSIONFILES=$(run-parts --list $SYSSESSIONDIR)
-+
-+SESSIONFILES=`ls -X $SYSSESSIONDIR`
-+if [ -n "$SESSIONFILES" ]; then
-+ for SESSIONFILE in $SESSIONFILES; do
-+ # Test if script is executable first before sourcing it
-+ if [ -x "$SYSSESSIONDIR/$SESSIONFILE" ]; then
-+ . $SYSSESSIONDIR/$SESSIONFILE
-+ fi
-+ done
-+fi
-+
-+exit 0
-+
diff --git a/packages/gpe-dm/gpe-dm_0.50.bb b/packages/gpe-dm/gpe-dm_0.50.bb
new file mode 100644
index 0000000000..d9ac68c257
--- /dev/null
+++ b/packages/gpe-dm/gpe-dm_0.50.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "GPE Display Manager"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "glib-2.0 xserver-common"
+RDEPENDS_${PN} += "procps xserver-common"
+
+GPE_TARBALL_SUFFIX ?= "bz2"
+
+inherit gpe autotools update-rc.d
+
+INITSCRIPT_NAME = "gpe-dm"
+INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
diff --git a/packages/gpe-dm/gpe-dm_0.51.bb b/packages/gpe-dm/gpe-dm_0.51.bb
new file mode 100644
index 0000000000..6cf1f002a0
--- /dev/null
+++ b/packages/gpe-dm/gpe-dm_0.51.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "GPE Display Manager"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "glib-2.0 xserver-common"
+RDEPENDS_${PN} += " xserver-common"
+
+GPE_TARBALL_SUFFIX ?= "bz2"
+
+inherit gpe autotools update-rc.d
+
+INITSCRIPT_NAME = "gpe-dm"
+INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
diff --git a/packages/gpe-dm/gpe-dm_svn.bb b/packages/gpe-dm/gpe-dm_svn.bb
new file mode 100644
index 0000000000..1b1409f29a
--- /dev/null
+++ b/packages/gpe-dm/gpe-dm_svn.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "GPE Display Manager"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "glib-2.0 xserver-common"
+RDEPENDS_${PN} += "procps xserver-common"
+PV = "gpe-dm-0.50+svn-${SRCDATE}"
+
+inherit gpe autotools update-rc.d
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+INITSCRIPT_NAME = "gpe-dm"
+INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-edit/gpe-edit_0.40.bb b/packages/gpe-edit/gpe-edit_0.40.bb
new file mode 100644
index 0000000000..a3e9a8b71a
--- /dev/null
+++ b/packages/gpe-edit/gpe-edit_0.40.bb
@@ -0,0 +1,8 @@
+DESCRIPTION = "Editor for the GPE Palmtop Environment"
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libgpewidget"
+
+GPE_TARBALL_SUFFIX ?= "bz2"
+
+inherit gpe autotools
diff --git a/packages/gpe-edit/gpe-edit_svn.bb b/packages/gpe-edit/gpe-edit_svn.bb
new file mode 100644
index 0000000000..780294bd13
--- /dev/null
+++ b/packages/gpe-edit/gpe-edit_svn.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Editor for the GPE Palmtop Environment"
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libgpewidget"
+
+inherit gpe autotools
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-expenses/gpe-expenses_0.0.6.bb b/packages/gpe-expenses/gpe-expenses_0.0.6.bb
index 90b189149c..29b09c7bab 100644
--- a/packages/gpe-expenses/gpe-expenses_0.0.6.bb
+++ b/packages/gpe-expenses/gpe-expenses_0.0.6.bb
@@ -1,7 +1,8 @@
-DESCRIPTION = "Equivalent for Expenses on the Palm. Supports payment types, categories, expense types (mileage, meals, parking, etc.), notes, currency selection etc."
+DESCRIPTION = "Simple expense record keeper for GPE. Equivalent for Expenses on the Palm."
+AUTHOR = "Neil Williams"
+HOMEPAGE = "http://gpe-expenses.sf.net"
LICENSE = "GPL"
-
-DEPENDS = "qof libgpewidget"
+DEPENDS = "qof libgpewidget popt-native libgpepimc"
SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz \
"
diff --git a/packages/gpe-filemanager/files/.mtn2git_empty b/packages/gpe-filemanager/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpe-filemanager/files/.mtn2git_empty
diff --git a/packages/gpe-filemanager/files/svn-build.patch b/packages/gpe-filemanager/files/svn-build.patch
new file mode 100644
index 0000000000..0e226459cf
--- /dev/null
+++ b/packages/gpe-filemanager/files/svn-build.patch
@@ -0,0 +1,240 @@
+--- gpe-filemanager.orig/Makefile 2007-04-03 15:33:07.466983913 +0300
++++ gpe-filemanager/Makefile 2007-04-03 15:33:28.216166345 +0300
+@@ -1,7 +1,7 @@
+ PREFIX = /usr/local
+ PACKAGE = gpe-filemanager
+ DEBUG = no
+-CVSBUILD = yes
++CVSBUILD = no
+ VERSION = 0.25
+ MIME_PIXMAPS = `cd pixmaps/document-icons && ls *.png`
+
+diff -Naur gpe-filemanager.orig/build/Makefile.dpkg_ipkg gpe-filemanager/build/Makefile.dpkg_ipkg
+--- gpe-filemanager.orig/build/Makefile.dpkg_ipkg 1970-01-01 02:00:00.000000000 +0200
++++ gpe-filemanager/build/Makefile.dpkg_ipkg 2007-02-10 17:21:40.154584782 +0200
+@@ -0,0 +1,114 @@
++## Please read the README in this directory to see how to use this
++## Makefile snippet
++
++# Let's use whatever clean target the specific app provides
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# URL to source tarball
++SOURCE = http://gpe.linuxtogo.org/download/source/$(PACKAGE)-$(VERSION).tar.gz
++
++# can change this to e.g. /var/tmp/deb
++DEB_PATH = ../deb
++
++ifeq ($(CVSBUILD),yes)
++LIBGPEWIDGET_PC = libgpewidget-uninstalled
++PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget
++else
++LIBGPEWIDGET_PC = libgpewidget
++endif
++
++ifeq ($(IN_LIBGPEWIDGET),)
++GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC))
++GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC))
++endif
++
++GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0)
++GTKLIBS = $(shell pkg-config --libs gtk+-2.0)
++
++STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
++STANDARD_CFLAGS = -MD -Wall
++
++ifeq ($(DEBUG),yes)
++CFLAGS += -O2 -g
++LDFLAGS = -g
++else
++CFLAGS += -Os -fomit-frame-pointer
++endif
++
++dist: check-source clean dist-prep
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ mkdir ../$(PACKAGE)-$(VERSION)
++ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -)
++ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile )
++ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz )
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ $(MAKE) printinfo
++
++dist-upload: dist
++ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@linuxtogo.org:/media/data/projects/gpe/source/
++
++dist-prep:
++ipkg-prep:
++install-mo:
++# empty, can be filled in Makefile.translation
++
++install: install-program install-mo
++
++clean-dist:
++ rm -rf familiar/dist familiar/dist.list
++
++clean: clean-dist
++
++check-source:
++ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi
++
++ipkg: check-source ipkg-prep clean
++ rm -rf familiar/dist
++ mkdir -p familiar/dist/CONTROL
++ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control
++ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi
++ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi
++ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi
++ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi
++ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi
++ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program
++ rm -rf familiar/dist.list
++ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list
++ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi
++ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch
++ rm -rf familiar/dist familiar/dist.list
++ $(MAKE) printinfo
++
++dpkg: dist
++ mkdir -p $(DEB_PATH)
++ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz )
++ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian
++ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done
++
++CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
++printinfo:
++ @printf '-------------------------------------------------------------------------------\n'
++ @printf "If this becomes a package release, please add a CVS tag.\n"
++ @printf "You can use 'make tag' for that, it will execute\n"
++ @printf " cvs tag %s\n" $(CVSTAG)
++ @printf "Please upload a tarball (created with 'make dist') to\n"
++ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n"
++ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n"
++ @printf "You can use 'make dist-upload' to do that.\n"
++ @printf "You are currently known as USER %s.\n" $(USER)
++ @printf '-------------------------------------------------------------------------------\n'
++
++tag: check-source
++ cvs tag $(CVSTAG)
++
++retag: check-source
++ cvs tag -F $(CVSTAG)
++
++source: tag dist-upload
++
++%.pc: %.pc.in
++ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@
++
++.c.o:;
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@
+diff -Naur gpe-filemanager.orig/build/Makefile.translation gpe-filemanager/build/Makefile.translation
+--- gpe-filemanager.orig/build/Makefile.translation 1970-01-01 02:00:00.000000000 +0200
++++ gpe-filemanager/build/Makefile.translation 2007-02-10 17:21:46.170927636 +0200
+@@ -0,0 +1,107 @@
++.SUFFIXES: .mo .po .pot .po8
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# use ipkg-build or ipkg-deb-build
++IPKG_BUILD := ipkg-build
++
++TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint
++
++ifeq ($(DIR_PO),)
++DIR_PO := po
++endif
++
++ifeq ($(BINPACKAGE),)
++BINPACKAGE := $(PACKAGE)
++endif
++
++mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS))
++po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++
++ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present)
++desktop-files += $(PACKAGE).desktop
++endif
++
++ifneq ($(EXTRA_DESKTOPS),)
++desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS))
++endif
++
++all-mo: $(mo-files)
++
++all-desktop: $(desktop-files)
++
++install-mo: all-mo
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ if [ "x$(LINGUAS)" != "x" ]; then \
++ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \
++ fi; \
++ fi;
++
++.po8.mo:;
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ msgfmt -o $@ $<; \
++ fi;
++
++.po.po8:;
++ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@
++
++update-po: $(po-files) extract-po
++
++dist-prep: update-po freshen-po
++# empty
++
++ifeq ($(CVSBUILD),yes)
++ipkg-prep: freshen-po
++# empty
++endif
++
++extract-po:
++ mkdir -p $(DIR_PO)
++ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi )
++ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi
++
++clean: clean-po clean-dist-translation
++
++clean-po:
++ rm -rf $(DIR_PO)/*.mo
++ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done
++
++%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++ intltool-merge -u -d $(DIR_PO) $< $@
++
++freshen-po:
++ rm -rf tmp-po
++ mkdir tmp-po
++ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done
++ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done
++ rm -rf tmp-po
++
++# ------------------------------------------------------------------------
++
++MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-)
++
++ifndef BUILD
++BUILD = ../build
++endif
++
++transdist := familiar/dist-translation
++templates := $(BUILD)/familiar
++ipkglist := translation-ipkgs.txt
++
++clean-dist-translation:
++ rm -rf $(transdist) $(ipkglist)
++
++real-translation-package: all-mo
++ rm -rf $(transdist) $(ipkglist)
++ for LINGUA in $(LINGUAS); do \
++ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \
++ mkdir -p $(transdist)/$$i/CONTROL; \
++ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \
++ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \
++ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \
++ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \
++ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \
++ done
++
++translation-ipkg:
++ make PREFIX=/usr real-translation-package
diff --git a/packages/gpe-filemanager/gpe-filemanager_0.23.bb b/packages/gpe-filemanager/gpe-filemanager_0.23.bb
index 5d0fe7a1b0..e2da6036fc 100644
--- a/packages/gpe-filemanager/gpe-filemanager_0.23.bb
+++ b/packages/gpe-filemanager/gpe-filemanager_0.23.bb
@@ -5,7 +5,7 @@ PR = "r0"
LICENSE = "GPL"
DESCRIPTION = "GPE file manager"
DEPENDS = "libgpewidget gnome-vfs dbus-glib"
-SECTION = "gpe"
+SECTION = "gpe"
RDEPENDS = "gpe-icons"
RRECOMMENDS = "gnome-vfs-plugin-file"
diff --git a/packages/gpe-filemanager/gpe-filemanager_0.24.bb b/packages/gpe-filemanager/gpe-filemanager_0.24.bb
index 5d0fe7a1b0..e2da6036fc 100644
--- a/packages/gpe-filemanager/gpe-filemanager_0.24.bb
+++ b/packages/gpe-filemanager/gpe-filemanager_0.24.bb
@@ -5,7 +5,7 @@ PR = "r0"
LICENSE = "GPL"
DESCRIPTION = "GPE file manager"
DEPENDS = "libgpewidget gnome-vfs dbus-glib"
-SECTION = "gpe"
+SECTION = "gpe"
RDEPENDS = "gpe-icons"
RRECOMMENDS = "gnome-vfs-plugin-file"
diff --git a/packages/gpe-filemanager/gpe-filemanager_0.25.bb b/packages/gpe-filemanager/gpe-filemanager_0.25.bb
index 1ccb811490..ac91df6a40 100644
--- a/packages/gpe-filemanager/gpe-filemanager_0.25.bb
+++ b/packages/gpe-filemanager/gpe-filemanager_0.25.bb
@@ -5,7 +5,7 @@ PR = "r1"
LICENSE = "GPL"
DESCRIPTION = "GPE file manager"
DEPENDS = "libgpewidget gnome-vfs dbus-glib"
-SECTION = "gpe"
+SECTION = "gpe"
RDEPENDS = "gpe-icons"
RRECOMMENDS = "gnome-vfs-plugin-file gnome-vfs-plugin-smb gnome-vfs-plugin-ftp gnome-vfs-plugin-computer gnome-vfs-plugin-network gnome-vfs-plugin-sftp gnome-vfs-plugin-http"
diff --git a/packages/gpe-filemanager/gpe-filemanager_svn.bb b/packages/gpe-filemanager/gpe-filemanager_svn.bb
new file mode 100644
index 0000000000..2c2d82d253
--- /dev/null
+++ b/packages/gpe-filemanager/gpe-filemanager_svn.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "GPE file manager"
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "libgpewidget gnome-vfs dbus-glib"
+RDEPENDS = "gpe-icons"
+RRECOMMENDS = "gnome-vfs-plugin-file gnome-vfs-plugin-smb gnome-vfs-plugin-ftp gnome-vfs-plugin-computer gnome-vfs-plugin-network gnome-vfs-plugin-sftp gnome-vfs-plugin-http"
+PR = "r1"
+PV = "0.25+svn-${SRCDATE}"
+
+inherit autotools
+
+SRC_URI = "${GPE_SVN} \
+ file://svn-build.patch;patch=1"
+
+S = "${WORKDIR}/${PN}"
+
+FILES_${PN} += " ${datadir}/gpe"
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-gallery/files/svn-build.patch b/packages/gpe-gallery/files/svn-build.patch
new file mode 100644
index 0000000000..5b6edf4893
--- /dev/null
+++ b/packages/gpe-gallery/files/svn-build.patch
@@ -0,0 +1,240 @@
+--- gpe-gallery.orig/Makefile 2007-04-07 13:34:54.581405005 +0300
++++ gpe-gallery/Makefile 2007-04-07 13:35:03.589918369 +0300
+@@ -1,7 +1,7 @@
+ PREFIX = /usr/local
+ PACKAGE = gpe-gallery
+ DEBUG = no
+-CVSBUILD = yes
++CVSBUILD = no
+ VERSION = 0.97
+
+ MEMBERS = main image_tools
+diff -Naur gpe-gallery.orig/build/Makefile.dpkg_ipkg gpe-gallery/build/Makefile.dpkg_ipkg
+--- gpe-gallery.orig/build/Makefile.dpkg_ipkg 1970-01-01 02:00:00.000000000 +0200
++++ gpe-gallery/build/Makefile.dpkg_ipkg 2007-02-10 17:21:40.154584782 +0200
+@@ -0,0 +1,114 @@
++## Please read the README in this directory to see how to use this
++## Makefile snippet
++
++# Let's use whatever clean target the specific app provides
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# URL to source tarball
++SOURCE = http://gpe.linuxtogo.org/download/source/$(PACKAGE)-$(VERSION).tar.gz
++
++# can change this to e.g. /var/tmp/deb
++DEB_PATH = ../deb
++
++ifeq ($(CVSBUILD),yes)
++LIBGPEWIDGET_PC = libgpewidget-uninstalled
++PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget
++else
++LIBGPEWIDGET_PC = libgpewidget
++endif
++
++ifeq ($(IN_LIBGPEWIDGET),)
++GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC))
++GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC))
++endif
++
++GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0)
++GTKLIBS = $(shell pkg-config --libs gtk+-2.0)
++
++STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
++STANDARD_CFLAGS = -MD -Wall
++
++ifeq ($(DEBUG),yes)
++CFLAGS += -O2 -g
++LDFLAGS = -g
++else
++CFLAGS += -Os -fomit-frame-pointer
++endif
++
++dist: check-source clean dist-prep
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ mkdir ../$(PACKAGE)-$(VERSION)
++ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -)
++ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile )
++ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz )
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ $(MAKE) printinfo
++
++dist-upload: dist
++ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@linuxtogo.org:/media/data/projects/gpe/source/
++
++dist-prep:
++ipkg-prep:
++install-mo:
++# empty, can be filled in Makefile.translation
++
++install: install-program install-mo
++
++clean-dist:
++ rm -rf familiar/dist familiar/dist.list
++
++clean: clean-dist
++
++check-source:
++ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi
++
++ipkg: check-source ipkg-prep clean
++ rm -rf familiar/dist
++ mkdir -p familiar/dist/CONTROL
++ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control
++ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi
++ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi
++ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi
++ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi
++ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi
++ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program
++ rm -rf familiar/dist.list
++ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list
++ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi
++ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch
++ rm -rf familiar/dist familiar/dist.list
++ $(MAKE) printinfo
++
++dpkg: dist
++ mkdir -p $(DEB_PATH)
++ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz )
++ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian
++ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done
++
++CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
++printinfo:
++ @printf '-------------------------------------------------------------------------------\n'
++ @printf "If this becomes a package release, please add a CVS tag.\n"
++ @printf "You can use 'make tag' for that, it will execute\n"
++ @printf " cvs tag %s\n" $(CVSTAG)
++ @printf "Please upload a tarball (created with 'make dist') to\n"
++ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n"
++ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n"
++ @printf "You can use 'make dist-upload' to do that.\n"
++ @printf "You are currently known as USER %s.\n" $(USER)
++ @printf '-------------------------------------------------------------------------------\n'
++
++tag: check-source
++ cvs tag $(CVSTAG)
++
++retag: check-source
++ cvs tag -F $(CVSTAG)
++
++source: tag dist-upload
++
++%.pc: %.pc.in
++ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@
++
++.c.o:;
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@
+diff -Naur gpe-gallery.orig/build/Makefile.translation gpe-gallery/build/Makefile.translation
+--- gpe-gallery.orig/build/Makefile.translation 1970-01-01 02:00:00.000000000 +0200
++++ gpe-gallery/build/Makefile.translation 2007-02-10 17:21:46.170927636 +0200
+@@ -0,0 +1,107 @@
++.SUFFIXES: .mo .po .pot .po8
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# use ipkg-build or ipkg-deb-build
++IPKG_BUILD := ipkg-build
++
++TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint
++
++ifeq ($(DIR_PO),)
++DIR_PO := po
++endif
++
++ifeq ($(BINPACKAGE),)
++BINPACKAGE := $(PACKAGE)
++endif
++
++mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS))
++po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++
++ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present)
++desktop-files += $(PACKAGE).desktop
++endif
++
++ifneq ($(EXTRA_DESKTOPS),)
++desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS))
++endif
++
++all-mo: $(mo-files)
++
++all-desktop: $(desktop-files)
++
++install-mo: all-mo
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ if [ "x$(LINGUAS)" != "x" ]; then \
++ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \
++ fi; \
++ fi;
++
++.po8.mo:;
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ msgfmt -o $@ $<; \
++ fi;
++
++.po.po8:;
++ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@
++
++update-po: $(po-files) extract-po
++
++dist-prep: update-po freshen-po
++# empty
++
++ifeq ($(CVSBUILD),yes)
++ipkg-prep: freshen-po
++# empty
++endif
++
++extract-po:
++ mkdir -p $(DIR_PO)
++ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi )
++ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi
++
++clean: clean-po clean-dist-translation
++
++clean-po:
++ rm -rf $(DIR_PO)/*.mo
++ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done
++
++%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++ intltool-merge -u -d $(DIR_PO) $< $@
++
++freshen-po:
++ rm -rf tmp-po
++ mkdir tmp-po
++ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done
++ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done
++ rm -rf tmp-po
++
++# ------------------------------------------------------------------------
++
++MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-)
++
++ifndef BUILD
++BUILD = ../build
++endif
++
++transdist := familiar/dist-translation
++templates := $(BUILD)/familiar
++ipkglist := translation-ipkgs.txt
++
++clean-dist-translation:
++ rm -rf $(transdist) $(ipkglist)
++
++real-translation-package: all-mo
++ rm -rf $(transdist) $(ipkglist)
++ for LINGUA in $(LINGUAS); do \
++ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \
++ mkdir -p $(transdist)/$$i/CONTROL; \
++ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \
++ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \
++ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \
++ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \
++ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \
++ done
++
++translation-ipkg:
++ make PREFIX=/usr real-translation-package
diff --git a/packages/gpe-gallery/gpe-gallery_svn.bb b/packages/gpe-gallery/gpe-gallery_svn.bb
new file mode 100644
index 0000000000..863dfe5f93
--- /dev/null
+++ b/packages/gpe-gallery/gpe-gallery_svn.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "GPE image viewer application"
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "libgpewidget"
+PV = "0.97+svn-${SRCDATE}"
+
+inherit autotools
+export CVSBUILD = "no"
+
+SRC_URI += "${GPE_EXTRA_SVN} \
+ file://svn-build.patch;patch=1"
+
+S = "${WORKDIR}/${PN}"
+
+FILES_${PN} += "${datadir}/gpe/pixmaps"
+FILES_${PN} += "${datadir}/application-registry"
+
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-login/files/busybox-bad-perms.patch b/packages/gpe-login/files/busybox-bad-perms.patch
deleted file mode 100644
index a422089167..0000000000
--- a/packages/gpe-login/files/busybox-bad-perms.patch
+++ /dev/null
@@ -1,39 +0,0 @@
---- gpe-login.pre-session.orig 2005-09-08 00:18:21.000000000 +0200
-+++ gpe-login-0.82/X11/gpe-login.pre-session 2005-09-08 00:18:13.000000000 +0200
-@@ -4,26 +4,28 @@
-
- # Sound devices on various devices #
-
-+if [ -e /dev/dsp ]; then
-+chown $USER /dev/dsp
-+fi
-+
-+if [ -e /dev/mixer ]; then
-+chown $USER /dev/mixer
-+fi
-+
- if [ -e /dev/sound/dsp ]; then
- chown $USER /dev/sound/dsp
-+chmod u+rw /dev/sound/dsp
- fi
-
- if [ -e /dev/sound/mixer ]; then
- chown $USER /dev/sound/mixer
-+chmod u+rw /dev/sound/mixer
- fi
-
- if [ -e /dev/misc/buzzer ]; then
- chown $USER /dev/misc/buzzer
- fi
-
--if [ -e /dev/dsp ]; then
--chown $USER /dev/dsp
--fi
--
--if [ -e /dev/mixer ]; then
--chown $USER /dev/mixer
--fi
--
- # touchscreen devices #
-
- if [ -e /dev/touchscreen/0raw ]; then
diff --git a/packages/gpe-login/files/highdpifontfix.patch b/packages/gpe-login/files/highdpifontfix.patch
deleted file mode 100644
index cc5a42dcfc..0000000000
--- a/packages/gpe-login/files/highdpifontfix.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- /tmp/gpe-login.gtkrc 2005-11-08 17:15:50.363302568 +0100
-+++ gpe-login-0.83/X11/gpe-login.gtkrc 2005-11-08 17:16:22.659392816 +0100
-@@ -1,9 +1,2 @@
--gtk-font-name = "Sans 8"
--include "/usr/share/themes/Angelistic/gtk-2.0/gtkrc"
--
--style "default"
--{
-- bg[NORMAL] = "#90d8ff"
--}
--
--widget "*" style "default"
-+gtk-font-name = "Sans 5"
-+include "/usr/share/themes/Industrial/gtk-2.0/gtkrc"
diff --git a/packages/gpe-login/files/pre-session.patch b/packages/gpe-login/files/pre-session.patch
deleted file mode 100644
index ac1629f08a..0000000000
--- a/packages/gpe-login/files/pre-session.patch
+++ /dev/null
@@ -1,56 +0,0 @@
---- /tmp/gpe-login.pre-session 2005-02-17 10:49:01.726436296 +0100
-+++ gpe-login-0.75/X11/gpe-login.pre-session 2005-02-17 10:48:42.297389960 +0100
-@@ -4,10 +4,22 @@
-
- if [ -e /dev/sound/dsp ]; then
- chown $USER /dev/sound/dsp
-+chmod u+rw /dev/sound/dsp
-+fi
-+
-+if [ -e /dev/dsp ]; then
-+chown $USER /dev/dsp
-+chmod u+rw /dev/dsp
- fi
-
- if [ -e /dev/sound/mixer ]; then
- chown $USER /dev/sound/mixer
-+chmod u+rw /dev/sound/mixer
-+fi
-+
-+if [ -e /dev/mixer ]; then
-+chown $USER /dev/mixer
-+chmod u+rw /dev/mixer
- fi
-
- if [ -e /dev/touchscreen/0raw ]; then
-@@ -18,13 +30,26 @@
- chown $USER /dev/touchscreen/0
- fi
-
-+if [ -e /dev/collie-fl ]; then
-+chown $USER /dev/sharp_fl
-+fi
-+
- if [ -e /dev/misc/buzzer ]; then
- chown $USER /dev/misc/buzzer
- fi
-
--mkdir -p /mnt/ramfs/home/$USER
--chown $USER /mnt/ramfs/home/$USER
-+# check for ramdisk location
-+if [ -d /mnt/ramfs ]; then
-+# old location as used in familiar <= 0.7.2
-+RAMDISK="/mnt/ramfs"
-+else
-+# default to new style location
-+RAMDISK="/mnt/ram"
-+fi
-+
-+mkdir -p $RAMDISK/home/$USER
-+chown $USER $RAMDISK/home/$USER
-
- # this location MUST be consistent with HOME_VOLATILE in /etc/X11/Xsession
--ln -s /mnt/ramfs/home/$USER /home/$USER/ramdisk
--ln -s /home/$USER/ramdisk/.xsession-errors /home/$USER/.xsession-errors
-+ln -sf $RAMDISK/home/$USER /home/$USER/ramdisk
-+ln -sf /home/$USER/ramdisk/.xsession-errors /home/$USER/.xsession-errors
diff --git a/packages/gpe-login/files/removeblue-fontsize8.patch b/packages/gpe-login/files/removeblue-fontsize8.patch
index 4962c8401f..d9db311a2c 100644
--- a/packages/gpe-login/files/removeblue-fontsize8.patch
+++ b/packages/gpe-login/files/removeblue-fontsize8.patch
@@ -11,4 +11,4 @@
-
-widget "*" style "default"
+gtk-font-name = "Sans 8"
-+include "/usr/share/themes/Industrial/gtk-2.0/gtkrc"
++include "/usr/share/themes/Clearlooks/gtk-2.0/gtkrc"
diff --git a/packages/gpe-login/files/use-xtscal.patch b/packages/gpe-login/files/use-xtscal.patch
new file mode 100644
index 0000000000..dca1163505
--- /dev/null
+++ b/packages/gpe-login/files/use-xtscal.patch
@@ -0,0 +1,11 @@
+--- /tmp/gpe-login.c 2007-04-01 11:40:29.000000000 +0200
++++ gpe-login-0.88/gpe-login.c 2007-04-01 11:40:58.205251000 +0200
+@@ -59,7 +59,7 @@
+ #define GPE_OWNERINFO_DONTSHOW_FILE "/etc/gpe/gpe-ownerinfo.dontshow"
+ /* Number of milliseconds to hold the stylus down before recalibration is called */
+ #define RECALIBRATION_TIMEOUT 5000
+-#define XTSCAL_PATH "/usr/bin/gpe-xcalibrate.sh"
++#define XTSCAL_PATH "/usr/bin/xtscal"
+ #ifndef DEBUG
+ #define DEBUG 0
+ #endif
diff --git a/packages/gpe-login/files/user-own-collie-devs.patch b/packages/gpe-login/files/user-own-collie-devs.patch
deleted file mode 100644
index 3a0ce9b7b8..0000000000
--- a/packages/gpe-login/files/user-own-collie-devs.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -urNd ../gpe-login-0.76-r0/gpe-login-0.76/X11/gpe-login.pre-session gpe-login-0.76/X11/gpe-login.pre-session
---- ../gpe-login-0.76-r0/gpe-login-0.76/X11/gpe-login.pre-session 2005-04-01 21:58:46 +01:00
-+++ gpe-login-0.76/X11/gpe-login.pre-session 2005-04-01 22:04:04 +01:00
-@@ -30,13 +30,23 @@
- chown $USER /dev/touchscreen/0
- fi
-
--if [ -e /dev/collie-fl ]; then
-+if [ -e /dev/misc/buzzer ]; then
-+chown $USER /dev/misc/buzzer
-+fi
-+
-+# The following added for collie
-+if [ -e /dev/sharp_fl ]; then
- chown $USER /dev/sharp_fl
- fi
-
--if [ -e /dev/misc/buzzer ]; then
--chown $USER /dev/misc/buzzer
-+if [ -e /dev/fb0 ]; then
-+chown $USER /dev/fb0
-+fi
-+
-+if [ -e /dev/tty ]; then
-+chown $USER /dev/tty*
- fi
-+# collie bits finished
-
- # check for ramdisk location
- if [ -d /mnt/ramfs ]; then
diff --git a/packages/gpe-login/gpe-login-0.88/.mtn2git_empty b/packages/gpe-login/gpe-login-0.88/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpe-login/gpe-login-0.88/.mtn2git_empty
diff --git a/packages/gpe-login/gpe-login-0.88/chvt-keylaunch.patch b/packages/gpe-login/gpe-login-0.88/chvt-keylaunch.patch
new file mode 100644
index 0000000000..798c059ccc
--- /dev/null
+++ b/packages/gpe-login/gpe-login-0.88/chvt-keylaunch.patch
@@ -0,0 +1,12 @@
+--- /tmp/gpe-login.keylaunchrc 2006-05-29 23:46:42.806081576 +0200
++++ gpe-login-0.87/gpe-login.keylaunchrc 2006-05-29 23:48:18.476537456 +0200
+@@ -1,3 +1,9 @@
+ key=????XF86AudioRecord:xcalibrate:/usr/bin/gpe-xcalibrate.sh
+ key=????XF86PowerDown:-:/usr/bin/apm --suspend
+ key=????Held XF86PowerDown:-:bl toggle
++
++# VT changing
++key=...*Left:-:~chvt 1
++key=...*Right:-:~chvt 3
++key=...*Escape:-:~/etc/init.d/gpe-dm stop
++
diff --git a/packages/gpe-login/gpe-login_0.87.bb b/packages/gpe-login/gpe-login_0.87.bb
index b548a1ad6b..04839a4412 100644
--- a/packages/gpe-login/gpe-login_0.87.bb
+++ b/packages/gpe-login/gpe-login_0.87.bb
@@ -2,12 +2,12 @@ LICENSE = "GPL"
inherit gpe
DESCRIPTION = "GPE user login screen"
-SECTION = "gpe"
+SECTION = "gpe"
PRIORITY = "optional"
DEPENDS = "gtk+ libgpewidget gpe-ownerinfo xkbd"
RDEPENDS = "xkbd"
RPROVIDES = "gpe-session-starter"
-PR = "r1"
+PR = "r2"
SRC_URI += "file://removeblue-fontsize8.patch;patch=1"
diff --git a/packages/gpe-login/gpe-login_0.88.bb b/packages/gpe-login/gpe-login_0.88.bb
new file mode 100644
index 0000000000..f42aa4c6a3
--- /dev/null
+++ b/packages/gpe-login/gpe-login_0.88.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "GPE user login screen"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libgpewidget gpe-ownerinfo xkbd"
+RDEPENDS = "xkbd"
+RPROVIDES = "gpe-session-starter"
+PR = "r1"
+
+inherit gpe
+
+SRC_URI += "file://removeblue-fontsize8.patch;patch=1"
+SRC_URI += " file://chvt-keylaunch.patch;patch=1 "
+SRC_URI += " file://use-xtscal.patch;patch=1 "
+
diff --git a/packages/gpe-login/gpe-login_svn.bb b/packages/gpe-login/gpe-login_svn.bb
new file mode 100644
index 0000000000..d38545fe57
--- /dev/null
+++ b/packages/gpe-login/gpe-login_svn.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "GPE user login screen"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libgpewidget gpe-ownerinfo xkbd"
+RDEPENDS = "xkbd"
+RPROVIDES = "gpe-session-starter"
+PV = "0.88+svn-${SRCDATE}"
+
+inherit autotools
+
+SRC_URI = "${GPE_SVN} \
+ file://removeblue-fontsize8.patch;patch=1"
+
+S = "${WORKDIR}/${PN}"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-mini-browser/gpe-mini-browser_0.17.bb b/packages/gpe-mini-browser/gpe-mini-browser_0.17.bb
index 99523c08f8..b8146edbb8 100644
--- a/packages/gpe-mini-browser/gpe-mini-browser_0.17.bb
+++ b/packages/gpe-mini-browser/gpe-mini-browser_0.17.bb
@@ -2,7 +2,7 @@ require gpe-mini-browser.inc
SRC_URI = "ftp://ftp.handhelds.org/projects/gpe/source/gpe-mini-browser-${PV}.tar.gz"
DEPENDS = "osb-nrcit sqlite libgpewidget"
-RRECOMMENDS = "gdk-pixbuf-loader-gif gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg"
+RRECOMMENDS = "gdk-pixbuf-loader-gif gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg"
S = "${WORKDIR}/gpe-mini-browser-${PV}"
diff --git a/packages/gpe-mini-browser/gpe-mini-browser_0.18.bb b/packages/gpe-mini-browser/gpe-mini-browser_0.18.bb
index 99523c08f8..b8146edbb8 100644
--- a/packages/gpe-mini-browser/gpe-mini-browser_0.18.bb
+++ b/packages/gpe-mini-browser/gpe-mini-browser_0.18.bb
@@ -2,7 +2,7 @@ require gpe-mini-browser.inc
SRC_URI = "ftp://ftp.handhelds.org/projects/gpe/source/gpe-mini-browser-${PV}.tar.gz"
DEPENDS = "osb-nrcit sqlite libgpewidget"
-RRECOMMENDS = "gdk-pixbuf-loader-gif gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg"
+RRECOMMENDS = "gdk-pixbuf-loader-gif gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg"
S = "${WORKDIR}/gpe-mini-browser-${PV}"
diff --git a/packages/gpe-mini-browser/gpe-mini-browser_0.19.bb b/packages/gpe-mini-browser/gpe-mini-browser_0.19.bb
index 225a12d4ae..74c31e09f3 100644
--- a/packages/gpe-mini-browser/gpe-mini-browser_0.19.bb
+++ b/packages/gpe-mini-browser/gpe-mini-browser_0.19.bb
@@ -4,6 +4,8 @@ SRC_URI = "http://gpe.linuxtogo.org/download/source/gpe-mini-browser-${PV}.tar.g
DEPENDS = "osb-nrcit sqlite libgpewidget"
RRECOMMENDS = "gdk-pixbuf-loader-gif gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg"
+PR = "r1"
+
S = "${WORKDIR}/gpe-mini-browser-${PV}"
inherit autotools
diff --git a/packages/gpe-mini-browser/gpe-mini-browser_0.20.bb b/packages/gpe-mini-browser/gpe-mini-browser_0.20.bb
new file mode 100644
index 0000000000..74c31e09f3
--- /dev/null
+++ b/packages/gpe-mini-browser/gpe-mini-browser_0.20.bb
@@ -0,0 +1,52 @@
+require gpe-mini-browser.inc
+
+SRC_URI = "http://gpe.linuxtogo.org/download/source/gpe-mini-browser-${PV}.tar.gz"
+DEPENDS = "osb-nrcit sqlite libgpewidget"
+RRECOMMENDS = "gdk-pixbuf-loader-gif gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg"
+
+PR = "r1"
+
+S = "${WORKDIR}/gpe-mini-browser-${PV}"
+
+inherit autotools
+
+do_install() {
+ install -d ${D}/usr/share/applications
+ install -m 0644 ${S}/gpe-mini-browser.desktop ${D}/usr/share/applications/gpe-mini-browser.desktop
+ install -d ${D}/usr/share/pixmaps
+ install -m 0644 ${S}/gpe-mini-browser.png ${D}/usr/share/pixmaps/gpe-mini-browser.png
+ autotools_do_install
+}
+
+pkg_postinst_${PN}-doc () {
+ #!/bin/sh
+ if [ "x$D" != "x" ]; then
+ if [ -e /etc/gpe/gpe-help.conf ]; then
+ echo gpe-mini-browser= /usr/share/doc/gpe/gpe-mini-browser.html >> /etc/gpe/gpe-help.conf
+ else
+ echo [Help] >> /etc/gpe/gpe-help.conf
+ echo gpe-mini-browser= /usr/share/doc/gpe/gpe-mini-browser.html >> /etc/gpe/gpe-help.conf
+ fi
+ if [ -x /usr/bin/gpe-helpindex ]; then
+ echo generating help-index
+ gpe-helpindex
+ else
+ echo not generating index for gpe-mini-browser
+ fi
+ fi
+}
+
+pkg_postrm_${PN}-doc () {
+ #!/bin/sh
+ if [ -e /etc/gpe/gpe-help.conf ]; then
+ sed '/^\<gpe-mini-browser\>/d' /etc/gpe/gpe-help.conf > /tmp/gpe-help.conf
+ mv /tmp/gpe-help.conf /etc/gpe/gpe-help.conf
+ fi
+ if [ -x /usr/bin/gpe-helpindex ]; then
+ echo generating help-index
+ gpe-helpindex
+ else
+ echo not generating index for gpe-mini-browser
+ fi
+}
+
diff --git a/packages/gpe-mini-browser/gpe-mini-browser_svn.bb b/packages/gpe-mini-browser/gpe-mini-browser_svn.bb
index dc5c022580..30d9d83a49 100644
--- a/packages/gpe-mini-browser/gpe-mini-browser_svn.bb
+++ b/packages/gpe-mini-browser/gpe-mini-browser_svn.bb
@@ -1,18 +1,13 @@
-require gpe-mini-browser.inc
-
-DEFAULT_PREFERENCE = "-1"
-
DEPENDS = "sqlite gettext gtk+ glib-2.0 osb-nrcit libgpewidget"
RRECOMMENDS = "gdk-pixbuf-loader-gif gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg"
-
-PV = "0.19+svn${SRCDATE}"
+PV = "0.20+svn${SRCDATE}"
PR = "r0"
-SRC_URI = "${GPE_SVN}"
+inherit autotools
-S = "${WORKDIR}/gpe-mini-browser"
+SRC_URI = "${GPE_EXTRA_SVN}"
-inherit autotools
+S = "${WORKDIR}/gpe-mini-browser"
do_install() {
install -d ${D}/usr/share/applications
@@ -39,7 +34,6 @@ pkg_postinst_${PN}-doc () {
fi
fi
}
-
pkg_postrm_${PN}-doc () {
#!/bin/sh
if [ -e /etc/gpe/gpe-help.conf ]; then
@@ -54,3 +48,6 @@ pkg_postrm_${PN}-doc () {
fi
}
+require gpe-mini-browser.inc
+
+#DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-mininet/gpe-mininet_svn.bb b/packages/gpe-mininet/gpe-mininet_svn.bb
new file mode 100644
index 0000000000..1acca052fd
--- /dev/null
+++ b/packages/gpe-mininet/gpe-mininet_svn.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "GPE network connection checker"
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "libgpewidget gpe-icons gpe-conf"
+RRECOMMENDS = "gpe-conf"
+PR = "r0"
+PV = "0.7+svn-${SRCDATE}"
+
+inherit autotools pkgconfig
+
+SRC_URI = "${GPE_EXTRA_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+FILES_${PN} = " ${bindir} ${datadir}/pixmaps ${datadir}/applications"
+FILES_${PN} += " ${datadir}/gpe/pixmaps"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-nmf/gpe-nmf.inc b/packages/gpe-nmf/gpe-nmf.inc
new file mode 100644
index 0000000000..d3b39abdcf
--- /dev/null
+++ b/packages/gpe-nmf/gpe-nmf.inc
@@ -0,0 +1,12 @@
+DESCRIPTION = "GPE audio player"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libgpewidget gstreamer gst-plugins"
+RDEPENDS = "esd gst-plugins gst-plugin-audio gst-plugin-audioconvert gst-plugin-audiofile gst-plugin-esd gst-plugin-typefindfunctions gst-plugin-volume"
+RRECOMMENDS = "gst-plugin-mad gst-plugin-tagedit"
+
+inherit gpe pkgconfig
+
+
+PARALLEL_MAKE=""
diff --git a/packages/gpe-nmf/gpe-nmf_0.17.bb b/packages/gpe-nmf/gpe-nmf_0.17.bb
index bf45dc5d56..93fd043e63 100644
--- a/packages/gpe-nmf/gpe-nmf_0.17.bb
+++ b/packages/gpe-nmf/gpe-nmf_0.17.bb
@@ -1,9 +1,6 @@
-LICENSE = "GPL"
-inherit gpe pkgconfig
+require gpe-nmf.inc
-DESCRIPTION = "GPE audio player"
-DEPENDS = "gtk+ libgpewidget gstreamer gst-plugins"
-SECTION = "gpe"
-PRIORITY = "optional"
+RDEPENDS = ""
+RRECOMMENDS = ""
SRC_URI += "file://fix_makefiles.patch;patch=1"
diff --git a/packages/gpe-nmf/gpe-nmf_0.19.bb b/packages/gpe-nmf/gpe-nmf_0.19.bb
index 9f87e6abdc..6ee24032e0 100644
--- a/packages/gpe-nmf/gpe-nmf_0.19.bb
+++ b/packages/gpe-nmf/gpe-nmf_0.19.bb
@@ -1,20 +1,3 @@
-LICENSE = "GPL"
-inherit gpe pkgconfig
+require gpe-nmf.inc
-DESCRIPTION = "GPE audio player"
-DEPENDS = "gtk+ libgpewidget gstreamer gst-plugins"
-RDEPENDS = "esd \
- gst-plugins \
- gst-plugin-audio \
- gst-plugin-audioconvert \
- gst-plugin-audiofile \
- gst-plugin-esd \
- gst-plugin-typefindfunctions \
- gst-plugin-volume"
-RRECOMMENDS = "gst-plugin-mad \
- gst-plugin-tagedit"
-SECTION = "gpe"
-PRIORITY = "optional"
PR = "r4"
-
-PARALLEL_MAKE=""
diff --git a/packages/gpe-nmf/gpe-nmf_0.20.bb b/packages/gpe-nmf/gpe-nmf_0.20.bb
index 875c38f950..bfbb7a487c 100644
--- a/packages/gpe-nmf/gpe-nmf_0.20.bb
+++ b/packages/gpe-nmf/gpe-nmf_0.20.bb
@@ -1,21 +1,4 @@
-LICENSE = "GPL"
-inherit gpe pkgconfig
+require gpe-nmf.inc
-DESCRIPTION = "GPE audio player"
-DEPENDS = "gtk+ libgpewidget gstreamer gst-plugins"
-RDEPENDS = "esd \
- gst-plugins \
- gst-plugin-audio \
- gst-plugin-audioconvert \
- gst-plugin-audiofile \
- gst-plugin-esd \
- gst-plugin-typefindfunctions \
- gst-plugin-volume"
-RRECOMMENDS = "gst-plugin-mad \
- gst-plugin-tagedit \
- gst-plugin-tcp"
-SECTION = "gpe"
-PRIORITY = "optional"
+RRECOMMENDS += "gst-plugin-tcp"
PR = "r1"
-
-PARALLEL_MAKE=""
diff --git a/packages/gpe-nmf/gpe-nmf_0.21.bb b/packages/gpe-nmf/gpe-nmf_0.21.bb
index 4501cdf55d..f1292b93e2 100644
--- a/packages/gpe-nmf/gpe-nmf_0.21.bb
+++ b/packages/gpe-nmf/gpe-nmf_0.21.bb
@@ -1,21 +1,3 @@
-LICENSE = "GPL"
-inherit gpe pkgconfig
+require gpe-nmf.inc
-DESCRIPTION = "GPE audio player"
-DEPENDS = "gtk+ libgpewidget gstreamer gst-plugins"
-RDEPENDS = "esd \
- gst-plugins \
- gst-plugin-audio \
- gst-plugin-audioconvert \
- gst-plugin-audiofile \
- gst-plugin-esd \
- gst-plugin-typefindfunctions \
- gst-plugin-volume"
-RRECOMMENDS = "gst-plugin-mad \
- gst-plugin-tagedit \
- gst-plugin-tcp"
-SECTION = "gpe"
-PRIORITY = "optional"
-PR = "r0"
-
-PARALLEL_MAKE=""
+RRECOMMENDS += "gst-plugin-tcp"
diff --git a/packages/gpe-nmf/gpe-nmf_0.22.bb b/packages/gpe-nmf/gpe-nmf_0.22.bb
index c4b2ae7c2c..8b70d83c6b 100644
--- a/packages/gpe-nmf/gpe-nmf_0.22.bb
+++ b/packages/gpe-nmf/gpe-nmf_0.22.bb
@@ -1,31 +1,12 @@
-LICENSE = "GPL"
-inherit gpe pkgconfig
+require gpe-nmf.inc
-DESCRIPTION = "GPE audio player"
-DEPENDS = "gtk+ libgpewidget gstreamer gst-plugins"
-RDEPENDS = "esd \
- gst-plugins \
- gst-plugin-audio \
- gst-plugin-audioconvert \
- gst-plugin-audiofile \
- gst-plugin-esd \
- gst-plugin-typefindfunctions \
- gst-plugin-decodebin \
- gst-plugin-volume"
-RRECOMMENDS = "gst-plugin-mad \
- gst-plugin-tagedit \
- gst-plugin-ivorbis \
- gst-plugin-tcp"
+RDEPENDS += "gst-plugin-decodebin"
+RRECOMMENDS += "gst-plugin-ivorbis gst-plugin-tcp"
+PR = "r2"
SRC_URI += " file://playlist-segfault.patch;patch=1;pnum=0 \
file://fix-includepath.patch;patch=1"
-SECTION = "gpe"
-PRIORITY = "optional"
-PR = "r2"
-
-PARALLEL_MAKE=""
-
do_compile() {
oe_runmake PREFIX=${prefix} GST_VERSION="0.8"
}
diff --git a/packages/gpe-ownerinfo/gpe-ownerinfo.inc b/packages/gpe-ownerinfo/gpe-ownerinfo.inc
new file mode 100644
index 0000000000..704044f09b
--- /dev/null
+++ b/packages/gpe-ownerinfo/gpe-ownerinfo.inc
@@ -0,0 +1,13 @@
+inherit gpe
+
+DESCRIPTION = "GPE owner information dialog"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libgpewidget"
+
+do_stage () {
+ oe_libinstall -a libgpe-ownerinfo ${STAGING_LIBDIR}
+ install -m 0644 gpe-ownerinfo.h ${STAGING_INCDIR}/
+}
+
diff --git a/packages/gpe-ownerinfo/gpe-ownerinfo/compile.patch b/packages/gpe-ownerinfo/gpe-ownerinfo/compile.patch
new file mode 100644
index 0000000000..3406481d66
--- /dev/null
+++ b/packages/gpe-ownerinfo/gpe-ownerinfo/compile.patch
@@ -0,0 +1,13 @@
+Index: gpe-ownerinfo-0.28/Makefile
+===================================================================
+--- gpe-ownerinfo-0.28.orig/Makefile
++++ gpe-ownerinfo-0.28/Makefile
+@@ -40,7 +40,7 @@ all: $(PACKAGE) all-mo
+
+ $(LIB_TARGET): $(LIB_OBJS)
+ rm -f $@
+- ar cq $@ $^
++ $(AR) cq $@ $^
+
+ $(PACKAGE): $(OBJS) $(LIB_TARGET)
+ $(CC) -o $@ $^ $(LDFLAGS) $(PACKAGE_LDFLAGS) -L. -lgpe-ownerinfo
diff --git a/packages/gpe-ownerinfo/gpe-ownerinfo/svn-build.patch b/packages/gpe-ownerinfo/gpe-ownerinfo/svn-build.patch
new file mode 100644
index 0000000000..9c446edb94
--- /dev/null
+++ b/packages/gpe-ownerinfo/gpe-ownerinfo/svn-build.patch
@@ -0,0 +1,238 @@
+--- gpe-ownerinfo.orig/Makefile 2007-04-08 02:00:43.064935587 +0300
++++ gpe-ownerinfo/Makefile 2007-04-08 02:01:24.703308411 +0300
+@@ -2,7 +2,7 @@
+ VERSION = 0.28
+ PREFIX = /usr/local
+ DEBUG = no
+-CVSBUILD = yes
++CVSBUILD = no
+ ENABLE_NLS = yes
+
+ LINGUAS = de hu id pt pt_BR fr zh_TW ro sv nl sk cs ru sr es zh_CN vi fi tr sl ko ja
++++ gpe-ownerinfo/build/Makefile.dpkg_ipkg 2007-02-10 17:21:40.154584782 +0200
+@@ -0,0 +1,114 @@
++## Please read the README in this directory to see how to use this
++## Makefile snippet
++
++# Let's use whatever clean target the specific app provides
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# URL to source tarball
++SOURCE = http://gpe.linuxtogo.org/download/source/$(PACKAGE)-$(VERSION).tar.gz
++
++# can change this to e.g. /var/tmp/deb
++DEB_PATH = ../deb
++
++ifeq ($(CVSBUILD),yes)
++LIBGPEWIDGET_PC = libgpewidget-uninstalled
++PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget
++else
++LIBGPEWIDGET_PC = libgpewidget
++endif
++
++ifeq ($(IN_LIBGPEWIDGET),)
++GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC))
++GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC))
++endif
++
++GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0)
++GTKLIBS = $(shell pkg-config --libs gtk+-2.0)
++
++STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
++STANDARD_CFLAGS = -MD -Wall
++
++ifeq ($(DEBUG),yes)
++CFLAGS += -O2 -g
++LDFLAGS = -g
++else
++CFLAGS += -Os -fomit-frame-pointer
++endif
++
++dist: check-source clean dist-prep
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ mkdir ../$(PACKAGE)-$(VERSION)
++ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -)
++ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile )
++ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz )
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ $(MAKE) printinfo
++
++dist-upload: dist
++ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@linuxtogo.org:/media/data/projects/gpe/source/
++
++dist-prep:
++ipkg-prep:
++install-mo:
++# empty, can be filled in Makefile.translation
++
++install: install-program install-mo
++
++clean-dist:
++ rm -rf familiar/dist familiar/dist.list
++
++clean: clean-dist
++
++check-source:
++ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi
++
++ipkg: check-source ipkg-prep clean
++ rm -rf familiar/dist
++ mkdir -p familiar/dist/CONTROL
++ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control
++ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi
++ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi
++ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi
++ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi
++ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi
++ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program
++ rm -rf familiar/dist.list
++ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list
++ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi
++ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch
++ rm -rf familiar/dist familiar/dist.list
++ $(MAKE) printinfo
++
++dpkg: dist
++ mkdir -p $(DEB_PATH)
++ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz )
++ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian
++ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done
++
++CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
++printinfo:
++ @printf '-------------------------------------------------------------------------------\n'
++ @printf "If this becomes a package release, please add a CVS tag.\n"
++ @printf "You can use 'make tag' for that, it will execute\n"
++ @printf " cvs tag %s\n" $(CVSTAG)
++ @printf "Please upload a tarball (created with 'make dist') to\n"
++ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n"
++ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n"
++ @printf "You can use 'make dist-upload' to do that.\n"
++ @printf "You are currently known as USER %s.\n" $(USER)
++ @printf '-------------------------------------------------------------------------------\n'
++
++tag: check-source
++ cvs tag $(CVSTAG)
++
++retag: check-source
++ cvs tag -F $(CVSTAG)
++
++source: tag dist-upload
++
++%.pc: %.pc.in
++ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@
++
++.c.o:;
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@
+diff -Naur gpe-ownerinfo.orig/build/Makefile.translation gpe-ownerinfo/build/Makefile.translation
+--- gpe-ownerinfo.orig/build/Makefile.translation 1970-01-01 02:00:00.000000000 +0200
++++ gpe-ownerinfo/build/Makefile.translation 2007-02-10 17:21:46.170927636 +0200
+@@ -0,0 +1,107 @@
++.SUFFIXES: .mo .po .pot .po8
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# use ipkg-build or ipkg-deb-build
++IPKG_BUILD := ipkg-build
++
++TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint
++
++ifeq ($(DIR_PO),)
++DIR_PO := po
++endif
++
++ifeq ($(BINPACKAGE),)
++BINPACKAGE := $(PACKAGE)
++endif
++
++mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS))
++po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++
++ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present)
++desktop-files += $(PACKAGE).desktop
++endif
++
++ifneq ($(EXTRA_DESKTOPS),)
++desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS))
++endif
++
++all-mo: $(mo-files)
++
++all-desktop: $(desktop-files)
++
++install-mo: all-mo
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ if [ "x$(LINGUAS)" != "x" ]; then \
++ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \
++ fi; \
++ fi;
++
++.po8.mo:;
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ msgfmt -o $@ $<; \
++ fi;
++
++.po.po8:;
++ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@
++
++update-po: $(po-files) extract-po
++
++dist-prep: update-po freshen-po
++# empty
++
++ifeq ($(CVSBUILD),yes)
++ipkg-prep: freshen-po
++# empty
++endif
++
++extract-po:
++ mkdir -p $(DIR_PO)
++ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi )
++ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi
++
++clean: clean-po clean-dist-translation
++
++clean-po:
++ rm -rf $(DIR_PO)/*.mo
++ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done
++
++%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++ intltool-merge -u -d $(DIR_PO) $< $@
++
++freshen-po:
++ rm -rf tmp-po
++ mkdir tmp-po
++ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done
++ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done
++ rm -rf tmp-po
++
++# ------------------------------------------------------------------------
++
++MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-)
++
++ifndef BUILD
++BUILD = ../build
++endif
++
++transdist := familiar/dist-translation
++templates := $(BUILD)/familiar
++ipkglist := translation-ipkgs.txt
++
++clean-dist-translation:
++ rm -rf $(transdist) $(ipkglist)
++
++real-translation-package: all-mo
++ rm -rf $(transdist) $(ipkglist)
++ for LINGUA in $(LINGUAS); do \
++ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \
++ mkdir -p $(transdist)/$$i/CONTROL; \
++ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \
++ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \
++ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \
++ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \
++ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \
++ done
++
++translation-ipkg:
++ make PREFIX=/usr real-translation-package
diff --git a/packages/gpe-ownerinfo/gpe-ownerinfo_0.23.bb b/packages/gpe-ownerinfo/gpe-ownerinfo_0.23.bb
index 2eb1b947a8..c5d8184cbf 100644
--- a/packages/gpe-ownerinfo/gpe-ownerinfo_0.23.bb
+++ b/packages/gpe-ownerinfo/gpe-ownerinfo_0.23.bb
@@ -1,13 +1,3 @@
-inherit gpe
+require gpe-ownerinfo.inc
-DESCRIPTION = "GPE owner information dialog"
-SECTION = "gpe"
-PRIORITY = "optional"
-DEPENDS = "gtk+ libgpewidget"
-LICENSE = "GPL"
PR = "r1"
-
-do_stage () {
- oe_libinstall -a libgpe-ownerinfo ${STAGING_LIBDIR}
- install -m 0644 gpe-ownerinfo.h ${STAGING_INCDIR}/
-}
diff --git a/packages/gpe-ownerinfo/gpe-ownerinfo_0.24.bb b/packages/gpe-ownerinfo/gpe-ownerinfo_0.24.bb
index e0709fe1ed..e63a6172a2 100644
--- a/packages/gpe-ownerinfo/gpe-ownerinfo_0.24.bb
+++ b/packages/gpe-ownerinfo/gpe-ownerinfo_0.24.bb
@@ -1,15 +1,5 @@
-inherit gpe
+require gpe-ownerinfo.inc
-DESCRIPTION = "GPE owner information dialog"
-SECTION = "gpe"
-PRIORITY = "optional"
-DEPENDS = "gtk+ libgpewidget"
PR = "r2"
-LICENSE = "GPL"
SRC_URI += "file://fixloop.patch;patch=1;pnum=0"
-
-do_stage () {
- oe_libinstall -a libgpe-ownerinfo ${STAGING_LIBDIR}
- install -m 0644 gpe-ownerinfo.h ${STAGING_INCDIR}/
-}
diff --git a/packages/gpe-ownerinfo/gpe-ownerinfo_0.25.bb b/packages/gpe-ownerinfo/gpe-ownerinfo_0.25.bb
index f04b9c19be..e7ef651bc4 100644
--- a/packages/gpe-ownerinfo/gpe-ownerinfo_0.25.bb
+++ b/packages/gpe-ownerinfo/gpe-ownerinfo_0.25.bb
@@ -1,13 +1,3 @@
-inherit gpe
+require gpe-ownerinfo.inc
-DESCRIPTION = "GPE owner information dialog"
-SECTION = "gpe"
-PRIORITY = "optional"
-DEPENDS = "gtk+ libgpewidget"
-LICENSE = "GPL"
PR = "r0"
-
-do_stage () {
- oe_libinstall -a libgpe-ownerinfo ${STAGING_LIBDIR}
- install -m 0644 gpe-ownerinfo.h ${STAGING_INCDIR}/
-}
diff --git a/packages/gpe-ownerinfo/gpe-ownerinfo_0.26.bb b/packages/gpe-ownerinfo/gpe-ownerinfo_0.26.bb
index f04b9c19be..e7ef651bc4 100644
--- a/packages/gpe-ownerinfo/gpe-ownerinfo_0.26.bb
+++ b/packages/gpe-ownerinfo/gpe-ownerinfo_0.26.bb
@@ -1,13 +1,3 @@
-inherit gpe
+require gpe-ownerinfo.inc
-DESCRIPTION = "GPE owner information dialog"
-SECTION = "gpe"
-PRIORITY = "optional"
-DEPENDS = "gtk+ libgpewidget"
-LICENSE = "GPL"
PR = "r0"
-
-do_stage () {
- oe_libinstall -a libgpe-ownerinfo ${STAGING_LIBDIR}
- install -m 0644 gpe-ownerinfo.h ${STAGING_INCDIR}/
-}
diff --git a/packages/gpe-ownerinfo/gpe-ownerinfo_0.27.bb b/packages/gpe-ownerinfo/gpe-ownerinfo_0.27.bb
index f04b9c19be..e7ef651bc4 100644
--- a/packages/gpe-ownerinfo/gpe-ownerinfo_0.27.bb
+++ b/packages/gpe-ownerinfo/gpe-ownerinfo_0.27.bb
@@ -1,13 +1,3 @@
-inherit gpe
+require gpe-ownerinfo.inc
-DESCRIPTION = "GPE owner information dialog"
-SECTION = "gpe"
-PRIORITY = "optional"
-DEPENDS = "gtk+ libgpewidget"
-LICENSE = "GPL"
PR = "r0"
-
-do_stage () {
- oe_libinstall -a libgpe-ownerinfo ${STAGING_LIBDIR}
- install -m 0644 gpe-ownerinfo.h ${STAGING_INCDIR}/
-}
diff --git a/packages/gpe-ownerinfo/gpe-ownerinfo_0.28.bb b/packages/gpe-ownerinfo/gpe-ownerinfo_0.28.bb
index f04b9c19be..b00cc7cc66 100644
--- a/packages/gpe-ownerinfo/gpe-ownerinfo_0.28.bb
+++ b/packages/gpe-ownerinfo/gpe-ownerinfo_0.28.bb
@@ -1,13 +1,5 @@
-inherit gpe
+require gpe-ownerinfo.inc
-DESCRIPTION = "GPE owner information dialog"
-SECTION = "gpe"
-PRIORITY = "optional"
-DEPENDS = "gtk+ libgpewidget"
-LICENSE = "GPL"
-PR = "r0"
+PR = "r1"
-do_stage () {
- oe_libinstall -a libgpe-ownerinfo ${STAGING_LIBDIR}
- install -m 0644 gpe-ownerinfo.h ${STAGING_INCDIR}/
-}
+SRC_URI += "file://compile.patch;patch=1"
diff --git a/packages/gpe-ownerinfo/gpe-ownerinfo_svn.bb b/packages/gpe-ownerinfo/gpe-ownerinfo_svn.bb
new file mode 100644
index 0000000000..036f70eaf1
--- /dev/null
+++ b/packages/gpe-ownerinfo/gpe-ownerinfo_svn.bb
@@ -0,0 +1,11 @@
+require gpe-ownerinfo.inc
+
+PR = "r1"
+PV = "0.28+svn-${SRCDATE}"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI += "${GPE_SVN} \
+ file://svn-build.patch;patch=1"
+
+S = "${WORKDIR}/${PN}"
diff --git a/packages/gpe-plucker/gpe-plucker_0.4.bb b/packages/gpe-plucker/gpe-plucker_0.4.bb
index 238b1c13d6..6e9f6b5d3b 100644
--- a/packages/gpe-plucker/gpe-plucker_0.4.bb
+++ b/packages/gpe-plucker/gpe-plucker_0.4.bb
@@ -1,12 +1,13 @@
inherit gpe pkgconfig
LICENSE = "GPL"
DESCRIPTION = "Plucker ebook reader"
-DEPENDS = "gtk+ libgpewidget"
+DEPENDS = "gtk+ libgpewidget gpe-icons"
+RDEPENDS = "gpe-icons"
SECTION = "gpe"
PRIORITY = "optional"
SRC_URI += " file://plucker-no-host-includes.patch;patch=1"
PARALLEL_MAKE=""
-PR = "r1"
+PR = "r2"
diff --git a/packages/gpe-scap/gpe-scap-1.2/.mtn2git_empty b/packages/gpe-scap/gpe-scap-1.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpe-scap/gpe-scap-1.2/.mtn2git_empty
diff --git a/packages/gpe-scap/gpe-scap-1.2/deviceinfo.patch b/packages/gpe-scap/gpe-scap-1.2/deviceinfo.patch
new file mode 100644
index 0000000000..57e611d85e
--- /dev/null
+++ b/packages/gpe-scap/gpe-scap-1.2/deviceinfo.patch
@@ -0,0 +1,22 @@
+Index: src/scr-shot-common.c
+===================================================================
+--- src/scr-shot-common.c (.../base/gpe-scap/src/scr-shot-common.c) (Revision 8890)
++++ src/scr-shot-common.c (.../extra/gpe-scap/src/scr-shot-common.c) (Arbeitskopie)
+@@ -37,7 +37,7 @@
+ gchar *
+ get_device_model (void)
+ {
+- gchar *result;
++ gchar *result = NULL;
+ struct utsname uinfo;
+ gchar **strv;
+ gint i = 0;
+@@ -62,6 +62,8 @@
+ }
+ g_strfreev (strv);
+ }
++ if (result)
++ return result;
+ #ifdef __arm__
+ result = g_strdup_printf ("%s,%s",_("ARM"), uinfo.machine);
+ #endif
diff --git a/packages/gpe-scap/gpe-scap_1.0.bb b/packages/gpe-scap/gpe-scap_1.0.bb
deleted file mode 100644
index 6f0c7746ef..0000000000
--- a/packages/gpe-scap/gpe-scap_1.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "GPE screenshot application"
-LICENSE = "GPL"
-PRIORITY = "optional"
-SECTION = "gpe"
-PR = "r0"
-
-RREPLACES = "gpe-screenshot"
-
-DEPENDS = "glib-2.0 gtk+ libglade"
-
-GPE_TARBALL_SUFFIX = "bz2"
-
-inherit gpe autotools
-
diff --git a/packages/gpe-scap/gpe-scap_1.2.bb b/packages/gpe-scap/gpe-scap_1.2.bb
new file mode 100644
index 0000000000..1fc8f9a57a
--- /dev/null
+++ b/packages/gpe-scap/gpe-scap_1.2.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "GPE screenshot application"
+LICENSE = "GPL"
+PRIORITY = "optional"
+SECTION = "gpe"
+PR = "r1"
+
+RREPLACES = "gpe-screenshot"
+
+DEPENDS = "glib-2.0 gtk+ libgpewidget libglade libsoup"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpe autotools
+
+SRC_URI += " file://deviceinfo.patch;patch=1;pnum=0"
diff --git a/packages/gpe-scap/gpe-scap_svn.bb b/packages/gpe-scap/gpe-scap_svn.bb
new file mode 100644
index 0000000000..3360189422
--- /dev/null
+++ b/packages/gpe-scap/gpe-scap_svn.bb
@@ -0,0 +1,12 @@
+DEPENDS = "glib-2.0 gtk+ libgpewidget libglade libsoup"
+RREPLACES = "gpe-screenshot"
+PV = "1.2+svn-${SRCDATE}"
+PR = "r1"
+
+inherit autotools
+
+SRC_URI += "${GPE_EXTRA_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-session-scripts/files/angstrom/.mtn2git_empty b/packages/gpe-session-scripts/files/angstrom/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpe-session-scripts/files/angstrom/.mtn2git_empty
diff --git a/packages/gpe-session-scripts/files/angstrom/matchbox-session b/packages/gpe-session-scripts/files/angstrom/matchbox-session
new file mode 100644
index 0000000000..ad2d9b6a78
--- /dev/null
+++ b/packages/gpe-session-scripts/files/angstrom/matchbox-session
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+XRES=`xdpyinfo | awk '/dimensions/ { print $2 }' | cut -dx -f1`
+
+ matchbox-desktop &
+
+matchbox-panel --no-flip --orientation south &
+exec matchbox-window-manager $@
+
diff --git a/packages/gpe-session-scripts/gpe-session-scripts_0.67.bb b/packages/gpe-session-scripts/gpe-session-scripts_0.67.bb
index 2cf63737bd..2c17d99bb8 100644
--- a/packages/gpe-session-scripts/gpe-session-scripts_0.67.bb
+++ b/packages/gpe-session-scripts/gpe-session-scripts_0.67.bb
@@ -4,14 +4,14 @@ DESCRIPTION = "GPE session startup scripts"
LICENSE = "GPL"
SECTION = "gpe"
PRIORITY = "optional"
-RDEPENDS_${PN} = "matchbox-panel (>= 0.9.2-r12) matchbox-desktop (>= 0.9.1-r1) matchbox-common (>= 0.9.1-r2) gpe-session-starter gpe-bluetooth xstroke xtscal gpe-question gpe-clock matchbox-applet-inputmanager xrandr xmodmap xdpyinfo xserver-common"
-# more rdepends: keylaunch ipaq-sleep apmd blueprobe
-DEPENDS = "matchbox-wm matchbox-panel gpe-bluetooth xstroke xtscal gpe-question matchbox-applet-inputmanager gpe-clock xrandr xmodmap xdpyinfo xserver-common"
+RDEPENDS_${PN} = "matchbox-panel matchbox-desktop matchbox-common gpe-session-starter xtscal gpe-question matchbox-applet-inputmanager xmodmap xdpyinfo xserver-common ipaq-sleep"
+# more rdepends: keylaunch apmd blueprobe
+DEPENDS = "matchbox-wm matchbox-panel xtscal gpe-question matchbox-applet-inputmanager xmodmap xdpyinfo xserver-common ipaq-sleep"
SRC_URI += "file://matchbox-session \
file://disable-composite.xsettings"
-PR = "r4"
+PR = "r9"
#apply a patch to set the fontsize for bigdpi (200+) devices to 5
SRC_URI_append_hx4700 = " file://highdpifontfix.patch;patch=1"
diff --git a/packages/gpe-shield/gpe-shield_0.9.bb b/packages/gpe-shield/gpe-shield_0.9.bb
index c47e00d52d..aac8899035 100644
--- a/packages/gpe-shield/gpe-shield_0.9.bb
+++ b/packages/gpe-shield/gpe-shield_0.9.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "GPE network security tool"
-SECTION = "gpe"
+SECTION = "gpe"
LICENSE = "GPL"
DEPENDS = "libgpewidget iptables virtual/kernel"
diff --git a/packages/gpe-sketchbook/files/.mtn2git_empty b/packages/gpe-sketchbook/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpe-sketchbook/files/.mtn2git_empty
diff --git a/packages/gpe-sketchbook/files/svn-build.patch b/packages/gpe-sketchbook/files/svn-build.patch
new file mode 100644
index 0000000000..026689a058
--- /dev/null
+++ b/packages/gpe-sketchbook/files/svn-build.patch
@@ -0,0 +1,229 @@
+diff -Naur gpe-sketchbook.orig/build/Makefile.dpkg_ipkg gpe-sketchbook/build/Makefile.dpkg_ipkg
+--- gpe-sketchbook.orig/build/Makefile.dpkg_ipkg 1970-01-01 02:00:00.000000000 +0200
++++ gpe-sketchbook/build/Makefile.dpkg_ipkg 2007-02-10 17:21:40.154584782 +0200
+@@ -0,0 +1,114 @@
++## Please read the README in this directory to see how to use this
++## Makefile snippet
++
++# Let's use whatever clean target the specific app provides
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# URL to source tarball
++SOURCE = http://gpe.linuxtogo.org/download/source/$(PACKAGE)-$(VERSION).tar.gz
++
++# can change this to e.g. /var/tmp/deb
++DEB_PATH = ../deb
++
++ifeq ($(CVSBUILD),yes)
++LIBGPEWIDGET_PC = libgpewidget-uninstalled
++PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget
++else
++LIBGPEWIDGET_PC = libgpewidget
++endif
++
++ifeq ($(IN_LIBGPEWIDGET),)
++GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC))
++GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC))
++endif
++
++GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0)
++GTKLIBS = $(shell pkg-config --libs gtk+-2.0)
++
++STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
++STANDARD_CFLAGS = -MD -Wall
++
++ifeq ($(DEBUG),yes)
++CFLAGS += -O2 -g
++LDFLAGS = -g
++else
++CFLAGS += -Os -fomit-frame-pointer
++endif
++
++dist: check-source clean dist-prep
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ mkdir ../$(PACKAGE)-$(VERSION)
++ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -)
++ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile )
++ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz )
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ $(MAKE) printinfo
++
++dist-upload: dist
++ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@linuxtogo.org:/media/data/projects/gpe/source/
++
++dist-prep:
++ipkg-prep:
++install-mo:
++# empty, can be filled in Makefile.translation
++
++install: install-program install-mo
++
++clean-dist:
++ rm -rf familiar/dist familiar/dist.list
++
++clean: clean-dist
++
++check-source:
++ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi
++
++ipkg: check-source ipkg-prep clean
++ rm -rf familiar/dist
++ mkdir -p familiar/dist/CONTROL
++ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control
++ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi
++ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi
++ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi
++ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi
++ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi
++ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program
++ rm -rf familiar/dist.list
++ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list
++ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi
++ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch
++ rm -rf familiar/dist familiar/dist.list
++ $(MAKE) printinfo
++
++dpkg: dist
++ mkdir -p $(DEB_PATH)
++ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz )
++ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian
++ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done
++
++CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
++printinfo:
++ @printf '-------------------------------------------------------------------------------\n'
++ @printf "If this becomes a package release, please add a CVS tag.\n"
++ @printf "You can use 'make tag' for that, it will execute\n"
++ @printf " cvs tag %s\n" $(CVSTAG)
++ @printf "Please upload a tarball (created with 'make dist') to\n"
++ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n"
++ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n"
++ @printf "You can use 'make dist-upload' to do that.\n"
++ @printf "You are currently known as USER %s.\n" $(USER)
++ @printf '-------------------------------------------------------------------------------\n'
++
++tag: check-source
++ cvs tag $(CVSTAG)
++
++retag: check-source
++ cvs tag -F $(CVSTAG)
++
++source: tag dist-upload
++
++%.pc: %.pc.in
++ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@
++
++.c.o:;
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@
+diff -Naur gpe-sketchbook.orig/build/Makefile.translation gpe-sketchbook/build/Makefile.translation
+--- gpe-sketchbook.orig/build/Makefile.translation 1970-01-01 02:00:00.000000000 +0200
++++ gpe-sketchbook/build/Makefile.translation 2007-02-10 17:21:46.170927636 +0200
+@@ -0,0 +1,107 @@
++.SUFFIXES: .mo .po .pot .po8
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# use ipkg-build or ipkg-deb-build
++IPKG_BUILD := ipkg-build
++
++TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint
++
++ifeq ($(DIR_PO),)
++DIR_PO := po
++endif
++
++ifeq ($(BINPACKAGE),)
++BINPACKAGE := $(PACKAGE)
++endif
++
++mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS))
++po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++
++ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present)
++desktop-files += $(PACKAGE).desktop
++endif
++
++ifneq ($(EXTRA_DESKTOPS),)
++desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS))
++endif
++
++all-mo: $(mo-files)
++
++all-desktop: $(desktop-files)
++
++install-mo: all-mo
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ if [ "x$(LINGUAS)" != "x" ]; then \
++ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \
++ fi; \
++ fi;
++
++.po8.mo:;
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ msgfmt -o $@ $<; \
++ fi;
++
++.po.po8:;
++ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@
++
++update-po: $(po-files) extract-po
++
++dist-prep: update-po freshen-po
++# empty
++
++ifeq ($(CVSBUILD),yes)
++ipkg-prep: freshen-po
++# empty
++endif
++
++extract-po:
++ mkdir -p $(DIR_PO)
++ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi )
++ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi
++
++clean: clean-po clean-dist-translation
++
++clean-po:
++ rm -rf $(DIR_PO)/*.mo
++ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done
++
++%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++ intltool-merge -u -d $(DIR_PO) $< $@
++
++freshen-po:
++ rm -rf tmp-po
++ mkdir tmp-po
++ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done
++ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done
++ rm -rf tmp-po
++
++# ------------------------------------------------------------------------
++
++MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-)
++
++ifndef BUILD
++BUILD = ../build
++endif
++
++transdist := familiar/dist-translation
++templates := $(BUILD)/familiar
++ipkglist := translation-ipkgs.txt
++
++clean-dist-translation:
++ rm -rf $(transdist) $(ipkglist)
++
++real-translation-package: all-mo
++ rm -rf $(transdist) $(ipkglist)
++ for LINGUA in $(LINGUAS); do \
++ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \
++ mkdir -p $(transdist)/$$i/CONTROL; \
++ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \
++ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \
++ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \
++ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \
++ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \
++ done
++
++translation-ipkg:
++ make PREFIX=/usr real-translation-package
diff --git a/packages/gpe-sketchbook/gpe-sketchbook_svn.bb b/packages/gpe-sketchbook/gpe-sketchbook_svn.bb
new file mode 100644
index 0000000000..8884746136
--- /dev/null
+++ b/packages/gpe-sketchbook/gpe-sketchbook_svn.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "A GPE notebook to sketch your notes"
+SECTION = "gpe"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "libgpewidget"
+PV = "0.2.9+svn-${SRCDATE}"
+
+inherit pkgconfig autotools
+
+SRC_URI = "${GPE_SVN} \
+ file://svn-build.patch;patch=1"
+
+S = "${WORKDIR}/${PN}"
+
+do_compile () {
+ oe_runmake PREFIX=${prefix}
+ oe_runmake all-desktop PREFIX=${prefix}
+}
+do_install () {
+ oe_runmake PREFIX=${prefix} DESTDIR=${D} install-program
+}
+
+FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications"
+FILES_${PN} += " ${datadir}/gpe/pixmaps"
+
+export CVSBUILD = "no"
+
+CFLAGS += "-D_GNU_SOURCE"
+
+DEFAULT_PREFERENCE = "-1"
+
diff --git a/packages/gpe-snes/.mtn2git_empty b/packages/gpe-snes/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpe-snes/.mtn2git_empty
diff --git a/packages/gpe-snes/gpe-snes_0.1.bb b/packages/gpe-snes/gpe-snes_0.1.bb
new file mode 100644
index 0000000000..13944f5a4a
--- /dev/null
+++ b/packages/gpe-snes/gpe-snes_0.1.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "gpe-snes is a gpe frontend for the snes9x SNES emulator"
+SECTION = "games"
+LICENSE = "GPLv2"
+PRIORITY = "optional"
+DEPENDS = "libgpe"
+
+inherit autotools
+
+PR = "r0"
+
+SRC_URI = "http://www.telefonica.net/web2/mteirap/gpe-snes-${PV}.tar.gz"
diff --git a/packages/gpe-soundserver/gpe-soundserver_0.4-1.bb b/packages/gpe-soundserver/gpe-soundserver_0.4-1.bb
index 8bd4260184..e239f21e04 100644
--- a/packages/gpe-soundserver/gpe-soundserver_0.4-1.bb
+++ b/packages/gpe-soundserver/gpe-soundserver_0.4-1.bb
@@ -2,7 +2,6 @@ LICENSE = "GPL"
SECTION = "gpe"
inherit gpe
-DEPENDS = "virtual/libx11 esound-gpe"
-RDEPENDS_${PN} = "esd"
+DEPENDS = "virtual/libx11 esound"
SRC_URI += "file://makefile-breakage.patch;patch=1"
diff --git a/packages/gpe-su/files/.mtn2git_empty b/packages/gpe-su/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpe-su/files/.mtn2git_empty
diff --git a/packages/gpe-su/files/svn-build.patch b/packages/gpe-su/files/svn-build.patch
new file mode 100644
index 0000000000..09a8dfb92f
--- /dev/null
+++ b/packages/gpe-su/files/svn-build.patch
@@ -0,0 +1,240 @@
+--- gpe-su/Makefile.orig 2007-04-07 13:50:17.507459397 +0300
++++ gpe-su/Makefile 2007-04-07 13:50:25.711926944 +0300
+@@ -1,7 +1,7 @@
+ PREFIX = /usr/local
+ PACKAGE = gpe-su
+ DEBUG = yes
+-CVSBUILD = yes
++CVSBUILD = no
+ VERSION = 0.19
+
+ LINGUAS = nl pt fr sk cs de sv ro ru sr es zh_CN
+diff -Naur gpe-su.orig/build/Makefile.dpkg_ipkg gpe-su/build/Makefile.dpkg_ipkg
+--- gpe-su.orig/build/Makefile.dpkg_ipkg 1970-01-01 02:00:00.000000000 +0200
++++ gpe-su/build/Makefile.dpkg_ipkg 2007-02-10 17:21:40.154584782 +0200
+@@ -0,0 +1,114 @@
++## Please read the README in this directory to see how to use this
++## Makefile snippet
++
++# Let's use whatever clean target the specific app provides
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# URL to source tarball
++SOURCE = http://gpe.linuxtogo.org/download/source/$(PACKAGE)-$(VERSION).tar.gz
++
++# can change this to e.g. /var/tmp/deb
++DEB_PATH = ../deb
++
++ifeq ($(CVSBUILD),yes)
++LIBGPEWIDGET_PC = libgpewidget-uninstalled
++PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget
++else
++LIBGPEWIDGET_PC = libgpewidget
++endif
++
++ifeq ($(IN_LIBGPEWIDGET),)
++GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC))
++GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC))
++endif
++
++GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0)
++GTKLIBS = $(shell pkg-config --libs gtk+-2.0)
++
++STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
++STANDARD_CFLAGS = -MD -Wall
++
++ifeq ($(DEBUG),yes)
++CFLAGS += -O2 -g
++LDFLAGS = -g
++else
++CFLAGS += -Os -fomit-frame-pointer
++endif
++
++dist: check-source clean dist-prep
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ mkdir ../$(PACKAGE)-$(VERSION)
++ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -)
++ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile )
++ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz )
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ $(MAKE) printinfo
++
++dist-upload: dist
++ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@linuxtogo.org:/media/data/projects/gpe/source/
++
++dist-prep:
++ipkg-prep:
++install-mo:
++# empty, can be filled in Makefile.translation
++
++install: install-program install-mo
++
++clean-dist:
++ rm -rf familiar/dist familiar/dist.list
++
++clean: clean-dist
++
++check-source:
++ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi
++
++ipkg: check-source ipkg-prep clean
++ rm -rf familiar/dist
++ mkdir -p familiar/dist/CONTROL
++ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control
++ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi
++ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi
++ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi
++ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi
++ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi
++ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program
++ rm -rf familiar/dist.list
++ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list
++ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi
++ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch
++ rm -rf familiar/dist familiar/dist.list
++ $(MAKE) printinfo
++
++dpkg: dist
++ mkdir -p $(DEB_PATH)
++ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz )
++ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian
++ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done
++
++CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
++printinfo:
++ @printf '-------------------------------------------------------------------------------\n'
++ @printf "If this becomes a package release, please add a CVS tag.\n"
++ @printf "You can use 'make tag' for that, it will execute\n"
++ @printf " cvs tag %s\n" $(CVSTAG)
++ @printf "Please upload a tarball (created with 'make dist') to\n"
++ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n"
++ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n"
++ @printf "You can use 'make dist-upload' to do that.\n"
++ @printf "You are currently known as USER %s.\n" $(USER)
++ @printf '-------------------------------------------------------------------------------\n'
++
++tag: check-source
++ cvs tag $(CVSTAG)
++
++retag: check-source
++ cvs tag -F $(CVSTAG)
++
++source: tag dist-upload
++
++%.pc: %.pc.in
++ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@
++
++.c.o:;
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@
+diff -Naur gpe-su.orig/build/Makefile.translation gpe-su/build/Makefile.translation
+--- gpe-su.orig/build/Makefile.translation 1970-01-01 02:00:00.000000000 +0200
++++ gpe-su/build/Makefile.translation 2007-02-10 17:21:46.170927636 +0200
+@@ -0,0 +1,107 @@
++.SUFFIXES: .mo .po .pot .po8
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# use ipkg-build or ipkg-deb-build
++IPKG_BUILD := ipkg-build
++
++TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint
++
++ifeq ($(DIR_PO),)
++DIR_PO := po
++endif
++
++ifeq ($(BINPACKAGE),)
++BINPACKAGE := $(PACKAGE)
++endif
++
++mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS))
++po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++
++ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present)
++desktop-files += $(PACKAGE).desktop
++endif
++
++ifneq ($(EXTRA_DESKTOPS),)
++desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS))
++endif
++
++all-mo: $(mo-files)
++
++all-desktop: $(desktop-files)
++
++install-mo: all-mo
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ if [ "x$(LINGUAS)" != "x" ]; then \
++ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \
++ fi; \
++ fi;
++
++.po8.mo:;
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ msgfmt -o $@ $<; \
++ fi;
++
++.po.po8:;
++ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@
++
++update-po: $(po-files) extract-po
++
++dist-prep: update-po freshen-po
++# empty
++
++ifeq ($(CVSBUILD),yes)
++ipkg-prep: freshen-po
++# empty
++endif
++
++extract-po:
++ mkdir -p $(DIR_PO)
++ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi )
++ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi
++
++clean: clean-po clean-dist-translation
++
++clean-po:
++ rm -rf $(DIR_PO)/*.mo
++ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done
++
++%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++ intltool-merge -u -d $(DIR_PO) $< $@
++
++freshen-po:
++ rm -rf tmp-po
++ mkdir tmp-po
++ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done
++ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done
++ rm -rf tmp-po
++
++# ------------------------------------------------------------------------
++
++MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-)
++
++ifndef BUILD
++BUILD = ../build
++endif
++
++transdist := familiar/dist-translation
++templates := $(BUILD)/familiar
++ipkglist := translation-ipkgs.txt
++
++clean-dist-translation:
++ rm -rf $(transdist) $(ipkglist)
++
++real-translation-package: all-mo
++ rm -rf $(transdist) $(ipkglist)
++ for LINGUA in $(LINGUAS); do \
++ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \
++ mkdir -p $(transdist)/$$i/CONTROL; \
++ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \
++ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \
++ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \
++ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \
++ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \
++ done
++
++translation-ipkg:
++ make PREFIX=/usr real-translation-package
diff --git a/packages/gpe-su/gpe-su_svn.bb b/packages/gpe-su/gpe-su_svn.bb
new file mode 100644
index 0000000000..113fc4abd4
--- /dev/null
+++ b/packages/gpe-su/gpe-su_svn.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "GPE Graphical root-shell frontend"
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "libgpewidget"
+
+inherit pkgconfig
+
+SRC_URI = "${GPE_SVN} \
+ file://svn-build.patch;patch=1"
+
+S = "${WORKDIR}/${PN}"
+
+DEFAULT_PREFERENCE = "-1"
+
diff --git a/packages/gpe-terminal/files/svn-build.patch b/packages/gpe-terminal/files/svn-build.patch
new file mode 100644
index 0000000000..477aadd99a
--- /dev/null
+++ b/packages/gpe-terminal/files/svn-build.patch
@@ -0,0 +1,238 @@
+--- gpe-terminal.orig/Makefile 2007-04-08 02:00:43.064935587 +0300
++++ gpe-terminal/Makefile 2007-04-08 02:01:24.703308411 +0300
+@@ -9,5 +9,5 @@
+ install -m 644 -D gpe-terminal.png $(DESTDIR)$(PREFIX)/share/pixmaps/gpe-terminal.png
+ install -m 644 -D gpe-terminal.desktop $(DESTDIR)$(PREFIX)/share/applications/gpe-terminal.desktop
+
+-include ../build/Makefile.dpkg_ipkg
++include build/Makefile.dpkg_ipkg
+
+diff -Naur gpe-terminal.orig/build/Makefile.dpkg_ipkg gpe-terminal/build/Makefile.dpkg_ipkg
+--- gpe-terminal.orig/build/Makefile.dpkg_ipkg 1970-01-01 02:00:00.000000000 +0200
++++ gpe-terminal/build/Makefile.dpkg_ipkg 2007-02-10 17:21:40.154584782 +0200
+@@ -0,0 +1,114 @@
++## Please read the README in this directory to see how to use this
++## Makefile snippet
++
++# Let's use whatever clean target the specific app provides
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# URL to source tarball
++SOURCE = http://gpe.linuxtogo.org/download/source/$(PACKAGE)-$(VERSION).tar.gz
++
++# can change this to e.g. /var/tmp/deb
++DEB_PATH = ../deb
++
++ifeq ($(CVSBUILD),yes)
++LIBGPEWIDGET_PC = libgpewidget-uninstalled
++PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget
++else
++LIBGPEWIDGET_PC = libgpewidget
++endif
++
++ifeq ($(IN_LIBGPEWIDGET),)
++GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC))
++GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC))
++endif
++
++GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0)
++GTKLIBS = $(shell pkg-config --libs gtk+-2.0)
++
++STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
++STANDARD_CFLAGS = -MD -Wall
++
++ifeq ($(DEBUG),yes)
++CFLAGS += -O2 -g
++LDFLAGS = -g
++else
++CFLAGS += -Os -fomit-frame-pointer
++endif
++
++dist: check-source clean dist-prep
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ mkdir ../$(PACKAGE)-$(VERSION)
++ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -)
++ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile )
++ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz )
++ rm -rf ../$(PACKAGE)-$(VERSION)
++ $(MAKE) printinfo
++
++dist-upload: dist
++ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@linuxtogo.org:/media/data/projects/gpe/source/
++
++dist-prep:
++ipkg-prep:
++install-mo:
++# empty, can be filled in Makefile.translation
++
++install: install-program install-mo
++
++clean-dist:
++ rm -rf familiar/dist familiar/dist.list
++
++clean: clean-dist
++
++check-source:
++ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi
++
++ipkg: check-source ipkg-prep clean
++ rm -rf familiar/dist
++ mkdir -p familiar/dist/CONTROL
++ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control
++ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi
++ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi
++ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi
++ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi
++ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi
++ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program
++ rm -rf familiar/dist.list
++ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list
++ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi
++ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch
++ rm -rf familiar/dist familiar/dist.list
++ $(MAKE) printinfo
++
++dpkg: dist
++ mkdir -p $(DEB_PATH)
++ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz )
++ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian
++ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done
++
++CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
++printinfo:
++ @printf '-------------------------------------------------------------------------------\n'
++ @printf "If this becomes a package release, please add a CVS tag.\n"
++ @printf "You can use 'make tag' for that, it will execute\n"
++ @printf " cvs tag %s\n" $(CVSTAG)
++ @printf "Please upload a tarball (created with 'make dist') to\n"
++ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n"
++ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n"
++ @printf "You can use 'make dist-upload' to do that.\n"
++ @printf "You are currently known as USER %s.\n" $(USER)
++ @printf '-------------------------------------------------------------------------------\n'
++
++tag: check-source
++ cvs tag $(CVSTAG)
++
++retag: check-source
++ cvs tag -F $(CVSTAG)
++
++source: tag dist-upload
++
++%.pc: %.pc.in
++ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@
++
++.c.o:;
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@
+diff -Naur gpe-terminal.orig/build/Makefile.translation gpe-terminal/build/Makefile.translation
+--- gpe-terminal.orig/build/Makefile.translation 1970-01-01 02:00:00.000000000 +0200
++++ gpe-terminal/build/Makefile.translation 2007-02-10 17:21:46.170927636 +0200
+@@ -0,0 +1,107 @@
++.SUFFIXES: .mo .po .pot .po8
++
++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
++
++# use ipkg-build or ipkg-deb-build
++IPKG_BUILD := ipkg-build
++
++TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint
++
++ifeq ($(DIR_PO),)
++DIR_PO := po
++endif
++
++ifeq ($(BINPACKAGE),)
++BINPACKAGE := $(PACKAGE)
++endif
++
++mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS))
++po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++
++ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present)
++desktop-files += $(PACKAGE).desktop
++endif
++
++ifneq ($(EXTRA_DESKTOPS),)
++desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS))
++endif
++
++all-mo: $(mo-files)
++
++all-desktop: $(desktop-files)
++
++install-mo: all-mo
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ if [ "x$(LINGUAS)" != "x" ]; then \
++ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \
++ fi; \
++ fi;
++
++.po8.mo:;
++ if [ "$(ENABLE_NLS)" != "no" ]; then \
++ msgfmt -o $@ $<; \
++ fi;
++
++.po.po8:;
++ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@
++
++update-po: $(po-files) extract-po
++
++dist-prep: update-po freshen-po
++# empty
++
++ifeq ($(CVSBUILD),yes)
++ipkg-prep: freshen-po
++# empty
++endif
++
++extract-po:
++ mkdir -p $(DIR_PO)
++ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi )
++ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi
++
++clean: clean-po clean-dist-translation
++
++clean-po:
++ rm -rf $(DIR_PO)/*.mo
++ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done
++
++%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
++ intltool-merge -u -d $(DIR_PO) $< $@
++
++freshen-po:
++ rm -rf tmp-po
++ mkdir tmp-po
++ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done
++ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done
++ rm -rf tmp-po
++
++# ------------------------------------------------------------------------
++
++MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-)
++
++ifndef BUILD
++BUILD = ../build
++endif
++
++transdist := familiar/dist-translation
++templates := $(BUILD)/familiar
++ipkglist := translation-ipkgs.txt
++
++clean-dist-translation:
++ rm -rf $(transdist) $(ipkglist)
++
++real-translation-package: all-mo
++ rm -rf $(transdist) $(ipkglist)
++ for LINGUA in $(LINGUAS); do \
++ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \
++ mkdir -p $(transdist)/$$i/CONTROL; \
++ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \
++ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \
++ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \
++ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \
++ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \
++ done
++
++translation-ipkg:
++ make PREFIX=/usr real-translation-package
diff --git a/packages/gpe-terminal/gpe-terminal_1.1.bb b/packages/gpe-terminal/gpe-terminal_1.1.bb
index 578f02b712..3d89e355e9 100644
--- a/packages/gpe-terminal/gpe-terminal_1.1.bb
+++ b/packages/gpe-terminal/gpe-terminal_1.1.bb
@@ -1,8 +1,11 @@
-SECTION = "gpe"
-SRC_URI = "file://${PN}.desktop file://${PN}.png"
DESCRIPTION = "GPE terminal wrapper"
-PV = "1.1"
+SECTION = "gpe"
LICENSE = "GPL"
+RRECOMMENDS = "rxvt-unicode"
+PR = "r1"
+
+SRC_URI = "file://${PN}.desktop file://${PN}.png"
+
do_install() {
install -d ${D}${datadir}/applications
install -d ${D}${datadir}/pixmaps
diff --git a/packages/gpe-terminal/gpe-terminal_svn.bb b/packages/gpe-terminal/gpe-terminal_svn.bb
new file mode 100644
index 0000000000..875c675b2c
--- /dev/null
+++ b/packages/gpe-terminal/gpe-terminal_svn.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "GPE terminal wrapper"
+SECTION = "gpe"
+LICENSE = "GPL"
+RRECOMMENDS = "rxvt-unicode"
+PR = "r1"
+PV = "1.1+svn-${SRCDATE}"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "${GPE_EXTRA_SVN} \
+ file://svn-build.patch;patch=1 \
+ file://${PN}.desktop \
+ file://${PN}.png"
+
+S = "${WORKDIR}/${PN}"
+
+do_install() {
+ install -d ${D}${datadir}/applications
+ install -d ${D}${datadir}/pixmaps
+ install -m 0644 ${WORKDIR}/${PN}.desktop ${D}${datadir}/applications/
+ install -m 0644 ${WORKDIR}/${PN}.png ${D}${datadir}/pixmaps/
+}
diff --git a/packages/gpe-themes/gpe-theme-clearlooks_0.2.bb b/packages/gpe-themes/gpe-theme-clearlooks_0.2.bb
index 796fc0ccae..77f8289025 100644
--- a/packages/gpe-themes/gpe-theme-clearlooks_0.2.bb
+++ b/packages/gpe-themes/gpe-theme-clearlooks_0.2.bb
@@ -1,14 +1,13 @@
-DESCRIPTION = "GTK+ clearlooks theme adjusted for GPE"
-LICENSE = "GPL"
-
-PR= "r1"
+DESCRIPTION = "GTK+ clearlooks theme adjusted for GPE"
+LICENSE = "GPL"
+PR = "r1"
#it doesn't really depends on it, but it's nice to make OE build it
-DEPENDS = "gtk-engines"
-RDEPENDS = "gtk-engine-clearlooks"
+DEPENDS = "gtk-engines"
+RDEPENDS = "gtk-engine-clearlooks"
-FILES_${PN} = "${datadir}/themes/"
-SRC_URI = "http://dominion.kabel.utwente.nl/koen/pda/files/${P}.tar.gz"
+FILES_${PN} = "${datadir}/themes/"
+SRC_URI = "http://dominion.kabel.utwente.nl/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 8af15beb94..0ec4e10338 100644
--- a/packages/gpe-themes/gpe-theme-clearlooks_0.3.bb
+++ b/packages/gpe-themes/gpe-theme-clearlooks_0.3.bb
@@ -1,14 +1,12 @@
-DESCRIPTION = "GTK+ clearlooks theme adjusted for GPE"
-LICENSE = "GPL"
-
-PR= "r0"
+DESCRIPTION = "GTK+ clearlooks theme adjusted for GPE"
+LICENSE = "GPL"
#it doesn't really depends on it, but it's nice to make OE build it
-DEPENDS = "gtk-engines"
-RDEPENDS = "gtk-engine-clearlooks"
+DEPENDS = "gtk-engines"
+RDEPENDS = "gtk-engine-clearlooks"
-FILES_${PN} = "${datadir}/themes/"
-SRC_URI = "http://dominion.kabel.utwente.nl/koen/pda/files/${P}.tar.gz"
+FILES_${PN} = "${datadir}/themes/"
+SRC_URI = "http://dominion.kabel.utwente.nl/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 1a0b8f49a8..02b7a62c0d 100644
--- a/packages/gpe-themes/gpe-theme-industrial_0.2.bb
+++ b/packages/gpe-themes/gpe-theme-industrial_0.2.bb
@@ -1,14 +1,12 @@
-DESCRIPTION = "GTK+ industrial theme adjusted for GPE"
-LICENSE = "GPL"
-
-PR= "r0"
+DESCRIPTION = "GTK+ industrial theme adjusted for GPE"
+LICENSE = "GPL"
#it doesn't really depends on it, but it's nice to make OE build it
-DEPENDS = "gtk-engines"
-RDEPENDS = "gtk-engine-industrial"
+DEPENDS = "gtk-engines"
+RDEPENDS = "gtk-engine-industrial"
-FILES_${PN} = "${datadir}/themes/"
-SRC_URI = "http://dominion.kabel.utwente.nl/koen/pda/files/${P}.tar.gz"
+FILES_${PN} = "${datadir}/themes/"
+SRC_URI = "http://dominion.kabel.utwente.nl/koen/pda/files/${P}.tar.gz"
do_install() {
install -d ${D}${datadir}/themes/
diff --git a/packages/gpe-timesheet/gpe-timesheet_0.18.bb b/packages/gpe-timesheet/gpe-timesheet_0.18.bb
deleted file mode 100644
index 0cd8b539f0..0000000000
--- a/packages/gpe-timesheet/gpe-timesheet_0.18.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-LICENSE = "GPL"
-inherit gpe
-
-DESCRIPTION = "GPE time tracker"
-DEPENDS = "libgpewidget gtk+ sqlite"
-SECTION = "gpe"
-RDEPENDS = "gpe-icons"
-
-SRC_URI = "${GPE_MIRROR}/gpe-timesheet-${PV}.tar.gz"
diff --git a/packages/gpe-timesheet/gpe-timesheet_0.19.bb b/packages/gpe-timesheet/gpe-timesheet_0.19.bb
deleted file mode 100644
index 0cd8b539f0..0000000000
--- a/packages/gpe-timesheet/gpe-timesheet_0.19.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-LICENSE = "GPL"
-inherit gpe
-
-DESCRIPTION = "GPE time tracker"
-DEPENDS = "libgpewidget gtk+ sqlite"
-SECTION = "gpe"
-RDEPENDS = "gpe-icons"
-
-SRC_URI = "${GPE_MIRROR}/gpe-timesheet-${PV}.tar.gz"
diff --git a/packages/gpe-timesheet/gpe-timesheet_0.20.bb b/packages/gpe-timesheet/gpe-timesheet_0.20.bb
deleted file mode 100644
index 0cd8b539f0..0000000000
--- a/packages/gpe-timesheet/gpe-timesheet_0.20.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-LICENSE = "GPL"
-inherit gpe
-
-DESCRIPTION = "GPE time tracker"
-DEPENDS = "libgpewidget gtk+ sqlite"
-SECTION = "gpe"
-RDEPENDS = "gpe-icons"
-
-SRC_URI = "${GPE_MIRROR}/gpe-timesheet-${PV}.tar.gz"
diff --git a/packages/gpe-timesheet/gpe-timesheet_0.21.bb b/packages/gpe-timesheet/gpe-timesheet_0.21.bb
deleted file mode 100644
index 0cd8b539f0..0000000000
--- a/packages/gpe-timesheet/gpe-timesheet_0.21.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-LICENSE = "GPL"
-inherit gpe
-
-DESCRIPTION = "GPE time tracker"
-DEPENDS = "libgpewidget gtk+ sqlite"
-SECTION = "gpe"
-RDEPENDS = "gpe-icons"
-
-SRC_URI = "${GPE_MIRROR}/gpe-timesheet-${PV}.tar.gz"
diff --git a/packages/gpe-timesheet/gpe-timesheet_svn.bb b/packages/gpe-timesheet/gpe-timesheet_svn.bb
new file mode 100644
index 0000000000..0eae00b1ca
--- /dev/null
+++ b/packages/gpe-timesheet/gpe-timesheet_svn.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "GPE time tracker"
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "libgpewidget gtk+ sqlite libtododb"
+RDEPENDS = "gpe-icons"
+PR = "r1"
+PV = "0.31+svn-${SRCDATE}"
+
+inherit autotools
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-today/gpe-today_cvs.bb b/packages/gpe-today/gpe-today_cvs.bb
deleted file mode 100644
index 47e9c01a66..0000000000
--- a/packages/gpe-today/gpe-today_cvs.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-DEFAULT_PREFERENCE = "-1"
-
-DESCRIPTION = "Displays a summary of appointments and tasks for the day ahead"
-DEPENDS = "gtk+ libxrandr libxsettings libxsettings-client libgpewidget libdisplaymigration libeventdb libgpepimc libtododb"
-SECTION = "gpe"
-PRIORITY = "optional"
-
-
-S = "${WORKDIR}/${PN}"
-#Remove the dash below when 0.10 changes in PV
-PV = "0.11+cvs-${SRCDATE}"
-PR = "r0"
-
-inherit gpe
-
-SRC_URI = "${HANDHELDS_CVS};module=gpe/base/${PN} \
- file://Makefile.dpkg_ipkg \
- file://Makefile.translation"
-
-
-do_compile () {
- sed -i 's:CVSBUILD = yes:CVSBUILD = no:' Makefile
- mkdir build
- cp ${WORKDIR}/Makefile.* build/
- oe_runmake PREFIX=${prefix}
- oe_runmake all-desktop PREFIX=${prefix}
-}
-
-
diff --git a/packages/gpe-today/gpe-today_svn.bb b/packages/gpe-today/gpe-today_svn.bb
new file mode 100644
index 0000000000..329e2271ea
--- /dev/null
+++ b/packages/gpe-today/gpe-today_svn.bb
@@ -0,0 +1,24 @@
+SECTION = "gpe"
+PRIORITY = "optional"
+DEPENDS = "gtk+ libxrandr libxsettings libxsettings-client libgpewidget libdisplaymigration libeventdb libgpepimc libtododb"
+PV = "0.11+svn-${SRCDATE}"
+PR = "r0"
+
+inherit gpe
+
+SRC_URI = "${GPE_SVN} \
+ file://Makefile.dpkg_ipkg \
+ file://Makefile.translation"
+
+S = "${WORKDIR}/${PN}"
+
+
+do_compile () {
+ sed -i 's:CVSBUILD = yes:CVSBUILD = no:' Makefile
+ mkdir -p build
+ cp ${WORKDIR}/Makefile.* build/
+ oe_runmake PREFIX=${prefix}
+ oe_runmake all-desktop PREFIX=${prefix}
+}
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-todo/gpe-todo-hildon_0.54.bb b/packages/gpe-todo/gpe-todo-hildon_0.54.bb
index 8fa37565cb..9c75dec47a 100644
--- a/packages/gpe-todo/gpe-todo-hildon_0.54.bb
+++ b/packages/gpe-todo/gpe-todo-hildon_0.54.bb
@@ -3,7 +3,7 @@ PR = "r0"
DESCRIPTION = "GPE to-do list"
DEPENDS = "libgpewidget-hildon libgpepimc-hildon libtododb sdk-default-icons libosso"
RDEPENDS = "sdk-default-icons"
-SECTION = "gpe"
+SECTION = "gpe"
PRIORITY = "optional"
inherit gpe autotools pkgconfig
diff --git a/packages/gpe-todo/gpe-todo-hildon_0.55.bb b/packages/gpe-todo/gpe-todo-hildon_0.55.bb
index 8fa37565cb..9c75dec47a 100644
--- a/packages/gpe-todo/gpe-todo-hildon_0.55.bb
+++ b/packages/gpe-todo/gpe-todo-hildon_0.55.bb
@@ -3,7 +3,7 @@ PR = "r0"
DESCRIPTION = "GPE to-do list"
DEPENDS = "libgpewidget-hildon libgpepimc-hildon libtododb sdk-default-icons libosso"
RDEPENDS = "sdk-default-icons"
-SECTION = "gpe"
+SECTION = "gpe"
PRIORITY = "optional"
inherit gpe autotools pkgconfig
diff --git a/packages/gpe-todo/gpe-todo_svn.bb b/packages/gpe-todo/gpe-todo_svn.bb
new file mode 100644
index 0000000000..22b2e3ec3c
--- /dev/null
+++ b/packages/gpe-todo/gpe-todo_svn.bb
@@ -0,0 +1,12 @@
+LICENSE = "GPL"
+DESCRIPTION = "GPE to-do list"
+DEPENDS = "libgpewidget libgpepimc libtododb gtk+"
+SECTION = "gpe"
+PRIORITY = "optional"
+
+inherit autotools pkgconfig
+
+SRC_URI="${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
diff --git a/packages/gpe-what/gpe-what_cvs.bb b/packages/gpe-what/gpe-what_cvs.bb
deleted file mode 100644
index bd83a42c53..0000000000
--- a/packages/gpe-what/gpe-what_cvs.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-LICENSE = "GPL"
-
-DEFAULT_PREFERENCE = "-1"
-S = "${WORKDIR}/${PN}"
-PV = "0.41+cvs${SRCDATE}"
-PR = "r0"
-
-inherit autotools gpe
-
-SRC_URI = "${HANDHELDS_CVS};module=gpe/base/${PN}"
-
-DESCRIPTION = "GPE modal help"
-DEPENDS = "virtual/libx11 gtk+"
diff --git a/packages/gpe-what/gpe-what_svn.bb b/packages/gpe-what/gpe-what_svn.bb
new file mode 100644
index 0000000000..7ecaf20a2f
--- /dev/null
+++ b/packages/gpe-what/gpe-what_svn.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "GPE modal help"
+LICENSE = "GPL"
+DEPENDS = "virtual/libx11 gtk+"
+PV = "0.41+svn${SRCDATE}"
+
+inherit autotools
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpe-windowlist/gpe-windowlist_cvs.bb b/packages/gpe-windowlist/gpe-windowlist_cvs.bb
deleted file mode 100644
index 245f5c0ff5..0000000000
--- a/packages/gpe-windowlist/gpe-windowlist_cvs.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-DEPENDS = "libgpewidget libgpelaunch gtk+"
-SECTION = "gpe"
-DESCRIPTION = "GPE windowlist applet"
-LICENSE = "GPL"
-
-DEFAULT_PREFERENCE = "-1"
-
-PV = "0.1+cvs${SRCDATE}"
-PR = "r1"
-
-inherit autotools gpe
-
-SRC_URI = "${HANDHELDS_CVS};module=gpe/base/${PN}"
-S = "${WORKDIR}/${PN}"
-
-
-
diff --git a/packages/gpe-windowlist/gpe-windowlist_svn.bb b/packages/gpe-windowlist/gpe-windowlist_svn.bb
new file mode 100644
index 0000000000..2f9d18111e
--- /dev/null
+++ b/packages/gpe-windowlist/gpe-windowlist_svn.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "GPE windowlist applet"
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "libgpewidget libgpelaunch gtk+"
+PV = "0.1+svn${SRCDATE}"
+PR = "r1"
+
+inherit autotools
+
+SRC_URI = "${GPE_EXTRA_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpephone/.mtn2git_empty b/packages/gpephone/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/.mtn2git_empty
diff --git a/packages/gpephone/addressbook_0.1.bb b/packages/gpephone/addressbook_0.1.bb
new file mode 100644
index 0000000000..21fd95fe66
--- /dev/null
+++ b/packages/gpephone/addressbook_0.1.bb
@@ -0,0 +1,12 @@
+LICENSE = "LiPS"
+DESCRIPTION = "LiPS address book"
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r0"
+
+DEPENDS = "gtk+ libgpewidget libgpephone dbus-glib libabenabler libiac libim"
+
+GPE_TARBALL_SUFFIX= "bz2"
+inherit gpephone autotools
+
+FILES_${PN} += "${datadir}/database"
diff --git a/packages/gpephone/audioplayer_1.0.bb b/packages/gpephone/audioplayer_1.0.bb
new file mode 100644
index 0000000000..77737248b4
--- /dev/null
+++ b/packages/gpephone/audioplayer_1.0.bb
@@ -0,0 +1,12 @@
+LICENSE = "LiPS"
+DESCRIPTION = "An audio player for GPE phone edition."
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r0"
+
+DEPENDS = "gtk+ libgpewidget libgpephone dbus-glib libabenabler libiac gstreamer libgemwidget"
+
+GPE_TARBALL_SUFFIX= "bz2"
+inherit gpephone autotools
+
+FILES_${PN} += "${datadir}/themes"
diff --git a/packages/gpephone/calendar_1.0.bb b/packages/gpephone/calendar_1.0.bb
new file mode 100644
index 0000000000..c78979e244
--- /dev/null
+++ b/packages/gpephone/calendar_1.0.bb
@@ -0,0 +1,12 @@
+LICENSE = "LiPS"
+DESCRIPTION = "Calendar application for GPE Phone Edition"
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r0"
+
+DEPENDS = "gtk+ libgpewidget libgpephone libgemwidget dbus-glib libcalenabler libiac"
+
+GPE_TARBALL_SUFFIX= "gz"
+inherit gpephone autotools
+
+FILES_${PN} += "${datadir}/database ${datadir}/res"
diff --git a/packages/gpephone/cms92init_0.1.bb b/packages/gpephone/cms92init_0.1.bb
new file mode 100644
index 0000000000..ab0388a45d
--- /dev/null
+++ b/packages/gpephone/cms92init_0.1.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "GSM/GPRS mux initializer"
+LICENSE = "GPL"
+SECTION = "gpe"
+PRIORITY = "optional"
+DEPENDS = "glibc"
+PR = "r0"
+
+inherit gpephone
+
+SRC_URI = "${GPEPHONE_MIRROR}/GPRS/GPRS-${PV}.tar.bz2"
+
+
+S = ${WORKDIR}/GPRS/cms92init-simple
+
+do_compile() {
+ oe_runmake PREFIX=${prefix}
+}
+
+do_install() {
+ oe_runmake PREFIX=${prefix} DESTDIR=${D} install
+}
diff --git a/packages/gpephone/connect_0.1.bb b/packages/gpephone/connect_0.1.bb
new file mode 100644
index 0000000000..c5ce0a0d54
--- /dev/null
+++ b/packages/gpephone/connect_0.1.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "GSM/GPRS mux tools"
+LICENSE = "GPL"
+SECTION = "gpe"
+PRIORITY = "optional"
+DEPENDS = "glibc"
+PR = "r0"
+
+inherit gpephone
+
+SRC_URI = "${GPEPHONE_MIRROR}/GPRS/GPRS-${PV}.tar.bz2"
+
+S = ${WORKDIR}/GPRS/connect
+
+do_compile() {
+ oe_runmake PREFIX=${prefix}
+}
+
+do_install() {
+ install -d ${D}/${prefix}/bin
+ install -m755 connect ${D}/${prefix}/bin
+ install -m755 disconnect ${D}/${prefix}/bin
+}
diff --git a/packages/gpephone/gpe-applauncher-0.7/.mtn2git_empty b/packages/gpephone/gpe-applauncher-0.7/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/gpe-applauncher-0.7/.mtn2git_empty
diff --git a/packages/gpephone/gpe-applauncher-0.7/default-icon.patch b/packages/gpephone/gpe-applauncher-0.7/default-icon.patch
new file mode 100644
index 0000000000..e1ec24f141
--- /dev/null
+++ b/packages/gpephone/gpe-applauncher-0.7/default-icon.patch
@@ -0,0 +1,20 @@
+Index: applications.c
+===================================================================
+--- applications.c (Revision 598)
++++ applications.c (Arbeitskopie)
+@@ -463,8 +463,13 @@
+ applauncher_settings.themename ? applauncher_settings.themename : "default",
+ THEMEFOLDER, ICON_LOADING, NULL);
+ }
+-
+- g_print ("\nloading icon: %s\n", file);
++
++ if (!g_file_test (file, G_FILE_TEST_EXISTS))
++ {
++ g_free (file);
++ file = g_build_filename (LOCAL_THEMEDIR, "default",
++ THEMEFOLDER, ICON_LOADING, NULL);
++ }
+
+ nc_window = gtk_app_notification_new();
+ gtk_widget_set_size_request(GTK_WIDGET(nc_window), -1, 70);
diff --git a/packages/gpephone/gpe-applauncher_0.7.bb b/packages/gpephone/gpe-applauncher_0.7.bb
new file mode 100644
index 0000000000..349330047b
--- /dev/null
+++ b/packages/gpephone/gpe-applauncher_0.7.bb
@@ -0,0 +1,16 @@
+LICENSE = "GPL"
+DESCRIPTION = "A cellphone application launcher."
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r1"
+
+DEPENDS = "gtk+ libgpewidget libgpephone libgpelaunch dbus-glib libxsettings-client"
+
+GPE_TARBALL_SUFFIX= "gz"
+inherit gpephone autotools
+
+SRC_URI += " file://default-icon.patch;patch=1;pnum=0"
+
+#EXTRA_OECONF = "--enable-gridlayout"
+
+FILES_${PN} += '${datadir}/themes'
diff --git a/packages/gpephone/gpe-phonepanel_0.7.bb b/packages/gpephone/gpe-phonepanel_0.7.bb
new file mode 100644
index 0000000000..1a2f4a272e
--- /dev/null
+++ b/packages/gpephone/gpe-phonepanel_0.7.bb
@@ -0,0 +1,12 @@
+LICENSE = "GPL"
+DESCRIPTION = "A cellphone status panel to be used with gpe-applauncher."
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r0"
+
+DEPENDS = "gtk+ libgpephone dbus-glib"
+
+GPE_TARBALL_SUFFIX= "gz"
+inherit gpephone autotools
+
+FILES_${PN} += "${datadir}/themes"
diff --git a/packages/gpephone/gpe-session-scripts-phone/.mtn2git_empty b/packages/gpephone/gpe-session-scripts-phone/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/gpe-session-scripts-phone/.mtn2git_empty
diff --git a/packages/gpephone/gpe-session-scripts-phone/disable-composite.xsettings b/packages/gpephone/gpe-session-scripts-phone/disable-composite.xsettings
new file mode 100644
index 0000000000..a8ad54cf8d
--- /dev/null
+++ b/packages/gpephone/gpe-session-scripts-phone/disable-composite.xsettings
@@ -0,0 +1 @@
+MATCHBOX/COMPOSITE:S:off
diff --git a/packages/gpephone/gpe-session-scripts-phone/matchbox-session b/packages/gpephone/gpe-session-scripts-phone/matchbox-session
new file mode 100644
index 0000000000..bc8166e70e
--- /dev/null
+++ b/packages/gpephone/gpe-session-scripts-phone/matchbox-session
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# host session applications
+#. /etc/X11/Xsession
+if [ -x /etc/X11/phonesession ]; then
+ . /etc/X11/phonesession
+fi
diff --git a/packages/gpephone/gpe-session-scripts-phone/matchbox-session.vm b/packages/gpephone/gpe-session-scripts-phone/matchbox-session.vm
new file mode 100644
index 0000000000..24f80078f9
--- /dev/null
+++ b/packages/gpephone/gpe-session-scripts-phone/matchbox-session.vm
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# host session applications
+xoo -xd :1 -xn /usr/bin/Xephyr --device gpephone --title GPEPhone &
+
+# start nested session
+
+export DISPLAY=:1
+#. /etc/X11/Xsession
+if [ -x /etc/X11/phonesession ]; then
+ . /etc/X11/phonesession
+fi
+
+
+DISPLAY=:0 exec matchbox-window-manager -use_titlebar yes $@
diff --git a/packages/gpephone/gpe-session-scripts-phone/phonesession b/packages/gpephone/gpe-session-scripts-phone/phonesession
new file mode 100755
index 0000000000..6f6d9d59ae
--- /dev/null
+++ b/packages/gpephone/gpe-session-scripts-phone/phonesession
@@ -0,0 +1,62 @@
+#!/bin/sh
+export V_ROOT=/
+export APP_PATH=/usr
+
+# For GEM enivronment
+export GEM_PATH=/usr
+
+# For Volume Configuration
+export VOLCOF_RES_PATH=/usr/share/volconf
+
+# For Voc History
+export VOC_DATA_PATH=$V_ROOT/usr/share/vochistory
+
+# For AddressBook
+export PIM_DATA_PATH=$APP_PATH/share
+export ABOOK_DATA_PATH=$APP_PATH/share
+
+# For Voicecall
+export VOC_IMAGE_PATH=$APP_PATH/share/pixmaps
+
+# For SMS
+export SMS_CONF_PATH=$APP_PATH/share/conf
+export SMS_GRAPHIC_PATH=$APP_PATH/share/graphic
+export SMS_RING_TONE_PATH=$APP_PATH/share/chocolate.mp3
+
+# For E-mail
+export EMAIL_GRAPHIC_PATH=$APP_PATH/share/email-graphic
+export TINYMAIL_CACHE_DIR=$APP_PATH/share/tinymail.cache
+
+# For Calendar
+export CAL_RES_PATH=$APP_PATH/share/res
+
+# For GTK input engine
+export PTIM_PATH=/usr/lib/gtk-2.0/2.4.0/immodules/ptim
+export PTIM_PIXMAPS_PATH=$PTIM_PATH/pixmaps
+export PTIM_CONFIG_FILE=$PTIM_PATH/imconfig
+export PTIM_HELPER_PATH=$PTIM_PATH/helper
+export PTIM_ENGINE_PATH=$PTIM_PATH/engine
+export GTK_IM_MODULE=ptim
+
+# Start GPE Phone Edition apps through matchbox session
+gpe-phonepanel&
+gpe-applauncher&
+matchbox-window-manager -use_titlebar no&
+
+# Start E-Sound Server
+esd -nobeeps -as 2&
+esdplay /mnt/sd/sounds/startup.wav
+
+# Start SoundServer
+soundserver &
+
+# Run GSM support stuff
+
+#cms92init &
+gsmMux -d -p /dev/ttyS0 -m cms92 -f 128 -b 115200 -c /dev/ptmx /dev/ptmx &
+
+#save session bus address to a file
+echo $DBUS_SESSION_BUS_ADDRESS > /tmp/dbusaddress
+
+# Start PhoneServer - do not stop, it keeps the session running
+exec phoneserver
diff --git a/packages/gpephone/gpe-session-scripts-phone/standard-apps.patch b/packages/gpephone/gpe-session-scripts-phone/standard-apps.patch
new file mode 100644
index 0000000000..3be47c03b2
--- /dev/null
+++ b/packages/gpephone/gpe-session-scripts-phone/standard-apps.patch
@@ -0,0 +1,23 @@
+--- gpe-session-scripts/X11/Xsession.d/98standard-apps~ 2007-04-18 18:54:59.000000000 +0200
++++ gpe-session-scripts/X11/Xsession.d/98standard-apps 2007-04-18 18:54:59.000000000 +0200
+@@ -7,20 +7,3 @@
+ else
+ time_set_already=no
+ fi
+-
+-# No action if .mbdock exists
+-if [ ! -f $HOME/.matchbox/mbdock.session ]; then
+- mkdir -p $HOME/.matchbox
+- cp /etc/gpe/gpe.mbdock $HOME/.matchbox/mbdock.session
+-
+- if [ "$time_set_already" = "no" ]; then
+- gpe-conf time user_only &
+- fi
+-
+- gpe-question --icon !gtk-dialog-info --question "<b>Welcome to GPE!</b>
+-
+-I have added some standard programs to the panel at the bottom of the screen.
+-
+-To remove these, or add more, tap and hold on an empty area of the panel." --buttons !gtk-ok &
+-fi
+-
diff --git a/packages/gpephone/gpe-session-scripts-phone_0.67.bb b/packages/gpephone/gpe-session-scripts-phone_0.67.bb
new file mode 100644
index 0000000000..24d4a27e80
--- /dev/null
+++ b/packages/gpephone/gpe-session-scripts-phone_0.67.bb
@@ -0,0 +1,53 @@
+inherit gpe
+
+DESCRIPTION = "GPE session startup scripts hack for GPE Phone Edition"
+LICENSE = "GPL"
+SECTION = "gpe"
+PRIORITY = "optional"
+RDEPENDS_${PN} = "gpe-applauncher gpe-phonepanel gpe-session-starter gpe-question xmodmap xdpyinfo xserver-common esd esd-utils"
+DEPENDS = "matchbox-wm gpe-applauncher gpe-phonepanel gpe-question xmodmap xdpyinfo xserver-common esound"
+
+SRC_URI = "${GPE_MIRROR}/gpe-session-scripts-${PV}.tar.gz \
+ file://matchbox-session \
+ file://matchbox-session.vm \
+ file://phonesession \
+ file://disable-composite.xsettings \
+ file://standard-apps.patch;patch=1"
+
+PR = "r6"
+
+S = "${WORKDIR}/gpe-session-scripts-${PV}"
+
+
+# We assume that x86 means we are building an emulation image
+do_install_append() {
+ install -d ${D}${sysconfdir}/gpe/xsettings-default.d
+ if [ "${GUI_MACHINE_CLASS}" != "bigscreen" ]; then
+ echo "Gtk/ToolbarStyle:S:icons" > ${D}${sysconfdir}/gpe/xsettings-default.d/toolbar
+ fi
+ install -d ${D}${sysconfdir}/matchbox
+ install ${WORKDIR}/matchbox-session ${D}${sysconfdir}/matchbox/session
+
+ install -d ${D}${sysconfdir}/gpe/xsettings-default.d
+ install -m 0644 ${WORKDIR}/disable-composite.xsettings ${D}${sysconfdir}/gpe/xsettings-default.d/disable-composite
+
+ mv ${D}/usr/bin/gpe-logout ${D}/usr/bin/gpe-logout.matchbox
+
+ install -d ${D}${sysconfdir}/X11
+ install -m755 ${WORKDIR}/phonesession ${D}${sysconfdir}/X11/phonesession
+}
+
+do_install_append_x86() {
+ install ${WORKDIR}/matchbox-session.vm ${D}${sysconfdir}/matchbox/session
+}
+
+pkg_postinst_${PN}() {
+ update-alternatives --install /usr/bin/gpe-logout gpe-logout /usr/bin/gpe-logout.matchbox 10
+}
+
+pkg_postrm_${PN}() {
+ update-alternatives --remove gpe-logout /usr/bin/gpe-logout.matchbox
+}
+
+# This makes use of GUI_MACHINE_CLASS, so set PACKAGE_ARCH appropriately
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/packages/gpephone/gsmmux/.mtn2git_empty b/packages/gpephone/gsmmux/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/gsmmux/.mtn2git_empty
diff --git a/packages/gpephone/gsmmux/gsmmux-makefile.patch b/packages/gpephone/gsmmux/gsmmux-makefile.patch
new file mode 100644
index 0000000000..66ac085f1d
--- /dev/null
+++ b/packages/gpephone/gsmmux/gsmmux-makefile.patch
@@ -0,0 +1,28 @@
+--- Makefile.orig 2007-02-04 15:34:43.000000000 +0100
++++ Makefile 2007-02-04 15:36:58.000000000 +0100
+@@ -5,9 +5,7 @@
+ SRC = gsm0710.c buffer.c
+ OBJS = gsm0710.o buffer.o
+
+-CC = gcc
+-LD = gcc
+-CFLAGS = -Wall
++PACKAGE_CFLAGS = -Wall
+ LDLIBS = -lm
+
+ ifeq ($(DEBUG),y)
+@@ -21,9 +19,13 @@
+ rm -f $(OBJS) $(TARGET)
+
+ %.o: %.c
+- $(CC) $(CFLAGS) -c -o $@ $<
++ $(CC) $(CFLAGS) $(PACKAGE_CFLAGS) -c -o $@ $<
+
+ $(TARGET): $(OBJS)
+ $(LD) $(LDLIBS) -o $@ $(OBJS)
+
++install: $(TARGET)
++ install -d $(DESTDIR)/$(PREFIX)/bin
++ install -m 755 $(TARGET) $(DESTDIR)/$(PREFIX)/bin
++
+ .PHONY: all clean
diff --git a/packages/gpephone/gsmmux_alpha-2.bb b/packages/gpephone/gsmmux_alpha-2.bb
new file mode 100644
index 0000000000..9a6433a58a
--- /dev/null
+++ b/packages/gpephone/gsmmux_alpha-2.bb
@@ -0,0 +1,12 @@
+LICENSE = "GPL"
+DESCRIPTION = "A GSM (De-)Multiplexer."
+SECTION = "gsm"
+PRIORITY = "optional"
+PR = "r0"
+
+DEPENDS = "glibc"
+
+inherit gpe
+
+SRC_URI = "http://download2.berlios.de/gsmmux/${P}.tar.gz \
+ file://gsmmux-makefile.patch;patch=1;pnum=0"
diff --git a/packages/gpephone/libabenabler_0.1.bb b/packages/gpephone/libabenabler_0.1.bb
new file mode 100644
index 0000000000..c76d8f469b
--- /dev/null
+++ b/packages/gpephone/libabenabler_0.1.bb
@@ -0,0 +1,16 @@
+LICENSE = "LGPL"
+DESCRIPTION = "LiPS address book library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 librecord liblipsevent libim sqlite3"
+PR = "r1"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpephone pkgconfig autotools
+
+LDFLAGS += " -L${STAGING_LIBDIR}"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libcalenabler_1.0.bb b/packages/gpephone/libcalenabler_1.0.bb
new file mode 100644
index 0000000000..c23e1b42a5
--- /dev/null
+++ b/packages/gpephone/libcalenabler_1.0.bb
@@ -0,0 +1,16 @@
+LICENSE = "LiPS"
+DESCRIPTION = "LiPS calendar database backend library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 e2fsprogs-libs sqlite3"
+PR = "r1"
+
+GPE_TARBALL_SUFFIX = "gz"
+
+inherit gpephone pkgconfig autotools
+
+LDFLAGS += " -L${STAGING_LIBDIR}"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libchenabler_0.1.bb b/packages/gpephone/libchenabler_0.1.bb
new file mode 100644
index 0000000000..740ed21c65
--- /dev/null
+++ b/packages/gpephone/libchenabler_0.1.bb
@@ -0,0 +1,16 @@
+LICENSE = "LiPS"
+DESCRIPTION = "LiPS voice call library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 sqlite3 librecord"
+PR = "r0"
+
+GPE_TARBALL_SUFFIX = "gz"
+
+inherit gpephone pkgconfig autotools
+
+FILES_${PN} += " ${datadir}/vochistory"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libgemwidget/.mtn2git_empty b/packages/gpephone/libgemwidget/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/libgemwidget/.mtn2git_empty
diff --git a/packages/gpephone/libgemwidget/gemfilechooser-NULL-callback.patch b/packages/gpephone/libgemwidget/gemfilechooser-NULL-callback.patch
new file mode 100644
index 0000000000..8b5b372ff6
--- /dev/null
+++ b/packages/gpephone/libgemwidget/gemfilechooser-NULL-callback.patch
@@ -0,0 +1,12 @@
+--- /tmp/gemfilechooser.c 2007-05-08 10:05:21.000000000 +0200
++++ libgemwidget-0.1/src/gemfilechooser.c 2007-05-08 10:13:59.015251000 +0200
+@@ -640,7 +640,8 @@
+ folder = gtk_file_system_get_folder(filechooser->file_system,
+ path,
+ GTK_FILE_INFO_ALL,
+- &error);
++ NULL,
++ &error);
+ if (folder == NULL)
+ {
+ g_print("%s(): get folder error: %s\n",
diff --git a/packages/gpephone/libgemwidget_0.1.bb b/packages/gpephone/libgemwidget_0.1.bb
new file mode 100644
index 0000000000..0b670e485d
--- /dev/null
+++ b/packages/gpephone/libgemwidget_0.1.bb
@@ -0,0 +1,17 @@
+LICENSE = "LiPS"
+DESCRIPTION = "Extended widget library for GPE phone environment."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "gtk+ libiac libgpephone"
+PR = "r1"
+
+GPE_TARBALL_SUFFIX = "bz2"
+inherit gpephone pkgconfig autotools
+
+# This really is not angstrom specific, but gtk 2.10 specific
+# for a better solution: "patches accepted"
+SRC_URI_append_angstrom = " file://gemfilechooser-NULL-callback.patch;patch=1"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libgpephone_0.3.bb b/packages/gpephone/libgpephone_0.3.bb
new file mode 100644
index 0000000000..9a78fd9947
--- /dev/null
+++ b/packages/gpephone/libgpephone_0.3.bb
@@ -0,0 +1,13 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Base library for GPE phone environment."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "gtk+ gtk-doc dbus-glib"
+PR = "r1"
+
+GPE_TARBALL_SUFFIX = "bz2"
+inherit gpephone pkgconfig autotools
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libiac_0.1.bb b/packages/gpephone/libiac_0.1.bb
new file mode 100644
index 0000000000..940b1ecc31
--- /dev/null
+++ b/packages/gpephone/libiac_0.1.bb
@@ -0,0 +1,13 @@
+LICENSE = "LiPS"
+DESCRIPTION = "LiPS IPC library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "gtk+ gtk-doc"
+PR = "r1"
+
+GPE_TARBALL_SUFFIX = "bz2"
+inherit gpephone pkgconfig autotools
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libidn_0.5.19.bb b/packages/gpephone/libidn_0.5.19.bb
new file mode 100644
index 0000000000..4254ef466d
--- /dev/null
+++ b/packages/gpephone/libidn_0.5.19.bb
@@ -0,0 +1,20 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Implementation of the Stringprep, Punycode and IDNA specifications defined by the IETF Internationalized Domain Names (IDN) working group."
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS = "glibc"
+PR = "r0"
+
+inherit pkgconfig autotools
+
+SRC_URI = "http://josefsson.org/libidn/releases/${P}.tar.gz"
+
+EXTRA_OECONF = " --disable-tld"
+
+do_configure_prepend () {
+ autoreconf -f -i -s
+}
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libim-0.1/.mtn2git_empty b/packages/gpephone/libim-0.1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/libim-0.1/.mtn2git_empty
diff --git a/packages/gpephone/libim_0.2.bb b/packages/gpephone/libim_0.2.bb
new file mode 100644
index 0000000000..a802aface5
--- /dev/null
+++ b/packages/gpephone/libim_0.2.bb
@@ -0,0 +1,22 @@
+LICENSE = "LGPL"
+DESCRIPTION = "LiPS instant messenger library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 libgpg-error libgcrypt gnutls libidn iksemel gloox dbus-glib liblipsevent"
+PR = "r0"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_MIRROR}/${P}/lips_im-${PV}.tar.gz"
+
+EXTRA_OECONF = "--with-session-bus-services-dir=${datadir}/dbus-1/services"
+
+PARALLEL_MAKE = ""
+
+S = ${WORKDIR}/lips_im-${PV}
+
+FILES_${PN} += " ${datadir}/dbus-1"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/liblipsevent_0.1.bb b/packages/gpephone/liblipsevent_0.1.bb
new file mode 100644
index 0000000000..2618bf61c4
--- /dev/null
+++ b/packages/gpephone/liblipsevent_0.1.bb
@@ -0,0 +1,16 @@
+LICENSE = "LiPS"
+DESCRIPTION = "LiPS event model library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0"
+PR = "r0"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_MIRROR}/${P}/lips_event-${PV}.tar.gz"
+
+S = ${WORKDIR}/lips_event-${PV}
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libmsgenabler_1.0.bb b/packages/gpephone/libmsgenabler_1.0.bb
new file mode 100644
index 0000000000..0522507db0
--- /dev/null
+++ b/packages/gpephone/libmsgenabler_1.0.bb
@@ -0,0 +1,14 @@
+LICENSE = "LiPS"
+DESCRIPTION = "LiPS message backend library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 dbus-glib librecord sqlite3"
+PR = "r0"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpephone pkgconfig autotools
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/librecord2_0.1.bb b/packages/gpephone/librecord2_0.1.bb
new file mode 100644
index 0000000000..532cc267ff
--- /dev/null
+++ b/packages/gpephone/librecord2_0.1.bb
@@ -0,0 +1,15 @@
+LICENSE = "LiPS"
+DESCRIPTION = "LiPS database API."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 e2fsprogs-libs sqlite3"
+PR = "r0"
+
+GPE_TARBALL_SUFFIX = "bz2"
+inherit gpephone pkgconfig autotools
+
+LDFLAGS += " -L${STAGING_LIBDIR}"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/librecord_0.1.bb b/packages/gpephone/librecord_0.1.bb
new file mode 100644
index 0000000000..532cc267ff
--- /dev/null
+++ b/packages/gpephone/librecord_0.1.bb
@@ -0,0 +1,15 @@
+LICENSE = "LiPS"
+DESCRIPTION = "LiPS database API."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 e2fsprogs-libs sqlite3"
+PR = "r0"
+
+GPE_TARBALL_SUFFIX = "bz2"
+inherit gpephone pkgconfig autotools
+
+LDFLAGS += " -L${STAGING_LIBDIR}"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libsettings_svn.bb b/packages/gpephone/libsettings_svn.bb
new file mode 100644
index 0000000000..e436849d74
--- /dev/null
+++ b/packages/gpephone/libsettings_svn.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "G(PE)^2 settings API library"
+SECTION = "gpe/libs"
+PRIORITY = "required"
+LICENSE = "LiPS"
+DEPENDS = "glib-2.0 gconf-dbus"
+PV = "0.0+svn-${SRCDATE}"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+FILES_${PN} += " ${libdir}/*.so.*"
+FILES_${PN}-dbg += "${libdir}/.debug/*.so.*"
+FILES_${PN}-dev += "${includedir} ${libdir}/*.la ${libdir}/*.so"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libvocenabler_0.1.bb b/packages/gpephone/libvocenabler_0.1.bb
new file mode 100644
index 0000000000..1dfa5068d0
--- /dev/null
+++ b/packages/gpephone/libvocenabler_0.1.bb
@@ -0,0 +1,20 @@
+LICENSE = "LiPS"
+DESCRIPTION = "LiPS voice call library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 dbus-glib linphone"
+PR = "r0"
+
+GPE_TARBALL_SUFFIX = "gz"
+
+inherit gpephone pkgconfig autotools
+
+do_compile_prepend() {
+ for i in `find . -name "Makefile"` ; do
+ sed -i -e s:I/usr/include:I${STAGING_INCDIR}:g $i
+ done
+}
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/linphone-1.5.0/.mtn2git_empty b/packages/gpephone/linphone-1.5.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/linphone-1.5.0/.mtn2git_empty
diff --git a/packages/gpephone/linphone-1.5.0/linphone-1.5.0.patch b/packages/gpephone/linphone-1.5.0/linphone-1.5.0.patch
new file mode 100644
index 0000000000..c6d65e0238
--- /dev/null
+++ b/packages/gpephone/linphone-1.5.0/linphone-1.5.0.patch
@@ -0,0 +1,115730 @@
+diff -ur linphone-1.5.0/aclocal.m4 linphone-1.5.0-after/aclocal.m4
+--- linphone-1.5.0/aclocal.m4 2006-10-11 03:26:16.000000000 +0800
++++ linphone-1.5.0-after/aclocal.m4 2007-01-19 16:04:59.000000000 +0800
+@@ -1,7 +1,7 @@
+-# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
++# generated automatically by aclocal 1.9.2 -*- Autoconf -*-
+
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+-# 2005 Free Software Foundation, Inc.
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
++# Free Software Foundation, Inc.
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -11,30 +11,28 @@
+ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ # PARTICULAR PURPOSE.
+
++ll## intltool.m4 - Configure intltool for the target system. -*-Shell-script-*-
+
+-dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
+-# serial 35 IT_PROG_INTLTOOL
+-AC_DEFUN([IT_PROG_INTLTOOL],
+-[AC_PREREQ([2.50])dnl
+-
+-case "$am__api_version" in
+- 1.[01234])
+- AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool])
+- ;;
+- *)
+- ;;
+-esac
++dnl AC_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
++# serial 1 AC_PROG_INTLTOOL
++AC_DEFUN([AC_PROG_INTLTOOL],
++[
+
+ if test -n "$1"; then
+ AC_MSG_CHECKING(for intltool >= $1)
+
+- INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+- INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { print $ 2; }' ${ac_aux_dir}/intltool-update.in`
+- [INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($ 2, VERSION, "."); print VERSION[1] * 1000 + VERSION[2] * 100 + VERSION[3];}' ${ac_aux_dir}/intltool-update.in`
+- ]
+- AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
+- test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
+- AC_MSG_ERROR([Your intltool is too old. You need intltool $1 or later.])
++ INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ printf "%d", $[1] * 100 + $[2]; }'`
++ INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $[2]; }' < ${ac_aux_dir}/intltool-update.in`
++ changequote({{,}})
++ INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split(${{2}}, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < ${ac_aux_dir}/intltool-update.in`
++ changequote([,])
++
++ if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
++ AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
++ else
++ AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found. Your intltool is too old. You need intltool $1 or later.])
++ exit 1
++ fi
+ fi
+
+ INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+@@ -48,13 +46,11 @@
+ INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+- INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< [$]@'
+ INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+- INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+
+ AC_SUBST(INTLTOOL_DESKTOP_RULE)
+ AC_SUBST(INTLTOOL_DIRECTORY_RULE)
+@@ -69,16 +65,19 @@
+ AC_SUBST(INTLTOOL_XAM_RULE)
+ AC_SUBST(INTLTOOL_KBD_RULE)
+ AC_SUBST(INTLTOOL_XML_RULE)
+-AC_SUBST(INTLTOOL_XML_NOMERGE_RULE)
+ AC_SUBST(INTLTOOL_CAVES_RULE)
+ AC_SUBST(INTLTOOL_SCHEMAS_RULE)
+ AC_SUBST(INTLTOOL_THEME_RULE)
+-AC_SUBST(INTLTOOL_SERVICE_RULE)
+
+ # Use the tools built into the package, not the ones that are installed.
+-AC_SUBST(INTLTOOL_EXTRACT, '$(top_builddir)/intltool-extract')
+-AC_SUBST(INTLTOOL_MERGE, '$(top_builddir)/intltool-merge')
+-AC_SUBST(INTLTOOL_UPDATE, '$(top_builddir)/intltool-update')
++
++INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
++INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
++INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
++
++AC_SUBST(INTLTOOL_EXTRACT)
++AC_SUBST(INTLTOOL_MERGE)
++AC_SUBST(INTLTOOL_UPDATE)
+
+ AC_PATH_PROG(INTLTOOL_PERL, perl)
+ if test -z "$INTLTOOL_PERL"; then
+@@ -96,106 +95,67 @@
+ fi
+ fi
+
+-AC_PATH_PROG(INTLTOOL_ICONV, iconv, iconv)
+-AC_PATH_PROG(INTLTOOL_MSGFMT, msgfmt, msgfmt)
+-AC_PATH_PROG(INTLTOOL_MSGMERGE, msgmerge, msgmerge)
+-AC_PATH_PROG(INTLTOOL_XGETTEXT, xgettext, xgettext)
+-
+-# Substitute ALL_LINGUAS so we can use it in po/Makefile
+-AC_SUBST(ALL_LINGUAS)
+-
+-IT_PO_SUBDIR([po])
+-
+-dnl The following is very similar to
+-dnl
+-dnl AC_CONFIG_FILES([intltool-extract intltool-merge intltool-update])
+-dnl
+-dnl with the following slight differences:
+-dnl - the *.in files are in ac_aux_dir,
+-dnl - if the file haven't changed upon reconfigure, it's not touched,
+-dnl - the evaluation of the third parameter enables a hack which computes
+-dnl the actual value of $libdir,
+-dnl - the user sees "executing intltool commands", instead of
+-dnl "creating intltool-extract" and such.
+-dnl
+-dnl Nothing crucial here, and we could use AC_CONFIG_FILES, if there were
+-dnl a reason for it.
+-
+-AC_CONFIG_COMMANDS([intltool], [
++# Remove file type tags (using []) from po/POTFILES.
+
+-for file in intltool-extract intltool-merge intltool-update; do
+- sed -e "s|@INTLTOOL_EXTRACT@|`pwd`/intltool-extract|g" \
+- -e "s|@INTLTOOL_LIBDIR@|${INTLTOOL_LIBDIR}|g" \
+- -e "s|@INTLTOOL_ICONV@|${INTLTOOL_ICONV}|g" \
+- -e "s|@INTLTOOL_MSGFMT@|${INTLTOOL_MSGFMT}|g" \
+- -e "s|@INTLTOOL_MSGMERGE@|${INTLTOOL_MSGMERGE}|g" \
+- -e "s|@INTLTOOL_XGETTEXT@|${INTLTOOL_XGETTEXT}|g" \
+- -e "s|@INTLTOOL_PERL@|${INTLTOOL_PERL}|g" \
+- < ${ac_aux_dir}/${file}.in > ${file}.out
+- if cmp -s ${file} ${file}.out 2>/dev/null; then
+- rm -f ${file}.out
+- else
+- mv -f ${file}.out ${file}
+- fi
+- chmod ugo+x ${file}
+- chmod u+w ${file}
+-done
++ifdef([AC_DIVERSION_ICMDS],[
++ AC_DIVERT_PUSH(AC_DIVERSION_ICMDS)
++ changequote(,)
++ mv -f po/POTFILES po/POTFILES.tmp
++ sed -e '/\[encoding.*\]/d' -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
++ rm -f po/POTFILES.tmp
++ changequote([,])
++ AC_DIVERT_POP()
++],[
++ ifdef([AC_CONFIG_COMMANDS_PRE],[
++ AC_CONFIG_COMMANDS_PRE([
++ changequote(,)
++ mv -f po/POTFILES po/POTFILES.tmp
++ sed -e '/\[encoding.*\]/d' -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
++ rm -f po/POTFILES.tmp
++ changequote([,])
++ ])
++ ])
++])
+
+-],
+-[INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir='${ac_aux_dir}'
+-prefix="$prefix" exec_prefix="$exec_prefix" INTLTOOL_LIBDIR="$libdir"
+-INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' INTLTOOL_ICONV='${INTLTOOL_ICONV}'
+-INTLTOOL_MSGFMT='${INTLTOOL_MSGFMT}' INTLTOOL_MSGMERGE='${INTLTOOL_MSGMERGE}'
+-INTLTOOL_XGETTEXT='${INTLTOOL_XGETTEXT}'])
++# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
+
+-])
++AC_OUTPUT_COMMANDS([
+
++sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-extract.in > intltool-extract.out
++if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
++ rm -f intltool-extract.out
++else
++ mv -f intltool-extract.out intltool-extract
++fi
++chmod ugo+x intltool-extract
++chmod u+w intltool-extract
+
+-# IT_PO_SUBDIR(DIRNAME)
+-# ---------------------
+-# All po subdirs have to be declared with this macro; the subdir "po" is
+-# declared by IT_PROG_INTLTOOL.
+-#
+-AC_DEFUN([IT_PO_SUBDIR],
+-[AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS.
+-dnl
+-dnl The following CONFIG_COMMANDS should be exetuted at the very end
+-dnl of config.status.
+-AC_CONFIG_COMMANDS_PRE([
+- AC_CONFIG_COMMANDS([$1/stamp-it], [
+- rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp"
+- >"$1/stamp-it.tmp"
+- [sed '/^#/d
+- s/^[[].*] *//
+- /^[ ]*$/d
+- '"s|^| $ac_top_srcdir/|" \
+- "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES"
+- ]
+- if test ! -f "$1/Makefile"; then
+- AC_MSG_ERROR([$1/Makefile is not ready.])
+- fi
+- mv "$1/Makefile" "$1/Makefile.tmp"
+- [sed '/^POTFILES =/,/[^\\]$/ {
+- /^POTFILES =/!d
+- r $1/POTFILES
+- }
+- ' "$1/Makefile.tmp" >"$1/Makefile"]
+- rm -f "$1/Makefile.tmp"
+- mv "$1/stamp-it.tmp" "$1/stamp-it"
+- ])
+-])dnl
+-])
++sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" \
++ < ${ac_aux_dir}/intltool-merge.in > intltool-merge.out
++if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
++ rm -f intltool-merge.out
++else
++ mv -f intltool-merge.out intltool-merge
++fi
++chmod ugo+x intltool-merge
++chmod u+w intltool-merge
+
++sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-update.in > intltool-update.out
++if cmp -s intltool-update intltool-update.out 2>/dev/null; then
++ rm -f intltool-update.out
++else
++ mv -f intltool-update.out intltool-update
++fi
++chmod ugo+x intltool-update
++chmod u+w intltool-update
+
+-# deprecated macros
+-AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL])
+-# A hint is needed for aclocal from Automake <= 1.9.4:
+-# AC_DEFUN([AC_PROG_INTLTOOL], ...)
++], INTLTOOL_PERL=${INTLTOOL_PERL} ac_aux_dir=${ac_aux_dir})
+
++])
+
+ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+-# serial 48 Debian 1.5.22-4 AC_PROG_LIBTOOL
++# serial 47 AC_PROG_LIBTOOL
+
+
+ # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+@@ -305,7 +265,7 @@
+
+ # Sed substitution that helps us do robust quoting. It backslashifies
+ # metacharacters that are still active within double-quoted strings.
+-Xsed='sed -e 1s/^X//'
++Xsed='sed -e s/^X//'
+ [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+ # Same as above, but do not quote variable references.
+@@ -325,7 +285,7 @@
+ default_ofile=libtool
+ can_build_shared=yes
+
+-# All known linkers require a `.a' archive for static linking (except MSVC,
++# All known linkers require a `.a' archive for static linking (except M$VC,
+ # which needs '.lib').
+ libext=a
+ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -345,7 +305,6 @@
+ test -z "$AS" && AS=as
+ test -z "$CC" && CC=cc
+ test -z "$LTCC" && LTCC=$CC
+-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+ test -z "$DLLTOOL" && DLLTOOL=dlltool
+ test -z "$LD" && LD=ld
+ test -z "$LN_S" && LN_S="ln -s"
+@@ -365,17 +324,15 @@
+ if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
++ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
++ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+ fi
+
+-_LT_CC_BASENAME([$compiler])
+-
+ # Only perform the check for file, if the check method requires it
+ case $deplibs_check_method in
+ file_magic*)
+@@ -416,56 +373,11 @@
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+ ])# _LT_AC_SYS_COMPILER
+
+
+-# _LT_CC_BASENAME(CC)
+-# -------------------
+-# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+-AC_DEFUN([_LT_CC_BASENAME],
+-[for cc_temp in $1""; do
+- case $cc_temp in
+- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-])
+-
+-
+-# _LT_COMPILER_BOILERPLATE
+-# ------------------------
+-# Check for compiler boilerplate output or warnings with
+-# the simple compiler test code.
+-AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+-[ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-])# _LT_COMPILER_BOILERPLATE
+-
+-
+-# _LT_LINKER_BOILERPLATE
+-# ----------------------
+-# Check for linker boilerplate output or warnings with
+-# the simple link test code.
+-AC_DEFUN([_LT_LINKER_BOILERPLATE],
+-[ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
+-])# _LT_LINKER_BOILERPLATE
+-
+-
+ # _LT_AC_SYS_LIBPATH_AIX
+ # ----------------------
+ # Links a minimal program and checks the executable
+@@ -538,15 +450,15 @@
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+ if test -z "$ECHO"; then
+ if test "X${echo_test_string+set}" != Xset; then
+ # find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+- if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+- echo_test_string=`eval $cmd` &&
++ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
++ echo_test_string="`eval $cmd`" &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+@@ -715,7 +627,7 @@
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+- case `/usr/bin/file conftest.o` in
++ case "`/usr/bin/file conftest.o`" in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+@@ -766,22 +678,6 @@
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+-sparc*-*solaris*)
+- # Find out which ABI we are using.
+- echo 'int i;' > conftest.$ac_ext
+- if AC_TRY_EVAL(ac_compile); then
+- case `/usr/bin/file conftest.o` in
+- *64-bit*)
+- case $lt_cv_prog_gnu_ld in
+- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+- *) LD="${LD-ld} -64" ;;
+- esac
+- ;;
+- esac
+- fi
+- rm -rf conftest*
+- ;;
+-
+ AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+ [*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+@@ -813,7 +709,7 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+@@ -823,10 +719,8 @@
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ $2=yes
+ fi
+ fi
+@@ -852,16 +746,11 @@
+ LDFLAGS="$LDFLAGS $3"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
++ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- $2=yes
+- fi
+ else
+ $2=yes
+ fi
+@@ -920,55 +809,11 @@
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+- # This has been around since 386BSD, at least. Likely further.
+- if test -x /sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+- elif test -x /usr/sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+- else
+- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+- fi
+- # And add a safety zone
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+- ;;
+-
+- interix*)
+- # We know the value 262144 and hardcode it with a safety zone (like BSD)
+- lt_cv_sys_max_cmd_len=196608
+- ;;
+-
+- osf*)
+- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+- # nice to cause kernel panics so lets avoid the loop below.
+- # First set a reasonable default.
+- lt_cv_sys_max_cmd_len=16384
+- #
+- if test -x /sbin/sysconfig; then
+- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+- *1*) lt_cv_sys_max_cmd_len=-1 ;;
+- esac
+- fi
+- ;;
+- sco3.2v5*)
+- lt_cv_sys_max_cmd_len=102400
+- ;;
+- sysv5* | sco5v6* | sysv4.2uw2*)
+- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+- if test -n "$kargmax"; then
+- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+- else
+- lt_cv_sys_max_cmd_len=32768
+- fi
+- ;;
+- *)
++ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+- while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
++ while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+@@ -994,7 +839,7 @@
+
+
+ # _LT_AC_CHECK_DLFCN
+-# ------------------
++# --------------------
+ AC_DEFUN([_LT_AC_CHECK_DLFCN],
+ [AC_CHECK_HEADERS(dlfcn.h)dnl
+ ])# _LT_AC_CHECK_DLFCN
+@@ -1002,7 +847,7 @@
+
+ # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+ # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+-# ---------------------------------------------------------------------
++# ------------------------------------------------------------------
+ AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+ [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+ if test "$cross_compiling" = yes; then :
+@@ -1068,19 +913,17 @@
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+- else
+- puts (dlerror ());
+
+ exit (status);
+ }]
+ EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+- (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
++ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+- x$lt_dlunknown|x*) $3 ;;
++ x$lt_unknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+@@ -1092,7 +935,7 @@
+
+
+ # AC_LIBTOOL_DLOPEN_SELF
+-# ----------------------
++# -------------------
+ AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+ [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+ if test "x$enable_dlopen" != xyes; then
+@@ -1163,7 +1006,7 @@
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+@@ -1176,7 +1019,7 @@
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
++ LDFLAGS="$LDFLAGS $link_static_flag"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+@@ -1224,7 +1067,7 @@
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+@@ -1236,13 +1079,11 @@
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
++ if test ! -s out/conftest.err; then
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+- chmod u+w . 2>&AS_MESSAGE_LOG_FD
++ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+@@ -1306,8 +1147,8 @@
+ [AC_MSG_CHECKING([how to hardcode library paths into programs])
+ _LT_AC_TAGVAR(hardcode_action, $1)=
+ if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+- test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+- test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
++ test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \
++ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+@@ -1474,7 +1315,7 @@
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+-bsdi[[45]]*)
++bsdi4*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -1502,8 +1343,7 @@
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
++ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+@@ -1533,7 +1373,7 @@
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+@@ -1556,7 +1396,7 @@
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+@@ -1579,17 +1419,20 @@
+ dynamic_linker=no
+ ;;
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[[123]]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+@@ -1607,19 +1450,14 @@
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+- freebsd3.[[01]]* | freebsdelf3.[[01]]*)
++ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+- freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+- freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
++ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+ esac
+ ;;
+
+@@ -1639,7 +1477,7 @@
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+@@ -1679,18 +1517,6 @@
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+@@ -1734,7 +1560,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -1748,10 +1574,27 @@
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
++ if AC_TRY_EVAL(ac_compile); then
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
++
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
++ lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+@@ -1763,7 +1606,7 @@
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+-netbsdelf*-gnu)
++knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -1772,7 +1615,7 @@
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
++ dynamic_linker='GNU ld.so'
+ ;;
+
+ netbsd*)
+@@ -1812,13 +1655,8 @@
+
+ openbsd*)
+ version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
++ need_version=yes
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+@@ -1856,6 +1694,13 @@
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
+ solaris*)
+ version_type=linux
+ need_lib_prefix=no
+@@ -1881,7 +1726,7 @@
+ need_version=yes
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+@@ -1914,29 +1759,6 @@
+ fi
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
+- esac
+- fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
+-
+ uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -1950,11 +1772,6 @@
+ esac
+ AC_MSG_RESULT([$dynamic_linker])
+ test "$dynamic_linker" = no && can_build_shared=no
+-
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+-fi
+ ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+@@ -1979,9 +1796,6 @@
+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+ fi
+ fi
+- if test -z "$LTCFLAGS"; then
+- eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+- fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+@@ -2008,9 +1822,7 @@
+
+ case $tagname in
+ CXX)
+- if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+- (test "X$CXX" != "Xg++"))) ; then
++ if test -n "$CXX" && test "X$CXX" != "Xno"; then
+ AC_LIBTOOL_LANG_CXX_CONFIG
+ else
+ tagname=""
+@@ -2072,7 +1884,7 @@
+
+ # AC_LIBTOOL_WIN32_DLL
+ # --------------------
+-# declare package support for building win32 DLLs
++# declare package support for building win32 dll's
+ AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+ [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+ ])# AC_LIBTOOL_WIN32_DLL
+@@ -2110,7 +1922,7 @@
+
+ # AC_DISABLE_SHARED
+ # -----------------
+-# set the default shared flag to --disable-shared
++#- set the default shared flag to --disable-shared
+ AC_DEFUN([AC_DISABLE_SHARED],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ AC_ENABLE_SHARED(no)
+@@ -2246,7 +2058,7 @@
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
++ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+@@ -2356,7 +2168,7 @@
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+- # but apparently some variants of GNU ld only accept -v.
++ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+@@ -2388,7 +2200,7 @@
+ AC_DEFUN([AC_PROG_LD_GNU],
+ [AC_REQUIRE([AC_PROG_EGREP])dnl
+ AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
++[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+ case `$LD -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+@@ -2415,15 +2227,6 @@
+ *) reload_flag=" $reload_flag" ;;
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+-case $host_os in
+- darwin*)
+- if test "$GCC" = yes; then
+- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+- else
+- reload_cmds='$LD$reload_flag -o $output$reload_objs'
+- fi
+- ;;
+-esac
+ ])# AC_PROG_LD_RELOAD_FLAG
+
+
+@@ -2457,7 +2260,7 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-bsdi[[45]]*)
++bsdi4*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+@@ -2480,13 +2283,13 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-freebsd* | dragonfly*)
++freebsd* | kfreebsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+@@ -2502,7 +2305,7 @@
+
+ hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+@@ -2518,11 +2321,6 @@
+ esac
+ ;;
+
+-interix3*)
+- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+@@ -2534,11 +2332,20 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
++ case $host_cpu in
++ alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*)
++ lt_cv_deplibs_check_method=pass_all ;;
++ *)
++ # glibc up to 2.1.1 does not perform some relocations on ARM
++ # this will be overridden with pass_all, but let us keep it just in case
++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;;
++ esac
++ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-netbsd* | netbsdelf*-gnu)
++netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+@@ -2557,10 +2364,12 @@
+ ;;
+
+ openbsd*)
++ lt_cv_file_magic_cmd=/usr/bin/file
++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
+ else
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
++ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+ fi
+ ;;
+
+@@ -2568,11 +2377,15 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++sco3.2v5*)
++ lt_cv_deplibs_check_method=pass_all
++ ;;
++
+ solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+@@ -2593,13 +2406,10 @@
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+- pc)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+ esac
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
++sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+@@ -2619,43 +2429,36 @@
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+ else
+- lt_nm_to_check="${ac_tool_prefix}nm"
+- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+- lt_nm_to_check="$lt_nm_to_check nm"
+- fi
+- for lt_tmp_nm in $lt_nm_to_check; do
+- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+- IFS="$lt_save_ifs"
+- test -z "$ac_dir" && ac_dir=.
+- tmp_nm="$ac_dir/$lt_tmp_nm"
+- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+- # Check to see if the nm accepts a BSD-compat flag.
+- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+- # nm: unknown option "B" ignored
+- # Tru64's nm complains that /dev/null is an invalid object file
+- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+- */dev/null* | *'Invalid file or object type'*)
+- lt_cv_path_NM="$tmp_nm -B"
++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
++ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
++ IFS="$lt_save_ifs"
++ test -z "$ac_dir" && ac_dir=.
++ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
++ # Check to see if the nm accepts a BSD-compat flag.
++ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
++ # nm: unknown option "B" ignored
++ # Tru64's nm complains that /dev/null is an invalid object file
++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
++ */dev/null* | *'Invalid file or object type'*)
++ lt_cv_path_NM="$tmp_nm -B"
++ break
++ ;;
++ *)
++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
++ */dev/null*)
++ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+- */dev/null*)
+- lt_cv_path_NM="$tmp_nm -p"
+- break
+- ;;
+- *)
+- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+- continue # so that we can try to find one that supports BSD flags
+- ;;
+- esac
++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
++ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+- fi
+- done
+- IFS="$lt_save_ifs"
++ esac
++ fi
+ done
++ IFS="$lt_save_ifs"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+ fi])
+ NM="$lt_cv_path_NM"
+@@ -2687,13 +2490,13 @@
+ # -----------------------------------
+ # sets LIBLTDL to the link flags for the libltdl convenience library and
+ # LTDLINCL to the include flags for the libltdl header and adds
+-# --enable-ltdl-convenience to the configure arguments. Note that
+-# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+-# it is assumed to be `libltdl'. LIBLTDL will be prefixed with
+-# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
+-# (note the single quotes!). If your package is not flat and you're not
+-# using automake, define top_builddir and top_srcdir appropriately in
+-# the Makefiles.
++# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL
++# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
++# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will
++# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
++# '${top_srcdir}/' (note the single quotes!). If your package is not
++# flat and you're not using automake, define top_builddir and
++# top_srcdir appropriately in the Makefiles.
+ AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ case $enable_ltdl_convenience in
+@@ -2712,13 +2515,13 @@
+ # -----------------------------------
+ # sets LIBLTDL to the link flags for the libltdl installable library and
+ # LTDLINCL to the include flags for the libltdl header and adds
+-# --enable-ltdl-install to the configure arguments. Note that
+-# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+-# and an installed libltdl is not found, it is assumed to be `libltdl'.
+-# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
+-# '${top_srcdir}/' (note the single quotes!). If your package is not
+-# flat and you're not using automake, define top_builddir and top_srcdir
+-# appropriately in the Makefiles.
++# --enable-ltdl-install to the configure arguments. Note that LIBLTDL
++# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
++# DIRECTORY is not provided and an installed libltdl is not found, it is
++# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/'
++# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
++# quotes!). If your package is not flat and you're not using automake,
++# define top_builddir and top_srcdir appropriately in the Makefiles.
+ # In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+ AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+@@ -2756,21 +2559,10 @@
+ # ---------------
+ AC_DEFUN([_LT_AC_LANG_CXX],
+ [AC_REQUIRE([AC_PROG_CXX])
+-AC_REQUIRE([_LT_AC_PROG_CXXCPP])
++AC_REQUIRE([AC_PROG_CXXCPP])
+ _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+ ])# _LT_AC_LANG_CXX
+
+-# _LT_AC_PROG_CXXCPP
+-# ------------------
+-AC_DEFUN([_LT_AC_PROG_CXXCPP],
+-[
+-AC_REQUIRE([AC_PROG_CXX])
+-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+- (test "X$CXX" != "Xg++"))) ; then
+- AC_PROG_CXXCPP
+-fi
+-])# _LT_AC_PROG_CXXCPP
+
+ # AC_LIBTOOL_F77
+ # --------------
+@@ -2810,7 +2602,7 @@
+
+
+ # AC_LIBTOOL_RC
+-# -------------
++# --------------
+ # enable support for Windows resource files
+ AC_DEFUN([AC_LIBTOOL_RC],
+ [AC_REQUIRE([LT_AC_PROG_RC])
+@@ -2843,9 +2635,36 @@
+
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
++#
++# Check for any special shared library compilation flags.
++#
++_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
++if test "$GCC" = no; then
++ case $host_os in
++ sco3.2v5*)
++ _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
++ ;;
++ esac
++fi
++if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
++ AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
++ if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then :
++ else
++ AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
++ _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
++ fi
++fi
++
++
++#
++# Check to make sure the static flag actually works.
++#
++AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
++ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
++ $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
++ [],
++ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
++
+
+ AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+ AC_LIBTOOL_PROG_COMPILER_PIC($1)
+@@ -2855,9 +2674,9 @@
+ AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+ AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+ AC_LIBTOOL_SYS_LIB_STRIP
+-AC_LIBTOOL_DLOPEN_SELF
++AC_LIBTOOL_DLOPEN_SELF($1)
+
+-# Report which library types will actually be built
++# Report which librarie types wil actually be built
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+@@ -2866,7 +2685,7 @@
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+-case $host_os in
++case "$host_os" in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+@@ -2879,6 +2698,43 @@
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
++ ;;
++ darwin* | rhapsody*)
++ if test "$GCC" = yes; then
++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ case "$host_os" in
++ rhapsody* | darwin1.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ output_verbose_link_cmd='echo'
++ _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(hardcode_direct, $1)=no
++ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
++ else
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+@@ -2904,7 +2760,7 @@
+ AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+ [AC_LANG_PUSH(C++)
+ AC_REQUIRE([AC_PROG_CXX])
+-AC_REQUIRE([_LT_AC_PROG_CXXCPP])
++AC_REQUIRE([AC_PROG_CXXCPP])
+
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+@@ -2916,7 +2772,6 @@
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+-_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+ _LT_AC_TAGVAR(module_cmds, $1)=
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+@@ -2934,7 +2789,7 @@
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+ # Source file extension for C++ test sources.
+-ac_ext=cpp
++ac_ext=cc
+
+ # Object file extension for compiled C++ test sources.
+ objext=o
+@@ -2944,15 +2799,11 @@
+ lt_simple_compile_test_code="int some_variable = 0;\n"
+
+ # Code to be used in simple link tests
+-lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
++lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_LD=$LD
+@@ -2963,18 +2814,18 @@
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+- $as_unset lt_cv_prog_gnu_ld
++ unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+- $as_unset lt_cv_path_LD
++ unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ compiler=$CC
+ _LT_AC_TAGVAR(compiler, $1)=$CC
+-_LT_CC_BASENAME([$compiler])
++cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+ # We don't want -fno-exception wen compiling C++ code, so set the
+ # no_builtin_flag separately
+@@ -3063,7 +2914,6 @@
+ ;;
+ esac
+ done
+- ;;
+ esac
+
+ exp_sym_flag='-bexport'
+@@ -3082,7 +2932,7 @@
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes; then
+- case $host_os in aix4.[[012]]|aix4.[[012]].*)
++ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+@@ -3101,12 +2951,8 @@
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+- ;;
+ esac
+ shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+@@ -3133,12 +2979,12 @@
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+@@ -3147,26 +2993,16 @@
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+-
+- beos*)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- else
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+-
+ chorus*)
+ case $cc_basename in
+ *)
+@@ -3185,7 +3021,7 @@
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -3194,81 +3030,70 @@
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+- darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[[012]])
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[[012]])
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
+- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_AC_TAGVAR(hardcode_direct, $1)=no
+- _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+- if test "$GXX" = yes ; then
+- lt_int_apple_cc_single_mod=no
+- output_verbose_link_cmd='echo'
+- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+- lt_int_apple_cc_single_mod=yes
+- fi
+- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- else
+- _LT_AC_TAGVAR(archive_cmds, $1)='$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'
+- fi
+- _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 lds
+- 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}'
+- 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}'
+- 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}'
++ darwin* | rhapsody*)
++ if test "$GXX" = yes; then
++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ case "$host_os" in
++ rhapsody* | darwin1.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+ else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- _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 lds
+- _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(ld_shlibs, $1)=no
+- ;;
+- esac
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
++ ;;
++ esac
+ fi
+- ;;
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -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'
++ fi
++ _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $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}'
++ else
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ 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(hardcode_direct, $1)=no
++ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
++ else
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ fi
++ ;;
+
+ dgux*)
+ case $cc_basename in
+- ec++*)
++ ec++)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- ghcx*)
++ ghcx)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+@@ -3279,14 +3104,14 @@
+ ;;
+ esac
+ ;;
+- freebsd[[12]]*)
++ freebsd[12]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ freebsd-elf*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+@@ -3303,11 +3128,11 @@
+ # location of the library.
+
+ case $cc_basename in
+- CC*)
++ CC)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- aCC*)
++ aCC)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+@@ -3317,7 +3142,7 @@
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+@@ -3331,23 +3156,34 @@
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
++ ;;
++ ia64*)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ ;;
+ *)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
++ ia64*)
++ _LT_AC_TAGVAR(hardcode_direct, $1)=no
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
++ # but as the default
++ # location of the library.
++ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+@@ -3357,17 +3193,14 @@
+ esac
+
+ case $cc_basename in
+- CC*)
++ CC)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- aCC*)
+- case $host_cpu in
+- hppa*64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ aCC)
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+@@ -3386,12 +3219,9 @@
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+- case $host_cpu in
+- hppa*64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ case "$host_cpu" in
++ ia64*|hppa*64*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+@@ -3405,25 +3235,11 @@
+ ;;
+ esac
+ ;;
+- interix3*)
+- _LT_AC_TAGVAR(hardcode_direct, $1)=no
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+ irix5* | irix6*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # SGI C++
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+@@ -3434,7 +3250,7 @@
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+@@ -3445,9 +3261,9 @@
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+- linux* | k*bsd*-gnu)
++ linux*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -3472,41 +3288,17 @@
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+- icpc*)
++ icpc)
+ # Intel C++
+ with_gnu_ld=yes
+- # version 8.0 and above of icpc choke on multiply defined symbols
+- # if we add $predep_objects and $postdep_objects, however 7.1 and
+- # earlier do not add the objects themselves.
+- case `$CC -V 2>&1` in
+- *"Version 7."*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- *) # Version 8.0 or newer
+- tmp_idyn=
+- case $host_cpu in
+- ia64*) tmp_idyn=' -i_dynamic';;
+- esac
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+- pgCC*)
+- # Portland Group C++ compiler
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+-
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- ;;
+- cxx*)
++ cxx)
+ # Compaq C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+@@ -3537,7 +3329,7 @@
+ ;;
+ mvs*)
+ case $cc_basename in
+- cxx*)
++ cxx)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+@@ -3547,7 +3339,7 @@
+ ;;
+ esac
+ ;;
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+@@ -3558,25 +3350,9 @@
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+- openbsd2*)
+- # C++ shared libraries are fairly broken
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- openbsd*)
+- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- fi
+- output_verbose_link_cmd='echo'
+- ;;
+ osf3*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -3592,14 +3368,14 @@
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- cxx*)
++ cxx)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -3617,7 +3393,7 @@
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -3636,7 +3412,7 @@
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -3651,17 +3427,17 @@
+ # the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- cxx*)
++ cxx)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
++ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
+ $rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+@@ -3680,7 +3456,7 @@
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -3701,14 +3477,27 @@
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
++ sco*)
++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ case $cc_basename in
++ CC)
++ # FIXME: insert proper C++ library support
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ ;;
++ *)
++ # FIXME: insert proper C++ library support
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ ;;
++ esac
++ ;;
+ sunos4*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- lcc*)
++ lcc)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+@@ -3721,33 +3510,36 @@
+ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+- _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
++ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
++ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+- # linker. We must also pass each convience library through
+- # to the system linker between allextract/defaultextract.
+- # The C++ compiler will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl.
++ # linker.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+- output_verbose_link_cmd='echo'
++ # Commands to make compiler produce verbose output that lists
++ # what "hidden" libraries, object files and flags are used when
++ # linking a shared library.
++ #
++ # There doesn't appear to be a way to prevent this compiler from
++ # explicitly linking system object files so we need to strip them
++ # from the output so that they don't get included in the library
++ # dependencies.
++ output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+@@ -3755,7 +3547,7 @@
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+- gcx*)
++ gcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+@@ -3793,63 +3585,12 @@
+ ;;
+ esac
+ ;;
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- ;;
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- # For security reasons, it is highly recommended that you always
+- # use absolute paths for naming shared libraries, and exclude the
+- # DT_RUNPATH tag from executables and libraries. But doing so
+- # requires that you compile everything twice, which is a pain.
+- # So that behaviour is only enabled if SCOABSPATH is set to a
+- # non-empty value in the environment. Most likely only useful for
+- # creating official distributions of packages.
+- # This is a hack until libtool officially supports absolute path
+- # names for shared libraries.
+- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+ ;;
+ tandem*)
+ case $cc_basename in
+- NCC*)
++ NCC)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+@@ -3882,6 +3623,8 @@
+ AC_LIBTOOL_PROG_LD_SHLIBS($1)
+ AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+ AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
++AC_LIBTOOL_SYS_LIB_STRIP
++AC_LIBTOOL_DLOPEN_SELF($1)
+
+ AC_LIBTOOL_CONFIG($1)
+
+@@ -3899,7 +3642,7 @@
+ ])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+ # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+-# ------------------------------------
++# ------------------------
+ # Figure out "hidden" library dependencies from verbose
+ # compiler output when linking a shared library.
+ # Parse the compiler output and extract the necessary
+@@ -3953,7 +3696,7 @@
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+- output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
++ output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+@@ -4029,37 +3772,13 @@
+
+ $rm -f confest.$objext
+
+-# PORTME: override above test on systems where it is broken
+-ifelse([$1],[CXX],
+-[case $host_os in
+-interix3*)
+- # Interix 3.5 installs completely hosed .la files for C++, so rather than
+- # hack all around it, let's just trust "g++" to DTRT.
+- _LT_AC_TAGVAR(predep_objects,$1)=
+- _LT_AC_TAGVAR(postdep_objects,$1)=
+- _LT_AC_TAGVAR(postdeps,$1)=
+- ;;
+-
+-solaris*)
+- case $cc_basename in
+- CC*)
+- # Adding this requires a known-good setup of shared libraries for
+- # Sun compiler versions before 5.6, else PIC objects from an old
+- # archive will be linked into the output, leading to subtle bugs.
+- _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+- ;;
+- esac
+- ;;
+-esac
+-])
+-
+ case " $_LT_AC_TAGVAR(postdeps, $1) " in
+ *" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+ esac
+ ])# AC_LIBTOOL_POSTDEP_PREDEP
+
+ # AC_LIBTOOL_LANG_F77_CONFIG
+-# --------------------------
++# ------------------------
+ # Ensure that the configuration vars for the C compiler are
+ # suitably defined. Those variables are subsequently used by
+ # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+@@ -4103,16 +3822,12 @@
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ CC=${F77-"f77"}
+ compiler=$CC
+ _LT_AC_TAGVAR(compiler, $1)=$CC
+-_LT_CC_BASENAME([$compiler])
++cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+@@ -4122,7 +3837,7 @@
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+-case $host_os in
++case "$host_os" in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+@@ -4131,9 +3846,7 @@
+ fi
+ ;;
+ aix4* | aix5*)
+- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+- test "$enable_shared" = yes && enable_static=no
+- fi
++ test "$enable_shared" = yes && enable_static=no
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+@@ -4143,6 +3856,8 @@
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
++test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
++
+ _LT_AC_TAGVAR(GCC, $1)="$G77"
+ _LT_AC_TAGVAR(LD, $1)="$LD"
+
+@@ -4152,6 +3867,8 @@
+ AC_LIBTOOL_PROG_LD_SHLIBS($1)
+ AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+ AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
++AC_LIBTOOL_SYS_LIB_STRIP
++
+
+ AC_LIBTOOL_CONFIG($1)
+
+@@ -4180,27 +3897,20 @@
+ lt_simple_compile_test_code="class foo {}\n"
+
+ # Code to be used in simple link tests
+-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
++lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ CC=${GCJ-"gcj"}
+ compiler=$CC
+ _LT_AC_TAGVAR(compiler, $1)=$CC
+-_LT_CC_BASENAME([$compiler])
+
+ # GCJ did not exist at the time GCC didn't implicitly link libc in.
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+-_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+-
+ AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+ AC_LIBTOOL_PROG_COMPILER_PIC($1)
+ AC_LIBTOOL_PROG_CC_C_O($1)
+@@ -4208,6 +3918,8 @@
+ AC_LIBTOOL_PROG_LD_SHLIBS($1)
+ AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+ AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
++AC_LIBTOOL_SYS_LIB_STRIP
++AC_LIBTOOL_DLOPEN_SELF($1)
+
+ AC_LIBTOOL_CONFIG($1)
+
+@@ -4217,7 +3929,7 @@
+
+
+ # AC_LIBTOOL_LANG_RC_CONFIG
+-# -------------------------
++# --------------------------
+ # Ensure that the configuration vars for the Windows resource compiler are
+ # suitably defined. Those variables are subsequently used by
+ # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+@@ -4241,16 +3953,11 @@
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ CC=${RC-"windres"}
+ compiler=$CC
+ _LT_AC_TAGVAR(compiler, $1)=$CC
+-_LT_CC_BASENAME([$compiler])
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+ AC_LIBTOOL_CONFIG($1)
+@@ -4280,7 +3987,7 @@
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+@@ -4386,7 +4093,7 @@
+ #
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -4397,11 +4104,11 @@
+ SED=$lt_SED
+
+ # Sed that helps us avoid accidentally triggering echo(1) options like -n.
+-Xsed="$SED -e 1s/^X//"
++Xsed="$SED -e s/^X//"
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+ # The names of the tagged configurations supported by this script.
+ available_tags=
+@@ -4432,12 +4139,6 @@
+ # The host system.
+ host_alias=$host_alias
+ host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+
+ # An echo program that does not interpret backslashes.
+ echo=$lt_echo
+@@ -4449,9 +4150,6 @@
+ # A C compiler.
+ LTCC=$lt_LTCC
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+ # A language-specific compiler.
+ CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+@@ -4517,7 +4215,7 @@
+ # Does compiler simultaneously support -c and -o options?
+ compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+-# Must we lock files when doing compilation?
++# Must we lock files when doing compilation ?
+ need_locks=$lt_need_locks
+
+ # Do we need the lib prefix for modules?
+@@ -4791,6 +4489,9 @@
+ # Regexp to match symbols that can be accessed directly from C.
+ sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
++# Transform the above into a raw symbol and a C symbol.
++symxfrm='\1 \2\3 \3'
++
+ # Transform an extracted symbol line into a proper C declaration
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+@@ -4812,31 +4513,15 @@
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+-linux* | k*bsd*-gnu)
+- if test "$host_cpu" = ia64; then
+- symcode='[[ABCDGIRSTW]]'
+- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+- fi
+- ;;
+ irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+ osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+-solaris*)
++solaris* | sysv5*)
+ symcode='[[BDRT]]'
+ ;;
+-sco3.2v5*)
+- symcode='[[DT]]'
+- ;;
+-sysv4.2uw2*)
+- symcode='[[DT]]'
+- ;;
+-sysv5* | sco5v6* | unixware* | OpenUNIX*)
+- symcode='[[ABDT]]'
+- ;;
+ sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+@@ -4859,11 +4544,8 @@
+ # Try without a prefix undercore, then with it.
+ for ac_symprfx in "" "_"; do
+
+- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+- symxfrm="\\1 $ac_symprfx\\2 \\2"
+-
+ # Write the raw and C identifiers.
+- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -5019,10 +4701,6 @@
+ # DJGPP does not support shared libraries at all
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+@@ -5031,7 +4709,7 @@
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ ;;
+ *)
+@@ -5056,28 +4734,18 @@
+ ;;
+ chorus*)
+ case $cc_basename in
+- cxch68*)
++ cxch68)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- ;;
+- esac
+- ;;
+ dgux*)
+ case $cc_basename in
+- ec++*)
++ ec++)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+- ghcx*)
++ ghcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+@@ -5085,22 +4753,22 @@
+ ;;
+ esac
+ ;;
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+- CC*)
++ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+- aCC*)
++ aCC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+- case $host_cpu in
++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -5113,13 +4781,9 @@
+ ;;
+ esac
+ ;;
+- interix*)
+- # This is c89, which is MS Visual C++ (no shared libs)
+- # Anyone wants to do a port?
+- ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+- CC*)
++ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+@@ -5128,26 +4792,20 @@
+ ;;
+ esac
+ ;;
+- linux* | k*bsd*-gnu)
++ linux*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # KAI C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+- icpc* | ecpc*)
++ icpc)
+ # Intel C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+- pgCC*)
+- # Portland Group C++ compiler.
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+- cxx*)
++ cxx)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+@@ -5164,25 +4822,25 @@
+ ;;
+ mvs*)
+ case $cc_basename in
+- cxx*)
++ cxx)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+- cxx*)
++ cxx)
+ # Digital/Compaq C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+@@ -5196,15 +4854,24 @@
+ ;;
+ psos*)
+ ;;
++ sco*)
++ case $cc_basename in
++ CC)
++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
++ ;;
++ *)
++ ;;
++ esac
++ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+- gcx*)
++ gcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+@@ -5214,12 +4881,12 @@
+ ;;
+ sunos4*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.x
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+- lcc*)
++ lcc)
+ # Lucid
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+@@ -5229,7 +4896,7 @@
+ ;;
+ tandem*)
+ case $cc_basename in
+- NCC*)
++ NCC)
+ # NonStop-UX NCC 3.20
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+@@ -5237,14 +4904,7 @@
+ ;;
+ esac
+ ;;
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- case $cc_basename in
+- CC*)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+- esac
++ unixware*)
+ ;;
+ vxworks*)
+ ;;
+@@ -5291,11 +4951,6 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+-
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+@@ -5312,7 +4967,7 @@
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -5338,16 +4993,6 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- ;;
+- esac
+- ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+@@ -5359,7 +5004,7 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -5382,20 +5027,13 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+- linux* | k*bsd*-gnu)
+- case $cc_basename in
++ linux*)
++ case $CC in
+ icc* | ecc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+- pgcc* | pgf77* | pgf90* | pgf95*)
+- # Portland Group compilers (*not* the Pentium gcc compiler,
+- # which looks to be a dead project)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+ ccc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+@@ -5410,15 +5048,15 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
++ sco3.2v5*)
++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
++ ;;
++
+ solaris*)
++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- case $cc_basename in
+- f77* | f90* | f95*)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+- *)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+- esac
+ ;;
+
+ sunos4*)
+@@ -5427,7 +5065,7 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+- sysv4 | sysv4.2uw2* | sysv4.3*)
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+@@ -5440,17 +5078,6 @@
+ fi
+ ;;
+
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+-
+- unicos*)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+- ;;
+-
+ uts4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+@@ -5478,7 +5105,7 @@
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+ fi
+-case $host_os in
++case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+@@ -5487,16 +5114,6 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+ ;;
+ esac
+-
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
+-AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+- _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+- $lt_tmp_static_flag,
+- [],
+- [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+ ])
+
+
+@@ -5521,10 +5138,7 @@
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
+- linux* | k*bsd*-gnu)
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=no
++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+@@ -5567,8 +5181,7 @@
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+- # Just being paranoid about ensuring that cc_basename is set.
+- _LT_CC_BASENAME([$compiler])
++
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+@@ -5578,10 +5191,6 @@
+ with_gnu_ld=no
+ fi
+ ;;
+- interix*)
+- # we just hope/assume this is gcc and not c89 (= MSVC++)
+- with_gnu_ld=yes
+- ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+@@ -5592,27 +5201,6 @@
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+- # Set some defaults for GNU ld with shared library support. These
+- # are reset later if shared libraries are not supported. Putting them
+- # here allows them to be overridden if necessary.
+- runpath_var=LD_RUN_PATH
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+- fi
+- supports_anon_versioning=no
+- case `$LD -v 2>/dev/null` in
+- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+- *\ 2.11.*) ;; # other 2.11 versions
+- *) supports_anon_versioning=yes ;;
+- esac
+-
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+@@ -5663,10 +5251,10 @@
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -5675,60 +5263,13 @@
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+-
+- interix3*)
+- _LT_AC_TAGVAR(hardcode_direct, $1)=no
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+-
+- linux* | k*bsd*-gnu)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- tmp_addflag=
+- case $cc_basename,$host_cpu in
+- pgcc*) # Portland Group C compiler
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag'
+- ;;
+- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag -Mnomain' ;;
+- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+- tmp_addflag=' -i_dynamic' ;;
+- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+- tmp_addflag=' -i_dynamic -nofor_main' ;;
+- ifc* | ifort*) # Intel Fortran compiler
+- tmp_addflag=' -nofor_main' ;;
+- esac
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+-
+- if test $supports_anon_versioning = yes; then
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- $echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+- fi
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=no
++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ ld_shlibs=no
+ fi
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+@@ -5738,7 +5279,7 @@
+ fi
+ ;;
+
+- solaris*)
++ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+@@ -5759,33 +5300,6 @@
+ fi
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+- case `$LD -v 2>&1` in
+- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- cat <<_LT_EOF 1>&2
+-
+-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+-*** reliably create shared libraries on SCO systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
+-
+-_LT_EOF
+- ;;
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+- else
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+- esac
+- ;;
+-
+ sunos4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+@@ -5793,6 +5307,31 @@
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
++ linux*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds"
++ supports_anon_versioning=no
++ case `$LD -v 2>/dev/null` in
++ *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
++ *\ 2.11.*) ;; # other 2.11 versions
++ *) supports_anon_versioning=yes ;;
++ esac
++ if test $supports_anon_versioning = yes; then
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds"
++ fi
++ else
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ fi
++ ;;
++
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+@@ -5803,11 +5342,16 @@
+ ;;
+ esac
+
+- if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+- runpath_var=
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
++ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then
++ runpath_var=LD_RUN_PATH
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
++ # ancient GNU ld didn't support --whole-archive et. al.
++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
++ else
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
++ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+@@ -5819,7 +5363,7 @@
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
++ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+@@ -5853,7 +5397,6 @@
+ break
+ fi
+ done
+- ;;
+ esac
+
+ exp_sym_flag='-bexport'
+@@ -5872,7 +5415,7 @@
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GCC" = yes; then
+- case $host_os in aix4.[[012]]|aix4.[[012]].*)
++ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+@@ -5891,12 +5434,8 @@
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+- ;;
+ esac
+ shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+@@ -5904,11 +5443,11 @@
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+- if test "$aix_use_runtimelinking" = yes; then
++ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+- fi
++ fi
+ fi
+ fi
+
+@@ -5922,12 +5461,12 @@
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+@@ -5936,11 +5475,13 @@
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+@@ -5953,7 +5494,7 @@
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+- bsdi[[45]]*)
++ bsdi4*)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+@@ -5974,57 +5515,57 @@
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+- _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
++ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[[012]])
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[[012]])
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
++ if test "$GXX" = yes ; then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_AC_TAGVAR(hardcode_direct, $1)=no
+- _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+- if test "$GCC" = yes ; then
+- output_verbose_link_cmd='echo'
+- _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 lds
+- _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}'
+- else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- _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 lds
+- _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(ld_shlibs, $1)=no
+- ;;
++ case "$host_os" in
++ rhapsody* | darwin1.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
+ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -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'
++ fi
++ _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $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}'
++ else
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ 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(hardcode_direct, $1)=no
++ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
++ else
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+@@ -6058,7 +5599,7 @@
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+@@ -6081,62 +5622,47 @@
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+- hpux10*)
++ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- if test "$with_gnu_ld" = no; then
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+-
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+- fi
+- ;;
+-
+- hpux11*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- case $host_cpu in
+- hppa*64*)
++ case "$host_cpu" in
++ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+- ia64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+- case $host_cpu in
+- hppa*64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
++ ia64*)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
++ _LT_AC_TAGVAR(hardcode_direct, $1)=no
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
++
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
++ ;;
+ *)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+@@ -6160,7 +5686,7 @@
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+@@ -6184,7 +5710,6 @@
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+@@ -6230,7 +5755,7 @@
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+@@ -6238,15 +5763,21 @@
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
++ sco3.2v5*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ;;
++
+ solaris*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ if test "$GCC" = yes; then
+- wlarc='${wl}'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+- wlarc=''
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+@@ -6255,18 +5786,8 @@
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+- *)
+- # The compiler driver will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl, iff we do not link with $LD.
+- # Luckily, gcc supports the same syntax we need for Sun Studio.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- case $wlarc in
+- '')
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+- *)
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+- esac ;;
++ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+@@ -6323,45 +5844,36 @@
+ fi
+ ;;
+
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ sysv4.2uw2*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- runpath_var='LD_RUN_PATH'
++ hardcode_runpath_var=yes
++ runpath_var=LD_RUN_PATH
++ ;;
+
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
++ runpath_var='LD_RUN_PATH'
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ sysv5*)
++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
++ # $CC -shared without GNU ld will not create a library from C++
++ # object files and a static libstdc++, better avoid it by now
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+-
+- if test "$GCC" = yes; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- fi
+ ;;
+
+ uts4*)
+@@ -6379,6 +5891,11 @@
+ AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+ test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
++
+ #
+ # Do we need to explicitly link libc?
+ #
+@@ -6406,7 +5923,6 @@
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+- pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+@@ -6532,7 +6048,7 @@
+ # Add /usr/xpg4/bin/sed as it is typically found on Solaris
+ # along with /bin/sed that truncates output.
+ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+- test ! -f $lt_ac_sed && continue
++ test ! -f $lt_ac_sed && break
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+@@ -6557,174 +6073,86 @@
+ fi
+ done
+ done
+-])
+ SED=$lt_cv_path_SED
++])
+ AC_MSG_RESULT([$SED])
+ ])
+
+-# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+-#
+-# Copyright © 2004 Scott James Remnant <scott@netsplit.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.
+-#
+-# As a special exception to the GNU General Public License, if you
+-# distribute this file as part of a program that contains a
+-# configuration script generated by Autoconf, you may include it under
+-# the same distribution terms that you use for the rest of that program.
+-
+-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+-# ----------------------------------
+-AC_DEFUN([PKG_PROG_PKG_CONFIG],
+-[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+-m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+- AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+-fi
+-if test -n "$PKG_CONFIG"; then
+- _pkg_min_version=m4_default([$1], [0.9.0])
+- AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+- if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+- AC_MSG_RESULT([yes])
+- else
+- AC_MSG_RESULT([no])
+- PKG_CONFIG=""
+- fi
+-
+-fi[]dnl
+-])# PKG_PROG_PKG_CONFIG
+-
+-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+-#
+-# Check to see whether a particular set of modules exists. Similar
+-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+-#
+-#
+-# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+-# this or PKG_CHECK_MODULES is called, or make sure to call
+-# PKG_CHECK_EXISTS manually
+-# --------------------------------------------------------------
+-AC_DEFUN([PKG_CHECK_EXISTS],
+-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+-if test -n "$PKG_CONFIG" && \
+- AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+- m4_ifval([$2], [$2], [:])
+-m4_ifvaln([$3], [else
+- $3])dnl
+-fi])
+-
+-
+-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+-# ---------------------------------------------
+-m4_define([_PKG_CONFIG],
+-[if test -n "$PKG_CONFIG"; then
+- if test -n "$$1"; then
+- pkg_cv_[]$1="$$1"
+- else
+- PKG_CHECK_EXISTS([$3],
+- [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+- [pkg_failed=yes])
+- fi
+-else
+- pkg_failed=untried
+-fi[]dnl
+-])# _PKG_CONFIG
+-
+-# _PKG_SHORT_ERRORS_SUPPORTED
+-# -----------------------------
+-AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
+-else
+- _pkg_short_errors_supported=no
+-fi[]dnl
+-])# _PKG_SHORT_ERRORS_SUPPORTED
+-
+
+-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+-# [ACTION-IF-NOT-FOUND])
+-#
+-#
+-# Note that if there is a possibility the first call to
+-# PKG_CHECK_MODULES might not happen, you should be sure to include an
+-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+-#
+-#
+-# --------------------------------------------------------------
+-AC_DEFUN([PKG_CHECK_MODULES],
+-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
++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
+
+-pkg_failed=no
+-AC_MSG_CHECKING([for $1])
++ 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
+
+-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+-_PKG_CONFIG([$1][_LIBS], [libs], [$2])
++ 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
+
+-m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+-and $1[]_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details.])
+-
+-if test $pkg_failed = yes; then
+- _PKG_SHORT_ERRORS_SUPPORTED
+- if test $_pkg_short_errors_supported = yes; then
+- $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+- else
+- $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+- fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
++ 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
++])
+
+- ifelse([$4], , [AC_MSG_ERROR(dnl
+-[Package requirements ($2) were not met:
+
+-$$1_PKG_ERRORS
+
+-Consider adjusting the PKG_CONFIG_PATH environment variable if you
+-installed software in a non-standard prefix.
+-
+-_PKG_TEXT
+-])],
+- [AC_MSG_RESULT([no])
+- $4])
+-elif test $pkg_failed = untried; then
+- ifelse([$4], , [AC_MSG_FAILURE(dnl
+-[The pkg-config script could not be found or is too old. Make sure it
+-is in your PATH or set the PKG_CONFIG environment variable to the full
+-path to pkg-config.
++# -*- Autoconf -*-
++# Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++# Generated from amversion.in; do not edit by hand.
+
+-_PKG_TEXT
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
+
+-To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.])],
+- [$4])
+-else
+- $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+- $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+- AC_MSG_RESULT([yes])
+- ifelse([$3], , :, [$3])
+-fi[]dnl
+-])# PKG_CHECK_MODULES
++# 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.
+
+-# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# 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
+
+ # AM_AUTOMAKE_VERSION(VERSION)
+ # ----------------------------
+@@ -6737,15 +6165,26 @@
+ # Call AM_AUTOMAKE_VERSION so it can be traced.
+ # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+ AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+- [AM_AUTOMAKE_VERSION([1.9.6])])
++ [AM_AUTOMAKE_VERSION([1.9.2])])
+
+-# AM_AUX_DIR_EXPAND -*- Autoconf -*-
++# AM_AUX_DIR_EXPAND
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2003 Free Software Foundation, 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, 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.
+
+ # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+ # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+@@ -6793,14 +6232,25 @@
+ ])
+
+
+-# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2005
++# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003
+ # Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+
+-# serial 4
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 3
+
+ # This was merged into AC_PROG_CC in Autoconf.
+
+@@ -6815,16 +6265,26 @@
+ ])
+ AU_DEFUN([fp_PROG_CC_STDC])
+
+-# AM_CONDITIONAL -*- Autoconf -*-
++# AM_CONDITIONAL -*- Autoconf -*-
+
+-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, 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, 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 7
++# serial 6
+
+ # AM_CONDITIONAL(NAME, SHELL-CONDITION)
+ # -------------------------------------
+@@ -6848,15 +6308,26 @@
+ Usually this means the macro was only invoked conditionally.]])
+ fi])])
+
++# serial 7 -*- Autoconf -*-
+
+-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+ # Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+
+-# serial 8
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
+
+ # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+ # written in clear, in which case automake, when reading aclocal.m4,
+@@ -6865,6 +6336,7 @@
+ # CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
++
+ # _AM_DEPENDENCIES(NAME)
+ # ----------------------
+ # See how the compiler implements dependency checking.
+@@ -7004,16 +6476,27 @@
+ AC_SUBST([AMDEPBACKSLASH])
+ ])
+
+-# Generate code to set up dependency tracking. -*- Autoconf -*-
++# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
++# Free Software Foundation, 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, or (at your option)
++# any later version.
+
+-#serial 3
++# 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 2
+
+ # _AM_OUTPUT_DEPENDENCY_COMMANDS
+ # ------------------------------
+@@ -7072,19 +6555,30 @@
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+ ])
+
+-# Do all the work for Automake. -*- Autoconf -*-
++# Do all the work for Automake. -*- Autoconf -*-
+
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++# This macro actually does too much some checks are only needed if
++# your package does certain things. But this isn't really a big deal.
++
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ # Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+
+-# serial 12
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
+
+-# This macro actually does too much. Some checks are only needed if
+-# your package does certain things. But this isn't really a big deal.
++# 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 11
+
+ # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+ # AM_INIT_AUTOMAKE([OPTIONS])
+@@ -7186,27 +6680,51 @@
+ done
+ echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+ # AM_PROG_INSTALL_SH
+ # ------------------
+ # Define $install_sh.
++
++# Copyright (C) 2001, 2003 Free Software Foundation, 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, 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.
++
+ AC_DEFUN([AM_PROG_INSTALL_SH],
+ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+ install_sh=${install_sh-"$am_aux_dir/install-sh"}
+ AC_SUBST(install_sh)])
+
+-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# -*- Autoconf -*-
++# Copyright (C) 2003 Free Software Foundation, Inc.
+
+-# serial 2
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 1
+
+ # Check whether the underlying file-system supports filenames
+ # with a leading dot. For instance MS-DOS doesn't.
+@@ -7221,15 +6739,26 @@
+ rmdir .tst 2>/dev/null
+ AC_SUBST([am__leading_dot])])
+
+-# Check to see how 'make' treats includes. -*- Autoconf -*-
++# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+-# serial 3
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 2
+
+ # AM_MAKE_INCLUDE()
+ # -----------------
+@@ -7273,16 +6802,27 @@
+ rm -f confinc confmf
+ ])
+
+-# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
++# -*- Autoconf -*-
+
+-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+
+-# serial 4
++# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, 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, 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 3
+
+ # AM_MISSING_PROG(NAME, PROGRAM)
+ # ------------------------------
+@@ -7308,16 +6848,27 @@
+ fi
+ ])
+
+-# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+ # AM_PROG_MKDIR_P
+ # ---------------
+ # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+-#
++
++# Copyright (C) 2003, 2004 Free Software Foundation, 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, 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.
++
+ # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+ # created by `make install' are always world readable, even if the
+ # installer happens to have an overly restrictive umask (e.g. 077).
+@@ -7371,15 +6922,26 @@
+ fi
+ AC_SUBST([mkdir_p])])
+
+-# Helper functions for option handling. -*- Autoconf -*-
++# Helper functions for option handling. -*- Autoconf -*-
+
+-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+-# serial 3
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 2
+
+ # _AM_MANGLE_OPTION(NAME)
+ # -----------------------
+@@ -7404,11 +6966,22 @@
+ AC_DEFUN([_AM_IF_OPTION],
+ [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2003 Free Software Foundation, Inc. -*- Autoconf -*-
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
+
+ # AM_RUN_LOG(COMMAND)
+ # -------------------
+@@ -7421,16 +6994,28 @@
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
+-# Check to make sure that the build environment is sane. -*- Autoconf -*-
+-
+-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+-# Free Software Foundation, Inc.
+ #
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Check to make sure that the build environment is sane.
++#
++
++# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, 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, or (at your option)
++# any later version.
+
+-# serial 4
++# 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 3
+
+ # AM_SANITY_CHECK
+ # ---------------
+@@ -7473,14 +7058,25 @@
+ fi
+ AC_MSG_RESULT(yes)])
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+ # AM_PROG_INSTALL_STRIP
+-# ---------------------
++
++# Copyright (C) 2001, 2003 Free Software Foundation, 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, 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.
++
+ # One issue with vendor `install' (even GNU) is that you can't
+ # specify the program used to strip binaries. This is especially
+ # annoying in cross-compiling environments, where the build's strip
+@@ -7503,13 +7099,25 @@
+
+ # Check how to create a tarball. -*- Autoconf -*-
+
+-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2004 Free Software Foundation, 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, 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 1
+
+-# serial 2
+
+ # _AM_PROG_TAR(FORMAT)
+ # --------------------
+@@ -7600,7 +7208,6 @@
+ m4_include([m4/exosip.m4])
+ m4_include([m4/gettext.m4])
+ m4_include([m4/iconv.m4])
+-m4_include([m4/isc-posix.m4])
+ m4_include([m4/lib-ld.m4])
+ m4_include([m4/lib-link.m4])
+ m4_include([m4/lib-prefix.m4])
+diff -ur linphone-1.5.0/compile linphone-1.5.0-after/compile
+--- linphone-1.5.0/compile 2006-08-25 16:46:16.000000000 +0800
++++ linphone-1.5.0-after/compile 2007-01-19 16:05:05.000000000 +0800
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # Wrapper for compilers which do not understand `-c -o'.
+
+-scriptversion=2005-05-14.22
++scriptversion=2004-09-10.20
+
+-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
++# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
+ # Written by Tom Tromey <tromey@cygnus.com>.
+ #
+ # This program is free software; you can redistribute it and/or modify
+@@ -18,7 +18,7 @@
+ #
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -47,11 +47,11 @@
+
+ Report bugs to <bug-automake@gnu.org>.
+ EOF
+- exit $?
++ exit 0
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+- exit $?
++ exit 0
+ ;;
+ esac
+
+@@ -125,8 +125,6 @@
+
+ if test -f "$cofile"; then
+ mv "$cofile" "$ofile"
+-elif test -f "${cofile}bj"; then
+- mv "${cofile}bj" "$ofile"
+ fi
+
+ rmdir "$lockdir"
+diff -ur linphone-1.5.0/config.guess linphone-1.5.0-after/config.guess
+--- linphone-1.5.0/config.guess 2006-08-25 16:46:18.000000000 +0800
++++ linphone-1.5.0-after/config.guess 2007-01-19 16:05:07.000000000 +0800
+@@ -1,10 +1,9 @@
+ #! /bin/sh
+ # Attempt to guess a canonical system name.
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+-# Inc.
++# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+-timestamp='2006-07-02'
++timestamp='2004-09-07'
+
+ # This file is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU General Public License as published by
+@@ -18,15 +17,13 @@
+ #
+ # 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., 51 Franklin Street - Fifth Floor, Boston, MA
+-# 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+ # configuration script generated by Autoconf, you may include it under
+ # the same distribution terms that you use for the rest of that program.
+
+-
+ # Originally written by Per Bothner <per@bothner.com>.
+ # Please send patches to <config-patches@gnu.org>. Submit a context
+ # diff and a properly formatted ChangeLog entry.
+@@ -56,7 +53,7 @@
+ GNU config.guess ($timestamp)
+
+ Originally written by Per Bothner.
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
+
+ This is free software; see the source for copying conditions. There is NO
+@@ -69,11 +66,11 @@
+ while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+- echo "$timestamp" ; exit ;;
++ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+- echo "$version" ; exit ;;
++ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+- echo "$usage"; exit ;;
++ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+@@ -107,7 +104,7 @@
+ trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+ trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+ : ${TMPDIR=/tmp} ;
+- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
++ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+@@ -126,7 +123,7 @@
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+-esac ; set_cc_for_build= ;'
++esac ;'
+
+ # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+ # (ghazi@noc.rutgers.edu 1994-08-24)
+@@ -199,23 +196,55 @@
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+- exit ;;
++ exit 0 ;;
++ amd64:OpenBSD:*:*)
++ echo x86_64-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ amiga:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ cats:OpenBSD:*:*)
++ echo arm-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ hp300:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ luna88k:OpenBSD:*:*)
++ echo m88k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mac68k:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ macppc:OpenBSD:*:*)
++ echo powerpc-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mvme68k:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mvme88k:OpenBSD:*:*)
++ echo m88k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mvmeppc:OpenBSD:*:*)
++ echo powerpc-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ sgi:OpenBSD:*:*)
++ echo mips64-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ sun3:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
+ *:OpenBSD:*:*)
+- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+- exit ;;
++ echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+- exit ;;
+- *:SolidBSD:*:*)
+- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ macppc:MirBSD:*:*)
+- echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+- exit ;;
++ echo powerppc-unknown-mirbsd${UNAME_RELEASE}
++ exit 0 ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+@@ -268,43 +297,37 @@
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+- exit ;;
++ exit 0 ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+- exit ;;
++ exit 0 ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+- exit ;;
++ exit 0 ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+- exit ;;
++ exit 0;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+- exit ;;
++ exit 0 ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+- exit ;;
++ exit 0 ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+- exit ;;
+- *:z/VM:*:*)
+- echo s390-ibm-zvmoe
+- exit ;;
++ exit 0 ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+- exit ;;
++ exit 0 ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+- exit ;;
+- arm:riscos:*:*|arm:RISCOS:*:*)
+- echo arm-unknown-riscos
+- exit ;;
++ exit 0;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+- exit ;;
++ exit 0;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+@@ -312,32 +335,32 @@
+ else
+ echo pyramid-pyramid-bsd
+ fi
+- exit ;;
++ exit 0 ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+- exit ;;
++ exit 0 ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+- exit ;;
+- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
++ exit 0 ;;
++ DRS?6000:UNIX_SV:4.2*:7*)
+ case `/usr/bin/uname -p` in
+- sparc) echo sparc-icl-nx7; exit ;;
++ sparc) echo sparc-icl-nx7 && exit 0 ;;
+ esac ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ i86pc:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+@@ -346,10 +369,10 @@
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+- exit ;;
++ exit 0 ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+@@ -361,10 +384,10 @@
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+- exit ;;
++ exit 0 ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+@@ -375,40 +398,40 @@
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+- exit ;;
++ exit 0 ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+@@ -432,33 +455,32 @@
+ exit (-1);
+ }
+ EOF
+- $CC_FOR_BUILD -o $dummy $dummy.c &&
+- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+- SYSTEM_NAME=`$dummy $dummyarg` &&
+- { echo "$SYSTEM_NAME"; exit; }
++ $CC_FOR_BUILD -o $dummy $dummy.c \
++ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
++ && exit 0
+ echo mips-mips-riscos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+- exit ;;
++ exit 0 ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+- exit ;;
++ exit 0 ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+- exit ;;
++ exit 0 ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+- exit ;;
++ exit 0 ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+- exit ;;
++ exit 0 ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+- exit ;;
++ exit 0 ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+- exit ;;
++ exit 0 ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+@@ -474,29 +496,29 @@
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+- exit ;;
++ exit 0 ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+- exit ;;
++ exit 0 ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+- exit ;;
++ exit 0 ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+- exit ;;
++ exit 0 ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+- exit ;;
++ exit 0 ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+- exit ;;
++ exit 0 ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
++ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
++ exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+- exit ;;
++ exit 0 ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+@@ -504,7 +526,7 @@
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+- exit ;;
++ exit 0 ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+@@ -519,18 +541,14 @@
+ exit(0);
+ }
+ EOF
+- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+- then
+- echo "$SYSTEM_NAME"
+- else
+- echo rs6000-ibm-aix3.2.5
+- fi
++ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
++ echo rs6000-ibm-aix3.2.5
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+- exit ;;
++ exit 0 ;;
+ *:AIX:*:[45])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+@@ -544,28 +562,28 @@
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+- exit ;;
++ exit 0 ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+- exit ;;
++ exit 0 ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+- exit ;;
++ exit 0 ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+- exit ;; # report: romp-ibm BSD 4.3
++ exit 0 ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+- exit ;;
++ exit 0 ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+- exit ;;
++ exit 0 ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+- exit ;;
++ exit 0 ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+- exit ;;
++ exit 0 ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+@@ -627,19 +645,9 @@
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+- eval $set_cc_for_build
+-
+- # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+- # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+- # generating 64-bit code. GNU and HP use different nomenclature:
+- #
+- # $ CC_FOR_BUILD=cc ./config.guess
+- # => hppa2.0w-hp-hpux11.23
+- # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+- # => hppa64-hp-hpux11.23
+-
+- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+- grep __LP64__ >/dev/null
++ # avoid double evaluation of $set_cc_for_build
++ test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
++ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+@@ -647,11 +655,11 @@
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+- exit ;;
++ exit 0 ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+- exit ;;
++ exit 0 ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+@@ -679,179 +687,158 @@
+ exit (0);
+ }
+ EOF
+- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+- { echo "$SYSTEM_NAME"; exit; }
++ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ echo unknown-hitachi-hiuxwe2
+- exit ;;
++ exit 0 ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+- exit ;;
++ exit 0 ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+- exit ;;
++ exit 0 ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+- exit ;;
++ exit 0 ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+- exit ;;
++ exit 0 ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+- exit ;;
++ exit 0 ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+- exit ;;
++ exit 0 ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+- exit ;;
++ exit 0 ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+- exit ;;
++ exit 0 ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+- exit ;;
++ exit 0 ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+- exit ;;
++ exit 0 ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+- exit ;;
++ exit 0 ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+- exit ;;
++ exit 0 ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+- exit ;;
++ exit 0 ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+- exit ;;
++ exit 0 ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:FreeBSD:*:*)
+- case ${UNAME_MACHINE} in
+- pc98)
+- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+- amd64)
+- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+- *)
+- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+- esac
+- exit ;;
++ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
++ exit 0 ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+- exit ;;
++ exit 0 ;;
+ i*:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+- exit ;;
+- i*:windows32*:*)
+- # uname -m includes "-pc" on this system.
+- echo ${UNAME_MACHINE}-mingw32
+- exit ;;
++ exit 0 ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+- exit ;;
+- x86:Interix*:[3456]*)
+- echo i586-pc-interix${UNAME_RELEASE}
+- exit ;;
+- EM64T:Interix*:[3456]*)
+- echo x86_64-unknown-interix${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
++ x86:Interix*:[34]*)
++ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
++ exit 0 ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+- exit ;;
++ exit 0 ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+- exit ;;
++ exit 0 ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+- exit ;;
+- amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+- echo x86_64-unknown-cygwin
+- exit ;;
++ exit 0 ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+- exit ;;
++ exit 0 ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+- exit ;;
++ exit 0 ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+- exit ;;
++ exit 0 ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+- exit ;;
++ exit 0 ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
+- avr32*:Linux:*:*)
+- echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+- exit ;;
++ exit 0 ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+- exit ;;
++ exit 0 ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+@@ -868,12 +855,8 @@
+ #endif
+ #endif
+ EOF
+- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+- /^CPU/{
+- s: ::g
+- p
+- }'`"
+- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
++ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+@@ -891,22 +874,15 @@
+ #endif
+ #endif
+ EOF
+- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+- /^CPU/{
+- s: ::g
+- p
+- }'`"
+- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
++ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ ;;
+- or32:Linux:*:*)
+- echo or32-unknown-linux-gnu
+- exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+@@ -920,7 +896,7 @@
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+- exit ;;
++ exit 0 ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+@@ -928,28 +904,25 @@
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+- exit ;;
++ exit 0 ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+- exit ;;
++ exit 0 ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
+- vax:Linux:*:*)
+- echo ${UNAME_MACHINE}-dec-linux-gnu
+- exit ;;
++ exit 0 ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+@@ -967,15 +940,15 @@
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+- exit ;;
++ exit 0 ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+- exit ;;
++ exit 0 ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+- exit ;;
++ exit 0 ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+@@ -992,7 +965,7 @@
+ LIBC=gnulibc1
+ # endif
+ #else
+- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
++ #ifdef __INTEL_COMPILER
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+@@ -1002,23 +975,16 @@
+ LIBC=dietlibc
+ #endif
+ EOF
+- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+- /^LIBC/{
+- s: ::g
+- p
+- }'`"
+- test x"${LIBC}" != x && {
+- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+- exit
+- }
+- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
++ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
++ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+- exit ;;
++ exit 0 ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+@@ -1026,27 +992,27 @@
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+- exit ;;
++ exit 0 ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+- exit ;;
++ exit 0 ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+- exit ;;
++ exit 0 ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+- exit ;;
+- i*86:syllable:*:*)
++ exit 0 ;;
++ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+- exit ;;
++ exit 0 ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+- exit ;;
++ exit 0 ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+@@ -1054,16 +1020,15 @@
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+- exit ;;
+- i*86:*:5:[678]*)
+- # UnixWare 7.x, OpenUNIX and OpenServer 6.
++ exit 0 ;;
++ i*86:*:5:[78]*)
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+- exit ;;
++ exit 0 ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+@@ -1081,73 +1046,73 @@
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+- exit ;;
++ exit 0 ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i386.
+ echo i386-pc-msdosdjgpp
+- exit ;;
++ exit 0 ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+- exit ;;
++ exit 0 ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+- exit ;;
++ exit 0 ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+- exit ;;
++ exit 0 ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+- exit ;;
++ exit 0 ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+- exit ;;
++ exit 0 ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+- exit ;;
++ exit 0 ;;
+ M68*:*:R3V[5678]*:*)
+- test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
++ test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
++ && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
++ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+- && { echo i486-ncr-sysv4; exit; } ;;
++ && echo i486-ncr-sysv4 && exit 0 ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+- exit ;;
++ exit 0 ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+- exit ;;
++ exit 0 ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+- exit ;;
++ exit 0 ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+@@ -1155,72 +1120,69 @@
+ else
+ echo ns32k-sni-sysv
+ fi
+- exit ;;
++ exit 0 ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+- exit ;;
++ exit 0 ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+- exit ;;
++ exit 0 ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+- exit ;;
+- i*86:VOS:*:*)
+- # From Paul.Green@stratus.com.
+- echo ${UNAME_MACHINE}-stratus-vos
+- exit ;;
++ exit 0 ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+- exit ;;
++ exit 0 ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+- exit ;;
++ exit 0 ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+- exit ;;
++ exit 0 ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+- exit ;;
++ exit 0 ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+- exit ;;
++ exit 0 ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+- exit ;;
++ exit 0 ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
++ *86) UNAME_PROCESSOR=i686 ;;
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+@@ -1228,25 +1190,22 @@
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+- exit ;;
+- NSE-?:NONSTOP_KERNEL:*:*)
+- echo nse-tandem-nsk${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+- exit ;;
++ exit 0 ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+- exit ;;
++ exit 0 ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+@@ -1257,47 +1216,38 @@
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+- exit ;;
++ exit 0 ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+- exit ;;
++ exit 0 ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+- exit ;;
++ exit 0 ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+- exit ;;
++ exit 0 ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+- exit ;;
++ exit 0 ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+- exit ;;
++ exit 0 ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+- exit ;;
++ exit 0 ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+- exit ;;
++ exit 0 ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+- A*) echo alpha-dec-vms ; exit ;;
+- I*) echo ia64-dec-vms ; exit ;;
+- V*) echo vax-dec-vms ; exit ;;
+- esac ;;
+- *:XENIX:*:SysV)
+- echo i386-pc-xenix
+- exit ;;
+- i*86:skyos:*:*)
+- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+- exit ;;
+- i*86:rdos:*:*)
+- echo ${UNAME_MACHINE}-pc-rdos
+- exit ;;
++ A*) echo alpha-dec-vms && exit 0 ;;
++ I*) echo ia64-dec-vms && exit 0 ;;
++ V*) echo vax-dec-vms && exit 0 ;;
++ esac
+ esac
+
+ #echo '(No uname command or uname output not recognized.)' 1>&2
+@@ -1329,7 +1279,7 @@
+ #endif
+
+ #if defined (__arm) && defined (__acorn) && defined (__unix)
+- printf ("arm-acorn-riscix\n"); exit (0);
++ printf ("arm-acorn-riscix"); exit (0);
+ #endif
+
+ #if defined (hp300) && !defined (hpux)
+@@ -1418,12 +1368,11 @@
+ }
+ EOF
+
+-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+- { echo "$SYSTEM_NAME"; exit; }
++$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+
+ # Apollos put the system type in the environment.
+
+-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
++test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+ # Convex versions that predate uname can use getsysinfo(1)
+
+@@ -1432,22 +1381,22 @@
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+- exit ;;
++ exit 0 ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+- exit ;;
++ exit 0 ;;
+ c34*)
+ echo c34-convex-bsd
+- exit ;;
++ exit 0 ;;
+ c38*)
+ echo c38-convex-bsd
+- exit ;;
++ exit 0 ;;
+ c4*)
+ echo c4-convex-bsd
+- exit ;;
++ exit 0 ;;
+ esac
+ fi
+
+@@ -1458,9 +1407,7 @@
+ the operating system you are using. It is advised that you
+ download the most up to date version of the config scripts from
+
+- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+-and
+- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
++ ftp://ftp.gnu.org/pub/gnu/config/
+
+ If the version you run ($0) is already up to date, please
+ send the following data and any information you think might be
+Only in linphone-1.5.0: config.h
+Only in linphone-1.5.0-after/: config.h~
+Only in linphone-1.5.0-after/: config.log.orig
+diff -ur linphone-1.5.0/config.sub linphone-1.5.0-after/config.sub
+--- linphone-1.5.0/config.sub 2006-08-25 16:46:18.000000000 +0800
++++ linphone-1.5.0-after/config.sub 2007-01-19 16:05:07.000000000 +0800
+@@ -1,10 +1,9 @@
+ #! /bin/sh
+ # Configuration validation subroutine script.
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+-# Inc.
++# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+-timestamp='2006-07-02'
++timestamp='2004-08-29'
+
+ # This file is (in principle) common to ALL GNU software.
+ # The presence of a machine in this file suggests that SOME GNU software
+@@ -22,15 +21,14 @@
+ #
+ # 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., 51 Franklin Street - Fifth Floor, Boston, MA
+-# 02110-1301, USA.
+-#
++# Foundation, Inc., 59 Temple Place - Suite 330,
++# Boston, MA 02111-1307, USA.
++
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+ # configuration script generated by Autoconf, you may include it under
+ # the same distribution terms that you use for the rest of that program.
+
+-
+ # Please send patches to <config-patches@gnu.org>. Submit a context
+ # diff and a properly formatted ChangeLog entry.
+ #
+@@ -72,7 +70,7 @@
+ version="\
+ GNU config.sub ($timestamp)
+
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
+
+ This is free software; see the source for copying conditions. There is NO
+@@ -85,11 +83,11 @@
+ while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+- echo "$timestamp" ; exit ;;
++ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+- echo "$version" ; exit ;;
++ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+- echo "$usage"; exit ;;
++ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+@@ -101,7 +99,7 @@
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+- exit ;;
++ exit 0;;
+
+ * )
+ break ;;
+@@ -120,9 +118,8 @@
+ # Here we must recognize all the valid KERNEL-OS combinations.
+ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+ case $maybe_os in
+- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+- storm-chaos* | os2-emx* | rtmk-nova*)
++ nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
++ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+@@ -173,10 +170,6 @@
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+- -sco6)
+- os=-sco5v6
+- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+- ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+@@ -193,10 +186,6 @@
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+- -sco5v6*)
+- # Don't forget version if it is 3.2v4 or newer.
+- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+- ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+@@ -241,16 +230,14 @@
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+- | bfin \
++ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+- | m32c | m32r | m32rle | m68000 | m68k | m88k \
+- | maxq | mb | microblaze | mcore \
++ | m32r | m32rle | m68000 | m68k | m88k | mcore \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+@@ -259,7 +246,6 @@
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+- | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+@@ -268,23 +254,20 @@
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+- | mt \
+ | msp430 \
+- | nios | nios2 \
+ | ns16k | ns32k \
+- | or32 \
++ | openrisc | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
++ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+- | spu | strongarm \
++ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
++ | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+- | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
++ | x86 | xscale | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+@@ -295,9 +278,6 @@
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+- ms1)
+- basic_machine=mt-unknown
+- ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+@@ -317,8 +297,8 @@
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+- | avr-* | avr32-* \
+- | bfin-* | bs2000-* \
++ | avr-* \
++ | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+@@ -328,9 +308,9 @@
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+- | m32c-* | m32r-* | m32rle-* \
++ | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+- | m88110-* | m88k-* | maxq-* | mcore-* \
++ | m88110-* | m88k-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+@@ -339,7 +319,6 @@
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+- | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+@@ -348,27 +327,24 @@
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+- | mt-* \
+ | msp430-* \
+- | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
++ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+- | sparclite-* \
+- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
++ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
++ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+- | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+- | xstormy16-* | xtensa-* \
++ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
++ | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+@@ -513,10 +489,6 @@
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+- djgpp)
+- basic_machine=i586-pc
+- os=-msdosdjgpp
+- ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+@@ -707,9 +679,6 @@
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+- ms1-*)
+- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+- ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+@@ -785,8 +754,9 @@
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+- openrisc | openrisc-*)
++ or32 | or32-*)
+ basic_machine=or32-unknown
++ os=-coff
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+@@ -817,12 +787,6 @@
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+- pc98)
+- basic_machine=i386-pc
+- ;;
+- pc98-*)
+- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+- ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+@@ -879,10 +843,6 @@
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+- rdos)
+- basic_machine=i386-pc
+- os=-rdos
+- ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+@@ -1069,10 +1029,6 @@
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+- xbox)
+- basic_machine=i686-pc
+- os=-mingw32
+- ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+@@ -1122,10 +1078,13 @@
+ we32k)
+ basic_machine=we32k-att
+ ;;
+- sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
++ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
++ sh64)
++ basic_machine=sh64-unknown
++ ;;
++ sparc | sparcv8 | sparcv9 | sparcv9b)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+@@ -1198,23 +1157,20 @@
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+- | -openbsd* | -solidbsd* \
++ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+- | -uxpv* | -beos* | -mpeix* | -udk* \
++ | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+- | -skyos* | -haiku* | -rdos* | -toppers*)
++ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+@@ -1232,7 +1188,7 @@
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
++ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+@@ -1341,9 +1297,6 @@
+ -kaos*)
+ os=-kaos
+ ;;
+- -zvmoe)
+- os=-zvmoe
+- ;;
+ -none)
+ ;;
+ *)
+@@ -1366,9 +1319,6 @@
+ # system, and we'll never get to this point.
+
+ case $basic_machine in
+- spu-*)
+- os=-elf
+- ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+@@ -1378,9 +1328,9 @@
+ arm*-semi)
+ os=-aout
+ ;;
+- c4x-* | tic4x-*)
+- os=-coff
+- ;;
++ c4x-* | tic4x-*)
++ os=-coff
++ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+@@ -1424,9 +1374,6 @@
+ *-be)
+ os=-beos
+ ;;
+- *-haiku)
+- os=-haiku
+- ;;
+ *-ibm)
+ os=-aix
+ ;;
+@@ -1598,7 +1545,7 @@
+ esac
+
+ echo $basic_machine$os
+-exit
++exit 0
+
+ # Local variables:
+ # eval: (add-hook 'write-file-hooks 'time-stamp)
+diff -ur linphone-1.5.0/configure linphone-1.5.0-after/configure
+--- linphone-1.5.0/configure 2006-10-11 03:26:24.000000000 +0800
++++ linphone-1.5.0-after/configure 2007-01-19 16:05:09.000000000 +0800
+@@ -1,11 +1,10 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.60a for linphone 1.5.0.
++# Generated by GNU Autoconf 2.59 for linphone 1.5.0.
+ #
+ # Report bugs to <linphone-developers@nongnu.org>.
+ #
+-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
++# Copyright (C) 2003 Free Software Foundation, Inc.
+ # This configure script is free software; the Free Software Foundation
+ # gives unlimited permission to copy, distribute and modify it.
+ ## --------------------- ##
+@@ -19,35 +18,11 @@
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+- setopt NO_GLOB_SUBST
+-else
+- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
++elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
++ set -o posix
+ fi
+-BIN_SH=xpg4; export BIN_SH # for Tru64
+ DUALCASE=1; export DUALCASE # for MKS sh
+
+-
+-# PATH needs CR
+-# 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
+-
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+@@ -56,43 +31,8 @@
+ fi
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order. Quoting is
+-# there to prevent editors from complaining about space-tab.
+-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+-# splitting by setting IFS to empty value.)
+-as_nl='
+-'
+-IFS=" "" $as_nl"
+-
+-# Find who we are. Look in the path if we contain no directory separator.
+-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
+-IFS=$as_save_IFS
+-
+- ;;
+-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_myself: error: cannot find myself; rerun with an absolute file name" >&2
+- { (exit 1); exit 1; }
+-fi
+-
+ # Work around bugs in pre-3.0 UWIN ksh.
+-for as_var in ENV MAIL MAILPATH
+-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+-done
++$as_unset ENV MAIL MAILPATH
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -106,19 +46,18 @@
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++ $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1 &&
+- test "X`expr 00001 : '.*\(...\)'`" = X001; then
++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
++if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -126,386 +65,157 @@
+
+
+ # Name of the executable.
+-as_me=`$as_basename -- "$0" ||
++as_me=`$as_basename "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
++ X"$0" : 'X\(/\)$' \| \
++ . : '\(.\)' 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{
+- s//\1/
+- q
+- }
+- /^X\/\(\/\/\)$/{
+- s//\1/
+- q
+- }
+- /^X\/\(\/\).*/{
+- s//\1/
+- q
+- }
+- s/.*/./; q'`
+-
+-# CDPATH.
+-$as_unset CDPATH
+-
+-
+-if test "x$CONFIG_SHELL" = x; then
+- if (eval ":") 2>/dev/null; then
+- as_have_required=yes
+-else
+- as_have_required=no
+-fi
+-
+- if test $as_have_required = yes && (eval ":
+-(as_func_return () {
+- (exit \$1)
+-}
+-as_func_success () {
+- as_func_return 0
+-}
+-as_func_failure () {
+- as_func_return 1
+-}
+-as_func_ret_success () {
+- return 0
+-}
+-as_func_ret_failure () {
+- return 1
+-}
+-
+-exitcode=0
+-if as_func_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_success failed.
+-fi
++ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
++ /^X\/\(\/\/\)$/{ s//\1/; q; }
++ /^X\/\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+
+-if as_func_failure; then
+- exitcode=1
+- echo as_func_failure succeeded.
+-fi
+
+-if as_func_ret_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_ret_success failed.
+-fi
++# 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
+
+-if as_func_ret_failure; then
+- exitcode=1
+- echo as_func_ret_failure succeeded.
++# 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
+
+-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+- :
+-else
+- exitcode=1
+- echo positional parameters were not saved.
+-fi
+
+-test \$exitcode = 0) || { (exit 1); exit 1; }
++ 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
+
+-(
+- as_lineno_1=\$LINENO
+- as_lineno_2=\$LINENO
+- test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+- test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+-") 2> /dev/null; then
+- :
+-else
+- as_candidate_shells=
++ ;;
++ 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 /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
++for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+- case $as_dir in
++ for as_base in sh bash ksh sh5; do
++ case $as_dir in
+ /*)
+- for as_base in sh bash ksh sh5; do
+- as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+- done;;
+- esac
+-done
+-IFS=$as_save_IFS
+-
+-
+- for as_shell in $as_candidate_shells $SHELL; do
+- # Try only shells that exist, to save several forks.
+- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+- { ("$as_shell") 2> /dev/null <<\_ASEOF
+-# 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+"$@"}'='"$@"'
+- setopt NO_GLOB_SUBST
+-else
+- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+-fi
+-BIN_SH=xpg4; export BIN_SH # for Tru64
+-DUALCASE=1; export DUALCASE # for MKS sh
+-
+-:
+-_ASEOF
+-}; then
+- CONFIG_SHELL=$as_shell
+- as_have_required=yes
+- if { "$as_shell" 2> /dev/null <<\_ASEOF
+-# 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+"$@"}'='"$@"'
+- setopt NO_GLOB_SUBST
+-else
+- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+-fi
+-BIN_SH=xpg4; export BIN_SH # for Tru64
+-DUALCASE=1; export DUALCASE # for MKS sh
+-
+-:
+-(as_func_return () {
+- (exit $1)
+-}
+-as_func_success () {
+- as_func_return 0
+-}
+-as_func_failure () {
+- as_func_return 1
+-}
+-as_func_ret_success () {
+- return 0
+-}
+-as_func_ret_failure () {
+- return 1
+-}
+-
+-exitcode=0
+-if as_func_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_success failed.
+-fi
+-
+-if as_func_failure; then
+- exitcode=1
+- echo as_func_failure succeeded.
+-fi
+-
+-if as_func_ret_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_ret_success failed.
+-fi
+-
+-if as_func_ret_failure; then
+- exitcode=1
+- echo as_func_ret_failure succeeded.
+-fi
+-
+-if ( set x; as_func_ret_success y && test x = "$1" ); then
+- :
+-else
+- exitcode=1
+- echo positional parameters were not saved.
+-fi
+-
+-test $exitcode = 0) || { (exit 1); exit 1; }
+-
+-(
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+-
+-_ASEOF
+-}; then
+- break
+-fi
+-
+-fi
+-
+- done
+-
+- if test "x$CONFIG_SHELL" != x; then
+- for as_var in BASH_ENV ENV
+- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+- done
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+-fi
+-
+-
+- if test $as_have_required = no; then
+- echo This script requires a shell more modern than all the
+- echo shells that I found on your system. Please install a
+- echo modern shell, or manually run the script under such a
+- echo shell if you do have one.
+- { (exit 1); exit 1; }
+-fi
+-
+-
+-fi
+-
+-fi
+-
+-
+-
+-(eval "as_func_return () {
+- (exit \$1)
+-}
+-as_func_success () {
+- as_func_return 0
+-}
+-as_func_failure () {
+- as_func_return 1
+-}
+-as_func_ret_success () {
+- return 0
+-}
+-as_func_ret_failure () {
+- return 1
+-}
+-
+-exitcode=0
+-if as_func_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_success failed.
+-fi
+-
+-if as_func_failure; then
+- exitcode=1
+- echo as_func_failure succeeded.
+-fi
+-
+-if as_func_ret_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_ret_success failed.
+-fi
+-
+-if as_func_ret_failure; then
+- exitcode=1
+- echo as_func_ret_failure succeeded.
+-fi
+-
+-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+- :
+-else
+- exitcode=1
+- echo positional parameters were not saved.
+-fi
+-
+-test \$exitcode = 0") || {
+- echo No shell found that supports shell functions.
+- echo Please tell autoconf@gnu.org about your system,
+- echo including any error possibly output before this
+- echo message
+-}
+-
+-
+-
++ 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`expr $as_lineno_1 + 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 after each line using $LINENO; the second 'sed'
+- # does the real work. The second script uses 'N' to pair each
+- # line-number line with the line containing $LINENO, and appends
+- # trailing '-' during substitution so that $LINENO is not a special
+- # case at line end.
++ # 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
+- # scripts with optimization help from Paolo Bonzini. Blame Lee
+- # E. McMahon (1931-1989) for sed's syntax. :-)
+- sed -n '
+- p
+- /[$]LINENO/=
+- ' <$as_myself |
++ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
++ sed '=' <$as_myself |
+ sed '
+- s/[$]LINENO.*/&-/
+- t lineno
+- b
+- :lineno
+ N
+- :loop
+- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
++ s,$,-,
++ : loop
++ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+- s/-\n.*//
++ s,-$,,
++ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+- chmod +x "$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 sensitive to this).
+- . "./$as_me.lineno"
++ # original and so on. Autoconf is especially sensible to this).
++ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+- as_dirname=dirname
+-else
+- as_dirname=false
+-fi
+-
+-ECHO_C= ECHO_N= ECHO_T=
+-case `echo -n x` in
+--n*)
+- case `echo 'x\c'` in
+- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+- *) ECHO_C='\c';;
+- esac;;
+-*)
+- ECHO_N='-n';;
++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 &&
+- test "X`expr 00001 : '.*\(...\)'`" = X001; then
++if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
+-if test -d conf$$.dir; then
+- rm -f conf$$.dir/conf$$.file
+-else
+- rm -f conf$$.dir
+- mkdir conf$$.dir
+-fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- as_ln_s='ln -s'
+- # ... but there are two gotchas:
+- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+- # In both cases, we have to default to `cp -p'.
+- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
++ # 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$$.dir/conf$$.file conf$$.file
+-rmdir conf$$.dir 2>/dev/null
++rm -f conf$$ conf$$.exe conf$$.file
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -514,19 +224,7 @@
+ as_mkdir_p=false
+ fi
+
+-# Find out whether ``test -x'' works. Don't use a zero-byte file, as
+-# systems may use methods other than mode bits to determine executability.
+-cat >conf$$.file <<_ASEOF
+-#! /bin/sh
+-exit 0
+-_ASEOF
+-chmod +x conf$$.file
+-if test -x conf$$.file >/dev/null 2>&1; then
+- as_executable_p="test -x"
+-else
+- as_executable_p=:
+-fi
+-rm -f conf$$.file
++as_executable_p="test -f"
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -535,6 +233,15 @@
+ as_tr_sh="eval 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
++
+
+
+ # Check that we are running under the correct shell.
+@@ -573,15 +280,15 @@
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+ if test -z "$ECHO"; then
+ if test "X${echo_test_string+set}" != Xset; then
+ # find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+- if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+- echo_test_string=`eval $cmd` &&
++ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
++ echo_test_string="`eval $cmd`" &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+@@ -690,26 +397,29 @@
+
+ tagnames=${tagnames+${tagnames},}F77
+
+-exec 7<&0 </dev/null 6>&1
+-
+ # 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.
+ #
+ ac_default_prefix=/usr/local
+-ac_clean_files=
+ ac_config_libobj_dir=.
+-LIBOBJS=
+ cross_compiling=no
+ subdirs=
+ MFLAGS=
+ MAKEFLAGS=
+ SHELL=${CONFIG_SHELL-/bin/sh}
+
++# 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='linphone'
+ PACKAGE_TARNAME='linphone'
+@@ -720,249 +430,43 @@
+ # Factoring default headers for most tests.
+ ac_includes_default="\
+ #include <stdio.h>
+-#ifdef HAVE_SYS_TYPES_H
++#if HAVE_SYS_TYPES_H
+ # include <sys/types.h>
+ #endif
+-#ifdef HAVE_SYS_STAT_H
++#if HAVE_SYS_STAT_H
+ # include <sys/stat.h>
+ #endif
+-#ifdef STDC_HEADERS
++#if STDC_HEADERS
+ # include <stdlib.h>
+ # include <stddef.h>
+ #else
+-# ifdef HAVE_STDLIB_H
++# if HAVE_STDLIB_H
+ # include <stdlib.h>
+ # endif
+ #endif
+-#ifdef HAVE_STRING_H
+-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
++#if HAVE_STRING_H
++# if !STDC_HEADERS && HAVE_MEMORY_H
+ # include <memory.h>
+ # endif
+ # include <string.h>
+ #endif
+-#ifdef HAVE_STRINGS_H
++#if HAVE_STRINGS_H
+ # include <strings.h>
+ #endif
+-#ifdef HAVE_INTTYPES_H
++#if HAVE_INTTYPES_H
+ # include <inttypes.h>
++#else
++# if HAVE_STDINT_H
++# include <stdint.h>
++# endif
+ #endif
+-#ifdef HAVE_STDINT_H
+-# include <stdint.h>
+-#endif
+-#ifdef HAVE_UNISTD_H
++#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
+-datarootdir
+-datadir
+-sysconfdir
+-sharedstatedir
+-localstatedir
+-includedir
+-oldincludedir
+-docdir
+-infodir
+-htmldir
+-dvidir
+-pdfdir
+-psdir
+-libdir
+-localedir
+-mandir
+-DEFS
+-ECHO_C
+-ECHO_N
+-ECHO_T
+-LIBS
+-build_alias
+-host_alias
+-target_alias
+-LIBLINPHONE_SO_VERSION
+-LINPHONE_VERSION
+-INSTALL_PROGRAM
+-INSTALL_SCRIPT
+-INSTALL_DATA
+-CYGPATH_W
+-PACKAGE
+-VERSION
+-ACLOCAL
+-AUTOCONF
+-AUTOMAKE
+-AUTOHEADER
+-MAKEINFO
+-install_sh
+-STRIP
+-INSTALL_STRIP_PROGRAM
+-mkdir_p
+-AWK
+-SET_MAKE
+-am__leading_dot
+-AMTAR
+-am__tar
+-am__untar
+-CC
+-CFLAGS
+-LDFLAGS
+-CPPFLAGS
+-ac_ct_CC
+-EXEEXT
+-OBJEXT
+-DEPDIR
+-am__include
+-am__quote
+-AMDEP_TRUE
+-AMDEP_FALSE
+-AMDEPBACKSLASH
+-CCDEPMODE
+-am__fastdepCC_TRUE
+-am__fastdepCC_FALSE
+-CPP
+-GREP
+-EGREP
+-INTLTOOL_DESKTOP_RULE
+-INTLTOOL_DIRECTORY_RULE
+-INTLTOOL_KEYS_RULE
+-INTLTOOL_PROP_RULE
+-INTLTOOL_OAF_RULE
+-INTLTOOL_PONG_RULE
+-INTLTOOL_SERVER_RULE
+-INTLTOOL_SHEET_RULE
+-INTLTOOL_SOUNDLIST_RULE
+-INTLTOOL_UI_RULE
+-INTLTOOL_XAM_RULE
+-INTLTOOL_KBD_RULE
+-INTLTOOL_XML_RULE
+-INTLTOOL_XML_NOMERGE_RULE
+-INTLTOOL_CAVES_RULE
+-INTLTOOL_SCHEMAS_RULE
+-INTLTOOL_THEME_RULE
+-INTLTOOL_SERVICE_RULE
+-INTLTOOL_EXTRACT
+-INTLTOOL_MERGE
+-INTLTOOL_UPDATE
+-INTLTOOL_PERL
+-INTLTOOL_ICONV
+-INTLTOOL_MSGFMT
+-INTLTOOL_MSGMERGE
+-INTLTOOL_XGETTEXT
+-ALL_LINGUAS
+-build
+-build_cpu
+-build_vendor
+-build_os
+-host
+-host_cpu
+-host_vendor
+-host_os
+-LN_S
+-ECHO
+-AR
+-RANLIB
+-CXX
+-CXXFLAGS
+-ac_ct_CXX
+-CXXDEPMODE
+-am__fastdepCXX_TRUE
+-am__fastdepCXX_FALSE
+-CXXCPP
+-F77
+-FFLAGS
+-ac_ct_F77
+-LIBTOOL
+-MKINSTALLDIRS
+-USE_NLS
+-MSGFMT
+-GMSGFMT
+-XGETTEXT
+-MSGMERGE
+-INTL_MACOSX_LIBS
+-LIBICONV
+-LTLIBICONV
+-INTLLIBS
+-LIBINTL
+-LTLIBINTL
+-POSUB
+-GETTEXT_PACKAGE
+-PKG_CONFIG
+-LIBGNOMEUI_CFLAGS
+-LIBGNOMEUI_LIBS
+-LIBGNOME_CFLAGS
+-LIBGNOME_LIBS
+-LIBGTK_CFLAGS
+-LIBGTK_LIBS
+-GNOME_APPLETS_CFLAGS
+-GNOME_APPLETS_LIBS
+-IPV6_CFLAGS
+-TRUESPEECH_CFLAGS
+-BUILD_TRUESPEECH_TRUE
+-BUILD_TRUESPEECH_FALSE
+-osip_prefix
+-OSIP_CFLAGS
+-OSIP_LIBS
+-EXOSIP_CFLAGS
+-EXOSIP_LIBS
+-READLINE_CFLAGS
+-READLINE_LIBS
+-SPEEX_CFLAGS
+-SPEEX_LIBS
+-BUILD_MEDIA_API_TRUE
+-BUILD_MEDIA_API_FALSE
+-BUILD_GNOME_TRUE
+-BUILD_GNOME_FALSE
+-BUILD_GNOME_APPLET_TRUE
+-BUILD_GNOME_APPLET_FALSE
+-ARMBUILD_TRUE
+-ARMBUILD_FALSE
+-STRICT_OPTIONS
+-subdirs
+-have_db2html
+-ENABLE_MANUAL_TRUE
+-ENABLE_MANUAL_FALSE
+-LINPHONE_CFLAGS
+-LINPHONE_LIBS
+-ORTP_VERSION
+-LIBOBJS
+-LTLIBOBJS'
++ac_subdirs_all="$ac_subdirs_all oRTP mediastreamer2"
++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 LIBLINPHONE_SO_VERSION LINPHONE_VERSION INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_PROP_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XAM_RULE INTLTOOL_KBD_RULE INTLTOOL_XML_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL build build_cpu build_vendor build_os host host_cpu host_vendor host_os LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE INTL_MACOSX_LIBS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB GETTEXT_PACKAGE PKG_CONFIG LIBGNOMEUI_CFLAGS LIBGNOMEUI_LIBS LIBGNOME_CFLAGS LIBGNOME_LIBS LIBGTK_CFLAGS LIBGTK_LIBS GNOME_APPLETS_CFLAGS GNOME_APPLETS_LIBS IPV6_CFLAGS TRUESPEECH_CFLAGS BUILD_TRUESPEECH_TRUE BUILD_TRUESPEECH_FALSE osip_prefix OSIP_CFLAGS OSIP_LIBS EXOSIP_CFLAGS EXOSIP_LIBS READLINE_CFLAGS READLINE_LIBS SPEEX_CFLAGS SPEEX_LIBS BUILD_MEDIA_API_TRUE BUILD_MEDIA_API_FALSE BUILD_GNOME_TRUE BUILD_GNOME_FALSE BUILD_GNOME_APPLET_TRUE BUILD_GNOME_APPLET_FALSE ARMBUILD_TRUE ARMBUILD_FALSE STRICT_OPTIONS subdirs have_db2html ENABLE_MANUAL_TRUE ENABLE_MANUAL_FALSE LINPHONE_CFLAGS LINPHONE_LIBS ORTP_VERSION LIBOBJS LTLIBOBJS'
+ ac_subst_files=''
+- ac_precious_vars='build_alias
+-host_alias
+-target_alias
+-CC
+-CFLAGS
+-LDFLAGS
+-CPPFLAGS
+-CPP
+-CXX
+-CXXFLAGS
+-CCC
+-CXXCPP
+-F77
+-FFLAGS
+-PKG_CONFIG
+-LIBGNOMEUI_CFLAGS
+-LIBGNOMEUI_LIBS
+-LIBGNOME_CFLAGS
+-LIBGNOME_LIBS
+-LIBGTK_CFLAGS
+-LIBGTK_LIBS
+-GNOME_APPLETS_CFLAGS
+-GNOME_APPLETS_LIBS
+-SPEEX_CFLAGS
+-SPEEX_LIBS'
+-ac_subdirs_all='oRTP mediastreamer2 '
+
+ # Initialize some variables set by options.
+ ac_init_help=
+@@ -989,48 +493,34 @@
+ # 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.
+-# (The list follows the same order as the GNU Coding Standards.)
+ bindir='${exec_prefix}/bin'
+ sbindir='${exec_prefix}/sbin'
+ libexecdir='${exec_prefix}/libexec'
+-datarootdir='${prefix}/share'
+-datadir='${datarootdir}'
++datadir='${prefix}/share'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
++libdir='${exec_prefix}/lib'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+-infodir='${datarootdir}/info'
+-htmldir='${docdir}'
+-dvidir='${docdir}'
+-pdfdir='${docdir}'
+-psdir='${docdir}'
+-libdir='${exec_prefix}/lib'
+-localedir='${datarootdir}/locale'
+-mandir='${datarootdir}/man'
++infodir='${prefix}/info'
++mandir='${prefix}/man'
+
+ ac_prev=
+-ac_dashdash=
+ for ac_option
+ do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+- eval $ac_prev=\$ac_option
++ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+- case $ac_option in
+- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+- *) ac_optarg=yes ;;
+- esac
++ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+- case $ac_dashdash$ac_option in
+- --)
+- ac_dashdash=yes ;;
++ case $ac_option in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+@@ -1052,18 +542,12 @@
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+- -datadir | --datadir | --datadi | --datad)
++ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+- -datadir=* | --datadir=* | --datadi=* | --datad=*)
++ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
++ | --da=*)
+ datadir=$ac_optarg ;;
+
+- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+- | --dataroo | --dataro | --datar)
+- ac_prev=datarootdir ;;
+- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+- datarootdir=$ac_optarg ;;
+-
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+@@ -1071,17 +555,7 @@
+ { 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 ;;
+-
+- -docdir | --docdir | --docdi | --doc | --do)
+- ac_prev=docdir ;;
+- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+- docdir=$ac_optarg ;;
+-
+- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+- ac_prev=dvidir ;;
+- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+- dvidir=$ac_optarg ;;
++ eval "enable_$ac_feature=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+@@ -1090,7 +564,11 @@
+ { 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=\$ac_optarg ;;
++ case $ac_option in
++ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
++ *) ac_optarg=yes ;;
++ esac
++ eval "enable_$ac_feature='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+@@ -1117,12 +595,6 @@
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+- ac_prev=htmldir ;;
+- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+- | --ht=*)
+- htmldir=$ac_optarg ;;
+-
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+@@ -1147,16 +619,13 @@
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+- -localedir | --localedir | --localedi | --localed | --locale)
+- ac_prev=localedir ;;
+- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+- localedir=$ac_optarg ;;
+-
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+- | --localstate | --localstat | --localsta | --localst | --locals)
++ | --localstate | --localstat | --localsta | --localst \
++ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
++ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
++ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+@@ -1221,16 +690,6 @@
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+- -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+- ac_prev=pdfdir ;;
+- -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+- pdfdir=$ac_optarg ;;
+-
+- -psdir | --psdir | --psdi | --psd | --ps)
+- ac_prev=psdir ;;
+- -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+- psdir=$ac_optarg ;;
+-
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+@@ -1287,7 +746,11 @@
+ { 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=\$ac_optarg ;;
++ case $ac_option in
++ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
++ *) ac_optarg=yes ;;
++ esac
++ eval "with_$ac_package='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+@@ -1296,7 +759,7 @@
+ { 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 ;;
++ eval "with_$ac_package=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+@@ -1327,7 +790,8 @@
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+- eval $ac_envvar=\$ac_optarg
++ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
++ eval "$ac_envvar='$ac_optarg'"
+ export $ac_envvar ;;
+
+ *)
+@@ -1347,19 +811,27 @@
+ { (exit 1); exit 1; }; }
+ fi
+
+-# Be sure to have absolute directory names.
+-for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+- datadir sysconfdir sharedstatedir localstatedir includedir \
+- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+- libdir localedir mandir
++# Be sure to have absolute paths.
++for ac_var in exec_prefix prefix
+ do
+- eval ac_val=\$$ac_var
++ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+- [\\/$]* | ?:[\\/]* ) continue;;
+- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
++ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
++ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
++ { (exit 1); exit 1; }; };;
++ esac
++done
++
++# Be sure to have absolute paths.
++for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
++ localstatedir libdir includedir oldincludedir infodir mandir
++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; }; };;
+ esac
+- { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; }
+ done
+
+ # There might be people who depend on the old broken behavior: `$host'
+@@ -1386,76 +858,94 @@
+ test "$silent" = yes && exec 6>/dev/null
+
+
+-ac_pwd=`pwd` && test -n "$ac_pwd" &&
+-ac_ls_di=`ls -di .` &&
+-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+- { echo "$as_me: error: Working directory cannot be determined" >&2
+- { (exit 1); exit 1; }; }
+-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+- { echo "$as_me: error: pwd does not report name of working directory" >&2
+- { (exit 1); exit 1; }; }
+-
+-
+ # 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 the parent directory.
+- ac_confdir=`$as_dirname -- "$0" ||
++ # 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 ||
++ 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'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+ srcdir=$ac_confdir
+- if test ! -r "$srcdir/$ac_unique_file"; then
++ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+ else
+ ac_srcdir_defaulted=no
+ fi
+-if test ! -r "$srcdir/$ac_unique_file"; then
+- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
++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; }; }
+-fi
+-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+-ac_abs_confdir=`(
+- cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
++ else
++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+- pwd)`
+-# When building in place, set srcdir=.
+-if test "$ac_abs_confdir" = "$ac_pwd"; then
+- srcdir=.
+-fi
+-# Remove unnecessary trailing slashes from srcdir.
+-# Double slashes in file names in object file debugging info
+-# mess up M-x gdb in Emacs.
+-case $srcdir in
+-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+-esac
+-for ac_var in $ac_precious_vars; do
+- eval ac_env_${ac_var}_set=\${${ac_var}+set}
+- eval ac_env_${ac_var}_value=\$${ac_var}
+- eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+- eval ac_cv_env_${ac_var}_value=\$${ac_var}
+-done
++ 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
++ac_env_CXX_set=${CXX+set}
++ac_env_CXX_value=$CXX
++ac_cv_env_CXX_set=${CXX+set}
++ac_cv_env_CXX_value=$CXX
++ac_env_CXXFLAGS_set=${CXXFLAGS+set}
++ac_env_CXXFLAGS_value=$CXXFLAGS
++ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
++ac_cv_env_CXXFLAGS_value=$CXXFLAGS
++ac_env_CXXCPP_set=${CXXCPP+set}
++ac_env_CXXCPP_value=$CXXCPP
++ac_cv_env_CXXCPP_set=${CXXCPP+set}
++ac_cv_env_CXXCPP_value=$CXXCPP
++ac_env_F77_set=${F77+set}
++ac_env_F77_value=$F77
++ac_cv_env_F77_set=${F77+set}
++ac_cv_env_F77_value=$F77
++ac_env_FFLAGS_set=${FFLAGS+set}
++ac_env_FFLAGS_value=$FFLAGS
++ac_cv_env_FFLAGS_set=${FFLAGS+set}
++ac_cv_env_FFLAGS_value=$FFLAGS
+
+ #
+ # Report the --help message.
+@@ -1484,6 +974,9 @@
+ -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]
+@@ -1501,22 +994,15 @@
+ --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]
+- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+- --infodir=DIR info documentation [DATAROOTDIR/info]
+- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+- --mandir=DIR man documentation [DATAROOTDIR/man]
+- --docdir=DIR documentation root [DATAROOTDIR/doc/linphone]
+- --htmldir=DIR html documentation [DOCDIR]
+- --dvidir=DIR dvi documentation [DOCDIR]
+- --pdfdir=DIR pdf documentation [DOCDIR]
+- --psdir=DIR ps documentation [DOCDIR]
++ --infodir=DIR info documentation [PREFIX/info]
++ --mandir=DIR man documentation [PREFIX/man]
+ _ACEOF
+
+ cat <<\_ACEOF
+@@ -1543,8 +1029,10 @@
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+- --enable-shared[=PKGS] build shared libraries [default=yes]
+- --enable-static[=PKGS] build static libraries [default=yes]
++ --enable-shared[=PKGS]
++ build shared libraries [default=yes]
++ --enable-static[=PKGS]
++ build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+@@ -1564,7 +1052,8 @@
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+- --with-tags[=TAGS] include additional configurations [automatic]
++ --with-tags[=TAGS]
++ include additional configurations [automatic]
+ --with-gnu-ld assume the C compiler uses GNU ld default=no
+ --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
+ --without-libiconv-prefix don't search for libiconv in includedir and libdir
+@@ -1581,119 +1070,134 @@
+ 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++/Objective C preprocessor flags, e.g. -I<include dir> if
+- you have headers in a nonstandard directory <include dir>
++ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
++ headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ CXXCPP C++ preprocessor
+ F77 Fortran 77 compiler command
+ FFLAGS Fortran 77 compiler flags
+- PKG_CONFIG path to pkg-config utility
+- LIBGNOMEUI_CFLAGS
+- C compiler flags for LIBGNOMEUI, overriding pkg-config
+- LIBGNOMEUI_LIBS
+- linker flags for LIBGNOMEUI, overriding pkg-config
+- LIBGNOME_CFLAGS
+- C compiler flags for LIBGNOME, overriding pkg-config
+- LIBGNOME_LIBS
+- linker flags for LIBGNOME, overriding pkg-config
+- LIBGTK_CFLAGS
+- C compiler flags for LIBGTK, overriding pkg-config
+- LIBGTK_LIBS linker flags for LIBGTK, overriding pkg-config
+- GNOME_APPLETS_CFLAGS
+- C compiler flags for GNOME_APPLETS, overriding pkg-config
+- GNOME_APPLETS_LIBS
+- linker flags for GNOME_APPLETS, overriding pkg-config
+- SPEEX_CFLAGS
+- C compiler flags for SPEEX, overriding pkg-config
+- SPEEX_LIBS linker flags for SPEEX, overriding pkg-config
+
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+
+ Report bugs to <linphone-developers@nongnu.org>.
+ _ACEOF
+-ac_status=$?
+ 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
++ test -d $ac_dir || continue
+ ac_builddir=.
+
+-case "$ac_dir" in
+-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+-*)
++if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A ".." for each directory in $ac_dir_suffix.
+- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+- case $ac_top_builddir_sub in
+- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+- esac ;;
+-esac
+-ac_abs_top_builddir=$ac_pwd
+-ac_abs_builddir=$ac_pwd$ac_dir_suffix
+-# for backward compatibility:
+-ac_top_builddir=$ac_top_build_prefix
++ # 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
+- .) # We are building in place.
++ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+- ac_top_srcdir=$ac_top_builddir_sub
+- ac_abs_top_srcdir=$ac_pwd ;;
+- [\\/]* | ?:[\\/]* ) # Absolute name.
++ 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
+- ac_abs_top_srcdir=$srcdir ;;
+- *) # Relative name.
+- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_build_prefix$srcdir
+- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+-esac
+-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+-
+- cd "$ac_dir" || { ac_status=$?; continue; }
+- # Check for guested 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
++ ac_top_srcdir=$srcdir ;;
++ *) # Relative path.
++ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_builddir$srcdir ;;
++esac
++
++# Do not use `cd foo && pwd` to compute absolute paths, because
++# the directories may not exist.
++case `pwd` in
++.) ac_abs_builddir="$ac_dir";;
++*)
++ case "$ac_dir" in
++ .) ac_abs_builddir=`pwd`;;
++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
++ *) ac_abs_builddir=`pwd`/"$ac_dir";;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_builddir=${ac_top_builddir}.;;
++*)
++ case ${ac_top_builddir}. in
++ .) ac_abs_top_builddir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_srcdir=$ac_srcdir;;
++*)
++ case $ac_srcdir in
++ .) ac_abs_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_srcdir=$ac_top_srcdir;;
++*)
++ case $ac_top_srcdir in
++ .) ac_abs_top_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
++ esac;;
++esac
++
++ 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 || ac_status=$?
+- cd "$ac_pwd" || { ac_status=$?; break; }
++ fi
++ cd $ac_popdir
+ done
+ fi
+
+-test -n "$ac_init_help" && exit $ac_status
++test -n "$ac_init_help" && exit 0
+ if $ac_init_version; then
+ cat <<\_ACEOF
+ linphone configure 1.5.0
+-generated by GNU Autoconf 2.60a
++generated by GNU Autoconf 2.59
+
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
++Copyright (C) 2003 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
++ exit 0
+ fi
+-cat >config.log <<_ACEOF
++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 linphone $as_me 1.5.0, which was
+-generated by GNU Autoconf 2.60a. Invocation command line was
++generated by GNU Autoconf 2.59. Invocation command line was
+
+ $ $0 $@
+
+ _ACEOF
+-exec 5>>config.log
+ {
+ cat <<_ASUNAME
+ ## --------- ##
+@@ -1712,7 +1216,7 @@
+ /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`
+-/usr/bin/hostinfo = `(/usr/bin/hostinfo) 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`
+@@ -1726,7 +1230,6 @@
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+ done
+-IFS=$as_save_IFS
+
+ } >&5
+
+@@ -1748,6 +1251,7 @@
+ ac_configure_args=
+ ac_configure_args0=
+ ac_configure_args1=
++ac_sep=
+ ac_must_keep_next=false
+ for ac_pass in 1 2
+ do
+@@ -1758,7 +1262,7 @@
+ -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
+@@ -1780,7 +1284,9 @@
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+- ac_configure_args="$ac_configure_args '$ac_arg'"
++ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
++ # Get rid of the leading space.
++ ac_sep=" "
+ ;;
+ esac
+ done
+@@ -1791,8 +1297,8 @@
+ # 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: Use '\'' to represent an apostrophe within the trap.
+-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
++# 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.
+ {
+@@ -1805,34 +1311,20 @@
+ _ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+-(
+- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+- eval ac_val=\$$ac_var
+- case $ac_val in #(
+- *${as_nl}*)
+- case $ac_var in #(
+- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+- esac
+- case $ac_var in #(
+- _ | IFS | as_nl) ;; #(
+- *) $as_unset $ac_var ;;
+- esac ;;
+- esac
+- done
++{
+ (set) 2>&1 |
+- case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+- *${as_nl}ac_space=\ *)
++ 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"
+- ;; #(
++ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
++ ;;
+ *)
+- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
++ sed -n \
++ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+- esac |
+- sort
+-)
++ esac;
++}
+ echo
+
+ cat <<\_ASBOX
+@@ -1843,28 +1335,22 @@
+ echo
+ for ac_var in $ac_subst_vars
+ do
+- eval ac_val=\$$ac_var
+- case $ac_val in
+- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+- esac
+- echo "$ac_var='\''$ac_val'\''"
++ eval ac_val=$`echo $ac_var`
++ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+-## ------------------- ##
+-## File substitutions. ##
+-## ------------------- ##
++## ------------- ##
++## Output files. ##
++## ------------- ##
+ _ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+- eval ac_val=\$$ac_var
+- case $ac_val in
+- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+- esac
+- echo "$ac_var='\''$ac_val'\''"
++ eval ac_val=$`echo $ac_var`
++ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+ fi
+@@ -1876,24 +1362,26 @@
+ ## ----------- ##
+ _ASBOX
+ echo
+- cat confdefs.h
++ 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.conftest.* &&
+- rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
++ rm -f core *.core &&
++ rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+-' 0
++ ' 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 -f -r conftest* confdefs.h
++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.
+
+@@ -1924,17 +1412,14 @@
+
+ # Let the site file select an alternate cache file if it wants to.
+ # Prefer explicitly selected file to automatically selected ones.
+-if test -n "$CONFIG_SITE"; then
+- set x "$CONFIG_SITE"
+-elif test "x$prefix" != xNONE; then
+- set x "$prefix/share/config.site" "$prefix/etc/config.site"
+-else
+- set x "$ac_default_prefix/share/config.site" \
+- "$ac_default_prefix/etc/config.site"
++if test -z "$CONFIG_SITE"; then
++ if test "x$prefix" != xNONE; then
++ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
++ else
++ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
++ fi
+ fi
+-shift
+-for ac_site_file
+-do
++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;}
+@@ -1950,8 +1435,8 @@
+ { 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";;
++ [\\/]* | ?:[\\/]* ) . $cache_file;;
++ *) . ./$cache_file;;
+ esac
+ fi
+ else
+@@ -1963,11 +1448,12 @@
+ # Check that the precious variables saved in the cache have kept the same
+ # value.
+ ac_cache_corrupted=false
+-for ac_var in $ac_precious_vars; do
++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
++ 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
+@@ -1992,7 +1478,8 @@
+ # 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=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+@@ -2009,6 +1496,12 @@
+ { (exit 1); exit 1; }; }
+ 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
++
+
+
+
+@@ -2033,11 +1526,6 @@
+
+
+
+-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
+
+
+
+@@ -2062,35 +1550,29 @@
+
+ am__api_version="1.9"
+ ac_aux_dir=
+-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+- if test -f "$ac_dir/install-sh"; then
++for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
++ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+- elif test -f "$ac_dir/install.sh"; then
++ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+- elif test -f "$ac_dir/shtool"; then
++ 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;}
++ { { 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; }; }
+ fi
+-
+-# These three variables are undocumented and unsupported,
+-# and are intended to be withdrawn in a future Autoconf release.
+-# They can cause serious problems if a builder's source tree is in a directory
+-# whose full name contains unusual characters.
+-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+-
++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.
+
+ # Find a good install program. We prefer a C program (faster),
+ # so one script is as good as another. But avoid the broken or
+@@ -2105,8 +1587,8 @@
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./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 "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+ if test -z "$INSTALL"; then
+ if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -2128,7 +1610,7 @@
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; }; then
++ 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.
+@@ -2147,22 +1629,21 @@
+ ;;
+ esac
+ done
+-IFS=$as_save_IFS
+
+
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+- # As a last resort, use the slow shell script. Don't cache a
+- # value for INSTALL within a source directory, because that will
++ # 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 value is a relative name.
++ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+ fi
+-{ echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6; }
++echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+@@ -2172,8 +1653,8 @@
+
+ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+-{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether build environment is sane" >&5
++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+ # Just in case
+ sleep 1
+ echo timestamp > conftest.file
+@@ -2215,20 +1696,20 @@
+ Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-{ echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ test "$program_prefix" != NONE &&
+- program_transform_name="s&^&$program_prefix&;$program_transform_name"
++ program_transform_name="s,^,$program_prefix,;$program_transform_name"
+ # Use a double $ so make ignores it.
+ test "$program_suffix" != NONE &&
+- program_transform_name="s&\$&$program_suffix&;$program_transform_name"
++ program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+ # Double any \ or $. echo might interpret backslashes.
+ # By default was `s,x,x', remove it if useless.
+ cat <<\_ACEOF >conftest.sed
+ s/[\\$]/&&/g;s/;s,x,x,$//
+ _ACEOF
+ program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+-rm -f conftest.sed
++rm conftest.sed
+
+ # expand $ac_aux_dir to an absolute path
+ am_aux_dir=`cd $ac_aux_dir && pwd`
+@@ -2280,8 +1761,8 @@
+ 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; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2294,57 +1775,54 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ AWK=$ac_cv_prog_AWK
+ if test -n "$AWK"; then
+- { echo "$as_me:$LINENO: result: $AWK" >&5
+-echo "${ECHO_T}$AWK" >&6; }
++ echo "$as_me:$LINENO: result: $AWK" >&5
++echo "${ECHO_T}$AWK" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$AWK" && break
+ done
+
+-{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
+-set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
++echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
++set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
++if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.make <<\_ACEOF
+-SHELL = /bin/sh
+ all:
+- @echo '@@@%%%=$(MAKE)=@@@%%%'
++ @echo 'ac_maketemp="$(MAKE)"'
+ _ACEOF
+ # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+-case `${MAKE-make} -f conftest.make 2>/dev/null` in
+- *@@@%%%=?*=@@@%%%*)
+- eval ac_cv_prog_make_${ac_make}_set=yes;;
+- *)
+- eval ac_cv_prog_make_${ac_make}_set=no;;
+-esac
++eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
++if test -n "$ac_maketemp"; then
++ eval ac_cv_prog_make_${ac_make}_set=yes
++else
++ eval ac_cv_prog_make_${ac_make}_set=no
++fi
+ rm -f conftest.make
+ fi
+-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ SET_MAKE=
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ SET_MAKE="MAKE=${MAKE-make}"
+ fi
+
+@@ -2415,8 +1893,8 @@
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2429,34 +1907,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- { echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6; }
++ echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++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_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2469,41 +1945,27 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
++ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6; }
++ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_STRIP" = x; then
+- STRIP=":"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- STRIP=$ac_ct_STRIP
+- fi
++ STRIP=$ac_ct_STRIP
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -2518,8 +1980,8 @@
+ AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+
+-{ echo "$as_me:$LINENO: checking how to create a ustar tar archive" >&5
+-echo $ECHO_N "checking how to create a ustar tar archive... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking how to create a ustar tar archive" >&5
++echo $ECHO_N "checking how to create a ustar tar archive... $ECHO_C" >&6
+ # Loop over all known methods to create a tar archive until one works.
+ _am_tools='gnutar plaintar pax cpio none'
+ _am_tools=${am_cv_prog_tar_ustar-$_am_tools}
+@@ -2597,20 +2059,20 @@
+ am_cv_prog_tar_ustar=$_am_tool
+ fi
+
+-{ echo "$as_me:$LINENO: result: $am_cv_prog_tar_ustar" >&5
+-echo "${ECHO_T}$am_cv_prog_tar_ustar" >&6; }
++echo "$as_me:$LINENO: result: $am_cv_prog_tar_ustar" >&5
++echo "${ECHO_T}$am_cv_prog_tar_ustar" >&6
+
+
+
+
+
+-ac_config_headers="$ac_config_headers config.h"
++ ac_config_headers="$ac_config_headers config.h"
+
+
+
+ DEPDIR="${am__leading_dot}deps"
+
+-ac_config_commands="$ac_config_commands depfiles"
++ ac_config_commands="$ac_config_commands depfiles"
+
+
+ am_make=${MAKE-make}
+@@ -2620,8 +2082,8 @@
+ .PHONY: am__doit
+ END
+ # If we don't find an include directive, just comment out the code.
+-{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+ am__include="#"
+ am__quote=
+ _am_result=none
+@@ -2648,15 +2110,15 @@
+ fi
+
+
+-{ echo "$as_me:$LINENO: result: $_am_result" >&5
+-echo "${ECHO_T}$_am_result" >&6; }
++echo "$as_me:$LINENO: result: $_am_result" >&5
++echo "${ECHO_T}$_am_result" >&6
+ rm -f confinc confmf
+
+-# Check whether --enable-dependency-tracking was given.
++# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
+ if test "${enable_dependency_tracking+set}" = set; then
+- enableval=$enable_dependency_tracking;
+-fi
++ enableval="$enable_dependency_tracking"
+
++fi;
+ if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+@@ -2681,8 +2143,8 @@
+ 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; }
++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
+@@ -2695,34 +2157,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ 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.
+ 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; }
++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
+@@ -2735,51 +2195,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
+ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_CC" = x; then
+- CC=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- CC=$ac_ct_CC
+- 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.
++ 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; }
++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
+@@ -2792,34 +2237,74 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ 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 "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; }
++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
+@@ -2833,7 +2318,7 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+@@ -2844,7 +2329,6 @@
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -2862,23 +2346,22 @@
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl.exe
++ 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; }
++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
+@@ -2891,38 +2374,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl.exe
++ 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; }
++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
+@@ -2935,45 +2416,29 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$ac_ct_CC" && break
+ done
+
+- if test "x$ac_ct_CC" = x; then
+- CC=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- CC=$ac_ct_CC
+- fi
++ CC=$ac_ct_CC
+ fi
+
+ fi
+@@ -2986,35 +2451,21 @@
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO: checking for C compiler version" >&5
++echo "$as_me:$LINENO:" \
++ "checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (ac_try="$ac_compiler --version >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler --version >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -v >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -v >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -V >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -V >&5") 2>&5
++{ (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); }
+@@ -3039,77 +2490,47 @@
+ # 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 file name" >&5
+-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+-#
+-# List of possible output files, starting from the most likely.
+-# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
+-# only as a last resort. b.out is created by i960 compilers.
+-ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
+-#
+-# The IRIX 6 linker writes into existing files which may not be
+-# executable, retaining their permissions. Remove them first so a
+-# subsequent execution test works.
+-ac_rmfiles=
+-for ac_file in $ac_files
+-do
+- case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+- * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+- esac
+-done
+-rm -f $ac_rmfiles
+-
+-if { (ac_try="$ac_link_default"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link_default") 2>&5
++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
+- # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+-# in a Makefile. We should not override ac_cv_exeext if it was cached,
+-# so that the user can short-circuit this test for compilers unknown to
+-# Autoconf.
+-for ac_file in $ac_files ''
++ # 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 | *.map | *.inf | *.o | *.obj )
++ *.$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;;
+ *.* )
+- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+- then :; else
+- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- fi
+- # We set ac_cv_exeext here because the later test for it is not
+- # safe: cross compilers may not add the suffix if given an `-o'
+- # argument, so we may need to know it at that point already.
+- # Even if this section looks crufty: it has the advantage of
+- # actually working.
++ 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
+-test "$ac_cv_exeext" = no && ac_cv_exeext=
+-
+ else
+- ac_file=''
+-fi
+-
+-{ echo "$as_me:$LINENO: result: $ac_file" >&5
+-echo "${ECHO_T}$ac_file" >&6; }
+-if test -z "$ac_file"; then
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+@@ -3121,21 +2542,19 @@
+ fi
+
+ ac_exeext=$ac_cv_exeext
++echo "$as_me:$LINENO: result: $ac_file" >&5
++echo "${ECHO_T}$ac_file" >&6
+
+-# Check that the compiler produces executables we can run. If not, either
++# 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; }
++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'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -3154,27 +2573,22 @@
+ fi
+ fi
+ fi
+-{ echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+
+ rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ ac_clean_files=$ac_clean_files_save
+-# Check that the compiler produces executables we can run. If not, either
++# 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 { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>&5
++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
+@@ -3185,8 +2599,9 @@
+ 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 | *.map | *.inf | *.o | *.obj ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
++ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+@@ -3200,14 +2615,14 @@
+ fi
+
+ rm -f conftest$ac_cv_exeext
+-{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+-echo "${ECHO_T}$ac_cv_exeext" >&6; }
++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; }
++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
+ else
+@@ -3227,20 +2642,14 @@
+ }
+ _ACEOF
+ rm -f conftest.o conftest.obj
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>&5
++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 conftest.o conftest.obj conftest.*; do
+- test -f "$ac_file" || continue;
++ 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 | *.map | *.inf ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+@@ -3258,12 +2667,12 @@
+
+ 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; }
++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; }
++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
+@@ -3286,36 +2695,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -3324,139 +2721,24 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_compiler_gnu=no
++ac_compiler_gnu=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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; }
++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
+-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
++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
+ else
+- ac_save_c_werror_flag=$ac_c_werror_flag
+- ac_c_werror_flag=yes
+- ac_cv_prog_cc_g=no
+- CFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* 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 { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_g=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- CFLAGS=""
+- cat >conftest.$ac_ext <<_ACEOF
+-/* 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 { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- ac_c_werror_flag=$ac_save_c_werror_flag
+- CFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -3472,36 +2754,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -3510,20 +2780,12 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ac_cv_prog_cc_g=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+- ac_c_werror_flag=$ac_save_c_werror_flag
++rm -f conftest.err 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 "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+@@ -3539,12 +2801,12 @@
+ CFLAGS=
+ fi
+ fi
+-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+-if test "${ac_cv_prog_cc_c89+set}" = set; then
++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_c89=no
++ ac_cv_prog_cc_stdc=no
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -3578,17 +2840,12 @@
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std is added to get
++ as 'x'. The following induces an error, until -std1 is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std. */
++ that's true only with -std1. */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+- inside strings and character constants. */
+-#define FOO(x) 'x'
+-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+-
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+@@ -3603,91 +2860,222 @@
+ return 0;
+ }
+ _ACEOF
+-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++# 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 { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_c89=$ac_arg
++ 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 core conftest.err conftest.$ac_objext
+- test "x$ac_cv_prog_cc_c89" != "xno" && break
++rm -f conftest.err conftest.$ac_objext
+ done
+-rm -f conftest.$ac_ext
++rm -f conftest.$ac_ext conftest.$ac_objext
+ CC=$ac_save_CC
+
+ fi
+-# AC_CACHE_VAL
+-case "x$ac_cv_prog_cc_c89" in
+- x)
+- { echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6; } ;;
+- xno)
+- { echo "$as_me:$LINENO: result: unsupported" >&5
+-echo "${ECHO_T}unsupported" >&6; } ;;
++
++case "x$ac_cv_prog_cc_stdc" in
++ x|xno)
++ echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6 ;;
+ *)
+- CC="$CC $ac_cv_prog_cc_c89"
+- { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&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
+
+-
+-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
+-
+-depcc="$CC" am_compiler_list=
+-
+-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+- # We make a subdir and do the tests there. Otherwise we can end up
+- # making bogus files that we don't know about and never remove. For
+- # instance it was reported that on HP-UX the gcc test will end up
++# 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>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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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 \
++ '' \
++ '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
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_declaration
++#include <stdlib.h>
++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>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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++continue
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++ cat >conftest.$ac_ext <<_ACEOF
++/* 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>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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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.err 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.err 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
++
++depcc="$CC" am_compiler_list=
++
++echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
++if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
++ # We make a subdir and do the tests there. Otherwise we can end up
++ # making bogus files that we don't know about and never remove. For
++ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+@@ -3769,8 +3157,8 @@
+ fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
++echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+ CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+@@ -3787,14 +3175,13 @@
+
+
+
+-
+- { echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5
+-echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6; }
+-if test "${ac_cv_lib_cposix_strerror+set}" = set; then
++echo "$as_me:$LINENO: checking for library containing strerror" >&5
++echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6
++if test "${ac_cv_search_strerror+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lcposix $LIBS"
++ ac_func_search_save_LIBS=$LIBS
++ac_cv_search_strerror=no
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -3802,74 +3189,117 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 strerror ();
+ int
+ main ()
+ {
+-return strerror ();
++strerror ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_lib_cposix_strerror=yes
++ ac_cv_search_strerror="none required"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_cposix_strerror=no
+ fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++if test "$ac_cv_search_strerror" = no; then
++ for ac_lib in cposix; do
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++/* 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 strerror ();
++int
++main ()
++{
++strerror ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_search_strerror="-l$ac_lib"
++break
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++fi
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
++ done
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5
+-echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6; }
+-if test $ac_cv_lib_cposix_strerror = yes; then
+- LIBS="$LIBS -lcposix"
++LIBS=$ac_func_search_save_LIBS
+ fi
++echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
++echo "${ECHO_T}$ac_cv_search_strerror" >&6
++if test "$ac_cv_search_strerror" != no; then
++ test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS"
+
+-
++fi
+
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+@@ -3879,8 +3309,8 @@
+ 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; }
++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
+@@ -3893,34 +3323,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ 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.
+ 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; }
++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
+@@ -3933,51 +3361,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
+ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_CC" = x; then
+- CC=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- CC=$ac_ct_CC
+- 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.
++ 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; }
++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
+@@ -3990,34 +3403,74 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ 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 "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; }
++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
+@@ -4031,7 +3484,7 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+@@ -4042,7 +3495,6 @@
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -4060,23 +3512,22 @@
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl.exe
++ 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; }
++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
+@@ -4089,38 +3540,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl.exe
++ 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; }
++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
+@@ -4133,45 +3582,29 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$ac_ct_CC" && break
+ done
+
+- if test "x$ac_ct_CC" = x; then
+- CC=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- CC=$ac_ct_CC
+- fi
++ CC=$ac_ct_CC
+ fi
+
+ fi
+@@ -4184,41 +3617,27 @@
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO: checking for C compiler version" >&5
++echo "$as_me:$LINENO:" \
++ "checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (ac_try="$ac_compiler --version >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler --version >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -v >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -v >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -V >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -V >&5") 2>&5
++{ (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); }
+
+-{ 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; }
++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
+@@ -4241,36 +3660,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -4279,28 +3686,24 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_compiler_gnu=no
++ac_compiler_gnu=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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; }
++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
+-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
++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
+ else
+- ac_save_c_werror_flag=$ac_c_werror_flag
+- ac_c_werror_flag=yes
+- ac_cv_prog_cc_g=no
+- CFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -4316,36 +3719,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -4354,278 +3745,285 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- CFLAGS=""
+- cat >conftest.$ac_ext <<_ACEOF
++ac_cv_prog_cc_g=no
++fi
++rm -f conftest.err 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
++if test "$ac_test_CFLAGS" = set; then
++ CFLAGS=$ac_save_CFLAGS
++elif test $ac_cv_prog_cc_g = yes; then
++ if test "$GCC" = yes; then
++ CFLAGS="-g -O2"
++ else
++ CFLAGS="-g"
++ fi
++else
++ if test "$GCC" = yes; then
++ CFLAGS="-O2"
++ else
++ 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
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-
+-int
+-main ()
++#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;
++}
++
++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
++ function prototypes and stuff, but not '\xHH' hex character constants.
++ These don't provoke an error unfortunately, instead are silently treated
++ as 'x'. The following induces an error, until -std1 is added to get
++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
++ array size at least. It's necessary to write '\x00'==0 to get something
++ that's true only with -std1. */
++int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
++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
+-rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++# 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>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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+
+- ac_c_werror_flag=$ac_save_c_werror_flag
+- CFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
++fi
++rm -f conftest.err 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>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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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 \
++ '' \
++ '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
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-
++$ac_declaration
++#include <stdlib.h>
+ int
+ main ()
+ {
+-
++exit (42);
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_g=yes
++ :
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+- ac_c_werror_flag=$ac_save_c_werror_flag
+-fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+-if test "$ac_test_CFLAGS" = set; then
+- CFLAGS=$ac_save_CFLAGS
+-elif test $ac_cv_prog_cc_g = yes; then
+- if test "$GCC" = yes; then
+- CFLAGS="-g -O2"
+- else
+- CFLAGS="-g"
+- fi
+-else
+- if test "$GCC" = yes; then
+- CFLAGS="-O2"
+- else
+- CFLAGS=
+- fi
++continue
+ fi
+-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+-if test "${ac_cv_prog_cc_c89+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_cv_prog_cc_c89=no
+-ac_save_CC=$CC
+-cat >conftest.$ac_ext <<_ACEOF
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++ cat >conftest.$ac_ext <<_ACEOF
+ /* 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;
+-}
+-
+-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+- function prototypes and stuff, but not '\xHH' hex character constants.
+- These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std is added to get
+- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+- array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std. */
+-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+-
+-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+- inside strings and character constants. */
+-#define FOO(x) 'x'
+-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+-
+-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;
++$ac_declaration
+ int
+ main ()
+ {
+-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
++exit (42);
+ ;
+ return 0;
+ }
+ _ACEOF
+-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+-do
+- CC="$ac_save_CC $ac_arg"
+- rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_c89=$ac_arg
++ break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext
+- test "x$ac_cv_prog_cc_c89" != "xno" && break
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+-rm -f conftest.$ac_ext
+-CC=$ac_save_CC
+-
++rm -f conftest*
++if test -n "$ac_declaration"; then
++ echo '#ifdef __cplusplus' >>confdefs.h
++ echo $ac_declaration >>confdefs.h
++ echo '#endif' >>confdefs.h
+ fi
+-# AC_CACHE_VAL
+-case "x$ac_cv_prog_cc_c89" in
+- x)
+- { echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6; } ;;
+- xno)
+- { echo "$as_me:$LINENO: result: unsupported" >&5
+-echo "${ECHO_T}unsupported" >&6; } ;;
+- *)
+- CC="$CC $ac_cv_prog_cc_c89"
+- { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+-esac
+
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -4634,8 +4032,8 @@
+
+ depcc="$CC" am_compiler_list=
+
+-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+ if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4724,8 +4122,8 @@
+ fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
++echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+ CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+@@ -4741,8 +4139,8 @@
+ fi
+
+
+-{ echo "$as_me:$LINENO: checking for inline" >&5
+-echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for inline" >&5
++echo $ECHO_N "checking for inline... $ECHO_C" >&6
+ if test "${ac_cv_c_inline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4762,54 +4160,39 @@
+
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_c_inline=$ac_kw
++ ac_cv_c_inline=$ac_kw; break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+- test "$ac_cv_c_inline" != no && break
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+-echo "${ECHO_T}$ac_cv_c_inline" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
++echo "${ECHO_T}$ac_cv_c_inline" >&6
+
+
+ case $ac_cv_c_inline in
+@@ -4835,8 +4218,8 @@
+ 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; }
++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
+@@ -4849,34 +4232,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ 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.
+ 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; }
++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
+@@ -4889,51 +4270,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
+ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_CC" = x; then
+- CC=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- CC=$ac_ct_CC
+- 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.
++ 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; }
++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
+@@ -4946,34 +4312,74 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ 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 "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; }
++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
+@@ -4987,7 +4393,7 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+@@ -4998,7 +4404,6 @@
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -5016,23 +4421,22 @@
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl.exe
++ 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; }
++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
+@@ -5045,38 +4449,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl.exe
++ 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; }
++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
+@@ -5089,45 +4491,29 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$ac_ct_CC" && break
+ done
+
+- if test "x$ac_ct_CC" = x; then
+- CC=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- CC=$ac_ct_CC
+- fi
++ CC=$ac_ct_CC
+ fi
+
+ fi
+@@ -5140,41 +4526,27 @@
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO: checking for C compiler version" >&5
++echo "$as_me:$LINENO:" \
++ "checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (ac_try="$ac_compiler --version >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler --version >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -v >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -v >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -V >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -V >&5") 2>&5
++{ (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); }
+
+-{ 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; }
++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
+@@ -5197,36 +4569,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5235,28 +4595,24 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_compiler_gnu=no
++ac_compiler_gnu=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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; }
++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
+-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
++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
+ else
+- ac_save_c_werror_flag=$ac_c_werror_flag
+- ac_c_werror_flag=yes
+- ac_cv_prog_cc_g=no
+- CFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -5272,36 +4628,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5310,278 +4654,285 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- CFLAGS=""
+- cat >conftest.$ac_ext <<_ACEOF
++ac_cv_prog_cc_g=no
++fi
++rm -f conftest.err 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
++if test "$ac_test_CFLAGS" = set; then
++ CFLAGS=$ac_save_CFLAGS
++elif test $ac_cv_prog_cc_g = yes; then
++ if test "$GCC" = yes; then
++ CFLAGS="-g -O2"
++ else
++ CFLAGS="-g"
++ fi
++else
++ if test "$GCC" = yes; then
++ CFLAGS="-O2"
++ else
++ 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
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-
+-int
+-main ()
+-{
+-
+- ;
++#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;
++}
++
++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
++ function prototypes and stuff, but not '\xHH' hex character constants.
++ These don't provoke an error unfortunately, instead are silently treated
++ as 'x'. The following induces an error, until -std1 is added to get
++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
++ array size at least. It's necessary to write '\x00'==0 to get something
++ that's true only with -std1. */
++int osf4_cc_array ['\x00' == 0 ? 1 : -1];
++
++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
+-rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++# 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>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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+
+- ac_c_werror_flag=$ac_save_c_werror_flag
+- CFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
++fi
++rm -f conftest.err 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>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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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 \
++ '' \
++ '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
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-
++$ac_declaration
++#include <stdlib.h>
+ int
+ main ()
+ {
+-
++exit (42);
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_g=yes
++ :
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+- ac_c_werror_flag=$ac_save_c_werror_flag
+-fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+-if test "$ac_test_CFLAGS" = set; then
+- CFLAGS=$ac_save_CFLAGS
+-elif test $ac_cv_prog_cc_g = yes; then
+- if test "$GCC" = yes; then
+- CFLAGS="-g -O2"
+- else
+- CFLAGS="-g"
+- fi
+-else
+- if test "$GCC" = yes; then
+- CFLAGS="-O2"
+- else
+- CFLAGS=
+- fi
++continue
+ fi
+-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+-if test "${ac_cv_prog_cc_c89+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_cv_prog_cc_c89=no
+-ac_save_CC=$CC
+-cat >conftest.$ac_ext <<_ACEOF
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++ cat >conftest.$ac_ext <<_ACEOF
+ /* 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;
+-}
+-
+-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+- function prototypes and stuff, but not '\xHH' hex character constants.
+- These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std is added to get
+- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+- array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std. */
+-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+-
+-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+- inside strings and character constants. */
+-#define FOO(x) 'x'
+-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+-
+-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;
++$ac_declaration
+ int
+ main ()
+ {
+-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
++exit (42);
+ ;
+ return 0;
+ }
+ _ACEOF
+-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+-do
+- CC="$ac_save_CC $ac_arg"
+- rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_c89=$ac_arg
++ break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext
+- test "x$ac_cv_prog_cc_c89" != "xno" && break
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+-rm -f conftest.$ac_ext
+-CC=$ac_save_CC
+-
++rm -f conftest*
++if test -n "$ac_declaration"; then
++ echo '#ifdef __cplusplus' >>confdefs.h
++ echo $ac_declaration >>confdefs.h
++ echo '#endif' >>confdefs.h
+ fi
+-# AC_CACHE_VAL
+-case "x$ac_cv_prog_cc_c89" in
+- x)
+- { echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6; } ;;
+- xno)
+- { echo "$as_me:$LINENO: result: unsupported" >&5
+-echo "${ECHO_T}unsupported" >&6; } ;;
+- *)
+- CC="$CC $ac_cv_prog_cc_c89"
+- { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+-esac
+
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -5590,8 +4941,8 @@
+
+ depcc="$CC" am_compiler_list=
+
+-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+ if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5680,8 +5031,8 @@
+ fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
++echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+ CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+@@ -5705,8 +5056,8 @@
+ 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 "$as_me:$LINENO: checking how to run the C preprocessor" >&5
++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+ # On Suns, sometimes $CPP names a directory.
+ if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+@@ -5740,13 +5091,8 @@
+ #endif
+ Syntax error
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -5771,10 +5117,9 @@
+ # Broken: fails on valid input.
+ continue
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether nonexistent headers
++ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5784,13 +5129,8 @@
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -5817,7 +5157,6 @@
+ ac_preproc_ok=:
+ break
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -5835,8 +5174,8 @@
+ else
+ ac_cv_prog_CPP=$CPP
+ fi
+-{ echo "$as_me:$LINENO: result: $CPP" >&5
+-echo "${ECHO_T}$CPP" >&6; }
++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
+@@ -5859,13 +5198,8 @@
+ #endif
+ Syntax error
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -5890,10 +5224,9 @@
+ # Broken: fails on valid input.
+ continue
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether nonexistent headers
++ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5903,13 +5236,8 @@
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -5936,7 +5264,6 @@
+ ac_preproc_ok=:
+ break
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -5959,170 +5286,23 @@
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+-{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+-echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
+-if test "${ac_cv_path_GREP+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- # Extract the first word of "grep ggrep" to use in msg output
+-if test -z "$GREP"; then
+-set dummy grep ggrep; ac_prog_name=$2
+-if test "${ac_cv_path_GREP+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_path_GREP_found=false
+-# Loop through the user's path and test for each of PROGNAME-LIST
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_prog in grep ggrep; do
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+- { test -f "$ac_path_GREP" && $as_executable_p "$ac_path_GREP"; } || continue
+- # Check for GNU ac_path_GREP and select it if it is found.
+- # Check for GNU $ac_path_GREP
+-case `"$ac_path_GREP" --version 2>&1` in
+-*GNU*)
+- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+-*)
+- ac_count=0
+- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+- while :
+- do
+- cat "conftest.in" "conftest.in" >"conftest.tmp"
+- mv "conftest.tmp" "conftest.in"
+- cp "conftest.in" "conftest.nl"
+- echo 'GREP' >> "conftest.nl"
+- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+- ac_count=`expr $ac_count + 1`
+- if test $ac_count -gt ${ac_path_GREP_max-0}; then
+- # Best one so far, save it but keep looking for a better one
+- ac_cv_path_GREP="$ac_path_GREP"
+- ac_path_GREP_max=$ac_count
+- fi
+- # 10*(2^10) chars as input seems more than enough
+- test $ac_count -gt 10 && break
+- done
+- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+-esac
+-
+-
+- $ac_path_GREP_found && break 3
+- done
+-done
+-
+-done
+-IFS=$as_save_IFS
+-
+-
+-fi
+-
+-GREP="$ac_cv_path_GREP"
+-if test -z "$GREP"; then
+- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+- { (exit 1); exit 1; }; }
+-fi
+-
+-else
+- ac_cv_path_GREP=$GREP
+-fi
+-
+-
+-fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+-echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+- GREP="$ac_cv_path_GREP"
+-
+-
+-{ echo "$as_me:$LINENO: checking for egrep" >&5
+-echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
+-if test "${ac_cv_path_EGREP+set}" = set; then
++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_path_EGREP="$GREP -E"
+- else
+- # Extract the first word of "egrep" to use in msg output
+-if test -z "$EGREP"; then
+-set dummy egrep; ac_prog_name=$2
+-if test "${ac_cv_path_EGREP+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_path_EGREP_found=false
+-# Loop through the user's path and test for each of PROGNAME-LIST
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_prog in egrep; do
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+- { test -f "$ac_path_EGREP" && $as_executable_p "$ac_path_EGREP"; } || continue
+- # Check for GNU ac_path_EGREP and select it if it is found.
+- # Check for GNU $ac_path_EGREP
+-case `"$ac_path_EGREP" --version 2>&1` in
+-*GNU*)
+- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+-*)
+- ac_count=0
+- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+- while :
+- do
+- cat "conftest.in" "conftest.in" >"conftest.tmp"
+- mv "conftest.tmp" "conftest.in"
+- cp "conftest.in" "conftest.nl"
+- echo 'EGREP' >> "conftest.nl"
+- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+- ac_count=`expr $ac_count + 1`
+- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+- # Best one so far, save it but keep looking for a better one
+- ac_cv_path_EGREP="$ac_path_EGREP"
+- ac_path_EGREP_max=$ac_count
++ 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
+- # 10*(2^10) chars as input seems more than enough
+- test $ac_count -gt 10 && break
+- done
+- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+-esac
+-
+-
+- $ac_path_EGREP_found && break 3
+- done
+-done
+-
+-done
+-IFS=$as_save_IFS
+-
+-
+ fi
+-
+-EGREP="$ac_cv_path_EGREP"
+-if test -z "$EGREP"; then
+- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+- { (exit 1); exit 1; }; }
+-fi
+-
+-else
+- ac_cv_path_EGREP=$EGREP
+-fi
+-
+-
+- fi
+-fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+-echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+- EGREP="$ac_cv_path_EGREP"
++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; }
++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
+@@ -6146,36 +5326,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -6184,10 +5352,9 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_header_stdc=no
++ac_cv_header_stdc=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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.
+@@ -6243,7 +5410,6 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ctype.h>
+-#include <stdlib.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+@@ -6263,27 +5429,18 @@
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+- return 2;
+- return 0;
++ exit(2);
++ exit (0);
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>&5
++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'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -6296,14 +5453,12 @@
+ ( exit $ac_status )
+ ac_cv_header_stdc=no
+ fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f 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; }
++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
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -6313,30 +5468,25 @@
+ fi
+
+
+-case "$am__api_version" in
+- 1.01234)
+- { { echo "$as_me:$LINENO: error: Automake 1.5 or newer is required to use intltool" >&5
+-echo "$as_me: error: Automake 1.5 or newer is required to use intltool" >&2;}
+- { (exit 1); exit 1; }; }
+- ;;
+- *)
+- ;;
+-esac
+
+ if test -n ""; then
+- { echo "$as_me:$LINENO: checking for intltool >= " >&5
+-echo $ECHO_N "checking for intltool >= ... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for intltool >= " >&5
++echo $ECHO_N "checking for intltool >= ... $ECHO_C" >&6
+
+- INTLTOOL_REQUIRED_VERSION_AS_INT=`echo | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+- INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { print $ 2; }' ${ac_aux_dir}/intltool-update.in`
+- INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($ 2, VERSION, "."); print VERSION[1] * 1000 + VERSION[2] * 100 + VERSION[3];}' ${ac_aux_dir}/intltool-update.in`
+-
+- { echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found" >&5
+-echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found" >&6; }
+- test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
+- { { echo "$as_me:$LINENO: error: Your intltool is too old. You need intltool or later." >&5
+-echo "$as_me: error: Your intltool is too old. You need intltool or later." >&2;}
+- { (exit 1); exit 1; }; }
++ INTLTOOL_REQUIRED_VERSION_AS_INT=`echo | awk -F. '{ printf "%d", $1 * 100 + $2; }'`
++ INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $2; }' < ${ac_aux_dir}/intltool-update.in`
++
++ INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($2, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < ${ac_aux_dir}/intltool-update.in`
++
++
++ if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
++ echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found" >&5
++echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found" >&6
++ else
++ echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found. Your intltool is too old. You need intltool or later." >&5
++echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found. Your intltool is too old. You need intltool or later." >&6
++ exit 1
++ fi
+ fi
+
+ INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+@@ -6350,15 +5500,11 @@
+ INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+- INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@'
+ INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+- INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+-
+-
+
+
+
+@@ -6378,17 +5524,19 @@
+
+
+ # Use the tools built into the package, not the ones that are installed.
+-INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
+
++INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
+ INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
+-
+ INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
+
+
++
++
++
+ # Extract the first word of "perl", so it can be a program name with args.
+ set dummy perl; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_path_INTLTOOL_PERL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6403,28 +5551,27 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ ;;
+ esac
+ fi
+ INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL
++
+ if test -n "$INTLTOOL_PERL"; then
+- { echo "$as_me:$LINENO: result: $INTLTOOL_PERL" >&5
+-echo "${ECHO_T}$INTLTOOL_PERL" >&6; }
++ echo "$as_me:$LINENO: result: $INTLTOOL_PERL" >&5
++echo "${ECHO_T}$INTLTOOL_PERL" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ if test -z "$INTLTOOL_PERL"; then
+ { { echo "$as_me:$LINENO: error: perl not found; required for intltool" >&5
+ echo "$as_me: error: perl not found; required for intltool" >&2;}
+@@ -6436,11 +5583,11 @@
+ { (exit 1); exit 1; }; }
+ fi
+ if test "x" != "xno-xml"; then
+- { echo "$as_me:$LINENO: checking for XML::Parser" >&5
+-echo $ECHO_N "checking for XML::Parser... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for XML::Parser" >&5
++echo $ECHO_N "checking for XML::Parser... $ECHO_C" >&6
+ if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+- { echo "$as_me:$LINENO: result: ok" >&5
+-echo "${ECHO_T}ok" >&6; }
++ echo "$as_me:$LINENO: result: ok" >&5
++echo "${ECHO_T}ok" >&6
+ else
+ { { echo "$as_me:$LINENO: error: XML::Parser perl module is required for intltool" >&5
+ echo "$as_me: error: XML::Parser perl module is required for intltool" >&2;}
+@@ -6448,184 +5595,24 @@
+ fi
+ fi
+
+-# Extract the first word of "iconv", so it can be a program name with args.
+-set dummy iconv; 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_path_INTLTOOL_ICONV+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- case $INTLTOOL_ICONV in
+- [\\/]* | ?:[\\/]*)
+- ac_cv_path_INTLTOOL_ICONV="$INTLTOOL_ICONV" # Let the user override the test with a path.
+- ;;
+- *)
+- 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_path_INTLTOOL_ICONV="$as_dir/$ac_word$ac_exec_ext"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-IFS=$as_save_IFS
+-
+- test -z "$ac_cv_path_INTLTOOL_ICONV" && ac_cv_path_INTLTOOL_ICONV="iconv"
+- ;;
+-esac
+-fi
+-INTLTOOL_ICONV=$ac_cv_path_INTLTOOL_ICONV
+-if test -n "$INTLTOOL_ICONV"; then
+- { echo "$as_me:$LINENO: result: $INTLTOOL_ICONV" >&5
+-echo "${ECHO_T}$INTLTOOL_ICONV" >&6; }
+-else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+-fi
+-
+-
+-# Extract the first word of "msgfmt", so it can be a program name with args.
+-set dummy msgfmt; 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_path_INTLTOOL_MSGFMT+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- case $INTLTOOL_MSGFMT in
+- [\\/]* | ?:[\\/]*)
+- ac_cv_path_INTLTOOL_MSGFMT="$INTLTOOL_MSGFMT" # Let the user override the test with a path.
+- ;;
+- *)
+- 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_path_INTLTOOL_MSGFMT="$as_dir/$ac_word$ac_exec_ext"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-IFS=$as_save_IFS
+-
+- test -z "$ac_cv_path_INTLTOOL_MSGFMT" && ac_cv_path_INTLTOOL_MSGFMT="msgfmt"
+- ;;
+-esac
+-fi
+-INTLTOOL_MSGFMT=$ac_cv_path_INTLTOOL_MSGFMT
+-if test -n "$INTLTOOL_MSGFMT"; then
+- { echo "$as_me:$LINENO: result: $INTLTOOL_MSGFMT" >&5
+-echo "${ECHO_T}$INTLTOOL_MSGFMT" >&6; }
+-else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+-fi
+-
+-
+-# Extract the first word of "msgmerge", so it can be a program name with args.
+-set dummy msgmerge; 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_path_INTLTOOL_MSGMERGE+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- case $INTLTOOL_MSGMERGE in
+- [\\/]* | ?:[\\/]*)
+- ac_cv_path_INTLTOOL_MSGMERGE="$INTLTOOL_MSGMERGE" # Let the user override the test with a path.
+- ;;
+- *)
+- 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_path_INTLTOOL_MSGMERGE="$as_dir/$ac_word$ac_exec_ext"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-IFS=$as_save_IFS
+-
+- test -z "$ac_cv_path_INTLTOOL_MSGMERGE" && ac_cv_path_INTLTOOL_MSGMERGE="msgmerge"
+- ;;
+-esac
+-fi
+-INTLTOOL_MSGMERGE=$ac_cv_path_INTLTOOL_MSGMERGE
+-if test -n "$INTLTOOL_MSGMERGE"; then
+- { echo "$as_me:$LINENO: result: $INTLTOOL_MSGMERGE" >&5
+-echo "${ECHO_T}$INTLTOOL_MSGMERGE" >&6; }
+-else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+-fi
+-
+-
+-# Extract the first word of "xgettext", so it can be a program name with args.
+-set dummy xgettext; 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_path_INTLTOOL_XGETTEXT+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- case $INTLTOOL_XGETTEXT in
+- [\\/]* | ?:[\\/]*)
+- ac_cv_path_INTLTOOL_XGETTEXT="$INTLTOOL_XGETTEXT" # Let the user override the test with a path.
+- ;;
+- *)
+- 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_path_INTLTOOL_XGETTEXT="$as_dir/$ac_word$ac_exec_ext"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-IFS=$as_save_IFS
+-
+- test -z "$ac_cv_path_INTLTOOL_XGETTEXT" && ac_cv_path_INTLTOOL_XGETTEXT="xgettext"
+- ;;
+-esac
+-fi
+-INTLTOOL_XGETTEXT=$ac_cv_path_INTLTOOL_XGETTEXT
+-if test -n "$INTLTOOL_XGETTEXT"; then
+- { echo "$as_me:$LINENO: result: $INTLTOOL_XGETTEXT" >&5
+-echo "${ECHO_T}$INTLTOOL_XGETTEXT" >&6; }
+-else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+-fi
++# Remove file type tags (using []) from po/POTFILES.
+
+
+
+-# Substitute ALL_LINGUAS so we can use it in po/Makefile
+
+
+
+
++# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
+
+-ac_config_commands="$ac_config_commands intltool"
++ ac_config_commands="$ac_config_commands default-1"
+
+
+
+-# Check whether --enable-shared was given.
++# Check whether --enable-shared or --disable-shared was given.
+ if test "${enable_shared+set}" = set; then
+- enableval=$enable_shared; p=${PACKAGE-default}
++ enableval="$enable_shared"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+@@ -6644,12 +5631,12 @@
+ esac
+ else
+ enable_shared=yes
+-fi
+-
++fi;
+
+-# Check whether --enable-static was given.
++# Check whether --enable-static or --disable-static was given.
+ if test "${enable_static+set}" = set; then
+- enableval=$enable_static; p=${PACKAGE-default}
++ enableval="$enable_static"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+@@ -6668,12 +5655,12 @@
+ esac
+ else
+ enable_static=yes
+-fi
+-
++fi;
+
+-# Check whether --enable-fast-install was given.
++# Check whether --enable-fast-install or --disable-fast-install was given.
+ if test "${enable_fast_install+set}" = set; then
+- enableval=$enable_fast_install; p=${PACKAGE-default}
++ enableval="$enable_fast_install"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+@@ -6692,94 +5679,64 @@
+ esac
+ else
+ enable_fast_install=yes
+-fi
+-
++fi;
+
+ # Make sure we can run config.sub.
+-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+- { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+-echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
++$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; }
++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_build_alias=$build_alias
+-test "x$ac_build_alias" = x &&
+- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+-test "x$ac_build_alias" = x &&
++ 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=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
++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; }; }
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+-echo "${ECHO_T}$ac_cv_build" >&6; }
+-case $ac_cv_build in
+-*-*-*) ;;
+-*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+-echo "$as_me: error: invalid value of canonical build" >&2;}
+- { (exit 1); exit 1; }; };;
+-esac
++echo "$as_me:$LINENO: result: $ac_cv_build" >&5
++echo "${ECHO_T}$ac_cv_build" >&6
+ build=$ac_cv_build
+-ac_save_IFS=$IFS; IFS='-'
+-set x $ac_cv_build
+-shift
+-build_cpu=$1
+-build_vendor=$2
+-shift; shift
+-# Remember, the first character of IFS is used to create $*,
+-# except with old shells:
+-build_os=$*
+-IFS=$ac_save_IFS
+-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
++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 "$as_me:$LINENO: checking host system type" >&5
+-echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
++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
+- if test "x$host_alias" = x; then
+- ac_cv_host=$ac_cv_build
+-else
+- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
++ 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; }; }
+-fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+-echo "${ECHO_T}$ac_cv_host" >&6; }
+-case $ac_cv_host in
+-*-*-*) ;;
+-*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+-echo "$as_me: error: invalid value of canonical host" >&2;}
+- { (exit 1); exit 1; }; };;
+-esac
++echo "$as_me:$LINENO: result: $ac_cv_host" >&5
++echo "${ECHO_T}$ac_cv_host" >&6
+ host=$ac_cv_host
+-ac_save_IFS=$IFS; IFS='-'
+-set x $ac_cv_host
+-shift
+-host_cpu=$1
+-host_vendor=$2
+-shift; shift
+-# Remember, the first character of IFS is used to create $*,
+-# except with old shells:
+-host_os=$*
+-IFS=$ac_save_IFS
+-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
++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/'`
+
+
+-{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+-echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
++echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+ if test "${lt_cv_path_SED+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6803,7 +5760,7 @@
+ # Add /usr/xpg4/bin/sed as it is typically found on Solaris
+ # along with /bin/sed that truncates output.
+ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+- test ! -f $lt_ac_sed && continue
++ test ! -f $lt_ac_sed && break
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+@@ -6828,26 +5785,26 @@
+ fi
+ done
+ done
++SED=$lt_cv_path_SED
+
+ fi
+
+-SED=$lt_cv_path_SED
+-{ echo "$as_me:$LINENO: result: $SED" >&5
+-echo "${ECHO_T}$SED" >&6; }
++echo "$as_me:$LINENO: result: $SED" >&5
++echo "${ECHO_T}$SED" >&6
+
+
+-# Check whether --with-gnu-ld was given.
++# Check whether --with-gnu-ld or --without-gnu-ld was given.
+ if test "${with_gnu_ld+set}" = set; then
+- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
++ withval="$with_gnu_ld"
++ test "$withval" = no || with_gnu_ld=yes
+ else
+ with_gnu_ld=no
+-fi
+-
++fi;
+ ac_prog=ld
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+- { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+@@ -6876,11 +5833,11 @@
+ ;;
+ esac
+ elif test "$with_gnu_ld" = yes; then
+- { echo "$as_me:$LINENO: checking for GNU ld" >&5
+-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for GNU ld" >&5
++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+ else
+- { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+ fi
+ if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -6893,7 +5850,7 @@
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+- # but apparently some variants of GNU ld only accept -v.
++ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+@@ -6913,21 +5870,21 @@
+
+ LD="$lt_cv_path_LD"
+ if test -n "$LD"; then
+- { echo "$as_me:$LINENO: result: $LD" >&5
+-echo "${ECHO_T}$LD" >&6; }
++ echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+ test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+ echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+-{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+ if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- # I'd rather use --version here, but apparently some GNU lds only accept -v.
++ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+ case `$LD -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+@@ -6937,38 +5894,29 @@
+ ;;
+ esac
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+ with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+-{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+ if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ lt_cv_ld_reload_flag='-r'
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+ reload_flag=$lt_cv_ld_reload_flag
+ case $reload_flag in
+ "" | " "*) ;;
+ *) reload_flag=" $reload_flag" ;;
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+-case $host_os in
+- darwin*)
+- if test "$GCC" = yes; then
+- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+- else
+- reload_cmds='$LD$reload_flag -o $output$reload_objs'
+- fi
+- ;;
+-esac
+
+-{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+ if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6976,63 +5924,56 @@
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+ else
+- lt_nm_to_check="${ac_tool_prefix}nm"
+- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+- lt_nm_to_check="$lt_nm_to_check nm"
+- fi
+- for lt_tmp_nm in $lt_nm_to_check; do
+- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+- IFS="$lt_save_ifs"
+- test -z "$ac_dir" && ac_dir=.
+- tmp_nm="$ac_dir/$lt_tmp_nm"
+- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+- # Check to see if the nm accepts a BSD-compat flag.
+- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+- # nm: unknown option "B" ignored
+- # Tru64's nm complains that /dev/null is an invalid object file
+- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+- */dev/null* | *'Invalid file or object type'*)
+- lt_cv_path_NM="$tmp_nm -B"
++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
++ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
++ IFS="$lt_save_ifs"
++ test -z "$ac_dir" && ac_dir=.
++ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
++ # Check to see if the nm accepts a BSD-compat flag.
++ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
++ # nm: unknown option "B" ignored
++ # Tru64's nm complains that /dev/null is an invalid object file
++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
++ */dev/null* | *'Invalid file or object type'*)
++ lt_cv_path_NM="$tmp_nm -B"
++ break
++ ;;
++ *)
++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
++ */dev/null*)
++ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+- */dev/null*)
+- lt_cv_path_NM="$tmp_nm -p"
+- break
+- ;;
+- *)
+- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+- continue # so that we can try to find one that supports BSD flags
+- ;;
+- esac
++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
++ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+- fi
+- done
+- IFS="$lt_save_ifs"
++ esac
++ fi
+ done
++ IFS="$lt_save_ifs"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+ fi
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+-echo "${ECHO_T}$lt_cv_path_NM" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
++echo "${ECHO_T}$lt_cv_path_NM" >&6
+ NM="$lt_cv_path_NM"
+
+-{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
+-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether ln -s works" >&5
++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+ LN_S=$as_ln_s
+ if test "$LN_S" = "ln -s"; then
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ else
+- { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+-echo "${ECHO_T}no, using $LN_S" >&6; }
++ echo "$as_me:$LINENO: result: no, using $LN_S" >&5
++echo "${ECHO_T}no, using $LN_S" >&6
+ fi
+
+-{ echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+-echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
++echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+ if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7059,7 +6000,7 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-bsdi[45]*)
++bsdi4*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+@@ -7082,13 +6023,13 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-freebsd* | dragonfly*)
++freebsd* | kfreebsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+@@ -7104,7 +6045,7 @@
+
+ hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+@@ -7120,11 +6061,6 @@
+ esac
+ ;;
+
+-interix3*)
+- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+@@ -7136,11 +6072,20 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
++ case $host_cpu in
++ alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*)
++ lt_cv_deplibs_check_method=pass_all ;;
++ *)
++ # glibc up to 2.1.1 does not perform some relocations on ARM
++ # this will be overridden with pass_all, but let us keep it just in case
++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
++ esac
++ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-netbsd* | netbsdelf*-gnu)
++netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+@@ -7159,10 +6104,12 @@
+ ;;
+
+ openbsd*)
++ lt_cv_file_magic_cmd=/usr/bin/file
++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+ else
+- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
++ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+ fi
+ ;;
+
+@@ -7170,11 +6117,15 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++sco3.2v5*)
++ lt_cv_deplibs_check_method=pass_all
++ ;;
++
+ solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+@@ -7195,20 +6146,17 @@
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+- pc)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+ esac
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
++sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -7219,17 +6167,14 @@
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+
+-# Check whether --enable-libtool-lock was given.
++# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then
+- enableval=$enable_libtool_lock;
+-fi
++ enableval="$enable_libtool_lock"
+
++fi;
+ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+ # Some flags need to be propagated to the compiler or linker for good
+@@ -7256,7 +6201,7 @@
+ ;;
+ *-*-irix6*)
+ # Find out which ABI we are using.
+- echo '#line 7259 "configure"' > conftest.$ac_ext
++ echo '#line 6204 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -7299,7 +6244,7 @@
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- case `/usr/bin/file conftest.o` in
++ case "`/usr/bin/file conftest.o`" in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+@@ -7341,8 +6286,8 @@
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+- { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+ if test "${lt_cv_cc_needs_belf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7368,36 +6313,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -7406,10 +6339,9 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- lt_cv_cc_needs_belf=no
++lt_cv_cc_needs_belf=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+@@ -7418,33 +6350,13 @@
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+-sparc*-*solaris*)
+- # Find out which ABI we are using.
+- echo 'int i;' > conftest.$ac_ext
+- 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
+- case `/usr/bin/file conftest.o` in
+- *64-bit*)
+- case $lt_cv_prog_gnu_ld in
+- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+- *) LD="${LD-ld} -64" ;;
+- esac
+- ;;
+- esac
+- fi
+- rm -rf conftest*
+- ;;
+-
+
+ esac
+
+@@ -7465,9 +6377,9 @@
+ 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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7481,36 +6393,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -7519,14 +6419,12 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- eval "$as_ac_Header=no"
++eval "$as_ac_Header=no"
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++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
+@@ -7541,19 +6439,18 @@
+ for ac_header in dlfcn.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7564,36 +6461,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -7602,16 +6487,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7620,13 +6504,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -7650,10 +6529,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -7677,24 +6555,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -7706,22 +6585,18 @@
+
+ done
+
+-ac_ext=cpp
++ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+-if test -z "$CXX"; then
+- if test -n "$CCC"; then
+- CXX=$CCC
+- else
+- if test -n "$ac_tool_prefix"; then
+- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
++if test -n "$ac_tool_prefix"; then
++ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ 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; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7734,38 +6609,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ CXX=$ac_cv_prog_CXX
+ if test -n "$CXX"; then
+- { echo "$as_me:$LINENO: result: $CXX" >&5
+-echo "${ECHO_T}$CXX" >&6; }
++ echo "$as_me:$LINENO: result: $CXX" >&5
++echo "${ECHO_T}$CXX" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$CXX" && break
+ done
+ fi
+ if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
++ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ 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; }
++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_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7778,85 +6651,55 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+ if test -n "$ac_ct_CXX"; then
+- { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+-echo "${ECHO_T}$ac_ct_CXX" >&6; }
++ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
++echo "${ECHO_T}$ac_ct_CXX" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$ac_ct_CXX" && break
+ done
++test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+- if test "x$ac_ct_CXX" = x; then
+- CXX="g++"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- CXX=$ac_ct_CXX
+- fi
++ CXX=$ac_ct_CXX
+ fi
+
+- fi
+-fi
++
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO: checking for C++ compiler version" >&5
++echo "$as_me:$LINENO:" \
++ "checking for C++ compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (ac_try="$ac_compiler --version >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler --version >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -v >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -v >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -V >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -V >&5") 2>&5
++{ (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); }
+
+-{ 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; }
++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_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7879,36 +6722,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -7917,28 +6748,24 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_compiler_gnu=no
++ac_compiler_gnu=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+ GXX=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CXXFLAGS=${CXXFLAGS+set}
+ ac_save_CXXFLAGS=$CXXFLAGS
+-{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
++CXXFLAGS="-g"
++echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
++echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+ if test "${ac_cv_prog_cxx_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+- ac_cxx_werror_flag=yes
+- ac_cv_prog_cxx_g=no
+- CXXFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -7954,36 +6781,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -7992,53 +6807,70 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- CXXFLAGS=""
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-int
+-main ()
+-{
+-
+- ;
++ac_cv_prog_cxx_g=no
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
++if test "$ac_test_CXXFLAGS" = set; then
++ CXXFLAGS=$ac_save_CXXFLAGS
++elif test $ac_cv_prog_cxx_g = yes; then
++ if test "$GXX" = yes; then
++ CXXFLAGS="-g -O2"
++ else
++ CXXFLAGS="-g"
++ fi
++else
++ if test "$GXX" = yes; then
++ CXXFLAGS="-O2"
++ else
++ CXXFLAGS=
++ fi
++fi
++for ac_declaration in \
++ '' \
++ '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
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_declaration
++#include <stdlib.h>
++int
++main ()
++{
++exit (42);
++ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -8047,92 +6879,62 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+- CXXFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
++continue
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++ cat >conftest.$ac_ext <<_ACEOF
+ /* 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 { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_cxx_g=yes
++ break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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
+
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+- ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+-fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
+-if test "$ac_test_CXXFLAGS" = set; then
+- CXXFLAGS=$ac_save_CXXFLAGS
+-elif test $ac_cv_prog_cxx_g = yes; then
+- if test "$GXX" = yes; then
+- CXXFLAGS="-g -O2"
+- else
+- CXXFLAGS="-g"
+- fi
+-else
+- if test "$GXX" = yes; then
+- CXXFLAGS="-O2"
+- else
+- CXXFLAGS=
+- fi
+-fi
+-ac_ext=cpp
++ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+@@ -8140,8 +6942,8 @@
+
+ depcc="$CXX" am_compiler_list=
+
+-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+ if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8230,8 +7032,8 @@
+ fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; }
++echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+ CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+@@ -8247,18 +7049,13 @@
+ fi
+
+
+-
+-
+-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+- (test "X$CXX" != "Xg++"))) ; then
+- ac_ext=cpp
++ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_cxx_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 "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
++echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+ if test -z "$CXXCPP"; then
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -8288,13 +7085,8 @@
+ #endif
+ Syntax error
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -8319,10 +7111,9 @@
+ # Broken: fails on valid input.
+ continue
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether nonexistent headers
++ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -8332,13 +7123,8 @@
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -8365,7 +7151,6 @@
+ ac_preproc_ok=:
+ break
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -8383,8 +7168,8 @@
+ else
+ ac_cv_prog_CXXCPP=$CXXCPP
+ fi
+-{ echo "$as_me:$LINENO: result: $CXXCPP" >&5
+-echo "${ECHO_T}$CXXCPP" >&6; }
++echo "$as_me:$LINENO: result: $CXXCPP" >&5
++echo "${ECHO_T}$CXXCPP" >&6
+ ac_preproc_ok=false
+ for ac_cxx_preproc_warn_flag in '' yes
+ do
+@@ -8407,13 +7192,8 @@
+ #endif
+ Syntax error
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -8438,10 +7218,9 @@
+ # Broken: fails on valid input.
+ continue
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether nonexistent headers
++ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -8451,13 +7230,8 @@
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -8484,7 +7258,6 @@
+ ac_preproc_ok=:
+ break
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -8500,26 +7273,24 @@
+ { (exit 1); exit 1; }; }
+ fi
+
+-ac_ext=cpp
++ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+-fi
+-
+
+ ac_ext=f
+ ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn
++ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+ 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; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8532,38 +7303,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ F77=$ac_cv_prog_F77
+ if test -n "$F77"; then
+- { echo "$as_me:$LINENO: result: $F77" >&5
+-echo "${ECHO_T}$F77" >&6; }
++ echo "$as_me:$LINENO: result: $F77" >&5
++echo "${ECHO_T}$F77" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$F77" && break
+ done
+ fi
+ if test -z "$F77"; then
+ ac_ct_F77=$F77
+- for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn
++ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+ 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; }
++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_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8576,78 +7345,48 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_F77="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_F77=$ac_cv_prog_ac_ct_F77
+ if test -n "$ac_ct_F77"; then
+- { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+-echo "${ECHO_T}$ac_ct_F77" >&6; }
++ echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
++echo "${ECHO_T}$ac_ct_F77" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$ac_ct_F77" && break
+ done
+
+- if test "x$ac_ct_F77" = x; then
+- F77=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- F77=$ac_ct_F77
+- fi
++ F77=$ac_ct_F77
+ fi
+
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5
++echo "$as_me:7375:" \
++ "checking for Fortran 77 compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (ac_try="$ac_compiler --version >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler --version >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -v >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -v >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -V >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -V >&5") 2>&5
++{ (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); }
+@@ -8657,8 +7396,8 @@
+ # input file. (Note that this only needs to work for GNU compilers.)
+ ac_save_ext=$ac_ext
+ ac_ext=F
+-{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+ if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8671,36 +7410,24 @@
+ end
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_f77_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -8709,21 +7436,20 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_compiler_gnu=no
++ac_compiler_gnu=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ ac_ext=$ac_save_ext
+ ac_test_FFLAGS=${FFLAGS+set}
+ ac_save_FFLAGS=$FFLAGS
+ FFLAGS=
+-{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+-echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
++echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+ if test "${ac_cv_prog_f77_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8734,36 +7460,24 @@
+ end
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_f77_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -8772,14 +7486,13 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_prog_f77_g=no
++ac_cv_prog_f77_g=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
++echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+ if test "$ac_test_FFLAGS" = set; then
+ FFLAGS=$ac_save_FFLAGS
+ elif test $ac_cv_prog_f77_g = yes; then
+@@ -8808,8 +7521,8 @@
+ # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+ # find the maximum length of command line arguments
+-{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+ if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8849,55 +7562,11 @@
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+- # This has been around since 386BSD, at least. Likely further.
+- if test -x /sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+- elif test -x /usr/sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+- else
+- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+- fi
+- # And add a safety zone
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+- ;;
+-
+- interix*)
+- # We know the value 262144 and hardcode it with a safety zone (like BSD)
+- lt_cv_sys_max_cmd_len=196608
+- ;;
+-
+- osf*)
+- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+- # nice to cause kernel panics so lets avoid the loop below.
+- # First set a reasonable default.
+- lt_cv_sys_max_cmd_len=16384
+- #
+- if test -x /sbin/sysconfig; then
+- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+- *1*) lt_cv_sys_max_cmd_len=-1 ;;
+- esac
+- fi
+- ;;
+- sco3.2v5*)
+- lt_cv_sys_max_cmd_len=102400
+- ;;
+- sysv5* | sco5v6* | sysv4.2uw2*)
+- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+- if test -n "$kargmax"; then
+- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+- else
+- lt_cv_sys_max_cmd_len=32768
+- fi
+- ;;
+- *)
++ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+- while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
++ while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+@@ -8917,19 +7586,19 @@
+ fi
+
+ if test -n $lt_cv_sys_max_cmd_len ; then
+- { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; }
++ echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+ else
+- { echo "$as_me:$LINENO: result: none" >&5
+-echo "${ECHO_T}none" >&6; }
++ echo "$as_me:$LINENO: result: none" >&5
++echo "${ECHO_T}none" >&6
+ fi
+
+
+
+
+ # Check for command to grab the raw symbol name followed by C symbol from nm.
+-{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+-echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
++echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+ if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8943,6 +7612,9 @@
+ # Regexp to match symbols that can be accessed directly from C.
+ sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
++# Transform the above into a raw symbol and a C symbol.
++symxfrm='\1 \2\3 \3'
++
+ # Transform an extracted symbol line into a proper C declaration
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+@@ -8964,31 +7636,15 @@
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+-linux* | k*bsd*-gnu)
+- if test "$host_cpu" = ia64; then
+- symcode='[ABCDGIRSTW]'
+- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+- fi
+- ;;
+ irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+ osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+-solaris*)
++solaris* | sysv5*)
+ symcode='[BDRT]'
+ ;;
+-sco3.2v5*)
+- symcode='[DT]'
+- ;;
+-sysv4.2uw2*)
+- symcode='[DT]'
+- ;;
+-sysv5* | sco5v6* | unixware* | OpenUNIX*)
+- symcode='[ABDT]'
+- ;;
+ sysv4)
+ symcode='[DFNSTU]'
+ ;;
+@@ -9011,11 +7667,8 @@
+ # Try without a prefix undercore, then with it.
+ for ac_symprfx in "" "_"; do
+
+- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+- symxfrm="\\1 $ac_symprfx\\2 \\2"
+-
+ # Write the raw and C identifiers.
+- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -9133,15 +7786,15 @@
+ lt_cv_sys_global_symbol_to_cdecl=
+ fi
+ if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+- { echo "$as_me:$LINENO: result: failed" >&5
+-echo "${ECHO_T}failed" >&6; }
++ echo "$as_me:$LINENO: result: failed" >&5
++echo "${ECHO_T}failed" >&6
+ else
+- { echo "$as_me:$LINENO: result: ok" >&5
+-echo "${ECHO_T}ok" >&6; }
++ echo "$as_me:$LINENO: result: ok" >&5
++echo "${ECHO_T}ok" >&6
+ fi
+
+-{ echo "$as_me:$LINENO: checking for objdir" >&5
+-echo $ECHO_N "checking for objdir... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for objdir" >&5
++echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+ if test "${lt_cv_objdir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9155,8 +7808,8 @@
+ fi
+ rmdir .libs 2>/dev/null
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+-echo "${ECHO_T}$lt_cv_objdir" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
++echo "${ECHO_T}$lt_cv_objdir" >&6
+ objdir=$lt_cv_objdir
+
+
+@@ -9177,7 +7830,7 @@
+
+ # Sed substitution that helps us do robust quoting. It backslashifies
+ # metacharacters that are still active within double-quoted strings.
+-Xsed='sed -e 1s/^X//'
++Xsed='sed -e s/^X//'
+ sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+ # Same as above, but do not quote variable references.
+@@ -9197,7 +7850,7 @@
+ default_ofile=libtool
+ can_build_shared=yes
+
+-# All known linkers require a `.a' archive for static linking (except MSVC,
++# All known linkers require a `.a' archive for static linking (except M$VC,
+ # which needs '.lib').
+ libext=a
+ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -9207,8 +7860,8 @@
+ 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.
+ 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; }
++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
+ else
+@@ -9221,34 +7874,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ AR=$ac_cv_prog_AR
+ if test -n "$AR"; then
+- { echo "$as_me:$LINENO: result: $AR" >&5
+-echo "${ECHO_T}$AR" >&6; }
++ echo "$as_me:$LINENO: result: $AR" >&5
++echo "${ECHO_T}$AR" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&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; }
++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
+@@ -9261,41 +7912,27 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
++ test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_AR" = x; then
+- AR="false"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- AR=$ac_ct_AR
+- fi
++ AR=$ac_ct_AR
+ else
+ AR="$ac_cv_prog_AR"
+ fi
+@@ -9303,8 +7940,8 @@
+ 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; }
++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
+@@ -9317,34 +7954,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- { echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6; }
++ echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&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; }
++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
+@@ -9357,41 +7992,27 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
++ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_RANLIB" = x; then
+- RANLIB=":"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- RANLIB=$ac_ct_RANLIB
+- fi
++ RANLIB=$ac_ct_RANLIB
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+@@ -9399,8 +8020,8 @@
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9413,34 +8034,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- { echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6; }
++ echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++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_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9453,41 +8072,27 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
++ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6; }
++ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_STRIP" = x; then
+- STRIP=":"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- STRIP=$ac_ct_STRIP
+- fi
++ STRIP=$ac_ct_STRIP
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -9502,7 +8107,6 @@
+ test -z "$AS" && AS=as
+ test -z "$CC" && CC=cc
+ test -z "$LTCC" && LTCC=$CC
+-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+ test -z "$DLLTOOL" && DLLTOOL=dlltool
+ test -z "$LD" && LD=ld
+ test -z "$LN_S" && LN_S="ln -s"
+@@ -9522,32 +8126,21 @@
+ if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
++ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
++ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+ fi
+
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-
+-
+ # Only perform the check for file, if the check method requires it
+ case $deplibs_check_method in
+ file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+- { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9567,7 +8160,7 @@
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
++ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+@@ -9599,17 +8192,17 @@
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6; }
++ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+ if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+- { echo "$as_me:$LINENO: checking for file" >&5
+-echo $ECHO_N "checking for file... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for file" >&5
++echo $ECHO_N "checking for file... $ECHO_C" >&6
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9629,7 +8222,7 @@
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
++ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+@@ -9661,11 +8254,11 @@
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6; }
++ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+ else
+@@ -9680,21 +8273,21 @@
+ enable_dlopen=no
+ enable_win32_dll=no
+
+-# Check whether --enable-libtool-lock was given.
++# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then
+- enableval=$enable_libtool_lock;
+-fi
++ enableval="$enable_libtool_lock"
+
++fi;
+ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+-# Check whether --with-pic was given.
++# Check whether --with-pic or --without-pic was given.
+ if test "${with_pic+set}" = set; then
+- withval=$with_pic; pic_mode="$withval"
++ withval="$with_pic"
++ pic_mode="$withval"
+ else
+ pic_mode=default
+-fi
+-
++fi;
+ test -z "$pic_mode" && pic_mode=default
+
+ # Use C for the default configuration in the libtool script
+@@ -9724,25 +8317,68 @@
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
++#
++# Check for any special shared library compilation flags.
++#
++lt_prog_cc_shlib=
++if test "$GCC" = no; then
++ case $host_os in
++ sco3.2v5*)
++ lt_prog_cc_shlib='-belf'
++ ;;
++ esac
++fi
++if test -n "$lt_prog_cc_shlib"; then
++ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
++echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
++ if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then :
++ else
++ { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
++echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
++ lt_cv_prog_cc_can_build_shared=no
++ fi
++fi
++
++
++#
++# Check to make sure the static flag actually works.
++#
++echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
++echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
++if test "${lt_prog_compiler_static_works+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_prog_compiler_static_works=no
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
++ printf "$lt_simple_link_test_code" > conftest.$ac_ext
++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test -s conftest.err; then
++ # Append any errors to the config.log.
++ cat conftest.err 1>&5
++ else
++ lt_prog_compiler_static_works=yes
++ fi
++ fi
++ $rm conftest*
++ LDFLAGS="$save_LDFLAGS"
++
++fi
++echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
++echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
++
++if test x"$lt_prog_compiler_static_works" = xyes; then
++ :
++else
++ lt_prog_compiler_static=
++fi
++
+
+
+
+@@ -9752,8 +8388,8 @@
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+-{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+ if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9767,28 +8403,26 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:9773: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:8409: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:9777: \$? = $ac_status" >&5
++ echo "$as_me:8413: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+ if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+@@ -9802,8 +8436,8 @@
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -9841,11 +8475,6 @@
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+-
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+@@ -9862,7 +8491,7 @@
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -9888,16 +8517,6 @@
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- lt_prog_compiler_pic='-qnocommon'
+- lt_prog_compiler_wl='-Wl,'
+- ;;
+- esac
+- ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+@@ -9909,7 +8528,7 @@
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -9932,20 +8551,13 @@
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+- linux* | k*bsd*-gnu)
+- case $cc_basename in
++ linux*)
++ case $CC in
+ icc* | ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+- pgcc* | pgf77* | pgf90* | pgf95*)
+- # Portland Group compilers (*not* the Pentium gcc compiler,
+- # which looks to be a dead project)
+- lt_prog_compiler_wl='-Wl,'
+- lt_prog_compiler_pic='-fpic'
+- lt_prog_compiler_static='-Bstatic'
+- ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+@@ -9960,15 +8572,15 @@
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
++ sco3.2v5*)
++ lt_prog_compiler_pic='-Kpic'
++ lt_prog_compiler_static='-dn'
++ ;;
++
+ solaris*)
++ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+- case $cc_basename in
+- f77* | f90* | f95*)
+- lt_prog_compiler_wl='-Qoption ld ';;
+- *)
+- lt_prog_compiler_wl='-Wl,';;
+- esac
+ ;;
+
+ sunos4*)
+@@ -9977,7 +8589,7 @@
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+- sysv4 | sysv4.2uw2* | sysv4.3*)
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+@@ -9990,17 +8602,6 @@
+ fi
+ ;;
+
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- lt_prog_compiler_wl='-Wl,'
+- lt_prog_compiler_pic='-KPIC'
+- lt_prog_compiler_static='-Bstatic'
+- ;;
+-
+- unicos*)
+- lt_prog_compiler_wl='-Wl,'
+- lt_prog_compiler_can_build_shared=no
+- ;;
+-
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+@@ -10012,16 +8613,16 @@
+ esac
+ fi
+
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+ #
+ # Check to make sure the PIC flag actually works.
+ #
+ if test -n "$lt_prog_compiler_pic"; then
+
+-{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+ if test "${lt_prog_compiler_pic_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10035,28 +8636,26 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:10041: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:8642: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:10045: \$? = $ac_status" >&5
++ echo "$as_me:8646: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works=yes
+ fi
+ fi
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+ if test x"$lt_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+@@ -10069,7 +8668,7 @@
+ fi
+
+ fi
+-case $host_os in
++case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+@@ -10079,50 +8678,8 @@
+ ;;
+ esac
+
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_static_works+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_static_works=no
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_static_works=yes
+- fi
+- else
+- lt_prog_compiler_static_works=yes
+- fi
+- fi
+- $rm conftest*
+- LDFLAGS="$save_LDFLAGS"
+-
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+-echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; }
+-
+-if test x"$lt_prog_compiler_static_works" = xyes; then
+- :
+-else
+- lt_prog_compiler_static=
+-fi
+-
+-
+-{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+ if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10139,25 +8696,23 @@
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:10145: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:8702: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:10149: \$? = $ac_status" >&5
++ echo "$as_me:8706: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
++ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+- chmod u+w . 2>&5
++ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+@@ -10168,23 +8723,23 @@
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+ hard_links="nottested"
+ if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+- { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- { echo "$as_me:$LINENO: result: $hard_links" >&5
+-echo "${ECHO_T}$hard_links" >&6; }
++ echo "$as_me:$LINENO: result: $hard_links" >&5
++echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+ echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+@@ -10194,8 +8749,8 @@
+ need_locks=no
+ fi
+
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag=
+@@ -10233,16 +8788,6 @@
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+- # Just being paranoid about ensuring that cc_basename is set.
+- for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+@@ -10253,10 +8798,6 @@
+ with_gnu_ld=no
+ fi
+ ;;
+- interix*)
+- # we just hope/assume this is gcc and not c89 (= MSVC++)
+- with_gnu_ld=yes
+- ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+@@ -10267,27 +8808,6 @@
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+- # Set some defaults for GNU ld with shared library support. These
+- # are reset later if shared libraries are not supported. Putting them
+- # here allows them to be overridden if necessary.
+- runpath_var=LD_RUN_PATH
+- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+- export_dynamic_flag_spec='${wl}--export-dynamic'
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- whole_archive_flag_spec=
+- fi
+- supports_anon_versioning=no
+- case `$LD -v 2>/dev/null` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+- *\ 2.11.*) ;; # other 2.11 versions
+- *) supports_anon_versioning=yes ;;
+- esac
+-
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+@@ -10338,10 +8858,10 @@
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -10350,60 +8870,13 @@
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+- interix3*)
+- hardcode_direct=no
+- hardcode_shlibpath_var=no
+- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+-
+- linux* | k*bsd*-gnu)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- tmp_addflag=
+- case $cc_basename,$host_cpu in
+- pgcc*) # Portland Group C compiler
+- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag'
+- ;;
+- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag -Mnomain' ;;
+- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+- tmp_addflag=' -i_dynamic' ;;
+- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+- tmp_addflag=' -i_dynamic -nofor_main' ;;
+- ifc* | ifort*) # Intel Fortran compiler
+- tmp_addflag=' -nofor_main' ;;
+- esac
+- archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+-
+- if test $supports_anon_versioning = yes; then
+- archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- $echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+- fi
+- link_all_deplibs=no
+- else
+- ld_shlibs=no
+- fi
+- ;;
+-
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+@@ -10413,7 +8886,7 @@
+ fi
+ ;;
+
+- solaris*)
++ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+@@ -10434,33 +8907,6 @@
+ fi
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+- case `$LD -v 2>&1` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+- ld_shlibs=no
+- cat <<_LT_EOF 1>&2
+-
+-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+-*** reliably create shared libraries on SCO systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
+-
+-_LT_EOF
+- ;;
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+- else
+- ld_shlibs=no
+- fi
+- ;;
+- esac
+- ;;
+-
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+@@ -10468,6 +8914,31 @@
+ hardcode_shlibpath_var=no
+ ;;
+
++ linux*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_cmds="$tmp_archive_cmds"
++ supports_anon_versioning=no
++ case `$LD -v 2>/dev/null` in
++ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
++ *\ 2.11.*) ;; # other 2.11 versions
++ *) supports_anon_versioning=yes ;;
++ esac
++ if test $supports_anon_versioning = yes; then
++ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ archive_expsym_cmds="$tmp_archive_cmds"
++ fi
++ else
++ ld_shlibs=no
++ fi
++ ;;
++
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+@@ -10478,11 +8949,16 @@
+ ;;
+ esac
+
+- if test "$ld_shlibs" = no; then
+- runpath_var=
+- hardcode_libdir_flag_spec=
+- export_dynamic_flag_spec=
+- whole_archive_flag_spec=
++ if test "$ld_shlibs" = yes; then
++ runpath_var=LD_RUN_PATH
++ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
++ export_dynamic_flag_spec='${wl}--export-dynamic'
++ # ancient GNU ld didn't support --whole-archive et. al.
++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
++ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
++ else
++ whole_archive_flag_spec=
++ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+@@ -10494,7 +8970,7 @@
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
++ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+@@ -10528,7 +9004,6 @@
+ break
+ fi
+ done
+- ;;
+ esac
+
+ exp_sym_flag='-bexport'
+@@ -10547,7 +9022,7 @@
+ link_all_deplibs=yes
+
+ if test "$GCC" = yes; then
+- case $host_os in aix4.[012]|aix4.[012].*)
++ case $host_os in aix4.012|aix4.012.*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+@@ -10566,12 +9041,8 @@
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+- ;;
+ esac
+ shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+@@ -10579,11 +9050,11 @@
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+- if test "$aix_use_runtimelinking" = yes; then
++ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+- fi
++ fi
+ fi
+ fi
+
+@@ -10611,36 +9082,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -10654,20 +9113,18 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -10686,36 +9143,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -10729,10 +9174,8 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+@@ -10741,11 +9184,13 @@
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ always_export_symbols=yes
+ # Exported symbols can be pulled into shared objects from archives
+- whole_archive_flag_spec='$convenience'
++ whole_archive_flag_spec=' '
+ archive_cmds_need_lc=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+@@ -10758,7 +9203,7 @@
+ ld_shlibs=no
+ ;;
+
+- bsdi[45]*)
++ bsdi4*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+@@ -10784,52 +9229,52 @@
+ ;;
+
+ darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[012])
+- allow_undefined_flag='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[012])
+- allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
++ if test "$GXX" = yes ; then
+ archive_cmds_need_lc=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ archive_cmds='$CC -r ${wl}-bind_at_load -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'
++ fi
++ module_cmds='$CC ${wl}-bind_at_load $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
++ archive_expsym_cmds='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}'
++ else
++ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ fi
++ module_expsym_cmds='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}'
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+- whole_archive_flag_spec=''
++ whole_archive_flag_spec='-all_load $convenience'
+ link_all_deplibs=yes
+- if test "$GCC" = yes ; then
+- output_verbose_link_cmd='echo'
+- archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- module_cmds='$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 lds
+- archive_expsym_cmds='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}'
+- module_expsym_cmds='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}'
+ else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+- module_cmds='$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 lds
+- archive_expsym_cmds='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}'
+- module_expsym_cmds='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}'
+- ;;
+- *)
+- ld_shlibs=no
+- ;;
+- esac
++ ld_shlibs=no
+ fi
+ ;;
+
+@@ -10863,7 +9308,7 @@
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+@@ -10886,62 +9331,47 @@
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+- hpux10*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator=:
+-
+- hardcode_direct=yes
+- export_dynamic_flag_spec='${wl}-E'
+-
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L=yes
+- fi
+- ;;
+-
+- hpux11*)
++ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- case $host_cpu in
+- hppa*64*)
++ case "$host_cpu" in
++ hppa*64*|ia64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+- ia64*)
+- archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld='+b $libdir'
++ hardcode_libdir_separator=:
++ hardcode_direct=no
++ hardcode_shlibpath_var=no
++ ;;
++ ia64*)
++ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
++
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L=yes
+ ;;
+ *)
++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+@@ -10965,7 +9395,7 @@
+ link_all_deplibs=yes
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+@@ -10989,7 +9419,6 @@
+ hardcode_shlibpath_var=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+@@ -11035,7 +9464,7 @@
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+@@ -11043,15 +9472,21 @@
+ hardcode_libdir_separator=:
+ ;;
+
++ sco3.2v5*)
++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var=no
++ export_dynamic_flag_spec='${wl}-Bexport'
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ;;
++
+ solaris*)
+ no_undefined_flag=' -z text'
+ if test "$GCC" = yes; then
+- wlarc='${wl}'
+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+- wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+@@ -11060,18 +9495,8 @@
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+- *)
+- # The compiler driver will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl, iff we do not link with $LD.
+- # Luckily, gcc supports the same syntax we need for Sun Studio.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- case $wlarc in
+- '')
+- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+- *)
+- whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+- esac ;;
++ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+@@ -11128,45 +9553,36 @@
+ fi
+ ;;
+
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+- no_undefined_flag='${wl}-z,text'
+- archive_cmds_need_lc=no
++ sysv4.2uw2*)
++ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct=yes
++ hardcode_minus_L=no
+ hardcode_shlibpath_var=no
+- runpath_var='LD_RUN_PATH'
++ hardcode_runpath_var=yes
++ runpath_var=LD_RUN_PATH
++ ;;
+
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
++ no_undefined_flag='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+- archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var=no
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- no_undefined_flag='${wl}-z,text'
+- allow_undefined_flag='${wl}-z,nodefs'
+- archive_cmds_need_lc=no
++ sysv5*)
++ no_undefined_flag=' -z text'
++ # $CC -shared without GNU ld will not create a library from C++
++ # object files and a static libstdc++, better avoid it by now
++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ hardcode_libdir_flag_spec=
+ hardcode_shlibpath_var=no
+- hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- hardcode_libdir_separator=':'
+- link_all_deplibs=yes
+- export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+-
+- if test "$GCC" = yes; then
+- archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- fi
+ ;;
+
+ uts4*)
+@@ -11181,10 +9597,15 @@
+ esac
+ fi
+
+-{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+-echo "${ECHO_T}$ld_shlibs" >&6; }
++echo "$as_me:$LINENO: result: $ld_shlibs" >&5
++echo "${ECHO_T}$ld_shlibs" >&6
+ test "$ld_shlibs" = no && can_build_shared=no
+
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
++
+ #
+ # Do we need to explicitly link libc?
+ #
+@@ -11202,8 +9623,8 @@
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+- { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+@@ -11217,7 +9638,6 @@
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+- pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+@@ -11240,16 +9660,16 @@
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+- { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+-echo "${ECHO_T}$archive_cmds_need_lc" >&6; }
++ echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
++echo "${ECHO_T}$archive_cmds_need_lc" >&6
+ ;;
+ esac
+ fi
+ ;;
+ esac
+
+-{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+ library_names_spec=
+ libname_spec='lib$name'
+ soname_spec=
+@@ -11350,7 +9770,7 @@
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+-bsdi[45]*)
++bsdi4*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -11378,8 +9798,7 @@
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
++ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+@@ -11409,7 +9828,7 @@
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+@@ -11432,7 +9851,7 @@
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+@@ -11455,17 +9874,20 @@
+ dynamic_linker=no
+ ;;
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[123]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+@@ -11483,19 +9905,14 @@
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+- freebsd3.[01]* | freebsdelf3.[01]*)
++ freebsd3.01* | freebsdelf3.01*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
++ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+ esac
+ ;;
+
+@@ -11515,7 +9932,7 @@
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+@@ -11555,18 +9972,6 @@
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+@@ -11610,7 +10015,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -11624,10 +10029,31 @@
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '#line 10036 "configure"' > conftest.$ac_ext
++ 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
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
++
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
++ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+@@ -11639,7 +10065,7 @@
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+-netbsdelf*-gnu)
++knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -11648,7 +10074,7 @@
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
++ dynamic_linker='GNU ld.so'
+ ;;
+
+ netbsd*)
+@@ -11688,13 +10114,8 @@
+
+ openbsd*)
+ version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
++ need_version=yes
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+@@ -11732,6 +10153,13 @@
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
+ solaris*)
+ version_type=linux
+ need_lib_prefix=no
+@@ -11757,7 +10185,7 @@
+ need_version=yes
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+@@ -11790,29 +10218,6 @@
+ fi
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
+- esac
+- fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
+-
+ uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -11824,21 +10229,16 @@
+ dynamic_linker=no
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+-echo "${ECHO_T}$dynamic_linker" >&6; }
++echo "$as_me:$LINENO: result: $dynamic_linker" >&5
++echo "${ECHO_T}$dynamic_linker" >&6
+ test "$dynamic_linker" = no && can_build_shared=no
+
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+-fi
+-
+-{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+ hardcode_action=
+ if test -n "$hardcode_libdir_flag_spec" || \
+- test -n "$runpath_var" || \
+- test "X$hardcode_automatic" = "Xyes" ; then
++ test -n "$runpath_var " || \
++ test "X$hardcode_automatic"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct" != no &&
+@@ -11858,8 +10258,8 @@
+ # directories.
+ hardcode_action=unsupported
+ fi
+-{ echo "$as_me:$LINENO: result: $hardcode_action" >&5
+-echo "${ECHO_T}$hardcode_action" >&6; }
++echo "$as_me:$LINENO: result: $hardcode_action" >&5
++echo "${ECHO_T}$hardcode_action" >&6
+
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+@@ -11872,29 +10272,29 @@
+
+ striplib=
+ old_striplib=
+-{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+ if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ else
+ # FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+ ;;
+ *)
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ ;;
+ esac
+ fi
+@@ -11926,8 +10326,8 @@
+
+ darwin*)
+ # if libdl is installed we need to link against it
+- { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+ if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -11940,52 +10340,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ int
+ main ()
+ {
+-return dlopen ();
++dlopen ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -11994,15 +10382,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_dl_dlopen=no
++ac_cv_lib_dl_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+ if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+ else
+@@ -12016,8 +10403,8 @@
+ ;;
+
+ *)
+- { echo "$as_me:$LINENO: checking for shl_load" >&5
+-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for shl_load" >&5
++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+ if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12044,59 +10431,53 @@
+
+ #undef shl_load
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 shl_load ();
+ /* 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_shl_load || defined __stub___shl_load
++#if defined (__stub_shl_load) || defined (__stub___shl_load)
+ choke me
++#else
++char (*f) () = shl_load;
++#endif
++#ifdef __cplusplus
++}
+ #endif
+
+ int
+ main ()
+ {
+-return shl_load ();
++return f != shl_load;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -12105,19 +10486,18 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_func_shl_load=no
++ac_cv_func_shl_load=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+-echo "${ECHO_T}$ac_cv_func_shl_load" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
++echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+ if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+ else
+- { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+ if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12130,52 +10510,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 shl_load ();
+ int
+ main ()
+ {
+-return shl_load ();
++shl_load ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -12184,20 +10552,19 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_dld_shl_load=no
++ac_cv_lib_dld_shl_load=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+ if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+ else
+- { echo "$as_me:$LINENO: checking for dlopen" >&5
+-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dlopen" >&5
++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+ if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12224,59 +10591,53 @@
+
+ #undef dlopen
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ /* 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_dlopen || defined __stub___dlopen
++#if defined (__stub_dlopen) || defined (__stub___dlopen)
+ choke me
++#else
++char (*f) () = dlopen;
++#endif
++#ifdef __cplusplus
++}
+ #endif
+
+ int
+ main ()
+ {
+-return dlopen ();
++return f != dlopen;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -12285,19 +10646,18 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_func_dlopen=no
++ac_cv_func_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_func_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
++echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+ if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+ else
+- { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+ if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12310,52 +10670,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ int
+ main ()
+ {
+-return dlopen ();
++dlopen ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -12364,20 +10712,19 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_dl_dlopen=no
++ac_cv_lib_dl_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+ if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+ else
+- { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+ if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12390,52 +10737,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ int
+ main ()
+ {
+-return dlopen ();
++dlopen ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -12444,20 +10779,19 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_svld_dlopen=no
++ac_cv_lib_svld_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+ if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+ else
+- { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+ if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12470,52 +10804,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dld_link ();
+ int
+ main ()
+ {
+-return dld_link ();
++dld_link ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -12524,15 +10846,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_dld_dld_link=no
++ac_cv_lib_dld_dld_link=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+ if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+ fi
+@@ -12567,13 +10888,13 @@
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+- { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+ if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12583,7 +10904,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 12586 "configure"
++#line 10907 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -12640,8 +10961,6 @@
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+- else
+- puts (dlerror ());
+
+ exit (status);
+ }
+@@ -12651,12 +10970,12 @@
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+- (./conftest; exit; ) >&5 2>/dev/null
++ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+- x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+@@ -12667,13 +10986,13 @@
+
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+-echo "${ECHO_T}$lt_cv_dlopen_self" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+- { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; }
++ LDFLAGS="$LDFLAGS $link_static_flag"
++ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+ if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12683,7 +11002,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 12686 "configure"
++#line 11005 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -12740,8 +11059,6 @@
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+- else
+- puts (dlerror ());
+
+ exit (status);
+ }
+@@ -12751,12 +11068,12 @@
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+- (./conftest; exit; ) >&5 2>/dev/null
++ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+- x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+@@ -12767,8 +11084,8 @@
+
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+@@ -12789,19 +11106,19 @@
+ fi
+
+
+-# Report which library types will actually be built
+-{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
+-{ echo "$as_me:$LINENO: result: $can_build_shared" >&5
+-echo "${ECHO_T}$can_build_shared" >&6; }
++# Report which librarie types wil actually be built
++echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
++echo "$as_me:$LINENO: result: $can_build_shared" >&5
++echo "${ECHO_T}$can_build_shared" >&6
+
+-{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+-case $host_os in
++case "$host_os" in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+@@ -12814,17 +11131,54 @@
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+- ;;
+-esac
+-{ echo "$as_me:$LINENO: result: $enable_shared" >&5
+-echo "${ECHO_T}$enable_shared" >&6; }
+-
+-{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
+-# Make sure either enable_shared or enable_static is yes.
++ ;;
++ darwin* | rhapsody*)
++ if test "$GCC" = yes; then
++ archive_cmds_need_lc=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ output_verbose_link_cmd='echo'
++ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
++ module_cmds='$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
++ archive_expsym_cmds='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}'
++ module_expsym_cmds='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}'
++ hardcode_direct=no
++ hardcode_automatic=yes
++ hardcode_shlibpath_var=unsupported
++ whole_archive_flag_spec='-all_load $convenience'
++ link_all_deplibs=yes
++ else
++ ld_shlibs=no
++ fi
++ ;;
++esac
++echo "$as_me:$LINENO: result: $enable_shared" >&5
++echo "${ECHO_T}$enable_shared" >&6
++
++echo "$as_me:$LINENO: checking whether to build static libraries" >&5
++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
++# Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+-{ echo "$as_me:$LINENO: result: $enable_static" >&5
+-echo "${ECHO_T}$enable_static" >&6; }
++echo "$as_me:$LINENO: result: $enable_static" >&5
++echo "${ECHO_T}$enable_static" >&6
+
+ # The else clause should only fire when bootstrapping the
+ # libtool distribution, otherwise you forgot to ship ltmain.sh
+@@ -12839,7 +11193,7 @@
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+@@ -12943,7 +11297,7 @@
+ #
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -12954,11 +11308,11 @@
+ SED=$lt_SED
+
+ # Sed that helps us avoid accidentally triggering echo(1) options like -n.
+-Xsed="$SED -e 1s/^X//"
++Xsed="$SED -e s/^X//"
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+ # The names of the tagged configurations supported by this script.
+ available_tags=
+@@ -12988,12 +11342,6 @@
+ # The host system.
+ host_alias=$host_alias
+ host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+
+ # An echo program that does not interpret backslashes.
+ echo=$lt_echo
+@@ -13005,9 +11353,6 @@
+ # A C compiler.
+ LTCC=$lt_LTCC
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+ # A language-specific compiler.
+ CC=$lt_compiler
+
+@@ -13073,7 +11418,7 @@
+ # Does compiler simultaneously support -c and -o options?
+ compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+-# Must we lock files when doing compilation?
++# Must we lock files when doing compilation ?
+ need_locks=$lt_need_locks
+
+ # Do we need the lib prefix for modules?
+@@ -13316,11 +11661,11 @@
+ CC="$lt_save_CC"
+
+
+-# Check whether --with-tags was given.
++# Check whether --with-tags or --without-tags was given.
+ if test "${with_tags+set}" = set; then
+- withval=$with_tags; tagnames="$withval"
+-fi
+-
++ withval="$with_tags"
++ tagnames="$withval"
++fi;
+
+ if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+@@ -13338,9 +11683,6 @@
+ echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+ fi
+ fi
+- if test -z "$LTCFLAGS"; then
+- eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+- fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+@@ -13371,10 +11713,8 @@
+
+ case $tagname in
+ CXX)
+- if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+- (test "X$CXX" != "Xg++"))) ; then
+- ac_ext=cpp
++ if test -n "$CXX" && test "X$CXX" != "Xno"; then
++ ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+@@ -13393,7 +11733,6 @@
+ hardcode_libdir_flag_spec_ld_CXX=
+ hardcode_libdir_separator_CXX=
+ hardcode_minus_L_CXX=no
+-hardcode_shlibpath_var_CXX=unsupported
+ hardcode_automatic_CXX=no
+ module_cmds_CXX=
+ module_expsym_cmds_CXX=
+@@ -13411,7 +11750,7 @@
+ compiler_lib_search_path_CXX=
+
+ # Source file extension for C++ test sources.
+-ac_ext=cpp
++ac_ext=cc
+
+ # Object file extension for compiled C++ test sources.
+ objext=o
+@@ -13421,34 +11760,17 @@
+ lt_simple_compile_test_code="int some_variable = 0;\n"
+
+ # Code to be used in simple link tests
+-lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
++lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_LD=$LD
+@@ -13459,27 +11781,18 @@
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+- $as_unset lt_cv_prog_gnu_ld
++ unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+- $as_unset lt_cv_path_LD
++ unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ compiler=$CC
+ compiler_CXX=$CC
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-
++cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+ # We don't want -fno-exception wen compiling C++ code, so set the
+ # no_builtin_flag separately
+@@ -13493,18 +11806,18 @@
+ # Set up default GNU C++ configuration
+
+
+-# Check whether --with-gnu-ld was given.
++# Check whether --with-gnu-ld or --without-gnu-ld was given.
+ if test "${with_gnu_ld+set}" = set; then
+- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
++ withval="$with_gnu_ld"
++ test "$withval" = no || with_gnu_ld=yes
+ else
+ with_gnu_ld=no
+-fi
+-
++fi;
+ ac_prog=ld
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+- { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+@@ -13533,11 +11846,11 @@
+ ;;
+ esac
+ elif test "$with_gnu_ld" = yes; then
+- { echo "$as_me:$LINENO: checking for GNU ld" >&5
+-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for GNU ld" >&5
++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+ else
+- { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+ fi
+ if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -13550,7 +11863,7 @@
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+- # but apparently some variants of GNU ld only accept -v.
++ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+@@ -13570,21 +11883,21 @@
+
+ LD="$lt_cv_path_LD"
+ if test -n "$LD"; then
+- { echo "$as_me:$LINENO: result: $LD" >&5
+-echo "${ECHO_T}$LD" >&6; }
++ echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+ test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+ echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+-{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+ if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- # I'd rather use --version here, but apparently some GNU lds only accept -v.
++ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+ case `$LD -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+@@ -13594,8 +11907,8 @@
+ ;;
+ esac
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+ with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+@@ -13645,8 +11958,8 @@
+ fi
+
+ # PORTME: fill in a description of your system's C++ link characteristics
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ ld_shlibs_CXX=yes
+ case $host_os in
+ aix3*)
+@@ -13675,7 +11988,6 @@
+ ;;
+ esac
+ done
+- ;;
+ esac
+
+ exp_sym_flag='-bexport'
+@@ -13694,7 +12006,7 @@
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes; then
+- case $host_os in aix4.[012]|aix4.[012].*)
++ case $host_os in aix4.012|aix4.012.*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+@@ -13713,12 +12025,8 @@
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ hardcode_libdir_separator_CXX=
+ fi
+- ;;
+ esac
+ shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+@@ -13758,36 +12066,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -13801,21 +12097,19 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+- archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_CXX="-z nodefs"
+- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
++ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -13834,36 +12128,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -13877,10 +12159,8 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+@@ -13889,26 +12169,16 @@
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_CXX=' ${wl}-bernotok'
+ allow_undefined_flag_CXX=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ always_export_symbols_CXX=yes
+ # Exported symbols can be pulled into shared objects from archives
+- whole_archive_flag_spec_CXX='$convenience'
++ whole_archive_flag_spec_CXX=' '
+ archive_cmds_need_lc_CXX=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+-
+- beos*)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- allow_undefined_flag_CXX=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- else
+- ld_shlibs_CXX=no
+- fi
+- ;;
+-
+ chorus*)
+ case $cc_basename in
+ *)
+@@ -13927,7 +12197,7 @@
+ enable_shared_with_static_runtimes_CXX=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -13936,81 +12206,70 @@
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+- darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[012])
+- allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[012])
+- allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
+- archive_cmds_need_lc_CXX=no
+- hardcode_direct_CXX=no
+- hardcode_automatic_CXX=yes
+- hardcode_shlibpath_var_CXX=unsupported
+- whole_archive_flag_spec_CXX=''
+- link_all_deplibs_CXX=yes
+
+- if test "$GXX" = yes ; then
+- lt_int_apple_cc_single_mod=no
+- output_verbose_link_cmd='echo'
+- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+- lt_int_apple_cc_single_mod=yes
+- fi
+- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+- archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- else
+- archive_cmds_CXX='$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'
+- fi
+- module_cmds_CXX='$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 lds
+- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+- archive_expsym_cmds_CXX='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}'
+- else
+- archive_expsym_cmds_CXX='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}'
+- fi
+- module_expsym_cmds_CXX='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}'
+- else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+- module_cmds_CXX='$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 lds
+- archive_expsym_cmds_CXX='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}'
+- module_expsym_cmds_CXX='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}'
+- ;;
+- *)
+- ld_shlibs_CXX=no
+- ;;
+- esac
++ darwin* | rhapsody*)
++ if test "$GXX" = yes; then
++ archive_cmds_need_lc_CXX=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag_CXX='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag_CXX='-undefined dynamic_lookup'
++ ;;
++ esac
+ fi
+- ;;
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ archive_cmds_CXX='$CC -r ${wl}-bind_at_load -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'
++ fi
++ module_cmds_CXX='$CC ${wl}-bind_at_load $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
++ archive_expsym_cmds_CXX='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}'
++ else
++ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ fi
++ module_expsym_cmds_CXX='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}'
++ hardcode_direct_CXX=no
++ hardcode_automatic_CXX=yes
++ hardcode_shlibpath_var_CXX=unsupported
++ whole_archive_flag_spec_CXX='-all_load $convenience'
++ link_all_deplibs_CXX=yes
++ else
++ ld_shlibs_CXX=no
++ fi
++ ;;
+
+ dgux*)
+ case $cc_basename in
+- ec++*)
++ ec++)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- ghcx*)
++ ghcx)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+@@ -14021,14 +12280,14 @@
+ ;;
+ esac
+ ;;
+- freebsd[12]*)
++ freebsd12*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ ld_shlibs_CXX=no
+ ;;
+ freebsd-elf*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ ld_shlibs_CXX=yes
+@@ -14045,11 +12304,11 @@
+ # location of the library.
+
+ case $cc_basename in
+- CC*)
++ CC)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- aCC*)
++ aCC)
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+@@ -14059,7 +12318,7 @@
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+@@ -14073,22 +12332,33 @@
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_CXX=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
++ hardcode_libdir_separator_CXX=:
++ ;;
++ ia64*)
++ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ ;;
+ *)
++ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ ;;
+ esac
+ fi
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_direct_CXX=no
++ hardcode_shlibpath_var_CXX=no
++ ;;
++ ia64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
++ hardcode_minus_L_CXX=yes # Not in the search PATH,
++ # but as the default
++ # location of the library.
+ ;;
+ *)
+ hardcode_direct_CXX=yes
+@@ -14099,17 +12369,14 @@
+ esac
+
+ case $cc_basename in
+- CC*)
++ CC)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- aCC*)
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ aCC)
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+@@ -14128,12 +12395,9 @@
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ case "$host_cpu" in
++ ia64*|hppa*64*)
++ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+@@ -14147,25 +12411,11 @@
+ ;;
+ esac
+ ;;
+- interix3*)
+- hardcode_direct_CXX=no
+- hardcode_shlibpath_var_CXX=no
+- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_CXX='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+ irix5* | irix6*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # SGI C++
+- archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+@@ -14176,7 +12426,7 @@
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+ else
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+@@ -14187,9 +12437,9 @@
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ ;;
+- linux* | k*bsd*-gnu)
++ linux*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -14214,41 +12464,17 @@
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+- icpc*)
++ icpc)
+ # Intel C++
+ with_gnu_ld=yes
+- # version 8.0 and above of icpc choke on multiply defined symbols
+- # if we add $predep_objects and $postdep_objects, however 7.1 and
+- # earlier do not add the objects themselves.
+- case `$CC -V 2>&1` in
+- *"Version 7."*)
+- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- *) # Version 8.0 or newer
+- tmp_idyn=
+- case $host_cpu in
+- ia64*) tmp_idyn=' -i_dynamic';;
+- esac
+- archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- esac
+ archive_cmds_need_lc_CXX=no
++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+- pgCC*)
+- # Portland Group C++ compiler
+- archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+-
+- hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+- export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+- whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- ;;
+- cxx*)
++ cxx)
+ # Compaq C++
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+@@ -14279,7 +12505,7 @@
+ ;;
+ mvs*)
+ case $cc_basename in
+- cxx*)
++ cxx)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+@@ -14289,7 +12515,7 @@
+ ;;
+ esac
+ ;;
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+@@ -14300,25 +12526,9 @@
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+- openbsd2*)
+- # C++ shared libraries are fairly broken
+- ld_shlibs_CXX=no
+- ;;
+- openbsd*)
+- hardcode_direct_CXX=yes
+- hardcode_shlibpath_var_CXX=no
+- archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+- export_dynamic_flag_spec_CXX='${wl}-E'
+- whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- fi
+- output_verbose_link_cmd='echo'
+- ;;
+ osf3*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -14334,14 +12544,14 @@
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- cxx*)
++ cxx)
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+@@ -14359,7 +12569,7 @@
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+@@ -14378,7 +12588,7 @@
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -14393,17 +12603,17 @@
+ # the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- cxx*)
++ cxx)
+ allow_undefined_flag_CXX=' -expect_unresolved \*'
+- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+ archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
++ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
+ $rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+@@ -14422,7 +12632,7 @@
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+@@ -14443,14 +12653,27 @@
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
++ sco*)
++ archive_cmds_need_lc_CXX=no
++ case $cc_basename in
++ CC)
++ # FIXME: insert proper C++ library support
++ ld_shlibs_CXX=no
++ ;;
++ *)
++ # FIXME: insert proper C++ library support
++ ld_shlibs_CXX=no
++ ;;
++ esac
++ ;;
+ sunos4*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- lcc*)
++ lcc)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+@@ -14463,33 +12686,36 @@
+ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+- archive_cmds_need_lc_CXX=yes
+ no_undefined_flag_CXX=' -zdefs'
+- archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
++ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_shlibpath_var_CXX=no
+ case $host_os in
+- solaris2.[0-5] | solaris2.[0-5].*) ;;
++ solaris2.0-5 | solaris2.0-5.*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+- # linker. We must also pass each convience library through
+- # to the system linker between allextract/defaultextract.
+- # The C++ compiler will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl.
++ # linker.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+- whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
++ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ link_all_deplibs_CXX=yes
+
+- output_verbose_link_cmd='echo'
++ # Commands to make compiler produce verbose output that lists
++ # what "hidden" libraries, object files and flags are used when
++ # linking a shared library.
++ #
++ # There doesn't appear to be a way to prevent this compiler from
++ # explicitly linking system object files so we need to strip them
++ # from the output so that they don't get included in the library
++ # dependencies.
++ output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+@@ -14497,7 +12723,7 @@
+ # in the archive.
+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+ ;;
+- gcx*)
++ gcx)
+ # Green Hills C++ Compiler
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+@@ -14535,63 +12761,12 @@
+ ;;
+ esac
+ ;;
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+- no_undefined_flag_CXX='${wl}-z,text'
+- archive_cmds_need_lc_CXX=no
+- hardcode_shlibpath_var_CXX=no
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- ;;
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- # For security reasons, it is highly recommended that you always
+- # use absolute paths for naming shared libraries, and exclude the
+- # DT_RUNPATH tag from executables and libraries. But doing so
+- # requires that you compile everything twice, which is a pain.
+- # So that behaviour is only enabled if SCOABSPATH is set to a
+- # non-empty value in the environment. Most likely only useful for
+- # creating official distributions of packages.
+- # This is a hack until libtool officially supports absolute path
+- # names for shared libraries.
+- no_undefined_flag_CXX='${wl}-z,text'
+- allow_undefined_flag_CXX='${wl}-z,nodefs'
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ archive_cmds_need_lc_CXX=no
+- hardcode_shlibpath_var_CXX=no
+- hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- hardcode_libdir_separator_CXX=':'
+- link_all_deplibs_CXX=yes
+- export_dynamic_flag_spec_CXX='${wl}-Bexport'
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+ ;;
+ tandem*)
+ case $cc_basename in
+- NCC*)
++ NCC)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+@@ -14611,8 +12786,8 @@
+ ld_shlibs_CXX=no
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+-echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
++echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
++echo "${ECHO_T}$ld_shlibs_CXX" >&6
+ test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+ GCC_CXX="$GXX"
+@@ -14644,7 +12819,7 @@
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+- output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
++ output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+@@ -14720,29 +12895,6 @@
+
+ $rm -f confest.$objext
+
+-# PORTME: override above test on systems where it is broken
+-case $host_os in
+-interix3*)
+- # Interix 3.5 installs completely hosed .la files for C++, so rather than
+- # hack all around it, let's just trust "g++" to DTRT.
+- predep_objects_CXX=
+- postdep_objects_CXX=
+- postdeps_CXX=
+- ;;
+-
+-solaris*)
+- case $cc_basename in
+- CC*)
+- # Adding this requires a known-good setup of shared libraries for
+- # Sun compiler versions before 5.6, else PIC objects from an old
+- # archive will be linked into the output, leading to subtle bugs.
+- postdeps_CXX='-lCstd -lCrun'
+- ;;
+- esac
+- ;;
+-esac
+-
+-
+ case " $postdeps_CXX " in
+ *" -lc "*) archive_cmds_need_lc_CXX=no ;;
+ esac
+@@ -14751,8 +12903,8 @@
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX=
+
+-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+@@ -14790,10 +12942,6 @@
+ # DJGPP does not support shared libraries at all
+ lt_prog_compiler_pic_CXX=
+ ;;
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_CXX=-Kconform_pic
+@@ -14802,7 +12950,7 @@
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ ;;
+ *)
+@@ -14827,28 +12975,18 @@
+ ;;
+ chorus*)
+ case $cc_basename in
+- cxch68*)
++ cxch68)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- lt_prog_compiler_pic_CXX='-qnocommon'
+- lt_prog_compiler_wl_CXX='-Wl,'
+- ;;
+- esac
+- ;;
+ dgux*)
+ case $cc_basename in
+- ec++*)
++ ec++)
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+- ghcx*)
++ ghcx)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+@@ -14856,22 +12994,22 @@
+ ;;
+ esac
+ ;;
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+- CC*)
++ CC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+- lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
++ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ lt_prog_compiler_pic_CXX='+Z'
+ fi
+ ;;
+- aCC*)
++ aCC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+- lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+- case $host_cpu in
++ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -14884,13 +13022,9 @@
+ ;;
+ esac
+ ;;
+- interix*)
+- # This is c89, which is MS Visual C++ (no shared libs)
+- # Anyone wants to do a port?
+- ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+- CC*)
++ CC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-non_shared'
+ # CC pic flag -KPIC is the default.
+@@ -14899,26 +13033,20 @@
+ ;;
+ esac
+ ;;
+- linux* | k*bsd*-gnu)
++ linux*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # KAI C++ Compiler
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+- icpc* | ecpc*)
++ icpc)
+ # Intel C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+- pgCC*)
+- # Portland Group C++ compiler.
+- lt_prog_compiler_wl_CXX='-Wl,'
+- lt_prog_compiler_pic_CXX='-fpic'
+- lt_prog_compiler_static_CXX='-Bstatic'
+- ;;
+- cxx*)
++ cxx)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+@@ -14935,25 +13063,25 @@
+ ;;
+ mvs*)
+ case $cc_basename in
+- cxx*)
++ cxx)
+ lt_prog_compiler_pic_CXX='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+- cxx*)
++ cxx)
+ # Digital/Compaq C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+@@ -14967,15 +13095,24 @@
+ ;;
+ psos*)
+ ;;
++ sco*)
++ case $cc_basename in
++ CC)
++ lt_prog_compiler_pic_CXX='-fPIC'
++ ;;
++ *)
++ ;;
++ esac
++ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ lt_prog_compiler_wl_CXX='-Qoption ld '
+ ;;
+- gcx*)
++ gcx)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-PIC'
+ ;;
+@@ -14985,12 +13122,12 @@
+ ;;
+ sunos4*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.x
+ lt_prog_compiler_pic_CXX='-pic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+- lcc*)
++ lcc)
+ # Lucid
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+@@ -15000,7 +13137,7 @@
+ ;;
+ tandem*)
+ case $cc_basename in
+- NCC*)
++ NCC)
+ # NonStop-UX NCC 3.20
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+@@ -15008,14 +13145,7 @@
+ ;;
+ esac
+ ;;
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- case $cc_basename in
+- CC*)
+- lt_prog_compiler_wl_CXX='-Wl,'
+- lt_prog_compiler_pic_CXX='-KPIC'
+- lt_prog_compiler_static_CXX='-Bstatic'
+- ;;
+- esac
++ unixware*)
+ ;;
+ vxworks*)
+ ;;
+@@ -15025,16 +13155,16 @@
+ esac
+ fi
+
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+ #
+ # Check to make sure the PIC flag actually works.
+ #
+ if test -n "$lt_prog_compiler_pic_CXX"; then
+
+-{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+ if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -15048,28 +13178,26 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:15054: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:13184: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:15058: \$? = $ac_status" >&5
++ echo "$as_me:13188: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+ if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+ case $lt_prog_compiler_pic_CXX in
+@@ -15082,7 +13210,7 @@
+ fi
+
+ fi
+-case $host_os in
++case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_CXX=
+@@ -15092,50 +13220,8 @@
+ ;;
+ esac
+
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_static_works_CXX=no
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_static_works_CXX=yes
+- fi
+- else
+- lt_prog_compiler_static_works_CXX=yes
+- fi
+- fi
+- $rm conftest*
+- LDFLAGS="$save_LDFLAGS"
+-
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
+-echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; }
+-
+-if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
+- :
+-else
+- lt_prog_compiler_static_CXX=
+-fi
+-
+-
+-{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+ if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -15152,25 +13238,23 @@
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:15158: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:13244: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:15162: \$? = $ac_status" >&5
++ echo "$as_me:13248: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
++ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o_CXX=yes
+ fi
+ fi
+- chmod u+w . 2>&5
++ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+@@ -15181,23 +13265,23 @@
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+ hard_links="nottested"
+ if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+- { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- { echo "$as_me:$LINENO: result: $hard_links" >&5
+-echo "${ECHO_T}$hard_links" >&6; }
++ echo "$as_me:$LINENO: result: $hard_links" >&5
++echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+ echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+@@ -15207,8 +13291,8 @@
+ need_locks=no
+ fi
+
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+@@ -15225,20 +13309,22 @@
+ export_symbols_cmds_CXX="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
+- linux* | k*bsd*-gnu)
+- link_all_deplibs_CXX=no
++ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+
+-{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+-echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
++echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
++echo "${ECHO_T}$ld_shlibs_CXX" >&6
+ test "$ld_shlibs_CXX" = no && can_build_shared=no
+
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
++
+ #
+ # Do we need to explicitly link libc?
+ #
+@@ -15256,8 +13342,8 @@
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+- { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+@@ -15271,7 +13357,6 @@
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_CXX
+- pic_flag=$lt_prog_compiler_pic_CXX
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+@@ -15294,16 +13379,16 @@
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+- { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+-echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; }
++ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
++echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+ ;;
+ esac
+ fi
+ ;;
+ esac
+
+-{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+ library_names_spec=
+ libname_spec='lib$name'
+ soname_spec=
+@@ -15404,7 +13489,7 @@
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+-bsdi[45]*)
++bsdi4*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -15432,8 +13517,7 @@
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
++ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+@@ -15463,7 +13547,7 @@
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+@@ -15486,7 +13570,7 @@
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+@@ -15509,17 +13593,20 @@
+ dynamic_linker=no
+ ;;
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[123]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+@@ -15537,19 +13624,14 @@
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+- freebsd3.[01]* | freebsdelf3.[01]*)
++ freebsd3.01* | freebsdelf3.01*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
++ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+ esac
+ ;;
+
+@@ -15569,7 +13651,7 @@
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+@@ -15609,18 +13691,6 @@
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+@@ -15664,7 +13734,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -15678,10 +13748,31 @@
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '#line 13755 "configure"' > conftest.$ac_ext
++ 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
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
++
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
++ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+@@ -15693,7 +13784,7 @@
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+-netbsdelf*-gnu)
++knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -15702,7 +13793,7 @@
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
++ dynamic_linker='GNU ld.so'
+ ;;
+
+ netbsd*)
+@@ -15742,13 +13833,8 @@
+
+ openbsd*)
+ version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
++ need_version=yes
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+@@ -15786,6 +13872,13 @@
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
+ solaris*)
+ version_type=linux
+ need_lib_prefix=no
+@@ -15811,7 +13904,7 @@
+ need_version=yes
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+@@ -15844,29 +13937,6 @@
+ fi
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
+- esac
+- fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
+-
+ uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -15878,21 +13948,16 @@
+ dynamic_linker=no
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+-echo "${ECHO_T}$dynamic_linker" >&6; }
++echo "$as_me:$LINENO: result: $dynamic_linker" >&5
++echo "${ECHO_T}$dynamic_linker" >&6
+ test "$dynamic_linker" = no && can_build_shared=no
+
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+-fi
+-
+-{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+ hardcode_action_CXX=
+ if test -n "$hardcode_libdir_flag_spec_CXX" || \
+- test -n "$runpath_var_CXX" || \
+- test "X$hardcode_automatic_CXX" = "Xyes" ; then
++ test -n "$runpath_var CXX" || \
++ test "X$hardcode_automatic_CXX"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_CXX" != no &&
+@@ -15912,8 +13977,8 @@
+ # directories.
+ hardcode_action_CXX=unsupported
+ fi
+-{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+-echo "${ECHO_T}$hardcode_action_CXX" >&6; }
++echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
++echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+ if test "$hardcode_action_CXX" = relink; then
+ # Fast installation is not supported
+@@ -15924,5219 +13989,6377 @@
+ enable_fast_install=needless
+ fi
+
+-
+-# The else clause should only fire when bootstrapping the
+-# libtool distribution, otherwise you forgot to ship ltmain.sh
+-# with your package, and you will get complaints that there are
+-# no rules to generate ltmain.sh.
+-if test -f "$ltmain"; then
+- # See if we are running on zsh, and set the options which allow our commands through
+- # without removal of \ escapes.
+- if test -n "${ZSH_VERSION+set}" ; then
+- setopt NO_GLOB_SUBST
+- fi
+- # Now quote all the things that may contain metacharacters while being
+- # careful not to overquote the AC_SUBSTed values. We take copies of the
+- # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+- SED SHELL STRIP \
+- libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+- old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+- deplibs_check_method reload_flag reload_cmds need_locks \
+- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+- lt_cv_sys_global_symbol_to_c_name_address \
+- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+- old_postinstall_cmds old_postuninstall_cmds \
+- compiler_CXX \
+- CC_CXX \
+- LD_CXX \
+- lt_prog_compiler_wl_CXX \
+- lt_prog_compiler_pic_CXX \
+- lt_prog_compiler_static_CXX \
+- lt_prog_compiler_no_builtin_flag_CXX \
+- export_dynamic_flag_spec_CXX \
+- thread_safe_flag_spec_CXX \
+- whole_archive_flag_spec_CXX \
+- enable_shared_with_static_runtimes_CXX \
+- old_archive_cmds_CXX \
+- old_archive_from_new_cmds_CXX \
+- predep_objects_CXX \
+- postdep_objects_CXX \
+- predeps_CXX \
+- postdeps_CXX \
+- compiler_lib_search_path_CXX \
+- archive_cmds_CXX \
+- archive_expsym_cmds_CXX \
+- postinstall_cmds_CXX \
+- postuninstall_cmds_CXX \
+- old_archive_from_expsyms_cmds_CXX \
+- allow_undefined_flag_CXX \
+- no_undefined_flag_CXX \
+- export_symbols_cmds_CXX \
+- hardcode_libdir_flag_spec_CXX \
+- hardcode_libdir_flag_spec_ld_CXX \
+- hardcode_libdir_separator_CXX \
+- hardcode_automatic_CXX \
+- module_cmds_CXX \
+- module_expsym_cmds_CXX \
+- lt_cv_prog_compiler_c_o_CXX \
+- exclude_expsyms_CXX \
+- include_expsyms_CXX; do
+-
+- case $var in
+- old_archive_cmds_CXX | \
+- old_archive_from_new_cmds_CXX | \
+- archive_cmds_CXX | \
+- archive_expsym_cmds_CXX | \
+- module_cmds_CXX | \
+- module_expsym_cmds_CXX | \
+- old_archive_from_expsyms_cmds_CXX | \
+- export_symbols_cmds_CXX | \
+- extract_expsyms_cmds | reload_cmds | finish_cmds | \
+- postinstall_cmds | postuninstall_cmds | \
+- old_postinstall_cmds | old_postuninstall_cmds | \
+- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+- # Double-quote double-evaled strings.
+- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+- ;;
+- *)
+- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+- ;;
+- esac
+- done
+-
+- case $lt_echo in
+- *'\$0 --fallback-echo"')
+- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
++striplib=
++old_striplib=
++echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
++ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++else
++# FIXME - insert some real tests, host_os isn't really good enough
++ case $host_os in
++ darwin*)
++ if test -n "$STRIP" ; then
++ striplib="$STRIP -x"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++ ;;
++ *)
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ ;;
+ esac
++fi
+
+-cfgfile="$ofile"
+-
+- cat <<__EOF__ >> "$cfgfile"
+-# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+-
+-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
++if test "x$enable_dlopen" != xyes; then
++ enable_dlopen=unknown
++ enable_dlopen_self=unknown
++ enable_dlopen_self_static=unknown
++else
++ lt_cv_dlopen=no
++ lt_cv_dlopen_libs=
+
+-# Shell to use when invoking shell scripts.
+-SHELL=$lt_SHELL
++ case $host_os in
++ beos*)
++ lt_cv_dlopen="load_add_on"
++ lt_cv_dlopen_libs=
++ lt_cv_dlopen_self=yes
++ ;;
+
+-# Whether or not to build shared libraries.
+-build_libtool_libs=$enable_shared
++ mingw* | pw32*)
++ lt_cv_dlopen="LoadLibrary"
++ lt_cv_dlopen_libs=
++ ;;
+
+-# Whether or not to build static libraries.
+-build_old_libs=$enable_static
++ cygwin*)
++ lt_cv_dlopen="dlopen"
++ lt_cv_dlopen_libs=
++ ;;
+
+-# Whether or not to add -lc for building shared libraries.
+-build_libtool_need_lc=$archive_cmds_need_lc_CXX
++ darwin*)
++ # if libdl is installed we need to link against it
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
++if test "${ac_cv_lib_dl_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldl $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# Whether or not to disallow shared libs when runtime libs are static
+-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
++/* 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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dl_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Whether or not to optimize for fast installation.
+-fast_install=$enable_fast_install
++ac_cv_lib_dl_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
++if test $ac_cv_lib_dl_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
++else
+
+-# The host system.
+-host_alias=$host_alias
+-host=$host
+-host_os=$host_os
++ lt_cv_dlopen="dyld"
++ lt_cv_dlopen_libs=
++ lt_cv_dlopen_self=yes
+
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
++fi
+
+-# An echo program that does not interpret backslashes.
+-echo=$lt_echo
++ ;;
+
+-# The archiver.
+-AR=$lt_AR
+-AR_FLAGS=$lt_AR_FLAGS
++ *)
++ echo "$as_me:$LINENO: checking for shl_load" >&5
++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
++if test "${ac_cv_func_shl_load+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define shl_load innocuous_shl_load
+
+-# A C compiler.
+-LTCC=$lt_LTCC
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char shl_load (); below.
++ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ <limits.h> exists even on freestanding compilers. */
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
+
+-# A language-specific compiler.
+-CC=$lt_compiler_CXX
++#undef shl_load
+
+-# Is the compiler the GNU C compiler?
+-with_gcc=$GCC_CXX
+-
+-# An ERE matcher.
+-EGREP=$lt_EGREP
+-
+-# The linker used to build libraries.
+-LD=$lt_LD_CXX
++/* 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 shl_load ();
++/* 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_shl_load) || defined (__stub___shl_load)
++choke me
++#else
++char (*f) () = shl_load;
++#endif
++#ifdef __cplusplus
++}
++#endif
+
+-# Whether we need hard or soft links.
+-LN_S=$lt_LN_S
++int
++main ()
++{
++return f != shl_load;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_shl_load=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# A BSD-compatible nm program.
+-NM=$lt_NM
++ac_cv_func_shl_load=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
++echo "${ECHO_T}$ac_cv_func_shl_load" >&6
++if test $ac_cv_func_shl_load = yes; then
++ lt_cv_dlopen="shl_load"
++else
++ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
++if test "${ac_cv_lib_dld_shl_load+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# A symbol stripping program
+-STRIP=$lt_STRIP
++/* 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 shl_load ();
++int
++main ()
++{
++shl_load ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dld_shl_load=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Used to examine libraries when file_magic_cmd begins "file"
+-MAGIC_CMD=$MAGIC_CMD
++ac_cv_lib_dld_shl_load=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
++if test $ac_cv_lib_dld_shl_load = yes; then
++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
++else
++ echo "$as_me:$LINENO: checking for dlopen" >&5
++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
++if test "${ac_cv_func_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define dlopen innocuous_dlopen
+
+-# Used on cygwin: DLL creation program.
+-DLLTOOL="$DLLTOOL"
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char dlopen (); below.
++ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ <limits.h> exists even on freestanding compilers. */
+
+-# Used on cygwin: object dumper.
+-OBJDUMP="$OBJDUMP"
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
+
+-# Used on cygwin: assembler.
+-AS="$AS"
++#undef dlopen
+
+-# The name of the directory that contains temporary libtool files.
+-objdir=$objdir
++/* 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 dlopen ();
++/* 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_dlopen) || defined (__stub___dlopen)
++choke me
++#else
++char (*f) () = dlopen;
++#endif
++#ifdef __cplusplus
++}
++#endif
+
+-# How to create reloadable object files.
+-reload_flag=$lt_reload_flag
+-reload_cmds=$lt_reload_cmds
++int
++main ()
++{
++return f != dlopen;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl_CXX
++ac_cv_func_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
++echo "${ECHO_T}$ac_cv_func_dlopen" >&6
++if test $ac_cv_func_dlopen = yes; then
++ lt_cv_dlopen="dlopen"
++else
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
++if test "${ac_cv_lib_dl_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldl $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# Object file suffix (normally "o").
+-objext="$ac_objext"
++/* 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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dl_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Old archive suffix (normally "a").
+-libext="$libext"
++ac_cv_lib_dl_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
++if test $ac_cv_lib_dl_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
++else
++ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
++if test "${ac_cv_lib_svld_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-lsvld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# Shared library suffix (normally ".so").
+-shrext_cmds='$shrext_cmds'
++/* 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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_svld_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Executable file suffix (normally "").
+-exeext="$exeext"
++ac_cv_lib_svld_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
++if test $ac_cv_lib_svld_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
++else
++ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
++if test "${ac_cv_lib_dld_dld_link+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# Additional compiler flags for building library objects.
+-pic_flag=$lt_lt_prog_compiler_pic_CXX
+-pic_mode=$pic_mode
++/* 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 dld_link ();
++int
++main ()
++{
++dld_link ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dld_dld_link=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# What is the maximum length of a command?
+-max_cmd_len=$lt_cv_sys_max_cmd_len
++ac_cv_lib_dld_dld_link=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
++if test $ac_cv_lib_dld_dld_link = yes; then
++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
++fi
+
+-# Does compiler simultaneously support -c and -o options?
+-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+-# Must we lock files when doing compilation?
+-need_locks=$lt_need_locks
++fi
+
+-# Do we need the lib prefix for modules?
+-need_lib_prefix=$need_lib_prefix
+
+-# Do we need a version for libraries?
+-need_version=$need_version
++fi
+
+-# Whether dlopen is supported.
+-dlopen_support=$enable_dlopen
+
+-# Whether dlopen of programs is supported.
+-dlopen_self=$enable_dlopen_self
++fi
+
+-# Whether dlopen of statically linked programs is supported.
+-dlopen_self_static=$enable_dlopen_self_static
+
+-# Compiler flag to prevent dynamic linking.
+-link_static_flag=$lt_lt_prog_compiler_static_CXX
++fi
+
+-# Compiler flag to turn off builtin functions.
+-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+-# Compiler flag to allow reflexive dlopens.
+-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
++fi
+
+-# Compiler flag to generate shared objects directly from archives.
+-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
++ ;;
++ esac
+
+-# Compiler flag to generate thread-safe objects.
+-thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
++ if test "x$lt_cv_dlopen" != xno; then
++ enable_dlopen=yes
++ else
++ enable_dlopen=no
++ fi
+
+-# Library versioning type.
+-version_type=$version_type
++ case $lt_cv_dlopen in
++ dlopen)
++ save_CPPFLAGS="$CPPFLAGS"
++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+-# Format of library name prefix.
+-libname_spec=$lt_libname_spec
++ save_LDFLAGS="$LDFLAGS"
++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+-# List of archive names. First name is the real one, the rest are links.
+-# The last name is the one that the linker finds with -lNAME.
+-library_names_spec=$lt_library_names_spec
++ save_LIBS="$LIBS"
++ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+-# The coded name of the library, if different from the real name.
+-soname_spec=$lt_soname_spec
++ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
++if test "${lt_cv_dlopen_self+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test "$cross_compiling" = yes; then :
++ lt_cv_dlopen_self=cross
++else
++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
++ lt_status=$lt_dlunknown
++ cat > conftest.$ac_ext <<EOF
++#line 14626 "configure"
++#include "confdefs.h"
+
+-# Commands used to build and install an old-style archive.
+-RANLIB=$lt_RANLIB
+-old_archive_cmds=$lt_old_archive_cmds_CXX
+-old_postinstall_cmds=$lt_old_postinstall_cmds
+-old_postuninstall_cmds=$lt_old_postuninstall_cmds
++#if HAVE_DLFCN_H
++#include <dlfcn.h>
++#endif
+
+-# Create an old-style archive from a shared archive.
+-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
++#include <stdio.h>
+
+-# Create a temporary old-style archive to link instead of a shared archive.
+-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
++#ifdef RTLD_GLOBAL
++# define LT_DLGLOBAL RTLD_GLOBAL
++#else
++# ifdef DL_GLOBAL
++# define LT_DLGLOBAL DL_GLOBAL
++# else
++# define LT_DLGLOBAL 0
++# endif
++#endif
+
+-# Commands used to build and install a shared archive.
+-archive_cmds=$lt_archive_cmds_CXX
+-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+-postinstall_cmds=$lt_postinstall_cmds
+-postuninstall_cmds=$lt_postuninstall_cmds
++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
++ find out it does not work in some platform. */
++#ifndef LT_DLLAZY_OR_NOW
++# ifdef RTLD_LAZY
++# define LT_DLLAZY_OR_NOW RTLD_LAZY
++# else
++# ifdef DL_LAZY
++# define LT_DLLAZY_OR_NOW DL_LAZY
++# else
++# ifdef RTLD_NOW
++# define LT_DLLAZY_OR_NOW RTLD_NOW
++# else
++# ifdef DL_NOW
++# define LT_DLLAZY_OR_NOW DL_NOW
++# else
++# define LT_DLLAZY_OR_NOW 0
++# endif
++# endif
++# endif
++# endif
++#endif
+
+-# Commands used to build a loadable module (assumed same as above if empty)
+-module_cmds=$lt_module_cmds_CXX
+-module_expsym_cmds=$lt_module_expsym_cmds_CXX
++#ifdef __cplusplus
++extern "C" void exit (int);
++#endif
+
+-# Commands to strip libraries.
+-old_striplib=$lt_old_striplib
+-striplib=$lt_striplib
++void fnord() { int i=42;}
++int main ()
++{
++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
++ int status = $lt_dlunknown;
+
+-# Dependencies to place before the objects being linked to create a
+-# shared library.
+-predep_objects=$lt_predep_objects_CXX
++ if (self)
++ {
++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
++ /* dlclose (self); */
++ }
+
+-# Dependencies to place after the objects being linked to create a
+-# shared library.
+-postdep_objects=$lt_postdep_objects_CXX
++ exit (status);
++}
++EOF
++ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
++ (./conftest; exit; ) 2>/dev/null
++ lt_status=$?
++ case x$lt_status in
++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
++ esac
++ else :
++ # compilation failed
++ lt_cv_dlopen_self=no
++ fi
++fi
++rm -fr conftest*
+
+-# Dependencies to place before the objects being linked to create a
+-# shared library.
+-predeps=$lt_predeps_CXX
+
+-# Dependencies to place after the objects being linked to create a
+-# shared library.
+-postdeps=$lt_postdeps_CXX
++fi
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+-# The library search path used internally by the compiler when linking
+-# a shared library.
+-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+-
+-# Method to check whether dependent libraries are shared objects.
+-deplibs_check_method=$lt_deplibs_check_method
++ if test "x$lt_cv_dlopen_self" = xyes; then
++ LDFLAGS="$LDFLAGS $link_static_flag"
++ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
++if test "${lt_cv_dlopen_self_static+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test "$cross_compiling" = yes; then :
++ lt_cv_dlopen_self_static=cross
++else
++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
++ lt_status=$lt_dlunknown
++ cat > conftest.$ac_ext <<EOF
++#line 14724 "configure"
++#include "confdefs.h"
+
+-# Command to use when deplibs_check_method == file_magic.
+-file_magic_cmd=$lt_file_magic_cmd
++#if HAVE_DLFCN_H
++#include <dlfcn.h>
++#endif
+
+-# Flag that allows shared libraries with undefined symbols to be built.
+-allow_undefined_flag=$lt_allow_undefined_flag_CXX
++#include <stdio.h>
+
+-# Flag that forces no undefined symbols.
+-no_undefined_flag=$lt_no_undefined_flag_CXX
++#ifdef RTLD_GLOBAL
++# define LT_DLGLOBAL RTLD_GLOBAL
++#else
++# ifdef DL_GLOBAL
++# define LT_DLGLOBAL DL_GLOBAL
++# else
++# define LT_DLGLOBAL 0
++# endif
++#endif
+
+-# Commands used to finish a libtool library installation in a directory.
+-finish_cmds=$lt_finish_cmds
++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
++ find out it does not work in some platform. */
++#ifndef LT_DLLAZY_OR_NOW
++# ifdef RTLD_LAZY
++# define LT_DLLAZY_OR_NOW RTLD_LAZY
++# else
++# ifdef DL_LAZY
++# define LT_DLLAZY_OR_NOW DL_LAZY
++# else
++# ifdef RTLD_NOW
++# define LT_DLLAZY_OR_NOW RTLD_NOW
++# else
++# ifdef DL_NOW
++# define LT_DLLAZY_OR_NOW DL_NOW
++# else
++# define LT_DLLAZY_OR_NOW 0
++# endif
++# endif
++# endif
++# endif
++#endif
+
+-# Same as above, but a single script fragment to be evaled but not shown.
+-finish_eval=$lt_finish_eval
++#ifdef __cplusplus
++extern "C" void exit (int);
++#endif
+
+-# Take the output of nm and produce a listing of raw symbols and C names.
+-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
++void fnord() { int i=42;}
++int main ()
++{
++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
++ int status = $lt_dlunknown;
+
+-# Transform the output of nm in a proper C declaration
+-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
++ if (self)
++ {
++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
++ /* dlclose (self); */
++ }
+
+-# Transform the output of nm in a C name address pair
+-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
++ exit (status);
++}
++EOF
++ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
++ (./conftest; exit; ) 2>/dev/null
++ lt_status=$?
++ case x$lt_status in
++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
++ esac
++ else :
++ # compilation failed
++ lt_cv_dlopen_self_static=no
++ fi
++fi
++rm -fr conftest*
+
+-# This is the shared library runtime path variable.
+-runpath_var=$runpath_var
+
+-# This is the shared library path variable.
+-shlibpath_var=$shlibpath_var
++fi
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
++ fi
+
+-# Is shlibpath searched before the hard-coded library search path?
+-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
++ CPPFLAGS="$save_CPPFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++ LIBS="$save_LIBS"
++ ;;
++ esac
+
+-# How to hardcode a shared library path into an executable.
+-hardcode_action=$hardcode_action_CXX
++ case $lt_cv_dlopen_self in
++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
++ *) enable_dlopen_self=unknown ;;
++ esac
+
+-# Whether we should hardcode library paths into libraries.
+-hardcode_into_libs=$hardcode_into_libs
++ case $lt_cv_dlopen_self_static in
++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
++ *) enable_dlopen_self_static=unknown ;;
++ esac
++fi
+
+-# Flag to hardcode \$libdir into a binary during linking.
+-# This must work even if \$libdir does not exist.
+-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+-# If ld is used when linking, flag to hardcode \$libdir into
+-# a binary during linking. This must work even if \$libdir does
+-# not exist.
+-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
++# The else clause should only fire when bootstrapping the
++# libtool distribution, otherwise you forgot to ship ltmain.sh
++# with your package, and you will get complaints that there are
++# no rules to generate ltmain.sh.
++if test -f "$ltmain"; then
++ # See if we are running on zsh, and set the options which allow our commands through
++ # without removal of \ escapes.
++ if test -n "${ZSH_VERSION+set}" ; then
++ setopt NO_GLOB_SUBST
++ fi
++ # Now quote all the things that may contain metacharacters while being
++ # careful not to overquote the AC_SUBSTed values. We take copies of the
++ # variables and quote the copies for generation of the libtool script.
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
++ SED SHELL STRIP \
++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
++ deplibs_check_method reload_flag reload_cmds need_locks \
++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
++ lt_cv_sys_global_symbol_to_c_name_address \
++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
++ old_postinstall_cmds old_postuninstall_cmds \
++ compiler_CXX \
++ CC_CXX \
++ LD_CXX \
++ lt_prog_compiler_wl_CXX \
++ lt_prog_compiler_pic_CXX \
++ lt_prog_compiler_static_CXX \
++ lt_prog_compiler_no_builtin_flag_CXX \
++ export_dynamic_flag_spec_CXX \
++ thread_safe_flag_spec_CXX \
++ whole_archive_flag_spec_CXX \
++ enable_shared_with_static_runtimes_CXX \
++ old_archive_cmds_CXX \
++ old_archive_from_new_cmds_CXX \
++ predep_objects_CXX \
++ postdep_objects_CXX \
++ predeps_CXX \
++ postdeps_CXX \
++ compiler_lib_search_path_CXX \
++ archive_cmds_CXX \
++ archive_expsym_cmds_CXX \
++ postinstall_cmds_CXX \
++ postuninstall_cmds_CXX \
++ old_archive_from_expsyms_cmds_CXX \
++ allow_undefined_flag_CXX \
++ no_undefined_flag_CXX \
++ export_symbols_cmds_CXX \
++ hardcode_libdir_flag_spec_CXX \
++ hardcode_libdir_flag_spec_ld_CXX \
++ hardcode_libdir_separator_CXX \
++ hardcode_automatic_CXX \
++ module_cmds_CXX \
++ module_expsym_cmds_CXX \
++ lt_cv_prog_compiler_c_o_CXX \
++ exclude_expsyms_CXX \
++ include_expsyms_CXX; do
+
+-# Whether we need a single -rpath flag with a separated argument.
+-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
++ case $var in
++ old_archive_cmds_CXX | \
++ old_archive_from_new_cmds_CXX | \
++ archive_cmds_CXX | \
++ archive_expsym_cmds_CXX | \
++ module_cmds_CXX | \
++ module_expsym_cmds_CXX | \
++ old_archive_from_expsyms_cmds_CXX | \
++ export_symbols_cmds_CXX | \
++ extract_expsyms_cmds | reload_cmds | finish_cmds | \
++ postinstall_cmds | postuninstall_cmds | \
++ old_postinstall_cmds | old_postuninstall_cmds | \
++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
++ # Double-quote double-evaled strings.
++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
++ ;;
++ *)
++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
++ ;;
++ esac
++ done
+
+-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+-# resulting binary.
+-hardcode_direct=$hardcode_direct_CXX
++ case $lt_echo in
++ *'\$0 --fallback-echo"')
++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
++ ;;
++ esac
+
+-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+-# resulting binary.
+-hardcode_minus_L=$hardcode_minus_L_CXX
++cfgfile="$ofile"
+
+-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+-# the resulting binary.
+-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
++ cat <<__EOF__ >> "$cfgfile"
++# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+-# Set to yes if building a shared library automatically hardcodes DIR into the library
+-# and all subsequent libraries and executables linked against it.
+-hardcode_automatic=$hardcode_automatic_CXX
++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+-# Variables whose values should be saved in libtool wrapper scripts and
+-# restored at relink time.
+-variables_saved_for_relink="$variables_saved_for_relink"
++# Shell to use when invoking shell scripts.
++SHELL=$lt_SHELL
+
+-# Whether libtool must link a program against all its dependency libraries.
+-link_all_deplibs=$link_all_deplibs_CXX
++# Whether or not to build shared libraries.
++build_libtool_libs=$enable_shared
+
+-# Compile-time system search path for libraries
+-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
++# Whether or not to build static libraries.
++build_old_libs=$enable_static
+
+-# Run-time system search path for libraries
+-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
++# Whether or not to add -lc for building shared libraries.
++build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path="$fix_srcfile_path_CXX"
++# Whether or not to disallow shared libs when runtime libs are static
++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+-# Set to yes if exported symbols are required.
+-always_export_symbols=$always_export_symbols_CXX
++# Whether or not to optimize for fast installation.
++fast_install=$enable_fast_install
+
+-# The commands to list exported symbols.
+-export_symbols_cmds=$lt_export_symbols_cmds_CXX
++# The host system.
++host_alias=$host_alias
++host=$host
+
+-# The commands to extract the exported symbol list from a shared archive.
+-extract_expsyms_cmds=$lt_extract_expsyms_cmds
++# An echo program that does not interpret backslashes.
++echo=$lt_echo
+
+-# Symbols that should not be listed in the preloaded symbols.
+-exclude_expsyms=$lt_exclude_expsyms_CXX
++# The archiver.
++AR=$lt_AR
++AR_FLAGS=$lt_AR_FLAGS
+
+-# Symbols that must always be exported.
+-include_expsyms=$lt_include_expsyms_CXX
++# A C compiler.
++LTCC=$lt_LTCC
+
+-# ### END LIBTOOL TAG CONFIG: $tagname
++# A language-specific compiler.
++CC=$lt_compiler_CXX
+
+-__EOF__
++# Is the compiler the GNU C compiler?
++with_gcc=$GCC_CXX
+
++# An ERE matcher.
++EGREP=$lt_EGREP
+
+-else
+- # If there is no Makefile yet, we rely on a make rule to execute
+- # `config.status --recheck' to rerun these tests and create the
+- # libtool script then.
+- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+- if test -f "$ltmain_in"; then
+- test -f Makefile && make "$ltmain"
+- fi
+-fi
++# The linker used to build libraries.
++LD=$lt_LD_CXX
+
++# Whether we need hard or soft links.
++LN_S=$lt_LN_S
+
+-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
++# A BSD-compatible nm program.
++NM=$lt_NM
+
+-CC=$lt_save_CC
+-LDCXX=$LD
+-LD=$lt_save_LD
+-GCC=$lt_save_GCC
+-with_gnu_ldcxx=$with_gnu_ld
+-with_gnu_ld=$lt_save_with_gnu_ld
+-lt_cv_path_LDCXX=$lt_cv_path_LD
+-lt_cv_path_LD=$lt_save_path_LD
+-lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+-lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
++# A symbol stripping program
++STRIP=$lt_STRIP
+
+- else
+- tagname=""
+- fi
+- ;;
++# Used to examine libraries when file_magic_cmd begins "file"
++MAGIC_CMD=$MAGIC_CMD
+
+- F77)
+- if test -n "$F77" && test "X$F77" != "Xno"; then
++# Used on cygwin: DLL creation program.
++DLLTOOL="$DLLTOOL"
+
+-ac_ext=f
+-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
++# Used on cygwin: object dumper.
++OBJDUMP="$OBJDUMP"
+
++# Used on cygwin: assembler.
++AS="$AS"
+
+-archive_cmds_need_lc_F77=no
+-allow_undefined_flag_F77=
+-always_export_symbols_F77=no
+-archive_expsym_cmds_F77=
+-export_dynamic_flag_spec_F77=
+-hardcode_direct_F77=no
+-hardcode_libdir_flag_spec_F77=
+-hardcode_libdir_flag_spec_ld_F77=
+-hardcode_libdir_separator_F77=
+-hardcode_minus_L_F77=no
+-hardcode_automatic_F77=no
+-module_cmds_F77=
+-module_expsym_cmds_F77=
+-link_all_deplibs_F77=unknown
+-old_archive_cmds_F77=$old_archive_cmds
+-no_undefined_flag_F77=
+-whole_archive_flag_spec_F77=
+-enable_shared_with_static_runtimes_F77=no
++# The name of the directory that contains temporary libtool files.
++objdir=$objdir
+
+-# Source file extension for f77 test sources.
+-ac_ext=f
++# How to create reloadable object files.
++reload_flag=$lt_reload_flag
++reload_cmds=$lt_reload_cmds
+
+-# Object file extension for compiled f77 test sources.
+-objext=o
+-objext_F77=$objext
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl_CXX
+
+-# Code to be used in simple compile tests
+-lt_simple_compile_test_code=" subroutine t\n return\n end\n"
++# Object file suffix (normally "o").
++objext="$ac_objext"
+
+-# Code to be used in simple link tests
+-lt_simple_link_test_code=" program t\n end\n"
++# Old archive suffix (normally "a").
++libext="$libext"
+
+-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
++# Shared library suffix (normally ".so").
++shrext_cmds='$shrext_cmds'
+
+-# If no C compiler was specified, use CC.
+-LTCC=${LTCC-"$CC"}
++# Executable file suffix (normally "").
++exeext="$exeext"
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
++# Additional compiler flags for building library objects.
++pic_flag=$lt_lt_prog_compiler_pic_CXX
++pic_mode=$pic_mode
+
+-# Allow CC to be a program name with arguments.
+-compiler=$CC
++# What is the maximum length of a command?
++max_cmd_len=$lt_cv_sys_max_cmd_len
+
++# Does compiler simultaneously support -c and -o options?
++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
++# Must we lock files when doing compilation ?
++need_locks=$lt_need_locks
+
++# Do we need the lib prefix for modules?
++need_lib_prefix=$need_lib_prefix
+
+-# Allow CC to be a program name with arguments.
+-lt_save_CC="$CC"
+-CC=${F77-"f77"}
+-compiler=$CC
+-compiler_F77=$CC
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
++# Do we need a version for libraries?
++need_version=$need_version
+
++# Whether dlopen is supported.
++dlopen_support=$enable_dlopen
+
+-{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
+-{ echo "$as_me:$LINENO: result: $can_build_shared" >&5
+-echo "${ECHO_T}$can_build_shared" >&6; }
++# Whether dlopen of programs is supported.
++dlopen_self=$enable_dlopen_self
+
+-{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; }
+-test "$can_build_shared" = "no" && enable_shared=no
++# Whether dlopen of statically linked programs is supported.
++dlopen_self_static=$enable_dlopen_self_static
+
+-# On AIX, shared libraries and static libraries use the same namespace, and
+-# are all built from PIC.
+-case $host_os in
+-aix3*)
+- test "$enable_shared" = yes && enable_static=no
+- if test -n "$RANLIB"; then
+- archive_cmds="$archive_cmds~\$RANLIB \$lib"
+- postinstall_cmds='$RANLIB $lib'
+- fi
+- ;;
+-aix4* | aix5*)
+- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+- test "$enable_shared" = yes && enable_static=no
+- fi
+- ;;
+-esac
+-{ echo "$as_me:$LINENO: result: $enable_shared" >&5
+-echo "${ECHO_T}$enable_shared" >&6; }
++# Compiler flag to prevent dynamic linking.
++link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+-{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
+-# Make sure either enable_shared or enable_static is yes.
+-test "$enable_shared" = yes || enable_static=yes
+-{ echo "$as_me:$LINENO: result: $enable_static" >&5
+-echo "${ECHO_T}$enable_static" >&6; }
++# Compiler flag to turn off builtin functions.
++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+-GCC_F77="$G77"
+-LD_F77="$LD"
++# Compiler flag to allow reflexive dlopens.
++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+-lt_prog_compiler_wl_F77=
+-lt_prog_compiler_pic_F77=
+-lt_prog_compiler_static_F77=
++# Compiler flag to generate shared objects directly from archives.
++whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
++# Compiler flag to generate thread-safe objects.
++thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+- if test "$GCC" = yes; then
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_static_F77='-static'
++# Library versioning type.
++version_type=$version_type
+
+- case $host_os in
+- aix*)
+- # All AIX code is PIC.
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- lt_prog_compiler_static_F77='-Bstatic'
+- fi
+- ;;
++# Format of library name prefix.
++libname_spec=$lt_libname_spec
+
+- amigaos*)
+- # FIXME: we need at least 68020 code to build shared libraries, but
+- # adding the `-m68020' flag to GCC prevents building anything better,
+- # like `-m68040'.
+- lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+- ;;
++# List of archive names. First name is the real one, the rest are links.
++# The last name is the one that the linker finds with -lNAME.
++library_names_spec=$lt_library_names_spec
+
+- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+- # PIC is the default for these OSes.
+- ;;
++# The coded name of the library, if different from the real name.
++soname_spec=$lt_soname_spec
+
+- mingw* | pw32* | os2*)
+- # This hack is so that the source file can tell whether it is being
+- # built for inclusion in a dll (and should export symbols for example).
+- lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+- ;;
++# Commands used to build and install an old-style archive.
++RANLIB=$lt_RANLIB
++old_archive_cmds=$lt_old_archive_cmds_CXX
++old_postinstall_cmds=$lt_old_postinstall_cmds
++old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+- darwin* | rhapsody*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- lt_prog_compiler_pic_F77='-fno-common'
+- ;;
++# Create an old-style archive from a shared archive.
++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
++# Create a temporary old-style archive to link instead of a shared archive.
++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+- msdosdjgpp*)
+- # Just because we use GCC doesn't mean we suddenly get shared libraries
+- # on systems that don't support them.
+- lt_prog_compiler_can_build_shared_F77=no
+- enable_shared=no
+- ;;
++# Commands used to build and install a shared archive.
++archive_cmds=$lt_archive_cmds_CXX
++archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
++postinstall_cmds=$lt_postinstall_cmds
++postuninstall_cmds=$lt_postuninstall_cmds
+
+- sysv4*MP*)
+- if test -d /usr/nec; then
+- lt_prog_compiler_pic_F77=-Kconform_pic
+- fi
+- ;;
++# Commands used to build a loadable module (assumed same as above if empty)
++module_cmds=$lt_module_cmds_CXX
++module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+- hpux*)
+- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+- # not for PA HP-UX.
+- case $host_cpu in
+- hppa*64*|ia64*)
+- # +Z the default
+- ;;
+- *)
+- lt_prog_compiler_pic_F77='-fPIC'
+- ;;
+- esac
+- ;;
++# Commands to strip libraries.
++old_striplib=$lt_old_striplib
++striplib=$lt_striplib
+
+- *)
+- lt_prog_compiler_pic_F77='-fPIC'
+- ;;
+- esac
+- else
+- # PORTME Check for flag to pass linker flags through the system compiler.
+- case $host_os in
+- aix*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- lt_prog_compiler_static_F77='-Bstatic'
+- else
+- lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+- fi
+- ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- lt_prog_compiler_pic_F77='-qnocommon'
+- lt_prog_compiler_wl_F77='-Wl,'
+- ;;
+- esac
+- ;;
++# Dependencies to place before the objects being linked to create a
++# shared library.
++predep_objects=$lt_predep_objects_CXX
+
+- mingw* | pw32* | os2*)
+- # This hack is so that the source file can tell whether it is being
+- # built for inclusion in a dll (and should export symbols for example).
+- lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+- ;;
++# Dependencies to place after the objects being linked to create a
++# shared library.
++postdep_objects=$lt_postdep_objects_CXX
+
+- hpux9* | hpux10* | hpux11*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+- # not for PA HP-UX.
+- case $host_cpu in
+- hppa*64*|ia64*)
+- # +Z the default
+- ;;
+- *)
+- lt_prog_compiler_pic_F77='+Z'
+- ;;
+- esac
+- # Is there a better lt_prog_compiler_static that works with the bundled CC?
+- lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+- ;;
++# Dependencies to place before the objects being linked to create a
++# shared library.
++predeps=$lt_predeps_CXX
+
+- irix5* | irix6* | nonstopux*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- # PIC (with -KPIC) is the default.
+- lt_prog_compiler_static_F77='-non_shared'
+- ;;
++# Dependencies to place after the objects being linked to create a
++# shared library.
++postdeps=$lt_postdeps_CXX
+
+- newsos6)
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# The library search path used internally by the compiler when linking
++# a shared library.
++compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+- linux* | k*bsd*-gnu)
+- case $cc_basename in
+- icc* | ecc*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-static'
+- ;;
+- pgcc* | pgf77* | pgf90* | pgf95*)
+- # Portland Group compilers (*not* the Pentium gcc compiler,
+- # which looks to be a dead project)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_pic_F77='-fpic'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
+- ccc*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- # All Alpha code is PIC.
+- lt_prog_compiler_static_F77='-non_shared'
+- ;;
+- esac
+- ;;
++# Method to check whether dependent libraries are shared objects.
++deplibs_check_method=$lt_deplibs_check_method
+
+- osf3* | osf4* | osf5*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- # All OSF/1 code is PIC.
+- lt_prog_compiler_static_F77='-non_shared'
+- ;;
++# Command to use when deplibs_check_method == file_magic.
++file_magic_cmd=$lt_file_magic_cmd
+
+- solaris*)
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- case $cc_basename in
+- f77* | f90* | f95*)
+- lt_prog_compiler_wl_F77='-Qoption ld ';;
+- *)
+- lt_prog_compiler_wl_F77='-Wl,';;
+- esac
+- ;;
++# Flag that allows shared libraries with undefined symbols to be built.
++allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+- sunos4*)
+- lt_prog_compiler_wl_F77='-Qoption ld '
+- lt_prog_compiler_pic_F77='-PIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Flag that forces no undefined symbols.
++no_undefined_flag=$lt_no_undefined_flag_CXX
+
+- sysv4 | sysv4.2uw2* | sysv4.3*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Commands used to finish a libtool library installation in a directory.
++finish_cmds=$lt_finish_cmds
+
+- sysv4*MP*)
+- if test -d /usr/nec ;then
+- lt_prog_compiler_pic_F77='-Kconform_pic'
+- lt_prog_compiler_static_F77='-Bstatic'
+- fi
+- ;;
++# Same as above, but a single script fragment to be evaled but not shown.
++finish_eval=$lt_finish_eval
+
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Take the output of nm and produce a listing of raw symbols and C names.
++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+- unicos*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_can_build_shared_F77=no
+- ;;
++# Transform the output of nm in a proper C declaration
++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+- uts4*)
+- lt_prog_compiler_pic_F77='-pic'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Transform the output of nm in a C name address pair
++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+- *)
+- lt_prog_compiler_can_build_shared_F77=no
+- ;;
+- esac
+- fi
++# This is the shared library runtime path variable.
++runpath_var=$runpath_var
+
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; }
++# This is the shared library path variable.
++shlibpath_var=$shlibpath_var
+
+-#
+-# Check to make sure the PIC flag actually works.
+-#
+-if test -n "$lt_prog_compiler_pic_F77"; then
++# Is shlibpath searched before the hard-coded library search path?
++shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+-{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_pic_works_F77=no
+- ac_outfile=conftest.$ac_objext
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+- lt_compiler_flag="$lt_prog_compiler_pic_F77"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- # The option is referenced via a variable to avoid confusing sed.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:16719: $lt_compile\"" >&5)
+- (eval "$lt_compile" 2>conftest.err)
+- ac_status=$?
+- cat conftest.err >&5
+- echo "$as_me:16723: \$? = $ac_status" >&5
+- if (exit $ac_status) && test -s "$ac_outfile"; then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_pic_works_F77=yes
+- fi
+- fi
+- $rm conftest*
++# How to hardcode a shared library path into an executable.
++hardcode_action=$hardcode_action_CXX
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; }
++# Whether we should hardcode library paths into libraries.
++hardcode_into_libs=$hardcode_into_libs
+
+-if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+- case $lt_prog_compiler_pic_F77 in
+- "" | " "*) ;;
+- *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+- esac
+-else
+- lt_prog_compiler_pic_F77=
+- lt_prog_compiler_can_build_shared_F77=no
+-fi
++# Flag to hardcode \$libdir into a binary during linking.
++# This must work even if \$libdir does not exist.
++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+-fi
+-case $host_os in
+- # For platforms which do not support PIC, -DPIC is meaningless:
+- *djgpp*)
+- lt_prog_compiler_pic_F77=
+- ;;
+- *)
+- lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+- ;;
+-esac
++# If ld is used when linking, flag to hardcode \$libdir into
++# a binary during linking. This must work even if \$libdir does
++# not exist.
++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
+-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_static_works_F77+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_static_works_F77=no
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_static_works_F77=yes
+- fi
+- else
+- lt_prog_compiler_static_works_F77=yes
+- fi
+- fi
+- $rm conftest*
+- LDFLAGS="$save_LDFLAGS"
++# Whether we need a single -rpath flag with a separated argument.
++hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
+-echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; }
++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
++# resulting binary.
++hardcode_direct=$hardcode_direct_CXX
+
+-if test x"$lt_prog_compiler_static_works_F77" = xyes; then
+- :
+-else
+- lt_prog_compiler_static_F77=
+-fi
++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
++# resulting binary.
++hardcode_minus_L=$hardcode_minus_L_CXX
+
++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
++# the resulting binary.
++hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+-{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+-if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_cv_prog_compiler_c_o_F77=no
+- $rm -r conftest 2>/dev/null
+- mkdir conftest
+- cd conftest
+- mkdir out
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+-
+- lt_compiler_flag="-o out/conftest2.$ac_objext"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:16823: $lt_compile\"" >&5)
+- (eval "$lt_compile" 2>out/conftest.err)
+- ac_status=$?
+- cat out/conftest.err >&5
+- echo "$as_me:16827: \$? = $ac_status" >&5
+- if (exit $ac_status) && test -s out/conftest2.$ac_objext
+- then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+- lt_cv_prog_compiler_c_o_F77=yes
+- fi
+- fi
+- chmod u+w . 2>&5
+- $rm conftest*
+- # SGI C++ compiler will create directory out/ii_files/ for
+- # template instantiation
+- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+- $rm out/* && rmdir out
+- cd ..
+- rmdir conftest
+- $rm conftest*
+-
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; }
++# Set to yes if building a shared library automatically hardcodes DIR into the library
++# and all subsequent libraries and executables linked against it.
++hardcode_automatic=$hardcode_automatic_CXX
+
++# Variables whose values should be saved in libtool wrapper scripts and
++# restored at relink time.
++variables_saved_for_relink="$variables_saved_for_relink"
+
+-hard_links="nottested"
+-if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+- # do not overwrite the value of need_locks provided by the user
+- { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
+- hard_links=yes
+- $rm conftest*
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- touch conftest.a
+- ln conftest.a conftest.b 2>&5 || hard_links=no
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- { echo "$as_me:$LINENO: result: $hard_links" >&5
+-echo "${ECHO_T}$hard_links" >&6; }
+- if test "$hard_links" = no; then
+- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+- need_locks=warn
+- fi
+-else
+- need_locks=no
+-fi
++# Whether libtool must link a program against all its dependency libraries.
++link_all_deplibs=$link_all_deplibs_CXX
+
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++# Compile-time system search path for libraries
++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+- runpath_var=
+- allow_undefined_flag_F77=
+- enable_shared_with_static_runtimes_F77=no
+- archive_cmds_F77=
+- archive_expsym_cmds_F77=
+- old_archive_From_new_cmds_F77=
+- old_archive_from_expsyms_cmds_F77=
+- export_dynamic_flag_spec_F77=
+- whole_archive_flag_spec_F77=
+- thread_safe_flag_spec_F77=
+- hardcode_libdir_flag_spec_F77=
+- hardcode_libdir_flag_spec_ld_F77=
+- hardcode_libdir_separator_F77=
+- hardcode_direct_F77=no
+- hardcode_minus_L_F77=no
+- hardcode_shlibpath_var_F77=unsupported
+- link_all_deplibs_F77=unknown
+- hardcode_automatic_F77=no
+- module_cmds_F77=
+- module_expsym_cmds_F77=
+- always_export_symbols_F77=no
+- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+- # include_expsyms should be a list of space-separated symbols to be *always*
+- # included in the symbol list
+- include_expsyms_F77=
+- # exclude_expsyms can be an extended regexp of symbols to exclude
+- # it will be wrapped by ` (' and `)$', so one must not match beginning or
+- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+- # as well as any symbol that contains `d'.
+- exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+- # platforms (ab)use it in PIC code, but their linkers get confused if
+- # the symbol is explicitly referenced. Since portable code cannot
+- # rely on this symbol name, it's probably fine to never include it in
+- # preloaded symbol tables.
+- extract_expsyms_cmds=
+- # Just being paranoid about ensuring that cc_basename is set.
+- for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
++# Run-time system search path for libraries
++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+- case $host_os in
+- cygwin* | mingw* | pw32*)
+- # FIXME: the MSVC++ port hasn't been tested in a loooong time
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- if test "$GCC" != yes; then
+- with_gnu_ld=no
+- fi
+- ;;
+- interix*)
+- # we just hope/assume this is gcc and not c89 (= MSVC++)
+- with_gnu_ld=yes
+- ;;
+- openbsd*)
+- with_gnu_ld=no
+- ;;
+- esac
++# Fix the shell variable \$srcfile for the compiler.
++fix_srcfile_path="$fix_srcfile_path_CXX"
+
+- ld_shlibs_F77=yes
+- if test "$with_gnu_ld" = yes; then
+- # If archive_cmds runs LD, not CC, wlarc should be empty
+- wlarc='${wl}'
++# Set to yes if exported symbols are required.
++always_export_symbols=$always_export_symbols_CXX
+
+- # Set some defaults for GNU ld with shared library support. These
+- # are reset later if shared libraries are not supported. Putting them
+- # here allows them to be overridden if necessary.
+- runpath_var=LD_RUN_PATH
+- hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+- export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+- whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- whole_archive_flag_spec_F77=
+- fi
+- supports_anon_versioning=no
+- case `$LD -v 2>/dev/null` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+- *\ 2.11.*) ;; # other 2.11 versions
+- *) supports_anon_versioning=yes ;;
+- esac
++# The commands to list exported symbols.
++export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+- # See if GNU ld supports shared libraries.
+- case $host_os in
+- aix3* | aix4* | aix5*)
+- # On AIX/PPC, the GNU linker is very broken
+- if test "$host_cpu" != ia64; then
+- ld_shlibs_F77=no
+- cat <<EOF 1>&2
++# The commands to extract the exported symbol list from a shared archive.
++extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+-*** to be unable to reliably create shared libraries on AIX.
+-*** Therefore, libtool is disabling shared libraries support. If you
+-*** really care for shared libraries, you may want to modify your PATH
+-*** so that a non-GNU linker is found, and then restart.
++# Symbols that should not be listed in the preloaded symbols.
++exclude_expsyms=$lt_exclude_expsyms_CXX
+
+-EOF
+- fi
+- ;;
++# Symbols that must always be exported.
++include_expsyms=$lt_include_expsyms_CXX
+
+- amigaos*)
+- archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_minus_L_F77=yes
++# ### END LIBTOOL TAG CONFIG: $tagname
+
+- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+- # that the semantics of dynamic libraries on AmigaOS, at least up
+- # to version 4, is to share data among multiple programs linked
+- # with the same dynamic library. Since this doesn't match the
+- # behavior of shared libraries on other platforms, we can't use
+- # them.
+- ld_shlibs_F77=no
+- ;;
++__EOF__
+
+- beos*)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- allow_undefined_flag_F77=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- else
+- ld_shlibs_F77=no
+- fi
+- ;;
+
+- cygwin* | mingw* | pw32*)
+- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+- # as there is no search path for DLLs.
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- allow_undefined_flag_F77=unsupported
+- always_export_symbols_F77=no
+- enable_shared_with_static_runtimes_F77=yes
+- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
++else
++ # If there is no Makefile yet, we rely on a make rule to execute
++ # `config.status --recheck' to rerun these tests and create the
++ # libtool script then.
++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
++ if test -f "$ltmain_in"; then
++ test -f Makefile && make "$ltmain"
++ fi
++fi
+
+- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- # If the export-symbols file already is a .def file (1st line
+- # is EXPORTS), use it as is; otherwise, prepend...
+- archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+- cp $export_symbols $output_objdir/$soname.def;
+- else
+- echo EXPORTS > $output_objdir/$soname.def;
+- cat $export_symbols >> $output_objdir/$soname.def;
+- fi~
+- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- ld_shlibs_F77=no
+- fi
+- ;;
+
+- interix3*)
+- hardcode_direct_F77=no
+- hardcode_shlibpath_var_F77=no
+- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_F77='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
++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
+
+- linux* | k*bsd*-gnu)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- tmp_addflag=
+- case $cc_basename,$host_cpu in
+- pgcc*) # Portland Group C compiler
+- whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag'
+- ;;
+- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+- whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag -Mnomain' ;;
+- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+- tmp_addflag=' -i_dynamic' ;;
+- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+- tmp_addflag=' -i_dynamic -nofor_main' ;;
+- ifc* | ifort*) # Intel Fortran compiler
+- tmp_addflag=' -nofor_main' ;;
+- esac
+- archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++CC=$lt_save_CC
++LDCXX=$LD
++LD=$lt_save_LD
++GCC=$lt_save_GCC
++with_gnu_ldcxx=$with_gnu_ld
++with_gnu_ld=$lt_save_with_gnu_ld
++lt_cv_path_LDCXX=$lt_cv_path_LD
++lt_cv_path_LD=$lt_save_path_LD
++lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
++lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+- if test $supports_anon_versioning = yes; then
+- archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- $echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ tagname=""
+ fi
+- link_all_deplibs_F77=no
+- else
+- ld_shlibs_F77=no
+- fi
+- ;;
+-
+- netbsd* | netbsdelf*-gnu)
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+- wlarc=
+- else
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- fi
+- ;;
++ ;;
+
+- solaris*)
+- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+- ld_shlibs_F77=no
+- cat <<EOF 1>&2
++ F77)
++ if test -n "$F77" && test "X$F77" != "Xno"; then
+
+-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+-*** create shared libraries on Solaris systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.9.1 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
++ac_ext=f
++ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
++ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+-EOF
+- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- ld_shlibs_F77=no
+- fi
+- ;;
+
+- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+- case `$LD -v 2>&1` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+- ld_shlibs_F77=no
+- cat <<_LT_EOF 1>&2
+-
+-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+-*** reliably create shared libraries on SCO systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
++archive_cmds_need_lc_F77=no
++allow_undefined_flag_F77=
++always_export_symbols_F77=no
++archive_expsym_cmds_F77=
++export_dynamic_flag_spec_F77=
++hardcode_direct_F77=no
++hardcode_libdir_flag_spec_F77=
++hardcode_libdir_flag_spec_ld_F77=
++hardcode_libdir_separator_F77=
++hardcode_minus_L_F77=no
++hardcode_automatic_F77=no
++module_cmds_F77=
++module_expsym_cmds_F77=
++link_all_deplibs_F77=unknown
++old_archive_cmds_F77=$old_archive_cmds
++no_undefined_flag_F77=
++whole_archive_flag_spec_F77=
++enable_shared_with_static_runtimes_F77=no
+
+-_LT_EOF
+- ;;
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+- else
+- ld_shlibs_F77=no
+- fi
+- ;;
+- esac
+- ;;
++# Source file extension for f77 test sources.
++ac_ext=f
+
+- sunos4*)
+- archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- wlarc=
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
+- ;;
++# Object file extension for compiled f77 test sources.
++objext=o
++objext_F77=$objext
+
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- ld_shlibs_F77=no
+- fi
+- ;;
+- esac
++# Code to be used in simple compile tests
++lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+- if test "$ld_shlibs_F77" = no; then
+- runpath_var=
+- hardcode_libdir_flag_spec_F77=
+- export_dynamic_flag_spec_F77=
+- whole_archive_flag_spec_F77=
+- fi
+- else
+- # PORTME fill in a description of your system's linker (not GNU ld)
+- case $host_os in
+- aix3*)
+- allow_undefined_flag_F77=unsupported
+- always_export_symbols_F77=yes
+- archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+- # Note: this linker hardcodes the directories in LIBPATH if there
+- # are no directories specified by -L.
+- hardcode_minus_L_F77=yes
+- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+- # Neither direct hardcoding nor static linking is supported with a
+- # broken collect2.
+- hardcode_direct_F77=unsupported
+- fi
+- ;;
++# Code to be used in simple link tests
++lt_simple_link_test_code=" program t\n end\n"
+
+- aix4* | aix5*)
+- if test "$host_cpu" = ia64; then
+- # On IA64, the linker does run time linking by default, so we don't
+- # have to do anything special.
+- aix_use_runtimelinking=no
+- exp_sym_flag='-Bexport'
+- no_entry_flag=""
+- else
+- # If we're using GNU nm, then we don't want the "-C" option.
+- # -C means demangle to AIX nm, but means don't demangle with GNU nm
+- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+- export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+- else
+- export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+- fi
+- aix_use_runtimelinking=no
++# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+- # Test if we are trying to use run time linking or normal
+- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+- # need to do runtime linking.
+- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+- for ld_flag in $LDFLAGS; do
+- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+- aix_use_runtimelinking=yes
+- break
+- fi
+- done
+- ;;
+- esac
++# If no C compiler was specified, use CC.
++LTCC=${LTCC-"$CC"}
+
+- exp_sym_flag='-bexport'
+- no_entry_flag='-bnoentry'
+- fi
++# Allow CC to be a program name with arguments.
++compiler=$CC
+
+- # When large executables or shared objects are built, AIX ld can
+- # have problems creating the table of contents. If linking a library
+- # or program results in "error TOC overflow" add -mminimal-toc to
+- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+- archive_cmds_F77=''
+- hardcode_direct_F77=yes
+- hardcode_libdir_separator_F77=':'
+- link_all_deplibs_F77=yes
++# Allow CC to be a program name with arguments.
++lt_save_CC="$CC"
++CC=${F77-"f77"}
++compiler=$CC
++compiler_F77=$CC
++cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+- if test "$GCC" = yes; then
+- case $host_os in aix4.[012]|aix4.[012].*)
+- # We only want to do this on AIX 4.2 and lower, the check
+- # below for broken collect2 doesn't work under 4.3+
+- collect2name=`${CC} -print-prog-name=collect2`
+- if test -f "$collect2name" && \
+- strings "$collect2name" | grep resolve_lib_name >/dev/null
+- then
+- # We have reworked collect2
+- hardcode_direct_F77=yes
+- else
+- # We have old collect2
+- hardcode_direct_F77=unsupported
+- # It fails to find uninstalled libraries when the uninstalled
+- # path is not listed in the libpath. Setting hardcode_minus_L
+- # to unsupported forces relinking
+- hardcode_minus_L_F77=yes
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_libdir_separator_F77=
+- fi
+- ;;
+- esac
+- shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+- else
+- # not using gcc
+- if test "$host_cpu" = ia64; then
+- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+- # chokes on -Wl,-G. The following line is correct:
+- shared_flag='-G'
+- else
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag='${wl}-G'
+- else
+- shared_flag='${wl}-bM:SRE'
+- fi
+- fi
+- fi
++echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
++echo "$as_me:$LINENO: result: $can_build_shared" >&5
++echo "${ECHO_T}$can_build_shared" >&6
+
+- # It seems that -bexpall does not export symbols beginning with
+- # underscore (_), so it is better to generate a list of symbols to export.
+- always_export_symbols_F77=yes
+- if test "$aix_use_runtimelinking" = yes; then
+- # Warning - without using the other runtime loading flags (-brtl),
+- # -berok will link without error, but may produce a broken library.
+- allow_undefined_flag_F77='-berok'
+- # Determine the default libpath from the value encoded in an empty executable.
+- cat >conftest.$ac_ext <<_ACEOF
+- program main
++echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
++test "$can_build_shared" = "no" && enable_shared=no
+
+- end
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 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); } &&
+- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
++# On AIX, shared libraries and static libraries use the same namespace, and
++# are all built from PIC.
++case "$host_os" in
++aix3*)
++ test "$enable_shared" = yes && enable_static=no
++ if test -n "$RANLIB"; then
++ archive_cmds="$archive_cmds~\$RANLIB \$lib"
++ postinstall_cmds='$RANLIB $lib'
++ fi
++ ;;
++aix4* | aix5*)
++ test "$enable_shared" = yes && enable_static=no
++ ;;
+ esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++echo "$as_me:$LINENO: result: $enable_shared" >&5
++echo "${ECHO_T}$enable_shared" >&6
+
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`; fi
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++echo "$as_me:$LINENO: checking whether to build static libraries" >&5
++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
++# Make sure either enable_shared or enable_static is yes.
++test "$enable_shared" = yes || enable_static=yes
++echo "$as_me:$LINENO: result: $enable_static" >&5
++echo "${ECHO_T}$enable_static" >&6
+
++test "$ld_shlibs_F77" = no && can_build_shared=no
+
+-fi
++GCC_F77="$G77"
++LD_F77="$LD"
+
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+- conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++lt_prog_compiler_wl_F77=
++lt_prog_compiler_pic_F77=
++lt_prog_compiler_static_F77=
+
+- hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+- archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+- else
+- if test "$host_cpu" = ia64; then
+- hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+- allow_undefined_flag_F77="-z nodefs"
+- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+- else
+- # Determine the default libpath from the value encoded in an empty executable.
+- cat >conftest.$ac_ext <<_ACEOF
+- program main
++echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+- end
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 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); } &&
+- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ if test "$GCC" = yes; then
++ lt_prog_compiler_wl_F77='-Wl,'
++ lt_prog_compiler_static_F77='-static'
+
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`; fi
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+- conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+-
+- hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+- # Warning - without using the other run time loading flags,
+- # -berok will link without error, but may produce a broken library.
+- no_undefined_flag_F77=' ${wl}-bernotok'
+- allow_undefined_flag_F77=' ${wl}-berok'
+- # Exported symbols can be pulled into shared objects from archives
+- whole_archive_flag_spec_F77='$convenience'
+- archive_cmds_need_lc_F77=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+- fi
++ case $host_os in
++ aix*)
++ # All AIX code is PIC.
++ if test "$host_cpu" = ia64; then
++ # AIX 5 now supports IA64 processor
++ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+- archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_minus_L_F77=yes
+- # see comment about different semantics on the GNU ld section
+- ld_shlibs_F77=no
++ # FIXME: we need at least 68020 code to build shared libraries, but
++ # adding the `-m68020' flag to GCC prevents building anything better,
++ # like `-m68040'.
++ lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+- bsdi[45]*)
+- export_dynamic_flag_spec_F77=-rdynamic
++ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
++ # PIC is the default for these OSes.
+ ;;
+
+- cygwin* | mingw* | pw32*)
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- # hardcode_libdir_flag_spec is actually meaningless, as there is
+- # no search path for DLLs.
+- hardcode_libdir_flag_spec_F77=' '
+- allow_undefined_flag_F77=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_From_new_cmds_F77='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes_F77=yes
++ mingw* | pw32* | os2*)
++ # This hack is so that the source file can tell whether it is being
++ # built for inclusion in a dll (and should export symbols for example).
++ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[012])
+- allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[012])
+- allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
+- archive_cmds_need_lc_F77=no
+- hardcode_direct_F77=no
+- hardcode_automatic_F77=yes
+- hardcode_shlibpath_var_F77=unsupported
+- whole_archive_flag_spec_F77=''
+- link_all_deplibs_F77=yes
+- if test "$GCC" = yes ; then
+- output_verbose_link_cmd='echo'
+- archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- module_cmds_F77='$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 lds
+- archive_expsym_cmds_F77='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}'
+- module_expsym_cmds_F77='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}'
+- else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+- module_cmds_F77='$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 lds
+- archive_expsym_cmds_F77='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}'
+- module_expsym_cmds_F77='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}'
+- ;;
+- *)
+- ld_shlibs_F77=no
+- ;;
+- esac
+- fi
+- ;;
+-
+- dgux*)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_shlibpath_var_F77=no
++ # PIC is the default on this platform
++ # Common symbols not allowed in MH_DYLIB files
++ lt_prog_compiler_pic_F77='-fno-common'
+ ;;
+
+- freebsd1*)
+- ld_shlibs_F77=no
++ msdosdjgpp*)
++ # Just because we use GCC doesn't mean we suddenly get shared libraries
++ # on systems that don't support them.
++ lt_prog_compiler_can_build_shared_F77=no
++ enable_shared=no
+ ;;
+
+- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+- # support. Future versions do this automatically, but an explicit c++rt0.o
+- # does not break anything, and helps significantly (at the cost of a little
+- # extra space).
+- freebsd2.2*)
+- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
++ sysv4*MP*)
++ if test -d /usr/nec; then
++ lt_prog_compiler_pic_F77=-Kconform_pic
++ fi
+ ;;
+
+- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+- freebsd2*)
+- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_F77=yes
+- hardcode_minus_L_F77=yes
+- hardcode_shlibpath_var_F77=no
++ hpux*)
++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
++ # not for PA HP-UX.
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ # +Z the default
++ ;;
++ *)
++ lt_prog_compiler_pic_F77='-fPIC'
++ ;;
++ esac
+ ;;
+
+- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd* | dragonfly*)
+- archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
++ *)
++ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+-
+- hpux9*)
+- if test "$GCC" = yes; then
+- archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ esac
++ else
++ # PORTME Check for flag to pass linker flags through the system compiler.
++ case $host_os in
++ aix*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ if test "$host_cpu" = ia64; then
++ # AIX 5 now supports IA64 processor
++ lt_prog_compiler_static_F77='-Bstatic'
+ else
+- archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+ fi
+- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
+- hardcode_direct_F77=yes
+-
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_F77=yes
+- export_dynamic_flag_spec_F77='${wl}-E'
+ ;;
+
+- hpux10*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
+-
+- hardcode_direct_F77=yes
+- export_dynamic_flag_spec_F77='${wl}-E'
++ mingw* | pw32* | os2*)
++ # This hack is so that the source file can tell whether it is being
++ # built for inclusion in a dll (and should export symbols for example).
++ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
++ ;;
+
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_F77=yes
+- fi
++ hpux9* | hpux10* | hpux11*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
++ # not for PA HP-UX.
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ # +Z the default
++ ;;
++ *)
++ lt_prog_compiler_pic_F77='+Z'
++ ;;
++ esac
++ # Is there a better lt_prog_compiler_static that works with the bundled CC?
++ lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+ ;;
+
+- hpux11*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- else
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
++ irix5* | irix6* | nonstopux*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ # PIC (with -KPIC) is the default.
++ lt_prog_compiler_static_F77='-non_shared'
++ ;;
+
+- case $host_cpu in
+- hppa*64*|ia64*)
+- hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+- hardcode_direct_F77=no
+- hardcode_shlibpath_var_F77=no
+- ;;
+- *)
+- hardcode_direct_F77=yes
+- export_dynamic_flag_spec_F77='${wl}-E'
++ newsos6)
++ lt_prog_compiler_pic_F77='-KPIC'
++ lt_prog_compiler_static_F77='-Bstatic'
++ ;;
+
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_F77=yes
+- ;;
+- esac
+- fi
++ linux*)
++ case $CC in
++ icc* | ecc*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ lt_prog_compiler_pic_F77='-KPIC'
++ lt_prog_compiler_static_F77='-static'
++ ;;
++ ccc*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ # All Alpha code is PIC.
++ lt_prog_compiler_static_F77='-non_shared'
++ ;;
++ esac
+ ;;
+
+- irix5* | irix6* | nonstopux*)
+- if test "$GCC" = yes; then
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- else
+- archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+- hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+- fi
+- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
+- link_all_deplibs_F77=yes
++ osf3* | osf4* | osf5*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ # All OSF/1 code is PIC.
++ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+- else
+- archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+- fi
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
++ sco3.2v5*)
++ lt_prog_compiler_pic_F77='-Kpic'
++ lt_prog_compiler_static_F77='-dn'
+ ;;
+
+- newsos6)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_F77=yes
+- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
+- hardcode_shlibpath_var_F77=no
+- ;;
+-
+- openbsd*)
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_F77='${wl}-E'
+- else
+- case $host_os in
+- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- ;;
+- *)
+- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+- ;;
+- esac
+- fi
+- ;;
+-
+- os2*)
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_minus_L_F77=yes
+- allow_undefined_flag_F77=unsupported
+- archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+- old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+- ;;
+-
+- osf3*)
+- if test "$GCC" = yes; then
+- allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- else
+- allow_undefined_flag_F77=' -expect_unresolved \*'
+- archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+- fi
+- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
+- ;;
+-
+- osf4* | osf5*) # as osf3* with the addition of -msym flag
+- if test "$GCC" = yes; then
+- allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+- else
+- allow_undefined_flag_F77=' -expect_unresolved \*'
+- archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+- archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+-
+- # Both c and cxx compiler support -rpath directly
+- hardcode_libdir_flag_spec_F77='-rpath $libdir'
+- fi
+- hardcode_libdir_separator_F77=:
+- ;;
+-
+- solaris*)
+- no_undefined_flag_F77=' -z text'
+- if test "$GCC" = yes; then
+- wlarc='${wl}'
+- archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+- else
+- wlarc=''
+- archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+- fi
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- hardcode_shlibpath_var_F77=no
+- case $host_os in
+- solaris2.[0-5] | solaris2.[0-5].*) ;;
+- *)
+- # The compiler driver will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl, iff we do not link with $LD.
+- # Luckily, gcc supports the same syntax we need for Sun Studio.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- case $wlarc in
+- '')
+- whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+- *)
+- whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+- esac ;;
+- esac
+- link_all_deplibs_F77=yes
++ solaris*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ lt_prog_compiler_pic_F77='-KPIC'
++ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sunos4*)
+- if test "x$host_vendor" = xsequent; then
+- # Use $CC to link under sequent, because it throws in some extra .o
+- # files that make .init and .fini sections work.
+- archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_direct_F77=yes
+- hardcode_minus_L_F77=yes
+- hardcode_shlibpath_var_F77=no
+- ;;
+-
+- sysv4)
+- case $host_vendor in
+- sni)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_F77=yes # is this really true???
+- ;;
+- siemens)
+- ## LD is ld it makes a PLAMLIB
+- ## CC just makes a GrossModule.
+- archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+- reload_cmds_F77='$CC -r -o $output$reload_objs'
+- hardcode_direct_F77=no
+- ;;
+- motorola)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+- ;;
+- esac
+- runpath_var='LD_RUN_PATH'
+- hardcode_shlibpath_var_F77=no
++ lt_prog_compiler_wl_F77='-Qoption ld '
++ lt_prog_compiler_pic_F77='-PIC'
++ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+- sysv4.3*)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_shlibpath_var_F77=no
+- export_dynamic_flag_spec_F77='-Bexport'
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ lt_prog_compiler_pic_F77='-KPIC'
++ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+- if test -d /usr/nec; then
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_shlibpath_var_F77=no
+- runpath_var=LD_RUN_PATH
+- hardcode_runpath_var=yes
+- ld_shlibs_F77=yes
+- fi
+- ;;
+-
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+- no_undefined_flag_F77='${wl}-z,text'
+- archive_cmds_need_lc_F77=no
+- hardcode_shlibpath_var_F77=no
+- runpath_var='LD_RUN_PATH'
+-
+- if test "$GCC" = yes; then
+- archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- fi
+- ;;
+-
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- no_undefined_flag_F77='${wl}-z,text'
+- allow_undefined_flag_F77='${wl}-z,nodefs'
+- archive_cmds_need_lc_F77=no
+- hardcode_shlibpath_var_F77=no
+- hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- hardcode_libdir_separator_F77=':'
+- link_all_deplibs_F77=yes
+- export_dynamic_flag_spec_F77='${wl}-Bexport'
+- runpath_var='LD_RUN_PATH'
+-
+- if test "$GCC" = yes; then
+- archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ if test -d /usr/nec ;then
++ lt_prog_compiler_pic_F77='-Kconform_pic'
++ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ uts4*)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_shlibpath_var_F77=no
++ lt_prog_compiler_pic_F77='-pic'
++ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ *)
+- ld_shlibs_F77=no
++ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+ esac
+ fi
+
+-{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+-echo "${ECHO_T}$ld_shlibs_F77" >&6; }
+-test "$ld_shlibs_F77" = no && can_build_shared=no
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+ #
+-# Do we need to explicitly link libc?
++# Check to make sure the PIC flag actually works.
+ #
+-case "x$archive_cmds_need_lc_F77" in
+-x|xyes)
+- # Assume -lc should be added
+- archive_cmds_need_lc_F77=yes
++if test -n "$lt_prog_compiler_pic_F77"; then
+
+- if test "$enable_shared" = yes && test "$GCC" = yes; then
+- case $archive_cmds_F77 in
+- *'~'*)
+- # FIXME: we may have to deal with multi-command sequences.
+- ;;
+- '$CC '*)
+- # Test whether the compiler implicitly links with -lc since on some
+- # systems, -lgcc has to come before -lc. If gcc already passes -lc
+- # to ld, don't add -lc before -lgcc.
+- { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+- $rm conftest*
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
++if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_prog_compiler_pic_works_F77=no
++ ac_outfile=conftest.$ac_objext
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++ lt_compiler_flag="$lt_prog_compiler_pic_F77"
++ # Insert the option either (1) after the last *FLAGS variable, or
++ # (2) before a word containing "conftest.", or (3) at the end.
++ # Note that $ac_compile itself does not contain backslashes and begins
++ # with a dollar sign (not a hyphen), so the echo should work correctly.
++ # The option is referenced via a variable to avoid confusing sed.
++ lt_compile=`echo "$ac_compile" | $SED \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
++ -e 's:$: $lt_compiler_flag:'`
++ (eval echo "\"\$as_me:15551: $lt_compile\"" >&5)
++ (eval "$lt_compile" 2>conftest.err)
++ ac_status=$?
++ cat conftest.err >&5
++ echo "$as_me:15555: \$? = $ac_status" >&5
++ if (exit $ac_status) && test -s "$ac_outfile"; then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
++ lt_prog_compiler_pic_works_F77=yes
++ fi
++ fi
++ $rm conftest*
+
+- 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); } 2>conftest.err; then
+- soname=conftest
+- lib=conftest
+- libobjs=conftest.$ac_objext
+- deplibs=
+- wl=$lt_prog_compiler_wl_F77
+- pic_flag=$lt_prog_compiler_pic_F77
+- compiler_flags=-v
+- linker_flags=-v
+- verstring=
+- output_objdir=.
+- libname=conftest
+- lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+- allow_undefined_flag_F77=
+- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+- (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }
+- then
+- archive_cmds_need_lc_F77=no
+- else
+- archive_cmds_need_lc_F77=yes
+- fi
+- allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+- else
+- cat conftest.err 1>&5
+- fi
+- $rm conftest*
+- { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+-echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; }
+- ;;
+- esac
+- fi
+- ;;
+-esac
++fi
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+-{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+-library_names_spec=
+-libname_spec='lib$name'
+-soname_spec=
+-shrext_cmds=".so"
+-postinstall_cmds=
+-postuninstall_cmds=
+-finish_cmds=
+-finish_eval=
+-shlibpath_var=
+-shlibpath_overrides_runpath=unknown
+-version_type=none
+-dynamic_linker="$host_os ld.so"
+-sys_lib_dlsearch_path_spec="/lib /usr/lib"
+-if test "$GCC" = yes; then
+- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+- # if the path contains ";" then we assume it to be the separator
+- # otherwise default to the standard path separator (i.e. ":") - it is
+- # assumed that no part of a normal pathname contains ";" but that should
+- # okay in the real world where ";" in dirpaths is itself problematic.
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+- else
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+- fi
++if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
++ case $lt_prog_compiler_pic_F77 in
++ "" | " "*) ;;
++ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
++ esac
+ else
+- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
++ lt_prog_compiler_pic_F77=
++ lt_prog_compiler_can_build_shared_F77=no
+ fi
+-need_lib_prefix=unknown
+-hardcode_into_libs=no
+-
+-# when you set need_version to no, make sure it does not cause -set_version
+-# flags to be left without arguments
+-need_version=unknown
+
+-case $host_os in
+-aix3*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+- shlibpath_var=LIBPATH
++fi
++case "$host_os" in
++ # For platforms which do not support PIC, -DPIC is meaningless:
++ *djgpp*)
++ lt_prog_compiler_pic_F77=
++ ;;
++ *)
++ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
++ ;;
++esac
+
+- # AIX 3 has no versioning support, so we append a major version to the name.
+- soname_spec='${libname}${release}${shared_ext}$major'
+- ;;
++echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
++if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_cv_prog_compiler_c_o_F77=no
++ $rm -r conftest 2>/dev/null
++ mkdir conftest
++ cd conftest
++ mkdir out
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+-aix4* | aix5*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- hardcode_into_libs=yes
+- if test "$host_cpu" = ia64; then
+- # AIX 5 supports IA64
+- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- else
+- # With GCC up to 2.95.x, collect2 would create an import file
+- # for dependence libraries. The import file would start with
+- # the line `#! .'. This would cause the generated library to
+- # depend on `.', always an invalid library. This was fixed in
+- # development snapshots of GCC prior to 3.0.
+- case $host_os in
+- aix4 | aix4.[01] | aix4.[01].*)
+- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+- echo ' yes '
+- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+- :
+- else
+- can_build_shared=no
+- fi
+- ;;
+- esac
+- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+- # soname into executable. Probably we can add versioning support to
+- # collect2, so additional links can be useful in future.
+- if test "$aix_use_runtimelinking" = yes; then
+- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+- # instead of lib<name>.a to let people know that these are not
+- # typical AIX shared libraries.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- else
+- # We preserve .a as extension for shared libraries through AIX4.2
+- # and later when we are not doing run time linking.
+- library_names_spec='${libname}${release}.a $libname.a'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- fi
+- shlibpath_var=LIBPATH
+- fi
+- ;;
++ lt_compiler_flag="-o out/conftest2.$ac_objext"
++ # Insert the option either (1) after the last *FLAGS variable, or
++ # (2) before a word containing "conftest.", or (3) at the end.
++ # Note that $ac_compile itself does not contain backslashes and begins
++ # with a dollar sign (not a hyphen), so the echo should work correctly.
++ lt_compile=`echo "$ac_compile" | $SED \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
++ -e 's:$: $lt_compiler_flag:'`
++ (eval echo "\"\$as_me:15611: $lt_compile\"" >&5)
++ (eval "$lt_compile" 2>out/conftest.err)
++ ac_status=$?
++ cat out/conftest.err >&5
++ echo "$as_me:15615: \$? = $ac_status" >&5
++ if (exit $ac_status) && test -s out/conftest2.$ac_objext
++ then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test ! -s out/conftest.err; then
++ lt_cv_prog_compiler_c_o_F77=yes
++ fi
++ fi
++ chmod u+w .
++ $rm conftest*
++ # SGI C++ compiler will create directory out/ii_files/ for
++ # template instantiation
++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
++ $rm out/* && rmdir out
++ cd ..
++ rmdir conftest
++ $rm conftest*
+
+-amigaos*)
+- library_names_spec='$libname.ixlibrary $libname.a'
+- # Create ${libname}_ixlibrary.a entries in /sys/libs.
+- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+- ;;
++fi
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+
+-beos*)
+- library_names_spec='${libname}${shared_ext}'
+- dynamic_linker="$host_os ld.so"
+- shlibpath_var=LIBRARY_PATH
+- ;;
+
+-bsdi[45]*)
+- version_type=linux
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+- # the default ld.so.conf also contains /usr/contrib/lib and
+- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+- # libtool to hard-code these into programs
+- ;;
++hard_links="nottested"
++if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
++ # do not overwrite the value of need_locks provided by the user
++ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
++ hard_links=yes
++ $rm conftest*
++ ln conftest.a conftest.b 2>/dev/null && hard_links=no
++ touch conftest.a
++ ln conftest.a conftest.b 2>&5 || hard_links=no
++ ln conftest.a conftest.b 2>/dev/null && hard_links=no
++ echo "$as_me:$LINENO: result: $hard_links" >&5
++echo "${ECHO_T}$hard_links" >&6
++ if test "$hard_links" = no; then
++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
++ need_locks=warn
++ fi
++else
++ need_locks=no
++fi
+
+-cygwin* | mingw* | pw32*)
+- version_type=windows
+- shrext_cmds=".dll"
+- need_version=no
+- need_lib_prefix=no
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32*)
+- library_names_spec='$libname.dll.a'
+- # DLL is installed to $(libdir)/../bin by postinstall_cmds
+- postinstall_cmds='base_file=`basename \${file}`~
+- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+- dldir=$destdir/`dirname \$dlpath`~
+- test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
+- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+- dlpath=$dir/\$dldll~
+- $rm \$dlpath'
+- shlibpath_overrides_runpath=yes
++ runpath_var=
++ allow_undefined_flag_F77=
++ enable_shared_with_static_runtimes_F77=no
++ archive_cmds_F77=
++ archive_expsym_cmds_F77=
++ old_archive_From_new_cmds_F77=
++ old_archive_from_expsyms_cmds_F77=
++ export_dynamic_flag_spec_F77=
++ whole_archive_flag_spec_F77=
++ thread_safe_flag_spec_F77=
++ hardcode_libdir_flag_spec_F77=
++ hardcode_libdir_flag_spec_ld_F77=
++ hardcode_libdir_separator_F77=
++ hardcode_direct_F77=no
++ hardcode_minus_L_F77=no
++ hardcode_shlibpath_var_F77=unsupported
++ link_all_deplibs_F77=unknown
++ hardcode_automatic_F77=no
++ module_cmds_F77=
++ module_expsym_cmds_F77=
++ always_export_symbols_F77=no
++ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
++ # include_expsyms should be a list of space-separated symbols to be *always*
++ # included in the symbol list
++ include_expsyms_F77=
++ # exclude_expsyms can be an extended regexp of symbols to exclude
++ # it will be wrapped by ` (' and `)$', so one must not match beginning or
++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
++ # as well as any symbol that contains `d'.
++ exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
++ # platforms (ab)use it in PIC code, but their linkers get confused if
++ # the symbol is explicitly referenced. Since portable code cannot
++ # rely on this symbol name, it's probably fine to never include it in
++ # preloaded symbol tables.
++ extract_expsyms_cmds=
+
+- case $host_os in
+- cygwin*)
+- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+- ;;
+- mingw*)
+- # MinGW DLLs use traditional 'lib' prefix
+- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+- # It is most probably a Windows format PATH printed by
+- # mingw gcc, but we are running on Cygwin. Gcc prints its search
+- # path with ; separators, and with drive letters. We can handle the
+- # drive letters (cygwin fileutils understands them), so leave them,
+- # especially as we might pass files found there to a mingw objdump,
+- # which wouldn't understand a cygwinified path. Ahh.
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+- else
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+- fi
+- ;;
+- pw32*)
+- # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+- ;;
+- esac
++ case $host_os in
++ cygwin* | mingw* | pw32*)
++ # FIXME: the MSVC++ port hasn't been tested in a loooong time
++ # When not using gcc, we currently assume that we are using
++ # Microsoft Visual C++.
++ if test "$GCC" != yes; then
++ with_gnu_ld=no
++ fi
+ ;;
+-
+- *)
+- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ openbsd*)
++ with_gnu_ld=no
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+- # FIXME: first we should search . and the directory the executable is in
+- shlibpath_var=PATH
+- ;;
+
+-darwin* | rhapsody*)
+- dynamic_linker="$host_os dyld"
+- version_type=darwin
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+- soname_spec='${libname}${release}${major}$shared_ext'
+- shlibpath_overrides_runpath=yes
+- shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+- if test "$GCC" = yes; then
+- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+- else
+- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+- fi
+- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+- ;;
++ ld_shlibs_F77=yes
++ if test "$with_gnu_ld" = yes; then
++ # If archive_cmds runs LD, not CC, wlarc should be empty
++ wlarc='${wl}'
+
+-dgux*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
++ # See if GNU ld supports shared libraries.
++ case $host_os in
++ aix3* | aix4* | aix5*)
++ # On AIX/PPC, the GNU linker is very broken
++ if test "$host_cpu" != ia64; then
++ ld_shlibs_F77=no
++ cat <<EOF 1>&2
+
+-freebsd1*)
+- dynamic_linker=no
+- ;;
++*** Warning: the GNU linker, at least up to release 2.9.1, is reported
++*** to be unable to reliably create shared libraries on AIX.
++*** Therefore, libtool is disabling shared libraries support. If you
++*** really care for shared libraries, you may want to modify your PATH
++*** so that a non-GNU linker is found, and then restart.
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[123]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
+- version_type=freebsd-$objformat
+- case $version_type in
+- freebsd-elf*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- need_version=no
+- need_lib_prefix=no
+- ;;
+- freebsd-*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+- need_version=yes
++EOF
++ fi
+ ;;
+- esac
+- shlibpath_var=LD_LIBRARY_PATH
+- case $host_os in
+- freebsd2*)
+- shlibpath_overrides_runpath=yes
+- ;;
+- freebsd3.[01]* | freebsdelf3.[01]*)
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+- esac
+- ;;
+
+-gnu*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- ;;
++ amigaos*)
++ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_minus_L_F77=yes
+
+-hpux9* | hpux10* | hpux11*)
+- # Give a soname corresponding to the major version so that dld.sl refuses to
+- # link against other versions.
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- case $host_cpu in
+- ia64*)
+- shrext_cmds='.so'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.so"
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- if test "X$HPUX_IA64_MODE" = X32; then
+- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+- else
+- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+- fi
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+- ;;
+- hppa*64*)
+- shrext_cmds='.sl'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+- ;;
+- *)
+- shrext_cmds='.sl'
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=SHLIB_PATH
+- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- ;;
+- esac
+- # HP-UX runs *really* slowly unless shared libraries are mode 555.
+- postinstall_cmds='chmod 555 $lib'
+- ;;
++ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
++ # that the semantics of dynamic libraries on AmigaOS, at least up
++ # to version 4, is to share data among multiple programs linked
++ # with the same dynamic library. Since this doesn't match the
++ # behavior of shared libraries on other platforms, we can't use
++ # them.
++ ld_shlibs_F77=no
++ ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
++ beos*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ allow_undefined_flag_F77=unsupported
++ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
++ # support --undefined. This deserves some investigation. FIXME
++ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ else
++ ld_shlibs_F77=no
++ fi
++ ;;
+
+-irix5* | irix6* | nonstopux*)
+- case $host_os in
+- nonstopux*) version_type=nonstopux ;;
+- *)
+- if test "$lt_cv_prog_gnu_ld" = yes; then
+- version_type=linux
++ cygwin* | mingw* | pw32*)
++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
++ # as there is no search path for DLLs.
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ allow_undefined_flag_F77=unsupported
++ always_export_symbols_F77=no
++ enable_shared_with_static_runtimes_F77=yes
++ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
++
++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
++ # If the export-symbols file already is a .def file (1st line
++ # is EXPORTS), use it as is; otherwise, prepend...
++ archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ cp $export_symbols $output_objdir/$soname.def;
+ else
+- version_type=irix
+- fi ;;
+- esac
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+- case $host_os in
+- irix5* | nonstopux*)
+- libsuff= shlibsuff=
+- ;;
+- *)
+- case $LD in # libtool.m4 will add one of these switches to LD
+- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+- libsuff= shlibsuff= libmagic=32-bit;;
+- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+- libsuff=32 shlibsuff=N32 libmagic=N32;;
+- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+- libsuff=64 shlibsuff=64 libmagic=64-bit;;
+- *) libsuff= shlibsuff= libmagic=never-match;;
+- esac
+- ;;
+- esac
+- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+- hardcode_into_libs=yes
+- ;;
++ echo EXPORTS > $output_objdir/$soname.def;
++ cat $export_symbols >> $output_objdir/$soname.def;
++ fi~
++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
++ else
++ ld_shlibs=no
++ fi
++ ;;
+
+-# No shared lib support for Linux oldld, aout, or coff.
+-linux*oldld* | linux*aout* | linux*coff*)
+- dynamic_linker=no
+- ;;
++ netbsd*)
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
++ wlarc=
++ else
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ fi
++ ;;
+
+-# This must be Linux ELF.
+-linux* | k*bsd*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- # This implies no fast_install, which is unacceptable.
+- # Some rework will be needed to allow for fast_install
+- # before this can be enabled.
+- hardcode_into_libs=yes
++ solaris* | sysv5*)
++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
++ ld_shlibs_F77=no
++ cat <<EOF 1>&2
+
+- # Append ld.so.conf contents to the search path
+- if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+- fi
++*** Warning: The releases 2.8.* of the GNU linker cannot reliably
++*** create shared libraries on Solaris systems. Therefore, libtool
++*** is disabling shared libraries support. We urge you to upgrade GNU
++*** binutils to release 2.9.1 or newer. Another option is to modify
++*** your PATH or compiler configuration so that the native linker is
++*** used, and then restart.
+
+- # We used to test for /lib/ld.so.1 and disable shared libraries on
+- # powerpc, because MkLinux only supported shared libraries with the
+- # GNU dynamic linker. Since this was broken with cross compilers,
+- # most powerpc-linux boxes support dynamic linking these days and
+- # people can always --disable-shared, the test was removed, and we
+- # assume the GNU/Linux dynamic linker is in use.
+- dynamic_linker='GNU/Linux ld.so'
+- ;;
+-
+-netbsdelf*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
+- ;;
+-
+-netbsd*)
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- dynamic_linker='NetBSD (a.out) ld.so'
+- else
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='NetBSD ld.elf_so'
+- fi
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+-
+-newsos6)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- ;;
++EOF
++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ else
++ ld_shlibs_F77=no
++ fi
++ ;;
+
+-nto-qnx*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- ;;
++ sunos4*)
++ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ wlarc=
++ hardcode_direct_F77=yes
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-openbsd*)
+- version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+- need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- case $host_os in
+- openbsd2.[89] | openbsd2.[89].*)
+- shlibpath_overrides_runpath=no
+- ;;
+- *)
+- shlibpath_overrides_runpath=yes
+- ;;
++ linux*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_cmds_F77="$tmp_archive_cmds"
++ supports_anon_versioning=no
++ case `$LD -v 2>/dev/null` in
++ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
++ *\ 2.11.*) ;; # other 2.11 versions
++ *) supports_anon_versioning=yes ;;
+ esac
+- else
+- shlibpath_overrides_runpath=yes
+- fi
+- ;;
+-
+-os2*)
+- libname_spec='$name'
+- shrext_cmds=".dll"
+- need_lib_prefix=no
+- library_names_spec='$libname${shared_ext} $libname.a'
+- dynamic_linker='OS/2 ld.exe'
+- shlibpath_var=LIBPATH
+- ;;
+-
+-osf3* | osf4* | osf5*)
+- version_type=osf
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+- ;;
+-
+-solaris*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- # ldd complains unless libraries are executable
+- postinstall_cmds='chmod +x $lib'
+- ;;
+-
+-sunos4*)
+- version_type=sunos
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- if test "$with_gnu_ld" = yes; then
+- need_lib_prefix=no
+- fi
+- need_version=yes
+- ;;
++ if test $supports_anon_versioning = yes; then
++ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ archive_expsym_cmds_F77="$tmp_archive_cmds"
++ fi
++ else
++ ld_shlibs_F77=no
++ fi
++ ;;
+
+-sysv4 | sysv4.3*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- case $host_vendor in
+- sni)
+- shlibpath_overrides_runpath=no
+- need_lib_prefix=no
+- export_dynamic_flag_spec='${wl}-Blargedynsym'
+- runpath_var=LD_RUN_PATH
+- ;;
+- siemens)
+- need_lib_prefix=no
+- ;;
+- motorola)
+- need_lib_prefix=no
+- need_version=no
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
++ *)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ else
++ ld_shlibs_F77=no
++ fi
+ ;;
+- esac
+- ;;
+-
+-sysv4*MP*)
+- if test -d /usr/nec ;then
+- version_type=linux
+- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+- soname_spec='$libname${shared_ext}.$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- fi
+- ;;
++ esac
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
++ if test "$ld_shlibs_F77" = yes; then
++ runpath_var=LD_RUN_PATH
++ hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
++ export_dynamic_flag_spec_F77='${wl}--export-dynamic'
++ # ancient GNU ld didn't support --whole-archive et. al.
++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
++ whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
++ else
++ whole_archive_flag_spec_F77=
++ fi
++ fi
+ else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
++ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
+- esac
+- fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
++ aix3*)
++ allow_undefined_flag_F77=unsupported
++ always_export_symbols_F77=yes
++ archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
++ # Note: this linker hardcodes the directories in LIBPATH if there
++ # are no directories specified by -L.
++ hardcode_minus_L_F77=yes
++ if test "$GCC" = yes && test -z "$link_static_flag"; then
++ # Neither direct hardcoding nor static linking is supported with a
++ # broken collect2.
++ hardcode_direct_F77=unsupported
++ fi
++ ;;
+
+-uts4*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
++ aix4* | aix5*)
++ if test "$host_cpu" = ia64; then
++ # On IA64, the linker does run time linking by default, so we don't
++ # have to do anything special.
++ aix_use_runtimelinking=no
++ exp_sym_flag='-Bexport'
++ no_entry_flag=""
++ else
++ # If we're using GNU nm, then we don't want the "-C" option.
++ # -C means demangle to AIX nm, but means don't demangle with GNU nm
++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
++ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
++ else
++ export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
++ fi
++ aix_use_runtimelinking=no
+
+-*)
+- dynamic_linker=no
+- ;;
+-esac
+-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+-echo "${ECHO_T}$dynamic_linker" >&6; }
+-test "$dynamic_linker" = no && can_build_shared=no
++ # Test if we are trying to use run time linking or normal
++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
++ # need to do runtime linking.
++ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
++ for ld_flag in $LDFLAGS; do
++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
++ aix_use_runtimelinking=yes
++ break
++ fi
++ done
++ esac
+
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+-fi
++ exp_sym_flag='-bexport'
++ no_entry_flag='-bnoentry'
++ fi
+
+-{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+-hardcode_action_F77=
+-if test -n "$hardcode_libdir_flag_spec_F77" || \
+- test -n "$runpath_var_F77" || \
+- test "X$hardcode_automatic_F77" = "Xyes" ; then
+-
+- # We can hardcode non-existant directories.
+- if test "$hardcode_direct_F77" != no &&
+- # If the only mechanism to avoid hardcoding is shlibpath_var, we
+- # have to relink, otherwise we might link with an installed library
+- # when we should be linking with a yet-to-be-installed one
+- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+- test "$hardcode_minus_L_F77" != no; then
+- # Linking always hardcodes the temporary library directory.
+- hardcode_action_F77=relink
+- else
+- # We can link without hardcoding, and we can hardcode nonexisting dirs.
+- hardcode_action_F77=immediate
+- fi
+-else
+- # We cannot hardcode anything, or else we can only hardcode existing
+- # directories.
+- hardcode_action_F77=unsupported
+-fi
+-{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+-echo "${ECHO_T}$hardcode_action_F77" >&6; }
+-
+-if test "$hardcode_action_F77" = relink; then
+- # Fast installation is not supported
+- enable_fast_install=no
+-elif test "$shlibpath_overrides_runpath" = yes ||
+- test "$enable_shared" = no; then
+- # Fast installation is not necessary
+- enable_fast_install=needless
+-fi
++ # When large executables or shared objects are built, AIX ld can
++ # have problems creating the table of contents. If linking a library
++ # or program results in "error TOC overflow" add -mminimal-toc to
++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
++ archive_cmds_F77=''
++ hardcode_direct_F77=yes
++ hardcode_libdir_separator_F77=':'
++ link_all_deplibs_F77=yes
+
+-# The else clause should only fire when bootstrapping the
+-# libtool distribution, otherwise you forgot to ship ltmain.sh
+-# with your package, and you will get complaints that there are
+-# no rules to generate ltmain.sh.
+-if test -f "$ltmain"; then
+- # See if we are running on zsh, and set the options which allow our commands through
+- # without removal of \ escapes.
+- if test -n "${ZSH_VERSION+set}" ; then
+- setopt NO_GLOB_SUBST
+- fi
+- # Now quote all the things that may contain metacharacters while being
+- # careful not to overquote the AC_SUBSTed values. We take copies of the
+- # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+- SED SHELL STRIP \
+- libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+- old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+- deplibs_check_method reload_flag reload_cmds need_locks \
+- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+- lt_cv_sys_global_symbol_to_c_name_address \
+- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+- old_postinstall_cmds old_postuninstall_cmds \
+- compiler_F77 \
+- CC_F77 \
+- LD_F77 \
+- lt_prog_compiler_wl_F77 \
+- lt_prog_compiler_pic_F77 \
+- lt_prog_compiler_static_F77 \
+- lt_prog_compiler_no_builtin_flag_F77 \
+- export_dynamic_flag_spec_F77 \
+- thread_safe_flag_spec_F77 \
+- whole_archive_flag_spec_F77 \
+- enable_shared_with_static_runtimes_F77 \
+- old_archive_cmds_F77 \
+- old_archive_from_new_cmds_F77 \
+- predep_objects_F77 \
+- postdep_objects_F77 \
+- predeps_F77 \
+- postdeps_F77 \
+- compiler_lib_search_path_F77 \
+- archive_cmds_F77 \
+- archive_expsym_cmds_F77 \
+- postinstall_cmds_F77 \
+- postuninstall_cmds_F77 \
+- old_archive_from_expsyms_cmds_F77 \
+- allow_undefined_flag_F77 \
+- no_undefined_flag_F77 \
+- export_symbols_cmds_F77 \
+- hardcode_libdir_flag_spec_F77 \
+- hardcode_libdir_flag_spec_ld_F77 \
+- hardcode_libdir_separator_F77 \
+- hardcode_automatic_F77 \
+- module_cmds_F77 \
+- module_expsym_cmds_F77 \
+- lt_cv_prog_compiler_c_o_F77 \
+- exclude_expsyms_F77 \
+- include_expsyms_F77; do
++ if test "$GCC" = yes; then
++ case $host_os in aix4.012|aix4.012.*)
++ # We only want to do this on AIX 4.2 and lower, the check
++ # below for broken collect2 doesn't work under 4.3+
++ collect2name=`${CC} -print-prog-name=collect2`
++ if test -f "$collect2name" && \
++ strings "$collect2name" | grep resolve_lib_name >/dev/null
++ then
++ # We have reworked collect2
++ hardcode_direct_F77=yes
++ else
++ # We have old collect2
++ hardcode_direct_F77=unsupported
++ # It fails to find uninstalled libraries when the uninstalled
++ # path is not listed in the libpath. Setting hardcode_minus_L
++ # to unsupported forces relinking
++ hardcode_minus_L_F77=yes
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_libdir_separator_F77=
++ fi
++ esac
++ shared_flag='-shared'
++ else
++ # not using gcc
++ if test "$host_cpu" = ia64; then
++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
++ # chokes on -Wl,-G. The following line is correct:
++ shared_flag='-G'
++ else
++ if test "$aix_use_runtimelinking" = yes; then
++ shared_flag='${wl}-G'
++ else
++ shared_flag='${wl}-bM:SRE'
++ fi
++ fi
++ fi
+
+- case $var in
+- old_archive_cmds_F77 | \
+- old_archive_from_new_cmds_F77 | \
+- archive_cmds_F77 | \
+- archive_expsym_cmds_F77 | \
+- module_cmds_F77 | \
+- module_expsym_cmds_F77 | \
+- old_archive_from_expsyms_cmds_F77 | \
+- export_symbols_cmds_F77 | \
+- extract_expsyms_cmds | reload_cmds | finish_cmds | \
+- postinstall_cmds | postuninstall_cmds | \
+- old_postinstall_cmds | old_postuninstall_cmds | \
+- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+- # Double-quote double-evaled strings.
+- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+- ;;
+- *)
+- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+- ;;
+- esac
+- done
++ # It seems that -bexpall does not export symbols beginning with
++ # underscore (_), so it is better to generate a list of symbols to export.
++ always_export_symbols_F77=yes
++ if test "$aix_use_runtimelinking" = yes; then
++ # Warning - without using the other runtime loading flags (-brtl),
++ # -berok will link without error, but may produce a broken library.
++ allow_undefined_flag_F77='-berok'
++ # Determine the default libpath from the value encoded in an empty executable.
++ cat >conftest.$ac_ext <<_ACEOF
++ program main
+
+- case $lt_echo in
+- *'\$0 --fallback-echo"')
+- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+- ;;
+- esac
++ end
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_f77_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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
+
+-cfgfile="$ofile"
++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`
++# Check for a 64-bit object if we didn't find anything.
++if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`; fi
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+- cat <<__EOF__ >> "$cfgfile"
+-# ### BEGIN LIBTOOL TAG CONFIG: $tagname
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
++ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
++ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ else
++ if test "$host_cpu" = ia64; then
++ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
++ allow_undefined_flag_F77="-z nodefs"
++ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
++ else
++ # Determine the default libpath from the value encoded in an empty executable.
++ cat >conftest.$ac_ext <<_ACEOF
++ program main
+
+-# Shell to use when invoking shell scripts.
+-SHELL=$lt_SHELL
++ end
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_f77_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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
+
+-# Whether or not to build shared libraries.
+-build_libtool_libs=$enable_shared
++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`
++# Check for a 64-bit object if we didn't find anything.
++if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`; fi
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Whether or not to build static libraries.
+-build_old_libs=$enable_static
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+-# Whether or not to add -lc for building shared libraries.
+-build_libtool_need_lc=$archive_cmds_need_lc_F77
++ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
++ # Warning - without using the other run time loading flags,
++ # -berok will link without error, but may produce a broken library.
++ no_undefined_flag_F77=' ${wl}-bernotok'
++ allow_undefined_flag_F77=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ always_export_symbols_F77=yes
++ # Exported symbols can be pulled into shared objects from archives
++ whole_archive_flag_spec_F77=' '
++ archive_cmds_need_lc_F77=yes
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ fi
++ fi
++ ;;
+
+-# Whether or not to disallow shared libs when runtime libs are static
+-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
++ amigaos*)
++ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_minus_L_F77=yes
++ # see comment about different semantics on the GNU ld section
++ ld_shlibs_F77=no
++ ;;
+
+-# Whether or not to optimize for fast installation.
+-fast_install=$enable_fast_install
++ bsdi4*)
++ export_dynamic_flag_spec_F77=-rdynamic
++ ;;
+
+-# The host system.
+-host_alias=$host_alias
+-host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+-
+-# An echo program that does not interpret backslashes.
+-echo=$lt_echo
+-
+-# The archiver.
+-AR=$lt_AR
+-AR_FLAGS=$lt_AR_FLAGS
++ cygwin* | mingw* | pw32*)
++ # When not using gcc, we currently assume that we are using
++ # Microsoft Visual C++.
++ # hardcode_libdir_flag_spec is actually meaningless, as there is
++ # no search path for DLLs.
++ hardcode_libdir_flag_spec_F77=' '
++ allow_undefined_flag_F77=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_From_new_cmds_F77='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
++ fix_srcfile_path='`cygpath -w "$srcfile"`'
++ enable_shared_with_static_runtimes_F77=yes
++ ;;
+
+-# A C compiler.
+-LTCC=$lt_LTCC
++ darwin* | rhapsody*)
++ if test "$GXX" = yes ; then
++ archive_cmds_need_lc_F77=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag_F77='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag_F77='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag_F77='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag_F77='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ archive_cmds_F77='$CC -r ${wl}-bind_at_load -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'
++ fi
++ module_cmds_F77='$CC ${wl}-bind_at_load $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
++ archive_expsym_cmds_F77='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}'
++ else
++ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ fi
++ module_expsym_cmds_F77='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}'
++ hardcode_direct_F77=no
++ hardcode_automatic_F77=yes
++ hardcode_shlibpath_var_F77=unsupported
++ whole_archive_flag_spec_F77='-all_load $convenience'
++ link_all_deplibs_F77=yes
++ else
++ ld_shlibs_F77=no
++ fi
++ ;;
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
++ dgux*)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-# A language-specific compiler.
+-CC=$lt_compiler_F77
++ freebsd1*)
++ ld_shlibs_F77=no
++ ;;
+
+-# Is the compiler the GNU C compiler?
+-with_gcc=$GCC_F77
++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
++ # support. Future versions do this automatically, but an explicit c++rt0.o
++ # does not break anything, and helps significantly (at the cost of a little
++ # extra space).
++ freebsd2.2*)
++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ hardcode_direct_F77=yes
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-# An ERE matcher.
+-EGREP=$lt_EGREP
++ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
++ freebsd2*)
++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=yes
++ hardcode_minus_L_F77=yes
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-# The linker used to build libraries.
+-LD=$lt_LD_F77
++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
++ freebsd* | kfreebsd*-gnu)
++ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ hardcode_direct_F77=yes
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-# Whether we need hard or soft links.
+-LN_S=$lt_LN_S
++ hpux9*)
++ if test "$GCC" = yes; then
++ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ else
++ archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ fi
++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ hardcode_direct_F77=yes
+
+-# A BSD-compatible nm program.
+-NM=$lt_NM
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_F77=yes
++ export_dynamic_flag_spec_F77='${wl}-E'
++ ;;
+
+-# A symbol stripping program
+-STRIP=$lt_STRIP
++ hpux10* | hpux11*)
++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ ;;
++ *)
++ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ ;;
++ esac
++ else
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
++ ;;
++ *)
++ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
++ ;;
++ esac
++ fi
++ if test "$with_gnu_ld" = no; then
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
++ hardcode_libdir_flag_spec_ld_F77='+b $libdir'
++ hardcode_libdir_separator_F77=:
++ hardcode_direct_F77=no
++ hardcode_shlibpath_var_F77=no
++ ;;
++ ia64*)
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_direct_F77=no
++ hardcode_shlibpath_var_F77=no
+
+-# Used to examine libraries when file_magic_cmd begins "file"
+-MAGIC_CMD=$MAGIC_CMD
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_F77=yes
++ ;;
++ *)
++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ hardcode_direct_F77=yes
++ export_dynamic_flag_spec_F77='${wl}-E'
+
+-# Used on cygwin: DLL creation program.
+-DLLTOOL="$DLLTOOL"
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_F77=yes
++ ;;
++ esac
++ fi
++ ;;
+
+-# Used on cygwin: object dumper.
+-OBJDUMP="$OBJDUMP"
++ irix5* | irix6* | nonstopux*)
++ if test "$GCC" = yes; then
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ else
++ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
++ fi
++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ link_all_deplibs_F77=yes
++ ;;
+
+-# Used on cygwin: assembler.
+-AS="$AS"
++ netbsd*)
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
++ else
++ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
++ fi
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ hardcode_direct_F77=yes
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-# The name of the directory that contains temporary libtool files.
+-objdir=$objdir
++ newsos6)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=yes
++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-# How to create reloadable object files.
+-reload_flag=$lt_reload_flag
+-reload_cmds=$lt_reload_cmds
++ openbsd*)
++ hardcode_direct_F77=yes
++ hardcode_shlibpath_var_F77=no
++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
++ export_dynamic_flag_spec_F77='${wl}-E'
++ else
++ case $host_os in
++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ ;;
++ *)
++ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
++ ;;
++ esac
++ fi
++ ;;
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl_F77
++ os2*)
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_minus_L_F77=yes
++ allow_undefined_flag_F77=unsupported
++ archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
++ old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
++ ;;
+
+-# Object file suffix (normally "o").
+-objext="$ac_objext"
++ osf3*)
++ if test "$GCC" = yes; then
++ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
++ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ else
++ allow_undefined_flag_F77=' -expect_unresolved \*'
++ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ fi
++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ ;;
+
+-# Old archive suffix (normally "a").
+-libext="$libext"
++ osf4* | osf5*) # as osf3* with the addition of -msym flag
++ if test "$GCC" = yes; then
++ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
++ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ else
++ allow_undefined_flag_F77=' -expect_unresolved \*'
++ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+-# Shared library suffix (normally ".so").
+-shrext_cmds='$shrext_cmds'
++ # Both c and cxx compiler support -rpath directly
++ hardcode_libdir_flag_spec_F77='-rpath $libdir'
++ fi
++ hardcode_libdir_separator_F77=:
++ ;;
+
+-# Executable file suffix (normally "").
+-exeext="$exeext"
++ sco3.2v5*)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_F77=no
++ export_dynamic_flag_spec_F77='${wl}-Bexport'
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ;;
+
+-# Additional compiler flags for building library objects.
+-pic_flag=$lt_lt_prog_compiler_pic_F77
+-pic_mode=$pic_mode
+-
+-# What is the maximum length of a command?
+-max_cmd_len=$lt_cv_sys_max_cmd_len
+-
+-# Does compiler simultaneously support -c and -o options?
+-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+-
+-# Must we lock files when doing compilation?
+-need_locks=$lt_need_locks
+-
+-# Do we need the lib prefix for modules?
+-need_lib_prefix=$need_lib_prefix
+-
+-# Do we need a version for libraries?
+-need_version=$need_version
+-
+-# Whether dlopen is supported.
+-dlopen_support=$enable_dlopen
++ solaris*)
++ no_undefined_flag_F77=' -z text'
++ if test "$GCC" = yes; then
++ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
++ else
++ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ fi
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ hardcode_shlibpath_var_F77=no
++ case $host_os in
++ solaris2.[0-5] | solaris2.[0-5].*) ;;
++ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
++ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
++ esac
++ link_all_deplibs_F77=yes
++ ;;
+
+-# Whether dlopen of programs is supported.
+-dlopen_self=$enable_dlopen_self
++ sunos4*)
++ if test "x$host_vendor" = xsequent; then
++ # Use $CC to link under sequent, because it throws in some extra .o
++ # files that make .init and .fini sections work.
++ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
++ else
++ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
++ fi
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_direct_F77=yes
++ hardcode_minus_L_F77=yes
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-# Whether dlopen of statically linked programs is supported.
+-dlopen_self_static=$enable_dlopen_self_static
++ sysv4)
++ case $host_vendor in
++ sni)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=yes # is this really true???
++ ;;
++ siemens)
++ ## LD is ld it makes a PLAMLIB
++ ## CC just makes a GrossModule.
++ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ reload_cmds_F77='$CC -r -o $output$reload_objs'
++ hardcode_direct_F77=no
++ ;;
++ motorola)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
++ ;;
++ esac
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-# Compiler flag to prevent dynamic linking.
+-link_static_flag=$lt_lt_prog_compiler_static_F77
++ sysv4.3*)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_F77=no
++ export_dynamic_flag_spec_F77='-Bexport'
++ ;;
+
+-# Compiler flag to turn off builtin functions.
+-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
++ sysv4*MP*)
++ if test -d /usr/nec; then
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_F77=no
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ld_shlibs_F77=yes
++ fi
++ ;;
+
+-# Compiler flag to allow reflexive dlopens.
+-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
++ sysv4.2uw2*)
++ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=yes
++ hardcode_minus_L_F77=no
++ hardcode_shlibpath_var_F77=no
++ hardcode_runpath_var=yes
++ runpath_var=LD_RUN_PATH
++ ;;
+
+-# Compiler flag to generate shared objects directly from archives.
+-whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
++ no_undefined_flag_F77='${wl}-z ${wl}text'
++ if test "$GCC" = yes; then
++ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ else
++ archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ fi
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-# Compiler flag to generate thread-safe objects.
+-thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
++ sysv5*)
++ no_undefined_flag_F77=' -z text'
++ # $CC -shared without GNU ld will not create a library from C++
++ # object files and a static libstdc++, better avoid it by now
++ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ hardcode_libdir_flag_spec_F77=
++ hardcode_shlibpath_var_F77=no
++ runpath_var='LD_RUN_PATH'
++ ;;
+
+-# Library versioning type.
+-version_type=$version_type
++ uts4*)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-# Format of library name prefix.
+-libname_spec=$lt_libname_spec
++ *)
++ ld_shlibs_F77=no
++ ;;
++ esac
++ fi
+
+-# List of archive names. First name is the real one, the rest are links.
+-# The last name is the one that the linker finds with -lNAME.
+-library_names_spec=$lt_library_names_spec
++echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
++echo "${ECHO_T}$ld_shlibs_F77" >&6
++test "$ld_shlibs_F77" = no && can_build_shared=no
+
+-# The coded name of the library, if different from the real name.
+-soname_spec=$lt_soname_spec
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
+
+-# Commands used to build and install an old-style archive.
+-RANLIB=$lt_RANLIB
+-old_archive_cmds=$lt_old_archive_cmds_F77
+-old_postinstall_cmds=$lt_old_postinstall_cmds
+-old_postuninstall_cmds=$lt_old_postuninstall_cmds
++#
++# Do we need to explicitly link libc?
++#
++case "x$archive_cmds_need_lc_F77" in
++x|xyes)
++ # Assume -lc should be added
++ archive_cmds_need_lc_F77=yes
+
+-# Create an old-style archive from a shared archive.
+-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
++ if test "$enable_shared" = yes && test "$GCC" = yes; then
++ case $archive_cmds_F77 in
++ *'~'*)
++ # FIXME: we may have to deal with multi-command sequences.
++ ;;
++ '$CC '*)
++ # Test whether the compiler implicitly links with -lc since on some
++ # systems, -lgcc has to come before -lc. If gcc already passes -lc
++ # to ld, don't add -lc before -lgcc.
++ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
++ $rm conftest*
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+-# Create a temporary old-style archive to link instead of a shared archive.
+-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
++ 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); } 2>conftest.err; then
++ soname=conftest
++ lib=conftest
++ libobjs=conftest.$ac_objext
++ deplibs=
++ wl=$lt_prog_compiler_wl_F77
++ compiler_flags=-v
++ linker_flags=-v
++ verstring=
++ output_objdir=.
++ libname=conftest
++ lt_save_allow_undefined_flag=$allow_undefined_flag_F77
++ allow_undefined_flag_F77=
++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
++ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++ then
++ archive_cmds_need_lc_F77=no
++ else
++ archive_cmds_need_lc_F77=yes
++ fi
++ allow_undefined_flag_F77=$lt_save_allow_undefined_flag
++ else
++ cat conftest.err 1>&5
++ fi
++ $rm conftest*
++ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
++echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
++ ;;
++ esac
++ fi
++ ;;
++esac
+
+-# Commands used to build and install a shared archive.
+-archive_cmds=$lt_archive_cmds_F77
+-archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+-postinstall_cmds=$lt_postinstall_cmds
+-postuninstall_cmds=$lt_postuninstall_cmds
++echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
++library_names_spec=
++libname_spec='lib$name'
++soname_spec=
++shrext_cmds=".so"
++postinstall_cmds=
++postuninstall_cmds=
++finish_cmds=
++finish_eval=
++shlibpath_var=
++shlibpath_overrides_runpath=unknown
++version_type=none
++dynamic_linker="$host_os ld.so"
++sys_lib_dlsearch_path_spec="/lib /usr/lib"
++if test "$GCC" = yes; then
++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
++ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
++ # if the path contains ";" then we assume it to be the separator
++ # otherwise default to the standard path separator (i.e. ":") - it is
++ # assumed that no part of a normal pathname contains ";" but that should
++ # okay in the real world where ";" in dirpaths is itself problematic.
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++else
++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
++fi
++need_lib_prefix=unknown
++hardcode_into_libs=no
+
+-# Commands used to build a loadable module (assumed same as above if empty)
+-module_cmds=$lt_module_cmds_F77
+-module_expsym_cmds=$lt_module_expsym_cmds_F77
++# when you set need_version to no, make sure it does not cause -set_version
++# flags to be left without arguments
++need_version=unknown
+
+-# Commands to strip libraries.
+-old_striplib=$lt_old_striplib
+-striplib=$lt_striplib
++case $host_os in
++aix3*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
++ shlibpath_var=LIBPATH
+
+-# Dependencies to place before the objects being linked to create a
+-# shared library.
+-predep_objects=$lt_predep_objects_F77
++ # AIX 3 has no versioning support, so we append a major version to the name.
++ soname_spec='${libname}${release}${shared_ext}$major'
++ ;;
+
+-# Dependencies to place after the objects being linked to create a
+-# shared library.
+-postdep_objects=$lt_postdep_objects_F77
+-
+-# Dependencies to place before the objects being linked to create a
+-# shared library.
+-predeps=$lt_predeps_F77
+-
+-# Dependencies to place after the objects being linked to create a
+-# shared library.
+-postdeps=$lt_postdeps_F77
+-
+-# The library search path used internally by the compiler when linking
+-# a shared library.
+-compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+-
+-# Method to check whether dependent libraries are shared objects.
+-deplibs_check_method=$lt_deplibs_check_method
+-
+-# Command to use when deplibs_check_method == file_magic.
+-file_magic_cmd=$lt_file_magic_cmd
+-
+-# Flag that allows shared libraries with undefined symbols to be built.
+-allow_undefined_flag=$lt_allow_undefined_flag_F77
+-
+-# Flag that forces no undefined symbols.
+-no_undefined_flag=$lt_no_undefined_flag_F77
+-
+-# Commands used to finish a libtool library installation in a directory.
+-finish_cmds=$lt_finish_cmds
+-
+-# Same as above, but a single script fragment to be evaled but not shown.
+-finish_eval=$lt_finish_eval
+-
+-# Take the output of nm and produce a listing of raw symbols and C names.
+-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
++aix4* | aix5*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ hardcode_into_libs=yes
++ if test "$host_cpu" = ia64; then
++ # AIX 5 supports IA64
++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ else
++ # With GCC up to 2.95.x, collect2 would create an import file
++ # for dependence libraries. The import file would start with
++ # the line `#! .'. This would cause the generated library to
++ # depend on `.', always an invalid library. This was fixed in
++ # development snapshots of GCC prior to 3.0.
++ case $host_os in
++ aix4 | aix4.[01] | aix4.[01].*)
++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
++ echo ' yes '
++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
++ :
++ else
++ can_build_shared=no
++ fi
++ ;;
++ esac
++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
++ # soname into executable. Probably we can add versioning support to
++ # collect2, so additional links can be useful in future.
++ if test "$aix_use_runtimelinking" = yes; then
++ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
++ # instead of lib<name>.a to let people know that these are not
++ # typical AIX shared libraries.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ else
++ # We preserve .a as extension for shared libraries through AIX4.2
++ # and later when we are not doing run time linking.
++ library_names_spec='${libname}${release}.a $libname.a'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ fi
++ shlibpath_var=LIBPATH
++ fi
++ ;;
+
+-# Transform the output of nm in a proper C declaration
+-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
++amigaos*)
++ library_names_spec='$libname.ixlibrary $libname.a'
++ # Create ${libname}_ixlibrary.a entries in /sys/libs.
++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
++ ;;
+
+-# Transform the output of nm in a C name address pair
+-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
++beos*)
++ library_names_spec='${libname}${shared_ext}'
++ dynamic_linker="$host_os ld.so"
++ shlibpath_var=LIBRARY_PATH
++ ;;
+
+-# This is the shared library runtime path variable.
+-runpath_var=$runpath_var
++bsdi4*)
++ version_type=linux
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
++ # the default ld.so.conf also contains /usr/contrib/lib and
++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
++ # libtool to hard-code these into programs
++ ;;
+
+-# This is the shared library path variable.
+-shlibpath_var=$shlibpath_var
++cygwin* | mingw* | pw32*)
++ version_type=windows
++ shrext_cmds=".dll"
++ need_version=no
++ need_lib_prefix=no
+
+-# Is shlibpath searched before the hard-coded library search path?
+-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
++ case $GCC,$host_os in
++ yes,cygwin* | yes,mingw* | yes,pw32*)
++ library_names_spec='$libname.dll.a'
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $rm \$dlpath'
++ shlibpath_overrides_runpath=yes
+
+-# How to hardcode a shared library path into an executable.
+-hardcode_action=$hardcode_action_F77
++ case $host_os in
++ cygwin*)
++ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
++ ;;
++ mingw*)
++ # MinGW DLLs use traditional 'lib' prefix
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH printed by
++ # mingw gcc, but we are running on Cygwin. Gcc prints its search
++ # path with ; separators, and with drive letters. We can handle the
++ # drive letters (cygwin fileutils understands them), so leave them,
++ # especially as we might pass files found there to a mingw objdump,
++ # which wouldn't understand a cygwinified path. Ahh.
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ ;;
++ pw32*)
++ # pw32 DLLs use 'pw' prefix rather than 'lib'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
++ ;;
++ esac
++ ;;
+
+-# Whether we should hardcode library paths into libraries.
+-hardcode_into_libs=$hardcode_into_libs
++ *)
++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ ;;
++ esac
++ dynamic_linker='Win32 ld.exe'
++ # FIXME: first we should search . and the directory the executable is in
++ shlibpath_var=PATH
++ ;;
+
+-# Flag to hardcode \$libdir into a binary during linking.
+-# This must work even if \$libdir does not exist.
+-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
++darwin* | rhapsody*)
++ dynamic_linker="$host_os dyld"
++ version_type=darwin
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
++ soname_spec='${libname}${release}${major}$shared_ext'
++ shlibpath_overrides_runpath=yes
++ shlibpath_var=DYLD_LIBRARY_PATH
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
++ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
++ if test "$GCC" = yes; then
++ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
++ else
++ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
++ fi
++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
++ ;;
+
+-# If ld is used when linking, flag to hardcode \$libdir into
+-# a binary during linking. This must work even if \$libdir does
+-# not exist.
+-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
++dgux*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
+
+-# Whether we need a single -rpath flag with a separated argument.
+-hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
++freebsd1*)
++ dynamic_linker=no
++ ;;
+
+-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+-# resulting binary.
+-hardcode_direct=$hardcode_direct_F77
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
+
+-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+-# resulting binary.
+-hardcode_minus_L=$hardcode_minus_L_F77
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
++ version_type=freebsd-$objformat
++ case $version_type in
++ freebsd-elf*)
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
++ need_version=no
++ need_lib_prefix=no
++ ;;
++ freebsd-*)
++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
++ need_version=yes
++ ;;
++ esac
++ shlibpath_var=LD_LIBRARY_PATH
++ case $host_os in
++ freebsd2*)
++ shlibpath_overrides_runpath=yes
++ ;;
++ freebsd3.01* | freebsdelf3.01*)
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ ;;
++ *) # from 3.2 on
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ ;;
++ esac
++ ;;
+
+-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+-# the resulting binary.
+-hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
++gnu*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ hardcode_into_libs=yes
++ ;;
+
+-# Set to yes if building a shared library automatically hardcodes DIR into the library
+-# and all subsequent libraries and executables linked against it.
+-hardcode_automatic=$hardcode_automatic_F77
+-
+-# Variables whose values should be saved in libtool wrapper scripts and
+-# restored at relink time.
+-variables_saved_for_relink="$variables_saved_for_relink"
+-
+-# Whether libtool must link a program against all its dependency libraries.
+-link_all_deplibs=$link_all_deplibs_F77
+-
+-# Compile-time system search path for libraries
+-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+-
+-# Run-time system search path for libraries
+-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+-
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path="$fix_srcfile_path_F77"
+-
+-# Set to yes if exported symbols are required.
+-always_export_symbols=$always_export_symbols_F77
++hpux9* | hpux10* | hpux11*)
++ # Give a soname corresponding to the major version so that dld.sl refuses to
++ # link against other versions.
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=no
++ case "$host_cpu" in
++ ia64*)
++ shrext_cmds='.so'
++ hardcode_into_libs=yes
++ dynamic_linker="$host_os dld.so"
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ if test "X$HPUX_IA64_MODE" = X32; then
++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
++ else
++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
++ fi
++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
++ ;;
++ hppa*64*)
++ shrext_cmds='.sl'
++ hardcode_into_libs=yes
++ dynamic_linker="$host_os dld.sl"
++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
++ ;;
++ *)
++ shrext_cmds='.sl'
++ dynamic_linker="$host_os dld.sl"
++ shlibpath_var=SHLIB_PATH
++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ ;;
++ esac
++ # HP-UX runs *really* slowly unless shared libraries are mode 555.
++ postinstall_cmds='chmod 555 $lib'
++ ;;
+
+-# The commands to list exported symbols.
+-export_symbols_cmds=$lt_export_symbols_cmds_F77
++irix5* | irix6* | nonstopux*)
++ case $host_os in
++ nonstopux*) version_type=nonstopux ;;
++ *)
++ if test "$lt_cv_prog_gnu_ld" = yes; then
++ version_type=linux
++ else
++ version_type=irix
++ fi ;;
++ esac
++ need_lib_prefix=no
++ need_version=no
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
++ case $host_os in
++ irix5* | nonstopux*)
++ libsuff= shlibsuff=
++ ;;
++ *)
++ case $LD in # libtool.m4 will add one of these switches to LD
++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
++ libsuff= shlibsuff= libmagic=32-bit;;
++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
++ libsuff=32 shlibsuff=N32 libmagic=N32;;
++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
++ libsuff=64 shlibsuff=64 libmagic=64-bit;;
++ *) libsuff= shlibsuff= libmagic=never-match;;
++ esac
++ ;;
++ esac
++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
++ shlibpath_overrides_runpath=no
++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
++ hardcode_into_libs=yes
++ ;;
+
+-# The commands to extract the exported symbol list from a shared archive.
+-extract_expsyms_cmds=$lt_extract_expsyms_cmds
++# No shared lib support for Linux oldld, aout, or coff.
++linux*oldld* | linux*aout* | linux*coff*)
++ dynamic_linker=no
++ ;;
+
+-# Symbols that should not be listed in the preloaded symbols.
+-exclude_expsyms=$lt_exclude_expsyms_F77
++# This must be Linux ELF.
++linux*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ # This implies no fast_install, which is unacceptable.
++ # Some rework will be needed to allow for fast_install
++ # before this can be enabled.
++ hardcode_into_libs=yes
+
+-# Symbols that must always be exported.
+-include_expsyms=$lt_include_expsyms_F77
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '#line 16925 "configure"' > conftest.$ac_ext
++ 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
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
+
+-# ### END LIBTOOL TAG CONFIG: $tagname
++ # Append ld.so.conf contents to the search path
++ if test -f /etc/ld.so.conf; then
++ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
++ fi
+
+-__EOF__
++ # We used to test for /lib/ld.so.1 and disable shared libraries on
++ # powerpc, because MkLinux only supported shared libraries with the
++ # GNU dynamic linker. Since this was broken with cross compilers,
++ # most powerpc-linux boxes support dynamic linking these days and
++ # people can always --disable-shared, the test was removed, and we
++ # assume the GNU/Linux dynamic linker is in use.
++ dynamic_linker='GNU/Linux ld.so'
++ ;;
+
++knetbsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
+
+-else
+- # If there is no Makefile yet, we rely on a make rule to execute
+- # `config.status --recheck' to rerun these tests and create the
+- # libtool script then.
+- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+- if test -f "$ltmain_in"; then
+- test -f Makefile && make "$ltmain"
++netbsd*)
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=no
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
++ dynamic_linker='NetBSD (a.out) ld.so'
++ else
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ dynamic_linker='NetBSD ld.elf_so'
+ fi
+-fi
+-
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ ;;
+
+-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
++newsos6)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ ;;
+
+-CC="$lt_save_CC"
++nto-qnx*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ ;;
+
+- else
+- tagname=""
+- fi
++openbsd*)
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=yes
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++ case $host_os in
++ openbsd2.[89] | openbsd2.[89].*)
++ shlibpath_overrides_runpath=no
++ ;;
++ *)
++ shlibpath_overrides_runpath=yes
+ ;;
++ esac
++ else
++ shlibpath_overrides_runpath=yes
++ fi
++ ;;
+
+- GCJ)
+- if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
++os2*)
++ libname_spec='$name'
++ shrext_cmds=".dll"
++ need_lib_prefix=no
++ library_names_spec='$libname${shared_ext} $libname.a'
++ dynamic_linker='OS/2 ld.exe'
++ shlibpath_var=LIBPATH
++ ;;
+
++osf3* | osf4* | osf5*)
++ version_type=osf
++ need_lib_prefix=no
++ need_version=no
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
++ ;;
+
+-# Source file extension for Java test sources.
+-ac_ext=java
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
+
+-# Object file extension for compiled Java test sources.
+-objext=o
+-objext_GCJ=$objext
+-
+-# Code to be used in simple compile tests
+-lt_simple_compile_test_code="class foo {}\n"
+-
+-# Code to be used in simple link tests
+-lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+-
+-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+-
+-# If no C compiler was specified, use CC.
+-LTCC=${LTCC-"$CC"}
+-
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+-# Allow CC to be a program name with arguments.
+-compiler=$CC
+-
+-
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
++solaris*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ # ldd complains unless libraries are executable
++ postinstall_cmds='chmod +x $lib'
++ ;;
+
++sunos4*)
++ version_type=sunos
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ if test "$with_gnu_ld" = yes; then
++ need_lib_prefix=no
++ fi
++ need_version=yes
++ ;;
+
+-# Allow CC to be a program name with arguments.
+-lt_save_CC="$CC"
+-CC=${GCJ-"gcj"}
+-compiler=$CC
+-compiler_GCJ=$CC
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ case $host_vendor in
++ sni)
++ shlibpath_overrides_runpath=no
++ need_lib_prefix=no
++ export_dynamic_flag_spec='${wl}-Blargedynsym'
++ runpath_var=LD_RUN_PATH
++ ;;
++ siemens)
++ need_lib_prefix=no
++ ;;
++ motorola)
++ need_lib_prefix=no
++ need_version=no
++ shlibpath_overrides_runpath=no
++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
++ ;;
+ esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-
+-
+-# GCJ did not exist at the time GCC didn't implicitly link libc in.
+-archive_cmds_need_lc_GCJ=no
+-
+-old_archive_cmds_GCJ=$old_archive_cmds
++ ;;
+
++sysv4*MP*)
++ if test -d /usr/nec ;then
++ version_type=linux
++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
++ soname_spec='$libname${shared_ext}.$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ fi
++ ;;
+
+-lt_prog_compiler_no_builtin_flag_GCJ=
++uts4*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
+
+-if test "$GCC" = yes; then
+- lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
++*)
++ dynamic_linker=no
++ ;;
++esac
++echo "$as_me:$LINENO: result: $dynamic_linker" >&5
++echo "${ECHO_T}$dynamic_linker" >&6
++test "$dynamic_linker" = no && can_build_shared=no
+
++echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
++hardcode_action_F77=
++if test -n "$hardcode_libdir_flag_spec_F77" || \
++ test -n "$runpath_var F77" || \
++ test "X$hardcode_automatic_F77"="Xyes" ; then
+
+-{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
+-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
++ # We can hardcode non-existant directories.
++ if test "$hardcode_direct_F77" != no &&
++ # If the only mechanism to avoid hardcoding is shlibpath_var, we
++ # have to relink, otherwise we might link with an installed library
++ # when we should be linking with a yet-to-be-installed one
++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
++ test "$hardcode_minus_L_F77" != no; then
++ # Linking always hardcodes the temporary library directory.
++ hardcode_action_F77=relink
++ else
++ # We can link without hardcoding, and we can hardcode nonexisting dirs.
++ hardcode_action_F77=immediate
++ fi
+ else
+- lt_cv_prog_compiler_rtti_exceptions=no
+- ac_outfile=conftest.$ac_objext
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+- lt_compiler_flag="-fno-rtti -fno-exceptions"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- # The option is referenced via a variable to avoid confusing sed.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:19042: $lt_compile\"" >&5)
+- (eval "$lt_compile" 2>conftest.err)
+- ac_status=$?
+- cat conftest.err >&5
+- echo "$as_me:19046: \$? = $ac_status" >&5
+- if (exit $ac_status) && test -s "$ac_outfile"; then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+- lt_cv_prog_compiler_rtti_exceptions=yes
+- fi
+- fi
+- $rm conftest*
++ # We cannot hardcode anything, or else we can only hardcode existing
++ # directories.
++ hardcode_action_F77=unsupported
++fi
++echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
++echo "${ECHO_T}$hardcode_action_F77" >&6
+
++if test "$hardcode_action_F77" = relink; then
++ # Fast installation is not supported
++ enable_fast_install=no
++elif test "$shlibpath_overrides_runpath" = yes ||
++ test "$enable_shared" = no; then
++ # Fast installation is not necessary
++ enable_fast_install=needless
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+- lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
++striplib=
++old_striplib=
++echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
++ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ else
+- :
++# FIXME - insert some real tests, host_os isn't really good enough
++ case $host_os in
++ darwin*)
++ if test -n "$STRIP" ; then
++ striplib="$STRIP -x"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+-
++ ;;
++ *)
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++ ;;
++ esac
+ fi
+
+-lt_prog_compiler_wl_GCJ=
+-lt_prog_compiler_pic_GCJ=
+-lt_prog_compiler_static_GCJ=
+
+-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+
+- if test "$GCC" = yes; then
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_static_GCJ='-static'
++# The else clause should only fire when bootstrapping the
++# libtool distribution, otherwise you forgot to ship ltmain.sh
++# with your package, and you will get complaints that there are
++# no rules to generate ltmain.sh.
++if test -f "$ltmain"; then
++ # See if we are running on zsh, and set the options which allow our commands through
++ # without removal of \ escapes.
++ if test -n "${ZSH_VERSION+set}" ; then
++ setopt NO_GLOB_SUBST
++ fi
++ # Now quote all the things that may contain metacharacters while being
++ # careful not to overquote the AC_SUBSTed values. We take copies of the
++ # variables and quote the copies for generation of the libtool script.
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
++ SED SHELL STRIP \
++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
++ deplibs_check_method reload_flag reload_cmds need_locks \
++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
++ lt_cv_sys_global_symbol_to_c_name_address \
++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
++ old_postinstall_cmds old_postuninstall_cmds \
++ compiler_F77 \
++ CC_F77 \
++ LD_F77 \
++ lt_prog_compiler_wl_F77 \
++ lt_prog_compiler_pic_F77 \
++ lt_prog_compiler_static_F77 \
++ lt_prog_compiler_no_builtin_flag_F77 \
++ export_dynamic_flag_spec_F77 \
++ thread_safe_flag_spec_F77 \
++ whole_archive_flag_spec_F77 \
++ enable_shared_with_static_runtimes_F77 \
++ old_archive_cmds_F77 \
++ old_archive_from_new_cmds_F77 \
++ predep_objects_F77 \
++ postdep_objects_F77 \
++ predeps_F77 \
++ postdeps_F77 \
++ compiler_lib_search_path_F77 \
++ archive_cmds_F77 \
++ archive_expsym_cmds_F77 \
++ postinstall_cmds_F77 \
++ postuninstall_cmds_F77 \
++ old_archive_from_expsyms_cmds_F77 \
++ allow_undefined_flag_F77 \
++ no_undefined_flag_F77 \
++ export_symbols_cmds_F77 \
++ hardcode_libdir_flag_spec_F77 \
++ hardcode_libdir_flag_spec_ld_F77 \
++ hardcode_libdir_separator_F77 \
++ hardcode_automatic_F77 \
++ module_cmds_F77 \
++ module_expsym_cmds_F77 \
++ lt_cv_prog_compiler_c_o_F77 \
++ exclude_expsyms_F77 \
++ include_expsyms_F77; do
+
+- case $host_os in
+- aix*)
+- # All AIX code is PIC.
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- fi
++ case $var in
++ old_archive_cmds_F77 | \
++ old_archive_from_new_cmds_F77 | \
++ archive_cmds_F77 | \
++ archive_expsym_cmds_F77 | \
++ module_cmds_F77 | \
++ module_expsym_cmds_F77 | \
++ old_archive_from_expsyms_cmds_F77 | \
++ export_symbols_cmds_F77 | \
++ extract_expsyms_cmds | reload_cmds | finish_cmds | \
++ postinstall_cmds | postuninstall_cmds | \
++ old_postinstall_cmds | old_postuninstall_cmds | \
++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
++ # Double-quote double-evaled strings.
++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+-
+- amigaos*)
+- # FIXME: we need at least 68020 code to build shared libraries, but
+- # adding the `-m68020' flag to GCC prevents building anything better,
+- # like `-m68040'.
+- lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
++ *)
++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
++ esac
++ done
+
+- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+- # PIC is the default for these OSes.
+- ;;
++ case $lt_echo in
++ *'\$0 --fallback-echo"')
++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
++ ;;
++ esac
+
+- mingw* | pw32* | os2*)
+- # This hack is so that the source file can tell whether it is being
+- # built for inclusion in a dll (and should export symbols for example).
+- lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+- ;;
++cfgfile="$ofile"
+
+- darwin* | rhapsody*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- lt_prog_compiler_pic_GCJ='-fno-common'
+- ;;
++ cat <<__EOF__ >> "$cfgfile"
++# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+- msdosdjgpp*)
+- # Just because we use GCC doesn't mean we suddenly get shared libraries
+- # on systems that don't support them.
+- lt_prog_compiler_can_build_shared_GCJ=no
+- enable_shared=no
+- ;;
++# Shell to use when invoking shell scripts.
++SHELL=$lt_SHELL
+
+- sysv4*MP*)
+- if test -d /usr/nec; then
+- lt_prog_compiler_pic_GCJ=-Kconform_pic
+- fi
+- ;;
++# Whether or not to build shared libraries.
++build_libtool_libs=$enable_shared
+
+- hpux*)
+- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+- # not for PA HP-UX.
+- case $host_cpu in
+- hppa*64*|ia64*)
+- # +Z the default
+- ;;
+- *)
+- lt_prog_compiler_pic_GCJ='-fPIC'
+- ;;
+- esac
+- ;;
++# Whether or not to build static libraries.
++build_old_libs=$enable_static
+
+- *)
+- lt_prog_compiler_pic_GCJ='-fPIC'
+- ;;
+- esac
+- else
+- # PORTME Check for flag to pass linker flags through the system compiler.
+- case $host_os in
+- aix*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- else
+- lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+- fi
+- ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- lt_prog_compiler_pic_GCJ='-qnocommon'
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- ;;
+- esac
+- ;;
++# Whether or not to add -lc for building shared libraries.
++build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+- mingw* | pw32* | os2*)
+- # This hack is so that the source file can tell whether it is being
+- # built for inclusion in a dll (and should export symbols for example).
+- lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+- ;;
++# Whether or not to disallow shared libs when runtime libs are static
++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+- hpux9* | hpux10* | hpux11*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+- # not for PA HP-UX.
+- case $host_cpu in
+- hppa*64*|ia64*)
+- # +Z the default
+- ;;
+- *)
+- lt_prog_compiler_pic_GCJ='+Z'
+- ;;
+- esac
+- # Is there a better lt_prog_compiler_static that works with the bundled CC?
+- lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+- ;;
++# Whether or not to optimize for fast installation.
++fast_install=$enable_fast_install
+
+- irix5* | irix6* | nonstopux*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- # PIC (with -KPIC) is the default.
+- lt_prog_compiler_static_GCJ='-non_shared'
+- ;;
++# The host system.
++host_alias=$host_alias
++host=$host
+
+- newsos6)
+- lt_prog_compiler_pic_GCJ='-KPIC'
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- ;;
++# An echo program that does not interpret backslashes.
++echo=$lt_echo
+
+- linux* | k*bsd*-gnu)
+- case $cc_basename in
+- icc* | ecc*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_pic_GCJ='-KPIC'
+- lt_prog_compiler_static_GCJ='-static'
+- ;;
+- pgcc* | pgf77* | pgf90* | pgf95*)
+- # Portland Group compilers (*not* the Pentium gcc compiler,
+- # which looks to be a dead project)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_pic_GCJ='-fpic'
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- ;;
+- ccc*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- # All Alpha code is PIC.
+- lt_prog_compiler_static_GCJ='-non_shared'
+- ;;
+- esac
+- ;;
++# The archiver.
++AR=$lt_AR
++AR_FLAGS=$lt_AR_FLAGS
+
+- osf3* | osf4* | osf5*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- # All OSF/1 code is PIC.
+- lt_prog_compiler_static_GCJ='-non_shared'
+- ;;
++# A C compiler.
++LTCC=$lt_LTCC
+
+- solaris*)
+- lt_prog_compiler_pic_GCJ='-KPIC'
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- case $cc_basename in
+- f77* | f90* | f95*)
+- lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+- *)
+- lt_prog_compiler_wl_GCJ='-Wl,';;
+- esac
+- ;;
++# A language-specific compiler.
++CC=$lt_compiler_F77
+
+- sunos4*)
+- lt_prog_compiler_wl_GCJ='-Qoption ld '
+- lt_prog_compiler_pic_GCJ='-PIC'
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- ;;
++# Is the compiler the GNU C compiler?
++with_gcc=$GCC_F77
+
+- sysv4 | sysv4.2uw2* | sysv4.3*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_pic_GCJ='-KPIC'
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- ;;
++# An ERE matcher.
++EGREP=$lt_EGREP
+
+- sysv4*MP*)
+- if test -d /usr/nec ;then
+- lt_prog_compiler_pic_GCJ='-Kconform_pic'
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- fi
+- ;;
++# The linker used to build libraries.
++LD=$lt_LD_F77
+
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_pic_GCJ='-KPIC'
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- ;;
++# Whether we need hard or soft links.
++LN_S=$lt_LN_S
+
+- unicos*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_can_build_shared_GCJ=no
+- ;;
++# A BSD-compatible nm program.
++NM=$lt_NM
+
+- uts4*)
+- lt_prog_compiler_pic_GCJ='-pic'
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- ;;
++# A symbol stripping program
++STRIP=$lt_STRIP
+
+- *)
+- lt_prog_compiler_can_build_shared_GCJ=no
+- ;;
+- esac
+- fi
++# Used to examine libraries when file_magic_cmd begins "file"
++MAGIC_CMD=$MAGIC_CMD
+
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; }
++# Used on cygwin: DLL creation program.
++DLLTOOL="$DLLTOOL"
+
+-#
+-# Check to make sure the PIC flag actually works.
+-#
+-if test -n "$lt_prog_compiler_pic_GCJ"; then
++# Used on cygwin: object dumper.
++OBJDUMP="$OBJDUMP"
+
+-{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_pic_works_GCJ=no
+- ac_outfile=conftest.$ac_objext
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+- lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- # The option is referenced via a variable to avoid confusing sed.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:19310: $lt_compile\"" >&5)
+- (eval "$lt_compile" 2>conftest.err)
+- ac_status=$?
+- cat conftest.err >&5
+- echo "$as_me:19314: \$? = $ac_status" >&5
+- if (exit $ac_status) && test -s "$ac_outfile"; then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_pic_works_GCJ=yes
+- fi
+- fi
+- $rm conftest*
++# Used on cygwin: assembler.
++AS="$AS"
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; }
++# The name of the directory that contains temporary libtool files.
++objdir=$objdir
+
+-if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+- case $lt_prog_compiler_pic_GCJ in
+- "" | " "*) ;;
+- *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+- esac
+-else
+- lt_prog_compiler_pic_GCJ=
+- lt_prog_compiler_can_build_shared_GCJ=no
+-fi
++# How to create reloadable object files.
++reload_flag=$lt_reload_flag
++reload_cmds=$lt_reload_cmds
+
+-fi
+-case $host_os in
+- # For platforms which do not support PIC, -DPIC is meaningless:
+- *djgpp*)
+- lt_prog_compiler_pic_GCJ=
+- ;;
+- *)
+- lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+- ;;
+-esac
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl_F77
+
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
+-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_static_works_GCJ=no
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_static_works_GCJ=yes
+- fi
+- else
+- lt_prog_compiler_static_works_GCJ=yes
+- fi
+- fi
+- $rm conftest*
+- LDFLAGS="$save_LDFLAGS"
++# Object file suffix (normally "o").
++objext="$ac_objext"
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
+-echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; }
++# Old archive suffix (normally "a").
++libext="$libext"
+
+-if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
+- :
+-else
+- lt_prog_compiler_static_GCJ=
+-fi
++# Shared library suffix (normally ".so").
++shrext_cmds='$shrext_cmds'
+
++# Executable file suffix (normally "").
++exeext="$exeext"
+
+-{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+-if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_cv_prog_compiler_c_o_GCJ=no
+- $rm -r conftest 2>/dev/null
+- mkdir conftest
+- cd conftest
+- mkdir out
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++# Additional compiler flags for building library objects.
++pic_flag=$lt_lt_prog_compiler_pic_F77
++pic_mode=$pic_mode
+
+- lt_compiler_flag="-o out/conftest2.$ac_objext"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:19414: $lt_compile\"" >&5)
+- (eval "$lt_compile" 2>out/conftest.err)
+- ac_status=$?
+- cat out/conftest.err >&5
+- echo "$as_me:19418: \$? = $ac_status" >&5
+- if (exit $ac_status) && test -s out/conftest2.$ac_objext
+- then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+- lt_cv_prog_compiler_c_o_GCJ=yes
+- fi
+- fi
+- chmod u+w . 2>&5
+- $rm conftest*
+- # SGI C++ compiler will create directory out/ii_files/ for
+- # template instantiation
+- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+- $rm out/* && rmdir out
+- cd ..
+- rmdir conftest
+- $rm conftest*
++# What is the maximum length of a command?
++max_cmd_len=$lt_cv_sys_max_cmd_len
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; }
++# Does compiler simultaneously support -c and -o options?
++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
++# Must we lock files when doing compilation ?
++need_locks=$lt_need_locks
+
+-hard_links="nottested"
+-if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+- # do not overwrite the value of need_locks provided by the user
+- { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
+- hard_links=yes
+- $rm conftest*
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- touch conftest.a
+- ln conftest.a conftest.b 2>&5 || hard_links=no
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- { echo "$as_me:$LINENO: result: $hard_links" >&5
+-echo "${ECHO_T}$hard_links" >&6; }
+- if test "$hard_links" = no; then
+- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+- need_locks=warn
+- fi
+-else
+- need_locks=no
+-fi
++# Do we need the lib prefix for modules?
++need_lib_prefix=$need_lib_prefix
+
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++# Do we need a version for libraries?
++need_version=$need_version
+
+- runpath_var=
+- allow_undefined_flag_GCJ=
+- enable_shared_with_static_runtimes_GCJ=no
+- archive_cmds_GCJ=
+- archive_expsym_cmds_GCJ=
+- old_archive_From_new_cmds_GCJ=
+- old_archive_from_expsyms_cmds_GCJ=
+- export_dynamic_flag_spec_GCJ=
+- whole_archive_flag_spec_GCJ=
+- thread_safe_flag_spec_GCJ=
+- hardcode_libdir_flag_spec_GCJ=
+- hardcode_libdir_flag_spec_ld_GCJ=
+- hardcode_libdir_separator_GCJ=
+- hardcode_direct_GCJ=no
+- hardcode_minus_L_GCJ=no
+- hardcode_shlibpath_var_GCJ=unsupported
+- link_all_deplibs_GCJ=unknown
+- hardcode_automatic_GCJ=no
+- module_cmds_GCJ=
+- module_expsym_cmds_GCJ=
+- always_export_symbols_GCJ=no
+- export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+- # include_expsyms should be a list of space-separated symbols to be *always*
+- # included in the symbol list
+- include_expsyms_GCJ=
+- # exclude_expsyms can be an extended regexp of symbols to exclude
+- # it will be wrapped by ` (' and `)$', so one must not match beginning or
+- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+- # as well as any symbol that contains `d'.
+- exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+- # platforms (ab)use it in PIC code, but their linkers get confused if
+- # the symbol is explicitly referenced. Since portable code cannot
+- # rely on this symbol name, it's probably fine to never include it in
+- # preloaded symbol tables.
+- extract_expsyms_cmds=
+- # Just being paranoid about ensuring that cc_basename is set.
+- for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
++# Whether dlopen is supported.
++dlopen_support=$enable_dlopen
+
+- case $host_os in
+- cygwin* | mingw* | pw32*)
+- # FIXME: the MSVC++ port hasn't been tested in a loooong time
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- if test "$GCC" != yes; then
+- with_gnu_ld=no
+- fi
+- ;;
+- interix*)
+- # we just hope/assume this is gcc and not c89 (= MSVC++)
+- with_gnu_ld=yes
+- ;;
+- openbsd*)
+- with_gnu_ld=no
+- ;;
+- esac
++# Whether dlopen of programs is supported.
++dlopen_self=$enable_dlopen_self
+
+- ld_shlibs_GCJ=yes
+- if test "$with_gnu_ld" = yes; then
+- # If archive_cmds runs LD, not CC, wlarc should be empty
+- wlarc='${wl}'
++# Whether dlopen of statically linked programs is supported.
++dlopen_self_static=$enable_dlopen_self_static
+
+- # Set some defaults for GNU ld with shared library support. These
+- # are reset later if shared libraries are not supported. Putting them
+- # here allows them to be overridden if necessary.
+- runpath_var=LD_RUN_PATH
+- hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+- export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+- whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- whole_archive_flag_spec_GCJ=
+- fi
+- supports_anon_versioning=no
+- case `$LD -v 2>/dev/null` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+- *\ 2.11.*) ;; # other 2.11 versions
+- *) supports_anon_versioning=yes ;;
+- esac
++# Compiler flag to prevent dynamic linking.
++link_static_flag=$lt_lt_prog_compiler_static_F77
+
+- # See if GNU ld supports shared libraries.
+- case $host_os in
+- aix3* | aix4* | aix5*)
+- # On AIX/PPC, the GNU linker is very broken
+- if test "$host_cpu" != ia64; then
+- ld_shlibs_GCJ=no
+- cat <<EOF 1>&2
++# Compiler flag to turn off builtin functions.
++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+-*** to be unable to reliably create shared libraries on AIX.
+-*** Therefore, libtool is disabling shared libraries support. If you
+-*** really care for shared libraries, you may want to modify your PATH
+-*** so that a non-GNU linker is found, and then restart.
++# Compiler flag to allow reflexive dlopens.
++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+-EOF
+- fi
+- ;;
++# Compiler flag to generate shared objects directly from archives.
++whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+- amigaos*)
+- archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_minus_L_GCJ=yes
++# Compiler flag to generate thread-safe objects.
++thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+- # that the semantics of dynamic libraries on AmigaOS, at least up
+- # to version 4, is to share data among multiple programs linked
+- # with the same dynamic library. Since this doesn't match the
+- # behavior of shared libraries on other platforms, we can't use
+- # them.
+- ld_shlibs_GCJ=no
+- ;;
++# Library versioning type.
++version_type=$version_type
+
+- beos*)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- allow_undefined_flag_GCJ=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- else
+- ld_shlibs_GCJ=no
+- fi
+- ;;
++# Format of library name prefix.
++libname_spec=$lt_libname_spec
+
+- cygwin* | mingw* | pw32*)
+- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+- # as there is no search path for DLLs.
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- allow_undefined_flag_GCJ=unsupported
+- always_export_symbols_GCJ=no
+- enable_shared_with_static_runtimes_GCJ=yes
+- export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
++# List of archive names. First name is the real one, the rest are links.
++# The last name is the one that the linker finds with -lNAME.
++library_names_spec=$lt_library_names_spec
+
+- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- # If the export-symbols file already is a .def file (1st line
+- # is EXPORTS), use it as is; otherwise, prepend...
+- archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+- cp $export_symbols $output_objdir/$soname.def;
+- else
+- echo EXPORTS > $output_objdir/$soname.def;
+- cat $export_symbols >> $output_objdir/$soname.def;
+- fi~
+- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- ld_shlibs_GCJ=no
+- fi
+- ;;
++# The coded name of the library, if different from the real name.
++soname_spec=$lt_soname_spec
+
+- interix3*)
+- hardcode_direct_GCJ=no
+- hardcode_shlibpath_var_GCJ=no
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_GCJ='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
++# Commands used to build and install an old-style archive.
++RANLIB=$lt_RANLIB
++old_archive_cmds=$lt_old_archive_cmds_F77
++old_postinstall_cmds=$lt_old_postinstall_cmds
++old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+- linux* | k*bsd*-gnu)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- tmp_addflag=
+- case $cc_basename,$host_cpu in
+- pgcc*) # Portland Group C compiler
+- whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag'
+- ;;
+- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+- whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag -Mnomain' ;;
+- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+- tmp_addflag=' -i_dynamic' ;;
+- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+- tmp_addflag=' -i_dynamic -nofor_main' ;;
+- ifc* | ifort*) # Intel Fortran compiler
+- tmp_addflag=' -nofor_main' ;;
+- esac
+- archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++# Create an old-style archive from a shared archive.
++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+- if test $supports_anon_versioning = yes; then
+- archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- $echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+- fi
+- link_all_deplibs_GCJ=no
+- else
+- ld_shlibs_GCJ=no
+- fi
+- ;;
++# Create a temporary old-style archive to link instead of a shared archive.
++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+- netbsd* | netbsdelf*-gnu)
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+- wlarc=
+- else
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- fi
+- ;;
++# Commands used to build and install a shared archive.
++archive_cmds=$lt_archive_cmds_F77
++archive_expsym_cmds=$lt_archive_expsym_cmds_F77
++postinstall_cmds=$lt_postinstall_cmds
++postuninstall_cmds=$lt_postuninstall_cmds
+
+- solaris*)
+- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+- ld_shlibs_GCJ=no
+- cat <<EOF 1>&2
++# Commands used to build a loadable module (assumed same as above if empty)
++module_cmds=$lt_module_cmds_F77
++module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+-*** create shared libraries on Solaris systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.9.1 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
++# Commands to strip libraries.
++old_striplib=$lt_old_striplib
++striplib=$lt_striplib
+
+-EOF
+- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- ld_shlibs_GCJ=no
+- fi
+- ;;
++# Dependencies to place before the objects being linked to create a
++# shared library.
++predep_objects=$lt_predep_objects_F77
+
+- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+- case `$LD -v 2>&1` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+- ld_shlibs_GCJ=no
+- cat <<_LT_EOF 1>&2
++# Dependencies to place after the objects being linked to create a
++# shared library.
++postdep_objects=$lt_postdep_objects_F77
+
+-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+-*** reliably create shared libraries on SCO systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
++# Dependencies to place before the objects being linked to create a
++# shared library.
++predeps=$lt_predeps_F77
+
+-_LT_EOF
+- ;;
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+- else
+- ld_shlibs_GCJ=no
+- fi
+- ;;
+- esac
+- ;;
++# Dependencies to place after the objects being linked to create a
++# shared library.
++postdeps=$lt_postdeps_F77
+
+- sunos4*)
+- archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- wlarc=
+- hardcode_direct_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
+- ;;
++# The library search path used internally by the compiler when linking
++# a shared library.
++compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- ld_shlibs_GCJ=no
+- fi
+- ;;
+- esac
++# Method to check whether dependent libraries are shared objects.
++deplibs_check_method=$lt_deplibs_check_method
+
+- if test "$ld_shlibs_GCJ" = no; then
+- runpath_var=
+- hardcode_libdir_flag_spec_GCJ=
+- export_dynamic_flag_spec_GCJ=
+- whole_archive_flag_spec_GCJ=
+- fi
+- else
+- # PORTME fill in a description of your system's linker (not GNU ld)
+- case $host_os in
+- aix3*)
+- allow_undefined_flag_GCJ=unsupported
+- always_export_symbols_GCJ=yes
+- archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+- # Note: this linker hardcodes the directories in LIBPATH if there
+- # are no directories specified by -L.
+- hardcode_minus_L_GCJ=yes
+- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+- # Neither direct hardcoding nor static linking is supported with a
+- # broken collect2.
+- hardcode_direct_GCJ=unsupported
+- fi
+- ;;
++# Command to use when deplibs_check_method == file_magic.
++file_magic_cmd=$lt_file_magic_cmd
+
+- aix4* | aix5*)
+- if test "$host_cpu" = ia64; then
+- # On IA64, the linker does run time linking by default, so we don't
+- # have to do anything special.
+- aix_use_runtimelinking=no
+- exp_sym_flag='-Bexport'
+- no_entry_flag=""
+- else
+- # If we're using GNU nm, then we don't want the "-C" option.
+- # -C means demangle to AIX nm, but means don't demangle with GNU nm
+- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+- export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+- else
+- export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+- fi
+- aix_use_runtimelinking=no
++# Flag that allows shared libraries with undefined symbols to be built.
++allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+- # Test if we are trying to use run time linking or normal
+- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+- # need to do runtime linking.
+- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+- for ld_flag in $LDFLAGS; do
+- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+- aix_use_runtimelinking=yes
+- break
+- fi
+- done
+- ;;
+- esac
++# Flag that forces no undefined symbols.
++no_undefined_flag=$lt_no_undefined_flag_F77
+
+- exp_sym_flag='-bexport'
+- no_entry_flag='-bnoentry'
+- fi
++# Commands used to finish a libtool library installation in a directory.
++finish_cmds=$lt_finish_cmds
+
+- # When large executables or shared objects are built, AIX ld can
+- # have problems creating the table of contents. If linking a library
+- # or program results in "error TOC overflow" add -mminimal-toc to
+- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
++# Same as above, but a single script fragment to be evaled but not shown.
++finish_eval=$lt_finish_eval
+
+- archive_cmds_GCJ=''
+- hardcode_direct_GCJ=yes
+- hardcode_libdir_separator_GCJ=':'
+- link_all_deplibs_GCJ=yes
++# Take the output of nm and produce a listing of raw symbols and C names.
++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+- if test "$GCC" = yes; then
+- case $host_os in aix4.[012]|aix4.[012].*)
+- # We only want to do this on AIX 4.2 and lower, the check
+- # below for broken collect2 doesn't work under 4.3+
+- collect2name=`${CC} -print-prog-name=collect2`
+- if test -f "$collect2name" && \
+- strings "$collect2name" | grep resolve_lib_name >/dev/null
+- then
+- # We have reworked collect2
+- hardcode_direct_GCJ=yes
+- else
+- # We have old collect2
+- hardcode_direct_GCJ=unsupported
+- # It fails to find uninstalled libraries when the uninstalled
+- # path is not listed in the libpath. Setting hardcode_minus_L
+- # to unsupported forces relinking
+- hardcode_minus_L_GCJ=yes
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_libdir_separator_GCJ=
+- fi
+- ;;
+- esac
+- shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+- else
+- # not using gcc
+- if test "$host_cpu" = ia64; then
+- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+- # chokes on -Wl,-G. The following line is correct:
+- shared_flag='-G'
+- else
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag='${wl}-G'
+- else
+- shared_flag='${wl}-bM:SRE'
+- fi
+- fi
+- fi
++# Transform the output of nm in a proper C declaration
++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+- # It seems that -bexpall does not export symbols beginning with
+- # underscore (_), so it is better to generate a list of symbols to export.
+- always_export_symbols_GCJ=yes
+- if test "$aix_use_runtimelinking" = yes; then
+- # Warning - without using the other runtime loading flags (-brtl),
+- # -berok will link without error, but may produce a broken library.
+- allow_undefined_flag_GCJ='-berok'
+- # Determine the default libpath from the value encoded in an empty executable.
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++# Transform the output of nm in a C name address pair
++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+-int
+-main ()
+-{
++# This is the shared library runtime path variable.
++runpath_var=$runpath_var
+
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++# This is the shared library path variable.
++shlibpath_var=$shlibpath_var
+
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`; fi
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++# Is shlibpath searched before the hard-coded library search path?
++shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
++# How to hardcode a shared library path into an executable.
++hardcode_action=$hardcode_action_F77
+
+-fi
++# Whether we should hardcode library paths into libraries.
++hardcode_into_libs=$hardcode_into_libs
+
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+- conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++# Flag to hardcode \$libdir into a binary during linking.
++# This must work even if \$libdir does not exist.
++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+- hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+- archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+- else
+- if test "$host_cpu" = ia64; then
+- hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+- allow_undefined_flag_GCJ="-z nodefs"
+- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+- else
+- # Determine the default libpath from the value encoded in an empty executable.
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++# If ld is used when linking, flag to hardcode \$libdir into
++# a binary during linking. This must work even if \$libdir does
++# not exist.
++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+-int
+-main ()
+-{
++# Whether we need a single -rpath flag with a separated argument.
++hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
++# resulting binary.
++hardcode_direct=$hardcode_direct_F77
+
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`; fi
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
++# resulting binary.
++hardcode_minus_L=$hardcode_minus_L_F77
+
++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
++# the resulting binary.
++hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+-fi
++# Set to yes if building a shared library automatically hardcodes DIR into the library
++# and all subsequent libraries and executables linked against it.
++hardcode_automatic=$hardcode_automatic_F77
+
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+- conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++# Variables whose values should be saved in libtool wrapper scripts and
++# restored at relink time.
++variables_saved_for_relink="$variables_saved_for_relink"
+
+- hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+- # Warning - without using the other run time loading flags,
+- # -berok will link without error, but may produce a broken library.
+- no_undefined_flag_GCJ=' ${wl}-bernotok'
+- allow_undefined_flag_GCJ=' ${wl}-berok'
+- # Exported symbols can be pulled into shared objects from archives
+- whole_archive_flag_spec_GCJ='$convenience'
+- archive_cmds_need_lc_GCJ=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+- fi
+- fi
+- ;;
++# Whether libtool must link a program against all its dependency libraries.
++link_all_deplibs=$link_all_deplibs_F77
+
+- amigaos*)
+- archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_minus_L_GCJ=yes
+- # see comment about different semantics on the GNU ld section
+- ld_shlibs_GCJ=no
+- ;;
++# Compile-time system search path for libraries
++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+- bsdi[45]*)
+- export_dynamic_flag_spec_GCJ=-rdynamic
+- ;;
++# Run-time system search path for libraries
++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+- cygwin* | mingw* | pw32*)
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- # hardcode_libdir_flag_spec is actually meaningless, as there is
+- # no search path for DLLs.
+- hardcode_libdir_flag_spec_GCJ=' '
+- allow_undefined_flag_GCJ=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_From_new_cmds_GCJ='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes_GCJ=yes
+- ;;
++# Fix the shell variable \$srcfile for the compiler.
++fix_srcfile_path="$fix_srcfile_path_F77"
+
+- darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[012])
+- allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[012])
+- allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
+- archive_cmds_need_lc_GCJ=no
+- hardcode_direct_GCJ=no
+- hardcode_automatic_GCJ=yes
+- hardcode_shlibpath_var_GCJ=unsupported
+- whole_archive_flag_spec_GCJ=''
+- link_all_deplibs_GCJ=yes
+- if test "$GCC" = yes ; then
+- output_verbose_link_cmd='echo'
+- archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- module_cmds_GCJ='$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 lds
+- archive_expsym_cmds_GCJ='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}'
+- module_expsym_cmds_GCJ='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}'
+- else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+- module_cmds_GCJ='$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 lds
+- archive_expsym_cmds_GCJ='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}'
+- module_expsym_cmds_GCJ='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}'
+- ;;
+- *)
+- ld_shlibs_GCJ=no
+- ;;
+- esac
+- fi
+- ;;
++# Set to yes if exported symbols are required.
++always_export_symbols=$always_export_symbols_F77
+
+- dgux*)
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_shlibpath_var_GCJ=no
+- ;;
++# The commands to list exported symbols.
++export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+- freebsd1*)
+- ld_shlibs_GCJ=no
+- ;;
++# The commands to extract the exported symbol list from a shared archive.
++extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+- # support. Future versions do this automatically, but an explicit c++rt0.o
+- # does not break anything, and helps significantly (at the cost of a little
+- # extra space).
+- freebsd2.2*)
+- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+- hardcode_libdir_flag_spec_GCJ='-R$libdir'
+- hardcode_direct_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
+- ;;
++# Symbols that should not be listed in the preloaded symbols.
++exclude_expsyms=$lt_exclude_expsyms_F77
+
+- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+- freebsd2*)
+- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_GCJ=yes
+- hardcode_minus_L_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
+- ;;
++# Symbols that must always be exported.
++include_expsyms=$lt_include_expsyms_F77
+
+- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd* | dragonfly*)
+- archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+- hardcode_libdir_flag_spec_GCJ='-R$libdir'
+- hardcode_direct_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
+- ;;
++# ### END LIBTOOL TAG CONFIG: $tagname
+
+- hpux9*)
+- if test "$GCC" = yes; then
+- archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+- else
+- archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+- fi
+- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
+- hardcode_direct_GCJ=yes
++__EOF__
+
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_GCJ=yes
+- export_dynamic_flag_spec_GCJ='${wl}-E'
+- ;;
+
+- hpux10*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
++else
++ # If there is no Makefile yet, we rely on a make rule to execute
++ # `config.status --recheck' to rerun these tests and create the
++ # libtool script then.
++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
++ if test -f "$ltmain_in"; then
++ test -f Makefile && make "$ltmain"
++ fi
++fi
+
+- hardcode_direct_GCJ=yes
+- export_dynamic_flag_spec_GCJ='${wl}-E'
+
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_GCJ=yes
+- 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
+
+- hpux11*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- else
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
++CC="$lt_save_CC"
+
+- case $host_cpu in
+- hppa*64*|ia64*)
+- hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+- hardcode_direct_GCJ=no
+- hardcode_shlibpath_var_GCJ=no
+- ;;
+- *)
+- hardcode_direct_GCJ=yes
+- export_dynamic_flag_spec_GCJ='${wl}-E'
++ else
++ tagname=""
++ fi
++ ;;
+
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_GCJ=yes
+- ;;
+- esac
+- fi
+- ;;
++ GCJ)
++ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+- irix5* | irix6* | nonstopux*)
+- if test "$GCC" = yes; then
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- else
+- archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+- hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+- fi
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
+- link_all_deplibs_GCJ=yes
+- ;;
+
+- netbsd* | netbsdelf*-gnu)
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+- else
+- archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+- fi
+- hardcode_libdir_flag_spec_GCJ='-R$libdir'
+- hardcode_direct_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
+- ;;
+
+- newsos6)
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_GCJ=yes
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
+- hardcode_shlibpath_var_GCJ=no
+- ;;
++# Source file extension for Java test sources.
++ac_ext=java
+
+- openbsd*)
+- hardcode_direct_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_GCJ='${wl}-E'
+- else
+- case $host_os in
+- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_GCJ='-R$libdir'
+- ;;
+- *)
+- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+- ;;
+- esac
+- fi
+- ;;
++# Object file extension for compiled Java test sources.
++objext=o
++objext_GCJ=$objext
+
+- os2*)
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_minus_L_GCJ=yes
+- allow_undefined_flag_GCJ=unsupported
+- archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+- old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+- ;;
++# Code to be used in simple compile tests
++lt_simple_compile_test_code="class foo {}\n"
+
+- osf3*)
+- if test "$GCC" = yes; then
+- allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- else
+- allow_undefined_flag_GCJ=' -expect_unresolved \*'
+- archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+- fi
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
+- ;;
++# Code to be used in simple link tests
++lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n'
+
+- osf4* | osf5*) # as osf3* with the addition of -msym flag
+- if test "$GCC" = yes; then
+- allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+- else
+- allow_undefined_flag_GCJ=' -expect_unresolved \*'
+- archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+- archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
++# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+- # Both c and cxx compiler support -rpath directly
+- hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
++# If no C compiler was specified, use CC.
++LTCC=${LTCC-"$CC"}
++
++# Allow CC to be a program name with arguments.
++compiler=$CC
++
++
++# Allow CC to be a program name with arguments.
++lt_save_CC="$CC"
++CC=${GCJ-"gcj"}
++compiler=$CC
++compiler_GCJ=$CC
++
++# GCJ did not exist at the time GCC didn't implicitly link libc in.
++archive_cmds_need_lc_GCJ=no
++
++
++lt_prog_compiler_no_builtin_flag_GCJ=
++
++if test "$GCC" = yes; then
++ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
++
++
++echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
++if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_cv_prog_compiler_rtti_exceptions=no
++ ac_outfile=conftest.$ac_objext
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++ lt_compiler_flag="-fno-rtti -fno-exceptions"
++ # Insert the option either (1) after the last *FLAGS variable, or
++ # (2) before a word containing "conftest.", or (3) at the end.
++ # Note that $ac_compile itself does not contain backslashes and begins
++ # with a dollar sign (not a hyphen), so the echo should work correctly.
++ # The option is referenced via a variable to avoid confusing sed.
++ lt_compile=`echo "$ac_compile" | $SED \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
++ -e 's:$: $lt_compiler_flag:'`
++ (eval echo "\"\$as_me:17666: $lt_compile\"" >&5)
++ (eval "$lt_compile" 2>conftest.err)
++ ac_status=$?
++ cat conftest.err >&5
++ echo "$as_me:17670: \$? = $ac_status" >&5
++ if (exit $ac_status) && test -s "$ac_outfile"; then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
++ lt_cv_prog_compiler_rtti_exceptions=yes
++ fi
++ fi
++ $rm conftest*
++
++fi
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
++
++if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
++ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
++else
++ :
++fi
++
++fi
++
++lt_prog_compiler_wl_GCJ=
++lt_prog_compiler_pic_GCJ=
++lt_prog_compiler_static_GCJ=
++
++echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
++
++ if test "$GCC" = yes; then
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ lt_prog_compiler_static_GCJ='-static'
++
++ case $host_os in
++ aix*)
++ # All AIX code is PIC.
++ if test "$host_cpu" = ia64; then
++ # AIX 5 now supports IA64 processor
++ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+- hardcode_libdir_separator_GCJ=:
+ ;;
+
+- solaris*)
+- no_undefined_flag_GCJ=' -z text'
+- if test "$GCC" = yes; then
+- wlarc='${wl}'
+- archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+- else
+- wlarc=''
+- archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+- fi
+- hardcode_libdir_flag_spec_GCJ='-R$libdir'
+- hardcode_shlibpath_var_GCJ=no
+- case $host_os in
+- solaris2.[0-5] | solaris2.[0-5].*) ;;
+- *)
+- # The compiler driver will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl, iff we do not link with $LD.
+- # Luckily, gcc supports the same syntax we need for Sun Studio.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- case $wlarc in
+- '')
+- whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+- *)
+- whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+- esac ;;
+- esac
+- link_all_deplibs_GCJ=yes
++ amigaos*)
++ # FIXME: we need at least 68020 code to build shared libraries, but
++ # adding the `-m68020' flag to GCC prevents building anything better,
++ # like `-m68040'.
++ lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+- sunos4*)
+- if test "x$host_vendor" = xsequent; then
+- # Use $CC to link under sequent, because it throws in some extra .o
+- # files that make .init and .fini sections work.
+- archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_direct_GCJ=yes
+- hardcode_minus_L_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
++ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
++ # PIC is the default for these OSes.
+ ;;
+
+- sysv4)
+- case $host_vendor in
+- sni)
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_GCJ=yes # is this really true???
+- ;;
+- siemens)
+- ## LD is ld it makes a PLAMLIB
+- ## CC just makes a GrossModule.
+- archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+- reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+- hardcode_direct_GCJ=no
+- ;;
+- motorola)
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+- ;;
+- esac
+- runpath_var='LD_RUN_PATH'
+- hardcode_shlibpath_var_GCJ=no
++ mingw* | pw32* | os2*)
++ # This hack is so that the source file can tell whether it is being
++ # built for inclusion in a dll (and should export symbols for example).
++ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+ ;;
+
+- sysv4.3*)
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_shlibpath_var_GCJ=no
+- export_dynamic_flag_spec_GCJ='-Bexport'
++ darwin* | rhapsody*)
++ # PIC is the default on this platform
++ # Common symbols not allowed in MH_DYLIB files
++ lt_prog_compiler_pic_GCJ='-fno-common'
++ ;;
++
++ msdosdjgpp*)
++ # Just because we use GCC doesn't mean we suddenly get shared libraries
++ # on systems that don't support them.
++ lt_prog_compiler_can_build_shared_GCJ=no
++ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_shlibpath_var_GCJ=no
+- runpath_var=LD_RUN_PATH
+- hardcode_runpath_var=yes
+- ld_shlibs_GCJ=yes
++ lt_prog_compiler_pic_GCJ=-Kconform_pic
+ fi
+ ;;
+
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+- no_undefined_flag_GCJ='${wl}-z,text'
+- archive_cmds_need_lc_GCJ=no
+- hardcode_shlibpath_var_GCJ=no
+- runpath_var='LD_RUN_PATH'
++ hpux*)
++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
++ # not for PA HP-UX.
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ # +Z the default
++ ;;
++ *)
++ lt_prog_compiler_pic_GCJ='-fPIC'
++ ;;
++ esac
++ ;;
+
+- if test "$GCC" = yes; then
+- archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ *)
++ lt_prog_compiler_pic_GCJ='-fPIC'
++ ;;
++ esac
++ else
++ # PORTME Check for flag to pass linker flags through the system compiler.
++ case $host_os in
++ aix*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ if test "$host_cpu" = ia64; then
++ # AIX 5 now supports IA64 processor
++ lt_prog_compiler_static_GCJ='-Bstatic'
+ else
+- archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- no_undefined_flag_GCJ='${wl}-z,text'
+- allow_undefined_flag_GCJ='${wl}-z,nodefs'
+- archive_cmds_need_lc_GCJ=no
+- hardcode_shlibpath_var_GCJ=no
+- hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- hardcode_libdir_separator_GCJ=':'
+- link_all_deplibs_GCJ=yes
+- export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+- runpath_var='LD_RUN_PATH'
++ mingw* | pw32* | os2*)
++ # This hack is so that the source file can tell whether it is being
++ # built for inclusion in a dll (and should export symbols for example).
++ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
++ ;;
+
+- if test "$GCC" = yes; then
+- archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- fi
++ hpux9* | hpux10* | hpux11*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
++ # not for PA HP-UX.
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ # +Z the default
++ ;;
++ *)
++ lt_prog_compiler_pic_GCJ='+Z'
++ ;;
++ esac
++ # Is there a better lt_prog_compiler_static that works with the bundled CC?
++ lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+ ;;
+
+- uts4*)
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_shlibpath_var_GCJ=no
++ irix5* | irix6* | nonstopux*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ # PIC (with -KPIC) is the default.
++ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+- *)
+- ld_shlibs_GCJ=no
++ newsos6)
++ lt_prog_compiler_pic_GCJ='-KPIC'
++ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+- esac
+- fi
+
+-{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+-echo "${ECHO_T}$ld_shlibs_GCJ" >&6; }
+-test "$ld_shlibs_GCJ" = no && can_build_shared=no
++ linux*)
++ case $CC in
++ icc* | ecc*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ lt_prog_compiler_pic_GCJ='-KPIC'
++ lt_prog_compiler_static_GCJ='-static'
++ ;;
++ ccc*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ # All Alpha code is PIC.
++ lt_prog_compiler_static_GCJ='-non_shared'
++ ;;
++ esac
++ ;;
+
+-#
+-# Do we need to explicitly link libc?
+-#
+-case "x$archive_cmds_need_lc_GCJ" in
+-x|xyes)
+- # Assume -lc should be added
+- archive_cmds_need_lc_GCJ=yes
++ osf3* | osf4* | osf5*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ # All OSF/1 code is PIC.
++ lt_prog_compiler_static_GCJ='-non_shared'
++ ;;
+
+- if test "$enable_shared" = yes && test "$GCC" = yes; then
+- case $archive_cmds_GCJ in
+- *'~'*)
+- # FIXME: we may have to deal with multi-command sequences.
++ sco3.2v5*)
++ lt_prog_compiler_pic_GCJ='-Kpic'
++ lt_prog_compiler_static_GCJ='-dn'
+ ;;
+- '$CC '*)
+- # Test whether the compiler implicitly links with -lc since on some
+- # systems, -lgcc has to come before -lc. If gcc already passes -lc
+- # to ld, don't add -lc before -lgcc.
+- { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+- $rm conftest*
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+- 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); } 2>conftest.err; then
+- soname=conftest
+- lib=conftest
+- libobjs=conftest.$ac_objext
+- deplibs=
+- wl=$lt_prog_compiler_wl_GCJ
+- pic_flag=$lt_prog_compiler_pic_GCJ
+- compiler_flags=-v
+- linker_flags=-v
+- verstring=
+- output_objdir=.
+- libname=conftest
+- lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+- allow_undefined_flag_GCJ=
+- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+- (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }
+- then
+- archive_cmds_need_lc_GCJ=no
+- else
+- archive_cmds_need_lc_GCJ=yes
+- fi
+- allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+- else
+- cat conftest.err 1>&5
+- fi
+- $rm conftest*
+- { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+-echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; }
++ solaris*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ lt_prog_compiler_pic_GCJ='-KPIC'
++ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+- esac
+- fi
+- ;;
+-esac
+
+-{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+-library_names_spec=
+-libname_spec='lib$name'
+-soname_spec=
+-shrext_cmds=".so"
+-postinstall_cmds=
+-postuninstall_cmds=
+-finish_cmds=
+-finish_eval=
+-shlibpath_var=
+-shlibpath_overrides_runpath=unknown
+-version_type=none
+-dynamic_linker="$host_os ld.so"
+-sys_lib_dlsearch_path_spec="/lib /usr/lib"
+-if test "$GCC" = yes; then
+- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+- # if the path contains ";" then we assume it to be the separator
+- # otherwise default to the standard path separator (i.e. ":") - it is
+- # assumed that no part of a normal pathname contains ";" but that should
+- # okay in the real world where ";" in dirpaths is itself problematic.
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+- else
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+- fi
+-else
+- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+-fi
+-need_lib_prefix=unknown
+-hardcode_into_libs=no
++ sunos4*)
++ lt_prog_compiler_wl_GCJ='-Qoption ld '
++ lt_prog_compiler_pic_GCJ='-PIC'
++ lt_prog_compiler_static_GCJ='-Bstatic'
++ ;;
+
+-# when you set need_version to no, make sure it does not cause -set_version
+-# flags to be left without arguments
+-need_version=unknown
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ lt_prog_compiler_pic_GCJ='-KPIC'
++ lt_prog_compiler_static_GCJ='-Bstatic'
++ ;;
+
+-case $host_os in
+-aix3*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+- shlibpath_var=LIBPATH
++ sysv4*MP*)
++ if test -d /usr/nec ;then
++ lt_prog_compiler_pic_GCJ='-Kconform_pic'
++ lt_prog_compiler_static_GCJ='-Bstatic'
++ fi
++ ;;
+
+- # AIX 3 has no versioning support, so we append a major version to the name.
+- soname_spec='${libname}${release}${shared_ext}$major'
+- ;;
++ uts4*)
++ lt_prog_compiler_pic_GCJ='-pic'
++ lt_prog_compiler_static_GCJ='-Bstatic'
++ ;;
+
+-aix4* | aix5*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- hardcode_into_libs=yes
+- if test "$host_cpu" = ia64; then
+- # AIX 5 supports IA64
+- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- else
+- # With GCC up to 2.95.x, collect2 would create an import file
+- # for dependence libraries. The import file would start with
+- # the line `#! .'. This would cause the generated library to
+- # depend on `.', always an invalid library. This was fixed in
+- # development snapshots of GCC prior to 3.0.
+- case $host_os in
+- aix4 | aix4.[01] | aix4.[01].*)
+- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+- echo ' yes '
+- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+- :
+- else
+- can_build_shared=no
+- fi
++ *)
++ lt_prog_compiler_can_build_shared_GCJ=no
+ ;;
+ esac
+- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+- # soname into executable. Probably we can add versioning support to
+- # collect2, so additional links can be useful in future.
+- if test "$aix_use_runtimelinking" = yes; then
+- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+- # instead of lib<name>.a to let people know that these are not
+- # typical AIX shared libraries.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- else
+- # We preserve .a as extension for shared libraries through AIX4.2
+- # and later when we are not doing run time linking.
+- library_names_spec='${libname}${release}.a $libname.a'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- fi
+- shlibpath_var=LIBPATH
+ fi
+- ;;
+-
+-amigaos*)
+- library_names_spec='$libname.ixlibrary $libname.a'
+- # Create ${libname}_ixlibrary.a entries in /sys/libs.
+- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+- ;;
+-
+-beos*)
+- library_names_spec='${libname}${shared_ext}'
+- dynamic_linker="$host_os ld.so"
+- shlibpath_var=LIBRARY_PATH
+- ;;
+
+-bsdi[45]*)
+- version_type=linux
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+- # the default ld.so.conf also contains /usr/contrib/lib and
+- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+- # libtool to hard-code these into programs
+- ;;
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+-cygwin* | mingw* | pw32*)
+- version_type=windows
+- shrext_cmds=".dll"
+- need_version=no
+- need_lib_prefix=no
++#
++# Check to make sure the PIC flag actually works.
++#
++if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32*)
+- library_names_spec='$libname.dll.a'
+- # DLL is installed to $(libdir)/../bin by postinstall_cmds
+- postinstall_cmds='base_file=`basename \${file}`~
+- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+- dldir=$destdir/`dirname \$dlpath`~
+- test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
+- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+- dlpath=$dir/\$dldll~
+- $rm \$dlpath'
+- shlibpath_overrides_runpath=yes
++echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
++if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_prog_compiler_pic_works_GCJ=no
++ ac_outfile=conftest.$ac_objext
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++ lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
++ # Insert the option either (1) after the last *FLAGS variable, or
++ # (2) before a word containing "conftest.", or (3) at the end.
++ # Note that $ac_compile itself does not contain backslashes and begins
++ # with a dollar sign (not a hyphen), so the echo should work correctly.
++ # The option is referenced via a variable to avoid confusing sed.
++ lt_compile=`echo "$ac_compile" | $SED \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
++ -e 's:$: $lt_compiler_flag:'`
++ (eval echo "\"\$as_me:17899: $lt_compile\"" >&5)
++ (eval "$lt_compile" 2>conftest.err)
++ ac_status=$?
++ cat conftest.err >&5
++ echo "$as_me:17903: \$? = $ac_status" >&5
++ if (exit $ac_status) && test -s "$ac_outfile"; then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
++ lt_prog_compiler_pic_works_GCJ=yes
++ fi
++ fi
++ $rm conftest*
+
+- case $host_os in
+- cygwin*)
+- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+- ;;
+- mingw*)
+- # MinGW DLLs use traditional 'lib' prefix
+- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+- # It is most probably a Windows format PATH printed by
+- # mingw gcc, but we are running on Cygwin. Gcc prints its search
+- # path with ; separators, and with drive letters. We can handle the
+- # drive letters (cygwin fileutils understands them), so leave them,
+- # especially as we might pass files found there to a mingw objdump,
+- # which wouldn't understand a cygwinified path. Ahh.
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+- else
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+- fi
+- ;;
+- pw32*)
+- # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+- ;;
+- esac
+- ;;
++fi
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
++
++if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
++ case $lt_prog_compiler_pic_GCJ in
++ "" | " "*) ;;
++ *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
++ esac
++else
++ lt_prog_compiler_pic_GCJ=
++ lt_prog_compiler_can_build_shared_GCJ=no
++fi
+
++fi
++case "$host_os" in
++ # For platforms which do not support PIC, -DPIC is meaningless:
++ *djgpp*)
++ lt_prog_compiler_pic_GCJ=
++ ;;
+ *)
+- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+ ;;
+- esac
+- dynamic_linker='Win32 ld.exe'
+- # FIXME: first we should search . and the directory the executable is in
+- shlibpath_var=PATH
+- ;;
++esac
+
+-darwin* | rhapsody*)
+- dynamic_linker="$host_os dyld"
+- version_type=darwin
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+- soname_spec='${libname}${release}${major}$shared_ext'
+- shlibpath_overrides_runpath=yes
+- shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+- if test "$GCC" = yes; then
+- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+- else
+- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+- fi
+- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+- ;;
++echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
++if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_cv_prog_compiler_c_o_GCJ=no
++ $rm -r conftest 2>/dev/null
++ mkdir conftest
++ cd conftest
++ mkdir out
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+-dgux*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
++ lt_compiler_flag="-o out/conftest2.$ac_objext"
++ # Insert the option either (1) after the last *FLAGS variable, or
++ # (2) before a word containing "conftest.", or (3) at the end.
++ # Note that $ac_compile itself does not contain backslashes and begins
++ # with a dollar sign (not a hyphen), so the echo should work correctly.
++ lt_compile=`echo "$ac_compile" | $SED \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
++ -e 's:$: $lt_compiler_flag:'`
++ (eval echo "\"\$as_me:17959: $lt_compile\"" >&5)
++ (eval "$lt_compile" 2>out/conftest.err)
++ ac_status=$?
++ cat out/conftest.err >&5
++ echo "$as_me:17963: \$? = $ac_status" >&5
++ if (exit $ac_status) && test -s out/conftest2.$ac_objext
++ then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test ! -s out/conftest.err; then
++ lt_cv_prog_compiler_c_o_GCJ=yes
++ fi
++ fi
++ chmod u+w .
++ $rm conftest*
++ # SGI C++ compiler will create directory out/ii_files/ for
++ # template instantiation
++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
++ $rm out/* && rmdir out
++ cd ..
++ rmdir conftest
++ $rm conftest*
+
+-freebsd1*)
+- dynamic_linker=no
+- ;;
++fi
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[123]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
++
++hard_links="nottested"
++if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
++ # do not overwrite the value of need_locks provided by the user
++ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
++ hard_links=yes
++ $rm conftest*
++ ln conftest.a conftest.b 2>/dev/null && hard_links=no
++ touch conftest.a
++ ln conftest.a conftest.b 2>&5 || hard_links=no
++ ln conftest.a conftest.b 2>/dev/null && hard_links=no
++ echo "$as_me:$LINENO: result: $hard_links" >&5
++echo "${ECHO_T}$hard_links" >&6
++ if test "$hard_links" = no; then
++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
++ need_locks=warn
+ fi
+- version_type=freebsd-$objformat
+- case $version_type in
+- freebsd-elf*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- need_version=no
+- need_lib_prefix=no
+- ;;
+- freebsd-*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+- need_version=yes
+- ;;
+- esac
+- shlibpath_var=LD_LIBRARY_PATH
++else
++ need_locks=no
++fi
++
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
++
++ runpath_var=
++ allow_undefined_flag_GCJ=
++ enable_shared_with_static_runtimes_GCJ=no
++ archive_cmds_GCJ=
++ archive_expsym_cmds_GCJ=
++ old_archive_From_new_cmds_GCJ=
++ old_archive_from_expsyms_cmds_GCJ=
++ export_dynamic_flag_spec_GCJ=
++ whole_archive_flag_spec_GCJ=
++ thread_safe_flag_spec_GCJ=
++ hardcode_libdir_flag_spec_GCJ=
++ hardcode_libdir_flag_spec_ld_GCJ=
++ hardcode_libdir_separator_GCJ=
++ hardcode_direct_GCJ=no
++ hardcode_minus_L_GCJ=no
++ hardcode_shlibpath_var_GCJ=unsupported
++ link_all_deplibs_GCJ=unknown
++ hardcode_automatic_GCJ=no
++ module_cmds_GCJ=
++ module_expsym_cmds_GCJ=
++ always_export_symbols_GCJ=no
++ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
++ # include_expsyms should be a list of space-separated symbols to be *always*
++ # included in the symbol list
++ include_expsyms_GCJ=
++ # exclude_expsyms can be an extended regexp of symbols to exclude
++ # it will be wrapped by ` (' and `)$', so one must not match beginning or
++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
++ # as well as any symbol that contains `d'.
++ exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
++ # platforms (ab)use it in PIC code, but their linkers get confused if
++ # the symbol is explicitly referenced. Since portable code cannot
++ # rely on this symbol name, it's probably fine to never include it in
++ # preloaded symbol tables.
++ extract_expsyms_cmds=
++
+ case $host_os in
+- freebsd2*)
+- shlibpath_overrides_runpath=yes
+- ;;
+- freebsd3.[01]* | freebsdelf3.[01]*)
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
++ cygwin* | mingw* | pw32*)
++ # FIXME: the MSVC++ port hasn't been tested in a loooong time
++ # When not using gcc, we currently assume that we are using
++ # Microsoft Visual C++.
++ if test "$GCC" != yes; then
++ with_gnu_ld=no
++ fi
+ ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
++ openbsd*)
++ with_gnu_ld=no
+ ;;
+ esac
+- ;;
+
+-gnu*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- ;;
++ ld_shlibs_GCJ=yes
++ if test "$with_gnu_ld" = yes; then
++ # If archive_cmds runs LD, not CC, wlarc should be empty
++ wlarc='${wl}'
+
+-hpux9* | hpux10* | hpux11*)
+- # Give a soname corresponding to the major version so that dld.sl refuses to
+- # link against other versions.
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- case $host_cpu in
+- ia64*)
+- shrext_cmds='.so'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.so"
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- if test "X$HPUX_IA64_MODE" = X32; then
+- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
++ # See if GNU ld supports shared libraries.
++ case $host_os in
++ aix3* | aix4* | aix5*)
++ # On AIX/PPC, the GNU linker is very broken
++ if test "$host_cpu" != ia64; then
++ ld_shlibs_GCJ=no
++ cat <<EOF 1>&2
++
++*** Warning: the GNU linker, at least up to release 2.9.1, is reported
++*** to be unable to reliably create shared libraries on AIX.
++*** Therefore, libtool is disabling shared libraries support. If you
++*** really care for shared libraries, you may want to modify your PATH
++*** so that a non-GNU linker is found, and then restart.
++
++EOF
++ fi
++ ;;
++
++ amigaos*)
++ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_minus_L_GCJ=yes
++
++ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
++ # that the semantics of dynamic libraries on AmigaOS, at least up
++ # to version 4, is to share data among multiple programs linked
++ # with the same dynamic library. Since this doesn't match the
++ # behavior of shared libraries on other platforms, we can't use
++ # them.
++ ld_shlibs_GCJ=no
++ ;;
++
++ beos*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ allow_undefined_flag_GCJ=unsupported
++ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
++ # support --undefined. This deserves some investigation. FIXME
++ archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ else
++ ld_shlibs_GCJ=no
++ fi
++ ;;
++
++ cygwin* | mingw* | pw32*)
++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
++ # as there is no search path for DLLs.
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ allow_undefined_flag_GCJ=unsupported
++ always_export_symbols_GCJ=no
++ enable_shared_with_static_runtimes_GCJ=yes
++ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
++
++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
++ # If the export-symbols file already is a .def file (1st line
++ # is EXPORTS), use it as is; otherwise, prepend...
++ archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ cp $export_symbols $output_objdir/$soname.def;
++ else
++ echo EXPORTS > $output_objdir/$soname.def;
++ cat $export_symbols >> $output_objdir/$soname.def;
++ fi~
++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
++ else
++ ld_shlibs=no
++ fi
++ ;;
++
++ netbsd*)
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
++ wlarc=
++ else
++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ fi
++ ;;
++
++ solaris* | sysv5*)
++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
++ ld_shlibs_GCJ=no
++ cat <<EOF 1>&2
++
++*** Warning: The releases 2.8.* of the GNU linker cannot reliably
++*** create shared libraries on Solaris systems. Therefore, libtool
++*** is disabling shared libraries support. We urge you to upgrade GNU
++*** binutils to release 2.9.1 or newer. Another option is to modify
++*** your PATH or compiler configuration so that the native linker is
++*** used, and then restart.
++
++EOF
++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ else
++ ld_shlibs_GCJ=no
++ fi
++ ;;
++
++ sunos4*)
++ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ wlarc=
++ hardcode_direct_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++
++ linux*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_cmds_GCJ="$tmp_archive_cmds"
++ supports_anon_versioning=no
++ case `$LD -v 2>/dev/null` in
++ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
++ *\ 2.11.*) ;; # other 2.11 versions
++ *) supports_anon_versioning=yes ;;
++ esac
++ if test $supports_anon_versioning = yes; then
++ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ archive_expsym_cmds_GCJ="$tmp_archive_cmds"
++ fi
+ else
+- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
++ ld_shlibs_GCJ=no
+ fi
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+- ;;
+- hppa*64*)
+- shrext_cmds='.sl'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+- ;;
+- *)
+- shrext_cmds='.sl'
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=SHLIB_PATH
+- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+- esac
+- # HP-UX runs *really* slowly unless shared libraries are mode 555.
+- postinstall_cmds='chmod 555 $lib'
+- ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
++ *)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ else
++ ld_shlibs_GCJ=no
++ fi
++ ;;
++ esac
++
++ if test "$ld_shlibs_GCJ" = yes; then
++ runpath_var=LD_RUN_PATH
++ hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
++ export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
++ # ancient GNU ld didn't support --whole-archive et. al.
++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
++ whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
++ else
++ whole_archive_flag_spec_GCJ=
++ fi
++ fi
++ else
++ # PORTME fill in a description of your system's linker (not GNU ld)
++ case $host_os in
++ aix3*)
++ allow_undefined_flag_GCJ=unsupported
++ always_export_symbols_GCJ=yes
++ archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
++ # Note: this linker hardcodes the directories in LIBPATH if there
++ # are no directories specified by -L.
++ hardcode_minus_L_GCJ=yes
++ if test "$GCC" = yes && test -z "$link_static_flag"; then
++ # Neither direct hardcoding nor static linking is supported with a
++ # broken collect2.
++ hardcode_direct_GCJ=unsupported
++ fi
++ ;;
++
++ aix4* | aix5*)
++ if test "$host_cpu" = ia64; then
++ # On IA64, the linker does run time linking by default, so we don't
++ # have to do anything special.
++ aix_use_runtimelinking=no
++ exp_sym_flag='-Bexport'
++ no_entry_flag=""
++ else
++ # If we're using GNU nm, then we don't want the "-C" option.
++ # -C means demangle to AIX nm, but means don't demangle with GNU nm
++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
++ export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
++ else
++ export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
++ fi
++ aix_use_runtimelinking=no
++
++ # Test if we are trying to use run time linking or normal
++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
++ # need to do runtime linking.
++ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
++ for ld_flag in $LDFLAGS; do
++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
++ aix_use_runtimelinking=yes
++ break
++ fi
++ done
++ esac
++
++ exp_sym_flag='-bexport'
++ no_entry_flag='-bnoentry'
++ fi
++
++ # When large executables or shared objects are built, AIX ld can
++ # have problems creating the table of contents. If linking a library
++ # or program results in "error TOC overflow" add -mminimal-toc to
++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
++
++ archive_cmds_GCJ=''
++ hardcode_direct_GCJ=yes
++ hardcode_libdir_separator_GCJ=':'
++ link_all_deplibs_GCJ=yes
++
++ if test "$GCC" = yes; then
++ case $host_os in aix4.012|aix4.012.*)
++ # We only want to do this on AIX 4.2 and lower, the check
++ # below for broken collect2 doesn't work under 4.3+
++ collect2name=`${CC} -print-prog-name=collect2`
++ if test -f "$collect2name" && \
++ strings "$collect2name" | grep resolve_lib_name >/dev/null
++ then
++ # We have reworked collect2
++ hardcode_direct_GCJ=yes
++ else
++ # We have old collect2
++ hardcode_direct_GCJ=unsupported
++ # It fails to find uninstalled libraries when the uninstalled
++ # path is not listed in the libpath. Setting hardcode_minus_L
++ # to unsupported forces relinking
++ hardcode_minus_L_GCJ=yes
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_libdir_separator_GCJ=
++ fi
++ esac
++ shared_flag='-shared'
++ else
++ # not using gcc
++ if test "$host_cpu" = ia64; then
++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
++ # chokes on -Wl,-G. The following line is correct:
++ shared_flag='-G'
++ else
++ if test "$aix_use_runtimelinking" = yes; then
++ shared_flag='${wl}-G'
++ else
++ shared_flag='${wl}-bM:SRE'
++ fi
++ fi
++ fi
++
++ # It seems that -bexpall does not export symbols beginning with
++ # underscore (_), so it is better to generate a list of symbols to export.
++ always_export_symbols_GCJ=yes
++ if test "$aix_use_runtimelinking" = yes; then
++ # Warning - without using the other runtime loading flags (-brtl),
++ # -berok will link without error, but may produce a broken library.
++ allow_undefined_flag_GCJ='-berok'
++ # Determine the default libpath from the value encoded in an empty executable.
++ cat >conftest.$ac_ext <<_ACEOF
++/* 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 conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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
++
++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`
++# Check for a 64-bit object if we didn't find anything.
++if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`; fi
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++
++ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
++ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ else
++ if test "$host_cpu" = ia64; then
++ hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
++ allow_undefined_flag_GCJ="-z nodefs"
++ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
++ else
++ # Determine the default libpath from the value encoded in an empty executable.
++ cat >conftest.$ac_ext <<_ACEOF
++/* 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 conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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
++
++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`
++# Check for a 64-bit object if we didn't find anything.
++if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`; fi
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++
++ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
++ # Warning - without using the other run time loading flags,
++ # -berok will link without error, but may produce a broken library.
++ no_undefined_flag_GCJ=' ${wl}-bernotok'
++ allow_undefined_flag_GCJ=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ always_export_symbols_GCJ=yes
++ # Exported symbols can be pulled into shared objects from archives
++ whole_archive_flag_spec_GCJ=' '
++ archive_cmds_need_lc_GCJ=yes
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ fi
++ fi
++ ;;
++
++ amigaos*)
++ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_minus_L_GCJ=yes
++ # see comment about different semantics on the GNU ld section
++ ld_shlibs_GCJ=no
++ ;;
++
++ bsdi4*)
++ export_dynamic_flag_spec_GCJ=-rdynamic
++ ;;
++
++ cygwin* | mingw* | pw32*)
++ # When not using gcc, we currently assume that we are using
++ # Microsoft Visual C++.
++ # hardcode_libdir_flag_spec is actually meaningless, as there is
++ # no search path for DLLs.
++ hardcode_libdir_flag_spec_GCJ=' '
++ allow_undefined_flag_GCJ=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_From_new_cmds_GCJ='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
++ fix_srcfile_path='`cygpath -w "$srcfile"`'
++ enable_shared_with_static_runtimes_GCJ=yes
++ ;;
++
++ darwin* | rhapsody*)
++ if test "$GXX" = yes ; then
++ archive_cmds_need_lc_GCJ=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag_GCJ='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag_GCJ='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -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'
++ fi
++ module_cmds_GCJ='$CC ${wl}-bind_at_load $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
++ archive_expsym_cmds_GCJ='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}'
++ else
++ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ fi
++ module_expsym_cmds_GCJ='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}'
++ hardcode_direct_GCJ=no
++ hardcode_automatic_GCJ=yes
++ hardcode_shlibpath_var_GCJ=unsupported
++ whole_archive_flag_spec_GCJ='-all_load $convenience'
++ link_all_deplibs_GCJ=yes
++ else
++ ld_shlibs_GCJ=no
++ fi
++ ;;
++
++ dgux*)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++
++ freebsd1*)
++ ld_shlibs_GCJ=no
++ ;;
++
++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
++ # support. Future versions do this automatically, but an explicit c++rt0.o
++ # does not break anything, and helps significantly (at the cost of a little
++ # extra space).
++ freebsd2.2*)
++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
++ hardcode_libdir_flag_spec_GCJ='-R$libdir'
++ hardcode_direct_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++
++ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
++ freebsd2*)
++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_GCJ=yes
++ hardcode_minus_L_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++
++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
++ freebsd* | kfreebsd*-gnu)
++ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_GCJ='-R$libdir'
++ hardcode_direct_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++
++ hpux9*)
++ if test "$GCC" = yes; then
++ archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ else
++ archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ fi
++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_GCJ=:
++ hardcode_direct_GCJ=yes
++
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_GCJ=yes
++ export_dynamic_flag_spec_GCJ='${wl}-E'
++ ;;
++
++ hpux10* | hpux11*)
++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ ;;
++ *)
++ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ ;;
++ esac
++ else
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
++ ;;
++ *)
++ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
++ ;;
++ esac
++ fi
++ if test "$with_gnu_ld" = no; then
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
++ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
++ hardcode_libdir_separator_GCJ=:
++ hardcode_direct_GCJ=no
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++ ia64*)
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_direct_GCJ=no
++ hardcode_shlibpath_var_GCJ=no
++
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_GCJ=yes
++ ;;
++ *)
++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_GCJ=:
++ hardcode_direct_GCJ=yes
++ export_dynamic_flag_spec_GCJ='${wl}-E'
++
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_GCJ=yes
++ ;;
++ esac
++ fi
++ ;;
++
++ irix5* | irix6* | nonstopux*)
++ if test "$GCC" = yes; then
++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ else
++ archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
++ fi
++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_GCJ=:
++ link_all_deplibs_GCJ=yes
++ ;;
++
++ netbsd*)
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
++ else
++ archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
++ fi
++ hardcode_libdir_flag_spec_GCJ='-R$libdir'
++ hardcode_direct_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++
++ newsos6)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_GCJ=yes
++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_GCJ=:
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++
++ openbsd*)
++ hardcode_direct_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
++ export_dynamic_flag_spec_GCJ='${wl}-E'
++ else
++ case $host_os in
++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_GCJ='-R$libdir'
++ ;;
++ *)
++ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
++ ;;
++ esac
++ fi
++ ;;
++
++ os2*)
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_minus_L_GCJ=yes
++ allow_undefined_flag_GCJ=unsupported
++ archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
++ old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
++ ;;
++
++ osf3*)
++ if test "$GCC" = yes; then
++ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
++ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ else
++ allow_undefined_flag_GCJ=' -expect_unresolved \*'
++ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ fi
++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_GCJ=:
++ ;;
++
++ osf4* | osf5*) # as osf3* with the addition of -msym flag
++ if test "$GCC" = yes; then
++ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
++ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
++ else
++ allow_undefined_flag_GCJ=' -expect_unresolved \*'
++ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
++
++ # Both c and cxx compiler support -rpath directly
++ hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
++ fi
++ hardcode_libdir_separator_GCJ=:
++ ;;
++
++ sco3.2v5*)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_GCJ=no
++ export_dynamic_flag_spec_GCJ='${wl}-Bexport'
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ;;
++
++ solaris*)
++ no_undefined_flag_GCJ=' -z text'
++ if test "$GCC" = yes; then
++ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
++ else
++ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ fi
++ hardcode_libdir_flag_spec_GCJ='-R$libdir'
++ hardcode_shlibpath_var_GCJ=no
++ case $host_os in
++ solaris2.[0-5] | solaris2.[0-5].*) ;;
++ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
++ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
++ esac
++ link_all_deplibs_GCJ=yes
++ ;;
++
++ sunos4*)
++ if test "x$host_vendor" = xsequent; then
++ # Use $CC to link under sequent, because it throws in some extra .o
++ # files that make .init and .fini sections work.
++ archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
++ else
++ archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
++ fi
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_direct_GCJ=yes
++ hardcode_minus_L_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++
++ sysv4)
++ case $host_vendor in
++ sni)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_GCJ=yes # is this really true???
++ ;;
++ siemens)
++ ## LD is ld it makes a PLAMLIB
++ ## CC just makes a GrossModule.
++ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ reload_cmds_GCJ='$CC -r -o $output$reload_objs'
++ hardcode_direct_GCJ=no
++ ;;
++ motorola)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
++ ;;
++ esac
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++
++ sysv4.3*)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_GCJ=no
++ export_dynamic_flag_spec_GCJ='-Bexport'
++ ;;
++
++ sysv4*MP*)
++ if test -d /usr/nec; then
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_GCJ=no
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ld_shlibs_GCJ=yes
++ fi
++ ;;
++
++ sysv4.2uw2*)
++ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_GCJ=yes
++ hardcode_minus_L_GCJ=no
++ hardcode_shlibpath_var_GCJ=no
++ hardcode_runpath_var=yes
++ runpath_var=LD_RUN_PATH
++ ;;
++
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
++ no_undefined_flag_GCJ='${wl}-z ${wl}text'
++ if test "$GCC" = yes; then
++ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ else
++ archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ fi
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++
++ sysv5*)
++ no_undefined_flag_GCJ=' -z text'
++ # $CC -shared without GNU ld will not create a library from C++
++ # object files and a static libstdc++, better avoid it by now
++ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ hardcode_libdir_flag_spec_GCJ=
++ hardcode_shlibpath_var_GCJ=no
++ runpath_var='LD_RUN_PATH'
++ ;;
++
++ uts4*)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++
++ *)
++ ld_shlibs_GCJ=no
++ ;;
++ esac
++ fi
++
++echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
++echo "${ECHO_T}$ld_shlibs_GCJ" >&6
++test "$ld_shlibs_GCJ" = no && can_build_shared=no
++
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
++
++#
++# Do we need to explicitly link libc?
++#
++case "x$archive_cmds_need_lc_GCJ" in
++x|xyes)
++ # Assume -lc should be added
++ archive_cmds_need_lc_GCJ=yes
++
++ if test "$enable_shared" = yes && test "$GCC" = yes; then
++ case $archive_cmds_GCJ in
++ *'~'*)
++ # FIXME: we may have to deal with multi-command sequences.
++ ;;
++ '$CC '*)
++ # Test whether the compiler implicitly links with -lc since on some
++ # systems, -lgcc has to come before -lc. If gcc already passes -lc
++ # to ld, don't add -lc before -lgcc.
++ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
++ $rm conftest*
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++
++ 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); } 2>conftest.err; then
++ soname=conftest
++ lib=conftest
++ libobjs=conftest.$ac_objext
++ deplibs=
++ wl=$lt_prog_compiler_wl_GCJ
++ compiler_flags=-v
++ linker_flags=-v
++ verstring=
++ output_objdir=.
++ libname=conftest
++ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
++ allow_undefined_flag_GCJ=
++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
++ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++ then
++ archive_cmds_need_lc_GCJ=no
++ else
++ archive_cmds_need_lc_GCJ=yes
++ fi
++ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
++ else
++ cat conftest.err 1>&5
++ fi
++ $rm conftest*
++ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
++echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
++ ;;
++ esac
++ fi
++ ;;
++esac
++
++echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
++library_names_spec=
++libname_spec='lib$name'
++soname_spec=
++shrext_cmds=".so"
++postinstall_cmds=
++postuninstall_cmds=
++finish_cmds=
++finish_eval=
++shlibpath_var=
++shlibpath_overrides_runpath=unknown
++version_type=none
++dynamic_linker="$host_os ld.so"
++sys_lib_dlsearch_path_spec="/lib /usr/lib"
++if test "$GCC" = yes; then
++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
++ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
++ # if the path contains ";" then we assume it to be the separator
++ # otherwise default to the standard path separator (i.e. ":") - it is
++ # assumed that no part of a normal pathname contains ";" but that should
++ # okay in the real world where ";" in dirpaths is itself problematic.
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++else
++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
++fi
++need_lib_prefix=unknown
++hardcode_into_libs=no
++
++# when you set need_version to no, make sure it does not cause -set_version
++# flags to be left without arguments
++need_version=unknown
++
++case $host_os in
++aix3*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
++ shlibpath_var=LIBPATH
++
++ # AIX 3 has no versioning support, so we append a major version to the name.
++ soname_spec='${libname}${release}${shared_ext}$major'
++ ;;
++
++aix4* | aix5*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ hardcode_into_libs=yes
++ if test "$host_cpu" = ia64; then
++ # AIX 5 supports IA64
++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ else
++ # With GCC up to 2.95.x, collect2 would create an import file
++ # for dependence libraries. The import file would start with
++ # the line `#! .'. This would cause the generated library to
++ # depend on `.', always an invalid library. This was fixed in
++ # development snapshots of GCC prior to 3.0.
++ case $host_os in
++ aix4 | aix4.[01] | aix4.[01].*)
++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
++ echo ' yes '
++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
++ :
++ else
++ can_build_shared=no
++ fi
++ ;;
++ esac
++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
++ # soname into executable. Probably we can add versioning support to
++ # collect2, so additional links can be useful in future.
++ if test "$aix_use_runtimelinking" = yes; then
++ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
++ # instead of lib<name>.a to let people know that these are not
++ # typical AIX shared libraries.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ else
++ # We preserve .a as extension for shared libraries through AIX4.2
++ # and later when we are not doing run time linking.
++ library_names_spec='${libname}${release}.a $libname.a'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ fi
++ shlibpath_var=LIBPATH
++ fi
++ ;;
++
++amigaos*)
++ library_names_spec='$libname.ixlibrary $libname.a'
++ # Create ${libname}_ixlibrary.a entries in /sys/libs.
++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
++ ;;
++
++beos*)
++ library_names_spec='${libname}${shared_ext}'
++ dynamic_linker="$host_os ld.so"
++ shlibpath_var=LIBRARY_PATH
++ ;;
++
++bsdi4*)
++ version_type=linux
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
++ # the default ld.so.conf also contains /usr/contrib/lib and
++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
++ # libtool to hard-code these into programs
++ ;;
++
++cygwin* | mingw* | pw32*)
++ version_type=windows
++ shrext_cmds=".dll"
++ need_version=no
++ need_lib_prefix=no
++
++ case $GCC,$host_os in
++ yes,cygwin* | yes,mingw* | yes,pw32*)
++ library_names_spec='$libname.dll.a'
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $rm \$dlpath'
++ shlibpath_overrides_runpath=yes
++
++ case $host_os in
++ cygwin*)
++ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
++ ;;
++ mingw*)
++ # MinGW DLLs use traditional 'lib' prefix
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH printed by
++ # mingw gcc, but we are running on Cygwin. Gcc prints its search
++ # path with ; separators, and with drive letters. We can handle the
++ # drive letters (cygwin fileutils understands them), so leave them,
++ # especially as we might pass files found there to a mingw objdump,
++ # which wouldn't understand a cygwinified path. Ahh.
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ ;;
++ pw32*)
++ # pw32 DLLs use 'pw' prefix rather than 'lib'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
++ ;;
++ esac
++ ;;
++
++ *)
++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ ;;
++ esac
++ dynamic_linker='Win32 ld.exe'
++ # FIXME: first we should search . and the directory the executable is in
++ shlibpath_var=PATH
++ ;;
++
++darwin* | rhapsody*)
++ dynamic_linker="$host_os dyld"
++ version_type=darwin
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
++ soname_spec='${libname}${release}${major}$shared_ext'
++ shlibpath_overrides_runpath=yes
++ shlibpath_var=DYLD_LIBRARY_PATH
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
++ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
++ if test "$GCC" = yes; then
++ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
++ else
++ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
++ fi
++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
++ ;;
++
++dgux*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
++freebsd1*)
++ dynamic_linker=no
++ ;;
++
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
++ version_type=freebsd-$objformat
++ case $version_type in
++ freebsd-elf*)
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
++ need_version=no
++ need_lib_prefix=no
++ ;;
++ freebsd-*)
++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
++ need_version=yes
++ ;;
++ esac
++ shlibpath_var=LD_LIBRARY_PATH
++ case $host_os in
++ freebsd2*)
++ shlibpath_overrides_runpath=yes
++ ;;
++ freebsd3.01* | freebsdelf3.01*)
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ ;;
++ *) # from 3.2 on
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ ;;
++ esac
++ ;;
++
++gnu*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ hardcode_into_libs=yes
++ ;;
++
++hpux9* | hpux10* | hpux11*)
++ # Give a soname corresponding to the major version so that dld.sl refuses to
++ # link against other versions.
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=no
++ case "$host_cpu" in
++ ia64*)
++ shrext_cmds='.so'
++ hardcode_into_libs=yes
++ dynamic_linker="$host_os dld.so"
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ if test "X$HPUX_IA64_MODE" = X32; then
++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
++ else
++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
++ fi
++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
++ ;;
++ hppa*64*)
++ shrext_cmds='.sl'
++ hardcode_into_libs=yes
++ dynamic_linker="$host_os dld.sl"
++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
++ ;;
++ *)
++ shrext_cmds='.sl'
++ dynamic_linker="$host_os dld.sl"
++ shlibpath_var=SHLIB_PATH
++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ ;;
++ esac
++ # HP-UX runs *really* slowly unless shared libraries are mode 555.
++ postinstall_cmds='chmod 555 $lib'
++ ;;
++
++irix5* | irix6* | nonstopux*)
++ case $host_os in
++ nonstopux*) version_type=nonstopux ;;
++ *)
++ if test "$lt_cv_prog_gnu_ld" = yes; then
++ version_type=linux
++ else
++ version_type=irix
++ fi ;;
++ esac
++ need_lib_prefix=no
++ need_version=no
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
++ case $host_os in
++ irix5* | nonstopux*)
++ libsuff= shlibsuff=
++ ;;
++ *)
++ case $LD in # libtool.m4 will add one of these switches to LD
++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
++ libsuff= shlibsuff= libmagic=32-bit;;
++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
++ libsuff=32 shlibsuff=N32 libmagic=N32;;
++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
++ libsuff=64 shlibsuff=64 libmagic=64-bit;;
++ *) libsuff= shlibsuff= libmagic=never-match;;
++ esac
++ ;;
++ esac
++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
++ shlibpath_overrides_runpath=no
++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
++ hardcode_into_libs=yes
++ ;;
++
++# No shared lib support for Linux oldld, aout, or coff.
++linux*oldld* | linux*aout* | linux*coff*)
++ dynamic_linker=no
++ ;;
++
++# This must be Linux ELF.
++linux*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ # This implies no fast_install, which is unacceptable.
++ # Some rework will be needed to allow for fast_install
++ # before this can be enabled.
++ hardcode_into_libs=yes
++
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '#line 19293 "configure"' > conftest.$ac_ext
++ 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
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
++
++ # Append ld.so.conf contents to the search path
++ if test -f /etc/ld.so.conf; then
++ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
++ fi
++
++ # We used to test for /lib/ld.so.1 and disable shared libraries on
++ # powerpc, because MkLinux only supported shared libraries with the
++ # GNU dynamic linker. Since this was broken with cross compilers,
++ # most powerpc-linux boxes support dynamic linking these days and
++ # people can always --disable-shared, the test was removed, and we
++ # assume the GNU/Linux dynamic linker is in use.
++ dynamic_linker='GNU/Linux ld.so'
++ ;;
++
++knetbsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++netbsd*)
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=no
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
++ dynamic_linker='NetBSD (a.out) ld.so'
++ else
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ dynamic_linker='NetBSD ld.elf_so'
++ fi
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ ;;
++
++newsos6)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ ;;
++
++nto-qnx*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ ;;
++
++openbsd*)
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=yes
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++ case $host_os in
++ openbsd2.[89] | openbsd2.[89].*)
++ shlibpath_overrides_runpath=no
++ ;;
++ *)
++ shlibpath_overrides_runpath=yes
++ ;;
++ esac
++ else
++ shlibpath_overrides_runpath=yes
++ fi
++ ;;
++
++os2*)
++ libname_spec='$name'
++ shrext_cmds=".dll"
++ need_lib_prefix=no
++ library_names_spec='$libname${shared_ext} $libname.a'
++ dynamic_linker='OS/2 ld.exe'
++ shlibpath_var=LIBPATH
++ ;;
++
++osf3* | osf4* | osf5*)
++ version_type=osf
++ need_lib_prefix=no
++ need_version=no
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
++ ;;
++
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
++solaris*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ # ldd complains unless libraries are executable
++ postinstall_cmds='chmod +x $lib'
++ ;;
++
++sunos4*)
++ version_type=sunos
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ if test "$with_gnu_ld" = yes; then
++ need_lib_prefix=no
++ fi
++ need_version=yes
++ ;;
++
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ case $host_vendor in
++ sni)
++ shlibpath_overrides_runpath=no
++ need_lib_prefix=no
++ export_dynamic_flag_spec='${wl}-Blargedynsym'
++ runpath_var=LD_RUN_PATH
++ ;;
++ siemens)
++ need_lib_prefix=no
++ ;;
++ motorola)
++ need_lib_prefix=no
++ need_version=no
++ shlibpath_overrides_runpath=no
++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
++ ;;
++ esac
++ ;;
++
++sysv4*MP*)
++ if test -d /usr/nec ;then
++ version_type=linux
++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
++ soname_spec='$libname${shared_ext}.$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ fi
++ ;;
++
++uts4*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
++*)
++ dynamic_linker=no
++ ;;
++esac
++echo "$as_me:$LINENO: result: $dynamic_linker" >&5
++echo "${ECHO_T}$dynamic_linker" >&6
++test "$dynamic_linker" = no && can_build_shared=no
++
++echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
++hardcode_action_GCJ=
++if test -n "$hardcode_libdir_flag_spec_GCJ" || \
++ test -n "$runpath_var GCJ" || \
++ test "X$hardcode_automatic_GCJ"="Xyes" ; then
++
++ # We can hardcode non-existant directories.
++ if test "$hardcode_direct_GCJ" != no &&
++ # If the only mechanism to avoid hardcoding is shlibpath_var, we
++ # have to relink, otherwise we might link with an installed library
++ # when we should be linking with a yet-to-be-installed one
++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
++ test "$hardcode_minus_L_GCJ" != no; then
++ # Linking always hardcodes the temporary library directory.
++ hardcode_action_GCJ=relink
++ else
++ # We can link without hardcoding, and we can hardcode nonexisting dirs.
++ hardcode_action_GCJ=immediate
++ fi
++else
++ # We cannot hardcode anything, or else we can only hardcode existing
++ # directories.
++ hardcode_action_GCJ=unsupported
++fi
++echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
++echo "${ECHO_T}$hardcode_action_GCJ" >&6
++
++if test "$hardcode_action_GCJ" = relink; then
++ # Fast installation is not supported
++ enable_fast_install=no
++elif test "$shlibpath_overrides_runpath" = yes ||
++ test "$enable_shared" = no; then
++ # Fast installation is not necessary
++ enable_fast_install=needless
++fi
++
++striplib=
++old_striplib=
++echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
++ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++else
++# FIXME - insert some real tests, host_os isn't really good enough
++ case $host_os in
++ darwin*)
++ if test -n "$STRIP" ; then
++ striplib="$STRIP -x"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++ ;;
++ *)
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++ ;;
++ esac
++fi
++
++if test "x$enable_dlopen" != xyes; then
++ enable_dlopen=unknown
++ enable_dlopen_self=unknown
++ enable_dlopen_self_static=unknown
++else
++ lt_cv_dlopen=no
++ lt_cv_dlopen_libs=
++
++ case $host_os in
++ beos*)
++ lt_cv_dlopen="load_add_on"
++ lt_cv_dlopen_libs=
++ lt_cv_dlopen_self=yes
++ ;;
++
++ mingw* | pw32*)
++ lt_cv_dlopen="LoadLibrary"
++ lt_cv_dlopen_libs=
++ ;;
++
++ cygwin*)
++ lt_cv_dlopen="dlopen"
++ lt_cv_dlopen_libs=
++ ;;
++
++ darwin*)
++ # if libdl is installed we need to link against it
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
++if test "${ac_cv_lib_dl_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldl $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dl_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_lib_dl_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
++if test $ac_cv_lib_dl_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
++else
++
++ lt_cv_dlopen="dyld"
++ lt_cv_dlopen_libs=
++ lt_cv_dlopen_self=yes
++
++fi
++
++ ;;
++
++ *)
++ echo "$as_me:$LINENO: checking for shl_load" >&5
++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
++if test "${ac_cv_func_shl_load+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define shl_load innocuous_shl_load
++
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char shl_load (); 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
++
++#undef shl_load
++
++/* 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 shl_load ();
++/* 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_shl_load) || defined (__stub___shl_load)
++choke me
++#else
++char (*f) () = shl_load;
++#endif
++#ifdef __cplusplus
++}
++#endif
++
++int
++main ()
++{
++return f != shl_load;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_shl_load=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_func_shl_load=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
++echo "${ECHO_T}$ac_cv_func_shl_load" >&6
++if test $ac_cv_func_shl_load = yes; then
++ lt_cv_dlopen="shl_load"
++else
++ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
++if test "${ac_cv_lib_dld_shl_load+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.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 shl_load ();
++int
++main ()
++{
++shl_load ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dld_shl_load=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_lib_dld_shl_load=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
++if test $ac_cv_lib_dld_shl_load = yes; then
++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
++else
++ echo "$as_me:$LINENO: checking for dlopen" >&5
++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
++if test "${ac_cv_func_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define dlopen innocuous_dlopen
++
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char dlopen (); 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
++
++#undef dlopen
++
++/* 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 dlopen ();
++/* 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_dlopen) || defined (__stub___dlopen)
++choke me
++#else
++char (*f) () = dlopen;
++#endif
++#ifdef __cplusplus
++}
++#endif
++
++int
++main ()
++{
++return f != dlopen;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_func_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
++echo "${ECHO_T}$ac_cv_func_dlopen" >&6
++if test $ac_cv_func_dlopen = yes; then
++ lt_cv_dlopen="dlopen"
++else
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
++if test "${ac_cv_lib_dl_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldl $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dl_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_lib_dl_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
++if test $ac_cv_lib_dl_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
++else
++ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
++if test "${ac_cv_lib_svld_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-lsvld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_svld_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_lib_svld_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
++if test $ac_cv_lib_svld_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
++else
++ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
++if test "${ac_cv_lib_dld_dld_link+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.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 dld_link ();
++int
++main ()
++{
++dld_link ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dld_dld_link=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_lib_dld_dld_link=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
++if test $ac_cv_lib_dld_dld_link = yes; then
++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
++fi
++
+
+-irix5* | irix6* | nonstopux*)
+- case $host_os in
+- nonstopux*) version_type=nonstopux ;;
+- *)
+- if test "$lt_cv_prog_gnu_ld" = yes; then
+- version_type=linux
+- else
+- version_type=irix
+- fi ;;
+- esac
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+- case $host_os in
+- irix5* | nonstopux*)
+- libsuff= shlibsuff=
+- ;;
+- *)
+- case $LD in # libtool.m4 will add one of these switches to LD
+- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+- libsuff= shlibsuff= libmagic=32-bit;;
+- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+- libsuff=32 shlibsuff=N32 libmagic=N32;;
+- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+- libsuff=64 shlibsuff=64 libmagic=64-bit;;
+- *) libsuff= shlibsuff= libmagic=never-match;;
+- esac
+- ;;
+- esac
+- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+- hardcode_into_libs=yes
+- ;;
++fi
+
+-# No shared lib support for Linux oldld, aout, or coff.
+-linux*oldld* | linux*aout* | linux*coff*)
+- dynamic_linker=no
+- ;;
+
+-# This must be Linux ELF.
+-linux* | k*bsd*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- # This implies no fast_install, which is unacceptable.
+- # Some rework will be needed to allow for fast_install
+- # before this can be enabled.
+- hardcode_into_libs=yes
++fi
+
+- # Append ld.so.conf contents to the search path
+- if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+- fi
+
+- # We used to test for /lib/ld.so.1 and disable shared libraries on
+- # powerpc, because MkLinux only supported shared libraries with the
+- # GNU dynamic linker. Since this was broken with cross compilers,
+- # most powerpc-linux boxes support dynamic linking these days and
+- # people can always --disable-shared, the test was removed, and we
+- # assume the GNU/Linux dynamic linker is in use.
+- dynamic_linker='GNU/Linux ld.so'
+- ;;
++fi
+
+-netbsdelf*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
+- ;;
+
+-netbsd*)
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- dynamic_linker='NetBSD (a.out) ld.so'
+- else
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='NetBSD ld.elf_so'
+- fi
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
++fi
+
+-newsos6)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- ;;
+
+-nto-qnx*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- ;;
++fi
+
+-openbsd*)
+- version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+- need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
++ ;;
+ esac
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- case $host_os in
+- openbsd2.[89] | openbsd2.[89].*)
+- shlibpath_overrides_runpath=no
+- ;;
+- *)
+- shlibpath_overrides_runpath=yes
+- ;;
+- esac
++
++ if test "x$lt_cv_dlopen" != xno; then
++ enable_dlopen=yes
+ else
+- shlibpath_overrides_runpath=yes
++ enable_dlopen=no
+ fi
+- ;;
+
+-os2*)
+- libname_spec='$name'
+- shrext_cmds=".dll"
+- need_lib_prefix=no
+- library_names_spec='$libname${shared_ext} $libname.a'
+- dynamic_linker='OS/2 ld.exe'
+- shlibpath_var=LIBPATH
+- ;;
++ case $lt_cv_dlopen in
++ dlopen)
++ save_CPPFLAGS="$CPPFLAGS"
++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
++
++ save_LDFLAGS="$LDFLAGS"
++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
++
++ save_LIBS="$LIBS"
++ LIBS="$lt_cv_dlopen_libs $LIBS"
++
++ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
++if test "${lt_cv_dlopen_self+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test "$cross_compiling" = yes; then :
++ lt_cv_dlopen_self=cross
++else
++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
++ lt_status=$lt_dlunknown
++ cat > conftest.$ac_ext <<EOF
++#line 20164 "configure"
++#include "confdefs.h"
++
++#if HAVE_DLFCN_H
++#include <dlfcn.h>
++#endif
++
++#include <stdio.h>
++
++#ifdef RTLD_GLOBAL
++# define LT_DLGLOBAL RTLD_GLOBAL
++#else
++# ifdef DL_GLOBAL
++# define LT_DLGLOBAL DL_GLOBAL
++# else
++# define LT_DLGLOBAL 0
++# endif
++#endif
++
++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
++ find out it does not work in some platform. */
++#ifndef LT_DLLAZY_OR_NOW
++# ifdef RTLD_LAZY
++# define LT_DLLAZY_OR_NOW RTLD_LAZY
++# else
++# ifdef DL_LAZY
++# define LT_DLLAZY_OR_NOW DL_LAZY
++# else
++# ifdef RTLD_NOW
++# define LT_DLLAZY_OR_NOW RTLD_NOW
++# else
++# ifdef DL_NOW
++# define LT_DLLAZY_OR_NOW DL_NOW
++# else
++# define LT_DLLAZY_OR_NOW 0
++# endif
++# endif
++# endif
++# endif
++#endif
++
++#ifdef __cplusplus
++extern "C" void exit (int);
++#endif
++
++void fnord() { int i=42;}
++int main ()
++{
++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
++ int status = $lt_dlunknown;
++
++ if (self)
++ {
++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
++ /* dlclose (self); */
++ }
++
++ exit (status);
++}
++EOF
++ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
++ (./conftest; exit; ) 2>/dev/null
++ lt_status=$?
++ case x$lt_status in
++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
++ esac
++ else :
++ # compilation failed
++ lt_cv_dlopen_self=no
++ fi
++fi
++rm -fr conftest*
++
++
++fi
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self" >&6
++
++ if test "x$lt_cv_dlopen_self" = xyes; then
++ LDFLAGS="$LDFLAGS $link_static_flag"
++ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
++if test "${lt_cv_dlopen_self_static+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test "$cross_compiling" = yes; then :
++ lt_cv_dlopen_self_static=cross
++else
++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
++ lt_status=$lt_dlunknown
++ cat > conftest.$ac_ext <<EOF
++#line 20262 "configure"
++#include "confdefs.h"
++
++#if HAVE_DLFCN_H
++#include <dlfcn.h>
++#endif
+
+-osf3* | osf4* | osf5*)
+- version_type=osf
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+- ;;
++#include <stdio.h>
+
+-solaris*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- # ldd complains unless libraries are executable
+- postinstall_cmds='chmod +x $lib'
+- ;;
++#ifdef RTLD_GLOBAL
++# define LT_DLGLOBAL RTLD_GLOBAL
++#else
++# ifdef DL_GLOBAL
++# define LT_DLGLOBAL DL_GLOBAL
++# else
++# define LT_DLGLOBAL 0
++# endif
++#endif
+
+-sunos4*)
+- version_type=sunos
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- if test "$with_gnu_ld" = yes; then
+- need_lib_prefix=no
+- fi
+- need_version=yes
+- ;;
++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
++ find out it does not work in some platform. */
++#ifndef LT_DLLAZY_OR_NOW
++# ifdef RTLD_LAZY
++# define LT_DLLAZY_OR_NOW RTLD_LAZY
++# else
++# ifdef DL_LAZY
++# define LT_DLLAZY_OR_NOW DL_LAZY
++# else
++# ifdef RTLD_NOW
++# define LT_DLLAZY_OR_NOW RTLD_NOW
++# else
++# ifdef DL_NOW
++# define LT_DLLAZY_OR_NOW DL_NOW
++# else
++# define LT_DLLAZY_OR_NOW 0
++# endif
++# endif
++# endif
++# endif
++#endif
+
+-sysv4 | sysv4.3*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- case $host_vendor in
+- sni)
+- shlibpath_overrides_runpath=no
+- need_lib_prefix=no
+- export_dynamic_flag_spec='${wl}-Blargedynsym'
+- runpath_var=LD_RUN_PATH
+- ;;
+- siemens)
+- need_lib_prefix=no
+- ;;
+- motorola)
+- need_lib_prefix=no
+- need_version=no
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+- ;;
+- esac
+- ;;
++#ifdef __cplusplus
++extern "C" void exit (int);
++#endif
+
+-sysv4*MP*)
+- if test -d /usr/nec ;then
+- version_type=linux
+- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+- soname_spec='$libname${shared_ext}.$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- fi
+- ;;
++void fnord() { int i=42;}
++int main ()
++{
++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
++ int status = $lt_dlunknown;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
++ if (self)
++ {
++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
++ /* dlclose (self); */
++ }
++
++ exit (status);
++}
++EOF
++ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
++ (./conftest; exit; ) 2>/dev/null
++ lt_status=$?
++ case x$lt_status in
++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
++ else :
++ # compilation failed
++ lt_cv_dlopen_self_static=no
+ fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
+-
+-uts4*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
++fi
++rm -fr conftest*
+
+-*)
+- dynamic_linker=no
+- ;;
+-esac
+-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+-echo "${ECHO_T}$dynamic_linker" >&6; }
+-test "$dynamic_linker" = no && can_build_shared=no
+
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+ fi
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
++ fi
+
+-{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+-hardcode_action_GCJ=
+-if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+- test -n "$runpath_var_GCJ" || \
+- test "X$hardcode_automatic_GCJ" = "Xyes" ; then
++ CPPFLAGS="$save_CPPFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++ LIBS="$save_LIBS"
++ ;;
++ esac
+
+- # We can hardcode non-existant directories.
+- if test "$hardcode_direct_GCJ" != no &&
+- # If the only mechanism to avoid hardcoding is shlibpath_var, we
+- # have to relink, otherwise we might link with an installed library
+- # when we should be linking with a yet-to-be-installed one
+- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+- test "$hardcode_minus_L_GCJ" != no; then
+- # Linking always hardcodes the temporary library directory.
+- hardcode_action_GCJ=relink
+- else
+- # We can link without hardcoding, and we can hardcode nonexisting dirs.
+- hardcode_action_GCJ=immediate
+- fi
+-else
+- # We cannot hardcode anything, or else we can only hardcode existing
+- # directories.
+- hardcode_action_GCJ=unsupported
+-fi
+-{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+-echo "${ECHO_T}$hardcode_action_GCJ" >&6; }
++ case $lt_cv_dlopen_self in
++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
++ *) enable_dlopen_self=unknown ;;
++ esac
+
+-if test "$hardcode_action_GCJ" = relink; then
+- # Fast installation is not supported
+- enable_fast_install=no
+-elif test "$shlibpath_overrides_runpath" = yes ||
+- test "$enable_shared" = no; then
+- # Fast installation is not necessary
+- enable_fast_install=needless
++ case $lt_cv_dlopen_self_static in
++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
++ *) enable_dlopen_self_static=unknown ;;
++ esac
+ fi
+
+
+@@ -21153,7 +20376,7 @@
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+@@ -21254,12 +20477,6 @@
+ # The host system.
+ host_alias=$host_alias
+ host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+
+ # An echo program that does not interpret backslashes.
+ echo=$lt_echo
+@@ -21271,9 +20488,6 @@
+ # A C compiler.
+ LTCC=$lt_LTCC
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+ # A language-specific compiler.
+ CC=$lt_compiler_GCJ
+
+@@ -21339,7 +20553,7 @@
+ # Does compiler simultaneously support -c and -o options?
+ compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+-# Must we lock files when doing compilation?
++# Must we lock files when doing compilation ?
+ need_locks=$lt_need_locks
+
+ # Do we need the lib prefix for modules?
+@@ -21564,6 +20778,7 @@
+ RC)
+
+
++
+ # Source file extension for RC test sources.
+ ac_ext=rc
+
+@@ -21582,42 +20797,15 @@
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ CC=${RC-"windres"}
+ compiler=$CC
+ compiler_RC=$CC
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-
+ lt_cv_prog_compiler_c_o_RC=yes
+
+ # The else clause should only fire when bootstrapping the
+@@ -21633,7 +20821,7 @@
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+@@ -21734,12 +20922,6 @@
+ # The host system.
+ host_alias=$host_alias
+ host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+
+ # An echo program that does not interpret backslashes.
+ echo=$lt_echo
+@@ -21751,9 +20933,6 @@
+ # A C compiler.
+ LTCC=$lt_LTCC
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+ # A language-specific compiler.
+ CC=$lt_compiler_RC
+
+@@ -21819,7 +20998,7 @@
+ # Does compiler simultaneously support -c and -o options?
+ compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+-# Must we lock files when doing compilation?
++# Must we lock files when doing compilation ?
+ need_locks=$lt_need_locks
+
+ # Do we need the lib prefix for modules?
+@@ -22095,9 +21274,10 @@
+
+
+
+-# Check whether --enable-shared was given.
++# Check whether --enable-shared or --disable-shared was given.
+ if test "${enable_shared+set}" = set; then
+- enableval=$enable_shared; p=${PACKAGE-default}
++ enableval="$enable_shared"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+@@ -22116,12 +21296,12 @@
+ esac
+ else
+ enable_shared=yes
+-fi
+-
++fi;
+
+-# Check whether --enable-static was given.
++# Check whether --enable-static or --disable-static was given.
+ if test "${enable_static+set}" = set; then
+- enableval=$enable_static; p=${PACKAGE-default}
++ enableval="$enable_static"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+@@ -22140,8 +21320,7 @@
+ esac
+ else
+ enable_static=no
+-fi
+-
++fi;
+
+ ALL_LINGUAS="fr it de ja es pl cs nl sv pt_BR"
+ GETTEXT_PACKAGE=linphone
+@@ -22160,17 +21339,17 @@
+
+
+
+- { echo "$as_me:$LINENO: checking whether NLS is requested" >&5
+-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; }
+- # Check whether --enable-nls was given.
++ echo "$as_me:$LINENO: checking whether NLS is requested" >&5
++echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6
++ # Check whether --enable-nls or --disable-nls was given.
+ if test "${enable_nls+set}" = set; then
+- enableval=$enable_nls; USE_NLS=$enableval
++ enableval="$enable_nls"
++ USE_NLS=$enableval
+ else
+ USE_NLS=yes
+-fi
+-
+- { echo "$as_me:$LINENO: result: $USE_NLS" >&5
+-echo "${ECHO_T}$USE_NLS" >&6; }
++fi;
++ echo "$as_me:$LINENO: result: $USE_NLS" >&5
++echo "${ECHO_T}$USE_NLS" >&6
+
+
+
+@@ -22207,8 +21386,8 @@
+
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+ set dummy msgfmt; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_path_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -22239,17 +21418,17 @@
+ fi
+ MSGFMT="$ac_cv_path_MSGFMT"
+ if test "$MSGFMT" != ":"; then
+- { echo "$as_me:$LINENO: result: $MSGFMT" >&5
+-echo "${ECHO_T}$MSGFMT" >&6; }
++ echo "$as_me:$LINENO: result: $MSGFMT" >&5
++echo "${ECHO_T}$MSGFMT" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+ set dummy gmsgfmt; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_path_GMSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -22264,31 +21443,30 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+ esac
+ fi
+ GMSGFMT=$ac_cv_path_GMSGFMT
++
+ if test -n "$GMSGFMT"; then
+- { echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+-echo "${ECHO_T}$GMSGFMT" >&6; }
++ echo "$as_me:$LINENO: result: $GMSGFMT" >&5
++echo "${ECHO_T}$GMSGFMT" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+
+
+-
+ # Prepare PATH_SEPARATOR.
+ # The user is always right.
+ if test "${PATH_SEPARATOR+set}" != set; then
+@@ -22319,8 +21497,8 @@
+
+ # Extract the first word of "xgettext", so it can be a program name with args.
+ set dummy xgettext; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_path_XGETTEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -22351,11 +21529,11 @@
+ fi
+ XGETTEXT="$ac_cv_path_XGETTEXT"
+ if test "$XGETTEXT" != ":"; then
+- { echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+-echo "${ECHO_T}$XGETTEXT" >&6; }
++ echo "$as_me:$LINENO: result: $XGETTEXT" >&5
++echo "${ECHO_T}$XGETTEXT" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+ rm -f messages.po
+@@ -22391,8 +21569,8 @@
+
+ # Extract the first word of "msgmerge", so it can be a program name with args.
+ set dummy msgmerge; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_path_MSGMERGE+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -22422,11 +21600,11 @@
+ fi
+ MSGMERGE="$ac_cv_path_MSGMERGE"
+ if test "$MSGMERGE" != ":"; then
+- { echo "$as_me:$LINENO: result: $MSGMERGE" >&5
+-echo "${ECHO_T}$MSGMERGE" >&6; }
++ echo "$as_me:$LINENO: result: $MSGMERGE" >&5
++echo "${ECHO_T}$MSGMERGE" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+
+@@ -22436,8 +21614,8 @@
+ : ;
+ else
+ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
+- { echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5
+-echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; }
++ echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5
++echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6
+ GMSGFMT=":"
+ fi
+ fi
+@@ -22447,14 +21625,14 @@
+ (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ : ;
+ else
+- { echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5
+-echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6; }
++ echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5
++echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6
+ XGETTEXT=":"
+ fi
+ rm -f messages.po
+ fi
+
+- ac_config_commands="$ac_config_commands default-1"
++ ac_config_commands="$ac_config_commands default-2"
+
+
+
+@@ -22474,13 +21652,13 @@
+ prefix="$acl_save_prefix"
+
+
+-# Check whether --with-gnu-ld was given.
++# Check whether --with-gnu-ld or --without-gnu-ld was given.
+ if test "${with_gnu_ld+set}" = set; then
+- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
++ withval="$with_gnu_ld"
++ test "$withval" = no || with_gnu_ld=yes
+ else
+ with_gnu_ld=no
+-fi
+-
++fi;
+ # Prepare PATH_SEPARATOR.
+ # The user is always right.
+ if test "${PATH_SEPARATOR+set}" != set; then
+@@ -22497,8 +21675,8 @@
+ ac_prog=ld
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+- { echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for ld used by GCC" >&5
++echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+@@ -22527,11 +21705,11 @@
+ ;;
+ esac
+ elif test "$with_gnu_ld" = yes; then
+- { echo "$as_me:$LINENO: checking for GNU ld" >&5
+-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for GNU ld" >&5
++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+ else
+- { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+ fi
+ if test "${acl_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -22561,17 +21739,17 @@
+
+ LD="$acl_cv_path_LD"
+ if test -n "$LD"; then
+- { echo "$as_me:$LINENO: result: $LD" >&5
+-echo "${ECHO_T}$LD" >&6; }
++ echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+ test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+ echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+-{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+ if test "${acl_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -22583,15 +21761,15 @@
+ acl_cv_prog_gnu_ld=no ;;
+ esac
+ fi
+-{ echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
+-echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6; }
++echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
++echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6
+ with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+
+- { echo "$as_me:$LINENO: checking for shared library run path origin" >&5
+-echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for shared library run path origin" >&5
++echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6
+ if test "${acl_cv_rpath+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -22603,8 +21781,8 @@
+ acl_cv_rpath=done
+
+ fi
+-{ echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5
+-echo "${ECHO_T}$acl_cv_rpath" >&6; }
++echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5
++echo "${ECHO_T}$acl_cv_rpath" >&6
+ wl="$acl_cv_wl"
+ libext="$acl_cv_libext"
+ shlibext="$acl_cv_shlibext"
+@@ -22612,13 +21790,13 @@
+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ hardcode_direct="$acl_cv_hardcode_direct"
+ hardcode_minus_L="$acl_cv_hardcode_minus_L"
+- # Check whether --enable-rpath was given.
++ # Check whether --enable-rpath or --disable-rpath was given.
+ if test "${enable_rpath+set}" = set; then
+- enableval=$enable_rpath; :
++ enableval="$enable_rpath"
++ :
+ else
+ enable_rpath=yes
+-fi
+-
++fi;
+
+
+
+@@ -22640,9 +21818,10 @@
+ prefix="$acl_save_prefix"
+
+
+-# Check whether --with-libiconv-prefix was given.
++# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given.
+ if test "${with_libiconv_prefix+set}" = set; then
+- withval=$with_libiconv_prefix;
++ withval="$with_libiconv_prefix"
++
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+@@ -22665,8 +21844,7 @@
+ fi
+ fi
+
+-fi
+-
++fi;
+ LIBICONV=
+ LTLIBICONV=
+ INCICONV=
+@@ -23019,8 +22197,8 @@
+
+
+
+- { echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5
+-echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5
++echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6
+ if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -23044,36 +22222,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -23082,16 +22248,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- gt_cv_func_CFPreferencesCopyAppValue=no
++gt_cv_func_CFPreferencesCopyAppValue=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"
+ fi
+-{ echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+-echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
++echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
++echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -23099,8 +22264,8 @@
+ _ACEOF
+
+ fi
+- { echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5
+-echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5
++echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6
+ if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -23124,36 +22289,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -23162,16 +22315,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- gt_cv_func_CFLocaleCopyCurrent=no
++gt_cv_func_CFLocaleCopyCurrent=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"
+ fi
+-{ echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+-echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6; }
++echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
++echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6
+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -23187,17 +22339,17 @@
+
+
+
+- { echo "$as_me:$LINENO: checking whether NLS is requested" >&5
+-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; }
+- # Check whether --enable-nls was given.
++ echo "$as_me:$LINENO: checking whether NLS is requested" >&5
++echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6
++ # Check whether --enable-nls or --disable-nls was given.
+ if test "${enable_nls+set}" = set; then
+- enableval=$enable_nls; USE_NLS=$enableval
++ enableval="$enable_nls"
++ USE_NLS=$enableval
+ else
+ USE_NLS=yes
+-fi
+-
+- { echo "$as_me:$LINENO: result: $USE_NLS" >&5
+-echo "${ECHO_T}$USE_NLS" >&6; }
++fi;
++ echo "$as_me:$LINENO: result: $USE_NLS" >&5
++echo "${ECHO_T}$USE_NLS" >&6
+
+
+
+@@ -23214,8 +22366,8 @@
+
+
+
+- { echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5
+-echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5
++echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6
+ if test "${gt_cv_func_gnugettext1_libc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -23238,36 +22390,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -23276,14 +22416,13 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- gt_cv_func_gnugettext1_libc=no
++gt_cv_func_gnugettext1_libc=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-{ echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5
+-echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6; }
++echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5
++echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6
+
+ if test "$gt_cv_func_gnugettext1_libc" != "yes"; then
+
+@@ -23316,8 +22455,8 @@
+ done
+
+
+- { echo "$as_me:$LINENO: checking for iconv" >&5
+-echo $ECHO_N "checking for iconv... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for iconv" >&5
++echo $ECHO_N "checking for iconv... $ECHO_C" >&6
+ if test "${am_cv_func_iconv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -23343,36 +22482,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -23381,10 +22508,8 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+@@ -23408,36 +22533,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -23447,17 +22560,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$am_save_LIBS"
+ fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
+-echo "${ECHO_T}$am_cv_func_iconv" >&6; }
++echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
++echo "${ECHO_T}$am_cv_func_iconv" >&6
+ if test "$am_cv_func_iconv" = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -23466,10 +22577,10 @@
+
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+- { echo "$as_me:$LINENO: checking how to link with libiconv" >&5
+-echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6; }
+- { echo "$as_me:$LINENO: result: $LIBICONV" >&5
+-echo "${ECHO_T}$LIBICONV" >&6; }
++ echo "$as_me:$LINENO: checking how to link with libiconv" >&5
++echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6
++ echo "$as_me:$LINENO: result: $LIBICONV" >&5
++echo "${ECHO_T}$LIBICONV" >&6
+ else
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+@@ -23495,9 +22606,10 @@
+ prefix="$acl_save_prefix"
+
+
+-# Check whether --with-libintl-prefix was given.
++# Check whether --with-libintl-prefix or --without-libintl-prefix was given.
+ if test "${with_libintl_prefix+set}" = set; then
+- withval=$with_libintl_prefix;
++ withval="$with_libintl_prefix"
++
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+@@ -23520,8 +22632,7 @@
+ fi
+ fi
+
+-fi
+-
++fi;
+ LIBINTL=
+ LTLIBINTL=
+ INCINTL=
+@@ -23857,8 +22968,8 @@
+ done
+ fi
+
+- { echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5
+-echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5
++echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6
+ if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -23889,36 +23000,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -23927,10 +23026,9 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- gt_cv_func_gnugettext1_libintl=no
++gt_cv_func_gnugettext1_libintl=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then
+ LIBS="$LIBS $LIBICONV"
+@@ -23957,36 +23055,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -23998,17 +23084,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"
+ fi
+-{ echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5
+-echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6; }
++echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5
++echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6
+ fi
+
+ if test "$gt_cv_func_gnugettext1_libc" = "yes" \
+@@ -24044,13 +23128,13 @@
+ fi
+ fi
+
+- { echo "$as_me:$LINENO: checking whether to use NLS" >&5
+-echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6; }
+- { echo "$as_me:$LINENO: result: $USE_NLS" >&5
+-echo "${ECHO_T}$USE_NLS" >&6; }
++ echo "$as_me:$LINENO: checking whether to use NLS" >&5
++echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6
++ echo "$as_me:$LINENO: result: $USE_NLS" >&5
++echo "${ECHO_T}$USE_NLS" >&6
+ if test "$USE_NLS" = "yes"; then
+- { echo "$as_me:$LINENO: checking where the gettext function comes from" >&5
+-echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking where the gettext function comes from" >&5
++echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then
+ gt_source="external libintl"
+@@ -24060,18 +23144,18 @@
+ else
+ gt_source="included intl directory"
+ fi
+- { echo "$as_me:$LINENO: result: $gt_source" >&5
+-echo "${ECHO_T}$gt_source" >&6; }
++ echo "$as_me:$LINENO: result: $gt_source" >&5
++echo "${ECHO_T}$gt_source" >&6
+ fi
+
+ if test "$USE_NLS" = "yes"; then
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then
+- { echo "$as_me:$LINENO: checking how to link with libintl" >&5
+-echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6; }
+- { echo "$as_me:$LINENO: result: $LIBINTL" >&5
+-echo "${ECHO_T}$LIBINTL" >&6; }
++ echo "$as_me:$LINENO: checking how to link with libintl" >&5
++echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6
++ echo "$as_me:$LINENO: result: $LIBINTL" >&5
++echo "${ECHO_T}$LIBINTL" >&6
+
+ for element in $INCINTL; do
+ haveit=
+@@ -24128,8 +23212,8 @@
+ _ACEOF
+
+
+-{ echo "$as_me:$LINENO: checking for libintl_gettext in -lintl" >&5
+-echo $ECHO_N "checking for libintl_gettext in -lintl... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for libintl_gettext in -lintl" >&5
++echo $ECHO_N "checking for libintl_gettext in -lintl... $ECHO_C" >&6
+ if test "${ac_cv_lib_intl_libintl_gettext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -24142,52 +23226,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 libintl_gettext ();
+ int
+ main ()
+ {
+-return libintl_gettext ();
++libintl_gettext ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -24196,15 +23268,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_intl_libintl_gettext=no
++ac_cv_lib_intl_libintl_gettext=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_libintl_gettext" >&5
+-echo "${ECHO_T}$ac_cv_lib_intl_libintl_gettext" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_intl_libintl_gettext" >&5
++echo "${ECHO_T}$ac_cv_lib_intl_libintl_gettext" >&6
+ if test $ac_cv_lib_intl_libintl_gettext = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_LIBINTL 1
+@@ -24221,9 +23292,9 @@
+ for ac_func in get_current_dir_name strndup stpcpy
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
++echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
++if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -24249,59 +23320,53 @@
+
+ #undef $ac_func
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 $ac_func ();
+ /* 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_$ac_func || defined __stub___$ac_func
++#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+ choke me
++#else
++char (*f) () = $ac_func;
++#endif
++#ifdef __cplusplus
++}
+ #endif
+
+ int
+ main ()
+ {
+-return $ac_func ();
++return f != $ac_func;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -24310,15 +23375,13 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- eval "$as_ac_var=no"
++eval "$as_ac_var=no"
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-ac_res=`eval echo '${'$as_ac_var'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -24328,9 +23391,10 @@
+ done
+
+
+-# Check whether --enable-gnome_ui was given.
++# Check whether --enable-gnome_ui or --disable-gnome_ui was given.
+ if test "${enable_gnome_ui+set}" = set; then
+- enableval=$enable_gnome_ui; case "${enableval}" in
++ enableval="$enable_gnome_ui"
++ case "${enableval}" in
+ yes) gnome_ui=true ;;
+ no) gnome_ui=false ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-gnome_ui" >&5
+@@ -24339,20 +23403,19 @@
+ esac
+ else
+ gnome_ui=true
+-fi
+-
++fi;
+
+
+ if test "$gnome_ui" = "true" ; then
+
+
++ succeeded=no
+
+-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++ if test -z "$PKG_CONFIG"; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -24367,41 +23430,97 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+ esac
+ fi
+ PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++
+ if test -n "$PKG_CONFIG"; then
+- { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+-echo "${ECHO_T}$PKG_CONFIG" >&6; }
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
++ fi
+
+-fi
+-if test -z "$ac_cv_path_PKG_CONFIG"; then
+- ac_pt_PKG_CONFIG=$PKG_CONFIG
+- # Extract the first word of "pkg-config", so it can be a program name with args.
++ 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
++ echo "$as_me:$LINENO: checking for libgnomeui-2.0 >= 1.96.0" >&5
++echo $ECHO_N "checking for libgnomeui-2.0 >= 1.96.0... $ECHO_C" >&6
++
++ if $PKG_CONFIG --exists "libgnomeui-2.0 >= 1.96.0" ; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ succeeded=yes
++
++ echo "$as_me:$LINENO: checking LIBGNOMEUI_CFLAGS" >&5
++echo $ECHO_N "checking LIBGNOMEUI_CFLAGS... $ECHO_C" >&6
++ LIBGNOMEUI_CFLAGS=`$PKG_CONFIG --cflags "libgnomeui-2.0 >= 1.96.0"`
++ echo "$as_me:$LINENO: result: $LIBGNOMEUI_CFLAGS" >&5
++echo "${ECHO_T}$LIBGNOMEUI_CFLAGS" >&6
++
++ echo "$as_me:$LINENO: checking LIBGNOMEUI_LIBS" >&5
++echo $ECHO_N "checking LIBGNOMEUI_LIBS... $ECHO_C" >&6
++ LIBGNOMEUI_LIBS=`$PKG_CONFIG --libs "libgnomeui-2.0 >= 1.96.0"`
++ echo "$as_me:$LINENO: result: $LIBGNOMEUI_LIBS" >&5
++echo "${ECHO_T}$LIBGNOMEUI_LIBS" >&6
++ else
++ LIBGNOMEUI_CFLAGS=""
++ LIBGNOMEUI_LIBS=""
++ ## If we have a custom action on failure, don't print errors, but
++ ## do set a variable so people can do so.
++ LIBGNOMEUI_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libgnomeui-2.0 >= 1.96.0"`
++
++ fi
++
++
++
++ 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
++ :
++ else
++ gnome_ui=false
++ fi
++
++
++
++
++
++ succeeded=no
++
++ if test -z "$PKG_CONFIG"; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
+ set dummy pkg-config; 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_path_ac_pt_PKG_CONFIG+set}" = set; then
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- case $ac_pt_PKG_CONFIG in
++ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+- ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+@@ -24410,354 +23529,277 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+ esac
+ fi
+-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+-if test -n "$ac_pt_PKG_CONFIG"; then
+- { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+-echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; }
+-else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+-fi
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+- if test "x$ac_pt_PKG_CONFIG" = x; then
+- PKG_CONFIG=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- PKG_CONFIG=$ac_pt_PKG_CONFIG
+- fi
++if test -n "$PKG_CONFIG"; then
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
+ else
+- PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-fi
+-if test -n "$PKG_CONFIG"; then
+- _pkg_min_version=0.9.0
+- { echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+-echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; }
+- if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
+- else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+- PKG_CONFIG=""
+- fi
+-
+-fi
++ fi
+
+-pkg_failed=no
+-{ echo "$as_me:$LINENO: checking for LIBGNOMEUI" >&5
+-echo $ECHO_N "checking for LIBGNOMEUI... $ECHO_C" >&6; }
++ 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
++ echo "$as_me:$LINENO: checking for libgnome-2.0 >= 1.96.0" >&5
++echo $ECHO_N "checking for libgnome-2.0 >= 1.96.0... $ECHO_C" >&6
++
++ if $PKG_CONFIG --exists "libgnome-2.0 >= 1.96.0" ; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ succeeded=yes
++
++ echo "$as_me:$LINENO: checking LIBGNOME_CFLAGS" >&5
++echo $ECHO_N "checking LIBGNOME_CFLAGS... $ECHO_C" >&6
++ LIBGNOME_CFLAGS=`$PKG_CONFIG --cflags "libgnome-2.0 >= 1.96.0"`
++ echo "$as_me:$LINENO: result: $LIBGNOME_CFLAGS" >&5
++echo "${ECHO_T}$LIBGNOME_CFLAGS" >&6
++
++ echo "$as_me:$LINENO: checking LIBGNOME_LIBS" >&5
++echo $ECHO_N "checking LIBGNOME_LIBS... $ECHO_C" >&6
++ LIBGNOME_LIBS=`$PKG_CONFIG --libs "libgnome-2.0 >= 1.96.0"`
++ echo "$as_me:$LINENO: result: $LIBGNOME_LIBS" >&5
++echo "${ECHO_T}$LIBGNOME_LIBS" >&6
++ else
++ LIBGNOME_CFLAGS=""
++ LIBGNOME_LIBS=""
++ ## If we have a custom action on failure, don't print errors, but
++ ## do set a variable so people can do so.
++ LIBGNOME_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libgnome-2.0 >= 1.96.0"`
+
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$LIBGNOMEUI_CFLAGS"; then
+- pkg_cv_LIBGNOMEUI_CFLAGS="$LIBGNOMEUI_CFLAGS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libgnomeui-2.0 >= 1.96.0\"") >&5
+- ($PKG_CONFIG --exists --print-errors "libgnomeui-2.0 >= 1.96.0") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_LIBGNOMEUI_CFLAGS=`$PKG_CONFIG --cflags "libgnomeui-2.0 >= 1.96.0" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
+-else
+- pkg_failed=untried
+-fi
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$LIBGNOMEUI_LIBS"; then
+- pkg_cv_LIBGNOMEUI_LIBS="$LIBGNOMEUI_LIBS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libgnomeui-2.0 >= 1.96.0\"") >&5
+- ($PKG_CONFIG --exists --print-errors "libgnomeui-2.0 >= 1.96.0") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_LIBGNOMEUI_LIBS=`$PKG_CONFIG --libs "libgnomeui-2.0 >= 1.96.0" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
+-else
+- pkg_failed=untried
+-fi
++ fi
+
+
+
+-if test $pkg_failed = yes; then
++ 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 $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
+-else
+- _pkg_short_errors_supported=no
+-fi
+- if test $_pkg_short_errors_supported = yes; then
+- LIBGNOMEUI_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libgnomeui-2.0 >= 1.96.0"`
+- else
+- LIBGNOMEUI_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libgnomeui-2.0 >= 1.96.0"`
+- fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$LIBGNOMEUI_PKG_ERRORS" >&5
++ if test $succeeded = yes; then
++ :
++ else
++ gnome_ui=false
++ fi
+
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+- gnome_ui=false
+-elif test $pkg_failed = untried; then
+- gnome_ui=false
+-else
+- LIBGNOMEUI_CFLAGS=$pkg_cv_LIBGNOMEUI_CFLAGS
+- LIBGNOMEUI_LIBS=$pkg_cv_LIBGNOMEUI_LIBS
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
+- :
+-fi
+
+
+
+
+-pkg_failed=no
+-{ echo "$as_me:$LINENO: checking for LIBGNOME" >&5
+-echo $ECHO_N "checking for LIBGNOME... $ECHO_C" >&6; }
++ succeeded=no
+
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$LIBGNOME_CFLAGS"; then
+- pkg_cv_LIBGNOME_CFLAGS="$LIBGNOME_CFLAGS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libgnome-2.0 >= 1.96.0\"") >&5
+- ($PKG_CONFIG --exists --print-errors "libgnome-2.0 >= 1.96.0") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_LIBGNOME_CFLAGS=`$PKG_CONFIG --cflags "libgnome-2.0 >= 1.96.0" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
++ if test -z "$PKG_CONFIG"; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- pkg_failed=untried
++ case $PKG_CONFIG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
++ ;;
++ *)
++ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
++ ;;
++esac
+ fi
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++
+ if test -n "$PKG_CONFIG"; then
+- if test -n "$LIBGNOME_LIBS"; then
+- pkg_cv_LIBGNOME_LIBS="$LIBGNOME_LIBS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libgnome-2.0 >= 1.96.0\"") >&5
+- ($PKG_CONFIG --exists --print-errors "libgnome-2.0 >= 1.96.0") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_LIBGNOME_LIBS=`$PKG_CONFIG --libs "libgnome-2.0 >= 1.96.0" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
+ else
+- pkg_failed=untried
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
++ fi
+
+-
+-if test $pkg_failed = yes; then
+-
+-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
+-else
+- _pkg_short_errors_supported=no
+-fi
+- if test $_pkg_short_errors_supported = yes; then
+- LIBGNOME_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libgnome-2.0 >= 1.96.0"`
++ 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
++ echo "$as_me:$LINENO: checking for gtk+-2.0 >= 2.4.0" >&5
++echo $ECHO_N "checking for gtk+-2.0 >= 2.4.0... $ECHO_C" >&6
++
++ if $PKG_CONFIG --exists "gtk+-2.0 >= 2.4.0" ; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ succeeded=yes
++
++ echo "$as_me:$LINENO: checking LIBGTK_CFLAGS" >&5
++echo $ECHO_N "checking LIBGTK_CFLAGS... $ECHO_C" >&6
++ LIBGTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.4.0"`
++ echo "$as_me:$LINENO: result: $LIBGTK_CFLAGS" >&5
++echo "${ECHO_T}$LIBGTK_CFLAGS" >&6
++
++ echo "$as_me:$LINENO: checking LIBGTK_LIBS" >&5
++echo $ECHO_N "checking LIBGTK_LIBS... $ECHO_C" >&6
++ LIBGTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.4.0"`
++ echo "$as_me:$LINENO: result: $LIBGTK_LIBS" >&5
++echo "${ECHO_T}$LIBGTK_LIBS" >&6
+ else
+- LIBGNOME_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libgnome-2.0 >= 1.96.0"`
+- fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$LIBGNOME_PKG_ERRORS" >&5
+-
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+- gnome_ui=false
+-elif test $pkg_failed = untried; then
+- gnome_ui=false
+-else
+- LIBGNOME_CFLAGS=$pkg_cv_LIBGNOME_CFLAGS
+- LIBGNOME_LIBS=$pkg_cv_LIBGNOME_LIBS
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
+- :
+-fi
++ LIBGTK_CFLAGS=""
++ LIBGTK_LIBS=""
++ ## If we have a custom action on failure, don't print errors, but
++ ## do set a variable so people can do so.
++ LIBGTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0 >= 2.4.0"`
+
++ fi
+
+
+
+-pkg_failed=no
+-{ echo "$as_me:$LINENO: checking for LIBGTK" >&5
+-echo $ECHO_N "checking for LIBGTK... $ECHO_C" >&6; }
++ 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 -n "$PKG_CONFIG"; then
+- if test -n "$LIBGTK_CFLAGS"; then
+- pkg_cv_LIBGTK_CFLAGS="$LIBGTK_CFLAGS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.4.0\"") >&5
+- ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.4.0") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_LIBGTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.4.0" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
+-else
+- pkg_failed=untried
+-fi
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$LIBGTK_LIBS"; then
+- pkg_cv_LIBGTK_LIBS="$LIBGTK_LIBS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.4.0\"") >&5
+- ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.4.0") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_LIBGTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.4.0" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
+-else
+- pkg_failed=untried
+-fi
++ if test $succeeded = yes; then
++ :
++ else
++ gnome_ui=false; { echo "$as_me:$LINENO: WARNING: Could not find gtk+>=2.4.0; gnome interface cannot be build." >&5
++echo "$as_me: WARNING: Could not find gtk+>=2.4.0; gnome interface cannot be build." >&2;}
++ fi
+
+
+
+-if test $pkg_failed = yes; then
++ succeeded=no
+
+-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
++ if test -z "$PKG_CONFIG"; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- _pkg_short_errors_supported=no
++ case $PKG_CONFIG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
++ ;;
++ *)
++ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
++ ;;
++esac
+ fi
+- if test $_pkg_short_errors_supported = yes; then
+- LIBGTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtk+-2.0 >= 2.4.0"`
+- else
+- LIBGTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0 >= 2.4.0"`
+- fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$LIBGTK_PKG_ERRORS" >&5
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+- gnome_ui=false; { echo "$as_me:$LINENO: WARNING: Could not find gtk+>=2.4.0; gnome interface cannot be build." >&5
+-echo "$as_me: WARNING: Could not find gtk+>=2.4.0; gnome interface cannot be build." >&2;}
+-elif test $pkg_failed = untried; then
+- gnome_ui=false; { echo "$as_me:$LINENO: WARNING: Could not find gtk+>=2.4.0; gnome interface cannot be build." >&5
+-echo "$as_me: WARNING: Could not find gtk+>=2.4.0; gnome interface cannot be build." >&2;}
++if test -n "$PKG_CONFIG"; then
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
+ else
+- LIBGTK_CFLAGS=$pkg_cv_LIBGTK_CFLAGS
+- LIBGTK_LIBS=$pkg_cv_LIBGTK_LIBS
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
+- :
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
++ fi
+
+-pkg_failed=no
+-{ echo "$as_me:$LINENO: checking for GNOME_APPLETS" >&5
+-echo $ECHO_N "checking for GNOME_APPLETS... $ECHO_C" >&6; }
++ 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
++ echo "$as_me:$LINENO: checking for libpanelapplet-2.0 >= 2.0.0 " >&5
++echo $ECHO_N "checking for libpanelapplet-2.0 >= 2.0.0 ... $ECHO_C" >&6
++
++ if $PKG_CONFIG --exists "libpanelapplet-2.0 >= 2.0.0 " ; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ succeeded=yes
++
++ echo "$as_me:$LINENO: checking GNOME_APPLETS_CFLAGS" >&5
++echo $ECHO_N "checking GNOME_APPLETS_CFLAGS... $ECHO_C" >&6
++ GNOME_APPLETS_CFLAGS=`$PKG_CONFIG --cflags "libpanelapplet-2.0 >= 2.0.0 "`
++ echo "$as_me:$LINENO: result: $GNOME_APPLETS_CFLAGS" >&5
++echo "${ECHO_T}$GNOME_APPLETS_CFLAGS" >&6
++
++ echo "$as_me:$LINENO: checking GNOME_APPLETS_LIBS" >&5
++echo $ECHO_N "checking GNOME_APPLETS_LIBS... $ECHO_C" >&6
++ GNOME_APPLETS_LIBS=`$PKG_CONFIG --libs "libpanelapplet-2.0 >= 2.0.0 "`
++ echo "$as_me:$LINENO: result: $GNOME_APPLETS_LIBS" >&5
++echo "${ECHO_T}$GNOME_APPLETS_LIBS" >&6
++ else
++ GNOME_APPLETS_CFLAGS=""
++ GNOME_APPLETS_LIBS=""
++ ## If we have a custom action on failure, don't print errors, but
++ ## do set a variable so people can do so.
++ GNOME_APPLETS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libpanelapplet-2.0 >= 2.0.0 "`
+
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$GNOME_APPLETS_CFLAGS"; then
+- pkg_cv_GNOME_APPLETS_CFLAGS="$GNOME_APPLETS_CFLAGS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpanelapplet-2.0 >= 2.0.0 \"") >&5
+- ($PKG_CONFIG --exists --print-errors "libpanelapplet-2.0 >= 2.0.0 ") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_GNOME_APPLETS_CFLAGS=`$PKG_CONFIG --cflags "libpanelapplet-2.0 >= 2.0.0 " 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
+-else
+- pkg_failed=untried
+-fi
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$GNOME_APPLETS_LIBS"; then
+- pkg_cv_GNOME_APPLETS_LIBS="$GNOME_APPLETS_LIBS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libpanelapplet-2.0 >= 2.0.0 \"") >&5
+- ($PKG_CONFIG --exists --print-errors "libpanelapplet-2.0 >= 2.0.0 ") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_GNOME_APPLETS_LIBS=`$PKG_CONFIG --libs "libpanelapplet-2.0 >= 2.0.0 " 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
+-else
+- pkg_failed=untried
+-fi
++ fi
+
+
+
+-if test $pkg_failed = yes; then
++ 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 $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
+-else
+- _pkg_short_errors_supported=no
+-fi
+- if test $_pkg_short_errors_supported = yes; then
+- GNOME_APPLETS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libpanelapplet-2.0 >= 2.0.0 "`
+- else
+- GNOME_APPLETS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libpanelapplet-2.0 >= 2.0.0 "`
+- fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$GNOME_APPLETS_PKG_ERRORS" >&5
++ if test $succeeded = yes; then
++ build_gnome_applet=true
++ else
++ build_gnome_applet=false
++ fi
+
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+- build_gnome_applet=false
+-elif test $pkg_failed = untried; then
+- build_gnome_applet=false
+-else
+- GNOME_APPLETS_CFLAGS=$pkg_cv_GNOME_APPLETS_CFLAGS
+- GNOME_APPLETS_LIBS=$pkg_cv_GNOME_APPLETS_LIBS
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
+- build_gnome_applet=true
+-fi
+
+
+
+@@ -24806,19 +23848,20 @@
+ esac
+
+
+-# Check whether --with-realprefix was given.
++# Check whether --with-realprefix or --without-realprefix was given.
+ if test "${with_realprefix+set}" = set; then
+- withval=$with_realprefix; realprefix=${withval}
++ withval="$with_realprefix"
++ realprefix=${withval}
+ else
+ realprefix="none"
+-fi
++fi;
+
+
+
+-
+-# Check whether --enable-manual was given.
++# Check whether --enable-manual or --disable-manual was given.
+ if test "${enable_manual+set}" = set; then
+- enableval=$enable_manual; case "${enableval}" in
++ enableval="$enable_manual"
++ case "${enableval}" in
+ yes) build_manual=yes ;;
+ no) build_manual=false ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-manual" >&5
+@@ -24827,13 +23870,13 @@
+ esac
+ else
+ build_manual=yes
+-fi
++fi;
+
+
+-
+-# Check whether --enable-ipv6 was given.
++# Check whether --enable-ipv6 or --disable-ipv6 was given.
+ if test "${enable_ipv6+set}" = set; then
+- enableval=$enable_ipv6; case "${enableval}" in
++ enableval="$enable_ipv6"
++ case "${enableval}" in
+ yes) ipv6=true;;
+ no) ipv6=false;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-ipv6" >&5
+@@ -24842,17 +23885,17 @@
+ esac
+ else
+ ipv6=true
+-fi
+-
++fi;
+ IPV6_CFLAGS=
+ if test x$ipv6 = xtrue ; then
+ IPV6_CFLAGS=-DINET6
+ fi
+
+
+-# Check whether --enable-truespeech was given.
++# Check whether --enable-truespeech or --disable-truespeech was given.
+ if test "${enable_truespeech+set}" = set; then
+- enableval=$enable_truespeech; case "${enableval}" in
++ enableval="$enable_truespeech"
++ case "${enableval}" in
+ yes) truespeech=true;;
+ no) truespeech=false;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-truespeech" >&5
+@@ -24860,9 +23903,8 @@
+ { (exit 1); exit 1; }; } ;;
+ esac
+ else
+- truespeech=false
+-fi
+-
++ truespeech=false
++fi;
+ TRUESPEECH_CFLAGS=
+ if test x$truespeech = xtrue ; then
+ TRUESPEECH_CFLAGS=-DTRUESPEECH
+@@ -24882,15 +23924,15 @@
+
+
+
+-# Check whether --enable-rsvp was given.
++# Check whether --enable-rsvp or --disable-rsvp was given.
+ if test "${enable_rsvp+set}" = set; then
+- enableval=$enable_rsvp;
++ enableval="$enable_rsvp"
++
+ cat >>confdefs.h <<\_ACEOF
+ #define VINCENT_MAURY_RSVP 1
+ _ACEOF
+
+-fi
+-
++fi;
+
+ if test "x${prefix}" = "xNONE"; then
+ prefix=${ac_default_prefix}
+@@ -24911,7 +23953,7 @@
+
+
+ cat >>confdefs.h <<_ACEOF
+-#define PACKAGE_SOUND_DIR "${prefix}/${DATADIRNAME}/sounds/linphone"
++#define PACKAGE_SOUND_DIR "/mnt/doc/vroot/opt/share/sounds/linphone"
+ _ACEOF
+
+
+@@ -24920,9 +23962,9 @@
+ for ac_func in getifaddrs
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
++echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
++if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -24948,59 +23990,53 @@
+
+ #undef $ac_func
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 $ac_func ();
+ /* 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_$ac_func || defined __stub___$ac_func
++#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+ choke me
++#else
++char (*f) () = $ac_func;
++#endif
++#ifdef __cplusplus
++}
+ #endif
+
+ int
+ main ()
+ {
+-return $ac_func ();
++return f != $ac_func;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -25009,15 +24045,13 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- eval "$as_ac_var=no"
++eval "$as_ac_var=no"
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-ac_res=`eval echo '${'$as_ac_var'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -25030,13 +24064,13 @@
+
+
+
+-# Check whether --with-osip was given.
++# Check whether --with-osip or --without-osip was given.
+ if test "${with_osip+set}" = set; then
+- withval=$with_osip; osip_prefix=${withval}
++ withval="$with_osip"
++ osip_prefix=${withval}
+ else
+ osip_prefix=/usr
+-fi
+-
++fi;
+
+
+
+@@ -25046,17 +24080,17 @@
+ CPPFLAGS_save=$CPPFLAGS
+ CPPFLAGS=$OSIP_CFLAGS
+ if test "${ac_cv_header_osip2_osip_h+set}" = set; then
+- { echo "$as_me:$LINENO: checking for osip2/osip.h" >&5
+-echo $ECHO_N "checking for osip2/osip.h... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for osip2/osip.h" >&5
++echo $ECHO_N "checking for osip2/osip.h... $ECHO_C" >&6
+ if test "${ac_cv_header_osip2_osip_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_header_osip2_osip_h" >&5
+-echo "${ECHO_T}$ac_cv_header_osip2_osip_h" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_header_osip2_osip_h" >&5
++echo "${ECHO_T}$ac_cv_header_osip2_osip_h" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking osip2/osip.h usability" >&5
+-echo $ECHO_N "checking osip2/osip.h usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking osip2/osip.h usability" >&5
++echo $ECHO_N "checking osip2/osip.h usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -25067,36 +24101,24 @@
+ #include <osip2/osip.h>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -25105,16 +24127,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 osip2/osip.h presence" >&5
+-echo $ECHO_N "checking osip2/osip.h presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking osip2/osip.h presence" >&5
++echo $ECHO_N "checking osip2/osip.h presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -25123,13 +24144,8 @@
+ /* end confdefs.h. */
+ #include <osip2/osip.h>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -25153,10 +24169,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -25180,23 +24195,25 @@
+ echo "$as_me: WARNING: osip2/osip.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: osip2/osip.h: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: osip2/osip.h: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for osip2/osip.h" >&5
+-echo $ECHO_N "checking for osip2/osip.h... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for osip2/osip.h" >&5
++echo $ECHO_N "checking for osip2/osip.h... $ECHO_C" >&6
+ if test "${ac_cv_header_osip2_osip_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_cv_header_osip2_osip_h=$ac_header_preproc
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_header_osip2_osip_h" >&5
+-echo "${ECHO_T}$ac_cv_header_osip2_osip_h" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_header_osip2_osip_h" >&5
++echo "${ECHO_T}$ac_cv_header_osip2_osip_h" >&6
+
+ fi
+ if test $ac_cv_header_osip2_osip_h = yes; then
+@@ -25214,8 +24231,8 @@
+ LDFLAGS=$OSIP_LIBS
+ LIBS_save=$LIBS
+
+-{ echo "$as_me:$LINENO: checking for osip_message_init in -losipparser2" >&5
+-echo $ECHO_N "checking for osip_message_init in -losipparser2... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for osip_message_init in -losipparser2" >&5
++echo $ECHO_N "checking for osip_message_init in -losipparser2... $ECHO_C" >&6
+ if test "${ac_cv_lib_osipparser2_osip_message_init+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -25228,52 +24245,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 osip_message_init ();
+ int
+ main ()
+ {
+-return osip_message_init ();
++osip_message_init ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -25282,15 +24287,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_osipparser2_osip_message_init=no
++ac_cv_lib_osipparser2_osip_message_init=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_osipparser2_osip_message_init" >&5
+-echo "${ECHO_T}$ac_cv_lib_osipparser2_osip_message_init" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_osipparser2_osip_message_init" >&5
++echo "${ECHO_T}$ac_cv_lib_osipparser2_osip_message_init" >&6
+ if test $ac_cv_lib_osipparser2_osip_message_init = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_LIBOSIPPARSER2 1
+@@ -25324,19 +24328,18 @@
+ for ac_header in semaphore.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -25347,36 +24350,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -25385,16 +24376,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -25403,13 +24393,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -25433,10 +24418,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -25460,24 +24444,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -25493,19 +24478,18 @@
+ for ac_header in sys/sem.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -25516,36 +24500,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -25554,16 +24526,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -25572,13 +24543,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -25602,10 +24568,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -25629,24 +24594,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -25669,8 +24635,8 @@
+ aix*)
+ ;;
+ osf*)
+- { echo "$as_me:$LINENO: checking for sem_open in -lrt" >&5
+-echo $ECHO_N "checking for sem_open in -lrt... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for sem_open in -lrt" >&5
++echo $ECHO_N "checking for sem_open in -lrt... $ECHO_C" >&6
+ if test "${ac_cv_lib_rt_sem_open+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -25683,52 +24649,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 sem_open ();
+ int
+ main ()
+ {
+-return sem_open ();
++sem_open ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -25737,15 +24691,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_rt_sem_open=no
++ac_cv_lib_rt_sem_open=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_rt_sem_open" >&5
+-echo "${ECHO_T}$ac_cv_lib_rt_sem_open" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_rt_sem_open" >&5
++echo "${ECHO_T}$ac_cv_lib_rt_sem_open" >&6
+ if test $ac_cv_lib_rt_sem_open = yes; then
+ EXOSIP_LIBS="$EXOSIP_LIBS -lrt"
+ fi
+@@ -25760,8 +24713,8 @@
+ ;;
+ esac
+
+-{ echo "$as_me:$LINENO: checking for sem_open in -lposix4" >&5
+-echo $ECHO_N "checking for sem_open in -lposix4... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for sem_open in -lposix4" >&5
++echo $ECHO_N "checking for sem_open in -lposix4... $ECHO_C" >&6
+ if test "${ac_cv_lib_posix4_sem_open+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -25774,52 +24727,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 sem_open ();
+ int
+ main ()
+ {
+-return sem_open ();
++sem_open ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -25828,21 +24769,20 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_posix4_sem_open=no
++ac_cv_lib_posix4_sem_open=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix4_sem_open" >&5
+-echo "${ECHO_T}$ac_cv_lib_posix4_sem_open" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_posix4_sem_open" >&5
++echo "${ECHO_T}$ac_cv_lib_posix4_sem_open" >&6
+ if test $ac_cv_lib_posix4_sem_open = yes; then
+ EXOSIP_LIBS="$EXOSIP_LIBS -lposix4 -mt"
+ fi
+
+-{ echo "$as_me:$LINENO: checking for nis_add in -lnsl" >&5
+-echo $ECHO_N "checking for nis_add in -lnsl... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for nis_add in -lnsl" >&5
++echo $ECHO_N "checking for nis_add in -lnsl... $ECHO_C" >&6
+ if test "${ac_cv_lib_nsl_nis_add+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -25855,52 +24795,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 nis_add ();
+ int
+ main ()
+ {
+-return nis_add ();
++nis_add ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -25909,21 +24837,20 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_nsl_nis_add=no
++ac_cv_lib_nsl_nis_add=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_nis_add" >&5
+-echo "${ECHO_T}$ac_cv_lib_nsl_nis_add" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_nis_add" >&5
++echo "${ECHO_T}$ac_cv_lib_nsl_nis_add" >&6
+ if test $ac_cv_lib_nsl_nis_add = yes; then
+ EXOSIP_LIBS="$EXOSIP_LIBS -lnsl"
+ fi
+
+-{ echo "$as_me:$LINENO: checking for sendto in -lsocket" >&5
+-echo $ECHO_N "checking for sendto in -lsocket... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for sendto in -lsocket" >&5
++echo $ECHO_N "checking for sendto in -lsocket... $ECHO_C" >&6
+ if test "${ac_cv_lib_socket_sendto+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -25936,52 +24863,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 sendto ();
+ int
+ main ()
+ {
+-return sendto ();
++sendto ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -25990,21 +24905,20 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_socket_sendto=no
++ac_cv_lib_socket_sendto=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_sendto" >&5
+-echo "${ECHO_T}$ac_cv_lib_socket_sendto" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_socket_sendto" >&5
++echo "${ECHO_T}$ac_cv_lib_socket_sendto" >&6
+ if test $ac_cv_lib_socket_sendto = yes; then
+ EXOSIP_LIBS="$EXOSIP_LIBS -lsocket"
+ fi
+
+-{ echo "$as_me:$LINENO: checking for clock_gettime in -lrt" >&5
+-echo $ECHO_N "checking for clock_gettime in -lrt... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for clock_gettime in -lrt" >&5
++echo $ECHO_N "checking for clock_gettime in -lrt... $ECHO_C" >&6
+ if test "${ac_cv_lib_rt_clock_gettime+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -26017,52 +24931,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 clock_gettime ();
+ int
+ main ()
+ {
+-return clock_gettime ();
++clock_gettime ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -26071,21 +24973,20 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_rt_clock_gettime=no
++ac_cv_lib_rt_clock_gettime=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_rt_clock_gettime" >&5
+-echo "${ECHO_T}$ac_cv_lib_rt_clock_gettime" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_rt_clock_gettime" >&5
++echo "${ECHO_T}$ac_cv_lib_rt_clock_gettime" >&6
+ if test $ac_cv_lib_rt_clock_gettime = yes; then
+ EXOSIP_LIBS="$EXOSIP_LIBS -lrt"
+ fi
+
+-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
++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
+@@ -26109,36 +25010,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -26147,10 +25036,9 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_header_stdc=no
++ac_cv_header_stdc=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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.
+@@ -26206,7 +25094,6 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ctype.h>
+-#include <stdlib.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+@@ -26226,27 +25113,18 @@
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+- return 2;
+- return 0;
++ exit(2);
++ exit (0);
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>&5
++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'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -26259,14 +25137,12 @@
+ ( exit $ac_status )
+ ac_cv_header_stdc=no
+ fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f 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; }
++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
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -26279,19 +25155,18 @@
+ for ac_header in ctype.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -26302,36 +25177,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -26340,16 +25203,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -26358,13 +25220,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -26388,10 +25245,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -26415,24 +25271,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -26448,19 +25305,18 @@
+ for ac_header in string.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -26471,36 +25327,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -26509,16 +25353,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -26527,13 +25370,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -26557,10 +25395,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -26584,24 +25421,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -26617,19 +25455,18 @@
+ for ac_header in strings.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -26640,36 +25477,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -26678,16 +25503,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -26696,13 +25520,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -26726,10 +25545,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -26753,24 +25571,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -26786,19 +25605,18 @@
+ for ac_header in stdio.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -26809,36 +25627,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -26847,16 +25653,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -26865,13 +25670,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -26895,10 +25695,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -26922,24 +25721,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -26955,19 +25755,18 @@
+ for ac_header in stdlib.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -26978,36 +25777,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -27016,16 +25803,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -27034,13 +25820,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -27064,10 +25845,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -27091,24 +25871,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -27124,19 +25905,18 @@
+ for ac_header in unistd.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -27147,36 +25927,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -27185,16 +25953,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -27203,13 +25970,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -27233,10 +25995,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -27260,24 +26021,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -27293,19 +26055,18 @@
+ for ac_header in stdarg.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -27316,36 +26077,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -27354,16 +26103,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -27372,13 +26120,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -27402,10 +26145,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -27429,24 +26171,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -27462,19 +26205,18 @@
+ for ac_header in varargs.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -27485,36 +26227,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -27523,16 +26253,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -27541,13 +26270,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -27571,10 +26295,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -27598,24 +26321,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -27631,19 +26355,18 @@
+ for ac_header in sys/time.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -27654,36 +26377,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -27692,16 +26403,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -27710,13 +26420,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -27740,10 +26445,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -27767,24 +26471,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -27800,19 +26505,18 @@
+ for ac_header in assert.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -27823,36 +26527,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -27861,16 +26553,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -27879,13 +26570,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -27909,10 +26595,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -27936,24 +26621,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -27969,19 +26655,18 @@
+ for ac_header in signal.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -27992,36 +26677,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -28030,16 +26703,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -28048,13 +26720,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -28078,10 +26745,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -28105,24 +26771,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -28138,19 +26805,18 @@
+ for ac_header in sys/signal.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -28161,36 +26827,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -28199,16 +26853,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -28217,13 +26870,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -28247,10 +26895,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -28274,24 +26921,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -28307,19 +26955,18 @@
+ for ac_header in malloc.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -28330,36 +26977,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -28368,16 +27003,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -28386,13 +27020,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -28416,10 +27045,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -28443,24 +27071,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -28476,19 +27105,18 @@
+ for ac_header in sys/select.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -28499,36 +27127,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -28537,16 +27153,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -28555,13 +27170,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -28585,10 +27195,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -28612,24 +27221,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -28645,19 +27255,18 @@
+ for ac_header in sys/types.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -28668,36 +27277,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -28706,16 +27303,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -28724,13 +27320,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -28754,10 +27345,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -28781,24 +27371,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -28814,19 +27405,18 @@
+ for ac_header in fcntl.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -28837,36 +27427,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -28875,16 +27453,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -28893,13 +27470,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -28923,10 +27495,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -28950,24 +27521,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -28987,13 +27559,13 @@
+
+
+
+-# Check whether --with-readline was given.
++# Check whether --with-readline or --without-readline was given.
+ if test "${with_readline+set}" = set; then
+- withval=$with_readline; readline_prefix=${withval}
++ withval="$with_readline"
++ readline_prefix=${withval}
+ else
+ readline_prefix="/usr"
+-fi
+-
++fi;
+
+ if test "$readline_prefix" != "/usr"; then
+ READLINE_CFLAGS="-I$readline_prefix/include"
+@@ -29009,19 +27581,18 @@
+ for ac_header in readline.h readline/readline.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -29032,36 +27603,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -29070,16 +27629,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -29088,13 +27646,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -29118,10 +27671,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -29145,24 +27697,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -29179,19 +27732,18 @@
+ for ac_header in history.h readline/history.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -29202,36 +27754,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -29240,16 +27780,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -29258,13 +27797,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -29288,10 +27822,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -29315,24 +27848,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- ( cat <<\_ASBOX
++ (
++ cat <<\_ASBOX
+ ## --------------------------------------------- ##
+ ## Report this to linphone-developers@nongnu.org ##
+ ## --------------------------------------------- ##
+ _ASBOX
+- ) | sed "s/^/$as_me: WARNING: /" >&2
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -29345,8 +27879,8 @@
+ done
+
+
+-{ echo "$as_me:$LINENO: checking for readline in -lreadline" >&5
+-echo $ECHO_N "checking for readline in -lreadline... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for readline in -lreadline" >&5
++echo $ECHO_N "checking for readline in -lreadline... $ECHO_C" >&6
+ if test "${ac_cv_lib_readline_readline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -29359,52 +27893,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 readline ();
+ int
+ main ()
+ {
+-return readline ();
++readline ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -29413,15 +27935,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_readline_readline=no
++ac_cv_lib_readline_readline=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_readline_readline" >&5
+-echo "${ECHO_T}$ac_cv_lib_readline_readline" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_readline_readline" >&5
++echo "${ECHO_T}$ac_cv_lib_readline_readline" >&6
+ if test $ac_cv_lib_readline_readline = yes; then
+ readline_libs_found=yes
+ fi
+@@ -29443,8 +27964,8 @@
+
+
+
+-{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+-echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; }
++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
+@@ -29461,8 +27982,7 @@
+ int
+ main ()
+ {
+-#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \
+- && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN)
++#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+ bogus endian macros
+ #endif
+
+@@ -29471,36 +27991,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -29526,36 +28034,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -29564,15 +28060,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_c_bigendian=no
++ac_cv_c_bigendian=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- # It does not; compile a test program.
++# 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
+@@ -29582,11 +28077,11 @@
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+-short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
++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 int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+-short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
++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 ()
+@@ -29597,36 +28092,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -29645,10 +28128,8 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -29656,41 +28137,27 @@
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-$ac_includes_default
+ int
+ main ()
+ {
+-
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+- long int l;
+- char c[sizeof (long int)];
++ long l;
++ char c[sizeof (long)];
+ } u;
+ u.l = 1;
+- return u.c[sizeof (long int) - 1] == 1;
+-
+- ;
+- return 0;
++ exit (u.c[sizeof (long) - 1] == 1);
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>&5
++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'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -29703,16 +28170,13 @@
+ ( exit $ac_status )
+ ac_cv_c_bigendian=yes
+ fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
+-
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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; }
++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)
+
+@@ -29732,121 +28196,109 @@
+
+
+
+-pkg_failed=no
+-{ echo "$as_me:$LINENO: checking for SPEEX" >&5
+-echo $ECHO_N "checking for SPEEX... $ECHO_C" >&6; }
++ succeeded=no
+
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$SPEEX_CFLAGS"; then
+- pkg_cv_SPEEX_CFLAGS="$SPEEX_CFLAGS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"speex >= 1.1.6\"") >&5
+- ($PKG_CONFIG --exists --print-errors "speex >= 1.1.6") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_SPEEX_CFLAGS=`$PKG_CONFIG --cflags "speex >= 1.1.6" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
++ if test -z "$PKG_CONFIG"; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- pkg_failed=untried
++ case $PKG_CONFIG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
++ ;;
++ *)
++ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
++ ;;
++esac
+ fi
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++
+ if test -n "$PKG_CONFIG"; then
+- if test -n "$SPEEX_LIBS"; then
+- pkg_cv_SPEEX_LIBS="$SPEEX_LIBS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"speex >= 1.1.6\"") >&5
+- ($PKG_CONFIG --exists --print-errors "speex >= 1.1.6") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_SPEEX_LIBS=`$PKG_CONFIG --libs "speex >= 1.1.6" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
+ else
+- pkg_failed=untried
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
++ fi
+
+-
+-if test $pkg_failed = yes; then
+-
+-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
+-else
+- _pkg_short_errors_supported=no
+-fi
+- if test $_pkg_short_errors_supported = yes; then
+- SPEEX_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "speex >= 1.1.6"`
++ 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
++ echo "$as_me:$LINENO: checking for speex >= 1.1.6" >&5
++echo $ECHO_N "checking for speex >= 1.1.6... $ECHO_C" >&6
++
++ if $PKG_CONFIG --exists "speex >= 1.1.6" ; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ succeeded=yes
++
++ echo "$as_me:$LINENO: checking SPEEX_CFLAGS" >&5
++echo $ECHO_N "checking SPEEX_CFLAGS... $ECHO_C" >&6
++ SPEEX_CFLAGS=`$PKG_CONFIG --cflags "speex >= 1.1.6"`
++ echo "$as_me:$LINENO: result: $SPEEX_CFLAGS" >&5
++echo "${ECHO_T}$SPEEX_CFLAGS" >&6
++
++ echo "$as_me:$LINENO: checking SPEEX_LIBS" >&5
++echo $ECHO_N "checking SPEEX_LIBS... $ECHO_C" >&6
++ SPEEX_LIBS=`$PKG_CONFIG --libs "speex >= 1.1.6"`
++ echo "$as_me:$LINENO: result: $SPEEX_LIBS" >&5
++echo "${ECHO_T}$SPEEX_LIBS" >&6
+ else
+- SPEEX_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "speex >= 1.1.6"`
++ SPEEX_CFLAGS=""
++ SPEEX_LIBS=""
++ ## If we have a custom action on failure, don't print errors, but
++ ## do set a variable so people can do so.
++ SPEEX_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "speex >= 1.1.6"`
++ echo $SPEEX_PKG_ERRORS
+ fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$SPEEX_PKG_ERRORS" >&5
+-
+- { { echo "$as_me:$LINENO: error: Package requirements (speex >= 1.1.6) were not met:
+-
+-$SPEEX_PKG_ERRORS
+-
+-Consider adjusting the PKG_CONFIG_PATH environment variable if you
+-installed software in a non-standard prefix.
+
+-Alternatively, you may set the environment variables SPEEX_CFLAGS
+-and SPEEX_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details.
+-" >&5
+-echo "$as_me: error: Package requirements (speex >= 1.1.6) were not met:
+
+-$SPEEX_PKG_ERRORS
+
+-Consider adjusting the PKG_CONFIG_PATH environment variable if you
+-installed software in a non-standard prefix.
++ 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
+
+-Alternatively, you may set the environment variables SPEEX_CFLAGS
+-and SPEEX_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details.
+-" >&2;}
++ if test $succeeded = yes; then
++ build_speex=yes
++ else
++ { { echo "$as_me:$LINENO: error: Library requirements (speex >= 1.1.6) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5
++echo "$as_me: error: Library requirements (speex >= 1.1.6) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;}
+ { (exit 1); exit 1; }; }
+-elif test $pkg_failed = untried; then
+- { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it
+-is in your PATH or set the PKG_CONFIG environment variable to the full
+-path to pkg-config.
+-
+-Alternatively, you may set the environment variables SPEEX_CFLAGS
+-and SPEEX_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details.
+-
+-To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it
+-is in your PATH or set the PKG_CONFIG environment variable to the full
+-path to pkg-config.
+-
+-Alternatively, you may set the environment variables SPEEX_CFLAGS
+-and SPEEX_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details.
++ fi
+
+-To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+-See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
+-else
+- SPEEX_CFLAGS=$pkg_cv_SPEEX_CFLAGS
+- SPEEX_LIBS=$pkg_cv_SPEEX_LIBS
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
+- build_speex=yes
+-fi
+
+
+-# Check whether --enable-video was given.
++# Check whether --enable-video or --disable-video was given.
+ if test "${enable_video+set}" = set; then
+- enableval=$enable_video; case "${enableval}" in
++ enableval="$enable_video"
++ case "${enableval}" in
+ yes) video=true ;;
+ no) video=false ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-video" >&5
+@@ -29855,26 +28307,25 @@
+ esac
+ else
+ video=true
+-fi
++fi;
+
+
+-
+-# Check whether --with-ffmpeg was given.
++# Check whether --with-ffmpeg or --without-ffmpeg was given.
+ if test "${with_ffmpeg+set}" = set; then
+- withval=$with_ffmpeg; ffmpegdir=${withval}
++ withval="$with_ffmpeg"
++ ffmpegdir=${withval}
+ else
+ ffmpegdir=/usr
+-fi
++fi;
+
+
+-
+-# Check whether --with-sdl was given.
++# Check whether --with-sdl or --without-sdl was given.
+ if test "${with_sdl+set}" = set; then
+- withval=$with_sdl; libsdldir=${withval}
++ withval="$with_sdl"
++ libsdldir=${withval}
+ else
+ libsdldir=/usr
+-fi
+-
++fi;
+
+ if test "$video" = "true"; then
+
+@@ -29933,15 +28384,15 @@
+ ##################################################
+
+
+-# Check whether --enable-strict was given.
++# Check whether --enable-strict or --disable-strict was given.
+ if test "${enable_strict+set}" = set; then
+- enableval=$enable_strict;
++ enableval="$enable_strict"
++
+ strictness="${enableval}"
+ else
+ strictness=yes
+
+-fi
+-
++fi;
+
+ if test "$GCC$strictness" = "yesyes" ; then
+ STRICT_OPTIONS="-Wall -Wp,-D_FORTIFY_SOURCE=2"
+@@ -29951,13 +28402,15 @@
+
+
+
+-subdirs="$subdirs oRTP mediastreamer2"
++
++
++subdirs="$subdirs oRTP mediastreamer2 "
+
+
+ # Extract the first word of "db2html", so it can be a program name with args.
+ set dummy db2html; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_have_db2html+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -29970,30 +28423,28 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_have_db2html="yes"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ test -z "$ac_cv_prog_have_db2html" && ac_cv_prog_have_db2html="no"
+ fi
+ fi
+ have_db2html=$ac_cv_prog_have_db2html
+ if test -n "$have_db2html"; then
+- { echo "$as_me:$LINENO: result: $have_db2html" >&5
+-echo "${ECHO_T}$have_db2html" >&6; }
++ echo "$as_me:$LINENO: result: $have_db2html" >&5
++echo "${ECHO_T}$have_db2html" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+
+
+-
+ if test x$have_db2html$build_manual = xyesyes ; then
+ ENABLE_MANUAL_TRUE=
+ ENABLE_MANUAL_FALSE='#'
+@@ -30020,8 +28471,7 @@
+ ORTP_VERSION=`grep -E ^[AC]+_INIT ${top_srcdir}/oRTP/configure.ac | sed -e 's:^.*_INIT(.*,\[\(.*\)\]):\1:g'`
+
+
+-ac_config_files="$ac_config_files Makefile m4/Makefile po/Makefile.in pixmaps/Makefile ipkg/Makefile ipkg/linphone.control exosip/Makefile media_api/Makefile gsmlib/Makefile coreapi/Makefile gnome/Makefile console/Makefile share/Makefile share/C/Makefile share/fr/Makefile share/it/Makefile share/ja/Makefile share/cs/Makefile share/linphone.pc linphone.spec"
+-
++ ac_config_files="$ac_config_files Makefile m4/Makefile po/Makefile.in pixmaps/Makefile ipkg/Makefile ipkg/linphone.control exosip/Makefile media_api/Makefile gsmlib/Makefile coreapi/Makefile gnome/Makefile console/Makefile share/Makefile share/C/Makefile share/fr/Makefile share/it/Makefile share/ja/Makefile share/cs/Makefile share/linphone.pc linphone.spec"
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+@@ -30040,58 +28490,39 @@
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, we kill variables containing newlines.
++# 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.
+-(
+- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+- eval ac_val=\$$ac_var
+- case $ac_val in #(
+- *${as_nl}*)
+- case $ac_var in #(
+- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+- esac
+- case $ac_var in #(
+- _ | IFS | as_nl) ;; #(
+- *) $as_unset $ac_var ;;
+- esac ;;
+- esac
+- done
+-
++{
+ (set) 2>&1 |
+- case $as_nl`(ac_space=' '; set) 2>&1` in #(
+- *${as_nl}ac_space=\ *)
++ 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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
++ sed -n \
++ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+- esac |
+- sort
+-) |
++ esac;
++} |
+ sed '
+- /^ac_cv_env_/b end
+ t clear
+- :clear
++ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- :end' >>confcache
+-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+- if test -w "$cache_file"; then
+- test "x$cache_file" != "x/dev/null" &&
+- { echo "$as_me:$LINENO: updating cache $cache_file" >&5
+-echo "$as_me: updating cache $cache_file" >&6;}
++ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ : end' >>confcache
++if diff $cache_file confcache >/dev/null 2>&1; then :; else
++ if test -w $cache_file; then
++ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+- { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+-echo "$as_me: not updating unwritable cache $cache_file" >&6;}
++ echo "not updating unwritable cache $cache_file"
+ fi
+ fi
+ rm -f confcache
+@@ -30100,18 +28531,32 @@
+ # 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).
++if test "x$srcdir" = x.; then
++ ac_vpsub='/^[ ]*VPATH[ ]*=/{
++s/:*\$(srcdir):*/:/;
++s/:*\${srcdir}:*/:/;
++s/:*@srcdir@:*/:/;
++s/^\([^=]*=[ ]*\):*/\1/;
++s/:*$//;
++s/^[^=]*=[ ]*$//;
++}'
++fi
++
+ DEFS=-DHAVE_CONFIG_H
+
+ 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_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+- ac_i=`echo "$ac_i" | sed "$ac_script"`
+- # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+- # will be set to the directory where LIBOBJS objects are built.
+- ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+- ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
++ 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
+
+@@ -30147,7 +28592,10 @@
+ { (exit 1); exit 1; }; }
+ fi
+
+- ac_config_commands="$ac_config_commands po/stamp-it"
++
++ mv -f po/POTFILES po/POTFILES.tmp
++ sed -e '/\[encoding.*\]/d' -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
++ rm -f po/POTFILES.tmp
+
+
+ if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+@@ -30230,35 +28678,11 @@
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+- setopt NO_GLOB_SUBST
+-else
+- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
++elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
++ set -o posix
+ fi
+-BIN_SH=xpg4; export BIN_SH # for Tru64
+ DUALCASE=1; export DUALCASE # for MKS sh
+
+-
+-# PATH needs CR
+-# 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
+-
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+@@ -30267,43 +28691,8 @@
+ fi
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order. Quoting is
+-# there to prevent editors from complaining about space-tab.
+-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+-# splitting by setting IFS to empty value.)
+-as_nl='
+-'
+-IFS=" "" $as_nl"
+-
+-# Find who we are. Look in the path if we contain no directory separator.
+-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
+-IFS=$as_save_IFS
+-
+- ;;
+-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_myself: error: cannot find myself; rerun with an absolute file name" >&2
+- { (exit 1); exit 1; }
+-fi
+-
+ # Work around bugs in pre-3.0 UWIN ksh.
+-for as_var in ENV MAIL MAILPATH
+-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+-done
++$as_unset ENV MAIL MAILPATH
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -30317,19 +28706,18 @@
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++ $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1 &&
+- test "X`expr 00001 : '.*\(...\)'`" = X001; then
++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
++if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -30337,120 +28725,159 @@
+
+
+ # Name of the executable.
+-as_me=`$as_basename -- "$0" ||
++as_me=`$as_basename "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
++ X"$0" : 'X\(/\)$' \| \
++ . : '\(.\)' 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{
+- s//\1/
+- q
+- }
+- /^X\/\(\/\/\)$/{
+- s//\1/
+- q
+- }
+- /^X\/\(\/\).*/{
+- s//\1/
+- q
+- }
+- s/.*/./; q'`
++ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
++ /^X\/\(\/\/\)$/{ s//\1/; q; }
++ /^X\/\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+
+-# CDPATH.
+-$as_unset CDPATH
++
++# 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:$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`expr $as_lineno_1 + 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 after each line using $LINENO; the second 'sed'
+- # does the real work. The second script uses 'N' to pair each
+- # line-number line with the line containing $LINENO, and appends
+- # trailing '-' during substitution so that $LINENO is not a special
+- # case at line end.
++ # 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
+- # scripts with optimization help from Paolo Bonzini. Blame Lee
+- # E. McMahon (1931-1989) for sed's syntax. :-)
+- sed -n '
+- p
+- /[$]LINENO/=
+- ' <$as_myself |
++ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
++ sed '=' <$as_myself |
+ sed '
+- s/[$]LINENO.*/&-/
+- t lineno
+- b
+- :lineno
+ N
+- :loop
+- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
++ s,$,-,
++ : loop
++ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+- s/-\n.*//
++ 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
++ 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 sensitive to this).
+- . "./$as_me.lineno"
++ # original and so on. Autoconf is especially sensible to this).
++ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+- as_dirname=dirname
+-else
+- as_dirname=false
+-fi
+-
+-ECHO_C= ECHO_N= ECHO_T=
+-case `echo -n x` in
+--n*)
+- case `echo 'x\c'` in
+- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+- *) ECHO_C='\c';;
+- esac;;
+-*)
+- ECHO_N='-n';;
++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 &&
+- test "X`expr 00001 : '.*\(...\)'`" = X001; then
++if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
+-if test -d conf$$.dir; then
+- rm -f conf$$.dir/conf$$.file
+-else
+- rm -f conf$$.dir
+- mkdir conf$$.dir
+-fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- as_ln_s='ln -s'
+- # ... but there are two gotchas:
+- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+- # In both cases, we have to default to `cp -p'.
+- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
++ # 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$$.dir/conf$$.file conf$$.file
+-rmdir conf$$.dir 2>/dev/null
++rm -f conf$$ conf$$.exe conf$$.file
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -30459,19 +28886,7 @@
+ as_mkdir_p=false
+ fi
+
+-# Find out whether ``test -x'' works. Don't use a zero-byte file, as
+-# systems may use methods other than mode bits to determine executability.
+-cat >conf$$.file <<_ASEOF
+-#! /bin/sh
+-exit 0
+-_ASEOF
+-chmod +x conf$$.file
+-if test -x conf$$.file >/dev/null 2>&1; then
+- as_executable_p="test -x"
+-else
+- as_executable_p=:
+-fi
+-rm -f conf$$.file
++as_executable_p="test -f"
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -30480,14 +28895,31 @@
+ as_tr_sh="eval 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
+
+-# Save the log message, to keep $[0] and so on meaningful, and to
++# 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.
+-ac_log="
++# 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 linphone $as_me 1.5.0, which was
+-generated by GNU Autoconf 2.60a. Invocation command line was
++generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+@@ -30495,20 +28927,30 @@
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+-on `(hostname || uname -n) 2>/dev/null | sed 1q`
+-"
+-
++_CSEOF
++echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
++echo >&5
+ _ACEOF
+
+-cat >>$CONFIG_STATUS <<_ACEOF
+ # Files that config.status was made for.
+-config_files="$ac_config_files"
+-config_headers="$ac_config_headers"
+-config_commands="$ac_config_commands"
++if test -n "$ac_config_files"; then
++ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
++fi
+
+-_ACEOF
++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.
+@@ -30516,7 +28958,7 @@
+ Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+- -V, --version print version number and configuration settings, 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
+@@ -30535,21 +28977,19 @@
+ $config_commands
+
+ Report bugs to <bug-autoconf@gnu.org>."
+-
+ _ACEOF
++
+ cat >>$CONFIG_STATUS <<_ACEOF
+ ac_cs_version="\\
+ linphone config.status 1.5.0
+-configured by $0, generated by GNU Autoconf 2.60a,
+- with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
++configured by $0, generated by GNU Autoconf 2.59,
++ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+-Copyright (C) 2006 Free Software Foundation, Inc.
++Copyright (C) 2003 Free Software Foundation, Inc.
+ This config.status script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it."
+-
+-ac_pwd='$ac_pwd'
+-srcdir='$srcdir'
+-INSTALL='$INSTALL'
++srcdir=$srcdir
++INSTALL="$INSTALL"
+ _ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+@@ -30560,24 +29000,39 @@
+ do
+ case $1 in
+ --*=*)
+- ac_option=`expr "X$1" : 'X\([^=]*\)='`
+- ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
++ 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 | --versio | --versi | --vers | --ver | --ve | --v | -V )
+- echo "$ac_cs_version"; exit ;;
+- --debug | --debu | --deb | --de | --d | -d )
++ --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
+@@ -30587,24 +29042,18 @@
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+- --he | --h)
+- # Conflict between --help and --header
+- { 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 ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+- -*) { echo "$as_me: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&2
++ -*) { { 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"
+- ac_need_defaults=false ;;
++ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+@@ -30618,36 +29067,21 @@
+ fi
+
+ _ACEOF
+-cat >>$CONFIG_STATUS <<_ACEOF
+-if \$ac_cs_recheck; then
+- echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+- CONFIG_SHELL=$SHELL
+- export CONFIG_SHELL
+- exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+-fi
+-
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-exec 5>>config.log
+-{
+- echo
+- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+-## Running $as_me. ##
+-_ASBOX
+- echo "$ac_log"
+-} >&5
++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
+
+ _ACEOF
++
+ cat >>$CONFIG_STATUS <<_ACEOF
+ #
+-# INIT-COMMANDS
++# INIT-COMMANDS section.
+ #
++
+ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+-INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir='${ac_aux_dir}'
+-prefix="$prefix" exec_prefix="$exec_prefix" INTLTOOL_LIBDIR="$libdir"
+-INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' INTLTOOL_ICONV='${INTLTOOL_ICONV}'
+-INTLTOOL_MSGFMT='${INTLTOOL_MSGFMT}' INTLTOOL_MSGMERGE='${INTLTOOL_MSGMERGE}'
+-INTLTOOL_XGETTEXT='${INTLTOOL_XGETTEXT}'
++INTLTOOL_PERL=${INTLTOOL_PERL} ac_aux_dir=${ac_aux_dir}
+ # Capture the value of obsolete ALL_LINGUAS because we need it to compute
+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+ # from automake.
+@@ -30658,45 +29092,43 @@
+
+ _ACEOF
+
+-cat >>$CONFIG_STATUS <<\_ACEOF
+
+-# Handling of arguments.
++
++cat >>$CONFIG_STATUS <<\_ACEOF
+ for ac_config_target in $ac_config_targets
+ do
+- case $ac_config_target in
+- "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+- "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+- "intltool") CONFIG_COMMANDS="$CONFIG_COMMANDS intltool" ;;
+- "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+- "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+- "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;;
+- "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+- "pixmaps/Makefile") CONFIG_FILES="$CONFIG_FILES pixmaps/Makefile" ;;
+- "ipkg/Makefile") CONFIG_FILES="$CONFIG_FILES ipkg/Makefile" ;;
+- "ipkg/linphone.control") CONFIG_FILES="$CONFIG_FILES ipkg/linphone.control" ;;
+- "exosip/Makefile") CONFIG_FILES="$CONFIG_FILES exosip/Makefile" ;;
+- "media_api/Makefile") CONFIG_FILES="$CONFIG_FILES media_api/Makefile" ;;
+- "gsmlib/Makefile") CONFIG_FILES="$CONFIG_FILES gsmlib/Makefile" ;;
+- "coreapi/Makefile") CONFIG_FILES="$CONFIG_FILES coreapi/Makefile" ;;
+- "gnome/Makefile") CONFIG_FILES="$CONFIG_FILES gnome/Makefile" ;;
+- "console/Makefile") CONFIG_FILES="$CONFIG_FILES console/Makefile" ;;
+- "share/Makefile") CONFIG_FILES="$CONFIG_FILES share/Makefile" ;;
+- "share/C/Makefile") CONFIG_FILES="$CONFIG_FILES share/C/Makefile" ;;
+- "share/fr/Makefile") CONFIG_FILES="$CONFIG_FILES share/fr/Makefile" ;;
+- "share/it/Makefile") CONFIG_FILES="$CONFIG_FILES share/it/Makefile" ;;
+- "share/ja/Makefile") CONFIG_FILES="$CONFIG_FILES share/ja/Makefile" ;;
+- "share/cs/Makefile") CONFIG_FILES="$CONFIG_FILES share/cs/Makefile" ;;
+- "share/linphone.pc") CONFIG_FILES="$CONFIG_FILES share/linphone.pc" ;;
+- "linphone.spec") CONFIG_FILES="$CONFIG_FILES linphone.spec" ;;
+- "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;;
+-
++ case "$ac_config_target" in
++ # Handling of arguments.
++ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
++ "m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;;
++ "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
++ "pixmaps/Makefile" ) CONFIG_FILES="$CONFIG_FILES pixmaps/Makefile" ;;
++ "ipkg/Makefile" ) CONFIG_FILES="$CONFIG_FILES ipkg/Makefile" ;;
++ "ipkg/linphone.control" ) CONFIG_FILES="$CONFIG_FILES ipkg/linphone.control" ;;
++ "exosip/Makefile" ) CONFIG_FILES="$CONFIG_FILES exosip/Makefile" ;;
++ "media_api/Makefile" ) CONFIG_FILES="$CONFIG_FILES media_api/Makefile" ;;
++ "gsmlib/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsmlib/Makefile" ;;
++ "coreapi/Makefile" ) CONFIG_FILES="$CONFIG_FILES coreapi/Makefile" ;;
++ "gnome/Makefile" ) CONFIG_FILES="$CONFIG_FILES gnome/Makefile" ;;
++ "console/Makefile" ) CONFIG_FILES="$CONFIG_FILES console/Makefile" ;;
++ "share/Makefile" ) CONFIG_FILES="$CONFIG_FILES share/Makefile" ;;
++ "share/C/Makefile" ) CONFIG_FILES="$CONFIG_FILES share/C/Makefile" ;;
++ "share/fr/Makefile" ) CONFIG_FILES="$CONFIG_FILES share/fr/Makefile" ;;
++ "share/it/Makefile" ) CONFIG_FILES="$CONFIG_FILES share/it/Makefile" ;;
++ "share/ja/Makefile" ) CONFIG_FILES="$CONFIG_FILES share/ja/Makefile" ;;
++ "share/cs/Makefile" ) CONFIG_FILES="$CONFIG_FILES share/cs/Makefile" ;;
++ "share/linphone.pc" ) CONFIG_FILES="$CONFIG_FILES share/linphone.pc" ;;
++ "linphone.spec" ) CONFIG_FILES="$CONFIG_FILES linphone.spec" ;;
++ "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
++ "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
++ "default-2" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;;
++ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ *) { { 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; }; };;
+ 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
+@@ -30708,538 +29140,425 @@
+ fi
+
+ # Have a temporary directory for convenience. Make it in the build tree
+-# simply because there is no reason against having it here, and in addition,
++# simply because there is no reason to put it here, and in addition,
+ # creating and moving files from /tmp can sometimes cause problems.
+-# Hook for its removal unless debugging.
+-# Note that there is a small window in which the directory will not be cleaned:
+-# after its creation but before its name has been assigned to `$tmp'.
++# Create a temporary directory, and hook for its removal unless debugging.
+ $debug ||
+ {
+- tmp=
+- trap 'exit_status=$?
+- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+-' 0
++ 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 "./confXXXXXX") 2>/dev/null` &&
++ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+ } ||
+ {
+- tmp=./conf$$-$RANDOM
+- (umask 077 && mkdir "$tmp")
++ tmp=./confstat$$-$RANDOM
++ (umask 077 && mkdir $tmp)
+ } ||
+ {
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+ }
+
+-#
+-# Set up the sed scripts for 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
+-
+-_ACEOF
+-
+-
+-
+-ac_delim='%!_!# '
+-for ac_last_try in false false false false false :; do
+- cat >conf$$subs.sed <<_ACEOF
+-SHELL!$SHELL$ac_delim
+-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
+-PACKAGE_NAME!$PACKAGE_NAME$ac_delim
+-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
+-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
+-PACKAGE_STRING!$PACKAGE_STRING$ac_delim
+-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
+-exec_prefix!$exec_prefix$ac_delim
+-prefix!$prefix$ac_delim
+-program_transform_name!$program_transform_name$ac_delim
+-bindir!$bindir$ac_delim
+-sbindir!$sbindir$ac_delim
+-libexecdir!$libexecdir$ac_delim
+-datarootdir!$datarootdir$ac_delim
+-datadir!$datadir$ac_delim
+-sysconfdir!$sysconfdir$ac_delim
+-sharedstatedir!$sharedstatedir$ac_delim
+-localstatedir!$localstatedir$ac_delim
+-includedir!$includedir$ac_delim
+-oldincludedir!$oldincludedir$ac_delim
+-docdir!$docdir$ac_delim
+-infodir!$infodir$ac_delim
+-htmldir!$htmldir$ac_delim
+-dvidir!$dvidir$ac_delim
+-pdfdir!$pdfdir$ac_delim
+-psdir!$psdir$ac_delim
+-libdir!$libdir$ac_delim
+-localedir!$localedir$ac_delim
+-mandir!$mandir$ac_delim
+-DEFS!$DEFS$ac_delim
+-ECHO_C!$ECHO_C$ac_delim
+-ECHO_N!$ECHO_N$ac_delim
+-ECHO_T!$ECHO_T$ac_delim
+-LIBS!$LIBS$ac_delim
+-build_alias!$build_alias$ac_delim
+-host_alias!$host_alias$ac_delim
+-target_alias!$target_alias$ac_delim
+-LIBLINPHONE_SO_VERSION!$LIBLINPHONE_SO_VERSION$ac_delim
+-LINPHONE_VERSION!$LINPHONE_VERSION$ac_delim
+-INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
+-INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
+-INSTALL_DATA!$INSTALL_DATA$ac_delim
+-CYGPATH_W!$CYGPATH_W$ac_delim
+-PACKAGE!$PACKAGE$ac_delim
+-VERSION!$VERSION$ac_delim
+-ACLOCAL!$ACLOCAL$ac_delim
+-AUTOCONF!$AUTOCONF$ac_delim
+-AUTOMAKE!$AUTOMAKE$ac_delim
+-AUTOHEADER!$AUTOHEADER$ac_delim
+-MAKEINFO!$MAKEINFO$ac_delim
+-install_sh!$install_sh$ac_delim
+-STRIP!$STRIP$ac_delim
+-INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
+-mkdir_p!$mkdir_p$ac_delim
+-AWK!$AWK$ac_delim
+-SET_MAKE!$SET_MAKE$ac_delim
+-am__leading_dot!$am__leading_dot$ac_delim
+-AMTAR!$AMTAR$ac_delim
+-am__tar!$am__tar$ac_delim
+-am__untar!$am__untar$ac_delim
+-CC!$CC$ac_delim
+-CFLAGS!$CFLAGS$ac_delim
+-LDFLAGS!$LDFLAGS$ac_delim
+-CPPFLAGS!$CPPFLAGS$ac_delim
+-ac_ct_CC!$ac_ct_CC$ac_delim
+-EXEEXT!$EXEEXT$ac_delim
+-OBJEXT!$OBJEXT$ac_delim
+-DEPDIR!$DEPDIR$ac_delim
+-am__include!$am__include$ac_delim
+-am__quote!$am__quote$ac_delim
+-AMDEP_TRUE!$AMDEP_TRUE$ac_delim
+-AMDEP_FALSE!$AMDEP_FALSE$ac_delim
+-AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
+-CCDEPMODE!$CCDEPMODE$ac_delim
+-am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
+-am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
+-CPP!$CPP$ac_delim
+-GREP!$GREP$ac_delim
+-EGREP!$EGREP$ac_delim
+-INTLTOOL_DESKTOP_RULE!$INTLTOOL_DESKTOP_RULE$ac_delim
+-INTLTOOL_DIRECTORY_RULE!$INTLTOOL_DIRECTORY_RULE$ac_delim
+-INTLTOOL_KEYS_RULE!$INTLTOOL_KEYS_RULE$ac_delim
+-INTLTOOL_PROP_RULE!$INTLTOOL_PROP_RULE$ac_delim
+-INTLTOOL_OAF_RULE!$INTLTOOL_OAF_RULE$ac_delim
+-INTLTOOL_PONG_RULE!$INTLTOOL_PONG_RULE$ac_delim
+-INTLTOOL_SERVER_RULE!$INTLTOOL_SERVER_RULE$ac_delim
+-INTLTOOL_SHEET_RULE!$INTLTOOL_SHEET_RULE$ac_delim
+-INTLTOOL_SOUNDLIST_RULE!$INTLTOOL_SOUNDLIST_RULE$ac_delim
+-INTLTOOL_UI_RULE!$INTLTOOL_UI_RULE$ac_delim
+-INTLTOOL_XAM_RULE!$INTLTOOL_XAM_RULE$ac_delim
+-INTLTOOL_KBD_RULE!$INTLTOOL_KBD_RULE$ac_delim
+-INTLTOOL_XML_RULE!$INTLTOOL_XML_RULE$ac_delim
+-INTLTOOL_XML_NOMERGE_RULE!$INTLTOOL_XML_NOMERGE_RULE$ac_delim
+-INTLTOOL_CAVES_RULE!$INTLTOOL_CAVES_RULE$ac_delim
+-INTLTOOL_SCHEMAS_RULE!$INTLTOOL_SCHEMAS_RULE$ac_delim
+-INTLTOOL_THEME_RULE!$INTLTOOL_THEME_RULE$ac_delim
+-INTLTOOL_SERVICE_RULE!$INTLTOOL_SERVICE_RULE$ac_delim
+ _ACEOF
+
+- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
+- break
+- elif $ac_last_try; then
+- { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+- { (exit 1); exit 1; }; }
+- else
+- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+- fi
+-done
+-
+-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+-if test -n "$ac_eof"; then
+- ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+- ac_eof=`expr $ac_eof + 1`
+-fi
+-
+-cat >>$CONFIG_STATUS <<_ACEOF
+-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
+-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-_ACEOF
+-sed '
+-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+-s/^/s,@/; s/!/@,|#_!!_#|/
+-:n
+-t n
+-s/'"$ac_delim"'$/,g/; t
+-s/$/\\/; p
+-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+-' >>$CONFIG_STATUS <conf$$subs.sed
+-rm -f conf$$subs.sed
+ cat >>$CONFIG_STATUS <<_ACEOF
+-CEOF$ac_eof
+-_ACEOF
+-
+
+-ac_delim='%!_!# '
+-for ac_last_try in false false false false false :; do
+- cat >conf$$subs.sed <<_ACEOF
+-INTLTOOL_EXTRACT!$INTLTOOL_EXTRACT$ac_delim
+-INTLTOOL_MERGE!$INTLTOOL_MERGE$ac_delim
+-INTLTOOL_UPDATE!$INTLTOOL_UPDATE$ac_delim
+-INTLTOOL_PERL!$INTLTOOL_PERL$ac_delim
+-INTLTOOL_ICONV!$INTLTOOL_ICONV$ac_delim
+-INTLTOOL_MSGFMT!$INTLTOOL_MSGFMT$ac_delim
+-INTLTOOL_MSGMERGE!$INTLTOOL_MSGMERGE$ac_delim
+-INTLTOOL_XGETTEXT!$INTLTOOL_XGETTEXT$ac_delim
+-ALL_LINGUAS!$ALL_LINGUAS$ac_delim
+-build!$build$ac_delim
+-build_cpu!$build_cpu$ac_delim
+-build_vendor!$build_vendor$ac_delim
+-build_os!$build_os$ac_delim
+-host!$host$ac_delim
+-host_cpu!$host_cpu$ac_delim
+-host_vendor!$host_vendor$ac_delim
+-host_os!$host_os$ac_delim
+-LN_S!$LN_S$ac_delim
+-ECHO!$ECHO$ac_delim
+-AR!$AR$ac_delim
+-RANLIB!$RANLIB$ac_delim
+-CXX!$CXX$ac_delim
+-CXXFLAGS!$CXXFLAGS$ac_delim
+-ac_ct_CXX!$ac_ct_CXX$ac_delim
+-CXXDEPMODE!$CXXDEPMODE$ac_delim
+-am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim
+-am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim
+-CXXCPP!$CXXCPP$ac_delim
+-F77!$F77$ac_delim
+-FFLAGS!$FFLAGS$ac_delim
+-ac_ct_F77!$ac_ct_F77$ac_delim
+-LIBTOOL!$LIBTOOL$ac_delim
+-MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim
+-USE_NLS!$USE_NLS$ac_delim
+-MSGFMT!$MSGFMT$ac_delim
+-GMSGFMT!$GMSGFMT$ac_delim
+-XGETTEXT!$XGETTEXT$ac_delim
+-MSGMERGE!$MSGMERGE$ac_delim
+-INTL_MACOSX_LIBS!$INTL_MACOSX_LIBS$ac_delim
+-LIBICONV!$LIBICONV$ac_delim
+-LTLIBICONV!$LTLIBICONV$ac_delim
+-INTLLIBS!$INTLLIBS$ac_delim
+-LIBINTL!$LIBINTL$ac_delim
+-LTLIBINTL!$LTLIBINTL$ac_delim
+-POSUB!$POSUB$ac_delim
+-GETTEXT_PACKAGE!$GETTEXT_PACKAGE$ac_delim
+-PKG_CONFIG!$PKG_CONFIG$ac_delim
+-LIBGNOMEUI_CFLAGS!$LIBGNOMEUI_CFLAGS$ac_delim
+-LIBGNOMEUI_LIBS!$LIBGNOMEUI_LIBS$ac_delim
+-LIBGNOME_CFLAGS!$LIBGNOME_CFLAGS$ac_delim
+-LIBGNOME_LIBS!$LIBGNOME_LIBS$ac_delim
+-LIBGTK_CFLAGS!$LIBGTK_CFLAGS$ac_delim
+-LIBGTK_LIBS!$LIBGTK_LIBS$ac_delim
+-GNOME_APPLETS_CFLAGS!$GNOME_APPLETS_CFLAGS$ac_delim
+-GNOME_APPLETS_LIBS!$GNOME_APPLETS_LIBS$ac_delim
+-IPV6_CFLAGS!$IPV6_CFLAGS$ac_delim
+-TRUESPEECH_CFLAGS!$TRUESPEECH_CFLAGS$ac_delim
+-BUILD_TRUESPEECH_TRUE!$BUILD_TRUESPEECH_TRUE$ac_delim
+-BUILD_TRUESPEECH_FALSE!$BUILD_TRUESPEECH_FALSE$ac_delim
+-osip_prefix!$osip_prefix$ac_delim
+-OSIP_CFLAGS!$OSIP_CFLAGS$ac_delim
+-OSIP_LIBS!$OSIP_LIBS$ac_delim
+-EXOSIP_CFLAGS!$EXOSIP_CFLAGS$ac_delim
+-EXOSIP_LIBS!$EXOSIP_LIBS$ac_delim
+-READLINE_CFLAGS!$READLINE_CFLAGS$ac_delim
+-READLINE_LIBS!$READLINE_LIBS$ac_delim
+-SPEEX_CFLAGS!$SPEEX_CFLAGS$ac_delim
+-SPEEX_LIBS!$SPEEX_LIBS$ac_delim
+-BUILD_MEDIA_API_TRUE!$BUILD_MEDIA_API_TRUE$ac_delim
+-BUILD_MEDIA_API_FALSE!$BUILD_MEDIA_API_FALSE$ac_delim
+-BUILD_GNOME_TRUE!$BUILD_GNOME_TRUE$ac_delim
+-BUILD_GNOME_FALSE!$BUILD_GNOME_FALSE$ac_delim
+-BUILD_GNOME_APPLET_TRUE!$BUILD_GNOME_APPLET_TRUE$ac_delim
+-BUILD_GNOME_APPLET_FALSE!$BUILD_GNOME_APPLET_FALSE$ac_delim
+-ARMBUILD_TRUE!$ARMBUILD_TRUE$ac_delim
+-ARMBUILD_FALSE!$ARMBUILD_FALSE$ac_delim
+-STRICT_OPTIONS!$STRICT_OPTIONS$ac_delim
+-subdirs!$subdirs$ac_delim
+-have_db2html!$have_db2html$ac_delim
+-ENABLE_MANUAL_TRUE!$ENABLE_MANUAL_TRUE$ac_delim
+-ENABLE_MANUAL_FALSE!$ENABLE_MANUAL_FALSE$ac_delim
+-LINPHONE_CFLAGS!$LINPHONE_CFLAGS$ac_delim
+-LINPHONE_LIBS!$LINPHONE_LIBS$ac_delim
+-ORTP_VERSION!$ORTP_VERSION$ac_delim
+-LIBOBJS!$LIBOBJS$ac_delim
+-LTLIBOBJS!$LTLIBOBJS$ac_delim
+-_ACEOF
++#
++# CONFIG_FILES section.
++#
+
+- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 86; then
+- break
+- elif $ac_last_try; then
+- { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+- { (exit 1); exit 1; }; }
+- else
+- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
++# 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,@LIBLINPHONE_SO_VERSION@,$LIBLINPHONE_SO_VERSION,;t t
++s,@LINPHONE_VERSION@,$LINPHONE_VERSION,;t t
++s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
++s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
++s,@INSTALL_DATA@,$INSTALL_DATA,;t t
++s,@CYGPATH_W@,$CYGPATH_W,;t t
++s,@PACKAGE@,$PACKAGE,;t t
++s,@VERSION@,$VERSION,;t t
++s,@ACLOCAL@,$ACLOCAL,;t t
++s,@AUTOCONF@,$AUTOCONF,;t t
++s,@AUTOMAKE@,$AUTOMAKE,;t t
++s,@AUTOHEADER@,$AUTOHEADER,;t t
++s,@MAKEINFO@,$MAKEINFO,;t t
++s,@install_sh@,$install_sh,;t t
++s,@STRIP@,$STRIP,;t t
++s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
++s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
++s,@mkdir_p@,$mkdir_p,;t t
++s,@AWK@,$AWK,;t t
++s,@SET_MAKE@,$SET_MAKE,;t t
++s,@am__leading_dot@,$am__leading_dot,;t t
++s,@AMTAR@,$AMTAR,;t t
++s,@am__tar@,$am__tar,;t t
++s,@am__untar@,$am__untar,;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,@DEPDIR@,$DEPDIR,;t t
++s,@am__include@,$am__include,;t t
++s,@am__quote@,$am__quote,;t t
++s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
++s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
++s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
++s,@CCDEPMODE@,$CCDEPMODE,;t t
++s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
++s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
++s,@CPP@,$CPP,;t t
++s,@EGREP@,$EGREP,;t t
++s,@INTLTOOL_DESKTOP_RULE@,$INTLTOOL_DESKTOP_RULE,;t t
++s,@INTLTOOL_DIRECTORY_RULE@,$INTLTOOL_DIRECTORY_RULE,;t t
++s,@INTLTOOL_KEYS_RULE@,$INTLTOOL_KEYS_RULE,;t t
++s,@INTLTOOL_PROP_RULE@,$INTLTOOL_PROP_RULE,;t t
++s,@INTLTOOL_OAF_RULE@,$INTLTOOL_OAF_RULE,;t t
++s,@INTLTOOL_PONG_RULE@,$INTLTOOL_PONG_RULE,;t t
++s,@INTLTOOL_SERVER_RULE@,$INTLTOOL_SERVER_RULE,;t t
++s,@INTLTOOL_SHEET_RULE@,$INTLTOOL_SHEET_RULE,;t t
++s,@INTLTOOL_SOUNDLIST_RULE@,$INTLTOOL_SOUNDLIST_RULE,;t t
++s,@INTLTOOL_UI_RULE@,$INTLTOOL_UI_RULE,;t t
++s,@INTLTOOL_XAM_RULE@,$INTLTOOL_XAM_RULE,;t t
++s,@INTLTOOL_KBD_RULE@,$INTLTOOL_KBD_RULE,;t t
++s,@INTLTOOL_XML_RULE@,$INTLTOOL_XML_RULE,;t t
++s,@INTLTOOL_CAVES_RULE@,$INTLTOOL_CAVES_RULE,;t t
++s,@INTLTOOL_SCHEMAS_RULE@,$INTLTOOL_SCHEMAS_RULE,;t t
++s,@INTLTOOL_THEME_RULE@,$INTLTOOL_THEME_RULE,;t t
++s,@INTLTOOL_EXTRACT@,$INTLTOOL_EXTRACT,;t t
++s,@INTLTOOL_MERGE@,$INTLTOOL_MERGE,;t t
++s,@INTLTOOL_UPDATE@,$INTLTOOL_UPDATE,;t t
++s,@INTLTOOL_PERL@,$INTLTOOL_PERL,;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,@LN_S@,$LN_S,;t t
++s,@ECHO@,$ECHO,;t t
++s,@AR@,$AR,;t t
++s,@ac_ct_AR@,$ac_ct_AR,;t t
++s,@RANLIB@,$RANLIB,;t t
++s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
++s,@CXX@,$CXX,;t t
++s,@CXXFLAGS@,$CXXFLAGS,;t t
++s,@ac_ct_CXX@,$ac_ct_CXX,;t t
++s,@CXXDEPMODE@,$CXXDEPMODE,;t t
++s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
++s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
++s,@CXXCPP@,$CXXCPP,;t t
++s,@F77@,$F77,;t t
++s,@FFLAGS@,$FFLAGS,;t t
++s,@ac_ct_F77@,$ac_ct_F77,;t t
++s,@LIBTOOL@,$LIBTOOL,;t t
++s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t
++s,@USE_NLS@,$USE_NLS,;t t
++s,@MSGFMT@,$MSGFMT,;t t
++s,@GMSGFMT@,$GMSGFMT,;t t
++s,@XGETTEXT@,$XGETTEXT,;t t
++s,@MSGMERGE@,$MSGMERGE,;t t
++s,@INTL_MACOSX_LIBS@,$INTL_MACOSX_LIBS,;t t
++s,@LIBICONV@,$LIBICONV,;t t
++s,@LTLIBICONV@,$LTLIBICONV,;t t
++s,@INTLLIBS@,$INTLLIBS,;t t
++s,@LIBINTL@,$LIBINTL,;t t
++s,@LTLIBINTL@,$LTLIBINTL,;t t
++s,@POSUB@,$POSUB,;t t
++s,@GETTEXT_PACKAGE@,$GETTEXT_PACKAGE,;t t
++s,@PKG_CONFIG@,$PKG_CONFIG,;t t
++s,@LIBGNOMEUI_CFLAGS@,$LIBGNOMEUI_CFLAGS,;t t
++s,@LIBGNOMEUI_LIBS@,$LIBGNOMEUI_LIBS,;t t
++s,@LIBGNOME_CFLAGS@,$LIBGNOME_CFLAGS,;t t
++s,@LIBGNOME_LIBS@,$LIBGNOME_LIBS,;t t
++s,@LIBGTK_CFLAGS@,$LIBGTK_CFLAGS,;t t
++s,@LIBGTK_LIBS@,$LIBGTK_LIBS,;t t
++s,@GNOME_APPLETS_CFLAGS@,$GNOME_APPLETS_CFLAGS,;t t
++s,@GNOME_APPLETS_LIBS@,$GNOME_APPLETS_LIBS,;t t
++s,@IPV6_CFLAGS@,$IPV6_CFLAGS,;t t
++s,@TRUESPEECH_CFLAGS@,$TRUESPEECH_CFLAGS,;t t
++s,@BUILD_TRUESPEECH_TRUE@,$BUILD_TRUESPEECH_TRUE,;t t
++s,@BUILD_TRUESPEECH_FALSE@,$BUILD_TRUESPEECH_FALSE,;t t
++s,@osip_prefix@,$osip_prefix,;t t
++s,@OSIP_CFLAGS@,$OSIP_CFLAGS,;t t
++s,@OSIP_LIBS@,$OSIP_LIBS,;t t
++s,@EXOSIP_CFLAGS@,$EXOSIP_CFLAGS,;t t
++s,@EXOSIP_LIBS@,$EXOSIP_LIBS,;t t
++s,@READLINE_CFLAGS@,$READLINE_CFLAGS,;t t
++s,@READLINE_LIBS@,$READLINE_LIBS,;t t
++s,@SPEEX_CFLAGS@,$SPEEX_CFLAGS,;t t
++s,@SPEEX_LIBS@,$SPEEX_LIBS,;t t
++s,@BUILD_MEDIA_API_TRUE@,$BUILD_MEDIA_API_TRUE,;t t
++s,@BUILD_MEDIA_API_FALSE@,$BUILD_MEDIA_API_FALSE,;t t
++s,@BUILD_GNOME_TRUE@,$BUILD_GNOME_TRUE,;t t
++s,@BUILD_GNOME_FALSE@,$BUILD_GNOME_FALSE,;t t
++s,@BUILD_GNOME_APPLET_TRUE@,$BUILD_GNOME_APPLET_TRUE,;t t
++s,@BUILD_GNOME_APPLET_FALSE@,$BUILD_GNOME_APPLET_FALSE,;t t
++s,@ARMBUILD_TRUE@,$ARMBUILD_TRUE,;t t
++s,@ARMBUILD_FALSE@,$ARMBUILD_FALSE,;t t
++s,@STRICT_OPTIONS@,$STRICT_OPTIONS,;t t
++s,@subdirs@,$subdirs,;t t
++s,@have_db2html@,$have_db2html,;t t
++s,@ENABLE_MANUAL_TRUE@,$ENABLE_MANUAL_TRUE,;t t
++s,@ENABLE_MANUAL_FALSE@,$ENABLE_MANUAL_FALSE,;t t
++s,@LINPHONE_CFLAGS@,$LINPHONE_CFLAGS,;t t
++s,@LINPHONE_LIBS@,$LINPHONE_LIBS,;t t
++s,@ORTP_VERSION@,$ORTP_VERSION,;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
+ fi
+-done
+-
+-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+-if test -n "$ac_eof"; then
+- ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+- ac_eof=`expr $ac_eof + 1`
+-fi
++fi # test -n "$CONFIG_FILES"
+
+-cat >>$CONFIG_STATUS <<_ACEOF
+-cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
+-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+ _ACEOF
+-sed '
+-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+-s/^/s,@/; s/!/@,|#_!!_#|/
+-:n
+-t n
+-s/'"$ac_delim"'$/,g/; t
+-s/$/\\/; p
+-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+-' >>$CONFIG_STATUS <conf$$subs.sed
+-rm -f conf$$subs.sed
+-cat >>$CONFIG_STATUS <<_ACEOF
+-:end
+-s/|#_!!_#|//g
+-CEOF$ac_eof
+-_ACEOF
+-
+-
+-# 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).
+-if test "x$srcdir" = x.; then
+- ac_vpsub='/^[ ]*VPATH[ ]*=/{
+-s/:*\$(srcdir):*/:/
+-s/:*\${srcdir}:*/:/
+-s/:*@srcdir@:*/:/
+-s/^\([^=]*=[ ]*\):*/\1/
+-s/:*$//
+-s/^[^=]*=[ ]*$//
+-}'
+-fi
+-
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-fi # test -n "$CONFIG_FILES"
+-
+-
+-for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
+-do
+- case $ac_tag in
+- :[FHLC]) ac_mode=$ac_tag; continue;;
+- esac
+- case $ac_mode$ac_tag in
+- :[FHL]*:*);;
+- :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+-echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+- { (exit 1); exit 1; }; };;
+- :[FH]-) ac_tag=-:-;;
+- :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+- esac
+- ac_save_IFS=$IFS
+- IFS=:
+- set x $ac_tag
+- IFS=$ac_save_IFS
+- shift
+- ac_file=$1
+- shift
+-
+- case $ac_mode in
+- :L) ac_source=$1;;
+- :[FH])
+- ac_file_inputs=
+- for ac_f
+- do
+- case $ac_f in
+- -) ac_f="$tmp/stdin";;
+- *) # Look for the file first in the build tree, then in the source tree
+- # (if the path is not absolute). The absolute path cannot be DOS-style,
+- # because $ac_f cannot contain `:'.
+- test -f "$ac_f" ||
+- case $ac_f in
+- [\\/$]*) false;;
+- *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+- esac ||
+- { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+-echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+- { (exit 1); exit 1; }; };;
+- esac
+- ac_file_inputs="$ac_file_inputs $ac_f"
+- done
+-
+- # 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. */
+- configure_input="Generated from "`IFS=:
+- echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+- if test x"$ac_file" != x-; then
+- configure_input="$ac_file. $configure_input"
+- { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+- fi
+-
+- case $ac_tag in
+- *:-:* | *:-) cat >"$tmp/stdin";;
+- esac
+- ;;
++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 ;;
+ esac
+
+- ac_dir=`$as_dirname -- "$ac_file" ||
++ # 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 ||
++ 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'`
+- { as_dir="$ac_dir"
+- case $as_dir in #(
+- -*) as_dir=./$as_dir;;
+- esac
+- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
++ 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 :; do
+- case $as_dir in #(
+- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+- *) as_qdir=$as_dir;;
+- esac
+- as_dirs="'$as_qdir' $as_dirs"
+- as_dir=`$as_dirname -- "$as_dir" ||
++ 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 ||
++ 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'`
+- test -d "$as_dir" && break
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+ done
+- test -z "$as_dirs" || eval "mkdir $as_dirs"
+- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+-echo "$as_me: error: cannot create directory $as_dir" >&2;}
++ 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; }; }; }
++
+ ac_builddir=.
+
+-case "$ac_dir" in
+-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+-*)
++if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A ".." for each directory in $ac_dir_suffix.
+- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+- case $ac_top_builddir_sub in
+- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+- esac ;;
+-esac
+-ac_abs_top_builddir=$ac_pwd
+-ac_abs_builddir=$ac_pwd$ac_dir_suffix
+-# for backward compatibility:
+-ac_top_builddir=$ac_top_build_prefix
++ # 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
+- .) # We are building in place.
++ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+- ac_top_srcdir=$ac_top_builddir_sub
+- ac_abs_top_srcdir=$ac_pwd ;;
+- [\\/]* | ?:[\\/]* ) # Absolute name.
++ 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
+- ac_abs_top_srcdir=$srcdir ;;
+- *) # Relative name.
+- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_build_prefix$srcdir
+- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++ ac_top_srcdir=$srcdir ;;
++ *) # Relative path.
++ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+ esac
+-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
++# Do not use `cd foo && pwd` to compute absolute paths, because
++# the directories may not exist.
++case `pwd` in
++.) ac_abs_builddir="$ac_dir";;
++*)
++ case "$ac_dir" in
++ .) ac_abs_builddir=`pwd`;;
++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
++ *) ac_abs_builddir=`pwd`/"$ac_dir";;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_builddir=${ac_top_builddir}.;;
++*)
++ case ${ac_top_builddir}. in
++ .) ac_abs_top_builddir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_srcdir=$ac_srcdir;;
++*)
++ case $ac_srcdir in
++ .) ac_abs_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_srcdir=$ac_top_srcdir;;
++*)
++ case $ac_top_srcdir in
++ .) ac_abs_top_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
++ esac;;
++esac
+
+- case $ac_mode in
+- :F)
+- #
+- # CONFIG_FILE
+- #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+- *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
++ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+ esac
+-_ACEOF
+
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-# If the template does not know about datarootdir, expand it.
+-# FIXME: This hack should be removed a few years after 2.60.
+-ac_datarootdir_hack=; ac_datarootdir_seen=
+-
+-case `sed -n '/datarootdir/ {
+- p
+- q
+-}
+-/@datadir@/p
+-/@docdir@/p
+-/@infodir@/p
+-/@localedir@/p
+-/@mandir@/p
+-' $ac_file_inputs` in
+-*datarootdir*) ac_datarootdir_seen=yes;;
+-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+- { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+-_ACEOF
+-cat >>$CONFIG_STATUS <<_ACEOF
+- ac_datarootdir_hack='
+- s&@datadir@&$datadir&g
+- s&@docdir@&$docdir&g
+- s&@infodir@&$infodir&g
+- s&@localedir@&$localedir&g
+- s&@mandir@&$mandir&g
+- s&\\\${datarootdir}&$datarootdir&g' ;;
+-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."
++
++ # 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
+-
+-# Neutralize VPATH when `$srcdir' = `.'.
+-# Shell code in configure.ac might set extrasub.
+-# FIXME: do we really want to maintain this feature?
+ cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+ $extrasub
+@@ -31247,130 +29566,248 @@
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ :t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-s&@configure_input@&$configure_input&;t t
+-s&@top_builddir@&$ac_top_builddir_sub&;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&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+-s&@INSTALL@&$ac_INSTALL&;t t
+-$ac_datarootdir_hack
+-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
+-
+-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+- { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+-which seems to be undefined. Please make sure it is defined." >&5
+-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+-which seems to be undefined. Please make sure it is defined." >&2;}
++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
+
+- rm -f "$tmp/stdin"
+- case $ac_file in
+- -) cat "$tmp/out"; rm -f "$tmp/out";;
+- *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+- esac
+- ;;
+- :H)
+- #
+- # CONFIG_HEADER
+- #
++done
+ _ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++
++#
++# CONFIG_HEADER section.
++#
+
+-# Transform confdefs.h into a sed script `conftest.defines', that
+-# substitutes the proper values into config.h.in to produce config.h.
+-rm -f conftest.defines conftest.tail
+-# First, append a space to every undef/define line, to ease matching.
+-echo 's/$/ /' >conftest.defines
+-# Then, protect against being on the right side of a sed subst, or in
+-# an unquoted here document, in config.status. If some macros were
+-# called several times there might be several #defines for the same
+-# symbol, which is useless. But do not sort them, since the last
+-# AC_DEFINE must be honored.
+-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+-# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
+-# NAME is the cpp macro being defined, VALUE is the value it is being given.
+-# PARAMS is the parameter list in the macro definition--in most cases, it's
+-# just an empty string.
+-ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
+-ac_dB='\\)[ (].*,\\1define\\2'
++# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
++# NAME is the cpp macro being defined and VALUE is the value it is being given.
++#
++# ac_d sets the value in "#define NAME VALUE" lines.
++ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
++ac_dB='[ ].*$,\1#\2'
+ ac_dC=' '
+-ac_dD=' ,'
++ac_dD=',;t'
++# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
++ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
++ac_uB='$,\1#\2define\3'
++ac_uC=' '
++ac_uD=',;t'
++
++for ac_file in : $CONFIG_HEADERS; 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 ;;
++ esac
++
++ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
++echo "$as_me: creating $ac_file" >&6;}
++
++ # 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; }; }
++ # Do quote $f, to prevent DOS paths from being IFS'd.
++ 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; }
++ # Remove the trailing spaces.
++ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
++
++_ACEOF
+
+-uniq confdefs.h |
+- sed -n '
+- t rset
+- :rset
+- s/^[ ]*#[ ]*define[ ][ ]*//
+- t ok
+- d
+- :ok
+- s/[\\&,]/\\&/g
+- s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
+- s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
+- ' >>conftest.defines
++# Transform confdefs.h into two sed scripts, `conftest.defines' and
++# `conftest.undefs', that substitutes the proper values into
++# config.h.in to produce config.h. The first handles `#define'
++# templates, and the second `#undef' templates.
++# And first: Protect against being on the right side of a sed subst in
++# config.status. Protect against being in an unquoted here document
++# in config.status.
++rm -f conftest.defines conftest.undefs
++# Using a here document instead of a string reduces the quoting nightmare.
++# Putting comments in sed scripts is not portable.
++#
++# `end' is used to avoid that the second main sed command (meant for
++# 0-ary CPP macros) applies to n-ary macro definitions.
++# See the Autoconf documentation for `clear'.
++cat >confdef2sed.sed <<\_ACEOF
++s/[\\&,]/\\&/g
++s,[\\$`],\\&,g
++t clear
++: clear
++s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
++t end
++s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
++: end
++_ACEOF
++# If some macros were called several times there might be several times
++# the same #defines, which is useless. Nevertheless, we may not want to
++# sort them, since we want the *last* AC-DEFINE to be honored.
++uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
++sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
++rm -f confdef2sed.sed
+
+-# Remove the space that was appended to ease matching.
+-# Then replace #undef with comments. This is necessary, for
++# This sed command replaces #undef with comments. This is necessary, for
+ # example, in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+-# (The regexp can be short, since the line contains either #define or #undef.)
+-echo 's/ $//
+-s,^[ #]*u.*,/* & */,' >>conftest.defines
+-
+-# Break up conftest.defines:
+-ac_max_sed_lines=50
+-
+-# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
+-# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
+-# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
+-# et cetera.
+-ac_in='$ac_file_inputs'
+-ac_out='"$tmp/out1"'
+-ac_nxt='"$tmp/out2"'
+-
+-while :
+-do
+- # Write a here document:
+- cat >>$CONFIG_STATUS <<_ACEOF
+- # First, check the format of the line:
+- cat >"\$tmp/defines.sed" <<\\CEOF
+-/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
+-/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
+-b
+-:def
++cat >>conftest.undefs <<\_ACEOF
++s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+ _ACEOF
+- sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
++
++# Break up conftest.defines because some shells have a limit on the size
++# of here documents, and old seds have small limits too (100 cmds).
++echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
++echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
++echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
++echo ' :' >>$CONFIG_STATUS
++rm -f conftest.tail
++while grep . conftest.defines >/dev/null
++do
++ # Write a limited-size here document to $tmp/defines.sed.
++ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
++ # Speed up: don't consider the non `#define' lines.
++ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
++ # Work around the forget-to-reset-the-flag bug.
++ echo 't clr' >>$CONFIG_STATUS
++ echo ': clr' >>$CONFIG_STATUS
++ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+- sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
+- ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
+- sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
+- grep . conftest.tail >/dev/null || break
++ sed -f $tmp/defines.sed $tmp/in >$tmp/out
++ rm -f $tmp/in
++ mv $tmp/out $tmp/in
++' >>$CONFIG_STATUS
++ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+ done
+-rm -f conftest.defines conftest.tail
++rm -f conftest.defines
++echo ' fi # grep' >>$CONFIG_STATUS
++echo >>$CONFIG_STATUS
++
++# Break up conftest.undefs because some shells have a limit on the size
++# of here documents, and old seds have small limits too (100 cmds).
++echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
++rm -f conftest.tail
++while grep . conftest.undefs >/dev/null
++do
++ # Write a limited-size here document to $tmp/undefs.sed.
++ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
++ # Speed up: don't consider the non `#undef'
++ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
++ # Work around the forget-to-reset-the-flag bug.
++ echo 't clr' >>$CONFIG_STATUS
++ echo ': clr' >>$CONFIG_STATUS
++ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
++ echo 'CEOF
++ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
++ rm -f $tmp/in
++ mv $tmp/out $tmp/in
++' >>$CONFIG_STATUS
++ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
++ rm -f conftest.undefs
++ mv conftest.tail conftest.undefs
++done
++rm -f conftest.undefs
+
+-echo "ac_result=$ac_in" >>$CONFIG_STATUS
+ cat >>$CONFIG_STATUS <<\_ACEOF
++ # 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
++ echo "/* Generated by configure. */" >$tmp/config.h
++ else
++ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
++ fi
++ cat $tmp/in >>$tmp/config.h
++ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+- echo "/* $configure_input */" >"$tmp/config.h"
+- cat "$ac_result" >>"$tmp/config.h"
+- if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
++ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+ echo "$as_me: $ac_file is unchanged" >&6;}
+ else
++ 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; }; }; }
++
+ rm -f $ac_file
+- mv "$tmp/config.h" $ac_file
++ mv $tmp/config.h $ac_file
+ fi
+ else
+- echo "/* $configure_input */"
+- cat "$ac_result"
++ cat $tmp/config.h
++ rm -f $tmp/config.h
+ fi
+- rm -f "$tmp/out12"
+ # Compute $ac_file's index in $config_headers.
+ _am_stamp_count=1
+ for _am_header in $config_headers :; do
+@@ -31381,39 +29818,135 @@
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+ done
+-echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
++echo "timestamp for $ac_file" >`(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 ||
++ 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'`/stamp-h$_am_stamp_count
+- ;;
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`/stamp-h$_am_stamp_count
++done
++_ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
+
+- :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
+-echo "$as_me: executing $ac_file commands" >&6;}
+- ;;
+- esac
++#
++# CONFIG_COMMANDS section.
++#
++for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
++ ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
++ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
++ ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
++$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
++ X"$ac_dest" : 'X\(//\)[^/]' \| \
++ X"$ac_dest" : 'X\(//\)$' \| \
++ X"$ac_dest" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
++echo X"$ac_dest" |
++ 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; }; }; }
++
++ 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
++
++# Do not use `cd foo && pwd` to compute absolute paths, because
++# the directories may not exist.
++case `pwd` in
++.) ac_abs_builddir="$ac_dir";;
++*)
++ case "$ac_dir" in
++ .) ac_abs_builddir=`pwd`;;
++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
++ *) ac_abs_builddir=`pwd`/"$ac_dir";;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_builddir=${ac_top_builddir}.;;
++*)
++ case ${ac_top_builddir}. in
++ .) ac_abs_top_builddir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_srcdir=$ac_srcdir;;
++*)
++ case $ac_srcdir in
++ .) ac_abs_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_srcdir=$ac_top_srcdir;;
++*)
++ case $ac_top_srcdir in
++ .) ac_abs_top_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
++ esac;;
++esac
+
+
+- case $ac_file$ac_mode in
+- "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
++ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
++echo "$as_me: executing $ac_dest commands" >&6;}
++ case $ac_dest in
++ depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+@@ -31423,29 +29956,18 @@
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+- dirpart=`$as_dirname -- "$mf" ||
++ dirpart=`(dirname "$mf") 2>/dev/null ||
+ $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+- X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
++ X"$mf" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
+ echo X"$mf" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+- s//\1/
+- q
+- }
+- /^X\(\/\/\)[^/].*/{
+- s//\1/
+- q
+- }
+- /^X\(\/\/\)$/{
+- s//\1/
+- q
+- }
+- /^X\(\/\).*/{
+- s//\1/
+- q
+- }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+ else
+ continue
+ fi
+@@ -31467,97 +29989,80 @@
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+- fdir=`$as_dirname -- "$file" ||
++ fdir=`(dirname "$file") 2>/dev/null ||
+ $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+- X"$file" : 'X\(/\)' \| . 2>/dev/null ||
++ X"$file" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
+ echo X"$file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+- s//\1/
+- q
+- }
+- /^X\(\/\/\)[^/].*/{
+- s//\1/
+- q
+- }
+- /^X\(\/\/\)$/{
+- s//\1/
+- q
+- }
+- /^X\(\/\).*/{
+- s//\1/
+- q
+- }
+- s/.*/./; q'`
+- { as_dir=$dirpart/$fdir
+- case $as_dir in #(
+- -*) as_dir=./$as_dir;;
+- esac
+- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
++ 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 $dirpart/$fdir
++ else
++ as_dir=$dirpart/$fdir
+ as_dirs=
+- while :; do
+- case $as_dir in #(
+- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+- *) as_qdir=$as_dir;;
+- esac
+- as_dirs="'$as_qdir' $as_dirs"
+- as_dir=`$as_dirname -- "$as_dir" ||
++ 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 ||
++ 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'`
+- test -d "$as_dir" && break
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+ done
+- test -z "$as_dirs" || eval "mkdir $as_dirs"
+- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+-echo "$as_me: error: cannot create directory $as_dir" >&2;}
++ test ! -n "$as_dirs" || mkdir $as_dirs
++ fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
++echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+ { (exit 1); exit 1; }; }; }
++
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+ ;;
+- "intltool":C)
++ default-1 )
+
+-for file in intltool-extract intltool-merge intltool-update; do
+- sed -e "s|@INTLTOOL_EXTRACT@|`pwd`/intltool-extract|g" \
+- -e "s|@INTLTOOL_LIBDIR@|${INTLTOOL_LIBDIR}|g" \
+- -e "s|@INTLTOOL_ICONV@|${INTLTOOL_ICONV}|g" \
+- -e "s|@INTLTOOL_MSGFMT@|${INTLTOOL_MSGFMT}|g" \
+- -e "s|@INTLTOOL_MSGMERGE@|${INTLTOOL_MSGMERGE}|g" \
+- -e "s|@INTLTOOL_XGETTEXT@|${INTLTOOL_XGETTEXT}|g" \
+- -e "s|@INTLTOOL_PERL@|${INTLTOOL_PERL}|g" \
+- < ${ac_aux_dir}/${file}.in > ${file}.out
+- if cmp -s ${file} ${file}.out 2>/dev/null; then
+- rm -f ${file}.out
+- else
+- mv -f ${file}.out ${file}
+- fi
+- chmod ugo+x ${file}
+- chmod u+w ${file}
+-done
++sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-extract.in > intltool-extract.out
++if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
++ rm -f intltool-extract.out
++else
++ mv -f intltool-extract.out intltool-extract
++fi
++chmod ugo+x intltool-extract
++chmod u+w intltool-extract
++
++sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" \
++ < ${ac_aux_dir}/intltool-merge.in > intltool-merge.out
++if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
++ rm -f intltool-merge.out
++else
++ mv -f intltool-merge.out intltool-merge
++fi
++chmod ugo+x intltool-merge
++chmod u+w intltool-merge
++
++sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-update.in > intltool-update.out
++if cmp -s intltool-update intltool-update.out 2>/dev/null; then
++ rm -f intltool-update.out
++else
++ mv -f intltool-update.out intltool-update
++fi
++chmod ugo+x intltool-update
++chmod u+w intltool-update
+
+ ;;
+- "default-1":C)
++ default-2 )
+ for ac_file in $CONFIG_FILES; do
+ # Support "outfile[:infile[:infile...]]"
+ case "$ac_file" in
+@@ -31669,33 +30174,11 @@
+ ;;
+ esac
+ done ;;
+- "po/stamp-it":C)
+- rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp"
+- >"po/stamp-it.tmp"
+- sed '/^#/d
+- s/^[[].*] *//
+- /^[ ]*$/d
+- '"s|^| $ac_top_srcdir/|" \
+- "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES"
+-
+- if test ! -f "po/Makefile"; then
+- { { echo "$as_me:$LINENO: error: po/Makefile is not ready." >&5
+-echo "$as_me: error: po/Makefile is not ready." >&2;}
+- { (exit 1); exit 1; }; }
+- fi
+- mv "po/Makefile" "po/Makefile.tmp"
+- sed '/^POTFILES =/,/[^\\]$/ {
+- /^POTFILES =/!d
+- r po/POTFILES
+- }
+- ' "po/Makefile.tmp" >"po/Makefile"
+- rm -f "po/Makefile.tmp"
+- mv "po/stamp-it.tmp" "po/stamp-it"
+- ;;
+-
+ esac
+-done # for ac_tag
++done
++_ACEOF
+
++cat >>$CONFIG_STATUS <<\_ACEOF
+
+ { (exit 0); exit 0; }
+ _ACEOF
+@@ -31732,10 +30215,7 @@
+ # Remove --cache-file and --srcdir arguments so they do not pile up.
+ ac_sub_configure_args=
+ ac_prev=
+- eval "set x $ac_configure_args"
+- shift
+- for ac_arg
+- do
++ for ac_arg in $ac_configure_args; do
+ if test -n "$ac_prev"; then
+ ac_prev=
+ continue
+@@ -31758,118 +30238,123 @@
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ ;;
+- *)
+- case $ac_arg in
+- *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+- esac
+- ac_sub_configure_args="$ac_sub_configure_args '$ac_arg'" ;;
++ *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
+ esac
+ done
+
+ # Always prepend --prefix to ensure using the same prefix
+ # in subdir configurations.
+- ac_arg="--prefix=$prefix"
+- case $ac_arg in
+- *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+- esac
+- ac_sub_configure_args="$ac_arg $ac_sub_configure_args"
++ ac_sub_configure_args="--prefix=$prefix $ac_sub_configure_args"
+
+ ac_popdir=`pwd`
+ for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
+
+ # Do not complain, so a configure script can configure whichever
+ # parts of a large source tree are present.
+- test -d "$srcdir/$ac_dir" || continue
++ test -d $srcdir/$ac_dir || continue
+
+- ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
+- echo "$as_me:$LINENO: $ac_msg" >&5
+- echo "$ac_msg" >&6
+- { as_dir="$ac_dir"
+- case $as_dir in #(
+- -*) as_dir=./$as_dir;;
+- esac
+- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
++ { echo "$as_me:$LINENO: configuring in $ac_dir" >&5
++echo "$as_me: configuring in $ac_dir" >&6;}
++ { if $as_mkdir_p; then
++ mkdir -p "$ac_dir"
++ else
++ as_dir="$ac_dir"
+ as_dirs=
+- while :; do
+- case $as_dir in #(
+- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+- *) as_qdir=$as_dir;;
+- esac
+- as_dirs="'$as_qdir' $as_dirs"
+- as_dir=`$as_dirname -- "$as_dir" ||
++ 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 ||
++ 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'`
+- test -d "$as_dir" && break
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+ done
+- test -z "$as_dirs" || eval "mkdir $as_dirs"
+- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+-echo "$as_me: error: cannot create directory $as_dir" >&2;}
++ 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; }; }; }
++
+ ac_builddir=.
+
+-case "$ac_dir" in
+-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+-*)
++if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A ".." for each directory in $ac_dir_suffix.
+- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+- case $ac_top_builddir_sub in
+- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+- esac ;;
+-esac
+-ac_abs_top_builddir=$ac_pwd
+-ac_abs_builddir=$ac_pwd$ac_dir_suffix
+-# for backward compatibility:
+-ac_top_builddir=$ac_top_build_prefix
++ # 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
+- .) # We are building in place.
++ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+- ac_top_srcdir=$ac_top_builddir_sub
+- ac_abs_top_srcdir=$ac_pwd ;;
+- [\\/]* | ?:[\\/]* ) # Absolute name.
++ 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
+- ac_abs_top_srcdir=$srcdir ;;
+- *) # Relative name.
+- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_build_prefix$srcdir
+- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++ ac_top_srcdir=$srcdir ;;
++ *) # Relative path.
++ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_builddir$srcdir ;;
++esac
++
++# Do not use `cd foo && pwd` to compute absolute paths, because
++# the directories may not exist.
++case `pwd` in
++.) ac_abs_builddir="$ac_dir";;
++*)
++ case "$ac_dir" in
++ .) ac_abs_builddir=`pwd`;;
++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
++ *) ac_abs_builddir=`pwd`/"$ac_dir";;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_builddir=${ac_top_builddir}.;;
++*)
++ case ${ac_top_builddir}. in
++ .) ac_abs_top_builddir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_srcdir=$ac_srcdir;;
++*)
++ case $ac_srcdir in
++ .) ac_abs_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_srcdir=$ac_top_srcdir;;
++*)
++ case $ac_top_srcdir in
++ .) ac_abs_top_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
++ esac;;
+ esac
+-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+- cd "$ac_dir"
++ cd $ac_dir
+
+ # Check for guested configure; otherwise get Cygnus style configure.
+- if test -f "$ac_srcdir/configure.gnu"; then
+- ac_sub_configure=$ac_srcdir/configure.gnu
+- elif test -f "$ac_srcdir/configure"; then
+- ac_sub_configure=$ac_srcdir/configure
+- elif test -f "$ac_srcdir/configure.in"; then
+- # This should be Cygnus configure.
+- ac_sub_configure=$ac_aux_dir/configure
++ if test -f $ac_srcdir/configure.gnu; then
++ ac_sub_configure="$SHELL '$ac_srcdir/configure.gnu'"
++ elif test -f $ac_srcdir/configure; then
++ ac_sub_configure="$SHELL '$ac_srcdir/configure'"
++ elif test -f $ac_srcdir/configure.in; then
++ ac_sub_configure=$ac_configure
+ else
+ { echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
+@@ -31881,21 +30366,21 @@
+ # Make the cache file name correct relative to the subdirectory.
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
+- *) # Relative name.
+- ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
++ *) # Relative path.
++ ac_sub_cache_file=$ac_top_builddir$cache_file ;;
+ esac
+
+- { echo "$as_me:$LINENO: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
+-echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
++ { echo "$as_me:$LINENO: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
++echo "$as_me: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
+ # The eval makes quoting arguments work.
+- eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
+- --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
++ eval $ac_sub_configure $ac_sub_configure_args \
++ --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir ||
+ { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5
+ echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+- cd "$ac_popdir"
++ cd $ac_popdir
+ done
+ fi
+
+diff -ur linphone-1.5.0/configure.in linphone-1.5.0-after/configure.in
+--- linphone-1.5.0/configure.in 2006-10-11 03:24:54.000000000 +0800
++++ linphone-1.5.0-after/configure.in 2007-01-19 16:04:11.000000000 +0800
+@@ -167,7 +167,8 @@
+ AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${prefix}/${DATADIRNAME}",[Defines the place where data are found])
+
+ dnl Set PACKAGE_SOUND_DIR in config.h.
+-AC_DEFINE_UNQUOTED(PACKAGE_SOUND_DIR, "${prefix}/${DATADIRNAME}/sounds/linphone",[Defines the place where linphone sounds are found])
++dnl AC_DEFINE_UNQUOTED(PACKAGE_SOUND_DIR, "${prefix}/${DATADIRNAME}/sounds/linphone",[Defines the place where linphone sounds are found])
++AC_DEFINE_UNQUOTED(PACKAGE_SOUND_DIR, "/mnt/doc/vroot/opt/share/sounds/linphone",[Defines the place where linphone sounds are found])
+
+
+ dnl check if we have the getifaddrs() sytem call
+Only in linphone-1.5.0-after/: configure.in.org
+diff -ur linphone-1.5.0/console/commands.c linphone-1.5.0-after/console/commands.c
+--- linphone-1.5.0/console/commands.c 2006-09-22 15:22:47.000000000 +0800
++++ linphone-1.5.0-after/console/commands.c 2006-12-17 14:42:07.000000000 +0800
+@@ -47,6 +47,8 @@
+ static int lpc_cmd_call(LinphoneCore *, char *);
+ static int lpc_cmd_answer(LinphoneCore *, char *);
+ static int lpc_cmd_terminate(LinphoneCore *, char *);
++static int lpc_cmd_hold(LinphoneCore *, char *);
++static int lpc_cmd_unhold(LinphoneCore *, char *);
+ static int lpc_cmd_call_logs(LinphoneCore *, char *);
+ static int lpc_cmd_ipv6(LinphoneCore *, char *);
+ static int lpc_cmd_refer(LinphoneCore *, char *);
+@@ -92,6 +94,12 @@
+ { "answer", lpc_cmd_answer, "Answer a call",
+ "Accept an incoming call."
+ },
++ { "hold", lpc_cmd_hold, "Hold a call",
++ "Hold an active call."
++ },
++ { "Unhold", lpc_cmd_unhold, "UnHold a call",
++ "UnHold an held call."
++ },
+ { "proxy", lpc_cmd_proxy, "Manage proxies",
+ "'proxy list' : list all proxy setups.\n"
+ "'proxy add' : add a new proxy setup.\n"
+@@ -287,6 +295,8 @@
+ static int
+ lpc_cmd_call(LinphoneCore *lc, char *args)
+ {
++ printf("in ipc 2, %s\n", args);
++
+ if ( lc->call != NULL )
+ {
+ printf("Terminate current call first.\n");
+@@ -333,6 +343,27 @@
+ }
+
+ static int
++lpc_cmd_hold(LinphoneCore *lc, char *args)
++{
++ if ( -1 == linphone_core_on_hold_call(lc, NULL) )
++ {
++ printf("Could not hold the call.\n");
++ }
++ return 1;
++}
++
++static int
++lpc_cmd_unhold(LinphoneCore *lc, char *args)
++{
++ if ( -1 == linphone_core_off_hold_call(lc, NULL) )
++ {
++ printf("Could not unhold the call.\n");
++ }
++ return 1;
++}
++
++
++static int
+ lpc_cmd_quit(LinphoneCore *lc, char *args)
+ {
+ linphonec_finish(EXIT_SUCCESS);
+diff -ur linphone-1.5.0/console/Makefile.in linphone-1.5.0-after/console/Makefile.in
+--- linphone-1.5.0/console/Makefile.in 2006-10-11 03:26:21.000000000 +0800
++++ linphone-1.5.0-after/console/Makefile.in 2007-01-19 16:05:04.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,6 +14,8 @@
+
+ @SET_MAKE@
+
++SOURCES = $(linphonec_SOURCES) $(sipomatic_SOURCES)
++
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -42,11 +44,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -69,11 +71,11 @@
+ am__depfiles_maybe = depfiles
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
++LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ SOURCES = $(linphonec_SOURCES) $(sipomatic_SOURCES)
+ DIST_SOURCES = $(linphonec_SOURCES) $(sipomatic_SOURCES)
+@@ -81,7 +83,6 @@
+ CTAGS = ctags
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -128,7 +129,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -138,27 +138,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -212,9 +206,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -231,9 +228,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -241,22 +235,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+diff -ur linphone-1.5.0/coreapi/exevents.c linphone-1.5.0-after/coreapi/exevents.c
+--- linphone-1.5.0/coreapi/exevents.c 2006-10-03 20:34:12.000000000 +0800
++++ linphone-1.5.0-after/coreapi/exevents.c 2006-12-18 17:39:55.000000000 +0800
+@@ -695,17 +695,44 @@
+
+ void linphone_core_process_event(LinphoneCore *lc,eXosip_event_t *ev)
+ {
++ /* sxh 20061126 this event will be passed to voc enabler */
++ lin_wifi_evt_t evt;
++ //lc->cb_handler=
++ //lin_wifi_evt_t *pevt = g_new0(lin_wifi_evt_t, 1);
++ //pevt->evt_type = in_evt->evt_type;
++ //pevt->user_data = in_evt->user_data;
++ //pevt->evt_data = in_evt->evt_data;
++ printf("\n\n\nenter linphone core process event\n\n");
++ printf("\nevt type =%d\n", ev->type);
+ switch(ev->type){
+ case EXOSIP_CALL_ANSWERED:
+ ms_message("CALL_ANSWERED\n");
++ printf("CALL_ANSWERED\n");
+ linphone_call_accepted(lc,ev->did,ev->sdp_body);
+ /*send the ack once streams are started*/
+ eXosip_send_ack(ev->did);
++ /* sxh */
++ //pevt->evt_type = lin_WIFI_EVT_CALL_STATUS;
++ //pevt->evt_data = 1; /**<call id */
++ evt.evt_type = lin_WIFI_EVT_CALL_STATUS;
++ evt.evt_data = 60001; /**<call id */
++ if (lc->cb_handler!=NULL)
++ lc->cb_handler(lc->sid, &evt);
++
+ break;
+ case EXOSIP_CALL_CLOSED:
+ case EXOSIP_CALL_CANCELLED:
+ ms_message("CALL_CLOSED or CANCELLED\n");
+ linphone_call_terminated(lc,ev);
++ /* sxh */
++ //pevt->evt_type = lin_WIFI_EVT_CALL_REMOTE_STATUS;
++ //pevt->evt_data = 1; /**<call id */
++ evt.evt_type = lin_WIFI_EVT_CALL_REMOTE_STATUS;
++ evt.evt_data = 60001; /**<call id */
++ if (lc->cb_handler!=NULL)
++ lc->cb_handler(lc->sid, &evt);
++
++ /* sxhh */
+ break;
+ case EXOSIP_CALL_TIMEOUT:
+ case EXOSIP_CALL_NOANSWER:
+@@ -717,16 +744,48 @@
+ case EXOSIP_CALL_SERVERFAILURE:
+ ms_message("CALL_REQUESTFAILURE or GLOBALFAILURE or SERVERFAILURE\n");
+ linphone_call_failure(lc,ev->did,ev->status_code);
++ /* sxh */
++ evt.evt_type = lin_WIFI_EVT_EXCEPTION;
++ evt.evt_data = 60001; /**<call id */
++ if (lc->cb_handler!=NULL)
++ lc->cb_handler(lc->sid, &evt);
++ /* sxhh */
+ break;
+ case EXOSIP_CALL_NEW:
++
+ ms_message("CALL_NEW\n");
+ /* CALL_NEW is used twice in qos mode :
+ * when you receive invite (textinfo = "With QoS" or "Without QoS")
+ * and when you receive update (textinfo = "New Call") */
+ linphone_inc_new_call(lc,ev);
++ /* sxh */
++ //pevt->evt_type = lin_WIFI_EVT_LINE_CALL;
++ //pevt->evt_data = 1; /**<call id */
++ //pevt->user_data= (void *) ev->remote_uri;/**<peer number */
++ evt.evt_type = lin_WIFI_EVT_LINE_CALL;
++ evt.evt_data = 60001; /**<call id */
++ evt.user_data= (void *) ev->remote_uri;/**<peer number */
++ printf("before call cb_handler3\n");
++ printf(" |linphone_core_process_event : 0x%08x\n", (uint32_t)lc->cb_handler);
++ if (lc->cb_handler!=NULL)
++ lc->cb_handler(lc->sid, &evt);
++ //linphone_core_accept_call(&linphonec, NULL);
++ //lpc_cmd_answer(&linphonec, NULL);
++ printf("before call cb_handler5\n");
++ //jd
++ printf("after,get level=%d, %d\n",linphone_core_get_rec_level(lc),lc->sound_conf.rec_lev);
++ linphone_core_set_rec_level(lc,lc->sound_conf.rec_lev);
++
+ break;
+ case EXOSIP_CALL_ACK:
+ ms_message("CALL_ACK\n");
++
++ /* sxh */
++ evt.evt_type = lin_WIFI_EVT_CALL_STATUS;
++ evt.evt_data = 60001; /**<call id */
++ if (lc->cb_handler!=NULL)
++ lc->cb_handler(lc->sid, &evt);
++ /* sxhh */
+ break;
+ case EXOSIP_CALL_REDIRECTED:
+ ms_message("CALL_REDIRECTED\n");
+@@ -737,8 +796,14 @@
+ linphone_call_proceeding(lc,ev->cid,ev->did);
+ break;
+ case EXOSIP_CALL_RINGING:
++ printf("before,get level=%d, %d\n",linphone_core_get_rec_level(lc),lc->sound_conf.rec_lev);
++
+ ms_message("CALL_RINGING\n");
+ linphone_call_ringing(lc,ev);
++ //jd
++ printf("after,get level=%d, %d\n",linphone_core_get_rec_level(lc),lc->sound_conf.rec_lev);
++ linphone_core_set_rec_level(lc,lc->sound_conf.rec_lev);
++
+ break;
+ case EXOSIP_IN_SUBSCRIPTION_NEW:
+ ms_message("CALL_SUBSCRIPTION_NEW or UPDATE\n");
+@@ -760,10 +825,24 @@
+ break;
+ case EXOSIP_CALL_STARTAUDIO:
+ ms_message("CALL_STARTAUDIO\n");
++
++ printf("after,get level=%d, %d\n",linphone_core_get_rec_level(lc),lc->sound_conf.rec_lev);
++ linphone_core_set_rec_level(lc,lc->sound_conf.rec_lev);
++
++
+ break;
+ case EXOSIP_CALL_RELEASED:
+ ms_message("CALL_RELEASED\n");
+ linphone_call_released(lc, ev->cid);
++ /* sxh */
++ //pevt->evt_type = lin_WIFI_EVT_CALL_REMOTE_STATUS;
++ //pevt->evt_data = 1; /**<call id */
++ evt.evt_type = lin_WIFI_EVT_CALL_STATUS;
++ evt.evt_data = 60008; /**<call id */
++ if (lc->cb_handler!=NULL)
++ lc->cb_handler(lc->sid, &evt);
++
++ /* sxhh */
+ break;
+ case EXOSIP_REGISTRATION_FAILURE:
+ ms_message("REGISTRATION_FAILURE\n");
+Only in linphone-1.5.0-after/coreapi: exevents.c.orig
+diff -ur linphone-1.5.0/coreapi/linphonecore.c linphone-1.5.0-after/coreapi/linphonecore.c
+--- linphone-1.5.0/coreapi/linphonecore.c 2006-10-04 20:42:52.000000000 +0800
++++ linphone-1.5.0-after/coreapi/linphonecore.c 2007-01-19 21:02:53.851907512 +0800
+@@ -45,8 +45,8 @@
+ /* relative path where is stored local ring*/
+ #define LOCAL_RING "rings/oldphone.wav"
+ /* same for remote ring (ringback)*/
+-#define REMOTE_RING_FR "ringback.wav"
+-#define REMOTE_RING_US "ringback.wav"
++#define REMOTE_RING_FR "rings/ringback.wav"
++#define REMOTE_RING_US "rings/ringback.wav"
+
+
+ sdp_handler_t linphone_sdphandler={
+@@ -232,7 +232,7 @@
+
+ void sound_config_read(LinphoneCore *lc)
+ {
+- /*int tmp;*/
++ int tmp;
+ const char *tmpbuf;
+ const char *devid;
+ const MSList *elem;
+@@ -257,16 +257,16 @@
+ devid=lp_config_get_string(lc->config,"sound","capture_dev_id",NULL);
+ linphone_core_set_capture_device(lc,devid);
+
+-/*
+- tmp=lp_config_get_int(lc->config,"sound","play_lev",80);
++
++ tmp=lp_config_get_int(lc->config,"sound","play_lev",10);
+ linphone_core_set_play_level(lc,tmp);
+- tmp=lp_config_get_int(lc->config,"sound","ring_lev",80);
+- linphone_core_set_ring_level(lc,tmp);
+- tmp=lp_config_get_int(lc->config,"sound","rec_lev",80);
++ //tmp=lp_config_get_int(lc->config,"sound","ring_lev",80);
++ //linphone_core_set_ring_level(lc,tmp);
++ tmp=lp_config_get_int(lc->config,"sound","rec_lev",5);
+ linphone_core_set_rec_level(lc,tmp);
+- tmpbuf=lp_config_get_string(lc->config,"sound","source","m");
+- linphone_core_set_sound_source(lc,tmpbuf[0]);
+-*/
++ //tmpbuf=lp_config_get_string(lc->config,"sound","source","m");
++ //linphone_core_set_sound_source(lc,tmpbuf[0]);
++
+
+ tmpbuf=PACKAGE_SOUND_DIR "/" LOCAL_RING;
+ tmpbuf=lp_config_get_string(lc->config,"sound","local_ring",tmpbuf);
+@@ -827,8 +827,9 @@
+
+ void linphone_core_iterate(LinphoneCore *lc)
+ {
++//#define LIPS_DEBUG
+ eXosip_event_t *ev;
+-#ifdef AMD
++#ifdef LIPS_DEBUG
+ printf("entering linphone_core_iterate()\n");
+ #endif
+ if (lc->preview_finished){
+@@ -837,7 +838,7 @@
+ lc->ringstream=NULL;
+ lc_callback_obj_invoke(&lc->preview_finished_cb,lc);
+ }
+-#ifdef AMD
++#ifdef LIPS_DEBUG
+ printf("getting eXosip event...\n");
+ #endif
+
+@@ -1291,6 +1292,64 @@
+ return 0;
+ }
+
++//jd
++
++int linphone_core_on_hold_call(LinphoneCore *lc, const char *url)
++{
++ //LinphoneCall *call=lc->call;
++ if (lc->call==NULL){
++ return -1;
++ }
++
++ if (lc->call->state!=LCStateAVRunning){
++ /*call already accepted*/
++ return -1;
++ }
++
++ eXosip_lock();
++ eXosip_on_hold_call (lc->call->did);
++ eXosip_unlock();
++ //lc->vtable.display_status(lc,_("Connected."));
++ linphone_core_stop_media_streams(lc);
++ const char *file="/mnt/doc/vroot/opt/share/sounds/linphone/rings/sweet.wav";
++ linphone_core_use_files(lc, TRUE);
++ linphone_core_set_play_file(lc, file);
++ linphone_core_start_media_streams(lc, lc->call);
++
++ //linphone_core_start_media_streams(lc, lc->call);
++ return 0;
++}
++
++//jdd
++
++int linphone_core_off_hold_call(LinphoneCore *lc, const char *url)
++{
++ //LinphoneCall *call=lc->call;
++ if (lc->call==NULL){
++ return -1;
++ }
++
++/*
++ if (lc->call->state!=LCStateAVRunning){
++ return -1;
++ }
++*/
++ eXosip_lock();
++ //eXosip_off_hold_call (int jid, char *rtp_ip, int port);
++ eXosip_off_hold_call (lc->call->did, NULL, 0);
++ eXosip_unlock();
++ //lc->vtable.display_status(lc,_("Connected."));
++ linphone_core_stop_media_streams(lc);
++ linphone_core_use_files(lc, FALSE);
++ linphone_core_start_media_streams(lc, lc->call);
++ return 0;
++}
++
++//jdd
++
++
++
++
+ int linphone_core_send_publish(LinphoneCore *lc,
+ LinphoneOnlineStatus presence_mode)
+ {
+@@ -1359,14 +1418,16 @@
+ MSSndCard *sndcard;
+ lc->sound_conf.ring_lev=level;
+ sndcard=lc->sound_conf.ring_sndcard;
+- if (sndcard) ms_snd_card_set_level(sndcard,MS_SND_CARD_PLAYBACK,level);
++ if (sndcard) ms_snd_card_set_level(sndcard,MS_SND_CARD_MASTER,level);//HMH
++ //PLAYBACK
+ }
+
+ void linphone_core_set_play_level(LinphoneCore *lc, int level){
+ MSSndCard *sndcard;
+ lc->sound_conf.play_lev=level;
+ sndcard=lc->sound_conf.play_sndcard;
+- if (sndcard) ms_snd_card_set_level(sndcard,MS_SND_CARD_PLAYBACK,level);
++ if (sndcard) ms_snd_card_set_level(sndcard,MS_SND_CARD_MASTER,level);//HMH
++ //PLAYBACK
+ }
+
+ void linphone_core_set_rec_level(LinphoneCore *lc, int level)
+diff -ur linphone-1.5.0/coreapi/linphonecore.h linphone-1.5.0-after/coreapi/linphonecore.h
+--- linphone-1.5.0/coreapi/linphonecore.h 2006-10-04 20:41:24.000000000 +0800
++++ linphone-1.5.0-after/coreapi/linphonecore.h 2006-12-17 14:43:12.000000000 +0800
+@@ -363,6 +363,28 @@
+ LINPHONE_POLICY_USE_STUN
+ } LinphoneFirewallPolicy;
+
++typedef struct lin_wifi_evt lin_wifi_evt_t;
++typedef enum {
++ lin_WIFI_EVT_LINE,
++ lin_WIFI_EVT_LINE_SIGNAL,
++ lin_WIFI_EVT_LINE_CALL,
++ lin_WIFI_EVT_CALL_REMOTE_STATUS,
++ lin_WIFI_EVT_CALL_STATUS,
++ lin_WIFI_EVT_EXCEPTION
++}lin_wifi_evt_type_t;
++typedef void (*lin_wifi_cb_t)(uint32_t sid, lin_wifi_evt_t *evt);
++typedef uint32_t lin_wifi_evt_data_t;
++struct lin_wifi_evt{
++ lin_wifi_evt_type_t evt_type; /**< Event Type */
++ lin_wifi_cb_t cb; /**< Callback */
++ void* user_data; /**< Private user data */
++ lin_wifi_evt_data_t evt_data; /**< Event specific data */
++};
++
++
++
++typedef void (*fcbhandler_t)(unsigned int sid, lin_wifi_evt_t *in_evt_type);
++
+ typedef struct _LinphoneCore
+ {
+ LinphoneCoreVTable vtable;
+@@ -412,6 +434,9 @@
+ int rsvp_enable;
+ int rpc_enable;
+ #endif
++ /* sxh 20061126 add call back for voc enabler */
++ uint32_t sid; /**< the sid which the call back will pass back */
++ fcbhandler_t cb_handler; /**< the call back handler */
+ } LinphoneCore;
+
+ #define LINPHONE_IPADDR_SIZE 64
+@@ -442,6 +467,10 @@
+
+ void linphone_core_send_dtmf(LinphoneCore *lc,char dtmf);
+
++int linphone_core_on_hold_call(LinphoneCore *lc, const char *url);
++
++int linphone_core_off_hold_call(LinphoneCore *lc, const char *url);
++
+ int linphone_core_set_primary_contact(LinphoneCore *lc, const char *contact);
+
+ const char *linphone_core_get_primary_contact(LinphoneCore *lc);
+Only in linphone-1.5.0-after/coreapi: linphonecore.h.orig
+diff -ur linphone-1.5.0/coreapi/Makefile.in linphone-1.5.0-after/coreapi/Makefile.in
+--- linphone-1.5.0/coreapi/Makefile.in 2006-10-11 03:26:21.000000000 +0800
++++ linphone-1.5.0-after/coreapi/Makefile.in 2007-01-19 16:05:04.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -15,6 +15,8 @@
+ @SET_MAKE@
+
+
++SOURCES = $(liblinphone_la_SOURCES)
++
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -43,11 +45,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -75,11 +77,11 @@
+ am__depfiles_maybe = depfiles
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
++LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ SOURCES = $(liblinphone_la_SOURCES)
+ DIST_SOURCES = $(liblinphone_la_SOURCES)
+@@ -89,7 +91,6 @@
+ CTAGS = ctags
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -136,7 +137,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -146,27 +146,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -220,9 +214,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -239,9 +236,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -249,22 +243,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+diff -ur linphone-1.5.0/coreapi/proxy.c linphone-1.5.0-after/coreapi/proxy.c
+--- linphone-1.5.0/coreapi/proxy.c 2006-10-04 21:00:32.000000000 +0800
++++ linphone-1.5.0-after/coreapi/proxy.c 2006-12-07 12:11:45.000000000 +0800
+@@ -206,19 +206,35 @@
+
+ void linphone_core_update_proxy_register(LinphoneCore *lc){
+ const MSList *elem;
++ //fprintf(stdout, "Enter linphone_core_update_proxy_register.\n");
++
++
++
++ //elem=linphone_core_get_proxy_config_list(lc);//HMH
++ //fprintf(stdout, "linphone_core_get_proxy_config_list (%x)\n", elem);
++
+ for(elem=linphone_core_get_proxy_config_list(lc);elem!=NULL;elem=ms_list_next(elem)){
+ LinphoneProxyConfig *cfg=(LinphoneProxyConfig*) elem->data;
++
++
++ //fprintf(stdout, "cfg->rid(%d) cfg->reg_sendregister (%d).\n", cfg->rid, cfg->reg_sendregister);
++
+ if (cfg->reg_sendregister && cfg->rid>=0){
+ if ( (time(NULL)-cfg->reg_time) > cfg->expires){
+ /* update the registration */
++ //fprintf(stdout, "Performing linphone_proxy_config_register.\n");
++
+ linphone_proxy_config_register(cfg);
+ }
+ else if (time(NULL)-cfg->reg_time > 200) {
+ /* update the registration more often */
++ //fprintf(stdout, "Performing linphone_proxy_config_register.\n");
++
+ linphone_proxy_config_register(cfg);
+ }
+ }
+ }
++
+ }
+
+
+diff -ur linphone-1.5.0/depcomp linphone-1.5.0-after/depcomp
+--- linphone-1.5.0/depcomp 2006-08-25 16:46:17.000000000 +0800
++++ linphone-1.5.0-after/depcomp 2007-01-19 16:05:06.000000000 +0800
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # depcomp - compile a program generating dependencies as side-effects
+
+-scriptversion=2005-07-09.11
++scriptversion=2004-05-31.23
+
+-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
++# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, 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
+@@ -17,8 +17,8 @@
+
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA
+-# 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
+
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -50,11 +50,11 @@
+
+ Report bugs to <bug-automake@gnu.org>.
+ EOF
+- exit $?
++ exit 0
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+- exit $?
++ exit 0
+ ;;
+ esac
+
+@@ -287,43 +287,36 @@
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+- # With Tru64 cc, shared objects can also be used to make a
+- # static library. This mecanism is used in libtool 1.4 series to
+- # handle both shared and static libraries in a single compilation.
+- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+- #
+- # With libtool 1.5 this exception was removed, and libtool now
+- # generates 2 separate objects for the 2 libraries. These two
+- # compilations output dependencies in in $dir.libs/$base.o.d and
+- # in $dir$base.o.d. We have to check for both files, because
+- # one of the two compilations can be disabled. We should prefer
+- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+- # automatically cleaned when .libs/ is deleted, while ignoring
+- # the former would cause a distcleancheck panic.
+- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
+- tmpdepfile2=$dir$base.o.d # libtool 1.5
+- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
+- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
++ # Dependencies are output in .lo.d with libtool 1.4.
++ # With libtool 1.5 they are output both in $dir.libs/$base.o.d
++ # and in $dir.libs/$base.o.d and $dir$base.o.d. We process the
++ # latter, because the former will be cleaned when $dir.libs is
++ # erased.
++ tmpdepfile1="$dir.libs/$base.lo.d"
++ tmpdepfile2="$dir$base.o.d"
++ tmpdepfile3="$dir.libs/$base.d"
+ "$@" -Wc,-MD
+ else
+- tmpdepfile1=$dir$base.o.d
+- tmpdepfile2=$dir$base.d
+- tmpdepfile3=$dir$base.d
+- tmpdepfile4=$dir$base.d
++ tmpdepfile1="$dir$base.o.d"
++ tmpdepfile2="$dir$base.d"
++ tmpdepfile3="$dir$base.d"
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
++ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+- do
+- test -f "$tmpdepfile" && break
+- done
++ if test -f "$tmpdepfile1"; then
++ tmpdepfile="$tmpdepfile1"
++ elif test -f "$tmpdepfile2"; then
++ tmpdepfile="$tmpdepfile2"
++ else
++ tmpdepfile="$tmpdepfile3"
++ fi
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+@@ -467,8 +460,7 @@
+ done
+
+ "$@" -E |
+- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
++ sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+diff -ur linphone-1.5.0/exosip/eXosip.h linphone-1.5.0-after/exosip/eXosip.h
+--- linphone-1.5.0/exosip/eXosip.h 2006-08-09 21:01:57.000000000 +0800
++++ linphone-1.5.0-after/exosip/eXosip.h 2006-11-30 17:06:45.000000000 +0800
+@@ -609,33 +609,33 @@
+ EXOSIP_REGISTRATION_TERMINATED, /* UA is not registred any more. */
+
+ /* for UAC events */
+- EXOSIP_CALL_NOANSWER, /* announce no answer within the timeout */
+- EXOSIP_CALL_PROCEEDING, /* announce processing by a remote app */
+- EXOSIP_CALL_RINGING, /* announce ringback */
+- EXOSIP_CALL_ANSWERED, /* announce start of call */
+- EXOSIP_CALL_REDIRECTED, /* announce a redirection */
+- EXOSIP_CALL_REQUESTFAILURE, /* announce a request failure */
++ EXOSIP_CALL_NOANSWER, /* 5 announce no answer within the timeout */
++ EXOSIP_CALL_PROCEEDING, /* 6 announce processing by a remote app */
++ EXOSIP_CALL_RINGING, /* 7 announce ringback */
++ EXOSIP_CALL_ANSWERED, /* 8 announce start of call */
++ EXOSIP_CALL_REDIRECTED, /* 9 announce a redirection */
++ EXOSIP_CALL_REQUESTFAILURE, /* 10 announce a request failure */
+ EXOSIP_CALL_SERVERFAILURE, /* announce a server failure */
+ EXOSIP_CALL_GLOBALFAILURE, /* announce a global failure */
+
+ /* for UAS events */
+ EXOSIP_CALL_NEW, /* announce a new call */
+ EXOSIP_CALL_ACK, /* ACK received for 200ok to INVITE */
+- EXOSIP_CALL_CANCELLED, /* announce that call has been cancelled */
++ EXOSIP_CALL_CANCELLED, /* 15 announce that call has been cancelled */
+ EXOSIP_CALL_TIMEOUT, /* announce that call has failed */
+ EXOSIP_CALL_HOLD, /* audio must be stopped */
+ EXOSIP_CALL_OFFHOLD, /* audio must be restarted */
+ EXOSIP_CALL_CLOSED, /* a BYE was received for this call */
+
+ /* for both UAS & UAC events */
+- EXOSIP_CALL_STARTAUDIO, /* audio must be established */
++ EXOSIP_CALL_STARTAUDIO, /* 20 audio must be established */
+ EXOSIP_CALL_RELEASED, /* call context is cleared. */
+
+ /* for UAC events */
+ EXOSIP_OPTIONS_NOANSWER, /* announce no answer within the timeout */
+ EXOSIP_OPTIONS_PROCEEDING, /* announce processing by a remote app */
+ EXOSIP_OPTIONS_ANSWERED, /* announce a 200ok */
+- EXOSIP_OPTIONS_REDIRECTED, /* announce a redirection */
++ EXOSIP_OPTIONS_REDIRECTED, /* 25 announce a redirection */
+ EXOSIP_OPTIONS_REQUESTFAILURE, /* announce a request failure */
+ EXOSIP_OPTIONS_SERVERFAILURE, /* announce a server failure */
+ EXOSIP_OPTIONS_GLOBALFAILURE, /* announce a global failure */
+diff -ur linphone-1.5.0/exosip/Makefile.in linphone-1.5.0-after/exosip/Makefile.in
+--- linphone-1.5.0/exosip/Makefile.in 2006-10-11 03:26:21.000000000 +0800
++++ linphone-1.5.0-after/exosip/Makefile.in 2007-01-19 16:05:04.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,6 +14,8 @@
+
+ @SET_MAKE@
+
++SOURCES = $(libeXosip_la_SOURCES)
++
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -41,11 +43,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -65,11 +67,11 @@
+ am__depfiles_maybe = depfiles
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
++LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ SOURCES = $(libeXosip_la_SOURCES)
+ DIST_SOURCES = $(libeXosip_la_SOURCES)
+@@ -77,7 +79,6 @@
+ CTAGS = ctags
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -124,7 +125,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -134,27 +134,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -208,9 +202,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -227,9 +224,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -237,22 +231,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+diff -ur linphone-1.5.0/gnome/Makefile.in linphone-1.5.0-after/gnome/Makefile.in
+--- linphone-1.5.0/gnome/Makefile.in 2006-10-11 03:26:21.000000000 +0800
++++ linphone-1.5.0-after/gnome/Makefile.in 2007-01-19 16:05:05.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -15,6 +15,8 @@
+ @SET_MAKE@
+
+
++SOURCES = $(linphone_SOURCES) $(linphone_applet_SOURCES)
++
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -45,11 +47,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -101,11 +103,11 @@
+ am__depfiles_maybe = depfiles
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
++LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ SOURCES = $(linphone_SOURCES) $(linphone_applet_SOURCES)
+ DIST_SOURCES = $(am__linphone_SOURCES_DIST) \
+@@ -123,7 +125,6 @@
+ CTAGS = ctags
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -170,7 +171,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -180,27 +180,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -254,9 +248,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -273,9 +270,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -283,22 +277,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+diff -ur linphone-1.5.0/gsmlib/Makefile.in linphone-1.5.0-after/gsmlib/Makefile.in
+--- linphone-1.5.0/gsmlib/Makefile.in 2006-10-11 03:26:22.000000000 +0800
++++ linphone-1.5.0-after/gsmlib/Makefile.in 2007-01-19 16:05:05.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,6 +14,8 @@
+
+ @SET_MAKE@
+
++SOURCES = $(libgsm_la_SOURCES)
++
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -42,11 +44,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -65,11 +67,11 @@
+ am__depfiles_maybe = depfiles
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
++LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ SOURCES = $(libgsm_la_SOURCES)
+ DIST_SOURCES = $(libgsm_la_SOURCES)
+@@ -77,7 +79,6 @@
+ CTAGS = ctags
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -124,7 +125,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -134,27 +134,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -208,9 +202,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -227,9 +224,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -237,22 +231,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+diff -ur linphone-1.5.0/INSTALL linphone-1.5.0-after/INSTALL
+--- linphone-1.5.0/INSTALL 2006-08-25 16:46:18.000000000 +0800
++++ linphone-1.5.0-after/INSTALL 2007-01-19 16:05:07.000000000 +0800
+@@ -1,7 +1,7 @@
+ Installation Instructions
+ *************************
+
+-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
++Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free
+ Software Foundation, Inc.
+
+ This file is free documentation; the Free Software Foundation gives
+@@ -102,16 +102,16 @@
+ Installation Names
+ ==================
+
+-By default, `make install' installs the package's commands under
+-`/usr/local/bin', include files under `/usr/local/include', etc. You
+-can specify an installation prefix other than `/usr/local' by giving
+-`configure' the option `--prefix=PREFIX'.
++By default, `make install' will install the package's files in
++`/usr/local/bin', `/usr/local/man', etc. You can specify an
++installation prefix other than `/usr/local' by giving `configure' the
++option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+ architecture-specific files and architecture-independent files. If you
+-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+-PREFIX as the prefix for installing programs and libraries.
+-Documentation and other data files still use the regular prefix.
++give `configure' the option `--exec-prefix=PREFIX', the package will
++use PREFIX as the prefix for installing programs and libraries.
++Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+ options like `--bindir=DIR' to specify different values for particular
+@@ -159,7 +159,7 @@
+ need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+-use the option `--target=TYPE' to select the type of system they will
++use the `--target=TYPE' option to select the type of system they will
+ produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+@@ -189,13 +189,8 @@
+
+ ./configure CC=/usr/local2/bin/gcc
+
+-causes the specified `gcc' to be used as the C compiler (unless it is
+-overridden in the site shell script). Here is a another example:
+-
+- /bin/bash ./configure CONFIG_SHELL=/bin/bash
+-
+-Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
+-configuration-related scripts to be executed by `/bin/bash'.
++will cause the specified gcc to be used as the C compiler (unless it is
++overridden in the site shell script).
+
+ `configure' Invocation
+ ======================
+diff -ur linphone-1.5.0/install-sh linphone-1.5.0-after/install-sh
+--- linphone-1.5.0/install-sh 2006-08-25 16:46:15.000000000 +0800
++++ linphone-1.5.0-after/install-sh 2007-01-19 16:05:04.000000000 +0800
+@@ -1,7 +1,7 @@
+ #!/bin/sh
+ # install - install a program, script, or datafile
+
+-scriptversion=2005-05-14.22
++scriptversion=2004-09-10.20
+
+ # This originates from X11R5 (mit/util/scripts/install.sh), which was
+ # later released in X11R6 (xc/config/util/install.sh) with the
+@@ -109,7 +109,7 @@
+ shift
+ continue;;
+
+- --help) echo "$usage"; exit $?;;
++ --help) echo "$usage"; exit 0;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+@@ -134,7 +134,7 @@
+ shift
+ continue;;
+
+- --version) echo "$0 $scriptversion"; exit $?;;
++ --version) echo "$0 $scriptversion"; exit 0;;
+
+ *) # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+@@ -213,7 +213,7 @@
+ fi
+
+ # This sed command emulates the dirname command.
+- dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
++ dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+ # Make sure that the destination directory exists.
+
+@@ -226,8 +226,7 @@
+ oIFS=$IFS
+ # Some sh's can't handle IFS=/ for some reason.
+ IFS='%'
+- set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+- shift
++ set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ IFS=$oIFS
+
+ pathcomp=
+@@ -296,7 +295,7 @@
+ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+ || {
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+- (exit 1); exit 1
++ (exit 1); exit
+ }
+ else
+ :
+@@ -307,12 +306,12 @@
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+ }
+ }
+- fi || { (exit 1); exit 1; }
++ fi || { (exit 1); exit; }
+ done
+
+ # The final little trick to "correctly" pass the exit status to the exit trap.
+ {
+- (exit 0); exit 0
++ (exit 0); exit
+ }
+
+ # Local variables:
+Only in linphone-1.5.0/ipkg: linphone.control
+diff -ur linphone-1.5.0/ipkg/Makefile.in linphone-1.5.0-after/ipkg/Makefile.in
+--- linphone-1.5.0/ipkg/Makefile.in 2006-10-11 03:26:22.000000000 +0800
++++ linphone-1.5.0-after/ipkg/Makefile.in 2007-01-19 16:05:05.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -41,11 +41,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -55,7 +55,6 @@
+ DIST_SOURCES =
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -102,7 +101,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -112,27 +110,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -186,9 +178,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -205,9 +200,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -215,22 +207,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+Only in linphone-1.5.0: linphone.spec
+diff -ur linphone-1.5.0/ltmain.sh linphone-1.5.0-after/ltmain.sh
+--- linphone-1.5.0/ltmain.sh 2006-03-12 02:49:04.000000000 +0800
++++ linphone-1.5.0-after/ltmain.sh 2007-01-19 16:04:49.000000000 +0800
+@@ -1,7 +1,7 @@
+ # ltmain.sh - Provide generalized library-building support services.
+ # NOTE: Changing this file will not affect anything until you rerun configure.
+ #
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
+ # Free Software Foundation, Inc.
+ # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+ #
+@@ -17,7 +17,7 @@
+ #
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -33,6 +33,9 @@
+ # function.
+ progpath="$0"
+
++# RH: define SED for historic ltconfig's generated by Libtool 1.3
++[ -z "$SED" ] && SED=sed
++
+ # The name of this program:
+ progname=`echo "$progpath" | $SED $basename`
+ modename="$progname"
+@@ -43,14 +46,9 @@
+
+ PROGRAM=ltmain.sh
+ PACKAGE=libtool
+-VERSION="1.5.22 Debian 1.5.22-4"
+-TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
++VERSION=1.5.6
++TIMESTAMP=" (1.1220.2.95 2004/04/11 05:50:42)"
+
+-# See if we are running on zsh, and set the options which allow our
+-# commands through without removal of \ escapes.
+-if test -n "${ZSH_VERSION+set}" ; then
+- setopt NO_GLOB_SUBST
+-fi
+
+ # Check that we have a working $echo.
+ if test "X$1" = X--no-reexec; then
+@@ -88,15 +86,14 @@
+ Xsed="${SED}"' -e 1s/^X//'
+ sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+ # test EBCDIC or ASCII
+-case `echo X|tr X '\101'` in
+- A) # ASCII based system
+- # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+- SP2NL='tr \040 \012'
+- NL2SP='tr \015\012 \040\040'
++case `echo A|tr A '\301'` in
++ A) # EBCDIC based system
++ SP2NL="tr '\100' '\n'"
++ NL2SP="tr '\r\n' '\100\100'"
+ ;;
+- *) # EBCDIC based system
+- SP2NL='tr \100 \n'
+- NL2SP='tr \r\n \100\100'
++ *) # Assume ASCII based system
++ SP2NL="tr '\040' '\012'"
++ NL2SP="tr '\015\012' '\040\040'"
+ ;;
+ esac
+
+@@ -113,9 +110,8 @@
+ fi
+
+ # Make sure IFS has a sensible default
+-lt_nl='
+-'
+-IFS=" $lt_nl"
++: ${IFS="
++"}
+
+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ $echo "$modename: not configured to build any kind of library" 1>&2
+@@ -132,8 +128,6 @@
+ show="$echo"
+ show_help=
+ execute_dlfiles=
+-duplicate_deps=no
+-preserve_args=
+ lo2o="s/\\.lo\$/.${objext}/"
+ o2lo="s/\\.${objext}\$/.lo/"
+
+@@ -141,51 +135,13 @@
+ # Shell function definitions:
+ # This seems to be the best place for them
+
+-# func_mktempdir [string]
+-# Make a temporary directory that won't clash with other running
+-# libtool processes, and avoids race conditions if possible. If
+-# given, STRING is the basename for that directory.
+-func_mktempdir ()
+-{
+- my_template="${TMPDIR-/tmp}/${1-$progname}"
+-
+- if test "$run" = ":"; then
+- # Return a directory name, but don't create it in dry-run mode
+- my_tmpdir="${my_template}-$$"
+- else
+-
+- # If mktemp works, use that first and foremost
+- my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+-
+- if test ! -d "$my_tmpdir"; then
+- # Failing that, at least try and use $RANDOM to avoid a race
+- my_tmpdir="${my_template}-${RANDOM-0}$$"
+-
+- save_mktempdir_umask=`umask`
+- umask 0077
+- $mkdir "$my_tmpdir"
+- umask $save_mktempdir_umask
+- fi
+-
+- # If we're not in dry-run mode, bomb out on failure
+- test -d "$my_tmpdir" || {
+- $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+- exit $EXIT_FAILURE
+- }
+- fi
+-
+- $echo "X$my_tmpdir" | $Xsed
+-}
+-
+-
+ # func_win32_libid arg
+ # return the library type of file 'arg'
+ #
+ # Need a lot of goo to handle *both* DLLs and import libs
+ # Has to be a shell function in order to 'eat' the argument
+ # that is supplied when $file_magic_command is called.
+-func_win32_libid ()
+-{
++func_win32_libid () {
+ win32_libid_type="unknown"
+ win32_fileres=`file -L $1 2>/dev/null`
+ case $win32_fileres in
+@@ -196,11 +152,12 @@
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 | \
+- $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
+- case $win32_nmres in
+- import*) win32_libid_type="x86 archive import";;
+- *) win32_libid_type="x86 archive static";;
+- esac
++ sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
++ if test "X$win32_nmres" = "Ximport" ; then
++ win32_libid_type="x86 archive import"
++ else
++ win32_libid_type="x86 archive static"
++ fi
+ fi
+ ;;
+ *DLL*)
+@@ -224,8 +181,7 @@
+ # Only attempt this if the compiler in the base compile
+ # command doesn't match the default compiler.
+ # arg is usually of the form 'gcc ...'
+-func_infer_tag ()
+-{
++func_infer_tag () {
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+@@ -282,116 +238,12 @@
+ esac
+ fi
+ }
+-
+-
+-# func_extract_an_archive dir oldlib
+-func_extract_an_archive ()
+-{
+- f_ex_an_ar_dir="$1"; shift
+- f_ex_an_ar_oldlib="$1"
+-
+- $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+- $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+- if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+- :
+- else
+- $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+- exit $EXIT_FAILURE
+- fi
+-}
+-
+-# func_extract_archives gentop oldlib ...
+-func_extract_archives ()
+-{
+- my_gentop="$1"; shift
+- my_oldlibs=${1+"$@"}
+- my_oldobjs=""
+- my_xlib=""
+- my_xabs=""
+- my_xdir=""
+- my_status=""
+-
+- $show "${rm}r $my_gentop"
+- $run ${rm}r "$my_gentop"
+- $show "$mkdir $my_gentop"
+- $run $mkdir "$my_gentop"
+- my_status=$?
+- if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+- exit $my_status
+- fi
+-
+- for my_xlib in $my_oldlibs; do
+- # Extract the objects.
+- case $my_xlib in
+- [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+- *) my_xabs=`pwd`"/$my_xlib" ;;
+- esac
+- my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+- my_xdir="$my_gentop/$my_xlib"
+-
+- $show "${rm}r $my_xdir"
+- $run ${rm}r "$my_xdir"
+- $show "$mkdir $my_xdir"
+- $run $mkdir "$my_xdir"
+- exit_status=$?
+- if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+- exit $exit_status
+- fi
+- case $host in
+- *-darwin*)
+- $show "Extracting $my_xabs"
+- # Do not bother doing anything if just a dry run
+- if test -z "$run"; then
+- darwin_orig_dir=`pwd`
+- cd $my_xdir || exit $?
+- darwin_archive=$my_xabs
+- darwin_curdir=`pwd`
+- darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+- darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+- if test -n "$darwin_arches"; then
+- darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+- darwin_arch=
+- $show "$darwin_base_archive has multiple architectures $darwin_arches"
+- for darwin_arch in $darwin_arches ; do
+- mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+- lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+- cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+- func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+- cd "$darwin_curdir"
+- $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+- done # $darwin_arches
+- ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+- darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+- darwin_file=
+- darwin_files=
+- for darwin_file in $darwin_filelist; do
+- darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+- lipo -create -output "$darwin_file" $darwin_files
+- done # $darwin_filelist
+- ${rm}r unfat-$$
+- cd "$darwin_orig_dir"
+- else
+- cd "$darwin_orig_dir"
+- func_extract_an_archive "$my_xdir" "$my_xabs"
+- fi # $darwin_arches
+- fi # $run
+- ;;
+- *)
+- func_extract_an_archive "$my_xdir" "$my_xabs"
+- ;;
+- esac
+- my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+- done
+- func_extract_archives_result="$my_oldobjs"
+-}
+ # End of Shell function definitions
+ #####################################
+
+ # Darwin sucks
+ eval std_shrext=\"$shrext_cmds\"
+
+-disable_libs=no
+-
+ # Parse our command line options once, thoroughly.
+ while test "$#" -gt 0
+ do
+@@ -456,10 +308,10 @@
+ --version)
+ $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+ $echo
+- $echo "Copyright (C) 2005 Free Software Foundation, Inc."
++ $echo "Copyright (C) 2003 Free Software Foundation, Inc."
+ $echo "This is free software; see the source for copying conditions. There is NO"
+ $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+- exit $?
++ exit $EXIT_SUCCESS
+ ;;
+
+ --config)
+@@ -468,7 +320,7 @@
+ for tagname in $taglist; do
+ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+ done
+- exit $?
++ exit $EXIT_SUCCESS
+ ;;
+
+ --debug)
+@@ -493,7 +345,7 @@
+ else
+ $echo "disable static libraries"
+ fi
+- exit $?
++ exit $EXIT_SUCCESS
+ ;;
+
+ --finish) mode="finish" ;;
+@@ -508,11 +360,7 @@
+ preserve_args="$preserve_args $arg"
+ ;;
+
+- --tag)
+- prevopt="--tag"
+- prev=tag
+- preserve_args="$preserve_args --tag"
+- ;;
++ --tag) prevopt="--tag" prev=tag ;;
+ --tag=*)
+ set tag "$optarg" ${1+"$@"}
+ shift
+@@ -544,18 +392,6 @@
+ exit $EXIT_FAILURE
+ fi
+
+-case $disable_libs in
+-no)
+- ;;
+-shared)
+- build_libtool_libs=no
+- build_old_libs=yes
+- ;;
+-static)
+- build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+- ;;
+-esac
+-
+ # If this variable is set in any of the actions, the command in it
+ # will be execed at the end. This prevents here-documents from being
+ # left over by shells.
+@@ -566,7 +402,7 @@
+ # Infer the operation mode.
+ if test -z "$mode"; then
+ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+- $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
++ $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2
+ case $nonopt in
+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+ mode=link
+@@ -632,7 +468,7 @@
+
+ for arg
+ do
+- case $arg_mode in
++ case "$arg_mode" in
+ arg )
+ # do not "continue". Instead, add this to base_compile
+ lastarg="$arg"
+@@ -714,10 +550,7 @@
+ case $lastarg in
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+- # in scan sets, and some SunOS ksh mistreat backslash-escaping
+- # in scan sets (worked around with variable expansion),
+- # and furthermore cannot handle '|' '&' '(' ')' in scan sets
+- # at all, so we specify them separately.
++ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ lastarg="\"$lastarg\""
+ ;;
+@@ -791,14 +624,6 @@
+ esac
+ done
+
+- qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+- case $qlibobj in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- qlibobj="\"$qlibobj\"" ;;
+- esac
+- test "X$libobj" != "X$qlibobj" \
+- && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
+- && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$obj"; then
+@@ -871,17 +696,12 @@
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+- $echo "$srcfile" > "$lockfile"
++ $echo $srcfile > "$lockfile"
+ fi
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+- qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+- case $qsrcfile in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- qsrcfile="\"$qsrcfile\"" ;;
+- esac
+
+ $run $rm "$libobj" "${libobj}T"
+
+@@ -903,18 +723,18 @@
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+- command="$base_compile $qsrcfile $pic_flag"
++ command="$base_compile $srcfile $pic_flag"
+ else
+ # Don't build PIC code
+- command="$base_compile $qsrcfile"
++ command="$base_compile $srcfile"
+ fi
+
+ if test ! -d "${xdir}$objdir"; then
+ $show "$mkdir ${xdir}$objdir"
+ $run $mkdir ${xdir}$objdir
+- exit_status=$?
+- if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+- exit $exit_status
++ status=$?
++ if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
++ exit $status
+ fi
+ fi
+
+@@ -986,9 +806,9 @@
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+- command="$base_compile $qsrcfile"
++ command="$base_compile $srcfile"
+ else
+- command="$base_compile $qsrcfile $pic_flag"
++ command="$base_compile $srcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+@@ -1117,7 +937,6 @@
+ no_install=no
+ objs=
+ non_pic_objects=
+- notinst_path= # paths that contain not-installed libtool libraries
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+@@ -1146,15 +965,14 @@
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+- prefer_static_libs=yes
+ else
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+- prefer_static_libs=built
+ fi
+ build_libtool_libs=no
+ build_old_libs=yes
++ prefer_static_libs=yes
+ break
+ ;;
+ esac
+@@ -1329,11 +1147,6 @@
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+- else
+- # If the PIC object exists, use it instead.
+- # $xdir was prepended to $pic_object above.
+- non_pic_object="$pic_object"
+- non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+@@ -1417,13 +1230,6 @@
+ prev=
+ continue
+ ;;
+- darwin_framework|darwin_framework_skip)
+- test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
+- compile_command="$compile_command $arg"
+- finalize_command="$finalize_command $arg"
+- prev=
+- continue
+- ;;
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+@@ -1482,18 +1288,6 @@
+ continue
+ ;;
+
+- -framework|-arch|-isysroot)
+- case " $CC " in
+- *" ${arg} ${1} "* | *" ${arg} ${1} "*)
+- prev=darwin_framework_skip ;;
+- *) compiler_flags="$compiler_flags $arg"
+- prev=darwin_framework ;;
+- esac
+- compile_command="$compile_command $arg"
+- finalize_command="$finalize_command $arg"
+- continue
+- ;;
+-
+ -inst-prefix-dir)
+ prev=inst_prefix
+ continue
+@@ -1520,8 +1314,7 @@
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+- absdir="$dir"
+- notinst_path="$notinst_path $dir"
++ exit $EXIT_FAILURE
+ fi
+ dir="$absdir"
+ ;;
+@@ -1535,15 +1328,10 @@
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+- testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+- case :$dllsearchpath: in
+- *":$testbindir:"*) ;;
+- *) dllsearchpath="$dllsearchpath:$testbindir";;
+- esac
+ ;;
+ esac
+ continue
+@@ -1552,15 +1340,15 @@
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
++ *-*-cygwin* | *-*-pw32* | *-*-beos*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+- *-*-os2*)
++ *-*-mingw* | *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
++ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+@@ -1568,19 +1356,10 @@
+ # Rhapsody C and math libraries are in the System framework
+ deplibs="$deplibs -framework System"
+ continue
+- ;;
+- *-*-sco3.2v5* | *-*-sco5v6*)
+- # Causes problems with __ctype
+- test "X$arg" = "X-lc" && continue
+- ;;
+- *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+- # Compiler inserts libc in the correct place for threads to work
+- test "X$arg" = "X-lc" && continue
+- ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
++ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+@@ -1590,20 +1369,8 @@
+ continue
+ ;;
+
+- # Tru64 UNIX uses -model [arg] to determine the layout of C++
+- # classes, name mangling, and exception handling.
+- -model)
+- compile_command="$compile_command $arg"
+- compiler_flags="$compiler_flags $arg"
+- finalize_command="$finalize_command $arg"
+- prev=xcompiler
+- continue
+- ;;
+-
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+- compiler_flags="$compiler_flags $arg"
+- compile_command="$compile_command $arg"
+- finalize_command="$finalize_command $arg"
++ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+@@ -1612,19 +1379,13 @@
+ continue
+ ;;
+
+- # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+- # -r[0-9][0-9]* specifies the processor on the SGI compiler
+- # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+- # +DA*, +DD* enable 64-bit mode on the HP compiler
+- # -q* pass through compiler args for the IBM compiler
+- # -m* pass through architecture-specific compiler args for GCC
+- # -m*, -t[45]*, -txscale* pass through architecture-specific
+- # compiler args for GCC
+- # -pg pass through profiling flag for GCC
+- # @file GCC response files
+- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
+- -t[45]*|-txscale*|@*)
+-
++ # gcc -m* arguments should be passed to the linker via $compiler_flags
++ # in order to pass architecture information to the linker
++ # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo
++ # but this is not reliable with gcc because gcc may use -mfoo to
++ # select a different linker, different libraries, etc, while
++ # -Wl,-mfoo simply passes -mfoo to the linker.
++ -m*)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+@@ -1635,7 +1396,9 @@
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+- compiler_flags="$compiler_flags $arg"
++ if test "$with_gcc" = "yes" ; then
++ compiler_flags="$compiler_flags $arg"
++ fi
+ continue
+ ;;
+
+@@ -1873,11 +1636,6 @@
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+- else
+- # If the PIC object exists, use it instead.
+- # $xdir was prepended to $pic_object above.
+- non_pic_object="$pic_object"
+- non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+@@ -1983,9 +1741,9 @@
+ if test ! -d "$output_objdir"; then
+ $show "$mkdir $output_objdir"
+ $run $mkdir $output_objdir
+- exit_status=$?
+- if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+- exit $exit_status
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$output_objdir"; then
++ exit $status
+ fi
+ fi
+
+@@ -2048,6 +1806,7 @@
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ notinst_deplibs= # not-installed libtool libraries
++ notinst_path= # paths that contain not-installed libtool libraries
+ case $linkmode in
+ lib)
+ passes="conv link"
+@@ -2082,10 +1841,7 @@
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+- link)
+- libs="$deplibs %DEPLIBS%"
+- test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+- ;;
++ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
+ if test "$pass" = dlopen; then
+@@ -2102,7 +1858,7 @@
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+- compiler_flags="$compiler_flags $deplib"
++ deplibs="$deplib $deplibs"
+ fi
+ continue
+ ;;
+@@ -2111,6 +1867,10 @@
+ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+ continue
+ fi
++ if test "$pass" = conv; then
++ deplibs="$deplib $deplibs"
++ continue
++ fi
+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ for search_ext in .la $std_shrext .so .a; do
+@@ -2221,22 +1981,7 @@
+ fi
+ case $linkmode in
+ lib)
+- valid_a_lib=no
+- case $deplibs_check_method in
+- match_pattern*)
+- set dummy $deplibs_check_method
+- match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+- if eval $echo \"$deplib\" 2>/dev/null \
+- | $SED 10q \
+- | $EGREP "$match_pattern_regex" > /dev/null; then
+- valid_a_lib=yes
+- fi
+- ;;
+- pass_all)
+- valid_a_lib=yes
+- ;;
+- esac
+- if test "$valid_a_lib" != yes; then
++ if test "$deplibs_check_method" != pass_all; then
+ $echo
+ $echo "*** Warning: Trying to link with static lib archive $deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+@@ -2286,7 +2031,7 @@
+ esac # case $deplib
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+- $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
++ $echo "$modename: cannot find the library \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+@@ -2310,8 +2055,6 @@
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+- avoidtemprpath=
+-
+
+ # Read the .la file
+ case $lib in
+@@ -2410,19 +2153,11 @@
+ dir="$libdir"
+ absdir="$libdir"
+ fi
+- test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+- if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+- dir="$ladir"
+- absdir="$abs_ladir"
+- # Remove this search path later
+- notinst_path="$notinst_path $abs_ladir"
+- else
+- dir="$ladir/$objdir"
+- absdir="$abs_ladir/$objdir"
+- # Remove this search path later
+- notinst_path="$notinst_path $abs_ladir"
+- fi
++ dir="$ladir/$objdir"
++ absdir="$abs_ladir/$objdir"
++ # Remove this search path later
++ notinst_path="$notinst_path $abs_ladir"
+ fi # $installed = yes
+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+@@ -2495,12 +2230,12 @@
+ if test -n "$library_names" &&
+ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ # We need to hardcode the library path
+- if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
++ if test -n "$shlibpath_var"; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath " in
+ *" $dir "*) ;;
+ *" $absdir "*) ;;
+- *) temp_rpath="$temp_rpath $absdir" ;;
++ *) temp_rpath="$temp_rpath $dir" ;;
+ esac
+ fi
+
+@@ -2537,12 +2272,8 @@
+ fi
+
+ link_static=no # Whether the deplib will be linked statically
+- use_static_libs=$prefer_static_libs
+- if test "$use_static_libs" = built && test "$installed" = yes ; then
+- use_static_libs=no
+- fi
+ if test -n "$library_names" &&
+- { test "$use_static_libs" = no || test -z "$old_library"; }; then
++ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+@@ -2655,15 +2386,11 @@
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+- *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+- *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+- *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+- *-*-unixware7*) add_dir="-L$dir" ;;
++ *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a module then we can not link against
+ # it, someone is ignoring the new warnings I added
+- if /usr/bin/file -L $add 2> /dev/null |
+- $EGREP ": [^:]* bundle" >/dev/null ; then
++ if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
+ $echo "** Warning, lib $linklib is a module, not a shared library"
+ if test -z "$old_library" ; then
+ $echo
+@@ -2694,7 +2421,7 @@
+ add_dir="-L$dir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+- case $libdir in
++ case "$libdir" in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+@@ -2767,7 +2494,7 @@
+ 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
++ case "$libdir" in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+@@ -2828,6 +2555,8 @@
+ fi
+ fi
+ else
++ convenience="$convenience $dir/$old_library"
++ old_convenience="$old_convenience $dir/$old_library"
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+@@ -2945,13 +2674,13 @@
+ *) continue ;;
+ esac
+ case " $deplibs " in
+- *" $path "*) ;;
+- *) deplibs="$path $deplibs" ;;
+- esac
+- case " $deplibs " in
+ *" $depdepl "*) ;;
+ *) deplibs="$depdepl $deplibs" ;;
+ esac
++ case " $deplibs " in
++ *" $path "*) ;;
++ *) deplibs="$deplibs $path" ;;
++ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+@@ -3204,11 +2933,6 @@
+ age="$number_minor"
+ revision="$number_minor"
+ ;;
+- *)
+- $echo "$modename: unknown library version type \`$version_type'" 1>&2
+- $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+- exit $EXIT_FAILURE
+- ;;
+ esac
+ ;;
+ no)
+@@ -3220,27 +2944,27 @@
+
+ # Check that each of the things are valid numbers.
+ case $current in
+- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
++ [0-9]*) ;;
+ *)
+- $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
++ $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $revision in
+- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
++ [0-9]*) ;;
+ *)
+- $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
++ $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $age in
+- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
++ [0-9]*) ;;
+ *)
+- $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
++ $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+@@ -3266,7 +2990,7 @@
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ minor_current=`expr $current + 1`
+- verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
++ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+@@ -3419,9 +3143,9 @@
+
+ # Eliminate all temporary directories.
+ for path in $notinst_path; do
+- lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+- deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+- dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
++ lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
++ deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
++ dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+ done
+
+ if test -n "$xrpath"; then
+@@ -3472,14 +3196,9 @@
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
++ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc due to us having libc/libc_r.
+- ;;
+- *-*-sco3.2v5* | *-*-sco5v6*)
+- # Causes problems with __ctype
+- ;;
+- *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+- # Compiler inserts libc in the correct place for threads to work
++ test "X$arg" = "X-lc" && continue
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+@@ -3523,11 +3242,11 @@
+ int main() { return 0; }
+ EOF
+ $rm conftest
+- $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
++ $LTCC -o conftest conftest.c $deplibs
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+- name=`expr $i : '-l\(.*\)'`
++ name="`expr $i : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" -ne "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+@@ -3564,11 +3283,11 @@
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+- name=`expr $i : '-l\(.*\)'`
++ name="`expr $i : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $rm conftest
+- $LTCC $LTCFLAGS -o conftest conftest.c $i
++ $LTCC -o conftest conftest.c $i
+ # Did it work?
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+@@ -3616,7 +3335,7 @@
+ set dummy $deplibs_check_method
+ file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+- name=`expr $a_deplib : '-l\(.*\)'`
++ name="`expr $a_deplib : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+@@ -3685,7 +3404,7 @@
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+- name=`expr $a_deplib : '-l\(.*\)'`
++ name="`expr $a_deplib : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test -n "$name" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+@@ -3815,35 +3534,6 @@
+ deplibs=$newdeplibs
+ fi
+
+-
+- # move library search paths that coincide with paths to not yet
+- # installed libraries to the beginning of the library search list
+- new_libs=
+- for path in $notinst_path; do
+- case " $new_libs " in
+- *" -L$path/$objdir "*) ;;
+- *)
+- case " $deplibs " in
+- *" -L$path/$objdir "*)
+- new_libs="$new_libs -L$path/$objdir" ;;
+- esac
+- ;;
+- esac
+- done
+- for deplib in $deplibs; do
+- case $deplib in
+- -L*)
+- case " $new_libs " in
+- *" $deplib "*) ;;
+- *) new_libs="$new_libs $deplib" ;;
+- esac
+- ;;
+- *) new_libs="$new_libs $deplib" ;;
+- esac
+- done
+- deplibs="$new_libs"
+-
+-
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+@@ -3927,7 +3617,6 @@
+ fi
+
+ lib="$output_objdir/$realname"
+- linknames=
+ for link
+ do
+ linknames="$linknames $link"
+@@ -3956,9 +3645,6 @@
+ # The command line is too long to execute in one step.
+ $show "using reloadable object file for export list..."
+ skipped_export=:
+- # Break out early, otherwise skipped_export may be
+- # set to false by a later but shorter cmd.
+- break
+ fi
+ done
+ IFS="$save_ifs"
+@@ -3992,13 +3678,67 @@
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${outputname}x"
++ $show "${rm}r $gentop"
++ $run ${rm}r "$gentop"
++ $show "$mkdir $gentop"
++ $run $mkdir "$gentop"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$gentop"; then
++ exit $status
++ fi
+ generated="$generated $gentop"
+
+- func_extract_archives $gentop $convenience
+- libobjs="$libobjs $func_extract_archives_result"
++ for xlib in $convenience; do
++ # Extract the objects.
++ case $xlib in
++ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
++ *) xabs=`pwd`"/$xlib" ;;
++ esac
++ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
++ xdir="$gentop/$xlib"
++
++ $show "${rm}r $xdir"
++ $run ${rm}r "$xdir"
++ $show "$mkdir $xdir"
++ $run $mkdir "$xdir"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$xdir"; then
++ exit $status
++ fi
++ # We will extract separately just the conflicting names and we will no
++ # longer touch any unique names. It is faster to leave these extract
++ # automatically by $AR in one run.
++ $show "(cd $xdir && $AR x $xabs)"
++ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
++ if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
++ :
++ else
++ $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
++ $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
++ $AR t "$xabs" | sort | uniq -cd | while read -r count name
++ do
++ i=1
++ while test "$i" -le "$count"
++ do
++ # Put our $i before any first dot (extension)
++ # Never overwrite any file
++ name_to="$name"
++ while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
++ do
++ name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
++ done
++ $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
++ $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
++ i=`expr $i + 1`
++ done
++ done
++ fi
++
++ libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
++ done
+ fi
+ fi
+-
++
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+@@ -4028,8 +3768,7 @@
+ fi
+ fi
+
+- if test "X$skipped_export" != "X:" &&
+- len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
++ if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+@@ -4048,7 +3787,6 @@
+ save_libobjs=$libobjs
+ fi
+ save_output=$output
+- output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+@@ -4058,13 +3796,13 @@
+ delfiles=
+ last_robj=
+ k=1
+- output=$output_objdir/$output_la-${k}.$objext
++ output=$output_objdir/$save_output-${k}.$objext
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+ if test "X$objlist" = X ||
+- { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
++ { len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len"; }; then
+ objlist="$objlist $obj"
+ else
+@@ -4078,9 +3816,9 @@
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+ fi
+- last_robj=$output_objdir/$output_la-${k}.$objext
++ last_robj=$output_objdir/$save_output-${k}.$objext
+ k=`expr $k + 1`
+- output=$output_objdir/$output_la-${k}.$objext
++ output=$output_objdir/$save_output-${k}.$objext
+ objlist=$obj
+ len=1
+ fi
+@@ -4100,13 +3838,13 @@
+ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+ fi
+
+- # Set up a command to remove the reloadable object files
++ # Set up a command to remove the reloadale object files
+ # after they are used.
+ i=0
+ while test "$i" -lt "$k"
+ do
+ i=`expr $i + 1`
+- delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
++ delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
+ done
+
+ $echo "creating a temporary reloadable object file: $output"
+@@ -4154,30 +3892,13 @@
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+- $run eval "$cmd" || {
+- lt_exit=$?
+-
+- # Restore the uninstalled library and exit
+- if test "$mode" = relink; then
+- $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+- fi
+-
+- exit $lt_exit
+- }
++ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+-
+- if test -n "$convenience"; then
+- if test -z "$whole_archive_flag_spec"; then
+- $show "${rm}r $gentop"
+- $run ${rm}r "$gentop"
+- fi
+- fi
+-
+ exit $EXIT_SUCCESS
+ fi
+
+@@ -4255,10 +3976,64 @@
+ eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${obj}x"
++ $show "${rm}r $gentop"
++ $run ${rm}r "$gentop"
++ $show "$mkdir $gentop"
++ $run $mkdir "$gentop"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$gentop"; then
++ exit $status
++ fi
+ generated="$generated $gentop"
+
+- func_extract_archives $gentop $convenience
+- reload_conv_objs="$reload_objs $func_extract_archives_result"
++ for xlib in $convenience; do
++ # Extract the objects.
++ case $xlib in
++ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
++ *) xabs=`pwd`"/$xlib" ;;
++ esac
++ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
++ xdir="$gentop/$xlib"
++
++ $show "${rm}r $xdir"
++ $run ${rm}r "$xdir"
++ $show "$mkdir $xdir"
++ $run $mkdir "$xdir"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$xdir"; then
++ exit $status
++ fi
++ # We will extract separately just the conflicting names and we will no
++ # longer touch any unique names. It is faster to leave these extract
++ # automatically by $AR in one run.
++ $show "(cd $xdir && $AR x $xabs)"
++ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
++ if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
++ :
++ else
++ $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
++ $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
++ $AR t "$xabs" | sort | uniq -cd | while read -r count name
++ do
++ i=1
++ while test "$i" -le "$count"
++ do
++ # Put our $i before any first dot (extension)
++ # Never overwrite any file
++ name_to="$name"
++ while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
++ do
++ name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
++ done
++ $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
++ $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
++ i=`expr $i + 1`
++ done
++ done
++ fi
++
++ reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
++ done
+ fi
+ fi
+
+@@ -4359,35 +4134,6 @@
+ ;;
+ esac
+
+-
+- # move library search paths that coincide with paths to not yet
+- # installed libraries to the beginning of the library search list
+- new_libs=
+- for path in $notinst_path; do
+- case " $new_libs " in
+- *" -L$path/$objdir "*) ;;
+- *)
+- case " $compile_deplibs " in
+- *" -L$path/$objdir "*)
+- new_libs="$new_libs -L$path/$objdir" ;;
+- esac
+- ;;
+- esac
+- done
+- for deplib in $compile_deplibs; do
+- case $deplib in
+- -L*)
+- case " $new_libs " in
+- *" $deplib "*) ;;
+- *) new_libs="$new_libs $deplib" ;;
+- esac
+- ;;
+- *) new_libs="$new_libs $deplib" ;;
+- esac
+- done
+- compile_deplibs="$new_libs"
+-
+-
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$finalize_command $finalize_deplibs"
+
+@@ -4432,15 +4178,10 @@
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+- testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+- case :$dllsearchpath: in
+- *":$testbindir:"*) ;;
+- *) dllsearchpath="$dllsearchpath:$testbindir";;
+- esac
+ ;;
+ esac
+ done
+@@ -4554,25 +4295,13 @@
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+- export_symbols="$output_objdir/$outputname.exp"
++ export_symbols="$output_objdir/$output.exp"
+ $run $rm $export_symbols
+- $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+- case $host in
+- *cygwin* | *mingw* )
+- $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+- $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+- ;;
+- esac
++ $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ else
+- $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+- $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
++ $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
++ $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+ $run eval 'mv "$nlist"T "$nlist"'
+- case $host in
+- *cygwin* | *mingw* )
+- $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+- $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+- ;;
+- esac
+ fi
+ fi
+
+@@ -4623,26 +4352,7 @@
+ #endif
+
+ /* The mapping between symbol names and symbols. */
+-"
+-
+- case $host in
+- *cygwin* | *mingw* )
+- $echo >> "$output_objdir/$dlsyms" "\
+-/* DATA imports from DLLs on WIN32 can't be const, because
+- runtime relocations are performed -- see ld's documentation
+- on pseudo-relocs */
+-struct {
+-"
+- ;;
+- * )
+- $echo >> "$output_objdir/$dlsyms" "\
+ const struct {
+-"
+- ;;
+- esac
+-
+-
+- $echo >> "$output_objdir/$dlsyms" "\
+ const char *name;
+ lt_ptr address;
+ }
+@@ -4689,29 +4399,16 @@
+ esac
+
+ # Now compile the dynamic symbol file.
+- $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+- $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
++ $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
++ $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+ # Clean up the generated files.
+ $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+ $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+ # Transform the symbol file into the correct name.
+- case $host in
+- *cygwin* | *mingw* )
+- if test -f "$output_objdir/${outputname}.def" ; then
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+- else
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- fi
+- ;;
+- * )
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- ;;
+- esac
++ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
++ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ ;;
+ *)
+ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+@@ -4736,7 +4433,7 @@
+ # We have no uninstalled library dependencies, so finalize right now.
+ $show "$link_command"
+ $run eval "$link_command"
+- exit_status=$?
++ status=$?
+
+ # Delete the generated files.
+ if test -n "$dlsyms"; then
+@@ -4744,7 +4441,7 @@
+ $run $rm "$output_objdir/${outputname}S.${objext}"
+ fi
+
+- exit $exit_status
++ exit $status
+ fi
+
+ if test -n "$shlibpath_var"; then
+@@ -4884,12 +4581,10 @@
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+- output_name=`basename $output`
+- output_path=`dirname $output`
+- cwrappersource="$output_path/$objdir/lt-$output_name.c"
+- cwrapper="$output_path/$output_name.exe"
+- $rm $cwrappersource $cwrapper
+- trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
++ cwrappersource=`$echo ${objdir}/lt-${output}.c`
++ cwrapper=`$echo ${output}.exe`
++ $rm $cwrappersource $cwrapper
++ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ cat > $cwrappersource <<EOF
+
+@@ -4914,9 +4609,6 @@
+ #include <malloc.h>
+ #include <stdarg.h>
+ #include <assert.h>
+-#include <string.h>
+-#include <ctype.h>
+-#include <sys/stat.h>
+
+ #if defined(PATH_MAX)
+ # define LT_PATHMAX PATH_MAX
+@@ -4927,19 +4619,15 @@
+ #endif
+
+ #ifndef DIR_SEPARATOR
+-# define DIR_SEPARATOR '/'
+-# define PATH_SEPARATOR ':'
++#define DIR_SEPARATOR '/'
+ #endif
+
+ #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+-# define HAVE_DOS_BASED_FILE_SYSTEM
+-# ifndef DIR_SEPARATOR_2
+-# define DIR_SEPARATOR_2 '\\'
+-# endif
+-# ifndef PATH_SEPARATOR_2
+-# define PATH_SEPARATOR_2 ';'
+-# endif
++#define HAVE_DOS_BASED_FILE_SYSTEM
++#ifndef DIR_SEPARATOR_2
++#define DIR_SEPARATOR_2 '\\'
++#endif
+ #endif
+
+ #ifndef DIR_SEPARATOR_2
+@@ -4949,32 +4637,17 @@
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+ #endif /* DIR_SEPARATOR_2 */
+
+-#ifndef PATH_SEPARATOR_2
+-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+-#else /* PATH_SEPARATOR_2 */
+-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+-#endif /* PATH_SEPARATOR_2 */
+-
+ #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+ #define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+ } while (0)
+
+-/* -DDEBUG is fairly common in CFLAGS. */
+-#undef DEBUG
+-#if defined DEBUGWRAPPER
+-# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+-#else
+-# define DEBUG(format, ...)
+-#endif
+-
+ const char *program_name = NULL;
+
+ void * xmalloc (size_t num);
+ char * xstrdup (const char *string);
+-const char * base_name (const char *name);
+-char * find_executable(const char *wrapper);
+-int check_executable(const char *path);
++char * basename (const char *name);
++char * fnqualify(const char *path);
+ char * strendzap(char *str, const char *pat);
+ void lt_fatal (const char *message, ...);
+
+@@ -4984,51 +4657,29 @@
+ char **newargz;
+ int i;
+
+- program_name = (char *) xstrdup (base_name (argv[0]));
+- DEBUG("(main) argv[0] : %s\n",argv[0]);
+- DEBUG("(main) program_name : %s\n",program_name);
++ program_name = (char *) xstrdup ((char *) basename (argv[0]));
+ newargz = XMALLOC(char *, argc+2);
+ EOF
+
+- cat >> $cwrappersource <<EOF
+- newargz[0] = (char *) xstrdup("$SHELL");
++ cat >> $cwrappersource <<EOF
++ newargz[0] = "$SHELL";
+ EOF
+
+- cat >> $cwrappersource <<"EOF"
+- newargz[1] = find_executable(argv[0]);
+- if (newargz[1] == NULL)
+- lt_fatal("Couldn't find %s", argv[0]);
+- DEBUG("(main) found exe at : %s\n",newargz[1]);
++ cat >> $cwrappersource <<"EOF"
++ newargz[1] = fnqualify(argv[0]);
+ /* we know the script has the same name, without the .exe */
+ /* so make sure newargz[1] doesn't end in .exe */
+ strendzap(newargz[1],".exe");
+ for (i = 1; i < argc; i++)
+ newargz[i+1] = xstrdup(argv[i]);
+ newargz[argc+1] = NULL;
+-
+- for (i=0; i<argc+1; i++)
+- {
+- DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
+- ;
+- }
+-
+ EOF
+
+- case $host_os in
+- mingw*)
+- cat >> $cwrappersource <<EOF
+- execv("$SHELL",(char const **)newargz);
+-EOF
+- ;;
+- *)
+- cat >> $cwrappersource <<EOF
++ cat >> $cwrappersource <<EOF
+ execv("$SHELL",newargz);
+ EOF
+- ;;
+- esac
+
+- cat >> $cwrappersource <<"EOF"
+- return 127;
++ cat >> $cwrappersource <<"EOF"
+ }
+
+ void *
+@@ -5048,148 +4699,48 @@
+ ;
+ }
+
+-const char *
+-base_name (const char *name)
++char *
++basename (const char *name)
+ {
+ const char *base;
+
+ #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+- if (isalpha ((unsigned char)name[0]) && name[1] == ':')
++ if (isalpha (name[0]) && name[1] == ':')
+ name += 2;
+ #endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+- return base;
+-}
+-
+-int
+-check_executable(const char * path)
+-{
+- struct stat st;
+-
+- DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+- if ((!path) || (!*path))
+- return 0;
+-
+- if ((stat (path, &st) >= 0) &&
+- (
+- /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+-#if defined (S_IXOTH)
+- ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+-#endif
+-#if defined (S_IXGRP)
+- ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+-#endif
+- ((st.st_mode & S_IXUSR) == S_IXUSR))
+- )
+- return 1;
+- else
+- return 0;
++ return (char *) base;
+ }
+
+-/* Searches for the full path of the wrapper. Returns
+- newly allocated full path name if found, NULL otherwise */
+ char *
+-find_executable (const char* wrapper)
++fnqualify(const char *path)
+ {
+- int has_slash = 0;
+- const char* p;
+- const char* p_next;
+- /* static buffer for getcwd */
++ size_t size;
++ char *p;
+ char tmp[LT_PATHMAX + 1];
+- int tmp_len;
+- char* concat_name;
+-
+- DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
+
+- if ((wrapper == NULL) || (*wrapper == '\0'))
+- return NULL;
++ assert(path != NULL);
+
+- /* Absolute path? */
++ /* Is it qualified already? */
+ #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+- if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
+- {
+- concat_name = xstrdup (wrapper);
+- if (check_executable(concat_name))
+- return concat_name;
+- XFREE(concat_name);
+- }
+- else
+- {
+-#endif
+- if (IS_DIR_SEPARATOR (wrapper[0]))
+- {
+- concat_name = xstrdup (wrapper);
+- if (check_executable(concat_name))
+- return concat_name;
+- XFREE(concat_name);
+- }
+-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+- }
++ if (isalpha (path[0]) && path[1] == ':')
++ return xstrdup (path);
+ #endif
++ if (IS_DIR_SEPARATOR (path[0]))
++ return xstrdup (path);
+
+- for (p = wrapper; *p; p++)
+- if (*p == '/')
+- {
+- has_slash = 1;
+- break;
+- }
+- if (!has_slash)
+- {
+- /* no slashes; search PATH */
+- const char* path = getenv ("PATH");
+- if (path != NULL)
+- {
+- for (p = path; *p; p = p_next)
+- {
+- const char* q;
+- size_t p_len;
+- for (q = p; *q; q++)
+- if (IS_PATH_SEPARATOR(*q))
+- break;
+- p_len = q - p;
+- p_next = (*q == '\0' ? q : q + 1);
+- if (p_len == 0)
+- {
+- /* empty path: current directory */
+- if (getcwd (tmp, LT_PATHMAX) == NULL)
+- lt_fatal ("getcwd failed");
+- tmp_len = strlen(tmp);
+- concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+- memcpy (concat_name, tmp, tmp_len);
+- concat_name[tmp_len] = '/';
+- strcpy (concat_name + tmp_len + 1, wrapper);
+- }
+- else
+- {
+- concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
+- memcpy (concat_name, p, p_len);
+- concat_name[p_len] = '/';
+- strcpy (concat_name + p_len + 1, wrapper);
+- }
+- if (check_executable(concat_name))
+- return concat_name;
+- XFREE(concat_name);
+- }
+- }
+- /* not found in PATH; assume curdir */
+- }
+- /* Relative path | not found in path: prepend cwd */
++ /* prepend the current directory */
++ /* doesn't handle '~' */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+- tmp_len = strlen(tmp);
+- concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+- memcpy (concat_name, tmp, tmp_len);
+- concat_name[tmp_len] = '/';
+- strcpy (concat_name + tmp_len + 1, wrapper);
+-
+- if (check_executable(concat_name))
+- return concat_name;
+- XFREE(concat_name);
+- return NULL;
++ size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
++ p = XMALLOC(char, size);
++ sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
++ return p;
+ }
+
+ char *
+@@ -5233,16 +4784,16 @@
+ va_end (ap);
+ }
+ EOF
+- # we should really use a build-platform specific compiler
+- # here, but OTOH, the wrappers (shell script and this C one)
+- # are only useful if you want to execute the "real" binary.
+- # Since the "real" binary is built for $host, then this
+- # wrapper might as well be built for $host, too.
+- $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+- ;;
+- esac
+- $rm $output
+- trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
++ # we should really use a build-platform specific compiler
++ # here, but OTOH, the wrappers (shell script and this C one)
++ # are only useful if you want to execute the "real" binary.
++ # Since the "real" binary is built for $host, then this
++ # wrapper might as well be built for $host, too.
++ $run $LTCC -s -o $cwrapper $cwrappersource
++ ;;
++ esac
++ $rm $output
++ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+ $echo > $output "\
+ #! $SHELL
+@@ -5263,7 +4814,7 @@
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+
+ relink_command=\"$relink_command\"
+
+@@ -5392,13 +4943,13 @@
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2*)
+ $echo >> $output "\
+- exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
++ exec \$progdir\\\\\$program \${1+\"\$@\"}
+ "
+ ;;
+
+ *)
+ $echo >> $output "\
+- exec \"\$progdir/\$program\" \${1+\"\$@\"}
++ exec \$progdir/\$program \${1+\"\$@\"}
+ "
+ ;;
+ esac
+@@ -5408,7 +4959,7 @@
+ fi
+ else
+ # The program doesn't exist.
+- \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
++ \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+ \$echo \"This script is just a wrapper for \$program.\" 1>&2
+ $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+ exit $EXIT_FAILURE
+@@ -5440,73 +4991,71 @@
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
++ $show "${rm}r $gentop"
++ $run ${rm}r "$gentop"
++ $show "$mkdir $gentop"
++ $run $mkdir "$gentop"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$gentop"; then
++ exit $status
++ fi
+ generated="$generated $gentop"
+
+- func_extract_archives $gentop $addlibs
+- oldobjs="$oldobjs $func_extract_archives_result"
++ # Add in members from convenience archives.
++ for xlib in $addlibs; do
++ # Extract the objects.
++ case $xlib in
++ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
++ *) xabs=`pwd`"/$xlib" ;;
++ esac
++ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
++ xdir="$gentop/$xlib"
++
++ $show "${rm}r $xdir"
++ $run ${rm}r "$xdir"
++ $show "$mkdir $xdir"
++ $run $mkdir "$xdir"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$xdir"; then
++ exit $status
++ fi
++ # We will extract separately just the conflicting names and we will no
++ # longer touch any unique names. It is faster to leave these extract
++ # automatically by $AR in one run.
++ $show "(cd $xdir && $AR x $xabs)"
++ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
++ if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
++ :
++ else
++ $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
++ $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
++ $AR t "$xabs" | sort | uniq -cd | while read -r count name
++ do
++ i=1
++ while test "$i" -le "$count"
++ do
++ # Put our $i before any first dot (extension)
++ # Never overwrite any file
++ name_to="$name"
++ while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
++ do
++ name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
++ done
++ $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
++ $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
++ i=`expr $i + 1`
++ done
++ done
++ fi
++
++ oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
++ done
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+- # POSIX demands no paths to be encoded in archives. We have
+- # to avoid creating archives with duplicate basenames if we
+- # might have to extract them afterwards, e.g., when creating a
+- # static archive out of a convenience library, or when linking
+- # the entirety of a libtool archive into another (currently
+- # not supported by libtool).
+- if (for obj in $oldobjs
+- do
+- $echo "X$obj" | $Xsed -e 's%^.*/%%'
+- done | sort | sort -uc >/dev/null 2>&1); then
+- :
+- else
+- $echo "copying selected object files to avoid basename conflicts..."
+-
+- if test -z "$gentop"; then
+- gentop="$output_objdir/${outputname}x"
+- generated="$generated $gentop"
+-
+- $show "${rm}r $gentop"
+- $run ${rm}r "$gentop"
+- $show "$mkdir $gentop"
+- $run $mkdir "$gentop"
+- exit_status=$?
+- if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+- exit $exit_status
+- fi
+- fi
+-
+- save_oldobjs=$oldobjs
+- oldobjs=
+- counter=1
+- for obj in $save_oldobjs
+- do
+- objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+- case " $oldobjs " in
+- " ") oldobjs=$obj ;;
+- *[\ /]"$objbase "*)
+- while :; do
+- # Make sure we don't pick an alternate name that also
+- # overlaps.
+- newobj=lt$counter-$objbase
+- counter=`expr $counter + 1`
+- case " $oldobjs " in
+- *[\ /]"$newobj "*) ;;
+- *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+- esac
+- done
+- $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+- $run ln "$obj" "$gentop/$newobj" ||
+- $run cp "$obj" "$gentop/$newobj"
+- oldobjs="$oldobjs $gentop/$newobj"
+- ;;
+- *) oldobjs="$oldobjs $obj" ;;
+- esac
+- done
+- fi
+-
+ eval cmds=\"$old_archive_cmds\"
+
+ if len=`expr "X$cmds" : ".*"` &&
+@@ -5520,7 +5069,20 @@
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+-
++ # GNU ar 2.10+ was changed to match POSIX; thus no paths are
++ # encoded into archives. This makes 'ar r' malfunction in
++ # this piecewise linking case whenever conflicting object
++ # names appear in distinct ar calls; check, warn and compensate.
++ if (for obj in $save_oldobjs
++ do
++ $echo "X$obj" | $Xsed -e 's%^.*/%%'
++ done | sort | sort -uc >/dev/null 2>&1); then
++ :
++ else
++ $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
++ $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
++ AR_FLAGS=cq
++ fi
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+@@ -5531,7 +5093,7 @@
+ oldobjs="$objlist $obj"
+ objlist="$objlist $obj"
+ eval test_cmds=\"$old_archive_cmds\"
+- if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
++ if len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len"; then
+ :
+ else
+@@ -5728,11 +5290,11 @@
+ # install_prog (especially on Windows NT).
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+- $echo "X$nonopt" | grep shtool > /dev/null; then
++ $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+ # Aesthetically quote it.
+ arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+@@ -5741,14 +5303,14 @@
+ shift
+ else
+ install_prog=
+- arg=$nonopt
++ arg="$nonopt"
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+@@ -5766,31 +5328,28 @@
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+- dest=$arg
++ dest="$arg"
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+- -f)
+- case " $install_prog " in
+- *[\\\ /]cp\ *) ;;
+- *) prev=$arg ;;
+- esac
+- ;;
+- -g | -m | -o) prev=$arg ;;
++ -f) prev="-f" ;;
++ -g) prev="-g" ;;
++ -m) prev="-m" ;;
++ -o) prev="-o" ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+- -*)
+- ;;
++ -*) ;;
++
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+- dest=$arg
++ dest="$arg"
+ continue
+ fi
+ ;;
+@@ -5799,7 +5358,7 @@
+ # Aesthetically quote the argument.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+@@ -5968,14 +5527,11 @@
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+- # Try `ln -sf' first, because the `ln' binary might depend on
+- # the symlink we replace! Solaris /bin/ln does not understand -f,
+- # so we also need to try rm && ln -s.
+ for linkname
+ do
+ if test "$linkname" != "$realname"; then
+- $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+- $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
++ $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
++ $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+ fi
+ done
+ fi
+@@ -5988,16 +5544,7 @@
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+- $run eval "$cmd" || {
+- lt_exit=$?
+-
+- # Restore the uninstalled library and exit
+- if test "$mode" = relink; then
+- $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+- fi
+-
+- exit $lt_exit
+- }
++ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+@@ -6091,15 +5638,17 @@
+ notinst_deplibs=
+ relink_command=
+
+- # Note that it is not necessary on cygwin/mingw to append a dot to
+- # foo even if both foo and FILE.exe exist: automatic-append-.exe
+- # behavior happens only for exec(3), not for open(2)! Also, sourcing
+- # `FILE.' does not work on cygwin managed mounts.
+- #
++ # To insure that "foo" is sourced, and not "foo.exe",
++ # finese the cygwin/MSYS system by explicitly sourcing "foo."
++ # which disallows the automatic-append-.exe behavior.
++ case $build in
++ *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
++ *) wrapperdot=${wrapper} ;;
++ esac
+ # If there is no directory component, then add one.
+- case $wrapper in
+- */* | *\\*) . ${wrapper} ;;
+- *) . ./${wrapper} ;;
++ case $file in
++ */* | *\\*) . ${wrapperdot} ;;
++ *) . ./${wrapperdot} ;;
+ esac
+
+ # Check the variables that should have been set.
+@@ -6127,21 +5676,34 @@
+ done
+
+ relink_command=
+- # Note that it is not necessary on cygwin/mingw to append a dot to
+- # foo even if both foo and FILE.exe exist: automatic-append-.exe
+- # behavior happens only for exec(3), not for open(2)! Also, sourcing
+- # `FILE.' does not work on cygwin managed mounts.
+- #
++ # To insure that "foo" is sourced, and not "foo.exe",
++ # finese the cygwin/MSYS system by explicitly sourcing "foo."
++ # which disallows the automatic-append-.exe behavior.
++ case $build in
++ *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
++ *) wrapperdot=${wrapper} ;;
++ esac
+ # If there is no directory component, then add one.
+- case $wrapper in
+- */* | *\\*) . ${wrapper} ;;
+- *) . ./${wrapper} ;;
++ case $file in
++ */* | *\\*) . ${wrapperdot} ;;
++ *) . ./${wrapperdot} ;;
+ esac
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ if test "$finalize" = yes && test -z "$run"; then
+- tmpdir=`func_mktempdir`
++ tmpdir="/tmp"
++ test -n "$TMPDIR" && tmpdir="$TMPDIR"
++ tmpdir="$tmpdir/libtool-$$"
++ save_umask=`umask`
++ umask 0077
++ if $mkdir "$tmpdir"; then
++ umask $save_umask
++ else
++ umask $save_umask
++ $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
++ continue
++ fi
+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+@@ -6165,7 +5727,7 @@
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+- # one anyway
++ # one anyways
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+@@ -6265,7 +5827,7 @@
+ # Exit here if they wanted silent mode.
+ test "$show" = : && exit $EXIT_SUCCESS
+
+- $echo "X----------------------------------------------------------------------" | $Xsed
++ $echo "----------------------------------------------------------------------"
+ $echo "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $echo " $libdir"
+@@ -6298,7 +5860,7 @@
+ $echo
+ $echo "See any operating system documentation about shared libraries for"
+ $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+- $echo "X----------------------------------------------------------------------" | $Xsed
++ $echo "----------------------------------------------------------------------"
+ exit $EXIT_SUCCESS
+ ;;
+
+@@ -6515,17 +6077,9 @@
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
++ test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+- case "$mode" in
+- clean)
+- case " $library_names " in
+- # " " in the beginning catches empty $dlname
+- *" $dlname "*) ;;
+- *) rmfiles="$rmfiles $objdir/$dlname" ;;
+- esac
+- test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+- ;;
+- uninstall)
++ if test "$mode" = uninstall; then
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ cmds=$postuninstall_cmds
+@@ -6558,8 +6112,7 @@
+ IFS="$save_ifs"
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+- ;;
+- esac
++ fi
+ fi
+ ;;
+
+@@ -6844,7 +6397,7 @@
+ $echo
+ $echo "Try \`$modename --help' for more information about other modes."
+
+-exit $?
++exit $EXIT_SUCCESS
+
+ # The TAGs below are defined such that we never get into a situation
+ # in which we disable both kinds of libraries. Given conflicting
+@@ -6858,11 +6411,12 @@
+ # configuration. But we'll never go from static-only to shared-only.
+
+ # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+-disable_libs=shared
++build_libtool_libs=no
++build_old_libs=yes
+ # ### END LIBTOOL TAG CONFIG: disable-shared
+
+ # ### BEGIN LIBTOOL TAG CONFIG: disable-static
+-disable_libs=static
++build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+ # ### END LIBTOOL TAG CONFIG: disable-static
+
+ # Local Variables:
+diff -ur linphone-1.5.0/m4/Makefile.in linphone-1.5.0-after/m4/Makefile.in
+--- linphone-1.5.0/m4/Makefile.in 2006-10-11 03:26:22.000000000 +0800
++++ linphone-1.5.0-after/m4/Makefile.in 2007-01-19 16:05:05.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -40,11 +40,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -54,7 +54,6 @@
+ DIST_SOURCES =
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -101,7 +100,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -111,27 +109,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -185,9 +177,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -204,9 +199,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -214,22 +206,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+diff -ur linphone-1.5.0/Makefile.in linphone-1.5.0-after/Makefile.in
+--- linphone-1.5.0/Makefile.in 2006-10-11 03:26:23.000000000 +0800
++++ linphone-1.5.0-after/Makefile.in 2007-01-19 16:05:07.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -45,11 +45,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+@@ -80,7 +80,6 @@
+ distuninstallcheck_listfiles = find . -type f -print
+ distcleancheck_listfiles = find . -type f -print
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -127,7 +126,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -137,27 +135,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -211,9 +203,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -230,9 +225,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -240,22 +232,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+@@ -351,13 +339,7 @@
+ # (which will cause the Makefiles to be regenerated when you run `make');
+ # (2) otherwise, pass the desired values on the `make' command line.
+ $(RECURSIVE_TARGETS):
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -369,7 +351,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+@@ -377,13 +359,7 @@
+
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+@@ -404,7 +380,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+ tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+diff -ur linphone-1.5.0/media_api/Makefile.in linphone-1.5.0-after/media_api/Makefile.in
+--- linphone-1.5.0/media_api/Makefile.in 2006-10-11 03:26:22.000000000 +0800
++++ linphone-1.5.0-after/media_api/Makefile.in 2007-01-19 16:05:06.240197000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -15,6 +15,8 @@
+ @SET_MAKE@
+
+
++SOURCES = $(libmedia_api_la_SOURCES) $(apitest_SOURCES)
++
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -43,11 +45,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -80,11 +82,11 @@
+ am__depfiles_maybe = depfiles
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
++LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ SOURCES = $(libmedia_api_la_SOURCES) $(apitest_SOURCES)
+ DIST_SOURCES = $(am__libmedia_api_la_SOURCES_DIST) \
+@@ -93,7 +95,6 @@
+ CTAGS = ctags
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -140,7 +141,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -150,27 +150,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -224,9 +218,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -243,9 +240,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -253,22 +247,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+diff -ur linphone-1.5.0/mediastreamer2/aclocal.m4 linphone-1.5.0-after/mediastreamer2/aclocal.m4
+--- linphone-1.5.0/mediastreamer2/aclocal.m4 2006-10-09 17:11:02.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/aclocal.m4 2007-01-19 16:05:29.000000000 +0800
+@@ -1,7 +1,7 @@
+-# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
++# generated automatically by aclocal 1.9.2 -*- Autoconf -*-
+
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+-# 2005 Free Software Foundation, Inc.
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
++# Free Software Foundation, Inc.
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -13,7 +13,7 @@
+
+ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+-# serial 48 Debian 1.5.22-4 AC_PROG_LIBTOOL
++# serial 47 AC_PROG_LIBTOOL
+
+
+ # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+@@ -123,7 +123,7 @@
+
+ # Sed substitution that helps us do robust quoting. It backslashifies
+ # metacharacters that are still active within double-quoted strings.
+-Xsed='sed -e 1s/^X//'
++Xsed='sed -e s/^X//'
+ [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+ # Same as above, but do not quote variable references.
+@@ -143,7 +143,7 @@
+ default_ofile=libtool
+ can_build_shared=yes
+
+-# All known linkers require a `.a' archive for static linking (except MSVC,
++# All known linkers require a `.a' archive for static linking (except M$VC,
+ # which needs '.lib').
+ libext=a
+ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -163,7 +163,6 @@
+ test -z "$AS" && AS=as
+ test -z "$CC" && CC=cc
+ test -z "$LTCC" && LTCC=$CC
+-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+ test -z "$DLLTOOL" && DLLTOOL=dlltool
+ test -z "$LD" && LD=ld
+ test -z "$LN_S" && LN_S="ln -s"
+@@ -183,17 +182,15 @@
+ if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
++ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
++ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+ fi
+
+-_LT_CC_BASENAME([$compiler])
+-
+ # Only perform the check for file, if the check method requires it
+ case $deplibs_check_method in
+ file_magic*)
+@@ -234,56 +231,11 @@
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+ ])# _LT_AC_SYS_COMPILER
+
+
+-# _LT_CC_BASENAME(CC)
+-# -------------------
+-# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+-AC_DEFUN([_LT_CC_BASENAME],
+-[for cc_temp in $1""; do
+- case $cc_temp in
+- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-])
+-
+-
+-# _LT_COMPILER_BOILERPLATE
+-# ------------------------
+-# Check for compiler boilerplate output or warnings with
+-# the simple compiler test code.
+-AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+-[ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-])# _LT_COMPILER_BOILERPLATE
+-
+-
+-# _LT_LINKER_BOILERPLATE
+-# ----------------------
+-# Check for linker boilerplate output or warnings with
+-# the simple link test code.
+-AC_DEFUN([_LT_LINKER_BOILERPLATE],
+-[ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
+-])# _LT_LINKER_BOILERPLATE
+-
+-
+ # _LT_AC_SYS_LIBPATH_AIX
+ # ----------------------
+ # Links a minimal program and checks the executable
+@@ -356,15 +308,15 @@
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+ if test -z "$ECHO"; then
+ if test "X${echo_test_string+set}" != Xset; then
+ # find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+- if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+- echo_test_string=`eval $cmd` &&
++ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
++ echo_test_string="`eval $cmd`" &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+@@ -533,7 +485,7 @@
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+- case `/usr/bin/file conftest.o` in
++ case "`/usr/bin/file conftest.o`" in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+@@ -584,22 +536,6 @@
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+-sparc*-*solaris*)
+- # Find out which ABI we are using.
+- echo 'int i;' > conftest.$ac_ext
+- if AC_TRY_EVAL(ac_compile); then
+- case `/usr/bin/file conftest.o` in
+- *64-bit*)
+- case $lt_cv_prog_gnu_ld in
+- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+- *) LD="${LD-ld} -64" ;;
+- esac
+- ;;
+- esac
+- fi
+- rm -rf conftest*
+- ;;
+-
+ AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+ [*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+@@ -631,7 +567,7 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+@@ -641,10 +577,8 @@
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ $2=yes
+ fi
+ fi
+@@ -670,16 +604,11 @@
+ LDFLAGS="$LDFLAGS $3"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
++ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- $2=yes
+- fi
+ else
+ $2=yes
+ fi
+@@ -738,55 +667,11 @@
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+- # This has been around since 386BSD, at least. Likely further.
+- if test -x /sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+- elif test -x /usr/sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+- else
+- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+- fi
+- # And add a safety zone
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+- ;;
+-
+- interix*)
+- # We know the value 262144 and hardcode it with a safety zone (like BSD)
+- lt_cv_sys_max_cmd_len=196608
+- ;;
+-
+- osf*)
+- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+- # nice to cause kernel panics so lets avoid the loop below.
+- # First set a reasonable default.
+- lt_cv_sys_max_cmd_len=16384
+- #
+- if test -x /sbin/sysconfig; then
+- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+- *1*) lt_cv_sys_max_cmd_len=-1 ;;
+- esac
+- fi
+- ;;
+- sco3.2v5*)
+- lt_cv_sys_max_cmd_len=102400
+- ;;
+- sysv5* | sco5v6* | sysv4.2uw2*)
+- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+- if test -n "$kargmax"; then
+- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+- else
+- lt_cv_sys_max_cmd_len=32768
+- fi
+- ;;
+- *)
++ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+- while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
++ while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+@@ -812,7 +697,7 @@
+
+
+ # _LT_AC_CHECK_DLFCN
+-# ------------------
++# --------------------
+ AC_DEFUN([_LT_AC_CHECK_DLFCN],
+ [AC_CHECK_HEADERS(dlfcn.h)dnl
+ ])# _LT_AC_CHECK_DLFCN
+@@ -820,7 +705,7 @@
+
+ # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+ # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+-# ---------------------------------------------------------------------
++# ------------------------------------------------------------------
+ AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+ [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+ if test "$cross_compiling" = yes; then :
+@@ -886,19 +771,17 @@
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+- else
+- puts (dlerror ());
+
+ exit (status);
+ }]
+ EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+- (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
++ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+- x$lt_dlunknown|x*) $3 ;;
++ x$lt_unknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+@@ -910,7 +793,7 @@
+
+
+ # AC_LIBTOOL_DLOPEN_SELF
+-# ----------------------
++# -------------------
+ AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+ [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+ if test "x$enable_dlopen" != xyes; then
+@@ -981,7 +864,7 @@
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+@@ -994,7 +877,7 @@
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
++ LDFLAGS="$LDFLAGS $link_static_flag"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+@@ -1042,7 +925,7 @@
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+@@ -1054,13 +937,11 @@
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
++ if test ! -s out/conftest.err; then
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+- chmod u+w . 2>&AS_MESSAGE_LOG_FD
++ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+@@ -1124,8 +1005,8 @@
+ [AC_MSG_CHECKING([how to hardcode library paths into programs])
+ _LT_AC_TAGVAR(hardcode_action, $1)=
+ if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+- test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+- test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
++ test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \
++ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+@@ -1292,7 +1173,7 @@
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+-bsdi[[45]]*)
++bsdi4*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -1320,8 +1201,7 @@
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
++ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+@@ -1351,7 +1231,7 @@
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+@@ -1374,7 +1254,7 @@
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+@@ -1397,17 +1277,20 @@
+ dynamic_linker=no
+ ;;
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[[123]]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+@@ -1425,19 +1308,14 @@
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+- freebsd3.[[01]]* | freebsdelf3.[[01]]*)
++ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+- freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+- freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
++ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+ esac
+ ;;
+
+@@ -1457,7 +1335,7 @@
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+@@ -1497,18 +1375,6 @@
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+@@ -1552,7 +1418,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -1566,10 +1432,27 @@
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
++ if AC_TRY_EVAL(ac_compile); then
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
++
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
++ lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+@@ -1581,7 +1464,7 @@
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+-netbsdelf*-gnu)
++knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -1590,7 +1473,7 @@
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
++ dynamic_linker='GNU ld.so'
+ ;;
+
+ netbsd*)
+@@ -1630,13 +1513,8 @@
+
+ openbsd*)
+ version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
++ need_version=yes
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+@@ -1674,6 +1552,13 @@
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
+ solaris*)
+ version_type=linux
+ need_lib_prefix=no
+@@ -1699,7 +1584,7 @@
+ need_version=yes
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+@@ -1732,29 +1617,6 @@
+ fi
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
+- esac
+- fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
+-
+ uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -1768,11 +1630,6 @@
+ esac
+ AC_MSG_RESULT([$dynamic_linker])
+ test "$dynamic_linker" = no && can_build_shared=no
+-
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+-fi
+ ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+@@ -1797,9 +1654,6 @@
+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+ fi
+ fi
+- if test -z "$LTCFLAGS"; then
+- eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+- fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+@@ -1826,9 +1680,7 @@
+
+ case $tagname in
+ CXX)
+- if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+- (test "X$CXX" != "Xg++"))) ; then
++ if test -n "$CXX" && test "X$CXX" != "Xno"; then
+ AC_LIBTOOL_LANG_CXX_CONFIG
+ else
+ tagname=""
+@@ -1890,7 +1742,7 @@
+
+ # AC_LIBTOOL_WIN32_DLL
+ # --------------------
+-# declare package support for building win32 DLLs
++# declare package support for building win32 dll's
+ AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+ [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+ ])# AC_LIBTOOL_WIN32_DLL
+@@ -1928,7 +1780,7 @@
+
+ # AC_DISABLE_SHARED
+ # -----------------
+-# set the default shared flag to --disable-shared
++#- set the default shared flag to --disable-shared
+ AC_DEFUN([AC_DISABLE_SHARED],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ AC_ENABLE_SHARED(no)
+@@ -2064,7 +1916,7 @@
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
++ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+@@ -2174,7 +2026,7 @@
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+- # but apparently some variants of GNU ld only accept -v.
++ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+@@ -2206,7 +2058,7 @@
+ AC_DEFUN([AC_PROG_LD_GNU],
+ [AC_REQUIRE([AC_PROG_EGREP])dnl
+ AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
++[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+ case `$LD -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+@@ -2233,15 +2085,6 @@
+ *) reload_flag=" $reload_flag" ;;
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+-case $host_os in
+- darwin*)
+- if test "$GCC" = yes; then
+- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+- else
+- reload_cmds='$LD$reload_flag -o $output$reload_objs'
+- fi
+- ;;
+-esac
+ ])# AC_PROG_LD_RELOAD_FLAG
+
+
+@@ -2275,7 +2118,7 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-bsdi[[45]]*)
++bsdi4*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+@@ -2298,13 +2141,13 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-freebsd* | dragonfly*)
++freebsd* | kfreebsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+@@ -2320,7 +2163,7 @@
+
+ hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+@@ -2336,11 +2179,6 @@
+ esac
+ ;;
+
+-interix3*)
+- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+@@ -2352,11 +2190,20 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
++ case $host_cpu in
++ alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*)
++ lt_cv_deplibs_check_method=pass_all ;;
++ *)
++ # glibc up to 2.1.1 does not perform some relocations on ARM
++ # this will be overridden with pass_all, but let us keep it just in case
++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;;
++ esac
++ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-netbsd* | netbsdelf*-gnu)
++netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+@@ -2375,10 +2222,12 @@
+ ;;
+
+ openbsd*)
++ lt_cv_file_magic_cmd=/usr/bin/file
++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
+ else
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
++ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+ fi
+ ;;
+
+@@ -2386,11 +2235,15 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++sco3.2v5*)
++ lt_cv_deplibs_check_method=pass_all
++ ;;
++
+ solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+@@ -2411,13 +2264,10 @@
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+- pc)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+ esac
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
++sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+@@ -2437,43 +2287,36 @@
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+ else
+- lt_nm_to_check="${ac_tool_prefix}nm"
+- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+- lt_nm_to_check="$lt_nm_to_check nm"
+- fi
+- for lt_tmp_nm in $lt_nm_to_check; do
+- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+- IFS="$lt_save_ifs"
+- test -z "$ac_dir" && ac_dir=.
+- tmp_nm="$ac_dir/$lt_tmp_nm"
+- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+- # Check to see if the nm accepts a BSD-compat flag.
+- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+- # nm: unknown option "B" ignored
+- # Tru64's nm complains that /dev/null is an invalid object file
+- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+- */dev/null* | *'Invalid file or object type'*)
+- lt_cv_path_NM="$tmp_nm -B"
++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
++ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
++ IFS="$lt_save_ifs"
++ test -z "$ac_dir" && ac_dir=.
++ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
++ # Check to see if the nm accepts a BSD-compat flag.
++ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
++ # nm: unknown option "B" ignored
++ # Tru64's nm complains that /dev/null is an invalid object file
++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
++ */dev/null* | *'Invalid file or object type'*)
++ lt_cv_path_NM="$tmp_nm -B"
++ break
++ ;;
++ *)
++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
++ */dev/null*)
++ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+- */dev/null*)
+- lt_cv_path_NM="$tmp_nm -p"
+- break
+- ;;
+- *)
+- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+- continue # so that we can try to find one that supports BSD flags
+- ;;
+- esac
++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
++ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+- fi
+- done
+- IFS="$lt_save_ifs"
++ esac
++ fi
+ done
++ IFS="$lt_save_ifs"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+ fi])
+ NM="$lt_cv_path_NM"
+@@ -2505,13 +2348,13 @@
+ # -----------------------------------
+ # sets LIBLTDL to the link flags for the libltdl convenience library and
+ # LTDLINCL to the include flags for the libltdl header and adds
+-# --enable-ltdl-convenience to the configure arguments. Note that
+-# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+-# it is assumed to be `libltdl'. LIBLTDL will be prefixed with
+-# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
+-# (note the single quotes!). If your package is not flat and you're not
+-# using automake, define top_builddir and top_srcdir appropriately in
+-# the Makefiles.
++# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL
++# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
++# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will
++# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
++# '${top_srcdir}/' (note the single quotes!). If your package is not
++# flat and you're not using automake, define top_builddir and
++# top_srcdir appropriately in the Makefiles.
+ AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ case $enable_ltdl_convenience in
+@@ -2530,13 +2373,13 @@
+ # -----------------------------------
+ # sets LIBLTDL to the link flags for the libltdl installable library and
+ # LTDLINCL to the include flags for the libltdl header and adds
+-# --enable-ltdl-install to the configure arguments. Note that
+-# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+-# and an installed libltdl is not found, it is assumed to be `libltdl'.
+-# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
+-# '${top_srcdir}/' (note the single quotes!). If your package is not
+-# flat and you're not using automake, define top_builddir and top_srcdir
+-# appropriately in the Makefiles.
++# --enable-ltdl-install to the configure arguments. Note that LIBLTDL
++# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
++# DIRECTORY is not provided and an installed libltdl is not found, it is
++# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/'
++# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
++# quotes!). If your package is not flat and you're not using automake,
++# define top_builddir and top_srcdir appropriately in the Makefiles.
+ # In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+ AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+@@ -2574,21 +2417,10 @@
+ # ---------------
+ AC_DEFUN([_LT_AC_LANG_CXX],
+ [AC_REQUIRE([AC_PROG_CXX])
+-AC_REQUIRE([_LT_AC_PROG_CXXCPP])
++AC_REQUIRE([AC_PROG_CXXCPP])
+ _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+ ])# _LT_AC_LANG_CXX
+
+-# _LT_AC_PROG_CXXCPP
+-# ------------------
+-AC_DEFUN([_LT_AC_PROG_CXXCPP],
+-[
+-AC_REQUIRE([AC_PROG_CXX])
+-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+- (test "X$CXX" != "Xg++"))) ; then
+- AC_PROG_CXXCPP
+-fi
+-])# _LT_AC_PROG_CXXCPP
+
+ # AC_LIBTOOL_F77
+ # --------------
+@@ -2628,7 +2460,7 @@
+
+
+ # AC_LIBTOOL_RC
+-# -------------
++# --------------
+ # enable support for Windows resource files
+ AC_DEFUN([AC_LIBTOOL_RC],
+ [AC_REQUIRE([LT_AC_PROG_RC])
+@@ -2661,9 +2493,36 @@
+
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
++#
++# Check for any special shared library compilation flags.
++#
++_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
++if test "$GCC" = no; then
++ case $host_os in
++ sco3.2v5*)
++ _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
++ ;;
++ esac
++fi
++if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
++ AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
++ if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then :
++ else
++ AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
++ _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
++ fi
++fi
++
++
++#
++# Check to make sure the static flag actually works.
++#
++AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
++ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
++ $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
++ [],
++ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
++
+
+ AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+ AC_LIBTOOL_PROG_COMPILER_PIC($1)
+@@ -2673,9 +2532,9 @@
+ AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+ AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+ AC_LIBTOOL_SYS_LIB_STRIP
+-AC_LIBTOOL_DLOPEN_SELF
++AC_LIBTOOL_DLOPEN_SELF($1)
+
+-# Report which library types will actually be built
++# Report which librarie types wil actually be built
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+@@ -2684,7 +2543,7 @@
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+-case $host_os in
++case "$host_os" in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+@@ -2697,6 +2556,43 @@
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
++ ;;
++ darwin* | rhapsody*)
++ if test "$GCC" = yes; then
++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ case "$host_os" in
++ rhapsody* | darwin1.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ output_verbose_link_cmd='echo'
++ _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(hardcode_direct, $1)=no
++ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
++ else
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+@@ -2722,7 +2618,7 @@
+ AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+ [AC_LANG_PUSH(C++)
+ AC_REQUIRE([AC_PROG_CXX])
+-AC_REQUIRE([_LT_AC_PROG_CXXCPP])
++AC_REQUIRE([AC_PROG_CXXCPP])
+
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+@@ -2734,7 +2630,6 @@
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+-_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+ _LT_AC_TAGVAR(module_cmds, $1)=
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+@@ -2752,7 +2647,7 @@
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+ # Source file extension for C++ test sources.
+-ac_ext=cpp
++ac_ext=cc
+
+ # Object file extension for compiled C++ test sources.
+ objext=o
+@@ -2762,15 +2657,11 @@
+ lt_simple_compile_test_code="int some_variable = 0;\n"
+
+ # Code to be used in simple link tests
+-lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
++lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_LD=$LD
+@@ -2781,18 +2672,18 @@
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+- $as_unset lt_cv_prog_gnu_ld
++ unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+- $as_unset lt_cv_path_LD
++ unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ compiler=$CC
+ _LT_AC_TAGVAR(compiler, $1)=$CC
+-_LT_CC_BASENAME([$compiler])
++cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+ # We don't want -fno-exception wen compiling C++ code, so set the
+ # no_builtin_flag separately
+@@ -2881,7 +2772,6 @@
+ ;;
+ esac
+ done
+- ;;
+ esac
+
+ exp_sym_flag='-bexport'
+@@ -2900,7 +2790,7 @@
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes; then
+- case $host_os in aix4.[[012]]|aix4.[[012]].*)
++ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+@@ -2919,12 +2809,8 @@
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+- ;;
+ esac
+ shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+@@ -2951,12 +2837,12 @@
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+@@ -2965,26 +2851,16 @@
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+-
+- beos*)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- else
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+-
+ chorus*)
+ case $cc_basename in
+ *)
+@@ -3003,7 +2879,7 @@
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -3012,81 +2888,70 @@
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+- darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[[012]])
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[[012]])
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
+- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_AC_TAGVAR(hardcode_direct, $1)=no
+- _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+- if test "$GXX" = yes ; then
+- lt_int_apple_cc_single_mod=no
+- output_verbose_link_cmd='echo'
+- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+- lt_int_apple_cc_single_mod=yes
+- fi
+- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- else
+- _LT_AC_TAGVAR(archive_cmds, $1)='$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'
+- fi
+- _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 lds
+- 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}'
+- 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}'
+- 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}'
++ darwin* | rhapsody*)
++ if test "$GXX" = yes; then
++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ case "$host_os" in
++ rhapsody* | darwin1.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+ else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- _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 lds
+- _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(ld_shlibs, $1)=no
+- ;;
+- esac
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
++ ;;
++ esac
+ fi
+- ;;
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -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'
++ fi
++ _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $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}'
++ else
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ 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(hardcode_direct, $1)=no
++ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
++ else
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ fi
++ ;;
+
+ dgux*)
+ case $cc_basename in
+- ec++*)
++ ec++)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- ghcx*)
++ ghcx)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+@@ -3097,14 +2962,14 @@
+ ;;
+ esac
+ ;;
+- freebsd[[12]]*)
++ freebsd[12]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ freebsd-elf*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+@@ -3121,11 +2986,11 @@
+ # location of the library.
+
+ case $cc_basename in
+- CC*)
++ CC)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- aCC*)
++ aCC)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+@@ -3135,7 +3000,7 @@
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+@@ -3149,22 +3014,33 @@
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
++ ;;
++ ia64*)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ ;;
+ *)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ _LT_AC_TAGVAR(hardcode_direct, $1)=no
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
++ ;;
++ ia64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
++ # but as the default
++ # location of the library.
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+@@ -3175,17 +3051,14 @@
+ esac
+
+ case $cc_basename in
+- CC*)
++ CC)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- aCC*)
+- case $host_cpu in
+- hppa*64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ aCC)
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+@@ -3204,12 +3077,9 @@
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+- case $host_cpu in
+- hppa*64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ case "$host_cpu" in
++ ia64*|hppa*64*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+@@ -3223,25 +3093,11 @@
+ ;;
+ esac
+ ;;
+- interix3*)
+- _LT_AC_TAGVAR(hardcode_direct, $1)=no
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+ irix5* | irix6*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # SGI C++
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+@@ -3252,7 +3108,7 @@
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+@@ -3263,9 +3119,9 @@
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+- linux* | k*bsd*-gnu)
++ linux*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -3290,41 +3146,17 @@
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+- icpc*)
++ icpc)
+ # Intel C++
+ with_gnu_ld=yes
+- # version 8.0 and above of icpc choke on multiply defined symbols
+- # if we add $predep_objects and $postdep_objects, however 7.1 and
+- # earlier do not add the objects themselves.
+- case `$CC -V 2>&1` in
+- *"Version 7."*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- *) # Version 8.0 or newer
+- tmp_idyn=
+- case $host_cpu in
+- ia64*) tmp_idyn=' -i_dynamic';;
+- esac
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+- pgCC*)
+- # Portland Group C++ compiler
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+-
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- ;;
+- cxx*)
++ cxx)
+ # Compaq C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+@@ -3355,7 +3187,7 @@
+ ;;
+ mvs*)
+ case $cc_basename in
+- cxx*)
++ cxx)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+@@ -3365,7 +3197,7 @@
+ ;;
+ esac
+ ;;
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+@@ -3376,25 +3208,9 @@
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+- openbsd2*)
+- # C++ shared libraries are fairly broken
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- openbsd*)
+- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- fi
+- output_verbose_link_cmd='echo'
+- ;;
+ osf3*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -3410,14 +3226,14 @@
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- cxx*)
++ cxx)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -3435,7 +3251,7 @@
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -3454,7 +3270,7 @@
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -3469,17 +3285,17 @@
+ # the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- cxx*)
++ cxx)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
++ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
+ $rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+@@ -3498,7 +3314,7 @@
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -3519,14 +3335,27 @@
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
++ sco*)
++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ case $cc_basename in
++ CC)
++ # FIXME: insert proper C++ library support
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ ;;
++ *)
++ # FIXME: insert proper C++ library support
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ ;;
++ esac
++ ;;
+ sunos4*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- lcc*)
++ lcc)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+@@ -3539,33 +3368,36 @@
+ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+- _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
++ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
++ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+- # linker. We must also pass each convience library through
+- # to the system linker between allextract/defaultextract.
+- # The C++ compiler will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl.
++ # linker.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+- output_verbose_link_cmd='echo'
++ # Commands to make compiler produce verbose output that lists
++ # what "hidden" libraries, object files and flags are used when
++ # linking a shared library.
++ #
++ # There doesn't appear to be a way to prevent this compiler from
++ # explicitly linking system object files so we need to strip them
++ # from the output so that they don't get included in the library
++ # dependencies.
++ output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+@@ -3573,7 +3405,7 @@
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+- gcx*)
++ gcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+@@ -3611,63 +3443,12 @@
+ ;;
+ esac
+ ;;
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- ;;
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- # For security reasons, it is highly recommended that you always
+- # use absolute paths for naming shared libraries, and exclude the
+- # DT_RUNPATH tag from executables and libraries. But doing so
+- # requires that you compile everything twice, which is a pain.
+- # So that behaviour is only enabled if SCOABSPATH is set to a
+- # non-empty value in the environment. Most likely only useful for
+- # creating official distributions of packages.
+- # This is a hack until libtool officially supports absolute path
+- # names for shared libraries.
+- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+ ;;
+ tandem*)
+ case $cc_basename in
+- NCC*)
++ NCC)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+@@ -3700,6 +3481,8 @@
+ AC_LIBTOOL_PROG_LD_SHLIBS($1)
+ AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+ AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
++AC_LIBTOOL_SYS_LIB_STRIP
++AC_LIBTOOL_DLOPEN_SELF($1)
+
+ AC_LIBTOOL_CONFIG($1)
+
+@@ -3717,7 +3500,7 @@
+ ])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+ # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+-# ------------------------------------
++# ------------------------
+ # Figure out "hidden" library dependencies from verbose
+ # compiler output when linking a shared library.
+ # Parse the compiler output and extract the necessary
+@@ -3771,7 +3554,7 @@
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+- output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
++ output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+@@ -3847,37 +3630,13 @@
+
+ $rm -f confest.$objext
+
+-# PORTME: override above test on systems where it is broken
+-ifelse([$1],[CXX],
+-[case $host_os in
+-interix3*)
+- # Interix 3.5 installs completely hosed .la files for C++, so rather than
+- # hack all around it, let's just trust "g++" to DTRT.
+- _LT_AC_TAGVAR(predep_objects,$1)=
+- _LT_AC_TAGVAR(postdep_objects,$1)=
+- _LT_AC_TAGVAR(postdeps,$1)=
+- ;;
+-
+-solaris*)
+- case $cc_basename in
+- CC*)
+- # Adding this requires a known-good setup of shared libraries for
+- # Sun compiler versions before 5.6, else PIC objects from an old
+- # archive will be linked into the output, leading to subtle bugs.
+- _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+- ;;
+- esac
+- ;;
+-esac
+-])
+-
+ case " $_LT_AC_TAGVAR(postdeps, $1) " in
+ *" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+ esac
+ ])# AC_LIBTOOL_POSTDEP_PREDEP
+
+ # AC_LIBTOOL_LANG_F77_CONFIG
+-# --------------------------
++# ------------------------
+ # Ensure that the configuration vars for the C compiler are
+ # suitably defined. Those variables are subsequently used by
+ # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+@@ -3921,16 +3680,12 @@
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ CC=${F77-"f77"}
+ compiler=$CC
+ _LT_AC_TAGVAR(compiler, $1)=$CC
+-_LT_CC_BASENAME([$compiler])
++cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+@@ -3940,7 +3695,7 @@
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+-case $host_os in
++case "$host_os" in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+@@ -3949,9 +3704,7 @@
+ fi
+ ;;
+ aix4* | aix5*)
+- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+- test "$enable_shared" = yes && enable_static=no
+- fi
++ test "$enable_shared" = yes && enable_static=no
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+@@ -3961,6 +3714,8 @@
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
++test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
++
+ _LT_AC_TAGVAR(GCC, $1)="$G77"
+ _LT_AC_TAGVAR(LD, $1)="$LD"
+
+@@ -3970,6 +3725,8 @@
+ AC_LIBTOOL_PROG_LD_SHLIBS($1)
+ AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+ AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
++AC_LIBTOOL_SYS_LIB_STRIP
++
+
+ AC_LIBTOOL_CONFIG($1)
+
+@@ -3998,27 +3755,20 @@
+ lt_simple_compile_test_code="class foo {}\n"
+
+ # Code to be used in simple link tests
+-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
++lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ CC=${GCJ-"gcj"}
+ compiler=$CC
+ _LT_AC_TAGVAR(compiler, $1)=$CC
+-_LT_CC_BASENAME([$compiler])
+
+ # GCJ did not exist at the time GCC didn't implicitly link libc in.
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+-_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+-
+ AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+ AC_LIBTOOL_PROG_COMPILER_PIC($1)
+ AC_LIBTOOL_PROG_CC_C_O($1)
+@@ -4026,6 +3776,8 @@
+ AC_LIBTOOL_PROG_LD_SHLIBS($1)
+ AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+ AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
++AC_LIBTOOL_SYS_LIB_STRIP
++AC_LIBTOOL_DLOPEN_SELF($1)
+
+ AC_LIBTOOL_CONFIG($1)
+
+@@ -4035,7 +3787,7 @@
+
+
+ # AC_LIBTOOL_LANG_RC_CONFIG
+-# -------------------------
++# --------------------------
+ # Ensure that the configuration vars for the Windows resource compiler are
+ # suitably defined. Those variables are subsequently used by
+ # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+@@ -4059,16 +3811,11 @@
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ CC=${RC-"windres"}
+ compiler=$CC
+ _LT_AC_TAGVAR(compiler, $1)=$CC
+-_LT_CC_BASENAME([$compiler])
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+ AC_LIBTOOL_CONFIG($1)
+@@ -4098,7 +3845,7 @@
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+@@ -4204,7 +3951,7 @@
+ #
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -4215,11 +3962,11 @@
+ SED=$lt_SED
+
+ # Sed that helps us avoid accidentally triggering echo(1) options like -n.
+-Xsed="$SED -e 1s/^X//"
++Xsed="$SED -e s/^X//"
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+ # The names of the tagged configurations supported by this script.
+ available_tags=
+@@ -4250,12 +3997,6 @@
+ # The host system.
+ host_alias=$host_alias
+ host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+
+ # An echo program that does not interpret backslashes.
+ echo=$lt_echo
+@@ -4267,9 +4008,6 @@
+ # A C compiler.
+ LTCC=$lt_LTCC
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+ # A language-specific compiler.
+ CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+@@ -4335,7 +4073,7 @@
+ # Does compiler simultaneously support -c and -o options?
+ compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+-# Must we lock files when doing compilation?
++# Must we lock files when doing compilation ?
+ need_locks=$lt_need_locks
+
+ # Do we need the lib prefix for modules?
+@@ -4609,6 +4347,9 @@
+ # Regexp to match symbols that can be accessed directly from C.
+ sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
++# Transform the above into a raw symbol and a C symbol.
++symxfrm='\1 \2\3 \3'
++
+ # Transform an extracted symbol line into a proper C declaration
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+@@ -4630,31 +4371,15 @@
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+-linux* | k*bsd*-gnu)
+- if test "$host_cpu" = ia64; then
+- symcode='[[ABCDGIRSTW]]'
+- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+- fi
+- ;;
+ irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+ osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+-solaris*)
++solaris* | sysv5*)
+ symcode='[[BDRT]]'
+ ;;
+-sco3.2v5*)
+- symcode='[[DT]]'
+- ;;
+-sysv4.2uw2*)
+- symcode='[[DT]]'
+- ;;
+-sysv5* | sco5v6* | unixware* | OpenUNIX*)
+- symcode='[[ABDT]]'
+- ;;
+ sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+@@ -4677,11 +4402,8 @@
+ # Try without a prefix undercore, then with it.
+ for ac_symprfx in "" "_"; do
+
+- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+- symxfrm="\\1 $ac_symprfx\\2 \\2"
+-
+ # Write the raw and C identifiers.
+- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -4837,10 +4559,6 @@
+ # DJGPP does not support shared libraries at all
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+@@ -4849,7 +4567,7 @@
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ ;;
+ *)
+@@ -4874,28 +4592,18 @@
+ ;;
+ chorus*)
+ case $cc_basename in
+- cxch68*)
++ cxch68)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- ;;
+- esac
+- ;;
+ dgux*)
+ case $cc_basename in
+- ec++*)
++ ec++)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+- ghcx*)
++ ghcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+@@ -4903,22 +4611,22 @@
+ ;;
+ esac
+ ;;
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+- CC*)
++ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+- aCC*)
++ aCC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+- case $host_cpu in
++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -4931,13 +4639,9 @@
+ ;;
+ esac
+ ;;
+- interix*)
+- # This is c89, which is MS Visual C++ (no shared libs)
+- # Anyone wants to do a port?
+- ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+- CC*)
++ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+@@ -4946,26 +4650,20 @@
+ ;;
+ esac
+ ;;
+- linux* | k*bsd*-gnu)
++ linux*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # KAI C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+- icpc* | ecpc*)
++ icpc)
+ # Intel C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+- pgCC*)
+- # Portland Group C++ compiler.
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+- cxx*)
++ cxx)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+@@ -4982,25 +4680,25 @@
+ ;;
+ mvs*)
+ case $cc_basename in
+- cxx*)
++ cxx)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+- cxx*)
++ cxx)
+ # Digital/Compaq C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+@@ -5014,15 +4712,24 @@
+ ;;
+ psos*)
+ ;;
++ sco*)
++ case $cc_basename in
++ CC)
++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
++ ;;
++ *)
++ ;;
++ esac
++ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+- gcx*)
++ gcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+@@ -5032,12 +4739,12 @@
+ ;;
+ sunos4*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.x
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+- lcc*)
++ lcc)
+ # Lucid
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+@@ -5047,7 +4754,7 @@
+ ;;
+ tandem*)
+ case $cc_basename in
+- NCC*)
++ NCC)
+ # NonStop-UX NCC 3.20
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+@@ -5055,14 +4762,7 @@
+ ;;
+ esac
+ ;;
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- case $cc_basename in
+- CC*)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+- esac
++ unixware*)
+ ;;
+ vxworks*)
+ ;;
+@@ -5109,11 +4809,6 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+-
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+@@ -5130,7 +4825,7 @@
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -5156,16 +4851,6 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- ;;
+- esac
+- ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+@@ -5177,7 +4862,7 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -5200,20 +4885,13 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+- linux* | k*bsd*-gnu)
+- case $cc_basename in
++ linux*)
++ case $CC in
+ icc* | ecc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+- pgcc* | pgf77* | pgf90* | pgf95*)
+- # Portland Group compilers (*not* the Pentium gcc compiler,
+- # which looks to be a dead project)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+ ccc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+@@ -5228,15 +4906,15 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
++ sco3.2v5*)
++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
++ ;;
++
+ solaris*)
++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- case $cc_basename in
+- f77* | f90* | f95*)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+- *)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+- esac
+ ;;
+
+ sunos4*)
+@@ -5245,7 +4923,7 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+- sysv4 | sysv4.2uw2* | sysv4.3*)
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+@@ -5258,17 +4936,6 @@
+ fi
+ ;;
+
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+-
+- unicos*)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+- ;;
+-
+ uts4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+@@ -5296,7 +4963,7 @@
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+ fi
+-case $host_os in
++case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+@@ -5305,16 +4972,6 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+ ;;
+ esac
+-
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
+-AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+- _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+- $lt_tmp_static_flag,
+- [],
+- [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+ ])
+
+
+@@ -5339,10 +4996,7 @@
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
+- linux* | k*bsd*-gnu)
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=no
++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+@@ -5385,8 +5039,7 @@
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+- # Just being paranoid about ensuring that cc_basename is set.
+- _LT_CC_BASENAME([$compiler])
++
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+@@ -5396,10 +5049,6 @@
+ with_gnu_ld=no
+ fi
+ ;;
+- interix*)
+- # we just hope/assume this is gcc and not c89 (= MSVC++)
+- with_gnu_ld=yes
+- ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+@@ -5410,27 +5059,6 @@
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+- # Set some defaults for GNU ld with shared library support. These
+- # are reset later if shared libraries are not supported. Putting them
+- # here allows them to be overridden if necessary.
+- runpath_var=LD_RUN_PATH
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+- fi
+- supports_anon_versioning=no
+- case `$LD -v 2>/dev/null` in
+- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+- *\ 2.11.*) ;; # other 2.11 versions
+- *) supports_anon_versioning=yes ;;
+- esac
+-
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+@@ -5481,10 +5109,10 @@
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -5493,60 +5121,13 @@
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+-
+- interix3*)
+- _LT_AC_TAGVAR(hardcode_direct, $1)=no
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+-
+- linux* | k*bsd*-gnu)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- tmp_addflag=
+- case $cc_basename,$host_cpu in
+- pgcc*) # Portland Group C compiler
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag'
+- ;;
+- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag -Mnomain' ;;
+- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+- tmp_addflag=' -i_dynamic' ;;
+- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+- tmp_addflag=' -i_dynamic -nofor_main' ;;
+- ifc* | ifort*) # Intel Fortran compiler
+- tmp_addflag=' -nofor_main' ;;
+- esac
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+-
+- if test $supports_anon_versioning = yes; then
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- $echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+- fi
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=no
++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ ld_shlibs=no
+ fi
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+@@ -5556,7 +5137,7 @@
+ fi
+ ;;
+
+- solaris*)
++ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+@@ -5577,33 +5158,6 @@
+ fi
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+- case `$LD -v 2>&1` in
+- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- cat <<_LT_EOF 1>&2
+-
+-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+-*** reliably create shared libraries on SCO systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
+-
+-_LT_EOF
+- ;;
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+- else
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+- esac
+- ;;
+-
+ sunos4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+@@ -5611,6 +5165,31 @@
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
++ linux*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds"
++ supports_anon_versioning=no
++ case `$LD -v 2>/dev/null` in
++ *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
++ *\ 2.11.*) ;; # other 2.11 versions
++ *) supports_anon_versioning=yes ;;
++ esac
++ if test $supports_anon_versioning = yes; then
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds"
++ fi
++ else
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ fi
++ ;;
++
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+@@ -5621,11 +5200,16 @@
+ ;;
+ esac
+
+- if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+- runpath_var=
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
++ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then
++ runpath_var=LD_RUN_PATH
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
++ # ancient GNU ld didn't support --whole-archive et. al.
++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
++ else
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
++ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+@@ -5637,7 +5221,7 @@
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
++ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+@@ -5671,7 +5255,6 @@
+ break
+ fi
+ done
+- ;;
+ esac
+
+ exp_sym_flag='-bexport'
+@@ -5690,7 +5273,7 @@
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GCC" = yes; then
+- case $host_os in aix4.[[012]]|aix4.[[012]].*)
++ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+@@ -5709,12 +5292,8 @@
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+- ;;
+ esac
+ shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+@@ -5722,11 +5301,11 @@
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+- if test "$aix_use_runtimelinking" = yes; then
++ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+- fi
++ fi
+ fi
+ fi
+
+@@ -5740,12 +5319,12 @@
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+@@ -5754,11 +5333,13 @@
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+@@ -5771,7 +5352,7 @@
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+- bsdi[[45]]*)
++ bsdi4*)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+@@ -5792,57 +5373,57 @@
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+- _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
++ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[[012]])
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[[012]])
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
++ if test "$GXX" = yes ; then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ case "$host_os" in
++ rhapsody* | darwin1.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -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'
++ fi
++ _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $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}'
++ else
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ 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(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+- if test "$GCC" = yes ; then
+- output_verbose_link_cmd='echo'
+- _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 lds
+- _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}'
+ else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- _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 lds
+- _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(ld_shlibs, $1)=no
+- ;;
+- esac
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+@@ -5876,7 +5457,7 @@
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+@@ -5899,62 +5480,47 @@
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+- hpux10*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- if test "$with_gnu_ld" = no; then
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+-
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+- fi
+- ;;
+-
+- hpux11*)
++ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- case $host_cpu in
+- hppa*64*)
++ case "$host_cpu" in
++ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+- ia64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+- case $host_cpu in
+- hppa*64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
++ ia64*)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
++ _LT_AC_TAGVAR(hardcode_direct, $1)=no
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
++
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
++ ;;
+ *)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+@@ -5978,7 +5544,7 @@
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+@@ -6002,7 +5568,6 @@
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+@@ -6048,7 +5613,7 @@
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+@@ -6056,15 +5621,21 @@
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
++ sco3.2v5*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ;;
++
+ solaris*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ if test "$GCC" = yes; then
+- wlarc='${wl}'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+- wlarc=''
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+@@ -6073,18 +5644,8 @@
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+- *)
+- # The compiler driver will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl, iff we do not link with $LD.
+- # Luckily, gcc supports the same syntax we need for Sun Studio.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- case $wlarc in
+- '')
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+- *)
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+- esac ;;
++ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+@@ -6141,45 +5702,36 @@
+ fi
+ ;;
+
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ sysv4.2uw2*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- runpath_var='LD_RUN_PATH'
++ hardcode_runpath_var=yes
++ runpath_var=LD_RUN_PATH
++ ;;
+
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
++ runpath_var='LD_RUN_PATH'
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ sysv5*)
++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
++ # $CC -shared without GNU ld will not create a library from C++
++ # object files and a static libstdc++, better avoid it by now
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+-
+- if test "$GCC" = yes; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- fi
+ ;;
+
+ uts4*)
+@@ -6197,6 +5749,11 @@
+ AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+ test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
++
+ #
+ # Do we need to explicitly link libc?
+ #
+@@ -6224,7 +5781,6 @@
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+- pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+@@ -6350,7 +5906,7 @@
+ # Add /usr/xpg4/bin/sed as it is typically found on Solaris
+ # along with /bin/sed that truncates output.
+ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+- test ! -f $lt_ac_sed && continue
++ test ! -f $lt_ac_sed && break
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+@@ -6375,174 +5931,86 @@
+ fi
+ done
+ done
+-])
+ SED=$lt_cv_path_SED
++])
+ AC_MSG_RESULT([$SED])
+ ])
+
+-# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+-#
+-# Copyright © 2004 Scott James Remnant <scott@netsplit.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.
+-#
+-# As a special exception to the GNU General Public License, if you
+-# distribute this file as part of a program that contains a
+-# configuration script generated by Autoconf, you may include it under
+-# the same distribution terms that you use for the rest of that program.
+-
+-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+-# ----------------------------------
+-AC_DEFUN([PKG_PROG_PKG_CONFIG],
+-[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+-m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+- AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+-fi
+-if test -n "$PKG_CONFIG"; then
+- _pkg_min_version=m4_default([$1], [0.9.0])
+- AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+- if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+- AC_MSG_RESULT([yes])
+- else
+- AC_MSG_RESULT([no])
+- PKG_CONFIG=""
+- fi
+-
+-fi[]dnl
+-])# PKG_PROG_PKG_CONFIG
+-
+-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+-#
+-# Check to see whether a particular set of modules exists. Similar
+-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+-#
+-#
+-# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+-# this or PKG_CHECK_MODULES is called, or make sure to call
+-# PKG_CHECK_EXISTS manually
+-# --------------------------------------------------------------
+-AC_DEFUN([PKG_CHECK_EXISTS],
+-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+-if test -n "$PKG_CONFIG" && \
+- AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+- m4_ifval([$2], [$2], [:])
+-m4_ifvaln([$3], [else
+- $3])dnl
+-fi])
+-
+-
+-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+-# ---------------------------------------------
+-m4_define([_PKG_CONFIG],
+-[if test -n "$PKG_CONFIG"; then
+- if test -n "$$1"; then
+- pkg_cv_[]$1="$$1"
+- else
+- PKG_CHECK_EXISTS([$3],
+- [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+- [pkg_failed=yes])
+- fi
+-else
+- pkg_failed=untried
+-fi[]dnl
+-])# _PKG_CONFIG
+-
+-# _PKG_SHORT_ERRORS_SUPPORTED
+-# -----------------------------
+-AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
+-else
+- _pkg_short_errors_supported=no
+-fi[]dnl
+-])# _PKG_SHORT_ERRORS_SUPPORTED
+-
+
+-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+-# [ACTION-IF-NOT-FOUND])
+-#
+-#
+-# Note that if there is a possibility the first call to
+-# PKG_CHECK_MODULES might not happen, you should be sure to include an
+-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+-#
+-#
+-# --------------------------------------------------------------
+-AC_DEFUN([PKG_CHECK_MODULES],
+-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
++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
+
+-pkg_failed=no
+-AC_MSG_CHECKING([for $1])
++ 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
+
+-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+-_PKG_CONFIG([$1][_LIBS], [libs], [$2])
++ 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
+
+-m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+-and $1[]_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details.])
+-
+-if test $pkg_failed = yes; then
+- _PKG_SHORT_ERRORS_SUPPORTED
+- if test $_pkg_short_errors_supported = yes; then
+- $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+- else
+- $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+- fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
++ 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
++])
+
+- ifelse([$4], , [AC_MSG_ERROR(dnl
+-[Package requirements ($2) were not met:
+
+-$$1_PKG_ERRORS
+
+-Consider adjusting the PKG_CONFIG_PATH environment variable if you
+-installed software in a non-standard prefix.
+-
+-_PKG_TEXT
+-])],
+- [AC_MSG_RESULT([no])
+- $4])
+-elif test $pkg_failed = untried; then
+- ifelse([$4], , [AC_MSG_FAILURE(dnl
+-[The pkg-config script could not be found or is too old. Make sure it
+-is in your PATH or set the PKG_CONFIG environment variable to the full
+-path to pkg-config.
++# -*- Autoconf -*-
++# Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++# Generated from amversion.in; do not edit by hand.
+
+-_PKG_TEXT
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
+
+-To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.])],
+- [$4])
+-else
+- $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+- $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+- AC_MSG_RESULT([yes])
+- ifelse([$3], , :, [$3])
+-fi[]dnl
+-])# PKG_CHECK_MODULES
++# 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.
+
+-# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# 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
+
+ # AM_AUTOMAKE_VERSION(VERSION)
+ # ----------------------------
+@@ -6555,15 +6023,26 @@
+ # Call AM_AUTOMAKE_VERSION so it can be traced.
+ # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+ AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+- [AM_AUTOMAKE_VERSION([1.9.6])])
++ [AM_AUTOMAKE_VERSION([1.9.2])])
+
+-# AM_AUX_DIR_EXPAND -*- Autoconf -*-
++# AM_AUX_DIR_EXPAND
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2003 Free Software Foundation, 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, 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.
+
+ # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+ # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+@@ -6610,16 +6089,26 @@
+ am_aux_dir=`cd $ac_aux_dir && pwd`
+ ])
+
+-# AM_CONDITIONAL -*- Autoconf -*-
++# AM_CONDITIONAL -*- Autoconf -*-
+
+-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, 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, 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 7
++# serial 6
+
+ # AM_CONDITIONAL(NAME, SHELL-CONDITION)
+ # -------------------------------------
+@@ -6643,15 +6132,26 @@
+ Usually this means the macro was only invoked conditionally.]])
+ fi])])
+
++# serial 7 -*- Autoconf -*-
+
+-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+ # Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+
+-# serial 8
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
+
+ # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+ # written in clear, in which case automake, when reading aclocal.m4,
+@@ -6660,6 +6160,7 @@
+ # CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
++
+ # _AM_DEPENDENCIES(NAME)
+ # ----------------------
+ # See how the compiler implements dependency checking.
+@@ -6799,16 +6300,27 @@
+ AC_SUBST([AMDEPBACKSLASH])
+ ])
+
+-# Generate code to set up dependency tracking. -*- Autoconf -*-
++# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
++# Free Software Foundation, Inc.
+
+-#serial 3
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++#serial 2
+
+ # _AM_OUTPUT_DEPENDENCY_COMMANDS
+ # ------------------------------
+@@ -6867,19 +6379,30 @@
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+ ])
+
+-# Do all the work for Automake. -*- Autoconf -*-
++# Do all the work for Automake. -*- Autoconf -*-
++
++# This macro actually does too much some checks are only needed if
++# your package does certain things. But this isn't really a big deal.
+
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ # Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+
+-# serial 12
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
+
+-# This macro actually does too much. Some checks are only needed if
+-# your package does certain things. But this isn't really a big deal.
++# 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 11
+
+ # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+ # AM_INIT_AUTOMAKE([OPTIONS])
+@@ -6981,27 +6504,51 @@
+ done
+ echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+ # AM_PROG_INSTALL_SH
+ # ------------------
+ # Define $install_sh.
++
++# Copyright (C) 2001, 2003 Free Software Foundation, 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, 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.
++
+ AC_DEFUN([AM_PROG_INSTALL_SH],
+ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+ install_sh=${install_sh-"$am_aux_dir/install-sh"}
+ AC_SUBST(install_sh)])
+
+-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# -*- Autoconf -*-
++# Copyright (C) 2003 Free Software Foundation, Inc.
+
+-# serial 2
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 1
+
+ # Check whether the underlying file-system supports filenames
+ # with a leading dot. For instance MS-DOS doesn't.
+@@ -7016,15 +6563,26 @@
+ rmdir .tst 2>/dev/null
+ AC_SUBST([am__leading_dot])])
+
+-# Check to see how 'make' treats includes. -*- Autoconf -*-
++# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+-# serial 3
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 2
+
+ # AM_MAKE_INCLUDE()
+ # -----------------
+@@ -7068,16 +6626,27 @@
+ rm -f confinc confmf
+ ])
+
+-# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
++# -*- Autoconf -*-
+
+-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+
+-# serial 4
++# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, 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, 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 3
+
+ # AM_MISSING_PROG(NAME, PROGRAM)
+ # ------------------------------
+@@ -7103,16 +6672,27 @@
+ fi
+ ])
+
+-# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+ # AM_PROG_MKDIR_P
+ # ---------------
+ # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+-#
++
++# Copyright (C) 2003, 2004 Free Software Foundation, 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, 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.
++
+ # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+ # created by `make install' are always world readable, even if the
+ # installer happens to have an overly restrictive umask (e.g. 077).
+@@ -7166,15 +6746,26 @@
+ fi
+ AC_SUBST([mkdir_p])])
+
+-# Helper functions for option handling. -*- Autoconf -*-
++# Helper functions for option handling. -*- Autoconf -*-
+
+-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+-# serial 3
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 2
+
+ # _AM_MANGLE_OPTION(NAME)
+ # -----------------------
+@@ -7199,11 +6790,22 @@
+ AC_DEFUN([_AM_IF_OPTION],
+ [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2003 Free Software Foundation, Inc. -*- Autoconf -*-
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
+
+ # AM_RUN_LOG(COMMAND)
+ # -------------------
+@@ -7216,16 +6818,28 @@
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
+-# Check to make sure that the build environment is sane. -*- Autoconf -*-
+-
+-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+-# Free Software Foundation, Inc.
+ #
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Check to make sure that the build environment is sane.
++#
+
+-# serial 4
++# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, 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, 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 3
+
+ # AM_SANITY_CHECK
+ # ---------------
+@@ -7268,14 +6882,25 @@
+ fi
+ AC_MSG_RESULT(yes)])
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+ # AM_PROG_INSTALL_STRIP
+-# ---------------------
++
++# Copyright (C) 2001, 2003 Free Software Foundation, 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, 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.
++
+ # One issue with vendor `install' (even GNU) is that you can't
+ # specify the program used to strip binaries. This is especially
+ # annoying in cross-compiling environments, where the build's strip
+@@ -7298,13 +6923,25 @@
+
+ # Check how to create a tarball. -*- Autoconf -*-
+
+-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2004 Free Software Foundation, 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, 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 1
+
+-# serial 2
+
+ # _AM_PROG_TAR(FORMAT)
+ # --------------------
+diff -ur linphone-1.5.0/mediastreamer2/build/Makefile.in linphone-1.5.0-after/mediastreamer2/build/Makefile.in
+--- linphone-1.5.0/mediastreamer2/build/Makefile.in 2006-10-09 17:11:05.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/build/Makefile.in 2007-01-19 16:05:34.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -111,7 +111,6 @@
+ FFLAGS = @FFLAGS@
+ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@
+ FFMPEG_LIBS = @FFMPEG_LIBS@
+-GREP = @GREP@
+ GSM_CFLAGS = @GSM_CFLAGS@
+ GSM_LIBS = @GSM_LIBS@
+ INSTALL_DATA = @INSTALL_DATA@
+@@ -169,9 +168,12 @@
+ VIDEO_LIBS = @VIDEO_LIBS@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -188,30 +190,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -271,13 +266,7 @@
+ # (which will cause the Makefiles to be regenerated when you run `make');
+ # (2) otherwise, pass the desired values on the `make' command line.
+ $(RECURSIVE_TARGETS):
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -289,7 +278,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+@@ -297,13 +286,7 @@
+
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+@@ -324,7 +307,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+ tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+diff -ur linphone-1.5.0/mediastreamer2/build/win32native/Makefile.in linphone-1.5.0-after/mediastreamer2/build/win32native/Makefile.in
+--- linphone-1.5.0/mediastreamer2/build/win32native/Makefile.in 2006-10-09 17:11:05.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/build/win32native/Makefile.in 2007-01-19 16:05:34.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -102,7 +102,6 @@
+ FFLAGS = @FFLAGS@
+ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@
+ FFMPEG_LIBS = @FFMPEG_LIBS@
+-GREP = @GREP@
+ GSM_CFLAGS = @GSM_CFLAGS@
+ GSM_LIBS = @GSM_LIBS@
+ INSTALL_DATA = @INSTALL_DATA@
+@@ -160,9 +159,12 @@
+ VIDEO_LIBS = @VIDEO_LIBS@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -179,30 +181,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+diff -ur linphone-1.5.0/mediastreamer2/build/wince/Makefile.in linphone-1.5.0-after/mediastreamer2/build/wince/Makefile.in
+--- linphone-1.5.0/mediastreamer2/build/wince/Makefile.in 2006-10-09 17:11:05.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/build/wince/Makefile.in 2007-01-19 16:05:34.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -102,7 +102,6 @@
+ FFLAGS = @FFLAGS@
+ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@
+ FFMPEG_LIBS = @FFMPEG_LIBS@
+-GREP = @GREP@
+ GSM_CFLAGS = @GSM_CFLAGS@
+ GSM_LIBS = @GSM_LIBS@
+ INSTALL_DATA = @INSTALL_DATA@
+@@ -160,9 +159,12 @@
+ VIDEO_LIBS = @VIDEO_LIBS@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -179,30 +181,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+diff -ur linphone-1.5.0/mediastreamer2/config.guess linphone-1.5.0-after/mediastreamer2/config.guess
+--- linphone-1.5.0/mediastreamer2/config.guess 2006-08-25 16:46:34.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/config.guess 2007-01-19 16:05:36.000000000 +0800
+@@ -1,10 +1,9 @@
+ #! /bin/sh
+ # Attempt to guess a canonical system name.
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+-# Inc.
++# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+-timestamp='2006-07-02'
++timestamp='2004-09-07'
+
+ # This file is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU General Public License as published by
+@@ -18,15 +17,13 @@
+ #
+ # 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., 51 Franklin Street - Fifth Floor, Boston, MA
+-# 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+ # configuration script generated by Autoconf, you may include it under
+ # the same distribution terms that you use for the rest of that program.
+
+-
+ # Originally written by Per Bothner <per@bothner.com>.
+ # Please send patches to <config-patches@gnu.org>. Submit a context
+ # diff and a properly formatted ChangeLog entry.
+@@ -56,7 +53,7 @@
+ GNU config.guess ($timestamp)
+
+ Originally written by Per Bothner.
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
+
+ This is free software; see the source for copying conditions. There is NO
+@@ -69,11 +66,11 @@
+ while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+- echo "$timestamp" ; exit ;;
++ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+- echo "$version" ; exit ;;
++ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+- echo "$usage"; exit ;;
++ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+@@ -107,7 +104,7 @@
+ trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+ trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+ : ${TMPDIR=/tmp} ;
+- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
++ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+@@ -126,7 +123,7 @@
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+-esac ; set_cc_for_build= ;'
++esac ;'
+
+ # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+ # (ghazi@noc.rutgers.edu 1994-08-24)
+@@ -199,23 +196,55 @@
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+- exit ;;
++ exit 0 ;;
++ amd64:OpenBSD:*:*)
++ echo x86_64-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ amiga:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ cats:OpenBSD:*:*)
++ echo arm-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ hp300:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ luna88k:OpenBSD:*:*)
++ echo m88k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mac68k:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ macppc:OpenBSD:*:*)
++ echo powerpc-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mvme68k:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mvme88k:OpenBSD:*:*)
++ echo m88k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mvmeppc:OpenBSD:*:*)
++ echo powerpc-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ sgi:OpenBSD:*:*)
++ echo mips64-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ sun3:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
+ *:OpenBSD:*:*)
+- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+- exit ;;
++ echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+- exit ;;
+- *:SolidBSD:*:*)
+- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ macppc:MirBSD:*:*)
+- echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+- exit ;;
++ echo powerppc-unknown-mirbsd${UNAME_RELEASE}
++ exit 0 ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+@@ -268,43 +297,37 @@
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+- exit ;;
++ exit 0 ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+- exit ;;
++ exit 0 ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+- exit ;;
++ exit 0 ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+- exit ;;
++ exit 0;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+- exit ;;
++ exit 0 ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+- exit ;;
++ exit 0 ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+- exit ;;
+- *:z/VM:*:*)
+- echo s390-ibm-zvmoe
+- exit ;;
++ exit 0 ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+- exit ;;
++ exit 0 ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+- exit ;;
+- arm:riscos:*:*|arm:RISCOS:*:*)
+- echo arm-unknown-riscos
+- exit ;;
++ exit 0;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+- exit ;;
++ exit 0;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+@@ -312,32 +335,32 @@
+ else
+ echo pyramid-pyramid-bsd
+ fi
+- exit ;;
++ exit 0 ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+- exit ;;
++ exit 0 ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+- exit ;;
+- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
++ exit 0 ;;
++ DRS?6000:UNIX_SV:4.2*:7*)
+ case `/usr/bin/uname -p` in
+- sparc) echo sparc-icl-nx7; exit ;;
++ sparc) echo sparc-icl-nx7 && exit 0 ;;
+ esac ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ i86pc:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+@@ -346,10 +369,10 @@
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+- exit ;;
++ exit 0 ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+@@ -361,10 +384,10 @@
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+- exit ;;
++ exit 0 ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+@@ -375,40 +398,40 @@
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+- exit ;;
++ exit 0 ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+@@ -432,33 +455,32 @@
+ exit (-1);
+ }
+ EOF
+- $CC_FOR_BUILD -o $dummy $dummy.c &&
+- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+- SYSTEM_NAME=`$dummy $dummyarg` &&
+- { echo "$SYSTEM_NAME"; exit; }
++ $CC_FOR_BUILD -o $dummy $dummy.c \
++ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
++ && exit 0
+ echo mips-mips-riscos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+- exit ;;
++ exit 0 ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+- exit ;;
++ exit 0 ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+- exit ;;
++ exit 0 ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+- exit ;;
++ exit 0 ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+- exit ;;
++ exit 0 ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+- exit ;;
++ exit 0 ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+- exit ;;
++ exit 0 ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+@@ -474,29 +496,29 @@
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+- exit ;;
++ exit 0 ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+- exit ;;
++ exit 0 ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+- exit ;;
++ exit 0 ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+- exit ;;
++ exit 0 ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+- exit ;;
++ exit 0 ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+- exit ;;
++ exit 0 ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
++ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
++ exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+- exit ;;
++ exit 0 ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+@@ -504,7 +526,7 @@
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+- exit ;;
++ exit 0 ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+@@ -519,18 +541,14 @@
+ exit(0);
+ }
+ EOF
+- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+- then
+- echo "$SYSTEM_NAME"
+- else
+- echo rs6000-ibm-aix3.2.5
+- fi
++ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
++ echo rs6000-ibm-aix3.2.5
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+- exit ;;
++ exit 0 ;;
+ *:AIX:*:[45])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+@@ -544,28 +562,28 @@
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+- exit ;;
++ exit 0 ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+- exit ;;
++ exit 0 ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+- exit ;;
++ exit 0 ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+- exit ;; # report: romp-ibm BSD 4.3
++ exit 0 ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+- exit ;;
++ exit 0 ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+- exit ;;
++ exit 0 ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+- exit ;;
++ exit 0 ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+- exit ;;
++ exit 0 ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+@@ -627,19 +645,9 @@
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+- eval $set_cc_for_build
+-
+- # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+- # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+- # generating 64-bit code. GNU and HP use different nomenclature:
+- #
+- # $ CC_FOR_BUILD=cc ./config.guess
+- # => hppa2.0w-hp-hpux11.23
+- # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+- # => hppa64-hp-hpux11.23
+-
+- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+- grep __LP64__ >/dev/null
++ # avoid double evaluation of $set_cc_for_build
++ test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
++ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+@@ -647,11 +655,11 @@
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+- exit ;;
++ exit 0 ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+- exit ;;
++ exit 0 ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+@@ -679,179 +687,158 @@
+ exit (0);
+ }
+ EOF
+- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+- { echo "$SYSTEM_NAME"; exit; }
++ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ echo unknown-hitachi-hiuxwe2
+- exit ;;
++ exit 0 ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+- exit ;;
++ exit 0 ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+- exit ;;
++ exit 0 ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+- exit ;;
++ exit 0 ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+- exit ;;
++ exit 0 ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+- exit ;;
++ exit 0 ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+- exit ;;
++ exit 0 ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+- exit ;;
++ exit 0 ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+- exit ;;
++ exit 0 ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+- exit ;;
++ exit 0 ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+- exit ;;
++ exit 0 ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+- exit ;;
++ exit 0 ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+- exit ;;
++ exit 0 ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+- exit ;;
++ exit 0 ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+- exit ;;
++ exit 0 ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:FreeBSD:*:*)
+- case ${UNAME_MACHINE} in
+- pc98)
+- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+- amd64)
+- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+- *)
+- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+- esac
+- exit ;;
++ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
++ exit 0 ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+- exit ;;
++ exit 0 ;;
+ i*:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+- exit ;;
+- i*:windows32*:*)
+- # uname -m includes "-pc" on this system.
+- echo ${UNAME_MACHINE}-mingw32
+- exit ;;
++ exit 0 ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+- exit ;;
+- x86:Interix*:[3456]*)
+- echo i586-pc-interix${UNAME_RELEASE}
+- exit ;;
+- EM64T:Interix*:[3456]*)
+- echo x86_64-unknown-interix${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
++ x86:Interix*:[34]*)
++ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
++ exit 0 ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+- exit ;;
++ exit 0 ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+- exit ;;
++ exit 0 ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+- exit ;;
+- amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+- echo x86_64-unknown-cygwin
+- exit ;;
++ exit 0 ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+- exit ;;
++ exit 0 ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+- exit ;;
++ exit 0 ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+- exit ;;
++ exit 0 ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+- exit ;;
++ exit 0 ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
+- avr32*:Linux:*:*)
+- echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+- exit ;;
++ exit 0 ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+- exit ;;
++ exit 0 ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+@@ -868,12 +855,8 @@
+ #endif
+ #endif
+ EOF
+- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+- /^CPU/{
+- s: ::g
+- p
+- }'`"
+- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
++ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+@@ -891,22 +874,15 @@
+ #endif
+ #endif
+ EOF
+- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+- /^CPU/{
+- s: ::g
+- p
+- }'`"
+- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
++ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ ;;
+- or32:Linux:*:*)
+- echo or32-unknown-linux-gnu
+- exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+@@ -920,7 +896,7 @@
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+- exit ;;
++ exit 0 ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+@@ -928,28 +904,25 @@
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+- exit ;;
++ exit 0 ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+- exit ;;
++ exit 0 ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
+- vax:Linux:*:*)
+- echo ${UNAME_MACHINE}-dec-linux-gnu
+- exit ;;
++ exit 0 ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+@@ -967,15 +940,15 @@
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+- exit ;;
++ exit 0 ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+- exit ;;
++ exit 0 ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+- exit ;;
++ exit 0 ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+@@ -992,7 +965,7 @@
+ LIBC=gnulibc1
+ # endif
+ #else
+- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
++ #ifdef __INTEL_COMPILER
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+@@ -1002,23 +975,16 @@
+ LIBC=dietlibc
+ #endif
+ EOF
+- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+- /^LIBC/{
+- s: ::g
+- p
+- }'`"
+- test x"${LIBC}" != x && {
+- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+- exit
+- }
+- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
++ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
++ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+- exit ;;
++ exit 0 ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+@@ -1026,27 +992,27 @@
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+- exit ;;
++ exit 0 ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+- exit ;;
++ exit 0 ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+- exit ;;
++ exit 0 ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+- exit ;;
+- i*86:syllable:*:*)
++ exit 0 ;;
++ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+- exit ;;
++ exit 0 ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+- exit ;;
++ exit 0 ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+@@ -1054,16 +1020,15 @@
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+- exit ;;
+- i*86:*:5:[678]*)
+- # UnixWare 7.x, OpenUNIX and OpenServer 6.
++ exit 0 ;;
++ i*86:*:5:[78]*)
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+- exit ;;
++ exit 0 ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+@@ -1081,73 +1046,73 @@
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+- exit ;;
++ exit 0 ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i386.
+ echo i386-pc-msdosdjgpp
+- exit ;;
++ exit 0 ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+- exit ;;
++ exit 0 ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+- exit ;;
++ exit 0 ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+- exit ;;
++ exit 0 ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+- exit ;;
++ exit 0 ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+- exit ;;
++ exit 0 ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+- exit ;;
++ exit 0 ;;
+ M68*:*:R3V[5678]*:*)
+- test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
++ test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
++ && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
++ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+- && { echo i486-ncr-sysv4; exit; } ;;
++ && echo i486-ncr-sysv4 && exit 0 ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+- exit ;;
++ exit 0 ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+- exit ;;
++ exit 0 ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+- exit ;;
++ exit 0 ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+@@ -1155,72 +1120,69 @@
+ else
+ echo ns32k-sni-sysv
+ fi
+- exit ;;
++ exit 0 ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+- exit ;;
++ exit 0 ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+- exit ;;
++ exit 0 ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+- exit ;;
+- i*86:VOS:*:*)
+- # From Paul.Green@stratus.com.
+- echo ${UNAME_MACHINE}-stratus-vos
+- exit ;;
++ exit 0 ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+- exit ;;
++ exit 0 ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+- exit ;;
++ exit 0 ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+- exit ;;
++ exit 0 ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+- exit ;;
++ exit 0 ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+- exit ;;
++ exit 0 ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+- exit ;;
++ exit 0 ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
++ *86) UNAME_PROCESSOR=i686 ;;
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+@@ -1228,25 +1190,22 @@
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+- exit ;;
+- NSE-?:NONSTOP_KERNEL:*:*)
+- echo nse-tandem-nsk${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+- exit ;;
++ exit 0 ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+- exit ;;
++ exit 0 ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+@@ -1257,47 +1216,38 @@
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+- exit ;;
++ exit 0 ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+- exit ;;
++ exit 0 ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+- exit ;;
++ exit 0 ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+- exit ;;
++ exit 0 ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+- exit ;;
++ exit 0 ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+- exit ;;
++ exit 0 ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+- exit ;;
++ exit 0 ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+- exit ;;
++ exit 0 ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+- A*) echo alpha-dec-vms ; exit ;;
+- I*) echo ia64-dec-vms ; exit ;;
+- V*) echo vax-dec-vms ; exit ;;
+- esac ;;
+- *:XENIX:*:SysV)
+- echo i386-pc-xenix
+- exit ;;
+- i*86:skyos:*:*)
+- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+- exit ;;
+- i*86:rdos:*:*)
+- echo ${UNAME_MACHINE}-pc-rdos
+- exit ;;
++ A*) echo alpha-dec-vms && exit 0 ;;
++ I*) echo ia64-dec-vms && exit 0 ;;
++ V*) echo vax-dec-vms && exit 0 ;;
++ esac
+ esac
+
+ #echo '(No uname command or uname output not recognized.)' 1>&2
+@@ -1329,7 +1279,7 @@
+ #endif
+
+ #if defined (__arm) && defined (__acorn) && defined (__unix)
+- printf ("arm-acorn-riscix\n"); exit (0);
++ printf ("arm-acorn-riscix"); exit (0);
+ #endif
+
+ #if defined (hp300) && !defined (hpux)
+@@ -1418,12 +1368,11 @@
+ }
+ EOF
+
+-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+- { echo "$SYSTEM_NAME"; exit; }
++$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+
+ # Apollos put the system type in the environment.
+
+-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
++test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+ # Convex versions that predate uname can use getsysinfo(1)
+
+@@ -1432,22 +1381,22 @@
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+- exit ;;
++ exit 0 ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+- exit ;;
++ exit 0 ;;
+ c34*)
+ echo c34-convex-bsd
+- exit ;;
++ exit 0 ;;
+ c38*)
+ echo c38-convex-bsd
+- exit ;;
++ exit 0 ;;
+ c4*)
+ echo c4-convex-bsd
+- exit ;;
++ exit 0 ;;
+ esac
+ fi
+
+@@ -1458,9 +1407,7 @@
+ the operating system you are using. It is advised that you
+ download the most up to date version of the config scripts from
+
+- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+-and
+- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
++ ftp://ftp.gnu.org/pub/gnu/config/
+
+ If the version you run ($0) is already up to date, please
+ send the following data and any information you think might be
+diff -ur linphone-1.5.0/mediastreamer2/config.sub linphone-1.5.0-after/mediastreamer2/config.sub
+--- linphone-1.5.0/mediastreamer2/config.sub 2006-08-25 16:46:34.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/config.sub 2007-01-19 16:05:36.000000000 +0800
+@@ -1,10 +1,9 @@
+ #! /bin/sh
+ # Configuration validation subroutine script.
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+-# Inc.
++# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+-timestamp='2006-07-02'
++timestamp='2004-08-29'
+
+ # This file is (in principle) common to ALL GNU software.
+ # The presence of a machine in this file suggests that SOME GNU software
+@@ -22,15 +21,14 @@
+ #
+ # 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., 51 Franklin Street - Fifth Floor, Boston, MA
+-# 02110-1301, USA.
+-#
++# Foundation, Inc., 59 Temple Place - Suite 330,
++# Boston, MA 02111-1307, USA.
++
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+ # configuration script generated by Autoconf, you may include it under
+ # the same distribution terms that you use for the rest of that program.
+
+-
+ # Please send patches to <config-patches@gnu.org>. Submit a context
+ # diff and a properly formatted ChangeLog entry.
+ #
+@@ -72,7 +70,7 @@
+ version="\
+ GNU config.sub ($timestamp)
+
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
+
+ This is free software; see the source for copying conditions. There is NO
+@@ -85,11 +83,11 @@
+ while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+- echo "$timestamp" ; exit ;;
++ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+- echo "$version" ; exit ;;
++ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+- echo "$usage"; exit ;;
++ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+@@ -101,7 +99,7 @@
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+- exit ;;
++ exit 0;;
+
+ * )
+ break ;;
+@@ -120,9 +118,8 @@
+ # Here we must recognize all the valid KERNEL-OS combinations.
+ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+ case $maybe_os in
+- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+- storm-chaos* | os2-emx* | rtmk-nova*)
++ nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
++ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+@@ -173,10 +170,6 @@
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+- -sco6)
+- os=-sco5v6
+- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+- ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+@@ -193,10 +186,6 @@
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+- -sco5v6*)
+- # Don't forget version if it is 3.2v4 or newer.
+- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+- ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+@@ -241,16 +230,14 @@
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+- | bfin \
++ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+- | m32c | m32r | m32rle | m68000 | m68k | m88k \
+- | maxq | mb | microblaze | mcore \
++ | m32r | m32rle | m68000 | m68k | m88k | mcore \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+@@ -259,7 +246,6 @@
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+- | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+@@ -268,23 +254,20 @@
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+- | mt \
+ | msp430 \
+- | nios | nios2 \
+ | ns16k | ns32k \
+- | or32 \
++ | openrisc | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
++ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+- | spu | strongarm \
++ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
++ | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+- | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
++ | x86 | xscale | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+@@ -295,9 +278,6 @@
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+- ms1)
+- basic_machine=mt-unknown
+- ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+@@ -317,8 +297,8 @@
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+- | avr-* | avr32-* \
+- | bfin-* | bs2000-* \
++ | avr-* \
++ | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+@@ -328,9 +308,9 @@
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+- | m32c-* | m32r-* | m32rle-* \
++ | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+- | m88110-* | m88k-* | maxq-* | mcore-* \
++ | m88110-* | m88k-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+@@ -339,7 +319,6 @@
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+- | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+@@ -348,27 +327,24 @@
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+- | mt-* \
+ | msp430-* \
+- | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
++ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+- | sparclite-* \
+- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
++ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
++ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+- | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+- | xstormy16-* | xtensa-* \
++ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
++ | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+@@ -513,10 +489,6 @@
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+- djgpp)
+- basic_machine=i586-pc
+- os=-msdosdjgpp
+- ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+@@ -707,9 +679,6 @@
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+- ms1-*)
+- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+- ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+@@ -785,8 +754,9 @@
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+- openrisc | openrisc-*)
++ or32 | or32-*)
+ basic_machine=or32-unknown
++ os=-coff
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+@@ -817,12 +787,6 @@
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+- pc98)
+- basic_machine=i386-pc
+- ;;
+- pc98-*)
+- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+- ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+@@ -879,10 +843,6 @@
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+- rdos)
+- basic_machine=i386-pc
+- os=-rdos
+- ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+@@ -1069,10 +1029,6 @@
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+- xbox)
+- basic_machine=i686-pc
+- os=-mingw32
+- ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+@@ -1122,10 +1078,13 @@
+ we32k)
+ basic_machine=we32k-att
+ ;;
+- sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
++ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
++ sh64)
++ basic_machine=sh64-unknown
++ ;;
++ sparc | sparcv8 | sparcv9 | sparcv9b)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+@@ -1198,23 +1157,20 @@
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+- | -openbsd* | -solidbsd* \
++ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+- | -uxpv* | -beos* | -mpeix* | -udk* \
++ | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+- | -skyos* | -haiku* | -rdos* | -toppers*)
++ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+@@ -1232,7 +1188,7 @@
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
++ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+@@ -1341,9 +1297,6 @@
+ -kaos*)
+ os=-kaos
+ ;;
+- -zvmoe)
+- os=-zvmoe
+- ;;
+ -none)
+ ;;
+ *)
+@@ -1366,9 +1319,6 @@
+ # system, and we'll never get to this point.
+
+ case $basic_machine in
+- spu-*)
+- os=-elf
+- ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+@@ -1378,9 +1328,9 @@
+ arm*-semi)
+ os=-aout
+ ;;
+- c4x-* | tic4x-*)
+- os=-coff
+- ;;
++ c4x-* | tic4x-*)
++ os=-coff
++ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+@@ -1424,9 +1374,6 @@
+ *-be)
+ os=-beos
+ ;;
+- *-haiku)
+- os=-haiku
+- ;;
+ *-ibm)
+ os=-aix
+ ;;
+@@ -1598,7 +1545,7 @@
+ esac
+
+ echo $basic_machine$os
+-exit
++exit 0
+
+ # Local variables:
+ # eval: (add-hook 'write-file-hooks 'time-stamp)
+diff -ur linphone-1.5.0/mediastreamer2/configure linphone-1.5.0-after/mediastreamer2/configure
+--- linphone-1.5.0/mediastreamer2/configure 2006-10-09 17:11:08.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/configure 2007-01-19 16:05:37.000000000 +0800
+@@ -1,9 +1,8 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.60a for mediastreamer 2.0.0.
++# Generated by GNU Autoconf 2.59 for mediastreamer 2.0.0.
+ #
+-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
++# Copyright (C) 2003 Free Software Foundation, Inc.
+ # This configure script is free software; the Free Software Foundation
+ # gives unlimited permission to copy, distribute and modify it.
+ ## --------------------- ##
+@@ -17,35 +16,11 @@
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+- setopt NO_GLOB_SUBST
+-else
+- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
++elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
++ set -o posix
+ fi
+-BIN_SH=xpg4; export BIN_SH # for Tru64
+ DUALCASE=1; export DUALCASE # for MKS sh
+
+-
+-# PATH needs CR
+-# 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
+-
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+@@ -54,43 +29,8 @@
+ fi
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order. Quoting is
+-# there to prevent editors from complaining about space-tab.
+-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+-# splitting by setting IFS to empty value.)
+-as_nl='
+-'
+-IFS=" "" $as_nl"
+-
+-# Find who we are. Look in the path if we contain no directory separator.
+-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
+-IFS=$as_save_IFS
+-
+- ;;
+-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_myself: error: cannot find myself; rerun with an absolute file name" >&2
+- { (exit 1); exit 1; }
+-fi
+-
+ # Work around bugs in pre-3.0 UWIN ksh.
+-for as_var in ENV MAIL MAILPATH
+-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+-done
++$as_unset ENV MAIL MAILPATH
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -104,19 +44,18 @@
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++ $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1 &&
+- test "X`expr 00001 : '.*\(...\)'`" = X001; then
++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
++if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -124,386 +63,157 @@
+
+
+ # Name of the executable.
+-as_me=`$as_basename -- "$0" ||
++as_me=`$as_basename "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
++ X"$0" : 'X\(/\)$' \| \
++ . : '\(.\)' 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{
+- s//\1/
+- q
+- }
+- /^X\/\(\/\/\)$/{
+- s//\1/
+- q
+- }
+- /^X\/\(\/\).*/{
+- s//\1/
+- q
+- }
+- s/.*/./; q'`
+-
+-# CDPATH.
+-$as_unset CDPATH
+-
+-
+-if test "x$CONFIG_SHELL" = x; then
+- if (eval ":") 2>/dev/null; then
+- as_have_required=yes
+-else
+- as_have_required=no
+-fi
+-
+- if test $as_have_required = yes && (eval ":
+-(as_func_return () {
+- (exit \$1)
+-}
+-as_func_success () {
+- as_func_return 0
+-}
+-as_func_failure () {
+- as_func_return 1
+-}
+-as_func_ret_success () {
+- return 0
+-}
+-as_func_ret_failure () {
+- return 1
+-}
+-
+-exitcode=0
+-if as_func_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_success failed.
+-fi
++ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
++ /^X\/\(\/\/\)$/{ s//\1/; q; }
++ /^X\/\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+
+-if as_func_failure; then
+- exitcode=1
+- echo as_func_failure succeeded.
+-fi
+
+-if as_func_ret_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_ret_success failed.
+-fi
++# 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
+
+-if as_func_ret_failure; then
+- exitcode=1
+- echo as_func_ret_failure succeeded.
++# 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
+
+-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+- :
+-else
+- exitcode=1
+- echo positional parameters were not saved.
+-fi
+
+-test \$exitcode = 0) || { (exit 1); exit 1; }
++ 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
+
+-(
+- as_lineno_1=\$LINENO
+- as_lineno_2=\$LINENO
+- test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+- test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+-") 2> /dev/null; then
+- :
+-else
+- as_candidate_shells=
++ ;;
++ 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 /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
++for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+- case $as_dir in
++ for as_base in sh bash ksh sh5; do
++ case $as_dir in
+ /*)
+- for as_base in sh bash ksh sh5; do
+- as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+- done;;
+- esac
+-done
+-IFS=$as_save_IFS
+-
+-
+- for as_shell in $as_candidate_shells $SHELL; do
+- # Try only shells that exist, to save several forks.
+- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+- { ("$as_shell") 2> /dev/null <<\_ASEOF
+-# 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+"$@"}'='"$@"'
+- setopt NO_GLOB_SUBST
+-else
+- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+-fi
+-BIN_SH=xpg4; export BIN_SH # for Tru64
+-DUALCASE=1; export DUALCASE # for MKS sh
+-
+-:
+-_ASEOF
+-}; then
+- CONFIG_SHELL=$as_shell
+- as_have_required=yes
+- if { "$as_shell" 2> /dev/null <<\_ASEOF
+-# 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+"$@"}'='"$@"'
+- setopt NO_GLOB_SUBST
+-else
+- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+-fi
+-BIN_SH=xpg4; export BIN_SH # for Tru64
+-DUALCASE=1; export DUALCASE # for MKS sh
+-
+-:
+-(as_func_return () {
+- (exit $1)
+-}
+-as_func_success () {
+- as_func_return 0
+-}
+-as_func_failure () {
+- as_func_return 1
+-}
+-as_func_ret_success () {
+- return 0
+-}
+-as_func_ret_failure () {
+- return 1
+-}
+-
+-exitcode=0
+-if as_func_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_success failed.
+-fi
+-
+-if as_func_failure; then
+- exitcode=1
+- echo as_func_failure succeeded.
+-fi
+-
+-if as_func_ret_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_ret_success failed.
+-fi
+-
+-if as_func_ret_failure; then
+- exitcode=1
+- echo as_func_ret_failure succeeded.
+-fi
+-
+-if ( set x; as_func_ret_success y && test x = "$1" ); then
+- :
+-else
+- exitcode=1
+- echo positional parameters were not saved.
+-fi
+-
+-test $exitcode = 0) || { (exit 1); exit 1; }
+-
+-(
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+-
+-_ASEOF
+-}; then
+- break
+-fi
+-
+-fi
+-
+- done
+-
+- if test "x$CONFIG_SHELL" != x; then
+- for as_var in BASH_ENV ENV
+- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+- done
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+-fi
+-
+-
+- if test $as_have_required = no; then
+- echo This script requires a shell more modern than all the
+- echo shells that I found on your system. Please install a
+- echo modern shell, or manually run the script under such a
+- echo shell if you do have one.
+- { (exit 1); exit 1; }
+-fi
+-
+-
+-fi
+-
+-fi
+-
+-
+-
+-(eval "as_func_return () {
+- (exit \$1)
+-}
+-as_func_success () {
+- as_func_return 0
+-}
+-as_func_failure () {
+- as_func_return 1
+-}
+-as_func_ret_success () {
+- return 0
+-}
+-as_func_ret_failure () {
+- return 1
+-}
+-
+-exitcode=0
+-if as_func_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_success failed.
+-fi
+-
+-if as_func_failure; then
+- exitcode=1
+- echo as_func_failure succeeded.
+-fi
+-
+-if as_func_ret_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_ret_success failed.
+-fi
+-
+-if as_func_ret_failure; then
+- exitcode=1
+- echo as_func_ret_failure succeeded.
+-fi
+-
+-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+- :
+-else
+- exitcode=1
+- echo positional parameters were not saved.
+-fi
+-
+-test \$exitcode = 0") || {
+- echo No shell found that supports shell functions.
+- echo Please tell autoconf@gnu.org about your system,
+- echo including any error possibly output before this
+- echo message
+-}
+-
+-
+-
++ 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`expr $as_lineno_1 + 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 after each line using $LINENO; the second 'sed'
+- # does the real work. The second script uses 'N' to pair each
+- # line-number line with the line containing $LINENO, and appends
+- # trailing '-' during substitution so that $LINENO is not a special
+- # case at line end.
++ # 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
+- # scripts with optimization help from Paolo Bonzini. Blame Lee
+- # E. McMahon (1931-1989) for sed's syntax. :-)
+- sed -n '
+- p
+- /[$]LINENO/=
+- ' <$as_myself |
++ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
++ sed '=' <$as_myself |
+ sed '
+- s/[$]LINENO.*/&-/
+- t lineno
+- b
+- :lineno
+ N
+- :loop
+- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
++ s,$,-,
++ : loop
++ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+- s/-\n.*//
++ s,-$,,
++ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+- chmod +x "$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 sensitive to this).
+- . "./$as_me.lineno"
++ # original and so on. Autoconf is especially sensible to this).
++ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+- as_dirname=dirname
+-else
+- as_dirname=false
+-fi
+-
+-ECHO_C= ECHO_N= ECHO_T=
+-case `echo -n x` in
+--n*)
+- case `echo 'x\c'` in
+- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+- *) ECHO_C='\c';;
+- esac;;
+-*)
+- ECHO_N='-n';;
++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 &&
+- test "X`expr 00001 : '.*\(...\)'`" = X001; then
++if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
+-if test -d conf$$.dir; then
+- rm -f conf$$.dir/conf$$.file
+-else
+- rm -f conf$$.dir
+- mkdir conf$$.dir
+-fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- as_ln_s='ln -s'
+- # ... but there are two gotchas:
+- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+- # In both cases, we have to default to `cp -p'.
+- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
++ # 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$$.dir/conf$$.file conf$$.file
+-rmdir conf$$.dir 2>/dev/null
++rm -f conf$$ conf$$.exe conf$$.file
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -512,19 +222,7 @@
+ as_mkdir_p=false
+ fi
+
+-# Find out whether ``test -x'' works. Don't use a zero-byte file, as
+-# systems may use methods other than mode bits to determine executability.
+-cat >conf$$.file <<_ASEOF
+-#! /bin/sh
+-exit 0
+-_ASEOF
+-chmod +x conf$$.file
+-if test -x conf$$.file >/dev/null 2>&1; then
+- as_executable_p="test -x"
+-else
+- as_executable_p=:
+-fi
+-rm -f conf$$.file
++as_executable_p="test -f"
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -533,6 +231,15 @@
+ as_tr_sh="eval 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
++
+
+
+ # Check that we are running under the correct shell.
+@@ -571,15 +278,15 @@
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+ if test -z "$ECHO"; then
+ if test "X${echo_test_string+set}" != Xset; then
+ # find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+- if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+- echo_test_string=`eval $cmd` &&
++ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
++ echo_test_string="`eval $cmd`" &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+@@ -688,26 +395,29 @@
+
+ tagnames=${tagnames+${tagnames},}F77
+
+-exec 7<&0 </dev/null 6>&1
+-
+ # 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.
+ #
+ ac_default_prefix=/usr/local
+-ac_clean_files=
+ ac_config_libobj_dir=.
+-LIBOBJS=
+ cross_compiling=no
+ subdirs=
+ MFLAGS=
+ MAKEFLAGS=
+ SHELL=${CONFIG_SHELL-/bin/sh}
+
++# 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='mediastreamer'
+ PACKAGE_TARNAME='mediastreamer'
+@@ -718,231 +428,42 @@
+ # Factoring default headers for most tests.
+ ac_includes_default="\
+ #include <stdio.h>
+-#ifdef HAVE_SYS_TYPES_H
++#if HAVE_SYS_TYPES_H
+ # include <sys/types.h>
+ #endif
+-#ifdef HAVE_SYS_STAT_H
++#if HAVE_SYS_STAT_H
+ # include <sys/stat.h>
+ #endif
+-#ifdef STDC_HEADERS
++#if STDC_HEADERS
+ # include <stdlib.h>
+ # include <stddef.h>
+ #else
+-# ifdef HAVE_STDLIB_H
++# if HAVE_STDLIB_H
+ # include <stdlib.h>
+ # endif
+ #endif
+-#ifdef HAVE_STRING_H
+-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
++#if HAVE_STRING_H
++# if !STDC_HEADERS && HAVE_MEMORY_H
+ # include <memory.h>
+ # endif
+ # include <string.h>
+ #endif
+-#ifdef HAVE_STRINGS_H
++#if HAVE_STRINGS_H
+ # include <strings.h>
+ #endif
+-#ifdef HAVE_INTTYPES_H
++#if HAVE_INTTYPES_H
+ # include <inttypes.h>
++#else
++# if HAVE_STDINT_H
++# include <stdint.h>
++# endif
+ #endif
+-#ifdef HAVE_STDINT_H
+-# include <stdint.h>
+-#endif
+-#ifdef HAVE_UNISTD_H
++#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
+-datarootdir
+-datadir
+-sysconfdir
+-sharedstatedir
+-localstatedir
+-includedir
+-oldincludedir
+-docdir
+-infodir
+-htmldir
+-dvidir
+-pdfdir
+-psdir
+-libdir
+-localedir
+-mandir
+-DEFS
+-ECHO_C
+-ECHO_N
+-ECHO_T
+-LIBS
+-build_alias
+-host_alias
+-target_alias
+-build
+-build_cpu
+-build_vendor
+-build_os
+-host
+-host_cpu
+-host_vendor
+-host_os
+-target
+-target_cpu
+-target_vendor
+-target_os
+-LIBMEDIASTREAMER_SO_VERSION
+-MEDIASTREAMER_VERSION
+-INSTALL_PROGRAM
+-INSTALL_SCRIPT
+-INSTALL_DATA
+-CYGPATH_W
+-PACKAGE
+-VERSION
+-ACLOCAL
+-AUTOCONF
+-AUTOMAKE
+-AUTOHEADER
+-MAKEINFO
+-install_sh
+-STRIP
+-INSTALL_STRIP_PROGRAM
+-mkdir_p
+-AWK
+-SET_MAKE
+-am__leading_dot
+-AMTAR
+-am__tar
+-am__untar
+-CC
+-CFLAGS
+-LDFLAGS
+-CPPFLAGS
+-ac_ct_CC
+-EXEEXT
+-OBJEXT
+-DEPDIR
+-am__include
+-am__quote
+-AMDEP_TRUE
+-AMDEP_FALSE
+-AMDEPBACKSLASH
+-CCDEPMODE
+-am__fastdepCC_TRUE
+-am__fastdepCC_FALSE
+-GREP
+-EGREP
+-LN_S
+-ECHO
+-AR
+-RANLIB
+-CPP
+-CXX
+-CXXFLAGS
+-ac_ct_CXX
+-CXXDEPMODE
+-am__fastdepCXX_TRUE
+-am__fastdepCXX_FALSE
+-CXXCPP
+-F77
+-FFLAGS
+-ac_ct_F77
+-LIBTOOL
+-MSPLUGINS_CFLAGS
+-MSPLUGINS_LIBS
+-BUILD_OSS_TRUE
+-BUILD_OSS_FALSE
+-ALSA_LIBS
+-BUILD_ALSA_TRUE
+-BUILD_ALSA_FALSE
+-ARTS_LIBS
+-BUILD_ARTS_TRUE
+-BUILD_ARTS_FALSE
+-PORTAUDIO_LIBS
+-BUILD_PORTAUDIO_TRUE
+-BUILD_PORTAUDIO_FALSE
+-PKG_CONFIG
+-JACK_CFLAGS
+-JACK_LIBS
+-SAMPLERATE_CFLAGS
+-SAMPLERATE_LIBS
+-SPEEX_CFLAGS
+-SPEEX_LIBS
+-BUILD_SPEEX_TRUE
+-BUILD_SPEEX_FALSE
+-GSM_CFLAGS
+-GSM_LIBS
+-BUILD_GSM_TRUE
+-BUILD_GSM_FALSE
+-FFMPEG_CFLAGS
+-FFMPEG_LIBS
+-SDL_CFLAGS
+-SDL_LIBS
+-THEORA_CFLAGS
+-THEORA_LIBS
+-VIDEO_CFLAGS
+-VIDEO_LIBS
+-BUILD_VIDEO_TRUE
+-BUILD_VIDEO_FALSE
+-BUILD_THEORA_TRUE
+-BUILD_THEORA_FALSE
+-ORTP_CFLAGS
+-ORTP_LIBS
+-PACKAGE_PLUGINS_DIR
+-EPM
+-MKEPMLIST
+-EPMINSTALL
+-WITH_EPM_TRUE
+-WITH_EPM_FALSE
+-EPM_PKG_EXT
+-SYS_USER
+-SYS_GROUP
+-ARCH
+-SUMMARY
+-PACKAGER
+-LICENSE
+-VENDOR
+-RELEASE
+-LIBOBJS
+-LTLIBOBJS'
++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 LIBMEDIASTREAMER_SO_VERSION MEDIASTREAMER_VERSION INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL MSPLUGINS_CFLAGS MSPLUGINS_LIBS BUILD_OSS_TRUE BUILD_OSS_FALSE ALSA_LIBS BUILD_ALSA_TRUE BUILD_ALSA_FALSE ARTS_LIBS BUILD_ARTS_TRUE BUILD_ARTS_FALSE PORTAUDIO_LIBS BUILD_PORTAUDIO_TRUE BUILD_PORTAUDIO_FALSE PKG_CONFIG JACK_CFLAGS JACK_LIBS SAMPLERATE_CFLAGS SAMPLERATE_LIBS SPEEX_CFLAGS SPEEX_LIBS BUILD_SPEEX_TRUE BUILD_SPEEX_FALSE GSM_CFLAGS GSM_LIBS BUILD_GSM_TRUE BUILD_GSM_FALSE FFMPEG_CFLAGS FFMPEG_LIBS SDL_CFLAGS SDL_LIBS THEORA_CFLAGS THEORA_LIBS VIDEO_CFLAGS VIDEO_LIBS BUILD_VIDEO_TRUE BUILD_VIDEO_FALSE BUILD_THEORA_TRUE BUILD_THEORA_FALSE ORTP_CFLAGS ORTP_LIBS PACKAGE_PLUGINS_DIR EPM MKEPMLIST EPMINSTALL WITH_EPM_TRUE WITH_EPM_FALSE EPM_PKG_EXT SYS_USER SYS_GROUP ARCH SUMMARY PACKAGER LICENSE VENDOR RELEASE LIBOBJS LTLIBOBJS'
+ ac_subst_files=''
+- ac_precious_vars='build_alias
+-host_alias
+-target_alias
+-CC
+-CFLAGS
+-LDFLAGS
+-CPPFLAGS
+-CPP
+-CXX
+-CXXFLAGS
+-CCC
+-CXXCPP
+-F77
+-FFLAGS
+-PKG_CONFIG
+-JACK_CFLAGS
+-JACK_LIBS
+-SAMPLERATE_CFLAGS
+-SAMPLERATE_LIBS
+-SPEEX_CFLAGS
+-SPEEX_LIBS
+-FFMPEG_CFLAGS
+-FFMPEG_LIBS
+-THEORA_CFLAGS
+-THEORA_LIBS
+-ORTP_CFLAGS
+-ORTP_LIBS'
+-
+
+ # Initialize some variables set by options.
+ ac_init_help=
+@@ -969,48 +490,34 @@
+ # 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.
+-# (The list follows the same order as the GNU Coding Standards.)
+ bindir='${exec_prefix}/bin'
+ sbindir='${exec_prefix}/sbin'
+ libexecdir='${exec_prefix}/libexec'
+-datarootdir='${prefix}/share'
+-datadir='${datarootdir}'
++datadir='${prefix}/share'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
++libdir='${exec_prefix}/lib'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+-infodir='${datarootdir}/info'
+-htmldir='${docdir}'
+-dvidir='${docdir}'
+-pdfdir='${docdir}'
+-psdir='${docdir}'
+-libdir='${exec_prefix}/lib'
+-localedir='${datarootdir}/locale'
+-mandir='${datarootdir}/man'
++infodir='${prefix}/info'
++mandir='${prefix}/man'
+
+ ac_prev=
+-ac_dashdash=
+ for ac_option
+ do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+- eval $ac_prev=\$ac_option
++ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+- case $ac_option in
+- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+- *) ac_optarg=yes ;;
+- esac
++ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+- case $ac_dashdash$ac_option in
+- --)
+- ac_dashdash=yes ;;
++ case $ac_option in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+@@ -1032,18 +539,12 @@
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+- -datadir | --datadir | --datadi | --datad)
++ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+- -datadir=* | --datadir=* | --datadi=* | --datad=*)
++ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
++ | --da=*)
+ datadir=$ac_optarg ;;
+
+- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+- | --dataroo | --dataro | --datar)
+- ac_prev=datarootdir ;;
+- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+- datarootdir=$ac_optarg ;;
+-
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+@@ -1051,17 +552,7 @@
+ { 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 ;;
+-
+- -docdir | --docdir | --docdi | --doc | --do)
+- ac_prev=docdir ;;
+- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+- docdir=$ac_optarg ;;
+-
+- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+- ac_prev=dvidir ;;
+- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+- dvidir=$ac_optarg ;;
++ eval "enable_$ac_feature=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+@@ -1070,7 +561,11 @@
+ { 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=\$ac_optarg ;;
++ case $ac_option in
++ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
++ *) ac_optarg=yes ;;
++ esac
++ eval "enable_$ac_feature='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+@@ -1097,12 +592,6 @@
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+- ac_prev=htmldir ;;
+- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+- | --ht=*)
+- htmldir=$ac_optarg ;;
+-
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+@@ -1127,16 +616,13 @@
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+- -localedir | --localedir | --localedi | --localed | --locale)
+- ac_prev=localedir ;;
+- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+- localedir=$ac_optarg ;;
+-
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+- | --localstate | --localstat | --localsta | --localst | --locals)
++ | --localstate | --localstat | --localsta | --localst \
++ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
++ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
++ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+@@ -1201,16 +687,6 @@
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+- -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+- ac_prev=pdfdir ;;
+- -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+- pdfdir=$ac_optarg ;;
+-
+- -psdir | --psdir | --psdi | --psd | --ps)
+- ac_prev=psdir ;;
+- -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+- psdir=$ac_optarg ;;
+-
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+@@ -1267,7 +743,11 @@
+ { 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=\$ac_optarg ;;
++ case $ac_option in
++ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
++ *) ac_optarg=yes ;;
++ esac
++ eval "with_$ac_package='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+@@ -1276,7 +756,7 @@
+ { 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 ;;
++ eval "with_$ac_package=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+@@ -1307,7 +787,8 @@
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+- eval $ac_envvar=\$ac_optarg
++ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
++ eval "$ac_envvar='$ac_optarg'"
+ export $ac_envvar ;;
+
+ *)
+@@ -1327,19 +808,27 @@
+ { (exit 1); exit 1; }; }
+ fi
+
+-# Be sure to have absolute directory names.
+-for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+- datadir sysconfdir sharedstatedir localstatedir includedir \
+- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+- libdir localedir mandir
++# Be sure to have absolute paths.
++for ac_var in exec_prefix prefix
+ do
+- eval ac_val=\$$ac_var
++ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+- [\\/$]* | ?:[\\/]* ) continue;;
+- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
++ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
++ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
++ { (exit 1); exit 1; }; };;
++ esac
++done
++
++# Be sure to have absolute paths.
++for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
++ localstatedir libdir includedir oldincludedir infodir mandir
++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; }; };;
+ esac
+- { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; }
+ done
+
+ # There might be people who depend on the old broken behavior: `$host'
+@@ -1366,76 +855,94 @@
+ test "$silent" = yes && exec 6>/dev/null
+
+
+-ac_pwd=`pwd` && test -n "$ac_pwd" &&
+-ac_ls_di=`ls -di .` &&
+-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+- { echo "$as_me: error: Working directory cannot be determined" >&2
+- { (exit 1); exit 1; }; }
+-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+- { echo "$as_me: error: pwd does not report name of working directory" >&2
+- { (exit 1); exit 1; }; }
+-
+-
+ # 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 the parent directory.
+- ac_confdir=`$as_dirname -- "$0" ||
++ # 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 ||
++ 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'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+ srcdir=$ac_confdir
+- if test ! -r "$srcdir/$ac_unique_file"; then
++ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+ else
+ ac_srcdir_defaulted=no
+ fi
+-if test ! -r "$srcdir/$ac_unique_file"; then
+- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
++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; }; }
++ else
++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
++ { (exit 1); exit 1; }; }
++ fi
+ fi
+-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+-ac_abs_confdir=`(
+- cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
++(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; }; }
+- pwd)`
+-# When building in place, set srcdir=.
+-if test "$ac_abs_confdir" = "$ac_pwd"; then
+- srcdir=.
+-fi
+-# Remove unnecessary trailing slashes from srcdir.
+-# Double slashes in file names in object file debugging info
+-# mess up M-x gdb in Emacs.
+-case $srcdir in
+-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+-esac
+-for ac_var in $ac_precious_vars; do
+- eval ac_env_${ac_var}_set=\${${ac_var}+set}
+- eval ac_env_${ac_var}_value=\$${ac_var}
+- eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+- eval ac_cv_env_${ac_var}_value=\$${ac_var}
+-done
++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
++ac_env_CXX_set=${CXX+set}
++ac_env_CXX_value=$CXX
++ac_cv_env_CXX_set=${CXX+set}
++ac_cv_env_CXX_value=$CXX
++ac_env_CXXFLAGS_set=${CXXFLAGS+set}
++ac_env_CXXFLAGS_value=$CXXFLAGS
++ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
++ac_cv_env_CXXFLAGS_value=$CXXFLAGS
++ac_env_CXXCPP_set=${CXXCPP+set}
++ac_env_CXXCPP_value=$CXXCPP
++ac_cv_env_CXXCPP_set=${CXXCPP+set}
++ac_cv_env_CXXCPP_value=$CXXCPP
++ac_env_F77_set=${F77+set}
++ac_env_F77_value=$F77
++ac_cv_env_F77_set=${F77+set}
++ac_cv_env_F77_value=$F77
++ac_env_FFLAGS_set=${FFLAGS+set}
++ac_env_FFLAGS_value=$FFLAGS
++ac_cv_env_FFLAGS_set=${FFLAGS+set}
++ac_cv_env_FFLAGS_value=$FFLAGS
+
+ #
+ # Report the --help message.
+@@ -1464,8 +971,11 @@
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+-Installation directories:
+- --prefix=PREFIX install architecture-independent files in PREFIX
++_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]
+@@ -1481,22 +991,15 @@
+ --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]
+- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+- --infodir=DIR info documentation [DATAROOTDIR/info]
+- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+- --mandir=DIR man documentation [DATAROOTDIR/man]
+- --docdir=DIR documentation root [DATAROOTDIR/doc/mediastreamer]
+- --htmldir=DIR html documentation [DOCDIR]
+- --dvidir=DIR dvi documentation [DOCDIR]
+- --pdfdir=DIR pdf documentation [DOCDIR]
+- --psdir=DIR ps documentation [DOCDIR]
++ --infodir=DIR info documentation [PREFIX/info]
++ --mandir=DIR man documentation [PREFIX/man]
+ _ACEOF
+
+ cat <<\_ACEOF
+@@ -1527,8 +1030,10 @@
+ --enable-debug=yes/no enables the display of traces showing the execution of the library. default=yes
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+- --enable-shared[=PKGS] build shared libraries [default=yes]
+- --enable-static[=PKGS] build static libraries [default=yes]
++ --enable-shared[=PKGS]
++ build shared libraries [default=yes]
++ --enable-static[=PKGS]
++ build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+@@ -1542,7 +1047,8 @@
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+- --with-tags[=TAGS] include additional configurations [automatic]
++ --with-tags[=TAGS]
++ include additional configurations [automatic]
+ --with-gsm Sets the installation prefix of gsm codec library default=/usr
+ --with-ffmpeg Sets the installation prefix of ffmpeg, needed for video support. default=/usr
+ --with-sdl Sets the installation prefix of libSDL, needed for video support. default=/usr
+@@ -1552,117 +1058,133 @@
+ 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++/Objective C preprocessor flags, e.g. -I<include dir> if
+- you have headers in a nonstandard directory <include dir>
++ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
++ headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ CXXCPP C++ preprocessor
+ F77 Fortran 77 compiler command
+ FFLAGS Fortran 77 compiler flags
+- PKG_CONFIG path to pkg-config utility
+- JACK_CFLAGS C compiler flags for JACK, overriding pkg-config
+- JACK_LIBS linker flags for JACK, overriding pkg-config
+- SAMPLERATE_CFLAGS
+- C compiler flags for SAMPLERATE, overriding pkg-config
+- SAMPLERATE_LIBS
+- linker flags for SAMPLERATE, overriding pkg-config
+- SPEEX_CFLAGS
+- C compiler flags for SPEEX, overriding pkg-config
+- SPEEX_LIBS linker flags for SPEEX, overriding pkg-config
+- FFMPEG_CFLAGS
+- C compiler flags for FFMPEG, overriding pkg-config
+- FFMPEG_LIBS linker flags for FFMPEG, overriding pkg-config
+- THEORA_CFLAGS
+- C compiler flags for THEORA, overriding pkg-config
+- THEORA_LIBS linker flags for THEORA, overriding pkg-config
+- ORTP_CFLAGS C compiler flags for ORTP, overriding pkg-config
+- ORTP_LIBS linker flags for ORTP, overriding pkg-config
+
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+
+ _ACEOF
+-ac_status=$?
+ 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
++ test -d $ac_dir || continue
+ ac_builddir=.
+
+-case "$ac_dir" in
+-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+-*)
++if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A ".." for each directory in $ac_dir_suffix.
+- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+- case $ac_top_builddir_sub in
+- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+- esac ;;
+-esac
+-ac_abs_top_builddir=$ac_pwd
+-ac_abs_builddir=$ac_pwd$ac_dir_suffix
+-# for backward compatibility:
+-ac_top_builddir=$ac_top_build_prefix
++ # 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
+- .) # We are building in place.
++ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+- ac_top_srcdir=$ac_top_builddir_sub
+- ac_abs_top_srcdir=$ac_pwd ;;
+- [\\/]* | ?:[\\/]* ) # Absolute name.
++ 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
+- ac_abs_top_srcdir=$srcdir ;;
+- *) # Relative name.
+- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_build_prefix$srcdir
+- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++ ac_top_srcdir=$srcdir ;;
++ *) # Relative path.
++ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_builddir$srcdir ;;
++esac
++
++# Do not use `cd foo && pwd` to compute absolute paths, because
++# the directories may not exist.
++case `pwd` in
++.) ac_abs_builddir="$ac_dir";;
++*)
++ case "$ac_dir" in
++ .) ac_abs_builddir=`pwd`;;
++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
++ *) ac_abs_builddir=`pwd`/"$ac_dir";;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_builddir=${ac_top_builddir}.;;
++*)
++ case ${ac_top_builddir}. in
++ .) ac_abs_top_builddir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_srcdir=$ac_srcdir;;
++*)
++ case $ac_srcdir in
++ .) ac_abs_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_srcdir=$ac_top_srcdir;;
++*)
++ case $ac_top_srcdir in
++ .) ac_abs_top_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
++ esac;;
+ esac
+-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+- cd "$ac_dir" || { ac_status=$?; continue; }
+- # Check for guested 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
++ 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 || ac_status=$?
+- cd "$ac_pwd" || { ac_status=$?; break; }
++ fi
++ cd $ac_popdir
+ done
+ fi
+
+-test -n "$ac_init_help" && exit $ac_status
++test -n "$ac_init_help" && exit 0
+ if $ac_init_version; then
+ cat <<\_ACEOF
+ mediastreamer configure 2.0.0
+-generated by GNU Autoconf 2.60a
++generated by GNU Autoconf 2.59
+
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
++Copyright (C) 2003 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
++ exit 0
+ fi
+-cat >config.log <<_ACEOF
++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 mediastreamer $as_me 2.0.0, which was
+-generated by GNU Autoconf 2.60a. Invocation command line was
++generated by GNU Autoconf 2.59. Invocation command line was
+
+ $ $0 $@
+
+ _ACEOF
+-exec 5>>config.log
+ {
+ cat <<_ASUNAME
+ ## --------- ##
+@@ -1681,7 +1203,7 @@
+ /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`
+-/usr/bin/hostinfo = `(/usr/bin/hostinfo) 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`
+@@ -1695,7 +1217,6 @@
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+ done
+-IFS=$as_save_IFS
+
+ } >&5
+
+@@ -1717,6 +1238,7 @@
+ ac_configure_args=
+ ac_configure_args0=
+ ac_configure_args1=
++ac_sep=
+ ac_must_keep_next=false
+ for ac_pass in 1 2
+ do
+@@ -1727,7 +1249,7 @@
+ -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
+@@ -1749,7 +1271,9 @@
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+- ac_configure_args="$ac_configure_args '$ac_arg'"
++ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
++ # Get rid of the leading space.
++ ac_sep=" "
+ ;;
+ esac
+ done
+@@ -1760,8 +1284,8 @@
+ # 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: Use '\'' to represent an apostrophe within the trap.
+-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
++# 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.
+ {
+@@ -1774,34 +1298,20 @@
+ _ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+-(
+- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+- eval ac_val=\$$ac_var
+- case $ac_val in #(
+- *${as_nl}*)
+- case $ac_var in #(
+- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+- esac
+- case $ac_var in #(
+- _ | IFS | as_nl) ;; #(
+- *) $as_unset $ac_var ;;
+- esac ;;
+- esac
+- done
++{
+ (set) 2>&1 |
+- case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+- *${as_nl}ac_space=\ *)
++ 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"
+- ;; #(
++ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
++ ;;
+ *)
+- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
++ sed -n \
++ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+- esac |
+- sort
+-)
++ esac;
++}
+ echo
+
+ cat <<\_ASBOX
+@@ -1812,28 +1322,22 @@
+ echo
+ for ac_var in $ac_subst_vars
+ do
+- eval ac_val=\$$ac_var
+- case $ac_val in
+- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+- esac
+- echo "$ac_var='\''$ac_val'\''"
++ eval ac_val=$`echo $ac_var`
++ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+-## ------------------- ##
+-## File substitutions. ##
+-## ------------------- ##
++## ------------- ##
++## Output files. ##
++## ------------- ##
+ _ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+- eval ac_val=\$$ac_var
+- case $ac_val in
+- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+- esac
+- echo "$ac_var='\''$ac_val'\''"
++ eval ac_val=$`echo $ac_var`
++ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+ fi
+@@ -1845,24 +1349,26 @@
+ ## ----------- ##
+ _ASBOX
+ echo
+- cat confdefs.h
++ 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.conftest.* &&
+- rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
++ rm -f core *.core &&
++ rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+-' 0
++ ' 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 -f -r conftest* confdefs.h
++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.
+
+@@ -1893,17 +1399,14 @@
+
+ # Let the site file select an alternate cache file if it wants to.
+ # Prefer explicitly selected file to automatically selected ones.
+-if test -n "$CONFIG_SITE"; then
+- set x "$CONFIG_SITE"
+-elif test "x$prefix" != xNONE; then
+- set x "$prefix/share/config.site" "$prefix/etc/config.site"
+-else
+- set x "$ac_default_prefix/share/config.site" \
+- "$ac_default_prefix/etc/config.site"
++if test -z "$CONFIG_SITE"; then
++ if test "x$prefix" != xNONE; then
++ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
++ else
++ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
++ fi
+ fi
+-shift
+-for ac_site_file
+-do
++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;}
+@@ -1919,8 +1422,8 @@
+ { 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";;
++ [\\/]* | ?:[\\/]* ) . $cache_file;;
++ *) . ./$cache_file;;
+ esac
+ fi
+ else
+@@ -1932,11 +1435,12 @@
+ # Check that the precious variables saved in the cache have kept the same
+ # value.
+ ac_cache_corrupted=false
+-for ac_var in $ac_precious_vars; do
++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
++ 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
+@@ -1961,7 +1465,8 @@
+ # 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=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+@@ -1978,6 +1483,12 @@
+ { (exit 1); exit 1; }; }
+ 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
++
+
+
+
+@@ -2002,11 +1513,6 @@
+
+
+
+-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
+
+
+
+@@ -2016,154 +1522,104 @@
+ echo "$as_me: licensed under the terms of the General Public License (GPL)" >&6;}
+
+ ac_aux_dir=
+-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+- if test -f "$ac_dir/install-sh"; then
++for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
++ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+- elif test -f "$ac_dir/install.sh"; then
++ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+- elif test -f "$ac_dir/shtool"; then
++ 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;}
++ { { 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; }; }
+ fi
+-
+-# These three variables are undocumented and unsupported,
+-# and are intended to be withdrawn in a future Autoconf release.
+-# They can cause serious problems if a builder's source tree is in a directory
+-# whose full name contains unusual characters.
+-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+-
++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.
+
+ # Make sure we can run config.sub.
+-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+- { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+-echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
++$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; }
++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_build_alias=$build_alias
+-test "x$ac_build_alias" = x &&
+- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+-test "x$ac_build_alias" = x &&
++ 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=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
++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; }; }
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+-echo "${ECHO_T}$ac_cv_build" >&6; }
+-case $ac_cv_build in
+-*-*-*) ;;
+-*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+-echo "$as_me: error: invalid value of canonical build" >&2;}
+- { (exit 1); exit 1; }; };;
+-esac
++echo "$as_me:$LINENO: result: $ac_cv_build" >&5
++echo "${ECHO_T}$ac_cv_build" >&6
+ build=$ac_cv_build
+-ac_save_IFS=$IFS; IFS='-'
+-set x $ac_cv_build
+-shift
+-build_cpu=$1
+-build_vendor=$2
+-shift; shift
+-# Remember, the first character of IFS is used to create $*,
+-# except with old shells:
+-build_os=$*
+-IFS=$ac_save_IFS
+-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
++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 "$as_me:$LINENO: checking host system type" >&5
+-echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
++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
+- if test "x$host_alias" = x; then
+- ac_cv_host=$ac_cv_build
+-else
+- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
++ 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; }; }
+-fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+-echo "${ECHO_T}$ac_cv_host" >&6; }
+-case $ac_cv_host in
+-*-*-*) ;;
+-*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+-echo "$as_me: error: invalid value of canonical host" >&2;}
+- { (exit 1); exit 1; }; };;
+-esac
++echo "$as_me:$LINENO: result: $ac_cv_host" >&5
++echo "${ECHO_T}$ac_cv_host" >&6
+ host=$ac_cv_host
+-ac_save_IFS=$IFS; IFS='-'
+-set x $ac_cv_host
+-shift
+-host_cpu=$1
+-host_vendor=$2
+-shift; shift
+-# Remember, the first character of IFS is used to create $*,
+-# except with old shells:
+-host_os=$*
+-IFS=$ac_save_IFS
+-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
++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/'`
+
+
+-{ echo "$as_me:$LINENO: checking target system type" >&5
+-echo $ECHO_N "checking target system type... $ECHO_C" >&6; }
++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
+- if test "x$target_alias" = x; then
+- ac_cv_target=$ac_cv_host
+-else
+- ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5
+-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}
++ 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; }; }
+-fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5
+-echo "${ECHO_T}$ac_cv_target" >&6; }
+-case $ac_cv_target in
+-*-*-*) ;;
+-*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5
+-echo "$as_me: error: invalid value of canonical target" >&2;}
+- { (exit 1); exit 1; }; };;
+-esac
++echo "$as_me:$LINENO: result: $ac_cv_target" >&5
++echo "${ECHO_T}$ac_cv_target" >&6
+ target=$ac_cv_target
+-ac_save_IFS=$IFS; IFS='-'
+-set x $ac_cv_target
+-shift
+-target_cpu=$1
+-target_vendor=$2
+-shift; shift
+-# Remember, the first character of IFS is used to create $*,
+-# except with old shells:
+-target_os=$*
+-IFS=$ac_save_IFS
+-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
++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/'`
+
+
+ # The aliases save the names the user supplied, while $host etc.
+@@ -2192,8 +1648,8 @@
+ PACKAGE=mediastreamer
+
+ OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+-{ echo "$as_me:$LINENO: result: Building Package on ${OS}" >&5
+-echo "${ECHO_T}Building Package on ${OS}" >&6; }
++echo "$as_me:$LINENO: result: Building Package on ${OS}" >&5
++echo "${ECHO_T}Building Package on ${OS}" >&6
+
+ am__api_version="1.9"
+ # Find a good install program. We prefer a C program (faster),
+@@ -2209,8 +1665,8 @@
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./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 "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+ if test -z "$INSTALL"; then
+ if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -2232,7 +1688,7 @@
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; }; then
++ 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.
+@@ -2251,22 +1707,21 @@
+ ;;
+ esac
+ done
+-IFS=$as_save_IFS
+
+
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+- # As a last resort, use the slow shell script. Don't cache a
+- # value for INSTALL within a source directory, because that will
++ # 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 value is a relative name.
++ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+ fi
+-{ echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6; }
++echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+@@ -2276,8 +1731,8 @@
+
+ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+-{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether build environment is sane" >&5
++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+ # Just in case
+ sleep 1
+ echo timestamp > conftest.file
+@@ -2319,20 +1774,20 @@
+ Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-{ echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ test "$program_prefix" != NONE &&
+- program_transform_name="s&^&$program_prefix&;$program_transform_name"
++ program_transform_name="s,^,$program_prefix,;$program_transform_name"
+ # Use a double $ so make ignores it.
+ test "$program_suffix" != NONE &&
+- program_transform_name="s&\$&$program_suffix&;$program_transform_name"
++ program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+ # Double any \ or $. echo might interpret backslashes.
+ # By default was `s,x,x', remove it if useless.
+ cat <<\_ACEOF >conftest.sed
+ s/[\\$]/&&/g;s/;s,x,x,$//
+ _ACEOF
+ program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+-rm -f conftest.sed
++rm conftest.sed
+
+ # expand $ac_aux_dir to an absolute path
+ am_aux_dir=`cd $ac_aux_dir && pwd`
+@@ -2384,8 +1839,8 @@
+ 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; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2398,57 +1853,54 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ AWK=$ac_cv_prog_AWK
+ if test -n "$AWK"; then
+- { echo "$as_me:$LINENO: result: $AWK" >&5
+-echo "${ECHO_T}$AWK" >&6; }
++ echo "$as_me:$LINENO: result: $AWK" >&5
++echo "${ECHO_T}$AWK" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$AWK" && break
+ done
+
+-{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
+-set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
++echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
++set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
++if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.make <<\_ACEOF
+-SHELL = /bin/sh
+ all:
+- @echo '@@@%%%=$(MAKE)=@@@%%%'
++ @echo 'ac_maketemp="$(MAKE)"'
+ _ACEOF
+ # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+-case `${MAKE-make} -f conftest.make 2>/dev/null` in
+- *@@@%%%=?*=@@@%%%*)
+- eval ac_cv_prog_make_${ac_make}_set=yes;;
+- *)
+- eval ac_cv_prog_make_${ac_make}_set=no;;
+-esac
++eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
++if test -n "$ac_maketemp"; then
++ eval ac_cv_prog_make_${ac_make}_set=yes
++else
++ eval ac_cv_prog_make_${ac_make}_set=no
++fi
+ rm -f conftest.make
+ fi
+-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ SET_MAKE=
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ SET_MAKE="MAKE=${MAKE-make}"
+ fi
+
+@@ -2519,8 +1971,8 @@
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2533,34 +1985,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- { echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6; }
++ echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++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_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2573,41 +2023,27 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
++ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6; }
++ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_STRIP" = x; then
+- STRIP=":"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- STRIP=$ac_ct_STRIP
+- fi
++ STRIP=$ac_ct_STRIP
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -2622,8 +2058,8 @@
+ AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+
+-{ echo "$as_me:$LINENO: checking how to create a ustar tar archive" >&5
+-echo $ECHO_N "checking how to create a ustar tar archive... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking how to create a ustar tar archive" >&5
++echo $ECHO_N "checking how to create a ustar tar archive... $ECHO_C" >&6
+ # Loop over all known methods to create a tar archive until one works.
+ _am_tools='gnutar plaintar pax cpio none'
+ _am_tools=${am_cv_prog_tar_ustar-$_am_tools}
+@@ -2701,14 +2137,14 @@
+ am_cv_prog_tar_ustar=$_am_tool
+ fi
+
+-{ echo "$as_me:$LINENO: result: $am_cv_prog_tar_ustar" >&5
+-echo "${ECHO_T}$am_cv_prog_tar_ustar" >&6; }
++echo "$as_me:$LINENO: result: $am_cv_prog_tar_ustar" >&5
++echo "${ECHO_T}$am_cv_prog_tar_ustar" >&6
+
+
+
+
+
+-ac_config_headers="$ac_config_headers mediastreamer-config.h"
++ ac_config_headers="$ac_config_headers mediastreamer-config.h"
+
+
+ cat >>confdefs.h <<_ACEOF
+@@ -2733,22 +2169,23 @@
+
+
+
+-{ echo "$as_me:$LINENO: checking warning make an error on compilation" >&5
+-echo $ECHO_N "checking warning make an error on compilation... $ECHO_C" >&6; }
+-# Check whether --enable-strict was given.
++echo "$as_me:$LINENO: checking warning make an error on compilation" >&5
++echo $ECHO_N "checking warning make an error on compilation... $ECHO_C" >&6
++# Check whether --enable-strict or --disable-strict was given.
+ if test "${enable_strict+set}" = set; then
+- enableval=$enable_strict; wall_werror=$enableval
++ enableval="$enable_strict"
++ wall_werror=$enableval
+ else
+ wall_werror=yes
+
+-fi
+-
++fi;
+
+ CFLAGS="-DORTP_INET6 $CFLAGS "
+
+-# Check whether --enable-ipv6 was given.
++# Check whether --enable-ipv6 or --disable-ipv6 was given.
+ if test "${enable_ipv6+set}" = set; then
+- enableval=$enable_ipv6; case "${enableval}" in
++ enableval="$enable_ipv6"
++ case "${enableval}" in
+ yes) ipv6=true;;
+ no) ipv6=false;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-ipv6" >&5
+@@ -2757,16 +2194,16 @@
+ esac
+ else
+ ipv6=true
+-fi
+-
++fi;
+ if test x$ipv6 = xtrue ; then
+ CFLAGS="$CFLAGS -DINET6"
+ fi
+
+
+-# Check whether --enable-debug was given.
++# Check whether --enable-debug or --disable-debug was given.
+ if test "${enable_debug+set}" = set; then
+- enableval=$enable_debug; case "${enableval}" in
++ enableval="$enable_debug"
++ case "${enableval}" in
+ yes) debug_enabled=yes;;
+ no) debug_enabled=no;;
+ *) { { echo "$as_me:$LINENO: error: \"Bad value for --enable-debug\"" >&5
+@@ -2775,8 +2212,7 @@
+ esac
+ else
+ debug_enabled=no
+-fi
+-
++fi;
+
+
+ ac_ext=c
+@@ -2787,8 +2223,8 @@
+ 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; }
++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
+@@ -2801,34 +2237,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ 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.
+ 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; }
++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
+@@ -2841,51 +2275,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
+ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_CC" = x; then
+- CC=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- CC=$ac_ct_CC
+- 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.
++ 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; }
++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
+@@ -2898,34 +2317,74 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ 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 "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; }
++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
+@@ -2939,7 +2398,7 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+@@ -2950,7 +2409,6 @@
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -2968,23 +2426,22 @@
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl.exe
++ 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; }
++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
+@@ -2997,38 +2454,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl.exe
++ 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; }
++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
+@@ -3041,45 +2496,29 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$ac_ct_CC" && break
+ done
+
+- if test "x$ac_ct_CC" = x; then
+- CC=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- CC=$ac_ct_CC
+- fi
++ CC=$ac_ct_CC
+ fi
+
+ fi
+@@ -3092,35 +2531,21 @@
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO: checking for C compiler version" >&5
++echo "$as_me:$LINENO:" \
++ "checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (ac_try="$ac_compiler --version >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler --version >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -v >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -v >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -V >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -V >&5") 2>&5
++{ (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); }
+@@ -3145,77 +2570,47 @@
+ # 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 file name" >&5
+-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+-#
+-# List of possible output files, starting from the most likely.
+-# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
+-# only as a last resort. b.out is created by i960 compilers.
+-ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
+-#
+-# The IRIX 6 linker writes into existing files which may not be
+-# executable, retaining their permissions. Remove them first so a
+-# subsequent execution test works.
+-ac_rmfiles=
+-for ac_file in $ac_files
+-do
+- case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+- * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+- esac
+-done
+-rm -f $ac_rmfiles
+-
+-if { (ac_try="$ac_link_default"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link_default") 2>&5
++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
+- # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+-# in a Makefile. We should not override ac_cv_exeext if it was cached,
+-# so that the user can short-circuit this test for compilers unknown to
+-# Autoconf.
+-for ac_file in $ac_files ''
++ # 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 | *.map | *.inf | *.o | *.obj )
++ *.$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;;
+ *.* )
+- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+- then :; else
+- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- fi
+- # We set ac_cv_exeext here because the later test for it is not
+- # safe: cross compilers may not add the suffix if given an `-o'
+- # argument, so we may need to know it at that point already.
+- # Even if this section looks crufty: it has the advantage of
+- # actually working.
++ 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
+-test "$ac_cv_exeext" = no && ac_cv_exeext=
+-
+ else
+- ac_file=''
+-fi
+-
+-{ echo "$as_me:$LINENO: result: $ac_file" >&5
+-echo "${ECHO_T}$ac_file" >&6; }
+-if test -z "$ac_file"; then
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+@@ -3227,21 +2622,19 @@
+ fi
+
+ ac_exeext=$ac_cv_exeext
++echo "$as_me:$LINENO: result: $ac_file" >&5
++echo "${ECHO_T}$ac_file" >&6
+
+-# Check that the compiler produces executables we can run. If not, either
++# 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; }
++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'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -3260,27 +2653,22 @@
+ fi
+ fi
+ fi
+-{ echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+
+ rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ ac_clean_files=$ac_clean_files_save
+-# Check that the compiler produces executables we can run. If not, either
++# 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 { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>&5
++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
+@@ -3291,8 +2679,9 @@
+ 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 | *.map | *.inf | *.o | *.obj ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
++ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+@@ -3306,14 +2695,14 @@
+ fi
+
+ rm -f conftest$ac_cv_exeext
+-{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+-echo "${ECHO_T}$ac_cv_exeext" >&6; }
++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; }
++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
+ else
+@@ -3333,20 +2722,14 @@
+ }
+ _ACEOF
+ rm -f conftest.o conftest.obj
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>&5
++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 conftest.o conftest.obj conftest.*; do
+- test -f "$ac_file" || continue;
++ 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 | *.map | *.inf ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+@@ -3364,12 +2747,12 @@
+
+ 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; }
++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; }
++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
+@@ -3392,36 +2775,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -3430,139 +2801,24 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_compiler_gnu=no
++ac_compiler_gnu=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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; }
++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
+-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
++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
+ else
+- ac_save_c_werror_flag=$ac_c_werror_flag
+- ac_c_werror_flag=yes
+- ac_cv_prog_cc_g=no
+- CFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* 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 { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_g=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- CFLAGS=""
+- cat >conftest.$ac_ext <<_ACEOF
+-/* 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 { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- ac_c_werror_flag=$ac_save_c_werror_flag
+- CFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -3578,36 +2834,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -3616,20 +2860,12 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
++ac_cv_prog_cc_g=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+- ac_c_werror_flag=$ac_save_c_werror_flag
++rm -f conftest.err 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 "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+@@ -3645,12 +2881,12 @@
+ CFLAGS=
+ fi
+ fi
+-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+-if test "${ac_cv_prog_cc_c89+set}" = set; then
++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_c89=no
++ ac_cv_prog_cc_stdc=no
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -3684,17 +2920,12 @@
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std is added to get
++ as 'x'. The following induces an error, until -std1 is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std. */
++ that's true only with -std1. */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+- inside strings and character constants. */
+-#define FOO(x) 'x'
+-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+-
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+@@ -3709,84 +2940,215 @@
+ return 0;
+ }
+ _ACEOF
+-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++# 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 { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_c89=$ac_arg
++ 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 core conftest.err conftest.$ac_objext
+- test "x$ac_cv_prog_cc_c89" != "xno" && break
++rm -f conftest.err conftest.$ac_objext
+ done
+-rm -f conftest.$ac_ext
++rm -f conftest.$ac_ext conftest.$ac_objext
+ CC=$ac_save_CC
+
+ fi
+-# AC_CACHE_VAL
+-case "x$ac_cv_prog_cc_c89" in
+- x)
+- { echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6; } ;;
+- xno)
+- { echo "$as_me:$LINENO: result: unsupported" >&5
+-echo "${ECHO_T}unsupported" >&6; } ;;
++
++case "x$ac_cv_prog_cc_stdc" in
++ x|xno)
++ echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6 ;;
+ *)
+- CC="$CC $ac_cv_prog_cc_c89"
+- { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&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>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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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 \
++ '' \
++ '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
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_declaration
++#include <stdlib.h>
++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>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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++continue
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++ cat >conftest.$ac_ext <<_ACEOF
++/* 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>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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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.err 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.err 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
++DEPDIR="${am__leading_dot}deps"
++
++ ac_config_commands="$ac_config_commands depfiles"
++
+
+-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
+-DEPDIR="${am__leading_dot}deps"
+-
+-ac_config_commands="$ac_config_commands depfiles"
+-
+-
+ am_make=${MAKE-make}
+ cat > confinc << 'END'
+ am__doit:
+@@ -3794,8 +3156,8 @@
+ .PHONY: am__doit
+ END
+ # If we don't find an include directive, just comment out the code.
+-{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+ am__include="#"
+ am__quote=
+ _am_result=none
+@@ -3822,15 +3184,15 @@
+ fi
+
+
+-{ echo "$as_me:$LINENO: result: $_am_result" >&5
+-echo "${ECHO_T}$_am_result" >&6; }
++echo "$as_me:$LINENO: result: $_am_result" >&5
++echo "${ECHO_T}$_am_result" >&6
+ rm -f confinc confmf
+
+-# Check whether --enable-dependency-tracking was given.
++# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
+ if test "${enable_dependency_tracking+set}" = set; then
+- enableval=$enable_dependency_tracking;
+-fi
++ enableval="$enable_dependency_tracking"
+
++fi;
+ if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+@@ -3850,8 +3212,8 @@
+
+ depcc="$CC" am_compiler_list=
+
+-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+ if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3940,8 +3302,8 @@
+ fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
++echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+ CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+@@ -3957,9 +3319,10 @@
+ fi
+
+
+-# Check whether --enable-shared was given.
++# Check whether --enable-shared or --disable-shared was given.
+ if test "${enable_shared+set}" = set; then
+- enableval=$enable_shared; p=${PACKAGE-default}
++ enableval="$enable_shared"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+@@ -3978,12 +3341,12 @@
+ esac
+ else
+ enable_shared=yes
+-fi
+-
++fi;
+
+-# Check whether --enable-static was given.
++# Check whether --enable-static or --disable-static was given.
+ if test "${enable_static+set}" = set; then
+- enableval=$enable_static; p=${PACKAGE-default}
++ enableval="$enable_static"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+@@ -4002,12 +3365,12 @@
+ esac
+ else
+ enable_static=yes
+-fi
+-
++fi;
+
+-# Check whether --enable-fast-install was given.
++# Check whether --enable-fast-install or --disable-fast-install was given.
+ if test "${enable_fast_install+set}" = set; then
+- enableval=$enable_fast_install; p=${PACKAGE-default}
++ enableval="$enable_fast_install"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+@@ -4026,11 +3389,10 @@
+ esac
+ else
+ enable_fast_install=yes
+-fi
+-
++fi;
+
+-{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+-echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
++echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+ if test "${lt_cv_path_SED+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4054,7 +3416,7 @@
+ # Add /usr/xpg4/bin/sed as it is typically found on Solaris
+ # along with /bin/sed that truncates output.
+ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+- test ! -f $lt_ac_sed && continue
++ test ! -f $lt_ac_sed && break
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+@@ -4079,188 +3441,41 @@
+ fi
+ done
+ done
+-
+-fi
+-
+ SED=$lt_cv_path_SED
+-{ echo "$as_me:$LINENO: result: $SED" >&5
+-echo "${ECHO_T}$SED" >&6; }
+-
+-{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+-echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
+-if test "${ac_cv_path_GREP+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- # Extract the first word of "grep ggrep" to use in msg output
+-if test -z "$GREP"; then
+-set dummy grep ggrep; ac_prog_name=$2
+-if test "${ac_cv_path_GREP+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_path_GREP_found=false
+-# Loop through the user's path and test for each of PROGNAME-LIST
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_prog in grep ggrep; do
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+- { test -f "$ac_path_GREP" && $as_executable_p "$ac_path_GREP"; } || continue
+- # Check for GNU ac_path_GREP and select it if it is found.
+- # Check for GNU $ac_path_GREP
+-case `"$ac_path_GREP" --version 2>&1` in
+-*GNU*)
+- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+-*)
+- ac_count=0
+- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+- while :
+- do
+- cat "conftest.in" "conftest.in" >"conftest.tmp"
+- mv "conftest.tmp" "conftest.in"
+- cp "conftest.in" "conftest.nl"
+- echo 'GREP' >> "conftest.nl"
+- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+- ac_count=`expr $ac_count + 1`
+- if test $ac_count -gt ${ac_path_GREP_max-0}; then
+- # Best one so far, save it but keep looking for a better one
+- ac_cv_path_GREP="$ac_path_GREP"
+- ac_path_GREP_max=$ac_count
+- fi
+- # 10*(2^10) chars as input seems more than enough
+- test $ac_count -gt 10 && break
+- done
+- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+-esac
+-
+-
+- $ac_path_GREP_found && break 3
+- done
+-done
+-
+-done
+-IFS=$as_save_IFS
+-
+-
+-fi
+-
+-GREP="$ac_cv_path_GREP"
+-if test -z "$GREP"; then
+- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+- { (exit 1); exit 1; }; }
+-fi
+-
+-else
+- ac_cv_path_GREP=$GREP
+-fi
+-
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+-echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+- GREP="$ac_cv_path_GREP"
+
++echo "$as_me:$LINENO: result: $SED" >&5
++echo "${ECHO_T}$SED" >&6
+
+-{ echo "$as_me:$LINENO: checking for egrep" >&5
+-echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
+-if test "${ac_cv_path_EGREP+set}" = set; then
++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_path_EGREP="$GREP -E"
+- else
+- # Extract the first word of "egrep" to use in msg output
+-if test -z "$EGREP"; then
+-set dummy egrep; ac_prog_name=$2
+-if test "${ac_cv_path_EGREP+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_path_EGREP_found=false
+-# Loop through the user's path and test for each of PROGNAME-LIST
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_prog in egrep; do
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+- { test -f "$ac_path_EGREP" && $as_executable_p "$ac_path_EGREP"; } || continue
+- # Check for GNU ac_path_EGREP and select it if it is found.
+- # Check for GNU $ac_path_EGREP
+-case `"$ac_path_EGREP" --version 2>&1` in
+-*GNU*)
+- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+-*)
+- ac_count=0
+- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+- while :
+- do
+- cat "conftest.in" "conftest.in" >"conftest.tmp"
+- mv "conftest.tmp" "conftest.in"
+- cp "conftest.in" "conftest.nl"
+- echo 'EGREP' >> "conftest.nl"
+- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+- ac_count=`expr $ac_count + 1`
+- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+- # Best one so far, save it but keep looking for a better one
+- ac_cv_path_EGREP="$ac_path_EGREP"
+- ac_path_EGREP_max=$ac_count
++ 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
+- # 10*(2^10) chars as input seems more than enough
+- test $ac_count -gt 10 && break
+- done
+- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+-esac
+-
+-
+- $ac_path_EGREP_found && break 3
+- done
+-done
+-
+-done
+-IFS=$as_save_IFS
+-
+-
+-fi
+-
+-EGREP="$ac_cv_path_EGREP"
+-if test -z "$EGREP"; then
+- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+- { (exit 1); exit 1; }; }
+-fi
+-
+-else
+- ac_cv_path_EGREP=$EGREP
+-fi
+-
+-
+- fi
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+-echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+- EGREP="$ac_cv_path_EGREP"
++echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
++echo "${ECHO_T}$ac_cv_prog_egrep" >&6
++ EGREP=$ac_cv_prog_egrep
+
+
+
+-# Check whether --with-gnu-ld was given.
++# Check whether --with-gnu-ld or --without-gnu-ld was given.
+ if test "${with_gnu_ld+set}" = set; then
+- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
++ withval="$with_gnu_ld"
++ test "$withval" = no || with_gnu_ld=yes
+ else
+ with_gnu_ld=no
+-fi
+-
++fi;
+ ac_prog=ld
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+- { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+@@ -4289,11 +3504,11 @@
+ ;;
+ esac
+ elif test "$with_gnu_ld" = yes; then
+- { echo "$as_me:$LINENO: checking for GNU ld" >&5
+-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for GNU ld" >&5
++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+ else
+- { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+ fi
+ if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -4306,7 +3521,7 @@
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+- # but apparently some variants of GNU ld only accept -v.
++ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+@@ -4326,21 +3541,21 @@
+
+ LD="$lt_cv_path_LD"
+ if test -n "$LD"; then
+- { echo "$as_me:$LINENO: result: $LD" >&5
+-echo "${ECHO_T}$LD" >&6; }
++ echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+ test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+ echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+-{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+ if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- # I'd rather use --version here, but apparently some GNU lds only accept -v.
++ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+ case `$LD -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+@@ -4350,38 +3565,29 @@
+ ;;
+ esac
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+ with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+-{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+ if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ lt_cv_ld_reload_flag='-r'
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+ reload_flag=$lt_cv_ld_reload_flag
+ case $reload_flag in
+ "" | " "*) ;;
+ *) reload_flag=" $reload_flag" ;;
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+-case $host_os in
+- darwin*)
+- if test "$GCC" = yes; then
+- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+- else
+- reload_cmds='$LD$reload_flag -o $output$reload_objs'
+- fi
+- ;;
+-esac
+
+-{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+ if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4389,63 +3595,56 @@
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+ else
+- lt_nm_to_check="${ac_tool_prefix}nm"
+- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+- lt_nm_to_check="$lt_nm_to_check nm"
+- fi
+- for lt_tmp_nm in $lt_nm_to_check; do
+- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+- IFS="$lt_save_ifs"
+- test -z "$ac_dir" && ac_dir=.
+- tmp_nm="$ac_dir/$lt_tmp_nm"
+- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+- # Check to see if the nm accepts a BSD-compat flag.
+- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+- # nm: unknown option "B" ignored
+- # Tru64's nm complains that /dev/null is an invalid object file
+- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+- */dev/null* | *'Invalid file or object type'*)
+- lt_cv_path_NM="$tmp_nm -B"
++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
++ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
++ IFS="$lt_save_ifs"
++ test -z "$ac_dir" && ac_dir=.
++ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
++ # Check to see if the nm accepts a BSD-compat flag.
++ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
++ # nm: unknown option "B" ignored
++ # Tru64's nm complains that /dev/null is an invalid object file
++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
++ */dev/null* | *'Invalid file or object type'*)
++ lt_cv_path_NM="$tmp_nm -B"
++ break
++ ;;
++ *)
++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
++ */dev/null*)
++ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+- */dev/null*)
+- lt_cv_path_NM="$tmp_nm -p"
+- break
+- ;;
+- *)
+- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+- continue # so that we can try to find one that supports BSD flags
+- ;;
+- esac
++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
++ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+- fi
+- done
+- IFS="$lt_save_ifs"
++ esac
++ fi
+ done
++ IFS="$lt_save_ifs"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+ fi
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+-echo "${ECHO_T}$lt_cv_path_NM" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
++echo "${ECHO_T}$lt_cv_path_NM" >&6
+ NM="$lt_cv_path_NM"
+
+-{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
+-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether ln -s works" >&5
++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+ LN_S=$as_ln_s
+ if test "$LN_S" = "ln -s"; then
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ else
+- { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+-echo "${ECHO_T}no, using $LN_S" >&6; }
++ echo "$as_me:$LINENO: result: no, using $LN_S" >&5
++echo "${ECHO_T}no, using $LN_S" >&6
+ fi
+
+-{ echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+-echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
++echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+ if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4472,7 +3671,7 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-bsdi[45]*)
++bsdi4*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+@@ -4495,13 +3694,13 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-freebsd* | dragonfly*)
++freebsd* | kfreebsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+@@ -4517,7 +3716,7 @@
+
+ hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+@@ -4533,11 +3732,6 @@
+ esac
+ ;;
+
+-interix3*)
+- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+@@ -4549,11 +3743,20 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
++ case $host_cpu in
++ alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*)
++ lt_cv_deplibs_check_method=pass_all ;;
++ *)
++ # glibc up to 2.1.1 does not perform some relocations on ARM
++ # this will be overridden with pass_all, but let us keep it just in case
++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
++ esac
++ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-netbsd* | netbsdelf*-gnu)
++netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+@@ -4572,10 +3775,12 @@
+ ;;
+
+ openbsd*)
++ lt_cv_file_magic_cmd=/usr/bin/file
++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+ else
+- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
++ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+ fi
+ ;;
+
+@@ -4583,11 +3788,15 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++sco3.2v5*)
++ lt_cv_deplibs_check_method=pass_all
++ ;;
++
+ solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+@@ -4608,20 +3817,17 @@
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+- pc)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+ esac
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
++sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -4632,18 +3838,15 @@
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+
+
+-# Check whether --enable-libtool-lock was given.
++# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then
+- enableval=$enable_libtool_lock;
+-fi
++ enableval="$enable_libtool_lock"
+
++fi;
+ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+ # Some flags need to be propagated to the compiler or linker for good
+@@ -4670,7 +3873,7 @@
+ ;;
+ *-*-irix6*)
+ # Find out which ABI we are using.
+- echo '#line 4673 "configure"' > conftest.$ac_ext
++ echo '#line 3876 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -4713,7 +3916,7 @@
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- case `/usr/bin/file conftest.o` in
++ case "`/usr/bin/file conftest.o`" in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+@@ -4755,8 +3958,8 @@
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+- { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+ if test "${lt_cv_cc_needs_belf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4782,36 +3985,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -4820,10 +4011,9 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- lt_cv_cc_needs_belf=no
++lt_cv_cc_needs_belf=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+@@ -4832,33 +4022,13 @@
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+-sparc*-*solaris*)
+- # Find out which ABI we are using.
+- echo 'int i;' > conftest.$ac_ext
+- 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
+- case `/usr/bin/file conftest.o` in
+- *64-bit*)
+- case $lt_cv_prog_gnu_ld in
+- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+- *) LD="${LD-ld} -64" ;;
+- esac
+- ;;
+- esac
+- fi
+- rm -rf conftest*
+- ;;
+-
+
+ esac
+
+@@ -4870,8 +4040,8 @@
+ 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 "$as_me:$LINENO: checking how to run the C preprocessor" >&5
++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+ # On Suns, sometimes $CPP names a directory.
+ if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+@@ -4905,13 +4075,8 @@
+ #endif
+ Syntax error
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -4936,10 +4101,9 @@
+ # Broken: fails on valid input.
+ continue
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether nonexistent headers
++ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -4949,13 +4113,8 @@
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -4982,7 +4141,6 @@
+ ac_preproc_ok=:
+ break
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -5000,8 +4158,8 @@
+ else
+ ac_cv_prog_CPP=$CPP
+ fi
+-{ echo "$as_me:$LINENO: result: $CPP" >&5
+-echo "${ECHO_T}$CPP" >&6; }
++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
+@@ -5024,13 +4182,8 @@
+ #endif
+ Syntax error
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -5055,10 +4208,9 @@
+ # Broken: fails on valid input.
+ continue
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether nonexistent headers
++ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5068,13 +4220,8 @@
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -5101,7 +4248,6 @@
+ ac_preproc_ok=:
+ break
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -5124,8 +4270,8 @@
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
++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
+@@ -5149,36 +4295,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5187,10 +4321,9 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_header_stdc=no
++ac_cv_header_stdc=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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.
+@@ -5246,7 +4379,6 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ctype.h>
+-#include <stdlib.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+@@ -5266,27 +4398,18 @@
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+- return 2;
+- return 0;
++ exit(2);
++ exit (0);
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>&5
++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'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5299,14 +4422,12 @@
+ ( exit $ac_status )
+ ac_cv_header_stdc=no
+ fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f 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; }
++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
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -5329,9 +4450,9 @@
+ 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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -5345,36 +4466,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5383,14 +4492,12 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- eval "$as_ac_Header=no"
++eval "$as_ac_Header=no"
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++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
+@@ -5405,19 +4512,18 @@
+ for ac_header in dlfcn.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -5428,36 +4534,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5466,16 +4560,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -5484,13 +4577,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -5514,10 +4602,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -5541,19 +4628,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+-
++ (
++ cat <<\_ASBOX
++## ---------------------------------------- ##
++## Report this to the mediastreamer lists. ##
++## ---------------------------------------- ##
++_ASBOX
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -5565,22 +4658,18 @@
+
+ done
+
+-ac_ext=cpp
++ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+-if test -z "$CXX"; then
+- if test -n "$CCC"; then
+- CXX=$CCC
+- else
+- if test -n "$ac_tool_prefix"; then
+- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
++if test -n "$ac_tool_prefix"; then
++ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ 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; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5593,38 +4682,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ CXX=$ac_cv_prog_CXX
+ if test -n "$CXX"; then
+- { echo "$as_me:$LINENO: result: $CXX" >&5
+-echo "${ECHO_T}$CXX" >&6; }
++ echo "$as_me:$LINENO: result: $CXX" >&5
++echo "${ECHO_T}$CXX" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$CXX" && break
+ done
+ fi
+ if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
++ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ 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; }
++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_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5637,85 +4724,55 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+ if test -n "$ac_ct_CXX"; then
+- { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+-echo "${ECHO_T}$ac_ct_CXX" >&6; }
++ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
++echo "${ECHO_T}$ac_ct_CXX" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$ac_ct_CXX" && break
+ done
++test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+- if test "x$ac_ct_CXX" = x; then
+- CXX="g++"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- CXX=$ac_ct_CXX
+- fi
++ CXX=$ac_ct_CXX
+ fi
+
+- fi
+-fi
++
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO: checking for C++ compiler version" >&5
++echo "$as_me:$LINENO:" \
++ "checking for C++ compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (ac_try="$ac_compiler --version >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler --version >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -v >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -v >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -V >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -V >&5") 2>&5
++{ (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); }
+
+-{ 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; }
++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_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5738,36 +4795,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5776,28 +4821,24 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_compiler_gnu=no
++ac_compiler_gnu=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+ GXX=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CXXFLAGS=${CXXFLAGS+set}
+ ac_save_CXXFLAGS=$CXXFLAGS
+-{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
++CXXFLAGS="-g"
++echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
++echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+ if test "${ac_cv_prog_cxx_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+- ac_cxx_werror_flag=yes
+- ac_cv_prog_cxx_g=no
+- CXXFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -5813,36 +4854,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5851,53 +4880,70 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- CXXFLAGS=""
+- cat >conftest.$ac_ext <<_ACEOF
++ac_cv_prog_cxx_g=no
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
++if test "$ac_test_CXXFLAGS" = set; then
++ CXXFLAGS=$ac_save_CXXFLAGS
++elif test $ac_cv_prog_cxx_g = yes; then
++ if test "$GXX" = yes; then
++ CXXFLAGS="-g -O2"
++ else
++ CXXFLAGS="-g"
++ fi
++else
++ if test "$GXX" = yes; then
++ CXXFLAGS="-O2"
++ else
++ CXXFLAGS=
++ fi
++fi
++for ac_declaration in \
++ '' \
++ '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
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-
++$ac_declaration
++#include <stdlib.h>
+ int
+ main ()
+ {
+-
++exit (42);
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5906,92 +4952,62 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+- CXXFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
++continue
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++ cat >conftest.$ac_ext <<_ACEOF
+ /* 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 { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_cxx_g=yes
++ break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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
+
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+- ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+-fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
+-if test "$ac_test_CXXFLAGS" = set; then
+- CXXFLAGS=$ac_save_CXXFLAGS
+-elif test $ac_cv_prog_cxx_g = yes; then
+- if test "$GXX" = yes; then
+- CXXFLAGS="-g -O2"
+- else
+- CXXFLAGS="-g"
+- fi
+-else
+- if test "$GXX" = yes; then
+- CXXFLAGS="-O2"
+- else
+- CXXFLAGS=
+- fi
+-fi
+-ac_ext=cpp
++ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+@@ -5999,8 +5015,8 @@
+
+ depcc="$CXX" am_compiler_list=
+
+-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+ if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6089,8 +5105,8 @@
+ fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; }
++echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+ CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+@@ -6106,18 +5122,13 @@
+ fi
+
+
+-
+-
+-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+- (test "X$CXX" != "Xg++"))) ; then
+- ac_ext=cpp
++ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_cxx_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 "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
++echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+ if test -z "$CXXCPP"; then
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -6147,13 +5158,8 @@
+ #endif
+ Syntax error
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -6178,10 +5184,9 @@
+ # Broken: fails on valid input.
+ continue
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether nonexistent headers
++ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -6191,13 +5196,8 @@
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -6224,7 +5224,6 @@
+ ac_preproc_ok=:
+ break
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -6242,8 +5241,8 @@
+ else
+ ac_cv_prog_CXXCPP=$CXXCPP
+ fi
+-{ echo "$as_me:$LINENO: result: $CXXCPP" >&5
+-echo "${ECHO_T}$CXXCPP" >&6; }
++echo "$as_me:$LINENO: result: $CXXCPP" >&5
++echo "${ECHO_T}$CXXCPP" >&6
+ ac_preproc_ok=false
+ for ac_cxx_preproc_warn_flag in '' yes
+ do
+@@ -6266,13 +5265,8 @@
+ #endif
+ Syntax error
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -6297,10 +5291,9 @@
+ # Broken: fails on valid input.
+ continue
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether nonexistent headers
++ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -6310,13 +5303,8 @@
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -6343,7 +5331,6 @@
+ ac_preproc_ok=:
+ break
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -6359,26 +5346,24 @@
+ { (exit 1); exit 1; }; }
+ fi
+
+-ac_ext=cpp
++ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+-fi
+-
+
+ ac_ext=f
+ ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn
++ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+ 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; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6391,38 +5376,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ F77=$ac_cv_prog_F77
+ if test -n "$F77"; then
+- { echo "$as_me:$LINENO: result: $F77" >&5
+-echo "${ECHO_T}$F77" >&6; }
++ echo "$as_me:$LINENO: result: $F77" >&5
++echo "${ECHO_T}$F77" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$F77" && break
+ done
+ fi
+ if test -z "$F77"; then
+ ac_ct_F77=$F77
+- for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn
++ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+ 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; }
++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_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6435,78 +5418,48 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_F77="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_F77=$ac_cv_prog_ac_ct_F77
+ if test -n "$ac_ct_F77"; then
+- { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+-echo "${ECHO_T}$ac_ct_F77" >&6; }
++ echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
++echo "${ECHO_T}$ac_ct_F77" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$ac_ct_F77" && break
+ done
+
+- if test "x$ac_ct_F77" = x; then
+- F77=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- F77=$ac_ct_F77
+- fi
++ F77=$ac_ct_F77
+ fi
+
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5
++echo "$as_me:5448:" \
++ "checking for Fortran 77 compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (ac_try="$ac_compiler --version >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler --version >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -v >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -v >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -V >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -V >&5") 2>&5
++{ (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); }
+@@ -6516,8 +5469,8 @@
+ # input file. (Note that this only needs to work for GNU compilers.)
+ ac_save_ext=$ac_ext
+ ac_ext=F
+-{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+ if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6530,36 +5483,24 @@
+ end
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_f77_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -6568,21 +5509,20 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_compiler_gnu=no
++ac_compiler_gnu=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ ac_ext=$ac_save_ext
+ ac_test_FFLAGS=${FFLAGS+set}
+ ac_save_FFLAGS=$FFLAGS
+ FFLAGS=
+-{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+-echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
++echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+ if test "${ac_cv_prog_f77_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6593,36 +5533,24 @@
+ end
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_f77_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -6631,14 +5559,13 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_prog_f77_g=no
++ac_cv_prog_f77_g=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
++echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+ if test "$ac_test_FFLAGS" = set; then
+ FFLAGS=$ac_save_FFLAGS
+ elif test $ac_cv_prog_f77_g = yes; then
+@@ -6667,8 +5594,8 @@
+ # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+ # find the maximum length of command line arguments
+-{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+ if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6708,55 +5635,11 @@
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+- # This has been around since 386BSD, at least. Likely further.
+- if test -x /sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+- elif test -x /usr/sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+- else
+- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+- fi
+- # And add a safety zone
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+- ;;
+-
+- interix*)
+- # We know the value 262144 and hardcode it with a safety zone (like BSD)
+- lt_cv_sys_max_cmd_len=196608
+- ;;
+-
+- osf*)
+- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+- # nice to cause kernel panics so lets avoid the loop below.
+- # First set a reasonable default.
+- lt_cv_sys_max_cmd_len=16384
+- #
+- if test -x /sbin/sysconfig; then
+- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+- *1*) lt_cv_sys_max_cmd_len=-1 ;;
+- esac
+- fi
+- ;;
+- sco3.2v5*)
+- lt_cv_sys_max_cmd_len=102400
+- ;;
+- sysv5* | sco5v6* | sysv4.2uw2*)
+- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+- if test -n "$kargmax"; then
+- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+- else
+- lt_cv_sys_max_cmd_len=32768
+- fi
+- ;;
+- *)
++ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+- while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
++ while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+@@ -6776,19 +5659,19 @@
+ fi
+
+ if test -n $lt_cv_sys_max_cmd_len ; then
+- { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; }
++ echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+ else
+- { echo "$as_me:$LINENO: result: none" >&5
+-echo "${ECHO_T}none" >&6; }
++ echo "$as_me:$LINENO: result: none" >&5
++echo "${ECHO_T}none" >&6
+ fi
+
+
+
+
+ # Check for command to grab the raw symbol name followed by C symbol from nm.
+-{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+-echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
++echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+ if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6802,6 +5685,9 @@
+ # Regexp to match symbols that can be accessed directly from C.
+ sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
++# Transform the above into a raw symbol and a C symbol.
++symxfrm='\1 \2\3 \3'
++
+ # Transform an extracted symbol line into a proper C declaration
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+@@ -6823,31 +5709,15 @@
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+-linux* | k*bsd*-gnu)
+- if test "$host_cpu" = ia64; then
+- symcode='[ABCDGIRSTW]'
+- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+- fi
+- ;;
+ irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+ osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+-solaris*)
++solaris* | sysv5*)
+ symcode='[BDRT]'
+ ;;
+-sco3.2v5*)
+- symcode='[DT]'
+- ;;
+-sysv4.2uw2*)
+- symcode='[DT]'
+- ;;
+-sysv5* | sco5v6* | unixware* | OpenUNIX*)
+- symcode='[ABDT]'
+- ;;
+ sysv4)
+ symcode='[DFNSTU]'
+ ;;
+@@ -6870,11 +5740,8 @@
+ # Try without a prefix undercore, then with it.
+ for ac_symprfx in "" "_"; do
+
+- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+- symxfrm="\\1 $ac_symprfx\\2 \\2"
+-
+ # Write the raw and C identifiers.
+- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -6992,15 +5859,15 @@
+ lt_cv_sys_global_symbol_to_cdecl=
+ fi
+ if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+- { echo "$as_me:$LINENO: result: failed" >&5
+-echo "${ECHO_T}failed" >&6; }
++ echo "$as_me:$LINENO: result: failed" >&5
++echo "${ECHO_T}failed" >&6
+ else
+- { echo "$as_me:$LINENO: result: ok" >&5
+-echo "${ECHO_T}ok" >&6; }
++ echo "$as_me:$LINENO: result: ok" >&5
++echo "${ECHO_T}ok" >&6
+ fi
+
+-{ echo "$as_me:$LINENO: checking for objdir" >&5
+-echo $ECHO_N "checking for objdir... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for objdir" >&5
++echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+ if test "${lt_cv_objdir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7014,8 +5881,8 @@
+ fi
+ rmdir .libs 2>/dev/null
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+-echo "${ECHO_T}$lt_cv_objdir" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
++echo "${ECHO_T}$lt_cv_objdir" >&6
+ objdir=$lt_cv_objdir
+
+
+@@ -7036,7 +5903,7 @@
+
+ # Sed substitution that helps us do robust quoting. It backslashifies
+ # metacharacters that are still active within double-quoted strings.
+-Xsed='sed -e 1s/^X//'
++Xsed='sed -e s/^X//'
+ sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+ # Same as above, but do not quote variable references.
+@@ -7056,7 +5923,7 @@
+ default_ofile=libtool
+ can_build_shared=yes
+
+-# All known linkers require a `.a' archive for static linking (except MSVC,
++# All known linkers require a `.a' archive for static linking (except M$VC,
+ # which needs '.lib').
+ libext=a
+ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -7066,8 +5933,8 @@
+ 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.
+ 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; }
++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
+ else
+@@ -7080,34 +5947,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ AR=$ac_cv_prog_AR
+ if test -n "$AR"; then
+- { echo "$as_me:$LINENO: result: $AR" >&5
+-echo "${ECHO_T}$AR" >&6; }
++ echo "$as_me:$LINENO: result: $AR" >&5
++echo "${ECHO_T}$AR" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&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; }
++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
+@@ -7120,41 +5985,27 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
++ test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_AR" = x; then
+- AR="false"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- AR=$ac_ct_AR
+- fi
++ AR=$ac_ct_AR
+ else
+ AR="$ac_cv_prog_AR"
+ fi
+@@ -7162,8 +6013,8 @@
+ 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; }
++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
+@@ -7176,34 +6027,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- { echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6; }
++ echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&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; }
++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
+@@ -7216,41 +6065,27 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
++ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_RANLIB" = x; then
+- RANLIB=":"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- RANLIB=$ac_ct_RANLIB
+- fi
++ RANLIB=$ac_ct_RANLIB
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+@@ -7258,8 +6093,8 @@
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7272,34 +6107,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- { echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6; }
++ echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++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_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7312,41 +6145,27 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
++ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6; }
++ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_STRIP" = x; then
+- STRIP=":"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- STRIP=$ac_ct_STRIP
+- fi
++ STRIP=$ac_ct_STRIP
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -7361,7 +6180,6 @@
+ test -z "$AS" && AS=as
+ test -z "$CC" && CC=cc
+ test -z "$LTCC" && LTCC=$CC
+-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+ test -z "$DLLTOOL" && DLLTOOL=dlltool
+ test -z "$LD" && LD=ld
+ test -z "$LN_S" && LN_S="ln -s"
+@@ -7381,32 +6199,21 @@
+ if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
++ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
++ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+ fi
+
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-
+-
+ # Only perform the check for file, if the check method requires it
+ case $deplibs_check_method in
+ file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+- { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7426,7 +6233,7 @@
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
++ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+@@ -7458,17 +6265,17 @@
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6; }
++ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+ if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+- { echo "$as_me:$LINENO: checking for file" >&5
+-echo $ECHO_N "checking for file... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for file" >&5
++echo $ECHO_N "checking for file... $ECHO_C" >&6
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7488,7 +6295,7 @@
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
++ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+@@ -7520,11 +6327,11 @@
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6; }
++ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+ else
+@@ -7539,21 +6346,21 @@
+ enable_dlopen=no
+ enable_win32_dll=no
+
+-# Check whether --enable-libtool-lock was given.
++# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then
+- enableval=$enable_libtool_lock;
+-fi
++ enableval="$enable_libtool_lock"
+
++fi;
+ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+-# Check whether --with-pic was given.
++# Check whether --with-pic or --without-pic was given.
+ if test "${with_pic+set}" = set; then
+- withval=$with_pic; pic_mode="$withval"
++ withval="$with_pic"
++ pic_mode="$withval"
+ else
+ pic_mode=default
+-fi
+-
++fi;
+ test -z "$pic_mode" && pic_mode=default
+
+ # Use C for the default configuration in the libtool script
+@@ -7583,25 +6390,68 @@
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
++#
++# Check for any special shared library compilation flags.
++#
++lt_prog_cc_shlib=
++if test "$GCC" = no; then
++ case $host_os in
++ sco3.2v5*)
++ lt_prog_cc_shlib='-belf'
++ ;;
++ esac
++fi
++if test -n "$lt_prog_cc_shlib"; then
++ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
++echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
++ if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then :
++ else
++ { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
++echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
++ lt_cv_prog_cc_can_build_shared=no
++ fi
++fi
++
++
++#
++# Check to make sure the static flag actually works.
++#
++echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
++echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
++if test "${lt_prog_compiler_static_works+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_prog_compiler_static_works=no
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
++ printf "$lt_simple_link_test_code" > conftest.$ac_ext
++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test -s conftest.err; then
++ # Append any errors to the config.log.
++ cat conftest.err 1>&5
++ else
++ lt_prog_compiler_static_works=yes
++ fi
++ fi
++ $rm conftest*
++ LDFLAGS="$save_LDFLAGS"
++
++fi
++echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
++echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
++
++if test x"$lt_prog_compiler_static_works" = xyes; then
++ :
++else
++ lt_prog_compiler_static=
++fi
++
+
+
+
+@@ -7611,8 +6461,8 @@
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+-{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+ if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7626,28 +6476,26 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:7632: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:6482: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:7636: \$? = $ac_status" >&5
++ echo "$as_me:6486: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+ if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+@@ -7661,8 +6509,8 @@
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -7700,11 +6548,6 @@
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+-
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+@@ -7721,7 +6564,7 @@
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -7747,16 +6590,6 @@
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- lt_prog_compiler_pic='-qnocommon'
+- lt_prog_compiler_wl='-Wl,'
+- ;;
+- esac
+- ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+@@ -7768,7 +6601,7 @@
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -7791,20 +6624,13 @@
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+- linux* | k*bsd*-gnu)
+- case $cc_basename in
++ linux*)
++ case $CC in
+ icc* | ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+- pgcc* | pgf77* | pgf90* | pgf95*)
+- # Portland Group compilers (*not* the Pentium gcc compiler,
+- # which looks to be a dead project)
+- lt_prog_compiler_wl='-Wl,'
+- lt_prog_compiler_pic='-fpic'
+- lt_prog_compiler_static='-Bstatic'
+- ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+@@ -7819,15 +6645,15 @@
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
++ sco3.2v5*)
++ lt_prog_compiler_pic='-Kpic'
++ lt_prog_compiler_static='-dn'
++ ;;
++
+ solaris*)
++ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+- case $cc_basename in
+- f77* | f90* | f95*)
+- lt_prog_compiler_wl='-Qoption ld ';;
+- *)
+- lt_prog_compiler_wl='-Wl,';;
+- esac
+ ;;
+
+ sunos4*)
+@@ -7836,7 +6662,7 @@
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+- sysv4 | sysv4.2uw2* | sysv4.3*)
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+@@ -7849,17 +6675,6 @@
+ fi
+ ;;
+
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- lt_prog_compiler_wl='-Wl,'
+- lt_prog_compiler_pic='-KPIC'
+- lt_prog_compiler_static='-Bstatic'
+- ;;
+-
+- unicos*)
+- lt_prog_compiler_wl='-Wl,'
+- lt_prog_compiler_can_build_shared=no
+- ;;
+-
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+@@ -7871,16 +6686,16 @@
+ esac
+ fi
+
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+ #
+ # Check to make sure the PIC flag actually works.
+ #
+ if test -n "$lt_prog_compiler_pic"; then
+
+-{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+ if test "${lt_prog_compiler_pic_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7894,28 +6709,26 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:7900: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:6715: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:7904: \$? = $ac_status" >&5
++ echo "$as_me:6719: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works=yes
+ fi
+ fi
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+ if test x"$lt_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+@@ -7928,7 +6741,7 @@
+ fi
+
+ fi
+-case $host_os in
++case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+@@ -7938,51 +6751,9 @@
+ ;;
+ esac
+
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_static_works+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_static_works=no
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_static_works=yes
+- fi
+- else
+- lt_prog_compiler_static_works=yes
+- fi
+- fi
+- $rm conftest*
+- LDFLAGS="$save_LDFLAGS"
+-
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+-echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; }
+-
+-if test x"$lt_prog_compiler_static_works" = xyes; then
+- :
+-else
+- lt_prog_compiler_static=
+-fi
+-
+-
+-{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+-if test "${lt_cv_prog_compiler_c_o+set}" = set; then
++echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
++if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ lt_cv_prog_compiler_c_o=no
+@@ -7998,25 +6769,23 @@
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:8004: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:6775: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:8008: \$? = $ac_status" >&5
++ echo "$as_me:6779: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
++ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+- chmod u+w . 2>&5
++ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+@@ -8027,23 +6796,23 @@
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+ hard_links="nottested"
+ if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+- { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- { echo "$as_me:$LINENO: result: $hard_links" >&5
+-echo "${ECHO_T}$hard_links" >&6; }
++ echo "$as_me:$LINENO: result: $hard_links" >&5
++echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+ echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+@@ -8053,8 +6822,8 @@
+ need_locks=no
+ fi
+
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag=
+@@ -8092,16 +6861,6 @@
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+- # Just being paranoid about ensuring that cc_basename is set.
+- for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+@@ -8112,10 +6871,6 @@
+ with_gnu_ld=no
+ fi
+ ;;
+- interix*)
+- # we just hope/assume this is gcc and not c89 (= MSVC++)
+- with_gnu_ld=yes
+- ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+@@ -8126,27 +6881,6 @@
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+- # Set some defaults for GNU ld with shared library support. These
+- # are reset later if shared libraries are not supported. Putting them
+- # here allows them to be overridden if necessary.
+- runpath_var=LD_RUN_PATH
+- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+- export_dynamic_flag_spec='${wl}--export-dynamic'
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- whole_archive_flag_spec=
+- fi
+- supports_anon_versioning=no
+- case `$LD -v 2>/dev/null` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+- *\ 2.11.*) ;; # other 2.11 versions
+- *) supports_anon_versioning=yes ;;
+- esac
+-
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+@@ -8197,10 +6931,10 @@
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -8209,60 +6943,13 @@
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- ld_shlibs=no
+- fi
+- ;;
+-
+- interix3*)
+- hardcode_direct=no
+- hardcode_shlibpath_var=no
+- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+-
+- linux* | k*bsd*-gnu)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- tmp_addflag=
+- case $cc_basename,$host_cpu in
+- pgcc*) # Portland Group C compiler
+- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag'
+- ;;
+- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag -Mnomain' ;;
+- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+- tmp_addflag=' -i_dynamic' ;;
+- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+- tmp_addflag=' -i_dynamic -nofor_main' ;;
+- ifc* | ifort*) # Intel Fortran compiler
+- tmp_addflag=' -nofor_main' ;;
+- esac
+- archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+-
+- if test $supports_anon_versioning = yes; then
+- archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- $echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+- fi
+- link_all_deplibs=no
++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+@@ -8272,7 +6959,7 @@
+ fi
+ ;;
+
+- solaris*)
++ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+@@ -8293,33 +6980,6 @@
+ fi
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+- case `$LD -v 2>&1` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+- ld_shlibs=no
+- cat <<_LT_EOF 1>&2
+-
+-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+-*** reliably create shared libraries on SCO systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
+-
+-_LT_EOF
+- ;;
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+- else
+- ld_shlibs=no
+- fi
+- ;;
+- esac
+- ;;
+-
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+@@ -8327,6 +6987,31 @@
+ hardcode_shlibpath_var=no
+ ;;
+
++ linux*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_cmds="$tmp_archive_cmds"
++ supports_anon_versioning=no
++ case `$LD -v 2>/dev/null` in
++ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
++ *\ 2.11.*) ;; # other 2.11 versions
++ *) supports_anon_versioning=yes ;;
++ esac
++ if test $supports_anon_versioning = yes; then
++ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ archive_expsym_cmds="$tmp_archive_cmds"
++ fi
++ else
++ ld_shlibs=no
++ fi
++ ;;
++
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+@@ -8337,11 +7022,16 @@
+ ;;
+ esac
+
+- if test "$ld_shlibs" = no; then
+- runpath_var=
+- hardcode_libdir_flag_spec=
+- export_dynamic_flag_spec=
+- whole_archive_flag_spec=
++ if test "$ld_shlibs" = yes; then
++ runpath_var=LD_RUN_PATH
++ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
++ export_dynamic_flag_spec='${wl}--export-dynamic'
++ # ancient GNU ld didn't support --whole-archive et. al.
++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
++ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
++ else
++ whole_archive_flag_spec=
++ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+@@ -8353,7 +7043,7 @@
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
++ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+@@ -8387,7 +7077,6 @@
+ break
+ fi
+ done
+- ;;
+ esac
+
+ exp_sym_flag='-bexport'
+@@ -8406,7 +7095,7 @@
+ link_all_deplibs=yes
+
+ if test "$GCC" = yes; then
+- case $host_os in aix4.[012]|aix4.[012].*)
++ case $host_os in aix4.012|aix4.012.*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+@@ -8425,12 +7114,8 @@
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+- ;;
+ esac
+ shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+@@ -8438,11 +7123,11 @@
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+- if test "$aix_use_runtimelinking" = yes; then
++ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+- fi
++ fi
+ fi
+ fi
+
+@@ -8470,36 +7155,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -8513,20 +7186,18 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -8545,36 +7216,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -8588,10 +7247,8 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+@@ -8600,11 +7257,13 @@
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ always_export_symbols=yes
+ # Exported symbols can be pulled into shared objects from archives
+- whole_archive_flag_spec='$convenience'
++ whole_archive_flag_spec=' '
+ archive_cmds_need_lc=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+@@ -8617,7 +7276,7 @@
+ ld_shlibs=no
+ ;;
+
+- bsdi[45]*)
++ bsdi4*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+@@ -8643,52 +7302,52 @@
+ ;;
+
+ darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[012])
+- allow_undefined_flag='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[012])
+- allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
++ if test "$GXX" = yes ; then
+ archive_cmds_need_lc=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ archive_cmds='$CC -r ${wl}-bind_at_load -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'
++ fi
++ module_cmds='$CC ${wl}-bind_at_load $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
++ archive_expsym_cmds='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}'
++ else
++ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ fi
++ module_expsym_cmds='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}'
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+- whole_archive_flag_spec=''
++ whole_archive_flag_spec='-all_load $convenience'
+ link_all_deplibs=yes
+- if test "$GCC" = yes ; then
+- output_verbose_link_cmd='echo'
+- archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- module_cmds='$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 lds
+- archive_expsym_cmds='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}'
+- module_expsym_cmds='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}'
+ else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+- module_cmds='$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 lds
+- archive_expsym_cmds='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}'
+- module_expsym_cmds='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}'
+- ;;
+- *)
+- ld_shlibs=no
+- ;;
+- esac
++ ld_shlibs=no
+ fi
+ ;;
+
+@@ -8722,7 +7381,7 @@
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+@@ -8745,62 +7404,47 @@
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+- hpux10*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator=:
+-
+- hardcode_direct=yes
+- export_dynamic_flag_spec='${wl}-E'
+-
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L=yes
+- fi
+- ;;
+-
+- hpux11*)
++ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- case $host_cpu in
+- hppa*64*)
++ case "$host_cpu" in
++ hppa*64*|ia64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+- ia64*)
+- archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld='+b $libdir'
++ hardcode_libdir_separator=:
++ hardcode_direct=no
++ hardcode_shlibpath_var=no
++ ;;
++ ia64*)
++ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
++
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L=yes
+ ;;
+ *)
++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+@@ -8824,7 +7468,7 @@
+ link_all_deplibs=yes
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+@@ -8848,7 +7492,6 @@
+ hardcode_shlibpath_var=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+@@ -8894,7 +7537,7 @@
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+@@ -8902,15 +7545,21 @@
+ hardcode_libdir_separator=:
+ ;;
+
++ sco3.2v5*)
++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var=no
++ export_dynamic_flag_spec='${wl}-Bexport'
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ;;
++
+ solaris*)
+ no_undefined_flag=' -z text'
+ if test "$GCC" = yes; then
+- wlarc='${wl}'
+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+- wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+@@ -8919,18 +7568,8 @@
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+- *)
+- # The compiler driver will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl, iff we do not link with $LD.
+- # Luckily, gcc supports the same syntax we need for Sun Studio.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- case $wlarc in
+- '')
+- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+- *)
+- whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+- esac ;;
++ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+@@ -8987,45 +7626,36 @@
+ fi
+ ;;
+
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+- no_undefined_flag='${wl}-z,text'
+- archive_cmds_need_lc=no
++ sysv4.2uw2*)
++ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct=yes
++ hardcode_minus_L=no
+ hardcode_shlibpath_var=no
+- runpath_var='LD_RUN_PATH'
++ hardcode_runpath_var=yes
++ runpath_var=LD_RUN_PATH
++ ;;
+
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
++ no_undefined_flag='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+- archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var=no
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- no_undefined_flag='${wl}-z,text'
+- allow_undefined_flag='${wl}-z,nodefs'
+- archive_cmds_need_lc=no
++ sysv5*)
++ no_undefined_flag=' -z text'
++ # $CC -shared without GNU ld will not create a library from C++
++ # object files and a static libstdc++, better avoid it by now
++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ hardcode_libdir_flag_spec=
+ hardcode_shlibpath_var=no
+- hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- hardcode_libdir_separator=':'
+- link_all_deplibs=yes
+- export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+-
+- if test "$GCC" = yes; then
+- archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- fi
+ ;;
+
+ uts4*)
+@@ -9040,10 +7670,15 @@
+ esac
+ fi
+
+-{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+-echo "${ECHO_T}$ld_shlibs" >&6; }
++echo "$as_me:$LINENO: result: $ld_shlibs" >&5
++echo "${ECHO_T}$ld_shlibs" >&6
+ test "$ld_shlibs" = no && can_build_shared=no
+
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
++
+ #
+ # Do we need to explicitly link libc?
+ #
+@@ -9061,8 +7696,8 @@
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+- { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+@@ -9076,7 +7711,6 @@
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+- pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+@@ -9099,16 +7733,16 @@
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+- { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+-echo "${ECHO_T}$archive_cmds_need_lc" >&6; }
++ echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
++echo "${ECHO_T}$archive_cmds_need_lc" >&6
+ ;;
+ esac
+ fi
+ ;;
+ esac
+
+-{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+ library_names_spec=
+ libname_spec='lib$name'
+ soname_spec=
+@@ -9209,7 +7843,7 @@
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+-bsdi[45]*)
++bsdi4*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -9237,8 +7871,7 @@
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
++ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+@@ -9268,7 +7901,7 @@
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+@@ -9291,7 +7924,7 @@
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+@@ -9314,17 +7947,20 @@
+ dynamic_linker=no
+ ;;
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[123]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+@@ -9342,19 +7978,14 @@
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+- freebsd3.[01]* | freebsdelf3.[01]*)
++ freebsd3.01* | freebsdelf3.01*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
++ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+ esac
+ ;;
+
+@@ -9374,7 +8005,7 @@
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+@@ -9414,18 +8045,6 @@
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+@@ -9469,7 +8088,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -9483,10 +8102,31 @@
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '#line 8109 "configure"' > conftest.$ac_ext
++ 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
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
++
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
++ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+@@ -9498,7 +8138,7 @@
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+-netbsdelf*-gnu)
++knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -9507,7 +8147,7 @@
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
++ dynamic_linker='GNU ld.so'
+ ;;
+
+ netbsd*)
+@@ -9547,13 +8187,8 @@
+
+ openbsd*)
+ version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
++ need_version=yes
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+@@ -9591,6 +8226,13 @@
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
+ solaris*)
+ version_type=linux
+ need_lib_prefix=no
+@@ -9616,7 +8258,7 @@
+ need_version=yes
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+@@ -9649,29 +8291,6 @@
+ fi
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
+- esac
+- fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
+-
+ uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -9683,21 +8302,16 @@
+ dynamic_linker=no
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+-echo "${ECHO_T}$dynamic_linker" >&6; }
++echo "$as_me:$LINENO: result: $dynamic_linker" >&5
++echo "${ECHO_T}$dynamic_linker" >&6
+ test "$dynamic_linker" = no && can_build_shared=no
+
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+-fi
+-
+-{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+ hardcode_action=
+ if test -n "$hardcode_libdir_flag_spec" || \
+- test -n "$runpath_var" || \
+- test "X$hardcode_automatic" = "Xyes" ; then
++ test -n "$runpath_var " || \
++ test "X$hardcode_automatic"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct" != no &&
+@@ -9717,8 +8331,8 @@
+ # directories.
+ hardcode_action=unsupported
+ fi
+-{ echo "$as_me:$LINENO: result: $hardcode_action" >&5
+-echo "${ECHO_T}$hardcode_action" >&6; }
++echo "$as_me:$LINENO: result: $hardcode_action" >&5
++echo "${ECHO_T}$hardcode_action" >&6
+
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+@@ -9731,29 +8345,29 @@
+
+ striplib=
+ old_striplib=
+-{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+ if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ else
+ # FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+ ;;
+ *)
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ ;;
+ esac
+ fi
+@@ -9785,8 +8399,8 @@
+
+ darwin*)
+ # if libdl is installed we need to link against it
+- { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+ if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9799,52 +8413,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ int
+ main ()
+ {
+-return dlopen ();
++dlopen ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -9853,15 +8455,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_dl_dlopen=no
++ac_cv_lib_dl_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+ if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+ else
+@@ -9875,8 +8476,8 @@
+ ;;
+
+ *)
+- { echo "$as_me:$LINENO: checking for shl_load" >&5
+-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for shl_load" >&5
++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+ if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9903,59 +8504,53 @@
+
+ #undef shl_load
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 shl_load ();
+ /* 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_shl_load || defined __stub___shl_load
++#if defined (__stub_shl_load) || defined (__stub___shl_load)
+ choke me
++#else
++char (*f) () = shl_load;
++#endif
++#ifdef __cplusplus
++}
+ #endif
+
+ int
+ main ()
+ {
+-return shl_load ();
++return f != shl_load;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -9964,19 +8559,18 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_func_shl_load=no
++ac_cv_func_shl_load=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+-echo "${ECHO_T}$ac_cv_func_shl_load" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
++echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+ if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+ else
+- { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+ if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9989,52 +8583,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 shl_load ();
+ int
+ main ()
+ {
+-return shl_load ();
++shl_load ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -10043,20 +8625,19 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_dld_shl_load=no
++ac_cv_lib_dld_shl_load=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+ if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+ else
+- { echo "$as_me:$LINENO: checking for dlopen" >&5
+-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dlopen" >&5
++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+ if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10083,59 +8664,53 @@
+
+ #undef dlopen
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ /* 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_dlopen || defined __stub___dlopen
++#if defined (__stub_dlopen) || defined (__stub___dlopen)
+ choke me
++#else
++char (*f) () = dlopen;
++#endif
++#ifdef __cplusplus
++}
+ #endif
+
+ int
+ main ()
+ {
+-return dlopen ();
++return f != dlopen;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -10144,19 +8719,18 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_func_dlopen=no
++ac_cv_func_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_func_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
++echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+ if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+ else
+- { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+ if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10169,52 +8743,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ int
+ main ()
+ {
+-return dlopen ();
++dlopen ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -10223,20 +8785,19 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_dl_dlopen=no
++ac_cv_lib_dl_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+ if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+ else
+- { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+ if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10249,52 +8810,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ int
+ main ()
+ {
+-return dlopen ();
++dlopen ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -10303,20 +8852,19 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_svld_dlopen=no
++ac_cv_lib_svld_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+ if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+ else
+- { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+ if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10329,52 +8877,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dld_link ();
+ int
+ main ()
+ {
+-return dld_link ();
++dld_link ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -10383,15 +8919,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_dld_dld_link=no
++ac_cv_lib_dld_dld_link=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+ if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+ fi
+@@ -10426,13 +8961,13 @@
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+- { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+ if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10442,7 +8977,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 10445 "configure"
++#line 8980 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -10499,8 +9034,6 @@
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+- else
+- puts (dlerror ());
+
+ exit (status);
+ }
+@@ -10510,12 +9043,12 @@
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+- (./conftest; exit; ) >&5 2>/dev/null
++ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+- x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+@@ -10526,13 +9059,13 @@
+
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+-echo "${ECHO_T}$lt_cv_dlopen_self" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+- { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; }
++ LDFLAGS="$LDFLAGS $link_static_flag"
++ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+ if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10542,7 +9075,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 10545 "configure"
++#line 9078 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -10599,8 +9132,6 @@
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+- else
+- puts (dlerror ());
+
+ exit (status);
+ }
+@@ -10610,12 +9141,12 @@
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+- (./conftest; exit; ) >&5 2>/dev/null
++ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+- x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+@@ -10626,8 +9157,8 @@
+
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+@@ -10648,19 +9179,19 @@
+ fi
+
+
+-# Report which library types will actually be built
+-{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
+-{ echo "$as_me:$LINENO: result: $can_build_shared" >&5
+-echo "${ECHO_T}$can_build_shared" >&6; }
++# Report which librarie types wil actually be built
++echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
++echo "$as_me:$LINENO: result: $can_build_shared" >&5
++echo "${ECHO_T}$can_build_shared" >&6
+
+-{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+-case $host_os in
++case "$host_os" in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+@@ -10673,17 +9204,54 @@
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
++ ;;
++ darwin* | rhapsody*)
++ if test "$GCC" = yes; then
++ archive_cmds_need_lc=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ output_verbose_link_cmd='echo'
++ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
++ module_cmds='$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
++ archive_expsym_cmds='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}'
++ module_expsym_cmds='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}'
++ hardcode_direct=no
++ hardcode_automatic=yes
++ hardcode_shlibpath_var=unsupported
++ whole_archive_flag_spec='-all_load $convenience'
++ link_all_deplibs=yes
++ else
++ ld_shlibs=no
++ fi
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: result: $enable_shared" >&5
+-echo "${ECHO_T}$enable_shared" >&6; }
++echo "$as_me:$LINENO: result: $enable_shared" >&5
++echo "${ECHO_T}$enable_shared" >&6
+
+-{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether to build static libraries" >&5
++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+-{ echo "$as_me:$LINENO: result: $enable_static" >&5
+-echo "${ECHO_T}$enable_static" >&6; }
++echo "$as_me:$LINENO: result: $enable_static" >&5
++echo "${ECHO_T}$enable_static" >&6
+
+ # The else clause should only fire when bootstrapping the
+ # libtool distribution, otherwise you forgot to ship ltmain.sh
+@@ -10698,7 +9266,7 @@
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+@@ -10802,7 +9370,7 @@
+ #
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -10813,11 +9381,11 @@
+ SED=$lt_SED
+
+ # Sed that helps us avoid accidentally triggering echo(1) options like -n.
+-Xsed="$SED -e 1s/^X//"
++Xsed="$SED -e s/^X//"
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+ # The names of the tagged configurations supported by this script.
+ available_tags=
+@@ -10847,12 +9415,6 @@
+ # The host system.
+ host_alias=$host_alias
+ host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+
+ # An echo program that does not interpret backslashes.
+ echo=$lt_echo
+@@ -10864,9 +9426,6 @@
+ # A C compiler.
+ LTCC=$lt_LTCC
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+ # A language-specific compiler.
+ CC=$lt_compiler
+
+@@ -10932,7 +9491,7 @@
+ # Does compiler simultaneously support -c and -o options?
+ compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+-# Must we lock files when doing compilation?
++# Must we lock files when doing compilation ?
+ need_locks=$lt_need_locks
+
+ # Do we need the lib prefix for modules?
+@@ -11175,11 +9734,11 @@
+ CC="$lt_save_CC"
+
+
+-# Check whether --with-tags was given.
++# Check whether --with-tags or --without-tags was given.
+ if test "${with_tags+set}" = set; then
+- withval=$with_tags; tagnames="$withval"
+-fi
+-
++ withval="$with_tags"
++ tagnames="$withval"
++fi;
+
+ if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+@@ -11197,9 +9756,6 @@
+ echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+ fi
+ fi
+- if test -z "$LTCFLAGS"; then
+- eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+- fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+@@ -11230,10 +9786,8 @@
+
+ case $tagname in
+ CXX)
+- if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+- (test "X$CXX" != "Xg++"))) ; then
+- ac_ext=cpp
++ if test -n "$CXX" && test "X$CXX" != "Xno"; then
++ ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+@@ -11252,7 +9806,6 @@
+ hardcode_libdir_flag_spec_ld_CXX=
+ hardcode_libdir_separator_CXX=
+ hardcode_minus_L_CXX=no
+-hardcode_shlibpath_var_CXX=unsupported
+ hardcode_automatic_CXX=no
+ module_cmds_CXX=
+ module_expsym_cmds_CXX=
+@@ -11270,7 +9823,7 @@
+ compiler_lib_search_path_CXX=
+
+ # Source file extension for C++ test sources.
+-ac_ext=cpp
++ac_ext=cc
+
+ # Object file extension for compiled C++ test sources.
+ objext=o
+@@ -11280,34 +9833,17 @@
+ lt_simple_compile_test_code="int some_variable = 0;\n"
+
+ # Code to be used in simple link tests
+-lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
++lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_LD=$LD
+@@ -11318,27 +9854,18 @@
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+- $as_unset lt_cv_prog_gnu_ld
++ unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+- $as_unset lt_cv_path_LD
++ unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ compiler=$CC
+ compiler_CXX=$CC
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-
++cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+ # We don't want -fno-exception wen compiling C++ code, so set the
+ # no_builtin_flag separately
+@@ -11352,18 +9879,18 @@
+ # Set up default GNU C++ configuration
+
+
+-# Check whether --with-gnu-ld was given.
++# Check whether --with-gnu-ld or --without-gnu-ld was given.
+ if test "${with_gnu_ld+set}" = set; then
+- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
++ withval="$with_gnu_ld"
++ test "$withval" = no || with_gnu_ld=yes
+ else
+ with_gnu_ld=no
+-fi
+-
++fi;
+ ac_prog=ld
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+- { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+@@ -11392,11 +9919,11 @@
+ ;;
+ esac
+ elif test "$with_gnu_ld" = yes; then
+- { echo "$as_me:$LINENO: checking for GNU ld" >&5
+-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for GNU ld" >&5
++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+ else
+- { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+ fi
+ if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -11409,7 +9936,7 @@
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+- # but apparently some variants of GNU ld only accept -v.
++ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+@@ -11429,21 +9956,21 @@
+
+ LD="$lt_cv_path_LD"
+ if test -n "$LD"; then
+- { echo "$as_me:$LINENO: result: $LD" >&5
+-echo "${ECHO_T}$LD" >&6; }
++ echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+ test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+ echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+-{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+ if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- # I'd rather use --version here, but apparently some GNU lds only accept -v.
++ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+ case `$LD -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+@@ -11453,8 +9980,8 @@
+ ;;
+ esac
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+ with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+@@ -11504,8 +10031,8 @@
+ fi
+
+ # PORTME: fill in a description of your system's C++ link characteristics
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ ld_shlibs_CXX=yes
+ case $host_os in
+ aix3*)
+@@ -11534,7 +10061,6 @@
+ ;;
+ esac
+ done
+- ;;
+ esac
+
+ exp_sym_flag='-bexport'
+@@ -11553,7 +10079,7 @@
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes; then
+- case $host_os in aix4.[012]|aix4.[012].*)
++ case $host_os in aix4.012|aix4.012.*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+@@ -11572,12 +10098,8 @@
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ hardcode_libdir_separator_CXX=
+ fi
+- ;;
+ esac
+ shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+@@ -11617,36 +10139,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -11660,21 +10170,19 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+- archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_CXX="-z nodefs"
+- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
++ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -11693,36 +10201,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -11736,10 +10232,8 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+@@ -11748,26 +10242,16 @@
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_CXX=' ${wl}-bernotok'
+ allow_undefined_flag_CXX=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ always_export_symbols_CXX=yes
+ # Exported symbols can be pulled into shared objects from archives
+- whole_archive_flag_spec_CXX='$convenience'
++ whole_archive_flag_spec_CXX=' '
+ archive_cmds_need_lc_CXX=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+-
+- beos*)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- allow_undefined_flag_CXX=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- else
+- ld_shlibs_CXX=no
+- fi
+- ;;
+-
+ chorus*)
+ case $cc_basename in
+ *)
+@@ -11786,7 +10270,7 @@
+ enable_shared_with_static_runtimes_CXX=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -11795,81 +10279,70 @@
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+- darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[012])
+- allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[012])
+- allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
+- archive_cmds_need_lc_CXX=no
+- hardcode_direct_CXX=no
+- hardcode_automatic_CXX=yes
+- hardcode_shlibpath_var_CXX=unsupported
+- whole_archive_flag_spec_CXX=''
+- link_all_deplibs_CXX=yes
+
+- if test "$GXX" = yes ; then
+- lt_int_apple_cc_single_mod=no
+- output_verbose_link_cmd='echo'
+- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+- lt_int_apple_cc_single_mod=yes
+- fi
+- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+- archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- else
+- archive_cmds_CXX='$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'
+- fi
+- module_cmds_CXX='$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 lds
+- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+- archive_expsym_cmds_CXX='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}'
+- else
+- archive_expsym_cmds_CXX='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}'
+- fi
+- module_expsym_cmds_CXX='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}'
+- else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+- module_cmds_CXX='$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 lds
+- archive_expsym_cmds_CXX='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}'
+- module_expsym_cmds_CXX='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}'
+- ;;
+- *)
+- ld_shlibs_CXX=no
+- ;;
+- esac
++ darwin* | rhapsody*)
++ if test "$GXX" = yes; then
++ archive_cmds_need_lc_CXX=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag_CXX='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag_CXX='-undefined dynamic_lookup'
++ ;;
++ esac
+ fi
+- ;;
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ archive_cmds_CXX='$CC -r ${wl}-bind_at_load -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'
++ fi
++ module_cmds_CXX='$CC ${wl}-bind_at_load $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
++ archive_expsym_cmds_CXX='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}'
++ else
++ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ fi
++ module_expsym_cmds_CXX='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}'
++ hardcode_direct_CXX=no
++ hardcode_automatic_CXX=yes
++ hardcode_shlibpath_var_CXX=unsupported
++ whole_archive_flag_spec_CXX='-all_load $convenience'
++ link_all_deplibs_CXX=yes
++ else
++ ld_shlibs_CXX=no
++ fi
++ ;;
+
+ dgux*)
+ case $cc_basename in
+- ec++*)
++ ec++)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- ghcx*)
++ ghcx)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+@@ -11880,14 +10353,14 @@
+ ;;
+ esac
+ ;;
+- freebsd[12]*)
++ freebsd12*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ ld_shlibs_CXX=no
+ ;;
+ freebsd-elf*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ ld_shlibs_CXX=yes
+@@ -11904,11 +10377,11 @@
+ # location of the library.
+
+ case $cc_basename in
+- CC*)
++ CC)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- aCC*)
++ aCC)
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+@@ -11918,7 +10391,7 @@
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+@@ -11932,22 +10405,33 @@
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_CXX=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
++ hardcode_libdir_separator_CXX=:
++ ;;
++ ia64*)
++ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ ;;
+ *)
++ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ ;;
+ esac
+ fi
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_direct_CXX=no
++ hardcode_shlibpath_var_CXX=no
++ ;;
++ ia64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
++ hardcode_minus_L_CXX=yes # Not in the search PATH,
++ # but as the default
++ # location of the library.
+ ;;
+ *)
+ hardcode_direct_CXX=yes
+@@ -11958,17 +10442,14 @@
+ esac
+
+ case $cc_basename in
+- CC*)
++ CC)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- aCC*)
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ aCC)
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+@@ -11987,12 +10468,9 @@
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ case "$host_cpu" in
++ ia64*|hppa*64*)
++ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+@@ -12006,25 +10484,11 @@
+ ;;
+ esac
+ ;;
+- interix3*)
+- hardcode_direct_CXX=no
+- hardcode_shlibpath_var_CXX=no
+- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_CXX='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+ irix5* | irix6*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # SGI C++
+- archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+@@ -12035,7 +10499,7 @@
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+ else
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+@@ -12046,9 +10510,9 @@
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ ;;
+- linux* | k*bsd*-gnu)
++ linux*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -12073,41 +10537,17 @@
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+- icpc*)
++ icpc)
+ # Intel C++
+ with_gnu_ld=yes
+- # version 8.0 and above of icpc choke on multiply defined symbols
+- # if we add $predep_objects and $postdep_objects, however 7.1 and
+- # earlier do not add the objects themselves.
+- case `$CC -V 2>&1` in
+- *"Version 7."*)
+- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- *) # Version 8.0 or newer
+- tmp_idyn=
+- case $host_cpu in
+- ia64*) tmp_idyn=' -i_dynamic';;
+- esac
+- archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- esac
+ archive_cmds_need_lc_CXX=no
++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+- pgCC*)
+- # Portland Group C++ compiler
+- archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+-
+- hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+- export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+- whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- ;;
+- cxx*)
++ cxx)
+ # Compaq C++
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+@@ -12138,7 +10578,7 @@
+ ;;
+ mvs*)
+ case $cc_basename in
+- cxx*)
++ cxx)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+@@ -12148,7 +10588,7 @@
+ ;;
+ esac
+ ;;
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+@@ -12159,25 +10599,9 @@
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+- openbsd2*)
+- # C++ shared libraries are fairly broken
+- ld_shlibs_CXX=no
+- ;;
+- openbsd*)
+- hardcode_direct_CXX=yes
+- hardcode_shlibpath_var_CXX=no
+- archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+- export_dynamic_flag_spec_CXX='${wl}-E'
+- whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- fi
+- output_verbose_link_cmd='echo'
+- ;;
+ osf3*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -12193,14 +10617,14 @@
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- cxx*)
++ cxx)
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+@@ -12218,7 +10642,7 @@
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+@@ -12237,7 +10661,7 @@
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -12252,17 +10676,17 @@
+ # the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- cxx*)
++ cxx)
+ allow_undefined_flag_CXX=' -expect_unresolved \*'
+- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+ archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
++ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
+ $rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+@@ -12281,7 +10705,7 @@
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+@@ -12302,14 +10726,27 @@
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
++ sco*)
++ archive_cmds_need_lc_CXX=no
++ case $cc_basename in
++ CC)
++ # FIXME: insert proper C++ library support
++ ld_shlibs_CXX=no
++ ;;
++ *)
++ # FIXME: insert proper C++ library support
++ ld_shlibs_CXX=no
++ ;;
++ esac
++ ;;
+ sunos4*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- lcc*)
++ lcc)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+@@ -12322,33 +10759,36 @@
+ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+- archive_cmds_need_lc_CXX=yes
+ no_undefined_flag_CXX=' -zdefs'
+- archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
++ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_shlibpath_var_CXX=no
+ case $host_os in
+- solaris2.[0-5] | solaris2.[0-5].*) ;;
++ solaris2.0-5 | solaris2.0-5.*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+- # linker. We must also pass each convience library through
+- # to the system linker between allextract/defaultextract.
+- # The C++ compiler will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl.
++ # linker.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+- whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
++ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ link_all_deplibs_CXX=yes
+
+- output_verbose_link_cmd='echo'
++ # Commands to make compiler produce verbose output that lists
++ # what "hidden" libraries, object files and flags are used when
++ # linking a shared library.
++ #
++ # There doesn't appear to be a way to prevent this compiler from
++ # explicitly linking system object files so we need to strip them
++ # from the output so that they don't get included in the library
++ # dependencies.
++ output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+@@ -12356,7 +10796,7 @@
+ # in the archive.
+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+ ;;
+- gcx*)
++ gcx)
+ # Green Hills C++ Compiler
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+@@ -12394,63 +10834,12 @@
+ ;;
+ esac
+ ;;
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+- no_undefined_flag_CXX='${wl}-z,text'
+- archive_cmds_need_lc_CXX=no
+- hardcode_shlibpath_var_CXX=no
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- ;;
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- # For security reasons, it is highly recommended that you always
+- # use absolute paths for naming shared libraries, and exclude the
+- # DT_RUNPATH tag from executables and libraries. But doing so
+- # requires that you compile everything twice, which is a pain.
+- # So that behaviour is only enabled if SCOABSPATH is set to a
+- # non-empty value in the environment. Most likely only useful for
+- # creating official distributions of packages.
+- # This is a hack until libtool officially supports absolute path
+- # names for shared libraries.
+- no_undefined_flag_CXX='${wl}-z,text'
+- allow_undefined_flag_CXX='${wl}-z,nodefs'
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ archive_cmds_need_lc_CXX=no
+- hardcode_shlibpath_var_CXX=no
+- hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- hardcode_libdir_separator_CXX=':'
+- link_all_deplibs_CXX=yes
+- export_dynamic_flag_spec_CXX='${wl}-Bexport'
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+ ;;
+ tandem*)
+ case $cc_basename in
+- NCC*)
++ NCC)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+@@ -12470,8 +10859,8 @@
+ ld_shlibs_CXX=no
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+-echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
++echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
++echo "${ECHO_T}$ld_shlibs_CXX" >&6
+ test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+ GCC_CXX="$GXX"
+@@ -12503,7 +10892,7 @@
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+- output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
++ output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+@@ -12579,29 +10968,6 @@
+
+ $rm -f confest.$objext
+
+-# PORTME: override above test on systems where it is broken
+-case $host_os in
+-interix3*)
+- # Interix 3.5 installs completely hosed .la files for C++, so rather than
+- # hack all around it, let's just trust "g++" to DTRT.
+- predep_objects_CXX=
+- postdep_objects_CXX=
+- postdeps_CXX=
+- ;;
+-
+-solaris*)
+- case $cc_basename in
+- CC*)
+- # Adding this requires a known-good setup of shared libraries for
+- # Sun compiler versions before 5.6, else PIC objects from an old
+- # archive will be linked into the output, leading to subtle bugs.
+- postdeps_CXX='-lCstd -lCrun'
+- ;;
+- esac
+- ;;
+-esac
+-
+-
+ case " $postdeps_CXX " in
+ *" -lc "*) archive_cmds_need_lc_CXX=no ;;
+ esac
+@@ -12610,8 +10976,8 @@
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX=
+
+-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+@@ -12649,10 +11015,6 @@
+ # DJGPP does not support shared libraries at all
+ lt_prog_compiler_pic_CXX=
+ ;;
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_CXX=-Kconform_pic
+@@ -12661,7 +11023,7 @@
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ ;;
+ *)
+@@ -12686,28 +11048,18 @@
+ ;;
+ chorus*)
+ case $cc_basename in
+- cxch68*)
++ cxch68)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- lt_prog_compiler_pic_CXX='-qnocommon'
+- lt_prog_compiler_wl_CXX='-Wl,'
+- ;;
+- esac
+- ;;
+ dgux*)
+ case $cc_basename in
+- ec++*)
++ ec++)
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+- ghcx*)
++ ghcx)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+@@ -12715,22 +11067,22 @@
+ ;;
+ esac
+ ;;
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+- CC*)
++ CC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+- lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
++ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ lt_prog_compiler_pic_CXX='+Z'
+ fi
+ ;;
+- aCC*)
++ aCC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+- lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+- case $host_cpu in
++ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -12743,13 +11095,9 @@
+ ;;
+ esac
+ ;;
+- interix*)
+- # This is c89, which is MS Visual C++ (no shared libs)
+- # Anyone wants to do a port?
+- ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+- CC*)
++ CC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-non_shared'
+ # CC pic flag -KPIC is the default.
+@@ -12758,26 +11106,20 @@
+ ;;
+ esac
+ ;;
+- linux* | k*bsd*-gnu)
++ linux*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # KAI C++ Compiler
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+- icpc* | ecpc*)
++ icpc)
+ # Intel C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+- pgCC*)
+- # Portland Group C++ compiler.
+- lt_prog_compiler_wl_CXX='-Wl,'
+- lt_prog_compiler_pic_CXX='-fpic'
+- lt_prog_compiler_static_CXX='-Bstatic'
+- ;;
+- cxx*)
++ cxx)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+@@ -12794,25 +11136,25 @@
+ ;;
+ mvs*)
+ case $cc_basename in
+- cxx*)
++ cxx)
+ lt_prog_compiler_pic_CXX='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+- cxx*)
++ cxx)
+ # Digital/Compaq C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+@@ -12826,15 +11168,24 @@
+ ;;
+ psos*)
+ ;;
++ sco*)
++ case $cc_basename in
++ CC)
++ lt_prog_compiler_pic_CXX='-fPIC'
++ ;;
++ *)
++ ;;
++ esac
++ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ lt_prog_compiler_wl_CXX='-Qoption ld '
+ ;;
+- gcx*)
++ gcx)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-PIC'
+ ;;
+@@ -12844,12 +11195,12 @@
+ ;;
+ sunos4*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.x
+ lt_prog_compiler_pic_CXX='-pic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+- lcc*)
++ lcc)
+ # Lucid
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+@@ -12859,7 +11210,7 @@
+ ;;
+ tandem*)
+ case $cc_basename in
+- NCC*)
++ NCC)
+ # NonStop-UX NCC 3.20
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+@@ -12867,14 +11218,7 @@
+ ;;
+ esac
+ ;;
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- case $cc_basename in
+- CC*)
+- lt_prog_compiler_wl_CXX='-Wl,'
+- lt_prog_compiler_pic_CXX='-KPIC'
+- lt_prog_compiler_static_CXX='-Bstatic'
+- ;;
+- esac
++ unixware*)
+ ;;
+ vxworks*)
+ ;;
+@@ -12884,16 +11228,16 @@
+ esac
+ fi
+
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+ #
+ # Check to make sure the PIC flag actually works.
+ #
+ if test -n "$lt_prog_compiler_pic_CXX"; then
+
+-{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+ if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12907,28 +11251,26 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:12913: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:11257: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:12917: \$? = $ac_status" >&5
++ echo "$as_me:11261: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+ if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+ case $lt_prog_compiler_pic_CXX in
+@@ -12941,7 +11283,7 @@
+ fi
+
+ fi
+-case $host_os in
++case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_CXX=
+@@ -12951,50 +11293,8 @@
+ ;;
+ esac
+
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_static_works_CXX=no
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_static_works_CXX=yes
+- fi
+- else
+- lt_prog_compiler_static_works_CXX=yes
+- fi
+- fi
+- $rm conftest*
+- LDFLAGS="$save_LDFLAGS"
+-
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
+-echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; }
+-
+-if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
+- :
+-else
+- lt_prog_compiler_static_CXX=
+-fi
+-
+-
+-{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+ if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -13011,25 +11311,23 @@
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:13017: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:11317: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:13021: \$? = $ac_status" >&5
++ echo "$as_me:11321: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
++ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o_CXX=yes
+ fi
+ fi
+- chmod u+w . 2>&5
++ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+@@ -13040,23 +11338,23 @@
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+ hard_links="nottested"
+ if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+- { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- { echo "$as_me:$LINENO: result: $hard_links" >&5
+-echo "${ECHO_T}$hard_links" >&6; }
++ echo "$as_me:$LINENO: result: $hard_links" >&5
++echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+ echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+@@ -13066,8 +11364,8 @@
+ need_locks=no
+ fi
+
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+@@ -13084,20 +11382,22 @@
+ export_symbols_cmds_CXX="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
+- linux* | k*bsd*-gnu)
+- link_all_deplibs_CXX=no
++ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+
+-{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+-echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
++echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
++echo "${ECHO_T}$ld_shlibs_CXX" >&6
+ test "$ld_shlibs_CXX" = no && can_build_shared=no
+
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
++
+ #
+ # Do we need to explicitly link libc?
+ #
+@@ -13115,8 +11415,8 @@
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+- { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+@@ -13130,7 +11430,6 @@
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_CXX
+- pic_flag=$lt_prog_compiler_pic_CXX
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+@@ -13153,16 +11452,16 @@
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+- { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+-echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; }
++ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
++echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+ ;;
+ esac
+ fi
+ ;;
+ esac
+
+-{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+ library_names_spec=
+ libname_spec='lib$name'
+ soname_spec=
+@@ -13263,7 +11562,7 @@
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+-bsdi[45]*)
++bsdi4*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -13291,8 +11590,7 @@
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
++ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+@@ -13322,7 +11620,7 @@
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+@@ -13345,7 +11643,7 @@
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+@@ -13368,17 +11666,20 @@
+ dynamic_linker=no
+ ;;
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[123]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+@@ -13396,19 +11697,14 @@
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+- freebsd3.[01]* | freebsdelf3.[01]*)
++ freebsd3.01* | freebsdelf3.01*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
++ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+ esac
+ ;;
+
+@@ -13428,7 +11724,7 @@
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+@@ -13468,18 +11764,6 @@
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+@@ -13523,7 +11807,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -13537,10 +11821,31 @@
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '#line 11828 "configure"' > conftest.$ac_ext
++ 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
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
++
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
++ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+@@ -13552,7 +11857,7 @@
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+-netbsdelf*-gnu)
++knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -13561,7 +11866,7 @@
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
++ dynamic_linker='GNU ld.so'
+ ;;
+
+ netbsd*)
+@@ -13601,13 +11906,8 @@
+
+ openbsd*)
+ version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
++ need_version=yes
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+@@ -13645,6 +11945,13 @@
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
+ solaris*)
+ version_type=linux
+ need_lib_prefix=no
+@@ -13670,7 +11977,7 @@
+ need_version=yes
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+@@ -13703,29 +12010,6 @@
+ fi
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
+- esac
+- fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
+-
+ uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -13737,21 +12021,16 @@
+ dynamic_linker=no
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+-echo "${ECHO_T}$dynamic_linker" >&6; }
++echo "$as_me:$LINENO: result: $dynamic_linker" >&5
++echo "${ECHO_T}$dynamic_linker" >&6
+ test "$dynamic_linker" = no && can_build_shared=no
+
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+-fi
+-
+-{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+ hardcode_action_CXX=
+ if test -n "$hardcode_libdir_flag_spec_CXX" || \
+- test -n "$runpath_var_CXX" || \
+- test "X$hardcode_automatic_CXX" = "Xyes" ; then
++ test -n "$runpath_var CXX" || \
++ test "X$hardcode_automatic_CXX"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_CXX" != no &&
+@@ -13771,8 +12050,8 @@
+ # directories.
+ hardcode_action_CXX=unsupported
+ fi
+-{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+-echo "${ECHO_T}$hardcode_action_CXX" >&6; }
++echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
++echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+ if test "$hardcode_action_CXX" = relink; then
+ # Fast installation is not supported
+@@ -13783,5219 +12062,6377 @@
+ enable_fast_install=needless
+ fi
+
+-
+-# The else clause should only fire when bootstrapping the
+-# libtool distribution, otherwise you forgot to ship ltmain.sh
+-# with your package, and you will get complaints that there are
+-# no rules to generate ltmain.sh.
+-if test -f "$ltmain"; then
+- # See if we are running on zsh, and set the options which allow our commands through
+- # without removal of \ escapes.
+- if test -n "${ZSH_VERSION+set}" ; then
+- setopt NO_GLOB_SUBST
+- fi
+- # Now quote all the things that may contain metacharacters while being
+- # careful not to overquote the AC_SUBSTed values. We take copies of the
+- # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+- SED SHELL STRIP \
+- libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+- old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+- deplibs_check_method reload_flag reload_cmds need_locks \
+- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+- lt_cv_sys_global_symbol_to_c_name_address \
+- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+- old_postinstall_cmds old_postuninstall_cmds \
+- compiler_CXX \
+- CC_CXX \
+- LD_CXX \
+- lt_prog_compiler_wl_CXX \
+- lt_prog_compiler_pic_CXX \
+- lt_prog_compiler_static_CXX \
+- lt_prog_compiler_no_builtin_flag_CXX \
+- export_dynamic_flag_spec_CXX \
+- thread_safe_flag_spec_CXX \
+- whole_archive_flag_spec_CXX \
+- enable_shared_with_static_runtimes_CXX \
+- old_archive_cmds_CXX \
+- old_archive_from_new_cmds_CXX \
+- predep_objects_CXX \
+- postdep_objects_CXX \
+- predeps_CXX \
+- postdeps_CXX \
+- compiler_lib_search_path_CXX \
+- archive_cmds_CXX \
+- archive_expsym_cmds_CXX \
+- postinstall_cmds_CXX \
+- postuninstall_cmds_CXX \
+- old_archive_from_expsyms_cmds_CXX \
+- allow_undefined_flag_CXX \
+- no_undefined_flag_CXX \
+- export_symbols_cmds_CXX \
+- hardcode_libdir_flag_spec_CXX \
+- hardcode_libdir_flag_spec_ld_CXX \
+- hardcode_libdir_separator_CXX \
+- hardcode_automatic_CXX \
+- module_cmds_CXX \
+- module_expsym_cmds_CXX \
+- lt_cv_prog_compiler_c_o_CXX \
+- exclude_expsyms_CXX \
+- include_expsyms_CXX; do
+-
+- case $var in
+- old_archive_cmds_CXX | \
+- old_archive_from_new_cmds_CXX | \
+- archive_cmds_CXX | \
+- archive_expsym_cmds_CXX | \
+- module_cmds_CXX | \
+- module_expsym_cmds_CXX | \
+- old_archive_from_expsyms_cmds_CXX | \
+- export_symbols_cmds_CXX | \
+- extract_expsyms_cmds | reload_cmds | finish_cmds | \
+- postinstall_cmds | postuninstall_cmds | \
+- old_postinstall_cmds | old_postuninstall_cmds | \
+- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+- # Double-quote double-evaled strings.
+- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+- ;;
+- *)
+- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+- ;;
+- esac
+- done
+-
+- case $lt_echo in
+- *'\$0 --fallback-echo"')
+- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
++striplib=
++old_striplib=
++echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
++ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++else
++# FIXME - insert some real tests, host_os isn't really good enough
++ case $host_os in
++ darwin*)
++ if test -n "$STRIP" ; then
++ striplib="$STRIP -x"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++ ;;
++ *)
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ ;;
+ esac
++fi
+
+-cfgfile="$ofile"
+-
+- cat <<__EOF__ >> "$cfgfile"
+-# ### BEGIN LIBTOOL TAG CONFIG: $tagname
++if test "x$enable_dlopen" != xyes; then
++ enable_dlopen=unknown
++ enable_dlopen_self=unknown
++ enable_dlopen_self_static=unknown
++else
++ lt_cv_dlopen=no
++ lt_cv_dlopen_libs=
+
+-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
++ case $host_os in
++ beos*)
++ lt_cv_dlopen="load_add_on"
++ lt_cv_dlopen_libs=
++ lt_cv_dlopen_self=yes
++ ;;
+
+-# Shell to use when invoking shell scripts.
+-SHELL=$lt_SHELL
++ mingw* | pw32*)
++ lt_cv_dlopen="LoadLibrary"
++ lt_cv_dlopen_libs=
++ ;;
+
+-# Whether or not to build shared libraries.
+-build_libtool_libs=$enable_shared
++ cygwin*)
++ lt_cv_dlopen="dlopen"
++ lt_cv_dlopen_libs=
++ ;;
+
+-# Whether or not to build static libraries.
+-build_old_libs=$enable_static
++ darwin*)
++ # if libdl is installed we need to link against it
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
++if test "${ac_cv_lib_dl_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldl $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# Whether or not to add -lc for building shared libraries.
+-build_libtool_need_lc=$archive_cmds_need_lc_CXX
++/* 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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dl_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Whether or not to disallow shared libs when runtime libs are static
+-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
++ac_cv_lib_dl_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
++if test $ac_cv_lib_dl_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
++else
+
+-# Whether or not to optimize for fast installation.
+-fast_install=$enable_fast_install
++ lt_cv_dlopen="dyld"
++ lt_cv_dlopen_libs=
++ lt_cv_dlopen_self=yes
+
+-# The host system.
+-host_alias=$host_alias
+-host=$host
+-host_os=$host_os
++fi
+
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
++ ;;
+
+-# An echo program that does not interpret backslashes.
+-echo=$lt_echo
++ *)
++ echo "$as_me:$LINENO: checking for shl_load" >&5
++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
++if test "${ac_cv_func_shl_load+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define shl_load innocuous_shl_load
+
+-# The archiver.
+-AR=$lt_AR
+-AR_FLAGS=$lt_AR_FLAGS
+-
+-# A C compiler.
+-LTCC=$lt_LTCC
+-
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+-# A language-specific compiler.
+-CC=$lt_compiler_CXX
+-
+-# Is the compiler the GNU C compiler?
+-with_gcc=$GCC_CXX
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char shl_load (); below.
++ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ <limits.h> exists even on freestanding compilers. */
+
+-# An ERE matcher.
+-EGREP=$lt_EGREP
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
+
+-# The linker used to build libraries.
+-LD=$lt_LD_CXX
++#undef shl_load
+
+-# Whether we need hard or soft links.
+-LN_S=$lt_LN_S
++/* 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 shl_load ();
++/* 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_shl_load) || defined (__stub___shl_load)
++choke me
++#else
++char (*f) () = shl_load;
++#endif
++#ifdef __cplusplus
++}
++#endif
+
+-# A BSD-compatible nm program.
+-NM=$lt_NM
++int
++main ()
++{
++return f != shl_load;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_shl_load=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# A symbol stripping program
+-STRIP=$lt_STRIP
++ac_cv_func_shl_load=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
++echo "${ECHO_T}$ac_cv_func_shl_load" >&6
++if test $ac_cv_func_shl_load = yes; then
++ lt_cv_dlopen="shl_load"
++else
++ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
++if test "${ac_cv_lib_dld_shl_load+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# Used to examine libraries when file_magic_cmd begins "file"
+-MAGIC_CMD=$MAGIC_CMD
++/* 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 shl_load ();
++int
++main ()
++{
++shl_load ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dld_shl_load=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Used on cygwin: DLL creation program.
+-DLLTOOL="$DLLTOOL"
++ac_cv_lib_dld_shl_load=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
++if test $ac_cv_lib_dld_shl_load = yes; then
++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
++else
++ echo "$as_me:$LINENO: checking for dlopen" >&5
++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
++if test "${ac_cv_func_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define dlopen innocuous_dlopen
+
+-# Used on cygwin: object dumper.
+-OBJDUMP="$OBJDUMP"
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char dlopen (); below.
++ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ <limits.h> exists even on freestanding compilers. */
+
+-# Used on cygwin: assembler.
+-AS="$AS"
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
+
+-# The name of the directory that contains temporary libtool files.
+-objdir=$objdir
++#undef dlopen
+
+-# How to create reloadable object files.
+-reload_flag=$lt_reload_flag
+-reload_cmds=$lt_reload_cmds
++/* 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 dlopen ();
++/* 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_dlopen) || defined (__stub___dlopen)
++choke me
++#else
++char (*f) () = dlopen;
++#endif
++#ifdef __cplusplus
++}
++#endif
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl_CXX
++int
++main ()
++{
++return f != dlopen;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Object file suffix (normally "o").
+-objext="$ac_objext"
++ac_cv_func_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
++echo "${ECHO_T}$ac_cv_func_dlopen" >&6
++if test $ac_cv_func_dlopen = yes; then
++ lt_cv_dlopen="dlopen"
++else
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
++if test "${ac_cv_lib_dl_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldl $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# Old archive suffix (normally "a").
+-libext="$libext"
++/* 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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dl_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Shared library suffix (normally ".so").
+-shrext_cmds='$shrext_cmds'
+-
+-# Executable file suffix (normally "").
+-exeext="$exeext"
+-
+-# Additional compiler flags for building library objects.
+-pic_flag=$lt_lt_prog_compiler_pic_CXX
+-pic_mode=$pic_mode
++ac_cv_lib_dl_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
++if test $ac_cv_lib_dl_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
++else
++ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
++if test "${ac_cv_lib_svld_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-lsvld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# What is the maximum length of a command?
+-max_cmd_len=$lt_cv_sys_max_cmd_len
++/* 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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_svld_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Does compiler simultaneously support -c and -o options?
+-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
++ac_cv_lib_svld_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
++if test $ac_cv_lib_svld_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
++else
++ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
++if test "${ac_cv_lib_dld_dld_link+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# Must we lock files when doing compilation?
+-need_locks=$lt_need_locks
++/* 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 dld_link ();
++int
++main ()
++{
++dld_link ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dld_dld_link=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Do we need the lib prefix for modules?
+-need_lib_prefix=$need_lib_prefix
++ac_cv_lib_dld_dld_link=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
++if test $ac_cv_lib_dld_dld_link = yes; then
++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
++fi
+
+-# Do we need a version for libraries?
+-need_version=$need_version
+
+-# Whether dlopen is supported.
+-dlopen_support=$enable_dlopen
++fi
+
+-# Whether dlopen of programs is supported.
+-dlopen_self=$enable_dlopen_self
+
+-# Whether dlopen of statically linked programs is supported.
+-dlopen_self_static=$enable_dlopen_self_static
++fi
+
+-# Compiler flag to prevent dynamic linking.
+-link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+-# Compiler flag to turn off builtin functions.
+-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
++fi
+
+-# Compiler flag to allow reflexive dlopens.
+-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+-# Compiler flag to generate shared objects directly from archives.
+-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
++fi
+
+-# Compiler flag to generate thread-safe objects.
+-thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+-# Library versioning type.
+-version_type=$version_type
++fi
+
+-# Format of library name prefix.
+-libname_spec=$lt_libname_spec
++ ;;
++ esac
+
+-# List of archive names. First name is the real one, the rest are links.
+-# The last name is the one that the linker finds with -lNAME.
+-library_names_spec=$lt_library_names_spec
++ if test "x$lt_cv_dlopen" != xno; then
++ enable_dlopen=yes
++ else
++ enable_dlopen=no
++ fi
+
+-# The coded name of the library, if different from the real name.
+-soname_spec=$lt_soname_spec
++ case $lt_cv_dlopen in
++ dlopen)
++ save_CPPFLAGS="$CPPFLAGS"
++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+-# Commands used to build and install an old-style archive.
+-RANLIB=$lt_RANLIB
+-old_archive_cmds=$lt_old_archive_cmds_CXX
+-old_postinstall_cmds=$lt_old_postinstall_cmds
+-old_postuninstall_cmds=$lt_old_postuninstall_cmds
++ save_LDFLAGS="$LDFLAGS"
++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+-# Create an old-style archive from a shared archive.
+-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
++ save_LIBS="$LIBS"
++ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+-# Create a temporary old-style archive to link instead of a shared archive.
+-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
++ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
++if test "${lt_cv_dlopen_self+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test "$cross_compiling" = yes; then :
++ lt_cv_dlopen_self=cross
++else
++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
++ lt_status=$lt_dlunknown
++ cat > conftest.$ac_ext <<EOF
++#line 12699 "configure"
++#include "confdefs.h"
+
+-# Commands used to build and install a shared archive.
+-archive_cmds=$lt_archive_cmds_CXX
+-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+-postinstall_cmds=$lt_postinstall_cmds
+-postuninstall_cmds=$lt_postuninstall_cmds
++#if HAVE_DLFCN_H
++#include <dlfcn.h>
++#endif
+
+-# Commands used to build a loadable module (assumed same as above if empty)
+-module_cmds=$lt_module_cmds_CXX
+-module_expsym_cmds=$lt_module_expsym_cmds_CXX
++#include <stdio.h>
+
+-# Commands to strip libraries.
+-old_striplib=$lt_old_striplib
+-striplib=$lt_striplib
++#ifdef RTLD_GLOBAL
++# define LT_DLGLOBAL RTLD_GLOBAL
++#else
++# ifdef DL_GLOBAL
++# define LT_DLGLOBAL DL_GLOBAL
++# else
++# define LT_DLGLOBAL 0
++# endif
++#endif
+
+-# Dependencies to place before the objects being linked to create a
+-# shared library.
+-predep_objects=$lt_predep_objects_CXX
++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
++ find out it does not work in some platform. */
++#ifndef LT_DLLAZY_OR_NOW
++# ifdef RTLD_LAZY
++# define LT_DLLAZY_OR_NOW RTLD_LAZY
++# else
++# ifdef DL_LAZY
++# define LT_DLLAZY_OR_NOW DL_LAZY
++# else
++# ifdef RTLD_NOW
++# define LT_DLLAZY_OR_NOW RTLD_NOW
++# else
++# ifdef DL_NOW
++# define LT_DLLAZY_OR_NOW DL_NOW
++# else
++# define LT_DLLAZY_OR_NOW 0
++# endif
++# endif
++# endif
++# endif
++#endif
+
+-# Dependencies to place after the objects being linked to create a
+-# shared library.
+-postdep_objects=$lt_postdep_objects_CXX
++#ifdef __cplusplus
++extern "C" void exit (int);
++#endif
+
+-# Dependencies to place before the objects being linked to create a
+-# shared library.
+-predeps=$lt_predeps_CXX
++void fnord() { int i=42;}
++int main ()
++{
++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
++ int status = $lt_dlunknown;
+
+-# Dependencies to place after the objects being linked to create a
+-# shared library.
+-postdeps=$lt_postdeps_CXX
++ if (self)
++ {
++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
++ /* dlclose (self); */
++ }
+
+-# The library search path used internally by the compiler when linking
+-# a shared library.
+-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
++ exit (status);
++}
++EOF
++ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
++ (./conftest; exit; ) 2>/dev/null
++ lt_status=$?
++ case x$lt_status in
++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
++ esac
++ else :
++ # compilation failed
++ lt_cv_dlopen_self=no
++ fi
++fi
++rm -fr conftest*
+
+-# Method to check whether dependent libraries are shared objects.
+-deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == file_magic.
+-file_magic_cmd=$lt_file_magic_cmd
++fi
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+-# Flag that allows shared libraries with undefined symbols to be built.
+-allow_undefined_flag=$lt_allow_undefined_flag_CXX
++ if test "x$lt_cv_dlopen_self" = xyes; then
++ LDFLAGS="$LDFLAGS $link_static_flag"
++ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
++if test "${lt_cv_dlopen_self_static+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test "$cross_compiling" = yes; then :
++ lt_cv_dlopen_self_static=cross
++else
++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
++ lt_status=$lt_dlunknown
++ cat > conftest.$ac_ext <<EOF
++#line 12797 "configure"
++#include "confdefs.h"
+
+-# Flag that forces no undefined symbols.
+-no_undefined_flag=$lt_no_undefined_flag_CXX
++#if HAVE_DLFCN_H
++#include <dlfcn.h>
++#endif
+
+-# Commands used to finish a libtool library installation in a directory.
+-finish_cmds=$lt_finish_cmds
++#include <stdio.h>
+
+-# Same as above, but a single script fragment to be evaled but not shown.
+-finish_eval=$lt_finish_eval
++#ifdef RTLD_GLOBAL
++# define LT_DLGLOBAL RTLD_GLOBAL
++#else
++# ifdef DL_GLOBAL
++# define LT_DLGLOBAL DL_GLOBAL
++# else
++# define LT_DLGLOBAL 0
++# endif
++#endif
+
+-# Take the output of nm and produce a listing of raw symbols and C names.
+-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
++ find out it does not work in some platform. */
++#ifndef LT_DLLAZY_OR_NOW
++# ifdef RTLD_LAZY
++# define LT_DLLAZY_OR_NOW RTLD_LAZY
++# else
++# ifdef DL_LAZY
++# define LT_DLLAZY_OR_NOW DL_LAZY
++# else
++# ifdef RTLD_NOW
++# define LT_DLLAZY_OR_NOW RTLD_NOW
++# else
++# ifdef DL_NOW
++# define LT_DLLAZY_OR_NOW DL_NOW
++# else
++# define LT_DLLAZY_OR_NOW 0
++# endif
++# endif
++# endif
++# endif
++#endif
+
+-# Transform the output of nm in a proper C declaration
+-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
++#ifdef __cplusplus
++extern "C" void exit (int);
++#endif
+
+-# Transform the output of nm in a C name address pair
+-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
++void fnord() { int i=42;}
++int main ()
++{
++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
++ int status = $lt_dlunknown;
+
+-# This is the shared library runtime path variable.
+-runpath_var=$runpath_var
++ if (self)
++ {
++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
++ /* dlclose (self); */
++ }
+
+-# This is the shared library path variable.
+-shlibpath_var=$shlibpath_var
++ exit (status);
++}
++EOF
++ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
++ (./conftest; exit; ) 2>/dev/null
++ lt_status=$?
++ case x$lt_status in
++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
++ esac
++ else :
++ # compilation failed
++ lt_cv_dlopen_self_static=no
++ fi
++fi
++rm -fr conftest*
+
+-# Is shlibpath searched before the hard-coded library search path?
+-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+-# How to hardcode a shared library path into an executable.
+-hardcode_action=$hardcode_action_CXX
++fi
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
++ fi
+
+-# Whether we should hardcode library paths into libraries.
+-hardcode_into_libs=$hardcode_into_libs
++ CPPFLAGS="$save_CPPFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++ LIBS="$save_LIBS"
++ ;;
++ esac
+
+-# Flag to hardcode \$libdir into a binary during linking.
+-# This must work even if \$libdir does not exist.
+-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
++ case $lt_cv_dlopen_self in
++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
++ *) enable_dlopen_self=unknown ;;
++ esac
+
+-# If ld is used when linking, flag to hardcode \$libdir into
+-# a binary during linking. This must work even if \$libdir does
+-# not exist.
+-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
++ case $lt_cv_dlopen_self_static in
++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
++ *) enable_dlopen_self_static=unknown ;;
++ esac
++fi
+
+-# Whether we need a single -rpath flag with a separated argument.
+-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+-# resulting binary.
+-hardcode_direct=$hardcode_direct_CXX
++# The else clause should only fire when bootstrapping the
++# libtool distribution, otherwise you forgot to ship ltmain.sh
++# with your package, and you will get complaints that there are
++# no rules to generate ltmain.sh.
++if test -f "$ltmain"; then
++ # See if we are running on zsh, and set the options which allow our commands through
++ # without removal of \ escapes.
++ if test -n "${ZSH_VERSION+set}" ; then
++ setopt NO_GLOB_SUBST
++ fi
++ # Now quote all the things that may contain metacharacters while being
++ # careful not to overquote the AC_SUBSTed values. We take copies of the
++ # variables and quote the copies for generation of the libtool script.
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
++ SED SHELL STRIP \
++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
++ deplibs_check_method reload_flag reload_cmds need_locks \
++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
++ lt_cv_sys_global_symbol_to_c_name_address \
++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
++ old_postinstall_cmds old_postuninstall_cmds \
++ compiler_CXX \
++ CC_CXX \
++ LD_CXX \
++ lt_prog_compiler_wl_CXX \
++ lt_prog_compiler_pic_CXX \
++ lt_prog_compiler_static_CXX \
++ lt_prog_compiler_no_builtin_flag_CXX \
++ export_dynamic_flag_spec_CXX \
++ thread_safe_flag_spec_CXX \
++ whole_archive_flag_spec_CXX \
++ enable_shared_with_static_runtimes_CXX \
++ old_archive_cmds_CXX \
++ old_archive_from_new_cmds_CXX \
++ predep_objects_CXX \
++ postdep_objects_CXX \
++ predeps_CXX \
++ postdeps_CXX \
++ compiler_lib_search_path_CXX \
++ archive_cmds_CXX \
++ archive_expsym_cmds_CXX \
++ postinstall_cmds_CXX \
++ postuninstall_cmds_CXX \
++ old_archive_from_expsyms_cmds_CXX \
++ allow_undefined_flag_CXX \
++ no_undefined_flag_CXX \
++ export_symbols_cmds_CXX \
++ hardcode_libdir_flag_spec_CXX \
++ hardcode_libdir_flag_spec_ld_CXX \
++ hardcode_libdir_separator_CXX \
++ hardcode_automatic_CXX \
++ module_cmds_CXX \
++ module_expsym_cmds_CXX \
++ lt_cv_prog_compiler_c_o_CXX \
++ exclude_expsyms_CXX \
++ include_expsyms_CXX; do
+
+-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+-# resulting binary.
+-hardcode_minus_L=$hardcode_minus_L_CXX
++ case $var in
++ old_archive_cmds_CXX | \
++ old_archive_from_new_cmds_CXX | \
++ archive_cmds_CXX | \
++ archive_expsym_cmds_CXX | \
++ module_cmds_CXX | \
++ module_expsym_cmds_CXX | \
++ old_archive_from_expsyms_cmds_CXX | \
++ export_symbols_cmds_CXX | \
++ extract_expsyms_cmds | reload_cmds | finish_cmds | \
++ postinstall_cmds | postuninstall_cmds | \
++ old_postinstall_cmds | old_postuninstall_cmds | \
++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
++ # Double-quote double-evaled strings.
++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
++ ;;
++ *)
++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
++ ;;
++ esac
++ done
+
+-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+-# the resulting binary.
+-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
++ case $lt_echo in
++ *'\$0 --fallback-echo"')
++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
++ ;;
++ esac
+
+-# Set to yes if building a shared library automatically hardcodes DIR into the library
+-# and all subsequent libraries and executables linked against it.
+-hardcode_automatic=$hardcode_automatic_CXX
++cfgfile="$ofile"
+
+-# Variables whose values should be saved in libtool wrapper scripts and
+-# restored at relink time.
+-variables_saved_for_relink="$variables_saved_for_relink"
++ cat <<__EOF__ >> "$cfgfile"
++# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+-# Whether libtool must link a program against all its dependency libraries.
+-link_all_deplibs=$link_all_deplibs_CXX
++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+-# Compile-time system search path for libraries
+-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
++# Shell to use when invoking shell scripts.
++SHELL=$lt_SHELL
+
+-# Run-time system search path for libraries
+-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
++# Whether or not to build shared libraries.
++build_libtool_libs=$enable_shared
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path="$fix_srcfile_path_CXX"
++# Whether or not to build static libraries.
++build_old_libs=$enable_static
+
+-# Set to yes if exported symbols are required.
+-always_export_symbols=$always_export_symbols_CXX
++# Whether or not to add -lc for building shared libraries.
++build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+-# The commands to list exported symbols.
+-export_symbols_cmds=$lt_export_symbols_cmds_CXX
++# Whether or not to disallow shared libs when runtime libs are static
++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+-# The commands to extract the exported symbol list from a shared archive.
+-extract_expsyms_cmds=$lt_extract_expsyms_cmds
++# Whether or not to optimize for fast installation.
++fast_install=$enable_fast_install
+
+-# Symbols that should not be listed in the preloaded symbols.
+-exclude_expsyms=$lt_exclude_expsyms_CXX
++# The host system.
++host_alias=$host_alias
++host=$host
+
+-# Symbols that must always be exported.
+-include_expsyms=$lt_include_expsyms_CXX
++# An echo program that does not interpret backslashes.
++echo=$lt_echo
+
+-# ### END LIBTOOL TAG CONFIG: $tagname
++# The archiver.
++AR=$lt_AR
++AR_FLAGS=$lt_AR_FLAGS
+
+-__EOF__
++# A C compiler.
++LTCC=$lt_LTCC
+
++# A language-specific compiler.
++CC=$lt_compiler_CXX
+
+-else
+- # If there is no Makefile yet, we rely on a make rule to execute
+- # `config.status --recheck' to rerun these tests and create the
+- # libtool script then.
+- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+- if test -f "$ltmain_in"; then
+- test -f Makefile && make "$ltmain"
+- fi
+-fi
++# Is the compiler the GNU C compiler?
++with_gcc=$GCC_CXX
+
++# An ERE matcher.
++EGREP=$lt_EGREP
+
+-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
++# The linker used to build libraries.
++LD=$lt_LD_CXX
+
+-CC=$lt_save_CC
+-LDCXX=$LD
+-LD=$lt_save_LD
+-GCC=$lt_save_GCC
+-with_gnu_ldcxx=$with_gnu_ld
+-with_gnu_ld=$lt_save_with_gnu_ld
+-lt_cv_path_LDCXX=$lt_cv_path_LD
+-lt_cv_path_LD=$lt_save_path_LD
+-lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+-lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
++# Whether we need hard or soft links.
++LN_S=$lt_LN_S
+
+- else
+- tagname=""
+- fi
+- ;;
++# A BSD-compatible nm program.
++NM=$lt_NM
+
+- F77)
+- if test -n "$F77" && test "X$F77" != "Xno"; then
++# A symbol stripping program
++STRIP=$lt_STRIP
+
+-ac_ext=f
+-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
++# Used to examine libraries when file_magic_cmd begins "file"
++MAGIC_CMD=$MAGIC_CMD
+
++# Used on cygwin: DLL creation program.
++DLLTOOL="$DLLTOOL"
+
+-archive_cmds_need_lc_F77=no
+-allow_undefined_flag_F77=
+-always_export_symbols_F77=no
+-archive_expsym_cmds_F77=
+-export_dynamic_flag_spec_F77=
+-hardcode_direct_F77=no
+-hardcode_libdir_flag_spec_F77=
+-hardcode_libdir_flag_spec_ld_F77=
+-hardcode_libdir_separator_F77=
+-hardcode_minus_L_F77=no
+-hardcode_automatic_F77=no
+-module_cmds_F77=
+-module_expsym_cmds_F77=
+-link_all_deplibs_F77=unknown
+-old_archive_cmds_F77=$old_archive_cmds
+-no_undefined_flag_F77=
+-whole_archive_flag_spec_F77=
+-enable_shared_with_static_runtimes_F77=no
++# Used on cygwin: object dumper.
++OBJDUMP="$OBJDUMP"
+
+-# Source file extension for f77 test sources.
+-ac_ext=f
++# Used on cygwin: assembler.
++AS="$AS"
+
+-# Object file extension for compiled f77 test sources.
+-objext=o
+-objext_F77=$objext
++# The name of the directory that contains temporary libtool files.
++objdir=$objdir
+
+-# Code to be used in simple compile tests
+-lt_simple_compile_test_code=" subroutine t\n return\n end\n"
++# How to create reloadable object files.
++reload_flag=$lt_reload_flag
++reload_cmds=$lt_reload_cmds
+
+-# Code to be used in simple link tests
+-lt_simple_link_test_code=" program t\n end\n"
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl_CXX
+
+-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
++# Object file suffix (normally "o").
++objext="$ac_objext"
+
+-# If no C compiler was specified, use CC.
+-LTCC=${LTCC-"$CC"}
++# Old archive suffix (normally "a").
++libext="$libext"
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
++# Shared library suffix (normally ".so").
++shrext_cmds='$shrext_cmds'
+
+-# Allow CC to be a program name with arguments.
+-compiler=$CC
++# Executable file suffix (normally "").
++exeext="$exeext"
+
++# Additional compiler flags for building library objects.
++pic_flag=$lt_lt_prog_compiler_pic_CXX
++pic_mode=$pic_mode
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
++# What is the maximum length of a command?
++max_cmd_len=$lt_cv_sys_max_cmd_len
+
++# Does compiler simultaneously support -c and -o options?
++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+-# Allow CC to be a program name with arguments.
+-lt_save_CC="$CC"
+-CC=${F77-"f77"}
+-compiler=$CC
+-compiler_F77=$CC
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
++# Must we lock files when doing compilation ?
++need_locks=$lt_need_locks
+
++# Do we need the lib prefix for modules?
++need_lib_prefix=$need_lib_prefix
+
+-{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
+-{ echo "$as_me:$LINENO: result: $can_build_shared" >&5
+-echo "${ECHO_T}$can_build_shared" >&6; }
++# Do we need a version for libraries?
++need_version=$need_version
+
+-{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; }
+-test "$can_build_shared" = "no" && enable_shared=no
++# Whether dlopen is supported.
++dlopen_support=$enable_dlopen
+
+-# On AIX, shared libraries and static libraries use the same namespace, and
+-# are all built from PIC.
+-case $host_os in
+-aix3*)
+- test "$enable_shared" = yes && enable_static=no
+- if test -n "$RANLIB"; then
+- archive_cmds="$archive_cmds~\$RANLIB \$lib"
+- postinstall_cmds='$RANLIB $lib'
+- fi
+- ;;
+-aix4* | aix5*)
+- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+- test "$enable_shared" = yes && enable_static=no
+- fi
+- ;;
+-esac
+-{ echo "$as_me:$LINENO: result: $enable_shared" >&5
+-echo "${ECHO_T}$enable_shared" >&6; }
++# Whether dlopen of programs is supported.
++dlopen_self=$enable_dlopen_self
+
+-{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
+-# Make sure either enable_shared or enable_static is yes.
+-test "$enable_shared" = yes || enable_static=yes
+-{ echo "$as_me:$LINENO: result: $enable_static" >&5
+-echo "${ECHO_T}$enable_static" >&6; }
++# Whether dlopen of statically linked programs is supported.
++dlopen_self_static=$enable_dlopen_self_static
+
+-GCC_F77="$G77"
+-LD_F77="$LD"
++# Compiler flag to prevent dynamic linking.
++link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+-lt_prog_compiler_wl_F77=
+-lt_prog_compiler_pic_F77=
+-lt_prog_compiler_static_F77=
++# Compiler flag to turn off builtin functions.
++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
++# Compiler flag to allow reflexive dlopens.
++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+- if test "$GCC" = yes; then
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_static_F77='-static'
++# Compiler flag to generate shared objects directly from archives.
++whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+- case $host_os in
+- aix*)
+- # All AIX code is PIC.
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- lt_prog_compiler_static_F77='-Bstatic'
+- fi
+- ;;
++# Compiler flag to generate thread-safe objects.
++thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+- amigaos*)
+- # FIXME: we need at least 68020 code to build shared libraries, but
+- # adding the `-m68020' flag to GCC prevents building anything better,
+- # like `-m68040'.
+- lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+- ;;
++# Library versioning type.
++version_type=$version_type
+
+- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+- # PIC is the default for these OSes.
+- ;;
++# Format of library name prefix.
++libname_spec=$lt_libname_spec
+
+- mingw* | pw32* | os2*)
+- # This hack is so that the source file can tell whether it is being
+- # built for inclusion in a dll (and should export symbols for example).
+- lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+- ;;
++# List of archive names. First name is the real one, the rest are links.
++# The last name is the one that the linker finds with -lNAME.
++library_names_spec=$lt_library_names_spec
+
+- darwin* | rhapsody*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- lt_prog_compiler_pic_F77='-fno-common'
+- ;;
++# The coded name of the library, if different from the real name.
++soname_spec=$lt_soname_spec
+
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
++# Commands used to build and install an old-style archive.
++RANLIB=$lt_RANLIB
++old_archive_cmds=$lt_old_archive_cmds_CXX
++old_postinstall_cmds=$lt_old_postinstall_cmds
++old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+- msdosdjgpp*)
+- # Just because we use GCC doesn't mean we suddenly get shared libraries
+- # on systems that don't support them.
+- lt_prog_compiler_can_build_shared_F77=no
+- enable_shared=no
+- ;;
++# Create an old-style archive from a shared archive.
++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+- sysv4*MP*)
+- if test -d /usr/nec; then
+- lt_prog_compiler_pic_F77=-Kconform_pic
+- fi
+- ;;
++# Create a temporary old-style archive to link instead of a shared archive.
++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+- hpux*)
+- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+- # not for PA HP-UX.
+- case $host_cpu in
+- hppa*64*|ia64*)
+- # +Z the default
+- ;;
+- *)
+- lt_prog_compiler_pic_F77='-fPIC'
+- ;;
+- esac
+- ;;
++# Commands used to build and install a shared archive.
++archive_cmds=$lt_archive_cmds_CXX
++archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
++postinstall_cmds=$lt_postinstall_cmds
++postuninstall_cmds=$lt_postuninstall_cmds
+
+- *)
+- lt_prog_compiler_pic_F77='-fPIC'
+- ;;
+- esac
+- else
+- # PORTME Check for flag to pass linker flags through the system compiler.
+- case $host_os in
+- aix*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- lt_prog_compiler_static_F77='-Bstatic'
+- else
+- lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+- fi
+- ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- lt_prog_compiler_pic_F77='-qnocommon'
+- lt_prog_compiler_wl_F77='-Wl,'
+- ;;
+- esac
+- ;;
++# Commands used to build a loadable module (assumed same as above if empty)
++module_cmds=$lt_module_cmds_CXX
++module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+- mingw* | pw32* | os2*)
+- # This hack is so that the source file can tell whether it is being
+- # built for inclusion in a dll (and should export symbols for example).
+- lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+- ;;
++# Commands to strip libraries.
++old_striplib=$lt_old_striplib
++striplib=$lt_striplib
+
+- hpux9* | hpux10* | hpux11*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+- # not for PA HP-UX.
+- case $host_cpu in
+- hppa*64*|ia64*)
+- # +Z the default
+- ;;
+- *)
+- lt_prog_compiler_pic_F77='+Z'
+- ;;
+- esac
+- # Is there a better lt_prog_compiler_static that works with the bundled CC?
+- lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+- ;;
++# Dependencies to place before the objects being linked to create a
++# shared library.
++predep_objects=$lt_predep_objects_CXX
+
+- irix5* | irix6* | nonstopux*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- # PIC (with -KPIC) is the default.
+- lt_prog_compiler_static_F77='-non_shared'
+- ;;
++# Dependencies to place after the objects being linked to create a
++# shared library.
++postdep_objects=$lt_postdep_objects_CXX
+
+- newsos6)
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Dependencies to place before the objects being linked to create a
++# shared library.
++predeps=$lt_predeps_CXX
+
+- linux* | k*bsd*-gnu)
+- case $cc_basename in
+- icc* | ecc*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-static'
+- ;;
+- pgcc* | pgf77* | pgf90* | pgf95*)
+- # Portland Group compilers (*not* the Pentium gcc compiler,
+- # which looks to be a dead project)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_pic_F77='-fpic'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
+- ccc*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- # All Alpha code is PIC.
+- lt_prog_compiler_static_F77='-non_shared'
+- ;;
+- esac
+- ;;
++# Dependencies to place after the objects being linked to create a
++# shared library.
++postdeps=$lt_postdeps_CXX
+
+- osf3* | osf4* | osf5*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- # All OSF/1 code is PIC.
+- lt_prog_compiler_static_F77='-non_shared'
+- ;;
++# The library search path used internally by the compiler when linking
++# a shared library.
++compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+- solaris*)
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- case $cc_basename in
+- f77* | f90* | f95*)
+- lt_prog_compiler_wl_F77='-Qoption ld ';;
+- *)
+- lt_prog_compiler_wl_F77='-Wl,';;
+- esac
+- ;;
++# Method to check whether dependent libraries are shared objects.
++deplibs_check_method=$lt_deplibs_check_method
+
+- sunos4*)
+- lt_prog_compiler_wl_F77='-Qoption ld '
+- lt_prog_compiler_pic_F77='-PIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Command to use when deplibs_check_method == file_magic.
++file_magic_cmd=$lt_file_magic_cmd
+
+- sysv4 | sysv4.2uw2* | sysv4.3*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Flag that allows shared libraries with undefined symbols to be built.
++allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+- sysv4*MP*)
+- if test -d /usr/nec ;then
+- lt_prog_compiler_pic_F77='-Kconform_pic'
+- lt_prog_compiler_static_F77='-Bstatic'
+- fi
+- ;;
++# Flag that forces no undefined symbols.
++no_undefined_flag=$lt_no_undefined_flag_CXX
+
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Commands used to finish a libtool library installation in a directory.
++finish_cmds=$lt_finish_cmds
+
+- unicos*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_can_build_shared_F77=no
+- ;;
++# Same as above, but a single script fragment to be evaled but not shown.
++finish_eval=$lt_finish_eval
+
+- uts4*)
+- lt_prog_compiler_pic_F77='-pic'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Take the output of nm and produce a listing of raw symbols and C names.
++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+- *)
+- lt_prog_compiler_can_build_shared_F77=no
+- ;;
+- esac
+- fi
++# Transform the output of nm in a proper C declaration
++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; }
++# Transform the output of nm in a C name address pair
++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+-#
+-# Check to make sure the PIC flag actually works.
+-#
+-if test -n "$lt_prog_compiler_pic_F77"; then
++# This is the shared library runtime path variable.
++runpath_var=$runpath_var
+
+-{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_pic_works_F77=no
+- ac_outfile=conftest.$ac_objext
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+- lt_compiler_flag="$lt_prog_compiler_pic_F77"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- # The option is referenced via a variable to avoid confusing sed.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:14578: $lt_compile\"" >&5)
+- (eval "$lt_compile" 2>conftest.err)
+- ac_status=$?
+- cat conftest.err >&5
+- echo "$as_me:14582: \$? = $ac_status" >&5
+- if (exit $ac_status) && test -s "$ac_outfile"; then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_pic_works_F77=yes
+- fi
+- fi
+- $rm conftest*
++# This is the shared library path variable.
++shlibpath_var=$shlibpath_var
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; }
++# Is shlibpath searched before the hard-coded library search path?
++shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+-if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+- case $lt_prog_compiler_pic_F77 in
+- "" | " "*) ;;
+- *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+- esac
+-else
+- lt_prog_compiler_pic_F77=
+- lt_prog_compiler_can_build_shared_F77=no
+-fi
++# How to hardcode a shared library path into an executable.
++hardcode_action=$hardcode_action_CXX
+
+-fi
+-case $host_os in
+- # For platforms which do not support PIC, -DPIC is meaningless:
+- *djgpp*)
+- lt_prog_compiler_pic_F77=
+- ;;
+- *)
+- lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+- ;;
+-esac
++# Whether we should hardcode library paths into libraries.
++hardcode_into_libs=$hardcode_into_libs
+
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
+-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_static_works_F77+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_static_works_F77=no
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_static_works_F77=yes
+- fi
+- else
+- lt_prog_compiler_static_works_F77=yes
+- fi
+- fi
+- $rm conftest*
+- LDFLAGS="$save_LDFLAGS"
++# Flag to hardcode \$libdir into a binary during linking.
++# This must work even if \$libdir does not exist.
++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
+-echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; }
++# If ld is used when linking, flag to hardcode \$libdir into
++# a binary during linking. This must work even if \$libdir does
++# not exist.
++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+-if test x"$lt_prog_compiler_static_works_F77" = xyes; then
+- :
+-else
+- lt_prog_compiler_static_F77=
+-fi
++# Whether we need a single -rpath flag with a separated argument.
++hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
++# resulting binary.
++hardcode_direct=$hardcode_direct_CXX
+
+-{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+-if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_cv_prog_compiler_c_o_F77=no
+- $rm -r conftest 2>/dev/null
+- mkdir conftest
+- cd conftest
+- mkdir out
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
++# resulting binary.
++hardcode_minus_L=$hardcode_minus_L_CXX
+
+- lt_compiler_flag="-o out/conftest2.$ac_objext"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:14682: $lt_compile\"" >&5)
+- (eval "$lt_compile" 2>out/conftest.err)
+- ac_status=$?
+- cat out/conftest.err >&5
+- echo "$as_me:14686: \$? = $ac_status" >&5
+- if (exit $ac_status) && test -s out/conftest2.$ac_objext
+- then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+- lt_cv_prog_compiler_c_o_F77=yes
+- fi
+- fi
+- chmod u+w . 2>&5
+- $rm conftest*
+- # SGI C++ compiler will create directory out/ii_files/ for
+- # template instantiation
+- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+- $rm out/* && rmdir out
+- cd ..
+- rmdir conftest
+- $rm conftest*
++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
++# the resulting binary.
++hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; }
++# Set to yes if building a shared library automatically hardcodes DIR into the library
++# and all subsequent libraries and executables linked against it.
++hardcode_automatic=$hardcode_automatic_CXX
+
++# Variables whose values should be saved in libtool wrapper scripts and
++# restored at relink time.
++variables_saved_for_relink="$variables_saved_for_relink"
+
+-hard_links="nottested"
+-if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+- # do not overwrite the value of need_locks provided by the user
+- { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
+- hard_links=yes
+- $rm conftest*
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- touch conftest.a
+- ln conftest.a conftest.b 2>&5 || hard_links=no
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- { echo "$as_me:$LINENO: result: $hard_links" >&5
+-echo "${ECHO_T}$hard_links" >&6; }
+- if test "$hard_links" = no; then
+- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+- need_locks=warn
+- fi
+-else
+- need_locks=no
+-fi
++# Whether libtool must link a program against all its dependency libraries.
++link_all_deplibs=$link_all_deplibs_CXX
+
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++# Compile-time system search path for libraries
++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+- runpath_var=
+- allow_undefined_flag_F77=
+- enable_shared_with_static_runtimes_F77=no
+- archive_cmds_F77=
+- archive_expsym_cmds_F77=
+- old_archive_From_new_cmds_F77=
+- old_archive_from_expsyms_cmds_F77=
+- export_dynamic_flag_spec_F77=
+- whole_archive_flag_spec_F77=
+- thread_safe_flag_spec_F77=
+- hardcode_libdir_flag_spec_F77=
+- hardcode_libdir_flag_spec_ld_F77=
+- hardcode_libdir_separator_F77=
+- hardcode_direct_F77=no
+- hardcode_minus_L_F77=no
+- hardcode_shlibpath_var_F77=unsupported
+- link_all_deplibs_F77=unknown
+- hardcode_automatic_F77=no
+- module_cmds_F77=
+- module_expsym_cmds_F77=
+- always_export_symbols_F77=no
+- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+- # include_expsyms should be a list of space-separated symbols to be *always*
+- # included in the symbol list
+- include_expsyms_F77=
+- # exclude_expsyms can be an extended regexp of symbols to exclude
+- # it will be wrapped by ` (' and `)$', so one must not match beginning or
+- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+- # as well as any symbol that contains `d'.
+- exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+- # platforms (ab)use it in PIC code, but their linkers get confused if
+- # the symbol is explicitly referenced. Since portable code cannot
+- # rely on this symbol name, it's probably fine to never include it in
+- # preloaded symbol tables.
+- extract_expsyms_cmds=
+- # Just being paranoid about ensuring that cc_basename is set.
+- for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
++# Run-time system search path for libraries
++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+- case $host_os in
+- cygwin* | mingw* | pw32*)
+- # FIXME: the MSVC++ port hasn't been tested in a loooong time
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- if test "$GCC" != yes; then
+- with_gnu_ld=no
+- fi
+- ;;
+- interix*)
+- # we just hope/assume this is gcc and not c89 (= MSVC++)
+- with_gnu_ld=yes
+- ;;
+- openbsd*)
+- with_gnu_ld=no
+- ;;
+- esac
++# Fix the shell variable \$srcfile for the compiler.
++fix_srcfile_path="$fix_srcfile_path_CXX"
+
+- ld_shlibs_F77=yes
+- if test "$with_gnu_ld" = yes; then
+- # If archive_cmds runs LD, not CC, wlarc should be empty
+- wlarc='${wl}'
++# Set to yes if exported symbols are required.
++always_export_symbols=$always_export_symbols_CXX
+
+- # Set some defaults for GNU ld with shared library support. These
+- # are reset later if shared libraries are not supported. Putting them
+- # here allows them to be overridden if necessary.
+- runpath_var=LD_RUN_PATH
+- hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+- export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+- whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- whole_archive_flag_spec_F77=
+- fi
+- supports_anon_versioning=no
+- case `$LD -v 2>/dev/null` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+- *\ 2.11.*) ;; # other 2.11 versions
+- *) supports_anon_versioning=yes ;;
+- esac
++# The commands to list exported symbols.
++export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+- # See if GNU ld supports shared libraries.
+- case $host_os in
+- aix3* | aix4* | aix5*)
+- # On AIX/PPC, the GNU linker is very broken
+- if test "$host_cpu" != ia64; then
+- ld_shlibs_F77=no
+- cat <<EOF 1>&2
++# The commands to extract the exported symbol list from a shared archive.
++extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+-*** to be unable to reliably create shared libraries on AIX.
+-*** Therefore, libtool is disabling shared libraries support. If you
+-*** really care for shared libraries, you may want to modify your PATH
+-*** so that a non-GNU linker is found, and then restart.
++# Symbols that should not be listed in the preloaded symbols.
++exclude_expsyms=$lt_exclude_expsyms_CXX
+
+-EOF
+- fi
+- ;;
++# Symbols that must always be exported.
++include_expsyms=$lt_include_expsyms_CXX
+
+- amigaos*)
+- archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_minus_L_F77=yes
++# ### END LIBTOOL TAG CONFIG: $tagname
+
+- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+- # that the semantics of dynamic libraries on AmigaOS, at least up
+- # to version 4, is to share data among multiple programs linked
+- # with the same dynamic library. Since this doesn't match the
+- # behavior of shared libraries on other platforms, we can't use
+- # them.
+- ld_shlibs_F77=no
+- ;;
++__EOF__
+
+- beos*)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- allow_undefined_flag_F77=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- else
+- ld_shlibs_F77=no
+- fi
+- ;;
+
+- cygwin* | mingw* | pw32*)
+- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+- # as there is no search path for DLLs.
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- allow_undefined_flag_F77=unsupported
+- always_export_symbols_F77=no
+- enable_shared_with_static_runtimes_F77=yes
+- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
++else
++ # If there is no Makefile yet, we rely on a make rule to execute
++ # `config.status --recheck' to rerun these tests and create the
++ # libtool script then.
++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
++ if test -f "$ltmain_in"; then
++ test -f Makefile && make "$ltmain"
++ fi
++fi
+
+- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- # If the export-symbols file already is a .def file (1st line
+- # is EXPORTS), use it as is; otherwise, prepend...
+- archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+- cp $export_symbols $output_objdir/$soname.def;
+- else
+- echo EXPORTS > $output_objdir/$soname.def;
+- cat $export_symbols >> $output_objdir/$soname.def;
+- fi~
+- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- ld_shlibs_F77=no
+- fi
+- ;;
+
+- interix3*)
+- hardcode_direct_F77=no
+- hardcode_shlibpath_var_F77=no
+- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_F77='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
++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
+
+- linux* | k*bsd*-gnu)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- tmp_addflag=
+- case $cc_basename,$host_cpu in
+- pgcc*) # Portland Group C compiler
+- whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag'
+- ;;
+- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+- whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag -Mnomain' ;;
+- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+- tmp_addflag=' -i_dynamic' ;;
+- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+- tmp_addflag=' -i_dynamic -nofor_main' ;;
+- ifc* | ifort*) # Intel Fortran compiler
+- tmp_addflag=' -nofor_main' ;;
+- esac
+- archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++CC=$lt_save_CC
++LDCXX=$LD
++LD=$lt_save_LD
++GCC=$lt_save_GCC
++with_gnu_ldcxx=$with_gnu_ld
++with_gnu_ld=$lt_save_with_gnu_ld
++lt_cv_path_LDCXX=$lt_cv_path_LD
++lt_cv_path_LD=$lt_save_path_LD
++lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
++lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+- if test $supports_anon_versioning = yes; then
+- archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- $echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ tagname=""
+ fi
+- link_all_deplibs_F77=no
+- else
+- ld_shlibs_F77=no
+- fi
+- ;;
+-
+- netbsd* | netbsdelf*-gnu)
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+- wlarc=
+- else
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- fi
+- ;;
++ ;;
+
+- solaris*)
+- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+- ld_shlibs_F77=no
+- cat <<EOF 1>&2
++ F77)
++ if test -n "$F77" && test "X$F77" != "Xno"; then
+
+-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+-*** create shared libraries on Solaris systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.9.1 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
++ac_ext=f
++ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
++ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+-EOF
+- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- ld_shlibs_F77=no
++
++archive_cmds_need_lc_F77=no
++allow_undefined_flag_F77=
++always_export_symbols_F77=no
++archive_expsym_cmds_F77=
++export_dynamic_flag_spec_F77=
++hardcode_direct_F77=no
++hardcode_libdir_flag_spec_F77=
++hardcode_libdir_flag_spec_ld_F77=
++hardcode_libdir_separator_F77=
++hardcode_minus_L_F77=no
++hardcode_automatic_F77=no
++module_cmds_F77=
++module_expsym_cmds_F77=
++link_all_deplibs_F77=unknown
++old_archive_cmds_F77=$old_archive_cmds
++no_undefined_flag_F77=
++whole_archive_flag_spec_F77=
++enable_shared_with_static_runtimes_F77=no
++
++# Source file extension for f77 test sources.
++ac_ext=f
++
++# Object file extension for compiled f77 test sources.
++objext=o
++objext_F77=$objext
++
++# Code to be used in simple compile tests
++lt_simple_compile_test_code=" subroutine t\n return\n end\n"
++
++# Code to be used in simple link tests
++lt_simple_link_test_code=" program t\n end\n"
++
++# ltmain only uses $CC for tagged configurations so make sure $CC is set.
++
++# If no C compiler was specified, use CC.
++LTCC=${LTCC-"$CC"}
++
++# Allow CC to be a program name with arguments.
++compiler=$CC
++
++
++# Allow CC to be a program name with arguments.
++lt_save_CC="$CC"
++CC=${F77-"f77"}
++compiler=$CC
++compiler_F77=$CC
++cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
++
++echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
++echo "$as_me:$LINENO: result: $can_build_shared" >&5
++echo "${ECHO_T}$can_build_shared" >&6
++
++echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
++test "$can_build_shared" = "no" && enable_shared=no
++
++# On AIX, shared libraries and static libraries use the same namespace, and
++# are all built from PIC.
++case "$host_os" in
++aix3*)
++ test "$enable_shared" = yes && enable_static=no
++ if test -n "$RANLIB"; then
++ archive_cmds="$archive_cmds~\$RANLIB \$lib"
++ postinstall_cmds='$RANLIB $lib'
++ fi
++ ;;
++aix4* | aix5*)
++ test "$enable_shared" = yes && enable_static=no
++ ;;
++esac
++echo "$as_me:$LINENO: result: $enable_shared" >&5
++echo "${ECHO_T}$enable_shared" >&6
++
++echo "$as_me:$LINENO: checking whether to build static libraries" >&5
++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
++# Make sure either enable_shared or enable_static is yes.
++test "$enable_shared" = yes || enable_static=yes
++echo "$as_me:$LINENO: result: $enable_static" >&5
++echo "${ECHO_T}$enable_static" >&6
++
++test "$ld_shlibs_F77" = no && can_build_shared=no
++
++GCC_F77="$G77"
++LD_F77="$LD"
++
++lt_prog_compiler_wl_F77=
++lt_prog_compiler_pic_F77=
++lt_prog_compiler_static_F77=
++
++echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
++
++ if test "$GCC" = yes; then
++ lt_prog_compiler_wl_F77='-Wl,'
++ lt_prog_compiler_static_F77='-static'
++
++ case $host_os in
++ aix*)
++ # All AIX code is PIC.
++ if test "$host_cpu" = ia64; then
++ # AIX 5 now supports IA64 processor
++ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+- case `$LD -v 2>&1` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+- ld_shlibs_F77=no
+- cat <<_LT_EOF 1>&2
++ amigaos*)
++ # FIXME: we need at least 68020 code to build shared libraries, but
++ # adding the `-m68020' flag to GCC prevents building anything better,
++ # like `-m68040'.
++ lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
++ ;;
+
+-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+-*** reliably create shared libraries on SCO systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
++ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
++ # PIC is the default for these OSes.
++ ;;
++
++ mingw* | pw32* | os2*)
++ # This hack is so that the source file can tell whether it is being
++ # built for inclusion in a dll (and should export symbols for example).
++ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
++ ;;
++
++ darwin* | rhapsody*)
++ # PIC is the default on this platform
++ # Common symbols not allowed in MH_DYLIB files
++ lt_prog_compiler_pic_F77='-fno-common'
++ ;;
++
++ msdosdjgpp*)
++ # Just because we use GCC doesn't mean we suddenly get shared libraries
++ # on systems that don't support them.
++ lt_prog_compiler_can_build_shared_F77=no
++ enable_shared=no
++ ;;
++
++ sysv4*MP*)
++ if test -d /usr/nec; then
++ lt_prog_compiler_pic_F77=-Kconform_pic
++ fi
++ ;;
+
+-_LT_EOF
++ hpux*)
++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
++ # not for PA HP-UX.
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ # +Z the default
+ ;;
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+- else
+- ld_shlibs_F77=no
+- fi
++ *)
++ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ ;;
+
+- sunos4*)
+- archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- wlarc=
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
+- ;;
+-
+ *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- ld_shlibs_F77=no
+- fi
++ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+-
+- if test "$ld_shlibs_F77" = no; then
+- runpath_var=
+- hardcode_libdir_flag_spec_F77=
+- export_dynamic_flag_spec_F77=
+- whole_archive_flag_spec_F77=
+- fi
+ else
+- # PORTME fill in a description of your system's linker (not GNU ld)
++ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+- aix3*)
+- allow_undefined_flag_F77=unsupported
+- always_export_symbols_F77=yes
+- archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+- # Note: this linker hardcodes the directories in LIBPATH if there
+- # are no directories specified by -L.
+- hardcode_minus_L_F77=yes
+- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+- # Neither direct hardcoding nor static linking is supported with a
+- # broken collect2.
+- hardcode_direct_F77=unsupported
+- fi
+- ;;
+-
+- aix4* | aix5*)
++ aix*)
++ lt_prog_compiler_wl_F77='-Wl,'
+ if test "$host_cpu" = ia64; then
+- # On IA64, the linker does run time linking by default, so we don't
+- # have to do anything special.
+- aix_use_runtimelinking=no
+- exp_sym_flag='-Bexport'
+- no_entry_flag=""
++ # AIX 5 now supports IA64 processor
++ lt_prog_compiler_static_F77='-Bstatic'
+ else
+- # If we're using GNU nm, then we don't want the "-C" option.
+- # -C means demangle to AIX nm, but means don't demangle with GNU nm
+- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+- export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+- else
+- export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+- fi
+- aix_use_runtimelinking=no
++ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
++ fi
++ ;;
+
+- # Test if we are trying to use run time linking or normal
+- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+- # need to do runtime linking.
+- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+- for ld_flag in $LDFLAGS; do
+- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+- aix_use_runtimelinking=yes
+- break
+- fi
+- done
+- ;;
+- esac
++ mingw* | pw32* | os2*)
++ # This hack is so that the source file can tell whether it is being
++ # built for inclusion in a dll (and should export symbols for example).
++ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
++ ;;
+
+- exp_sym_flag='-bexport'
+- no_entry_flag='-bnoentry'
+- fi
++ hpux9* | hpux10* | hpux11*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
++ # not for PA HP-UX.
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ # +Z the default
++ ;;
++ *)
++ lt_prog_compiler_pic_F77='+Z'
++ ;;
++ esac
++ # Is there a better lt_prog_compiler_static that works with the bundled CC?
++ lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
++ ;;
+
+- # When large executables or shared objects are built, AIX ld can
+- # have problems creating the table of contents. If linking a library
+- # or program results in "error TOC overflow" add -mminimal-toc to
+- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
++ irix5* | irix6* | nonstopux*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ # PIC (with -KPIC) is the default.
++ lt_prog_compiler_static_F77='-non_shared'
++ ;;
+
+- archive_cmds_F77=''
+- hardcode_direct_F77=yes
+- hardcode_libdir_separator_F77=':'
+- link_all_deplibs_F77=yes
++ newsos6)
++ lt_prog_compiler_pic_F77='-KPIC'
++ lt_prog_compiler_static_F77='-Bstatic'
++ ;;
+
+- if test "$GCC" = yes; then
+- case $host_os in aix4.[012]|aix4.[012].*)
+- # We only want to do this on AIX 4.2 and lower, the check
+- # below for broken collect2 doesn't work under 4.3+
+- collect2name=`${CC} -print-prog-name=collect2`
+- if test -f "$collect2name" && \
+- strings "$collect2name" | grep resolve_lib_name >/dev/null
+- then
+- # We have reworked collect2
+- hardcode_direct_F77=yes
+- else
+- # We have old collect2
+- hardcode_direct_F77=unsupported
+- # It fails to find uninstalled libraries when the uninstalled
+- # path is not listed in the libpath. Setting hardcode_minus_L
+- # to unsupported forces relinking
+- hardcode_minus_L_F77=yes
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_libdir_separator_F77=
+- fi
+- ;;
+- esac
+- shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+- else
+- # not using gcc
+- if test "$host_cpu" = ia64; then
+- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+- # chokes on -Wl,-G. The following line is correct:
+- shared_flag='-G'
+- else
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag='${wl}-G'
+- else
+- shared_flag='${wl}-bM:SRE'
+- fi
+- fi
+- fi
+-
+- # It seems that -bexpall does not export symbols beginning with
+- # underscore (_), so it is better to generate a list of symbols to export.
+- always_export_symbols_F77=yes
+- if test "$aix_use_runtimelinking" = yes; then
+- # Warning - without using the other runtime loading flags (-brtl),
+- # -berok will link without error, but may produce a broken library.
+- allow_undefined_flag_F77='-berok'
+- # Determine the default libpath from the value encoded in an empty executable.
+- cat >conftest.$ac_ext <<_ACEOF
+- program main
+-
+- end
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 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); } &&
+- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+-
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`; fi
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+- conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+-
+- hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+- archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+- else
+- if test "$host_cpu" = ia64; then
+- hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+- allow_undefined_flag_F77="-z nodefs"
+- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+- else
+- # Determine the default libpath from the value encoded in an empty executable.
+- cat >conftest.$ac_ext <<_ACEOF
+- program main
+-
+- end
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 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); } &&
+- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+-
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`; fi
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+- conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+-
+- hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+- # Warning - without using the other run time loading flags,
+- # -berok will link without error, but may produce a broken library.
+- no_undefined_flag_F77=' ${wl}-bernotok'
+- allow_undefined_flag_F77=' ${wl}-berok'
+- # Exported symbols can be pulled into shared objects from archives
+- whole_archive_flag_spec_F77='$convenience'
+- archive_cmds_need_lc_F77=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+- fi
+- fi
++ linux*)
++ case $CC in
++ icc* | ecc*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ lt_prog_compiler_pic_F77='-KPIC'
++ lt_prog_compiler_static_F77='-static'
++ ;;
++ ccc*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ # All Alpha code is PIC.
++ lt_prog_compiler_static_F77='-non_shared'
++ ;;
++ esac
+ ;;
+
+- amigaos*)
+- archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_minus_L_F77=yes
+- # see comment about different semantics on the GNU ld section
+- ld_shlibs_F77=no
++ osf3* | osf4* | osf5*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ # All OSF/1 code is PIC.
++ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+- bsdi[45]*)
+- export_dynamic_flag_spec_F77=-rdynamic
++ sco3.2v5*)
++ lt_prog_compiler_pic_F77='-Kpic'
++ lt_prog_compiler_static_F77='-dn'
+ ;;
+
+- cygwin* | mingw* | pw32*)
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- # hardcode_libdir_flag_spec is actually meaningless, as there is
+- # no search path for DLLs.
+- hardcode_libdir_flag_spec_F77=' '
+- allow_undefined_flag_F77=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_From_new_cmds_F77='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes_F77=yes
++ solaris*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ lt_prog_compiler_pic_F77='-KPIC'
++ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+- darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[012])
+- allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[012])
+- allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
+- archive_cmds_need_lc_F77=no
+- hardcode_direct_F77=no
+- hardcode_automatic_F77=yes
+- hardcode_shlibpath_var_F77=unsupported
+- whole_archive_flag_spec_F77=''
+- link_all_deplibs_F77=yes
+- if test "$GCC" = yes ; then
+- output_verbose_link_cmd='echo'
+- archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- module_cmds_F77='$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 lds
+- archive_expsym_cmds_F77='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}'
+- module_expsym_cmds_F77='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}'
+- else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+- module_cmds_F77='$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 lds
+- archive_expsym_cmds_F77='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}'
+- module_expsym_cmds_F77='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}'
+- ;;
+- *)
+- ld_shlibs_F77=no
+- ;;
+- esac
+- fi
++ sunos4*)
++ lt_prog_compiler_wl_F77='-Qoption ld '
++ lt_prog_compiler_pic_F77='-PIC'
++ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+- dgux*)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_shlibpath_var_F77=no
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ lt_prog_compiler_pic_F77='-KPIC'
++ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+- freebsd1*)
+- ld_shlibs_F77=no
++ sysv4*MP*)
++ if test -d /usr/nec ;then
++ lt_prog_compiler_pic_F77='-Kconform_pic'
++ lt_prog_compiler_static_F77='-Bstatic'
++ fi
+ ;;
+
+- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+- # support. Future versions do this automatically, but an explicit c++rt0.o
+- # does not break anything, and helps significantly (at the cost of a little
+- # extra space).
+- freebsd2.2*)
+- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
++ uts4*)
++ lt_prog_compiler_pic_F77='-pic'
++ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+- freebsd2*)
+- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_F77=yes
+- hardcode_minus_L_F77=yes
+- hardcode_shlibpath_var_F77=no
++ *)
++ lt_prog_compiler_can_build_shared_F77=no
+ ;;
++ esac
++ fi
+
+- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd* | dragonfly*)
+- archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
+- ;;
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+- hpux9*)
+- if test "$GCC" = yes; then
+- archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+- else
+- archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+- fi
+- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
+- hardcode_direct_F77=yes
++#
++# Check to make sure the PIC flag actually works.
++#
++if test -n "$lt_prog_compiler_pic_F77"; then
+
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_F77=yes
+- export_dynamic_flag_spec_F77='${wl}-E'
+- ;;
++echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
++if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_prog_compiler_pic_works_F77=no
++ ac_outfile=conftest.$ac_objext
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++ lt_compiler_flag="$lt_prog_compiler_pic_F77"
++ # Insert the option either (1) after the last *FLAGS variable, or
++ # (2) before a word containing "conftest.", or (3) at the end.
++ # Note that $ac_compile itself does not contain backslashes and begins
++ # with a dollar sign (not a hyphen), so the echo should work correctly.
++ # The option is referenced via a variable to avoid confusing sed.
++ lt_compile=`echo "$ac_compile" | $SED \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
++ -e 's:$: $lt_compiler_flag:'`
++ (eval echo "\"\$as_me:13624: $lt_compile\"" >&5)
++ (eval "$lt_compile" 2>conftest.err)
++ ac_status=$?
++ cat conftest.err >&5
++ echo "$as_me:13628: \$? = $ac_status" >&5
++ if (exit $ac_status) && test -s "$ac_outfile"; then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
++ lt_prog_compiler_pic_works_F77=yes
++ fi
++ fi
++ $rm conftest*
+
+- hpux10*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
++fi
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+- hardcode_direct_F77=yes
+- export_dynamic_flag_spec_F77='${wl}-E'
++if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
++ case $lt_prog_compiler_pic_F77 in
++ "" | " "*) ;;
++ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
++ esac
++else
++ lt_prog_compiler_pic_F77=
++ lt_prog_compiler_can_build_shared_F77=no
++fi
+
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_F77=yes
+- fi
+- ;;
++fi
++case "$host_os" in
++ # For platforms which do not support PIC, -DPIC is meaningless:
++ *djgpp*)
++ lt_prog_compiler_pic_F77=
++ ;;
++ *)
++ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
++ ;;
++esac
+
+- hpux11*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- else
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
++echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
++if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_cv_prog_compiler_c_o_F77=no
++ $rm -r conftest 2>/dev/null
++ mkdir conftest
++ cd conftest
++ mkdir out
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+- case $host_cpu in
+- hppa*64*|ia64*)
+- hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+- hardcode_direct_F77=no
+- hardcode_shlibpath_var_F77=no
+- ;;
+- *)
+- hardcode_direct_F77=yes
+- export_dynamic_flag_spec_F77='${wl}-E'
++ lt_compiler_flag="-o out/conftest2.$ac_objext"
++ # Insert the option either (1) after the last *FLAGS variable, or
++ # (2) before a word containing "conftest.", or (3) at the end.
++ # Note that $ac_compile itself does not contain backslashes and begins
++ # with a dollar sign (not a hyphen), so the echo should work correctly.
++ lt_compile=`echo "$ac_compile" | $SED \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
++ -e 's:$: $lt_compiler_flag:'`
++ (eval echo "\"\$as_me:13684: $lt_compile\"" >&5)
++ (eval "$lt_compile" 2>out/conftest.err)
++ ac_status=$?
++ cat out/conftest.err >&5
++ echo "$as_me:13688: \$? = $ac_status" >&5
++ if (exit $ac_status) && test -s out/conftest2.$ac_objext
++ then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test ! -s out/conftest.err; then
++ lt_cv_prog_compiler_c_o_F77=yes
++ fi
++ fi
++ chmod u+w .
++ $rm conftest*
++ # SGI C++ compiler will create directory out/ii_files/ for
++ # template instantiation
++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
++ $rm out/* && rmdir out
++ cd ..
++ rmdir conftest
++ $rm conftest*
+
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_F77=yes
+- ;;
+- esac
++fi
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
++
++
++hard_links="nottested"
++if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
++ # do not overwrite the value of need_locks provided by the user
++ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
++ hard_links=yes
++ $rm conftest*
++ ln conftest.a conftest.b 2>/dev/null && hard_links=no
++ touch conftest.a
++ ln conftest.a conftest.b 2>&5 || hard_links=no
++ ln conftest.a conftest.b 2>/dev/null && hard_links=no
++ echo "$as_me:$LINENO: result: $hard_links" >&5
++echo "${ECHO_T}$hard_links" >&6
++ if test "$hard_links" = no; then
++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
++ need_locks=warn
++ fi
++else
++ need_locks=no
++fi
++
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
++
++ runpath_var=
++ allow_undefined_flag_F77=
++ enable_shared_with_static_runtimes_F77=no
++ archive_cmds_F77=
++ archive_expsym_cmds_F77=
++ old_archive_From_new_cmds_F77=
++ old_archive_from_expsyms_cmds_F77=
++ export_dynamic_flag_spec_F77=
++ whole_archive_flag_spec_F77=
++ thread_safe_flag_spec_F77=
++ hardcode_libdir_flag_spec_F77=
++ hardcode_libdir_flag_spec_ld_F77=
++ hardcode_libdir_separator_F77=
++ hardcode_direct_F77=no
++ hardcode_minus_L_F77=no
++ hardcode_shlibpath_var_F77=unsupported
++ link_all_deplibs_F77=unknown
++ hardcode_automatic_F77=no
++ module_cmds_F77=
++ module_expsym_cmds_F77=
++ always_export_symbols_F77=no
++ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
++ # include_expsyms should be a list of space-separated symbols to be *always*
++ # included in the symbol list
++ include_expsyms_F77=
++ # exclude_expsyms can be an extended regexp of symbols to exclude
++ # it will be wrapped by ` (' and `)$', so one must not match beginning or
++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
++ # as well as any symbol that contains `d'.
++ exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
++ # platforms (ab)use it in PIC code, but their linkers get confused if
++ # the symbol is explicitly referenced. Since portable code cannot
++ # rely on this symbol name, it's probably fine to never include it in
++ # preloaded symbol tables.
++ extract_expsyms_cmds=
++
++ case $host_os in
++ cygwin* | mingw* | pw32*)
++ # FIXME: the MSVC++ port hasn't been tested in a loooong time
++ # When not using gcc, we currently assume that we are using
++ # Microsoft Visual C++.
++ if test "$GCC" != yes; then
++ with_gnu_ld=no
++ fi
++ ;;
++ openbsd*)
++ with_gnu_ld=no
++ ;;
++ esac
++
++ ld_shlibs_F77=yes
++ if test "$with_gnu_ld" = yes; then
++ # If archive_cmds runs LD, not CC, wlarc should be empty
++ wlarc='${wl}'
++
++ # See if GNU ld supports shared libraries.
++ case $host_os in
++ aix3* | aix4* | aix5*)
++ # On AIX/PPC, the GNU linker is very broken
++ if test "$host_cpu" != ia64; then
++ ld_shlibs_F77=no
++ cat <<EOF 1>&2
++
++*** Warning: the GNU linker, at least up to release 2.9.1, is reported
++*** to be unable to reliably create shared libraries on AIX.
++*** Therefore, libtool is disabling shared libraries support. If you
++*** really care for shared libraries, you may want to modify your PATH
++*** so that a non-GNU linker is found, and then restart.
++
++EOF
+ fi
+ ;;
+
+- irix5* | irix6* | nonstopux*)
+- if test "$GCC" = yes; then
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- else
+- archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+- hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+- fi
+- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
+- link_all_deplibs_F77=yes
++ amigaos*)
++ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_minus_L_F77=yes
++
++ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
++ # that the semantics of dynamic libraries on AmigaOS, at least up
++ # to version 4, is to share data among multiple programs linked
++ # with the same dynamic library. Since this doesn't match the
++ # behavior of shared libraries on other platforms, we can't use
++ # them.
++ ld_shlibs_F77=no
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
++ beos*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ allow_undefined_flag_F77=unsupported
++ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
++ # support --undefined. This deserves some investigation. FIXME
++ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+- archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
++ ld_shlibs_F77=no
+ fi
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
+ ;;
+
+- newsos6)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_F77=yes
+- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
+- hardcode_shlibpath_var_F77=no
+- ;;
+-
+- openbsd*)
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_F77='${wl}-E'
+- else
+- case $host_os in
+- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- ;;
+- *)
+- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+- ;;
+- esac
+- fi
+- ;;
+-
+- os2*)
++ cygwin* | mingw* | pw32*)
++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
++ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_minus_L_F77=yes
+ allow_undefined_flag_F77=unsupported
+- archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+- old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+- ;;
++ always_export_symbols_F77=no
++ enable_shared_with_static_runtimes_F77=yes
++ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+- osf3*)
+- if test "$GCC" = yes; then
+- allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
++ # If the export-symbols file already is a .def file (1st line
++ # is EXPORTS), use it as is; otherwise, prepend...
++ archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ cp $export_symbols $output_objdir/$soname.def;
++ else
++ echo EXPORTS > $output_objdir/$soname.def;
++ cat $export_symbols >> $output_objdir/$soname.def;
++ fi~
++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+- allow_undefined_flag_F77=' -expect_unresolved \*'
+- archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ ld_shlibs=no
+ fi
+- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
+ ;;
+
+- osf4* | osf5*) # as osf3* with the addition of -msym flag
+- if test "$GCC" = yes; then
+- allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ netbsd*)
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
++ wlarc=
+ else
+- allow_undefined_flag_F77=' -expect_unresolved \*'
+- archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+- archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+-
+- # Both c and cxx compiler support -rpath directly
+- hardcode_libdir_flag_spec_F77='-rpath $libdir'
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+- hardcode_libdir_separator_F77=:
+ ;;
+
+- solaris*)
+- no_undefined_flag_F77=' -z text'
+- if test "$GCC" = yes; then
+- wlarc='${wl}'
+- archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
++ solaris* | sysv5*)
++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
++ ld_shlibs_F77=no
++ cat <<EOF 1>&2
++
++*** Warning: The releases 2.8.* of the GNU linker cannot reliably
++*** create shared libraries on Solaris systems. Therefore, libtool
++*** is disabling shared libraries support. We urge you to upgrade GNU
++*** binutils to release 2.9.1 or newer. Another option is to modify
++*** your PATH or compiler configuration so that the native linker is
++*** used, and then restart.
++
++EOF
++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+- wlarc=''
+- archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ ld_shlibs_F77=no
+ fi
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- hardcode_shlibpath_var_F77=no
+- case $host_os in
+- solaris2.[0-5] | solaris2.[0-5].*) ;;
+- *)
+- # The compiler driver will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl, iff we do not link with $LD.
+- # Luckily, gcc supports the same syntax we need for Sun Studio.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- case $wlarc in
+- '')
+- whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+- *)
+- whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+- esac ;;
+- esac
+- link_all_deplibs_F77=yes
+ ;;
+
+ sunos4*)
+- if test "x$host_vendor" = xsequent; then
+- # Use $CC to link under sequent, because it throws in some extra .o
+- # files that make .init and .fini sections work.
+- archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- hardcode_libdir_flag_spec_F77='-L$libdir'
++ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ wlarc=
+ hardcode_direct_F77=yes
+- hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+- sysv4)
+- case $host_vendor in
+- sni)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_F77=yes # is this really true???
+- ;;
+- siemens)
+- ## LD is ld it makes a PLAMLIB
+- ## CC just makes a GrossModule.
+- archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+- reload_cmds_F77='$CC -r -o $output$reload_objs'
+- hardcode_direct_F77=no
+- ;;
+- motorola)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+- ;;
++ linux*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_cmds_F77="$tmp_archive_cmds"
++ supports_anon_versioning=no
++ case `$LD -v 2>/dev/null` in
++ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
++ *\ 2.11.*) ;; # other 2.11 versions
++ *) supports_anon_versioning=yes ;;
+ esac
+- runpath_var='LD_RUN_PATH'
+- hardcode_shlibpath_var_F77=no
+- ;;
++ if test $supports_anon_versioning = yes; then
++ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ archive_expsym_cmds_F77="$tmp_archive_cmds"
++ fi
++ else
++ ld_shlibs_F77=no
++ fi
++ ;;
+
+- sysv4.3*)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_shlibpath_var_F77=no
+- export_dynamic_flag_spec_F77='-Bexport'
++ *)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ else
++ ld_shlibs_F77=no
++ fi
+ ;;
++ esac
+
+- sysv4*MP*)
+- if test -d /usr/nec; then
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_shlibpath_var_F77=no
+- runpath_var=LD_RUN_PATH
+- hardcode_runpath_var=yes
+- ld_shlibs_F77=yes
++ if test "$ld_shlibs_F77" = yes; then
++ runpath_var=LD_RUN_PATH
++ hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
++ export_dynamic_flag_spec_F77='${wl}--export-dynamic'
++ # ancient GNU ld didn't support --whole-archive et. al.
++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
++ whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
++ else
++ whole_archive_flag_spec_F77=
++ fi
++ fi
++ else
++ # PORTME fill in a description of your system's linker (not GNU ld)
++ case $host_os in
++ aix3*)
++ allow_undefined_flag_F77=unsupported
++ always_export_symbols_F77=yes
++ archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
++ # Note: this linker hardcodes the directories in LIBPATH if there
++ # are no directories specified by -L.
++ hardcode_minus_L_F77=yes
++ if test "$GCC" = yes && test -z "$link_static_flag"; then
++ # Neither direct hardcoding nor static linking is supported with a
++ # broken collect2.
++ hardcode_direct_F77=unsupported
+ fi
+ ;;
+
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+- no_undefined_flag_F77='${wl}-z,text'
+- archive_cmds_need_lc_F77=no
+- hardcode_shlibpath_var_F77=no
+- runpath_var='LD_RUN_PATH'
+-
+- if test "$GCC" = yes; then
+- archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ aix4* | aix5*)
++ if test "$host_cpu" = ia64; then
++ # On IA64, the linker does run time linking by default, so we don't
++ # have to do anything special.
++ aix_use_runtimelinking=no
++ exp_sym_flag='-Bexport'
++ no_entry_flag=""
+ else
+- archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ # If we're using GNU nm, then we don't want the "-C" option.
++ # -C means demangle to AIX nm, but means don't demangle with GNU nm
++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
++ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
++ else
++ export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
++ fi
++ aix_use_runtimelinking=no
++
++ # Test if we are trying to use run time linking or normal
++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
++ # need to do runtime linking.
++ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
++ for ld_flag in $LDFLAGS; do
++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
++ aix_use_runtimelinking=yes
++ break
++ fi
++ done
++ esac
++
++ exp_sym_flag='-bexport'
++ no_entry_flag='-bnoentry'
+ fi
+- ;;
+
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- no_undefined_flag_F77='${wl}-z,text'
+- allow_undefined_flag_F77='${wl}-z,nodefs'
+- archive_cmds_need_lc_F77=no
+- hardcode_shlibpath_var_F77=no
+- hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
++ # When large executables or shared objects are built, AIX ld can
++ # have problems creating the table of contents. If linking a library
++ # or program results in "error TOC overflow" add -mminimal-toc to
++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
++
++ archive_cmds_F77=''
++ hardcode_direct_F77=yes
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+- export_dynamic_flag_spec_F77='${wl}-Bexport'
+- runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+- archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ case $host_os in aix4.012|aix4.012.*)
++ # We only want to do this on AIX 4.2 and lower, the check
++ # below for broken collect2 doesn't work under 4.3+
++ collect2name=`${CC} -print-prog-name=collect2`
++ if test -f "$collect2name" && \
++ strings "$collect2name" | grep resolve_lib_name >/dev/null
++ then
++ # We have reworked collect2
++ hardcode_direct_F77=yes
++ else
++ # We have old collect2
++ hardcode_direct_F77=unsupported
++ # It fails to find uninstalled libraries when the uninstalled
++ # path is not listed in the libpath. Setting hardcode_minus_L
++ # to unsupported forces relinking
++ hardcode_minus_L_F77=yes
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_libdir_separator_F77=
++ fi
++ esac
++ shared_flag='-shared'
+ else
+- archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ # not using gcc
++ if test "$host_cpu" = ia64; then
++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
++ # chokes on -Wl,-G. The following line is correct:
++ shared_flag='-G'
++ else
++ if test "$aix_use_runtimelinking" = yes; then
++ shared_flag='${wl}-G'
++ else
++ shared_flag='${wl}-bM:SRE'
++ fi
++ fi
+ fi
+- ;;
+
+- uts4*)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_shlibpath_var_F77=no
+- ;;
++ # It seems that -bexpall does not export symbols beginning with
++ # underscore (_), so it is better to generate a list of symbols to export.
++ always_export_symbols_F77=yes
++ if test "$aix_use_runtimelinking" = yes; then
++ # Warning - without using the other runtime loading flags (-brtl),
++ # -berok will link without error, but may produce a broken library.
++ allow_undefined_flag_F77='-berok'
++ # Determine the default libpath from the value encoded in an empty executable.
++ cat >conftest.$ac_ext <<_ACEOF
++ program main
+
+- *)
+- ld_shlibs_F77=no
+- ;;
+- esac
+- fi
++ end
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_f77_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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
+
+-{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+-echo "${ECHO_T}$ld_shlibs_F77" >&6; }
+-test "$ld_shlibs_F77" = no && can_build_shared=no
++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`
++# Check for a 64-bit object if we didn't find anything.
++if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`; fi
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-#
+-# Do we need to explicitly link libc?
+-#
+-case "x$archive_cmds_need_lc_F77" in
+-x|xyes)
+- # Assume -lc should be added
+- archive_cmds_need_lc_F77=yes
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+- if test "$enable_shared" = yes && test "$GCC" = yes; then
+- case $archive_cmds_F77 in
+- *'~'*)
+- # FIXME: we may have to deal with multi-command sequences.
+- ;;
+- '$CC '*)
+- # Test whether the compiler implicitly links with -lc since on some
+- # systems, -lgcc has to come before -lc. If gcc already passes -lc
+- # to ld, don't add -lc before -lgcc.
+- { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+- $rm conftest*
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
++ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ else
++ if test "$host_cpu" = ia64; then
++ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
++ allow_undefined_flag_F77="-z nodefs"
++ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
++ else
++ # Determine the default libpath from the value encoded in an empty executable.
++ cat >conftest.$ac_ext <<_ACEOF
++ program main
+
+- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
++ end
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } 2>conftest.err; then
+- soname=conftest
+- lib=conftest
+- libobjs=conftest.$ac_objext
+- deplibs=
+- wl=$lt_prog_compiler_wl_F77
+- pic_flag=$lt_prog_compiler_pic_F77
+- compiler_flags=-v
+- linker_flags=-v
+- verstring=
+- output_objdir=.
+- libname=conftest
+- lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+- allow_undefined_flag_F77=
+- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+- (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
++ (exit $ac_status); } &&
++ { ac_try='test -z "$ac_f77_werror_flag"
++ || test ! -s conftest.err'
++ { (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
+- archive_cmds_need_lc_F77=no
+- else
+- archive_cmds_need_lc_F77=yes
+- fi
+- allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+- else
+- cat conftest.err 1>&5
+- fi
+- $rm conftest*
+- { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+-echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; }
+- ;;
+- esac
+- fi
+- ;;
+-esac
++ (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
+
+-{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+-library_names_spec=
+-libname_spec='lib$name'
+-soname_spec=
+-shrext_cmds=".so"
+-postinstall_cmds=
+-postuninstall_cmds=
+-finish_cmds=
+-finish_eval=
+-shlibpath_var=
+-shlibpath_overrides_runpath=unknown
+-version_type=none
+-dynamic_linker="$host_os ld.so"
+-sys_lib_dlsearch_path_spec="/lib /usr/lib"
+-if test "$GCC" = yes; then
+- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+- # if the path contains ";" then we assume it to be the separator
+- # otherwise default to the standard path separator (i.e. ":") - it is
+- # assumed that no part of a normal pathname contains ";" but that should
+- # okay in the real world where ";" in dirpaths is itself problematic.
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+- else
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+- fi
++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`
++# Check for a 64-bit object if we didn't find anything.
++if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`; fi
+ else
+- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+-fi
+-need_lib_prefix=unknown
+-hardcode_into_libs=no
+-
+-# when you set need_version to no, make sure it does not cause -set_version
+-# flags to be left without arguments
+-need_version=unknown
+-
+-case $host_os in
+-aix3*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+- shlibpath_var=LIBPATH
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+- # AIX 3 has no versioning support, so we append a major version to the name.
+- soname_spec='${libname}${release}${shared_ext}$major'
+- ;;
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+-aix4* | aix5*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- hardcode_into_libs=yes
+- if test "$host_cpu" = ia64; then
+- # AIX 5 supports IA64
+- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- else
+- # With GCC up to 2.95.x, collect2 would create an import file
+- # for dependence libraries. The import file would start with
+- # the line `#! .'. This would cause the generated library to
+- # depend on `.', always an invalid library. This was fixed in
+- # development snapshots of GCC prior to 3.0.
+- case $host_os in
+- aix4 | aix4.[01] | aix4.[01].*)
+- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+- echo ' yes '
+- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+- :
+- else
+- can_build_shared=no
++ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
++ # Warning - without using the other run time loading flags,
++ # -berok will link without error, but may produce a broken library.
++ no_undefined_flag_F77=' ${wl}-bernotok'
++ allow_undefined_flag_F77=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ always_export_symbols_F77=yes
++ # Exported symbols can be pulled into shared objects from archives
++ whole_archive_flag_spec_F77=' '
++ archive_cmds_need_lc_F77=yes
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ fi
+ fi
+ ;;
+- esac
+- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+- # soname into executable. Probably we can add versioning support to
+- # collect2, so additional links can be useful in future.
+- if test "$aix_use_runtimelinking" = yes; then
+- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+- # instead of lib<name>.a to let people know that these are not
+- # typical AIX shared libraries.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- else
+- # We preserve .a as extension for shared libraries through AIX4.2
+- # and later when we are not doing run time linking.
+- library_names_spec='${libname}${release}.a $libname.a'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- fi
+- shlibpath_var=LIBPATH
+- fi
+- ;;
+-
+-amigaos*)
+- library_names_spec='$libname.ixlibrary $libname.a'
+- # Create ${libname}_ixlibrary.a entries in /sys/libs.
+- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+- ;;
+
+-beos*)
+- library_names_spec='${libname}${shared_ext}'
+- dynamic_linker="$host_os ld.so"
+- shlibpath_var=LIBRARY_PATH
+- ;;
++ amigaos*)
++ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_minus_L_F77=yes
++ # see comment about different semantics on the GNU ld section
++ ld_shlibs_F77=no
++ ;;
+
+-bsdi[45]*)
+- version_type=linux
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+- # the default ld.so.conf also contains /usr/contrib/lib and
+- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+- # libtool to hard-code these into programs
+- ;;
++ bsdi4*)
++ export_dynamic_flag_spec_F77=-rdynamic
++ ;;
+
+-cygwin* | mingw* | pw32*)
+- version_type=windows
+- shrext_cmds=".dll"
+- need_version=no
+- need_lib_prefix=no
++ cygwin* | mingw* | pw32*)
++ # When not using gcc, we currently assume that we are using
++ # Microsoft Visual C++.
++ # hardcode_libdir_flag_spec is actually meaningless, as there is
++ # no search path for DLLs.
++ hardcode_libdir_flag_spec_F77=' '
++ allow_undefined_flag_F77=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_From_new_cmds_F77='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
++ fix_srcfile_path='`cygpath -w "$srcfile"`'
++ enable_shared_with_static_runtimes_F77=yes
++ ;;
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32*)
+- library_names_spec='$libname.dll.a'
+- # DLL is installed to $(libdir)/../bin by postinstall_cmds
+- postinstall_cmds='base_file=`basename \${file}`~
+- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+- dldir=$destdir/`dirname \$dlpath`~
+- test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
+- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+- dlpath=$dir/\$dldll~
+- $rm \$dlpath'
+- shlibpath_overrides_runpath=yes
++ darwin* | rhapsody*)
++ if test "$GXX" = yes ; then
++ archive_cmds_need_lc_F77=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag_F77='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag_F77='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag_F77='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag_F77='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ archive_cmds_F77='$CC -r ${wl}-bind_at_load -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'
++ fi
++ module_cmds_F77='$CC ${wl}-bind_at_load $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
++ archive_expsym_cmds_F77='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}'
++ else
++ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ fi
++ module_expsym_cmds_F77='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}'
++ hardcode_direct_F77=no
++ hardcode_automatic_F77=yes
++ hardcode_shlibpath_var_F77=unsupported
++ whole_archive_flag_spec_F77='-all_load $convenience'
++ link_all_deplibs_F77=yes
++ else
++ ld_shlibs_F77=no
++ fi
++ ;;
+
+- case $host_os in
+- cygwin*)
+- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
++ dgux*)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_shlibpath_var_F77=no
+ ;;
+- mingw*)
+- # MinGW DLLs use traditional 'lib' prefix
+- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+- # It is most probably a Windows format PATH printed by
+- # mingw gcc, but we are running on Cygwin. Gcc prints its search
+- # path with ; separators, and with drive letters. We can handle the
+- # drive letters (cygwin fileutils understands them), so leave them,
+- # especially as we might pass files found there to a mingw objdump,
+- # which wouldn't understand a cygwinified path. Ahh.
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+- else
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+- fi
++
++ freebsd1*)
++ ld_shlibs_F77=no
+ ;;
+- pw32*)
+- # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++
++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
++ # support. Future versions do this automatically, but an explicit c++rt0.o
++ # does not break anything, and helps significantly (at the cost of a little
++ # extra space).
++ freebsd2.2*)
++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ hardcode_direct_F77=yes
++ hardcode_shlibpath_var_F77=no
+ ;;
+- esac
+- ;;
+
+- *)
+- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+- ;;
+- esac
+- dynamic_linker='Win32 ld.exe'
+- # FIXME: first we should search . and the directory the executable is in
+- shlibpath_var=PATH
+- ;;
++ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
++ freebsd2*)
++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=yes
++ hardcode_minus_L_F77=yes
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-darwin* | rhapsody*)
+- dynamic_linker="$host_os dyld"
+- version_type=darwin
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+- soname_spec='${libname}${release}${major}$shared_ext'
+- shlibpath_overrides_runpath=yes
+- shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+- if test "$GCC" = yes; then
+- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+- else
+- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+- fi
+- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+- ;;
++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
++ freebsd* | kfreebsd*-gnu)
++ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ hardcode_direct_F77=yes
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-dgux*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
++ hpux9*)
++ if test "$GCC" = yes; then
++ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ else
++ archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ fi
++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ hardcode_direct_F77=yes
+
+-freebsd1*)
+- dynamic_linker=no
+- ;;
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_F77=yes
++ export_dynamic_flag_spec_F77='${wl}-E'
++ ;;
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[123]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
+- version_type=freebsd-$objformat
+- case $version_type in
+- freebsd-elf*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- need_version=no
+- need_lib_prefix=no
++ hpux10* | hpux11*)
++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ ;;
++ *)
++ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ ;;
++ esac
++ else
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
++ ;;
++ *)
++ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
++ ;;
++ esac
++ fi
++ if test "$with_gnu_ld" = no; then
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
++ hardcode_libdir_flag_spec_ld_F77='+b $libdir'
++ hardcode_libdir_separator_F77=:
++ hardcode_direct_F77=no
++ hardcode_shlibpath_var_F77=no
++ ;;
++ ia64*)
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_direct_F77=no
++ hardcode_shlibpath_var_F77=no
++
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_F77=yes
++ ;;
++ *)
++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ hardcode_direct_F77=yes
++ export_dynamic_flag_spec_F77='${wl}-E'
++
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_F77=yes
++ ;;
++ esac
++ fi
+ ;;
+- freebsd-*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+- need_version=yes
++
++ irix5* | irix6* | nonstopux*)
++ if test "$GCC" = yes; then
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ else
++ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
++ fi
++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ link_all_deplibs_F77=yes
+ ;;
+- esac
+- shlibpath_var=LD_LIBRARY_PATH
+- case $host_os in
+- freebsd2*)
+- shlibpath_overrides_runpath=yes
+- ;;
+- freebsd3.[01]* | freebsdelf3.[01]*)
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+- esac
+- ;;
+
+-gnu*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- ;;
++ netbsd*)
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
++ else
++ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
++ fi
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ hardcode_direct_F77=yes
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-hpux9* | hpux10* | hpux11*)
+- # Give a soname corresponding to the major version so that dld.sl refuses to
+- # link against other versions.
++ newsos6)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=yes
++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ hardcode_shlibpath_var_F77=no
++ ;;
++
++ openbsd*)
++ hardcode_direct_F77=yes
++ hardcode_shlibpath_var_F77=no
++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
++ export_dynamic_flag_spec_F77='${wl}-E'
++ else
++ case $host_os in
++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ ;;
++ *)
++ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
++ ;;
++ esac
++ fi
++ ;;
++
++ os2*)
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_minus_L_F77=yes
++ allow_undefined_flag_F77=unsupported
++ archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
++ old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
++ ;;
++
++ osf3*)
++ if test "$GCC" = yes; then
++ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
++ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ else
++ allow_undefined_flag_F77=' -expect_unresolved \*'
++ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ fi
++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ ;;
++
++ osf4* | osf5*) # as osf3* with the addition of -msym flag
++ if test "$GCC" = yes; then
++ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
++ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ else
++ allow_undefined_flag_F77=' -expect_unresolved \*'
++ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
++
++ # Both c and cxx compiler support -rpath directly
++ hardcode_libdir_flag_spec_F77='-rpath $libdir'
++ fi
++ hardcode_libdir_separator_F77=:
++ ;;
++
++ sco3.2v5*)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_F77=no
++ export_dynamic_flag_spec_F77='${wl}-Bexport'
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ;;
++
++ solaris*)
++ no_undefined_flag_F77=' -z text'
++ if test "$GCC" = yes; then
++ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
++ else
++ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ fi
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ hardcode_shlibpath_var_F77=no
++ case $host_os in
++ solaris2.[0-5] | solaris2.[0-5].*) ;;
++ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
++ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
++ esac
++ link_all_deplibs_F77=yes
++ ;;
++
++ sunos4*)
++ if test "x$host_vendor" = xsequent; then
++ # Use $CC to link under sequent, because it throws in some extra .o
++ # files that make .init and .fini sections work.
++ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
++ else
++ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
++ fi
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_direct_F77=yes
++ hardcode_minus_L_F77=yes
++ hardcode_shlibpath_var_F77=no
++ ;;
++
++ sysv4)
++ case $host_vendor in
++ sni)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=yes # is this really true???
++ ;;
++ siemens)
++ ## LD is ld it makes a PLAMLIB
++ ## CC just makes a GrossModule.
++ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ reload_cmds_F77='$CC -r -o $output$reload_objs'
++ hardcode_direct_F77=no
++ ;;
++ motorola)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
++ ;;
++ esac
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var_F77=no
++ ;;
++
++ sysv4.3*)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_F77=no
++ export_dynamic_flag_spec_F77='-Bexport'
++ ;;
++
++ sysv4*MP*)
++ if test -d /usr/nec; then
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_F77=no
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ld_shlibs_F77=yes
++ fi
++ ;;
++
++ sysv4.2uw2*)
++ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=yes
++ hardcode_minus_L_F77=no
++ hardcode_shlibpath_var_F77=no
++ hardcode_runpath_var=yes
++ runpath_var=LD_RUN_PATH
++ ;;
++
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
++ no_undefined_flag_F77='${wl}-z ${wl}text'
++ if test "$GCC" = yes; then
++ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ else
++ archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ fi
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var_F77=no
++ ;;
++
++ sysv5*)
++ no_undefined_flag_F77=' -z text'
++ # $CC -shared without GNU ld will not create a library from C++
++ # object files and a static libstdc++, better avoid it by now
++ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ hardcode_libdir_flag_spec_F77=
++ hardcode_shlibpath_var_F77=no
++ runpath_var='LD_RUN_PATH'
++ ;;
++
++ uts4*)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_shlibpath_var_F77=no
++ ;;
++
++ *)
++ ld_shlibs_F77=no
++ ;;
++ esac
++ fi
++
++echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
++echo "${ECHO_T}$ld_shlibs_F77" >&6
++test "$ld_shlibs_F77" = no && can_build_shared=no
++
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
++
++#
++# Do we need to explicitly link libc?
++#
++case "x$archive_cmds_need_lc_F77" in
++x|xyes)
++ # Assume -lc should be added
++ archive_cmds_need_lc_F77=yes
++
++ if test "$enable_shared" = yes && test "$GCC" = yes; then
++ case $archive_cmds_F77 in
++ *'~'*)
++ # FIXME: we may have to deal with multi-command sequences.
++ ;;
++ '$CC '*)
++ # Test whether the compiler implicitly links with -lc since on some
++ # systems, -lgcc has to come before -lc. If gcc already passes -lc
++ # to ld, don't add -lc before -lgcc.
++ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
++ $rm conftest*
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++
++ 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); } 2>conftest.err; then
++ soname=conftest
++ lib=conftest
++ libobjs=conftest.$ac_objext
++ deplibs=
++ wl=$lt_prog_compiler_wl_F77
++ compiler_flags=-v
++ linker_flags=-v
++ verstring=
++ output_objdir=.
++ libname=conftest
++ lt_save_allow_undefined_flag=$allow_undefined_flag_F77
++ allow_undefined_flag_F77=
++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
++ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++ then
++ archive_cmds_need_lc_F77=no
++ else
++ archive_cmds_need_lc_F77=yes
++ fi
++ allow_undefined_flag_F77=$lt_save_allow_undefined_flag
++ else
++ cat conftest.err 1>&5
++ fi
++ $rm conftest*
++ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
++echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
++ ;;
++ esac
++ fi
++ ;;
++esac
++
++echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
++library_names_spec=
++libname_spec='lib$name'
++soname_spec=
++shrext_cmds=".so"
++postinstall_cmds=
++postuninstall_cmds=
++finish_cmds=
++finish_eval=
++shlibpath_var=
++shlibpath_overrides_runpath=unknown
++version_type=none
++dynamic_linker="$host_os ld.so"
++sys_lib_dlsearch_path_spec="/lib /usr/lib"
++if test "$GCC" = yes; then
++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
++ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
++ # if the path contains ";" then we assume it to be the separator
++ # otherwise default to the standard path separator (i.e. ":") - it is
++ # assumed that no part of a normal pathname contains ";" but that should
++ # okay in the real world where ";" in dirpaths is itself problematic.
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++else
++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
++fi
++need_lib_prefix=unknown
++hardcode_into_libs=no
++
++# when you set need_version to no, make sure it does not cause -set_version
++# flags to be left without arguments
++need_version=unknown
++
++case $host_os in
++aix3*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
++ shlibpath_var=LIBPATH
++
++ # AIX 3 has no versioning support, so we append a major version to the name.
++ soname_spec='${libname}${release}${shared_ext}$major'
++ ;;
++
++aix4* | aix5*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ hardcode_into_libs=yes
++ if test "$host_cpu" = ia64; then
++ # AIX 5 supports IA64
++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ else
++ # With GCC up to 2.95.x, collect2 would create an import file
++ # for dependence libraries. The import file would start with
++ # the line `#! .'. This would cause the generated library to
++ # depend on `.', always an invalid library. This was fixed in
++ # development snapshots of GCC prior to 3.0.
++ case $host_os in
++ aix4 | aix4.[01] | aix4.[01].*)
++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
++ echo ' yes '
++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
++ :
++ else
++ can_build_shared=no
++ fi
++ ;;
++ esac
++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
++ # soname into executable. Probably we can add versioning support to
++ # collect2, so additional links can be useful in future.
++ if test "$aix_use_runtimelinking" = yes; then
++ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
++ # instead of lib<name>.a to let people know that these are not
++ # typical AIX shared libraries.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ else
++ # We preserve .a as extension for shared libraries through AIX4.2
++ # and later when we are not doing run time linking.
++ library_names_spec='${libname}${release}.a $libname.a'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ fi
++ shlibpath_var=LIBPATH
++ fi
++ ;;
++
++amigaos*)
++ library_names_spec='$libname.ixlibrary $libname.a'
++ # Create ${libname}_ixlibrary.a entries in /sys/libs.
++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
++ ;;
++
++beos*)
++ library_names_spec='${libname}${shared_ext}'
++ dynamic_linker="$host_os ld.so"
++ shlibpath_var=LIBRARY_PATH
++ ;;
++
++bsdi4*)
++ version_type=linux
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
++ # the default ld.so.conf also contains /usr/contrib/lib and
++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
++ # libtool to hard-code these into programs
++ ;;
++
++cygwin* | mingw* | pw32*)
++ version_type=windows
++ shrext_cmds=".dll"
++ need_version=no
++ need_lib_prefix=no
++
++ case $GCC,$host_os in
++ yes,cygwin* | yes,mingw* | yes,pw32*)
++ library_names_spec='$libname.dll.a'
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $rm \$dlpath'
++ shlibpath_overrides_runpath=yes
++
++ case $host_os in
++ cygwin*)
++ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
++ ;;
++ mingw*)
++ # MinGW DLLs use traditional 'lib' prefix
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH printed by
++ # mingw gcc, but we are running on Cygwin. Gcc prints its search
++ # path with ; separators, and with drive letters. We can handle the
++ # drive letters (cygwin fileutils understands them), so leave them,
++ # especially as we might pass files found there to a mingw objdump,
++ # which wouldn't understand a cygwinified path. Ahh.
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ ;;
++ pw32*)
++ # pw32 DLLs use 'pw' prefix rather than 'lib'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
++ ;;
++ esac
++ ;;
++
++ *)
++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ ;;
++ esac
++ dynamic_linker='Win32 ld.exe'
++ # FIXME: first we should search . and the directory the executable is in
++ shlibpath_var=PATH
++ ;;
++
++darwin* | rhapsody*)
++ dynamic_linker="$host_os dyld"
++ version_type=darwin
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
++ soname_spec='${libname}${release}${major}$shared_ext'
++ shlibpath_overrides_runpath=yes
++ shlibpath_var=DYLD_LIBRARY_PATH
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
++ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
++ if test "$GCC" = yes; then
++ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
++ else
++ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
++ fi
++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
++ ;;
++
++dgux*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
++freebsd1*)
++ dynamic_linker=no
++ ;;
++
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
++ version_type=freebsd-$objformat
++ case $version_type in
++ freebsd-elf*)
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
++ need_version=no
++ need_lib_prefix=no
++ ;;
++ freebsd-*)
++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
++ need_version=yes
++ ;;
++ esac
++ shlibpath_var=LD_LIBRARY_PATH
++ case $host_os in
++ freebsd2*)
++ shlibpath_overrides_runpath=yes
++ ;;
++ freebsd3.01* | freebsdelf3.01*)
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ ;;
++ *) # from 3.2 on
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ ;;
++ esac
++ ;;
++
++gnu*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ hardcode_into_libs=yes
++ ;;
++
++hpux9* | hpux10* | hpux11*)
++ # Give a soname corresponding to the major version so that dld.sl refuses to
++ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+- case $host_cpu in
+- ia64*)
+- shrext_cmds='.so'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.so"
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- if test "X$HPUX_IA64_MODE" = X32; then
+- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+- else
+- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
++ case "$host_cpu" in
++ ia64*)
++ shrext_cmds='.so'
++ hardcode_into_libs=yes
++ dynamic_linker="$host_os dld.so"
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ if test "X$HPUX_IA64_MODE" = X32; then
++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
++ else
++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
++ fi
++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
++ ;;
++ hppa*64*)
++ shrext_cmds='.sl'
++ hardcode_into_libs=yes
++ dynamic_linker="$host_os dld.sl"
++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
++ ;;
++ *)
++ shrext_cmds='.sl'
++ dynamic_linker="$host_os dld.sl"
++ shlibpath_var=SHLIB_PATH
++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ ;;
++ esac
++ # HP-UX runs *really* slowly unless shared libraries are mode 555.
++ postinstall_cmds='chmod 555 $lib'
++ ;;
++
++irix5* | irix6* | nonstopux*)
++ case $host_os in
++ nonstopux*) version_type=nonstopux ;;
++ *)
++ if test "$lt_cv_prog_gnu_ld" = yes; then
++ version_type=linux
++ else
++ version_type=irix
++ fi ;;
++ esac
++ need_lib_prefix=no
++ need_version=no
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
++ case $host_os in
++ irix5* | nonstopux*)
++ libsuff= shlibsuff=
++ ;;
++ *)
++ case $LD in # libtool.m4 will add one of these switches to LD
++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
++ libsuff= shlibsuff= libmagic=32-bit;;
++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
++ libsuff=32 shlibsuff=N32 libmagic=N32;;
++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
++ libsuff=64 shlibsuff=64 libmagic=64-bit;;
++ *) libsuff= shlibsuff= libmagic=never-match;;
++ esac
++ ;;
++ esac
++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
++ shlibpath_overrides_runpath=no
++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
++ hardcode_into_libs=yes
++ ;;
++
++# No shared lib support for Linux oldld, aout, or coff.
++linux*oldld* | linux*aout* | linux*coff*)
++ dynamic_linker=no
++ ;;
++
++# This must be Linux ELF.
++linux*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ # This implies no fast_install, which is unacceptable.
++ # Some rework will be needed to allow for fast_install
++ # before this can be enabled.
++ hardcode_into_libs=yes
++
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '#line 14998 "configure"' > conftest.$ac_ext
++ 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
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
+ fi
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
++ rm -rf conftest*
+ ;;
+- hppa*64*)
+- shrext_cmds='.sl'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+- ;;
++ esac
++
++ # Append ld.so.conf contents to the search path
++ if test -f /etc/ld.so.conf; then
++ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
++ fi
++
++ # We used to test for /lib/ld.so.1 and disable shared libraries on
++ # powerpc, because MkLinux only supported shared libraries with the
++ # GNU dynamic linker. Since this was broken with cross compilers,
++ # most powerpc-linux boxes support dynamic linking these days and
++ # people can always --disable-shared, the test was removed, and we
++ # assume the GNU/Linux dynamic linker is in use.
++ dynamic_linker='GNU/Linux ld.so'
++ ;;
++
++knetbsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++netbsd*)
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=no
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
++ dynamic_linker='NetBSD (a.out) ld.so'
++ else
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ dynamic_linker='NetBSD ld.elf_so'
++ fi
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ ;;
++
++newsos6)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ ;;
++
++nto-qnx*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ ;;
++
++openbsd*)
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=yes
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++ case $host_os in
++ openbsd2.[89] | openbsd2.[89].*)
++ shlibpath_overrides_runpath=no
++ ;;
++ *)
++ shlibpath_overrides_runpath=yes
++ ;;
++ esac
++ else
++ shlibpath_overrides_runpath=yes
++ fi
++ ;;
++
++os2*)
++ libname_spec='$name'
++ shrext_cmds=".dll"
++ need_lib_prefix=no
++ library_names_spec='$libname${shared_ext} $libname.a'
++ dynamic_linker='OS/2 ld.exe'
++ shlibpath_var=LIBPATH
++ ;;
++
++osf3* | osf4* | osf5*)
++ version_type=osf
++ need_lib_prefix=no
++ need_version=no
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
++ ;;
++
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
++solaris*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ # ldd complains unless libraries are executable
++ postinstall_cmds='chmod +x $lib'
++ ;;
++
++sunos4*)
++ version_type=sunos
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ if test "$with_gnu_ld" = yes; then
++ need_lib_prefix=no
++ fi
++ need_version=yes
++ ;;
++
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ case $host_vendor in
++ sni)
++ shlibpath_overrides_runpath=no
++ need_lib_prefix=no
++ export_dynamic_flag_spec='${wl}-Blargedynsym'
++ runpath_var=LD_RUN_PATH
++ ;;
++ siemens)
++ need_lib_prefix=no
++ ;;
++ motorola)
++ need_lib_prefix=no
++ need_version=no
++ shlibpath_overrides_runpath=no
++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
++ ;;
++ esac
++ ;;
++
++sysv4*MP*)
++ if test -d /usr/nec ;then
++ version_type=linux
++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
++ soname_spec='$libname${shared_ext}.$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ fi
++ ;;
++
++uts4*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
++*)
++ dynamic_linker=no
++ ;;
++esac
++echo "$as_me:$LINENO: result: $dynamic_linker" >&5
++echo "${ECHO_T}$dynamic_linker" >&6
++test "$dynamic_linker" = no && can_build_shared=no
++
++echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
++hardcode_action_F77=
++if test -n "$hardcode_libdir_flag_spec_F77" || \
++ test -n "$runpath_var F77" || \
++ test "X$hardcode_automatic_F77"="Xyes" ; then
++
++ # We can hardcode non-existant directories.
++ if test "$hardcode_direct_F77" != no &&
++ # If the only mechanism to avoid hardcoding is shlibpath_var, we
++ # have to relink, otherwise we might link with an installed library
++ # when we should be linking with a yet-to-be-installed one
++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
++ test "$hardcode_minus_L_F77" != no; then
++ # Linking always hardcodes the temporary library directory.
++ hardcode_action_F77=relink
++ else
++ # We can link without hardcoding, and we can hardcode nonexisting dirs.
++ hardcode_action_F77=immediate
++ fi
++else
++ # We cannot hardcode anything, or else we can only hardcode existing
++ # directories.
++ hardcode_action_F77=unsupported
++fi
++echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
++echo "${ECHO_T}$hardcode_action_F77" >&6
++
++if test "$hardcode_action_F77" = relink; then
++ # Fast installation is not supported
++ enable_fast_install=no
++elif test "$shlibpath_overrides_runpath" = yes ||
++ test "$enable_shared" = no; then
++ # Fast installation is not necessary
++ enable_fast_install=needless
++fi
++
++striplib=
++old_striplib=
++echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
++ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++else
++# FIXME - insert some real tests, host_os isn't really good enough
++ case $host_os in
++ darwin*)
++ if test -n "$STRIP" ; then
++ striplib="$STRIP -x"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++ ;;
+ *)
+- shrext_cmds='.sl'
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=SHLIB_PATH
+- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ ;;
+ esac
+- # HP-UX runs *really* slowly unless shared libraries are mode 555.
+- postinstall_cmds='chmod 555 $lib'
+- ;;
++fi
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+
+-irix5* | irix6* | nonstopux*)
+- case $host_os in
+- nonstopux*) version_type=nonstopux ;;
++
++# The else clause should only fire when bootstrapping the
++# libtool distribution, otherwise you forgot to ship ltmain.sh
++# with your package, and you will get complaints that there are
++# no rules to generate ltmain.sh.
++if test -f "$ltmain"; then
++ # See if we are running on zsh, and set the options which allow our commands through
++ # without removal of \ escapes.
++ if test -n "${ZSH_VERSION+set}" ; then
++ setopt NO_GLOB_SUBST
++ fi
++ # Now quote all the things that may contain metacharacters while being
++ # careful not to overquote the AC_SUBSTed values. We take copies of the
++ # variables and quote the copies for generation of the libtool script.
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
++ SED SHELL STRIP \
++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
++ deplibs_check_method reload_flag reload_cmds need_locks \
++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
++ lt_cv_sys_global_symbol_to_c_name_address \
++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
++ old_postinstall_cmds old_postuninstall_cmds \
++ compiler_F77 \
++ CC_F77 \
++ LD_F77 \
++ lt_prog_compiler_wl_F77 \
++ lt_prog_compiler_pic_F77 \
++ lt_prog_compiler_static_F77 \
++ lt_prog_compiler_no_builtin_flag_F77 \
++ export_dynamic_flag_spec_F77 \
++ thread_safe_flag_spec_F77 \
++ whole_archive_flag_spec_F77 \
++ enable_shared_with_static_runtimes_F77 \
++ old_archive_cmds_F77 \
++ old_archive_from_new_cmds_F77 \
++ predep_objects_F77 \
++ postdep_objects_F77 \
++ predeps_F77 \
++ postdeps_F77 \
++ compiler_lib_search_path_F77 \
++ archive_cmds_F77 \
++ archive_expsym_cmds_F77 \
++ postinstall_cmds_F77 \
++ postuninstall_cmds_F77 \
++ old_archive_from_expsyms_cmds_F77 \
++ allow_undefined_flag_F77 \
++ no_undefined_flag_F77 \
++ export_symbols_cmds_F77 \
++ hardcode_libdir_flag_spec_F77 \
++ hardcode_libdir_flag_spec_ld_F77 \
++ hardcode_libdir_separator_F77 \
++ hardcode_automatic_F77 \
++ module_cmds_F77 \
++ module_expsym_cmds_F77 \
++ lt_cv_prog_compiler_c_o_F77 \
++ exclude_expsyms_F77 \
++ include_expsyms_F77; do
++
++ case $var in
++ old_archive_cmds_F77 | \
++ old_archive_from_new_cmds_F77 | \
++ archive_cmds_F77 | \
++ archive_expsym_cmds_F77 | \
++ module_cmds_F77 | \
++ module_expsym_cmds_F77 | \
++ old_archive_from_expsyms_cmds_F77 | \
++ export_symbols_cmds_F77 | \
++ extract_expsyms_cmds | reload_cmds | finish_cmds | \
++ postinstall_cmds | postuninstall_cmds | \
++ old_postinstall_cmds | old_postuninstall_cmds | \
++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
++ # Double-quote double-evaled strings.
++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
++ ;;
+ *)
+- if test "$lt_cv_prog_gnu_ld" = yes; then
+- version_type=linux
+- else
+- version_type=irix
+- fi ;;
+- esac
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+- case $host_os in
+- irix5* | nonstopux*)
+- libsuff= shlibsuff=
+- ;;
+- *)
+- case $LD in # libtool.m4 will add one of these switches to LD
+- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+- libsuff= shlibsuff= libmagic=32-bit;;
+- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+- libsuff=32 shlibsuff=N32 libmagic=N32;;
+- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+- libsuff=64 shlibsuff=64 libmagic=64-bit;;
+- *) libsuff= shlibsuff= libmagic=never-match;;
++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
++ ;;
+ esac
++ done
++
++ case $lt_echo in
++ *'\$0 --fallback-echo"')
++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+- hardcode_into_libs=yes
+- ;;
+
+-# No shared lib support for Linux oldld, aout, or coff.
+-linux*oldld* | linux*aout* | linux*coff*)
+- dynamic_linker=no
+- ;;
++cfgfile="$ofile"
++
++ cat <<__EOF__ >> "$cfgfile"
++# ### BEGIN LIBTOOL TAG CONFIG: $tagname
++
++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
++
++# Shell to use when invoking shell scripts.
++SHELL=$lt_SHELL
++
++# Whether or not to build shared libraries.
++build_libtool_libs=$enable_shared
++
++# Whether or not to build static libraries.
++build_old_libs=$enable_static
++
++# Whether or not to add -lc for building shared libraries.
++build_libtool_need_lc=$archive_cmds_need_lc_F77
++
++# Whether or not to disallow shared libs when runtime libs are static
++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
++
++# Whether or not to optimize for fast installation.
++fast_install=$enable_fast_install
++
++# The host system.
++host_alias=$host_alias
++host=$host
++
++# An echo program that does not interpret backslashes.
++echo=$lt_echo
++
++# The archiver.
++AR=$lt_AR
++AR_FLAGS=$lt_AR_FLAGS
++
++# A C compiler.
++LTCC=$lt_LTCC
++
++# A language-specific compiler.
++CC=$lt_compiler_F77
++
++# Is the compiler the GNU C compiler?
++with_gcc=$GCC_F77
++
++# An ERE matcher.
++EGREP=$lt_EGREP
++
++# The linker used to build libraries.
++LD=$lt_LD_F77
++
++# Whether we need hard or soft links.
++LN_S=$lt_LN_S
++
++# A BSD-compatible nm program.
++NM=$lt_NM
++
++# A symbol stripping program
++STRIP=$lt_STRIP
++
++# Used to examine libraries when file_magic_cmd begins "file"
++MAGIC_CMD=$MAGIC_CMD
++
++# Used on cygwin: DLL creation program.
++DLLTOOL="$DLLTOOL"
++
++# Used on cygwin: object dumper.
++OBJDUMP="$OBJDUMP"
++
++# Used on cygwin: assembler.
++AS="$AS"
++
++# The name of the directory that contains temporary libtool files.
++objdir=$objdir
++
++# How to create reloadable object files.
++reload_flag=$lt_reload_flag
++reload_cmds=$lt_reload_cmds
++
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl_F77
++
++# Object file suffix (normally "o").
++objext="$ac_objext"
++
++# Old archive suffix (normally "a").
++libext="$libext"
++
++# Shared library suffix (normally ".so").
++shrext_cmds='$shrext_cmds'
++
++# Executable file suffix (normally "").
++exeext="$exeext"
++
++# Additional compiler flags for building library objects.
++pic_flag=$lt_lt_prog_compiler_pic_F77
++pic_mode=$pic_mode
++
++# What is the maximum length of a command?
++max_cmd_len=$lt_cv_sys_max_cmd_len
++
++# Does compiler simultaneously support -c and -o options?
++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
++
++# Must we lock files when doing compilation ?
++need_locks=$lt_need_locks
++
++# Do we need the lib prefix for modules?
++need_lib_prefix=$need_lib_prefix
++
++# Do we need a version for libraries?
++need_version=$need_version
++
++# Whether dlopen is supported.
++dlopen_support=$enable_dlopen
++
++# Whether dlopen of programs is supported.
++dlopen_self=$enable_dlopen_self
++
++# Whether dlopen of statically linked programs is supported.
++dlopen_self_static=$enable_dlopen_self_static
+
+-# This must be Linux ELF.
+-linux* | k*bsd*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- # This implies no fast_install, which is unacceptable.
+- # Some rework will be needed to allow for fast_install
+- # before this can be enabled.
+- hardcode_into_libs=yes
++# Compiler flag to prevent dynamic linking.
++link_static_flag=$lt_lt_prog_compiler_static_F77
+
+- # Append ld.so.conf contents to the search path
+- if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+- fi
++# Compiler flag to turn off builtin functions.
++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+- # We used to test for /lib/ld.so.1 and disable shared libraries on
+- # powerpc, because MkLinux only supported shared libraries with the
+- # GNU dynamic linker. Since this was broken with cross compilers,
+- # most powerpc-linux boxes support dynamic linking these days and
+- # people can always --disable-shared, the test was removed, and we
+- # assume the GNU/Linux dynamic linker is in use.
+- dynamic_linker='GNU/Linux ld.so'
+- ;;
++# Compiler flag to allow reflexive dlopens.
++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+-netbsdelf*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
+- ;;
++# Compiler flag to generate shared objects directly from archives.
++whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+-netbsd*)
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- dynamic_linker='NetBSD (a.out) ld.so'
+- else
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='NetBSD ld.elf_so'
+- fi
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
++# Compiler flag to generate thread-safe objects.
++thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+-newsos6)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- ;;
++# Library versioning type.
++version_type=$version_type
+
+-nto-qnx*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- ;;
++# Format of library name prefix.
++libname_spec=$lt_libname_spec
+
+-openbsd*)
+- version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+- need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- case $host_os in
+- openbsd2.[89] | openbsd2.[89].*)
+- shlibpath_overrides_runpath=no
+- ;;
+- *)
+- shlibpath_overrides_runpath=yes
+- ;;
+- esac
+- else
+- shlibpath_overrides_runpath=yes
+- fi
+- ;;
++# List of archive names. First name is the real one, the rest are links.
++# The last name is the one that the linker finds with -lNAME.
++library_names_spec=$lt_library_names_spec
+
+-os2*)
+- libname_spec='$name'
+- shrext_cmds=".dll"
+- need_lib_prefix=no
+- library_names_spec='$libname${shared_ext} $libname.a'
+- dynamic_linker='OS/2 ld.exe'
+- shlibpath_var=LIBPATH
+- ;;
++# The coded name of the library, if different from the real name.
++soname_spec=$lt_soname_spec
+
+-osf3* | osf4* | osf5*)
+- version_type=osf
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+- ;;
++# Commands used to build and install an old-style archive.
++RANLIB=$lt_RANLIB
++old_archive_cmds=$lt_old_archive_cmds_F77
++old_postinstall_cmds=$lt_old_postinstall_cmds
++old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+-solaris*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- # ldd complains unless libraries are executable
+- postinstall_cmds='chmod +x $lib'
+- ;;
++# Create an old-style archive from a shared archive.
++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+-sunos4*)
+- version_type=sunos
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- if test "$with_gnu_ld" = yes; then
+- need_lib_prefix=no
+- fi
+- need_version=yes
+- ;;
++# Create a temporary old-style archive to link instead of a shared archive.
++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+-sysv4 | sysv4.3*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- case $host_vendor in
+- sni)
+- shlibpath_overrides_runpath=no
+- need_lib_prefix=no
+- export_dynamic_flag_spec='${wl}-Blargedynsym'
+- runpath_var=LD_RUN_PATH
+- ;;
+- siemens)
+- need_lib_prefix=no
+- ;;
+- motorola)
+- need_lib_prefix=no
+- need_version=no
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+- ;;
+- esac
+- ;;
++# Commands used to build and install a shared archive.
++archive_cmds=$lt_archive_cmds_F77
++archive_expsym_cmds=$lt_archive_expsym_cmds_F77
++postinstall_cmds=$lt_postinstall_cmds
++postuninstall_cmds=$lt_postuninstall_cmds
+
+-sysv4*MP*)
+- if test -d /usr/nec ;then
+- version_type=linux
+- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+- soname_spec='$libname${shared_ext}.$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- fi
+- ;;
++# Commands used to build a loadable module (assumed same as above if empty)
++module_cmds=$lt_module_cmds_F77
++module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
+- esac
+- fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
++# Commands to strip libraries.
++old_striplib=$lt_old_striplib
++striplib=$lt_striplib
++
++# Dependencies to place before the objects being linked to create a
++# shared library.
++predep_objects=$lt_predep_objects_F77
++
++# Dependencies to place after the objects being linked to create a
++# shared library.
++postdep_objects=$lt_postdep_objects_F77
++
++# Dependencies to place before the objects being linked to create a
++# shared library.
++predeps=$lt_predeps_F77
++
++# Dependencies to place after the objects being linked to create a
++# shared library.
++postdeps=$lt_postdeps_F77
++
++# The library search path used internally by the compiler when linking
++# a shared library.
++compiler_lib_search_path=$lt_compiler_lib_search_path_F77
++
++# Method to check whether dependent libraries are shared objects.
++deplibs_check_method=$lt_deplibs_check_method
++
++# Command to use when deplibs_check_method == file_magic.
++file_magic_cmd=$lt_file_magic_cmd
++
++# Flag that allows shared libraries with undefined symbols to be built.
++allow_undefined_flag=$lt_allow_undefined_flag_F77
++
++# Flag that forces no undefined symbols.
++no_undefined_flag=$lt_no_undefined_flag_F77
++
++# Commands used to finish a libtool library installation in a directory.
++finish_cmds=$lt_finish_cmds
++
++# Same as above, but a single script fragment to be evaled but not shown.
++finish_eval=$lt_finish_eval
+
+-uts4*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
++# Take the output of nm and produce a listing of raw symbols and C names.
++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+-*)
+- dynamic_linker=no
+- ;;
+-esac
+-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+-echo "${ECHO_T}$dynamic_linker" >&6; }
+-test "$dynamic_linker" = no && can_build_shared=no
++# Transform the output of nm in a proper C declaration
++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+-fi
++# Transform the output of nm in a C name address pair
++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+-{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+-hardcode_action_F77=
+-if test -n "$hardcode_libdir_flag_spec_F77" || \
+- test -n "$runpath_var_F77" || \
+- test "X$hardcode_automatic_F77" = "Xyes" ; then
++# This is the shared library runtime path variable.
++runpath_var=$runpath_var
+
+- # We can hardcode non-existant directories.
+- if test "$hardcode_direct_F77" != no &&
+- # If the only mechanism to avoid hardcoding is shlibpath_var, we
+- # have to relink, otherwise we might link with an installed library
+- # when we should be linking with a yet-to-be-installed one
+- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+- test "$hardcode_minus_L_F77" != no; then
+- # Linking always hardcodes the temporary library directory.
+- hardcode_action_F77=relink
+- else
+- # We can link without hardcoding, and we can hardcode nonexisting dirs.
+- hardcode_action_F77=immediate
+- fi
+-else
+- # We cannot hardcode anything, or else we can only hardcode existing
+- # directories.
+- hardcode_action_F77=unsupported
+-fi
+-{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+-echo "${ECHO_T}$hardcode_action_F77" >&6; }
++# This is the shared library path variable.
++shlibpath_var=$shlibpath_var
+
+-if test "$hardcode_action_F77" = relink; then
+- # Fast installation is not supported
+- enable_fast_install=no
+-elif test "$shlibpath_overrides_runpath" = yes ||
+- test "$enable_shared" = no; then
+- # Fast installation is not necessary
+- enable_fast_install=needless
+-fi
++# Is shlibpath searched before the hard-coded library search path?
++shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
++# How to hardcode a shared library path into an executable.
++hardcode_action=$hardcode_action_F77
+
+-# The else clause should only fire when bootstrapping the
+-# libtool distribution, otherwise you forgot to ship ltmain.sh
+-# with your package, and you will get complaints that there are
+-# no rules to generate ltmain.sh.
+-if test -f "$ltmain"; then
+- # See if we are running on zsh, and set the options which allow our commands through
+- # without removal of \ escapes.
+- if test -n "${ZSH_VERSION+set}" ; then
+- setopt NO_GLOB_SUBST
+- fi
+- # Now quote all the things that may contain metacharacters while being
+- # careful not to overquote the AC_SUBSTed values. We take copies of the
+- # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+- SED SHELL STRIP \
+- libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+- old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+- deplibs_check_method reload_flag reload_cmds need_locks \
+- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+- lt_cv_sys_global_symbol_to_c_name_address \
+- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+- old_postinstall_cmds old_postuninstall_cmds \
+- compiler_F77 \
+- CC_F77 \
+- LD_F77 \
+- lt_prog_compiler_wl_F77 \
+- lt_prog_compiler_pic_F77 \
+- lt_prog_compiler_static_F77 \
+- lt_prog_compiler_no_builtin_flag_F77 \
+- export_dynamic_flag_spec_F77 \
+- thread_safe_flag_spec_F77 \
+- whole_archive_flag_spec_F77 \
+- enable_shared_with_static_runtimes_F77 \
+- old_archive_cmds_F77 \
+- old_archive_from_new_cmds_F77 \
+- predep_objects_F77 \
+- postdep_objects_F77 \
+- predeps_F77 \
+- postdeps_F77 \
+- compiler_lib_search_path_F77 \
+- archive_cmds_F77 \
+- archive_expsym_cmds_F77 \
+- postinstall_cmds_F77 \
+- postuninstall_cmds_F77 \
+- old_archive_from_expsyms_cmds_F77 \
+- allow_undefined_flag_F77 \
+- no_undefined_flag_F77 \
+- export_symbols_cmds_F77 \
+- hardcode_libdir_flag_spec_F77 \
+- hardcode_libdir_flag_spec_ld_F77 \
+- hardcode_libdir_separator_F77 \
+- hardcode_automatic_F77 \
+- module_cmds_F77 \
+- module_expsym_cmds_F77 \
+- lt_cv_prog_compiler_c_o_F77 \
+- exclude_expsyms_F77 \
+- include_expsyms_F77; do
++# Whether we should hardcode library paths into libraries.
++hardcode_into_libs=$hardcode_into_libs
+
+- case $var in
+- old_archive_cmds_F77 | \
+- old_archive_from_new_cmds_F77 | \
+- archive_cmds_F77 | \
+- archive_expsym_cmds_F77 | \
+- module_cmds_F77 | \
+- module_expsym_cmds_F77 | \
+- old_archive_from_expsyms_cmds_F77 | \
+- export_symbols_cmds_F77 | \
+- extract_expsyms_cmds | reload_cmds | finish_cmds | \
+- postinstall_cmds | postuninstall_cmds | \
+- old_postinstall_cmds | old_postuninstall_cmds | \
+- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+- # Double-quote double-evaled strings.
+- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+- ;;
+- *)
+- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+- ;;
+- esac
+- done
++# Flag to hardcode \$libdir into a binary during linking.
++# This must work even if \$libdir does not exist.
++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+- case $lt_echo in
+- *'\$0 --fallback-echo"')
+- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+- ;;
+- esac
++# If ld is used when linking, flag to hardcode \$libdir into
++# a binary during linking. This must work even if \$libdir does
++# not exist.
++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+-cfgfile="$ofile"
++# Whether we need a single -rpath flag with a separated argument.
++hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+- cat <<__EOF__ >> "$cfgfile"
+-# ### BEGIN LIBTOOL TAG CONFIG: $tagname
++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
++# resulting binary.
++hardcode_direct=$hardcode_direct_F77
+
+-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
++# resulting binary.
++hardcode_minus_L=$hardcode_minus_L_F77
+
+-# Shell to use when invoking shell scripts.
+-SHELL=$lt_SHELL
++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
++# the resulting binary.
++hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+-# Whether or not to build shared libraries.
+-build_libtool_libs=$enable_shared
++# Set to yes if building a shared library automatically hardcodes DIR into the library
++# and all subsequent libraries and executables linked against it.
++hardcode_automatic=$hardcode_automatic_F77
+
+-# Whether or not to build static libraries.
+-build_old_libs=$enable_static
++# Variables whose values should be saved in libtool wrapper scripts and
++# restored at relink time.
++variables_saved_for_relink="$variables_saved_for_relink"
+
+-# Whether or not to add -lc for building shared libraries.
+-build_libtool_need_lc=$archive_cmds_need_lc_F77
++# Whether libtool must link a program against all its dependency libraries.
++link_all_deplibs=$link_all_deplibs_F77
+
+-# Whether or not to disallow shared libs when runtime libs are static
+-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
++# Compile-time system search path for libraries
++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+-# Whether or not to optimize for fast installation.
+-fast_install=$enable_fast_install
++# Run-time system search path for libraries
++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+-# The host system.
+-host_alias=$host_alias
+-host=$host
+-host_os=$host_os
++# Fix the shell variable \$srcfile for the compiler.
++fix_srcfile_path="$fix_srcfile_path_F77"
+
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
++# Set to yes if exported symbols are required.
++always_export_symbols=$always_export_symbols_F77
+
+-# An echo program that does not interpret backslashes.
+-echo=$lt_echo
++# The commands to list exported symbols.
++export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+-# The archiver.
+-AR=$lt_AR
+-AR_FLAGS=$lt_AR_FLAGS
++# The commands to extract the exported symbol list from a shared archive.
++extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+-# A C compiler.
+-LTCC=$lt_LTCC
++# Symbols that should not be listed in the preloaded symbols.
++exclude_expsyms=$lt_exclude_expsyms_F77
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
++# Symbols that must always be exported.
++include_expsyms=$lt_include_expsyms_F77
+
+-# A language-specific compiler.
+-CC=$lt_compiler_F77
++# ### END LIBTOOL TAG CONFIG: $tagname
+
+-# Is the compiler the GNU C compiler?
+-with_gcc=$GCC_F77
++__EOF__
+
+-# An ERE matcher.
+-EGREP=$lt_EGREP
+
+-# The linker used to build libraries.
+-LD=$lt_LD_F77
++else
++ # If there is no Makefile yet, we rely on a make rule to execute
++ # `config.status --recheck' to rerun these tests and create the
++ # libtool script then.
++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
++ if test -f "$ltmain_in"; then
++ test -f Makefile && make "$ltmain"
++ fi
++fi
+
+-# Whether we need hard or soft links.
+-LN_S=$lt_LN_S
+
+-# A BSD-compatible nm program.
+-NM=$lt_NM
++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
+
+-# A symbol stripping program
+-STRIP=$lt_STRIP
++CC="$lt_save_CC"
+
+-# Used to examine libraries when file_magic_cmd begins "file"
+-MAGIC_CMD=$MAGIC_CMD
++ else
++ tagname=""
++ fi
++ ;;
+
+-# Used on cygwin: DLL creation program.
+-DLLTOOL="$DLLTOOL"
++ GCJ)
++ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+-# Used on cygwin: object dumper.
+-OBJDUMP="$OBJDUMP"
+
+-# Used on cygwin: assembler.
+-AS="$AS"
+
+-# The name of the directory that contains temporary libtool files.
+-objdir=$objdir
++# Source file extension for Java test sources.
++ac_ext=java
+
+-# How to create reloadable object files.
+-reload_flag=$lt_reload_flag
+-reload_cmds=$lt_reload_cmds
++# Object file extension for compiled Java test sources.
++objext=o
++objext_GCJ=$objext
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl_F77
++# Code to be used in simple compile tests
++lt_simple_compile_test_code="class foo {}\n"
+
+-# Object file suffix (normally "o").
+-objext="$ac_objext"
++# Code to be used in simple link tests
++lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n'
+
+-# Old archive suffix (normally "a").
+-libext="$libext"
++# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+-# Shared library suffix (normally ".so").
+-shrext_cmds='$shrext_cmds'
++# If no C compiler was specified, use CC.
++LTCC=${LTCC-"$CC"}
+
+-# Executable file suffix (normally "").
+-exeext="$exeext"
++# Allow CC to be a program name with arguments.
++compiler=$CC
+
+-# Additional compiler flags for building library objects.
+-pic_flag=$lt_lt_prog_compiler_pic_F77
+-pic_mode=$pic_mode
+
+-# What is the maximum length of a command?
+-max_cmd_len=$lt_cv_sys_max_cmd_len
++# Allow CC to be a program name with arguments.
++lt_save_CC="$CC"
++CC=${GCJ-"gcj"}
++compiler=$CC
++compiler_GCJ=$CC
+
+-# Does compiler simultaneously support -c and -o options?
+-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
++# GCJ did not exist at the time GCC didn't implicitly link libc in.
++archive_cmds_need_lc_GCJ=no
+
+-# Must we lock files when doing compilation?
+-need_locks=$lt_need_locks
+
+-# Do we need the lib prefix for modules?
+-need_lib_prefix=$need_lib_prefix
++lt_prog_compiler_no_builtin_flag_GCJ=
+
+-# Do we need a version for libraries?
+-need_version=$need_version
++if test "$GCC" = yes; then
++ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+-# Whether dlopen is supported.
+-dlopen_support=$enable_dlopen
+
+-# Whether dlopen of programs is supported.
+-dlopen_self=$enable_dlopen_self
++echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
++if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_cv_prog_compiler_rtti_exceptions=no
++ ac_outfile=conftest.$ac_objext
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++ lt_compiler_flag="-fno-rtti -fno-exceptions"
++ # Insert the option either (1) after the last *FLAGS variable, or
++ # (2) before a word containing "conftest.", or (3) at the end.
++ # Note that $ac_compile itself does not contain backslashes and begins
++ # with a dollar sign (not a hyphen), so the echo should work correctly.
++ # The option is referenced via a variable to avoid confusing sed.
++ lt_compile=`echo "$ac_compile" | $SED \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
++ -e 's:$: $lt_compiler_flag:'`
++ (eval echo "\"\$as_me:15739: $lt_compile\"" >&5)
++ (eval "$lt_compile" 2>conftest.err)
++ ac_status=$?
++ cat conftest.err >&5
++ echo "$as_me:15743: \$? = $ac_status" >&5
++ if (exit $ac_status) && test -s "$ac_outfile"; then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
++ lt_cv_prog_compiler_rtti_exceptions=yes
++ fi
++ fi
++ $rm conftest*
+
+-# Whether dlopen of statically linked programs is supported.
+-dlopen_self_static=$enable_dlopen_self_static
++fi
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+-# Compiler flag to prevent dynamic linking.
+-link_static_flag=$lt_lt_prog_compiler_static_F77
++if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
++ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
++else
++ :
++fi
+
+-# Compiler flag to turn off builtin functions.
+-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
++fi
+
+-# Compiler flag to allow reflexive dlopens.
+-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
++lt_prog_compiler_wl_GCJ=
++lt_prog_compiler_pic_GCJ=
++lt_prog_compiler_static_GCJ=
+
+-# Compiler flag to generate shared objects directly from archives.
+-whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
++echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+-# Compiler flag to generate thread-safe objects.
+-thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
++ if test "$GCC" = yes; then
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ lt_prog_compiler_static_GCJ='-static'
+
+-# Library versioning type.
+-version_type=$version_type
++ case $host_os in
++ aix*)
++ # All AIX code is PIC.
++ if test "$host_cpu" = ia64; then
++ # AIX 5 now supports IA64 processor
++ lt_prog_compiler_static_GCJ='-Bstatic'
++ fi
++ ;;
+
+-# Format of library name prefix.
+-libname_spec=$lt_libname_spec
++ amigaos*)
++ # FIXME: we need at least 68020 code to build shared libraries, but
++ # adding the `-m68020' flag to GCC prevents building anything better,
++ # like `-m68040'.
++ lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
++ ;;
+
+-# List of archive names. First name is the real one, the rest are links.
+-# The last name is the one that the linker finds with -lNAME.
+-library_names_spec=$lt_library_names_spec
++ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
++ # PIC is the default for these OSes.
++ ;;
+
+-# The coded name of the library, if different from the real name.
+-soname_spec=$lt_soname_spec
++ mingw* | pw32* | os2*)
++ # This hack is so that the source file can tell whether it is being
++ # built for inclusion in a dll (and should export symbols for example).
++ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
++ ;;
+
+-# Commands used to build and install an old-style archive.
+-RANLIB=$lt_RANLIB
+-old_archive_cmds=$lt_old_archive_cmds_F77
+-old_postinstall_cmds=$lt_old_postinstall_cmds
+-old_postuninstall_cmds=$lt_old_postuninstall_cmds
++ darwin* | rhapsody*)
++ # PIC is the default on this platform
++ # Common symbols not allowed in MH_DYLIB files
++ lt_prog_compiler_pic_GCJ='-fno-common'
++ ;;
+
+-# Create an old-style archive from a shared archive.
+-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
++ msdosdjgpp*)
++ # Just because we use GCC doesn't mean we suddenly get shared libraries
++ # on systems that don't support them.
++ lt_prog_compiler_can_build_shared_GCJ=no
++ enable_shared=no
++ ;;
+
+-# Create a temporary old-style archive to link instead of a shared archive.
+-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
++ sysv4*MP*)
++ if test -d /usr/nec; then
++ lt_prog_compiler_pic_GCJ=-Kconform_pic
++ fi
++ ;;
+
+-# Commands used to build and install a shared archive.
+-archive_cmds=$lt_archive_cmds_F77
+-archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+-postinstall_cmds=$lt_postinstall_cmds
+-postuninstall_cmds=$lt_postuninstall_cmds
++ hpux*)
++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
++ # not for PA HP-UX.
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ # +Z the default
++ ;;
++ *)
++ lt_prog_compiler_pic_GCJ='-fPIC'
++ ;;
++ esac
++ ;;
+
+-# Commands used to build a loadable module (assumed same as above if empty)
+-module_cmds=$lt_module_cmds_F77
+-module_expsym_cmds=$lt_module_expsym_cmds_F77
++ *)
++ lt_prog_compiler_pic_GCJ='-fPIC'
++ ;;
++ esac
++ else
++ # PORTME Check for flag to pass linker flags through the system compiler.
++ case $host_os in
++ aix*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ if test "$host_cpu" = ia64; then
++ # AIX 5 now supports IA64 processor
++ lt_prog_compiler_static_GCJ='-Bstatic'
++ else
++ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
++ fi
++ ;;
+
+-# Commands to strip libraries.
+-old_striplib=$lt_old_striplib
+-striplib=$lt_striplib
++ mingw* | pw32* | os2*)
++ # This hack is so that the source file can tell whether it is being
++ # built for inclusion in a dll (and should export symbols for example).
++ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
++ ;;
+
+-# Dependencies to place before the objects being linked to create a
+-# shared library.
+-predep_objects=$lt_predep_objects_F77
++ hpux9* | hpux10* | hpux11*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
++ # not for PA HP-UX.
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ # +Z the default
++ ;;
++ *)
++ lt_prog_compiler_pic_GCJ='+Z'
++ ;;
++ esac
++ # Is there a better lt_prog_compiler_static that works with the bundled CC?
++ lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
++ ;;
+
+-# Dependencies to place after the objects being linked to create a
+-# shared library.
+-postdep_objects=$lt_postdep_objects_F77
++ irix5* | irix6* | nonstopux*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ # PIC (with -KPIC) is the default.
++ lt_prog_compiler_static_GCJ='-non_shared'
++ ;;
+
+-# Dependencies to place before the objects being linked to create a
+-# shared library.
+-predeps=$lt_predeps_F77
++ newsos6)
++ lt_prog_compiler_pic_GCJ='-KPIC'
++ lt_prog_compiler_static_GCJ='-Bstatic'
++ ;;
+
+-# Dependencies to place after the objects being linked to create a
+-# shared library.
+-postdeps=$lt_postdeps_F77
++ linux*)
++ case $CC in
++ icc* | ecc*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ lt_prog_compiler_pic_GCJ='-KPIC'
++ lt_prog_compiler_static_GCJ='-static'
++ ;;
++ ccc*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ # All Alpha code is PIC.
++ lt_prog_compiler_static_GCJ='-non_shared'
++ ;;
++ esac
++ ;;
+
+-# The library search path used internally by the compiler when linking
+-# a shared library.
+-compiler_lib_search_path=$lt_compiler_lib_search_path_F77
++ osf3* | osf4* | osf5*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ # All OSF/1 code is PIC.
++ lt_prog_compiler_static_GCJ='-non_shared'
++ ;;
+
+-# Method to check whether dependent libraries are shared objects.
+-deplibs_check_method=$lt_deplibs_check_method
++ sco3.2v5*)
++ lt_prog_compiler_pic_GCJ='-Kpic'
++ lt_prog_compiler_static_GCJ='-dn'
++ ;;
+
+-# Command to use when deplibs_check_method == file_magic.
+-file_magic_cmd=$lt_file_magic_cmd
++ solaris*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ lt_prog_compiler_pic_GCJ='-KPIC'
++ lt_prog_compiler_static_GCJ='-Bstatic'
++ ;;
+
+-# Flag that allows shared libraries with undefined symbols to be built.
+-allow_undefined_flag=$lt_allow_undefined_flag_F77
++ sunos4*)
++ lt_prog_compiler_wl_GCJ='-Qoption ld '
++ lt_prog_compiler_pic_GCJ='-PIC'
++ lt_prog_compiler_static_GCJ='-Bstatic'
++ ;;
+
+-# Flag that forces no undefined symbols.
+-no_undefined_flag=$lt_no_undefined_flag_F77
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
++ lt_prog_compiler_pic_GCJ='-KPIC'
++ lt_prog_compiler_static_GCJ='-Bstatic'
++ ;;
+
+-# Commands used to finish a libtool library installation in a directory.
+-finish_cmds=$lt_finish_cmds
++ sysv4*MP*)
++ if test -d /usr/nec ;then
++ lt_prog_compiler_pic_GCJ='-Kconform_pic'
++ lt_prog_compiler_static_GCJ='-Bstatic'
++ fi
++ ;;
+
+-# Same as above, but a single script fragment to be evaled but not shown.
+-finish_eval=$lt_finish_eval
++ uts4*)
++ lt_prog_compiler_pic_GCJ='-pic'
++ lt_prog_compiler_static_GCJ='-Bstatic'
++ ;;
+
+-# Take the output of nm and produce a listing of raw symbols and C names.
+-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
++ *)
++ lt_prog_compiler_can_build_shared_GCJ=no
++ ;;
++ esac
++ fi
+
+-# Transform the output of nm in a proper C declaration
+-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+-# Transform the output of nm in a C name address pair
+-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
++#
++# Check to make sure the PIC flag actually works.
++#
++if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+-# This is the shared library runtime path variable.
+-runpath_var=$runpath_var
++echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
++if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_prog_compiler_pic_works_GCJ=no
++ ac_outfile=conftest.$ac_objext
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++ lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
++ # Insert the option either (1) after the last *FLAGS variable, or
++ # (2) before a word containing "conftest.", or (3) at the end.
++ # Note that $ac_compile itself does not contain backslashes and begins
++ # with a dollar sign (not a hyphen), so the echo should work correctly.
++ # The option is referenced via a variable to avoid confusing sed.
++ lt_compile=`echo "$ac_compile" | $SED \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
++ -e 's:$: $lt_compiler_flag:'`
++ (eval echo "\"\$as_me:15972: $lt_compile\"" >&5)
++ (eval "$lt_compile" 2>conftest.err)
++ ac_status=$?
++ cat conftest.err >&5
++ echo "$as_me:15976: \$? = $ac_status" >&5
++ if (exit $ac_status) && test -s "$ac_outfile"; then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
++ lt_prog_compiler_pic_works_GCJ=yes
++ fi
++ fi
++ $rm conftest*
+
+-# This is the shared library path variable.
+-shlibpath_var=$shlibpath_var
++fi
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+-# Is shlibpath searched before the hard-coded library search path?
+-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
++if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
++ case $lt_prog_compiler_pic_GCJ in
++ "" | " "*) ;;
++ *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
++ esac
++else
++ lt_prog_compiler_pic_GCJ=
++ lt_prog_compiler_can_build_shared_GCJ=no
++fi
+
+-# How to hardcode a shared library path into an executable.
+-hardcode_action=$hardcode_action_F77
++fi
++case "$host_os" in
++ # For platforms which do not support PIC, -DPIC is meaningless:
++ *djgpp*)
++ lt_prog_compiler_pic_GCJ=
++ ;;
++ *)
++ lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
++ ;;
++esac
+
+-# Whether we should hardcode library paths into libraries.
+-hardcode_into_libs=$hardcode_into_libs
++echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
++if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_cv_prog_compiler_c_o_GCJ=no
++ $rm -r conftest 2>/dev/null
++ mkdir conftest
++ cd conftest
++ mkdir out
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+-# Flag to hardcode \$libdir into a binary during linking.
+-# This must work even if \$libdir does not exist.
+-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
++ lt_compiler_flag="-o out/conftest2.$ac_objext"
++ # Insert the option either (1) after the last *FLAGS variable, or
++ # (2) before a word containing "conftest.", or (3) at the end.
++ # Note that $ac_compile itself does not contain backslashes and begins
++ # with a dollar sign (not a hyphen), so the echo should work correctly.
++ lt_compile=`echo "$ac_compile" | $SED \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
++ -e 's:$: $lt_compiler_flag:'`
++ (eval echo "\"\$as_me:16032: $lt_compile\"" >&5)
++ (eval "$lt_compile" 2>out/conftest.err)
++ ac_status=$?
++ cat out/conftest.err >&5
++ echo "$as_me:16036: \$? = $ac_status" >&5
++ if (exit $ac_status) && test -s out/conftest2.$ac_objext
++ then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test ! -s out/conftest.err; then
++ lt_cv_prog_compiler_c_o_GCJ=yes
++ fi
++ fi
++ chmod u+w .
++ $rm conftest*
++ # SGI C++ compiler will create directory out/ii_files/ for
++ # template instantiation
++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
++ $rm out/* && rmdir out
++ cd ..
++ rmdir conftest
++ $rm conftest*
+
+-# If ld is used when linking, flag to hardcode \$libdir into
+-# a binary during linking. This must work even if \$libdir does
+-# not exist.
+-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
++fi
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+-# Whether we need a single -rpath flag with a separated argument.
+-hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+-# resulting binary.
+-hardcode_direct=$hardcode_direct_F77
++hard_links="nottested"
++if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
++ # do not overwrite the value of need_locks provided by the user
++ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
++ hard_links=yes
++ $rm conftest*
++ ln conftest.a conftest.b 2>/dev/null && hard_links=no
++ touch conftest.a
++ ln conftest.a conftest.b 2>&5 || hard_links=no
++ ln conftest.a conftest.b 2>/dev/null && hard_links=no
++ echo "$as_me:$LINENO: result: $hard_links" >&5
++echo "${ECHO_T}$hard_links" >&6
++ if test "$hard_links" = no; then
++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
++ need_locks=warn
++ fi
++else
++ need_locks=no
++fi
+
+-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+-# resulting binary.
+-hardcode_minus_L=$hardcode_minus_L_F77
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+-# the resulting binary.
+-hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
++ runpath_var=
++ allow_undefined_flag_GCJ=
++ enable_shared_with_static_runtimes_GCJ=no
++ archive_cmds_GCJ=
++ archive_expsym_cmds_GCJ=
++ old_archive_From_new_cmds_GCJ=
++ old_archive_from_expsyms_cmds_GCJ=
++ export_dynamic_flag_spec_GCJ=
++ whole_archive_flag_spec_GCJ=
++ thread_safe_flag_spec_GCJ=
++ hardcode_libdir_flag_spec_GCJ=
++ hardcode_libdir_flag_spec_ld_GCJ=
++ hardcode_libdir_separator_GCJ=
++ hardcode_direct_GCJ=no
++ hardcode_minus_L_GCJ=no
++ hardcode_shlibpath_var_GCJ=unsupported
++ link_all_deplibs_GCJ=unknown
++ hardcode_automatic_GCJ=no
++ module_cmds_GCJ=
++ module_expsym_cmds_GCJ=
++ always_export_symbols_GCJ=no
++ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
++ # include_expsyms should be a list of space-separated symbols to be *always*
++ # included in the symbol list
++ include_expsyms_GCJ=
++ # exclude_expsyms can be an extended regexp of symbols to exclude
++ # it will be wrapped by ` (' and `)$', so one must not match beginning or
++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
++ # as well as any symbol that contains `d'.
++ exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
++ # platforms (ab)use it in PIC code, but their linkers get confused if
++ # the symbol is explicitly referenced. Since portable code cannot
++ # rely on this symbol name, it's probably fine to never include it in
++ # preloaded symbol tables.
++ extract_expsyms_cmds=
+
+-# Set to yes if building a shared library automatically hardcodes DIR into the library
+-# and all subsequent libraries and executables linked against it.
+-hardcode_automatic=$hardcode_automatic_F77
++ case $host_os in
++ cygwin* | mingw* | pw32*)
++ # FIXME: the MSVC++ port hasn't been tested in a loooong time
++ # When not using gcc, we currently assume that we are using
++ # Microsoft Visual C++.
++ if test "$GCC" != yes; then
++ with_gnu_ld=no
++ fi
++ ;;
++ openbsd*)
++ with_gnu_ld=no
++ ;;
++ esac
+
+-# Variables whose values should be saved in libtool wrapper scripts and
+-# restored at relink time.
+-variables_saved_for_relink="$variables_saved_for_relink"
++ ld_shlibs_GCJ=yes
++ if test "$with_gnu_ld" = yes; then
++ # If archive_cmds runs LD, not CC, wlarc should be empty
++ wlarc='${wl}'
+
+-# Whether libtool must link a program against all its dependency libraries.
+-link_all_deplibs=$link_all_deplibs_F77
++ # See if GNU ld supports shared libraries.
++ case $host_os in
++ aix3* | aix4* | aix5*)
++ # On AIX/PPC, the GNU linker is very broken
++ if test "$host_cpu" != ia64; then
++ ld_shlibs_GCJ=no
++ cat <<EOF 1>&2
+
+-# Compile-time system search path for libraries
+-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
++*** Warning: the GNU linker, at least up to release 2.9.1, is reported
++*** to be unable to reliably create shared libraries on AIX.
++*** Therefore, libtool is disabling shared libraries support. If you
++*** really care for shared libraries, you may want to modify your PATH
++*** so that a non-GNU linker is found, and then restart.
+
+-# Run-time system search path for libraries
+-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
++EOF
++ fi
++ ;;
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path="$fix_srcfile_path_F77"
++ amigaos*)
++ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_minus_L_GCJ=yes
+
+-# Set to yes if exported symbols are required.
+-always_export_symbols=$always_export_symbols_F77
++ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
++ # that the semantics of dynamic libraries on AmigaOS, at least up
++ # to version 4, is to share data among multiple programs linked
++ # with the same dynamic library. Since this doesn't match the
++ # behavior of shared libraries on other platforms, we can't use
++ # them.
++ ld_shlibs_GCJ=no
++ ;;
+
+-# The commands to list exported symbols.
+-export_symbols_cmds=$lt_export_symbols_cmds_F77
++ beos*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ allow_undefined_flag_GCJ=unsupported
++ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
++ # support --undefined. This deserves some investigation. FIXME
++ archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ else
++ ld_shlibs_GCJ=no
++ fi
++ ;;
+
+-# The commands to extract the exported symbol list from a shared archive.
+-extract_expsyms_cmds=$lt_extract_expsyms_cmds
++ cygwin* | mingw* | pw32*)
++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
++ # as there is no search path for DLLs.
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ allow_undefined_flag_GCJ=unsupported
++ always_export_symbols_GCJ=no
++ enable_shared_with_static_runtimes_GCJ=yes
++ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+-# Symbols that should not be listed in the preloaded symbols.
+-exclude_expsyms=$lt_exclude_expsyms_F77
++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
++ # If the export-symbols file already is a .def file (1st line
++ # is EXPORTS), use it as is; otherwise, prepend...
++ archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ cp $export_symbols $output_objdir/$soname.def;
++ else
++ echo EXPORTS > $output_objdir/$soname.def;
++ cat $export_symbols >> $output_objdir/$soname.def;
++ fi~
++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
++ else
++ ld_shlibs=no
++ fi
++ ;;
+
+-# Symbols that must always be exported.
+-include_expsyms=$lt_include_expsyms_F77
++ netbsd*)
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
++ wlarc=
++ else
++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ fi
++ ;;
+
+-# ### END LIBTOOL TAG CONFIG: $tagname
++ solaris* | sysv5*)
++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
++ ld_shlibs_GCJ=no
++ cat <<EOF 1>&2
+
+-__EOF__
++*** Warning: The releases 2.8.* of the GNU linker cannot reliably
++*** create shared libraries on Solaris systems. Therefore, libtool
++*** is disabling shared libraries support. We urge you to upgrade GNU
++*** binutils to release 2.9.1 or newer. Another option is to modify
++*** your PATH or compiler configuration so that the native linker is
++*** used, and then restart.
+
++EOF
++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ else
++ ld_shlibs_GCJ=no
++ fi
++ ;;
+
+-else
+- # If there is no Makefile yet, we rely on a make rule to execute
+- # `config.status --recheck' to rerun these tests and create the
+- # libtool script then.
+- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+- if test -f "$ltmain_in"; then
+- test -f Makefile && make "$ltmain"
+- fi
+-fi
++ sunos4*)
++ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ wlarc=
++ hardcode_direct_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
++ ;;
+
++ linux*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_cmds_GCJ="$tmp_archive_cmds"
++ supports_anon_versioning=no
++ case `$LD -v 2>/dev/null` in
++ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
++ *\ 2.11.*) ;; # other 2.11 versions
++ *) supports_anon_versioning=yes ;;
++ esac
++ if test $supports_anon_versioning = yes; then
++ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ archive_expsym_cmds_GCJ="$tmp_archive_cmds"
++ fi
++ else
++ ld_shlibs_GCJ=no
++ 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
++ *)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ else
++ ld_shlibs_GCJ=no
++ fi
++ ;;
++ esac
+
+-CC="$lt_save_CC"
++ if test "$ld_shlibs_GCJ" = yes; then
++ runpath_var=LD_RUN_PATH
++ hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
++ export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
++ # ancient GNU ld didn't support --whole-archive et. al.
++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
++ whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
++ else
++ whole_archive_flag_spec_GCJ=
++ fi
++ fi
++ else
++ # PORTME fill in a description of your system's linker (not GNU ld)
++ case $host_os in
++ aix3*)
++ allow_undefined_flag_GCJ=unsupported
++ always_export_symbols_GCJ=yes
++ archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
++ # Note: this linker hardcodes the directories in LIBPATH if there
++ # are no directories specified by -L.
++ hardcode_minus_L_GCJ=yes
++ if test "$GCC" = yes && test -z "$link_static_flag"; then
++ # Neither direct hardcoding nor static linking is supported with a
++ # broken collect2.
++ hardcode_direct_GCJ=unsupported
++ fi
++ ;;
+
++ aix4* | aix5*)
++ if test "$host_cpu" = ia64; then
++ # On IA64, the linker does run time linking by default, so we don't
++ # have to do anything special.
++ aix_use_runtimelinking=no
++ exp_sym_flag='-Bexport'
++ no_entry_flag=""
++ else
++ # If we're using GNU nm, then we don't want the "-C" option.
++ # -C means demangle to AIX nm, but means don't demangle with GNU nm
++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
++ export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+- tagname=""
++ export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+- ;;
++ aix_use_runtimelinking=no
+
+- GCJ)
+- if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
++ # Test if we are trying to use run time linking or normal
++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
++ # need to do runtime linking.
++ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
++ for ld_flag in $LDFLAGS; do
++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
++ aix_use_runtimelinking=yes
++ break
++ fi
++ done
++ esac
+
++ exp_sym_flag='-bexport'
++ no_entry_flag='-bnoentry'
++ fi
+
+-# Source file extension for Java test sources.
+-ac_ext=java
++ # When large executables or shared objects are built, AIX ld can
++ # have problems creating the table of contents. If linking a library
++ # or program results in "error TOC overflow" add -mminimal-toc to
++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+-# Object file extension for compiled Java test sources.
+-objext=o
+-objext_GCJ=$objext
++ archive_cmds_GCJ=''
++ hardcode_direct_GCJ=yes
++ hardcode_libdir_separator_GCJ=':'
++ link_all_deplibs_GCJ=yes
+
+-# Code to be used in simple compile tests
+-lt_simple_compile_test_code="class foo {}\n"
++ if test "$GCC" = yes; then
++ case $host_os in aix4.012|aix4.012.*)
++ # We only want to do this on AIX 4.2 and lower, the check
++ # below for broken collect2 doesn't work under 4.3+
++ collect2name=`${CC} -print-prog-name=collect2`
++ if test -f "$collect2name" && \
++ strings "$collect2name" | grep resolve_lib_name >/dev/null
++ then
++ # We have reworked collect2
++ hardcode_direct_GCJ=yes
++ else
++ # We have old collect2
++ hardcode_direct_GCJ=unsupported
++ # It fails to find uninstalled libraries when the uninstalled
++ # path is not listed in the libpath. Setting hardcode_minus_L
++ # to unsupported forces relinking
++ hardcode_minus_L_GCJ=yes
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_libdir_separator_GCJ=
++ fi
++ esac
++ shared_flag='-shared'
++ else
++ # not using gcc
++ if test "$host_cpu" = ia64; then
++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
++ # chokes on -Wl,-G. The following line is correct:
++ shared_flag='-G'
++ else
++ if test "$aix_use_runtimelinking" = yes; then
++ shared_flag='${wl}-G'
++ else
++ shared_flag='${wl}-bM:SRE'
++ fi
++ fi
++ fi
+
+-# Code to be used in simple link tests
+-lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
++ # It seems that -bexpall does not export symbols beginning with
++ # underscore (_), so it is better to generate a list of symbols to export.
++ always_export_symbols_GCJ=yes
++ if test "$aix_use_runtimelinking" = yes; then
++ # Warning - without using the other runtime loading flags (-brtl),
++ # -berok will link without error, but may produce a broken library.
++ allow_undefined_flag_GCJ='-berok'
++ # Determine the default libpath from the value encoded in an empty executable.
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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
+
+-# If no C compiler was specified, use CC.
+-LTCC=${LTCC-"$CC"}
++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`
++# Check for a 64-bit object if we didn't find anything.
++if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`; fi
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+-# Allow CC to be a program name with arguments.
+-compiler=$CC
++ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
++ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ else
++ if test "$host_cpu" = ia64; then
++ hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
++ allow_undefined_flag_GCJ="-z nodefs"
++ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
++ else
++ # Determine the default libpath from the value encoded in an empty executable.
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
++int
++main ()
++{
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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
+
++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`
++# Check for a 64-bit object if we didn't find anything.
++if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`; fi
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Allow CC to be a program name with arguments.
+-lt_save_CC="$CC"
+-CC=${GCJ-"gcj"}
+-compiler=$CC
+-compiler_GCJ=$CC
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
++ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
++ # Warning - without using the other run time loading flags,
++ # -berok will link without error, but may produce a broken library.
++ no_undefined_flag_GCJ=' ${wl}-bernotok'
++ allow_undefined_flag_GCJ=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ always_export_symbols_GCJ=yes
++ # Exported symbols can be pulled into shared objects from archives
++ whole_archive_flag_spec_GCJ=' '
++ archive_cmds_need_lc_GCJ=yes
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ fi
++ fi
++ ;;
+
+-# GCJ did not exist at the time GCC didn't implicitly link libc in.
+-archive_cmds_need_lc_GCJ=no
++ amigaos*)
++ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_minus_L_GCJ=yes
++ # see comment about different semantics on the GNU ld section
++ ld_shlibs_GCJ=no
++ ;;
+
+-old_archive_cmds_GCJ=$old_archive_cmds
++ bsdi4*)
++ export_dynamic_flag_spec_GCJ=-rdynamic
++ ;;
+
++ cygwin* | mingw* | pw32*)
++ # When not using gcc, we currently assume that we are using
++ # Microsoft Visual C++.
++ # hardcode_libdir_flag_spec is actually meaningless, as there is
++ # no search path for DLLs.
++ hardcode_libdir_flag_spec_GCJ=' '
++ allow_undefined_flag_GCJ=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_From_new_cmds_GCJ='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
++ fix_srcfile_path='`cygpath -w "$srcfile"`'
++ enable_shared_with_static_runtimes_GCJ=yes
++ ;;
+
+-lt_prog_compiler_no_builtin_flag_GCJ=
++ darwin* | rhapsody*)
++ if test "$GXX" = yes ; then
++ archive_cmds_need_lc_GCJ=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag_GCJ='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag_GCJ='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -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'
++ fi
++ module_cmds_GCJ='$CC ${wl}-bind_at_load $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
++ archive_expsym_cmds_GCJ='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}'
++ else
++ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ fi
++ module_expsym_cmds_GCJ='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}'
++ hardcode_direct_GCJ=no
++ hardcode_automatic_GCJ=yes
++ hardcode_shlibpath_var_GCJ=unsupported
++ whole_archive_flag_spec_GCJ='-all_load $convenience'
++ link_all_deplibs_GCJ=yes
++ else
++ ld_shlibs_GCJ=no
++ fi
++ ;;
+
+-if test "$GCC" = yes; then
+- lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
++ dgux*)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_shlibpath_var_GCJ=no
++ ;;
+
++ freebsd1*)
++ ld_shlibs_GCJ=no
++ ;;
+
+-{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
+-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_cv_prog_compiler_rtti_exceptions=no
+- ac_outfile=conftest.$ac_objext
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+- lt_compiler_flag="-fno-rtti -fno-exceptions"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- # The option is referenced via a variable to avoid confusing sed.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:16901: $lt_compile\"" >&5)
+- (eval "$lt_compile" 2>conftest.err)
+- ac_status=$?
+- cat conftest.err >&5
+- echo "$as_me:16905: \$? = $ac_status" >&5
+- if (exit $ac_status) && test -s "$ac_outfile"; then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+- lt_cv_prog_compiler_rtti_exceptions=yes
+- fi
+- fi
+- $rm conftest*
++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
++ # support. Future versions do this automatically, but an explicit c++rt0.o
++ # does not break anything, and helps significantly (at the cost of a little
++ # extra space).
++ freebsd2.2*)
++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
++ hardcode_libdir_flag_spec_GCJ='-R$libdir'
++ hardcode_direct_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
++ ;;
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
++ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
++ freebsd2*)
++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_GCJ=yes
++ hardcode_minus_L_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
++ ;;
+
+-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+- lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+-else
+- :
+-fi
++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
++ freebsd* | kfreebsd*-gnu)
++ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_GCJ='-R$libdir'
++ hardcode_direct_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
++ ;;
+
+-fi
++ hpux9*)
++ if test "$GCC" = yes; then
++ archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ else
++ archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ fi
++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_GCJ=:
++ hardcode_direct_GCJ=yes
+
+-lt_prog_compiler_wl_GCJ=
+-lt_prog_compiler_pic_GCJ=
+-lt_prog_compiler_static_GCJ=
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_GCJ=yes
++ export_dynamic_flag_spec_GCJ='${wl}-E'
++ ;;
+
+-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
++ hpux10* | hpux11*)
++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ ;;
++ *)
++ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ ;;
++ esac
++ else
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
++ ;;
++ *)
++ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
++ ;;
++ esac
++ fi
++ if test "$with_gnu_ld" = no; then
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
++ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
++ hardcode_libdir_separator_GCJ=:
++ hardcode_direct_GCJ=no
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++ ia64*)
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_direct_GCJ=no
++ hardcode_shlibpath_var_GCJ=no
+
+- if test "$GCC" = yes; then
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_static_GCJ='-static'
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_GCJ=yes
++ ;;
++ *)
++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_GCJ=:
++ hardcode_direct_GCJ=yes
++ export_dynamic_flag_spec_GCJ='${wl}-E'
+
+- case $host_os in
+- aix*)
+- # All AIX code is PIC.
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- lt_prog_compiler_static_GCJ='-Bstatic'
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_GCJ=yes
++ ;;
++ esac
+ fi
+ ;;
+
+- amigaos*)
+- # FIXME: we need at least 68020 code to build shared libraries, but
+- # adding the `-m68020' flag to GCC prevents building anything better,
+- # like `-m68040'.
+- lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+- ;;
+-
+- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+- # PIC is the default for these OSes.
++ irix5* | irix6* | nonstopux*)
++ if test "$GCC" = yes; then
++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ else
++ archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
++ fi
++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_GCJ=:
++ link_all_deplibs_GCJ=yes
+ ;;
+
+- mingw* | pw32* | os2*)
+- # This hack is so that the source file can tell whether it is being
+- # built for inclusion in a dll (and should export symbols for example).
+- lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
++ netbsd*)
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
++ else
++ archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
++ fi
++ hardcode_libdir_flag_spec_GCJ='-R$libdir'
++ hardcode_direct_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+- darwin* | rhapsody*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- lt_prog_compiler_pic_GCJ='-fno-common'
++ newsos6)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_GCJ=yes
++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_GCJ=:
++ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
++ openbsd*)
++ hardcode_direct_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
++ export_dynamic_flag_spec_GCJ='${wl}-E'
++ else
++ case $host_os in
++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_GCJ='-R$libdir'
++ ;;
++ *)
++ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
++ ;;
++ esac
++ fi
+ ;;
+
+- msdosdjgpp*)
+- # Just because we use GCC doesn't mean we suddenly get shared libraries
+- # on systems that don't support them.
+- lt_prog_compiler_can_build_shared_GCJ=no
+- enable_shared=no
++ os2*)
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_minus_L_GCJ=yes
++ allow_undefined_flag_GCJ=unsupported
++ archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
++ old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+- sysv4*MP*)
+- if test -d /usr/nec; then
+- lt_prog_compiler_pic_GCJ=-Kconform_pic
++ osf3*)
++ if test "$GCC" = yes; then
++ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
++ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ else
++ allow_undefined_flag_GCJ=' -expect_unresolved \*'
++ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_GCJ=:
+ ;;
+
+- hpux*)
+- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+- # not for PA HP-UX.
+- case $host_cpu in
+- hppa*64*|ia64*)
+- # +Z the default
+- ;;
+- *)
+- lt_prog_compiler_pic_GCJ='-fPIC'
+- ;;
+- esac
+- ;;
+-
+- *)
+- lt_prog_compiler_pic_GCJ='-fPIC'
+- ;;
+- esac
+- else
+- # PORTME Check for flag to pass linker flags through the system compiler.
+- case $host_os in
+- aix*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- lt_prog_compiler_static_GCJ='-Bstatic'
++ osf4* | osf5*) # as osf3* with the addition of -msym flag
++ if test "$GCC" = yes; then
++ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
++ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ else
+- lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
++ allow_undefined_flag_GCJ=' -expect_unresolved \*'
++ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
++
++ # Both c and cxx compiler support -rpath directly
++ hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+ fi
++ hardcode_libdir_separator_GCJ=:
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- lt_prog_compiler_pic_GCJ='-qnocommon'
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- ;;
+- esac
+- ;;
+
+- mingw* | pw32* | os2*)
+- # This hack is so that the source file can tell whether it is being
+- # built for inclusion in a dll (and should export symbols for example).
+- lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
++ sco3.2v5*)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_GCJ=no
++ export_dynamic_flag_spec_GCJ='${wl}-Bexport'
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
+ ;;
+
+- hpux9* | hpux10* | hpux11*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+- # not for PA HP-UX.
+- case $host_cpu in
+- hppa*64*|ia64*)
+- # +Z the default
+- ;;
+- *)
+- lt_prog_compiler_pic_GCJ='+Z'
+- ;;
++ solaris*)
++ no_undefined_flag_GCJ=' -z text'
++ if test "$GCC" = yes; then
++ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
++ else
++ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ fi
++ hardcode_libdir_flag_spec_GCJ='-R$libdir'
++ hardcode_shlibpath_var_GCJ=no
++ case $host_os in
++ solaris2.[0-5] | solaris2.[0-5].*) ;;
++ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
++ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+ esac
+- # Is there a better lt_prog_compiler_static that works with the bundled CC?
+- lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+- ;;
+-
+- irix5* | irix6* | nonstopux*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- # PIC (with -KPIC) is the default.
+- lt_prog_compiler_static_GCJ='-non_shared'
++ link_all_deplibs_GCJ=yes
+ ;;
+
+- newsos6)
+- lt_prog_compiler_pic_GCJ='-KPIC'
+- lt_prog_compiler_static_GCJ='-Bstatic'
++ sunos4*)
++ if test "x$host_vendor" = xsequent; then
++ # Use $CC to link under sequent, because it throws in some extra .o
++ # files that make .init and .fini sections work.
++ archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
++ else
++ archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
++ fi
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_direct_GCJ=yes
++ hardcode_minus_L_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+- linux* | k*bsd*-gnu)
+- case $cc_basename in
+- icc* | ecc*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_pic_GCJ='-KPIC'
+- lt_prog_compiler_static_GCJ='-static'
+- ;;
+- pgcc* | pgf77* | pgf90* | pgf95*)
+- # Portland Group compilers (*not* the Pentium gcc compiler,
+- # which looks to be a dead project)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_pic_GCJ='-fpic'
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- ;;
+- ccc*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- # All Alpha code is PIC.
+- lt_prog_compiler_static_GCJ='-non_shared'
++ sysv4)
++ case $host_vendor in
++ sni)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_GCJ=yes # is this really true???
++ ;;
++ siemens)
++ ## LD is ld it makes a PLAMLIB
++ ## CC just makes a GrossModule.
++ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ reload_cmds_GCJ='$CC -r -o $output$reload_objs'
++ hardcode_direct_GCJ=no
+ ;;
++ motorola)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
++ ;;
+ esac
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+- osf3* | osf4* | osf5*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- # All OSF/1 code is PIC.
+- lt_prog_compiler_static_GCJ='-non_shared'
+- ;;
+-
+- solaris*)
+- lt_prog_compiler_pic_GCJ='-KPIC'
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- case $cc_basename in
+- f77* | f90* | f95*)
+- lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+- *)
+- lt_prog_compiler_wl_GCJ='-Wl,';;
+- esac
++ sysv4.3*)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_GCJ=no
++ export_dynamic_flag_spec_GCJ='-Bexport'
+ ;;
+
+- sunos4*)
+- lt_prog_compiler_wl_GCJ='-Qoption ld '
+- lt_prog_compiler_pic_GCJ='-PIC'
+- lt_prog_compiler_static_GCJ='-Bstatic'
++ sysv4*MP*)
++ if test -d /usr/nec; then
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_GCJ=no
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ld_shlibs_GCJ=yes
++ fi
+ ;;
+
+- sysv4 | sysv4.2uw2* | sysv4.3*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_pic_GCJ='-KPIC'
+- lt_prog_compiler_static_GCJ='-Bstatic'
++ sysv4.2uw2*)
++ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_GCJ=yes
++ hardcode_minus_L_GCJ=no
++ hardcode_shlibpath_var_GCJ=no
++ hardcode_runpath_var=yes
++ runpath_var=LD_RUN_PATH
+ ;;
+
+- sysv4*MP*)
+- if test -d /usr/nec ;then
+- lt_prog_compiler_pic_GCJ='-Kconform_pic'
+- lt_prog_compiler_static_GCJ='-Bstatic'
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
++ no_undefined_flag_GCJ='${wl}-z ${wl}text'
++ if test "$GCC" = yes; then
++ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ else
++ archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_pic_GCJ='-KPIC'
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- ;;
+-
+- unicos*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_can_build_shared_GCJ=no
++ sysv5*)
++ no_undefined_flag_GCJ=' -z text'
++ # $CC -shared without GNU ld will not create a library from C++
++ # object files and a static libstdc++, better avoid it by now
++ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ hardcode_libdir_flag_spec_GCJ=
++ hardcode_shlibpath_var_GCJ=no
++ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+- lt_prog_compiler_pic_GCJ='-pic'
+- lt_prog_compiler_static_GCJ='-Bstatic'
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
++ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ *)
+- lt_prog_compiler_can_build_shared_GCJ=no
++ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; }
++echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
++echo "${ECHO_T}$ld_shlibs_GCJ" >&6
++test "$ld_shlibs_GCJ" = no && can_build_shared=no
++
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
+
+ #
+-# Check to make sure the PIC flag actually works.
++# Do we need to explicitly link libc?
+ #
+-if test -n "$lt_prog_compiler_pic_GCJ"; then
++case "x$archive_cmds_need_lc_GCJ" in
++x|xyes)
++ # Assume -lc should be added
++ archive_cmds_need_lc_GCJ=yes
+
+-{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_pic_works_GCJ=no
+- ac_outfile=conftest.$ac_objext
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+- lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- # The option is referenced via a variable to avoid confusing sed.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:17169: $lt_compile\"" >&5)
+- (eval "$lt_compile" 2>conftest.err)
+- ac_status=$?
+- cat conftest.err >&5
+- echo "$as_me:17173: \$? = $ac_status" >&5
+- if (exit $ac_status) && test -s "$ac_outfile"; then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_pic_works_GCJ=yes
+- fi
+- fi
+- $rm conftest*
++ if test "$enable_shared" = yes && test "$GCC" = yes; then
++ case $archive_cmds_GCJ in
++ *'~'*)
++ # FIXME: we may have to deal with multi-command sequences.
++ ;;
++ '$CC '*)
++ # Test whether the compiler implicitly links with -lc since on some
++ # systems, -lgcc has to come before -lc. If gcc already passes -lc
++ # to ld, don't add -lc before -lgcc.
++ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
++ $rm conftest*
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; }
++ 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); } 2>conftest.err; then
++ soname=conftest
++ lib=conftest
++ libobjs=conftest.$ac_objext
++ deplibs=
++ wl=$lt_prog_compiler_wl_GCJ
++ compiler_flags=-v
++ linker_flags=-v
++ verstring=
++ output_objdir=.
++ libname=conftest
++ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
++ allow_undefined_flag_GCJ=
++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
++ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++ then
++ archive_cmds_need_lc_GCJ=no
++ else
++ archive_cmds_need_lc_GCJ=yes
++ fi
++ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
++ else
++ cat conftest.err 1>&5
++ fi
++ $rm conftest*
++ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
++echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
++ ;;
++ esac
++ fi
++ ;;
++esac
+
+-if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+- case $lt_prog_compiler_pic_GCJ in
+- "" | " "*) ;;
+- *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+- esac
++echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
++library_names_spec=
++libname_spec='lib$name'
++soname_spec=
++shrext_cmds=".so"
++postinstall_cmds=
++postuninstall_cmds=
++finish_cmds=
++finish_eval=
++shlibpath_var=
++shlibpath_overrides_runpath=unknown
++version_type=none
++dynamic_linker="$host_os ld.so"
++sys_lib_dlsearch_path_spec="/lib /usr/lib"
++if test "$GCC" = yes; then
++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
++ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
++ # if the path contains ";" then we assume it to be the separator
++ # otherwise default to the standard path separator (i.e. ":") - it is
++ # assumed that no part of a normal pathname contains ";" but that should
++ # okay in the real world where ";" in dirpaths is itself problematic.
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
+ else
+- lt_prog_compiler_pic_GCJ=
+- lt_prog_compiler_can_build_shared_GCJ=no
++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+ fi
++need_lib_prefix=unknown
++hardcode_into_libs=no
++
++# when you set need_version to no, make sure it does not cause -set_version
++# flags to be left without arguments
++need_version=unknown
+
+-fi
+ case $host_os in
+- # For platforms which do not support PIC, -DPIC is meaningless:
+- *djgpp*)
+- lt_prog_compiler_pic_GCJ=
++aix3*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
++ shlibpath_var=LIBPATH
++
++ # AIX 3 has no versioning support, so we append a major version to the name.
++ soname_spec='${libname}${release}${shared_ext}$major'
++ ;;
++
++aix4* | aix5*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ hardcode_into_libs=yes
++ if test "$host_cpu" = ia64; then
++ # AIX 5 supports IA64
++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ else
++ # With GCC up to 2.95.x, collect2 would create an import file
++ # for dependence libraries. The import file would start with
++ # the line `#! .'. This would cause the generated library to
++ # depend on `.', always an invalid library. This was fixed in
++ # development snapshots of GCC prior to 3.0.
++ case $host_os in
++ aix4 | aix4.[01] | aix4.[01].*)
++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
++ echo ' yes '
++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
++ :
++ else
++ can_build_shared=no
++ fi
++ ;;
++ esac
++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
++ # soname into executable. Probably we can add versioning support to
++ # collect2, so additional links can be useful in future.
++ if test "$aix_use_runtimelinking" = yes; then
++ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
++ # instead of lib<name>.a to let people know that these are not
++ # typical AIX shared libraries.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ else
++ # We preserve .a as extension for shared libraries through AIX4.2
++ # and later when we are not doing run time linking.
++ library_names_spec='${libname}${release}.a $libname.a'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ fi
++ shlibpath_var=LIBPATH
++ fi
++ ;;
++
++amigaos*)
++ library_names_spec='$libname.ixlibrary $libname.a'
++ # Create ${libname}_ixlibrary.a entries in /sys/libs.
++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
++ ;;
++
++beos*)
++ library_names_spec='${libname}${shared_ext}'
++ dynamic_linker="$host_os ld.so"
++ shlibpath_var=LIBRARY_PATH
++ ;;
++
++bsdi4*)
++ version_type=linux
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
++ # the default ld.so.conf also contains /usr/contrib/lib and
++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
++ # libtool to hard-code these into programs
++ ;;
++
++cygwin* | mingw* | pw32*)
++ version_type=windows
++ shrext_cmds=".dll"
++ need_version=no
++ need_lib_prefix=no
++
++ case $GCC,$host_os in
++ yes,cygwin* | yes,mingw* | yes,pw32*)
++ library_names_spec='$libname.dll.a'
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $rm \$dlpath'
++ shlibpath_overrides_runpath=yes
++
++ case $host_os in
++ cygwin*)
++ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
++ ;;
++ mingw*)
++ # MinGW DLLs use traditional 'lib' prefix
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH printed by
++ # mingw gcc, but we are running on Cygwin. Gcc prints its search
++ # path with ; separators, and with drive letters. We can handle the
++ # drive letters (cygwin fileutils understands them), so leave them,
++ # especially as we might pass files found there to a mingw objdump,
++ # which wouldn't understand a cygwinified path. Ahh.
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ ;;
++ pw32*)
++ # pw32 DLLs use 'pw' prefix rather than 'lib'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
++ ;;
++ esac
+ ;;
++
+ *)
+- lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+-esac
+-
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
+-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_static_works_GCJ=no
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_static_works_GCJ=yes
+- fi
+- else
+- lt_prog_compiler_static_works_GCJ=yes
+- fi
+- fi
+- $rm conftest*
+- LDFLAGS="$save_LDFLAGS"
+-
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
+-echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; }
+-
+-if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
+- :
+-else
+- lt_prog_compiler_static_GCJ=
+-fi
++ esac
++ dynamic_linker='Win32 ld.exe'
++ # FIXME: first we should search . and the directory the executable is in
++ shlibpath_var=PATH
++ ;;
+
++darwin* | rhapsody*)
++ dynamic_linker="$host_os dyld"
++ version_type=darwin
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
++ soname_spec='${libname}${release}${major}$shared_ext'
++ shlibpath_overrides_runpath=yes
++ shlibpath_var=DYLD_LIBRARY_PATH
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
++ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
++ if test "$GCC" = yes; then
++ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
++ else
++ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
++ fi
++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
++ ;;
+
+-{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+-if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_cv_prog_compiler_c_o_GCJ=no
+- $rm -r conftest 2>/dev/null
+- mkdir conftest
+- cd conftest
+- mkdir out
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++dgux*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
+
+- lt_compiler_flag="-o out/conftest2.$ac_objext"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:17273: $lt_compile\"" >&5)
+- (eval "$lt_compile" 2>out/conftest.err)
+- ac_status=$?
+- cat out/conftest.err >&5
+- echo "$as_me:17277: \$? = $ac_status" >&5
+- if (exit $ac_status) && test -s out/conftest2.$ac_objext
+- then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+- lt_cv_prog_compiler_c_o_GCJ=yes
+- fi
+- fi
+- chmod u+w . 2>&5
+- $rm conftest*
+- # SGI C++ compiler will create directory out/ii_files/ for
+- # template instantiation
+- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+- $rm out/* && rmdir out
+- cd ..
+- rmdir conftest
+- $rm conftest*
++freebsd1*)
++ dynamic_linker=no
++ ;;
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; }
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
+
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
++ version_type=freebsd-$objformat
++ case $version_type in
++ freebsd-elf*)
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
++ need_version=no
++ need_lib_prefix=no
++ ;;
++ freebsd-*)
++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
++ need_version=yes
++ ;;
++ esac
++ shlibpath_var=LD_LIBRARY_PATH
++ case $host_os in
++ freebsd2*)
++ shlibpath_overrides_runpath=yes
++ ;;
++ freebsd3.01* | freebsdelf3.01*)
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ ;;
++ *) # from 3.2 on
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ ;;
++ esac
++ ;;
+
+-hard_links="nottested"
+-if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+- # do not overwrite the value of need_locks provided by the user
+- { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
+- hard_links=yes
+- $rm conftest*
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- touch conftest.a
+- ln conftest.a conftest.b 2>&5 || hard_links=no
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- { echo "$as_me:$LINENO: result: $hard_links" >&5
+-echo "${ECHO_T}$hard_links" >&6; }
+- if test "$hard_links" = no; then
+- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+- need_locks=warn
+- fi
+-else
+- need_locks=no
+-fi
++gnu*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ hardcode_into_libs=yes
++ ;;
+
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++hpux9* | hpux10* | hpux11*)
++ # Give a soname corresponding to the major version so that dld.sl refuses to
++ # link against other versions.
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=no
++ case "$host_cpu" in
++ ia64*)
++ shrext_cmds='.so'
++ hardcode_into_libs=yes
++ dynamic_linker="$host_os dld.so"
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ if test "X$HPUX_IA64_MODE" = X32; then
++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
++ else
++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
++ fi
++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
++ ;;
++ hppa*64*)
++ shrext_cmds='.sl'
++ hardcode_into_libs=yes
++ dynamic_linker="$host_os dld.sl"
++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
++ ;;
++ *)
++ shrext_cmds='.sl'
++ dynamic_linker="$host_os dld.sl"
++ shlibpath_var=SHLIB_PATH
++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ ;;
++ esac
++ # HP-UX runs *really* slowly unless shared libraries are mode 555.
++ postinstall_cmds='chmod 555 $lib'
++ ;;
+
+- runpath_var=
+- allow_undefined_flag_GCJ=
+- enable_shared_with_static_runtimes_GCJ=no
+- archive_cmds_GCJ=
+- archive_expsym_cmds_GCJ=
+- old_archive_From_new_cmds_GCJ=
+- old_archive_from_expsyms_cmds_GCJ=
+- export_dynamic_flag_spec_GCJ=
+- whole_archive_flag_spec_GCJ=
+- thread_safe_flag_spec_GCJ=
+- hardcode_libdir_flag_spec_GCJ=
+- hardcode_libdir_flag_spec_ld_GCJ=
+- hardcode_libdir_separator_GCJ=
+- hardcode_direct_GCJ=no
+- hardcode_minus_L_GCJ=no
+- hardcode_shlibpath_var_GCJ=unsupported
+- link_all_deplibs_GCJ=unknown
+- hardcode_automatic_GCJ=no
+- module_cmds_GCJ=
+- module_expsym_cmds_GCJ=
+- always_export_symbols_GCJ=no
+- export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+- # include_expsyms should be a list of space-separated symbols to be *always*
+- # included in the symbol list
+- include_expsyms_GCJ=
+- # exclude_expsyms can be an extended regexp of symbols to exclude
+- # it will be wrapped by ` (' and `)$', so one must not match beginning or
+- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+- # as well as any symbol that contains `d'.
+- exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+- # platforms (ab)use it in PIC code, but their linkers get confused if
+- # the symbol is explicitly referenced. Since portable code cannot
+- # rely on this symbol name, it's probably fine to never include it in
+- # preloaded symbol tables.
+- extract_expsyms_cmds=
+- # Just being paranoid about ensuring that cc_basename is set.
+- for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
++irix5* | irix6* | nonstopux*)
++ case $host_os in
++ nonstopux*) version_type=nonstopux ;;
++ *)
++ if test "$lt_cv_prog_gnu_ld" = yes; then
++ version_type=linux
++ else
++ version_type=irix
++ fi ;;
+ esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-
++ need_lib_prefix=no
++ need_version=no
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+- cygwin* | mingw* | pw32*)
+- # FIXME: the MSVC++ port hasn't been tested in a loooong time
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- if test "$GCC" != yes; then
+- with_gnu_ld=no
+- fi
+- ;;
+- interix*)
+- # we just hope/assume this is gcc and not c89 (= MSVC++)
+- with_gnu_ld=yes
++ irix5* | nonstopux*)
++ libsuff= shlibsuff=
+ ;;
+- openbsd*)
+- with_gnu_ld=no
++ *)
++ case $LD in # libtool.m4 will add one of these switches to LD
++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
++ libsuff= shlibsuff= libmagic=32-bit;;
++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
++ libsuff=32 shlibsuff=N32 libmagic=N32;;
++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
++ libsuff=64 shlibsuff=64 libmagic=64-bit;;
++ *) libsuff= shlibsuff= libmagic=never-match;;
++ esac
+ ;;
+ esac
++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
++ shlibpath_overrides_runpath=no
++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
++ hardcode_into_libs=yes
++ ;;
+
+- ld_shlibs_GCJ=yes
+- if test "$with_gnu_ld" = yes; then
+- # If archive_cmds runs LD, not CC, wlarc should be empty
+- wlarc='${wl}'
+-
+- # Set some defaults for GNU ld with shared library support. These
+- # are reset later if shared libraries are not supported. Putting them
+- # here allows them to be overridden if necessary.
+- runpath_var=LD_RUN_PATH
+- hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+- export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+- whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- whole_archive_flag_spec_GCJ=
+- fi
+- supports_anon_versioning=no
+- case `$LD -v 2>/dev/null` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+- *\ 2.11.*) ;; # other 2.11 versions
+- *) supports_anon_versioning=yes ;;
+- esac
+-
+- # See if GNU ld supports shared libraries.
+- case $host_os in
+- aix3* | aix4* | aix5*)
+- # On AIX/PPC, the GNU linker is very broken
+- if test "$host_cpu" != ia64; then
+- ld_shlibs_GCJ=no
+- cat <<EOF 1>&2
+-
+-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+-*** to be unable to reliably create shared libraries on AIX.
+-*** Therefore, libtool is disabling shared libraries support. If you
+-*** really care for shared libraries, you may want to modify your PATH
+-*** so that a non-GNU linker is found, and then restart.
+-
+-EOF
+- fi
+- ;;
+-
+- amigaos*)
+- archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_minus_L_GCJ=yes
++# No shared lib support for Linux oldld, aout, or coff.
++linux*oldld* | linux*aout* | linux*coff*)
++ dynamic_linker=no
++ ;;
+
+- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+- # that the semantics of dynamic libraries on AmigaOS, at least up
+- # to version 4, is to share data among multiple programs linked
+- # with the same dynamic library. Since this doesn't match the
+- # behavior of shared libraries on other platforms, we can't use
+- # them.
+- ld_shlibs_GCJ=no
+- ;;
++# This must be Linux ELF.
++linux*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ # This implies no fast_install, which is unacceptable.
++ # Some rework will be needed to allow for fast_install
++ # before this can be enabled.
++ hardcode_into_libs=yes
+
+- beos*)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- allow_undefined_flag_GCJ=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- else
+- ld_shlibs_GCJ=no
+- fi
+- ;;
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '#line 17366 "configure"' > conftest.$ac_ext
++ 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
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
+
+- cygwin* | mingw* | pw32*)
+- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+- # as there is no search path for DLLs.
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- allow_undefined_flag_GCJ=unsupported
+- always_export_symbols_GCJ=no
+- enable_shared_with_static_runtimes_GCJ=yes
+- export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
++ # Append ld.so.conf contents to the search path
++ if test -f /etc/ld.so.conf; then
++ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
++ fi
+
+- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- # If the export-symbols file already is a .def file (1st line
+- # is EXPORTS), use it as is; otherwise, prepend...
+- archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+- cp $export_symbols $output_objdir/$soname.def;
+- else
+- echo EXPORTS > $output_objdir/$soname.def;
+- cat $export_symbols >> $output_objdir/$soname.def;
+- fi~
+- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- ld_shlibs_GCJ=no
+- fi
+- ;;
++ # We used to test for /lib/ld.so.1 and disable shared libraries on
++ # powerpc, because MkLinux only supported shared libraries with the
++ # GNU dynamic linker. Since this was broken with cross compilers,
++ # most powerpc-linux boxes support dynamic linking these days and
++ # people can always --disable-shared, the test was removed, and we
++ # assume the GNU/Linux dynamic linker is in use.
++ dynamic_linker='GNU/Linux ld.so'
++ ;;
+
+- interix3*)
+- hardcode_direct_GCJ=no
+- hardcode_shlibpath_var_GCJ=no
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_GCJ='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
++knetbsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
+
+- linux* | k*bsd*-gnu)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- tmp_addflag=
+- case $cc_basename,$host_cpu in
+- pgcc*) # Portland Group C compiler
+- whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag'
+- ;;
+- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+- whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag -Mnomain' ;;
+- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+- tmp_addflag=' -i_dynamic' ;;
+- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+- tmp_addflag=' -i_dynamic -nofor_main' ;;
+- ifc* | ifort*) # Intel Fortran compiler
+- tmp_addflag=' -nofor_main' ;;
+- esac
+- archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++netbsd*)
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=no
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
++ dynamic_linker='NetBSD (a.out) ld.so'
++ else
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ dynamic_linker='NetBSD ld.elf_so'
++ fi
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ ;;
+
+- if test $supports_anon_versioning = yes; then
+- archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- $echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+- fi
+- link_all_deplibs_GCJ=no
+- else
+- ld_shlibs_GCJ=no
+- fi
+- ;;
++newsos6)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ ;;
+
+- netbsd* | netbsdelf*-gnu)
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+- wlarc=
+- else
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- fi
+- ;;
++nto-qnx*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ ;;
+
+- solaris*)
+- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+- ld_shlibs_GCJ=no
+- cat <<EOF 1>&2
++openbsd*)
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=yes
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++ case $host_os in
++ openbsd2.[89] | openbsd2.[89].*)
++ shlibpath_overrides_runpath=no
++ ;;
++ *)
++ shlibpath_overrides_runpath=yes
++ ;;
++ esac
++ else
++ shlibpath_overrides_runpath=yes
++ fi
++ ;;
+
+-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+-*** create shared libraries on Solaris systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.9.1 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
++os2*)
++ libname_spec='$name'
++ shrext_cmds=".dll"
++ need_lib_prefix=no
++ library_names_spec='$libname${shared_ext} $libname.a'
++ dynamic_linker='OS/2 ld.exe'
++ shlibpath_var=LIBPATH
++ ;;
+
+-EOF
+- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- ld_shlibs_GCJ=no
+- fi
+- ;;
++osf3* | osf4* | osf5*)
++ version_type=osf
++ need_lib_prefix=no
++ need_version=no
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
++ ;;
+
+- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+- case `$LD -v 2>&1` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+- ld_shlibs_GCJ=no
+- cat <<_LT_EOF 1>&2
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
+
+-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+-*** reliably create shared libraries on SCO systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
++solaris*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ # ldd complains unless libraries are executable
++ postinstall_cmds='chmod +x $lib'
++ ;;
+
+-_LT_EOF
+- ;;
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+- else
+- ld_shlibs_GCJ=no
+- fi
+- ;;
+- esac
+- ;;
++sunos4*)
++ version_type=sunos
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ if test "$with_gnu_ld" = yes; then
++ need_lib_prefix=no
++ fi
++ need_version=yes
++ ;;
+
+- sunos4*)
+- archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- wlarc=
+- hardcode_direct_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ case $host_vendor in
++ sni)
++ shlibpath_overrides_runpath=no
++ need_lib_prefix=no
++ export_dynamic_flag_spec='${wl}-Blargedynsym'
++ runpath_var=LD_RUN_PATH
+ ;;
+-
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- ld_shlibs_GCJ=no
+- fi
++ siemens)
++ need_lib_prefix=no
+ ;;
+- esac
+-
+- if test "$ld_shlibs_GCJ" = no; then
+- runpath_var=
+- hardcode_libdir_flag_spec_GCJ=
+- export_dynamic_flag_spec_GCJ=
+- whole_archive_flag_spec_GCJ=
+- fi
+- else
+- # PORTME fill in a description of your system's linker (not GNU ld)
+- case $host_os in
+- aix3*)
+- allow_undefined_flag_GCJ=unsupported
+- always_export_symbols_GCJ=yes
+- archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+- # Note: this linker hardcodes the directories in LIBPATH if there
+- # are no directories specified by -L.
+- hardcode_minus_L_GCJ=yes
+- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+- # Neither direct hardcoding nor static linking is supported with a
+- # broken collect2.
+- hardcode_direct_GCJ=unsupported
+- fi
++ motorola)
++ need_lib_prefix=no
++ need_version=no
++ shlibpath_overrides_runpath=no
++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
++ esac
++ ;;
+
+- aix4* | aix5*)
+- if test "$host_cpu" = ia64; then
+- # On IA64, the linker does run time linking by default, so we don't
+- # have to do anything special.
+- aix_use_runtimelinking=no
+- exp_sym_flag='-Bexport'
+- no_entry_flag=""
+- else
+- # If we're using GNU nm, then we don't want the "-C" option.
+- # -C means demangle to AIX nm, but means don't demangle with GNU nm
+- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+- export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+- else
+- export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+- fi
+- aix_use_runtimelinking=no
+-
+- # Test if we are trying to use run time linking or normal
+- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+- # need to do runtime linking.
+- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+- for ld_flag in $LDFLAGS; do
+- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+- aix_use_runtimelinking=yes
+- break
+- fi
+- done
+- ;;
+- esac
+-
+- exp_sym_flag='-bexport'
+- no_entry_flag='-bnoentry'
+- fi
+-
+- # When large executables or shared objects are built, AIX ld can
+- # have problems creating the table of contents. If linking a library
+- # or program results in "error TOC overflow" add -mminimal-toc to
+- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
++sysv4*MP*)
++ if test -d /usr/nec ;then
++ version_type=linux
++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
++ soname_spec='$libname${shared_ext}.$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ fi
++ ;;
+
+- archive_cmds_GCJ=''
+- hardcode_direct_GCJ=yes
+- hardcode_libdir_separator_GCJ=':'
+- link_all_deplibs_GCJ=yes
++uts4*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
+
+- if test "$GCC" = yes; then
+- case $host_os in aix4.[012]|aix4.[012].*)
+- # We only want to do this on AIX 4.2 and lower, the check
+- # below for broken collect2 doesn't work under 4.3+
+- collect2name=`${CC} -print-prog-name=collect2`
+- if test -f "$collect2name" && \
+- strings "$collect2name" | grep resolve_lib_name >/dev/null
+- then
+- # We have reworked collect2
+- hardcode_direct_GCJ=yes
+- else
+- # We have old collect2
+- hardcode_direct_GCJ=unsupported
+- # It fails to find uninstalled libraries when the uninstalled
+- # path is not listed in the libpath. Setting hardcode_minus_L
+- # to unsupported forces relinking
+- hardcode_minus_L_GCJ=yes
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_libdir_separator_GCJ=
+- fi
+- ;;
+- esac
+- shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+- else
+- # not using gcc
+- if test "$host_cpu" = ia64; then
+- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+- # chokes on -Wl,-G. The following line is correct:
+- shared_flag='-G'
+- else
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag='${wl}-G'
+- else
+- shared_flag='${wl}-bM:SRE'
+- fi
+- fi
+- fi
++*)
++ dynamic_linker=no
++ ;;
++esac
++echo "$as_me:$LINENO: result: $dynamic_linker" >&5
++echo "${ECHO_T}$dynamic_linker" >&6
++test "$dynamic_linker" = no && can_build_shared=no
+
+- # It seems that -bexpall does not export symbols beginning with
+- # underscore (_), so it is better to generate a list of symbols to export.
+- always_export_symbols_GCJ=yes
+- if test "$aix_use_runtimelinking" = yes; then
+- # Warning - without using the other runtime loading flags (-brtl),
+- # -berok will link without error, but may produce a broken library.
+- allow_undefined_flag_GCJ='-berok'
+- # Determine the default libpath from the value encoded in an empty executable.
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
++hardcode_action_GCJ=
++if test -n "$hardcode_libdir_flag_spec_GCJ" || \
++ test -n "$runpath_var GCJ" || \
++ test "X$hardcode_automatic_GCJ"="Xyes" ; then
+
+-int
+-main ()
+-{
++ # We can hardcode non-existant directories.
++ if test "$hardcode_direct_GCJ" != no &&
++ # If the only mechanism to avoid hardcoding is shlibpath_var, we
++ # have to relink, otherwise we might link with an installed library
++ # when we should be linking with a yet-to-be-installed one
++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
++ test "$hardcode_minus_L_GCJ" != no; then
++ # Linking always hardcodes the temporary library directory.
++ hardcode_action_GCJ=relink
++ else
++ # We can link without hardcoding, and we can hardcode nonexisting dirs.
++ hardcode_action_GCJ=immediate
++ fi
++else
++ # We cannot hardcode anything, or else we can only hardcode existing
++ # directories.
++ hardcode_action_GCJ=unsupported
++fi
++echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
++echo "${ECHO_T}$hardcode_action_GCJ" >&6
+
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++if test "$hardcode_action_GCJ" = relink; then
++ # Fast installation is not supported
++ enable_fast_install=no
++elif test "$shlibpath_overrides_runpath" = yes ||
++ test "$enable_shared" = no; then
++ # Fast installation is not necessary
++ enable_fast_install=needless
++fi
+
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`; fi
++striplib=
++old_striplib=
++echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
++ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++# FIXME - insert some real tests, host_os isn't really good enough
++ case $host_os in
++ darwin*)
++ if test -n "$STRIP" ; then
++ striplib="$STRIP -x"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++ ;;
++ *)
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++ ;;
++ esac
++fi
++
++if test "x$enable_dlopen" != xyes; then
++ enable_dlopen=unknown
++ enable_dlopen_self=unknown
++ enable_dlopen_self_static=unknown
++else
++ lt_cv_dlopen=no
++ lt_cv_dlopen_libs=
+
++ case $host_os in
++ beos*)
++ lt_cv_dlopen="load_add_on"
++ lt_cv_dlopen_libs=
++ lt_cv_dlopen_self=yes
++ ;;
+
+-fi
++ mingw* | pw32*)
++ lt_cv_dlopen="LoadLibrary"
++ lt_cv_dlopen_libs=
++ ;;
+
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+- conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ cygwin*)
++ lt_cv_dlopen="dlopen"
++ lt_cv_dlopen_libs=
++ ;;
+
+- hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+- archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+- else
+- if test "$host_cpu" = ia64; then
+- hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+- allow_undefined_flag_GCJ="-z nodefs"
+- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+- else
+- # Determine the default libpath from the value encoded in an empty executable.
+- cat >conftest.$ac_ext <<_ACEOF
++ darwin*)
++ # if libdl is installed we need to link against it
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
++if test "${ac_cv_lib_dl_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldl $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.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 dlopen ();
+ int
+ main ()
+ {
+-
++dlopen ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+-
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`; fi
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+- conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+-
+- hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+- # Warning - without using the other run time loading flags,
+- # -berok will link without error, but may produce a broken library.
+- no_undefined_flag_GCJ=' ${wl}-bernotok'
+- allow_undefined_flag_GCJ=' ${wl}-berok'
+- # Exported symbols can be pulled into shared objects from archives
+- whole_archive_flag_spec_GCJ='$convenience'
+- archive_cmds_need_lc_GCJ=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+- fi
+- fi
+- ;;
+-
+- amigaos*)
+- archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_minus_L_GCJ=yes
+- # see comment about different semantics on the GNU ld section
+- ld_shlibs_GCJ=no
+- ;;
+-
+- bsdi[45]*)
+- export_dynamic_flag_spec_GCJ=-rdynamic
+- ;;
+-
+- cygwin* | mingw* | pw32*)
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- # hardcode_libdir_flag_spec is actually meaningless, as there is
+- # no search path for DLLs.
+- hardcode_libdir_flag_spec_GCJ=' '
+- allow_undefined_flag_GCJ=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_From_new_cmds_GCJ='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes_GCJ=yes
+- ;;
+-
+- darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[012])
+- allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[012])
+- allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
+- archive_cmds_need_lc_GCJ=no
+- hardcode_direct_GCJ=no
+- hardcode_automatic_GCJ=yes
+- hardcode_shlibpath_var_GCJ=unsupported
+- whole_archive_flag_spec_GCJ=''
+- link_all_deplibs_GCJ=yes
+- if test "$GCC" = yes ; then
+- output_verbose_link_cmd='echo'
+- archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- module_cmds_GCJ='$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 lds
+- archive_expsym_cmds_GCJ='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}'
+- module_expsym_cmds_GCJ='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}'
+- else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+- module_cmds_GCJ='$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 lds
+- archive_expsym_cmds_GCJ='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}'
+- module_expsym_cmds_GCJ='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}'
+- ;;
+- *)
+- ld_shlibs_GCJ=no
+- ;;
+- esac
+- fi
+- ;;
+-
+- dgux*)
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_shlibpath_var_GCJ=no
+- ;;
+-
+- freebsd1*)
+- ld_shlibs_GCJ=no
+- ;;
+-
+- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+- # support. Future versions do this automatically, but an explicit c++rt0.o
+- # does not break anything, and helps significantly (at the cost of a little
+- # extra space).
+- freebsd2.2*)
+- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+- hardcode_libdir_flag_spec_GCJ='-R$libdir'
+- hardcode_direct_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
+- ;;
+-
+- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+- freebsd2*)
+- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_GCJ=yes
+- hardcode_minus_L_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
+- ;;
+-
+- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd* | dragonfly*)
+- archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+- hardcode_libdir_flag_spec_GCJ='-R$libdir'
+- hardcode_direct_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
+- ;;
+-
+- hpux9*)
+- if test "$GCC" = yes; then
+- archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+- else
+- archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+- fi
+- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
+- hardcode_direct_GCJ=yes
+-
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_GCJ=yes
+- export_dynamic_flag_spec_GCJ='${wl}-E'
+- ;;
+-
+- hpux10*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
+-
+- hardcode_direct_GCJ=yes
+- export_dynamic_flag_spec_GCJ='${wl}-E'
+-
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_GCJ=yes
+- fi
+- ;;
+-
+- hpux11*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- else
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
+- hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+- hardcode_direct_GCJ=no
+- hardcode_shlibpath_var_GCJ=no
+- ;;
+- *)
+- hardcode_direct_GCJ=yes
+- export_dynamic_flag_spec_GCJ='${wl}-E'
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dl_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_GCJ=yes
+- ;;
+- esac
+- fi
+- ;;
++ac_cv_lib_dl_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
++if test $ac_cv_lib_dl_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
++else
+
+- irix5* | irix6* | nonstopux*)
+- if test "$GCC" = yes; then
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- else
+- archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+- hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+- fi
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
+- link_all_deplibs_GCJ=yes
+- ;;
++ lt_cv_dlopen="dyld"
++ lt_cv_dlopen_libs=
++ lt_cv_dlopen_self=yes
+
+- netbsd* | netbsdelf*-gnu)
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+- else
+- archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+- fi
+- hardcode_libdir_flag_spec_GCJ='-R$libdir'
+- hardcode_direct_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
+- ;;
++fi
+
+- newsos6)
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_GCJ=yes
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
+- hardcode_shlibpath_var_GCJ=no
+- ;;
++ ;;
+
+- openbsd*)
+- hardcode_direct_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_GCJ='${wl}-E'
+- else
+- case $host_os in
+- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_GCJ='-R$libdir'
+- ;;
+- *)
+- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+- ;;
+- esac
+- fi
+- ;;
++ *)
++ echo "$as_me:$LINENO: checking for shl_load" >&5
++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
++if test "${ac_cv_func_shl_load+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define shl_load innocuous_shl_load
+
+- os2*)
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_minus_L_GCJ=yes
+- allow_undefined_flag_GCJ=unsupported
+- archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+- old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+- ;;
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char shl_load (); below.
++ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ <limits.h> exists even on freestanding compilers. */
+
+- osf3*)
+- if test "$GCC" = yes; then
+- allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- else
+- allow_undefined_flag_GCJ=' -expect_unresolved \*'
+- archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+- fi
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
+- ;;
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
+
+- osf4* | osf5*) # as osf3* with the addition of -msym flag
+- if test "$GCC" = yes; then
+- allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+- else
+- allow_undefined_flag_GCJ=' -expect_unresolved \*'
+- archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+- archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
++#undef shl_load
+
+- # Both c and cxx compiler support -rpath directly
+- hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+- fi
+- hardcode_libdir_separator_GCJ=:
+- ;;
++/* 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 shl_load ();
++/* 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_shl_load) || defined (__stub___shl_load)
++choke me
++#else
++char (*f) () = shl_load;
++#endif
++#ifdef __cplusplus
++}
++#endif
+
+- solaris*)
+- no_undefined_flag_GCJ=' -z text'
+- if test "$GCC" = yes; then
+- wlarc='${wl}'
+- archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+- else
+- wlarc=''
+- archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+- fi
+- hardcode_libdir_flag_spec_GCJ='-R$libdir'
+- hardcode_shlibpath_var_GCJ=no
+- case $host_os in
+- solaris2.[0-5] | solaris2.[0-5].*) ;;
+- *)
+- # The compiler driver will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl, iff we do not link with $LD.
+- # Luckily, gcc supports the same syntax we need for Sun Studio.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- case $wlarc in
+- '')
+- whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+- *)
+- whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+- esac ;;
+- esac
+- link_all_deplibs_GCJ=yes
+- ;;
++int
++main ()
++{
++return f != shl_load;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_shl_load=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+- sunos4*)
+- if test "x$host_vendor" = xsequent; then
+- # Use $CC to link under sequent, because it throws in some extra .o
+- # files that make .init and .fini sections work.
+- archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_direct_GCJ=yes
+- hardcode_minus_L_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
+- ;;
++ac_cv_func_shl_load=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
++echo "${ECHO_T}$ac_cv_func_shl_load" >&6
++if test $ac_cv_func_shl_load = yes; then
++ lt_cv_dlopen="shl_load"
++else
++ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
++if test "${ac_cv_lib_dld_shl_load+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+- sysv4)
+- case $host_vendor in
+- sni)
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_GCJ=yes # is this really true???
+- ;;
+- siemens)
+- ## LD is ld it makes a PLAMLIB
+- ## CC just makes a GrossModule.
+- archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+- reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+- hardcode_direct_GCJ=no
+- ;;
+- motorola)
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+- ;;
+- esac
+- runpath_var='LD_RUN_PATH'
+- hardcode_shlibpath_var_GCJ=no
+- ;;
++/* 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 shl_load ();
++int
++main ()
++{
++shl_load ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dld_shl_load=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+- sysv4.3*)
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_shlibpath_var_GCJ=no
+- export_dynamic_flag_spec_GCJ='-Bexport'
+- ;;
++ac_cv_lib_dld_shl_load=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
++if test $ac_cv_lib_dld_shl_load = yes; then
++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
++else
++ echo "$as_me:$LINENO: checking for dlopen" >&5
++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
++if test "${ac_cv_func_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define dlopen innocuous_dlopen
+
+- sysv4*MP*)
+- if test -d /usr/nec; then
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_shlibpath_var_GCJ=no
+- runpath_var=LD_RUN_PATH
+- hardcode_runpath_var=yes
+- ld_shlibs_GCJ=yes
+- fi
+- ;;
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char dlopen (); below.
++ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ <limits.h> exists even on freestanding compilers. */
+
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+- no_undefined_flag_GCJ='${wl}-z,text'
+- archive_cmds_need_lc_GCJ=no
+- hardcode_shlibpath_var_GCJ=no
+- runpath_var='LD_RUN_PATH'
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
+
+- if test "$GCC" = yes; then
+- archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- fi
+- ;;
++#undef dlopen
+
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- no_undefined_flag_GCJ='${wl}-z,text'
+- allow_undefined_flag_GCJ='${wl}-z,nodefs'
+- archive_cmds_need_lc_GCJ=no
+- hardcode_shlibpath_var_GCJ=no
+- hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- hardcode_libdir_separator_GCJ=':'
+- link_all_deplibs_GCJ=yes
+- export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+- runpath_var='LD_RUN_PATH'
++/* 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 dlopen ();
++/* 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_dlopen) || defined (__stub___dlopen)
++choke me
++#else
++char (*f) () = dlopen;
++#endif
++#ifdef __cplusplus
++}
++#endif
+
+- if test "$GCC" = yes; then
+- archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- fi
+- ;;
++int
++main ()
++{
++return f != dlopen;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+- uts4*)
+- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_GCJ='-L$libdir'
+- hardcode_shlibpath_var_GCJ=no
+- ;;
++ac_cv_func_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
++echo "${ECHO_T}$ac_cv_func_dlopen" >&6
++if test $ac_cv_func_dlopen = yes; then
++ lt_cv_dlopen="dlopen"
++else
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
++if test "${ac_cv_lib_dl_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldl $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+- *)
+- ld_shlibs_GCJ=no
+- ;;
+- esac
+- fi
++/* 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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dl_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+-echo "${ECHO_T}$ld_shlibs_GCJ" >&6; }
+-test "$ld_shlibs_GCJ" = no && can_build_shared=no
++ac_cv_lib_dl_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
++if test $ac_cv_lib_dl_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
++else
++ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
++if test "${ac_cv_lib_svld_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-lsvld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-#
+-# Do we need to explicitly link libc?
+-#
+-case "x$archive_cmds_need_lc_GCJ" in
+-x|xyes)
+- # Assume -lc should be added
+- archive_cmds_need_lc_GCJ=yes
++/* 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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_svld_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+- if test "$enable_shared" = yes && test "$GCC" = yes; then
+- case $archive_cmds_GCJ in
+- *'~'*)
+- # FIXME: we may have to deal with multi-command sequences.
+- ;;
+- '$CC '*)
+- # Test whether the compiler implicitly links with -lc since on some
+- # systems, -lgcc has to come before -lc. If gcc already passes -lc
+- # to ld, don't add -lc before -lgcc.
+- { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+- $rm conftest*
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++ac_cv_lib_svld_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
++if test $ac_cv_lib_svld_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
++else
++ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
++if test "${ac_cv_lib_dld_dld_link+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
++/* 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 dld_link ();
++int
++main ()
++{
++dld_link ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } 2>conftest.err; then
+- soname=conftest
+- lib=conftest
+- libobjs=conftest.$ac_objext
+- deplibs=
+- wl=$lt_prog_compiler_wl_GCJ
+- pic_flag=$lt_prog_compiler_pic_GCJ
+- compiler_flags=-v
+- linker_flags=-v
+- verstring=
+- output_objdir=.
+- libname=conftest
+- lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+- allow_undefined_flag_GCJ=
+- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+- (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
++ (exit $ac_status); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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
+- archive_cmds_need_lc_GCJ=no
+- else
+- archive_cmds_need_lc_GCJ=yes
+- fi
+- allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+- else
+- cat conftest.err 1>&5
+- fi
+- $rm conftest*
+- { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+-echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; }
+- ;;
+- esac
+- fi
+- ;;
+-esac
+-
+-{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+-library_names_spec=
+-libname_spec='lib$name'
+-soname_spec=
+-shrext_cmds=".so"
+-postinstall_cmds=
+-postuninstall_cmds=
+-finish_cmds=
+-finish_eval=
+-shlibpath_var=
+-shlibpath_overrides_runpath=unknown
+-version_type=none
+-dynamic_linker="$host_os ld.so"
+-sys_lib_dlsearch_path_spec="/lib /usr/lib"
+-if test "$GCC" = yes; then
+- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+- # if the path contains ";" then we assume it to be the separator
+- # otherwise default to the standard path separator (i.e. ":") - it is
+- # assumed that no part of a normal pathname contains ";" but that should
+- # okay in the real world where ";" in dirpaths is itself problematic.
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+- else
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+- fi
++ (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_lib_dld_dld_link=yes
+ else
+- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+-fi
+-need_lib_prefix=unknown
+-hardcode_into_libs=no
+-
+-# when you set need_version to no, make sure it does not cause -set_version
+-# flags to be left without arguments
+-need_version=unknown
+-
+-case $host_os in
+-aix3*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+- shlibpath_var=LIBPATH
+-
+- # AIX 3 has no versioning support, so we append a major version to the name.
+- soname_spec='${libname}${release}${shared_ext}$major'
+- ;;
+-
+-aix4* | aix5*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- hardcode_into_libs=yes
+- if test "$host_cpu" = ia64; then
+- # AIX 5 supports IA64
+- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- else
+- # With GCC up to 2.95.x, collect2 would create an import file
+- # for dependence libraries. The import file would start with
+- # the line `#! .'. This would cause the generated library to
+- # depend on `.', always an invalid library. This was fixed in
+- # development snapshots of GCC prior to 3.0.
+- case $host_os in
+- aix4 | aix4.[01] | aix4.[01].*)
+- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+- echo ' yes '
+- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+- :
+- else
+- can_build_shared=no
+- fi
+- ;;
+- esac
+- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+- # soname into executable. Probably we can add versioning support to
+- # collect2, so additional links can be useful in future.
+- if test "$aix_use_runtimelinking" = yes; then
+- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+- # instead of lib<name>.a to let people know that these are not
+- # typical AIX shared libraries.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- else
+- # We preserve .a as extension for shared libraries through AIX4.2
+- # and later when we are not doing run time linking.
+- library_names_spec='${libname}${release}.a $libname.a'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- fi
+- shlibpath_var=LIBPATH
+- fi
+- ;;
+-
+-amigaos*)
+- library_names_spec='$libname.ixlibrary $libname.a'
+- # Create ${libname}_ixlibrary.a entries in /sys/libs.
+- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+- ;;
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-beos*)
+- library_names_spec='${libname}${shared_ext}'
+- dynamic_linker="$host_os ld.so"
+- shlibpath_var=LIBRARY_PATH
+- ;;
++ac_cv_lib_dld_dld_link=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
++if test $ac_cv_lib_dld_dld_link = yes; then
++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
++fi
+
+-bsdi[45]*)
+- version_type=linux
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+- # the default ld.so.conf also contains /usr/contrib/lib and
+- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+- # libtool to hard-code these into programs
+- ;;
+
+-cygwin* | mingw* | pw32*)
+- version_type=windows
+- shrext_cmds=".dll"
+- need_version=no
+- need_lib_prefix=no
++fi
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32*)
+- library_names_spec='$libname.dll.a'
+- # DLL is installed to $(libdir)/../bin by postinstall_cmds
+- postinstall_cmds='base_file=`basename \${file}`~
+- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+- dldir=$destdir/`dirname \$dlpath`~
+- test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
+- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+- dlpath=$dir/\$dldll~
+- $rm \$dlpath'
+- shlibpath_overrides_runpath=yes
+
+- case $host_os in
+- cygwin*)
+- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+- ;;
+- mingw*)
+- # MinGW DLLs use traditional 'lib' prefix
+- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+- # It is most probably a Windows format PATH printed by
+- # mingw gcc, but we are running on Cygwin. Gcc prints its search
+- # path with ; separators, and with drive letters. We can handle the
+- # drive letters (cygwin fileutils understands them), so leave them,
+- # especially as we might pass files found there to a mingw objdump,
+- # which wouldn't understand a cygwinified path. Ahh.
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+- else
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+- fi
+- ;;
+- pw32*)
+- # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+- ;;
+- esac
+- ;;
++fi
+
+- *)
+- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+- ;;
+- esac
+- dynamic_linker='Win32 ld.exe'
+- # FIXME: first we should search . and the directory the executable is in
+- shlibpath_var=PATH
+- ;;
+
+-darwin* | rhapsody*)
+- dynamic_linker="$host_os dyld"
+- version_type=darwin
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+- soname_spec='${libname}${release}${major}$shared_ext'
+- shlibpath_overrides_runpath=yes
+- shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+- if test "$GCC" = yes; then
+- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+- else
+- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+- fi
+- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+- ;;
++fi
+
+-dgux*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
+
+-freebsd1*)
+- dynamic_linker=no
+- ;;
++fi
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[123]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
+- version_type=freebsd-$objformat
+- case $version_type in
+- freebsd-elf*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- need_version=no
+- need_lib_prefix=no
+- ;;
+- freebsd-*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+- need_version=yes
+- ;;
+- esac
+- shlibpath_var=LD_LIBRARY_PATH
+- case $host_os in
+- freebsd2*)
+- shlibpath_overrides_runpath=yes
+- ;;
+- freebsd3.[01]* | freebsdelf3.[01]*)
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+- esac
+- ;;
+
+-gnu*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- ;;
++fi
+
+-hpux9* | hpux10* | hpux11*)
+- # Give a soname corresponding to the major version so that dld.sl refuses to
+- # link against other versions.
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- case $host_cpu in
+- ia64*)
+- shrext_cmds='.so'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.so"
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- if test "X$HPUX_IA64_MODE" = X32; then
+- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+- else
+- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+- fi
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+- ;;
+- hppa*64*)
+- shrext_cmds='.sl'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+- ;;
+- *)
+- shrext_cmds='.sl'
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=SHLIB_PATH
+- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+- # HP-UX runs *really* slowly unless shared libraries are mode 555.
+- postinstall_cmds='chmod 555 $lib'
+- ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
++ if test "x$lt_cv_dlopen" != xno; then
++ enable_dlopen=yes
++ else
++ enable_dlopen=no
++ fi
+
+-irix5* | irix6* | nonstopux*)
+- case $host_os in
+- nonstopux*) version_type=nonstopux ;;
+- *)
+- if test "$lt_cv_prog_gnu_ld" = yes; then
+- version_type=linux
+- else
+- version_type=irix
+- fi ;;
+- esac
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+- case $host_os in
+- irix5* | nonstopux*)
+- libsuff= shlibsuff=
+- ;;
+- *)
+- case $LD in # libtool.m4 will add one of these switches to LD
+- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+- libsuff= shlibsuff= libmagic=32-bit;;
+- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+- libsuff=32 shlibsuff=N32 libmagic=N32;;
+- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+- libsuff=64 shlibsuff=64 libmagic=64-bit;;
+- *) libsuff= shlibsuff= libmagic=never-match;;
+- esac
+- ;;
+- esac
+- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+- hardcode_into_libs=yes
+- ;;
++ case $lt_cv_dlopen in
++ dlopen)
++ save_CPPFLAGS="$CPPFLAGS"
++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+-# No shared lib support for Linux oldld, aout, or coff.
+-linux*oldld* | linux*aout* | linux*coff*)
+- dynamic_linker=no
+- ;;
++ save_LDFLAGS="$LDFLAGS"
++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+-# This must be Linux ELF.
+-linux* | k*bsd*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- # This implies no fast_install, which is unacceptable.
+- # Some rework will be needed to allow for fast_install
+- # before this can be enabled.
+- hardcode_into_libs=yes
++ save_LIBS="$LIBS"
++ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+- # Append ld.so.conf contents to the search path
+- if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+- fi
++ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
++if test "${lt_cv_dlopen_self+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test "$cross_compiling" = yes; then :
++ lt_cv_dlopen_self=cross
++else
++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
++ lt_status=$lt_dlunknown
++ cat > conftest.$ac_ext <<EOF
++#line 18237 "configure"
++#include "confdefs.h"
+
+- # We used to test for /lib/ld.so.1 and disable shared libraries on
+- # powerpc, because MkLinux only supported shared libraries with the
+- # GNU dynamic linker. Since this was broken with cross compilers,
+- # most powerpc-linux boxes support dynamic linking these days and
+- # people can always --disable-shared, the test was removed, and we
+- # assume the GNU/Linux dynamic linker is in use.
+- dynamic_linker='GNU/Linux ld.so'
+- ;;
++#if HAVE_DLFCN_H
++#include <dlfcn.h>
++#endif
+
+-netbsdelf*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
+- ;;
++#include <stdio.h>
+
+-netbsd*)
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- dynamic_linker='NetBSD (a.out) ld.so'
+- else
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='NetBSD ld.elf_so'
+- fi
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
++#ifdef RTLD_GLOBAL
++# define LT_DLGLOBAL RTLD_GLOBAL
++#else
++# ifdef DL_GLOBAL
++# define LT_DLGLOBAL DL_GLOBAL
++# else
++# define LT_DLGLOBAL 0
++# endif
++#endif
++
++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
++ find out it does not work in some platform. */
++#ifndef LT_DLLAZY_OR_NOW
++# ifdef RTLD_LAZY
++# define LT_DLLAZY_OR_NOW RTLD_LAZY
++# else
++# ifdef DL_LAZY
++# define LT_DLLAZY_OR_NOW DL_LAZY
++# else
++# ifdef RTLD_NOW
++# define LT_DLLAZY_OR_NOW RTLD_NOW
++# else
++# ifdef DL_NOW
++# define LT_DLLAZY_OR_NOW DL_NOW
++# else
++# define LT_DLLAZY_OR_NOW 0
++# endif
++# endif
++# endif
++# endif
++#endif
++
++#ifdef __cplusplus
++extern "C" void exit (int);
++#endif
+
+-newsos6)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- ;;
++void fnord() { int i=42;}
++int main ()
++{
++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
++ int status = $lt_dlunknown;
+
+-nto-qnx*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- ;;
++ if (self)
++ {
++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
++ /* dlclose (self); */
++ }
+
+-openbsd*)
+- version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+- need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- case $host_os in
+- openbsd2.[89] | openbsd2.[89].*)
+- shlibpath_overrides_runpath=no
+- ;;
+- *)
+- shlibpath_overrides_runpath=yes
+- ;;
+- esac
+- else
+- shlibpath_overrides_runpath=yes
++ exit (status);
++}
++EOF
++ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
++ (./conftest; exit; ) 2>/dev/null
++ lt_status=$?
++ case x$lt_status in
++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
++ esac
++ else :
++ # compilation failed
++ lt_cv_dlopen_self=no
+ fi
+- ;;
+-
+-os2*)
+- libname_spec='$name'
+- shrext_cmds=".dll"
+- need_lib_prefix=no
+- library_names_spec='$libname${shared_ext} $libname.a'
+- dynamic_linker='OS/2 ld.exe'
+- shlibpath_var=LIBPATH
+- ;;
++fi
++rm -fr conftest*
+
+-osf3* | osf4* | osf5*)
+- version_type=osf
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+- ;;
+
+-solaris*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- # ldd complains unless libraries are executable
+- postinstall_cmds='chmod +x $lib'
+- ;;
++fi
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+-sunos4*)
+- version_type=sunos
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- if test "$with_gnu_ld" = yes; then
+- need_lib_prefix=no
+- fi
+- need_version=yes
+- ;;
++ if test "x$lt_cv_dlopen_self" = xyes; then
++ LDFLAGS="$LDFLAGS $link_static_flag"
++ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
++if test "${lt_cv_dlopen_self_static+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test "$cross_compiling" = yes; then :
++ lt_cv_dlopen_self_static=cross
++else
++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
++ lt_status=$lt_dlunknown
++ cat > conftest.$ac_ext <<EOF
++#line 18335 "configure"
++#include "confdefs.h"
+
+-sysv4 | sysv4.3*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- case $host_vendor in
+- sni)
+- shlibpath_overrides_runpath=no
+- need_lib_prefix=no
+- export_dynamic_flag_spec='${wl}-Blargedynsym'
+- runpath_var=LD_RUN_PATH
+- ;;
+- siemens)
+- need_lib_prefix=no
+- ;;
+- motorola)
+- need_lib_prefix=no
+- need_version=no
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+- ;;
+- esac
+- ;;
++#if HAVE_DLFCN_H
++#include <dlfcn.h>
++#endif
+
+-sysv4*MP*)
+- if test -d /usr/nec ;then
+- version_type=linux
+- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+- soname_spec='$libname${shared_ext}.$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- fi
+- ;;
++#include <stdio.h>
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
+- esac
+- fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
++#ifdef RTLD_GLOBAL
++# define LT_DLGLOBAL RTLD_GLOBAL
++#else
++# ifdef DL_GLOBAL
++# define LT_DLGLOBAL DL_GLOBAL
++# else
++# define LT_DLGLOBAL 0
++# endif
++#endif
+
+-uts4*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
++ find out it does not work in some platform. */
++#ifndef LT_DLLAZY_OR_NOW
++# ifdef RTLD_LAZY
++# define LT_DLLAZY_OR_NOW RTLD_LAZY
++# else
++# ifdef DL_LAZY
++# define LT_DLLAZY_OR_NOW DL_LAZY
++# else
++# ifdef RTLD_NOW
++# define LT_DLLAZY_OR_NOW RTLD_NOW
++# else
++# ifdef DL_NOW
++# define LT_DLLAZY_OR_NOW DL_NOW
++# else
++# define LT_DLLAZY_OR_NOW 0
++# endif
++# endif
++# endif
++# endif
++#endif
+
+-*)
+- dynamic_linker=no
+- ;;
+-esac
+-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+-echo "${ECHO_T}$dynamic_linker" >&6; }
+-test "$dynamic_linker" = no && can_build_shared=no
++#ifdef __cplusplus
++extern "C" void exit (int);
++#endif
+
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+-fi
++void fnord() { int i=42;}
++int main ()
++{
++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
++ int status = $lt_dlunknown;
+
+-{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+-hardcode_action_GCJ=
+-if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+- test -n "$runpath_var_GCJ" || \
+- test "X$hardcode_automatic_GCJ" = "Xyes" ; then
++ if (self)
++ {
++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
++ /* dlclose (self); */
++ }
+
+- # We can hardcode non-existant directories.
+- if test "$hardcode_direct_GCJ" != no &&
+- # If the only mechanism to avoid hardcoding is shlibpath_var, we
+- # have to relink, otherwise we might link with an installed library
+- # when we should be linking with a yet-to-be-installed one
+- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+- test "$hardcode_minus_L_GCJ" != no; then
+- # Linking always hardcodes the temporary library directory.
+- hardcode_action_GCJ=relink
+- else
+- # We can link without hardcoding, and we can hardcode nonexisting dirs.
+- hardcode_action_GCJ=immediate
++ exit (status);
++}
++EOF
++ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
++ (./conftest; exit; ) 2>/dev/null
++ lt_status=$?
++ case x$lt_status in
++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
++ esac
++ else :
++ # compilation failed
++ lt_cv_dlopen_self_static=no
+ fi
+-else
+- # We cannot hardcode anything, or else we can only hardcode existing
+- # directories.
+- hardcode_action_GCJ=unsupported
+ fi
+-{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+-echo "${ECHO_T}$hardcode_action_GCJ" >&6; }
++rm -fr conftest*
+
+-if test "$hardcode_action_GCJ" = relink; then
+- # Fast installation is not supported
+- enable_fast_install=no
+-elif test "$shlibpath_overrides_runpath" = yes ||
+- test "$enable_shared" = no; then
+- # Fast installation is not necessary
+- enable_fast_install=needless
++
++fi
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
++ fi
++
++ CPPFLAGS="$save_CPPFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++ LIBS="$save_LIBS"
++ ;;
++ esac
++
++ case $lt_cv_dlopen_self in
++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
++ *) enable_dlopen_self=unknown ;;
++ esac
++
++ case $lt_cv_dlopen_self_static in
++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
++ *) enable_dlopen_self_static=unknown ;;
++ esac
+ fi
+
+
+@@ -19012,7 +18449,7 @@
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+@@ -19113,12 +18550,6 @@
+ # The host system.
+ host_alias=$host_alias
+ host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+
+ # An echo program that does not interpret backslashes.
+ echo=$lt_echo
+@@ -19130,9 +18561,6 @@
+ # A C compiler.
+ LTCC=$lt_LTCC
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+ # A language-specific compiler.
+ CC=$lt_compiler_GCJ
+
+@@ -19198,7 +18626,7 @@
+ # Does compiler simultaneously support -c and -o options?
+ compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+-# Must we lock files when doing compilation?
++# Must we lock files when doing compilation ?
+ need_locks=$lt_need_locks
+
+ # Do we need the lib prefix for modules?
+@@ -19423,6 +18851,7 @@
+ RC)
+
+
++
+ # Source file extension for RC test sources.
+ ac_ext=rc
+
+@@ -19441,42 +18870,15 @@
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ CC=${RC-"windres"}
+ compiler=$CC
+ compiler_RC=$CC
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-
+ lt_cv_prog_compiler_c_o_RC=yes
+
+ # The else clause should only fire when bootstrapping the
+@@ -19492,7 +18894,7 @@
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+@@ -19593,12 +18995,6 @@
+ # The host system.
+ host_alias=$host_alias
+ host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+
+ # An echo program that does not interpret backslashes.
+ echo=$lt_echo
+@@ -19610,9 +19006,6 @@
+ # A C compiler.
+ LTCC=$lt_LTCC
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+ # A language-specific compiler.
+ CC=$lt_compiler_RC
+
+@@ -19678,7 +19071,7 @@
+ # Does compiler simultaneously support -c and -o options?
+ compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+-# Must we lock files when doing compilation?
++# Must we lock files when doing compilation ?
+ need_locks=$lt_need_locks
+
+ # Do we need the lib prefix for modules?
+@@ -19953,9 +19346,10 @@
+
+
+
+-# Check whether --enable-shared was given.
++# Check whether --enable-shared or --disable-shared was given.
+ if test "${enable_shared+set}" = set; then
+- enableval=$enable_shared; p=${PACKAGE-default}
++ enableval="$enable_shared"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+@@ -19974,12 +19368,12 @@
+ esac
+ else
+ enable_shared=yes
+-fi
+-
++fi;
+
+-# Check whether --enable-static was given.
++# Check whether --enable-static or --disable-static was given.
+ if test "${enable_static+set}" = set; then
+- enableval=$enable_static; p=${PACKAGE-default}
++ enableval="$enable_static"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+@@ -19998,8 +19392,7 @@
+ esac
+ else
+ enable_static=no
+-fi
+-
++fi;
+
+
+ if test "$GCC" != "yes" ; then
+@@ -20020,8 +19413,8 @@
+ CFLAGS="$CFLAGS -O2 -g "
+ fi
+
+-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
++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
+@@ -20045,36 +19438,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20083,10 +19464,9 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_header_stdc=no
++ac_cv_header_stdc=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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.
+@@ -20142,7 +19522,6 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ctype.h>
+-#include <stdlib.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+@@ -20162,27 +19541,18 @@
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+- return 2;
+- return 0;
++ exit(2);
++ exit (0);
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>&5
++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'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20195,14 +19565,12 @@
+ ( exit $ac_status )
+ ac_cv_header_stdc=no
+ fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f 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; }
++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
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -20212,8 +19580,8 @@
+ fi
+
+
+-{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
+ if test "${ac_cv_c_const+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -20231,10 +19599,10 @@
+ #ifndef __cplusplus
+ /* Ultrix mips cc rejects this. */
+ typedef int charset[2];
+- const charset cs;
++ const charset x;
+ /* SunOS 4.1.1 cc rejects this. */
+- char const *const *pcpcc;
+- char **ppc;
++ char const *const *ccp;
++ char **p;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+@@ -20243,17 +19611,16 @@
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+- pcpcc = &g + (g ? g-g : 0);
++ ccp = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+- ++pcpcc;
+- ppc = (char**) pcpcc;
+- pcpcc = (char const *const *) ppc;
++ ++ccp;
++ p = (char**) ccp;
++ ccp = (char const *const *) p;
+ { /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+- if (s) return 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+@@ -20272,9 +19639,7 @@
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+- if (!foo) return 0;
+ }
+- return !cs[0] && !zero.x;
+ #endif
+
+ ;
+@@ -20282,36 +19647,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20320,13 +19673,12 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_c_const=no
++ac_cv_c_const=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+-echo "${ECHO_T}$ac_cv_c_const" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
++echo "${ECHO_T}$ac_cv_c_const" >&6
+ if test $ac_cv_c_const = no; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -20335,8 +19687,8 @@
+
+ fi
+
+-{ echo "$as_me:$LINENO: checking for inline" >&5
+-echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for inline" >&5
++echo $ECHO_N "checking for inline... $ECHO_C" >&6
+ if test "${ac_cv_c_inline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -20356,54 +19708,39 @@
+
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_c_inline=$ac_kw
++ ac_cv_c_inline=$ac_kw; break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+- test "$ac_cv_c_inline" != no && break
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+-echo "${ECHO_T}$ac_cv_c_inline" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
++echo "${ECHO_T}$ac_cv_c_inline" >&6
+
+
+ case $ac_cv_c_inline in
+@@ -20421,8 +19758,8 @@
+ ;;
+ esac
+
+-{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
+-echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
++echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
+ if test "${ac_cv_header_time+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -20446,36 +19783,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20484,13 +19809,12 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_header_time=no
++ac_cv_header_time=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
+-echo "${ECHO_T}$ac_cv_header_time" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
++echo "${ECHO_T}$ac_cv_header_time" >&6
+ if test $ac_cv_header_time = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -20499,8 +19823,8 @@
+
+ fi
+
+-{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+-echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; }
++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
+@@ -20517,8 +19841,7 @@
+ int
+ main ()
+ {
+-#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \
+- && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN)
++#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+ bogus endian macros
+ #endif
+
+@@ -20527,36 +19850,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20582,36 +19893,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20620,15 +19919,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_c_bigendian=no
++ac_cv_c_bigendian=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- # It does not; compile a test program.
++# 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
+@@ -20638,11 +19936,11 @@
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+-short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
++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 int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+-short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
++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 ()
+@@ -20653,36 +19951,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20701,10 +19987,8 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -20712,41 +19996,27 @@
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-$ac_includes_default
+ int
+ main ()
+ {
+-
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+- long int l;
+- char c[sizeof (long int)];
++ long l;
++ char c[sizeof (long)];
+ } u;
+ u.l = 1;
+- return u.c[sizeof (long int) - 1] == 1;
+-
+- ;
+- return 0;
++ exit (u.c[sizeof (long) - 1] == 1);
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>&5
++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'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20759,16 +20029,13 @@
+ ( exit $ac_status )
+ ac_cv_c_bigendian=yes
+ fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
+-
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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; }
++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)
+
+@@ -20810,8 +20077,8 @@
+
+
+
+-{ echo "$as_me:$LINENO: checking for clock_gettime in -lrt" >&5
+-echo $ECHO_N "checking for clock_gettime in -lrt... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for clock_gettime in -lrt" >&5
++echo $ECHO_N "checking for clock_gettime in -lrt... $ECHO_C" >&6
+ if test "${ac_cv_lib_rt_clock_gettime+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -20824,52 +20091,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 clock_gettime ();
+ int
+ main ()
+ {
+-return clock_gettime ();
++clock_gettime ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20878,15 +20133,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_rt_clock_gettime=no
++ac_cv_lib_rt_clock_gettime=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_rt_clock_gettime" >&5
+-echo "${ECHO_T}$ac_cv_lib_rt_clock_gettime" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_rt_clock_gettime" >&5
++echo "${ECHO_T}$ac_cv_lib_rt_clock_gettime" >&6
+ if test $ac_cv_lib_rt_clock_gettime = yes; then
+ LIBS="$LIBS -lrt"
+ fi
+@@ -20902,19 +20156,18 @@
+ for ac_header in soundcard.h sys/soundcard.h machine/soundcard.h sys/audio.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -20925,36 +20178,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20963,16 +20204,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -20981,13 +20221,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -21011,10 +20246,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -21038,19 +20272,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+-
++ (
++ cat <<\_ASBOX
++## ---------------------------------------- ##
++## Report this to the mediastreamer lists. ##
++## ---------------------------------------- ##
++_ASBOX
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -21080,9 +20320,10 @@
+ fi
+
+
+-# Check whether --enable-alsa was given.
++# Check whether --enable-alsa or --disable-alsa was given.
+ if test "${enable_alsa+set}" = set; then
+- enableval=$enable_alsa; case "${enableval}" in
++ enableval="$enable_alsa"
++ case "${enableval}" in
+ yes) alsa=true ;;
+ no) alsa=false ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-alsa" >&5
+@@ -21091,27 +20332,25 @@
+ esac
+ else
+ alsa=true
+-fi
+-
++fi;
+
+ if test "$alsa" = "true"; then
+
+ for ac_header in alsa/asoundlib.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -21122,36 +20361,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -21160,16 +20387,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -21178,13 +20404,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -21208,10 +20429,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -21235,27 +20455,33 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+-
++ (
++ cat <<\_ASBOX
++## ---------------------------------------- ##
++## Report this to the mediastreamer lists. ##
++## ---------------------------------------- ##
++_ASBOX
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+- { echo "$as_me:$LINENO: checking for snd_pcm_open in -lasound" >&5
+-echo $ECHO_N "checking for snd_pcm_open in -lasound... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for snd_pcm_open in -lasound" >&5
++echo $ECHO_N "checking for snd_pcm_open in -lasound... $ECHO_C" >&6
+ if test "${ac_cv_lib_asound_snd_pcm_open+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -21268,52 +20494,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 snd_pcm_open ();
+ int
+ main ()
+ {
+-return snd_pcm_open ();
++snd_pcm_open ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -21322,15 +20536,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_asound_snd_pcm_open=no
++ac_cv_lib_asound_snd_pcm_open=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_asound_snd_pcm_open" >&5
+-echo "${ECHO_T}$ac_cv_lib_asound_snd_pcm_open" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_asound_snd_pcm_open" >&5
++echo "${ECHO_T}$ac_cv_lib_asound_snd_pcm_open" >&6
+ if test $ac_cv_lib_asound_snd_pcm_open = yes; then
+ ALSA_LIBS="-lasound"
+ found_sound=yes
+@@ -21367,19 +20580,18 @@
+ for ac_header in kde/artsc/artsc.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -21390,36 +20602,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -21428,16 +20628,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -21446,13 +20645,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -21476,10 +20670,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -21503,27 +20696,33 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+-
++ (
++ cat <<\_ASBOX
++## ---------------------------------------- ##
++## Report this to the mediastreamer lists. ##
++## ---------------------------------------- ##
++_ASBOX
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+- { echo "$as_me:$LINENO: checking for arts_init in -lartsc" >&5
+-echo $ECHO_N "checking for arts_init in -lartsc... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for arts_init in -lartsc" >&5
++echo $ECHO_N "checking for arts_init in -lartsc... $ECHO_C" >&6
+ if test "${ac_cv_lib_artsc_arts_init+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -21536,52 +20735,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 arts_init ();
+ int
+ main ()
+ {
+-return arts_init ();
++arts_init ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -21590,15 +20777,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_artsc_arts_init=no
++ac_cv_lib_artsc_arts_init=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_artsc_arts_init" >&5
+-echo "${ECHO_T}$ac_cv_lib_artsc_arts_init" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_artsc_arts_init" >&5
++echo "${ECHO_T}$ac_cv_lib_artsc_arts_init" >&6
+ if test $ac_cv_lib_artsc_arts_init = yes; then
+ ARTS_LIBS="-lartsc"
+ found_sound=yes
+@@ -21629,9 +20815,10 @@
+ fi
+
+
+-# Check whether --enable-portaudio was given.
++# Check whether --enable-portaudio or --disable-portaudio was given.
+ if test "${enable_portaudio+set}" = set; then
+- enableval=$enable_portaudio; case "${enableval}" in
++ enableval="$enable_portaudio"
++ case "${enableval}" in
+ yes) portaudio=true ;;
+ no) portaudio=false ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-portaudio" >&5
+@@ -21640,27 +20827,25 @@
+ esac
+ else
+ portaudio=false
+-fi
+-
++fi;
+
+ if test "$portaudio" = "true"; then
+
+ for ac_header in portaudio.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -21671,36 +20856,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -21709,16 +20882,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -21727,13 +20899,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -21757,10 +20924,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -21784,27 +20950,33 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+-
++ (
++ cat <<\_ASBOX
++## ---------------------------------------- ##
++## Report this to the mediastreamer lists. ##
++## ---------------------------------------- ##
++_ASBOX
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+- { echo "$as_me:$LINENO: checking for Pa_Initialize in -lportaudio" >&5
+-echo $ECHO_N "checking for Pa_Initialize in -lportaudio... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for Pa_Initialize in -lportaudio" >&5
++echo $ECHO_N "checking for Pa_Initialize in -lportaudio... $ECHO_C" >&6
+ if test "${ac_cv_lib_portaudio_Pa_Initialize+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -21817,52 +20989,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 Pa_Initialize ();
+ int
+ main ()
+ {
+-return Pa_Initialize ();
++Pa_Initialize ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -21871,15 +21031,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_portaudio_Pa_Initialize=no
++ac_cv_lib_portaudio_Pa_Initialize=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_portaudio_Pa_Initialize" >&5
+-echo "${ECHO_T}$ac_cv_lib_portaudio_Pa_Initialize" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_portaudio_Pa_Initialize" >&5
++echo "${ECHO_T}$ac_cv_lib_portaudio_Pa_Initialize" >&6
+ if test $ac_cv_lib_portaudio_Pa_Initialize = yes; then
+ PORTAUDIO_LIBS="-lportaudio"
+ found_sound=yes
+@@ -21912,13 +21071,13 @@
+
+
+
++ succeeded=no
+
+-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++ if test -z "$PKG_CONFIG"; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -21933,41 +21092,90 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+ esac
+ fi
+ PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++
+ if test -n "$PKG_CONFIG"; then
+- { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+-echo "${ECHO_T}$PKG_CONFIG" >&6; }
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
++ 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
++ echo "$as_me:$LINENO: checking for jack >= 0.15.0" >&5
++echo $ECHO_N "checking for jack >= 0.15.0... $ECHO_C" >&6
++
++ if $PKG_CONFIG --exists "jack >= 0.15.0" ; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ succeeded=yes
++
++ echo "$as_me:$LINENO: checking JACK_CFLAGS" >&5
++echo $ECHO_N "checking JACK_CFLAGS... $ECHO_C" >&6
++ JACK_CFLAGS=`$PKG_CONFIG --cflags "jack >= 0.15.0"`
++ echo "$as_me:$LINENO: result: $JACK_CFLAGS" >&5
++echo "${ECHO_T}$JACK_CFLAGS" >&6
++
++ echo "$as_me:$LINENO: checking JACK_LIBS" >&5
++echo $ECHO_N "checking JACK_LIBS... $ECHO_C" >&6
++ JACK_LIBS=`$PKG_CONFIG --libs "jack >= 0.15.0"`
++ echo "$as_me:$LINENO: result: $JACK_LIBS" >&5
++echo "${ECHO_T}$JACK_LIBS" >&6
++ else
++ JACK_CFLAGS=""
++ JACK_LIBS=""
++ ## If we have a custom action on failure, don't print errors, but
++ ## do set a variable so people can do so.
++ JACK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "jack >= 0.15.0"`
+
+-fi
+-if test -z "$ac_cv_path_PKG_CONFIG"; then
+- ac_pt_PKG_CONFIG=$PKG_CONFIG
+- # Extract the first word of "pkg-config", so it can be a program name with args.
++ fi
++
++
++
++ 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
++
++
++ succeeded=no
++
++ if test -z "$PKG_CONFIG"; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
+ set dummy pkg-config; 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_path_ac_pt_PKG_CONFIG+set}" = set; then
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- case $ac_pt_PKG_CONFIG in
++ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+- ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+@@ -21976,200 +21184,75 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+ esac
+ fi
+-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+-if test -n "$ac_pt_PKG_CONFIG"; then
+- { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+-echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; }
+-else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+-fi
+-
+- if test "x$ac_pt_PKG_CONFIG" = x; then
+- PKG_CONFIG=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- PKG_CONFIG=$ac_pt_PKG_CONFIG
+- fi
+-else
+- PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+-fi
+-
+-fi
+-if test -n "$PKG_CONFIG"; then
+- _pkg_min_version=0.9.0
+- { echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+-echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; }
+- if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
+- else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+- PKG_CONFIG=""
+- fi
+-
+-fi
+-
+-pkg_failed=no
+-{ echo "$as_me:$LINENO: checking for JACK" >&5
+-echo $ECHO_N "checking for JACK... $ECHO_C" >&6; }
+-
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$JACK_CFLAGS"; then
+- pkg_cv_JACK_CFLAGS="$JACK_CFLAGS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"jack >= 0.15.0\"") >&5
+- ($PKG_CONFIG --exists --print-errors "jack >= 0.15.0") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_JACK_CFLAGS=`$PKG_CONFIG --cflags "jack >= 0.15.0" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
+-else
+- pkg_failed=untried
+-fi
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$JACK_LIBS"; then
+- pkg_cv_JACK_LIBS="$JACK_LIBS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"jack >= 0.15.0\"") >&5
+- ($PKG_CONFIG --exists --print-errors "jack >= 0.15.0") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_JACK_LIBS=`$PKG_CONFIG --libs "jack >= 0.15.0" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
+-else
+- pkg_failed=untried
+-fi
+-
+-
+-
+-if test $pkg_failed = yes; then
+-
+-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
+-else
+- _pkg_short_errors_supported=no
+-fi
+- if test $_pkg_short_errors_supported = yes; then
+- JACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "jack >= 0.15.0"`
+- else
+- JACK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "jack >= 0.15.0"`
+- fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$JACK_PKG_ERRORS" >&5
+-
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+- echo "No jack support."
+-elif test $pkg_failed = untried; then
+- echo "No jack support."
+-else
+- JACK_CFLAGS=$pkg_cv_JACK_CFLAGS
+- JACK_LIBS=$pkg_cv_JACK_LIBS
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
+-
+-
+-pkg_failed=no
+-{ echo "$as_me:$LINENO: checking for SAMPLERATE" >&5
+-echo $ECHO_N "checking for SAMPLERATE... $ECHO_C" >&6; }
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+ if test -n "$PKG_CONFIG"; then
+- if test -n "$SAMPLERATE_CFLAGS"; then
+- pkg_cv_SAMPLERATE_CFLAGS="$SAMPLERATE_CFLAGS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"samplerate >= 0.0.13\"") >&5
+- ($PKG_CONFIG --exists --print-errors "samplerate >= 0.0.13") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_SAMPLERATE_CFLAGS=`$PKG_CONFIG --cflags "samplerate >= 0.0.13" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
+-else
+- pkg_failed=untried
+-fi
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$SAMPLERATE_LIBS"; then
+- pkg_cv_SAMPLERATE_LIBS="$SAMPLERATE_LIBS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"samplerate >= 0.0.13\"") >&5
+- ($PKG_CONFIG --exists --print-errors "samplerate >= 0.0.13") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_SAMPLERATE_LIBS=`$PKG_CONFIG --libs "samplerate >= 0.0.13" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
+-else
+- pkg_failed=untried
+-fi
+-
+-
+-
+-if test $pkg_failed = yes; then
+-
+-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
+ else
+- _pkg_short_errors_supported=no
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+- if test $_pkg_short_errors_supported = yes; then
+- SAMPLERATE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "samplerate >= 0.0.13"`
++
++ 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
++ echo "$as_me:$LINENO: checking for samplerate >= 0.0.13" >&5
++echo $ECHO_N "checking for samplerate >= 0.0.13... $ECHO_C" >&6
++
++ if $PKG_CONFIG --exists "samplerate >= 0.0.13" ; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ succeeded=yes
++
++ echo "$as_me:$LINENO: checking SAMPLERATE_CFLAGS" >&5
++echo $ECHO_N "checking SAMPLERATE_CFLAGS... $ECHO_C" >&6
++ SAMPLERATE_CFLAGS=`$PKG_CONFIG --cflags "samplerate >= 0.0.13"`
++ echo "$as_me:$LINENO: result: $SAMPLERATE_CFLAGS" >&5
++echo "${ECHO_T}$SAMPLERATE_CFLAGS" >&6
++
++ echo "$as_me:$LINENO: checking SAMPLERATE_LIBS" >&5
++echo $ECHO_N "checking SAMPLERATE_LIBS... $ECHO_C" >&6
++ SAMPLERATE_LIBS=`$PKG_CONFIG --libs "samplerate >= 0.0.13"`
++ echo "$as_me:$LINENO: result: $SAMPLERATE_LIBS" >&5
++echo "${ECHO_T}$SAMPLERATE_LIBS" >&6
+ else
+- SAMPLERATE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "samplerate >= 0.0.13"`
++ SAMPLERATE_CFLAGS=""
++ SAMPLERATE_LIBS=""
++ ## If we have a custom action on failure, don't print errors, but
++ ## do set a variable so people can do so.
++ SAMPLERATE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "samplerate >= 0.0.13"`
++
+ fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$SAMPLERATE_PKG_ERRORS" >&5
+
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+- echo "libsamplerate not found, jack support disabled."
+-elif test $pkg_failed = untried; then
+- echo "libsamplerate not found, jack support disabled."
+-else
+- SAMPLERATE_CFLAGS=$pkg_cv_SAMPLERATE_CFLAGS
+- SAMPLERATE_LIBS=$pkg_cv_SAMPLERATE_LIBS
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++
++
++ 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
+
+ cat >>confdefs.h <<\_ACEOF
+ #define __JACK_ENABLED__ 1
+@@ -22177,11 +21260,17 @@
+
+ found_sound=yes
+ jack_found=yes
+-fi
++ else
++ echo "libsamplerate not found, jack support disabled."
++ fi
+
+
+
+-fi
++
++ else
++ echo "No jack support."
++ fi
++
+
+ if test x$jack_found = xno ; then
+ JACK_CFLAGS=
+@@ -22202,193 +21291,204 @@
+
+
+
+-pkg_failed=no
+-{ echo "$as_me:$LINENO: checking for SPEEX" >&5
+-echo $ECHO_N "checking for SPEEX... $ECHO_C" >&6; }
++ succeeded=no
+
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$SPEEX_CFLAGS"; then
+- pkg_cv_SPEEX_CFLAGS="$SPEEX_CFLAGS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"speex >= 1.1.12\"") >&5
+- ($PKG_CONFIG --exists --print-errors "speex >= 1.1.12") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_SPEEX_CFLAGS=`$PKG_CONFIG --cflags "speex >= 1.1.12" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
++ if test -z "$PKG_CONFIG"; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- pkg_failed=untried
++ case $PKG_CONFIG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
++ ;;
++ *)
++ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
++ ;;
++esac
+ fi
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++
+ if test -n "$PKG_CONFIG"; then
+- if test -n "$SPEEX_LIBS"; then
+- pkg_cv_SPEEX_LIBS="$SPEEX_LIBS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"speex >= 1.1.12\"") >&5
+- ($PKG_CONFIG --exists --print-errors "speex >= 1.1.12") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_SPEEX_LIBS=`$PKG_CONFIG --libs "speex >= 1.1.12" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
+ else
+- pkg_failed=untried
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
++ fi
+
+-
+-if test $pkg_failed = yes; then
+-
+-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
+-else
+- _pkg_short_errors_supported=no
+-fi
+- if test $_pkg_short_errors_supported = yes; then
+- SPEEX_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "speex >= 1.1.12"`
++ 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
++ echo "$as_me:$LINENO: checking for speex >= 1.1.12" >&5
++echo $ECHO_N "checking for speex >= 1.1.12... $ECHO_C" >&6
++
++ if $PKG_CONFIG --exists "speex >= 1.1.12" ; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ succeeded=yes
++
++ echo "$as_me:$LINENO: checking SPEEX_CFLAGS" >&5
++echo $ECHO_N "checking SPEEX_CFLAGS... $ECHO_C" >&6
++ SPEEX_CFLAGS=`$PKG_CONFIG --cflags "speex >= 1.1.12"`
++ echo "$as_me:$LINENO: result: $SPEEX_CFLAGS" >&5
++echo "${ECHO_T}$SPEEX_CFLAGS" >&6
++
++ echo "$as_me:$LINENO: checking SPEEX_LIBS" >&5
++echo $ECHO_N "checking SPEEX_LIBS... $ECHO_C" >&6
++ SPEEX_LIBS=`$PKG_CONFIG --libs "speex >= 1.1.12"`
++ echo "$as_me:$LINENO: result: $SPEEX_LIBS" >&5
++echo "${ECHO_T}$SPEEX_LIBS" >&6
+ else
+- SPEEX_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "speex >= 1.1.12"`
++ SPEEX_CFLAGS=""
++ SPEEX_LIBS=""
++ ## If we have a custom action on failure, don't print errors, but
++ ## do set a variable so people can do so.
++ SPEEX_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "speex >= 1.1.12"`
++
+ fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$SPEEX_PKG_ERRORS" >&5
+
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+- try_other_speex=yes
+
+-elif test $pkg_failed = untried; then
+- try_other_speex=yes
+
+-else
+- SPEEX_CFLAGS=$pkg_cv_SPEEX_CFLAGS
+- SPEEX_LIBS=$pkg_cv_SPEEX_LIBS
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++ 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
+
+ cat >>confdefs.h <<\_ACEOF
+ #define HAVE_SPEEX_NOISE 1
+ _ACEOF
+
+-fi
++ else
++ try_other_speex=yes
+
+-pkg_failed=no
+-{ echo "$as_me:$LINENO: checking for SPEEX" >&5
+-echo $ECHO_N "checking for SPEEX... $ECHO_C" >&6; }
++ fi
+
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$SPEEX_CFLAGS"; then
+- pkg_cv_SPEEX_CFLAGS="$SPEEX_CFLAGS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"speex >= 1.1.6\"") >&5
+- ($PKG_CONFIG --exists --print-errors "speex >= 1.1.6") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_SPEEX_CFLAGS=`$PKG_CONFIG --cflags "speex >= 1.1.6" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
++
++ succeeded=no
++
++ if test -z "$PKG_CONFIG"; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- pkg_failed=untried
++ case $PKG_CONFIG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
++ ;;
++ *)
++ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
++ ;;
++esac
+ fi
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++
+ if test -n "$PKG_CONFIG"; then
+- if test -n "$SPEEX_LIBS"; then
+- pkg_cv_SPEEX_LIBS="$SPEEX_LIBS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"speex >= 1.1.6\"") >&5
+- ($PKG_CONFIG --exists --print-errors "speex >= 1.1.6") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_SPEEX_LIBS=`$PKG_CONFIG --libs "speex >= 1.1.6" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
+ else
+- pkg_failed=untried
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
++ fi
+
+-
+-if test $pkg_failed = yes; then
+-
+-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
+-else
+- _pkg_short_errors_supported=no
+-fi
+- if test $_pkg_short_errors_supported = yes; then
+- SPEEX_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "speex >= 1.1.6"`
++ 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
++ echo "$as_me:$LINENO: checking for speex >= 1.1.6" >&5
++echo $ECHO_N "checking for speex >= 1.1.6... $ECHO_C" >&6
++
++ if $PKG_CONFIG --exists "speex >= 1.1.6" ; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ succeeded=yes
++
++ echo "$as_me:$LINENO: checking SPEEX_CFLAGS" >&5
++echo $ECHO_N "checking SPEEX_CFLAGS... $ECHO_C" >&6
++ SPEEX_CFLAGS=`$PKG_CONFIG --cflags "speex >= 1.1.6"`
++ echo "$as_me:$LINENO: result: $SPEEX_CFLAGS" >&5
++echo "${ECHO_T}$SPEEX_CFLAGS" >&6
++
++ echo "$as_me:$LINENO: checking SPEEX_LIBS" >&5
++echo $ECHO_N "checking SPEEX_LIBS... $ECHO_C" >&6
++ SPEEX_LIBS=`$PKG_CONFIG --libs "speex >= 1.1.6"`
++ echo "$as_me:$LINENO: result: $SPEEX_LIBS" >&5
++echo "${ECHO_T}$SPEEX_LIBS" >&6
+ else
+- SPEEX_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "speex >= 1.1.6"`
++ SPEEX_CFLAGS=""
++ SPEEX_LIBS=""
++ ## If we have a custom action on failure, don't print errors, but
++ ## do set a variable so people can do so.
++ SPEEX_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "speex >= 1.1.6"`
++ echo $SPEEX_PKG_ERRORS
+ fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$SPEEX_PKG_ERRORS" >&5
+-
+- { { echo "$as_me:$LINENO: error: Package requirements (speex >= 1.1.6) were not met:
+
+-$SPEEX_PKG_ERRORS
+
+-Consider adjusting the PKG_CONFIG_PATH environment variable if you
+-installed software in a non-standard prefix.
+
+-Alternatively, you may set the environment variables SPEEX_CFLAGS
+-and SPEEX_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details.
+-" >&5
+-echo "$as_me: error: Package requirements (speex >= 1.1.6) were not met:
+-
+-$SPEEX_PKG_ERRORS
+-
+-Consider adjusting the PKG_CONFIG_PATH environment variable if you
+-installed software in a non-standard prefix.
++ 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
+
+-Alternatively, you may set the environment variables SPEEX_CFLAGS
+-and SPEEX_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details.
+-" >&2;}
++ if test $succeeded = yes; then
++ build_speex=yes
++ else
++ { { echo "$as_me:$LINENO: error: Library requirements (speex >= 1.1.6) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5
++echo "$as_me: error: Library requirements (speex >= 1.1.6) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;}
+ { (exit 1); exit 1; }; }
+-elif test $pkg_failed = untried; then
+- { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it
+-is in your PATH or set the PKG_CONFIG environment variable to the full
+-path to pkg-config.
+-
+-Alternatively, you may set the environment variables SPEEX_CFLAGS
+-and SPEEX_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details.
+-
+-To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it
+-is in your PATH or set the PKG_CONFIG environment variable to the full
+-path to pkg-config.
+-
+-Alternatively, you may set the environment variables SPEEX_CFLAGS
+-and SPEEX_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details.
++ fi
+
+-To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+-See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
+-else
+- SPEEX_CFLAGS=$pkg_cv_SPEEX_CFLAGS
+- SPEEX_LIBS=$pkg_cv_SPEEX_LIBS
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
+- build_speex=yes
+-fi
+
+
+
+@@ -22403,13 +21503,13 @@
+
+
+
+-# Check whether --with-gsm was given.
++# Check whether --with-gsm or --without-gsm was given.
+ if test "${with_gsm+set}" = set; then
+- withval=$with_gsm; gsmdir=${withval}
++ withval="$with_gsm"
++ gsmdir=${withval}
+ else
+ gsmdir=/usr
+-fi
+-
++fi;
+ if test -e ../gsmlib/gsm.h ; then
+ echo "building from linphone source tree, using ../gsmlib/gsm.h"
+ GSM_CFLAGS="-I\$(top_srcdir)/../gsmlib"
+@@ -22442,19 +21542,18 @@
+ for ac_header in $dep_header
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -22465,36 +21564,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -22503,16 +21590,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -22521,13 +21607,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -22551,10 +21632,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -22578,19 +21658,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+-
++ (
++ cat <<\_ASBOX
++## ---------------------------------------- ##
++## Report this to the mediastreamer lists. ##
++## ---------------------------------------- ##
++_ASBOX
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -22598,9 +21684,9 @@
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+ as_ac_Lib=`echo "ac_cv_lib_$dep_lib''_$dep_funclib" | $as_tr_sh`
+-{ echo "$as_me:$LINENO: checking for $dep_funclib in -l$dep_lib" >&5
+-echo $ECHO_N "checking for $dep_funclib in -l$dep_lib... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then
++echo "$as_me:$LINENO: checking for $dep_funclib in -l$dep_lib" >&5
++echo $ECHO_N "checking for $dep_funclib in -l$dep_lib... $ECHO_C" >&6
++if eval "test \"\${$as_ac_Lib+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_check_lib_save_LIBS=$LIBS
+@@ -22612,52 +21698,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 $dep_funclib ();
+ int
+ main ()
+ {
+-return $dep_funclib ();
++$dep_funclib ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -22666,16 +21740,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- eval "$as_ac_Lib=no"
++eval "$as_ac_Lib=no"
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-ac_res=`eval echo '${'$as_ac_Lib'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Lib'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
+ if test `eval echo '${'$as_ac_Lib'}'` = yes; then
+ found=yes
+ else
+@@ -22722,9 +21794,10 @@
+
+
+
+- # Check whether --enable-video was given.
++ # Check whether --enable-video or --disable-video was given.
+ if test "${enable_video+set}" = set; then
+- enableval=$enable_video; case "${enableval}" in
++ enableval="$enable_video"
++ case "${enableval}" in
+ yes) video=true ;;
+ no) video=false ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-video" >&5
+@@ -22733,108 +21806,130 @@
+ esac
+ else
+ video=true
+-fi
++fi;
+
+
+-
+-# Check whether --with-ffmpeg was given.
++# Check whether --with-ffmpeg or --without-ffmpeg was given.
+ if test "${with_ffmpeg+set}" = set; then
+- withval=$with_ffmpeg; ffmpegdir=${withval}
++ withval="$with_ffmpeg"
++ ffmpegdir=${withval}
+ else
+ ffmpegdir=/usr
+-fi
++fi;
+
+
+-
+-# Check whether --with-sdl was given.
++# Check whether --with-sdl or --without-sdl was given.
+ if test "${with_sdl+set}" = set; then
+- withval=$with_sdl; libsdldir=${withval}
++ withval="$with_sdl"
++ libsdldir=${withval}
+ else
+ libsdldir=/usr
+-fi
+-
++fi;
+
+ if test "$video" = "true"; then
+
+
+-pkg_failed=no
+-{ echo "$as_me:$LINENO: checking for FFMPEG" >&5
+-echo $ECHO_N "checking for FFMPEG... $ECHO_C" >&6; }
++ succeeded=no
+
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$FFMPEG_CFLAGS"; then
+- pkg_cv_FFMPEG_CFLAGS="$FFMPEG_CFLAGS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 50.0.0 \"") >&5
+- ($PKG_CONFIG --exists --print-errors "libavcodec >= 50.0.0 ") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_FFMPEG_CFLAGS=`$PKG_CONFIG --cflags "libavcodec >= 50.0.0 " 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
++ if test -z "$PKG_CONFIG"; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- pkg_failed=untried
++ case $PKG_CONFIG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
++ ;;
++ *)
++ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
++ ;;
++esac
+ fi
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++
+ if test -n "$PKG_CONFIG"; then
+- if test -n "$FFMPEG_LIBS"; then
+- pkg_cv_FFMPEG_LIBS="$FFMPEG_LIBS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 50.0.0 \"") >&5
+- ($PKG_CONFIG --exists --print-errors "libavcodec >= 50.0.0 ") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_FFMPEG_LIBS=`$PKG_CONFIG --libs "libavcodec >= 50.0.0 " 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
+ else
+- pkg_failed=untried
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
++ fi
+
+-
+-if test $pkg_failed = yes; then
+-
+-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
+-else
+- _pkg_short_errors_supported=no
+-fi
+- if test $_pkg_short_errors_supported = yes; then
+- FFMPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libavcodec >= 50.0.0 "`
++ 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
++ echo "$as_me:$LINENO: checking for libavcodec >= 50.0.0 " >&5
++echo $ECHO_N "checking for libavcodec >= 50.0.0 ... $ECHO_C" >&6
++
++ if $PKG_CONFIG --exists "libavcodec >= 50.0.0 " ; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ succeeded=yes
++
++ echo "$as_me:$LINENO: checking FFMPEG_CFLAGS" >&5
++echo $ECHO_N "checking FFMPEG_CFLAGS... $ECHO_C" >&6
++ FFMPEG_CFLAGS=`$PKG_CONFIG --cflags "libavcodec >= 50.0.0 "`
++ echo "$as_me:$LINENO: result: $FFMPEG_CFLAGS" >&5
++echo "${ECHO_T}$FFMPEG_CFLAGS" >&6
++
++ echo "$as_me:$LINENO: checking FFMPEG_LIBS" >&5
++echo $ECHO_N "checking FFMPEG_LIBS... $ECHO_C" >&6
++ FFMPEG_LIBS=`$PKG_CONFIG --libs "libavcodec >= 50.0.0 "`
++ echo "$as_me:$LINENO: result: $FFMPEG_LIBS" >&5
++echo "${ECHO_T}$FFMPEG_LIBS" >&6
+ else
+- FFMPEG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libavcodec >= 50.0.0 "`
++ FFMPEG_CFLAGS=""
++ FFMPEG_LIBS=""
++ ## If we have a custom action on failure, don't print errors, but
++ ## do set a variable so people can do so.
++ FFMPEG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libavcodec >= 50.0.0 "`
++
+ fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$FFMPEG_PKG_ERRORS" >&5
+
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+- { { echo "$as_me:$LINENO: error: Could not find ffmpeg headers and library. This is mandatory for video support" >&5
+-echo "$as_me: error: Could not find ffmpeg headers and library. This is mandatory for video support" >&2;}
+- { (exit 1); exit 1; }; }
+-elif test $pkg_failed = untried; then
+- { { echo "$as_me:$LINENO: error: Could not find ffmpeg headers and library. This is mandatory for video support" >&5
++
++
++ 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
++ :
++ else
++ { { echo "$as_me:$LINENO: error: Could not find ffmpeg headers and library. This is mandatory for video support" >&5
+ echo "$as_me: error: Could not find ffmpeg headers and library. This is mandatory for video support" >&2;}
+ { (exit 1); exit 1; }; }
+-else
+- FFMPEG_CFLAGS=$pkg_cv_FFMPEG_CFLAGS
+- FFMPEG_LIBS=$pkg_cv_FFMPEG_LIBS
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
+- :
+-fi
++ fi
+
+
+-{ echo "$as_me:$LINENO: checking for avcodec_register_all in -lavcodec" >&5
+-echo $ECHO_N "checking for avcodec_register_all in -lavcodec... $ECHO_C" >&6; }
++
++echo "$as_me:$LINENO: checking for avcodec_register_all in -lavcodec" >&5
++echo $ECHO_N "checking for avcodec_register_all in -lavcodec... $ECHO_C" >&6
+ if test "${ac_cv_lib_avcodec_avcodec_register_all+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -22847,52 +21942,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 avcodec_register_all ();
+ int
+ main ()
+ {
+-return avcodec_register_all ();
++avcodec_register_all ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -22901,15 +21984,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_avcodec_avcodec_register_all=no
++ac_cv_lib_avcodec_avcodec_register_all=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_avcodec_avcodec_register_all" >&5
+-echo "${ECHO_T}$ac_cv_lib_avcodec_avcodec_register_all" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_avcodec_avcodec_register_all" >&5
++echo "${ECHO_T}$ac_cv_lib_avcodec_avcodec_register_all" >&6
+ if test $ac_cv_lib_avcodec_avcodec_register_all = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_LIBAVCODEC 1
+@@ -22948,19 +22030,18 @@
+ for ac_header in $dep_header
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -22971,36 +22052,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -23009,16 +22078,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -23027,13 +22095,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -23057,10 +22120,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -23084,19 +22146,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+-
++ (
++ cat <<\_ASBOX
++## ---------------------------------------- ##
++## Report this to the mediastreamer lists. ##
++## ---------------------------------------- ##
++_ASBOX
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -23104,9 +22172,9 @@
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+ as_ac_Lib=`echo "ac_cv_lib_$dep_lib''_$dep_funclib" | $as_tr_sh`
+-{ echo "$as_me:$LINENO: checking for $dep_funclib in -l$dep_lib" >&5
+-echo $ECHO_N "checking for $dep_funclib in -l$dep_lib... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then
++echo "$as_me:$LINENO: checking for $dep_funclib in -l$dep_lib" >&5
++echo $ECHO_N "checking for $dep_funclib in -l$dep_lib... $ECHO_C" >&6
++if eval "test \"\${$as_ac_Lib+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_check_lib_save_LIBS=$LIBS
+@@ -23118,52 +22186,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 $dep_funclib ();
+ int
+ main ()
+ {
+-return $dep_funclib ();
++$dep_funclib ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -23172,16 +22228,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- eval "$as_ac_Lib=no"
++eval "$as_ac_Lib=no"
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-ac_res=`eval echo '${'$as_ac_Lib'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Lib'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
+ if test `eval echo '${'$as_ac_Lib'}'` = yes; then
+ found=yes
+ else
+@@ -23216,76 +22270,101 @@
+ fi
+
+
+-pkg_failed=no
+-{ echo "$as_me:$LINENO: checking for THEORA" >&5
+-echo $ECHO_N "checking for THEORA... $ECHO_C" >&6; }
++ succeeded=no
++
++ if test -z "$PKG_CONFIG"; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $PKG_CONFIG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
++ ;;
++ *)
++ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
+
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$THEORA_CFLAGS"; then
+- pkg_cv_THEORA_CFLAGS="$THEORA_CFLAGS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"theora >= 1.0alpha7 \"") >&5
+- ($PKG_CONFIG --exists --print-errors "theora >= 1.0alpha7 ") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_THEORA_CFLAGS=`$PKG_CONFIG --cflags "theora >= 1.0alpha7 " 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
+-else
+- pkg_failed=untried
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
++ ;;
++esac
+ fi
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++
+ if test -n "$PKG_CONFIG"; then
+- if test -n "$THEORA_LIBS"; then
+- pkg_cv_THEORA_LIBS="$THEORA_LIBS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"theora >= 1.0alpha7 \"") >&5
+- ($PKG_CONFIG --exists --print-errors "theora >= 1.0alpha7 ") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_THEORA_LIBS=`$PKG_CONFIG --libs "theora >= 1.0alpha7 " 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
+ else
+- pkg_failed=untried
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
++ fi
+
+-
+-if test $pkg_failed = yes; then
+-
+-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
+-else
+- _pkg_short_errors_supported=no
+-fi
+- if test $_pkg_short_errors_supported = yes; then
+- THEORA_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "theora >= 1.0alpha7 "`
++ 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
++ echo "$as_me:$LINENO: checking for theora >= 1.0alpha7 " >&5
++echo $ECHO_N "checking for theora >= 1.0alpha7 ... $ECHO_C" >&6
++
++ if $PKG_CONFIG --exists "theora >= 1.0alpha7 " ; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ succeeded=yes
++
++ echo "$as_me:$LINENO: checking THEORA_CFLAGS" >&5
++echo $ECHO_N "checking THEORA_CFLAGS... $ECHO_C" >&6
++ THEORA_CFLAGS=`$PKG_CONFIG --cflags "theora >= 1.0alpha7 "`
++ echo "$as_me:$LINENO: result: $THEORA_CFLAGS" >&5
++echo "${ECHO_T}$THEORA_CFLAGS" >&6
++
++ echo "$as_me:$LINENO: checking THEORA_LIBS" >&5
++echo $ECHO_N "checking THEORA_LIBS... $ECHO_C" >&6
++ THEORA_LIBS=`$PKG_CONFIG --libs "theora >= 1.0alpha7 "`
++ echo "$as_me:$LINENO: result: $THEORA_LIBS" >&5
++echo "${ECHO_T}$THEORA_LIBS" >&6
+ else
+- THEORA_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "theora >= 1.0alpha7 "`
++ THEORA_CFLAGS=""
++ THEORA_LIBS=""
++ ## If we have a custom action on failure, don't print errors, but
++ ## do set a variable so people can do so.
++ THEORA_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "theora >= 1.0alpha7 "`
++
+ fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$THEORA_PKG_ERRORS" >&5
+
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+- have_theora=no
+-elif test $pkg_failed = untried; then
+- have_theora=no
+-else
+- THEORA_CFLAGS=$pkg_cv_THEORA_CFLAGS
+- THEORA_LIBS=$pkg_cv_THEORA_LIBS
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
+- have_theora=yes
+-fi
++
++
++ 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
++ have_theora=yes
++ else
++ have_theora=no
++ fi
++
+
+ VIDEO_CFLAGS=" $FFMPEG_CFLAGS $SDL_CFLAGS -DVIDEO_ENABLED "
+ VIDEO_LIBS=" $FFMPEG_LIBS $SDL_LIBS"
+@@ -23324,80 +22403,103 @@
+ fi
+ else
+
+-pkg_failed=no
+-{ echo "$as_me:$LINENO: checking for ORTP" >&5
+-echo $ECHO_N "checking for ORTP... $ECHO_C" >&6; }
++ succeeded=no
+
+-if test -n "$PKG_CONFIG"; then
+- if test -n "$ORTP_CFLAGS"; then
+- pkg_cv_ORTP_CFLAGS="$ORTP_CFLAGS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ortp >= 0.9.0\"") >&5
+- ($PKG_CONFIG --exists --print-errors "ortp >= 0.9.0") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_ORTP_CFLAGS=`$PKG_CONFIG --cflags "ortp >= 0.9.0" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
++ if test -z "$PKG_CONFIG"; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- pkg_failed=untried
++ case $PKG_CONFIG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
++ ;;
++ *)
++ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
++ ;;
++esac
+ fi
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++
+ if test -n "$PKG_CONFIG"; then
+- if test -n "$ORTP_LIBS"; then
+- pkg_cv_ORTP_LIBS="$ORTP_LIBS"
+- else
+- if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ortp >= 0.9.0\"") >&5
+- ($PKG_CONFIG --exists --print-errors "ortp >= 0.9.0") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; then
+- pkg_cv_ORTP_LIBS=`$PKG_CONFIG --libs "ortp >= 0.9.0" 2>/dev/null`
+-else
+- pkg_failed=yes
+-fi
+- fi
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
+ else
+- pkg_failed=untried
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
++ fi
+
+-
+-if test $pkg_failed = yes; then
+-
+-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
+-else
+- _pkg_short_errors_supported=no
+-fi
+- if test $_pkg_short_errors_supported = yes; then
+- ORTP_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ortp >= 0.9.0"`
++ 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
++ echo "$as_me:$LINENO: checking for ortp >= 0.9.0" >&5
++echo $ECHO_N "checking for ortp >= 0.9.0... $ECHO_C" >&6
++
++ if $PKG_CONFIG --exists "ortp >= 0.9.0" ; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ succeeded=yes
++
++ echo "$as_me:$LINENO: checking ORTP_CFLAGS" >&5
++echo $ECHO_N "checking ORTP_CFLAGS... $ECHO_C" >&6
++ ORTP_CFLAGS=`$PKG_CONFIG --cflags "ortp >= 0.9.0"`
++ echo "$as_me:$LINENO: result: $ORTP_CFLAGS" >&5
++echo "${ECHO_T}$ORTP_CFLAGS" >&6
++
++ echo "$as_me:$LINENO: checking ORTP_LIBS" >&5
++echo $ECHO_N "checking ORTP_LIBS... $ECHO_C" >&6
++ ORTP_LIBS=`$PKG_CONFIG --libs "ortp >= 0.9.0"`
++ echo "$as_me:$LINENO: result: $ORTP_LIBS" >&5
++echo "${ECHO_T}$ORTP_LIBS" >&6
+ else
+- ORTP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ortp >= 0.9.0"`
++ ORTP_CFLAGS=""
++ ORTP_LIBS=""
++ ## If we have a custom action on failure, don't print errors, but
++ ## do set a variable so people can do so.
++ ORTP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ortp >= 0.9.0"`
++
+ fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$ORTP_PKG_ERRORS" >&5
+
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
+- { { echo "$as_me:$LINENO: error: Couldn't find ortp library" >&5
+-echo "$as_me: error: Couldn't find ortp library" >&2;}
+- { (exit 1); exit 1; }; }
+-elif test $pkg_failed = untried; then
+- { { echo "$as_me:$LINENO: error: Couldn't find ortp library" >&5
++
++
++ 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
++ :
++ else
++ { { echo "$as_me:$LINENO: error: Couldn't find ortp library" >&5
+ echo "$as_me: error: Couldn't find ortp library" >&2;}
+ { (exit 1); exit 1; }; }
+-else
+- ORTP_CFLAGS=$pkg_cv_ORTP_CFLAGS
+- ORTP_LIBS=$pkg_cv_ORTP_LIBS
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
+- :
+-fi
++ fi
++
+ fi
+
+
+@@ -23407,19 +22509,18 @@
+ for ac_header in dlfcn.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -23430,36 +22531,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -23468,16 +22557,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -23486,13 +22574,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -23516,10 +22599,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -23543,19 +22625,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+-
++ (
++ cat <<\_ASBOX
++## ---------------------------------------- ##
++## Report this to the mediastreamer lists. ##
++## ---------------------------------------- ##
++_ASBOX
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -23568,8 +22656,8 @@
+ done
+
+ have_dlopen=false
+-{ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+ if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -23582,52 +22670,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ int
+ main ()
+ {
+-return dlopen ();
++dlopen ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -23636,21 +22712,20 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_dl_dlopen=no
++ac_cv_lib_dl_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+ if test $ac_cv_lib_dl_dlopen = yes; then
+ LIBS="$LIBS -ldl"; have_dlopen=true
+ fi
+
+-{ echo "$as_me:$LINENO: checking for dlopen" >&5
+-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for dlopen" >&5
++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+ if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -23677,59 +22752,53 @@
+
+ #undef dlopen
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ /* 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_dlopen || defined __stub___dlopen
++#if defined (__stub_dlopen) || defined (__stub___dlopen)
+ choke me
++#else
++char (*f) () = dlopen;
++#endif
++#ifdef __cplusplus
++}
+ #endif
+
+ int
+ main ()
+ {
+-return dlopen ();
++return f != dlopen;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -23738,14 +22807,13 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_func_dlopen=no
++ac_cv_func_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_func_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
++echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+ if test $ac_cv_func_dlopen = yes; then
+ have_dlopen=true
+ fi
+@@ -23769,8 +22837,8 @@
+
+ # Extract the first word of "epm", so it can be a program name with args.
+ set dummy epm; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_path_EPM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -23785,33 +22853,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_EPM="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_EPM" && ac_cv_path_EPM="false"
+ ;;
+ esac
+ fi
+ EPM=$ac_cv_path_EPM
++
+ if test -n "$EPM"; then
+- { echo "$as_me:$LINENO: result: $EPM" >&5
+-echo "${ECHO_T}$EPM" >&6; }
++ echo "$as_me:$LINENO: result: $EPM" >&5
++echo "${ECHO_T}$EPM" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ # Extract the first word of "mkepmlist", so it can be a program name with args.
+ set dummy mkepmlist; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_path_MKEPMLIST+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -23826,33 +22893,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_MKEPMLIST="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_MKEPMLIST" && ac_cv_path_MKEPMLIST="false"
+ ;;
+ esac
+ fi
+ MKEPMLIST=$ac_cv_path_MKEPMLIST
++
+ if test -n "$MKEPMLIST"; then
+- { echo "$as_me:$LINENO: result: $MKEPMLIST" >&5
+-echo "${ECHO_T}$MKEPMLIST" >&6; }
++ echo "$as_me:$LINENO: result: $MKEPMLIST" >&5
++echo "${ECHO_T}$MKEPMLIST" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ # Extract the first word of "epminstall", so it can be a program name with args.
+ set dummy epminstall; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_path_EPMINSTALL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -23867,31 +22933,30 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_EPMINSTALL="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_EPMINSTALL" && ac_cv_path_EPMINSTALL="false"
+ ;;
+ esac
+ fi
+ EPMINSTALL=$ac_cv_path_EPMINSTALL
++
+ if test -n "$EPMINSTALL"; then
+- { echo "$as_me:$LINENO: result: $EPMINSTALL" >&5
+-echo "${ECHO_T}$EPMINSTALL" >&6; }
++ echo "$as_me:$LINENO: result: $EPMINSTALL" >&5
++echo "${ECHO_T}$EPMINSTALL" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+
+
+-
+ if test $EPM != false && test $MKEPMLIST != false && test $EPMINSTALL != false; then
+ WITH_EPM_TRUE=
+ WITH_EPM_FALSE='#'
+@@ -23953,8 +23018,7 @@
+
+
+
+-ac_config_files="$ac_config_files Makefile include/Makefile include/mediastreamer2/Makefile src/Makefile tests/Makefile build/Makefile build/win32native/Makefile build/wince/Makefile plugins/Makefile plugins/plugins.mk mediastreamer.pc mediastreamer2.spec"
+-
++ ac_config_files="$ac_config_files Makefile include/Makefile include/mediastreamer2/Makefile src/Makefile tests/Makefile build/Makefile build/win32native/Makefile build/wince/Makefile plugins/Makefile plugins/plugins.mk mediastreamer.pc mediastreamer2.spec"
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+@@ -23973,58 +23037,39 @@
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, we kill variables containing newlines.
++# 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.
+-(
+- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+- eval ac_val=\$$ac_var
+- case $ac_val in #(
+- *${as_nl}*)
+- case $ac_var in #(
+- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+- esac
+- case $ac_var in #(
+- _ | IFS | as_nl) ;; #(
+- *) $as_unset $ac_var ;;
+- esac ;;
+- esac
+- done
+-
++{
+ (set) 2>&1 |
+- case $as_nl`(ac_space=' '; set) 2>&1` in #(
+- *${as_nl}ac_space=\ *)
++ 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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
++ sed -n \
++ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+- esac |
+- sort
+-) |
++ esac;
++} |
+ sed '
+- /^ac_cv_env_/b end
+ t clear
+- :clear
++ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- :end' >>confcache
+-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+- if test -w "$cache_file"; then
+- test "x$cache_file" != "x/dev/null" &&
+- { echo "$as_me:$LINENO: updating cache $cache_file" >&5
+-echo "$as_me: updating cache $cache_file" >&6;}
++ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ : end' >>confcache
++if diff $cache_file confcache >/dev/null 2>&1; then :; else
++ if test -w $cache_file; then
++ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+- { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+-echo "$as_me: not updating unwritable cache $cache_file" >&6;}
++ echo "not updating unwritable cache $cache_file"
+ fi
+ fi
+ rm -f confcache
+@@ -24033,18 +23078,32 @@
+ # 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).
++if test "x$srcdir" = x.; then
++ ac_vpsub='/^[ ]*VPATH[ ]*=/{
++s/:*\$(srcdir):*/:/;
++s/:*\${srcdir}:*/:/;
++s/:*@srcdir@:*/:/;
++s/^\([^=]*=[ ]*\):*/\1/;
++s/:*$//;
++s/^[^=]*=[ ]*$//;
++}'
++fi
++
+ DEFS=-DHAVE_CONFIG_H
+
+ 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_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+- ac_i=`echo "$ac_i" | sed "$ac_script"`
+- # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+- # will be set to the directory where LIBOBJS objects are built.
+- ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+- ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
++ 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
+
+@@ -24166,35 +23225,11 @@
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+- setopt NO_GLOB_SUBST
+-else
+- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
++elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
++ set -o posix
+ fi
+-BIN_SH=xpg4; export BIN_SH # for Tru64
+ DUALCASE=1; export DUALCASE # for MKS sh
+
+-
+-# PATH needs CR
+-# 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
+-
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+@@ -24203,43 +23238,8 @@
+ fi
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order. Quoting is
+-# there to prevent editors from complaining about space-tab.
+-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+-# splitting by setting IFS to empty value.)
+-as_nl='
+-'
+-IFS=" "" $as_nl"
+-
+-# Find who we are. Look in the path if we contain no directory separator.
+-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
+-IFS=$as_save_IFS
+-
+- ;;
+-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_myself: error: cannot find myself; rerun with an absolute file name" >&2
+- { (exit 1); exit 1; }
+-fi
+-
+ # Work around bugs in pre-3.0 UWIN ksh.
+-for as_var in ENV MAIL MAILPATH
+-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+-done
++$as_unset ENV MAIL MAILPATH
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -24253,19 +23253,18 @@
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++ $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1 &&
+- test "X`expr 00001 : '.*\(...\)'`" = X001; then
++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
++if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -24273,120 +23272,159 @@
+
+
+ # Name of the executable.
+-as_me=`$as_basename -- "$0" ||
++as_me=`$as_basename "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
++ X"$0" : 'X\(/\)$' \| \
++ . : '\(.\)' 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{
+- s//\1/
+- q
+- }
+- /^X\/\(\/\/\)$/{
+- s//\1/
+- q
+- }
+- /^X\/\(\/\).*/{
+- s//\1/
+- q
+- }
+- s/.*/./; q'`
++ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
++ /^X\/\(\/\/\)$/{ s//\1/; q; }
++ /^X\/\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+
+-# CDPATH.
+-$as_unset CDPATH
++
++# 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:$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`expr $as_lineno_1 + 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 after each line using $LINENO; the second 'sed'
+- # does the real work. The second script uses 'N' to pair each
+- # line-number line with the line containing $LINENO, and appends
+- # trailing '-' during substitution so that $LINENO is not a special
+- # case at line end.
++ # 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
+- # scripts with optimization help from Paolo Bonzini. Blame Lee
+- # E. McMahon (1931-1989) for sed's syntax. :-)
+- sed -n '
+- p
+- /[$]LINENO/=
+- ' <$as_myself |
++ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
++ sed '=' <$as_myself |
+ sed '
+- s/[$]LINENO.*/&-/
+- t lineno
+- b
+- :lineno
+ N
+- :loop
+- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
++ s,$,-,
++ : loop
++ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+- s/-\n.*//
++ 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
++ 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 sensitive to this).
+- . "./$as_me.lineno"
++ # original and so on. Autoconf is especially sensible to this).
++ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+- as_dirname=dirname
+-else
+- as_dirname=false
+-fi
+-
+-ECHO_C= ECHO_N= ECHO_T=
+-case `echo -n x` in
+--n*)
+- case `echo 'x\c'` in
+- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+- *) ECHO_C='\c';;
+- esac;;
+-*)
+- ECHO_N='-n';;
++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 &&
+- test "X`expr 00001 : '.*\(...\)'`" = X001; then
++if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
+-if test -d conf$$.dir; then
+- rm -f conf$$.dir/conf$$.file
+-else
+- rm -f conf$$.dir
+- mkdir conf$$.dir
+-fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- as_ln_s='ln -s'
+- # ... but there are two gotchas:
+- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+- # In both cases, we have to default to `cp -p'.
+- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
++ # 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$$.dir/conf$$.file conf$$.file
+-rmdir conf$$.dir 2>/dev/null
++rm -f conf$$ conf$$.exe conf$$.file
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -24395,19 +23433,7 @@
+ as_mkdir_p=false
+ fi
+
+-# Find out whether ``test -x'' works. Don't use a zero-byte file, as
+-# systems may use methods other than mode bits to determine executability.
+-cat >conf$$.file <<_ASEOF
+-#! /bin/sh
+-exit 0
+-_ASEOF
+-chmod +x conf$$.file
+-if test -x conf$$.file >/dev/null 2>&1; then
+- as_executable_p="test -x"
+-else
+- as_executable_p=:
+-fi
+-rm -f conf$$.file
++as_executable_p="test -f"
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -24416,14 +23442,31 @@
+ as_tr_sh="eval 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
+
+-# Save the log message, to keep $[0] and so on meaningful, and to
+-# report actual input values of CONFIG_FILES etc. instead of their
+-# values after options handling.
+-ac_log="
++# 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 mediastreamer $as_me 2.0.0, which was
+-generated by GNU Autoconf 2.60a. Invocation command line was
++generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+@@ -24431,20 +23474,30 @@
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+-on `(hostname || uname -n) 2>/dev/null | sed 1q`
+-"
+-
++_CSEOF
++echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
++echo >&5
+ _ACEOF
+
+-cat >>$CONFIG_STATUS <<_ACEOF
+ # Files that config.status was made for.
+-config_files="$ac_config_files"
+-config_headers="$ac_config_headers"
+-config_commands="$ac_config_commands"
++if test -n "$ac_config_files"; then
++ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
++fi
+
+-_ACEOF
++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.
+@@ -24452,7 +23505,7 @@
+ Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+- -V, --version print version number and configuration settings, 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
+@@ -24471,21 +23524,19 @@
+ $config_commands
+
+ Report bugs to <bug-autoconf@gnu.org>."
+-
+ _ACEOF
++
+ cat >>$CONFIG_STATUS <<_ACEOF
+ ac_cs_version="\\
+ mediastreamer config.status 2.0.0
+-configured by $0, generated by GNU Autoconf 2.60a,
+- with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
++configured by $0, generated by GNU Autoconf 2.59,
++ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+-Copyright (C) 2006 Free Software Foundation, Inc.
++Copyright (C) 2003 Free Software Foundation, Inc.
+ This config.status script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it."
+-
+-ac_pwd='$ac_pwd'
+-srcdir='$srcdir'
+-INSTALL='$INSTALL'
++srcdir=$srcdir
++INSTALL="$INSTALL"
+ _ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+@@ -24496,24 +23547,39 @@
+ do
+ case $1 in
+ --*=*)
+- ac_option=`expr "X$1" : 'X\([^=]*\)='`
+- ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
++ 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 | --versio | --versi | --vers | --ver | --ve | --v | -V )
+- echo "$ac_cs_version"; exit ;;
+- --debug | --debu | --deb | --de | --d | -d )
++ --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
+@@ -24523,24 +23589,18 @@
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+- --he | --h)
+- # Conflict between --help and --header
+- { 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 ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+- -*) { echo "$as_me: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&2
++ -*) { { 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"
+- ac_need_defaults=false ;;
++ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+@@ -24556,60 +23616,48 @@
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ if \$ac_cs_recheck; then
+- echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+- CONFIG_SHELL=$SHELL
+- export CONFIG_SHELL
+- exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
++ 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
+
+ _ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-exec 5>>config.log
+-{
+- echo
+- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+-## Running $as_me. ##
+-_ASBOX
+- echo "$ac_log"
+-} >&5
+
+-_ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ #
+-# INIT-COMMANDS
++# INIT-COMMANDS section.
+ #
++
+ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+ _ACEOF
+
+-cat >>$CONFIG_STATUS <<\_ACEOF
+
+-# Handling of arguments.
++
++cat >>$CONFIG_STATUS <<\_ACEOF
+ for ac_config_target in $ac_config_targets
+ do
+- case $ac_config_target in
+- "mediastreamer-config.h") CONFIG_HEADERS="$CONFIG_HEADERS mediastreamer-config.h" ;;
+- "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+- "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+- "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
+- "include/mediastreamer2/Makefile") CONFIG_FILES="$CONFIG_FILES include/mediastreamer2/Makefile" ;;
+- "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+- "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+- "build/Makefile") CONFIG_FILES="$CONFIG_FILES build/Makefile" ;;
+- "build/win32native/Makefile") CONFIG_FILES="$CONFIG_FILES build/win32native/Makefile" ;;
+- "build/wince/Makefile") CONFIG_FILES="$CONFIG_FILES build/wince/Makefile" ;;
+- "plugins/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;;
+- "plugins/plugins.mk") CONFIG_FILES="$CONFIG_FILES plugins/plugins.mk" ;;
+- "mediastreamer.pc") CONFIG_FILES="$CONFIG_FILES mediastreamer.pc" ;;
+- "mediastreamer2.spec") CONFIG_FILES="$CONFIG_FILES mediastreamer2.spec" ;;
+-
++ case "$ac_config_target" in
++ # Handling of arguments.
++ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
++ "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
++ "include/mediastreamer2/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/mediastreamer2/Makefile" ;;
++ "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
++ "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
++ "build/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/Makefile" ;;
++ "build/win32native/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/win32native/Makefile" ;;
++ "build/wince/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/wince/Makefile" ;;
++ "plugins/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;;
++ "plugins/plugins.mk" ) CONFIG_FILES="$CONFIG_FILES plugins/plugins.mk" ;;
++ "mediastreamer.pc" ) CONFIG_FILES="$CONFIG_FILES mediastreamer.pc" ;;
++ "mediastreamer2.spec" ) CONFIG_FILES="$CONFIG_FILES mediastreamer2.spec" ;;
++ "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
++ "mediastreamer-config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS mediastreamer-config.h" ;;
+ *) { { 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; }; };;
+ 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
+@@ -24621,518 +23669,412 @@
+ fi
+
+ # Have a temporary directory for convenience. Make it in the build tree
+-# simply because there is no reason against having it here, and in addition,
++# simply because there is no reason to put it here, and in addition,
+ # creating and moving files from /tmp can sometimes cause problems.
+-# Hook for its removal unless debugging.
+-# Note that there is a small window in which the directory will not be cleaned:
+-# after its creation but before its name has been assigned to `$tmp'.
++# Create a temporary directory, and hook for its removal unless debugging.
+ $debug ||
+ {
+- tmp=
+- trap 'exit_status=$?
+- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+-' 0
++ 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 "./confXXXXXX") 2>/dev/null` &&
++ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+ } ||
+ {
+- tmp=./conf$$-$RANDOM
+- (umask 077 && mkdir "$tmp")
++ tmp=./confstat$$-$RANDOM
++ (umask 077 && mkdir $tmp)
+ } ||
+ {
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+ }
+
+-#
+-# Set up the sed scripts for 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
+-
+-_ACEOF
+-
+-
+-
+-ac_delim='%!_!# '
+-for ac_last_try in false false false false false :; do
+- cat >conf$$subs.sed <<_ACEOF
+-SHELL!$SHELL$ac_delim
+-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
+-PACKAGE_NAME!$PACKAGE_NAME$ac_delim
+-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
+-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
+-PACKAGE_STRING!$PACKAGE_STRING$ac_delim
+-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
+-exec_prefix!$exec_prefix$ac_delim
+-prefix!$prefix$ac_delim
+-program_transform_name!$program_transform_name$ac_delim
+-bindir!$bindir$ac_delim
+-sbindir!$sbindir$ac_delim
+-libexecdir!$libexecdir$ac_delim
+-datarootdir!$datarootdir$ac_delim
+-datadir!$datadir$ac_delim
+-sysconfdir!$sysconfdir$ac_delim
+-sharedstatedir!$sharedstatedir$ac_delim
+-localstatedir!$localstatedir$ac_delim
+-includedir!$includedir$ac_delim
+-oldincludedir!$oldincludedir$ac_delim
+-docdir!$docdir$ac_delim
+-infodir!$infodir$ac_delim
+-htmldir!$htmldir$ac_delim
+-dvidir!$dvidir$ac_delim
+-pdfdir!$pdfdir$ac_delim
+-psdir!$psdir$ac_delim
+-libdir!$libdir$ac_delim
+-localedir!$localedir$ac_delim
+-mandir!$mandir$ac_delim
+-DEFS!$DEFS$ac_delim
+-ECHO_C!$ECHO_C$ac_delim
+-ECHO_N!$ECHO_N$ac_delim
+-ECHO_T!$ECHO_T$ac_delim
+-LIBS!$LIBS$ac_delim
+-build_alias!$build_alias$ac_delim
+-host_alias!$host_alias$ac_delim
+-target_alias!$target_alias$ac_delim
+-build!$build$ac_delim
+-build_cpu!$build_cpu$ac_delim
+-build_vendor!$build_vendor$ac_delim
+-build_os!$build_os$ac_delim
+-host!$host$ac_delim
+-host_cpu!$host_cpu$ac_delim
+-host_vendor!$host_vendor$ac_delim
+-host_os!$host_os$ac_delim
+-target!$target$ac_delim
+-target_cpu!$target_cpu$ac_delim
+-target_vendor!$target_vendor$ac_delim
+-target_os!$target_os$ac_delim
+-LIBMEDIASTREAMER_SO_VERSION!$LIBMEDIASTREAMER_SO_VERSION$ac_delim
+-MEDIASTREAMER_VERSION!$MEDIASTREAMER_VERSION$ac_delim
+-INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
+-INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
+-INSTALL_DATA!$INSTALL_DATA$ac_delim
+-CYGPATH_W!$CYGPATH_W$ac_delim
+-PACKAGE!$PACKAGE$ac_delim
+-VERSION!$VERSION$ac_delim
+-ACLOCAL!$ACLOCAL$ac_delim
+-AUTOCONF!$AUTOCONF$ac_delim
+-AUTOMAKE!$AUTOMAKE$ac_delim
+-AUTOHEADER!$AUTOHEADER$ac_delim
+-MAKEINFO!$MAKEINFO$ac_delim
+-install_sh!$install_sh$ac_delim
+-STRIP!$STRIP$ac_delim
+-INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
+-mkdir_p!$mkdir_p$ac_delim
+-AWK!$AWK$ac_delim
+-SET_MAKE!$SET_MAKE$ac_delim
+-am__leading_dot!$am__leading_dot$ac_delim
+-AMTAR!$AMTAR$ac_delim
+-am__tar!$am__tar$ac_delim
+-am__untar!$am__untar$ac_delim
+-CC!$CC$ac_delim
+-CFLAGS!$CFLAGS$ac_delim
+-LDFLAGS!$LDFLAGS$ac_delim
+-CPPFLAGS!$CPPFLAGS$ac_delim
+-ac_ct_CC!$ac_ct_CC$ac_delim
+-EXEEXT!$EXEEXT$ac_delim
+-OBJEXT!$OBJEXT$ac_delim
+-DEPDIR!$DEPDIR$ac_delim
+-am__include!$am__include$ac_delim
+-am__quote!$am__quote$ac_delim
+-AMDEP_TRUE!$AMDEP_TRUE$ac_delim
+-AMDEP_FALSE!$AMDEP_FALSE$ac_delim
+-AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
+-CCDEPMODE!$CCDEPMODE$ac_delim
+-am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
+-am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
+-GREP!$GREP$ac_delim
+-EGREP!$EGREP$ac_delim
+-LN_S!$LN_S$ac_delim
+-ECHO!$ECHO$ac_delim
+-AR!$AR$ac_delim
+-RANLIB!$RANLIB$ac_delim
+-CPP!$CPP$ac_delim
+-CXX!$CXX$ac_delim
+-CXXFLAGS!$CXXFLAGS$ac_delim
+ _ACEOF
+
+- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
+- break
+- elif $ac_last_try; then
+- { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+- { (exit 1); exit 1; }; }
+- else
+- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+- fi
+-done
+-
+-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+-if test -n "$ac_eof"; then
+- ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+- ac_eof=`expr $ac_eof + 1`
+-fi
+-
+-cat >>$CONFIG_STATUS <<_ACEOF
+-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
+-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-_ACEOF
+-sed '
+-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+-s/^/s,@/; s/!/@,|#_!!_#|/
+-:n
+-t n
+-s/'"$ac_delim"'$/,g/; t
+-s/$/\\/; p
+-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+-' >>$CONFIG_STATUS <conf$$subs.sed
+-rm -f conf$$subs.sed
+ cat >>$CONFIG_STATUS <<_ACEOF
+-CEOF$ac_eof
+-_ACEOF
+-
+
+-ac_delim='%!_!# '
+-for ac_last_try in false false false false false :; do
+- cat >conf$$subs.sed <<_ACEOF
+-ac_ct_CXX!$ac_ct_CXX$ac_delim
+-CXXDEPMODE!$CXXDEPMODE$ac_delim
+-am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim
+-am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim
+-CXXCPP!$CXXCPP$ac_delim
+-F77!$F77$ac_delim
+-FFLAGS!$FFLAGS$ac_delim
+-ac_ct_F77!$ac_ct_F77$ac_delim
+-LIBTOOL!$LIBTOOL$ac_delim
+-MSPLUGINS_CFLAGS!$MSPLUGINS_CFLAGS$ac_delim
+-MSPLUGINS_LIBS!$MSPLUGINS_LIBS$ac_delim
+-BUILD_OSS_TRUE!$BUILD_OSS_TRUE$ac_delim
+-BUILD_OSS_FALSE!$BUILD_OSS_FALSE$ac_delim
+-ALSA_LIBS!$ALSA_LIBS$ac_delim
+-BUILD_ALSA_TRUE!$BUILD_ALSA_TRUE$ac_delim
+-BUILD_ALSA_FALSE!$BUILD_ALSA_FALSE$ac_delim
+-ARTS_LIBS!$ARTS_LIBS$ac_delim
+-BUILD_ARTS_TRUE!$BUILD_ARTS_TRUE$ac_delim
+-BUILD_ARTS_FALSE!$BUILD_ARTS_FALSE$ac_delim
+-PORTAUDIO_LIBS!$PORTAUDIO_LIBS$ac_delim
+-BUILD_PORTAUDIO_TRUE!$BUILD_PORTAUDIO_TRUE$ac_delim
+-BUILD_PORTAUDIO_FALSE!$BUILD_PORTAUDIO_FALSE$ac_delim
+-PKG_CONFIG!$PKG_CONFIG$ac_delim
+-JACK_CFLAGS!$JACK_CFLAGS$ac_delim
+-JACK_LIBS!$JACK_LIBS$ac_delim
+-SAMPLERATE_CFLAGS!$SAMPLERATE_CFLAGS$ac_delim
+-SAMPLERATE_LIBS!$SAMPLERATE_LIBS$ac_delim
+-SPEEX_CFLAGS!$SPEEX_CFLAGS$ac_delim
+-SPEEX_LIBS!$SPEEX_LIBS$ac_delim
+-BUILD_SPEEX_TRUE!$BUILD_SPEEX_TRUE$ac_delim
+-BUILD_SPEEX_FALSE!$BUILD_SPEEX_FALSE$ac_delim
+-GSM_CFLAGS!$GSM_CFLAGS$ac_delim
+-GSM_LIBS!$GSM_LIBS$ac_delim
+-BUILD_GSM_TRUE!$BUILD_GSM_TRUE$ac_delim
+-BUILD_GSM_FALSE!$BUILD_GSM_FALSE$ac_delim
+-FFMPEG_CFLAGS!$FFMPEG_CFLAGS$ac_delim
+-FFMPEG_LIBS!$FFMPEG_LIBS$ac_delim
+-SDL_CFLAGS!$SDL_CFLAGS$ac_delim
+-SDL_LIBS!$SDL_LIBS$ac_delim
+-THEORA_CFLAGS!$THEORA_CFLAGS$ac_delim
+-THEORA_LIBS!$THEORA_LIBS$ac_delim
+-VIDEO_CFLAGS!$VIDEO_CFLAGS$ac_delim
+-VIDEO_LIBS!$VIDEO_LIBS$ac_delim
+-BUILD_VIDEO_TRUE!$BUILD_VIDEO_TRUE$ac_delim
+-BUILD_VIDEO_FALSE!$BUILD_VIDEO_FALSE$ac_delim
+-BUILD_THEORA_TRUE!$BUILD_THEORA_TRUE$ac_delim
+-BUILD_THEORA_FALSE!$BUILD_THEORA_FALSE$ac_delim
+-ORTP_CFLAGS!$ORTP_CFLAGS$ac_delim
+-ORTP_LIBS!$ORTP_LIBS$ac_delim
+-PACKAGE_PLUGINS_DIR!$PACKAGE_PLUGINS_DIR$ac_delim
+-EPM!$EPM$ac_delim
+-MKEPMLIST!$MKEPMLIST$ac_delim
+-EPMINSTALL!$EPMINSTALL$ac_delim
+-WITH_EPM_TRUE!$WITH_EPM_TRUE$ac_delim
+-WITH_EPM_FALSE!$WITH_EPM_FALSE$ac_delim
+-EPM_PKG_EXT!$EPM_PKG_EXT$ac_delim
+-SYS_USER!$SYS_USER$ac_delim
+-SYS_GROUP!$SYS_GROUP$ac_delim
+-ARCH!$ARCH$ac_delim
+-SUMMARY!$SUMMARY$ac_delim
+-PACKAGER!$PACKAGER$ac_delim
+-LICENSE!$LICENSE$ac_delim
+-VENDOR!$VENDOR$ac_delim
+-RELEASE!$RELEASE$ac_delim
+-LIBOBJS!$LIBOBJS$ac_delim
+-LTLIBOBJS!$LTLIBOBJS$ac_delim
+-_ACEOF
++#
++# CONFIG_FILES section.
++#
+
+- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 66; then
+- break
+- elif $ac_last_try; then
+- { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+- { (exit 1); exit 1; }; }
+- else
+- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
++# 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,@LIBMEDIASTREAMER_SO_VERSION@,$LIBMEDIASTREAMER_SO_VERSION,;t t
++s,@MEDIASTREAMER_VERSION@,$MEDIASTREAMER_VERSION,;t t
++s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
++s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
++s,@INSTALL_DATA@,$INSTALL_DATA,;t t
++s,@CYGPATH_W@,$CYGPATH_W,;t t
++s,@PACKAGE@,$PACKAGE,;t t
++s,@VERSION@,$VERSION,;t t
++s,@ACLOCAL@,$ACLOCAL,;t t
++s,@AUTOCONF@,$AUTOCONF,;t t
++s,@AUTOMAKE@,$AUTOMAKE,;t t
++s,@AUTOHEADER@,$AUTOHEADER,;t t
++s,@MAKEINFO@,$MAKEINFO,;t t
++s,@install_sh@,$install_sh,;t t
++s,@STRIP@,$STRIP,;t t
++s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
++s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
++s,@mkdir_p@,$mkdir_p,;t t
++s,@AWK@,$AWK,;t t
++s,@SET_MAKE@,$SET_MAKE,;t t
++s,@am__leading_dot@,$am__leading_dot,;t t
++s,@AMTAR@,$AMTAR,;t t
++s,@am__tar@,$am__tar,;t t
++s,@am__untar@,$am__untar,;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,@DEPDIR@,$DEPDIR,;t t
++s,@am__include@,$am__include,;t t
++s,@am__quote@,$am__quote,;t t
++s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
++s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
++s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
++s,@CCDEPMODE@,$CCDEPMODE,;t t
++s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
++s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
++s,@EGREP@,$EGREP,;t t
++s,@LN_S@,$LN_S,;t t
++s,@ECHO@,$ECHO,;t t
++s,@AR@,$AR,;t t
++s,@ac_ct_AR@,$ac_ct_AR,;t t
++s,@RANLIB@,$RANLIB,;t t
++s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
++s,@CPP@,$CPP,;t t
++s,@CXX@,$CXX,;t t
++s,@CXXFLAGS@,$CXXFLAGS,;t t
++s,@ac_ct_CXX@,$ac_ct_CXX,;t t
++s,@CXXDEPMODE@,$CXXDEPMODE,;t t
++s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
++s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
++s,@CXXCPP@,$CXXCPP,;t t
++s,@F77@,$F77,;t t
++s,@FFLAGS@,$FFLAGS,;t t
++s,@ac_ct_F77@,$ac_ct_F77,;t t
++s,@LIBTOOL@,$LIBTOOL,;t t
++s,@MSPLUGINS_CFLAGS@,$MSPLUGINS_CFLAGS,;t t
++s,@MSPLUGINS_LIBS@,$MSPLUGINS_LIBS,;t t
++s,@BUILD_OSS_TRUE@,$BUILD_OSS_TRUE,;t t
++s,@BUILD_OSS_FALSE@,$BUILD_OSS_FALSE,;t t
++s,@ALSA_LIBS@,$ALSA_LIBS,;t t
++s,@BUILD_ALSA_TRUE@,$BUILD_ALSA_TRUE,;t t
++s,@BUILD_ALSA_FALSE@,$BUILD_ALSA_FALSE,;t t
++s,@ARTS_LIBS@,$ARTS_LIBS,;t t
++s,@BUILD_ARTS_TRUE@,$BUILD_ARTS_TRUE,;t t
++s,@BUILD_ARTS_FALSE@,$BUILD_ARTS_FALSE,;t t
++s,@PORTAUDIO_LIBS@,$PORTAUDIO_LIBS,;t t
++s,@BUILD_PORTAUDIO_TRUE@,$BUILD_PORTAUDIO_TRUE,;t t
++s,@BUILD_PORTAUDIO_FALSE@,$BUILD_PORTAUDIO_FALSE,;t t
++s,@PKG_CONFIG@,$PKG_CONFIG,;t t
++s,@JACK_CFLAGS@,$JACK_CFLAGS,;t t
++s,@JACK_LIBS@,$JACK_LIBS,;t t
++s,@SAMPLERATE_CFLAGS@,$SAMPLERATE_CFLAGS,;t t
++s,@SAMPLERATE_LIBS@,$SAMPLERATE_LIBS,;t t
++s,@SPEEX_CFLAGS@,$SPEEX_CFLAGS,;t t
++s,@SPEEX_LIBS@,$SPEEX_LIBS,;t t
++s,@BUILD_SPEEX_TRUE@,$BUILD_SPEEX_TRUE,;t t
++s,@BUILD_SPEEX_FALSE@,$BUILD_SPEEX_FALSE,;t t
++s,@GSM_CFLAGS@,$GSM_CFLAGS,;t t
++s,@GSM_LIBS@,$GSM_LIBS,;t t
++s,@BUILD_GSM_TRUE@,$BUILD_GSM_TRUE,;t t
++s,@BUILD_GSM_FALSE@,$BUILD_GSM_FALSE,;t t
++s,@FFMPEG_CFLAGS@,$FFMPEG_CFLAGS,;t t
++s,@FFMPEG_LIBS@,$FFMPEG_LIBS,;t t
++s,@SDL_CFLAGS@,$SDL_CFLAGS,;t t
++s,@SDL_LIBS@,$SDL_LIBS,;t t
++s,@THEORA_CFLAGS@,$THEORA_CFLAGS,;t t
++s,@THEORA_LIBS@,$THEORA_LIBS,;t t
++s,@VIDEO_CFLAGS@,$VIDEO_CFLAGS,;t t
++s,@VIDEO_LIBS@,$VIDEO_LIBS,;t t
++s,@BUILD_VIDEO_TRUE@,$BUILD_VIDEO_TRUE,;t t
++s,@BUILD_VIDEO_FALSE@,$BUILD_VIDEO_FALSE,;t t
++s,@BUILD_THEORA_TRUE@,$BUILD_THEORA_TRUE,;t t
++s,@BUILD_THEORA_FALSE@,$BUILD_THEORA_FALSE,;t t
++s,@ORTP_CFLAGS@,$ORTP_CFLAGS,;t t
++s,@ORTP_LIBS@,$ORTP_LIBS,;t t
++s,@PACKAGE_PLUGINS_DIR@,$PACKAGE_PLUGINS_DIR,;t t
++s,@EPM@,$EPM,;t t
++s,@MKEPMLIST@,$MKEPMLIST,;t t
++s,@EPMINSTALL@,$EPMINSTALL,;t t
++s,@WITH_EPM_TRUE@,$WITH_EPM_TRUE,;t t
++s,@WITH_EPM_FALSE@,$WITH_EPM_FALSE,;t t
++s,@EPM_PKG_EXT@,$EPM_PKG_EXT,;t t
++s,@SYS_USER@,$SYS_USER,;t t
++s,@SYS_GROUP@,$SYS_GROUP,;t t
++s,@ARCH@,$ARCH,;t t
++s,@SUMMARY@,$SUMMARY,;t t
++s,@PACKAGER@,$PACKAGER,;t t
++s,@LICENSE@,$LICENSE,;t t
++s,@VENDOR@,$VENDOR,;t t
++s,@RELEASE@,$RELEASE,;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
+ fi
+-done
+-
+-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+-if test -n "$ac_eof"; then
+- ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+- ac_eof=`expr $ac_eof + 1`
+-fi
++fi # test -n "$CONFIG_FILES"
+
+-cat >>$CONFIG_STATUS <<_ACEOF
+-cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
+-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+-_ACEOF
+-sed '
+-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+-s/^/s,@/; s/!/@,|#_!!_#|/
+-:n
+-t n
+-s/'"$ac_delim"'$/,g/; t
+-s/$/\\/; p
+-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+-' >>$CONFIG_STATUS <conf$$subs.sed
+-rm -f conf$$subs.sed
+-cat >>$CONFIG_STATUS <<_ACEOF
+-:end
+-s/|#_!!_#|//g
+-CEOF$ac_eof
+ _ACEOF
+-
+-
+-# 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).
+-if test "x$srcdir" = x.; then
+- ac_vpsub='/^[ ]*VPATH[ ]*=/{
+-s/:*\$(srcdir):*/:/
+-s/:*\${srcdir}:*/:/
+-s/:*@srcdir@:*/:/
+-s/^\([^=]*=[ ]*\):*/\1/
+-s/:*$//
+-s/^[^=]*=[ ]*$//
+-}'
+-fi
+-
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-fi # test -n "$CONFIG_FILES"
+-
+-
+-for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
+-do
+- case $ac_tag in
+- :[FHLC]) ac_mode=$ac_tag; continue;;
+- esac
+- case $ac_mode$ac_tag in
+- :[FHL]*:*);;
+- :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+-echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+- { (exit 1); exit 1; }; };;
+- :[FH]-) ac_tag=-:-;;
+- :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+- esac
+- ac_save_IFS=$IFS
+- IFS=:
+- set x $ac_tag
+- IFS=$ac_save_IFS
+- shift
+- ac_file=$1
+- shift
+-
+- case $ac_mode in
+- :L) ac_source=$1;;
+- :[FH])
+- ac_file_inputs=
+- for ac_f
+- do
+- case $ac_f in
+- -) ac_f="$tmp/stdin";;
+- *) # Look for the file first in the build tree, then in the source tree
+- # (if the path is not absolute). The absolute path cannot be DOS-style,
+- # because $ac_f cannot contain `:'.
+- test -f "$ac_f" ||
+- case $ac_f in
+- [\\/$]*) false;;
+- *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+- esac ||
+- { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+-echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+- { (exit 1); exit 1; }; };;
+- esac
+- ac_file_inputs="$ac_file_inputs $ac_f"
+- done
+-
+- # 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. */
+- configure_input="Generated from "`IFS=:
+- echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+- if test x"$ac_file" != x-; then
+- configure_input="$ac_file. $configure_input"
+- { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+- fi
+-
+- case $ac_tag in
+- *:-:* | *:-) cat >"$tmp/stdin";;
+- esac
+- ;;
++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 ;;
+ esac
+
+- ac_dir=`$as_dirname -- "$ac_file" ||
++ # 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 ||
++ 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'`
+- { as_dir="$ac_dir"
+- case $as_dir in #(
+- -*) as_dir=./$as_dir;;
+- esac
+- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
++ 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 :; do
+- case $as_dir in #(
+- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+- *) as_qdir=$as_dir;;
+- esac
+- as_dirs="'$as_qdir' $as_dirs"
+- as_dir=`$as_dirname -- "$as_dir" ||
++ 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 ||
++ 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'`
+- test -d "$as_dir" && break
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+ done
+- test -z "$as_dirs" || eval "mkdir $as_dirs"
+- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+-echo "$as_me: error: cannot create directory $as_dir" >&2;}
++ 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; }; }; }
++
+ ac_builddir=.
+
+-case "$ac_dir" in
+-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+-*)
++if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A ".." for each directory in $ac_dir_suffix.
+- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+- case $ac_top_builddir_sub in
+- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+- esac ;;
+-esac
+-ac_abs_top_builddir=$ac_pwd
+-ac_abs_builddir=$ac_pwd$ac_dir_suffix
+-# for backward compatibility:
+-ac_top_builddir=$ac_top_build_prefix
++ # 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
+- .) # We are building in place.
++ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+- ac_top_srcdir=$ac_top_builddir_sub
+- ac_abs_top_srcdir=$ac_pwd ;;
+- [\\/]* | ?:[\\/]* ) # Absolute name.
++ 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
+- ac_abs_top_srcdir=$srcdir ;;
+- *) # Relative name.
+- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_build_prefix$srcdir
+- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++ ac_top_srcdir=$srcdir ;;
++ *) # Relative path.
++ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+ esac
+-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
++# Do not use `cd foo && pwd` to compute absolute paths, because
++# the directories may not exist.
++case `pwd` in
++.) ac_abs_builddir="$ac_dir";;
++*)
++ case "$ac_dir" in
++ .) ac_abs_builddir=`pwd`;;
++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
++ *) ac_abs_builddir=`pwd`/"$ac_dir";;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_builddir=${ac_top_builddir}.;;
++*)
++ case ${ac_top_builddir}. in
++ .) ac_abs_top_builddir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_srcdir=$ac_srcdir;;
++*)
++ case $ac_srcdir in
++ .) ac_abs_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_srcdir=$ac_top_srcdir;;
++*)
++ case $ac_top_srcdir in
++ .) ac_abs_top_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
++ esac;;
++esac
+
+- case $ac_mode in
+- :F)
+- #
+- # CONFIG_FILE
+- #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+- *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
++ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+ esac
+-_ACEOF
+
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-# If the template does not know about datarootdir, expand it.
+-# FIXME: This hack should be removed a few years after 2.60.
+-ac_datarootdir_hack=; ac_datarootdir_seen=
+-
+-case `sed -n '/datarootdir/ {
+- p
+- q
+-}
+-/@datadir@/p
+-/@docdir@/p
+-/@infodir@/p
+-/@localedir@/p
+-/@mandir@/p
+-' $ac_file_inputs` in
+-*datarootdir*) ac_datarootdir_seen=yes;;
+-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+- { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+-_ACEOF
+-cat >>$CONFIG_STATUS <<_ACEOF
+- ac_datarootdir_hack='
+- s&@datadir@&$datadir&g
+- s&@docdir@&$docdir&g
+- s&@infodir@&$infodir&g
+- s&@localedir@&$localedir&g
+- s&@mandir@&$mandir&g
+- s&\\\${datarootdir}&$datarootdir&g' ;;
+-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."
++
++ # 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
+-
+-# Neutralize VPATH when `$srcdir' = `.'.
+-# Shell code in configure.ac might set extrasub.
+-# FIXME: do we really want to maintain this feature?
+ cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+ $extrasub
+@@ -25140,130 +24082,248 @@
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ :t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-s&@configure_input@&$configure_input&;t t
+-s&@top_builddir@&$ac_top_builddir_sub&;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&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+-s&@INSTALL@&$ac_INSTALL&;t t
+-$ac_datarootdir_hack
+-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
+-
+-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+- { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+-which seems to be undefined. Please make sure it is defined." >&5
+-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+-which seems to be undefined. Please make sure it is defined." >&2;}
++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
+
+- rm -f "$tmp/stdin"
+- case $ac_file in
+- -) cat "$tmp/out"; rm -f "$tmp/out";;
+- *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+- esac
+- ;;
+- :H)
+- #
+- # CONFIG_HEADER
+- #
++done
+ _ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++
++#
++# CONFIG_HEADER section.
++#
+
+-# Transform confdefs.h into a sed script `conftest.defines', that
+-# substitutes the proper values into config.h.in to produce config.h.
+-rm -f conftest.defines conftest.tail
+-# First, append a space to every undef/define line, to ease matching.
+-echo 's/$/ /' >conftest.defines
+-# Then, protect against being on the right side of a sed subst, or in
+-# an unquoted here document, in config.status. If some macros were
+-# called several times there might be several #defines for the same
+-# symbol, which is useless. But do not sort them, since the last
+-# AC_DEFINE must be honored.
+-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+-# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
+-# NAME is the cpp macro being defined, VALUE is the value it is being given.
+-# PARAMS is the parameter list in the macro definition--in most cases, it's
+-# just an empty string.
+-ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
+-ac_dB='\\)[ (].*,\\1define\\2'
++# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
++# NAME is the cpp macro being defined and VALUE is the value it is being given.
++#
++# ac_d sets the value in "#define NAME VALUE" lines.
++ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
++ac_dB='[ ].*$,\1#\2'
+ ac_dC=' '
+-ac_dD=' ,'
++ac_dD=',;t'
++# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
++ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
++ac_uB='$,\1#\2define\3'
++ac_uC=' '
++ac_uD=',;t'
++
++for ac_file in : $CONFIG_HEADERS; 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 ;;
++ esac
++
++ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
++echo "$as_me: creating $ac_file" >&6;}
++
++ # 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; }; }
++ # Do quote $f, to prevent DOS paths from being IFS'd.
++ 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; }
++ # Remove the trailing spaces.
++ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+-uniq confdefs.h |
+- sed -n '
+- t rset
+- :rset
+- s/^[ ]*#[ ]*define[ ][ ]*//
+- t ok
+- d
+- :ok
+- s/[\\&,]/\\&/g
+- s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
+- s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
+- ' >>conftest.defines
++_ACEOF
++
++# Transform confdefs.h into two sed scripts, `conftest.defines' and
++# `conftest.undefs', that substitutes the proper values into
++# config.h.in to produce config.h. The first handles `#define'
++# templates, and the second `#undef' templates.
++# And first: Protect against being on the right side of a sed subst in
++# config.status. Protect against being in an unquoted here document
++# in config.status.
++rm -f conftest.defines conftest.undefs
++# Using a here document instead of a string reduces the quoting nightmare.
++# Putting comments in sed scripts is not portable.
++#
++# `end' is used to avoid that the second main sed command (meant for
++# 0-ary CPP macros) applies to n-ary macro definitions.
++# See the Autoconf documentation for `clear'.
++cat >confdef2sed.sed <<\_ACEOF
++s/[\\&,]/\\&/g
++s,[\\$`],\\&,g
++t clear
++: clear
++s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
++t end
++s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
++: end
++_ACEOF
++# If some macros were called several times there might be several times
++# the same #defines, which is useless. Nevertheless, we may not want to
++# sort them, since we want the *last* AC-DEFINE to be honored.
++uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
++sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
++rm -f confdef2sed.sed
+
+-# Remove the space that was appended to ease matching.
+-# Then replace #undef with comments. This is necessary, for
++# This sed command replaces #undef with comments. This is necessary, for
+ # example, in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+-# (The regexp can be short, since the line contains either #define or #undef.)
+-echo 's/ $//
+-s,^[ #]*u.*,/* & */,' >>conftest.defines
+-
+-# Break up conftest.defines:
+-ac_max_sed_lines=50
+-
+-# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
+-# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
+-# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
+-# et cetera.
+-ac_in='$ac_file_inputs'
+-ac_out='"$tmp/out1"'
+-ac_nxt='"$tmp/out2"'
++cat >>conftest.undefs <<\_ACEOF
++s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
++_ACEOF
+
+-while :
++# Break up conftest.defines because some shells have a limit on the size
++# of here documents, and old seds have small limits too (100 cmds).
++echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
++echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
++echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
++echo ' :' >>$CONFIG_STATUS
++rm -f conftest.tail
++while grep . conftest.defines >/dev/null
+ do
+- # Write a here document:
+- cat >>$CONFIG_STATUS <<_ACEOF
+- # First, check the format of the line:
+- cat >"\$tmp/defines.sed" <<\\CEOF
+-/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
+-/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
+-b
+-:def
+-_ACEOF
+- sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
++ # Write a limited-size here document to $tmp/defines.sed.
++ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
++ # Speed up: don't consider the non `#define' lines.
++ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
++ # Work around the forget-to-reset-the-flag bug.
++ echo 't clr' >>$CONFIG_STATUS
++ echo ': clr' >>$CONFIG_STATUS
++ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+- sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
+- ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
+- sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
+- grep . conftest.tail >/dev/null || break
++ sed -f $tmp/defines.sed $tmp/in >$tmp/out
++ rm -f $tmp/in
++ mv $tmp/out $tmp/in
++' >>$CONFIG_STATUS
++ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+ done
+-rm -f conftest.defines conftest.tail
++rm -f conftest.defines
++echo ' fi # grep' >>$CONFIG_STATUS
++echo >>$CONFIG_STATUS
++
++# Break up conftest.undefs because some shells have a limit on the size
++# of here documents, and old seds have small limits too (100 cmds).
++echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
++rm -f conftest.tail
++while grep . conftest.undefs >/dev/null
++do
++ # Write a limited-size here document to $tmp/undefs.sed.
++ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
++ # Speed up: don't consider the non `#undef'
++ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
++ # Work around the forget-to-reset-the-flag bug.
++ echo 't clr' >>$CONFIG_STATUS
++ echo ': clr' >>$CONFIG_STATUS
++ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
++ echo 'CEOF
++ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
++ rm -f $tmp/in
++ mv $tmp/out $tmp/in
++' >>$CONFIG_STATUS
++ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
++ rm -f conftest.undefs
++ mv conftest.tail conftest.undefs
++done
++rm -f conftest.undefs
+
+-echo "ac_result=$ac_in" >>$CONFIG_STATUS
+ cat >>$CONFIG_STATUS <<\_ACEOF
++ # 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
++ echo "/* Generated by configure. */" >$tmp/config.h
++ else
++ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
++ fi
++ cat $tmp/in >>$tmp/config.h
++ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+- echo "/* $configure_input */" >"$tmp/config.h"
+- cat "$ac_result" >>"$tmp/config.h"
+- if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
++ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+ echo "$as_me: $ac_file is unchanged" >&6;}
+ else
++ 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; }; }; }
++
+ rm -f $ac_file
+- mv "$tmp/config.h" $ac_file
++ mv $tmp/config.h $ac_file
+ fi
+ else
+- echo "/* $configure_input */"
+- cat "$ac_result"
++ cat $tmp/config.h
++ rm -f $tmp/config.h
+ fi
+- rm -f "$tmp/out12"
+ # Compute $ac_file's index in $config_headers.
+ _am_stamp_count=1
+ for _am_header in $config_headers :; do
+@@ -25274,39 +24334,135 @@
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+ done
+-echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
++echo "timestamp for $ac_file" >`(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 ||
++ 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'`/stamp-h$_am_stamp_count
+- ;;
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`/stamp-h$_am_stamp_count
++done
++_ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
+
+- :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
+-echo "$as_me: executing $ac_file commands" >&6;}
+- ;;
+- esac
++#
++# CONFIG_COMMANDS section.
++#
++for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
++ ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
++ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
++ ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
++$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
++ X"$ac_dest" : 'X\(//\)[^/]' \| \
++ X"$ac_dest" : 'X\(//\)$' \| \
++ X"$ac_dest" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
++echo X"$ac_dest" |
++ 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; }; }; }
++
++ 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
++
++# Do not use `cd foo && pwd` to compute absolute paths, because
++# the directories may not exist.
++case `pwd` in
++.) ac_abs_builddir="$ac_dir";;
++*)
++ case "$ac_dir" in
++ .) ac_abs_builddir=`pwd`;;
++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
++ *) ac_abs_builddir=`pwd`/"$ac_dir";;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_builddir=${ac_top_builddir}.;;
++*)
++ case ${ac_top_builddir}. in
++ .) ac_abs_top_builddir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_srcdir=$ac_srcdir;;
++*)
++ case $ac_srcdir in
++ .) ac_abs_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_srcdir=$ac_top_srcdir;;
++*)
++ case $ac_top_srcdir in
++ .) ac_abs_top_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
++ esac;;
++esac
+
+
+- case $ac_file$ac_mode in
+- "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
++ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
++echo "$as_me: executing $ac_dest commands" >&6;}
++ case $ac_dest in
++ depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+@@ -25316,29 +24472,18 @@
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+- dirpart=`$as_dirname -- "$mf" ||
++ dirpart=`(dirname "$mf") 2>/dev/null ||
+ $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+- X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
++ X"$mf" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
+ echo X"$mf" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+- s//\1/
+- q
+- }
+- /^X\(\/\/\)[^/].*/{
+- s//\1/
+- q
+- }
+- /^X\(\/\/\)$/{
+- s//\1/
+- q
+- }
+- /^X\(\/\).*/{
+- s//\1/
+- q
+- }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+ else
+ continue
+ fi
+@@ -25360,79 +24505,53 @@
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+- fdir=`$as_dirname -- "$file" ||
++ fdir=`(dirname "$file") 2>/dev/null ||
+ $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+- X"$file" : 'X\(/\)' \| . 2>/dev/null ||
++ X"$file" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
+ echo X"$file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+- s//\1/
+- q
+- }
+- /^X\(\/\/\)[^/].*/{
+- s//\1/
+- q
+- }
+- /^X\(\/\/\)$/{
+- s//\1/
+- q
+- }
+- /^X\(\/\).*/{
+- s//\1/
+- q
+- }
+- s/.*/./; q'`
+- { as_dir=$dirpart/$fdir
+- case $as_dir in #(
+- -*) as_dir=./$as_dir;;
+- esac
+- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
++ 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 $dirpart/$fdir
++ else
++ as_dir=$dirpart/$fdir
+ as_dirs=
+- while :; do
+- case $as_dir in #(
+- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+- *) as_qdir=$as_dir;;
+- esac
+- as_dirs="'$as_qdir' $as_dirs"
+- as_dir=`$as_dirname -- "$as_dir" ||
++ 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 ||
++ 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'`
+- test -d "$as_dir" && break
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+ done
+- test -z "$as_dirs" || eval "mkdir $as_dirs"
+- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+-echo "$as_me: error: cannot create directory $as_dir" >&2;}
++ test ! -n "$as_dirs" || mkdir $as_dirs
++ fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
++echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+ { (exit 1); exit 1; }; }; }
++
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+ ;;
+-
+ esac
+-done # for ac_tag
++done
++_ACEOF
+
++cat >>$CONFIG_STATUS <<\_ACEOF
+
+ { (exit 0); exit 0; }
+ _ACEOF
+diff -ur linphone-1.5.0/mediastreamer2/depcomp linphone-1.5.0-after/mediastreamer2/depcomp
+--- linphone-1.5.0/mediastreamer2/depcomp 2006-08-25 16:46:34.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/depcomp 2007-01-19 16:05:35.000000000 +0800
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # depcomp - compile a program generating dependencies as side-effects
+
+-scriptversion=2005-07-09.11
++scriptversion=2004-05-31.23
+
+-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
++# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, 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
+@@ -17,8 +17,8 @@
+
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA
+-# 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
+
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -50,11 +50,11 @@
+
+ Report bugs to <bug-automake@gnu.org>.
+ EOF
+- exit $?
++ exit 0
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+- exit $?
++ exit 0
+ ;;
+ esac
+
+@@ -287,43 +287,36 @@
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+- # With Tru64 cc, shared objects can also be used to make a
+- # static library. This mecanism is used in libtool 1.4 series to
+- # handle both shared and static libraries in a single compilation.
+- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+- #
+- # With libtool 1.5 this exception was removed, and libtool now
+- # generates 2 separate objects for the 2 libraries. These two
+- # compilations output dependencies in in $dir.libs/$base.o.d and
+- # in $dir$base.o.d. We have to check for both files, because
+- # one of the two compilations can be disabled. We should prefer
+- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+- # automatically cleaned when .libs/ is deleted, while ignoring
+- # the former would cause a distcleancheck panic.
+- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
+- tmpdepfile2=$dir$base.o.d # libtool 1.5
+- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
+- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
++ # Dependencies are output in .lo.d with libtool 1.4.
++ # With libtool 1.5 they are output both in $dir.libs/$base.o.d
++ # and in $dir.libs/$base.o.d and $dir$base.o.d. We process the
++ # latter, because the former will be cleaned when $dir.libs is
++ # erased.
++ tmpdepfile1="$dir.libs/$base.lo.d"
++ tmpdepfile2="$dir$base.o.d"
++ tmpdepfile3="$dir.libs/$base.d"
+ "$@" -Wc,-MD
+ else
+- tmpdepfile1=$dir$base.o.d
+- tmpdepfile2=$dir$base.d
+- tmpdepfile3=$dir$base.d
+- tmpdepfile4=$dir$base.d
++ tmpdepfile1="$dir$base.o.d"
++ tmpdepfile2="$dir$base.d"
++ tmpdepfile3="$dir$base.d"
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
++ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+- do
+- test -f "$tmpdepfile" && break
+- done
++ if test -f "$tmpdepfile1"; then
++ tmpdepfile="$tmpdepfile1"
++ elif test -f "$tmpdepfile2"; then
++ tmpdepfile="$tmpdepfile2"
++ else
++ tmpdepfile="$tmpdepfile3"
++ fi
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+@@ -467,8 +460,7 @@
+ done
+
+ "$@" -E |
+- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
++ sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+diff -ur linphone-1.5.0/mediastreamer2/include/Makefile.in linphone-1.5.0-after/mediastreamer2/include/Makefile.in
+--- linphone-1.5.0/mediastreamer2/include/Makefile.in 2006-10-09 17:11:06.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/include/Makefile.in 2007-01-19 16:05:35.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -111,7 +111,6 @@
+ FFLAGS = @FFLAGS@
+ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@
+ FFMPEG_LIBS = @FFMPEG_LIBS@
+-GREP = @GREP@
+ GSM_CFLAGS = @GSM_CFLAGS@
+ GSM_LIBS = @GSM_LIBS@
+ INSTALL_DATA = @INSTALL_DATA@
+@@ -169,9 +168,12 @@
+ VIDEO_LIBS = @VIDEO_LIBS@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -188,30 +190,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -271,13 +266,7 @@
+ # (which will cause the Makefiles to be regenerated when you run `make');
+ # (2) otherwise, pass the desired values on the `make' command line.
+ $(RECURSIVE_TARGETS):
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -289,7 +278,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+@@ -297,13 +286,7 @@
+
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+@@ -324,7 +307,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+ tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+diff -ur linphone-1.5.0/mediastreamer2/include/mediastreamer2/Makefile.in linphone-1.5.0-after/mediastreamer2/include/mediastreamer2/Makefile.in
+--- linphone-1.5.0/mediastreamer2/include/mediastreamer2/Makefile.in 2006-10-09 17:11:06.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/include/mediastreamer2/Makefile.in 2007-01-19 16:05:35.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -115,7 +115,6 @@
+ FFLAGS = @FFLAGS@
+ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@
+ FFMPEG_LIBS = @FFMPEG_LIBS@
+-GREP = @GREP@
+ GSM_CFLAGS = @GSM_CFLAGS@
+ GSM_LIBS = @GSM_LIBS@
+ INSTALL_DATA = @INSTALL_DATA@
+@@ -173,9 +172,12 @@
+ VIDEO_LIBS = @VIDEO_LIBS@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -192,30 +194,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+diff -ur linphone-1.5.0/mediastreamer2/INSTALL linphone-1.5.0-after/mediastreamer2/INSTALL
+--- linphone-1.5.0/mediastreamer2/INSTALL 2006-08-25 16:46:34.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/INSTALL 2007-01-19 16:05:36.000000000 +0800
+@@ -1,7 +1,7 @@
+ Installation Instructions
+ *************************
+
+-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
++Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free
+ Software Foundation, Inc.
+
+ This file is free documentation; the Free Software Foundation gives
+@@ -102,16 +102,16 @@
+ Installation Names
+ ==================
+
+-By default, `make install' installs the package's commands under
+-`/usr/local/bin', include files under `/usr/local/include', etc. You
+-can specify an installation prefix other than `/usr/local' by giving
+-`configure' the option `--prefix=PREFIX'.
++By default, `make install' will install the package's files in
++`/usr/local/bin', `/usr/local/man', etc. You can specify an
++installation prefix other than `/usr/local' by giving `configure' the
++option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+ architecture-specific files and architecture-independent files. If you
+-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+-PREFIX as the prefix for installing programs and libraries.
+-Documentation and other data files still use the regular prefix.
++give `configure' the option `--exec-prefix=PREFIX', the package will
++use PREFIX as the prefix for installing programs and libraries.
++Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+ options like `--bindir=DIR' to specify different values for particular
+@@ -159,7 +159,7 @@
+ need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+-use the option `--target=TYPE' to select the type of system they will
++use the `--target=TYPE' option to select the type of system they will
+ produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+@@ -189,13 +189,8 @@
+
+ ./configure CC=/usr/local2/bin/gcc
+
+-causes the specified `gcc' to be used as the C compiler (unless it is
+-overridden in the site shell script). Here is a another example:
+-
+- /bin/bash ./configure CONFIG_SHELL=/bin/bash
+-
+-Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
+-configuration-related scripts to be executed by `/bin/bash'.
++will cause the specified gcc to be used as the C compiler (unless it is
++overridden in the site shell script).
+
+ `configure' Invocation
+ ======================
+diff -ur linphone-1.5.0/mediastreamer2/install-sh linphone-1.5.0-after/mediastreamer2/install-sh
+--- linphone-1.5.0/mediastreamer2/install-sh 2006-08-25 16:46:33.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/install-sh 2007-01-19 16:05:34.000000000 +0800
+@@ -1,7 +1,7 @@
+ #!/bin/sh
+ # install - install a program, script, or datafile
+
+-scriptversion=2005-05-14.22
++scriptversion=2004-09-10.20
+
+ # This originates from X11R5 (mit/util/scripts/install.sh), which was
+ # later released in X11R6 (xc/config/util/install.sh) with the
+@@ -109,7 +109,7 @@
+ shift
+ continue;;
+
+- --help) echo "$usage"; exit $?;;
++ --help) echo "$usage"; exit 0;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+@@ -134,7 +134,7 @@
+ shift
+ continue;;
+
+- --version) echo "$0 $scriptversion"; exit $?;;
++ --version) echo "$0 $scriptversion"; exit 0;;
+
+ *) # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+@@ -213,7 +213,7 @@
+ fi
+
+ # This sed command emulates the dirname command.
+- dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
++ dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+ # Make sure that the destination directory exists.
+
+@@ -226,8 +226,7 @@
+ oIFS=$IFS
+ # Some sh's can't handle IFS=/ for some reason.
+ IFS='%'
+- set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+- shift
++ set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ IFS=$oIFS
+
+ pathcomp=
+@@ -296,7 +295,7 @@
+ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+ || {
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+- (exit 1); exit 1
++ (exit 1); exit
+ }
+ else
+ :
+@@ -307,12 +306,12 @@
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+ }
+ }
+- fi || { (exit 1); exit 1; }
++ fi || { (exit 1); exit; }
+ done
+
+ # The final little trick to "correctly" pass the exit status to the exit trap.
+ {
+- (exit 0); exit 0
++ (exit 0); exit
+ }
+
+ # Local variables:
+diff -ur linphone-1.5.0/mediastreamer2/ltmain.sh linphone-1.5.0-after/mediastreamer2/ltmain.sh
+--- linphone-1.5.0/mediastreamer2/ltmain.sh 2006-03-12 02:49:04.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/ltmain.sh 2007-01-19 16:05:22.000000000 +0800
+@@ -1,7 +1,7 @@
+ # ltmain.sh - Provide generalized library-building support services.
+ # NOTE: Changing this file will not affect anything until you rerun configure.
+ #
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
+ # Free Software Foundation, Inc.
+ # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+ #
+@@ -17,7 +17,7 @@
+ #
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -33,6 +33,9 @@
+ # function.
+ progpath="$0"
+
++# RH: define SED for historic ltconfig's generated by Libtool 1.3
++[ -z "$SED" ] && SED=sed
++
+ # The name of this program:
+ progname=`echo "$progpath" | $SED $basename`
+ modename="$progname"
+@@ -43,14 +46,9 @@
+
+ PROGRAM=ltmain.sh
+ PACKAGE=libtool
+-VERSION="1.5.22 Debian 1.5.22-4"
+-TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
++VERSION=1.5.6
++TIMESTAMP=" (1.1220.2.95 2004/04/11 05:50:42)"
+
+-# See if we are running on zsh, and set the options which allow our
+-# commands through without removal of \ escapes.
+-if test -n "${ZSH_VERSION+set}" ; then
+- setopt NO_GLOB_SUBST
+-fi
+
+ # Check that we have a working $echo.
+ if test "X$1" = X--no-reexec; then
+@@ -88,15 +86,14 @@
+ Xsed="${SED}"' -e 1s/^X//'
+ sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+ # test EBCDIC or ASCII
+-case `echo X|tr X '\101'` in
+- A) # ASCII based system
+- # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+- SP2NL='tr \040 \012'
+- NL2SP='tr \015\012 \040\040'
++case `echo A|tr A '\301'` in
++ A) # EBCDIC based system
++ SP2NL="tr '\100' '\n'"
++ NL2SP="tr '\r\n' '\100\100'"
+ ;;
+- *) # EBCDIC based system
+- SP2NL='tr \100 \n'
+- NL2SP='tr \r\n \100\100'
++ *) # Assume ASCII based system
++ SP2NL="tr '\040' '\012'"
++ NL2SP="tr '\015\012' '\040\040'"
+ ;;
+ esac
+
+@@ -113,9 +110,8 @@
+ fi
+
+ # Make sure IFS has a sensible default
+-lt_nl='
+-'
+-IFS=" $lt_nl"
++: ${IFS="
++"}
+
+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ $echo "$modename: not configured to build any kind of library" 1>&2
+@@ -132,8 +128,6 @@
+ show="$echo"
+ show_help=
+ execute_dlfiles=
+-duplicate_deps=no
+-preserve_args=
+ lo2o="s/\\.lo\$/.${objext}/"
+ o2lo="s/\\.${objext}\$/.lo/"
+
+@@ -141,51 +135,13 @@
+ # Shell function definitions:
+ # This seems to be the best place for them
+
+-# func_mktempdir [string]
+-# Make a temporary directory that won't clash with other running
+-# libtool processes, and avoids race conditions if possible. If
+-# given, STRING is the basename for that directory.
+-func_mktempdir ()
+-{
+- my_template="${TMPDIR-/tmp}/${1-$progname}"
+-
+- if test "$run" = ":"; then
+- # Return a directory name, but don't create it in dry-run mode
+- my_tmpdir="${my_template}-$$"
+- else
+-
+- # If mktemp works, use that first and foremost
+- my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+-
+- if test ! -d "$my_tmpdir"; then
+- # Failing that, at least try and use $RANDOM to avoid a race
+- my_tmpdir="${my_template}-${RANDOM-0}$$"
+-
+- save_mktempdir_umask=`umask`
+- umask 0077
+- $mkdir "$my_tmpdir"
+- umask $save_mktempdir_umask
+- fi
+-
+- # If we're not in dry-run mode, bomb out on failure
+- test -d "$my_tmpdir" || {
+- $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+- exit $EXIT_FAILURE
+- }
+- fi
+-
+- $echo "X$my_tmpdir" | $Xsed
+-}
+-
+-
+ # func_win32_libid arg
+ # return the library type of file 'arg'
+ #
+ # Need a lot of goo to handle *both* DLLs and import libs
+ # Has to be a shell function in order to 'eat' the argument
+ # that is supplied when $file_magic_command is called.
+-func_win32_libid ()
+-{
++func_win32_libid () {
+ win32_libid_type="unknown"
+ win32_fileres=`file -L $1 2>/dev/null`
+ case $win32_fileres in
+@@ -196,11 +152,12 @@
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 | \
+- $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
+- case $win32_nmres in
+- import*) win32_libid_type="x86 archive import";;
+- *) win32_libid_type="x86 archive static";;
+- esac
++ sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
++ if test "X$win32_nmres" = "Ximport" ; then
++ win32_libid_type="x86 archive import"
++ else
++ win32_libid_type="x86 archive static"
++ fi
+ fi
+ ;;
+ *DLL*)
+@@ -224,8 +181,7 @@
+ # Only attempt this if the compiler in the base compile
+ # command doesn't match the default compiler.
+ # arg is usually of the form 'gcc ...'
+-func_infer_tag ()
+-{
++func_infer_tag () {
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+@@ -282,116 +238,12 @@
+ esac
+ fi
+ }
+-
+-
+-# func_extract_an_archive dir oldlib
+-func_extract_an_archive ()
+-{
+- f_ex_an_ar_dir="$1"; shift
+- f_ex_an_ar_oldlib="$1"
+-
+- $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+- $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+- if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+- :
+- else
+- $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+- exit $EXIT_FAILURE
+- fi
+-}
+-
+-# func_extract_archives gentop oldlib ...
+-func_extract_archives ()
+-{
+- my_gentop="$1"; shift
+- my_oldlibs=${1+"$@"}
+- my_oldobjs=""
+- my_xlib=""
+- my_xabs=""
+- my_xdir=""
+- my_status=""
+-
+- $show "${rm}r $my_gentop"
+- $run ${rm}r "$my_gentop"
+- $show "$mkdir $my_gentop"
+- $run $mkdir "$my_gentop"
+- my_status=$?
+- if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+- exit $my_status
+- fi
+-
+- for my_xlib in $my_oldlibs; do
+- # Extract the objects.
+- case $my_xlib in
+- [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+- *) my_xabs=`pwd`"/$my_xlib" ;;
+- esac
+- my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+- my_xdir="$my_gentop/$my_xlib"
+-
+- $show "${rm}r $my_xdir"
+- $run ${rm}r "$my_xdir"
+- $show "$mkdir $my_xdir"
+- $run $mkdir "$my_xdir"
+- exit_status=$?
+- if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+- exit $exit_status
+- fi
+- case $host in
+- *-darwin*)
+- $show "Extracting $my_xabs"
+- # Do not bother doing anything if just a dry run
+- if test -z "$run"; then
+- darwin_orig_dir=`pwd`
+- cd $my_xdir || exit $?
+- darwin_archive=$my_xabs
+- darwin_curdir=`pwd`
+- darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+- darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+- if test -n "$darwin_arches"; then
+- darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+- darwin_arch=
+- $show "$darwin_base_archive has multiple architectures $darwin_arches"
+- for darwin_arch in $darwin_arches ; do
+- mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+- lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+- cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+- func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+- cd "$darwin_curdir"
+- $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+- done # $darwin_arches
+- ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+- darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+- darwin_file=
+- darwin_files=
+- for darwin_file in $darwin_filelist; do
+- darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+- lipo -create -output "$darwin_file" $darwin_files
+- done # $darwin_filelist
+- ${rm}r unfat-$$
+- cd "$darwin_orig_dir"
+- else
+- cd "$darwin_orig_dir"
+- func_extract_an_archive "$my_xdir" "$my_xabs"
+- fi # $darwin_arches
+- fi # $run
+- ;;
+- *)
+- func_extract_an_archive "$my_xdir" "$my_xabs"
+- ;;
+- esac
+- my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+- done
+- func_extract_archives_result="$my_oldobjs"
+-}
+ # End of Shell function definitions
+ #####################################
+
+ # Darwin sucks
+ eval std_shrext=\"$shrext_cmds\"
+
+-disable_libs=no
+-
+ # Parse our command line options once, thoroughly.
+ while test "$#" -gt 0
+ do
+@@ -456,10 +308,10 @@
+ --version)
+ $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+ $echo
+- $echo "Copyright (C) 2005 Free Software Foundation, Inc."
++ $echo "Copyright (C) 2003 Free Software Foundation, Inc."
+ $echo "This is free software; see the source for copying conditions. There is NO"
+ $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+- exit $?
++ exit $EXIT_SUCCESS
+ ;;
+
+ --config)
+@@ -468,7 +320,7 @@
+ for tagname in $taglist; do
+ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+ done
+- exit $?
++ exit $EXIT_SUCCESS
+ ;;
+
+ --debug)
+@@ -493,7 +345,7 @@
+ else
+ $echo "disable static libraries"
+ fi
+- exit $?
++ exit $EXIT_SUCCESS
+ ;;
+
+ --finish) mode="finish" ;;
+@@ -508,11 +360,7 @@
+ preserve_args="$preserve_args $arg"
+ ;;
+
+- --tag)
+- prevopt="--tag"
+- prev=tag
+- preserve_args="$preserve_args --tag"
+- ;;
++ --tag) prevopt="--tag" prev=tag ;;
+ --tag=*)
+ set tag "$optarg" ${1+"$@"}
+ shift
+@@ -544,18 +392,6 @@
+ exit $EXIT_FAILURE
+ fi
+
+-case $disable_libs in
+-no)
+- ;;
+-shared)
+- build_libtool_libs=no
+- build_old_libs=yes
+- ;;
+-static)
+- build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+- ;;
+-esac
+-
+ # If this variable is set in any of the actions, the command in it
+ # will be execed at the end. This prevents here-documents from being
+ # left over by shells.
+@@ -566,7 +402,7 @@
+ # Infer the operation mode.
+ if test -z "$mode"; then
+ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+- $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
++ $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2
+ case $nonopt in
+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+ mode=link
+@@ -632,7 +468,7 @@
+
+ for arg
+ do
+- case $arg_mode in
++ case "$arg_mode" in
+ arg )
+ # do not "continue". Instead, add this to base_compile
+ lastarg="$arg"
+@@ -714,10 +550,7 @@
+ case $lastarg in
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+- # in scan sets, and some SunOS ksh mistreat backslash-escaping
+- # in scan sets (worked around with variable expansion),
+- # and furthermore cannot handle '|' '&' '(' ')' in scan sets
+- # at all, so we specify them separately.
++ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ lastarg="\"$lastarg\""
+ ;;
+@@ -791,14 +624,6 @@
+ esac
+ done
+
+- qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+- case $qlibobj in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- qlibobj="\"$qlibobj\"" ;;
+- esac
+- test "X$libobj" != "X$qlibobj" \
+- && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
+- && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$obj"; then
+@@ -871,17 +696,12 @@
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+- $echo "$srcfile" > "$lockfile"
++ $echo $srcfile > "$lockfile"
+ fi
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+- qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+- case $qsrcfile in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- qsrcfile="\"$qsrcfile\"" ;;
+- esac
+
+ $run $rm "$libobj" "${libobj}T"
+
+@@ -903,18 +723,18 @@
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+- command="$base_compile $qsrcfile $pic_flag"
++ command="$base_compile $srcfile $pic_flag"
+ else
+ # Don't build PIC code
+- command="$base_compile $qsrcfile"
++ command="$base_compile $srcfile"
+ fi
+
+ if test ! -d "${xdir}$objdir"; then
+ $show "$mkdir ${xdir}$objdir"
+ $run $mkdir ${xdir}$objdir
+- exit_status=$?
+- if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+- exit $exit_status
++ status=$?
++ if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
++ exit $status
+ fi
+ fi
+
+@@ -986,9 +806,9 @@
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+- command="$base_compile $qsrcfile"
++ command="$base_compile $srcfile"
+ else
+- command="$base_compile $qsrcfile $pic_flag"
++ command="$base_compile $srcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+@@ -1117,7 +937,6 @@
+ no_install=no
+ objs=
+ non_pic_objects=
+- notinst_path= # paths that contain not-installed libtool libraries
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+@@ -1146,15 +965,14 @@
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+- prefer_static_libs=yes
+ else
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+- prefer_static_libs=built
+ fi
+ build_libtool_libs=no
+ build_old_libs=yes
++ prefer_static_libs=yes
+ break
+ ;;
+ esac
+@@ -1329,11 +1147,6 @@
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+- else
+- # If the PIC object exists, use it instead.
+- # $xdir was prepended to $pic_object above.
+- non_pic_object="$pic_object"
+- non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+@@ -1417,13 +1230,6 @@
+ prev=
+ continue
+ ;;
+- darwin_framework|darwin_framework_skip)
+- test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
+- compile_command="$compile_command $arg"
+- finalize_command="$finalize_command $arg"
+- prev=
+- continue
+- ;;
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+@@ -1482,18 +1288,6 @@
+ continue
+ ;;
+
+- -framework|-arch|-isysroot)
+- case " $CC " in
+- *" ${arg} ${1} "* | *" ${arg} ${1} "*)
+- prev=darwin_framework_skip ;;
+- *) compiler_flags="$compiler_flags $arg"
+- prev=darwin_framework ;;
+- esac
+- compile_command="$compile_command $arg"
+- finalize_command="$finalize_command $arg"
+- continue
+- ;;
+-
+ -inst-prefix-dir)
+ prev=inst_prefix
+ continue
+@@ -1520,8 +1314,7 @@
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+- absdir="$dir"
+- notinst_path="$notinst_path $dir"
++ exit $EXIT_FAILURE
+ fi
+ dir="$absdir"
+ ;;
+@@ -1535,15 +1328,10 @@
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+- testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+- case :$dllsearchpath: in
+- *":$testbindir:"*) ;;
+- *) dllsearchpath="$dllsearchpath:$testbindir";;
+- esac
+ ;;
+ esac
+ continue
+@@ -1552,15 +1340,15 @@
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
++ *-*-cygwin* | *-*-pw32* | *-*-beos*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+- *-*-os2*)
++ *-*-mingw* | *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
++ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+@@ -1568,19 +1356,10 @@
+ # Rhapsody C and math libraries are in the System framework
+ deplibs="$deplibs -framework System"
+ continue
+- ;;
+- *-*-sco3.2v5* | *-*-sco5v6*)
+- # Causes problems with __ctype
+- test "X$arg" = "X-lc" && continue
+- ;;
+- *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+- # Compiler inserts libc in the correct place for threads to work
+- test "X$arg" = "X-lc" && continue
+- ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
++ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+@@ -1590,20 +1369,8 @@
+ continue
+ ;;
+
+- # Tru64 UNIX uses -model [arg] to determine the layout of C++
+- # classes, name mangling, and exception handling.
+- -model)
+- compile_command="$compile_command $arg"
+- compiler_flags="$compiler_flags $arg"
+- finalize_command="$finalize_command $arg"
+- prev=xcompiler
+- continue
+- ;;
+-
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+- compiler_flags="$compiler_flags $arg"
+- compile_command="$compile_command $arg"
+- finalize_command="$finalize_command $arg"
++ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+@@ -1612,19 +1379,13 @@
+ continue
+ ;;
+
+- # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+- # -r[0-9][0-9]* specifies the processor on the SGI compiler
+- # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+- # +DA*, +DD* enable 64-bit mode on the HP compiler
+- # -q* pass through compiler args for the IBM compiler
+- # -m* pass through architecture-specific compiler args for GCC
+- # -m*, -t[45]*, -txscale* pass through architecture-specific
+- # compiler args for GCC
+- # -pg pass through profiling flag for GCC
+- # @file GCC response files
+- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
+- -t[45]*|-txscale*|@*)
+-
++ # gcc -m* arguments should be passed to the linker via $compiler_flags
++ # in order to pass architecture information to the linker
++ # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo
++ # but this is not reliable with gcc because gcc may use -mfoo to
++ # select a different linker, different libraries, etc, while
++ # -Wl,-mfoo simply passes -mfoo to the linker.
++ -m*)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+@@ -1635,7 +1396,9 @@
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+- compiler_flags="$compiler_flags $arg"
++ if test "$with_gcc" = "yes" ; then
++ compiler_flags="$compiler_flags $arg"
++ fi
+ continue
+ ;;
+
+@@ -1873,11 +1636,6 @@
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+- else
+- # If the PIC object exists, use it instead.
+- # $xdir was prepended to $pic_object above.
+- non_pic_object="$pic_object"
+- non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+@@ -1983,9 +1741,9 @@
+ if test ! -d "$output_objdir"; then
+ $show "$mkdir $output_objdir"
+ $run $mkdir $output_objdir
+- exit_status=$?
+- if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+- exit $exit_status
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$output_objdir"; then
++ exit $status
+ fi
+ fi
+
+@@ -2048,6 +1806,7 @@
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ notinst_deplibs= # not-installed libtool libraries
++ notinst_path= # paths that contain not-installed libtool libraries
+ case $linkmode in
+ lib)
+ passes="conv link"
+@@ -2082,10 +1841,7 @@
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+- link)
+- libs="$deplibs %DEPLIBS%"
+- test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+- ;;
++ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
+ if test "$pass" = dlopen; then
+@@ -2102,7 +1858,7 @@
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+- compiler_flags="$compiler_flags $deplib"
++ deplibs="$deplib $deplibs"
+ fi
+ continue
+ ;;
+@@ -2111,6 +1867,10 @@
+ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+ continue
+ fi
++ if test "$pass" = conv; then
++ deplibs="$deplib $deplibs"
++ continue
++ fi
+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ for search_ext in .la $std_shrext .so .a; do
+@@ -2221,22 +1981,7 @@
+ fi
+ case $linkmode in
+ lib)
+- valid_a_lib=no
+- case $deplibs_check_method in
+- match_pattern*)
+- set dummy $deplibs_check_method
+- match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+- if eval $echo \"$deplib\" 2>/dev/null \
+- | $SED 10q \
+- | $EGREP "$match_pattern_regex" > /dev/null; then
+- valid_a_lib=yes
+- fi
+- ;;
+- pass_all)
+- valid_a_lib=yes
+- ;;
+- esac
+- if test "$valid_a_lib" != yes; then
++ if test "$deplibs_check_method" != pass_all; then
+ $echo
+ $echo "*** Warning: Trying to link with static lib archive $deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+@@ -2286,7 +2031,7 @@
+ esac # case $deplib
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+- $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
++ $echo "$modename: cannot find the library \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+@@ -2310,8 +2055,6 @@
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+- avoidtemprpath=
+-
+
+ # Read the .la file
+ case $lib in
+@@ -2410,19 +2153,11 @@
+ dir="$libdir"
+ absdir="$libdir"
+ fi
+- test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+- if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+- dir="$ladir"
+- absdir="$abs_ladir"
+- # Remove this search path later
+- notinst_path="$notinst_path $abs_ladir"
+- else
+- dir="$ladir/$objdir"
+- absdir="$abs_ladir/$objdir"
+- # Remove this search path later
+- notinst_path="$notinst_path $abs_ladir"
+- fi
++ dir="$ladir/$objdir"
++ absdir="$abs_ladir/$objdir"
++ # Remove this search path later
++ notinst_path="$notinst_path $abs_ladir"
+ fi # $installed = yes
+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+@@ -2495,12 +2230,12 @@
+ if test -n "$library_names" &&
+ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ # We need to hardcode the library path
+- if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
++ if test -n "$shlibpath_var"; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath " in
+ *" $dir "*) ;;
+ *" $absdir "*) ;;
+- *) temp_rpath="$temp_rpath $absdir" ;;
++ *) temp_rpath="$temp_rpath $dir" ;;
+ esac
+ fi
+
+@@ -2537,12 +2272,8 @@
+ fi
+
+ link_static=no # Whether the deplib will be linked statically
+- use_static_libs=$prefer_static_libs
+- if test "$use_static_libs" = built && test "$installed" = yes ; then
+- use_static_libs=no
+- fi
+ if test -n "$library_names" &&
+- { test "$use_static_libs" = no || test -z "$old_library"; }; then
++ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+@@ -2655,15 +2386,11 @@
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+- *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+- *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+- *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+- *-*-unixware7*) add_dir="-L$dir" ;;
++ *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a module then we can not link against
+ # it, someone is ignoring the new warnings I added
+- if /usr/bin/file -L $add 2> /dev/null |
+- $EGREP ": [^:]* bundle" >/dev/null ; then
++ if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
+ $echo "** Warning, lib $linklib is a module, not a shared library"
+ if test -z "$old_library" ; then
+ $echo
+@@ -2694,7 +2421,7 @@
+ add_dir="-L$dir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+- case $libdir in
++ case "$libdir" in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+@@ -2767,7 +2494,7 @@
+ 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
++ case "$libdir" in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+@@ -2828,6 +2555,8 @@
+ fi
+ fi
+ else
++ convenience="$convenience $dir/$old_library"
++ old_convenience="$old_convenience $dir/$old_library"
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+@@ -2945,13 +2674,13 @@
+ *) continue ;;
+ esac
+ case " $deplibs " in
+- *" $path "*) ;;
+- *) deplibs="$path $deplibs" ;;
+- esac
+- case " $deplibs " in
+ *" $depdepl "*) ;;
+ *) deplibs="$depdepl $deplibs" ;;
+ esac
++ case " $deplibs " in
++ *" $path "*) ;;
++ *) deplibs="$deplibs $path" ;;
++ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+@@ -3204,11 +2933,6 @@
+ age="$number_minor"
+ revision="$number_minor"
+ ;;
+- *)
+- $echo "$modename: unknown library version type \`$version_type'" 1>&2
+- $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+- exit $EXIT_FAILURE
+- ;;
+ esac
+ ;;
+ no)
+@@ -3220,27 +2944,27 @@
+
+ # Check that each of the things are valid numbers.
+ case $current in
+- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
++ [0-9]*) ;;
+ *)
+- $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
++ $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $revision in
+- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
++ [0-9]*) ;;
+ *)
+- $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
++ $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $age in
+- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
++ [0-9]*) ;;
+ *)
+- $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
++ $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+@@ -3266,7 +2990,7 @@
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ minor_current=`expr $current + 1`
+- verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
++ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+@@ -3419,9 +3143,9 @@
+
+ # Eliminate all temporary directories.
+ for path in $notinst_path; do
+- lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+- deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+- dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
++ lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
++ deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
++ dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+ done
+
+ if test -n "$xrpath"; then
+@@ -3472,14 +3196,9 @@
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
++ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc due to us having libc/libc_r.
+- ;;
+- *-*-sco3.2v5* | *-*-sco5v6*)
+- # Causes problems with __ctype
+- ;;
+- *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+- # Compiler inserts libc in the correct place for threads to work
++ test "X$arg" = "X-lc" && continue
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+@@ -3523,11 +3242,11 @@
+ int main() { return 0; }
+ EOF
+ $rm conftest
+- $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
++ $LTCC -o conftest conftest.c $deplibs
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+- name=`expr $i : '-l\(.*\)'`
++ name="`expr $i : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" -ne "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+@@ -3564,11 +3283,11 @@
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+- name=`expr $i : '-l\(.*\)'`
++ name="`expr $i : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $rm conftest
+- $LTCC $LTCFLAGS -o conftest conftest.c $i
++ $LTCC -o conftest conftest.c $i
+ # Did it work?
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+@@ -3616,7 +3335,7 @@
+ set dummy $deplibs_check_method
+ file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+- name=`expr $a_deplib : '-l\(.*\)'`
++ name="`expr $a_deplib : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+@@ -3685,7 +3404,7 @@
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+- name=`expr $a_deplib : '-l\(.*\)'`
++ name="`expr $a_deplib : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test -n "$name" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+@@ -3815,35 +3534,6 @@
+ deplibs=$newdeplibs
+ fi
+
+-
+- # move library search paths that coincide with paths to not yet
+- # installed libraries to the beginning of the library search list
+- new_libs=
+- for path in $notinst_path; do
+- case " $new_libs " in
+- *" -L$path/$objdir "*) ;;
+- *)
+- case " $deplibs " in
+- *" -L$path/$objdir "*)
+- new_libs="$new_libs -L$path/$objdir" ;;
+- esac
+- ;;
+- esac
+- done
+- for deplib in $deplibs; do
+- case $deplib in
+- -L*)
+- case " $new_libs " in
+- *" $deplib "*) ;;
+- *) new_libs="$new_libs $deplib" ;;
+- esac
+- ;;
+- *) new_libs="$new_libs $deplib" ;;
+- esac
+- done
+- deplibs="$new_libs"
+-
+-
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+@@ -3927,7 +3617,6 @@
+ fi
+
+ lib="$output_objdir/$realname"
+- linknames=
+ for link
+ do
+ linknames="$linknames $link"
+@@ -3956,9 +3645,6 @@
+ # The command line is too long to execute in one step.
+ $show "using reloadable object file for export list..."
+ skipped_export=:
+- # Break out early, otherwise skipped_export may be
+- # set to false by a later but shorter cmd.
+- break
+ fi
+ done
+ IFS="$save_ifs"
+@@ -3992,13 +3678,67 @@
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${outputname}x"
++ $show "${rm}r $gentop"
++ $run ${rm}r "$gentop"
++ $show "$mkdir $gentop"
++ $run $mkdir "$gentop"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$gentop"; then
++ exit $status
++ fi
+ generated="$generated $gentop"
+
+- func_extract_archives $gentop $convenience
+- libobjs="$libobjs $func_extract_archives_result"
++ for xlib in $convenience; do
++ # Extract the objects.
++ case $xlib in
++ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
++ *) xabs=`pwd`"/$xlib" ;;
++ esac
++ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
++ xdir="$gentop/$xlib"
++
++ $show "${rm}r $xdir"
++ $run ${rm}r "$xdir"
++ $show "$mkdir $xdir"
++ $run $mkdir "$xdir"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$xdir"; then
++ exit $status
++ fi
++ # We will extract separately just the conflicting names and we will no
++ # longer touch any unique names. It is faster to leave these extract
++ # automatically by $AR in one run.
++ $show "(cd $xdir && $AR x $xabs)"
++ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
++ if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
++ :
++ else
++ $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
++ $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
++ $AR t "$xabs" | sort | uniq -cd | while read -r count name
++ do
++ i=1
++ while test "$i" -le "$count"
++ do
++ # Put our $i before any first dot (extension)
++ # Never overwrite any file
++ name_to="$name"
++ while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
++ do
++ name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
++ done
++ $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
++ $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
++ i=`expr $i + 1`
++ done
++ done
++ fi
++
++ libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
++ done
+ fi
+ fi
+-
++
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+@@ -4028,8 +3768,7 @@
+ fi
+ fi
+
+- if test "X$skipped_export" != "X:" &&
+- len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
++ if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+@@ -4048,7 +3787,6 @@
+ save_libobjs=$libobjs
+ fi
+ save_output=$output
+- output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+@@ -4058,13 +3796,13 @@
+ delfiles=
+ last_robj=
+ k=1
+- output=$output_objdir/$output_la-${k}.$objext
++ output=$output_objdir/$save_output-${k}.$objext
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+ if test "X$objlist" = X ||
+- { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
++ { len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len"; }; then
+ objlist="$objlist $obj"
+ else
+@@ -4078,9 +3816,9 @@
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+ fi
+- last_robj=$output_objdir/$output_la-${k}.$objext
++ last_robj=$output_objdir/$save_output-${k}.$objext
+ k=`expr $k + 1`
+- output=$output_objdir/$output_la-${k}.$objext
++ output=$output_objdir/$save_output-${k}.$objext
+ objlist=$obj
+ len=1
+ fi
+@@ -4100,13 +3838,13 @@
+ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+ fi
+
+- # Set up a command to remove the reloadable object files
++ # Set up a command to remove the reloadale object files
+ # after they are used.
+ i=0
+ while test "$i" -lt "$k"
+ do
+ i=`expr $i + 1`
+- delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
++ delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
+ done
+
+ $echo "creating a temporary reloadable object file: $output"
+@@ -4154,30 +3892,13 @@
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+- $run eval "$cmd" || {
+- lt_exit=$?
+-
+- # Restore the uninstalled library and exit
+- if test "$mode" = relink; then
+- $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+- fi
+-
+- exit $lt_exit
+- }
++ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+-
+- if test -n "$convenience"; then
+- if test -z "$whole_archive_flag_spec"; then
+- $show "${rm}r $gentop"
+- $run ${rm}r "$gentop"
+- fi
+- fi
+-
+ exit $EXIT_SUCCESS
+ fi
+
+@@ -4255,10 +3976,64 @@
+ eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${obj}x"
++ $show "${rm}r $gentop"
++ $run ${rm}r "$gentop"
++ $show "$mkdir $gentop"
++ $run $mkdir "$gentop"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$gentop"; then
++ exit $status
++ fi
+ generated="$generated $gentop"
+
+- func_extract_archives $gentop $convenience
+- reload_conv_objs="$reload_objs $func_extract_archives_result"
++ for xlib in $convenience; do
++ # Extract the objects.
++ case $xlib in
++ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
++ *) xabs=`pwd`"/$xlib" ;;
++ esac
++ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
++ xdir="$gentop/$xlib"
++
++ $show "${rm}r $xdir"
++ $run ${rm}r "$xdir"
++ $show "$mkdir $xdir"
++ $run $mkdir "$xdir"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$xdir"; then
++ exit $status
++ fi
++ # We will extract separately just the conflicting names and we will no
++ # longer touch any unique names. It is faster to leave these extract
++ # automatically by $AR in one run.
++ $show "(cd $xdir && $AR x $xabs)"
++ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
++ if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
++ :
++ else
++ $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
++ $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
++ $AR t "$xabs" | sort | uniq -cd | while read -r count name
++ do
++ i=1
++ while test "$i" -le "$count"
++ do
++ # Put our $i before any first dot (extension)
++ # Never overwrite any file
++ name_to="$name"
++ while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
++ do
++ name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
++ done
++ $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
++ $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
++ i=`expr $i + 1`
++ done
++ done
++ fi
++
++ reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
++ done
+ fi
+ fi
+
+@@ -4359,35 +4134,6 @@
+ ;;
+ esac
+
+-
+- # move library search paths that coincide with paths to not yet
+- # installed libraries to the beginning of the library search list
+- new_libs=
+- for path in $notinst_path; do
+- case " $new_libs " in
+- *" -L$path/$objdir "*) ;;
+- *)
+- case " $compile_deplibs " in
+- *" -L$path/$objdir "*)
+- new_libs="$new_libs -L$path/$objdir" ;;
+- esac
+- ;;
+- esac
+- done
+- for deplib in $compile_deplibs; do
+- case $deplib in
+- -L*)
+- case " $new_libs " in
+- *" $deplib "*) ;;
+- *) new_libs="$new_libs $deplib" ;;
+- esac
+- ;;
+- *) new_libs="$new_libs $deplib" ;;
+- esac
+- done
+- compile_deplibs="$new_libs"
+-
+-
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$finalize_command $finalize_deplibs"
+
+@@ -4432,15 +4178,10 @@
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+- testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+- case :$dllsearchpath: in
+- *":$testbindir:"*) ;;
+- *) dllsearchpath="$dllsearchpath:$testbindir";;
+- esac
+ ;;
+ esac
+ done
+@@ -4554,25 +4295,13 @@
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+- export_symbols="$output_objdir/$outputname.exp"
++ export_symbols="$output_objdir/$output.exp"
+ $run $rm $export_symbols
+- $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+- case $host in
+- *cygwin* | *mingw* )
+- $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+- $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+- ;;
+- esac
++ $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ else
+- $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+- $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
++ $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
++ $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+ $run eval 'mv "$nlist"T "$nlist"'
+- case $host in
+- *cygwin* | *mingw* )
+- $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+- $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+- ;;
+- esac
+ fi
+ fi
+
+@@ -4623,26 +4352,7 @@
+ #endif
+
+ /* The mapping between symbol names and symbols. */
+-"
+-
+- case $host in
+- *cygwin* | *mingw* )
+- $echo >> "$output_objdir/$dlsyms" "\
+-/* DATA imports from DLLs on WIN32 can't be const, because
+- runtime relocations are performed -- see ld's documentation
+- on pseudo-relocs */
+-struct {
+-"
+- ;;
+- * )
+- $echo >> "$output_objdir/$dlsyms" "\
+ const struct {
+-"
+- ;;
+- esac
+-
+-
+- $echo >> "$output_objdir/$dlsyms" "\
+ const char *name;
+ lt_ptr address;
+ }
+@@ -4689,29 +4399,16 @@
+ esac
+
+ # Now compile the dynamic symbol file.
+- $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+- $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
++ $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
++ $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+ # Clean up the generated files.
+ $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+ $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+ # Transform the symbol file into the correct name.
+- case $host in
+- *cygwin* | *mingw* )
+- if test -f "$output_objdir/${outputname}.def" ; then
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+- else
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- fi
+- ;;
+- * )
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- ;;
+- esac
++ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
++ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ ;;
+ *)
+ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+@@ -4736,7 +4433,7 @@
+ # We have no uninstalled library dependencies, so finalize right now.
+ $show "$link_command"
+ $run eval "$link_command"
+- exit_status=$?
++ status=$?
+
+ # Delete the generated files.
+ if test -n "$dlsyms"; then
+@@ -4744,7 +4441,7 @@
+ $run $rm "$output_objdir/${outputname}S.${objext}"
+ fi
+
+- exit $exit_status
++ exit $status
+ fi
+
+ if test -n "$shlibpath_var"; then
+@@ -4884,12 +4581,10 @@
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+- output_name=`basename $output`
+- output_path=`dirname $output`
+- cwrappersource="$output_path/$objdir/lt-$output_name.c"
+- cwrapper="$output_path/$output_name.exe"
+- $rm $cwrappersource $cwrapper
+- trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
++ cwrappersource=`$echo ${objdir}/lt-${output}.c`
++ cwrapper=`$echo ${output}.exe`
++ $rm $cwrappersource $cwrapper
++ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ cat > $cwrappersource <<EOF
+
+@@ -4914,9 +4609,6 @@
+ #include <malloc.h>
+ #include <stdarg.h>
+ #include <assert.h>
+-#include <string.h>
+-#include <ctype.h>
+-#include <sys/stat.h>
+
+ #if defined(PATH_MAX)
+ # define LT_PATHMAX PATH_MAX
+@@ -4927,19 +4619,15 @@
+ #endif
+
+ #ifndef DIR_SEPARATOR
+-# define DIR_SEPARATOR '/'
+-# define PATH_SEPARATOR ':'
++#define DIR_SEPARATOR '/'
+ #endif
+
+ #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+-# define HAVE_DOS_BASED_FILE_SYSTEM
+-# ifndef DIR_SEPARATOR_2
+-# define DIR_SEPARATOR_2 '\\'
+-# endif
+-# ifndef PATH_SEPARATOR_2
+-# define PATH_SEPARATOR_2 ';'
+-# endif
++#define HAVE_DOS_BASED_FILE_SYSTEM
++#ifndef DIR_SEPARATOR_2
++#define DIR_SEPARATOR_2 '\\'
++#endif
+ #endif
+
+ #ifndef DIR_SEPARATOR_2
+@@ -4949,32 +4637,17 @@
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+ #endif /* DIR_SEPARATOR_2 */
+
+-#ifndef PATH_SEPARATOR_2
+-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+-#else /* PATH_SEPARATOR_2 */
+-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+-#endif /* PATH_SEPARATOR_2 */
+-
+ #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+ #define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+ } while (0)
+
+-/* -DDEBUG is fairly common in CFLAGS. */
+-#undef DEBUG
+-#if defined DEBUGWRAPPER
+-# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+-#else
+-# define DEBUG(format, ...)
+-#endif
+-
+ const char *program_name = NULL;
+
+ void * xmalloc (size_t num);
+ char * xstrdup (const char *string);
+-const char * base_name (const char *name);
+-char * find_executable(const char *wrapper);
+-int check_executable(const char *path);
++char * basename (const char *name);
++char * fnqualify(const char *path);
+ char * strendzap(char *str, const char *pat);
+ void lt_fatal (const char *message, ...);
+
+@@ -4984,51 +4657,29 @@
+ char **newargz;
+ int i;
+
+- program_name = (char *) xstrdup (base_name (argv[0]));
+- DEBUG("(main) argv[0] : %s\n",argv[0]);
+- DEBUG("(main) program_name : %s\n",program_name);
++ program_name = (char *) xstrdup ((char *) basename (argv[0]));
+ newargz = XMALLOC(char *, argc+2);
+ EOF
+
+- cat >> $cwrappersource <<EOF
+- newargz[0] = (char *) xstrdup("$SHELL");
++ cat >> $cwrappersource <<EOF
++ newargz[0] = "$SHELL";
+ EOF
+
+- cat >> $cwrappersource <<"EOF"
+- newargz[1] = find_executable(argv[0]);
+- if (newargz[1] == NULL)
+- lt_fatal("Couldn't find %s", argv[0]);
+- DEBUG("(main) found exe at : %s\n",newargz[1]);
++ cat >> $cwrappersource <<"EOF"
++ newargz[1] = fnqualify(argv[0]);
+ /* we know the script has the same name, without the .exe */
+ /* so make sure newargz[1] doesn't end in .exe */
+ strendzap(newargz[1],".exe");
+ for (i = 1; i < argc; i++)
+ newargz[i+1] = xstrdup(argv[i]);
+ newargz[argc+1] = NULL;
+-
+- for (i=0; i<argc+1; i++)
+- {
+- DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
+- ;
+- }
+-
+ EOF
+
+- case $host_os in
+- mingw*)
+- cat >> $cwrappersource <<EOF
+- execv("$SHELL",(char const **)newargz);
+-EOF
+- ;;
+- *)
+- cat >> $cwrappersource <<EOF
++ cat >> $cwrappersource <<EOF
+ execv("$SHELL",newargz);
+ EOF
+- ;;
+- esac
+
+- cat >> $cwrappersource <<"EOF"
+- return 127;
++ cat >> $cwrappersource <<"EOF"
+ }
+
+ void *
+@@ -5048,148 +4699,48 @@
+ ;
+ }
+
+-const char *
+-base_name (const char *name)
++char *
++basename (const char *name)
+ {
+ const char *base;
+
+ #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+- if (isalpha ((unsigned char)name[0]) && name[1] == ':')
++ if (isalpha (name[0]) && name[1] == ':')
+ name += 2;
+ #endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+- return base;
+-}
+-
+-int
+-check_executable(const char * path)
+-{
+- struct stat st;
+-
+- DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+- if ((!path) || (!*path))
+- return 0;
+-
+- if ((stat (path, &st) >= 0) &&
+- (
+- /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+-#if defined (S_IXOTH)
+- ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+-#endif
+-#if defined (S_IXGRP)
+- ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+-#endif
+- ((st.st_mode & S_IXUSR) == S_IXUSR))
+- )
+- return 1;
+- else
+- return 0;
++ return (char *) base;
+ }
+
+-/* Searches for the full path of the wrapper. Returns
+- newly allocated full path name if found, NULL otherwise */
+ char *
+-find_executable (const char* wrapper)
++fnqualify(const char *path)
+ {
+- int has_slash = 0;
+- const char* p;
+- const char* p_next;
+- /* static buffer for getcwd */
++ size_t size;
++ char *p;
+ char tmp[LT_PATHMAX + 1];
+- int tmp_len;
+- char* concat_name;
+-
+- DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
+
+- if ((wrapper == NULL) || (*wrapper == '\0'))
+- return NULL;
++ assert(path != NULL);
+
+- /* Absolute path? */
++ /* Is it qualified already? */
+ #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+- if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
+- {
+- concat_name = xstrdup (wrapper);
+- if (check_executable(concat_name))
+- return concat_name;
+- XFREE(concat_name);
+- }
+- else
+- {
+-#endif
+- if (IS_DIR_SEPARATOR (wrapper[0]))
+- {
+- concat_name = xstrdup (wrapper);
+- if (check_executable(concat_name))
+- return concat_name;
+- XFREE(concat_name);
+- }
+-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+- }
++ if (isalpha (path[0]) && path[1] == ':')
++ return xstrdup (path);
+ #endif
++ if (IS_DIR_SEPARATOR (path[0]))
++ return xstrdup (path);
+
+- for (p = wrapper; *p; p++)
+- if (*p == '/')
+- {
+- has_slash = 1;
+- break;
+- }
+- if (!has_slash)
+- {
+- /* no slashes; search PATH */
+- const char* path = getenv ("PATH");
+- if (path != NULL)
+- {
+- for (p = path; *p; p = p_next)
+- {
+- const char* q;
+- size_t p_len;
+- for (q = p; *q; q++)
+- if (IS_PATH_SEPARATOR(*q))
+- break;
+- p_len = q - p;
+- p_next = (*q == '\0' ? q : q + 1);
+- if (p_len == 0)
+- {
+- /* empty path: current directory */
+- if (getcwd (tmp, LT_PATHMAX) == NULL)
+- lt_fatal ("getcwd failed");
+- tmp_len = strlen(tmp);
+- concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+- memcpy (concat_name, tmp, tmp_len);
+- concat_name[tmp_len] = '/';
+- strcpy (concat_name + tmp_len + 1, wrapper);
+- }
+- else
+- {
+- concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
+- memcpy (concat_name, p, p_len);
+- concat_name[p_len] = '/';
+- strcpy (concat_name + p_len + 1, wrapper);
+- }
+- if (check_executable(concat_name))
+- return concat_name;
+- XFREE(concat_name);
+- }
+- }
+- /* not found in PATH; assume curdir */
+- }
+- /* Relative path | not found in path: prepend cwd */
++ /* prepend the current directory */
++ /* doesn't handle '~' */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+- tmp_len = strlen(tmp);
+- concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+- memcpy (concat_name, tmp, tmp_len);
+- concat_name[tmp_len] = '/';
+- strcpy (concat_name + tmp_len + 1, wrapper);
+-
+- if (check_executable(concat_name))
+- return concat_name;
+- XFREE(concat_name);
+- return NULL;
++ size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
++ p = XMALLOC(char, size);
++ sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
++ return p;
+ }
+
+ char *
+@@ -5233,16 +4784,16 @@
+ va_end (ap);
+ }
+ EOF
+- # we should really use a build-platform specific compiler
+- # here, but OTOH, the wrappers (shell script and this C one)
+- # are only useful if you want to execute the "real" binary.
+- # Since the "real" binary is built for $host, then this
+- # wrapper might as well be built for $host, too.
+- $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+- ;;
+- esac
+- $rm $output
+- trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
++ # we should really use a build-platform specific compiler
++ # here, but OTOH, the wrappers (shell script and this C one)
++ # are only useful if you want to execute the "real" binary.
++ # Since the "real" binary is built for $host, then this
++ # wrapper might as well be built for $host, too.
++ $run $LTCC -s -o $cwrapper $cwrappersource
++ ;;
++ esac
++ $rm $output
++ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+ $echo > $output "\
+ #! $SHELL
+@@ -5263,7 +4814,7 @@
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+
+ relink_command=\"$relink_command\"
+
+@@ -5392,13 +4943,13 @@
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2*)
+ $echo >> $output "\
+- exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
++ exec \$progdir\\\\\$program \${1+\"\$@\"}
+ "
+ ;;
+
+ *)
+ $echo >> $output "\
+- exec \"\$progdir/\$program\" \${1+\"\$@\"}
++ exec \$progdir/\$program \${1+\"\$@\"}
+ "
+ ;;
+ esac
+@@ -5408,7 +4959,7 @@
+ fi
+ else
+ # The program doesn't exist.
+- \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
++ \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+ \$echo \"This script is just a wrapper for \$program.\" 1>&2
+ $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+ exit $EXIT_FAILURE
+@@ -5440,73 +4991,71 @@
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
++ $show "${rm}r $gentop"
++ $run ${rm}r "$gentop"
++ $show "$mkdir $gentop"
++ $run $mkdir "$gentop"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$gentop"; then
++ exit $status
++ fi
+ generated="$generated $gentop"
+
+- func_extract_archives $gentop $addlibs
+- oldobjs="$oldobjs $func_extract_archives_result"
++ # Add in members from convenience archives.
++ for xlib in $addlibs; do
++ # Extract the objects.
++ case $xlib in
++ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
++ *) xabs=`pwd`"/$xlib" ;;
++ esac
++ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
++ xdir="$gentop/$xlib"
++
++ $show "${rm}r $xdir"
++ $run ${rm}r "$xdir"
++ $show "$mkdir $xdir"
++ $run $mkdir "$xdir"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$xdir"; then
++ exit $status
++ fi
++ # We will extract separately just the conflicting names and we will no
++ # longer touch any unique names. It is faster to leave these extract
++ # automatically by $AR in one run.
++ $show "(cd $xdir && $AR x $xabs)"
++ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
++ if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
++ :
++ else
++ $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
++ $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
++ $AR t "$xabs" | sort | uniq -cd | while read -r count name
++ do
++ i=1
++ while test "$i" -le "$count"
++ do
++ # Put our $i before any first dot (extension)
++ # Never overwrite any file
++ name_to="$name"
++ while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
++ do
++ name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
++ done
++ $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
++ $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
++ i=`expr $i + 1`
++ done
++ done
++ fi
++
++ oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
++ done
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+- # POSIX demands no paths to be encoded in archives. We have
+- # to avoid creating archives with duplicate basenames if we
+- # might have to extract them afterwards, e.g., when creating a
+- # static archive out of a convenience library, or when linking
+- # the entirety of a libtool archive into another (currently
+- # not supported by libtool).
+- if (for obj in $oldobjs
+- do
+- $echo "X$obj" | $Xsed -e 's%^.*/%%'
+- done | sort | sort -uc >/dev/null 2>&1); then
+- :
+- else
+- $echo "copying selected object files to avoid basename conflicts..."
+-
+- if test -z "$gentop"; then
+- gentop="$output_objdir/${outputname}x"
+- generated="$generated $gentop"
+-
+- $show "${rm}r $gentop"
+- $run ${rm}r "$gentop"
+- $show "$mkdir $gentop"
+- $run $mkdir "$gentop"
+- exit_status=$?
+- if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+- exit $exit_status
+- fi
+- fi
+-
+- save_oldobjs=$oldobjs
+- oldobjs=
+- counter=1
+- for obj in $save_oldobjs
+- do
+- objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+- case " $oldobjs " in
+- " ") oldobjs=$obj ;;
+- *[\ /]"$objbase "*)
+- while :; do
+- # Make sure we don't pick an alternate name that also
+- # overlaps.
+- newobj=lt$counter-$objbase
+- counter=`expr $counter + 1`
+- case " $oldobjs " in
+- *[\ /]"$newobj "*) ;;
+- *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+- esac
+- done
+- $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+- $run ln "$obj" "$gentop/$newobj" ||
+- $run cp "$obj" "$gentop/$newobj"
+- oldobjs="$oldobjs $gentop/$newobj"
+- ;;
+- *) oldobjs="$oldobjs $obj" ;;
+- esac
+- done
+- fi
+-
+ eval cmds=\"$old_archive_cmds\"
+
+ if len=`expr "X$cmds" : ".*"` &&
+@@ -5520,7 +5069,20 @@
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+-
++ # GNU ar 2.10+ was changed to match POSIX; thus no paths are
++ # encoded into archives. This makes 'ar r' malfunction in
++ # this piecewise linking case whenever conflicting object
++ # names appear in distinct ar calls; check, warn and compensate.
++ if (for obj in $save_oldobjs
++ do
++ $echo "X$obj" | $Xsed -e 's%^.*/%%'
++ done | sort | sort -uc >/dev/null 2>&1); then
++ :
++ else
++ $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
++ $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
++ AR_FLAGS=cq
++ fi
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+@@ -5531,7 +5093,7 @@
+ oldobjs="$objlist $obj"
+ objlist="$objlist $obj"
+ eval test_cmds=\"$old_archive_cmds\"
+- if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
++ if len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len"; then
+ :
+ else
+@@ -5728,11 +5290,11 @@
+ # install_prog (especially on Windows NT).
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+- $echo "X$nonopt" | grep shtool > /dev/null; then
++ $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+ # Aesthetically quote it.
+ arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+@@ -5741,14 +5303,14 @@
+ shift
+ else
+ install_prog=
+- arg=$nonopt
++ arg="$nonopt"
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+@@ -5766,31 +5328,28 @@
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+- dest=$arg
++ dest="$arg"
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+- -f)
+- case " $install_prog " in
+- *[\\\ /]cp\ *) ;;
+- *) prev=$arg ;;
+- esac
+- ;;
+- -g | -m | -o) prev=$arg ;;
++ -f) prev="-f" ;;
++ -g) prev="-g" ;;
++ -m) prev="-m" ;;
++ -o) prev="-o" ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+- -*)
+- ;;
++ -*) ;;
++
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+- dest=$arg
++ dest="$arg"
+ continue
+ fi
+ ;;
+@@ -5799,7 +5358,7 @@
+ # Aesthetically quote the argument.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+@@ -5968,14 +5527,11 @@
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+- # Try `ln -sf' first, because the `ln' binary might depend on
+- # the symlink we replace! Solaris /bin/ln does not understand -f,
+- # so we also need to try rm && ln -s.
+ for linkname
+ do
+ if test "$linkname" != "$realname"; then
+- $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+- $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
++ $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
++ $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+ fi
+ done
+ fi
+@@ -5988,16 +5544,7 @@
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+- $run eval "$cmd" || {
+- lt_exit=$?
+-
+- # Restore the uninstalled library and exit
+- if test "$mode" = relink; then
+- $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+- fi
+-
+- exit $lt_exit
+- }
++ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+@@ -6091,15 +5638,17 @@
+ notinst_deplibs=
+ relink_command=
+
+- # Note that it is not necessary on cygwin/mingw to append a dot to
+- # foo even if both foo and FILE.exe exist: automatic-append-.exe
+- # behavior happens only for exec(3), not for open(2)! Also, sourcing
+- # `FILE.' does not work on cygwin managed mounts.
+- #
++ # To insure that "foo" is sourced, and not "foo.exe",
++ # finese the cygwin/MSYS system by explicitly sourcing "foo."
++ # which disallows the automatic-append-.exe behavior.
++ case $build in
++ *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
++ *) wrapperdot=${wrapper} ;;
++ esac
+ # If there is no directory component, then add one.
+- case $wrapper in
+- */* | *\\*) . ${wrapper} ;;
+- *) . ./${wrapper} ;;
++ case $file in
++ */* | *\\*) . ${wrapperdot} ;;
++ *) . ./${wrapperdot} ;;
+ esac
+
+ # Check the variables that should have been set.
+@@ -6127,21 +5676,34 @@
+ done
+
+ relink_command=
+- # Note that it is not necessary on cygwin/mingw to append a dot to
+- # foo even if both foo and FILE.exe exist: automatic-append-.exe
+- # behavior happens only for exec(3), not for open(2)! Also, sourcing
+- # `FILE.' does not work on cygwin managed mounts.
+- #
++ # To insure that "foo" is sourced, and not "foo.exe",
++ # finese the cygwin/MSYS system by explicitly sourcing "foo."
++ # which disallows the automatic-append-.exe behavior.
++ case $build in
++ *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
++ *) wrapperdot=${wrapper} ;;
++ esac
+ # If there is no directory component, then add one.
+- case $wrapper in
+- */* | *\\*) . ${wrapper} ;;
+- *) . ./${wrapper} ;;
++ case $file in
++ */* | *\\*) . ${wrapperdot} ;;
++ *) . ./${wrapperdot} ;;
+ esac
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ if test "$finalize" = yes && test -z "$run"; then
+- tmpdir=`func_mktempdir`
++ tmpdir="/tmp"
++ test -n "$TMPDIR" && tmpdir="$TMPDIR"
++ tmpdir="$tmpdir/libtool-$$"
++ save_umask=`umask`
++ umask 0077
++ if $mkdir "$tmpdir"; then
++ umask $save_umask
++ else
++ umask $save_umask
++ $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
++ continue
++ fi
+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+@@ -6165,7 +5727,7 @@
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+- # one anyway
++ # one anyways
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+@@ -6265,7 +5827,7 @@
+ # Exit here if they wanted silent mode.
+ test "$show" = : && exit $EXIT_SUCCESS
+
+- $echo "X----------------------------------------------------------------------" | $Xsed
++ $echo "----------------------------------------------------------------------"
+ $echo "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $echo " $libdir"
+@@ -6298,7 +5860,7 @@
+ $echo
+ $echo "See any operating system documentation about shared libraries for"
+ $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+- $echo "X----------------------------------------------------------------------" | $Xsed
++ $echo "----------------------------------------------------------------------"
+ exit $EXIT_SUCCESS
+ ;;
+
+@@ -6515,17 +6077,9 @@
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
++ test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+- case "$mode" in
+- clean)
+- case " $library_names " in
+- # " " in the beginning catches empty $dlname
+- *" $dlname "*) ;;
+- *) rmfiles="$rmfiles $objdir/$dlname" ;;
+- esac
+- test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+- ;;
+- uninstall)
++ if test "$mode" = uninstall; then
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ cmds=$postuninstall_cmds
+@@ -6558,8 +6112,7 @@
+ IFS="$save_ifs"
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+- ;;
+- esac
++ fi
+ fi
+ ;;
+
+@@ -6844,7 +6397,7 @@
+ $echo
+ $echo "Try \`$modename --help' for more information about other modes."
+
+-exit $?
++exit $EXIT_SUCCESS
+
+ # The TAGs below are defined such that we never get into a situation
+ # in which we disable both kinds of libraries. Given conflicting
+@@ -6858,11 +6411,12 @@
+ # configuration. But we'll never go from static-only to shared-only.
+
+ # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+-disable_libs=shared
++build_libtool_libs=no
++build_old_libs=yes
+ # ### END LIBTOOL TAG CONFIG: disable-shared
+
+ # ### BEGIN LIBTOOL TAG CONFIG: disable-static
+-disable_libs=static
++build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+ # ### END LIBTOOL TAG CONFIG: disable-static
+
+ # Local Variables:
+diff -ur linphone-1.5.0/mediastreamer2/Makefile.in linphone-1.5.0-after/mediastreamer2/Makefile.in
+--- linphone-1.5.0/mediastreamer2/Makefile.in 2006-10-09 17:11:07.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/Makefile.in 2007-01-19 16:05:36.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -138,7 +138,6 @@
+ FFLAGS = @FFLAGS@
+ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@
+ FFMPEG_LIBS = @FFMPEG_LIBS@
+-GREP = @GREP@
+ GSM_CFLAGS = @GSM_CFLAGS@
+ GSM_LIBS = @GSM_LIBS@
+ INSTALL_DATA = @INSTALL_DATA@
+@@ -196,9 +195,12 @@
+ VIDEO_LIBS = @VIDEO_LIBS@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -215,30 +217,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -346,13 +341,7 @@
+ # (which will cause the Makefiles to be regenerated when you run `make');
+ # (2) otherwise, pass the desired values on the `make' command line.
+ $(RECURSIVE_TARGETS):
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -364,7 +353,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+@@ -372,13 +361,7 @@
+
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+@@ -399,7 +382,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+ tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+Only in linphone-1.5.0/mediastreamer2: mediastreamer2.spec
+diff -ur linphone-1.5.0/mediastreamer2/missing linphone-1.5.0-after/mediastreamer2/missing
+--- linphone-1.5.0/mediastreamer2/missing 2006-08-25 16:46:33.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/missing 2007-01-19 16:05:34.000000000 +0800
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # Common stub for a few missing GNU programs while installing.
+
+-scriptversion=2005-06-08.21
++scriptversion=2004-09-07.08
+
+-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
++# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004
+ # Free Software Foundation, Inc.
+ # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+@@ -19,8 +19,8 @@
+
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA
+-# 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
+
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -87,12 +87,12 @@
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+ Send bug reports to <bug-automake@gnu.org>."
+- exit $?
++ exit 0
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+- exit $?
++ exit 0
+ ;;
+
+ -*)
+@@ -288,18 +288,11 @@
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+- # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+- # ... or it is the one specified with @setfilename ...
+- infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+- # ... or it is derived from the source name (dir/f.texi becomes f.info)
+- test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+- fi
+- # If the file does not exist, the user really needs makeinfo;
+- # let's fail without touching anything.
+- test -f $file || exit 1
++ file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
++ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
++ fi
+ touch $file
+ ;;
+
+diff -ur linphone-1.5.0/mediastreamer2/mkinstalldirs linphone-1.5.0-after/mediastreamer2/mkinstalldirs
+--- linphone-1.5.0/mediastreamer2/mkinstalldirs 2006-08-25 16:46:34.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/mkinstalldirs 2007-01-19 16:05:36.000000000 +0800
+@@ -1,7 +1,7 @@
+ #! /bin/sh
+ # mkinstalldirs --- make directory hierarchy
+
+-scriptversion=2005-06-29.22
++scriptversion=2004-02-15.20
+
+ # Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+ # Created: 1993-05-16
+@@ -12,7 +12,7 @@
+ # <automake-patches@gnu.org>.
+
+ errstatus=0
+-dirmode=
++dirmode=""
+
+ usage="\
+ Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+@@ -27,7 +27,7 @@
+ case $1 in
+ -h | --help | --h*) # -h for help
+ echo "$usage"
+- exit $?
++ exit 0
+ ;;
+ -m) # -m PERM arg
+ shift
+@@ -37,7 +37,7 @@
+ ;;
+ --version)
+ echo "$0 $scriptversion"
+- exit $?
++ exit 0
+ ;;
+ --) # stop option processing
+ shift
+@@ -103,21 +103,13 @@
+
+ for file
+ do
+- case $file in
+- /*) pathcomp=/ ;;
+- *) pathcomp= ;;
+- esac
+- oIFS=$IFS
+- IFS=/
+- set fnord $file
++ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+ shift
+- IFS=$oIFS
+
++ pathcomp=
+ for d
+ do
+- test "x$d" = x && continue
+-
+- pathcomp=$pathcomp$d
++ pathcomp="$pathcomp$d"
+ case $pathcomp in
+ -*) pathcomp=./$pathcomp ;;
+ esac
+@@ -132,7 +124,7 @@
+ else
+ if test ! -z "$dirmode"; then
+ echo "chmod $dirmode $pathcomp"
+- lasterr=
++ lasterr=""
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+ if test ! -z "$lasterr"; then
+@@ -142,7 +134,7 @@
+ fi
+ fi
+
+- pathcomp=$pathcomp/
++ pathcomp="$pathcomp/"
+ done
+ done
+
+diff -ur linphone-1.5.0/mediastreamer2/plugins/Makefile.in linphone-1.5.0-after/mediastreamer2/plugins/Makefile.in
+--- linphone-1.5.0/mediastreamer2/plugins/Makefile.in 2006-10-09 17:11:06.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/plugins/Makefile.in 2007-01-19 16:05:35.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -103,7 +103,6 @@
+ FFLAGS = @FFLAGS@
+ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@
+ FFMPEG_LIBS = @FFMPEG_LIBS@
+-GREP = @GREP@
+ GSM_CFLAGS = @GSM_CFLAGS@
+ GSM_LIBS = @GSM_LIBS@
+ INSTALL_DATA = @INSTALL_DATA@
+@@ -161,9 +160,12 @@
+ VIDEO_LIBS = @VIDEO_LIBS@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -180,30 +182,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+diff -ur linphone-1.5.0/mediastreamer2/src/gsm.c linphone-1.5.0-after/mediastreamer2/src/gsm.c
+--- linphone-1.5.0/mediastreamer2/src/gsm.c 2006-08-09 21:02:00.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/src/gsm.c 2006-11-14 16:23:34.000000000 +0800
+@@ -114,12 +114,17 @@
+ const int frsz=160*2;
+
+ while((im=ms_queue_get(f->inputs[0]))!=NULL){
++
++ //printf("ms_queue_get != NULL, decode here. HMH \n");
++
+ om=allocb(frsz,0);
+ if (gsm_decode(s,(gsm_byte*)im->b_rptr,(gsm_signal*)om->b_wptr)<0){
+ ms_warning("gsm_decode error!");
+ freemsg(om);
+ }else{
+ om->b_wptr+=frsz;
++
++ //printf("ms_queue_put HMH \n");
+ ms_queue_put(f->outputs[0],om);
+ }
+ freemsg(im);
+Only in linphone-1.5.0-after/mediastreamer2/src: gsm.c~
+diff -ur linphone-1.5.0/mediastreamer2/src/Makefile.in linphone-1.5.0-after/mediastreamer2/src/Makefile.in
+--- linphone-1.5.0/mediastreamer2/src/Makefile.in 2006-10-10 17:59:23.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/src/Makefile.in 2007-01-19 16:05:35.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,6 +14,8 @@
+
+ @SET_MAKE@
+
++SOURCES = $(libmediastreamer_la_SOURCES) $(libquickstream_la_SOURCES)
++
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -112,11 +114,11 @@
+ am__depfiles_maybe = depfiles
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
++LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ SOURCES = $(libmediastreamer_la_SOURCES) $(libquickstream_la_SOURCES)
+ DIST_SOURCES = $(am__libmediastreamer_la_SOURCES_DIST) \
+@@ -177,7 +179,6 @@
+ FFLAGS = @FFLAGS@
+ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@
+ FFMPEG_LIBS = @FFMPEG_LIBS@
+-GREP = @GREP@
+ GSM_CFLAGS = @GSM_CFLAGS@
+ GSM_LIBS = @GSM_LIBS@
+ INSTALL_DATA = @INSTALL_DATA@
+@@ -235,9 +236,12 @@
+ VIDEO_LIBS = @VIDEO_LIBS@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -254,30 +258,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+diff -ur linphone-1.5.0/mediastreamer2/src/oss.c linphone-1.5.0-after/mediastreamer2/src/oss.c
+--- linphone-1.5.0/mediastreamer2/src/oss.c 2006-08-09 21:02:00.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/src/oss.c 2006-12-17 20:44:13.000000000 +0800
+@@ -59,33 +59,33 @@
+ card so that no internal delay can occur in the sound card */
+ frag = ( ( 32767 << 16 ) | 7 );
+ if( ioctl( fd, SNDCTL_DSP_SETFRAGMENT, &frag ) ) {
+- ms_warning("oss_open: can't set fragment size:%s.",strerror(errno));
++ printf("oss_open: can't set fragment size:%s.",strerror(errno));
+ }
+
+ p=AFMT_S16_NE;
+
+ err=ioctl(fd,SNDCTL_DSP_SETFMT,&p);
+ if (err<0){
+- ms_warning("oss_open: can't set sample format:%s.",strerror(errno));
++ printf("oss_open: can't set sample format:%s.",strerror(errno));
+ }
+
+
+ p = bits; /* 16 bits */
+ err=ioctl(fd, SNDCTL_DSP_SAMPLESIZE, &p);
+ if (err<0){
+- ms_warning("oss_open: can't set sample size to %i:%s.",bits,strerror(errno));
++ printf("oss_open: can't set sample size to %i:%s.",bits,strerror(errno));
+ }
+
+ p = rate; /* rate in khz*/
+ err=ioctl(fd, SNDCTL_DSP_SPEED, &p);
+ if (err<0){
+- ms_warning("oss_open: can't set sample rate to %i:%s.",rate,strerror(errno));
++ printf("oss_open: can't set sample rate to %i:%s.",rate,strerror(errno));
+ }
+
+ p = stereo; /* stereo or not */
+ err=ioctl(fd, SNDCTL_DSP_STEREO, &p);
+ if (err<0){
+- ms_warning("oss_open: can't set mono/stereo mode:%s.",strerror(errno));
++ printf("oss_open: can't set mono/stereo mode:%s.",strerror(errno));
+ }
+
+ if (rate==16000) blocksize=4096; /* oss emulation is not very good at 16khz */
+@@ -108,20 +108,20 @@
+ ioctl(fd, SNDCTL_DSP_GETBLKSIZE, &min_size);
+ if (min_size>blocksize)
+ {
+- ms_warning("dsp block size set to %i.",min_size);
++ printf("dsp block size set to %i.",min_size);
+ }else{
+ /* no need to access the card with less latency than needed*/
+ min_size=blocksize;
+ }
+
+- ms_message("/dev/dsp opened: rate=%i,bits=%i,stereo=%i blocksize=%i.",
++ printf("/dev/dsp opened: rate=%i,bits=%i,stereo=%i blocksize=%i.",
+ rate,bits,stereo,min_size);
+
+ if( ioctl( fd, SNDCTL_DSP_GETISPACE, &info ) == -1 ) {
+- ms_warning("oss_open: can't get ispace:%s.",strerror(errno));
++ printf("oss_open: can't get ispace:%s.",strerror(errno));
+ }
+ else{
+- ms_warning("oss_open: audio buffer size: %i.", info.fragsize * sizeof( short ));
++ printf("oss_open: audio buffer size: %i.", info.fragsize * sizeof( short ));
+ }
+
+
+@@ -131,7 +131,7 @@
+
+ fl=PCM_ENABLE_OUTPUT|PCM_ENABLE_INPUT;
+ res=ioctl(fd, SNDCTL_DSP_SETTRIGGER, &fl);
+- if (res<0) ms_warning("OSS_TRIGGER: %s",strerror(errno));
++ if (res<0) printf("OSS_TRIGGER: %s",strerror(errno));
+ }
+ *minsz=min_size;
+ return fd;
+@@ -163,7 +163,7 @@
+ osscmd=SOUND_MIXER_VOLUME;
+ break;
+ case MS_SND_CARD_CAPTURE:
+- osscmd=SOUND_MIXER_IGAIN;
++ osscmd=SOUND_MIXER_MIC;//HMH, capture
+ break;
+ case MS_SND_CARD_PLAYBACK:
+ osscmd=SOUND_MIXER_PCM;
+@@ -172,6 +172,8 @@
+ ms_warning("oss_card_set_level: unsupported command.");
+ return;
+ }
++ printf("HMH oss_set_level(%d), mixerelement(%d).\n", percent, e);
++
+ p=(((int)percent)<<8 | (int)percent);
+ mix_fd = open(d->mixdev, O_WRONLY);
+ ioctl(mix_fd,MIXER_WRITE(osscmd), &p);
+@@ -189,7 +191,7 @@
+ osscmd=SOUND_MIXER_VOLUME;
+ break;
+ case MS_SND_CARD_CAPTURE:
+- osscmd=SOUND_MIXER_IGAIN;
++ osscmd=SOUND_MIXER_MIC;//IGAIN;
+ break;
+ case MS_SND_CARD_PLAYBACK:
+ osscmd=SOUND_MIXER_PCM;
+@@ -301,13 +303,24 @@
+ int bsize=0;
+ uint8_t *rtmpbuff=NULL;
+ uint8_t *wtmpbuff=NULL;
++ uint16_t *w_ptr;
++
+ int err;
++
+ mblk_t *rm=NULL;
+ d->pcmfd=oss_open(d->pcmdev,d->bits,d->stereo,d->rate,&bsize);
+ if (d->pcmfd>=0){
+ rtmpbuff=(uint8_t*)alloca(bsize);
+ wtmpbuff=(uint8_t*)alloca(bsize);
++
++ }
++ if (wtmpbuff <= 0) {
++ //printf("HMH, error alloca.\n");
++ return NULL;
+ }
++
++ w_ptr = (uint16_t *) wtmpbuff;
++
+ while(d->read_started || d->write_started){
+ if (d->pcmfd>=0){
+ if (d->read_started){
+@@ -331,7 +344,21 @@
+ ms_warning("Fail to read %i bytes from soundcard: %s",
+ bsize,strerror(errno));
+ }else{
++
++#if 1
++ int i = 0;
++ /* 16bits, [left16][right16][left16][right16]...*/
++ unsigned short *ptr = (unsigned short *) (rm->b_wptr);
++
++ //ms_warning("HMH, Read %i bytes from soundcard: %s", err);
++
++ for(; i < err/4; i++) {
++ ptr[i] = ptr[i*2];
++ }
++ rm->b_wptr+=err/2;
++#else
+ rm->b_wptr+=err;
++#endif
+ ms_mutex_lock(&d->mutex);
+ putq(&d->rq,rm);
+ ms_mutex_unlock(&d->mutex);
+@@ -346,9 +373,17 @@
+ if (d->write_started){
+
+ audio_buf_info info;
+- if( ms_bufferizer_get_avail(d->bufferizer)>=bsize && ioctl( d->pcmfd, SNDCTL_DSP_GETOSPACE, &info ) == 0 ) {
+- if( info.fragstotal - info.fragments > 15 ) {
++
++ //printf("ms_bufferizer_get_avail(d->bufferizer) (%d).\n", ms_bufferizer_get_avail(d->bufferizer));
++
++ //if( ms_bufferizer_get_avail(d->bufferizer)>=bsize && ioctl( d->pcmfd, SNDCTL_DSP_GETOSPACE, &info ) == 0 ) {
++ if( ms_bufferizer_get_avail(d->bufferizer)>=bsize/2 ) {
++ //if( info.fragstotal - info.fragments > 15 ) {
++ if( 0 ) {
+ static int c=0;
++
++ //printf("drop fragment. HMH .\n");
++
+ /* drop the fragment if the buffer starts to fill up */
+ /* we got too much data: I prefer to empty the incoming buffer */
+ while (ms_bufferizer_get_avail(d->bufferizer)>bsize*4){
+@@ -363,10 +398,22 @@
+ }
+
+ }else {
+- err=ms_bufferizer_read(d->bufferizer,wtmpbuff,bsize);
++ int i = 0;
++
++ err=ms_bufferizer_read(d->bufferizer,wtmpbuff,bsize/2);
++
++ for (i = bsize/2 - 1; i >= 0; i--) { //bsize/2
++ w_ptr[i*2] = w_ptr[i];
++ w_ptr[i*2 + 1] = w_ptr[i];
++ }
++
++ //printf("HMH, Readed ms_bufferizer_read(%d), bsize(%d). \n", err, bsize);
+ err=write(d->pcmfd,wtmpbuff,bsize);
++
++ //printf("HMH, Write (%i) first half. \n", err);
++
+ if (err<0){
+- ms_warning("Fail to write %i bytes from soundcard: %s",
++ printf("Fail to write %i bytes from soundcard: %s",
+ bsize,strerror(errno));
+ }
+ }
+Only in linphone-1.5.0-after/mediastreamer2/src: oss.c~
+diff -ur linphone-1.5.0/mediastreamer2/tests/Makefile.in linphone-1.5.0-after/mediastreamer2/tests/Makefile.in
+--- linphone-1.5.0/mediastreamer2/tests/Makefile.in 2006-10-09 17:11:06.000000000 +0800
++++ linphone-1.5.0-after/mediastreamer2/tests/Makefile.in 2007-01-19 16:05:36.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,6 +14,8 @@
+
+ @SET_MAKE@
+
++SOURCES = $(echo_SOURCES) $(mediastream_SOURCES) $(ring_SOURCES) $(videodisplay_SOURCES)
++
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -92,11 +94,11 @@
+ am__depfiles_maybe = depfiles
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
++LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ SOURCES = $(echo_SOURCES) $(mediastream_SOURCES) $(ring_SOURCES) \
+ $(videodisplay_SOURCES)
+@@ -158,7 +160,6 @@
+ FFLAGS = @FFLAGS@
+ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@
+ FFMPEG_LIBS = @FFMPEG_LIBS@
+-GREP = @GREP@
+ GSM_CFLAGS = @GSM_CFLAGS@
+ GSM_LIBS = @GSM_LIBS@
+ INSTALL_DATA = @INSTALL_DATA@
+@@ -216,9 +217,12 @@
+ VIDEO_LIBS = @VIDEO_LIBS@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -235,30 +239,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+diff -ur linphone-1.5.0/missing linphone-1.5.0-after/missing
+--- linphone-1.5.0/missing 2006-08-25 16:46:15.000000000 +0800
++++ linphone-1.5.0-after/missing 2007-01-19 16:05:04.162513000 +0800
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # Common stub for a few missing GNU programs while installing.
+
+-scriptversion=2005-06-08.21
++scriptversion=2004-09-07.08
+
+-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
++# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004
+ # Free Software Foundation, Inc.
+ # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+@@ -19,8 +19,8 @@
+
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA
+-# 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
+
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -87,12 +87,12 @@
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+ Send bug reports to <bug-automake@gnu.org>."
+- exit $?
++ exit 0
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+- exit $?
++ exit 0
+ ;;
+
+ -*)
+@@ -288,18 +288,11 @@
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+- # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+- # ... or it is the one specified with @setfilename ...
+- infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+- # ... or it is derived from the source name (dir/f.texi becomes f.info)
+- test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+- fi
+- # If the file does not exist, the user really needs makeinfo;
+- # let's fail without touching anything.
+- test -f $file || exit 1
++ file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
++ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
++ fi
+ touch $file
+ ;;
+
+diff -ur linphone-1.5.0/mkinstalldirs linphone-1.5.0-after/mkinstalldirs
+--- linphone-1.5.0/mkinstalldirs 2006-08-25 16:46:18.000000000 +0800
++++ linphone-1.5.0-after/mkinstalldirs 2007-01-19 16:05:07.000000000 +0800
+@@ -1,7 +1,7 @@
+ #! /bin/sh
+ # mkinstalldirs --- make directory hierarchy
+
+-scriptversion=2005-06-29.22
++scriptversion=2004-02-15.20
+
+ # Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+ # Created: 1993-05-16
+@@ -12,7 +12,7 @@
+ # <automake-patches@gnu.org>.
+
+ errstatus=0
+-dirmode=
++dirmode=""
+
+ usage="\
+ Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+@@ -27,7 +27,7 @@
+ case $1 in
+ -h | --help | --h*) # -h for help
+ echo "$usage"
+- exit $?
++ exit 0
+ ;;
+ -m) # -m PERM arg
+ shift
+@@ -37,7 +37,7 @@
+ ;;
+ --version)
+ echo "$0 $scriptversion"
+- exit $?
++ exit 0
+ ;;
+ --) # stop option processing
+ shift
+@@ -103,21 +103,13 @@
+
+ for file
+ do
+- case $file in
+- /*) pathcomp=/ ;;
+- *) pathcomp= ;;
+- esac
+- oIFS=$IFS
+- IFS=/
+- set fnord $file
++ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+ shift
+- IFS=$oIFS
+
++ pathcomp=
+ for d
+ do
+- test "x$d" = x && continue
+-
+- pathcomp=$pathcomp$d
++ pathcomp="$pathcomp$d"
+ case $pathcomp in
+ -*) pathcomp=./$pathcomp ;;
+ esac
+@@ -132,7 +124,7 @@
+ else
+ if test ! -z "$dirmode"; then
+ echo "chmod $dirmode $pathcomp"
+- lasterr=
++ lasterr=""
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+ if test ! -z "$lasterr"; then
+@@ -142,7 +134,7 @@
+ fi
+ fi
+
+- pathcomp=$pathcomp/
++ pathcomp="$pathcomp/"
+ done
+ done
+
+Only in linphone-1.5.0-after/: note
+diff -ur linphone-1.5.0/oRTP/aclocal.m4 linphone-1.5.0-after/oRTP/aclocal.m4
+--- linphone-1.5.0/oRTP/aclocal.m4 2006-10-09 17:10:05.000000000 +0800
++++ linphone-1.5.0-after/oRTP/aclocal.m4 2007-01-19 16:05:13.000000000 +0800
+@@ -1,7 +1,7 @@
+-# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
++# generated automatically by aclocal 1.9.2 -*- Autoconf -*-
+
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+-# 2005 Free Software Foundation, Inc.
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
++# Free Software Foundation, Inc.
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -67,7 +67,7 @@
+
+ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+-# serial 48 Debian 1.5.22-4 AC_PROG_LIBTOOL
++# serial 47 AC_PROG_LIBTOOL
+
+
+ # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+@@ -177,7 +177,7 @@
+
+ # Sed substitution that helps us do robust quoting. It backslashifies
+ # metacharacters that are still active within double-quoted strings.
+-Xsed='sed -e 1s/^X//'
++Xsed='sed -e s/^X//'
+ [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+ # Same as above, but do not quote variable references.
+@@ -197,7 +197,7 @@
+ default_ofile=libtool
+ can_build_shared=yes
+
+-# All known linkers require a `.a' archive for static linking (except MSVC,
++# All known linkers require a `.a' archive for static linking (except M$VC,
+ # which needs '.lib').
+ libext=a
+ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -217,7 +217,6 @@
+ test -z "$AS" && AS=as
+ test -z "$CC" && CC=cc
+ test -z "$LTCC" && LTCC=$CC
+-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+ test -z "$DLLTOOL" && DLLTOOL=dlltool
+ test -z "$LD" && LD=ld
+ test -z "$LN_S" && LN_S="ln -s"
+@@ -237,17 +236,15 @@
+ if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
++ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
++ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+ fi
+
+-_LT_CC_BASENAME([$compiler])
+-
+ # Only perform the check for file, if the check method requires it
+ case $deplibs_check_method in
+ file_magic*)
+@@ -288,56 +285,11 @@
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+ ])# _LT_AC_SYS_COMPILER
+
+
+-# _LT_CC_BASENAME(CC)
+-# -------------------
+-# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+-AC_DEFUN([_LT_CC_BASENAME],
+-[for cc_temp in $1""; do
+- case $cc_temp in
+- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-])
+-
+-
+-# _LT_COMPILER_BOILERPLATE
+-# ------------------------
+-# Check for compiler boilerplate output or warnings with
+-# the simple compiler test code.
+-AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+-[ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-])# _LT_COMPILER_BOILERPLATE
+-
+-
+-# _LT_LINKER_BOILERPLATE
+-# ----------------------
+-# Check for linker boilerplate output or warnings with
+-# the simple link test code.
+-AC_DEFUN([_LT_LINKER_BOILERPLATE],
+-[ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
+-])# _LT_LINKER_BOILERPLATE
+-
+-
+ # _LT_AC_SYS_LIBPATH_AIX
+ # ----------------------
+ # Links a minimal program and checks the executable
+@@ -410,15 +362,15 @@
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+ if test -z "$ECHO"; then
+ if test "X${echo_test_string+set}" != Xset; then
+ # find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+- if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+- echo_test_string=`eval $cmd` &&
++ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
++ echo_test_string="`eval $cmd`" &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+@@ -587,7 +539,7 @@
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+- case `/usr/bin/file conftest.o` in
++ case "`/usr/bin/file conftest.o`" in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+@@ -638,22 +590,6 @@
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+-sparc*-*solaris*)
+- # Find out which ABI we are using.
+- echo 'int i;' > conftest.$ac_ext
+- if AC_TRY_EVAL(ac_compile); then
+- case `/usr/bin/file conftest.o` in
+- *64-bit*)
+- case $lt_cv_prog_gnu_ld in
+- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+- *) LD="${LD-ld} -64" ;;
+- esac
+- ;;
+- esac
+- fi
+- rm -rf conftest*
+- ;;
+-
+ AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+ [*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+@@ -685,7 +621,7 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+@@ -695,10 +631,8 @@
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ $2=yes
+ fi
+ fi
+@@ -724,16 +658,11 @@
+ LDFLAGS="$LDFLAGS $3"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
++ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- $2=yes
+- fi
+ else
+ $2=yes
+ fi
+@@ -792,55 +721,11 @@
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+- # This has been around since 386BSD, at least. Likely further.
+- if test -x /sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+- elif test -x /usr/sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+- else
+- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+- fi
+- # And add a safety zone
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+- ;;
+-
+- interix*)
+- # We know the value 262144 and hardcode it with a safety zone (like BSD)
+- lt_cv_sys_max_cmd_len=196608
+- ;;
+-
+- osf*)
+- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+- # nice to cause kernel panics so lets avoid the loop below.
+- # First set a reasonable default.
+- lt_cv_sys_max_cmd_len=16384
+- #
+- if test -x /sbin/sysconfig; then
+- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+- *1*) lt_cv_sys_max_cmd_len=-1 ;;
+- esac
+- fi
+- ;;
+- sco3.2v5*)
+- lt_cv_sys_max_cmd_len=102400
+- ;;
+- sysv5* | sco5v6* | sysv4.2uw2*)
+- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+- if test -n "$kargmax"; then
+- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+- else
+- lt_cv_sys_max_cmd_len=32768
+- fi
+- ;;
+- *)
++ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+- while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
++ while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+@@ -866,7 +751,7 @@
+
+
+ # _LT_AC_CHECK_DLFCN
+-# ------------------
++# --------------------
+ AC_DEFUN([_LT_AC_CHECK_DLFCN],
+ [AC_CHECK_HEADERS(dlfcn.h)dnl
+ ])# _LT_AC_CHECK_DLFCN
+@@ -874,7 +759,7 @@
+
+ # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+ # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+-# ---------------------------------------------------------------------
++# ------------------------------------------------------------------
+ AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+ [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+ if test "$cross_compiling" = yes; then :
+@@ -940,19 +825,17 @@
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+- else
+- puts (dlerror ());
+
+ exit (status);
+ }]
+ EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+- (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
++ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+- x$lt_dlunknown|x*) $3 ;;
++ x$lt_unknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+@@ -964,7 +847,7 @@
+
+
+ # AC_LIBTOOL_DLOPEN_SELF
+-# ----------------------
++# -------------------
+ AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+ [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+ if test "x$enable_dlopen" != xyes; then
+@@ -1035,7 +918,7 @@
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+@@ -1048,7 +931,7 @@
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
++ LDFLAGS="$LDFLAGS $link_static_flag"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+@@ -1096,7 +979,7 @@
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+@@ -1108,13 +991,11 @@
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
++ if test ! -s out/conftest.err; then
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+- chmod u+w . 2>&AS_MESSAGE_LOG_FD
++ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+@@ -1178,8 +1059,8 @@
+ [AC_MSG_CHECKING([how to hardcode library paths into programs])
+ _LT_AC_TAGVAR(hardcode_action, $1)=
+ if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+- test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+- test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
++ test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \
++ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+@@ -1346,7 +1227,7 @@
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+-bsdi[[45]]*)
++bsdi4*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -1374,8 +1255,7 @@
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
++ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+@@ -1405,7 +1285,7 @@
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+@@ -1428,7 +1308,7 @@
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+@@ -1451,17 +1331,20 @@
+ dynamic_linker=no
+ ;;
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[[123]]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+@@ -1479,19 +1362,14 @@
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+- freebsd3.[[01]]* | freebsdelf3.[[01]]*)
++ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+- freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+- freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
++ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+ esac
+ ;;
+
+@@ -1511,7 +1389,7 @@
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+@@ -1551,18 +1429,6 @@
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+@@ -1606,7 +1472,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -1620,10 +1486,27 @@
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
++ if AC_TRY_EVAL(ac_compile); then
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
++
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
++ lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+@@ -1635,7 +1518,7 @@
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+-netbsdelf*-gnu)
++knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -1644,7 +1527,7 @@
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
++ dynamic_linker='GNU ld.so'
+ ;;
+
+ netbsd*)
+@@ -1684,13 +1567,8 @@
+
+ openbsd*)
+ version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
++ need_version=yes
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+@@ -1728,6 +1606,13 @@
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
+ solaris*)
+ version_type=linux
+ need_lib_prefix=no
+@@ -1753,7 +1638,7 @@
+ need_version=yes
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+@@ -1786,29 +1671,6 @@
+ fi
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
+- esac
+- fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
+-
+ uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -1822,11 +1684,6 @@
+ esac
+ AC_MSG_RESULT([$dynamic_linker])
+ test "$dynamic_linker" = no && can_build_shared=no
+-
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+-fi
+ ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+@@ -1851,9 +1708,6 @@
+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+ fi
+ fi
+- if test -z "$LTCFLAGS"; then
+- eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+- fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+@@ -1880,9 +1734,7 @@
+
+ case $tagname in
+ CXX)
+- if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+- (test "X$CXX" != "Xg++"))) ; then
++ if test -n "$CXX" && test "X$CXX" != "Xno"; then
+ AC_LIBTOOL_LANG_CXX_CONFIG
+ else
+ tagname=""
+@@ -1944,7 +1796,7 @@
+
+ # AC_LIBTOOL_WIN32_DLL
+ # --------------------
+-# declare package support for building win32 DLLs
++# declare package support for building win32 dll's
+ AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+ [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+ ])# AC_LIBTOOL_WIN32_DLL
+@@ -1982,7 +1834,7 @@
+
+ # AC_DISABLE_SHARED
+ # -----------------
+-# set the default shared flag to --disable-shared
++#- set the default shared flag to --disable-shared
+ AC_DEFUN([AC_DISABLE_SHARED],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ AC_ENABLE_SHARED(no)
+@@ -2118,7 +1970,7 @@
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
++ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+@@ -2228,7 +2080,7 @@
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+- # but apparently some variants of GNU ld only accept -v.
++ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+@@ -2260,7 +2112,7 @@
+ AC_DEFUN([AC_PROG_LD_GNU],
+ [AC_REQUIRE([AC_PROG_EGREP])dnl
+ AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
++[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+ case `$LD -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+@@ -2287,15 +2139,6 @@
+ *) reload_flag=" $reload_flag" ;;
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+-case $host_os in
+- darwin*)
+- if test "$GCC" = yes; then
+- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+- else
+- reload_cmds='$LD$reload_flag -o $output$reload_objs'
+- fi
+- ;;
+-esac
+ ])# AC_PROG_LD_RELOAD_FLAG
+
+
+@@ -2329,7 +2172,7 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-bsdi[[45]]*)
++bsdi4*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+@@ -2352,13 +2195,13 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-freebsd* | dragonfly*)
++freebsd* | kfreebsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+@@ -2374,7 +2217,7 @@
+
+ hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+@@ -2390,11 +2233,6 @@
+ esac
+ ;;
+
+-interix3*)
+- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+@@ -2406,11 +2244,20 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
++ case $host_cpu in
++ alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*)
++ lt_cv_deplibs_check_method=pass_all ;;
++ *)
++ # glibc up to 2.1.1 does not perform some relocations on ARM
++ # this will be overridden with pass_all, but let us keep it just in case
++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;;
++ esac
++ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-netbsd* | netbsdelf*-gnu)
++netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+@@ -2429,10 +2276,12 @@
+ ;;
+
+ openbsd*)
++ lt_cv_file_magic_cmd=/usr/bin/file
++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
+ else
+- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
++ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+ fi
+ ;;
+
+@@ -2440,11 +2289,15 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++sco3.2v5*)
++ lt_cv_deplibs_check_method=pass_all
++ ;;
++
+ solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+@@ -2465,13 +2318,10 @@
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+- pc)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+ esac
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
++sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+@@ -2491,43 +2341,36 @@
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+ else
+- lt_nm_to_check="${ac_tool_prefix}nm"
+- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+- lt_nm_to_check="$lt_nm_to_check nm"
+- fi
+- for lt_tmp_nm in $lt_nm_to_check; do
+- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+- IFS="$lt_save_ifs"
+- test -z "$ac_dir" && ac_dir=.
+- tmp_nm="$ac_dir/$lt_tmp_nm"
+- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+- # Check to see if the nm accepts a BSD-compat flag.
+- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+- # nm: unknown option "B" ignored
+- # Tru64's nm complains that /dev/null is an invalid object file
+- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+- */dev/null* | *'Invalid file or object type'*)
+- lt_cv_path_NM="$tmp_nm -B"
++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
++ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
++ IFS="$lt_save_ifs"
++ test -z "$ac_dir" && ac_dir=.
++ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
++ # Check to see if the nm accepts a BSD-compat flag.
++ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
++ # nm: unknown option "B" ignored
++ # Tru64's nm complains that /dev/null is an invalid object file
++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
++ */dev/null* | *'Invalid file or object type'*)
++ lt_cv_path_NM="$tmp_nm -B"
++ break
++ ;;
++ *)
++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
++ */dev/null*)
++ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+- */dev/null*)
+- lt_cv_path_NM="$tmp_nm -p"
+- break
+- ;;
+- *)
+- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+- continue # so that we can try to find one that supports BSD flags
+- ;;
+- esac
++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
++ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+- fi
+- done
+- IFS="$lt_save_ifs"
++ esac
++ fi
+ done
++ IFS="$lt_save_ifs"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+ fi])
+ NM="$lt_cv_path_NM"
+@@ -2559,13 +2402,13 @@
+ # -----------------------------------
+ # sets LIBLTDL to the link flags for the libltdl convenience library and
+ # LTDLINCL to the include flags for the libltdl header and adds
+-# --enable-ltdl-convenience to the configure arguments. Note that
+-# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+-# it is assumed to be `libltdl'. LIBLTDL will be prefixed with
+-# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
+-# (note the single quotes!). If your package is not flat and you're not
+-# using automake, define top_builddir and top_srcdir appropriately in
+-# the Makefiles.
++# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL
++# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
++# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will
++# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
++# '${top_srcdir}/' (note the single quotes!). If your package is not
++# flat and you're not using automake, define top_builddir and
++# top_srcdir appropriately in the Makefiles.
+ AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ case $enable_ltdl_convenience in
+@@ -2584,13 +2427,13 @@
+ # -----------------------------------
+ # sets LIBLTDL to the link flags for the libltdl installable library and
+ # LTDLINCL to the include flags for the libltdl header and adds
+-# --enable-ltdl-install to the configure arguments. Note that
+-# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+-# and an installed libltdl is not found, it is assumed to be `libltdl'.
+-# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
+-# '${top_srcdir}/' (note the single quotes!). If your package is not
+-# flat and you're not using automake, define top_builddir and top_srcdir
+-# appropriately in the Makefiles.
++# --enable-ltdl-install to the configure arguments. Note that LIBLTDL
++# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
++# DIRECTORY is not provided and an installed libltdl is not found, it is
++# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/'
++# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
++# quotes!). If your package is not flat and you're not using automake,
++# define top_builddir and top_srcdir appropriately in the Makefiles.
+ # In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+ AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+@@ -2628,21 +2471,10 @@
+ # ---------------
+ AC_DEFUN([_LT_AC_LANG_CXX],
+ [AC_REQUIRE([AC_PROG_CXX])
+-AC_REQUIRE([_LT_AC_PROG_CXXCPP])
++AC_REQUIRE([AC_PROG_CXXCPP])
+ _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+ ])# _LT_AC_LANG_CXX
+
+-# _LT_AC_PROG_CXXCPP
+-# ------------------
+-AC_DEFUN([_LT_AC_PROG_CXXCPP],
+-[
+-AC_REQUIRE([AC_PROG_CXX])
+-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+- (test "X$CXX" != "Xg++"))) ; then
+- AC_PROG_CXXCPP
+-fi
+-])# _LT_AC_PROG_CXXCPP
+
+ # AC_LIBTOOL_F77
+ # --------------
+@@ -2682,7 +2514,7 @@
+
+
+ # AC_LIBTOOL_RC
+-# -------------
++# --------------
+ # enable support for Windows resource files
+ AC_DEFUN([AC_LIBTOOL_RC],
+ [AC_REQUIRE([LT_AC_PROG_RC])
+@@ -2715,9 +2547,36 @@
+
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
++#
++# Check for any special shared library compilation flags.
++#
++_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
++if test "$GCC" = no; then
++ case $host_os in
++ sco3.2v5*)
++ _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
++ ;;
++ esac
++fi
++if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
++ AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
++ if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then :
++ else
++ AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
++ _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
++ fi
++fi
++
++
++#
++# Check to make sure the static flag actually works.
++#
++AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
++ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
++ $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
++ [],
++ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
++
+
+ AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+ AC_LIBTOOL_PROG_COMPILER_PIC($1)
+@@ -2727,9 +2586,9 @@
+ AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+ AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+ AC_LIBTOOL_SYS_LIB_STRIP
+-AC_LIBTOOL_DLOPEN_SELF
++AC_LIBTOOL_DLOPEN_SELF($1)
+
+-# Report which library types will actually be built
++# Report which librarie types wil actually be built
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+@@ -2738,7 +2597,7 @@
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+-case $host_os in
++case "$host_os" in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+@@ -2751,6 +2610,43 @@
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
++ ;;
++ darwin* | rhapsody*)
++ if test "$GCC" = yes; then
++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ case "$host_os" in
++ rhapsody* | darwin1.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ output_verbose_link_cmd='echo'
++ _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(hardcode_direct, $1)=no
++ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
++ else
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+@@ -2776,7 +2672,7 @@
+ AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+ [AC_LANG_PUSH(C++)
+ AC_REQUIRE([AC_PROG_CXX])
+-AC_REQUIRE([_LT_AC_PROG_CXXCPP])
++AC_REQUIRE([AC_PROG_CXXCPP])
+
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+@@ -2788,7 +2684,6 @@
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+-_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+ _LT_AC_TAGVAR(module_cmds, $1)=
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+@@ -2806,7 +2701,7 @@
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+ # Source file extension for C++ test sources.
+-ac_ext=cpp
++ac_ext=cc
+
+ # Object file extension for compiled C++ test sources.
+ objext=o
+@@ -2816,15 +2711,11 @@
+ lt_simple_compile_test_code="int some_variable = 0;\n"
+
+ # Code to be used in simple link tests
+-lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
++lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_LD=$LD
+@@ -2835,18 +2726,18 @@
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+- $as_unset lt_cv_prog_gnu_ld
++ unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+- $as_unset lt_cv_path_LD
++ unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ compiler=$CC
+ _LT_AC_TAGVAR(compiler, $1)=$CC
+-_LT_CC_BASENAME([$compiler])
++cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+ # We don't want -fno-exception wen compiling C++ code, so set the
+ # no_builtin_flag separately
+@@ -2935,7 +2826,6 @@
+ ;;
+ esac
+ done
+- ;;
+ esac
+
+ exp_sym_flag='-bexport'
+@@ -2954,7 +2844,7 @@
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes; then
+- case $host_os in aix4.[[012]]|aix4.[[012]].*)
++ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+@@ -2973,12 +2863,8 @@
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+- ;;
+ esac
+ shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+@@ -3005,12 +2891,12 @@
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+@@ -3019,26 +2905,16 @@
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+-
+- beos*)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- else
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+-
+ chorus*)
+ case $cc_basename in
+ *)
+@@ -3057,7 +2933,7 @@
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -3066,81 +2942,70 @@
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+- darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[[012]])
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[[012]])
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
+- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_AC_TAGVAR(hardcode_direct, $1)=no
+- _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+- if test "$GXX" = yes ; then
+- lt_int_apple_cc_single_mod=no
+- output_verbose_link_cmd='echo'
+- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+- lt_int_apple_cc_single_mod=yes
+- fi
+- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- else
+- _LT_AC_TAGVAR(archive_cmds, $1)='$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'
+- fi
+- _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 lds
+- 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}'
+- 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}'
+- 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}'
++ darwin* | rhapsody*)
++ if test "$GXX" = yes; then
++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ case "$host_os" in
++ rhapsody* | darwin1.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+ else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- _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 lds
+- _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(ld_shlibs, $1)=no
+- ;;
+- esac
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
++ ;;
++ esac
+ fi
+- ;;
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -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'
++ fi
++ _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $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}'
++ else
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ 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(hardcode_direct, $1)=no
++ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
++ else
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ fi
++ ;;
+
+ dgux*)
+ case $cc_basename in
+- ec++*)
++ ec++)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- ghcx*)
++ ghcx)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+@@ -3151,14 +3016,14 @@
+ ;;
+ esac
+ ;;
+- freebsd[[12]]*)
++ freebsd[12]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ freebsd-elf*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+@@ -3175,11 +3040,11 @@
+ # location of the library.
+
+ case $cc_basename in
+- CC*)
++ CC)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- aCC*)
++ aCC)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+@@ -3189,7 +3054,7 @@
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+@@ -3203,22 +3068,33 @@
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
++ ;;
++ ia64*)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ ;;
+ *)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ _LT_AC_TAGVAR(hardcode_direct, $1)=no
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
++ ;;
++ ia64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
++ # but as the default
++ # location of the library.
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+@@ -3229,17 +3105,14 @@
+ esac
+
+ case $cc_basename in
+- CC*)
++ CC)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- aCC*)
+- case $host_cpu in
+- hppa*64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ aCC)
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+@@ -3258,12 +3131,9 @@
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+- case $host_cpu in
+- hppa*64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ case "$host_cpu" in
++ ia64*|hppa*64*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+@@ -3277,25 +3147,11 @@
+ ;;
+ esac
+ ;;
+- interix3*)
+- _LT_AC_TAGVAR(hardcode_direct, $1)=no
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+ irix5* | irix6*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # SGI C++
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+@@ -3306,7 +3162,7 @@
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+@@ -3317,9 +3173,9 @@
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+- linux* | k*bsd*-gnu)
++ linux*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -3344,41 +3200,17 @@
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+- icpc*)
++ icpc)
+ # Intel C++
+ with_gnu_ld=yes
+- # version 8.0 and above of icpc choke on multiply defined symbols
+- # if we add $predep_objects and $postdep_objects, however 7.1 and
+- # earlier do not add the objects themselves.
+- case `$CC -V 2>&1` in
+- *"Version 7."*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- *) # Version 8.0 or newer
+- tmp_idyn=
+- case $host_cpu in
+- ia64*) tmp_idyn=' -i_dynamic';;
+- esac
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+- pgCC*)
+- # Portland Group C++ compiler
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+-
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- ;;
+- cxx*)
++ cxx)
+ # Compaq C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+@@ -3409,7 +3241,7 @@
+ ;;
+ mvs*)
+ case $cc_basename in
+- cxx*)
++ cxx)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+@@ -3419,7 +3251,7 @@
+ ;;
+ esac
+ ;;
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+@@ -3430,25 +3262,9 @@
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+- openbsd2*)
+- # C++ shared libraries are fairly broken
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- ;;
+- openbsd*)
+- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- fi
+- output_verbose_link_cmd='echo'
+- ;;
+ osf3*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -3464,14 +3280,14 @@
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- cxx*)
++ cxx)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -3489,7 +3305,7 @@
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -3508,7 +3324,7 @@
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -3523,17 +3339,17 @@
+ # the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- cxx*)
++ cxx)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
++ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
+ $rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+@@ -3552,7 +3368,7 @@
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -3573,14 +3389,27 @@
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
++ sco*)
++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ case $cc_basename in
++ CC)
++ # FIXME: insert proper C++ library support
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ ;;
++ *)
++ # FIXME: insert proper C++ library support
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ ;;
++ esac
++ ;;
+ sunos4*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+- lcc*)
++ lcc)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+@@ -3593,33 +3422,36 @@
+ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+- _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
++ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
++ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+- # linker. We must also pass each convience library through
+- # to the system linker between allextract/defaultextract.
+- # The C++ compiler will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl.
++ # linker.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+- output_verbose_link_cmd='echo'
++ # Commands to make compiler produce verbose output that lists
++ # what "hidden" libraries, object files and flags are used when
++ # linking a shared library.
++ #
++ # There doesn't appear to be a way to prevent this compiler from
++ # explicitly linking system object files so we need to strip them
++ # from the output so that they don't get included in the library
++ # dependencies.
++ output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+@@ -3627,7 +3459,7 @@
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+- gcx*)
++ gcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+@@ -3665,63 +3497,12 @@
+ ;;
+ esac
+ ;;
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- ;;
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- # For security reasons, it is highly recommended that you always
+- # use absolute paths for naming shared libraries, and exclude the
+- # DT_RUNPATH tag from executables and libraries. But doing so
+- # requires that you compile everything twice, which is a pain.
+- # So that behaviour is only enabled if SCOABSPATH is set to a
+- # non-empty value in the environment. Most likely only useful for
+- # creating official distributions of packages.
+- # This is a hack until libtool officially supports absolute path
+- # names for shared libraries.
+- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+ ;;
+ tandem*)
+ case $cc_basename in
+- NCC*)
++ NCC)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+@@ -3754,6 +3535,8 @@
+ AC_LIBTOOL_PROG_LD_SHLIBS($1)
+ AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+ AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
++AC_LIBTOOL_SYS_LIB_STRIP
++AC_LIBTOOL_DLOPEN_SELF($1)
+
+ AC_LIBTOOL_CONFIG($1)
+
+@@ -3771,7 +3554,7 @@
+ ])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+ # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+-# ------------------------------------
++# ------------------------
+ # Figure out "hidden" library dependencies from verbose
+ # compiler output when linking a shared library.
+ # Parse the compiler output and extract the necessary
+@@ -3825,7 +3608,7 @@
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+- output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
++ output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+@@ -3901,37 +3684,13 @@
+
+ $rm -f confest.$objext
+
+-# PORTME: override above test on systems where it is broken
+-ifelse([$1],[CXX],
+-[case $host_os in
+-interix3*)
+- # Interix 3.5 installs completely hosed .la files for C++, so rather than
+- # hack all around it, let's just trust "g++" to DTRT.
+- _LT_AC_TAGVAR(predep_objects,$1)=
+- _LT_AC_TAGVAR(postdep_objects,$1)=
+- _LT_AC_TAGVAR(postdeps,$1)=
+- ;;
+-
+-solaris*)
+- case $cc_basename in
+- CC*)
+- # Adding this requires a known-good setup of shared libraries for
+- # Sun compiler versions before 5.6, else PIC objects from an old
+- # archive will be linked into the output, leading to subtle bugs.
+- _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+- ;;
+- esac
+- ;;
+-esac
+-])
+-
+ case " $_LT_AC_TAGVAR(postdeps, $1) " in
+ *" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+ esac
+ ])# AC_LIBTOOL_POSTDEP_PREDEP
+
+ # AC_LIBTOOL_LANG_F77_CONFIG
+-# --------------------------
++# ------------------------
+ # Ensure that the configuration vars for the C compiler are
+ # suitably defined. Those variables are subsequently used by
+ # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+@@ -3975,16 +3734,12 @@
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ CC=${F77-"f77"}
+ compiler=$CC
+ _LT_AC_TAGVAR(compiler, $1)=$CC
+-_LT_CC_BASENAME([$compiler])
++cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+@@ -3994,7 +3749,7 @@
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+-case $host_os in
++case "$host_os" in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+@@ -4003,9 +3758,7 @@
+ fi
+ ;;
+ aix4* | aix5*)
+- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+- test "$enable_shared" = yes && enable_static=no
+- fi
++ test "$enable_shared" = yes && enable_static=no
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+@@ -4015,6 +3768,8 @@
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
++test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
++
+ _LT_AC_TAGVAR(GCC, $1)="$G77"
+ _LT_AC_TAGVAR(LD, $1)="$LD"
+
+@@ -4024,6 +3779,8 @@
+ AC_LIBTOOL_PROG_LD_SHLIBS($1)
+ AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+ AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
++AC_LIBTOOL_SYS_LIB_STRIP
++
+
+ AC_LIBTOOL_CONFIG($1)
+
+@@ -4052,27 +3809,20 @@
+ lt_simple_compile_test_code="class foo {}\n"
+
+ # Code to be used in simple link tests
+-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
++lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ CC=${GCJ-"gcj"}
+ compiler=$CC
+ _LT_AC_TAGVAR(compiler, $1)=$CC
+-_LT_CC_BASENAME([$compiler])
+
+ # GCJ did not exist at the time GCC didn't implicitly link libc in.
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+-_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+-
+ AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+ AC_LIBTOOL_PROG_COMPILER_PIC($1)
+ AC_LIBTOOL_PROG_CC_C_O($1)
+@@ -4080,6 +3830,8 @@
+ AC_LIBTOOL_PROG_LD_SHLIBS($1)
+ AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+ AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
++AC_LIBTOOL_SYS_LIB_STRIP
++AC_LIBTOOL_DLOPEN_SELF($1)
+
+ AC_LIBTOOL_CONFIG($1)
+
+@@ -4089,7 +3841,7 @@
+
+
+ # AC_LIBTOOL_LANG_RC_CONFIG
+-# -------------------------
++# --------------------------
+ # Ensure that the configuration vars for the Windows resource compiler are
+ # suitably defined. Those variables are subsequently used by
+ # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+@@ -4113,16 +3865,11 @@
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_AC_SYS_COMPILER
+
+-# save warnings/boilerplate of simple test code
+-_LT_COMPILER_BOILERPLATE
+-_LT_LINKER_BOILERPLATE
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ CC=${RC-"windres"}
+ compiler=$CC
+ _LT_AC_TAGVAR(compiler, $1)=$CC
+-_LT_CC_BASENAME([$compiler])
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+ AC_LIBTOOL_CONFIG($1)
+@@ -4152,7 +3899,7 @@
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+@@ -4258,7 +4005,7 @@
+ #
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -4269,11 +4016,11 @@
+ SED=$lt_SED
+
+ # Sed that helps us avoid accidentally triggering echo(1) options like -n.
+-Xsed="$SED -e 1s/^X//"
++Xsed="$SED -e s/^X//"
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+ # The names of the tagged configurations supported by this script.
+ available_tags=
+@@ -4304,12 +4051,6 @@
+ # The host system.
+ host_alias=$host_alias
+ host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+
+ # An echo program that does not interpret backslashes.
+ echo=$lt_echo
+@@ -4321,9 +4062,6 @@
+ # A C compiler.
+ LTCC=$lt_LTCC
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+ # A language-specific compiler.
+ CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+@@ -4389,7 +4127,7 @@
+ # Does compiler simultaneously support -c and -o options?
+ compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+-# Must we lock files when doing compilation?
++# Must we lock files when doing compilation ?
+ need_locks=$lt_need_locks
+
+ # Do we need the lib prefix for modules?
+@@ -4663,6 +4401,9 @@
+ # Regexp to match symbols that can be accessed directly from C.
+ sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
++# Transform the above into a raw symbol and a C symbol.
++symxfrm='\1 \2\3 \3'
++
+ # Transform an extracted symbol line into a proper C declaration
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+@@ -4684,31 +4425,15 @@
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+-linux* | k*bsd*-gnu)
+- if test "$host_cpu" = ia64; then
+- symcode='[[ABCDGIRSTW]]'
+- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+- fi
+- ;;
+ irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+ osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+-solaris*)
++solaris* | sysv5*)
+ symcode='[[BDRT]]'
+ ;;
+-sco3.2v5*)
+- symcode='[[DT]]'
+- ;;
+-sysv4.2uw2*)
+- symcode='[[DT]]'
+- ;;
+-sysv5* | sco5v6* | unixware* | OpenUNIX*)
+- symcode='[[ABDT]]'
+- ;;
+ sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+@@ -4731,11 +4456,8 @@
+ # Try without a prefix undercore, then with it.
+ for ac_symprfx in "" "_"; do
+
+- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+- symxfrm="\\1 $ac_symprfx\\2 \\2"
+-
+ # Write the raw and C identifiers.
+- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -4891,10 +4613,6 @@
+ # DJGPP does not support shared libraries at all
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+@@ -4903,7 +4621,7 @@
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ ;;
+ *)
+@@ -4928,28 +4646,18 @@
+ ;;
+ chorus*)
+ case $cc_basename in
+- cxch68*)
++ cxch68)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- ;;
+- esac
+- ;;
+ dgux*)
+ case $cc_basename in
+- ec++*)
++ ec++)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+- ghcx*)
++ ghcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+@@ -4957,22 +4665,22 @@
+ ;;
+ esac
+ ;;
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+- CC*)
++ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+- aCC*)
++ aCC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+- case $host_cpu in
++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -4985,13 +4693,9 @@
+ ;;
+ esac
+ ;;
+- interix*)
+- # This is c89, which is MS Visual C++ (no shared libs)
+- # Anyone wants to do a port?
+- ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+- CC*)
++ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+@@ -5000,26 +4704,20 @@
+ ;;
+ esac
+ ;;
+- linux* | k*bsd*-gnu)
++ linux*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # KAI C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+- icpc* | ecpc*)
++ icpc)
+ # Intel C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+- pgCC*)
+- # Portland Group C++ compiler.
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+- cxx*)
++ cxx)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+@@ -5036,25 +4734,25 @@
+ ;;
+ mvs*)
+ case $cc_basename in
+- cxx*)
++ cxx)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+- cxx*)
++ cxx)
+ # Digital/Compaq C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+@@ -5068,15 +4766,24 @@
+ ;;
+ psos*)
+ ;;
++ sco*)
++ case $cc_basename in
++ CC)
++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
++ ;;
++ *)
++ ;;
++ esac
++ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+- gcx*)
++ gcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+@@ -5086,12 +4793,12 @@
+ ;;
+ sunos4*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.x
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+- lcc*)
++ lcc)
+ # Lucid
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+@@ -5101,7 +4808,7 @@
+ ;;
+ tandem*)
+ case $cc_basename in
+- NCC*)
++ NCC)
+ # NonStop-UX NCC 3.20
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+@@ -5109,14 +4816,7 @@
+ ;;
+ esac
+ ;;
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- case $cc_basename in
+- CC*)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+- esac
++ unixware*)
+ ;;
+ vxworks*)
+ ;;
+@@ -5163,11 +4863,6 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+-
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+@@ -5184,7 +4879,7 @@
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -5210,16 +4905,6 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- ;;
+- esac
+- ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+@@ -5231,7 +4916,7 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -5254,20 +4939,13 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+- linux* | k*bsd*-gnu)
+- case $cc_basename in
++ linux*)
++ case $CC in
+ icc* | ecc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+- pgcc* | pgf77* | pgf90* | pgf95*)
+- # Portland Group compilers (*not* the Pentium gcc compiler,
+- # which looks to be a dead project)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+ ccc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+@@ -5282,15 +4960,15 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
++ sco3.2v5*)
++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
++ ;;
++
+ solaris*)
++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- case $cc_basename in
+- f77* | f90* | f95*)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+- *)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+- esac
+ ;;
+
+ sunos4*)
+@@ -5299,7 +4977,7 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+- sysv4 | sysv4.2uw2* | sysv4.3*)
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+@@ -5312,17 +4990,6 @@
+ fi
+ ;;
+
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+- ;;
+-
+- unicos*)
+- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+- ;;
+-
+ uts4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+@@ -5350,7 +5017,7 @@
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+ fi
+-case $host_os in
++case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+@@ -5359,16 +5026,6 @@
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+ ;;
+ esac
+-
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
+-AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+- _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+- $lt_tmp_static_flag,
+- [],
+- [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+ ])
+
+
+@@ -5393,10 +5050,7 @@
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
+- linux* | k*bsd*-gnu)
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=no
++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+@@ -5439,8 +5093,7 @@
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+- # Just being paranoid about ensuring that cc_basename is set.
+- _LT_CC_BASENAME([$compiler])
++
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+@@ -5450,10 +5103,6 @@
+ with_gnu_ld=no
+ fi
+ ;;
+- interix*)
+- # we just hope/assume this is gcc and not c89 (= MSVC++)
+- with_gnu_ld=yes
+- ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+@@ -5464,27 +5113,6 @@
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+- # Set some defaults for GNU ld with shared library support. These
+- # are reset later if shared libraries are not supported. Putting them
+- # here allows them to be overridden if necessary.
+- runpath_var=LD_RUN_PATH
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+- fi
+- supports_anon_versioning=no
+- case `$LD -v 2>/dev/null` in
+- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+- *\ 2.11.*) ;; # other 2.11 versions
+- *) supports_anon_versioning=yes ;;
+- esac
+-
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+@@ -5535,10 +5163,10 @@
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -5547,60 +5175,13 @@
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+-
+- interix3*)
+- _LT_AC_TAGVAR(hardcode_direct, $1)=no
+- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+-
+- linux* | k*bsd*-gnu)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- tmp_addflag=
+- case $cc_basename,$host_cpu in
+- pgcc*) # Portland Group C compiler
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag'
+- ;;
+- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag -Mnomain' ;;
+- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+- tmp_addflag=' -i_dynamic' ;;
+- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+- tmp_addflag=' -i_dynamic -nofor_main' ;;
+- ifc* | ifort*) # Intel Fortran compiler
+- tmp_addflag=' -nofor_main' ;;
+- esac
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+-
+- if test $supports_anon_versioning = yes; then
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- $echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+- fi
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=no
+- else
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ ld_shlibs=no
+ fi
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+@@ -5610,7 +5191,7 @@
+ fi
+ ;;
+
+- solaris*)
++ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+@@ -5631,33 +5212,6 @@
+ fi
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+- case `$LD -v 2>&1` in
+- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- cat <<_LT_EOF 1>&2
+-
+-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+-*** reliably create shared libraries on SCO systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
+-
+-_LT_EOF
+- ;;
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+- else
+- _LT_AC_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
+- esac
+- ;;
+-
+ sunos4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+@@ -5665,6 +5219,31 @@
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
++ linux*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds"
++ supports_anon_versioning=no
++ case `$LD -v 2>/dev/null` in
++ *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
++ *\ 2.11.*) ;; # other 2.11 versions
++ *) supports_anon_versioning=yes ;;
++ esac
++ if test $supports_anon_versioning = yes; then
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds"
++ fi
++ else
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
++ fi
++ ;;
++
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+@@ -5675,11 +5254,16 @@
+ ;;
+ esac
+
+- if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+- runpath_var=
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
++ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then
++ runpath_var=LD_RUN_PATH
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
++ # ancient GNU ld didn't support --whole-archive et. al.
++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
++ else
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
++ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+@@ -5691,7 +5275,7 @@
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
++ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+@@ -5725,7 +5309,6 @@
+ break
+ fi
+ done
+- ;;
+ esac
+
+ exp_sym_flag='-bexport'
+@@ -5744,7 +5327,7 @@
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GCC" = yes; then
+- case $host_os in aix4.[[012]]|aix4.[[012]].*)
++ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+@@ -5763,12 +5346,8 @@
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+- ;;
+ esac
+ shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+@@ -5776,11 +5355,11 @@
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+- if test "$aix_use_runtimelinking" = yes; then
++ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+- fi
++ fi
+ fi
+ fi
+
+@@ -5794,12 +5373,12 @@
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+@@ -5808,11 +5387,13 @@
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+@@ -5825,7 +5406,7 @@
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+- bsdi[[45]]*)
++ bsdi4*)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+@@ -5846,57 +5427,57 @@
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+- _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
++ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[[012]])
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[[012]])
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
++ if test "$GXX" = yes ; then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ case "$host_os" in
++ rhapsody* | darwin1.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[[012]])
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -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'
++ fi
++ _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $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}'
++ else
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ 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(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+- if test "$GCC" = yes ; then
+- output_verbose_link_cmd='echo'
+- _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 lds
+- _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}'
+ else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- _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 lds
+- _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(ld_shlibs, $1)=no
+- ;;
+- esac
++ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+@@ -5930,7 +5511,7 @@
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+@@ -5953,62 +5534,47 @@
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+- hpux10*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- if test "$with_gnu_ld" = no; then
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+-
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+- fi
+- ;;
+-
+- hpux11*)
++ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- case $host_cpu in
+- hppa*64*)
++ case "$host_cpu" in
++ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+- ia64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+- case $host_cpu in
+- hppa*64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+- *)
++ ia64*)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
++ _LT_AC_TAGVAR(hardcode_direct, $1)=no
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
++
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
++ ;;
++ *)
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+@@ -6032,7 +5598,7 @@
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+@@ -6056,7 +5622,6 @@
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+@@ -6102,7 +5667,7 @@
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+@@ -6110,15 +5675,21 @@
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
++ sco3.2v5*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ;;
++
+ solaris*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ if test "$GCC" = yes; then
+- wlarc='${wl}'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+- wlarc=''
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+@@ -6127,18 +5698,8 @@
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+- *)
+- # The compiler driver will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl, iff we do not link with $LD.
+- # Luckily, gcc supports the same syntax we need for Sun Studio.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- case $wlarc in
+- '')
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+- *)
+- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+- esac ;;
++ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+@@ -6195,45 +5756,36 @@
+ fi
+ ;;
+
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ sysv4.2uw2*)
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- runpath_var='LD_RUN_PATH'
++ hardcode_runpath_var=yes
++ runpath_var=LD_RUN_PATH
++ ;;
+
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
++ runpath_var='LD_RUN_PATH'
++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
++ sysv5*)
++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
++ # $CC -shared without GNU ld will not create a library from C++
++ # object files and a static libstdc++, better avoid it by now
++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+-
+- if test "$GCC" = yes; then
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- fi
+ ;;
+
+ uts4*)
+@@ -6251,6 +5803,11 @@
+ AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+ test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
++
+ #
+ # Do we need to explicitly link libc?
+ #
+@@ -6278,7 +5835,6 @@
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+- pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+@@ -6404,7 +5960,7 @@
+ # Add /usr/xpg4/bin/sed as it is typically found on Solaris
+ # along with /bin/sed that truncates output.
+ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+- test ! -f $lt_ac_sed && continue
++ test ! -f $lt_ac_sed && break
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+@@ -6429,16 +5985,28 @@
+ fi
+ done
+ done
+-])
+ SED=$lt_cv_path_SED
++])
+ AC_MSG_RESULT([$SED])
+ ])
+
+-# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# -*- Autoconf -*-
++# Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++# Generated from amversion.in; do not edit by hand.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+
+ # AM_AUTOMAKE_VERSION(VERSION)
+ # ----------------------------
+@@ -6451,15 +6019,26 @@
+ # Call AM_AUTOMAKE_VERSION so it can be traced.
+ # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+ AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+- [AM_AUTOMAKE_VERSION([1.9.6])])
++ [AM_AUTOMAKE_VERSION([1.9.2])])
+
+-# AM_AUX_DIR_EXPAND -*- Autoconf -*-
++# AM_AUX_DIR_EXPAND
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2003 Free Software Foundation, 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, 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.
+
+ # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+ # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+@@ -6506,16 +6085,26 @@
+ am_aux_dir=`cd $ac_aux_dir && pwd`
+ ])
+
+-# AM_CONDITIONAL -*- Autoconf -*-
++# AM_CONDITIONAL -*- Autoconf -*-
+
+-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+
+-# serial 7
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 6
+
+ # AM_CONDITIONAL(NAME, SHELL-CONDITION)
+ # -------------------------------------
+@@ -6539,15 +6128,26 @@
+ Usually this means the macro was only invoked conditionally.]])
+ fi])])
+
++# serial 7 -*- Autoconf -*-
+
+-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+ # Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+
+-# serial 8
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
+
+ # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+ # written in clear, in which case automake, when reading aclocal.m4,
+@@ -6556,6 +6156,7 @@
+ # CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
++
+ # _AM_DEPENDENCIES(NAME)
+ # ----------------------
+ # See how the compiler implements dependency checking.
+@@ -6695,16 +6296,27 @@
+ AC_SUBST([AMDEPBACKSLASH])
+ ])
+
+-# Generate code to set up dependency tracking. -*- Autoconf -*-
++# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
++# Free Software Foundation, 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, 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.
+
+-#serial 3
++# 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 2
+
+ # _AM_OUTPUT_DEPENDENCY_COMMANDS
+ # ------------------------------
+@@ -6763,19 +6375,30 @@
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+ ])
+
+-# Do all the work for Automake. -*- Autoconf -*-
++# Do all the work for Automake. -*- Autoconf -*-
++
++# This macro actually does too much some checks are only needed if
++# your package does certain things. But this isn't really a big deal.
+
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ # Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+
+-# serial 12
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
+
+-# This macro actually does too much. Some checks are only needed if
+-# your package does certain things. But this isn't really a big deal.
++# 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 11
+
+ # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+ # AM_INIT_AUTOMAKE([OPTIONS])
+@@ -6877,27 +6500,51 @@
+ done
+ echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+ # AM_PROG_INSTALL_SH
+ # ------------------
+ # Define $install_sh.
++
++# Copyright (C) 2001, 2003 Free Software Foundation, 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, 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.
++
+ AC_DEFUN([AM_PROG_INSTALL_SH],
+ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+ install_sh=${install_sh-"$am_aux_dir/install-sh"}
+ AC_SUBST(install_sh)])
+
+-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# -*- Autoconf -*-
++# Copyright (C) 2003 Free Software Foundation, Inc.
+
+-# serial 2
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 1
+
+ # Check whether the underlying file-system supports filenames
+ # with a leading dot. For instance MS-DOS doesn't.
+@@ -6912,15 +6559,26 @@
+ rmdir .tst 2>/dev/null
+ AC_SUBST([am__leading_dot])])
+
+-# Check to see how 'make' treats includes. -*- Autoconf -*-
++# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+-# serial 3
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 2
+
+ # AM_MAKE_INCLUDE()
+ # -----------------
+@@ -6964,16 +6622,27 @@
+ rm -f confinc confmf
+ ])
+
+-# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
++# -*- Autoconf -*-
+
+-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+
+-# serial 4
++# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, 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, 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 3
+
+ # AM_MISSING_PROG(NAME, PROGRAM)
+ # ------------------------------
+@@ -6999,16 +6668,27 @@
+ fi
+ ])
+
+-# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+ # AM_PROG_MKDIR_P
+ # ---------------
+ # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+-#
++
++# Copyright (C) 2003, 2004 Free Software Foundation, 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, 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.
++
+ # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+ # created by `make install' are always world readable, even if the
+ # installer happens to have an overly restrictive umask (e.g. 077).
+@@ -7062,15 +6742,26 @@
+ fi
+ AC_SUBST([mkdir_p])])
+
+-# Helper functions for option handling. -*- Autoconf -*-
++# Helper functions for option handling. -*- Autoconf -*-
+
+-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+-# serial 3
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 2
+
+ # _AM_MANGLE_OPTION(NAME)
+ # -----------------------
+@@ -7095,11 +6786,22 @@
+ AC_DEFUN([_AM_IF_OPTION],
+ [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2003 Free Software Foundation, Inc. -*- Autoconf -*-
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
+
+ # AM_RUN_LOG(COMMAND)
+ # -------------------
+@@ -7112,16 +6814,28 @@
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
+-# Check to make sure that the build environment is sane. -*- Autoconf -*-
+-
+-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+-# Free Software Foundation, Inc.
+ #
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Check to make sure that the build environment is sane.
++#
++
++# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, 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, 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 4
++# serial 3
+
+ # AM_SANITY_CHECK
+ # ---------------
+@@ -7164,14 +6878,25 @@
+ fi
+ AC_MSG_RESULT(yes)])
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+ # AM_PROG_INSTALL_STRIP
+-# ---------------------
++
++# Copyright (C) 2001, 2003 Free Software Foundation, 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, 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.
++
+ # One issue with vendor `install' (even GNU) is that you can't
+ # specify the program used to strip binaries. This is especially
+ # annoying in cross-compiling environments, where the build's strip
+@@ -7194,13 +6919,25 @@
+
+ # Check how to create a tarball. -*- Autoconf -*-
+
+-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2004 Free Software Foundation, 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, 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 1
+
+-# serial 2
+
+ # _AM_PROG_TAR(FORMAT)
+ # --------------------
+diff -ur linphone-1.5.0/oRTP/build/Makefile.in linphone-1.5.0-after/oRTP/build/Makefile.in
+--- linphone-1.5.0/oRTP/build/Makefile.in 2006-10-10 18:26:14.000000000 +0800
++++ linphone-1.5.0-after/oRTP/build/Makefile.in 2007-01-19 16:05:19.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -92,7 +92,6 @@
+ EXEEXT = @EXEEXT@
+ F77 = @F77@
+ FFLAGS = @FFLAGS@
+-GREP = @GREP@
+ GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+ GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+ HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
+@@ -142,9 +141,12 @@
+ VERSION = @VERSION@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -161,30 +163,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -244,13 +239,7 @@
+ # (which will cause the Makefiles to be regenerated when you run `make');
+ # (2) otherwise, pass the desired values on the `make' command line.
+ $(RECURSIVE_TARGETS):
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -262,7 +251,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+@@ -270,13 +259,7 @@
+
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+@@ -297,7 +280,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+ tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+diff -ur linphone-1.5.0/oRTP/build/win32native/Makefile.in linphone-1.5.0-after/oRTP/build/win32native/Makefile.in
+--- linphone-1.5.0/oRTP/build/win32native/Makefile.in 2006-10-09 17:10:39.000000000 +0800
++++ linphone-1.5.0-after/oRTP/build/win32native/Makefile.in 2007-01-19 16:05:19.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -83,7 +83,6 @@
+ EXEEXT = @EXEEXT@
+ F77 = @F77@
+ FFLAGS = @FFLAGS@
+-GREP = @GREP@
+ GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+ GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+ HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
+@@ -133,9 +132,12 @@
+ VERSION = @VERSION@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -152,30 +154,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+diff -ur linphone-1.5.0/oRTP/build/wince/Makefile.in linphone-1.5.0-after/oRTP/build/wince/Makefile.in
+--- linphone-1.5.0/oRTP/build/wince/Makefile.in 2006-10-09 17:10:39.000000000 +0800
++++ linphone-1.5.0-after/oRTP/build/wince/Makefile.in 2007-01-19 16:05:19.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -83,7 +83,6 @@
+ EXEEXT = @EXEEXT@
+ F77 = @F77@
+ FFLAGS = @FFLAGS@
+-GREP = @GREP@
+ GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+ GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+ HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
+@@ -133,9 +132,12 @@
+ VERSION = @VERSION@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -152,30 +154,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+diff -ur linphone-1.5.0/oRTP/config.guess linphone-1.5.0-after/oRTP/config.guess
+--- linphone-1.5.0/oRTP/config.guess 2006-08-10 23:17:12.000000000 +0800
++++ linphone-1.5.0-after/oRTP/config.guess 2007-01-19 16:05:21.000000000 +0800
+@@ -1,10 +1,9 @@
+ #! /bin/sh
+ # Attempt to guess a canonical system name.
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+-# Inc.
++# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+-timestamp='2006-07-02'
++timestamp='2003-06-17'
+
+ # This file is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU General Public License as published by
+@@ -18,15 +17,13 @@
+ #
+ # 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., 51 Franklin Street - Fifth Floor, Boston, MA
+-# 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+ # configuration script generated by Autoconf, you may include it under
+ # the same distribution terms that you use for the rest of that program.
+
+-
+ # Originally written by Per Bothner <per@bothner.com>.
+ # Please send patches to <config-patches@gnu.org>. Submit a context
+ # diff and a properly formatted ChangeLog entry.
+@@ -56,7 +53,7 @@
+ GNU config.guess ($timestamp)
+
+ Originally written by Per Bothner.
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+ Free Software Foundation, Inc.
+
+ This is free software; see the source for copying conditions. There is NO
+@@ -69,11 +66,11 @@
+ while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+- echo "$timestamp" ; exit ;;
++ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+- echo "$version" ; exit ;;
++ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+- echo "$usage"; exit ;;
++ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+@@ -107,7 +104,7 @@
+ trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+ trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+ : ${TMPDIR=/tmp} ;
+- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
++ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+@@ -126,7 +123,7 @@
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+-esac ; set_cc_for_build= ;'
++esac ;'
+
+ # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+ # (ghazi@noc.rutgers.edu 1994-08-24)
+@@ -139,6 +136,13 @@
+ UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
++## for Red Hat Linux
++if test -f /etc/redhat-release ; then
++ VENDOR=redhat ;
++else
++ VENDOR= ;
++fi
++
+ # Note: order is significant - the case branches are not exclusive.
+
+ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+@@ -199,32 +203,50 @@
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+- exit ;;
++ exit 0 ;;
++ amiga:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ arc:OpenBSD:*:*)
++ echo mipsel-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ hp300:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mac68k:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ macppc:OpenBSD:*:*)
++ echo powerpc-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mvme68k:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mvme88k:OpenBSD:*:*)
++ echo m88k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mvmeppc:OpenBSD:*:*)
++ echo powerpc-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ pmax:OpenBSD:*:*)
++ echo mipsel-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ sgi:OpenBSD:*:*)
++ echo mipseb-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ sun3:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ wgrisc:OpenBSD:*:*)
++ echo mipsel-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
+ *:OpenBSD:*:*)
+- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+- exit ;;
+- *:ekkoBSD:*:*)
+- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+- exit ;;
+- *:SolidBSD:*:*)
+- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+- exit ;;
+- macppc:MirBSD:*:*)
+- echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+- exit ;;
+- *:MirBSD:*:*)
+- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+- exit ;;
++ echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
+ alpha:OSF1:*:*)
+- case $UNAME_RELEASE in
+- *4.0)
++ if test $UNAME_RELEASE = "V4.0"; then
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+- ;;
+- *5.*)
+- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+- ;;
+- esac
++ fi
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+@@ -262,49 +284,42 @@
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+- # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+- exit ;;
++ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
++ exit 0 ;;
++ Alpha*:OpenVMS:*:*)
++ echo alpha-hp-vms
++ exit 0 ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+- exit ;;
++ exit 0 ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+- exit ;;
++ exit 0 ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+- exit ;;
++ exit 0;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+- exit ;;
++ exit 0 ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+- exit ;;
++ exit 0 ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+- exit ;;
+- *:z/VM:*:*)
+- echo s390-ibm-zvmoe
+- exit ;;
+- *:OS400:*:*)
+- echo powerpc-ibm-os400
+- exit ;;
++ exit 0 ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+- exit ;;
+- arm:riscos:*:*|arm:RISCOS:*:*)
+- echo arm-unknown-riscos
+- exit ;;
++ exit 0;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+- exit ;;
++ exit 0;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+@@ -312,32 +327,32 @@
+ else
+ echo pyramid-pyramid-bsd
+ fi
+- exit ;;
++ exit 0 ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+- exit ;;
++ exit 0 ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+- exit ;;
+- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
++ exit 0 ;;
++ DRS?6000:UNIX_SV:4.2*:7*)
+ case `/usr/bin/uname -p` in
+- sparc) echo sparc-icl-nx7; exit ;;
++ sparc) echo sparc-icl-nx7 && exit 0 ;;
+ esac ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ i86pc:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+@@ -346,10 +361,10 @@
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+- exit ;;
++ exit 0 ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+@@ -361,10 +376,10 @@
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+- exit ;;
++ exit 0 ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+@@ -375,40 +390,37 @@
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+- exit ;;
+- m68k:machten:*:*)
+- echo m68k-apple-machten${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+- exit ;;
++ exit 0 ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+@@ -432,33 +444,32 @@
+ exit (-1);
+ }
+ EOF
+- $CC_FOR_BUILD -o $dummy $dummy.c &&
+- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+- SYSTEM_NAME=`$dummy $dummyarg` &&
+- { echo "$SYSTEM_NAME"; exit; }
++ $CC_FOR_BUILD -o $dummy $dummy.c \
++ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
++ && exit 0
+ echo mips-mips-riscos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+- exit ;;
++ exit 0 ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+- exit ;;
++ exit 0 ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+- exit ;;
++ exit 0 ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+- exit ;;
++ exit 0 ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+- exit ;;
++ exit 0 ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+- exit ;;
++ exit 0 ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+- exit ;;
++ exit 0 ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+@@ -474,29 +485,29 @@
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+- exit ;;
++ exit 0 ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+- exit ;;
++ exit 0 ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+- exit ;;
++ exit 0 ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+- exit ;;
++ exit 0 ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+- exit ;;
++ exit 0 ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+- exit ;;
++ exit 0 ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
++ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
++ exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+- exit ;;
++ exit 0 ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+@@ -504,7 +515,7 @@
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+- exit ;;
++ exit 0 ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+@@ -519,18 +530,14 @@
+ exit(0);
+ }
+ EOF
+- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+- then
+- echo "$SYSTEM_NAME"
+- else
+- echo rs6000-ibm-aix3.2.5
+- fi
++ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
++ echo rs6000-ibm-aix3.2.5
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+- exit ;;
++ exit 0 ;;
+ *:AIX:*:[45])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+@@ -544,28 +551,28 @@
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+- exit ;;
++ exit 0 ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+- exit ;;
++ exit 0 ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+- exit ;;
++ exit 0 ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+- exit ;; # report: romp-ibm BSD 4.3
++ exit 0 ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+- exit ;;
++ exit 0 ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+- exit ;;
++ exit 0 ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+- exit ;;
++ exit 0 ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+- exit ;;
++ exit 0 ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+@@ -627,19 +634,9 @@
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+- eval $set_cc_for_build
+-
+- # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+- # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+- # generating 64-bit code. GNU and HP use different nomenclature:
+- #
+- # $ CC_FOR_BUILD=cc ./config.guess
+- # => hppa2.0w-hp-hpux11.23
+- # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+- # => hppa64-hp-hpux11.23
+-
+- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+- grep __LP64__ >/dev/null
++ # avoid double evaluation of $set_cc_for_build
++ test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
++ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+@@ -647,11 +644,11 @@
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+- exit ;;
++ exit 0 ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+- exit ;;
++ exit 0 ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+@@ -679,179 +676,150 @@
+ exit (0);
+ }
+ EOF
+- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+- { echo "$SYSTEM_NAME"; exit; }
++ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ echo unknown-hitachi-hiuxwe2
+- exit ;;
++ exit 0 ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+- exit ;;
++ exit 0 ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+- exit ;;
++ exit 0 ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+- exit ;;
++ exit 0 ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+- exit ;;
++ exit 0 ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+- exit ;;
++ exit 0 ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+- exit ;;
++ exit 0 ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+- exit ;;
++ exit 0 ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+- exit ;;
++ exit 0 ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+- exit ;;
++ exit 0 ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+- exit ;;
++ exit 0 ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+- exit ;;
++ exit 0 ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+- exit ;;
++ exit 0 ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ exit 0 ;;
+ *:UNICOS/mp:*:*)
+- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit ;;
++ echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++ exit 0 ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+- exit ;;
+- 5000:UNIX_System_V:4.*:*)
+- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+- exit ;;
++ exit 0 ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+- exit ;;
+- *:FreeBSD:*:*)
+- case ${UNAME_MACHINE} in
+- pc98)
+- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+- amd64)
+- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+- *)
+- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+- esac
+- exit ;;
++ exit 0 ;;
++ *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
++ # Determine whether the default compiler uses glibc.
++ eval $set_cc_for_build
++ sed 's/^ //' << EOF >$dummy.c
++ #include <features.h>
++ #if __GLIBC__ >= 2
++ LIBC=gnu
++ #else
++ LIBC=
++ #endif
++EOF
++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
++ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
++ exit 0 ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+- exit ;;
++ exit 0 ;;
+ i*:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+- exit ;;
+- i*:windows32*:*)
+- # uname -m includes "-pc" on this system.
+- echo ${UNAME_MACHINE}-mingw32
+- exit ;;
++ exit 0 ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+- exit ;;
+- x86:Interix*:[3456]*)
+- echo i586-pc-interix${UNAME_RELEASE}
+- exit ;;
+- EM64T:Interix*:[3456]*)
+- echo x86_64-unknown-interix${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
++ x86:Interix*:[34]*)
++ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
++ exit 0 ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+- exit ;;
++ exit 0 ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+- exit ;;
++ exit 0 ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+- exit ;;
+- amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+- echo x86_64-unknown-cygwin
+- exit ;;
++ exit 0 ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+- exit ;;
++ exit 0 ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+- exit ;;
++ exit 0 ;;
+ *:GNU:*:*)
+- # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+- exit ;;
+- *:GNU/*:*:*)
+- # other systems with GNU libc and userland
+- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+- exit ;;
++ exit 0 ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+- exit ;;
++ exit 0 ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
+- avr32*:Linux:*:*)
+- echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+- exit ;;
+- crisv32:Linux:*:*)
+- echo crisv32-axis-linux-gnu
+- exit ;;
+- frv:Linux:*:*)
+- echo frv-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ ia64:Linux:*:*)
+- echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
+- m32r*:Linux:*:*)
+- echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu
++ exit 0 ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+@@ -868,12 +836,8 @@
+ #endif
+ #endif
+ EOF
+- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+- /^CPU/{
+- s: ::g
+- p
+- }'`"
+- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
++ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+@@ -891,22 +855,15 @@
+ #endif
+ #endif
+ EOF
+- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+- /^CPU/{
+- s: ::g
+- p
+- }'`"
+- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
++ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ ;;
+- or32:Linux:*:*)
+- echo or32-unknown-linux-gnu
+- exit ;;
+ ppc:Linux:*:*)
+- echo powerpc-unknown-linux-gnu
+- exit ;;
++ echo powerpc-${VENDOR:-unknown}-linux-gnu
++ exit 0 ;;
+ ppc64:Linux:*:*)
+- echo powerpc64-unknown-linux-gnu
+- exit ;;
++ echo powerpc64-${VENDOR:-unknown}-linux-gnu
++ exit 0 ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+@@ -920,7 +877,7 @@
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+- exit ;;
++ exit 0 ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+@@ -928,28 +885,25 @@
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+- exit ;;
++ exit 0 ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+- echo ${UNAME_MACHINE}-ibm-linux
+- exit ;;
++ echo ${UNAME_MACHINE}-${VENDOR:-ibm}-linux-gnu
++ exit 0 ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
++ exit 0 ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit ;;
+- vax:Linux:*:*)
+- echo ${UNAME_MACHINE}-dec-linux-gnu
+- exit ;;
++ exit 0 ;;
+ x86_64:Linux:*:*)
+- echo x86_64-unknown-linux-gnu
+- exit ;;
++ echo x86_64-${VENDOR:-unknown}-linux-gnu
++ exit 0 ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+@@ -967,15 +921,15 @@
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+- exit ;;
++ exit 0 ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+- exit ;;
++ exit 0 ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+- exit ;;
++ exit 0 ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+@@ -992,33 +946,23 @@
+ LIBC=gnulibc1
+ # endif
+ #else
+- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
++ #ifdef __INTEL_COMPILER
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+ #endif
+ #endif
+- #ifdef __dietlibc__
+- LIBC=dietlibc
+- #endif
+ EOF
+- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+- /^LIBC/{
+- s: ::g
+- p
+- }'`"
+- test x"${LIBC}" != x && {
+- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+- exit
+- }
+- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
++ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR:-pc}-linux-${LIBC}" && exit 0
++ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+- exit ;;
++ exit 0 ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+@@ -1026,27 +970,24 @@
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+- exit ;;
++ exit 0 ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+- exit ;;
++ exit 0 ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+- exit ;;
++ exit 0 ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+- exit ;;
+- i*86:syllable:*:*)
+- echo ${UNAME_MACHINE}-pc-syllable
+- exit ;;
++ exit 0 ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+- exit ;;
++ exit 0 ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+@@ -1054,16 +995,15 @@
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+- exit ;;
+- i*86:*:5:[678]*)
+- # UnixWare 7.x, OpenUNIX and OpenServer 6.
++ exit 0 ;;
++ i*86:*:5:[78]*)
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+- exit ;;
++ exit 0 ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+@@ -1081,73 +1021,73 @@
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+- exit ;;
++ exit 0 ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i386.
+ echo i386-pc-msdosdjgpp
+- exit ;;
++ exit 0 ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+- exit ;;
++ exit 0 ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+- exit ;;
++ exit 0 ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+- exit ;;
++ exit 0 ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+- exit ;;
++ exit 0 ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+- exit ;;
++ exit 0 ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+- exit ;;
+- M68*:*:R3V[5678]*:*)
+- test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
++ exit 0 ;;
++ M68*:*:R3V[567]*:*)
++ test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
++ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
++ && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
++ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+- && { echo i486-ncr-sysv4; exit; } ;;
++ && echo i486-ncr-sysv4 && exit 0 ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+- exit ;;
++ exit 0 ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+- exit ;;
++ exit 0 ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+- exit ;;
++ exit 0 ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+@@ -1155,72 +1095,68 @@
+ else
+ echo ns32k-sni-sysv
+ fi
+- exit ;;
++ exit 0 ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+- exit ;;
++ exit 0 ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+- exit ;;
++ exit 0 ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+- exit ;;
+- i*86:VOS:*:*)
+- # From Paul.Green@stratus.com.
+- echo ${UNAME_MACHINE}-stratus-vos
+- exit ;;
++ exit 0 ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+- exit ;;
++ exit 0 ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+- exit ;;
++ exit 0 ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+- exit ;;
++ exit 0 ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+- exit ;;
++ exit 0 ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+- exit ;;
++ exit 0 ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+- exit ;;
++ exit 0 ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:Darwin:*:*)
+- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+- case $UNAME_PROCESSOR in
+- unknown) UNAME_PROCESSOR=powerpc ;;
++ case `uname -p` in
++ *86) UNAME_PROCESSOR=i686 ;;
++ powerpc) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+@@ -1228,25 +1164,22 @@
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+- exit ;;
+- NSE-?:NONSTOP_KERNEL:*:*)
+- echo nse-tandem-nsk${UNAME_RELEASE}
+- exit ;;
+- NSR-?:NONSTOP_KERNEL:*:*)
++ exit 0 ;;
++ NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+- exit ;;
++ exit 0 ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+- exit ;;
++ exit 0 ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+- exit ;;
++ exit 0 ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+@@ -1257,47 +1190,28 @@
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+- exit ;;
++ exit 0 ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+- exit ;;
++ exit 0 ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+- exit ;;
++ exit 0 ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+- exit ;;
++ exit 0 ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+- exit ;;
++ exit 0 ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+- exit ;;
++ exit 0 ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+- exit ;;
++ exit 0 ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+- exit ;;
+- *:DragonFly:*:*)
+- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+- exit ;;
+- *:*VMS:*:*)
+- UNAME_MACHINE=`(uname -p) 2>/dev/null`
+- case "${UNAME_MACHINE}" in
+- A*) echo alpha-dec-vms ; exit ;;
+- I*) echo ia64-dec-vms ; exit ;;
+- V*) echo vax-dec-vms ; exit ;;
+- esac ;;
+- *:XENIX:*:SysV)
+- echo i386-pc-xenix
+- exit ;;
+- i*86:skyos:*:*)
+- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+- exit ;;
+- i*86:rdos:*:*)
+- echo ${UNAME_MACHINE}-pc-rdos
+- exit ;;
++ exit 0 ;;
+ esac
+
+ #echo '(No uname command or uname output not recognized.)' 1>&2
+@@ -1329,7 +1243,7 @@
+ #endif
+
+ #if defined (__arm) && defined (__acorn) && defined (__unix)
+- printf ("arm-acorn-riscix\n"); exit (0);
++ printf ("arm-acorn-riscix"); exit (0);
+ #endif
+
+ #if defined (hp300) && !defined (hpux)
+@@ -1418,12 +1332,11 @@
+ }
+ EOF
+
+-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+- { echo "$SYSTEM_NAME"; exit; }
++$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+
+ # Apollos put the system type in the environment.
+
+-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
++test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+ # Convex versions that predate uname can use getsysinfo(1)
+
+@@ -1432,22 +1345,22 @@
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+- exit ;;
++ exit 0 ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+- exit ;;
++ exit 0 ;;
+ c34*)
+ echo c34-convex-bsd
+- exit ;;
++ exit 0 ;;
+ c38*)
+ echo c38-convex-bsd
+- exit ;;
++ exit 0 ;;
+ c4*)
+ echo c4-convex-bsd
+- exit ;;
++ exit 0 ;;
+ esac
+ fi
+
+@@ -1458,9 +1371,7 @@
+ the operating system you are using. It is advised that you
+ download the most up to date version of the config scripts from
+
+- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+-and
+- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
++ ftp://ftp.gnu.org/pub/gnu/config/
+
+ If the version you run ($0) is already up to date, please
+ send the following data and any information you think might be
+diff -ur linphone-1.5.0/oRTP/config.sub linphone-1.5.0-after/oRTP/config.sub
+--- linphone-1.5.0/oRTP/config.sub 2006-08-10 23:17:12.000000000 +0800
++++ linphone-1.5.0-after/oRTP/config.sub 2007-01-19 16:05:21.000000000 +0800
+@@ -1,10 +1,9 @@
+ #! /bin/sh
+ # Configuration validation subroutine script.
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+-# Inc.
++# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+-timestamp='2006-07-02'
++timestamp='2003-06-18'
+
+ # This file is (in principle) common to ALL GNU software.
+ # The presence of a machine in this file suggests that SOME GNU software
+@@ -22,15 +21,14 @@
+ #
+ # 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., 51 Franklin Street - Fifth Floor, Boston, MA
+-# 02110-1301, USA.
+-#
++# Foundation, Inc., 59 Temple Place - Suite 330,
++# Boston, MA 02111-1307, USA.
++
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+ # configuration script generated by Autoconf, you may include it under
+ # the same distribution terms that you use for the rest of that program.
+
+-
+ # Please send patches to <config-patches@gnu.org>. Submit a context
+ # diff and a properly formatted ChangeLog entry.
+ #
+@@ -72,7 +70,7 @@
+ version="\
+ GNU config.sub ($timestamp)
+
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+ Free Software Foundation, Inc.
+
+ This is free software; see the source for copying conditions. There is NO
+@@ -85,11 +83,11 @@
+ while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+- echo "$timestamp" ; exit ;;
++ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+- echo "$version" ; exit ;;
++ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+- echo "$usage"; exit ;;
++ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+@@ -101,7 +99,7 @@
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+- exit ;;
++ exit 0;;
+
+ * )
+ break ;;
+@@ -120,9 +118,7 @@
+ # Here we must recognize all the valid KERNEL-OS combinations.
+ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+ case $maybe_os in
+- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+- storm-chaos* | os2-emx* | rtmk-nova*)
++ nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+@@ -148,7 +144,7 @@
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+- -apple | -axis | -knuth | -cray)
++ -apple | -axis)
+ os=
+ basic_machine=$1
+ ;;
+@@ -173,10 +169,6 @@
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+- -sco6)
+- os=-sco5v6
+- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+- ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+@@ -193,10 +185,6 @@
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+- -sco5v6*)
+- # Don't forget version if it is 3.2v4 or newer.
+- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+- ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+@@ -240,17 +228,14 @@
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+- | am33_2.0 \
+- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+- | bfin \
++ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+- | ip2k | iq2000 \
+- | m32c | m32r | m32rle | m68000 | m68k | m88k \
+- | maxq | mb | microblaze | mcore \
++ | ip2k \
++ | m32r | m68000 | m68k | m88k | mcore \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+@@ -259,32 +244,28 @@
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+- | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+- | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+- | mt \
+ | msp430 \
+- | nios | nios2 \
+ | ns16k | ns32k \
+- | or32 \
++ | openrisc | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
++ | s390 | s390x \
++ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+- | spu | strongarm \
++ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
++ | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+- | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
++ | x86 | xscale | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+@@ -295,9 +276,6 @@
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+- ms1)
+- basic_machine=mt-unknown
+- ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+@@ -317,20 +295,20 @@
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+- | avr-* | avr32-* \
+- | bfin-* | bs2000-* \
++ | avr-* \
++ | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+- | clipper-* | craynv-* | cydra-* \
++ | clipper-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+- | ip2k-* | iq2000-* \
+- | m32c-* | m32r-* | m32rle-* \
++ | ip2k-* \
++ | m32r-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+- | m88110-* | m88k-* | maxq-* | mcore-* \
++ | m88110-* | m88k-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+@@ -339,36 +317,31 @@
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+- | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+- | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+- | mmix-* \
+- | mt-* \
+ | msp430-* \
+- | nios-* | nios2-* \
+- | none-* | np1-* | ns16k-* | ns32k-* \
++ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
++ | s390-* | s390x-* \
++ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+- | sparclite-* \
+- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
++ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
++ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+- | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+- | xstormy16-* | xtensa-* \
++ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
++ | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+@@ -388,9 +361,6 @@
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+- abacus)
+- basic_machine=abacus-unknown
+- ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+@@ -408,9 +378,6 @@
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+- amd64-*)
+- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+- ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+@@ -470,27 +437,12 @@
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+- craynv)
+- basic_machine=craynv-cray
+- os=-unicosmp
+- ;;
+- cr16c)
+- basic_machine=cr16c-unknown
+- os=-elf
+- ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+- crisv32 | crisv32-* | etraxfs*)
+- basic_machine=crisv32-axis
+- ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+- crx)
+- basic_machine=crx-unknown
+- os=-elf
+- ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+@@ -513,10 +465,6 @@
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+- djgpp)
+- basic_machine=i586-pc
+- os=-msdosdjgpp
+- ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+@@ -695,6 +643,10 @@
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
++ mmix*)
++ basic_machine=mmix-knuth
++ os=-mmixware
++ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+@@ -707,9 +659,6 @@
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+- ms1-*)
+- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+- ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+@@ -778,6 +727,10 @@
+ np1)
+ basic_machine=np1-gould
+ ;;
++ nv1)
++ basic_machine=nv1-cray
++ os=-unicosmp
++ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+@@ -785,12 +738,9 @@
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+- openrisc | openrisc-*)
++ or32 | or32-*)
+ basic_machine=or32-unknown
+- ;;
+- os400)
+- basic_machine=powerpc-ibm
+- os=-os400
++ os=-coff
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+@@ -817,12 +767,6 @@
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+- pc98)
+- basic_machine=i386-pc
+- ;;
+- pc98-*)
+- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+- ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+@@ -879,10 +823,6 @@
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+- rdos)
+- basic_machine=i386-pc
+- os=-rdos
+- ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+@@ -893,12 +833,6 @@
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+- s390 | s390-*)
+- basic_machine=s390-ibm
+- ;;
+- s390x | s390x-*)
+- basic_machine=s390x-ibm
+- ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+@@ -1022,10 +956,6 @@
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+- tpf)
+- basic_machine=s390x-ibm
+- os=-tpf
+- ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+@@ -1069,10 +999,6 @@
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+- xbox)
+- basic_machine=i686-pc
+- os=-mingw32
+- ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+@@ -1103,9 +1029,6 @@
+ romp)
+ basic_machine=romp-ibm
+ ;;
+- mmix)
+- basic_machine=mmix-knuth
+- ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+@@ -1122,10 +1045,13 @@
+ we32k)
+ basic_machine=we32k-att
+ ;;
+- sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
++ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
++ sh64)
++ basic_machine=sh64-unknown
++ ;;
++ sparc | sparcv9 | sparcv9b)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+@@ -1198,23 +1124,19 @@
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+- | -openbsd* | -solidbsd* \
+- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
++ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
++ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+- | -uxpv* | -beos* | -mpeix* | -udk* \
++ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+- | -skyos* | -haiku* | -rdos* | -toppers*)
++ | -powermax* | -dnix* | -nx6 | -nx7 | -sei*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+@@ -1232,15 +1154,12 @@
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
++ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+- -linux-dietlibc)
+- os=-linux-dietlibc
+- ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+@@ -1253,9 +1172,6 @@
+ -opened*)
+ os=-openedition
+ ;;
+- -os400*)
+- os=-os400
+- ;;
+ -wince*)
+ os=-wince
+ ;;
+@@ -1277,9 +1193,6 @@
+ -atheos*)
+ os=-atheos
+ ;;
+- -syllable*)
+- os=-syllable
+- ;;
+ -386bsd)
+ os=-bsd
+ ;;
+@@ -1302,9 +1215,6 @@
+ -sinix*)
+ os=-sysv4
+ ;;
+- -tpf*)
+- os=-tpf
+- ;;
+ -triton*)
+ os=-sysv3
+ ;;
+@@ -1341,9 +1251,6 @@
+ -kaos*)
+ os=-kaos
+ ;;
+- -zvmoe)
+- os=-zvmoe
+- ;;
+ -none)
+ ;;
+ *)
+@@ -1366,9 +1273,6 @@
+ # system, and we'll never get to this point.
+
+ case $basic_machine in
+- spu-*)
+- os=-elf
+- ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+@@ -1378,8 +1282,8 @@
+ arm*-semi)
+ os=-aout
+ ;;
+- c4x-* | tic4x-*)
+- os=-coff
++ c4x-* | tic4x-*)
++ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+@@ -1424,15 +1328,9 @@
+ *-be)
+ os=-beos
+ ;;
+- *-haiku)
+- os=-haiku
+- ;;
+ *-ibm)
+ os=-aix
+ ;;
+- *-knuth)
+- os=-mmixware
+- ;;
+ *-wec)
+ os=-proelf
+ ;;
+@@ -1565,15 +1463,9 @@
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+- -os400*)
+- vendor=ibm
+- ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+- -tpf*)
+- vendor=ibm
+- ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+@@ -1598,7 +1490,7 @@
+ esac
+
+ echo $basic_machine$os
+-exit
++exit 0
+
+ # Local variables:
+ # eval: (add-hook 'write-file-hooks 'time-stamp)
+diff -ur linphone-1.5.0/oRTP/configure linphone-1.5.0-after/oRTP/configure
+--- linphone-1.5.0/oRTP/configure 2006-10-09 17:10:41.000000000 +0800
++++ linphone-1.5.0-after/oRTP/configure 2007-01-19 16:05:22.000000000 +0800
+@@ -1,9 +1,8 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.60a for ortp 0.11.1.
++# Generated by GNU Autoconf 2.59 for ortp 0.11.1.
+ #
+-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
++# Copyright (C) 2003 Free Software Foundation, Inc.
+ # This configure script is free software; the Free Software Foundation
+ # gives unlimited permission to copy, distribute and modify it.
+ ## --------------------- ##
+@@ -17,35 +16,11 @@
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+- setopt NO_GLOB_SUBST
+-else
+- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
++elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
++ set -o posix
+ fi
+-BIN_SH=xpg4; export BIN_SH # for Tru64
+ DUALCASE=1; export DUALCASE # for MKS sh
+
+-
+-# PATH needs CR
+-# 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
+-
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+@@ -54,43 +29,8 @@
+ fi
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order. Quoting is
+-# there to prevent editors from complaining about space-tab.
+-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+-# splitting by setting IFS to empty value.)
+-as_nl='
+-'
+-IFS=" "" $as_nl"
+-
+-# Find who we are. Look in the path if we contain no directory separator.
+-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
+-IFS=$as_save_IFS
+-
+- ;;
+-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_myself: error: cannot find myself; rerun with an absolute file name" >&2
+- { (exit 1); exit 1; }
+-fi
+-
+ # Work around bugs in pre-3.0 UWIN ksh.
+-for as_var in ENV MAIL MAILPATH
+-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+-done
++$as_unset ENV MAIL MAILPATH
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -104,19 +44,18 @@
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++ $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1 &&
+- test "X`expr 00001 : '.*\(...\)'`" = X001; then
++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
++if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -124,386 +63,157 @@
+
+
+ # Name of the executable.
+-as_me=`$as_basename -- "$0" ||
++as_me=`$as_basename "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
++ X"$0" : 'X\(/\)$' \| \
++ . : '\(.\)' 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{
+- s//\1/
+- q
+- }
+- /^X\/\(\/\/\)$/{
+- s//\1/
+- q
+- }
+- /^X\/\(\/\).*/{
+- s//\1/
+- q
+- }
+- s/.*/./; q'`
+-
+-# CDPATH.
+-$as_unset CDPATH
+-
+-
+-if test "x$CONFIG_SHELL" = x; then
+- if (eval ":") 2>/dev/null; then
+- as_have_required=yes
+-else
+- as_have_required=no
+-fi
+-
+- if test $as_have_required = yes && (eval ":
+-(as_func_return () {
+- (exit \$1)
+-}
+-as_func_success () {
+- as_func_return 0
+-}
+-as_func_failure () {
+- as_func_return 1
+-}
+-as_func_ret_success () {
+- return 0
+-}
+-as_func_ret_failure () {
+- return 1
+-}
+-
+-exitcode=0
+-if as_func_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_success failed.
+-fi
++ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
++ /^X\/\(\/\/\)$/{ s//\1/; q; }
++ /^X\/\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+
+-if as_func_failure; then
+- exitcode=1
+- echo as_func_failure succeeded.
+-fi
+
+-if as_func_ret_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_ret_success failed.
+-fi
++# 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
+
+-if as_func_ret_failure; then
+- exitcode=1
+- echo as_func_ret_failure succeeded.
++# 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
+
+-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+- :
+-else
+- exitcode=1
+- echo positional parameters were not saved.
+-fi
+
+-test \$exitcode = 0) || { (exit 1); exit 1; }
++ 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
+
+-(
+- as_lineno_1=\$LINENO
+- as_lineno_2=\$LINENO
+- test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+- test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+-") 2> /dev/null; then
+- :
+-else
+- as_candidate_shells=
++ ;;
++ 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 /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
++for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+- case $as_dir in
++ for as_base in sh bash ksh sh5; do
++ case $as_dir in
+ /*)
+- for as_base in sh bash ksh sh5; do
+- as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+- done;;
+- esac
+-done
+-IFS=$as_save_IFS
+-
+-
+- for as_shell in $as_candidate_shells $SHELL; do
+- # Try only shells that exist, to save several forks.
+- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+- { ("$as_shell") 2> /dev/null <<\_ASEOF
+-# 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+"$@"}'='"$@"'
+- setopt NO_GLOB_SUBST
+-else
+- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+-fi
+-BIN_SH=xpg4; export BIN_SH # for Tru64
+-DUALCASE=1; export DUALCASE # for MKS sh
+-
+-:
+-_ASEOF
+-}; then
+- CONFIG_SHELL=$as_shell
+- as_have_required=yes
+- if { "$as_shell" 2> /dev/null <<\_ASEOF
+-# 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+"$@"}'='"$@"'
+- setopt NO_GLOB_SUBST
+-else
+- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+-fi
+-BIN_SH=xpg4; export BIN_SH # for Tru64
+-DUALCASE=1; export DUALCASE # for MKS sh
+-
+-:
+-(as_func_return () {
+- (exit $1)
+-}
+-as_func_success () {
+- as_func_return 0
+-}
+-as_func_failure () {
+- as_func_return 1
+-}
+-as_func_ret_success () {
+- return 0
+-}
+-as_func_ret_failure () {
+- return 1
+-}
+-
+-exitcode=0
+-if as_func_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_success failed.
+-fi
+-
+-if as_func_failure; then
+- exitcode=1
+- echo as_func_failure succeeded.
+-fi
+-
+-if as_func_ret_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_ret_success failed.
+-fi
+-
+-if as_func_ret_failure; then
+- exitcode=1
+- echo as_func_ret_failure succeeded.
+-fi
+-
+-if ( set x; as_func_ret_success y && test x = "$1" ); then
+- :
+-else
+- exitcode=1
+- echo positional parameters were not saved.
+-fi
+-
+-test $exitcode = 0) || { (exit 1); exit 1; }
+-
+-(
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+-
+-_ASEOF
+-}; then
+- break
+-fi
+-
+-fi
+-
+- done
+-
+- if test "x$CONFIG_SHELL" != x; then
+- for as_var in BASH_ENV ENV
+- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+- done
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+-fi
+-
+-
+- if test $as_have_required = no; then
+- echo This script requires a shell more modern than all the
+- echo shells that I found on your system. Please install a
+- echo modern shell, or manually run the script under such a
+- echo shell if you do have one.
+- { (exit 1); exit 1; }
+-fi
+-
+-
+-fi
+-
+-fi
+-
+-
+-
+-(eval "as_func_return () {
+- (exit \$1)
+-}
+-as_func_success () {
+- as_func_return 0
+-}
+-as_func_failure () {
+- as_func_return 1
+-}
+-as_func_ret_success () {
+- return 0
+-}
+-as_func_ret_failure () {
+- return 1
+-}
+-
+-exitcode=0
+-if as_func_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_success failed.
+-fi
+-
+-if as_func_failure; then
+- exitcode=1
+- echo as_func_failure succeeded.
+-fi
+-
+-if as_func_ret_success; then
+- :
+-else
+- exitcode=1
+- echo as_func_ret_success failed.
+-fi
+-
+-if as_func_ret_failure; then
+- exitcode=1
+- echo as_func_ret_failure succeeded.
+-fi
+-
+-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+- :
+-else
+- exitcode=1
+- echo positional parameters were not saved.
+-fi
+-
+-test \$exitcode = 0") || {
+- echo No shell found that supports shell functions.
+- echo Please tell autoconf@gnu.org about your system,
+- echo including any error possibly output before this
+- echo message
+-}
+-
+-
+-
++ 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`expr $as_lineno_1 + 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 after each line using $LINENO; the second 'sed'
+- # does the real work. The second script uses 'N' to pair each
+- # line-number line with the line containing $LINENO, and appends
+- # trailing '-' during substitution so that $LINENO is not a special
+- # case at line end.
++ # 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
+- # scripts with optimization help from Paolo Bonzini. Blame Lee
+- # E. McMahon (1931-1989) for sed's syntax. :-)
+- sed -n '
+- p
+- /[$]LINENO/=
+- ' <$as_myself |
++ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
++ sed '=' <$as_myself |
+ sed '
+- s/[$]LINENO.*/&-/
+- t lineno
+- b
+- :lineno
+ N
+- :loop
+- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
++ s,$,-,
++ : loop
++ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+- s/-\n.*//
++ s,-$,,
++ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+- chmod +x "$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 sensitive to this).
+- . "./$as_me.lineno"
++ # original and so on. Autoconf is especially sensible to this).
++ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+- as_dirname=dirname
+-else
+- as_dirname=false
+-fi
+-
+-ECHO_C= ECHO_N= ECHO_T=
+-case `echo -n x` in
+--n*)
+- case `echo 'x\c'` in
+- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+- *) ECHO_C='\c';;
+- esac;;
+-*)
+- ECHO_N='-n';;
++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 &&
+- test "X`expr 00001 : '.*\(...\)'`" = X001; then
++if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
+-if test -d conf$$.dir; then
+- rm -f conf$$.dir/conf$$.file
+-else
+- rm -f conf$$.dir
+- mkdir conf$$.dir
+-fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- as_ln_s='ln -s'
+- # ... but there are two gotchas:
+- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+- # In both cases, we have to default to `cp -p'.
+- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
++ # 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$$.dir/conf$$.file conf$$.file
+-rmdir conf$$.dir 2>/dev/null
++rm -f conf$$ conf$$.exe conf$$.file
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -512,19 +222,7 @@
+ as_mkdir_p=false
+ fi
+
+-# Find out whether ``test -x'' works. Don't use a zero-byte file, as
+-# systems may use methods other than mode bits to determine executability.
+-cat >conf$$.file <<_ASEOF
+-#! /bin/sh
+-exit 0
+-_ASEOF
+-chmod +x conf$$.file
+-if test -x conf$$.file >/dev/null 2>&1; then
+- as_executable_p="test -x"
+-else
+- as_executable_p=:
+-fi
+-rm -f conf$$.file
++as_executable_p="test -f"
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -533,6 +231,15 @@
+ as_tr_sh="eval 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
++
+
+
+ # Check that we are running under the correct shell.
+@@ -571,15 +278,15 @@
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+ if test -z "$ECHO"; then
+ if test "X${echo_test_string+set}" != Xset; then
+ # find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+- if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+- echo_test_string=`eval $cmd` &&
++ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
++ echo_test_string="`eval $cmd`" &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+@@ -688,26 +395,29 @@
+
+ tagnames=${tagnames+${tagnames},}F77
+
+-exec 7<&0 </dev/null 6>&1
+-
+ # 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.
+ #
+ ac_default_prefix=/usr/local
+-ac_clean_files=
+ ac_config_libobj_dir=.
+-LIBOBJS=
+ cross_compiling=no
+ subdirs=
+ MFLAGS=
+ MAKEFLAGS=
+ SHELL=${CONFIG_SHELL-/bin/sh}
+
++# 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='ortp'
+ PACKAGE_TARNAME='ortp'
+@@ -718,192 +428,42 @@
+ # Factoring default headers for most tests.
+ ac_includes_default="\
+ #include <stdio.h>
+-#ifdef HAVE_SYS_TYPES_H
++#if HAVE_SYS_TYPES_H
+ # include <sys/types.h>
+ #endif
+-#ifdef HAVE_SYS_STAT_H
++#if HAVE_SYS_STAT_H
+ # include <sys/stat.h>
+ #endif
+-#ifdef STDC_HEADERS
++#if STDC_HEADERS
+ # include <stdlib.h>
+ # include <stddef.h>
+ #else
+-# ifdef HAVE_STDLIB_H
++# if HAVE_STDLIB_H
+ # include <stdlib.h>
+ # endif
+ #endif
+-#ifdef HAVE_STRING_H
+-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
++#if HAVE_STRING_H
++# if !STDC_HEADERS && HAVE_MEMORY_H
+ # include <memory.h>
+ # endif
+ # include <string.h>
+ #endif
+-#ifdef HAVE_STRINGS_H
++#if HAVE_STRINGS_H
+ # include <strings.h>
+ #endif
+-#ifdef HAVE_INTTYPES_H
++#if HAVE_INTTYPES_H
+ # include <inttypes.h>
++#else
++# if HAVE_STDINT_H
++# include <stdint.h>
++# endif
+ #endif
+-#ifdef HAVE_STDINT_H
+-# include <stdint.h>
+-#endif
+-#ifdef HAVE_UNISTD_H
++#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
+-datarootdir
+-datadir
+-sysconfdir
+-sharedstatedir
+-localstatedir
+-includedir
+-oldincludedir
+-docdir
+-infodir
+-htmldir
+-dvidir
+-pdfdir
+-psdir
+-libdir
+-localedir
+-mandir
+-DEFS
+-ECHO_C
+-ECHO_N
+-ECHO_T
+-LIBS
+-build_alias
+-host_alias
+-target_alias
+-build
+-build_cpu
+-build_vendor
+-build_os
+-host
+-host_cpu
+-host_vendor
+-host_os
+-target
+-target_cpu
+-target_vendor
+-target_os
+-LIBORTP_SO_VERSION
+-ORTP_VERSION
+-ORTP_PKGCONFIG_VERSION
+-INSTALL_PROGRAM
+-INSTALL_SCRIPT
+-INSTALL_DATA
+-CYGPATH_W
+-PACKAGE
+-VERSION
+-ACLOCAL
+-AUTOCONF
+-AUTOMAKE
+-AUTOHEADER
+-MAKEINFO
+-install_sh
+-STRIP
+-INSTALL_STRIP_PROGRAM
+-mkdir_p
+-AWK
+-SET_MAKE
+-am__leading_dot
+-AMTAR
+-am__tar
+-am__untar
+-CC
+-CFLAGS
+-LDFLAGS
+-CPPFLAGS
+-ac_ct_CC
+-EXEEXT
+-OBJEXT
+-DEPDIR
+-am__include
+-am__quote
+-AMDEP_TRUE
+-AMDEP_FALSE
+-AMDEPBACKSLASH
+-CCDEPMODE
+-am__fastdepCC_TRUE
+-am__fastdepCC_FALSE
+-GREP
+-EGREP
+-LN_S
+-ECHO
+-AR
+-RANLIB
+-CPP
+-CXX
+-CXXFLAGS
+-ac_ct_CXX
+-CXXDEPMODE
+-am__fastdepCXX_TRUE
+-am__fastdepCXX_FALSE
+-CXXCPP
+-F77
+-FFLAGS
+-ac_ct_F77
+-LIBTOOL
+-PTHREAD_CFLAGS
+-PTHREAD_LIBS
+-PTHREAD_LDFLAGS
+-HAVE_GTK_DOC_TRUE
+-HAVE_GTK_DOC_FALSE
+-HTML_DIR
+-PKG_CONFIG
+-ENABLE_GTK_DOC_TRUE
+-ENABLE_GTK_DOC_FALSE
+-GTK_DOC_USE_LIBTOOL_TRUE
+-GTK_DOC_USE_LIBTOOL_FALSE
+-EPM
+-MKEPMLIST
+-EPMINSTALL
+-WITH_EPM_TRUE
+-WITH_EPM_FALSE
+-EPM_PKG_EXT
+-SYS_USER
+-SYS_GROUP
+-ARCH
+-SUMMARY
+-PACKAGER
+-LICENSE
+-VENDOR
+-RELEASE
+-ORTPDEPS_CFLAGS
+-ORTPDEPS_LIBS
+-ORTPDEPS_LDFLAGS
+-LIBOBJS
+-LTLIBOBJS'
++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 LIBORTP_SO_VERSION ORTP_VERSION ORTP_PKGCONFIG_VERSION INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_LDFLAGS HAVE_GTK_DOC_TRUE HAVE_GTK_DOC_FALSE HTML_DIR PKG_CONFIG ENABLE_GTK_DOC_TRUE ENABLE_GTK_DOC_FALSE GTK_DOC_USE_LIBTOOL_TRUE GTK_DOC_USE_LIBTOOL_FALSE EPM MKEPMLIST EPMINSTALL WITH_EPM_TRUE WITH_EPM_FALSE EPM_PKG_EXT SYS_USER SYS_GROUP ARCH SUMMARY PACKAGER LICENSE VENDOR RELEASE ORTPDEPS_CFLAGS ORTPDEPS_LIBS ORTPDEPS_LDFLAGS LIBOBJS LTLIBOBJS'
+ ac_subst_files=''
+- ac_precious_vars='build_alias
+-host_alias
+-target_alias
+-CC
+-CFLAGS
+-LDFLAGS
+-CPPFLAGS
+-CPP
+-CXX
+-CXXFLAGS
+-CCC
+-CXXCPP
+-F77
+-FFLAGS'
+-
+
+ # Initialize some variables set by options.
+ ac_init_help=
+@@ -930,48 +490,34 @@
+ # 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.
+-# (The list follows the same order as the GNU Coding Standards.)
+ bindir='${exec_prefix}/bin'
+ sbindir='${exec_prefix}/sbin'
+ libexecdir='${exec_prefix}/libexec'
+-datarootdir='${prefix}/share'
+-datadir='${datarootdir}'
++datadir='${prefix}/share'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
++libdir='${exec_prefix}/lib'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+-infodir='${datarootdir}/info'
+-htmldir='${docdir}'
+-dvidir='${docdir}'
+-pdfdir='${docdir}'
+-psdir='${docdir}'
+-libdir='${exec_prefix}/lib'
+-localedir='${datarootdir}/locale'
+-mandir='${datarootdir}/man'
++infodir='${prefix}/info'
++mandir='${prefix}/man'
+
+ ac_prev=
+-ac_dashdash=
+ for ac_option
+ do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+- eval $ac_prev=\$ac_option
++ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+- case $ac_option in
+- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+- *) ac_optarg=yes ;;
+- esac
++ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+- case $ac_dashdash$ac_option in
+- --)
+- ac_dashdash=yes ;;
++ case $ac_option in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+@@ -993,18 +539,12 @@
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+- -datadir | --datadir | --datadi | --datad)
++ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+- -datadir=* | --datadir=* | --datadi=* | --datad=*)
++ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
++ | --da=*)
+ datadir=$ac_optarg ;;
+
+- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+- | --dataroo | --dataro | --datar)
+- ac_prev=datarootdir ;;
+- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+- datarootdir=$ac_optarg ;;
+-
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+@@ -1012,17 +552,7 @@
+ { 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 ;;
+-
+- -docdir | --docdir | --docdi | --doc | --do)
+- ac_prev=docdir ;;
+- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+- docdir=$ac_optarg ;;
+-
+- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+- ac_prev=dvidir ;;
+- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+- dvidir=$ac_optarg ;;
++ eval "enable_$ac_feature=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+@@ -1031,7 +561,11 @@
+ { 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=\$ac_optarg ;;
++ case $ac_option in
++ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
++ *) ac_optarg=yes ;;
++ esac
++ eval "enable_$ac_feature='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+@@ -1058,12 +592,6 @@
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+- ac_prev=htmldir ;;
+- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+- | --ht=*)
+- htmldir=$ac_optarg ;;
+-
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+@@ -1088,16 +616,13 @@
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+- -localedir | --localedir | --localedi | --localed | --locale)
+- ac_prev=localedir ;;
+- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+- localedir=$ac_optarg ;;
+-
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+- | --localstate | --localstat | --localsta | --localst | --locals)
++ | --localstate | --localstat | --localsta | --localst \
++ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
++ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
++ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+@@ -1162,16 +687,6 @@
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+- -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+- ac_prev=pdfdir ;;
+- -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+- pdfdir=$ac_optarg ;;
+-
+- -psdir | --psdir | --psdi | --psd | --ps)
+- ac_prev=psdir ;;
+- -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+- psdir=$ac_optarg ;;
+-
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+@@ -1228,7 +743,11 @@
+ { 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=\$ac_optarg ;;
++ case $ac_option in
++ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
++ *) ac_optarg=yes ;;
++ esac
++ eval "with_$ac_package='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+@@ -1237,7 +756,7 @@
+ { 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 ;;
++ eval "with_$ac_package=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+@@ -1268,7 +787,8 @@
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+- eval $ac_envvar=\$ac_optarg
++ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
++ eval "$ac_envvar='$ac_optarg'"
+ export $ac_envvar ;;
+
+ *)
+@@ -1288,19 +808,27 @@
+ { (exit 1); exit 1; }; }
+ fi
+
+-# Be sure to have absolute directory names.
+-for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+- datadir sysconfdir sharedstatedir localstatedir includedir \
+- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+- libdir localedir mandir
++# Be sure to have absolute paths.
++for ac_var in exec_prefix prefix
+ do
+- eval ac_val=\$$ac_var
++ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+- [\\/$]* | ?:[\\/]* ) continue;;
+- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
++ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
++ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
++ { (exit 1); exit 1; }; };;
++ esac
++done
++
++# Be sure to have absolute paths.
++for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
++ localstatedir libdir includedir oldincludedir infodir mandir
++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; }; };;
+ esac
+- { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; }
+ done
+
+ # There might be people who depend on the old broken behavior: `$host'
+@@ -1327,76 +855,94 @@
+ test "$silent" = yes && exec 6>/dev/null
+
+
+-ac_pwd=`pwd` && test -n "$ac_pwd" &&
+-ac_ls_di=`ls -di .` &&
+-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+- { echo "$as_me: error: Working directory cannot be determined" >&2
+- { (exit 1); exit 1; }; }
+-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+- { echo "$as_me: error: pwd does not report name of working directory" >&2
+- { (exit 1); exit 1; }; }
+-
+-
+ # 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 the parent directory.
+- ac_confdir=`$as_dirname -- "$0" ||
++ # 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 ||
++ 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'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+ srcdir=$ac_confdir
+- if test ! -r "$srcdir/$ac_unique_file"; then
++ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+ else
+ ac_srcdir_defaulted=no
+ fi
+-if test ! -r "$srcdir/$ac_unique_file"; then
+- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
++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; }; }
++ else
++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
++ { (exit 1); exit 1; }; }
++ fi
+ fi
+-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+-ac_abs_confdir=`(
+- cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
++(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; }; }
+- pwd)`
+-# When building in place, set srcdir=.
+-if test "$ac_abs_confdir" = "$ac_pwd"; then
+- srcdir=.
+-fi
+-# Remove unnecessary trailing slashes from srcdir.
+-# Double slashes in file names in object file debugging info
+-# mess up M-x gdb in Emacs.
+-case $srcdir in
+-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+-esac
+-for ac_var in $ac_precious_vars; do
+- eval ac_env_${ac_var}_set=\${${ac_var}+set}
+- eval ac_env_${ac_var}_value=\$${ac_var}
+- eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+- eval ac_cv_env_${ac_var}_value=\$${ac_var}
+-done
++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
++ac_env_CXX_set=${CXX+set}
++ac_env_CXX_value=$CXX
++ac_cv_env_CXX_set=${CXX+set}
++ac_cv_env_CXX_value=$CXX
++ac_env_CXXFLAGS_set=${CXXFLAGS+set}
++ac_env_CXXFLAGS_value=$CXXFLAGS
++ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
++ac_cv_env_CXXFLAGS_value=$CXXFLAGS
++ac_env_CXXCPP_set=${CXXCPP+set}
++ac_env_CXXCPP_value=$CXXCPP
++ac_cv_env_CXXCPP_set=${CXXCPP+set}
++ac_cv_env_CXXCPP_value=$CXXCPP
++ac_env_F77_set=${F77+set}
++ac_env_F77_value=$F77
++ac_cv_env_F77_set=${F77+set}
++ac_cv_env_F77_value=$F77
++ac_env_FFLAGS_set=${FFLAGS+set}
++ac_env_FFLAGS_value=$FFLAGS
++ac_cv_env_FFLAGS_set=${FFLAGS+set}
++ac_cv_env_FFLAGS_value=$FFLAGS
+
+ #
+ # Report the --help message.
+@@ -1425,8 +971,11 @@
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+-Installation directories:
+- --prefix=PREFIX install architecture-independent files in PREFIX
++_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]
+@@ -1442,22 +991,15 @@
+ --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]
+- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+- --infodir=DIR info documentation [DATAROOTDIR/info]
+- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+- --mandir=DIR man documentation [DATAROOTDIR/man]
+- --docdir=DIR documentation root [DATAROOTDIR/doc/ortp]
+- --htmldir=DIR html documentation [DOCDIR]
+- --dvidir=DIR dvi documentation [DOCDIR]
+- --pdfdir=DIR pdf documentation [DOCDIR]
+- --psdir=DIR ps documentation [DOCDIR]
++ --infodir=DIR info documentation [PREFIX/info]
++ --mandir=DIR man documentation [PREFIX/man]
+ _ACEOF
+
+ cat <<\_ACEOF
+@@ -1489,8 +1031,10 @@
+ --enable-debug=yes/no enables the display of traces showing the execution of the library. default=yes
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+- --enable-shared[=PKGS] build shared libraries [default=yes]
+- --enable-static[=PKGS] build static libraries [default=yes]
++ --enable-shared[=PKGS]
++ build shared libraries [default=yes]
++ --enable-static[=PKGS]
++ build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+@@ -1503,7 +1047,8 @@
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+- --with-tags[=TAGS] include additional configurations [automatic]
++ --with-tags[=TAGS]
++ include additional configurations [automatic]
+ --with-html-dir=PATH path to installed docs
+
+ Some influential environment variables:
+@@ -1511,8 +1056,8 @@
+ 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++/Objective C preprocessor flags, e.g. -I<include dir> if
+- you have headers in a nonstandard directory <include dir>
++ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
++ headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+@@ -1524,86 +1069,120 @@
+ it to find libraries and programs with nonstandard names/locations.
+
+ _ACEOF
+-ac_status=$?
+ 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
++ test -d $ac_dir || continue
+ ac_builddir=.
+
+-case "$ac_dir" in
+-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+-*)
++if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A ".." for each directory in $ac_dir_suffix.
+- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+- case $ac_top_builddir_sub in
+- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+- esac ;;
+-esac
+-ac_abs_top_builddir=$ac_pwd
+-ac_abs_builddir=$ac_pwd$ac_dir_suffix
+-# for backward compatibility:
+-ac_top_builddir=$ac_top_build_prefix
++ # 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
+- .) # We are building in place.
++ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+- ac_top_srcdir=$ac_top_builddir_sub
+- ac_abs_top_srcdir=$ac_pwd ;;
+- [\\/]* | ?:[\\/]* ) # Absolute name.
++ 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
+- ac_abs_top_srcdir=$srcdir ;;
+- *) # Relative name.
+- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_build_prefix$srcdir
+- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++ ac_top_srcdir=$srcdir ;;
++ *) # Relative path.
++ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_builddir$srcdir ;;
++esac
++
++# Do not use `cd foo && pwd` to compute absolute paths, because
++# the directories may not exist.
++case `pwd` in
++.) ac_abs_builddir="$ac_dir";;
++*)
++ case "$ac_dir" in
++ .) ac_abs_builddir=`pwd`;;
++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
++ *) ac_abs_builddir=`pwd`/"$ac_dir";;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_builddir=${ac_top_builddir}.;;
++*)
++ case ${ac_top_builddir}. in
++ .) ac_abs_top_builddir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_srcdir=$ac_srcdir;;
++*)
++ case $ac_srcdir in
++ .) ac_abs_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_srcdir=$ac_top_srcdir;;
++*)
++ case $ac_top_srcdir in
++ .) ac_abs_top_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
++ esac;;
+ esac
+-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+- cd "$ac_dir" || { ac_status=$?; continue; }
+- # Check for guested 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
++ 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 || ac_status=$?
+- cd "$ac_pwd" || { ac_status=$?; break; }
++ fi
++ cd $ac_popdir
+ done
+ fi
+
+-test -n "$ac_init_help" && exit $ac_status
++test -n "$ac_init_help" && exit 0
+ if $ac_init_version; then
+ cat <<\_ACEOF
+ ortp configure 0.11.1
+-generated by GNU Autoconf 2.60a
++generated by GNU Autoconf 2.59
+
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
++Copyright (C) 2003 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
++ exit 0
+ fi
+-cat >config.log <<_ACEOF
++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 ortp $as_me 0.11.1, which was
+-generated by GNU Autoconf 2.60a. Invocation command line was
++generated by GNU Autoconf 2.59. Invocation command line was
+
+ $ $0 $@
+
+ _ACEOF
+-exec 5>>config.log
+ {
+ cat <<_ASUNAME
+ ## --------- ##
+@@ -1622,7 +1201,7 @@
+ /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`
+-/usr/bin/hostinfo = `(/usr/bin/hostinfo) 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`
+@@ -1636,7 +1215,6 @@
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+ done
+-IFS=$as_save_IFS
+
+ } >&5
+
+@@ -1658,6 +1236,7 @@
+ ac_configure_args=
+ ac_configure_args0=
+ ac_configure_args1=
++ac_sep=
+ ac_must_keep_next=false
+ for ac_pass in 1 2
+ do
+@@ -1668,7 +1247,7 @@
+ -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
+@@ -1690,7 +1269,9 @@
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+- ac_configure_args="$ac_configure_args '$ac_arg'"
++ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
++ # Get rid of the leading space.
++ ac_sep=" "
+ ;;
+ esac
+ done
+@@ -1701,8 +1282,8 @@
+ # 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: Use '\'' to represent an apostrophe within the trap.
+-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
++# 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.
+ {
+@@ -1715,34 +1296,20 @@
+ _ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+-(
+- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+- eval ac_val=\$$ac_var
+- case $ac_val in #(
+- *${as_nl}*)
+- case $ac_var in #(
+- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+- esac
+- case $ac_var in #(
+- _ | IFS | as_nl) ;; #(
+- *) $as_unset $ac_var ;;
+- esac ;;
+- esac
+- done
++{
+ (set) 2>&1 |
+- case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+- *${as_nl}ac_space=\ *)
++ 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"
+- ;; #(
++ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
++ ;;
+ *)
+- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
++ sed -n \
++ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+- esac |
+- sort
+-)
++ esac;
++}
+ echo
+
+ cat <<\_ASBOX
+@@ -1753,28 +1320,22 @@
+ echo
+ for ac_var in $ac_subst_vars
+ do
+- eval ac_val=\$$ac_var
+- case $ac_val in
+- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+- esac
+- echo "$ac_var='\''$ac_val'\''"
++ eval ac_val=$`echo $ac_var`
++ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+-## ------------------- ##
+-## File substitutions. ##
+-## ------------------- ##
++## ------------- ##
++## Output files. ##
++## ------------- ##
+ _ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+- eval ac_val=\$$ac_var
+- case $ac_val in
+- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+- esac
+- echo "$ac_var='\''$ac_val'\''"
++ eval ac_val=$`echo $ac_var`
++ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+ fi
+@@ -1786,24 +1347,26 @@
+ ## ----------- ##
+ _ASBOX
+ echo
+- cat confdefs.h
++ 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.conftest.* &&
+- rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
++ rm -f core *.core &&
++ rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+-' 0
++ ' 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 -f -r conftest* confdefs.h
++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.
+
+@@ -1834,17 +1397,14 @@
+
+ # Let the site file select an alternate cache file if it wants to.
+ # Prefer explicitly selected file to automatically selected ones.
+-if test -n "$CONFIG_SITE"; then
+- set x "$CONFIG_SITE"
+-elif test "x$prefix" != xNONE; then
+- set x "$prefix/share/config.site" "$prefix/etc/config.site"
+-else
+- set x "$ac_default_prefix/share/config.site" \
+- "$ac_default_prefix/etc/config.site"
++if test -z "$CONFIG_SITE"; then
++ if test "x$prefix" != xNONE; then
++ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
++ else
++ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
++ fi
+ fi
+-shift
+-for ac_site_file
+-do
++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;}
+@@ -1860,8 +1420,8 @@
+ { 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";;
++ [\\/]* | ?:[\\/]* ) . $cache_file;;
++ *) . ./$cache_file;;
+ esac
+ fi
+ else
+@@ -1873,11 +1433,12 @@
+ # Check that the precious variables saved in the cache have kept the same
+ # value.
+ ac_cache_corrupted=false
+-for ac_var in $ac_precious_vars; do
++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
++ 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
+@@ -1902,7 +1463,8 @@
+ # 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=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+@@ -1919,6 +1481,12 @@
+ { (exit 1); exit 1; }; }
+ 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
++
+
+
+
+@@ -1943,162 +1511,107 @@
+
+
+
+-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
+
+
+ ac_aux_dir=
+-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+- if test -f "$ac_dir/install-sh"; then
++for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
++ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+- elif test -f "$ac_dir/install.sh"; then
++ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+- elif test -f "$ac_dir/shtool"; then
++ 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;}
++ { { 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; }; }
+ fi
+-
+-# These three variables are undocumented and unsupported,
+-# and are intended to be withdrawn in a future Autoconf release.
+-# They can cause serious problems if a builder's source tree is in a directory
+-# whose full name contains unusual characters.
+-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+-
++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.
+
+ # Make sure we can run config.sub.
+-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+- { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+-echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
++$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; }
++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_build_alias=$build_alias
+-test "x$ac_build_alias" = x &&
+- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+-test "x$ac_build_alias" = x &&
++ 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=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
++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; }; }
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+-echo "${ECHO_T}$ac_cv_build" >&6; }
+-case $ac_cv_build in
+-*-*-*) ;;
+-*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+-echo "$as_me: error: invalid value of canonical build" >&2;}
+- { (exit 1); exit 1; }; };;
+-esac
++echo "$as_me:$LINENO: result: $ac_cv_build" >&5
++echo "${ECHO_T}$ac_cv_build" >&6
+ build=$ac_cv_build
+-ac_save_IFS=$IFS; IFS='-'
+-set x $ac_cv_build
+-shift
+-build_cpu=$1
+-build_vendor=$2
+-shift; shift
+-# Remember, the first character of IFS is used to create $*,
+-# except with old shells:
+-build_os=$*
+-IFS=$ac_save_IFS
+-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
++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 "$as_me:$LINENO: checking host system type" >&5
+-echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
++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
+- if test "x$host_alias" = x; then
+- ac_cv_host=$ac_cv_build
+-else
+- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
++ 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; }; }
+-fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+-echo "${ECHO_T}$ac_cv_host" >&6; }
+-case $ac_cv_host in
+-*-*-*) ;;
+-*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+-echo "$as_me: error: invalid value of canonical host" >&2;}
+- { (exit 1); exit 1; }; };;
+-esac
++echo "$as_me:$LINENO: result: $ac_cv_host" >&5
++echo "${ECHO_T}$ac_cv_host" >&6
+ host=$ac_cv_host
+-ac_save_IFS=$IFS; IFS='-'
+-set x $ac_cv_host
+-shift
+-host_cpu=$1
+-host_vendor=$2
+-shift; shift
+-# Remember, the first character of IFS is used to create $*,
+-# except with old shells:
+-host_os=$*
+-IFS=$ac_save_IFS
+-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
++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/'`
+
+
+-{ echo "$as_me:$LINENO: checking target system type" >&5
+-echo $ECHO_N "checking target system type... $ECHO_C" >&6; }
++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
+- if test "x$target_alias" = x; then
+- ac_cv_target=$ac_cv_host
+-else
+- ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5
+-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}
++ 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; }; }
+-fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5
+-echo "${ECHO_T}$ac_cv_target" >&6; }
+-case $ac_cv_target in
+-*-*-*) ;;
+-*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5
+-echo "$as_me: error: invalid value of canonical target" >&2;}
+- { (exit 1); exit 1; }; };;
+-esac
++echo "$as_me:$LINENO: result: $ac_cv_target" >&5
++echo "${ECHO_T}$ac_cv_target" >&6
+ target=$ac_cv_target
+-ac_save_IFS=$IFS; IFS='-'
+-set x $ac_cv_target
+-shift
+-target_cpu=$1
+-target_vendor=$2
+-shift; shift
+-# Remember, the first character of IFS is used to create $*,
+-# except with old shells:
+-target_os=$*
+-IFS=$ac_save_IFS
+-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
++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/'`
+
+
+ # The aliases save the names the user supplied, while $host etc.
+@@ -2144,8 +1657,8 @@
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./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 "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+ if test -z "$INSTALL"; then
+ if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -2167,7 +1680,7 @@
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; }; then
++ 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.
+@@ -2186,22 +1699,21 @@
+ ;;
+ esac
+ done
+-IFS=$as_save_IFS
+
+
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+- # As a last resort, use the slow shell script. Don't cache a
+- # value for INSTALL within a source directory, because that will
++ # 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 value is a relative name.
++ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+ fi
+-{ echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6; }
++echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+@@ -2211,8 +1723,8 @@
+
+ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+-{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether build environment is sane" >&5
++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+ # Just in case
+ sleep 1
+ echo timestamp > conftest.file
+@@ -2254,20 +1766,20 @@
+ Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-{ echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ test "$program_prefix" != NONE &&
+- program_transform_name="s&^&$program_prefix&;$program_transform_name"
++ program_transform_name="s,^,$program_prefix,;$program_transform_name"
+ # Use a double $ so make ignores it.
+ test "$program_suffix" != NONE &&
+- program_transform_name="s&\$&$program_suffix&;$program_transform_name"
++ program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+ # Double any \ or $. echo might interpret backslashes.
+ # By default was `s,x,x', remove it if useless.
+ cat <<\_ACEOF >conftest.sed
+ s/[\\$]/&&/g;s/;s,x,x,$//
+ _ACEOF
+ program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+-rm -f conftest.sed
++rm conftest.sed
+
+ # expand $ac_aux_dir to an absolute path
+ am_aux_dir=`cd $ac_aux_dir && pwd`
+@@ -2319,8 +1831,8 @@
+ 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; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2333,57 +1845,54 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ AWK=$ac_cv_prog_AWK
+ if test -n "$AWK"; then
+- { echo "$as_me:$LINENO: result: $AWK" >&5
+-echo "${ECHO_T}$AWK" >&6; }
++ echo "$as_me:$LINENO: result: $AWK" >&5
++echo "${ECHO_T}$AWK" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$AWK" && break
+ done
+
+-{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
+-set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
++echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
++set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
++if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.make <<\_ACEOF
+-SHELL = /bin/sh
+ all:
+- @echo '@@@%%%=$(MAKE)=@@@%%%'
++ @echo 'ac_maketemp="$(MAKE)"'
+ _ACEOF
+ # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+-case `${MAKE-make} -f conftest.make 2>/dev/null` in
+- *@@@%%%=?*=@@@%%%*)
+- eval ac_cv_prog_make_${ac_make}_set=yes;;
+- *)
+- eval ac_cv_prog_make_${ac_make}_set=no;;
+-esac
++eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
++if test -n "$ac_maketemp"; then
++ eval ac_cv_prog_make_${ac_make}_set=yes
++else
++ eval ac_cv_prog_make_${ac_make}_set=no
++fi
+ rm -f conftest.make
+ fi
+-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ SET_MAKE=
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ SET_MAKE="MAKE=${MAKE-make}"
+ fi
+
+@@ -2454,8 +1963,8 @@
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2468,34 +1977,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- { echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6; }
++ echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++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_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2508,41 +2015,27 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
++ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6; }
++ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_STRIP" = x; then
+- STRIP=":"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- STRIP=$ac_ct_STRIP
+- fi
++ STRIP=$ac_ct_STRIP
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -2557,8 +2050,8 @@
+ AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+
+-{ echo "$as_me:$LINENO: checking how to create a ustar tar archive" >&5
+-echo $ECHO_N "checking how to create a ustar tar archive... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking how to create a ustar tar archive" >&5
++echo $ECHO_N "checking how to create a ustar tar archive... $ECHO_C" >&6
+ # Loop over all known methods to create a tar archive until one works.
+ _am_tools='gnutar plaintar pax cpio none'
+ _am_tools=${am_cv_prog_tar_ustar-$_am_tools}
+@@ -2636,14 +2129,14 @@
+ am_cv_prog_tar_ustar=$_am_tool
+ fi
+
+-{ echo "$as_me:$LINENO: result: $am_cv_prog_tar_ustar" >&5
+-echo "${ECHO_T}$am_cv_prog_tar_ustar" >&6; }
++echo "$as_me:$LINENO: result: $am_cv_prog_tar_ustar" >&5
++echo "${ECHO_T}$am_cv_prog_tar_ustar" >&6
+
+
+
+
+
+-ac_config_headers="$ac_config_headers ortp-config.h"
++ ac_config_headers="$ac_config_headers ortp-config.h"
+
+
+ cat >>confdefs.h <<_ACEOF
+@@ -2668,22 +2161,23 @@
+
+
+
+-{ echo "$as_me:$LINENO: checking warning make an error on compilation" >&5
+-echo $ECHO_N "checking warning make an error on compilation... $ECHO_C" >&6; }
+-# Check whether --enable-strict was given.
++echo "$as_me:$LINENO: checking warning make an error on compilation" >&5
++echo $ECHO_N "checking warning make an error on compilation... $ECHO_C" >&6
++# Check whether --enable-strict or --disable-strict was given.
+ if test "${enable_strict+set}" = set; then
+- enableval=$enable_strict; wall_werror=$enableval
++ enableval="$enable_strict"
++ wall_werror=$enableval
+ else
+ wall_werror=yes
+
+-fi
+-
++fi;
+
+ ORTP_DEFS=
+
+-# Check whether --enable-ipv6 was given.
++# Check whether --enable-ipv6 or --disable-ipv6 was given.
+ if test "${enable_ipv6+set}" = set; then
+- enableval=$enable_ipv6; case "${enableval}" in
++ enableval="$enable_ipv6"
++ case "${enableval}" in
+ yes) ipv6=true;;
+ no) ipv6=false;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-ipv6" >&5
+@@ -2692,15 +2186,15 @@
+ esac
+ else
+ ipv6=true
+-fi
+-
++fi;
+ if test x$ipv6 = xtrue ; then
+ ORTP_DEFS="$ORTP_DEFS -DORTP_INET6"
+ fi
+
+-# Check whether --enable-mode64bit was given.
++# Check whether --enable-mode64bit or --disable-mode64bit was given.
+ if test "${enable_mode64bit+set}" = set; then
+- enableval=$enable_mode64bit; case "${enableval}" in
++ enableval="$enable_mode64bit"
++ case "${enableval}" in
+ yes) mode64bit_enabled=yes;;
+ no) mode64bit_enabled=no;;
+ *) { { echo "$as_me:$LINENO: error: \"Bad value for --enable-mode64bit\"" >&5
+@@ -2709,12 +2203,12 @@
+ esac
+ else
+ mode64bit_enabled=no
+-fi
++fi;
+
+-
+-# Check whether --enable-debug was given.
++# Check whether --enable-debug or --disable-debug was given.
+ if test "${enable_debug+set}" = set; then
+- enableval=$enable_debug; case "${enableval}" in
++ enableval="$enable_debug"
++ case "${enableval}" in
+ yes) debug_enabled=yes;;
+ no) debug_enabled=no;;
+ *) { { echo "$as_me:$LINENO: error: \"Bad value for --enable-debug\"" >&5
+@@ -2723,8 +2217,7 @@
+ esac
+ else
+ debug_enabled=no
+-fi
+-
++fi;
+
+
+ hpux_host=no
+@@ -2760,8 +2253,8 @@
+ 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; }
++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
+@@ -2774,34 +2267,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ 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.
+ 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; }
++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
+@@ -2814,51 +2305,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
+ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_CC" = x; then
+- CC=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- CC=$ac_ct_CC
+- 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.
++ 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; }
++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
+@@ -2871,34 +2347,74 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ 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 "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; }
++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
+@@ -2912,7 +2428,7 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+@@ -2923,7 +2439,6 @@
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -2941,23 +2456,22 @@
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl.exe
++ 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; }
++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
+@@ -2970,38 +2484,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- { echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl.exe
++ 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; }
++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
+@@ -3014,45 +2526,29 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$ac_ct_CC" && break
+ done
+
+- if test "x$ac_ct_CC" = x; then
+- CC=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- CC=$ac_ct_CC
+- fi
++ CC=$ac_ct_CC
+ fi
+
+ fi
+@@ -3065,35 +2561,21 @@
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO: checking for C compiler version" >&5
++echo "$as_me:$LINENO:" \
++ "checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (ac_try="$ac_compiler --version >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler --version >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -v >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -v >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -V >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -V >&5") 2>&5
++{ (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); }
+@@ -3118,77 +2600,47 @@
+ # 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 file name" >&5
+-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+-#
+-# List of possible output files, starting from the most likely.
+-# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
+-# only as a last resort. b.out is created by i960 compilers.
+-ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
+-#
+-# The IRIX 6 linker writes into existing files which may not be
+-# executable, retaining their permissions. Remove them first so a
+-# subsequent execution test works.
+-ac_rmfiles=
+-for ac_file in $ac_files
+-do
+- case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+- * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+- esac
+-done
+-rm -f $ac_rmfiles
+-
+-if { (ac_try="$ac_link_default"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link_default") 2>&5
++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
+- # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+-# in a Makefile. We should not override ac_cv_exeext if it was cached,
+-# so that the user can short-circuit this test for compilers unknown to
+-# Autoconf.
+-for ac_file in $ac_files ''
++ # 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 | *.map | *.inf | *.o | *.obj )
++ *.$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;;
+ *.* )
+- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+- then :; else
+- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- fi
+- # We set ac_cv_exeext here because the later test for it is not
+- # safe: cross compilers may not add the suffix if given an `-o'
+- # argument, so we may need to know it at that point already.
+- # Even if this section looks crufty: it has the advantage of
+- # actually working.
++ 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
+-test "$ac_cv_exeext" = no && ac_cv_exeext=
+-
+ else
+- ac_file=''
+-fi
+-
+-{ echo "$as_me:$LINENO: result: $ac_file" >&5
+-echo "${ECHO_T}$ac_file" >&6; }
+-if test -z "$ac_file"; then
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+@@ -3200,21 +2652,19 @@
+ fi
+
+ ac_exeext=$ac_cv_exeext
++echo "$as_me:$LINENO: result: $ac_file" >&5
++echo "${ECHO_T}$ac_file" >&6
+
+-# Check that the compiler produces executables we can run. If not, either
++# 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; }
++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'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -3233,27 +2683,22 @@
+ fi
+ fi
+ fi
+-{ echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+
+ rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ ac_clean_files=$ac_clean_files_save
+-# Check that the compiler produces executables we can run. If not, either
++# 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 { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>&5
++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
+@@ -3264,8 +2709,9 @@
+ 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 | *.map | *.inf | *.o | *.obj ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
++ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+@@ -3279,14 +2725,14 @@
+ fi
+
+ rm -f conftest$ac_cv_exeext
+-{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+-echo "${ECHO_T}$ac_cv_exeext" >&6; }
++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; }
++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
+ else
+@@ -3306,20 +2752,14 @@
+ }
+ _ACEOF
+ rm -f conftest.o conftest.obj
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>&5
++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 conftest.o conftest.obj conftest.*; do
+- test -f "$ac_file" || continue;
++ 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 | *.map | *.inf ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+@@ -3337,12 +2777,12 @@
+
+ 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; }
++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; }
++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
+@@ -3365,36 +2805,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -3403,139 +2831,24 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_compiler_gnu=no
++ac_compiler_gnu=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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; }
++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
+-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
++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
+ else
+- ac_save_c_werror_flag=$ac_c_werror_flag
+- ac_c_werror_flag=yes
+- ac_cv_prog_cc_g=no
+- CFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* 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 { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_g=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- CFLAGS=""
+- cat >conftest.$ac_ext <<_ACEOF
+-/* 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 { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- ac_c_werror_flag=$ac_save_c_werror_flag
+- CFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -3551,36 +2864,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -3589,20 +2890,12 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ac_cv_prog_cc_g=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+- ac_c_werror_flag=$ac_save_c_werror_flag
++rm -f conftest.err 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 "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+@@ -3618,12 +2911,12 @@
+ CFLAGS=
+ fi
+ fi
+-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+-if test "${ac_cv_prog_cc_c89+set}" = set; then
++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_c89=no
++ ac_cv_prog_cc_stdc=no
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -3657,17 +2950,12 @@
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std is added to get
++ as 'x'. The following induces an error, until -std1 is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std. */
++ that's true only with -std1. */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+- inside strings and character constants. */
+-#define FOO(x) 'x'
+-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+-
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+@@ -3682,82 +2970,213 @@
+ return 0;
+ }
+ _ACEOF
+-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++# 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 { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_c89=$ac_arg
++ 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 core conftest.err conftest.$ac_objext
+- test "x$ac_cv_prog_cc_c89" != "xno" && break
++rm -f conftest.err conftest.$ac_objext
+ done
+-rm -f conftest.$ac_ext
++rm -f conftest.$ac_ext conftest.$ac_objext
+ CC=$ac_save_CC
+
+ fi
+-# AC_CACHE_VAL
+-case "x$ac_cv_prog_cc_c89" in
+- x)
+- { echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6; } ;;
+- xno)
+- { echo "$as_me:$LINENO: result: unsupported" >&5
+-echo "${ECHO_T}unsupported" >&6; } ;;
++
++case "x$ac_cv_prog_cc_stdc" in
++ x|xno)
++ echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6 ;;
+ *)
+- CC="$CC $ac_cv_prog_cc_c89"
+- { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&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>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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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 \
++ '' \
++ '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
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_declaration
++#include <stdlib.h>
++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>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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++continue
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++ cat >conftest.$ac_ext <<_ACEOF
++/* 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>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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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.err 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.err 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
++DEPDIR="${am__leading_dot}deps"
+
+-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
+-DEPDIR="${am__leading_dot}deps"
+-
+-ac_config_commands="$ac_config_commands depfiles"
++ ac_config_commands="$ac_config_commands depfiles"
+
+
+ am_make=${MAKE-make}
+@@ -3767,8 +3186,8 @@
+ .PHONY: am__doit
+ END
+ # If we don't find an include directive, just comment out the code.
+-{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+ am__include="#"
+ am__quote=
+ _am_result=none
+@@ -3795,15 +3214,15 @@
+ fi
+
+
+-{ echo "$as_me:$LINENO: result: $_am_result" >&5
+-echo "${ECHO_T}$_am_result" >&6; }
++echo "$as_me:$LINENO: result: $_am_result" >&5
++echo "${ECHO_T}$_am_result" >&6
+ rm -f confinc confmf
+
+-# Check whether --enable-dependency-tracking was given.
++# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
+ if test "${enable_dependency_tracking+set}" = set; then
+- enableval=$enable_dependency_tracking;
+-fi
++ enableval="$enable_dependency_tracking"
+
++fi;
+ if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+@@ -3823,8 +3242,8 @@
+
+ depcc="$CC" am_compiler_list=
+
+-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+ if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3913,8 +3332,8 @@
+ fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
++echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+ CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+@@ -3930,9 +3349,10 @@
+ fi
+
+
+-# Check whether --enable-shared was given.
++# Check whether --enable-shared or --disable-shared was given.
+ if test "${enable_shared+set}" = set; then
+- enableval=$enable_shared; p=${PACKAGE-default}
++ enableval="$enable_shared"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+@@ -3951,12 +3371,12 @@
+ esac
+ else
+ enable_shared=yes
+-fi
+-
++fi;
+
+-# Check whether --enable-static was given.
++# Check whether --enable-static or --disable-static was given.
+ if test "${enable_static+set}" = set; then
+- enableval=$enable_static; p=${PACKAGE-default}
++ enableval="$enable_static"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+@@ -3975,12 +3395,12 @@
+ esac
+ else
+ enable_static=yes
+-fi
+-
++fi;
+
+-# Check whether --enable-fast-install was given.
++# Check whether --enable-fast-install or --disable-fast-install was given.
+ if test "${enable_fast_install+set}" = set; then
+- enableval=$enable_fast_install; p=${PACKAGE-default}
++ enableval="$enable_fast_install"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+@@ -3999,11 +3419,10 @@
+ esac
+ else
+ enable_fast_install=yes
+-fi
+-
++fi;
+
+-{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+-echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
++echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+ if test "${lt_cv_path_SED+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4027,7 +3446,7 @@
+ # Add /usr/xpg4/bin/sed as it is typically found on Solaris
+ # along with /bin/sed that truncates output.
+ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+- test ! -f $lt_ac_sed && continue
++ test ! -f $lt_ac_sed && break
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+@@ -4052,188 +3471,41 @@
+ fi
+ done
+ done
+-
+-fi
+-
+ SED=$lt_cv_path_SED
+-{ echo "$as_me:$LINENO: result: $SED" >&5
+-echo "${ECHO_T}$SED" >&6; }
+-
+-{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+-echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
+-if test "${ac_cv_path_GREP+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- # Extract the first word of "grep ggrep" to use in msg output
+-if test -z "$GREP"; then
+-set dummy grep ggrep; ac_prog_name=$2
+-if test "${ac_cv_path_GREP+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_path_GREP_found=false
+-# Loop through the user's path and test for each of PROGNAME-LIST
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_prog in grep ggrep; do
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+- { test -f "$ac_path_GREP" && $as_executable_p "$ac_path_GREP"; } || continue
+- # Check for GNU ac_path_GREP and select it if it is found.
+- # Check for GNU $ac_path_GREP
+-case `"$ac_path_GREP" --version 2>&1` in
+-*GNU*)
+- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+-*)
+- ac_count=0
+- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+- while :
+- do
+- cat "conftest.in" "conftest.in" >"conftest.tmp"
+- mv "conftest.tmp" "conftest.in"
+- cp "conftest.in" "conftest.nl"
+- echo 'GREP' >> "conftest.nl"
+- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+- ac_count=`expr $ac_count + 1`
+- if test $ac_count -gt ${ac_path_GREP_max-0}; then
+- # Best one so far, save it but keep looking for a better one
+- ac_cv_path_GREP="$ac_path_GREP"
+- ac_path_GREP_max=$ac_count
+- fi
+- # 10*(2^10) chars as input seems more than enough
+- test $ac_count -gt 10 && break
+- done
+- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+-esac
+-
+-
+- $ac_path_GREP_found && break 3
+- done
+-done
+-
+-done
+-IFS=$as_save_IFS
+-
+-
+-fi
+-
+-GREP="$ac_cv_path_GREP"
+-if test -z "$GREP"; then
+- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+- { (exit 1); exit 1; }; }
+-fi
+-
+-else
+- ac_cv_path_GREP=$GREP
+-fi
+-
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+-echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+- GREP="$ac_cv_path_GREP"
+
++echo "$as_me:$LINENO: result: $SED" >&5
++echo "${ECHO_T}$SED" >&6
+
+-{ echo "$as_me:$LINENO: checking for egrep" >&5
+-echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
+-if test "${ac_cv_path_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_path_EGREP="$GREP -E"
+- else
+- # Extract the first word of "egrep" to use in msg output
+-if test -z "$EGREP"; then
+-set dummy egrep; ac_prog_name=$2
+-if test "${ac_cv_path_EGREP+set}" = set; then
++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
+- ac_path_EGREP_found=false
+-# Loop through the user's path and test for each of PROGNAME-LIST
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_prog in egrep; do
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+- { test -f "$ac_path_EGREP" && $as_executable_p "$ac_path_EGREP"; } || continue
+- # Check for GNU ac_path_EGREP and select it if it is found.
+- # Check for GNU $ac_path_EGREP
+-case `"$ac_path_EGREP" --version 2>&1` in
+-*GNU*)
+- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+-*)
+- ac_count=0
+- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+- while :
+- do
+- cat "conftest.in" "conftest.in" >"conftest.tmp"
+- mv "conftest.tmp" "conftest.in"
+- cp "conftest.in" "conftest.nl"
+- echo 'EGREP' >> "conftest.nl"
+- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+- ac_count=`expr $ac_count + 1`
+- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+- # Best one so far, save it but keep looking for a better one
+- ac_cv_path_EGREP="$ac_path_EGREP"
+- ac_path_EGREP_max=$ac_count
++ 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
+- # 10*(2^10) chars as input seems more than enough
+- test $ac_count -gt 10 && break
+- done
+- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+-esac
+-
+-
+- $ac_path_EGREP_found && break 3
+- done
+-done
+-
+-done
+-IFS=$as_save_IFS
+-
+-
+-fi
+-
+-EGREP="$ac_cv_path_EGREP"
+-if test -z "$EGREP"; then
+- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+- { (exit 1); exit 1; }; }
+-fi
+-
+-else
+- ac_cv_path_EGREP=$EGREP
+-fi
+-
+-
+- fi
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+-echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+- EGREP="$ac_cv_path_EGREP"
++echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
++echo "${ECHO_T}$ac_cv_prog_egrep" >&6
++ EGREP=$ac_cv_prog_egrep
+
+
+
+-# Check whether --with-gnu-ld was given.
++# Check whether --with-gnu-ld or --without-gnu-ld was given.
+ if test "${with_gnu_ld+set}" = set; then
+- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
++ withval="$with_gnu_ld"
++ test "$withval" = no || with_gnu_ld=yes
+ else
+ with_gnu_ld=no
+-fi
+-
++fi;
+ ac_prog=ld
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+- { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+@@ -4262,11 +3534,11 @@
+ ;;
+ esac
+ elif test "$with_gnu_ld" = yes; then
+- { echo "$as_me:$LINENO: checking for GNU ld" >&5
+-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for GNU ld" >&5
++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+ else
+- { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+ fi
+ if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -4279,7 +3551,7 @@
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+- # but apparently some variants of GNU ld only accept -v.
++ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+@@ -4299,21 +3571,21 @@
+
+ LD="$lt_cv_path_LD"
+ if test -n "$LD"; then
+- { echo "$as_me:$LINENO: result: $LD" >&5
+-echo "${ECHO_T}$LD" >&6; }
++ echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+ test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+ echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+-{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+ if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- # I'd rather use --version here, but apparently some GNU lds only accept -v.
++ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+ case `$LD -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+@@ -4323,38 +3595,29 @@
+ ;;
+ esac
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+ with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+-{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+ if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ lt_cv_ld_reload_flag='-r'
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+ reload_flag=$lt_cv_ld_reload_flag
+ case $reload_flag in
+ "" | " "*) ;;
+ *) reload_flag=" $reload_flag" ;;
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+-case $host_os in
+- darwin*)
+- if test "$GCC" = yes; then
+- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+- else
+- reload_cmds='$LD$reload_flag -o $output$reload_objs'
+- fi
+- ;;
+-esac
+
+-{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+ if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4362,63 +3625,56 @@
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+ else
+- lt_nm_to_check="${ac_tool_prefix}nm"
+- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+- lt_nm_to_check="$lt_nm_to_check nm"
+- fi
+- for lt_tmp_nm in $lt_nm_to_check; do
+- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+- IFS="$lt_save_ifs"
+- test -z "$ac_dir" && ac_dir=.
+- tmp_nm="$ac_dir/$lt_tmp_nm"
+- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+- # Check to see if the nm accepts a BSD-compat flag.
+- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+- # nm: unknown option "B" ignored
+- # Tru64's nm complains that /dev/null is an invalid object file
+- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+- */dev/null* | *'Invalid file or object type'*)
+- lt_cv_path_NM="$tmp_nm -B"
++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
++ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
++ IFS="$lt_save_ifs"
++ test -z "$ac_dir" && ac_dir=.
++ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
++ # Check to see if the nm accepts a BSD-compat flag.
++ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
++ # nm: unknown option "B" ignored
++ # Tru64's nm complains that /dev/null is an invalid object file
++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
++ */dev/null* | *'Invalid file or object type'*)
++ lt_cv_path_NM="$tmp_nm -B"
++ break
++ ;;
++ *)
++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
++ */dev/null*)
++ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+- */dev/null*)
+- lt_cv_path_NM="$tmp_nm -p"
+- break
+- ;;
+- *)
+- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+- continue # so that we can try to find one that supports BSD flags
+- ;;
+- esac
++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
++ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+- fi
+- done
+- IFS="$lt_save_ifs"
++ esac
++ fi
+ done
++ IFS="$lt_save_ifs"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+ fi
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+-echo "${ECHO_T}$lt_cv_path_NM" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
++echo "${ECHO_T}$lt_cv_path_NM" >&6
+ NM="$lt_cv_path_NM"
+
+-{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
+-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether ln -s works" >&5
++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+ LN_S=$as_ln_s
+ if test "$LN_S" = "ln -s"; then
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ else
+- { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+-echo "${ECHO_T}no, using $LN_S" >&6; }
++ echo "$as_me:$LINENO: result: no, using $LN_S" >&5
++echo "${ECHO_T}no, using $LN_S" >&6
+ fi
+
+-{ echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+-echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
++echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+ if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4445,7 +3701,7 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-bsdi[45]*)
++bsdi4*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+@@ -4468,13 +3724,13 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-freebsd* | dragonfly*)
++freebsd* | kfreebsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+@@ -4490,7 +3746,7 @@
+
+ hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+@@ -4506,11 +3762,6 @@
+ esac
+ ;;
+
+-interix3*)
+- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+@@ -4522,11 +3773,20 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
++ case $host_cpu in
++ alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*)
++ lt_cv_deplibs_check_method=pass_all ;;
++ *)
++ # glibc up to 2.1.1 does not perform some relocations on ARM
++ # this will be overridden with pass_all, but let us keep it just in case
++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
++ esac
++ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-netbsd* | netbsdelf*-gnu)
++netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+@@ -4545,10 +3805,12 @@
+ ;;
+
+ openbsd*)
++ lt_cv_file_magic_cmd=/usr/bin/file
++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+ else
+- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
++ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+ fi
+ ;;
+
+@@ -4556,11 +3818,15 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++sco3.2v5*)
++ lt_cv_deplibs_check_method=pass_all
++ ;;
++
+ solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+@@ -4581,20 +3847,17 @@
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+- pc)
+- lt_cv_deplibs_check_method=pass_all
+- ;;
+ esac
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
++sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -4605,18 +3868,15 @@
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+
+
+-# Check whether --enable-libtool-lock was given.
++# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then
+- enableval=$enable_libtool_lock;
+-fi
++ enableval="$enable_libtool_lock"
+
++fi;
+ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+ # Some flags need to be propagated to the compiler or linker for good
+@@ -4643,7 +3903,7 @@
+ ;;
+ *-*-irix6*)
+ # Find out which ABI we are using.
+- echo '#line 4646 "configure"' > conftest.$ac_ext
++ echo '#line 3906 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -4686,7 +3946,7 @@
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- case `/usr/bin/file conftest.o` in
++ case "`/usr/bin/file conftest.o`" in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+@@ -4728,8 +3988,8 @@
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+- { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+ if test "${lt_cv_cc_needs_belf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4755,36 +4015,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -4793,10 +4041,9 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- lt_cv_cc_needs_belf=no
++lt_cv_cc_needs_belf=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+@@ -4805,33 +4052,13 @@
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+-sparc*-*solaris*)
+- # Find out which ABI we are using.
+- echo 'int i;' > conftest.$ac_ext
+- 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
+- case `/usr/bin/file conftest.o` in
+- *64-bit*)
+- case $lt_cv_prog_gnu_ld in
+- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+- *) LD="${LD-ld} -64" ;;
+- esac
+- ;;
+- esac
+- fi
+- rm -rf conftest*
+- ;;
+-
+
+ esac
+
+@@ -4843,8 +4070,8 @@
+ 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 "$as_me:$LINENO: checking how to run the C preprocessor" >&5
++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+ # On Suns, sometimes $CPP names a directory.
+ if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+@@ -4878,13 +4105,8 @@
+ #endif
+ Syntax error
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -4909,10 +4131,9 @@
+ # Broken: fails on valid input.
+ continue
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether nonexistent headers
++ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -4922,13 +4143,8 @@
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -4955,7 +4171,6 @@
+ ac_preproc_ok=:
+ break
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -4973,8 +4188,8 @@
+ else
+ ac_cv_prog_CPP=$CPP
+ fi
+-{ echo "$as_me:$LINENO: result: $CPP" >&5
+-echo "${ECHO_T}$CPP" >&6; }
++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
+@@ -4997,13 +4212,8 @@
+ #endif
+ Syntax error
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -5028,10 +4238,9 @@
+ # Broken: fails on valid input.
+ continue
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether nonexistent headers
++ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5041,13 +4250,8 @@
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -5074,7 +4278,6 @@
+ ac_preproc_ok=:
+ break
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -5097,8 +4300,8 @@
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
++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
+@@ -5122,36 +4325,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5160,10 +4351,9 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_header_stdc=no
++ac_cv_header_stdc=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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.
+@@ -5219,7 +4409,6 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ctype.h>
+-#include <stdlib.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+@@ -5239,27 +4428,18 @@
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+- return 2;
+- return 0;
++ exit(2);
++ exit (0);
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>&5
++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'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5272,14 +4452,12 @@
+ ( exit $ac_status )
+ ac_cv_header_stdc=no
+ fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f 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; }
++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
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -5302,9 +4480,9 @@
+ 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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -5318,36 +4496,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5356,14 +4522,12 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- eval "$as_ac_Header=no"
++eval "$as_ac_Header=no"
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++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
+@@ -5378,19 +4542,18 @@
+ for ac_header in dlfcn.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -5401,36 +4564,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5439,16 +4590,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -5457,13 +4607,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -5487,10 +4632,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -5514,19 +4658,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+-
++ (
++ cat <<\_ASBOX
++## ------------------------------- ##
++## Report this to the ortp lists. ##
++## ------------------------------- ##
++_ASBOX
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -5538,22 +4688,18 @@
+
+ done
+
+-ac_ext=cpp
++ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+-if test -z "$CXX"; then
+- if test -n "$CCC"; then
+- CXX=$CCC
+- else
+- if test -n "$ac_tool_prefix"; then
+- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
++if test -n "$ac_tool_prefix"; then
++ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ 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; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5566,38 +4712,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ CXX=$ac_cv_prog_CXX
+ if test -n "$CXX"; then
+- { echo "$as_me:$LINENO: result: $CXX" >&5
+-echo "${ECHO_T}$CXX" >&6; }
++ echo "$as_me:$LINENO: result: $CXX" >&5
++echo "${ECHO_T}$CXX" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$CXX" && break
+ done
+ fi
+ if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
++ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ 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; }
++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_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5610,85 +4754,55 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+ if test -n "$ac_ct_CXX"; then
+- { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+-echo "${ECHO_T}$ac_ct_CXX" >&6; }
++ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
++echo "${ECHO_T}$ac_ct_CXX" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$ac_ct_CXX" && break
+ done
++test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+- if test "x$ac_ct_CXX" = x; then
+- CXX="g++"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- CXX=$ac_ct_CXX
+- fi
++ CXX=$ac_ct_CXX
+ fi
+
+- fi
+-fi
++
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO: checking for C++ compiler version" >&5
++echo "$as_me:$LINENO:" \
++ "checking for C++ compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (ac_try="$ac_compiler --version >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler --version >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -v >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -v >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -V >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -V >&5") 2>&5
++{ (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); }
+
+-{ 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; }
++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_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5711,36 +4825,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5749,28 +4851,24 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_compiler_gnu=no
++ac_compiler_gnu=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+ GXX=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CXXFLAGS=${CXXFLAGS+set}
+ ac_save_CXXFLAGS=$CXXFLAGS
+-{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
++CXXFLAGS="-g"
++echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
++echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+ if test "${ac_cv_prog_cxx_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+- ac_cxx_werror_flag=yes
+- ac_cv_prog_cxx_g=no
+- CXXFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -5786,36 +4884,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5824,53 +4910,70 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- CXXFLAGS=""
+- cat >conftest.$ac_ext <<_ACEOF
++ac_cv_prog_cxx_g=no
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
++if test "$ac_test_CXXFLAGS" = set; then
++ CXXFLAGS=$ac_save_CXXFLAGS
++elif test $ac_cv_prog_cxx_g = yes; then
++ if test "$GXX" = yes; then
++ CXXFLAGS="-g -O2"
++ else
++ CXXFLAGS="-g"
++ fi
++else
++ if test "$GXX" = yes; then
++ CXXFLAGS="-O2"
++ else
++ CXXFLAGS=
++ fi
++fi
++for ac_declaration in \
++ '' \
++ '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
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-
++$ac_declaration
++#include <stdlib.h>
+ int
+ main ()
+ {
+-
++exit (42);
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -5879,92 +4982,62 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+- CXXFLAGS="-g"
+- cat >conftest.$ac_ext <<_ACEOF
++continue
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++ cat >conftest.$ac_ext <<_ACEOF
+ /* 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 { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_cxx_g=yes
++ break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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
+
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+- ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+-fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
+-if test "$ac_test_CXXFLAGS" = set; then
+- CXXFLAGS=$ac_save_CXXFLAGS
+-elif test $ac_cv_prog_cxx_g = yes; then
+- if test "$GXX" = yes; then
+- CXXFLAGS="-g -O2"
+- else
+- CXXFLAGS="-g"
+- fi
+-else
+- if test "$GXX" = yes; then
+- CXXFLAGS="-O2"
+- else
+- CXXFLAGS=
+- fi
+-fi
+-ac_ext=cpp
++ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+@@ -5972,8 +5045,8 @@
+
+ depcc="$CXX" am_compiler_list=
+
+-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+ if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6062,8 +5135,8 @@
+ fi
+
+ fi
+-{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; }
++echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+ CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+@@ -6079,18 +5152,13 @@
+ fi
+
+
+-
+-
+-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+- (test "X$CXX" != "Xg++"))) ; then
+- ac_ext=cpp
++ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_cxx_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 "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
++echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+ if test -z "$CXXCPP"; then
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -6120,13 +5188,8 @@
+ #endif
+ Syntax error
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -6151,10 +5214,9 @@
+ # Broken: fails on valid input.
+ continue
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether nonexistent headers
++ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -6164,13 +5226,8 @@
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -6197,7 +5254,6 @@
+ ac_preproc_ok=:
+ break
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -6215,8 +5271,8 @@
+ else
+ ac_cv_prog_CXXCPP=$CXXCPP
+ fi
+-{ echo "$as_me:$LINENO: result: $CXXCPP" >&5
+-echo "${ECHO_T}$CXXCPP" >&6; }
++echo "$as_me:$LINENO: result: $CXXCPP" >&5
++echo "${ECHO_T}$CXXCPP" >&6
+ ac_preproc_ok=false
+ for ac_cxx_preproc_warn_flag in '' yes
+ do
+@@ -6239,13 +5295,8 @@
+ #endif
+ Syntax error
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -6270,10 +5321,9 @@
+ # Broken: fails on valid input.
+ continue
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether nonexistent headers
++ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -6283,13 +5333,8 @@
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -6316,7 +5361,6 @@
+ ac_preproc_ok=:
+ break
+ fi
+-
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -6332,26 +5376,24 @@
+ { (exit 1); exit 1; }; }
+ fi
+
+-ac_ext=cpp
++ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+-fi
+-
+
+ ac_ext=f
+ ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn
++ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+ 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; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6364,38 +5406,36 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ F77=$ac_cv_prog_F77
+ if test -n "$F77"; then
+- { echo "$as_me:$LINENO: result: $F77" >&5
+-echo "${ECHO_T}$F77" >&6; }
++ echo "$as_me:$LINENO: result: $F77" >&5
++echo "${ECHO_T}$F77" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$F77" && break
+ done
+ fi
+ if test -z "$F77"; then
+ ac_ct_F77=$F77
+- for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn
++ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+ 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; }
++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_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6408,78 +5448,48 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_F77="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_F77=$ac_cv_prog_ac_ct_F77
+ if test -n "$ac_ct_F77"; then
+- { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+-echo "${ECHO_T}$ac_ct_F77" >&6; }
++ echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
++echo "${ECHO_T}$ac_ct_F77" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ test -n "$ac_ct_F77" && break
+ done
+
+- if test "x$ac_ct_F77" = x; then
+- F77=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- F77=$ac_ct_F77
+- fi
++ F77=$ac_ct_F77
+ fi
+
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5
++echo "$as_me:5478:" \
++ "checking for Fortran 77 compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (ac_try="$ac_compiler --version >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler --version >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -v >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -v >&5") 2>&5
++{ (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); }
+-{ (ac_try="$ac_compiler -V >&5"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compiler -V >&5") 2>&5
++{ (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); }
+@@ -6489,8 +5499,8 @@
+ # input file. (Note that this only needs to work for GNU compilers.)
+ ac_save_ext=$ac_ext
+ ac_ext=F
+-{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+ if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6503,36 +5513,24 @@
+ end
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_f77_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -6541,21 +5539,20 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_compiler_gnu=no
++ac_compiler_gnu=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ ac_ext=$ac_save_ext
+ ac_test_FFLAGS=${FFLAGS+set}
+ ac_save_FFLAGS=$FFLAGS
+ FFLAGS=
+-{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+-echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
++echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+ if test "${ac_cv_prog_f77_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6566,36 +5563,24 @@
+ end
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_f77_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -6604,14 +5589,13 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_prog_f77_g=no
++ac_cv_prog_f77_g=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
++echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+ if test "$ac_test_FFLAGS" = set; then
+ FFLAGS=$ac_save_FFLAGS
+ elif test $ac_cv_prog_f77_g = yes; then
+@@ -6640,8 +5624,8 @@
+ # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+ # find the maximum length of command line arguments
+-{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+ if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6681,55 +5665,11 @@
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+- # This has been around since 386BSD, at least. Likely further.
+- if test -x /sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+- elif test -x /usr/sbin/sysctl; then
+- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+- else
+- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+- fi
+- # And add a safety zone
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+- ;;
+-
+- interix*)
+- # We know the value 262144 and hardcode it with a safety zone (like BSD)
+- lt_cv_sys_max_cmd_len=196608
+- ;;
+-
+- osf*)
+- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+- # nice to cause kernel panics so lets avoid the loop below.
+- # First set a reasonable default.
+- lt_cv_sys_max_cmd_len=16384
+- #
+- if test -x /sbin/sysconfig; then
+- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+- *1*) lt_cv_sys_max_cmd_len=-1 ;;
+- esac
+- fi
+- ;;
+- sco3.2v5*)
+- lt_cv_sys_max_cmd_len=102400
+- ;;
+- sysv5* | sco5v6* | sysv4.2uw2*)
+- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+- if test -n "$kargmax"; then
+- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+- else
+- lt_cv_sys_max_cmd_len=32768
+- fi
+- ;;
+- *)
++ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+- while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
++ while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+@@ -6749,19 +5689,19 @@
+ fi
+
+ if test -n $lt_cv_sys_max_cmd_len ; then
+- { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; }
++ echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+ else
+- { echo "$as_me:$LINENO: result: none" >&5
+-echo "${ECHO_T}none" >&6; }
++ echo "$as_me:$LINENO: result: none" >&5
++echo "${ECHO_T}none" >&6
+ fi
+
+
+
+
+ # Check for command to grab the raw symbol name followed by C symbol from nm.
+-{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+-echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
++echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+ if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6775,6 +5715,9 @@
+ # Regexp to match symbols that can be accessed directly from C.
+ sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
++# Transform the above into a raw symbol and a C symbol.
++symxfrm='\1 \2\3 \3'
++
+ # Transform an extracted symbol line into a proper C declaration
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+@@ -6796,31 +5739,15 @@
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+-linux* | k*bsd*-gnu)
+- if test "$host_cpu" = ia64; then
+- symcode='[ABCDGIRSTW]'
+- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+- fi
+- ;;
+ irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+ osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+-solaris*)
++solaris* | sysv5*)
+ symcode='[BDRT]'
+ ;;
+-sco3.2v5*)
+- symcode='[DT]'
+- ;;
+-sysv4.2uw2*)
+- symcode='[DT]'
+- ;;
+-sysv5* | sco5v6* | unixware* | OpenUNIX*)
+- symcode='[ABDT]'
+- ;;
+ sysv4)
+ symcode='[DFNSTU]'
+ ;;
+@@ -6843,11 +5770,8 @@
+ # Try without a prefix undercore, then with it.
+ for ac_symprfx in "" "_"; do
+
+- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+- symxfrm="\\1 $ac_symprfx\\2 \\2"
+-
+ # Write the raw and C identifiers.
+- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -6965,15 +5889,15 @@
+ lt_cv_sys_global_symbol_to_cdecl=
+ fi
+ if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+- { echo "$as_me:$LINENO: result: failed" >&5
+-echo "${ECHO_T}failed" >&6; }
++ echo "$as_me:$LINENO: result: failed" >&5
++echo "${ECHO_T}failed" >&6
+ else
+- { echo "$as_me:$LINENO: result: ok" >&5
+-echo "${ECHO_T}ok" >&6; }
++ echo "$as_me:$LINENO: result: ok" >&5
++echo "${ECHO_T}ok" >&6
+ fi
+
+-{ echo "$as_me:$LINENO: checking for objdir" >&5
+-echo $ECHO_N "checking for objdir... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for objdir" >&5
++echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+ if test "${lt_cv_objdir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6987,8 +5911,8 @@
+ fi
+ rmdir .libs 2>/dev/null
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+-echo "${ECHO_T}$lt_cv_objdir" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
++echo "${ECHO_T}$lt_cv_objdir" >&6
+ objdir=$lt_cv_objdir
+
+
+@@ -7009,7 +5933,7 @@
+
+ # Sed substitution that helps us do robust quoting. It backslashifies
+ # metacharacters that are still active within double-quoted strings.
+-Xsed='sed -e 1s/^X//'
++Xsed='sed -e s/^X//'
+ sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+ # Same as above, but do not quote variable references.
+@@ -7029,7 +5953,7 @@
+ default_ofile=libtool
+ can_build_shared=yes
+
+-# All known linkers require a `.a' archive for static linking (except MSVC,
++# All known linkers require a `.a' archive for static linking (except M$VC,
+ # which needs '.lib').
+ libext=a
+ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -7039,8 +5963,8 @@
+ 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.
+ 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; }
++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
+ else
+@@ -7053,34 +5977,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ AR=$ac_cv_prog_AR
+ if test -n "$AR"; then
+- { echo "$as_me:$LINENO: result: $AR" >&5
+-echo "${ECHO_T}$AR" >&6; }
++ echo "$as_me:$LINENO: result: $AR" >&5
++echo "${ECHO_T}$AR" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&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; }
++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
+@@ -7093,41 +6015,27 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
++ test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_AR" = x; then
+- AR="false"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- AR=$ac_ct_AR
+- fi
++ AR=$ac_ct_AR
+ else
+ AR="$ac_cv_prog_AR"
+ fi
+@@ -7135,8 +6043,8 @@
+ 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; }
++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
+@@ -7149,34 +6057,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- { echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6; }
++ echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&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; }
++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
+@@ -7189,41 +6095,27 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ 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
+-IFS=$as_save_IFS
+
++ 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; }
++ 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; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_RANLIB" = x; then
+- RANLIB=":"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- RANLIB=$ac_ct_RANLIB
+- fi
++ RANLIB=$ac_ct_RANLIB
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+@@ -7231,8 +6123,8 @@
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7245,34 +6137,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- { echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6; }
++ echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++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_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7285,41 +6175,27 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
++ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6; }
++ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+- if test "x$ac_ct_STRIP" = x; then
+- STRIP=":"
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&5
+-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+-whose name does not start with the host triplet. If you think this
+-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- STRIP=$ac_ct_STRIP
+- fi
++ STRIP=$ac_ct_STRIP
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -7334,7 +6210,6 @@
+ test -z "$AS" && AS=as
+ test -z "$CC" && CC=cc
+ test -z "$LTCC" && LTCC=$CC
+-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+ test -z "$DLLTOOL" && DLLTOOL=dlltool
+ test -z "$LD" && LD=ld
+ test -z "$LN_S" && LN_S="ln -s"
+@@ -7354,32 +6229,21 @@
+ if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
++ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
++ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+ fi
+
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-
+-
+ # Only perform the check for file, if the check method requires it
+ case $deplibs_check_method in
+ file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+- { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7399,7 +6263,7 @@
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
++ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+@@ -7431,17 +6295,17 @@
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6; }
++ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+ if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+- { echo "$as_me:$LINENO: checking for file" >&5
+-echo $ECHO_N "checking for file... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for file" >&5
++echo $ECHO_N "checking for file... $ECHO_C" >&6
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7461,7 +6325,7 @@
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
++ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+@@ -7493,11 +6357,11 @@
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6; }
++ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+ else
+@@ -7512,21 +6376,21 @@
+ enable_dlopen=no
+ enable_win32_dll=no
+
+-# Check whether --enable-libtool-lock was given.
++# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then
+- enableval=$enable_libtool_lock;
+-fi
++ enableval="$enable_libtool_lock"
+
++fi;
+ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+-# Check whether --with-pic was given.
++# Check whether --with-pic or --without-pic was given.
+ if test "${with_pic+set}" = set; then
+- withval=$with_pic; pic_mode="$withval"
++ withval="$with_pic"
++ pic_mode="$withval"
+ else
+ pic_mode=default
+-fi
+-
++fi;
+ test -z "$pic_mode" && pic_mode=default
+
+ # Use C for the default configuration in the libtool script
+@@ -7556,25 +6420,68 @@
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
++#
++# Check for any special shared library compilation flags.
++#
++lt_prog_cc_shlib=
++if test "$GCC" = no; then
++ case $host_os in
++ sco3.2v5*)
++ lt_prog_cc_shlib='-belf'
++ ;;
++ esac
++fi
++if test -n "$lt_prog_cc_shlib"; then
++ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
++echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
++ if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then :
++ else
++ { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
++echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
++ lt_cv_prog_cc_can_build_shared=no
++ fi
++fi
++
++
++#
++# Check to make sure the static flag actually works.
++#
++echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
++echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
++if test "${lt_prog_compiler_static_works+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_prog_compiler_static_works=no
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
++ printf "$lt_simple_link_test_code" > conftest.$ac_ext
++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test -s conftest.err; then
++ # Append any errors to the config.log.
++ cat conftest.err 1>&5
++ else
++ lt_prog_compiler_static_works=yes
++ fi
++ fi
++ $rm conftest*
++ LDFLAGS="$save_LDFLAGS"
++
++fi
++echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
++echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
++
++if test x"$lt_prog_compiler_static_works" = xyes; then
++ :
++else
++ lt_prog_compiler_static=
++fi
++
+
+
+
+@@ -7584,8 +6491,8 @@
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+-{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+ if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7599,28 +6506,26 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:7605: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:6512: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:7609: \$? = $ac_status" >&5
++ echo "$as_me:6516: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+ if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+@@ -7634,8 +6539,8 @@
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -7673,11 +6578,6 @@
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+-
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+@@ -7694,7 +6594,7 @@
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -7720,16 +6620,6 @@
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- lt_prog_compiler_pic='-qnocommon'
+- lt_prog_compiler_wl='-Wl,'
+- ;;
+- esac
+- ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+@@ -7741,7 +6631,7 @@
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -7764,20 +6654,13 @@
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+- linux* | k*bsd*-gnu)
+- case $cc_basename in
++ linux*)
++ case $CC in
+ icc* | ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+- pgcc* | pgf77* | pgf90* | pgf95*)
+- # Portland Group compilers (*not* the Pentium gcc compiler,
+- # which looks to be a dead project)
+- lt_prog_compiler_wl='-Wl,'
+- lt_prog_compiler_pic='-fpic'
+- lt_prog_compiler_static='-Bstatic'
+- ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+@@ -7792,15 +6675,15 @@
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
++ sco3.2v5*)
++ lt_prog_compiler_pic='-Kpic'
++ lt_prog_compiler_static='-dn'
++ ;;
++
+ solaris*)
++ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+- case $cc_basename in
+- f77* | f90* | f95*)
+- lt_prog_compiler_wl='-Qoption ld ';;
+- *)
+- lt_prog_compiler_wl='-Wl,';;
+- esac
+ ;;
+
+ sunos4*)
+@@ -7809,7 +6692,7 @@
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+- sysv4 | sysv4.2uw2* | sysv4.3*)
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+@@ -7822,17 +6705,6 @@
+ fi
+ ;;
+
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- lt_prog_compiler_wl='-Wl,'
+- lt_prog_compiler_pic='-KPIC'
+- lt_prog_compiler_static='-Bstatic'
+- ;;
+-
+- unicos*)
+- lt_prog_compiler_wl='-Wl,'
+- lt_prog_compiler_can_build_shared=no
+- ;;
+-
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+@@ -7844,16 +6716,16 @@
+ esac
+ fi
+
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+ #
+ # Check to make sure the PIC flag actually works.
+ #
+ if test -n "$lt_prog_compiler_pic"; then
+
+-{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+ if test "${lt_prog_compiler_pic_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7867,28 +6739,26 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:7873: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:6745: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:7877: \$? = $ac_status" >&5
++ echo "$as_me:6749: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works=yes
+ fi
+ fi
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+ if test x"$lt_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+@@ -7901,7 +6771,7 @@
+ fi
+
+ fi
+-case $host_os in
++case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+@@ -7911,51 +6781,9 @@
+ ;;
+ esac
+
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_static_works+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_static_works=no
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_static_works=yes
+- fi
+- else
+- lt_prog_compiler_static_works=yes
+- fi
+- fi
+- $rm conftest*
+- LDFLAGS="$save_LDFLAGS"
+-
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+-echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; }
+-
+-if test x"$lt_prog_compiler_static_works" = xyes; then
+- :
+-else
+- lt_prog_compiler_static=
+-fi
+-
+-
+-{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+-if test "${lt_cv_prog_compiler_c_o+set}" = set; then
++echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
++if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ lt_cv_prog_compiler_c_o=no
+@@ -7971,25 +6799,23 @@
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:7977: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:6805: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:7981: \$? = $ac_status" >&5
++ echo "$as_me:6809: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
++ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+- chmod u+w . 2>&5
++ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+@@ -8000,23 +6826,23 @@
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+ hard_links="nottested"
+ if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+- { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- { echo "$as_me:$LINENO: result: $hard_links" >&5
+-echo "${ECHO_T}$hard_links" >&6; }
++ echo "$as_me:$LINENO: result: $hard_links" >&5
++echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+ echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+@@ -8026,8 +6852,8 @@
+ need_locks=no
+ fi
+
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag=
+@@ -8065,16 +6891,6 @@
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+- # Just being paranoid about ensuring that cc_basename is set.
+- for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+@@ -8085,10 +6901,6 @@
+ with_gnu_ld=no
+ fi
+ ;;
+- interix*)
+- # we just hope/assume this is gcc and not c89 (= MSVC++)
+- with_gnu_ld=yes
+- ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+@@ -8099,27 +6911,6 @@
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+- # Set some defaults for GNU ld with shared library support. These
+- # are reset later if shared libraries are not supported. Putting them
+- # here allows them to be overridden if necessary.
+- runpath_var=LD_RUN_PATH
+- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+- export_dynamic_flag_spec='${wl}--export-dynamic'
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- whole_archive_flag_spec=
+- fi
+- supports_anon_versioning=no
+- case `$LD -v 2>/dev/null` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+- *\ 2.11.*) ;; # other 2.11 versions
+- *) supports_anon_versioning=yes ;;
+- esac
+-
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+@@ -8170,10 +6961,10 @@
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -8182,60 +6973,13 @@
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- ld_shlibs=no
+- fi
+- ;;
+-
+- interix3*)
+- hardcode_direct=no
+- hardcode_shlibpath_var=no
+- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+-
+- linux* | k*bsd*-gnu)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- tmp_addflag=
+- case $cc_basename,$host_cpu in
+- pgcc*) # Portland Group C compiler
+- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag'
+- ;;
+- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag -Mnomain' ;;
+- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+- tmp_addflag=' -i_dynamic' ;;
+- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+- tmp_addflag=' -i_dynamic -nofor_main' ;;
+- ifc* | ifort*) # Intel Fortran compiler
+- tmp_addflag=' -nofor_main' ;;
+- esac
+- archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+-
+- if test $supports_anon_versioning = yes; then
+- archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- $echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+- fi
+- link_all_deplibs=no
++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+@@ -8245,7 +6989,7 @@
+ fi
+ ;;
+
+- solaris*)
++ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+@@ -8266,33 +7010,6 @@
+ fi
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+- case `$LD -v 2>&1` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+- ld_shlibs=no
+- cat <<_LT_EOF 1>&2
+-
+-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+-*** reliably create shared libraries on SCO systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
+-
+-_LT_EOF
+- ;;
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+- else
+- ld_shlibs=no
+- fi
+- ;;
+- esac
+- ;;
+-
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+@@ -8300,6 +7017,31 @@
+ hardcode_shlibpath_var=no
+ ;;
+
++ linux*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_cmds="$tmp_archive_cmds"
++ supports_anon_versioning=no
++ case `$LD -v 2>/dev/null` in
++ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
++ *\ 2.11.*) ;; # other 2.11 versions
++ *) supports_anon_versioning=yes ;;
++ esac
++ if test $supports_anon_versioning = yes; then
++ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ archive_expsym_cmds="$tmp_archive_cmds"
++ fi
++ else
++ ld_shlibs=no
++ fi
++ ;;
++
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+@@ -8310,11 +7052,16 @@
+ ;;
+ esac
+
+- if test "$ld_shlibs" = no; then
+- runpath_var=
+- hardcode_libdir_flag_spec=
+- export_dynamic_flag_spec=
+- whole_archive_flag_spec=
++ if test "$ld_shlibs" = yes; then
++ runpath_var=LD_RUN_PATH
++ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
++ export_dynamic_flag_spec='${wl}--export-dynamic'
++ # ancient GNU ld didn't support --whole-archive et. al.
++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
++ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
++ else
++ whole_archive_flag_spec=
++ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+@@ -8326,7 +7073,7 @@
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
++ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+@@ -8360,7 +7107,6 @@
+ break
+ fi
+ done
+- ;;
+ esac
+
+ exp_sym_flag='-bexport'
+@@ -8379,7 +7125,7 @@
+ link_all_deplibs=yes
+
+ if test "$GCC" = yes; then
+- case $host_os in aix4.[012]|aix4.[012].*)
++ case $host_os in aix4.012|aix4.012.*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+@@ -8398,12 +7144,8 @@
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+- ;;
+ esac
+ shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+@@ -8411,11 +7153,11 @@
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+- if test "$aix_use_runtimelinking" = yes; then
++ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+- fi
++ fi
+ fi
+ fi
+
+@@ -8443,36 +7185,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -8486,20 +7216,18 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -8518,36 +7246,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -8561,10 +7277,8 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+@@ -8573,11 +7287,13 @@
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ always_export_symbols=yes
+ # Exported symbols can be pulled into shared objects from archives
+- whole_archive_flag_spec='$convenience'
++ whole_archive_flag_spec=' '
+ archive_cmds_need_lc=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+@@ -8590,7 +7306,7 @@
+ ld_shlibs=no
+ ;;
+
+- bsdi[45]*)
++ bsdi4*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+@@ -8616,52 +7332,52 @@
+ ;;
+
+ darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[012])
+- allow_undefined_flag='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[012])
+- allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
++ if test "$GXX" = yes ; then
+ archive_cmds_need_lc=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ archive_cmds='$CC -r ${wl}-bind_at_load -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'
++ fi
++ module_cmds='$CC ${wl}-bind_at_load $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
++ archive_expsym_cmds='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}'
++ else
++ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ fi
++ module_expsym_cmds='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}'
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+- whole_archive_flag_spec=''
++ whole_archive_flag_spec='-all_load $convenience'
+ link_all_deplibs=yes
+- if test "$GCC" = yes ; then
+- output_verbose_link_cmd='echo'
+- archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- module_cmds='$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 lds
+- archive_expsym_cmds='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}'
+- module_expsym_cmds='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}'
+ else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+- module_cmds='$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 lds
+- archive_expsym_cmds='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}'
+- module_expsym_cmds='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}'
+- ;;
+- *)
+- ld_shlibs=no
+- ;;
+- esac
++ ld_shlibs=no
+ fi
+ ;;
+
+@@ -8695,7 +7411,7 @@
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+@@ -8718,62 +7434,47 @@
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+- hpux10*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator=:
+-
+- hardcode_direct=yes
+- export_dynamic_flag_spec='${wl}-E'
+-
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L=yes
+- fi
+- ;;
+-
+- hpux11*)
++ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- case $host_cpu in
+- hppa*64*)
++ case "$host_cpu" in
++ hppa*64*|ia64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+- ia64*)
+- archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld='+b $libdir'
++ hardcode_libdir_separator=:
++ hardcode_direct=no
++ hardcode_shlibpath_var=no
++ ;;
++ ia64*)
++ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
++
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L=yes
+ ;;
+ *)
++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+@@ -8797,7 +7498,7 @@
+ link_all_deplibs=yes
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+@@ -8821,7 +7522,6 @@
+ hardcode_shlibpath_var=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+@@ -8867,7 +7567,7 @@
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+@@ -8875,15 +7575,21 @@
+ hardcode_libdir_separator=:
+ ;;
+
++ sco3.2v5*)
++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var=no
++ export_dynamic_flag_spec='${wl}-Bexport'
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ;;
++
+ solaris*)
+ no_undefined_flag=' -z text'
+ if test "$GCC" = yes; then
+- wlarc='${wl}'
+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+- wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+@@ -8892,18 +7598,8 @@
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+- *)
+- # The compiler driver will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl, iff we do not link with $LD.
+- # Luckily, gcc supports the same syntax we need for Sun Studio.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- case $wlarc in
+- '')
+- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+- *)
+- whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+- esac ;;
++ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+@@ -8960,45 +7656,36 @@
+ fi
+ ;;
+
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+- no_undefined_flag='${wl}-z,text'
+- archive_cmds_need_lc=no
++ sysv4.2uw2*)
++ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct=yes
++ hardcode_minus_L=no
+ hardcode_shlibpath_var=no
+- runpath_var='LD_RUN_PATH'
++ hardcode_runpath_var=yes
++ runpath_var=LD_RUN_PATH
++ ;;
+
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
++ no_undefined_flag='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+- archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var=no
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- no_undefined_flag='${wl}-z,text'
+- allow_undefined_flag='${wl}-z,nodefs'
+- archive_cmds_need_lc=no
++ sysv5*)
++ no_undefined_flag=' -z text'
++ # $CC -shared without GNU ld will not create a library from C++
++ # object files and a static libstdc++, better avoid it by now
++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ hardcode_libdir_flag_spec=
+ hardcode_shlibpath_var=no
+- hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- hardcode_libdir_separator=':'
+- link_all_deplibs=yes
+- export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+-
+- if test "$GCC" = yes; then
+- archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- fi
+ ;;
+
+ uts4*)
+@@ -9013,10 +7700,15 @@
+ esac
+ fi
+
+-{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+-echo "${ECHO_T}$ld_shlibs" >&6; }
++echo "$as_me:$LINENO: result: $ld_shlibs" >&5
++echo "${ECHO_T}$ld_shlibs" >&6
+ test "$ld_shlibs" = no && can_build_shared=no
+
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
++
+ #
+ # Do we need to explicitly link libc?
+ #
+@@ -9034,8 +7726,8 @@
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+- { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+@@ -9049,7 +7741,6 @@
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+- pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+@@ -9072,16 +7763,16 @@
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+- { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+-echo "${ECHO_T}$archive_cmds_need_lc" >&6; }
++ echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
++echo "${ECHO_T}$archive_cmds_need_lc" >&6
+ ;;
+ esac
+ fi
+ ;;
+ esac
+
+-{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+ library_names_spec=
+ libname_spec='lib$name'
+ soname_spec=
+@@ -9182,7 +7873,7 @@
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+-bsdi[45]*)
++bsdi4*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -9210,8 +7901,7 @@
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
++ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+@@ -9241,7 +7931,7 @@
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+@@ -9264,7 +7954,7 @@
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+@@ -9287,17 +7977,20 @@
+ dynamic_linker=no
+ ;;
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[123]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+@@ -9315,19 +8008,14 @@
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+- freebsd3.[01]* | freebsdelf3.[01]*)
++ freebsd3.01* | freebsdelf3.01*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
++ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+ esac
+ ;;
+
+@@ -9347,7 +8035,7 @@
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+@@ -9387,18 +8075,6 @@
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+@@ -9442,7 +8118,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -9456,10 +8132,31 @@
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '#line 8139 "configure"' > conftest.$ac_ext
++ 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
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
++
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
++ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+@@ -9471,7 +8168,7 @@
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+-netbsdelf*-gnu)
++knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -9480,7 +8177,7 @@
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
++ dynamic_linker='GNU ld.so'
+ ;;
+
+ netbsd*)
+@@ -9520,13 +8217,8 @@
+
+ openbsd*)
+ version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
++ need_version=yes
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+@@ -9564,6 +8256,13 @@
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
+ solaris*)
+ version_type=linux
+ need_lib_prefix=no
+@@ -9589,7 +8288,7 @@
+ need_version=yes
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+@@ -9622,29 +8321,6 @@
+ fi
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
+- esac
+- fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
+-
+ uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -9656,21 +8332,16 @@
+ dynamic_linker=no
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+-echo "${ECHO_T}$dynamic_linker" >&6; }
++echo "$as_me:$LINENO: result: $dynamic_linker" >&5
++echo "${ECHO_T}$dynamic_linker" >&6
+ test "$dynamic_linker" = no && can_build_shared=no
+
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+-fi
+-
+-{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+ hardcode_action=
+ if test -n "$hardcode_libdir_flag_spec" || \
+- test -n "$runpath_var" || \
+- test "X$hardcode_automatic" = "Xyes" ; then
++ test -n "$runpath_var " || \
++ test "X$hardcode_automatic"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct" != no &&
+@@ -9690,8 +8361,8 @@
+ # directories.
+ hardcode_action=unsupported
+ fi
+-{ echo "$as_me:$LINENO: result: $hardcode_action" >&5
+-echo "${ECHO_T}$hardcode_action" >&6; }
++echo "$as_me:$LINENO: result: $hardcode_action" >&5
++echo "${ECHO_T}$hardcode_action" >&6
+
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+@@ -9704,29 +8375,29 @@
+
+ striplib=
+ old_striplib=
+-{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+ if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ else
+ # FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+- { echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6; }
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+ ;;
+ *)
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ ;;
+ esac
+ fi
+@@ -9758,8 +8429,8 @@
+
+ darwin*)
+ # if libdl is installed we need to link against it
+- { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+ if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9772,52 +8443,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ int
+ main ()
+ {
+-return dlopen ();
++dlopen ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -9826,15 +8485,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_dl_dlopen=no
++ac_cv_lib_dl_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+ if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+ else
+@@ -9848,8 +8506,8 @@
+ ;;
+
+ *)
+- { echo "$as_me:$LINENO: checking for shl_load" >&5
+-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for shl_load" >&5
++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+ if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9876,59 +8534,53 @@
+
+ #undef shl_load
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 shl_load ();
+ /* 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_shl_load || defined __stub___shl_load
++#if defined (__stub_shl_load) || defined (__stub___shl_load)
+ choke me
++#else
++char (*f) () = shl_load;
++#endif
++#ifdef __cplusplus
++}
+ #endif
+
+ int
+ main ()
+ {
+-return shl_load ();
++return f != shl_load;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -9937,19 +8589,18 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_func_shl_load=no
++ac_cv_func_shl_load=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+-echo "${ECHO_T}$ac_cv_func_shl_load" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
++echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+ if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+ else
+- { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+ if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9962,52 +8613,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 shl_load ();
+ int
+ main ()
+ {
+-return shl_load ();
++shl_load ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -10016,20 +8655,19 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_dld_shl_load=no
++ac_cv_lib_dld_shl_load=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+ if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+ else
+- { echo "$as_me:$LINENO: checking for dlopen" >&5
+-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dlopen" >&5
++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+ if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10056,59 +8694,53 @@
+
+ #undef dlopen
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ /* 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_dlopen || defined __stub___dlopen
++#if defined (__stub_dlopen) || defined (__stub___dlopen)
+ choke me
++#else
++char (*f) () = dlopen;
+ #endif
+-
++#ifdef __cplusplus
++}
++#endif
++
+ int
+ main ()
+ {
+-return dlopen ();
++return f != dlopen;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -10117,19 +8749,18 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_func_dlopen=no
++ac_cv_func_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_func_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
++echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+ if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+ else
+- { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+ if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10142,52 +8773,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ int
+ main ()
+ {
+-return dlopen ();
++dlopen ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -10196,20 +8815,19 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_dl_dlopen=no
++ac_cv_lib_dl_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+ if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+ else
+- { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+ if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10222,52 +8840,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dlopen ();
+ int
+ main ()
+ {
+-return dlopen ();
++dlopen ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -10276,20 +8882,19 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_svld_dlopen=no
++ac_cv_lib_svld_dlopen=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+ if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+ else
+- { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+ if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10302,52 +8907,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 dld_link ();
+ int
+ main ()
+ {
+-return dld_link ();
++dld_link ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -10356,15 +8949,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_dld_dld_link=no
++ac_cv_lib_dld_dld_link=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+ if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+ fi
+@@ -10399,13 +8991,13 @@
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+- { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+ if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10415,7 +9007,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 10418 "configure"
++#line 9010 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -10472,8 +9064,6 @@
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+- else
+- puts (dlerror ());
+
+ exit (status);
+ }
+@@ -10483,12 +9073,12 @@
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+- (./conftest; exit; ) >&5 2>/dev/null
++ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+- x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+@@ -10499,13 +9089,13 @@
+
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+-echo "${ECHO_T}$lt_cv_dlopen_self" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+- { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; }
++ LDFLAGS="$LDFLAGS $link_static_flag"
++ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+ if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10515,7 +9105,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 10518 "configure"
++#line 9108 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -10572,8 +9162,6 @@
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+- else
+- puts (dlerror ());
+
+ exit (status);
+ }
+@@ -10583,12 +9171,12 @@
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+- (./conftest; exit; ) >&5 2>/dev/null
++ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+- x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+@@ -10599,8 +9187,8 @@
+
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+@@ -10621,19 +9209,19 @@
+ fi
+
+
+-# Report which library types will actually be built
+-{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
+-{ echo "$as_me:$LINENO: result: $can_build_shared" >&5
+-echo "${ECHO_T}$can_build_shared" >&6; }
++# Report which librarie types wil actually be built
++echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
++echo "$as_me:$LINENO: result: $can_build_shared" >&5
++echo "${ECHO_T}$can_build_shared" >&6
+
+-{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+-case $host_os in
++case "$host_os" in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+@@ -10646,17 +9234,54 @@
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
++ ;;
++ darwin* | rhapsody*)
++ if test "$GCC" = yes; then
++ archive_cmds_need_lc=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ output_verbose_link_cmd='echo'
++ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
++ module_cmds='$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
++ archive_expsym_cmds='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}'
++ module_expsym_cmds='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}'
++ hardcode_direct=no
++ hardcode_automatic=yes
++ hardcode_shlibpath_var=unsupported
++ whole_archive_flag_spec='-all_load $convenience'
++ link_all_deplibs=yes
++ else
++ ld_shlibs=no
++ fi
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: result: $enable_shared" >&5
+-echo "${ECHO_T}$enable_shared" >&6; }
++echo "$as_me:$LINENO: result: $enable_shared" >&5
++echo "${ECHO_T}$enable_shared" >&6
+
+-{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether to build static libraries" >&5
++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+-{ echo "$as_me:$LINENO: result: $enable_static" >&5
+-echo "${ECHO_T}$enable_static" >&6; }
++echo "$as_me:$LINENO: result: $enable_static" >&5
++echo "${ECHO_T}$enable_static" >&6
+
+ # The else clause should only fire when bootstrapping the
+ # libtool distribution, otherwise you forgot to ship ltmain.sh
+@@ -10671,7 +9296,7 @@
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+@@ -10775,7 +9400,7 @@
+ #
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -10786,11 +9411,11 @@
+ SED=$lt_SED
+
+ # Sed that helps us avoid accidentally triggering echo(1) options like -n.
+-Xsed="$SED -e 1s/^X//"
++Xsed="$SED -e s/^X//"
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+ # The names of the tagged configurations supported by this script.
+ available_tags=
+@@ -10820,12 +9445,6 @@
+ # The host system.
+ host_alias=$host_alias
+ host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+
+ # An echo program that does not interpret backslashes.
+ echo=$lt_echo
+@@ -10837,9 +9456,6 @@
+ # A C compiler.
+ LTCC=$lt_LTCC
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+ # A language-specific compiler.
+ CC=$lt_compiler
+
+@@ -10905,7 +9521,7 @@
+ # Does compiler simultaneously support -c and -o options?
+ compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+-# Must we lock files when doing compilation?
++# Must we lock files when doing compilation ?
+ need_locks=$lt_need_locks
+
+ # Do we need the lib prefix for modules?
+@@ -11148,11 +9764,11 @@
+ CC="$lt_save_CC"
+
+
+-# Check whether --with-tags was given.
++# Check whether --with-tags or --without-tags was given.
+ if test "${with_tags+set}" = set; then
+- withval=$with_tags; tagnames="$withval"
+-fi
+-
++ withval="$with_tags"
++ tagnames="$withval"
++fi;
+
+ if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+@@ -11170,9 +9786,6 @@
+ echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+ fi
+ fi
+- if test -z "$LTCFLAGS"; then
+- eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+- fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+@@ -11203,10 +9816,8 @@
+
+ case $tagname in
+ CXX)
+- if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+- (test "X$CXX" != "Xg++"))) ; then
+- ac_ext=cpp
++ if test -n "$CXX" && test "X$CXX" != "Xno"; then
++ ac_ext=cc
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+@@ -11225,7 +9836,6 @@
+ hardcode_libdir_flag_spec_ld_CXX=
+ hardcode_libdir_separator_CXX=
+ hardcode_minus_L_CXX=no
+-hardcode_shlibpath_var_CXX=unsupported
+ hardcode_automatic_CXX=no
+ module_cmds_CXX=
+ module_expsym_cmds_CXX=
+@@ -11243,7 +9853,7 @@
+ compiler_lib_search_path_CXX=
+
+ # Source file extension for C++ test sources.
+-ac_ext=cpp
++ac_ext=cc
+
+ # Object file extension for compiled C++ test sources.
+ objext=o
+@@ -11253,34 +9863,17 @@
+ lt_simple_compile_test_code="int some_variable = 0;\n"
+
+ # Code to be used in simple link tests
+-lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
++lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_LD=$LD
+@@ -11291,27 +9884,18 @@
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+- $as_unset lt_cv_prog_gnu_ld
++ unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+- $as_unset lt_cv_path_LD
++ unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ compiler=$CC
+ compiler_CXX=$CC
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-
++cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+ # We don't want -fno-exception wen compiling C++ code, so set the
+ # no_builtin_flag separately
+@@ -11325,18 +9909,18 @@
+ # Set up default GNU C++ configuration
+
+
+-# Check whether --with-gnu-ld was given.
++# Check whether --with-gnu-ld or --without-gnu-ld was given.
+ if test "${with_gnu_ld+set}" = set; then
+- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
++ withval="$with_gnu_ld"
++ test "$withval" = no || with_gnu_ld=yes
+ else
+ with_gnu_ld=no
+-fi
+-
++fi;
+ ac_prog=ld
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+- { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+@@ -11365,11 +9949,11 @@
+ ;;
+ esac
+ elif test "$with_gnu_ld" = yes; then
+- { echo "$as_me:$LINENO: checking for GNU ld" >&5
+-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for GNU ld" >&5
++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+ else
+- { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+ fi
+ if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -11382,7 +9966,7 @@
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+- # but apparently some variants of GNU ld only accept -v.
++ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+@@ -11402,21 +9986,21 @@
+
+ LD="$lt_cv_path_LD"
+ if test -n "$LD"; then
+- { echo "$as_me:$LINENO: result: $LD" >&5
+-echo "${ECHO_T}$LD" >&6; }
++ echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+ test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+ echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+-{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+ if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- # I'd rather use --version here, but apparently some GNU lds only accept -v.
++ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+ case `$LD -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+@@ -11426,8 +10010,8 @@
+ ;;
+ esac
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+ with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+@@ -11477,8 +10061,8 @@
+ fi
+
+ # PORTME: fill in a description of your system's C++ link characteristics
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ ld_shlibs_CXX=yes
+ case $host_os in
+ aix3*)
+@@ -11507,7 +10091,6 @@
+ ;;
+ esac
+ done
+- ;;
+ esac
+
+ exp_sym_flag='-bexport'
+@@ -11526,7 +10109,7 @@
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes; then
+- case $host_os in aix4.[012]|aix4.[012].*)
++ case $host_os in aix4.012|aix4.012.*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+@@ -11545,12 +10128,8 @@
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ hardcode_libdir_separator_CXX=
+ fi
+- ;;
+ esac
+ shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+@@ -11590,36 +10169,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -11633,21 +10200,19 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+- archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_CXX="-z nodefs"
+- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
++ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -11666,36 +10231,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -11709,10 +10262,8 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+@@ -11721,26 +10272,16 @@
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_CXX=' ${wl}-bernotok'
+ allow_undefined_flag_CXX=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ always_export_symbols_CXX=yes
+ # Exported symbols can be pulled into shared objects from archives
+- whole_archive_flag_spec_CXX='$convenience'
++ whole_archive_flag_spec_CXX=' '
+ archive_cmds_need_lc_CXX=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+-
+- beos*)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- allow_undefined_flag_CXX=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- else
+- ld_shlibs_CXX=no
+- fi
+- ;;
+-
+ chorus*)
+ case $cc_basename in
+ *)
+@@ -11759,7 +10300,7 @@
+ enable_shared_with_static_runtimes_CXX=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -11768,81 +10309,70 @@
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+- darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[012])
+- allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[012])
+- allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
+- archive_cmds_need_lc_CXX=no
+- hardcode_direct_CXX=no
+- hardcode_automatic_CXX=yes
+- hardcode_shlibpath_var_CXX=unsupported
+- whole_archive_flag_spec_CXX=''
+- link_all_deplibs_CXX=yes
+
+- if test "$GXX" = yes ; then
+- lt_int_apple_cc_single_mod=no
+- output_verbose_link_cmd='echo'
+- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+- lt_int_apple_cc_single_mod=yes
+- fi
+- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+- archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- else
+- archive_cmds_CXX='$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'
+- fi
+- module_cmds_CXX='$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 lds
+- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+- archive_expsym_cmds_CXX='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}'
+- else
+- archive_expsym_cmds_CXX='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}'
+- fi
+- module_expsym_cmds_CXX='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}'
+- else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+- module_cmds_CXX='$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 lds
+- archive_expsym_cmds_CXX='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}'
+- module_expsym_cmds_CXX='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}'
+- ;;
+- *)
+- ld_shlibs_CXX=no
+- ;;
+- esac
++ darwin* | rhapsody*)
++ if test "$GXX" = yes; then
++ archive_cmds_need_lc_CXX=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag_CXX='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag_CXX='-undefined dynamic_lookup'
++ ;;
++ esac
+ fi
+- ;;
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ archive_cmds_CXX='$CC -r ${wl}-bind_at_load -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'
++ fi
++ module_cmds_CXX='$CC ${wl}-bind_at_load $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
++ archive_expsym_cmds_CXX='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}'
++ else
++ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ fi
++ module_expsym_cmds_CXX='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}'
++ hardcode_direct_CXX=no
++ hardcode_automatic_CXX=yes
++ hardcode_shlibpath_var_CXX=unsupported
++ whole_archive_flag_spec_CXX='-all_load $convenience'
++ link_all_deplibs_CXX=yes
++ else
++ ld_shlibs_CXX=no
++ fi
++ ;;
+
+ dgux*)
+ case $cc_basename in
+- ec++*)
++ ec++)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- ghcx*)
++ ghcx)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+@@ -11853,14 +10383,14 @@
+ ;;
+ esac
+ ;;
+- freebsd[12]*)
++ freebsd12*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ ld_shlibs_CXX=no
+ ;;
+ freebsd-elf*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ ld_shlibs_CXX=yes
+@@ -11877,11 +10407,11 @@
+ # location of the library.
+
+ case $cc_basename in
+- CC*)
++ CC)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- aCC*)
++ aCC)
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+@@ -11891,7 +10421,7 @@
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+@@ -11905,22 +10435,33 @@
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_CXX=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
++ hardcode_libdir_separator_CXX=:
++ ;;
++ ia64*)
++ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ ;;
+ *)
++ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ ;;
+ esac
+ fi
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_direct_CXX=no
++ hardcode_shlibpath_var_CXX=no
++ ;;
++ ia64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
++ hardcode_minus_L_CXX=yes # Not in the search PATH,
++ # but as the default
++ # location of the library.
+ ;;
+ *)
+ hardcode_direct_CXX=yes
+@@ -11931,17 +10472,14 @@
+ esac
+
+ case $cc_basename in
+- CC*)
++ CC)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- aCC*)
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ aCC)
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+@@ -11960,12 +10498,9 @@
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ case "$host_cpu" in
++ ia64*|hppa*64*)
++ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+@@ -11979,25 +10514,11 @@
+ ;;
+ esac
+ ;;
+- interix3*)
+- hardcode_direct_CXX=no
+- hardcode_shlibpath_var_CXX=no
+- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_CXX='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+ irix5* | irix6*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # SGI C++
+- archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+@@ -12008,7 +10529,7 @@
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+ else
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+@@ -12019,9 +10540,9 @@
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ ;;
+- linux* | k*bsd*-gnu)
++ linux*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -12046,41 +10567,17 @@
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+- icpc*)
++ icpc)
+ # Intel C++
+ with_gnu_ld=yes
+- # version 8.0 and above of icpc choke on multiply defined symbols
+- # if we add $predep_objects and $postdep_objects, however 7.1 and
+- # earlier do not add the objects themselves.
+- case `$CC -V 2>&1` in
+- *"Version 7."*)
+- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- *) # Version 8.0 or newer
+- tmp_idyn=
+- case $host_cpu in
+- ia64*) tmp_idyn=' -i_dynamic';;
+- esac
+- archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- ;;
+- esac
+ archive_cmds_need_lc_CXX=no
++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+- pgCC*)
+- # Portland Group C++ compiler
+- archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+-
+- hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+- export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+- whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- ;;
+- cxx*)
++ cxx)
+ # Compaq C++
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+@@ -12111,7 +10608,7 @@
+ ;;
+ mvs*)
+ case $cc_basename in
+- cxx*)
++ cxx)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+@@ -12121,7 +10618,7 @@
+ ;;
+ esac
+ ;;
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+@@ -12132,25 +10629,9 @@
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+- openbsd2*)
+- # C++ shared libraries are fairly broken
+- ld_shlibs_CXX=no
+- ;;
+- openbsd*)
+- hardcode_direct_CXX=yes
+- hardcode_shlibpath_var_CXX=no
+- archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+- export_dynamic_flag_spec_CXX='${wl}-E'
+- whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- fi
+- output_verbose_link_cmd='echo'
+- ;;
+ osf3*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -12166,14 +10647,14 @@
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- cxx*)
++ cxx)
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+@@ -12191,7 +10672,7 @@
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+@@ -12210,7 +10691,7 @@
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+@@ -12225,17 +10706,17 @@
+ # the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- cxx*)
++ cxx)
+ allow_undefined_flag_CXX=' -expect_unresolved \*'
+- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+ archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
++ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
+ $rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+@@ -12254,7 +10735,7 @@
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+@@ -12275,14 +10756,27 @@
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
++ sco*)
++ archive_cmds_need_lc_CXX=no
++ case $cc_basename in
++ CC)
++ # FIXME: insert proper C++ library support
++ ld_shlibs_CXX=no
++ ;;
++ *)
++ # FIXME: insert proper C++ library support
++ ld_shlibs_CXX=no
++ ;;
++ esac
++ ;;
+ sunos4*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+- lcc*)
++ lcc)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+@@ -12295,33 +10789,36 @@
+ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+- archive_cmds_need_lc_CXX=yes
+ no_undefined_flag_CXX=' -zdefs'
+- archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
++ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_shlibpath_var_CXX=no
+ case $host_os in
+- solaris2.[0-5] | solaris2.[0-5].*) ;;
++ solaris2.0-5 | solaris2.0-5.*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+- # linker. We must also pass each convience library through
+- # to the system linker between allextract/defaultextract.
+- # The C++ compiler will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl.
++ # linker.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+- whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
++ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ link_all_deplibs_CXX=yes
+
+- output_verbose_link_cmd='echo'
++ # Commands to make compiler produce verbose output that lists
++ # what "hidden" libraries, object files and flags are used when
++ # linking a shared library.
++ #
++ # There doesn't appear to be a way to prevent this compiler from
++ # explicitly linking system object files so we need to strip them
++ # from the output so that they don't get included in the library
++ # dependencies.
++ output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+@@ -12329,7 +10826,7 @@
+ # in the archive.
+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+ ;;
+- gcx*)
++ gcx)
+ # Green Hills C++ Compiler
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+@@ -12367,63 +10864,12 @@
+ ;;
+ esac
+ ;;
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+- no_undefined_flag_CXX='${wl}-z,text'
+- archive_cmds_need_lc_CXX=no
+- hardcode_shlibpath_var_CXX=no
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- ;;
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- # For security reasons, it is highly recommended that you always
+- # use absolute paths for naming shared libraries, and exclude the
+- # DT_RUNPATH tag from executables and libraries. But doing so
+- # requires that you compile everything twice, which is a pain.
+- # So that behaviour is only enabled if SCOABSPATH is set to a
+- # non-empty value in the environment. Most likely only useful for
+- # creating official distributions of packages.
+- # This is a hack until libtool officially supports absolute path
+- # names for shared libraries.
+- no_undefined_flag_CXX='${wl}-z,text'
+- allow_undefined_flag_CXX='${wl}-z,nodefs'
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ archive_cmds_need_lc_CXX=no
+- hardcode_shlibpath_var_CXX=no
+- hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- hardcode_libdir_separator_CXX=':'
+- link_all_deplibs_CXX=yes
+- export_dynamic_flag_spec_CXX='${wl}-Bexport'
+- runpath_var='LD_RUN_PATH'
+-
+- case $cc_basename in
+- CC*)
+- archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+ ;;
+ tandem*)
+ case $cc_basename in
+- NCC*)
++ NCC)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+@@ -12443,8 +10889,8 @@
+ ld_shlibs_CXX=no
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+-echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
++echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
++echo "${ECHO_T}$ld_shlibs_CXX" >&6
+ test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+ GCC_CXX="$GXX"
+@@ -12476,7 +10922,7 @@
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+- output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
++ output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+@@ -12552,29 +10998,6 @@
+
+ $rm -f confest.$objext
+
+-# PORTME: override above test on systems where it is broken
+-case $host_os in
+-interix3*)
+- # Interix 3.5 installs completely hosed .la files for C++, so rather than
+- # hack all around it, let's just trust "g++" to DTRT.
+- predep_objects_CXX=
+- postdep_objects_CXX=
+- postdeps_CXX=
+- ;;
+-
+-solaris*)
+- case $cc_basename in
+- CC*)
+- # Adding this requires a known-good setup of shared libraries for
+- # Sun compiler versions before 5.6, else PIC objects from an old
+- # archive will be linked into the output, leading to subtle bugs.
+- postdeps_CXX='-lCstd -lCrun'
+- ;;
+- esac
+- ;;
+-esac
+-
+-
+ case " $postdeps_CXX " in
+ *" -lc "*) archive_cmds_need_lc_CXX=no ;;
+ esac
+@@ -12583,8 +11006,8 @@
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX=
+
+-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+@@ -12622,10 +11045,6 @@
+ # DJGPP does not support shared libraries at all
+ lt_prog_compiler_pic_CXX=
+ ;;
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_CXX=-Kconform_pic
+@@ -12634,7 +11053,7 @@
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ ;;
+ *)
+@@ -12659,28 +11078,18 @@
+ ;;
+ chorus*)
+ case $cc_basename in
+- cxch68*)
++ cxch68)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- lt_prog_compiler_pic_CXX='-qnocommon'
+- lt_prog_compiler_wl_CXX='-Wl,'
+- ;;
+- esac
+- ;;
+ dgux*)
+ case $cc_basename in
+- ec++*)
++ ec++)
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+- ghcx*)
++ ghcx)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+@@ -12688,22 +11097,22 @@
+ ;;
+ esac
+ ;;
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+- CC*)
++ CC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+- lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
++ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ lt_prog_compiler_pic_CXX='+Z'
+ fi
+ ;;
+- aCC*)
++ aCC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+- lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+- case $host_cpu in
++ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -12716,13 +11125,9 @@
+ ;;
+ esac
+ ;;
+- interix*)
+- # This is c89, which is MS Visual C++ (no shared libs)
+- # Anyone wants to do a port?
+- ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+- CC*)
++ CC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-non_shared'
+ # CC pic flag -KPIC is the default.
+@@ -12731,26 +11136,20 @@
+ ;;
+ esac
+ ;;
+- linux* | k*bsd*-gnu)
++ linux*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ # KAI C++ Compiler
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+- icpc* | ecpc*)
++ icpc)
+ # Intel C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+- pgCC*)
+- # Portland Group C++ compiler.
+- lt_prog_compiler_wl_CXX='-Wl,'
+- lt_prog_compiler_pic_CXX='-fpic'
+- lt_prog_compiler_static_CXX='-Bstatic'
+- ;;
+- cxx*)
++ cxx)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+@@ -12767,25 +11166,25 @@
+ ;;
+ mvs*)
+ case $cc_basename in
+- cxx*)
++ cxx)
+ lt_prog_compiler_pic_CXX='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+- KCC*)
++ KCC)
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ ;;
+- RCC*)
++ RCC)
+ # Rational C++ 2.4.1
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+- cxx*)
++ cxx)
+ # Digital/Compaq C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+@@ -12799,15 +11198,24 @@
+ ;;
+ psos*)
+ ;;
++ sco*)
++ case $cc_basename in
++ CC)
++ lt_prog_compiler_pic_CXX='-fPIC'
++ ;;
++ *)
++ ;;
++ esac
++ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ lt_prog_compiler_wl_CXX='-Qoption ld '
+ ;;
+- gcx*)
++ gcx)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-PIC'
+ ;;
+@@ -12817,12 +11225,12 @@
+ ;;
+ sunos4*)
+ case $cc_basename in
+- CC*)
++ CC)
+ # Sun C++ 4.x
+ lt_prog_compiler_pic_CXX='-pic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+- lcc*)
++ lcc)
+ # Lucid
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+@@ -12832,7 +11240,7 @@
+ ;;
+ tandem*)
+ case $cc_basename in
+- NCC*)
++ NCC)
+ # NonStop-UX NCC 3.20
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+@@ -12840,14 +11248,7 @@
+ ;;
+ esac
+ ;;
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- case $cc_basename in
+- CC*)
+- lt_prog_compiler_wl_CXX='-Wl,'
+- lt_prog_compiler_pic_CXX='-KPIC'
+- lt_prog_compiler_static_CXX='-Bstatic'
+- ;;
+- esac
++ unixware*)
+ ;;
+ vxworks*)
+ ;;
+@@ -12857,16 +11258,16 @@
+ esac
+ fi
+
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+ #
+ # Check to make sure the PIC flag actually works.
+ #
+ if test -n "$lt_prog_compiler_pic_CXX"; then
+
+-{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+ if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12880,28 +11281,26 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:12886: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:11287: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:12890: \$? = $ac_status" >&5
++ echo "$as_me:11291: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+ if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+ case $lt_prog_compiler_pic_CXX in
+@@ -12914,7 +11313,7 @@
+ fi
+
+ fi
+-case $host_os in
++case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_CXX=
+@@ -12924,50 +11323,8 @@
+ ;;
+ esac
+
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_static_works_CXX=no
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_static_works_CXX=yes
+- fi
+- else
+- lt_prog_compiler_static_works_CXX=yes
+- fi
+- fi
+- $rm conftest*
+- LDFLAGS="$save_LDFLAGS"
+-
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
+-echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; }
+-
+-if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
+- :
+-else
+- lt_prog_compiler_static_CXX=
+-fi
+-
+-
+-{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+ if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12984,25 +11341,23 @@
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:12990: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:11347: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:12994: \$? = $ac_status" >&5
++ echo "$as_me:11351: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
++ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o_CXX=yes
+ fi
+ fi
+- chmod u+w . 2>&5
++ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+@@ -13013,23 +11368,23 @@
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+ hard_links="nottested"
+ if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+- { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- { echo "$as_me:$LINENO: result: $hard_links" >&5
+-echo "${ECHO_T}$hard_links" >&6; }
++ echo "$as_me:$LINENO: result: $hard_links" >&5
++echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+ echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+@@ -13039,8 +11394,8 @@
+ need_locks=no
+ fi
+
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+@@ -13057,20 +11412,22 @@
+ export_symbols_cmds_CXX="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
+- linux* | k*bsd*-gnu)
+- link_all_deplibs_CXX=no
++ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+
+-{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+-echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
++echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
++echo "${ECHO_T}$ld_shlibs_CXX" >&6
+ test "$ld_shlibs_CXX" = no && can_build_shared=no
+
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
++
+ #
+ # Do we need to explicitly link libc?
+ #
+@@ -13088,8 +11445,8 @@
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+- { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+@@ -13103,7 +11460,6 @@
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_CXX
+- pic_flag=$lt_prog_compiler_pic_CXX
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+@@ -13126,16 +11482,16 @@
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+- { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+-echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; }
++ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
++echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+ ;;
+ esac
+ fi
+ ;;
+ esac
+
+-{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+ library_names_spec=
+ libname_spec='lib$name'
+ soname_spec=
+@@ -13236,7 +11592,7 @@
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+-bsdi[45]*)
++bsdi4*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -13264,8 +11620,7 @@
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
++ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+@@ -13295,7 +11650,7 @@
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+@@ -13318,7 +11673,7 @@
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+@@ -13341,17 +11696,20 @@
+ dynamic_linker=no
+ ;;
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[123]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+@@ -13369,19 +11727,14 @@
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+- freebsd3.[01]* | freebsdelf3.[01]*)
++ freebsd3.01* | freebsdelf3.01*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
++ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+ esac
+ ;;
+
+@@ -13401,7 +11754,7 @@
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+- case $host_cpu in
++ case "$host_cpu" in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+@@ -13441,18 +11794,6 @@
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+-
+ irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+@@ -13496,7 +11837,7 @@
+ ;;
+
+ # This must be Linux ELF.
+-linux* | k*bsd*-gnu)
++linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -13510,10 +11851,31 @@
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '#line 11858 "configure"' > conftest.$ac_ext
++ 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
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
++
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
++ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+@@ -13525,7 +11887,7 @@
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+-netbsdelf*-gnu)
++knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+@@ -13534,7 +11896,7 @@
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
++ dynamic_linker='GNU ld.so'
+ ;;
+
+ netbsd*)
+@@ -13574,13 +11936,8 @@
+
+ openbsd*)
+ version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
++ need_version=yes
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+@@ -13618,6 +11975,13 @@
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
+ solaris*)
+ version_type=linux
+ need_lib_prefix=no
+@@ -13643,7 +12007,7 @@
+ need_version=yes
+ ;;
+
+-sysv4 | sysv4.3*)
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+@@ -13676,29 +12040,6 @@
+ fi
+ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
+- esac
+- fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
+-
+ uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -13710,21 +12051,16 @@
+ dynamic_linker=no
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+-echo "${ECHO_T}$dynamic_linker" >&6; }
++echo "$as_me:$LINENO: result: $dynamic_linker" >&5
++echo "${ECHO_T}$dynamic_linker" >&6
+ test "$dynamic_linker" = no && can_build_shared=no
+
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+-fi
+-
+-{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+ hardcode_action_CXX=
+ if test -n "$hardcode_libdir_flag_spec_CXX" || \
+- test -n "$runpath_var_CXX" || \
+- test "X$hardcode_automatic_CXX" = "Xyes" ; then
++ test -n "$runpath_var CXX" || \
++ test "X$hardcode_automatic_CXX"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_CXX" != no &&
+@@ -13744,8 +12080,8 @@
+ # directories.
+ hardcode_action_CXX=unsupported
+ fi
+-{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+-echo "${ECHO_T}$hardcode_action_CXX" >&6; }
++echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
++echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+ if test "$hardcode_action_CXX" = relink; then
+ # Fast installation is not supported
+@@ -13756,2838 +12092,3425 @@
+ enable_fast_install=needless
+ fi
+
+-
+-# The else clause should only fire when bootstrapping the
+-# libtool distribution, otherwise you forgot to ship ltmain.sh
+-# with your package, and you will get complaints that there are
+-# no rules to generate ltmain.sh.
+-if test -f "$ltmain"; then
+- # See if we are running on zsh, and set the options which allow our commands through
+- # without removal of \ escapes.
+- if test -n "${ZSH_VERSION+set}" ; then
+- setopt NO_GLOB_SUBST
+- fi
+- # Now quote all the things that may contain metacharacters while being
+- # careful not to overquote the AC_SUBSTed values. We take copies of the
+- # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+- SED SHELL STRIP \
+- libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+- old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+- deplibs_check_method reload_flag reload_cmds need_locks \
+- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+- lt_cv_sys_global_symbol_to_c_name_address \
+- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+- old_postinstall_cmds old_postuninstall_cmds \
+- compiler_CXX \
+- CC_CXX \
+- LD_CXX \
+- lt_prog_compiler_wl_CXX \
+- lt_prog_compiler_pic_CXX \
+- lt_prog_compiler_static_CXX \
+- lt_prog_compiler_no_builtin_flag_CXX \
+- export_dynamic_flag_spec_CXX \
+- thread_safe_flag_spec_CXX \
+- whole_archive_flag_spec_CXX \
+- enable_shared_with_static_runtimes_CXX \
+- old_archive_cmds_CXX \
+- old_archive_from_new_cmds_CXX \
+- predep_objects_CXX \
+- postdep_objects_CXX \
+- predeps_CXX \
+- postdeps_CXX \
+- compiler_lib_search_path_CXX \
+- archive_cmds_CXX \
+- archive_expsym_cmds_CXX \
+- postinstall_cmds_CXX \
+- postuninstall_cmds_CXX \
+- old_archive_from_expsyms_cmds_CXX \
+- allow_undefined_flag_CXX \
+- no_undefined_flag_CXX \
+- export_symbols_cmds_CXX \
+- hardcode_libdir_flag_spec_CXX \
+- hardcode_libdir_flag_spec_ld_CXX \
+- hardcode_libdir_separator_CXX \
+- hardcode_automatic_CXX \
+- module_cmds_CXX \
+- module_expsym_cmds_CXX \
+- lt_cv_prog_compiler_c_o_CXX \
+- exclude_expsyms_CXX \
+- include_expsyms_CXX; do
+-
+- case $var in
+- old_archive_cmds_CXX | \
+- old_archive_from_new_cmds_CXX | \
+- archive_cmds_CXX | \
+- archive_expsym_cmds_CXX | \
+- module_cmds_CXX | \
+- module_expsym_cmds_CXX | \
+- old_archive_from_expsyms_cmds_CXX | \
+- export_symbols_cmds_CXX | \
+- extract_expsyms_cmds | reload_cmds | finish_cmds | \
+- postinstall_cmds | postuninstall_cmds | \
+- old_postinstall_cmds | old_postuninstall_cmds | \
+- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+- # Double-quote double-evaled strings.
+- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+- ;;
+- *)
+- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+- ;;
+- esac
+- done
+-
+- case $lt_echo in
+- *'\$0 --fallback-echo"')
+- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
++striplib=
++old_striplib=
++echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
++ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++else
++# FIXME - insert some real tests, host_os isn't really good enough
++ case $host_os in
++ darwin*)
++ if test -n "$STRIP" ; then
++ striplib="$STRIP -x"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++ ;;
++ *)
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ ;;
+ esac
++fi
+
+-cfgfile="$ofile"
++if test "x$enable_dlopen" != xyes; then
++ enable_dlopen=unknown
++ enable_dlopen_self=unknown
++ enable_dlopen_self_static=unknown
++else
++ lt_cv_dlopen=no
++ lt_cv_dlopen_libs=
+
+- cat <<__EOF__ >> "$cfgfile"
+-# ### BEGIN LIBTOOL TAG CONFIG: $tagname
++ case $host_os in
++ beos*)
++ lt_cv_dlopen="load_add_on"
++ lt_cv_dlopen_libs=
++ lt_cv_dlopen_self=yes
++ ;;
+
+-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
++ mingw* | pw32*)
++ lt_cv_dlopen="LoadLibrary"
++ lt_cv_dlopen_libs=
++ ;;
+
+-# Shell to use when invoking shell scripts.
+-SHELL=$lt_SHELL
++ cygwin*)
++ lt_cv_dlopen="dlopen"
++ lt_cv_dlopen_libs=
++ ;;
+
+-# Whether or not to build shared libraries.
+-build_libtool_libs=$enable_shared
++ darwin*)
++ # if libdl is installed we need to link against it
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
++if test "${ac_cv_lib_dl_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldl $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# Whether or not to build static libraries.
+-build_old_libs=$enable_static
++/* 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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dl_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Whether or not to add -lc for building shared libraries.
+-build_libtool_need_lc=$archive_cmds_need_lc_CXX
++ac_cv_lib_dl_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
++if test $ac_cv_lib_dl_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
++else
+
+-# Whether or not to disallow shared libs when runtime libs are static
+-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
++ lt_cv_dlopen="dyld"
++ lt_cv_dlopen_libs=
++ lt_cv_dlopen_self=yes
+
+-# Whether or not to optimize for fast installation.
+-fast_install=$enable_fast_install
++fi
+
+-# The host system.
+-host_alias=$host_alias
+-host=$host
+-host_os=$host_os
++ ;;
+
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
++ *)
++ echo "$as_me:$LINENO: checking for shl_load" >&5
++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
++if test "${ac_cv_func_shl_load+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define shl_load innocuous_shl_load
+
+-# An echo program that does not interpret backslashes.
+-echo=$lt_echo
+-
+-# The archiver.
+-AR=$lt_AR
+-AR_FLAGS=$lt_AR_FLAGS
+-
+-# A C compiler.
+-LTCC=$lt_LTCC
+-
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+-# A language-specific compiler.
+-CC=$lt_compiler_CXX
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char shl_load (); below.
++ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ <limits.h> exists even on freestanding compilers. */
+
+-# Is the compiler the GNU C compiler?
+-with_gcc=$GCC_CXX
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
+
+-# An ERE matcher.
+-EGREP=$lt_EGREP
++#undef shl_load
+
+-# The linker used to build libraries.
+-LD=$lt_LD_CXX
++/* 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 shl_load ();
++/* 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_shl_load) || defined (__stub___shl_load)
++choke me
++#else
++char (*f) () = shl_load;
++#endif
++#ifdef __cplusplus
++}
++#endif
+
+-# Whether we need hard or soft links.
+-LN_S=$lt_LN_S
++int
++main ()
++{
++return f != shl_load;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_shl_load=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# A BSD-compatible nm program.
+-NM=$lt_NM
++ac_cv_func_shl_load=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
++echo "${ECHO_T}$ac_cv_func_shl_load" >&6
++if test $ac_cv_func_shl_load = yes; then
++ lt_cv_dlopen="shl_load"
++else
++ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
++if test "${ac_cv_lib_dld_shl_load+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# A symbol stripping program
+-STRIP=$lt_STRIP
++/* 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 shl_load ();
++int
++main ()
++{
++shl_load ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dld_shl_load=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Used to examine libraries when file_magic_cmd begins "file"
+-MAGIC_CMD=$MAGIC_CMD
++ac_cv_lib_dld_shl_load=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
++if test $ac_cv_lib_dld_shl_load = yes; then
++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
++else
++ echo "$as_me:$LINENO: checking for dlopen" >&5
++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
++if test "${ac_cv_func_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define dlopen innocuous_dlopen
+
+-# Used on cygwin: DLL creation program.
+-DLLTOOL="$DLLTOOL"
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char dlopen (); below.
++ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ <limits.h> exists even on freestanding compilers. */
+
+-# Used on cygwin: object dumper.
+-OBJDUMP="$OBJDUMP"
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
+
+-# Used on cygwin: assembler.
+-AS="$AS"
++#undef dlopen
+
+-# The name of the directory that contains temporary libtool files.
+-objdir=$objdir
++/* 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 dlopen ();
++/* 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_dlopen) || defined (__stub___dlopen)
++choke me
++#else
++char (*f) () = dlopen;
++#endif
++#ifdef __cplusplus
++}
++#endif
+
+-# How to create reloadable object files.
+-reload_flag=$lt_reload_flag
+-reload_cmds=$lt_reload_cmds
++int
++main ()
++{
++return f != dlopen;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl_CXX
++ac_cv_func_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
++echo "${ECHO_T}$ac_cv_func_dlopen" >&6
++if test $ac_cv_func_dlopen = yes; then
++ lt_cv_dlopen="dlopen"
++else
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
++if test "${ac_cv_lib_dl_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldl $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# Object file suffix (normally "o").
+-objext="$ac_objext"
++/* 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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dl_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Old archive suffix (normally "a").
+-libext="$libext"
+-
+-# Shared library suffix (normally ".so").
+-shrext_cmds='$shrext_cmds'
+-
+-# Executable file suffix (normally "").
+-exeext="$exeext"
+-
+-# Additional compiler flags for building library objects.
+-pic_flag=$lt_lt_prog_compiler_pic_CXX
+-pic_mode=$pic_mode
++ac_cv_lib_dl_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
++if test $ac_cv_lib_dl_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
++else
++ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
++if test "${ac_cv_lib_svld_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-lsvld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# What is the maximum length of a command?
+-max_cmd_len=$lt_cv_sys_max_cmd_len
++/* 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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_svld_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Does compiler simultaneously support -c and -o options?
+-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
++ac_cv_lib_svld_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
++if test $ac_cv_lib_svld_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
++else
++ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
++if test "${ac_cv_lib_dld_dld_link+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-# Must we lock files when doing compilation?
+-need_locks=$lt_need_locks
++/* 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 dld_link ();
++int
++main ()
++{
++dld_link ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_cxx_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dld_dld_link=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-# Do we need the lib prefix for modules?
+-need_lib_prefix=$need_lib_prefix
++ac_cv_lib_dld_dld_link=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
++if test $ac_cv_lib_dld_dld_link = yes; then
++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
++fi
+
+-# Do we need a version for libraries?
+-need_version=$need_version
+
+-# Whether dlopen is supported.
+-dlopen_support=$enable_dlopen
++fi
+
+-# Whether dlopen of programs is supported.
+-dlopen_self=$enable_dlopen_self
+
+-# Whether dlopen of statically linked programs is supported.
+-dlopen_self_static=$enable_dlopen_self_static
++fi
+
+-# Compiler flag to prevent dynamic linking.
+-link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+-# Compiler flag to turn off builtin functions.
+-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
++fi
+
+-# Compiler flag to allow reflexive dlopens.
+-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+-# Compiler flag to generate shared objects directly from archives.
+-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
++fi
+
+-# Compiler flag to generate thread-safe objects.
+-thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+-# Library versioning type.
+-version_type=$version_type
++fi
+
+-# Format of library name prefix.
+-libname_spec=$lt_libname_spec
++ ;;
++ esac
+
+-# List of archive names. First name is the real one, the rest are links.
+-# The last name is the one that the linker finds with -lNAME.
+-library_names_spec=$lt_library_names_spec
++ if test "x$lt_cv_dlopen" != xno; then
++ enable_dlopen=yes
++ else
++ enable_dlopen=no
++ fi
+
+-# The coded name of the library, if different from the real name.
+-soname_spec=$lt_soname_spec
++ case $lt_cv_dlopen in
++ dlopen)
++ save_CPPFLAGS="$CPPFLAGS"
++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+-# Commands used to build and install an old-style archive.
+-RANLIB=$lt_RANLIB
+-old_archive_cmds=$lt_old_archive_cmds_CXX
+-old_postinstall_cmds=$lt_old_postinstall_cmds
+-old_postuninstall_cmds=$lt_old_postuninstall_cmds
++ save_LDFLAGS="$LDFLAGS"
++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+-# Create an old-style archive from a shared archive.
+-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
++ save_LIBS="$LIBS"
++ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+-# Create a temporary old-style archive to link instead of a shared archive.
+-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
++ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
++if test "${lt_cv_dlopen_self+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test "$cross_compiling" = yes; then :
++ lt_cv_dlopen_self=cross
++else
++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
++ lt_status=$lt_dlunknown
++ cat > conftest.$ac_ext <<EOF
++#line 12729 "configure"
++#include "confdefs.h"
+
+-# Commands used to build and install a shared archive.
+-archive_cmds=$lt_archive_cmds_CXX
+-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+-postinstall_cmds=$lt_postinstall_cmds
+-postuninstall_cmds=$lt_postuninstall_cmds
++#if HAVE_DLFCN_H
++#include <dlfcn.h>
++#endif
+
+-# Commands used to build a loadable module (assumed same as above if empty)
+-module_cmds=$lt_module_cmds_CXX
+-module_expsym_cmds=$lt_module_expsym_cmds_CXX
++#include <stdio.h>
+
+-# Commands to strip libraries.
+-old_striplib=$lt_old_striplib
+-striplib=$lt_striplib
++#ifdef RTLD_GLOBAL
++# define LT_DLGLOBAL RTLD_GLOBAL
++#else
++# ifdef DL_GLOBAL
++# define LT_DLGLOBAL DL_GLOBAL
++# else
++# define LT_DLGLOBAL 0
++# endif
++#endif
+
+-# Dependencies to place before the objects being linked to create a
+-# shared library.
+-predep_objects=$lt_predep_objects_CXX
++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
++ find out it does not work in some platform. */
++#ifndef LT_DLLAZY_OR_NOW
++# ifdef RTLD_LAZY
++# define LT_DLLAZY_OR_NOW RTLD_LAZY
++# else
++# ifdef DL_LAZY
++# define LT_DLLAZY_OR_NOW DL_LAZY
++# else
++# ifdef RTLD_NOW
++# define LT_DLLAZY_OR_NOW RTLD_NOW
++# else
++# ifdef DL_NOW
++# define LT_DLLAZY_OR_NOW DL_NOW
++# else
++# define LT_DLLAZY_OR_NOW 0
++# endif
++# endif
++# endif
++# endif
++#endif
+
+-# Dependencies to place after the objects being linked to create a
+-# shared library.
+-postdep_objects=$lt_postdep_objects_CXX
++#ifdef __cplusplus
++extern "C" void exit (int);
++#endif
+
+-# Dependencies to place before the objects being linked to create a
+-# shared library.
+-predeps=$lt_predeps_CXX
++void fnord() { int i=42;}
++int main ()
++{
++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
++ int status = $lt_dlunknown;
+
+-# Dependencies to place after the objects being linked to create a
+-# shared library.
+-postdeps=$lt_postdeps_CXX
++ if (self)
++ {
++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
++ /* dlclose (self); */
++ }
+
+-# The library search path used internally by the compiler when linking
+-# a shared library.
+-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
++ exit (status);
++}
++EOF
++ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
++ (./conftest; exit; ) 2>/dev/null
++ lt_status=$?
++ case x$lt_status in
++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
++ esac
++ else :
++ # compilation failed
++ lt_cv_dlopen_self=no
++ fi
++fi
++rm -fr conftest*
+
+-# Method to check whether dependent libraries are shared objects.
+-deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == file_magic.
+-file_magic_cmd=$lt_file_magic_cmd
++fi
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+-# Flag that allows shared libraries with undefined symbols to be built.
+-allow_undefined_flag=$lt_allow_undefined_flag_CXX
++ if test "x$lt_cv_dlopen_self" = xyes; then
++ LDFLAGS="$LDFLAGS $link_static_flag"
++ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
++if test "${lt_cv_dlopen_self_static+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test "$cross_compiling" = yes; then :
++ lt_cv_dlopen_self_static=cross
++else
++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
++ lt_status=$lt_dlunknown
++ cat > conftest.$ac_ext <<EOF
++#line 12827 "configure"
++#include "confdefs.h"
+
+-# Flag that forces no undefined symbols.
+-no_undefined_flag=$lt_no_undefined_flag_CXX
++#if HAVE_DLFCN_H
++#include <dlfcn.h>
++#endif
+
+-# Commands used to finish a libtool library installation in a directory.
+-finish_cmds=$lt_finish_cmds
++#include <stdio.h>
+
+-# Same as above, but a single script fragment to be evaled but not shown.
+-finish_eval=$lt_finish_eval
++#ifdef RTLD_GLOBAL
++# define LT_DLGLOBAL RTLD_GLOBAL
++#else
++# ifdef DL_GLOBAL
++# define LT_DLGLOBAL DL_GLOBAL
++# else
++# define LT_DLGLOBAL 0
++# endif
++#endif
+
+-# Take the output of nm and produce a listing of raw symbols and C names.
+-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
++ find out it does not work in some platform. */
++#ifndef LT_DLLAZY_OR_NOW
++# ifdef RTLD_LAZY
++# define LT_DLLAZY_OR_NOW RTLD_LAZY
++# else
++# ifdef DL_LAZY
++# define LT_DLLAZY_OR_NOW DL_LAZY
++# else
++# ifdef RTLD_NOW
++# define LT_DLLAZY_OR_NOW RTLD_NOW
++# else
++# ifdef DL_NOW
++# define LT_DLLAZY_OR_NOW DL_NOW
++# else
++# define LT_DLLAZY_OR_NOW 0
++# endif
++# endif
++# endif
++# endif
++#endif
+
+-# Transform the output of nm in a proper C declaration
+-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
++#ifdef __cplusplus
++extern "C" void exit (int);
++#endif
+
+-# Transform the output of nm in a C name address pair
+-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
++void fnord() { int i=42;}
++int main ()
++{
++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
++ int status = $lt_dlunknown;
+
+-# This is the shared library runtime path variable.
+-runpath_var=$runpath_var
++ if (self)
++ {
++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
++ /* dlclose (self); */
++ }
+
+-# This is the shared library path variable.
+-shlibpath_var=$shlibpath_var
++ exit (status);
++}
++EOF
++ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
++ (./conftest; exit; ) 2>/dev/null
++ lt_status=$?
++ case x$lt_status in
++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
++ esac
++ else :
++ # compilation failed
++ lt_cv_dlopen_self_static=no
++ fi
++fi
++rm -fr conftest*
+
+-# Is shlibpath searched before the hard-coded library search path?
+-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+-# How to hardcode a shared library path into an executable.
+-hardcode_action=$hardcode_action_CXX
++fi
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
++ fi
+
+-# Whether we should hardcode library paths into libraries.
+-hardcode_into_libs=$hardcode_into_libs
++ CPPFLAGS="$save_CPPFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++ LIBS="$save_LIBS"
++ ;;
++ esac
+
+-# Flag to hardcode \$libdir into a binary during linking.
+-# This must work even if \$libdir does not exist.
+-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
++ case $lt_cv_dlopen_self in
++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
++ *) enable_dlopen_self=unknown ;;
++ esac
+
+-# If ld is used when linking, flag to hardcode \$libdir into
+-# a binary during linking. This must work even if \$libdir does
+-# not exist.
+-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
++ case $lt_cv_dlopen_self_static in
++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
++ *) enable_dlopen_self_static=unknown ;;
++ esac
++fi
+
+-# Whether we need a single -rpath flag with a separated argument.
+-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+-# resulting binary.
+-hardcode_direct=$hardcode_direct_CXX
++# The else clause should only fire when bootstrapping the
++# libtool distribution, otherwise you forgot to ship ltmain.sh
++# with your package, and you will get complaints that there are
++# no rules to generate ltmain.sh.
++if test -f "$ltmain"; then
++ # See if we are running on zsh, and set the options which allow our commands through
++ # without removal of \ escapes.
++ if test -n "${ZSH_VERSION+set}" ; then
++ setopt NO_GLOB_SUBST
++ fi
++ # Now quote all the things that may contain metacharacters while being
++ # careful not to overquote the AC_SUBSTed values. We take copies of the
++ # variables and quote the copies for generation of the libtool script.
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
++ SED SHELL STRIP \
++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
++ deplibs_check_method reload_flag reload_cmds need_locks \
++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
++ lt_cv_sys_global_symbol_to_c_name_address \
++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
++ old_postinstall_cmds old_postuninstall_cmds \
++ compiler_CXX \
++ CC_CXX \
++ LD_CXX \
++ lt_prog_compiler_wl_CXX \
++ lt_prog_compiler_pic_CXX \
++ lt_prog_compiler_static_CXX \
++ lt_prog_compiler_no_builtin_flag_CXX \
++ export_dynamic_flag_spec_CXX \
++ thread_safe_flag_spec_CXX \
++ whole_archive_flag_spec_CXX \
++ enable_shared_with_static_runtimes_CXX \
++ old_archive_cmds_CXX \
++ old_archive_from_new_cmds_CXX \
++ predep_objects_CXX \
++ postdep_objects_CXX \
++ predeps_CXX \
++ postdeps_CXX \
++ compiler_lib_search_path_CXX \
++ archive_cmds_CXX \
++ archive_expsym_cmds_CXX \
++ postinstall_cmds_CXX \
++ postuninstall_cmds_CXX \
++ old_archive_from_expsyms_cmds_CXX \
++ allow_undefined_flag_CXX \
++ no_undefined_flag_CXX \
++ export_symbols_cmds_CXX \
++ hardcode_libdir_flag_spec_CXX \
++ hardcode_libdir_flag_spec_ld_CXX \
++ hardcode_libdir_separator_CXX \
++ hardcode_automatic_CXX \
++ module_cmds_CXX \
++ module_expsym_cmds_CXX \
++ lt_cv_prog_compiler_c_o_CXX \
++ exclude_expsyms_CXX \
++ include_expsyms_CXX; do
+
+-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+-# resulting binary.
+-hardcode_minus_L=$hardcode_minus_L_CXX
++ case $var in
++ old_archive_cmds_CXX | \
++ old_archive_from_new_cmds_CXX | \
++ archive_cmds_CXX | \
++ archive_expsym_cmds_CXX | \
++ module_cmds_CXX | \
++ module_expsym_cmds_CXX | \
++ old_archive_from_expsyms_cmds_CXX | \
++ export_symbols_cmds_CXX | \
++ extract_expsyms_cmds | reload_cmds | finish_cmds | \
++ postinstall_cmds | postuninstall_cmds | \
++ old_postinstall_cmds | old_postuninstall_cmds | \
++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
++ # Double-quote double-evaled strings.
++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
++ ;;
++ *)
++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
++ ;;
++ esac
++ done
+
+-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+-# the resulting binary.
+-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
++ case $lt_echo in
++ *'\$0 --fallback-echo"')
++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
++ ;;
++ esac
+
+-# Set to yes if building a shared library automatically hardcodes DIR into the library
+-# and all subsequent libraries and executables linked against it.
+-hardcode_automatic=$hardcode_automatic_CXX
++cfgfile="$ofile"
+
+-# Variables whose values should be saved in libtool wrapper scripts and
+-# restored at relink time.
+-variables_saved_for_relink="$variables_saved_for_relink"
++ cat <<__EOF__ >> "$cfgfile"
++# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+-# Whether libtool must link a program against all its dependency libraries.
+-link_all_deplibs=$link_all_deplibs_CXX
++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+-# Compile-time system search path for libraries
+-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
++# Shell to use when invoking shell scripts.
++SHELL=$lt_SHELL
+
+-# Run-time system search path for libraries
+-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
++# Whether or not to build shared libraries.
++build_libtool_libs=$enable_shared
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path="$fix_srcfile_path_CXX"
++# Whether or not to build static libraries.
++build_old_libs=$enable_static
+
+-# Set to yes if exported symbols are required.
+-always_export_symbols=$always_export_symbols_CXX
++# Whether or not to add -lc for building shared libraries.
++build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+-# The commands to list exported symbols.
+-export_symbols_cmds=$lt_export_symbols_cmds_CXX
++# Whether or not to disallow shared libs when runtime libs are static
++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+-# The commands to extract the exported symbol list from a shared archive.
+-extract_expsyms_cmds=$lt_extract_expsyms_cmds
++# Whether or not to optimize for fast installation.
++fast_install=$enable_fast_install
+
+-# Symbols that should not be listed in the preloaded symbols.
+-exclude_expsyms=$lt_exclude_expsyms_CXX
++# The host system.
++host_alias=$host_alias
++host=$host
+
+-# Symbols that must always be exported.
+-include_expsyms=$lt_include_expsyms_CXX
++# An echo program that does not interpret backslashes.
++echo=$lt_echo
+
+-# ### END LIBTOOL TAG CONFIG: $tagname
++# The archiver.
++AR=$lt_AR
++AR_FLAGS=$lt_AR_FLAGS
+
+-__EOF__
++# A C compiler.
++LTCC=$lt_LTCC
+
++# A language-specific compiler.
++CC=$lt_compiler_CXX
+
+-else
+- # If there is no Makefile yet, we rely on a make rule to execute
+- # `config.status --recheck' to rerun these tests and create the
+- # libtool script then.
+- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+- if test -f "$ltmain_in"; then
+- test -f Makefile && make "$ltmain"
+- fi
+-fi
++# Is the compiler the GNU C compiler?
++with_gcc=$GCC_CXX
+
++# An ERE matcher.
++EGREP=$lt_EGREP
+
+-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
++# The linker used to build libraries.
++LD=$lt_LD_CXX
+
+-CC=$lt_save_CC
+-LDCXX=$LD
+-LD=$lt_save_LD
+-GCC=$lt_save_GCC
+-with_gnu_ldcxx=$with_gnu_ld
+-with_gnu_ld=$lt_save_with_gnu_ld
+-lt_cv_path_LDCXX=$lt_cv_path_LD
+-lt_cv_path_LD=$lt_save_path_LD
+-lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+-lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
++# Whether we need hard or soft links.
++LN_S=$lt_LN_S
+
+- else
+- tagname=""
+- fi
+- ;;
++# A BSD-compatible nm program.
++NM=$lt_NM
+
+- F77)
+- if test -n "$F77" && test "X$F77" != "Xno"; then
++# A symbol stripping program
++STRIP=$lt_STRIP
+
+-ac_ext=f
+-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
++# Used to examine libraries when file_magic_cmd begins "file"
++MAGIC_CMD=$MAGIC_CMD
+
++# Used on cygwin: DLL creation program.
++DLLTOOL="$DLLTOOL"
+
+-archive_cmds_need_lc_F77=no
+-allow_undefined_flag_F77=
+-always_export_symbols_F77=no
+-archive_expsym_cmds_F77=
+-export_dynamic_flag_spec_F77=
+-hardcode_direct_F77=no
+-hardcode_libdir_flag_spec_F77=
+-hardcode_libdir_flag_spec_ld_F77=
+-hardcode_libdir_separator_F77=
+-hardcode_minus_L_F77=no
+-hardcode_automatic_F77=no
+-module_cmds_F77=
+-module_expsym_cmds_F77=
+-link_all_deplibs_F77=unknown
+-old_archive_cmds_F77=$old_archive_cmds
+-no_undefined_flag_F77=
+-whole_archive_flag_spec_F77=
+-enable_shared_with_static_runtimes_F77=no
++# Used on cygwin: object dumper.
++OBJDUMP="$OBJDUMP"
+
+-# Source file extension for f77 test sources.
+-ac_ext=f
++# Used on cygwin: assembler.
++AS="$AS"
+
+-# Object file extension for compiled f77 test sources.
+-objext=o
+-objext_F77=$objext
++# The name of the directory that contains temporary libtool files.
++objdir=$objdir
+
+-# Code to be used in simple compile tests
+-lt_simple_compile_test_code=" subroutine t\n return\n end\n"
++# How to create reloadable object files.
++reload_flag=$lt_reload_flag
++reload_cmds=$lt_reload_cmds
+
+-# Code to be used in simple link tests
+-lt_simple_link_test_code=" program t\n end\n"
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl_CXX
+
+-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
++# Object file suffix (normally "o").
++objext="$ac_objext"
+
+-# If no C compiler was specified, use CC.
+-LTCC=${LTCC-"$CC"}
++# Old archive suffix (normally "a").
++libext="$libext"
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
++# Shared library suffix (normally ".so").
++shrext_cmds='$shrext_cmds'
+
+-# Allow CC to be a program name with arguments.
+-compiler=$CC
++# Executable file suffix (normally "").
++exeext="$exeext"
+
++# Additional compiler flags for building library objects.
++pic_flag=$lt_lt_prog_compiler_pic_CXX
++pic_mode=$pic_mode
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
++# What is the maximum length of a command?
++max_cmd_len=$lt_cv_sys_max_cmd_len
+
++# Does compiler simultaneously support -c and -o options?
++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+-# Allow CC to be a program name with arguments.
+-lt_save_CC="$CC"
+-CC=${F77-"f77"}
+-compiler=$CC
+-compiler_F77=$CC
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
++# Must we lock files when doing compilation ?
++need_locks=$lt_need_locks
+
++# Do we need the lib prefix for modules?
++need_lib_prefix=$need_lib_prefix
+
+-{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
+-{ echo "$as_me:$LINENO: result: $can_build_shared" >&5
+-echo "${ECHO_T}$can_build_shared" >&6; }
++# Do we need a version for libraries?
++need_version=$need_version
+
+-{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; }
+-test "$can_build_shared" = "no" && enable_shared=no
++# Whether dlopen is supported.
++dlopen_support=$enable_dlopen
+
+-# On AIX, shared libraries and static libraries use the same namespace, and
+-# are all built from PIC.
+-case $host_os in
+-aix3*)
+- test "$enable_shared" = yes && enable_static=no
+- if test -n "$RANLIB"; then
+- archive_cmds="$archive_cmds~\$RANLIB \$lib"
+- postinstall_cmds='$RANLIB $lib'
+- fi
+- ;;
+-aix4* | aix5*)
+- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+- test "$enable_shared" = yes && enable_static=no
+- fi
+- ;;
+-esac
+-{ echo "$as_me:$LINENO: result: $enable_shared" >&5
+-echo "${ECHO_T}$enable_shared" >&6; }
++# Whether dlopen of programs is supported.
++dlopen_self=$enable_dlopen_self
+
+-{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
+-# Make sure either enable_shared or enable_static is yes.
+-test "$enable_shared" = yes || enable_static=yes
+-{ echo "$as_me:$LINENO: result: $enable_static" >&5
+-echo "${ECHO_T}$enable_static" >&6; }
++# Whether dlopen of statically linked programs is supported.
++dlopen_self_static=$enable_dlopen_self_static
+
+-GCC_F77="$G77"
+-LD_F77="$LD"
++# Compiler flag to prevent dynamic linking.
++link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+-lt_prog_compiler_wl_F77=
+-lt_prog_compiler_pic_F77=
+-lt_prog_compiler_static_F77=
++# Compiler flag to turn off builtin functions.
++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
++# Compiler flag to allow reflexive dlopens.
++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+- if test "$GCC" = yes; then
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_static_F77='-static'
++# Compiler flag to generate shared objects directly from archives.
++whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+- case $host_os in
+- aix*)
+- # All AIX code is PIC.
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- lt_prog_compiler_static_F77='-Bstatic'
+- fi
+- ;;
++# Compiler flag to generate thread-safe objects.
++thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+- amigaos*)
+- # FIXME: we need at least 68020 code to build shared libraries, but
+- # adding the `-m68020' flag to GCC prevents building anything better,
+- # like `-m68040'.
+- lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+- ;;
++# Library versioning type.
++version_type=$version_type
+
+- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+- # PIC is the default for these OSes.
+- ;;
++# Format of library name prefix.
++libname_spec=$lt_libname_spec
+
+- mingw* | pw32* | os2*)
+- # This hack is so that the source file can tell whether it is being
+- # built for inclusion in a dll (and should export symbols for example).
+- lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+- ;;
++# List of archive names. First name is the real one, the rest are links.
++# The last name is the one that the linker finds with -lNAME.
++library_names_spec=$lt_library_names_spec
+
+- darwin* | rhapsody*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- lt_prog_compiler_pic_F77='-fno-common'
+- ;;
++# The coded name of the library, if different from the real name.
++soname_spec=$lt_soname_spec
+
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
++# Commands used to build and install an old-style archive.
++RANLIB=$lt_RANLIB
++old_archive_cmds=$lt_old_archive_cmds_CXX
++old_postinstall_cmds=$lt_old_postinstall_cmds
++old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+- msdosdjgpp*)
+- # Just because we use GCC doesn't mean we suddenly get shared libraries
+- # on systems that don't support them.
+- lt_prog_compiler_can_build_shared_F77=no
+- enable_shared=no
+- ;;
++# Create an old-style archive from a shared archive.
++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+- sysv4*MP*)
+- if test -d /usr/nec; then
+- lt_prog_compiler_pic_F77=-Kconform_pic
+- fi
+- ;;
+-
+- hpux*)
+- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+- # not for PA HP-UX.
+- case $host_cpu in
+- hppa*64*|ia64*)
+- # +Z the default
+- ;;
+- *)
+- lt_prog_compiler_pic_F77='-fPIC'
+- ;;
+- esac
+- ;;
++# Create a temporary old-style archive to link instead of a shared archive.
++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+- *)
+- lt_prog_compiler_pic_F77='-fPIC'
+- ;;
+- esac
+- else
+- # PORTME Check for flag to pass linker flags through the system compiler.
+- case $host_os in
+- aix*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- if test "$host_cpu" = ia64; then
+- # AIX 5 now supports IA64 processor
+- lt_prog_compiler_static_F77='-Bstatic'
+- else
+- lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+- fi
+- ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- lt_prog_compiler_pic_F77='-qnocommon'
+- lt_prog_compiler_wl_F77='-Wl,'
+- ;;
+- esac
+- ;;
++# Commands used to build and install a shared archive.
++archive_cmds=$lt_archive_cmds_CXX
++archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
++postinstall_cmds=$lt_postinstall_cmds
++postuninstall_cmds=$lt_postuninstall_cmds
+
+- mingw* | pw32* | os2*)
+- # This hack is so that the source file can tell whether it is being
+- # built for inclusion in a dll (and should export symbols for example).
+- lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+- ;;
++# Commands used to build a loadable module (assumed same as above if empty)
++module_cmds=$lt_module_cmds_CXX
++module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+- hpux9* | hpux10* | hpux11*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+- # not for PA HP-UX.
+- case $host_cpu in
+- hppa*64*|ia64*)
+- # +Z the default
+- ;;
+- *)
+- lt_prog_compiler_pic_F77='+Z'
+- ;;
+- esac
+- # Is there a better lt_prog_compiler_static that works with the bundled CC?
+- lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+- ;;
++# Commands to strip libraries.
++old_striplib=$lt_old_striplib
++striplib=$lt_striplib
+
+- irix5* | irix6* | nonstopux*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- # PIC (with -KPIC) is the default.
+- lt_prog_compiler_static_F77='-non_shared'
+- ;;
++# Dependencies to place before the objects being linked to create a
++# shared library.
++predep_objects=$lt_predep_objects_CXX
+
+- newsos6)
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Dependencies to place after the objects being linked to create a
++# shared library.
++postdep_objects=$lt_postdep_objects_CXX
+
+- linux* | k*bsd*-gnu)
+- case $cc_basename in
+- icc* | ecc*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-static'
+- ;;
+- pgcc* | pgf77* | pgf90* | pgf95*)
+- # Portland Group compilers (*not* the Pentium gcc compiler,
+- # which looks to be a dead project)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_pic_F77='-fpic'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
+- ccc*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- # All Alpha code is PIC.
+- lt_prog_compiler_static_F77='-non_shared'
+- ;;
+- esac
+- ;;
++# Dependencies to place before the objects being linked to create a
++# shared library.
++predeps=$lt_predeps_CXX
+
+- osf3* | osf4* | osf5*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- # All OSF/1 code is PIC.
+- lt_prog_compiler_static_F77='-non_shared'
+- ;;
++# Dependencies to place after the objects being linked to create a
++# shared library.
++postdeps=$lt_postdeps_CXX
+
+- solaris*)
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- case $cc_basename in
+- f77* | f90* | f95*)
+- lt_prog_compiler_wl_F77='-Qoption ld ';;
+- *)
+- lt_prog_compiler_wl_F77='-Wl,';;
+- esac
+- ;;
++# The library search path used internally by the compiler when linking
++# a shared library.
++compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+- sunos4*)
+- lt_prog_compiler_wl_F77='-Qoption ld '
+- lt_prog_compiler_pic_F77='-PIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Method to check whether dependent libraries are shared objects.
++deplibs_check_method=$lt_deplibs_check_method
+
+- sysv4 | sysv4.2uw2* | sysv4.3*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Command to use when deplibs_check_method == file_magic.
++file_magic_cmd=$lt_file_magic_cmd
+
+- sysv4*MP*)
+- if test -d /usr/nec ;then
+- lt_prog_compiler_pic_F77='-Kconform_pic'
+- lt_prog_compiler_static_F77='-Bstatic'
+- fi
+- ;;
++# Flag that allows shared libraries with undefined symbols to be built.
++allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_pic_F77='-KPIC'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Flag that forces no undefined symbols.
++no_undefined_flag=$lt_no_undefined_flag_CXX
+
+- unicos*)
+- lt_prog_compiler_wl_F77='-Wl,'
+- lt_prog_compiler_can_build_shared_F77=no
+- ;;
++# Commands used to finish a libtool library installation in a directory.
++finish_cmds=$lt_finish_cmds
+
+- uts4*)
+- lt_prog_compiler_pic_F77='-pic'
+- lt_prog_compiler_static_F77='-Bstatic'
+- ;;
++# Same as above, but a single script fragment to be evaled but not shown.
++finish_eval=$lt_finish_eval
+
+- *)
+- lt_prog_compiler_can_build_shared_F77=no
+- ;;
+- esac
+- fi
++# Take the output of nm and produce a listing of raw symbols and C names.
++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; }
++# Transform the output of nm in a proper C declaration
++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+-#
+-# Check to make sure the PIC flag actually works.
+-#
+-if test -n "$lt_prog_compiler_pic_F77"; then
++# Transform the output of nm in a C name address pair
++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+-{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_pic_works_F77=no
+- ac_outfile=conftest.$ac_objext
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+- lt_compiler_flag="$lt_prog_compiler_pic_F77"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- # The option is referenced via a variable to avoid confusing sed.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:14551: $lt_compile\"" >&5)
+- (eval "$lt_compile" 2>conftest.err)
+- ac_status=$?
+- cat conftest.err >&5
+- echo "$as_me:14555: \$? = $ac_status" >&5
+- if (exit $ac_status) && test -s "$ac_outfile"; then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_pic_works_F77=yes
+- fi
+- fi
+- $rm conftest*
++# This is the shared library runtime path variable.
++runpath_var=$runpath_var
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; }
++# This is the shared library path variable.
++shlibpath_var=$shlibpath_var
+
+-if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+- case $lt_prog_compiler_pic_F77 in
+- "" | " "*) ;;
+- *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+- esac
+-else
+- lt_prog_compiler_pic_F77=
+- lt_prog_compiler_can_build_shared_F77=no
+-fi
++# Is shlibpath searched before the hard-coded library search path?
++shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+-fi
+-case $host_os in
+- # For platforms which do not support PIC, -DPIC is meaningless:
+- *djgpp*)
+- lt_prog_compiler_pic_F77=
+- ;;
+- *)
+- lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+- ;;
+-esac
++# How to hardcode a shared library path into an executable.
++hardcode_action=$hardcode_action_CXX
+
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
+-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_static_works_F77+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_static_works_F77=no
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_static_works_F77=yes
+- fi
+- else
+- lt_prog_compiler_static_works_F77=yes
+- fi
+- fi
+- $rm conftest*
+- LDFLAGS="$save_LDFLAGS"
++# Whether we should hardcode library paths into libraries.
++hardcode_into_libs=$hardcode_into_libs
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
+-echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; }
++# Flag to hardcode \$libdir into a binary during linking.
++# This must work even if \$libdir does not exist.
++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+-if test x"$lt_prog_compiler_static_works_F77" = xyes; then
+- :
+-else
+- lt_prog_compiler_static_F77=
+-fi
++# If ld is used when linking, flag to hardcode \$libdir into
++# a binary during linking. This must work even if \$libdir does
++# not exist.
++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
++# Whether we need a single -rpath flag with a separated argument.
++hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+-{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+-if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_cv_prog_compiler_c_o_F77=no
+- $rm -r conftest 2>/dev/null
+- mkdir conftest
+- cd conftest
+- mkdir out
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
++# resulting binary.
++hardcode_direct=$hardcode_direct_CXX
+
+- lt_compiler_flag="-o out/conftest2.$ac_objext"
+- # Insert the option either (1) after the last *FLAGS variable, or
+- # (2) before a word containing "conftest.", or (3) at the end.
+- # Note that $ac_compile itself does not contain backslashes and begins
+- # with a dollar sign (not a hyphen), so the echo should work correctly.
+- lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+- -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:14655: $lt_compile\"" >&5)
+- (eval "$lt_compile" 2>out/conftest.err)
+- ac_status=$?
+- cat out/conftest.err >&5
+- echo "$as_me:14659: \$? = $ac_status" >&5
+- if (exit $ac_status) && test -s out/conftest2.$ac_objext
+- then
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+- lt_cv_prog_compiler_c_o_F77=yes
+- fi
+- fi
+- chmod u+w . 2>&5
+- $rm conftest*
+- # SGI C++ compiler will create directory out/ii_files/ for
+- # template instantiation
+- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+- $rm out/* && rmdir out
+- cd ..
+- rmdir conftest
+- $rm conftest*
++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
++# resulting binary.
++hardcode_minus_L=$hardcode_minus_L_CXX
+
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; }
++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
++# the resulting binary.
++hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
++# Set to yes if building a shared library automatically hardcodes DIR into the library
++# and all subsequent libraries and executables linked against it.
++hardcode_automatic=$hardcode_automatic_CXX
+
+-hard_links="nottested"
+-if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+- # do not overwrite the value of need_locks provided by the user
+- { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
+- hard_links=yes
+- $rm conftest*
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- touch conftest.a
+- ln conftest.a conftest.b 2>&5 || hard_links=no
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- { echo "$as_me:$LINENO: result: $hard_links" >&5
+-echo "${ECHO_T}$hard_links" >&6; }
+- if test "$hard_links" = no; then
+- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+- need_locks=warn
+- fi
+-else
+- need_locks=no
+-fi
++# Variables whose values should be saved in libtool wrapper scripts and
++# restored at relink time.
++variables_saved_for_relink="$variables_saved_for_relink"
+
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++# Whether libtool must link a program against all its dependency libraries.
++link_all_deplibs=$link_all_deplibs_CXX
+
+- runpath_var=
+- allow_undefined_flag_F77=
+- enable_shared_with_static_runtimes_F77=no
+- archive_cmds_F77=
+- archive_expsym_cmds_F77=
+- old_archive_From_new_cmds_F77=
+- old_archive_from_expsyms_cmds_F77=
+- export_dynamic_flag_spec_F77=
+- whole_archive_flag_spec_F77=
+- thread_safe_flag_spec_F77=
+- hardcode_libdir_flag_spec_F77=
+- hardcode_libdir_flag_spec_ld_F77=
+- hardcode_libdir_separator_F77=
+- hardcode_direct_F77=no
+- hardcode_minus_L_F77=no
+- hardcode_shlibpath_var_F77=unsupported
+- link_all_deplibs_F77=unknown
+- hardcode_automatic_F77=no
+- module_cmds_F77=
+- module_expsym_cmds_F77=
+- always_export_symbols_F77=no
+- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+- # include_expsyms should be a list of space-separated symbols to be *always*
+- # included in the symbol list
+- include_expsyms_F77=
+- # exclude_expsyms can be an extended regexp of symbols to exclude
+- # it will be wrapped by ` (' and `)$', so one must not match beginning or
+- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+- # as well as any symbol that contains `d'.
+- exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+- # platforms (ab)use it in PIC code, but their linkers get confused if
+- # the symbol is explicitly referenced. Since portable code cannot
+- # rely on this symbol name, it's probably fine to never include it in
+- # preloaded symbol tables.
+- extract_expsyms_cmds=
+- # Just being paranoid about ensuring that cc_basename is set.
+- for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
++# Compile-time system search path for libraries
++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+- case $host_os in
+- cygwin* | mingw* | pw32*)
+- # FIXME: the MSVC++ port hasn't been tested in a loooong time
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- if test "$GCC" != yes; then
+- with_gnu_ld=no
+- fi
+- ;;
+- interix*)
+- # we just hope/assume this is gcc and not c89 (= MSVC++)
+- with_gnu_ld=yes
+- ;;
+- openbsd*)
+- with_gnu_ld=no
+- ;;
+- esac
++# Run-time system search path for libraries
++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+- ld_shlibs_F77=yes
+- if test "$with_gnu_ld" = yes; then
+- # If archive_cmds runs LD, not CC, wlarc should be empty
+- wlarc='${wl}'
++# Fix the shell variable \$srcfile for the compiler.
++fix_srcfile_path="$fix_srcfile_path_CXX"
+
+- # Set some defaults for GNU ld with shared library support. These
+- # are reset later if shared libraries are not supported. Putting them
+- # here allows them to be overridden if necessary.
+- runpath_var=LD_RUN_PATH
+- hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+- export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+- whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- whole_archive_flag_spec_F77=
+- fi
+- supports_anon_versioning=no
+- case `$LD -v 2>/dev/null` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+- *\ 2.11.*) ;; # other 2.11 versions
+- *) supports_anon_versioning=yes ;;
+- esac
++# Set to yes if exported symbols are required.
++always_export_symbols=$always_export_symbols_CXX
+
+- # See if GNU ld supports shared libraries.
+- case $host_os in
+- aix3* | aix4* | aix5*)
+- # On AIX/PPC, the GNU linker is very broken
+- if test "$host_cpu" != ia64; then
+- ld_shlibs_F77=no
+- cat <<EOF 1>&2
++# The commands to list exported symbols.
++export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+-*** to be unable to reliably create shared libraries on AIX.
+-*** Therefore, libtool is disabling shared libraries support. If you
+-*** really care for shared libraries, you may want to modify your PATH
+-*** so that a non-GNU linker is found, and then restart.
++# The commands to extract the exported symbol list from a shared archive.
++extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+-EOF
+- fi
+- ;;
++# Symbols that should not be listed in the preloaded symbols.
++exclude_expsyms=$lt_exclude_expsyms_CXX
+
+- amigaos*)
+- archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_minus_L_F77=yes
++# Symbols that must always be exported.
++include_expsyms=$lt_include_expsyms_CXX
+
+- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+- # that the semantics of dynamic libraries on AmigaOS, at least up
+- # to version 4, is to share data among multiple programs linked
+- # with the same dynamic library. Since this doesn't match the
+- # behavior of shared libraries on other platforms, we can't use
+- # them.
+- ld_shlibs_F77=no
+- ;;
++# ### END LIBTOOL TAG CONFIG: $tagname
+
+- beos*)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- allow_undefined_flag_F77=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- else
+- ld_shlibs_F77=no
+- fi
+- ;;
++__EOF__
+
+- cygwin* | mingw* | pw32*)
+- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+- # as there is no search path for DLLs.
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- allow_undefined_flag_F77=unsupported
+- always_export_symbols_F77=no
+- enable_shared_with_static_runtimes_F77=yes
+- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- # If the export-symbols file already is a .def file (1st line
+- # is EXPORTS), use it as is; otherwise, prepend...
+- archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+- cp $export_symbols $output_objdir/$soname.def;
+- else
+- echo EXPORTS > $output_objdir/$soname.def;
+- cat $export_symbols >> $output_objdir/$soname.def;
+- fi~
+- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- ld_shlibs_F77=no
+- fi
+- ;;
++else
++ # If there is no Makefile yet, we rely on a make rule to execute
++ # `config.status --recheck' to rerun these tests and create the
++ # libtool script then.
++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
++ if test -f "$ltmain_in"; then
++ test -f Makefile && make "$ltmain"
++ fi
++fi
+
+- interix3*)
+- hardcode_direct_F77=no
+- hardcode_shlibpath_var_F77=no
+- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_F77='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+
+- linux* | k*bsd*-gnu)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- tmp_addflag=
+- case $cc_basename,$host_cpu in
+- pgcc*) # Portland Group C compiler
+- whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag'
+- ;;
+- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+- whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag -Mnomain' ;;
+- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+- tmp_addflag=' -i_dynamic' ;;
+- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+- tmp_addflag=' -i_dynamic -nofor_main' ;;
+- ifc* | ifort*) # Intel Fortran compiler
+- tmp_addflag=' -nofor_main' ;;
+- esac
+- archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++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
++
++CC=$lt_save_CC
++LDCXX=$LD
++LD=$lt_save_LD
++GCC=$lt_save_GCC
++with_gnu_ldcxx=$with_gnu_ld
++with_gnu_ld=$lt_save_with_gnu_ld
++lt_cv_path_LDCXX=$lt_cv_path_LD
++lt_cv_path_LD=$lt_save_path_LD
++lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
++lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+- if test $supports_anon_versioning = yes; then
+- archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- $echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ tagname=""
+ fi
+- link_all_deplibs_F77=no
+- else
+- ld_shlibs_F77=no
+- fi
+- ;;
++ ;;
+
+- netbsd* | netbsdelf*-gnu)
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+- wlarc=
+- else
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- fi
+- ;;
++ F77)
++ if test -n "$F77" && test "X$F77" != "Xno"; then
+
+- solaris*)
+- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+- ld_shlibs_F77=no
+- cat <<EOF 1>&2
++ac_ext=f
++ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
++ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+-*** create shared libraries on Solaris systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.9.1 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
+
+-EOF
+- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- ld_shlibs_F77=no
++archive_cmds_need_lc_F77=no
++allow_undefined_flag_F77=
++always_export_symbols_F77=no
++archive_expsym_cmds_F77=
++export_dynamic_flag_spec_F77=
++hardcode_direct_F77=no
++hardcode_libdir_flag_spec_F77=
++hardcode_libdir_flag_spec_ld_F77=
++hardcode_libdir_separator_F77=
++hardcode_minus_L_F77=no
++hardcode_automatic_F77=no
++module_cmds_F77=
++module_expsym_cmds_F77=
++link_all_deplibs_F77=unknown
++old_archive_cmds_F77=$old_archive_cmds
++no_undefined_flag_F77=
++whole_archive_flag_spec_F77=
++enable_shared_with_static_runtimes_F77=no
++
++# Source file extension for f77 test sources.
++ac_ext=f
++
++# Object file extension for compiled f77 test sources.
++objext=o
++objext_F77=$objext
++
++# Code to be used in simple compile tests
++lt_simple_compile_test_code=" subroutine t\n return\n end\n"
++
++# Code to be used in simple link tests
++lt_simple_link_test_code=" program t\n end\n"
++
++# ltmain only uses $CC for tagged configurations so make sure $CC is set.
++
++# If no C compiler was specified, use CC.
++LTCC=${LTCC-"$CC"}
++
++# Allow CC to be a program name with arguments.
++compiler=$CC
++
++
++# Allow CC to be a program name with arguments.
++lt_save_CC="$CC"
++CC=${F77-"f77"}
++compiler=$CC
++compiler_F77=$CC
++cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
++
++echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
++echo "$as_me:$LINENO: result: $can_build_shared" >&5
++echo "${ECHO_T}$can_build_shared" >&6
++
++echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
++test "$can_build_shared" = "no" && enable_shared=no
++
++# On AIX, shared libraries and static libraries use the same namespace, and
++# are all built from PIC.
++case "$host_os" in
++aix3*)
++ test "$enable_shared" = yes && enable_static=no
++ if test -n "$RANLIB"; then
++ archive_cmds="$archive_cmds~\$RANLIB \$lib"
++ postinstall_cmds='$RANLIB $lib'
++ fi
++ ;;
++aix4* | aix5*)
++ test "$enable_shared" = yes && enable_static=no
++ ;;
++esac
++echo "$as_me:$LINENO: result: $enable_shared" >&5
++echo "${ECHO_T}$enable_shared" >&6
++
++echo "$as_me:$LINENO: checking whether to build static libraries" >&5
++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
++# Make sure either enable_shared or enable_static is yes.
++test "$enable_shared" = yes || enable_static=yes
++echo "$as_me:$LINENO: result: $enable_static" >&5
++echo "${ECHO_T}$enable_static" >&6
++
++test "$ld_shlibs_F77" = no && can_build_shared=no
++
++GCC_F77="$G77"
++LD_F77="$LD"
++
++lt_prog_compiler_wl_F77=
++lt_prog_compiler_pic_F77=
++lt_prog_compiler_static_F77=
++
++echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
++
++ if test "$GCC" = yes; then
++ lt_prog_compiler_wl_F77='-Wl,'
++ lt_prog_compiler_static_F77='-static'
++
++ case $host_os in
++ aix*)
++ # All AIX code is PIC.
++ if test "$host_cpu" = ia64; then
++ # AIX 5 now supports IA64 processor
++ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+- case `$LD -v 2>&1` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+- ld_shlibs_F77=no
+- cat <<_LT_EOF 1>&2
++ amigaos*)
++ # FIXME: we need at least 68020 code to build shared libraries, but
++ # adding the `-m68020' flag to GCC prevents building anything better,
++ # like `-m68040'.
++ lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
++ ;;
+
+-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+-*** reliably create shared libraries on SCO systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
++ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
++ # PIC is the default for these OSes.
++ ;;
++
++ mingw* | pw32* | os2*)
++ # This hack is so that the source file can tell whether it is being
++ # built for inclusion in a dll (and should export symbols for example).
++ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
++ ;;
++
++ darwin* | rhapsody*)
++ # PIC is the default on this platform
++ # Common symbols not allowed in MH_DYLIB files
++ lt_prog_compiler_pic_F77='-fno-common'
++ ;;
++
++ msdosdjgpp*)
++ # Just because we use GCC doesn't mean we suddenly get shared libraries
++ # on systems that don't support them.
++ lt_prog_compiler_can_build_shared_F77=no
++ enable_shared=no
++ ;;
++
++ sysv4*MP*)
++ if test -d /usr/nec; then
++ lt_prog_compiler_pic_F77=-Kconform_pic
++ fi
++ ;;
+
+-_LT_EOF
++ hpux*)
++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
++ # not for PA HP-UX.
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ # +Z the default
+ ;;
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+- else
+- ld_shlibs_F77=no
+- fi
++ *)
++ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ ;;
+
+- sunos4*)
+- archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- wlarc=
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
+- ;;
+-
+ *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- ld_shlibs_F77=no
+- fi
++ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+-
+- if test "$ld_shlibs_F77" = no; then
+- runpath_var=
+- hardcode_libdir_flag_spec_F77=
+- export_dynamic_flag_spec_F77=
+- whole_archive_flag_spec_F77=
+- fi
+ else
+- # PORTME fill in a description of your system's linker (not GNU ld)
++ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+- aix3*)
+- allow_undefined_flag_F77=unsupported
+- always_export_symbols_F77=yes
+- archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+- # Note: this linker hardcodes the directories in LIBPATH if there
+- # are no directories specified by -L.
+- hardcode_minus_L_F77=yes
+- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+- # Neither direct hardcoding nor static linking is supported with a
+- # broken collect2.
+- hardcode_direct_F77=unsupported
++ aix*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ if test "$host_cpu" = ia64; then
++ # AIX 5 now supports IA64 processor
++ lt_prog_compiler_static_F77='-Bstatic'
++ else
++ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+- aix4* | aix5*)
+- if test "$host_cpu" = ia64; then
+- # On IA64, the linker does run time linking by default, so we don't
+- # have to do anything special.
+- aix_use_runtimelinking=no
+- exp_sym_flag='-Bexport'
+- no_entry_flag=""
+- else
+- # If we're using GNU nm, then we don't want the "-C" option.
+- # -C means demangle to AIX nm, but means don't demangle with GNU nm
+- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+- export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+- else
+- export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+- fi
+- aix_use_runtimelinking=no
++ mingw* | pw32* | os2*)
++ # This hack is so that the source file can tell whether it is being
++ # built for inclusion in a dll (and should export symbols for example).
++ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
++ ;;
+
+- # Test if we are trying to use run time linking or normal
+- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+- # need to do runtime linking.
+- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+- for ld_flag in $LDFLAGS; do
+- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+- aix_use_runtimelinking=yes
+- break
+- fi
+- done
+- ;;
+- esac
++ hpux9* | hpux10* | hpux11*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
++ # not for PA HP-UX.
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ # +Z the default
++ ;;
++ *)
++ lt_prog_compiler_pic_F77='+Z'
++ ;;
++ esac
++ # Is there a better lt_prog_compiler_static that works with the bundled CC?
++ lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
++ ;;
+
+- exp_sym_flag='-bexport'
+- no_entry_flag='-bnoentry'
+- fi
++ irix5* | irix6* | nonstopux*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ # PIC (with -KPIC) is the default.
++ lt_prog_compiler_static_F77='-non_shared'
++ ;;
+
+- # When large executables or shared objects are built, AIX ld can
+- # have problems creating the table of contents. If linking a library
+- # or program results in "error TOC overflow" add -mminimal-toc to
+- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
++ newsos6)
++ lt_prog_compiler_pic_F77='-KPIC'
++ lt_prog_compiler_static_F77='-Bstatic'
++ ;;
+
+- archive_cmds_F77=''
+- hardcode_direct_F77=yes
+- hardcode_libdir_separator_F77=':'
+- link_all_deplibs_F77=yes
+-
+- if test "$GCC" = yes; then
+- case $host_os in aix4.[012]|aix4.[012].*)
+- # We only want to do this on AIX 4.2 and lower, the check
+- # below for broken collect2 doesn't work under 4.3+
+- collect2name=`${CC} -print-prog-name=collect2`
+- if test -f "$collect2name" && \
+- strings "$collect2name" | grep resolve_lib_name >/dev/null
+- then
+- # We have reworked collect2
+- hardcode_direct_F77=yes
+- else
+- # We have old collect2
+- hardcode_direct_F77=unsupported
+- # It fails to find uninstalled libraries when the uninstalled
+- # path is not listed in the libpath. Setting hardcode_minus_L
+- # to unsupported forces relinking
+- hardcode_minus_L_F77=yes
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_libdir_separator_F77=
+- fi
+- ;;
+- esac
+- shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+- else
+- # not using gcc
+- if test "$host_cpu" = ia64; then
+- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+- # chokes on -Wl,-G. The following line is correct:
+- shared_flag='-G'
+- else
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag='${wl}-G'
+- else
+- shared_flag='${wl}-bM:SRE'
+- fi
+- fi
+- fi
+-
+- # It seems that -bexpall does not export symbols beginning with
+- # underscore (_), so it is better to generate a list of symbols to export.
+- always_export_symbols_F77=yes
+- if test "$aix_use_runtimelinking" = yes; then
+- # Warning - without using the other runtime loading flags (-brtl),
+- # -berok will link without error, but may produce a broken library.
+- allow_undefined_flag_F77='-berok'
+- # Determine the default libpath from the value encoded in an empty executable.
+- cat >conftest.$ac_ext <<_ACEOF
+- program main
+-
+- end
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 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); } &&
+- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+-
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`; fi
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+- conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+-
+- hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+- archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+- else
+- if test "$host_cpu" = ia64; then
+- hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+- allow_undefined_flag_F77="-z nodefs"
+- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+- else
+- # Determine the default libpath from the value encoded in an empty executable.
+- cat >conftest.$ac_ext <<_ACEOF
+- program main
+-
+- end
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 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); } &&
+- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+-
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+-}'`; fi
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+- conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+-
+- hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+- # Warning - without using the other run time loading flags,
+- # -berok will link without error, but may produce a broken library.
+- no_undefined_flag_F77=' ${wl}-bernotok'
+- allow_undefined_flag_F77=' ${wl}-berok'
+- # Exported symbols can be pulled into shared objects from archives
+- whole_archive_flag_spec_F77='$convenience'
+- archive_cmds_need_lc_F77=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+- fi
+- fi
+- ;;
+-
+- amigaos*)
+- archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_minus_L_F77=yes
+- # see comment about different semantics on the GNU ld section
+- ld_shlibs_F77=no
++ linux*)
++ case $CC in
++ icc* | ecc*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ lt_prog_compiler_pic_F77='-KPIC'
++ lt_prog_compiler_static_F77='-static'
++ ;;
++ ccc*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ # All Alpha code is PIC.
++ lt_prog_compiler_static_F77='-non_shared'
++ ;;
++ esac
+ ;;
+
+- bsdi[45]*)
+- export_dynamic_flag_spec_F77=-rdynamic
++ osf3* | osf4* | osf5*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ # All OSF/1 code is PIC.
++ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+- cygwin* | mingw* | pw32*)
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- # hardcode_libdir_flag_spec is actually meaningless, as there is
+- # no search path for DLLs.
+- hardcode_libdir_flag_spec_F77=' '
+- allow_undefined_flag_F77=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_From_new_cmds_F77='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes_F77=yes
++ sco3.2v5*)
++ lt_prog_compiler_pic_F77='-Kpic'
++ lt_prog_compiler_static_F77='-dn'
+ ;;
+
+- darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[012])
+- allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[012])
+- allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
+- archive_cmds_need_lc_F77=no
+- hardcode_direct_F77=no
+- hardcode_automatic_F77=yes
+- hardcode_shlibpath_var_F77=unsupported
+- whole_archive_flag_spec_F77=''
+- link_all_deplibs_F77=yes
+- if test "$GCC" = yes ; then
+- output_verbose_link_cmd='echo'
+- archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- module_cmds_F77='$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 lds
+- archive_expsym_cmds_F77='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}'
+- module_expsym_cmds_F77='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}'
+- else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+- module_cmds_F77='$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 lds
+- archive_expsym_cmds_F77='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}'
+- module_expsym_cmds_F77='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}'
+- ;;
+- *)
+- ld_shlibs_F77=no
+- ;;
+- esac
+- fi
++ solaris*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ lt_prog_compiler_pic_F77='-KPIC'
++ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+- dgux*)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_shlibpath_var_F77=no
++ sunos4*)
++ lt_prog_compiler_wl_F77='-Qoption ld '
++ lt_prog_compiler_pic_F77='-PIC'
++ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+- freebsd1*)
+- ld_shlibs_F77=no
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
++ lt_prog_compiler_wl_F77='-Wl,'
++ lt_prog_compiler_pic_F77='-KPIC'
++ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+- # support. Future versions do this automatically, but an explicit c++rt0.o
+- # does not break anything, and helps significantly (at the cost of a little
+- # extra space).
+- freebsd2.2*)
+- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
++ sysv4*MP*)
++ if test -d /usr/nec ;then
++ lt_prog_compiler_pic_F77='-Kconform_pic'
++ lt_prog_compiler_static_F77='-Bstatic'
++ fi
+ ;;
+
+- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+- freebsd2*)
+- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_F77=yes
+- hardcode_minus_L_F77=yes
+- hardcode_shlibpath_var_F77=no
++ uts4*)
++ lt_prog_compiler_pic_F77='-pic'
++ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd* | dragonfly*)
+- archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
++ *)
++ lt_prog_compiler_can_build_shared_F77=no
+ ;;
++ esac
++ fi
+
+- hpux9*)
+- if test "$GCC" = yes; then
+- archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+- else
+- archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+- fi
+- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
+- hardcode_direct_F77=yes
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_F77=yes
+- export_dynamic_flag_spec_F77='${wl}-E'
+- ;;
++#
++# Check to make sure the PIC flag actually works.
++#
++if test -n "$lt_prog_compiler_pic_F77"; then
+
+- hpux10*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
++echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
++if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_prog_compiler_pic_works_F77=no
++ ac_outfile=conftest.$ac_objext
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++ lt_compiler_flag="$lt_prog_compiler_pic_F77"
++ # Insert the option either (1) after the last *FLAGS variable, or
++ # (2) before a word containing "conftest.", or (3) at the end.
++ # Note that $ac_compile itself does not contain backslashes and begins
++ # with a dollar sign (not a hyphen), so the echo should work correctly.
++ # The option is referenced via a variable to avoid confusing sed.
++ lt_compile=`echo "$ac_compile" | $SED \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
++ -e 's:$: $lt_compiler_flag:'`
++ (eval echo "\"\$as_me:13654: $lt_compile\"" >&5)
++ (eval "$lt_compile" 2>conftest.err)
++ ac_status=$?
++ cat conftest.err >&5
++ echo "$as_me:13658: \$? = $ac_status" >&5
++ if (exit $ac_status) && test -s "$ac_outfile"; then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
++ lt_prog_compiler_pic_works_F77=yes
++ fi
++ fi
++ $rm conftest*
+
+- hardcode_direct_F77=yes
+- export_dynamic_flag_spec_F77='${wl}-E'
++fi
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_F77=yes
+- fi
+- ;;
++if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
++ case $lt_prog_compiler_pic_F77 in
++ "" | " "*) ;;
++ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
++ esac
++else
++ lt_prog_compiler_pic_F77=
++ lt_prog_compiler_can_build_shared_F77=no
++fi
+
+- hpux11*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- else
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- *)
+- archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- esac
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
++fi
++case "$host_os" in
++ # For platforms which do not support PIC, -DPIC is meaningless:
++ *djgpp*)
++ lt_prog_compiler_pic_F77=
++ ;;
++ *)
++ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
++ ;;
++esac
+
+- case $host_cpu in
+- hppa*64*|ia64*)
+- hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+- hardcode_direct_F77=no
+- hardcode_shlibpath_var_F77=no
+- ;;
+- *)
+- hardcode_direct_F77=yes
+- export_dynamic_flag_spec_F77='${wl}-E'
++echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
++if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ lt_cv_prog_compiler_c_o_F77=no
++ $rm -r conftest 2>/dev/null
++ mkdir conftest
++ cd conftest
++ mkdir out
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_F77=yes
+- ;;
+- esac
++ lt_compiler_flag="-o out/conftest2.$ac_objext"
++ # Insert the option either (1) after the last *FLAGS variable, or
++ # (2) before a word containing "conftest.", or (3) at the end.
++ # Note that $ac_compile itself does not contain backslashes and begins
++ # with a dollar sign (not a hyphen), so the echo should work correctly.
++ lt_compile=`echo "$ac_compile" | $SED \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
++ -e 's:$: $lt_compiler_flag:'`
++ (eval echo "\"\$as_me:13714: $lt_compile\"" >&5)
++ (eval "$lt_compile" 2>out/conftest.err)
++ ac_status=$?
++ cat out/conftest.err >&5
++ echo "$as_me:13718: \$? = $ac_status" >&5
++ if (exit $ac_status) && test -s out/conftest2.$ac_objext
++ then
++ # The compiler can only warn and ignore the option if not recognized
++ # So say no if there are warnings
++ if test ! -s out/conftest.err; then
++ lt_cv_prog_compiler_c_o_F77=yes
++ fi
++ fi
++ chmod u+w .
++ $rm conftest*
++ # SGI C++ compiler will create directory out/ii_files/ for
++ # template instantiation
++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
++ $rm out/* && rmdir out
++ cd ..
++ rmdir conftest
++ $rm conftest*
++
++fi
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
++
++
++hard_links="nottested"
++if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
++ # do not overwrite the value of need_locks provided by the user
++ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
++ hard_links=yes
++ $rm conftest*
++ ln conftest.a conftest.b 2>/dev/null && hard_links=no
++ touch conftest.a
++ ln conftest.a conftest.b 2>&5 || hard_links=no
++ ln conftest.a conftest.b 2>/dev/null && hard_links=no
++ echo "$as_me:$LINENO: result: $hard_links" >&5
++echo "${ECHO_T}$hard_links" >&6
++ if test "$hard_links" = no; then
++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
++ need_locks=warn
++ fi
++else
++ need_locks=no
++fi
++
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
++
++ runpath_var=
++ allow_undefined_flag_F77=
++ enable_shared_with_static_runtimes_F77=no
++ archive_cmds_F77=
++ archive_expsym_cmds_F77=
++ old_archive_From_new_cmds_F77=
++ old_archive_from_expsyms_cmds_F77=
++ export_dynamic_flag_spec_F77=
++ whole_archive_flag_spec_F77=
++ thread_safe_flag_spec_F77=
++ hardcode_libdir_flag_spec_F77=
++ hardcode_libdir_flag_spec_ld_F77=
++ hardcode_libdir_separator_F77=
++ hardcode_direct_F77=no
++ hardcode_minus_L_F77=no
++ hardcode_shlibpath_var_F77=unsupported
++ link_all_deplibs_F77=unknown
++ hardcode_automatic_F77=no
++ module_cmds_F77=
++ module_expsym_cmds_F77=
++ always_export_symbols_F77=no
++ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
++ # include_expsyms should be a list of space-separated symbols to be *always*
++ # included in the symbol list
++ include_expsyms_F77=
++ # exclude_expsyms can be an extended regexp of symbols to exclude
++ # it will be wrapped by ` (' and `)$', so one must not match beginning or
++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
++ # as well as any symbol that contains `d'.
++ exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
++ # platforms (ab)use it in PIC code, but their linkers get confused if
++ # the symbol is explicitly referenced. Since portable code cannot
++ # rely on this symbol name, it's probably fine to never include it in
++ # preloaded symbol tables.
++ extract_expsyms_cmds=
++
++ case $host_os in
++ cygwin* | mingw* | pw32*)
++ # FIXME: the MSVC++ port hasn't been tested in a loooong time
++ # When not using gcc, we currently assume that we are using
++ # Microsoft Visual C++.
++ if test "$GCC" != yes; then
++ with_gnu_ld=no
++ fi
++ ;;
++ openbsd*)
++ with_gnu_ld=no
++ ;;
++ esac
++
++ ld_shlibs_F77=yes
++ if test "$with_gnu_ld" = yes; then
++ # If archive_cmds runs LD, not CC, wlarc should be empty
++ wlarc='${wl}'
++
++ # See if GNU ld supports shared libraries.
++ case $host_os in
++ aix3* | aix4* | aix5*)
++ # On AIX/PPC, the GNU linker is very broken
++ if test "$host_cpu" != ia64; then
++ ld_shlibs_F77=no
++ cat <<EOF 1>&2
++
++*** Warning: the GNU linker, at least up to release 2.9.1, is reported
++*** to be unable to reliably create shared libraries on AIX.
++*** Therefore, libtool is disabling shared libraries support. If you
++*** really care for shared libraries, you may want to modify your PATH
++*** so that a non-GNU linker is found, and then restart.
++
++EOF
+ fi
+ ;;
+
+- irix5* | irix6* | nonstopux*)
+- if test "$GCC" = yes; then
+- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- else
+- archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+- hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+- fi
+- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
+- link_all_deplibs_F77=yes
++ amigaos*)
++ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_minus_L_F77=yes
++
++ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
++ # that the semantics of dynamic libraries on AmigaOS, at least up
++ # to version 4, is to share data among multiple programs linked
++ # with the same dynamic library. Since this doesn't match the
++ # behavior of shared libraries on other platforms, we can't use
++ # them.
++ ld_shlibs_F77=no
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
++ beos*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ allow_undefined_flag_F77=unsupported
++ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
++ # support --undefined. This deserves some investigation. FIXME
++ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+- archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+- fi
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
+- ;;
+-
+- newsos6)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_F77=yes
+- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
+- hardcode_shlibpath_var_F77=no
+- ;;
+-
+- openbsd*)
+- hardcode_direct_F77=yes
+- hardcode_shlibpath_var_F77=no
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_F77='${wl}-E'
+- else
+- case $host_os in
+- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- ;;
+- *)
+- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+- ;;
+- esac
++ ld_shlibs_F77=no
+ fi
+ ;;
+
+- os2*)
++ cygwin* | mingw* | pw32*)
++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
++ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_minus_L_F77=yes
+ allow_undefined_flag_F77=unsupported
+- archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+- old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+- ;;
++ always_export_symbols_F77=no
++ enable_shared_with_static_runtimes_F77=yes
++ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+- osf3*)
+- if test "$GCC" = yes; then
+- allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
++ # If the export-symbols file already is a .def file (1st line
++ # is EXPORTS), use it as is; otherwise, prepend...
++ archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ cp $export_symbols $output_objdir/$soname.def;
++ else
++ echo EXPORTS > $output_objdir/$soname.def;
++ cat $export_symbols >> $output_objdir/$soname.def;
++ fi~
++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+- allow_undefined_flag_F77=' -expect_unresolved \*'
+- archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ ld_shlibs=no
+ fi
+- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator_F77=:
+ ;;
+
+- osf4* | osf5*) # as osf3* with the addition of -msym flag
+- if test "$GCC" = yes; then
+- allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ netbsd*)
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
++ wlarc=
+ else
+- allow_undefined_flag_F77=' -expect_unresolved \*'
+- archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+- archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+-
+- # Both c and cxx compiler support -rpath directly
+- hardcode_libdir_flag_spec_F77='-rpath $libdir'
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+- hardcode_libdir_separator_F77=:
+ ;;
+
+- solaris*)
+- no_undefined_flag_F77=' -z text'
+- if test "$GCC" = yes; then
+- wlarc='${wl}'
+- archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
++ solaris* | sysv5*)
++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
++ ld_shlibs_F77=no
++ cat <<EOF 1>&2
++
++*** Warning: The releases 2.8.* of the GNU linker cannot reliably
++*** create shared libraries on Solaris systems. Therefore, libtool
++*** is disabling shared libraries support. We urge you to upgrade GNU
++*** binutils to release 2.9.1 or newer. Another option is to modify
++*** your PATH or compiler configuration so that the native linker is
++*** used, and then restart.
++
++EOF
++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+- wlarc=''
+- archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ ld_shlibs_F77=no
+ fi
+- hardcode_libdir_flag_spec_F77='-R$libdir'
+- hardcode_shlibpath_var_F77=no
+- case $host_os in
+- solaris2.[0-5] | solaris2.[0-5].*) ;;
+- *)
+- # The compiler driver will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl, iff we do not link with $LD.
+- # Luckily, gcc supports the same syntax we need for Sun Studio.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- case $wlarc in
+- '')
+- whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+- *)
+- whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+- esac ;;
+- esac
+- link_all_deplibs_F77=yes
+ ;;
+
+ sunos4*)
+- if test "x$host_vendor" = xsequent; then
+- # Use $CC to link under sequent, because it throws in some extra .o
+- # files that make .init and .fini sections work.
+- archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- hardcode_libdir_flag_spec_F77='-L$libdir'
++ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ wlarc=
+ hardcode_direct_F77=yes
+- hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+- sysv4)
+- case $host_vendor in
+- sni)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_F77=yes # is this really true???
+- ;;
+- siemens)
+- ## LD is ld it makes a PLAMLIB
+- ## CC just makes a GrossModule.
+- archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+- reload_cmds_F77='$CC -r -o $output$reload_objs'
+- hardcode_direct_F77=no
+- ;;
+- motorola)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+- ;;
++ linux*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_cmds_F77="$tmp_archive_cmds"
++ supports_anon_versioning=no
++ case `$LD -v 2>/dev/null` in
++ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
++ *\ 2.11.*) ;; # other 2.11 versions
++ *) supports_anon_versioning=yes ;;
+ esac
+- runpath_var='LD_RUN_PATH'
+- hardcode_shlibpath_var_F77=no
+- ;;
+-
+- sysv4.3*)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_shlibpath_var_F77=no
+- export_dynamic_flag_spec_F77='-Bexport'
+- ;;
+-
+- sysv4*MP*)
+- if test -d /usr/nec; then
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_shlibpath_var_F77=no
+- runpath_var=LD_RUN_PATH
+- hardcode_runpath_var=yes
+- ld_shlibs_F77=yes
++ if test $supports_anon_versioning = yes; then
++ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ archive_expsym_cmds_F77="$tmp_archive_cmds"
+ fi
+- ;;
+-
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+- no_undefined_flag_F77='${wl}-z,text'
+- archive_cmds_need_lc_F77=no
+- hardcode_shlibpath_var_F77=no
+- runpath_var='LD_RUN_PATH'
++ else
++ ld_shlibs_F77=no
++ fi
++ ;;
+
+- if test "$GCC" = yes; then
+- archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ *)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+- archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ ld_shlibs_F77=no
+ fi
+ ;;
++ esac
+
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- no_undefined_flag_F77='${wl}-z,text'
+- allow_undefined_flag_F77='${wl}-z,nodefs'
+- archive_cmds_need_lc_F77=no
+- hardcode_shlibpath_var_F77=no
+- hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- hardcode_libdir_separator_F77=':'
+- link_all_deplibs_F77=yes
+- export_dynamic_flag_spec_F77='${wl}-Bexport'
+- runpath_var='LD_RUN_PATH'
+-
+- if test "$GCC" = yes; then
+- archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ if test "$ld_shlibs_F77" = yes; then
++ runpath_var=LD_RUN_PATH
++ hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
++ export_dynamic_flag_spec_F77='${wl}--export-dynamic'
++ # ancient GNU ld didn't support --whole-archive et. al.
++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
++ whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+- archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ whole_archive_flag_spec_F77=
++ fi
++ fi
++ else
++ # PORTME fill in a description of your system's linker (not GNU ld)
++ case $host_os in
++ aix3*)
++ allow_undefined_flag_F77=unsupported
++ always_export_symbols_F77=yes
++ archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
++ # Note: this linker hardcodes the directories in LIBPATH if there
++ # are no directories specified by -L.
++ hardcode_minus_L_F77=yes
++ if test "$GCC" = yes && test -z "$link_static_flag"; then
++ # Neither direct hardcoding nor static linking is supported with a
++ # broken collect2.
++ hardcode_direct_F77=unsupported
+ fi
+ ;;
+
+- uts4*)
+- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+- hardcode_libdir_flag_spec_F77='-L$libdir'
+- hardcode_shlibpath_var_F77=no
+- ;;
++ aix4* | aix5*)
++ if test "$host_cpu" = ia64; then
++ # On IA64, the linker does run time linking by default, so we don't
++ # have to do anything special.
++ aix_use_runtimelinking=no
++ exp_sym_flag='-Bexport'
++ no_entry_flag=""
++ else
++ # If we're using GNU nm, then we don't want the "-C" option.
++ # -C means demangle to AIX nm, but means don't demangle with GNU nm
++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
++ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
++ else
++ export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
++ fi
++ aix_use_runtimelinking=no
+
+- *)
+- ld_shlibs_F77=no
+- ;;
+- esac
+- fi
++ # Test if we are trying to use run time linking or normal
++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
++ # need to do runtime linking.
++ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
++ for ld_flag in $LDFLAGS; do
++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
++ aix_use_runtimelinking=yes
++ break
++ fi
++ done
++ esac
+
+-{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+-echo "${ECHO_T}$ld_shlibs_F77" >&6; }
+-test "$ld_shlibs_F77" = no && can_build_shared=no
++ exp_sym_flag='-bexport'
++ no_entry_flag='-bnoentry'
++ fi
+
+-#
+-# Do we need to explicitly link libc?
+-#
+-case "x$archive_cmds_need_lc_F77" in
+-x|xyes)
+- # Assume -lc should be added
+- archive_cmds_need_lc_F77=yes
++ # When large executables or shared objects are built, AIX ld can
++ # have problems creating the table of contents. If linking a library
++ # or program results in "error TOC overflow" add -mminimal-toc to
++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+- if test "$enable_shared" = yes && test "$GCC" = yes; then
+- case $archive_cmds_F77 in
+- *'~'*)
+- # FIXME: we may have to deal with multi-command sequences.
+- ;;
+- '$CC '*)
+- # Test whether the compiler implicitly links with -lc since on some
+- # systems, -lgcc has to come before -lc. If gcc already passes -lc
+- # to ld, don't add -lc before -lgcc.
+- { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+- $rm conftest*
+- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++ archive_cmds_F77=''
++ hardcode_direct_F77=yes
++ hardcode_libdir_separator_F77=':'
++ link_all_deplibs_F77=yes
+
+- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
++ if test "$GCC" = yes; then
++ case $host_os in aix4.012|aix4.012.*)
++ # We only want to do this on AIX 4.2 and lower, the check
++ # below for broken collect2 doesn't work under 4.3+
++ collect2name=`${CC} -print-prog-name=collect2`
++ if test -f "$collect2name" && \
++ strings "$collect2name" | grep resolve_lib_name >/dev/null
++ then
++ # We have reworked collect2
++ hardcode_direct_F77=yes
++ else
++ # We have old collect2
++ hardcode_direct_F77=unsupported
++ # It fails to find uninstalled libraries when the uninstalled
++ # path is not listed in the libpath. Setting hardcode_minus_L
++ # to unsupported forces relinking
++ hardcode_minus_L_F77=yes
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_libdir_separator_F77=
++ fi
++ esac
++ shared_flag='-shared'
++ else
++ # not using gcc
++ if test "$host_cpu" = ia64; then
++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
++ # chokes on -Wl,-G. The following line is correct:
++ shared_flag='-G'
++ else
++ if test "$aix_use_runtimelinking" = yes; then
++ shared_flag='${wl}-G'
++ else
++ shared_flag='${wl}-bM:SRE'
++ fi
++ fi
++ fi
++
++ # It seems that -bexpall does not export symbols beginning with
++ # underscore (_), so it is better to generate a list of symbols to export.
++ always_export_symbols_F77=yes
++ if test "$aix_use_runtimelinking" = yes; then
++ # Warning - without using the other runtime loading flags (-brtl),
++ # -berok will link without error, but may produce a broken library.
++ allow_undefined_flag_F77='-berok'
++ # Determine the default libpath from the value encoded in an empty executable.
++ cat >conftest.$ac_ext <<_ACEOF
++ program main
++
++ end
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } 2>conftest.err; then
+- soname=conftest
+- lib=conftest
+- libobjs=conftest.$ac_objext
+- deplibs=
+- wl=$lt_prog_compiler_wl_F77
+- pic_flag=$lt_prog_compiler_pic_F77
+- compiler_flags=-v
+- linker_flags=-v
+- verstring=
+- output_objdir=.
+- libname=conftest
+- lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+- allow_undefined_flag_F77=
+- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+- (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
++ (exit $ac_status); } &&
++ { ac_try='test -z "$ac_f77_werror_flag"
++ || test ! -s conftest.err'
++ { (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
+- archive_cmds_need_lc_F77=no
+- else
+- archive_cmds_need_lc_F77=yes
+- fi
+- allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+- else
+- cat conftest.err 1>&5
+- fi
+- $rm conftest*
+- { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+-echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; }
+- ;;
+- esac
+- fi
+- ;;
+-esac
++ (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
+
+-{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+-library_names_spec=
+-libname_spec='lib$name'
+-soname_spec=
+-shrext_cmds=".so"
+-postinstall_cmds=
+-postuninstall_cmds=
+-finish_cmds=
+-finish_eval=
+-shlibpath_var=
+-shlibpath_overrides_runpath=unknown
+-version_type=none
+-dynamic_linker="$host_os ld.so"
+-sys_lib_dlsearch_path_spec="/lib /usr/lib"
+-if test "$GCC" = yes; then
+- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+- # if the path contains ";" then we assume it to be the separator
+- # otherwise default to the standard path separator (i.e. ":") - it is
+- # assumed that no part of a normal pathname contains ";" but that should
+- # okay in the real world where ";" in dirpaths is itself problematic.
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+- else
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+- fi
++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`
++# Check for a 64-bit object if we didn't find anything.
++if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`; fi
+ else
+- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
+ fi
+-need_lib_prefix=unknown
+-hardcode_into_libs=no
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+-# when you set need_version to no, make sure it does not cause -set_version
+-# flags to be left without arguments
+-need_version=unknown
++ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
++ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ else
++ if test "$host_cpu" = ia64; then
++ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
++ allow_undefined_flag_F77="-z nodefs"
++ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
++ else
++ # Determine the default libpath from the value encoded in an empty executable.
++ cat >conftest.$ac_ext <<_ACEOF
++ program main
+
+-case $host_os in
+-aix3*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+- shlibpath_var=LIBPATH
++ end
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_f77_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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
+
+- # AIX 3 has no versioning support, so we append a major version to the name.
+- soname_spec='${libname}${release}${shared_ext}$major'
+- ;;
++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`
++# Check for a 64-bit object if we didn't find anything.
++if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
++}'`; fi
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+-aix4* | aix5*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- hardcode_into_libs=yes
+- if test "$host_cpu" = ia64; then
+- # AIX 5 supports IA64
+- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- else
+- # With GCC up to 2.95.x, collect2 would create an import file
+- # for dependence libraries. The import file would start with
+- # the line `#! .'. This would cause the generated library to
+- # depend on `.', always an invalid library. This was fixed in
+- # development snapshots of GCC prior to 3.0.
+- case $host_os in
+- aix4 | aix4.[01] | aix4.[01].*)
+- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+- echo ' yes '
+- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+- :
+- else
+- can_build_shared=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++
++ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
++ # Warning - without using the other run time loading flags,
++ # -berok will link without error, but may produce a broken library.
++ no_undefined_flag_F77=' ${wl}-bernotok'
++ allow_undefined_flag_F77=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ always_export_symbols_F77=yes
++ # Exported symbols can be pulled into shared objects from archives
++ whole_archive_flag_spec_F77=' '
++ archive_cmds_need_lc_F77=yes
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ fi
+ fi
+ ;;
+- esac
+- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+- # soname into executable. Probably we can add versioning support to
+- # collect2, so additional links can be useful in future.
+- if test "$aix_use_runtimelinking" = yes; then
+- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+- # instead of lib<name>.a to let people know that these are not
+- # typical AIX shared libraries.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- else
+- # We preserve .a as extension for shared libraries through AIX4.2
+- # and later when we are not doing run time linking.
+- library_names_spec='${libname}${release}.a $libname.a'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- fi
+- shlibpath_var=LIBPATH
+- fi
+- ;;
+
+-amigaos*)
+- library_names_spec='$libname.ixlibrary $libname.a'
+- # Create ${libname}_ixlibrary.a entries in /sys/libs.
+- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+- ;;
++ amigaos*)
++ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_minus_L_F77=yes
++ # see comment about different semantics on the GNU ld section
++ ld_shlibs_F77=no
++ ;;
+
+-beos*)
+- library_names_spec='${libname}${shared_ext}'
+- dynamic_linker="$host_os ld.so"
+- shlibpath_var=LIBRARY_PATH
+- ;;
++ bsdi4*)
++ export_dynamic_flag_spec_F77=-rdynamic
++ ;;
+
+-bsdi[45]*)
+- version_type=linux
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+- # the default ld.so.conf also contains /usr/contrib/lib and
+- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+- # libtool to hard-code these into programs
+- ;;
++ cygwin* | mingw* | pw32*)
++ # When not using gcc, we currently assume that we are using
++ # Microsoft Visual C++.
++ # hardcode_libdir_flag_spec is actually meaningless, as there is
++ # no search path for DLLs.
++ hardcode_libdir_flag_spec_F77=' '
++ allow_undefined_flag_F77=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_From_new_cmds_F77='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
++ fix_srcfile_path='`cygpath -w "$srcfile"`'
++ enable_shared_with_static_runtimes_F77=yes
++ ;;
+
+-cygwin* | mingw* | pw32*)
+- version_type=windows
+- shrext_cmds=".dll"
+- need_version=no
+- need_lib_prefix=no
++ darwin* | rhapsody*)
++ if test "$GXX" = yes ; then
++ archive_cmds_need_lc_F77=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag_F77='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag_F77='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag_F77='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag_F77='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ archive_cmds_F77='$CC -r ${wl}-bind_at_load -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'
++ fi
++ module_cmds_F77='$CC ${wl}-bind_at_load $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
++ archive_expsym_cmds_F77='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}'
++ else
++ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ fi
++ module_expsym_cmds_F77='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}'
++ hardcode_direct_F77=no
++ hardcode_automatic_F77=yes
++ hardcode_shlibpath_var_F77=unsupported
++ whole_archive_flag_spec_F77='-all_load $convenience'
++ link_all_deplibs_F77=yes
++ else
++ ld_shlibs_F77=no
++ fi
++ ;;
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32*)
+- library_names_spec='$libname.dll.a'
+- # DLL is installed to $(libdir)/../bin by postinstall_cmds
+- postinstall_cmds='base_file=`basename \${file}`~
+- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+- dldir=$destdir/`dirname \$dlpath`~
+- test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
+- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+- dlpath=$dir/\$dldll~
+- $rm \$dlpath'
+- shlibpath_overrides_runpath=yes
++ dgux*)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+- case $host_os in
+- cygwin*)
+- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
++ freebsd1*)
++ ld_shlibs_F77=no
+ ;;
+- mingw*)
+- # MinGW DLLs use traditional 'lib' prefix
+- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+- # It is most probably a Windows format PATH printed by
+- # mingw gcc, but we are running on Cygwin. Gcc prints its search
+- # path with ; separators, and with drive letters. We can handle the
+- # drive letters (cygwin fileutils understands them), so leave them,
+- # especially as we might pass files found there to a mingw objdump,
+- # which wouldn't understand a cygwinified path. Ahh.
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+- else
+- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+- fi
++
++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
++ # support. Future versions do this automatically, but an explicit c++rt0.o
++ # does not break anything, and helps significantly (at the cost of a little
++ # extra space).
++ freebsd2.2*)
++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ hardcode_direct_F77=yes
++ hardcode_shlibpath_var_F77=no
+ ;;
+- pw32*)
+- # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++
++ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
++ freebsd2*)
++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=yes
++ hardcode_minus_L_F77=yes
++ hardcode_shlibpath_var_F77=no
+ ;;
+- esac
+- ;;
+
+- *)
+- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+- ;;
+- esac
+- dynamic_linker='Win32 ld.exe'
+- # FIXME: first we should search . and the directory the executable is in
+- shlibpath_var=PATH
+- ;;
++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
++ freebsd* | kfreebsd*-gnu)
++ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ hardcode_direct_F77=yes
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-darwin* | rhapsody*)
+- dynamic_linker="$host_os dyld"
+- version_type=darwin
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+- soname_spec='${libname}${release}${major}$shared_ext'
+- shlibpath_overrides_runpath=yes
+- shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+- if test "$GCC" = yes; then
+- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+- else
+- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+- fi
+- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+- ;;
++ hpux9*)
++ if test "$GCC" = yes; then
++ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ else
++ archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ fi
++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ hardcode_direct_F77=yes
+
+-dgux*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_F77=yes
++ export_dynamic_flag_spec_F77='${wl}-E'
++ ;;
+
+-freebsd1*)
+- dynamic_linker=no
+- ;;
++ hpux10* | hpux11*)
++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ ;;
++ *)
++ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ ;;
++ esac
++ else
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
++ ;;
++ *)
++ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
++ ;;
++ esac
++ fi
++ if test "$with_gnu_ld" = no; then
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
++ hardcode_libdir_flag_spec_ld_F77='+b $libdir'
++ hardcode_libdir_separator_F77=:
++ hardcode_direct_F77=no
++ hardcode_shlibpath_var_F77=no
++ ;;
++ ia64*)
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_direct_F77=no
++ hardcode_shlibpath_var_F77=no
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[123]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
+- version_type=freebsd-$objformat
+- case $version_type in
+- freebsd-elf*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- need_version=no
+- need_lib_prefix=no
+- ;;
+- freebsd-*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+- need_version=yes
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_F77=yes
++ ;;
++ *)
++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ hardcode_direct_F77=yes
++ export_dynamic_flag_spec_F77='${wl}-E'
++
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_F77=yes
++ ;;
++ esac
++ fi
+ ;;
+- esac
+- shlibpath_var=LD_LIBRARY_PATH
+- case $host_os in
+- freebsd2*)
+- shlibpath_overrides_runpath=yes
+- ;;
+- freebsd3.[01]* | freebsdelf3.[01]*)
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
+- esac
+- ;;
+
+-gnu*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- ;;
++ irix5* | irix6* | nonstopux*)
++ if test "$GCC" = yes; then
++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ else
++ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
++ fi
++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ link_all_deplibs_F77=yes
++ ;;
+
+-hpux9* | hpux10* | hpux11*)
+- # Give a soname corresponding to the major version so that dld.sl refuses to
+- # link against other versions.
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- case $host_cpu in
+- ia64*)
+- shrext_cmds='.so'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.so"
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- if test "X$HPUX_IA64_MODE" = X32; then
+- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+- else
+- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+- fi
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+- ;;
+- hppa*64*)
+- shrext_cmds='.sl'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+- ;;
+- *)
+- shrext_cmds='.sl'
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=SHLIB_PATH
+- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- ;;
+- esac
+- # HP-UX runs *really* slowly unless shared libraries are mode 555.
+- postinstall_cmds='chmod 555 $lib'
+- ;;
++ netbsd*)
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
++ else
++ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
++ fi
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ hardcode_direct_F77=yes
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
++ newsos6)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=yes
++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-irix5* | irix6* | nonstopux*)
+- case $host_os in
+- nonstopux*) version_type=nonstopux ;;
+- *)
+- if test "$lt_cv_prog_gnu_ld" = yes; then
+- version_type=linux
+- else
+- version_type=irix
+- fi ;;
+- esac
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+- case $host_os in
+- irix5* | nonstopux*)
+- libsuff= shlibsuff=
+- ;;
+- *)
+- case $LD in # libtool.m4 will add one of these switches to LD
+- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+- libsuff= shlibsuff= libmagic=32-bit;;
+- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+- libsuff=32 shlibsuff=N32 libmagic=N32;;
+- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+- libsuff=64 shlibsuff=64 libmagic=64-bit;;
+- *) libsuff= shlibsuff= libmagic=never-match;;
+- esac
+- ;;
+- esac
+- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+- hardcode_into_libs=yes
+- ;;
++ openbsd*)
++ hardcode_direct_F77=yes
++ hardcode_shlibpath_var_F77=no
++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
++ export_dynamic_flag_spec_F77='${wl}-E'
++ else
++ case $host_os in
++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ ;;
++ *)
++ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
++ ;;
++ esac
++ fi
++ ;;
+
+-# No shared lib support for Linux oldld, aout, or coff.
+-linux*oldld* | linux*aout* | linux*coff*)
+- dynamic_linker=no
+- ;;
++ os2*)
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_minus_L_F77=yes
++ allow_undefined_flag_F77=unsupported
++ archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
++ old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
++ ;;
+
+-# This must be Linux ELF.
+-linux* | k*bsd*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- # This implies no fast_install, which is unacceptable.
+- # Some rework will be needed to allow for fast_install
+- # before this can be enabled.
+- hardcode_into_libs=yes
++ osf3*)
++ if test "$GCC" = yes; then
++ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
++ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ else
++ allow_undefined_flag_F77=' -expect_unresolved \*'
++ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ fi
++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator_F77=:
++ ;;
+
+- # Append ld.so.conf contents to the search path
+- if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+- fi
++ osf4* | osf5*) # as osf3* with the addition of -msym flag
++ if test "$GCC" = yes; then
++ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
++ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
++ else
++ allow_undefined_flag_F77=' -expect_unresolved \*'
++ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
++ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+- # We used to test for /lib/ld.so.1 and disable shared libraries on
+- # powerpc, because MkLinux only supported shared libraries with the
+- # GNU dynamic linker. Since this was broken with cross compilers,
+- # most powerpc-linux boxes support dynamic linking these days and
+- # people can always --disable-shared, the test was removed, and we
+- # assume the GNU/Linux dynamic linker is in use.
+- dynamic_linker='GNU/Linux ld.so'
+- ;;
++ # Both c and cxx compiler support -rpath directly
++ hardcode_libdir_flag_spec_F77='-rpath $libdir'
++ fi
++ hardcode_libdir_separator_F77=:
++ ;;
+
+-netbsdelf*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
+- ;;
++ sco3.2v5*)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_F77=no
++ export_dynamic_flag_spec_F77='${wl}-Bexport'
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ;;
+
+-netbsd*)
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- dynamic_linker='NetBSD (a.out) ld.so'
+- else
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='NetBSD ld.elf_so'
+- fi
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
++ solaris*)
++ no_undefined_flag_F77=' -z text'
++ if test "$GCC" = yes; then
++ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
++ else
++ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ fi
++ hardcode_libdir_flag_spec_F77='-R$libdir'
++ hardcode_shlibpath_var_F77=no
++ case $host_os in
++ solaris2.[0-5] | solaris2.[0-5].*) ;;
++ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
++ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
++ esac
++ link_all_deplibs_F77=yes
++ ;;
+
+-newsos6)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- ;;
++ sunos4*)
++ if test "x$host_vendor" = xsequent; then
++ # Use $CC to link under sequent, because it throws in some extra .o
++ # files that make .init and .fini sections work.
++ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
++ else
++ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
++ fi
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_direct_F77=yes
++ hardcode_minus_L_F77=yes
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-nto-qnx*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- ;;
+-
+-openbsd*)
+- version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+- need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- case $host_os in
+- openbsd2.[89] | openbsd2.[89].*)
+- shlibpath_overrides_runpath=no
++ sysv4)
++ case $host_vendor in
++ sni)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=yes # is this really true???
+ ;;
+- *)
+- shlibpath_overrides_runpath=yes
++ siemens)
++ ## LD is ld it makes a PLAMLIB
++ ## CC just makes a GrossModule.
++ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ reload_cmds_F77='$CC -r -o $output$reload_objs'
++ hardcode_direct_F77=no
++ ;;
++ motorola)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+- else
+- shlibpath_overrides_runpath=yes
+- fi
+- ;;
+-
+-os2*)
+- libname_spec='$name'
+- shrext_cmds=".dll"
+- need_lib_prefix=no
+- library_names_spec='$libname${shared_ext} $libname.a'
+- dynamic_linker='OS/2 ld.exe'
+- shlibpath_var=LIBPATH
+- ;;
+-
+-osf3* | osf4* | osf5*)
+- version_type=osf
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+- ;;
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-solaris*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- # ldd complains unless libraries are executable
+- postinstall_cmds='chmod +x $lib'
+- ;;
++ sysv4.3*)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_F77=no
++ export_dynamic_flag_spec_F77='-Bexport'
++ ;;
+
+-sunos4*)
+- version_type=sunos
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- if test "$with_gnu_ld" = yes; then
+- need_lib_prefix=no
+- fi
+- need_version=yes
+- ;;
++ sysv4*MP*)
++ if test -d /usr/nec; then
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_F77=no
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ld_shlibs_F77=yes
++ fi
++ ;;
+
+-sysv4 | sysv4.3*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- case $host_vendor in
+- sni)
+- shlibpath_overrides_runpath=no
+- need_lib_prefix=no
+- export_dynamic_flag_spec='${wl}-Blargedynsym'
++ sysv4.2uw2*)
++ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_F77=yes
++ hardcode_minus_L_F77=no
++ hardcode_shlibpath_var_F77=no
++ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+- siemens)
+- need_lib_prefix=no
++
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
++ no_undefined_flag_F77='${wl}-z ${wl}text'
++ if test "$GCC" = yes; then
++ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ else
++ archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ fi
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var_F77=no
+ ;;
+- motorola)
+- need_lib_prefix=no
+- need_version=no
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
++
++ sysv5*)
++ no_undefined_flag_F77=' -z text'
++ # $CC -shared without GNU ld will not create a library from C++
++ # object files and a static libstdc++, better avoid it by now
++ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ hardcode_libdir_flag_spec_F77=
++ hardcode_shlibpath_var_F77=no
++ runpath_var='LD_RUN_PATH'
+ ;;
+- esac
+- ;;
+
+-sysv4*MP*)
+- if test -d /usr/nec ;then
+- version_type=linux
+- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+- soname_spec='$libname${shared_ext}.$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- fi
+- ;;
++ uts4*)
++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_libdir_flag_spec_F77='-L$libdir'
++ hardcode_shlibpath_var_F77=no
++ ;;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
++ *)
++ ld_shlibs_F77=no
++ ;;
+ esac
+ fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
+-
+-uts4*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
+
+-*)
+- dynamic_linker=no
+- ;;
+-esac
+-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+-echo "${ECHO_T}$dynamic_linker" >&6; }
+-test "$dynamic_linker" = no && can_build_shared=no
++echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
++echo "${ECHO_T}$ld_shlibs_F77" >&6
++test "$ld_shlibs_F77" = no && can_build_shared=no
+
+ variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+ if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+ fi
+
+-{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+-hardcode_action_F77=
+-if test -n "$hardcode_libdir_flag_spec_F77" || \
+- test -n "$runpath_var_F77" || \
+- test "X$hardcode_automatic_F77" = "Xyes" ; then
++#
++# Do we need to explicitly link libc?
++#
++case "x$archive_cmds_need_lc_F77" in
++x|xyes)
++ # Assume -lc should be added
++ archive_cmds_need_lc_F77=yes
+
+- # We can hardcode non-existant directories.
+- if test "$hardcode_direct_F77" != no &&
+- # If the only mechanism to avoid hardcoding is shlibpath_var, we
+- # have to relink, otherwise we might link with an installed library
+- # when we should be linking with a yet-to-be-installed one
+- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+- test "$hardcode_minus_L_F77" != no; then
+- # Linking always hardcodes the temporary library directory.
+- hardcode_action_F77=relink
+- else
+- # We can link without hardcoding, and we can hardcode nonexisting dirs.
+- hardcode_action_F77=immediate
++ if test "$enable_shared" = yes && test "$GCC" = yes; then
++ case $archive_cmds_F77 in
++ *'~'*)
++ # FIXME: we may have to deal with multi-command sequences.
++ ;;
++ '$CC '*)
++ # Test whether the compiler implicitly links with -lc since on some
++ # systems, -lgcc has to come before -lc. If gcc already passes -lc
++ # to ld, don't add -lc before -lgcc.
++ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
++ $rm conftest*
++ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
++
++ 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); } 2>conftest.err; then
++ soname=conftest
++ lib=conftest
++ libobjs=conftest.$ac_objext
++ deplibs=
++ wl=$lt_prog_compiler_wl_F77
++ compiler_flags=-v
++ linker_flags=-v
++ verstring=
++ output_objdir=.
++ libname=conftest
++ lt_save_allow_undefined_flag=$allow_undefined_flag_F77
++ allow_undefined_flag_F77=
++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
++ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++ then
++ archive_cmds_need_lc_F77=no
++ else
++ archive_cmds_need_lc_F77=yes
++ fi
++ allow_undefined_flag_F77=$lt_save_allow_undefined_flag
++ else
++ cat conftest.err 1>&5
++ fi
++ $rm conftest*
++ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
++echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
++ ;;
++ esac
+ fi
+-else
+- # We cannot hardcode anything, or else we can only hardcode existing
+- # directories.
+- hardcode_action_F77=unsupported
+-fi
+-{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+-echo "${ECHO_T}$hardcode_action_F77" >&6; }
++ ;;
++esac
+
+-if test "$hardcode_action_F77" = relink; then
+- # Fast installation is not supported
+- enable_fast_install=no
+-elif test "$shlibpath_overrides_runpath" = yes ||
+- test "$enable_shared" = no; then
+- # Fast installation is not necessary
+- enable_fast_install=needless
+-fi
+-
+-
+-# The else clause should only fire when bootstrapping the
+-# libtool distribution, otherwise you forgot to ship ltmain.sh
+-# with your package, and you will get complaints that there are
+-# no rules to generate ltmain.sh.
+-if test -f "$ltmain"; then
+- # See if we are running on zsh, and set the options which allow our commands through
+- # without removal of \ escapes.
+- if test -n "${ZSH_VERSION+set}" ; then
+- setopt NO_GLOB_SUBST
++echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
++library_names_spec=
++libname_spec='lib$name'
++soname_spec=
++shrext_cmds=".so"
++postinstall_cmds=
++postuninstall_cmds=
++finish_cmds=
++finish_eval=
++shlibpath_var=
++shlibpath_overrides_runpath=unknown
++version_type=none
++dynamic_linker="$host_os ld.so"
++sys_lib_dlsearch_path_spec="/lib /usr/lib"
++if test "$GCC" = yes; then
++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
++ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
++ # if the path contains ";" then we assume it to be the separator
++ # otherwise default to the standard path separator (i.e. ":") - it is
++ # assumed that no part of a normal pathname contains ";" but that should
++ # okay in the real world where ";" in dirpaths is itself problematic.
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+- # Now quote all the things that may contain metacharacters while being
+- # careful not to overquote the AC_SUBSTed values. We take copies of the
+- # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+- SED SHELL STRIP \
+- libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+- old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+- deplibs_check_method reload_flag reload_cmds need_locks \
+- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+- lt_cv_sys_global_symbol_to_c_name_address \
+- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+- old_postinstall_cmds old_postuninstall_cmds \
+- compiler_F77 \
+- CC_F77 \
+- LD_F77 \
+- lt_prog_compiler_wl_F77 \
+- lt_prog_compiler_pic_F77 \
+- lt_prog_compiler_static_F77 \
+- lt_prog_compiler_no_builtin_flag_F77 \
+- export_dynamic_flag_spec_F77 \
+- thread_safe_flag_spec_F77 \
+- whole_archive_flag_spec_F77 \
+- enable_shared_with_static_runtimes_F77 \
+- old_archive_cmds_F77 \
+- old_archive_from_new_cmds_F77 \
+- predep_objects_F77 \
+- postdep_objects_F77 \
+- predeps_F77 \
+- postdeps_F77 \
+- compiler_lib_search_path_F77 \
+- archive_cmds_F77 \
+- archive_expsym_cmds_F77 \
+- postinstall_cmds_F77 \
+- postuninstall_cmds_F77 \
+- old_archive_from_expsyms_cmds_F77 \
+- allow_undefined_flag_F77 \
+- no_undefined_flag_F77 \
+- export_symbols_cmds_F77 \
+- hardcode_libdir_flag_spec_F77 \
+- hardcode_libdir_flag_spec_ld_F77 \
+- hardcode_libdir_separator_F77 \
+- hardcode_automatic_F77 \
+- module_cmds_F77 \
+- module_expsym_cmds_F77 \
+- lt_cv_prog_compiler_c_o_F77 \
+- exclude_expsyms_F77 \
+- include_expsyms_F77; do
++else
++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
++fi
++need_lib_prefix=unknown
++hardcode_into_libs=no
+
+- case $var in
+- old_archive_cmds_F77 | \
+- old_archive_from_new_cmds_F77 | \
+- archive_cmds_F77 | \
+- archive_expsym_cmds_F77 | \
+- module_cmds_F77 | \
+- module_expsym_cmds_F77 | \
+- old_archive_from_expsyms_cmds_F77 | \
+- export_symbols_cmds_F77 | \
+- extract_expsyms_cmds | reload_cmds | finish_cmds | \
+- postinstall_cmds | postuninstall_cmds | \
+- old_postinstall_cmds | old_postuninstall_cmds | \
+- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+- # Double-quote double-evaled strings.
+- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+- ;;
+- *)
+- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+- ;;
+- esac
+- done
++# when you set need_version to no, make sure it does not cause -set_version
++# flags to be left without arguments
++need_version=unknown
+
+- case $lt_echo in
+- *'\$0 --fallback-echo"')
+- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+- ;;
+- esac
++case $host_os in
++aix3*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
++ shlibpath_var=LIBPATH
+
+-cfgfile="$ofile"
++ # AIX 3 has no versioning support, so we append a major version to the name.
++ soname_spec='${libname}${release}${shared_ext}$major'
++ ;;
+
+- cat <<__EOF__ >> "$cfgfile"
+-# ### BEGIN LIBTOOL TAG CONFIG: $tagname
++aix4* | aix5*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ hardcode_into_libs=yes
++ if test "$host_cpu" = ia64; then
++ # AIX 5 supports IA64
++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ else
++ # With GCC up to 2.95.x, collect2 would create an import file
++ # for dependence libraries. The import file would start with
++ # the line `#! .'. This would cause the generated library to
++ # depend on `.', always an invalid library. This was fixed in
++ # development snapshots of GCC prior to 3.0.
++ case $host_os in
++ aix4 | aix4.[01] | aix4.[01].*)
++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
++ echo ' yes '
++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
++ :
++ else
++ can_build_shared=no
++ fi
++ ;;
++ esac
++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
++ # soname into executable. Probably we can add versioning support to
++ # collect2, so additional links can be useful in future.
++ if test "$aix_use_runtimelinking" = yes; then
++ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
++ # instead of lib<name>.a to let people know that these are not
++ # typical AIX shared libraries.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ else
++ # We preserve .a as extension for shared libraries through AIX4.2
++ # and later when we are not doing run time linking.
++ library_names_spec='${libname}${release}.a $libname.a'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ fi
++ shlibpath_var=LIBPATH
++ fi
++ ;;
+
+-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
++amigaos*)
++ library_names_spec='$libname.ixlibrary $libname.a'
++ # Create ${libname}_ixlibrary.a entries in /sys/libs.
++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
++ ;;
+
+-# Shell to use when invoking shell scripts.
+-SHELL=$lt_SHELL
++beos*)
++ library_names_spec='${libname}${shared_ext}'
++ dynamic_linker="$host_os ld.so"
++ shlibpath_var=LIBRARY_PATH
++ ;;
+
+-# Whether or not to build shared libraries.
+-build_libtool_libs=$enable_shared
++bsdi4*)
++ version_type=linux
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
++ # the default ld.so.conf also contains /usr/contrib/lib and
++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
++ # libtool to hard-code these into programs
++ ;;
+
+-# Whether or not to build static libraries.
+-build_old_libs=$enable_static
++cygwin* | mingw* | pw32*)
++ version_type=windows
++ shrext_cmds=".dll"
++ need_version=no
++ need_lib_prefix=no
+
+-# Whether or not to add -lc for building shared libraries.
+-build_libtool_need_lc=$archive_cmds_need_lc_F77
++ case $GCC,$host_os in
++ yes,cygwin* | yes,mingw* | yes,pw32*)
++ library_names_spec='$libname.dll.a'
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $rm \$dlpath'
++ shlibpath_overrides_runpath=yes
+
+-# Whether or not to disallow shared libs when runtime libs are static
+-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
++ case $host_os in
++ cygwin*)
++ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
++ ;;
++ mingw*)
++ # MinGW DLLs use traditional 'lib' prefix
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH printed by
++ # mingw gcc, but we are running on Cygwin. Gcc prints its search
++ # path with ; separators, and with drive letters. We can handle the
++ # drive letters (cygwin fileutils understands them), so leave them,
++ # especially as we might pass files found there to a mingw objdump,
++ # which wouldn't understand a cygwinified path. Ahh.
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ ;;
++ pw32*)
++ # pw32 DLLs use 'pw' prefix rather than 'lib'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
++ ;;
++ esac
++ ;;
+
+-# Whether or not to optimize for fast installation.
+-fast_install=$enable_fast_install
++ *)
++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ ;;
++ esac
++ dynamic_linker='Win32 ld.exe'
++ # FIXME: first we should search . and the directory the executable is in
++ shlibpath_var=PATH
++ ;;
+
+-# The host system.
+-host_alias=$host_alias
+-host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+-
+-# An echo program that does not interpret backslashes.
+-echo=$lt_echo
++darwin* | rhapsody*)
++ dynamic_linker="$host_os dyld"
++ version_type=darwin
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
++ soname_spec='${libname}${release}${major}$shared_ext'
++ shlibpath_overrides_runpath=yes
++ shlibpath_var=DYLD_LIBRARY_PATH
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
++ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
++ if test "$GCC" = yes; then
++ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
++ else
++ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
++ fi
++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
++ ;;
+
+-# The archiver.
+-AR=$lt_AR
+-AR_FLAGS=$lt_AR_FLAGS
++dgux*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
+
+-# A C compiler.
+-LTCC=$lt_LTCC
++freebsd1*)
++ dynamic_linker=no
++ ;;
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
+
+-# A language-specific compiler.
+-CC=$lt_compiler_F77
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
++ version_type=freebsd-$objformat
++ case $version_type in
++ freebsd-elf*)
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
++ need_version=no
++ need_lib_prefix=no
++ ;;
++ freebsd-*)
++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
++ need_version=yes
++ ;;
++ esac
++ shlibpath_var=LD_LIBRARY_PATH
++ case $host_os in
++ freebsd2*)
++ shlibpath_overrides_runpath=yes
++ ;;
++ freebsd3.01* | freebsdelf3.01*)
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ ;;
++ *) # from 3.2 on
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ ;;
++ esac
++ ;;
+
+-# Is the compiler the GNU C compiler?
+-with_gcc=$GCC_F77
++gnu*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ hardcode_into_libs=yes
++ ;;
+
+-# An ERE matcher.
+-EGREP=$lt_EGREP
++hpux9* | hpux10* | hpux11*)
++ # Give a soname corresponding to the major version so that dld.sl refuses to
++ # link against other versions.
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=no
++ case "$host_cpu" in
++ ia64*)
++ shrext_cmds='.so'
++ hardcode_into_libs=yes
++ dynamic_linker="$host_os dld.so"
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ if test "X$HPUX_IA64_MODE" = X32; then
++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
++ else
++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
++ fi
++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
++ ;;
++ hppa*64*)
++ shrext_cmds='.sl'
++ hardcode_into_libs=yes
++ dynamic_linker="$host_os dld.sl"
++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
++ ;;
++ *)
++ shrext_cmds='.sl'
++ dynamic_linker="$host_os dld.sl"
++ shlibpath_var=SHLIB_PATH
++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ ;;
++ esac
++ # HP-UX runs *really* slowly unless shared libraries are mode 555.
++ postinstall_cmds='chmod 555 $lib'
++ ;;
+
+-# The linker used to build libraries.
+-LD=$lt_LD_F77
++irix5* | irix6* | nonstopux*)
++ case $host_os in
++ nonstopux*) version_type=nonstopux ;;
++ *)
++ if test "$lt_cv_prog_gnu_ld" = yes; then
++ version_type=linux
++ else
++ version_type=irix
++ fi ;;
++ esac
++ need_lib_prefix=no
++ need_version=no
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
++ case $host_os in
++ irix5* | nonstopux*)
++ libsuff= shlibsuff=
++ ;;
++ *)
++ case $LD in # libtool.m4 will add one of these switches to LD
++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
++ libsuff= shlibsuff= libmagic=32-bit;;
++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
++ libsuff=32 shlibsuff=N32 libmagic=N32;;
++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
++ libsuff=64 shlibsuff=64 libmagic=64-bit;;
++ *) libsuff= shlibsuff= libmagic=never-match;;
++ esac
++ ;;
++ esac
++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
++ shlibpath_overrides_runpath=no
++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
++ hardcode_into_libs=yes
++ ;;
+
+-# Whether we need hard or soft links.
+-LN_S=$lt_LN_S
++# No shared lib support for Linux oldld, aout, or coff.
++linux*oldld* | linux*aout* | linux*coff*)
++ dynamic_linker=no
++ ;;
+
+-# A BSD-compatible nm program.
+-NM=$lt_NM
++# This must be Linux ELF.
++linux*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ # This implies no fast_install, which is unacceptable.
++ # Some rework will be needed to allow for fast_install
++ # before this can be enabled.
++ hardcode_into_libs=yes
+
+-# A symbol stripping program
+-STRIP=$lt_STRIP
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '#line 15028 "configure"' > conftest.$ac_ext
++ 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
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
+
+-# Used to examine libraries when file_magic_cmd begins "file"
+-MAGIC_CMD=$MAGIC_CMD
++ # Append ld.so.conf contents to the search path
++ if test -f /etc/ld.so.conf; then
++ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
++ fi
+
+-# Used on cygwin: DLL creation program.
+-DLLTOOL="$DLLTOOL"
++ # We used to test for /lib/ld.so.1 and disable shared libraries on
++ # powerpc, because MkLinux only supported shared libraries with the
++ # GNU dynamic linker. Since this was broken with cross compilers,
++ # most powerpc-linux boxes support dynamic linking these days and
++ # people can always --disable-shared, the test was removed, and we
++ # assume the GNU/Linux dynamic linker is in use.
++ dynamic_linker='GNU/Linux ld.so'
++ ;;
+
+-# Used on cygwin: object dumper.
+-OBJDUMP="$OBJDUMP"
++knetbsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
+
+-# Used on cygwin: assembler.
+-AS="$AS"
++netbsd*)
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=no
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
++ dynamic_linker='NetBSD (a.out) ld.so'
++ else
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ dynamic_linker='NetBSD ld.elf_so'
++ fi
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ ;;
+
+-# The name of the directory that contains temporary libtool files.
+-objdir=$objdir
++newsos6)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ ;;
+
+-# How to create reloadable object files.
+-reload_flag=$lt_reload_flag
+-reload_cmds=$lt_reload_cmds
++nto-qnx*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ ;;
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl_F77
++openbsd*)
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=yes
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++ case $host_os in
++ openbsd2.[89] | openbsd2.[89].*)
++ shlibpath_overrides_runpath=no
++ ;;
++ *)
++ shlibpath_overrides_runpath=yes
++ ;;
++ esac
++ else
++ shlibpath_overrides_runpath=yes
++ fi
++ ;;
+
+-# Object file suffix (normally "o").
+-objext="$ac_objext"
++os2*)
++ libname_spec='$name'
++ shrext_cmds=".dll"
++ need_lib_prefix=no
++ library_names_spec='$libname${shared_ext} $libname.a'
++ dynamic_linker='OS/2 ld.exe'
++ shlibpath_var=LIBPATH
++ ;;
+
+-# Old archive suffix (normally "a").
+-libext="$libext"
++osf3* | osf4* | osf5*)
++ version_type=osf
++ need_lib_prefix=no
++ need_version=no
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
++ ;;
+
+-# Shared library suffix (normally ".so").
+-shrext_cmds='$shrext_cmds'
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
+
+-# Executable file suffix (normally "").
+-exeext="$exeext"
++solaris*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ # ldd complains unless libraries are executable
++ postinstall_cmds='chmod +x $lib'
++ ;;
+
+-# Additional compiler flags for building library objects.
+-pic_flag=$lt_lt_prog_compiler_pic_F77
+-pic_mode=$pic_mode
++sunos4*)
++ version_type=sunos
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ if test "$with_gnu_ld" = yes; then
++ need_lib_prefix=no
++ fi
++ need_version=yes
++ ;;
+
+-# What is the maximum length of a command?
+-max_cmd_len=$lt_cv_sys_max_cmd_len
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ case $host_vendor in
++ sni)
++ shlibpath_overrides_runpath=no
++ need_lib_prefix=no
++ export_dynamic_flag_spec='${wl}-Blargedynsym'
++ runpath_var=LD_RUN_PATH
++ ;;
++ siemens)
++ need_lib_prefix=no
++ ;;
++ motorola)
++ need_lib_prefix=no
++ need_version=no
++ shlibpath_overrides_runpath=no
++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
++ ;;
++ esac
++ ;;
+
+-# Does compiler simultaneously support -c and -o options?
+-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
++sysv4*MP*)
++ if test -d /usr/nec ;then
++ version_type=linux
++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
++ soname_spec='$libname${shared_ext}.$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ fi
++ ;;
+
+-# Must we lock files when doing compilation?
+-need_locks=$lt_need_locks
++uts4*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
+
+-# Do we need the lib prefix for modules?
+-need_lib_prefix=$need_lib_prefix
++*)
++ dynamic_linker=no
++ ;;
++esac
++echo "$as_me:$LINENO: result: $dynamic_linker" >&5
++echo "${ECHO_T}$dynamic_linker" >&6
++test "$dynamic_linker" = no && can_build_shared=no
+
+-# Do we need a version for libraries?
+-need_version=$need_version
++echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
++hardcode_action_F77=
++if test -n "$hardcode_libdir_flag_spec_F77" || \
++ test -n "$runpath_var F77" || \
++ test "X$hardcode_automatic_F77"="Xyes" ; then
+
+-# Whether dlopen is supported.
+-dlopen_support=$enable_dlopen
++ # We can hardcode non-existant directories.
++ if test "$hardcode_direct_F77" != no &&
++ # If the only mechanism to avoid hardcoding is shlibpath_var, we
++ # have to relink, otherwise we might link with an installed library
++ # when we should be linking with a yet-to-be-installed one
++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
++ test "$hardcode_minus_L_F77" != no; then
++ # Linking always hardcodes the temporary library directory.
++ hardcode_action_F77=relink
++ else
++ # We can link without hardcoding, and we can hardcode nonexisting dirs.
++ hardcode_action_F77=immediate
++ fi
++else
++ # We cannot hardcode anything, or else we can only hardcode existing
++ # directories.
++ hardcode_action_F77=unsupported
++fi
++echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
++echo "${ECHO_T}$hardcode_action_F77" >&6
+
+-# Whether dlopen of programs is supported.
+-dlopen_self=$enable_dlopen_self
++if test "$hardcode_action_F77" = relink; then
++ # Fast installation is not supported
++ enable_fast_install=no
++elif test "$shlibpath_overrides_runpath" = yes ||
++ test "$enable_shared" = no; then
++ # Fast installation is not necessary
++ enable_fast_install=needless
++fi
+
+-# Whether dlopen of statically linked programs is supported.
+-dlopen_self_static=$enable_dlopen_self_static
++striplib=
++old_striplib=
++echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
++ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++else
++# FIXME - insert some real tests, host_os isn't really good enough
++ case $host_os in
++ darwin*)
++ if test -n "$STRIP" ; then
++ striplib="$STRIP -x"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++ ;;
++ *)
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++ ;;
++ esac
++fi
+
+-# Compiler flag to prevent dynamic linking.
+-link_static_flag=$lt_lt_prog_compiler_static_F77
+
+-# Compiler flag to turn off builtin functions.
+-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+-# Compiler flag to allow reflexive dlopens.
+-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
++# The else clause should only fire when bootstrapping the
++# libtool distribution, otherwise you forgot to ship ltmain.sh
++# with your package, and you will get complaints that there are
++# no rules to generate ltmain.sh.
++if test -f "$ltmain"; then
++ # See if we are running on zsh, and set the options which allow our commands through
++ # without removal of \ escapes.
++ if test -n "${ZSH_VERSION+set}" ; then
++ setopt NO_GLOB_SUBST
++ fi
++ # Now quote all the things that may contain metacharacters while being
++ # careful not to overquote the AC_SUBSTed values. We take copies of the
++ # variables and quote the copies for generation of the libtool script.
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
++ SED SHELL STRIP \
++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
++ deplibs_check_method reload_flag reload_cmds need_locks \
++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
++ lt_cv_sys_global_symbol_to_c_name_address \
++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
++ old_postinstall_cmds old_postuninstall_cmds \
++ compiler_F77 \
++ CC_F77 \
++ LD_F77 \
++ lt_prog_compiler_wl_F77 \
++ lt_prog_compiler_pic_F77 \
++ lt_prog_compiler_static_F77 \
++ lt_prog_compiler_no_builtin_flag_F77 \
++ export_dynamic_flag_spec_F77 \
++ thread_safe_flag_spec_F77 \
++ whole_archive_flag_spec_F77 \
++ enable_shared_with_static_runtimes_F77 \
++ old_archive_cmds_F77 \
++ old_archive_from_new_cmds_F77 \
++ predep_objects_F77 \
++ postdep_objects_F77 \
++ predeps_F77 \
++ postdeps_F77 \
++ compiler_lib_search_path_F77 \
++ archive_cmds_F77 \
++ archive_expsym_cmds_F77 \
++ postinstall_cmds_F77 \
++ postuninstall_cmds_F77 \
++ old_archive_from_expsyms_cmds_F77 \
++ allow_undefined_flag_F77 \
++ no_undefined_flag_F77 \
++ export_symbols_cmds_F77 \
++ hardcode_libdir_flag_spec_F77 \
++ hardcode_libdir_flag_spec_ld_F77 \
++ hardcode_libdir_separator_F77 \
++ hardcode_automatic_F77 \
++ module_cmds_F77 \
++ module_expsym_cmds_F77 \
++ lt_cv_prog_compiler_c_o_F77 \
++ exclude_expsyms_F77 \
++ include_expsyms_F77; do
+
+-# Compiler flag to generate shared objects directly from archives.
++ case $var in
++ old_archive_cmds_F77 | \
++ old_archive_from_new_cmds_F77 | \
++ archive_cmds_F77 | \
++ archive_expsym_cmds_F77 | \
++ module_cmds_F77 | \
++ module_expsym_cmds_F77 | \
++ old_archive_from_expsyms_cmds_F77 | \
++ export_symbols_cmds_F77 | \
++ extract_expsyms_cmds | reload_cmds | finish_cmds | \
++ postinstall_cmds | postuninstall_cmds | \
++ old_postinstall_cmds | old_postuninstall_cmds | \
++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
++ # Double-quote double-evaled strings.
++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
++ ;;
++ *)
++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
++ ;;
++ esac
++ done
++
++ case $lt_echo in
++ *'\$0 --fallback-echo"')
++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
++ ;;
++ esac
++
++cfgfile="$ofile"
++
++ cat <<__EOF__ >> "$cfgfile"
++# ### BEGIN LIBTOOL TAG CONFIG: $tagname
++
++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
++
++# Shell to use when invoking shell scripts.
++SHELL=$lt_SHELL
++
++# Whether or not to build shared libraries.
++build_libtool_libs=$enable_shared
++
++# Whether or not to build static libraries.
++build_old_libs=$enable_static
++
++# Whether or not to add -lc for building shared libraries.
++build_libtool_need_lc=$archive_cmds_need_lc_F77
++
++# Whether or not to disallow shared libs when runtime libs are static
++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
++
++# Whether or not to optimize for fast installation.
++fast_install=$enable_fast_install
++
++# The host system.
++host_alias=$host_alias
++host=$host
++
++# An echo program that does not interpret backslashes.
++echo=$lt_echo
++
++# The archiver.
++AR=$lt_AR
++AR_FLAGS=$lt_AR_FLAGS
++
++# A C compiler.
++LTCC=$lt_LTCC
++
++# A language-specific compiler.
++CC=$lt_compiler_F77
++
++# Is the compiler the GNU C compiler?
++with_gcc=$GCC_F77
++
++# An ERE matcher.
++EGREP=$lt_EGREP
++
++# The linker used to build libraries.
++LD=$lt_LD_F77
++
++# Whether we need hard or soft links.
++LN_S=$lt_LN_S
++
++# A BSD-compatible nm program.
++NM=$lt_NM
++
++# A symbol stripping program
++STRIP=$lt_STRIP
++
++# Used to examine libraries when file_magic_cmd begins "file"
++MAGIC_CMD=$MAGIC_CMD
++
++# Used on cygwin: DLL creation program.
++DLLTOOL="$DLLTOOL"
++
++# Used on cygwin: object dumper.
++OBJDUMP="$OBJDUMP"
++
++# Used on cygwin: assembler.
++AS="$AS"
++
++# The name of the directory that contains temporary libtool files.
++objdir=$objdir
++
++# How to create reloadable object files.
++reload_flag=$lt_reload_flag
++reload_cmds=$lt_reload_cmds
++
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl_F77
++
++# Object file suffix (normally "o").
++objext="$ac_objext"
++
++# Old archive suffix (normally "a").
++libext="$libext"
++
++# Shared library suffix (normally ".so").
++shrext_cmds='$shrext_cmds'
++
++# Executable file suffix (normally "").
++exeext="$exeext"
++
++# Additional compiler flags for building library objects.
++pic_flag=$lt_lt_prog_compiler_pic_F77
++pic_mode=$pic_mode
++
++# What is the maximum length of a command?
++max_cmd_len=$lt_cv_sys_max_cmd_len
++
++# Does compiler simultaneously support -c and -o options?
++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
++
++# Must we lock files when doing compilation ?
++need_locks=$lt_need_locks
++
++# Do we need the lib prefix for modules?
++need_lib_prefix=$need_lib_prefix
++
++# Do we need a version for libraries?
++need_version=$need_version
++
++# Whether dlopen is supported.
++dlopen_support=$enable_dlopen
++
++# Whether dlopen of programs is supported.
++dlopen_self=$enable_dlopen_self
++
++# Whether dlopen of statically linked programs is supported.
++dlopen_self_static=$enable_dlopen_self_static
++
++# Compiler flag to prevent dynamic linking.
++link_static_flag=$lt_lt_prog_compiler_static_F77
++
++# Compiler flag to turn off builtin functions.
++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
++
++# Compiler flag to allow reflexive dlopens.
++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
++
++# Compiler flag to generate shared objects directly from archives.
+ whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+ # Compiler flag to generate thread-safe objects.
+@@ -16786,6 +15709,7 @@
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
++
+ # Source file extension for Java test sources.
+ ac_ext=java
+
+@@ -16797,55 +15721,26 @@
+ lt_simple_compile_test_code="class foo {}\n"
+
+ # Code to be used in simple link tests
+-lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
++lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ CC=${GCJ-"gcj"}
+ compiler=$CC
+ compiler_GCJ=$CC
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-
+
+ # GCJ did not exist at the time GCC didn't implicitly link libc in.
+ archive_cmds_need_lc_GCJ=no
+
+-old_archive_cmds_GCJ=$old_archive_cmds
+-
+
+ lt_prog_compiler_no_builtin_flag_GCJ=
+
+@@ -16853,8 +15748,8 @@
+ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+-{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+ if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -16868,28 +15763,26 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:16874: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:15769: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:16878: \$? = $ac_status" >&5
++ echo "$as_me:15773: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+ if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+@@ -16903,8 +15796,8 @@
+ lt_prog_compiler_pic_GCJ=
+ lt_prog_compiler_static_GCJ=
+
+-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_GCJ='-Wl,'
+@@ -16942,11 +15835,6 @@
+ lt_prog_compiler_pic_GCJ='-fno-common'
+ ;;
+
+- interix3*)
+- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+- # Instead, we relocate shared libraries at runtime.
+- ;;
+-
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+@@ -16963,7 +15851,7 @@
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -16989,16 +15877,6 @@
+ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+- darwin*)
+- # PIC is the default on this platform
+- # Common symbols not allowed in MH_DYLIB files
+- case $cc_basename in
+- xlc*)
+- lt_prog_compiler_pic_GCJ='-qnocommon'
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- ;;
+- esac
+- ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+@@ -17010,7 +15888,7 @@
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+- case $host_cpu in
++ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+@@ -17033,20 +15911,13 @@
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+- linux* | k*bsd*-gnu)
+- case $cc_basename in
++ linux*)
++ case $CC in
+ icc* | ecc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-static'
+ ;;
+- pgcc* | pgf77* | pgf90* | pgf95*)
+- # Portland Group compilers (*not* the Pentium gcc compiler,
+- # which looks to be a dead project)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_pic_GCJ='-fpic'
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- ;;
+ ccc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All Alpha code is PIC.
+@@ -17061,15 +15932,15 @@
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
++ sco3.2v5*)
++ lt_prog_compiler_pic_GCJ='-Kpic'
++ lt_prog_compiler_static_GCJ='-dn'
++ ;;
++
+ solaris*)
++ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+- case $cc_basename in
+- f77* | f90* | f95*)
+- lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+- *)
+- lt_prog_compiler_wl_GCJ='-Wl,';;
+- esac
+ ;;
+
+ sunos4*)
+@@ -17078,7 +15949,7 @@
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+- sysv4 | sysv4.2uw2* | sysv4.3*)
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+@@ -17091,17 +15962,6 @@
+ fi
+ ;;
+
+- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_pic_GCJ='-KPIC'
+- lt_prog_compiler_static_GCJ='-Bstatic'
+- ;;
+-
+- unicos*)
+- lt_prog_compiler_wl_GCJ='-Wl,'
+- lt_prog_compiler_can_build_shared_GCJ=no
+- ;;
+-
+ uts4*)
+ lt_prog_compiler_pic_GCJ='-pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+@@ -17113,16 +15973,16 @@
+ esac
+ fi
+
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+ #
+ # Check to make sure the PIC flag actually works.
+ #
+ if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+-{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
+ if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -17136,28 +15996,26 @@
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:17142: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:16002: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:17146: \$? = $ac_status" >&5
++ echo "$as_me:16006: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings other than the usual output.
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
++ # So say no if there are warnings
++ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works_GCJ=yes
+ fi
+ fi
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+-echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; }
++echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
++echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+ if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+ case $lt_prog_compiler_pic_GCJ in
+@@ -17170,7 +16028,7 @@
+ fi
+
+ fi
+-case $host_os in
++case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_GCJ=
+@@ -17180,50 +16038,8 @@
+ ;;
+ esac
+
+-#
+-# Check to make sure the static flag actually works.
+-#
+-wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
+-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+-if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- lt_prog_compiler_static_works_GCJ=no
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+- # The linker can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+- if diff conftest.exp conftest.er2 >/dev/null; then
+- lt_prog_compiler_static_works_GCJ=yes
+- fi
+- else
+- lt_prog_compiler_static_works_GCJ=yes
+- fi
+- fi
+- $rm conftest*
+- LDFLAGS="$save_LDFLAGS"
+-
+-fi
+-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
+-echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; }
+-
+-if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
+- :
+-else
+- lt_prog_compiler_static_GCJ=
+-fi
+-
+-
+-{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+ if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -17240,25 +16056,23 @@
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
++ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:17246: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:16062: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:17250: \$? = $ac_status" >&5
++ echo "$as_me:16066: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
++ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o_GCJ=yes
+ fi
+ fi
+- chmod u+w . 2>&5
++ chmod u+w .
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+@@ -17269,23 +16083,23 @@
+ $rm conftest*
+
+ fi
+-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+
+ hard_links="nottested"
+ if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+- { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- { echo "$as_me:$LINENO: result: $hard_links" >&5
+-echo "${ECHO_T}$hard_links" >&6; }
++ echo "$as_me:$LINENO: result: $hard_links" >&5
++echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+ echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+@@ -17295,8 +16109,8 @@
+ need_locks=no
+ fi
+
+-{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag_GCJ=
+@@ -17334,16 +16148,6 @@
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+- # Just being paranoid about ensuring that cc_basename is set.
+- for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+@@ -17354,10 +16158,6 @@
+ with_gnu_ld=no
+ fi
+ ;;
+- interix*)
+- # we just hope/assume this is gcc and not c89 (= MSVC++)
+- with_gnu_ld=yes
+- ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+@@ -17368,27 +16168,6 @@
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+- # Set some defaults for GNU ld with shared library support. These
+- # are reset later if shared libraries are not supported. Putting them
+- # here allows them to be overridden if necessary.
+- runpath_var=LD_RUN_PATH
+- hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+- export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+- whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- whole_archive_flag_spec_GCJ=
+- fi
+- supports_anon_versioning=no
+- case `$LD -v 2>/dev/null` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+- *\ 2.11.*) ;; # other 2.11 versions
+- *) supports_anon_versioning=yes ;;
+- esac
+-
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+@@ -17439,10 +16218,10 @@
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=no
+ enable_shared_with_static_runtimes_GCJ=yes
+- export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -17451,60 +16230,13 @@
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- ld_shlibs_GCJ=no
+- fi
+- ;;
+-
+- interix3*)
+- hardcode_direct_GCJ=no
+- hardcode_shlibpath_var_GCJ=no
+- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+- export_dynamic_flag_spec_GCJ='${wl}-E'
+- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+- # Instead, shared libraries are loaded at an image base (0x10000000 by
+- # default) and relocated if they conflict, which is a slow very memory
+- # consuming and fragmenting process. To avoid this, we pick a random,
+- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+- archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+- ;;
+-
+- linux* | k*bsd*-gnu)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- tmp_addflag=
+- case $cc_basename,$host_cpu in
+- pgcc*) # Portland Group C compiler
+- whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag'
+- ;;
+- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+- whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+- tmp_addflag=' $pic_flag -Mnomain' ;;
+- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+- tmp_addflag=' -i_dynamic' ;;
+- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+- tmp_addflag=' -i_dynamic -nofor_main' ;;
+- ifc* | ifort*) # Intel Fortran compiler
+- tmp_addflag=' -nofor_main' ;;
+- esac
+- archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+-
+- if test $supports_anon_versioning = yes; then
+- archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+- $echo "local: *; };" >> $output_objdir/$libname.ver~
+- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+- fi
+- link_all_deplibs_GCJ=no
++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+- ld_shlibs_GCJ=no
++ ld_shlibs=no
+ fi
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+@@ -17514,7 +16246,7 @@
+ fi
+ ;;
+
+- solaris*)
++ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&2
+@@ -17535,39 +16267,37 @@
+ fi
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+- case `$LD -v 2>&1` in
+- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+- ld_shlibs_GCJ=no
+- cat <<_LT_EOF 1>&2
+-
+-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+-*** reliably create shared libraries on SCO systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
++ sunos4*)
++ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
++ wlarc=
++ hardcode_direct_GCJ=yes
++ hardcode_shlibpath_var_GCJ=no
++ ;;
+
+-_LT_EOF
+- ;;
+- *)
+- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+- hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+- else
+- ld_shlibs_GCJ=no
+- fi
+- ;;
++ linux*)
++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_cmds_GCJ="$tmp_archive_cmds"
++ supports_anon_versioning=no
++ case `$LD -v 2>/dev/null` in
++ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
++ *\ 2.11.*) ;; # other 2.11 versions
++ *) supports_anon_versioning=yes ;;
+ esac
+- ;;
+-
+- sunos4*)
+- archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+- wlarc=
+- hardcode_direct_GCJ=yes
+- hardcode_shlibpath_var_GCJ=no
+- ;;
++ if test $supports_anon_versioning = yes; then
++ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
++ else
++ archive_expsym_cmds_GCJ="$tmp_archive_cmds"
++ fi
++ else
++ ld_shlibs_GCJ=no
++ fi
++ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+@@ -17579,11 +16309,16 @@
+ ;;
+ esac
+
+- if test "$ld_shlibs_GCJ" = no; then
+- runpath_var=
+- hardcode_libdir_flag_spec_GCJ=
+- export_dynamic_flag_spec_GCJ=
+- whole_archive_flag_spec_GCJ=
++ if test "$ld_shlibs_GCJ" = yes; then
++ runpath_var=LD_RUN_PATH
++ hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
++ export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
++ # ancient GNU ld didn't support --whole-archive et. al.
++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
++ whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
++ else
++ whole_archive_flag_spec_GCJ=
++ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+@@ -17595,7 +16330,7 @@
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L_GCJ=yes
+- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
++ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_GCJ=unsupported
+@@ -17629,7 +16364,6 @@
+ break
+ fi
+ done
+- ;;
+ esac
+
+ exp_sym_flag='-bexport'
+@@ -17648,7 +16382,7 @@
+ link_all_deplibs_GCJ=yes
+
+ if test "$GCC" = yes; then
+- case $host_os in aix4.[012]|aix4.[012].*)
++ case $host_os in aix4.012|aix4.012.*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+@@ -17667,12 +16401,8 @@
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_libdir_separator_GCJ=
+ fi
+- ;;
+ esac
+ shared_flag='-shared'
+- if test "$aix_use_runtimelinking" = yes; then
+- shared_flag="$shared_flag "'${wl}-G'
+- fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+@@ -17680,11 +16410,11 @@
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+- if test "$aix_use_runtimelinking" = yes; then
++ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+- fi
++ fi
+ fi
+ fi
+
+@@ -17712,36 +16442,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -17755,20 +16473,18 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+- archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
++ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_GCJ="-z nodefs"
+- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
++ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -17787,36 +16503,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -17830,10 +16534,8 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+@@ -17842,11 +16544,13 @@
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_GCJ=' ${wl}-bernotok'
+ allow_undefined_flag_GCJ=' ${wl}-berok'
++ # -bexpall does not export symbols beginning with underscore (_)
++ always_export_symbols_GCJ=yes
+ # Exported symbols can be pulled into shared objects from archives
+- whole_archive_flag_spec_GCJ='$convenience'
++ whole_archive_flag_spec_GCJ=' '
+ archive_cmds_need_lc_GCJ=yes
+- # This is similar to how AIX traditionally builds its shared libraries.
+- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
++ # This is similar to how AIX traditionally builds it's shared libraries.
++ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+@@ -17859,7 +16563,7 @@
+ ld_shlibs_GCJ=no
+ ;;
+
+- bsdi[45]*)
++ bsdi4*)
+ export_dynamic_flag_spec_GCJ=-rdynamic
+ ;;
+
+@@ -17880,57 +16584,57 @@
+ old_archive_From_new_cmds_GCJ='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
++ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_GCJ=yes
+ ;;
+
+ darwin* | rhapsody*)
+- case $host_os in
+- rhapsody* | darwin1.[012])
+- allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+- ;;
+- *) # Darwin 1.3 on
+- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+- allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- else
+- case ${MACOSX_DEPLOYMENT_TARGET} in
+- 10.[012])
+- allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+- ;;
+- 10.*)
+- allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+- ;;
+- esac
+- fi
+- ;;
+- esac
++ if test "$GXX" = yes ; then
+ archive_cmds_need_lc_GCJ=no
++ case "$host_os" in
++ rhapsody* | darwin1.[012])
++ allow_undefined_flag_GCJ='-undefined suppress'
++ ;;
++ *) # Darwin 1.3 on
++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
++ allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
++ else
++ case ${MACOSX_DEPLOYMENT_TARGET} in
++ 10.[012])
++ allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
++ ;;
++ 10.*)
++ allow_undefined_flag_GCJ='-undefined dynamic_lookup'
++ ;;
++ esac
++ fi
++ ;;
++ esac
++ lt_int_apple_cc_single_mod=no
++ output_verbose_link_cmd='echo'
++ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
++ lt_int_apple_cc_single_mod=yes
++ fi
++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
++ archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++ else
++ archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -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'
++ fi
++ module_cmds_GCJ='$CC ${wl}-bind_at_load $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
++ archive_expsym_cmds_GCJ='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}'
++ else
++ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
++ fi
++ module_expsym_cmds_GCJ='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}'
+ hardcode_direct_GCJ=no
+ hardcode_automatic_GCJ=yes
+ hardcode_shlibpath_var_GCJ=unsupported
+- whole_archive_flag_spec_GCJ=''
++ whole_archive_flag_spec_GCJ='-all_load $convenience'
+ link_all_deplibs_GCJ=yes
+- if test "$GCC" = yes ; then
+- output_verbose_link_cmd='echo'
+- archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+- module_cmds_GCJ='$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 lds
+- archive_expsym_cmds_GCJ='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}'
+- module_expsym_cmds_GCJ='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}'
+ else
+- case $cc_basename in
+- xlc*)
+- output_verbose_link_cmd='echo'
+- archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+- module_cmds_GCJ='$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 lds
+- archive_expsym_cmds_GCJ='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}'
+- module_expsym_cmds_GCJ='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}'
+- ;;
+- *)
+- ld_shlibs_GCJ=no
+- ;;
+- esac
++ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+@@ -17964,7 +16668,7 @@
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd* | dragonfly*)
++ freebsd* | kfreebsd*-gnu)
+ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+@@ -17987,62 +16691,47 @@
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ ;;
+
+- hpux10*)
+- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+- fi
+- if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
+-
+- hardcode_direct_GCJ=yes
+- export_dynamic_flag_spec_GCJ='${wl}-E'
+-
+- # hardcode_minus_L: Not really in the search PATH,
+- # but as the default location of the library.
+- hardcode_minus_L_GCJ=yes
+- fi
+- ;;
+-
+- hpux11*)
++ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+- case $host_cpu in
+- hppa*64*)
++ case "$host_cpu" in
++ hppa*64*|ia64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+- ia64*)
+- archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+ *)
+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+- case $host_cpu in
+- hppa*64*)
+- archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- ;;
+- ia64*)
+- archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ case "$host_cpu" in
++ hppa*64*|ia64*)
++ archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+- archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator_GCJ=:
+-
+- case $host_cpu in
+- hppa*64*|ia64*)
++ case "$host_cpu" in
++ hppa*64*)
++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
++ hardcode_libdir_separator_GCJ=:
++ hardcode_direct_GCJ=no
++ hardcode_shlibpath_var_GCJ=no
++ ;;
++ ia64*)
++ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
++
++ # hardcode_minus_L: Not really in the search PATH,
++ # but as the default location of the library.
++ hardcode_minus_L_GCJ=yes
+ ;;
+ *)
++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+
+@@ -18066,7 +16755,7 @@
+ link_all_deplibs_GCJ=yes
+ ;;
+
+- netbsd* | netbsdelf*-gnu)
++ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+@@ -18090,7 +16779,6 @@
+ hardcode_shlibpath_var_GCJ=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ else
+@@ -18136,7 +16824,7 @@
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+@@ -18144,15 +16832,21 @@
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
++ sco3.2v5*)
++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_shlibpath_var_GCJ=no
++ export_dynamic_flag_spec_GCJ='${wl}-Bexport'
++ runpath_var=LD_RUN_PATH
++ hardcode_runpath_var=yes
++ ;;
++
+ solaris*)
+ no_undefined_flag_GCJ=' -z text'
+ if test "$GCC" = yes; then
+- wlarc='${wl}'
+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+- wlarc=''
+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+@@ -18161,18 +16855,8 @@
+ hardcode_shlibpath_var_GCJ=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+- *)
+- # The compiler driver will combine linker options so we
+- # cannot just pass the convience library names through
+- # without $wl, iff we do not link with $LD.
+- # Luckily, gcc supports the same syntax we need for Sun Studio.
+- # Supported since Solaris 2.6 (maybe 2.5.1?)
+- case $wlarc in
+- '')
+- whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+- *)
+- whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+- esac ;;
++ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
++ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+ esac
+ link_all_deplibs_GCJ=yes
+ ;;
+@@ -18229,45 +16913,36 @@
+ fi
+ ;;
+
+- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+- no_undefined_flag_GCJ='${wl}-z,text'
+- archive_cmds_need_lc_GCJ=no
++ sysv4.2uw2*)
++ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
++ hardcode_direct_GCJ=yes
++ hardcode_minus_L_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+- runpath_var='LD_RUN_PATH'
++ hardcode_runpath_var=yes
++ runpath_var=LD_RUN_PATH
++ ;;
+
++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
++ no_undefined_flag_GCJ='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+- archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+- archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
++ runpath_var='LD_RUN_PATH'
++ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+- sysv5* | sco3.2v5* | sco5v6*)
+- # Note: We can NOT use -z defs as we might desire, because we do not
+- # link with -lc, and that would cause any symbols used from libc to
+- # always be unresolved, which means just about no library would
+- # ever link correctly. If we're not using GNU ld we use -z text
+- # though, which does catch some bad symbols but isn't as heavy-handed
+- # as -z defs.
+- no_undefined_flag_GCJ='${wl}-z,text'
+- allow_undefined_flag_GCJ='${wl}-z,nodefs'
+- archive_cmds_need_lc_GCJ=no
++ sysv5*)
++ no_undefined_flag_GCJ=' -z text'
++ # $CC -shared without GNU ld will not create a library from C++
++ # object files and a static libstdc++, better avoid it by now
++ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
++ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
++ hardcode_libdir_flag_spec_GCJ=
+ hardcode_shlibpath_var_GCJ=no
+- hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+- hardcode_libdir_separator_GCJ=':'
+- link_all_deplibs_GCJ=yes
+- export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+-
+- if test "$GCC" = yes; then
+- archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- else
+- archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+- fi
+ ;;
+
+ uts4*)
+@@ -18282,10 +16957,15 @@
+ esac
+ fi
+
+-{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+-echo "${ECHO_T}$ld_shlibs_GCJ" >&6; }
++echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
++echo "${ECHO_T}$ld_shlibs_GCJ" >&6
+ test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
++variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
++if test "$GCC" = yes; then
++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
++fi
++
+ #
+ # Do we need to explicitly link libc?
+ #
+@@ -18303,8 +16983,8 @@
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+- { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
++ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+@@ -18318,7 +16998,6 @@
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_GCJ
+- pic_flag=$lt_prog_compiler_pic_GCJ
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+@@ -18341,16 +17020,16 @@
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+- { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+-echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; }
++ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
++echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+ ;;
+ esac
+ fi
+ ;;
+ esac
+
+-{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+ library_names_spec=
+ libname_spec='lib$name'
+ soname_spec=
+@@ -18451,7 +17130,7 @@
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+-bsdi[45]*)
++bsdi4*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -18479,8 +17158,7 @@
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+- $install_prog $dir/$dlname \$dldir/$dlname~
+- chmod a+x \$dldir/$dlname'
++ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+@@ -18510,7 +17188,7 @@
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+@@ -18533,7 +17211,7 @@
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
++ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+@@ -18556,17 +17234,20 @@
+ dynamic_linker=no
+ ;;
+
+-freebsd* | dragonfly*)
+- # DragonFly does not have aout. When/if they implement a new
+- # versioning mechanism, adjust this.
+- if test -x /usr/bin/objformat; then
+- objformat=`/usr/bin/objformat`
+- else
+- case $host_os in
+- freebsd[123]*) objformat=aout ;;
+- *) objformat=elf ;;
+- esac
+- fi
++kfreebsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++freebsd*)
++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+@@ -18584,391 +17265,1204 @@
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+- freebsd3.[01]* | freebsdelf3.[01]*)
++ freebsd3.01* | freebsdelf3.01*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
++ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+- freebsd*) # from 4.6 on
+- shlibpath_overrides_runpath=yes
++ esac
++ ;;
++
++gnu*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ hardcode_into_libs=yes
++ ;;
++
++hpux9* | hpux10* | hpux11*)
++ # Give a soname corresponding to the major version so that dld.sl refuses to
++ # link against other versions.
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=no
++ case "$host_cpu" in
++ ia64*)
++ shrext_cmds='.so'
+ hardcode_into_libs=yes
++ dynamic_linker="$host_os dld.so"
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ if test "X$HPUX_IA64_MODE" = X32; then
++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
++ else
++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
++ fi
++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
++ ;;
++ hppa*64*)
++ shrext_cmds='.sl'
++ hardcode_into_libs=yes
++ dynamic_linker="$host_os dld.sl"
++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
++ ;;
++ *)
++ shrext_cmds='.sl'
++ dynamic_linker="$host_os dld.sl"
++ shlibpath_var=SHLIB_PATH
++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ ;;
++ esac
++ # HP-UX runs *really* slowly unless shared libraries are mode 555.
++ postinstall_cmds='chmod 555 $lib'
++ ;;
++
++irix5* | irix6* | nonstopux*)
++ case $host_os in
++ nonstopux*) version_type=nonstopux ;;
++ *)
++ if test "$lt_cv_prog_gnu_ld" = yes; then
++ version_type=linux
++ else
++ version_type=irix
++ fi ;;
++ esac
++ need_lib_prefix=no
++ need_version=no
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
++ case $host_os in
++ irix5* | nonstopux*)
++ libsuff= shlibsuff=
++ ;;
++ *)
++ case $LD in # libtool.m4 will add one of these switches to LD
++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
++ libsuff= shlibsuff= libmagic=32-bit;;
++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
++ libsuff=32 shlibsuff=N32 libmagic=N32;;
++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
++ libsuff=64 shlibsuff=64 libmagic=64-bit;;
++ *) libsuff= shlibsuff= libmagic=never-match;;
++ esac
+ ;;
+ esac
++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
++ shlibpath_overrides_runpath=no
++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
++ hardcode_into_libs=yes
++ ;;
++
++# No shared lib support for Linux oldld, aout, or coff.
++linux*oldld* | linux*aout* | linux*coff*)
++ dynamic_linker=no
+ ;;
+
+-gnu*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- ;;
++# This must be Linux ELF.
++linux*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ # This implies no fast_install, which is unacceptable.
++ # Some rework will be needed to allow for fast_install
++ # before this can be enabled.
++ hardcode_into_libs=yes
++
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '#line 17396 "configure"' > conftest.$ac_ext
++ 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
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
++
++ # Append ld.so.conf contents to the search path
++ if test -f /etc/ld.so.conf; then
++ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
++ fi
++
++ # We used to test for /lib/ld.so.1 and disable shared libraries on
++ # powerpc, because MkLinux only supported shared libraries with the
++ # GNU dynamic linker. Since this was broken with cross compilers,
++ # most powerpc-linux boxes support dynamic linking these days and
++ # people can always --disable-shared, the test was removed, and we
++ # assume the GNU/Linux dynamic linker is in use.
++ dynamic_linker='GNU/Linux ld.so'
++ ;;
++
++knetbsd*-gnu)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=no
++ hardcode_into_libs=yes
++ dynamic_linker='GNU ld.so'
++ ;;
++
++netbsd*)
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=no
++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
++ dynamic_linker='NetBSD (a.out) ld.so'
++ else
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ dynamic_linker='NetBSD ld.elf_so'
++ fi
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ ;;
++
++newsos6)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ ;;
++
++nto-qnx*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ ;;
++
++openbsd*)
++ version_type=sunos
++ need_lib_prefix=no
++ need_version=yes
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++ case $host_os in
++ openbsd2.[89] | openbsd2.[89].*)
++ shlibpath_overrides_runpath=no
++ ;;
++ *)
++ shlibpath_overrides_runpath=yes
++ ;;
++ esac
++ else
++ shlibpath_overrides_runpath=yes
++ fi
++ ;;
++
++os2*)
++ libname_spec='$name'
++ shrext_cmds=".dll"
++ need_lib_prefix=no
++ library_names_spec='$libname${shared_ext} $libname.a'
++ dynamic_linker='OS/2 ld.exe'
++ shlibpath_var=LIBPATH
++ ;;
++
++osf3* | osf4* | osf5*)
++ version_type=osf
++ need_lib_prefix=no
++ need_version=no
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
++ ;;
++
++sco3.2v5*)
++ version_type=osf
++ soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
++solaris*)
++ version_type=linux
++ need_lib_prefix=no
++ need_version=no
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ hardcode_into_libs=yes
++ # ldd complains unless libraries are executable
++ postinstall_cmds='chmod +x $lib'
++ ;;
++
++sunos4*)
++ version_type=sunos
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
++ shlibpath_var=LD_LIBRARY_PATH
++ shlibpath_overrides_runpath=yes
++ if test "$with_gnu_ld" = yes; then
++ need_lib_prefix=no
++ fi
++ need_version=yes
++ ;;
++
++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ case $host_vendor in
++ sni)
++ shlibpath_overrides_runpath=no
++ need_lib_prefix=no
++ export_dynamic_flag_spec='${wl}-Blargedynsym'
++ runpath_var=LD_RUN_PATH
++ ;;
++ siemens)
++ need_lib_prefix=no
++ ;;
++ motorola)
++ need_lib_prefix=no
++ need_version=no
++ shlibpath_overrides_runpath=no
++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
++ ;;
++ esac
++ ;;
++
++sysv4*MP*)
++ if test -d /usr/nec ;then
++ version_type=linux
++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
++ soname_spec='$libname${shared_ext}.$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ fi
++ ;;
++
++uts4*)
++ version_type=linux
++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shared_ext}$major'
++ shlibpath_var=LD_LIBRARY_PATH
++ ;;
++
++*)
++ dynamic_linker=no
++ ;;
++esac
++echo "$as_me:$LINENO: result: $dynamic_linker" >&5
++echo "${ECHO_T}$dynamic_linker" >&6
++test "$dynamic_linker" = no && can_build_shared=no
++
++echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
++hardcode_action_GCJ=
++if test -n "$hardcode_libdir_flag_spec_GCJ" || \
++ test -n "$runpath_var GCJ" || \
++ test "X$hardcode_automatic_GCJ"="Xyes" ; then
++
++ # We can hardcode non-existant directories.
++ if test "$hardcode_direct_GCJ" != no &&
++ # If the only mechanism to avoid hardcoding is shlibpath_var, we
++ # have to relink, otherwise we might link with an installed library
++ # when we should be linking with a yet-to-be-installed one
++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
++ test "$hardcode_minus_L_GCJ" != no; then
++ # Linking always hardcodes the temporary library directory.
++ hardcode_action_GCJ=relink
++ else
++ # We can link without hardcoding, and we can hardcode nonexisting dirs.
++ hardcode_action_GCJ=immediate
++ fi
++else
++ # We cannot hardcode anything, or else we can only hardcode existing
++ # directories.
++ hardcode_action_GCJ=unsupported
++fi
++echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
++echo "${ECHO_T}$hardcode_action_GCJ" >&6
++
++if test "$hardcode_action_GCJ" = relink; then
++ # Fast installation is not supported
++ enable_fast_install=no
++elif test "$shlibpath_overrides_runpath" = yes ||
++ test "$enable_shared" = no; then
++ # Fast installation is not necessary
++ enable_fast_install=needless
++fi
++
++striplib=
++old_striplib=
++echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
++ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++else
++# FIXME - insert some real tests, host_os isn't really good enough
++ case $host_os in
++ darwin*)
++ if test -n "$STRIP" ; then
++ striplib="$STRIP -x"
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++ ;;
++ *)
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++ ;;
++ esac
++fi
++
++if test "x$enable_dlopen" != xyes; then
++ enable_dlopen=unknown
++ enable_dlopen_self=unknown
++ enable_dlopen_self_static=unknown
++else
++ lt_cv_dlopen=no
++ lt_cv_dlopen_libs=
++
++ case $host_os in
++ beos*)
++ lt_cv_dlopen="load_add_on"
++ lt_cv_dlopen_libs=
++ lt_cv_dlopen_self=yes
++ ;;
++
++ mingw* | pw32*)
++ lt_cv_dlopen="LoadLibrary"
++ lt_cv_dlopen_libs=
++ ;;
++
++ cygwin*)
++ lt_cv_dlopen="dlopen"
++ lt_cv_dlopen_libs=
++ ;;
++
++ darwin*)
++ # if libdl is installed we need to link against it
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
++if test "${ac_cv_lib_dl_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldl $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dl_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_lib_dl_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
++if test $ac_cv_lib_dl_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
++else
++
++ lt_cv_dlopen="dyld"
++ lt_cv_dlopen_libs=
++ lt_cv_dlopen_self=yes
++
++fi
++
++ ;;
++
++ *)
++ echo "$as_me:$LINENO: checking for shl_load" >&5
++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
++if test "${ac_cv_func_shl_load+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define shl_load innocuous_shl_load
++
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char shl_load (); 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
++
++#undef shl_load
++
++/* 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 shl_load ();
++/* 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_shl_load) || defined (__stub___shl_load)
++choke me
++#else
++char (*f) () = shl_load;
++#endif
++#ifdef __cplusplus
++}
++#endif
++
++int
++main ()
++{
++return f != shl_load;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_shl_load=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_func_shl_load=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
++echo "${ECHO_T}$ac_cv_func_shl_load" >&6
++if test $ac_cv_func_shl_load = yes; then
++ lt_cv_dlopen="shl_load"
++else
++ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
++if test "${ac_cv_lib_dld_shl_load+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.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 shl_load ();
++int
++main ()
++{
++shl_load ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dld_shl_load=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_lib_dld_shl_load=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
++if test $ac_cv_lib_dld_shl_load = yes; then
++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
++else
++ echo "$as_me:$LINENO: checking for dlopen" >&5
++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
++if test "${ac_cv_func_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define dlopen innocuous_dlopen
++
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char dlopen (); 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
++
++#undef dlopen
++
++/* 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 dlopen ();
++/* 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_dlopen) || defined (__stub___dlopen)
++choke me
++#else
++char (*f) () = dlopen;
++#endif
++#ifdef __cplusplus
++}
++#endif
++
++int
++main ()
++{
++return f != dlopen;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_func_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
++echo "${ECHO_T}$ac_cv_func_dlopen" >&6
++if test $ac_cv_func_dlopen = yes; then
++ lt_cv_dlopen="dlopen"
++else
++ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
++if test "${ac_cv_lib_dl_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldl $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dl_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_lib_dl_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
++if test $ac_cv_lib_dl_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
++else
++ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
++if test "${ac_cv_lib_svld_dlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-lsvld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.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 dlopen ();
++int
++main ()
++{
++dlopen ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_svld_dlopen=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_lib_svld_dlopen=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
++if test $ac_cv_lib_svld_dlopen = yes; then
++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
++else
++ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
++if test "${ac_cv_lib_dld_dld_link+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ldld $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.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 dld_link ();
++int
++main ()
++{
++dld_link ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
++ { 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_lib_dld_dld_link=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_lib_dld_dld_link=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
++if test $ac_cv_lib_dld_dld_link = yes; then
++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
++fi
+
+-hpux9* | hpux10* | hpux11*)
+- # Give a soname corresponding to the major version so that dld.sl refuses to
+- # link against other versions.
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- case $host_cpu in
+- ia64*)
+- shrext_cmds='.so'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.so"
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- if test "X$HPUX_IA64_MODE" = X32; then
+- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+- else
+- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+- fi
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+- ;;
+- hppa*64*)
+- shrext_cmds='.sl'
+- hardcode_into_libs=yes
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+- ;;
+- *)
+- shrext_cmds='.sl'
+- dynamic_linker="$host_os dld.sl"
+- shlibpath_var=SHLIB_PATH
+- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- ;;
+- esac
+- # HP-UX runs *really* slowly unless shared libraries are mode 555.
+- postinstall_cmds='chmod 555 $lib'
+- ;;
+
+-interix3*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- ;;
++fi
++
++
++fi
++
++
++fi
++
++
++fi
++
++
++fi
+
+-irix5* | irix6* | nonstopux*)
+- case $host_os in
+- nonstopux*) version_type=nonstopux ;;
+- *)
+- if test "$lt_cv_prog_gnu_ld" = yes; then
+- version_type=linux
+- else
+- version_type=irix
+- fi ;;
+- esac
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+- case $host_os in
+- irix5* | nonstopux*)
+- libsuff= shlibsuff=
+- ;;
+- *)
+- case $LD in # libtool.m4 will add one of these switches to LD
+- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+- libsuff= shlibsuff= libmagic=32-bit;;
+- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+- libsuff=32 shlibsuff=N32 libmagic=N32;;
+- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+- libsuff=64 shlibsuff=64 libmagic=64-bit;;
+- *) libsuff= shlibsuff= libmagic=never-match;;
+- esac
+ ;;
+ esac
+- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+- hardcode_into_libs=yes
+- ;;
+
+-# No shared lib support for Linux oldld, aout, or coff.
+-linux*oldld* | linux*aout* | linux*coff*)
+- dynamic_linker=no
+- ;;
++ if test "x$lt_cv_dlopen" != xno; then
++ enable_dlopen=yes
++ else
++ enable_dlopen=no
++ fi
+
+-# This must be Linux ELF.
+-linux* | k*bsd*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- # This implies no fast_install, which is unacceptable.
+- # Some rework will be needed to allow for fast_install
+- # before this can be enabled.
+- hardcode_into_libs=yes
++ case $lt_cv_dlopen in
++ dlopen)
++ save_CPPFLAGS="$CPPFLAGS"
++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+- # Append ld.so.conf contents to the search path
+- if test -f /etc/ld.so.conf; then
+- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+- fi
++ save_LDFLAGS="$LDFLAGS"
++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+- # We used to test for /lib/ld.so.1 and disable shared libraries on
+- # powerpc, because MkLinux only supported shared libraries with the
+- # GNU dynamic linker. Since this was broken with cross compilers,
+- # most powerpc-linux boxes support dynamic linking these days and
+- # people can always --disable-shared, the test was removed, and we
+- # assume the GNU/Linux dynamic linker is in use.
+- dynamic_linker='GNU/Linux ld.so'
+- ;;
++ save_LIBS="$LIBS"
++ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+-netbsdelf*-gnu)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- hardcode_into_libs=yes
+- dynamic_linker='NetBSD ld.elf_so'
+- ;;
++ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
++if test "${lt_cv_dlopen_self+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test "$cross_compiling" = yes; then :
++ lt_cv_dlopen_self=cross
++else
++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
++ lt_status=$lt_dlunknown
++ cat > conftest.$ac_ext <<EOF
++#line 18267 "configure"
++#include "confdefs.h"
+
+-netbsd*)
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- dynamic_linker='NetBSD (a.out) ld.so'
+- else
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- dynamic_linker='NetBSD ld.elf_so'
++#if HAVE_DLFCN_H
++#include <dlfcn.h>
++#endif
++
++#include <stdio.h>
++
++#ifdef RTLD_GLOBAL
++# define LT_DLGLOBAL RTLD_GLOBAL
++#else
++# ifdef DL_GLOBAL
++# define LT_DLGLOBAL DL_GLOBAL
++# else
++# define LT_DLGLOBAL 0
++# endif
++#endif
++
++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
++ find out it does not work in some platform. */
++#ifndef LT_DLLAZY_OR_NOW
++# ifdef RTLD_LAZY
++# define LT_DLLAZY_OR_NOW RTLD_LAZY
++# else
++# ifdef DL_LAZY
++# define LT_DLLAZY_OR_NOW DL_LAZY
++# else
++# ifdef RTLD_NOW
++# define LT_DLLAZY_OR_NOW RTLD_NOW
++# else
++# ifdef DL_NOW
++# define LT_DLLAZY_OR_NOW DL_NOW
++# else
++# define LT_DLLAZY_OR_NOW 0
++# endif
++# endif
++# endif
++# endif
++#endif
++
++#ifdef __cplusplus
++extern "C" void exit (int);
++#endif
++
++void fnord() { int i=42;}
++int main ()
++{
++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
++ int status = $lt_dlunknown;
++
++ if (self)
++ {
++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
++ /* dlclose (self); */
++ }
++
++ exit (status);
++}
++EOF
++ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
++ (./conftest; exit; ) 2>/dev/null
++ lt_status=$?
++ case x$lt_status in
++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
++ esac
++ else :
++ # compilation failed
++ lt_cv_dlopen_self=no
+ fi
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- ;;
++fi
++rm -fr conftest*
+
+-newsos6)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- ;;
+
+-nto-qnx*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- ;;
++fi
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+-openbsd*)
+- version_type=sunos
+- sys_lib_dlsearch_path_spec="/usr/lib"
+- need_lib_prefix=no
+- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+- case $host_os in
+- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+- *) need_version=no ;;
+- esac
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+- case $host_os in
+- openbsd2.[89] | openbsd2.[89].*)
+- shlibpath_overrides_runpath=no
+- ;;
+- *)
+- shlibpath_overrides_runpath=yes
+- ;;
+- esac
+- else
+- shlibpath_overrides_runpath=yes
+- fi
+- ;;
++ if test "x$lt_cv_dlopen_self" = xyes; then
++ LDFLAGS="$LDFLAGS $link_static_flag"
++ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
++if test "${lt_cv_dlopen_self_static+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test "$cross_compiling" = yes; then :
++ lt_cv_dlopen_self_static=cross
++else
++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
++ lt_status=$lt_dlunknown
++ cat > conftest.$ac_ext <<EOF
++#line 18365 "configure"
++#include "confdefs.h"
+
+-os2*)
+- libname_spec='$name'
+- shrext_cmds=".dll"
+- need_lib_prefix=no
+- library_names_spec='$libname${shared_ext} $libname.a'
+- dynamic_linker='OS/2 ld.exe'
+- shlibpath_var=LIBPATH
+- ;;
++#if HAVE_DLFCN_H
++#include <dlfcn.h>
++#endif
+
+-osf3* | osf4* | osf5*)
+- version_type=osf
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- shlibpath_var=LD_LIBRARY_PATH
+- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+- ;;
++#include <stdio.h>
+
+-solaris*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- hardcode_into_libs=yes
+- # ldd complains unless libraries are executable
+- postinstall_cmds='chmod +x $lib'
+- ;;
++#ifdef RTLD_GLOBAL
++# define LT_DLGLOBAL RTLD_GLOBAL
++#else
++# ifdef DL_GLOBAL
++# define LT_DLGLOBAL DL_GLOBAL
++# else
++# define LT_DLGLOBAL 0
++# endif
++#endif
+
+-sunos4*)
+- version_type=sunos
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- if test "$with_gnu_ld" = yes; then
+- need_lib_prefix=no
+- fi
+- need_version=yes
+- ;;
++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
++ find out it does not work in some platform. */
++#ifndef LT_DLLAZY_OR_NOW
++# ifdef RTLD_LAZY
++# define LT_DLLAZY_OR_NOW RTLD_LAZY
++# else
++# ifdef DL_LAZY
++# define LT_DLLAZY_OR_NOW DL_LAZY
++# else
++# ifdef RTLD_NOW
++# define LT_DLLAZY_OR_NOW RTLD_NOW
++# else
++# ifdef DL_NOW
++# define LT_DLLAZY_OR_NOW DL_NOW
++# else
++# define LT_DLLAZY_OR_NOW 0
++# endif
++# endif
++# endif
++# endif
++#endif
+
+-sysv4 | sysv4.3*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- case $host_vendor in
+- sni)
+- shlibpath_overrides_runpath=no
+- need_lib_prefix=no
+- export_dynamic_flag_spec='${wl}-Blargedynsym'
+- runpath_var=LD_RUN_PATH
+- ;;
+- siemens)
+- need_lib_prefix=no
+- ;;
+- motorola)
+- need_lib_prefix=no
+- need_version=no
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+- ;;
+- esac
+- ;;
++#ifdef __cplusplus
++extern "C" void exit (int);
++#endif
+
+-sysv4*MP*)
+- if test -d /usr/nec ;then
+- version_type=linux
+- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+- soname_spec='$libname${shared_ext}.$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- fi
+- ;;
++void fnord() { int i=42;}
++int main ()
++{
++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
++ int status = $lt_dlunknown;
+
+-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+- version_type=freebsd-elf
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- hardcode_into_libs=yes
+- if test "$with_gnu_ld" = yes; then
+- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+- shlibpath_overrides_runpath=no
+- else
+- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+- shlibpath_overrides_runpath=yes
+- case $host_os in
+- sco3.2v5*)
+- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+- ;;
++ if (self)
++ {
++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
++ /* dlclose (self); */
++ }
++
++ exit (status);
++}
++EOF
++ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
++ (./conftest; exit; ) 2>/dev/null
++ lt_status=$?
++ case x$lt_status in
++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
++ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
++ else :
++ # compilation failed
++ lt_cv_dlopen_self_static=no
+ fi
+- sys_lib_dlsearch_path_spec='/usr/lib'
+- ;;
+-
+-uts4*)
+- version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
+-
+-*)
+- dynamic_linker=no
+- ;;
+-esac
+-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+-echo "${ECHO_T}$dynamic_linker" >&6; }
+-test "$dynamic_linker" = no && can_build_shared=no
+-
+-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+-if test "$GCC" = yes; then
+- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+ fi
++rm -fr conftest*
+
+-{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+-hardcode_action_GCJ=
+-if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+- test -n "$runpath_var_GCJ" || \
+- test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+- # We can hardcode non-existant directories.
+- if test "$hardcode_direct_GCJ" != no &&
+- # If the only mechanism to avoid hardcoding is shlibpath_var, we
+- # have to relink, otherwise we might link with an installed library
+- # when we should be linking with a yet-to-be-installed one
+- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+- test "$hardcode_minus_L_GCJ" != no; then
+- # Linking always hardcodes the temporary library directory.
+- hardcode_action_GCJ=relink
+- else
+- # We can link without hardcoding, and we can hardcode nonexisting dirs.
+- hardcode_action_GCJ=immediate
+- fi
+-else
+- # We cannot hardcode anything, or else we can only hardcode existing
+- # directories.
+- hardcode_action_GCJ=unsupported
+ fi
+-{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+-echo "${ECHO_T}$hardcode_action_GCJ" >&6; }
++echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
++ fi
+
+-if test "$hardcode_action_GCJ" = relink; then
+- # Fast installation is not supported
+- enable_fast_install=no
+-elif test "$shlibpath_overrides_runpath" = yes ||
+- test "$enable_shared" = no; then
+- # Fast installation is not necessary
+- enable_fast_install=needless
++ CPPFLAGS="$save_CPPFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++ LIBS="$save_LIBS"
++ ;;
++ esac
++
++ case $lt_cv_dlopen_self in
++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
++ *) enable_dlopen_self=unknown ;;
++ esac
++
++ case $lt_cv_dlopen_self_static in
++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
++ *) enable_dlopen_self_static=unknown ;;
++ esac
+ fi
+
+
+@@ -18985,7 +18479,7 @@
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+@@ -19086,12 +18580,6 @@
+ # The host system.
+ host_alias=$host_alias
+ host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+
+ # An echo program that does not interpret backslashes.
+ echo=$lt_echo
+@@ -19103,9 +18591,6 @@
+ # A C compiler.
+ LTCC=$lt_LTCC
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+ # A language-specific compiler.
+ CC=$lt_compiler_GCJ
+
+@@ -19171,7 +18656,7 @@
+ # Does compiler simultaneously support -c and -o options?
+ compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+-# Must we lock files when doing compilation?
++# Must we lock files when doing compilation ?
+ need_locks=$lt_need_locks
+
+ # Do we need the lib prefix for modules?
+@@ -19396,6 +18881,7 @@
+ RC)
+
+
++
+ # Source file extension for RC test sources.
+ ac_ext=rc
+
+@@ -19414,42 +18900,15 @@
+ # If no C compiler was specified, use CC.
+ LTCC=${LTCC-"$CC"}
+
+-# If no C compiler flags were specified, use CFLAGS.
+-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+-
+ # Allow CC to be a program name with arguments.
+ compiler=$CC
+
+
+-# save warnings/boilerplate of simple test code
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_compiler_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-ac_outfile=conftest.$ac_objext
+-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+-_lt_linker_boilerplate=`cat conftest.err`
+-$rm conftest*
+-
+-
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ CC=${RC-"windres"}
+ compiler=$CC
+ compiler_RC=$CC
+-for cc_temp in $compiler""; do
+- case $cc_temp in
+- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+- \-*) ;;
+- *) break;;
+- esac
+-done
+-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+-
+ lt_cv_prog_compiler_c_o_RC=yes
+
+ # The else clause should only fire when bootstrapping the
+@@ -19465,7 +18924,7 @@
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+@@ -19566,12 +19025,6 @@
+ # The host system.
+ host_alias=$host_alias
+ host=$host
+-host_os=$host_os
+-
+-# The build system.
+-build_alias=$build_alias
+-build=$build
+-build_os=$build_os
+
+ # An echo program that does not interpret backslashes.
+ echo=$lt_echo
+@@ -19583,9 +19036,6 @@
+ # A C compiler.
+ LTCC=$lt_LTCC
+
+-# LTCC compiler flags.
+-LTCFLAGS=$lt_LTCFLAGS
+-
+ # A language-specific compiler.
+ CC=$lt_compiler_RC
+
+@@ -19651,7 +19101,7 @@
+ # Does compiler simultaneously support -c and -o options?
+ compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+-# Must we lock files when doing compilation?
++# Must we lock files when doing compilation ?
+ need_locks=$lt_need_locks
+
+ # Do we need the lib prefix for modules?
+@@ -19926,9 +19376,10 @@
+
+
+
+-# Check whether --enable-shared was given.
++# Check whether --enable-shared or --disable-shared was given.
+ if test "${enable_shared+set}" = set; then
+- enableval=$enable_shared; p=${PACKAGE-default}
++ enableval="$enable_shared"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+@@ -19947,12 +19398,12 @@
+ esac
+ else
+ enable_shared=yes
+-fi
+-
++fi;
+
+-# Check whether --enable-static was given.
++# Check whether --enable-static or --disable-static was given.
+ if test "${enable_static+set}" = set; then
+- enableval=$enable_static; p=${PACKAGE-default}
++ enableval="$enable_static"
++ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+@@ -19971,8 +19422,7 @@
+ esac
+ else
+ enable_static=no
+-fi
+-
++fi;
+
+
+ if test "$GCC" != "yes" ; then
+@@ -19992,9 +19442,9 @@
+ for ac_func in seteuid
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
++echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
++if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -20020,59 +19470,53 @@
+
+ #undef $ac_func
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 $ac_func ();
+ /* 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_$ac_func || defined __stub___$ac_func
++#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+ choke me
++#else
++char (*f) () = $ac_func;
++#endif
++#ifdef __cplusplus
++}
+ #endif
+
+ int
+ main ()
+ {
+-return $ac_func ();
++return f != $ac_func;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20081,15 +19525,13 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- eval "$as_ac_var=no"
++eval "$as_ac_var=no"
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-ac_res=`eval echo '${'$as_ac_var'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -20100,8 +19542,8 @@
+
+
+
+-{ echo "$as_me:$LINENO: checking for pthread_mutex_init in -lpthread" >&5
+-echo $ECHO_N "checking for pthread_mutex_init in -lpthread... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for pthread_mutex_init in -lpthread" >&5
++echo $ECHO_N "checking for pthread_mutex_init in -lpthread... $ECHO_C" >&6
+ if test "${ac_cv_lib_pthread_pthread_mutex_init+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -20114,52 +19556,40 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 pthread_mutex_init ();
+ int
+ main ()
+ {
+-return pthread_mutex_init ();
++pthread_mutex_init ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20168,15 +19598,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_lib_pthread_pthread_mutex_init=no
++ac_cv_lib_pthread_pthread_mutex_init=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_init" >&5
+-echo "${ECHO_T}$ac_cv_lib_pthread_pthread_mutex_init" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_init" >&5
++echo "${ECHO_T}$ac_cv_lib_pthread_pthread_mutex_init" >&6
+ if test $ac_cv_lib_pthread_pthread_mutex_init = yes; then
+ pthread_enabled=yes
+ else
+@@ -20199,9 +19628,10 @@
+ CFLAGS=`echo $CFLAGS | sed 's/-O.//'`
+ fi
+
+-# Check whether --enable-memcheck was given.
++# Check whether --enable-memcheck or --disable-memcheck was given.
+ if test "${enable_memcheck+set}" = set; then
+- enableval=$enable_memcheck; case "${enableval}" in
++ enableval="$enable_memcheck"
++ case "${enableval}" in
+ yes) memcheck_enabled=yes;;
+ no) memcheck_enabled=no;;
+ *) { { echo "$as_me:$LINENO: error: \"Bad value for --enable-memcheck\"" >&5
+@@ -20210,8 +19640,7 @@
+ esac
+ else
+ memcheck_enabled=no
+-fi
+-
++fi;
+
+ if test "$memcheck_enabled" = "yes" ; then
+ if test "$hpux_host" = "yes" ; then
+@@ -20226,8 +19655,8 @@
+ fi
+
+
+-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
++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
+@@ -20251,36 +19680,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20289,10 +19706,9 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_header_stdc=no
++ac_cv_header_stdc=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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.
+@@ -20348,7 +19764,6 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ctype.h>
+-#include <stdlib.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+@@ -20368,27 +19783,18 @@
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+- return 2;
+- return 0;
++ exit(2);
++ exit (0);
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>&5
++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'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20401,14 +19807,12 @@
+ ( exit $ac_status )
+ ac_cv_header_stdc=no
+ fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f 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; }
++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
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -20428,19 +19832,18 @@
+ for ac_header in poll.h sys/poll.h sys/uio.h fcntl.h sys/time.h unistd.h sys/audio.h linux/soundcard.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ 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
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -20451,36 +19854,24 @@
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20489,16 +19880,15 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_header_compiler=no
++ac_header_compiler=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6; }
++rm -f conftest.err 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 $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -20507,13 +19897,8 @@
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
++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
+@@ -20537,10 +19922,9 @@
+
+ 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; }
++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:$ac_c_preproc_warn_flag in
+@@ -20564,19 +19948,25 @@
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+-
++ (
++ cat <<\_ASBOX
++## ------------------------------- ##
++## Report this to the ortp lists. ##
++## ------------------------------- ##
++_ASBOX
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++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
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-ac_res=`eval echo '${'$as_ac_Header'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -20589,8 +19979,8 @@
+ done
+
+
+-{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
+ if test "${ac_cv_c_const+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -20608,10 +19998,10 @@
+ #ifndef __cplusplus
+ /* Ultrix mips cc rejects this. */
+ typedef int charset[2];
+- const charset cs;
++ const charset x;
+ /* SunOS 4.1.1 cc rejects this. */
+- char const *const *pcpcc;
+- char **ppc;
++ char const *const *ccp;
++ char **p;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+@@ -20620,17 +20010,16 @@
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+- pcpcc = &g + (g ? g-g : 0);
++ ccp = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+- ++pcpcc;
+- ppc = (char**) pcpcc;
+- pcpcc = (char const *const *) ppc;
++ ++ccp;
++ p = (char**) ccp;
++ ccp = (char const *const *) p;
+ { /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+- if (s) return 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+@@ -20649,9 +20038,7 @@
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+- if (!foo) return 0;
+ }
+- return !cs[0] && !zero.x;
+ #endif
+
+ ;
+@@ -20659,36 +20046,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20697,13 +20072,12 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_c_const=no
++ac_cv_c_const=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+-echo "${ECHO_T}$ac_cv_c_const" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
++echo "${ECHO_T}$ac_cv_c_const" >&6
+ if test $ac_cv_c_const = no; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -20712,8 +20086,8 @@
+
+ fi
+
+-{ echo "$as_me:$LINENO: checking for inline" >&5
+-echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for inline" >&5
++echo $ECHO_N "checking for inline... $ECHO_C" >&6
+ if test "${ac_cv_c_inline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -20733,54 +20107,39 @@
+
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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_c_inline=$ac_kw
++ ac_cv_c_inline=$ac_kw; break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+- test "$ac_cv_c_inline" != no && break
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+-echo "${ECHO_T}$ac_cv_c_inline" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
++echo "${ECHO_T}$ac_cv_c_inline" >&6
+
+
+ case $ac_cv_c_inline in
+@@ -20798,8 +20157,8 @@
+ ;;
+ esac
+
+-{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
+-echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
++echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
+ if test "${ac_cv_header_time+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -20823,36 +20182,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20861,13 +20208,12 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_header_time=no
++ac_cv_header_time=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
+-echo "${ECHO_T}$ac_cv_header_time" >&6; }
++echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
++echo "${ECHO_T}$ac_cv_header_time" >&6
+ if test $ac_cv_header_time = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -20876,8 +20222,8 @@
+
+ fi
+
+-{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+-echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; }
++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
+@@ -20894,8 +20240,7 @@
+ int
+ main ()
+ {
+-#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \
+- && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN)
++#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+ bogus endian macros
+ #endif
+
+@@ -20904,36 +20249,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20959,36 +20292,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -20997,15 +20318,14 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- ac_cv_c_bigendian=no
++ac_cv_c_bigendian=no
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- # It does not; compile a test program.
++# 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
+@@ -21015,11 +20335,11 @@
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+-short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
++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 int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+-short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
++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 ()
+@@ -21030,36 +20350,24 @@
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_compile") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -21078,10 +20386,8 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -21089,41 +20395,27 @@
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-$ac_includes_default
+ int
+ main ()
+ {
+-
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+- long int l;
+- char c[sizeof (long int)];
++ long l;
++ char c[sizeof (long)];
+ } u;
+ u.l = 1;
+- return u.c[sizeof (long int) - 1] == 1;
+-
+- ;
+- return 0;
++ exit (u.c[sizeof (long) - 1] == 1);
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>&5
++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'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -21136,16 +20428,13 @@
+ ( exit $ac_status )
+ ac_cv_c_bigendian=yes
+ fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
+-
+-
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err 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; }
++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)
+
+@@ -21173,9 +20462,9 @@
+ for ac_func in select socket strerror
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
++echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
++if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -21201,59 +20490,53 @@
+
+ #undef $ac_func
+
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
++/* 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 $ac_func ();
+ /* 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_$ac_func || defined __stub___$ac_func
++#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+ choke me
++#else
++char (*f) () = $ac_func;
++#endif
++#ifdef __cplusplus
++}
+ #endif
+
+ int
+ main ()
+ {
+-return $ac_func ();
++return f != $ac_func;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_link") 2>conftest.er1
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 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); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (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); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+- { (case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+- (eval "$ac_try") 2>&5
++ { (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
+@@ -21262,15 +20545,13 @@
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- eval "$as_ac_var=no"
++eval "$as_ac_var=no"
+ fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-ac_res=`eval echo '${'$as_ac_var'}'`
+- { echo "$as_me:$LINENO: result: $ac_res" >&5
+-echo "${ECHO_T}$ac_res" >&6; }
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -21314,31 +20595,31 @@
+
+
+
+-# Check whether --with-html-dir was given.
++# Check whether --with-html-dir or --without-html-dir was given.
+ if test "${with_html_dir+set}" = set; then
+- withval=$with_html_dir;
++ withval="$with_html_dir"
++
+ else
+ with_html_dir='${datadir}/gtk-doc/html'
+-fi
+-
++fi;
+ HTML_DIR="$with_html_dir"
+
+
+- # Check whether --enable-gtk-doc was given.
++ # Check whether --enable-gtk-doc or --disable-gtk-doc was given.
+ if test "${enable_gtk_doc+set}" = set; then
+- enableval=$enable_gtk_doc;
++ enableval="$enable_gtk_doc"
++
+ else
+ enable_gtk_doc=no
+-fi
+-
++fi;
+
+ have_gtk_doc=no
+ if test x$enable_gtk_doc = xyes; then
+ if test -z "$PKG_CONFIG"; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+ set dummy pkg-config; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -21353,29 +20634,28 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+ esac
+ fi
+ PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++
+ if test -n "$PKG_CONFIG"; then
+- { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+-echo "${ECHO_T}$PKG_CONFIG" >&6; }
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ fi
+ if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
+ have_gtk_doc=yes
+@@ -21413,8 +20693,8 @@
+
+ # Extract the first word of "epm", so it can be a program name with args.
+ set dummy epm; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_path_EPM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -21429,33 +20709,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_EPM="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_EPM" && ac_cv_path_EPM="false"
+ ;;
+ esac
+ fi
+ EPM=$ac_cv_path_EPM
++
+ if test -n "$EPM"; then
+- { echo "$as_me:$LINENO: result: $EPM" >&5
+-echo "${ECHO_T}$EPM" >&6; }
++ echo "$as_me:$LINENO: result: $EPM" >&5
++echo "${ECHO_T}$EPM" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ # Extract the first word of "mkepmlist", so it can be a program name with args.
+ set dummy mkepmlist; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_path_MKEPMLIST+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -21470,33 +20749,32 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_MKEPMLIST="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_MKEPMLIST" && ac_cv_path_MKEPMLIST="false"
+ ;;
+ esac
+ fi
+ MKEPMLIST=$ac_cv_path_MKEPMLIST
++
+ if test -n "$MKEPMLIST"; then
+- { echo "$as_me:$LINENO: result: $MKEPMLIST" >&5
+-echo "${ECHO_T}$MKEPMLIST" >&6; }
++ echo "$as_me:$LINENO: result: $MKEPMLIST" >&5
++echo "${ECHO_T}$MKEPMLIST" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+-
+ # Extract the first word of "epminstall", so it can be a program name with args.
+ set dummy epminstall; ac_word=$2
+-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_path_EPMINSTALL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -21511,31 +20789,30 @@
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_EPMINSTALL="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+-IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_EPMINSTALL" && ac_cv_path_EPMINSTALL="false"
+ ;;
+ esac
+ fi
+ EPMINSTALL=$ac_cv_path_EPMINSTALL
++
+ if test -n "$EPMINSTALL"; then
+- { echo "$as_me:$LINENO: result: $EPMINSTALL" >&5
+-echo "${ECHO_T}$EPMINSTALL" >&6; }
++ echo "$as_me:$LINENO: result: $EPMINSTALL" >&5
++echo "${ECHO_T}$EPMINSTALL" >&6
+ else
+- { echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6; }
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+
+
+
+-
+ if test $EPM != false && test $MKEPMLIST != false && test $EPMINSTALL != false; then
+ WITH_EPM_TRUE=
+ WITH_EPM_FALSE='#'
+@@ -21600,8 +20877,7 @@
+
+
+
+-ac_config_files="$ac_config_files Makefile include/Makefile include/ortp/Makefile src/Makefile src/tests/Makefile src/tests/win_receiver/Makefile src/tests/win_sender/Makefile docs/Makefile build/Makefile build/win32native/Makefile build/wince/Makefile ortp.pc ortp.spec"
+-
++ ac_config_files="$ac_config_files Makefile include/Makefile include/ortp/Makefile src/Makefile src/tests/Makefile src/tests/win_receiver/Makefile src/tests/win_sender/Makefile docs/Makefile build/Makefile build/win32native/Makefile build/wince/Makefile ortp.pc ortp.spec"
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+@@ -21620,58 +20896,39 @@
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, we kill variables containing newlines.
++# 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.
+-(
+- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+- eval ac_val=\$$ac_var
+- case $ac_val in #(
+- *${as_nl}*)
+- case $ac_var in #(
+- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+- esac
+- case $ac_var in #(
+- _ | IFS | as_nl) ;; #(
+- *) $as_unset $ac_var ;;
+- esac ;;
+- esac
+- done
+-
++{
+ (set) 2>&1 |
+- case $as_nl`(ac_space=' '; set) 2>&1` in #(
+- *${as_nl}ac_space=\ *)
++ 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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
++ sed -n \
++ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+- esac |
+- sort
+-) |
++ esac;
++} |
+ sed '
+- /^ac_cv_env_/b end
+ t clear
+- :clear
++ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- :end' >>confcache
+-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+- if test -w "$cache_file"; then
+- test "x$cache_file" != "x/dev/null" &&
+- { echo "$as_me:$LINENO: updating cache $cache_file" >&5
+-echo "$as_me: updating cache $cache_file" >&6;}
++ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ : end' >>confcache
++if diff $cache_file confcache >/dev/null 2>&1; then :; else
++ if test -w $cache_file; then
++ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+- { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+-echo "$as_me: not updating unwritable cache $cache_file" >&6;}
++ echo "not updating unwritable cache $cache_file"
+ fi
+ fi
+ rm -f confcache
+@@ -21680,18 +20937,32 @@
+ # 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).
++if test "x$srcdir" = x.; then
++ ac_vpsub='/^[ ]*VPATH[ ]*=/{
++s/:*\$(srcdir):*/:/;
++s/:*\${srcdir}:*/:/;
++s/:*@srcdir@:*/:/;
++s/^\([^=]*=[ ]*\):*/\1/;
++s/:*$//;
++s/^[^=]*=[ ]*$//;
++}'
++fi
++
+ DEFS=-DHAVE_CONFIG_H
+
+ 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_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+- ac_i=`echo "$ac_i" | sed "$ac_script"`
+- # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+- # will be set to the directory where LIBOBJS objects are built.
+- ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+- ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
++ 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
+
+@@ -21778,35 +21049,11 @@
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+- setopt NO_GLOB_SUBST
+-else
+- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
++elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
++ set -o posix
+ fi
+-BIN_SH=xpg4; export BIN_SH # for Tru64
+ DUALCASE=1; export DUALCASE # for MKS sh
+
+-
+-# PATH needs CR
+-# 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
+-
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+@@ -21815,43 +21062,8 @@
+ fi
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order. Quoting is
+-# there to prevent editors from complaining about space-tab.
+-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+-# splitting by setting IFS to empty value.)
+-as_nl='
+-'
+-IFS=" "" $as_nl"
+-
+-# Find who we are. Look in the path if we contain no directory separator.
+-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
+-IFS=$as_save_IFS
+-
+- ;;
+-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_myself: error: cannot find myself; rerun with an absolute file name" >&2
+- { (exit 1); exit 1; }
+-fi
+-
+ # Work around bugs in pre-3.0 UWIN ksh.
+-for as_var in ENV MAIL MAILPATH
+-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+-done
++$as_unset ENV MAIL MAILPATH
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -21865,19 +21077,18 @@
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++ $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1 &&
+- test "X`expr 00001 : '.*\(...\)'`" = X001; then
++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
++if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -21885,120 +21096,159 @@
+
+
+ # Name of the executable.
+-as_me=`$as_basename -- "$0" ||
++as_me=`$as_basename "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
++ X"$0" : 'X\(/\)$' \| \
++ . : '\(.\)' 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{
+- s//\1/
+- q
+- }
+- /^X\/\(\/\/\)$/{
+- s//\1/
+- q
+- }
+- /^X\/\(\/\).*/{
+- s//\1/
+- q
+- }
+- s/.*/./; q'`
++ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
++ /^X\/\(\/\/\)$/{ s//\1/; q; }
++ /^X\/\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+
+-# CDPATH.
+-$as_unset CDPATH
++
++# 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:$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`expr $as_lineno_1 + 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 after each line using $LINENO; the second 'sed'
+- # does the real work. The second script uses 'N' to pair each
+- # line-number line with the line containing $LINENO, and appends
+- # trailing '-' during substitution so that $LINENO is not a special
+- # case at line end.
++ # 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
+- # scripts with optimization help from Paolo Bonzini. Blame Lee
+- # E. McMahon (1931-1989) for sed's syntax. :-)
+- sed -n '
+- p
+- /[$]LINENO/=
+- ' <$as_myself |
++ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
++ sed '=' <$as_myself |
+ sed '
+- s/[$]LINENO.*/&-/
+- t lineno
+- b
+- :lineno
+ N
+- :loop
+- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
++ s,$,-,
++ : loop
++ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+- s/-\n.*//
++ 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
++ 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 sensitive to this).
+- . "./$as_me.lineno"
++ # original and so on. Autoconf is especially sensible to this).
++ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+- as_dirname=dirname
+-else
+- as_dirname=false
+-fi
+-
+-ECHO_C= ECHO_N= ECHO_T=
+-case `echo -n x` in
+--n*)
+- case `echo 'x\c'` in
+- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+- *) ECHO_C='\c';;
+- esac;;
+-*)
+- ECHO_N='-n';;
++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 &&
+- test "X`expr 00001 : '.*\(...\)'`" = X001; then
++if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
+-if test -d conf$$.dir; then
+- rm -f conf$$.dir/conf$$.file
+-else
+- rm -f conf$$.dir
+- mkdir conf$$.dir
+-fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- as_ln_s='ln -s'
+- # ... but there are two gotchas:
+- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+- # In both cases, we have to default to `cp -p'.
+- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
++ # 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$$.dir/conf$$.file conf$$.file
+-rmdir conf$$.dir 2>/dev/null
++rm -f conf$$ conf$$.exe conf$$.file
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -22007,19 +21257,7 @@
+ as_mkdir_p=false
+ fi
+
+-# Find out whether ``test -x'' works. Don't use a zero-byte file, as
+-# systems may use methods other than mode bits to determine executability.
+-cat >conf$$.file <<_ASEOF
+-#! /bin/sh
+-exit 0
+-_ASEOF
+-chmod +x conf$$.file
+-if test -x conf$$.file >/dev/null 2>&1; then
+- as_executable_p="test -x"
+-else
+- as_executable_p=:
+-fi
+-rm -f conf$$.file
++as_executable_p="test -f"
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -22028,14 +21266,31 @@
+ as_tr_sh="eval 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
+
+-# Save the log message, to keep $[0] and so on meaningful, and to
+-# report actual input values of CONFIG_FILES etc. instead of their
+-# values after options handling.
+-ac_log="
++# 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 ortp $as_me 0.11.1, which was
+-generated by GNU Autoconf 2.60a. Invocation command line was
++generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+@@ -22043,20 +21298,30 @@
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+-on `(hostname || uname -n) 2>/dev/null | sed 1q`
+-"
+-
++_CSEOF
++echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
++echo >&5
+ _ACEOF
+
+-cat >>$CONFIG_STATUS <<_ACEOF
+ # Files that config.status was made for.
+-config_files="$ac_config_files"
+-config_headers="$ac_config_headers"
+-config_commands="$ac_config_commands"
++if test -n "$ac_config_files"; then
++ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
++fi
+
+-_ACEOF
++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.
+@@ -22064,7 +21329,7 @@
+ Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+- -V, --version print version number and configuration settings, 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
+@@ -22083,21 +21348,19 @@
+ $config_commands
+
+ Report bugs to <bug-autoconf@gnu.org>."
+-
+ _ACEOF
++
+ cat >>$CONFIG_STATUS <<_ACEOF
+ ac_cs_version="\\
+ ortp config.status 0.11.1
+-configured by $0, generated by GNU Autoconf 2.60a,
+- with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
++configured by $0, generated by GNU Autoconf 2.59,
++ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+-Copyright (C) 2006 Free Software Foundation, Inc.
++Copyright (C) 2003 Free Software Foundation, Inc.
+ This config.status script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it."
+-
+-ac_pwd='$ac_pwd'
+-srcdir='$srcdir'
+-INSTALL='$INSTALL'
++srcdir=$srcdir
++INSTALL="$INSTALL"
+ _ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+@@ -22108,24 +21371,39 @@
+ do
+ case $1 in
+ --*=*)
+- ac_option=`expr "X$1" : 'X\([^=]*\)='`
+- ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
++ 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 | --versio | --versi | --vers | --ver | --ve | --v | -V )
+- echo "$ac_cs_version"; exit ;;
+- --debug | --debu | --deb | --de | --d | -d )
++ --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
+@@ -22135,24 +21413,18 @@
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+- --he | --h)
+- # Conflict between --help and --header
+- { 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 ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+- -*) { echo "$as_me: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&2
++ -*) { { 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"
+- ac_need_defaults=false ;;
++ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+@@ -22168,61 +21440,49 @@
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ if \$ac_cs_recheck; then
+- echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+- CONFIG_SHELL=$SHELL
+- export CONFIG_SHELL
+- exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
++ 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
+
+ _ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-exec 5>>config.log
+-{
+- echo
+- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+-## Running $as_me. ##
+-_ASBOX
+- echo "$ac_log"
+-} >&5
+
+-_ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ #
+-# INIT-COMMANDS
++# INIT-COMMANDS section.
+ #
++
+ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+ _ACEOF
+
+-cat >>$CONFIG_STATUS <<\_ACEOF
+
+-# Handling of arguments.
++
++cat >>$CONFIG_STATUS <<\_ACEOF
+ for ac_config_target in $ac_config_targets
+ do
+- case $ac_config_target in
+- "ortp-config.h") CONFIG_HEADERS="$CONFIG_HEADERS ortp-config.h" ;;
+- "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+- "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+- "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
+- "include/ortp/Makefile") CONFIG_FILES="$CONFIG_FILES include/ortp/Makefile" ;;
+- "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+- "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
+- "src/tests/win_receiver/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/win_receiver/Makefile" ;;
+- "src/tests/win_sender/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/win_sender/Makefile" ;;
+- "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
+- "build/Makefile") CONFIG_FILES="$CONFIG_FILES build/Makefile" ;;
+- "build/win32native/Makefile") CONFIG_FILES="$CONFIG_FILES build/win32native/Makefile" ;;
+- "build/wince/Makefile") CONFIG_FILES="$CONFIG_FILES build/wince/Makefile" ;;
+- "ortp.pc") CONFIG_FILES="$CONFIG_FILES ortp.pc" ;;
+- "ortp.spec") CONFIG_FILES="$CONFIG_FILES ortp.spec" ;;
+-
++ case "$ac_config_target" in
++ # Handling of arguments.
++ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
++ "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
++ "include/ortp/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/ortp/Makefile" ;;
++ "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
++ "src/tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
++ "src/tests/win_receiver/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/tests/win_receiver/Makefile" ;;
++ "src/tests/win_sender/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/tests/win_sender/Makefile" ;;
++ "docs/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
++ "build/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/Makefile" ;;
++ "build/win32native/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/win32native/Makefile" ;;
++ "build/wince/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/wince/Makefile" ;;
++ "ortp.pc" ) CONFIG_FILES="$CONFIG_FILES ortp.pc" ;;
++ "ortp.spec" ) CONFIG_FILES="$CONFIG_FILES ortp.spec" ;;
++ "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
++ "ortp-config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS ortp-config.h" ;;
+ *) { { 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; }; };;
+ 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
+@@ -22234,492 +21494,386 @@
+ fi
+
+ # Have a temporary directory for convenience. Make it in the build tree
+-# simply because there is no reason against having it here, and in addition,
++# simply because there is no reason to put it here, and in addition,
+ # creating and moving files from /tmp can sometimes cause problems.
+-# Hook for its removal unless debugging.
+-# Note that there is a small window in which the directory will not be cleaned:
+-# after its creation but before its name has been assigned to `$tmp'.
++# Create a temporary directory, and hook for its removal unless debugging.
+ $debug ||
+ {
+- tmp=
+- trap 'exit_status=$?
+- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+-' 0
++ 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 "./confXXXXXX") 2>/dev/null` &&
++ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+ } ||
+ {
+- tmp=./conf$$-$RANDOM
+- (umask 077 && mkdir "$tmp")
++ tmp=./confstat$$-$RANDOM
++ (umask 077 && mkdir $tmp)
+ } ||
+ {
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+ }
+
+-#
+-# Set up the sed scripts for 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
+-
+-_ACEOF
+-
+-
+-
+-ac_delim='%!_!# '
+-for ac_last_try in false false false false false :; do
+- cat >conf$$subs.sed <<_ACEOF
+-SHELL!$SHELL$ac_delim
+-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
+-PACKAGE_NAME!$PACKAGE_NAME$ac_delim
+-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
+-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
+-PACKAGE_STRING!$PACKAGE_STRING$ac_delim
+-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
+-exec_prefix!$exec_prefix$ac_delim
+-prefix!$prefix$ac_delim
+-program_transform_name!$program_transform_name$ac_delim
+-bindir!$bindir$ac_delim
+-sbindir!$sbindir$ac_delim
+-libexecdir!$libexecdir$ac_delim
+-datarootdir!$datarootdir$ac_delim
+-datadir!$datadir$ac_delim
+-sysconfdir!$sysconfdir$ac_delim
+-sharedstatedir!$sharedstatedir$ac_delim
+-localstatedir!$localstatedir$ac_delim
+-includedir!$includedir$ac_delim
+-oldincludedir!$oldincludedir$ac_delim
+-docdir!$docdir$ac_delim
+-infodir!$infodir$ac_delim
+-htmldir!$htmldir$ac_delim
+-dvidir!$dvidir$ac_delim
+-pdfdir!$pdfdir$ac_delim
+-psdir!$psdir$ac_delim
+-libdir!$libdir$ac_delim
+-localedir!$localedir$ac_delim
+-mandir!$mandir$ac_delim
+-DEFS!$DEFS$ac_delim
+-ECHO_C!$ECHO_C$ac_delim
+-ECHO_N!$ECHO_N$ac_delim
+-ECHO_T!$ECHO_T$ac_delim
+-LIBS!$LIBS$ac_delim
+-build_alias!$build_alias$ac_delim
+-host_alias!$host_alias$ac_delim
+-target_alias!$target_alias$ac_delim
+-build!$build$ac_delim
+-build_cpu!$build_cpu$ac_delim
+-build_vendor!$build_vendor$ac_delim
+-build_os!$build_os$ac_delim
+-host!$host$ac_delim
+-host_cpu!$host_cpu$ac_delim
+-host_vendor!$host_vendor$ac_delim
+-host_os!$host_os$ac_delim
+-target!$target$ac_delim
+-target_cpu!$target_cpu$ac_delim
+-target_vendor!$target_vendor$ac_delim
+-target_os!$target_os$ac_delim
+-LIBORTP_SO_VERSION!$LIBORTP_SO_VERSION$ac_delim
+-ORTP_VERSION!$ORTP_VERSION$ac_delim
+-ORTP_PKGCONFIG_VERSION!$ORTP_PKGCONFIG_VERSION$ac_delim
+-INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
+-INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
+-INSTALL_DATA!$INSTALL_DATA$ac_delim
+-CYGPATH_W!$CYGPATH_W$ac_delim
+-PACKAGE!$PACKAGE$ac_delim
+-VERSION!$VERSION$ac_delim
+-ACLOCAL!$ACLOCAL$ac_delim
+-AUTOCONF!$AUTOCONF$ac_delim
+-AUTOMAKE!$AUTOMAKE$ac_delim
+-AUTOHEADER!$AUTOHEADER$ac_delim
+-MAKEINFO!$MAKEINFO$ac_delim
+-install_sh!$install_sh$ac_delim
+-STRIP!$STRIP$ac_delim
+-INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
+-mkdir_p!$mkdir_p$ac_delim
+-AWK!$AWK$ac_delim
+-SET_MAKE!$SET_MAKE$ac_delim
+-am__leading_dot!$am__leading_dot$ac_delim
+-AMTAR!$AMTAR$ac_delim
+-am__tar!$am__tar$ac_delim
+-am__untar!$am__untar$ac_delim
+-CC!$CC$ac_delim
+-CFLAGS!$CFLAGS$ac_delim
+-LDFLAGS!$LDFLAGS$ac_delim
+-CPPFLAGS!$CPPFLAGS$ac_delim
+-ac_ct_CC!$ac_ct_CC$ac_delim
+-EXEEXT!$EXEEXT$ac_delim
+-OBJEXT!$OBJEXT$ac_delim
+-DEPDIR!$DEPDIR$ac_delim
+-am__include!$am__include$ac_delim
+-am__quote!$am__quote$ac_delim
+-AMDEP_TRUE!$AMDEP_TRUE$ac_delim
+-AMDEP_FALSE!$AMDEP_FALSE$ac_delim
+-AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
+-CCDEPMODE!$CCDEPMODE$ac_delim
+-am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
+-am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
+-GREP!$GREP$ac_delim
+-EGREP!$EGREP$ac_delim
+-LN_S!$LN_S$ac_delim
+-ECHO!$ECHO$ac_delim
+-AR!$AR$ac_delim
+-RANLIB!$RANLIB$ac_delim
+-CPP!$CPP$ac_delim
+-CXX!$CXX$ac_delim
+ _ACEOF
+
+- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
+- break
+- elif $ac_last_try; then
+- { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+- { (exit 1); exit 1; }; }
+- else
+- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+- fi
+-done
+-
+-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+-if test -n "$ac_eof"; then
+- ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+- ac_eof=`expr $ac_eof + 1`
+-fi
+-
+-cat >>$CONFIG_STATUS <<_ACEOF
+-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
+-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-_ACEOF
+-sed '
+-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+-s/^/s,@/; s/!/@,|#_!!_#|/
+-:n
+-t n
+-s/'"$ac_delim"'$/,g/; t
+-s/$/\\/; p
+-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+-' >>$CONFIG_STATUS <conf$$subs.sed
+-rm -f conf$$subs.sed
+ cat >>$CONFIG_STATUS <<_ACEOF
+-CEOF$ac_eof
+-_ACEOF
+
++#
++# CONFIG_FILES section.
++#
+
+-ac_delim='%!_!# '
+-for ac_last_try in false false false false false :; do
+- cat >conf$$subs.sed <<_ACEOF
+-CXXFLAGS!$CXXFLAGS$ac_delim
+-ac_ct_CXX!$ac_ct_CXX$ac_delim
+-CXXDEPMODE!$CXXDEPMODE$ac_delim
+-am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim
+-am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim
+-CXXCPP!$CXXCPP$ac_delim
+-F77!$F77$ac_delim
+-FFLAGS!$FFLAGS$ac_delim
+-ac_ct_F77!$ac_ct_F77$ac_delim
+-LIBTOOL!$LIBTOOL$ac_delim
+-PTHREAD_CFLAGS!$PTHREAD_CFLAGS$ac_delim
+-PTHREAD_LIBS!$PTHREAD_LIBS$ac_delim
+-PTHREAD_LDFLAGS!$PTHREAD_LDFLAGS$ac_delim
+-HAVE_GTK_DOC_TRUE!$HAVE_GTK_DOC_TRUE$ac_delim
+-HAVE_GTK_DOC_FALSE!$HAVE_GTK_DOC_FALSE$ac_delim
+-HTML_DIR!$HTML_DIR$ac_delim
+-PKG_CONFIG!$PKG_CONFIG$ac_delim
+-ENABLE_GTK_DOC_TRUE!$ENABLE_GTK_DOC_TRUE$ac_delim
+-ENABLE_GTK_DOC_FALSE!$ENABLE_GTK_DOC_FALSE$ac_delim
+-GTK_DOC_USE_LIBTOOL_TRUE!$GTK_DOC_USE_LIBTOOL_TRUE$ac_delim
+-GTK_DOC_USE_LIBTOOL_FALSE!$GTK_DOC_USE_LIBTOOL_FALSE$ac_delim
+-EPM!$EPM$ac_delim
+-MKEPMLIST!$MKEPMLIST$ac_delim
+-EPMINSTALL!$EPMINSTALL$ac_delim
+-WITH_EPM_TRUE!$WITH_EPM_TRUE$ac_delim
+-WITH_EPM_FALSE!$WITH_EPM_FALSE$ac_delim
+-EPM_PKG_EXT!$EPM_PKG_EXT$ac_delim
+-SYS_USER!$SYS_USER$ac_delim
+-SYS_GROUP!$SYS_GROUP$ac_delim
+-ARCH!$ARCH$ac_delim
+-SUMMARY!$SUMMARY$ac_delim
+-PACKAGER!$PACKAGER$ac_delim
+-LICENSE!$LICENSE$ac_delim
+-VENDOR!$VENDOR$ac_delim
+-RELEASE!$RELEASE$ac_delim
+-ORTPDEPS_CFLAGS!$ORTPDEPS_CFLAGS$ac_delim
+-ORTPDEPS_LIBS!$ORTPDEPS_LIBS$ac_delim
+-ORTPDEPS_LDFLAGS!$ORTPDEPS_LDFLAGS$ac_delim
+-LIBOBJS!$LIBOBJS$ac_delim
+-LTLIBOBJS!$LTLIBOBJS$ac_delim
+-_ACEOF
+-
+- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 40; then
+- break
+- elif $ac_last_try; then
+- { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+- { (exit 1); exit 1; }; }
+- else
+- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
++# 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,@LIBORTP_SO_VERSION@,$LIBORTP_SO_VERSION,;t t
++s,@ORTP_VERSION@,$ORTP_VERSION,;t t
++s,@ORTP_PKGCONFIG_VERSION@,$ORTP_PKGCONFIG_VERSION,;t t
++s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
++s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
++s,@INSTALL_DATA@,$INSTALL_DATA,;t t
++s,@CYGPATH_W@,$CYGPATH_W,;t t
++s,@PACKAGE@,$PACKAGE,;t t
++s,@VERSION@,$VERSION,;t t
++s,@ACLOCAL@,$ACLOCAL,;t t
++s,@AUTOCONF@,$AUTOCONF,;t t
++s,@AUTOMAKE@,$AUTOMAKE,;t t
++s,@AUTOHEADER@,$AUTOHEADER,;t t
++s,@MAKEINFO@,$MAKEINFO,;t t
++s,@install_sh@,$install_sh,;t t
++s,@STRIP@,$STRIP,;t t
++s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
++s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
++s,@mkdir_p@,$mkdir_p,;t t
++s,@AWK@,$AWK,;t t
++s,@SET_MAKE@,$SET_MAKE,;t t
++s,@am__leading_dot@,$am__leading_dot,;t t
++s,@AMTAR@,$AMTAR,;t t
++s,@am__tar@,$am__tar,;t t
++s,@am__untar@,$am__untar,;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,@DEPDIR@,$DEPDIR,;t t
++s,@am__include@,$am__include,;t t
++s,@am__quote@,$am__quote,;t t
++s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
++s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
++s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
++s,@CCDEPMODE@,$CCDEPMODE,;t t
++s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
++s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
++s,@EGREP@,$EGREP,;t t
++s,@LN_S@,$LN_S,;t t
++s,@ECHO@,$ECHO,;t t
++s,@AR@,$AR,;t t
++s,@ac_ct_AR@,$ac_ct_AR,;t t
++s,@RANLIB@,$RANLIB,;t t
++s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
++s,@CPP@,$CPP,;t t
++s,@CXX@,$CXX,;t t
++s,@CXXFLAGS@,$CXXFLAGS,;t t
++s,@ac_ct_CXX@,$ac_ct_CXX,;t t
++s,@CXXDEPMODE@,$CXXDEPMODE,;t t
++s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
++s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
++s,@CXXCPP@,$CXXCPP,;t t
++s,@F77@,$F77,;t t
++s,@FFLAGS@,$FFLAGS,;t t
++s,@ac_ct_F77@,$ac_ct_F77,;t t
++s,@LIBTOOL@,$LIBTOOL,;t t
++s,@PTHREAD_CFLAGS@,$PTHREAD_CFLAGS,;t t
++s,@PTHREAD_LIBS@,$PTHREAD_LIBS,;t t
++s,@PTHREAD_LDFLAGS@,$PTHREAD_LDFLAGS,;t t
++s,@HAVE_GTK_DOC_TRUE@,$HAVE_GTK_DOC_TRUE,;t t
++s,@HAVE_GTK_DOC_FALSE@,$HAVE_GTK_DOC_FALSE,;t t
++s,@HTML_DIR@,$HTML_DIR,;t t
++s,@PKG_CONFIG@,$PKG_CONFIG,;t t
++s,@ENABLE_GTK_DOC_TRUE@,$ENABLE_GTK_DOC_TRUE,;t t
++s,@ENABLE_GTK_DOC_FALSE@,$ENABLE_GTK_DOC_FALSE,;t t
++s,@GTK_DOC_USE_LIBTOOL_TRUE@,$GTK_DOC_USE_LIBTOOL_TRUE,;t t
++s,@GTK_DOC_USE_LIBTOOL_FALSE@,$GTK_DOC_USE_LIBTOOL_FALSE,;t t
++s,@EPM@,$EPM,;t t
++s,@MKEPMLIST@,$MKEPMLIST,;t t
++s,@EPMINSTALL@,$EPMINSTALL,;t t
++s,@WITH_EPM_TRUE@,$WITH_EPM_TRUE,;t t
++s,@WITH_EPM_FALSE@,$WITH_EPM_FALSE,;t t
++s,@EPM_PKG_EXT@,$EPM_PKG_EXT,;t t
++s,@SYS_USER@,$SYS_USER,;t t
++s,@SYS_GROUP@,$SYS_GROUP,;t t
++s,@ARCH@,$ARCH,;t t
++s,@SUMMARY@,$SUMMARY,;t t
++s,@PACKAGER@,$PACKAGER,;t t
++s,@LICENSE@,$LICENSE,;t t
++s,@VENDOR@,$VENDOR,;t t
++s,@RELEASE@,$RELEASE,;t t
++s,@ORTPDEPS_CFLAGS@,$ORTPDEPS_CFLAGS,;t t
++s,@ORTPDEPS_LIBS@,$ORTPDEPS_LIBS,;t t
++s,@ORTPDEPS_LDFLAGS@,$ORTPDEPS_LDFLAGS,;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
+ fi
+-done
+-
+-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+-if test -n "$ac_eof"; then
+- ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+- ac_eof=`expr $ac_eof + 1`
+-fi
++fi # test -n "$CONFIG_FILES"
+
+-cat >>$CONFIG_STATUS <<_ACEOF
+-cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
+-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+-_ACEOF
+-sed '
+-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+-s/^/s,@/; s/!/@,|#_!!_#|/
+-:n
+-t n
+-s/'"$ac_delim"'$/,g/; t
+-s/$/\\/; p
+-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+-' >>$CONFIG_STATUS <conf$$subs.sed
+-rm -f conf$$subs.sed
+-cat >>$CONFIG_STATUS <<_ACEOF
+-:end
+-s/|#_!!_#|//g
+-CEOF$ac_eof
+ _ACEOF
+-
+-
+-# 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).
+-if test "x$srcdir" = x.; then
+- ac_vpsub='/^[ ]*VPATH[ ]*=/{
+-s/:*\$(srcdir):*/:/
+-s/:*\${srcdir}:*/:/
+-s/:*@srcdir@:*/:/
+-s/^\([^=]*=[ ]*\):*/\1/
+-s/:*$//
+-s/^[^=]*=[ ]*$//
+-}'
+-fi
+-
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-fi # test -n "$CONFIG_FILES"
+-
+-
+-for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
+-do
+- case $ac_tag in
+- :[FHLC]) ac_mode=$ac_tag; continue;;
+- esac
+- case $ac_mode$ac_tag in
+- :[FHL]*:*);;
+- :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+-echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+- { (exit 1); exit 1; }; };;
+- :[FH]-) ac_tag=-:-;;
+- :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+- esac
+- ac_save_IFS=$IFS
+- IFS=:
+- set x $ac_tag
+- IFS=$ac_save_IFS
+- shift
+- ac_file=$1
+- shift
+-
+- case $ac_mode in
+- :L) ac_source=$1;;
+- :[FH])
+- ac_file_inputs=
+- for ac_f
+- do
+- case $ac_f in
+- -) ac_f="$tmp/stdin";;
+- *) # Look for the file first in the build tree, then in the source tree
+- # (if the path is not absolute). The absolute path cannot be DOS-style,
+- # because $ac_f cannot contain `:'.
+- test -f "$ac_f" ||
+- case $ac_f in
+- [\\/$]*) false;;
+- *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+- esac ||
+- { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+-echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+- { (exit 1); exit 1; }; };;
+- esac
+- ac_file_inputs="$ac_file_inputs $ac_f"
+- done
+-
+- # 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. */
+- configure_input="Generated from "`IFS=:
+- echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+- if test x"$ac_file" != x-; then
+- configure_input="$ac_file. $configure_input"
+- { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+- fi
+-
+- case $ac_tag in
+- *:-:* | *:-) cat >"$tmp/stdin";;
+- esac
+- ;;
++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 ;;
+ esac
+
+- ac_dir=`$as_dirname -- "$ac_file" ||
++ # 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 ||
++ 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'`
+- { as_dir="$ac_dir"
+- case $as_dir in #(
+- -*) as_dir=./$as_dir;;
+- esac
+- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
++ 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 :; do
+- case $as_dir in #(
+- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+- *) as_qdir=$as_dir;;
+- esac
+- as_dirs="'$as_qdir' $as_dirs"
+- as_dir=`$as_dirname -- "$as_dir" ||
++ 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 ||
++ 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'`
+- test -d "$as_dir" && break
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+ done
+- test -z "$as_dirs" || eval "mkdir $as_dirs"
+- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+-echo "$as_me: error: cannot create directory $as_dir" >&2;}
++ 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; }; }; }
++
+ ac_builddir=.
+
+-case "$ac_dir" in
+-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+-*)
++if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A ".." for each directory in $ac_dir_suffix.
+- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+- case $ac_top_builddir_sub in
+- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+- esac ;;
+-esac
+-ac_abs_top_builddir=$ac_pwd
+-ac_abs_builddir=$ac_pwd$ac_dir_suffix
+-# for backward compatibility:
+-ac_top_builddir=$ac_top_build_prefix
++ # 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
+- .) # We are building in place.
++ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+- ac_top_srcdir=$ac_top_builddir_sub
+- ac_abs_top_srcdir=$ac_pwd ;;
+- [\\/]* | ?:[\\/]* ) # Absolute name.
++ 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
+- ac_abs_top_srcdir=$srcdir ;;
+- *) # Relative name.
+- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_build_prefix$srcdir
+- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++ ac_top_srcdir=$srcdir ;;
++ *) # Relative path.
++ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+ esac
+-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
++# Do not use `cd foo && pwd` to compute absolute paths, because
++# the directories may not exist.
++case `pwd` in
++.) ac_abs_builddir="$ac_dir";;
++*)
++ case "$ac_dir" in
++ .) ac_abs_builddir=`pwd`;;
++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
++ *) ac_abs_builddir=`pwd`/"$ac_dir";;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_builddir=${ac_top_builddir}.;;
++*)
++ case ${ac_top_builddir}. in
++ .) ac_abs_top_builddir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_srcdir=$ac_srcdir;;
++*)
++ case $ac_srcdir in
++ .) ac_abs_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_srcdir=$ac_top_srcdir;;
++*)
++ case $ac_top_srcdir in
++ .) ac_abs_top_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
++ esac;;
++esac
+
+- case $ac_mode in
+- :F)
+- #
+- # CONFIG_FILE
+- #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+- *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
++ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+ esac
+-_ACEOF
+
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-# If the template does not know about datarootdir, expand it.
+-# FIXME: This hack should be removed a few years after 2.60.
+-ac_datarootdir_hack=; ac_datarootdir_seen=
+-
+-case `sed -n '/datarootdir/ {
+- p
+- q
+-}
+-/@datadir@/p
+-/@docdir@/p
+-/@infodir@/p
+-/@localedir@/p
+-/@mandir@/p
+-' $ac_file_inputs` in
+-*datarootdir*) ac_datarootdir_seen=yes;;
+-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+- { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+-_ACEOF
+-cat >>$CONFIG_STATUS <<_ACEOF
+- ac_datarootdir_hack='
+- s&@datadir@&$datadir&g
+- s&@docdir@&$docdir&g
+- s&@infodir@&$infodir&g
+- s&@localedir@&$localedir&g
+- s&@mandir@&$mandir&g
+- s&\\\${datarootdir}&$datarootdir&g' ;;
+-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."
++
++ # 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
+-
+-# Neutralize VPATH when `$srcdir' = `.'.
+-# Shell code in configure.ac might set extrasub.
+-# FIXME: do we really want to maintain this feature?
+ cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+ $extrasub
+@@ -22727,130 +21881,248 @@
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ :t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-s&@configure_input@&$configure_input&;t t
+-s&@top_builddir@&$ac_top_builddir_sub&;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&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+-s&@INSTALL@&$ac_INSTALL&;t t
+-$ac_datarootdir_hack
+-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
+-
+-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+- { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+-which seems to be undefined. Please make sure it is defined." >&5
+-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+-which seems to be undefined. Please make sure it is defined." >&2;}
++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
+
+- rm -f "$tmp/stdin"
+- case $ac_file in
+- -) cat "$tmp/out"; rm -f "$tmp/out";;
+- *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+- esac
+- ;;
+- :H)
+- #
+- # CONFIG_HEADER
+- #
++done
+ _ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++
++#
++# CONFIG_HEADER section.
++#
+
+-# Transform confdefs.h into a sed script `conftest.defines', that
+-# substitutes the proper values into config.h.in to produce config.h.
+-rm -f conftest.defines conftest.tail
+-# First, append a space to every undef/define line, to ease matching.
+-echo 's/$/ /' >conftest.defines
+-# Then, protect against being on the right side of a sed subst, or in
+-# an unquoted here document, in config.status. If some macros were
+-# called several times there might be several #defines for the same
+-# symbol, which is useless. But do not sort them, since the last
+-# AC_DEFINE must be honored.
+-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+-# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
+-# NAME is the cpp macro being defined, VALUE is the value it is being given.
+-# PARAMS is the parameter list in the macro definition--in most cases, it's
+-# just an empty string.
+-ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
+-ac_dB='\\)[ (].*,\\1define\\2'
++# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
++# NAME is the cpp macro being defined and VALUE is the value it is being given.
++#
++# ac_d sets the value in "#define NAME VALUE" lines.
++ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
++ac_dB='[ ].*$,\1#\2'
+ ac_dC=' '
+-ac_dD=' ,'
++ac_dD=',;t'
++# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
++ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
++ac_uB='$,\1#\2define\3'
++ac_uC=' '
++ac_uD=',;t'
++
++for ac_file in : $CONFIG_HEADERS; 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 ;;
++ esac
++
++ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
++echo "$as_me: creating $ac_file" >&6;}
++
++ # 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; }; }
++ # Do quote $f, to prevent DOS paths from being IFS'd.
++ 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; }
++ # Remove the trailing spaces.
++ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+-uniq confdefs.h |
+- sed -n '
+- t rset
+- :rset
+- s/^[ ]*#[ ]*define[ ][ ]*//
+- t ok
+- d
+- :ok
+- s/[\\&,]/\\&/g
+- s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
+- s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
+- ' >>conftest.defines
++_ACEOF
++
++# Transform confdefs.h into two sed scripts, `conftest.defines' and
++# `conftest.undefs', that substitutes the proper values into
++# config.h.in to produce config.h. The first handles `#define'
++# templates, and the second `#undef' templates.
++# And first: Protect against being on the right side of a sed subst in
++# config.status. Protect against being in an unquoted here document
++# in config.status.
++rm -f conftest.defines conftest.undefs
++# Using a here document instead of a string reduces the quoting nightmare.
++# Putting comments in sed scripts is not portable.
++#
++# `end' is used to avoid that the second main sed command (meant for
++# 0-ary CPP macros) applies to n-ary macro definitions.
++# See the Autoconf documentation for `clear'.
++cat >confdef2sed.sed <<\_ACEOF
++s/[\\&,]/\\&/g
++s,[\\$`],\\&,g
++t clear
++: clear
++s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
++t end
++s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
++: end
++_ACEOF
++# If some macros were called several times there might be several times
++# the same #defines, which is useless. Nevertheless, we may not want to
++# sort them, since we want the *last* AC-DEFINE to be honored.
++uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
++sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
++rm -f confdef2sed.sed
+
+-# Remove the space that was appended to ease matching.
+-# Then replace #undef with comments. This is necessary, for
++# This sed command replaces #undef with comments. This is necessary, for
+ # example, in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+-# (The regexp can be short, since the line contains either #define or #undef.)
+-echo 's/ $//
+-s,^[ #]*u.*,/* & */,' >>conftest.defines
+-
+-# Break up conftest.defines:
+-ac_max_sed_lines=50
+-
+-# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
+-# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
+-# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
+-# et cetera.
+-ac_in='$ac_file_inputs'
+-ac_out='"$tmp/out1"'
+-ac_nxt='"$tmp/out2"'
++cat >>conftest.undefs <<\_ACEOF
++s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
++_ACEOF
+
+-while :
++# Break up conftest.defines because some shells have a limit on the size
++# of here documents, and old seds have small limits too (100 cmds).
++echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
++echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
++echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
++echo ' :' >>$CONFIG_STATUS
++rm -f conftest.tail
++while grep . conftest.defines >/dev/null
+ do
+- # Write a here document:
+- cat >>$CONFIG_STATUS <<_ACEOF
+- # First, check the format of the line:
+- cat >"\$tmp/defines.sed" <<\\CEOF
+-/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
+-/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
+-b
+-:def
+-_ACEOF
+- sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
++ # Write a limited-size here document to $tmp/defines.sed.
++ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
++ # Speed up: don't consider the non `#define' lines.
++ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
++ # Work around the forget-to-reset-the-flag bug.
++ echo 't clr' >>$CONFIG_STATUS
++ echo ': clr' >>$CONFIG_STATUS
++ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+- sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
+- ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
+- sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
+- grep . conftest.tail >/dev/null || break
++ sed -f $tmp/defines.sed $tmp/in >$tmp/out
++ rm -f $tmp/in
++ mv $tmp/out $tmp/in
++' >>$CONFIG_STATUS
++ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+ done
+-rm -f conftest.defines conftest.tail
++rm -f conftest.defines
++echo ' fi # grep' >>$CONFIG_STATUS
++echo >>$CONFIG_STATUS
++
++# Break up conftest.undefs because some shells have a limit on the size
++# of here documents, and old seds have small limits too (100 cmds).
++echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
++rm -f conftest.tail
++while grep . conftest.undefs >/dev/null
++do
++ # Write a limited-size here document to $tmp/undefs.sed.
++ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
++ # Speed up: don't consider the non `#undef'
++ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
++ # Work around the forget-to-reset-the-flag bug.
++ echo 't clr' >>$CONFIG_STATUS
++ echo ': clr' >>$CONFIG_STATUS
++ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
++ echo 'CEOF
++ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
++ rm -f $tmp/in
++ mv $tmp/out $tmp/in
++' >>$CONFIG_STATUS
++ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
++ rm -f conftest.undefs
++ mv conftest.tail conftest.undefs
++done
++rm -f conftest.undefs
+
+-echo "ac_result=$ac_in" >>$CONFIG_STATUS
+ cat >>$CONFIG_STATUS <<\_ACEOF
++ # 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
++ echo "/* Generated by configure. */" >$tmp/config.h
++ else
++ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
++ fi
++ cat $tmp/in >>$tmp/config.h
++ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+- echo "/* $configure_input */" >"$tmp/config.h"
+- cat "$ac_result" >>"$tmp/config.h"
+- if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
++ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+ echo "$as_me: $ac_file is unchanged" >&6;}
+ else
++ 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; }; }; }
++
+ rm -f $ac_file
+- mv "$tmp/config.h" $ac_file
++ mv $tmp/config.h $ac_file
+ fi
+ else
+- echo "/* $configure_input */"
+- cat "$ac_result"
++ cat $tmp/config.h
++ rm -f $tmp/config.h
+ fi
+- rm -f "$tmp/out12"
+ # Compute $ac_file's index in $config_headers.
+ _am_stamp_count=1
+ for _am_header in $config_headers :; do
+@@ -22861,39 +22133,135 @@
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+ done
+-echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
++echo "timestamp for $ac_file" >`(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 ||
++ 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'`/stamp-h$_am_stamp_count
+- ;;
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`/stamp-h$_am_stamp_count
++done
++_ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
+
+- :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
+-echo "$as_me: executing $ac_file commands" >&6;}
+- ;;
+- esac
++#
++# CONFIG_COMMANDS section.
++#
++for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
++ ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
++ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
++ ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
++$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
++ X"$ac_dest" : 'X\(//\)[^/]' \| \
++ X"$ac_dest" : 'X\(//\)$' \| \
++ X"$ac_dest" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
++echo X"$ac_dest" |
++ 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; }; }; }
++
++ 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
++
++# Do not use `cd foo && pwd` to compute absolute paths, because
++# the directories may not exist.
++case `pwd` in
++.) ac_abs_builddir="$ac_dir";;
++*)
++ case "$ac_dir" in
++ .) ac_abs_builddir=`pwd`;;
++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
++ *) ac_abs_builddir=`pwd`/"$ac_dir";;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_builddir=${ac_top_builddir}.;;
++*)
++ case ${ac_top_builddir}. in
++ .) ac_abs_top_builddir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_srcdir=$ac_srcdir;;
++*)
++ case $ac_srcdir in
++ .) ac_abs_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
++ esac;;
++esac
++case $ac_abs_builddir in
++.) ac_abs_top_srcdir=$ac_top_srcdir;;
++*)
++ case $ac_top_srcdir in
++ .) ac_abs_top_srcdir=$ac_abs_builddir;;
++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
++ esac;;
++esac
+
+
+- case $ac_file$ac_mode in
+- "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
++ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
++echo "$as_me: executing $ac_dest commands" >&6;}
++ case $ac_dest in
++ depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+@@ -22903,29 +22271,18 @@
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+- dirpart=`$as_dirname -- "$mf" ||
++ dirpart=`(dirname "$mf") 2>/dev/null ||
+ $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+- X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
++ X"$mf" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
+ echo X"$mf" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+- s//\1/
+- q
+- }
+- /^X\(\/\/\)[^/].*/{
+- s//\1/
+- q
+- }
+- /^X\(\/\/\)$/{
+- s//\1/
+- q
+- }
+- /^X\(\/\).*/{
+- s//\1/
+- q
+- }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+ else
+ continue
+ fi
+@@ -22947,79 +22304,53 @@
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+- fdir=`$as_dirname -- "$file" ||
++ fdir=`(dirname "$file") 2>/dev/null ||
+ $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+- X"$file" : 'X\(/\)' \| . 2>/dev/null ||
++ X"$file" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
+ echo X"$file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+- s//\1/
+- q
+- }
+- /^X\(\/\/\)[^/].*/{
+- s//\1/
+- q
+- }
+- /^X\(\/\/\)$/{
+- s//\1/
+- q
+- }
+- /^X\(\/\).*/{
+- s//\1/
+- q
+- }
+- s/.*/./; q'`
+- { as_dir=$dirpart/$fdir
+- case $as_dir in #(
+- -*) as_dir=./$as_dir;;
+- esac
+- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
++ 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 $dirpart/$fdir
++ else
++ as_dir=$dirpart/$fdir
+ as_dirs=
+- while :; do
+- case $as_dir in #(
+- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+- *) as_qdir=$as_dir;;
+- esac
+- as_dirs="'$as_qdir' $as_dirs"
+- as_dir=`$as_dirname -- "$as_dir" ||
++ 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 ||
++ 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'`
+- test -d "$as_dir" && break
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
+ done
+- test -z "$as_dirs" || eval "mkdir $as_dirs"
+- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+-echo "$as_me: error: cannot create directory $as_dir" >&2;}
++ test ! -n "$as_dirs" || mkdir $as_dirs
++ fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
++echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+ { (exit 1); exit 1; }; }; }
++
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+ ;;
+-
+ esac
+-done # for ac_tag
++done
++_ACEOF
+
++cat >>$CONFIG_STATUS <<\_ACEOF
+
+ { (exit 0); exit 0; }
+ _ACEOF
+diff -ur linphone-1.5.0/oRTP/docs/Makefile.in linphone-1.5.0-after/oRTP/docs/Makefile.in
+--- linphone-1.5.0/oRTP/docs/Makefile.in 2006-10-09 17:10:39.000000000 +0800
++++ linphone-1.5.0-after/oRTP/docs/Makefile.in 2007-01-19 16:05:19.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -100,7 +100,6 @@
+ EXEEXT = @EXEEXT@
+ F77 = @F77@
+ FFLAGS = @FFLAGS@
+-GREP = @GREP@
+ GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+ GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+ HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
+@@ -150,9 +149,12 @@
+ VERSION = @VERSION@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -169,30 +171,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+diff -ur linphone-1.5.0/oRTP/include/Makefile.in linphone-1.5.0-after/oRTP/include/Makefile.in
+--- linphone-1.5.0/oRTP/include/Makefile.in 2006-10-09 17:10:39.000000000 +0800
++++ linphone-1.5.0-after/oRTP/include/Makefile.in 2007-01-19 16:05:19.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -92,7 +92,6 @@
+ EXEEXT = @EXEEXT@
+ F77 = @F77@
+ FFLAGS = @FFLAGS@
+-GREP = @GREP@
+ GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+ GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+ HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
+@@ -142,9 +141,12 @@
+ VERSION = @VERSION@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -161,30 +163,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -244,13 +239,7 @@
+ # (which will cause the Makefiles to be regenerated when you run `make');
+ # (2) otherwise, pass the desired values on the `make' command line.
+ $(RECURSIVE_TARGETS):
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -262,7 +251,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+@@ -270,13 +259,7 @@
+
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+@@ -297,7 +280,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+ tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+diff -ur linphone-1.5.0/oRTP/include/ortp/Makefile.in linphone-1.5.0-after/oRTP/include/ortp/Makefile.in
+--- linphone-1.5.0/oRTP/include/ortp/Makefile.in 2006-10-09 17:10:39.000000000 +0800
++++ linphone-1.5.0-after/oRTP/include/ortp/Makefile.in 2007-01-19 16:05:19.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -96,7 +96,6 @@
+ EXEEXT = @EXEEXT@
+ F77 = @F77@
+ FFLAGS = @FFLAGS@
+-GREP = @GREP@
+ GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+ GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+ HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
+@@ -146,9 +145,12 @@
+ VERSION = @VERSION@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -165,30 +167,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+diff -ur linphone-1.5.0/oRTP/include/ortp/ortp.h linphone-1.5.0-after/oRTP/include/ortp/ortp.h
+--- linphone-1.5.0/oRTP/include/ortp/ortp.h 2006-09-22 15:19:58.000000000 +0800
++++ linphone-1.5.0-after/oRTP/include/ortp/ortp.h 2006-11-14 15:44:36.000000000 +0800
+@@ -79,6 +79,8 @@
+ va_end (args);
+ }
+
++#define ORTP_DEBUG_MODE 1
++
+ #ifdef ORTP_DEBUG_MODE
+ static inline void ortp_debug(const char *fmt,...)
+ {
+@@ -88,6 +90,7 @@
+ va_end (args);
+ }
+ #else
++/*
+ #if defined(WIN32) || defined(_WIN32_WCE)
+ static inline void ortp_debug(const char *fmt,...)
+ {
+@@ -98,6 +101,7 @@
+ #else
+ #define ortp_debug(...)
+ #endif
++*/
+ #endif
+
+ static inline void ortp_message(const char *fmt,...)
+Only in linphone-1.5.0-after/oRTP/include/ortp: ortp.h~
+diff -ur linphone-1.5.0/oRTP/ltmain.sh linphone-1.5.0-after/oRTP/ltmain.sh
+--- linphone-1.5.0/oRTP/ltmain.sh 2006-03-12 02:49:04.000000000 +0800
++++ linphone-1.5.0-after/oRTP/ltmain.sh 2007-01-19 16:05:21.000000000 +0800
+@@ -1,7 +1,7 @@
+ # ltmain.sh - Provide generalized library-building support services.
+ # NOTE: Changing this file will not affect anything until you rerun configure.
+ #
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
+ # Free Software Foundation, Inc.
+ # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+ #
+@@ -17,7 +17,7 @@
+ #
+ # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -33,6 +33,9 @@
+ # function.
+ progpath="$0"
+
++# RH: define SED for historic ltconfig's generated by Libtool 1.3
++[ -z "$SED" ] && SED=sed
++
+ # The name of this program:
+ progname=`echo "$progpath" | $SED $basename`
+ modename="$progname"
+@@ -43,14 +46,9 @@
+
+ PROGRAM=ltmain.sh
+ PACKAGE=libtool
+-VERSION="1.5.22 Debian 1.5.22-4"
+-TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
++VERSION=1.5.6
++TIMESTAMP=" (1.1220.2.95 2004/04/11 05:50:42)"
+
+-# See if we are running on zsh, and set the options which allow our
+-# commands through without removal of \ escapes.
+-if test -n "${ZSH_VERSION+set}" ; then
+- setopt NO_GLOB_SUBST
+-fi
+
+ # Check that we have a working $echo.
+ if test "X$1" = X--no-reexec; then
+@@ -88,15 +86,14 @@
+ Xsed="${SED}"' -e 1s/^X//'
+ sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+ # test EBCDIC or ASCII
+-case `echo X|tr X '\101'` in
+- A) # ASCII based system
+- # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+- SP2NL='tr \040 \012'
+- NL2SP='tr \015\012 \040\040'
++case `echo A|tr A '\301'` in
++ A) # EBCDIC based system
++ SP2NL="tr '\100' '\n'"
++ NL2SP="tr '\r\n' '\100\100'"
+ ;;
+- *) # EBCDIC based system
+- SP2NL='tr \100 \n'
+- NL2SP='tr \r\n \100\100'
++ *) # Assume ASCII based system
++ SP2NL="tr '\040' '\012'"
++ NL2SP="tr '\015\012' '\040\040'"
+ ;;
+ esac
+
+@@ -113,9 +110,8 @@
+ fi
+
+ # Make sure IFS has a sensible default
+-lt_nl='
+-'
+-IFS=" $lt_nl"
++: ${IFS="
++"}
+
+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ $echo "$modename: not configured to build any kind of library" 1>&2
+@@ -132,8 +128,6 @@
+ show="$echo"
+ show_help=
+ execute_dlfiles=
+-duplicate_deps=no
+-preserve_args=
+ lo2o="s/\\.lo\$/.${objext}/"
+ o2lo="s/\\.${objext}\$/.lo/"
+
+@@ -141,51 +135,13 @@
+ # Shell function definitions:
+ # This seems to be the best place for them
+
+-# func_mktempdir [string]
+-# Make a temporary directory that won't clash with other running
+-# libtool processes, and avoids race conditions if possible. If
+-# given, STRING is the basename for that directory.
+-func_mktempdir ()
+-{
+- my_template="${TMPDIR-/tmp}/${1-$progname}"
+-
+- if test "$run" = ":"; then
+- # Return a directory name, but don't create it in dry-run mode
+- my_tmpdir="${my_template}-$$"
+- else
+-
+- # If mktemp works, use that first and foremost
+- my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+-
+- if test ! -d "$my_tmpdir"; then
+- # Failing that, at least try and use $RANDOM to avoid a race
+- my_tmpdir="${my_template}-${RANDOM-0}$$"
+-
+- save_mktempdir_umask=`umask`
+- umask 0077
+- $mkdir "$my_tmpdir"
+- umask $save_mktempdir_umask
+- fi
+-
+- # If we're not in dry-run mode, bomb out on failure
+- test -d "$my_tmpdir" || {
+- $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+- exit $EXIT_FAILURE
+- }
+- fi
+-
+- $echo "X$my_tmpdir" | $Xsed
+-}
+-
+-
+ # func_win32_libid arg
+ # return the library type of file 'arg'
+ #
+ # Need a lot of goo to handle *both* DLLs and import libs
+ # Has to be a shell function in order to 'eat' the argument
+ # that is supplied when $file_magic_command is called.
+-func_win32_libid ()
+-{
++func_win32_libid () {
+ win32_libid_type="unknown"
+ win32_fileres=`file -L $1 2>/dev/null`
+ case $win32_fileres in
+@@ -196,11 +152,12 @@
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 | \
+- $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
+- case $win32_nmres in
+- import*) win32_libid_type="x86 archive import";;
+- *) win32_libid_type="x86 archive static";;
+- esac
++ sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
++ if test "X$win32_nmres" = "Ximport" ; then
++ win32_libid_type="x86 archive import"
++ else
++ win32_libid_type="x86 archive static"
++ fi
+ fi
+ ;;
+ *DLL*)
+@@ -224,8 +181,7 @@
+ # Only attempt this if the compiler in the base compile
+ # command doesn't match the default compiler.
+ # arg is usually of the form 'gcc ...'
+-func_infer_tag ()
+-{
++func_infer_tag () {
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+@@ -282,116 +238,12 @@
+ esac
+ fi
+ }
+-
+-
+-# func_extract_an_archive dir oldlib
+-func_extract_an_archive ()
+-{
+- f_ex_an_ar_dir="$1"; shift
+- f_ex_an_ar_oldlib="$1"
+-
+- $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+- $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+- if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+- :
+- else
+- $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+- exit $EXIT_FAILURE
+- fi
+-}
+-
+-# func_extract_archives gentop oldlib ...
+-func_extract_archives ()
+-{
+- my_gentop="$1"; shift
+- my_oldlibs=${1+"$@"}
+- my_oldobjs=""
+- my_xlib=""
+- my_xabs=""
+- my_xdir=""
+- my_status=""
+-
+- $show "${rm}r $my_gentop"
+- $run ${rm}r "$my_gentop"
+- $show "$mkdir $my_gentop"
+- $run $mkdir "$my_gentop"
+- my_status=$?
+- if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+- exit $my_status
+- fi
+-
+- for my_xlib in $my_oldlibs; do
+- # Extract the objects.
+- case $my_xlib in
+- [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+- *) my_xabs=`pwd`"/$my_xlib" ;;
+- esac
+- my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+- my_xdir="$my_gentop/$my_xlib"
+-
+- $show "${rm}r $my_xdir"
+- $run ${rm}r "$my_xdir"
+- $show "$mkdir $my_xdir"
+- $run $mkdir "$my_xdir"
+- exit_status=$?
+- if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+- exit $exit_status
+- fi
+- case $host in
+- *-darwin*)
+- $show "Extracting $my_xabs"
+- # Do not bother doing anything if just a dry run
+- if test -z "$run"; then
+- darwin_orig_dir=`pwd`
+- cd $my_xdir || exit $?
+- darwin_archive=$my_xabs
+- darwin_curdir=`pwd`
+- darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+- darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+- if test -n "$darwin_arches"; then
+- darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+- darwin_arch=
+- $show "$darwin_base_archive has multiple architectures $darwin_arches"
+- for darwin_arch in $darwin_arches ; do
+- mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+- lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+- cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+- func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+- cd "$darwin_curdir"
+- $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+- done # $darwin_arches
+- ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+- darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+- darwin_file=
+- darwin_files=
+- for darwin_file in $darwin_filelist; do
+- darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+- lipo -create -output "$darwin_file" $darwin_files
+- done # $darwin_filelist
+- ${rm}r unfat-$$
+- cd "$darwin_orig_dir"
+- else
+- cd "$darwin_orig_dir"
+- func_extract_an_archive "$my_xdir" "$my_xabs"
+- fi # $darwin_arches
+- fi # $run
+- ;;
+- *)
+- func_extract_an_archive "$my_xdir" "$my_xabs"
+- ;;
+- esac
+- my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+- done
+- func_extract_archives_result="$my_oldobjs"
+-}
+ # End of Shell function definitions
+ #####################################
+
+ # Darwin sucks
+ eval std_shrext=\"$shrext_cmds\"
+
+-disable_libs=no
+-
+ # Parse our command line options once, thoroughly.
+ while test "$#" -gt 0
+ do
+@@ -456,10 +308,10 @@
+ --version)
+ $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+ $echo
+- $echo "Copyright (C) 2005 Free Software Foundation, Inc."
++ $echo "Copyright (C) 2003 Free Software Foundation, Inc."
+ $echo "This is free software; see the source for copying conditions. There is NO"
+ $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+- exit $?
++ exit $EXIT_SUCCESS
+ ;;
+
+ --config)
+@@ -468,7 +320,7 @@
+ for tagname in $taglist; do
+ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+ done
+- exit $?
++ exit $EXIT_SUCCESS
+ ;;
+
+ --debug)
+@@ -493,7 +345,7 @@
+ else
+ $echo "disable static libraries"
+ fi
+- exit $?
++ exit $EXIT_SUCCESS
+ ;;
+
+ --finish) mode="finish" ;;
+@@ -508,11 +360,7 @@
+ preserve_args="$preserve_args $arg"
+ ;;
+
+- --tag)
+- prevopt="--tag"
+- prev=tag
+- preserve_args="$preserve_args --tag"
+- ;;
++ --tag) prevopt="--tag" prev=tag ;;
+ --tag=*)
+ set tag "$optarg" ${1+"$@"}
+ shift
+@@ -544,18 +392,6 @@
+ exit $EXIT_FAILURE
+ fi
+
+-case $disable_libs in
+-no)
+- ;;
+-shared)
+- build_libtool_libs=no
+- build_old_libs=yes
+- ;;
+-static)
+- build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+- ;;
+-esac
+-
+ # If this variable is set in any of the actions, the command in it
+ # will be execed at the end. This prevents here-documents from being
+ # left over by shells.
+@@ -566,7 +402,7 @@
+ # Infer the operation mode.
+ if test -z "$mode"; then
+ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+- $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
++ $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2
+ case $nonopt in
+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+ mode=link
+@@ -632,7 +468,7 @@
+
+ for arg
+ do
+- case $arg_mode in
++ case "$arg_mode" in
+ arg )
+ # do not "continue". Instead, add this to base_compile
+ lastarg="$arg"
+@@ -714,10 +550,7 @@
+ case $lastarg in
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+- # in scan sets, and some SunOS ksh mistreat backslash-escaping
+- # in scan sets (worked around with variable expansion),
+- # and furthermore cannot handle '|' '&' '(' ')' in scan sets
+- # at all, so we specify them separately.
++ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ lastarg="\"$lastarg\""
+ ;;
+@@ -791,14 +624,6 @@
+ esac
+ done
+
+- qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+- case $qlibobj in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- qlibobj="\"$qlibobj\"" ;;
+- esac
+- test "X$libobj" != "X$qlibobj" \
+- && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
+- && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$obj"; then
+@@ -871,17 +696,12 @@
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+- $echo "$srcfile" > "$lockfile"
++ $echo $srcfile > "$lockfile"
+ fi
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+- qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+- case $qsrcfile in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- qsrcfile="\"$qsrcfile\"" ;;
+- esac
+
+ $run $rm "$libobj" "${libobj}T"
+
+@@ -903,18 +723,18 @@
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+- command="$base_compile $qsrcfile $pic_flag"
++ command="$base_compile $srcfile $pic_flag"
+ else
+ # Don't build PIC code
+- command="$base_compile $qsrcfile"
++ command="$base_compile $srcfile"
+ fi
+
+ if test ! -d "${xdir}$objdir"; then
+ $show "$mkdir ${xdir}$objdir"
+ $run $mkdir ${xdir}$objdir
+- exit_status=$?
+- if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+- exit $exit_status
++ status=$?
++ if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
++ exit $status
+ fi
+ fi
+
+@@ -986,9 +806,9 @@
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+- command="$base_compile $qsrcfile"
++ command="$base_compile $srcfile"
+ else
+- command="$base_compile $qsrcfile $pic_flag"
++ command="$base_compile $srcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+@@ -1117,7 +937,6 @@
+ no_install=no
+ objs=
+ non_pic_objects=
+- notinst_path= # paths that contain not-installed libtool libraries
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+@@ -1146,15 +965,14 @@
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+- prefer_static_libs=yes
+ else
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+- prefer_static_libs=built
+ fi
+ build_libtool_libs=no
+ build_old_libs=yes
++ prefer_static_libs=yes
+ break
+ ;;
+ esac
+@@ -1329,11 +1147,6 @@
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+- else
+- # If the PIC object exists, use it instead.
+- # $xdir was prepended to $pic_object above.
+- non_pic_object="$pic_object"
+- non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+@@ -1417,13 +1230,6 @@
+ prev=
+ continue
+ ;;
+- darwin_framework|darwin_framework_skip)
+- test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
+- compile_command="$compile_command $arg"
+- finalize_command="$finalize_command $arg"
+- prev=
+- continue
+- ;;
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+@@ -1482,18 +1288,6 @@
+ continue
+ ;;
+
+- -framework|-arch|-isysroot)
+- case " $CC " in
+- *" ${arg} ${1} "* | *" ${arg} ${1} "*)
+- prev=darwin_framework_skip ;;
+- *) compiler_flags="$compiler_flags $arg"
+- prev=darwin_framework ;;
+- esac
+- compile_command="$compile_command $arg"
+- finalize_command="$finalize_command $arg"
+- continue
+- ;;
+-
+ -inst-prefix-dir)
+ prev=inst_prefix
+ continue
+@@ -1520,8 +1314,7 @@
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+- absdir="$dir"
+- notinst_path="$notinst_path $dir"
++ exit $EXIT_FAILURE
+ fi
+ dir="$absdir"
+ ;;
+@@ -1535,15 +1328,10 @@
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+- testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+- case :$dllsearchpath: in
+- *":$testbindir:"*) ;;
+- *) dllsearchpath="$dllsearchpath:$testbindir";;
+- esac
+ ;;
+ esac
+ continue
+@@ -1552,15 +1340,15 @@
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
++ *-*-cygwin* | *-*-pw32* | *-*-beos*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+- *-*-os2*)
++ *-*-mingw* | *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
++ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+@@ -1568,19 +1356,10 @@
+ # Rhapsody C and math libraries are in the System framework
+ deplibs="$deplibs -framework System"
+ continue
+- ;;
+- *-*-sco3.2v5* | *-*-sco5v6*)
+- # Causes problems with __ctype
+- test "X$arg" = "X-lc" && continue
+- ;;
+- *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+- # Compiler inserts libc in the correct place for threads to work
+- test "X$arg" = "X-lc" && continue
+- ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
++ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+@@ -1590,20 +1369,8 @@
+ continue
+ ;;
+
+- # Tru64 UNIX uses -model [arg] to determine the layout of C++
+- # classes, name mangling, and exception handling.
+- -model)
+- compile_command="$compile_command $arg"
+- compiler_flags="$compiler_flags $arg"
+- finalize_command="$finalize_command $arg"
+- prev=xcompiler
+- continue
+- ;;
+-
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+- compiler_flags="$compiler_flags $arg"
+- compile_command="$compile_command $arg"
+- finalize_command="$finalize_command $arg"
++ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+@@ -1612,19 +1379,13 @@
+ continue
+ ;;
+
+- # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+- # -r[0-9][0-9]* specifies the processor on the SGI compiler
+- # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+- # +DA*, +DD* enable 64-bit mode on the HP compiler
+- # -q* pass through compiler args for the IBM compiler
+- # -m* pass through architecture-specific compiler args for GCC
+- # -m*, -t[45]*, -txscale* pass through architecture-specific
+- # compiler args for GCC
+- # -pg pass through profiling flag for GCC
+- # @file GCC response files
+- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
+- -t[45]*|-txscale*|@*)
+-
++ # gcc -m* arguments should be passed to the linker via $compiler_flags
++ # in order to pass architecture information to the linker
++ # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo
++ # but this is not reliable with gcc because gcc may use -mfoo to
++ # select a different linker, different libraries, etc, while
++ # -Wl,-mfoo simply passes -mfoo to the linker.
++ -m*)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+@@ -1635,7 +1396,9 @@
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+- compiler_flags="$compiler_flags $arg"
++ if test "$with_gcc" = "yes" ; then
++ compiler_flags="$compiler_flags $arg"
++ fi
+ continue
+ ;;
+
+@@ -1873,11 +1636,6 @@
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+- else
+- # If the PIC object exists, use it instead.
+- # $xdir was prepended to $pic_object above.
+- non_pic_object="$pic_object"
+- non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+@@ -1983,9 +1741,9 @@
+ if test ! -d "$output_objdir"; then
+ $show "$mkdir $output_objdir"
+ $run $mkdir $output_objdir
+- exit_status=$?
+- if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+- exit $exit_status
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$output_objdir"; then
++ exit $status
+ fi
+ fi
+
+@@ -2048,6 +1806,7 @@
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ notinst_deplibs= # not-installed libtool libraries
++ notinst_path= # paths that contain not-installed libtool libraries
+ case $linkmode in
+ lib)
+ passes="conv link"
+@@ -2082,10 +1841,7 @@
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+- link)
+- libs="$deplibs %DEPLIBS%"
+- test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+- ;;
++ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
+ if test "$pass" = dlopen; then
+@@ -2102,7 +1858,7 @@
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+- compiler_flags="$compiler_flags $deplib"
++ deplibs="$deplib $deplibs"
+ fi
+ continue
+ ;;
+@@ -2111,6 +1867,10 @@
+ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+ continue
+ fi
++ if test "$pass" = conv; then
++ deplibs="$deplib $deplibs"
++ continue
++ fi
+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ for search_ext in .la $std_shrext .so .a; do
+@@ -2221,22 +1981,7 @@
+ fi
+ case $linkmode in
+ lib)
+- valid_a_lib=no
+- case $deplibs_check_method in
+- match_pattern*)
+- set dummy $deplibs_check_method
+- match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+- if eval $echo \"$deplib\" 2>/dev/null \
+- | $SED 10q \
+- | $EGREP "$match_pattern_regex" > /dev/null; then
+- valid_a_lib=yes
+- fi
+- ;;
+- pass_all)
+- valid_a_lib=yes
+- ;;
+- esac
+- if test "$valid_a_lib" != yes; then
++ if test "$deplibs_check_method" != pass_all; then
+ $echo
+ $echo "*** Warning: Trying to link with static lib archive $deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+@@ -2286,7 +2031,7 @@
+ esac # case $deplib
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+- $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
++ $echo "$modename: cannot find the library \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+@@ -2310,8 +2055,6 @@
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+- avoidtemprpath=
+-
+
+ # Read the .la file
+ case $lib in
+@@ -2410,19 +2153,11 @@
+ dir="$libdir"
+ absdir="$libdir"
+ fi
+- test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+- if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+- dir="$ladir"
+- absdir="$abs_ladir"
+- # Remove this search path later
+- notinst_path="$notinst_path $abs_ladir"
+- else
+- dir="$ladir/$objdir"
+- absdir="$abs_ladir/$objdir"
+- # Remove this search path later
+- notinst_path="$notinst_path $abs_ladir"
+- fi
++ dir="$ladir/$objdir"
++ absdir="$abs_ladir/$objdir"
++ # Remove this search path later
++ notinst_path="$notinst_path $abs_ladir"
+ fi # $installed = yes
+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+@@ -2495,12 +2230,12 @@
+ if test -n "$library_names" &&
+ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ # We need to hardcode the library path
+- if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
++ if test -n "$shlibpath_var"; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath " in
+ *" $dir "*) ;;
+ *" $absdir "*) ;;
+- *) temp_rpath="$temp_rpath $absdir" ;;
++ *) temp_rpath="$temp_rpath $dir" ;;
+ esac
+ fi
+
+@@ -2537,12 +2272,8 @@
+ fi
+
+ link_static=no # Whether the deplib will be linked statically
+- use_static_libs=$prefer_static_libs
+- if test "$use_static_libs" = built && test "$installed" = yes ; then
+- use_static_libs=no
+- fi
+ if test -n "$library_names" &&
+- { test "$use_static_libs" = no || test -z "$old_library"; }; then
++ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+@@ -2655,15 +2386,11 @@
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+- *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+- *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+- *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+- *-*-unixware7*) add_dir="-L$dir" ;;
++ *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a module then we can not link against
+ # it, someone is ignoring the new warnings I added
+- if /usr/bin/file -L $add 2> /dev/null |
+- $EGREP ": [^:]* bundle" >/dev/null ; then
++ if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
+ $echo "** Warning, lib $linklib is a module, not a shared library"
+ if test -z "$old_library" ; then
+ $echo
+@@ -2694,7 +2421,7 @@
+ add_dir="-L$dir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+- case $libdir in
++ case "$libdir" in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+@@ -2767,7 +2494,7 @@
+ 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
++ case "$libdir" in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+@@ -2828,6 +2555,8 @@
+ fi
+ fi
+ else
++ convenience="$convenience $dir/$old_library"
++ old_convenience="$old_convenience $dir/$old_library"
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+@@ -2945,13 +2674,13 @@
+ *) continue ;;
+ esac
+ case " $deplibs " in
+- *" $path "*) ;;
+- *) deplibs="$path $deplibs" ;;
+- esac
+- case " $deplibs " in
+ *" $depdepl "*) ;;
+ *) deplibs="$depdepl $deplibs" ;;
+ esac
++ case " $deplibs " in
++ *" $path "*) ;;
++ *) deplibs="$deplibs $path" ;;
++ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+@@ -3204,11 +2933,6 @@
+ age="$number_minor"
+ revision="$number_minor"
+ ;;
+- *)
+- $echo "$modename: unknown library version type \`$version_type'" 1>&2
+- $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+- exit $EXIT_FAILURE
+- ;;
+ esac
+ ;;
+ no)
+@@ -3220,27 +2944,27 @@
+
+ # Check that each of the things are valid numbers.
+ case $current in
+- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
++ [0-9]*) ;;
+ *)
+- $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
++ $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $revision in
+- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
++ [0-9]*) ;;
+ *)
+- $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
++ $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $age in
+- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
++ [0-9]*) ;;
+ *)
+- $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
++ $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+@@ -3266,7 +2990,7 @@
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ minor_current=`expr $current + 1`
+- verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
++ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+@@ -3419,9 +3143,9 @@
+
+ # Eliminate all temporary directories.
+ for path in $notinst_path; do
+- lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+- deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+- dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
++ lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
++ deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
++ dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+ done
+
+ if test -n "$xrpath"; then
+@@ -3472,14 +3196,9 @@
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
++ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc due to us having libc/libc_r.
+- ;;
+- *-*-sco3.2v5* | *-*-sco5v6*)
+- # Causes problems with __ctype
+- ;;
+- *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+- # Compiler inserts libc in the correct place for threads to work
++ test "X$arg" = "X-lc" && continue
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+@@ -3523,11 +3242,11 @@
+ int main() { return 0; }
+ EOF
+ $rm conftest
+- $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
++ $LTCC -o conftest conftest.c $deplibs
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+- name=`expr $i : '-l\(.*\)'`
++ name="`expr $i : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" -ne "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+@@ -3564,11 +3283,11 @@
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+- name=`expr $i : '-l\(.*\)'`
++ name="`expr $i : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $rm conftest
+- $LTCC $LTCFLAGS -o conftest conftest.c $i
++ $LTCC -o conftest conftest.c $i
+ # Did it work?
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+@@ -3616,7 +3335,7 @@
+ set dummy $deplibs_check_method
+ file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+- name=`expr $a_deplib : '-l\(.*\)'`
++ name="`expr $a_deplib : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+@@ -3685,7 +3404,7 @@
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+- name=`expr $a_deplib : '-l\(.*\)'`
++ name="`expr $a_deplib : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test -n "$name" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+@@ -3815,35 +3534,6 @@
+ deplibs=$newdeplibs
+ fi
+
+-
+- # move library search paths that coincide with paths to not yet
+- # installed libraries to the beginning of the library search list
+- new_libs=
+- for path in $notinst_path; do
+- case " $new_libs " in
+- *" -L$path/$objdir "*) ;;
+- *)
+- case " $deplibs " in
+- *" -L$path/$objdir "*)
+- new_libs="$new_libs -L$path/$objdir" ;;
+- esac
+- ;;
+- esac
+- done
+- for deplib in $deplibs; do
+- case $deplib in
+- -L*)
+- case " $new_libs " in
+- *" $deplib "*) ;;
+- *) new_libs="$new_libs $deplib" ;;
+- esac
+- ;;
+- *) new_libs="$new_libs $deplib" ;;
+- esac
+- done
+- deplibs="$new_libs"
+-
+-
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+@@ -3927,7 +3617,6 @@
+ fi
+
+ lib="$output_objdir/$realname"
+- linknames=
+ for link
+ do
+ linknames="$linknames $link"
+@@ -3956,9 +3645,6 @@
+ # The command line is too long to execute in one step.
+ $show "using reloadable object file for export list..."
+ skipped_export=:
+- # Break out early, otherwise skipped_export may be
+- # set to false by a later but shorter cmd.
+- break
+ fi
+ done
+ IFS="$save_ifs"
+@@ -3992,13 +3678,67 @@
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${outputname}x"
++ $show "${rm}r $gentop"
++ $run ${rm}r "$gentop"
++ $show "$mkdir $gentop"
++ $run $mkdir "$gentop"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$gentop"; then
++ exit $status
++ fi
+ generated="$generated $gentop"
+
+- func_extract_archives $gentop $convenience
+- libobjs="$libobjs $func_extract_archives_result"
++ for xlib in $convenience; do
++ # Extract the objects.
++ case $xlib in
++ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
++ *) xabs=`pwd`"/$xlib" ;;
++ esac
++ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
++ xdir="$gentop/$xlib"
++
++ $show "${rm}r $xdir"
++ $run ${rm}r "$xdir"
++ $show "$mkdir $xdir"
++ $run $mkdir "$xdir"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$xdir"; then
++ exit $status
++ fi
++ # We will extract separately just the conflicting names and we will no
++ # longer touch any unique names. It is faster to leave these extract
++ # automatically by $AR in one run.
++ $show "(cd $xdir && $AR x $xabs)"
++ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
++ if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
++ :
++ else
++ $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
++ $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
++ $AR t "$xabs" | sort | uniq -cd | while read -r count name
++ do
++ i=1
++ while test "$i" -le "$count"
++ do
++ # Put our $i before any first dot (extension)
++ # Never overwrite any file
++ name_to="$name"
++ while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
++ do
++ name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
++ done
++ $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
++ $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
++ i=`expr $i + 1`
++ done
++ done
++ fi
++
++ libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
++ done
+ fi
+ fi
+-
++
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+@@ -4028,8 +3768,7 @@
+ fi
+ fi
+
+- if test "X$skipped_export" != "X:" &&
+- len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
++ if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+@@ -4048,7 +3787,6 @@
+ save_libobjs=$libobjs
+ fi
+ save_output=$output
+- output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+@@ -4058,13 +3796,13 @@
+ delfiles=
+ last_robj=
+ k=1
+- output=$output_objdir/$output_la-${k}.$objext
++ output=$output_objdir/$save_output-${k}.$objext
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+ if test "X$objlist" = X ||
+- { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
++ { len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len"; }; then
+ objlist="$objlist $obj"
+ else
+@@ -4078,9 +3816,9 @@
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+ fi
+- last_robj=$output_objdir/$output_la-${k}.$objext
++ last_robj=$output_objdir/$save_output-${k}.$objext
+ k=`expr $k + 1`
+- output=$output_objdir/$output_la-${k}.$objext
++ output=$output_objdir/$save_output-${k}.$objext
+ objlist=$obj
+ len=1
+ fi
+@@ -4100,13 +3838,13 @@
+ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+ fi
+
+- # Set up a command to remove the reloadable object files
++ # Set up a command to remove the reloadale object files
+ # after they are used.
+ i=0
+ while test "$i" -lt "$k"
+ do
+ i=`expr $i + 1`
+- delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
++ delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
+ done
+
+ $echo "creating a temporary reloadable object file: $output"
+@@ -4154,30 +3892,13 @@
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+- $run eval "$cmd" || {
+- lt_exit=$?
+-
+- # Restore the uninstalled library and exit
+- if test "$mode" = relink; then
+- $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+- fi
+-
+- exit $lt_exit
+- }
++ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+-
+- if test -n "$convenience"; then
+- if test -z "$whole_archive_flag_spec"; then
+- $show "${rm}r $gentop"
+- $run ${rm}r "$gentop"
+- fi
+- fi
+-
+ exit $EXIT_SUCCESS
+ fi
+
+@@ -4255,10 +3976,64 @@
+ eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${obj}x"
++ $show "${rm}r $gentop"
++ $run ${rm}r "$gentop"
++ $show "$mkdir $gentop"
++ $run $mkdir "$gentop"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$gentop"; then
++ exit $status
++ fi
+ generated="$generated $gentop"
+
+- func_extract_archives $gentop $convenience
+- reload_conv_objs="$reload_objs $func_extract_archives_result"
++ for xlib in $convenience; do
++ # Extract the objects.
++ case $xlib in
++ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
++ *) xabs=`pwd`"/$xlib" ;;
++ esac
++ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
++ xdir="$gentop/$xlib"
++
++ $show "${rm}r $xdir"
++ $run ${rm}r "$xdir"
++ $show "$mkdir $xdir"
++ $run $mkdir "$xdir"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$xdir"; then
++ exit $status
++ fi
++ # We will extract separately just the conflicting names and we will no
++ # longer touch any unique names. It is faster to leave these extract
++ # automatically by $AR in one run.
++ $show "(cd $xdir && $AR x $xabs)"
++ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
++ if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
++ :
++ else
++ $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
++ $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
++ $AR t "$xabs" | sort | uniq -cd | while read -r count name
++ do
++ i=1
++ while test "$i" -le "$count"
++ do
++ # Put our $i before any first dot (extension)
++ # Never overwrite any file
++ name_to="$name"
++ while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
++ do
++ name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
++ done
++ $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
++ $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
++ i=`expr $i + 1`
++ done
++ done
++ fi
++
++ reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
++ done
+ fi
+ fi
+
+@@ -4359,35 +4134,6 @@
+ ;;
+ esac
+
+-
+- # move library search paths that coincide with paths to not yet
+- # installed libraries to the beginning of the library search list
+- new_libs=
+- for path in $notinst_path; do
+- case " $new_libs " in
+- *" -L$path/$objdir "*) ;;
+- *)
+- case " $compile_deplibs " in
+- *" -L$path/$objdir "*)
+- new_libs="$new_libs -L$path/$objdir" ;;
+- esac
+- ;;
+- esac
+- done
+- for deplib in $compile_deplibs; do
+- case $deplib in
+- -L*)
+- case " $new_libs " in
+- *" $deplib "*) ;;
+- *) new_libs="$new_libs $deplib" ;;
+- esac
+- ;;
+- *) new_libs="$new_libs $deplib" ;;
+- esac
+- done
+- compile_deplibs="$new_libs"
+-
+-
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$finalize_command $finalize_deplibs"
+
+@@ -4432,15 +4178,10 @@
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+- testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+- case :$dllsearchpath: in
+- *":$testbindir:"*) ;;
+- *) dllsearchpath="$dllsearchpath:$testbindir";;
+- esac
+ ;;
+ esac
+ done
+@@ -4554,25 +4295,13 @@
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+- export_symbols="$output_objdir/$outputname.exp"
++ export_symbols="$output_objdir/$output.exp"
+ $run $rm $export_symbols
+- $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+- case $host in
+- *cygwin* | *mingw* )
+- $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+- $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+- ;;
+- esac
++ $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ else
+- $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+- $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
++ $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
++ $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+ $run eval 'mv "$nlist"T "$nlist"'
+- case $host in
+- *cygwin* | *mingw* )
+- $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+- $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+- ;;
+- esac
+ fi
+ fi
+
+@@ -4623,26 +4352,7 @@
+ #endif
+
+ /* The mapping between symbol names and symbols. */
+-"
+-
+- case $host in
+- *cygwin* | *mingw* )
+- $echo >> "$output_objdir/$dlsyms" "\
+-/* DATA imports from DLLs on WIN32 can't be const, because
+- runtime relocations are performed -- see ld's documentation
+- on pseudo-relocs */
+-struct {
+-"
+- ;;
+- * )
+- $echo >> "$output_objdir/$dlsyms" "\
+ const struct {
+-"
+- ;;
+- esac
+-
+-
+- $echo >> "$output_objdir/$dlsyms" "\
+ const char *name;
+ lt_ptr address;
+ }
+@@ -4689,29 +4399,16 @@
+ esac
+
+ # Now compile the dynamic symbol file.
+- $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+- $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
++ $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
++ $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+ # Clean up the generated files.
+ $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+ $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+ # Transform the symbol file into the correct name.
+- case $host in
+- *cygwin* | *mingw* )
+- if test -f "$output_objdir/${outputname}.def" ; then
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+- else
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- fi
+- ;;
+- * )
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- ;;
+- esac
++ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
++ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ ;;
+ *)
+ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+@@ -4736,7 +4433,7 @@
+ # We have no uninstalled library dependencies, so finalize right now.
+ $show "$link_command"
+ $run eval "$link_command"
+- exit_status=$?
++ status=$?
+
+ # Delete the generated files.
+ if test -n "$dlsyms"; then
+@@ -4744,7 +4441,7 @@
+ $run $rm "$output_objdir/${outputname}S.${objext}"
+ fi
+
+- exit $exit_status
++ exit $status
+ fi
+
+ if test -n "$shlibpath_var"; then
+@@ -4884,12 +4581,10 @@
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+- output_name=`basename $output`
+- output_path=`dirname $output`
+- cwrappersource="$output_path/$objdir/lt-$output_name.c"
+- cwrapper="$output_path/$output_name.exe"
+- $rm $cwrappersource $cwrapper
+- trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
++ cwrappersource=`$echo ${objdir}/lt-${output}.c`
++ cwrapper=`$echo ${output}.exe`
++ $rm $cwrappersource $cwrapper
++ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ cat > $cwrappersource <<EOF
+
+@@ -4914,9 +4609,6 @@
+ #include <malloc.h>
+ #include <stdarg.h>
+ #include <assert.h>
+-#include <string.h>
+-#include <ctype.h>
+-#include <sys/stat.h>
+
+ #if defined(PATH_MAX)
+ # define LT_PATHMAX PATH_MAX
+@@ -4927,19 +4619,15 @@
+ #endif
+
+ #ifndef DIR_SEPARATOR
+-# define DIR_SEPARATOR '/'
+-# define PATH_SEPARATOR ':'
++#define DIR_SEPARATOR '/'
+ #endif
+
+ #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+-# define HAVE_DOS_BASED_FILE_SYSTEM
+-# ifndef DIR_SEPARATOR_2
+-# define DIR_SEPARATOR_2 '\\'
+-# endif
+-# ifndef PATH_SEPARATOR_2
+-# define PATH_SEPARATOR_2 ';'
+-# endif
++#define HAVE_DOS_BASED_FILE_SYSTEM
++#ifndef DIR_SEPARATOR_2
++#define DIR_SEPARATOR_2 '\\'
++#endif
+ #endif
+
+ #ifndef DIR_SEPARATOR_2
+@@ -4949,32 +4637,17 @@
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+ #endif /* DIR_SEPARATOR_2 */
+
+-#ifndef PATH_SEPARATOR_2
+-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+-#else /* PATH_SEPARATOR_2 */
+-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+-#endif /* PATH_SEPARATOR_2 */
+-
+ #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+ #define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+ } while (0)
+
+-/* -DDEBUG is fairly common in CFLAGS. */
+-#undef DEBUG
+-#if defined DEBUGWRAPPER
+-# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+-#else
+-# define DEBUG(format, ...)
+-#endif
+-
+ const char *program_name = NULL;
+
+ void * xmalloc (size_t num);
+ char * xstrdup (const char *string);
+-const char * base_name (const char *name);
+-char * find_executable(const char *wrapper);
+-int check_executable(const char *path);
++char * basename (const char *name);
++char * fnqualify(const char *path);
+ char * strendzap(char *str, const char *pat);
+ void lt_fatal (const char *message, ...);
+
+@@ -4984,51 +4657,29 @@
+ char **newargz;
+ int i;
+
+- program_name = (char *) xstrdup (base_name (argv[0]));
+- DEBUG("(main) argv[0] : %s\n",argv[0]);
+- DEBUG("(main) program_name : %s\n",program_name);
++ program_name = (char *) xstrdup ((char *) basename (argv[0]));
+ newargz = XMALLOC(char *, argc+2);
+ EOF
+
+- cat >> $cwrappersource <<EOF
+- newargz[0] = (char *) xstrdup("$SHELL");
++ cat >> $cwrappersource <<EOF
++ newargz[0] = "$SHELL";
+ EOF
+
+- cat >> $cwrappersource <<"EOF"
+- newargz[1] = find_executable(argv[0]);
+- if (newargz[1] == NULL)
+- lt_fatal("Couldn't find %s", argv[0]);
+- DEBUG("(main) found exe at : %s\n",newargz[1]);
++ cat >> $cwrappersource <<"EOF"
++ newargz[1] = fnqualify(argv[0]);
+ /* we know the script has the same name, without the .exe */
+ /* so make sure newargz[1] doesn't end in .exe */
+ strendzap(newargz[1],".exe");
+ for (i = 1; i < argc; i++)
+ newargz[i+1] = xstrdup(argv[i]);
+ newargz[argc+1] = NULL;
+-
+- for (i=0; i<argc+1; i++)
+- {
+- DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
+- ;
+- }
+-
+ EOF
+
+- case $host_os in
+- mingw*)
+- cat >> $cwrappersource <<EOF
+- execv("$SHELL",(char const **)newargz);
+-EOF
+- ;;
+- *)
+- cat >> $cwrappersource <<EOF
++ cat >> $cwrappersource <<EOF
+ execv("$SHELL",newargz);
+ EOF
+- ;;
+- esac
+
+- cat >> $cwrappersource <<"EOF"
+- return 127;
++ cat >> $cwrappersource <<"EOF"
+ }
+
+ void *
+@@ -5048,148 +4699,48 @@
+ ;
+ }
+
+-const char *
+-base_name (const char *name)
++char *
++basename (const char *name)
+ {
+ const char *base;
+
+ #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+- if (isalpha ((unsigned char)name[0]) && name[1] == ':')
++ if (isalpha (name[0]) && name[1] == ':')
+ name += 2;
+ #endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+- return base;
+-}
+-
+-int
+-check_executable(const char * path)
+-{
+- struct stat st;
+-
+- DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+- if ((!path) || (!*path))
+- return 0;
+-
+- if ((stat (path, &st) >= 0) &&
+- (
+- /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+-#if defined (S_IXOTH)
+- ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+-#endif
+-#if defined (S_IXGRP)
+- ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+-#endif
+- ((st.st_mode & S_IXUSR) == S_IXUSR))
+- )
+- return 1;
+- else
+- return 0;
++ return (char *) base;
+ }
+
+-/* Searches for the full path of the wrapper. Returns
+- newly allocated full path name if found, NULL otherwise */
+ char *
+-find_executable (const char* wrapper)
++fnqualify(const char *path)
+ {
+- int has_slash = 0;
+- const char* p;
+- const char* p_next;
+- /* static buffer for getcwd */
++ size_t size;
++ char *p;
+ char tmp[LT_PATHMAX + 1];
+- int tmp_len;
+- char* concat_name;
+-
+- DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
+
+- if ((wrapper == NULL) || (*wrapper == '\0'))
+- return NULL;
++ assert(path != NULL);
+
+- /* Absolute path? */
++ /* Is it qualified already? */
+ #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+- if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
+- {
+- concat_name = xstrdup (wrapper);
+- if (check_executable(concat_name))
+- return concat_name;
+- XFREE(concat_name);
+- }
+- else
+- {
+-#endif
+- if (IS_DIR_SEPARATOR (wrapper[0]))
+- {
+- concat_name = xstrdup (wrapper);
+- if (check_executable(concat_name))
+- return concat_name;
+- XFREE(concat_name);
+- }
+-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+- }
++ if (isalpha (path[0]) && path[1] == ':')
++ return xstrdup (path);
+ #endif
++ if (IS_DIR_SEPARATOR (path[0]))
++ return xstrdup (path);
+
+- for (p = wrapper; *p; p++)
+- if (*p == '/')
+- {
+- has_slash = 1;
+- break;
+- }
+- if (!has_slash)
+- {
+- /* no slashes; search PATH */
+- const char* path = getenv ("PATH");
+- if (path != NULL)
+- {
+- for (p = path; *p; p = p_next)
+- {
+- const char* q;
+- size_t p_len;
+- for (q = p; *q; q++)
+- if (IS_PATH_SEPARATOR(*q))
+- break;
+- p_len = q - p;
+- p_next = (*q == '\0' ? q : q + 1);
+- if (p_len == 0)
+- {
+- /* empty path: current directory */
+- if (getcwd (tmp, LT_PATHMAX) == NULL)
+- lt_fatal ("getcwd failed");
+- tmp_len = strlen(tmp);
+- concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+- memcpy (concat_name, tmp, tmp_len);
+- concat_name[tmp_len] = '/';
+- strcpy (concat_name + tmp_len + 1, wrapper);
+- }
+- else
+- {
+- concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
+- memcpy (concat_name, p, p_len);
+- concat_name[p_len] = '/';
+- strcpy (concat_name + p_len + 1, wrapper);
+- }
+- if (check_executable(concat_name))
+- return concat_name;
+- XFREE(concat_name);
+- }
+- }
+- /* not found in PATH; assume curdir */
+- }
+- /* Relative path | not found in path: prepend cwd */
++ /* prepend the current directory */
++ /* doesn't handle '~' */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+- tmp_len = strlen(tmp);
+- concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+- memcpy (concat_name, tmp, tmp_len);
+- concat_name[tmp_len] = '/';
+- strcpy (concat_name + tmp_len + 1, wrapper);
+-
+- if (check_executable(concat_name))
+- return concat_name;
+- XFREE(concat_name);
+- return NULL;
++ size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
++ p = XMALLOC(char, size);
++ sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
++ return p;
+ }
+
+ char *
+@@ -5233,16 +4784,16 @@
+ va_end (ap);
+ }
+ EOF
+- # we should really use a build-platform specific compiler
+- # here, but OTOH, the wrappers (shell script and this C one)
+- # are only useful if you want to execute the "real" binary.
+- # Since the "real" binary is built for $host, then this
+- # wrapper might as well be built for $host, too.
+- $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+- ;;
+- esac
+- $rm $output
+- trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
++ # we should really use a build-platform specific compiler
++ # here, but OTOH, the wrappers (shell script and this C one)
++ # are only useful if you want to execute the "real" binary.
++ # Since the "real" binary is built for $host, then this
++ # wrapper might as well be built for $host, too.
++ $run $LTCC -s -o $cwrapper $cwrappersource
++ ;;
++ esac
++ $rm $output
++ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+ $echo > $output "\
+ #! $SHELL
+@@ -5263,7 +4814,7 @@
+
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
++if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+
+ relink_command=\"$relink_command\"
+
+@@ -5392,13 +4943,13 @@
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2*)
+ $echo >> $output "\
+- exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
++ exec \$progdir\\\\\$program \${1+\"\$@\"}
+ "
+ ;;
+
+ *)
+ $echo >> $output "\
+- exec \"\$progdir/\$program\" \${1+\"\$@\"}
++ exec \$progdir/\$program \${1+\"\$@\"}
+ "
+ ;;
+ esac
+@@ -5408,7 +4959,7 @@
+ fi
+ else
+ # The program doesn't exist.
+- \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
++ \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+ \$echo \"This script is just a wrapper for \$program.\" 1>&2
+ $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+ exit $EXIT_FAILURE
+@@ -5440,73 +4991,71 @@
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
++ $show "${rm}r $gentop"
++ $run ${rm}r "$gentop"
++ $show "$mkdir $gentop"
++ $run $mkdir "$gentop"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$gentop"; then
++ exit $status
++ fi
+ generated="$generated $gentop"
+
+- func_extract_archives $gentop $addlibs
+- oldobjs="$oldobjs $func_extract_archives_result"
++ # Add in members from convenience archives.
++ for xlib in $addlibs; do
++ # Extract the objects.
++ case $xlib in
++ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
++ *) xabs=`pwd`"/$xlib" ;;
++ esac
++ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
++ xdir="$gentop/$xlib"
++
++ $show "${rm}r $xdir"
++ $run ${rm}r "$xdir"
++ $show "$mkdir $xdir"
++ $run $mkdir "$xdir"
++ status=$?
++ if test "$status" -ne 0 && test ! -d "$xdir"; then
++ exit $status
++ fi
++ # We will extract separately just the conflicting names and we will no
++ # longer touch any unique names. It is faster to leave these extract
++ # automatically by $AR in one run.
++ $show "(cd $xdir && $AR x $xabs)"
++ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
++ if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
++ :
++ else
++ $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
++ $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
++ $AR t "$xabs" | sort | uniq -cd | while read -r count name
++ do
++ i=1
++ while test "$i" -le "$count"
++ do
++ # Put our $i before any first dot (extension)
++ # Never overwrite any file
++ name_to="$name"
++ while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
++ do
++ name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
++ done
++ $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
++ $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
++ i=`expr $i + 1`
++ done
++ done
++ fi
++
++ oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
++ done
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+- # POSIX demands no paths to be encoded in archives. We have
+- # to avoid creating archives with duplicate basenames if we
+- # might have to extract them afterwards, e.g., when creating a
+- # static archive out of a convenience library, or when linking
+- # the entirety of a libtool archive into another (currently
+- # not supported by libtool).
+- if (for obj in $oldobjs
+- do
+- $echo "X$obj" | $Xsed -e 's%^.*/%%'
+- done | sort | sort -uc >/dev/null 2>&1); then
+- :
+- else
+- $echo "copying selected object files to avoid basename conflicts..."
+-
+- if test -z "$gentop"; then
+- gentop="$output_objdir/${outputname}x"
+- generated="$generated $gentop"
+-
+- $show "${rm}r $gentop"
+- $run ${rm}r "$gentop"
+- $show "$mkdir $gentop"
+- $run $mkdir "$gentop"
+- exit_status=$?
+- if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+- exit $exit_status
+- fi
+- fi
+-
+- save_oldobjs=$oldobjs
+- oldobjs=
+- counter=1
+- for obj in $save_oldobjs
+- do
+- objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+- case " $oldobjs " in
+- " ") oldobjs=$obj ;;
+- *[\ /]"$objbase "*)
+- while :; do
+- # Make sure we don't pick an alternate name that also
+- # overlaps.
+- newobj=lt$counter-$objbase
+- counter=`expr $counter + 1`
+- case " $oldobjs " in
+- *[\ /]"$newobj "*) ;;
+- *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+- esac
+- done
+- $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+- $run ln "$obj" "$gentop/$newobj" ||
+- $run cp "$obj" "$gentop/$newobj"
+- oldobjs="$oldobjs $gentop/$newobj"
+- ;;
+- *) oldobjs="$oldobjs $obj" ;;
+- esac
+- done
+- fi
+-
+ eval cmds=\"$old_archive_cmds\"
+
+ if len=`expr "X$cmds" : ".*"` &&
+@@ -5520,7 +5069,20 @@
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+-
++ # GNU ar 2.10+ was changed to match POSIX; thus no paths are
++ # encoded into archives. This makes 'ar r' malfunction in
++ # this piecewise linking case whenever conflicting object
++ # names appear in distinct ar calls; check, warn and compensate.
++ if (for obj in $save_oldobjs
++ do
++ $echo "X$obj" | $Xsed -e 's%^.*/%%'
++ done | sort | sort -uc >/dev/null 2>&1); then
++ :
++ else
++ $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
++ $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
++ AR_FLAGS=cq
++ fi
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+@@ -5531,7 +5093,7 @@
+ oldobjs="$objlist $obj"
+ objlist="$objlist $obj"
+ eval test_cmds=\"$old_archive_cmds\"
+- if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
++ if len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len"; then
+ :
+ else
+@@ -5728,11 +5290,11 @@
+ # install_prog (especially on Windows NT).
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+- $echo "X$nonopt" | grep shtool > /dev/null; then
++ $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+ # Aesthetically quote it.
+ arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+@@ -5741,14 +5303,14 @@
+ shift
+ else
+ install_prog=
+- arg=$nonopt
++ arg="$nonopt"
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+@@ -5766,31 +5328,28 @@
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+- dest=$arg
++ dest="$arg"
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+- -f)
+- case " $install_prog " in
+- *[\\\ /]cp\ *) ;;
+- *) prev=$arg ;;
+- esac
+- ;;
+- -g | -m | -o) prev=$arg ;;
++ -f) prev="-f" ;;
++ -g) prev="-g" ;;
++ -m) prev="-m" ;;
++ -o) prev="-o" ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+- -*)
+- ;;
++ -*) ;;
++
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+- dest=$arg
++ dest="$arg"
+ continue
+ fi
+ ;;
+@@ -5799,7 +5358,7 @@
+ # Aesthetically quote the argument.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+@@ -5968,14 +5527,11 @@
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+- # Try `ln -sf' first, because the `ln' binary might depend on
+- # the symlink we replace! Solaris /bin/ln does not understand -f,
+- # so we also need to try rm && ln -s.
+ for linkname
+ do
+ if test "$linkname" != "$realname"; then
+- $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+- $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
++ $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
++ $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+ fi
+ done
+ fi
+@@ -5988,16 +5544,7 @@
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+- $run eval "$cmd" || {
+- lt_exit=$?
+-
+- # Restore the uninstalled library and exit
+- if test "$mode" = relink; then
+- $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+- fi
+-
+- exit $lt_exit
+- }
++ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+@@ -6091,15 +5638,17 @@
+ notinst_deplibs=
+ relink_command=
+
+- # Note that it is not necessary on cygwin/mingw to append a dot to
+- # foo even if both foo and FILE.exe exist: automatic-append-.exe
+- # behavior happens only for exec(3), not for open(2)! Also, sourcing
+- # `FILE.' does not work on cygwin managed mounts.
+- #
++ # To insure that "foo" is sourced, and not "foo.exe",
++ # finese the cygwin/MSYS system by explicitly sourcing "foo."
++ # which disallows the automatic-append-.exe behavior.
++ case $build in
++ *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
++ *) wrapperdot=${wrapper} ;;
++ esac
+ # If there is no directory component, then add one.
+- case $wrapper in
+- */* | *\\*) . ${wrapper} ;;
+- *) . ./${wrapper} ;;
++ case $file in
++ */* | *\\*) . ${wrapperdot} ;;
++ *) . ./${wrapperdot} ;;
+ esac
+
+ # Check the variables that should have been set.
+@@ -6127,21 +5676,34 @@
+ done
+
+ relink_command=
+- # Note that it is not necessary on cygwin/mingw to append a dot to
+- # foo even if both foo and FILE.exe exist: automatic-append-.exe
+- # behavior happens only for exec(3), not for open(2)! Also, sourcing
+- # `FILE.' does not work on cygwin managed mounts.
+- #
++ # To insure that "foo" is sourced, and not "foo.exe",
++ # finese the cygwin/MSYS system by explicitly sourcing "foo."
++ # which disallows the automatic-append-.exe behavior.
++ case $build in
++ *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
++ *) wrapperdot=${wrapper} ;;
++ esac
+ # If there is no directory component, then add one.
+- case $wrapper in
+- */* | *\\*) . ${wrapper} ;;
+- *) . ./${wrapper} ;;
++ case $file in
++ */* | *\\*) . ${wrapperdot} ;;
++ *) . ./${wrapperdot} ;;
+ esac
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ if test "$finalize" = yes && test -z "$run"; then
+- tmpdir=`func_mktempdir`
++ tmpdir="/tmp"
++ test -n "$TMPDIR" && tmpdir="$TMPDIR"
++ tmpdir="$tmpdir/libtool-$$"
++ save_umask=`umask`
++ umask 0077
++ if $mkdir "$tmpdir"; then
++ umask $save_umask
++ else
++ umask $save_umask
++ $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
++ continue
++ fi
+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+@@ -6165,7 +5727,7 @@
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+- # one anyway
++ # one anyways
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+@@ -6265,7 +5827,7 @@
+ # Exit here if they wanted silent mode.
+ test "$show" = : && exit $EXIT_SUCCESS
+
+- $echo "X----------------------------------------------------------------------" | $Xsed
++ $echo "----------------------------------------------------------------------"
+ $echo "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $echo " $libdir"
+@@ -6298,7 +5860,7 @@
+ $echo
+ $echo "See any operating system documentation about shared libraries for"
+ $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+- $echo "X----------------------------------------------------------------------" | $Xsed
++ $echo "----------------------------------------------------------------------"
+ exit $EXIT_SUCCESS
+ ;;
+
+@@ -6515,17 +6077,9 @@
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
++ test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+- case "$mode" in
+- clean)
+- case " $library_names " in
+- # " " in the beginning catches empty $dlname
+- *" $dlname "*) ;;
+- *) rmfiles="$rmfiles $objdir/$dlname" ;;
+- esac
+- test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+- ;;
+- uninstall)
++ if test "$mode" = uninstall; then
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ cmds=$postuninstall_cmds
+@@ -6558,8 +6112,7 @@
+ IFS="$save_ifs"
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+- ;;
+- esac
++ fi
+ fi
+ ;;
+
+@@ -6844,7 +6397,7 @@
+ $echo
+ $echo "Try \`$modename --help' for more information about other modes."
+
+-exit $?
++exit $EXIT_SUCCESS
+
+ # The TAGs below are defined such that we never get into a situation
+ # in which we disable both kinds of libraries. Given conflicting
+@@ -6858,11 +6411,12 @@
+ # configuration. But we'll never go from static-only to shared-only.
+
+ # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+-disable_libs=shared
++build_libtool_libs=no
++build_old_libs=yes
+ # ### END LIBTOOL TAG CONFIG: disable-shared
+
+ # ### BEGIN LIBTOOL TAG CONFIG: disable-static
+-disable_libs=static
++build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+ # ### END LIBTOOL TAG CONFIG: disable-static
+
+ # Local Variables:
+diff -ur linphone-1.5.0/oRTP/Makefile.in linphone-1.5.0-after/oRTP/Makefile.in
+--- linphone-1.5.0/oRTP/Makefile.in 2006-10-09 17:10:40.000000000 +0800
++++ linphone-1.5.0-after/oRTP/Makefile.in 2007-01-19 16:05:20.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -121,7 +121,6 @@
+ EXEEXT = @EXEEXT@
+ F77 = @F77@
+ FFLAGS = @FFLAGS@
+-GREP = @GREP@
+ GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+ GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+ HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
+@@ -171,9 +170,12 @@
+ VERSION = @VERSION@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -190,30 +192,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -325,13 +320,7 @@
+ # (which will cause the Makefiles to be regenerated when you run `make');
+ # (2) otherwise, pass the desired values on the `make' command line.
+ $(RECURSIVE_TARGETS):
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -343,7 +332,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+@@ -351,13 +340,7 @@
+
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+@@ -378,7 +361,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+ tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+Only in linphone-1.5.0/oRTP: ortp.spec
+diff -ur linphone-1.5.0/oRTP/src/Makefile.in linphone-1.5.0-after/oRTP/src/Makefile.in
+--- linphone-1.5.0/oRTP/src/Makefile.in 2006-10-09 17:10:40.000000000 +0800
++++ linphone-1.5.0-after/oRTP/src/Makefile.in 2007-01-19 16:05:20.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,6 +14,8 @@
+
+ @SET_MAKE@
+
++SOURCES = $(libortp_la_SOURCES)
++
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -68,11 +70,11 @@
+ am__depfiles_maybe = depfiles
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
++LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ SOURCES = $(libortp_la_SOURCES)
+ DIST_SOURCES = $(libortp_la_SOURCES)
+@@ -121,7 +123,6 @@
+ EXEEXT = @EXEEXT@
+ F77 = @F77@
+ FFLAGS = @FFLAGS@
+-GREP = @GREP@
+ GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+ GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+ HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
+@@ -171,9 +172,12 @@
+ VERSION = @VERSION@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -190,30 +194,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -381,13 +378,7 @@
+ # (which will cause the Makefiles to be regenerated when you run `make');
+ # (2) otherwise, pass the desired values on the `make' command line.
+ $(RECURSIVE_TARGETS):
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -399,7 +390,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+@@ -407,13 +398,7 @@
+
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+@@ -434,7 +419,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+ tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+diff -ur linphone-1.5.0/oRTP/src/rtpparse.c linphone-1.5.0-after/oRTP/src/rtpparse.c
+--- linphone-1.5.0/oRTP/src/rtpparse.c 2006-08-09 21:02:00.000000000 +0800
++++ linphone-1.5.0-after/oRTP/src/rtpparse.c 2006-11-24 10:34:15.000000000 +0800
+@@ -28,6 +28,11 @@
+ {
+ mblk_t *mdata,*tmp;
+ int header_size;
++
++
++
++ //printf("split_and_queue HMH.\n");
++
+ *discarded=0;
+ header_size=RTP_FIXED_HEADER_SIZE+ (4*rtp->cc);
+ if ((mp->b_wptr - mp->b_rptr)==header_size){
+Only in linphone-1.5.0-after/oRTP/src: rtpparse.c~
+diff -ur linphone-1.5.0/oRTP/src/rtpsession.c linphone-1.5.0-after/oRTP/src/rtpsession.c
+--- linphone-1.5.0/oRTP/src/rtpsession.c 2006-09-29 21:19:16.000000000 +0800
++++ linphone-1.5.0-after/oRTP/src/rtpsession.c 2006-12-07 12:13:37.000000000 +0800
+@@ -104,7 +104,7 @@
+ rtp_header_t *rtp=(rtp_header_t*)mp->b_rptr,*tmprtp;
+ /* insert message block by increasing time stamp order : the last (at the bottom)
+ message of the queue is the newest*/
+- ortp_debug("rtp_putq(): Enqueuing packet with ts=%i and seq=%i",rtp->timestamp,rtp->seq_number);
++ //printf("rtp_putq(): Enqueuing packet with ts=%i and seq=%i",rtp->timestamp,rtp->seq_number);//HMH
+
+ if (qempty(q)) {
+ putq(q,mp);
+Only in linphone-1.5.0-after/oRTP/src: rtpsession.c~
+diff -ur linphone-1.5.0/oRTP/src/rtpsession_inet.c linphone-1.5.0-after/oRTP/src/rtpsession_inet.c
+--- linphone-1.5.0/oRTP/src/rtpsession_inet.c 2006-09-25 21:00:09.000000000 +0800
++++ linphone-1.5.0-after/oRTP/src/rtpsession_inet.c 2006-12-07 12:15:04.000000000 +0800
+@@ -23,7 +23,7 @@
+ #include "rtpsession_priv.h"
+
+
+-#if defined(WIN32) || defined(_WIN32_WCE)
++#if defined(WIN32) || defined(_WIN32_WCE)
+ #include "ortp-config-win32.h"
+ #else
+ #include "ortp-config.h" /*needed for HAVE_SYS_UIO_H */
+@@ -34,6 +34,8 @@
+ #define USE_SENDMSG 1
+ #endif
+
++#define DPRINTF printf
++
+ static ortp_socket_t create_and_bind(const char *addr, int port, int *sock_family){
+ int err;
+ int optval = 1;
+@@ -155,16 +157,16 @@
+ {
+ #ifdef WIN32
+ /* increase RTP buffer on windows */
+- int bufsize = 32768;
+- err = setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (void *)&bufsize, sizeof(bufsize));
+- if (err == -1) {
++ int bufsize = 32768;
++ err = setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (void *)&bufsize, sizeof(bufsize));
++ if (err == -1) {
+ ortp_warning ("Fail to increase buffer size for socket (port %i): %s.", port, getSocketError());
+- }
+- bufsize = 32768;
+- err = setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (void *)&bufsize, sizeof(bufsize));
+- if (err == -1) {
++ }
++ bufsize = 32768;
++ err = setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (void *)&bufsize, sizeof(bufsize));
++ if (err == -1) {
+ ortp_warning ("Fail to increase buffer size for socket (port %i): %s.", port, getSocketError());
+- }
++ }
+ #endif
+ set_non_blocking_socket (sock);
+ }
+@@ -788,6 +790,9 @@
+ }else{
+ /* then parse the message and put on queue */
+ mp->b_wptr+=error;
++
++ //DPRINTF("Received. rtp pack len (%d).\n", error);//HMH
++
+ rtp_session_rtp_parse (session, mp, user_ts + session->rtp.hwrcv_diff_ts, (struct sockaddr*)&remaddr,addrlen);
+ session->rtp.cached_mp=NULL;
+
+Only in linphone-1.5.0-after/oRTP/src: rtpsession_inet.c~
+diff -ur linphone-1.5.0/oRTP/src/tests/Makefile.in linphone-1.5.0-after/oRTP/src/tests/Makefile.in
+--- linphone-1.5.0/oRTP/src/tests/Makefile.in 2006-10-09 17:10:40.000000000 +0800
++++ linphone-1.5.0-after/oRTP/src/tests/Makefile.in 2007-01-19 16:05:20.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,6 +14,8 @@
+
+ @SET_MAKE@
+
++SOURCES = $(mrtprecv_SOURCES) $(mrtpsend_SOURCES) $(rtpmemtest_SOURCES) $(rtprecv_SOURCES) $(rtpsend_SOURCES) $(test_timer_SOURCES) $(tevmrtprecv_SOURCES) $(tevrtprecv_SOURCES) $(tevrtpsend_SOURCES)
++
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -91,11 +93,11 @@
+ am__depfiles_maybe = depfiles
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
++LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ SOURCES = $(mrtprecv_SOURCES) $(mrtpsend_SOURCES) \
+ $(rtpmemtest_SOURCES) $(rtprecv_SOURCES) $(rtpsend_SOURCES) \
+@@ -150,7 +152,6 @@
+ EXEEXT = @EXEEXT@
+ F77 = @F77@
+ FFLAGS = @FFLAGS@
+-GREP = @GREP@
+ GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+ GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+ HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
+@@ -200,9 +201,12 @@
+ VERSION = @VERSION@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -219,30 +223,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -387,13 +384,7 @@
+ # (which will cause the Makefiles to be regenerated when you run `make');
+ # (2) otherwise, pass the desired values on the `make' command line.
+ $(RECURSIVE_TARGETS):
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -405,7 +396,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+@@ -413,13 +404,7 @@
+
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+@@ -440,7 +425,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+ tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+diff -ur linphone-1.5.0/oRTP/src/tests/win_receiver/Makefile.in linphone-1.5.0-after/oRTP/src/tests/win_receiver/Makefile.in
+--- linphone-1.5.0/oRTP/src/tests/win_receiver/Makefile.in 2006-10-09 17:10:40.000000000 +0800
++++ linphone-1.5.0-after/oRTP/src/tests/win_receiver/Makefile.in 2007-01-19 16:05:20.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -83,7 +83,6 @@
+ EXEEXT = @EXEEXT@
+ F77 = @F77@
+ FFLAGS = @FFLAGS@
+-GREP = @GREP@
+ GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+ GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+ HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
+@@ -133,9 +132,12 @@
+ VERSION = @VERSION@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -152,30 +154,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+diff -ur linphone-1.5.0/oRTP/src/tests/win_sender/Makefile.in linphone-1.5.0-after/oRTP/src/tests/win_sender/Makefile.in
+--- linphone-1.5.0/oRTP/src/tests/win_sender/Makefile.in 2006-10-09 17:10:40.000000000 +0800
++++ linphone-1.5.0-after/oRTP/src/tests/win_sender/Makefile.in 2007-01-19 16:05:20.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -83,7 +83,6 @@
+ EXEEXT = @EXEEXT@
+ F77 = @F77@
+ FFLAGS = @FFLAGS@
+-GREP = @GREP@
+ GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+ GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+ HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
+@@ -133,9 +132,12 @@
+ VERSION = @VERSION@
+ WITH_EPM_FALSE = @WITH_EPM_FALSE@
+ WITH_EPM_TRUE = @WITH_EPM_TRUE@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -152,30 +154,23 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+diff -ur linphone-1.5.0/pixmaps/Makefile.in linphone-1.5.0-after/pixmaps/Makefile.in
+--- linphone-1.5.0/pixmaps/Makefile.in 2006-10-11 03:26:22.000000000 +0800
++++ linphone-1.5.0-after/pixmaps/Makefile.in 2007-01-19 16:05:06.427168000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -41,11 +41,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -64,7 +64,6 @@
+ DATA = $(pixmap_DATA)
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -111,7 +110,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -121,27 +119,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -195,9 +187,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -214,9 +209,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -224,22 +216,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+diff -ur linphone-1.5.0/share/C/Makefile.in linphone-1.5.0-after/share/C/Makefile.in
+--- linphone-1.5.0/share/C/Makefile.in 2006-10-11 03:26:22.000000000 +0800
++++ linphone-1.5.0-after/share/C/Makefile.in 2007-01-19 16:05:06.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -41,11 +41,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -59,7 +59,6 @@
+ MANS = $(man_MANS)
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -106,7 +105,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -116,27 +114,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -190,9 +182,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -209,9 +204,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -219,22 +211,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+Only in linphone-1.5.0-after/share/C: manual
+Only in linphone-1.5.0-after/share/C: manual.junk
+diff -ur linphone-1.5.0/share/cs/Makefile.in linphone-1.5.0-after/share/cs/Makefile.in
+--- linphone-1.5.0/share/cs/Makefile.in 2006-10-11 03:26:23.000000000 +0800
++++ linphone-1.5.0-after/share/cs/Makefile.in 2007-01-19 16:05:07.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -40,11 +40,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -54,7 +54,6 @@
+ DIST_SOURCES =
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -101,7 +100,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -111,27 +109,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -185,9 +177,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -204,9 +199,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -214,22 +206,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+diff -ur linphone-1.5.0/share/fr/Makefile.in linphone-1.5.0-after/share/fr/Makefile.in
+--- linphone-1.5.0/share/fr/Makefile.in 2006-10-11 03:26:23.000000000 +0800
++++ linphone-1.5.0-after/share/fr/Makefile.in 2007-01-19 16:05:07.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -41,11 +41,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -55,7 +55,6 @@
+ DIST_SOURCES =
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -102,7 +101,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -112,27 +110,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -186,9 +178,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -205,9 +200,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -215,22 +207,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+Only in linphone-1.5.0-after/share/fr: manual
+Only in linphone-1.5.0-after/share/fr: manual.junk
+diff -ur linphone-1.5.0/share/it/Makefile.in linphone-1.5.0-after/share/it/Makefile.in
+--- linphone-1.5.0/share/it/Makefile.in 2006-10-11 03:26:23.000000000 +0800
++++ linphone-1.5.0-after/share/it/Makefile.in 2007-01-19 16:05:07.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -41,11 +41,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -55,7 +55,6 @@
+ DIST_SOURCES =
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -102,7 +101,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -112,27 +110,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -186,9 +178,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -205,9 +200,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -215,22 +207,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+Only in linphone-1.5.0-after/share/it: manual
+Only in linphone-1.5.0-after/share/it: manual.junk
+diff -ur linphone-1.5.0/share/ja/Makefile.in linphone-1.5.0-after/share/ja/Makefile.in
+--- linphone-1.5.0/share/ja/Makefile.in 2006-10-11 03:26:23.000000000 +0800
++++ linphone-1.5.0-after/share/ja/Makefile.in 2007-01-19 16:05:07.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -41,11 +41,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -55,7 +55,6 @@
+ DIST_SOURCES =
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -102,7 +101,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -112,27 +110,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -186,9 +178,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -205,9 +200,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -215,22 +207,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+Only in linphone-1.5.0-after/share/ja: manual
+Only in linphone-1.5.0-after/share/ja: manual.junk
+diff -ur linphone-1.5.0/share/Makefile.in linphone-1.5.0-after/share/Makefile.in
+--- linphone-1.5.0/share/Makefile.in 2006-10-11 03:26:23.000000000 +0800
++++ linphone-1.5.0-after/share/Makefile.in 2007-01-19 16:05:06.000000000 +0800
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.2 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -42,11 +42,11 @@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/exosip.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/osip.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/m4/readline.m4 $(top_srcdir)/configure.in
++ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
++ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
++ $(top_srcdir)/m4/osip.m4 $(top_srcdir)/m4/po.m4 \
++ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+@@ -81,7 +81,6 @@
+ DIST_SUBDIRS = $(SUBDIRS)
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-ALL_LINGUAS = @ALL_LINGUAS@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+@@ -128,7 +127,6 @@
+ GMSGFMT = @GMSGFMT@
+ GNOME_APPLETS_CFLAGS = @GNOME_APPLETS_CFLAGS@
+ GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
+-GREP = @GREP@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -138,27 +136,21 @@
+ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-INTLTOOL_ICONV = @INTLTOOL_ICONV@
+ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+ INTLTOOL_MERGE = @INTLTOOL_MERGE@
+-INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+-INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+-INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+ IPV6_CFLAGS = @IPV6_CFLAGS@
+@@ -212,9 +204,12 @@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ XGETTEXT = @XGETTEXT@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+@@ -231,9 +226,6 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ have_db2html = @have_db2html@
+ host = @host@
+@@ -241,22 +233,18 @@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+-htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+-localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ osip_prefix = @osip_prefix@
+-pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+-psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+@@ -430,13 +418,7 @@
+ # (which will cause the Makefiles to be regenerated when you run `make');
+ # (2) otherwise, pass the desired values on the `make' command line.
+ $(RECURSIVE_TARGETS):
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -448,7 +430,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+@@ -456,13 +438,7 @@
+
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+@@ -483,7 +459,7 @@
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+ tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
diff --git a/packages/gpephone/linphone-1.5.0/linphone-pkgconfig.patch b/packages/gpephone/linphone-1.5.0/linphone-pkgconfig.patch
new file mode 100644
index 0000000000..9cb6ed1756
--- /dev/null
+++ b/packages/gpephone/linphone-1.5.0/linphone-pkgconfig.patch
@@ -0,0 +1,41 @@
+--- share/linphone.pc.in.orig 2007-01-31 05:48:02.000000000 +0100
++++ share/linphone.pc.in 2007-01-31 05:49:09.000000000 +0100
+@@ -7,5 +7,5 @@
+ Name: liblinphone
+ Description: All in one linphone libs.
+ Version: @VERSION@
+-Libs: @LINPHONE_LIBS@
+-Cflags: @LINPHONE_CFLAGS@
++Libs: -L${libdir} -llinphone
++Cflags: -I${includedir}
+--- oRTP/ortp.pc.in.orig 2007-01-31 07:12:29.000000000 +0100
++++ oRTP/ortp.pc.in 2007-01-31 07:14:33.000000000 +0100
+@@ -2,9 +2,10 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+ includedir=@includedir@
++libdir=@libdir@
+
+ Name: oRTP
+ Description: Implement the RFC3550 (RTP) with a easy to use API with high and low level access.
+ Version: @ORTP_PKGCONFIG_VERSION@
+-Libs: -L@libdir@ -lortp @ORTPDEPS_LIBS@
+-Cflags: -I@includedir@ @ORTPDEPS_CFLAGS@
++Libs: -L${libdir} -lortp
++Cflags: -I${includedir}
+--- mediastreamer2/mediastreamer.pc.in.orig 2007-01-31 07:16:10.000000000 +0100
++++ mediastreamer2/mediastreamer.pc.in 2007-01-31 07:18:33.000000000 +0100
+@@ -2,10 +2,11 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+ includedir=@includedir@
++libdir=@libdir@
+
+ Name: mediastreamer
+ Description: A mediastreaming library for telephony applications
+ Depends: ortp
+ Version: @MEDIASTREAMER_VERSION@
+-Libs: -L@libdir@
+-Cflags: -I@includedir@
++Libs: -L${libdir}
++Cflags: -I${includedir}
diff --git a/packages/gpephone/linphone_1.5.0.bb b/packages/gpephone/linphone_1.5.0.bb
new file mode 100644
index 0000000000..92e08e6183
--- /dev/null
+++ b/packages/gpephone/linphone_1.5.0.bb
@@ -0,0 +1,47 @@
+
+DESCRIPTION = "SIP-based IP phone"
+HOMEPAGE = "http://www.linphone.org/?lang=us"
+LICENSE = "GPLv2"
+DEPENDS = "libosip2 speex libogg alsa-lib readline"
+PR = "r1"
+
+SRC_URI = "http://download.savannah.nongnu.org/releases/linphone/1.5.x/source/linphone-${PV}.tar.gz \
+ file://linphone-1.5.0.patch;patch=1 \
+ file://linphone-pkgconfig.patch;patch=1;pnum=0"
+
+FILES_${PN} += "${datadir}/linphonec"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-gnome_ui --disable-gtk-doc --without-ffmpeg \
+ --without-sdl --disable-video --enable-alsa \
+ --with-osip=${STAGING_DIR}/${HOST_SYS} \
+ --with-readline=${STAGING_DIR}/${HOST_SYS} \
+ --disable-truespeech --disable-manual \
+ --disable-glibtest --disable-glib"
+
+do_configure () {
+ export LIBTOOL="${STAGING_BINDIR_NATIVE}/${TARGET_PREFIX}libtool"
+ oe_runconf SPEEX_LIBS="-lspeex" SPEEX_CFLAGS=" "
+}
+
+do_compile () {
+ oe_runmake LIBTOOL="${STAGING_BINDIR_NATIVE}/${TARGET_PREFIX}libtool" SPEEX_LIBS="-lspeex" SPEEX_CFLAGS=" "
+}
+
+do_install () {
+ oe_runmake install "DESTDIR=${D}" "LIBTOOL=${STAGING_BINDIR_NATIVE}/${TARGET_PREFIX}libtool"
+}
+
+do_install_append() {
+ rm -f ${D}${datadir}/sounds/linphone/hello*.wav
+ rm -f ${D}${datadir}/sounds/linphone/rings/oldphone.wav
+}
+
+do_stage() {
+ export LIBTOOL="${STAGING_BINDIR_NATIVE}/${TARGET_PREFIX}libtool"
+ autotools_stage_all
+ rm ${STAGING_LIBDIR}/libquickstream.la
+ rm ${STAGING_LIBDIR}/libmediastreamer.la
+ rm ${STAGING_LIBDIR}/liblinphone.la
+}
diff --git a/packages/gpephone/phoneserver/.mtn2git_empty b/packages/gpephone/phoneserver/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/phoneserver/.mtn2git_empty
diff --git a/packages/gpephone/phoneserver/changeport.patch b/packages/gpephone/phoneserver/changeport.patch
new file mode 100644
index 0000000000..fac4546d96
--- /dev/null
+++ b/packages/gpephone/phoneserver/changeport.patch
@@ -0,0 +1,11 @@
+--- config.h~ 2007-02-07 10:43:57.000000000 +0100
++++ config.h 2007-02-07 10:43:57.000000000 +0100
+@@ -22,7 +22,7 @@
+ /* serial port name */
+ #ifndef SERIAL_PORT
+ //#define SERIAL_PORT "/dev/pts/0" //ttyS1"
+-#define SERIAL_PORT "/dev/ttyS1" //ttyS1"
++#define SERIAL_PORT "/dev/ttyS0" //ttyS1"
+ #endif /* */
+
+ /* serial port baudrate */
diff --git a/packages/gpephone/phoneserver_1.0.bb b/packages/gpephone/phoneserver_1.0.bb
new file mode 100644
index 0000000000..522d31cee1
--- /dev/null
+++ b/packages/gpephone/phoneserver_1.0.bb
@@ -0,0 +1,13 @@
+LICENSE = "LiPS"
+DESCRIPTION = "Phone services server"
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r1"
+
+DEPENDS = "dbus-glib glib-2.0 libmsgenabler libabenabler"
+
+GPE_TARBALL_SUFFIX= "bz2"
+inherit gpephone autotools
+
+SRC_URI += "file://changeport.patch;patch=1;pnum=0"
+
diff --git a/packages/gpephone/ptim-engine/.mtn2git_empty b/packages/gpephone/ptim-engine/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/ptim-engine/.mtn2git_empty
diff --git a/packages/gpephone/ptim-engine/gtkmodule-location.patch b/packages/gpephone/ptim-engine/gtkmodule-location.patch
new file mode 100644
index 0000000000..6882f1239d
--- /dev/null
+++ b/packages/gpephone/ptim-engine/gtkmodule-location.patch
@@ -0,0 +1,11 @@
+--- src/Makefile.am~ 2007-04-05 16:49:43.000000000 +0200
++++ src/Makefile.am 2007-04-05 16:49:43.000000000 +0200
+@@ -3,7 +3,7 @@
+ GTK_PREFIX=`pkg-config gtk+-2.0 --variable=libdir`
+ GTK_BINARY_VERSION=`pkg-config gtk+-2.0 --variable=gtk_binary_version`
+
+-moduledir = $(GTK_PREFIX)/gtk-2.0/$(GTK_BINARY_VERSION)/immodules/ptim/engine
++moduledir = $(libdir)/gtk-2.0/$(GTK_BINARY_VERSION)/immodules/ptim/engine
+
+ INCLUDES = -DPACKAGE_LOCALE_DIR=\"@datadir@/locale/@PACKAGE_NAME@\" -DSN_API_NOT_YET_FROZEN \
+ -I. $(IMENGINE_CFLAGS)
diff --git a/packages/gpephone/ptim-engine_svn.bb b/packages/gpephone/ptim-engine_svn.bb
new file mode 100644
index 0000000000..286a1edf8d
--- /dev/null
+++ b/packages/gpephone/ptim-engine_svn.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Phone input method engine"
+SECTION = "gpephone"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "gtk+ ptim-headers"
+PV = "0.1+svn-${SRCDATE}"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "svn://projects.linuxtogo.org/svn/gpephone/trunk/source/ptim;module=imengine \
+ file://gtkmodule-location.patch;patch=1;pnum=0"
+
+S = "${WORKDIR}/imengine"
+
+FILES_${PN} += " ${libdir}/gtk-2.0/*/immodules/ptim/engine/*.so "
+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_svn.bb b/packages/gpephone/ptim-headers_svn.bb
new file mode 100644
index 0000000000..304c103505
--- /dev/null
+++ b/packages/gpephone/ptim-headers_svn.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Phone input method - shared headers"
+SECTION = "gpephone"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "gtk+"
+PV = "0.1+svn-${SRCDATE}"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "svn://projects.linuxtogo.org/svn/gpephone/trunk/source/ptim;module=imheaders"
+
+S = "${WORKDIR}/imheaders"
+
+DEFAULT_PREFERENCE = "-1"
+
+do_stage () {
+ autotools_stage_all
+} \ No newline at end of file
diff --git a/packages/gpephone/ptim-helper/.mtn2git_empty b/packages/gpephone/ptim-helper/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/ptim-helper/.mtn2git_empty
diff --git a/packages/gpephone/ptim-helper/gtkmodule-location.patch b/packages/gpephone/ptim-helper/gtkmodule-location.patch
new file mode 100644
index 0000000000..cd0e469608
--- /dev/null
+++ b/packages/gpephone/ptim-helper/gtkmodule-location.patch
@@ -0,0 +1,22 @@
+--- src/Makefile.am~ 2007-04-05 16:40:45.000000000 +0200
++++ src/Makefile.am 2007-04-05 16:40:45.000000000 +0200
+@@ -3,7 +3,7 @@
+ GTK_PREFIX=`pkg-config gtk+-2.0 --variable=libdir`
+ GTK_BINARY_VERSION=`pkg-config gtk+-2.0 --variable=gtk_binary_version`
+
+-moduledir = $(GTK_PREFIX)/gtk-2.0/$(GTK_BINARY_VERSION)/immodules/ptim/helper
++moduledir = $(libdir)/gtk-2.0/$(GTK_BINARY_VERSION)/immodules/ptim/helper
+
+ INCLUDES = -DPACKAGE_LOCALE_DIR=\"@datadir@/locale/@PACKAGE_NAME@\" -DSN_API_NOT_YET_FROZEN \
+ -I. $(IMHELPER_CFLAGS)
+--- pixmaps/Makefile.am~ 2007-04-05 16:43:16.000000000 +0200
++++ pixmaps/Makefile.am 2007-04-05 16:43:16.000000000 +0200
+@@ -1,7 +1,7 @@
+ GTK_PREFIX=`pkg-config gtk+-2.0 --variable=libdir`
+ GTK_BINARY_VERSION=`pkg-config gtk+-2.0 --variable=gtk_binary_version`
+
+-pixmapsdir = $(GTK_PREFIX)/gtk-2.0/$(GTK_BINARY_VERSION)/immodules/ptim/pixmaps
++pixmapsdir = $(libdir)/gtk-2.0/$(GTK_BINARY_VERSION)/immodules/ptim/pixmaps
+ pixmaps_DATA = \
+ next.png \
+ prev.png \
diff --git a/packages/gpephone/ptim-helper_svn.bb b/packages/gpephone/ptim-helper_svn.bb
new file mode 100644
index 0000000000..0d0ac653b5
--- /dev/null
+++ b/packages/gpephone/ptim-helper_svn.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Phone input method helper module"
+SECTION = "gpephone"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "gtk+ ptim-headers"
+PV = "0.1+svn-${SRCDATE}"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "svn://projects.linuxtogo.org/svn/gpephone/trunk/source/ptim;module=imhelper \
+ file://gtkmodule-location.patch;patch=1;pnum=0"
+
+S = "${WORKDIR}/imhelper"
+
+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
+} \ No newline at end of file
diff --git a/packages/gpephone/ptim-manager/.mtn2git_empty b/packages/gpephone/ptim-manager/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/ptim-manager/.mtn2git_empty
diff --git a/packages/gpephone/ptim-manager/gtkmodule-location.patch b/packages/gpephone/ptim-manager/gtkmodule-location.patch
new file mode 100644
index 0000000000..d02166e1ac
--- /dev/null
+++ b/packages/gpephone/ptim-manager/gtkmodule-location.patch
@@ -0,0 +1,21 @@
+--- src/Makefile.am~ 2007-04-05 16:01:29.000000000 +0200
++++ src/Makefile.am 2007-04-05 16:01:29.000000000 +0200
+@@ -3,7 +3,7 @@
+ GTK_PREFIX=`pkg-config gtk+-2.0 --variable=libdir`
+ GTK_BINARY_VERSION=`pkg-config gtk+-2.0 --variable=gtk_binary_version`
+
+-moduledir = $(GTK_PREFIX)/gtk-2.0/$(GTK_BINARY_VERSION)/immodules
++moduledir = $(libdir)/gtk-2.0/$(GTK_BINARY_VERSION)/immodules
+
+ INCLUDES = -DPACKAGE_LOCALE_DIR=\"@datadir@/locale/@PACKAGE_NAME@\" -DSN_API_NOT_YET_FROZEN \
+ -I. $(IMMANAGER_CFLAGS)
+--- Makefile.am~ 2007-04-05 16:21:36.000000000 +0200
++++ Makefile.am 2007-04-05 16:21:36.000000000 +0200
+@@ -3,6 +3,6 @@
+ GTK_PREFIX=`pkg-config gtk+-2.0 --variable=libdir`
+ GTK_BINARY_VERSION=`pkg-config gtk+-2.0 --variable=gtk_binary_version`
+
+-confdir = $(GTK_PREFIX)/gtk-2.0/$(GTK_BINARY_VERSION)/immodules/ptim/
++confdir = $(libdir)/gtk-2.0/$(GTK_BINARY_VERSION)/immodules/ptim/
+ conf_DATA = \
+ conf/imconfig
diff --git a/packages/gpephone/ptim-manager_svn.bb b/packages/gpephone/ptim-manager_svn.bb
new file mode 100644
index 0000000000..b1113636e9
--- /dev/null
+++ b/packages/gpephone/ptim-manager_svn.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Phone input method manager module"
+SECTION = "gpephone"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "gtk+ ptim-headers libiac"
+PV = "0.1+svn-${SRCDATE}"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "svn://projects.linuxtogo.org/svn/gpephone/trunk/source/ptim;module=immanager \
+ file://gtkmodule-location.patch;patch=1;pnum=0"
+
+S = "${WORKDIR}/immanager"
+
+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_stage () {
+ autotools_stage_all
+} \ No newline at end of file
diff --git a/packages/gpephone/sms-1.0/.mtn2git_empty b/packages/gpephone/sms-1.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/sms-1.0/.mtn2git_empty
diff --git a/packages/gpephone/sms-1.0/somefixes.patch b/packages/gpephone/sms-1.0/somefixes.patch
new file mode 100644
index 0000000000..41be6c4ae6
--- /dev/null
+++ b/packages/gpephone/sms-1.0/somefixes.patch
@@ -0,0 +1,57 @@
+Index: src/callbacks.c
+===================================================================
+--- src/callbacks.c (Revision 487)
++++ src/callbacks.c (Arbeitskopie)
+@@ -927,11 +927,15 @@
+
+ /* While we have constructed the UI manager we can create the menus as well. */
+ pop_menu_left = gtk_ui_manager_get_widget (ui_manager, menu_left);
+- g_signal_connect (G_OBJECT (pop_menu_left),
+- "key-press-event", G_CALLBACK (popup_key_press_handler),
+- NULL);
+- g_signal_connect (G_OBJECT (pop_menu_left), "unmap",
+- G_CALLBACK (popup_mapping_handler), NULL);
++
++ if (pop_menu_left)
++ {
++ g_signal_connect (G_OBJECT (pop_menu_left),
++ "key-press-event", G_CALLBACK (popup_key_press_handler),
++ NULL);
++ g_signal_connect (G_OBJECT (pop_menu_left), "unmap",
++ G_CALLBACK (popup_mapping_handler), NULL);
++ }
+
+ pop_menu_right = gtk_ui_manager_get_widget (ui_manager, menu_right);
+
+Index: configure.ac
+===================================================================
+--- configure.ac (Revision 487)
++++ configure.ac (Arbeitskopie)
+@@ -48,7 +49,7 @@
+ [ --with-gpe-dir=PATH specify location of gpephone directory ])
+
+ if test "x$with_gpe_dir" = "x" ; then
+- GPE_DIR='$(prefix)/gpephone'
++ GPE_DIR='$(prefix)'
+ else
+ GPE_DIR=$with_gpe_dir
+ fi
+Index: Makefile.am
+===================================================================
+--- Makefile.am (Revision 487)
++++ Makefile.am (Arbeitskopie)
+@@ -8,13 +8,7 @@
+ pixmapsdir = $(GPE_DIR)/share/pixmaps
+ pixmaps_DATA = sms.png
+
+-EXTRA_DIR = sms.desktop.in \
+- intltool-extract.in \
+- intltool-merge.in \
+- intltool-update.in
+-
+-
+-EXTRA_DIST = $(desktop_DATA) \
++EXTRA_DIST = $(desktop_in_files) \
+ $(pixmaps_DATA) \
+ intltool-extract.in \
+ intltool-merge.in \
diff --git a/packages/gpephone/sms_1.0.bb b/packages/gpephone/sms_1.0.bb
new file mode 100644
index 0000000000..d1bcaf6e19
--- /dev/null
+++ b/packages/gpephone/sms_1.0.bb
@@ -0,0 +1,15 @@
+LICENSE = "LiPS"
+DESCRIPTION = "GSM Short message application"
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r1"
+
+DEPENDS = "gtk+ dbus-glib libmsgenabler libabenabler libiac libgpewidget libgpephone"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpephone autotools
+
+SRC_URI += " file://somefixes.patch;patch=1;pnum=0"
+
+FILES_${PN} += "${datadir}/conf ${datadir}/graphic"
diff --git a/packages/gpephone/soundserver/.mtn2git_empty b/packages/gpephone/soundserver/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/soundserver/.mtn2git_empty
diff --git a/packages/gpephone/soundserver/libtool.patch b/packages/gpephone/soundserver/libtool.patch
new file mode 100644
index 0000000000..6ae60d9288
--- /dev/null
+++ b/packages/gpephone/soundserver/libtool.patch
@@ -0,0 +1,10 @@
+--- soundserver-1.0/configure.ac.orig 2007-02-21 18:51:48.000000000 +0100
++++ soundserver-1.0/configure.ac 2007-02-21 18:52:03.000000000 +0100
+@@ -9,7 +9,6 @@
+
+ # Checks for programs.
+ AC_PROG_CC
+-AC_PROG_LIBTOOL
+
+ # Localization
+ AH_TEMPLATE([GETTEXT_PACKAGE], [Package name for gettext])
diff --git a/packages/gpephone/soundserver_1.0.bb b/packages/gpephone/soundserver_1.0.bb
new file mode 100644
index 0000000000..17e3c6b6b1
--- /dev/null
+++ b/packages/gpephone/soundserver_1.0.bb
@@ -0,0 +1,26 @@
+LICENSE = "LiPS"
+DESCRIPTION = "Cellphone alarm daemon"
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r1"
+
+DEPENDS = "glib-2.0 libiac gstreamer"
+
+GPE_TARBALL_SUFFIX = "bz2"
+inherit gpephone autotools
+
+SRC_URI += " file://libtool.patch;patch=1"
+
+EXTRA_OECONF="--disable-osc8k"
+
+LDFLAGS += " -L${STAGING_LIBDIR}"
+
+do_configure () {
+ export PKG_CONFIG=${STAGING_BINDIR_NATIVE}/pkg-config
+ oe_runconf
+}
+
+do_configure_prepend () {
+ export PKG_CONFIG=${STAGING_BINDIR_NATIVE}/pkg-config
+ autoreconf
+}
diff --git a/packages/gpephone/videoplayer_0.1.bb b/packages/gpephone/videoplayer_0.1.bb
new file mode 100644
index 0000000000..70361920f9
--- /dev/null
+++ b/packages/gpephone/videoplayer_0.1.bb
@@ -0,0 +1,12 @@
+LICENSE = "LiPS"
+DESCRIPTION = "Video player application"
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r0"
+
+DEPENDS = "gtk+ libgpewidget libgpephone libgemwidget dbus-glib gst-plugins-base libiac"
+
+GPE_TARBALL_SUFFIX= "gz"
+inherit gpephone autotools
+
+FILES_${PN} += "${datadir}/database ${datadir}/res"
diff --git a/packages/gpephone/voicecall_0.1.bb b/packages/gpephone/voicecall_0.1.bb
new file mode 100644
index 0000000000..82bebf9d50
--- /dev/null
+++ b/packages/gpephone/voicecall_0.1.bb
@@ -0,0 +1,9 @@
+LICENSE = "LiPS"
+DESCRIPTION = "Voice call application (with wifi support)"
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r0"
+
+DEPENDS = "gtk+ dbus-glib libgpewidget libgpephone libiac libvocenabler libabenabler libchenabler"
+
+inherit gpephone autotools
diff --git a/packages/gpephone/xoo-theme-gpephone/.mtn2git_empty b/packages/gpephone/xoo-theme-gpephone/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/xoo-theme-gpephone/.mtn2git_empty
diff --git a/packages/gpephone/xoo-theme-gpephone/gpephone.png b/packages/gpephone/xoo-theme-gpephone/gpephone.png
new file mode 100644
index 0000000000..abde7a0a20
--- /dev/null
+++ b/packages/gpephone/xoo-theme-gpephone/gpephone.png
Binary files differ
diff --git a/packages/gpephone/xoo-theme-gpephone/gpephone.xml b/packages/gpephone/xoo-theme-gpephone/gpephone.xml
new file mode 100644
index 0000000000..d681226886
--- /dev/null
+++ b/packages/gpephone/xoo-theme-gpephone/gpephone.xml
@@ -0,0 +1,59 @@
+<LiPSrf>
+
+<!--
+ first define the window size, image and display geometry for your
+ 'fake' device.
+-->
+
+<device width='305' height='656'
+ display_width='240' display_height='320'
+ display_x='33' display_y='31'
+ img='gpephone.png' />
+
+<!-- Buttons ( optional )
+ The define each of the buttons. Note, there are a couple of extra
+ optional attributes not used here;
+
+ - 'img' - set to an image pathname for the down state of the button
+
+ - repreat = 'on|off' , Turn key repeat on/off for that key. By default
+ key repeat is on.
+ -->
+
+<!-- PIM buttons, left to right -->
+<!-- Left softkey-->
+<button x='36' y='370' width='91' height='21' key='F3'/>
+<!-- Rigth softkey-->
+<button x='177' y='370' width='91' height='21' key='F4'/>
+
+<!-- Home key-->
+<button x='10' y='408' width='83' height='22' key='k'/>
+
+<!-- backspace key-->
+<button x='208' y='408' width='83' height='22' key='BackSpace'/>
+<!-- Call key-->
+<button x='10' y='441' width='83' height='22' key='Page_Up'/>
+<!-- Hangup key-->
+<button x='208' y='441' width='83' height='22' key='Page_Down'/>
+
+<button x='133' y='393' width='45' height='23' key='Up'/>
+<button x='123' y='459' width='57' height='23' key='Down'/>
+<button x='106' y='417' width='26' height='42' key='Left'/>
+<button x='178' y='411' width='20' height='53' key='Right'/>
+
+<button x='133' y='423' width='38' height='30' key='Return'/>
+
+<button x='24' y='493' width='73' height='26' key='1'/>
+<button x='24' y='534' width='73' height='26' key='4'/>
+<button x='24' y='573' width='73' height='26' key='7'/>
+<button x='24' y='612' width='73' height='26' key='comma'/>
+<button x='106' y='486' width='90' height='34' key='2'/>
+<button x='106' y='526' width='90' height='34' key='5'/>
+<button x='106' y='564' width='90' height='34' key='8'/>
+<button x='106' y='604' width='90' height='34' key='0'/>
+<button x='202' y='493' width='73' height='26' key='3'/>
+<button x='202' y='534' width='73' height='26' key='6'/>
+<button x='202' y='573' width='73' height='26' key='9'/>
+<button x='202' y='612' width='73' height='26' key='period'/>
+
+</LiPSrf>
diff --git a/packages/gpephone/xoo-theme-gpephone_1.0.bb b/packages/gpephone/xoo-theme-gpephone_1.0.bb
new file mode 100644
index 0000000000..0441e3e13b
--- /dev/null
+++ b/packages/gpephone/xoo-theme-gpephone_1.0.bb
@@ -0,0 +1,17 @@
+LICENSE = "LiPS"
+DESCRIPTION = "A neutral cellphone theme for Xoo."
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r0"
+
+DEPENDS = "xoo-vm"
+
+SRC_URI = "file://gpephone.png \
+ file://gpephone.xml"
+
+FILES_${PN} += "${datadir}"
+
+do_install () {
+ install -d ${D}${datadir}/xoo/
+ install -m644 ${WORKDIR}/gpephone* ${D}${datadir}/xoo/
+}
diff --git a/packages/gpephone/xoo-vm/.mtn2git_empty b/packages/gpephone/xoo-vm/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/xoo-vm/.mtn2git_empty
diff --git a/packages/gpephone/xoo-vm/gpephone-vm.patch b/packages/gpephone/xoo-vm/gpephone-vm.patch
new file mode 100644
index 0000000000..601b471315
--- /dev/null
+++ b/packages/gpephone/xoo-vm/gpephone-vm.patch
@@ -0,0 +1,84 @@
+Index: src/callbacks.c
+===================================================================
+--- src/callbacks.c (revision 1459)
++++ src/callbacks.c (working copy)
+@@ -37,10 +37,20 @@
+ quit (FakeApp * app)
+ {
+ kill (app->xnest_pid, SIGKILL);
++ system ("killall -9 voicecall && rm -f /tmp/.voc.pid");
++ system ("halt"); /* evil, but it will do the trick */
+ gtk_main_quit ();
+ }
+
+ void
++on_take_screenshot_activate (GtkMenuItem * menuitem, FakeApp * app)
++{
++ gchar *cmd = g_strdup_printf("DISPLAY=%s gpe-scap", app->xnest_dpy_name);
++ system (cmd);
++ g_free (cmd);
++}
++
++void
+ on_quit_activate (GtkMenuItem * menuitem, FakeApp * app)
+ {
+ quit (app);
+Index: src/callbacks.h
+===================================================================
+--- src/callbacks.h (revision 1459)
++++ src/callbacks.h (working copy)
+@@ -8,6 +8,8 @@
+
+ void on_quit_activate (GtkMenuItem * menuitem, FakeApp * app);
+
++void on_take_screenshot_activate (GtkMenuItem * menuitem, FakeApp * app);
++
+ void on_about_activate (GtkMenuItem * menuitem, FakeApp * app);
+
+ void on_window_destroy (GtkObject * widget, FakeApp * app);
+Index: src/main.c
+===================================================================
+--- src/main.c (revision 1459)
++++ src/main.c (working copy)
+@@ -78,6 +78,9 @@
+ glade_xml_signal_connect_data (glade, "on_quit_activate",
+ (GCallback) on_quit_activate, app);
+
++ glade_xml_signal_connect_data (glade, "on_take_screenshot_activate",
++ (GCallback) on_take_screenshot_activate, app);
++
+ glade_xml_signal_connect_data (glade, "on_about_activate",
+ (GCallback) on_about_activate, app);
+
+Index: data/Xoo.glade
+===================================================================
+--- data/Xoo.glade (revision 1459)
++++ data/Xoo.glade (working copy)
+@@ -77,11 +77,26 @@
+ </child>
+
+ <child>
++ <widget class="GtkMenuItem" id="take_screenshot">
++ <property name="visible">True</property>
++ <property name="label" translatable="yes">_Screenshot</property>
++ <property name="use_underline">True</property>
++ <signal name="activate" handler="on_take_screenshot_activate" last_modification_time="Sa, 03 Feb 2007 12:08:36 GMT"/>
++ </widget>
++ </child>
++
++ <child>
++ <widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
++ <property name="visible">True</property>
++ </widget>
++ </child>
++
++ <child>
+ <widget class="GtkImageMenuItem" id="quit">
+ <property name="visible">True</property>
+ <property name="label">gtk-quit</property>
+ <property name="use_stock">True</property>
+- <signal name="activate" handler="on_quit_activate" last_modification_time="Mon, 08 Nov 2004 12:08:36 GMT"/>
++ <signal name="activate" handler="on_quit_activate" last_modification_time="Sa, 03 Feb 2007 12:08:36 GMT"/>
+ </widget>
+ </child>
+ </widget>
diff --git a/packages/gpephone/xoo-vm_0.7-20070204.bb b/packages/gpephone/xoo-vm_0.7-20070204.bb
new file mode 100644
index 0000000000..b927269db2
--- /dev/null
+++ b/packages/gpephone/xoo-vm_0.7-20070204.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Xoo is a GTK2 based graphical wrapper around a windowed X Server. \
+It is intended for embedded developers that want to simulate a target device \
+(with an accurate display size, working hardware buttons, etc) on a desktop machine."
+HOMEPAGE = "http://projects.o-hand.com/xoo"
+LICENSE = "GPL"
+DEPENDS = "virtual/libx11 libxtst gtk+ libglade"
+SRCDATE = 20070204
+PV = "0.7+svn${SRCDATE}"
+PR = "r2"
+
+SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=Xoo;proto=http \
+ file://gpephone-vm.patch;patch=1;pnum=0"
+
+S = "${WORKDIR}/Xoo"
+
+inherit autotools
diff --git a/packages/gperf/.mtn2git_empty b/packages/gperf/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gperf/.mtn2git_empty
diff --git a/packages/gperf/files/.mtn2git_empty b/packages/gperf/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gperf/files/.mtn2git_empty
diff --git a/packages/gperf/files/autoreconf.patch b/packages/gperf/files/autoreconf.patch
new file mode 100644
index 0000000000..432023067b
--- /dev/null
+++ b/packages/gperf/files/autoreconf.patch
@@ -0,0 +1,435 @@
+Index: gperf-3.0.3/configure.ac
+===================================================================
+--- gperf-3.0.3.orig/configure.ac 2007-05-10 18:34:15.000000000 +0200
++++ gperf-3.0.3/configure.ac 2007-05-10 18:34:26.000000000 +0200
+@@ -21,7 +21,7 @@
+ dnl If not, write to the Free Software Foundation, Inc.,
+ dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+-AC_PREREQ([2.60])
++AC_PREREQ([2.59])
+ AC_INIT(doc/gperf.1)
+ AC_PROG_MAKE_SET
+ AC_OBJEXT
+Index: gperf-3.0.3/doc/configure.ac
+===================================================================
+--- gperf-3.0.3.orig/doc/configure.ac 2007-05-10 18:34:30.000000000 +0200
++++ gperf-3.0.3/doc/configure.ac 2007-05-10 18:34:37.000000000 +0200
+@@ -21,7 +21,7 @@
+ dnl If not, write to the Free Software Foundation, Inc.,
+ dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+-AC_PREREQ([2.60])
++AC_PREREQ([2.59])
+ AC_INIT(gperf.1)
+ PACKAGE=gperf
+ AC_SUBST(PACKAGE)
+Index: gperf-3.0.3/lib/configure.ac
+===================================================================
+--- gperf-3.0.3.orig/lib/configure.ac 2007-05-10 18:34:41.000000000 +0200
++++ gperf-3.0.3/lib/configure.ac 2007-05-10 18:34:46.000000000 +0200
+@@ -21,7 +21,7 @@
+ dnl If not, write to the Free Software Foundation, Inc.,
+ dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+-AC_PREREQ([2.60])
++AC_PREREQ([2.59])
+ AC_INIT(hash.cc)
+ AC_PROG_MAKE_SET
+ dnl
+Index: gperf-3.0.3/src/configure.ac
+===================================================================
+--- gperf-3.0.3.orig/src/configure.ac 2007-05-10 18:34:53.000000000 +0200
++++ gperf-3.0.3/src/configure.ac 2007-05-10 18:34:58.000000000 +0200
+@@ -21,7 +21,7 @@
+ dnl If not, write to the Free Software Foundation, Inc.,
+ dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+-AC_PREREQ([2.60])
++AC_PREREQ([2.59])
+ AC_INIT(main.cc)
+ AC_CONFIG_HEADER(config.h)
+ AC_PROG_MAKE_SET
+Index: gperf-3.0.3/tests/configure.ac
+===================================================================
+--- gperf-3.0.3.orig/tests/configure.ac 2007-05-10 18:35:03.000000000 +0200
++++ gperf-3.0.3/tests/configure.ac 2007-05-10 18:35:08.000000000 +0200
+@@ -21,7 +21,7 @@
+ dnl If not, write to the Free Software Foundation, Inc.,
+ dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+-AC_PREREQ([2.60])
++AC_PREREQ([2.59])
+ AC_INIT(c-parse.gperf)
+ AC_PROG_MAKE_SET
+ dnl
+Index: gperf-3.0.3/acinclude.m4
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gperf-3.0.3/acinclude.m4 2007-05-10 18:36:09.000000000 +0200
+@@ -0,0 +1,69 @@
++AC_PREREQ(2.12)
++
++AC_DEFUN(CL_PROG_INSTALL,
++[dnl This is mostly copied from AC_PROG_INSTALL.
++# 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:
++# SysV /etc/install, /usr/sbin/install
++# SunOS /usr/etc/install
++# IRIX /sbin/install
++# AIX /bin/install
++# 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.
++AC_MSG_CHECKING(for a BSD compatible install)
++if test -z "$INSTALL"; then
++AC_CACHE_VAL(cl_cv_path_install,
++[ IFS="${IFS= }"; ac_save_ifs="$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.
++ for ac_prog in ginstall installbsd 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.
++ # OSF/1 installbsd also uses dspmsg, but is usable.
++ :
++ else
++ if test $ac_prog = installbsd &&
++ grep src/bos $ac_dir/$ac_prog >/dev/null 2>&1; then
++ # AIX installbsd doesn't work without option "-g".
++ :
++ else
++ cl_cv_path_install="$ac_dir/$ac_prog -c"
++ break 2
++ fi
++ fi
++ fi
++ done
++ ;;
++ esac
++ done
++ IFS="$ac_save_ifs"
++ # As a last resort, use cp.
++ test -z "$cl_cv_path_install" && cl_cv_path_install="cp"
++])dnl
++ INSTALL="$cl_cv_path_install"
++fi
++dnl We do special magic for INSTALL instead of AC_SUBST, to get
++dnl relative paths right.
++AC_MSG_RESULT($INSTALL)
++AC_SUBST(INSTALL)dnl
++# 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)'
++AC_SUBST(INSTALL_PROGRAM)dnl
++if test -z "$INSTALL_DATA"; then
++ case "$INSTALL" in
++ cp | */cp ) INSTALL_DATA='$(INSTALL)' ;;
++ * ) INSTALL_DATA='$(INSTALL) -m 644' ;;
++ esac
++fi
++AC_SUBST(INSTALL_DATA)dnl
++])
++
+Index: gperf-3.0.3/doc/acinclude.m4
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gperf-3.0.3/doc/acinclude.m4 2007-05-10 18:36:11.000000000 +0200
+@@ -0,0 +1,69 @@
++AC_PREREQ(2.12)
++
++AC_DEFUN(CL_PROG_INSTALL,
++[dnl This is mostly copied from AC_PROG_INSTALL.
++# 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:
++# SysV /etc/install, /usr/sbin/install
++# SunOS /usr/etc/install
++# IRIX /sbin/install
++# AIX /bin/install
++# 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.
++AC_MSG_CHECKING(for a BSD compatible install)
++if test -z "$INSTALL"; then
++AC_CACHE_VAL(cl_cv_path_install,
++[ IFS="${IFS= }"; ac_save_ifs="$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.
++ for ac_prog in ginstall installbsd 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.
++ # OSF/1 installbsd also uses dspmsg, but is usable.
++ :
++ else
++ if test $ac_prog = installbsd &&
++ grep src/bos $ac_dir/$ac_prog >/dev/null 2>&1; then
++ # AIX installbsd doesn't work without option "-g".
++ :
++ else
++ cl_cv_path_install="$ac_dir/$ac_prog -c"
++ break 2
++ fi
++ fi
++ fi
++ done
++ ;;
++ esac
++ done
++ IFS="$ac_save_ifs"
++ # As a last resort, use cp.
++ test -z "$cl_cv_path_install" && cl_cv_path_install="cp"
++])dnl
++ INSTALL="$cl_cv_path_install"
++fi
++dnl We do special magic for INSTALL instead of AC_SUBST, to get
++dnl relative paths right.
++AC_MSG_RESULT($INSTALL)
++AC_SUBST(INSTALL)dnl
++# 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)'
++AC_SUBST(INSTALL_PROGRAM)dnl
++if test -z "$INSTALL_DATA"; then
++ case "$INSTALL" in
++ cp | */cp ) INSTALL_DATA='$(INSTALL)' ;;
++ * ) INSTALL_DATA='$(INSTALL) -m 644' ;;
++ esac
++fi
++AC_SUBST(INSTALL_DATA)dnl
++])
++
+Index: gperf-3.0.3/lib/acinclude.m4
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gperf-3.0.3/lib/acinclude.m4 2007-05-10 18:36:14.000000000 +0200
+@@ -0,0 +1,69 @@
++AC_PREREQ(2.12)
++
++AC_DEFUN(CL_PROG_INSTALL,
++[dnl This is mostly copied from AC_PROG_INSTALL.
++# 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:
++# SysV /etc/install, /usr/sbin/install
++# SunOS /usr/etc/install
++# IRIX /sbin/install
++# AIX /bin/install
++# 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.
++AC_MSG_CHECKING(for a BSD compatible install)
++if test -z "$INSTALL"; then
++AC_CACHE_VAL(cl_cv_path_install,
++[ IFS="${IFS= }"; ac_save_ifs="$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.
++ for ac_prog in ginstall installbsd 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.
++ # OSF/1 installbsd also uses dspmsg, but is usable.
++ :
++ else
++ if test $ac_prog = installbsd &&
++ grep src/bos $ac_dir/$ac_prog >/dev/null 2>&1; then
++ # AIX installbsd doesn't work without option "-g".
++ :
++ else
++ cl_cv_path_install="$ac_dir/$ac_prog -c"
++ break 2
++ fi
++ fi
++ fi
++ done
++ ;;
++ esac
++ done
++ IFS="$ac_save_ifs"
++ # As a last resort, use cp.
++ test -z "$cl_cv_path_install" && cl_cv_path_install="cp"
++])dnl
++ INSTALL="$cl_cv_path_install"
++fi
++dnl We do special magic for INSTALL instead of AC_SUBST, to get
++dnl relative paths right.
++AC_MSG_RESULT($INSTALL)
++AC_SUBST(INSTALL)dnl
++# 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)'
++AC_SUBST(INSTALL_PROGRAM)dnl
++if test -z "$INSTALL_DATA"; then
++ case "$INSTALL" in
++ cp | */cp ) INSTALL_DATA='$(INSTALL)' ;;
++ * ) INSTALL_DATA='$(INSTALL) -m 644' ;;
++ esac
++fi
++AC_SUBST(INSTALL_DATA)dnl
++])
++
+Index: gperf-3.0.3/src/acinclude.m4
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gperf-3.0.3/src/acinclude.m4 2007-05-10 18:36:12.000000000 +0200
+@@ -0,0 +1,69 @@
++AC_PREREQ(2.12)
++
++AC_DEFUN(CL_PROG_INSTALL,
++[dnl This is mostly copied from AC_PROG_INSTALL.
++# 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:
++# SysV /etc/install, /usr/sbin/install
++# SunOS /usr/etc/install
++# IRIX /sbin/install
++# AIX /bin/install
++# 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.
++AC_MSG_CHECKING(for a BSD compatible install)
++if test -z "$INSTALL"; then
++AC_CACHE_VAL(cl_cv_path_install,
++[ IFS="${IFS= }"; ac_save_ifs="$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.
++ for ac_prog in ginstall installbsd 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.
++ # OSF/1 installbsd also uses dspmsg, but is usable.
++ :
++ else
++ if test $ac_prog = installbsd &&
++ grep src/bos $ac_dir/$ac_prog >/dev/null 2>&1; then
++ # AIX installbsd doesn't work without option "-g".
++ :
++ else
++ cl_cv_path_install="$ac_dir/$ac_prog -c"
++ break 2
++ fi
++ fi
++ fi
++ done
++ ;;
++ esac
++ done
++ IFS="$ac_save_ifs"
++ # As a last resort, use cp.
++ test -z "$cl_cv_path_install" && cl_cv_path_install="cp"
++])dnl
++ INSTALL="$cl_cv_path_install"
++fi
++dnl We do special magic for INSTALL instead of AC_SUBST, to get
++dnl relative paths right.
++AC_MSG_RESULT($INSTALL)
++AC_SUBST(INSTALL)dnl
++# 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)'
++AC_SUBST(INSTALL_PROGRAM)dnl
++if test -z "$INSTALL_DATA"; then
++ case "$INSTALL" in
++ cp | */cp ) INSTALL_DATA='$(INSTALL)' ;;
++ * ) INSTALL_DATA='$(INSTALL) -m 644' ;;
++ esac
++fi
++AC_SUBST(INSTALL_DATA)dnl
++])
++
+Index: gperf-3.0.3/tests/acinclude.m4
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gperf-3.0.3/tests/acinclude.m4 2007-05-10 18:36:16.000000000 +0200
+@@ -0,0 +1,69 @@
++AC_PREREQ(2.12)
++
++AC_DEFUN(CL_PROG_INSTALL,
++[dnl This is mostly copied from AC_PROG_INSTALL.
++# 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:
++# SysV /etc/install, /usr/sbin/install
++# SunOS /usr/etc/install
++# IRIX /sbin/install
++# AIX /bin/install
++# 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.
++AC_MSG_CHECKING(for a BSD compatible install)
++if test -z "$INSTALL"; then
++AC_CACHE_VAL(cl_cv_path_install,
++[ IFS="${IFS= }"; ac_save_ifs="$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.
++ for ac_prog in ginstall installbsd 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.
++ # OSF/1 installbsd also uses dspmsg, but is usable.
++ :
++ else
++ if test $ac_prog = installbsd &&
++ grep src/bos $ac_dir/$ac_prog >/dev/null 2>&1; then
++ # AIX installbsd doesn't work without option "-g".
++ :
++ else
++ cl_cv_path_install="$ac_dir/$ac_prog -c"
++ break 2
++ fi
++ fi
++ fi
++ done
++ ;;
++ esac
++ done
++ IFS="$ac_save_ifs"
++ # As a last resort, use cp.
++ test -z "$cl_cv_path_install" && cl_cv_path_install="cp"
++])dnl
++ INSTALL="$cl_cv_path_install"
++fi
++dnl We do special magic for INSTALL instead of AC_SUBST, to get
++dnl relative paths right.
++AC_MSG_RESULT($INSTALL)
++AC_SUBST(INSTALL)dnl
++# 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)'
++AC_SUBST(INSTALL_PROGRAM)dnl
++if test -z "$INSTALL_DATA"; then
++ case "$INSTALL" in
++ cp | */cp ) INSTALL_DATA='$(INSTALL)' ;;
++ * ) INSTALL_DATA='$(INSTALL) -m 644' ;;
++ esac
++fi
++AC_SUBST(INSTALL_DATA)dnl
++])
++
diff --git a/packages/gperf/gperf-native_3.0.3.bb b/packages/gperf/gperf-native_3.0.3.bb
new file mode 100644
index 0000000000..103d1aa3c2
--- /dev/null
+++ b/packages/gperf/gperf-native_3.0.3.bb
@@ -0,0 +1,10 @@
+require gperf_${PV}.bb
+
+S = "${WORKDIR}/gperf-${PV}"
+
+inherit native
+
+do_stage() {
+ install -d ${STAGING_BINDIR_NATIVE}
+ install ${S}/src/gperf ${STAGING_BINDIR_NATIVE}
+}
diff --git a/packages/gperf/gperf_3.0.3.bb b/packages/gperf/gperf_3.0.3.bb
new file mode 100644
index 0000000000..7abfb8fbfb
--- /dev/null
+++ b/packages/gperf/gperf_3.0.3.bb
@@ -0,0 +1,8 @@
+HOMEPAGE = "http://www.gnu.org/software/gperf"
+LICENSE = "GPL"
+SUMMARY = "Generate a perfect hash function from a set of keywords"
+
+SRC_URI = "${GNU_MIRROR}/gperf/gperf-${PV}.tar.gz \
+ file://autoreconf.patch;patch=1"
+
+inherit autotools
diff --git a/packages/gperiodic/gperiodic_1.3.3.bb b/packages/gperiodic/gperiodic_1.3.3.bb
index 3202fc2a48..427f31565b 100644
--- a/packages/gperiodic/gperiodic_1.3.3.bb
+++ b/packages/gperiodic/gperiodic_1.3.3.bb
@@ -4,7 +4,7 @@ and view detailed information on each of the elements. \
118 elements are currently listed."
LICENSE = "GPL"
HOMEPAGE = "http://gperiodic.seul.org"
-SECTION = "x11/apps"
+SECTION = "x11/applications"
DEPENDS = "gtk+-1.2"
SRC_URI = "http://gperiodic.seul.org/downloads/gperiodic-${PV}.tar.gz"
diff --git a/packages/gpgme/gpgme_1.1.4.bb b/packages/gpgme/gpgme_1.1.4.bb
new file mode 100644
index 0000000000..d78cc88cef
--- /dev/null
+++ b/packages/gpgme/gpgme_1.1.4.bb
@@ -0,0 +1,22 @@
+LICENSE = "GPL"
+SRC_URI = "ftp://ftp.gnupg.org/gcrypt/gpgme/gpgme-${PV}.tar.bz2"
+PR = "r1"
+
+DEPENDS = "libgpg-error pth libassuan"
+
+EXTRA_OECONF = "--with-pth=${STAGING_DIR}/${HOST_SYS} --without-pth-test --with-gpg=${bindir}/gpg --without-gpgsm"
+
+inherit autotools binconfig
+
+do_stage() {
+ autotools_stage_includes
+
+ install -d ${STAGING_LIBDIR}
+ oe_libinstall -C gpgme -so libgpgme ${STAGING_LIBDIR}
+ oe_libinstall -C gpgme -so libgpgme-pth ${STAGING_LIBDIR}
+ oe_libinstall -C gpgme -so libgpgme-pthread ${STAGING_LIBDIR}
+
+ install -d ${STAGING_DATADIR}/aclocal
+ install -m 0644 gpgme/gpgme.m4 ${STAGING_DATADIR}/aclocal/
+}
+
diff --git a/packages/gphoto2/gphoto2_2.1.4.bb b/packages/gphoto2/gphoto2_2.1.4.bb
index 5ebed8f8bf..80d0ee0f27 100644
--- a/packages/gphoto2/gphoto2_2.1.4.bb
+++ b/packages/gphoto2/gphoto2_2.1.4.bb
@@ -1,7 +1,8 @@
-LICENSE = "GPL"
+DESCRIPTION = "gphoto2 is a command-line utility to fetch pictures from digital cameras"
SECTION = "console/utils"
+LICENSE = "GPL"
DEPENDS = "libgphoto2 popt"
-DESCRIPTION = "gphoto2 is a command-line utility to fetch pictures from digital cameras"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/gphoto/gphoto2-${PV}.tar.bz2"
diff --git a/packages/gphoto2/gphoto2_2.1.5.bb b/packages/gphoto2/gphoto2_2.1.5.bb
index dc49ce74b0..0913b9743c 100644
--- a/packages/gphoto2/gphoto2_2.1.5.bb
+++ b/packages/gphoto2/gphoto2_2.1.5.bb
@@ -1,7 +1,8 @@
-LICENSE = "GPL"
+DESCRIPTION = "gphoto2 is a command-line utility to fetch pictures from digital cameras"
SECTION = "console/utils"
+LICENSE = "GPL"
DEPENDS = "libgphoto2 popt"
-DESCRIPTION = "gphoto2 is a command-line utility to fetch pictures from digital cameras"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/gphoto/gphoto2-${PV}.tar.gz"
diff --git a/packages/gphoto2/gphoto2_2.1.6.bb b/packages/gphoto2/gphoto2_2.1.6.bb
index ff6531a572..63dad91f14 100644
--- a/packages/gphoto2/gphoto2_2.1.6.bb
+++ b/packages/gphoto2/gphoto2_2.1.6.bb
@@ -1,8 +1,8 @@
-LICENSE = "GPL"
+DESCRIPTION = "gphoto2 is a command-line utility to fetch pictures from digital cameras"
SECTION = "console/utils"
+LICENSE = "GPL"
DEPENDS = "libgphoto2 popt"
-DESCRIPTION = "gphoto2 is a command-line utility to fetch pictures from digital cameras"
-PR="r1"
+PR = "r2"
SRC_URI = "${SOURCEFORGE_MIRROR}/gphoto/gphoto2-${PV}.tar.gz"
diff --git a/packages/gpm/gpm_1.20.1.bb b/packages/gpm/gpm_1.20.1.bb
index 5623ebbf16..c017cafc9a 100644
--- a/packages/gpm/gpm_1.20.1.bb
+++ b/packages/gpm/gpm_1.20.1.bb
@@ -1,21 +1,25 @@
-SECTION = "console/utils"
-LICENSE = "GPL"
-DEPENDS = "ncurses"
DESCRIPTION = "GPM (General Purpose Mouse) is a mouse server \
for the console and xterm, with sample clients included \
(emacs, etc)."
+SECTION = "console/utils"
+LICENSE = "GPL"
+DEPENDS = "ncurses"
-PR="r1"
-PARALLEL_MAKE=""
+PR = "r2"
+PARALLEL_MAKE = ""
SRC_URI = "ftp://arcana.linux.it/pub/gpm/gpm-${PV}.tar.bz2 \
file://configure.patch;patch=1 \
file://no-docs.patch;patch=1 \
file://init"
-inherit autotools
+inherit autotools update-rc.d
+
+INITSCRIPT_NAME = "gpm"
+INITSCRIPT_PARAMS = "defaults"
export LIBS = "-lm"
+
do_configure_prepend () {
cp aclocal.m4 acinclude.m4
}
@@ -29,18 +33,5 @@ do_install () {
oe_runmake 'ROOT=${D}' install
install -d ${D}/${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/gpm
-}
-
-pkg_postinst () {
- if test -n "${D}"; then
- D="-r $D"
- fi
- update-rc.d $D gpm defaults
-}
-
-pkg_prerm () {
- if test -n "${D}"; then
- D="-r $D"
- fi
- update-rc.d $D gpm remove
+ cd ${D}${libdir} && ln -sf libgpm.so.1.19.0 libgpm.so.1
}
diff --git a/packages/gpsd/gpsd.inc b/packages/gpsd/gpsd.inc
index e23167c80a..f7c1de2362 100644
--- a/packages/gpsd/gpsd.inc
+++ b/packages/gpsd/gpsd.inc
@@ -2,13 +2,15 @@ DESCRIPTION = "A TCP/IP Daemon simplifying the communication with GPS devices"
SECTION = "console/network"
PRIORITY = "optional"
LICENSE = "GPL"
-DEPENDS = "dbus-0.23.4 ncurses"
+DEPENDS = "dbus-glib ncurses python"
EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
- --x-libraries=${STAGING_LIBDIR}"
+ --x-libraries=${STAGING_LIBDIR} \
+ --enable-dbus \
+ --disable-python "
SRC_URI = "http://download.berlios.de/gpsd/gpsd-${PV}.tar.gz \
- file://gpsd"
+ file://gpsd"
inherit autotools update-rc.d
@@ -17,6 +19,16 @@ INITSCRIPT_PARAMS = "defaults 35"
export LDFLAGS = "-L${STAGING_LIBDIR} -lm"
+do_compile_prepend() {
+ export BUILD_SYS="${BUILD_SYS}"
+ export HOST_SYS="${HOST_SYS}"
+}
+
+do_install_prepend() {
+ export BUILD_SYS="${BUILD_SYS}"
+ export HOST_SYS="${HOST_SYS}"
+}
+
do_stage() {
oe_libinstall -so -C ${S}/.libs libgps ${STAGING_LIBDIR}
install -m 0655 ${S}/libgps.la ${STAGING_LIBDIR}
diff --git a/packages/gpsd/gpsd_2.34.bb b/packages/gpsd/gpsd_2.34.bb
new file mode 100644
index 0000000000..58e9ebeee2
--- /dev/null
+++ b/packages/gpsd/gpsd_2.34.bb
@@ -0,0 +1,3 @@
+require gpsd.inc
+
+PR = "r0"
diff --git a/packages/gpstk/.mtn2git_empty b/packages/gpstk/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpstk/.mtn2git_empty
diff --git a/packages/gpstk/files/.mtn2git_empty b/packages/gpstk/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpstk/files/.mtn2git_empty
diff --git a/packages/gpstk/files/configure.patch b/packages/gpstk/files/configure.patch
new file mode 100644
index 0000000000..b975512131
--- /dev/null
+++ b/packages/gpstk/files/configure.patch
@@ -0,0 +1,10 @@
+--- gpstk-1.2/configure.ac~ 2006-12-21 06:59:41.000000000 +1030
++++ gpstk-1.2/configure.ac 2007-03-24 14:59:42.000000000 +1030
+@@ -53,6 +53,7 @@
+ apps/ionosphere/Makefile
+ apps/MDPtools/Makefile
+ apps/mergetools/Makefile
++ apps/multipath/Makefile
+ apps/reszilla/Makefile
+ apps/time/Makefile
+ apps/positioning/Makefile
diff --git a/packages/gpstk/gpstk_1.2.bb b/packages/gpstk/gpstk_1.2.bb
new file mode 100644
index 0000000000..64ed3e025f
--- /dev/null
+++ b/packages/gpstk/gpstk_1.2.bb
@@ -0,0 +1,72 @@
+DESCRIPTION = "Libraries and applications to facilitate working with GPS data for research and high accuracy uses."
+HOMEPAGE = "http://www.gpstk.org/"
+LICENSE = "LGPL"
+SECTION = "libs"
+
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/gpstk/gpstk-${PV}-src.tar.gz \
+ file://configure.patch;patch=1"
+
+inherit autotools lib_package
+
+EXTRA_OECONF = "--enable-shared"
+
+do_stage() {
+ autotools_stage_all
+}
+
+
+# This is a handcrafted do_install because 'make install' isn't working.
+# This should install the same files as my native (x86) jam based build, but doesn't since the Makefiles
+# aren't up to date (e.g. bc2sp3 is missing).
+# Koen - 20070325
+do_install() {
+
+install -d ${D}${bindir}
+install -d ${D}${libdir}
+install -d ${D}${includedir}/
+
+for i in bc2sp3 calgps DDBase ddmerge DiscFix EditRinex ephdiff example1 example2 example3 example4 example5 \
+ fic2rin ficacheck ficafic ficcheck ficdiff ficfica findMoreThan12 IonoBias mergeFIC mergeRinMet \
+ mergeRinNav mergeRinObs mergeSRI mkord mpsolve navdmp NavMerge novaRinex ordClock ordEdit ordGen \
+ ordLinEs ordPlot ordStats poscvt posInterp PRSolve ResCor resplot reszilla RinexDump rinexpvt \
+ rinexthin RinSum rmwcheck rmwdiff rnwcheck rnwdiff rowcheck rowdiff rstats rtAshtech sp3version \
+ TECMaps timeconvert tnl tsrif tsrifsu tsriftu vecsol wheresat
+ do install -m 755 `find . -name $i` ${D}${bindir}/ || true
+done
+ cp -pPr src/.libs/libgps* ${D}${libdir}/
+
+for i in AlmanacStore.hpp AlmOrbit.hpp ANSITime.hpp Bancroft.hpp BasicFramework.hpp BCEphemerisStore.hpp \
+ BinexData.hpp BinexFilterOperators.hpp BinexStream.hpp BinUtils.hpp BivarStats.hpp CheckPRData.hpp \
+ CivilTime.hpp ClockModel.hpp CodeBuffer.hpp CommandOption.hpp CommandOptionParser.hpp \
+ CommandOptionWithCommonTimeArg.hpp CommandOptionWithPositionArg.hpp CommandOptionWithTimeArg.hpp \
+ CommonTime.hpp convhelp.hpp DayTime.hpp DOP.hpp ECEF.hpp EngAlmanac.hpp EngEphemeris.hpp EngNav.hpp \
+ EphemerisRange.hpp EphemerisStore.hpp EpochClockModel.hpp Exception.hpp Expression.hpp ExtractC1.hpp \
+ ExtractCombinationData.hpp ExtractD1.hpp ExtractD2.hpp ExtractData.hpp ExtractL1.hpp ExtractL2.hpp \
+ ExtractLC.hpp ExtractP1.hpp ExtractP2.hpp ExtractPC.hpp FFBinaryStream.hpp FFData.hpp FFStreamError.hpp \
+ FFStream.hpp FFTextStream.hpp FICAStream.hpp FICBase.hpp FICData109.hpp FICData162.hpp FICData62.hpp \
+ FICData9.hpp FICData.hpp FICFilterOperators.hpp FICHeader.hpp FICStreamBase.hpp FICStream.hpp \
+ FileFilterFrame.hpp FileFilterFrameWithHeader.hpp FileFilter.hpp FileHunter.hpp FileSpec.hpp \
+ FileStore.hpp FileUtils.hpp GenXSequence.hpp Geodetic.hpp GeoidModel.hpp geometry.hpp getopt.h \
+ gps_constants.hpp GPSEpochWeekSecond.hpp GPSGeoid.hpp gpstkplatform.h GPSWeekSecond.hpp GPSWeekZcount.hpp \
+ GPSZcount29.hpp GPSZcount32.hpp GPSZcount.hpp icd_200_constants.hpp IonoModel.hpp IonoModelStore.hpp \
+ JulianDate.hpp LinearClockModel.hpp LoopedFramework.hpp MathBase.hpp MatrixBase.hpp \
+ MatrixBaseOperators.hpp MatrixFunctors.hpp Matrix.hpp MatrixImplementation.hpp MatrixOperators.hpp \
+ mergePCodeWords.h MiscMath.hpp MJD.hpp ModeledPR.hpp ModeledPseudorangeBase.hpp ModeledReferencePR.hpp \
+ MOPSWeight.hpp MSCData.hpp MSCStream.hpp ObsClockModel.hpp ObsEpochMap.hpp ObsID.hpp ObsRngDev.hpp \
+ ORDEpoch.hpp PCodeConst.hpp PolyFit.hpp Position.hpp PRSolution.hpp RACRotation.hpp \
+ RinexEphemerisStore.hpp RinexMetBase.hpp RinexMetData.hpp RinexMetFilterOperators.hpp \
+ RinexMetHeader.hpp RinexMetStream.hpp RinexNavBase.hpp RinexNavData.hpp RinexNavFilterOperators.hpp \
+ RinexNavHeader.hpp RinexNavStream.hpp RinexObsBase.hpp RinexObsData.hpp RinexObsFilterOperators.hpp \
+ RinexObsHeader.hpp RinexObsID.hpp RinexObsStream.hpp RinexSatID.hpp RinexUtilities.hpp RTFileFrame.hpp \
+ RungeKutta4.hpp SatID.hpp SimpleIURAWeight.hpp SMODFData.hpp SMODFStream.hpp SolverBase.hpp SolverLMS.hpp \
+ SolverWMS.hpp SP3Base.hpp SP3Data.hpp SP3EphemerisStore.hpp SP3Header.hpp SP3SatID.hpp SP3Stream.hpp \
+ Stats.hpp stl_helpers.hpp StringUtils.hpp SVExclusionList.hpp SVPCodeGen.hpp SystemTime.hpp \
+ TabularEphemerisStore.hpp TimeConstants.hpp TimeConverters.hpp TimeString.hpp TimeTag.hpp Triple.hpp \
+ TropModel.hpp UnixTime.hpp ValidType.hpp VectorBase.hpp VectorBaseOperators.hpp \
+ Vector.hpp VectorOperators.hpp WeightBase.hpp WGS84Geoid.hpp WxObsMap.hpp X1Sequence.hpp \
+ X2Sequence.hpp Xvt.hpp YDSTime.hpp
+ do install -m 644 `find . -name $i` ${D}${includedir}/ || true
+done
+}
diff --git a/packages/granule/granule.inc b/packages/granule/granule.inc
index 7f211b3de1..ba32d489f4 100644
--- a/packages/granule/granule.inc
+++ b/packages/granule/granule.inc
@@ -1,9 +1,21 @@
DESCRIPTION = "Generic memory training with flash cards. Automatic scheduling algorithm."
AUTHOR = "Vladislav Grinchenko <vlg@users.sourceforge.net>"
HOMEPAGE = "http://granule.sf.net"
-SECTION = "x11/apps"
+SECTION = "x11/applications"
PRIORITY = "optional"
LICENSE = "GPLv2"
DEPENDS = "glib-2.0-native intltool-native gtkmm libxml2 libassa"
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.gz"
+
inherit autotools pkgconfig
+
+# enable small-screen mode for all sub-vga devices
+EXTRA_OECONF_append_h3600 = " --enable-pda=yes "
+EXTRA_OECONF_append_h3900 = " --enable-pda=yes "
+EXTRA_OECONF_append_h2200 = " --enable-pda=yes "
+EXTRA_OECONF_append_h4000 = " --enable-pda=yes "
+EXTRA_OECONF_append_collie = " --enable-pda=yes "
+EXTRA_OECONF_append_poodle = " --enable-pda=yes "
+EXTRA_OECONF_append_mnci = " --enable-pda=yes "
+EXTRA_OECONF_append_integral13 = " --enable-pda=yes "
diff --git a/packages/granule/granule_1.2.2.bb b/packages/granule/granule_1.2.2.bb
deleted file mode 100644
index 8e68118fa6..0000000000
--- a/packages/granule/granule_1.2.2.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require granule.inc
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.gz"
-
diff --git a/packages/granule/granule_1.2.4.bb b/packages/granule/granule_1.2.4.bb
new file mode 100644
index 0000000000..cb01eb0388
--- /dev/null
+++ b/packages/granule/granule_1.2.4.bb
@@ -0,0 +1,4 @@
+require granule.inc
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}-1.tar.gz"
+
diff --git a/packages/groff/groff_1.19.2.bb b/packages/groff/groff_1.19.2.bb
index e6046ae189..62f56a8c27 100644
--- a/packages/groff/groff_1.19.2.bb
+++ b/packages/groff/groff_1.19.2.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "GNU roff"
SECTION = "base"
LICENSE = "GPL"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://ftp.gnu.org/gnu/groff/groff-${PV}.tar.gz \
file://Makefile.in.patch;patch=1 \
@@ -11,7 +11,7 @@ SRC_URI = "http://ftp.gnu.org/gnu/groff/groff-${PV}.tar.gz \
PARALLEL_MAKE = ""
# prefix and exec-prefix are broken and the .in file is broken too
# and can't be autoreconf'ed, so specify every dir
-EXTRA_OECONF="--prefix=${D} --exec-prefix=${D} --bindir=${D}${bindir} --datadir=${D}${datadir} --mandir=${D}${datadir}/man --infodir=${D}${datadir}/info"
+EXTRA_OECONF="--prefix=${D} --exec-prefix=${D} --bindir=${D}${bindir} --datadir=${D}${datadir} --mandir=${D}${datadir}/man --infodir=${D}${datadir}/info --with-appresdir=${D}${datadir}"
inherit autotools
do_configure() {
diff --git a/packages/grub/grub_0.93.bb b/packages/grub/grub_0.93.bb
index 8341184476..9fc008412d 100644
--- a/packages/grub/grub_0.93.bb
+++ b/packages/grub/grub_0.93.bb
@@ -1,14 +1,15 @@
DESCRIPTION = "GRUB is the GRand Unified Bootloader"
-SECTION = "base"
HOMEPAGE = "http://www.gnu.org/software/grub"
+SECTION = "bootloaders"
+PRIORITY = "optional"
SRC_URI = "ftp://alpha.gnu.org/gnu/grub/grub-${PV}.tar.gz; \
file://autohell.patch;patch=1 \
file://memcpy.patch;patch=1 \
file://reiserfs.patch;patch=1"
-S = "${WORKDIR}/grub-${PV}"
-
inherit autotools
COMPATIBLE_HOST = 'i.86.*-linux'
+
+FILES_${PN}-doc = "${datadir}"
diff --git a/packages/grub/grub_0.97.bb b/packages/grub/grub_0.97.bb
index 051296a31a..044ecba577 100644
--- a/packages/grub/grub_0.97.bb
+++ b/packages/grub/grub_0.97.bb
@@ -1,10 +1,11 @@
-SECTION = "base"
-DESCRIPTION = "grand unified bootloader"
+DESCRIPTION = "GRUB is the GRand Unified Bootloader"
+HOMEPAGE = "http://www.gnu.org/software/grub"
+SECTION = "bootloaders"
+PRIORITY = "optional"
+PR = "r1"
SRC_URI = "ftp://alpha.gnu.org/gnu/grub/grub-${PV}.tar.gz"
-S = "${WORKDIR}/grub-${PV}"
-
inherit autotools
python __anonymous () {
@@ -19,4 +20,5 @@ do_install_append_vmware() {
ln -sf ../usr/lib/grub/{$TARGET_ARCH}{$TARGET_VENDOR}/ ${D}/boot/grub
}
+FILES_${PN}-doc = "${datadir}"
FILES_${PN} = "/boot /usr"
diff --git a/packages/gsm/.mtn2git_empty b/packages/gsm/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gsm/.mtn2git_empty
diff --git a/packages/gsm/files/.mtn2git_empty b/packages/gsm/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gsm/files/.mtn2git_empty
diff --git a/packages/gsm/files/default b/packages/gsm/files/default
new file mode 100644
index 0000000000..161c97f5fb
--- /dev/null
+++ b/packages/gsm/files/default
@@ -0,0 +1,9 @@
+# gsmd This shell script configures for the gsmd init script.
+
+# If you must specify special options, uncomment and modify the next line
+#GSMD_OPTS="-s 115200 -F"
+
+# If your GSM device needs to be powered up, uncomment and modify the next line
+#GSM_POW="/sys/bus/platform/devices/gta01-pm-gsm.0/power_on"
+
+#GSM_DEV="/dev/ttyS1"
diff --git a/packages/gsm/files/fic-gta01/.mtn2git_empty b/packages/gsm/files/fic-gta01/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gsm/files/fic-gta01/.mtn2git_empty
diff --git a/packages/gsm/files/fic-gta01/default b/packages/gsm/files/fic-gta01/default
new file mode 100644
index 0000000000..1511376a6c
--- /dev/null
+++ b/packages/gsm/files/fic-gta01/default
@@ -0,0 +1,9 @@
+# gsmd This shell script configures for the gsmd init script.
+
+# If you must specify special options, uncomment and modify the next line
+GSMD_OPTS="-s 115200 -F"
+
+# If your GSM device needs to be powered up, uncomment and modify the next line
+GSM_POW="/sys/bus/platform/devices/gta01-pm-gsm.0/power_on"
+
+GSM_DEV="/dev/ttySAC0"
diff --git a/packages/gsm/files/gsmd b/packages/gsm/files/gsmd
new file mode 100644
index 0000000000..5c78e8178a
--- /dev/null
+++ b/packages/gsm/files/gsmd
@@ -0,0 +1,106 @@
+#!/bin/sh
+#
+# gsmd This shell script starts and stops gsmd.
+#
+# chkconfig: 345 90 40
+# description: Gsmd manages access to a serial- or USB-connected GSM
+# processname: gsmd
+
+# Source configuration
+. /etc/default/gsmd
+
+# Source function library.
+#. /etc/rc.d/init.d/functions
+
+RETVAL=0
+prog="gsmd"
+
+start() {
+ # Hack for broken uboot and/or kernel on the neo1973
+ dmesg -n1
+
+ if [ -n "${GSM_POW}" ]
+ then
+ if [ -e "${GSM_POW}" ]
+ then
+ echo -n "Powering up GSM device..."
+ echo "1" > ${GSM_POW}
+ sleep 1
+ echo "done"
+ else
+ echo "GSM device not found. Aborting startup"
+ return false
+ fi
+ fi
+ # Start daemons.
+ echo -n "Starting $prog: "
+ # We don't use the daemon function here because of a known bug
+ # in initlog -- it spuriously returns a nonzero status when
+ # starting daemons that fork themselves. See
+ # http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=130629
+ # for discussion. Fortunately:
+ #
+ # 1. gsmd startup can't fail, or at least not in the absence of
+ # much larger resource-exhaustion problems that would be very obvious.
+ #
+ # 2. We don't need all the logging crud that daemon/initlog sets
+ # up -- gsmd does its own syslog calls.
+ #
+ if [ -e "${GSM_DEV}" ]
+ then
+ gsmd -p ${GSM_DEV} ${GSMD_OPTS} >/tmp/gsm.log 2>&1 &
+ echo "success"
+ else
+ # User needs to symlink ${GPS_DEV} to the right thing
+ echo "No ${GSM_DEV} device, aborting gsmd startup."
+ fi
+ RETVAL=$?
+ echo
+ [ $RETVAL -eq 0 ] && touch /var/lock/subsys/gsmd
+ return $RETVAL
+}
+
+stop() {
+ # Stop daemons.
+ echo -n "Shutting down $prog: "
+ killall gsmd
+# killproc gsmd
+ RETVAL=$?
+ echo
+ if [ $RETVAL -eq 0 ]
+ then
+ rm -f /var/lock/subsys/gsmd;
+ fi
+ return $RETVAL
+}
+
+# See how we were called.
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart|reload)
+ stop
+ start
+ RETVAL=$?
+ ;;
+ condrestart)
+ if [ -f /var/lock/subsys/gsmd ]; then
+ stop
+ start
+ RETVAL=$?
+ fi
+ ;;
+ status)
+# status gsmd
+# RETVAL=$?
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|condrestart|status}"
+ exit 1
+esac
+
+exit $RETVAL
diff --git a/packages/gsm/files/htcuniversal/.mtn2git_empty b/packages/gsm/files/htcuniversal/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gsm/files/htcuniversal/.mtn2git_empty
diff --git a/packages/gsm/files/htcuniversal/default b/packages/gsm/files/htcuniversal/default
new file mode 100644
index 0000000000..3c9a8da949
--- /dev/null
+++ b/packages/gsm/files/htcuniversal/default
@@ -0,0 +1,10 @@
+# gsmd This shell script configures for the gsmd init script.
+
+GSMD_OPTS="-s 115200 -F"
+
+# If your GSM device needs to be powered up, uncomment and modify the next line
+#GSM_POW="/sys/bus/platform/devices/gta01-pm-gsm.0/power_on"
+
+# this should be in a common /etc/default/serial, together
+# with BT_DEV, and IR_DEV
+GSM_DEV="/dev/ttyS0"
diff --git a/packages/gsm/files/magician/.mtn2git_empty b/packages/gsm/files/magician/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gsm/files/magician/.mtn2git_empty
diff --git a/packages/gsm/files/magician/default b/packages/gsm/files/magician/default
new file mode 100644
index 0000000000..523d0b9479
--- /dev/null
+++ b/packages/gsm/files/magician/default
@@ -0,0 +1,10 @@
+# gsmd This shell script configures for the gsmd init script.
+
+GSMD_OPTS="-s 115200 -F"
+
+# If your GSM device needs to be powered up, uncomment and modify the next line
+#GSM_POW="/sys/bus/platform/devices/gta01-pm-gsm.0/power_on"
+
+# this should be in a common /etc/default/serial, together
+# with BT_DEV, and IR_DEV
+GSM_DEV="/dev/ttyS1"
diff --git a/packages/gsm/files/plugin.patch b/packages/gsm/files/plugin.patch
new file mode 100644
index 0000000000..7f455ce718
--- /dev/null
+++ b/packages/gsm/files/plugin.patch
@@ -0,0 +1,935 @@
+Index: gsm/include/gsmd/gsmd.h
+===================================================================
+--- gsm.orig/include/gsmd/gsmd.h 2007-04-02 09:58:55.000000000 +0200
++++ gsm/include/gsmd/gsmd.h 2007-04-02 11:03:41.000000000 +0200
+@@ -7,6 +7,7 @@
+
+ #include <common/linux_list.h>
+
++#include <gsmd/machineplugin.h>
+ #include <gsmd/vendorplugin.h>
+ #include <gsmd/select.h>
+ #include <gsmd/state.h>
+@@ -58,12 +59,14 @@
+
+ struct gsmd {
+ unsigned int flags;
++ int interpreter_ready;
+ struct gsmd_fd gfd_uart;
+ struct gsmd_fd gfd_sock;
+ struct llparser llp;
+ struct llist_head users;
+ struct llist_head pending_atcmds; /* our busy gsmd_atcmds */
+ struct llist_head busy_atcmds; /* our busy gsmd_atcmds */
++ struct gsmd_machine_plugin *machinepl;
+ struct gsmd_vendor_plugin *vendorpl;
+ struct gsmd_device_state dev_state;
+
+Index: gsm/include/gsmd/machineplugin.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gsm/include/gsmd/machineplugin.h 2007-04-02 11:03:41.000000000 +0200
+@@ -0,0 +1,24 @@
++#ifndef _GSMD_MACHINEPLUG_H
++#define _GSMD_MACHINEPLUG_H
++
++#ifdef __GSMD__
++
++#include <common/linux_list.h>
++#include <gsmd/gsmd.h>
++
++struct gsmd;
++
++struct gsmd_machine_plugin {
++ struct llist_head list;
++ unsigned char *name;
++ int (*detect)(struct gsmd *g);
++ int (*init)(struct gsmd *g, int fd);
++};
++
++extern int gsmd_machine_plugin_register(struct gsmd_machine_plugin *pl);
++extern void gsmd_machine_plugin_unregister(struct gsmd_machine_plugin *pl);
++extern int gsmd_machine_plugin_find(struct gsmd *g);
++
++#endif /* __GSMD__ */
++
++#endif
+Index: gsm/src/gsmd/machine_tihtc.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gsm/src/gsmd/machine_tihtc.c 2007-04-02 11:03:41.000000000 +0200
+@@ -0,0 +1,71 @@
++/* TI [Calypso] with HTC firmware machine plugin
++ *
++ * Written by Philipp Zabel <philipp.zabel@gmail.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.,
++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ */
++
++#include <stdlib.h>
++#include <unistd.h>
++#include <string.h>
++#include <stdio.h>
++#include <errno.h>
++#include <sys/ioctl.h>
++
++#include "gsmd.h"
++
++#include <gsmd/gsmd.h>
++#include <gsmd/usock.h>
++#include <gsmd/event.h>
++#include <gsmd/talloc.h>
++#include <gsmd/extrsp.h>
++#include <gsmd/machineplugin.h>
++
++#define N_TIHTC 17
++
++static int tihtc_detect(struct gsmd *g)
++{
++ /* FIXME: do actual detection of machine if we have multiple machines */
++ return 1;
++}
++
++static int tihtc_init(struct gsmd *g, int fd)
++{
++ int ldisc = N_TIHTC;
++ int rc;
++
++ /*
++ * Himalaya, Blueangel, Alpine and Magican
++ * power up their GSM chipsets when the
++ * tty is opened. Wait for the "AT-Command
++ * Interpreter ready" message before trying
++ * to send commands.
++ */
++ g->interpreter_ready = 0;
++
++ /* Set the line discipline to N_TIHTC */
++ rc = ioctl(fd, TIOCSETD, &ldisc);
++ if (rc < 0)
++ fprintf(stderr, "can't set line discipline\n");
++
++ return rc;
++}
++
++struct gsmd_machine_plugin gsmd_machine_plugin = {
++ .name = "TI Calypso / HTC firmware",
++ .detect = &tihtc_detect,
++ .init = &tihtc_init,
++};
+Index: gsm/src/gsmd/machine_generic.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gsm/src/gsmd/machine_generic.c 2007-04-02 11:03:41.000000000 +0200
+@@ -0,0 +1,61 @@
++/* generic machine plugin
++ *
++ * Written by Philipp Zabel <philipp.zabel@gmail.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.,
++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ */
++
++#include <stdlib.h>
++#include <unistd.h>
++#include <string.h>
++#include <stdio.h>
++#include <errno.h>
++
++#include "gsmd.h"
++
++#include <gsmd/gsmd.h>
++#include <gsmd/usock.h>
++#include <gsmd/event.h>
++#include <gsmd/talloc.h>
++#include <gsmd/extrsp.h>
++#include <gsmd/machineplugin.h>
++
++static int generic_detect(struct gsmd *g)
++{
++ /* FIXME: do actual detection of machine if we have multiple machines */
++ return 1;
++}
++
++static int generic_init(struct gsmd *g, int fd)
++{
++ int rc;
++
++ /*
++ * We assume that the GSM chipset can take
++ * input immediately, so we don't have to
++ * wait for the "AT-Command Interpreter ready"
++ * message before trying to send commands.
++ */
++ g->interpreter_ready = 1;
++
++ return 0;
++}
++
++struct gsmd_machine_plugin gsmd_machine_plugin = {
++ .name = "generic",
++ .detect = &generic_detect,
++ .init = &generic_init,
++};
+Index: gsm/src/gsmd/machine.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gsm/src/gsmd/machine.c 2007-04-02 13:43:04.000000000 +0200
+@@ -0,0 +1,140 @@
++/* gsmd machine plugin core
++ *
++ * Written by Philipp Zabel <philipp.zabel@gmail.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.,
++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ */
++
++#include <dlfcn.h>
++#include <errno.h>
++#include <stdio.h>
++#include <string.h>
++
++#include <common/linux_list.h>
++
++#include "gsmd.h"
++
++#include <gsmd/gsmd.h>
++#include <gsmd/machineplugin.h>
++
++static LLIST_HEAD(machinepl_list);
++
++int gsmd_machine_plugin_register(struct gsmd_machine_plugin *pl)
++{
++ llist_add(&pl->list, &machinepl_list);
++
++ return 0;
++}
++
++void gsmd_machine_plugin_unregister(struct gsmd_machine_plugin *pl)
++{
++ llist_del(&pl->list);
++}
++
++int gsmd_machine_plugin_find(struct gsmd *g)
++{
++ struct gsmd_machine_plugin *pl;
++
++ if (g->machinepl)
++ return -EEXIST;
++
++ llist_for_each_entry(pl, &machinepl_list, list) {
++ if (pl->detect(g) == 1) {
++ DEBUGP("selecting machine plugin \"%s\"\n", pl->name);
++ g->machinepl = pl;
++ return 1;
++ }
++ }
++
++ return 0;
++}
++
++int gsmd_machine_plugin_load(char *name)
++{
++ int rc = -1;
++ void *plugin;
++ struct gsmd_machine_plugin *pl;
++ char buf[128];
++
++ DEBUGP("loading machine plugin \"%s\"\n", name);
++
++ snprintf(buf, sizeof(buf), PLUGINDIR"/libgsmd-machine_%s.so", name);
++
++ plugin = dlopen(buf, RTLD_LAZY);
++ if (!plugin) {
++ fprintf(stderr, "gsmd_machine_plugin_load: %s\n", dlerror());
++ return -1;
++ }
++
++ pl = dlsym(plugin, "gsmd_machine_plugin");
++ if (pl)
++ rc = gsmd_machine_plugin_register(pl);
++ else
++ dlclose(plugin);
++
++ return rc;
++}
++
++/* maybe /etc/gsmd/cpuinfo */
++struct machines {
++ char *cpuinfo;
++ char *machine;
++ char *vendor;
++} machines[] = {
++ { "GTA01", "generic", "ti" },
++ { "HTC Blueangel", "tihtc", "tihtc" },
++ { "HTC Himalaya", "tihtc", "tihtc" },
++ { "HTC Magician", "tihtc", "tihtc" },
++ { "HTC Universal", "generic", "qc" },
++ { NULL, NULL, NULL },
++};
++
++int gsmd_machine_plugin_init(struct gsmd *g, int fd)
++{
++ FILE *cpuinfo;
++ char buf[1024];
++ char *line, *machine = NULL;
++ int i, rc;
++
++ cpuinfo = fopen("/proc/cpuinfo", "r");
++ fread(buf, sizeof(buf), 1, cpuinfo);
++ fclose(cpuinfo);
++
++ line = strtok(buf, "\n");
++ while (line = strtok(NULL, "\n")) {
++ if (strncmp(line, "Hardware\t: ", 11) == 0) {
++ machine = line+11;
++ break;
++ }
++ }
++ /* FIXME: do this dynamically */
++ if (machine) {
++ for (i = 0; machines[i].cpuinfo; i++) {
++ if (strcmp(machine, machines[i].cpuinfo) == 0) {
++ DEBUGP("detected %s\n", machine);
++ rc = gsmd_machine_plugin_load(machines[i].machine);
++ rc |= gsmd_vendor_plugin_load(machines[i].vendor);
++ return rc;
++ }
++ }
++ }
++ /* load generic machine and all vendor plugins */
++ rc = gsmd_machine_plugin_load("generic");
++ gsmd_vendor_plugin_load("ti");
++ gsmd_vendor_plugin_load("tihtc");
++ gsmd_vendor_plugin_load("qc");
++ return rc;
++}
+Index: gsm/src/gsmd/vendor_qc.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gsm/src/gsmd/vendor_qc.c 2007-04-02 11:03:41.000000000 +0200
+@@ -0,0 +1,104 @@
++/* Qualcomm [msm6250] gsmd plugin
++ *
++ * Written by Philipp Zabel <philipp.zabel@gmail.com>
++ * based on vendor_ti.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.
++ *
++ * 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.,
++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ */
++
++#include <stdlib.h>
++#include <unistd.h>
++#include <string.h>
++#include <stdio.h>
++#include <errno.h>
++
++#include "gsmd.h"
++
++#include <gsmd/gsmd.h>
++#include <gsmd/usock.h>
++#include <gsmd/event.h>
++#include <gsmd/talloc.h>
++#include <gsmd/extrsp.h>
++#include <gsmd/atcmd.h>
++#include <gsmd/vendorplugin.h>
++#include <gsmd/unsolicited.h>
++
++static int htccsq_parse(char *buf, int len, const char *param,
++ struct gsmd *gsmd)
++{
++ char *tok;
++ struct gsmd_evt_auxdata *aux;
++ struct gsmd_ucmd *ucmd = usock_build_event(GSMD_MSG_EVENT, GSMD_EVT_SIGNAL,
++ sizeof(*aux));
++ static int rssi_table[] = { 0,5,10,15,20,25,99 }; /* FIXME */
++ unsigned int i;
++
++ DEBUGP("entering htccsq_parse param=`%s'\n", param);
++ if (!ucmd)
++ return -EINVAL;
++
++
++ aux = (struct gsmd_evt_auxdata *) ucmd->buf;
++
++ i = atoi(buf);
++ if (i > 6)
++ i = 6;
++ aux->u.signal.sigq.rssi = rssi_table[atoi(buf)];
++ aux->u.signal.sigq.ber = 99;
++
++ DEBUGP("sending EVT_SIGNAL\n");
++ usock_evt_send(gsmd, ucmd, GSMD_EVT_SIGNAL);
++
++ return 0;
++
++out_free_io:
++ free(ucmd);
++ return -EIO;
++}
++
++static const struct gsmd_unsolicit qc_unsolicit[] = {
++ { "@HTCCSQ", &htccsq_parse }, /* Signal Quality */
++
++ /* FIXME: parse the below and generate the respective events */
++
++ /* %CGREG: reports extended information about GPRS registration state */
++};
++
++static int qc_detect(struct gsmd *g)
++{
++ /* FIXME: do actual detection of vendor if we have multiple vendors */
++ /* open /proc/cpuinfo and check for HTC Universal? */
++ return 1;
++}
++
++static int qc_initsettings(struct gsmd *g)
++{
++ int rc;
++ struct gsmd_atcmd *cmd;
++
++ /* enable @HTCCSQ: signal quality reports */
++ rc |= gsmd_simplecmd(g, "AT@HTCCSQ=1");
++
++ return rc;
++}
++
++struct gsmd_vendor_plugin gsmd_vendor_plugin = {
++ .name = "Qualcomm msm6250",
++ .num_unsolicit = ARRAY_SIZE(qc_unsolicit),
++ .unsolicit = qc_unsolicit,
++ .detect = &qc_detect,
++ .initsettings = &qc_initsettings,
++};
+Index: gsm/src/gsmd/Makefile.am
+===================================================================
+--- gsm.orig/src/gsmd/Makefile.am 2007-04-02 09:58:55.000000000 +0200
++++ gsm/src/gsmd/Makefile.am 2007-04-02 13:33:11.000000000 +0200
+@@ -1,11 +1,26 @@
+ INCLUDES = $(all_includes) -I$(top_srcdir)/include
+ AM_CFLAGS = -std=gnu99
++plugindir = $(libdir)/gsmd
+
+ sbin_PROGRAMS = gsmd
+
+-gsmd_SOURCES = gsmd.c atcmd.c select.c vendor.c usock.c unsolicited.c log.c \
+- vendor_ti.c talloc.c operator_cache.c ext_response.c
+-#gsmd_LDADD = ../libgsmd/libgsmd.la
+-#gsmd_LDFLAGS = -dynamic
++gsmd_CFLAGS = -D PLUGINDIR=\"$(plugindir)\"
++gsmd_SOURCES = gsmd.c atcmd.c select.c machine.c vendor.c unsolicited.c log.c \
++ usock.c talloc.c operator_cache.c ext_response.c
++gsmd_LDADD = -ldl
++gsmd_LDFLAGS = -Wl,--export-dynamic
++
++plugin_LTLIBRARIES = libgsmd-machine_generic.la \
++ libgsmd-machine_tihtc.la \
++ libgsmd-vendor_ti.la \
++ libgsmd-vendor_tihtc.la \
++ libgsmd-vendor_qc.la
++
++libgsmd_machine_generic_la_SOURCES = machine_generic.c
++libgsmd_machine_tihtc_la_SOURCES = machine_tihtc.c
++
++libgsmd_vendor_ti_la_SOURCES = vendor_ti.c
++libgsmd_vendor_tihtc_la_SOURCES = vendor_tihtc.c
++libgsmd_vendor_qc_la_SOURCES = vendor_qc.c
+
+ noinst_HEADERS = gsmd.h
+Index: gsm/src/gsmd/atcmd.c
+===================================================================
+--- gsm.orig/src/gsmd/atcmd.c 2007-04-02 11:03:40.000000000 +0200
++++ gsm/src/gsmd/atcmd.c 2007-04-02 11:03:41.000000000 +0200
+@@ -183,6 +183,7 @@
+ * an empty string or that 'ready' string, we need to init the modem */
+ if (strlen(buf) == 0 ||
+ !strcmp(buf, "AT-Command Interpreter ready")) {
++ g->interpreter_ready = 1;
+ gsmd_initsettings(g);
+ return 0;
+ }
+@@ -370,7 +371,7 @@
+ }
+
+ /* write pending commands to UART */
+- if (what & GSMD_FD_WRITE) {
++ if ((what & GSMD_FD_WRITE) && g->interpreter_ready) {
+ struct gsmd_atcmd *pos, *pos2;
+ llist_for_each_entry_safe(pos, pos2, &g->pending_atcmds, list) {
+ len = strlen(pos->buf);
+Index: gsm/src/gsmd/vendor_tihtc.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gsm/src/gsmd/vendor_tihtc.c 2007-04-02 13:16:45.000000000 +0200
+@@ -0,0 +1,305 @@
++/* TI [Calypso] with HTC firmware gsmd plugin
++ *
++ * Written by Philipp Zabel <philipp.zabel@gmail.com>
++ * based on vendor_ti.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.
++ *
++ * 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.,
++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ */
++
++#include <stdlib.h>
++#include <unistd.h>
++#include <string.h>
++#include <stdio.h>
++#include <errno.h>
++
++#include "gsmd.h"
++
++#include <gsmd/gsmd.h>
++#include <gsmd/usock.h>
++#include <gsmd/event.h>
++#include <gsmd/talloc.h>
++#include <gsmd/extrsp.h>
++#include <gsmd/atcmd.h>
++#include <gsmd/vendorplugin.h>
++#include <gsmd/unsolicited.h>
++
++static int gsmd_test_atcb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
++{
++ printf("`%s' returned `%s'\n", cmd->buf, resp);
++ return 0;
++}
++
++int gsmd_simplecmd(struct gsmd *gsmd, char *cmdtxt)
++{
++ struct gsmd_atcmd *cmd;
++ cmd = atcmd_fill(cmdtxt, strlen(cmdtxt)+1, &gsmd_test_atcb, NULL, 0);
++ if (!cmd)
++ return -ENOMEM;
++
++ return atcmd_submit(gsmd, cmd);
++}
++
++
++#if 0
++#include "vendorplugin.h"
++
++static int
++ti_getopt(struct gsmd *gh, int optname, void *optval, int *optlen)
++{
++ switch (optname) {
++ case GSMD_OPT_CIPHER_IND:
++ /* FIXME: send AT%CPRI=? */
++ break;
++ default:
++ return -EINVAL;
++ }
++}
++
++static int
++ti_setopt(struct gsmd *gh, int optname, const void *optval, int optlen)
++{
++ switch (optname) {
++ case GSMD_OPT_CIPHER_IND:
++ /* FIXME: send AT%CPRI= */
++ break;
++ default:
++ return -EINVAL;
++ }
++}
++
++#endif
++
++
++static int htccsq_parse(char *buf, int len, const char *param,
++ struct gsmd *gsmd)
++{
++ char *tok;
++ struct gsmd_evt_auxdata *aux;
++ struct gsmd_ucmd *ucmd = usock_build_event(GSMD_MSG_EVENT, GSMD_EVT_SIGNAL,
++ sizeof(*aux));
++
++ DEBUGP("entering htccsq_parse param=`%s'\n", param);
++ if (!ucmd)
++ return -EINVAL;
++
++
++ aux = (struct gsmd_evt_auxdata *) ucmd->buf;
++
++ /* FIXME: contains values 1-5, should be mapped to 0-31 somehow? */
++ /* 2 --> 11 */
++ aux->u.signal.sigq.rssi = atoi(buf);
++ aux->u.signal.sigq.ber = 99;
++
++ DEBUGP("sending EVT_SIGNAL\n");
++ usock_evt_send(gsmd, ucmd, GSMD_EVT_SIGNAL);
++
++ return 0;
++
++out_free_io:
++ free(ucmd);
++ return -EIO;
++}
++
++static int cpri_parse(char *buf, int len, const char *param, struct gsmd *gsmd)
++{
++ char *tok1, *tok2;
++
++ tok1 = strtok(buf, ",");
++ if (!tok1)
++ return -EIO;
++
++ tok2 = strtok(NULL, ",");
++ if (!tok2) {
++ switch (atoi(tok1)) {
++ case 0:
++ gsmd->dev_state.ciph_ind.flags &= ~GSMD_CIPHIND_ACTIVE;
++ break;
++ case 1:
++ gsmd->dev_state.ciph_ind.flags |= GSMD_CIPHIND_ACTIVE;
++ break;
++ case 2:
++ gsmd->dev_state.ciph_ind.flags |= GSMD_CIPHIND_DISABLED_SIM;
++ break;
++ }
++ } else {
++ struct gsmd_evt_auxdata *aux;
++ struct gsmd_ucmd *ucmd = usock_build_event(GSMD_MSG_EVENT,
++ GSMD_EVT_CIPHER,
++ sizeof(*aux));
++ if (!ucmd)
++ return -ENOMEM;
++
++ aux = (struct gsmd_evt_auxdata *) ucmd->buf;
++
++ aux->u.cipher.net_state_gsm = atoi(tok1);
++ aux->u.cipher.net_state_gsm = atoi(tok2);
++
++ usock_evt_send(gsmd, ucmd, GSMD_EVT_CIPHER);
++ }
++
++ return 0;
++}
++
++/* Call Progress Information */
++static int cpi_parse(char *buf, int len, const char *param, struct gsmd *gsmd)
++{
++ char *tok;
++ struct gsmd_evt_auxdata *aux;
++ struct gsmd_ucmd *ucmd = usock_build_event(GSMD_MSG_EVENT,
++ GSMD_EVT_OUT_STATUS,
++ sizeof(*aux));
++
++ DEBUGP("entering cpi_parse param=`%s'\n", param);
++ if (!ucmd)
++ return -EINVAL;
++
++ aux = (struct gsmd_evt_auxdata *) ucmd->buf;
++
++ /* Format: cId, msgType, ibt, tch, dir,[mode],[number],[type],[alpha],[cause],line */
++
++ /* call ID */
++ tok = strtok(buf, ",");
++ if (!tok)
++ goto out_free_io;
++
++ /* message type (layer 3) */
++ tok = strtok(NULL, ",");
++ if (!tok)
++ goto out_free_io;
++ aux->u.call_status.prog = atoi(tok);
++
++ /* in-band tones */
++ tok = strtok(NULL, ",");
++ if (!tok)
++ goto out_free_io;
++
++ if (*tok == '1')
++ aux->u.call_status.ibt = 1;
++ else
++ aux->u.call_status.ibt = 0;
++
++ /* TCH allocated */
++ tok = strtok(NULL, ",");
++ if (!tok)
++ goto out_free_io;
++
++ if (*tok == '1')
++ aux->u.call_status.tch = 1;
++ else
++ aux->u.call_status.tch = 0;
++
++ /* direction */
++ tok = strtok(NULL, ",");
++ if (!tok)
++ goto out_send;
++
++ switch (*tok) {
++ case '0':
++ case '1':
++ case '2':
++ case '3':
++ aux->u.call_status.dir = (*tok - '0');
++ break;
++ default:
++ break;
++ }
++
++ /* mode */
++ tok = strtok(NULL, ",");
++ if (!tok)
++ goto out_send;
++
++out_send:
++ usock_evt_send(gsmd, ucmd, GSMD_EVT_OUT_STATUS);
++
++ return 0;
++
++out_free_io:
++ talloc_free(ucmd);
++ return -EIO;
++}
++
++static const struct gsmd_unsolicit tihtc_unsolicit[] = {
++ { "%HTCCSQ", &htccsq_parse }, /* Signal Quality */
++ { "%CPRI", &cpri_parse }, /* Ciphering Indication */
++ { "%CPI", &cpi_parse }, /* Call Progress Information */
++
++ /* FIXME: parse the below and generate the respective events */
++
++ /* %CGREG: reports extended information about GPRS registration state */
++};
++
++static int cpi_detect_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
++{
++ struct gsmd *g = ctx;
++ struct gsm_extrsp *er;
++
++ if (strncmp(resp, "%CPI: ", 6))
++ return -EINVAL;
++ resp += 6;
++
++ er = extrsp_parse(cmd, resp);
++ if (!er)
++ return -EINVAL;
++
++ if (extrsp_supports(er, 0, 3))
++ return gsmd_simplecmd(g, "AT%CPI=3");
++ else if (extrsp_supports(er, 0, 2))
++ return gsmd_simplecmd(g, "AT%CPI=2");
++ else
++ DEBUGP("Call Progress Indication mode 2 or 3 not supported!!\n");
++
++ talloc_free(er);
++ return 0;
++}
++
++static int tihtc_detect(struct gsmd *g)
++{
++ /* FIXME: do actual detection of vendor if we have multiple vendors */
++ /* open /proc/cpuinfo and check for HTC Magician or HTC Blueangel? */
++ /* check for N_TIHTC ldisc? or set it ourselves? */
++ return 1;
++}
++
++static int tihtc_initsettings(struct gsmd *g)
++{
++ int rc;
++ struct gsmd_atcmd *cmd;
++
++ /* use %CGREG */
++ //rc |= gsmd_simplecmd(g, "AT%CGREG=3");
++ /* enable %CPRI: ciphering indications */
++ rc |= gsmd_simplecmd(g, "AT%CPRI=1");
++ /* enable %HTCCSQ: signal quality reports */
++ rc |= gsmd_simplecmd(g, "AT%HTCCSQ=1");
++ /* send unsolicited commands at any time */
++ rc |= gsmd_simplecmd(g, "AT%CUNS=0");
++
++ /* enable %CPI: call progress indication */
++ cmd = atcmd_fill("AT%CPI=?", 9, &cpi_detect_cb, g, 0);
++ if (cmd)
++ atcmd_submit(g, cmd);
++
++ return rc;
++}
++
++struct gsmd_vendor_plugin gsmd_vendor_plugin = {
++ .name = "TI Calypso / HTC firmware",
++ .num_unsolicit = ARRAY_SIZE(tihtc_unsolicit),
++ .unsolicit = tihtc_unsolicit,
++ .detect = &tihtc_detect,
++ .initsettings = &tihtc_initsettings,
++};
+Index: gsm/src/gsmd/vendor_ti.c
+===================================================================
+--- gsm.orig/src/gsmd/vendor_ti.c 2007-04-02 09:58:55.000000000 +0200
++++ gsm/src/gsmd/vendor_ti.c 2007-04-02 11:03:41.000000000 +0200
+@@ -301,16 +301,10 @@
+ return rc;
+ }
+
+-static struct gsmd_vendor_plugin plugin_ticalypso = {
++struct gsmd_vendor_plugin gsmd_vendor_plugin = {
+ .name = "TI Calypso",
+ .num_unsolicit = ARRAY_SIZE(ticalypso_unsolicit),
+ .unsolicit = ticalypso_unsolicit,
+ .detect = &ticalypso_detect,
+ .initsettings = &ticalypso_initsettings,
+ };
+-
+-/* FIXME: this will be _init() when we make this a plugin */
+-int ticalypso_init(void)
+-{
+- return gsmd_vendor_plugin_register(&plugin_ticalypso);
+-}
+Index: gsm/src/gsmd/gsmd.c
+===================================================================
+--- gsm.orig/src/gsmd/gsmd.c 2007-04-02 09:58:55.000000000 +0200
++++ gsm/src/gsmd/gsmd.c 2007-04-02 13:39:40.000000000 +0200
+@@ -254,6 +254,21 @@
+ exit(1);
+ }
+
++ if (gsmd_machine_plugin_init(&g) < 0) {
++ fprintf(stderr, "no machine plugins found\n");
++ exit(1);
++ }
++
++ /* select a machine plugin and load possible vendor plugins */
++ gsmd_machine_plugin_find(&g);
++
++ /* initialize the machine plugin */
++ if (g.machinepl->init)
++ if (g.machinepl->init(&g, fd) < 0) {
++ fprintf(stderr, "couldn't initialize machine plugin\n");
++ exit(1);
++ }
++
+ if (atcmd_init(&g, fd) < 0) {
+ fprintf(stderr, "can't initialize UART device\n");
+ exit(1);
+@@ -275,12 +290,11 @@
+ setsid();
+ }
+
+- /* FIXME: do this dynamically */
+- ticalypso_init();
+-
++ /* select a vendor plugin */
+ gsmd_vendor_plugin_find(&g);
+
+- gsmd_initsettings(&g);
++ if (g.interpreter_ready)
++ gsmd_initsettings(&g);
+
+ gsmd_opname_init(&g);
+
+Index: gsm/src/gsmd/vendor.c
+===================================================================
+--- gsm.orig/src/gsmd/vendor.c 2007-04-02 09:58:55.000000000 +0200
++++ gsm/src/gsmd/vendor.c 2007-04-02 13:38:38.000000000 +0200
+@@ -20,7 +20,10 @@
+ *
+ */
+
++#include <dlfcn.h>
+ #include <errno.h>
++#include <stdio.h>
++#include <string.h>
+
+ #include <common/linux_list.h>
+
+@@ -52,6 +55,7 @@
+
+ llist_for_each_entry(pl, &vendorpl_list, list) {
+ if (pl->detect(g) == 1) {
++ DEBUGP("selecting vendor plugin \"%s\"\n", pl->name);
+ g->vendorpl = pl;
+ return 1;
+ }
+@@ -59,3 +63,29 @@
+
+ return 0;
+ }
++
++int gsmd_vendor_plugin_load(char *name)
++{
++ int rc = -1;
++ void *lib;
++ struct gsmd_vendor_plugin *pl;
++ char buf[128];
++
++ DEBUGP("loading vendor plugin \"%s\"\n", name);
++
++ snprintf(buf, sizeof(buf), PLUGINDIR"/libgsmd-vendor_%s.so", name);
++
++ lib = dlopen(buf, RTLD_LAZY);
++ if (!lib) {
++ fprintf(stderr, "gsmd_vendor_plugin_load: %s\n", dlerror());
++ return -1;
++ }
++
++ pl = dlsym(lib, "gsmd_vendor_plugin");
++ if (pl)
++ rc = gsmd_vendor_plugin_register(pl);
++ else
++ dlclose(lib);
++
++ return rc;
++}
diff --git a/packages/gsm/files/qualcomm-extreply.patch b/packages/gsm/files/qualcomm-extreply.patch
new file mode 100644
index 0000000000..010a8c9f31
--- /dev/null
+++ b/packages/gsm/files/qualcomm-extreply.patch
@@ -0,0 +1,13 @@
+Index: gsm/src/gsmd/atcmd.c
+===================================================================
+--- gsm.orig/src/gsmd/atcmd.c 2007-04-02 09:59:16.000000000 +0200
++++ gsm/src/gsmd/atcmd.c 2007-04-02 10:10:54.000000000 +0200
+@@ -207,7 +207,7 @@
+ * TBD
+ */
+
+- if (buf[0] == '+' || buf[0] == '%') {
++ if (buf[0] == '+' || buf[0] == '%' || buf[0] == '@') {
+ /* an extended response */
+ const char *colon = strchr(buf, ':');
+ if (!colon) {
diff --git a/packages/gsm/libgsmd_svn.bb b/packages/gsm/libgsmd_svn.bb
new file mode 100644
index 0000000000..0215bb92b9
--- /dev/null
+++ b/packages/gsm/libgsmd_svn.bb
@@ -0,0 +1,42 @@
+DESCRIPTION = "GSM libraries and daemons implementing the 07.10 specification"
+HOMEPAGE = "http://www.openmoko.org"
+LICENSE = "GPL"
+SECTION = "libs/gsm"
+PROVIDES += "gsmd"
+PV = "0.0+svn${SRCDATE}"
+PR = "r10"
+
+SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gsm;proto=http \
+ file://gsmd \
+ file://default"
+S = "${WORKDIR}/gsm"
+
+SRC_URI_append_magician = " file://plugin.patch;patch=1"
+SRC_URI_append_htcuniversal = " file://plugin.patch;patch=1 \
+ file://qualcomm-extreply.patch;patch=1"
+
+inherit autotools pkgconfig update-rc.d
+
+INITSCRIPT_NAME = "gsmd"
+INITSCRIPT_PARAMS = "defaults 35"
+
+do_stage() {
+ autotools_stage_all
+}
+
+do_install_append() {
+ install -d ${D}/${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/gsmd ${D}/${sysconfdir}/init.d/
+ install -d ${D}/${sysconfdir}/default
+ install ${WORKDIR}/default ${D}/${sysconfdir}/default/gsmd
+}
+
+PACKAGES =+ "${PN}-tools gsmd gsmd-plugins"
+RDEPENDS_${PN} = "gsmd"
+RRECOMMENDS_gsmd = "gsmd-plugins"
+FILES_${PN}-tools = "${bindir}/*"
+FILES_gsmd = "${sbindir}/gsmd ${sysconfdir}"
+FILES_gsmd-plugins = "${libdir}/gsmd/*.so*"
+
+PACKAGES_DYNAMIC = "libgsmd* gsmd"
+
diff --git a/packages/gspcav1/.mtn2git_empty b/packages/gspcav1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gspcav1/.mtn2git_empty
diff --git a/packages/gspcav1/gspcav1-20070110/.mtn2git_empty b/packages/gspcav1/gspcav1-20070110/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gspcav1/gspcav1-20070110/.mtn2git_empty
diff --git a/packages/gspcav1/gspcav1-20070110/MS.patch b/packages/gspcav1/gspcav1-20070110/MS.patch
new file mode 100644
index 0000000000..588a4bc3da
--- /dev/null
+++ b/packages/gspcav1/gspcav1-20070110/MS.patch
@@ -0,0 +1,29 @@
+--- gspcav1-20070110/gspca_core.c.orig 2007-03-16 23:24:37.000000000 +0000
++++ gspcav1-20070110/gspca_core.c 2007-03-16 23:24:43.000000000 +0000
+@@ -398,7 +398,7 @@
+ Sonyc002,
+ Vimicro0321,
+ Orbicam,
+- M$VX1000,
++ MSVX1000,
+ Trust610LCDPowerCamZoom,
+ Sonyc001,
+ LastCamera
+@@ -580,7 +580,7 @@
+ {Sonyc002,"Vc0321"},
+ {Vimicro0321,"Vc0321"},
+ {Orbicam,"Logitech Orbicam"},
+- {M$VX1000,"MicroSoft VX1000"},
++ {MSVX1000,"MicroSoft VX1000"},
+ {Trust610LCDPowerCamZoom, "Trust 610 LCD PowerC@m Zoom"},
+ {Sonyc001,"Sony Visual Communication VGP-VCC1"},
+ {-1, NULL}
+@@ -3124,7 +3124,7 @@
+ case 0x045e:
+ switch(product){
+ case 0x00f7:
+- spca50x->desc = M$VX1000;
++ spca50x->desc = MSVX1000;
+ spca50x->bridge = BRIDGE_SN9CXXX;
+ spca50x->sensor = SENSOR_OV7660;
+ spca50x->customid = SN9C105;
diff --git a/packages/gspcav1/gspcav1-20070110/Makefile.patch b/packages/gspcav1/gspcav1-20070110/Makefile.patch
new file mode 100644
index 0000000000..87262686cb
--- /dev/null
+++ b/packages/gspcav1/gspcav1-20070110/Makefile.patch
@@ -0,0 +1,11 @@
+--- gspcav1-20070110/Makefile.orig 2007-03-16 23:20:18.000000000 +0000
++++ gspcav1-20070110/Makefile 2007-03-16 23:20:44.000000000 +0000
+@@ -41,7 +41,7 @@
+ MODULE_INSTALLDIR2 = /lib/modules/$(KERNEL_VERSION)/kernel/drivers/media/video/
+
+ default:
+- $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) CC=$(CC) modules
++ $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) CC="$(CC)" modules
+
+ install:
+ mkdir -p $(MODULE_INSTALLDIR)
diff --git a/packages/gspcav1/gspcav1_20070110.bb b/packages/gspcav1/gspcav1_20070110.bb
new file mode 100644
index 0000000000..86cb1010df
--- /dev/null
+++ b/packages/gspcav1/gspcav1_20070110.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "USB Webcam driver for spca5xx chipset family supporting \
+over 100 models of camera"
+PRIORITY = "optional"
+SECTION = "kernel/modules"
+LICENSE = "GPL"
+
+SRC_URI = "http://mxhaard.free.fr/spca50x/Download/${PN}-${PV}.tar.gz \
+ file://Makefile.patch;patch=1 \
+ file://MS.patch;patch=1"
+
+S = "${WORKDIR}/${PN}-${PV}"
+
+inherit module
+
+do_compile () {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ oe_runmake 'KERNELDIR=${STAGING_KERNEL_DIR}' \
+ 'CC=${KERNEL_CC}' \
+ 'LD=${KERNEL_LD}'
+}
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+ install -m 0644 *${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+}
diff --git a/packages/gstreamer/gst-ffmpeg/.mtn2git_empty b/packages/gstreamer/gst-ffmpeg/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gstreamer/gst-ffmpeg/.mtn2git_empty
diff --git a/packages/gstreamer/gst-ffmpeg/armv5.patch b/packages/gstreamer/gst-ffmpeg/armv5.patch
new file mode 100644
index 0000000000..794709cc5b
--- /dev/null
+++ b/packages/gstreamer/gst-ffmpeg/armv5.patch
@@ -0,0 +1,1509 @@
+diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/configure.ac gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/configure.ac
+--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/configure.ac 2006-09-23 15:35:21.000000000 +0200
++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/configure.ac 2007-05-01 12:23:39.000000000 +0200
+@@ -190,7 +190,7 @@
+ ARCH_X86=yes
+ ;;
+ # armv4l is a subset of armv5tel
+- armv4l|armv5tel)
++ arm|armv4l|armv5tel|armv5te)
+ TARGET_ARCH="armv4l"
+ ARCH_ARMV4L=yes
+ ;;
+@@ -364,11 +364,8 @@
+ AC_FF_ALLOW_DISABLE(HAVE_IWMMXT, iwmmxt, use ARM/IWMMXT optimizations,[
+ if test x$TARGET_ARCH = xarmv4l; then
+ AC_MSG_CHECKING(for support of IWMMXT optimizations)
+- AC_TRY_RUN([
+- int main () {
++ AC_TRY_COMPILE(,[
+ __asm__ __volatile__ ("wunpckelub wr6, wr4");
+- return 0;
+- }
+ ],[ HAVE_IWMMXT=yes && AC_MSG_RESULT(yes) ],[
+ HAVE_IWMMXT=no && AC_MSG_RESULT(no) ])
+ else
+@@ -376,6 +373,19 @@
+ fi
+ ])
+
++dnl ARMV5TE
++AC_FF_ALLOW_DISABLE(HAVE_ARMV5TE, armv5te, use ARMV5TE optimizations,[
++ if test x$TARGET_ARCH = xarmv4l; then
++ AC_MSG_CHECKING(for support of ARMV5TE specific instructions)
++ AC_TRY_COMPILE(, [
++ __asm__ __volatile__ ("smulbb a4,ip,a3");
++ ],[ HAVE_ARMV5TE=yes && AC_MSG_RESULT(yes) ],[
++ HAVE_ARMV5TE=no && AC_MSG_RESULT(no) ])
++ else
++ HAVE_ARMV5TE=no
++ fi
++])
++
+ dnl GProf (-p)
+ AC_FF_ALLOW_ENABLE(HAVE_GPROF, gprof, profiling with gprof,[
+ GPROF_FLAGS="-p"
+diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm.c gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm.c
+--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm.c 2006-09-20 20:55:37.000000000 +0200
++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm.c 2007-05-01 12:23:40.000000000 +0200
+ * ARMv4L optimized DSP utils
+ * Copyright (c) 2001 Lionel Ulmer.
+ *
+- * This library is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
++ *
++ * FFmpeg 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 of the License, or (at your option) any later version.
++ * version 2.1 of the License, or (at your option) any later version.
+ *
+- * This library is distributed in the hope that it will be useful,
++ * FFmpeg 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 this library; if not, write to the Free Software
++ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+-#include "dsputil.h"
++#include "../dsputil.h"
+ #ifdef HAVE_IPP
+ #include "ipp.h"
+ #endif
+@@ -27,6 +29,12 @@
+ extern void j_rev_dct_ARM(DCTELEM *data);
+ extern void simple_idct_ARM(DCTELEM *data);
+
++extern void simple_idct_armv5te(DCTELEM *data);
++extern void simple_idct_put_armv5te(uint8_t *dest, int line_size,
++ DCTELEM *data);
++extern void simple_idct_add_armv5te(uint8_t *dest, int line_size,
++ DCTELEM *data);
++
+ /* XXX: local hack */
+ static void (*ff_put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size);
+ static void (*ff_add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size);
+@@ -196,8 +204,10 @@
+ ff_add_pixels_clamped = c->add_pixels_clamped;
+
+ if(idct_algo == FF_IDCT_AUTO){
+-#ifdef HAVE_IPP
++#if defined(HAVE_IPP)
+ idct_algo = FF_IDCT_IPP;
++#elif defined(HAVE_ARMV5TE)
++ idct_algo = FF_IDCT_SIMPLEARMV5TE;
+ #else
+ idct_algo = FF_IDCT_ARM;
+ #endif
+@@ -213,6 +223,13 @@
+ c->idct_add= simple_idct_ARM_add;
+ c->idct = simple_idct_ARM;
+ c->idct_permutation_type= FF_NO_IDCT_PERM;
++#ifdef HAVE_ARMV5TE
++ } else if (idct_algo==FF_IDCT_SIMPLEARMV5TE){
++ c->idct_put= simple_idct_put_armv5te;
++ c->idct_add= simple_idct_add_armv5te;
++ c->idct = simple_idct_armv5te;
++ c->idct_permutation_type = FF_NO_IDCT_PERM;
++#endif
+ #ifdef HAVE_IPP
+ } else if (idct_algo==FF_IDCT_IPP){
+ c->idct_put= simple_idct_ipp_put;
+--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm_s.S 2006-02-19 00:04:59.000000000 +0100
++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_arm_s.S 2007-05-01 12:23:40.000000000 +0200
+@@ -2,20 +2,29 @@
+ @ ARMv4L optimized DSP utils
+ @ Copyright (c) 2004 AGAWA Koji <i (AT) atty (DOT) jp>
+ @
+-@ This library is free software; you can redistribute it and/or
++@ This file is part of FFmpeg.
++@
++@ FFmpeg 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 of the License, or (at your option) any later version.
++@ version 2.1 of the License, or (at your option) any later version.
+ @
+-@ This library is distributed in the hope that it will be useful,
++@ FFmpeg 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 this library; if not, write to the Free Software
++@ License along with FFmpeg; if not, write to the Free Software
+ @ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ @
++#if defined(__ARM_ARCH_5__) || \
++ defined(__ARM_ARCH_5T__) || \
++ defined(__ARM_ARCH_5TE__)
++#define PLD(code...) code
++#else
++#define PLD(code...)
++#endif
+
+ .macro ADJ_ALIGN_QUADWORD_D shift, Rd0, Rd1, Rd2, Rd3, Rn0, Rn1, Rn2, Rn3, Rn4
+ mov \Rd0, \Rn0, lsr #(\shift * 8)
+@@ -74,7 +83,7 @@
+ put_pixels16_arm:
+ @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
+ @ block = word aligned, pixles = unaligned
+- pld [r1]
++ PLD ( pld [r1] )
+ stmfd sp!, {r4-r11, lr} @ R14 is also called LR
+ adr r5, 5f
+ ands r4, r1, #3
+@@ -85,7 +94,7 @@
+ ldmia r1, {r4-r7}
+ add r1, r1, r2
+ stmia r0, {r4-r7}
+- pld [r1]
++ PLD ( pld [r1] )
+ subs r3, r3, #1
+ add r0, r0, r2
+ bne 1b
+@@ -95,7 +104,7 @@
+ ldmia r1, {r4-r8}
+ add r1, r1, r2
+ ADJ_ALIGN_QUADWORD_D 1, r9, r10, r11, r12, r4, r5, r6, r7, r8
+- pld [r1]
++ PLD ( pld [r1] )
+ subs r3, r3, #1
+ stmia r0, {r9-r12}
+ add r0, r0, r2
+@@ -106,7 +115,7 @@
+ ldmia r1, {r4-r8}
+ add r1, r1, r2
+ ADJ_ALIGN_QUADWORD_D 2, r9, r10, r11, r12, r4, r5, r6, r7, r8
+- pld [r1]
++ PLD ( pld [r1] )
+ subs r3, r3, #1
+ stmia r0, {r9-r12}
+ add r0, r0, r2
+@@ -117,7 +126,7 @@
+ ldmia r1, {r4-r8}
+ add r1, r1, r2
+ ADJ_ALIGN_QUADWORD_D 3, r9, r10, r11, r12, r4, r5, r6, r7, r8
+- pld [r1]
++ PLD ( pld [r1] )
+ subs r3, r3, #1
+ stmia r0, {r9-r12}
+ add r0, r0, r2
+@@ -136,7 +145,7 @@
+ put_pixels8_arm:
+ @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
+ @ block = word aligned, pixles = unaligned
+- pld [r1]
++ PLD ( pld [r1] )
+ stmfd sp!, {r4-r5,lr} @ R14 is also called LR
+ adr r5, 5f
+ ands r4, r1, #3
+@@ -147,7 +156,7 @@
+ ldmia r1, {r4-r5}
+ add r1, r1, r2
+ subs r3, r3, #1
+- pld [r1]
++ PLD ( pld [r1] )
+ stmia r0, {r4-r5}
+ add r0, r0, r2
+ bne 1b
+@@ -157,7 +166,7 @@
+ ldmia r1, {r4-r5, r12}
+ add r1, r1, r2
+ ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r12
+- pld [r1]
++ PLD ( pld [r1] )
+ subs r3, r3, #1
+ stmia r0, {r4-r5}
+ add r0, r0, r2
+@@ -168,7 +177,7 @@
+ ldmia r1, {r4-r5, r12}
+ add r1, r1, r2
+ ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r12
+- pld [r1]
++ PLD ( pld [r1] )
+ subs r3, r3, #1
+ stmia r0, {r4-r5}
+ add r0, r0, r2
+@@ -179,7 +188,7 @@
+ ldmia r1, {r4-r5, r12}
+ add r1, r1, r2
+ ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r12
+- pld [r1]
++ PLD ( pld [r1] )
+ subs r3, r3, #1
+ stmia r0, {r4-r5}
+ add r0, r0, r2
+@@ -198,7 +207,7 @@
+ put_pixels8_x2_arm:
+ @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
+ @ block = word aligned, pixles = unaligned
+- pld [r1]
++ PLD ( pld [r1] )
+ stmfd sp!, {r4-r10,lr} @ R14 is also called LR
+ adr r5, 5f
+ ands r4, r1, #3
+@@ -210,7 +219,7 @@
+ ldmia r1, {r4-r5, r10}
+ add r1, r1, r2
+ ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10
+- pld [r1]
++ PLD ( pld [r1] )
+ RND_AVG32 r8, r9, r4, r5, r6, r7, r12
+ subs r3, r3, #1
+ stmia r0, {r8-r9}
+@@ -223,7 +232,7 @@
+ add r1, r1, r2
+ ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10
+ ADJ_ALIGN_DOUBLEWORD_D 2, r8, r9, r4, r5, r10
+- pld [r1]
++ PLD ( pld [r1] )
+ RND_AVG32 r4, r5, r6, r7, r8, r9, r12
+ subs r3, r3, #1
+ stmia r0, {r4-r5}
+@@ -236,7 +245,7 @@
+ add r1, r1, r2
+ ADJ_ALIGN_DOUBLEWORD_D 2, r6, r7, r4, r5, r10
+ ADJ_ALIGN_DOUBLEWORD_D 3, r8, r9, r4, r5, r10
+- pld [r1]
++ PLD ( pld [r1] )
+ RND_AVG32 r4, r5, r6, r7, r8, r9, r12
+ subs r3, r3, #1
+ stmia r0, {r4-r5}
+@@ -248,7 +257,7 @@
+ ldmia r1, {r4-r5, r10}
+ add r1, r1, r2
+ ADJ_ALIGN_DOUBLEWORD_D 3, r6, r7, r4, r5, r10
+- pld [r1]
++ PLD ( pld [r1] )
+ RND_AVG32 r8, r9, r6, r7, r5, r10, r12
+ subs r3, r3, #1
+ stmia r0, {r8-r9}
+@@ -267,7 +276,7 @@
+ put_no_rnd_pixels8_x2_arm:
+ @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
+ @ block = word aligned, pixles = unaligned
+- pld [r1]
++ PLD ( pld [r1] )
+ stmfd sp!, {r4-r10,lr} @ R14 is also called LR
+ adr r5, 5f
+ ands r4, r1, #3
+@@ -279,7 +288,7 @@
+ ldmia r1, {r4-r5, r10}
+ add r1, r1, r2
+ ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10
+- pld [r1]
++ PLD ( pld [r1] )
+ NO_RND_AVG32 r8, r9, r4, r5, r6, r7, r12
+ subs r3, r3, #1
+ stmia r0, {r8-r9}
+@@ -292,7 +301,7 @@
+ add r1, r1, r2
+ ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10
+ ADJ_ALIGN_DOUBLEWORD_D 2, r8, r9, r4, r5, r10
+- pld [r1]
++ PLD ( pld [r1] )
+ NO_RND_AVG32 r4, r5, r6, r7, r8, r9, r12
+ subs r3, r3, #1
+ stmia r0, {r4-r5}
+@@ -305,7 +314,7 @@
+ add r1, r1, r2
+ ADJ_ALIGN_DOUBLEWORD_D 2, r6, r7, r4, r5, r10
+ ADJ_ALIGN_DOUBLEWORD_D 3, r8, r9, r4, r5, r10
+- pld [r1]
++ PLD ( pld [r1] )
+ NO_RND_AVG32 r4, r5, r6, r7, r8, r9, r12
+ subs r3, r3, #1
+ stmia r0, {r4-r5}
+@@ -317,7 +326,7 @@
+ ldmia r1, {r4-r5, r10}
+ add r1, r1, r2
+ ADJ_ALIGN_DOUBLEWORD_D 3, r6, r7, r4, r5, r10
+- pld [r1]
++ PLD ( pld [r1] )
+ NO_RND_AVG32 r8, r9, r6, r7, r5, r10, r12
+ subs r3, r3, #1
+ stmia r0, {r8-r9}
+@@ -338,7 +347,7 @@
+ put_pixels8_y2_arm:
+ @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
+ @ block = word aligned, pixles = unaligned
+- pld [r1]
++ PLD ( pld [r1] )
+ stmfd sp!, {r4-r11,lr} @ R14 is also called LR
+ adr r5, 5f
+ ands r4, r1, #3
+@@ -352,13 +361,13 @@
+ add r1, r1, r2
+ 6: ldmia r1, {r6-r7}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ RND_AVG32 r8, r9, r4, r5, r6, r7, r12
+ ldmia r1, {r4-r5}
+ add r1, r1, r2
+ stmia r0, {r8-r9}
+ add r0, r0, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ RND_AVG32 r8, r9, r6, r7, r4, r5, r12
+ subs r3, r3, #1
+ stmia r0, {r8-r9}
+@@ -369,18 +378,18 @@
+ 2:
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6
+ 6: ldmia r1, {r7-r9}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 1, r7, r8, r9
+ RND_AVG32 r10, r11, r4, r5, r7, r8, r12
+ stmia r0, {r10-r11}
+ add r0, r0, r2
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6
+ subs r3, r3, #1
+ RND_AVG32 r10, r11, r7, r8, r4, r5, r12
+@@ -392,18 +401,18 @@
+ 3:
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6
+ 6: ldmia r1, {r7-r9}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 2, r7, r8, r9
+ RND_AVG32 r10, r11, r4, r5, r7, r8, r12
+ stmia r0, {r10-r11}
+ add r0, r0, r2
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6
+ subs r3, r3, #1
+ RND_AVG32 r10, r11, r7, r8, r4, r5, r12
+@@ -415,18 +424,18 @@
+ 4:
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6
+ 6: ldmia r1, {r7-r9}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 3, r7, r8, r9
+ RND_AVG32 r10, r11, r4, r5, r7, r8, r12
+ stmia r0, {r10-r11}
+ add r0, r0, r2
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6
+ subs r3, r3, #1
+ RND_AVG32 r10, r11, r7, r8, r4, r5, r12
+@@ -447,7 +456,7 @@
+ put_no_rnd_pixels8_y2_arm:
+ @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
+ @ block = word aligned, pixles = unaligned
+- pld [r1]
++ PLD ( pld [r1] )
+ stmfd sp!, {r4-r11,lr} @ R14 is also called LR
+ adr r5, 5f
+ ands r4, r1, #3
+@@ -461,13 +470,13 @@
+ add r1, r1, r2
+ 6: ldmia r1, {r6-r7}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ NO_RND_AVG32 r8, r9, r4, r5, r6, r7, r12
+ ldmia r1, {r4-r5}
+ add r1, r1, r2
+ stmia r0, {r8-r9}
+ add r0, r0, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ NO_RND_AVG32 r8, r9, r6, r7, r4, r5, r12
+ subs r3, r3, #1
+ stmia r0, {r8-r9}
+@@ -478,18 +487,18 @@
+ 2:
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6
+ 6: ldmia r1, {r7-r9}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 1, r7, r8, r9
+ NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12
+ stmia r0, {r10-r11}
+ add r0, r0, r2
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6
+ subs r3, r3, #1
+ NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12
+@@ -501,18 +510,18 @@
+ 3:
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6
+ 6: ldmia r1, {r7-r9}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 2, r7, r8, r9
+ NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12
+ stmia r0, {r10-r11}
+ add r0, r0, r2
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6
+ subs r3, r3, #1
+ NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12
+@@ -524,18 +533,18 @@
+ 4:
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6
+ 6: ldmia r1, {r7-r9}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 3, r7, r8, r9
+ NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12
+ stmia r0, {r10-r11}
+ add r0, r0, r2
+ ldmia r1, {r4-r6}
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6
+ subs r3, r3, #1
+ NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12
+@@ -562,7 +571,7 @@
+ ldmia r1, {r8-r10}
+ .endif
+ add r1, r1, r2
+- pld [r1]
++ PLD ( pld [r1] )
+ .if \align == 0
+ ADJ_ALIGN_DOUBLEWORD_D 1, r4, r5, r6, r7, r8
+ .elseif \align == 1
+@@ -624,7 +633,7 @@
+ put_pixels8_xy2_arm:
+ @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
+ @ block = word aligned, pixles = unaligned
+- pld [r1]
++ PLD ( pld [r1] )
+ stmfd sp!, {r4-r11,lr} @ R14 is also called LR
+ adrl r12, 5f
+ ands r4, r1, #3
+@@ -661,7 +670,7 @@
+ put_no_rnd_pixels8_xy2_arm:
+ @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
+ @ block = word aligned, pixles = unaligned
+- pld [r1]
++ PLD ( pld [r1] )
+ stmfd sp!, {r4-r11,lr} @ R14 is also called LR
+ adrl r12, 5f
+ ands r4, r1, #3
+diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt.c gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt.c
+--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt.c 2006-02-19 00:04:59.000000000 +0100
++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt.c 2007-05-01 12:23:40.000000000 +0200
+@@ -2,18 +2,20 @@
+ * iWMMXt optimized DSP utils
+ * Copyright (c) 2004 AGAWA Koji
+ *
+- * This library is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
++ *
++ * FFmpeg 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 of the License, or (at your option) any later version.
++ * version 2.1 of the License, or (at your option) any later version.
+ *
+- * This library is distributed in the hope that it will be useful,
++ * FFmpeg 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 this library; if not, write to the Free Software
++ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt_rnd.h gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt_rnd.h
+--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt_rnd.h 2006-09-20 20:55:37.000000000 +0200
++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/dsputil_iwmmxt_rnd.h 2007-05-01 12:23:40.000000000 +0200
+@@ -2,18 +2,20 @@
+ * iWMMXt optimized DSP utils
+ * copyright (c) 2004 AGAWA Koji
+ *
+- * This library is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
++ *
++ * FFmpeg 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 of the License, or (at your option) any later version.
++ * version 2.1 of the License, or (at your option) any later version.
+ *
+- * This library is distributed in the hope that it will be useful,
++ * FFmpeg 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 this library; if not, write to the Free Software
++ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/Makefile.am gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/Makefile.am
+--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/Makefile.am 2006-09-22 06:07:23.000000000 +0200
++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/Makefile.am 2007-05-01 12:23:40.000000000 +0200
+@@ -7,9 +7,14 @@
+ iwmmxt_libs = libiwmmxt.la
+ endif
+
++if HAVE_ARMV5TE
++armv5te_libs = libarmv5te.la
++endif
++
+ noinst_LTLIBRARIES = \
+ libarmv4l.la \
+- $(iwmmxt_libs)
++ $(iwmmxt_libs) \
++ $(armv5te_libs)
+
+ libarmv4l_la_SOURCES = \
+ jrevdct_arm.S \
+@@ -18,6 +23,9 @@
+ dsputil_arm.c \
+ mpegvideo_arm.c
+
++libarmv5te_la_SOURCES = \
++ simple_idct_armv5te.S
++
+ libiwmmxt_la_SOURCES = \
+ dsputil_iwmmxt.c \
+ mpegvideo_iwmmxt.c
+diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mathops.h gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mathops.h
+--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mathops.h 2006-09-22 06:07:23.000000000 +0200
++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mathops.h 2007-05-01 12:23:40.000000000 +0200
+@@ -2,18 +2,20 @@
+ * simple math operations
+ * Copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> et al
+ *
+- * This library is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
++ *
++ * FFmpeg 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 of the License, or (at your option) any later version.
++ * version 2.1 of the License, or (at your option) any later version.
+ *
+- * This library is distributed in the hope that it will be useful,
++ * FFmpeg 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 this library; if not, write to the Free Software
++ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+@@ -39,9 +41,9 @@
+ # define MAC16(rt, ra, rb) \
+ asm ("smlabb %0, %2, %3, %0" : "=r" (rt) : "0" (rt), "r" (ra), "r" (rb));
+ /* signed 16x16 -> 32 multiply */
+-# define MUL16(ra, rb) \
+- ({ int __rt;\
+- asm ("smulbb %0, %1, %2" : "=r" (__rt) : "r" (ra), "r" (rb));
++# define MUL16(ra, rb) \
++ ({ int __rt; \
++ asm ("smulbb %0, %1, %2" : "=r" (__rt) : "r" (ra), "r" (rb)); \
+ __rt; })
+
+ #endif
+diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_arm.c gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_arm.c
+--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_arm.c 2006-02-19 00:04:59.000000000 +0100
++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_arm.c 2007-05-01 12:23:40.000000000 +0200
+@@ -1,25 +1,27 @@
+ /*
+ * Copyright (c) 2002 Michael Niedermayer
+ *
+- * This library is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
++ *
++ * FFmpeg 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 of the License, or (at your option) any later version.
++ * version 2.1 of the License, or (at your option) any later version.
+ *
+- * This library is distributed in the hope that it will be useful,
++ * FFmpeg 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 this library; if not, write to the Free Software
++ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+-#include "dsputil.h"
+-#include "mpegvideo.h"
+-#include "avcodec.h"
++#include "../dsputil.h"
++#include "../mpegvideo.h"
++#include "../avcodec.h"
+
+ extern void MPV_common_init_iwmmxt(MpegEncContext *s);
+
+diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_iwmmxt.c gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_iwmmxt.c
+--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_iwmmxt.c 2006-09-20 20:55:37.000000000 +0200
++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/mpegvideo_iwmmxt.c 2007-05-01 12:23:40.000000000 +0200
+@@ -1,18 +1,20 @@
+ /*
+ * copyright (c) 2004 AGAWA Koji
+ *
+- * This library is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
++ *
++ * FFmpeg 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 of the License, or (at your option) any later version.
++ * version 2.1 of the License, or (at your option) any later version.
+ *
+- * This library is distributed in the hope that it will be useful,
++ * FFmpeg 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 this library; if not, write to the Free Software
++ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_arm.S gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_arm.S
+--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_arm.S 2006-09-20 20:55:37.000000000 +0200
++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_arm.S 2007-05-01 12:23:40.000000000 +0200
+@@ -5,18 +5,20 @@
+ *
+ * Author: Frederic Boulay <dilb@handhelds.org>
+ *
+- * This library is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
++ *
++ * FFmpeg 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 of the License, or (at your option) any later version.
++ * version 2.1 of the License, or (at your option) any later version.
+ *
+- * This library is distributed in the hope that it will be useful,
++ * FFmpeg 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 this library; if not, write to the Free Software
++ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * The function defined in this file, is derived from the simple_idct function
+diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_armv5te.S gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_armv5te.S
+--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_armv5te.S 1970-01-01 01:00:00.000000000 +0100
++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/armv4l/simple_idct_armv5te.S 2007-05-01 12:23:40.000000000 +0200
+@@ -0,0 +1,718 @@
++/*
++ * Simple IDCT
++ *
++ * Copyright (c) 2001 Michael Niedermayer <michaelni@gmx.at>
++ * Copyright (c) 2006 Mans Rullgard <mru@inprovide.com>
++ *
++ * This file is part of FFmpeg.
++ *
++ * FFmpeg 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.
++ *
++ * FFmpeg 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 FFmpeg; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
++ */
++
++#define W1 22725 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
++#define W2 21407 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
++#define W3 19266 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
++#define W4 16383 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
++#define W5 12873 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
++#define W6 8867 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
++#define W7 4520 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
++#define ROW_SHIFT 11
++#define COL_SHIFT 20
++
++#define W13 (W1 | (W3 << 16))
++#define W26 (W2 | (W6 << 16))
++#define W57 (W5 | (W7 << 16))
++
++ .text
++ .align
++w13: .long W13
++w26: .long W26
++w57: .long W57
++
++ .align
++ .func idct_row_armv5te
++idct_row_armv5te:
++ str lr, [sp, #-4]!
++
++ ldrd v1, [a1, #8]
++ ldrd a3, [a1] /* a3 = row[1:0], a4 = row[3:2] */
++ orrs v1, v1, v2
++ cmpeq v1, a4
++ cmpeq v1, a3, lsr #16
++ beq row_dc_only
++
++ mov v1, #(1<<(ROW_SHIFT-1))
++ mov ip, #16384
++ sub ip, ip, #1 /* ip = W4 */
++ smlabb v1, ip, a3, v1 /* v1 = W4*row[0]+(1<<(RS-1)) */
++ ldr ip, [pc, #(w26-.-8)] /* ip = W2 | (W6 << 16) */
++ smultb a2, ip, a4
++ smulbb lr, ip, a4
++ add v2, v1, a2
++ sub v3, v1, a2
++ sub v4, v1, lr
++ add v1, v1, lr
++
++ ldr ip, [pc, #(w13-.-8)] /* ip = W1 | (W3 << 16) */
++ ldr lr, [pc, #(w57-.-8)] /* lr = W5 | (W7 << 16) */
++ smulbt v5, ip, a3
++ smultt v6, lr, a4
++ smlatt v5, ip, a4, v5
++ smultt a2, ip, a3
++ smulbt v7, lr, a3
++ sub v6, v6, a2
++ smulbt a2, ip, a4
++ smultt fp, lr, a3
++ sub v7, v7, a2
++ smulbt a2, lr, a4
++ ldrd a3, [a1, #8] /* a3=row[5:4] a4=row[7:6] */
++ sub fp, fp, a2
++
++ orrs a2, a3, a4
++ beq 1f
++
++ smlabt v5, lr, a3, v5
++ smlabt v6, ip, a3, v6
++ smlatt v5, lr, a4, v5
++ smlabt v6, lr, a4, v6
++ smlatt v7, lr, a3, v7
++ smlatt fp, ip, a3, fp
++ smulbt a2, ip, a4
++ smlatt v7, ip, a4, v7
++ sub fp, fp, a2
++
++ ldr ip, [pc, #(w26-.-8)] /* ip = W2 | (W6 << 16) */
++ mov a2, #16384
++ sub a2, a2, #1 /* a2 = W4 */
++ smulbb a2, a2, a3 /* a2 = W4*row[4] */
++ smultb lr, ip, a4 /* lr = W6*row[6] */
++ add v1, v1, a2 /* v1 += W4*row[4] */
++ add v1, v1, lr /* v1 += W6*row[6] */
++ add v4, v4, a2 /* v4 += W4*row[4] */
++ sub v4, v4, lr /* v4 -= W6*row[6] */
++ smulbb lr, ip, a4 /* lr = W2*row[6] */
++ sub v2, v2, a2 /* v2 -= W4*row[4] */
++ sub v2, v2, lr /* v2 -= W2*row[6] */
++ sub v3, v3, a2 /* v3 -= W4*row[4] */
++ add v3, v3, lr /* v3 += W2*row[6] */
++
++1: add a2, v1, v5
++ mov a3, a2, lsr #11
++ bic a3, a3, #0x1f0000
++ sub a2, v2, v6
++ mov a2, a2, lsr #11
++ add a3, a3, a2, lsl #16
++ add a2, v3, v7
++ mov a4, a2, lsr #11
++ bic a4, a4, #0x1f0000
++ add a2, v4, fp
++ mov a2, a2, lsr #11
++ add a4, a4, a2, lsl #16
++ strd a3, [a1]
++
++ sub a2, v4, fp
++ mov a3, a2, lsr #11
++ bic a3, a3, #0x1f0000
++ sub a2, v3, v7
++ mov a2, a2, lsr #11
++ add a3, a3, a2, lsl #16
++ add a2, v2, v6
++ mov a4, a2, lsr #11
++ bic a4, a4, #0x1f0000
++ sub a2, v1, v5
++ mov a2, a2, lsr #11
++ add a4, a4, a2, lsl #16
++ strd a3, [a1, #8]
++
++ ldr pc, [sp], #4
++
++row_dc_only:
++ orr a3, a3, a3, lsl #16
++ bic a3, a3, #0xe000
++ mov a3, a3, lsl #3
++ mov a4, a3
++ strd a3, [a1]
++ strd a3, [a1, #8]
++
++ ldr pc, [sp], #4
++ .endfunc
++
++ .macro idct_col
++ ldr a4, [a1] /* a4 = col[1:0] */
++ mov ip, #16384
++ sub ip, ip, #1 /* ip = W4 */
++#if 0
++ mov v1, #(1<<(COL_SHIFT-1))
++ smlabt v2, ip, a4, v1 /* v2 = W4*col[1] + (1<<(COL_SHIFT-1)) */
++ smlabb v1, ip, a4, v1 /* v1 = W4*col[0] + (1<<(COL_SHIFT-1)) */
++ ldr a4, [a1, #(16*4)]
++#else
++ mov v1, #((1<<(COL_SHIFT-1))/W4) /* this matches the C version */
++ add v2, v1, a4, asr #16
++ rsb v2, v2, v2, lsl #14
++ mov a4, a4, lsl #16
++ add v1, v1, a4, asr #16
++ ldr a4, [a1, #(16*4)]
++ rsb v1, v1, v1, lsl #14
++#endif
++
++ smulbb lr, ip, a4
++ smulbt a3, ip, a4
++ sub v3, v1, lr
++ sub v5, v1, lr
++ add v7, v1, lr
++ add v1, v1, lr
++ sub v4, v2, a3
++ sub v6, v2, a3
++ add fp, v2, a3
++ ldr ip, [pc, #(w26-.-8)]
++ ldr a4, [a1, #(16*2)]
++ add v2, v2, a3
++
++ smulbb lr, ip, a4
++ smultb a3, ip, a4
++ add v1, v1, lr
++ sub v7, v7, lr
++ add v3, v3, a3
++ sub v5, v5, a3
++ smulbt lr, ip, a4
++ smultt a3, ip, a4
++ add v2, v2, lr
++ sub fp, fp, lr
++ add v4, v4, a3
++ ldr a4, [a1, #(16*6)]
++ sub v6, v6, a3
++
++ smultb lr, ip, a4
++ smulbb a3, ip, a4
++ add v1, v1, lr
++ sub v7, v7, lr
++ sub v3, v3, a3
++ add v5, v5, a3
++ smultt lr, ip, a4
++ smulbt a3, ip, a4
++ add v2, v2, lr
++ sub fp, fp, lr
++ sub v4, v4, a3
++ add v6, v6, a3
++
++ stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp}
++
++ ldr ip, [pc, #(w13-.-8)]
++ ldr a4, [a1, #(16*1)]
++ ldr lr, [pc, #(w57-.-8)]
++ smulbb v1, ip, a4
++ smultb v3, ip, a4
++ smulbb v5, lr, a4
++ smultb v7, lr, a4
++ smulbt v2, ip, a4
++ smultt v4, ip, a4
++ smulbt v6, lr, a4
++ smultt fp, lr, a4
++ rsb v4, v4, #0
++ ldr a4, [a1, #(16*3)]
++ rsb v3, v3, #0
++
++ smlatb v1, ip, a4, v1
++ smlatb v3, lr, a4, v3
++ smulbb a3, ip, a4
++ smulbb a2, lr, a4
++ sub v5, v5, a3
++ sub v7, v7, a2
++ smlatt v2, ip, a4, v2
++ smlatt v4, lr, a4, v4
++ smulbt a3, ip, a4
++ smulbt a2, lr, a4
++ sub v6, v6, a3
++ ldr a4, [a1, #(16*5)]
++ sub fp, fp, a2
++
++ smlabb v1, lr, a4, v1
++ smlabb v3, ip, a4, v3
++ smlatb v5, lr, a4, v5
++ smlatb v7, ip, a4, v7
++ smlabt v2, lr, a4, v2
++ smlabt v4, ip, a4, v4
++ smlatt v6, lr, a4, v6
++ ldr a3, [a1, #(16*7)]
++ smlatt fp, ip, a4, fp
++
++ smlatb v1, lr, a3, v1
++ smlabb v3, lr, a3, v3
++ smlatb v5, ip, a3, v5
++ smulbb a4, ip, a3
++ smlatt v2, lr, a3, v2
++ sub v7, v7, a4
++ smlabt v4, lr, a3, v4
++ smulbt a4, ip, a3
++ smlatt v6, ip, a3, v6
++ sub fp, fp, a4
++ .endm
++
++ .align
++ .func idct_col_armv5te
++idct_col_armv5te:
++ str lr, [sp, #-4]!
++
++ idct_col
++
++ ldmfd sp!, {a3, a4}
++ adds a2, a3, v1
++ mov a2, a2, lsr #20
++ orrmi a2, a2, #0xf000
++ add ip, a4, v2
++ mov ip, ip, asr #20
++ orr a2, a2, ip, lsl #16
++ str a2, [a1]
++ subs a3, a3, v1
++ mov a2, a3, lsr #20
++ orrmi a2, a2, #0xf000
++ sub a4, a4, v2
++ mov a4, a4, asr #20
++ orr a2, a2, a4, lsl #16
++ ldmfd sp!, {a3, a4}
++ str a2, [a1, #(16*7)]
++
++ subs a2, a3, v3
++ mov a2, a2, lsr #20
++ orrmi a2, a2, #0xf000
++ sub ip, a4, v4
++ mov ip, ip, asr #20
++ orr a2, a2, ip, lsl #16
++ str a2, [a1, #(16*1)]
++ adds a3, a3, v3
++ mov a2, a3, lsr #20
++ orrmi a2, a2, #0xf000
++ add a4, a4, v4
++ mov a4, a4, asr #20
++ orr a2, a2, a4, lsl #16
++ ldmfd sp!, {a3, a4}
++ str a2, [a1, #(16*6)]
++
++ adds a2, a3, v5
++ mov a2, a2, lsr #20
++ orrmi a2, a2, #0xf000
++ add ip, a4, v6
++ mov ip, ip, asr #20
++ orr a2, a2, ip, lsl #16
++ str a2, [a1, #(16*2)]
++ subs a3, a3, v5
++ mov a2, a3, lsr #20
++ orrmi a2, a2, #0xf000
++ sub a4, a4, v6
++ mov a4, a4, asr #20
++ orr a2, a2, a4, lsl #16
++ ldmfd sp!, {a3, a4}
++ str a2, [a1, #(16*5)]
++
++ adds a2, a3, v7
++ mov a2, a2, lsr #20
++ orrmi a2, a2, #0xf000
++ add ip, a4, fp
++ mov ip, ip, asr #20
++ orr a2, a2, ip, lsl #16
++ str a2, [a1, #(16*3)]
++ subs a3, a3, v7
++ mov a2, a3, lsr #20
++ orrmi a2, a2, #0xf000
++ sub a4, a4, fp
++ mov a4, a4, asr #20
++ orr a2, a2, a4, lsl #16
++ str a2, [a1, #(16*4)]
++
++ ldr pc, [sp], #4
++ .endfunc
++
++ .align
++ .func idct_col_put_armv5te
++idct_col_put_armv5te:
++ str lr, [sp, #-4]!
++
++ idct_col
++
++ ldmfd sp!, {a3, a4}
++ ldr lr, [sp, #32]
++ add a2, a3, v1
++ movs a2, a2, asr #20
++ movmi a2, #0
++ cmp a2, #255
++ movgt a2, #255
++ add ip, a4, v2
++ movs ip, ip, asr #20
++ movmi ip, #0
++ cmp ip, #255
++ movgt ip, #255
++ orr a2, a2, ip, lsl #8
++ sub a3, a3, v1
++ movs a3, a3, asr #20
++ movmi a3, #0
++ cmp a3, #255
++ movgt a3, #255
++ sub a4, a4, v2
++ movs a4, a4, asr #20
++ movmi a4, #0
++ cmp a4, #255
++ ldr v1, [sp, #28]
++ movgt a4, #255
++ strh a2, [v1]
++ add a2, v1, #2
++ str a2, [sp, #28]
++ orr a2, a3, a4, lsl #8
++ rsb v2, lr, lr, lsl #3
++ ldmfd sp!, {a3, a4}
++ strh a2, [v2, v1]!
++
++ sub a2, a3, v3
++ movs a2, a2, asr #20
++ movmi a2, #0
++ cmp a2, #255
++ movgt a2, #255
++ sub ip, a4, v4
++ movs ip, ip, asr #20
++ movmi ip, #0
++ cmp ip, #255
++ movgt ip, #255
++ orr a2, a2, ip, lsl #8
++ strh a2, [v1, lr]!
++ add a3, a3, v3
++ movs a2, a3, asr #20
++ movmi a2, #0
++ cmp a2, #255
++ movgt a2, #255
++ add a4, a4, v4
++ movs a4, a4, asr #20
++ movmi a4, #0
++ cmp a4, #255
++ movgt a4, #255
++ orr a2, a2, a4, lsl #8
++ ldmfd sp!, {a3, a4}
++ strh a2, [v2, -lr]!
++
++ add a2, a3, v5
++ movs a2, a2, asr #20
++ movmi a2, #0
++ cmp a2, #255
++ movgt a2, #255
++ add ip, a4, v6
++ movs ip, ip, asr #20
++ movmi ip, #0
++ cmp ip, #255
++ movgt ip, #255
++ orr a2, a2, ip, lsl #8
++ strh a2, [v1, lr]!
++ sub a3, a3, v5
++ movs a2, a3, asr #20
++ movmi a2, #0
++ cmp a2, #255
++ movgt a2, #255
++ sub a4, a4, v6
++ movs a4, a4, asr #20
++ movmi a4, #0
++ cmp a4, #255
++ movgt a4, #255
++ orr a2, a2, a4, lsl #8
++ ldmfd sp!, {a3, a4}
++ strh a2, [v2, -lr]!
++
++ add a2, a3, v7
++ movs a2, a2, asr #20
++ movmi a2, #0
++ cmp a2, #255
++ movgt a2, #255
++ add ip, a4, fp
++ movs ip, ip, asr #20
++ movmi ip, #0
++ cmp ip, #255
++ movgt ip, #255
++ orr a2, a2, ip, lsl #8
++ strh a2, [v1, lr]
++ sub a3, a3, v7
++ movs a2, a3, asr #20
++ movmi a2, #0
++ cmp a2, #255
++ movgt a2, #255
++ sub a4, a4, fp
++ movs a4, a4, asr #20
++ movmi a4, #0
++ cmp a4, #255
++ movgt a4, #255
++ orr a2, a2, a4, lsl #8
++ strh a2, [v2, -lr]
++
++ ldr pc, [sp], #4
++ .endfunc
++
++ .align
++ .func idct_col_add_armv5te
++idct_col_add_armv5te:
++ str lr, [sp, #-4]!
++
++ idct_col
++
++ ldr lr, [sp, #36]
++
++ ldmfd sp!, {a3, a4}
++ ldrh ip, [lr]
++ add a2, a3, v1
++ mov a2, a2, asr #20
++ sub a3, a3, v1
++ and v1, ip, #255
++ adds a2, a2, v1
++ movmi a2, #0
++ cmp a2, #255
++ movgt a2, #255
++ add v1, a4, v2
++ mov v1, v1, asr #20
++ adds v1, v1, ip, lsr #8
++ movmi v1, #0
++ cmp v1, #255
++ movgt v1, #255
++ orr a2, a2, v1, lsl #8
++ ldr v1, [sp, #32]
++ sub a4, a4, v2
++ rsb v2, v1, v1, lsl #3
++ ldrh ip, [v2, lr]!
++ strh a2, [lr]
++ mov a3, a3, asr #20
++ and a2, ip, #255
++ adds a3, a3, a2
++ movmi a3, #0
++ cmp a3, #255
++ movgt a3, #255
++ mov a4, a4, asr #20
++ adds a4, a4, ip, lsr #8
++ movmi a4, #0
++ cmp a4, #255
++ movgt a4, #255
++ add a2, lr, #2
++ str a2, [sp, #28]
++ orr a2, a3, a4, lsl #8
++ strh a2, [v2]
++
++ ldmfd sp!, {a3, a4}
++ ldrh ip, [lr, v1]!
++ sub a2, a3, v3
++ mov a2, a2, asr #20
++ add a3, a3, v3
++ and v3, ip, #255
++ adds a2, a2, v3
++ movmi a2, #0
++ cmp a2, #255
++ movgt a2, #255
++ sub v3, a4, v4
++ mov v3, v3, asr #20
++ adds v3, v3, ip, lsr #8
++ movmi v3, #0
++ cmp v3, #255
++ movgt v3, #255
++ orr a2, a2, v3, lsl #8
++ add a4, a4, v4
++ ldrh ip, [v2, -v1]!
++ strh a2, [lr]
++ mov a3, a3, asr #20
++ and a2, ip, #255
++ adds a3, a3, a2
++ movmi a3, #0
++ cmp a3, #255
++ movgt a3, #255
++ mov a4, a4, asr #20
++ adds a4, a4, ip, lsr #8
++ movmi a4, #0
++ cmp a4, #255
++ movgt a4, #255
++ orr a2, a3, a4, lsl #8
++ strh a2, [v2]
++
++ ldmfd sp!, {a3, a4}
++ ldrh ip, [lr, v1]!
++ add a2, a3, v5
++ mov a2, a2, asr #20
++ sub a3, a3, v5
++ and v3, ip, #255
++ adds a2, a2, v3
++ movmi a2, #0
++ cmp a2, #255
++ movgt a2, #255
++ add v3, a4, v6
++ mov v3, v3, asr #20
++ adds v3, v3, ip, lsr #8
++ movmi v3, #0
++ cmp v3, #255
++ movgt v3, #255
++ orr a2, a2, v3, lsl #8
++ sub a4, a4, v6
++ ldrh ip, [v2, -v1]!
++ strh a2, [lr]
++ mov a3, a3, asr #20
++ and a2, ip, #255
++ adds a3, a3, a2
++ movmi a3, #0
++ cmp a3, #255
++ movgt a3, #255
++ mov a4, a4, asr #20
++ adds a4, a4, ip, lsr #8
++ movmi a4, #0
++ cmp a4, #255
++ movgt a4, #255
++ orr a2, a3, a4, lsl #8
++ strh a2, [v2]
++
++ ldmfd sp!, {a3, a4}
++ ldrh ip, [lr, v1]!
++ add a2, a3, v7
++ mov a2, a2, asr #20
++ sub a3, a3, v7
++ and v3, ip, #255
++ adds a2, a2, v3
++ movmi a2, #0
++ cmp a2, #255
++ movgt a2, #255
++ add v3, a4, fp
++ mov v3, v3, asr #20
++ adds v3, v3, ip, lsr #8
++ movmi v3, #0
++ cmp v3, #255
++ movgt v3, #255
++ orr a2, a2, v3, lsl #8
++ sub a4, a4, fp
++ ldrh ip, [v2, -v1]!
++ strh a2, [lr]
++ mov a3, a3, asr #20
++ and a2, ip, #255
++ adds a3, a3, a2
++ movmi a3, #0
++ cmp a3, #255
++ movgt a3, #255
++ mov a4, a4, asr #20
++ adds a4, a4, ip, lsr #8
++ movmi a4, #0
++ cmp a4, #255
++ movgt a4, #255
++ orr a2, a3, a4, lsl #8
++ strh a2, [v2]
++
++ ldr pc, [sp], #4
++ .endfunc
++
++ .align
++ .global simple_idct_armv5te
++ .func simple_idct_armv5te
++simple_idct_armv5te:
++ stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, lr}
++
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++
++ sub a1, a1, #(16*7)
++
++ bl idct_col_armv5te
++ add a1, a1, #4
++ bl idct_col_armv5te
++ add a1, a1, #4
++ bl idct_col_armv5te
++ add a1, a1, #4
++ bl idct_col_armv5te
++
++ ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc}
++ .endfunc
++
++ .align
++ .global simple_idct_add_armv5te
++ .func simple_idct_add_armv5te
++simple_idct_add_armv5te:
++ stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr}
++
++ mov a1, a3
++
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++
++ sub a1, a1, #(16*7)
++
++ bl idct_col_add_armv5te
++ add a1, a1, #4
++ bl idct_col_add_armv5te
++ add a1, a1, #4
++ bl idct_col_add_armv5te
++ add a1, a1, #4
++ bl idct_col_add_armv5te
++
++ add sp, sp, #8
++ ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc}
++ .endfunc
++
++ .align
++ .global simple_idct_put_armv5te
++ .func simple_idct_put_armv5te
++simple_idct_put_armv5te:
++ stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr}
++
++ mov a1, a3
++
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++ add a1, a1, #16
++ bl idct_row_armv5te
++
++ sub a1, a1, #(16*7)
++
++ bl idct_col_put_armv5te
++ add a1, a1, #4
++ bl idct_col_put_armv5te
++ add a1, a1, #4
++ bl idct_col_put_armv5te
++ add a1, a1, #4
++ bl idct_col_put_armv5te
++
++ add sp, sp, #8
++ ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc}
++ .endfunc
+diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/avcodec.h gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/avcodec.h
+--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/avcodec.h 2006-09-20 20:55:36.000000000 +0200
++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/avcodec.h 2007-05-01 12:23:40.000000000 +0200
+@@ -1217,6 +1217,7 @@
+ #define FF_IDCT_IPP 13
+ #define FF_IDCT_XVIDMMX 14
+ #define FF_IDCT_CAVS 15
++#define FF_IDCT_SIMPLEARMV5TE 16
+
+ /**
+ * slice count.
+diff -Nur gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/Makefile.am gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/Makefile.am
+--- gst-ffmpeg-0.10.2/gst-libs/ext/ffmpeg/libavcodec/Makefile.am 2006-09-22 06:07:23.000000000 +0200
++++ gst-ffmpeg-0.10.2.new/gst-libs/ext/ffmpeg/libavcodec/Makefile.am 2007-05-01 12:23:40.000000000 +0200
+@@ -19,7 +19,10 @@
+ if HAVE_IWMMXT
+ iwmmxt_libs = armv4l/libiwmmxt.la
+ endif
+-armv4l_libs = armv4l/libarmv4l.la $(iwmmxt_libs)
++if HAVE_ARMV5TE
++armv5te_libs = armv4l/libarmv5te.la
++endif
++armv4l_libs = armv4l/libarmv4l.la $(iwmmxt_libs) $(armv5te_libs)
+ armv4l_dirs = armv4l
+ endif
+
diff --git a/packages/gstreamer/gst-ffmpeg_0.10.2.bb b/packages/gstreamer/gst-ffmpeg_0.10.2.bb
new file mode 100644
index 0000000000..e4dfb0b701
--- /dev/null
+++ b/packages/gstreamer/gst-ffmpeg_0.10.2.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "FFmpeg-based GStreamer plug-in"
+SECTION = "multimedia"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+HOMEPAGE = "http://www.gstreamer.net/"
+DEPENDS = "gstreamer zlib"
+PR = "r1"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://gstreamer.freedesktop.org/src/${PN}/${PN}-${PV}.tar.bz2 \
+ file://armv5.patch;patch=1"
+
+FILES_${PN} += "${libdir}/gstreamer-0.10/*.so"
+FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug"
+FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a"
+
+EXTRA_OECONF = "--disable-sdltest --disable-ffplay --disable-freetypetest \
+ --disable-vorbis --disable-vorbistest --disable-encoders \
+ --disable-v4l --disable-audio-oss --disable-dv1394 \
+ --disable-vhook --disable-ffmpeg --disable-ffserver \
+ --enable-pp --disable-decoder-vorbis"
+
+# We do this because the install program is called with -s which causes it to
+# call "strip" and it then mangles cross compiled stuff..
+PATH_prepend="${CROSS_DIR}/${TARGET_SYS}/bin:"
+
+# Hack to get STAGING_LIBDIR into the linker path when building ffmpeg
+CC = "${CCACHE} ${HOST_PREFIX}gcc ${TARGET_CC_ARCH} -L${STAGING_LIBDIR}"
+
diff --git a/packages/gstreamer/gst-plugins-bad/.mtn2git_empty b/packages/gstreamer/gst-plugins-bad/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gstreamer/gst-plugins-bad/.mtn2git_empty
diff --git a/packages/gstreamer/gst-plugins-bad/cross-compile.patch b/packages/gstreamer/gst-plugins-bad/cross-compile.patch
new file mode 100644
index 0000000000..cc4d972f3e
--- /dev/null
+++ b/packages/gstreamer/gst-plugins-bad/cross-compile.patch
@@ -0,0 +1,44 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- gst-plugins-bad-0.10.3/configure.ac~cross-compile
++++ gst-plugins-bad-0.10.3/configure.ac
+@@ -398,35 +398,7 @@
+ GST_CHECK_FEATURE(FAAD, [AAC decoder plug-in], faad, [
+ HAVE_FAAD="yes"
+ GST_CHECK_LIBHEADER(FAAD, faad, faacDecOpen, -lm, faad.h,
+- FAAD_LIBS="-lfaad -lm", HAVE_FAAD="no")
+- if test $HAVE_FAAD = "yes"; then
+- AC_MSG_CHECKING([Checking for FAAD >= 2])
+- AC_TRY_RUN([
+-
+-#include <faad.h>
+-#if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
+-#error Not faad2
+-#else
+-#include <string.h>
+-
+-int main()
+-{
+-char version[9] = FAAD2_VERSION;
+-// a release candidate of 2.0 is not enought for us
+-if ( strstr( version, "2.0 RC" ) ) { return 1; }
+-
+-return 0;
+-}
+-
+-#endif
+- ], [
+- HAVE_FAAD="yes"
+- AC_MSG_RESULT(yes)
+- ], [
+- HAVE_FAAD="no"
+- AC_MSG_RESULT(no)
+- ])
+- fi
++ FAAD_LIBS="-lfaad -lm")
+ AS_SCRUB_INCLUDE(FAAD_CFLAGS)
+ AC_SUBST(FAAD_LIBS)
+ ])
diff --git a/packages/gstreamer/gst-plugins-bad_0.10.1.bb b/packages/gstreamer/gst-plugins-bad_0.10.1.bb
index 7c548acf7d..42f6df4d9d 100644
--- a/packages/gstreamer/gst-plugins-bad_0.10.1.bb
+++ b/packages/gstreamer/gst-plugins-bad_0.10.1.bb
@@ -1,2 +1,4 @@
require gst-plugins.inc
+
DEPENDS += "gst-plugins-base"
+PR = "r2"
diff --git a/packages/gstreamer/gst-plugins-bad_0.10.3.bb b/packages/gstreamer/gst-plugins-bad_0.10.3.bb
index 7c548acf7d..d8906733a5 100644
--- a/packages/gstreamer/gst-plugins-bad_0.10.3.bb
+++ b/packages/gstreamer/gst-plugins-bad_0.10.3.bb
@@ -1,2 +1,5 @@
require gst-plugins.inc
+
DEPENDS += "gst-plugins-base"
+SRC_URI += "file://cross-compile.patch;patch=1"
+PR = "r3"
diff --git a/packages/gstreamer/gst-plugins-base_0.10.11.bb b/packages/gstreamer/gst-plugins-base_0.10.11.bb
index 4286a50c61..c2f022f283 100644
--- a/packages/gstreamer/gst-plugins-base_0.10.11.bb
+++ b/packages/gstreamer/gst-plugins-base_0.10.11.bb
@@ -1,5 +1,7 @@
require gst-plugins.inc
+
PROVIDES += "gst-plugins"
+PR = "r2"
do_stage() {
autotools_stage_all
diff --git a/packages/gstreamer/gst-plugins-base_0.10.12.bb b/packages/gstreamer/gst-plugins-base_0.10.12.bb
new file mode 100644
index 0000000000..cb6b524a7c
--- /dev/null
+++ b/packages/gstreamer/gst-plugins-base_0.10.12.bb
@@ -0,0 +1,9 @@
+require gst-plugins.inc
+
+PROVIDES += "gst-plugins"
+PR = "r0"
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/gstreamer/gst-plugins-base_0.10.5.bb b/packages/gstreamer/gst-plugins-base_0.10.5.bb
index 34b5504551..afb0657964 100644
--- a/packages/gstreamer/gst-plugins-base_0.10.5.bb
+++ b/packages/gstreamer/gst-plugins-base_0.10.5.bb
@@ -1 +1,3 @@
require gst-plugins.inc
+
+PR = "r2"
diff --git a/packages/gstreamer/gst-plugins-base_0.10.6.bb b/packages/gstreamer/gst-plugins-base_0.10.6.bb
index 48e24bf756..84bd2a9fe6 100644
--- a/packages/gstreamer/gst-plugins-base_0.10.6.bb
+++ b/packages/gstreamer/gst-plugins-base_0.10.6.bb
@@ -1,2 +1,4 @@
require gst-plugins.inc
+
PROVIDES_${PN} += "gst-plugins"
+PR = "r2"
diff --git a/packages/gstreamer/gst-plugins-base_0.10.7.bb b/packages/gstreamer/gst-plugins-base_0.10.7.bb
index 4286a50c61..c2f022f283 100644
--- a/packages/gstreamer/gst-plugins-base_0.10.7.bb
+++ b/packages/gstreamer/gst-plugins-base_0.10.7.bb
@@ -1,5 +1,7 @@
require gst-plugins.inc
+
PROVIDES += "gst-plugins"
+PR = "r2"
do_stage() {
autotools_stage_all
diff --git a/packages/gstreamer/gst-plugins-good_0.10.2.bb b/packages/gstreamer/gst-plugins-good_0.10.2.bb
index 7c548acf7d..42f6df4d9d 100644
--- a/packages/gstreamer/gst-plugins-good_0.10.2.bb
+++ b/packages/gstreamer/gst-plugins-good_0.10.2.bb
@@ -1,2 +1,4 @@
require gst-plugins.inc
+
DEPENDS += "gst-plugins-base"
+PR = "r2"
diff --git a/packages/gstreamer/gst-plugins-good_0.10.4.bb b/packages/gstreamer/gst-plugins-good_0.10.4.bb
index 7c548acf7d..42f6df4d9d 100644
--- a/packages/gstreamer/gst-plugins-good_0.10.4.bb
+++ b/packages/gstreamer/gst-plugins-good_0.10.4.bb
@@ -1,2 +1,4 @@
require gst-plugins.inc
+
DEPENDS += "gst-plugins-base"
+PR = "r2"
diff --git a/packages/gstreamer/gst-plugins-good_0.10.5.bb b/packages/gstreamer/gst-plugins-good_0.10.5.bb
new file mode 100644
index 0000000000..be5dad78e7
--- /dev/null
+++ b/packages/gstreamer/gst-plugins-good_0.10.5.bb
@@ -0,0 +1,5 @@
+require gst-plugins.inc
+
+EXTRA_OECONF += "--with-check=no"
+DEPENDS += "gst-plugins-base"
+PR = "r2"
diff --git a/packages/gstreamer/gst-plugins-ugly/.mtn2git_empty b/packages/gstreamer/gst-plugins-ugly/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gstreamer/gst-plugins-ugly/.mtn2git_empty
diff --git a/packages/gstreamer/gst-plugins-ugly/cross-compile.patch b/packages/gstreamer/gst-plugins-ugly/cross-compile.patch
new file mode 100644
index 0000000000..41c412dcc4
--- /dev/null
+++ b/packages/gstreamer/gst-plugins-ugly/cross-compile.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- gst-plugins-ugly-0.10.4/configure.ac~cross-compile
++++ gst-plugins-ugly-0.10.4/configure.ac
+@@ -282,7 +282,7 @@
+ LAME_LIBS="-lmp3lame -lm"
+ dnl is lame presets available
+ LAME_CFLAGS=""
+- AC_TRY_RUN([
++ AC_TRY_COMPILE([
+ #include <lame/lame.h>
+ int main (int argc, char *argv[])
+ {
diff --git a/packages/gstreamer/gst-plugins-ugly_0.10.2.bb b/packages/gstreamer/gst-plugins-ugly_0.10.2.bb
index 7c548acf7d..42f6df4d9d 100644
--- a/packages/gstreamer/gst-plugins-ugly_0.10.2.bb
+++ b/packages/gstreamer/gst-plugins-ugly_0.10.2.bb
@@ -1,2 +1,4 @@
require gst-plugins.inc
+
DEPENDS += "gst-plugins-base"
+PR = "r2"
diff --git a/packages/gstreamer/gst-plugins-ugly_0.10.4.bb b/packages/gstreamer/gst-plugins-ugly_0.10.4.bb
index 7c548acf7d..d8906733a5 100644
--- a/packages/gstreamer/gst-plugins-ugly_0.10.4.bb
+++ b/packages/gstreamer/gst-plugins-ugly_0.10.4.bb
@@ -1,2 +1,5 @@
require gst-plugins.inc
+
DEPENDS += "gst-plugins-base"
+SRC_URI += "file://cross-compile.patch;patch=1"
+PR = "r3"
diff --git a/packages/gstreamer/gst-plugins-ugly_0.10.5.bb b/packages/gstreamer/gst-plugins-ugly_0.10.5.bb
new file mode 100644
index 0000000000..d8906733a5
--- /dev/null
+++ b/packages/gstreamer/gst-plugins-ugly_0.10.5.bb
@@ -0,0 +1,5 @@
+require gst-plugins.inc
+
+DEPENDS += "gst-plugins-base"
+SRC_URI += "file://cross-compile.patch;patch=1"
+PR = "r3"
diff --git a/packages/gstreamer/gst-plugins.inc b/packages/gstreamer/gst-plugins.inc
index 009eef67ed..b600eafcfe 100644
--- a/packages/gstreamer/gst-plugins.inc
+++ b/packages/gstreamer/gst-plugins.inc
@@ -1,19 +1,19 @@
DESCRIPTION = "Plugins for GStreamer"
SECTION = "multimedia"
PRIORITY = "optional"
-DEPENDS = "gstreamer libmikmod libmad liboil libogg tremor libvorbis libid3tag esound-gpe"
-PR = "r1"
+DEPENDS = "gstreamer libmikmod libmad liboil libogg tremor libvorbis libid3tag esound"
+
+PACKAGES_DYNAMIC = "gst-plugin-*"
# until we have decided for a final naming scheme,
# keep using version 0.8
DEFAULT_PREFERENCE = "-1"
-inherit autotools pkgconfig gconf
+inherit autotools pkgconfig
SRC_URI = "http://gstreamer.freedesktop.org/src/${PN}/${PN}-${PV}.tar.bz2"
-EXTRA_OECONF = "--disable-x --disable-aalib --disable-shout2 \
- --disable-sdl"
+EXTRA_OECONF = "--disable-aalib --disable-shout2 --disable-sdl"
acpaths = "-I ${S}/common/m4 -I ${S}/m4"
diff --git a/packages/gstreamer/gstreamer_0.10.11.bb b/packages/gstreamer/gstreamer_0.10.11.bb
index 59e224eab5..b56db69cd6 100644
--- a/packages/gstreamer/gstreamer_0.10.11.bb
+++ b/packages/gstreamer/gstreamer_0.10.11.bb
@@ -6,7 +6,6 @@ LICENSE = "LGPL"
HOMEPAGE = "http://www.gstreamer.net/"
DEPENDS = "libxml2 glib-2.0 gettext-native popt"
-PR = "r0"
# until we have decided a final naming scheme,
# don't use this package as a replacement for
# version 0.8
diff --git a/packages/gstreamer/gstreamer_0.10.12.bb b/packages/gstreamer/gstreamer_0.10.12.bb
new file mode 100644
index 0000000000..3405c065e4
--- /dev/null
+++ b/packages/gstreamer/gstreamer_0.10.12.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \
+It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime."
+SECTION = "multimedia"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+HOMEPAGE = "http://www.gstreamer.net/"
+DEPENDS = "libxml2 glib-2.0 gettext-native popt"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.bz2"
+EXTRA_OECONF = "--disable-docs-build --disable-dependency-tracking --with-check=no"
+
+do_stage() {
+ oe_runmake install prefix=${STAGING_DIR} \
+ bindir=${STAGING_BINDIR} \
+ includedir=${STAGING_INCDIR} \
+ libdir=${STAGING_LIBDIR} \
+ datadir=${STAGING_DATADIR} \
+ mandir=${STAGING_DIR}/share/man
+}
+
+FILES_${PN} += " ${libdir}/gstreamer-0.10/*.so"
+FILES_${PN}-dev += " ${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a"
diff --git a/packages/gstreamer/gstreamer_0.10.4.bb b/packages/gstreamer/gstreamer_0.10.4.bb
index fcb5ad79ba..69e7637cc6 100644
--- a/packages/gstreamer/gstreamer_0.10.4.bb
+++ b/packages/gstreamer/gstreamer_0.10.4.bb
@@ -1 +1,3 @@
require gstreamer.inc
+
+PR = "r2"
diff --git a/packages/gstreamer/gstreamer_0.10.5.bb b/packages/gstreamer/gstreamer_0.10.5.bb
index fcb5ad79ba..69e7637cc6 100644
--- a/packages/gstreamer/gstreamer_0.10.5.bb
+++ b/packages/gstreamer/gstreamer_0.10.5.bb
@@ -1 +1,3 @@
require gstreamer.inc
+
+PR = "r2"
diff --git a/packages/gstreamer/gstreamer_0.10.6.bb b/packages/gstreamer/gstreamer_0.10.6.bb
index fcb5ad79ba..69e7637cc6 100644
--- a/packages/gstreamer/gstreamer_0.10.6.bb
+++ b/packages/gstreamer/gstreamer_0.10.6.bb
@@ -1 +1,3 @@
require gstreamer.inc
+
+PR = "r2"
diff --git a/packages/gstreamer/gstreamer_0.10.8.bb b/packages/gstreamer/gstreamer_0.10.8.bb
index fcb5ad79ba..69e7637cc6 100644
--- a/packages/gstreamer/gstreamer_0.10.8.bb
+++ b/packages/gstreamer/gstreamer_0.10.8.bb
@@ -1 +1,3 @@
require gstreamer.inc
+
+PR = "r2"
diff --git a/packages/gtk+/gtk+-1.2_1.2.10.bb b/packages/gtk+/gtk+-1.2_1.2.10.bb
index 8025beb75c..b3d0a61bad 100644
--- a/packages/gtk+/gtk+-1.2_1.2.10.bb
+++ b/packages/gtk+/gtk+-1.2_1.2.10.bb
@@ -4,7 +4,7 @@ HOMEPAGE = "http://www.gtk.org"
SECTION = "libs"
PRIORITY = "optional"
DEPENDS = "glib-1.2 jpeg libpng libxext"
-PR = "r2"
+PR = "r3"
SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v1.2/gtk+-${PV}.tar.gz \
file://timezone-fix.patch;patch=1 \
@@ -48,7 +48,7 @@ do_stage () {
mkdir -p ${STAGING_LIBDIR}/gtk-1.2/include
install -m 0644 gtk.m4 ${STAGING_DATADIR}/aclocal/
- install -m 0755 gtk-config ${STAGING_BINDIR_CROSS}
+ install -m 0755 gtk-config ${STAGING_BINDIR_CROSS}/
}
do_install_append () {
diff --git a/packages/gtk+/gtk+-2.10.10/.mtn2git_empty b/packages/gtk+/gtk+-2.10.10/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.10/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-2.10.3/automake-lossage.patch b/packages/gtk+/gtk+-2.10.10/automake-lossage.patch
index 0d423ddbb9..0d423ddbb9 100644
--- a/packages/gtk+/gtk+-2.10.3/automake-lossage.patch
+++ b/packages/gtk+/gtk+-2.10.10/automake-lossage.patch
diff --git a/packages/gtk+/gtk+-2.10.3/disable-print.patch b/packages/gtk+/gtk+-2.10.10/disable-print.patch
index 1067773f12..1067773f12 100644
--- a/packages/gtk+/gtk+-2.10.3/disable-print.patch
+++ b/packages/gtk+/gtk+-2.10.10/disable-print.patch
diff --git a/packages/gtk+/gtk+-2.10.3/disable-tooltips.patch b/packages/gtk+/gtk+-2.10.10/disable-tooltips.patch
index d71d839c3c..d71d839c3c 100644
--- a/packages/gtk+/gtk+-2.10.3/disable-tooltips.patch
+++ b/packages/gtk+/gtk+-2.10.10/disable-tooltips.patch
diff --git a/packages/gtk+/gtk+-2.10.10/gnome-bug-341177.patch b/packages/gtk+/gtk+-2.10.10/gnome-bug-341177.patch
new file mode 100644
index 0000000000..c31868462a
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.10/gnome-bug-341177.patch
@@ -0,0 +1,217 @@
+diff -uprN gtk+-2.8.13.org/gdk-pixbuf/pixops/pixops.c gtk+-2.8.13.INNER_LOOP/gdk-pixbuf/pixops/pixops.c
+--- gtk+-2.8.13.org/gdk-pixbuf/pixops/pixops.c Tue Jul 12 18:58:57 2005
++++ gtk+-2.8.13.INNER_LOOP/gdk-pixbuf/pixops/pixops.c Tue May 9 17:30:53 2006
+@@ -71,35 +71,24 @@ get_check_shift (int check_size)
+ return check_shift;
+ }
+
+-static void
+-pixops_scale_nearest (guchar *dest_buf,
+- int render_x0,
+- int render_y0,
+- int render_x1,
+- int render_y1,
+- int dest_rowstride,
+- int dest_channels,
+- gboolean dest_has_alpha,
+- const guchar *src_buf,
+- int src_width,
+- int src_height,
+- int src_rowstride,
+- int src_channels,
+- gboolean src_has_alpha,
+- double scale_x,
+- double scale_y)
+-{
+- int i;
+- int x;
+- int x_step = (1 << SCALE_SHIFT) / scale_x;
+- int y_step = (1 << SCALE_SHIFT) / scale_y;
+- int xmax, xstart, xstop, x_pos, y_pos;
+- const guchar *p;
++typedef struct { guchar a,b,c; } b3;
++extern void BUG_bad_size_of_struct_b3(void);
+
+-#define INNER_LOOP(SRC_CHANNELS,DEST_CHANNELS,ASSIGN_PIXEL) \
++#define INNER_LOOP_PREP() \
++ do { \
++ x = render_x0 * x_step + x_step / 2; \
+ xmax = x + (render_x1 - render_x0) * x_step; \
+ xstart = MIN (0, xmax); \
+ xstop = MIN (src_width << SCALE_SHIFT, xmax); \
++ } while(0)
++
++#define INNER_LOOP_BODY(SRC_CHANNELS,DEST_CHANNELS,ASSIGN_PIXEL)\
++ do { \
++ y_pos = ((i + render_y0) * y_step + y_step / 2) >> SCALE_SHIFT; \
++ y_pos = CLAMP (y_pos, 0, src_height - 1); \
++ src = src_buf + y_pos * src_rowstride; \
++ dest = dest_buf + i * dest_rowstride; \
++ x = render_x0 * x_step + x_step / 2; \
+ p = src + (CLAMP (x, xstart, xstop) >> SCALE_SHIFT) * SRC_CHANNELS; \
+ while (x < xstart) \
+ { \
+@@ -121,42 +110,58 @@ pixops_scale_nearest (guchar *des
+ ASSIGN_PIXEL; \
+ dest += DEST_CHANNELS; \
+ x += x_step; \
+- }
++ } \
++ } while(0)
+
+- for (i = 0; i < (render_y1 - render_y0); i++)
+- {
+- const guchar *src;
+- guchar *dest;
+- y_pos = ((i + render_y0) * y_step + y_step / 2) >> SCALE_SHIFT;
+- y_pos = CLAMP (y_pos, 0, src_height - 1);
+- src = src_buf + y_pos * src_rowstride;
+- dest = dest_buf + i * dest_rowstride;
++static void
++pixops_scale_nearest (guchar *dest_buf,
++ int render_x0,
++ int render_y0,
++ int render_x1,
++ int render_y1,
++ int dest_rowstride,
++ int dest_channels,
++ gboolean dest_has_alpha,
++ const guchar *src_buf,
++ int src_width,
++ int src_height,
++ int src_rowstride,
++ int src_channels,
++ gboolean src_has_alpha,
++ double scale_x,
++ double scale_y)
++{
++ int i;
++ int x;
++ int x_step = (1 << SCALE_SHIFT) / scale_x;
++ int y_step = (1 << SCALE_SHIFT) / scale_y;
++ int xmax, xstart, xstop, x_pos, y_pos;
++ const guchar *p;
+
+- x = render_x0 * x_step + x_step / 2;
++ const guchar *src;
++ guchar *dest;
+
+- if (src_channels == 3)
+- {
+- if (dest_channels == 3)
+- {
+- INNER_LOOP (3, 3, dest[0]=p[0];dest[1]=p[1];dest[2]=p[2]);
+- }
+- else
+- {
+- INNER_LOOP (3, 4, dest[0]=p[0];dest[1]=p[1];dest[2]=p[2];dest[3]=0xff);
+- }
+- }
+- else if (src_channels == 4)
+- {
+- if (dest_channels == 3)
+- {
+- INNER_LOOP (4, 3, dest[0]=p[0];dest[1]=p[1];dest[2]=p[2]);
+- }
+- else
+- {
+- guint32 *p32;
+- INNER_LOOP(4, 4, p32=(guint32*)dest;*p32=*((guint32*)p));
+- }
+- }
++ if(sizeof(b3) != 3) BUG_bad_size_of_struct_b3();
++
++ INNER_LOOP_PREP();
++
++ if (src_channels == 3)
++ {
++ if (dest_channels == 3)
++ for (i = 0; i < (render_y1 - render_y0); i++)
++ INNER_LOOP_BODY (3, 3, *(b3*)dest = *(b3*)p);
++ else
++ for (i = 0; i < (render_y1 - render_y0); i++)
++ INNER_LOOP_BODY (3, 4, (*(b3*)dest = *(b3*)p, dest[3]=0xff) );
++ }
++ else if (src_channels == 4)
++ {
++ if (dest_channels == 3)
++ for (i = 0; i < (render_y1 - render_y0); i++)
++ INNER_LOOP_BODY (4, 3, *(b3*)dest = *(b3*)p);
++ else
++ for (i = 0; i < (render_y1 - render_y0); i++)
++ INNER_LOOP_BODY (4, 4, *(guint32*)dest = *((guint32*)p));
+ }
+ }
+
+@@ -187,18 +192,14 @@ pixops_composite_nearest (guchar
+ const guchar *p;
+ unsigned int a0;
+
++ INNER_LOOP_PREP();
++
+ for (i = 0; i < (render_y1 - render_y0); i++)
+ {
+ const guchar *src;
+ guchar *dest;
+- y_pos = ((i + render_y0) * y_step + y_step / 2) >> SCALE_SHIFT;
+- y_pos = CLAMP (y_pos, 0, src_height - 1);
+- src = src_buf + y_pos * src_rowstride;
+- dest = dest_buf + i * dest_rowstride;
+-
+- x = render_x0 * x_step + x_step / 2;
+
+- INNER_LOOP(src_channels, dest_channels,
++ INNER_LOOP_BODY(src_channels, dest_channels,
+ if (src_has_alpha)
+ a0 = (p[3] * overall_alpha) / 0xff;
+ else
+@@ -209,9 +210,7 @@ pixops_composite_nearest (guchar
+ case 0:
+ break;
+ case 255:
+- dest[0] = p[0];
+- dest[1] = p[1];
+- dest[2] = p[2];
++ *(b3*)dest = *(b3*)p;
+ if (dest_has_alpha)
+ dest[3] = 0xff;
+ break;
+@@ -279,17 +278,12 @@ pixops_composite_color_nearest (guchar
+ const guchar *p;
+ unsigned int a0;
+
++ INNER_LOOP_PREP();
++
+ for (i = 0; i < (render_y1 - render_y0); i++)
+ {
+ const guchar *src;
+ guchar *dest;
+- y_pos = ((i + render_y0) * y_step + y_step / 2) >> SCALE_SHIFT;
+- y_pos = CLAMP (y_pos, 0, src_height - 1);
+- src = src_buf + y_pos * src_rowstride;
+- dest = dest_buf + i * dest_rowstride;
+-
+- x = render_x0 * x_step + x_step / 2;
+-
+
+ if (((i + check_y) >> check_shift) & 1)
+ {
+@@ -313,7 +307,7 @@ pixops_composite_color_nearest (guchar
+ }
+
+ j = 0;
+- INNER_LOOP(src_channels, dest_channels,
++ INNER_LOOP_BODY(src_channels, dest_channels,
+ if (src_has_alpha)
+ a0 = (p[3] * overall_alpha + 0xff) >> 8;
+ else
+@@ -372,7 +366,8 @@ pixops_composite_color_nearest (guchar
+ );
+ }
+ }
+-#undef INNER_LOOP
++#undef INNER_LOOP_BODY
++#undef INNER_LOOP_PREP
+
+ static void
+ composite_pixel (guchar *dest, int dest_x, int dest_channels, int dest_has_alpha,
diff --git a/packages/gtk+/gtk+-2.10.6/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.10.10/gtk+-handhelds.patch
index 1ea86ce6b2..1ea86ce6b2 100644
--- a/packages/gtk+/gtk+-2.10.6/gtk+-handhelds.patch
+++ b/packages/gtk+/gtk+-2.10.10/gtk+-handhelds.patch
diff --git a/packages/gtk+/gtk+-2.10.3/gtklabel-resize-patch b/packages/gtk+/gtk+-2.10.10/gtklabel-resize-patch
index df29656343..df29656343 100644
--- a/packages/gtk+/gtk+-2.10.3/gtklabel-resize-patch
+++ b/packages/gtk+/gtk+-2.10.10/gtklabel-resize-patch
diff --git a/packages/gtk+/gtk+-2.10.10/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.10.10/hardcoded_libtool.patch
new file mode 100644
index 0000000000..6adb0cfef6
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.10/hardcoded_libtool.patch
@@ -0,0 +1,29 @@
+--- /tmp/configure.in 2007-01-08 17:50:49.000000000 +0100
++++ gtk+-2.10.7/configure.in 2007-01-08 17:52:33.495251000 +0100
+@@ -371,7 +371,7 @@
+ case $enable_explicit_deps in
+ auto)
+ export SED
+- deplibs_check_method=`(./libtool --config; echo 'eval echo $deplibs_check_method') | sh`
++ deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo $deplibs_check_method') | sh`
+ if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -773,7 +773,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./$host_alias-libtool --config"
+ pixbuf_deplibs_check=`$pixbuf_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1611,7 +1611,7 @@
+ # We are using gmodule-no-export now, but I'm leaving the stripping
+ # code in place for now, since pango and atk still require gmodule.
+ export SED
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/packages/gtk+/gtk+-2.10.10/integer-pixops.patch b/packages/gtk+/gtk+-2.10.10/integer-pixops.patch
new file mode 100644
index 0000000000..490a60dd8a
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.10/integer-pixops.patch
@@ -0,0 +1,348 @@
+--- /tmp/config.h.in 2006-12-23 00:00:38.000000000 +0100
++++ gtk+-2.10.6/config.h.in 2006-12-23 00:01:05.632227000 +0100
+@@ -253,3 +253,7 @@
+
+ /* Define to `int' if <sys/types.h> doesn't define. */
+ #undef uid_t
++
++/* Define to use integer math rather than floating point where possible. */
++#undef ENABLE_INTEGER_PIXOPS
++
+--- /tmp/configure.in 2006-12-23 00:02:16.000000000 +0100
++++ gtk+-2.10.6/configure.in 2006-12-23 00:05:11.172227000 +0100
+@@ -203,6 +203,15 @@
+ [AC_HELP_STRING([--disable-rebuilds],
+ [disable all source autogeneration rules])],,
+ [enable_rebuilds=yes])
++AC_ARG_ENABLE(integer-pixops,
++ [AC_HELP_STRING([--enable-integer-pixops],
++ [use integer math where possible])],,
++ [enable_integer_pixops=no])
++
++if test "x$enable_integer_pixops" = "xyes"; then
++ AC_DEFINE(ENABLE_INTEGER_PIXOPS)
++fi
++
+ AC_ARG_ENABLE(visibility,
+ [AC_HELP_STRING([--disable-visibility],
+ [don't use ELF visibility attributes])],,
+--- /tmp/pixops.c 2006-12-23 10:04:02.000000000 +0100
++++ gtk+-2.10.6/gdk-pixbuf/pixops/pixops.c 2006-12-23 10:04:21.772227000 +0100
+@@ -28,6 +28,10 @@
+ #define SUBSAMPLE_MASK ((1 << SUBSAMPLE_BITS)-1)
+ #define SCALE_SHIFT 16
+
++#ifdef ENABLE_INTEGER_PIXOPS
++#define FRAC 0x10000ULL
++#endif
++
+ typedef struct _PixopsFilter PixopsFilter;
+ typedef struct _PixopsFilterDimension PixopsFilterDimension;
+
+@@ -972,6 +976,29 @@
+ (*pixel_func) (dest, dest_x, dest_channels, dest_has_alpha, src_has_alpha, check_size, color1, color2, r, g, b, a);
+ }
+
++#ifdef ENABLE_INTEGER_PIXOPS
++
++static void
++correct_total (int *weights,
++ int n_x,
++ int n_y,
++ int total,
++ unsigned long overall_alpha)
++{
++ int correction = (int)(overall_alpha - total);
++ int i;
++ for (i = n_x * n_y - 1; i >= 0; i--)
++ {
++ if (*(weights + i) + correction >= 0)
++ {
++ *(weights + i) += correction;
++ break;
++ }
++ }
++}
++
++#else
++
+ static void
+ correct_total (int *weights,
+ int n_x,
+@@ -998,6 +1025,8 @@
+ }
+ }
+
++#endif
++
+ static int *
+ make_filter_table (PixopsFilter *filter)
+ {
+@@ -1026,7 +1055,11 @@
+ *(pixel_weights + n_x * i + j) = weight;
+ }
+
+- correct_total (pixel_weights, n_x, n_y, total, filter->overall_alpha);
++#ifdef ENABLE_INTEGER_PIXOPS
++ correct_total (pixel_weights, n_x, n_y, total, overall_alpha * FRAC);
++#else
++ correct_total (pixel_weights, n_x, n_y, total, overall_alpha);
++#endif
+ }
+
+ return weights;
+@@ -1178,6 +1211,93 @@
+ /* Compute weights for reconstruction by replication followed by
+ * sampling with a box filter
+ */
++#ifdef ENABLE_INTEGER_PIXOPS
++
++static void
++tile_make_weights (PixopsFilter *filter, double x_scale_d, double y_scale_d, double overall_alpha_d)
++{
++ int i_offset, j_offset;
++ unsigned long x_scale = x_scale_d * FRAC;
++ unsigned long y_scale = y_scale_d * FRAC;
++ unsigned long overall_alpha = overall_alpha_d * FRAC;
++ unsigned long x_scale_r = FRAC / x_scale;
++ unsigned long y_scale_r = FRAC / y_scale;
++
++ int n_x = ceil(1/x_scale_d + 1);
++ int n_y = ceil(1/y_scale_d + 1);
++
++ filter->x_offset = 0;
++ filter->y_offset = 0;
++ filter->n_x = n_x;
++ filter->n_y = n_y;
++ filter->weights = g_new (int, SUBSAMPLE * SUBSAMPLE * n_x * n_y);
++
++ for (i_offset=0; i_offset<SUBSAMPLE; i_offset++)
++ for (j_offset=0; j_offset<SUBSAMPLE; j_offset++)
++ {
++ int *pixel_weights = filter->weights + ((i_offset*SUBSAMPLE) + j_offset) * n_x * n_y;
++ unsigned long x = j_offset * FRAC / SUBSAMPLE;
++ unsigned long y = i_offset * FRAC / SUBSAMPLE;
++ int i,j;
++ int total = 0;
++
++ for (i = 0; i < n_y; i++)
++ {
++ unsigned long tw, th;
++
++ if (i < y)
++ {
++
++ if (i + FRAC > y)
++ th = MIN(i+FRAC, y + y_scale_r) - y;
++ else
++ th = 0;
++ }
++ else
++ {
++ if (y + FRAC/y_scale > i)
++ th = MIN(i+FRAC, y + y_scale_r) - i;
++ else
++ th = 0;
++ }
++
++ for (j = 0; j < n_x; j++)
++ {
++ int weight;
++
++ if (j < x)
++ {
++ if (j + FRAC > x)
++ tw = MIN(j+FRAC, x + x_scale_r) - x;
++ else
++ tw = 0;
++ }
++ else
++ {
++ if (x + FRAC/x_scale > j)
++ tw = MIN(j+FRAC, x + x_scale_r) - j;
++ else
++ tw = 0;
++ }
++
++ {
++ unsigned long lweight = (tw * x_scale) / FRAC;
++ lweight = (lweight * th) / FRAC;
++ lweight = (lweight * y_scale) / FRAC;
++ lweight = (lweight * overall_alpha) / FRAC;
++ weight = lweight;
++ }
++ total += weight;
++ *(pixel_weights + n_x * i + j) = weight;
++ }
++ }
++
++ correct_total (pixel_weights, n_x, n_y, total, overall_alpha);
++ }
++}
++
++#else
++
+ static void
+ tile_make_weights (PixopsFilterDimension *dim,
+ double scale)
+@@ -1216,10 +1336,151 @@
+ }
+ }
+
++#endif
++
+ /* Compute weights for a filter that, for minification
+ * is the same as 'tiles', and for magnification, is bilinear
+ * reconstruction followed by a sampling with a delta function.
+ */
++#ifdef ENABLE_INTEGER_PIXOPS
++
++static void
++bilinear_magnify_make_weights (PixopsFilter *filter, double x_scale_d, double y_scale_d, double overall_alpha_d)
++{
++ int i_offset, j_offset;
++ unsigned long *x_weights, *y_weights;
++ int n_x, n_y;
++ unsigned long x_scale = x_scale_d * FRAC;
++ unsigned long y_scale = y_scale_d * FRAC;
++ unsigned long overall_alpha = overall_alpha_d * FRAC;
++ unsigned long x_scale_r = (FRAC / x_scale_d);
++ unsigned long y_scale_r = (FRAC / y_scale_d);
++
++ if (x_scale > FRAC) /* Bilinear */
++ {
++ n_x = 2;
++ filter->x_offset = 0.5 * (1/x_scale_d - 1);
++ }
++ else /* Tile */
++ {
++ n_x = ceil(1.0 + 1.0/x_scale_d);
++ filter->x_offset = 0.0;
++ }
++
++ if (y_scale > FRAC) /* Bilinear */
++ {
++ n_y = 2;
++ filter->y_offset = 0.5 * (1/y_scale_d - 1);
++ }
++ else /* Tile */
++ {
++ n_y = ceil(1.0 + 1.0/y_scale_d);
++ filter->y_offset = 0.0;
++ }
++
++ filter->n_y = n_y;
++ filter->n_x = n_x;
++ filter->weights = g_new (int, SUBSAMPLE * SUBSAMPLE * n_x * n_y);
++
++ x_weights = g_new (unsigned long, n_x);
++ y_weights = g_new (unsigned long, n_y);
++
++ for (i_offset=0; i_offset<SUBSAMPLE; i_offset++)
++ for (j_offset=0; j_offset<SUBSAMPLE; j_offset++)
++ {
++ int *pixel_weights = filter->weights + ((i_offset*SUBSAMPLE) + j_offset) * n_x * n_y;
++ unsigned long x = j_offset * FRAC / SUBSAMPLE;
++ unsigned long y = i_offset * FRAC / SUBSAMPLE;
++ int i,j;
++ int total = 0;
++
++ if (x_scale > FRAC) /* Bilinear */
++ {
++ for (i = 0; i < n_x; i++)
++ {
++ /* x_weights[i] = ((i == 0) ? (1 - x) : x) / x_scale; */
++ unsigned long w = (((i == 0) ? (FRAC - x) : x) * x_scale_r);
++ x_weights[i] = w / FRAC;
++ }
++ }
++ else /* Tile */
++ {
++ /* x
++ * ---------|--.-|----|--.-|------- SRC
++ * ------------|---------|--------- DEST
++ */
++ for (i = 0; i < n_x; i++)
++ {
++ if (i < x)
++ {
++ if (i + 1 > x)
++ x_weights[i] = MIN(FRAC*(i+1), FRAC * x + (((unsigned long long)(FRAC * FRAC)) / (unsigned long)x_scale)) - (x * FRAC);
++ else
++ x_weights[i] = 0;
++ }
++ else
++ {
++ if (x + 1/x_scale > i)
++ x_weights[i] = MIN(FRAC*(i+1), FRAC * x + (((unsigned long long)(FRAC * FRAC)) / (unsigned long)x_scale)) - (i * FRAC);
++ else
++ x_weights[i] = 0;
++ }
++ }
++ }
++
++ if (y_scale > FRAC) /* Bilinear */
++ {
++ for (i = 0; i < n_y; i++)
++ {
++ unsigned long w = ((unsigned long)((i == 0) ? (FRAC - y) : y) * y_scale_r);
++ y_weights[i] = w / FRAC;
++ }
++ }
++ else /* Tile */
++ {
++ /* y
++ * ---------|--.-|----|--.-|------- SRC
++ * ------------|---------|--------- DEST
++ */
++ for (i = 0; i < n_y; i++)
++ {
++ if (i < y)
++ {
++ if (i + 1 > y)
++ y_weights[i] = MIN(FRAC*(i+1), FRAC * y + (FRAC * FRAC / (unsigned long)y_scale)) - (y * FRAC);
++ else
++ y_weights[i] = 0;
++ }
++ else
++ {
++ if (y + 1/y_scale > i)
++ y_weights[i] = MIN(FRAC*(i+1), FRAC * y + (FRAC * FRAC / (unsigned long)y_scale)) - (i * FRAC);
++ else
++ y_weights[i] = 0;
++ }
++ }
++ }
++
++ for (i = 0; i < n_y; i++)
++ for (j = 0; j < n_x; j++)
++ {
++ unsigned long long weight = (x_weights[j] * x_scale) / FRAC;
++ weight = (weight * y_weights[i]) / FRAC;
++ weight = (weight * y_scale) / FRAC;
++ weight = (weight * overall_alpha) / FRAC;
++ *(pixel_weights + n_x * i + j) = (unsigned long)weight;
++ total += (unsigned long)weight;
++ }
++
++ correct_total (pixel_weights, n_x, n_y, total, overall_alpha);
++ }
++
++ g_free (x_weights);
++ g_free (y_weights);
++}
++
++#else
++
+ static void
+ bilinear_magnify_make_weights (PixopsFilterDimension *dim,
+ double scale)
+@@ -1283,6 +1544,8 @@
+ }
+ }
+
++#endif
++
+ /* Computes the integral from b0 to b1 of
+ *
+ * f(x) = x; 0 <= x < 1
diff --git a/packages/gtk+/gtk+-2.10.3/menu-deactivate.patch b/packages/gtk+/gtk+-2.10.10/menu-deactivate.patch
index cfb8849e9f..cfb8849e9f 100644
--- a/packages/gtk+/gtk+-2.10.3/menu-deactivate.patch
+++ b/packages/gtk+/gtk+-2.10.10/menu-deactivate.patch
diff --git a/packages/gtk+/gtk+-2.10.6/migration.patch b/packages/gtk+/gtk+-2.10.10/migration.patch
index 4ee786e688..4ee786e688 100644
--- a/packages/gtk+/gtk+-2.10.6/migration.patch
+++ b/packages/gtk+/gtk+-2.10.10/migration.patch
diff --git a/packages/gtk+/gtk+-2.10.3/no-demos.patch b/packages/gtk+/gtk+-2.10.10/no-demos.patch
index 0fc4c48d1a..0fc4c48d1a 100644
--- a/packages/gtk+/gtk+-2.10.3/no-demos.patch
+++ b/packages/gtk+/gtk+-2.10.10/no-demos.patch
diff --git a/packages/gtk+/gtk+-2.10.3/no-xwc.patch b/packages/gtk+/gtk+-2.10.10/no-xwc.patch
index affb4a303e..affb4a303e 100644
--- a/packages/gtk+/gtk+-2.10.3/no-xwc.patch
+++ b/packages/gtk+/gtk+-2.10.10/no-xwc.patch
diff --git a/packages/gtk+/gtk+-2.10.10/plana-pixops.patch b/packages/gtk+/gtk+-2.10.10/plana-pixops.patch
new file mode 100644
index 0000000000..21fe4879c5
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.10/plana-pixops.patch
@@ -0,0 +1,569 @@
+diff -urN gtk+-2.10.9.orig/config.h.in gtk+-2.10.9-integer-pixops/config.h.in
+--- gtk+-2.10.9.orig/config.h.in 2007-01-22 09:01:23.000000000 -0700
++++ gtk+-2.10.9-integer-pixops/config.h.in 2007-02-10 12:15:39.000000000 -0700
+@@ -259,3 +259,7 @@
+
+ /* Define to `int' if <sys/types.h> doesn't define. */
+ #undef uid_t
++
++/* Define to use integer math rather than floating point where possible. */
++#undef ENABLE_INTEGER_PIXOPS
++
+diff -urN gtk+-2.10.9.orig/configure.in gtk+-2.10.9-integer-pixops/configure.in
+--- gtk+-2.10.9.orig/configure.in 2007-01-22 08:59:41.000000000 -0700
++++ gtk+-2.10.9-integer-pixops/configure.in 2007-02-10 12:15:39.000000000 -0700
+@@ -203,6 +203,15 @@
+ [AC_HELP_STRING([--disable-rebuilds],
+ [disable all source autogeneration rules])],,
+ [enable_rebuilds=yes])
++AC_ARG_ENABLE(integer-pixops,
++ [AC_HELP_STRING([--enable-integer-pixops],
++ [use integer math where possible])],,
++ [enable_integer_pixops=no])
++
++if test "x$enable_integer_pixops" = "xyes"; then
++ AC_DEFINE(ENABLE_INTEGER_PIXOPS)
++fi
++
+ AC_ARG_ENABLE(visibility,
+ [AC_HELP_STRING([--disable-visibility],
+ [don't use ELF visibility attributes])],,
+diff -urN gtk+-2.10.9.orig/gdk-pixbuf/pixops/pixops.c gtk+-2.10.9-integer-pixops/gdk-pixbuf/pixops/pixops.c
+--- gtk+-2.10.9.orig/gdk-pixbuf/pixops/pixops.c 2007-01-22 08:50:43.000000000 -0700
++++ gtk+-2.10.9-integer-pixops/gdk-pixbuf/pixops/pixops.c 2007-02-12 01:00:23.000000000 -0700
+@@ -28,21 +28,42 @@
+ #define SUBSAMPLE_MASK ((1 << SUBSAMPLE_BITS)-1)
+ #define SCALE_SHIFT 16
+
++/* TODO: Add a FLOOR() and CEIL() macro to handle normalized values) */
++/* TODO: Get rid of standard C numeric types (ie. int). Replace with glib types */
++#ifdef ENABLE_INTEGER_PIXOPS
++/* The bigger the value of FRAC is, the better the accuracy. Be wary of
++ overflows, though */
++#define FRAC 0x10000ULL
++#define NORMALIZE(d) (d * FRAC)
++#define UNNORMALIZE(t,i) ((t)(i) / FRAC)
++#define FLOOR(i) (int)((i) / FRAC)
++#define CEIL(i) (((i) - 1) / FRAC + 1)
++#define DOUBLE_TYPE gint32
++#define BIG_DOUBLE_TYPE gint64
++#else
++#define NORMALIZE(d) (d)
++#define UNNORMALIZE(t,i) (t)(i)
++#define FLOOR(i) floor(i)
++#define CEIL(i) ceil(i)
++#define DOUBLE_TYPE double
++#define BIG_DOUBLE_TYPE double
++#endif
++
+ typedef struct _PixopsFilter PixopsFilter;
+ typedef struct _PixopsFilterDimension PixopsFilterDimension;
+
+ struct _PixopsFilterDimension
+ {
+ int n;
+- double offset;
+- double *weights;
++ BIG_DOUBLE_TYPE offset;
++ DOUBLE_TYPE *weights;
+ };
+
+ struct _PixopsFilter
+ {
+ PixopsFilterDimension x;
+ PixopsFilterDimension y;
+- double overall_alpha;
++ gint32 overall_alpha; /* Normalized: alpha * 255; Not sure why original devs chose 255 */
+ };
+
+ typedef guchar *(*PixopsLineFunc) (int *weights, int n_x, int n_y,
+@@ -86,13 +107,13 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y)
++ DOUBLE_TYPE scale_x,
++ DOUBLE_TYPE scale_y)
+ {
+ int i;
+ int x;
+- int x_step = (1 << SCALE_SHIFT) / scale_x;
+- int y_step = (1 << SCALE_SHIFT) / scale_y;
++ int x_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_x;
++ int y_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_y;
+ int xmax, xstart, xstop, x_pos, y_pos;
+ const guchar *p;
+
+@@ -175,14 +196,14 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y,
++ DOUBLE_TYPE scale_x,
++ DOUBLE_TYPE scale_y,
+ int overall_alpha)
+ {
+ int i;
+ int x;
+- int x_step = (1 << SCALE_SHIFT) / scale_x;
+- int y_step = (1 << SCALE_SHIFT) / scale_y;
++ int x_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_x;
++ int y_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_y;
+ int xmax, xstart, xstop, x_pos, y_pos;
+ const guchar *p;
+ unsigned int a0;
+@@ -260,8 +281,8 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y,
++ DOUBLE_TYPE scale_x,
++ DOUBLE_TYPE scale_y,
+ int overall_alpha,
+ int check_x,
+ int check_y,
+@@ -271,8 +292,8 @@
+ {
+ int i, j;
+ int x;
+- int x_step = (1 << SCALE_SHIFT) / scale_x;
+- int y_step = (1 << SCALE_SHIFT) / scale_y;
++ int x_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_x;
++ int y_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_y;
+ int r1, g1, b1, r2, g2, b2;
+ int check_shift = get_check_shift (check_size);
+ int xmax, xstart, xstop, x_pos, y_pos;
+@@ -977,9 +998,9 @@
+ int n_x,
+ int n_y,
+ int total,
+- double overall_alpha)
++ gint32 overall_alpha)
+ {
+- int correction = (int)(0.5 + 65536 * overall_alpha) - total;
++ int correction = (int)(0.5 + 65536 / 255 * overall_alpha) - total;
+ int remaining, c, d, i;
+
+ if (correction != 0)
+@@ -1009,7 +1030,7 @@
+ for (i_offset=0; i_offset < SUBSAMPLE; i_offset++)
+ for (j_offset=0; j_offset < SUBSAMPLE; j_offset++)
+ {
+- double weight;
++ DOUBLE_TYPE weight;
+ int *pixel_weights = weights + ((i_offset*SUBSAMPLE) + j_offset) * n_x * n_y;
+ int total = 0;
+ int i, j;
+@@ -1017,13 +1038,15 @@
+ for (i=0; i < n_y; i++)
+ for (j=0; j < n_x; j++)
+ {
+- weight = filter->x.weights[(j_offset * n_x) + j] *
++ weight = UNNORMALIZE(DOUBLE_TYPE, filter->x.weights[(j_offset * n_x) + j] *
+ filter->y.weights[(i_offset * n_y) + i] *
+- filter->overall_alpha * 65536 + 0.5;
++ filter->overall_alpha * 65536 / 255) + NORMALIZE(0.5);
++ /* Wonder how I should treat the "+ 0.5" for scientific
++ rouding off */
+
+- total += (int)weight;
++ total += UNNORMALIZE(int, weight);
+
+- *(pixel_weights + n_x * i + j) = weight;
++ *(pixel_weights + n_x * i + j) = UNNORMALIZE(int, weight);
+ }
+
+ correct_total (pixel_weights, n_x, n_y, total, filter->overall_alpha);
+@@ -1047,8 +1070,8 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y,
++ DOUBLE_TYPE scale_x,
++ DOUBLE_TYPE scale_y,
+ int check_x,
+ int check_y,
+ int check_size,
+@@ -1064,12 +1087,13 @@
+ guchar **line_bufs = g_new (guchar *, filter->y.n);
+ int *filter_weights = make_filter_table (filter);
+
+- int x_step = (1 << SCALE_SHIFT) / scale_x; /* X step in source (fixed point) */
+- int y_step = (1 << SCALE_SHIFT) / scale_y; /* Y step in source (fixed point) */
++ int x_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_x; /* X step in source (fixed point) */
++ int y_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_y; /* Y step in source (fixed point) */
+
+ int check_shift = check_size ? get_check_shift (check_size) : 0;
+
+- int scaled_x_offset = floor (filter->x.offset * (1 << SCALE_SHIFT));
++ /* Possible overflow when scale-shifting which is why offset is BIG_DOUBLE_TYPE */
++ int scaled_x_offset = FLOOR(filter->x.offset * (1 << SCALE_SHIFT));
+
+ /* Compute the index where we run off the end of the source buffer. The furthest
+ * source pixel we access at index i is:
+@@ -1087,7 +1111,7 @@
+ int run_end_index = MYDIV (run_end_x + x_step - 1, x_step) - render_x0;
+ run_end_index = MIN (run_end_index, render_x1 - render_x0);
+
+- y = render_y0 * y_step + floor (filter->y.offset * (1 << SCALE_SHIFT));
++ y = render_y0 * y_step + FLOOR(filter->y.offset * (1 << SCALE_SHIFT));
+ for (i = 0; i < (render_y1 - render_y0); i++)
+ {
+ int dest_x;
+@@ -1180,37 +1204,37 @@
+ */
+ static void
+ tile_make_weights (PixopsFilterDimension *dim,
+- double scale)
++ DOUBLE_TYPE scale)
+ {
+- int n = ceil (1 / scale + 1);
+- double *pixel_weights = g_new (double, SUBSAMPLE * n);
++ int n = CEIL(NORMALIZE(NORMALIZE(1)) / scale + NORMALIZE(1)); /* Another possible overflow */
++ DOUBLE_TYPE *pixel_weights = g_new (DOUBLE_TYPE, SUBSAMPLE * n);
+ int offset;
+ int i;
+-
++
+ dim->n = n;
+- dim->offset = 0;
++ dim->offset = NORMALIZE(0);
+ dim->weights = pixel_weights;
+
+ for (offset = 0; offset < SUBSAMPLE; offset++)
+ {
+- double x = (double)offset / SUBSAMPLE;
+- double a = x + 1 / scale;
++ DOUBLE_TYPE x = (DOUBLE_TYPE)NORMALIZE(offset) / SUBSAMPLE;
++ DOUBLE_TYPE a = x + NORMALIZE(NORMALIZE(1)) / scale;
+
+ for (i = 0; i < n; i++)
+ {
+- if (i < x)
++ if (NORMALIZE(i) < x)
+ {
+- if (i + 1 > x)
+- *(pixel_weights++) = (MIN (i + 1, a) - x) * scale;
++ if (NORMALIZE(i + 1) > x)
++ *(pixel_weights++) = UNNORMALIZE(DOUBLE_TYPE, (MIN(NORMALIZE(i + 1), a) - x) * scale);
+ else
+- *(pixel_weights++) = 0;
++ *(pixel_weights++) = NORMALIZE(0);
+ }
+ else
+ {
+- if (a > i)
+- *(pixel_weights++) = (MIN (i + 1, a) - i) * scale;
++ if (a > NORMALIZE(i))
++ *(pixel_weights++) = UNNORMALIZE(DOUBLE_TYPE, (MIN(NORMALIZE(i + 1), a) - i) * scale);
+ else
+- *(pixel_weights++) = 0;
++ *(pixel_weights++) = NORMALIZE(0);
+ }
+ }
+ }
+@@ -1222,41 +1246,44 @@
+ */
+ static void
+ bilinear_magnify_make_weights (PixopsFilterDimension *dim,
+- double scale)
++ DOUBLE_TYPE scale)
+ {
+- double *pixel_weights;
++ DOUBLE_TYPE *pixel_weights;
+ int n;
+ int offset;
+ int i;
+
+- if (scale > 1.0) /* Linear */
++ if (scale > NORMALIZE(1.0)) /* Linear */
+ {
+ n = 2;
+- dim->offset = 0.5 * (1 / scale - 1);
++ dim->offset = NORMALIZE(NORMALIZE(0.5) / (scale - NORMALIZE(1)));
+ }
+ else /* Tile */
+ {
+- n = ceil (1.0 + 1.0 / scale);
+- dim->offset = 0.0;
++ n = CEIL(NORMALIZE(1.0) + NORMALIZE(NORMALIZE(1.0)) / scale);
++ dim->offset = NORMALIZE(0.0);
+ }
+-
++
+ dim->n = n;
+- dim->weights = g_new (double, SUBSAMPLE * n);
++ dim->weights = g_new (DOUBLE_TYPE, SUBSAMPLE * n);
+
+ pixel_weights = dim->weights;
+
+ for (offset=0; offset < SUBSAMPLE; offset++)
+ {
+- double x = (double)offset / SUBSAMPLE;
++ DOUBLE_TYPE x = (DOUBLE_TYPE)NORMALIZE(offset) / SUBSAMPLE;
+
+- if (scale > 1.0) /* Linear */
++ if (scale > NORMALIZE(1.0)) /* Linear */
+ {
+ for (i = 0; i < n; i++)
+- *(pixel_weights++) = (((i == 0) ? (1 - x) : x) / scale) * scale;
++ /* In the original, what is the point of dividing by scale then multiplying by scale? */
++ /* *(pixel_weights++) = (((i == 0) ? (1 - x) : x) / scale) * scale;*/
++ /* *(pixel_weights++) = i == 0 ? NORMALIZE(1) - x : x; */
++ *(pixel_weights++) = (((i == 0) ? NORMALIZE(1) - x : x) / scale) * scale;
+ }
+ else /* Tile */
+ {
+- double a = x + 1 / scale;
++ DOUBLE_TYPE a = x + NORMALIZE(NORMALIZE(1)) / scale;
+
+ /* x
+ * ---------|--.-|----|--.-|------- SRC
+@@ -1264,19 +1291,19 @@
+ */
+ for (i = 0; i < n; i++)
+ {
+- if (i < x)
++ if (NORMALIZE(i) < x)
+ {
+- if (i + 1 > x)
+- *(pixel_weights++) = (MIN (i + 1, a) - x) * scale;
++ if (NORMALIZE(i + 1) > x)
++ *(pixel_weights++) = UNNORMALIZE(DOUBLE_TYPE, (MIN(NORMALIZE(i + 1), a) - x) * scale);
+ else
+- *(pixel_weights++) = 0;
++ *(pixel_weights++) = NORMALIZE(0);
+ }
+ else
+ {
+- if (a > i)
+- *(pixel_weights++) = (MIN (i + 1, a) - i) * scale;
++ if (a > NORMALIZE(i))
++ *(pixel_weights++) = UNNORMALIZE(DOUBLE_TYPE, (MIN(NORMALIZE(i + 1), a) - i) * scale);
+ else
+- *(pixel_weights++) = 0;
++ *(pixel_weights++) = NORMALIZE(0);
+ }
+ }
+ }
+@@ -1291,14 +1318,14 @@
+ * We combine two of these to compute the convolution of
+ * a box filter with a triangular spike.
+ */
+-static double
+-linear_box_half (double b0, double b1)
++static DOUBLE_TYPE
++linear_box_half (DOUBLE_TYPE b0, DOUBLE_TYPE b1)
+ {
+- double a0, a1;
+- double x0, x1;
++ DOUBLE_TYPE a0, a1;
++ DOUBLE_TYPE x0, x1;
+
+- a0 = 0.;
+- a1 = 1.;
++ a0 = NORMALIZE(0.);
++ a1 = NORMALIZE(1.);
+
+ if (a0 < b0)
+ {
+@@ -1308,7 +1335,7 @@
+ x1 = MIN (a1, b1);
+ }
+ else
+- return 0;
++ return NORMALIZE(0);
+ }
+ else
+ {
+@@ -1318,10 +1345,10 @@
+ x1 = MIN (a1, b1);
+ }
+ else
+- return 0;
++ return NORMALIZE(0);
+ }
+
+- return 0.5 * (x1*x1 - x0*x0);
++ return UNNORMALIZE(DOUBLE_TYPE, NORMALIZE(0.5) * UNNORMALIZE(DOUBLE_TYPE, (x1*x1 - x0*x0)));
+ }
+
+ /* Compute weights for reconstructing with bilinear
+@@ -1329,28 +1356,28 @@
+ */
+ static void
+ bilinear_box_make_weights (PixopsFilterDimension *dim,
+- double scale)
++ DOUBLE_TYPE scale)
+ {
+- int n = ceil (1/scale + 3.0);
+- double *pixel_weights = g_new (double, SUBSAMPLE * n);
+- double w;
++ int n = CEIL(NORMALIZE(NORMALIZE(1))/scale + NORMALIZE(3.0));
++ DOUBLE_TYPE *pixel_weights = g_new (DOUBLE_TYPE, SUBSAMPLE * n);
++ DOUBLE_TYPE w;
+ int offset, i;
+
+- dim->offset = -1.0;
++ dim->offset = NORMALIZE(-1.0);
+ dim->n = n;
+ dim->weights = pixel_weights;
+
+ for (offset = 0; offset < SUBSAMPLE; offset++)
+ {
+- double x = (double)offset / SUBSAMPLE;
+- double a = x + 1 / scale;
++ DOUBLE_TYPE x = (DOUBLE_TYPE)NORMALIZE(offset) / SUBSAMPLE;
++ DOUBLE_TYPE a = x + NORMALIZE(NORMALIZE(1)) / scale;
+
+ for (i = 0; i < n; i++)
+ {
+- w = linear_box_half (0.5 + i - a, 0.5 + i - x);
+- w += linear_box_half (1.5 + x - i, 1.5 + a - i);
++ w = linear_box_half (NORMALIZE(0.5) + NORMALIZE(i) - a, NORMALIZE(0.5) + NORMALIZE(i) - x);
++ w += linear_box_half (NORMALIZE(1.5) - NORMALIZE(i) + x, NORMALIZE(1.5) - NORMALIZE(i) + a);
+
+- *(pixel_weights++) = w * scale;
++ *(pixel_weights++) = UNNORMALIZE(DOUBLE_TYPE, w * scale);
+ }
+ }
+ }
+@@ -1358,8 +1385,8 @@
+ static void
+ make_weights (PixopsFilter *filter,
+ PixopsInterpType interp_type,
+- double scale_x,
+- double scale_y)
++ DOUBLE_TYPE scale_x,
++ DOUBLE_TYPE scale_y)
+ {
+ switch (interp_type)
+ {
+@@ -1399,8 +1426,8 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y,
++ double scale_x_d,
++ double scale_y_d,
+ PixopsInterpType interp_type,
+ int overall_alpha,
+ int check_x,
+@@ -1409,6 +1436,8 @@
+ guint32 color1,
+ guint32 color2)
+ {
++ DOUBLE_TYPE scale_x = NORMALIZE(scale_x_d);
++ DOUBLE_TYPE scale_y = NORMALIZE(scale_y_d);
+ PixopsFilter filter;
+ PixopsLineFunc line_func;
+
+@@ -1419,7 +1448,7 @@
+ g_return_if_fail (!(dest_channels == 3 && dest_has_alpha));
+ g_return_if_fail (!(src_channels == 3 && src_has_alpha));
+
+- if (scale_x == 0 || scale_y == 0)
++ if (scale_x == NORMALIZE(0) || scale_y == NORMALIZE(0))
+ return;
+
+ if (!src_has_alpha && overall_alpha == 255)
+@@ -1427,7 +1456,7 @@
+ _pixops_scale (dest_buf, render_x0, render_y0, render_x1, render_y1,
+ dest_rowstride, dest_channels, dest_has_alpha,
+ src_buf, src_width, src_height, src_rowstride, src_channels,
+- src_has_alpha, scale_x, scale_y, interp_type);
++ src_has_alpha, UNNORMALIZE(double, scale_x), UNNORMALIZE(double, scale_y), interp_type);
+ return;
+ }
+
+@@ -1441,7 +1470,8 @@
+ return;
+ }
+
+- filter.overall_alpha = overall_alpha / 255.;
++ /* filter.overall_alpha = overall_alpha / 255.; /* Why is it 255 instead of 256? */
++ filter.overall_alpha = overall_alpha;
+ make_weights (&filter, interp_type, scale_x, scale_y);
+
+ #ifdef USE_MMX
+@@ -1501,11 +1531,13 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y,
++ double scale_x_d,
++ double scale_y_d,
+ PixopsInterpType interp_type,
+ int overall_alpha)
+ {
++ DOUBLE_TYPE scale_x = NORMALIZE(scale_x_d);
++ DOUBLE_TYPE scale_y = NORMALIZE(scale_y_d);
+ PixopsFilter filter;
+ PixopsLineFunc line_func;
+
+@@ -1516,7 +1548,7 @@
+ g_return_if_fail (!(dest_channels == 3 && dest_has_alpha));
+ g_return_if_fail (!(src_channels == 3 && src_has_alpha));
+
+- if (scale_x == 0 || scale_y == 0)
++ if (scale_x == NORMALIZE(0) || scale_y == NORMALIZE(0))
+ return;
+
+ if (!src_has_alpha && overall_alpha == 255)
+@@ -1524,7 +1556,7 @@
+ _pixops_scale (dest_buf, render_x0, render_y0, render_x1, render_y1,
+ dest_rowstride, dest_channels, dest_has_alpha,
+ src_buf, src_width, src_height, src_rowstride, src_channels,
+- src_has_alpha, scale_x, scale_y, interp_type);
++ src_has_alpha, UNNORMALIZE(double, scale_x), UNNORMALIZE(double, scale_y), interp_type);
+ return;
+ }
+
+@@ -1537,7 +1569,7 @@
+ return;
+ }
+
+- filter.overall_alpha = overall_alpha / 255.;
++ filter.overall_alpha = overall_alpha;
+ make_weights (&filter, interp_type, scale_x, scale_y);
+
+ if (filter.x.n == 2 && filter.y.n == 2 &&
+@@ -1578,10 +1610,12 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y,
++ double scale_x_d,
++ double scale_y_d,
+ PixopsInterpType interp_type)
+ {
++ DOUBLE_TYPE scale_x = NORMALIZE(scale_x_d);
++ DOUBLE_TYPE scale_y = NORMALIZE(scale_y_d);
+ PixopsFilter filter;
+ PixopsLineFunc line_func;
+
+@@ -1593,7 +1627,7 @@
+ g_return_if_fail (!(src_channels == 3 && src_has_alpha));
+ g_return_if_fail (!(src_has_alpha && !dest_has_alpha));
+
+- if (scale_x == 0 || scale_y == 0)
++ if (scale_x == NORMALIZE(0) || scale_y == NORMALIZE(0))
+ return;
+
+ if (interp_type == PIXOPS_INTERP_NEAREST)
+@@ -1605,7 +1639,7 @@
+ return;
+ }
+
+- filter.overall_alpha = 1.0;
++ filter.overall_alpha = 255;
+ make_weights (&filter, interp_type, scale_x, scale_y);
+
+ if (filter.x.n == 2 && filter.y.n == 2 && dest_channels == 3 && src_channels == 3)
diff --git a/packages/gtk+/gtk+-2.10.10/run-iconcache.patch b/packages/gtk+/gtk+-2.10.10/run-iconcache.patch
new file mode 100644
index 0000000000..ac15e9ab24
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.10/run-iconcache.patch
@@ -0,0 +1,19 @@
+--- /tmp/Makefile.am 2007-01-08 17:44:47.000000000 +0100
++++ gtk+-2.10.7/gtk/Makefile.am 2007-01-08 17:45:17.025251000 +0100
+@@ -1128,11 +1128,11 @@
+ ./gtk-update-icon-cache
+ endif
+
+-gtkbuiltincache.h: @REBUILD@ stamp-icons
+- $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT)
+- $(gtk_update_icon_cache_program) --force --ignore-theme-index \
+- --source builtin_icons stock-icons > gtkbuiltincache.h.tmp && \
+- mv gtkbuiltincache.h.tmp gtkbuiltincache.h
++#gtkbuiltincache.h: @REBUILD@ stamp-icons
++# $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT)
++# $(gtk_update_icon_cache_program) --force --ignore-theme-index \
++# --source builtin_icons stock-icons > gtkbuiltincache.h.tmp && \
++# mv gtkbuiltincache.h.tmp gtkbuiltincache.h
+
+ EXTRA_DIST += \
+ $(STOCK_ICONS) \
diff --git a/packages/gtk+/gtk+-2.10.3/scroll-timings.patch b/packages/gtk+/gtk+-2.10.10/scroll-timings.patch
index 3f823a7880..3f823a7880 100644
--- a/packages/gtk+/gtk+-2.10.3/scroll-timings.patch
+++ b/packages/gtk+/gtk+-2.10.10/scroll-timings.patch
diff --git a/packages/gtk+/gtk+-2.10.6/single-click.patch b/packages/gtk+/gtk+-2.10.10/single-click.patch
index 250f1629f5..250f1629f5 100644
--- a/packages/gtk+/gtk+-2.10.6/single-click.patch
+++ b/packages/gtk+/gtk+-2.10.10/single-click.patch
diff --git a/packages/gtk+/gtk+-2.10.3/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.10.10/small-gtkfilesel.patch
index 20bf4cf366..20bf4cf366 100644
--- a/packages/gtk+/gtk+-2.10.3/small-gtkfilesel.patch
+++ b/packages/gtk+/gtk+-2.10.10/small-gtkfilesel.patch
diff --git a/packages/gtk+/gtk+-2.10.6/spinbutton.patch b/packages/gtk+/gtk+-2.10.10/spinbutton.patch
index c26dc6d93c..c26dc6d93c 100644
--- a/packages/gtk+/gtk+-2.10.6/spinbutton.patch
+++ b/packages/gtk+/gtk+-2.10.10/spinbutton.patch
diff --git a/packages/gtk+/gtk+-2.10.3/xsettings.patch b/packages/gtk+/gtk+-2.10.10/xsettings.patch
index b63e262d34..b63e262d34 100644
--- a/packages/gtk+/gtk+-2.10.3/xsettings.patch
+++ b/packages/gtk+/gtk+-2.10.10/xsettings.patch
diff --git a/packages/gtk+/gtk+-2.10.12/.mtn2git_empty b/packages/gtk+/gtk+-2.10.12/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.12/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-2.10.6/automake-lossage.patch b/packages/gtk+/gtk+-2.10.12/automake-lossage.patch
index 0d423ddbb9..0d423ddbb9 100644
--- a/packages/gtk+/gtk+-2.10.6/automake-lossage.patch
+++ b/packages/gtk+/gtk+-2.10.12/automake-lossage.patch
diff --git a/packages/gtk+/gtk+-2.10.6/disable-print.patch b/packages/gtk+/gtk+-2.10.12/disable-print.patch
index 1067773f12..1067773f12 100644
--- a/packages/gtk+/gtk+-2.10.6/disable-print.patch
+++ b/packages/gtk+/gtk+-2.10.12/disable-print.patch
diff --git a/packages/gtk+/gtk+-2.10.6/disable-tooltips.patch b/packages/gtk+/gtk+-2.10.12/disable-tooltips.patch
index d71d839c3c..d71d839c3c 100644
--- a/packages/gtk+/gtk+-2.10.6/disable-tooltips.patch
+++ b/packages/gtk+/gtk+-2.10.12/disable-tooltips.patch
diff --git a/packages/gtk+/gtk+-2.10.12/gnome-bug-341177.patch b/packages/gtk+/gtk+-2.10.12/gnome-bug-341177.patch
new file mode 100644
index 0000000000..c31868462a
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.12/gnome-bug-341177.patch
@@ -0,0 +1,217 @@
+diff -uprN gtk+-2.8.13.org/gdk-pixbuf/pixops/pixops.c gtk+-2.8.13.INNER_LOOP/gdk-pixbuf/pixops/pixops.c
+--- gtk+-2.8.13.org/gdk-pixbuf/pixops/pixops.c Tue Jul 12 18:58:57 2005
++++ gtk+-2.8.13.INNER_LOOP/gdk-pixbuf/pixops/pixops.c Tue May 9 17:30:53 2006
+@@ -71,35 +71,24 @@ get_check_shift (int check_size)
+ return check_shift;
+ }
+
+-static void
+-pixops_scale_nearest (guchar *dest_buf,
+- int render_x0,
+- int render_y0,
+- int render_x1,
+- int render_y1,
+- int dest_rowstride,
+- int dest_channels,
+- gboolean dest_has_alpha,
+- const guchar *src_buf,
+- int src_width,
+- int src_height,
+- int src_rowstride,
+- int src_channels,
+- gboolean src_has_alpha,
+- double scale_x,
+- double scale_y)
+-{
+- int i;
+- int x;
+- int x_step = (1 << SCALE_SHIFT) / scale_x;
+- int y_step = (1 << SCALE_SHIFT) / scale_y;
+- int xmax, xstart, xstop, x_pos, y_pos;
+- const guchar *p;
++typedef struct { guchar a,b,c; } b3;
++extern void BUG_bad_size_of_struct_b3(void);
+
+-#define INNER_LOOP(SRC_CHANNELS,DEST_CHANNELS,ASSIGN_PIXEL) \
++#define INNER_LOOP_PREP() \
++ do { \
++ x = render_x0 * x_step + x_step / 2; \
+ xmax = x + (render_x1 - render_x0) * x_step; \
+ xstart = MIN (0, xmax); \
+ xstop = MIN (src_width << SCALE_SHIFT, xmax); \
++ } while(0)
++
++#define INNER_LOOP_BODY(SRC_CHANNELS,DEST_CHANNELS,ASSIGN_PIXEL)\
++ do { \
++ y_pos = ((i + render_y0) * y_step + y_step / 2) >> SCALE_SHIFT; \
++ y_pos = CLAMP (y_pos, 0, src_height - 1); \
++ src = src_buf + y_pos * src_rowstride; \
++ dest = dest_buf + i * dest_rowstride; \
++ x = render_x0 * x_step + x_step / 2; \
+ p = src + (CLAMP (x, xstart, xstop) >> SCALE_SHIFT) * SRC_CHANNELS; \
+ while (x < xstart) \
+ { \
+@@ -121,42 +110,58 @@ pixops_scale_nearest (guchar *des
+ ASSIGN_PIXEL; \
+ dest += DEST_CHANNELS; \
+ x += x_step; \
+- }
++ } \
++ } while(0)
+
+- for (i = 0; i < (render_y1 - render_y0); i++)
+- {
+- const guchar *src;
+- guchar *dest;
+- y_pos = ((i + render_y0) * y_step + y_step / 2) >> SCALE_SHIFT;
+- y_pos = CLAMP (y_pos, 0, src_height - 1);
+- src = src_buf + y_pos * src_rowstride;
+- dest = dest_buf + i * dest_rowstride;
++static void
++pixops_scale_nearest (guchar *dest_buf,
++ int render_x0,
++ int render_y0,
++ int render_x1,
++ int render_y1,
++ int dest_rowstride,
++ int dest_channels,
++ gboolean dest_has_alpha,
++ const guchar *src_buf,
++ int src_width,
++ int src_height,
++ int src_rowstride,
++ int src_channels,
++ gboolean src_has_alpha,
++ double scale_x,
++ double scale_y)
++{
++ int i;
++ int x;
++ int x_step = (1 << SCALE_SHIFT) / scale_x;
++ int y_step = (1 << SCALE_SHIFT) / scale_y;
++ int xmax, xstart, xstop, x_pos, y_pos;
++ const guchar *p;
+
+- x = render_x0 * x_step + x_step / 2;
++ const guchar *src;
++ guchar *dest;
+
+- if (src_channels == 3)
+- {
+- if (dest_channels == 3)
+- {
+- INNER_LOOP (3, 3, dest[0]=p[0];dest[1]=p[1];dest[2]=p[2]);
+- }
+- else
+- {
+- INNER_LOOP (3, 4, dest[0]=p[0];dest[1]=p[1];dest[2]=p[2];dest[3]=0xff);
+- }
+- }
+- else if (src_channels == 4)
+- {
+- if (dest_channels == 3)
+- {
+- INNER_LOOP (4, 3, dest[0]=p[0];dest[1]=p[1];dest[2]=p[2]);
+- }
+- else
+- {
+- guint32 *p32;
+- INNER_LOOP(4, 4, p32=(guint32*)dest;*p32=*((guint32*)p));
+- }
+- }
++ if(sizeof(b3) != 3) BUG_bad_size_of_struct_b3();
++
++ INNER_LOOP_PREP();
++
++ if (src_channels == 3)
++ {
++ if (dest_channels == 3)
++ for (i = 0; i < (render_y1 - render_y0); i++)
++ INNER_LOOP_BODY (3, 3, *(b3*)dest = *(b3*)p);
++ else
++ for (i = 0; i < (render_y1 - render_y0); i++)
++ INNER_LOOP_BODY (3, 4, (*(b3*)dest = *(b3*)p, dest[3]=0xff) );
++ }
++ else if (src_channels == 4)
++ {
++ if (dest_channels == 3)
++ for (i = 0; i < (render_y1 - render_y0); i++)
++ INNER_LOOP_BODY (4, 3, *(b3*)dest = *(b3*)p);
++ else
++ for (i = 0; i < (render_y1 - render_y0); i++)
++ INNER_LOOP_BODY (4, 4, *(guint32*)dest = *((guint32*)p));
+ }
+ }
+
+@@ -187,18 +192,14 @@ pixops_composite_nearest (guchar
+ const guchar *p;
+ unsigned int a0;
+
++ INNER_LOOP_PREP();
++
+ for (i = 0; i < (render_y1 - render_y0); i++)
+ {
+ const guchar *src;
+ guchar *dest;
+- y_pos = ((i + render_y0) * y_step + y_step / 2) >> SCALE_SHIFT;
+- y_pos = CLAMP (y_pos, 0, src_height - 1);
+- src = src_buf + y_pos * src_rowstride;
+- dest = dest_buf + i * dest_rowstride;
+-
+- x = render_x0 * x_step + x_step / 2;
+
+- INNER_LOOP(src_channels, dest_channels,
++ INNER_LOOP_BODY(src_channels, dest_channels,
+ if (src_has_alpha)
+ a0 = (p[3] * overall_alpha) / 0xff;
+ else
+@@ -209,9 +210,7 @@ pixops_composite_nearest (guchar
+ case 0:
+ break;
+ case 255:
+- dest[0] = p[0];
+- dest[1] = p[1];
+- dest[2] = p[2];
++ *(b3*)dest = *(b3*)p;
+ if (dest_has_alpha)
+ dest[3] = 0xff;
+ break;
+@@ -279,17 +278,12 @@ pixops_composite_color_nearest (guchar
+ const guchar *p;
+ unsigned int a0;
+
++ INNER_LOOP_PREP();
++
+ for (i = 0; i < (render_y1 - render_y0); i++)
+ {
+ const guchar *src;
+ guchar *dest;
+- y_pos = ((i + render_y0) * y_step + y_step / 2) >> SCALE_SHIFT;
+- y_pos = CLAMP (y_pos, 0, src_height - 1);
+- src = src_buf + y_pos * src_rowstride;
+- dest = dest_buf + i * dest_rowstride;
+-
+- x = render_x0 * x_step + x_step / 2;
+-
+
+ if (((i + check_y) >> check_shift) & 1)
+ {
+@@ -313,7 +307,7 @@ pixops_composite_color_nearest (guchar
+ }
+
+ j = 0;
+- INNER_LOOP(src_channels, dest_channels,
++ INNER_LOOP_BODY(src_channels, dest_channels,
+ if (src_has_alpha)
+ a0 = (p[3] * overall_alpha + 0xff) >> 8;
+ else
+@@ -372,7 +366,8 @@ pixops_composite_color_nearest (guchar
+ );
+ }
+ }
+-#undef INNER_LOOP
++#undef INNER_LOOP_BODY
++#undef INNER_LOOP_PREP
+
+ static void
+ composite_pixel (guchar *dest, int dest_x, int dest_channels, int dest_has_alpha,
diff --git a/packages/gtk+/gtk+-2.10.12/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.10.12/gtk+-handhelds.patch
new file mode 100644
index 0000000000..1ea86ce6b2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.12/gtk+-handhelds.patch
@@ -0,0 +1,149 @@
+Index: gtk+-2.10.6/gtk/gtkarrow.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkarrow.c 2006-05-14 05:25:28.000000000 +0100
++++ gtk+-2.10.6/gtk/gtkarrow.c 2006-11-14 12:03:45.000000000 +0000
+@@ -31,7 +31,7 @@
+ #include "gtkintl.h"
+ #include "gtkalias.h"
+
+-#define MIN_ARROW_SIZE 15
++#define MIN_ARROW_SIZE 7
+
+ enum {
+ PROP_0,
+@@ -53,6 +53,8 @@
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
++static void gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition);
+
+
+ G_DEFINE_TYPE (GtkArrow, gtk_arrow, GTK_TYPE_MISC)
+@@ -88,6 +90,7 @@
+ GTK_PARAM_READWRITE));
+
+ widget_class->expose_event = gtk_arrow_expose;
++ widget_class->size_request = gtk_arrow_size_request;
+ }
+
+ static void
+@@ -143,13 +146,18 @@
+ }
+
+ static void
++gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition)
++{
++ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
++ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
++}
++
++static void
+ gtk_arrow_init (GtkArrow *arrow)
+ {
+ GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW);
+
+- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
+- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
+-
+ arrow->arrow_type = GTK_ARROW_RIGHT;
+ arrow->shadow_type = GTK_SHADOW_OUT;
+ }
+Index: gtk+-2.10.6/gtk/gtkentry.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkentry.c 2006-11-14 12:03:45.000000000 +0000
++++ gtk+-2.10.6/gtk/gtkentry.c 2006-11-14 12:07:02.000000000 +0000
+@@ -577,6 +577,18 @@
+ 0.0,
+ GTK_PARAM_READWRITE));
+
++ // Added by gtk+-handhelds.patch
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("min_width",
++ P_("Minimum width"),
++ P_("Minimum width of the entry field"),
++ 0,
++ G_MAXINT,
++ MIN_ENTRY_WIDTH,
++ G_PARAM_READABLE));
++
++
++
+ /**
+ * GtkEntry:truncate-multiline:
+ *
+@@ -1286,7 +1298,7 @@
+ {
+ GtkEntry *entry = GTK_ENTRY (widget);
+ PangoFontMetrics *metrics;
+- gint xborder, yborder;
++ gint xborder, yborder, min_width;
+ GtkBorder inner_border;
+ PangoContext *context;
+
+@@ -1302,8 +1314,10 @@
+ _gtk_entry_get_borders (entry, &xborder, &yborder);
+ _gtk_entry_effective_inner_border (entry, &inner_border);
+
++ gtk_widget_style_get (widget, "min_width", &min_width, NULL);
++
+ if (entry->width_chars < 0)
+- requisition->width = MIN_ENTRY_WIDTH + xborder * 2 + inner_border.left + inner_border.right;
++ requisition->width = min_width + xborder * 2 + inner_border.left + inner_border.right;
+ else
+ {
+ gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
+Index: gtk+-2.10.6/gtk/gtkrange.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkrange.c 2006-11-14 12:03:44.000000000 +0000
++++ gtk+-2.10.6/gtk/gtkrange.c 2006-11-14 12:07:40.000000000 +0000
+@@ -197,6 +197,7 @@
+ static gboolean gtk_range_key_press (GtkWidget *range,
+ GdkEventKey *event);
+
++static GdkAtom recognize_protocols_atom, atom_atom;
+
+ static guint signals[LAST_SIGNAL];
+
+@@ -213,6 +214,9 @@
+ object_class = (GtkObjectClass*) class;
+ widget_class = (GtkWidgetClass*) class;
+
++ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE);
++ atom_atom = gdk_atom_intern ("ATOM", FALSE);
++
+ gobject_class->set_property = gtk_range_set_property;
+ gobject_class->get_property = gtk_range_get_property;
+ gobject_class->finalize = gtk_range_finalize;
+@@ -1020,6 +1024,12 @@
+ &attributes, attributes_mask);
+ gdk_window_set_user_data (range->event_window, range);
+
++ gdk_property_change (range->event_window,
++ recognize_protocols_atom,
++ atom_atom,
++ 32, GDK_PROP_MODE_REPLACE,
++ NULL, 0);
++
+ widget->style = gtk_style_attach (widget->style, widget->window);
+ }
+
+@@ -1569,7 +1579,7 @@
+
+ /* ignore presses when we're already doing something else. */
+ if (range->layout->grab_location != MOUSE_OUTSIDE)
+- return FALSE;
++ return TRUE;
+
+ range->layout->mouse_x = event->x;
+ range->layout->mouse_y = event->y;
+@@ -1778,7 +1788,7 @@
+ return TRUE;
+ }
+
+- return FALSE;
++ return TRUE;
+ }
+
+ /**
diff --git a/packages/gtk+/gtk+-2.10.6/gtklabel-resize-patch b/packages/gtk+/gtk+-2.10.12/gtklabel-resize-patch
index df29656343..df29656343 100644
--- a/packages/gtk+/gtk+-2.10.6/gtklabel-resize-patch
+++ b/packages/gtk+/gtk+-2.10.12/gtklabel-resize-patch
diff --git a/packages/gtk+/gtk+-2.10.12/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.10.12/hardcoded_libtool.patch
new file mode 100644
index 0000000000..6adb0cfef6
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.12/hardcoded_libtool.patch
@@ -0,0 +1,29 @@
+--- /tmp/configure.in 2007-01-08 17:50:49.000000000 +0100
++++ gtk+-2.10.7/configure.in 2007-01-08 17:52:33.495251000 +0100
+@@ -371,7 +371,7 @@
+ case $enable_explicit_deps in
+ auto)
+ export SED
+- deplibs_check_method=`(./libtool --config; echo 'eval echo $deplibs_check_method') | sh`
++ deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo $deplibs_check_method') | sh`
+ if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -773,7 +773,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./$host_alias-libtool --config"
+ pixbuf_deplibs_check=`$pixbuf_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1611,7 +1611,7 @@
+ # We are using gmodule-no-export now, but I'm leaving the stripping
+ # code in place for now, since pango and atk still require gmodule.
+ export SED
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/packages/gtk+/gtk+-2.10.12/integer-pixops.patch b/packages/gtk+/gtk+-2.10.12/integer-pixops.patch
new file mode 100644
index 0000000000..490a60dd8a
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.12/integer-pixops.patch
@@ -0,0 +1,348 @@
+--- /tmp/config.h.in 2006-12-23 00:00:38.000000000 +0100
++++ gtk+-2.10.6/config.h.in 2006-12-23 00:01:05.632227000 +0100
+@@ -253,3 +253,7 @@
+
+ /* Define to `int' if <sys/types.h> doesn't define. */
+ #undef uid_t
++
++/* Define to use integer math rather than floating point where possible. */
++#undef ENABLE_INTEGER_PIXOPS
++
+--- /tmp/configure.in 2006-12-23 00:02:16.000000000 +0100
++++ gtk+-2.10.6/configure.in 2006-12-23 00:05:11.172227000 +0100
+@@ -203,6 +203,15 @@
+ [AC_HELP_STRING([--disable-rebuilds],
+ [disable all source autogeneration rules])],,
+ [enable_rebuilds=yes])
++AC_ARG_ENABLE(integer-pixops,
++ [AC_HELP_STRING([--enable-integer-pixops],
++ [use integer math where possible])],,
++ [enable_integer_pixops=no])
++
++if test "x$enable_integer_pixops" = "xyes"; then
++ AC_DEFINE(ENABLE_INTEGER_PIXOPS)
++fi
++
+ AC_ARG_ENABLE(visibility,
+ [AC_HELP_STRING([--disable-visibility],
+ [don't use ELF visibility attributes])],,
+--- /tmp/pixops.c 2006-12-23 10:04:02.000000000 +0100
++++ gtk+-2.10.6/gdk-pixbuf/pixops/pixops.c 2006-12-23 10:04:21.772227000 +0100
+@@ -28,6 +28,10 @@
+ #define SUBSAMPLE_MASK ((1 << SUBSAMPLE_BITS)-1)
+ #define SCALE_SHIFT 16
+
++#ifdef ENABLE_INTEGER_PIXOPS
++#define FRAC 0x10000ULL
++#endif
++
+ typedef struct _PixopsFilter PixopsFilter;
+ typedef struct _PixopsFilterDimension PixopsFilterDimension;
+
+@@ -972,6 +976,29 @@
+ (*pixel_func) (dest, dest_x, dest_channels, dest_has_alpha, src_has_alpha, check_size, color1, color2, r, g, b, a);
+ }
+
++#ifdef ENABLE_INTEGER_PIXOPS
++
++static void
++correct_total (int *weights,
++ int n_x,
++ int n_y,
++ int total,
++ unsigned long overall_alpha)
++{
++ int correction = (int)(overall_alpha - total);
++ int i;
++ for (i = n_x * n_y - 1; i >= 0; i--)
++ {
++ if (*(weights + i) + correction >= 0)
++ {
++ *(weights + i) += correction;
++ break;
++ }
++ }
++}
++
++#else
++
+ static void
+ correct_total (int *weights,
+ int n_x,
+@@ -998,6 +1025,8 @@
+ }
+ }
+
++#endif
++
+ static int *
+ make_filter_table (PixopsFilter *filter)
+ {
+@@ -1026,7 +1055,11 @@
+ *(pixel_weights + n_x * i + j) = weight;
+ }
+
+- correct_total (pixel_weights, n_x, n_y, total, filter->overall_alpha);
++#ifdef ENABLE_INTEGER_PIXOPS
++ correct_total (pixel_weights, n_x, n_y, total, overall_alpha * FRAC);
++#else
++ correct_total (pixel_weights, n_x, n_y, total, overall_alpha);
++#endif
+ }
+
+ return weights;
+@@ -1178,6 +1211,93 @@
+ /* Compute weights for reconstruction by replication followed by
+ * sampling with a box filter
+ */
++#ifdef ENABLE_INTEGER_PIXOPS
++
++static void
++tile_make_weights (PixopsFilter *filter, double x_scale_d, double y_scale_d, double overall_alpha_d)
++{
++ int i_offset, j_offset;
++ unsigned long x_scale = x_scale_d * FRAC;
++ unsigned long y_scale = y_scale_d * FRAC;
++ unsigned long overall_alpha = overall_alpha_d * FRAC;
++ unsigned long x_scale_r = FRAC / x_scale;
++ unsigned long y_scale_r = FRAC / y_scale;
++
++ int n_x = ceil(1/x_scale_d + 1);
++ int n_y = ceil(1/y_scale_d + 1);
++
++ filter->x_offset = 0;
++ filter->y_offset = 0;
++ filter->n_x = n_x;
++ filter->n_y = n_y;
++ filter->weights = g_new (int, SUBSAMPLE * SUBSAMPLE * n_x * n_y);
++
++ for (i_offset=0; i_offset<SUBSAMPLE; i_offset++)
++ for (j_offset=0; j_offset<SUBSAMPLE; j_offset++)
++ {
++ int *pixel_weights = filter->weights + ((i_offset*SUBSAMPLE) + j_offset) * n_x * n_y;
++ unsigned long x = j_offset * FRAC / SUBSAMPLE;
++ unsigned long y = i_offset * FRAC / SUBSAMPLE;
++ int i,j;
++ int total = 0;
++
++ for (i = 0; i < n_y; i++)
++ {
++ unsigned long tw, th;
++
++ if (i < y)
++ {
++
++ if (i + FRAC > y)
++ th = MIN(i+FRAC, y + y_scale_r) - y;
++ else
++ th = 0;
++ }
++ else
++ {
++ if (y + FRAC/y_scale > i)
++ th = MIN(i+FRAC, y + y_scale_r) - i;
++ else
++ th = 0;
++ }
++
++ for (j = 0; j < n_x; j++)
++ {
++ int weight;
++
++ if (j < x)
++ {
++ if (j + FRAC > x)
++ tw = MIN(j+FRAC, x + x_scale_r) - x;
++ else
++ tw = 0;
++ }
++ else
++ {
++ if (x + FRAC/x_scale > j)
++ tw = MIN(j+FRAC, x + x_scale_r) - j;
++ else
++ tw = 0;
++ }
++
++ {
++ unsigned long lweight = (tw * x_scale) / FRAC;
++ lweight = (lweight * th) / FRAC;
++ lweight = (lweight * y_scale) / FRAC;
++ lweight = (lweight * overall_alpha) / FRAC;
++ weight = lweight;
++ }
++ total += weight;
++ *(pixel_weights + n_x * i + j) = weight;
++ }
++ }
++
++ correct_total (pixel_weights, n_x, n_y, total, overall_alpha);
++ }
++}
++
++#else
++
+ static void
+ tile_make_weights (PixopsFilterDimension *dim,
+ double scale)
+@@ -1216,10 +1336,151 @@
+ }
+ }
+
++#endif
++
+ /* Compute weights for a filter that, for minification
+ * is the same as 'tiles', and for magnification, is bilinear
+ * reconstruction followed by a sampling with a delta function.
+ */
++#ifdef ENABLE_INTEGER_PIXOPS
++
++static void
++bilinear_magnify_make_weights (PixopsFilter *filter, double x_scale_d, double y_scale_d, double overall_alpha_d)
++{
++ int i_offset, j_offset;
++ unsigned long *x_weights, *y_weights;
++ int n_x, n_y;
++ unsigned long x_scale = x_scale_d * FRAC;
++ unsigned long y_scale = y_scale_d * FRAC;
++ unsigned long overall_alpha = overall_alpha_d * FRAC;
++ unsigned long x_scale_r = (FRAC / x_scale_d);
++ unsigned long y_scale_r = (FRAC / y_scale_d);
++
++ if (x_scale > FRAC) /* Bilinear */
++ {
++ n_x = 2;
++ filter->x_offset = 0.5 * (1/x_scale_d - 1);
++ }
++ else /* Tile */
++ {
++ n_x = ceil(1.0 + 1.0/x_scale_d);
++ filter->x_offset = 0.0;
++ }
++
++ if (y_scale > FRAC) /* Bilinear */
++ {
++ n_y = 2;
++ filter->y_offset = 0.5 * (1/y_scale_d - 1);
++ }
++ else /* Tile */
++ {
++ n_y = ceil(1.0 + 1.0/y_scale_d);
++ filter->y_offset = 0.0;
++ }
++
++ filter->n_y = n_y;
++ filter->n_x = n_x;
++ filter->weights = g_new (int, SUBSAMPLE * SUBSAMPLE * n_x * n_y);
++
++ x_weights = g_new (unsigned long, n_x);
++ y_weights = g_new (unsigned long, n_y);
++
++ for (i_offset=0; i_offset<SUBSAMPLE; i_offset++)
++ for (j_offset=0; j_offset<SUBSAMPLE; j_offset++)
++ {
++ int *pixel_weights = filter->weights + ((i_offset*SUBSAMPLE) + j_offset) * n_x * n_y;
++ unsigned long x = j_offset * FRAC / SUBSAMPLE;
++ unsigned long y = i_offset * FRAC / SUBSAMPLE;
++ int i,j;
++ int total = 0;
++
++ if (x_scale > FRAC) /* Bilinear */
++ {
++ for (i = 0; i < n_x; i++)
++ {
++ /* x_weights[i] = ((i == 0) ? (1 - x) : x) / x_scale; */
++ unsigned long w = (((i == 0) ? (FRAC - x) : x) * x_scale_r);
++ x_weights[i] = w / FRAC;
++ }
++ }
++ else /* Tile */
++ {
++ /* x
++ * ---------|--.-|----|--.-|------- SRC
++ * ------------|---------|--------- DEST
++ */
++ for (i = 0; i < n_x; i++)
++ {
++ if (i < x)
++ {
++ if (i + 1 > x)
++ x_weights[i] = MIN(FRAC*(i+1), FRAC * x + (((unsigned long long)(FRAC * FRAC)) / (unsigned long)x_scale)) - (x * FRAC);
++ else
++ x_weights[i] = 0;
++ }
++ else
++ {
++ if (x + 1/x_scale > i)
++ x_weights[i] = MIN(FRAC*(i+1), FRAC * x + (((unsigned long long)(FRAC * FRAC)) / (unsigned long)x_scale)) - (i * FRAC);
++ else
++ x_weights[i] = 0;
++ }
++ }
++ }
++
++ if (y_scale > FRAC) /* Bilinear */
++ {
++ for (i = 0; i < n_y; i++)
++ {
++ unsigned long w = ((unsigned long)((i == 0) ? (FRAC - y) : y) * y_scale_r);
++ y_weights[i] = w / FRAC;
++ }
++ }
++ else /* Tile */
++ {
++ /* y
++ * ---------|--.-|----|--.-|------- SRC
++ * ------------|---------|--------- DEST
++ */
++ for (i = 0; i < n_y; i++)
++ {
++ if (i < y)
++ {
++ if (i + 1 > y)
++ y_weights[i] = MIN(FRAC*(i+1), FRAC * y + (FRAC * FRAC / (unsigned long)y_scale)) - (y * FRAC);
++ else
++ y_weights[i] = 0;
++ }
++ else
++ {
++ if (y + 1/y_scale > i)
++ y_weights[i] = MIN(FRAC*(i+1), FRAC * y + (FRAC * FRAC / (unsigned long)y_scale)) - (i * FRAC);
++ else
++ y_weights[i] = 0;
++ }
++ }
++ }
++
++ for (i = 0; i < n_y; i++)
++ for (j = 0; j < n_x; j++)
++ {
++ unsigned long long weight = (x_weights[j] * x_scale) / FRAC;
++ weight = (weight * y_weights[i]) / FRAC;
++ weight = (weight * y_scale) / FRAC;
++ weight = (weight * overall_alpha) / FRAC;
++ *(pixel_weights + n_x * i + j) = (unsigned long)weight;
++ total += (unsigned long)weight;
++ }
++
++ correct_total (pixel_weights, n_x, n_y, total, overall_alpha);
++ }
++
++ g_free (x_weights);
++ g_free (y_weights);
++}
++
++#else
++
+ static void
+ bilinear_magnify_make_weights (PixopsFilterDimension *dim,
+ double scale)
+@@ -1283,6 +1544,8 @@
+ }
+ }
+
++#endif
++
+ /* Computes the integral from b0 to b1 of
+ *
+ * f(x) = x; 0 <= x < 1
diff --git a/packages/gtk+/gtk+-2.10.6/menu-deactivate.patch b/packages/gtk+/gtk+-2.10.12/menu-deactivate.patch
index cfb8849e9f..cfb8849e9f 100644
--- a/packages/gtk+/gtk+-2.10.6/menu-deactivate.patch
+++ b/packages/gtk+/gtk+-2.10.12/menu-deactivate.patch
diff --git a/packages/gtk+/gtk+-2.10.12/migration.patch b/packages/gtk+/gtk+-2.10.12/migration.patch
new file mode 100644
index 0000000000..4ee786e688
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.12/migration.patch
@@ -0,0 +1,611 @@
+Index: configure.in
+===================================================================
+--- configure.in.orig 2006-10-03 17:54:09.000000000 +0100
++++ configure.in 2006-10-30 12:58:33.000000000 +0000
+@@ -1529,6 +1529,16 @@
+ GTK_EXTRA_CFLAGS="$msnative_struct"
+ fi
+
++AC_ARG_ENABLE(display-migration,
++ [AC_HELP_STRING([--enable-display-migration],
++ [include support for GPE_CHANGE_DISPLAY protocol])],
++ enable_migration=yes, enable_migration=no)
++if test "$enable_migration" = "yes"; then
++ AC_DEFINE([ENABLE_MIGRATION], 1, [Define if display migration is enabled])
++ GTK_DEP_LIBS="$GTK_DEP_LIBS -lgcrypt"
++fi
++AM_CONDITIONAL(ENABLE_MIGRATION, test $enable_migration = "yes")
++
+ AC_SUBST(GTK_PACKAGES)
+ AC_SUBST(GTK_EXTRA_LIBS)
+ AC_SUBST(GTK_EXTRA_CFLAGS)
+Index: gtk/Makefile.am
+===================================================================
+--- gtk/Makefile.am.orig 2006-10-02 18:27:53.000000000 +0100
++++ gtk/Makefile.am 2006-10-30 12:59:14.000000000 +0000
+@@ -589,6 +589,11 @@
+ gtkwindow-decorate.c \
+ gtkwindow.c \
+ $(gtk_clipboard_dnd_c_sources)
++
++if ENABLE_MIGRATION
++gtk_base_c_sources += gtkmigration.c
++endif
++
+ gtk_c_sources = $(gtk_base_c_sources)
+ gtk_all_c_sources = $(gtk_base_c_sources)
+
+Index: gtk/gtkmain.c
+===================================================================
+--- gtk/gtkmain.c.orig 2006-09-03 06:31:21.000000000 +0100
++++ gtk/gtkmain.c 2006-10-30 12:56:34.000000000 +0000
+@@ -507,6 +507,10 @@
+ _gtk_accel_map_init ();
+ _gtk_rc_init ();
+
++#ifdef ENABLE_MIGRATION
++ gtk_migration_init ();
++#endif
++
+ /* Set the 'initialized' flag.
+ */
+ gtk_initialized = TRUE;
+Index: gtk/gtkmigration.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gtk/gtkmigration.c 2006-10-30 12:56:34.000000000 +0000
+@@ -0,0 +1,529 @@
++/*
++ * Copyright (C) 2003, 2005 Philip Blundell <philb@gnu.org>
++ *
++ * 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 <stdlib.h>
++#include <ctype.h>
++#include <libintl.h>
++#include <string.h>
++#include <assert.h>
++
++#include <X11/X.h>
++#include <X11/Xlib.h>
++#include <X11/Xatom.h>
++
++#include <gcrypt.h>
++
++#include "gtk.h"
++#include "gdk.h"
++#include "x11/gdkx.h"
++
++#define _(x) gettext(x)
++
++static GdkAtom string_gdkatom, display_change_gdkatom;
++static GdkAtom rsa_challenge_gdkatom;
++
++#define DISPLAY_CHANGE_SUCCESS 0
++#define DISPLAY_CHANGE_UNABLE_TO_CONNECT 1
++#define DISPLAY_CHANGE_NO_SUCH_SCREEN 2
++#define DISPLAY_CHANGE_AUTHENTICATION_BAD 3
++#define DISPLAY_CHANGE_INDETERMINATE_ERROR 4
++
++static gboolean no_auth;
++
++static GSList *all_widgets;
++
++static gboolean gtk_migration_initialised;
++
++#define CHALLENGE_LEN 64
++
++gchar *gtk_migration_auth_challenge_string;
++
++static unsigned char challenge_bytes[CHALLENGE_LEN];
++static unsigned long challenge_seq;
++
++#define hexbyte(x) ((x) >= 10 ? (x) + 'a' - 10 : (x) + '0')
++
++struct rsa_key
++{
++ gcry_mpi_t n, e, d, p, q, u;
++};
++
++static gcry_mpi_t
++mpi_from_sexp (gcry_sexp_t r, char *tag)
++{
++ gcry_sexp_t s = gcry_sexp_find_token (r, tag, 0);
++ return gcry_sexp_nth_mpi (s, 1, GCRYMPI_FMT_USG);
++}
++
++static char *
++hex_from_mpi (gcry_mpi_t m)
++{
++ char *buf;
++ gcry_mpi_aprint (GCRYMPI_FMT_HEX, (void *)&buf, NULL, m);
++ return buf;
++}
++
++static void
++gtk_migration_crypt_create_hash (char *display, char *challenge, size_t len, char *result)
++{
++ size_t dlen = strlen (display);
++ gchar *buf = g_malloc (dlen + 1 + len);
++ strcpy (buf, display);
++ memcpy (buf + dlen + 1, challenge, len);
++ gcry_md_hash_buffer (GCRY_MD_SHA1, result, buf, len + dlen + 1);
++ g_free (buf);
++}
++
++static int
++do_encode_md (const unsigned char *digest, size_t digestlen, int algo,
++ unsigned int nbits, gcry_mpi_t *r_val)
++{
++ int nframe = (nbits+7) / 8;
++ unsigned char *frame;
++ int i, n;
++ unsigned char asn[100];
++ size_t asnlen;
++
++ asnlen = sizeof(asn);
++ if (gcry_md_algo_info (algo, GCRYCTL_GET_ASNOID, asn, &asnlen))
++ return -1;
++
++ if (digestlen + asnlen + 4 > nframe )
++ return -1;
++
++ /* We encode the MD in this way:
++ *
++ * 0 1 PAD(n bytes) 0 ASN(asnlen bytes) MD(len bytes)
++ *
++ * PAD consists of FF bytes.
++ */
++ frame = g_malloc (nframe);
++ n = 0;
++ frame[n++] = 0;
++ frame[n++] = 1; /* block type */
++ i = nframe - digestlen - asnlen -3 ;
++ assert ( i > 1 );
++ memset ( frame+n, 0xff, i ); n += i;
++ frame[n++] = 0;
++ memcpy ( frame+n, asn, asnlen ); n += asnlen;
++ memcpy ( frame+n, digest, digestlen ); n += digestlen;
++ assert ( n == nframe );
++
++ gcry_mpi_scan (r_val, GCRYMPI_FMT_USG, frame, nframe, &nframe);
++ g_free (frame);
++ return 0;
++}
++
++static gboolean
++gtk_migration_crypt_check_signature (struct rsa_key *k, char *hash, char *sigbuf)
++{
++ gcry_mpi_t mpi, mpi2;
++ gcry_sexp_t data, sig, key;
++ int rc;
++
++ do_encode_md (hash, 20, GCRY_MD_SHA1, 1024, &mpi);
++
++ gcry_sexp_build (&data, NULL, "(data (value %m))", mpi);
++
++ gcry_mpi_release (mpi);
++
++ gcry_sexp_build (&key, NULL, "(public-key (rsa (n %m) (e %m)))", k->n, k->e);
++
++ if (gcry_mpi_scan (&mpi2, GCRYMPI_FMT_HEX, sigbuf, 0, NULL))
++ {
++ gcry_sexp_release (data);
++ return FALSE;
++ }
++
++ gcry_sexp_build (&sig, NULL, "(sig-val (rsa (s %m)))", mpi2);
++
++ rc = gcry_pk_verify (sig, data, key);
++
++ gcry_sexp_release (data);
++ gcry_sexp_release (key);
++ gcry_sexp_release (sig);
++ gcry_mpi_release (mpi2);
++
++ if (rc)
++ return FALSE;
++
++ return TRUE;
++}
++
++static void
++gtk_migration_auth_update_challenge (void)
++{
++ int i;
++ unsigned char *p;
++
++ if (gtk_migration_auth_challenge_string == NULL)
++ gtk_migration_auth_challenge_string = g_malloc ((CHALLENGE_LEN * 2) + 9);
++
++ p = gtk_migration_auth_challenge_string;
++
++ for (i = 0; i < CHALLENGE_LEN; i++)
++ {
++ *p++ = hexbyte (challenge_bytes[i] >> 4);
++ *p++ = hexbyte (challenge_bytes[i] & 15);
++ }
++
++ sprintf (p, "%08lx", challenge_seq++);
++}
++
++static void
++gtk_migration_auth_generate_challenge (void)
++{
++ gcry_randomize (challenge_bytes, sizeof (challenge_bytes), GCRY_STRONG_RANDOM);
++ gtk_migration_auth_update_challenge ();
++}
++
++static struct rsa_key *
++parse_pubkey (char *s)
++{
++ struct rsa_key *r;
++ gcry_mpi_t n, e;
++ gchar *sp;
++
++ sp = strtok (s, " \n");
++ gcry_mpi_scan (&e, GCRYMPI_FMT_HEX, sp, 0, NULL);
++ sp = strtok (NULL, " \n");
++ gcry_mpi_scan (&n, GCRYMPI_FMT_HEX, sp, 0, NULL);
++
++ r = g_malloc0 (sizeof (struct rsa_key));
++ r->e = e;
++ r->n = n;
++ return r;
++}
++
++static struct rsa_key *
++lookup_pubkey (u_int32_t id)
++{
++ const gchar *home_dir = g_get_home_dir ();
++ gchar *filename = g_strdup_printf ("%s/.gpe/migrate/public", home_dir);
++ FILE *fp = fopen (filename, "r");
++ struct rsa_key *r = NULL;
++
++ if (fp)
++ {
++ while (!feof (fp))
++ {
++ char buffer[4096];
++ if (fgets (buffer, 4096, fp))
++ {
++ char *p;
++ u_int32_t this_id = strtoul (buffer, &p, 16);
++ if (p != buffer && *p == ' ')
++ {
++#ifdef DEBUG
++ fprintf (stderr, "found id %x\n", this_id);
++#endif
++ if (this_id == id)
++ {
++ r = parse_pubkey (++p);
++ break;
++ }
++ }
++ }
++ }
++ fclose (fp);
++ }
++
++ g_free (filename);
++ return r;
++}
++
++static void
++free_pubkey (struct rsa_key *k)
++{
++ gcry_mpi_release (k->n);
++ gcry_mpi_release (k->e);
++
++ g_free (k);
++}
++
++static gboolean
++gtk_migration_auth_validate_request (char *display, char *data)
++{
++ u_int32_t key_id;
++ char *ep;
++ char *p;
++ struct rsa_key *k;
++ char hash[20];
++ gboolean rc;
++
++ p = strchr (data, ' ');
++ if (p == NULL)
++ return FALSE;
++ *p++ = 0;
++
++ key_id = strtoul (data, &ep, 16);
++ if (*ep)
++ return FALSE;
++
++ k = lookup_pubkey (key_id);
++ if (k == NULL)
++ return FALSE;
++
++ gtk_migration_crypt_create_hash (display, gtk_migration_auth_challenge_string,
++ strlen (gtk_migration_auth_challenge_string), hash);
++
++ rc = gtk_migration_crypt_check_signature (k, hash, p);
++
++ free_pubkey (k);
++
++ return rc;
++}
++
++static int
++do_change_display (GtkWidget *w, char *display_name)
++{
++ GdkDisplay *newdisplay;
++ guint screen_nr = 1;
++ guint i;
++
++ if (display_name[0] == 0)
++ return DISPLAY_CHANGE_INDETERMINATE_ERROR;
++
++ i = strlen (display_name) - 1;
++ while (i > 0 && isdigit (display_name[i]))
++ i--;
++
++ if (display_name[i] == '.')
++ {
++ screen_nr = atoi (display_name + i + 1);
++ display_name[i] = 0;
++ }
++
++ newdisplay = gdk_display_open (display_name);
++ if (newdisplay)
++ {
++ GdkScreen *screen = gdk_display_get_screen (newdisplay, screen_nr);
++ if (screen)
++ {
++ gtk_window_set_screen (GTK_WINDOW (w), screen);
++ gdk_display_manager_set_default_display (gdk_display_manager_get (),
++ newdisplay);
++ return DISPLAY_CHANGE_SUCCESS;
++ }
++ else
++ return DISPLAY_CHANGE_NO_SUCH_SCREEN;
++ }
++
++ return DISPLAY_CHANGE_UNABLE_TO_CONNECT;
++}
++
++static void
++set_challenge_on_window (GdkWindow *window)
++{
++ gdk_property_change (window, rsa_challenge_gdkatom, string_gdkatom,
++ 8, GDK_PROP_MODE_REPLACE, gtk_migration_auth_challenge_string,
++ strlen (gtk_migration_auth_challenge_string));
++}
++
++static void
++update_challenge_on_windows (void)
++{
++ GSList *i;
++
++ gtk_migration_auth_update_challenge ();
++
++ for (i = all_widgets; i; i = i->next)
++ {
++ GtkWidget *w = GTK_WIDGET (i->data);
++ if (w->window)
++ set_challenge_on_window (w->window);
++ }
++}
++
++static void
++reset_state (GdkWindow *window)
++{
++ gdk_property_change (window, display_change_gdkatom, string_gdkatom,
++ 8, GDK_PROP_MODE_REPLACE, NULL, 0);
++}
++
++static void
++generate_response (GdkDisplay *gdisplay, Display *dpy, Window window, int code)
++{
++ XClientMessageEvent ev;
++ Atom atom = gdk_x11_atom_to_xatom_for_display (gdisplay,
++ display_change_gdkatom);
++
++ memset (&ev, 0, sizeof (ev));
++
++ ev.type = ClientMessage;
++ ev.window = window;
++ ev.message_type = atom;
++ ev.format = 32;
++
++ ev.data.l[0] = window;
++ ev.data.l[1] = code;
++
++ XSendEvent (dpy, DefaultRootWindow (dpy), False, SubstructureNotifyMask, (XEvent *)&ev);
++}
++
++static int
++handle_request (GdkWindow *gwindow, char *prop)
++{
++ GtkWidget *widget;
++ char *target, *auth_method, *auth_data;
++ char *p;
++
++ target = prop;
++ auth_method = "NULL";
++ auth_data = NULL;
++
++ p = strchr (prop, ' ');
++ if (p)
++ {
++ *p = 0;
++ auth_method = ++p;
++
++ p = strchr (p, ' ');
++ if (p)
++ {
++ *p = 0;
++ auth_data = ++p;
++ }
++ }
++
++ if (no_auth == FALSE)
++ {
++ if (!strcasecmp (auth_method, "null"))
++ return DISPLAY_CHANGE_AUTHENTICATION_BAD;
++ else if (!strcasecmp (auth_method, "rsa-sig"))
++ {
++ if (gtk_migration_auth_validate_request (target, auth_data) == FALSE)
++ return DISPLAY_CHANGE_AUTHENTICATION_BAD;
++ }
++ else
++ return DISPLAY_CHANGE_AUTHENTICATION_BAD;
++ }
++
++ gdk_window_get_user_data (gwindow, (gpointer*) &widget);
++
++ if (widget)
++ return do_change_display (widget, target);
++
++ return DISPLAY_CHANGE_INDETERMINATE_ERROR;
++}
++
++static GdkFilterReturn
++filter_func (GdkXEvent *xevp, GdkEvent *ev, gpointer p)
++{
++ XPropertyEvent *xev = (XPropertyEvent *)xevp;
++
++ if (xev->type == PropertyNotify)
++ {
++ GdkDisplay *gdisplay;
++ Atom atom;
++
++ gdisplay = gdk_x11_lookup_xdisplay (xev->display);
++ if (gdisplay)
++ {
++ atom = gdk_x11_atom_to_xatom_for_display (gdisplay, display_change_gdkatom);
++
++ if (xev->atom == atom)
++ {
++ GdkWindow *gwindow;
++
++ gwindow = gdk_window_lookup_for_display (gdisplay, xev->window);
++
++ if (gwindow)
++ {
++ GdkAtom actual_type;
++ gint actual_format;
++ gint actual_length;
++ unsigned char *prop = NULL;
++
++ if (gdk_property_get (gwindow, display_change_gdkatom, string_gdkatom,
++ 0, G_MAXLONG, FALSE, &actual_type, &actual_format,
++ &actual_length, &prop))
++ {
++ if (actual_length != 0)
++ {
++ if (actual_type == string_gdkatom && actual_length > 8)
++ {
++ gchar *buf = g_malloc (actual_length + 1);
++ int rc;
++
++ memcpy (buf, prop, actual_length);
++ buf[actual_length] = 0;
++
++ rc = handle_request (gwindow, buf);
++
++ g_free (buf);
++ generate_response (gdisplay, xev->display, xev->window, rc);
++
++ if (rc == DISPLAY_CHANGE_SUCCESS)
++ update_challenge_on_windows ();
++ }
++
++ reset_state (gwindow);
++ }
++ }
++
++ if (prop)
++ g_free (prop);
++ }
++ }
++
++ return GDK_FILTER_REMOVE;
++ }
++ }
++
++ return GDK_FILTER_CONTINUE;
++}
++
++static void
++unrealize_window (GtkWidget *w)
++{
++ all_widgets = g_slist_remove (all_widgets, w);
++}
++
++void
++gtk_migration_mark_window (GtkWidget *w)
++{
++ if (! gtk_migration_initialised)
++ {
++ g_warning ("gtk_migration not initialised yet");
++ return;
++ }
++
++ if (GTK_WIDGET_REALIZED (w))
++ {
++ GdkWindow *window = w->window;
++
++ gdk_window_add_filter (window, filter_func, NULL);
++
++ reset_state (window);
++ set_challenge_on_window (window);
++
++ all_widgets = g_slist_append (all_widgets, w);
++
++ g_signal_connect (G_OBJECT (w), "unrealize", G_CALLBACK (unrealize_window), NULL);
++ }
++ else
++ g_signal_connect (G_OBJECT (w), "realize", G_CALLBACK (gtk_migration_mark_window), NULL);
++}
++
++void
++gtk_migration_init (void)
++{
++ if (getenv ("GPE_DISPLAY_MIGRATION_NO_AUTH") != NULL)
++ no_auth = TRUE;
++
++ string_gdkatom = gdk_atom_intern ("STRING", FALSE);
++ display_change_gdkatom = gdk_atom_intern ("_GPE_DISPLAY_CHANGE", FALSE);
++ rsa_challenge_gdkatom = gdk_atom_intern ("_GPE_DISPLAY_CHANGE_RSA_CHALLENGE", FALSE);
++
++ gtk_migration_auth_generate_challenge ();
++
++ gtk_migration_initialised = TRUE;
++}
+Index: gtk/gtkwindow.c
+===================================================================
+--- gtk/gtkwindow.c.orig 2006-10-03 16:51:46.000000000 +0100
++++ gtk/gtkwindow.c 2006-10-30 12:56:34.000000000 +0000
+@@ -50,6 +50,9 @@
+ #include "x11/gdkx.h"
+ #endif
+
++extern void gtk_migration_mark_window (GtkWidget *w);
++
++
+ enum {
+ SET_FOCUS,
+ FRAME_EVENT,
+@@ -823,6 +826,10 @@
+
+ g_signal_connect (window->screen, "composited_changed",
+ G_CALLBACK (gtk_window_on_composited_changed), window);
++
++#ifdef ENABLE_MIGRATION
++ gtk_migration_mark_window (window);
++#endif
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.10.6/no-demos.patch b/packages/gtk+/gtk+-2.10.12/no-demos.patch
index 0fc4c48d1a..0fc4c48d1a 100644
--- a/packages/gtk+/gtk+-2.10.6/no-demos.patch
+++ b/packages/gtk+/gtk+-2.10.12/no-demos.patch
diff --git a/packages/gtk+/gtk+-2.10.6/no-xwc.patch b/packages/gtk+/gtk+-2.10.12/no-xwc.patch
index affb4a303e..affb4a303e 100644
--- a/packages/gtk+/gtk+-2.10.6/no-xwc.patch
+++ b/packages/gtk+/gtk+-2.10.12/no-xwc.patch
diff --git a/packages/gtk+/gtk+-2.10.12/plana-pixops.patch b/packages/gtk+/gtk+-2.10.12/plana-pixops.patch
new file mode 100644
index 0000000000..21fe4879c5
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.12/plana-pixops.patch
@@ -0,0 +1,569 @@
+diff -urN gtk+-2.10.9.orig/config.h.in gtk+-2.10.9-integer-pixops/config.h.in
+--- gtk+-2.10.9.orig/config.h.in 2007-01-22 09:01:23.000000000 -0700
++++ gtk+-2.10.9-integer-pixops/config.h.in 2007-02-10 12:15:39.000000000 -0700
+@@ -259,3 +259,7 @@
+
+ /* Define to `int' if <sys/types.h> doesn't define. */
+ #undef uid_t
++
++/* Define to use integer math rather than floating point where possible. */
++#undef ENABLE_INTEGER_PIXOPS
++
+diff -urN gtk+-2.10.9.orig/configure.in gtk+-2.10.9-integer-pixops/configure.in
+--- gtk+-2.10.9.orig/configure.in 2007-01-22 08:59:41.000000000 -0700
++++ gtk+-2.10.9-integer-pixops/configure.in 2007-02-10 12:15:39.000000000 -0700
+@@ -203,6 +203,15 @@
+ [AC_HELP_STRING([--disable-rebuilds],
+ [disable all source autogeneration rules])],,
+ [enable_rebuilds=yes])
++AC_ARG_ENABLE(integer-pixops,
++ [AC_HELP_STRING([--enable-integer-pixops],
++ [use integer math where possible])],,
++ [enable_integer_pixops=no])
++
++if test "x$enable_integer_pixops" = "xyes"; then
++ AC_DEFINE(ENABLE_INTEGER_PIXOPS)
++fi
++
+ AC_ARG_ENABLE(visibility,
+ [AC_HELP_STRING([--disable-visibility],
+ [don't use ELF visibility attributes])],,
+diff -urN gtk+-2.10.9.orig/gdk-pixbuf/pixops/pixops.c gtk+-2.10.9-integer-pixops/gdk-pixbuf/pixops/pixops.c
+--- gtk+-2.10.9.orig/gdk-pixbuf/pixops/pixops.c 2007-01-22 08:50:43.000000000 -0700
++++ gtk+-2.10.9-integer-pixops/gdk-pixbuf/pixops/pixops.c 2007-02-12 01:00:23.000000000 -0700
+@@ -28,21 +28,42 @@
+ #define SUBSAMPLE_MASK ((1 << SUBSAMPLE_BITS)-1)
+ #define SCALE_SHIFT 16
+
++/* TODO: Add a FLOOR() and CEIL() macro to handle normalized values) */
++/* TODO: Get rid of standard C numeric types (ie. int). Replace with glib types */
++#ifdef ENABLE_INTEGER_PIXOPS
++/* The bigger the value of FRAC is, the better the accuracy. Be wary of
++ overflows, though */
++#define FRAC 0x10000ULL
++#define NORMALIZE(d) (d * FRAC)
++#define UNNORMALIZE(t,i) ((t)(i) / FRAC)
++#define FLOOR(i) (int)((i) / FRAC)
++#define CEIL(i) (((i) - 1) / FRAC + 1)
++#define DOUBLE_TYPE gint32
++#define BIG_DOUBLE_TYPE gint64
++#else
++#define NORMALIZE(d) (d)
++#define UNNORMALIZE(t,i) (t)(i)
++#define FLOOR(i) floor(i)
++#define CEIL(i) ceil(i)
++#define DOUBLE_TYPE double
++#define BIG_DOUBLE_TYPE double
++#endif
++
+ typedef struct _PixopsFilter PixopsFilter;
+ typedef struct _PixopsFilterDimension PixopsFilterDimension;
+
+ struct _PixopsFilterDimension
+ {
+ int n;
+- double offset;
+- double *weights;
++ BIG_DOUBLE_TYPE offset;
++ DOUBLE_TYPE *weights;
+ };
+
+ struct _PixopsFilter
+ {
+ PixopsFilterDimension x;
+ PixopsFilterDimension y;
+- double overall_alpha;
++ gint32 overall_alpha; /* Normalized: alpha * 255; Not sure why original devs chose 255 */
+ };
+
+ typedef guchar *(*PixopsLineFunc) (int *weights, int n_x, int n_y,
+@@ -86,13 +107,13 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y)
++ DOUBLE_TYPE scale_x,
++ DOUBLE_TYPE scale_y)
+ {
+ int i;
+ int x;
+- int x_step = (1 << SCALE_SHIFT) / scale_x;
+- int y_step = (1 << SCALE_SHIFT) / scale_y;
++ int x_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_x;
++ int y_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_y;
+ int xmax, xstart, xstop, x_pos, y_pos;
+ const guchar *p;
+
+@@ -175,14 +196,14 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y,
++ DOUBLE_TYPE scale_x,
++ DOUBLE_TYPE scale_y,
+ int overall_alpha)
+ {
+ int i;
+ int x;
+- int x_step = (1 << SCALE_SHIFT) / scale_x;
+- int y_step = (1 << SCALE_SHIFT) / scale_y;
++ int x_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_x;
++ int y_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_y;
+ int xmax, xstart, xstop, x_pos, y_pos;
+ const guchar *p;
+ unsigned int a0;
+@@ -260,8 +281,8 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y,
++ DOUBLE_TYPE scale_x,
++ DOUBLE_TYPE scale_y,
+ int overall_alpha,
+ int check_x,
+ int check_y,
+@@ -271,8 +292,8 @@
+ {
+ int i, j;
+ int x;
+- int x_step = (1 << SCALE_SHIFT) / scale_x;
+- int y_step = (1 << SCALE_SHIFT) / scale_y;
++ int x_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_x;
++ int y_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_y;
+ int r1, g1, b1, r2, g2, b2;
+ int check_shift = get_check_shift (check_size);
+ int xmax, xstart, xstop, x_pos, y_pos;
+@@ -977,9 +998,9 @@
+ int n_x,
+ int n_y,
+ int total,
+- double overall_alpha)
++ gint32 overall_alpha)
+ {
+- int correction = (int)(0.5 + 65536 * overall_alpha) - total;
++ int correction = (int)(0.5 + 65536 / 255 * overall_alpha) - total;
+ int remaining, c, d, i;
+
+ if (correction != 0)
+@@ -1009,7 +1030,7 @@
+ for (i_offset=0; i_offset < SUBSAMPLE; i_offset++)
+ for (j_offset=0; j_offset < SUBSAMPLE; j_offset++)
+ {
+- double weight;
++ DOUBLE_TYPE weight;
+ int *pixel_weights = weights + ((i_offset*SUBSAMPLE) + j_offset) * n_x * n_y;
+ int total = 0;
+ int i, j;
+@@ -1017,13 +1038,15 @@
+ for (i=0; i < n_y; i++)
+ for (j=0; j < n_x; j++)
+ {
+- weight = filter->x.weights[(j_offset * n_x) + j] *
++ weight = UNNORMALIZE(DOUBLE_TYPE, filter->x.weights[(j_offset * n_x) + j] *
+ filter->y.weights[(i_offset * n_y) + i] *
+- filter->overall_alpha * 65536 + 0.5;
++ filter->overall_alpha * 65536 / 255) + NORMALIZE(0.5);
++ /* Wonder how I should treat the "+ 0.5" for scientific
++ rouding off */
+
+- total += (int)weight;
++ total += UNNORMALIZE(int, weight);
+
+- *(pixel_weights + n_x * i + j) = weight;
++ *(pixel_weights + n_x * i + j) = UNNORMALIZE(int, weight);
+ }
+
+ correct_total (pixel_weights, n_x, n_y, total, filter->overall_alpha);
+@@ -1047,8 +1070,8 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y,
++ DOUBLE_TYPE scale_x,
++ DOUBLE_TYPE scale_y,
+ int check_x,
+ int check_y,
+ int check_size,
+@@ -1064,12 +1087,13 @@
+ guchar **line_bufs = g_new (guchar *, filter->y.n);
+ int *filter_weights = make_filter_table (filter);
+
+- int x_step = (1 << SCALE_SHIFT) / scale_x; /* X step in source (fixed point) */
+- int y_step = (1 << SCALE_SHIFT) / scale_y; /* Y step in source (fixed point) */
++ int x_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_x; /* X step in source (fixed point) */
++ int y_step = NORMALIZE((1 << SCALE_SHIFT)) / scale_y; /* Y step in source (fixed point) */
+
+ int check_shift = check_size ? get_check_shift (check_size) : 0;
+
+- int scaled_x_offset = floor (filter->x.offset * (1 << SCALE_SHIFT));
++ /* Possible overflow when scale-shifting which is why offset is BIG_DOUBLE_TYPE */
++ int scaled_x_offset = FLOOR(filter->x.offset * (1 << SCALE_SHIFT));
+
+ /* Compute the index where we run off the end of the source buffer. The furthest
+ * source pixel we access at index i is:
+@@ -1087,7 +1111,7 @@
+ int run_end_index = MYDIV (run_end_x + x_step - 1, x_step) - render_x0;
+ run_end_index = MIN (run_end_index, render_x1 - render_x0);
+
+- y = render_y0 * y_step + floor (filter->y.offset * (1 << SCALE_SHIFT));
++ y = render_y0 * y_step + FLOOR(filter->y.offset * (1 << SCALE_SHIFT));
+ for (i = 0; i < (render_y1 - render_y0); i++)
+ {
+ int dest_x;
+@@ -1180,37 +1204,37 @@
+ */
+ static void
+ tile_make_weights (PixopsFilterDimension *dim,
+- double scale)
++ DOUBLE_TYPE scale)
+ {
+- int n = ceil (1 / scale + 1);
+- double *pixel_weights = g_new (double, SUBSAMPLE * n);
++ int n = CEIL(NORMALIZE(NORMALIZE(1)) / scale + NORMALIZE(1)); /* Another possible overflow */
++ DOUBLE_TYPE *pixel_weights = g_new (DOUBLE_TYPE, SUBSAMPLE * n);
+ int offset;
+ int i;
+-
++
+ dim->n = n;
+- dim->offset = 0;
++ dim->offset = NORMALIZE(0);
+ dim->weights = pixel_weights;
+
+ for (offset = 0; offset < SUBSAMPLE; offset++)
+ {
+- double x = (double)offset / SUBSAMPLE;
+- double a = x + 1 / scale;
++ DOUBLE_TYPE x = (DOUBLE_TYPE)NORMALIZE(offset) / SUBSAMPLE;
++ DOUBLE_TYPE a = x + NORMALIZE(NORMALIZE(1)) / scale;
+
+ for (i = 0; i < n; i++)
+ {
+- if (i < x)
++ if (NORMALIZE(i) < x)
+ {
+- if (i + 1 > x)
+- *(pixel_weights++) = (MIN (i + 1, a) - x) * scale;
++ if (NORMALIZE(i + 1) > x)
++ *(pixel_weights++) = UNNORMALIZE(DOUBLE_TYPE, (MIN(NORMALIZE(i + 1), a) - x) * scale);
+ else
+- *(pixel_weights++) = 0;
++ *(pixel_weights++) = NORMALIZE(0);
+ }
+ else
+ {
+- if (a > i)
+- *(pixel_weights++) = (MIN (i + 1, a) - i) * scale;
++ if (a > NORMALIZE(i))
++ *(pixel_weights++) = UNNORMALIZE(DOUBLE_TYPE, (MIN(NORMALIZE(i + 1), a) - i) * scale);
+ else
+- *(pixel_weights++) = 0;
++ *(pixel_weights++) = NORMALIZE(0);
+ }
+ }
+ }
+@@ -1222,41 +1246,44 @@
+ */
+ static void
+ bilinear_magnify_make_weights (PixopsFilterDimension *dim,
+- double scale)
++ DOUBLE_TYPE scale)
+ {
+- double *pixel_weights;
++ DOUBLE_TYPE *pixel_weights;
+ int n;
+ int offset;
+ int i;
+
+- if (scale > 1.0) /* Linear */
++ if (scale > NORMALIZE(1.0)) /* Linear */
+ {
+ n = 2;
+- dim->offset = 0.5 * (1 / scale - 1);
++ dim->offset = NORMALIZE(NORMALIZE(0.5) / (scale - NORMALIZE(1)));
+ }
+ else /* Tile */
+ {
+- n = ceil (1.0 + 1.0 / scale);
+- dim->offset = 0.0;
++ n = CEIL(NORMALIZE(1.0) + NORMALIZE(NORMALIZE(1.0)) / scale);
++ dim->offset = NORMALIZE(0.0);
+ }
+-
++
+ dim->n = n;
+- dim->weights = g_new (double, SUBSAMPLE * n);
++ dim->weights = g_new (DOUBLE_TYPE, SUBSAMPLE * n);
+
+ pixel_weights = dim->weights;
+
+ for (offset=0; offset < SUBSAMPLE; offset++)
+ {
+- double x = (double)offset / SUBSAMPLE;
++ DOUBLE_TYPE x = (DOUBLE_TYPE)NORMALIZE(offset) / SUBSAMPLE;
+
+- if (scale > 1.0) /* Linear */
++ if (scale > NORMALIZE(1.0)) /* Linear */
+ {
+ for (i = 0; i < n; i++)
+- *(pixel_weights++) = (((i == 0) ? (1 - x) : x) / scale) * scale;
++ /* In the original, what is the point of dividing by scale then multiplying by scale? */
++ /* *(pixel_weights++) = (((i == 0) ? (1 - x) : x) / scale) * scale;*/
++ /* *(pixel_weights++) = i == 0 ? NORMALIZE(1) - x : x; */
++ *(pixel_weights++) = (((i == 0) ? NORMALIZE(1) - x : x) / scale) * scale;
+ }
+ else /* Tile */
+ {
+- double a = x + 1 / scale;
++ DOUBLE_TYPE a = x + NORMALIZE(NORMALIZE(1)) / scale;
+
+ /* x
+ * ---------|--.-|----|--.-|------- SRC
+@@ -1264,19 +1291,19 @@
+ */
+ for (i = 0; i < n; i++)
+ {
+- if (i < x)
++ if (NORMALIZE(i) < x)
+ {
+- if (i + 1 > x)
+- *(pixel_weights++) = (MIN (i + 1, a) - x) * scale;
++ if (NORMALIZE(i + 1) > x)
++ *(pixel_weights++) = UNNORMALIZE(DOUBLE_TYPE, (MIN(NORMALIZE(i + 1), a) - x) * scale);
+ else
+- *(pixel_weights++) = 0;
++ *(pixel_weights++) = NORMALIZE(0);
+ }
+ else
+ {
+- if (a > i)
+- *(pixel_weights++) = (MIN (i + 1, a) - i) * scale;
++ if (a > NORMALIZE(i))
++ *(pixel_weights++) = UNNORMALIZE(DOUBLE_TYPE, (MIN(NORMALIZE(i + 1), a) - i) * scale);
+ else
+- *(pixel_weights++) = 0;
++ *(pixel_weights++) = NORMALIZE(0);
+ }
+ }
+ }
+@@ -1291,14 +1318,14 @@
+ * We combine two of these to compute the convolution of
+ * a box filter with a triangular spike.
+ */
+-static double
+-linear_box_half (double b0, double b1)
++static DOUBLE_TYPE
++linear_box_half (DOUBLE_TYPE b0, DOUBLE_TYPE b1)
+ {
+- double a0, a1;
+- double x0, x1;
++ DOUBLE_TYPE a0, a1;
++ DOUBLE_TYPE x0, x1;
+
+- a0 = 0.;
+- a1 = 1.;
++ a0 = NORMALIZE(0.);
++ a1 = NORMALIZE(1.);
+
+ if (a0 < b0)
+ {
+@@ -1308,7 +1335,7 @@
+ x1 = MIN (a1, b1);
+ }
+ else
+- return 0;
++ return NORMALIZE(0);
+ }
+ else
+ {
+@@ -1318,10 +1345,10 @@
+ x1 = MIN (a1, b1);
+ }
+ else
+- return 0;
++ return NORMALIZE(0);
+ }
+
+- return 0.5 * (x1*x1 - x0*x0);
++ return UNNORMALIZE(DOUBLE_TYPE, NORMALIZE(0.5) * UNNORMALIZE(DOUBLE_TYPE, (x1*x1 - x0*x0)));
+ }
+
+ /* Compute weights for reconstructing with bilinear
+@@ -1329,28 +1356,28 @@
+ */
+ static void
+ bilinear_box_make_weights (PixopsFilterDimension *dim,
+- double scale)
++ DOUBLE_TYPE scale)
+ {
+- int n = ceil (1/scale + 3.0);
+- double *pixel_weights = g_new (double, SUBSAMPLE * n);
+- double w;
++ int n = CEIL(NORMALIZE(NORMALIZE(1))/scale + NORMALIZE(3.0));
++ DOUBLE_TYPE *pixel_weights = g_new (DOUBLE_TYPE, SUBSAMPLE * n);
++ DOUBLE_TYPE w;
+ int offset, i;
+
+- dim->offset = -1.0;
++ dim->offset = NORMALIZE(-1.0);
+ dim->n = n;
+ dim->weights = pixel_weights;
+
+ for (offset = 0; offset < SUBSAMPLE; offset++)
+ {
+- double x = (double)offset / SUBSAMPLE;
+- double a = x + 1 / scale;
++ DOUBLE_TYPE x = (DOUBLE_TYPE)NORMALIZE(offset) / SUBSAMPLE;
++ DOUBLE_TYPE a = x + NORMALIZE(NORMALIZE(1)) / scale;
+
+ for (i = 0; i < n; i++)
+ {
+- w = linear_box_half (0.5 + i - a, 0.5 + i - x);
+- w += linear_box_half (1.5 + x - i, 1.5 + a - i);
++ w = linear_box_half (NORMALIZE(0.5) + NORMALIZE(i) - a, NORMALIZE(0.5) + NORMALIZE(i) - x);
++ w += linear_box_half (NORMALIZE(1.5) - NORMALIZE(i) + x, NORMALIZE(1.5) - NORMALIZE(i) + a);
+
+- *(pixel_weights++) = w * scale;
++ *(pixel_weights++) = UNNORMALIZE(DOUBLE_TYPE, w * scale);
+ }
+ }
+ }
+@@ -1358,8 +1385,8 @@
+ static void
+ make_weights (PixopsFilter *filter,
+ PixopsInterpType interp_type,
+- double scale_x,
+- double scale_y)
++ DOUBLE_TYPE scale_x,
++ DOUBLE_TYPE scale_y)
+ {
+ switch (interp_type)
+ {
+@@ -1399,8 +1426,8 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y,
++ double scale_x_d,
++ double scale_y_d,
+ PixopsInterpType interp_type,
+ int overall_alpha,
+ int check_x,
+@@ -1409,6 +1436,8 @@
+ guint32 color1,
+ guint32 color2)
+ {
++ DOUBLE_TYPE scale_x = NORMALIZE(scale_x_d);
++ DOUBLE_TYPE scale_y = NORMALIZE(scale_y_d);
+ PixopsFilter filter;
+ PixopsLineFunc line_func;
+
+@@ -1419,7 +1448,7 @@
+ g_return_if_fail (!(dest_channels == 3 && dest_has_alpha));
+ g_return_if_fail (!(src_channels == 3 && src_has_alpha));
+
+- if (scale_x == 0 || scale_y == 0)
++ if (scale_x == NORMALIZE(0) || scale_y == NORMALIZE(0))
+ return;
+
+ if (!src_has_alpha && overall_alpha == 255)
+@@ -1427,7 +1456,7 @@
+ _pixops_scale (dest_buf, render_x0, render_y0, render_x1, render_y1,
+ dest_rowstride, dest_channels, dest_has_alpha,
+ src_buf, src_width, src_height, src_rowstride, src_channels,
+- src_has_alpha, scale_x, scale_y, interp_type);
++ src_has_alpha, UNNORMALIZE(double, scale_x), UNNORMALIZE(double, scale_y), interp_type);
+ return;
+ }
+
+@@ -1441,7 +1470,8 @@
+ return;
+ }
+
+- filter.overall_alpha = overall_alpha / 255.;
++ /* filter.overall_alpha = overall_alpha / 255.; /* Why is it 255 instead of 256? */
++ filter.overall_alpha = overall_alpha;
+ make_weights (&filter, interp_type, scale_x, scale_y);
+
+ #ifdef USE_MMX
+@@ -1501,11 +1531,13 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y,
++ double scale_x_d,
++ double scale_y_d,
+ PixopsInterpType interp_type,
+ int overall_alpha)
+ {
++ DOUBLE_TYPE scale_x = NORMALIZE(scale_x_d);
++ DOUBLE_TYPE scale_y = NORMALIZE(scale_y_d);
+ PixopsFilter filter;
+ PixopsLineFunc line_func;
+
+@@ -1516,7 +1548,7 @@
+ g_return_if_fail (!(dest_channels == 3 && dest_has_alpha));
+ g_return_if_fail (!(src_channels == 3 && src_has_alpha));
+
+- if (scale_x == 0 || scale_y == 0)
++ if (scale_x == NORMALIZE(0) || scale_y == NORMALIZE(0))
+ return;
+
+ if (!src_has_alpha && overall_alpha == 255)
+@@ -1524,7 +1556,7 @@
+ _pixops_scale (dest_buf, render_x0, render_y0, render_x1, render_y1,
+ dest_rowstride, dest_channels, dest_has_alpha,
+ src_buf, src_width, src_height, src_rowstride, src_channels,
+- src_has_alpha, scale_x, scale_y, interp_type);
++ src_has_alpha, UNNORMALIZE(double, scale_x), UNNORMALIZE(double, scale_y), interp_type);
+ return;
+ }
+
+@@ -1537,7 +1569,7 @@
+ return;
+ }
+
+- filter.overall_alpha = overall_alpha / 255.;
++ filter.overall_alpha = overall_alpha;
+ make_weights (&filter, interp_type, scale_x, scale_y);
+
+ if (filter.x.n == 2 && filter.y.n == 2 &&
+@@ -1578,10 +1610,12 @@
+ int src_rowstride,
+ int src_channels,
+ gboolean src_has_alpha,
+- double scale_x,
+- double scale_y,
++ double scale_x_d,
++ double scale_y_d,
+ PixopsInterpType interp_type)
+ {
++ DOUBLE_TYPE scale_x = NORMALIZE(scale_x_d);
++ DOUBLE_TYPE scale_y = NORMALIZE(scale_y_d);
+ PixopsFilter filter;
+ PixopsLineFunc line_func;
+
+@@ -1593,7 +1627,7 @@
+ g_return_if_fail (!(src_channels == 3 && src_has_alpha));
+ g_return_if_fail (!(src_has_alpha && !dest_has_alpha));
+
+- if (scale_x == 0 || scale_y == 0)
++ if (scale_x == NORMALIZE(0) || scale_y == NORMALIZE(0))
+ return;
+
+ if (interp_type == PIXOPS_INTERP_NEAREST)
+@@ -1605,7 +1639,7 @@
+ return;
+ }
+
+- filter.overall_alpha = 1.0;
++ filter.overall_alpha = 255;
+ make_weights (&filter, interp_type, scale_x, scale_y);
+
+ if (filter.x.n == 2 && filter.y.n == 2 && dest_channels == 3 && src_channels == 3)
diff --git a/packages/gtk+/gtk+-2.10.12/run-iconcache.patch b/packages/gtk+/gtk+-2.10.12/run-iconcache.patch
new file mode 100644
index 0000000000..ac15e9ab24
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.12/run-iconcache.patch
@@ -0,0 +1,19 @@
+--- /tmp/Makefile.am 2007-01-08 17:44:47.000000000 +0100
++++ gtk+-2.10.7/gtk/Makefile.am 2007-01-08 17:45:17.025251000 +0100
+@@ -1128,11 +1128,11 @@
+ ./gtk-update-icon-cache
+ endif
+
+-gtkbuiltincache.h: @REBUILD@ stamp-icons
+- $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT)
+- $(gtk_update_icon_cache_program) --force --ignore-theme-index \
+- --source builtin_icons stock-icons > gtkbuiltincache.h.tmp && \
+- mv gtkbuiltincache.h.tmp gtkbuiltincache.h
++#gtkbuiltincache.h: @REBUILD@ stamp-icons
++# $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT)
++# $(gtk_update_icon_cache_program) --force --ignore-theme-index \
++# --source builtin_icons stock-icons > gtkbuiltincache.h.tmp && \
++# mv gtkbuiltincache.h.tmp gtkbuiltincache.h
+
+ EXTRA_DIST += \
+ $(STOCK_ICONS) \
diff --git a/packages/gtk+/gtk+-2.10.6/scroll-timings.patch b/packages/gtk+/gtk+-2.10.12/scroll-timings.patch
index 3f823a7880..3f823a7880 100644
--- a/packages/gtk+/gtk+-2.10.6/scroll-timings.patch
+++ b/packages/gtk+/gtk+-2.10.12/scroll-timings.patch
diff --git a/packages/gtk+/gtk+-2.10.12/single-click.patch b/packages/gtk+/gtk+-2.10.12/single-click.patch
new file mode 100644
index 0000000000..250f1629f5
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.12/single-click.patch
@@ -0,0 +1,56 @@
+Index: gtk+-2.10.6/gtk/gtkcalendar.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkcalendar.c
++++ gtk+-2.10.6/gtk/gtkcalendar.c
+@@ -2482,9 +2482,11 @@ calendar_main_button_press (GtkCalendar
+ }
+
+ calendar_select_and_focus_day (calendar, day);
+- }
++
++ // This change causes the calendar to disappear after choosing a day
++/* }
+ else if (event->type == GDK_2BUTTON_PRESS)
+- {
++ {*/
+ priv->in_drag = 0;
+ if (day_month == MONTH_CURRENT)
+ g_signal_emit (calendar,
+Index: gtk+-2.10.6/gtk/gtkfilesel.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkfilesel.c
++++ gtk+-2.10.6/gtk/gtkfilesel.c
+@@ -2426,6 +2426,33 @@ gtk_file_selection_file_changed (GtkTree
+ if (fs->last_selected != NULL)
+ g_free (fs->last_selected);
+
++ // Single-click directory entry
++ if (new_names->len == 1)
++ {
++ GtkTreeView *tree_view;
++ GtkTreeModel *model;
++ GtkTreePath *path;
++ GtkTreeIter iter;
++ gboolean is_file;
++
++ tree_view = gtk_tree_selection_get_tree_view (selection);
++
++ if (gtk_tree_selection_get_selected (selection, &model, &iter))
++ {
++ path = gtk_tree_model_get_path (model, &iter);
++ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1);
++
++ if (!is_file)
++ {
++ gtk_file_selection_dir_activate (tree_view, path,
++ gtk_tree_view_get_column (tree_view, DIR_COLUMN),
++ user_data);
++ }
++
++ gtk_tree_path_free (path);
++ }
++ }
++
+ fs->last_selected = g_strdup (g_ptr_array_index (new_names, index));
+ filename = get_real_filename (fs->last_selected, FALSE);
+
diff --git a/packages/gtk+/gtk+-2.10.6/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.10.12/small-gtkfilesel.patch
index 20bf4cf366..20bf4cf366 100644
--- a/packages/gtk+/gtk+-2.10.6/small-gtkfilesel.patch
+++ b/packages/gtk+/gtk+-2.10.12/small-gtkfilesel.patch
diff --git a/packages/gtk+/gtk+-2.10.12/spinbutton.patch b/packages/gtk+/gtk+-2.10.12/spinbutton.patch
new file mode 100644
index 0000000000..c26dc6d93c
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.12/spinbutton.patch
@@ -0,0 +1,130 @@
+Index: gtk+-2.10.6/gtk/gtkspinbutton.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkspinbutton.c
++++ gtk+-2.10.6/gtk/gtkspinbutton.c
+@@ -682,7 +682,7 @@ gtk_spin_button_size_allocate (GtkWidget
+
+ spin = GTK_SPIN_BUTTON (widget);
+ arrow_size = spin_button_get_arrow_size (spin);
+- panel_width = arrow_size + 2 * widget->style->xthickness;
++ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness;
+
+ widget->allocation = *allocation;
+
+@@ -815,19 +815,16 @@ gtk_spin_button_draw_arrow (GtkSpinButto
+ {
+ width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness;
+
++ y = widget->style->ythickness;
++ height = widget->requisition.height - (2 * y);
++
+ if (arrow_type == GTK_ARROW_UP)
+ {
+ x = 0;
+- y = 0;
+-
+- height = widget->requisition.height / 2;
+ }
+ else
+ {
+- x = 0;
+- y = widget->requisition.height / 2;
+-
+- height = (widget->requisition.height + 1) / 2;
++ x = width;
+ }
+
+ if (spin_button_at_limit (spin_button, arrow_type))
+@@ -857,32 +854,17 @@ gtk_spin_button_draw_arrow (GtkSpinButto
+ shadow_type = GTK_SHADOW_OUT;
+ }
+ }
+-
++
+ gtk_paint_box (widget->style, spin_button->panel,
+ state_type, shadow_type,
+ NULL, widget,
+- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down",
++ NULL,
+ x, y, width, height);
+
+ height = widget->requisition.height;
+
+- if (arrow_type == GTK_ARROW_DOWN)
+- {
+- y = height / 2;
+- height = height - y - 2;
+- }
+- else
+- {
+- y = 2;
+- height = height / 2 - 2;
+- }
+-
+ width -= 3;
+-
+- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+- x = 2;
+- else
+- x = 1;
++ height -= 3;
+
+ w = width / 2;
+ w -= w % 2 - 1; /* force odd */
+@@ -1062,7 +1044,7 @@ gtk_spin_button_button_press (GtkWidget
+ if (GTK_ENTRY (widget)->editable)
+ gtk_spin_button_update (spin);
+
+- if (event->y <= widget->requisition.height / 2)
++ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness))
+ {
+ if (event->button == 1)
+ start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment);
+@@ -1097,44 +1079,11 @@ gtk_spin_button_button_release (GtkWidge
+
+ arrow_size = spin_button_get_arrow_size (spin);
+
+- if (event->button == spin->button)
+- {
+- int click_child = spin->click_child;
++ gtk_spin_button_stop_spinning (spin);
+
+- gtk_spin_button_stop_spinning (spin);
+-
+- if (event->button == 3)
+- {
+- if (event->y >= 0 && event->x >= 0 &&
+- event->y <= widget->requisition.height &&
+- event->x <= arrow_size + 2 * widget->style->xthickness)
+- {
+- if (click_child == GTK_ARROW_UP &&
+- event->y <= widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->upper - spin->adjustment->value;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, diff);
+- }
+- else if (click_child == GTK_ARROW_DOWN &&
+- event->y > widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->value - spin->adjustment->lower;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, -diff);
+- }
+- }
+- }
+- spin_button_redraw (spin);
++ spin_button_redraw (spin);
+
+- return TRUE;
+- }
+- else
+- return GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->button_release_event (widget, event);
++ return TRUE;
+ }
+
+ static gint
diff --git a/packages/gtk+/gtk+-2.10.6/xsettings.patch b/packages/gtk+/gtk+-2.10.12/xsettings.patch
index b63e262d34..b63e262d34 100644
--- a/packages/gtk+/gtk+-2.10.6/xsettings.patch
+++ b/packages/gtk+/gtk+-2.10.12/xsettings.patch
diff --git a/packages/gtk+/gtk+-2.10.3/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.10.3/gtk+-handhelds.patch
deleted file mode 100644
index 20481f059b..0000000000
--- a/packages/gtk+/gtk+-2.10.3/gtk+-handhelds.patch
+++ /dev/null
@@ -1,236 +0,0 @@
---- gtk+-2.4.1/gtk/gtkarrow.c 2004-03-13 09:51:13.000000000 +1100
-+++ gtk+-2.4.1/gtk/gtkarrow.c 2004-05-26 14:52:17.000000000 +1000
-@@ -29,7 +29,7 @@
- #include "gtkarrow.h"
- #include "gtkintl.h"
-
--#define MIN_ARROW_SIZE 15
-+#define MIN_ARROW_SIZE 7
-
- enum {
- PROP_0,
-@@ -53,6 +53,8 @@
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-+static void gtk_arrow_size_request (GtkWidget *arrow,
-+ GtkRequisition *requisition);
-
- GType
- gtk_arrow_get_type (void)
-@@ -111,6 +113,7 @@
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- widget_class->expose_event = gtk_arrow_expose;
-+ widget_class->size_request = gtk_arrow_size_request;
- }
-
- static void
-@@ -166,13 +169,18 @@
- }
-
- static void
-+gtk_arrow_size_request (GtkWidget *arrow,
-+ GtkRequisition *requisition)
-+{
-+ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
-+ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
-+}
-+
-+static void
- gtk_arrow_init (GtkArrow *arrow)
- {
- GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW);
-
-- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
-- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
--
- arrow->arrow_type = GTK_ARROW_RIGHT;
- arrow->shadow_type = GTK_SHADOW_OUT;
- }
---- gtk+-2.4.1/gtk/gtkcalendar.c 2004-03-06 14:37:26.000000000 +1100
-+++ gtk+-2.4.1/gtk/gtkcalendar.c 2004-05-26 14:58:57.000000000 +1000
-@@ -340,6 +340,9 @@
- static void gtk_calendar_select_and_focus_day (GtkCalendar *calendar,
- guint day);
-
-+static void gtk_calendar_do_select_day (GtkCalendar *calendar,
-+ guint day);
-+
- static void gtk_calendar_paint_arrow (GtkWidget *widget,
- guint arrow);
- static void gtk_calendar_paint_day_num (GtkWidget *widget,
-@@ -861,13 +864,13 @@
- if (month_len < calendar->selected_day)
- {
- calendar->selected_day = 0;
-- gtk_calendar_select_day (calendar, month_len);
-+ gtk_calendar_do_select_day (calendar, month_len);
- }
- else
- {
- if (calendar->selected_day < 0)
- calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1];
-- gtk_calendar_select_day (calendar, calendar->selected_day);
-+ gtk_calendar_do_select_day (calendar, calendar->selected_day);
- }
-
- gtk_widget_queue_draw (GTK_WIDGET (calendar));
-@@ -908,10 +911,10 @@
- if (month_len < calendar->selected_day)
- {
- calendar->selected_day = 0;
-- gtk_calendar_select_day (calendar, month_len);
-+ gtk_calendar_do_select_day (calendar, month_len);
- }
- else
-- gtk_calendar_select_day (calendar, calendar->selected_day);
-+ gtk_calendar_do_select_day (calendar, calendar->selected_day);
-
- gtk_widget_queue_draw (GTK_WIDGET (calendar));
- gtk_calendar_thaw (calendar);
-@@ -939,10 +942,10 @@
- if (month_len < calendar->selected_day)
- {
- calendar->selected_day = 0;
-- gtk_calendar_select_day (calendar, month_len);
-+ gtk_calendar_do_select_day (calendar, month_len);
- }
- else
-- gtk_calendar_select_day (calendar, calendar->selected_day);
-+ gtk_calendar_do_select_day (calendar, calendar->selected_day);
-
- gtk_widget_queue_draw (GTK_WIDGET (calendar));
- gtk_calendar_thaw (calendar);
-@@ -974,10 +977,10 @@
- if (month_len < calendar->selected_day)
- {
- calendar->selected_day = 0;
-- gtk_calendar_select_day (calendar, month_len);
-+ gtk_calendar_do_select_day (calendar, month_len);
- }
- else
-- gtk_calendar_select_day (calendar, calendar->selected_day);
-+ gtk_calendar_do_select_day (calendar, calendar->selected_day);
-
- gtk_widget_queue_draw (GTK_WIDGET (calendar));
- gtk_calendar_thaw (calendar);
-@@ -2480,9 +2483,9 @@
- return TRUE;
- }
-
--void
--gtk_calendar_select_day (GtkCalendar *calendar,
-- guint day)
-+static void
-+gtk_calendar_do_select_day (GtkCalendar *calendar,
-+ guint day)
- {
- g_return_if_fail (GTK_IS_CALENDAR (calendar));
- g_return_if_fail (day <= 31);
-@@ -2499,6 +2502,13 @@
- if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
- gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day);
- }
-+}
-+
-+void
-+gtk_calendar_select_day (GtkCalendar *calendar,
-+ guint day)
-+{
-+ gtk_calendar_do_select_day (calendar, day);
-
- calendar->selected_day = day;
-
---- gtk+-2.4.1/gtk/gtkentry.c 2004-04-22 08:08:08.000000000 +1000
-+++ gtk+-2.4.1/gtk/gtkentry.c 2004-05-26 14:52:17.000000000 +1000
-@@ -557,6 +557,15 @@
- 0.0,
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
-+ gtk_widget_class_install_style_property (widget_class,
-+ g_param_spec_int ("min_width",
-+ _("Minimum width"),
-+ _("Minimum width of the entry field"),
-+ 0,
-+ G_MAXINT,
-+ MIN_ENTRY_WIDTH,
-+ G_PARAM_READABLE));
-+
- signals[POPULATE_POPUP] =
- g_signal_new ("populate_popup",
- G_OBJECT_CLASS_TYPE (gobject_class),
-@@ -1124,7 +1133,7 @@
- {
- GtkEntry *entry = GTK_ENTRY (widget);
- PangoFontMetrics *metrics;
-- gint xborder, yborder;
-+ gint xborder, yborder, min_width;
- PangoContext *context;
-
- gtk_widget_ensure_style (widget);
-@@ -1140,9 +1149,11 @@
-
- xborder += INNER_BORDER;
- yborder += INNER_BORDER;
--
-+
-+ gtk_widget_style_get (widget, "min_width", &min_width, NULL);
-+
- if (entry->width_chars < 0)
-- requisition->width = MIN_ENTRY_WIDTH + xborder * 2;
-+ requisition->width = min_width + xborder * 2;
- else
- {
- gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
---- gtk+-2.4.1/gtk/gtkrange.c 2004-03-06 14:38:08.000000000 +1100
-+++ gtk+-2.4.1/gtk/gtkrange.c 2004-05-26 14:52:17.000000000 +1000
-@@ -180,6 +180,7 @@
- static GtkWidgetClass *parent_class = NULL;
- static guint signals[LAST_SIGNAL];
-
-+static GdkAtom recognize_protocols_atom, atom_atom;
-
- GType
- gtk_range_get_type (void)
-@@ -220,6 +221,9 @@
- object_class = (GtkObjectClass*) class;
- widget_class = (GtkWidgetClass*) class;
-
-+ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE);
-+ atom_atom = gdk_atom_intern ("ATOM", FALSE);
-+
- parent_class = g_type_class_peek_parent (class);
-
- gobject_class->set_property = gtk_range_set_property;
-@@ -815,6 +819,12 @@
- &attributes, attributes_mask);
- gdk_window_set_user_data (range->event_window, range);
-
-+ gdk_property_change (range->event_window,
-+ recognize_protocols_atom,
-+ atom_atom,
-+ 32, GDK_PROP_MODE_REPLACE,
-+ NULL, 0);
-+
- widget->style = gtk_style_attach (widget->style, widget->window);
- }
-
-@@ -1186,7 +1196,7 @@
-
- /* ignore presses when we're already doing something else. */
- if (range->layout->grab_location != MOUSE_OUTSIDE)
-- return FALSE;
-+ return TRUE;
-
- range->layout->mouse_x = event->x;
- range->layout->mouse_y = event->y;
-@@ -1364,7 +1374,7 @@
- return TRUE;
- }
-
-- return FALSE;
-+ return TRUE;
- }
-
- /**
diff --git a/packages/gtk+/gtk+-2.10.3/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.10.3/hardcoded_libtool.patch
deleted file mode 100644
index bdbdb32f97..0000000000
--- a/packages/gtk+/gtk+-2.10.3/hardcoded_libtool.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- gtk+-2.10.0/configure.in.orig 2006-07-07 09:31:34.000000000 +0100
-+++ gtk+-2.10.0/configure.in 2006-07-07 09:32:49.000000000 +0100
-@@ -370,7 +370,7 @@
- AC_MSG_CHECKING([Whether to write dependencies into .pc files])
- case $enable_explicit_deps in
- auto)
-- deplibs_check_method=`(./libtool --config; echo eval echo \\$deplibs_check_method) | sh`
-+ deplibs_check_method=`(./$host_alias-libtool --config; echo eval echo \\$deplibs_check_method) | sh`
- if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then
- enable_explicit_deps=yes
- else
-@@ -768,7 +768,7 @@
- dnl Now we check to see if our libtool supports shared lib deps
- dnl (in a rather ugly way even)
- if $dynworks; then
-- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
-+ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./$host_alias-libtool --config"
- pixbuf_deplibs_check=`$pixbuf_libtool_config | \
- grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
- sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
-@@ -1600,7 +1600,7 @@
- #
- # We are using gmodule-no-export now, but I'm leaving the stripping
- # code in place for now, since pango and atk still require gmodule.
--export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
-+export_dynamic=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
- if test -n "$export_dynamic"; then
- GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
- GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/packages/gtk+/gtk+-2.10.3/migration.patch b/packages/gtk+/gtk+-2.10.3/migration.patch
deleted file mode 100644
index 4850f85e4f..0000000000
--- a/packages/gtk+/gtk+-2.10.3/migration.patch
+++ /dev/null
@@ -1,615 +0,0 @@
-Index: configure.in
-===================================================================
-RCS file: /cvs/gnome/gtk+/configure.in,v
-retrieving revision 1.419.2.4
-diff -u -r1.419.2.4 configure.in
---- configure.in 8 Feb 2005 21:39:42 -0000 1.419.2.4
-+++ configure.in 27 Feb 2005 13:10:16 -0000
-@@ -1495,6 +1495,16 @@
- GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GTK_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS"
- GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
-
-+AC_ARG_ENABLE(display-migration,
-+ [AC_HELP_STRING([--enable-display-migration],
-+ [include support for GPE_CHANGE_DISPLAY protocol])],
-+ enable_migration=yes, enable_migration=no)
-+if test "$enable_migration" = "yes"; then
-+ AC_DEFINE([ENABLE_MIGRATION], 1, [Define if display migration is enabled])
-+ GTK_DEP_LIBS="$GTK_DEP_LIBS -lgcrypt"
-+fi
-+AM_CONDITIONAL(ENABLE_MIGRATION, test $enable_migration = "yes")
-+
- AC_SUBST(GTK_PACKAGES)
- AC_SUBST(GTK_EXTRA_LIBS)
- AC_SUBST(GTK_EXTRA_CFLAGS)
-Index: gtk/Makefile.am
-===================================================================
-RCS file: /cvs/gnome/gtk+/gtk/Makefile.am,v
-retrieving revision 1.266.2.1
-diff -u -r1.266.2.1 Makefile.am
---- gtk/Makefile.am 13 Jan 2005 15:18:21 -0000 1.266.2.1
-+++ gtk/Makefile.am 27 Feb 2005 13:10:17 -0000
-@@ -520,6 +520,10 @@
- gtkwindow.c \
- xembed.h
-
-+if ENABLE_MIGRATION
-+gtk_c_sources += gtkmigration.c
-+endif
-+
- if OS_UNIX
- gtk_private_h_sources += gtkfilesystemunix.h
- gtk_c_sources += gtkfilesystemunix.c
-Index: gtk/gtkmain.c
-===================================================================
-RCS file: /cvs/gnome/gtk+/gtk/gtkmain.c,v
-retrieving revision 1.255
-diff -u -r1.255 gtkmain.c
---- gtk/gtkmain.c 27 Dec 2004 05:25:15 -0000 1.255
-+++ gtk/gtkmain.c 27 Feb 2005 13:10:19 -0000
-@@ -491,6 +491,10 @@
- _gtk_accel_map_init ();
- _gtk_rc_init ();
-
-+#ifdef ENABLE_MIGRATION
-+ gtk_migration_init ();
-+#endif
-+
- /* Set the 'initialized' flag.
- */
- gtk_initialized = TRUE;
---- /dev/null 2005-02-20 01:07:50.714416160 +0000
-+++ gtk/gtkmigration.c 2005-02-27 15:05:04.052757352 +0000
-@@ -0,0 +1,529 @@
-+/*
-+ * Copyright (C) 2003, 2005 Philip Blundell <philb@gnu.org>
-+ *
-+ * 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 <stdlib.h>
-+#include <ctype.h>
-+#include <libintl.h>
-+#include <string.h>
-+#include <assert.h>
-+
-+#include <X11/X.h>
-+#include <X11/Xlib.h>
-+#include <X11/Xatom.h>
-+
-+#include <gcrypt.h>
-+
-+#include "gtk.h"
-+#include "gdk.h"
-+#include "x11/gdkx.h"
-+
-+#define _(x) gettext(x)
-+
-+static GdkAtom string_gdkatom, display_change_gdkatom;
-+static GdkAtom rsa_challenge_gdkatom;
-+
-+#define DISPLAY_CHANGE_SUCCESS 0
-+#define DISPLAY_CHANGE_UNABLE_TO_CONNECT 1
-+#define DISPLAY_CHANGE_NO_SUCH_SCREEN 2
-+#define DISPLAY_CHANGE_AUTHENTICATION_BAD 3
-+#define DISPLAY_CHANGE_INDETERMINATE_ERROR 4
-+
-+static gboolean no_auth;
-+
-+static GSList *all_widgets;
-+
-+static gboolean gtk_migration_initialised;
-+
-+#define CHALLENGE_LEN 64
-+
-+gchar *gtk_migration_auth_challenge_string;
-+
-+static unsigned char challenge_bytes[CHALLENGE_LEN];
-+static unsigned long challenge_seq;
-+
-+#define hexbyte(x) ((x) >= 10 ? (x) + 'a' - 10 : (x) + '0')
-+
-+struct rsa_key
-+{
-+ gcry_mpi_t n, e, d, p, q, u;
-+};
-+
-+static gcry_mpi_t
-+mpi_from_sexp (gcry_sexp_t r, char *tag)
-+{
-+ gcry_sexp_t s = gcry_sexp_find_token (r, tag, 0);
-+ return gcry_sexp_nth_mpi (s, 1, GCRYMPI_FMT_USG);
-+}
-+
-+static char *
-+hex_from_mpi (gcry_mpi_t m)
-+{
-+ char *buf;
-+ gcry_mpi_aprint (GCRYMPI_FMT_HEX, (void *)&buf, NULL, m);
-+ return buf;
-+}
-+
-+static void
-+gtk_migration_crypt_create_hash (char *display, char *challenge, size_t len, char *result)
-+{
-+ size_t dlen = strlen (display);
-+ gchar *buf = g_malloc (dlen + 1 + len);
-+ strcpy (buf, display);
-+ memcpy (buf + dlen + 1, challenge, len);
-+ gcry_md_hash_buffer (GCRY_MD_SHA1, result, buf, len + dlen + 1);
-+ g_free (buf);
-+}
-+
-+static int
-+do_encode_md (const unsigned char *digest, size_t digestlen, int algo,
-+ unsigned int nbits, gcry_mpi_t *r_val)
-+{
-+ int nframe = (nbits+7) / 8;
-+ unsigned char *frame;
-+ int i, n;
-+ unsigned char asn[100];
-+ size_t asnlen;
-+
-+ asnlen = sizeof(asn);
-+ if (gcry_md_algo_info (algo, GCRYCTL_GET_ASNOID, asn, &asnlen))
-+ return -1;
-+
-+ if (digestlen + asnlen + 4 > nframe )
-+ return -1;
-+
-+ /* We encode the MD in this way:
-+ *
-+ * 0 1 PAD(n bytes) 0 ASN(asnlen bytes) MD(len bytes)
-+ *
-+ * PAD consists of FF bytes.
-+ */
-+ frame = g_malloc (nframe);
-+ n = 0;
-+ frame[n++] = 0;
-+ frame[n++] = 1; /* block type */
-+ i = nframe - digestlen - asnlen -3 ;
-+ assert ( i > 1 );
-+ memset ( frame+n, 0xff, i ); n += i;
-+ frame[n++] = 0;
-+ memcpy ( frame+n, asn, asnlen ); n += asnlen;
-+ memcpy ( frame+n, digest, digestlen ); n += digestlen;
-+ assert ( n == nframe );
-+
-+ gcry_mpi_scan (r_val, GCRYMPI_FMT_USG, frame, nframe, &nframe);
-+ g_free (frame);
-+ return 0;
-+}
-+
-+static gboolean
-+gtk_migration_crypt_check_signature (struct rsa_key *k, char *hash, char *sigbuf)
-+{
-+ gcry_mpi_t mpi, mpi2;
-+ gcry_sexp_t data, sig, key;
-+ int rc;
-+
-+ do_encode_md (hash, 20, GCRY_MD_SHA1, 1024, &mpi);
-+
-+ gcry_sexp_build (&data, NULL, "(data (value %m))", mpi);
-+
-+ gcry_mpi_release (mpi);
-+
-+ gcry_sexp_build (&key, NULL, "(public-key (rsa (n %m) (e %m)))", k->n, k->e);
-+
-+ if (gcry_mpi_scan (&mpi2, GCRYMPI_FMT_HEX, sigbuf, 0, NULL))
-+ {
-+ gcry_sexp_release (data);
-+ return FALSE;
-+ }
-+
-+ gcry_sexp_build (&sig, NULL, "(sig-val (rsa (s %m)))", mpi2);
-+
-+ rc = gcry_pk_verify (sig, data, key);
-+
-+ gcry_sexp_release (data);
-+ gcry_sexp_release (key);
-+ gcry_sexp_release (sig);
-+ gcry_mpi_release (mpi2);
-+
-+ if (rc)
-+ return FALSE;
-+
-+ return TRUE;
-+}
-+
-+static void
-+gtk_migration_auth_update_challenge (void)
-+{
-+ int i;
-+ unsigned char *p;
-+
-+ if (gtk_migration_auth_challenge_string == NULL)
-+ gtk_migration_auth_challenge_string = g_malloc ((CHALLENGE_LEN * 2) + 9);
-+
-+ p = gtk_migration_auth_challenge_string;
-+
-+ for (i = 0; i < CHALLENGE_LEN; i++)
-+ {
-+ *p++ = hexbyte (challenge_bytes[i] >> 4);
-+ *p++ = hexbyte (challenge_bytes[i] & 15);
-+ }
-+
-+ sprintf (p, "%08lx", challenge_seq++);
-+}
-+
-+static void
-+gtk_migration_auth_generate_challenge (void)
-+{
-+ gcry_randomize (challenge_bytes, sizeof (challenge_bytes), GCRY_STRONG_RANDOM);
-+ gtk_migration_auth_update_challenge ();
-+}
-+
-+static struct rsa_key *
-+parse_pubkey (char *s)
-+{
-+ struct rsa_key *r;
-+ gcry_mpi_t n, e;
-+ gchar *sp;
-+
-+ sp = strtok (s, " \n");
-+ gcry_mpi_scan (&e, GCRYMPI_FMT_HEX, sp, 0, NULL);
-+ sp = strtok (NULL, " \n");
-+ gcry_mpi_scan (&n, GCRYMPI_FMT_HEX, sp, 0, NULL);
-+
-+ r = g_malloc0 (sizeof (struct rsa_key));
-+ r->e = e;
-+ r->n = n;
-+ return r;
-+}
-+
-+static struct rsa_key *
-+lookup_pubkey (u_int32_t id)
-+{
-+ const gchar *home_dir = g_get_home_dir ();
-+ gchar *filename = g_strdup_printf ("%s/.gpe/migrate/public", home_dir);
-+ FILE *fp = fopen (filename, "r");
-+ struct rsa_key *r = NULL;
-+
-+ if (fp)
-+ {
-+ while (!feof (fp))
-+ {
-+ char buffer[4096];
-+ if (fgets (buffer, 4096, fp))
-+ {
-+ char *p;
-+ u_int32_t this_id = strtoul (buffer, &p, 16);
-+ if (p != buffer && *p == ' ')
-+ {
-+#ifdef DEBUG
-+ fprintf (stderr, "found id %x\n", this_id);
-+#endif
-+ if (this_id == id)
-+ {
-+ r = parse_pubkey (++p);
-+ break;
-+ }
-+ }
-+ }
-+ }
-+ fclose (fp);
-+ }
-+
-+ g_free (filename);
-+ return r;
-+}
-+
-+static void
-+free_pubkey (struct rsa_key *k)
-+{
-+ gcry_mpi_release (k->n);
-+ gcry_mpi_release (k->e);
-+
-+ g_free (k);
-+}
-+
-+static gboolean
-+gtk_migration_auth_validate_request (char *display, char *data)
-+{
-+ u_int32_t key_id;
-+ char *ep;
-+ char *p;
-+ struct rsa_key *k;
-+ char hash[20];
-+ gboolean rc;
-+
-+ p = strchr (data, ' ');
-+ if (p == NULL)
-+ return FALSE;
-+ *p++ = 0;
-+
-+ key_id = strtoul (data, &ep, 16);
-+ if (*ep)
-+ return FALSE;
-+
-+ k = lookup_pubkey (key_id);
-+ if (k == NULL)
-+ return FALSE;
-+
-+ gtk_migration_crypt_create_hash (display, gtk_migration_auth_challenge_string,
-+ strlen (gtk_migration_auth_challenge_string), hash);
-+
-+ rc = gtk_migration_crypt_check_signature (k, hash, p);
-+
-+ free_pubkey (k);
-+
-+ return rc;
-+}
-+
-+static int
-+do_change_display (GtkWidget *w, char *display_name)
-+{
-+ GdkDisplay *newdisplay;
-+ guint screen_nr = 1;
-+ guint i;
-+
-+ if (display_name[0] == 0)
-+ return DISPLAY_CHANGE_INDETERMINATE_ERROR;
-+
-+ i = strlen (display_name) - 1;
-+ while (i > 0 && isdigit (display_name[i]))
-+ i--;
-+
-+ if (display_name[i] == '.')
-+ {
-+ screen_nr = atoi (display_name + i + 1);
-+ display_name[i] = 0;
-+ }
-+
-+ newdisplay = gdk_display_open (display_name);
-+ if (newdisplay)
-+ {
-+ GdkScreen *screen = gdk_display_get_screen (newdisplay, screen_nr);
-+ if (screen)
-+ {
-+ gtk_window_set_screen (GTK_WINDOW (w), screen);
-+ gdk_display_manager_set_default_display (gdk_display_manager_get (),
-+ newdisplay);
-+ return DISPLAY_CHANGE_SUCCESS;
-+ }
-+ else
-+ return DISPLAY_CHANGE_NO_SUCH_SCREEN;
-+ }
-+
-+ return DISPLAY_CHANGE_UNABLE_TO_CONNECT;
-+}
-+
-+static void
-+set_challenge_on_window (GdkWindow *window)
-+{
-+ gdk_property_change (window, rsa_challenge_gdkatom, string_gdkatom,
-+ 8, GDK_PROP_MODE_REPLACE, gtk_migration_auth_challenge_string,
-+ strlen (gtk_migration_auth_challenge_string));
-+}
-+
-+static void
-+update_challenge_on_windows (void)
-+{
-+ GSList *i;
-+
-+ gtk_migration_auth_update_challenge ();
-+
-+ for (i = all_widgets; i; i = i->next)
-+ {
-+ GtkWidget *w = GTK_WIDGET (i->data);
-+ if (w->window)
-+ set_challenge_on_window (w->window);
-+ }
-+}
-+
-+static void
-+reset_state (GdkWindow *window)
-+{
-+ gdk_property_change (window, display_change_gdkatom, string_gdkatom,
-+ 8, GDK_PROP_MODE_REPLACE, NULL, 0);
-+}
-+
-+static void
-+generate_response (GdkDisplay *gdisplay, Display *dpy, Window window, int code)
-+{
-+ XClientMessageEvent ev;
-+ Atom atom = gdk_x11_atom_to_xatom_for_display (gdisplay,
-+ display_change_gdkatom);
-+
-+ memset (&ev, 0, sizeof (ev));
-+
-+ ev.type = ClientMessage;
-+ ev.window = window;
-+ ev.message_type = atom;
-+ ev.format = 32;
-+
-+ ev.data.l[0] = window;
-+ ev.data.l[1] = code;
-+
-+ XSendEvent (dpy, DefaultRootWindow (dpy), False, SubstructureNotifyMask, (XEvent *)&ev);
-+}
-+
-+static int
-+handle_request (GdkWindow *gwindow, char *prop)
-+{
-+ GtkWidget *widget;
-+ char *target, *auth_method, *auth_data;
-+ char *p;
-+
-+ target = prop;
-+ auth_method = "NULL";
-+ auth_data = NULL;
-+
-+ p = strchr (prop, ' ');
-+ if (p)
-+ {
-+ *p = 0;
-+ auth_method = ++p;
-+
-+ p = strchr (p, ' ');
-+ if (p)
-+ {
-+ *p = 0;
-+ auth_data = ++p;
-+ }
-+ }
-+
-+ if (no_auth == FALSE)
-+ {
-+ if (!strcasecmp (auth_method, "null"))
-+ return DISPLAY_CHANGE_AUTHENTICATION_BAD;
-+ else if (!strcasecmp (auth_method, "rsa-sig"))
-+ {
-+ if (gtk_migration_auth_validate_request (target, auth_data) == FALSE)
-+ return DISPLAY_CHANGE_AUTHENTICATION_BAD;
-+ }
-+ else
-+ return DISPLAY_CHANGE_AUTHENTICATION_BAD;
-+ }
-+
-+ gdk_window_get_user_data (gwindow, (gpointer*) &widget);
-+
-+ if (widget)
-+ return do_change_display (widget, target);
-+
-+ return DISPLAY_CHANGE_INDETERMINATE_ERROR;
-+}
-+
-+static GdkFilterReturn
-+filter_func (GdkXEvent *xevp, GdkEvent *ev, gpointer p)
-+{
-+ XPropertyEvent *xev = (XPropertyEvent *)xevp;
-+
-+ if (xev->type == PropertyNotify)
-+ {
-+ GdkDisplay *gdisplay;
-+ Atom atom;
-+
-+ gdisplay = gdk_x11_lookup_xdisplay (xev->display);
-+ if (gdisplay)
-+ {
-+ atom = gdk_x11_atom_to_xatom_for_display (gdisplay, display_change_gdkatom);
-+
-+ if (xev->atom == atom)
-+ {
-+ GdkWindow *gwindow;
-+
-+ gwindow = gdk_window_lookup_for_display (gdisplay, xev->window);
-+
-+ if (gwindow)
-+ {
-+ GdkAtom actual_type;
-+ gint actual_format;
-+ gint actual_length;
-+ unsigned char *prop = NULL;
-+
-+ if (gdk_property_get (gwindow, display_change_gdkatom, string_gdkatom,
-+ 0, G_MAXLONG, FALSE, &actual_type, &actual_format,
-+ &actual_length, &prop))
-+ {
-+ if (actual_length != 0)
-+ {
-+ if (actual_type == string_gdkatom && actual_length > 8)
-+ {
-+ gchar *buf = g_malloc (actual_length + 1);
-+ int rc;
-+
-+ memcpy (buf, prop, actual_length);
-+ buf[actual_length] = 0;
-+
-+ rc = handle_request (gwindow, buf);
-+
-+ g_free (buf);
-+ generate_response (gdisplay, xev->display, xev->window, rc);
-+
-+ if (rc == DISPLAY_CHANGE_SUCCESS)
-+ update_challenge_on_windows ();
-+ }
-+
-+ reset_state (gwindow);
-+ }
-+ }
-+
-+ if (prop)
-+ g_free (prop);
-+ }
-+ }
-+
-+ return GDK_FILTER_REMOVE;
-+ }
-+ }
-+
-+ return GDK_FILTER_CONTINUE;
-+}
-+
-+static void
-+unrealize_window (GtkWidget *w)
-+{
-+ all_widgets = g_slist_remove (all_widgets, w);
-+}
-+
-+void
-+gtk_migration_mark_window (GtkWidget *w)
-+{
-+ if (! gtk_migration_initialised)
-+ {
-+ g_warning ("gtk_migration not initialised yet");
-+ return;
-+ }
-+
-+ if (GTK_WIDGET_REALIZED (w))
-+ {
-+ GdkWindow *window = w->window;
-+
-+ gdk_window_add_filter (window, filter_func, NULL);
-+
-+ reset_state (window);
-+ set_challenge_on_window (window);
-+
-+ all_widgets = g_slist_append (all_widgets, w);
-+
-+ g_signal_connect (G_OBJECT (w), "unrealize", G_CALLBACK (unrealize_window), NULL);
-+ }
-+ else
-+ g_signal_connect (G_OBJECT (w), "realize", G_CALLBACK (gtk_migration_mark_window), NULL);
-+}
-+
-+void
-+gtk_migration_init (void)
-+{
-+ if (getenv ("GPE_DISPLAY_MIGRATION_NO_AUTH") != NULL)
-+ no_auth = TRUE;
-+
-+ string_gdkatom = gdk_atom_intern ("STRING", FALSE);
-+ display_change_gdkatom = gdk_atom_intern ("_GPE_DISPLAY_CHANGE", FALSE);
-+ rsa_challenge_gdkatom = gdk_atom_intern ("_GPE_DISPLAY_CHANGE_RSA_CHALLENGE", FALSE);
-+
-+ gtk_migration_auth_generate_challenge ();
-+
-+ gtk_migration_initialised = TRUE;
-+}
---- gtk/gtkwindow.c~ 2006-07-05 13:07:08.000000000 +0200
-+++ gtk/gtkwindow.c 2006-07-05 13:07:08.000000000 +0200
-@@ -50,6 +50,9 @@
- #include "x11/gdkx.h"
- #endif
-
-+extern void gtk_migration_mark_window (GtkWidget *w);
-+
-+
- enum {
- SET_FOCUS,
- FRAME_EVENT,
-@@ -823,6 +826,10 @@
-
- g_signal_connect (window->screen, "composited_changed",
- G_CALLBACK (gtk_window_on_composited_changed), window);
-+
-+#ifdef ENABLE_MIGRATION
-+ gtk_migration_mark_window (window);
-+#endif
- }
-
- static void
diff --git a/packages/gtk+/gtk+-2.10.3/run-iconcache.patch b/packages/gtk+/gtk+-2.10.3/run-iconcache.patch
deleted file mode 100644
index f0bb6ba842..0000000000
--- a/packages/gtk+/gtk+-2.10.3/run-iconcache.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- gtk+-2.10.0/gtk/Makefile.am~ 2006-07-05 16:49:16.000000000 +0200
-+++ gtk+-2.10.0/gtk/Makefile.am 2006-07-05 16:49:16.000000000 +0200
-@@ -1088,11 +1088,11 @@
- done \
- && touch stamp-icons
-
--gtkbuiltincache.h: @REBUILD@ stamp-icons
-- $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache
-- GDK_PIXBUF_MODULE_FILE=$(top_builddir)/gdk-pixbuf/gdk-pixbuf.loaders \
-- ./gtk-update-icon-cache --force --ignore-theme-index \
-- --source builtin_icons stock-icons > gtkbuiltincache.h
-+#gtkbuiltincache.h: @REBUILD@ stamp-icons
-+# $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache
-+# GDK_PIXBUF_MODULE_FILE=$(top_builddir)/gdk-pixbuf/gdk-pixbuf.loaders \
-+# ./gtk-update-icon-cache --force --ignore-theme-index \
-+# --source builtin_icons stock-icons > gtkbuiltincache.h
-
- EXTRA_DIST += \
- $(STOCK_ICONS) \
diff --git a/packages/gtk+/gtk+-2.10.3/single-click.patch b/packages/gtk+/gtk+-2.10.3/single-click.patch
deleted file mode 100644
index 3bb208d4d6..0000000000
--- a/packages/gtk+/gtk+-2.10.3/single-click.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-diff -urNd ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkcalendar.c gtk+-2.6.3/gtk/gtkcalendar.c
---- ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkcalendar.c 2005-04-06 16:57:04 +01:00
-+++ gtk+-2.6.3/gtk/gtkcalendar.c 2005-04-06 20:05:18 +01:00
-@@ -1023,9 +1023,11 @@
- }
-
- gtk_calendar_select_and_focus_day (calendar, day);
-- }
-+
-+ // This change causes the calendar to disappear after choosing a day
-+/* }
- else if (event->type == GDK_2BUTTON_PRESS)
-- {
-+ {*/
- private_data->in_drag = 0;
- if (day_month == MONTH_CURRENT)
- g_signal_emit (calendar,
-diff -urNd ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkfilesel.c gtk+-2.6.3/gtk/gtkfilesel.c
---- ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkfilesel.c 2005-04-06 16:57:07 +01:00
-+++ gtk+-2.6.3/gtk/gtkfilesel.c 2005-04-07 13:40:32 +01:00
-@@ -2468,6 +2468,33 @@
- if (fs->last_selected != NULL)
- g_free (fs->last_selected);
-
-+ // Single-click directory entry
-+ if (new_names->len == 1)
-+ {
-+ GtkTreeView *tree_view;
-+ GtkTreeModel *model;
-+ GtkTreePath *path;
-+ GtkTreeIter iter;
-+ gboolean is_file;
-+
-+ tree_view = gtk_tree_selection_get_tree_view (selection);
-+
-+ if (gtk_tree_selection_get_selected (selection, &model, &iter))
-+ {
-+ path = gtk_tree_model_get_path (model, &iter);
-+ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1);
-+
-+ if (!is_file)
-+ {
-+ gtk_file_selection_dir_activate (tree_view, path,
-+ gtk_tree_view_get_column (tree_view, DIR_COLUMN),
-+ user_data);
-+ }
-+
-+ gtk_tree_path_free (path);
-+ }
-+ }
-+
- fs->last_selected = g_strdup (g_ptr_array_index (new_names, index));
- filename = get_real_filename (fs->last_selected, FALSE);
-
diff --git a/packages/gtk+/gtk+-2.10.3/spinbutton.patch b/packages/gtk+/gtk+-2.10.3/spinbutton.patch
deleted file mode 100644
index 8ad7507af0..0000000000
--- a/packages/gtk+/gtk+-2.10.3/spinbutton.patch
+++ /dev/null
@@ -1,128 +0,0 @@
---- gtk+-2.4.3/gtk/gtkspinbutton.c.old 2004-04-22 14:49:27.000000000 +0100
-+++ gtk+-2.4.3/gtk/gtkspinbutton.c 2004-06-30 21:48:18.000000000 +0100
-@@ -733,7 +733,7 @@
-
- spin = GTK_SPIN_BUTTON (widget);
- arrow_size = spin_button_get_arrow_size (spin);
-- panel_width = arrow_size + 2 * widget->style->xthickness;
-+ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness;
-
- widget->allocation = *allocation;
-
-@@ -866,19 +866,16 @@
- {
- width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness;
-
-+ y = widget->style->ythickness;
-+ height = widget->requisition.height - (2 * y);
-+
- if (arrow_type == GTK_ARROW_UP)
- {
- x = 0;
-- y = 0;
--
-- height = widget->requisition.height / 2;
- }
- else
- {
-- x = 0;
-- y = widget->requisition.height / 2;
--
-- height = (widget->requisition.height + 1) / 2;
-+ x = width;
- }
-
- if (spin_button_at_limit (spin_button, arrow_type))
-@@ -908,32 +905,17 @@
- shadow_type = GTK_SHADOW_OUT;
- }
- }
--
-+
- gtk_paint_box (widget->style, spin_button->panel,
- state_type, shadow_type,
- NULL, widget,
-- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down",
-+ NULL,
- x, y, width, height);
-
- height = widget->requisition.height;
-
-- if (arrow_type == GTK_ARROW_DOWN)
-- {
-- y = height / 2;
-- height = height - y - 2;
-- }
-- else
-- {
-- y = 2;
-- height = height / 2 - 2;
-- }
--
- width -= 3;
--
-- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
-- x = 2;
-- else
-- x = 1;
-+ height -= 3;
-
- w = width / 2;
- w -= w % 2 - 1; /* force odd */
-@@ -1108,7 +1090,7 @@
- if (GTK_ENTRY (widget)->editable)
- gtk_spin_button_update (spin);
-
-- if (event->y <= widget->requisition.height / 2)
-+ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness))
- {
- if (event->button == 1)
- start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment);
-@@ -1143,44 +1125,11 @@
-
- arrow_size = spin_button_get_arrow_size (spin);
-
-- if (event->button == spin->button)
-- {
-- int click_child = spin->click_child;
-+ gtk_spin_button_stop_spinning (spin);
-
-- gtk_spin_button_stop_spinning (spin);
--
-- if (event->button == 3)
-- {
-- if (event->y >= 0 && event->x >= 0 &&
-- event->y <= widget->requisition.height &&
-- event->x <= arrow_size + 2 * widget->style->xthickness)
-- {
-- if (click_child == GTK_ARROW_UP &&
-- event->y <= widget->requisition.height / 2)
-- {
-- gdouble diff;
--
-- diff = spin->adjustment->upper - spin->adjustment->value;
-- if (diff > EPSILON)
-- gtk_spin_button_real_spin (spin, diff);
-- }
-- else if (click_child == GTK_ARROW_DOWN &&
-- event->y > widget->requisition.height / 2)
-- {
-- gdouble diff;
--
-- diff = spin->adjustment->value - spin->adjustment->lower;
-- if (diff > EPSILON)
-- gtk_spin_button_real_spin (spin, -diff);
-- }
-- }
-- }
-- spin_button_redraw (spin);
-+ spin_button_redraw (spin);
-
-- return TRUE;
-- }
-- else
-- return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event);
-+ return TRUE;
- }
-
- static gint
diff --git a/packages/gtk+/gtk+-2.10.6/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.10.6/hardcoded_libtool.patch
deleted file mode 100644
index bdbdb32f97..0000000000
--- a/packages/gtk+/gtk+-2.10.6/hardcoded_libtool.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- gtk+-2.10.0/configure.in.orig 2006-07-07 09:31:34.000000000 +0100
-+++ gtk+-2.10.0/configure.in 2006-07-07 09:32:49.000000000 +0100
-@@ -370,7 +370,7 @@
- AC_MSG_CHECKING([Whether to write dependencies into .pc files])
- case $enable_explicit_deps in
- auto)
-- deplibs_check_method=`(./libtool --config; echo eval echo \\$deplibs_check_method) | sh`
-+ deplibs_check_method=`(./$host_alias-libtool --config; echo eval echo \\$deplibs_check_method) | sh`
- if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then
- enable_explicit_deps=yes
- else
-@@ -768,7 +768,7 @@
- dnl Now we check to see if our libtool supports shared lib deps
- dnl (in a rather ugly way even)
- if $dynworks; then
-- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
-+ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./$host_alias-libtool --config"
- pixbuf_deplibs_check=`$pixbuf_libtool_config | \
- grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
- sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
-@@ -1600,7 +1600,7 @@
- #
- # We are using gmodule-no-export now, but I'm leaving the stripping
- # code in place for now, since pango and atk still require gmodule.
--export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
-+export_dynamic=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
- if test -n "$export_dynamic"; then
- GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
- GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/packages/gtk+/gtk+-2.10.6/pangoxft2.10.6.diff b/packages/gtk+/gtk+-2.10.6/pangoxft2.10.6.diff
deleted file mode 100644
index 63828cec63..0000000000
--- a/packages/gtk+/gtk+-2.10.6/pangoxft2.10.6.diff
+++ /dev/null
@@ -1,2456 +0,0 @@
-http://mail.gnome.org/archives/performance-list/2006-October/msg00063.html
-
-From: Xan Lópe
-To: ext Matt Hoosier
-Cc: performance-list gnome org
-Subject: Re: [patch] Remove pangocairo from Gtk+ 2.8.20
-Date: Mon, 30 Oct 2006 14:31:56 +0200
-Hi,
-
-I've upgraded your patch against GTK+ 2.10.6, and we are getting great
-performance figures compared to GTK+ 2.10.6 with pangocairo too
-(basically at the level of GTK+ 2.6.10 again). Right now I'm working on
-a python/cairo script to get some nice graphics from a torture test
-session with several GTK+s, hope to get it ready soon.
-
-Index: gtk+-2.10.6/configure.in
-===================================================================
---- gtk+-2.10.6.orig/configure.in 2006-10-30 12:59:28.000000000 +0000
-+++ gtk+-2.10.6/configure.in 2006-10-30 12:59:30.000000000 +0000
-@@ -1435,7 +1435,7 @@
- if test "x$gdktarget" = "xwin32"; then
- PANGO_PACKAGES="pangowin32 pangocairo"
- else
-- PANGO_PACKAGES="pango pangocairo"
-+ PANGO_PACKAGES="pango pangocairo pangoxft"
- fi
-
- AC_MSG_CHECKING(Pango flags)
-Index: gtk+-2.10.6/gdk/gdkaliasdef.c
-===================================================================
---- gtk+-2.10.6.orig/gdk/gdkaliasdef.c 2006-10-30 12:58:29.000000000 +0000
-+++ gtk+-2.10.6/gdk/gdkaliasdef.c 2006-10-30 12:59:30.000000000 +0000
-@@ -1799,9 +1799,6 @@
- #undef gdk_pango_context_get
- extern __typeof (gdk_pango_context_get) gdk_pango_context_get __attribute((alias("IA__gdk_pango_context_get"), visibility("default")));
-
--#undef gdk_pango_context_get_for_screen
--extern __typeof (gdk_pango_context_get_for_screen) gdk_pango_context_get_for_screen __attribute((alias("IA__gdk_pango_context_get_for_screen"), visibility("default")));
--
- #ifndef GDK_DISABLE_DEPRECATED
- #undef gdk_pango_context_set_colormap
- extern __typeof (gdk_pango_context_set_colormap) gdk_pango_context_set_colormap __attribute((alias("IA__gdk_pango_context_set_colormap"), visibility("default")));
-@@ -1836,6 +1833,13 @@
-
- #endif
- #endif
-+#if IN_HEADER(__GDK_PANGO_H__)
-+#if IN_FILE(__GDK_PANGO_X11_C__)
-+#undef gdk_pango_context_get_for_screen
-+extern __typeof (gdk_pango_context_get_for_screen) gdk_pango_context_get_for_screen __attribute((alias("IA__gdk_pango_context_get_for_screen"), visibility("default")));
-+
-+#endif
-+#endif
- #if IN_HEADER(__GDK_PIXBUF_H__)
- #if IN_FILE(__GDK_PIXBUF_DRAWABLE_C__)
- #undef gdk_pixbuf_get_from_drawable
-Index: gtk+-2.10.6/gdk/gdkalias.h
-===================================================================
---- gtk+-2.10.6.orig/gdk/gdkalias.h 2006-10-30 12:58:29.000000000 +0000
-+++ gtk+-2.10.6/gdk/gdkalias.h 2006-10-30 12:59:30.000000000 +0000
-@@ -1796,9 +1796,6 @@
- extern __typeof (gdk_pango_context_get) IA__gdk_pango_context_get __attribute((visibility("hidden")));
- #define gdk_pango_context_get IA__gdk_pango_context_get
-
--extern __typeof (gdk_pango_context_get_for_screen) IA__gdk_pango_context_get_for_screen __attribute((visibility("hidden")));
--#define gdk_pango_context_get_for_screen IA__gdk_pango_context_get_for_screen
--
- #ifndef GDK_DISABLE_DEPRECATED
- extern __typeof (gdk_pango_context_set_colormap) IA__gdk_pango_context_set_colormap __attribute((visibility("hidden")));
- #define gdk_pango_context_set_colormap IA__gdk_pango_context_set_colormap
-@@ -1833,6 +1830,13 @@
-
- #endif
- #endif
-+#if IN_HEADER(__GDK_PANGO_H__)
-+#if IN_FILE(__GDK_PANGO_X11_C__)
-+extern __typeof (gdk_pango_context_get_for_screen) IA__gdk_pango_context_get_for_screen __attribute((visibility("hidden")));
-+#define gdk_pango_context_get_for_screen IA__gdk_pango_context_get_for_screen
-+
-+#endif
-+#endif
- #if IN_HEADER(__GDK_PIXBUF_H__)
- #if IN_FILE(__GDK_PIXBUF_DRAWABLE_C__)
- extern __typeof (gdk_pixbuf_get_from_drawable) IA__gdk_pixbuf_get_from_drawable __attribute((visibility("hidden")));
-Index: gtk+-2.10.6/gdk/gdkdraw.c
-===================================================================
---- gtk+-2.10.6.orig/gdk/gdkdraw.c 2006-10-30 12:58:29.000000000 +0000
-+++ gtk+-2.10.6/gdk/gdkdraw.c 2006-10-30 12:59:30.000000000 +0000
-@@ -909,9 +909,9 @@
- {
- g_return_if_fail (GDK_IS_DRAWABLE (drawable));
- g_return_if_fail (GDK_IS_GC (gc));
--
-- real_draw_glyphs (drawable, gc, NULL, font,
-- x, y, glyphs);
-+
-+
-+ GDK_DRAWABLE_GET_CLASS (drawable)->draw_glyphs (drawable, gc, font, x, y, glyphs);
- }
-
- /**
-@@ -949,8 +949,9 @@
- g_return_if_fail (GDK_IS_DRAWABLE (drawable));
- g_return_if_fail (GDK_IS_GC (gc));
-
-- real_draw_glyphs (drawable, gc, matrix, font,
-- x / PANGO_SCALE, y / PANGO_SCALE, glyphs);
-+ if (GDK_DRAWABLE_GET_CLASS (drawable)->draw_glyphs_transformed)
-+ GDK_DRAWABLE_GET_CLASS (drawable)->draw_glyphs_transformed (drawable, gc, matrix,
-+ font, x, y, glyphs);
- }
-
- /**
-@@ -974,28 +975,12 @@
- GdkTrapezoid *trapezoids,
- gint n_trapezoids)
- {
-- cairo_t *cr;
-- int i;
--
- g_return_if_fail (GDK_IS_DRAWABLE (drawable));
- g_return_if_fail (GDK_IS_GC (gc));
- g_return_if_fail (n_trapezoids == 0 || trapezoids != NULL);
-
-- cr = gdk_cairo_create (drawable);
-- _gdk_gc_update_context (gc, cr, NULL, NULL, TRUE);
--
-- for (i = 0; i < n_trapezoids; i++)
-- {
-- cairo_move_to (cr, trapezoids[i].x11, trapezoids[i].y1);
-- cairo_line_to (cr, trapezoids[i].x21, trapezoids[i].y1);
-- cairo_line_to (cr, trapezoids[i].x22, trapezoids[i].y2);
-- cairo_line_to (cr, trapezoids[i].x21, trapezoids[i].y2);
-- cairo_close_path (cr);
-- }
--
-- cairo_fill (cr);
--
-- cairo_destroy (cr);
-+ GDK_DRAWABLE_GET_CLASS (drawable)->draw_trapezoids (drawable, gc,
-+ trapezoids, n_trapezoids);
- }
-
- /**
-Index: gtk+-2.10.6/gdk/gdkpango.c
-===================================================================
---- gtk+-2.10.6.orig/gdk/gdkpango.c 2006-10-30 12:58:29.000000000 +0000
-+++ gtk+-2.10.6/gdk/gdkpango.c 2006-10-30 12:59:30.000000000 +0000
-@@ -50,19 +50,34 @@
- GdkBitmap *stipple[MAX_RENDER_PART + 1];
- gboolean embossed;
-
-- cairo_t *cr;
-- PangoRenderPart last_part;
-+ /* When switching between the normal and shadow copies when
-+ * drawing shadows we can get unexpected recursion into the
-+ * drawing functions; the 'in_emboss' flag guards against that.
-+ */
-+ gboolean in_emboss;
-
- /* Current target */
- GdkDrawable *drawable;
- GdkGC *base_gc;
-
- gboolean gc_changed;
-+
-+ /* Cached GC, derived from base_gc */
-+ GdkGC *gc;
-+ PangoColor gc_color;
-+ gboolean gc_color_set;
-+ GdkBitmap *gc_stipple;
-+
-+ /* we accumulate trapezoids for the same PangoRenderPart */
-+ GArray *trapezoids;
-+ PangoRenderPart trapezoid_part;
- };
-
- static PangoAttrType gdk_pango_attr_stipple_type;
- static PangoAttrType gdk_pango_attr_embossed_type;
-
-+static void flush_trapezoids (GdkPangoRenderer *gdk_renderer);
-+
- enum {
- PROP_0,
- PROP_SCREEN
-@@ -77,6 +92,10 @@
- GdkPangoRendererPrivate *priv = gdk_renderer->priv;
- int i;
-
-+ if (priv->gc)
-+ g_object_unref (priv->gc);
-+ if (priv->gc_stipple)
-+ g_object_unref (priv->gc_stipple);
- if (priv->base_gc)
- g_object_unref (priv->base_gc);
- if (priv->drawable)
-@@ -86,6 +105,8 @@
- if (priv->stipple[i])
- g_object_unref (priv->stipple[i]);
-
-+ g_array_free (priv->trapezoids, TRUE);
-+
- G_OBJECT_CLASS (gdk_pango_renderer_parent_class)->finalize (object);
- }
-
-@@ -112,25 +133,6 @@
- return object;
- }
-
--/* Adjusts matrix and color for the renderer to draw the secondary
-- * "shadow" copy for embossed text */
--static void
--emboss_context (cairo_t *cr)
--{
-- cairo_matrix_t tmp_matrix;
--
-- /* The gymnastics here to adjust the matrix are because we want
-- * to offset by +1,+1 in device-space, not in user-space,
-- * so we can't just draw the layout at x + 1, y + 1
-- */
-- cairo_get_matrix (cr, &tmp_matrix);
-- tmp_matrix.x0 += 1.0;
-- tmp_matrix.y0 += 1.0;
-- cairo_set_matrix (cr, &tmp_matrix);
--
-- cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
--}
--
- static inline gboolean
- color_equal (PangoColor *c1, PangoColor *c2)
- {
-@@ -146,74 +148,154 @@
- return FALSE;
- }
-
--static cairo_t *
--get_cairo_context (GdkPangoRenderer *gdk_renderer,
-- PangoRenderPart part)
-+/* Adjusts matrix and color for the renderer to draw the secondar
-+ * "shadow" copy for embossed text */
-+static void
-+emboss_renderer (PangoRenderer *renderer,
-+ PangoRenderPart part,
-+ PangoMatrix **save_matrix,
-+ PangoColor **save_color)
-+{
-+ GdkPangoRendererPrivate *priv = GDK_PANGO_RENDERER(renderer)->priv;
-+ static const PangoColor white = { 0xffff, 0xffff, 0xffff };
-+ PangoMatrix tmp_matrix = PANGO_MATRIX_INIT;
-+
-+ priv->in_emboss = TRUE;
-+
-+ *save_color = pango_renderer_get_color (renderer, part);
-+ if (*save_color)
-+ *save_color = pango_color_copy (*save_color);
-+
-+ *save_matrix = renderer->matrix;
-+ if (*save_matrix)
-+ {
-+ *save_matrix = pango_matrix_copy (*save_matrix);
-+ tmp_matrix = **save_matrix;
-+ }
-+
-+ /* The gymnastics here to adjust the matrix are because we want
-+ * to offset by +1,+1 in device-space, not in user-space,
-+ * so we can't just draw the layout at x + 1, y + 1
-+ */
-+ tmp_matrix.x0 += 1;
-+ tmp_matrix.y0 += 1;
-+
-+ pango_renderer_set_matrix (renderer, &tmp_matrix);
-+ pango_renderer_set_color (renderer, part, &white);
-+}
-+
-+/* Restores from emboss_renderer() */
-+static void
-+unemboss_renderer (PangoRenderer *renderer,
-+ PangoRenderPart part,
-+ PangoMatrix **save_matrix,
-+ PangoColor **save_color)
-+{
-+ GdkPangoRendererPrivate *priv = GDK_PANGO_RENDERER(renderer)->priv;
-+ pango_renderer_set_matrix (renderer, *save_matrix);
-+ pango_renderer_set_color (renderer, part, *save_color);
-+
-+ if (*save_matrix)
-+ pango_matrix_free (*save_matrix);
-+ if (*save_color)
-+ pango_color_free (*save_color);
-+
-+ priv->in_emboss = FALSE;
-+}
-+
-+/* Gets the GC for drawing @part. This make involve copying the base GC
-+ * for the renderer, in which case we keep a one-GC cache. */
-+static GdkGC *
-+get_gc (GdkPangoRenderer *gdk_renderer,
-+ PangoRenderPart part)
- {
- PangoRenderer *renderer = PANGO_RENDERER (gdk_renderer);
-+ PangoColor *color;
-+ GdkBitmap *stipple;
- GdkPangoRendererPrivate *priv = gdk_renderer->priv;
-
-- if (!priv->cr)
-+ color = pango_renderer_get_color (renderer, part);
-+
-+ if (part <= MAX_RENDER_PART)
-+ stipple = priv->stipple[part];
-+ else
-+ stipple = NULL;
-+
-+ if (!color && !stipple) /* nothing override, use base_gc */
-+ return priv->base_gc;
-+ else
- {
-- const PangoMatrix *matrix;
-+ gboolean new_stipple = FALSE;
-+ gboolean new_color = FALSE;
-
-- priv->cr = gdk_cairo_create (priv->drawable);
-+ if (stipple != priv->gc_stipple)
-+ new_stipple = TRUE;
-
-- matrix = pango_renderer_get_matrix (renderer);
-- if (matrix)
-+ if ((priv->gc_color_set && !color) ||
-+ (!priv->gc_color_set && color) ||
-+ priv->gc_color.red != color->red ||
-+ priv->gc_color.green != color->green ||
-+ priv->gc_color.blue != color->blue)
-+ new_color = TRUE;
-+
-+ if (!priv->gc)
- {
-- cairo_matrix_t cairo_matrix;
--
-- cairo_matrix_init (&cairo_matrix,
-- matrix->xx, matrix->yx,
-- matrix->xy, matrix->yy,
-- matrix->x0, matrix->y0);
-- cairo_set_matrix (priv->cr, &cairo_matrix);
-+ priv->gc = gdk_gc_new (priv->drawable);
-+ gdk_gc_copy (priv->gc, priv->base_gc);
-+ }
-+ else if (new_color && priv->gc_color_set && !color)
-+ {
-+ /* We have to recopy the original GC onto the cached GC
-+ * to get the default color */
-+ new_stipple = TRUE;
-+ gdk_gc_copy (priv->gc, priv->base_gc);
-+ }
-+ else if (new_stipple && priv->gc_stipple && !stipple)
-+ {
-+ /* Similarly, we need to make a new copy to restore to the
-+ * default stipple state (the caller may have set a stipple
-+ * on the GC, and even if not, gdk_gc_set_stipple (gc, NULL)
-+ * doesn't work currently to restore to the default X stipple) */
-+ new_color = TRUE;
-+ gdk_gc_copy (priv->gc, priv->base_gc);
- }
-- }
--
-- if (part != priv->last_part)
-- {
-- PangoColor *pango_color;
-- GdkColor *color;
-- GdkColor tmp_color;
-- gboolean changed;
-
-- pango_color = pango_renderer_get_color (renderer, part);
--
-- if (priv->last_part != -1)
-- changed = priv->gc_changed ||
-- priv->stipple[priv->last_part] != priv->stipple[part] ||
-- !color_equal (pango_color,
-- pango_renderer_get_color (renderer, priv->last_part));
-- else
-- changed = TRUE;
--
-- if (changed)
-+ if (new_color)
- {
-- if (pango_color)
-+ if (color)
- {
-- tmp_color.red = pango_color->red;
-- tmp_color.green = pango_color->green;
-- tmp_color.blue = pango_color->blue;
-+ GdkColor gdk_color;
-+
-+ gdk_color.red = color->red;
-+ gdk_color.green = color->green;
-+ gdk_color.blue = color->blue;
-
-- color = &tmp_color;
-+ gdk_gc_set_rgb_fg_color (priv->gc, &gdk_color);
-+
-+ priv->gc_color = *color;
-+ priv->gc_color_set = TRUE;
- }
- else
-- color = NULL;
-+ priv->gc_color_set = FALSE;
-+ }
-
-- _gdk_gc_update_context (priv->base_gc,
-- priv->cr,
-- color,
-- priv->stipple[part],
-- priv->gc_changed);
-+ if (new_stipple)
-+ {
-+ if (priv->gc_stipple)
-+ g_object_unref (priv->gc_stipple);
-+
-+ if (stipple)
-+ {
-+ gdk_gc_set_stipple (priv->gc, stipple);
-+ gdk_gc_set_fill (priv->gc, GDK_STIPPLED);
-+ priv->gc_stipple = g_object_ref (stipple);
-+ }
-+ else
-+ priv->gc_stipple = NULL;
- }
-
-- priv->last_part = part;
-- priv->gc_changed = FALSE;
-+ return priv->gc;
- }
--
-- return priv->cr;
- }
-
- static void
-@@ -225,133 +307,78 @@
- {
- GdkPangoRenderer *gdk_renderer = GDK_PANGO_RENDERER (renderer);
- GdkPangoRendererPrivate *priv = gdk_renderer->priv;
-- cairo_t *cr;
-
-- cr = get_cairo_context (gdk_renderer,
-- PANGO_RENDER_PART_FOREGROUND);
-+ flush_trapezoids (gdk_renderer);
-
-- if (priv->embossed)
-+ if (!priv->in_emboss && priv->embossed)
- {
-- cairo_save (cr);
-- emboss_context (cr);
-- cairo_move_to (cr, (double)x / PANGO_SCALE, (double)y / PANGO_SCALE);
-- pango_cairo_show_glyph_string (cr, font, glyphs);
-- cairo_restore (cr);
-- }
--
-- cairo_move_to (cr, (double)x / PANGO_SCALE, (double)y / PANGO_SCALE);
-- pango_cairo_show_glyph_string (cr, font, glyphs);
--}
--
--/* Draws an error underline that looks like one of:
-- * H E H
-- * /\ /\ /\ /\ /\ -
-- * A/ \ / \ / \ A/ \ / \ |
-- * \ \ / \ / /D \ \ / \ |
-- * \ \/ C \/ / \ \/ C \ | height = HEIGHT_SQUARES * square
-- * \ /\ F / \ F /\ \ |
-- * \ / \ / \ / \ \G |
-- * \ / \ / \ / \ / |
-- * \/ \/ \/ \/ -
-- * B B
-- * |----|
-- * unit_width = (HEIGHT_SQUARES - 1) * square
-- *
-- * The x, y, width, height passed in give the desired bounding box;
-- * x/width are adjusted to make the underline a integer number of units
-- * wide.
-- */
--#define HEIGHT_SQUARES 2.5
-+ PangoMatrix *save_matrix;
-+ PangoColor *save_color;
-
--/* Cut-and-pasted between here and pango/pango/pangocairo-render.c */
-+ emboss_renderer (renderer, PANGO_RENDER_PART_FOREGROUND, &save_matrix, &save_color);
-+ gdk_draw_glyphs_transformed (priv->drawable,
-+ get_gc (gdk_renderer, PANGO_RENDER_PART_FOREGROUND),
-+ renderer->matrix, font, x, y, glyphs);
-+ unemboss_renderer (renderer, PANGO_RENDER_PART_FOREGROUND, &save_matrix, &save_color);
-+ }
-+
-+ gdk_draw_glyphs_transformed (priv->drawable,
-+ get_gc (gdk_renderer, PANGO_RENDER_PART_FOREGROUND),
-+ renderer->matrix, font, x, y, glyphs);
-+}
-+
-+/* Outputs any pending trapezoids, we do this when the part or
-+ * part color changes, when we are about to draw text, etc. */
- static void
--draw_error_underline (cairo_t *cr,
-- double x,
-- double y,
-- double width,
-- double height)
--{
-- double square = height / HEIGHT_SQUARES;
-- double unit_width = (HEIGHT_SQUARES - 1) * square;
-- int width_units = (width + unit_width / 2) / unit_width;
-- double y_top, y_bottom;
-- int i;
-+flush_trapezoids (GdkPangoRenderer *gdk_renderer)
-+{
-+ GdkPangoRendererPrivate *priv = gdk_renderer->priv;
-
-- x += (width - width_units * unit_width) / 2;
-- width = width_units * unit_width;
-+ if (!priv->trapezoids || priv->trapezoids->len == 0)
-+ return;
-
-- y_top = y;
-- y_bottom = y + height;
--
-- /* Bottom of squiggle */
-- cairo_move_to (cr, x - square / 2, y_top + square / 2); /* A */
-- for (i = 0; i < width_units; i += 2)
-- {
-- double x_middle = x + (i + 1) * unit_width;
-- double x_right = x + (i + 2) * unit_width;
--
-- cairo_line_to (cr, x_middle, y_bottom); /* B */
--
-- if (i + 1 == width_units)
-- /* Nothing */;
-- else if (i + 2 == width_units)
-- cairo_line_to (cr, x_right + square / 2, y_top + square / 2); /* D */
-- else
-- cairo_line_to (cr, x_right, y_top + square); /* C */
-- }
--
-- /* Top of squiggle */
-- for (i -= 2; i >= 0; i -= 2)
-- {
-- double x_left = x + i * unit_width;
-- double x_middle = x + (i + 1) * unit_width;
-- double x_right = x + (i + 2) * unit_width;
--
-- if (i + 1 == width_units)
-- cairo_line_to (cr, x_middle + square / 2, y_bottom - square / 2); /* G */
-- else {
-- if (i + 2 == width_units)
-- cairo_line_to (cr, x_right, y_top); /* E */
-- cairo_line_to (cr, x_middle, y_bottom - square); /* F */
-- }
--
-- cairo_line_to (cr, x_left, y_top); /* H */
-- }
-+ gdk_draw_trapezoids (priv->drawable,
-+ get_gc (gdk_renderer, priv->trapezoid_part),
-+ (GdkTrapezoid *)priv->trapezoids->data,
-+ priv->trapezoids->len);
-
-- cairo_close_path (cr);
-- cairo_fill (cr);
-+ g_array_set_size (priv->trapezoids, 0);
- }
-
-+/* Draws a single trapezoid ... we don't draw it immediately, but rather
-+ * cache it to join together with other trapezoids that form part of the
-+ * same logical shape */
- static void
--gdk_pango_renderer_draw_rectangle (PangoRenderer *renderer,
-- PangoRenderPart part,
-- int x,
-- int y,
-- int width,
-- int height)
-+gdk_pango_renderer_draw_trapezoid (PangoRenderer *renderer,
-+ PangoRenderPart part,
-+ double y1,
-+ double x11,
-+ double x21,
-+ double y2,
-+ double x12,
-+ double x22)
- {
- GdkPangoRenderer *gdk_renderer = GDK_PANGO_RENDERER (renderer);
-- GdkPangoRendererPrivate *priv = gdk_renderer->priv;
-- cairo_t *cr;
--
-- cr = get_cairo_context (gdk_renderer, part);
--
-- if (priv->embossed && part != PANGO_RENDER_PART_BACKGROUND)
-- {
-- cairo_save (cr);
-- emboss_context (cr);
-- cairo_rectangle (cr,
-- (double)x / PANGO_SCALE, (double)y / PANGO_SCALE,
-- (double)width / PANGO_SCALE, (double)height / PANGO_SCALE);
-+ GdkTrapezoid trap;
-
-- cairo_fill (cr);
-- cairo_restore (cr);
-- }
-+ if (!gdk_renderer->priv->trapezoids)
-+ gdk_renderer->priv->trapezoids = g_array_new (FALSE, FALSE,
-+ sizeof (GdkTrapezoid));
-+
-+ if (gdk_renderer->priv->trapezoids->len > 0 &&
-+ gdk_renderer->priv->trapezoid_part != part)
-+ flush_trapezoids (gdk_renderer);
-+
-+ gdk_renderer->priv->trapezoid_part = part;
-+
-+ trap.y1 = y1;
-+ trap.x11 = x11 / 2;
-+ trap.x21 = x21;
-+ trap.y2 = y2;
-+ trap.x12 = x12;
-+ trap.x22 = x22;
-
-- cairo_rectangle (cr,
-- (double)x / PANGO_SCALE, (double)y / PANGO_SCALE,
-- (double)width / PANGO_SCALE, (double)height / PANGO_SCALE);
-- cairo_fill (cr);
-+ g_array_append_val (gdk_renderer->priv->trapezoids, trap);
- }
-
- static void
-@@ -363,23 +390,51 @@
- {
- GdkPangoRenderer *gdk_renderer = GDK_PANGO_RENDERER (renderer);
- GdkPangoRendererPrivate *priv = gdk_renderer->priv;
-- cairo_t *cr;
--
-- cr = get_cairo_context (gdk_renderer, PANGO_RENDER_PART_UNDERLINE);
--
-- if (priv->embossed)
-+
-+ if (!priv->in_emboss && priv->embossed)
- {
-- cairo_save (cr);
-- emboss_context (cr);
-- draw_error_underline (cr,
-- (double)x / PANGO_SCALE, (double)y / PANGO_SCALE,
-- (double)width / PANGO_SCALE, (double)height / PANGO_SCALE);
-- cairo_restore (cr);
-+ PangoMatrix *save_matrix;
-+ PangoColor *save_color;
-+
-+ emboss_renderer (renderer, PANGO_RENDER_PART_UNDERLINE, &save_matrix, &save_color);
-+ PANGO_RENDERER_CLASS (gdk_pango_renderer_parent_class)->draw_error_underline (renderer,
-+ x, y, width, height);
-+ unemboss_renderer (renderer, PANGO_RENDER_PART_UNDERLINE, &save_matrix, &save_color);
- }
-
-- draw_error_underline (cr,
-- (double)x / PANGO_SCALE, (double)y / PANGO_SCALE,
-- (double)width / PANGO_SCALE, (double)height / PANGO_SCALE);
-+ PANGO_RENDERER_CLASS (gdk_pango_renderer_parent_class)->draw_error_underline (renderer,
-+ x, y, width, height);
-+}
-+
-+/* We can't handle embossing at the level of trapezoids, because when an
-+ * underline is split into multiple trapezoids, the normal and shadow
-+ * trapezoids will be drawn mixed together. Instead, we have to emboss
-+ * and entire rectangle or error underline
-+ */
-+static void
-+gdk_pango_renderer_draw_rectangle (PangoRenderer *renderer,
-+ PangoRenderPart part,
-+ int x,
-+ int y,
-+ int width,
-+ int height)
-+{
-+ GdkPangoRenderer *gdk_renderer = GDK_PANGO_RENDERER (renderer);
-+ GdkPangoRendererPrivate *priv = gdk_renderer->priv;
-+
-+ if (!priv->in_emboss && priv->embossed && part != PANGO_RENDER_PART_BACKGROUND)
-+ {
-+ PangoMatrix *save_matrix;
-+ PangoColor *save_color;
-+
-+ emboss_renderer (renderer, part, &save_matrix, &save_color);
-+ PANGO_RENDERER_CLASS (gdk_pango_renderer_parent_class)->draw_rectangle (renderer, part,
-+ x, y, width, height);
-+ unemboss_renderer (renderer, part, &save_matrix, &save_color);
-+ }
-+
-+ PANGO_RENDERER_CLASS (gdk_pango_renderer_parent_class)->draw_rectangle (renderer, part,
-+ x, y, width, height);
- }
-
- static void
-@@ -388,8 +443,8 @@
- {
- GdkPangoRenderer *gdk_renderer = GDK_PANGO_RENDERER (renderer);
-
-- if (gdk_renderer->priv->last_part == part)
-- gdk_renderer->priv->last_part = (PangoRenderPart)-1;
-+ if (part == gdk_renderer->priv->trapezoid_part)
-+ flush_trapezoids (gdk_renderer);
- }
-
- static void
-@@ -410,13 +465,8 @@
- {
- GdkPangoRenderer *gdk_renderer = GDK_PANGO_RENDERER (renderer);
- GdkPangoRendererPrivate *priv = gdk_renderer->priv;
--
-- if (priv->cr)
-- {
-- cairo_destroy (priv->cr);
-- priv->cr = NULL;
-- }
-- priv->last_part = (PangoRenderPart)-1;
-+
-+ flush_trapezoids (gdk_renderer);
- }
-
- static void
-@@ -515,7 +565,6 @@
- GDK_TYPE_PANGO_RENDERER,
- GdkPangoRendererPrivate);
-
-- renderer->priv->last_part = (PangoRenderPart)-1;
- renderer->priv->gc_changed = TRUE;
- }
-
-@@ -527,6 +576,7 @@
- PangoRendererClass *renderer_class = PANGO_RENDERER_CLASS (klass);
-
- renderer_class->draw_glyphs = gdk_pango_renderer_draw_glyphs;
-+ renderer_class->draw_trapezoid = gdk_pango_renderer_draw_trapezoid;
- renderer_class->draw_rectangle = gdk_pango_renderer_draw_rectangle;
- renderer_class->draw_error_underline = gdk_pango_renderer_draw_error_underline;
- renderer_class->part_changed = gdk_pango_renderer_part_changed;
-@@ -647,6 +697,8 @@
-
- priv = gdk_renderer->priv;
-
-+ flush_trapezoids (gdk_renderer);
-+
- if (priv->drawable != drawable)
- {
- if (priv->drawable)
-@@ -681,6 +733,8 @@
-
- priv = gdk_renderer->priv;
-
-+ flush_trapezoids (gdk_renderer);
-+
- if (priv->base_gc != gc)
- {
- if (priv->base_gc)
-@@ -689,6 +743,20 @@
- if (priv->base_gc)
- g_object_ref (priv->base_gc);
-
-+ if (priv->gc)
-+ {
-+ g_object_unref (priv->gc);
-+ priv->gc = NULL;
-+ }
-+
-+ priv->gc_color_set = FALSE;
-+
-+ if (priv->gc_stipple)
-+ {
-+ g_object_unref (priv->gc_stipple);
-+ priv->gc_stipple = NULL;
-+ }
-+
- priv->gc_changed = TRUE;
- }
- }
-@@ -1414,50 +1482,5 @@
- return gdk_pango_context_get_for_screen (gdk_screen_get_default ());
- }
-
--/**
-- * gdk_pango_context_get_for_screen:
-- * @screen: the #GdkScreen for which the context is to be created.
-- *
-- * Creates a #PangoContext for @screen.
-- *
-- * The context must be freed when you're finished with it.
-- *
-- * When using GTK+, normally you should use gtk_widget_get_pango_context()
-- * instead of this function, to get the appropriate context for
-- * the widget you intend to render text onto.
-- *
-- * The newly created context will have the default font options
-- * (see #cairo_font_options_t) for the screen; if these options
-- * change it will not be updated. Using gtk_widget_get_pango_context()
-- * is more convenient if you want to keep a context around and track
-- * changes to the screen's font rendering settings.
-- *
-- * Return value: a new #PangoContext for @screen
-- *
-- * Since: 2.2
-- **/
--PangoContext *
--gdk_pango_context_get_for_screen (GdkScreen *screen)
--{
-- PangoFontMap *fontmap;
-- PangoContext *context;
-- const cairo_font_options_t *options;
-- double dpi;
--
-- g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
--
-- fontmap = pango_cairo_font_map_get_default ();
--
-- context = pango_cairo_font_map_create_context (PANGO_CAIRO_FONT_MAP (fontmap));
--
-- options = gdk_screen_get_font_options (screen);
-- pango_cairo_context_set_font_options (context, options);
--
-- dpi = gdk_screen_get_resolution (screen);
-- pango_cairo_context_set_resolution (context, dpi);
--
-- return context;
--}
--
- #define __GDK_PANGO_C__
- #include "gdkaliasdef.c"
-Index: gtk+-2.10.6/gdk/gdk.symbols
-===================================================================
---- gtk+-2.10.6.orig/gdk/gdk.symbols 2006-10-30 12:58:29.000000000 +0000
-+++ gtk+-2.10.6/gdk/gdk.symbols 2006-10-30 12:59:30.000000000 +0000
-@@ -861,7 +861,6 @@
- gdk_pango_attr_embossed_new
- gdk_pango_attr_stipple_new
- gdk_pango_context_get
--gdk_pango_context_get_for_screen
- #ifndef GDK_DISABLE_DEPRECATED
- gdk_pango_context_set_colormap
- #endif
-@@ -877,6 +876,12 @@
- #endif
- #endif
-
-+#if IN_HEADER(__GDK_PANGO_H__)
-+#if IN_FILE(__GDK_PANGO_X11_C__)
-+gdk_pango_context_get_for_screen
-+#endif
-+#endif
-+
- #if IN_HEADER(__GDK_PIXBUF_H__)
- #if IN_FILE(__GDK_PIXBUF_DRAWABLE_C__)
- gdk_pixbuf_get_from_drawable
-Index: gtk+-2.10.6/gdk/gdkwindow.c
-===================================================================
---- gtk+-2.10.6.orig/gdk/gdkwindow.c 2006-10-30 12:58:29.000000000 +0000
-+++ gtk+-2.10.6/gdk/gdkwindow.c 2006-10-30 12:59:30.000000000 +0000
-@@ -1834,9 +1834,14 @@
- }
- else
- {
-- method->cr = cairo_create (paint->surface);
-+ /*method->cr = cairo_create (paint->surface);
-
-- gdk_cairo_set_source_color (method->cr, &private->bg_color);
-+ gdk_cairo_set_source_color (method->cr, &private->bg_color);*/
-+ GdkGC *gc = _gdk_drawable_get_scratch_gc (paint->pixmap, FALSE);
-+
-+ gdk_gc_set_foreground (gc, &(private->bg_color));
-+
-+ method->gc = g_object_ref (gc);
- }
- }
-
-Index: gtk+-2.10.6/gdk/x11/gdkdisplay-x11.c
-===================================================================
---- gtk+-2.10.6.orig/gdk/x11/gdkdisplay-x11.c 2006-10-30 12:58:29.000000000 +0000
-+++ gtk+-2.10.6/gdk/x11/gdkdisplay-x11.c 2006-10-30 12:59:30.000000000 +0000
-@@ -190,7 +190,8 @@
- display_x11->leader_window_title_set = FALSE;
-
- display_x11->have_render = GDK_UNKNOWN;
--
-+ display_x11->have_render_with_trapezoids = GDK_UNKNOWN;
-+
- #ifdef HAVE_XFIXES
- if (XFixesQueryExtension (display_x11->xdisplay,
- &display_x11->xfixes_event_base,
-Index: gtk+-2.10.6/gdk/x11/gdkdisplay-x11.h
-===================================================================
---- gtk+-2.10.6.orig/gdk/x11/gdkdisplay-x11.h 2006-10-30 12:58:29.000000000 +0000
-+++ gtk+-2.10.6/gdk/x11/gdkdisplay-x11.h 2006-10-30 12:59:30.000000000 +0000
-@@ -78,6 +78,7 @@
- gboolean use_xshm;
- gboolean have_shm_pixmaps;
- GdkTristate have_render;
-+ GdkTristate have_render_with_trapezoids;
- gboolean have_xfixes;
- gint xfixes_event_base;
-
-Index: gtk+-2.10.6/gdk/x11/gdkdrawable-x11.c
-===================================================================
---- gtk+-2.10.6.orig/gdk/x11/gdkdrawable-x11.c 2006-10-30 12:58:30.000000000 +0000
-+++ gtk+-2.10.6/gdk/x11/gdkdrawable-x11.c 2006-10-30 12:59:30.000000000 +0000
-@@ -26,6 +26,8 @@
-
- #include <config.h>
-
-+#include <pango/pangoxft.h>
-+
- #include "gdkx.h"
- #include "gdkregion-generic.h"
-
-@@ -106,7 +108,21 @@
- GdkGC *gc,
- GdkPoint *points,
- gint npoints);
--
-+
-+static void gdk_x11_draw_glyphs (GdkDrawable *drawable,
-+ GdkGC *gc,
-+ PangoFont *font,
-+ gint x,
-+ gint y,
-+ PangoGlyphString *glyphs);
-+static void gdk_x11_draw_glyphs_transformed (GdkDrawable *drawable,
-+ GdkGC *gc,
-+ PangoMatrix *matrix,
-+ PangoFont *font,
-+ gint x,
-+ gint y,
-+ PangoGlyphString *glyphs);
-+
- static void gdk_x11_draw_image (GdkDrawable *drawable,
- GdkGC *gc,
- GdkImage *image,
-@@ -129,6 +145,11 @@
- gint x_dither,
- gint y_dither);
-
-+static void gdk_x11_draw_trapezoids (GdkDrawable *drawable,
-+ GdkGC *gc,
-+ GdkTrapezoid *trapezoids,
-+ gint n_trapezoids);
-+
- static cairo_surface_t *gdk_x11_ref_cairo_surface (GdkDrawable *drawable);
-
- static void gdk_x11_set_colormap (GdkDrawable *drawable,
-@@ -163,8 +184,11 @@
- drawable_class->draw_points = gdk_x11_draw_points;
- drawable_class->draw_segments = gdk_x11_draw_segments;
- drawable_class->draw_lines = gdk_x11_draw_lines;
-+ drawable_class->draw_glyphs = gdk_x11_draw_glyphs;
-+ drawable_class->draw_glyphs_transformed = gdk_x11_draw_glyphs_transformed;
- drawable_class->draw_image = gdk_x11_draw_image;
- drawable_class->draw_pixbuf = gdk_x11_draw_pixbuf;
-+ drawable_class->draw_trapezoids = gdk_x11_draw_trapezoids;
-
- drawable_class->ref_cairo_surface = gdk_x11_ref_cairo_surface;
-
-@@ -327,6 +351,72 @@
- return x11display->have_render == GDK_YES;
- }
-
-+gboolean
-+_gdk_x11_have_render_with_trapezoids (GdkDisplay *display)
-+{
-+ Display *xdisplay = GDK_DISPLAY_XDISPLAY (display);
-+ GdkDisplayX11 *x11display = GDK_DISPLAY_X11 (display);
-+
-+ if (x11display->have_render_with_trapezoids == GDK_UNKNOWN)
-+ {
-+ x11display->have_render_with_trapezoids = GDK_NO;
-+ if (_gdk_x11_have_render (display))
-+ {
-+ /*
-+ * Require protocol >= 0.4 for CompositeTrapezoids support.
-+ */
-+ int major_version, minor_version;
-+
-+#define XRENDER_TETRAPEZOIDS_MAJOR 0
-+#define XRENDER_TETRAPEZOIDS_MINOR 4
-+
-+ if (XRenderQueryVersion (xdisplay, &major_version,
-+ &minor_version))
-+ if ((major_version == XRENDER_TETRAPEZOIDS_MAJOR) &&
-+ (minor_version >= XRENDER_TETRAPEZOIDS_MINOR))
-+ x11display->have_render_with_trapezoids = GDK_YES;
-+ }
-+ }
-+
-+ return x11display->have_render_with_trapezoids == GDK_YES;
-+}
-+
-+static XftDraw *
-+gdk_x11_drawable_get_xft_draw (GdkDrawable *drawable)
-+{
-+ GdkDrawableImplX11 *impl = GDK_DRAWABLE_IMPL_X11 (drawable);
-+
-+ if (impl->xft_draw == NULL)
-+ {
-+ GdkColormap *colormap = gdk_drawable_get_colormap (drawable);
-+
-+ if (colormap)
-+ {
-+ GdkVisual *visual;
-+
-+ visual = gdk_colormap_get_visual (colormap);
-+
-+ impl->xft_draw = XftDrawCreate (GDK_SCREEN_XDISPLAY (impl->screen), impl->xid,
-+ GDK_VISUAL_XVISUAL (visual), GDK_COLORMAP_XCOLORMAP (colormap));
-+ }
-+ else if (gdk_drawable_get_depth (drawable) == 1)
-+ {
-+ impl->xft_draw = XftDrawCreateBitmap (GDK_SCREEN_XDISPLAY (impl->screen), impl->xid);
-+ }
-+ else
-+ {
-+ g_warning ("Using Xft rendering requires the drawable argument to\n"
-+ "have a specified colormap. All windows have a colormap,\n"
-+ "however, pixmaps only have colormap by default if they\n"
-+ "were created with a non-NULL window argument. Otherwise\n"
-+ "a colormap must be set on them with gdk_drawable_set_colormap");
-+ return NULL;
-+ }
-+ }
-+
-+ return impl->xft_draw;
-+}
-+
- static Picture
- gdk_x11_drawable_get_picture (GdkDrawable *drawable)
- {
-@@ -393,6 +483,57 @@
- }
- }
-
-+static void
-+gdk_x11_drawable_update_xft_clip (GdkDrawable *drawable,
-+ GdkGC *gc)
-+{
-+ XftDraw *xft_draw = gdk_x11_drawable_get_xft_draw (drawable);
-+ GdkRegion *clip_region = _gdk_gc_get_clip_region (gc);
-+
-+ if (gc && clip_region)
-+ {
-+ GdkRegionBox *boxes = clip_region->rects;
-+ gint n_boxes = clip_region->numRects;
-+#if 0 /* Until XftDrawSetClipRectangles is there */
-+ XRectangle *rects = g_new (XRectangle, n_boxes);
-+ int i;
-+
-+ for (i=0; i < n_boxes; i++)
-+ {
-+ rects[i].x = CLAMP (boxes[i].x1 + gc->clip_x_origin, G_MINSHORT, G_MAXSHORT);
-+ rects[i].y = CLAMP (boxes[i].y1 + gc->clip_y_origin, G_MINSHORT, G_MAXSHORT);
-+ rects[i].width = CLAMP (boxes[i].x2 + gc->clip_x_origin, G_MINSHORT, G_MAXSHORT) - rects[i].x;
-+ rects[i].height = CLAMP (boxes[i].y2 + gc->clip_y_origin, G_MINSHORT, G_MAXSHORT) - rects[i].y;
-+ }
-+ XftDrawSetClipRectangles (xft_draw, 0, 0, rects, n_boxes);
-+
-+ g_free (rects);
-+#else
-+ Region xregion = XCreateRegion ();
-+ int i;
-+
-+ for (i=0; i < n_boxes; i++)
-+ {
-+ XRectangle rect;
-+
-+ rect.x = CLAMP (boxes[i].x1 + gc->clip_x_origin, G_MINSHORT, G_MAXSHORT);
-+ rect.y = CLAMP (boxes[i].y1 + gc->clip_y_origin, G_MINSHORT, G_MAXSHORT);
-+ rect.width = CLAMP (boxes[i].x2 + gc->clip_x_origin, G_MINSHORT, G_MAXSHORT) - rect.x;
-+ rect.height = CLAMP (boxes[i].y2 + gc->clip_y_origin, G_MINSHORT, G_MAXSHORT) - rect.y;
-+
-+ XUnionRectWithRegion (&rect, xregion, xregion);
-+ }
-+
-+ XftDrawSetClip (xft_draw, xregion);
-+ XDestroyRegion (xregion);
-+#endif
-+ }
-+ else
-+ {
-+ XftDrawSetClip (xft_draw, NULL);
-+ }
-+}
-+
- /*****************************************************
- * X11 specific implementations of generic functions *
- *****************************************************/
-@@ -780,6 +921,45 @@
- }
-
- static void
-+gdk_x11_draw_glyphs (GdkDrawable *drawable,
-+ GdkGC *gc,
-+ PangoFont *font,
-+ gint x,
-+ gint y,
-+ PangoGlyphString *glyphs)
-+{
-+ gdk_x11_draw_glyphs_transformed (drawable, gc, NULL,
-+ font,
-+ x * PANGO_SCALE,
-+ y * PANGO_SCALE,
-+ glyphs);
-+}
-+
-+static void
-+gdk_x11_draw_glyphs_transformed (GdkDrawable *drawable,
-+ GdkGC *gc,
-+ PangoMatrix *matrix,
-+ PangoFont *font,
-+ gint x,
-+ gint y,
-+ PangoGlyphString *glyphs)
-+{
-+ GdkDrawableImplX11 *impl;
-+ PangoRenderer *renderer;
-+
-+ impl = GDK_DRAWABLE_IMPL_X11 (drawable);
-+
-+ g_return_if_fail (PANGO_XFT_IS_FONT (font));
-+
-+ renderer = _gdk_x11_renderer_get (drawable, gc);
-+ if (matrix)
-+ pango_renderer_set_matrix (renderer, matrix);
-+ pango_renderer_draw_glyphs (renderer, font, glyphs, x, y);
-+ if (matrix)
-+ pango_renderer_set_matrix (renderer, NULL);
-+}
-+
-+static void
- gdk_x11_draw_image (GdkDrawable *drawable,
- GdkGC *gc,
- GdkImage *image,
-@@ -1444,6 +1624,47 @@
- }
-
- static void
-+gdk_x11_draw_trapezoids (GdkDrawable *drawable,
-+ GdkGC *gc,
-+ GdkTrapezoid *trapezoids,
-+ gint n_trapezoids)
-+{
-+ GdkScreen *screen = GDK_DRAWABLE_IMPL_X11 (drawable)->screen;
-+ GdkDisplay *display = gdk_screen_get_display (screen);
-+ XTrapezoid *xtrapezoids;
-+ gint i;
-+
-+ if (!_gdk_x11_have_render_with_trapezoids (display))
-+ {
-+ GdkDrawable *wrapper = GDK_DRAWABLE_IMPL_X11 (drawable)->wrapper;
-+ GDK_DRAWABLE_CLASS (_gdk_drawable_impl_x11_parent_class)->draw_trapezoids (wrapper, gc,
-+ trapezoids, n_trapezoids);
-+ return;
-+ }
-+
-+ xtrapezoids = g_new (XTrapezoid, n_trapezoids);
-+
-+ for (i = 0; i < n_trapezoids; i++)
-+ {
-+ xtrapezoids[i].top = XDoubleToFixed (trapezoids[i].y1);
-+ xtrapezoids[i].bottom = XDoubleToFixed (trapezoids[i].y2);
-+ xtrapezoids[i].left.p1.x = XDoubleToFixed (trapezoids[i].x11);
-+ xtrapezoids[i].left.p1.y = XDoubleToFixed (trapezoids[i].y1);
-+ xtrapezoids[i].left.p2.x = XDoubleToFixed (trapezoids[i].x12);
-+ xtrapezoids[i].left.p2.y = XDoubleToFixed (trapezoids[i].y2);
-+ xtrapezoids[i].right.p1.x = XDoubleToFixed (trapezoids[i].x21);
-+ xtrapezoids[i].right.p1.y = XDoubleToFixed (trapezoids[i].y1);
-+ xtrapezoids[i].right.p2.x = XDoubleToFixed (trapezoids[i].x22);
-+ xtrapezoids[i].right.p2.y = XDoubleToFixed (trapezoids[i].y2);
-+ }
-+
-+ _gdk_x11_drawable_draw_xtrapezoids (drawable, gc,
-+ xtrapezoids, n_trapezoids);
-+
-+ g_free (xtrapezoids);
-+}
-+
-+static void
- gdk_x11_cairo_surface_destroy (void *data)
- {
- GdkDrawableImplX11 *impl = data;
-@@ -1498,5 +1719,89 @@
- return impl->cairo_surface;
- }
-
-+void
-+_gdk_x11_drawable_draw_xtrapezoids (GdkDrawable *drawable,
-+ GdkGC *gc,
-+ XTrapezoid *xtrapezoids,
-+ int n_trapezoids)
-+{
-+ GdkScreen *screen = GDK_DRAWABLE_IMPL_X11 (drawable)->screen;
-+ GdkDisplay *display = gdk_screen_get_display (screen);
-+ GdkDisplayX11 *x11display = GDK_DISPLAY_X11 (display);
-+
-+ XftDraw *draw;
-+
-+ if (!_gdk_x11_have_render_with_trapezoids (display))
-+ {
-+ /* This is the case of drawing the borders of the unknown glyph box
-+ * without render on the display, we need to feed it back to
-+ * fallback code. Not efficient, but doesn't matter.
-+ */
-+ GdkTrapezoid *trapezoids = g_new (GdkTrapezoid, n_trapezoids);
-+ int i;
-+
-+ for (i = 0; i < n_trapezoids; i++)
-+ {
-+ trapezoids[i].y1 = XFixedToDouble (xtrapezoids[i].top);
-+ trapezoids[i].y2 = XFixedToDouble (xtrapezoids[i].bottom);
-+ trapezoids[i].x11 = XFixedToDouble (xtrapezoids[i].left.p1.x);
-+ trapezoids[i].x12 = XFixedToDouble (xtrapezoids[i].left.p2.x);
-+ trapezoids[i].x21 = XFixedToDouble (xtrapezoids[i].right.p1.x);
-+ trapezoids[i].x22 = XFixedToDouble (xtrapezoids[i].right.p2.x);
-+ }
-+
-+ gdk_x11_draw_trapezoids (drawable, gc, trapezoids, n_trapezoids);
-+ g_free (trapezoids);
-+
-+ return;
-+ }
-+
-+ gdk_x11_drawable_update_xft_clip (drawable, gc);
-+ draw = gdk_x11_drawable_get_xft_draw (drawable);
-+
-+ if (!x11display->mask_format)
-+ x11display->mask_format = XRenderFindStandardFormat (x11display->xdisplay,
-+ PictStandardA8);
-+
-+ XRenderCompositeTrapezoids (x11display->xdisplay, PictOpOver,
-+ _gdk_x11_gc_get_fg_picture (gc),
-+ XftDrawPicture (draw),
-+ x11display->mask_format,
-+ - gc->ts_x_origin, - gc->ts_y_origin,
-+ xtrapezoids, n_trapezoids);
-+}
-+
-+void
-+_gdk_x11_drawable_draw_xft_glyphs (GdkDrawable *drawable,
-+ GdkGC *gc,
-+ XftFont *xft_font,
-+ XftGlyphSpec *glyphs,
-+ gint n_glyphs)
-+{
-+ GdkScreen *screen = GDK_DRAWABLE_IMPL_X11 (drawable)->screen;
-+ GdkDisplay *display = gdk_screen_get_display (screen);
-+ GdkDisplayX11 *x11display = GDK_DISPLAY_X11 (display);
-+ XftDraw *draw;
-+
-+ gdk_x11_drawable_update_xft_clip (drawable, gc);
-+ draw = gdk_x11_drawable_get_xft_draw (drawable);
-+
-+ if (_gdk_x11_have_render (display))
-+ {
-+ XftGlyphSpecRender (x11display->xdisplay, PictOpOver,
-+ _gdk_x11_gc_get_fg_picture (gc),
-+ xft_font,
-+ XftDrawPicture (draw),
-+ - gc->ts_x_origin, - gc->ts_y_origin,
-+ glyphs, n_glyphs);
-+ }
-+ else
-+ {
-+ XftColor color;
-+
-+ _gdk_gc_x11_get_fg_xft_color (gc, &color);
-+ XftDrawGlyphSpec (draw, &color, xft_font, glyphs, n_glyphs);
-+ }
-+}
- #define __GDK_DRAWABLE_X11_C__
- #include "gdkaliasdef.c"
-Index: gtk+-2.10.6/gdk/x11/gdkdrawable-x11.h
-===================================================================
---- gtk+-2.10.6.orig/gdk/x11/gdkdrawable-x11.h 2006-10-30 12:58:30.000000000 +0000
-+++ gtk+-2.10.6/gdk/x11/gdkdrawable-x11.h 2006-10-30 12:59:30.000000000 +0000
-@@ -33,6 +33,7 @@
-
- #include <X11/Xlib.h>
- #include <X11/extensions/Xrender.h>
-+#include <X11/Xft/Xft.h>
-
- G_BEGIN_DECLS
-
-@@ -68,6 +69,8 @@
- Window xid;
- GdkScreen *screen;
-
-+ XftDraw *xft_draw;
-+
- Picture picture;
- cairo_surface_t *cairo_surface;
- };
-@@ -92,7 +95,15 @@
- /* Note that the following take GdkDrawableImplX11, not the wrapper drawable */
- void _gdk_x11_drawable_finish (GdkDrawable *drawable);
- void _gdk_x11_drawable_update_size (GdkDrawable *drawable);
--
-+void _gdk_x11_drawable_draw_xtrapezoids (GdkDrawable *drawable,
-+ GdkGC *gc,
-+ XTrapezoid *xtrapezoids,
-+ int n_trapezoids);
-+void _gdk_x11_drawable_draw_xft_glyphs (GdkDrawable *drawable,
-+ GdkGC *gc,
-+ XftFont *xft_font,
-+ XftGlyphSpec *glyphs,
-+ gint n_glyphs);
- G_END_DECLS
-
- #endif /* __GDK_DRAWABLE_X11_H__ */
-Index: gtk+-2.10.6/gdk/x11/gdkgc-x11.c
-===================================================================
---- gtk+-2.10.6.orig/gdk/x11/gdkgc-x11.c 2006-10-30 12:58:30.000000000 +0000
-+++ gtk+-2.10.6/gdk/x11/gdkgc-x11.c 2006-10-30 12:59:30.000000000 +0000
-@@ -80,7 +80,10 @@
- gdk_gc_x11_finalize (GObject *object)
- {
- GdkGCX11 *x11_gc = GDK_GC_X11 (object);
--
-+
-+ if (x11_gc->fg_picture != None)
-+ XRenderFreePicture (GDK_GC_XDISPLAY (x11_gc), x11_gc->fg_picture);
-+
- XFreeGC (GDK_GC_XDISPLAY (x11_gc), GDK_GC_XGC (x11_gc));
-
- G_OBJECT_CLASS (_gdk_gc_x11_parent_class)->finalize (object);
-@@ -110,7 +113,7 @@
-
- private->dirty_mask = 0;
- private->have_clip_mask = FALSE;
--
-+
- private->screen = GDK_DRAWABLE_IMPL_X11 (drawable)->screen;
-
- private->depth = gdk_drawable_get_depth (drawable);
-@@ -339,6 +342,18 @@
- }
-
- static void
-+clear_fg_picture (GdkGC *gc)
-+{
-+ GdkGCX11 *x11_gc = GDK_GC_X11 (gc);
-+
-+ if (x11_gc->fg_picture != None)
-+ {
-+ XRenderFreePicture (GDK_GC_XDISPLAY (x11_gc), x11_gc->fg_picture);
-+ x11_gc->fg_picture = None;
-+ }
-+}
-+
-+static void
- gdk_x11_gc_set_values (GdkGC *gc,
- GdkGCValues *values,
- GdkGCValuesMask values_mask)
-@@ -367,6 +382,29 @@
- x11_gc->have_clip_mask = values->clip_mask != NULL;
- }
-
-+ if (values_mask & GDK_GC_BACKGROUND)
-+ {
-+ if (_gdk_gc_get_fill (gc) == GDK_OPAQUE_STIPPLED)
-+ clear_fg_picture (gc);
-+ }
-+
-+ if (values_mask & GDK_GC_FILL)
-+ {
-+ clear_fg_picture (gc);
-+ }
-+
-+ if (values_mask & GDK_GC_STIPPLE)
-+ {
-+ if (_gdk_gc_get_fill (gc) == GDK_STIPPLED || _gdk_gc_get_fill (gc) == GDK_OPAQUE_STIPPLED)
-+ clear_fg_picture (gc);
-+ }
-+
-+ if (values_mask & GDK_GC_TILE)
-+ {
-+ if (_gdk_gc_get_fill (gc) == GDK_TILED)
-+ clear_fg_picture (gc);
-+ }
-+
- gdk_x11_gc_values_to_xvalues (values, values_mask, &xvalues, &xvalues_mask);
-
- XChangeGC (GDK_GC_XDISPLAY (gc),
-@@ -642,6 +680,8 @@
- x11_dst_gc->dirty_mask = x11_src_gc->dirty_mask;
- x11_dst_gc->have_clip_region = x11_src_gc->have_clip_region;
- x11_dst_gc->have_clip_mask = x11_src_gc->have_clip_mask;
-+
-+ clear_fg_picture (dst_gc);
- }
-
- /**
-@@ -701,5 +741,359 @@
- return gc_x11->xgc;
- }
-
-+/* Various bits of the below are roughly cribbed from XFree86
-+ * lib/Xft/xftdraw.c, Copyright 2000, Keith Packard
-+ */
-+
-+static XRenderPictFormat *
-+foreground_format (GdkGC *gc)
-+{
-+ XRenderPictFormat pf;
-+
-+ pf.type = PictTypeDirect;
-+ pf.depth = 32;
-+ pf.direct.redMask = 0xff;
-+ pf.direct.greenMask = 0xff;
-+ pf.direct.blueMask = 0xff;
-+ pf.direct.alphaMask = 0xff;
-+
-+ return XRenderFindFormat (GDK_GC_XDISPLAY (gc),
-+ (PictFormatType |
-+ PictFormatDepth |
-+ PictFormatRedMask |
-+ PictFormatGreenMask |
-+ PictFormatBlueMask |
-+ PictFormatAlphaMask),
-+ &pf,
-+ 0);
-+}
-+
-+static Picture
-+make_fg_tile_picture (GdkGC *gc)
-+{
-+ GdkGCX11 *x11_gc = GDK_GC_X11 (gc);
-+ GdkVisual *visual = gdk_drawable_get_visual (_gdk_gc_get_tile (gc));
-+ XRenderPictFormat *format = NULL;
-+
-+ if (visual)
-+ {
-+ format = XRenderFindVisualFormat (GDK_GC_XDISPLAY (gc),
-+ GDK_VISUAL_XVISUAL (visual));
-+ }
-+ else if (x11_gc->depth == 1)
-+ {
-+ format = XRenderFindStandardFormat (GDK_GC_XDISPLAY (gc),
-+ PictStandardA1);
-+ }
-+
-+ if (format)
-+ {
-+ XRenderPictureAttributes pa;
-+ pa.repeat = True;
-+
-+ return XRenderCreatePicture (GDK_GC_XDISPLAY (gc),
-+ GDK_PIXMAP_XID (_gdk_gc_get_tile (gc)),
-+ format,
-+ CPRepeat, &pa);
-+ }
-+
-+ return None;
-+}
-+
-+static Picture
-+make_stipple_picture (GdkGC *gc)
-+{
-+ XRenderPictFormat *format = NULL;
-+ XRenderPictureAttributes pa;
-+
-+ format = XRenderFindStandardFormat (GDK_GC_XDISPLAY (gc),
-+ PictStandardA1);
-+
-+ pa.repeat = True;
-+ return XRenderCreatePicture (GDK_GC_XDISPLAY (gc),
-+ GDK_PIXMAP_XID (_gdk_gc_get_stipple (gc)),
-+ format,
-+ CPRepeat, &pa);
-+}
-+
-+static Picture
-+make_color_picture (GdkGC *gc,
-+ XRenderColor *color)
-+{
-+ GdkGCX11 *x11_gc = GDK_GC_X11 (gc);
-+ XRenderPictureAttributes pa;
-+ XRenderPictFormat *pix_format = foreground_format (gc);
-+ Pixmap pix;
-+ Picture picture;
-+
-+ if (!pix_format)
-+ return None;
-+
-+ pix = XCreatePixmap (GDK_GC_XDISPLAY (gc),
-+ GDK_SCREEN_XROOTWIN (x11_gc->screen),
-+ 1, 1, pix_format->depth);
-+ pa.repeat = True;
-+ picture = XRenderCreatePicture (GDK_GC_XDISPLAY (gc),
-+ pix,
-+ pix_format,
-+ CPRepeat, &pa);
-+ XFreePixmap (GDK_GC_XDISPLAY (gc), pix);
-+
-+ XRenderFillRectangle (GDK_GC_XDISPLAY (gc), PictOpSrc,
-+ picture, color,
-+ 0, 0, 1, 1);
-+
-+ return picture;
-+}
-+
-+static void
-+get_bg_color (GdkGC *gc,
-+ XRenderColor *render_color)
-+{
-+ GdkColormap *cmap;
-+
-+ cmap = gdk_gc_get_colormap (gc);
-+
-+ if (cmap)
-+ {
-+ GdkColor color;
-+
-+ gdk_colormap_query_color (cmap, _gdk_gc_get_bg_pixel (gc), &color);
-+
-+ render_color->alpha = 0xffff;
-+ render_color->red = color.red;
-+ render_color->green = color.green;
-+ render_color->blue = color.blue;
-+ }
-+ else /* Not worth warning, just use black */
-+ {
-+ render_color->alpha = 0xffff;
-+ render_color->red = 0;
-+ render_color->green = 0;
-+ render_color->blue = 0;
-+ }
-+}
-+
-+/**
-+ * _gdk_x11_gc_get_fg_picture:
-+ * @gc: a #GdkGC
-+ *
-+ * Gets a Xrender Picture object suitable for being the source
-+ * drawable for drawing with the foreground the graphics context.
-+ *
-+ * Return value: a Picture, owned by the GC; this cannot be
-+ * used over subsequent modification of the GC.
-+ **/
-+Picture
-+_gdk_x11_gc_get_fg_picture (GdkGC *gc)
-+{
-+ GdkGCX11 *x11_gc;
-+ gboolean new = FALSE;
-+ XftColor xftcolor;
-+ GdkFill fill;
-+ int width, height;
-+
-+ g_return_val_if_fail (GDK_IS_GC_X11 (gc), None);
-+
-+ if (!_gdk_x11_have_render (GDK_GC_DISPLAY (gc)))
-+ return None;
-+
-+ x11_gc = GDK_GC_X11 (gc);
-+
-+ fill = GDK_SOLID;
-+ width = 1;
-+ height = 1;
-+
-+ switch (_gdk_gc_get_fill (gc))
-+ {
-+ case GDK_SOLID:
-+ break;
-+ case GDK_TILED:
-+ if (_gdk_gc_get_tile (gc))
-+ {
-+ if (!x11_gc->fg_picture)
-+ x11_gc->fg_picture = make_fg_tile_picture (gc);
-+
-+ if (x11_gc->fg_picture != None)
-+ return x11_gc->fg_picture;
-+ }
-+ break;
-+ case GDK_STIPPLED:
-+ case GDK_OPAQUE_STIPPLED:
-+ if (_gdk_gc_get_stipple (gc))
-+ {
-+ gdk_drawable_get_size (_gdk_gc_get_stipple (gc), &width, &height);
-+ fill = _gdk_gc_get_fill (gc);
-+ }
-+ break;
-+ }
-+
-+ if (x11_gc->fg_picture == None)
-+ {
-+ XRenderPictureAttributes pa;
-+ XRenderPictFormat *pix_format = foreground_format (gc);
-+ Pixmap pix;
-+
-+ if (!pix_format)
-+ return None;
-+
-+ pix = XCreatePixmap (GDK_GC_XDISPLAY (gc),
-+ GDK_SCREEN_XROOTWIN (x11_gc->screen),
-+ width, height, pix_format->depth);
-+ pa.repeat = True;
-+ x11_gc->fg_picture = XRenderCreatePicture (GDK_GC_XDISPLAY (gc),
-+ pix,
-+ pix_format,
-+ CPRepeat, &pa);
-+ XFreePixmap (GDK_GC_XDISPLAY (gc), pix);
-+
-+ new = TRUE;
-+ }
-+
-+ _gdk_gc_x11_get_fg_xft_color (gc, &xftcolor);
-+
-+ if (x11_gc->fg_picture_color.alpha != 0xffff ||
-+ x11_gc->fg_picture_color.red != xftcolor.color.red ||
-+ x11_gc->fg_picture_color.green != xftcolor.color.green ||
-+ x11_gc->fg_picture_color.blue != xftcolor.color.blue)
-+ {
-+ x11_gc->fg_picture_color.alpha = 0xffff;
-+ x11_gc->fg_picture_color.red = xftcolor.color.red;
-+ x11_gc->fg_picture_color.green = xftcolor.color.green;
-+ x11_gc->fg_picture_color.blue = xftcolor.color.blue;
-+
-+ new = TRUE;
-+ }
-+
-+ switch (fill)
-+ {
-+ case GDK_SOLID:
-+ XRenderFillRectangle (GDK_GC_XDISPLAY (gc), PictOpSrc,
-+ x11_gc->fg_picture, &x11_gc->fg_picture_color,
-+ 0, 0, width, height);
-+ break;
-+ case GDK_STIPPLED:
-+ {
-+ Picture stipple_picture = make_stipple_picture (gc);
-+
-+ XRenderFillRectangle (GDK_GC_XDISPLAY (gc), PictOpSrc,
-+ x11_gc->fg_picture, &x11_gc->fg_picture_color,
-+ 0, 0, width, height);
-+ XRenderComposite (GDK_GC_XDISPLAY (gc),
-+ PictOpInReverse,
-+ stipple_picture, None, x11_gc->fg_picture,
-+ 0, 0, 0, 0, 0, 0, width, height);
-+
-+ XRenderFreePicture (GDK_GC_XDISPLAY (x11_gc), stipple_picture);
-+ }
-+ break;
-+ case GDK_OPAQUE_STIPPLED:
-+ {
-+ XRenderColor bg_color;
-+
-+ Picture stipple_picture = make_stipple_picture (gc);
-+ Picture fg_picture = make_color_picture (gc, &x11_gc->fg_picture_color);
-+
-+ get_bg_color (gc, &bg_color);
-+
-+ XRenderFillRectangle (GDK_GC_XDISPLAY (gc), PictOpSrc,
-+ x11_gc->fg_picture, &bg_color,
-+ 0, 0, width, height);
-+ XRenderComposite (GDK_GC_XDISPLAY (gc),
-+ PictOpOver,
-+ fg_picture, stipple_picture, x11_gc->fg_picture,
-+ 0, 0, 0, 0, 0, 0, width, height);
-+
-+ XRenderFreePicture (GDK_GC_XDISPLAY (x11_gc), stipple_picture);
-+ XRenderFreePicture (GDK_GC_XDISPLAY (x11_gc), fg_picture);
-+ }
-+ break;
-+ case GDK_TILED:
-+ g_assert_not_reached (); /* handled above */
-+ break;
-+ }
-+
-+ return x11_gc->fg_picture;
-+}
-+
-+/**
-+ * _gdk_gc_x11_get_fg_xft_color:
-+ * @gc: a #GdkGC
-+ * @xftcolor: location to store the color
-+ *
-+ * Gets the foreground color of the GC as a XftColor.
-+ **/
-+void
-+_gdk_gc_x11_get_fg_xft_color (GdkGC *gc,
-+ XftColor *xftcolor)
-+{
-+ GdkGCX11 *x11_gc;
-+ GdkColormap *cmap;
-+ GdkColor color;
-+
-+ g_return_if_fail (GDK_IS_GC_X11 (gc));
-+
-+ x11_gc = GDK_GC_X11 (gc);
-+
-+ cmap = gdk_gc_get_colormap (gc);
-+
-+ xftcolor->pixel = _gdk_gc_get_fg_pixel (gc);
-+
-+ if (cmap)
-+ {
-+ gdk_colormap_query_color (cmap, xftcolor->pixel, &color);
-+ xftcolor->color.alpha = 0xffff;
-+ xftcolor->color.red = color.red;
-+ xftcolor->color.green = color.green;
-+ xftcolor->color.blue = color.blue;
-+ }
-+ else if (x11_gc->depth == 1)
-+ {
-+ /* Drawing with Xft on a bitmap is a bit bizzare; it
-+ * takes alpha >= 0x8000 to mean 'set to 1' and
-+ * alpha < 0x8000 to mean 'set to 0'.
-+ */
-+ if (xftcolor->pixel)
-+ {
-+ xftcolor->color.red = 0xffff;
-+ xftcolor->color.green = 0xffff;
-+ xftcolor->color.blue = 0xffff;
-+ xftcolor->color.alpha = 0xffff;
-+ }
-+ else
-+ {
-+ xftcolor->color.red = 0;
-+ xftcolor->color.green = 0;
-+ xftcolor->color.blue = 0;
-+ xftcolor->color.alpha = 0;
-+ }
-+ }
-+ else
-+ {
-+ g_warning ("Using Xft rendering requires the GC argument to have a\n"
-+ "specified colormap. If the GC was created for a drawable\n"
-+ "with a colormap, the colormap will be set on the GC\n"
-+ "automatically. Otherwise, a colormap must be set on it with"
-+ "gdk_gc_set_colormap");
-+ }
-+}
-+
-+void
-+_gdk_windowing_gc_get_foreground (GdkGC *gc,
-+ GdkColor *color)
-+{
-+ GdkColormap *cmap;
-+
-+ g_return_if_fail (GDK_IS_GC_X11 (gc));
-+
-+ color->pixel = _gdk_gc_get_fg_pixel (gc);
-+
-+ cmap = gdk_gc_get_colormap (gc);
-+
-+ if (cmap)
-+ gdk_colormap_query_color (cmap, _gdk_gc_get_fg_pixel (gc), color);
-+ else
-+ g_warning ("No colormap in _gdk_windowing_gc_get_foreground");
-+}
- #define __GDK_GC_X11_C__
- #include "gdkaliasdef.c"
-Index: gtk+-2.10.6/gdk/x11/gdkprivate-x11.h
-===================================================================
---- gtk+-2.10.6.orig/gdk/x11/gdkprivate-x11.h 2006-10-30 12:58:30.000000000 +0000
-+++ gtk+-2.10.6/gdk/x11/gdkprivate-x11.h 2006-10-30 12:59:30.000000000 +0000
-@@ -63,6 +63,9 @@
- guint have_clip_region : 1;
- guint have_clip_mask : 1;
- guint depth : 8;
-+
-+ Picture fg_picture;
-+ XRenderColor fg_picture_color;
- };
-
- struct _GdkGCX11Class
-@@ -102,6 +105,11 @@
- GType _gdk_gc_x11_get_type (void);
-
- gboolean _gdk_x11_have_render (GdkDisplay *display);
-+gboolean _gdk_x11_have_render_with_trapezoids (GdkDisplay *display);
-+
-+Picture _gdk_x11_gc_get_fg_picture (GdkGC *gc);
-+void _gdk_gc_x11_get_fg_xft_color (GdkGC *gc,
-+ XftColor *xftcolor);
-
- GdkGC *_gdk_x11_gc_new (GdkDrawable *drawable,
- GdkGCValues *values,
-Index: gtk+-2.10.6/gdk/x11/gdkwindow-x11.c
-===================================================================
---- gtk+-2.10.6.orig/gdk/x11/gdkwindow-x11.c 2006-10-30 12:58:30.000000000 +0000
-+++ gtk+-2.10.6/gdk/x11/gdkwindow-x11.c 2006-10-30 12:59:30.000000000 +0000
-@@ -1114,7 +1114,8 @@
- {
- GdkWindowObject *private = (GdkWindowObject *)window;
- GdkToplevelX11 *toplevel;
--
-+ GdkDrawableImplX11 *draw_impl;
-+
- g_return_if_fail (GDK_IS_WINDOW (window));
-
- _gdk_selection_window_destroyed (window);
-@@ -1126,6 +1127,11 @@
- if (toplevel)
- gdk_toplevel_x11_free_contents (GDK_WINDOW_DISPLAY (window), toplevel);
-
-+ draw_impl = GDK_DRAWABLE_IMPL_X11 (private->impl);
-+
-+ if (draw_impl->xft_draw)
-+ XftDrawDestroy (draw_impl->xft_draw);
-+
- _gdk_x11_drawable_finish (private->impl);
-
- if (!recursing && !foreign_destroy)
-Index: gtk+-2.10.6/gdk/x11/Makefile.am
-===================================================================
---- gtk+-2.10.6.orig/gdk/x11/Makefile.am 2006-10-30 12:58:30.000000000 +0000
-+++ gtk+-2.10.6/gdk/x11/Makefile.am 2006-10-30 12:59:30.000000000 +0000
-@@ -37,6 +37,7 @@
- gdkinput.c \
- gdkkeys-x11.c \
- gdkmain-x11.c \
-+ gdkpango-x11.c \
- gdkpixmap-x11.c \
- gdkpixmap-x11.h \
- gdkproperty-x11.c \
-Index: gtk+-2.10.6/gtk/gtkcalendar.c
-===================================================================
---- gtk+-2.10.6.orig/gtk/gtkcalendar.c 2006-10-30 12:58:30.000000000 +0000
-+++ gtk+-2.10.6/gtk/gtkcalendar.c 2006-10-30 12:59:30.000000000 +0000
-@@ -1821,7 +1821,7 @@
- }
- }
-
--
-+
- /****************************************
- * Repainting *
- ****************************************/
-@@ -1831,7 +1831,7 @@
- {
- GtkWidget *widget = GTK_WIDGET (calendar);
- GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar);
-- cairo_t *cr;
-+ GdkGC *gc;
- char buffer[255];
- int x, y;
- gint header_width;
-@@ -1849,7 +1849,7 @@
- else
- year_left = !priv->year_before;
-
-- cr = gdk_cairo_create (priv->header_win);
-+ gc = calendar->gc;
-
- header_width = widget->allocation.width - 2 * widget->style->xthickness;
-
-@@ -1902,9 +1902,9 @@
- - (max_year_width - logical_rect.width)/2);
-
-
-- gdk_cairo_set_source_color (cr, HEADER_FG_COLOR (GTK_WIDGET (calendar)));
-- cairo_move_to (cr, x, y);
-- pango_cairo_show_layout (cr, layout);
-+ gdk_gc_set_foreground (gc, HEADER_FG_COLOR (GTK_WIDGET (calendar)));
-+ gdk_draw_layout (priv->header_win, gc, x, y, layout);
-+
-
- /* Draw month */
- g_snprintf (buffer, sizeof (buffer), "%s", default_monthname[calendar->month]);
-@@ -1924,19 +1924,19 @@
- else
- x = 3 + priv->arrow_width + (max_month_width - logical_rect.width)/2;
-
-- cairo_move_to (cr, x, y);
-- pango_cairo_show_layout (cr, layout);
--
-+ gdk_draw_layout (priv->header_win, gc, x, y, layout);
-+
-+ gdk_gc_set_foreground (gc, BACKGROUND_COLOR (GTK_WIDGET (calendar)));
-+
- g_object_unref (layout);
-- cairo_destroy (cr);
- }
-
- static void
- calendar_paint_day_names (GtkCalendar *calendar)
- {
- GtkWidget *widget = GTK_WIDGET (calendar);
-+ GdkGC *gc;
- GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar);
-- cairo_t *cr;
- char buffer[255];
- int day,i;
- int day_width, cal_width;
-@@ -1946,8 +1946,7 @@
- gint focus_padding;
- gint focus_width;
-
-- cr = gdk_cairo_create (priv->day_name_win);
--
-+ gc = calendar->gc;
- gtk_widget_style_get (GTK_WIDGET (widget),
- "focus-line-width", &focus_width,
- "focus-padding", &focus_padding,
-@@ -1961,22 +1960,19 @@
- * Draw rectangles as inverted background for the labels.
- */
-
-- gdk_cairo_set_source_color (cr, SELECTED_BG_COLOR (widget));
-- cairo_rectangle (cr,
-- CALENDAR_MARGIN, CALENDAR_MARGIN,
-- cal_width-CALENDAR_MARGIN * 2,
-- priv->day_name_h - CALENDAR_MARGIN);
-- cairo_fill (cr);
--
-+ gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (widget));
-+ gdk_draw_rectangle (priv->day_name_win, gc, TRUE,
-+ CALENDAR_MARGIN, CALENDAR_MARGIN,
-+ cal_width-CALENDAR_MARGIN * 2,
-+ priv->day_name_h - CALENDAR_MARGIN);
-+
- if (calendar->display_flags & GTK_CALENDAR_SHOW_WEEK_NUMBERS)
-- {
-- cairo_rectangle (cr,
-- CALENDAR_MARGIN,
-- priv->day_name_h - CALENDAR_YSEP,
-- priv->week_width - CALENDAR_YSEP - CALENDAR_MARGIN,
-- CALENDAR_YSEP);
-- cairo_fill (cr);
-- }
-+ gdk_draw_rectangle (priv->day_name_win, gc, TRUE,
-+ CALENDAR_MARGIN,
-+ priv->day_name_h - CALENDAR_YSEP,
-+ priv->week_width - CALENDAR_YSEP - CALENDAR_MARGIN,
-+ CALENDAR_YSEP);
-+
-
- /*
- * Write the labels
-@@ -1984,7 +1980,7 @@
-
- layout = gtk_widget_create_pango_layout (widget, NULL);
-
-- gdk_cairo_set_source_color (cr, SELECTED_FG_COLOR (widget));
-+ gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (widget));
- for (i = 0; i < 7; i++)
- {
- if (gtk_widget_get_direction (GTK_WIDGET (calendar)) == GTK_TEXT_DIR_RTL)
-@@ -1997,19 +1993,18 @@
- pango_layout_set_text (layout, buffer, -1);
- pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
-
-- cairo_move_to (cr,
-- (CALENDAR_MARGIN +
-- + (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR ?
-- (priv->week_width + (priv->week_width ? CALENDAR_XSEP : 0))
-- : 0)
-- + day_wid_sep * i
-- + (day_width - logical_rect.width)/2),
-- CALENDAR_MARGIN + focus_width + focus_padding + logical_rect.y);
-- pango_cairo_show_layout (cr, layout);
-+ gdk_draw_layout (priv->day_name_win, gc,
-+ (CALENDAR_MARGIN +
-+ + (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR ?
-+ (priv->week_width + (priv->week_width ? CALENDAR_XSEP : 0))
-+ : 0)
-+ + day_wid_sep * i
-+ + (day_width - logical_rect.width)/2),
-+ CALENDAR_MARGIN + focus_width + focus_padding + logical_rect.y,
-+ layout);
- }
-
- g_object_unref (layout);
-- cairo_destroy (cr);
- }
-
- static void
-@@ -2017,7 +2012,7 @@
- {
- GtkWidget *widget = GTK_WIDGET (calendar);
- GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar);
-- cairo_t *cr;
-+ GdkGC *gc;
- gint row, week = 0, year;
- gint x_loc;
- char buffer[32];
-@@ -2027,7 +2022,7 @@
- gint focus_padding;
- gint focus_width;
-
-- cr = gdk_cairo_create (priv->week_win);
-+ gc = calendar->gc;
-
- gtk_widget_style_get (GTK_WIDGET (widget),
- "focus-line-width", &focus_width,
-@@ -2038,20 +2033,20 @@
- * Draw a rectangle as inverted background for the labels.
- */
-
-- gdk_cairo_set_source_color (cr, SELECTED_BG_COLOR (widget));
-+ gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (widget));
- if (priv->day_name_win)
-- cairo_rectangle (cr,
-- CALENDAR_MARGIN,
-- 0,
-- priv->week_width - CALENDAR_MARGIN,
-- priv->main_h - CALENDAR_MARGIN);
-+ gdk_draw_rectangle (priv->week_win, gc, TRUE,
-+ CALENDAR_MARGIN,
-+ 0,
-+ priv->week_width - CALENDAR_MARGIN,
-+ priv->main_h - CALENDAR_MARGIN);
- else
-- cairo_rectangle (cr,
-- CALENDAR_MARGIN,
-- CALENDAR_MARGIN,
-- priv->week_width - CALENDAR_MARGIN,
-- priv->main_h - 2 * CALENDAR_MARGIN);
-- cairo_fill (cr);
-+ gdk_draw_rectangle (priv->week_win, gc, TRUE,
-+ CALENDAR_MARGIN,
-+ CALENDAR_MARGIN,
-+ priv->week_width - CALENDAR_MARGIN,
-+ priv->main_h - 2 * CALENDAR_MARGIN);
-+
-
- /*
- * Write the labels
-@@ -2059,7 +2054,7 @@
-
- layout = gtk_widget_create_pango_layout (widget, NULL);
-
-- gdk_cairo_set_source_color (cr, SELECTED_FG_COLOR (widget));
-+ gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (widget));
- day_height = calendar_row_height (calendar);
- for (row = 0; row < 6; row++)
- {
-@@ -2095,12 +2090,10 @@
- - logical_rect.width
- - CALENDAR_XSEP - focus_padding - focus_width);
-
-- cairo_move_to (cr, x_loc, y_loc);
-- pango_cairo_show_layout (cr, layout);
-+ gdk_draw_layout (priv->week_win, gc, x_loc, y_loc, layout);
- }
-
- g_object_unref (layout);
-- cairo_destroy (cr);
- }
-
- static void
-@@ -2149,7 +2142,7 @@
- {
- GtkWidget *widget = GTK_WIDGET (calendar);
- GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar);
-- cairo_t *cr;
-+ GdkGC *gc;
- GdkColor *text_color;
- gchar buffer[32];
- gint day;
-@@ -2162,7 +2155,7 @@
- g_return_if_fail (row < 6);
- g_return_if_fail (col < 7);
-
-- cr = gdk_cairo_create (priv->main_win);
-+ gc = calendar->gc;
-
- day = calendar->day[row][col];
-
-@@ -2170,11 +2163,11 @@
-
- if (calendar->day_month[row][col] == MONTH_PREV)
- {
-- text_color = PREV_MONTH_COLOR (widget);
-+ gdk_gc_set_foreground (gc, PREV_MONTH_COLOR (GTK_WIDGET (calendar)));
- }
- else if (calendar->day_month[row][col] == MONTH_NEXT)
- {
-- text_color = NEXT_MONTH_COLOR (widget);
-+ gdk_gc_set_foreground (gc, NEXT_MONTH_COLOR (GTK_WIDGET (calendar)));
- }
- else
- {
-@@ -2188,16 +2181,16 @@
- #endif
- if (calendar->selected_day == day)
- {
-- gdk_cairo_set_source_color (cr, SELECTED_BG_COLOR (widget));
-- gdk_cairo_rectangle (cr, &day_rect);
-- cairo_fill (cr);
-+ gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (GTK_WIDGET (calendar)));
-+ gdk_draw_rectangle (priv->main_win, gc, TRUE, day_rect.x, day_rect.y,
-+ day_rect.width, day_rect.height);
- }
- if (calendar->selected_day == day)
-- text_color = SELECTED_FG_COLOR (widget);
-+ gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (GTK_WIDGET (calendar)));
- else if (calendar->marked_date[day-1])
-- text_color = MARKED_COLOR (widget);
-+ gdk_gc_set_foreground (gc, MARKED_COLOR (GTK_WIDGET (calendar)));
- else
-- text_color = NORMAL_DAY_COLOR (widget);
-+ gdk_gc_set_foreground (gc, NORMAL_DAY_COLOR (GTK_WIDGET (calendar)));
- }
-
- /* Translators: this defines whether the day numbers should use
-@@ -2219,16 +2212,13 @@
- x_loc -= logical_rect.width;
- y_loc = day_rect.y + (day_rect.height - logical_rect.height) / 2;
-
-- gdk_cairo_set_source_color (cr, text_color);
-- cairo_move_to (cr, x_loc, y_loc);
-- pango_cairo_show_layout (cr, layout);
-+ gdk_draw_layout (priv->main_win, gc,
-+ x_loc, y_loc, layout);
-
- if (calendar->marked_date[day-1]
- && calendar->day_month[row][col] == MONTH_CURRENT)
-- {
-- cairo_move_to (cr, x_loc - 1, y_loc);
-- pango_cairo_show_layout (cr, layout);
-- }
-+ gdk_draw_layout (priv->main_win, gc,
-+ x_loc-1, y_loc, layout);
-
- if (GTK_WIDGET_HAS_FOCUS (calendar)
- && calendar->focus_row == row && calendar->focus_col == col)
-@@ -2253,7 +2243,6 @@
- }
-
- g_object_unref (layout);
-- cairo_destroy (cr);
- }
-
- static void
-Index: gtk+-2.10.6/gtk/gtkentry.c
-===================================================================
---- gtk+-2.10.6.orig/gtk/gtkentry.c 2006-10-30 12:58:30.000000000 +0000
-+++ gtk+-2.10.6/gtk/gtkentry.c 2006-10-30 12:59:30.000000000 +0000
-@@ -3333,7 +3333,6 @@
- if (GTK_WIDGET_DRAWABLE (entry))
- {
- PangoLayout *layout = gtk_entry_ensure_layout (entry, TRUE);
-- cairo_t *cr;
- gint x, y;
- gint start_pos, end_pos;
-
-@@ -3341,56 +3340,60 @@
-
- get_layout_position (entry, &x, &y);
-
-- cr = gdk_cairo_create (entry->text_area);
--
-- cairo_move_to (cr, x, y);
-- gdk_cairo_set_source_color (cr, &widget->style->text [widget->state]);
-- pango_cairo_show_layout (cr, layout);
--
-+ gdk_draw_layout (entry->text_area, widget->style->text_gc [widget->state],
-+ x, y,
-+ layout);
-+
- if (gtk_editable_get_selection_bounds (GTK_EDITABLE (entry), &start_pos, &end_pos))
- {
- gint *ranges;
- gint n_ranges, i;
- PangoRectangle logical_rect;
-- GdkColor *selection_color, *text_color;
-+ GdkGC *selection_gc, *text_gc;
- GtkBorder inner_border;
--
-+ GdkRegion *clip_region;
-+
- pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
- gtk_entry_get_pixel_ranges (entry, &ranges, &n_ranges);
-
- if (GTK_WIDGET_HAS_FOCUS (entry))
- {
-- selection_color = &widget->style->base [GTK_STATE_SELECTED];
-- text_color = &widget->style->text [GTK_STATE_SELECTED];
-+ selection_gc = widget->style->base_gc [GTK_STATE_SELECTED];
-+ text_gc = widget->style->text_gc [GTK_STATE_SELECTED];
- }
- else
- {
-- selection_color = &widget->style->base [GTK_STATE_ACTIVE];
-- text_color = &widget->style->text [GTK_STATE_ACTIVE];
-+ selection_gc = widget->style->base_gc [GTK_STATE_ACTIVE];
-+ text_gc = widget->style->text_gc [GTK_STATE_ACTIVE];
- }
--
-+
-+ clip_region = gdk_region_new ();
- _gtk_entry_effective_inner_border (entry, &inner_border);
-
- for (i = 0; i < n_ranges; ++i)
-- cairo_rectangle (cr,
-- inner_border.left - entry->scroll_offset + ranges[2 * i],
-- y,
-- ranges[2 * i + 1],
-- logical_rect.height);
-+ {
-+ GdkRectangle rect;
-
-- cairo_clip (cr);
--
-- gdk_cairo_set_source_color (cr, selection_color);
-- cairo_paint (cr);
-+ rect.x = inner_border.left - entry->scroll_offset + ranges[2 * i];
-+ rect.y = y;
-+ rect.width = ranges[2 * i + 1];
-+ rect.height = logical_rect.height;
-+
-+ gdk_draw_rectangle (entry->text_area, selection_gc, TRUE,
-+ rect.x, rect.y, rect.width, rect.height);
-
-- cairo_move_to (cr, x, y);
-- gdk_cairo_set_source_color (cr, text_color);
-- pango_cairo_show_layout (cr, layout);
-+ gdk_region_union_with_rect (clip_region, &rect);
-+ }
-
-+ gdk_gc_set_clip_region (text_gc, clip_region);
-+ gdk_draw_layout (entry->text_area, text_gc,
-+ x, y,
-+ layout);
-+ gdk_gc_set_clip_region (text_gc, NULL);
-+
-+ gdk_region_destroy (clip_region);
- g_free (ranges);
- }
--
-- cairo_destroy (cr);
- }
- }
-
-Index: gtk+-2.10.6/gtk/gtkwidget.c
-===================================================================
---- gtk+-2.10.6.orig/gtk/gtkwidget.c 2006-10-30 12:58:30.000000000 +0000
-+++ gtk+-2.10.6/gtk/gtkwidget.c 2006-10-30 12:59:30.000000000 +0000
-@@ -5445,7 +5445,8 @@
- GdkScreen *screen;
-
- update_pango_context (widget, context);
--
-+/* TODO: Figure out the proper way to handle this in a pangoxft setting
-+
- screen = gtk_widget_get_screen_unchecked (widget);
- if (screen)
- {
-@@ -5453,7 +5454,7 @@
- gdk_screen_get_resolution (screen));
- pango_cairo_context_set_font_options (context,
- gdk_screen_get_font_options (screen));
-- }
-+ }*/
- }
- }
-
-Index: gtk+-2.10.6/gdk/x11/gdkpango-x11.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gtk+-2.10.6/gdk/x11/gdkpango-x11.c 2006-10-30 12:59:30.000000000 +0000
-@@ -0,0 +1,174 @@
-+/* GDK - The GIMP Drawing Kit
-+ * Copyright (C) 2000 Red Hat, Inc.
-+ *
-+ * This 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 of the License, or (at your option) any later version.
-+ *
-+ * This 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 this library; if not, write to the
-+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+ * Boston, MA 02111-1307, USA.
-+ */
-+
-+#include <config.h>
-+#include <stdlib.h>
-+
-+#include "gdkx.h"
-+#include "gdkdisplay-x11.h"
-+#include "gdkpango.h"
-+#include <pango/pangoxft.h>
-+#include <pango/pangoxft-render.h>
-+#include "gdkalias.h"
-+
-+#include <math.h>
-+
-+typedef struct _GdkX11Renderer GdkX11Renderer;
-+typedef struct _GdkX11RendererClass GdkX11RendererClass;
-+
-+#define GDK_TYPE_X11_RENDERER (_gdk_x11_renderer_get_type())
-+#define GDK_X11_RENDERER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_X11_RENDERER, GdkX11Renderer))
-+#define GDK_IS_X11_RENDERER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_X11_RENDERER))
-+#define GDK_X11_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_X11_RENDERER, GdkX11RendererClass))
-+#define GDK_IS_X11_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_X11_RENDERER))
-+#define GDK_X11_RENDERER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_X11_RENDERER, GdkX11RendererClass))
-+
-+#define MAX_RENDER_PART PANGO_RENDER_PART_STRIKETHROUGH
-+
-+struct _GdkX11Renderer
-+{
-+ PangoXftRenderer parent_instance;
-+
-+ XRenderPictFormat *mask_format;
-+
-+ GdkDrawable *drawable;
-+ GdkGC *gc;
-+};
-+
-+struct _GdkX11RendererClass
-+{
-+ PangoXftRendererClass parent_class;
-+};
-+
-+G_DEFINE_TYPE (GdkX11Renderer, _gdk_x11_renderer, PANGO_TYPE_XFT_RENDERER)
-+
-+static void
-+gdk_x11_renderer_finalize (GObject *object)
-+{
-+ G_OBJECT_CLASS (_gdk_x11_renderer_parent_class)->finalize (object);
-+}
-+
-+static void
-+gdk_x11_renderer_composite_trapezoids (PangoXftRenderer *xftrenderer,
-+ PangoRenderPart part,
-+ XTrapezoid *trapezoids,
-+ int n_trapezoids)
-+{
-+ /* Because we only use this renderer for "draw_glyphs()" calls, we
-+ * won't hit this code path much. However, it is hit for drawing
-+ * the "unknown glyph" hex squares. We can safely ignore the part,
-+ */
-+ GdkX11Renderer *x11_renderer = GDK_X11_RENDERER (xftrenderer);
-+
-+ _gdk_x11_drawable_draw_xtrapezoids (x11_renderer->drawable,
-+ x11_renderer->gc,
-+ trapezoids, n_trapezoids);
-+
-+}
-+
-+static void
-+gdk_x11_renderer_composite_glyphs (PangoXftRenderer *xftrenderer,
-+ XftFont *xft_font,
-+ XftGlyphSpec *glyphs,
-+ gint n_glyphs)
-+{
-+ GdkX11Renderer *x11_renderer = GDK_X11_RENDERER (xftrenderer);
-+
-+ _gdk_x11_drawable_draw_xft_glyphs (x11_renderer->drawable,
-+ x11_renderer->gc,
-+ xft_font, glyphs, n_glyphs);
-+}
-+
-+static void
-+_gdk_x11_renderer_init (GdkX11Renderer *renderer)
-+{
-+}
-+
-+static void
-+_gdk_x11_renderer_class_init (GdkX11RendererClass *klass)
-+{
-+ PangoXftRendererClass *xftrenderer_class = PANGO_XFT_RENDERER_CLASS (klass);
-+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
-+
-+ xftrenderer_class->composite_glyphs = gdk_x11_renderer_composite_glyphs;
-+ xftrenderer_class->composite_trapezoids = gdk_x11_renderer_composite_trapezoids;
-+
-+ object_class->finalize = gdk_x11_renderer_finalize;
-+}
-+
-+PangoRenderer *
-+_gdk_x11_renderer_get (GdkDrawable *drawable,
-+ GdkGC *gc)
-+{
-+ GdkScreen *screen = GDK_DRAWABLE_IMPL_X11 (drawable)->screen;
-+ GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
-+ GdkX11Renderer *x11_renderer;
-+
-+ if (!screen_x11->renderer)
-+ {
-+ screen_x11->renderer = g_object_new (GDK_TYPE_X11_RENDERER,
-+ "display", GDK_SCREEN_XDISPLAY (screen),
-+ "screen", GDK_SCREEN_XNUMBER (screen),
-+ NULL);
-+ }
-+
-+ x11_renderer = GDK_X11_RENDERER (screen_x11->renderer);
-+
-+ x11_renderer->drawable = drawable;
-+ x11_renderer->gc = gc;
-+
-+ return screen_x11->renderer;
-+}
-+
-+/**
-+ * gdk_pango_context_get_for_screen:
-+ * @screen: the #GdkScreen for which the context is to be created.
-+ *
-+ * Creates a #PangoContext for @screen.
-+ *
-+ * The context must be freed when you're finished with it.
-+ *
-+ * When using GTK+, normally you should use gtk_widget_get_pango_context()
-+ * instead of this function, to get the appropriate context for
-+ * the widget you intend to render text onto.
-+ *
-+ * Return value: a new #PangoContext for @screen
-+ *
-+ * Since: 2.2
-+ **/
-+PangoContext *
-+gdk_pango_context_get_for_screen (GdkScreen *screen)
-+{
-+ PangoContext *context;
-+
-+ g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
-+
-+ if (screen->closed)
-+ return NULL;
-+
-+ context = pango_xft_get_context (GDK_SCREEN_XDISPLAY (screen),
-+ GDK_SCREEN_X11 (screen)->screen_num);
-+
-+ g_object_set_data (G_OBJECT (context), "gdk-pango-screen", screen);
-+
-+ return context;
-+}
-+
-+#define __GDK_PANGO_X11_C__
-+#include "gdkaliasdef.c"
-Index: gtk+-2.10.6/gdk/x11/gdkpixmap-x11.c
-===================================================================
---- gtk+-2.10.6.orig/gdk/x11/gdkpixmap-x11.c 2006-10-30 12:58:30.000000000 +0000
-+++ gtk+-2.10.6/gdk/x11/gdkpixmap-x11.c 2006-10-30 12:59:30.000000000 +0000
-@@ -119,6 +119,9 @@
- {
- GdkDrawableImplX11 *draw_impl = GDK_DRAWABLE_IMPL_X11 (impl);
-
-+ if (draw_impl->xft_draw)
-+ XftDrawDestroy (draw_impl->xft_draw);
-+
- _gdk_x11_drawable_finish (GDK_DRAWABLE (draw_impl));
- }
-
---- gtk+-2.10.6.orig/gtk/gtkcalendar.c.orig 2006-11-14 14:39:34.000000000 -0800
-+++ gtk+-2.10.6/gtk/gtkcalendar.c 2006-11-14 14:37:34.000000000 -0800
-@@ -1495,6 +1495,10 @@ gtk_calendar_realize (GtkWidget *widget)
- BACKGROUND_COLOR ( GTK_WIDGET ( calendar)));
- gdk_window_show (priv->main_win);
- gdk_window_set_user_data (priv->main_win, widget);
-+
-+ /* Set widgets gc */
-+ calendar->gc = gdk_gc_new (widget->window);
-+
- gdk_window_set_background (widget->window, BACKGROUND_COLOR (widget));
- gdk_window_show (widget->window);
- gdk_window_set_user_data (widget->window, widget);
diff --git a/packages/gtk+/gtk+-2.10.6/run-iconcache.patch b/packages/gtk+/gtk+-2.10.6/run-iconcache.patch
deleted file mode 100644
index 5c114dbdda..0000000000
--- a/packages/gtk+/gtk+-2.10.6/run-iconcache.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Index: gtk+-2.10.6/gtk/Makefile.am
-===================================================================
---- gtk+-2.10.6.orig/gtk/Makefile.am 2006-10-30 12:56:34.000000000 +0000
-+++ gtk+-2.10.6/gtk/Makefile.am 2006-10-30 12:57:08.000000000 +0000
-@@ -1119,11 +1119,11 @@
- done \
- && touch stamp-icons
-
--gtkbuiltincache.h: @REBUILD@ stamp-icons
-- $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT)
-- GDK_PIXBUF_MODULE_FILE=$(top_builddir)/gdk-pixbuf/gdk-pixbuf.loaders \
-- ./gtk-update-icon-cache --force --ignore-theme-index \
-- --source builtin_icons stock-icons > gtkbuiltincache.h
-+#gtkbuiltincache.h: @REBUILD@ stamp-icons
-+# $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT)
-+# GDK_PIXBUF_MODULE_FILE=$(top_builddir)/gdk-pixbuf/gdk-pixbuf.loaders \
-+# ./gtk-update-icon-cache --force --ignore-theme-index \
-+# --source builtin_icons stock-icons > gtkbuiltincache.h
-
- EXTRA_DIST += \
- $(STOCK_ICONS) \
diff --git a/packages/gtk+/gtk+-2.10.9/.mtn2git_empty b/packages/gtk+/gtk+-2.10.9/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-2.10.9/automake-lossage.patch b/packages/gtk+/gtk+-2.10.9/automake-lossage.patch
new file mode 100644
index 0000000000..0d423ddbb9
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/automake-lossage.patch
@@ -0,0 +1,24 @@
+--- gtk+-2.4.1/docs/tutorial/Makefile.am~ 2003-05-06 22:54:20.000000000 +0100
++++ gtk+-2.4.1/docs/tutorial/Makefile.am 2004-05-08 12:31:41.000000000 +0100
+@@ -52,21 +52,5 @@
+
+ dist-hook: html
+ cp -Rp $(srcdir)/html $(distdir)
+-else
+-html:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-pdf:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-dist-hook:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "*** DISTRIBUTION IS INCOMPLETE"
+- echo "***"
+ endif
+
diff --git a/packages/gtk+/gtk+-2.10.9/disable-print.patch b/packages/gtk+/gtk+-2.10.9/disable-print.patch
new file mode 100644
index 0000000000..1067773f12
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/disable-print.patch
@@ -0,0 +1,50 @@
+--- gtk+-2.10.0/configure.in~ 2006-07-05 18:11:44.000000000 +0200
++++ gtk+-2.10.0/configure.in 2006-07-05 18:11:44.000000000 +0200
+@@ -1539,26 +1539,27 @@
+ # Printing system checks
+ ################################################################
+
+-AC_PATH_PROG(CUPS_CONFIG, cups-config, no)
+-if test "x$CUPS_CONFIG" != "xno"; then
+- CUPS_CFLAGS=`cups-config --cflags | sed 's/-O[0-9]*//' | sed 's/-m[^\t]*//g'`
+- CUPS_LIBS=`cups-config --libs`
+-
+- CUPS_API_VERSION=`cups-config --api-version`
+- CUPS_API_MAJOR=`echo -n $CUPS_API_VERSION | awk -F. '{print $1}'`
+- CUPS_API_MINOR=`echo -n $CUPS_API_VERSION | awk -F. '{print $2}'`
+-
+- if test $CUPS_API_MAJOR -gt 1 -o \
+- $CUPS_API_MAJOR -eq 1 -a $CUPS_API_MINOR -ge 2; then
+- AC_DEFINE(HAVE_CUPS_API_1_2)
+- fi
+-
+- AC_SUBST(CUPS_API_MAJOR)
+- AC_SUBST(CUPS_API_MINOR)
+- AC_SUBST(CUPS_CFLAGS)
+- AC_SUBST(CUPS_LIBS)
+-fi
+-AM_CONDITIONAL(HAVE_CUPS, test "x$CUPS_CONFIG" != "xno")
++#AC_PATH_PROG(CUPS_CONFIG, cups-config, no)
++#if test "x$CUPS_CONFIG" != "xno"; then
++# CUPS_CFLAGS=`cups-config --cflags | sed 's/-O[0-9]*//' | sed 's/-m[^\t]*//g'`
++# CUPS_LIBS=`cups-config --libs`
++#
++# CUPS_API_VERSION=`cups-config --api-version`
++# CUPS_API_MAJOR=`echo -n $CUPS_API_VERSION | awk -F. '{print $1}'`
++# CUPS_API_MINOR=`echo -n $CUPS_API_VERSION | awk -F. '{print $2}'`
++#
++# if test $CUPS_API_MAJOR -gt 1 -o \
++# $CUPS_API_MAJOR -eq 1 -a $CUPS_API_MINOR -ge 2; then
++# AC_DEFINE(HAVE_CUPS_API_1_2)
++# fi
++#
++# AC_SUBST(CUPS_API_MAJOR)
++# AC_SUBST(CUPS_API_MINOR)
++# AC_SUBST(CUPS_CFLAGS)
++# AC_SUBST(CUPS_LIBS)
++#fi
++#AM_CONDITIONAL(HAVE_CUPS, test "x$CUPS_CONFIG" != "xno")
++AM_CONDITIONAL(HAVE_CUPS,false)
+
+ gtk_save_cppflags="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $GTK_DEP_CFLAGS"
diff --git a/packages/gtk+/gtk+-2.10.9/disable-tooltips.patch b/packages/gtk+/gtk+-2.10.9/disable-tooltips.patch
new file mode 100644
index 0000000000..d71d839c3c
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/disable-tooltips.patch
@@ -0,0 +1,11 @@
+--- gtk+-2.4.3/gtk/gtktooltips.c.old 2004-07-04 18:52:04.000000000 +0100
++++ gtk+-2.4.3/gtk/gtktooltips.c 2004-07-04 18:52:08.000000000 +0100
+@@ -118,7 +118,7 @@
+ tooltips->tips_data_list = NULL;
+
+ tooltips->delay = DEFAULT_DELAY;
+- tooltips->enabled = TRUE;
++ tooltips->enabled = FALSE;
+ tooltips->timer_tag = 0;
+ tooltips->use_sticky_delay = FALSE;
+ tooltips->last_popdown.tv_sec = -1;
diff --git a/packages/gtk+/gtk+-2.10.9/gnome-bug-341177.patch b/packages/gtk+/gtk+-2.10.9/gnome-bug-341177.patch
new file mode 100644
index 0000000000..c31868462a
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/gnome-bug-341177.patch
@@ -0,0 +1,217 @@
+diff -uprN gtk+-2.8.13.org/gdk-pixbuf/pixops/pixops.c gtk+-2.8.13.INNER_LOOP/gdk-pixbuf/pixops/pixops.c
+--- gtk+-2.8.13.org/gdk-pixbuf/pixops/pixops.c Tue Jul 12 18:58:57 2005
++++ gtk+-2.8.13.INNER_LOOP/gdk-pixbuf/pixops/pixops.c Tue May 9 17:30:53 2006
+@@ -71,35 +71,24 @@ get_check_shift (int check_size)
+ return check_shift;
+ }
+
+-static void
+-pixops_scale_nearest (guchar *dest_buf,
+- int render_x0,
+- int render_y0,
+- int render_x1,
+- int render_y1,
+- int dest_rowstride,
+- int dest_channels,
+- gboolean dest_has_alpha,
+- const guchar *src_buf,
+- int src_width,
+- int src_height,
+- int src_rowstride,
+- int src_channels,
+- gboolean src_has_alpha,
+- double scale_x,
+- double scale_y)
+-{
+- int i;
+- int x;
+- int x_step = (1 << SCALE_SHIFT) / scale_x;
+- int y_step = (1 << SCALE_SHIFT) / scale_y;
+- int xmax, xstart, xstop, x_pos, y_pos;
+- const guchar *p;
++typedef struct { guchar a,b,c; } b3;
++extern void BUG_bad_size_of_struct_b3(void);
+
+-#define INNER_LOOP(SRC_CHANNELS,DEST_CHANNELS,ASSIGN_PIXEL) \
++#define INNER_LOOP_PREP() \
++ do { \
++ x = render_x0 * x_step + x_step / 2; \
+ xmax = x + (render_x1 - render_x0) * x_step; \
+ xstart = MIN (0, xmax); \
+ xstop = MIN (src_width << SCALE_SHIFT, xmax); \
++ } while(0)
++
++#define INNER_LOOP_BODY(SRC_CHANNELS,DEST_CHANNELS,ASSIGN_PIXEL)\
++ do { \
++ y_pos = ((i + render_y0) * y_step + y_step / 2) >> SCALE_SHIFT; \
++ y_pos = CLAMP (y_pos, 0, src_height - 1); \
++ src = src_buf + y_pos * src_rowstride; \
++ dest = dest_buf + i * dest_rowstride; \
++ x = render_x0 * x_step + x_step / 2; \
+ p = src + (CLAMP (x, xstart, xstop) >> SCALE_SHIFT) * SRC_CHANNELS; \
+ while (x < xstart) \
+ { \
+@@ -121,42 +110,58 @@ pixops_scale_nearest (guchar *des
+ ASSIGN_PIXEL; \
+ dest += DEST_CHANNELS; \
+ x += x_step; \
+- }
++ } \
++ } while(0)
+
+- for (i = 0; i < (render_y1 - render_y0); i++)
+- {
+- const guchar *src;
+- guchar *dest;
+- y_pos = ((i + render_y0) * y_step + y_step / 2) >> SCALE_SHIFT;
+- y_pos = CLAMP (y_pos, 0, src_height - 1);
+- src = src_buf + y_pos * src_rowstride;
+- dest = dest_buf + i * dest_rowstride;
++static void
++pixops_scale_nearest (guchar *dest_buf,
++ int render_x0,
++ int render_y0,
++ int render_x1,
++ int render_y1,
++ int dest_rowstride,
++ int dest_channels,
++ gboolean dest_has_alpha,
++ const guchar *src_buf,
++ int src_width,
++ int src_height,
++ int src_rowstride,
++ int src_channels,
++ gboolean src_has_alpha,
++ double scale_x,
++ double scale_y)
++{
++ int i;
++ int x;
++ int x_step = (1 << SCALE_SHIFT) / scale_x;
++ int y_step = (1 << SCALE_SHIFT) / scale_y;
++ int xmax, xstart, xstop, x_pos, y_pos;
++ const guchar *p;
+
+- x = render_x0 * x_step + x_step / 2;
++ const guchar *src;
++ guchar *dest;
+
+- if (src_channels == 3)
+- {
+- if (dest_channels == 3)
+- {
+- INNER_LOOP (3, 3, dest[0]=p[0];dest[1]=p[1];dest[2]=p[2]);
+- }
+- else
+- {
+- INNER_LOOP (3, 4, dest[0]=p[0];dest[1]=p[1];dest[2]=p[2];dest[3]=0xff);
+- }
+- }
+- else if (src_channels == 4)
+- {
+- if (dest_channels == 3)
+- {
+- INNER_LOOP (4, 3, dest[0]=p[0];dest[1]=p[1];dest[2]=p[2]);
+- }
+- else
+- {
+- guint32 *p32;
+- INNER_LOOP(4, 4, p32=(guint32*)dest;*p32=*((guint32*)p));
+- }
+- }
++ if(sizeof(b3) != 3) BUG_bad_size_of_struct_b3();
++
++ INNER_LOOP_PREP();
++
++ if (src_channels == 3)
++ {
++ if (dest_channels == 3)
++ for (i = 0; i < (render_y1 - render_y0); i++)
++ INNER_LOOP_BODY (3, 3, *(b3*)dest = *(b3*)p);
++ else
++ for (i = 0; i < (render_y1 - render_y0); i++)
++ INNER_LOOP_BODY (3, 4, (*(b3*)dest = *(b3*)p, dest[3]=0xff) );
++ }
++ else if (src_channels == 4)
++ {
++ if (dest_channels == 3)
++ for (i = 0; i < (render_y1 - render_y0); i++)
++ INNER_LOOP_BODY (4, 3, *(b3*)dest = *(b3*)p);
++ else
++ for (i = 0; i < (render_y1 - render_y0); i++)
++ INNER_LOOP_BODY (4, 4, *(guint32*)dest = *((guint32*)p));
+ }
+ }
+
+@@ -187,18 +192,14 @@ pixops_composite_nearest (guchar
+ const guchar *p;
+ unsigned int a0;
+
++ INNER_LOOP_PREP();
++
+ for (i = 0; i < (render_y1 - render_y0); i++)
+ {
+ const guchar *src;
+ guchar *dest;
+- y_pos = ((i + render_y0) * y_step + y_step / 2) >> SCALE_SHIFT;
+- y_pos = CLAMP (y_pos, 0, src_height - 1);
+- src = src_buf + y_pos * src_rowstride;
+- dest = dest_buf + i * dest_rowstride;
+-
+- x = render_x0 * x_step + x_step / 2;
+
+- INNER_LOOP(src_channels, dest_channels,
++ INNER_LOOP_BODY(src_channels, dest_channels,
+ if (src_has_alpha)
+ a0 = (p[3] * overall_alpha) / 0xff;
+ else
+@@ -209,9 +210,7 @@ pixops_composite_nearest (guchar
+ case 0:
+ break;
+ case 255:
+- dest[0] = p[0];
+- dest[1] = p[1];
+- dest[2] = p[2];
++ *(b3*)dest = *(b3*)p;
+ if (dest_has_alpha)
+ dest[3] = 0xff;
+ break;
+@@ -279,17 +278,12 @@ pixops_composite_color_nearest (guchar
+ const guchar *p;
+ unsigned int a0;
+
++ INNER_LOOP_PREP();
++
+ for (i = 0; i < (render_y1 - render_y0); i++)
+ {
+ const guchar *src;
+ guchar *dest;
+- y_pos = ((i + render_y0) * y_step + y_step / 2) >> SCALE_SHIFT;
+- y_pos = CLAMP (y_pos, 0, src_height - 1);
+- src = src_buf + y_pos * src_rowstride;
+- dest = dest_buf + i * dest_rowstride;
+-
+- x = render_x0 * x_step + x_step / 2;
+-
+
+ if (((i + check_y) >> check_shift) & 1)
+ {
+@@ -313,7 +307,7 @@ pixops_composite_color_nearest (guchar
+ }
+
+ j = 0;
+- INNER_LOOP(src_channels, dest_channels,
++ INNER_LOOP_BODY(src_channels, dest_channels,
+ if (src_has_alpha)
+ a0 = (p[3] * overall_alpha + 0xff) >> 8;
+ else
+@@ -372,7 +366,8 @@ pixops_composite_color_nearest (guchar
+ );
+ }
+ }
+-#undef INNER_LOOP
++#undef INNER_LOOP_BODY
++#undef INNER_LOOP_PREP
+
+ static void
+ composite_pixel (guchar *dest, int dest_x, int dest_channels, int dest_has_alpha,
diff --git a/packages/gtk+/gtk+-2.10.9/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.10.9/gtk+-handhelds.patch
new file mode 100644
index 0000000000..1ea86ce6b2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/gtk+-handhelds.patch
@@ -0,0 +1,149 @@
+Index: gtk+-2.10.6/gtk/gtkarrow.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkarrow.c 2006-05-14 05:25:28.000000000 +0100
++++ gtk+-2.10.6/gtk/gtkarrow.c 2006-11-14 12:03:45.000000000 +0000
+@@ -31,7 +31,7 @@
+ #include "gtkintl.h"
+ #include "gtkalias.h"
+
+-#define MIN_ARROW_SIZE 15
++#define MIN_ARROW_SIZE 7
+
+ enum {
+ PROP_0,
+@@ -53,6 +53,8 @@
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
++static void gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition);
+
+
+ G_DEFINE_TYPE (GtkArrow, gtk_arrow, GTK_TYPE_MISC)
+@@ -88,6 +90,7 @@
+ GTK_PARAM_READWRITE));
+
+ widget_class->expose_event = gtk_arrow_expose;
++ widget_class->size_request = gtk_arrow_size_request;
+ }
+
+ static void
+@@ -143,13 +146,18 @@
+ }
+
+ static void
++gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition)
++{
++ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
++ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
++}
++
++static void
+ gtk_arrow_init (GtkArrow *arrow)
+ {
+ GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW);
+
+- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
+- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
+-
+ arrow->arrow_type = GTK_ARROW_RIGHT;
+ arrow->shadow_type = GTK_SHADOW_OUT;
+ }
+Index: gtk+-2.10.6/gtk/gtkentry.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkentry.c 2006-11-14 12:03:45.000000000 +0000
++++ gtk+-2.10.6/gtk/gtkentry.c 2006-11-14 12:07:02.000000000 +0000
+@@ -577,6 +577,18 @@
+ 0.0,
+ GTK_PARAM_READWRITE));
+
++ // Added by gtk+-handhelds.patch
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("min_width",
++ P_("Minimum width"),
++ P_("Minimum width of the entry field"),
++ 0,
++ G_MAXINT,
++ MIN_ENTRY_WIDTH,
++ G_PARAM_READABLE));
++
++
++
+ /**
+ * GtkEntry:truncate-multiline:
+ *
+@@ -1286,7 +1298,7 @@
+ {
+ GtkEntry *entry = GTK_ENTRY (widget);
+ PangoFontMetrics *metrics;
+- gint xborder, yborder;
++ gint xborder, yborder, min_width;
+ GtkBorder inner_border;
+ PangoContext *context;
+
+@@ -1302,8 +1314,10 @@
+ _gtk_entry_get_borders (entry, &xborder, &yborder);
+ _gtk_entry_effective_inner_border (entry, &inner_border);
+
++ gtk_widget_style_get (widget, "min_width", &min_width, NULL);
++
+ if (entry->width_chars < 0)
+- requisition->width = MIN_ENTRY_WIDTH + xborder * 2 + inner_border.left + inner_border.right;
++ requisition->width = min_width + xborder * 2 + inner_border.left + inner_border.right;
+ else
+ {
+ gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
+Index: gtk+-2.10.6/gtk/gtkrange.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkrange.c 2006-11-14 12:03:44.000000000 +0000
++++ gtk+-2.10.6/gtk/gtkrange.c 2006-11-14 12:07:40.000000000 +0000
+@@ -197,6 +197,7 @@
+ static gboolean gtk_range_key_press (GtkWidget *range,
+ GdkEventKey *event);
+
++static GdkAtom recognize_protocols_atom, atom_atom;
+
+ static guint signals[LAST_SIGNAL];
+
+@@ -213,6 +214,9 @@
+ object_class = (GtkObjectClass*) class;
+ widget_class = (GtkWidgetClass*) class;
+
++ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE);
++ atom_atom = gdk_atom_intern ("ATOM", FALSE);
++
+ gobject_class->set_property = gtk_range_set_property;
+ gobject_class->get_property = gtk_range_get_property;
+ gobject_class->finalize = gtk_range_finalize;
+@@ -1020,6 +1024,12 @@
+ &attributes, attributes_mask);
+ gdk_window_set_user_data (range->event_window, range);
+
++ gdk_property_change (range->event_window,
++ recognize_protocols_atom,
++ atom_atom,
++ 32, GDK_PROP_MODE_REPLACE,
++ NULL, 0);
++
+ widget->style = gtk_style_attach (widget->style, widget->window);
+ }
+
+@@ -1569,7 +1579,7 @@
+
+ /* ignore presses when we're already doing something else. */
+ if (range->layout->grab_location != MOUSE_OUTSIDE)
+- return FALSE;
++ return TRUE;
+
+ range->layout->mouse_x = event->x;
+ range->layout->mouse_y = event->y;
+@@ -1778,7 +1788,7 @@
+ return TRUE;
+ }
+
+- return FALSE;
++ return TRUE;
+ }
+
+ /**
diff --git a/packages/gtk+/gtk+-2.10.9/gtklabel-resize-patch b/packages/gtk+/gtk+-2.10.9/gtklabel-resize-patch
new file mode 100644
index 0000000000..df29656343
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/gtklabel-resize-patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.3/gtk/gtklabel.c~ 2004-06-11 13:50:34.000000000 +0100
++++ gtk+-2.4.3/gtk/gtklabel.c 2004-07-05 13:33:57.000000000 +0100
+@@ -1623,6 +1623,7 @@
+
+ /* We have to clear the layout, fonts etc. may have changed */
+ gtk_label_clear_layout (label);
++ gtk_widget_queue_resize (GTK_WIDGET (label));
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.10.9/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.10.9/hardcoded_libtool.patch
new file mode 100644
index 0000000000..6adb0cfef6
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/hardcoded_libtool.patch
@@ -0,0 +1,29 @@
+--- /tmp/configure.in 2007-01-08 17:50:49.000000000 +0100
++++ gtk+-2.10.7/configure.in 2007-01-08 17:52:33.495251000 +0100
+@@ -371,7 +371,7 @@
+ case $enable_explicit_deps in
+ auto)
+ export SED
+- deplibs_check_method=`(./libtool --config; echo 'eval echo $deplibs_check_method') | sh`
++ deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo $deplibs_check_method') | sh`
+ if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -773,7 +773,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./$host_alias-libtool --config"
+ pixbuf_deplibs_check=`$pixbuf_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1611,7 +1611,7 @@
+ # We are using gmodule-no-export now, but I'm leaving the stripping
+ # code in place for now, since pango and atk still require gmodule.
+ export SED
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/packages/gtk+/gtk+-2.10.9/integer-pixops.patch b/packages/gtk+/gtk+-2.10.9/integer-pixops.patch
new file mode 100644
index 0000000000..490a60dd8a
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/integer-pixops.patch
@@ -0,0 +1,348 @@
+--- /tmp/config.h.in 2006-12-23 00:00:38.000000000 +0100
++++ gtk+-2.10.6/config.h.in 2006-12-23 00:01:05.632227000 +0100
+@@ -253,3 +253,7 @@
+
+ /* Define to `int' if <sys/types.h> doesn't define. */
+ #undef uid_t
++
++/* Define to use integer math rather than floating point where possible. */
++#undef ENABLE_INTEGER_PIXOPS
++
+--- /tmp/configure.in 2006-12-23 00:02:16.000000000 +0100
++++ gtk+-2.10.6/configure.in 2006-12-23 00:05:11.172227000 +0100
+@@ -203,6 +203,15 @@
+ [AC_HELP_STRING([--disable-rebuilds],
+ [disable all source autogeneration rules])],,
+ [enable_rebuilds=yes])
++AC_ARG_ENABLE(integer-pixops,
++ [AC_HELP_STRING([--enable-integer-pixops],
++ [use integer math where possible])],,
++ [enable_integer_pixops=no])
++
++if test "x$enable_integer_pixops" = "xyes"; then
++ AC_DEFINE(ENABLE_INTEGER_PIXOPS)
++fi
++
+ AC_ARG_ENABLE(visibility,
+ [AC_HELP_STRING([--disable-visibility],
+ [don't use ELF visibility attributes])],,
+--- /tmp/pixops.c 2006-12-23 10:04:02.000000000 +0100
++++ gtk+-2.10.6/gdk-pixbuf/pixops/pixops.c 2006-12-23 10:04:21.772227000 +0100
+@@ -28,6 +28,10 @@
+ #define SUBSAMPLE_MASK ((1 << SUBSAMPLE_BITS)-1)
+ #define SCALE_SHIFT 16
+
++#ifdef ENABLE_INTEGER_PIXOPS
++#define FRAC 0x10000ULL
++#endif
++
+ typedef struct _PixopsFilter PixopsFilter;
+ typedef struct _PixopsFilterDimension PixopsFilterDimension;
+
+@@ -972,6 +976,29 @@
+ (*pixel_func) (dest, dest_x, dest_channels, dest_has_alpha, src_has_alpha, check_size, color1, color2, r, g, b, a);
+ }
+
++#ifdef ENABLE_INTEGER_PIXOPS
++
++static void
++correct_total (int *weights,
++ int n_x,
++ int n_y,
++ int total,
++ unsigned long overall_alpha)
++{
++ int correction = (int)(overall_alpha - total);
++ int i;
++ for (i = n_x * n_y - 1; i >= 0; i--)
++ {
++ if (*(weights + i) + correction >= 0)
++ {
++ *(weights + i) += correction;
++ break;
++ }
++ }
++}
++
++#else
++
+ static void
+ correct_total (int *weights,
+ int n_x,
+@@ -998,6 +1025,8 @@
+ }
+ }
+
++#endif
++
+ static int *
+ make_filter_table (PixopsFilter *filter)
+ {
+@@ -1026,7 +1055,11 @@
+ *(pixel_weights + n_x * i + j) = weight;
+ }
+
+- correct_total (pixel_weights, n_x, n_y, total, filter->overall_alpha);
++#ifdef ENABLE_INTEGER_PIXOPS
++ correct_total (pixel_weights, n_x, n_y, total, overall_alpha * FRAC);
++#else
++ correct_total (pixel_weights, n_x, n_y, total, overall_alpha);
++#endif
+ }
+
+ return weights;
+@@ -1178,6 +1211,93 @@
+ /* Compute weights for reconstruction by replication followed by
+ * sampling with a box filter
+ */
++#ifdef ENABLE_INTEGER_PIXOPS
++
++static void
++tile_make_weights (PixopsFilter *filter, double x_scale_d, double y_scale_d, double overall_alpha_d)
++{
++ int i_offset, j_offset;
++ unsigned long x_scale = x_scale_d * FRAC;
++ unsigned long y_scale = y_scale_d * FRAC;
++ unsigned long overall_alpha = overall_alpha_d * FRAC;
++ unsigned long x_scale_r = FRAC / x_scale;
++ unsigned long y_scale_r = FRAC / y_scale;
++
++ int n_x = ceil(1/x_scale_d + 1);
++ int n_y = ceil(1/y_scale_d + 1);
++
++ filter->x_offset = 0;
++ filter->y_offset = 0;
++ filter->n_x = n_x;
++ filter->n_y = n_y;
++ filter->weights = g_new (int, SUBSAMPLE * SUBSAMPLE * n_x * n_y);
++
++ for (i_offset=0; i_offset<SUBSAMPLE; i_offset++)
++ for (j_offset=0; j_offset<SUBSAMPLE; j_offset++)
++ {
++ int *pixel_weights = filter->weights + ((i_offset*SUBSAMPLE) + j_offset) * n_x * n_y;
++ unsigned long x = j_offset * FRAC / SUBSAMPLE;
++ unsigned long y = i_offset * FRAC / SUBSAMPLE;
++ int i,j;
++ int total = 0;
++
++ for (i = 0; i < n_y; i++)
++ {
++ unsigned long tw, th;
++
++ if (i < y)
++ {
++
++ if (i + FRAC > y)
++ th = MIN(i+FRAC, y + y_scale_r) - y;
++ else
++ th = 0;
++ }
++ else
++ {
++ if (y + FRAC/y_scale > i)
++ th = MIN(i+FRAC, y + y_scale_r) - i;
++ else
++ th = 0;
++ }
++
++ for (j = 0; j < n_x; j++)
++ {
++ int weight;
++
++ if (j < x)
++ {
++ if (j + FRAC > x)
++ tw = MIN(j+FRAC, x + x_scale_r) - x;
++ else
++ tw = 0;
++ }
++ else
++ {
++ if (x + FRAC/x_scale > j)
++ tw = MIN(j+FRAC, x + x_scale_r) - j;
++ else
++ tw = 0;
++ }
++
++ {
++ unsigned long lweight = (tw * x_scale) / FRAC;
++ lweight = (lweight * th) / FRAC;
++ lweight = (lweight * y_scale) / FRAC;
++ lweight = (lweight * overall_alpha) / FRAC;
++ weight = lweight;
++ }
++ total += weight;
++ *(pixel_weights + n_x * i + j) = weight;
++ }
++ }
++
++ correct_total (pixel_weights, n_x, n_y, total, overall_alpha);
++ }
++}
++
++#else
++
+ static void
+ tile_make_weights (PixopsFilterDimension *dim,
+ double scale)
+@@ -1216,10 +1336,151 @@
+ }
+ }
+
++#endif
++
+ /* Compute weights for a filter that, for minification
+ * is the same as 'tiles', and for magnification, is bilinear
+ * reconstruction followed by a sampling with a delta function.
+ */
++#ifdef ENABLE_INTEGER_PIXOPS
++
++static void
++bilinear_magnify_make_weights (PixopsFilter *filter, double x_scale_d, double y_scale_d, double overall_alpha_d)
++{
++ int i_offset, j_offset;
++ unsigned long *x_weights, *y_weights;
++ int n_x, n_y;
++ unsigned long x_scale = x_scale_d * FRAC;
++ unsigned long y_scale = y_scale_d * FRAC;
++ unsigned long overall_alpha = overall_alpha_d * FRAC;
++ unsigned long x_scale_r = (FRAC / x_scale_d);
++ unsigned long y_scale_r = (FRAC / y_scale_d);
++
++ if (x_scale > FRAC) /* Bilinear */
++ {
++ n_x = 2;
++ filter->x_offset = 0.5 * (1/x_scale_d - 1);
++ }
++ else /* Tile */
++ {
++ n_x = ceil(1.0 + 1.0/x_scale_d);
++ filter->x_offset = 0.0;
++ }
++
++ if (y_scale > FRAC) /* Bilinear */
++ {
++ n_y = 2;
++ filter->y_offset = 0.5 * (1/y_scale_d - 1);
++ }
++ else /* Tile */
++ {
++ n_y = ceil(1.0 + 1.0/y_scale_d);
++ filter->y_offset = 0.0;
++ }
++
++ filter->n_y = n_y;
++ filter->n_x = n_x;
++ filter->weights = g_new (int, SUBSAMPLE * SUBSAMPLE * n_x * n_y);
++
++ x_weights = g_new (unsigned long, n_x);
++ y_weights = g_new (unsigned long, n_y);
++
++ for (i_offset=0; i_offset<SUBSAMPLE; i_offset++)
++ for (j_offset=0; j_offset<SUBSAMPLE; j_offset++)
++ {
++ int *pixel_weights = filter->weights + ((i_offset*SUBSAMPLE) + j_offset) * n_x * n_y;
++ unsigned long x = j_offset * FRAC / SUBSAMPLE;
++ unsigned long y = i_offset * FRAC / SUBSAMPLE;
++ int i,j;
++ int total = 0;
++
++ if (x_scale > FRAC) /* Bilinear */
++ {
++ for (i = 0; i < n_x; i++)
++ {
++ /* x_weights[i] = ((i == 0) ? (1 - x) : x) / x_scale; */
++ unsigned long w = (((i == 0) ? (FRAC - x) : x) * x_scale_r);
++ x_weights[i] = w / FRAC;
++ }
++ }
++ else /* Tile */
++ {
++ /* x
++ * ---------|--.-|----|--.-|------- SRC
++ * ------------|---------|--------- DEST
++ */
++ for (i = 0; i < n_x; i++)
++ {
++ if (i < x)
++ {
++ if (i + 1 > x)
++ x_weights[i] = MIN(FRAC*(i+1), FRAC * x + (((unsigned long long)(FRAC * FRAC)) / (unsigned long)x_scale)) - (x * FRAC);
++ else
++ x_weights[i] = 0;
++ }
++ else
++ {
++ if (x + 1/x_scale > i)
++ x_weights[i] = MIN(FRAC*(i+1), FRAC * x + (((unsigned long long)(FRAC * FRAC)) / (unsigned long)x_scale)) - (i * FRAC);
++ else
++ x_weights[i] = 0;
++ }
++ }
++ }
++
++ if (y_scale > FRAC) /* Bilinear */
++ {
++ for (i = 0; i < n_y; i++)
++ {
++ unsigned long w = ((unsigned long)((i == 0) ? (FRAC - y) : y) * y_scale_r);
++ y_weights[i] = w / FRAC;
++ }
++ }
++ else /* Tile */
++ {
++ /* y
++ * ---------|--.-|----|--.-|------- SRC
++ * ------------|---------|--------- DEST
++ */
++ for (i = 0; i < n_y; i++)
++ {
++ if (i < y)
++ {
++ if (i + 1 > y)
++ y_weights[i] = MIN(FRAC*(i+1), FRAC * y + (FRAC * FRAC / (unsigned long)y_scale)) - (y * FRAC);
++ else
++ y_weights[i] = 0;
++ }
++ else
++ {
++ if (y + 1/y_scale > i)
++ y_weights[i] = MIN(FRAC*(i+1), FRAC * y + (FRAC * FRAC / (unsigned long)y_scale)) - (i * FRAC);
++ else
++ y_weights[i] = 0;
++ }
++ }
++ }
++
++ for (i = 0; i < n_y; i++)
++ for (j = 0; j < n_x; j++)
++ {
++ unsigned long long weight = (x_weights[j] * x_scale) / FRAC;
++ weight = (weight * y_weights[i]) / FRAC;
++ weight = (weight * y_scale) / FRAC;
++ weight = (weight * overall_alpha) / FRAC;
++ *(pixel_weights + n_x * i + j) = (unsigned long)weight;
++ total += (unsigned long)weight;
++ }
++
++ correct_total (pixel_weights, n_x, n_y, total, overall_alpha);
++ }
++
++ g_free (x_weights);
++ g_free (y_weights);
++}
++
++#else
++
+ static void
+ bilinear_magnify_make_weights (PixopsFilterDimension *dim,
+ double scale)
+@@ -1283,6 +1544,8 @@
+ }
+ }
+
++#endif
++
+ /* Computes the integral from b0 to b1 of
+ *
+ * f(x) = x; 0 <= x < 1
diff --git a/packages/gtk+/gtk+-2.10.9/menu-deactivate.patch b/packages/gtk+/gtk+-2.10.9/menu-deactivate.patch
new file mode 100644
index 0000000000..cfb8849e9f
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/menu-deactivate.patch
@@ -0,0 +1,51 @@
+--- gtk+-2.10.0/gtk/gtkmenushell.c.orig 2006-07-05 17:17:34.000000000 +0200
++++ gtk+-2.10.0/gtk/gtkmenushell.c 2006-07-05 17:19:01.000000000 +0200
+@@ -42,7 +42,7 @@
+ #include "gtkintl.h"
+ #include "gtkalias.h"
+
+-#define MENU_SHELL_TIMEOUT 500
++#define MENU_SHELL_TIMEOUT 2000
+
+ #define PACK_DIRECTION(m) \
+ (GTK_IS_MENU_BAR (m) \
+@@ -203,6 +203,8 @@
+
+ G_DEFINE_TYPE (GtkMenuShell, gtk_menu_shell, GTK_TYPE_CONTAINER)
+
++static int last_crossing_time;
++
+ static void
+ gtk_menu_shell_class_init (GtkMenuShellClass *klass)
+ {
+@@ -517,6 +519,7 @@
+ gtk_grab_add (GTK_WIDGET (menu_shell));
+ menu_shell->have_grab = TRUE;
+ menu_shell->active = TRUE;
++ last_crossing_time = 0;
+ }
+ }
+
+@@ -669,6 +672,13 @@
+ menu_shell->activate_time = 0;
+ deactivate = FALSE;
+ }
++
++ if (last_crossing_time != 0
++ && ((event->time - last_crossing_time) < 500))
++ {
++ last_crossing_time = 0;
++ deactivate = FALSE;
++ }
+
+ if (deactivate)
+ {
+@@ -716,6 +726,8 @@
+ {
+ menu_item = gtk_get_event_widget ((GdkEvent*) event);
+
++ last_crossing_time = event->time;
++
+ if (!menu_item ||
+ (GTK_IS_MENU_ITEM (menu_item) &&
+ !_gtk_menu_item_is_selectable (menu_item)))
diff --git a/packages/gtk+/gtk+-2.10.9/migration.patch b/packages/gtk+/gtk+-2.10.9/migration.patch
new file mode 100644
index 0000000000..4ee786e688
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/migration.patch
@@ -0,0 +1,611 @@
+Index: configure.in
+===================================================================
+--- configure.in.orig 2006-10-03 17:54:09.000000000 +0100
++++ configure.in 2006-10-30 12:58:33.000000000 +0000
+@@ -1529,6 +1529,16 @@
+ GTK_EXTRA_CFLAGS="$msnative_struct"
+ fi
+
++AC_ARG_ENABLE(display-migration,
++ [AC_HELP_STRING([--enable-display-migration],
++ [include support for GPE_CHANGE_DISPLAY protocol])],
++ enable_migration=yes, enable_migration=no)
++if test "$enable_migration" = "yes"; then
++ AC_DEFINE([ENABLE_MIGRATION], 1, [Define if display migration is enabled])
++ GTK_DEP_LIBS="$GTK_DEP_LIBS -lgcrypt"
++fi
++AM_CONDITIONAL(ENABLE_MIGRATION, test $enable_migration = "yes")
++
+ AC_SUBST(GTK_PACKAGES)
+ AC_SUBST(GTK_EXTRA_LIBS)
+ AC_SUBST(GTK_EXTRA_CFLAGS)
+Index: gtk/Makefile.am
+===================================================================
+--- gtk/Makefile.am.orig 2006-10-02 18:27:53.000000000 +0100
++++ gtk/Makefile.am 2006-10-30 12:59:14.000000000 +0000
+@@ -589,6 +589,11 @@
+ gtkwindow-decorate.c \
+ gtkwindow.c \
+ $(gtk_clipboard_dnd_c_sources)
++
++if ENABLE_MIGRATION
++gtk_base_c_sources += gtkmigration.c
++endif
++
+ gtk_c_sources = $(gtk_base_c_sources)
+ gtk_all_c_sources = $(gtk_base_c_sources)
+
+Index: gtk/gtkmain.c
+===================================================================
+--- gtk/gtkmain.c.orig 2006-09-03 06:31:21.000000000 +0100
++++ gtk/gtkmain.c 2006-10-30 12:56:34.000000000 +0000
+@@ -507,6 +507,10 @@
+ _gtk_accel_map_init ();
+ _gtk_rc_init ();
+
++#ifdef ENABLE_MIGRATION
++ gtk_migration_init ();
++#endif
++
+ /* Set the 'initialized' flag.
+ */
+ gtk_initialized = TRUE;
+Index: gtk/gtkmigration.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gtk/gtkmigration.c 2006-10-30 12:56:34.000000000 +0000
+@@ -0,0 +1,529 @@
++/*
++ * Copyright (C) 2003, 2005 Philip Blundell <philb@gnu.org>
++ *
++ * 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 <stdlib.h>
++#include <ctype.h>
++#include <libintl.h>
++#include <string.h>
++#include <assert.h>
++
++#include <X11/X.h>
++#include <X11/Xlib.h>
++#include <X11/Xatom.h>
++
++#include <gcrypt.h>
++
++#include "gtk.h"
++#include "gdk.h"
++#include "x11/gdkx.h"
++
++#define _(x) gettext(x)
++
++static GdkAtom string_gdkatom, display_change_gdkatom;
++static GdkAtom rsa_challenge_gdkatom;
++
++#define DISPLAY_CHANGE_SUCCESS 0
++#define DISPLAY_CHANGE_UNABLE_TO_CONNECT 1
++#define DISPLAY_CHANGE_NO_SUCH_SCREEN 2
++#define DISPLAY_CHANGE_AUTHENTICATION_BAD 3
++#define DISPLAY_CHANGE_INDETERMINATE_ERROR 4
++
++static gboolean no_auth;
++
++static GSList *all_widgets;
++
++static gboolean gtk_migration_initialised;
++
++#define CHALLENGE_LEN 64
++
++gchar *gtk_migration_auth_challenge_string;
++
++static unsigned char challenge_bytes[CHALLENGE_LEN];
++static unsigned long challenge_seq;
++
++#define hexbyte(x) ((x) >= 10 ? (x) + 'a' - 10 : (x) + '0')
++
++struct rsa_key
++{
++ gcry_mpi_t n, e, d, p, q, u;
++};
++
++static gcry_mpi_t
++mpi_from_sexp (gcry_sexp_t r, char *tag)
++{
++ gcry_sexp_t s = gcry_sexp_find_token (r, tag, 0);
++ return gcry_sexp_nth_mpi (s, 1, GCRYMPI_FMT_USG);
++}
++
++static char *
++hex_from_mpi (gcry_mpi_t m)
++{
++ char *buf;
++ gcry_mpi_aprint (GCRYMPI_FMT_HEX, (void *)&buf, NULL, m);
++ return buf;
++}
++
++static void
++gtk_migration_crypt_create_hash (char *display, char *challenge, size_t len, char *result)
++{
++ size_t dlen = strlen (display);
++ gchar *buf = g_malloc (dlen + 1 + len);
++ strcpy (buf, display);
++ memcpy (buf + dlen + 1, challenge, len);
++ gcry_md_hash_buffer (GCRY_MD_SHA1, result, buf, len + dlen + 1);
++ g_free (buf);
++}
++
++static int
++do_encode_md (const unsigned char *digest, size_t digestlen, int algo,
++ unsigned int nbits, gcry_mpi_t *r_val)
++{
++ int nframe = (nbits+7) / 8;
++ unsigned char *frame;
++ int i, n;
++ unsigned char asn[100];
++ size_t asnlen;
++
++ asnlen = sizeof(asn);
++ if (gcry_md_algo_info (algo, GCRYCTL_GET_ASNOID, asn, &asnlen))
++ return -1;
++
++ if (digestlen + asnlen + 4 > nframe )
++ return -1;
++
++ /* We encode the MD in this way:
++ *
++ * 0 1 PAD(n bytes) 0 ASN(asnlen bytes) MD(len bytes)
++ *
++ * PAD consists of FF bytes.
++ */
++ frame = g_malloc (nframe);
++ n = 0;
++ frame[n++] = 0;
++ frame[n++] = 1; /* block type */
++ i = nframe - digestlen - asnlen -3 ;
++ assert ( i > 1 );
++ memset ( frame+n, 0xff, i ); n += i;
++ frame[n++] = 0;
++ memcpy ( frame+n, asn, asnlen ); n += asnlen;
++ memcpy ( frame+n, digest, digestlen ); n += digestlen;
++ assert ( n == nframe );
++
++ gcry_mpi_scan (r_val, GCRYMPI_FMT_USG, frame, nframe, &nframe);
++ g_free (frame);
++ return 0;
++}
++
++static gboolean
++gtk_migration_crypt_check_signature (struct rsa_key *k, char *hash, char *sigbuf)
++{
++ gcry_mpi_t mpi, mpi2;
++ gcry_sexp_t data, sig, key;
++ int rc;
++
++ do_encode_md (hash, 20, GCRY_MD_SHA1, 1024, &mpi);
++
++ gcry_sexp_build (&data, NULL, "(data (value %m))", mpi);
++
++ gcry_mpi_release (mpi);
++
++ gcry_sexp_build (&key, NULL, "(public-key (rsa (n %m) (e %m)))", k->n, k->e);
++
++ if (gcry_mpi_scan (&mpi2, GCRYMPI_FMT_HEX, sigbuf, 0, NULL))
++ {
++ gcry_sexp_release (data);
++ return FALSE;
++ }
++
++ gcry_sexp_build (&sig, NULL, "(sig-val (rsa (s %m)))", mpi2);
++
++ rc = gcry_pk_verify (sig, data, key);
++
++ gcry_sexp_release (data);
++ gcry_sexp_release (key);
++ gcry_sexp_release (sig);
++ gcry_mpi_release (mpi2);
++
++ if (rc)
++ return FALSE;
++
++ return TRUE;
++}
++
++static void
++gtk_migration_auth_update_challenge (void)
++{
++ int i;
++ unsigned char *p;
++
++ if (gtk_migration_auth_challenge_string == NULL)
++ gtk_migration_auth_challenge_string = g_malloc ((CHALLENGE_LEN * 2) + 9);
++
++ p = gtk_migration_auth_challenge_string;
++
++ for (i = 0; i < CHALLENGE_LEN; i++)
++ {
++ *p++ = hexbyte (challenge_bytes[i] >> 4);
++ *p++ = hexbyte (challenge_bytes[i] & 15);
++ }
++
++ sprintf (p, "%08lx", challenge_seq++);
++}
++
++static void
++gtk_migration_auth_generate_challenge (void)
++{
++ gcry_randomize (challenge_bytes, sizeof (challenge_bytes), GCRY_STRONG_RANDOM);
++ gtk_migration_auth_update_challenge ();
++}
++
++static struct rsa_key *
++parse_pubkey (char *s)
++{
++ struct rsa_key *r;
++ gcry_mpi_t n, e;
++ gchar *sp;
++
++ sp = strtok (s, " \n");
++ gcry_mpi_scan (&e, GCRYMPI_FMT_HEX, sp, 0, NULL);
++ sp = strtok (NULL, " \n");
++ gcry_mpi_scan (&n, GCRYMPI_FMT_HEX, sp, 0, NULL);
++
++ r = g_malloc0 (sizeof (struct rsa_key));
++ r->e = e;
++ r->n = n;
++ return r;
++}
++
++static struct rsa_key *
++lookup_pubkey (u_int32_t id)
++{
++ const gchar *home_dir = g_get_home_dir ();
++ gchar *filename = g_strdup_printf ("%s/.gpe/migrate/public", home_dir);
++ FILE *fp = fopen (filename, "r");
++ struct rsa_key *r = NULL;
++
++ if (fp)
++ {
++ while (!feof (fp))
++ {
++ char buffer[4096];
++ if (fgets (buffer, 4096, fp))
++ {
++ char *p;
++ u_int32_t this_id = strtoul (buffer, &p, 16);
++ if (p != buffer && *p == ' ')
++ {
++#ifdef DEBUG
++ fprintf (stderr, "found id %x\n", this_id);
++#endif
++ if (this_id == id)
++ {
++ r = parse_pubkey (++p);
++ break;
++ }
++ }
++ }
++ }
++ fclose (fp);
++ }
++
++ g_free (filename);
++ return r;
++}
++
++static void
++free_pubkey (struct rsa_key *k)
++{
++ gcry_mpi_release (k->n);
++ gcry_mpi_release (k->e);
++
++ g_free (k);
++}
++
++static gboolean
++gtk_migration_auth_validate_request (char *display, char *data)
++{
++ u_int32_t key_id;
++ char *ep;
++ char *p;
++ struct rsa_key *k;
++ char hash[20];
++ gboolean rc;
++
++ p = strchr (data, ' ');
++ if (p == NULL)
++ return FALSE;
++ *p++ = 0;
++
++ key_id = strtoul (data, &ep, 16);
++ if (*ep)
++ return FALSE;
++
++ k = lookup_pubkey (key_id);
++ if (k == NULL)
++ return FALSE;
++
++ gtk_migration_crypt_create_hash (display, gtk_migration_auth_challenge_string,
++ strlen (gtk_migration_auth_challenge_string), hash);
++
++ rc = gtk_migration_crypt_check_signature (k, hash, p);
++
++ free_pubkey (k);
++
++ return rc;
++}
++
++static int
++do_change_display (GtkWidget *w, char *display_name)
++{
++ GdkDisplay *newdisplay;
++ guint screen_nr = 1;
++ guint i;
++
++ if (display_name[0] == 0)
++ return DISPLAY_CHANGE_INDETERMINATE_ERROR;
++
++ i = strlen (display_name) - 1;
++ while (i > 0 && isdigit (display_name[i]))
++ i--;
++
++ if (display_name[i] == '.')
++ {
++ screen_nr = atoi (display_name + i + 1);
++ display_name[i] = 0;
++ }
++
++ newdisplay = gdk_display_open (display_name);
++ if (newdisplay)
++ {
++ GdkScreen *screen = gdk_display_get_screen (newdisplay, screen_nr);
++ if (screen)
++ {
++ gtk_window_set_screen (GTK_WINDOW (w), screen);
++ gdk_display_manager_set_default_display (gdk_display_manager_get (),
++ newdisplay);
++ return DISPLAY_CHANGE_SUCCESS;
++ }
++ else
++ return DISPLAY_CHANGE_NO_SUCH_SCREEN;
++ }
++
++ return DISPLAY_CHANGE_UNABLE_TO_CONNECT;
++}
++
++static void
++set_challenge_on_window (GdkWindow *window)
++{
++ gdk_property_change (window, rsa_challenge_gdkatom, string_gdkatom,
++ 8, GDK_PROP_MODE_REPLACE, gtk_migration_auth_challenge_string,
++ strlen (gtk_migration_auth_challenge_string));
++}
++
++static void
++update_challenge_on_windows (void)
++{
++ GSList *i;
++
++ gtk_migration_auth_update_challenge ();
++
++ for (i = all_widgets; i; i = i->next)
++ {
++ GtkWidget *w = GTK_WIDGET (i->data);
++ if (w->window)
++ set_challenge_on_window (w->window);
++ }
++}
++
++static void
++reset_state (GdkWindow *window)
++{
++ gdk_property_change (window, display_change_gdkatom, string_gdkatom,
++ 8, GDK_PROP_MODE_REPLACE, NULL, 0);
++}
++
++static void
++generate_response (GdkDisplay *gdisplay, Display *dpy, Window window, int code)
++{
++ XClientMessageEvent ev;
++ Atom atom = gdk_x11_atom_to_xatom_for_display (gdisplay,
++ display_change_gdkatom);
++
++ memset (&ev, 0, sizeof (ev));
++
++ ev.type = ClientMessage;
++ ev.window = window;
++ ev.message_type = atom;
++ ev.format = 32;
++
++ ev.data.l[0] = window;
++ ev.data.l[1] = code;
++
++ XSendEvent (dpy, DefaultRootWindow (dpy), False, SubstructureNotifyMask, (XEvent *)&ev);
++}
++
++static int
++handle_request (GdkWindow *gwindow, char *prop)
++{
++ GtkWidget *widget;
++ char *target, *auth_method, *auth_data;
++ char *p;
++
++ target = prop;
++ auth_method = "NULL";
++ auth_data = NULL;
++
++ p = strchr (prop, ' ');
++ if (p)
++ {
++ *p = 0;
++ auth_method = ++p;
++
++ p = strchr (p, ' ');
++ if (p)
++ {
++ *p = 0;
++ auth_data = ++p;
++ }
++ }
++
++ if (no_auth == FALSE)
++ {
++ if (!strcasecmp (auth_method, "null"))
++ return DISPLAY_CHANGE_AUTHENTICATION_BAD;
++ else if (!strcasecmp (auth_method, "rsa-sig"))
++ {
++ if (gtk_migration_auth_validate_request (target, auth_data) == FALSE)
++ return DISPLAY_CHANGE_AUTHENTICATION_BAD;
++ }
++ else
++ return DISPLAY_CHANGE_AUTHENTICATION_BAD;
++ }
++
++ gdk_window_get_user_data (gwindow, (gpointer*) &widget);
++
++ if (widget)
++ return do_change_display (widget, target);
++
++ return DISPLAY_CHANGE_INDETERMINATE_ERROR;
++}
++
++static GdkFilterReturn
++filter_func (GdkXEvent *xevp, GdkEvent *ev, gpointer p)
++{
++ XPropertyEvent *xev = (XPropertyEvent *)xevp;
++
++ if (xev->type == PropertyNotify)
++ {
++ GdkDisplay *gdisplay;
++ Atom atom;
++
++ gdisplay = gdk_x11_lookup_xdisplay (xev->display);
++ if (gdisplay)
++ {
++ atom = gdk_x11_atom_to_xatom_for_display (gdisplay, display_change_gdkatom);
++
++ if (xev->atom == atom)
++ {
++ GdkWindow *gwindow;
++
++ gwindow = gdk_window_lookup_for_display (gdisplay, xev->window);
++
++ if (gwindow)
++ {
++ GdkAtom actual_type;
++ gint actual_format;
++ gint actual_length;
++ unsigned char *prop = NULL;
++
++ if (gdk_property_get (gwindow, display_change_gdkatom, string_gdkatom,
++ 0, G_MAXLONG, FALSE, &actual_type, &actual_format,
++ &actual_length, &prop))
++ {
++ if (actual_length != 0)
++ {
++ if (actual_type == string_gdkatom && actual_length > 8)
++ {
++ gchar *buf = g_malloc (actual_length + 1);
++ int rc;
++
++ memcpy (buf, prop, actual_length);
++ buf[actual_length] = 0;
++
++ rc = handle_request (gwindow, buf);
++
++ g_free (buf);
++ generate_response (gdisplay, xev->display, xev->window, rc);
++
++ if (rc == DISPLAY_CHANGE_SUCCESS)
++ update_challenge_on_windows ();
++ }
++
++ reset_state (gwindow);
++ }
++ }
++
++ if (prop)
++ g_free (prop);
++ }
++ }
++
++ return GDK_FILTER_REMOVE;
++ }
++ }
++
++ return GDK_FILTER_CONTINUE;
++}
++
++static void
++unrealize_window (GtkWidget *w)
++{
++ all_widgets = g_slist_remove (all_widgets, w);
++}
++
++void
++gtk_migration_mark_window (GtkWidget *w)
++{
++ if (! gtk_migration_initialised)
++ {
++ g_warning ("gtk_migration not initialised yet");
++ return;
++ }
++
++ if (GTK_WIDGET_REALIZED (w))
++ {
++ GdkWindow *window = w->window;
++
++ gdk_window_add_filter (window, filter_func, NULL);
++
++ reset_state (window);
++ set_challenge_on_window (window);
++
++ all_widgets = g_slist_append (all_widgets, w);
++
++ g_signal_connect (G_OBJECT (w), "unrealize", G_CALLBACK (unrealize_window), NULL);
++ }
++ else
++ g_signal_connect (G_OBJECT (w), "realize", G_CALLBACK (gtk_migration_mark_window), NULL);
++}
++
++void
++gtk_migration_init (void)
++{
++ if (getenv ("GPE_DISPLAY_MIGRATION_NO_AUTH") != NULL)
++ no_auth = TRUE;
++
++ string_gdkatom = gdk_atom_intern ("STRING", FALSE);
++ display_change_gdkatom = gdk_atom_intern ("_GPE_DISPLAY_CHANGE", FALSE);
++ rsa_challenge_gdkatom = gdk_atom_intern ("_GPE_DISPLAY_CHANGE_RSA_CHALLENGE", FALSE);
++
++ gtk_migration_auth_generate_challenge ();
++
++ gtk_migration_initialised = TRUE;
++}
+Index: gtk/gtkwindow.c
+===================================================================
+--- gtk/gtkwindow.c.orig 2006-10-03 16:51:46.000000000 +0100
++++ gtk/gtkwindow.c 2006-10-30 12:56:34.000000000 +0000
+@@ -50,6 +50,9 @@
+ #include "x11/gdkx.h"
+ #endif
+
++extern void gtk_migration_mark_window (GtkWidget *w);
++
++
+ enum {
+ SET_FOCUS,
+ FRAME_EVENT,
+@@ -823,6 +826,10 @@
+
+ g_signal_connect (window->screen, "composited_changed",
+ G_CALLBACK (gtk_window_on_composited_changed), window);
++
++#ifdef ENABLE_MIGRATION
++ gtk_migration_mark_window (window);
++#endif
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.10.9/no-demos.patch b/packages/gtk+/gtk+-2.10.9/no-demos.patch
new file mode 100644
index 0000000000..0fc4c48d1a
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/no-demos.patch
@@ -0,0 +1,10 @@
+--- gtk+-2.10.1/Makefile.am.orig 2006-08-08 12:37:30.000000000 +0100
++++ gtk+-2.10.1/Makefile.am 2006-08-08 12:37:48.000000000 +0100
+@@ -1,6 +1,6 @@
+ ## Makefile.am for GTK+
+
+-SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests perf contrib
++SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests perf contrib
+ SUBDIRS = po po-properties $(SRC_SUBDIRS) docs m4macros
+
+ # require automake 1.4
diff --git a/packages/gtk+/gtk+-2.10.9/no-xwc.patch b/packages/gtk+/gtk+-2.10.9/no-xwc.patch
new file mode 100644
index 0000000000..affb4a303e
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/no-xwc.patch
@@ -0,0 +1,151 @@
+diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c
+--- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2004-11-30 14:57:14 +00:00
++++ gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2005-01-02 15:38:06 +00:00
+@@ -576,12 +576,14 @@
+ GDK_GC_GET_XGC (gc), x, y, (XChar2b *) text, text_length / 2);
+ }
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ XFontSet fontset = (XFontSet) GDK_FONT_XFONT (font);
+ XmbDrawString (xdisplay, impl->xid,
+ fontset, GDK_GC_GET_XGC (gc), x, y, text, text_length);
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+@@ -613,6 +615,7 @@
+ GDK_GC_GET_XGC (gc), x, y, text_8bit, text_length);
+ g_free (text_8bit);
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+@@ -633,6 +636,7 @@
+ g_free (text_wchar);
+ }
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c gtk+-2.6.0/gdk/x11/gdkfont-x11.c
+--- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2004-08-26 01:23:46 +01:00
++++ gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2005-01-02 15:45:39 +00:00
+@@ -525,10 +525,12 @@
+ width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2);
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ width = XmbTextEscapement (fontset, text, text_length);
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -578,6 +580,7 @@
+ width = 0;
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+ {
+@@ -595,6 +598,7 @@
+ g_free (text_wchar);
+ }
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -667,6 +671,7 @@
+ if (descent)
+ *descent = overall.descent;
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ XmbTextExtents (fontset, text, text_length, &ink, &logical);
+@@ -681,6 +686,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+@@ -753,6 +759,7 @@
+ *descent = overall.descent;
+ break;
+ }
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+
+@@ -780,6 +787,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c gtk+-2.6.0/gdk/x11/gdkim-x11.c
+--- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c 2004-11-17 00:55:10 +00:00
++++ gtk+-2.6.0/gdk/x11/gdkim-x11.c 2005-01-02 15:42:04 +00:00
+@@ -48,6 +48,7 @@
+ void
+ _gdk_x11_initialize_locale (void)
+ {
++#ifdef HAVE_XWC
+ wchar_t result;
+ gchar *current_locale;
+ static char *last_locale = NULL;
+@@ -93,7 +94,8 @@
+ GDK_NOTE (XIM,
+ g_message ("%s multi-byte string functions.",
+ gdk_use_mb ? "Using" : "Not using"));
+-
++#endif
++
+ return;
+ }
+
+@@ -136,6 +138,7 @@
+ {
+ gchar *mbstr;
+
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -178,6 +181,7 @@
+ XFree (tpr.value);
+ }
+ else
++#endif
+ {
+ gint length = 0;
+ gint i;
+@@ -210,6 +214,7 @@
+ gint
+ gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max)
+ {
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -242,6 +247,7 @@
+ return len_cpy;
+ }
+ else
++#endif
+ {
+ gint i;
+
diff --git a/packages/gtk+/gtk+-2.10.9/run-iconcache.patch b/packages/gtk+/gtk+-2.10.9/run-iconcache.patch
new file mode 100644
index 0000000000..ac15e9ab24
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/run-iconcache.patch
@@ -0,0 +1,19 @@
+--- /tmp/Makefile.am 2007-01-08 17:44:47.000000000 +0100
++++ gtk+-2.10.7/gtk/Makefile.am 2007-01-08 17:45:17.025251000 +0100
+@@ -1128,11 +1128,11 @@
+ ./gtk-update-icon-cache
+ endif
+
+-gtkbuiltincache.h: @REBUILD@ stamp-icons
+- $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT)
+- $(gtk_update_icon_cache_program) --force --ignore-theme-index \
+- --source builtin_icons stock-icons > gtkbuiltincache.h.tmp && \
+- mv gtkbuiltincache.h.tmp gtkbuiltincache.h
++#gtkbuiltincache.h: @REBUILD@ stamp-icons
++# $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT)
++# $(gtk_update_icon_cache_program) --force --ignore-theme-index \
++# --source builtin_icons stock-icons > gtkbuiltincache.h.tmp && \
++# mv gtkbuiltincache.h.tmp gtkbuiltincache.h
+
+ EXTRA_DIST += \
+ $(STOCK_ICONS) \
diff --git a/packages/gtk+/gtk+-2.10.9/scroll-timings.patch b/packages/gtk+/gtk+-2.10.9/scroll-timings.patch
new file mode 100644
index 0000000000..3f823a7880
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/scroll-timings.patch
@@ -0,0 +1,11 @@
+--- gtk+-2.10.0/gtk/gtkrange.c.orig 2006-07-05 12:41:39.000000000 +0200
++++ gtk+-2.10.0/gtk/gtkrange.c 2006-07-05 12:41:58.000000000 +0200
+@@ -39,7 +39,7 @@
+ #include "gtkalias.h"
+
+ #define SCROLL_DELAY_FACTOR 5 /* Scroll repeat multiplier */
+-#define UPDATE_DELAY 300 /* Delay for queued update */
++#define UPDATE_DELAY 1000 /* Delay for queued update */
+
+ enum {
+ PROP_0,
diff --git a/packages/gtk+/gtk+-2.10.9/single-click.patch b/packages/gtk+/gtk+-2.10.9/single-click.patch
new file mode 100644
index 0000000000..250f1629f5
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/single-click.patch
@@ -0,0 +1,56 @@
+Index: gtk+-2.10.6/gtk/gtkcalendar.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkcalendar.c
++++ gtk+-2.10.6/gtk/gtkcalendar.c
+@@ -2482,9 +2482,11 @@ calendar_main_button_press (GtkCalendar
+ }
+
+ calendar_select_and_focus_day (calendar, day);
+- }
++
++ // This change causes the calendar to disappear after choosing a day
++/* }
+ else if (event->type == GDK_2BUTTON_PRESS)
+- {
++ {*/
+ priv->in_drag = 0;
+ if (day_month == MONTH_CURRENT)
+ g_signal_emit (calendar,
+Index: gtk+-2.10.6/gtk/gtkfilesel.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkfilesel.c
++++ gtk+-2.10.6/gtk/gtkfilesel.c
+@@ -2426,6 +2426,33 @@ gtk_file_selection_file_changed (GtkTree
+ if (fs->last_selected != NULL)
+ g_free (fs->last_selected);
+
++ // Single-click directory entry
++ if (new_names->len == 1)
++ {
++ GtkTreeView *tree_view;
++ GtkTreeModel *model;
++ GtkTreePath *path;
++ GtkTreeIter iter;
++ gboolean is_file;
++
++ tree_view = gtk_tree_selection_get_tree_view (selection);
++
++ if (gtk_tree_selection_get_selected (selection, &model, &iter))
++ {
++ path = gtk_tree_model_get_path (model, &iter);
++ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1);
++
++ if (!is_file)
++ {
++ gtk_file_selection_dir_activate (tree_view, path,
++ gtk_tree_view_get_column (tree_view, DIR_COLUMN),
++ user_data);
++ }
++
++ gtk_tree_path_free (path);
++ }
++ }
++
+ fs->last_selected = g_strdup (g_ptr_array_index (new_names, index));
+ filename = get_real_filename (fs->last_selected, FALSE);
+
diff --git a/packages/gtk+/gtk+-2.10.9/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.10.9/small-gtkfilesel.patch
new file mode 100644
index 0000000000..20bf4cf366
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/small-gtkfilesel.patch
@@ -0,0 +1,267 @@
+diff -urNd ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c gtk+-2.4.4/gtk/gtkfilesel.c
+--- ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c 2004-07-10 05:02:10.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkfilesel.c 2004-09-13 13:40:09.000000000 +0100
+@@ -68,6 +68,7 @@
+ #include "gtkprivate.h"
+ #include "gtkscrolledwindow.h"
+ #include "gtkstock.h"
++#include "gtksignal.h"
+ #include "gtktreeselection.h"
+ #include "gtktreeview.h"
+ #include "gtkvbox.h"
+@@ -77,6 +78,7 @@
+ #include "gtkmessagedialog.h"
+ #include "gtkdnd.h"
+ #include "gtkeventbox.h"
++#include "gtkimage.h"
+
+ #undef GTK_DISABLE_DEPRECATED
+ #include "gtkoptionmenu.h"
+@@ -245,7 +247,8 @@
+ };
+
+ enum {
+- DIR_COLUMN
++ DIR_COLUMN,
++ ISFILE_COLUMN
+ };
+
+ enum {
+@@ -400,6 +403,12 @@
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ gpointer user_data);
++
++static void gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data);
++
+ static void gtk_file_selection_file_changed (GtkTreeSelection *selection,
+ gpointer user_data);
+ static void gtk_file_selection_dir_activate (GtkTreeView *tree_view,
+@@ -419,6 +428,7 @@
+ static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
++static void gtk_file_selection_style_set (GtkWidget *widget, GtkStyle *prev_style);
+
+ static void free_selected_names (GPtrArray *names);
+
+@@ -578,6 +588,23 @@
+ G_PARAM_WRITABLE));
+ object_class->destroy = gtk_file_selection_destroy;
+ widget_class->map = gtk_file_selection_map;
++ widget_class->style_set = gtk_file_selection_style_set;
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_boolean ("show_fileops_default",
++ _("Show fileop buttons by default"),
++ _("Whether file operation buttons are shown by default"),
++ TRUE,
++ G_PARAM_READABLE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("border_width",
++ _("Border width"),
++ _("Width of border around the main dialog area"),
++ 0,
++ G_MAXINT,
++ 10,
++ G_PARAM_READABLE));
+ }
+
+ static void gtk_file_selection_set_property (GObject *object,
+@@ -649,7 +676,29 @@
+ gtk_widget_grab_default (widget);
+ return FALSE;
+ }
+-
++
++static void
++gtk_file_selection_style_set (GtkWidget *filesel,
++ GtkStyle *prev_style)
++{
++ gboolean show_fileops;
++ gint border_width;
++
++ gtk_widget_style_get (filesel,
++ "show_fileops_default",
++ &show_fileops,
++ "border_width",
++ &border_width,
++ NULL);
++
++ gtk_container_set_border_width (GTK_CONTAINER (filesel), border_width);
++
++ if (show_fileops)
++ gtk_file_selection_show_fileop_buttons (GTK_FILE_SELECTION (filesel));
++ else
++ gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel));
++}
++
+ static void
+ gtk_file_selection_init (GtkFileSelection *filesel)
+ {
+@@ -674,17 +723,15 @@
+
+ /* The dialog-sized vertical box */
+ filesel->main_vbox = dialog->vbox;
+- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10);
+
+ /* The horizontal box containing create, rename etc. buttons */
+ filesel->button_area = gtk_hbutton_box_new ();
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START);
+- gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area,
+ FALSE, FALSE, 0);
+ gtk_widget_show (filesel->button_area);
+
+- gtk_file_selection_show_fileop_buttons (filesel);
++ gtk_file_selection_style_set (GTK_WIDGET (filesel), NULL);
+
+ /* hbox for pulldown menu */
+ pulldown_hbox = gtk_hbox_new (TRUE, 5);
+@@ -723,25 +770,32 @@
+
+ /* The directories list */
+
+- model = gtk_list_store_new (1, G_TYPE_STRING);
++ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); /* MA */
+ filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+ g_object_unref (model);
+
+- column = gtk_tree_view_column_new_with_attributes (_("Folders"),
++ column = gtk_tree_view_column_new_with_attributes (/*_("Folders")*/ NULL,
+ gtk_cell_renderer_text_new (),
+ "text", DIR_COLUMN,
+ NULL);
+ label = gtk_label_new_with_mnemonic (_("Fol_ders"));
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list);
+ gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
++
++ /* gtk_tree_view_column_set_widget (column, label); */
++ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (filesel->dir_list), FALSE);
++
+ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column);
+
+ gtk_widget_set_size_request (filesel->dir_list,
+ DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
+ g_signal_connect (filesel->dir_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_dir_activate), filesel);
++ G_CALLBACK (gtk_file_selection_activate), filesel);
++
++ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->dir_list)), "changed",
++ G_CALLBACK (gtk_file_selection_file_changed), filesel);
++
+
+ /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */
+
+@@ -758,41 +812,6 @@
+ gtk_widget_show (filesel->dir_list);
+ gtk_widget_show (scrolled_win);
+
+- /* The files list */
+- model = gtk_list_store_new (1, G_TYPE_STRING);
+- filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+- g_object_unref (model);
+-
+- column = gtk_tree_view_column_new_with_attributes (_("Files"),
+- gtk_cell_renderer_text_new (),
+- "text", FILE_COLUMN,
+- NULL);
+- label = gtk_label_new_with_mnemonic (_("_Files"));
+- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list);
+- gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
+- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column);
+-
+- gtk_widget_set_size_request (filesel->file_list,
+- FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
+- g_signal_connect (filesel->file_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_file_activate), filesel);
+- g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed",
+- G_CALLBACK (gtk_file_selection_file_changed), filesel);
+-
+- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */
+-
+- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
+- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
+- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0);
+- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win);
+- gtk_widget_show (filesel->file_list);
+- gtk_widget_show (scrolled_win);
+-
+ /* action area for packing buttons into. */
+ filesel->action_area = gtk_hbox_new (TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area,
+@@ -2008,6 +2027,23 @@
+ }
+
+ static void
++gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data)
++{
++ GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
++ GtkTreeIter iter;
++ gboolean is_file;
++
++ gtk_tree_model_get_iter (model, &iter, path);
++ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1);
++
++ if (! is_file)
++ gtk_file_selection_dir_activate (tree_view, path, column, user_data);
++}
++
++static void
+ gtk_file_selection_file_activate (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+@@ -2103,7 +2139,6 @@
+ PossibleCompletion* poss;
+ GtkTreeIter iter;
+ GtkListStore *dir_model;
+- GtkListStore *file_model;
+ gchar* filename;
+ gchar* rem_path = rel_path;
+ gchar* sel_text;
+@@ -2125,10 +2160,8 @@
+ g_assert (cmpl_state->reference_dir);
+
+ dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list)));
+- file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list)));
+
+ gtk_list_store_clear (dir_model);
+- gtk_list_store_clear (file_model);
+
+ /* Set the dir list to include ./ and ../ */
+ gtk_list_store_append (dir_model, &iter);
+@@ -2150,13 +2183,17 @@
+ strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0)
+ {
+ gtk_list_store_append (dir_model, &iter);
+- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, FALSE, -1);
+ }
+ }
+ else
+ {
+- gtk_list_store_append (file_model, &iter);
+- gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_append (dir_model, &iter);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, TRUE, -1);
+ }
+ }
+
diff --git a/packages/gtk+/gtk+-2.10.9/spinbutton.patch b/packages/gtk+/gtk+-2.10.9/spinbutton.patch
new file mode 100644
index 0000000000..c26dc6d93c
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/spinbutton.patch
@@ -0,0 +1,130 @@
+Index: gtk+-2.10.6/gtk/gtkspinbutton.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkspinbutton.c
++++ gtk+-2.10.6/gtk/gtkspinbutton.c
+@@ -682,7 +682,7 @@ gtk_spin_button_size_allocate (GtkWidget
+
+ spin = GTK_SPIN_BUTTON (widget);
+ arrow_size = spin_button_get_arrow_size (spin);
+- panel_width = arrow_size + 2 * widget->style->xthickness;
++ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness;
+
+ widget->allocation = *allocation;
+
+@@ -815,19 +815,16 @@ gtk_spin_button_draw_arrow (GtkSpinButto
+ {
+ width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness;
+
++ y = widget->style->ythickness;
++ height = widget->requisition.height - (2 * y);
++
+ if (arrow_type == GTK_ARROW_UP)
+ {
+ x = 0;
+- y = 0;
+-
+- height = widget->requisition.height / 2;
+ }
+ else
+ {
+- x = 0;
+- y = widget->requisition.height / 2;
+-
+- height = (widget->requisition.height + 1) / 2;
++ x = width;
+ }
+
+ if (spin_button_at_limit (spin_button, arrow_type))
+@@ -857,32 +854,17 @@ gtk_spin_button_draw_arrow (GtkSpinButto
+ shadow_type = GTK_SHADOW_OUT;
+ }
+ }
+-
++
+ gtk_paint_box (widget->style, spin_button->panel,
+ state_type, shadow_type,
+ NULL, widget,
+- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down",
++ NULL,
+ x, y, width, height);
+
+ height = widget->requisition.height;
+
+- if (arrow_type == GTK_ARROW_DOWN)
+- {
+- y = height / 2;
+- height = height - y - 2;
+- }
+- else
+- {
+- y = 2;
+- height = height / 2 - 2;
+- }
+-
+ width -= 3;
+-
+- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+- x = 2;
+- else
+- x = 1;
++ height -= 3;
+
+ w = width / 2;
+ w -= w % 2 - 1; /* force odd */
+@@ -1062,7 +1044,7 @@ gtk_spin_button_button_press (GtkWidget
+ if (GTK_ENTRY (widget)->editable)
+ gtk_spin_button_update (spin);
+
+- if (event->y <= widget->requisition.height / 2)
++ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness))
+ {
+ if (event->button == 1)
+ start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment);
+@@ -1097,44 +1079,11 @@ gtk_spin_button_button_release (GtkWidge
+
+ arrow_size = spin_button_get_arrow_size (spin);
+
+- if (event->button == spin->button)
+- {
+- int click_child = spin->click_child;
++ gtk_spin_button_stop_spinning (spin);
+
+- gtk_spin_button_stop_spinning (spin);
+-
+- if (event->button == 3)
+- {
+- if (event->y >= 0 && event->x >= 0 &&
+- event->y <= widget->requisition.height &&
+- event->x <= arrow_size + 2 * widget->style->xthickness)
+- {
+- if (click_child == GTK_ARROW_UP &&
+- event->y <= widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->upper - spin->adjustment->value;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, diff);
+- }
+- else if (click_child == GTK_ARROW_DOWN &&
+- event->y > widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->value - spin->adjustment->lower;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, -diff);
+- }
+- }
+- }
+- spin_button_redraw (spin);
++ spin_button_redraw (spin);
+
+- return TRUE;
+- }
+- else
+- return GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->button_release_event (widget, event);
++ return TRUE;
+ }
+
+ static gint
diff --git a/packages/gtk+/gtk+-2.10.9/xsettings.patch b/packages/gtk+/gtk+-2.10.9/xsettings.patch
new file mode 100644
index 0000000000..b63e262d34
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.9/xsettings.patch
@@ -0,0 +1,16 @@
+--- gtk+-2.4.4/gdk/x11/gdkevents-x11.c.old Sun Aug 22 17:14:00 2004
++++ gtk+-2.4.4/gdk/x11/gdkevents-x11.c Sun Aug 22 17:14:00 2004
+@@ -2827,10 +2827,9 @@
+ {
+ GdkScreenX11 *screen = data;
+
+- if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent))
+- return GDK_FILTER_REMOVE;
+- else
+- return GDK_FILTER_CONTINUE;
++ xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent);
++
++ return GDK_FILTER_CONTINUE;
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.6.10/compile-against-newer-glib.patch b/packages/gtk+/gtk+-2.6.10/compile-against-newer-glib.patch
new file mode 100644
index 0000000000..3d8f3f614b
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.10/compile-against-newer-glib.patch
@@ -0,0 +1,49 @@
+--- gtk+-2.6.10/gtk/gtkstatusbar.h 2005/03/20 07:01:22 1.17
++++ gtk+-2.6.10/gtk/gtkstatusbar.h 2005/12/06 14:25:30 1.17.2.1
+@@ -65,7 +65,7 @@
+ {
+ GtkHBoxClass parent_class;
+
+- GMemChunk *messages_mem_chunk;
++ gpointer messages_mem_chunk;
+
+ void (*text_pushed) (GtkStatusbar *statusbar,
+ guint context_id,
+--- gtk+-2.6.10/gtk/gtkstatusbar.c 2005/07/21 19:10:48 1.56
++++ gtk+-2.6.10/gtk/gtkstatusbar.c 2005/12/06 14:25:30 1.56.2.1
+@@ -302,7 +302,7 @@
+ g_return_val_if_fail (text != NULL, 0);
+
+ class = GTK_STATUSBAR_GET_CLASS (statusbar);
+- msg = g_chunk_new (GtkStatusbarMsg, class->messages_mem_chunk);
++ msg = g_chunk_new (GtkStatusbarMsg, (GMemChunk *)class->messages_mem_chunk);
+ msg->text = g_strdup (text);
+ msg->context_id = context_id;
+ msg->message_id = statusbar->seq_message_id++;
+@@ -343,7 +343,7 @@
+ statusbar->messages = g_slist_remove_link (statusbar->messages,
+ list);
+ g_free (msg->text);
+- g_mem_chunk_free (class->messages_mem_chunk, msg);
++ g_mem_chunk_free ((GMemChunk *)class->messages_mem_chunk, msg);
+ g_slist_free_1 (list);
+ break;
+ }
+@@ -394,7 +394,7 @@
+ class = GTK_STATUSBAR_GET_CLASS (statusbar);
+ statusbar->messages = g_slist_remove_link (statusbar->messages, list);
+ g_free (msg->text);
+- g_mem_chunk_free (class->messages_mem_chunk, msg);
++ g_mem_chunk_free ((GMemChunk *)class->messages_mem_chunk, msg);
+ g_slist_free_1 (list);
+
+ break;
+@@ -459,7 +459,7 @@
+
+ msg = list->data;
+ g_free (msg->text);
+- g_mem_chunk_free (class->messages_mem_chunk, msg);
++ g_mem_chunk_free ((GMemChunk *)class->messages_mem_chunk, msg);
+ }
+ g_slist_free (statusbar->messages);
+ statusbar->messages = NULL;
diff --git a/packages/gtk+/gtk+-2.6.10/gtk+-2.6.10-bg.patch b/packages/gtk+/gtk+-2.6.10/gtk+-2.6.10-bg.patch
new file mode 100644
index 0000000000..039440f933
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.10/gtk+-2.6.10-bg.patch
@@ -0,0 +1,20 @@
+diff -ur gtk+-2.8.20/gtk/gtkiconview.c gtk+-2.8.20-new/gtk/gtkiconview.c
+--- gtk+-2.8.20/gtk/gtkiconview.c 2006-04-11 20:44:15.000000000 +0200
++++ gtk+-2.8.20-new/gtk/gtkiconview.c 2007-01-03 20:20:26.000000000 +0100
+@@ -899,9 +899,14 @@
+ gdk_window_set_user_data (icon_view->priv->bin_window, widget);
+
+ widget->style = gtk_style_attach (widget->style, widget->window);
+- gdk_window_set_background (icon_view->priv->bin_window, &widget->style->base[widget->state]);
++/* gdk_window_set_background (icon_view->priv->bin_window, &widget->style->base[widget->state]);
+ gdk_window_set_background (widget->window, &widget->style->base[widget->state]);
+-
++*/
++printf("realize iconview\n");
++// gdk_window_set_back_pixmap(widget->window, NULL, FALSE);
++// gdk_window_set_back_pixmap(icon_view->priv->bin_window, NULL, FALSE);
++ gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
++ gtk_style_set_background (widget->style, icon_view->priv->bin_window, GTK_STATE_NORMAL);
+ gdk_window_show (icon_view->priv->bin_window);
+ }
+
diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkcombobox.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkcombobox.patch
new file mode 100755
index 0000000000..6363ecd23a
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkcombobox.patch
@@ -0,0 +1,238 @@
+--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/gtkcombobox.c 2005-08-18 22:10:57.000000000 +0800
++++ gtk/gtkcombobox.c 2006-06-22 11:24:32.000000000 +0800
+@@ -54,6 +54,11 @@
+
+ /* WELCOME, to THE house of evil code */
+
++#define HILDON_MENU_COMBO_MAX_WIDTH 406
++#define HILDON_MENU_COMBO_MIN_WIDTH 66
++#define HILDON_MENU_COMBO_MAX_HEIGHT 305
++#define HILDON_MENU_COMBO_MIN_HEIGHT 70
++
+ typedef struct _ComboCellInfo ComboCellInfo;
+ struct _ComboCellInfo
+ {
+@@ -1199,6 +1204,8 @@ gtk_combo_box_menu_position_below (GtkMe
+ gint monitor_num;
+ GdkRectangle monitor;
+
++ g_message ("%s", __FUNCTION__);
++
+ /* FIXME: is using the size request here broken? */
+ child = GTK_BIN (combo_box)->child;
+
+@@ -1240,6 +1247,7 @@ gtk_combo_box_menu_position_below (GtkMe
+ *push_in = FALSE;
+ }
+
++
+ static void
+ gtk_combo_box_menu_position_over (GtkMenu *menu,
+ gint *x,
+@@ -1247,69 +1255,119 @@ gtk_combo_box_menu_position_over (GtkMen
+ gboolean *push_in,
+ gpointer user_data)
+ {
+- GtkComboBox *combo_box;
+- GtkWidget *active;
+ GtkWidget *child;
+ GtkWidget *widget;
++ GtkWidget *active;
+ GtkRequisition requisition;
+- GList *children;
+- gint screen_width;
++ gint screen_width, screen_height;
+ gint menu_xpos;
+ gint menu_ypos;
+- gint menu_width;
++ gint menu_width, menu_height;
++ gint menu_ypad;
++ gint full_menu_height;
++ gint total_y_padding;
+
+ g_return_if_fail (GTK_IS_COMBO_BOX (user_data));
+-
+- combo_box = GTK_COMBO_BOX (user_data);
+- widget = GTK_WIDGET (combo_box);
+
+- gtk_widget_get_child_requisition (GTK_WIDGET (menu), &requisition);
++ widget = GTK_WIDGET (user_data);
++ child = GTK_BIN (user_data)->child;
++
++ /* We need to realize the menu, as we are playing with menu item coordinates
++ * inside. */
++ gtk_widget_realize (GTK_WIDGET (menu));
++
++ gtk_widget_get_child_requisition (menu->toplevel, &requisition);
+ menu_width = requisition.width;
++ menu_height = requisition.height;
++
++ gtk_widget_get_child_requisition (GTK_WIDGET (menu), &requisition);
++ full_menu_height = requisition.height;
++
++ screen_width = gdk_screen_get_width (gtk_widget_get_screen (widget));
++ screen_height = gdk_screen_get_height (gtk_widget_get_screen (widget));
++
++ active = gtk_menu_get_active (menu);
+
+- active = gtk_menu_get_active (GTK_MENU (combo_box->priv->popup_widget));
+ gdk_window_get_origin (widget->window, &menu_xpos, &menu_ypos);
+
+ menu_xpos += widget->allocation.x;
+- menu_ypos += widget->allocation.y + widget->allocation.height / 2 - 2;
++ menu_ypos += widget->allocation.y;
+
+- if (active != NULL)
+- {
+- gtk_widget_get_child_requisition (active, &requisition);
+- menu_ypos -= requisition.height / 2;
+- }
++ /* RTL */
++ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
++ menu_xpos = menu_xpos + widget->allocation.width - menu_width;
++
++ /* Substract borders */
++ gtk_widget_style_get (GTK_WIDGET (menu),
++ "vertical-padding", &menu_ypad,
++ NULL);
+
+- children = GTK_MENU_SHELL (combo_box->priv->popup_widget)->children;
+- while (children)
++ total_y_padding = menu_ypad + GTK_CONTAINER (menu)->border_width +
++ GTK_WIDGET (menu)->style->ythickness;
++
++ /* Substract scroll arrow height if needed, and calculate
++ * scroll_offset. */
++ if (full_menu_height > HILDON_MENU_COMBO_MAX_HEIGHT)
+ {
+- child = children->data;
++ GList *child;
++ int pos;
+
+- if (active == child)
+- break;
++ child = GTK_MENU_SHELL (menu)->children;
++ pos = 0;
+
+- if (GTK_WIDGET_VISIBLE (child))
+- {
+- gtk_widget_get_child_requisition (child, &requisition);
+- menu_ypos -= requisition.height;
+- }
++ while (child)
++ {
++ GtkWidget *child_widget = GTK_WIDGET (child->data);
++
++ if (active == child_widget)
++ break;
+
+- children = children->next;
++ if (GTK_WIDGET_VISIBLE (child))
++ {
++ pos += child_widget->allocation.height;
++
++ if (pos > HILDON_MENU_COMBO_MAX_HEIGHT)
++ menu->scroll_offset += child_widget->allocation.height;
++ }
++
++ child = child->next;
++ }
+ }
+
+- if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+- menu_xpos = menu_xpos + widget->allocation.width - menu_width;
++ /* Try to get active item and widget lined up */
++ if (active != NULL)
++ {
++ gint new_menu_ypos;
++
++ new_menu_ypos = menu_ypos - active->allocation.y - total_y_padding +
++ menu->scroll_offset;
++ if (new_menu_ypos < 0 || (new_menu_ypos + menu_height) > screen_height)
++ {
++ /* Menu doesn't fit - try to get the last item lined up. */
++ new_menu_ypos = menu_ypos - menu_height + total_y_padding +
++ active->allocation.height;
++ }
++
++ menu_ypos = new_menu_ypos;
++ }
++ else
++ menu_ypos -= total_y_padding; /* Line up with first item */
+
+ /* Clamp the position on screen */
+- screen_width = gdk_screen_get_width (gtk_widget_get_screen (widget));
+-
+ if (menu_xpos < 0)
+ menu_xpos = 0;
+ else if ((menu_xpos + menu_width) > screen_width)
+ menu_xpos -= ((menu_xpos + menu_width) - screen_width);
+
++ if (menu_ypos < 0)
++ menu_ypos = 0;
++ else if ((menu_ypos + menu_height) > screen_height)
++ menu_ypos -= ((menu_ypos + menu_height) - screen_height);
++
+ *x = menu_xpos;
+ *y = menu_ypos;
+
+- *push_in = TRUE;
++ *push_in = FALSE;
+ }
+
+ static void
+@@ -3481,14 +3539,18 @@ gtk_combo_box_key_press (GtkWidget *wi
+
+ switch (event->keyval)
+ {
++ case GDK_Return:
++ case GDK_KP_Enter:
++ gtk_combo_box_popup (combo_box);
++ return TRUE;
+ case GDK_Down:
+ case GDK_KP_Down:
+- if (gtk_combo_box_get_active_iter (combo_box, &iter))
+- {
+- found = tree_next (combo_box, combo_box->priv->model,
+- &iter, &new_iter, FALSE);
+- break;
+- }
++ if (!gtk_widget_keynav_failed (GTK_WIDGET(combo_box), GTK_DIR_RIGHT))
++ {
++ found = FALSE;
++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(combo_box)), GTK_DIR_TAB_FORWARD);
++ }
++ break;
+ /* else fall through */
+ case GDK_Page_Up:
+ case GDK_KP_Page_Up:
+@@ -3496,22 +3558,21 @@ gtk_combo_box_key_press (GtkWidget *wi
+ case GDK_KP_Home:
+ found = tree_first (combo_box, combo_box->priv->model, &new_iter, FALSE);
+ break;
+-
+ case GDK_Up:
+ case GDK_KP_Up:
+- if (gtk_combo_box_get_active_iter (combo_box, &iter))
+- {
+- found = tree_prev (combo_box, combo_box->priv->model,
+- &iter, &new_iter, FALSE);
+- break;
+- }
++ if (!gtk_widget_keynav_failed (GTK_WIDGET(combo_box), GTK_DIR_LEFT))
++ {
++ found = FALSE;
++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(combo_box)), GTK_DIR_TAB_BACKWARD);
++ }
++ break;
+ /* else fall through */
+ case GDK_Page_Down:
+ case GDK_KP_Page_Down:
+ case GDK_End:
+ case GDK_KP_End:
+ found = tree_last (combo_box, combo_box->priv->model, &new_iter, FALSE);
+- break;
++ break;
+ default:
+ return FALSE;
+ }
diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkentry.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkentry.patch
new file mode 100755
index 0000000000..def741af5d
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkentry.patch
@@ -0,0 +1,16 @@
+--- gtk/gtkentry.c 2005-08-18 22:10:57.000000000 +0800
++++ gtk/gtkentry.c 2006-05-29 14:42:55.980731414 +0800
+@@ -2386,6 +2386,13 @@ gtk_entry_move_cursor (GtkEntry *e
+ break;
+ case GTK_MOVEMENT_VISUAL_POSITIONS:
+ new_pos = gtk_entry_move_visually (entry, new_pos, count);
++ if (entry->current_pos == new_pos && !extend_selection)
++ {
++ if (!gtk_widget_keynav_failed (GTK_WIDGET(entry), count > 0 ? GTK_DIR_RIGHT : GTK_DIR_LEFT))
++ {
++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(entry)), count > 0 ? GTK_DIR_TAB_FORWARD : GTK_DIR_TAB_BACKWARD);
++ }
++ }
+ break;
+ case GTK_MOVEMENT_WORDS:
+ while (count > 0)
diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkiconview.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkiconview.patch
new file mode 100755
index 0000000000..6ac9629767
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkiconview.patch
@@ -0,0 +1,91 @@
+--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/gtkiconview.c 2005-08-18 22:10:58.000000000 +0800
++++ gtk/gtkiconview.c 2006-05-31 18:12:34.423427466 +0800
+@@ -2678,10 +2678,73 @@ find_item (GtkIconView *icon_view,
+
+ /* FIXME: this could be more efficient
+ */
+- row = current->row + row_ofs;
+- col = current->col + col_ofs;
++ int columns = (icon_view->priv->width - icon_view->priv->margin * 2 + icon_view->priv->column_spacing) / (icon_view->priv->column_spacing + current->width);
++ int rows = g_list_length (icon_view->priv->items) / columns;
++ if (g_list_length (icon_view->priv->items) % columns > 0)
++ rows++;
+
+- for (items = icon_view->priv->items; items; items = items->next)
++ items = g_list_last(icon_view->priv->items);
++ item = items->data;
++ if (col_ofs == 1) //right is pressed
++ {
++ if (current->col == item->col && current->row == (rows - 1)) //the current item is the last one, wrap to the first item
++ {
++ row = 0;
++ col = 0;
++ }
++ else if (current->col == (columns - 1)) //the current item is the rightmost one
++ {
++ row = current->row + row_ofs + 1;
++ col = 0;
++ }
++ else
++ {
++ row = current->row + row_ofs;
++ col = current->col + col_ofs;
++ }
++ }
++ else if (col_ofs == -1) //left is pressed
++ {
++ if (current->col == 0) //the current item is the leftmost one
++ {
++ if (current->row == 0) //the current item is the first one, wrap to the last item
++ {
++ row = rows - 1;
++ col = item->col;
++ }
++ else
++ {
++ row = current->row + row_ofs - 1;
++ col = columns - 1;
++ }
++ }
++ else
++ {
++ row = current->row + row_ofs;
++ col = current->col + col_ofs;
++ }
++ }
++ else if (row_ofs == 1) //down is pressed
++ {
++ if (current->row == (rows - 2) && item->col < current->col)// at the second last row
++ {
++ row = current->row + row_ofs;
++ col = 0;
++ }
++ else
++ {
++ row = current->row + row_ofs;
++ col = current->col + col_ofs;
++ }
++ }
++ else //up is pressed
++ {
++ row = current->row + row_ofs;
++ col = current->col + col_ofs;
++ }
++
++ g_message ("row:%d, col:%d", row, col);
++ for (items = icon_view->priv->items; items; items = items->next)
+ {
+ item = items->data;
+ if (item->row == row && item->col == col)
+@@ -2819,8 +2882,10 @@ gtk_icon_view_move_cursor_up_down (GtkIc
+ count, 0);
+
+ if (!item)
++ {
++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(icon_view)), count > 0 ? GTK_DIR_TAB_FORWARD : GTK_DIR_TAB_BACKWARD);
+ return;
+-
++ }
+ if (icon_view->priv->ctrl_pressed ||
+ !icon_view->priv->shift_pressed ||
+ !icon_view->priv->anchor_item ||
diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkradiobutton.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkradiobutton.patch
new file mode 100755
index 0000000000..4497261ec6
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkradiobutton.patch
@@ -0,0 +1,32 @@
+--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/gtkradiobutton.c 2005-08-18 22:10:58.000000000 +0800
++++ gtk/gtkradiobutton.c 2006-05-26 17:12:35.000000000 +0800
+@@ -522,6 +522,12 @@ gtk_radio_button_focus (GtkWidget
+
+ if (!new_focus)
+ {
++ if (!gtk_widget_keynav_failed (widget, direction))
++ {
++ g_slist_free (focus_list);
++ return FALSE;
++ }
++
+ tmp_list = focus_list;
+
+ while (tmp_list)
+@@ -542,8 +548,15 @@ gtk_radio_button_focus (GtkWidget
+
+ if (new_focus)
+ {
++ GtkSettings *settings = gtk_widget_get_settings (widget);
++ gboolean cursor_only_focus;
++
++ g_object_get (settings,
++ "gtk-cursor-only-focus", &cursor_only_focus,
++ NULL);
+ gtk_widget_grab_focus (new_focus);
+- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (new_focus), TRUE);
++ if (!cursor_only_focus)
++ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (new_focus), TRUE);
+ }
+
+ return TRUE;
diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtksettings.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtksettings.patch
new file mode 100755
index 0000000000..0c3beeec49
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtksettings.patch
@@ -0,0 +1,38 @@
+--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/gtksettings.c 2005-08-18 22:10:59.000000000 +0800
++++ gtk/gtksettings.c 2006-05-29 10:29:35.000000000 +0800
+@@ -72,7 +72,8 @@ enum {
+ PROP_XFT_RGBA,
+ PROP_XFT_DPI,
+ #endif
+- PROP_ALTERNATIVE_BUTTON_ORDER
++ PROP_ALTERNATIVE_BUTTON_ORDER,
++ PROP_CURSOR_ONLY_FOCUS
+ };
+
+
+@@ -435,6 +436,25 @@ gtk_settings_class_init (GtkSettingsClas
+ G_PARAM_READWRITE),
+ NULL);
+ g_assert (result == PROP_ALTERNATIVE_BUTTON_ORDER);
++
++ /**
++ * GtkSettings:gtk-cursor-only-focus:
++ *
++ * When TRUE, keyboard navigation should be able to reach all widgets
++ * by using the cursor keys only. Tab, Shift etc. keys can't be expected
++ * to be present on the used input device.
++ *
++ * Since: 2.10
++ */
++ result = settings_install_property_parser (class,
++ g_param_spec_boolean ("gtk-cursor-only-focus",
++ P_("Cursor Only Focus"),
++ P_("When TRUE, there are only cursor keys available to navigate widgets"),
++ FALSE,
++ G_PARAM_READWRITE),
++ NULL);
++
++ g_assert (result == PROP_CURSOR_ONLY_FOCUS);
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktextview.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktextview.patch
new file mode 100755
index 0000000000..e3231b38d0
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktextview.patch
@@ -0,0 +1,25 @@
+--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/gtktextview.c 2005-08-18 22:10:59.000000000 +0800
++++ gtk/gtktextview.c 2006-07-03 15:34:19.880257250 +0800
+@@ -3855,6 +3855,22 @@ gtk_text_view_key_press_event (GtkWidget
+
+ insert = gtk_text_buffer_get_insert (get_buffer (text_view));
+ gtk_text_buffer_get_iter_at_mark (get_buffer (text_view), &iter, insert);
++
++ int lineCount = gtk_text_buffer_get_line_count (get_buffer (text_view));
++ int curLine = gtk_text_iter_get_line (&iter);
++ if (curLine == 0 && (event->keyval == GDK_Up || event->keyval == GDK_KP_Up)
++ && (!gtk_widget_keynav_failed (GTK_WIDGET(text_view), GTK_DIR_UP)))
++ {
++ gtk_text_view_move_focus (text_view,GTK_DIR_TAB_BACKWARD);
++ return TRUE;
++ }
++ else if (curLine == (lineCount - 1) && (event->keyval == GDK_Down || event->keyval == GDK_KP_Down)
++ && (!gtk_widget_keynav_failed (GTK_WIDGET(text_view), GTK_DIR_DOWN)))
++ {
++ gtk_text_view_move_focus (text_view,GTK_DIR_TAB_FORWARD);
++ return TRUE;
++ }
++
+ can_insert = gtk_text_iter_can_insert (&iter, text_view->editable);
+ if (can_insert &&
+ gtk_im_context_filter_keypress (text_view->im_context, event))
diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktreeview.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktreeview.patch
new file mode 100755
index 0000000000..f83558d879
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtktreeview.patch
@@ -0,0 +1,121 @@
+--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/gtktreeview.c 2006-06-29 14:06:27.099142881 +0800
++++ gtk/gtktreeview.c 2006-06-29 14:06:53.746305635 +0800
+@@ -4198,6 +4198,118 @@ gtk_tree_view_key_press (GtkWidget *wi
+ return TRUE;
+ }
+
++ GtkTreeViewColumn *focus_column;
++ GtkTreePath *tree_path;
++ gtk_tree_view_get_cursor (tree_view, &tree_path, &focus_column);
++ GtkTreeModel *tree_model = gtk_tree_view_get_model (tree_view);
++
++ if (tree_model && tree_path
++ && (event->keyval == GDK_Up || event->keyval == GDK_KP_Up
++ || event->keyval == GDK_Down || event->keyval == GDK_KP_Down))
++ {
++ GtkTreeIter cur_iter;
++ if (gtk_tree_model_get_iter (tree_model, &cur_iter, tree_path))
++ {
++ GtkTreeIter iter;
++ GtkTreePath *path;
++ if ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up)
++ && !gtk_widget_keynav_failed (GTK_WIDGET(tree_view), GTK_DIR_UP))
++ {
++ gtk_tree_model_get_iter_first (tree_model, &iter);
++ path = gtk_tree_model_get_path (tree_model, &iter);
++ if (gtk_tree_path_compare (tree_path, path) == 0)
++ {
++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(tree_view)), GTK_DIR_TAB_BACKWARD);
++ gtk_tree_path_free (tree_path);
++ gtk_tree_path_free (path);
++ return TRUE;
++ }
++ gtk_tree_path_free (path);
++ }
++ if ((event->keyval == GDK_Down || event->keyval == GDK_KP_Down)
++ && !gtk_widget_keynav_failed (GTK_WIDGET(tree_view), GTK_DIR_DOWN))
++ {
++ if (!gtk_tree_model_iter_next (tree_model, &cur_iter))//cur_iter is the last one at its level
++ {
++ gtk_tree_model_get_iter (tree_model, &cur_iter, tree_path);
++
++ if (!gtk_tree_model_iter_parent (tree_model, &iter, &cur_iter))//cur_iter is at toplevel
++ {
++ if (!gtk_tree_model_iter_has_child (tree_model, &cur_iter) || !gtk_tree_view_row_expanded (tree_view, tree_path))
++ {
++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(tree_view)), GTK_DIR_TAB_FORWARD);
++ gtk_tree_path_free (tree_path);
++ return TRUE;
++ }
++ }
++ else//check if every ancestor of cur_iter is the last one at its level
++ {
++ path = gtk_tree_model_get_path (tree_model, &iter);
++ int depth = gtk_tree_path_get_depth (path);
++ int i;
++ for (i = 0; i < depth; i++)
++ {
++ if (!gtk_tree_model_iter_next (tree_model, &iter))
++ {
++ gtk_tree_path_up (path);
++ if (gtk_tree_path_to_string (path))
++ gtk_tree_model_get_iter (tree_model, &iter, path);
++ }
++ else
++ break;
++ }
++ if (i == depth)
++ {
++ if (!gtk_tree_model_iter_has_child (tree_model, &cur_iter) || !gtk_tree_view_row_expanded (tree_view, tree_path))
++ {
++ gtk_widget_child_focus (gtk_widget_get_toplevel (GTK_WIDGET(tree_view)), GTK_DIR_TAB_FORWARD);
++ gtk_tree_path_free (path);
++ gtk_tree_path_free (tree_path);
++ return TRUE;
++ }
++ }
++ gtk_tree_path_free (path);
++ }
++ }
++ }
++ }
++ }
++
++ if (tree_view->priv->columns && tree_path
++ && (event->keyval == GDK_Left || event->keyval == GDK_KP_Left
++ || event->keyval == GDK_Right || event->keyval == GDK_KP_Right))
++ {
++ list = tree_view->priv->columns;
++ guint length = g_list_length (list);
++ guint i = 0;
++ while (list)
++ {
++ GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN (list->data);
++
++ if (column == focus_column)
++ {
++ if (i == 0 && (event->keyval == GDK_Left || event->keyval == GDK_KP_Left))
++ {
++ list = g_list_last (list);
++ gtk_tree_view_set_cursor (tree_view, tree_path, GTK_TREE_VIEW_COLUMN (list->data), FALSE);
++ gtk_tree_path_free (tree_path);
++ return TRUE;
++ }
++ if (i == length - 1 && (event->keyval == GDK_Right || event->keyval == GDK_KP_Right))
++ {
++ list = g_list_first (list);
++ gtk_tree_view_set_cursor (tree_view, tree_path, GTK_TREE_VIEW_COLUMN (list->data), FALSE);
++ gtk_tree_path_free (tree_path);
++ return TRUE;
++ }
++ }
++ list = list->next;
++ i++;
++ }
++ }
++
++ gtk_tree_path_free (tree_path);
++
+ if (tree_view->priv->columns && (event->state & GDK_SHIFT_MASK)
+ && (event->keyval == GDK_Left || event->keyval == GDK_KP_Left
+ || event->keyval == GDK_Right || event->keyval == GDK_KP_Right))
diff --git a/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkwidget.patch b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkwidget.patch
new file mode 100755
index 0000000000..7cf4e13cf6
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.10/gtk.keynav.gtkwidget.patch
@@ -0,0 +1,127 @@
+diff -r -u -p /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/widget/gtkwidget.c gtk/widget/gtkwidget.c
+--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/widget/gtkwidget.c 2006-05-30 13:57:49.732943065 +0800
++++ gtk/gtkwidget.c 2006-05-30 13:57:24.716589268 +0800
+@@ -120,6 +120,7 @@ enum {
+ ACCEL_CLOSURES_CHANGED,
+ SCREEN_CHANGED,
+ CAN_ACTIVATE_ACCEL,
++ KEYNAV_FAILED,
+ LAST_SIGNAL
+ };
+
+@@ -202,6 +203,8 @@ static gboolean gtk_widget_real_focus_o
+ GdkEventFocus *event);
+ static gboolean gtk_widget_real_focus (GtkWidget *widget,
+ GtkDirectionType direction);
++static gboolean gtk_widget_real_keynav_failed (GtkWidget *widget,
++ GtkDirectionType direction);
+ static PangoContext* gtk_widget_peek_pango_context (GtkWidget *widget);
+ static void gtk_widget_propagate_state (GtkWidget *widget,
+ GtkStateData *data);
+@@ -363,6 +366,7 @@ gtk_widget_class_init (GtkWidgetClass *k
+ klass->mnemonic_activate = gtk_widget_real_mnemonic_activate;
+ klass->grab_focus = gtk_widget_real_grab_focus;
+ klass->focus = gtk_widget_real_focus;
++ klass->keynav_failed = gtk_widget_real_keynav_failed;
+ klass->event = NULL;
+ klass->button_press_event = NULL;
+ klass->button_release_event = NULL;
+@@ -1368,6 +1372,16 @@ gtk_widget_class_init (GtkWidgetClass *k
+ _gtk_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ GDK_TYPE_SCREEN);
++
++ widget_signals[KEYNAV_FAILED] =
++ g_signal_new (("keynav_failed"),
++ G_TYPE_FROM_CLASS (object_class),
++ G_SIGNAL_RUN_LAST,
++ G_STRUCT_OFFSET (GtkWidgetClass, keynav_failed),
++ _gtk_boolean_handled_accumulator, NULL,
++ _gtk_marshal_BOOLEAN__ENUM,
++ G_TYPE_BOOLEAN, 1,
++ GTK_TYPE_DIRECTION_TYPE);
+ /**
+ * GtkWidget::can-activate-accel:
+ * @widget: the object which received the signal
+@@ -4044,6 +4058,34 @@ gtk_widget_real_focus (GtkWidget
+ return FALSE;
+ }
+
++static gboolean
++gtk_widget_real_keynav_failed (GtkWidget *widget,
++ GtkDirectionType direction)
++{
++ GtkSettings *settings = gtk_widget_get_settings (widget);
++ gboolean cursor_only_focus;
++
++ g_object_get (settings, "gtk-cursor-only-focus", &cursor_only_focus, NULL);
++
++ switch (direction)
++ {
++ case GTK_DIR_TAB_FORWARD:
++ case GTK_DIR_TAB_BACKWARD:
++ return FALSE;
++
++ case GTK_DIR_UP:
++ case GTK_DIR_DOWN:
++ case GTK_DIR_LEFT:
++ case GTK_DIR_RIGHT:
++ if (cursor_only_focus)
++ return FALSE;
++ }
++
++ gdk_beep ();
++
++ return TRUE;
++}
++
+ /**
+ * gtk_widget_is_focus:
+ * @widget: a #GtkWidget
+@@ -5500,6 +5542,20 @@ gtk_widget_child_focus (GtkWidget
+ return return_val;
+ }
+
++gboolean
++gtk_widget_keynav_failed (GtkWidget *widget,
++ GtkDirectionType direction)
++{
++ gboolean return_val;
++
++ g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
++
++ g_signal_emit (widget, widget_signals[KEYNAV_FAILED], 0,
++ direction, &return_val);
++
++ return return_val;
++}
++
+ /**
+ * gtk_widget_set_uposition:
+ * @widget: a #GtkWidget
+diff -r -u -p /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/widget/gtkwidget.h gtk/widget/gtkwidget.h
+--- /data/zzz/gtk-2.6/gtk+-2.6.10/gtk/widget/gtkwidget.h 2006-05-30 13:57:49.736942642 +0800
++++ gtk/gtkwidget.h 2006-05-30 13:57:24.716589268 +0800
+@@ -406,8 +406,9 @@ struct _GtkWidgetClass
+ gboolean (*can_activate_accel) (GtkWidget *widget,
+ guint signal_id);
+
++ gboolean (* keynav_failed) (GtkWidget *widget,
++ GtkDirectionType direction);
+ /* Padding for future expansion */
+- void (*_gtk_reserved2) (void);
+ void (*_gtk_reserved3) (void);
+ void (*_gtk_reserved4) (void);
+ void (*_gtk_reserved5) (void);
+@@ -562,7 +563,8 @@ GdkWindow *gtk_widget_get_parent_window
+
+ gboolean gtk_widget_child_focus (GtkWidget *widget,
+ GtkDirectionType direction);
+-
++gboolean gtk_widget_keynav_failed (GtkWidget *widget,
++ GtkDirectionType direction);
+ void gtk_widget_set_size_request (GtkWidget *widget,
+ gint width,
+ gint height);
+Only in gtk/widget: gtkwidget.h.bak
+Only in gtk/widget: gtkwidget.lo
diff --git a/packages/gtk+/gtk+-directfb_2.10.9.bb b/packages/gtk+/gtk+-directfb_2.10.9.bb
new file mode 100644
index 0000000000..f8062f33f7
--- /dev/null
+++ b/packages/gtk+/gtk+-directfb_2.10.9.bb
@@ -0,0 +1,38 @@
+require gtk-2.10.inc
+
+PR = "r0"
+
+# disable per default - untested and not all patches included.
+DEFAULT_PREFERENCE = "-1"
+S = "${WORKDIR}/gtk+-${PV}"
+
+LDFLAGS_append += " -ldirectfb"
+CFLAGS_append += " -I${STAGING_INCDIR}/directfb"
+
+SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.10/gtk+-${PV}.tar.bz2 \
+ file://no-xwc.patch;patch=1 \
+ file://automake-lossage.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://directfb_pixbuf_deprecated_fix.patch;patch=1 \
+# file://gtk-doc.patch;patch=1 \
+"
+EXTRA_OECONF =" \
+ --prefix=${STAGING_DIR} \
+ --with-gdktarget=directfb \
+ --without-x \
+ --without-libtiff \
+ "
+GDKTARGET="directfb"
+
diff --git a/packages/gtk+/gtk+_2.10.10.bb b/packages/gtk+/gtk+_2.10.10.bb
new file mode 100644
index 0000000000..3756d85062
--- /dev/null
+++ b/packages/gtk+/gtk+_2.10.10.bb
@@ -0,0 +1,28 @@
+require gtk-2.10.inc
+
+PR = "r0"
+
+# disable per default - untested and not all patches included.
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.10/gtk+-${PV}.tar.bz2 \
+ file://no-xwc.patch;patch=1 \
+ file://automake-lossage.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 \
+ "
+
+#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)}"
diff --git a/packages/gtk+/gtk+_2.10.12.bb b/packages/gtk+/gtk+_2.10.12.bb
new file mode 100644
index 0000000000..3756d85062
--- /dev/null
+++ b/packages/gtk+/gtk+_2.10.12.bb
@@ -0,0 +1,28 @@
+require gtk-2.10.inc
+
+PR = "r0"
+
+# disable per default - untested and not all patches included.
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.10/gtk+-${PV}.tar.bz2 \
+ file://no-xwc.patch;patch=1 \
+ file://automake-lossage.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 \
+ "
+
+#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)}"
diff --git a/packages/gtk+/gtk+_2.10.3.bb b/packages/gtk+/gtk+_2.10.3.bb
deleted file mode 100644
index 51a79598dd..0000000000
--- a/packages/gtk+/gtk+_2.10.3.bb
+++ /dev/null
@@ -1,103 +0,0 @@
-LICENSE = "LGPL"
-DESCRIPTION = "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \
-set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites."
-HOMEPAGE = "http://www.gtk.org"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt cairo cups"
-PR = "r3"
-
-# disable per default - untested and not all patches included.
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.10/gtk+-${PV}.tar.bz2 \
- file://no-xwc.patch;patch=1 \
- file://automake-lossage.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://disable-print.patch;patch=1 \
- file://hardcoded_libtool.patch;patch=1 \
- file://no-demos.patch;patch=1"
-# file://gtk+-handhelds.patch;patch=1
-# file://single-click.patch;patch=1
-# file://spinbutton.patch;patch=1 \
-
-inherit autotools pkgconfig
-
-FILES_${PN} = "${bindir}/gdk-pixbuf-query-loaders \
- ${bindir}/gtk-update-icon-cache \
- ${bindir}/gtk-query-immodules-2.0 \
- ${libdir}/lib*.so.* \
- ${datadir}/themes ${sysconfdir} \
- ${libdir}/gtk-2.0/${LIBV}/engines/libpixmap.so"
-FILES_${PN}-dev += " \
- ${datadir}/gtk-2.0/include \
- ${libdir}/gtk-2.0/include \
- ${libdir}/gtk-2.0/${LIBV}/loaders/*.la \
- ${libdir}/gtk-2.0/${LIBV}/immodules/*.la \
- ${libdir}/gtk-2.0/${LIBV}/engines/*.la \
- ${bindir}/gdk-pixbuf-csource"
-FILES_${PN}-dbg += " \
- ${libdir}/gtk-2.0/${LIBV}/loaders/.debug/* \
- ${libdir}/gtk-2.0/${LIBV}/immodules/.debug/* \
- ${libdir}/gtk-2.0/${LIBV}/engines/.debug/*"
-
-
-RRECOMMENDS_${PN} = "glibc-gconv-iso8859-1 ttf-dejavu-sans"
-RRECOMMENDS_${PN}_angstrom = "glibc-gconv-iso8859-1 ttf-dejavu-sans gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm"
-RRECOMMENDS_${PN}_openzaurus = "glibc-gconv-iso8859-1 ttf-dejavu-sans gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm"
-
-EXTRA_OECONF = "--without-libtiff --disable-xkb --disable-glibtest --enable-display-migration"
-
-LIBV = "2.10.0"
-
-do_stage () {
- oe_libinstall -so -C gtk libgtk-x11-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gdk libgdk-x11-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C contrib/gdk-pixbuf-xlib libgdk_pixbuf_xlib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gdk-pixbuf libgdk_pixbuf-2.0 ${STAGING_LIBDIR}
-
- autotools_stage_includes
-
- mkdir -p ${STAGING_LIBDIR}/gtk-2.0/include
- install -m 0644 gdk/gdkconfig.h ${STAGING_LIBDIR}/gtk-2.0/include/gdkconfig.h
-
- install -m 0644 m4macros/gtk-2.0.m4 ${STAGING_DATADIR}/aclocal/
-}
-
-do_install_append () {
- install -d ${D}${sysconfdir}/gtk-2.0
-}
-
-postinst_prologue() {
-if [ "x$D" != "x" ]; then
- exit 1
-fi
-
-}
-
-PACKAGES_DYNAMIC = "gdk-pixbuf-loader-* gtk-immodule-* gtk-printbackend-*"
-
-python populate_packages_prepend () {
- import os.path
-
- prologue = bb.data.getVar("postinst_prologue", d, 1)
-
- gtk_libdir = bb.data.expand('${libdir}/gtk-2.0/${LIBV}', d)
- loaders_root = os.path.join(gtk_libdir, 'loaders')
- immodules_root = os.path.join(gtk_libdir, 'immodules')
- printmodules_root = os.path.join(gtk_libdir, 'printbackends');
-
- do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s', prologue + 'gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders')
- do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s', prologue + 'gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules')
- do_split_packages(d, printmodules_root, '^libprintbackend-(.*)\.so$', 'gtk-printbackend-%s', 'GTK printbackend module for %s')
-
- if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
- bb.data.setVar('PKG_${PN}', 'libgtk-2.0', d)
-}
diff --git a/packages/gtk+/gtk+_2.10.6.bb b/packages/gtk+/gtk+_2.10.6.bb
deleted file mode 100644
index 33be0019cb..0000000000
--- a/packages/gtk+/gtk+_2.10.6.bb
+++ /dev/null
@@ -1,103 +0,0 @@
-LICENSE = "LGPL"
-DESCRIPTION = "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \
-set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites."
-HOMEPAGE = "http://www.gtk.org"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt cairo cups"
-PR = "r7"
-
-# disable per default - untested and not all patches included.
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.10/gtk+-${PV}.tar.bz2 \
- file://no-xwc.patch;patch=1 \
- file://automake-lossage.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://pangoxft2.10.6.diff;patch=1 \
- file://single-click.patch;patch=1 \
- file://spinbutton.patch;patch=1 \
- file://gtk+-handhelds.patch;patch=1"
-
-inherit autotools pkgconfig
-
-FILES_${PN} = "${bindir}/gdk-pixbuf-query-loaders \
- ${bindir}/gtk-update-icon-cache \
- ${bindir}/gtk-query-immodules-2.0 \
- ${libdir}/lib*.so.* \
- ${datadir}/themes ${sysconfdir} \
- ${libdir}/gtk-2.0/${LIBV}/engines/libpixmap.so"
-FILES_${PN}-dev += " \
- ${datadir}/gtk-2.0/include \
- ${libdir}/gtk-2.0/include \
- ${libdir}/gtk-2.0/${LIBV}/loaders/*.la \
- ${libdir}/gtk-2.0/${LIBV}/immodules/*.la \
- ${libdir}/gtk-2.0/${LIBV}/engines/*.la \
- ${bindir}/gdk-pixbuf-csource"
-FILES_${PN}-dbg += " \
- ${libdir}/gtk-2.0/${LIBV}/loaders/.debug/* \
- ${libdir}/gtk-2.0/${LIBV}/immodules/.debug/* \
- ${libdir}/gtk-2.0/${LIBV}/engines/.debug/*"
-
-
-RRECOMMENDS_${PN} = "glibc-gconv-iso8859-1 ttf-dejavu-sans"
-RRECOMMENDS_${PN}_angstrom = "glibc-gconv-iso8859-1 ttf-dejavu-sans gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm"
-RRECOMMENDS_${PN}_openzaurus = "glibc-gconv-iso8859-1 ttf-dejavu-sans gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm"
-
-EXTRA_OECONF = "--without-libtiff --disable-xkb --disable-glibtest --enable-display-migration"
-
-LIBV = "2.10.0"
-
-do_stage () {
- oe_libinstall -so -C gtk libgtk-x11-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gdk libgdk-x11-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C contrib/gdk-pixbuf-xlib libgdk_pixbuf_xlib-2.0 ${STAGING_LIBDIR}
- oe_libinstall -so -C gdk-pixbuf libgdk_pixbuf-2.0 ${STAGING_LIBDIR}
-
- autotools_stage_includes
-
- mkdir -p ${STAGING_LIBDIR}/gtk-2.0/include
- install -m 0644 gdk/gdkconfig.h ${STAGING_LIBDIR}/gtk-2.0/include/gdkconfig.h
-
- install -m 0644 m4macros/gtk-2.0.m4 ${STAGING_DATADIR}/aclocal/
-}
-
-do_install_append () {
- install -d ${D}${sysconfdir}/gtk-2.0
-}
-
-postinst_prologue() {
-if [ "x$D" != "x" ]; then
- exit 1
-fi
-
-}
-
-PACKAGES_DYNAMIC = "gdk-pixbuf-loader-* gtk-immodule-* gtk-printbackend-*"
-
-python populate_packages_prepend () {
- import os.path
-
- prologue = bb.data.getVar("postinst_prologue", d, 1)
-
- gtk_libdir = bb.data.expand('${libdir}/gtk-2.0/${LIBV}', d)
- loaders_root = os.path.join(gtk_libdir, 'loaders')
- immodules_root = os.path.join(gtk_libdir, 'immodules')
- printmodules_root = os.path.join(gtk_libdir, 'printbackends');
-
- do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s', prologue + 'gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders')
- do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s', prologue + 'gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules')
- do_split_packages(d, printmodules_root, '^libprintbackend-(.*)\.so$', 'gtk-printbackend-%s', 'GTK printbackend module for %s')
-
- if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
- bb.data.setVar('PKG_${PN}', 'libgtk-2.0', d)
-}
diff --git a/packages/gtk+/gtk+_2.10.9.bb b/packages/gtk+/gtk+_2.10.9.bb
new file mode 100644
index 0000000000..f78b9d459c
--- /dev/null
+++ b/packages/gtk+/gtk+_2.10.9.bb
@@ -0,0 +1,24 @@
+require gtk-2.10.inc
+
+PR = "r0"
+
+# disable per default - untested and not all patches included.
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.10/gtk+-${PV}.tar.bz2 \
+ file://no-xwc.patch;patch=1 \
+ file://automake-lossage.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"
+
diff --git a/packages/gtk+/gtk+_2.6.10.bb b/packages/gtk+/gtk+_2.6.10.bb
index 171c712fc0..ed2d9aea80 100644
--- a/packages/gtk+/gtk+_2.6.10.bb
+++ b/packages/gtk+/gtk+_2.6.10.bb
@@ -5,7 +5,7 @@ SECTION = "libs"
LICENSE = "LGPL"
PRIORITY = "optional"
DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt"
-PR = "r4"
+PR = "r10"
SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/gtk+-${PV}.tar.bz2 \
file://help.patch;patch=1 \
@@ -13,17 +13,27 @@ SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/gtk+-${PV}.tar.bz2 \
file://no-xwc.patch;patch=1 \
file://automake-lossage.patch;patch=1 \
file://gtk+-handhelds.patch;patch=1 \
- file://spinbutton.patch;patch=1 \
- file://hardcoded_libtool.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://single-click.patch;patch=1 \
- file://menu-styling.patch;patch=1"
+ file://spinbutton.patch;patch=1 \
+ file://hardcoded_libtool.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://single-click.patch;patch=1 \
+ file://menu-styling.patch;patch=1 \
+ file://compile-against-newer-glib.patch;patch=1 \
+ file://gtk.keynav.gtkcombobox.patch;patch=1;pnum=0 \
+ file://gtk.keynav.gtkentry.patch;patch=1;pnum=0 \
+ file://gtk.keynav.gtkiconview.patch;patch=1;pnum=0 \
+ file://gtk.keynav.gtkradiobutton.patch;patch=1;pnum=0 \
+ file://gtk.keynav.gtksettings.patch;patch=1;pnum=0 \
+ file://gtk.keynav.gtktextview.patch;patch=1;pnum=0 \
+ file://gtk.keynav.gtktreeview.patch;patch=1;pnum=0 \
+ file://gtk.keynav.gtkwidget.patch;patch=1;pnum=0 \
+ file://gtk+-2.6.10-bg.patch;patch=1"
inherit autotools pkgconfig
@@ -52,6 +62,12 @@ EXTRA_OECONF = "--without-libtiff --disable-xkb --disable-glibtest --enable-disp
# --disable-cruft
LIBV = "2.4.0"
+do_configure_prepend() {
+ for i in `find . -name "Makefile.am"`
+ do
+ sed -i -e s,-DG_DISABLE_DEPRECATED,-DSED_ROCKS_DUDES, $i
+ done
+}
do_stage () {
oe_libinstall -so -C gtk libgtk-x11-2.0 ${STAGING_LIBDIR}
diff --git a/packages/gtk+/gtk+_2.8.9.bb b/packages/gtk+/gtk+_2.8.9.bb
index e310dcfe31..91b6b3dce9 100644
--- a/packages/gtk+/gtk+_2.8.9.bb
+++ b/packages/gtk+/gtk+_2.8.9.bb
@@ -46,7 +46,6 @@ FILES_${PN}-dbg += " \
RRECOMMENDS_${PN} = "glibc-gconv-iso8859-1 ttf-dejavu-sans"
RRECOMMENDS_${PN}_angstrom = "glibc-gconv-iso8859-1 ttf-dejavu-sans gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm"
-RRECOMMENDS_${PN}_openzaurus = "glibc-gconv-iso8859-1 ttf-dejavu-sans gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm"
EXTRA_OECONF = "--without-libtiff --disable-xkb --disable-glibtest --enable-display-migration"
# --disable-cruft
diff --git a/packages/gtk+/gtk-2.10.inc b/packages/gtk+/gtk-2.10.inc
new file mode 100644
index 0000000000..6f9035055b
--- /dev/null
+++ b/packages/gtk+/gtk-2.10.inc
@@ -0,0 +1,83 @@
+LICENSE = "LGPL"
+DESCRIPTION = "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \
+set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites."
+HOMEPAGE = "http://www.gtk.org"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt cairo cups"
+
+inherit autotools pkgconfig
+
+FILES_${PN} = "${bindir}/gdk-pixbuf-query-loaders \
+ ${bindir}/gtk-update-icon-cache \
+ ${bindir}/gtk-query-immodules-2.0 \
+ ${libdir}/lib*.so.* \
+ ${datadir}/themes ${sysconfdir} \
+ ${libdir}/gtk-2.0/${LIBV}/engines/libpixmap.so"
+FILES_${PN}-dev += " \
+ ${datadir}/gtk-2.0/include \
+ ${libdir}/gtk-2.0/include \
+ ${libdir}/gtk-2.0/${LIBV}/loaders/*.la \
+ ${libdir}/gtk-2.0/${LIBV}/immodules/*.la \
+ ${libdir}/gtk-2.0/${LIBV}/engines/*.la \
+ ${bindir}/gdk-pixbuf-csource"
+FILES_${PN}-dbg += " \
+ ${libdir}/gtk-2.0/${LIBV}/loaders/.debug/* \
+ ${libdir}/gtk-2.0/${LIBV}/immodules/.debug/* \
+ ${libdir}/gtk-2.0/${LIBV}/engines/.debug/*"
+
+
+RRECOMMENDS_${PN} = "glibc-gconv-iso8859-1 ttf-dejavu-sans"
+RRECOMMENDS_${PN}_angstrom = "glibc-gconv-iso8859-1 ttf-dejavu-sans gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm"
+RRECOMMENDS_${PN}_openzaurus = "glibc-gconv-iso8859-1 ttf-dejavu-sans gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm"
+
+EXTRA_OECONF = "--without-libtiff --disable-xkb --disable-glibtest --enable-display-migration"
+
+export GDKTARGET="x11"
+
+LIBV = "2.10.0"
+
+do_stage () {
+ oe_libinstall -so -C gtk libgtk-$GDKTARGET-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C gdk libgdk-$GDKTARGET-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C contrib/gdk-pixbuf-xlib libgdk_pixbuf_xlib-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C gdk-pixbuf libgdk_pixbuf-2.0 ${STAGING_LIBDIR}
+
+ autotools_stage_includes
+
+ mkdir -p ${STAGING_LIBDIR}/gtk-2.0/include
+ install -m 0644 gdk/gdkconfig.h ${STAGING_LIBDIR}/gtk-2.0/include/gdkconfig.h
+
+ install -m 0644 m4macros/gtk-2.0.m4 ${STAGING_DATADIR}/aclocal/
+}
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/gtk-2.0
+}
+
+postinst_prologue() {
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+}
+
+PACKAGES_DYNAMIC = "gdk-pixbuf-loader-* gtk-immodule-* gtk-printbackend-*"
+
+python populate_packages_prepend () {
+ import os.path
+
+ prologue = bb.data.getVar("postinst_prologue", d, 1)
+
+ gtk_libdir = bb.data.expand('${libdir}/gtk-2.0/${LIBV}', d)
+ loaders_root = os.path.join(gtk_libdir, 'loaders')
+ immodules_root = os.path.join(gtk_libdir, 'immodules')
+ printmodules_root = os.path.join(gtk_libdir, 'printbackends');
+
+ do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s', prologue + 'gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders')
+ do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s', prologue + 'gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules')
+ do_split_packages(d, printmodules_root, '^libprintbackend-(.*)\.so$', 'gtk-printbackend-%s', 'GTK printbackend module for %s')
+
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_${PN}', 'libgtk-2.0', d)
+}
diff --git a/packages/gtk+/gtk-fpu.inc b/packages/gtk+/gtk-fpu.inc
new file mode 100644
index 0000000000..52cdc3b446
--- /dev/null
+++ b/packages/gtk+/gtk-fpu.inc
@@ -0,0 +1,6 @@
+
+def get_gtk_fpu_setting(bb, d):
+ if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]:
+ return "--enable-integer-pixops"
+ return ""
+
diff --git a/packages/gtk+/pixops-test.bb b/packages/gtk+/pixops-test.bb
new file mode 100644
index 0000000000..79bc33a04f
--- /dev/null
+++ b/packages/gtk+/pixops-test.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Productive gtk+ devel prodder"
+DEPENDS = "gtk+"
+
+PR = "r2"
+
+inherit pkgconfig
+
+SRC_URI = "file://pixops-test.c \
+ file://gtk-logo-rgb.gif"
+
+do_configure() {
+ cp ${WORKDIR}/pixops-test.c ${S}
+ cp ${WORKDIR}/gtk-logo-rgb.gif ${S}
+}
+
+do_compile() {
+ ${CC} `pkg-config gtk+-2.0 --libs --cflags` `pkg-config pango --libs --cflags` -lXfixes -lz -lpangoft2-1.0 -lgpg-error -lXdmcp -lXcursor -lexpat -lXau -lgcrypt -lXext -lXinerama -lXrandr -o pixops-test pixops-test.c
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -d ${D}${datadir}/pixops-test
+ install -m 755 pixops-test ${D}${bindir}
+ install -m 644 gtk-logo-rgb.gif ${D}${datadir}/pixops-test
+}
diff --git a/packages/gtk+/pixops-test/.mtn2git_empty b/packages/gtk+/pixops-test/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/pixops-test/.mtn2git_empty
diff --git a/packages/gtk+/pixops-test/gtk-logo-rgb.gif b/packages/gtk+/pixops-test/gtk-logo-rgb.gif
new file mode 100644
index 0000000000..f6e934d5e6
--- /dev/null
+++ b/packages/gtk+/pixops-test/gtk-logo-rgb.gif
Binary files differ
diff --git a/packages/gtk+/pixops-test/pixops-test.c b/packages/gtk+/pixops-test/pixops-test.c
new file mode 100644
index 0000000000..f8906dfc42
--- /dev/null
+++ b/packages/gtk+/pixops-test/pixops-test.c
@@ -0,0 +1,69 @@
+#include <gtk/gtk.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <stdlib.h>
+
+static gdouble total_seconds = 0.0;
+
+/* randomly colour each pixel */
+static void
+fill_pixbuf (GdkPixbuf *buf)
+{
+ int width, height, rowstride, n_channels;
+ int x,y,n;
+ guchar *pixels, *p;
+
+ g_assert (gdk_pixbuf_get_bits_per_sample (buf) == 8);
+
+ n_channels = gdk_pixbuf_get_n_channels (buf);
+ width = gdk_pixbuf_get_width (buf);
+ height = gdk_pixbuf_get_height (buf);
+ rowstride = gdk_pixbuf_get_rowstride (buf);
+ pixels = gdk_pixbuf_get_pixels (buf);
+
+ for (x=0; x<width; x++) {
+ for (y=0; y<height; y++) {
+ p = pixels + (y*rowstride) + (x*n_channels);
+ for (n=0; n<n_channels; n++) {
+ p[n] = (random()*255)/RAND_MAX;
+ }
+ }
+ }
+}
+
+int
+main (int argc, char **argv)
+{
+ GTimer *timer;
+ int i,j;
+
+ gtk_init (&argc, &argv);
+
+
+ GdkPixbuf *pixbuf[4], *ret;
+ pixbuf[0] = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, 400, 600);
+ pixbuf[1] = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, 40, 60);
+ pixbuf[2] = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, 400, 600);
+ pixbuf[3] = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, 40, 60);
+
+ for (j=0; j<4; j++)
+ fill_pixbuf (pixbuf[j]);
+
+ timer = g_timer_new ();
+ g_timer_start (timer);
+
+ for (i = 0; i < 10 ; i++) {
+ for (j=0; j<4; j++) {
+ ret = gdk_pixbuf_scale_simple (pixbuf[j], 700, 900, GDK_INTERP_BILINEAR);
+ gdk_pixbuf_unref (ret);
+ ret = gdk_pixbuf_scale_simple (pixbuf[j], 20, 50, GDK_INTERP_BILINEAR);
+ gdk_pixbuf_unref (ret);
+ }
+ }
+ g_timer_stop (timer);
+
+ total_seconds += g_timer_elapsed (timer, NULL);
+
+ g_print ("time spent scaling (in seconds): %lf\n", total_seconds );
+
+ return 0;
+}
diff --git a/packages/gtk-engines/gtk-sato-engine_svn.bb b/packages/gtk-engines/gtk-sato-engine_svn.bb
new file mode 100644
index 0000000000..2a96cf2ef6
--- /dev/null
+++ b/packages/gtk-engines/gtk-sato-engine_svn.bb
@@ -0,0 +1,18 @@
+LICENSE = "GPL"
+SECTION = "x11/base"
+DESCRIPTION = "GTK theme engine SATO from O-Hand"
+DEPENDS = "gtk+"
+
+PV = "0.0.1+svn${SRCDATE}"
+PR = "r0"
+
+PACKAGES += "gtk-theme-sato"
+FILES_${PN} = "${libdir}/gtk-2.0/*/engines/*.so"
+FILES_${PN}-dev = "${libdir}/gtk-2.0/*/engines/*"
+FILES_gtk-theme-sato = "${datadir}/icons ${datadir}/themes"
+
+S = "${WORKDIR}/gtk-engine"
+
+SRC_URI = "svn://svn.o-hand.com/repos/sato/trunk;module=gtk-engine;proto=http"
+
+inherit autotools pkgconfig
diff --git a/packages/gtk-theme-torturer/.mtn2git_empty b/packages/gtk-theme-torturer/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk-theme-torturer/.mtn2git_empty
diff --git a/packages/gtk-theme-torturer/gtk-theme-torturer_git.bb b/packages/gtk-theme-torturer/gtk-theme-torturer_git.bb
new file mode 100644
index 0000000000..adcdf2ed2e
--- /dev/null
+++ b/packages/gtk-theme-torturer/gtk-theme-torturer_git.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Gtk+ Theme Benchmark Program"
+DEPENDS = "gtk+"
+HOMEPAGE = "http://wiki.laptop.org/go/GTK_for_OLPC"
+SECTION = "devel"
+LICENSE = "GPL"
+
+PV = "0.0.0+git${SRCDATE}"
+
+SRC_URI = "git://dev.laptop.org/projects/soc-gtk/;protocol=git"
+S = "${WORKDIR}/git/gtk-theme-torturer"
+
+CFLAGS += "-Wl,-rpath-link,${STAGING_LIBDIR}"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 torturer ${D}${bindir}
+}
+
+
diff --git a/packages/gtk-webcore/files/build_silence.patch b/packages/gtk-webcore/files/build_silence.patch
new file mode 100644
index 0000000000..ac77e17aac
--- /dev/null
+++ b/packages/gtk-webcore/files/build_silence.patch
@@ -0,0 +1,16 @@
+Index: configure.in
+===================================================================
+--- configure.in (revision 46)
++++ configure.in (working copy)
+@@ -134,9 +134,9 @@
+ AC_SUBST(LIBCURL_LIBS) #needed by the osb-nrcore.pc.in
+
+
+-CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-rtti -nostdinc++"
++CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-rtti -nostdinc++ -DLOG_DISABLED"
+
+-CPPFLAGS="$CPPFLAGS -include \"\$(top_srcdir)/WebCorePrefix.h\" $PACKAGE_CFLAGS $X_CFLAGS $JSCORE_CFLAGS $DEFINES"
++CPPFLAGS="$CPPFLAGS -include \"\$(top_srcdir)/WebCorePrefix.h\" $PACKAGE_CFLAGS $X_CFLAGS $JSCORE_CFLAGS $DEFINES -DLOG_DISABLED"
+ LDFLAGS="$LDFLAGS $PACKAGE_LIBS $X_LIBS $JSCORE_LIBS \
+ -nodefaultlibs -lgcc -lc"
+
diff --git a/packages/gtk-webcore/osb-browser_svn.bb b/packages/gtk-webcore/osb-browser_svn.bb
new file mode 100644
index 0000000000..cbeebbcdc3
--- /dev/null
+++ b/packages/gtk-webcore/osb-browser_svn.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Gtk+ WebCore - reference browser"
+HOMEPAGE = "http://gtk-webcore.sourceforge.net/"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "osb-nrcit gtk+ glib-2.0 libglade"
+RRECOMMENDS = "gdk-pixbuf-loader-gif gdk-pixbuf-loader-ico gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-png"
+PV = "0.5.0+svn${SRCDATE}"
+PR = "r0"
+
+inherit autotools
+
+SRC_URI = "svn://gtk-webcore.svn.sourceforge.net/svnroot/gtk-webcore/trunk;module=osb-browser;proto=https"
+
+S = "${WORKDIR}/osb-browser"
+
+DEFAULT_PREFERENCE = "-1"
+
diff --git a/packages/gtk-webcore/osb-jscore_svn.bb b/packages/gtk-webcore/osb-jscore_svn.bb
new file mode 100644
index 0000000000..25e42cd85c
--- /dev/null
+++ b/packages/gtk-webcore/osb-jscore_svn.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "Gtk+ WebCore - JavaScriptCore"
+HOMEPAGE = "http://gtk-webcore.sourceforge.net/"
+LICENSE = "GPL"
+PRIORITY = "optional"
+
+DEFAULT_PREFERENCE = "-1"
+
+PV = "0.5.2+svn${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "svn://gtk-webcore.svn.sourceforge.net/svnroot/gtk-webcore/trunk;module=JavaScriptCore;proto=https \
+ file://gcc4-fno-threadsafe-statics-JavaScriptCore.patch;patch=1"
+
+S = "${WORKDIR}/JavaScriptCore"
+
+inherit autotools pkgconfig
+
+# zap CPPFLAGS to avoid trouble with internal vs. pcre from staging
+CPPFLAGS = ""
+
+do_configure () {
+ autotools_do_configure
+ cd ${S}
+
+ # prevent libtool from linking libs against libstdc++, libgcc, ...
+ cat ${TARGET_PREFIX}libtool | sed -e 's/postdeps=".*"/postdeps=""/' > ${TARGET_PREFIX}libtool.tmp
+ mv ${TARGET_PREFIX}libtool.tmp ${TARGET_PREFIX}libtool
+}
+
+do_stage () {
+ oe_libinstall -so -C kjs libjscore ${STAGING_LIBDIR}
+
+ autotools_stage_includes
+
+ install -d ${STAGING_INCDIR}/osb/JavaScriptCore
+ for i in ${S}/kjs/*.h ${S}/kjs/new; do
+ install -m 0644 $i ${STAGING_INCDIR}/osb/JavaScriptCore
+ install -d ${STAGING_INCDIR}/../share/osb-jscore
+ install -m 0755 ${S}/kjs/create_hash_table ${STAGING_INCDIR}/../share/osb-jscore
+ done
+}
diff --git a/packages/gtk-webcore/osb-nrcit_svn.bb b/packages/gtk-webcore/osb-nrcit_svn.bb
new file mode 100644
index 0000000000..e42bcd4445
--- /dev/null
+++ b/packages/gtk-webcore/osb-nrcit_svn.bb
@@ -0,0 +1,39 @@
+DESCRIPTION = "Gtk+ WebCore - NRCit embeddable browser component"
+HOMEPAGE = "http://gtk-webcore.sourceforge.net/"
+LICENSE = "nokia"
+PRIORITY = "optional"
+SECTION = "gpe"
+
+PV = "0.5.2+svn${SRCDATE}"
+PR = "r0"
+
+DEPENDS = "curl librsvg osb-nrcore pango"
+
+SRC_URI = "svn://gtk-webcore.svn.sourceforge.net/svnroot/gtk-webcore/trunk;module=NRCit;proto=https \
+ file://gcc4-fno-threadsafe-statics-NRCit.patch;patch=1"
+S = "${WORKDIR}/NRCit"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = " --enable-pango "
+
+do_configure () {
+ autotools_do_configure
+ cd ${S}
+
+ # prevent libtool from linking libs against libstdc++, libgcc, ...
+ cat ${TARGET_PREFIX}libtool | sed -e 's/postdeps=".*"/postdeps=""/' > ${TARGET_PREFIX}libtool.tmp
+ mv ${TARGET_PREFIX}libtool.tmp ${TARGET_PREFIX}libtool
+}
+
+do_stage () {
+ oe_libinstall -so -C src libnrcit ${STAGING_LIBDIR}
+
+ autotools_stage_includes
+
+ install -d ${STAGING_INCDIR}/osb
+ install -m 0644 ${S}/src/gtk/gtk-khtml.h ${STAGING_INCDIR}/osb
+ install -m 0644 ${S}/src/osb.h ${STAGING_INCDIR}/osb
+}
diff --git a/packages/gtk-webcore/osb-nrcore_svn.bb b/packages/gtk-webcore/osb-nrcore_svn.bb
new file mode 100644
index 0000000000..7959a7e752
--- /dev/null
+++ b/packages/gtk-webcore/osb-nrcore_svn.bb
@@ -0,0 +1,13 @@
+require osb-nrcore.inc
+
+DEFAULT_PREFERENCE = "-1"
+
+PV = "0.5.2+svn${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "svn://gtk-webcore.svn.sourceforge.net/svnroot/gtk-webcore/trunk;module=NRCore;proto=https \
+ file://gcc4-fno-threadsafe-statics-NRCore.patch;patch=1 \
+ file://build_silence.patch;patch=0;maxdate=20070401"
+
+S = "${WORKDIR}/NRCore"
+
diff --git a/packages/gtk2-ssh-askpass/gtk2-ssh-askpass_0.3.bb b/packages/gtk2-ssh-askpass/gtk2-ssh-askpass_0.3.bb
index 8c5efa8622..3c4eb9a530 100644
--- a/packages/gtk2-ssh-askpass/gtk2-ssh-askpass_0.3.bb
+++ b/packages/gtk2-ssh-askpass/gtk2-ssh-askpass_0.3.bb
@@ -5,7 +5,7 @@
DESCRIPTION="GTK2 ssh askpass utility"
HOMEPAGE="http://www.cgabriel.org/sw/gtk2-ssh-askpass/"
LICENSE = "GPL"
-SECTION = "net-misc"
+SECTION = "network/misc"
SRC_URI="http://src.gentoo.pl/distfiles/gtk2-ssh-askpass-${PV}.tar.gz \
file://makefile.patch;patch=1"
diff --git a/packages/gtkhtml/gtkhtml-3.8_3.8.2.bb b/packages/gtkhtml/gtkhtml-3.8_3.8.2.bb
new file mode 100644
index 0000000000..1db83609c2
--- /dev/null
+++ b/packages/gtkhtml/gtkhtml-3.8_3.8.2.bb
@@ -0,0 +1,18 @@
+LICENSE = "GPL"
+SECTION = "x11/libs"
+DESCRIPTION = "HTML rendering/editing library"
+DEPENDS = "gtk+ gail libbonoboui libgnomeprintui libgnomeui"
+
+inherit gnome
+
+SRC_URI = "${GNOME_MIRROR}/gtkhtml/3.8/gtkhtml-${PV}.tar.bz2"
+FILES_${PN} += "${datadir}/gtkhtml-3.8"
+S = "${WORKDIR}/gtkhtml-${PV}"
+
+EXTRA_OECONF = "--disable-gtk-doc"
+
+do_stage() {
+ mv src/libgtkhtml.pc src/libgtkhtml-3.8.pc || true
+ gnome_stage_includes
+ oe_libinstall -C src -so libgtkhtml-3.8 ${STAGING_LIBDIR}
+}
diff --git a/packages/gtkhtml2/gtkhtml2_cvs.bb b/packages/gtkhtml2/gtkhtml2_cvs.bb
index c44a7ee5f0..1f19550c90 100644
--- a/packages/gtkhtml2/gtkhtml2_cvs.bb
+++ b/packages/gtkhtml2/gtkhtml2_cvs.bb
@@ -2,10 +2,10 @@ SECTION = "libs"
DEPENDS = "gtk+ glib-2.0 libxml2"
DESCRIPTION = "A GTK+ HTML rendering library."
LICENSE = "GPL"
-PV = "2.11.0+cvs${SRCDATE}"
-PR = "r3"
+PV = "2.11.0+svn${SRCDATE}"
+PR = "r4"
-SRC_URI = "cvs://anonymous@anoncvs.gnome.org/cvs/gnome;module=gtkhtml2 \
+SRC_URI = "svn://anonymous@svn.gnome.org/svn/gtkhtml2/;module=trunk \
http://svn.o-hand.com/repos/web/trunk/patches/at-import_box-pos.patch;patch=1;pnum=0 \
http://svn.o-hand.com/repos/web/trunk/patches/css-stylesheet-user.patch;patch=1;pnum=0 \
http://svn.o-hand.com/repos/web/trunk/patches/css-media.patch;patch=1;pnum=0 \
@@ -13,7 +13,7 @@ SRC_URI = "cvs://anonymous@anoncvs.gnome.org/cvs/gnome;module=gtkhtml2 \
http://svn.o-hand.com/repos/web/trunk/patches/add-dom-functions.patch;patch=1;pnum=0 \
http://svn.o-hand.com/repos/web/trunk/patches/iain-mem-leak.patch;patch=1;pnum=0"
-S = "${WORKDIR}/${PN}"
+S = "${WORKDIR}/trunk"
inherit pkgconfig autotools
diff --git a/packages/hal/files/99_hal b/packages/hal/files/99_hal
new file mode 100644
index 0000000000..f983db9ee5
--- /dev/null
+++ b/packages/hal/files/99_hal
@@ -0,0 +1,2 @@
+d root root 0700 /var/run/hald none
+d root root 0700 /var/cache/hald none
diff --git a/packages/hal/hal-info_git.bb b/packages/hal/hal-info_git.bb
new file mode 100644
index 0000000000..597107fe2b
--- /dev/null
+++ b/packages/hal/hal-info_git.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Hardware Abstraction Layer device information"
+HOMEPAGE = "http://freedesktop.org/Software/hal"
+SECTION = "unknown"
+LICENSE = "GPL AFL"
+
+PV = "${SRCDATE}+git"
+PR = "r1"
+
+
+SRC_URI = "git://anongit.freedesktop.org/hal-info/;protocol=git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-recall --disable-video"
+
+
+PACKAGE_ARCH = "all"
+FILES_${PN} += "/usr/share/hal/"
diff --git a/packages/hal/hal_0.5.7.bb b/packages/hal/hal_0.5.7.bb
index c6ca7f75dc..5933676260 100644
--- a/packages/hal/hal_0.5.7.bb
+++ b/packages/hal/hal_0.5.7.bb
@@ -1,12 +1,11 @@
-SECTION = "unknown"
DESCRIPTION = "Hardware Abstraction Layer"
+HOMEPAGE = "http://freedesktop.org/Software/hal"
+SECTION = "unknown"
+LICENSE = "GPL LGPL AFL"
DEPENDS = "dbus expat libusb"
RDEPENDS += "hotplug"
#RDEPENDS_hal-device-manager = "python hal python-pygnome"
RRECOMMENDS = "udev-utils"
-HOMEPAGE = "http://freedesktop.org/Software/hal"
-LICENSE = "GPL LGPL AFL"
-PR = "r0"
SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz \
file://dbus-fix-api.patch;patch=1"
@@ -28,19 +27,19 @@ do_stage() {
}
#PACKAGES += "hal-device-manager"
-FILES_${PN} = "${sysconfdir} \
- ${bindir}/lshal \
- ${bindir}/hal-find-by-capability \
- ${bindir}/hal-find-by-property \
- ${bindir}/hal-device \
- ${bindir}/hal-get-property \
- ${bindir}/hal-set-property \
- ${sbindir} \
- ${libdir}/libhal.so* \
- ${libdir}/libhal-storage.so* \
- ${libexecdir} \
- ${datadir}/hal/fdi \
- ${datadir}/hal/scripts"
+FILES_${PN} = "${sysconfdir} \
+ ${bindir}/lshal \
+ ${bindir}/hal-find-by-capability \
+ ${bindir}/hal-find-by-property \
+ ${bindir}/hal-device \
+ ${bindir}/hal-get-property \
+ ${bindir}/hal-set-property \
+ ${sbindir} \
+ ${libdir}/libhal.so* \
+ ${libdir}/libhal-storage.so* \
+ ${libexecdir} \
+ ${datadir}/hal/fdi \
+ ${datadir}/hal/scripts"
#FILES_hal-device-manager = " \
# ${datadir}/hal/device-manager/ \
# ${bindir}/hal-device-manager"
diff --git a/packages/hal/hal_0.5.8.1.bb b/packages/hal/hal_0.5.8.1.bb
index 4b2196f875..f608c4018c 100644
--- a/packages/hal/hal_0.5.8.1.bb
+++ b/packages/hal/hal_0.5.8.1.bb
@@ -3,14 +3,15 @@ HOMEPAGE = "http://freedesktop.org/Software/hal"
SECTION = "unknown"
LICENSE = "GPL LGPL AFL"
-DEPENDS = "dbus-glib expat libusb"
+DEPENDS = "dbus-glib udev intltool expat libusb"
RDEPENDS += "udev"
#RDEPENDS_hal-device-manager = "python hal python-pygnome"
RRECOMMENDS = "udev-utils"
-PR = "r1"
+PR = "r2"
-SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz"
+SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz \
+ file://99_hal"
S = "${WORKDIR}/hal-${PV}"
@@ -24,6 +25,11 @@ EXTRA_OECONF = "--with-hwdata=${datadir}/hwdata \
--disable-policy-kit \
"
+do_install_append() {
+ install -d ${D}/etc/default/volatiles
+ install -m 0644 ${WORKDIR}/99_hal ${D}/etc/default/volatiles
+}
+
do_stage() {
autotools_stage_all
install -d ${STAGING_LIBDIR}
@@ -31,6 +37,30 @@ do_stage() {
install -m 755 libhal-storage/.libs/libhal-storage.so.1.0.0 ${STAGING_LIBDIR}/libhal-storage.so
}
+# At the time the postinst runs, dbus might not be setup so only restart if running
+pkg_postinst_hal () {
+ # can't do this offline
+ if [ "x$D" != "x" ]; then
+ exit 1
+ fi
+
+ /etc/init.d/populate-volatile.sh update
+
+ grep haldaemon /etc/group || addgroup haldaemon
+ grep haldaemon /etc/passwd || adduser --disabled-password --system --home /var/run/hald --no-create-home haldaemon --ingroup haldaemon -g HAL
+
+ DBUSPID=`pidof dbus-daemon`
+
+ if [ "x$DBUSPID" != "x" ]; then
+ /etc/init.d/dbus-1 force-reload
+ fi
+}
+
+pkg_postrm_hal () {
+ deluser haldaemon || true
+ delgroup haldaemon || true
+}
+
#PACKAGES += "hal-device-manager"
#FILES_hal-device-manager = " \
diff --git a/packages/hal/hal_0.5.9.bb b/packages/hal/hal_0.5.9.bb
new file mode 100644
index 0000000000..bb9dc82b52
--- /dev/null
+++ b/packages/hal/hal_0.5.9.bb
@@ -0,0 +1,94 @@
+DESCRIPTION = "Hardware Abstraction Layer"
+HOMEPAGE = "http://freedesktop.org/Software/hal"
+SECTION = "unknown"
+LICENSE = "GPL LGPL AFL"
+
+DEPENDS = "virtual/kernel dbus-glib udev intltool expat libusb"
+RDEPENDS += "udev hal-info"
+#RDEPENDS_hal-device-manager = "python hal python-pygnome"
+RRECOMMENDS = "udev-utils"
+
+PR = "r1"
+
+SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz \
+ file://99_hal"
+
+S = "${WORKDIR}/hal-${PV}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--with-hwdata=${datadir}/hwdata \
+ --with-expat=${STAGING_LIBDIR}/.. \
+ --with-dbus-sys=${sysconfdir}/dbus-1/system.d \
+ --with-hotplug=${sysconfdir}/hotplug.d \
+ --disable-docbook-docs \
+ --disable-policy-kit \
+ --disable-acpi --disable-pmu --disable-pci \
+ --disable-pci-ids --disable-pnp-ids \
+ "
+
+# work around autoconf >2.59 deps...
+do_configure() {
+ gnu-configize
+ libtoolize --force
+ oe_runconf
+}
+
+do_install_append() {
+ install -d ${D}/etc/default/volatiles
+ install -m 0644 ${WORKDIR}/99_hal ${D}/etc/default/volatiles
+}
+
+do_stage() {
+ autotools_stage_all
+ install -d ${STAGING_LIBDIR}
+ install -m 755 libhal/.libs/libhal.so.1.0.0 ${STAGING_LIBDIR}/libhal.so
+ install -m 755 libhal-storage/.libs/libhal-storage.so.1.0.0 ${STAGING_LIBDIR}/libhal-storage.so
+}
+
+# At the time the postinst runs, dbus might not be setup so only restart if running
+pkg_postinst_hal () {
+ # can't do this offline
+ if [ "x$D" != "x" ]; then
+ exit 1
+ fi
+
+ /etc/init.d/populate-volatile.sh update
+
+ grep haldaemon /etc/group || addgroup haldaemon
+ grep haldaemon /etc/passwd || adduser --disabled-password --system --home /var/run/hald --no-create-home haldaemon --ingroup haldaemon -g HAL
+
+ DBUSPID=`pidof dbus-daemon`
+
+ if [ "x$DBUSPID" != "x" ]; then
+ /etc/init.d/dbus-1 force-reload
+ fi
+}
+
+pkg_postrm_hal () {
+ deluser haldaemon || true
+ delgroup haldaemon || true
+}
+
+#PACKAGES += "hal-device-manager"
+
+#FILES_hal-device-manager = " \
+# ${datadir}/hal/device-manager/ \
+# ${bindir}/hal-device-manager"
+
+FILES_${PN} = "${sysconfdir} \
+ ${bindir}/lshal \
+ ${bindir}/hal-find-by-capability \
+ ${bindir}/hal-find-by-property \
+ ${bindir}/hal-device \
+ ${bindir}/hal-get-property \
+ ${bindir}/hal-set-property \
+ ${bindir}/hal-lock \
+ ${bindir}/hal-is-caller-locked-out \
+ ${sbindir} \
+ ${libdir}/libhal.so.* \
+ ${libdir}/libhal-storage.so.* \
+ ${libdir}/hal \
+ ${libexecdir} \
+ ${datadir}/hal/fdi \
+ ${datadir}/hal/scripts"
diff --git a/packages/haserl/.mtn2git_empty b/packages/haserl/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/haserl/.mtn2git_empty
diff --git a/packages/haserl/haserl_0.8.0.bb b/packages/haserl/haserl_0.8.0.bb
new file mode 100644
index 0000000000..ba10060c9c
--- /dev/null
+++ b/packages/haserl/haserl_0.8.0.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "A cgi wrapper for embedding shell scripts into html documents"
+SECTION = "console/network"
+DEPENDS = ""
+PR = "r0"
+LICENSE = "GPL"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.gz"
+
+inherit autotools gettext
diff --git a/packages/hdparm/hdparm-6.9/.mtn2git_empty b/packages/hdparm/hdparm-6.9/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/hdparm/hdparm-6.9/.mtn2git_empty
diff --git a/packages/hdparm/hdparm-6.9/bswap.patch b/packages/hdparm/hdparm-6.9/bswap.patch
new file mode 100644
index 0000000000..3281c33954
--- /dev/null
+++ b/packages/hdparm/hdparm-6.9/bswap.patch
@@ -0,0 +1,39 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+Index: hdparm-6.9/hdparm.c
+===================================================================
+--- hdparm-6.9.orig/hdparm.c 2006-10-25 16:41:33.000000000 +0200
++++ hdparm-6.9/hdparm.c 2007-03-05 14:02:03.000000000 +0100
+@@ -19,8 +19,9 @@
+ #include <linux/types.h>
+ #include <linux/hdreg.h>
+ #include <linux/major.h>
+-#include <asm/byteorder.h>
+-//#include <endian.h>
++#include <byteswap.h>
++
++#define le16_to_cpus(x) bswap_16(htons(x))
+
+ #include "hdparm.h"
+
+@@ -1328,7 +1329,7 @@
+ }
+ } else {
+ for(i = 0; i < 0x100; ++i) {
+- __le16_to_cpus(&id[i]);
++ le16_to_cpus(&id[i]);
+ }
+ identify((void *)id);
+ }
+@@ -1608,7 +1609,7 @@
+ && ishex(d[++digit] = getchar())
+ && ishex(d[++digit] = getchar())) {
+ sbuf[wc] = (fromhex(d[0]) << 12) | (fromhex(d[1]) << 8) | (fromhex(d[2]) << 4) | fromhex(d[3]);
+- __le16_to_cpus((__u16 *)(&sbuf[wc]));
++ le16_to_cpus((__u16 *)(&sbuf[wc]));
+ ++wc;
+ } else if (d[digit] == EOF) {
+ goto eof;
diff --git a/packages/hdparm/hdparm-6.9/uclibc.patch b/packages/hdparm/hdparm-6.9/uclibc.patch
new file mode 100644
index 0000000000..0758aa07b8
--- /dev/null
+++ b/packages/hdparm/hdparm-6.9/uclibc.patch
@@ -0,0 +1,35 @@
+Index: hdparm-6.9/hdparm.c
+===================================================================
+--- hdparm-6.9.orig/hdparm.c 2007-03-05 14:02:03.000000000 +0100
++++ hdparm-6.9/hdparm.c 2007-03-05 14:02:23.000000000 +0100
+@@ -16,7 +16,9 @@
+ #include <sys/times.h>
+ #include <sys/types.h>
+ #include <sys/mount.h>
++#ifndef __UCLIBC__
+ #include <linux/types.h>
++#endif
+ #include <linux/hdreg.h>
+ #include <linux/major.h>
+ #include <byteswap.h>
+Index: hdparm-6.9/hdparm.h
+===================================================================
+--- hdparm-6.9.orig/hdparm.h 2006-04-28 16:33:01.000000000 +0200
++++ hdparm-6.9/hdparm.h 2007-03-05 14:03:10.000000000 +0100
+@@ -1,6 +1,6 @@
+ /* Some prototypes for extern functions. */
+
+-#include <linux/types.h> /* for __u16 */
++#include <stdint.h>
+
+ #if !defined(__GNUC__) && !defined(__attribute__)
+ #define __attribute__(x) /* if not using GCC, turn off the __attribute__
+@@ -11,7 +11,7 @@
+ others, though, were declared in hdparm.c with global scope; since other
+ functions in that file have static (file) scope, I assume the difference is
+ intentional. */
+-extern void identify (__u16 *id_supplied);
++extern void identify (uint16_t *id_supplied);
+
+ extern void usage_error(int out) __attribute__((noreturn));
+ extern int main(int argc, char **argv) __attribute__((noreturn));
diff --git a/packages/hdparm/hdparm_6.9.bb b/packages/hdparm/hdparm_6.9.bb
new file mode 100644
index 0000000000..94d1e6e9bf
--- /dev/null
+++ b/packages/hdparm/hdparm_6.9.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "hdparm is a Linux shell utility for viewing \
+and manipulating various IDE drive and driver parameters."
+SECTION = "console/utils"
+PRIORITY = "optional"
+LICENSE = "BSD"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/hdparm/hdparm-${PV}.tar.gz \
+ file://bswap.patch;patch=1 \
+ file://uclibc.patch;patch=1"
+
+do_install () {
+ install -d ${D}/${sbindir} ${D}/${mandir}/man8
+ oe_runmake 'DESTDIR=${D}' install
+}
diff --git a/packages/hfsplusutils/.mtn2git_empty b/packages/hfsplusutils/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/hfsplusutils/.mtn2git_empty
diff --git a/packages/hfsplusutils/hfsplusutils-1.0.4-4/.mtn2git_empty b/packages/hfsplusutils/hfsplusutils-1.0.4-4/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/hfsplusutils/hfsplusutils-1.0.4-4/.mtn2git_empty
diff --git a/packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-errno.patch b/packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-errno.patch
new file mode 100644
index 0000000000..c9caeb4208
--- /dev/null
+++ b/packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-errno.patch
@@ -0,0 +1,19 @@
+diff -ruN hfsplus.orig/src/hpmkdir.c hfsplus-1.0.4/src/hpmkdir.c
+--- hfsplus.orig/src/hpmkdir.c 2003-03-30 20:09:59.000000000 +0200
++++ hfsplus-1.0.4/src/hpmkdir.c 2003-03-30 20:11:15.000000000 +0200
+@@ -46,8 +46,9 @@
+ # include <string.h>
+ # include <time.h>
+ # include <ctype.h>
+-# include <errno.h>
+ */
++# include <errno.h>
++
+ # include <stdio.h>
+ # include <stdlib.h>
+
+@@ -164,3 +165,4 @@
+ hfsputil_perrorp(argv0);
+ return -1;
+ }
++
diff --git a/packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-gcc4.patch b/packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-gcc4.patch
new file mode 100644
index 0000000000..04724440dd
--- /dev/null
+++ b/packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-gcc4.patch
@@ -0,0 +1,132 @@
+--- hfsplus-1.0.4/libhfsp/src/btree.c~ 2002-03-05 19:50:28.000000000 +0000
++++ hfsplus-1.0.4/libhfsp/src/btree.c 2005-04-30 12:48:48.000000000 +0100
+@@ -393,7 +393,7 @@ static int btree_init(btree* bt, volume*
+ {
+ p = volume_readfromfork(vol, nodebuf, fork, 0, bt->blkpernode,
+ HFSP_EXTENT_DATA, bt->cnid);
+- ((char*) p) += HEADER_RESERVEDOFFSET; // skip header
++ p += HEADER_RESERVEDOFFSET; // skip header
+ }
+
+ bt->alloc_bits = malloc(alloc_size);
+--- hfsplus-1.0.4/libhfsp/src/swab.h~ 2002-03-05 19:50:29.000000000 +0000
++++ hfsplus-1.0.4/libhfsp/src/swab.h 2005-04-30 12:48:05.000000000 +0100
+@@ -36,28 +36,28 @@
+
+ #define bswabU16(val) bswap_16(val)
+
+-#define bswabU16_inc(ptr) bswap_16(*((UInt16*) (ptr))++)
+-#define bswabU32_inc(ptr) bswap_32(*((UInt32*) (ptr))++)
+-#define bswabU64_inc(ptr) bswap_64(*((UInt64*) (ptr))++)
+-
+-#define bstoreU16_inc(ptr, val) (*((UInt16*) (ptr))++) = bswap_16(val)
+-#define bstoreU32_inc(ptr, val) (*((UInt32*) (ptr))++) = bswap_32(val)
+-#define bstoreU64_inc(ptr, val) (*((UInt64*) (ptr))++) = bswap_64(val)
++#define bswabU16_inc(ptr) bswap_16(*(*((UInt16**) (void *)(&ptr)))++)
++#define bswabU32_inc(ptr) bswap_32(*(*((UInt32**) (void *)(&ptr)))++)
++#define bswabU64_inc(ptr) bswap_64(*(*((UInt64**) (void *)(&ptr)))++)
++
++#define bstoreU16_inc(ptr, val) (*(*((UInt16**) (void *)(&ptr)))++) = bswap_16(val)
++#define bstoreU32_inc(ptr, val) (*(*((UInt32**) (void *)(&ptr)))++) = bswap_32(val)
++#define bstoreU64_inc(ptr, val) (*(*((UInt64**) (void *)(&ptr)))++) = bswap_64(val)
+
+ #else // BYTE_ORDER == BIG_ENDIAN
+
+ #define bswabU16(val) val
+
+-#define bswabU16_inc(ptr) (*((UInt16*) (ptr))++)
+-#define bswabU32_inc(ptr) (*((UInt32*) (ptr))++)
+-#define bswabU64_inc(ptr) (*((UInt64*) (ptr))++)
+-
+-#define bstoreU16_inc(ptr, val) (*((UInt16*) (ptr))++) = val
+-#define bstoreU32_inc(ptr, val) (*((UInt32*) (ptr))++) = val
+-#define bstoreU64_inc(ptr, val) (*((UInt64*) (ptr))++) = val
++#define bswabU16_inc(ptr) (*(*((UInt16**) (void *)(&ptr)))++)
++#define bswabU32_inc(ptr) (*(*((UInt32**) (void *)(&ptr)))++)
++#define bswabU64_inc(ptr) (*(*((UInt64**) (void *)(&ptr)))++)
++
++#define bstoreU16_inc(ptr, val) (*(*((UInt16**) (void *)(&ptr)))++) = val
++#define bstoreU32_inc(ptr, val) (*(*((UInt32**) (void *)(&ptr)))++) = val
++#define bstoreU64_inc(ptr, val) (*(*((UInt64**) (void *)(&ptr)))++) = val
+
+ #endif
+
+ /* for the sake of compleetness and readability */
+-#define bswabU8_inc(ptr) (*((UInt8*) (ptr))++)
+-#define bstoreU8_inc(ptr,val) (*((UInt8*) (ptr))++) = val
++#define bswabU8_inc(ptr) (*(*((UInt8**) (void *)(&ptr)))++)
++#define bstoreU8_inc(ptr,val) (*(*((UInt8**) (void *)(&ptr)))++) = val
+--- hfsplus-1.0.4/libhfsp/src/btreecheck.c~ 2002-03-05 19:50:29.000000000 +0000
++++ hfsplus-1.0.4/libhfsp/src/btreecheck.c 2005-04-30 12:49:22.000000000 +0100
+@@ -264,7 +264,7 @@ static int fscheck_btree_init(btree* bt,
+ {
+ p = volume_readfromfork(vol, nodebuf, fork, 0, bt->blkpernode,
+ HFSP_EXTENT_DATA, bt->cnid);
+- ((char*) p) += HEADER_RESERVEDOFFSET; // skip header
++ p += HEADER_RESERVEDOFFSET; // skip header
+ }
+
+ bt->alloc_bits = malloc(alloc_size);
+--- hfsplus-1.0.4/libhfsp/src/fscheck.c~ 2002-03-25 15:48:37.000000000 +0000
++++ hfsplus-1.0.4/libhfsp/src/fscheck.c 2005-04-30 12:50:26.000000000 +0100
+@@ -230,7 +230,7 @@ static int fscheck_volume_readbuf(volume
+ vh->write_count = bswabU32_inc(p);
+ vh->encodings_bmp = bswabU64_inc(p);
+ memcpy(vh->finder_info, p, 32);
+- ((char*) p) += 32; // So finderinfo must be swapped later, ***
++ p += 32; // So finderinfo must be swapped later, ***
+ p = volume_readfork(p, &vh->alloc_file );
+ p = volume_readfork(p, &vh->ext_file );
+ p = volume_readfork(p, &vh->cat_file );
+@@ -277,12 +277,12 @@ static int fscheck_read_wrapper(volume *
+ printf("Volume is wrapped in HFS volume "
+ " (use hfsck to check this)\n");
+
+- ((char*) p) += 0x12; /* skip unneded HFS vol fields */
++ p += 0x12; /* skip unneded HFS vol fields */
+ drAlBlkSiz = bswabU32_inc(p); /* offset 0x14 */
+- ((char*) p) += 0x4; /* skip unneded HFS vol fields */
++ p += 0x4; /* skip unneded HFS vol fields */
+ drAlBlSt = bswabU16_inc(p); /* offset 0x1C */
+
+- ((char*) p) += 0x5E; /* skip unneded HFS vol fields */
++ p += 0x5E; /* skip unneded HFS vol fields */
+ signature = bswabU16_inc(p); /* offset 0x7C, drEmbedSigWord */
+ if (signature != HFSP_VOLHEAD_SIG)
+ HFSP_ERROR(-1, "This looks like a normal HFS volume");
+--- hfsplus-1.0.4/libhfsp/src/volume.c~ 2002-03-26 18:00:29.000000000 +0000
++++ hfsplus-1.0.4/libhfsp/src/volume.c 2005-04-30 12:51:41.000000000 +0100
+@@ -345,7 +345,7 @@ static int volume_readbuf(hfsp_vh* vh, v
+ vh->write_count = bswabU32_inc(p);
+ vh->encodings_bmp = bswabU64_inc(p);
+ memcpy(vh->finder_info, p, 32);
+- ((char*) p) += 32; // finderinfo is not used by now
++ p += 32; // finderinfo is not used by now
+ p = volume_readfork(p, &vh->alloc_file );
+ p = volume_readfork(p, &vh->ext_file );
+ p = volume_readfork(p, &vh->cat_file );
+@@ -381,7 +381,7 @@ static int volume_writebuf(hfsp_vh* vh,
+ bstoreU32_inc(p, vh->write_count );
+ bstoreU64_inc(p, vh->encodings_bmp );
+ memcpy(p, vh->finder_info, 32);
+- ((char*) p) += 32; // finderinfo is not used by now
++ p += 32; // finderinfo is not used by now
+ p = volume_writefork(p, &vh->alloc_file );
+ p = volume_writefork(p, &vh->ext_file );
+ p = volume_writefork(p, &vh->cat_file );
+@@ -417,12 +417,12 @@ static int volume_read_wrapper(volume *
+
+ UInt16 embeds, embedl; /* Start/lenght of embedded area in blocks */
+
+- ((char*) p) += 0x12; /* skip unneeded HFS vol fields */
++ p += 0x12; /* skip unneeded HFS vol fields */
+ drAlBlkSiz = bswabU32_inc(p); /* offset 0x14 */
+- ((char*) p) += 0x4; /* skip unneeded HFS vol fields */
++ p += 0x4; /* skip unneeded HFS vol fields */
+ drAlBlSt = bswabU16_inc(p); /* offset 0x1C */
+
+- ((char*) p) += 0x5E; /* skip unneeded HFS vol fields */
++ p += 0x5E; /* skip unneeded HFS vol fields */
+ signature = bswabU16_inc(p); /* offset 0x7C, drEmbedSigWord */
+ if (signature != HFSP_VOLHEAD_SIG)
+ HFSP_ERROR(-1, "This looks like a normal HFS volume");
diff --git a/packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-glob.patch b/packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-glob.patch
new file mode 100644
index 0000000000..5b0333e642
--- /dev/null
+++ b/packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-glob.patch
@@ -0,0 +1,12 @@
+--- hfsplus-1.0.4/src/glob.c.orig 2002-10-09 08:02:31.000000000 -0500
++++ hfsplus-1.0.4/src/glob.c 2002-10-09 08:02:46.000000000 -0500
+@@ -48,7 +48,7 @@
+
+ switch (*pat)
+ {
+- case NULL: // pattern at end
++ case '\0': // pattern at end
+ return (!*str); // String at end ?
+
+ case '*': // match all
+
diff --git a/packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-string.patch b/packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-string.patch
new file mode 100644
index 0000000000..5eaf32806a
--- /dev/null
+++ b/packages/hfsplusutils/hfsplusutils-1.0.4-4/hfsplusutils-1.0.4-string.patch
@@ -0,0 +1,11 @@
+--- hfsplus-1.0.4/libhfsp/src/unicode.c.bak 2007-01-08 17:14:44.000000000 -0500
++++ hfsplus-1.0.4/libhfsp/src/unicode.c 2007-01-08 17:14:52.000000000 -0500
+@@ -16,7 +16,7 @@
+ #include <stdlib.h>
+ #include <endian.h>
+ #include <byteswap.h>
+-#include <linux/string.h>
++#include <string.h>
+
+ #define __USE_GNU
+ /* need wcsrtomb */
diff --git a/packages/hfsplusutils/hfsplusutils_1.0.4-4.bb b/packages/hfsplusutils/hfsplusutils_1.0.4-4.bb
new file mode 100644
index 0000000000..43037573f4
--- /dev/null
+++ b/packages/hfsplusutils/hfsplusutils_1.0.4-4.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "HFS plus file system utilities"
+SECTION = "base"
+LICENSE = "GPL"
+PR = "r1"
+
+S="${WORKDIR}/${P}"
+
+inherit kernel-arch autotools pkgconfig
+
+DEPENDS = " rpm2cpio-native"
+
+SRC_URI = "http://penguinppc.org/historical/hfsplus/hfsplusutils-1.0.4-4.src.rpm \
+ file://hfsplusutils-1.0.4-errno.patch;patch=1 \
+ file://hfsplusutils-1.0.4-gcc4.patch;patch=1 \
+ file://hfsplusutils-1.0.4-glob.patch;patch=1 \
+ file://hfsplusutils-1.0.4-string.patch;patch=1 \
+ "
+
+do_unpack() {
+ if ! test -f hfsplus.tz2 ; then
+ rpm2cpio.pl ${DL_DIR}/${P}.src.rpm | cpio -i --make-directories
+ bunzip2 hfsplus.tz2
+ tar -xf hfsplus.tz2.out
+ mv hfsplus ${P}
+ fi
+}
diff --git a/packages/hfsutils/.mtn2git_empty b/packages/hfsutils/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/hfsutils/.mtn2git_empty
diff --git a/packages/hfsutils/hfsutils-3.2.6/.mtn2git_empty b/packages/hfsutils/hfsutils-3.2.6/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/hfsutils/hfsutils-3.2.6/.mtn2git_empty
diff --git a/packages/hfsutils/hfsutils-3.2.6/hfsutils-3.2.6-errno.patch b/packages/hfsutils/hfsutils-3.2.6/hfsutils-3.2.6-errno.patch
new file mode 100644
index 0000000000..6e25f794b2
--- /dev/null
+++ b/packages/hfsutils/hfsutils-3.2.6/hfsutils-3.2.6-errno.patch
@@ -0,0 +1,13 @@
+diff -ruN hfsutils.orig/tclhfs.c hfsutils-3.2.6/tclhfs.c
+--- hfsutils.orig/tclhfs.c 2003-03-31 17:34:55.000000000 +0200
++++ hfsutils-3.2.6/tclhfs.c 2003-03-31 17:39:51.000000000 +0200
+@@ -43,8 +43,7 @@
+ # include "charset.h"
+ # include "suid.h"
+ # include "version.h"
+-
+-extern int errno;
++# include <errno.h>
+
+ # define ERROR(code, str) (hfs_error = (str), errno = (code))
+
diff --git a/packages/hfsutils/hfsutils-3.2.6/largerthan2gb.patch b/packages/hfsutils/hfsutils-3.2.6/largerthan2gb.patch
new file mode 100644
index 0000000000..423256b67d
--- /dev/null
+++ b/packages/hfsutils/hfsutils-3.2.6/largerthan2gb.patch
@@ -0,0 +1,15 @@
+diff -ruN hfsutils.orig/libhfs/os/unix.c hfsutils-3.2.6/libhfs/os/unix.c
+--- hfsutils.orig/libhfs/os/unix.c 1998-11-02 23:09:13.000000000 +0000
++++ hfsutils-3.2.6/libhfs/os/unix.c 2007-02-27 15:44:21.023442553 +0000
+@@ -19,6 +19,11 @@
+ * $Id: largerthan2gb.patch,v 1.1 2005/02/05 21:20:43 hansmi Exp $
+ */
+
++#ifdef __linux__
++#define _FILE_OFFSET_BITS 64
++#define _LARGE_FILES
++#endif
++
+ # ifdef HAVE_CONFIG_H
+ # include "config.h"
+ # endif
diff --git a/packages/hfsutils/hfsutils_3.2.6.bb b/packages/hfsutils/hfsutils_3.2.6.bb
new file mode 100644
index 0000000000..5292ac386c
--- /dev/null
+++ b/packages/hfsutils/hfsutils_3.2.6.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "HFS file system utilities"
+SECTION = "base"
+LICENSE = "GPL"
+PR = "r2"
+
+inherit autotools pkgconfig
+
+SRC_URI = "ftp://ftp.mars.org/pub/hfs/hfsutils-3.2.6.tar.gz \
+ file://hfsutils-3.2.6-errno.patch;patch=1 \
+ file://largerthan2gb.patch;patch=1 \
+ "
+
+do_configure () {
+ oe_runconf --disable-x
+}
+
+do_compile () {
+ oe_runmake
+ cd hfsck; oe_runmake
+}
+
+do_install () {
+ install -d ${D}/${bindir}
+ install -m 755 hfsutil ${D}/${bindir}/hfsutil
+ install -m 755 hfsck/hfsck ${D}/${bindir}/hfsck
+
+ for util in hattrib hcd hcopy hdel hdir hformat \
+ his hmkdir hmount hpwd hrename hrmdir \
+ humount hvol; do
+ ln -sf hfsutil ${D}/${bindir}/${util}
+ done
+}
diff --git a/packages/hostap/hostap-daemon.inc b/packages/hostap/hostap-daemon.inc
index 08a6dba1f7..f723d07575 100644
--- a/packages/hostap/hostap-daemon.inc
+++ b/packages/hostap/hostap-daemon.inc
@@ -3,7 +3,7 @@ HOMEPAGE = "http://hostap.epitest.fi"
SECTION = "kernel/userland"
PRIORITY = "optional"
LICENSE = "GPL"
-RDEPENDS = "hostap-modules hostap-utils (${PV})"
+RDEPENDS = "hostap-utils (${PV})"
DEPENDS = "openssl"
DEPENDS_append_mtx-1 = " madwifi-modules"
DEPENDS_append_mtx-2 = " madwifi-modules"
diff --git a/packages/hostap/hostap-daemon/init b/packages/hostap/hostap-daemon/init
index b0736c0baa..ed4c9de1a9 100644
--- a/packages/hostap/hostap-daemon/init
+++ b/packages/hostap/hostap-daemon/init
@@ -1,6 +1,6 @@
#!/bin/sh
DAEMON=/usr/sbin/hostapd
-NAME=httpd
+NAME=hostapd
DESC="HOSTAP Daemon"
ARGS="/etc/hostapd.conf"
diff --git a/packages/hostap/hostap-daemon_0.3.7.bb b/packages/hostap/hostap-daemon_0.3.7.bb
index a211dd0759..bece7d1450 100644
--- a/packages/hostap/hostap-daemon_0.3.7.bb
+++ b/packages/hostap/hostap-daemon_0.3.7.bb
@@ -1,3 +1,3 @@
require hostap-daemon.inc
-PR = "r1"
+PR = "r2"
diff --git a/packages/hostap/hostap-daemon_0.4.4.bb b/packages/hostap/hostap-daemon_0.4.4.bb
index a211dd0759..bece7d1450 100644
--- a/packages/hostap/hostap-daemon_0.4.4.bb
+++ b/packages/hostap/hostap-daemon_0.4.4.bb
@@ -1,3 +1,3 @@
require hostap-daemon.inc
-PR = "r1"
+PR = "r2"
diff --git a/packages/hostap/hostap-daemon_0.4.8.bb b/packages/hostap/hostap-daemon_0.4.8.bb
index 4ef749c407..de3abdbea5 100644
--- a/packages/hostap/hostap-daemon_0.4.8.bb
+++ b/packages/hostap/hostap-daemon_0.4.8.bb
@@ -1,3 +1,5 @@
require hostap-daemon.inc
+PR = "r1"
+
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/hostap/hostap-daemon_0.5.1.bb b/packages/hostap/hostap-daemon_0.5.1.bb
index 4ef749c407..de3abdbea5 100644
--- a/packages/hostap/hostap-daemon_0.5.1.bb
+++ b/packages/hostap/hostap-daemon_0.5.1.bb
@@ -1,3 +1,5 @@
require hostap-daemon.inc
+PR = "r1"
+
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/hwdata/.mtn2git_empty b/packages/hwdata/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/hwdata/.mtn2git_empty
diff --git a/packages/hwdata/hwdata_0.191.bb b/packages/hwdata/hwdata_0.191.bb
new file mode 100644
index 0000000000..2dfe1433bf
--- /dev/null
+++ b/packages/hwdata/hwdata_0.191.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "This package contains various hardware identification and configuration data, such as the pci.ids database, or the XFree86/xorg Cards database. It's needed for the kudzu hardware detection."
+LICENSE = "GPL + X11"
+
+SRC_URI = "http://archive.ubuntu.com/ubuntu/pool/main/h/hwdata/hwdata_0.191.orig.tar.gz \
+ http://archive.ubuntu.com/ubuntu/pool/main/h/hwdata/hwdata_0.191-1.diff.gz;patch=1 \
+ "
+
+PACKAGE_ARCH = "all"
+
+
+do_install() {
+ mkdir -p ${D}${datadir}/hwdata
+ install -m644 MonitorsDB pci* usb.ids video* upgradelist ${D}${datadir}/hwdata
+}
diff --git a/packages/id3lib/id3lib_3.8.3.bb b/packages/id3lib/id3lib_3.8.3.bb
index d63106230a..76134bc6fd 100644
--- a/packages/id3lib/id3lib_3.8.3.bb
+++ b/packages/id3lib/id3lib_3.8.3.bb
@@ -1,19 +1,15 @@
DESCRIPTION = "Library for interacting with ID3 tags."
-SECTION = "libs"
+SECTION = "libs/multimedia"
PRIORITY = "optional"
DEPENDS = "zlib"
-DESCRIPTION = "Library for interacting with ID3 tags."
LICENSE = "GPL"
+PR = "r1"
inherit autotools
SRC_URI = "${SOURCEFORGE_MIRROR}/id3lib/id3lib-${PV}.tar.gz"
S = "${WORKDIR}/id3lib-${PV}"
-do_configure() {
- oe_runconf
-}
-
do_stage() {
oe_libinstall -a -so -C src libid3 ${STAGING_LIBDIR}
install -m 0644 include/id3.h ${STAGING_INCDIR}
diff --git a/packages/ifplugd/files/.mtn2git_empty b/packages/ifplugd/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ifplugd/files/.mtn2git_empty
diff --git a/packages/ifplugd/files/kernel-types.patch b/packages/ifplugd/files/kernel-types.patch
new file mode 100644
index 0000000000..ad630ab5d4
--- /dev/null
+++ b/packages/ifplugd/files/kernel-types.patch
@@ -0,0 +1,10 @@
+--- ifplugd-0.25/src/interface.c-orig 2007-04-18 14:57:33.106790279 +0200
++++ ifplugd-0.25/src/interface.c 2007-04-18 14:57:42.591211214 +0200
+@@ -18,6 +18,7 @@
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
++#define __KERNEL_STRICT_NAMES
+ #include <linux/sockios.h>
+ #include <linux/if_ether.h>
+ #include <sys/types.h>
diff --git a/packages/ifplugd/ifplugd_0.25.bb b/packages/ifplugd/ifplugd_0.25.bb
index 192520822a..55c2be0ced 100644
--- a/packages/ifplugd/ifplugd_0.25.bb
+++ b/packages/ifplugd/ifplugd_0.25.bb
@@ -6,6 +6,8 @@ LICENSE = "GPL"
SRC_URI = "http://0pointer.de/lennart/projects/ifplugd/ifplugd-${PV}.tar.gz"
+SRC_URI_append_nylon = " file://kernel-types.patch;patch=1"
+
inherit autotools update-rc.d pkgconfig
EXTRA_OECONF = "--disable-lynx"
diff --git a/packages/ifupdown/ifupdown-0.6.4/gcc34-fix.patch b/packages/ifupdown/ifupdown-0.6.4/gcc34-fix.patch
deleted file mode 100644
index f90e312694..0000000000
--- a/packages/ifupdown/ifupdown-0.6.4/gcc34-fix.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- ifupdown-0.6.4/execute.c~gcc34-fix 2004-04-28 00:16:45.000000000 +0200
-+++ ifupdown-0.6.4/execute.c 2004-04-28 00:17:11.000000000 +0200
-@@ -167,7 +167,7 @@
- case 0: /* child */
- execle("/bin/sh", "/bin/sh", "-c", str, NULL, environ);
- exit(127);
-- default: /* parent */
-+ default:; /* parent */
- }
- waitpid(child, &status, 0);
- if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) \ No newline at end of file
diff --git a/packages/ifupdown/ifupdown-0.6.4/udhcpc.patch b/packages/ifupdown/ifupdown-0.6.4/udhcpc.patch
deleted file mode 100644
index 39a6b3349d..0000000000
--- a/packages/ifupdown/ifupdown-0.6.4/udhcpc.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- ifupdown/inet.defn.orig 2004-04-29 20:16:07.000000000 +0200
-+++ ifupdown/inet.defn 2004-04-29 20:16:13.000000000 +0200
-@@ -81,8 +81,7 @@
- elsif (execable("/sbin/dhclient"))
- pump -i %iface% [[-h %hostname%]] [[-l %leasehours%]] \
- elsif (execable("/sbin/pump") && mylinuxver() >= mylinux(2,1,100))
-- udhcpc -n -p /var/run/udhcpc.%iface%.pid -i %iface% [[-H %hostname%]] \
-- [[-c %clientid%]] \
-+ udhcpc -b -p /var/run/udhcpc.%iface%.pid -i %iface% -H `cat /etc/hostname` \
- elsif (execable("/sbin/udhcpc") && mylinuxver() >= mylinux(2,2,0))
- dhcpcd [[-h %hostname%]] [[-i %vendor%]] [[-I %clientid%]] \
- [[-l %leasetime%]] %iface% \
-@@ -91,11 +90,11 @@
- down
- dhclient3 -r -pf /var/run/dhclient.%iface%.pid -lf /var/run/dhclient.%iface%.leases %iface% \
- if (execable("/sbin/dhclient3"))
-- cat /var/run/dhclient.%iface%.pid | xargs -i kill -TERM {} \
-+ kill -TERM `cat /var/run/dhclient.%iface%.pid` \
- elsif (execable("/sbin/dhclient"))
- pump -i %iface% -r \
- elsif (execable("/sbin/pump") && mylinuxver() >= mylinux(2,1,100))
-- cat /var/run/udhcpc.%iface%.pid | xargs -i kill -TERM {} \
-+ kill -TERM `cat /var/run/udhcpc.%iface%.pid` \
- elsif (execable("/sbin/udhcpc"))
- dhcpcd -k %iface% \
- elsif (execable("/sbin/dhcpcd")) \ No newline at end of file
diff --git a/packages/ifupdown/ifupdown-0.6.8/.mtn2git_empty b/packages/ifupdown/ifupdown-0.6.8/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ifupdown/ifupdown-0.6.8/.mtn2git_empty
diff --git a/packages/ifupdown/ifupdown-0.6.4/busybox.patch b/packages/ifupdown/ifupdown-0.6.8/busybox.patch
index 5619ab7c0a..5619ab7c0a 100644
--- a/packages/ifupdown/ifupdown-0.6.4/busybox.patch
+++ b/packages/ifupdown/ifupdown-0.6.8/busybox.patch
diff --git a/packages/ifupdown/ifupdown-0.6.4/head-tail.patch b/packages/ifupdown/ifupdown-0.6.8/head-tail.patch
index a86a25d2fb..a86a25d2fb 100644
--- a/packages/ifupdown/ifupdown-0.6.4/head-tail.patch
+++ b/packages/ifupdown/ifupdown-0.6.8/head-tail.patch
diff --git a/packages/ifupdown/ifupdown-0.6.4/init b/packages/ifupdown/ifupdown-0.6.8/init
index d258d51ff4..d258d51ff4 100644
--- a/packages/ifupdown/ifupdown-0.6.4/init
+++ b/packages/ifupdown/ifupdown-0.6.8/init
diff --git a/packages/ifupdown/ifupdown-0.6.4/interfaces b/packages/ifupdown/ifupdown-0.6.8/interfaces
index f1bd92ed2b..f1bd92ed2b 100644
--- a/packages/ifupdown/ifupdown-0.6.4/interfaces
+++ b/packages/ifupdown/ifupdown-0.6.8/interfaces
diff --git a/packages/ifupdown/ifupdown-0.6.8/udhcpc.patch b/packages/ifupdown/ifupdown-0.6.8/udhcpc.patch
new file mode 100644
index 0000000000..5b662e7988
--- /dev/null
+++ b/packages/ifupdown/ifupdown-0.6.8/udhcpc.patch
@@ -0,0 +1,28 @@
+Index: ifupdown-0.6.8/inet.defn
+===================================================================
+--- ifupdown-0.6.8.orig/inet.defn 2007-01-04 09:11:43.000000000 +0100
++++ ifupdown-0.6.8/inet.defn 2007-01-04 09:12:51.000000000 +0100
+@@ -81,8 +81,7 @@
+ elsif (execable("/sbin/dhclient"))
+ pump -i %iface% [[-h %hostname%]] [[-l %leasehours%]] \
+ elsif (execable("/sbin/pump") && mylinuxver() >= mylinux(2,1,100))
+- udhcpc -n -p /var/run/udhcpc.%iface%.pid -i %iface% [[-H %hostname%]] \
+- [[-c %client%]] \
++ udhcpc -b -p /var/run/udhcpc.%iface%.pid -i %iface% -H `cat /etc/hostname` \
+ elsif (execable("/sbin/udhcpc") && mylinuxver() >= mylinux(2,2,0))
+ dhcpcd [[-h %hostname%]] [[-i %vendor%]] [[-I %client%]] \
+ [[-l %leasetime%]] %iface% \
+@@ -91,11 +90,11 @@
+ down
+ dhclient3 -r -pf /var/run/dhclient.%iface%.pid -lf /var/lib/dhcp3/dhclient.%iface%.leases %iface% \
+ if (execable("/sbin/dhclient3"))
+- cat /var/run/dhclient.%iface%.pid | xargs -i kill -TERM {} \
++ kill -TERM `cat /var/run/dhclient.%iface%.pid` \
+ elsif (execable("/sbin/dhclient"))
+ pump -i %iface% -r \
+ elsif (execable("/sbin/pump") && mylinuxver() >= mylinux(2,1,100))
+- cat /var/run/udhcpc.%iface%.pid | xargs -i kill -TERM {} \
++ kill -TERM `cat /var/run/udhcpc.%iface%.pid` \
+ elsif (execable("/sbin/udhcpc"))
+ dhcpcd -k %iface% \
+ elsif (execable("/sbin/dhcpcd"))
diff --git a/packages/ifupdown/ifupdown-0.6.4/zeroconf.patch b/packages/ifupdown/ifupdown-0.6.8/zeroconf.patch
index 33745db6ff..33745db6ff 100644
--- a/packages/ifupdown/ifupdown-0.6.4/zeroconf.patch
+++ b/packages/ifupdown/ifupdown-0.6.8/zeroconf.patch
diff --git a/packages/ifupdown/ifupdown_0.6.4.bb b/packages/ifupdown/ifupdown_0.6.4.bb
deleted file mode 100644
index bf0c82634f..0000000000
--- a/packages/ifupdown/ifupdown_0.6.4.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-BROKEN = "1"
-# Debian moved to 0.6.7
-
-DESCRIPTION = "High level tools to configure network interfaces \
-This package provides the tools ifup and ifdown which may be used to \
-configure (or, respectively, deconfigure) network interfaces, based on \
-the file /etc/network/interfaces."
-LICENSE = "GPL"
-
-SECTION = "base"
-
-SRC_URI = "${DEBIAN_MIRROR}/main/i/ifupdown/ifupdown_${PV}.orig.tar.gz \
- ${DEBIAN_MIRROR}/main/i/ifupdown/ifupdown_${PV}-4.8.diff.gz;patch=1 \
- file://busybox.patch;patch=1 \
- file://udhcpc.patch;patch=1 \
- file://zeroconf.patch;patch=1 \
- file://gcc34-fix.patch;patch=1 \
- file://init \
- file://interfaces"
-
-EXTRA_OEMAKE = ""
-
-do_compile () {
- chmod a+rx *.pl *.sh
- oe_runmake 'CC=${CC}' "CFLAGS=${CFLAGS} -Wall -W -D'IFUPDOWN_VERSION=\"${PV}\"'"
-}
-
-do_install () {
- install -d ${D}${sysconfdir}/init.d \
- ${D}${sysconfdir}/network \
- ${D}${base_sbindir}
- install -m 0755 ifup ${D}${base_sbindir}/
- ln ${D}${base_sbindir}/ifup ${D}${base_sbindir}/ifdown
- install -m 0644 ${WORKDIR}/init ${D}${sysconfdir}/init.d/networking
- install -m 0644 ${WORKDIR}/interfaces ${D}${sysconfdir}/network/interfaces
-}
diff --git a/packages/ifupdown/ifupdown_0.6.8.bb b/packages/ifupdown/ifupdown_0.6.8.bb
new file mode 100644
index 0000000000..53ccb5fe6c
--- /dev/null
+++ b/packages/ifupdown/ifupdown_0.6.8.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "High level tools to configure network interfaces \
+This package provides the tools ifup and ifdown which may be used to \
+configure (or, respectively, deconfigure) network interfaces, based on \
+the file /etc/network/interfaces."
+LICENSE = "GPL"
+
+SECTION = "base"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/i/ifupdown/ifupdown_${PV}.tar.gz \
+ file://busybox.patch;patch=1 \
+ file://udhcpc.patch;patch=1 \
+ file://zeroconf.patch;patch=1 \
+ file://init \
+ file://interfaces"
+
+EXTRA_OEMAKE = ""
+
+do_compile () {
+ chmod a+rx *.pl *.sh
+ oe_runmake 'CC=${CC}' "CFLAGS=${CFLAGS} -Wall -W -D'IFUPDOWN_VERSION=\"${PV}\"'"
+}
+
+do_install () {
+ install -d ${D}${sysconfdir}/init.d \
+ ${D}${sysconfdir}/network \
+ ${D}${mandir}/man8 \
+ ${D}${mandir}/man5 \
+ ${D}${base_sbindir}
+ install -m 0755 ifup ${D}${base_sbindir}/
+ ln ${D}${base_sbindir}/ifup ${D}${base_sbindir}/ifdown
+ install -m 0644 ${WORKDIR}/init ${D}${sysconfdir}/init.d/networking
+ install -m 0644 ${WORKDIR}/interfaces ${D}${sysconfdir}/network/interfaces
+ install -m 0644 ifup.8 ${D}${mandir}/man8
+ install -m 0644 interfaces.5 ${D}${mandir}/man5
+ cd ${D}${mandir}/man8 && ln -s ifup.8 ifdown.8
+}
diff --git a/packages/images/angstrom-minimal-image.bb b/packages/images/angstrom-minimal-image.bb
new file mode 100644
index 0000000000..90f46a1e01
--- /dev/null
+++ b/packages/images/angstrom-minimal-image.bb
@@ -0,0 +1,22 @@
+#Angstrom minimalist image
+#gives you a small images with ssh access
+LICENSE = "MIT"
+PR = "r0"
+
+ANGSTROM_EXTRA_INSTALL ?= ""
+DISTRO_SSH_DAEMON ?= "dropbear"
+
+DEPENDS = "task-base \
+ ${DISTRO_SSH_DAEMON} \
+ "
+
+RDEPENDS = "task-boot \
+ ${DISTRO_SSH_DAEMON} \
+ "
+
+export IMAGE_BASENAME = "minimalist-image"
+export IMAGE_LINGUAS = ""
+export PACKAGE_INSTALL = "${RDEPENDS}"
+
+inherit image
+
diff --git a/packages/images/bootstrap-image.bb b/packages/images/bootstrap-image.bb
index 1ff60e60e1..f25ad222aa 100644
--- a/packages/images/bootstrap-image.bb
+++ b/packages/images/bootstrap-image.bb
@@ -6,7 +6,4 @@ DEPENDS = "${MACHINE_TASK_PROVIDER}"
inherit image
-FEED_URIS_append_familiar = " x11##http://familiar.handhelds.org/releases/${DISTRO_VERSION}/feed/x11 \
- opie##http://familiar.handhelds.org/releases/${DISTRO_VERSION}/feed/opie"
-
LICENSE = "MIT"
diff --git a/packages/images/essential-image.bb b/packages/images/essential-image.bb
index 9544b82ead..21078790b7 100644
--- a/packages/images/essential-image.bb
+++ b/packages/images/essential-image.bb
@@ -1,6 +1,6 @@
#
# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+# License: MIT (see COPYING.MIT)
#
# Filename: essential-image.bb
# Date: 23-Apr-06
diff --git a/packages/images/essential-machine-image.bb b/packages/images/essential-machine-image.bb
index 70ce1e119a..f82f1833dc 100644
--- a/packages/images/essential-machine-image.bb
+++ b/packages/images/essential-machine-image.bb
@@ -1,6 +1,6 @@
#
# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+# License: MIT (see COPYING.MIT)
#
# Filename: essential-machine-image.bb
# Date: 24-Apr-06
diff --git a/packages/images/gpe-image.bb b/packages/images/gpe-image.bb
index b448c0a9b1..552384c9e6 100644
--- a/packages/images/gpe-image.bb
+++ b/packages/images/gpe-image.bb
@@ -1,4 +1,3 @@
-FEED_URIS_append_familiar = " x11##http://familiar.handhelds.org/releases/${DISTRO_VERSION}/feed/x11"
PR = "r20"
diff --git a/packages/images/gpephone-image-vm.bb b/packages/images/gpephone-image-vm.bb
new file mode 100644
index 0000000000..a058361f27
--- /dev/null
+++ b/packages/images/gpephone-image-vm.bb
@@ -0,0 +1,42 @@
+PR = "r0"
+
+export IMAGE_BASENAME = "gpephone-image-vm"
+
+GPE_EXTRA_THEMES = ""
+
+GPE_EXTRA_INSTALL_none = ""
+GPE_EXTRA_INSTALL_x86 = "grub xserver-kdrive-xephyr xoo-vm xoo-theme-gpephone"
+GPE_EXTRA_INSTALL_bigscreen = "${GPE_EXTRA_THEMES}"
+GPE_EXTRA_INSTALL_smallscreen = "${GPE_EXTRA_THEMES}"
+
+GUI_MACHINE_CLASS ?= "none"
+GPE_EXTRA_INSTALL += "${GPE_EXTRA_INSTALL_${GUI_MACHINE_CLASS}}"
+
+#ship more stuff with devices with >16MB of flash
+GPE_BIGFLASH_INSTALL := '${@base_conditional("ROOT_FLASH_SIZE", "16", "", "\
+",d)}'
+
+GPE_EXTRA_INSTALL += "${GPE_BIGFLASH_INSTALL}"
+
+XSERVER ?= "xserver-kdrive-fbdev"
+
+DEPENDS = "${MACHINE_TASK_PROVIDER} task-gpephone"
+RDEPENDS = "${PACKAGE_INSTALL}"
+
+export PACKAGE_INSTALL = "\
+ ${MACHINE_TASK_PROVIDER} \
+ gpephone-task-base \
+ gpephone-task-pim \
+ gpephone-task-settings \
+ gpephone-task-development \
+ gpephone-task-apps \
+ gpephone-task-connectivity \
+ ${XSERVER} \
+ ${GPE_EXTRA_INSTALL}"
+
+inherit image
+
+ROOTFS_POSTPROCESS_COMMAND += "set_image_autologin; "
+
+
+LICENSE = "MIT"
diff --git a/packages/images/gpephone-image.bb b/packages/images/gpephone-image.bb
new file mode 100644
index 0000000000..e9735f19c4
--- /dev/null
+++ b/packages/images/gpephone-image.bb
@@ -0,0 +1,42 @@
+PR = "r0"
+
+export IMAGE_BASENAME = "gpephone-image"
+
+GPE_EXTRA_THEMES = ""
+
+GPE_EXTRA_INSTALL_none = ""
+GPE_EXTRA_INSTALL_x86 = "grub"
+GPE_EXTRA_INSTALL_bigscreen = "${GPE_EXTRA_THEMES}"
+GPE_EXTRA_INSTALL_smallscreen = "${GPE_EXTRA_THEMES}"
+
+GUI_MACHINE_CLASS ?= "none"
+GPE_EXTRA_INSTALL += "${GPE_EXTRA_INSTALL_${GUI_MACHINE_CLASS}}"
+
+#ship more stuff with devices with >16MB of flash
+GPE_BIGFLASH_INSTALL := '${@base_conditional("ROOT_FLASH_SIZE", "16", "", "\
+",d)}'
+
+GPE_EXTRA_INSTALL += "${GPE_BIGFLASH_INSTALL}"
+
+XSERVER ?= "xserver-kdrive-fbdev"
+
+DEPENDS = "${MACHINE_TASK_PROVIDER} task-gpephone"
+RDEPENDS = "${PACKAGE_INSTALL}"
+
+export PACKAGE_INSTALL = "\
+ ${MACHINE_TASK_PROVIDER} \
+ gpephone-task-base \
+ gpephone-task-pim \
+ gpephone-task-settings \
+ gpephone-task-development \
+ gpephone-task-apps \
+ gpephone-task-connectivity \
+ ${XSERVER} \
+ ${GPE_EXTRA_INSTALL}"
+
+
+inherit image
+
+ROOTFS_POSTPROCESS_COMMAND += "set_image_autologin; "
+
+LICENSE = "MIT"
diff --git a/packages/images/maemo-image.bb b/packages/images/maemo-image.bb
index 2153e427c1..f8f5cb5c9d 100644
--- a/packages/images/maemo-image.bb
+++ b/packages/images/maemo-image.bb
@@ -2,8 +2,6 @@
# Meta package for maemo based system image
#
-FEED_URIS_append_familiar = " maemo##http://familiar.handhelds.org/releases/${DISTRO_VERSION}/feed/maemo"
-
PR = "r2"
export IMAGE_BASENAME = "maemo-image"
diff --git a/packages/images/nylon-image-base.bb b/packages/images/nylon-image-base.bb
index 120cff5822..8cd71194b4 100644
--- a/packages/images/nylon-image-base.bb
+++ b/packages/images/nylon-image-base.bb
@@ -3,13 +3,13 @@ inherit nylon-image
LICENSE = "MIT"
export IMAGE_BASENAME = "nylon-base"
-
+
NYLON_BASE = "base-files base-passwd bash busybox \
ipkg initscripts less \
mtd-utils \
nano ncurses netbase \
openssh sysvinit \
- timezones tinylogin"
+ timezones tinylogin udev"
DEPENDS += "virtual/kernel less nano"
RDEPENDS = "kernel less nano elvis-tiny \
@@ -20,6 +20,7 @@ RDEPENDS_append_mtx-1 = " modutils modutils-initscripts modutils-depmod modutils
RDEPENDS_append_mtx-2 = " modutils modutils-initscripts modutils-depmod modutils-modinfo"
## kernel 2.6 ##
RDEPENDS_append_mtx-3 = " module-init-tools udev"
+RDEPENDS_append_mtx-3a = " module-init-tools"
export PACKAGE_INSTALL = "${RDEPENDS}"
diff --git a/packages/images/nylon-image-mini.bb b/packages/images/nylon-image-mini.bb
index e6acd1f2dc..c0ed998449 100644
--- a/packages/images/nylon-image-mini.bb
+++ b/packages/images/nylon-image-mini.bb
@@ -1,5 +1,8 @@
export IMAGE_BASENAME = "nylon-mini"
+inherit image
+LICENSE = "MIT"
+
NYLON_BASE = "base-files base-passwd busybox \
dropbear \
miniinit \
@@ -8,12 +11,9 @@ NYLON_BASE = "base-files base-passwd busybox \
netbase \
wireless-tools"
-RDEPENDS = "kernel \
+RDEPENDS += "kernel \
${NYLON_BASE} ${BOOTSTRAP_EXTRA_RDEPENDS}"
export PACKAGE_INSTALL = "${RDEPENDS}"
IMAGE_LINGUAS = ""
-
-inherit image
-LICENSE = "MIT"
diff --git a/packages/images/nylon-image-standard.bb b/packages/images/nylon-image-standard.bb
index 29e29cd1eb..ca5f987dfe 100644
--- a/packages/images/nylon-image-standard.bb
+++ b/packages/images/nylon-image-standard.bb
@@ -3,26 +3,18 @@ require nylon-image-base.bb
export IMAGE_BASENAME = "nylon-standard"
NYLON_STANDARD = "\
- bridge-utils \
- dnsmasq \
hostap-utils \
- hostap-daemon \
linux-hotplug \
- ifplugd iproute2 iptables \
- madwifi-modules \
- nylon-scripts \
+ ifplugd \
olsrd \
- ppp pciutils \
+ ppp \
rp-pppoe \
shorewall \
tcpdump \
- usbutils \
- wireless-tools \
- wpa-supplicant \
- yamonenv"
+ wpa-supplicant"
DEPENDS += "hostap-modules ntp \
${NYLON_STANDARD}"
-RDEPENDS += "hostap-modules-pci ntpdate nano elvis-tiny \
+RDEPENDS += "hostap-modules-pci ntpdate less nano elvis-tiny \
${NYLON_STANDARD}"
diff --git a/packages/images/openmoko-devel-image.bb b/packages/images/openmoko-devel-image.bb
new file mode 100644
index 0000000000..56890b5c34
--- /dev/null
+++ b/packages/images/openmoko-devel-image.bb
@@ -0,0 +1,7 @@
+require openmoko-image.bb
+
+export PACKAGE_INSTALL += "\
+ task-openmoko-demo \
+ task-openmoko-debug \
+ task-openmoko-examples \
+"
diff --git a/packages/images/openmoko-image.bb b/packages/images/openmoko-image.bb
new file mode 100644
index 0000000000..632963076c
--- /dev/null
+++ b/packages/images/openmoko-image.bb
@@ -0,0 +1,29 @@
+#------------------------------------------------------
+# OpenMoko Image Recipe
+#------------------------------------------------------
+
+export IMAGE_BASENAME = "${PN}"
+export IMAGE_LINGUAS = ""
+
+export PACKAGE_INSTALL = "\
+ ${MACHINE_TASK_PROVIDER} \
+ task-openmoko-linux \
+ task-openmoko-net \
+ task-openmoko-ui \
+ task-openmoko-base \
+ task-openmoko-phone \
+ task-openmoko-finger \
+ task-openmoko-pim \
+ task-openmoko-demo \
+ "
+
+DEPENDS = "\
+ ${MACHINE_TASK_PROVIDER} \
+ task-openmoko \
+"
+
+RDEPENDS = "${PACKAGE_INSTALL}"
+
+inherit image
+
+LICENSE = MIT
diff --git a/packages/images/openmoko-sdk-image.bb b/packages/images/openmoko-sdk-image.bb
new file mode 100644
index 0000000000..53586166eb
--- /dev/null
+++ b/packages/images/openmoko-sdk-image.bb
@@ -0,0 +1,5 @@
+require openmoko-devel-image.bb
+
+export PACKAGE_INSTALL += "\
+ task-openmoko-native-sdk \
+"
diff --git a/packages/images/openprotium-image.bb b/packages/images/openprotium-image.bb
index faec2664ca..25d38cf1c3 100644
--- a/packages/images/openprotium-image.bb
+++ b/packages/images/openprotium-image.bb
@@ -4,8 +4,6 @@ LICENSE = "MIT"
PR = "r0"
DEPENDS = "${MACHINE_TASK_PROVIDER}"
-# SLUGOS_IMAGENAME defines the name of the image to be build, if it
-# is not set this package will be skipped!
EXTRA_IMAGECMD_jffs2 = "--pad --big-endian --eraseblock=0x10000 -D ${SLUGOS_DEVICE_TABLE}"
IMAGE_LINGUAS = ""
@@ -85,7 +83,7 @@ RDEPENDS = " \
kernel base-files base-passwd netbase \
busybox initscripts-openprotium openprotium-init \
update-modules sysvinit tinylogin \
- module-init-tools modutils-initscripts \
+ module-init-tools-depmod modutils-initscripts \
ipkg-collateral ipkg ipkg-link \
libgcc1 \
portmap \
@@ -94,11 +92,6 @@ RDEPENDS = " \
mdadm \
hdparm \
mtd-utils \
- sccd \
- util-linux-mount \
- util-linux-umount \
- util-linux-swaponoff \
- util-linux-losetup \
${OPENPROTIUM_SUPPORT} \
${OPENPROTIUM_KERNEL} "
# ${SLUGOS_EXTRA_RDEPENDS}"
diff --git a/packages/images/opie-image.bb b/packages/images/opie-image.bb
index 3613ccafde..cd8d7df654 100644
--- a/packages/images/opie-image.bb
+++ b/packages/images/opie-image.bb
@@ -2,7 +2,7 @@ export IMAGE_BASENAME = "opie-image"
export IMAGE_LINGUAS = ""
LICENSE = "MIT"
-PR = "r21"
+PR = "r22"
DEPENDS = "${MACHINE_TASK_PROVIDER} task-opie"
RDEPENDS = "${INSTALL_PACKAGES}"
@@ -14,9 +14,6 @@ INSTALL_PACKAGES = "${MACHINE_TASK_PROVIDER} task-opie-base task-opie-base-apple
task-opie-extra-settings \
task-opie-bluetooth task-opie-irda "
-INSTALL_PACKAGES_spitz_append = "task-opie-extra-games task-opie-extra-apps task-opie-extra-styles"
-INSTALL_PACKAGES_akita_append = "task-opie-extra-games task-opie-extra-apps task-opie-extra-styles"
-
export PACKAGE_INSTALL = "${INSTALL_PACKAGES}"
# merge feed-sources into ipkg.conf for opie-aqpkg as it can't handle feed-sources outside of ipkg.conf.
diff --git a/packages/images/pivotboot-image.bb b/packages/images/pivotboot-image.bb
index 78c3d7a6e9..529e4cdb83 100644
--- a/packages/images/pivotboot-image.bb
+++ b/packages/images/pivotboot-image.bb
@@ -7,7 +7,4 @@ PR = "r1"
inherit image
-FEED_URIS_append_familiar = " x11##http://familiar.handhelds.org/releases/${DISTRO_VERSION}/feed/x11 \
- opie##http://familiar.handhelds.org/releases/${DISTRO_VERSION}/feed/opie"
-
LICENSE = "MIT"
diff --git a/packages/images/sectest-gpe-image.bb b/packages/images/sectest-gpe-image.bb
index fa16437662..a56991b902 100644
--- a/packages/images/sectest-gpe-image.bb
+++ b/packages/images/sectest-gpe-image.bb
@@ -1,8 +1,6 @@
LICENSE = "MIT"
PR = "r6"
-FEED_URIS_append_familiar = " x11##http://familiar.handhelds.org/releases/${DISTRO_VERSION}/feed/x11"
-
export IMAGE_BASENAME = "sectest-gpe-image"
GPE_EXTRA_THEMES = "\
diff --git a/packages/images/slugos-image.bb b/packages/images/slugos-image.bb
index cf7d580928..d78528d700 100644
--- a/packages/images/slugos-image.bb
+++ b/packages/images/slugos-image.bb
@@ -6,16 +6,16 @@
DESCRIPTION = "Generic SlugOS image"
HOMEPAGE = "http://www.nslu2-linux.org"
LICENSE = "MIT"
-PR = "r43"
+PR = "r46"
+
+DEPENDS = "task-slugos"
+PACKAGE_INSTALL = "task-slugos"
COMPATIBLE_MACHINE = "nslu2"
-# SLUGOS_IMAGENAME defines the name of the image to be build, if it
-# is not set this package will be skipped!
-IMAGE_BASENAME = "${SLUGOS_IMAGENAME}"
-IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DISTRO_VERSION}"
+IMAGE_NAME = "${IMAGE_BASENAME}-${DISTRO_VERSION}"
IMAGE_FSTYPES = "jffs2"
-EXTRA_IMAGECMD_jffs2 = "--pad --${SLUGOS_IMAGESEX} --eraseblock=0x20000 -D ${SLUGOS_DEVICE_TABLE}"
+EXTRA_IMAGECMD_jffs2 += " -D ${SLUGOS_DEVICE_TABLE}"
IMAGE_LINGUAS = ""
# Setting USE_DEVFS prevents *any* entries being created initially
@@ -34,141 +34,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;"
-# Building a full image. If required do a post-process command which builds
-# the full flash image using slugimage. At present this only works for NSLU2 images.
-PACK_IMAGE = ""
-IMAGE_POSTPROCESS_COMMAND += "${PACK_IMAGE}"
-PACK_IMAGE_DEPENDS = ""
-EXTRA_IMAGEDEPENDS += "${PACK_IMAGE_DEPENDS}"
-
-# This hack removes '${MACHINE}' from the end of the arch.conf for ipk,
-# preventing _mach.ipk (with no byte sex) taking precedence over everything
-# else.
-ROOTFS_POSTPROCESS_COMMAND += "sed -i '$d' '${IMAGE_ROOTFS}/etc/ipkg/arch.conf';"
-
-# These depends define native utilities - they do not get put in the flash and
-# are not required to build the image.
-IMAGE_TOOLS = ""
-EXTRA_IMAGEDEPENDS += "${IMAGE_TOOLS}"
-
-# CONFIG:
-# SLUGOS_EXTRA_RDEPENDS: set in conf, things to add to the image
-# SLUGOS_SUPPORT: set here, see below, added to the image.
-# SLUGOS_KERNEL: set here, kernel modules added to the image
-#
-# Do not override the last two unless you really know what you
-# are doing - there is more information below.
-
-# diff, cpio and find are required for reflash and turnup ram.
-# Removing these probably leaves the system bootable, but standard
-# openslug and ucslugc stuff won't work, so only take these out in
-# very non-standard turnkey slugos builds.
-#
-# udev is the default way of handling devices, there is no guarantee
-# that the static device table is completely correct (it is just
-# known to be sufficient for boot.)
-SLUGOS_SUPPORT ?= "diffutils cpio findutils udev"
-
-SLUGOS_KERNEL ?= ""
-
-SLUGOS_EXTRA_RDEPENDS ?= ""
-
-RDEPENDS = "kernel ixp4xx-npe \
- base-files base-passwd netbase \
- busybox initscripts-slugos slugos-init \
- update-modules sysvinit tinylogin \
- module-init-tools modutils-initscripts \
- ipkg-collateral ipkg ipkg-link \
- portmap \
- dropbear \
- beep \
- e2fsprogs-blkid \
- util-linux-mount \
- util-linux-umount \
- util-linux-swaponoff \
- util-linux-losetup \
- ${SLUGOS_SUPPORT} \
- ${SLUGOS_KERNEL} \
- ${SLUGOS_EXTRA_RDEPENDS}"
-
-PACKAGE_INSTALL = "${RDEPENDS}"
-
-inherit image
-
-python () {
- # Don't build slugos images unless the configuration is set up
- # for an image build!
- if bb.data.getVar("SLUGOS_IMAGENAME", d, 1) == '' or bb.data.getVar("SLUGOS_IMAGESEX", d, 1) == '':
- raise bb.parse.SkipPackage("absent or broken SlugOS configuration")
-}
-
-#--------------------------------------------------------------------------------
-# NSLU2 specific
-#
-#NOTE: you do not actually need the boot loader in normal use because it is
-# *not* overwritten by a standard upslug upgrade, so you can make an image with
-# just non-LinkSys software which can be flashed into the NSLU2. Because
-# LinkSys have made "EraseAll" available, however, (this does overwrite RedBoot)
-# it is a bad idea to produce flash images without a valid RedBoot - that allows
-# an innocent user upgrade attempt to instantly brick the NSLU2.
-PACK_IMAGE += "${@['', 'slugos_pack_image;'][bb.data.getVar('SLUGOS_FLASH_IMAGE', d, 1) == '1']}"
-PACK_IMAGE_DEPENDS += "${@['', 'slugimage-native nslu2-linksys-firmware apex ixp4xx-npe'][bb.data.getVar('SLUGOS_FLASH_IMAGE', d, 1) == '1']}"
-
-NSLU2_SLUGIMAGE_ARGS ?= ""
-
-slugos_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 \
- ${DEPLOY_DIR_IMAGE}/slug/
- install -m 0644 ${STAGING_LOADER_DIR}/apex.bin ${DEPLOY_DIR_IMAGE}/slug/
- install -m 0644 ${DEPLOY_DIR_IMAGE}/zImage-nslu2${ARCH_BYTE_SEX} \
- ${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 -L apex.bin -k vmlinuz \
- -r Flashdisk:flashdisk.jffs2 -m NPE-B -t Trailer \
- -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-nslu2.bin \
- ${NSLU2_SLUGIMAGE_ARGS}
- rm -rf ${DEPLOY_DIR_IMAGE}/slug
-
- # Create an image for the DSM-G600 as well
- install -d ${DEPLOY_DIR_IMAGE}/firmupgrade
- install -m 0755 ${DEPLOY_DIR_IMAGE}/zImage-dsmg600${ARCH_BYTE_SEX} \
- ${DEPLOY_DIR_IMAGE}/firmupgrade/ip-ramdisk
- install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
- ${DEPLOY_DIR_IMAGE}/firmupgrade/rootfs.gz
- touch ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs
- chmod 0644 ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs
- echo "hwid=1.0.1" >${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
- echo "model=dsm-g600" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
- echo "vendor=dlink" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
- echo "" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
- chmod 0744 ${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
- tar -c -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-dsmg600.bin \
- -C ${DEPLOY_DIR_IMAGE} firmupgrade
- rm -rf ${DEPLOY_DIR_IMAGE}/firmupgrade
-
- # Create an image for the NAS 100d as well
- install -d ${DEPLOY_DIR_IMAGE}/firmupgrade
- install -m 0755 ${DEPLOY_DIR_IMAGE}/zImage-nas100d${ARCH_BYTE_SEX} \
- ${DEPLOY_DIR_IMAGE}/firmupgrade/ip-ramdisk
- install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
- ${DEPLOY_DIR_IMAGE}/firmupgrade/rootfs.gz
- touch ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs
- chmod 0644 ${DEPLOY_DIR_IMAGE}/firmupgrade/usr.cramfs
- echo "hwid=1.0.1" >${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
- echo "model=koala" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
- echo "vendor=iomega" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
- echo "" >>${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
- chmod 0744 ${DEPLOY_DIR_IMAGE}/firmupgrade/version.msg
- tar -c -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-nas100d.bin \
- -C ${DEPLOY_DIR_IMAGE} firmupgrade
- rm -rf ${DEPLOY_DIR_IMAGE}/firmupgrade
-}
-
-# upslug2 (in tmp/work/upslug2-native-*) is the program to write the NSLU2 flash
-IMAGE_TOOLS_nslu2 = "upslug2-native"
+inherit image nslu2-image dsmg600-image nas100d-image
diff --git a/packages/images/slugos-imagename.bb b/packages/images/slugos-imagename.bb
deleted file mode 100644
index 61629d44af..0000000000
--- a/packages/images/slugos-imagename.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-# This is an inglorious hack to provide a package to match
-# ${SLUGOS_IMAGENAME}-image
-LICENSE = "MIT"
-PN = "${SLUGOS_IMAGENAME}-image"
-PV = "0"
-PR = "r0"
-DEPENDS = "slugos-image"
-PACKAGES = ""
-INHIBIT_DEFAULT_DEPS = "1"
-
-SLUGOS_IMAGENAME ?= "slugos"
-COMPATIBLE_MACHINE = "nslu2"
-
-do_fetch() {
-}
-do_unpack() {
-}
-do_patch() {
-}
-do_configure() {
-}
-do_compile() {
-}
-do_install() {
-}
-do_stage() {
-}
-do_build() {
-}
diff --git a/packages/images/unslung-image.bb b/packages/images/unslung-image.bb
index b56f007523..a24271a9d6 100644
--- a/packages/images/unslung-image.bb
+++ b/packages/images/unslung-image.bb
@@ -1,5 +1,5 @@
LICENSE = "MIT"
-PR = "r25"
+PR = "r26"
COMPATIBLE_MACHINE = "nslu2"
IMAGE_BASENAME = "unslung"
@@ -12,17 +12,11 @@ DEPENDS = "virtual/kernel \
${UNSLUNG_EXTRA_DEPENDS}"
RDEPENDS = "kernel update-modules unslung-rootfs \
- libc6-unslung slingbox ipkg \
- libipkg \
-# cpio \
-# findutils \
+ libc6-unslung slingbox ipkg libipkg \
${UNSLUNG_EXTRA_RDEPENDS}"
PACKAGE_INSTALL = "kernel update-modules unslung-rootfs \
- libc6-unslung slingbox ipkg \
- libipkg \
-# cpio \
-# findutils \
+ libc6-unslung slingbox ipkg libipkg \
kernel-module-netconsole \
${UNSLUNG_EXTRA_INSTALL}"
@@ -76,27 +70,6 @@ unslung_clean_image () {
${STRIP} ${IMAGE_ROOTFS}/lib/libgcc_s.so.1
chmod ugo+x ${IMAGE_ROOTFS}/lib/libgcc_s.so.1
-# MJW - experimental right now, but no longer need cpio and find
- # We need cpio and find, but we don't need any of the other stuff in
- # the packages (users can install the full package with ipkg after
- # unsling). Remove the extra files and executables, and clean up
- # the entries from the ipkg database manually.
-
- #-- these are for cpio:
-# rm -f ${IMAGE_ROOTFS}/usr/bin/mt
-# rm -rf ${IMAGE_ROOTFS}/usr/libexec
-# rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/cpio.*
-# rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/alternatives/rmt
-# sed -i -e '/^Package: cpio/,/^$/d' ${IMAGE_ROOTFS}${libdir}/ipkg/status
-
- #-- and these for find:
-# rm -f ${IMAGE_ROOTFS}/usr/bin/locate
-# rm -f ${IMAGE_ROOTFS}/usr/bin/updatedb
-# rm -f ${IMAGE_ROOTFS}/usr/bin/xargs
-# rm -f ${IMAGE_ROOTFS}/usr/bin/xargs.findutils
-# rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/findutils.*
-# sed -i -e '/^Package: findutils/,/^$/d' ${IMAGE_ROOTFS}${libdir}/ipkg/status
-
# FIXME: change made 24 Jul 2006 by the OE folks changes the "strip"
# behavior to create an extra file named .debug/<filename> containing
# the stripped symbols. These files are supposed to be packaged
diff --git a/packages/images/xfce-image.bb b/packages/images/xfce-image.bb
index 42b0907b2b..d5d48233a7 100644
--- a/packages/images/xfce-image.bb
+++ b/packages/images/xfce-image.bb
@@ -2,8 +2,10 @@ export IMAGE_BASENAME = "xfce-image"
IMAGE_LINGUAS = ""
+XSERVER ?= "xserver-kdrive-fbdev"
+
X_DEPENDS = "virtual/xserver"
-X_RDEPENDS = "xserver-kdrive-fbdev"
+X_RDEPENDS = "${XSERVER}"
XFCE_DEPENDS = "${MACHINE_TASK_PROVIDER} task-xfce-base"
XFCE_RDEPENDS = "${XFCE_DEPENDS}"
diff --git a/packages/initscripts/initscripts-1.0/checkroot.sh b/packages/initscripts/initscripts-1.0/checkroot.sh
index 44db23707e..f3b8a0cd45 100755
--- a/packages/initscripts/initscripts-1.0/checkroot.sh
+++ b/packages/initscripts/initscripts-1.0/checkroot.sh
@@ -141,6 +141,7 @@ else
test `uname -m` = s390 && spinner="" # This should go away
test "$VERBOSE" != no && echo "Checking root filesystem..."
fsck $spinner $force $fix /
+ RTC=$?
#
# If there was a failure, drop into single-user mode.
#
@@ -188,16 +189,15 @@ fi
# and finally write the new mtab.
# This part is only needed if the rootfs was mounted ro.
#
-if [ $(grep rootfs /proc/mounts | awk '{print $4}') = rw ]; then
- exit 0
+ROOTFSDEV="/dev/root"
+if ! grep -q "^$ROOTFSDEV\w" /proc/mounts; then
+ ROOTFSDEV="rootfs"
fi
-
-# Add a second check, which seems to be needed for some kernel versions
-if [ $(grep "/dev/root" /proc/mounts | awk '{print $4}') = rw ]; then
- exit 0
+if [ x$(grep "^$ROOTFSDEV\w" /proc/mounts | awk '{print $4}') = "xrw" ]; then
+ echo "Root filesystem already read-write, not remounting"
+ exit 0
fi
-
echo "Remounting root file system..."
mount -n -o remount,$rootmode /
if test "$rootmode" = rw
diff --git a/packages/initscripts/initscripts-1.0/foonas/.mtn2git_empty b/packages/initscripts/initscripts-1.0/foonas/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/foonas/.mtn2git_empty
diff --git a/packages/initscripts/initscripts-1.0/foonas/checkroot.sh b/packages/initscripts/initscripts-1.0/foonas/checkroot.sh
new file mode 100755
index 0000000000..c69a773482
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/foonas/checkroot.sh
@@ -0,0 +1,212 @@
+#
+# checkroot.sh Check to root filesystem.
+#
+# Version: @(#)checkroot.sh 2.84 25-Jan-2002 miquels@cistron.nl
+#
+
+. /etc/default/rcS
+
+#
+# Set SULOGIN in /etc/default/rcS to yes if you want a sulogin to be spawned
+# from this script *before anything else* with a timeout, like SCO does.
+#
+test "$SULOGIN" = yes && sulogin -t 30 $CONSOLE
+
+#
+# Ensure that bdflush (update) is running before any major I/O is
+# performed (the following fsck is a good example of such activity :).
+#
+test -x /sbin/update && update
+
+#
+# Read /etc/fstab.
+#
+exec 9>&0 </etc/fstab
+rootmode=rw
+rootopts=rw
+test "$ENABLE_ROOTFS_FSCK" = yes && rootcheck="yes" || rootcheck="no"
+swap_on_md=no
+devfs=
+while read fs mnt type opts dump pass junk
+do
+ case "$fs" in
+ ""|\#*)
+ continue;
+ ;;
+ /dev/md*)
+ # Swap on md device.
+ test "$type" = swap && swap_on_md=yes
+ ;;
+ /dev/*)
+ ;;
+ *)
+ # Might be a swapfile.
+ test "$type" = swap && swap_on_md=yes
+ ;;
+ esac
+
+ test "$type" = devfs && devfs="$fs"
+
+ # Currently we do not care about the other entries
+ if test "$mnt" = "/"
+ then
+ #echo "[$fs] [$mnt] [$type] [$opts] [$dump] [$pass] [$junk]"
+
+ rootopts="$opts"
+ roottype="$type"
+
+ #The "spinner" is broken on busybox sh
+ TERM=dumb
+
+ test "$pass" = 0 -o "$pass" = "" && rootcheck=no
+
+ # Enable fsck for ext2 and ext3 rootfs, disable for everything else
+ case "$type" in
+ ext2|ext3) rootcheck=yes;;
+ *) rootcheck=no;;
+ esac
+
+ if test "$rootcheck" = yes
+ then
+ if ! test -x "/sbin/fsck.${roottype}"
+ then
+ echo -e "\n * * * WARNING: /sbin/fsck.${roottype} is missing! * * *\n"
+ rootcheck=no
+ fi
+ fi
+
+ case "$opts" in
+ ro|ro,*|*,ro|*,ro,*)
+ rootmode=ro
+ ;;
+ esac
+ fi
+done
+exec 0>&9 9>&-
+
+#
+# Activate the swap device(s) in /etc/fstab. This needs to be done
+# before fsck, since fsck can be quite memory-hungry.
+#
+doswap=no
+test -d /proc/1 || mount -n /proc
+case "`uname -r`" in
+ 2.[0123].*)
+ if test $swap_on_md = yes && grep -qs resync /proc/mdstat
+ then
+ test "$VERBOSE" != no && echo "Not activating swap - RAID array resyncing"
+ else
+ doswap=yes
+ fi
+ ;;
+ *)
+ doswap=yes
+ ;;
+esac
+if test $doswap = yes
+then
+ test "$VERBOSE" != no && echo "Activating swap"
+ swapon -a 2> /dev/null
+fi
+
+#
+# Check the root filesystem.
+#
+if test -f /fastboot || test $rootcheck = no
+then
+ test $rootcheck = yes && echo "Fast boot, no filesystem check"
+else
+ #
+ # Ensure that root is quiescent and read-only before fsck'ing.
+ #
+ mount -n -o remount,ro /
+ if test $? = 0
+ then
+ if test -f /forcefsck
+ then
+ force="-f"
+ else
+ force=""
+ fi
+ if test "$FSCKFIX" = yes
+ then
+ fix="-y"
+ else
+ fix="-a"
+ fi
+ spinner="-C"
+ case "$TERM" in
+ dumb|network|unknown|"") spinner="" ;;
+ esac
+ test `uname -m` = s390 && spinner="" # This should go away
+ test "$VERBOSE" != no && echo "Checking root filesystem..."
+ fsck $spinner $force $fix /
+ #
+ # If there was a failure, drop into single-user mode.
+ #
+ # NOTE: "failure" is defined as exiting with a return code of
+ # 2 or larger. A return code of 1 indicates that filesystem
+ # errors were corrected but that the boot may proceed.
+ #
+
+ echo "RETURNCODE: [$RTC]"
+
+ if test "$RTC" -gt 3
+ then
+
+ # Since this script is run very early in the boot-process, it should be safe to assume that the
+ # output is printed to VT1. However, some distributions use a bootsplash to hide the "ugly" boot
+ # messages and having the bootsplash "hang" due to a waiting fsck prompt is less than ideal
+ chvt 1
+
+ # Surprise! Re-directing from a HERE document (as in
+ # "cat << EOF") won't work, because the root is read-only.
+ echo
+ echo "fsck failed. Please repair manually and reboot. "
+ echo "Please note that the root filesystem is currently "
+ echo "mounted read-only. To remount it read-write:"
+ echo
+ echo " # mount -n -o remount,rw /"
+ echo
+ echo "CONTROL-D will exit from this shell"
+ echo "and REBOOT the system."
+ echo
+ # Start a single user shell on the console
+ /sbin/sulogin $CONSOLE
+ reboot -f
+ fi
+ else
+ echo "*** ERROR! Cannot fsck root fs because it is not mounted read-only!"
+ echo
+ fi
+fi
+
+devrootfound=$(grep "/dev/root" /proc/mounts | \
+ awk '{if ($4 = /rw/) print "found";}' )
+
+if [ -n "$devrootfound" -a "$devrootfound" = "found" ]; then
+ echo "Read/write /dev/root found."
+ exit 0
+fi
+
+if mount -vf -o remount / 2> /dev/null | \
+ awk '{if ($6 ~ /rw/) exit 0; else exit 1; }' && \
+ ! touch -c / 2> /dev/null
+ then
+ echo " Remounting root filesystem read/write"
+ mount -n -o remount,$rootmode /
+fi
+
+if test "$rootmode" = rw
+then
+ if test ! -L /etc/mtab
+ then
+ rm -f /etc/mtab~ /etc/nologin
+ : > /etc/mtab
+ fi
+ mount -f -o remount /
+ mount -f /proc
+ test "$devfs" && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs"
+fi
+
+: exit 0
diff --git a/packages/initscripts/initscripts-1.0/foonas/devices b/packages/initscripts/initscripts-1.0/foonas/devices
new file mode 100755
index 0000000000..f83ea63598
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/foonas/devices
@@ -0,0 +1,70 @@
+#!/bin/sh
+#
+# Devfs handling script. Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+. /etc/default/rcS
+
+# exit without doing anything if udev is active
+if test -e /dev/.udev -o -e /dev/.udevdb; then
+ exit 0
+fi
+
+if test -e /dev/.devfsd
+then
+ if test "$VERBOSE" != "no"; then echo -n "Setting up device links for devfs: "; fi
+ [ -e /dev/.linksmade ] && exit 0
+
+ ln -s /dev/tts/0 /dev/ttySA0
+ ln -s /dev/tts/1 /dev/ttySA1
+
+ ln -s /dev/sound/dsp /dev/dsp
+ ln -s /dev/sound/mixer /dev/mixer
+
+ ln -s /dev/misc/rtc /dev/rtc
+
+ #
+ # some friendly disk links
+ #
+ ln -s /dev/discs/disc0/disc /dev/hda
+ ln -s /dev/discs/disc1/disc /dev/hdb
+ for i in 1 2 3 4; do
+ ln -s /dev/discs/disc0/part$i /dev/hda$i
+ ln -s /dev/discs/disc1/part$i /dev/hdb$i
+ done
+
+ ## need this so that ppp will autoload the ppp modules
+ mknod /dev/ppp c 108 0
+ ln -s /dev/zero /dev/.linksmade
+
+ if test "$VERBOSE" != "no"; then echo "done"; fi
+else
+ if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+ mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+ if test $? -ne 0; then
+ if test "$VERBOSE" != "no"; then echo "failed"; fi
+ else
+ if test "$VERBOSE" != "no"; then echo "done"; fi
+ fi
+ if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+ cd /
+ mkdir -p dev/input
+ mkdir -p dev/msys
+ mkdir -p dev/pts
+ mkdir -p dev/vc
+ mkdir -p dev/snd
+ mkdir -p dev/tts
+ for i in 0 1 2 3 4 5 6 7 8 9; do
+ ln -s /dev/tty$i /dev/vc/$i
+ done
+ ln -sf /proc/self/fd /dev/fd
+ ln -sf /proc/kcore /dev/core
+ /sbin/makedevs -r / -D /etc/device_table
+ if test $? -ne 0; then
+ if test "$VERBOSE" != "no"; then echo "failed"; fi
+ else
+ if test "$VERBOSE" != "no"; then echo "done"; fi
+ fi
+fi
+
+exit 0
diff --git a/packages/initscripts/initscripts-1.0/foonas/domainname.sh b/packages/initscripts/initscripts-1.0/foonas/domainname.sh
new file mode 100644
index 0000000000..7113467d8c
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/foonas/domainname.sh
@@ -0,0 +1,5 @@
+#
+# domainname.sh Set the domainname.
+#
+test -r /etc/defaultdomain &&
+ cat /etc/defaultdomain >/proc/sys/kernel/domainname
diff --git a/packages/initscripts/initscripts-1.0/foonas/halt b/packages/initscripts/initscripts-1.0/foonas/halt
new file mode 100755
index 0000000000..f22d892d46
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/foonas/halt
@@ -0,0 +1,27 @@
+#! /bin/sh
+#
+# halt Execute the halt command.
+#
+# Version: @(#)halt 2.84-2 07-Jan-2002 miquels@cistron.nl
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# See if we need to cut the power.
+if test -x /etc/init.d/ups-monitor
+then
+ /etc/init.d/ups-monitor poweroff
+fi
+
+# Don't shut down drives if we're using RAID.
+hddown="-h"
+if grep -qs '^md.*active' /proc/mdstat
+then
+ hddown=""
+fi
+
+echo "Powering down..."
+scc -p off
+halt -d -f -i -p $hddown
+
+: exit 0
diff --git a/packages/initscripts/initscripts-1.0/foonas/reboot b/packages/initscripts/initscripts-1.0/foonas/reboot
new file mode 100755
index 0000000000..05a82be4c0
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/foonas/reboot
@@ -0,0 +1,12 @@
+#! /bin/sh
+#
+# reboot Execute the reboot command.
+#
+# Version: @(#)reboot 2.75 22-Jun-1998 miquels@cistron.nl
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+echo -n "Rebooting... "
+scc -p restart
+reboot -d -f -i
diff --git a/packages/initscripts/initscripts-1.0/jornada6xx/devices b/packages/initscripts/initscripts-1.0/jornada6xx/devices
index fc96ff62ee..5ca2a1ccef 100644
--- a/packages/initscripts/initscripts-1.0/jornada6xx/devices
+++ b/packages/initscripts/initscripts-1.0/jornada6xx/devices
@@ -22,9 +22,6 @@ then
ln -s /dev/vc/4 /dev/tty4
ln -s /dev/vc/5 /dev/tty5
ln -s /dev/fb/0 /dev/fb0
-# ln -s /dev/tts/0 /dev/ttySA0
-# ln -s /dev/tts/1 /dev/ttySA1
-# ln -s /dev/tts/2 /dev/ttySA2
ln -s /dev/sound/dsp /dev/dsp
ln -s /dev/sound/mixer /dev/mixer
@@ -49,8 +46,12 @@ else
cd /
mkdir -p dev/input
mknod /dev/input/ts0 c 13 128
+ mknod /dev/ttySC0 c 8 204
mknod /dev/ttySC1 c 9 204
+ mknod /dev/ttySC2 c 10 204
+
mknod /dev/irda0 c 10 204
+
mkdir -p dev/msys
mkdir -p dev/pts
mkdir -p dev/vc
diff --git a/packages/initscripts/initscripts-1.0/openzaurus/checkversion b/packages/initscripts/initscripts-1.0/openzaurus/checkversion
deleted file mode 100755
index 0c8be4fc2d..0000000000
--- a/packages/initscripts/initscripts-1.0/openzaurus/checkversion
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-found=`cat /proc/version | cut -d ' ' -f3`
-echo "$found" | grep -q "snapshot" && exit 0
-
-if [ "VERSION" != "$found" ] ; then
- echo -e >/dev/tty1
- echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
- echo -e "\033[31;1m * \033[0mW A R N I N G ! \033[31;1m* \033[0m" >/dev/tty1
- echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
- echo >/dev/tty1
- echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
- echo -e "\033[31;1m * \033[0mYou are running the wrong kernel! \033[31;1m* \033[0m" >/dev/tty1
- echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
- echo >/dev/tty1
- echo -e "You are running '" $found "'" >/dev/tty1
- echo -e "I expect kernel '" VERSION "'" >/dev/tty1
- echo >/dev/tty1
- echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
- echo -e "\033[31;1m * \033[0mRunning this combination is unsupported \033[31;1m* \033[0m" >/dev/tty1
- echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
- echo >/dev/tty1
- echo "I will sleep for 1 minute now. Use this chance to " >/dev/tty1
- echo "reboot the device and flash the proper kernel now! " >/dev/tty1
- echo -e >/dev/tty1
- echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
- echo -e "\033[31;1m * \033[0mW A R N I N G ! \033[31;1m* \033[0m" >/dev/tty1
- echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
- echo >/dev/tty1
- sleep 60
-fi
diff --git a/packages/initscripts/initscripts-1.0/oplinux-uclibc/.mtn2git_empty b/packages/initscripts/initscripts-1.0/oplinux-uclibc/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/oplinux-uclibc/.mtn2git_empty
diff --git a/packages/initscripts/initscripts-1.0/angstrom/checkroot.sh b/packages/initscripts/initscripts-1.0/oplinux-uclibc/checkroot.sh
index e5fc6ed8b5..e5fc6ed8b5 100755
--- a/packages/initscripts/initscripts-1.0/angstrom/checkroot.sh
+++ b/packages/initscripts/initscripts-1.0/oplinux-uclibc/checkroot.sh
diff --git a/packages/initscripts/initscripts-1.0/oplinux-uclibc/mountall.sh b/packages/initscripts/initscripts-1.0/oplinux-uclibc/mountall.sh
new file mode 100755
index 0000000000..33d7065275
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/oplinux-uclibc/mountall.sh
@@ -0,0 +1,45 @@
+#
+# mountall.sh Mount all filesystems.
+#
+# Version: @(#)mountall.sh 2.83-2 01-Nov-2001 miquels@cistron.nl
+#
+. /etc/default/rcS
+
+#
+# Mount local filesystems in /etc/fstab. For some reason, people
+# might want to mount "proc" several times, and mount -v complains
+# about this. So we mount "proc" filesystems without -v.
+#
+test "$VERBOSE" != no && echo "Mounting local filesystems..."
+mount -a 2>/dev/null
+
+#
+# We might have mounted something over /dev, see if /dev/initctl is there.
+#
+if test ! -p /dev/initctl
+then
+ rm -f /dev/initctl
+ mknod -m 600 /dev/initctl p
+fi
+kill -USR1 1
+
+#
+# Execute swapon command again, in case we want to swap to
+# a file on a now mounted filesystem.
+#
+doswap=yes
+case "`uname -r`" in
+ 2.[0123].*)
+ if grep -qs resync /proc/mdstat
+ then
+ doswap=no
+ fi
+ ;;
+esac
+if test $doswap = yes
+then
+ swapon -a 2> /dev/null
+fi
+
+: exit 0
+
diff --git a/packages/initscripts/initscripts-1.0/oplinux/.mtn2git_empty b/packages/initscripts/initscripts-1.0/oplinux/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/oplinux/.mtn2git_empty
diff --git a/packages/initscripts/initscripts-1.0/oplinux/checkroot.sh b/packages/initscripts/initscripts-1.0/oplinux/checkroot.sh
new file mode 100755
index 0000000000..e5fc6ed8b5
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/oplinux/checkroot.sh
@@ -0,0 +1,201 @@
+#
+# checkroot.sh Check to root filesystem.
+#
+# Version: @(#)checkroot.sh 2.84 25-Jan-2002 miquels@cistron.nl
+#
+
+. /etc/default/rcS
+
+#
+# Set SULOGIN in /etc/default/rcS to yes if you want a sulogin to be spawned
+# from this script *before anything else* with a timeout, like SCO does.
+#
+test "$SULOGIN" = yes && sulogin -t 30 $CONSOLE
+
+#
+# Ensure that bdflush (update) is running before any major I/O is
+# performed (the following fsck is a good example of such activity :).
+#
+test -x /sbin/update && update
+
+#
+# Read /etc/fstab.
+#
+exec 9>&0 </etc/fstab
+rootmode=rw
+rootopts=rw
+test "$ENABLE_ROOTFS_FSCK" = yes && rootcheck="yes" || rootcheck="no"
+swap_on_md=no
+devfs=
+while read fs mnt type opts dump pass junk
+do
+ case "$fs" in
+ ""|\#*)
+ continue;
+ ;;
+ /dev/md*)
+ # Swap on md device.
+ test "$type" = swap && swap_on_md=yes
+ ;;
+ /dev/*)
+ ;;
+ *)
+ # Might be a swapfile.
+ test "$type" = swap && swap_on_md=yes
+ ;;
+ esac
+
+ test "$type" = devfs && devfs="$fs"
+
+ # Currently we do not care about the other entries
+ if test "$mnt" = "/"
+ then
+ #echo "[$fs] [$mnt] [$type] [$opts] [$dump] [$pass] [$junk]"
+
+ rootopts="$opts"
+ roottype="$type"
+
+ #The "spinner" is broken on busybox sh
+ TERM=dumb
+
+ test "$pass" = 0 -o "$pass" = "" && rootcheck=no
+
+ # Enable fsck for ext2 and ext3 rootfs, disable for everything else
+ case "$type" in
+ ext2|ext3) rootcheck=yes;;
+ *) rootcheck=no;;
+ esac
+
+ if test "$rootcheck" = yes
+ then
+ if ! test -x "/sbin/fsck.${roottype}"
+ then
+ echo -e "\n * * * WARNING: /sbin/fsck.${roottype} is missing! * * *\n"
+ rootcheck=no
+ fi
+ fi
+
+ case "$opts" in
+ ro|ro,*|*,ro|*,ro,*)
+ rootmode=ro
+ ;;
+ esac
+ fi
+done
+exec 0>&9 9>&-
+
+#
+# Activate the swap device(s) in /etc/fstab. This needs to be done
+# before fsck, since fsck can be quite memory-hungry.
+#
+doswap=no
+test -d /proc/1 || mount -n /proc
+case "`uname -r`" in
+ 2.[0123].*)
+ if test $swap_on_md = yes && grep -qs resync /proc/mdstat
+ then
+ test "$VERBOSE" != no && echo "Not activating swap - RAID array resyncing"
+ else
+ doswap=yes
+ fi
+ ;;
+ *)
+ doswap=yes
+ ;;
+esac
+if test $doswap = yes
+then
+ test "$VERBOSE" != no && echo "Activating swap"
+ swapon -a 2> /dev/null
+fi
+
+#
+# Check the root filesystem.
+#
+if test -f /fastboot || test $rootcheck = no
+then
+ test $rootcheck = yes && echo "Fast boot, no filesystem check"
+else
+ #
+ # Ensure that root is quiescent and read-only before fsck'ing.
+ #
+ mount -n -o remount,ro /
+ if test $? = 0
+ then
+ if test -f /forcefsck
+ then
+ force="-f"
+ else
+ force=""
+ fi
+ if test "$FSCKFIX" = yes
+ then
+ fix="-y"
+ else
+ fix="-a"
+ fi
+ spinner="-C"
+ case "$TERM" in
+ dumb|network|unknown|"") spinner="" ;;
+ esac
+ test `uname -m` = s390 && spinner="" # This should go away
+ test "$VERBOSE" != no && echo "Checking root filesystem..."
+ fsck $spinner $force $fix /
+ #
+ # If there was a failure, drop into single-user mode.
+ #
+ # NOTE: "failure" is defined as exiting with a return code of
+ # 2 or larger. A return code of 1 indicates that filesystem
+ # errors were corrected but that the boot may proceed.
+ #
+ if test "$?" -gt 1
+ then
+ # Surprise! Re-directing from a HERE document (as in
+ # "cat << EOF") won't work, because the root is read-only.
+ echo
+ echo "fsck failed. Please repair manually and reboot. Please note"
+ echo "that the root filesystem is currently mounted read-only. To"
+ echo "remount it read-write:"
+ echo
+ echo " # mount -n -o remount,rw /"
+ echo
+ echo "CONTROL-D will exit from this shell and REBOOT the system."
+ echo
+ # Start a single user shell on the console
+ /sbin/sulogin $CONSOLE
+ reboot -f
+ fi
+ else
+ echo "*** ERROR! Cannot fsck root fs because it is not mounted read-only!"
+ echo
+ fi
+fi
+
+#
+# If the root filesystem was not marked as read-only in /etc/fstab,
+# remount the rootfs rw but do not try to change mtab because it
+# is on a ro fs until the remount succeeded. Then clean up old mtabs
+# and finally write the new mtab.
+# This part is only needed if the rootfs was mounted ro.
+#
+
+if [ $(grep "/dev/root" /proc/mounts | awk '{print $4}') = rw ]; then
+ exit 0
+fi
+
+
+echo "Remounting root file system..."
+mount -n -o remount,$rootmode /
+if test "$rootmode" = rw
+then
+ if test ! -L /etc/mtab
+ then
+ rm -f /etc/mtab~ /etc/nologin
+ : > /etc/mtab
+ fi
+ mount -f -o remount /
+ mount -f /proc
+ test "$devfs" && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs"
+fi
+
+: exit 0
diff --git a/packages/initscripts/initscripts-1.0/populate-volatile.sh b/packages/initscripts/initscripts-1.0/populate-volatile.sh
index a60cc0d420..3bb3d94de6 100755
--- a/packages/initscripts/initscripts-1.0/populate-volatile.sh
+++ b/packages/initscripts/initscripts-1.0/populate-volatile.sh
@@ -11,7 +11,7 @@ COREDEF="00_core"
create_file() {
EXEC="
touch \"$1\";
- chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1
+ chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1;
chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 "
test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache
@@ -26,7 +26,7 @@ create_file() {
mk_dir() {
EXEC="
mkdir -p \"$1\";
- chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1
+ chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1;
chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 "
test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache
@@ -114,7 +114,6 @@ apply_cfgfile() {
cat ${CFGFILE} | grep -v "^#" | \
while read LINE; do
- # This is a hell of a lot faster than using cut or awk 5 times
eval `echo "$LINE" | sed -n "s/\(.*\)\ \(.*\) \(.*\)\ \(.*\)\ \(.*\)\ \(.*\)/TTYPE=\1 ; TUSER=\2; TGROUP=\3; TMODE=\4; TNAME=\5 TLTARGET=\6/p"`
[ "${VERBOSE}" != "no" ] && echo "Checking for -${TNAME}-."
diff --git a/packages/initscripts/initscripts-1.0/volatiles b/packages/initscripts/initscripts-1.0/volatiles
index 2bc7d82fbd..4320485663 100644
--- a/packages/initscripts/initscripts-1.0/volatiles
+++ b/packages/initscripts/initscripts-1.0/volatiles
@@ -3,14 +3,14 @@
#
# Every line must either be a comment starting with #
# or a definition of format:
-# <type> <owner> <group> <mode> <path> [<linksource>]
+# <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
+# f root root 0644 /var/test none
#
# Understanding links:
# When populate-volatile is to verify/create a directory or file, it will first
diff --git a/packages/initscripts/initscripts_1.0.bb b/packages/initscripts/initscripts_1.0.bb
index 838c479cb1..21e3bb2afe 100644
--- a/packages/initscripts/initscripts_1.0.bb
+++ b/packages/initscripts/initscripts_1.0.bb
@@ -2,10 +2,9 @@ DESCRIPTION = "SysV init scripts"
SECTION = "base"
PRIORITY = "required"
DEPENDS = "makedevs"
-DEPENDS_openzaurus = "makedevs virtual/kernel"
RDEPENDS = "makedevs"
LICENSE = "GPL"
-PR = "r83"
+PR = "r90"
SRC_URI = "file://halt \
file://ramdisk \
@@ -34,19 +33,8 @@ SRC_URI = "file://halt \
file://save-rtc.sh"
SRC_URI_append_arm = " file://alignment.sh"
-SRC_URI_append_openzaurus = " file://checkversion"
-def read_kernel_version(d):
- import bb
- distro = bb.data.getVar('DISTRO', d, 1)
- filename = bb.data.getVar('STAGING_KERNEL_DIR', d, 1)
- if distro == "openzaurus":
- return file( filename + "/kernel-abiversion", "r" ).read().strip()
- else:
- return "not important"
KERNEL_VERSION = ""
-KERNEL_VERSION_openzaurus = "${@read_kernel_version(d)}"
-PACKAGE_ARCH_openzaurus = "${MACHINE_ARCH}"
do_install () {
#
@@ -90,13 +78,6 @@ do_install () {
#
# Install device dependent scripts
#
-
- if [ "${DISTRO}" = "openzaurus" ]; then
- cat ${WORKDIR}/checkversion | sed -e "s,VERSION,${KERNEL_VERSION}-${DISTRO_VERSION}," > ${D}${sysconfdir}/init.d/checkversion
- chmod 0755 ${D}${sysconfdir}/init.d/checkversion
- ln -sf ../init.d/checkversion ${D}${sysconfdir}/rcS.d/S01version
- fi
-
install -m 0755 ${WORKDIR}/banner ${D}${sysconfdir}/init.d/banner
install -m 0755 ${WORKDIR}/devices ${D}${sysconfdir}/init.d/devices
install -m 0755 ${WORKDIR}/umountfs ${D}${sysconfdir}/init.d/umountfs
diff --git a/packages/intltool/intltool_0.35.0.bb b/packages/intltool/intltool_0.35.0.bb
index 7d4f83e94e..de8705ccf0 100644
--- a/packages/intltool/intltool_0.35.0.bb
+++ b/packages/intltool/intltool_0.35.0.bb
@@ -4,6 +4,10 @@ LICENSE = "GPL"
DEPENDS = "libxml-parser-perl-native"
#RDEPENDS = "libxml-parser-perl"
+PR = "r1"
+
+RRECOMMENDS = "perl-modules"
+
SRC_URI = "${GNOME_MIRROR}/intltool/0.35/intltool-${PV}.tar.bz2"
S = "${WORKDIR}/intltool-${PV}"
diff --git a/packages/ipaq-boot-params/files/.mtn2git_empty b/packages/ipaq-boot-params/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ipaq-boot-params/files/.mtn2git_empty
diff --git a/packages/ipaq-boot-params/files/h5000/.mtn2git_empty b/packages/ipaq-boot-params/files/h5000/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ipaq-boot-params/files/h5000/.mtn2git_empty
diff --git a/packages/ipaq-boot-params/files/h5000/params b/packages/ipaq-boot-params/files/h5000/params
new file mode 100644
index 0000000000..2d1a571173
--- /dev/null
+++ b/packages/ipaq-boot-params/files/h5000/params
@@ -0,0 +1 @@
+set linuxargs "root=/dev/mtdblock1 noinitrd console=ttyS0,115200"
diff --git a/packages/ipaq-boot-params/params b/packages/ipaq-boot-params/files/params
index 42344d6fb7..42344d6fb7 100644
--- a/packages/ipaq-boot-params/params
+++ b/packages/ipaq-boot-params/files/params
diff --git a/packages/ipaq-boot-params/ipaq-boot-params.bb b/packages/ipaq-boot-params/ipaq-boot-params.bb
index f2ff82d8be..15e3c9cd51 100644
--- a/packages/ipaq-boot-params/ipaq-boot-params.bb
+++ b/packages/ipaq-boot-params/ipaq-boot-params.bb
@@ -1,11 +1,15 @@
-FILES_${PN} = "/boot/params"
-
-PR = "r1"
LICENSE = "MIT"
+PR = "r2"
+
+COMPATIBLE_MACHINE = "(h3600|h3800|h3900|h5000|simpad)"
+
SRC_URI = "file://params"
do_install() {
- install -d ${D}/boot
- install -m 0644 ${WORKDIR}/params ${D}/boot/
+ install -d ${D}/boot
+ install -m 0644 ${WORKDIR}/params ${D}/boot/
}
+FILES_${PN} = "/boot/params"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
diff --git a/packages/ipkg-utils/ipkg-utils-native/ipkg-py-sane-vercompare.patch b/packages/ipkg-utils/ipkg-utils-native/ipkg-py-sane-vercompare.patch
new file mode 100644
index 0000000000..00ee391405
--- /dev/null
+++ b/packages/ipkg-utils/ipkg-utils-native/ipkg-py-sane-vercompare.patch
@@ -0,0 +1,51 @@
+Only in ipkg-utils: ipkg-py-sane-vercompare.patch
+diff -ur ipkg-utils.org/ipkg.py ipkg-utils/ipkg.py
+--- ipkg-utils.org/ipkg.py 2005-01-08 18:08:52.000000000 +0000
++++ ipkg-utils/ipkg.py 2007-04-04 11:52:46.000000000 +0000
+@@ -48,9 +48,9 @@
+ self.epoch = epoch
+ self.version = version
+
+- def _versioncompare(self, ref):
+- selfversion = self.version
+- refversion = ref.version
++ def _versioncompare(self, selfversion, refversion):
++ if not selfversion: selfversion = ""
++ if not refversion: refversion = ""
+ while 1:
+ ## first look for non-numeric version component
+ selfm = re.match('([^0-9]*)(.*)', selfversion)
+@@ -89,7 +89,18 @@
+ elif (self.epoch < ref.epoch):
+ return -1
+ else:
+- return self._versioncompare(ref)
++ self_ver_comps = re.match(r"(.+?)(-r.+)?$", self.version)
++ ref_ver_comps = re.match(r"(.+?)(-r.+)?$", ref.version)
++ #print (self_ver_comps.group(1), self_ver_comps.group(2))
++ #print (ref_ver_comps.group(1), ref_ver_comps.group(2))
++ r = self._versioncompare(self_ver_comps.group(1), ref_ver_comps.group(1))
++ if r == 0:
++ r = self._versioncompare(self_ver_comps.group(2), ref_ver_comps.group(2))
++ #print "compare: %s vs %s = %d" % (self, ref, r)
++ return r
++
++ def __str__(self):
++ return str(self.epoch) + ":" + self.version
+
+ def parse_version(versionstr):
+ epoch = 0
+@@ -445,6 +456,13 @@
+ return self.packages[key]
+
+ if __name__ == "__main__":
++
++ assert Version(0, "1.2.2-r1").compare(Version(0, "1.2.3-r0")) == -1
++ assert Version(0, "1.2.2-r0").compare(Version(0, "1.2.2+cvs20070308-r0")) == -1
++ assert Version(0, "1.2.2+cvs20070308").compare(Version(0, "1.2.2-r0")) == 1
++ assert Version(0, "1.2.2-r0").compare(Version(0, "1.2.2-r0")) == 0
++ assert Version(0, "1.2.2-r5").compare(Version(0, "1.2.2-r0")) == 1
++
+ package = Package()
+
+ package.set_package("FooBar")
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 8079b46267..03a381387e 100644
--- a/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
+++ b/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
@@ -1,8 +1,9 @@
require ipkg-utils_${PV}.bb
-SRC_URI += "file://ipkg-utils-fix.patch;patch=1"
+SRC_URI += "file://ipkg-utils-fix.patch;patch=1 \
+ file://ipkg-py-sane-vercompare.patch;patch=1"
RDEPENDS = ""
-PR = "r8"
+PR = "r9"
inherit native
diff --git a/packages/ipkg/files/is-processing.patch b/packages/ipkg/files/is-processing.patch
new file mode 100644
index 0000000000..45ede41668
--- /dev/null
+++ b/packages/ipkg/files/is-processing.patch
@@ -0,0 +1,179 @@
+diff -Nur ipkg-0.99.163.orig/ipkg_install.c ipkg-0.99.163/ipkg_install.c
+--- ipkg-0.99.163.orig/ipkg_install.c 2006-03-30 21:50:24.000000000 +0800
++++ ipkg-0.99.163/ipkg_install.c 2007-03-15 08:01:20.000000000 +0800
+@@ -211,6 +211,7 @@
+ anyone ever wants to make a nice libipkg. */
+
+ ipkg_message(conf, IPKG_DEBUG2,"Function: %s calling ipkg_install_pkg \n",__FUNCTION__);
++ new->is_processing = 1;
+ return ipkg_install_pkg(conf, new,0);
+ }
+
+diff -Nur ipkg-0.99.163.orig/libbb/unzip.c ipkg-0.99.163/libbb/unzip.c
+--- ipkg-0.99.163.orig/libbb/unzip.c 2006-02-06 16:13:02.000000000 +0800
++++ ipkg-0.99.163/libbb/unzip.c 2007-03-15 08:03:45.000000000 +0800
+@@ -1028,13 +1028,15 @@
+ */
+ extern void gz_close(int gunzip_pid)
+ {
+- if (kill(gunzip_pid, SIGTERM) == -1) {
+- error_msg_and_die("*** Couldnt kill old gunzip process *** aborting");
+- }
++ if (kill(gunzip_pid, 0) == 0) {
++ if (kill(gunzip_pid, SIGTERM) == -1) {
++ error_msg_and_die("*** Couldnt kill old gunzip process *** aborting");
++ }
+
+- if (waitpid(gunzip_pid, NULL, 0) == -1) {
+- printf("Couldnt wait ?");
++ if (waitpid(gunzip_pid, NULL, 0) == -1) {
++ printf("Couldnt wait ?");
++ }
+ }
+- free(window);
+- free(crc_table);
++ free(window);
++ free(crc_table);
+ }
+diff -Nur ipkg-0.99.163.orig/pkg.c ipkg-0.99.163/pkg.c
+--- ipkg-0.99.163.orig/pkg.c 2006-04-21 04:29:28.000000000 +0800
++++ ipkg-0.99.163/pkg.c 2007-03-20 15:11:32.845064480 +0800
+@@ -33,6 +33,7 @@
+ #include "xsystem.h"
+ #include "ipkg_conf.h"
+
++
+ typedef struct enum_map enum_map_t;
+ struct enum_map
+ {
+@@ -522,6 +523,10 @@
+ strncat(buff ,line, strlen(line));
+ free(line);
+
++ line = pkg_formatted_field(pkg, "Installed-Size");
++ strncat(buff ,line, strlen(line));
++ free(line);
++
+ return buff;
+ }
+
+@@ -542,7 +547,6 @@
+ }
+
+ temp[0]='\0';
+-
+ switch (field[0])
+ {
+ case 'a':
+@@ -690,13 +694,42 @@
+ case 'I': {
+ if (strcasecmp(field, "Installed-Size") == 0) {
+ /* Installed-Size */
+- temp = (char *)realloc(temp,strlen(pkg->installed_size)+17);
+- if ( temp == NULL ){
+- fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
+- return NULL;
+- }
+- temp[0]='\0';
+- snprintf(temp, (strlen(pkg->installed_size)+17), "Installed-Size: %s\n", pkg->installed_size);
++ if (pkg->installed_size) {
++ temp = (char *)realloc(temp,strlen(pkg->installed_size)+18);
++ if ( temp == NULL ){
++ fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
++ return NULL;
++ }
++ temp[0]='\0';
++ snprintf(temp, (strlen(pkg->installed_size)+18), "Installed-Size: %s\n", pkg->installed_size);
++ } else {
++ /* Caculate installed files size */
++ str_list_elt_t *iter;
++ struct stat buf;
++ int installed_files_length = 0;
++ if (pkg->installed_files == NULL)
++ break;
++
++ if (pkg->is_processing!=1)
++ break;
++
++ for (iter = pkg->installed_files->head; iter; iter = iter->next) {
++ memset(&buf, 0, sizeof(struct stat));
++ stat(iter->data, &buf);
++ if (S_ISREG(buf.st_mode))
++ installed_files_length += buf.st_size;
++ }
++ /*printf("installed_files_length:%d\n", installed_files_length);*/
++
++ sprintf_alloc(&pkg->installed_size, "%d", installed_files_length);
++ temp = (char *)realloc(temp,strlen(pkg->installed_size)+18);
++ if ( temp == NULL ){
++ fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
++ return NULL;
++ }
++ temp[0]='\0';
++ snprintf(temp, (strlen(pkg->installed_size)+18), "Installed-Size: %s\n", pkg->installed_size);
++ }
+ } else if (strcasecmp(field, "Installed-Time") == 0 && pkg->installed_time) {
+ temp = (char *)realloc(temp,29);
+ if ( temp == NULL ){
+@@ -720,7 +753,7 @@
+ return NULL;
+ }
+ temp[0]='\0';
+- snprintf(temp, (strlen(pkg->maintainer)+14), "maintainer: %s\n", pkg->maintainer);
++ snprintf(temp, (strlen(pkg->maintainer)+14), "Maintainer: %s\n", pkg->maintainer);
+ }
+ } else if (strcasecmp(field, "MD5sum") == 0) {
+ /* MD5sum */
+@@ -871,6 +904,24 @@
+ }
+ temp[0]='\0';
+ snprintf(temp, (strlen(pkg->size)+8), "Size: %s\n", pkg->size);
++ } else {
++ if ( pkg->local_filename ) {
++ struct stat buf;
++ memset(&buf, 0, sizeof(struct stat));
++
++ if ( stat(pkg->local_filename, &buf) == 0 ) {
++
++ sprintf_alloc(&pkg->size, "%d", buf.st_size);
++ temp = (char *)realloc(temp, strlen(pkg->size)+8);
++ if ( temp == NULL ){
++ fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
++ return NULL;
++ }
++ temp[0]='\0';
++ snprintf(temp, (strlen(pkg->size)+8), "Size: %s\n", pkg->size);
++ }
++ }
++
+ }
+ } else if (strcasecmp(field, "Source") == 0) {
+ /* Source */
+@@ -1016,6 +1067,12 @@
+ pkg_print_field(pkg, file, "Essential"); /* @@@@ should be removed in future release. */
+ pkg_print_field(pkg, file, "Architecture");
+ pkg_print_field(pkg, file, "Conffiles");
++ pkg_print_field(pkg, file, "Description");
++ pkg_print_field(pkg, file, "Maintainer");
++ pkg_print_field(pkg, file, "Section");
++ pkg_print_field(pkg, file, "Size");
++ pkg_print_field(pkg, file, "Filename");
++ pkg_print_field(pkg, file, "Installed-Size");
+ pkg_print_field(pkg, file, "Installed-Time");
+ fputs("\n", file);
+ }
+diff -Nur ipkg-0.99.163.orig/pkg.h ipkg-0.99.163/pkg.h
+--- ipkg-0.99.163.orig/pkg.h 2006-05-30 16:31:08.000000000 +0800
++++ ipkg-0.99.163/pkg.h 2007-03-15 08:01:20.000000000 +0800
+@@ -176,6 +176,10 @@
+ int arch_priority;
+ /* Adding this flag, to "force" ipkg to choose a "provided_by_hand" package, if there are multiple choice */
+ int provided_by_hand;
++
++ /* Check whether this pkg is being removed or installed */
++ int is_processing;
++
+ };
+
+ pkg_t *pkg_new(void);
+
diff --git a/packages/ipkg/ipkg-0.99.153/fix-bug1393.patch b/packages/ipkg/ipkg-0.99.153/fix-bug1393.patch
deleted file mode 100644
index 86af6b1d8e..0000000000
--- a/packages/ipkg/ipkg-0.99.153/fix-bug1393.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-patch added into upstream bugzilla:
-http://handhelds.org/~bugzilla/show_bug.cgi?id=1393
-Index: pkg_hash.c
-===================================================================
-RCS file: /cvs/familiar/dist/ipkg/C/pkg_hash.c,v
-retrieving revision 1.71
-diff -u -r1.71 pkg_hash.c
---- C/pkg_hash.c 29 Jul 2005 20:19:39 -0000 1.71
-+++ C/pkg_hash.c 2 Sep 2005 13:23:08 -0000
-@@ -216,7 +216,8 @@
- pkg_t *maybe = vec->pkgs[i];
- ipkg_message(conf, IPKG_DEBUG, " %s arch=%s arch_priority=%d \n",
- maybe->name, maybe->architecture, maybe->arch_priority);
-- if (maybe->arch_priority > 0) {
-+ if ((maybe->arch_priority > 0)
-+ && ((constraint_fcn == NULL) || constraint_fcn(maybe, cdata))) {
- max_count++;
- abstract_pkg_vec_insert(matching_apkgs, maybe->parent);
- pkg_vec_insert(matching_pkgs, maybe);
diff --git a/packages/ipkg/ipkg-0.99.155/upgrade-message-garbage.patch b/packages/ipkg/ipkg-0.99.155/upgrade-message-garbage.patch
deleted file mode 100644
index 6e79f79341..0000000000
--- a/packages/ipkg/ipkg-0.99.155/upgrade-message-garbage.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Prevent the output of spurious extra characters from
-the stack. This patch is in the manner of the rest of
-the code, there is no good reason for this.
-
---- C/ipkg_install.c 1970-01-01 00:00:00.000000000 +0000
-+++ C/ipkg_install.c 1970-01-01 00:00:00.000000000 +0000
-@@ -723,6 +723,7 @@ static int ipkg_install_check_downgrade(
- return rc;
- } else {
- char message_out[15] ;
-+ memset(message_out,'\x0',15);
- if ( message )
- strncpy( message_out,"Upgrading ",strlen("Upgrading ") );
- else
diff --git a/packages/ipkg/ipkg-0.99.163/.mtn2git_empty b/packages/ipkg/ipkg-0.99.163/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ipkg/ipkg-0.99.163/.mtn2git_empty
diff --git a/packages/ipkg/ipkg-0.99.163/patch-ipkg-localfilename b/packages/ipkg/ipkg-0.99.163/patch-ipkg-localfilename
new file mode 100644
index 0000000000..41f17fd954
--- /dev/null
+++ b/packages/ipkg/ipkg-0.99.163/patch-ipkg-localfilename
@@ -0,0 +1,29 @@
+--- ipkg-0.99.163.orig/ipkg_download.c Thu Apr 20 20:18:29 2006
++++ ipkg-0.99.163/ipkg_download.c Thu Jan 18 05:54:52 2007
+@@ -108,6 +108,7 @@
+ {
+ int err;
+ char *url;
++ char *filename;
+
+ if (pkg->src == NULL) {
+ ipkg_message(conf,IPKG_ERROR, "ERROR: Package %s (parent %s) is not available from any configured src.\n",
+@@ -117,11 +118,16 @@
+
+ sprintf_alloc(&url, "%s/%s", pkg->src->value, pkg->filename);
+
+- /* XXX: BUG: The pkg->filename might be something like
++ /* The pkg->filename might be something like
+ "../../foo.ipk". While this is correct, and exactly what we
+ want to use to construct url above, here we actually need to
+ use just the filename part, without any directory. */
+- sprintf_alloc(&pkg->local_filename, "%s/%s", dir, pkg->filename);
++ filename = strrchr(pkg->filename, '/');
++ if(NULL == filename)
++ filename = pkg->filename;
++ else
++ filename++;
++ sprintf_alloc(&pkg->local_filename, "%s/%s", dir, filename);
+
+ err = ipkg_download(conf, url, pkg->local_filename);
+ free(url);
diff --git a/packages/ipkg/ipkg-collateral.bb b/packages/ipkg/ipkg-collateral.bb
index b0e2a2ed06..244d29d08a 100644
--- a/packages/ipkg/ipkg-collateral.bb
+++ b/packages/ipkg/ipkg-collateral.bb
@@ -1,7 +1,8 @@
DESCRIPTION = "ipkg configuration files"
SECTION = "base"
LICENSE = "MIT"
-PR = "r3"
+PR = "r7"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
SRC_URI = " \
file://ipkg.conf.comments \
@@ -21,3 +22,5 @@ do_install () {
install -d ${D}${sysconfdir}/
install -m 0644 ${WORKDIR}/ipkg.conf ${D}${sysconfdir}/ipkg.conf
}
+
+CONFFILES_${PN} = "${sysconfdir}/ipkg.conf"
diff --git a/packages/ipkg/ipkg-collateral/oplinux-uclibc/.mtn2git_empty b/packages/ipkg/ipkg-collateral/oplinux-uclibc/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ipkg/ipkg-collateral/oplinux-uclibc/.mtn2git_empty
diff --git a/packages/ipkg/ipkg-collateral/oplinux-uclibc/dest b/packages/ipkg/ipkg-collateral/oplinux-uclibc/dest
new file mode 100644
index 0000000000..b786746b63
--- /dev/null
+++ b/packages/ipkg/ipkg-collateral/oplinux-uclibc/dest
@@ -0,0 +1,3 @@
+dest root /
+dest ram /tmp
+dest smbfs /tmp/smbfs
diff --git a/packages/ipkg/ipkg-collateral/oplinux/.mtn2git_empty b/packages/ipkg/ipkg-collateral/oplinux/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ipkg/ipkg-collateral/oplinux/.mtn2git_empty
diff --git a/packages/ipkg/ipkg-collateral/oplinux/dest b/packages/ipkg/ipkg-collateral/oplinux/dest
new file mode 100644
index 0000000000..b786746b63
--- /dev/null
+++ b/packages/ipkg/ipkg-collateral/oplinux/dest
@@ -0,0 +1,3 @@
+dest root /
+dest ram /tmp
+dest smbfs /tmp/smbfs
diff --git a/packages/ipkg/ipkg-native_0.99.152.bb b/packages/ipkg/ipkg-native_0.99.152.bb
deleted file mode 100644
index f2deb33fba..0000000000
--- a/packages/ipkg/ipkg-native_0.99.152.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require ipkg_${PV}.bb
-require ipkg-native.inc
-PR = "r1"
diff --git a/packages/ipkg/ipkg-native_0.99.153.bb b/packages/ipkg/ipkg-native_0.99.153.bb
deleted file mode 100644
index f2deb33fba..0000000000
--- a/packages/ipkg/ipkg-native_0.99.153.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require ipkg_${PV}.bb
-require ipkg-native.inc
-PR = "r1"
diff --git a/packages/ipkg/ipkg-native_0.99.154.bb b/packages/ipkg/ipkg-native_0.99.154.bb
deleted file mode 100644
index f2deb33fba..0000000000
--- a/packages/ipkg/ipkg-native_0.99.154.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require ipkg_${PV}.bb
-require ipkg-native.inc
-PR = "r1"
diff --git a/packages/ipkg/ipkg-native_0.99.159.bb b/packages/ipkg/ipkg-native_0.99.159.bb
deleted file mode 100644
index f2deb33fba..0000000000
--- a/packages/ipkg/ipkg-native_0.99.159.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require ipkg_${PV}.bb
-require ipkg-native.inc
-PR = "r1"
diff --git a/packages/ipkg/ipkg_0.99.152.bb b/packages/ipkg/ipkg_0.99.152.bb
deleted file mode 100644
index 0d10a29c3f..0000000000
--- a/packages/ipkg/ipkg_0.99.152.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require ipkg.inc
-PR = "r3"
diff --git a/packages/ipkg/ipkg_0.99.153.bb b/packages/ipkg/ipkg_0.99.153.bb
deleted file mode 100644
index 5852b6afc4..0000000000
--- a/packages/ipkg/ipkg_0.99.153.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFAULT_PREFERENCE = "-1"
-
-require ipkg.inc
-
-PR = "r4"
-
-SRC_URI += "file://fix-bug1393.patch;patch=1"
-
diff --git a/packages/ipkg/ipkg_0.99.154.bb b/packages/ipkg/ipkg_0.99.154.bb
deleted file mode 100644
index 20a1996658..0000000000
--- a/packages/ipkg/ipkg_0.99.154.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require ipkg.inc
-PR = "r4"
diff --git a/packages/ipkg/ipkg_0.99.155.bb b/packages/ipkg/ipkg_0.99.155.bb
deleted file mode 100644
index e5ff6dc4c2..0000000000
--- a/packages/ipkg/ipkg_0.99.155.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require ipkg.inc
-PR = "r2"
-SRC_URI += "file://upgrade-message-garbage.patch;patch=1"
diff --git a/packages/ipkg/ipkg_0.99.159.bb b/packages/ipkg/ipkg_0.99.159.bb
deleted file mode 100644
index 8455050622..0000000000
--- a/packages/ipkg/ipkg_0.99.159.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require ipkg.inc
-PR = "r1"
diff --git a/packages/ipkg/ipkg_0.99.163.bb b/packages/ipkg/ipkg_0.99.163.bb
index 02509aa962..627a1fbdfe 100644
--- a/packages/ipkg/ipkg_0.99.163.bb
+++ b/packages/ipkg/ipkg_0.99.163.bb
@@ -1,11 +1,11 @@
include ipkg.inc
-PR = "r1"
+PR = "r3"
S = "${WORKDIR}/ipkg-${PV}"
SRC_URI = "http://www.handhelds.org/pub/packages/ipkg/ipkg-${PV}.tar.gz \
- file://terse.patch;patch=1"
-
+ file://terse.patch;patch=1 \
+ file://is-processing.patch;patch=1"
do_stage() {
oe_libinstall -so libipkg ${STAGING_LIBDIR}
diff --git a/packages/iproute2/iproute2-2.6.20/.mtn2git_empty b/packages/iproute2/iproute2-2.6.20/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/iproute2/iproute2-2.6.20/.mtn2git_empty
diff --git a/packages/iproute2/iproute2-2.6.20/ip6tunnel.patch b/packages/iproute2/iproute2-2.6.20/ip6tunnel.patch
new file mode 100644
index 0000000000..371de01c16
--- /dev/null
+++ b/packages/iproute2/iproute2-2.6.20/ip6tunnel.patch
@@ -0,0 +1,10 @@
+--- iproute-2.6.20-070313/ip/ip6tunnel.c 2007/03/17 03:44:27 1.1
++++ iproute-2.6.20-070313/ip/ip6tunnel.c 2007/03/17 03:43:14
+@@ -33,6 +33,7 @@
+ #include <sys/socket.h>
+ #include <arpa/inet.h>
+ #include <sys/ioctl.h>
++#include <linux/types.h>
+ #include <linux/ip.h>
+ #include <linux/if.h>
+ #include <linux/if_arp.h>
diff --git a/packages/iproute2/iproute2-2.6.20/man-pages-fix.patch b/packages/iproute2/iproute2-2.6.20/man-pages-fix.patch
new file mode 100644
index 0000000000..924d0ed4dc
--- /dev/null
+++ b/packages/iproute2/iproute2-2.6.20/man-pages-fix.patch
@@ -0,0 +1,13 @@
+--- iproute-2.6.20-070313/Makefile 2007/03/17 04:24:45 1.1
++++ iproute-2.6.20-070313/Makefile 2007/03/17 04:27:39
+@@ -52,8 +52,8 @@
+ install -m 0644 $(shell find etc/iproute2 -maxdepth 1 -type f) $(DESTDIR)$(CONFDIR)
+ install -m 0755 -d $(DESTDIR)$(MANDIR)/man8
+ install -m 0644 $(shell find man/man8 -maxdepth 1 -type f) $(DESTDIR)$(MANDIR)/man8
+- ln -sf tc-pbfifo.8 $(DESTDIR)$(MANDIR)/man8/tc-bfifo.8
+- ln -sf tc-pbfifo.8 $(DESTDIR)$(MANDIR)/man8/tc-pfifo.8
++ ln -sf tc-bfifo.8 $(DESTDIR)$(MANDIR)/man8/tc-pfifo.8
++ ln -sf tc-bfifo.8 $(DESTDIR)$(MANDIR)/man8/tc-pbfifo.8
+ install -m 0755 -d $(DESTDIR)$(MANDIR)/man3
+ install -m 0644 $(shell find man/man3 -maxdepth 1 -type f) $(DESTDIR)$(MANDIR)/man3
+
diff --git a/packages/iproute2/iproute2-2.6.20/new-flex-fix.patch b/packages/iproute2/iproute2-2.6.20/new-flex-fix.patch
new file mode 100644
index 0000000000..af7272163e
--- /dev/null
+++ b/packages/iproute2/iproute2-2.6.20/new-flex-fix.patch
@@ -0,0 +1,83 @@
+The tc command was failing to build due to flex errors. These errors are
+caused by an incompatible change to flex in recent versions, including the
+version shipped with OE.
+
+This fix is as per the one used by opensure:
+
+ http://lists.opensuse.org/opensuse-commit/2006-04/msg00090.html
+
+and simple renames str to prevent it conflicting.
+
+--- iproute-2.6.20-070313/tc/emp_ematch.l 2007/03/17 02:52:20 1.1
++++ iproute-2.6.20-070313/tc/emp_ematch.l 2007/03/17 02:54:01
+@@ -63,7 +63,7 @@
+
+ %}
+
+-%x str
++%x STR
+
+ %option 8bit stack warn noyywrap prefix="ematch_"
+ %%
+@@ -78,17 +78,17 @@
+ }
+ strbuf_index = 0;
+
+- BEGIN(str);
++ BEGIN(STR);
+ }
+
+-<str>\" {
++<STR>\" {
+ BEGIN(INITIAL);
+ yylval.b = bstr_new(strbuf, strbuf_index);
+ yylval.b->quoted = 1;
+ return ATTRIBUTE;
+ }
+
+-<str>\\[0-7]{1,3} { /* octal escape sequence */
++<STR>\\[0-7]{1,3} { /* octal escape sequence */
+ int res;
+
+ sscanf(yytext + 1, "%o", &res);
+@@ -100,12 +100,12 @@
+ strbuf_append_char((unsigned char) res);
+ }
+
+-<str>\\[0-9]+ { /* catch wrong octal escape seq. */
++<STR>\\[0-9]+ { /* catch wrong octal escape seq. */
+ fprintf(stderr, "error: invalid octale escape sequence\n");
+ return ERROR;
+ }
+
+-<str>\\x[0-9a-fA-F]{1,2} {
++<STR>\\x[0-9a-fA-F]{1,2} {
+ int res;
+
+ sscanf(yytext + 2, "%x", &res);
+@@ -118,16 +118,16 @@
+ strbuf_append_char((unsigned char) res);
+ }
+
+-<str>\\n strbuf_append_char('\n');
+-<str>\\r strbuf_append_char('\r');
+-<str>\\t strbuf_append_char('\t');
+-<str>\\v strbuf_append_char('\v');
+-<str>\\b strbuf_append_char('\b');
+-<str>\\f strbuf_append_char('\f');
+-<str>\\a strbuf_append_char('\a');
++<STR>\\n strbuf_append_char('\n');
++<STR>\\r strbuf_append_char('\r');
++<STR>\\t strbuf_append_char('\t');
++<STR>\\v strbuf_append_char('\v');
++<STR>\\b strbuf_append_char('\b');
++<STR>\\f strbuf_append_char('\f');
++<STR>\\a strbuf_append_char('\a');
+
+-<str>\\(.|\n) strbuf_append_char(yytext[1]);
+-<str>[^\\\n\"]+ strbuf_append_charp(yytext);
++<STR>\\(.|\n) strbuf_append_char(yytext[1]);
++<STR>[^\\\n\"]+ strbuf_append_charp(yytext);
+
+ [aA][nN][dD] return AND;
+ [oO][rR] return OR;
diff --git a/packages/iproute2/iproute2-2.6.20/no-strip.patch b/packages/iproute2/iproute2-2.6.20/no-strip.patch
new file mode 100644
index 0000000000..6490dadb07
--- /dev/null
+++ b/packages/iproute2/iproute2-2.6.20/no-strip.patch
@@ -0,0 +1,36 @@
+--- iproute-2.6.20-070313/ip/Makefile 2007/03/17 05:17:30 1.1
++++ iproute-2.6.20-070313/ip/Makefile 2007/03/17 05:17:37
+@@ -16,7 +16,7 @@
+ rtmon: $(RTMONOBJ) $(LIBNETLINK)
+
+ install: all
+- install -m 0755 -s $(TARGETS) $(DESTDIR)$(SBINDIR)
++ install -m 0755 $(TARGETS) $(DESTDIR)$(SBINDIR)
+ install -m 0755 $(SCRIPTS) $(DESTDIR)$(SBINDIR)
+
+ clean:
+--- iproute-2.6.20-070313/misc/Makefile 2007/03/17 05:18:20 1.1
++++ iproute-2.6.20-070313/misc/Makefile 2007/03/17 05:18:26
+@@ -27,7 +27,7 @@
+ lnstat: $(LNSTATOBJ)
+
+ install: all
+- install -m 0755 -s $(TARGETS) $(DESTDIR)$(SBINDIR)
++ install -m 0755 $(TARGETS) $(DESTDIR)$(SBINDIR)
+ ln -sf lnstat $(DESTDIR)$(SBINDIR)/rtstat
+ ln -sf lnstat $(DESTDIR)$(SBINDIR)/ctstat
+
+--- iproute-2.6.20-070313/tc/Makefile 2007/03/17 05:17:42 1.1
++++ iproute-2.6.20-070313/tc/Makefile 2007/03/17 05:17:54
+@@ -70,9 +70,9 @@
+
+ install: all
+ mkdir -p $(DESTDIR)/usr/lib/tc
+- install -m 0755 -s tc $(DESTDIR)$(SBINDIR)
++ install -m 0755 tc $(DESTDIR)$(SBINDIR)
+ for i in $(TCSO); \
+- do install -m 755 -s $$i $(DESTDIR)/usr/lib/tc; \
++ do install -m 755 $$i $(DESTDIR)/usr/lib/tc; \
+ done
+
+ clean:
diff --git a/packages/iproute2/iproute2.inc b/packages/iproute2/iproute2.inc
index 006b27b60f..e14bfdeefe 100644
--- a/packages/iproute2/iproute2.inc
+++ b/packages/iproute2/iproute2.inc
@@ -3,12 +3,20 @@ SECTION = "base"
LICENSE = "GPL"
DEPENDS = "flex-native bison-native"
-# Set DATE in the .bb file
+# This changed from iproute2 to iproute with version 2.6.20, so set to
+# iproute in the recipe for 2.6.20 and newer versions.
+DIRNAME ?= "${PN}"
+
+# Set the DATE in the .bb file
SRC_URI = "http://developer.osdl.org/dev/iproute2/download/${P}-${DATE}.tar.gz"
-S = "${WORKDIR}/${P}-${DATE}"
+S = "${WORKDIR}/${DIRNAME}-${PV}-${DATE}"
-EXTRA_OEMAKE = "CC='${CC}' KERNEL_INCLUDE=${STAGING_KERNEL_DIR}/include DOCDIR=${docdir}/iproute2 SUBDIRS='lib tc ip' SBINDIR=/sbin"
+EXTRA_OEMAKE = "CC='${CC}' \
+ KERNEL_INCLUDE=${STAGING_KERNEL_DIR}/include \
+ DOCDIR=${docdir}/iproute2 \
+ SUBDIRS='lib tc ip' \
+ SBINDIR=/sbin"
do_install () {
oe_runmake DESTDIR=${D} install
diff --git a/packages/iproute2/iproute2_2.6.16.bb b/packages/iproute2/iproute2_2.6.16.bb
index ddd5ef71dd..fc87b9e3b5 100644
--- a/packages/iproute2/iproute2_2.6.16.bb
+++ b/packages/iproute2/iproute2_2.6.16.bb
@@ -1,7 +1,7 @@
-PR = "r1"
+PR = "r2"
-SRC_URI += "file://iproute2-2.6.15_no_strip.diff;patch=1;pnum=0 \
- file://new-flex-fix.patch;patch=1"
+SRC_URI_append = " file://iproute2-2.6.15_no_strip.diff;patch=1;pnum=0 \
+ file://new-flex-fix.patch;patch=1"
require iproute2.inc
diff --git a/packages/iproute2/iproute2_2.6.18.bb b/packages/iproute2/iproute2_2.6.18.bb
index ee3ff29550..9d85126b68 100644
--- a/packages/iproute2/iproute2_2.6.18.bb
+++ b/packages/iproute2/iproute2_2.6.18.bb
@@ -1,7 +1,7 @@
-PR = "r0"
+PR = "r1"
-SRC_URI += "file://iproute2-2.6.15_no_strip.diff;patch=1;pnum=0 \
- file://new-flex-fix.patch;patch=1"
+SRC_URI_append = " file://iproute2-2.6.15_no_strip.diff;patch=1;pnum=0 \
+ file://new-flex-fix.patch;patch=1"
require iproute2.inc
diff --git a/packages/ipsec-tools/ipsec-tools_0.6.6.bb b/packages/ipsec-tools/ipsec-tools_0.6.6.bb
index 0e2a82e370..9b0676aece 100644
--- a/packages/ipsec-tools/ipsec-tools_0.6.6.bb
+++ b/packages/ipsec-tools/ipsec-tools_0.6.6.bb
@@ -1,10 +1,9 @@
DESCRIPTION = "IPsec-Tools is a port of KAME's IPsec utilities to the \
Linux-2.6 IPsec implementation."
HOMEPAGE = "http://ipsec-tools.sourceforge.net/"
-SECTION = "console/net"
+SECTION = "console/network"
LICENSE = "BSD"
DEPENDS = "virtual/kernel openssl readline flex"
-PR = "r0"
SRC_URI = "${SOURCEFORGE_MIRROR}/ipsec-tools/ipsec-tools-${PV}.tar.bz2 \
file://racoon-search-missing.patch;patch=1"
diff --git a/packages/iptables/files/.mtn2git_empty b/packages/iptables/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/iptables/files/.mtn2git_empty
diff --git a/packages/iptables/files/compile.patch b/packages/iptables/files/compile.patch
new file mode 100644
index 0000000000..76662d9748
--- /dev/null
+++ b/packages/iptables/files/compile.patch
@@ -0,0 +1,17 @@
+Index: iptables-1.3.3/extensions/Makefile
+===================================================================
+--- iptables-1.3.3.orig/extensions/Makefile
++++ iptables-1.3.3/extensions/Makefile
+@@ -67,10 +67,10 @@ endif
+
+ ifdef NO_SHARED_LIBS
+ extensions/libext.a: $(EXT_OBJS)
+- rm -f $@; ar crv $@ $(EXT_OBJS)
++ rm -f $@; $(AR) crv $@ $(EXT_OBJS)
+
+ extensions/libext6.a: $(EXT6_OBJS)
+- rm -f $@; ar crv $@ $(EXT6_OBJS)
++ rm -f $@; $(AR) crv $@ $(EXT6_OBJS)
+
+ extensions/initext.o: extensions/initext.c
+ extensions/initext6.o: extensions/initext6.c
diff --git a/packages/iptables/iptables_1.2.9.bb b/packages/iptables/iptables_1.2.9.bb
index fe43ff488e..213802d17f 100644
--- a/packages/iptables/iptables_1.2.9.bb
+++ b/packages/iptables/iptables_1.2.9.bb
@@ -1,9 +1,10 @@
SECTION = "console/network"
DESCRIPTION = "iptables network filtering tools"
LICENSE = "GPL"
-PR = "r1"
+PR = "r2"
-SRC_URI = "http://www.netfilter.org/files/iptables-${PV}.tar.bz2"
+SRC_URI = "http://www.netfilter.org/files/iptables-${PV}.tar.bz2 \
+ file://compile.patch;patch=1"
S = "${WORKDIR}/iptables-${PV}"
diff --git a/packages/iptables/iptables_1.3.3.bb b/packages/iptables/iptables_1.3.3.bb
index 4c500ad5b1..5f19d45317 100644
--- a/packages/iptables/iptables_1.3.3.bb
+++ b/packages/iptables/iptables_1.3.3.bb
@@ -3,14 +3,15 @@ HOMEPAGE = "http://www.netfilter.org/"
SECTION = "console/utils"
LICENSE = "GPL"
RRECOMMENDS = "kernel-module-ip-tables kernel-module-iptable-filter"
-PR = "r3"
+PR = "r4"
PACKAGES =+ "${PN}-utils"
FILES_${PN}-utils = "${sbindir}/iptables-save ${sbindir}/iptables-restore"
-SRC_URI = "http://www.netfilter.org/files/iptables-${PV}.tar.bz2"
+SRC_URI = "http://www.netfilter.org/files/iptables-${PV}.tar.bz2 \
+ file://compile.patch;patch=1"
S = "${WORKDIR}/iptables-${PV}"
diff --git a/packages/iptstate/.mtn2git_empty b/packages/iptstate/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/iptstate/.mtn2git_empty
diff --git a/packages/iptstate/iptstate_2.2.1.bb b/packages/iptstate/iptstate_2.2.1.bb
new file mode 100644
index 0000000000..40be6eb109
--- /dev/null
+++ b/packages/iptstate/iptstate_2.2.1.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "IPTState is a top-like interface to your netfilter connection-tracking table."
+HOMEPAGE = "http://www.phildev.net/iptstate/"
+SECTION = "console/network"
+LICENSE = "zlib"
+DEPENDS = "ncurses"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/iptstate/iptstate-${PV}.tar.bz2"
+
+#
+# Make it use it's old style proc interface - these should be removed
+# once libnetfilter_conntrack and libnfnetlink are added to OE.
+#
+CPPFLAGS += " -DIPTSTATE_USE_PROC -L${STAGING_LIBDIR}"
+export LIBS = "-lncurses"
+
+do_install () {
+ oe_runmake install SBIN=${D}/${sbindir} MAN=${D}/${mandir}
+}
diff --git a/packages/irda-utils/files/init b/packages/irda-utils/files/init
index 2d93af34df..a00596fc85 100755
--- a/packages/irda-utils/files/init
+++ b/packages/irda-utils/files/init
@@ -1,21 +1,26 @@
#! /bin/sh
+NAME="irattach"
+
module_id() {
- awk 'BEGIN { FS=": " } /Hardware/ { print $2 } ' </proc/cpuinfo
+ awk 'BEGIN { FS=": " } /Hardware/ { print $2 } ' </proc/cpuinfo
+}
+cpuid_id() {
+ awk '/Processor/ { print $3; exit; }' /proc/cpuinfo
}
if [ ! -f /etc/sysconfig/irda ]; then
- case `module_id` in
- "HP iPAQ H2200" | "HP iPAQ HX4700" | "HTC Universal")
+ case `cpuid_id` in
+ "XScale-PXA2"*)
IRDA=yes
DEVICE=/dev/ttyS2
DONGLE=
DISCOVERY=
;;
*)
- IRDA=yes
- DEVICE=/dev/ttyS1
+ IRDA=no
+ DEVICE=/dev/null
DONGLE=
DISCOVERY=
;;
@@ -32,8 +37,8 @@ fi
. /etc/sysconfig/irda
-# Check that irda is up.
-[ ${IRDA} = "no" ] && exit 0
+# Check if irda is present.
+[ $IRDA = "no" ] && exit 0
[ -f /usr/sbin/irattach ] || exit 0
@@ -47,26 +52,26 @@ fi
case "$1" in
start)
- echo -n "Starting IrDA: "
- irattach ${DEVICE} ${ARGS} > /dev/null 2>&1 &
- echo "$NAME."
- ;;
+ echo -n "Starting IrDA: "
+ irattach ${DEVICE} ${ARGS} > /dev/null 2>&1
+ echo "$NAME."
+ ;;
stop)
- echo -n "Stopping IrDA: "
- killall irattach > /dev/null 2>&1
- echo "$NAME."
- ;;
+ echo -n "Stopping IrDA: "
+ killall irattach > /dev/null 2>&1
+ echo "$NAME."
+ ;;
restart|force-reload)
- echo -n "Restarting IrDA: "
- irattach ${DEVICE} ${ARGS} > /dev/null 2>&1 &
- sleep 1
- killall irattach > /dev/null 2>&1
- echo "$NAME."
- ;;
+ echo -n "Restarting IrDA: "
+ irattach ${DEVICE} ${ARGS} > /dev/null 2>&1
+ sleep 1
+ killall irattach > /dev/null 2>&1
+ echo "$NAME."
+ ;;
*)
- N=/etc/init.d/$NAME
- echo "Usage: $N {start|stop|restart|force-reload}" >&2
- exit 1
- ;;
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
esac
diff --git a/packages/irda-utils/irda-utils_0.9.16.bb b/packages/irda-utils/irda-utils_0.9.16.bb
index 95a15d7d23..19bcdf397c 100644
--- a/packages/irda-utils/irda-utils_0.9.16.bb
+++ b/packages/irda-utils/irda-utils_0.9.16.bb
@@ -3,7 +3,7 @@ IrDA allows communication over Infrared with other devices \
such as phones and laptops."
SECTION = "base"
LICENSE = "GPL"
-PR = "r6"
+PR = "r8"
SRC_URI = "${SOURCEFORGE_MIRROR}/irda/irda-utils-${PV}.tar.gz \
file://configure.patch;patch=1 \
@@ -12,7 +12,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/irda/irda-utils-${PV}.tar.gz \
export SYS_INCLUDES="-I${STAGING_INCDIR}"
-inherit autotools update-rc.d
+inherit autotools
INITSCRIPT_NAME = "irattach"
INITSCRIPT_PARAMS = "defaults 20"
@@ -28,5 +28,5 @@ do_install () {
oe_runmake -C irdaping ROOT="${D}" install
install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/irattach
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/${INITSCRIPT_NAME}
}
diff --git a/packages/irssi/irssi_0.8.10.bb b/packages/irssi/irssi_0.8.10.bb
index 2c8b226d0e..f67e8fe9c5 100644
--- a/packages/irssi/irssi_0.8.10.bb
+++ b/packages/irssi/irssi_0.8.10.bb
@@ -2,8 +2,8 @@ DESCRIPTION = "Irssi is a modular IRC client with Perl scripting."
HOMEPAGE = "http://irssi.org/"
SECTION = "console/network"
LICENSE = "GPL"
-DEPENDS += "ncurses glib-1.2"
-PR = "r0"
+DEPENDS += "ncurses glib-2.0"
+PR = "r2"
PACKAGES += "${PN}-common"
FILES_${PN} = "${bindir}/irssi"
diff --git a/packages/irssi/irssi_svn.bb b/packages/irssi/irssi_svn.bb
index 38f4d3fb26..3f4662017f 100644
--- a/packages/irssi/irssi_svn.bb
+++ b/packages/irssi/irssi_svn.bb
@@ -2,9 +2,9 @@ DESCRIPTION = "Irssi is a modular IRC client with Perl scripting."
HOMEPAGE = "http://irssi.org/"
SECTION = "console/network"
LICENSE = "GPL"
-DEPENDS += "ncurses glib-1.2"
+DEPENDS += "ncurses glib-2.0"
PV = "0.8.10+svn${SRCDATE}"
-PR = "r2"
+PR = "r3"
PACKAGES += "${PN}-common"
FILES_${PN} = "${bindir}/irssi"
diff --git a/packages/ixp425-eth/ixp400-eth_1.4.bb b/packages/ixp425-eth/ixp400-eth_1.4.bb
index be0d1f339d..6b1ff0c8d2 100644
--- a/packages/ixp425-eth/ixp400-eth_1.4.bb
+++ b/packages/ixp425-eth/ixp400-eth_1.4.bb
@@ -18,6 +18,7 @@ RDEPENDS = "ixp4xx-csr"
S = "${WORKDIR}"
COMPATIBLE_HOST = "^arm.*-linux.*"
+COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
PROVIDES = "virtual/ixp-eth"
RPROVIDES = "ixp-eth"
@@ -27,7 +28,7 @@ inherit module
# This is a somewhat arbitrary choice:
OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-IX_TARGET = "linux${ARCH_BYTE_SEX}"
+IX_TARGET = "linux${SITEINFO_ENDIANESS}"
EXTRA_OEMAKE = "'CC=${KERNEL_CC}' \
'LD=${KERNEL_LD}' \
diff --git a/packages/ixp425-eth/ixp400-eth_1.5.1.bb b/packages/ixp425-eth/ixp400-eth_1.5.1.bb
index 17a48e9b76..2fa04fc672 100644
--- a/packages/ixp425-eth/ixp400-eth_1.5.1.bb
+++ b/packages/ixp425-eth/ixp400-eth_1.5.1.bb
@@ -29,6 +29,7 @@ SRC_URI += "file://modprobe.conf"
S = "${WORKDIR}"
COMPATIBLE_HOST = "^arm.*-linux.*"
+COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
PROVIDES = "virtual/ixp-eth"
RPROVIDES = "ixp-eth"
@@ -38,7 +39,7 @@ inherit module
# This is a somewhat arbitrary choice:
OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-IX_TARGET = "linux${ARCH_BYTE_SEX}"
+IX_TARGET = "linux${SITEINFO_ENDIANESS}"
IX_ENSURE = ""
#IX_ENSURE = "-DIX_OSAL_ENSURE_ON=1"
# The following controls the name of the ethernet devices which get
diff --git a/packages/ixp425-eth/ixp400-eth_1.5.bb b/packages/ixp425-eth/ixp400-eth_1.5.bb
index ae2cdf2d78..5e25deb1d4 100644
--- a/packages/ixp425-eth/ixp400-eth_1.5.bb
+++ b/packages/ixp425-eth/ixp400-eth_1.5.bb
@@ -28,6 +28,7 @@ SRC_URI += "file://modprobe.conf"
S = "${WORKDIR}"
COMPATIBLE_HOST = "^arm.*-linux.*"
+COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
PROVIDES = "virtual/ixp-eth"
RPROVIDES = "ixp-eth"
@@ -37,7 +38,7 @@ inherit module
# This is a somewhat arbitrary choice:
OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-IX_TARGET = "linux${ARCH_BYTE_SEX}"
+IX_TARGET = "linux${SITEINFO_ENDIANESS}"
IX_ENSURE = ""
#IX_ENSURE = "-DIX_OSAL_ENSURE_ON=1"
# The following controls the name of the ethernet devices which get
diff --git a/packages/ixp4xx/ixp-osal_2.0.bb b/packages/ixp4xx/ixp-osal_2.0.bb
index 9983a840f9..009d45d67a 100644
--- a/packages/ixp4xx/ixp-osal_2.0.bb
+++ b/packages/ixp4xx/ixp-osal_2.0.bb
@@ -33,7 +33,7 @@ COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
inherit module
-IX_TARGET = "linux${ARCH_BYTE_SEX}"
+IX_TARGET = "linux${SITEINFO_ENDIANESS}"
EXTRA_OEMAKE = "'CC=${KERNEL_CC}' \
'LD=${KERNEL_LD}' \
diff --git a/packages/ixp4xx/ixp-osal_2.1.1.bb b/packages/ixp4xx/ixp-osal_2.1.1.bb
index 96754b6d71..481033fd0a 100644
--- a/packages/ixp4xx/ixp-osal_2.1.1.bb
+++ b/packages/ixp4xx/ixp-osal_2.1.1.bb
@@ -49,7 +49,7 @@ do_pre_patch () {
addtask pre_patch before do_patch
-IX_TARGET = "linux${ARCH_BYTE_SEX}"
+IX_TARGET = "linux${SITEINFO_ENDIANESS}"
IX_ENSURE = ""
#IX_ENSURE = "IX_OSAL_ENSURE_ON=1"
diff --git a/packages/ixp4xx/ixp-osal_2.1.bb b/packages/ixp4xx/ixp-osal_2.1.bb
index 077515a829..dd70289598 100644
--- a/packages/ixp4xx/ixp-osal_2.1.bb
+++ b/packages/ixp4xx/ixp-osal_2.1.bb
@@ -37,7 +37,7 @@ COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
inherit module
-IX_TARGET = "linux${ARCH_BYTE_SEX}"
+IX_TARGET = "linux${SITEINFO_ENDIANESS}"
IX_ENSURE = ""
#IX_ENSURE = "IX_OSAL_ENSURE_ON=1"
diff --git a/packages/ixp4xx/ixp4xx-csr_2.0.bb b/packages/ixp4xx/ixp4xx-csr_2.0.bb
index 9db1e7a1ca..a160fe4609 100644
--- a/packages/ixp4xx/ixp4xx-csr_2.0.bb
+++ b/packages/ixp4xx/ixp4xx-csr_2.0.bb
@@ -38,7 +38,7 @@ COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
inherit module
-IX_TARGET = "linux${ARCH_BYTE_SEX}"
+IX_TARGET = "linux${SITEINFO_ENDIANESS}"
OSAL_PATH = "lib/ixp425/linux/${IX_TARGET}"
# This is a somewhat arbitrary choice:
diff --git a/packages/ixp4xx/ixp4xx-csr_2.1.1.bb b/packages/ixp4xx/ixp4xx-csr_2.1.1.bb
index 072db8f976..cc063b523e 100644
--- a/packages/ixp4xx/ixp4xx-csr_2.1.1.bb
+++ b/packages/ixp4xx/ixp4xx-csr_2.1.1.bb
@@ -53,7 +53,7 @@ do_pre_patch () {
addtask pre_patch before do_patch
-IX_TARGET = "linux${ARCH_BYTE_SEX}"
+IX_TARGET = "linux${SITEINFO_ENDIANESS}"
IX_ENSURE = ""
#IX_ENSURE = "IX_OSAL_ENSURE_ON=1"
diff --git a/packages/ixp4xx/ixp4xx-csr_2.1.bb b/packages/ixp4xx/ixp4xx-csr_2.1.bb
index 440e22e664..e72de05071 100644
--- a/packages/ixp4xx/ixp4xx-csr_2.1.bb
+++ b/packages/ixp4xx/ixp4xx-csr_2.1.bb
@@ -46,7 +46,7 @@ COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
inherit module
-IX_TARGET = "linux${ARCH_BYTE_SEX}"
+IX_TARGET = "linux${SITEINFO_ENDIANESS}"
IX_ENSURE = ""
#IX_ENSURE = "IX_OSAL_ENSURE_ON=1"
diff --git a/packages/ixp4xx/ixp4xx-npe-native-2.3.2/.mtn2git_empty b/packages/ixp4xx/ixp4xx-npe-native-2.3.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ixp4xx/ixp4xx-npe-native-2.3.2/.mtn2git_empty
diff --git a/packages/ixp4xx/ixp4xx-npe-native-2.3/IxNpeMicrocode.h b/packages/ixp4xx/ixp4xx-npe-native-2.3.2/IxNpeMicrocode.h
index 1c3d1ff473..1c3d1ff473 100644
--- a/packages/ixp4xx/ixp4xx-npe-native-2.3/IxNpeMicrocode.h
+++ b/packages/ixp4xx/ixp4xx-npe-native-2.3.2/IxNpeMicrocode.h
diff --git a/packages/ixp4xx/ixp4xx-npe-native_2.3.2.bb b/packages/ixp4xx/ixp4xx-npe-native_2.3.2.bb
new file mode 100644
index 0000000000..5b8af8f254
--- /dev/null
+++ b/packages/ixp4xx/ixp4xx-npe-native_2.3.2.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Firmware converter for the IXP4xx line of devices"
+LICENSE = "Intel Public Licence"
+PR = "r0"
+
+SRC_URI = "http://You-Have-To-Download-The-Microcode-Manually-So-Please-Read-ixp4xx-npe_2.3.2.bb-For-Instructions/IPL_ixp400NpeLibrary-2_3_2.zip"
+SRC_URI += "file://IxNpeMicrocode.h"
+inherit native
+S = "${WORKDIR}/ixp400_xscale_sw/src/npeDl"
+
+do_compile() {
+ mv ${WORKDIR}/IxNpeMicrocode.h ${S}/
+ gcc -Wall IxNpeMicrocode.c -o IxNpeMicrocode
+}
+
+do_stage() {
+ mv ${S}/IxNpeMicrocode ${S}/IxNpeMicrocode-${PV}
+ install -d ${STAGING_BINDIR}/
+ install -m 0755 ${S}/IxNpeMicrocode-${PV} ${STAGING_BINDIR}/
+}
diff --git a/packages/ixp4xx/ixp4xx-npe-native_2.3.bb b/packages/ixp4xx/ixp4xx-npe-native_2.3.bb
deleted file mode 100644
index ab8909423f..0000000000
--- a/packages/ixp4xx/ixp4xx-npe-native_2.3.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "Firmware converter for the IXP4xx line of devices"
-LICENSE = "Intel Public Licence"
-PR = "r3"
-
-SRC_URI = "http://www.intel.com/Please-Read-The-BB-File/IPL_ixp400NpeLibrary-2_3.zip"
-SRC_URI += "file://IxNpeMicrocode.h"
-inherit native
-S = "${WORKDIR}/ixp400_xscale_sw/src/npeDl"
-
-do_compile() {
- mv ${WORKDIR}/IxNpeMicrocode.h ${S}/
- gcc -Wall IxNpeMicrocode.c -o IxNpeMicrocode
-}
-
-do_stage() {
- mv ${S}/IxNpeMicrocode ${S}/IxNpeMicrocode-${PV}
- install -d ${STAGING_BINDIR}/
- install -m 0755 ${S}/IxNpeMicrocode-${PV} ${STAGING_BINDIR}/
-}
diff --git a/packages/ixp4xx/ixp4xx-npe_2.1.bb b/packages/ixp4xx/ixp4xx-npe_2.1.bb
index 3370ad0c81..7fdc3abf63 100644
--- a/packages/ixp4xx/ixp4xx-npe_2.1.bb
+++ b/packages/ixp4xx/ixp4xx-npe_2.1.bb
@@ -11,14 +11,7 @@ COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
FILES_${PN} = "${base_libdir}/firmware/NPE-B"
do_compile() {
-# if test '${ARCH_BYTE_SEX}' = be
-# then
- ${STAGING_BINDIR_NATIVE}/IxNpeMicrocode-${PV} -be
-# fi
-# if test '${ARCH_BYTE_SEX}' = le
-# then
-# ${STAGING_BINDIR_NATIVE}/IxNpeMicrocode-${PV} -le
-# fi
+ ${STAGING_BINDIR_NATIVE}/IxNpeMicrocode-${PV} -be
}
do_install() {
diff --git a/packages/ixp4xx/ixp4xx-npe_2.3.2.bb b/packages/ixp4xx/ixp4xx-npe_2.3.2.bb
new file mode 100644
index 0000000000..3a13074240
--- /dev/null
+++ b/packages/ixp4xx/ixp4xx-npe_2.3.2.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "NPE firmware for the IXP4xx line of devices"
+LICENSE = "Intel Public Licence"
+PR = "r0"
+DEPENDS = "ixp4xx-npe-native"
+
+# You need to download the IPL_ixp400NpeLibrary-2_3_2.zip file (without crypto) from:
+# http://www.intel.com/design/network/products/npfamily/ixp400_current.htm
+# and put it in your downloads directory so bitbake will find it.
+# Make sure you *read* and accept the license - it is not a standard one.
+
+SRC_URI = "http://You-Have-To-Download-The-Microcode-Manually-So-Please-Read-ixp4xx-npe_2.3.2.bb-For-Instructions/IPL_ixp400NpeLibrary-2_3_2.zip"
+S = "${WORKDIR}/ixp400_xscale_sw/src/npeDl"
+
+COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
+
+FILES_${PN} = "${base_libdir}/firmware/NPE-B"
+
+do_compile() {
+ ${STAGING_BINDIR_NATIVE}/IxNpeMicrocode-${PV} -be
+}
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware/
+ rm ${S}/NPE-B
+ mv ${S}/NPE-B.* ${S}/NPE-B
+ install ${S}/NPE-B ${D}/${base_libdir}/firmware/
+}
+
+do_populate_staging() {
+ install -d ${STAGING_FIRMWARE_DIR}
+ install ${S}/NPE-B ${STAGING_FIRMWARE_DIR}/
+}
+
diff --git a/packages/ixp4xx/ixp4xx-npe_2.3.bb b/packages/ixp4xx/ixp4xx-npe_2.3.bb
deleted file mode 100644
index 571080bda0..0000000000
--- a/packages/ixp4xx/ixp4xx-npe_2.3.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-DESCRIPTION = "NPE firmware for the IXP4xx line of devices"
-LICENSE = "Intel Public Licence"
-PR = "r8"
-DEPENDS = "ixp4xx-npe-native"
-
-SRC_URI = "http://www.intel.com/Please-Read-The-BB-File/IPL_ixp400NpeLibrary-2_3.zip"
-S = "${WORKDIR}/ixp400_xscale_sw/src/npeDl"
-
-COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
-
-FILES_${PN} = "${base_libdir}/firmware/NPE-B"
-
-do_compile() {
-# if test '${ARCH_BYTE_SEX}' = be
-# then
- ${STAGING_BINDIR_NATIVE}/IxNpeMicrocode-${PV} -be
-# fi
-# if test '${ARCH_BYTE_SEX}' = le
-# then
-# ${STAGING_BINDIR_NATIVE}/IxNpeMicrocode-${PV} -le
-# fi
-}
-
-do_install() {
- install -d ${D}/${base_libdir}/firmware/
- rm ${S}/NPE-B
- mv ${S}/NPE-B.* ${S}/NPE-B
- install ${S}/NPE-B ${D}/${base_libdir}/firmware/
-}
-
-do_populate_staging() {
- install -d ${STAGING_FIRMWARE_DIR}
- install ${S}/NPE-B ${STAGING_FIRMWARE_DIR}/
-}
-
diff --git a/packages/jhead/jhead_2.6.0.bb b/packages/jhead/jhead_2.6.0.bb
index d37dc0c733..3779c1ec34 100644
--- a/packages/jhead/jhead_2.6.0.bb
+++ b/packages/jhead/jhead_2.6.0.bb
@@ -11,3 +11,8 @@ inherit autotools
do_configure() {
:
}
+
+do_install() {
+ install -d ${D}/bin
+ autotools_do_install
+}
diff --git a/packages/jpeg/jpeg-6b/libtool.patch b/packages/jpeg/jpeg-6b/libtool.patch
new file mode 100644
index 0000000000..c7fd858cfc
--- /dev/null
+++ b/packages/jpeg/jpeg-6b/libtool.patch
@@ -0,0 +1,49 @@
+--- /orig-makefile.cfg 2007-03-13 18:09:05.000000000 +0200
++++ /makefile.cfg 2007-03-13 21:42:33.000000000 +0200
+@@ -36,8 +36,10 @@
+ # To link any special libraries, add the necessary -l commands here.
+ LDLIBS= @LIBS@
+
++
+ # If using GNU libtool, LIBTOOL references it; if not, LIBTOOL is empty.
+ LIBTOOL = @LIBTOOL@
++
+ # $(O) expands to "lo" if using libtool, plain "o" if not.
+ # Similarly, $(A) expands to "la" or "a".
+ O = @O@
+@@ -55,7 +57,7 @@
+ # miscellaneous OS-dependent stuff
+ SHELL= /bin/sh
+ # linker
+-LN= @LN@
++LN= $(LIBTOOL) --tag=CC --mode=link $(CC)
+ # file deletion command
+ RM= rm -f
+ # directory creation command
+@@ -141,7 +143,7 @@
+
+ # How to compile with libtool.
+ @COM_LT@.c.lo:
+-@COM_LT@ $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $(srcdir)/$*.c
++@COM_LT@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(CFLAGS) -c $(srcdir)/$*.c
+
+ # How to use ansi2knr, when not using libtool.
+ @COM_A2K@.c.o:
+@@ -152,7 +154,7 @@
+ # How to use ansi2knr AND libtool.
+ @COM_A2K@.c.lo:
+ @COM_A2K@ ./ansi2knr $(srcdir)/$*.c knr/$*.c
+-@COM_A2K@ $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c knr/$*.c
++@COM_A2K@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) -c knr/$*.c
+ @COM_A2K@ $(RM) knr/$*.c
+
+ ansi2knr: ansi2knr.c
+@@ -169,7 +171,7 @@
+
+ # with libtool:
+ libjpeg.la: @A2K_DEPS@ $(LIBOBJECTS)
+- $(LIBTOOL) --mode=link $(CC) -o libjpeg.la $(LIBOBJECTS) \
++ $(LIBTOOL) --tag=CC --mode=link $(CC) -o libjpeg.la $(LIBOBJECTS) \
+ -rpath $(libdir) -version-info $(JPEG_LIB_VERSION) $(LDFLAGS)
+
+ # sample programs:
diff --git a/packages/jpeg/jpeg_6b.bb b/packages/jpeg/jpeg_6b.bb
index d725284694..c93aadb6ab 100644
--- a/packages/jpeg/jpeg_6b.bb
+++ b/packages/jpeg/jpeg_6b.bb
@@ -4,13 +4,18 @@ SECTION = "libs"
PRIORITY = "required"
DEPENDS = "libtool-cross"
+RPROVIDES_${PN} = "jpeg"
-PR = "r5"
+
+PR = "r7"
SRC_URI = "http://www.ijg.org/files/jpegsrc.v${PV}.tar.gz \
file://debian.patch;patch=1 \
file://ldflags.patch;patch=1 \
- file://paths.patch;patch=1"
+ file://paths.patch;patch=1 \
+ file://libtool.patch;patch=1 \
+ "
+
S = "${WORKDIR}/jpeg-${PV}"
inherit autotools
@@ -18,7 +23,7 @@ inherit autotools
EXTRA_OECONF="--enable-static --enable-shared"
EXTRA_OEMAKE='"LIBTOOL=${STAGING_BINDIR_NATIVE}/${HOST_SYS}-libtool"'
-CFLAGS_append = " -D_REENTRANT"
+CFLAGS_append = " -D_REENTRANT"
do_stage() {
install -m 644 jconfig.h ${STAGING_INCDIR}/jconfig.h
diff --git a/packages/js/files/arm/.mtn2git_empty b/packages/js/files/arm/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/js/files/arm/.mtn2git_empty
diff --git a/packages/js/files/arm/jsautocfg.h b/packages/js/files/arm/jsautocfg.h
new file mode 100644
index 0000000000..7e8171fc23
--- /dev/null
+++ b/packages/js/files/arm/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/js/files/powerpc/.mtn2git_empty b/packages/js/files/powerpc/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/js/files/powerpc/.mtn2git_empty
diff --git a/packages/mozilla/firefox-2.0/powerpc/jsautocfg.h b/packages/js/files/powerpc/jsautocfg.h
index 93d03744f2..93d03744f2 100644
--- a/packages/mozilla/firefox-2.0/powerpc/jsautocfg.h
+++ b/packages/js/files/powerpc/jsautocfg.h
diff --git a/packages/js/js_1.5.bb b/packages/js/js_1.5.bb
index 5f8323769f..f53a4f83a5 100644
--- a/packages/js/js_1.5.bb
+++ b/packages/js/js_1.5.bb
@@ -1,14 +1,13 @@
-LICENSE = "GPL"
DESCRIPTION = "A JavaScript engine"
-SECTION = "libs"
+LICENSE = "GPL"
+SECTION = "libs/network"
DEPENDS = "readline"
-SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/js/js-1.5.tar.gz \
- file://jsautocfg.h"
-S = "${WORKDIR}/js/src"
+PR = "r1"
-FILES_${PN} = "${libdir}/lib*.so"
-FILES_${PN}-dev = "${includedir} ${libdir}/lib*.a"
+SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/js/older-packages/js-1.5.tar.gz \
+ file://jsautocfg.h"
+S = "${WORKDIR}/js/src"
EXTRA_OEMAKE = "'CC=${CC}' 'LD=${LD}' 'XCFLAGS=${CFLAGS}' 'XLDFLAGS=-L${STAGING_LIBDIR} -soname=libjs'"
@@ -33,3 +32,6 @@ do_stage() {
install -m 0644 ${S}/*.h ${STAGING_INCDIR}/js/
oe_libinstall -so -C Linux_All_DBG.OBJ libjs ${STAGING_LIBDIR}
}
+
+FILES_${PN} = "${libdir}/lib*.so"
+FILES_${PN}-dev = "${includedir} ${libdir}/lib*.a"
diff --git a/packages/kakasi/.mtn2git_empty b/packages/kakasi/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/kakasi/.mtn2git_empty
diff --git a/packages/kakasi/files/.mtn2git_empty b/packages/kakasi/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/kakasi/files/.mtn2git_empty
diff --git a/packages/kakasi/files/makefile.patch b/packages/kakasi/files/makefile.patch
new file mode 100644
index 0000000000..4373a498c1
--- /dev/null
+++ b/packages/kakasi/files/makefile.patch
@@ -0,0 +1,11 @@
+--- kakasi-2.3.4/Makefile.am.old 2006-04-23 18:11:57.000000000 +0200
++++ kakasi-2.3.4/Makefile.am 2006-04-23 18:12:07.000000000 +0200
+@@ -17,7 +17,7 @@
+
+ kanwadict:
+ if test -f kakasidict; then \
+- ITAIJIDICT="itaijidict" src/mkkanwa$(EXEEXT) $@ kakasidict; \
++ ITAIJIDICT="itaijidict" mkkanwa$(EXEEXT) $@ kakasidict; \
+ fi
+
+ dist-hook:
diff --git a/packages/kakasi/kakasi-native_2.3.4.bb b/packages/kakasi/kakasi-native_2.3.4.bb
new file mode 100644
index 0000000000..86a4c81b44
--- /dev/null
+++ b/packages/kakasi/kakasi-native_2.3.4.bb
@@ -0,0 +1,11 @@
+require kakasi.inc
+
+inherit native
+
+S = "${WORKDIR}/kakasi-${PV}"
+
+do_stage() {
+ install src/mkkanwa ${STAGING_BINDIR}
+}
+
+
diff --git a/packages/kakasi/kakasi.inc b/packages/kakasi/kakasi.inc
new file mode 100644
index 0000000000..b931a84958
--- /dev/null
+++ b/packages/kakasi/kakasi.inc
@@ -0,0 +1,9 @@
+DESCRIPTION = "Kanji Kana Simple Inverter"
+HOMEPAGE = "http://kakasi.namazu.org/"
+LICENSE = "GPL"
+
+SRC_URI = "http://kakasi.namazu.org/stable/kakasi-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = " --enable-shared"
diff --git a/packages/kakasi/kakasi_2.3.4.bb b/packages/kakasi/kakasi_2.3.4.bb
new file mode 100644
index 0000000000..aabfd20368
--- /dev/null
+++ b/packages/kakasi/kakasi_2.3.4.bb
@@ -0,0 +1,14 @@
+require kakasi.inc
+
+SECTION = "utils"
+DEPENDS = "kakasi-native"
+
+SRC_URI += "file://makefile.patch;patch=1"
+
+do_stage () {
+ install -m 0644 lib/*.h ${STAGING_INCDIR}
+ install lib/.libs/libkakasi.so* ${STAGING_LIBDIR}
+}
+
+
+
diff --git a/packages/kanjipad/.mtn2git_empty b/packages/kanjipad/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/kanjipad/.mtn2git_empty
diff --git a/packages/kanjipad/files/.mtn2git_empty b/packages/kanjipad/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/kanjipad/files/.mtn2git_empty
diff --git a/packages/kanjipad/files/Makefile-kpengine-only.patch b/packages/kanjipad/files/Makefile-kpengine-only.patch
new file mode 100644
index 0000000000..5ea650e4e7
--- /dev/null
+++ b/packages/kanjipad/files/Makefile-kpengine-only.patch
@@ -0,0 +1,38 @@
+--- kanjipad-2.0.0.orig/Makefile 2002-08-25 21:00:54 +0200
++++ kanjipad-2.0.0/Makefile 2005-08-07 23:04:03 +0200
+@@ -5,7 +5,7 @@
+ GTKLIBS=$(shell pkg-config --libs gtk+-2.0)
+ GLIBLIBS=$(shell pkg-config --libs glib-2.0)
+
+-PREFIX=/usr/local
++PREFIX=/usr
+ DATADIR=$(PREFIX)/share
+
+ # location in which binaries are installed
+@@ -28,7 +28,7 @@
+ OBJS = kpengine.o scoring.o util.o
+ CFLAGS = $(OPTIMIZE) $(GTKINC) -DFOR_PILOT_COMPAT -DKP_LIBDIR=\"$(LIBDIR)\" -DBINDIR=\"$(BINDIR)\"
+
+-all: kpengine kanjipad jdata.dat
++all: kpengine jdata.dat
+
+ scoring.o: jstroke/scoring.c
+ $(CC) -c -o scoring.o $(CFLAGS) -Ijstroke jstroke/scoring.c
+@@ -45,9 +45,8 @@
+ jdata.dat: jstroke/strokedata.h conv_jdata.pl
+ perl conv_jdata.pl < jstroke/strokedata.h > jdata.dat
+
+-install: kanjipad kpengine jdata.dat
++install: kpengine jdata.dat
+ install -d $(DESTDIR)$(BINDIR)
+- install -m 0755 kanjipad $(DESTDIR)$(BINDIR)/kanjipad
+ install -m 0755 kpengine $(DESTDIR)$(BINDIR)/kpengine
+ install -d $(DESTDIR)$(LIBDIR)
+ install -m 0644 jdata.dat $(DESTDIR)$(LIBDIR)/jdata.dat
+@@ -75,4 +74,4 @@
+ cd .. && \
+ rm -rf $$distdir
+
+-.PHONY: dist distcheck
+\ No newline at end of file
++.PHONY: dist distcheck
diff --git a/packages/kanjipad/kanjipad.inc b/packages/kanjipad/kanjipad.inc
new file mode 100644
index 0000000000..ce9613b3ab
--- /dev/null
+++ b/packages/kanjipad/kanjipad.inc
@@ -0,0 +1,11 @@
+DESCRIPTION = "Hand-writing recognition for Japanese Kanji characters (no kana)"
+AUTHOR = "Owen Taylor <otaylor@fishsoup.net>"
+HOMEPAGE = "http://fishsoup.net/software/kanjipad/"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+SRC_URI="http://fishsoup.net/software/kanjipad/kanjipad-2.0.0.tar.gz"
+
+S = ${WORKDIR}/kanjipad-2.0.0/
+
+inherit autotools pkgconfig
diff --git a/packages/kanjipad/kpengine_0.1.bb b/packages/kanjipad/kpengine_0.1.bb
new file mode 100644
index 0000000000..d9a6fee7d6
--- /dev/null
+++ b/packages/kanjipad/kpengine_0.1.bb
@@ -0,0 +1,9 @@
+require kanjipad.inc
+
+DESCRIPTION = "Japanese HWR engine used by a number of programs. Original algorithms by Todd Ruddick."
+SECTION = "inputmethods"
+PR = "r1"
+
+SRC_URI += "file://Makefile-kpengine-only.patch;patch=1"
+
+FILES_${PN} = "${bindir}/kpengine ${datadir}"
diff --git a/packages/kazehakase/.mtn2git_empty b/packages/kazehakase/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/kazehakase/.mtn2git_empty
diff --git a/packages/kazehakase/kazehakase_0.4.5.bb b/packages/kazehakase/kazehakase_0.4.5.bb
new file mode 100644
index 0000000000..494e19bad9
--- /dev/null
+++ b/packages/kazehakase/kazehakase_0.4.5.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "A gtk-webcore based browser"
+HOMEPAGE = "http://kazehakase.sourceforge.jp/"
+SECTION = "x11/network"
+LICENSE = "GPLv2"
+DEPENDS = "osb-nrcit glib-2.0"
+SRC_URI = "http://osdn.dl.sourceforge.jp/kazehakase/24791/kazehakase-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+DEFAULT_PREFERENCE = "-1"
+
diff --git a/packages/kdepimpi/files/qt-mt.patch b/packages/kdepimpi/files/qt-mt.patch
new file mode 100644
index 0000000000..c7e3f9d88a
--- /dev/null
+++ b/packages/kdepimpi/files/qt-mt.patch
@@ -0,0 +1,41 @@
+diff --git a/microkde/kresources/resource.cpp b/microkde/kresources/resource.cpp
+index cccd485..65d82e2 100644
+--- a/microkde/kresources/resource.cpp
++++ b/microkde/kresources/resource.cpp
+@@ -29,6 +29,23 @@
+
+ using namespace KRES;
+
++namespace fixme {
++ class QMutexLocker {
++ public:
++ QMutexLocker(QMutex *m) : mtx(m) {
++ if(mtx) mtx->lock();
++ }
++ ~QMutexLocker() {
++ if(mtx) mtx->unlock();
++ }
++
++ QMutex *mutex() const { return mtx; }
++ private:
++ QMutex *mtx;
++ };
++}
++using namespace fixme;
++
+ class Resource::ResourcePrivate
+ {
+ public:
+diff --git a/microkde/kresources/resource.h b/microkde/kresources/resource.h
+index ed5af96..997fff6 100644
+--- a/microkde/kresources/resource.h
++++ b/microkde/kresources/resource.h
+@@ -25,7 +25,7 @@
+
+ //US
+ #ifdef QT_THREAD_SUPPORT
+-#include <qmutex.h>
++#include <qthread.h>
+ #endif //QT_THREAD_SUPPORT
+
+ #include <qvaluelist.h>
diff --git a/packages/kdepimpi/kdepimpi_2.2.7.bb b/packages/kdepimpi/kdepimpi_2.2.7.bb
index 6059bf8528..ca4d5c0786 100644
--- a/packages/kdepimpi/kdepimpi_2.2.7.bb
+++ b/packages/kdepimpi/kdepimpi_2.2.7.bb
@@ -1,5 +1,6 @@
SRC_URI = "${SOURCEFORGE_MIRROR}/kdepimpi/kdepimpi-${PV}.tar.gz \
- file://gcc4.patch;patch=1"
+ file://gcc4.patch;patch=1 \
+ file://qt-mt.patch;patch=1"
require kdepimpi-base.inc
diff --git a/packages/kexec/kexec-tools-1.101/kexec-tools-arm.patch b/packages/kexec/kexec-tools-1.101/kexec-tools-arm.patch
index b36a476d82..6e43b76096 100644
--- a/packages/kexec/kexec-tools-1.101/kexec-tools-arm.patch
+++ b/packages/kexec/kexec-tools-1.101/kexec-tools-arm.patch
@@ -285,7 +285,7 @@ Index: kexec-tools-1.101/kexec/kexec-syscall.h
#define __NR_kexec_load 246
#endif
+#ifdef __arm__
-+#define __NR_kexec_load __NR_SYSCALL_BASE + 189
++#define __NR_kexec_load __NR_SYSCALL_BASE + 347
+#endif
#ifndef __NR_kexec_load
#error Unknown processor architecture. Needs a kexec_load syscall number.
diff --git a/packages/kexec/kexec-tools_1.101.bb b/packages/kexec/kexec-tools_1.101.bb
index fe2b5e1765..4dfab1e06f 100644
--- a/packages/kexec/kexec-tools_1.101.bb
+++ b/packages/kexec/kexec-tools_1.101.bb
@@ -4,7 +4,7 @@ HOMEPAGE = "http://www.xmission.com/~ebiederm/files/kexec/"
SECTION = "kernel/userland"
DEPENDS = "virtual/kernel zlib"
LICENSE = "GPL"
-PR = "r0"
+PR = "r1"
inherit autotools
diff --git a/packages/keymaps/files/collie/keymap-2.6.map b/packages/keymaps/files/collie/keymap-2.6.map
index 9aca5abb38..13eb7d2881 100644
--- a/packages/keymaps/files/collie/keymap-2.6.map
+++ b/packages/keymaps/files/collie/keymap-2.6.map
@@ -6,7 +6,6 @@
# as Altgr, and simply use a proper keymap. Said keymap is as
# follows.
# keymaps 0-2,4-5,8,12,20
-keycode 1 = Escape Escape
keycode 14 = BackSpace
shift keycode 14 = BackSpace
control keycode 14 = Delete
@@ -147,7 +146,7 @@ keycode 53 = slash
control keycode 53 = Num_Lock
shiftl control keycode 53 = Num_Lock
control shiftr keycode 53 = Num_Lock
-keycode 54 = Shift
+keycode 54 = AltGr
keycode 55 = KP_Multiply
keycode 56 = Alt
keycode 57 = space
@@ -155,7 +154,7 @@ keycode 57 = space
control keycode 57 = nul
shiftl control keycode 57 = grave
control shiftr keycode 57 = grave
-keycode 97 = Control
+keycode 67 = Control
keycode 99 = Control_backslash
control keycode 99 = Control_backslash
keycode 100 = AltGr
@@ -164,6 +163,7 @@ keycode 105 = Left
keycode 106 = Right
keycode 107 = Select
keycode 108 = Down
+keycode 116 = Escape
string F1 = "\033[[A"
string F2 = "\033[[B"
string F3 = "\033[[C"
diff --git a/packages/keymaps/files/htcuniversal/.mtn2git_empty b/packages/keymaps/files/htcuniversal/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/keymaps/files/htcuniversal/.mtn2git_empty
diff --git a/packages/keymaps/files/htcuniversal/keymap-2.6.map b/packages/keymaps/files/htcuniversal/keymap-2.6.map
new file mode 100644
index 0000000000..91ca66e0a1
--- /dev/null
+++ b/packages/keymaps/files/htcuniversal/keymap-2.6.map
@@ -0,0 +1,10 @@
+#altgr keycode 18 = euro
+altgr keycode 15 = tilde
+altgr keycode 24 = slash
+altgr keycode 25 = backslash
+altgr keycode 32 = pound
+altgr keycode 37 = quotedbl
+altgr keycode 38 = apostrophe
+altgr keycode 50 = question
+altgr keycode 51 = semicolon
+altgr keycode 52 = colon
diff --git a/packages/keymaps/keymaps_1.0.bb b/packages/keymaps/keymaps_1.0.bb
index 2766fad2f4..0508facaa6 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 = "r11"
+PR = "r14"
inherit update-rc.d
@@ -17,6 +17,7 @@ SRC_URI_append_collie = " file://keymap-*.map"
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"
INITSCRIPT_NAME = "keymap"
INITSCRIPT_PARAMS = "start 00 S ."
@@ -26,7 +27,7 @@ do_install () {
install -m 0755 ${WORKDIR}/keymap ${D}${sysconfdir}/init.d/
case ${MACHINE} in
- c7x0 | tosa | spitz | akita | borzoi | collie | poodle | jornada6xx | h2200)
+ c7x0 | tosa | spitz | akita | borzoi | collie | poodle | jornada6xx | h2200 | htcuniversal )
install -m 0644 ${WORKDIR}/keymap-*.map ${D}${sysconfdir}
;;
*)
diff --git a/packages/kismet/files/no-chmod.patch b/packages/kismet/files/no-chmod.patch
new file mode 100644
index 0000000000..b22c513b68
--- /dev/null
+++ b/packages/kismet/files/no-chmod.patch
@@ -0,0 +1,173 @@
+--- kismet-2006-04-R1/Makefile.in.orig 2006-09-14 11:37:20.000000000 +0100
++++ kismet-2006-04-R1/Makefile.in 2006-09-14 11:38:01.000000000 +0100
+@@ -130,52 +130,52 @@
+ fi
+
+ binuserinstall:
+- install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(PS) $(BIN)/$(PS);
+- install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(DRONE) $(BIN)/$(DRONE);
++ install -m 755 $(PS) $(BIN)/$(PS);
++ install -m 755 $(DRONE) $(BIN)/$(DRONE);
+
+ binsuidinstall:
+- install -o $(INSTUSR) -g $(INSTGRP) -s -m 4755 $(PS) $(BIN)/$(PS);
+- install -o $(INSTUSR) -g $(INSTGRP) -s -m 4755 $(DRONE) $(BIN)/$(DRONE);
++ install -m 4755 $(PS) $(BIN)/$(PS);
++ install -m 4755 $(DRONE) $(BIN)/$(DRONE);
+
+ commoninstall:
+ mkdir -p $(ETC)
+ mkdir -p $(BIN)
+
+- install -o $(INSTUSR) -g $(INSTGRP) -m 755 scripts/kismet $(BIN)/kismet
+- install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(NC) $(BIN)/$(NC)
+- # install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(HOPPER) $(BIN)/$(HOPPER)
++ install -m 755 scripts/kismet $(BIN)/kismet
++ install -m 755 $(NC) $(BIN)/$(NC)
++ # install -m 755 $(HOPPER) $(BIN)/$(HOPPER)
+ @if test "$(ZAURUS)" = "yes"; then \
+- install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(BUZZER) $(BIN)/buzzme; \
+- echo install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(BUZZER) $(BIN)/buzzme; \
++ install -m 755 $(BUZZER) $(BIN)/buzzme; \
++ echo install -m 755 $(BUZZER) $(BIN)/buzzme; \
+ fi
+-#install -o $(INSTUSR) -g $(INSTGRP) -m 755 scripts/kismet_monitor $(BIN)/kismet_monitor
+-#install -o $(INSTUSR) -g $(INSTGRP) -m 755 scripts/kismet_unmonitor $(BIN)/kismet_unmonitor
++#install -m 755 scripts/kismet_monitor $(BIN)/kismet_monitor
++#install -m 755 scripts/kismet_unmonitor $(BIN)/kismet_unmonitor
+ mkdir -p $(MAN)/man1
+- install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet.1 $(MAN)/man1/kismet.1
+- # install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet_monitor.1 $(MAN)/man1/kismet_monitor.1
+- # install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet_hopper.1 $(MAN)/man1/kismet_hopper.1
+- install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet_drone.1 $(MAN)/man1/kismet_drone.1
++ install -m 644 man/kismet.1 $(MAN)/man1/kismet.1
++ # install -m 644 man/kismet_monitor.1 $(MAN)/man1/kismet_monitor.1
++ # install -m 644 man/kismet_hopper.1 $(MAN)/man1/kismet_hopper.1
++ install -m 644 man/kismet_drone.1 $(MAN)/man1/kismet_drone.1
+ mkdir -p $(MAN)/man5
+- install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet.conf.5 $(MAN)/man5/kismet.conf.5
+- install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet_ui.conf.5 $(MAN)/man5/kismet_ui.conf.5
+- install -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet_drone.conf.5 $(MAN)/man5/kismet_drone.conf.5
++ install -m 644 man/kismet.conf.5 $(MAN)/man5/kismet.conf.5
++ install -m 644 man/kismet_ui.conf.5 $(MAN)/man5/kismet_ui.conf.5
++ install -m 644 man/kismet_drone.conf.5 $(MAN)/man5/kismet_drone.conf.5
+
+ @if test "$(GPSLBUILD)" = "$(GPSL)"; then \
+- install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(GPSL) $(BIN)/$(GPSL); \
+- echo install -o $(INSTUSR) -g $(INSTGRP) -s -m 755 $(GPSL) $(BIN)/$(GPSL); \
+- install -o $(INSTUSR) -g $(INSTGRP) -m 755 scripts/gpsmap-helper-earthamaps $(BIN)/gpsmap-helper-earthamaps; \
+- echo install -o $(INSTUSR) -g $(INSTGRP) -m 755 scripts/gpsmap-helper-earthamaps $(BIN)/gpsmap-helper-earthamaps; \
+- install -o $(INSTUSR) -g $(MANGRP) -m 644 man/gpsmap.1 $(MAN)/man1/gpsmap.1; \
+- echo install -o $(INSTUSR) -g $(MANGRP) -m 644 man/gpsmap.1 $(MAN)/man1/gpsmap.1; \
++ install -m 755 $(GPSL) $(BIN)/$(GPSL); \
++ echo install -m 755 $(GPSL) $(BIN)/$(GPSL); \
++ install -m 755 scripts/gpsmap-helper-earthamaps $(BIN)/gpsmap-helper-earthamaps; \
++ echo install -m 755 scripts/gpsmap-helper-earthamaps $(BIN)/gpsmap-helper-earthamaps; \
++ install -m 644 man/gpsmap.1 $(MAN)/man1/gpsmap.1; \
++ echo install -m 644 man/gpsmap.1 $(MAN)/man1/gpsmap.1; \
+ fi
+
+ mkdir -p $(WAV)
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 wav/new_network.wav $(WAV)/new_network.wav
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 wav/traffic.wav $(WAV)/traffic.wav
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 wav/junk_traffic.wav $(WAV)/junk_traffic.wav
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 wav/alert.wav $(WAV)/alert.wav
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/ap_manuf $(ETC)/ap_manuf;
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/client_manuf $(ETC)/client_manuf;
++ install -m 644 wav/new_network.wav $(WAV)/new_network.wav
++ install -m 644 wav/traffic.wav $(WAV)/traffic.wav
++ install -m 644 wav/junk_traffic.wav $(WAV)/junk_traffic.wav
++ install -m 644 wav/alert.wav $(WAV)/alert.wav
++ install -m 644 conf/ap_manuf $(ETC)/ap_manuf;
++ install -m 644 conf/client_manuf $(ETC)/client_manuf;
+
+ @if test -f $(BIN)/kismet_curses; then \
+ echo "Removing old kismet_curses binary. The panels frontend is now kismet_client."; \
+@@ -188,22 +188,22 @@
+ @if test -f $(ETC)/kismet.conf; then \
+ $(MAKE) -e checkconfig; \
+ else \
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
+- echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
++ install -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
++ echo install -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
+ echo "Installed config into $(ETC)/kismet.conf."; \
+ fi
+ @if test -f $(ETC)/kismet_drone.conf; then \
+ $(MAKE) -e checkdroneconfig; \
+ else \
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
+- echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
++ install -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
++ echo install -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
+ echo "Installed drone config into $(ETC)/kismet_drone.conf."; \
+ fi
+ @if test -f $(ETC)/kismet_ui.conf; then \
+ $(MAKE) -e checkuiconfig; \
+ else \
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
+- echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
++ install -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
++ echo install -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
+ echo "Installed UI config into $(ETC)/kismet_ui.conf."; \
+ fi
+ @echo "Installed kismet into $(BIN)/."
+@@ -221,22 +221,22 @@
+ @if test -f $(ETC)/kismet.conf; then \
+ $(MAKE) -e checkconfig; \
+ else \
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
+- echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
++ install -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
++ echo install -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
+ echo "Installed config into $(ETC)/kismet.conf."; \
+ fi
+ @if test -f $(ETC)/kismet_drone.conf; then \
+ $(MAKE) -e checkdroneconfig; \
+ else \
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
+- echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
++ install -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
++ echo install -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
+ echo "Installed drone config into $(ETC)/kismet_drone.conf."; \
+ fi
+ @if test -f $(ETC)/kismet_ui.conf; then \
+ $(MAKE) -e checkuiconfig; \
+ else \
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
+- echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
++ install -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
++ echo install -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
+ echo "Installed UI config into $(ETC)/kismet_ui.conf."; \
+ fi
+ @echo "Installed kismet into $(BIN)/."
+@@ -252,11 +252,11 @@
+ forceinstall: $(PS)
+ $(MAKE) -e commoninstall
+ $(MAKE) -e binuserinstall
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
++ install -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
+ echo "Installed config into $(ETC)/kismet.conf.";
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
++ install -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
+ echo "Installed drone config into $(ETC)/kismet_drone.conf.";
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
++ install -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
+ echo "Installed UI config into $(ETC)/kismet_ui.conf.";
+ @echo "Installed kismet into $(BIN)/."
+ @echo "If you have not done so already, read the README file and the FAQ file. Additional"
+@@ -271,11 +271,11 @@
+ suidforceinstall: $(PS)
+ $(MAKE) -e commoninstall
+ $(MAKE) -e binsuidinstall
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
++ install -m 644 conf/kismet.conf $(ETC)/kismet.conf; \
+ echo "Installed config into $(ETC)/kismet.conf.";
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
++ install -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \
+ echo "Installed drone config into $(ETC)/kismet_drone.conf.";
+- install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
++ install -m 644 conf/kismet_ui.conf $(ETC)/kismet_ui.conf; \
+ echo "Installed UI config into $(ETC)/kismet_ui.conf.";
+ @echo "Installed kismet into $(BIN)/."
+ @echo "If you have not done so already, read the README file and the FAQ file. Additional"
diff --git a/packages/kismet/kismet_2007-01-R1b.bb b/packages/kismet/kismet_2007-01-R1b.bb
new file mode 100644
index 0000000000..774e71e286
--- /dev/null
+++ b/packages/kismet/kismet_2007-01-R1b.bb
@@ -0,0 +1,28 @@
+SECTION = "console/network"
+DESCRIPTION = "Kismet is an 802.11 layer2 wireless network detector, sniffer, and intrusion detection system"
+HOMEPAGE = "http://www.kismetwireless.net/"
+LICENSE = "GPLv2"
+DEPENDS = "expat gmp"
+
+SRC_URI = "http://www.kismetwireless.net/code/kismet-2007-01-R1b.tar.gz \
+ file://no-chmod.patch;patch=1"
+
+
+EXTRA_OECONF = "--with-pcap=linux --disable-setuid --with-linuxheaders=${STAGING_KERNEL_DIR}/include"
+
+inherit autotools
+
+do_configure() {
+ oe_runconf
+}
+
+do_install_append() {
+ if test -e ${WORKDIR}/kismet.conf; then
+ install -m 644 ${WORKDIR}/kismet.conf ${D}${sysconfdir}/
+ fi
+}
+
+PACKAGES =+ "kismet-sounds"
+FILES_kismet-sounds = "/usr/share/kismet/wav"
+
+CONFFILES_${PN}_nylon = "${sysconfdir}/kismet.conf"
diff --git a/packages/lame/lame/Makefile-lm.patch b/packages/lame/lame/Makefile-lm.patch
new file mode 100644
index 0000000000..cbbb1706ce
--- /dev/null
+++ b/packages/lame/lame/Makefile-lm.patch
@@ -0,0 +1,22 @@
+--- lame-3.96.1/libmp3lame/Makefile.am.old 2007-01-16 13:41:48.000000000 +0000
++++ lame-3.96.1/libmp3lame/Makefile.am 2007-01-16 13:41:53.000000000 +0000
+@@ -18,7 +18,7 @@
+ decoder_ldadd =
+ endif
+
+-libmp3lame_la_LIBADD = $(nasm_ldadd) $(decoder_ldadd)
++libmp3lame_la_LIBADD = $(nasm_ldadd) $(decoder_ldadd) -lm
+ libmp3lame_la_LDFLAGS = -version-info @LIB_MAJOR_VERSION@:@LIB_MINOR_VERSION@ \
+ -no-undefined
+
+--- lame-3.96.1/libmp3lame/Makefile.in.old 2007-01-16 13:47:17.000000000 +0000
++++ lame-3.96.1/libmp3lame/Makefile.in 2007-01-16 13:47:29.000000000 +0000
+@@ -177,7 +177,7 @@
+ @LIB_WITH_DECODER_TRUE@decoder_ldadd = $(top_builddir)/mpglib/libmpgdecoder.la
+ @LIB_WITH_DECODER_FALSE@decoder_ldadd =
+
+-libmp3lame_la_LIBADD = $(nasm_ldadd) $(decoder_ldadd)
++libmp3lame_la_LIBADD = $(nasm_ldadd) $(decoder_ldadd) -lm
+ libmp3lame_la_LDFLAGS = -version-info @LIB_MAJOR_VERSION@:@LIB_MINOR_VERSION@ \
+ -no-undefined
+
diff --git a/packages/lame/lame_3.96.1.bb b/packages/lame/lame_3.96.1.bb
index edb4265f13..0c5c245829 100644
--- a/packages/lame/lame_3.96.1.bb
+++ b/packages/lame/lame_3.96.1.bb
@@ -1,10 +1,11 @@
SECTION = "console/utils"
DESCRIPTION = "Not an MP3 encoder"
LICENSE = "LGPL"
-PR = "r3"
+PR = "r4"
SRC_URI = "${SOURCEFORGE_MIRROR}/lame/lame-${PV}.tar.gz \
- file://no-gtk1.patch;patch=1"
+ file://no-gtk1.patch;patch=1 \
+ file://Makefile-lm.patch;patch=1"
inherit autotools
diff --git a/packages/lcdproc/lcdproc_0.5.1.bb b/packages/lcdproc/lcdproc_0.5.1.bb
new file mode 100644
index 0000000000..aa1b26e544
--- /dev/null
+++ b/packages/lcdproc/lcdproc_0.5.1.bb
@@ -0,0 +1,124 @@
+DESCRIPTION = "LCDproc is a client/Server suite to drive all kinds of LCD (-like) devices. The client \
+shipped with this package can be used to acquire various kinds of system stats."
+HOMEPAGE = "http://lcdproc.org"
+LICENSE = "GPL"
+PRIORITY = "optional"
+SECTION = "utils"
+PR="r2"
+
+DEPENDS = "libusb ncurses libg15 g15daemon libg15render"
+RRECOMMENDS_lcdproc = "lcdd"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/lcdproc/${P}.tar.gz"
+
+inherit autotools update-rc.d
+
+PACKAGES =+ "lcdd lcdvc lcdd-driver-cfontz lcdd-driver-bayrad lcdd-driver-hd44780nousb \
+ lcdd-driver-hd44780 lcdd-driver-mtxorb lcdd-driver-serialvfd \
+ lcdd-driver-curses lcdd-driver-text \
+ lcdd-driver-sed lcdd-driver-cwlnx lcdd-driver-glk lcdd-driver-icp-a106 \
+ lcdd-driver-imon lcdd-driver-joy lcdd-driver-lb216 lcdd-driver-lcdm001 \
+ lcdd-driver-lcterm lcdd-driver-ms6931 lcdd-driver-mtc-s16209x \
+ lcdd-driver-noritakevfd lcdd-driver-pyramid lcdd-driver-sli \
+ lcdd-driver-stv5730 lcdd-driver-t6963 lcdd-driver-tyan lcdd-driver-g15"
+
+CONFFILES_lcdd = "${sysconfdir}/LCDd.conf"
+CONFFILES_lcdproc = "${sysconfdir}/lcdproc.conf"
+CONFFILES_lcdvc = "${sysconfdir}/lcdvc.conf"
+
+FILES_lcdd = "${CONFFILES_lcdd} \
+ ${sbindir}/LCDd \
+ ${sysconfdir}/init.d/lcdd"
+
+FILES_lcdproc = "${CONFFILES_lcdproc} \
+ ${bindir}/lcdproc \
+ ${sysconfdir}/init.d/lcdproc"
+
+FILES_lcdvc = "${CONFFILES_lcdvc} \
+ ${sbindir}/lcdvc"
+
+# Driver packages
+
+FILES_lcdd-driver-cfontz = "${libdir}/lcdproc/CFontz*.so"
+FILES_lcdd-driver-bayrad = "${libdir}/lcdproc/bayrad.so"
+FILES_lcdd-driver-hd44780nousb = "${libdir}/lcdproc/hd44780nousb.so"
+FILES_lcdd-driver-hd44780 = "${libdir}/lcdproc/hd44780.so"
+FILES_lcdd-driver-mtxorb = "${libdir}/lcdproc/MtxOrb.so"
+FILES_lcdd-driver-serialvfd = "${libdir}/lcdproc/serialVFD.so"
+FILES_lcdd-driver-curses = "${libdir}/lcdproc/curses.so"
+FILES_lcdd-driver-text = "${libdir}/lcdproc/text.so"
+FILES_lcdd-driver-sed = "${libdir}/lcdproc/sed*.so"
+FILES_lcdd-driver-cwlnx = "${libdir}/lcdproc/CwLnx.so"
+FILES_lcdd-driver-glk = "${libdir}/lcdproc/glk.so"
+FILES_lcdd-driver-icp-a106 = "${libdir}/lcdproc/icp_a106.so"
+FILES_lcdd-driver-imon = "${libdir}/lcdproc/imon.so"
+FILES_lcdd-driver-joy = "${libdir}/lcdproc/joy.so"
+FILES_lcdd-driver-lb216 = "${libdir}/lcdproc/lb216.so"
+FILES_lcdd-driver-lcdm001 = "${libdir}/lcdproc/lcdm001.so"
+FILES_lcdd-driver-lcterm = "${libdir}/lcdproc/lcterm.so"
+FILES_lcdd-driver-ms6931 = "${libdir}/lcdproc/ms6931.so"
+FILES_lcdd-driver-mtc-s16209x = "${libdir}/lcdproc/mtc_s16209x.so"
+FILES_lcdd-driver-noritakevfd = "${libdir}/lcdproc/NoritakeVFD.so"
+FILES_lcdd-driver-pyramid = "${libdir}/lcdproc/pyramid.so"
+FILES_lcdd-driver-sli = "${libdir}/lcdproc/sli.so"
+FILES_lcdd-driver-stv5730 = "${libdir}/lcdproc/stv5730.so"
+FILES_lcdd-driver-t6963 = "${libdir}/lcdproc/t6963.so"
+FILES_lcdd-driver-tyan = "${libdir}/lcdproc/tyan.so"
+FILES_lcdd-driver-g15 = "${libdir}/lcdproc/g15.so"
+
+
+# Install-all-drivers-hack:
+
+DEPENDS_lcdd-driver-all = "lcdd-driver-cfontz lcdd-driver-bayrad lcdd-driver-hd44780nousb \
+ lcdd-driver-hd44780 lcdd-driver-mtxorb lcdd-driver-serialvfd \
+ lcdd-driver-curses lcdd-driver-text \
+ lcdd-driver-sed lcdd-driver-cwlnx lcdd-driver-glk lcdd-driver-icp-a106 \
+ lcdd-driver-imon lcdd-driver-joy lcdd-driver-lb216 lcdd-driver-lcdm001 \
+ lcdd-driver-lcterm lcdd-driver-ms6931 lcdd-driver-mtc-s16209x \
+ lcdd-driver-noritakevfd lcdd-driver-pyramid lcdd-driver-sli \
+ lcdd-driver-stv5730 lcdd-driver-t6963 lcdd-driver-tyan lcdd-driver-g15"
+
+# USB / no USB trickery
+
+CONFLICTS_lcdd-driver-hd47780nousb = "lcdd-driver-hd44780"
+CONFLICTS_lcdd-driver-hd47780 = "lcdd-driver-hd44780nousb"
+
+INITSCRIPT_PACKAGES = "lcdd lcdproc"
+INITSCRIPT_NAME_lcdd = "lcdd"
+INITSCRIPT_NAME_lcdproc = "lcdproc"
+INITSCRIPT_PARAMS_lcdd = "defaults 70 21"
+INITSCRIPT_PARAMS_lcdproc = "defaults 71 20"
+
+EXTRA_OECONF = "--enable-drivers=all --enable-libusb"
+
+do_install () {
+ # binaries
+ install -D -m 0755 server/LCDd ${D}${sbindir}/LCDd
+ install -D -m 0755 clients/lcdproc/lcdproc ${D}${bindir}/lcdproc
+ install -D -m 0755 clients/lcdvc/lcdvc ${D}${sbindir}/lcdvc
+
+ # init scripts
+ install -d ${D}${sysconfdir}/init.d
+ # so far, not fixed :-( and now even uglier :-((
+ cat scripts/init-LCDd.debian | sed -e s'/--oknodo//' -e 's/ -s -f / -s 1 -f 1 /' -e 's/force-reload/force-restart/' -e 's/sleep 1/sleep 4/' > ${D}${sysconfdir}/init.d/lcdd
+ chmod 0755 ${D}${sysconfdir}/init.d/lcdd
+ # prevent lcdproc from starting if no SCREENS are set.
+ # will be fixed in next upstream release
+ cat scripts/init-lcdproc.debian | sed -e 's/C X//' | sed -e 's/case/[ -n "$SCREENS" ] || exit 0\n\ncase/' | sed -e s'/--oknodo//' > ${D}${sysconfdir}/init.d/lcdproc
+ chmod 0755 ${D}${sysconfdir}/init.d/lcdproc
+
+ # configuration files
+ install -D -m 0644 LCDd.conf ${D}${sysconfdir}/LCDd.conf
+ install -D -m 0644 clients/lcdvc/lcdvc.conf ${D}${sysconfdir}/lcdvc.conf
+ # don't start lcdproc by default
+ # will be fixed in next upstream release
+ cat scripts/lcdproc.conf | sed -e 's/C X//' > ${D}${sysconfdir}/lcdproc.conf
+ chmod 0644 ${D}${sysconfdir}/lcdproc.conf
+
+ # driver library files
+ install -d ${D}${libdir}/lcdproc
+ for i in server/drivers/*.so; do
+ install -m 0644 $i ${D}${libdir}/lcdproc/
+ done
+}
+
diff --git a/packages/lftp/lftp_3.5.1.bb b/packages/lftp/lftp_3.5.1.bb
index a45b75fe35..df184ae9ca 100644
--- a/packages/lftp/lftp_3.5.1.bb
+++ b/packages/lftp/lftp_3.5.1.bb
@@ -6,7 +6,7 @@ HOMEPAGE = "http://lftp.yar.ru"
SECTION = "console/network"
DEPENDS = "readline gnutls"
-SRC_URI = "http://www.ibiblio.org/pub/Linux/system/network/file-transfer/lftp-3.5.1.tar.gz"
+SRC_URI = "ftp://ftp.wiretapped.net/pub/mirrors/lftp/old/lftp-3.5.1.tar.bz2"
EXTRA_OECONF = "--disable-largefile --disable-rpath --with-included-readline=no"
diff --git a/packages/libaal/libaal_1.0.4.bb b/packages/libaal/libaal_1.0.4.bb
index 0acfccc48d..af847f50c6 100644
--- a/packages/libaal/libaal_1.0.4.bb
+++ b/packages/libaal/libaal_1.0.4.bb
@@ -5,7 +5,7 @@ PR = "r1"
DESCRIPTION = "Library for user-level code accessing Reiser4 filesystems"
HOMEPAGE = "http://www.namesys.com"
SECTION = "base"
-LICENSE = "GPL-2"
+LICENSE = "GPLv2"
SRC_URI = "ftp://ftp.namesys.com/pub/reiser4progs/old-versions/${P}.tar.gz"
diff --git a/packages/libdaemon/libdaemon_0.10.bb b/packages/libdaemon/libdaemon_0.10.bb
index a166414e61..ba7140ffdb 100644
--- a/packages/libdaemon/libdaemon_0.10.bb
+++ b/packages/libdaemon/libdaemon_0.10.bb
@@ -3,6 +3,7 @@ SECTION = "libs"
AUTHOR = "Lennart Poettering <lennart@poettering.net>"
HOMEPAGE = "http://0pointer.de/lennart/projects/libdaemon/"
LICENSE = "LGPL"
+PR = "r1"
SRC_URI = "http://0pointer.de/lennart/projects/libdaemon/libdaemon-${PV}.tar.gz"
@@ -13,7 +14,7 @@ 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 dlog.h dexec.h dfork.h dsignal.h dnonblock.h dpid.h; do
+ 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/libesmtp/libesmtp_1.0.4.bb b/packages/libesmtp/libesmtp_1.0.4.bb
index 294333c579..06b46821d9 100644
--- a/packages/libesmtp/libesmtp_1.0.4.bb
+++ b/packages/libesmtp/libesmtp_1.0.4.bb
@@ -4,7 +4,7 @@ preconfigured Mail Transport Agent (MTA) such as Exim or PostFix."
LICENSE = "GPL"
SECTION = "libs/network"
DEPENDS = "openssl"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://www.stafford.uklinux.net/libesmtp/libesmtp-${PV}.tar.bz2"
@@ -17,3 +17,4 @@ do_stage() {
}
FILES_libesmtp_append = " ${libdir}/esmtp-plugins"
+FILES_${PN}-dbg += "${libdir}/esmtp-plugins/.debug/"
diff --git a/packages/libeventdb/libeventdb_0.19.bb b/packages/libeventdb/libeventdb_0.19.bb
index b8318bd407..52e44ecc0e 100644
--- a/packages/libeventdb/libeventdb_0.19.bb
+++ b/packages/libeventdb/libeventdb_0.19.bb
@@ -1,6 +1,6 @@
LICENSE = "LGPL"
DESCRIPTION = "Database access library for GPE calendar"
-SECTION = "gpe/libs"
+SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "libgpewidget libgpepimc sqlite"
diff --git a/packages/libeventdb/libeventdb_0.21.bb b/packages/libeventdb/libeventdb_0.21.bb
index b8318bd407..52e44ecc0e 100644
--- a/packages/libeventdb/libeventdb_0.21.bb
+++ b/packages/libeventdb/libeventdb_0.21.bb
@@ -1,6 +1,6 @@
LICENSE = "LGPL"
DESCRIPTION = "Database access library for GPE calendar"
-SECTION = "gpe/libs"
+SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "libgpewidget libgpepimc sqlite"
diff --git a/packages/libeventdb/libeventdb_0.30.bb b/packages/libeventdb/libeventdb_0.30.bb
index f125653b3e..d93766a21a 100644
--- a/packages/libeventdb/libeventdb_0.30.bb
+++ b/packages/libeventdb/libeventdb_0.30.bb
@@ -2,7 +2,7 @@ DEFAULT_PREFERENCE = "-1"
LICENSE = "LGPL"
DESCRIPTION = "Database access library for GPE calendar"
-SECTION = "gpe/libs"
+SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "libgpewidget libgpepimc sqlite"
diff --git a/packages/libeventdb/libeventdb_svn.bb b/packages/libeventdb/libeventdb_svn.bb
index 4f00f4aac8..c18d28d273 100644
--- a/packages/libeventdb/libeventdb_svn.bb
+++ b/packages/libeventdb/libeventdb_svn.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Database access library for GPE calendar"
LICENSE = "LGPL"
-SECTION = "gpe/libs"
+SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "libgpewidget libgpepimc sqlite"
diff --git a/packages/libftdi/.mtn2git_empty b/packages/libftdi/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libftdi/.mtn2git_empty
diff --git a/packages/libftdi/files/.mtn2git_empty b/packages/libftdi/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libftdi/files/.mtn2git_empty
diff --git a/packages/libftdi/files/doxygen-configure.patch b/packages/libftdi/files/doxygen-configure.patch
new file mode 100644
index 0000000000..6558cbd96f
--- /dev/null
+++ b/packages/libftdi/files/doxygen-configure.patch
@@ -0,0 +1,28 @@
+Index: libftdi-0.8/configure.in
+===================================================================
+--- libftdi-0.8.orig/configure.in
++++ libftdi-0.8/configure.in
+@@ -32,9 +32,5 @@ else
+ AC_MSG_RESULT(yes)
+ fi
+
+-dnl check for doxygen
+-AC_PATH_PROG(DOXYGEN, doxygen, $PATH)
+-AM_CONDITIONAL(HAVE_DOXYGEN, test -n $DOXYGEN);
+-
+ AC_OUTPUT([libftdi-config],[chmod a+x libftdi-config])
+-AC_OUTPUT(Makefile src/Makefile examples/Makefile doc/Doxyfile doc/Makefile libftdi.pc)
++AC_OUTPUT(Makefile src/Makefile examples/Makefile libftdi.pc)
+Index: libftdi-0.8/Makefile.am
+===================================================================
+--- libftdi-0.8.orig/Makefile.am
++++ libftdi-0.8/Makefile.am
+@@ -2,7 +2,7 @@
+ # have all needed files, that a GNU package needs
+ AUTOMAKE_OPTIONS = foreign 1.4
+
+-SUBDIRS = src examples doc
++SUBDIRS = src examples
+
+ EXTRA_DIST = libftdi.spec COPYING.LIB README ChangeLog libftdi-config.in
+
diff --git a/packages/libftdi/files/ftdi_eeprom-0.2-moko.patch b/packages/libftdi/files/ftdi_eeprom-0.2-moko.patch
new file mode 100644
index 0000000000..ae0ee6235a
--- /dev/null
+++ b/packages/libftdi/files/ftdi_eeprom-0.2-moko.patch
@@ -0,0 +1,16 @@
+--- ftdi_eeprom-0.2/ftdi_eeprom/main.c 2004-03-25 19:58:08.000000000 +0100
++++ ftdi_eeprom-0.2-moko/ftdi_eeprom/main.c 2007-02-16 01:23:40.000000000 +0100
+@@ -135,8 +135,11 @@
+
+ i = ftdi_usb_open(&ftdi, 0x0403, 0x6001);
+ if (i != 0) {
+- printf("Sorry, unable to find FTDI USB chip\n");
+- exit (-1);
++ i = ftdi_usb_open(&ftdi, 0x0403, 0x6010);
++ if (i != 0) {
++ printf("Sorry, unable to find FTDI USB chip\n");
++ exit (-1);
++ }
+ }
+ }
+ }
diff --git a/packages/libftdi/ftdi-eeprom-native_0.2.bb b/packages/libftdi/ftdi-eeprom-native_0.2.bb
new file mode 100644
index 0000000000..56613969d9
--- /dev/null
+++ b/packages/libftdi/ftdi-eeprom-native_0.2.bb
@@ -0,0 +1,9 @@
+require ftdi-eeprom_${PV}.bb
+
+DEPENDS = "libftdi-native confuse-native"
+
+do_stage() {
+ install -d ${STAGING_BINDIR_NATIVE}
+ install -m 0755 ftdi_eeprom/ftdi_eeprom ${STAGING_BINDIR_NATIVE}/
+}
+
diff --git a/packages/libftdi/ftdi-eeprom_0.2.bb b/packages/libftdi/ftdi-eeprom_0.2.bb
new file mode 100644
index 0000000000..c71ac8d0c3
--- /dev/null
+++ b/packages/libftdi/ftdi-eeprom_0.2.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "ftdi-eeprom is a flashing utility for FTDI chips."
+HOMEPAGE = "http://www.intra2net.com/de/produkte/opensource/ftdi"
+LICENSE = "GPL"
+DEPENDS = "libftdi confuse"
+PR = "r1"
+
+SRC_URI = "http://www.intra2net.com/de/produkte/opensource/ftdi/TGZ/ftdi_eeprom-${PV}.tar.gz \
+ file://ftdi_eeprom-0.2-moko.patch;patch=1"
+S = "${WORKDIR}/ftdi_eeprom-${PV}"
+
+inherit autotools
+
+EXTRA_OECONF = "--disable-docs"
diff --git a/packages/libftdi/libftdi-native_0.8.bb b/packages/libftdi/libftdi-native_0.8.bb
new file mode 100644
index 0000000000..24f82778e5
--- /dev/null
+++ b/packages/libftdi/libftdi-native_0.8.bb
@@ -0,0 +1,5 @@
+require libftdi_${PV}.bb
+
+inherit native
+
+DEPENDS = "libusb-native"
diff --git a/packages/libftdi/libftdi_0.8.bb b/packages/libftdi/libftdi_0.8.bb
new file mode 100644
index 0000000000..451d2e302f
--- /dev/null
+++ b/packages/libftdi/libftdi_0.8.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "libftdi is a library (using libusb) to talk to FTDI's \
+FT232BM, FT245BM and FT2232C type chips including the popular bitbang mode."
+HOMEPAGE = "http://www.intra2net.com/de/produkte/opensource/ftdi"
+LICENSE = "GPL"
+DEPENDS = "libusb"
+
+SRC_URI = "http://www.intra2net.com/de/produkte/opensource/ftdi/TGZ/libftdi-${PV}.tar.gz \
+ file://doxygen-configure.patch;patch=1"
+S = "${WORKDIR}/libftdi-${PV}"
+
+inherit autotools binconfig pkgconfig lib_package
+
+EXTRA_OECONF = "--disable-docs"
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/libg15/.mtn2git_empty b/packages/libg15/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libg15/.mtn2git_empty
diff --git a/packages/libg15/libg15_1.2.1.bb b/packages/libg15/libg15_1.2.1.bb
new file mode 100644
index 0000000000..930cfe8640
--- /dev/null
+++ b/packages/libg15/libg15_1.2.1.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "This is a library to handle the LCD and extra keys on the Logitech G15 Gaming Keyboard."
+HOMEPAGE = "http://g15tools.sourceforge.net"
+LICENSE = "GPLv2"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS = "libusb"
+PR = "r3"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/g15tools/libg15-${PV}.tar.bz2"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-gnu-ld"
+
+do_stage () {
+ autotools_stage_all
+}
+
diff --git a/packages/libg15render/.mtn2git_empty b/packages/libg15render/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libg15render/.mtn2git_empty
diff --git a/packages/libg15render/libg15render_1.2.bb b/packages/libg15render/libg15render_1.2.bb
new file mode 100644
index 0000000000..e0e2e0bf2c
--- /dev/null
+++ b/packages/libg15render/libg15render_1.2.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "This is a library to render text and shapes into a buffer usable by the Logitech G15 Gaming Keyboard."
+HOMEPAGE = "http://g15tools.sourceforge.net"
+LICENSE = "GPLv2"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS = "libg15"
+PR = "r2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/g15tools/libg15render-${PV}.tar.bz2"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-gnu-ld"
+
+do_stage () {
+ autotools_stage_all
+}
+
diff --git a/packages/libglade/libglade_2.4.2.bb b/packages/libglade/libglade_2.4.2.bb
index b57d51d996..dce7e5618d 100644
--- a/packages/libglade/libglade_2.4.2.bb
+++ b/packages/libglade/libglade_2.4.2.bb
@@ -12,7 +12,7 @@ SRC_URI += "file://glade-cruft.patch;patch=1 file://no-xml2.patch;patch=1"
EXTRA_OECONF += "--without-libxml2"
-CFLAGS += "-lz"
+LDFLAGS += "-lz"
PACKAGES += " ${PN}-data"
FILES_${PN} = "${libdir}/lib*.so.*"
diff --git a/packages/libglade/libglade_2.5.1.bb b/packages/libglade/libglade_2.5.1.bb
index 4dcbe69828..8d43bc412e 100644
--- a/packages/libglade/libglade_2.5.1.bb
+++ b/packages/libglade/libglade_2.5.1.bb
@@ -13,7 +13,7 @@ SRC_URI += "file://glade-cruft.patch;patch=1 file://no-xml2.patch;patch=1 \
EXTRA_OECONF += "--without-libxml2"
-CFLAGS += "-lz"
+LDFLAGS += "-lz"
PACKAGES += " ${PN}-data"
FILES_${PN} = "${libdir}/lib*.so.*"
diff --git a/packages/libgpelaunch/libgpelaunch_svn.bb b/packages/libgpelaunch/libgpelaunch_svn.bb
new file mode 100644
index 0000000000..c7c3c8e83e
--- /dev/null
+++ b/packages/libgpelaunch/libgpelaunch_svn.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "GPE program launcher library"
+SECTION = "libs"
+LICENSE = "LGPL"
+DEPENDS = "gtk+ startup-notification"
+PV = "0.14+svn${SRCDATE}"
+PR = "r0"
+
+inherit autotools pkgconfig
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+do_stage() {
+ autotools_stage_all
+}
+
+FILES_${PN}-dbg += "${libexecdir}/libgpelaunch/.debug"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/libgpepimc/libgpepimc-hildon_0.5.bb b/packages/libgpepimc/libgpepimc-hildon_0.5.bb
index 9872228e6b..ccd8aca6f4 100644
--- a/packages/libgpepimc/libgpepimc-hildon_0.5.bb
+++ b/packages/libgpepimc/libgpepimc-hildon_0.5.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
PR = "r0"
DESCRIPTION = "Common code for GPE PIMs (hildon UI version)"
-SECTION = "gpe/libs"
+SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "libgpewidget-hildon gtk+ sqlite hildon-lgpl"
PROVIDES = "libgepepimc"
diff --git a/packages/libgpepimc/libgpepimc.inc b/packages/libgpepimc/libgpepimc.inc
index 8894ff6fe3..ef4b443016 100644
--- a/packages/libgpepimc/libgpepimc.inc
+++ b/packages/libgpepimc/libgpepimc.inc
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
PR = "r0"
DESCRIPTION = "Common code for GPE PIMs"
-SECTION = "gpe/libs"
+SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "libgpewidget gtk+ sqlite"
PROVIDES = "libgepepimc"
diff --git a/packages/libgpepimc/libgpepimc_svn.bb b/packages/libgpepimc/libgpepimc_svn.bb
new file mode 100644
index 0000000000..b195837ed3
--- /dev/null
+++ b/packages/libgpepimc/libgpepimc_svn.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Common code for GPE PIMs"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "libgpewidget gtk+ sqlite"
+PROVIDES = "libgepepimc"
+RPROVIDES = "libgepepimc"
+PV = "0.8+svn${SRCDATE}"
+PR = "r0"
+
+inherit pkgconfig autotools
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+do_stage () {
+ oe_libinstall -so libgpepimc ${STAGING_LIBDIR}
+ mkdir -p ${STAGING_INCDIR}/gpe
+ for h in ${headers}; do
+ install -m 0644 ${S}/gpe/$h ${STAGING_INCDIR}/gpe/$h
+ done
+}
+
+headers = "pim-categories.h pim-categories-ui.h"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/libgpeplugin/libgpeplugin_cvs.bb b/packages/libgpeplugin/libgpeplugin_cvs.bb
deleted file mode 100644
index e00a1142c6..0000000000
--- a/packages/libgpeplugin/libgpeplugin_cvs.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION = "Plugin system for GPE applications"
-AUTHOR = "Luce DeCicco <ldecicco@gmail.com>"
-
-DEPENDS = "gtk+ libgpewidget"
-PV = "0.0+cvs${SRCDATE}"
-PR = "r0"
-
-#put examples in a seperate package
-PACKAGES += "${PN}-examples"
-FILES_${PN}-examples = "${bindir}/* ${libexecdir}/*"
-FILES_${PN} = "${libdir}/*.so.*"
-
-
-SRC_URI = "${HANDHELDS_CVS};module=gpe/base/${PN}"
-S = "${WORKDIR}/${PN}"
-
-inherit autotools pkgconfig
-
-do_stage() {
-autotools_stage_all
-}
diff --git a/packages/libgpeplugin/libgpeplugin_svn.bb b/packages/libgpeplugin/libgpeplugin_svn.bb
new file mode 100644
index 0000000000..91eca5abc1
--- /dev/null
+++ b/packages/libgpeplugin/libgpeplugin_svn.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Plugin system for GPE applications"
+AUTHOR = "Luce DeCicco <ldecicco@gmail.com>"
+DEPENDS = "gtk+ libgpewidget"
+PV = "0.0+svn${SRCDATE}"
+PR = "r0"
+
+inherit autotools pkgconfig
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+do_stage() {
+ autotools_stage_all
+}
+
+#put examples in a seperate package
+PACKAGES += "${PN}-examples"
+
+FILES_${PN}-examples = "${bindir}/* ${libexecdir}/*"
+FILES_${PN} = "${libdir}/*.so.*"
diff --git a/packages/libgpevtype/libgpevtype_0.15.bb b/packages/libgpevtype/libgpevtype_0.15.bb
index 5f5de2eda3..3f8af85beb 100644
--- a/packages/libgpevtype/libgpevtype_0.15.bb
+++ b/packages/libgpevtype/libgpevtype_0.15.bb
@@ -1,6 +1,6 @@
LICENSE = "LGPL"
DESCRIPTION = "Data interchange library for GPE"
-SECTION = "gpe/libs"
+SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "libmimedir libeventdb"
PR = "r0"
diff --git a/packages/libgpevtype/libgpevtype_0.16.bb b/packages/libgpevtype/libgpevtype_0.16.bb
index 5f5de2eda3..74f7bf312b 100644
--- a/packages/libgpevtype/libgpevtype_0.16.bb
+++ b/packages/libgpevtype/libgpevtype_0.16.bb
@@ -1,6 +1,6 @@
LICENSE = "LGPL"
DESCRIPTION = "Data interchange library for GPE"
-SECTION = "gpe/libs"
+SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "libmimedir libeventdb"
PR = "r0"
@@ -9,16 +9,7 @@ inherit pkgconfig gpe autotools
SRC_URI = "${GPE_MIRROR}/${PN}-${PV}.tar.bz2"
-headers = "tag-db.h vcard.h vevent.h vtodo.h"
-
-
do_stage () {
- oe_libinstall -so libgpevtype ${STAGING_LIBDIR}
-
- mkdir -p ${STAGING_INCDIR}/gpe
- for h in ${headers}; do
- install -m 0644 ${S}/gpe/$h ${STAGING_INCDIR}/gpe/${h}
- done
+ autotools_stage_all
}
-
diff --git a/packages/libgpevtype/libgpevtype_0.17.bb b/packages/libgpevtype/libgpevtype_0.17.bb
index 33389233ef..7c2ebf6b1d 100644
--- a/packages/libgpevtype/libgpevtype_0.17.bb
+++ b/packages/libgpevtype/libgpevtype_0.17.bb
@@ -1,6 +1,6 @@
LICENSE = "LGPL"
DESCRIPTION = "Data interchange library for GPE"
-SECTION = "gpe/libs"
+SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "libmimedir libeventdb"
PR = "r0"
@@ -15,12 +15,7 @@ headers = "tag-db.h vcard.h vevent.h vtodo.h"
do_stage () {
- oe_libinstall -so libgpevtype ${STAGING_LIBDIR}
-
- mkdir -p ${STAGING_INCDIR}/gpe
- for h in ${headers}; do
- install -m 0644 ${S}/gpe/$h ${STAGING_INCDIR}/gpe/${h}
- done
+ autotools_stage_all
}
diff --git a/packages/libgpevtype/libgpevtype_svn.bb b/packages/libgpevtype/libgpevtype_svn.bb
index 235a1312db..88e03c9b64 100644
--- a/packages/libgpevtype/libgpevtype_svn.bb
+++ b/packages/libgpevtype/libgpevtype_svn.bb
@@ -1,30 +1,20 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Data interchange library for GPE"
-SECTION = "gpe/libs"
-PRIORITY = "optional"
-DEPENDS = "libmimedir"
-
-DEFAULT_PREFERENCE = "-1"
-
-S = "${WORKDIR}/${PN}"
-PV = "0.17+svn${SRCDATE}"
-PR = "r0"
+DESCRIPTION = "Data interchange library for GPE"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "libmimedir libeventdb"
+PV = "0.50+svn${SRCDATE}"
+PR = "r1"
inherit pkgconfig gpe autotools
SRC_URI = "${GPE_SVN}"
-
-headers = "tag-db.h vcard.h vevent.h vtodo.h"
-
+S = "${WORKDIR}/${PN}"
do_stage () {
- oe_libinstall -so libgpevtype ${STAGING_LIBDIR}
-
- mkdir -p ${STAGING_INCDIR}/gpe
- for h in ${headers}; do
- install -m 0644 ${S}/gpe/$h ${STAGING_INCDIR}/gpe/${h}
- done
+ autotools_stage_all
}
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/libgpewidget/libgpewidget-hildon_0.102.bb b/packages/libgpewidget/libgpewidget-hildon_0.102.bb
index 6327341160..854d0ea6da 100644
--- a/packages/libgpewidget/libgpewidget-hildon_0.102.bb
+++ b/packages/libgpewidget/libgpewidget-hildon_0.102.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
PR = "r0"
DESCRIPTION = "libgpewidget contains a collection of widgets and other common code shared by many GPE applications."
-SECTION = "gpe/libs"
+SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "gtk+ libxrender gtk-doc intltool-native sdk-default-icons"
RDEPENDS = "sdk-default-icons"
diff --git a/packages/libgpewidget/libgpewidget_0.114.bb b/packages/libgpewidget/libgpewidget_0.114.bb
index 059ec61fc1..d79beeb417 100644
--- a/packages/libgpewidget/libgpewidget_0.114.bb
+++ b/packages/libgpewidget/libgpewidget_0.114.bb
@@ -1,6 +1,6 @@
LICENSE = "LGPL"
DESCRIPTION = "libgpewidget contains a collection of widgets and other common code shared by many GPE applications."
-SECTION = "gpe/libs"
+SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "gtk+ cairo libxrender gtk-doc"
PR = "r1"
diff --git a/packages/libgpewidget/libgpewidget_0.115.bb b/packages/libgpewidget/libgpewidget_0.115.bb
new file mode 100644
index 0000000000..f679296c71
--- /dev/null
+++ b/packages/libgpewidget/libgpewidget_0.115.bb
@@ -0,0 +1,22 @@
+LICENSE = "LGPL"
+DESCRIPTION = "libgpewidget contains a collection of widgets and other common code shared by many GPE applications."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "gtk+ cairo libxrender gtk-doc"
+PR = "r0"
+
+GPE_TARBALL_SUFFIX = "bz2"
+inherit gpe pkgconfig autotools
+
+SRC_URI += "file://pkgconfig.patch;patch=1;pnum=0"
+
+PACKAGES =+ "libgpewidget-bin"
+FILES_libgpewidget-bin = "${bindir}/*"
+
+EXTRA_OECONF = "--enable-cairo"
+
+LDFLAGS += " -L${STAGING_LIBDIR}"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/libgpewidget/libgpewidget_svn.bb b/packages/libgpewidget/libgpewidget_svn.bb
index 1da0a946be..8b6d0ea584 100644
--- a/packages/libgpewidget/libgpewidget_svn.bb
+++ b/packages/libgpewidget/libgpewidget_svn.bb
@@ -1,15 +1,13 @@
DESCRIPTION = "libgpewidget contains a collection of widgets and other common code shared by many GPE applications."
SECTION = "gpe/libs"
+LICENSE = "LGPL"
PRIORITY = "optional"
DEPENDS = "gtk+ cairo libxrender gtk-doc"
-
-LICENSE = "LGPL"
DEFAULT_PREFERENCE = "-1"
-S = "${WORKDIR}/${PN}"
+S = "${WORKDIR}/${PN}"
PV = "0.114+svn${SRCDATE}"
-PR = "r0"
inherit gpe autotools pkgconfig
diff --git a/packages/libgpg-error/libgpg-error-1.4/.mtn2git_empty b/packages/libgpg-error/libgpg-error-1.4/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libgpg-error/libgpg-error-1.4/.mtn2git_empty
diff --git a/packages/libgpg-error/libgpg-error-1.4/pkgconfig.patch b/packages/libgpg-error/libgpg-error-1.4/pkgconfig.patch
new file mode 100644
index 0000000000..f367f1ccc2
--- /dev/null
+++ b/packages/libgpg-error/libgpg-error-1.4/pkgconfig.patch
@@ -0,0 +1,54 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+Index: libgpg-error-1.3/configure.ac
+===================================================================
+--- libgpg-error-1.3.orig/configure.ac
++++ libgpg-error-1.3/configure.ac
+@@ -117,6 +117,7 @@ GPG_ERROR_CONFIG_CFLAGS=""
+ AC_SUBST(GPG_ERROR_CONFIG_LIBS)
+ AC_SUBST(GPG_ERROR_CONFIG_CFLAGS)
+ AC_CONFIG_FILES([src/gpg-error-config], [chmod +x src/gpg-error-config])
++AC_CONFIG_FILES([src/gpg-error.pc])
+
+
+ # Special defines for certain platforms
+Index: libgpg-error-1.3/src/Makefile.am
+===================================================================
+--- libgpg-error-1.3.orig/src/Makefile.am
++++ libgpg-error-1.3/src/Makefile.am
+@@ -28,6 +28,8 @@ include_HEADERS = gpg-error.h
+ bin_SCRIPTS = gpg-error-config
+ m4datadir = $(datadir)/aclocal
+ m4data_DATA = gpg-error.m4
++pkgconfigdir = $(libdir)/pkgconfig
++pkgconfig_DATA = gpg-error.pc
+
+
+ EXTRA_DIST = mkstrtable.awk err-sources.h.in err-codes.h.in \
+@@ -35,7 +37,7 @@ EXTRA_DIST = mkstrtable.awk err-sources.
+ mkerrcodes.awk mkerrcodes1.awk mkerrcodes2.awk mkerrcodes.c \
+ mkheader.awk gpg-error.h.in \
+ err-sources.h err-codes.h gpg-error-config.in gpg-error.m4 \
+- gpg-error.def versioninfo.rc.in
++ gpg-error.def versioninfo.rc.in gpg-error.pc.in
+
+ BUILT_SOURCES = err-sources.h err-codes.h code-to-errno.h code-from-errno.h \
+ err-sources-sym.h err-codes-sym.h errnos-sym.h gpg-error.h
+Index: libgpg-error-1.3/src/gpg-error.pc.in
+===================================================================
+--- /dev/null
++++ libgpg-error-1.3/src/gpg-error.pc.in
+@@ -0,0 +1,10 @@
++prefix=@prefix@
++exec_prefix=@exec_prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name: gpg-error
++Description: a library that defines common error values for all GnuPG components
++Version: @VERSION@
++Libs: -L{libdir} -lgpg-error
++Cflags: -I${includedir}
diff --git a/packages/libgpg-error/libgpg-error_1.4.bb b/packages/libgpg-error/libgpg-error_1.4.bb
new file mode 100644
index 0000000000..e520a23ae0
--- /dev/null
+++ b/packages/libgpg-error/libgpg-error_1.4.bb
@@ -0,0 +1,29 @@
+PR = "r1"
+DESCRIPTION = "GPG-Error library"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPL LGPL FDL"
+
+SRC_URI = "ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-${PV}.tar.gz \
+ file://pkgconfig.patch;patch=1"
+
+# move libgpg-error-config into -dev package
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir}/*"
+
+inherit autotools binconfig pkgconfig
+
+do_stage() {
+ oe_libinstall -a -so -C src libgpg-error ${STAGING_LIBDIR}
+ install -d ${STAGING_BINDIR_CROSS}/
+ install -m 0755 src/gpg-error-config ${STAGING_BINDIR_CROSS}/
+
+ install -d ${STAGING_INCDIR}/
+ for X in gpg-error.h
+ do
+ install -m 0644 ${S}/src/$X ${STAGING_INCDIR}/$X
+ done
+
+ install -d ${STAGING_DATADIR}/aclocal
+ install -m 0644 src/gpg-error.m4 ${STAGING_DATADIR}/aclocal/
+}
diff --git a/packages/libgtkinput/libgtkinput_svn.bb b/packages/libgtkinput/libgtkinput_svn.bb
new file mode 100644
index 0000000000..b8fcc8c26e
--- /dev/null
+++ b/packages/libgtkinput/libgtkinput_svn.bb
@@ -0,0 +1,18 @@
+LICENSE = "LGPL"
+PV = "0.3+svn${SRCDATE}"
+
+inherit gpe autotools
+
+SRC_URI = "${GPE_SVN} \
+ file://gtkinput.sh"
+
+S = "${WORKDIR}/${PN}"
+
+do_install_append() {
+ install -d ${D}/${sysconfdir}/X11/Xsession.d
+ install -m 755 ${WORKDIR}/gtkinput.sh ${D}/${sysconfdir}/X11/Xsession.d/46gtkinput
+}
+
+FILES_${PN} += "${libdir}"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/libgtkstylus/libgtkstylus_svn.bb b/packages/libgtkstylus/libgtkstylus_svn.bb
new file mode 100644
index 0000000000..33122345a7
--- /dev/null
+++ b/packages/libgtkstylus/libgtkstylus_svn.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "GTK plugin for stylus based systems"
+SECTION = "libs"
+LICENSE = "LGPL"
+DEPENDS = "gtk+"
+PV = "0.3+svn${SRCDATE}"
+PR = "r5"
+
+inherit autotools
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+do_install_append() {
+ install -d ${D}/${sysconfdir}/X11/Xsession.d
+ install -m 755 ${S}/gtkstylus.sh ${D}/${sysconfdir}/X11/Xsession.d/45gtkstylus
+}
+
+FILES_${PN} = "/etc ${libdir}/gtk-2.0/*/modules/*.so*"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/libhandoff/libhandoff_cvs.bb b/packages/libhandoff/libhandoff_cvs.bb
deleted file mode 100644
index bdac607847..0000000000
--- a/packages/libhandoff/libhandoff_cvs.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-LICENSE = "GPL"
-DESCRIPTION = "handoff library for GPE calendar"
-SECTION = "gpe/libs"
-PRIORITY = "optional"
-DEPENDS = "glib-2.0"
-PV = "0.1+cvs${SRCDATE}"
-PR = "r0"
-DEFAULT_PREFERENCE = "-1"
-
-inherit pkgconfig gpe autotools
-
-SRC_URI = "${HANDHELDS_CVS};module=gpe/base/${PN}"
-
-S = "${WORKDIR}/${PN}"
-
-do_stage () {
-autotools_stage_all
-}
diff --git a/packages/libhandoff/libhandoff_svn.bb b/packages/libhandoff/libhandoff_svn.bb
new file mode 100644
index 0000000000..c545d9270e
--- /dev/null
+++ b/packages/libhandoff/libhandoff_svn.bb
@@ -0,0 +1,18 @@
+LICENSE = "GPL"
+DESCRIPTION = "handoff library for GPE calendar"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0"
+PV = "0.1+svn${SRCDATE}"
+PR = "r0"
+DEFAULT_PREFERENCE = "-1"
+
+inherit pkgconfig gpe autotools
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+do_stage () {
+autotools_stage_all
+}
diff --git a/packages/libidl/libidl_0.8.2.bb b/packages/libidl/libidl_0.8.2.bb
index b8c5ec6966..85114d6524 100644
--- a/packages/libidl/libidl_0.8.2.bb
+++ b/packages/libidl/libidl_0.8.2.bb
@@ -1,5 +1,5 @@
+SECTION = "x11/gnome/libs"
LICENSE = "LGPL"
-SECTION = "libs"
SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/libIDL/0.8/libIDL-0.8.2.tar.bz2"
S = "${WORKDIR}/libIDL-${PV}"
diff --git a/packages/libidl/libidl_0.8.3.bb b/packages/libidl/libidl_0.8.3.bb
index 2ca114be2c..7a5a0d454e 100644
--- a/packages/libidl/libidl_0.8.3.bb
+++ b/packages/libidl/libidl_0.8.3.bb
@@ -1,6 +1,6 @@
-LICENSE = "LGPL"
DESCRIPTION = "Library for parsing CORBA IDL files"
-SECTION = "gnome/libs"
+SECTION = "x11/gnome/libs"
+LICENSE = "LGPL"
DEPENDS = "glib-2.0"
PR = "r2"
diff --git a/packages/libidl/libidl_0.8.6.bb b/packages/libidl/libidl_0.8.6.bb
index 916bfb6e5f..ccc93e291a 100644
--- a/packages/libidl/libidl_0.8.6.bb
+++ b/packages/libidl/libidl_0.8.6.bb
@@ -1,6 +1,6 @@
-LICENSE = "LGPL"
DESCRIPTION = "Library for parsing CORBA IDL files"
-SECTION = "gnome/libs"
+SECTION = "x11/gnome/libs"
+LICENSE = "LGPL"
DEPENDS = "glib-2.0 libidl-native"
PR = "r2"
diff --git a/packages/libloki/.mtn2git_empty b/packages/libloki/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libloki/.mtn2git_empty
diff --git a/packages/libmailwrapper/libmailwrapper.inc b/packages/libmailwrapper/libmailwrapper.inc
index e8e8995f7f..d88ad4640e 100644
--- a/packages/libmailwrapper/libmailwrapper.inc
+++ b/packages/libmailwrapper/libmailwrapper.inc
@@ -21,3 +21,5 @@ do_stage () {
do_install() {
oe_libinstall -so libmailwrapper ${D}${palmtopdir}/lib
}
+
+FILES_${PN} = "${palmtopdir}/lib/lib*.so.*"
diff --git a/packages/libmailwrapper/libmailwrapper_1.2.2.bb b/packages/libmailwrapper/libmailwrapper_1.2.2.bb
index 3df2fb149b..e5f5bfe158 100644
--- a/packages/libmailwrapper/libmailwrapper_1.2.2.bb
+++ b/packages/libmailwrapper/libmailwrapper_1.2.2.bb
@@ -1,4 +1,5 @@
require ${PN}.inc
+PR = "r1"
diff --git a/packages/libmailwrapper/libmailwrapper_cvs.bb b/packages/libmailwrapper/libmailwrapper_cvs.bb
index 4075a80823..1ffa8dd779 100644
--- a/packages/libmailwrapper/libmailwrapper_cvs.bb
+++ b/packages/libmailwrapper/libmailwrapper_cvs.bb
@@ -1,5 +1,6 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/net/mail/libmailwrapper "
diff --git a/packages/libmimedir/files/libmimedir-0.4.0-duration-wkst.patch b/packages/libmimedir/files/libmimedir-0.4.0-duration-wkst.patch
new file mode 100644
index 0000000000..10843182e9
--- /dev/null
+++ b/packages/libmimedir/files/libmimedir-0.4.0-duration-wkst.patch
@@ -0,0 +1,258 @@
+diff -uNr libmimedir-0.4.0/bin/ical-dump.c libmimedir-0.4.0cvs20061111/bin/ical-dump.c
+--- libmimedir-0.4.0/bin/ical-dump.c 2005-09-01 17:36:27.000000000 +0200
++++ libmimedir-0.4.0cvs20061111/bin/ical-dump.c 2006-11-11 19:14:19.000000000 +0100
+@@ -144,7 +144,7 @@
+ print_component (MIMEDirVComponent *component)
+ {
+ gchar *s, *summary, *categories, *uid;
+- guint priority, seq;
++ guint priority, seq, duration;
+ MIMEDirDateTime *dtstart, *dtend, *due;
+ MIMEDirRecurrence *recur;
+
+@@ -161,6 +161,7 @@
+
+ "dtstart", &dtstart,
+ "dtend", &dtend,
++ "duration", &duration,
+ "due", &due,
+ "recurrence", &recur,
+
+@@ -207,6 +208,9 @@
+
+ }
+ }
++ if (duration) {
++ printf (_(" Duration: %ds\n"), duration);
++ }
+ if (due && mimedir_datetime_is_valid (due)) {
+ s = mimedir_datetime_to_string (due);
+ if (s) {
+diff -uNr libmimedir-0.4.0/mimedir/mimedir-recurrence.c libmimedir-0.4.0cvs20061111/mimedir/mimedir-recurrence.c
+--- libmimedir-0.4.0/mimedir/mimedir-recurrence.c 2005-10-08 08:46:36.000000000 +0200
++++ libmimedir-0.4.0cvs20061111/mimedir/mimedir-recurrence.c 2006-11-11 15:47:28.000000000 +0100
+@@ -56,7 +56,8 @@
+ PROP_COUNT,
+ PROP_INTERVAL,
+ PROP_UNIT,
+- PROP_UNITLIST
++ PROP_UNITLIST,
++ PROP_WKST
+ };
+
+ struct _MIMEDirRecurrencePriv {
+@@ -67,6 +68,7 @@
+
+ MIMEDirRecurrenceUnit unit;
+ gchar *units;
++ guint8 wkst;
+ };
+
+ static GObjectClass *parent_class = NULL;
+@@ -167,6 +169,50 @@
+ return -1;
+ }
+
++static const gchar *
++weekday_to_string (GDateWeekday weekday)
++{
++ switch (weekday) {
++ case G_DATE_MONDAY:
++ return "MO";
++ case G_DATE_TUESDAY:
++ return "TU";
++ case G_DATE_WEDNESDAY:
++ return "WE";
++ case G_DATE_THURSDAY:
++ return "TH";
++ case G_DATE_FRIDAY:
++ return "FR";
++ case G_DATE_SATURDAY:
++ return "SA";
++ case G_DATE_SUNDAY:
++ return "SU";
++ default:
++ g_return_val_if_reached (NULL);
++ }
++}
++
++static GDateWeekday
++string_to_weekday (const gchar *s)
++{
++ if (strcmp (s, "MO") == 0)
++ return G_DATE_MONDAY;
++ else if (strcmp (s, "TU") == 0)
++ return G_DATE_TUESDAY;
++ else if (strcmp (s, "WE") == 0)
++ return G_DATE_WEDNESDAY;
++ else if (strcmp (s, "TH") == 0)
++ return G_DATE_THURSDAY;
++ else if (strcmp (s, "FR") == 0)
++ return G_DATE_FRIDAY;
++ else if (strcmp (s, "SA") == 0)
++ return G_DATE_SATURDAY;
++ else if (strcmp (s, "SU") == 0)
++ return G_DATE_SUNDAY;
++ else
++ return G_DATE_BAD_WEEKDAY;
++}
++
+ /*
+ * Class and Object Management
+ */
+@@ -261,6 +307,14 @@
+ NULL,
+ G_PARAM_READWRITE);
+ g_object_class_install_property (gobject_class, PROP_UNITLIST, pspec);
++ pspec = g_param_spec_uint ("wkst",
++ _("Workweek start"),
++ _("The day on which the workweek starts"),
++ G_DATE_BAD_WEEKDAY,
++ G_DATE_SUNDAY,
++ G_DATE_BAD_WEEKDAY,
++ G_PARAM_READWRITE);
++ g_object_class_install_property (gobject_class, PROP_WKST, pspec);
+ }
+
+
+@@ -273,6 +327,7 @@
+ recurrence->priv = g_new0 (MIMEDirRecurrencePriv, 1);
+ recurrence->priv->freq = RECURRENCE_DAILY;
+ recurrence->priv->unit = RECURRENCE_UNIT_NONE;
++ recurrence->priv->wkst = G_DATE_BAD_WEEKDAY;
+ }
+
+
+@@ -335,6 +390,9 @@
+ case PROP_UNITLIST:
+ mimedir_utils_set_property_string (&priv->units, value);
+ break;
++ case PROP_WKST:
++ priv->wkst = g_value_get_uint (value);
++ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+@@ -375,6 +433,9 @@
+ case PROP_UNITLIST:
+ g_value_set_string (value, priv->units);
+ break;
++ case PROP_WKST:
++ g_value_set_uint (value, priv->wkst);
++ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ return;
+@@ -512,6 +573,17 @@
+ g_object_set (G_OBJECT (recurrence), "unit", unit, NULL);
+ g_object_set (G_OBJECT (recurrence), "units", value, NULL);
+ }
++ else if (!strcasecmp (name, "WKST")) {
++ GDateWeekday weekday;
++
++ weekday = string_to_weekday (value);
++ if (!g_date_valid_weekday (weekday)) {
++ ret = FALSE;
++ break;
++ }
++
++ g_object_set (G_OBJECT (recurrence), "wkst", weekday, NULL);
++ }
+ else {
+ ret = FALSE;
+ break;
+@@ -571,5 +643,11 @@
+ g_string_append_printf (string, ";%s=%s", unit, priv->units);
+ }
+
++ if (g_date_valid_weekday (priv->wkst)) {
++ const gchar *weekday;
++ weekday = weekday_to_string (priv->wkst);
++ g_string_append_printf (string, ";WKST=%s", weekday);
++ }
++
+ return g_string_free (string, FALSE);
+ }
+
+--- libmimedir-0.4.0/mimedir/mimedir-vcomponent.c 2006-12-01 12:53:26.000000000 +0100
++++ libmimedir-0.4.0cvs20061111/mimedir/mimedir-vcomponent.c 2006-11-11 19:08:26.000000000 +0100
+@@ -908,6 +905,7 @@
+ const gchar *s;
+ gint duration = 0;
+ gboolean neg = FALSE;
++ gboolean dur_week = FALSE;
+
+ g_return_val_if_fail (error == NULL || *error == NULL, 0);
+
+@@ -939,48 +937,52 @@
+
+ if (s[0] == 'D' || s[0] == 'd')
+ duration = num * SECS_PER_DAY;
+- else if (s[0] == 'W' || s[0] == 'w')
++ else if (s[0] == 'W' || s[0] == 'w') {
+ duration = num * SECS_PER_WEEK;
+- else {
++ dur_week = TRUE;
++ } else {
+ g_set_error (error, MIMEDIR_ATTRIBUTE_ERROR, MIMEDIR_ATTRIBUTE_ERROR_INVALID_FORMAT, MIMEDIR_ATTRIBUTE_ERROR_INVALID_FORMAT_STR, "DURATION", name);
+ return 0;
+ }
+ s++;
+ }
+
+- if (s[0] == 'T' || s[0] == 't') {
+- GError *err = NULL;
+- guint num;
++ if ((s[0] == 'T' || s[0] == 't') && !dur_week) {
++ guint state = 0;
+
+ s++;
+
+- while (s[0] != '\0') {
++ while (state < 3) {
++ GError *err = NULL;
++ guint num;
++
+ num = mimedir_vcomponent_parse_number (name, "DURATION", &s, &err);
+ if (err) {
+ g_propagate_error (error, err);
+ return 0;
+ }
+-
+- switch (s[0]) {
+- case 'H':
+- s++;
++ if (s[0] == 'H' && state < 1) {
+ duration += num * SECS_PER_HOUR;
+- break;
+- case 'M':
+- s++;
++ state = 1;
++ } else if (s[0] == 'M' && state < 2) {
+ duration += num * SECS_PER_MINUTE;
+- break;
+- case 'S':
+- s++;
+- duration += num;
+- break;
+- default:
++ state = 2;
++ } else if (s[0] == 'S' && state < 3) {
++ duration += num ;
++ state = 3;
++ } else {
+ g_set_error (error, MIMEDIR_ATTRIBUTE_ERROR, MIMEDIR_ATTRIBUTE_ERROR_INVALID_FORMAT, MIMEDIR_ATTRIBUTE_ERROR_INVALID_FORMAT_STR, "DURATION", name);
+ return 0;
+ }
++ s++;
+ }
+ }
+
++ if (s[0] != '\0') {
++ g_set_error (error, MIMEDIR_ATTRIBUTE_ERROR, MIMEDIR_ATTRIBUTE_ERROR_INVALID_FORMAT, MIMEDIR_ATTRIBUTE_ERROR_INVALID_FORMAT_STR, "DURATION", name);
++ return 0;
++ }
++
+ return neg ? -duration : duration;
+ }
+
diff --git a/packages/libmimedir/libmimedir_0.4.0-20060804.bb b/packages/libmimedir/libmimedir_0.4.0-20060804.bb
deleted file mode 100644
index 5249157590..0000000000
--- a/packages/libmimedir/libmimedir_0.4.0-20060804.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-DESCRIPTION = "RFC2425 MIME Directory Profile library, supporting vCard and iCalendar"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "LGPL"
-DEPENDS = "intltool-native glib-2.0"
-PR = "r3"
-DEFAULT_PREFERENCE = "5"
-SRCDATE = "20060804"
-PV = "0.4.0+cvs${SRCDATE}"
-
-SRC_URI = "cvs://anonymous@anoncvs.gnome.org/cvs/gnome;module=libmimedir \
- file://mimedir-update.patch;patch=1 \
- file://mimedir-write-sequence.patch;patch=1;pnum=0 \
- file://gslist-fix.patch;patch=1;maxdate=20060814"
-
-S = "${WORKDIR}/libmimedir"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--disable-gtk-doc"
-
-do_stage() {
- autotools_stage_all
-}
-
-PACKAGES =+ "libmimedir-utils"
-FILES_libmimedir-utils = "${bindir}/*"
diff --git a/packages/libmimedir/libmimedir_cvs.bb b/packages/libmimedir/libmimedir_cvs.bb
deleted file mode 100644
index f687245fcd..0000000000
--- a/packages/libmimedir/libmimedir_cvs.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-DESCRIPTION = "RFC2425 MIME Directory Profile library, supporting vCard and iCalendar"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "LGPL"
-DEPENDS = "intltool-native"
-PR = "r2"
-#Remove the dash below when 0.3.1 changes in PV
-PV = "0.3.1+cvs-${SRCDATE}"
-
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI = "cvs://anonymous@anoncvs.gnome.org/cvs/gnome;module=libmimedir \
- file://mimedir-update.patch;patch=1"
-
-S = "${WORKDIR}/libmimedir"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--disable-gtk-doc"
-
-do_stage() {
- autotools_stage_all
-}
-
-PACKAGES += "libmimedir-utils"
-FILES_libmimedir-utils = "${bindir}"
-FILES_${PN} = "${libdir}"
-
diff --git a/packages/libmimedir/libmimedir_svn.bb b/packages/libmimedir/libmimedir_svn.bb
new file mode 100644
index 0000000000..c640f13e8f
--- /dev/null
+++ b/packages/libmimedir/libmimedir_svn.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "RFC2425 MIME Directory Profile library, supporting vCard and iCalendar"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "intltool-native"
+
+DEFAULT_PREFERENCE = "-1"
+
+PV = "0.4.1+svn${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/libmimedir"
+
+inherit autotools pkgconfig lib_package
+
+EXTRA_OECONF = "--disable-gtk-doc"
+
+do_stage() {
+ autotools_stage_all
+}
+
+PACKAGES += "libmimedir-utils"
+
+FILES_libmimedir-utils = "${bindir}"
+
diff --git a/packages/libmpeg2/libmpeg2_0.4.0b.bb b/packages/libmpeg2/libmpeg2_0.4.0b.bb
index 74b1ef8c38..bd57ed86d4 100644
--- a/packages/libmpeg2/libmpeg2_0.4.0b.bb
+++ b/packages/libmpeg2/libmpeg2_0.4.0b.bb
@@ -4,14 +4,27 @@ PRIORITY = "optional"
DEPENDS = "virtual/libsdl"
LICENSE = "GPL"
+PR = "r2"
+
SRC_URI = "http://libmpeg2.sourceforge.net/files/mpeg2dec-${PV}.tar.gz \
file://Makefile.patch;patch=1 "
S = "${WORKDIR}/mpeg2dec-0.4.0"
-inherit autotools
+inherit autotools lib_package
EXTRA_OECONF="--enable-shared"
+LEAD_SONAME = "libmpeg2.so.0"
+
+PACKAGES =+ "libmpeg2convert libmpeg2convert-dev"
+
+FILES_libmpeg2convert = "${libdir}/libmpeg2convert.so.*"
+FILES_libmpeg2convert-dev = "${libdir}/libmpeg2convert.so \
+ ${libdir}/libmpeg2convert.*a \
+ ${libdir}/pkgconfig/libmpeg2convert.pc \
+ ${includedir}/mpeg2dec/mpeg2convert.h"
+
+
do_stage() {
oe_libinstall -a -so -C libmpeg2 libmpeg2 ${STAGING_LIBDIR}
oe_libinstall -a -so -C libmpeg2/convert libmpeg2convert ${STAGING_LIBDIR}
diff --git a/packages/libmrss/.mtn2git_empty b/packages/libmrss/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libmrss/.mtn2git_empty
diff --git a/packages/libmrss/files/.mtn2git_empty b/packages/libmrss/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libmrss/files/.mtn2git_empty
diff --git a/packages/libmrss/files/atom-right-date.patch b/packages/libmrss/files/atom-right-date.patch
new file mode 100644
index 0000000000..ba231b2ab4
--- /dev/null
+++ b/packages/libmrss/files/atom-right-date.patch
@@ -0,0 +1,15 @@
+tm_mon goes from 0-11 written dates from 1-12. It is too late to consider security
+here. The worst that can happen is that tm_mon == 0 gets negative but I assume
+glibc to do range checking.
+Index: libmrss-0.17.1/src/mrss_parser.c
+===================================================================
+--- libmrss-0.17.1.orig/src/mrss_parser.c 2007-04-08 02:42:23.000000000 +0200
++++ libmrss-0.17.1/src/mrss_parser.c 2007-04-08 02:43:37.000000000 +0200
+@@ -150,6 +150,7 @@
+ {
+ char datebuf[256];
+ stm.tm_year -= 1900;
++ stm.tm_mon -= 1;
+
+ if (!data->c_locale
+ && !(data->c_locale = newlocale (LC_ALL_MASK, "C", NULL)))
diff --git a/packages/libmrss/libmrss_0.17.1.bb b/packages/libmrss/libmrss_0.17.1.bb
new file mode 100644
index 0000000000..6476ee58c6
--- /dev/null
+++ b/packages/libmrss/libmrss_0.17.1.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "mRSS is a C library for parsing, writing and creating RSS (0.91, 0.92, 1.0, 2.0) files or streams"
+LICENSE = "LGPL"
+HOMEPAGE = "http://www2.autistici.org/bakunin/codes.php"
+
+DEPENDS = "libnxml curl"
+PR = "r1"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://www2.autistici.org/bakunin/libmrss/libmrss-${PV}.tar.gz \
+ file://atom-right-date.patch;patch=1 "
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/libnet/libnet-1.0.2a/configure_x86-64-host.patch b/packages/libnet/libnet-1.0.2a/configure_x86-64-host.patch
new file mode 100644
index 0000000000..69ec07c2e3
--- /dev/null
+++ b/packages/libnet/libnet-1.0.2a/configure_x86-64-host.patch
@@ -0,0 +1,11 @@
+--- Libnet-1.0.2a/config.sub~ 2007-04-07 22:00:37.000000000 +0200
++++ Libnet-1.0.2a/config.sub 2007-04-07 22:00:37.000000000 +0200
+@@ -161,7 +161,7 @@
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+- i[3456]86)
++ i[3456]86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
diff --git a/packages/libnet/libnet_1.0.2a.bb b/packages/libnet/libnet_1.0.2a.bb
index 6e6067cf8f..c633327181 100644
--- a/packages/libnet/libnet_1.0.2a.bb
+++ b/packages/libnet/libnet_1.0.2a.bb
@@ -9,11 +9,13 @@ PR = "r1"
# There are major API changes beween libnet v1.0 and libnet v1.1
PROVIDES = "libnet-1.0"
-SRC_URI = "http://www.packetfactory.net/libnet/dist/deprecated/libnet-${PV}.tar.gz \
+#SRC_URI = "http://www.packetfactory.net/libnet/dist/deprecated/libnet-${PV}.tar.gz \
+SRC_URI = "${DEBIAN_MIRROR}/main/libn/libnet0/libnet0_${PV}.orig.tar.gz \
file://configure.patch;patch=1 \
file://configure.uclibc.patch;patch=1 \
+ file://configure_x86-64-host.patch;patch=1 \
"
-S = "${WORKDIR}/Libnet-${PV}"
+S = "${WORKDIR}/libnet-${PV}.orig"
inherit autotools
diff --git a/packages/libnet/libnet_1.1.2.1.bb b/packages/libnet/libnet_1.1.2.1.bb
index 92457a8ff4..f9464ae8bb 100644
--- a/packages/libnet/libnet_1.1.2.1.bb
+++ b/packages/libnet/libnet_1.1.2.1.bb
@@ -8,7 +8,7 @@ DEPENDS = "libpcap"
PROVIDES = "libnet-1.1"
PR = "r1"
-SRC_URI = "http://www.packetfactory.net/libnet/dist/libnet-${PV}.tar.gz \
+SRC_URI = "${DEBIAN_MIRROR}/main/libn/libnet/libnet_${PV}.orig.tar.gz \
file://support-uclibc.patch;patch=1 \
file://fix-endianess-test.patch;patch=1"
@@ -31,6 +31,7 @@ do_stage () {
oe_runmake -C include/libnet 'DESTDIR=${STAGING_INCDIR}' 'includedir=' install-libnetincludeHEADERS
}
+#static build
PACKAGES = "${PN}-dev ${PN}-doc"
FILES_${PN}-dev += "${bindir}/libnet-config"
diff --git a/packages/libnl/files/fix-helpers.patch b/packages/libnl/files/fix-helpers.patch
new file mode 100644
index 0000000000..b6a6ff8509
--- /dev/null
+++ b/packages/libnl/files/fix-helpers.patch
@@ -0,0 +1,49 @@
+Index: libnl-0.5.0/lib/helpers.c
+===================================================================
+--- libnl-0.5.0.orig/lib/helpers.c
++++ libnl-0.5.0/lib/helpers.c
+@@ -29,6 +29,7 @@
+ #include <netlink/netlink.h>
+ #include <netlink/helpers.h>
+ #include <linux/socket.h>
++#include <linux/if_ether.h>
+
+ int nl_debug = 0;
+
+Index: libnl-0.5.0/lib/route/filter.c
+===================================================================
+--- libnl-0.5.0.orig/lib/route/filter.c
++++ libnl-0.5.0/lib/route/filter.c
+@@ -40,6 +40,7 @@
+ #include <netlink/route/filter.h>
+ #include <netlink/route/link.h>
+ #include <netlink/route/rtattr.h>
++#include <linux/if_ether.h>
+
+ static struct rtnl_filter_ops *filter_ops;
+
+Index: libnl-0.5.0/lib/Makefile
+===================================================================
+--- libnl-0.5.0.orig/lib/Makefile
++++ libnl-0.5.0/lib/Makefile
+@@ -68,7 +68,7 @@ distclean:
+
+ install:
+ mkdir -p $(DESTDIR)$(prefix)/lib/
+- install -o root -g root -m 0644 $(OUT_SLIB) $(DESTDIR)$(prefix)/lib
++ install -m 0644 $(OUT_SLIB) $(DESTDIR)$(prefix)/lib
+ rm -f $(DESTDIR)$(prefix)/lib/$(LN1_SLIB) ; \
+ $(LN) -s $(DESTDIR)$(prefix)/lib/$(OUT_SLIB) $(DESTDIR)$(prefix)/lib/$(LN1_SLIB)
+ rm -f $(DESTDIR)$(prefix)/lib/$(LN_SLIB) ; \
+Index: libnl-0.5.0/include/Makefile
+===================================================================
+--- libnl-0.5.0.orig/include/Makefile
++++ libnl-0.5.0/include/Makefile
+@@ -37,5 +37,5 @@ distclean:
+
+ install:
+ mkdir -p $(DESTDIR)$(prefix)/include/netlink/route/
+- install -o root -g root -m 0644 netlink/*.h $(DESTDIR)$(prefix)/include/netlink/
+- install -o root -g root -m 0644 netlink/route/*.h $(DESTDIR)$(prefix)/include/netlink/route/
++ install -m 0644 netlink/*.h $(DESTDIR)$(prefix)/include/netlink/
++ install -m 0644 netlink/route/*.h $(DESTDIR)$(prefix)/include/netlink/route/
diff --git a/packages/libnl/files/libnl-0.5.0-include.diff b/packages/libnl/files/libnl-0.5.0-include.diff
new file mode 100644
index 0000000000..f858953c8a
--- /dev/null
+++ b/packages/libnl/files/libnl-0.5.0-include.diff
@@ -0,0 +1,10 @@
+--- libnl-0.5.0.orig/include/netlink/route/tc.h 2005-09-08 19:13:15.000000000 -0300
++++ libnl-0.5.0/include/netlink/route/tc.h 2005-09-08 19:32:33.000000000 -0300
+@@ -24,6 +24,7 @@
+ #include <netlink/netlink.h>
+ #include <netlink/cache.h>
+ #include <netlink/data.h>
++#include <linux/pkt_sched.h>
+
+ #define TCA_HAS_HANDLE 0x001
+ #define TCA_HAS_PARENT 0x002
diff --git a/packages/libnl/libnl_0.5.0.bb b/packages/libnl/libnl_0.5.0.bb
new file mode 100644
index 0000000000..5d1e8d3fc0
--- /dev/null
+++ b/packages/libnl/libnl_0.5.0.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Netlink library"
+HOMEPAGE = "http://people.suug.ch/~tgr/libnl/"
+SECTION = "libraries/network"
+LICENSE = "GPLv2.1"
+PR = "r0"
+
+SRC_URI = "http://people.suug.ch/~tgr/libnl/files/libnl-0.5.0.tar.gz \
+ file://libnl-0.5.0-include.diff;patch=1 \
+ file://fix-helpers.patch;patch=1"
+
+inherit autotools
diff --git a/packages/libnotify/libnotify_0.3.2.bb b/packages/libnotify/libnotify_0.4.3.bb
index f3f3aff334..f3f3aff334 100644
--- a/packages/libnotify/libnotify_0.3.2.bb
+++ b/packages/libnotify/libnotify_0.4.3.bb
diff --git a/packages/libnotify/libnotify_0.4.4.bb b/packages/libnotify/libnotify_0.4.4.bb
new file mode 100644
index 0000000000..f3f3aff334
--- /dev/null
+++ b/packages/libnotify/libnotify_0.4.4.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "sends desktop notifications to a notification daemon"
+HOMEPAGE = "http://www.galago-project.org/"
+LICENSE = "LGPL"
+DEPENDS = "dbus gtk+"
+PR = "r0"
+
+SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${PN}-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/libnss-mdns/libnss-mdns_0.8.bb b/packages/libnss-mdns/libnss-mdns_0.8.bb
deleted file mode 100644
index a4a9cd00d1..0000000000
--- a/packages/libnss-mdns/libnss-mdns_0.8.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-DESCRIPTION = "NSS module for Multicast DNS name resolution"
-HOMEPAGE = "http://0pointer.de/lennart/projects/nss-mdns/"
-LICENSE = "GPL"
-SECTION = "libs"
-PRIORITY = "optional"
-
-RRECOMMENDS_${PN} = "zeroconf"
-PR = "r1"
-
-EXTRA_OECONF = "--libdir=/lib"
-S = "${WORKDIR}/nss-mdns-${PV}"
-
-SRC_URI = "http://0pointer.de/lennart/projects/nss-mdns/nss-mdns-${PV}.tar.gz"
-
-inherit autotools
-
-pkg_postinst () {
- # can't do this offline
- if [ "x$D" != "x" ]; then
- exit 1
- fi
- cat /etc/nsswitch.conf | grep "hosts:\s*files dns$" > /dev/null && {
- cat /etc/nsswitch.conf | sed 's/\(hosts:\s*files \)dns/\1mdns4_minimal [NOTFOUND=return] dns mdns4/' > /tmp/nsswitch.conf
- mv /tmp/nsswitch.conf /etc/nsswitch.conf
- }
-}
-
-pkg_prerm () {
- cat /etc/nsswitch.conf | grep "hosts:\s*files dns mdns$" > /dev/null && {
- cat /etc/nsswitch.conf | sed 's/\(hosts:\s*files \)mdns4_minimal [NOTFOUND=return] dns mdns4/\1dns/' > /tmp/nsswitch.conf
- mv /tmp/nsswitch.conf /etc/nsswitch.conf
- }
-}
diff --git a/packages/libnss-mdns/libnss-mdns_0.9.bb b/packages/libnss-mdns/libnss-mdns_0.9.bb
new file mode 100644
index 0000000000..171ff5113b
--- /dev/null
+++ b/packages/libnss-mdns/libnss-mdns_0.9.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "NSS module for Multicast DNS name resolution"
+HOMEPAGE = "http://0pointer.de/lennart/projects/nss-mdns/"
+LICENSE = "GPL"
+SECTION = "libs"
+PRIORITY = "optional"
+
+RRECOMMENDS_${PN} = "zeroconf"
+PR = "r0"
+
+EXTRA_OECONF = "--libdir=/lib"
+S = "${WORKDIR}/nss-mdns-${PV}"
+
+SRC_URI = "http://0pointer.de/lennart/projects/nss-mdns/nss-mdns-${PV}.tar.gz"
+
+inherit autotools
+
+pkg_postinst () {
+ # can't do this offline
+ if [ "x$D" != "x" ]; then
+ exit 1
+ fi
+ cat /etc/nsswitch.conf | grep "hosts:\s*files dns$" > /dev/null && {
+ cat /etc/nsswitch.conf | sed 's/\(hosts:\s*files \)dns/\1mdns4_minimal [NOTFOUND=return] dns mdns4/' > /tmp/nsswitch.conf
+ mv /tmp/nsswitch.conf /etc/nsswitch.conf
+ }
+}
+
+pkg_prerm () {
+ cat /etc/nsswitch.conf | grep "hosts:\s*files dns mdns$" > /dev/null && {
+ cat /etc/nsswitch.conf | sed 's/\(hosts:\s*files \)mdns4_minimal [NOTFOUND=return] dns mdns4/\1dns/' > /tmp/nsswitch.conf
+ mv /tmp/nsswitch.conf /etc/nsswitch.conf
+ }
+}
diff --git a/packages/libnxml/.mtn2git_empty b/packages/libnxml/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libnxml/.mtn2git_empty
diff --git a/packages/libnxml/libnxml_0.16.bb b/packages/libnxml/libnxml_0.16.bb
new file mode 100644
index 0000000000..6f836d226d
--- /dev/null
+++ b/packages/libnxml/libnxml_0.16.bb
@@ -0,0 +1,14 @@
+HOMEPAGE = "http://www2.autistici.org/bakunin/codes.php"
+DESCRIPTION = "nXML is a C library for parsing, writing and creating XML 1.0 and 1.1 files or streams. It supports utf-8, utf-16be and utf-16le, ucs-4 (1234, 4321, 2143, 2312)"
+LICENSE = "LGPL"
+
+DEPENDS = "curl"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://www2.autistici.org/bakunin/libnxml/libnxml-${PV}.tar.gz"
+
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/liboil/liboil_0.3.11.bb b/packages/liboil/liboil_0.3.11.bb
new file mode 100644
index 0000000000..94471a26fc
--- /dev/null
+++ b/packages/liboil/liboil_0.3.11.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Liboil is a library of simple functions that are optimized for various CPUs."
+HOMEPAGE = "http://liboil.freedesktop.org/"
+LICENSE = "various"
+
+SRC_URI = "http://liboil.freedesktop.org/download/${P}.tar.gz"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/libol/libol_0.3.18.bb b/packages/libol/libol_0.3.18.bb
index 3ddaaa62a3..b8ad9b30ac 100644
--- a/packages/libol/libol_0.3.18.bb
+++ b/packages/libol/libol_0.3.18.bb
@@ -1,15 +1,14 @@
-PR = "r5"
+PR = "r7"
SRC_URI = "http://www.balabit.com/downloads/libol/0.3/${P}.tar.gz"
S = "${WORKDIR}/${PN}-${PV}"
-inherit autotools
+inherit autotools binconfig
do_stage() {
install -d ${STAGING_INCDIR}/libol
- install -m 0755 ${S}/libol-config ${STAGING_BINDIR_CROSS}
- install -m 0755 ${S}/src/.libs/libol.so.0.0.0 ${STAGING_LIBDIR}
+ install -m 0755 ${S}/src/.libs/libol.so.0.0.0 ${STAGING_LIBDIR}/
ln -fs ${STAGING_LIBDIR}/libol.so.0.0.0 ${STAGING_LIBDIR}/libol.so.0
install ${S}/src/*.h ${STAGING_INCDIR}/libol/
}
diff --git a/packages/libopie/libopie2.inc b/packages/libopie/libopie2.inc
index 17ac4e2605..17cc4be40d 100644
--- a/packages/libopie/libopie2.inc
+++ b/packages/libopie/libopie2.inc
@@ -19,8 +19,12 @@ EXTRA_QMAKEVARS_POST += 'DEFINES+=OPIE_NEW_MALLOC \
DEFINES+=OPIE_NO_ERASE_RECT_HACKFIX \
LIBS+=-L${S} LIBS+="-Wl,-rpath-link,${S}"'
-#NOTE: We no longer enable the sqlite PIM backend here, since a) using it means no sync and b) it's too large for 16MB images
-EXTRA_QMAKEVARS_PRE += 'ENABLE_SQL_PIM_BACKEND=n'
+ENABLE_SQL_PIM_BACKEND = "y"
+# NOTE: Machines with too little amount of flash may want to disable SQL backend support
+# (known not to fit in 16MB). Also, XML backend is still used by default, as SQL doesn't
+# support sync yet.
+#ENABLE_SQL_PIM_BACKEND_smallmachine = "n"
+EXTRA_QMAKEVARS_PRE += 'ENABLE_SQL_PIM_BACKEND=${ENABLE_SQL_PIM_BACKEND}'
MODULES = "opiecore opiedb opiemm opienet opiepim opiesecurity opieui opiebluez"
LIBS = "core2 db2 mm2 net2 pim2 security2 ui2 bluez2"
@@ -74,22 +78,22 @@ do_install() {
done
}
-PACKAGES = "libopiecore2 libopiedb2 libopiesecurity2 libopiemm2 libopienet2 libopiepim2 libopieui2 libopiebluez2"
+PACKAGES_prepend = " libopiecore2 libopiedb2 libopiesecurity2 libopiemm2 libopienet2 libopiepim2 libopieui2 libopiebluez2 "
DESCRIPTION_libopiecore2 = "Opie Development Platform 1.x Core Library"
-FILES_libopiecore2 = "${palmtopdir}/lib/libopiecore2.so*"
+FILES_libopiecore2 = "${palmtopdir}/lib/libopiecore2.so.*"
DESCRIPTION_libopiedb2 = "Opie Development Platform 1.x Database Library"
-FILES_libopiedb2 = "${palmtopdir}/lib/libopiedb2.so*"
+FILES_libopiedb2 = "${palmtopdir}/lib/libopiedb2.so.*"
DESCRIPTION_libopiemm2 = "Opie Development Platform 1.x Multimedia Library"
-FILES_libopiemm2 = "${palmtopdir}/lib/libopiemm2.so*"
+FILES_libopiemm2 = "${palmtopdir}/lib/libopiemm2.so.*"
DESCRIPTION_libopienet2 = "Opie Development Platform 1.x Network Library"
-FILES_libopienet2 = "${palmtopdir}/lib/libopienet2.so*"
+FILES_libopienet2 = "${palmtopdir}/lib/libopienet2.so.*"
DESCRIPTION_libopiepim2 = "Opie Development Platform 1.x PIM Library"
-FILES_libopiepim2 = "${palmtopdir}/lib/libopiepim2.so*"
+FILES_libopiepim2 = "${palmtopdir}/lib/libopiepim2.so.*"
DESCRIPTION_libopieui2 = "Opie Development Platform 1.x User Interface Library"
-FILES_libopieui2 = "${palmtopdir}/lib/libopieui2.so*"
+FILES_libopieui2 = "${palmtopdir}/lib/libopieui2.so.*"
DESCRIPTION_libopiesecurity2 = "Opie Development Platform 1.x Security Library"
-FILES_libopiesecurity2 = "${palmtopdir}/lib/libopiesecurity2.so*"
+FILES_libopiesecurity2 = "${palmtopdir}/lib/libopiesecurity2.so.*"
DESCRIPTION_libopiebluez2 = "Opie Development Platform 1.x Bluetooth Library"
-FILES_libopiebluez2 = "${palmtopdir}/lib/libopiebluez2.so*"
+FILES_libopiebluez2 = "${palmtopdir}/lib/libopiebluez2.so.*"
diff --git a/packages/libopie/libopie2/exports.patch b/packages/libopie/libopie2/exports.patch
new file mode 100644
index 0000000000..2ff06287be
--- /dev/null
+++ b/packages/libopie/libopie2/exports.patch
@@ -0,0 +1,11 @@
+--- libopie2/opiecore/ostorageinfo.h.org 2007-03-09 11:20:17.000000000 +0000
++++ libopie2/opiecore/ostorageinfo.h 2007-03-08 23:43:56.000000000 +0000
+@@ -35,7 +35,7 @@
+ namespace Opie {
+ namespace Core {
+
+-class OStorageInfo : public StorageInfo
++class Q_EXPORT OStorageInfo : public StorageInfo
+ {
+ Q_OBJECT
+
diff --git a/packages/libopie/libopie2/ipaq-lcd-rotate-cleanup.patch b/packages/libopie/libopie2/ipaq-lcd-rotate-cleanup.patch
new file mode 100644
index 0000000000..735663f343
--- /dev/null
+++ b/packages/libopie/libopie2/ipaq-lcd-rotate-cleanup.patch
@@ -0,0 +1,39 @@
+Index: libopie2/opiecore/device/odevice_ipaq.cpp
+===================================================================
+--- libopie2.orig/opiecore/device/odevice_ipaq.cpp 2007-02-05 21:40:33.000000000 +0000
++++ libopie2/opiecore/device/odevice_ipaq.cpp 2007-02-05 21:51:43.000000000 +0000
+@@ -317,24 +317,20 @@
+ break;
+ }
+
+- // Rotate cursor keys 180 or 270
++ // QT has strange screen coordinate system, so depending
++ // on native device screen orientation, we need to rotate cursor keys
+ case Key_Left :
+ case Key_Right:
+ case Key_Up :
+ case Key_Down : {
+- if (( d->m_model == Model_iPAQ_H31xx ) ||
+- ( d->m_model == Model_iPAQ_H38xx )) {
+- newkeycode = Key_Left + ( keycode - Key_Left + 2 ) % 4;
+- }
+- // Rotate the cursor keys by 270
+- // keycode - Key_Left = position of the button starting from left clockwise
+- // add the rotation to it and modolo. No we've the original offset
+- // add the offset to the Key_Left key
+- if (( d->m_model == Model_iPAQ_H5xxx ) ||
+- ( d->m_model == Model_iPAQ_H191x ) ||
+- ( d->m_model == Model_iPAQ_H4xxx ) ||
+- ( d->m_model == Model_iPAQ_H1940 ))
+- newkeycode = Key_Left + ( keycode - Key_Left + 3 ) % 4;
++ int quarters;
++ switch (d->m_rotation) {
++ case Rot0: quarters = 3/*270deg*/; break;
++ case Rot90: quarters = 2/*270deg*/; break;
++ case Rot180: quarters = 1/*270deg*/; break;
++ case Rot270: quarters = 0/*270deg*/; break;
++ }
++ newkeycode = Key_Left + ( keycode - Key_Left + quarters ) % 4;
+ break;
+ }
+
diff --git a/packages/libopie/libopie2/wireless.patch b/packages/libopie/libopie2/wireless.patch
new file mode 100644
index 0000000000..c0b2fa0f55
--- /dev/null
+++ b/packages/libopie/libopie2/wireless.patch
@@ -0,0 +1,12 @@
+diff --git a/opienet/onetwork.h b/opienet/onetwork.h
+index b13c7a3..370ad59 100644
+--- a/opienet/onetwork.h
++++ b/opienet/onetwork.h
+@@ -45,6 +45,7 @@
+ // hacky workarounds until we have a true user space wireless.h
+ #include <net/if.h>
+ #define _LINUX_IF_H
++#include <linux/types.h>
+ #include <linux/wireless.h>
+ #ifndef IW_MAX_PRIV_DEF
+ #define IW_MAX_PRIV_DEF 128
diff --git a/packages/libopie/libopie2_1.2.2.bb b/packages/libopie/libopie2_1.2.2.bb
index 8fcc2fba0a..8409e4c523 100644
--- a/packages/libopie/libopie2_1.2.2.bb
+++ b/packages/libopie/libopie2_1.2.2.bb
@@ -1,5 +1,5 @@
require ${PN}.inc
-
+PR = "r2"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/libopie2 \
file://include.pro \
diff --git a/packages/libopie/libopie2_cvs.bb b/packages/libopie/libopie2_cvs.bb
index 78cc00e619..55e7587103 100644
--- a/packages/libopie/libopie2_cvs.bb
+++ b/packages/libopie/libopie2_cvs.bb
@@ -1,13 +1,16 @@
require ${PN}.inc
PV = "1.2.2+cvs${SRCDATE}"
-PR = "r1"
+PR = "r8"
DEFAULT_PREFERENCE = "-1"
SRC_URI = "${HANDHELDS_CVS};module=opie/libopie2 \
- file://ipaq-2.6-sys-class-backlight-support.patch;patch=1 \
- file://keyboardless-buttonmap.patch;patch=1 \
- file://include.pro"
+ file://include.pro \
+ file://wireless.patch;patch=1"
+
+# Patches merged upstream, keep for reference (for 1.2.2)
+# file://ipaq-lcd-rotate-cleanup.patch;patch=1 \
+# file://exports.patch;patch=1 \
SRC_URI_append_poodle = " file://poodle-2.6-hotkeys.patch;patch=1"
diff --git a/packages/libpcre/libpcre_4.4.bb b/packages/libpcre/libpcre_4.4.bb
index 7b841d0cfc..3eb25ef485 100644
--- a/packages/libpcre/libpcre_4.4.bb
+++ b/packages/libpcre/libpcre_4.4.bb
@@ -5,9 +5,9 @@ provides a POSIX calling interface to PCRE; the regular expressions \
themselves still follow Perl syntax and semantics. The header file for \
the POSIX-style functions is called pcreposix.h."
SECTION = "devel"
-PR = "r6"
+PR = "r7"
LICENSE = "BSD"
-SRC_URI = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-${PV}.tar.bz2"
+SRC_URI = "${SOURCEFORGE_MIRROR}/pcre/pcre-${PV}.tar.bz2"
S = "${WORKDIR}/pcre-${PV}"
PROVIDES = "pcre"
diff --git a/packages/libqpe/libqpe-opie.inc b/packages/libqpe/libqpe-opie.inc
index 342c7d643b..77ba0f62ec 100644
--- a/packages/libqpe/libqpe-opie.inc
+++ b/packages/libqpe/libqpe-opie.inc
@@ -16,10 +16,10 @@ EXTRA_QMAKEVARS_PRE += "CONFIG+=LIBQPE_WITHROHFEEDBACK"
EXTRA_QMAKEVARS_POST += "DESTDIR= DEFINES+=LIBQPE_NO_INLINE_IMAGES"
CXXFLAGS_append = " -DOPIE_NO_ERASE_RECT_HACKFIX -DOPIE_NEW_MALLOC"
-CXXFLAGS_append_c7x0 = " -DOPIE_NO_WINDOWED "
-CXXFLAGS_append_tosa = " -DOPIE_NO_WINDOWED "
-CXXFLAGS_append_spitz = " -DOPIE_NO_WINDOWED "
-CXXFLAGS_append_akita = " -DOPIE_NO_WINDOWED "
+#CXXFLAGS_append_c7x0 = " -DOPIE_NO_WINDOWED "
+#CXXFLAGS_append_tosa = " -DOPIE_NO_WINDOWED "
+#CXXFLAGS_append_spitz = " -DOPIE_NO_WINDOWED "
+#CXXFLAGS_append_akita = " -DOPIE_NO_WINDOWED "
do_compile_prepend_mnci () {
ln -s custom-ramses.h custom.h
@@ -76,4 +76,4 @@ do_install() {
FILES_${PN} = "${palmtopdir}/lib/libqpe.so.*"
FILES_${PN}-dev = "${includedir} ${palmtopdir}/lib/*"
FILES_${PN}-dbg = "${palmtopdir}/lib/.debug/"
-PACKAGE_ARCH_${PN} = "${MACHINE_ARCH}"
+#PACKAGE_ARCH_${PN} = "${MACHINE_ARCH}"
diff --git a/packages/libqpe/libqpe-opie/save-windows-pos-dynamic.patch b/packages/libqpe/libqpe-opie/save-windows-pos-dynamic.patch
new file mode 100644
index 0000000000..54dd5947de
--- /dev/null
+++ b/packages/libqpe/libqpe-opie/save-windows-pos-dynamic.patch
@@ -0,0 +1,113 @@
+? 1.diff
+? library/1.diff
+Index: library/qpeapplication.cpp
+===================================================================
+RCS file: /cvs/opie/library/qpeapplication.cpp,v
+retrieving revision 1.115
+diff -u -r1.115 qpeapplication.cpp
+--- library/qpeapplication.cpp 27 Sep 2005 21:04:59 -0000 1.115
++++ library/qpeapplication.cpp 11 Jan 2007 06:12:50 -0000
+@@ -101,6 +101,7 @@
+
+
+ static bool useBigPixmaps = 0;
++static bool saveWindowsPos = 0;
+
+ class HackWidget : public QWidget
+ {
+@@ -129,6 +130,7 @@
+ fontSize = cfg.readNumEntry( "FontSize", 10 );
+ smallIconSize = cfg.readNumEntry( "SmallIconSize", 14 );
+ bigIconSize = cfg.readNumEntry( "BigIconSize", 32 );
++ saveWindowsPos = cfg.readBoolEntry( "AllowWindowed", false );
+ #ifdef OPIE_WITHROHFEEDBACK
+ RoH = 0;
+ #endif
+@@ -250,7 +252,8 @@
+
+ static bool read_widget_rect(const QString &app, bool &maximized, QPoint &p, QSize &s)
+ {
+-#ifndef OPIE_NO_WINDOWED
++ if (!saveWindowsPos)
++ return FALSE;
+ maximized = TRUE;
+ // 350 is the trigger in qwsdefaultdecoration for providing a resize button
+ if ( qApp->desktop()->width() <= 350 )
+@@ -272,8 +275,6 @@
+
+ return TRUE;
+ }
+-#endif
+- return FALSE;
+ }
+
+
+@@ -322,7 +323,8 @@
+ {
+ if( !w )
+ return;
+-#ifndef OPIE_NO_WINDOWED
++ if (!saveWindowsPos)
++ return;
+ // 350 is the trigger in qwsdefaultdecoration for providing a resize button
+ if ( qApp->desktop()->width() <= 350 )
+ return;
+@@ -343,7 +345,6 @@
+ QString s;
+ s.sprintf("%d,%d,%d,%d,%d", r.left() + offsetX, r.top() + offsetY, r.width(), r.height(), w->isMaximized() );
+ cfg.writeEntry( app, s );
+-#endif
+ }
+
+ static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ )
+@@ -2207,6 +2208,11 @@
+ quit();
+ }
+
++bool QPEApplication::isSaveWindowsPos()
++{
++ return saveWindowsPos;
++}
++
+ #if (__GNUC__ > 2 ) && !defined(_OS_MACX_)
+ extern "C" void __cxa_pure_virtual();
+
+Index: library/qpeapplication.h
+===================================================================
+RCS file: /cvs/opie/library/qpeapplication.h,v
+retrieving revision 1.35
+diff -u -r1.35 qpeapplication.h
+--- library/qpeapplication.h 4 Oct 2005 19:38:19 -0000 1.35
++++ library/qpeapplication.h 11 Jan 2007 06:12:50 -0000
+@@ -137,6 +137,8 @@
+
+ int exec();
+
++ static bool isSaveWindowsPos();
++
+ signals:
+ void clientMoused();
+ void timeChanged();
+Index: library/widget_showing.cpp
+===================================================================
+RCS file: /cvs/opie/library/widget_showing.cpp,v
+retrieving revision 1.4
+diff -u -r1.4 widget_showing.cpp
+--- library/widget_showing.cpp 19 Apr 2005 13:27:29 -0000 1.4
++++ library/widget_showing.cpp 11 Jan 2007 06:12:50 -0000
+@@ -52,13 +52,8 @@
+ return;
+ }
+
+-#ifdef OPIE_NO_WINDOWED
+- Q_UNUSED( nomax )
+- if ( TRUE ) {
+-#else
+- if ( !nomax
+- && ( qApp->desktop()->width() <= 320 ) ){
+-#endif
++ if ( !isSaveWindowsPos() || (!nomax
++ && ( qApp->desktop()->width() <= 30 )) ){
+ wg->showMaximized();
+ } else {
+ #ifdef Q_WS_QWS
diff --git a/packages/libqpe/libqpe-opie/unbreak-logging.patch b/packages/libqpe/libqpe-opie/unbreak-logging.patch
new file mode 100644
index 0000000000..fedd73be35
--- /dev/null
+++ b/packages/libqpe/libqpe-opie/unbreak-logging.patch
@@ -0,0 +1,21 @@
+--- library/qpeapplication.cpp.org 2007-01-24 19:54:07.000000000 +0000
++++ library/qpeapplication.cpp 2007-05-03 03:34:10.000000000 +0000
+@@ -792,14 +792,14 @@
+ {
+ switch ( type ) {
+ case QtDebugMsg:
+-#ifdef QT_DEBUG
++//#ifdef QT_DEBUG
+ fprintf( stderr, "Debug: %s\n", msg );
+-#endif
++//#endif
+ break;
+ case QtWarningMsg:
+-#ifdef QT_DEBUG
++//#ifdef QT_DEBUG
+ fprintf( stderr, "Warning: %s\n", msg );
+-#endif
++//#endif
+ break;
+ case QtFatalMsg:
+ fprintf( stderr, "Fatal: %s\n", msg );
diff --git a/packages/libqpe/libqpe-opie_1.2.2.bb b/packages/libqpe/libqpe-opie_1.2.2.bb
index 21ffea194e..009a075091 100644
--- a/packages/libqpe/libqpe-opie_1.2.2.bb
+++ b/packages/libqpe/libqpe-opie_1.2.2.bb
@@ -1,7 +1,8 @@
require ${PN}.inc
-PR = "r1"
+PR = "r3"
TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '_')}"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/library \
+ file://save-windows-pos-dynamic.patch;patch=1 \
file://fix-titleheight.patch;patch=1"
diff --git a/packages/libqpe/libqpe-opie_cvs.bb b/packages/libqpe/libqpe-opie_cvs.bb
index 3dafddcf0a..0debaa004f 100644
--- a/packages/libqpe/libqpe-opie_cvs.bb
+++ b/packages/libqpe/libqpe-opie_cvs.bb
@@ -1,9 +1,10 @@
require ${PN}.inc
-# Remove the dash below when 1.2.1 changes
-PV = "1.2.2+cvs-${SRCDATE}"
-PR = "r1"
+PV = "1.2.2+cvs${SRCDATE}"
+PR = "r8"
SRC_URI = "${HANDHELDS_CVS};module=opie/library \
- file://fix-titleheight.patch;patch=1"
+ file://fix-titleheight.patch;patch=1 \
+ file://unbreak-logging.patch;patch=1 \
+ "
diff --git a/packages/librcf/librcf_0.4.bb b/packages/librcf/librcf_0.4.bb
index 463aef801f..13012fa803 100644
--- a/packages/librcf/librcf_0.4.bb
+++ b/packages/librcf/librcf_0.4.bb
@@ -8,7 +8,7 @@ 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/
-SRC_URI = "http://www.codeproject.com/threads/Rcf_Ipc_For_Cpp/RCF-04.zip \
+SRC_URI = "http://www.mediaassistent.se/jarl/files/RCF-04.zip \
file://rcf-0.4-g++-4.1.diff;patch=1 \
file://rcf-0.4-openembedded.diff;patch=1"
S = "${WORKDIR}/RCF-${PV}"
diff --git a/packages/librsvg/librsvg_2.16.0.bb b/packages/librsvg/librsvg_2.16.0.bb
index 3110c12148..230ba1b43f 100644
--- a/packages/librsvg/librsvg_2.16.0.bb
+++ b/packages/librsvg/librsvg_2.16.0.bb
@@ -15,7 +15,8 @@ FILES_rsvg = "${bindir}/rsvg \
${bindir}/rsvg-convert \
${datadir}/pixmaps/svg-viewer.svg"
FILES_librsvg-gtk = "${libdir}/gtk-2.0/*/*/*.so.*"
-FILES_librsvg-gtk-dev += "${libdir}/gtk-2.0/*"
+FILES_librsvg-gtk-dev += "${libdir}/gtk-2.0/*.la \
+ ${libdir}/gtk-2.0/*/*.la"
FILES_librsvg-gtk-dbg += "${libdir}/gtk-2.0/.debug"
EXTRA_OECONF = "--disable-mozilla-plugin"
diff --git a/packages/librsvg/librsvg_2.16.1.bb b/packages/librsvg/librsvg_2.16.1.bb
new file mode 100644
index 0000000000..49513128d7
--- /dev/null
+++ b/packages/librsvg/librsvg_2.16.1.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Library for rendering SVG files"
+SECTION = "x11/utils"
+DEPENDS = "gtk+ libcroco cairo libart-lgpl libxml2 popt"
+LICENSE = "LGPL"
+
+EXTRA_OECONF = "--disable-mozilla-plugin"
+
+inherit autotools pkgconfig gnome
+
+PACKAGES =+ "librsvg-gtk librsvg-gtk-dbg librsvg-gtk-dev rsvg"
+FILES_${PN} = "${libdir}/*.so.*"
+FILES_rsvg = "${bindir}/rsvg \
+ ${bindir}/rsvg-view \
+ ${bindir}/rsvg-convert \
+ ${datadir}/pixmaps/svg-viewer.svg"
+FILES_librsvg-gtk = "${libdir}/gtk-2.0/*/*/*.so.*"
+FILES_librsvg-gtk-dev += "${libdir}/gtk-2.0/*.la \
+ ${libdir}/gtk-2.0/*/*.la"
+FILES_librsvg-gtk-dbg += "${libdir}/gtk-2.0/.debug"
+
+EXTRA_OECONF = "--disable-mozilla-plugin"
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/libschedule/libschedule_svn.bb b/packages/libschedule/libschedule_svn.bb
new file mode 100644
index 0000000000..1095c2de32
--- /dev/null
+++ b/packages/libschedule/libschedule_svn.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "RTC alarm handling library for GPE"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "glib-2.0 sqlite libgpewidget"
+PV = "0.16+svn${SRCDATE}"
+PR = "r0"
+
+inherit autotools pkgconfig gpe
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+do_stage () {
+ autotools_stage_all
+}
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/libsdl/files/directfb_obsolete_calls.patch b/packages/libsdl/files/directfb_obsolete_calls.patch
new file mode 100644
index 0000000000..f3f422cde3
--- /dev/null
+++ b/packages/libsdl/files/directfb_obsolete_calls.patch
@@ -0,0 +1,33 @@
+--- tmp/work/armv5te-angstrom-linux-gnueabi/libsdl-directfb-1.2.9-r1/SDL-1.2.9/src/video/directfb/SDL_DirectFB_video.c 2007-02-18 11:40:38.000000000 -0500
++++ SDL/src/video/directfb/SDL_DirectFB_video.c 2007-02-18 11:00:07.000000000 -0500
+@@ -376,7 +376,7 @@
+ {
+ int i;
+ DFBResult ret;
+- DFBCardCapabilities caps;
++ DFBGraphicsDeviceDescription caps;
+ DFBDisplayLayerConfig dlc;
+ struct DirectFBEnumRect *rect;
+ IDirectFB *dfb = NULL;
+@@ -448,7 +448,7 @@
+
+
+ /* Query card capabilities to get the video memory size */
+- dfb->GetCardCapabilities (dfb, &caps);
++ dfb->GetDeviceDescription (dfb, &caps);
+
+ this->info.wm_available = 1;
+ this->info.hw_available = 1;
+diff -u'rNF^function' tmp/work/armv5te-angstrom-linux-gnueabi/libsdl-directfb-1.2.9-r1/SDL-1.2.9/src/video/directfb/SDL_Direct
+/SDL_DirectFB_events.c
+--- tmp/work/armv5te-angstrom-linux-gnueabi/libsdl-directfb-1.2.9-r1/SDL-1.2.9/src/video/directfb/SDL_DirectFB_events.c 2004-0
++++ SDL/src/video/directfb/SDL_DirectFB_events.c 2007-02-18 11:00:07.000000000 -0500
+@@ -161,7 +161,7 @@
+ keymap[DIKI_SHIFT_L - DIKI_UNKNOWN] = SDLK_LSHIFT;
+ keymap[DIKI_SHIFT_R - DIKI_UNKNOWN] = SDLK_RSHIFT;
+ keymap[DIKI_ALT_L - DIKI_UNKNOWN] = SDLK_LALT;
+- keymap[DIKI_ALTGR - DIKI_UNKNOWN] = SDLK_RALT;
++ keymap[DIKI_ALT_R - DIKI_UNKNOWN] = SDLK_RALT;
+ keymap[DIKI_TAB - DIKI_UNKNOWN] = SDLK_TAB;
+ keymap[DIKI_ENTER - DIKI_UNKNOWN] = SDLK_RETURN;
+ keymap[DIKI_SPACE - DIKI_UNKNOWN] = SDLK_SPACE;
diff --git a/packages/libsdl/libsdl-directfb_1.2.9.bb b/packages/libsdl/libsdl-directfb_1.2.9.bb
new file mode 100644
index 0000000000..aa089e0ecb
--- /dev/null
+++ b/packages/libsdl/libsdl-directfb_1.2.9.bb
@@ -0,0 +1,60 @@
+DESCRIPTION = "Simple DirectMedia Layer - DirectFB Edition"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS = "alsa-lib directfb"
+PROVIDES = "virtual/libsdl"
+LICENSE = "LGPL"
+
+PR = "r1"
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
+ file://extra-keys.patch;patch=1 \
+ file://directfb_obsolete_calls.patch;patch=1 \
+ file://acinclude.m4"
+S = "${WORKDIR}/SDL-${PV}"
+
+inherit autotools binconfig
+
+EXTRA_OECONF = "--disable-static --disable-debug --enable-cdrom --enable-threads --enable-timers --enable-endian \
+ --enable-file --enable-oss --enable-alsa --disable-esd --disable-arts \
+ --disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest \
+ --disable-mintaudio --disable-nasm --disable-video-x11 --disable-video-dga \
+ --disable-video-fbcon --enable-video-directfb --disable-video-ps2gs \
+ --disable-video-xbios --disable-video-gem --disable-video-dummy \
+ --disable-video-opengl --enable-input-events --enable-pthreads \
+ --disable-video-picogui --disable-video-qtopia --enable-dlopen"
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir}/*config"
+
+do_configure_prepend() {
+ rm -f ${S}/acinclude.m4
+ cp ${WORKDIR}/acinclude.m4 ${S}/
+}
+
+do_configure_append () {
+ cd ${S}
+
+ # prevent libtool from linking libs against libstdc++, libgcc, ...
+ cat ${TARGET_PREFIX}libtool | sed -e 's/postdeps=".*"/postdeps=""/' > ${TARGET_PREFIX}libtool.tmp
+ mv ${TARGET_PREFIX}libtool.tmp ${TARGET_PREFIX}libtool
+ find ${S} -type f | xargs sed -i 's:I/usr/include:I${STAGING_INCDIR}:g'
+
+}
+
+do_stage() {
+ oe_libinstall -so -C src libSDL ${STAGING_LIBDIR}
+ rm ${STAGING_LIBDIR}/libSDL.la
+ ln -sf libSDL.so ${STAGING_LIBDIR}/libSDL-1.2.so
+ #oe_libinstall -a -C src/main libSDLmain ${STAGING_LIBDIR}
+ install -m 0644 src/main/libSDLmain.a ${STAGING_LIBDIR}
+
+ install -d ${STAGING_INCDIR}/SDL
+ for f in include/*.h
+ do
+ install -m 0644 $f ${STAGING_INCDIR}/SDL/
+ done
+
+ install -m 0644 *.m4 ${STAGING_DATADIR}/aclocal/
+}
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/.mtn2git_empty b/packages/libsdl/libsdl-qpe-1.2.9/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libsdl/libsdl-qpe-1.2.9/.mtn2git_empty
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/SDL-Akita-1.2.9.patch b/packages/libsdl/libsdl-qpe-1.2.9/SDL-Akita-1.2.9.patch
new file mode 100644
index 0000000000..56ffe468e8
--- /dev/null
+++ b/packages/libsdl/libsdl-qpe-1.2.9/SDL-Akita-1.2.9.patch
@@ -0,0 +1,51 @@
+diff -Naur SDL-1.2.9-orig/src/video/qtopia/SDL_sysvideo.cc SDL-1.2.9/src/video/qtopia/SDL_sysvideo.cc
+--- SDL-1.2.9-orig/src/video/qtopia/SDL_sysvideo.cc 2007-03-12 20:58:19.000000000 +0100
++++ SDL-1.2.9/src/video/qtopia/SDL_sysvideo.cc 2007-03-12 20:58:27.000000000 +0100
+@@ -109,6 +109,7 @@
+ MACHINE_SHARP_SLC760,
+ MACHINE_SHARP_SLC860,
+ MACHINE_SHARP_SL6000,
++ MACHINE_SHARP_SLC1000,
+ MACHINE_IPAQ,
+ MACHINE_MAX
+ } machine_t;
+@@ -123,6 +124,7 @@
+ { "Sharp", "SL-C760", 0 },
+ { "Sharp", "SL-C860", 0 },
+ { "Sharp", "SL-6000", 0 },
++ { "Sharp", "SL-C1000", 0 },
+ { "HP", "HP IPAQ", 0 },
+ };
+
+@@ -428,6 +430,8 @@
+ machine = MACHINE_SHARP_SLC760;
+ else if (strstr(buf, "SHARP Boxer") != NULL)
+ machine = MACHINE_SHARP_SLC860;
++ else if (strstr(buf, "SHARP Akita") != NULL)
++ machine = MACHINE_SHARP_SLC1000;
+ else if ( ODevice::inst ( )-> series ( ) == Model_iPAQ )
+ machine = MACHINE_IPAQ;
+ else
+@@ -522,17 +526,18 @@
+ if (machine == MACHINE_SHARP_SLC700 ||
+ machine == MACHINE_SHARP_SLC750 ||
+ machine == MACHINE_SHARP_SLC760 ||
+- machine == MACHINE_SHARP_SLC860 || // ¾Ü¤·¤¤¤³¤È¤ï¤«¤é¤ó¤±¤É¤È¤ê¤¢¤¨¤º
+- machine == MACHINE_SHARP_SL6000 ) { // ¾Ü¤·¤¤¤³¤È¤ï¤«¤é¤ó¤±¤É¤È¤ê¤¢¤¨¤º
++ machine == MACHINE_SHARP_SLC860 ||
++ machine == MACHINE_SHARP_SL6000 ||
++ machine == MACHINE_SHARP_SLC1000 ) {
+ is_VGA_machine = true;
+ }else {
+ is_VGA_machine = false;
+ }
+
+- // qte ¤Ç¤Î²óž³ÑÅÙ¤ò¼èÆÀ
++ // qte
+ QT_GetQteServerSpec(_this, &qteRotation, &isQteQvga);
+
+- // SL-C700 ¤Î¥¹¥¿¥¤¥ë
++ // SL-C700
+ bool isInputStyle = false;
+ if (is_VGA_machine) {
+ int status = system("/home/QtPalmtop/bin/chkhinge");
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/acinclude.m4 b/packages/libsdl/libsdl-qpe-1.2.9/acinclude.m4
new file mode 100644
index 0000000000..30597ccc45
--- /dev/null
+++ b/packages/libsdl/libsdl-qpe-1.2.9/acinclude.m4
@@ -0,0 +1,332 @@
+# Local macros for the SDL configure.in script
+
+dnl Function to link an architecture specific file
+dnl LINK_ARCH_SRC(source_dir, arch, source_file)
+AC_DEFUN([COPY_ARCH_SRC],
+[
+ old="$srcdir/$1/$2/$3"
+ new="$1/$3"
+ if test ! -d $1; then
+ echo "Creating directory $1"
+ mkdir -p $1
+ fi
+ echo "Copying $old -> $new"
+ cat >$new <<__EOF__
+/* WARNING: This file was automatically generated!
+ * Original: $old
+ */
+__EOF__
+ cat >>$new <$old
+])
+##############################################################################
+dnl Configure Paths for Alsa
+dnl Some modifications by Richard Boulton <richard-alsa@tartarus.org>
+dnl Christopher Lansdown <lansdoct@cs.alfred.edu>
+dnl Jaroslav Kysela <perex@suse.cz>
+dnl Last modification: alsa.m4,v 1.23 2004/01/16 18:14:22 tiwai Exp
+dnl AM_PATH_ALSA([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for libasound, and define ALSA_CFLAGS and ALSA_LIBS as appropriate.
+dnl enables arguments --with-alsa-prefix=
+dnl --with-alsa-enc-prefix=
+dnl --disable-alsatest
+dnl
+dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified,
+dnl and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result.
+dnl
+AC_DEFUN([AM_PATH_ALSA],
+[dnl Save the original CFLAGS, LDFLAGS, and LIBS
+alsa_save_CFLAGS="$CFLAGS"
+alsa_save_LDFLAGS="$LDFLAGS"
+alsa_save_LIBS="$LIBS"
+alsa_found=yes
+
+dnl
+dnl Get the cflags and libraries for alsa
+dnl
+AC_ARG_WITH(alsa-prefix,
+[ --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional)],
+[alsa_prefix="$withval"], [alsa_prefix=""])
+AC_ARG_WITH(alsa-inc-prefix,
+[ --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional)],
+[alsa_inc_prefix="$withval"], [alsa_inc_prefix=""])
+
+dnl FIXME: this is not yet implemented
+AC_ARG_ENABLE(alsatest,
+[ --disable-alsatest Do not try to compile and run a test Alsa program],
+[enable_alsatest="$enableval"],
+[enable_alsatest=yes])
+
+dnl Add any special include directories
+AC_MSG_CHECKING(for ALSA CFLAGS)
+if test "$alsa_inc_prefix" != "" ; then
+ ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix"
+ CFLAGS="$CFLAGS -I$alsa_inc_prefix"
+fi
+AC_MSG_RESULT($ALSA_CFLAGS)
+
+dnl add any special lib dirs
+AC_MSG_CHECKING(for ALSA LDFLAGS)
+if test "$alsa_prefix" != "" ; then
+ ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix"
+ LDFLAGS="$LDFLAGS $ALSA_LIBS"
+fi
+
+dnl add the alsa library
+ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread"
+LIBS=`echo $LIBS | sed 's/-lm//'`
+LIBS=`echo $LIBS | sed 's/-ldl//'`
+LIBS=`echo $LIBS | sed 's/-lpthread//'`
+LIBS=`echo $LIBS | sed 's/ //'`
+LIBS="$ALSA_LIBS $LIBS"
+AC_MSG_RESULT($ALSA_LIBS)
+
+dnl Check for a working version of libasound that is of the right version.
+min_alsa_version=ifelse([$1], ,0.1.1,$1)
+AC_MSG_CHECKING(for libasound headers version >= $min_alsa_version)
+no_alsa=""
+ alsa_min_major_version=`echo $min_alsa_version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ alsa_min_minor_version=`echo $min_alsa_version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ alsa_min_micro_version=`echo $min_alsa_version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+
+AC_LANG_SAVE
+AC_LANG_C
+AC_TRY_COMPILE([
+#include <alsa/asoundlib.h>
+], [
+/* ensure backward compatibility */
+#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR)
+#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR
+#endif
+#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR)
+#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR
+#endif
+#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR)
+#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR
+#endif
+
+# if(SND_LIB_MAJOR > $alsa_min_major_version)
+ exit(0);
+# else
+# if(SND_LIB_MAJOR < $alsa_min_major_version)
+# error not present
+# endif
+
+# if(SND_LIB_MINOR > $alsa_min_minor_version)
+ exit(0);
+# else
+# if(SND_LIB_MINOR < $alsa_min_minor_version)
+# error not present
+# endif
+
+# if(SND_LIB_SUBMINOR < $alsa_min_micro_version)
+# error not present
+# endif
+# endif
+# endif
+exit(0);
+],
+ [AC_MSG_RESULT(found.)],
+ [AC_MSG_RESULT(not present.)
+ ifelse([$3], , [AC_MSG_ERROR(Sufficiently new version of libasound not found.)])
+ alsa_found=no]
+)
+AC_LANG_RESTORE
+
+dnl Now that we know that we have the right version, let's see if we have the library and not just the headers.
+if test "x$enable_alsatest" = "xyes"; then
+AC_CHECK_LIB([asound], [snd_ctl_open],,
+ [ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)])
+ alsa_found=no]
+)
+fi
+if test "x$alsa_found" = "xyes" ; then
+ ifelse([$2], , :, [$2])
+ LIBS=`echo $LIBS | sed 's/-lasound//g'`
+ LIBS=`echo $LIBS | sed 's/ //'`
+ LIBS="-lasound $LIBS"
+fi
+if test "x$alsa_found" = "xno" ; then
+ ifelse([$3], , :, [$3])
+ CFLAGS="$alsa_save_CFLAGS"
+ LDFLAGS="$alsa_save_LDFLAGS"
+ LIBS="$alsa_save_LIBS"
+ ALSA_CFLAGS=""
+ ALSA_LIBS=""
+fi
+
+dnl That should be it. Now just export out symbols:
+AC_SUBST(ALSA_CFLAGS)
+AC_SUBST(ALSA_LIBS)
+])
+
+#
+# --- esd.m4 ---
+#
+# Configure paths for ESD
+# Manish Singh 98-9-30
+# stolen back from Frank Belew
+# stolen from Manish Singh
+# Shamelessly stolen from Owen Taylor
+
+dnl AM_PATH_ESD([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for ESD, and define ESD_CFLAGS and ESD_LIBS
+dnl
+AC_DEFUN([AM_PATH_ESD],
+[dnl
+dnl Get the cflags and libraries from the esd-config script
+dnl
+AC_ARG_WITH(esd-prefix,[ --with-esd-prefix=PFX Prefix where ESD is installed (optional)],
+ esd_prefix="$withval", esd_prefix="")
+AC_ARG_WITH(esd-exec-prefix,[ --with-esd-exec-prefix=PFX Exec prefix where ESD is installed (optional)],
+ esd_exec_prefix="$withval", esd_exec_prefix="")
+AC_ARG_ENABLE(esdtest, [ --disable-esdtest Do not try to compile and run a test ESD program],
+ , enable_esdtest=yes)
+
+ if test x$esd_exec_prefix != x ; then
+ esd_args="$esd_args --exec-prefix=$esd_exec_prefix"
+ if test x${ESD_CONFIG+set} != xset ; then
+ ESD_CONFIG=$esd_exec_prefix/bin/esd-config
+ fi
+ fi
+ if test x$esd_prefix != x ; then
+ esd_args="$esd_args --prefix=$esd_prefix"
+ if test x${ESD_CONFIG+set} != xset ; then
+ ESD_CONFIG=$esd_prefix/bin/esd-config
+ fi
+ fi
+
+ AC_PATH_PROG(ESD_CONFIG, esd-config, no)
+ min_esd_version=ifelse([$1], ,0.2.7,$1)
+ AC_MSG_CHECKING(for ESD - version >= $min_esd_version)
+ no_esd=""
+ if test "$ESD_CONFIG" = "no" ; then
+ no_esd=yes
+ else
+ ESD_CFLAGS=`$ESD_CONFIG $esdconf_args --cflags`
+ ESD_LIBS=`$ESD_CONFIG $esdconf_args --libs`
+
+ esd_major_version=`$ESD_CONFIG $esd_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ esd_minor_version=`$ESD_CONFIG $esd_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ esd_micro_version=`$ESD_CONFIG $esd_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+ if test "x$enable_esdtest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $ESD_CFLAGS"
+ LIBS="$LIBS $ESD_LIBS"
+dnl
+dnl Now check if the installed ESD is sufficiently new. (Also sanity
+dnl checks the results of esd-config to some extent
+dnl
+ rm -f conf.esdtest
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <esd.h>
+
+char*
+my_strdup (char *str)
+{
+ char *new_str;
+
+ if (str)
+ {
+ new_str = malloc ((strlen (str) + 1) * sizeof(char));
+ strcpy (new_str, str);
+ }
+ else
+ new_str = NULL;
+
+ return new_str;
+}
+
+int main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.esdtest");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = my_strdup("$min_esd_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_esd_version");
+ exit(1);
+ }
+
+ if (($esd_major_version > major) ||
+ (($esd_major_version == major) && ($esd_minor_version > minor)) ||
+ (($esd_major_version == major) && ($esd_minor_version == minor) && ($esd_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** 'esd-config --version' returned %d.%d.%d, but the minimum version\n", $esd_major_version, $esd_minor_version, $esd_micro_version);
+ printf("*** of ESD required is %d.%d.%d. If esd-config is correct, then it is\n", major, minor, micro);
+ printf("*** best to upgrade to the required version.\n");
+ printf("*** If esd-config was wrong, set the environment variable ESD_CONFIG\n");
+ printf("*** to point to the correct copy of esd-config, and remove the file\n");
+ printf("*** config.cache before re-running configure\n");
+ return 1;
+ }
+}
+
+],, no_esd=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_esd" = x ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ if test "$ESD_CONFIG" = "no" ; then
+ echo "*** The esd-config script installed by ESD could not be found"
+ echo "*** If ESD was installed in PREFIX, make sure PREFIX/bin is in"
+ echo "*** your path, or set the ESD_CONFIG environment variable to the"
+ echo "*** full path to esd-config."
+ else
+ if test -f conf.esdtest ; then
+ :
+ else
+ echo "*** Could not run ESD test program, checking why..."
+ CFLAGS="$CFLAGS $ESD_CFLAGS"
+ LIBS="$LIBS $ESD_LIBS"
+ AC_TRY_LINK([
+#include <stdio.h>
+#include <esd.h>
+], [ return 0; ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding ESD or finding the wrong"
+ echo "*** version of ESD. If it is not finding ESD, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means ESD was incorrectly installed"
+ echo "*** or that you have moved ESD since it was installed. In the latter case, you"
+ echo "*** may want to edit the esd-config script: $ESD_CONFIG" ])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ ESD_CFLAGS=""
+ ESD_LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+ AC_SUBST(ESD_CFLAGS)
+ AC_SUBST(ESD_LIBS)
+ rm -f conf.esdtest
+])
+
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/agawa-piro-mickey-1.2.9.patch b/packages/libsdl/libsdl-qpe-1.2.9/agawa-piro-mickey-1.2.9.patch
new file mode 100644
index 0000000000..d7c561402f
--- /dev/null
+++ b/packages/libsdl/libsdl-qpe-1.2.9/agawa-piro-mickey-1.2.9.patch
@@ -0,0 +1,2054 @@
+diff -Naur SDL-1.2.9-orig/src/video/fbcon/SDL_fbevents.c SDL-1.2.9/src/video/fbcon/SDL_fbevents.c
+--- SDL-1.2.9-orig/src/video/fbcon/SDL_fbevents.c 2005-01-04 20:04:14.000000000 +0100
++++ SDL-1.2.9/src/video/fbcon/SDL_fbevents.c 2007-03-12 20:54:14.000000000 +0100
+@@ -60,7 +60,13 @@
+ #ifndef GPM_NODE_FIFO
+ #define GPM_NODE_FIFO "/dev/gpmdata"
+ #endif
++#define POINTERCAL "/etc/pointercal"
+
++static struct SDL_cal {
++ long ok;
++ long a, b, c, d, e, f, s;
++ long rotate;
++} cal = { 0 };
+
+ /* The translation tables from a console scancode to a SDL keysym */
+ #define NUM_VGAKEYMAPS (1<<KG_CAPSSHIFT)
+@@ -317,6 +323,7 @@
+ MOUSE_MS,
+ MOUSE_BM,
+ MOUSE_ELO,
++ TS_SLC7X0,
+ NUM_MOUSE_DRVS
+ } mouse_drv = MOUSE_NONE;
+
+@@ -500,6 +507,9 @@
+ mousedev = getenv("SDL_MOUSEDEV");
+ mouse_fd = -1;
+
++ const char *sdl_rot_flag;
++ sdl_rot_flag = getenv("SDL_FBROT");
++
+ /* ELO TOUCHSCREEN SUPPORT */
+
+ if( (mousedrv != NULL) && (strcmp(mousedrv, "ELO") == 0) ) {
+@@ -601,9 +611,39 @@
+ mouse_drv = MOUSE_MS;
+ }
+ }
++ /* Default to a SLC7X0 touch screen */
++ if ( mouse_fd < 0 ) {
++ mousedev = "/dev/ts";
++ mouse_fd = open(mousedev, O_RDONLY, 0);
++ if ( mouse_fd >= 0 ) {
++ FILE *pcal;
++ cal.ok = 0;
++ pcal = fopen(POINTERCAL, "r");
++ if(pcal == NULL){
++ fprintf(stderr, "Warning: cannot open " POINTERCAL ".\n");
++ }else{
++ int n;
++ n = fscanf(pcal, "%d %d %d %d %d %d %d",
++ &cal.a, &cal.b, &cal.c, &cal.d, &cal.e, &cal.f, &cal.s);
++ if(n != 7){
++ fprintf(stderr, "Warning: " POINTERCAL " is unknown format.\n");
++ }else{
++ cal.ok = 1;
++ }
++ fclose(pcal);
++ }
++ if ( sdl_rot_flag == NULL ) {
++ cal.rotate = 0;
++ } else {
++ cal.rotate = atoi(sdl_rot_flag);
++ }
++ mouse_drv = TS_SLC7X0;
++ }
++ }
+ if ( mouse_fd < 0 ) {
+ mouse_drv = MOUSE_NONE;
+ }
++
+ return(mouse_fd);
+ }
+
+@@ -678,6 +718,10 @@
+ packetsize = ELO_PACKET_SIZE;
+ relative = 0;
+ break;
++ case TS_SLC7X0:
++ packetsize = 8;
++ relative = 0;
++ break;
+ case NUM_MOUSE_DRVS:
+ /* Uh oh.. */
+ packetsize = 0;
+@@ -810,6 +854,25 @@
+ */
+
+ case MOUSE_ELO:
++ case TS_SLC7X0:
++ /* Get current mouse state */
++ button = ((mousebuf[i+1] << 8)+mousebuf[i])/500;
++ dx = (mousebuf[i+3] << 8)+mousebuf[i+2];
++ dy = (mousebuf[i+5] << 8)+mousebuf[i+4];
++ if(cal.ok){
++ long X, Y;
++ X = (cal.a * dx + cal.b * dy + cal.c) / cal.s;
++ Y = (cal.d * dx + cal.e * dy + cal.f) / cal.s;
++ dx = X;
++ dy = Y;
++ }
++ if(cal.rotate == 3){
++ int tmp;
++ tmp=dx;
++ dx = dy;
++ dy = 480-tmp;
++ }
++ break;
+ case NUM_MOUSE_DRVS:
+ /* Uh oh.. */
+ dx = 0;
+diff -Naur SDL-1.2.9-orig/src/video/fbcon/SDL_fbvideo.c SDL-1.2.9/src/video/fbcon/SDL_fbvideo.c
+--- SDL-1.2.9-orig/src/video/fbcon/SDL_fbvideo.c 2005-02-12 19:03:54.000000000 +0100
++++ SDL-1.2.9/src/video/fbcon/SDL_fbvideo.c 2007-03-12 20:54:14.000000000 +0100
+@@ -51,7 +51,7 @@
+ #include "SDL_fbmatrox.h"
+ #include "SDL_fbriva.h"
+
+-
++/* #define FBCON_DEBUG 1 */
+ #if defined(i386) && defined(FB_TYPE_VGA_PLANES)
+ #define VGA16_FBCON_SUPPORT
+ #ifndef FB_AUX_VGA_PLANES_VGA4
+@@ -76,9 +76,11 @@
+ { 0, 0, 720, 576 }, /* PAL */
+ { 0, 0, 720, 480 }, /* NTSC */
+ { 0, 0, 640, 480 }, /* 16 bpp: 0x111, or 273 */
++ { 0, 0, 480, 640 },
+ { 0, 0, 640, 400 }, /* 8 bpp: 0x100, or 256 */
+ { 0, 0, 512, 384 },
+ { 0, 0, 320, 240 },
++ { 0, 0, 240, 320 },
+ { 0, 0, 320, 200 }
+ };
+ static const struct {
+@@ -112,9 +114,11 @@
+ */
+ { 320, 200, 79440, 16, 16, 20, 4, 48, 1, 0, 2 }, /* 70 Hz */
+ { 320, 240, 63492, 16, 16, 16, 4, 48, 2, 0, 2 }, /* 72 Hz */
++ { 240, 320, 63492, 16, 16, 16, 4, 48, 3, 0, 2 }, /* 72 Hz */
+ { 512, 384, 49603, 48, 16, 16, 1, 64, 3, 0, 0 }, /* 78 Hz */
+ { 640, 400, 31746, 96, 32, 41, 1, 64, 3, 2, 0 }, /* 85 Hz */
+ { 640, 480, 31746, 120, 16, 16, 1, 64, 3, 0, 0 }, /* 75 Hz */
++ { 480, 640, 31746, 120, 16, 16, 1, 64, 4, 0, 0 }, /* 75 Hz */
+ { 768, 576, 26101, 144, 16, 28, 6, 112, 4, 0, 0 }, /* 60 Hz */
+ { 800, 600, 20000, 64, 56, 23, 37, 120, 6, 3, 0 }, /* 72 Hz */
+ { 960, 720, 17686, 144, 24, 28, 8, 112, 4, 0, 0 }, /* 60 Hz */
+@@ -152,6 +156,10 @@
+ struct fb_var_screeninfo *vinfo);
+ static void FB_RestorePalette(_THIS);
+
++static char *console_fd_buf;
++static char *mapped_mem_fb;
++static int rotation_flag;
++
+ /* FB driver bootstrap functions */
+
+ static int FB_Available(void)
+@@ -241,18 +249,30 @@
+
+ mode_okay = 0;
+ vinfo->bits_per_pixel = (index+1)*8;
+- vinfo->xres = *w;
+- vinfo->xres_virtual = *w;
+- vinfo->yres = *h;
+- vinfo->yres_virtual = *h;
++ if ((rotation_flag == 0) || (rotation_flag == 2)) {
++ vinfo->xres = *w;
++ vinfo->xres_virtual = *w;
++ vinfo->yres = *h;
++ vinfo->yres_virtual = *h;
++ } else {
++ vinfo->xres = *h;
++ vinfo->xres_virtual = *h;
++ vinfo->yres = *w;
++ vinfo->yres_virtual = *w;
++ }
+ vinfo->activate = FB_ACTIVATE_TEST;
+ if ( ioctl(console_fd, FBIOPUT_VSCREENINFO, vinfo) == 0 ) {
+ #ifdef FBCON_DEBUG
+ fprintf(stderr, "Checked mode %dx%d at %d bpp, got mode %dx%d at %d bpp\n", *w, *h, (index+1)*8, vinfo->xres, vinfo->yres, vinfo->bits_per_pixel);
+ #endif
+ if ( (((vinfo->bits_per_pixel+7)/8)-1) == index ) {
+- *w = vinfo->xres;
+- *h = vinfo->yres;
++ if ((rotation_flag == 0) || (rotation_flag == 2)) {
++ *w = vinfo->xres;
++ *h = vinfo->yres;
++ } else {
++ *h = vinfo->xres;
++ *w = vinfo->yres;
++ }
+ mode_okay = 1;
+ }
+ }
+@@ -332,6 +352,7 @@
+ unsigned int current_w;
+ unsigned int current_h;
+ const char *SDL_fbdev;
++ const char *SDL_rot_flag;
+
+ /* Initialize the library */
+ SDL_fbdev = getenv("SDL_FBDEV");
+@@ -344,6 +365,14 @@
+ return(-1);
+ }
+
++ SDL_rot_flag = getenv("SDL_FBROT");
++ if ( SDL_rot_flag == NULL ) {
++ rotation_flag = 0;
++ } else {
++ rotation_flag = atoi(SDL_rot_flag);
++ }
++
++
+ #ifndef DISABLE_THREADS
+ /* Create the hardware surface lock mutex */
+ hw_lock = SDL_CreateMutex();
+@@ -407,13 +436,33 @@
+ mapped_offset = (((long)finfo.smem_start) -
+ (((long)finfo.smem_start)&~(PAGE_SIZE-1)));
+ mapped_memlen = finfo.smem_len+mapped_offset;
+- mapped_mem = mmap(NULL, mapped_memlen,
+- PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
+- if ( mapped_mem == (char *)-1 ) {
+- SDL_SetError("Unable to memory map the video hardware");
+- mapped_mem = NULL;
+- FB_VideoQuit(this);
+- return(-1);
++ if (rotation_flag == 0) {
++ mapped_mem = mmap(NULL, mapped_memlen,
++ PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
++ if ( mapped_mem == (char *)-1 ) {
++ SDL_SetError("Unable to memory map the video hardware");
++ mapped_mem = NULL;
++ FB_VideoQuit(this);
++ return(-1);
++ }
++ } else {
++
++ console_fd_buf = (char *)malloc(640*480*2);
++
++ if (console_fd_buf == NULL){
++ SDL_SetError("Unable to memory for buffer");
++ return(-1);
++ }
++
++ mapped_mem_fb = mmap(NULL, mapped_memlen,
++ PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
++ if ( mapped_mem_fb == (char *)-1 ) {
++ SDL_SetError("Unable to memory map the video hardware");
++ mapped_mem_fb = NULL;
++ FB_VideoQuit(this);
++ return(-1);
++ }
++ mapped_mem = console_fd_buf;
+ }
+
+ /* Determine the current screen depth */
+@@ -555,6 +604,7 @@
+
+ /* Various screen update functions available */
+ static void FB_DirectUpdate(_THIS, int numrects, SDL_Rect *rects);
++static void FB_RotationUpdate(_THIS, int numrects, SDL_Rect *rects);
+ #ifdef VGA16_FBCON_SUPPORT
+ static void FB_VGA16Update(_THIS, int numrects, SDL_Rect *rects);
+ #endif
+@@ -725,7 +775,7 @@
+ Uint32 Bmask;
+ char *surfaces_mem;
+ int surfaces_len;
+-
++
+ /* Set the terminal into graphics mode */
+ if ( FB_EnterGraphicsMode(this) < 0 ) {
+ return(NULL);
+@@ -734,6 +784,8 @@
+ /* Restore the original palette */
+ FB_RestorePalette(this);
+
++ flags &= ~SDL_DOUBLEBUF;
++
+ /* Set the video mode and get the final screen format */
+ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
+ SDL_SetError("Couldn't get console screen info");
+@@ -748,13 +800,24 @@
+ vinfo.activate = FB_ACTIVATE_NOW;
+ vinfo.accel_flags = 0;
+ vinfo.bits_per_pixel = bpp;
+- vinfo.xres = width;
+- vinfo.xres_virtual = width;
+- vinfo.yres = height;
+- if ( flags & SDL_DOUBLEBUF ) {
+- vinfo.yres_virtual = height*2;
++ if ((rotation_flag == 0) || (rotation_flag == 2)) {
++ vinfo.xres = width;
++ vinfo.xres_virtual = width;
++ vinfo.yres = height;
++ if ( flags & SDL_DOUBLEBUF ) {
++ vinfo.yres_virtual = height*2;
++ } else {
++ vinfo.yres_virtual = height;
++ }
+ } else {
+- vinfo.yres_virtual = height;
++ vinfo.xres = height;
++ vinfo.xres_virtual = height;
++ vinfo.yres = width;
++ if ( flags & SDL_DOUBLEBUF ) {
++ vinfo.yres_virtual = width*2;
++ } else {
++ vinfo.yres_virtual = width;
++ }
+ }
+ vinfo.xoffset = 0;
+ vinfo.yoffset = 0;
+@@ -776,6 +839,15 @@
+ return(NULL);
+ }
+ }
++ vinfo.xres = width;
++ vinfo.xres_virtual = width;
++ vinfo.yres = height;
++ if ( flags & SDL_DOUBLEBUF ) {
++ vinfo.yres_virtual = height*2;
++ } else {
++ vinfo.yres_virtual = height;
++ }
++
+ } else {
+ int maxheight;
+
+@@ -821,7 +893,9 @@
+ SDL_SetError("Couldn't get console hardware info");
+ return(NULL);
+ }
+-
++#ifdef FBCON_DEBUG
++ print_finfo(&finfo);
++#endif
+ /* Save hardware palette, if needed */
+ FB_SavePalette(this, &finfo, &vinfo);
+
+@@ -829,7 +903,11 @@
+ current->flags = (SDL_FULLSCREEN|SDL_HWSURFACE);
+ current->w = vinfo.xres;
+ current->h = vinfo.yres;
+- current->pitch = finfo.line_length;
++ if ((rotation_flag == 0) || (rotation_flag == 2) ) {
++ current->pitch = finfo.line_length;
++ } else {
++ current->pitch = vinfo.xres*2;
++ }
+ current->pixels = mapped_mem+mapped_offset;
+
+ /* Set up the information for hardware surfaces */
+@@ -863,7 +941,7 @@
+ }
+
+ /* Set the update rectangle function */
+- this->UpdateRects = FB_DirectUpdate;
++ this->UpdateRects = FB_RotationUpdate;
+
+ /* We're done */
+ return(current);
+@@ -1123,6 +1201,89 @@
+ return;
+ }
+
++static void FB_RotationUpdate(_THIS, int numrects, SDL_Rect *rects)
++{
++ unsigned short *pDst;
++ unsigned short *pSrc;
++ unsigned int width;
++ unsigned int height;
++ unsigned int srcYAdd;
++ unsigned int dstXAdd;
++ unsigned int dstYSub;
++ unsigned int i;
++ unsigned int dstH;
++ unsigned int dstW;
++
++#ifdef FBCON_DEBUG
++ fprintf(stderr,"rotation_flag = %d \n",rotation_flag);
++#endif
++ switch (rotation_flag) {
++ case 0:
++ break;
++ case 1:
++ memcpy(mapped_mem_fb,mapped_mem,640*480*2);
++ break;
++ case 2:
++ memcpy(mapped_mem_fb,mapped_mem,640*480*2);
++ break;
++ case 3:
++ dstW=cache_vinfo.xres;
++ dstH=cache_vinfo.yres;
++#ifdef FBCON_DEBUG
++ fprintf(stderr,"dstH = %d : dstW = %d : rects->x = %d : rects->y = %d\n",dstH,dstW);
++ fprintf(stderr,"rects->x = %d : rects->y = %d : rects->w = %d : rects->h = %d\n",rects->x,rects->y,rects->w,rects->h);
++#endif
++ while (numrects) {
++ if (rects->w != dstW || rects->h != dstH) {
++ pSrc = mapped_mem + (rects->x + rects->y * dstW)*2;
++ pDst = mapped_mem_fb + (dstH-1+rects->x * dstH - rects->y)*2;
++
++ width = rects->w;
++ height = rects->h;
++
++ srcYAdd = dstW - rects->w;
++ dstXAdd = dstH;
++ dstYSub = (dstH * rects->w) + 1;
++
++ while (height--) {
++ i = width;
++ while (i--) {
++ *pDst = *pSrc ++;
++ pDst += dstXAdd;
++ }
++ pSrc += srcYAdd;
++ pDst -= dstYSub;
++ }
++
++ } else {
++ pDst=mapped_mem_fb+dstH*2-2;
++ pSrc=mapped_mem;
++ height=dstH;
++ width=dstW;
++ dstXAdd=height;
++ dstYSub=dstW*dstH+1;
++
++ while (height--) {
++ i = width;
++ while (i--) {
++ *pDst = *pSrc ++;
++ pDst += dstXAdd;
++ }
++ pDst -= dstYSub;
++ }
++ }
++ numrects--;
++ rects++;
++ }
++ break;
++ default:
++ break;
++ }
++
++
++
++}
++
+ #ifdef VGA16_FBCON_SUPPORT
+ /* Code adapted with thanks from the XFree86 VGA16 driver! :) */
+ #define writeGr(index, value) \
+diff -Naur SDL-1.2.9-orig/src/video/qtopia/SDL_QWin.cc SDL-1.2.9/src/video/qtopia/SDL_QWin.cc
+--- SDL-1.2.9-orig/src/video/qtopia/SDL_QWin.cc 2004-01-04 17:49:26.000000000 +0100
++++ SDL-1.2.9/src/video/qtopia/SDL_QWin.cc 2007-03-12 20:54:14.000000000 +0100
+@@ -1,3 +1,4 @@
++
+ /*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997-2004 Sam Lantinga
+@@ -27,15 +28,24 @@
+
+ #include "SDL_QWin.h"
+ #include <qapplication.h>
++#include <qpe/qpeapplication.h>
+ #include <qdirectpainter_qws.h>
+
++extern int fb_hwrot;
++extern int fb_direct;
++extern bool is_VGA_machine;
++static int mouse_button_mode=1;
++
+ screenRotationT screenRotation = SDL_QT_NO_ROTATION;
+
+ SDL_QWin::SDL_QWin(const QSize& size)
+ : QWidget(0, "SDL_main"), my_painter(0), my_image(0),
+ my_inhibit_resize(false), my_mouse_pos(-1,-1), my_flags(0),
+- my_has_fullscreen(false), my_locked(0)
++ my_has_fullscreen(false), my_locked(0),
++ rotation_(0), qteRotation_(0), keyRotation_(0), qteKeyRotation_(0),
++ isSLA300InputFix_(0)
+ {
++ for (int i = 0; i < 5; i++) curAxis_[i] = 0;
+ setBackgroundMode(NoBackground);
+ }
+
+@@ -84,6 +94,7 @@
+ }
+
+ void SDL_QWin::setMousePos(const QPoint &pos) {
++#if 0
+ if(my_image->width() == height()) {
+ if (screenRotation == SDL_QT_ROTATION_90)
+ my_mouse_pos = QPoint(height()-pos.y(), pos.x());
+@@ -92,6 +103,66 @@
+ } else {
+ my_mouse_pos = pos;
+ }
++#else
++ QPoint realPos;
++
++ if (is_VGA_machine) {
++ realPos = pos;
++ my_mouse_pos = realPos;
++ }else {
++ switch (qteRotation_) {
++ case 0:
++ realPos = pos;
++ break;
++ case 1:
++ realPos.setX(pos.y());
++ realPos.setY(fbSize_.height() - 1 - pos.x());
++ break;
++ case 2:
++ realPos.setX(fbSize_.width() - 1 - pos.x());
++ realPos.setY(fbSize_.height() - 1 - pos.y());
++ break;
++ case 3:
++ realPos.setX(fbSize_.width() - 1 - pos.y());
++ realPos.setY(pos.x());
++ break;
++ };
++
++ // fprintf(stderr, "setMousePos: realPos(%d, %d)\n", realPos.x(), realPos.y());
++
++ int borderWidth = (fbSize_.width() - my_image->width()) >> 1;
++ int borderHeight = (fbSize_.height() - my_image->height()) >> 1;
++ if ( rotation_ & 1 ){
++ borderWidth = (fbSize_.height() - my_image->width()) >> 1;
++ borderHeight = (fbSize_.width() - my_image->height()) >> 1;
++ }
++ realPos.setX(realPos.x() - borderWidth);
++ realPos.setY(realPos.y() - borderHeight);
++
++ fprintf(stderr, "setMousePos: realPos2(%d, %d)\n", realPos.x(), realPos.y());
++
++ switch (rotation_) {
++ case 0:
++ my_mouse_pos = realPos;
++ break;
++ case 1:
++ my_mouse_pos.setX(realPos.y());
++ my_mouse_pos.setY(my_image->height() - 1 - realPos.x());
++ break;
++ case 2:
++ my_mouse_pos.setX(my_image->width() - 1 - realPos.x());
++ my_mouse_pos.setY(my_image->height() - 1 - realPos.y());
++ break;
++ case 3:
++ my_mouse_pos.setX(realPos.y());//my_image->width() - 1 - realPos.y());
++ my_mouse_pos.setY(my_image->height() - realPos.x());
++ break;
++ }
++ }
++
++// fprintf(stderr, "setMousePos: mymousePos(%d, %d)\n", (short)my_mouse_pos.x(), (short)my_mouse_pos.y());
++
++#endif
+ }
+
+ void SDL_QWin::mouseMoveEvent(QMouseEvent *e) {
+@@ -113,269 +184,318 @@
+ void SDL_QWin::mousePressEvent(QMouseEvent *e) {
+ mouseMoveEvent(e);
+ Qt::ButtonState button = e->button();
+- SDL_PrivateMouseButton(SDL_PRESSED,
+- (button & Qt::LeftButton) ? 1 :
+- ((button & Qt::RightButton) ? 2 : 3),
++ SDL_PrivateMouseButton(SDL_PRESSED,mouse_button_mode,
+ my_mouse_pos.x(), my_mouse_pos.y());
+ }
+
+ void SDL_QWin::mouseReleaseEvent(QMouseEvent *e) {
+ setMousePos(e->pos());
+ Qt::ButtonState button = e->button();
+- SDL_PrivateMouseButton(SDL_RELEASED,
+- (button & Qt::LeftButton) ? 1 :
+- ((button & Qt::RightButton) ? 2 : 3),
++ SDL_PrivateMouseButton(SDL_RELEASED,mouse_button_mode,
+ my_mouse_pos.x(), my_mouse_pos.y());
+ my_mouse_pos = QPoint(-1, -1);
+ }
+
+-static inline void
+-gs_fastRotateBlit_3 ( unsigned short *fb,
+- unsigned short *bits,
+- const QRect& rect )
++#ifndef __i386__
++
++static void
++blitRotate3(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ const QRect& srcBlitRect);
++
++static void
++blitRotate0(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ const QRect& srcBlitRect)
+ {
+- // FIXME: this only works correctly for 240x320 displays
+- int startx, starty;
+- int width, height;
+-
+- startx = rect.left() >> 1;
+- starty = rect.top() >> 1;
+- width = ((rect.right() - rect.left()) >> 1) + 2;
+- height = ((rect.bottom() - rect.top()) >> 1) + 2;
+-
+- if((startx+width) > 120) {
+- width = 120 - startx; // avoid horizontal overflow
+- }
+- if((starty+height) > 160) {
+- height = 160 - starty; // avoid vertical overflow
+- }
+-
+- ulong *sp1, *sp2, *dp1, *dp2;
+- ulong stop, sbot, dtop, dbot;
+-
+- sp1 = (ulong*)bits + startx + starty*240;
+- sp2 = sp1 + 120;
+- dp1 = (ulong *)fb + (159 - starty) + startx*320;
+- dp2 = dp1 + 160;
+- int rowadd = (-320*width) - 1;
+- int rowadd2 = 240 - width;
+- // transfer in cells of 2x2 pixels in words
+- for (int y=0; y<height; y++) {
+- for (int x=0; x<width; x++) {
+- // read source pixels
+- stop = *sp1;
+- sbot = *sp2;
+- // rotate pixels
+- dtop = (sbot & 0xffff) + ((stop & 0xffff)<<16);
+- dbot = ((sbot & 0xffff0000)>>16) + (stop & 0xffff0000);
+- // write to framebuffer
+- *dp1 = dtop;
+- *dp2 = dbot;
+- // update source ptrs
+- sp1++; sp2++;
+- // update dest ptrs - 2 pix at a time
+- dp1 += 320;
+- dp2 += 320;
+- }
+- // adjust src ptrs - skip a row as we work in pairs
+- sp1 += rowadd2;
+- sp2 += rowadd2;
+- // adjust dest ptrs for rotation
+- dp1 += rowadd;
+- dp2 += rowadd;
++ srcBits += srcBlitRect.left() + srcBlitRect.top() * srcSize.width();
++ dstBits += ((dstSize.width() - srcSize.width()) >> 1)
++ + (((dstSize.height() - srcSize.height()) >> 1) * dstSize.width());
++ dstBits += srcBlitRect.left() + srcBlitRect.top() * dstSize.width();
++ int w = srcBlitRect.width() << 1;
++ int h = srcBlitRect.height();
++
++ while (h--) {
++ memcpy(dstBits, srcBits, w);
++ dstBits += dstSize.width();
++ srcBits += srcSize.width();
+ }
+ }
+
+-static inline void
+-gs_fastRotateBlit_1 ( unsigned short *fb,
+- unsigned short *bits,
+- const QRect& rect ) {
+- // FIXME: this only works correctly for 240x320 displays
+- int startx, starty;
+- int width, height;
+-
+- startx = rect.left() >> 1;
+- starty = rect.top() >> 1;
+- width = ((rect.right() - rect.left()) >> 1) + 2;
+- height = ((rect.bottom() - rect.top()) >> 1) + 2;
+-
+- if((startx+width) > 120) {
+- width = 120 - startx; // avoid horizontal overflow
+- }
+- if((starty+height) > 160) {
+- height = 160 - starty; // avoid vertical overflow
+- }
+-
+- ulong *sp1, *sp2, *dp1, *dp2;
+- ulong stop, sbot, dtop, dbot;
+- fb += 320*239; // Move "fb" to top left corner
+- sp1 = (ulong*)bits + startx + starty*240;
+- sp2 = sp1 + 120;
+- dp1 = (ulong*)fb - startx * 320 - starty;
+- dp2 = dp1 - 160;
+- int rowadd = (320*width) + 1;
+- int rowadd2 = 240 - width;
+- // transfer in cells of 2x2 pixels in words
+- for (int y=0; y<height; y++) {
+- for (int x=0; x<width; x++) {
+- // read
+- stop = *sp1;
+- sbot = *sp2;
+- // rotate
+- dtop = (stop & 0xffff) + ((sbot & 0xffff)<<16);
+- dbot = ((stop & 0xffff0000)>>16) + (sbot & 0xffff0000);
+- // write
+- *dp1 = dtop;
+- *dp2 = dbot;
+- // update source ptrs
+- sp1++; sp2++;
+- // update dest ptrs - 2 pix at a time
+- dp1 -= 320;
+- dp2 -= 320;
+- }
+- // adjust src ptrs - skip a row as we work in pairs
+- sp1 += rowadd2;
+- sp2 += rowadd2;
+- // adjust dest ptrs for rotation
+- dp1 += rowadd;
+- dp2 += rowadd;
+- }
++static void
++blitRotate1(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ const QRect& srcBlitRect)
++{
++// fprintf(stdout, "SDL_QT_ROTATION (1) is not implemented.\n");
++ blitRotate3(dstBits, dstSize, srcBits, srcSize, srcBlitRect);
+ }
+
+-// desktop, SL-A300 etc
+-bool SDL_QWin::repaintRotation0(const QRect& rect) {
+- if(my_image->width() == width()) {
+- uchar *fb = (uchar*)my_painter->frameBuffer();
+- uchar *buf = (uchar*)my_image->bits();
+- if(rect == my_image->rect()) {
+- memcpy(fb, buf, width()*height()*2);
+- } else {
+- int h = rect.height();
+- int wd = rect.width()<<1;
+- int fblineadd = my_painter->lineStep();
+- int buflineadd = my_image->bytesPerLine();
+- fb += (rect.left()<<1) + rect.top() * my_painter->lineStep();
+- buf += (rect.left()<<1) + rect.top() * my_image->bytesPerLine();
+- while(h--) {
+- memcpy(fb, buf, wd);
+- fb += fblineadd;
+- buf += buflineadd;
+- }
++static void
++blitRotate2(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ QRect srcBlitRect)
++{
++// if (srcBlitRect.left() & 1)
++// srcBlitRect.setLeft(srcBlitRect.left() - 1);
++// if (srcBlitRect.right() & 1)
++// srcBlitRect.setRight(srcBlitRect.right() - 1);
++
++ int dstBorderLeftRight = (dstSize.width() - srcSize.width()) >>1;
++ int dstBorderTopBottom = (dstSize.height() - srcSize.height()) >>1;
++ int dstStartOffsetX = dstSize.width() - dstBorderLeftRight - 2;
++ int dstStartOffsetY = dstSize.height() - dstBorderTopBottom - 1;
++ int left = srcBlitRect.left() & ~(int)1; // to be 32bit aligned
++ srcBits += left + srcBlitRect.top() * srcSize.width();
++ dstBits += dstStartOffsetY * dstSize.width() + dstStartOffsetX;
++ dstBits -= left;
++ dstBits -= srcBlitRect.top() * dstSize.width();
++
++ Uint32 *pSrc = (Uint32 *)srcBits;
++ Uint32 *pDst = (Uint32 *)dstBits;
++
++ int width = srcBlitRect.width(), width2 = srcBlitRect.width(), w;
++ if ( srcBlitRect.left() & 1 ){
++ width--; width2++;
++ }
++ if ( (srcBlitRect.left()+srcBlitRect.width()) & 1 ){
++ width--; width2++;
++ }
++ width >>= 1;
++ int height = srcBlitRect.height();
++ int srcYAdd = srcSize.width() - width2;
++ int dstYSub = dstSize.width() - width2;
++
++ while (height--) {
++ w = width;
++ if (srcBlitRect.left() & 1){
++ *((Uint16 *)pDst) = *(((Uint16 *)pSrc) + 1);
++ pDst--; pSrc++;
+ }
+- } else {
+- return false; // FIXME: Landscape
++ while (w--) {
++ *pDst-- = (*pSrc << 16) | (*pSrc >> 16);
++ ++pSrc;
++ }
++ if ((srcBlitRect.left()+srcBlitRect.width()) & 1){
++ *(((Uint16 *)pDst) + 1) = *((Uint16 *)pSrc);
++ pDst--; pSrc++;
++ }
++ pSrc += srcYAdd;
++ pDst -= dstYSub;
+ }
+-#ifdef __i386__
+- my_painter->fillRect( rect, QBrush( Qt::NoBrush ) );
+-#endif
+- return true;
+ }
+
+-
+-// Sharp Zaurus SL-5500 etc
+-bool SDL_QWin::repaintRotation3(const QRect& rect) {
+- if(my_image->width() == width()) {
+- ushort *fb = (ushort*)my_painter->frameBuffer();
+- ushort *buf = (ushort*)my_image->bits();
+- gs_fastRotateBlit_3(fb, buf, rect);
++#define BLIT_ROTATE_3_MOV32
++
++static void
++blitRotate3(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ const QRect& srcBlitRect)
++{
++ if (srcBlitRect.width() != dstSize.height() ||
++ srcBlitRect.height() != dstSize.width()) {
++ // partial update
++ const Uint16 *pSrc = srcBits +
++ (srcBlitRect.left() + srcBlitRect.top() * srcSize.width());
++
++ int dstBorderLeftRight = (dstSize.width() - srcSize.height()) >>1;
++ int dstBorderTopBottom = (dstSize.height() - srcSize.width()) >>1;
++ int dstStartOffsetX = dstSize.width() - dstBorderLeftRight - 1;
++ int dstStartOffsetY = dstBorderTopBottom;
++ Uint16 *pDst = dstBits +
++ (dstStartOffsetY * dstSize.width() + dstStartOffsetX);
++ pDst += srcBlitRect.left() * dstSize.width();
++ pDst -= srcBlitRect.top();
++
++ int width = srcBlitRect.width(), height = srcBlitRect.height(), w;
++ int srcYAdd = srcSize.width() - srcBlitRect.width();
++ int dstXAdd = dstSize.width();
++ int dstYSub = (dstSize.width() * srcBlitRect.width()) + 1;
++
++#if 0
++ fprintf(stderr, "---- Blit begin\n");
++ fprintf(stderr, "srcSize.width: %d srcSize.height:%d\n",
++ srcSize.width(), srcSize.height());
++ fprintf(stderr, "srcBlitRect.left:%d srcBlitRect.right:%d srcBlitRect.top:%d srcBlitRect.bottom:%d srcBlitRect.width:%d srcBlitRect.height:%d\n",
++ srcBlitRect.left(), srcBlitRect.right(), srcBlitRect.top(), srcBlitRect.bottom(), srcBlitRect.width(), srcBlitRect.height());
++
++ fprintf(stderr, "dstSize.width: %d dstSize.height:%d\n",
++ dstSize.width(), dstSize.height());
++ fprintf(stderr, "dstBorderLeftRight:%d dstBorderTopBottom:%d dstStartOffsetX:%d dstStartOffsetY:%d\n",
++ dstBorderLeftRight, dstBorderTopBottom, dstStartOffsetX, dstStartOffsetY);
++ fprintf(stderr, "srcYAdd:%d dstXAdd:%d dstYSub:%d\n", srcYAdd, dstXAdd, dstYSub);
++#endif
++
++ while (height--) {
++ w = width;
++ while (w--) {
++ *pDst = *pSrc ++;
++ pDst += dstXAdd;
++ }
++ pSrc += srcYAdd;
++ pDst -= dstYSub;
++ }
++ // fprintf(stderr, "---- Blit end\n");
+ } else {
+- // landscape mode
+- if (screenRotation == SDL_QT_ROTATION_90) {
+- uchar *fb = (uchar*)my_painter->frameBuffer();
+- uchar *buf = (uchar*)my_image->bits();
+- if(rect == my_image->rect()) {
+- memcpy(fb, buf, width()*height()*2);
+- } else {
+- int h = rect.height();
+- int wd = rect.width()<<1;
+- int fblineadd = my_painter->lineStep();
+- int buflineadd = my_image->bytesPerLine();
+- fb += (rect.left()<<1) + rect.top() * my_painter->lineStep();
+- buf += (rect.left()<<1) + rect.top() * my_image->bytesPerLine();
+- while(h--) {
+- memcpy(fb, buf, wd);
+- fb += fblineadd;
+- buf += buflineadd;
+- }
++ // full update
++#if !defined(BLIT_ROTATE_3_MOV32)
++ const Uint16 *src = srcBits;
++ Uint16 *dst = dstBits + (dstSize.width() - 1);
++ int w = srcBlitRect.width();
++ int h = srcBlitRect.height();
++ int i, dstSub = dstSize.width() * w + 1;
++ int dstAdd = dstSize.width();
++
++ while (h--) {
++ i = w;
++ while (i--) {
++ *dst = *src ++;
++ dst += dstAdd;
+ }
+- } else if (screenRotation == SDL_QT_ROTATION_270) {
+- int h = rect.height();
+- int wd = rect.width();
+- int fblineadd = my_painter->lineStep() - (rect.width() << 1);
+- int buflineadd = my_image->bytesPerLine() - (rect.width() << 1);
+- int w;
+-
+- uchar *fb = (uchar*)my_painter->frameBuffer();
+- uchar *buf = (uchar*)my_image->bits();
+-
+- fb += ((my_painter->width() - (rect.top() + rect.height())) *
+- my_painter->lineStep()) + ((my_painter->height() - ((rect.left() +
+- rect.width()))) << 1);
+-
+- buf += my_image->bytesPerLine() * (rect.top() + rect.height()) -
+- (((my_image->width() - (rect.left() + rect.width())) << 1) + 2);
+-
+- while(h--) {
+- w = wd;
+- while(w--) *((unsigned short*)fb)++ = *((unsigned short*)buf)--;
+- fb += fblineadd;
+- buf -= buflineadd;
++ dst -= dstSub;
++ }
++#else // BLIT_ROTATE_3_MOV32
++ Uint32 *src1 = (Uint32 *)(srcBits);
++ Uint32 *src2 = (Uint32 *)(srcBits + srcSize.width());
++ Uint32 *dst1 = (Uint32 *)(dstBits + (dstSize.width() - 2));
++ Uint32 *dst2 = (Uint32 *)(dstBits + (dstSize.width() + dstSize.width() - 2));
++ int w = srcBlitRect.width() >> 3;
++ int h = srcBlitRect.height() >> 1;
++ int i, dstSub = ((dstSize.width() * srcBlitRect.width()) >> 1) + 1;
++ int dstAdd = dstSize.width();
++
++ Uint32 a, b;
++ while (h--) {
++ i = w;
++ while (i--) {
++ a = *src1 ++;
++ b = *src2 ++;
++ *dst1 = (a << 16) | (b & 0xFFFF);
++ *dst2 = (a & 0xFFFF0000) | (b >> 16);
++ dst1 += dstAdd;
++ dst2 += dstAdd;
++
++ a = *src1 ++;
++ b = *src2 ++;
++ *dst1 = (a << 16) | (b & 0xFFFF);
++ *dst2 = (a & 0xFFFF0000) | (b >> 16);
++ dst1 += dstAdd;
++ dst2 += dstAdd;
++
++ a = *src1 ++;
++ b = *src2 ++;
++ *dst1 = (a << 16) | (b & 0xFFFF);
++ *dst2 = (a & 0xFFFF0000) | (b >> 16);
++ dst1 += dstAdd;
++ dst2 += dstAdd;
++
++ a = *src1 ++;
++ b = *src2 ++;
++ *dst1 = (a << 16) | (b & 0xFFFF);
++ *dst2 = (a & 0xFFFF0000) | (b >> 16);
++ dst1 += dstAdd;
++ dst2 += dstAdd;
+ }
++ src1 += srcSize.width() >> 1;
++ src2 += srcSize.width() >> 1;
++ dst1 -= dstSub;
++ dst2 -= dstSub;
+ }
++#endif // BLIT_ROTATE_3_MOV32
+ }
+- return true;
+ }
+
+-// ipaq 3800...
+-bool SDL_QWin::repaintRotation1(const QRect& rect) {
+- if(my_image->width() == width()) {
+- ushort *fb = (ushort*)my_painter->frameBuffer();
+- ushort *buf = (ushort*)my_image->bits();
+- gs_fastRotateBlit_1(fb, buf, rect);
+- } else {
+- return false; // FIXME: landscape mode
+- }
+- return true;
+-}
++#endif // __i386__
+
+ void SDL_QWin::repaintRect(const QRect& rect) {
+ if(!my_painter || !rect.width() || !rect.height()) {
+ return;
+ }
+-
+- if(QPixmap::defaultDepth() == 16) {
+- switch(my_painter->transformOrientation()) {
+- case 3:
+- if(repaintRotation3(rect)) { return; }
++#ifndef __i386__
++ if (QPixmap::defaultDepth() == 16 && my_painter->numRects() >= 0) {
++ Uint16 *fb = (Uint16*)my_painter->frameBuffer();
++ Uint16 *buf = (Uint16*)my_image->bits();
++ switch (rotation_) {
++ case 0:
++ blitRotate0(fb, fbSize_,
++ buf, QSize(my_image->width(), my_image->height()),
++ rect);
+ break;
+ case 1:
+- if(repaintRotation1(rect)) { return; }
++ blitRotate1(fb, fbSize_,
++ buf, QSize(my_image->width(), my_image->height()),
++ rect);
+ break;
+- case 0:
+- if(repaintRotation0(rect)) { return; }
++ case 2:
++ blitRotate2(fb, fbSize_,
++ buf, QSize(my_image->width(), my_image->height()),
++ rect);
++ break;
++ case 3:
++ blitRotate3(fb, fbSize_,
++ buf, QSize(my_image->width(), my_image->height()),
++ rect);
+ break;
+ }
+- }
+- my_painter->drawImage(rect.topLeft(), *my_image, rect);
++ } else {
++#endif // __i386__
++ QDirectPainter pp(this);
++ pp.drawImage(rect.topLeft(), *my_image, rect);
++// pp.end();
++#ifndef __i386__
++ }
++#endif // __i386__
+ }
+
+ // This paints the current buffer to the screen, when desired.
+ void SDL_QWin::paintEvent(QPaintEvent *ev) {
+- if(my_image) {
++ if(my_image && isVisible() && isActiveWindow()) {
++ // TODO: better handling
+ lockScreen(true);
+ repaintRect(ev->rect());
+ unlockScreen();
+ }
+ }
+
++int SDL_QWin::ApplyKeyRotation(int key)
++{
++ int c;
++ int sdlScancode[] = { SDLK_LEFT, SDLK_DOWN, SDLK_RIGHT, SDLK_UP };
++
++ switch (key) {
++ case Qt::Key_Left:
++ c = 0;
++ break;
++ case Qt::Key_Down:
++ c = 1;
++ break;
++ case Qt::Key_Right:
++ c = 2;
++ break;
++ case Qt::Key_Up:
++ c = 3;
++ break;
++ default:
++ return 0;
++ }
++
++// c = (c + qteKeyRotation_) & 3;
++// return sdlScancode[(c - keyRotation_) & 3];
++ return sdlScancode[(c + qteKeyRotation_ - keyRotation_) & 3];
++}
++
+ /* Function to translate a keyboard transition and queue the key event
+ * This should probably be a table although this method isn't exactly
+ * slow.
+ */
+ void SDL_QWin::QueueKey(QKeyEvent *e, int pressed)
+-{
++{
++ if (e->isAutoRepeat())
++ return;
++
+ SDL_keysym keysym;
+ int scancode = e->key();
++
+ /* Set the keysym information */
+ if(scancode >= 'A' && scancode <= 'Z') {
+ // Qt sends uppercase, SDL wants lowercase
+@@ -396,26 +516,12 @@
+ case Qt::Key_Home: scancode = SDLK_HOME; break;
+ case Qt::Key_End: scancode = SDLK_END; break;
+ // We want the control keys to rotate with the screen
+- case Qt::Key_Left:
+- if (screenRotation == SDL_QT_ROTATION_90) scancode = SDLK_UP;
+- else if (screenRotation == SDL_QT_ROTATION_270) scancode = SDLK_DOWN;
+- else scancode = SDLK_LEFT;
+- break;
+- case Qt::Key_Up:
+- if (screenRotation == SDL_QT_ROTATION_90) scancode = SDLK_RIGHT;
+- else if (screenRotation == SDL_QT_ROTATION_270) scancode = SDLK_LEFT;
+- else scancode = SDLK_UP;
+- break;
+- case Qt::Key_Right:
+- if (screenRotation == SDL_QT_ROTATION_90) scancode = SDLK_DOWN;
+- else if (screenRotation == SDL_QT_ROTATION_270) scancode = SDLK_UP;
+- else scancode = SDLK_RIGHT;
+- break;
++ case Qt::Key_Left:
++ case Qt::Key_Up:
++ case Qt::Key_Right:
+ case Qt::Key_Down:
+- if (screenRotation == SDL_QT_ROTATION_90) scancode = SDLK_LEFT;
+- else if (screenRotation == SDL_QT_ROTATION_270) scancode = SDLK_RIGHT;
+- else scancode = SDLK_DOWN;
+- break;
++ scancode = ApplyKeyRotation(scancode);
++ break;
+ case Qt::Key_Prior: scancode = SDLK_PAGEUP; break;
+ case Qt::Key_Next: scancode = SDLK_PAGEDOWN; break;
+ case Qt::Key_Shift: scancode = SDLK_LSHIFT; break;
+@@ -434,9 +540,18 @@
+ case Qt::Key_F7: scancode = SDLK_F7; break;
+ case Qt::Key_F8: scancode = SDLK_F8; break;
+ case Qt::Key_F9: scancode = SDLK_F9; break;
+- case Qt::Key_F10: scancode = SDLK_F10; break;
+- case Qt::Key_F11: scancode = SDLK_F11; break;
+- case Qt::Key_F12: scancode = SDLK_F12; break;
++ case Qt::Key_F10:
++ scancode = SDLK_F10;
++ mouse_button_mode=1;
++ break;
++ case Qt::Key_F11:
++ scancode = SDLK_F11;
++ mouse_button_mode=3;
++ break;
++ case Qt::Key_F12:
++ scancode = SDLK_F12;
++ mouse_button_mode=2;
++ break;
+ case Qt::Key_F13: scancode = SDLK_F13; break;
+ case Qt::Key_F14: scancode = SDLK_F14; break;
+ case Qt::Key_F15: scancode = SDLK_F15; break;
+@@ -452,13 +567,14 @@
+ // david@hedbor.org
+ scancode = SDLK_RETURN;
+ break;
++
+ default:
+ scancode = SDLK_UNKNOWN;
+ break;
+ }
+- keysym.sym = static_cast<SDLKey>(scancode);
++ keysym.sym = static_cast<SDLKey>(scancode);
+ } else {
+- keysym.sym = static_cast<SDLKey>(scancode);
++ keysym.sym = static_cast<SDLKey>(scancode);
+ }
+ keysym.scancode = scancode;
+ keysym.mod = KMOD_NONE;
+@@ -478,11 +594,82 @@
+ // pressed = 1;
+ // }
+
++ if (isSLA300InputFix_ &&
++ (keysym.sym == SDLK_SPACE || (keysym.sym >= 273 && keysym.sym <= 276))) {
++ if (keysym.sym >= 273) curAxis_[keysym.sym-273] = pressed;
++ else curAxis_[4] = pressed;
++ }
++
+ /* Queue the key event */
+ if ( pressed ) {
+- SDL_PrivateKeyboard(SDL_PRESSED, &keysym);
++ /* fprintf(stderr, "press %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_PRESSED, &keysym);
++ if (isSLA300InputFix_ &&
++ (keysym.sym >= 273 && keysym.sym <= 276)) {
++ if (keysym.sym == SDLK_UP) {
++ if (curAxis_[1]) {
++ keysym.sym = SDLK_DOWN;
++ keysym.scancode = Qt::Key_Down;
++ curAxis_[1] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ else if (keysym.sym == SDLK_DOWN) {
++ if (curAxis_[0]) {
++ keysym.sym = SDLK_UP;
++ keysym.scancode = Qt::Key_Up;
++ curAxis_[0] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ else if (keysym.sym == SDLK_RIGHT) {
++ if (curAxis_[3]) {
++ keysym.sym = SDLK_LEFT;
++ keysym.scancode = Qt::Key_Left;
++ curAxis_[3] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ else if (keysym.sym == SDLK_LEFT) {
++ if (curAxis_[2]) {
++ keysym.sym = SDLK_RIGHT;
++ keysym.scancode = Qt::Key_Right;
++ curAxis_[2] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ }
+ } else {
+- SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ /* fprintf(stderr, "release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++
++ if (isSLA300InputFix_ &&
++ (keysym.sym == SDLK_SPACE ||
++ (keysym.sym >= 273 && keysym.sym <= 276))) {
++ for (int i = 0; i < 4; i++) {
++ if (curAxis_[i]) {
++ int sym = i+273;
++ keysym.sym = static_cast<SDLKey>(sym);
++ if (sym == SDLK_UP) keysym.scancode = Qt::Key_Up;
++ else if (sym == SDLK_RIGHT) keysym.scancode = Qt::Key_Right;
++ else if (sym == SDLK_DOWN) keysym.scancode = Qt::Key_Down;
++ else if (sym == SDLK_LEFT) keysym.scancode = Qt::Key_Left;
++ curAxis_[i] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ if (curAxis_[4]) {
++ keysym.scancode = keysym.sym = SDLK_SPACE;
++ curAxis_[4] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
+ }
+ }
+
+@@ -524,7 +711,7 @@
+ my_locked--; // decrease lock refcount;
+ }
+ if(!my_locked && my_painter) {
+- my_painter->end();
++// my_painter->end();
+ delete my_painter;
+ my_painter = 0;
+ }
+diff -Naur SDL-1.2.9-orig/src/video/qtopia/SDL_QWin.h SDL-1.2.9/src/video/qtopia/SDL_QWin.h
+--- SDL-1.2.9-orig/src/video/qtopia/SDL_QWin.h 2004-01-04 17:49:26.000000000 +0100
++++ SDL-1.2.9/src/video/qtopia/SDL_QWin.h 2007-03-12 20:54:14.000000000 +0100
+@@ -1,3 +1,4 @@
++
+ /*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997-2004 Sam Lantinga
+@@ -52,6 +53,7 @@
+ class SDL_QWin : public QWidget
+ {
+ void QueueKey(QKeyEvent *e, int pressed);
++ int ApplyKeyRotation(int key);
+ public:
+ SDL_QWin(const QSize& size);
+ virtual ~SDL_QWin();
+@@ -71,7 +73,7 @@
+ y = my_offset.y();
+ }
+ QImage *image(void) { return my_image; }
+-
++
+ void setWFlags(WFlags flags) {
+ QWidget::setWFlags(flags);
+ my_flags = flags;
+@@ -83,6 +85,15 @@
+ bool lockScreen(bool force=false);
+ void unlockScreen();
+ void repaintRect(const QRect& rect);
++ void setScreenRotation(int sdlr, int qter) {
++ rotation_ = sdlr; qteRotation_ = qter;
++ }
++ void setKeyRotation(int sdlr, int qter) {
++ keyRotation_ = sdlr; qteKeyRotation_ = qter;
++ }
++ void setFBSize(QSize& s) { fbSize_ = s; }
++// void setSLC700InputFix(bool isEnable) { isSLC700InputFix_ = isEnable; }
++ void setSLA300InputFix(bool isEnable) { isSLA300InputFix_ = isEnable; }
+ protected:
+ /* Handle resizing of the window */
+ virtual void resizeEvent(QResizeEvent *e);
+@@ -95,10 +106,8 @@
+ void paintEvent(QPaintEvent *ev);
+ void keyPressEvent(QKeyEvent *e) { QueueKey(e, 1); }
+ void keyReleaseEvent(QKeyEvent *e) { QueueKey(e, 0); }
++
+ private:
+- bool repaintRotation0(const QRect& rect);
+- bool repaintRotation1(const QRect& rect);
+- bool repaintRotation3(const QRect& rect);
+ void enableFullscreen();
+ QDirectPainter *my_painter;
+ QImage *my_image;
+@@ -108,6 +117,12 @@
+ WFlags my_flags;
+ WFlags my_has_fullscreen;
+ unsigned int my_locked;
++ int rotation_, qteRotation_;
++ int keyRotation_, qteKeyRotation_;
++ QSize fbSize_;
++// bool isSLC700InputFix_;
++ bool isSLA300InputFix_;
++ int curAxis_[5]; // 0: up, 1: down, 2: right, 3: left, 4: center
+ };
+
+ #endif /* _SDL_QWin_h */
+diff -Naur SDL-1.2.9-orig/src/video/qtopia/SDL_sysmouse.cc SDL-1.2.9/src/video/qtopia/SDL_sysmouse.cc
+--- SDL-1.2.9-orig/src/video/qtopia/SDL_sysmouse.cc 2004-01-04 17:49:26.000000000 +0100
++++ SDL-1.2.9/src/video/qtopia/SDL_sysmouse.cc 2007-03-12 20:54:14.000000000 +0100
+@@ -60,6 +60,7 @@
+ void QT_WarpWMCursor(_THIS, Uint16 x, Uint16 y)
+ {
+ SDL_Win->setMousePos(QPoint(x, y));
++ SDL_PrivateMouseMotion( 0, 0, x, y );
+ }
+
+ }; /* Extern C */
+diff -Naur SDL-1.2.9-orig/src/video/qtopia/SDL_sysvideo.cc SDL-1.2.9/src/video/qtopia/SDL_sysvideo.cc
+--- SDL-1.2.9-orig/src/video/qtopia/SDL_sysvideo.cc 2004-01-04 17:49:26.000000000 +0100
++++ SDL-1.2.9/src/video/qtopia/SDL_sysvideo.cc 2007-03-12 20:54:14.000000000 +0100
+@@ -1,3 +1,4 @@
++
+ /*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997-2004 Sam Lantinga
+@@ -29,17 +30,32 @@
+
+ #include <stdlib.h>
+ #include <string.h>
++#include <stdarg.h>
++#include <fcntl.h>
++#include <sys/ioctl.h>
+
+ #include <stdio.h>
+ #include <unistd.h>
++#include <sys/types.h>
++#include <sys/wait.h>
++#include <linux/fb.h>
++#include <sys/mman.h>
++#include <asm/page.h>
+
+ #include <qapplication.h>
+ #include <qpe/qpeapplication.h>
++#include <qpe/qcopenvelope_qws.h>
++#include <qgfx_qws.h>
++#include <qwindowsystem_qws.h>
++#include <qwidget.h>
++#include <qwidgetlist.h>
++#include <qdirectpainter_qws.h>
+
+ #include "SDL.h"
+ #include "SDL_timer.h"
+
+ #include "SDL_QWin.h"
++#include "SDL_sysvideo.h"
+
+ extern "C" {
+
+@@ -51,14 +67,67 @@
+ #include "SDL_lowvideo.h"
+
+ //#define QTOPIA_DEBUG
++#define QTOPIA_LOG
+ #define QT_HIDDEN_SIZE 32 /* starting hidden window size */
+
++#ifdef QTOPIA_LOG
++ static FILE *st_logfp = NULL;
++#endif
++ static inline void LOG(char *fmt, ...)
++ {
++#ifdef QTOPIA_LOG
++ va_list ap;
++
++ va_start(ap, fmt);
++ vfprintf(st_logfp, fmt, ap);
++ if (st_logfp != stderr) {
++ fflush(st_logfp);
++ vfprintf(stderr, fmt, ap);
++ }
++ va_end(ap);
++#endif
++ }
++
++ typedef struct machine_spec {
++ const char *manif;
++ const char *name;
++ int qpe_server_rotation;
++ int init_screen_rot;
++ int init_key_rot;
++ } machine_spec_t;
++
++ typedef enum {
++ MACHINE_SHARP_SL5000D,
++ MACHINE_SHARP_SL5500,
++ MACHINE_SHARP_SLA300,
++ MACHINE_SHARP_SLB500,
++ MACHINE_SHARP_SLC700,
++ MACHINE_SHARP_SLC750,
++ MACHINE_SHARP_SLC760,
++ MACHINE_SHARP_SLC860,
++ MACHINE_SHARP_SL6000,
++ MACHINE_MAX
++ } machine_t;
++
++ static const machine_spec_t st_machine_spec[] = {
++ { "Sharp", "SL-5000D", 0 },
++ { "Sharp", "SL-5500", 0 },
++ { "Sharp", "SL-A300", 0 },
++ { "Sharp", "SL-B500", 0 },
++ { "Sharp", "SL-C700", 0 },
++ { "Sharp", "SL-C750", 0 },
++ { "Sharp", "SL-C760", 0 },
++ { "Sharp", "SL-C860", 0 },
++ { "Sharp", "SL-6000", 0 },
++ };
++
+ /* Name of the environment variable used to invert the screen rotation or not:
+ Possible values:
+- !=0 : Screen is 270° rotated
+- 0: Screen is 90° rotated*/
+-#define SDL_QT_ROTATION_ENV_NAME "SDL_QT_INVERT_ROTATION"
+-
++ !=0 : Screen is 270- rotated
++ 0: Screen is 90- rotated*/
++#define SDL_QT_ROTATION_ENV_NAME "SDL_QT_ROTATION"
++#define SDL_QT_INVERT_ROTATION_ENV_NAME "SDL_QT_INVERT_ROTATION"
++
+ /* Initialization/Query functions */
+ static int QT_VideoInit(_THIS, SDL_PixelFormat *vformat);
+ static SDL_Rect **QT_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags);
+@@ -78,6 +147,20 @@
+ static int QT_IconifyWindow(_THIS);
+ static SDL_GrabMode QT_GrabInput(_THIS, SDL_GrabMode mode);
+
++ static int console_fd;
++ struct fb_var_screeninfo saved_vinfo;
++ int fb_hwrot;
++ int fb_direct;
++ static int isKHloaded;
++ bool is_VGA_machine;
++
++#define W100FB_CONFIG 0x57415200 /* WAL\00 */
++#define W100INIT_ITEM 0
++#define W100INIT_ALL 1
++#define W100INIT_ITEM_WITH_VAL 2
++#define W100FB_CONFIG_EX 0x57415202 /* WAL\02 */
++
++
+ /* FB driver bootstrap functions */
+
+ static int QT_Available(void)
+@@ -222,13 +305,34 @@
+
+ int QT_VideoInit(_THIS, SDL_PixelFormat *vformat)
+ {
+- /* Initialize the QPE Application */
++ const char *SDL_fbdev;
++ struct fb_var_screeninfo vinfo;
++
++ /* Initialize the QPE Application */
+ /* Determine the screen depth */
+ vformat->BitsPerPixel = QPixmap::defaultDepth();
+
+ // For now we hardcode the current depth because anything else
+ // might as well be emulated by SDL rather than by Qtopia.
+-
++
++ //frame buffer device open.
++ SDL_fbdev = getenv("SDL_FBDEV");
++ if ( SDL_fbdev == NULL ) {
++ SDL_fbdev = "/dev/fb0";
++ }
++ console_fd = open(SDL_fbdev, O_RDWR, 0);
++ if ( console_fd < 0 ) {
++ SDL_SetError("Unable to open %s", SDL_fbdev);
++ return(-1);
++ }
++
++ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't get console pixel format");
++ QT_VideoQuit(_this);
++ return(-1);
++ }
++ saved_vinfo = vinfo;
++
+ QSize desktop_size = qApp->desktop()->size();
+ QT_AddMode(_this, ((vformat->BitsPerPixel+7)/8)-1,
+ desktop_size.width(), desktop_size.height());
+@@ -241,7 +345,24 @@
+ /* Fill in some window manager capabilities */
+ _this->info.wm_available = 0;
+
+- /* We're done! */
++#ifdef QTOPIA_LOG
++ st_logfp = fopen("/tmp/sdl-qt-debug", "w");
++ if (!st_logfp)
++ st_logfp = stderr;
++#endif
++
++ QT_GrabInput(_this, SDL_GRAB_ON);
++/*
++ {
++ QCopEnvelope e("QPE/KeyHelper", "repeater(int)");
++ e << 2;
++ }
++*/
++ isKHloaded=(fopen("/home/zaurus/Settings/keyhelper_SDL.xml","r") != NULL) ? 1 : 0;
++ if (isKHloaded) {
++ system("qcop QPE/KeyHelper \"reload(QString)\" keyhelper_SDL.xml"); //QcopEnvelope can't use.
++ LOG("keyhelper_SDL.xml loaded\n");
++ }
+ return(0);
+ }
+
+@@ -264,6 +385,7 @@
+
+ /* Various screen update functions available */
+ static void QT_NormalUpdate(_THIS, int numrects, SDL_Rect *rects);
++ static void QT_DirectUpdate(_THIS, int numrects, SDL_Rect *rects);
+
+
+ static int QT_SetFullScreen(_THIS, SDL_Surface *screen, int fullscreen)
+@@ -276,47 +398,428 @@
+ return -1;
+ }
+
++ static machine_t QT_GetMachine(_THIS)
++ {
++ FILE *fp;
++ machine_t machine = MACHINE_SHARP_SL5000D;
++ char buf[1024];
++
++
++ fp = fopen("/proc/cpuinfo", "rb");
++ if (fp) {
++ if (fread(buf, 1, sizeof(buf), fp) > 0) {
++ LOG("QT_GetMachine: /proc/cpuinfo is %s\n", buf);
++ if (strstr(buf, "SHARP Tosa") != NULL)
++ machine = MACHINE_SHARP_SL6000;
++ else if (strstr(buf, "Collie") != NULL)
++ machine = MACHINE_SHARP_SL5500;
++ else if (strstr(buf, "SHARP Poodle") != NULL)
++ machine = MACHINE_SHARP_SLB500;
++ else if (strstr(buf, "SHARP Corgi") !=NULL)
++ machine = MACHINE_SHARP_SLC700;
++ else if (strstr(buf, "SHARP Shepherd") !=NULL)
++ machine = MACHINE_SHARP_SLC750;
++ else if (strstr(buf, "SHARP Husky") !=NULL)
++ machine = MACHINE_SHARP_SLC760;
++ else if (strstr(buf, "SHARP Boxer") != NULL)
++ machine = MACHINE_SHARP_SLC860;
++ }
++ fclose(fp);
++ } else {
++ LOG("QT_GetMachine: Couldn't read /proc/deviceinfo/product.\n");
++ LOG(" Now set machine variable to default (SL-5000D)\n");
++ }
++
++ LOG(" detected machine is '%s %s'\n",
++ st_machine_spec[machine].manif, st_machine_spec[machine].name);
++ return machine;
++ }
++
++ static void QT_GetQteServerSpec(_THIS, int *rotation, bool *isQvga)
++ {
++ const char *user;
++ char buf[FILENAME_MAX];
++ FILE *fp;
++ int rot = 0, is_qvga = 0;
++
++ user = getenv("USER");
++ snprintf(buf, sizeof(buf), "/tmp/qtembedded-%s/QtEmbedded-0.spec",
++ user ? user : "root");
++ LOG("QT_GetRotation: Read spec from '%s'\n", buf);
++
++ fp = fopen(buf, "rb");
++ if (fp) {
++ int size;
++ if ((size = fread(buf, 1, sizeof(buf) - 1, fp)) > 0) {
++ buf[size] = '\0';
++ LOG(" spec is '%s'\n", buf);
++ // get rotation value
++ if (strstr(buf, "Rot")) {
++ rot = atoi(strstr(buf, "Rot") + 3);
++ rot /= 90;
++ if (rot < 0 || rot > 3) {
++ rot = 0;
++ }
++ } else
++ rot = 0;
++
++ // get qvga mode in SL-C700
++ if (strstr(buf, "Qvga"))
++ is_qvga = 1;
++ }
++ fclose(fp);
++ }
++
++ LOG(" Rot=%d, Qvga=%d\n", rot, is_qvga);
++
++ if (rotation)
++ *rotation = rot;
++ if (isQvga)
++ *isQvga = is_qvga;
++ }
++
+ /* FIXME: check return values and cleanup here */
+ SDL_Surface *QT_SetVideoMode(_THIS, SDL_Surface *current,
+ int width, int height, int bpp, Uint32 flags)
+ {
+-
+ QImage *qimage;
+- QSize desktop_size = qApp->desktop()->size();
++ QSize qteSize = qApp->desktop()->size();
++ QSize fbSize;
++ QSize userSize;
++ int fb_xres;
++ int fb_yres;
++ struct fb_var_screeninfo vinfo;
++ struct fb_fix_screeninfo finfo;
++ int tmp_ioctl_data;
++ char fb_size_fix = ' ';
++ bool isW100patch_kernel = false;
++ int numFb_Size;
++
++ int mapped_memlen;
++ int mapped_offset;
++ void *mapped_mem;
++ int fb_offset;
++
++
++ machine_t machine = QT_GetMachine(_this);
++ machine_spec_t machineSpec = st_machine_spec[machine];
++ int qteRotation, userRotation, sdlRotation;
++ int qteKeyRotation, sdlKeyRotation;
++ bool isQteQvga;
++
++ if (machine == MACHINE_SHARP_SLC700 ||
++ machine == MACHINE_SHARP_SLC750 ||
++ machine == MACHINE_SHARP_SLC760 ||
++ machine == MACHINE_SHARP_SLC860 || // ¾Ü¤·¤¤¤³¤È¤ï¤«¤é¤ó¤±¤É¤È¤ê¤¢¤¨¤º
++ machine == MACHINE_SHARP_SL6000 ) { // ¾Ü¤·¤¤¤³¤È¤ï¤«¤é¤ó¤±¤É¤È¤ê¤¢¤¨¤º
++ is_VGA_machine = true;
++ }else {
++ is_VGA_machine = false;
++ }
++
++ // qte ¤Ç¤Î²óž³ÑÅÙ¤ò¼èÆÀ
++ QT_GetQteServerSpec(_this, &qteRotation, &isQteQvga);
++
++ // SL-C700 ¤Î¥¹¥¿¥¤¥ë
++ bool isInputStyle = false;
++ if (is_VGA_machine) {
++ int status = system("/home/QtPalmtop/bin/chkhinge");
++ if (WEXITSTATUS(status) != 2)
++ isInputStyle = true;
++ LOG("QT_SetVideoMode: SL-C700 Style is %s\n",
++ isInputStyle ? "Input style" : "View style");
++ }
+
+
+- current->flags = 0; //SDL_FULLSCREEN; // We always run fullscreen.
++ // specity screen setting
++ if (is_VGA_machine) {
++
++ // w100 rotation pached kernel check
++ isW100patch_kernel = (fopen("/proc/driver/w100/rotation","r") != NULL) ? true : false;
++ LOG("Your Kernel is %s\n",isW100patch_kernel ? "Special Kernel" : "Normal Kernel");
++
++ const char *envFb_Size = getenv("SDL_FB_SIZE");
++ if (envFb_Size !=NULL) {
++ numFb_Size=sscanf(envFb_Size,"%dx%d%c",&fb_xres,&fb_yres,&fb_size_fix);
++ } else {
++ numFb_Size=0;
++ }
+
+- if(width <= desktop_size.width()
+- && height <= desktop_size.height()) {
+- current->w = desktop_size.width();
+- current->h = desktop_size.height();
+- } else if(width <= desktop_size.height() && height <= desktop_size.width()) {
+- // Landscape mode
+- char * envString = getenv(SDL_QT_ROTATION_ENV_NAME);
+- int envValue = envString ? atoi(envString) : 0;
+- screenRotation = envValue ? SDL_QT_ROTATION_270 : SDL_QT_ROTATION_90;
+- current->h = desktop_size.width();
+- current->w = desktop_size.height();
++ if (numFb_Size >=2) {
++
++ // specity screen mode
++ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't get console pixel format");
++ QT_VideoQuit(_this);
++ return(NULL);
++ }
++
++ vinfo.xres = fb_xres;
++ vinfo.xres_virtual = fb_xres;
++ vinfo.yres = fb_yres;
++ vinfo.yres_virtual = fb_yres;
++
++ if (fb_size_fix == '@') {
++ width = fb_xres;
++ height = fb_yres;
++ }
++
++ if ( ioctl(console_fd, FBIOPUT_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't set console screen info");
++ return(NULL);
++ }
++
++
++ if (isW100patch_kernel) {
++ qteSize.setWidth(vinfo.xres);
++ qteSize.setHeight(vinfo.yres);
++ qteRotation=0;
++ }else if(vinfo.xres == 320){
++ qteSize.setWidth(vinfo.xres);
++ qteSize.setHeight(vinfo.yres);
++ qteRotation=2;
++ }else {
++ qteSize.setWidth(vinfo.yres);
++ qteSize.setHeight(vinfo.xres);
++ qteRotation=3;
++ }
++
++ if (isW100patch_kernel && (vinfo.xres == 320) && (vinfo.yres == 240)) {
++ tmp_ioctl_data=121;
++ ioctl(console_fd, W100FB_CONFIG_EX, &tmp_ioctl_data);
++ fb_hwrot=1;
++ }
++
++ LOG("FBVideoMode: %dx%d%c\n", vinfo.xres, vinfo.yres,fb_size_fix );
++
++ }else {
++
++ // auto screen mode
++ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't get console pixel format");
++ QT_VideoQuit(_this);
++ return(NULL);
++ }
++
++ if (isW100patch_kernel && (isInputStyle == false) && (vinfo.xres == 240) && (vinfo.yres == 320)) {
++ vinfo.xres = 240;
++ vinfo.xres_virtual = 240;
++ vinfo.yres = 320;
++ vinfo.yres_virtual = 320;
++ qteRotation=0;
++ }else if ((width <= 320) && (height <= 240)) {
++ vinfo.xres = 320;
++ vinfo.xres_virtual = 320;
++ vinfo.yres = 240;
++ vinfo.yres_virtual = 240;
++ }else if (isW100patch_kernel && (isInputStyle == true)){
++ vinfo.xres = 640;
++ vinfo.xres_virtual = 640;
++ vinfo.yres = 480;
++ vinfo.yres_virtual = 480;
++ qteRotation=0;
++ }else {
++ vinfo.xres = 480;
++ vinfo.xres_virtual = 480;
++ vinfo.yres = 640;
++ vinfo.yres_virtual = 640;
++ }
++
++ if ( ioctl(console_fd, FBIOPUT_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't set console screen info");
++ return(NULL);
++ }
++
++ if (isW100patch_kernel) {
++ qteSize.setWidth(vinfo.xres);
++ qteSize.setHeight(vinfo.yres);
++ qteRotation=0;
++ fb_direct=1;
++ }else if(vinfo.xres == 320){
++ qteSize.setWidth(vinfo.xres);
++ qteSize.setHeight(vinfo.yres);
++ qteRotation=2;
++ }else {
++ qteSize.setWidth(vinfo.yres);
++ qteSize.setHeight(vinfo.xres);
++ qteRotation=3;
++ }
++
++ if (isW100patch_kernel && (vinfo.xres == 320) && (vinfo.yres == 240)) {
++ tmp_ioctl_data=121;
++ ioctl(console_fd, W100FB_CONFIG_EX, &tmp_ioctl_data);
++ fb_hwrot=1;
++ qteRotation=0;
++ }
++
++ LOG("FBVideoMode: %dx%d%c\n", vinfo.xres, vinfo.yres,fb_size_fix );
++ }
++ }
++
++ // direct paint setting
++ const char *envFb_Direct = getenv("SDL_FB_DIRECT");
++ if (envFb_Direct !=NULL)
++ fb_direct = envFb_Direct ? atoi(envFb_Direct) : -1;
++
++ if (fb_direct == 1){
++ if ( ioctl(console_fd, FBIOGET_FSCREENINFO, &finfo) < 0 ) {
++ SDL_SetError("Couldn't get console hardware info");
++ QT_VideoQuit(_this);
++ return(NULL);
++ }
++ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't get console pixel format");
++ QT_VideoQuit(_this);
++ return(NULL);
++ }
++ LOG("Direct paint mode\n");
++ }
++
++ // hack for SL-5500
++ if (machine == MACHINE_SHARP_SL5500)
++ qteRotation = 3;
++
++ // SL-B500 Íѥϥå¯(¤È¤ê¤¢¤¨¤º¡¢¤Í)
++ if (machine == MACHINE_SHARP_SLB500)
++ qteRotation = 3;
++
++ // À¸¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤Î¥µ¥¤¥º¤òÆÀ¤ë
++ if (qteRotation & 1) {
++ fbSize.setWidth(qteSize.height());
++ fbSize.setHeight(qteSize.width());
++ } else {
++ fbSize = qteSize;
++ }
++
++ //
++ const char *envRotStr = getenv(SDL_QT_ROTATION_ENV_NAME);
++ userRotation = envRotStr ? atoi(envRotStr) : -1;
++ if ((userRotation >= 0 ? userRotation : qteRotation) & 1) {
++ userSize.setWidth(fbSize.height());
++ userSize.setHeight(fbSize.width());
++ } else {
++ userSize = fbSize;
++ }
++
++ if (width <= userSize.width() && height <= userSize.height()) {
++ // ´Ä¶­ÊÑ¿ô¤Ç²óž³ÑÅÙ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ì¤Ð¡¢¤½¤ì¤òºÇÍ¥À褹¤ë
++ if (userRotation >= 0)
++ sdlRotation = userRotation;
++ else {
++ // ¤Ç¡¢¤½¤Î»ØÄ̵꤬¤¤¤Î¤Ç¤¢¤ì¤Ð qte ¤Î²óž³ÑÅ٤˹ç¤ï¤»¤ë¤À¤±
++ // ¤Ê¤ó¤À¤±¤É¡¢SL-C700 ¤Ç¤Ï¤Á¤ç¤¤Ê£»¨¡£
++ if (is_VGA_machine && (fbSize.width() == 320) && (fbSize.height() == 240)) {
++ if (isInputStyle)
++ sdlRotation = 2;
++ else
++ sdlRotation = qteRotation;
++ } else {
++ sdlRotation = qteRotation;
++ }
++ }
++ } else if (width <= fbSize.width() && height <= fbSize.height()) {
++ sdlRotation = 0;
++ if (is_VGA_machine && (fbSize.width() == 320) && (fbSize.height() == 240) && isInputStyle)
++ sdlRotation = 2;
++ } else if (width <= fbSize.height() && height <= fbSize.width()) {
++ sdlRotation = 1;
+ } else {
+ SDL_SetError("Unsupported resolution, %dx%d\n", width, height);
++ return NULL;
+ }
++
++ if (fb_hwrot == 1)
++ sdlRotation = 0;
++
++ if (getenv(SDL_QT_INVERT_ROTATION_ENV_NAME) != NULL) {
++ sdlRotation = (sdlRotation + 2) & 3;
++ }
++
++ LOG("QT_SetVideoMode: argSize=%dx%d\n", width, height);
++ LOG("QT_SetVideoMode: qteSize=%dx%d\n",
++ qteSize.width(), qteSize.height());
++ LOG("QT_SetVideoMode: fbSize=%dx%d\n",
++ fbSize.width(), fbSize.height());
++ LOG("QT_SetVideoMode: qteRotation=%d\n", qteRotation);
++ LOG("QT_SetVideoMode: userRotation=%d\n", userRotation);
++ LOG("QT_SetVideoMode: sdlRotation=%d\n", sdlRotation);
++
++ current->flags = 0;//SDL_FULLSCREEN; // We always run fullscreen.
++ current->w = width;
++ current->h = height;
++ SDL_Win->setScreenRotation(sdlRotation, qteRotation);
++ SDL_Win->setFBSize(fbSize);
++
++ if (machine == MACHINE_SHARP_SLA300)
++ SDL_Win->setSLA300InputFix(true);
++
++ // keyboard rotation
++ qteKeyRotation = qteRotation;
++// fprintf(stderr, "%d\n", (machine == MACHINE_SHARP_SLC700));
++// fprintf(stderr, "%d\n", isQteQvga);
++ if (isQteQvga && is_VGA_machine)
++ qteKeyRotation = 3;
++ else if (machine == MACHINE_SHARP_SLB500)
++ qteKeyRotation = 3;
++
++ if (isQteQvga && fb_hwrot == 1)
++ qteKeyRotation = 1;
++
++ sdlKeyRotation = sdlRotation;
++
++ SDL_Win->setKeyRotation(sdlKeyRotation, qteKeyRotation);
++
++ LOG("QT_SetVideoMode: qteKeyRotation=%d\n", qteKeyRotation);
++ LOG("QT_SetVideoMode: sdlKeyRotation=%d\n", sdlKeyRotation);
++
+ if ( flags & SDL_OPENGL ) {
+ SDL_SetError("OpenGL not supported");
+ return(NULL);
+- }
++ }
+ /* Create the QImage framebuffer */
+- qimage = new QImage(current->w, current->h, bpp);
+- if (qimage->isNull()) {
+- SDL_SetError("Couldn't create screen bitmap");
+- delete qimage;
+- return(NULL);
++
++ // frame buffer memory mapping
++ if (fb_direct == 1) {
++ current->pitch = finfo.line_length;
++ current->flags = (SDL_FULLSCREEN|SDL_HWSURFACE);
++ mapped_offset = (((long)finfo.smem_start) -
++ (((long)finfo.smem_start)&~(PAGE_SIZE-1)));
++ mapped_memlen = finfo.smem_len+mapped_offset;
++ if(console_fd >0 ) {
++ mapped_mem = mmap(NULL, mapped_memlen,PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
++ fb_offset=(vinfo.xres-width)+(vinfo.yres-height)*vinfo.xres;
++ current->pixels = (void *)((int )mapped_mem+fb_offset);
++ _this->UpdateRects = QT_DirectUpdate;
++ } else {
++ qimage = new QImage(current->w, current->h, bpp);
++ if (qimage->isNull()) {
++ SDL_SetError("Couldn't create screen bitmap");
++ delete qimage;
++ return(NULL);
++ }
++ current->pixels = (void *)qimage->bits();
++ _this->UpdateRects = QT_NormalUpdate;
++ SDL_Win->setImage(qimage);
++// SDL_Win->setFullscreen(true); //comment to non update taskbar
++ }
++ } else {
++ qimage = new QImage(current->w, current->h, bpp);
++ if (qimage->isNull()) {
++ SDL_SetError("Couldn't create screen bitmap");
++ delete qimage;
++ return(NULL);
++ }
++ current->pitch = qimage->bytesPerLine();
++ current->pixels = (void *)qimage->bits();
++ _this->UpdateRects = QT_NormalUpdate;
++ SDL_Win->setImage(qimage);
++// SDL_Win->setFullscreen(true); //comment to non update taskbar
++
+ }
+- current->pitch = qimage->bytesPerLine();
+- current->pixels = (void *)qimage->bits();
+- SDL_Win->setImage(qimage);
+- _this->UpdateRects = QT_NormalUpdate;
+- SDL_Win->setFullscreen(true);
++
++
++ // fprintf(stderr,"QT_SetVideoMode() qImage:%dx%d %d\n",
++ // qimage->width(), qimage->height(), qimage->bytesPerLine());
+ /* We're done */
+ return(current);
+ }
+@@ -361,13 +864,19 @@
+ {
+ if(SDL_Win->lockScreen()) {
+ for(int i=0; i<numrects; ++i ) {
+- QRect rect(rects[i].x, rects[i].y,
+- rects[i].w, rects[i].h);
+- SDL_Win->repaintRect(rect);
++ QRect rect(rects[i].x, rects[i].y,
++ rects[i].w, rects[i].h);
++ SDL_Win->repaintRect(rect);
+ }
+ SDL_Win->unlockScreen();
+ }
+ }
++
++ static void QT_DirectUpdate(_THIS, int numrects, SDL_Rect *rects)
++ {
++
++ }
++
+ /* Is the system palette settable? */
+ int QT_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors)
+ {
+@@ -383,10 +892,36 @@
+ // -- David Hedbor
+ // delete SDL_Win;
+ // SDL_Win = 0;
++
++ if ( console_fd > 0 ) {
++ /* Restore the original video mode and palette */
++ if (fb_hwrot == 1) {
++ int tmp_ioctl_data=120;
++ ioctl(console_fd, W100FB_CONFIG_EX, &tmp_ioctl_data);
++ }
++
++ ioctl(console_fd, FBIOPUT_VSCREENINFO, &saved_vinfo);
++
++ /* We're all done with the framebuffer */
++ close(console_fd);
++ console_fd = -1;
++ }
++
+ _this->screen->pixels = NULL;
+ QT_GrabInput(_this, SDL_GRAB_OFF);
++/*
++ {
++ QCopEnvelope e("QPE/KeyHelper", "repeater(int)");
++ e << 1;
++ }
++*/
++ if (isKHloaded)
++ system("qcop QPE/KeyHelper \"reload()\""); //QcopEnvelope can't use.
++
+ }
+
++
++
+ static int QT_IconifyWindow(_THIS) {
+ SDL_Win->hide();
+
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/fixlibs-1.2.9.patch b/packages/libsdl/libsdl-qpe-1.2.9/fixlibs-1.2.9.patch
new file mode 100644
index 0000000000..ebc6ec7769
--- /dev/null
+++ b/packages/libsdl/libsdl-qpe-1.2.9/fixlibs-1.2.9.patch
@@ -0,0 +1,27 @@
+diff -Naur SDL-1.2.9-orig/configure.in SDL-1.2.9/configure.in
+--- SDL-1.2.9-orig/configure.in 2007-03-12 20:56:23.000000000 +0100
++++ SDL-1.2.9/configure.in 2007-03-12 20:59:28.000000000 +0100
+@@ -1593,8 +1593,8 @@
+ AC_MSG_RESULT($video_qtopia)
+ if test x$video_qtopia = xyes; then
+ CFLAGS="$CFLAGS -DENABLE_QTOPIA -DQT_QWS_EBX -DQT_QWS_CUSTOM -DQWS -I${QPEDIR}/include -I${QTDIR}/include/ -DNO_DEBUG -fno-rtti -fno-exceptions"
+- SDL_LIBS="$SDL_LIBS -L${QPEDIR}/lib -L${QTDIR}/lib/ -lqpe -lqte"
+- SDL_CFLAGS="$SDL_CFLAGS -DQWS"
++ SDL_LIBS="$SDL_LIBS -Wl,-rpath-link -Wl,${QPEDIR}/lib -Wl,-rpath-link -Wl,${QTDIR}/lib"
++ SYSTEM_LIBS="$SYSTEM_LIBS -L${QPEDIR}/lib -L${QTDIR}/lib/ -lqpe -lqte-mt"
+ VIDEO_SUBDIRS="$VIDEO_SUBDIRS qtopia"
+ VIDEO_DRIVERS="$VIDEO_DRIVERS qtopia/libvideo_qtopia.la"
+ else
+@@ -1908,12 +1908,6 @@
+ CheckAltivec
+ CheckLinuxVersion
+ CheckRPATH
+-
+- # Set up files for the main() stub
+- if test "x$video_qtopia" = "xyes"; then
+- SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main"
+-
+- fi
+ # Set up files for the audio library
+ # We use the OSS and ALSA API's, not the Sun audio API
+ #if test x$enable_audio = xyes; then
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/ipaq-1.2.9.patch b/packages/libsdl/libsdl-qpe-1.2.9/ipaq-1.2.9.patch
new file mode 100644
index 0000000000..0ad182bae6
--- /dev/null
+++ b/packages/libsdl/libsdl-qpe-1.2.9/ipaq-1.2.9.patch
@@ -0,0 +1,140 @@
+diff -Naur SDL-1.2.9-orig/src/video/qtopia/Makefile.am SDL-1.2.9/src/video/qtopia/Makefile.am
+--- SDL-1.2.9-orig/src/video/qtopia/Makefile.am 2007-03-12 20:57:23.000000000 +0100
++++ SDL-1.2.9/src/video/qtopia/Makefile.am 2007-03-12 20:58:02.000000000 +0100
+@@ -22,4 +22,4 @@
+ # overwrite USER variables
+ CXXLD = $(CC)
+ CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+- $(AM_LDFLAGS) $(LDFLAGS) -o $@
++ $(AM_LDFLAGS) $(LDFLAGS) -lopiecore2 -o $@
+diff -Naur SDL-1.2.9-orig/src/video/qtopia/SDL_QWin.cc SDL-1.2.9/src/video/qtopia/SDL_QWin.cc
+--- SDL-1.2.9-orig/src/video/qtopia/SDL_QWin.cc 2007-03-12 20:57:00.000000000 +0100
++++ SDL-1.2.9/src/video/qtopia/SDL_QWin.cc 2007-03-12 20:58:02.000000000 +0100
+@@ -29,8 +29,11 @@
+ #include "SDL_QWin.h"
+ #include <qapplication.h>
+ #include <qpe/qpeapplication.h>
++#include <opie2/odevice.h>
+ #include <qdirectpainter_qws.h>
+
++using namespace Opie::Core;
++
+ extern int fb_hwrot;
+ extern int fb_direct;
+ extern bool is_VGA_machine;
+@@ -545,18 +548,32 @@
+ case Qt::Key_F7: scancode = SDLK_F7; break;
+ case Qt::Key_F8: scancode = SDLK_F8; break;
+ case Qt::Key_F9:
+- scancode = SDLK_F9;
+- mouse_button_mode=1;
++ if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
++ scancode = SDLK_y; }
++ else {
++ scancode = SDLK_F9;
++ mouse_button_mode=1; }
+ break;
+ case Qt::Key_F10:
+- scancode = SDLK_F10;
+- mouse_button_mode=2;
++ if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
++ scancode = SDLK_LALT; }
++ else {
++ scancode = SDLK_F10;
++ mouse_button_mode=2; }
+ break;
+ case Qt::Key_F11: scancode = SDLK_F11; break;
+- case Qt::Key_F12: scancode = SDLK_F12; break;
++ case Qt::Key_F12:
++ if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
++ scancode = SDLK_RETURN; }
++ else {
++ scancode = SDLK_F12; }
++ break;
+ case Qt::Key_F13:
+- scancode = SDLK_F13;
+- mouse_button_mode=3;
++ if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
++ scancode = SDLK_ESCAPE; }
++ else {
++ scancode = SDLK_F13;
++ mouse_button_mode=3; }
+ break;
+ case Qt::Key_F14: scancode = SDLK_F14; break;
+ case Qt::Key_F15: scancode = SDLK_F15; break;
+@@ -573,6 +590,9 @@
+ scancode = SDLK_RETURN;
+ break;
+
++ // To use record button on ipaq
++ case Qt::Key_F24: scancode = SDLK_LSHIFT; break;
++
+ default:
+ scancode = SDLK_UNKNOWN;
+ break;
+diff -Naur SDL-1.2.9-orig/src/video/qtopia/SDL_sysvideo.cc SDL-1.2.9/src/video/qtopia/SDL_sysvideo.cc
+--- SDL-1.2.9-orig/src/video/qtopia/SDL_sysvideo.cc 2007-03-12 20:55:07.000000000 +0100
++++ SDL-1.2.9/src/video/qtopia/SDL_sysvideo.cc 2007-03-12 20:58:02.000000000 +0100
+@@ -45,6 +45,7 @@
+ #include <qapplication.h>
+ #include <qpe/qpeapplication.h>
+ #include <qpe/qcopenvelope_qws.h>
++#include <opie2/odevice.h>
+ #include <qgfx_qws.h>
+ #include <qwindowsystem_qws.h>
+ #include <qwidget.h>
+@@ -66,6 +67,8 @@
+ #include "SDL_syswm_c.h"
+ #include "SDL_lowvideo.h"
+
++using namespace Opie::Core;
++
+ //#define QTOPIA_DEBUG
+ #define QTOPIA_LOG
+ #define QT_HIDDEN_SIZE 32 /* starting hidden window size */
+@@ -106,6 +109,7 @@
+ MACHINE_SHARP_SLC760,
+ MACHINE_SHARP_SLC860,
+ MACHINE_SHARP_SL6000,
++ MACHINE_IPAQ,
+ MACHINE_MAX
+ } machine_t;
+
+@@ -119,6 +123,7 @@
+ { "Sharp", "SL-C760", 0 },
+ { "Sharp", "SL-C860", 0 },
+ { "Sharp", "SL-6000", 0 },
++ { "HP", "HP IPAQ", 0 },
+ };
+
+ /* Name of the environment variable used to invert the screen rotation or not:
+@@ -423,6 +428,13 @@
+ machine = MACHINE_SHARP_SLC760;
+ else if (strstr(buf, "SHARP Boxer") != NULL)
+ machine = MACHINE_SHARP_SLC860;
++ else if ( ODevice::inst ( )-> series ( ) == Model_iPAQ )
++ machine = MACHINE_IPAQ;
++ else
++ {
++ machine = MACHINE_SHARP_SL5000D;
++ LOG("Can't detect machine defaulting to SL5000D");
++ }
+ }
+ fclose(fp);
+ } else {
+@@ -679,6 +691,15 @@
+ if (machine == MACHINE_SHARP_SL5500)
+ qteRotation = 3;
+
++ // HP IPaq
++ if ( ODevice::inst( )-> series ( ) == Model_iPAQ ) {
++ qteRotation = 3;
++ }
++ if ( ODevice::inst ( )-> model ( ) == Model_iPAQ_H38xx ) {
++ qteRotation = 1;
++ }
++
++
+ // SL-B500 Íѥϥå¯(¤È¤ê¤¢¤¨¤º¡¢¤Í)
+ if (machine == MACHINE_SHARP_SLB500)
+ qteRotation = 3;
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/kill-stdc++-1.2.9.patch b/packages/libsdl/libsdl-qpe-1.2.9/kill-stdc++-1.2.9.patch
new file mode 100644
index 0000000000..884cb2191c
--- /dev/null
+++ b/packages/libsdl/libsdl-qpe-1.2.9/kill-stdc++-1.2.9.patch
@@ -0,0 +1,422 @@
+diff -Naur SDL-1.2.9-orig/acinclude.m4 SDL-1.2.9/acinclude.m4
+--- SDL-1.2.9-orig/acinclude.m4 2004-08-24 08:32:50.000000000 +0200
++++ SDL-1.2.9/acinclude.m4 2007-03-12 20:57:08.000000000 +0100
+@@ -1473,11 +1473,11 @@
+ case $host_os in
+ aix3*)
+ version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
++ library_names_spec='${libname}${release}${shrext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+- soname_spec='${libname}${release}${shared_ext}$major'
++ soname_spec='${libname}${release}${shrext}$major'
+ ;;
+
+ aix4* | aix5*)
+@@ -1487,7 +1487,7 @@
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
++ library_names_spec='${libname}${release}${shrext}$major ${libname}${release}${shrext}$versuffix $libname${shrext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+@@ -1513,12 +1513,12 @@
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ soname_spec='${libname}${release}${shrext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+@@ -1531,7 +1531,7 @@
+ ;;
+
+ beos*)
+- library_names_spec='${libname}${shared_ext}'
++ library_names_spec='${libname}${shrext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+@@ -1539,8 +1539,8 @@
+ bsdi[[45]]*)
+ version_type=linux
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+@@ -1573,14 +1573,14 @@
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+- #soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+- soname_spec='`echo ${libname} | sed -e 's/^lib//'`${shared_ext}'
++ #soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shrext}'
++ soname_spec='`echo ${libname} | sed -e 's/^lib//'`${shrext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+- #soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+- soname_spec='`echo ${libname} | sed -e 's/^lib//'`${shared_ext}'
++ #soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shrext}'
++ soname_spec='`echo ${libname} | sed -e 's/^lib//'`${shrext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+@@ -1596,13 +1596,13 @@
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shrext}'
+ ;;
+ esac
+ ;;
+
+ *)
+- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shrext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+@@ -1615,8 +1615,8 @@
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+- soname_spec='${libname}${release}${major}$shared_ext'
++ library_names_spec='${libname}${release}${versuffix}$shrext ${libname}${release}${major}$shrext ${libname}$shrext'
++ soname_spec='${libname}${release}${major}$shrext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+@@ -1633,8 +1633,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname$shrext'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+@@ -1646,8 +1646,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major ${libname}${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+@@ -1659,12 +1659,12 @@
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext} $libname${shrext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
++ library_names_spec='${libname}${release}${shrext}$versuffix $libname${shrext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+@@ -1688,8 +1688,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}${major} ${libname}${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+@@ -1707,8 +1707,8 @@
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+@@ -1722,8 +1722,8 @@
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+@@ -1732,8 +1732,8 @@
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+@@ -1752,8 +1752,8 @@
+ esac
+ need_lib_prefix=no
+ need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
++ soname_spec='${libname}${release}${shrext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major ${libname}${release}${shrext} $libname${shrext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+@@ -1787,8 +1787,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+@@ -1816,8 +1816,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major ${libname}${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+@@ -1829,12 +1829,12 @@
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${shrext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major ${libname}${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+@@ -1844,7 +1844,7 @@
+
+ newsos6)
+ version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+@@ -1853,8 +1853,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+@@ -1863,7 +1863,7 @@
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${shrext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+@@ -1884,7 +1884,7 @@
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+- library_names_spec='$libname${shared_ext} $libname.a'
++ library_names_spec='$libname${shrext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+@@ -1893,8 +1893,8 @@
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shrext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+@@ -1902,8 +1902,8 @@
+
+ sco3.2v5*)
+ version_type=osf
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shrext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+@@ -1911,8 +1911,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+@@ -1922,7 +1922,7 @@
+
+ sunos4*)
+ version_type=sunos
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${shrext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+@@ -1934,8 +1934,8 @@
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+@@ -1959,16 +1959,16 @@
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+- soname_spec='$libname${shared_ext}.$major'
++ library_names_spec='$libname${shrext}.$versuffix $libname${shrext}.$major $libname${shrext}'
++ soname_spec='$libname${shrext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+ uts4*)
+ version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+@@ -3471,8 +3471,8 @@
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shrext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shrext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+@@ -3481,7 +3481,7 @@
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
++ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shrext 2>&1 | grep "ld"`; rm -f libconftest$shrext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+@@ -3585,7 +3585,7 @@
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shrext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -3645,7 +3645,7 @@
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shrext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -4596,7 +4596,7 @@
+ # Whether we need a single -rpath flag with a separated argument.
+ hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
++# Set to yes if using DIR/libNAME${shrext} during linking hardcodes DIR into the
+ # resulting binary.
+ hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+diff -Naur SDL-1.2.9-orig/src/main/Makefile.am SDL-1.2.9/src/main/Makefile.am
+--- SDL-1.2.9-orig/src/main/Makefile.am 2007-03-12 20:56:23.000000000 +0100
++++ SDL-1.2.9/src/main/Makefile.am 2007-03-12 20:57:08.000000000 +0100
+@@ -46,3 +46,9 @@
+ (cd $(distdir) && rm -f $(BUILT_SOURCES))
+ cp -rp $(ARCH_SUBDIRS) $(distdir)
+ (cd $(distdir) && rm -rf `find . -name CVS`)
++
++# overwrite USER variables
++CXXLD = $(CC)
++CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
++ $(AM_LDFLAGS) $(LDFLAGS) -o $@
++
+diff -Naur SDL-1.2.9-orig/src/video/qtopia/Makefile.am SDL-1.2.9/src/video/qtopia/Makefile.am
+--- SDL-1.2.9-orig/src/video/qtopia/Makefile.am 2007-03-12 20:56:23.000000000 +0100
++++ SDL-1.2.9/src/video/qtopia/Makefile.am 2007-03-12 20:57:08.000000000 +0100
+@@ -17,3 +17,9 @@
+ SDL_sysevents.cc \
+ SDL_sysevents_c.h \
+ SDL_qmain.cc
++
++
++# overwrite USER variables
++CXXLD = $(CC)
++CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
++ $(AM_LDFLAGS) $(LDFLAGS) -o $@
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/mouse-1.2.9.patch b/packages/libsdl/libsdl-qpe-1.2.9/mouse-1.2.9.patch
new file mode 100644
index 0000000000..7f88956d94
--- /dev/null
+++ b/packages/libsdl/libsdl-qpe-1.2.9/mouse-1.2.9.patch
@@ -0,0 +1,48 @@
+diff -Naur SDL-1.2.9-orig/src/video/qtopia/SDL_QWin.cc SDL-1.2.9/src/video/qtopia/SDL_QWin.cc
+--- SDL-1.2.9-orig/src/video/qtopia/SDL_QWin.cc 2007-03-12 20:55:07.000000000 +0100
++++ SDL-1.2.9/src/video/qtopia/SDL_QWin.cc 2007-03-12 20:56:36.000000000 +0100
+@@ -169,7 +169,12 @@
+ Qt::ButtonState button = e->button();
+ int sdlstate = 0;
+ if( (button & Qt::LeftButton)) {
+- sdlstate |= SDL_BUTTON_LMASK;
++ if (mouse_button_mode == 3)
++ sdlstate |= SDL_BUTTON_RMASK;
++ else if (mouse_button_mode == 2)
++ sdlstate |= SDL_BUTTON_MMASK;
++ else
++ sdlstate |= SDL_BUTTON_LMASK;
+ }
+ if( (button & Qt::RightButton)) {
+ sdlstate |= SDL_BUTTON_RMASK;
+@@ -539,20 +544,20 @@
+ case Qt::Key_F6: scancode = SDLK_F6; break;
+ case Qt::Key_F7: scancode = SDLK_F7; break;
+ case Qt::Key_F8: scancode = SDLK_F8; break;
+- case Qt::Key_F9: scancode = SDLK_F9; break;
+- case Qt::Key_F10:
+- scancode = SDLK_F10;
++ case Qt::Key_F9:
++ scancode = SDLK_F9;
+ mouse_button_mode=1;
+ break;
+- case Qt::Key_F11:
+- scancode = SDLK_F11;
+- mouse_button_mode=3;
+- break;
+- case Qt::Key_F12:
+- scancode = SDLK_F12;
++ case Qt::Key_F10:
++ scancode = SDLK_F10;
+ mouse_button_mode=2;
+ break;
+- case Qt::Key_F13: scancode = SDLK_F13; break;
++ case Qt::Key_F11: scancode = SDLK_F11; break;
++ case Qt::Key_F12: scancode = SDLK_F12; break;
++ case Qt::Key_F13:
++ scancode = SDLK_F13;
++ mouse_button_mode=3;
++ break;
+ case Qt::Key_F14: scancode = SDLK_F14; break;
+ case Qt::Key_F15: scancode = SDLK_F15; break;
+ case Qt::Key_Super_L: scancode = SDLK_LSUPER; break;
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/pygame-1.2.9.patch b/packages/libsdl/libsdl-qpe-1.2.9/pygame-1.2.9.patch
new file mode 100644
index 0000000000..4073de25bf
--- /dev/null
+++ b/packages/libsdl/libsdl-qpe-1.2.9/pygame-1.2.9.patch
@@ -0,0 +1,191 @@
+diff -Naur SDL-1.2.9-orig/configure.in SDL-1.2.9/configure.in
+--- SDL-1.2.9-orig/configure.in 2005-08-28 08:31:18.000000000 +0200
++++ SDL-1.2.9/configure.in 2007-03-12 20:55:18.000000000 +0100
+@@ -1912,7 +1912,7 @@
+ # Set up files for the main() stub
+ if test "x$video_qtopia" = "xyes"; then
+ SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main"
+- SDL_LIBS="-lSDLmain $SDL_LIBS"
++
+ fi
+ # Set up files for the audio library
+ # We use the OSS and ALSA API's, not the Sun audio API
+diff -Naur SDL-1.2.9-orig/src/main/Makefile.am SDL-1.2.9/src/main/Makefile.am
+--- SDL-1.2.9-orig/src/main/Makefile.am 2004-02-12 07:21:13.000000000 +0100
++++ SDL-1.2.9/src/main/Makefile.am 2007-03-12 20:55:18.000000000 +0100
+@@ -21,11 +21,7 @@
+ if TARGET_MACOSX
+ MAINLIB_ARCH_SRCS = macosx/SDLMain.m macosx/SDLMain.h
+ else
+-if TARGET_QTOPIA
+-MAINLIB_ARCH_SRCS = qtopia/SDL_qtopia_main.cc
+-else
+ MAINLIB_ARCH_SRCS = dummy/SDL_dummy_main.c
+-endif # !TARGET_QTOPIA
+ endif # !TARGET_MACOSX
+ endif # !TARGET_WIN32
+ libSDLmain_a_SOURCES = $(MAINLIB_ARCH_SRCS)
+diff -Naur SDL-1.2.9-orig/src/main/qtopia/SDL_qtopia_main.cc SDL-1.2.9/src/main/qtopia/SDL_qtopia_main.cc
+--- SDL-1.2.9-orig/src/main/qtopia/SDL_qtopia_main.cc 2003-12-14 07:25:53.000000000 +0100
++++ SDL-1.2.9/src/main/qtopia/SDL_qtopia_main.cc 1970-01-01 01:00:00.000000000 +0100
+@@ -1,47 +0,0 @@
+-
+-/* Include the SDL main definition header */
+-#include "SDL_main.h"
+-#include <stdlib.h>
+-#include <unistd.h>
+-#ifdef main
+-#undef main
+-#endif
+-#ifdef QWS
+-#include <qpe/qpeapplication.h>
+-#include <qapplication.h>
+-#include <qpe/qpeapplication.h>
+-#include <stdlib.h>
+-
+-// Workaround for OPIE to remove taskbar icon. Also fixes
+-// some issues in Qtopia where there are left-over qcop files in /tmp/.
+-// I'm guessing this will also clean up the taskbar in the Sharp version
+-// of Qtopia.
+-static inline void cleanupQCop() {
+- QString appname(qApp->argv()[0]);
+- int slash = appname.findRev("/");
+- if(slash != -1) { appname = appname.mid(slash+1); }
+- QString cmd = QPEApplication::qpeDir() + "bin/qcop QPE/System 'closing(QString)' '"+appname+"'";
+- system(cmd.latin1());
+- cmd = "/tmp/qcop-msg-"+appname;
+- unlink(cmd.latin1());
+-}
+-
+-static QPEApplication *app;
+-#endif
+-
+-extern int SDL_main(int argc, char *argv[]);
+-
+-int main(int argc, char *argv[])
+-{
+-#ifdef QWS
+- // This initializes the Qtopia application. It needs to be done here
+- // because it parses command line options.
+- app = new QPEApplication(argc, argv);
+- QWidget dummy;
+- app->showMainWidget(&dummy);
+- atexit(cleanupQCop);
+-#endif
+- // Exit here because if return is used, the application
+- // doesn't seem to quit correctly.
+- exit(SDL_main(argc, argv));
+-}
+diff -Naur SDL-1.2.9-orig/src/video/qtopia/Makefile.am SDL-1.2.9/src/video/qtopia/Makefile.am
+--- SDL-1.2.9-orig/src/video/qtopia/Makefile.am 2002-05-28 21:24:11.000000000 +0200
++++ SDL-1.2.9/src/video/qtopia/Makefile.am 2007-03-12 20:55:18.000000000 +0100
+@@ -15,4 +15,5 @@
+ SDL_syswm.cc \
+ SDL_syswm_c.h \
+ SDL_sysevents.cc \
+- SDL_sysevents_c.h
++ SDL_sysevents_c.h \
++ SDL_qmain.cc
+diff -Naur SDL-1.2.9-orig/src/video/qtopia/SDL_qmain.cc SDL-1.2.9/src/video/qtopia/SDL_qmain.cc
+--- SDL-1.2.9-orig/src/video/qtopia/SDL_qmain.cc 1970-01-01 01:00:00.000000000 +0100
++++ SDL-1.2.9/src/video/qtopia/SDL_qmain.cc 2007-03-12 20:55:18.000000000 +0100
+@@ -0,0 +1,99 @@
++/* Include the SDL main definition header */
++#include "SDL_main.h"
++#include <stdlib.h>
++
++#include <sys/types.h>
++#include <fcntl.h>
++#include <unistd.h>
++
++
++#ifdef QWS
++#include <qpe/qpeapplication.h>
++#include <stdlib.h>
++#include <string.h>
++
++
++
++static QWidget *dummyW = 0;
++static QPEApplication *theApp = 0;
++static char **cmdline= 0;
++static int size = 0;
++
++static void parse_cmd_line() {
++ /*
++ * find the number
++ */
++ char buf[1024];
++ int available = 0;
++ char *string_start = 0;
++ int fd = ::open( "/proc/self/cmdline", O_RDONLY );
++ if ( fd < 0 ) {
++ qWarning( "Error getting the cmdline, can't be" );
++ goto error_out;
++ }
++
++ available = ::read( fd, &buf, sizeof(buf) );
++ if ( available <= 0 )
++ goto error_out;
++
++ /*
++ * find out the number of arguments
++ */
++ size = 0;
++ for (int i = 0; i < available; ++i )
++ if ( buf[i] == '\0' )
++ ++size;
++
++ /* now create a the cmdline */
++ cmdline = new char*[size+1];
++ cmdline[size] = '\0'; // parnoid...
++
++ string_start = &buf[0];
++ for ( int i = 0; i < size; ++i ) {
++ /*
++ * find the end of the string
++ */
++ size_t sz = ::strlen(string_start);
++ cmdline[i] = new char[sz+1];
++ memcpy( cmdline[i], string_start, sz+1 );
++ string_start += (sz+1); // +1 for '\0' +1 to set it beyond
++ }
++
++ ::close(fd);
++
++ return;
++
++/* error code */
++error_out:
++ cmdline = new char*[2];
++ cmdline[0] = "unknown_app";
++ cmdline[1] = '\0';
++ size = 1;
++}
++
++static void free_cmd_line() {
++ /*
++ * free each string and then free the array
++ */
++ for ( int i = 0; i < size; ++i )
++ delete [] cmdline[i];
++
++ delete [] cmdline;
++}
++
++static void __attribute__((constructor)) initialize_qpe_app() {
++ parse_cmd_line();
++
++ theApp = new QPEApplication( size, cmdline );
++ dummyW = new QWidget;
++ theApp->showMainWidget(dummyW);
++}
++
++static void __attribute__((destructor)) deinitialize_qpe_app() {
++ free_cmd_line();
++ delete dummyW;
++ delete theApp;
++}
++
++
++#endif
diff --git a/packages/libsdl/libsdl-qpe_1.2.9.bb b/packages/libsdl/libsdl-qpe_1.2.9.bb
new file mode 100644
index 0000000000..eaca6b88aa
--- /dev/null
+++ b/packages/libsdl/libsdl-qpe_1.2.9.bb
@@ -0,0 +1,67 @@
+DESCRIPTION = "Simple DirectMedia Layer - QtE-based Palmtop Environments Edition"
+SECTION = "opie/libs"
+PRIORITY = "optional"
+DEPENDS = "virtual/libqpe1 libopie2"
+PROVIDES = "virtual/libsdl"
+LICENSE = "LGPL"
+
+# NOTE: make sure to keep PR in sync with libsdl-x11
+PR = "r0"
+
+SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
+ file://agawa-piro-mickey-1.2.9.patch;patch=1 \
+ file://pygame-1.2.9.patch;patch=1 \
+ file://mouse-1.2.9.patch;patch=1 \
+ file://kill-stdc++-1.2.9.patch;patch=1 \
+ file://ipaq-1.2.9.patch;patch=1 \
+ file://SDL-Akita-1.2.9.patch;patch=1 \
+ file://fixlibs-1.2.9.patch;patch=1 \
+ file://acinclude.m4"
+S = "${WORKDIR}/SDL-${PV}"
+
+inherit autotools binconfig
+
+EXTRA_OECONF = "--disable-static --disable-debug --enable-cdrom --enable-threads --enable-timers --enable-endian \
+ --enable-file --enable-oss --disable-alsa --disable-esd --disable-arts \
+ --disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest \
+ --disable-mintaudio --disable-nasm --disable-video-x11 --disable-video-dga \
+ --disable-video-fbcon --disable-video-directfb --disable-video-ps2gs \
+ --disable-video-xbios --disable-video-gem --disable-video-dummy \
+ --disable-video-opengl --enable-input-events --enable-pthreads \
+ --disable-video-picogui --enable-video-qtopia --enable-dlopen"
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir}/*config"
+
+do_compile_prepend() {
+ rm -f ${S}/acinclude.m4
+ cp ${WORKDIR}/acinclude.m4 ${S}/
+ if [ "${PALMTOP_USE_MULTITHREADED_QT}" == "yes" ]
+ then
+ sed -i s,-lqte,-lqte-mt, src/Makefile
+ fi
+}
+
+do_configure_append () {
+ cd ${S}
+
+ # prevent libtool from linking libs against libstdc++, libgcc, ...
+ cat ${TARGET_PREFIX}libtool | sed -e 's/postdeps=".*"/postdeps=""/' > ${TARGET_PREFIX}libtool.tmp
+ mv ${TARGET_PREFIX}libtool.tmp ${TARGET_PREFIX}libtool
+}
+
+do_stage() {
+ oe_libinstall -so -C src libSDL ${STAGING_LIBDIR}
+ rm ${STAGING_LIBDIR}/libSDL.la
+ ln -sf libSDL.so ${STAGING_LIBDIR}/libSDL-1.2.so
+ install -m 0655 src/main/libSDLmain.a src/main/.libs/
+ oe_libinstall -a -C src/main libSDLmain ${STAGING_LIBDIR}
+
+ install -d ${STAGING_INCDIR}/SDL
+ for f in include/*.h
+ do
+ install -m 0644 $f ${STAGING_INCDIR}/SDL/
+ done
+
+ install -m 0644 *.m4 ${STAGING_DATADIR}/aclocal/
+}
diff --git a/packages/libsexy/libsexy.inc b/packages/libsexy/libsexy.inc
new file mode 100644
index 0000000000..522b7e0d63
--- /dev/null
+++ b/packages/libsexy/libsexy.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "Libsexy is a collection of GTK+ widgets that extend the functionality of such standard widgets as GtkEntry and GtkLabel"
+HOMEPAGE = "http://wiki.chipx86.com/wiki/Libsexy"
+AUTHOR = "Christian Hammond <chipx86@chipx86.com>"
+SECTION = "x11/libs"
+
+DEPENDS = "gtk+ enchant libxml2"
+
+SRC_URI = "http://releases.chipx86.com/libsexy/${PN}/${PN}-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+do_stage() {
+autotools_stage_all
+}
+
+
diff --git a/packages/libsexy/libsexy_0.1.10.bb b/packages/libsexy/libsexy_0.1.10.bb
new file mode 100644
index 0000000000..042ea757e9
--- /dev/null
+++ b/packages/libsexy/libsexy_0.1.10.bb
@@ -0,0 +1,2 @@
+require libsexy.inc
+PR = "r0"
diff --git a/packages/libsexy/libsexy_0.1.11.bb b/packages/libsexy/libsexy_0.1.11.bb
new file mode 100644
index 0000000000..042ea757e9
--- /dev/null
+++ b/packages/libsexy/libsexy_0.1.11.bb
@@ -0,0 +1,2 @@
+require libsexy.inc
+PR = "r0"
diff --git a/packages/libsexy/libsexy_0.1.4.bb b/packages/libsexy/libsexy_0.1.4.bb
deleted file mode 100644
index b3e7e7ad7d..0000000000
--- a/packages/libsexy/libsexy_0.1.4.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-DESCRIPTION = "Libsexy is a collection of GTK+ widgets that extend the functionality of such standard widgets as GtkEntry and GtkLabel"
-HOMEPAGE = "http://wiki.chipx86.com/wiki/Libsexy"
-AUTHOR = "Christian Hammond <chipx86@chipx86.com>"
-PR = "r1"
-
-DEPENDS = "gtk+ enchant libxml2"
-
-SRC_URI = "http://osiris.chipx86.com/projects/libsexy/releases/${P}.tar.gz"
-
-inherit autotools pkgconfig
-
-do_stage() {
-autotools_stage_all
-}
-
-
diff --git a/packages/libsexy/libsexy_0.1.5.bb b/packages/libsexy/libsexy_0.1.5.bb
deleted file mode 100644
index 964c381c7d..0000000000
--- a/packages/libsexy/libsexy_0.1.5.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-DESCRIPTION = "Libsexy is a collection of GTK+ widgets that extend the functionality of such standard widgets as GtkEntry and GtkLabel"
-HOMEPAGE = "http://wiki.chipx86.com/wiki/Libsexy"
-AUTHOR = "Christian Hammond <chipx86@chipx86.com>"
-PR = "r0"
-
-DEPENDS = "gtk+ enchant libxml2"
-
-SRC_URI = "http://osiris.chipx86.com/projects/libsexy/releases/${P}.tar.gz"
-
-inherit autotools pkgconfig
-
-do_stage() {
-autotools_stage_all
-}
-
-
diff --git a/packages/libsexy/libsexy_0.1.6.bb b/packages/libsexy/libsexy_0.1.6.bb
index 964c381c7d..042ea757e9 100644
--- a/packages/libsexy/libsexy_0.1.6.bb
+++ b/packages/libsexy/libsexy_0.1.6.bb
@@ -1,16 +1,2 @@
-DESCRIPTION = "Libsexy is a collection of GTK+ widgets that extend the functionality of such standard widgets as GtkEntry and GtkLabel"
-HOMEPAGE = "http://wiki.chipx86.com/wiki/Libsexy"
-AUTHOR = "Christian Hammond <chipx86@chipx86.com>"
+require libsexy.inc
PR = "r0"
-
-DEPENDS = "gtk+ enchant libxml2"
-
-SRC_URI = "http://osiris.chipx86.com/projects/libsexy/releases/${P}.tar.gz"
-
-inherit autotools pkgconfig
-
-do_stage() {
-autotools_stage_all
-}
-
-
diff --git a/packages/libsexy/libsexy_0.1.8.bb b/packages/libsexy/libsexy_0.1.8.bb
index 1de4a9175a..91784ffb49 100644
--- a/packages/libsexy/libsexy_0.1.8.bb
+++ b/packages/libsexy/libsexy_0.1.8.bb
@@ -1,17 +1,2 @@
-DESCRIPTION = "Libsexy is a collection of GTK+ widgets that extend the functionality of such standard widgets as GtkEntry and GtkLabel"
-HOMEPAGE = "http://wiki.chipx86.com/wiki/Libsexy"
-AUTHOR = "Christian Hammond <chipx86@chipx86.com>"
-SECTION = "x11/libs"
+require libsexy.inc
PR = "r1"
-
-DEPENDS = "gtk+ enchant libxml2"
-
-SRC_URI = "http://releases.chipx86.com/libsexy/${PN}/${PN}-${PV}.tar.gz"
-
-inherit autotools pkgconfig
-
-do_stage() {
-autotools_stage_all
-}
-
-
diff --git a/packages/libsndfile/libsndfile1_1.0.16.bb b/packages/libsndfile/libsndfile1_1.0.16.bb
index 5dbec09411..165ef6d38f 100644
--- a/packages/libsndfile/libsndfile1_1.0.16.bb
+++ b/packages/libsndfile/libsndfile1_1.0.16.bb
@@ -3,17 +3,15 @@ HOMEPAGE = "http://www.mega-nerd.com/libsndfile"
AUTHOR = "Erik de Castro Lopo"
SECTION = "libs/multimedia"
LICENSE = "LGPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://www.mega-nerd.com/libsndfile/libsndfile-${PV}.tar.gz"
S = "${WORKDIR}/libsndfile-${PV}"
-inherit autotools pkgconfig
+inherit autotools lib_package pkgconfig
do_stage() {
oe_libinstall -a -so -C src libsndfile ${STAGING_LIBDIR}
install -m 0644 ${S}/src/sndfile.h ${STAGING_INCDIR}/
}
-#FIXME package the rest
-FILES_${PN} = "${libdir}/libsndfile.so*"
diff --git a/packages/libsoundgen/libsoundgen_0.3.bb b/packages/libsoundgen/libsoundgen_0.3.bb
index afcdf8a04c..4348670538 100644
--- a/packages/libsoundgen/libsoundgen_0.3.bb
+++ b/packages/libsoundgen/libsoundgen_0.3.bb
@@ -1,7 +1,7 @@
SECTION = "x11/libs"
inherit gpe
LICENSE = "LGPL"
-DEPENDS = "esound-gpe"
+DEPENDS = "esound"
do_stage() {
install -d ${STAGING_INCDIR}/gpe
diff --git a/packages/libtododb/libtododb_svn.bb b/packages/libtododb/libtododb_svn.bb
new file mode 100644
index 0000000000..a0263f27ac
--- /dev/null
+++ b/packages/libtododb/libtododb_svn.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "Database access for GPE to-do list"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "libgpewidget libgpepimc sqlite"
+PV = "0.10+svn${SRCDATE}"
+PR = "r0"
+
+inherit pkgconfig gpe autotools
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+do_install () {
+ gpe_do_install
+# oe_runmake PREFIX=${prefix} DESTDIR=${D} install-devel
+}
+do_stage () {
+ oe_libinstall -so libtododb ${STAGING_LIBDIR}
+ mkdir -p ${STAGING_INCDIR}/gpe
+ for h in ${headers}; do
+ install -m 0644 ${S}/gpe/$h ${STAGING_INCDIR}/gpe/$h
+ done
+}
+
+headers = "todo-db.h"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/libtool/libtool-1.5.22/.mtn2git_empty b/packages/libtool/libtool-1.5.22/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/.mtn2git_empty
diff --git a/packages/libtool/libtool-1.5.22/autotools.patch b/packages/libtool/libtool-1.5.22/autotools.patch
new file mode 100644
index 0000000000..5df441e945
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/autotools.patch
@@ -0,0 +1,127 @@
+diff -urNd -urNd libtool-1.5/cdemo/configure.ac libtool-1.5.ac/cdemo/configure.ac
+--- libtool-1.5/cdemo/configure.ac 2001-10-06 11:35:17.000000000 -0400
++++ libtool-1.5.ac/cdemo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -24,6 +24,7 @@
+ ## ------------------------ ##
+ AC_INIT([cdemo], [0.1], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([main.c])
++AC_CONFIG_AUX_DIR([..])
+
+
+ ## ------------------------ ##
+diff -urNd -urNd libtool-1.5/demo/configure.ac libtool-1.5.ac/demo/configure.ac
+--- libtool-1.5/demo/configure.ac 2002-03-02 22:19:55.000000000 -0500
++++ libtool-1.5.ac/demo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -24,6 +24,7 @@
+ ## ------------------------ ##
+ AC_INIT([demo], [1.0], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([hello.c])
++AC_CONFIG_AUX_DIR([..])
+
+
+ ## ------------------------ ##
+diff -urNd -urNd libtool-1.5/demo/Makefile.am libtool-1.5.ac/demo/Makefile.am
+--- libtool-1.5/demo/Makefile.am 2002-11-19 04:42:39.000000000 -0500
++++ libtool-1.5.ac/demo/Makefile.am 2004-05-05 17:17:34.000000000 -0400
+@@ -121,17 +121,16 @@
+
+ # This is one of the essential tests for deplibs_check_method=pass_all.
+ # If this one passes with pass_all, it is likely that pass_all works
+-EXTRA_LIBRARIES = libhell0.a
+-libhell0_a_SOURCES = hello.c foo.c
+-EXTRA_LTLIBRARIES = libhell1.la libhell2.la
++EXTRA_LTLIBRARIES = libhell0.la libhell1.la libhell2.la
++libhell0_la_SOURCES = hello.c foo.c
+ libhell1_la_SOURCES = hell1.c
+ libhell1_la_LIBADD = -L. -lhell0
+ libhell1_la_LDFLAGS = -no-undefined -rpath $(libdir)
+-libhell1_la_DEPENDENCIES = libhell0.a
++libhell1_la_DEPENDENCIES = libhell0.la
+ libhell2_la_SOURCES = hell2.c
+ libhell2_la_LIBADD = -L. -lhell0
+ libhell2_la_LDFLAGS = -no-undefined -rpath $(libdir)
+-libhell2_la_DEPENDENCIES = libhell0.a
++libhell2_la_DEPENDENCIES = libhell0.la
+ EXTRA_PROGRAMS = hell0
+ hell0_SOURCES = main.c
+ hell0_LDADD = libhell1.la libhell2.la $(LIBM)
+diff -urNd -urNd libtool-1.5/depdemo/configure.ac libtool-1.5.ac/depdemo/configure.ac
+--- libtool-1.5/depdemo/configure.ac 2002-10-22 15:29:28.000000000 -0400
++++ libtool-1.5.ac/depdemo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -24,6 +24,7 @@
+ ## ------------------------ ##
+ AC_INIT([depdemo], [0.1], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([main.c])
++AC_CONFIG_AUX_DIR([..])
+
+
+ ## ------------------------ ##
+diff -urNd -urNd libtool-1.5/f77demo/configure.ac libtool-1.5.ac/f77demo/configure.ac
+--- libtool-1.5/f77demo/configure.ac 2003-03-22 01:34:27.000000000 -0500
++++ libtool-1.5.ac/f77demo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -23,6 +23,7 @@
+ ## ------------------------ ##
+ AC_INIT([f77demo], [0.1], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([foof.f])dnl
++AC_CONFIG_AUX_DIR([..])
+
+ ## ------------------------ ##
+ ## Automake Initialisation. ##
+diff -urNd -urNd libtool-1.5/mdemo/configure.ac libtool-1.5.ac/mdemo/configure.ac
+--- libtool-1.5/mdemo/configure.ac 2001-10-06 11:35:17.000000000 -0400
++++ libtool-1.5.ac/mdemo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -24,6 +24,7 @@
+ ## ------------------------ ##
+ AC_INIT([mdemo], [0.1], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([main.c])
++AC_CONFIG_AUX_DIR([..])
+
+
+ ## ------------------------ ##
+diff -urNd -urNd libtool-1.5/pdemo/configure.ac libtool-1.5.ac/pdemo/configure.ac
+--- libtool-1.5/pdemo/configure.ac 2001-10-06 11:35:17.000000000 -0400
++++ libtool-1.5.ac/pdemo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -24,6 +24,7 @@
+ ## ------------------------ ##
+ AC_INIT([pdemo], [0.1], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([longer_file_name_hello.c])
++AC_CONFIG_AUX_DIR([..])
+
+
+ ## ------------------------ ##
+diff -urNd -urNd libtool-1.5/pdemo/Makefile.am libtool-1.5.ac/pdemo/Makefile.am
+--- libtool-1.5/pdemo/Makefile.am 2002-11-19 04:42:39.000000000 -0500
++++ libtool-1.5.ac/pdemo/Makefile.am 2004-05-05 17:17:59.000000000 -0400
+@@ -121,17 +121,16 @@
+
+ # This is one of the essential tests for deplibs_check_method=pass_all.
+ # If this one passes with pass_all, it is likely that pass_all works
+-EXTRA_LIBRARIES = libhell0.a
+-libhell0_a_SOURCES = longer_file_name_hello.c longer_file_name_foo.c
+-EXTRA_LTLIBRARIES = libhell1.la libhell2.la
++libhell0_la_SOURCES = longer_file_name_hello.c longer_file_name_foo.c
++EXTRA_LTLIBRARIES = libhell0.la libhell1.la libhell2.la
+ libhell1_la_SOURCES = longer_file_name_hell1.c
+ libhell1_la_LIBADD = -L. -lhell0
+ libhell1_la_LDFLAGS = -no-undefined -rpath $(libdir)
+-libhell1_la_DEPENDENCIES = libhell0.a
++libhell1_la_DEPENDENCIES = libhell0.la
+ libhell2_la_SOURCES = longer_file_name_hell2.c
+ libhell2_la_LIBADD = -L. -lhell0
+ libhell2_la_LDFLAGS = -no-undefined -rpath $(libdir)
+-libhell2_la_DEPENDENCIES = libhell0.a
++libhell2_la_DEPENDENCIES = libhell0.la
+ EXTRA_PROGRAMS = hell0
+ hell0_SOURCES = longer_file_name_main.c
+ hell0_LDADD = libhell1.la libhell2.la $(LIBM)
+diff -urNd -urNd libtool-1.5/tagdemo/configure.ac libtool-1.5.ac/tagdemo/configure.ac
+--- libtool-1.5/tagdemo/configure.ac 2001-10-06 11:35:17.000000000 -0400
++++ libtool-1.5.ac/tagdemo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -24,6 +24,7 @@
+ ## ------------------------ ##
+ AC_INIT([tagdemo], [0.1], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([foo.cpp])
++AC_CONFIG_AUX_DIR([..])
+
+ AC_CANONICAL_TARGET
+
diff --git a/packages/libtool/libtool-1.5.22/install-path-check.patch b/packages/libtool/libtool-1.5.22/install-path-check.patch
new file mode 100644
index 0000000000..46cc960986
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/install-path-check.patch
@@ -0,0 +1,25 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- libtool-1.5.6/ltmain.in~install-path-check 2004-05-14 22:56:19.000000000 -0500
++++ libtool-1.5.6/ltmain.in 2004-05-14 22:57:48.000000000 -0500
+@@ -5503,10 +5503,13 @@
+ # At present, this check doesn't affect windows .dll's that
+ # are installed into $libdir/../bin (currently, that works fine)
+ # but it's something to keep an eye on.
+- if test "$inst_prefix_dir" = "$destdir"; then
+- $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+- exit $EXIT_FAILURE
+- fi
++ #
++ # This breaks install into our staging area. -PB
++ #
++ # if test "$inst_prefix_dir" = "$destdir"; then
++ # $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
++ # exit $EXIT_FAILURE
++ # fi
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
diff --git a/packages/libtool/libtool-1.5.22/libdir-la.patch b/packages/libtool/libtool-1.5.22/libdir-la.patch
new file mode 100644
index 0000000000..47aae4c7af
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/libdir-la.patch
@@ -0,0 +1,52 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- libtool-1.5.6/ltmain.in~libdir-la 2004-04-01 21:46:15.000000000 -0600
++++ libtool-1.5.6/ltmain.in 2004-05-14 22:53:51.000000000 -0500
+@@ -2147,8 +2147,14 @@
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+- dir="$libdir"
+- absdir="$libdir"
++ # Adding 'libdir' from the .la file to our library search paths
++ # breaks crosscompilation horribly. We cheat here and don't add
++ # it, instead adding the path where we found the .la. -CL
++ dir="$abs_ladir"
++ absdir="$abs_ladir"
++ libdir="$abs_ladir"
++ #dir="$libdir"
++ #absdir="$libdir"
+ fi
+ else
+ dir="$ladir/$objdir"
+@@ -2615,6 +2621,16 @@
+ esac
+ 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`
++# if test -z "$libdir"; then
++# $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
++# exit 1
++# fi
++# if test "$absdir" != "$libdir"; then
++# $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
++# fi
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+@@ -5165,6 +5181,10 @@
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
++ # Replacing uninstalled with installed can easily break crosscompilation,
++ # since the installed path is generally the wrong architecture. -CL
++ newdependency_libs="$newdependency_libs $deplib"
++ continue
+ case $deplib in
+ *.la)
+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
diff --git a/packages/libtool/libtool-1.5.22/prefix.patch b/packages/libtool/libtool-1.5.22/prefix.patch
new file mode 100644
index 0000000000..5e7d9ba51d
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/prefix.patch
@@ -0,0 +1,44 @@
+diff -aur libtool-1.5.22.orig/libtool.m4 libtool-1.5.22/libtool.m4
+--- libtool-1.5.22.orig/libtool.m4 2005-12-18 16:53:17.000000000 -0500
++++ libtool-1.5.22/libtool.m4 2007-05-05 15:47:41.000000000 -0400
+@@ -67,7 +67,8 @@
+ LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+ # Always use our own libtool.
+-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
++LIBTOOL='$(SHELL) $(top_builddir)'
++LIBTOOL="$LIBTOOL/$host_alias-libtool"
+ AC_SUBST(LIBTOOL)dnl
+
+ # Prevent multiple expansion
+@@ -134,7 +135,7 @@
+ rm="rm -f"
+
+ # Global variables:
+-default_ofile=libtool
++default_ofile=${host_alias}-libtool
+ can_build_shared=yes
+
+ # All known linkers require a `.a' archive for static linking (except MSVC,
+Only in libtool-1.5.22: libtool.m4.orig
+diff -aur libtool-1.5.22.orig/Makefile.am libtool-1.5.22/Makefile.am
+--- libtool-1.5.22.orig/Makefile.am 2005-08-12 13:21:09.000000000 -0400
++++ libtool-1.5.22/Makefile.am 2007-05-05 15:49:25.000000000 -0400
+@@ -30,7 +30,7 @@
+ aclocal_DATA = $(aclocal_macros)
+
+ # The standalone libtool script, and the libtool distributor.
+-bin_SCRIPTS = libtool libtoolize
++bin_SCRIPTS = $(host_alias)-libtool libtoolize
+
+ ## These are installed as a subdirectory of pkgdatadir so that
+ ## libtoolize --ltdl can find them later:
+@@ -55,7 +55,7 @@
+ libltdl/configure \
+ libltdl/config-h.in
+
+-libtool: $(srcdir)/ltmain.sh $(top_builddir)/configure.ac
++$(host_alias)-libtool: $(srcdir)/ltmain.sh $(top_builddir)/configure.ac
+ $(SHELL) $(top_builddir)/config.status --recheck
+ chmod +x $@
+
diff --git a/packages/libtool/libtool-1.5.22/sedvar.patch b/packages/libtool/libtool-1.5.22/sedvar.patch
new file mode 100644
index 0000000000..d505edae24
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/sedvar.patch
@@ -0,0 +1,16 @@
+
+#
+# Made by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- libtool-1.5/ltmain.in~sedvar 2003-04-14 16:58:24.000000000 -0500
++++ libtool-1.5/ltmain.in 2003-09-24 14:18:50.175518400 -0500
+@@ -48,6 +48,8 @@
+ exit 0
+ fi
+
++[ -z "${SED}" ] && SED=sed
++
+ # The name of this program.
+ progname=`$echo "$0" | ${SED} 's%^.*/%%'`
+ modename="$progname"
diff --git a/packages/libtool/libtool-1.5.22/tag.patch b/packages/libtool/libtool-1.5.22/tag.patch
new file mode 100644
index 0000000000..8921a3efb7
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/tag.patch
@@ -0,0 +1,19 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- libtool-1.5.6/ltmain.in~tag 2004-05-15 05:14:32.000000000 -0400
++++ libtool-1.5.6/ltmain.in 2004-05-15 05:18:01.000000000 -0400
+@@ -226,8 +226,9 @@
+ # line option must be used.
+ if test -z "$tagname"; then
+ $echo "$modename: unable to infer tagged configuration"
+- $echo "$modename: specify a tag with \`--tag'" 1>&2
+- exit $EXIT_FAILURE
++ $echo "$modename: defaulting to \`CC'"
++ $echo "$modename: if this is not correct, specify a tag with \`--tag'"
++# exit $EXIT_FAILURE
+ # else
+ # $echo "$modename: using $tagname tagged configuration"
+ fi
diff --git a/packages/libtool/libtool-1.5.22/tag1.patch b/packages/libtool/libtool-1.5.22/tag1.patch
new file mode 100644
index 0000000000..6fefd6266d
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/tag1.patch
@@ -0,0 +1,13 @@
+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-1.5.22/uclibc.patch b/packages/libtool/libtool-1.5.22/uclibc.patch
new file mode 100644
index 0000000000..2c8cbabbb3
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/uclibc.patch
@@ -0,0 +1,19 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- libtool-1.5.8/libtool.m4~uclibc
++++ libtool-1.5.8/libtool.m4
+@@ -2221,6 +2221,11 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++linux-uclibc*)
++ lt_cv_deplibs_check_method=pass_all
++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
++ ;;
++
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
diff --git a/packages/libtool/libtool-cross_1.5.22.bb b/packages/libtool/libtool-cross_1.5.22.bb
new file mode 100644
index 0000000000..2188963495
--- /dev/null
+++ b/packages/libtool/libtool-cross_1.5.22.bb
@@ -0,0 +1,30 @@
+DEFAULT_PREFERENCE = "-1"
+
+SECTION = "devel"
+require libtool_${PV}.bb
+
+PR = "r0"
+PACKAGES = ""
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libtool-${PV}"
+SRC_URI_append = " file://libdir-la.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"
+S = "${WORKDIR}/libtool-${PV}"
+
+prefix = "${STAGING_DIR}"
+exec_prefix = "${prefix}/${BUILD_SYS}"
+bindir = "${STAGING_BINDIR_NATIVE}"
+
+do_compile () {
+ :
+}
+
+do_stage () {
+ install -m 0755 ${HOST_SYS}-libtool ${bindir}/${HOST_SYS}-libtool
+}
+
+do_install () {
+ :
+}
diff --git a/packages/libtool/libtool-native_1.5.22.bb b/packages/libtool/libtool-native_1.5.22.bb
new file mode 100644
index 0000000000..35d7f40b09
--- /dev/null
+++ b/packages/libtool/libtool-native_1.5.22.bb
@@ -0,0 +1,44 @@
+DEFAULT_PREFERENCE = "-1"
+
+SECTION = "devel"
+require libtool_${PV}.bb
+
+PR = "r0"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libtool-${PV}"
+SRC_URI_append = " file://libdir-la.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"
+S = "${WORKDIR}/libtool-${PV}"
+
+STAGING_DATADIR_safe := "${STAGING_DATADIR}"
+
+inherit native
+
+do_stage () {
+ install -m 0755 ${HOST_SYS}-libtool ${STAGING_BINDIR}/${HOST_SYS}-libtool
+ install -m 0755 libtoolize ${STAGING_BINDIR}/libtoolize
+ oe_libinstall -a -so -C libltdl libltdl ${STAGING_LIBDIR}
+ install -m 0644 libltdl/ltdl.h ${STAGING_INCDIR}/
+ for dir in ${STAGING_DATADIR} ${STAGING_DATADIR_safe}; do
+ ltdldir="${dir}/libtool/libltdl"
+ install -d $dir/libtool \
+ $ltdldir \
+ $dir/aclocal
+ install -c config.guess $dir/libtool/config.guess
+ install -c config.sub $dir/libtool/config.sub
+ install -c -m 0644 ltmain.sh $dir/libtool/
+ install -c -m 0644 libtool.m4 $dir/aclocal/
+ install -c -m 0644 ltdl.m4 $dir/aclocal/
+
+ for src in README COPYING.LIB Makefile.am configure.ac \
+ config-h.in ltdl.c ltdl.h; do
+ install -m 0644 libltdl/${src} ${ltdldir}
+ done
+ done
+}
+
+do_install () {
+ :
+}
diff --git a/packages/libtool/libtool_1.5.22.bb b/packages/libtool/libtool_1.5.22.bb
new file mode 100644
index 0000000000..d470d30cda
--- /dev/null
+++ b/packages/libtool/libtool_1.5.22.bb
@@ -0,0 +1,37 @@
+DEFAULT_PREFERENCE = "-1"
+
+DESCRIPTION = "Generic library support script \
+This is GNU libtool, a generic library support script. Libtool hides \
+the complexity of generating special library types (such as shared \
+libraries) behind a consistent interface."
+HOMEPAGE = "http://www.gnu.org/software/libtool/libtool.html"
+LICENSE = "GPL"
+SECTION = "devel"
+PR = "r1"
+
+SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
+ file://autotools.patch;patch=1 \
+ file://uclibc.patch;patch=1"
+# file://3figures.patch;patch=1"
+S = "${WORKDIR}/libtool-${PV}"
+
+PACKAGES = "libltdl libltdl-dev ${PN}"
+FILES_${PN} += "${datadir}/aclocal*"
+FILES_libltdl = "${libdir}/libltdl.so.*"
+FILES_libltdl-dev = "${libdir}/libltdl.* ${includedir}/ltdl.h"
+
+inherit autotools
+
+EXTRA_AUTORECONF = "--exclude=libtoolize"
+
+do_configure () {
+ find ${S} -name acinclude.m4 | for m4 in `cat`; do
+ cat ${S}/libtool.m4 ${S}/ltdl.m4 > $m4
+ done
+ autotools_do_configure
+}
+
+do_stage () {
+ oe_libinstall -a -so -C libltdl libltdl ${STAGING_LIBDIR}
+ install -m 0644 libltdl/ltdl.h ${STAGING_INCDIR}/
+}
diff --git a/packages/libusb/libusb_0.1.12.bb b/packages/libusb/libusb_0.1.12.bb
index a2b80ecb6d..43c6ea92bd 100644
--- a/packages/libusb/libusb_0.1.12.bb
+++ b/packages/libusb/libusb_0.1.12.bb
@@ -9,29 +9,25 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/libusb/libusb-${PV}.tar.gz"
S = "${WORKDIR}/libusb-${PV}"
-inherit autotools pkgconfig
+inherit autotools pkgconfig binconfig lib_package
PARALLEL_MAKE = ""
EXTRA_OECONF = "--disable-build-docs"
+export CXXFLAGS += "-lstdc++"
+
do_stage() {
- oe_libinstall -a -so libusb ${STAGING_LIBDIR}
- install -d ${STAGING_BINDIR}
+ autotools_stage_all
install -m 755 ${S}/libusb-config ${STAGING_BINDIR}
# can we get rid of that? wouldn't a sed statement do as well?
- perl -pi -e 's:\-L${libdir} :-L${STAGING_LIBDIR} :' ${STAGING_BINDIR}/libusb-config
+ sed -i 's:\-L${libdir} :-L${STAGING_LIBDIR} :' ${STAGING_BINDIR}/libusb-config
if [ "${STAGING_BINDIR}" != "${STAGING_BINDIR_CROSS}" ]; then
install -d ${STAGING_BINDIR_CROSS}/
mv ${STAGING_BINDIR}/libusb-config ${STAGING_BINDIR_CROSS}/libusb-config
fi
- install -d ${STAGING_INCDIR}/
- for X in usb.h
- do
- install -m 0644 ${S}/$X ${STAGING_INCDIR}/$X
- done
}
PACKAGES =+ "libusbpp"
diff --git a/packages/libwpd/libwpd_0.8.4.bb b/packages/libwpd/libwpd_0.8.4.bb
index 46a59e8dc8..4e6ee91a4f 100644
--- a/packages/libwpd/libwpd_0.8.4.bb
+++ b/packages/libwpd/libwpd_0.8.4.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "libwpd is a C++ library designed to help process WordPerfect docu
HOMEPAGE = "http://libwpd.sourceforge.net/index.html"
SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz"
-
+DEPENDS = "libgsf"
inherit autotools pkgconfig
diff --git a/packages/libwpd/libwpd_0.8.6.bb b/packages/libwpd/libwpd_0.8.6.bb
index 46a59e8dc8..4e6ee91a4f 100644
--- a/packages/libwpd/libwpd_0.8.6.bb
+++ b/packages/libwpd/libwpd_0.8.6.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "libwpd is a C++ library designed to help process WordPerfect docu
HOMEPAGE = "http://libwpd.sourceforge.net/index.html"
SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz"
-
+DEPENDS = "libgsf"
inherit autotools pkgconfig
diff --git a/packages/libxfce4mcs/libxfce4mcs_4.2.2.bb b/packages/libxfce4mcs/libxfce4mcs_4.3.99.2.bb
index 07d7a95ae1..07d7a95ae1 100644
--- a/packages/libxfce4mcs/libxfce4mcs_4.2.2.bb
+++ b/packages/libxfce4mcs/libxfce4mcs_4.3.99.2.bb
diff --git a/packages/libxfce4util/libxfce4util.inc b/packages/libxfce4util/libxfce4util.inc
deleted file mode 100644
index dbe6501e42..0000000000
--- a/packages/libxfce4util/libxfce4util.inc
+++ /dev/null
@@ -1,31 +0,0 @@
-# libxfce4util OE build file
-# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
-# Released under the MIT license (see packages/COPYING)
-
-DESCRIPTION = "Basic utility library for Xfce4"
-SECTION = "x11/libs"
-LICENSE = "GPL"
-DEPENDS = "glib-2.0"
-
-inherit xfce pkgconfig
-
-XFCE_HEADERS="debug.h utf8.h xfce-generics.h xfce-resource.h \
- i18n.h util.h xfce-kiosk.h libxfce4util-config.h \
- xfce-desktopentry.h xfce-miscutils.h libxfce4util.h \
- xfce-fileutils.h xfce-rc.h"
-
-MACROS="m4/X11.m4 m4/debug.m4 m4/depends.m4 m4/i18n.m4"
-
-do_stage() {
- install -d ${STAGING_LIBDIR} ${STAGING_INCDIR}/libxfce4util
- for file in ${XFCE_HEADERS}; do
- install -m 644 libxfce4util/$file ${STAGING_INCDIR}/libxfce4util
- done
-
- oe_libinstall -C libxfce4util -so libxfce4util ${STAGING_LIBDIR}
-
- install -d ${STAGING_DATADIR}/aclocal/
- install -m 0644 ${MACROS} ${STAGING_DATADIR}/aclocal/
-}
-
-FILES_${PN}-dev += " ${datadir}/xfce4/m4"
diff --git a/packages/libxfce4util/libxfce4util_4.2.2.bb b/packages/libxfce4util/libxfce4util_4.2.2.bb
deleted file mode 100644
index bc6443021f..0000000000
--- a/packages/libxfce4util/libxfce4util_4.2.2.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-# libxfce4util OE build file
-# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
-# Released under the MIT license (see packages/COPYING)
-
-require ${PN}.inc
-PR = "r1"
-
diff --git a/packages/libxfce4util/libxfce4util_4.3.99.2.bb b/packages/libxfce4util/libxfce4util_4.3.99.2.bb
new file mode 100644
index 0000000000..d1c29197d6
--- /dev/null
+++ b/packages/libxfce4util/libxfce4util_4.3.99.2.bb
@@ -0,0 +1,22 @@
+require ${PN}.inc
+
+SRC_URI += "\
+http://svn.xfce.org/svn/xfce/xfce4-dev-tools/trunk/m4macros/xdt-depends.m4 \
+http://svn.xfce.org/svn/xfce/xfce4-dev-tools/trunk/m4macros/xdt-features.m4 \
+http://svn.xfce.org/svn/xfce/xfce4-dev-tools/trunk/m4macros/xdt-i18n.m4 \
+http://svn.xfce.org/svn/xfce/xfce4-dev-tools/trunk/m4macros/xdt-python.m4 \
+http://svn.xfce.org/svn/xfce/xfce4-dev-tools/trunk/m4macros/xdt-xfce.m4"
+
+
+MACROS="m4/xdt*.m4"
+
+XFCE_HEADERS="debug.h utf8.h xfce-generics.h xfce-resource.h \
+ i18n.h util.h xfce-kiosk.h libxfce4util-config.h \
+ xfce-desktopentry.h xfce-miscutils.h libxfce4util.h \
+ xfce-fileutils.h xfce-rc.h xfce-utf8.h \
+ xfce-license.h xfce-i18n.h libxfce4util-enum-types.h"
+
+do_configure_prepend() {
+ install -m 0755 -d ${S}/m4/
+ install -m 0644 ${WORKDIR}/xdt-*.m4 ${S}/m4/
+}
diff --git a/packages/libxfcegui4/libxfcegui4_4.2.3.bb b/packages/libxfcegui4/libxfcegui4_4.3.99.2.bb
index 2def53685a..2def53685a 100644
--- a/packages/libxfcegui4/libxfcegui4_4.2.3.bb
+++ b/packages/libxfcegui4/libxfcegui4_4.3.99.2.bb
diff --git a/packages/libxine/libxine-x11_1.0.bb b/packages/libxine/libxine-x11_1.0.bb
index 1115b6e961..28d3be1b3d 100644
--- a/packages/libxine/libxine-x11_1.0.bb
+++ b/packages/libxine/libxine-x11_1.0.bb
@@ -3,7 +3,7 @@ This version is configued for the usage with X11"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "GPL"
-DEPENDS = "zlib libogg libvorbis tremor libmad libmodplug esound-gpe virtual/libx11 libxext libpng"
+DEPENDS = "zlib libogg libvorbis tremor libmad libmodplug esound virtual/libx11 libxext libpng"
PROVIDES = "virtual/libxine"
PR = "r0"
diff --git a/packages/libxine/libxine_1.1.0.bb b/packages/libxine/libxine_1.1.0.bb
index 270ac8f6e5..7732eb813e 100644
--- a/packages/libxine/libxine_1.1.0.bb
+++ b/packages/libxine/libxine_1.1.0.bb
@@ -3,7 +3,7 @@ This version is configued for the usage with X11"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "GPL"
-DEPENDS = "zlib libogg libvorbis tremor libmad libmodplug esound-gpe virtual/libx11 libxext libpng"
+DEPENDS = "zlib libogg libvorbis tremor libmad libmodplug esound virtual/libx11 libxext libpng"
PROVIDES = "virtual/libxine"
PR = "r1"
diff --git a/packages/libxml/libxml2-native_2.6.26.bb b/packages/libxml/libxml2-native_2.6.26.bb
new file mode 100644
index 0000000000..97ae5c47ec
--- /dev/null
+++ b/packages/libxml/libxml2-native_2.6.26.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "GNOME XML library"
+PR = "r1"
+
+SRC_URI = "ftp://xmlsoft.org/libxml2/libxml2-${PV}.tar.gz \
+ file://no-testapi.patch;patch=1"
+
+DEPENDS = "python-native"
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libxml2-${PV}"
+S = "${WORKDIR}/libxml2-${PV}"
+
+inherit autotools native pkgconfig
+
+EXTRA_OECONF = "--with-python=${STAGING_INCDIR}/python2.4 --without-debug --without-legacy --without-schemas --without-catalog --without-docbook --with-c14n"
+
+headers = "DOCBparser.h HTMLparser.h HTMLtree.h SAX.h SAX2.h c14n.h catalog.h chvalid.h debugXML.h dict.h encoding.h entities.h globals.h hash.h list.h nanoftp.h nanohttp.h parser.h parserInternals.h pattern.h relaxng.h schemasInternals.h threads.h tree.h uri.h valid.h xinclude.h xlink.h xmlIO.h xmlautomata.h xmlerror.h xmlexports.h xmlmemory.h xmlreader.h xmlregexp.h xmlschemas.h xmlschemastypes.h xmlstring.h xmlunicode.h xmlversion.h xmlwriter.h xpath.h xpathInternals.h xpointer.h"
+
+do_stage () {
+ oe_runmake install
+}
+
diff --git a/packages/libxml/libxml2-native_2.6.9.bb b/packages/libxml/libxml2-native_2.6.9.bb
index f83d974538..df3ab07460 100644
--- a/packages/libxml/libxml2-native_2.6.9.bb
+++ b/packages/libxml/libxml2-native_2.6.9.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "GNOME XML library"
-SRC_URI = "http://xmlsoft.org/sources/libxml2-${PV}.tar.gz"
+SRC_URI = "ftp://xmlsoft.org/libxml2/old/libxml2-${PV}.tar.gz"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libxml2-${PV}"
S = "${WORKDIR}/libxml2-${PV}"
diff --git a/packages/libxml/libxml2_2.6.26.bb b/packages/libxml/libxml2_2.6.26.bb
index aabcb926ff..12fb6ca08e 100644
--- a/packages/libxml/libxml2_2.6.26.bb
+++ b/packages/libxml/libxml2_2.6.26.bb
@@ -2,18 +2,21 @@ DESCRIPTION = "GNOME XML Parser library"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "MIT"
+PR = "r4"
SRC_URI = "ftp://xmlsoft.org/libxml2/libxml2-${PV}.tar.gz"
inherit autotools pkgconfig binconfig
-EXTRA_OECONF = "--without-python --without-debug --without-legacy --without-catalog --without-docbook --without-c14n"
+EXTRA_OECONF = "--without-python --without-debug --without-legacy --without-catalog --without-docbook --with-c14n"
export LDFLAGS += "-ldl"
do_stage() {
autotools_stage_all
install -m 0644 libxml.m4 ${STAGING_DATADIR}/aclocal/
+ #this is need it by php during its install
+ install -m 0755 xml2-config ${STAGING_BINDIR}
}
python populate_packages_prepend () {
diff --git a/packages/libxsettings-client/libxsettings-client_svn.bb b/packages/libxsettings-client/libxsettings-client_svn.bb
new file mode 100644
index 0000000000..111c692603
--- /dev/null
+++ b/packages/libxsettings-client/libxsettings-client_svn.bb
@@ -0,0 +1,26 @@
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+LICENSE = "BSD-X"
+DEPENDS = "libxsettings virtual/libx11 libxt gtk-doc"
+PV = "0.17+svn${SRCDATE}"
+# libxt is required to stop configure breaking builds by
+# including system paths to find it if it isn't present.
+PR = "r0"
+
+inherit autotools pkgconfig gpe
+
+SRC_URI = "${GPE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+do_stage () {
+ oe_libinstall -so libXsettings-client ${STAGING_LIBDIR}
+ mkdir -p ${STAGING_INCDIR}
+ for h in ${headers}; do
+ install -m 0644 ${S}/$h ${STAGING_INCDIR}/$h
+ done
+}
+
+headers = "xsettings-client.h xsettings-common.h"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/libxsettings/files/.mtn2git_empty b/packages/libxsettings/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libxsettings/files/.mtn2git_empty
diff --git a/packages/libxsettings/files/Makefile.dpkg_ipkg b/packages/libxsettings/files/Makefile.dpkg_ipkg
new file mode 100644
index 0000000000..76c532154f
--- /dev/null
+++ b/packages/libxsettings/files/Makefile.dpkg_ipkg
@@ -0,0 +1,114 @@
+## Please read the README in this directory to see how to use this
+## Makefile snippet
+
+# Let's use whatever clean target the specific app provides
+
+CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
+
+# URL to source tarball
+SOURCE = http://gpe.linuxtogo.org/download/source/$(PACKAGE)-$(VERSION).tar.gz
+
+# can change this to e.g. /var/tmp/deb
+DEB_PATH = ../deb
+
+ifeq ($(CVSBUILD),yes)
+LIBGPEWIDGET_PC = libgpewidget-uninstalled
+PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget
+else
+LIBGPEWIDGET_PC = libgpewidget
+endif
+
+ifeq ($(IN_LIBGPEWIDGET),)
+GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC))
+GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC))
+endif
+
+GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0)
+GTKLIBS = $(shell pkg-config --libs gtk+-2.0)
+
+STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
+STANDARD_CFLAGS = -MD -Wall
+
+ifeq ($(DEBUG),yes)
+CFLAGS += -O2 -g
+LDFLAGS = -g
+else
+CFLAGS += -Os -fomit-frame-pointer
+endif
+
+dist: check-source clean dist-prep
+ rm -rf ../$(PACKAGE)-$(VERSION)
+ mkdir ../$(PACKAGE)-$(VERSION)
+ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -)
+ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile )
+ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz )
+ rm -rf ../$(PACKAGE)-$(VERSION)
+ $(MAKE) printinfo
+
+dist-upload: dist
+ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@linuxtogo.org:/media/data/projects/gpe/source/
+
+dist-prep:
+ipkg-prep:
+install-mo:
+# empty, can be filled in Makefile.translation
+
+install: install-program install-mo
+
+clean-dist:
+ rm -rf familiar/dist familiar/dist.list
+
+clean: clean-dist
+
+check-source:
+ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi
+
+ipkg: check-source ipkg-prep clean
+ rm -rf familiar/dist
+ mkdir -p familiar/dist/CONTROL
+ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control
+ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi
+ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi
+ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi
+ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi
+ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi
+ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program
+ rm -rf familiar/dist.list
+ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list
+ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi
+ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch
+ rm -rf familiar/dist familiar/dist.list
+ $(MAKE) printinfo
+
+dpkg: dist
+ mkdir -p $(DEB_PATH)
+ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz )
+ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian
+ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done
+
+CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
+printinfo:
+ @printf '-------------------------------------------------------------------------------\n'
+ @printf "If this becomes a package release, please add a CVS tag.\n"
+ @printf "You can use 'make tag' for that, it will execute\n"
+ @printf " cvs tag %s\n" $(CVSTAG)
+ @printf "Please upload a tarball (created with 'make dist') to\n"
+ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n"
+ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n"
+ @printf "You can use 'make dist-upload' to do that.\n"
+ @printf "You are currently known as USER %s.\n" $(USER)
+ @printf '-------------------------------------------------------------------------------\n'
+
+tag: check-source
+ cvs tag $(CVSTAG)
+
+retag: check-source
+ cvs tag -F $(CVSTAG)
+
+source: tag dist-upload
+
+%.pc: %.pc.in
+ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@
+
+.c.o:;
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@
diff --git a/packages/libxsettings/files/Makefile.translation b/packages/libxsettings/files/Makefile.translation
new file mode 100644
index 0000000000..1ca7d648fd
--- /dev/null
+++ b/packages/libxsettings/files/Makefile.translation
@@ -0,0 +1,107 @@
+.SUFFIXES: .mo .po .pot .po8
+
+CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi`
+
+# use ipkg-build or ipkg-deb-build
+IPKG_BUILD := ipkg-build
+
+TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint
+
+ifeq ($(DIR_PO),)
+DIR_PO := po
+endif
+
+ifeq ($(BINPACKAGE),)
+BINPACKAGE := $(PACKAGE)
+endif
+
+mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS))
+po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
+
+ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present)
+desktop-files += $(PACKAGE).desktop
+endif
+
+ifneq ($(EXTRA_DESKTOPS),)
+desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS))
+endif
+
+all-mo: $(mo-files)
+
+all-desktop: $(desktop-files)
+
+install-mo: all-mo
+ if [ "$(ENABLE_NLS)" != "no" ]; then \
+ if [ "x$(LINGUAS)" != "x" ]; then \
+ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \
+ fi; \
+ fi;
+
+.po8.mo:;
+ if [ "$(ENABLE_NLS)" != "no" ]; then \
+ msgfmt -o $@ $<; \
+ fi;
+
+.po.po8:;
+ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@
+
+update-po: $(po-files) extract-po
+
+dist-prep: update-po freshen-po
+# empty
+
+ifeq ($(CVSBUILD),yes)
+ipkg-prep: freshen-po
+# empty
+endif
+
+extract-po:
+ mkdir -p $(DIR_PO)
+ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi )
+ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi
+
+clean: clean-po clean-dist-translation
+
+clean-po:
+ rm -rf $(DIR_PO)/*.mo
+ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done
+
+%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS))
+ intltool-merge -u -d $(DIR_PO) $< $@
+
+freshen-po:
+ rm -rf tmp-po
+ mkdir tmp-po
+ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done
+ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done
+ rm -rf tmp-po
+
+# ------------------------------------------------------------------------
+
+MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-)
+
+ifndef BUILD
+BUILD = ../build
+endif
+
+transdist := familiar/dist-translation
+templates := $(BUILD)/familiar
+ipkglist := translation-ipkgs.txt
+
+clean-dist-translation:
+ rm -rf $(transdist) $(ipkglist)
+
+real-translation-package: all-mo
+ rm -rf $(transdist) $(ipkglist)
+ for LINGUA in $(LINGUAS); do \
+ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \
+ mkdir -p $(transdist)/$$i/CONTROL; \
+ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \
+ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \
+ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \
+ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \
+ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \
+ done
+
+translation-ipkg:
+ make PREFIX=/usr real-translation-package
diff --git a/packages/libxsettings/files/libxsettings-svn-makefile-fix.patch b/packages/libxsettings/files/libxsettings-svn-makefile-fix.patch
new file mode 100644
index 0000000000..52d15a6e14
--- /dev/null
+++ b/packages/libxsettings/files/libxsettings-svn-makefile-fix.patch
@@ -0,0 +1,20 @@
+--- libxsettings/Makefile.orig 2007-02-10 00:45:33.452674544 +0200
++++ libxsettings/Makefile 2007-02-10 00:52:09.003215686 +0200
+@@ -1,7 +1,7 @@
+ PREFIX = /usr/local
+ PACKAGE = libxsettings
+ DEBUG = no
+-CVSBUILD = yes
++CVSBUILD = no
+ VERSION = 0.11
+
+ .SUFFIXES: .os
+@@ -20,7 +20,7 @@
+ ifeq ($(CVSBUILD),yes)
+ BUILD = ../build
+ else
+-BUILD = build
++BUILD = ..
+ endif
+
+ .c.os:;
diff --git a/packages/libxsettings/libxsettings_svn.bb b/packages/libxsettings/libxsettings_svn.bb
new file mode 100644
index 0000000000..dd1e7fcadf
--- /dev/null
+++ b/packages/libxsettings/libxsettings_svn.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "Common code for XSETTINGS"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+LICENSE = "BSD-X"
+DEPENDS = "virtual/libx11"
+PV = "0.11+svn${SRCDATE}"
+PR = "r0"
+
+inherit gpe
+
+SRC_URI = "${GPE_SVN} \
+ file://libxsettings-svn-makefile-fix.patch;patch=1 \
+ file://Makefile.dpkg_ipkg \
+ file://Makefile.translation"
+
+S = "${WORKDIR}/${PN}"
+
+do_install () {
+ gpe_do_install
+ oe_runmake PREFIX=${prefix} DESTDIR=${D} install-devel
+}
+do_stage () {
+ oe_libinstall -so libXsettings ${STAGING_LIBDIR}
+ mkdir -p ${STAGING_INCDIR}/gpe
+ for h in ${headers}; do
+ install -m 0644 ${S}/$h ${STAGING_INCDIR}/$h
+ done
+}
+
+headers = "xsettings-common.h"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/libxslt/files/.mtn2git_empty b/packages/libxslt/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libxslt/files/.mtn2git_empty
diff --git a/packages/libxslt/libxslt-1.1.17/destdir.patch b/packages/libxslt/files/destdir.patch
index 8df1b206bc..8df1b206bc 100644
--- a/packages/libxslt/libxslt-1.1.17/destdir.patch
+++ b/packages/libxslt/files/destdir.patch
diff --git a/packages/libxslt/libxslt-native_1.1.17.bb b/packages/libxslt/libxslt-native_1.1.17.bb
new file mode 100644
index 0000000000..6134b2bf57
--- /dev/null
+++ b/packages/libxslt/libxslt-native_1.1.17.bb
@@ -0,0 +1,4 @@
+require libxslt_${PV}.bb
+inherit native
+
+DEPENDS = "libxml2-native (>=2.6.25)"
diff --git a/packages/libxslt/libxslt_1.1.17.bb b/packages/libxslt/libxslt_1.1.17.bb
index 9c59407ebf..7abd2c30b6 100644
--- a/packages/libxslt/libxslt_1.1.17.bb
+++ b/packages/libxslt/libxslt_1.1.17.bb
@@ -5,7 +5,8 @@ DEPENDS = "libxml2"
LICENSE = "MIT"
PR = "r2"
-SRC_URI = "ftp://xmlsoft.org/libxml2/libxslt-${PV}.tar.gz"
+SRC_URI = "ftp://xmlsoft.org/libxml2/libxslt-${PV}.tar.gz \
+ file://destdir.patch;patch=1"
S = "${WORKDIR}/libxslt-${PV}"
inherit autotools pkgconfig
diff --git a/packages/lighttpd/1.4.13/configure.in.patch b/packages/lighttpd/1.4.13/configure.in.patch
deleted file mode 100644
index f4db64d4fe..0000000000
--- a/packages/lighttpd/1.4.13/configure.in.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Index: lighttpd-1.4.13-r0/lighttpd-1.4.13/configure.in
-===================================================================
---- lighttpd-1.4.13-r0.orig/lighttpd-1.4.13/configure.in 2006-10-09 18:19:34.000000000 +0200
-+++ lighttpd-1.4.13-r0/lighttpd-1.4.13/configure.in 2006-12-07 22:31:52.000000000 +0100
-@@ -250,23 +250,9 @@
- [WITH_PCRE=$withval],[WITH_PCRE=yes])
- AC_MSG_RESULT([$WITH_PCRE])
-
--if test "x$cross_compiling" = xno -a "$WITH_PCRE" != "no"; then
-- AC_PATH_PROG(PCRECONFIG, pcre-config)
-
-- if test x"$PCRECONFIG" != x; then
-- PCRE_LIB=`$PCRECONFIG --libs`
-- CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
-- OLDLIBS="$LIBS"
-- LIBS="$LIBS $PCRE_LIB"
-- AC_CHECK_LIB(pcre, pcre_compile, [
-- AC_CHECK_HEADERS([pcre.h], [
- AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
- AC_DEFINE([HAVE_PCRE_H], [1])
-- ])
-- ])
-- LIBS="$OLDLIBS"
-- fi
--fi
-
- AC_SUBST(PCRE_LIB)
-
diff --git a/packages/lighttpd/lighttpd/.mtn2git_empty b/packages/lighttpd/lighttpd/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/lighttpd/lighttpd/.mtn2git_empty
diff --git a/packages/lighttpd/lighttpd/configure.in.patch b/packages/lighttpd/lighttpd/configure.in.patch
new file mode 100644
index 0000000000..3387fe5635
--- /dev/null
+++ b/packages/lighttpd/lighttpd/configure.in.patch
@@ -0,0 +1,34 @@
+Index: lighttpd-1.4.13/configure.in
+===================================================================
+--- lighttpd-1.4.13.orig/configure.in 2006-10-09 18:19:34.000000000 +0200
++++ lighttpd-1.4.13/configure.in 2007-02-13 18:42:34.000000000 +0100
+@@ -250,23 +250,23 @@
+ [WITH_PCRE=$withval],[WITH_PCRE=yes])
+ AC_MSG_RESULT([$WITH_PCRE])
+
+-if test "x$cross_compiling" = xno -a "$WITH_PCRE" != "no"; then
++#if test "x$cross_compiling" = xno -a "$WITH_PCRE" != "no"; then
+ AC_PATH_PROG(PCRECONFIG, pcre-config)
+
+- if test x"$PCRECONFIG" != x; then
++# if test x"$PCRECONFIG" != x; then
+ PCRE_LIB=`$PCRECONFIG --libs`
+ CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
+ OLDLIBS="$LIBS"
+ LIBS="$LIBS $PCRE_LIB"
+- AC_CHECK_LIB(pcre, pcre_compile, [
++# AC_CHECK_LIB(pcre, pcre_compile, [
+ AC_CHECK_HEADERS([pcre.h], [
+ AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
+ AC_DEFINE([HAVE_PCRE_H], [1])
+ ])
+- ])
++# ])
+ LIBS="$OLDLIBS"
+- fi
+-fi
++# fi
++#fi
+
+ AC_SUBST(PCRE_LIB)
+
diff --git a/packages/lighttpd/lighttpd/index.html b/packages/lighttpd/lighttpd/index.html
new file mode 100644
index 0000000000..cd25bf17b3
--- /dev/null
+++ b/packages/lighttpd/lighttpd/index.html
@@ -0,0 +1 @@
+<html><body><h1>It works!</h1></body></html> \ No newline at end of file
diff --git a/packages/lighttpd/lighttpd/lighttpd b/packages/lighttpd/lighttpd/lighttpd
new file mode 100644
index 0000000000..572381499a
--- /dev/null
+++ b/packages/lighttpd/lighttpd/lighttpd
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin
+DAEMON=/usr/sbin/lighttpd
+NAME=lighttpd
+DESC="Lighttpd Web Server"
+
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start -x "$DAEMON" -- -f /etc/lighttpd.conf
+ echo "$NAME."
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop -x "$DAEMON"
+ echo "$NAME."
+ ;;
+ restart|force-reload)
+ echo -n "Restarting $DESC: "
+ start-stop-daemon -K -x "$DAEMON"
+ sleep 1
+ start-stop-daemon -S -x "$DAEMON"
+ echo "$NAME."
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/packages/lighttpd/lighttpd/lighttpd.conf b/packages/lighttpd/lighttpd/lighttpd.conf
new file mode 100644
index 0000000000..5642e3175f
--- /dev/null
+++ b/packages/lighttpd/lighttpd/lighttpd.conf
@@ -0,0 +1,328 @@
+# lighttpd configuration file
+#
+# use it as a base for lighttpd 1.0.0 and above
+#
+# $Id: lighttpd.conf,v 1.7 2004/11/03 22:26:05 weigon Exp $
+
+############ Options you really have to take care of ####################
+
+## modules to load
+# at least mod_access and mod_accesslog should be loaded
+# all other module should only be loaded if really neccesary
+# - saves some time
+# - saves memory
+server.modules = (
+# "mod_rewrite",
+# "mod_redirect",
+# "mod_alias",
+ "mod_access",
+# "mod_cml",
+# "mod_trigger_b4_dl",
+# "mod_auth",
+# "mod_status",
+# "mod_setenv",
+# "mod_fastcgi",
+# "mod_proxy",
+# "mod_simple_vhost",
+# "mod_evhost",
+# "mod_userdir",
+# "mod_cgi",
+# "mod_compress",
+# "mod_ssi",
+# "mod_usertrack",
+# "mod_expire",
+# "mod_secdownload",
+# "mod_rrdtool",
+# "mod_webdav",
+ "mod_accesslog" )
+
+## a static document-root, for virtual-hosting take look at the
+## server.virtual-* options
+server.document-root = "/www/pages/"
+
+## where to send error-messages to
+server.errorlog = "/www/logs/lighttpd.error.log"
+
+# files to check for if .../ is requested
+index-file.names = ( "index.php", "index.html",
+ "index.htm", "default.htm" )
+
+## set the event-handler (read the performance section in the manual)
+# server.event-handler = "freebsd-kqueue" # needed on OS X
+
+# mimetype mapping
+mimetype.assign = (
+ ".pdf" => "application/pdf",
+ ".sig" => "application/pgp-signature",
+ ".spl" => "application/futuresplash",
+ ".class" => "application/octet-stream",
+ ".ps" => "application/postscript",
+ ".torrent" => "application/x-bittorrent",
+ ".dvi" => "application/x-dvi",
+ ".gz" => "application/x-gzip",
+ ".pac" => "application/x-ns-proxy-autoconfig",
+ ".swf" => "application/x-shockwave-flash",
+ ".tar.gz" => "application/x-tgz",
+ ".tgz" => "application/x-tgz",
+ ".tar" => "application/x-tar",
+ ".zip" => "application/zip",
+ ".mp3" => "audio/mpeg",
+ ".m3u" => "audio/x-mpegurl",
+ ".wma" => "audio/x-ms-wma",
+ ".wax" => "audio/x-ms-wax",
+ ".ogg" => "application/ogg",
+ ".wav" => "audio/x-wav",
+ ".gif" => "image/gif",
+ ".jpg" => "image/jpeg",
+ ".jpeg" => "image/jpeg",
+ ".png" => "image/png",
+ ".xbm" => "image/x-xbitmap",
+ ".xpm" => "image/x-xpixmap",
+ ".xwd" => "image/x-xwindowdump",
+ ".css" => "text/css",
+ ".html" => "text/html",
+ ".htm" => "text/html",
+ ".js" => "text/javascript",
+ ".asc" => "text/plain",
+ ".c" => "text/plain",
+ ".cpp" => "text/plain",
+ ".log" => "text/plain",
+ ".conf" => "text/plain",
+ ".text" => "text/plain",
+ ".txt" => "text/plain",
+ ".dtd" => "text/xml",
+ ".xml" => "text/xml",
+ ".mpeg" => "video/mpeg",
+ ".mpg" => "video/mpeg",
+ ".mov" => "video/quicktime",
+ ".qt" => "video/quicktime",
+ ".avi" => "video/x-msvideo",
+ ".asf" => "video/x-ms-asf",
+ ".asx" => "video/x-ms-asf",
+ ".wmv" => "video/x-ms-wmv",
+ ".bz2" => "application/x-bzip",
+ ".tbz" => "application/x-bzip-compressed-tar",
+ ".tar.bz2" => "application/x-bzip-compressed-tar"
+ )
+
+# Use the "Content-Type" extended attribute to obtain mime type if possible
+#mimetype.use-xattr = "enable"
+
+
+## send a different Server: header
+## be nice and keep it at lighttpd
+# server.tag = "lighttpd"
+
+#### accesslog module
+accesslog.filename = "/www/logs/access.log"
+debug.log-request-handling = "enable"
+
+
+
+
+## deny access the file-extensions
+#
+# ~ is for backupfiles from vi, emacs, joe, ...
+# .inc is often used for code includes which should in general not be part
+# of the document-root
+url.access-deny = ( "~", ".inc" )
+
+$HTTP["url"] =~ "\.pdf$" {
+ server.range-requests = "disable"
+}
+
+##
+# which extensions should not be handle via static-file transfer
+#
+# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
+static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
+
+######### Options that are good to be but not neccesary to be changed #######
+
+## bind to port (default: 80)
+#server.port = 81
+
+## bind to localhost (default: all interfaces)
+#server.bind = "grisu.home.kneschke.de"
+
+## error-handler for status 404
+#server.error-handler-404 = "/error-handler.html"
+#server.error-handler-404 = "/error-handler.php"
+
+## to help the rc.scripts
+#server.pid-file = "/var/run/lighttpd.pid"
+
+
+###### virtual hosts
+##
+## If you want name-based virtual hosting add the next three settings and load
+## mod_simple_vhost
+##
+## document-root =
+## virtual-server-root + virtual-server-default-host + virtual-server-docroot
+## or
+## virtual-server-root + http-host + virtual-server-docroot
+##
+#simple-vhost.server-root = "/home/weigon/wwwroot/servers/"
+#simple-vhost.default-host = "grisu.home.kneschke.de"
+#simple-vhost.document-root = "/pages/"
+
+
+##
+## Format: <errorfile-prefix><status-code>.html
+## -> ..../status-404.html for 'File not found'
+#server.errorfile-prefix = "/home/weigon/projects/lighttpd/doc/status-"
+
+## virtual directory listings
+#dir-listing.activate = "enable"
+
+## enable debugging
+#debug.log-request-header = "enable"
+#debug.log-response-header = "enable"
+#debug.log-request-handling = "enable"
+#debug.log-file-not-found = "enable"
+
+### only root can use these options
+#
+# chroot() to directory (default: no chroot() )
+#server.chroot = "/"
+
+## change uid to <uid> (default: don't care)
+#server.username = "wwwrun"
+
+## change uid to <uid> (default: don't care)
+#server.groupname = "wwwrun"
+
+#### compress module
+#compress.cache-dir = "/tmp/lighttpd/cache/compress/"
+#compress.filetype = ("text/plain", "text/html")
+
+#### proxy module
+## read proxy.txt for more info
+#proxy.server = ( ".php" =>
+# ( "localhost" =>
+# (
+# "host" => "192.168.0.101",
+# "port" => 80
+# )
+# )
+# )
+
+#### fastcgi module
+## read fastcgi.txt for more info
+## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
+#fastcgi.server = ( ".php" =>
+# ( "localhost" =>
+# (
+# "socket" => "/tmp/php-fastcgi.socket",
+# "bin-path" => "/usr/local/bin/php"
+# )
+# )
+# )
+
+#### CGI module
+#cgi.assign = ( ".pl" => "/usr/bin/perl",
+# ".cgi" => "/usr/bin/perl" )
+#
+
+#### SSL engine
+#ssl.engine = "enable"
+#ssl.pemfile = "server.pem"
+
+#### status module
+#status.status-url = "/server-status"
+#status.config-url = "/server-config"
+
+#### auth module
+## read authentication.txt for more info
+#auth.backend = "plain"
+#auth.backend.plain.userfile = "lighttpd.user"
+#auth.backend.plain.groupfile = "lighttpd.group"
+
+#auth.backend.ldap.hostname = "localhost"
+#auth.backend.ldap.base-dn = "dc=my-domain,dc=com"
+#auth.backend.ldap.filter = "(uid=$)"
+
+#auth.require = ( "/server-status" =>
+# (
+# "method" => "digest",
+# "realm" => "download archiv",
+# "require" => "user=jan"
+# ),
+# "/server-config" =>
+# (
+# "method" => "digest",
+# "realm" => "download archiv",
+# "require" => "valid-user"
+# )
+# )
+
+#### url handling modules (rewrite, redirect, access)
+#url.rewrite = ( "^/$" => "/server-status" )
+#url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
+
+#### both rewrite/redirect support back reference to regex conditional using %n
+#$HTTP["host"] =~ "^www\.(.*)" {
+# url.redirect = ( "^/(.*)" => "http://%1/$1" )
+#}
+
+#
+# define a pattern for the host url finding
+# %% => % sign
+# %0 => domain name + tld
+# %1 => tld
+# %2 => domain name without tld
+# %3 => subdomain 1 name
+# %4 => subdomain 2 name
+#
+#evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/"
+
+#### expire module
+#expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")
+
+#### ssi
+#ssi.extension = ( ".shtml" )
+
+#### rrdtool
+#rrdtool.binary = "/usr/bin/rrdtool"
+#rrdtool.db-name = "/var/www/lighttpd.rrd"
+
+#### setenv
+#setenv.add-request-header = ( "TRAV_ENV" => "mysql://user@host/db" )
+#setenv.add-response-header = ( "X-Secret-Message" => "42" )
+
+## for mod_trigger_b4_dl
+# trigger-before-download.gdbm-filename = "/home/weigon/testbase/trigger.db"
+# trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" )
+# trigger-before-download.trigger-url = "^/trigger/"
+# trigger-before-download.download-url = "^/download/"
+# trigger-before-download.deny-url = "http://127.0.0.1/index.html"
+# trigger-before-download.trigger-timeout = 10
+
+## for mod_cml
+## don't forget to add index.cml to server.indexfiles
+# cml.extension = ".cml"
+# cml.memcache-hosts = ( "127.0.0.1:11211" )
+
+#### variable usage:
+## variable name without "." is auto prefixed by "var." and becomes "var.bar"
+#bar = 1
+#var.mystring = "foo"
+
+## integer add
+#bar += 1
+## string concat, with integer cast as string, result: "www.foo1.com"
+#server.name = "www." + mystring + var.bar + ".com"
+## array merge
+#index-file.names = (foo + ".php") + index-file.names
+#index-file.names += (foo + ".php")
+
+#### include
+#include /etc/lighttpd/lighttpd-inc.conf
+## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"
+#include "lighttpd-inc.conf"
+
+#### include_shell
+#include_shell "echo var.a=1"
+## the above is same as:
+#var.a=1
diff --git a/packages/lighttpd/1.4.13/src-server.c.patch b/packages/lighttpd/lighttpd/src-server.c.patch
index 6ca0c9ea40..6ca0c9ea40 100644
--- a/packages/lighttpd/1.4.13/src-server.c.patch
+++ b/packages/lighttpd/lighttpd/src-server.c.patch
diff --git a/packages/lighttpd/lighttpd_1.4.13.bb b/packages/lighttpd/lighttpd_1.4.13.bb
index 53aa9ff37f..504a129db8 100644
--- a/packages/lighttpd/lighttpd_1.4.13.bb
+++ b/packages/lighttpd/lighttpd_1.4.13.bb
@@ -1,28 +1,41 @@
DESCRIPTION = "Web server"
SECTION = "net"
-#DEPENDS = "libpcre openssl"
+DEPENDS = "sqlite3 libpcre libxml2"
LICENSE = "BSD"
-PR = "r0"
+PR = "r5"
SRC_URI = "http://www.lighttpd.net/download/lighttpd-1.4.13.tar.gz \
-file://${PV}/configure.in.patch;patch=1;pnum=2 file://${PV}/src-server.c.patch;patch=1;pnum=1"
+ file://configure.in.patch;patch=1 \
+ file://src-server.c.patch;patch=1 \
+ file://index.html \
+ file://lighttpd.conf \
+ file://lighttpd"
EXTRA_OECONF="--without-bzip2 \
--without-ldap \
--without-lua \
--without-memcache \
- --without-mysql \
- --without-pcre \
+ --with-pcre \
+ --with-webdav-props \
+ --with-webdav-locks \
--without-openssl \
- --without-webdav-locks \
- --without-webdav-props \
--disable-nls \
--disable-static"
-inherit autotools pkgconfig
+inherit autotools pkgconfig update-rc.d
+
+INITSCRIPT_NAME = "lighttpd"
+INITSCRIPT_PARAMS = "defaults 70"
+
+do_install_append() {
+ install -d ${D}${sysconfdir}/init.d ${D}/www/logs ${D}/www/pages/dav ${D}/www/var
+ install -m 0755 ${WORKDIR}/lighttpd ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/lighttpd.conf ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/index.html ${D}/www/pages/
+}
do_stage() {
autotools_stage_all
}
-FILES_${PN} += "${libdir}/mod_*.so"
+FILES_${PN} += "${libdir}/mod_*.so ${sysconfdir} /www"
diff --git a/packages/links/links-x11_2.0+2.1pre26.bb b/packages/links/links-x11_2.0+2.1pre26.bb
index c026ca7e02..9ee70d9ad4 100644
--- a/packages/links/links-x11_2.0+2.1pre26.bb
+++ b/packages/links/links-x11_2.0+2.1pre26.bb
@@ -2,7 +2,8 @@ require links.inc
DEPENDS += "virtual/libx11"
RCONFLICTS = "links"
-PR = "r0"
+PR = "r1"
+
SRC_URI += " file://links2.desktop \
http://www.xora.org.uk/oe/links2.png"
diff --git a/packages/links/links_2.0+2.1pre26.bb b/packages/links/links_2.0+2.1pre26.bb
index 6fcf8cef84..c46a64f380 100644
--- a/packages/links/links_2.0+2.1pre26.bb
+++ b/packages/links/links_2.0+2.1pre26.bb
@@ -1,8 +1,8 @@
require links.inc
DEPENDS += "gpm"
-RCONFLICTS="links-x11"
-PR = "r0"
+RCONFLICTS = "links-x11"
+PR = "r1"
EXTRA_OECONF = "--enable-javascript --with-libfl --enable-graphics \
--with-ssl=${STAGING_LIBDIR}/.. --with-libjpeg \
diff --git a/packages/linphone/linphone_1.6.0.bb b/packages/linphone/linphone_1.6.0.bb
new file mode 100644
index 0000000000..563f21440e
--- /dev/null
+++ b/packages/linphone/linphone_1.6.0.bb
@@ -0,0 +1,69 @@
+DESCRIPTION = "SIP-based IP phone (console edition)"
+HOMEPAGE = "http://www.linphone.org/?lang=us"
+SECTION = "x11/utils"
+LICENSE = "GPLv2"
+
+DEPENDS = "intltool libosip2 speex libogg alsa-lib readline"
+DEPENDS_${PN} = "liblinphone"
+DEPENDS_${PN}c = "liblinphone readline"
+DEPENDS_liblinphone = "libquickstream libmediastreamer libortp libosip2"
+DEPENDS_libquickstream = "speex libmediastreamer alsa-lib"
+DEPENDS_libmediastreamer = "speex libogg alsa-lib libortp"
+
+RDEPENDS_${PN} = "liblinphone"
+RDEPENDS_${PN}c = "liblinphone readline"
+RDEPENDS_liblinphone = "libquickstream libmediastreamer libortp libosip2"
+RDEPENDS_libquickstream = "speex libmediastreamer libasound"
+RDEPENDS_libmediastreamer = "speex libogg libasound libortp"
+
+PROVIDES = "linphone linphonec liblinphone"
+
+PR = "r2"
+
+SRC_URI = "http://download.savannah.nongnu.org/releases/linphone/1.6.x/sources/linphone-${PV}.tar.gz \
+ http://download.devbase.at/voip/linphone-1.6.0-pl0.patch;patch=1"
+
+S = "${WORKDIR}/linphone-${PV}"
+
+inherit autotools pkgconfig
+
+export PKG_CONFIG=${STAGING_BINDIR_NATIVE}/pkg-config
+
+EXTRA_OECONF = "--disable-gtk-doc \
+ --without-ffmpeg --disable-video --without-sdl \
+ --enable-alsa \
+ --with-osip=${STAGING_DIR}/${HOST_SYS} \
+ --with-readline=${STAGING_DIR}/${HOST_SYS} \
+ --with-speex=${STAGING_DIR}/${HOST_SYS} \
+ --disable-truespeech --disable-manual \
+ --disable-gnome_ui"
+
+PARALLEL_MAKE = ""
+
+do_stage () {
+ install -d ${STAGING_DATADIR}/aclocal
+ oe_libinstall -a -so liblinphone ${STAGING_LIBDIR}
+ install -d ${STAGING_INCDIR}/linphone
+ install -m 0644 ${S}/coreapi/linphonecore.h ${STAGING_INCDIR}/linphone
+ install -m 0644 ${S}/coreapi/lpconfig.h ${STAGING_INCDIR}/linphone
+ oe_libinstall -a -so libmediastreamer ${STAGING_LIBDIR}
+ oe_libinstall -a -so libquickstream ${STAGING_LIBDIR}
+ install -d ${STAGING_INCDIR}/mediastreamer2
+ install -m 0644 ${S}/mediastreamer2/include/mediastreamer2/*.h ${STAGING_INCDIR}/mediastreamer2
+ install -d ${STAGING_INCDIR}/ortp
+ oe_libinstall -a -so libortp ${STAGING_LIBDIR}/
+ install -m 0644 ${S}/oRTP/include/ortp/*.h ${STAGING_INCDIR}/ortp/
+ autotools_stage_all
+}
+
+PACKAGES += "linphonec linphone-rings liblinphone libquickstream libmediastreamer libortp"
+
+FILES_${PN} = "${bindir}/linphone ${datadir}/pixmaps ${datadir}/applications ${datadir}/gnome/apps"
+FILES_${PN}c = "${bindir}/linphonec ${bindir}/sipomatic ${datadir}/sounds/linphone/ringback.wav"
+FILES_${PN}-rings = "${datadir}/sounds/linphone/rings"
+FILES_liblinphone = "${libdir}/liblinphone.so*"
+FILES_libquickstream = "${libdir}/libquickstream.so*"
+FILES_libmediastreamer = "${libdir}/libmediastreamer.so*"
+FILES_libortp = "${libdir}/libortp.so*"
+FILES_${PN}-dev = "${libdir}/*.a ${libdir}/*.la ${libdir}/pkgconfig ${includedir}"
+
diff --git a/packages/linux-input/files/serio.h b/packages/linux-input/files/serio.h
index 82670ed3f5..375f1e2716 100644
--- a/packages/linux-input/files/serio.h
+++ b/packages/linux-input/files/serio.h
@@ -55,6 +55,7 @@
#define SERIO_SNES232 0x26
#define SERIO_SEMTECH 0x27
#define SERIO_LKKBD 0x28
+#define SERIO_ELO 0x29
#define SERIO_ID 0xff00UL
#define SERIO_EXTRA 0xff0000UL
diff --git a/packages/linux-input/files/snes232.patch b/packages/linux-input/files/snes232.patch
index 95523e4569..349a4aac08 100644
--- a/packages/linux-input/files/snes232.patch
+++ b/packages/linux-input/files/snes232.patch
@@ -1,10 +1,10 @@
---- inputattach.c.old 2004-10-09 23:17:27.000000000 +0100
-+++ inputattach.c 2004-10-09 23:17:37.000000000 +0100
-@@ -369,6 +369,7 @@
- { "--ps2serkbd", "-ps2ser", B1200, CS8, SERIO_PS2SER, 0x00, 1, NULL },
- { "--twiddler", "-twid", B2400, CS8, SERIO_TWIDKBD, 0x00, 0, twiddler_init },
- { "--twiddler-joy", "-twidjoy", B2400, CS8, SERIO_TWIDJOY, 0x00, 0, twiddler_init },
-+{ "--snes232", "-pad", B115200, CS8, SERIO_SNES232, 0x00, 0, NULL },
- { "--dump", "-dump", B2400, CS8, 0, 0x00, 0, dump_init },
- { "", "", 0, 0 }
-
+--- inputattach.c~org 2007-02-24 10:13:34.000000000 -0500
++++ inputattach.c 2007-02-24 10:17:01.000000000 -0500
+@@ -372,6 +372,7 @@
+ { "--ps2serkbd", "-ps2ser", B1200, CS8, SERIO_PS2SER, 0, 0, 1, NULL },
+ { "--twiddler", "-twid", B2400, CS8, SERIO_TWIDKBD, 0, 0, 0, twiddler_init },
+ { "--twiddler-joy", "-twidjoy", B2400, CS8, SERIO_TWIDJOY, 0, 0, 0, twiddler_init },
++{ "--snes232", "-pad", B115200, CS8, SERIO_SNES232, 0x00, 0, 0, NULL },
+ { "--elotouch", "-elo", B9600, CS8 | CRTSCTS, SERIO_ELO, 0, 0, 0, NULL },
+ { "--elo4002", "-elo6b", B9600, CS8 | CRTSCTS, SERIO_ELO, 1, 0, 0, NULL },
+ { "--elo271-140", "-elo4b", B9600, CS8 | CRTSCTS, SERIO_ELO, 2, 0, 0, NULL },
diff --git a/packages/linux-libc-headers/linux-libc-headers-2.6.20/.mtn2git_empty b/packages/linux-libc-headers/linux-libc-headers-2.6.20/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux-libc-headers/linux-libc-headers-2.6.20/.mtn2git_empty
diff --git a/packages/linux-libc-headers/linux-libc-headers-2.6.20/procinfo.h b/packages/linux-libc-headers/linux-libc-headers-2.6.20/procinfo.h
new file mode 100644
index 0000000000..8cdf828af8
--- /dev/null
+++ b/packages/linux-libc-headers/linux-libc-headers-2.6.20/procinfo.h
@@ -0,0 +1,24 @@
+/*
+ * linux/include/asm-arm/procinfo.h
+ *
+ * Copyright (C) 1996-1999 Russell King
+ *
+ * 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.
+ */
+#ifndef __ASM_PROCINFO_H
+#define __ASM_PROCINFO_H
+
+#define HWCAP_SWP 1
+#define HWCAP_HALF 2
+#define HWCAP_THUMB 4
+#define HWCAP_26BIT 8 /* Play it safe */
+#define HWCAP_FAST_MULT 16
+#define HWCAP_FPA 32
+#define HWCAP_VFP 64
+#define HWCAP_EDSP 128
+#define HWCAP_JAVA 256
+#define HWCAP_IWMMXT 512
+#define HWCAP_CRUNCH 1024
+#endif
diff --git a/packages/linux-libc-headers/linux-libc-headers.inc b/packages/linux-libc-headers/linux-libc-headers.inc
new file mode 100644
index 0000000000..d9f4d687ee
--- /dev/null
+++ b/packages/linux-libc-headers/linux-libc-headers.inc
@@ -0,0 +1,3 @@
+DESCRIPTION = "Sanitized set of 2.6 kernel headers for the C library's use."
+SECTION = "devel"
+LICENSE = "GPL"
diff --git a/packages/linux-libc-headers/linux-libc-headers_2.6.11.1.bb b/packages/linux-libc-headers/linux-libc-headers_2.6.11.1.bb
index dadb0409cb..4ef77a0453 100644
--- a/packages/linux-libc-headers/linux-libc-headers_2.6.11.1.bb
+++ b/packages/linux-libc-headers/linux-libc-headers_2.6.11.1.bb
@@ -1,12 +1,11 @@
-SECTION = "devel"
-DESCRIPTION = "Sanitized set of 2.6 kernel headers for the C library's use."
+require linux-libc-headers.inc
+
HOMEPAGE = "http://ep09.pld-linux.org/~mmazur/linux-libc-headers/"
# license note from the package:
# Linux-libc-headers are derived from linux kernel headers. For license of a
# particular header, check it's content, and if copyright notice isn't present,
# standard linux kernel license applies.
# since we assume GPL for linux i think we can also assume it here
-LICENSE = "GPL"
INHIBIT_DEFAULT_DEPS = "1"
PR = "r2"
diff --git a/packages/linux-libc-headers/linux-libc-headers_2.6.15.99.bb b/packages/linux-libc-headers/linux-libc-headers_2.6.15.99.bb
index f9d15bcbc2..898bb120ae 100644
--- a/packages/linux-libc-headers/linux-libc-headers_2.6.15.99.bb
+++ b/packages/linux-libc-headers/linux-libc-headers_2.6.15.99.bb
@@ -1,5 +1,5 @@
-SECTION = "devel"
-DESCRIPTION = "Sanitized set of 2.6 kernel headers for the C library's use."
+require linux-libc-headers.inc
+
# This package is derived from the original linux-libc-headers at
# http://ep09.pld-linux.org/~mmazur/linux-libc-headers/
# More specifically, llh-2.6.12.0 was patched up to 2.6.16-rc6 with
@@ -11,7 +11,6 @@ DESCRIPTION = "Sanitized set of 2.6 kernel headers for the C library's use."
# particular header, check it's content, and if copyright notice isn't present,
# standard linux kernel license applies.
# since we assume GPL for linux i think we can also assume it here
-LICENSE = "GPL"
DEFAULT_PREFERENCE = "-1"
INHIBIT_DEFAULT_DEPS = "1"
PR = "r4"
diff --git a/packages/linux-libc-headers/linux-libc-headers_2.6.18+2.6.19-rc1.bb b/packages/linux-libc-headers/linux-libc-headers_2.6.18+2.6.19-rc1.bb
index 2e9e7eac82..df427ce582 100644
--- a/packages/linux-libc-headers/linux-libc-headers_2.6.18+2.6.19-rc1.bb
+++ b/packages/linux-libc-headers/linux-libc-headers_2.6.18+2.6.19-rc1.bb
@@ -1,9 +1,7 @@
-DESCRIPTION = "Sanitized set of 2.6 kernel headers for the C library's use."
-SECTION = "devel"
-LICENSE = "GPL"
+require linux-libc-headers.inc
+
DEFAULT_PREFERENCE = "-1"
INHIBIT_DEFAULT_DEPS = "1"
-PR = "r0"
SRC_URI = " \
${KERNELORG_MIRROR}/pub/linux/kernel/people/dwmw2/kernel-headers/snapshot/linux-kernel-headers-2.6.19-rc1.tar.bz2 \
@@ -56,3 +54,11 @@ do_stage () {
cp -pfLR ${S}${includedir}/asm-${ARCH} ${CROSS_DIR}/${TARGET_SYS}/include/asm
cp -pfLR ${S}${includedir}/asm-generic ${CROSS_DIR}/${TARGET_SYS}/include/
}
+
+do_stage_append_nylon () {
+ cp -pPR include/asm-${ARCH}/* ${STAGING_INCDIR}/asm/
+ cp -pPR include/asm-${ARCH}/* ${CROSS_DIR}/${TARGET_SYS}/include/asm/
+ cp -pPR include/linux/* ${STAGING_INCDIR}/linux/
+ cp -pPR include/linux/* ${CROSS_DIR}/${TARGET_SYS}/include/linux/
+}
+
diff --git a/packages/linux-libc-headers/linux-libc-headers_2.6.18.bb b/packages/linux-libc-headers/linux-libc-headers_2.6.18.bb
index 6767d7aac9..dc278dea14 100644
--- a/packages/linux-libc-headers/linux-libc-headers_2.6.18.bb
+++ b/packages/linux-libc-headers/linux-libc-headers_2.6.18.bb
@@ -1,6 +1,5 @@
-DESCRIPTION = "Sanitized set of 2.6 kernel headers for the C library's use."
-SECTION = "devel"
-LICENSE = "GPL"
+require linux-libc-headers.inc
+
INHIBIT_DEFAULT_DEPS = "1"
DEPENDS = "unifdef-native"
PR = "r1"
@@ -68,4 +67,18 @@ do_stage () {
cp -pfLR ${STAGE_TEMP}${includedir}/linux ${CROSS_DIR}/${TARGET_SYS}/include/
cp -pfLR ${STAGE_TEMP}${includedir}/asm ${CROSS_DIR}/${TARGET_SYS}/include/
cp -pfLR ${STAGE_TEMP}${includedir}/asm-generic ${CROSS_DIR}/${TARGET_SYS}/include/
+ # Add UTS_RELEASE to version.h. UTS_RELEASE was moved from version.h to
+ # utsrelease.h in order to avoid recompiling a kernel every time a localversion
+ # changed. Since the our headers are static and we're not compiling an
+ # actual kernel, re-adding UTS_RELEASE does't hurt, and it allows uclibc to
+ # compile with kernel headers that work with EABI on ARM
+ echo '#define UTS_RELEASE "2.6.18"' >> ${CROSS_DIR}/${TARGET_SYS}/include/linux/version.h
+}
+
+do_stage_append_nylon () {
+ cp -pPR include/asm-${ARCH}/* ${STAGING_INCDIR}/asm/
+ cp -pPR include/asm-${ARCH}/* ${CROSS_DIR}/${TARGET_SYS}/include/asm/
+ cp -pPR include/linux/* ${STAGING_INCDIR}/linux/
+ cp -pPR include/linux/* ${CROSS_DIR}/${TARGET_SYS}/include/linux/
}
+
diff --git a/packages/linux-libc-headers/linux-libc-headers_2.6.20.bb b/packages/linux-libc-headers/linux-libc-headers_2.6.20.bb
new file mode 100644
index 0000000000..457f16c1f7
--- /dev/null
+++ b/packages/linux-libc-headers/linux-libc-headers_2.6.20.bb
@@ -0,0 +1,71 @@
+require linux-libc-headers.inc
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEPENDS = "unifdef-native"
+PR = "r6"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://procinfo.h"
+
+S = "${WORKDIR}/linux-${PV}"
+
+set_arch() {
+ case ${TARGET_ARCH} in
+ alpha*) ARCH=alpha ;;
+ arm*) ARCH=arm ;;
+ cris*) ARCH=cris ;;
+ hppa*) ARCH=parisc ;;
+ i*86*) ARCH=i386 ;;
+ ia64*) ARCH=ia64 ;;
+ mips*) ARCH=mips ;;
+ m68k*) ARCH=m68k ;;
+ powerpc*) ARCH=powerpc ;;
+ s390*) ARCH=s390 ;;
+ sh*) ARCH=sh ;;
+ sparc64*) ARCH=sparc64 ;;
+ sparc*) ARCH=sparc ;;
+ x86_64*) ARCH=x86_64 ;;
+ esac
+}
+
+do_configure() {
+ set_arch
+ oe_runmake allnoconfig ARCH=$ARCH
+}
+
+do_compile () {
+}
+
+do_install() {
+ set_arch
+ oe_runmake headers_install INSTALL_HDR_PATH=${D}/usr ARCH=$ARCH
+}
+
+do_install_append_arm() {
+ cp ${WORKDIR}/procinfo.h ${D}${includedir}/asm/
+}
+
+STAGE_TEMP="${WORKDIR}/temp-staging"
+
+do_stage () {
+ set_arch
+ echo $ARCH
+ rm -rf ${STAGE_TEMP}
+ mkdir -p ${STAGE_TEMP}
+ oe_runmake headers_install INSTALL_HDR_PATH=${STAGE_TEMP}/usr ARCH=$ARCH
+ if [ "$ARCH" = "arm" ]; then
+ cp ${WORKDIR}/procinfo.h ${STAGE_TEMP}${includedir}/asm/
+ fi
+ install -d ${STAGING_INCDIR}
+ rm -rf ${STAGING_INCDIR}/linux ${STAGING_INCDIR}/asm ${STAGING_INCDIR}/asm-generic
+ cp -pfLR ${STAGE_TEMP}${includedir}/linux ${STAGING_INCDIR}/
+ cp -pfLR ${STAGE_TEMP}${includedir}/asm ${STAGING_INCDIR}/
+ cp -pfLR ${STAGE_TEMP}${includedir}/asm-generic ${STAGING_INCDIR}/
+ rm -rf ${CROSS_DIR}/${TARGET_SYS}/include/linux
+ rm -rf ${CROSS_DIR}/${TARGET_SYS}/include/asm
+ rm -rf ${CROSS_DIR}/${TARGET_SYS}/include/asm-generic
+ install -d ${CROSS_DIR}/${TARGET_SYS}/include
+ cp -pfLR ${STAGE_TEMP}${includedir}/linux ${CROSS_DIR}/${TARGET_SYS}/include/
+ cp -pfLR ${STAGE_TEMP}${includedir}/asm ${CROSS_DIR}/${TARGET_SYS}/include/
+ cp -pfLR ${STAGE_TEMP}${includedir}/asm-generic ${CROSS_DIR}/${TARGET_SYS}/include/
+}
diff --git a/packages/linux-libc-headers/linux-libc-headers_2.6.7.0.bb b/packages/linux-libc-headers/linux-libc-headers_2.6.7.0.bb
index 1b0296c494..b56900b9d6 100644
--- a/packages/linux-libc-headers/linux-libc-headers_2.6.7.0.bb
+++ b/packages/linux-libc-headers/linux-libc-headers_2.6.7.0.bb
@@ -1,8 +1,7 @@
-SECTION = "devel"
-DESCRIPTION = "Sanitized set of 2.6 kernel headers for the C library's use."
+require linux-libc-headers.inc
+
INHIBIT_DEFAULT_DEPS = "1"
PR = "r3"
-LICENSE = "GPL"
# NOTE: no need to package these headers, since the c library includes them.
PACKAGES = ""
diff --git a/packages/linux-libc-headers/linux-libc-headers_2.6.8.1.bb b/packages/linux-libc-headers/linux-libc-headers_2.6.8.1.bb
index 025eeb966d..1f36aa2e92 100644
--- a/packages/linux-libc-headers/linux-libc-headers_2.6.8.1.bb
+++ b/packages/linux-libc-headers/linux-libc-headers_2.6.8.1.bb
@@ -1,12 +1,11 @@
-SECTION = "devel"
-DESCRIPTION = "Sanitized set of 2.6 kernel headers for the C library's use."
+require linux-libc-headers.inc
+
HOMEPAGE = "http://ep09.pld-linux.org/~mmazur/linux-libc-headers/"
# license note from the package:
# Linux-libc-headers are derived from linux kernel headers. For license of a
# particular header, check it's content, and if copyright notice isn't present,
# standard linux kernel license applies.
# since we assume GPL for linux i think we can also assume it here
-LICENSE = "GPL"
INHIBIT_DEFAULT_DEPS = "1"
PR = "r7"
diff --git a/packages/linux/collie-kernels-2.4-embedix.bb b/packages/linux/collie-kernels-2.4-embedix.bb
index f53e86f6c4..022aca9ff8 100644
--- a/packages/linux/collie-kernels-2.4-embedix.bb
+++ b/packages/linux/collie-kernels-2.4-embedix.bb
@@ -6,7 +6,7 @@ PR = "r2"
COMPATIBLE_HOST = "arm.*-linux"
-DEPENDS = '${@base_conditional("DISTRO_TYPE", "debug", "openzaurus-sa", "collie-kernel-24-8 collie-kernel-32-0 collie-kernel-32-32 collie-kernel-40-24 collie-kernel-48-16 collie-kernel-58-6 collie-kernel-64-0",d)}'
+DEPENDS = '${@base_conditional("DISTRO_TYPE", "debug", "openzaurus-sa", "collie-kernel-64-0 collie-kernel-24-8 collie-kernel-32-0 collie-kernel-32-32 collie-kernel-40-24 collie-kernel-48-16 collie-kernel-58-6",d)}'
PACKAGES = ""
EXCLUDE_FROM_WORLD = "1"
diff --git a/packages/linux/compulab-pxa270-2.6.20/.mtn2git_empty b/packages/linux/compulab-pxa270-2.6.20/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/compulab-pxa270-2.6.20/.mtn2git_empty
diff --git a/packages/linux/compulab-pxa270-2.6.20/0001-gitignore.patch b/packages/linux/compulab-pxa270-2.6.20/0001-gitignore.patch
new file mode 100644
index 0000000000..a8003e09c9
--- /dev/null
+++ b/packages/linux/compulab-pxa270-2.6.20/0001-gitignore.patch
@@ -0,0 +1,31 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Cliff Brake <cbrake@happy.dev.bec-systems.com>
+Date: Fri Mar 16 23:15:39 2007 -0400
+Subject: [PATCH] gitignore
+
+add igonore files
+
+---
+
+ .gitignore | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+base 62d0cfcb27cf755cebdc93ca95dabc83608007cd
+last 4db3152d3aeabcd82479f5b9c40ff79aa3ff620a
+diff --git a/.gitignore b/.gitignore
+index 060a71d41ad7ccc3214065a182e6f67568420071..2ead940e09fc0c193104928a7e085d9f62a57f5f 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -45,3 +45,9 @@ series
+
+ # cscope files
+ cscope.*
++
++arch/arm/boot/Image
++arch/arm/boot/compressed/piggy.gz
++arch/arm/boot/zImage
++include/asm-arm/arch
++include/asm-arm/mach-types.h
+--
+1.4.4.4
+
diff --git a/packages/linux/compulab-pxa270-2.6.20/0002-cm-x270-base.patch b/packages/linux/compulab-pxa270-2.6.20/0002-cm-x270-base.patch
new file mode 100644
index 0000000000..4186bed0e3
--- /dev/null
+++ b/packages/linux/compulab-pxa270-2.6.20/0002-cm-x270-base.patch
@@ -0,0 +1,2161 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Cliff Brake <cbrake@happy.dev.bec-systems.com>
+Date: Fri Mar 16 23:15:47 2007 -0400
+Subject: [PATCH] cm x270 base
+
+Refreshed patch cm-x270-base.
+(Base: 62d0cfcb27cf755cebdc93ca95dabc83608007cd)
+(Last: 71b86b9caafa8efec4cd20370cb016f0975bc6e6)
+
+---
+
+ arch/arm/boot/compressed/head-xscale.S | 5
+ arch/arm/configs/cm_x270_defconfig | 1312 ++++++++++++++++++++++++++++++++
+ arch/arm/mach-pxa/Kconfig | 20
+ arch/arm/mach-pxa/Makefile | 1
+ arch/arm/mach-pxa/cm-x270.c | 663 ++++++++++++++++
+ include/asm-arm/arch-pxa/cm-x270.h | 72 ++
+ 6 files changed, 2073 insertions(+), 0 deletions(-)
+ create mode 100644 arch/arm/configs/cm_x270_defconfig
+ create mode 100644 arch/arm/mach-pxa/cm-x270.c
+ create mode 100644 include/asm-arm/arch-pxa/cm-x270.h
+
+base 4db3152d3aeabcd82479f5b9c40ff79aa3ff620a
+last 32abeb7a135309651fabb41ebfab98c9f6b67dbf
+diff --git a/arch/arm/boot/compressed/head-xscale.S b/arch/arm/boot/compressed/head-xscale.S
+index 73c5d9e0201c47fd48b6a79194e3cb0413d5147f..dc894592c9fbc3755e5ef47cddaeb47bc884de6a 100644
+--- a/arch/arm/boot/compressed/head-xscale.S
++++ b/arch/arm/boot/compressed/head-xscale.S
+@@ -53,3 +53,8 @@ __XScale_start:
+ str r1, [r0, #0x18]
+ #endif
+
++#if defined(CONFIG_MACH_ARMCORE)
++ mov r7, #(MACH_TYPE_ARMCORE & 0xFF00)
++ add r7, r7, #(MACH_TYPE_ARMCORE & 0xFF)
++#endif
++
+diff --git a/arch/arm/configs/cm_x270_defconfig b/arch/arm/configs/cm_x270_defconfig
+new file mode 100644
+index 0000000000000000000000000000000000000000..f87d617d3f0f92355a9c818d874c3a22492f45cc
+--- /dev/null
++++ b/arch/arm/configs/cm_x270_defconfig
+@@ -0,0 +1,1312 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.16
++# Tue Sep 26 10:07:36 2006
++#
++CONFIG_ARM=y
++CONFIG_MMU=y
++CONFIG_RWSEM_GENERIC_SPINLOCK=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
++CONFIG_ARCH_MTD_XIP=y
++
++#
++# Code maturity level options
++#
++CONFIG_EXPERIMENTAL=y
++CONFIG_BROKEN_ON_SMP=y
++CONFIG_INIT_ENV_ARG_LIMIT=32
++
++#
++# General setup
++#
++CONFIG_LOCALVERSION="-cm-x270"
++# CONFIG_LOCALVERSION_AUTO is not set
++CONFIG_SWAP=y
++CONFIG_SYSVIPC=y
++# CONFIG_POSIX_MQUEUE is not set
++# CONFIG_BSD_PROCESS_ACCT is not set
++CONFIG_SYSCTL=y
++# CONFIG_AUDIT is not set
++CONFIG_IKCONFIG=y
++CONFIG_IKCONFIG_PROC=y
++CONFIG_INITRAMFS_SOURCE=""
++CONFIG_UID16=y
++CONFIG_CC_OPTIMIZE_FOR_SIZE=y
++CONFIG_EMBEDDED=y
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_ALL is not set
++# 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=y
++CONFIG_OBSOLETE_MODPARM=y
++# CONFIG_MODVERSIONS is not set
++# CONFIG_MODULE_SRCVERSION_ALL is not set
++CONFIG_KMOD=y
++
++#
++# Block layer
++#
++
++#
++# 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"
++
++#
++# System Type
++#
++# 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_FOOTBRIDGE is not set
++# CONFIG_ARCH_INTEGRATOR is not set
++# CONFIG_ARCH_IOP3XX is not set
++# CONFIG_ARCH_IXP4XX is not set
++# CONFIG_ARCH_IXP2000 is not set
++# CONFIG_ARCH_L7200 is not set
++CONFIG_ARCH_PXA=y
++# 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_VERSATILE is not set
++# CONFIG_ARCH_REALVIEW is not set
++# CONFIG_ARCH_IMX is not set
++# CONFIG_ARCH_H720X is not set
++# CONFIG_ARCH_AAEC2000 is not set
++# CONFIG_ARCH_AT91RM9200 is not set
++
++#
++# Intel PXA2xx Implementations
++#
++# CONFIG_ARCH_LUBBOCK is not set
++# CONFIG_MACH_MAINSTONE is not set
++CONFIG_MACH_ARMCORE=y
++# CONFIG_ARCH_PXA_IDP is not set
++# CONFIG_PXA_SHARPSL is not set
++CONFIG_ARMCORE_REV12=y
++# CONFIG_ARMCORE_REV11 is not set
++CONFIG_PXA27x=y
++CONFIG_IWMMXT=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
++
++#
++# Processor Features
++#
++CONFIG_ARM_THUMB=y
++CONFIG_XSCALE_PMU=y
++CONFIG_DMABOUNCE=y
++
++#
++# Bus support
++#
++CONFIG_PCI=y
++CONFIG_PCI_HOST_ITE8152=y
++# CONFIG_PCI_LEGACY_PROC is not set
++# CONFIG_PCI_DEBUG is not set
++
++#
++# PCCARD (PCMCIA/CardBus) support
++#
++CONFIG_PCCARD=y
++# CONFIG_PCMCIA_DEBUG is not set
++CONFIG_PCMCIA=m
++# CONFIG_PCMCIA_LOAD_CIS is not set
++CONFIG_PCMCIA_IOCTL=y
++CONFIG_CARDBUS=y
++
++#
++# PC-card bridges
++#
++CONFIG_YENTA=m
++CONFIG_YENTA_O2=y
++CONFIG_YENTA_RICOH=y
++CONFIG_YENTA_TI=y
++CONFIG_YENTA_ENE_TUNE=y
++CONFIG_YENTA_TOSHIBA=y
++# CONFIG_PD6729 is not set
++# CONFIG_I82092 is not set
++CONFIG_PCMCIA_PXA2XX=m
++CONFIG_PCCARD_NONSTATIC=m
++
++#
++# Kernel Features
++#
++# CONFIG_PREEMPT is not set
++# CONFIG_NO_IDLE_HZ is not set
++# 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_LEDS=y
++CONFIG_LEDS_TIMER=y
++CONFIG_LEDS_CPU=y
++CONFIG_ALIGNMENT_TRAP=y
++
++#
++# Boot options
++#
++CONFIG_ZBOOT_ROM_TEXT=0x0
++CONFIG_ZBOOT_ROM_BSS=0x0
++CONFIG_CMDLINE=""
++# 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=y
++CONFIG_PM_LEGACY=y
++# CONFIG_PM_DEBUG 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 is not set
++CONFIG_UNIX=y
++# 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=y
++# 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_TUNNEL is not set
++CONFIG_INET_DIAG=y
++CONFIG_INET_TCP_DIAG=y
++# 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=m
++# CONFIG_IEEE80211_DEBUG is not set
++CONFIG_IEEE80211_CRYPT_WEP=m
++CONFIG_IEEE80211_CRYPT_CCMP=m
++# CONFIG_IEEE80211_CRYPT_TKIP is not set
++
++#
++# Device Drivers
++#
++
++#
++# Generic Driver Options
++#
++CONFIG_STANDALONE=y
++CONFIG_PREVENT_FIRMWARE_BUILD=y
++CONFIG_FW_LOADER=y
++# CONFIG_DEBUG_DRIVER is not set
++
++#
++# 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
++#
++
++#
++# 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=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=y
++CONFIG_BLK_DEV_RAM_COUNT=16
++CONFIG_BLK_DEV_RAM_SIZE=12000
++CONFIG_BLK_DEV_INITRD=y
++# CONFIG_CDROM_PKTCDVD is not set
++# CONFIG_ATA_OVER_ETH is not set
++CONFIG_ARMCORE_FLASH=y
++# CONFIG_ARMCORE_NOR is not set
++CONFIG_ARMCORE_NAND=y
++
++#
++# ATA/ATAPI/MFM/RLL support
++#
++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=m
++# CONFIG_BLK_DEV_IDETAPE is not set
++# CONFIG_BLK_DEV_IDEFLOPPY is not set
++CONFIG_BLK_DEV_IDESCSI=m
++# CONFIG_IDE_TASK_IOCTL is not set
++
++#
++# IDE chipset support/bugfixes
++#
++CONFIG_IDE_GENERIC=m
++# CONFIG_BLK_DEV_IDEPCI is not set
++# CONFIG_IDE_ARM is not set
++CONFIG_BLK_DEV_IDE_CM_X270=m
++# 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 is not set
++
++#
++# 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 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 is not set
++# 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_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 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_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_DC395x is not set
++# CONFIG_SCSI_DC390T is not set
++# CONFIG_SCSI_NSP32 is not set
++# CONFIG_SCSI_DEBUG is not set
++
++#
++# PCMCIA SCSI adapter support
++#
++# CONFIG_PCMCIA_AHA152X is not set
++# CONFIG_PCMCIA_FDOMAIN is not set
++# CONFIG_PCMCIA_NINJA_SCSI is not set
++# CONFIG_PCMCIA_QLOGIC is not set
++# CONFIG_PCMCIA_SYM53C500 is not set
++
++#
++# Multi-device support (RAID and LVM)
++#
++# CONFIG_MD 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 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_SMC91X is not set
++CONFIG_DM9000=y
++CONFIG_DM9000_NOEPROM=y
++
++#
++# 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=m
++# CONFIG_8139TOO_PIO is not set
++# CONFIG_8139TOO_TUNE_TWISTER is not set
++# CONFIG_8139TOO_8129 is not set
++# CONFIG_8139_OLD_RX_RESET 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=y
++
++#
++# Obsolete Wireless cards support (pre-802.11)
++#
++# CONFIG_STRIP is not set
++# CONFIG_PCMCIA_WAVELAN is not set
++# CONFIG_PCMCIA_NETWAVE is not set
++
++#
++# Wireless 802.11 Frequency Hopping cards support
++#
++# CONFIG_PCMCIA_RAYCS 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
++
++#
++# Wireless 802.11b Pcmcia/Cardbus cards support
++#
++# CONFIG_AIRO_CS is not set
++# CONFIG_PCMCIA_WL3501 is not set
++
++#
++# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
++#
++# CONFIG_PRISM54 is not set
++# CONFIG_HOSTAP is not set
++CONFIG_NET_WIRELESS=y
++
++#
++# PCMCIA network device support
++#
++CONFIG_NET_PCMCIA=y
++# CONFIG_PCMCIA_3C589 is not set
++# CONFIG_PCMCIA_3C574 is not set
++# CONFIG_PCMCIA_FMVJ18X is not set
++CONFIG_PCMCIA_PCNET=m
++# CONFIG_PCMCIA_NMCLAN is not set
++# CONFIG_PCMCIA_SMC91C92 is not set
++# CONFIG_PCMCIA_XIRC2PS is not set
++# CONFIG_PCMCIA_AXNET 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
++
++#
++# 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=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 is not set
++
++#
++# Hardware I/O ports
++#
++CONFIG_SERIO=y
++# CONFIG_SERIO_SERPORT 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_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_PXA=y
++CONFIG_SERIAL_PXA_CONSOLE=y
++CONFIG_SERIAL_CORE=y
++CONFIG_SERIAL_CORE_CONSOLE=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_NVRAM is not set
++# CONFIG_RTC 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
++
++#
++# 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
++
++#
++# TPM devices
++#
++# CONFIG_TCG_TPM is not set
++# CONFIG_TELCLOCK is not set
++CONFIG_EMV3020_RTC=y
++
++#
++# 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 is not set
++# CONFIG_HWMON_VID is not set
++
++#
++# Misc devices
++#
++
++#
++# Multimedia Capabilities Port drivers
++#
++CONFIG_UCB1400=m
++CONFIG_UCB1400_TS=m
++
++#
++# 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_ASILIANT is not set
++# CONFIG_FB_IMSTT is not set
++# CONFIG_FB_S1D13XXX is not set
++# CONFIG_FB_NVIDIA is not set
++# CONFIG_FB_RIVA 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_TRIDENT is not set
++CONFIG_FB_PXA=y
++# CONFIG_FB_PXA_PARAMETERS is not set
++CONFIG_FB_MBX=m
++# 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_ROTATION is not set
++# CONFIG_FONTS is not set
++CONFIG_FONT_8x8=y
++CONFIG_FONT_8x16=y
++
++#
++# Logo configuration
++#
++CONFIG_LOGO=y
++CONFIG_LOGO_LINUX_MONO=y
++CONFIG_LOGO_LINUX_VGA16=y
++CONFIG_LOGO_LINUX_CLUT224=y
++# 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_SEQUENCER is not set
++CONFIG_SND_OSSEMUL=y
++CONFIG_SND_MIXER_OSS=m
++CONFIG_SND_PCM_OSS=m
++# CONFIG_SND_DYNAMIC_MINORS is not set
++CONFIG_SND_SUPPORT_OLD_API=y
++# CONFIG_SND_VERBOSE_PRINTK is not set
++# CONFIG_SND_DEBUG is not set
++
++#
++# Generic devices
++#
++CONFIG_SND_AC97_CODEC=m
++CONFIG_SND_AC97_BUS=m
++# 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_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_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_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
++#
++CONFIG_SND_PXA2XX_PCM=m
++CONFIG_SND_PXA2XX_AC97=m
++
++#
++# USB devices
++#
++# CONFIG_SND_USB_AUDIO is not set
++
++#
++# PCMCIA devices
++#
++
++#
++# 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=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 is not set
++# CONFIG_USB_ISP116X_HCD is not set
++CONFIG_USB_OHCI_HCD=y
++# CONFIG_USB_OHCI_BIG_ENDIAN is not set
++CONFIG_USB_OHCI_LITTLE_ENDIAN=y
++# CONFIG_USB_UHCI_HCD is not set
++# CONFIG_USB_SL811_HCD is not set
++
++#
++# USB Device Class drivers
++#
++# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
++# 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_ZD1201 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_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_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=m
++# CONFIG_MMC_DEBUG is not set
++CONFIG_MMC_BLOCK=m
++CONFIG_MMC_PXA=m
++
++#
++# 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 is not set
++# CONFIG_ROMFS_FS is not set
++CONFIG_INOTIFY=y
++# CONFIG_QUOTA is not set
++CONFIG_DNOTIFY=y
++# CONFIG_AUTOFS_FS is not set
++# CONFIG_AUTOFS4_FS is not set
++# 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_SYSFS=y
++CONFIG_TMPFS=y
++# 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 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_RPCSEC_GSS_KRB5 is not set
++# CONFIG_RPCSEC_GSS_SPKM3 is not set
++CONFIG_SMB_FS=y
++# 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
++# 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
++
++#
++# Profiling support
++#
++# CONFIG_PROFILING is not set
++
++#
++# Kernel hacking
++#
++# CONFIG_PRINTK_TIME is not set
++CONFIG_MAGIC_SYSRQ=y
++CONFIG_DEBUG_KERNEL=y
++CONFIG_LOG_BUF_SHIFT=17
++# CONFIG_DETECT_SOFTLOCKUP is not set
++# CONFIG_SCHEDSTATS is not set
++# CONFIG_DEBUG_SLAB is not set
++# CONFIG_DEBUG_MUTEXES is not set
++# CONFIG_DEBUG_SPINLOCK is not set
++# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
++# CONFIG_DEBUG_KOBJECT is not set
++# CONFIG_DEBUG_BUGVERBOSE is not set
++CONFIG_DEBUG_INFO=y
++# CONFIG_DEBUG_FS is not set
++# CONFIG_DEBUG_VM is not set
++CONFIG_FRAME_POINTER=y
++CONFIG_FORCED_INLINING=y
++# CONFIG_RCU_TORTURE_TEST is not set
++CONFIG_DEBUG_USER=y
++# CONFIG_DEBUG_WAITQ is not set
++CONFIG_DEBUG_ERRORS=y
++CONFIG_DEBUG_LL=y
++# CONFIG_DEBUG_ICEDCC is not set
++
++#
++# Security options
++#
++# CONFIG_KEYS is not set
++# CONFIG_SECURITY is not set
++
++#
++# Cryptographic options
++#
++CONFIG_CRYPTO=y
++# CONFIG_CRYPTO_HMAC is not set
++# CONFIG_CRYPTO_NULL is not set
++# CONFIG_CRYPTO_MD4 is not set
++# CONFIG_CRYPTO_MD5 is not set
++# 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_DES 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 is not set
++# CONFIG_CRYPTO_MICHAEL_MIC is not set
++# CONFIG_CRYPTO_CRC32C is not set
++# CONFIG_CRYPTO_TEST is not set
++
++#
++# Hardware crypto devices
++#
++
++#
++# Library routines
++#
++# CONFIG_CRC_CCITT is not set
++# CONFIG_CRC16 is not set
++CONFIG_CRC32=y
++# CONFIG_LIBCRC32C is not set
+diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
+index 5c0a10041cd17c1fc7c9ae97a442d266b4dd8c05..0fece09f16ca71297f278d8c6306ae74d2f10c03 100644
+--- a/arch/arm/mach-pxa/Kconfig
++++ b/arch/arm/mach-pxa/Kconfig
+@@ -1,5 +1,8 @@
+ if ARCH_PXA
+
++config CM_X270
++ bool
++
+ menu "Intel PXA2xx Implementations"
+
+ choice
+@@ -18,6 +21,12 @@ config MACH_MAINSTONE
+ bool "Intel HCDDBBVA0 Development Platform"
+ select PXA27x
+
++config MACH_ARMCORE
++ bool "CompuLab CM-X270 modules"
++ select PXA27x
++ select IWMMXT
++ select CM_X270
++
+ config ARCH_PXA_IDP
+ bool "Accelent Xscale IDP"
+ select PXA25x
+@@ -71,6 +80,17 @@ endchoice
+
+ endif
+
++if MACH_ARMCORE
++choice
++ prompt "Select CM-X270 revision"
++ config ARMCORE_REV12
++ bool "CM-X270 revision 1.2"
++ config ARMCORE_REV11
++ bool "CM-X270 revision 1.1"
++endchoice
++
++endif
++
+ endmenu
+
+ config MACH_POODLE
+diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile
+index 9093eb1c94ebdfae3a94611a1d586c493ad01d9a..116afca194431fb4b6e1b1c2e2eb6ce466259751 100644
+--- a/arch/arm/mach-pxa/Makefile
++++ b/arch/arm/mach-pxa/Makefile
+@@ -18,6 +18,7 @@ obj-$(CONFIG_PXA_SHARP_Cxx00) += spitz.o corgi_ssp.o corgi_lcd.o sharpsl_pm.o sp
+ obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
+ obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
+ obj-$(CONFIG_MACH_TOSA) += tosa.o
++obj-$(CONFIG_CM_X270) += cm-x270.o
+
+ # Support for blinky lights
+ led-y := leds.o
+diff --git a/arch/arm/mach-pxa/cm-x270.c b/arch/arm/mach-pxa/cm-x270.c
+new file mode 100644
+index 0000000000000000000000000000000000000000..00fbd81d819ef19ef032ab2ff1ef58dfc3b1270c
+--- /dev/null
++++ b/arch/arm/mach-pxa/cm-x270.c
+@@ -0,0 +1,663 @@
++/*
++ * linux/arch/arm/mach-pxa/cm-x270.c
++ *
++ * Copyright (C) 2006 CompuLab, Ltd.
++ *
++ * 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/pm.h>
++#include <linux/fb.h>
++#include <linux/platform_device.h>
++#include <linux/sysdev.h>
++#include <linux/dm9000.h>
++#include <linux/serial_8250.h>
++
++#include <asm/types.h>
++#include <asm/setup.h>
++#include <asm/memory.h>
++#include <asm/mach-types.h>
++#include <asm/hardware.h>
++#include <asm/irq.h>
++#include <asm/io.h>
++#include <asm/delay.h>
++
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++#include <asm/mach/irq.h>
++
++#include <asm/arch/pxa-regs.h>
++//#include <asm/arch/irq.h>
++#include <asm/arch/pxafb.h>
++//#include <asm/arch/marathonfb.h>
++#include <asm/arch/ohci.h>
++#include <asm/arch/mmc.h>
++//#include <asm/arch/pxafbsetup.h>
++#include <asm/arch/bitfield.h>
++#include <asm/arch/cm-x270.h>
++
++//#include <asm/hardware/it8152.h>
++
++#include "generic.h"
++
++#define RTC_PHYS_BASE (PXA_CS1_PHYS + (5 << 22))
++#define DM9000_PHYS_BASE (PXA_CS1_PHYS + (6 << 22))
++
++static struct resource cmx270_dm9k_resource[] = {
++ [0] = {
++ .start = DM9000_PHYS_BASE,
++ .end = DM9000_PHYS_BASE + 4,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = DM9000_PHYS_BASE + 8,
++ .end = DM9000_PHYS_BASE + 8 + 500,
++ .flags = IORESOURCE_MEM,
++ },
++ [2] = {
++ .start = CMX270_ETHIRQ,
++ .end = CMX270_ETHIRQ,
++ .flags = IORESOURCE_IRQ,
++ }
++};
++
++/* for the moment we limit ourselves to 32bit IO until some
++ * better IO routines can be written and tested
++ */
++static struct dm9000_plat_data cmx270_dm9k_platdata = {
++ .flags = DM9000_PLATF_32BITONLY,
++};
++
++/* Ethernet device */
++static struct platform_device cmx270_device_dm9k = {
++ .name = "dm9000",
++ .id = 0,
++ .num_resources = ARRAY_SIZE(cmx270_dm9k_resource),
++ .resource = cmx270_dm9k_resource,
++ .dev = {
++ .platform_data = &cmx270_dm9k_platdata,
++ }
++};
++
++#if 0
++/* audio device */
++static struct platform_device cmx270_audio_device = {
++ .name = "pxa2xx-ac97",
++ .id = -1,
++};
++
++/* touchscreen controller */
++static struct platform_device cmx270_ts_device = {
++ .name = "ucb1x00",
++ .id = -1,
++};
++
++/* RTC */
++static struct resource cmx270_v3020_resource[] = {
++ [0] = {
++ .start = RTC_PHYS_BASE,
++ .end = RTC_PHYS_BASE + 4,
++ .flags = IORESOURCE_MEM,
++ },
++};
++
++static struct platform_device cmx270_rtc_device = {
++ .name = "emv3020-rtc",
++ .num_resources = ARRAY_SIZE(cmx270_v3020_resource),
++ .resource = cmx270_v3020_resource,
++ .id = -1,
++};
++#endif
++
++
++/* platform devices */
++static struct platform_device *platform_devices[] __initdata = {
++ &cmx270_device_dm9k,
++ //&cmx270_audio_device,
++ //&cmx270_ts_device,
++ //&cmx270_rtc_device,
++ //&cmx270_2700G,
++};
++
++
++
++
++#define CMX270_FLASH_VIRT (CMX270_IDE104_VIRT + PXA_CS_SIZE - (8<<20))
++/* Map PCI companion and IDE/General Purpose CS statically */
++static struct map_desc cmx270_io_desc[] __initdata = {
++ [0] = { /* IDE/general purpose space */
++ .virtual = CMX270_IDE104_VIRT,
++ .pfn = __phys_to_pfn(CMX270_IDE104_PHYS),
++ .length = PXA_CS_SIZE - (8<<20),
++ .type = MT_DEVICE
++ },
++ [1] = { /* NOR flash */
++ .virtual = CMX270_FLASH_VIRT,
++ .pfn = __phys_to_pfn(PXA_CS0_PHYS),
++ .length = (8<<20), /* up to 8 MByte flash */
++ .type = MT_DEVICE
++ },
++};
++
++static struct pxafb_mode_info sharp_vga_tft_mode = {
++ .pixclock = 38461,
++ .bpp = 8,
++ .xres = 640,
++ .yres = 480,
++ .hsync_len = 60,
++ .vsync_len = 2,
++ .left_margin = 72,
++ .upper_margin = 32,
++ .right_margin = 72,
++ .lower_margin = 10,
++ .sync = 0,
++};
++
++
++static struct pxafb_mach_info cmx270_pxafb_info = {
++ .num_modes = 1,
++ .lccr0 = (LCCR0_PAS),
++ .lccr3 = (LCCR3_PixClkDiv(0x01) |
++ LCCR3_Acb(0xff)),
++ .modes = &sharp_vga_tft_mode
++};
++
++#if 0
++/*********************** Display definitions ****************************/
++static int mtype=MTYPE_CRT640x480;
++static int mbpp=-1;
++
++struct cmx270_display_info {
++ struct pxafb_mach_info fb_info;
++ char *display_name;
++};
++
++static struct __initdata cmx270_display_info cmx270_displays[] = {
++ [ MTYPE_STN320x240 ] = {
++ .fb_info = {
++ .pixclock = 76923,
++ .bpp = 8,
++ .xres = 320,
++ .yres = 240,
++ .hsync_len = 3,
++ .vsync_len = 2,
++ .left_margin = 3,
++ .upper_margin = 0,
++ .right_margin = 3,
++ .lower_margin = 0,
++ .sync = (FB_SYNC_HOR_HIGH_ACT |
++ FB_SYNC_VERT_HIGH_ACT),
++ .lccr0 = 0,
++ .lccr3 = (LCCR3_PixClkDiv(0x03) |
++ LCCR3_Acb(0xff) |
++ LCCR3_PCP),
++ .cmap_greyscale = 0,
++ .cmap_inverse = 0,
++ .cmap_static = 0,
++ },
++ .display_name = "STN 320x240",
++ },
++ [ MTYPE_TFT640x480 ] = {
++ .fb_info = {
++ .pixclock = 38461,
++ .bpp = 8,
++ .xres = 640,
++ .yres = 480,
++ .hsync_len = 60,
++ .vsync_len = 2,
++ .left_margin = 70,
++ .upper_margin = 10,
++ .right_margin = 70,
++ .lower_margin = 5,
++ .sync = 0,
++ .lccr0 = (LCCR0_PAS),
++ .lccr3 = (LCCR3_PixClkDiv(0x01) |
++ LCCR3_Acb(0xff) |
++ LCCR3_PCP),
++ .cmap_greyscale = 0,
++ .cmap_inverse = 0,
++ .cmap_static = 0,
++ },
++ .display_name = "TFT 640x480",
++ },
++ [ MTYPE_CRT640x480 ] = {
++ .fb_info = {
++ .pixclock = 38461,
++ .bpp = 8,
++ .xres = 640,
++ .yres = 480,
++ .hsync_len = 63,
++ .vsync_len = 2,
++ .left_margin = 81,
++ .upper_margin = 33,
++ .right_margin = 16,
++ .lower_margin = 10,
++ .sync = (FB_SYNC_HOR_HIGH_ACT |
++ FB_SYNC_VERT_HIGH_ACT),
++ .lccr0 = (LCCR0_PAS),
++ .lccr3 = (LCCR3_PixClkDiv(0x01) |
++ LCCR3_Acb(0xff)),
++ .cmap_greyscale = 0,
++ .cmap_inverse = 0,
++ .cmap_static = 0,
++ },
++ .display_name = "CRT 640x480",
++ },
++ [ MTYPE_CRT800x600 ] = {
++ .fb_info = {
++ .pixclock = 28846,
++ .bpp = 8,
++ .xres = 800,
++ .yres = 600,
++ .hsync_len = 63,
++ .vsync_len = 2,
++ .left_margin = 26,
++ .upper_margin = 21,
++ .right_margin = 26,
++ .lower_margin = 11,
++ .sync = (FB_SYNC_HOR_HIGH_ACT |
++ FB_SYNC_VERT_HIGH_ACT),
++ .lccr0 = (LCCR0_PAS),
++ .lccr3 = (LCCR3_PixClkDiv(0x02) |
++ LCCR3_Acb(0xff)),
++ .cmap_greyscale = 0,
++ .cmap_inverse = 0,
++ .cmap_static = 0,
++ },
++ .display_name = "CRT 800x600",
++ },
++ [ MTYPE_CRT1024x768 ] = {
++ .fb_info = {
++ .pixclock = 0,
++ .xres = 0,
++ .yres = 0,
++ },
++ .display_name = "CRT 1024x768",
++ },
++ [ MTYPE_USER_DEFINED ] = {
++ .fb_info = {
++ .pixclock = LCD_PIXCLOCK,
++ .bpp = LCD_BPP,
++ .xres = LCD_XRES,
++ .yres = LCD_YRES,
++ .hsync_len = LCD_HORIZONTAL_SYNC_PULSE_WIDTH,
++ .vsync_len = LCD_VERTICAL_SYNC_PULSE_WIDTH,
++ .left_margin = LCD_BEGIN_OF_LINE_WAIT_COUNT,
++ .upper_margin = LCD_BEGIN_FRAME_WAIT_COUNT,
++ .right_margin = LCD_END_OF_LINE_WAIT_COUNT,
++ .lower_margin = LCD_END_OF_FRAME_WAIT_COUNT,
++ .sync = LCD_SYNC,
++ .lccr0 = LCD_LCCR0,
++ .lccr3 = LCD_LCCR3,
++ .cmap_greyscale = CMAP_GREYSCALE,
++ .cmap_inverse = CMAP_INVERSE,
++ .cmap_static = CMAP_STATIC,
++ },
++ .display_name = LCD_NAME,
++ },
++ [ MTYPE_TFT320x240 ] = {
++ .fb_info = {
++ .pixclock = 134615,
++ .bpp = 16,
++ .xres = 320,
++ .yres = 240,
++ .hsync_len = 63,
++ .vsync_len = 7,
++ .left_margin = 75,
++ .upper_margin = 0,
++ .right_margin = 15,
++ .lower_margin = 15,
++ .sync = 0,
++ .lccr0 = (LCCR0_PAS),
++ .lccr3 = (LCCR3_PixClkDiv(0x06) |
++ LCCR3_Acb(0xff) |
++ LCCR3_PCP),
++ .cmap_greyscale = 0,
++ .cmap_inverse = 0,
++ .cmap_static = 0,
++ },
++ .display_name = "TFT 320x240",
++ },
++ [ MTYPE_STN640x480 ] = {
++ .fb_info = {
++ .pixclock = 57692,
++ .bpp = 8,
++ .xres = 640,
++ .yres = 480,
++ .hsync_len = 4,
++ .vsync_len = 2,
++ .left_margin = 10,
++ .upper_margin = 5,
++ .right_margin = 10,
++ .lower_margin = 5,
++ .sync = (FB_SYNC_HOR_HIGH_ACT |
++ FB_SYNC_VERT_HIGH_ACT),
++ .lccr0 = 0,
++ .lccr3 = (LCCR3_PixClkDiv(0x02) |
++ LCCR3_Acb(0xff)),
++ .cmap_greyscale = 0,
++ .cmap_inverse = 0,
++ .cmap_static = 0,
++ },
++ .display_name = "STN 640x480",
++ },
++};
++
++static int __init monitor_params(char *str)
++{
++ mtype = simple_strtol(str, NULL, 0);
++ return 1;
++}
++
++__setup("monitor=", monitor_params);
++
++static int __init fb_bpp(char *str)
++{
++ mbpp = simple_strtol(str, NULL, 0);
++ return 1;
++}
++
++__setup("bpp=", fb_bpp);
++#endif
++
++/* PXA27x OHCI controller setup */
++static int cmx270_ohci_init(struct device *dev)
++{
++ /* Set the Power Control Polarity Low */
++ UHCHR = (UHCHR | UHCHR_PCPL) &
++ ~(UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSE);
++
++ return 0;
++}
++
++static struct pxaohci_platform_data cmx270_ohci_platform_data = {
++ .port_mode = PMM_PERPORT_MODE,
++ .init = cmx270_ohci_init,
++};
++
++
++static int cmx270_mci_init(struct device *dev, irq_handler_t mstone_detect_int, void *data)
++{
++ int err;
++
++ /*
++ * setup GPIO for PXA27x MMC controller
++ */
++ pxa_gpio_mode(GPIO32_MMCCLK_MD);
++ pxa_gpio_mode(GPIO112_MMCCMD_MD);
++ pxa_gpio_mode(GPIO92_MMCDAT0_MD);
++ pxa_gpio_mode(GPIO109_MMCDAT1_MD);
++ pxa_gpio_mode(GPIO110_MMCDAT2_MD);
++ pxa_gpio_mode(GPIO111_MMCDAT3_MD);
++
++ /* SB-X270 uses GPIO105 as SD power enable */
++ pxa_gpio_mode(105 | GPIO_OUT);
++
++ /* card detect IRQ on GPIO 83 */
++ pxa_gpio_mode(IRQ_TO_GPIO(CMX270_MMC_IRQ));
++ set_irq_type(CMX270_MMC_IRQ, IRQT_FALLING);
++
++ err = request_irq(CMX270_MMC_IRQ, mstone_detect_int, IRQF_DISABLED,
++ "MMC card detect", data);
++ if (err) {
++ printk(KERN_ERR "cmx270_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
++ return -1;
++ }
++
++ return 0;
++}
++
++static void cmx270_mci_setpower(struct device *dev, unsigned int vdd)
++{
++ struct pxamci_platform_data* p_d = dev->platform_data;
++
++ if (( 1 << vdd) & p_d->ocr_mask) {
++ printk(KERN_DEBUG "%s: on\n", __FUNCTION__);
++ GPCR(105) = GPIO_bit(105);
++ } else {
++ GPSR(105) = GPIO_bit(105);
++ printk(KERN_DEBUG "%s: off\n", __FUNCTION__);
++ }
++}
++
++static void cmx270_mci_exit(struct device *dev, void *data)
++{
++ free_irq(CMX270_MMC_IRQ, data);
++}
++
++static struct pxamci_platform_data cmx270_mci_platform_data = {
++ .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
++ .init = cmx270_mci_init,
++ .setpower = cmx270_mci_setpower,
++ .exit = cmx270_mci_exit,
++};
++
++
++#ifdef CONFIG_PM
++/* timeout for RTC wakeup */
++unsigned int cmx270_suspend_timeout;
++
++static ssize_t timeout_show(struct subsystem * subsys, char * buf)
++{
++ char * s = buf;
++
++ s += sprintf(s,"%d seconds\n", cmx270_suspend_timeout);
++ return (s - buf);
++}
++
++static ssize_t timeout_store(struct subsystem * subsys, const char * buf, size_t n)
++{
++ char *endp = 0;
++ int timeout;
++
++ timeout = simple_strtoul(buf, &endp, 10);
++ if ( *endp && *endp != '\n')
++ return -EINVAL;
++
++ cmx270_suspend_timeout = timeout;
++ return n;
++}
++
++static struct subsys_attribute timeout_attr = {
++ .attr = {
++ .name = __stringify(timeout),
++ .mode = 0644,
++ },
++ .show = timeout_show,
++ .store = timeout_store,
++};
++
++static struct attribute * g[] = {
++ &timeout_attr.attr,
++ NULL,
++};
++
++static struct attribute_group attr_group = {
++ .attrs = g,
++};
++
++extern struct subsystem power_subsys;
++static unsigned long sleep_save_ite[10];
++static unsigned long sleep_save_msc[10];
++
++static int cmx270_suspend(struct sys_device *dev, pm_message_t state)
++{
++ /* save MSC registers */
++ sleep_save_msc[0] = MSC0;
++ sleep_save_msc[1] = MSC1;
++ sleep_save_msc[2] = MSC2;
++
++ /* setup power saving mode registers */
++ PCFR = 0x0;
++ PSLR = 0xff400000;
++ PMCR = 0x00000005;
++ PWER = 0x80000000;
++ PFER = 0x00000000;
++ PRER = 0x00000000;
++ PGSR0 = 0xC0018800;
++ PGSR1 = 0x004F0002;
++ PGSR2 = 0x6021C000;
++ PGSR3 = 0x00020000;
++
++ if ( cmx270_suspend_timeout ) {
++ RTAR = RCNR + cmx270_suspend_timeout;
++ cmx270_suspend_timeout = 0;
++ }
++
++ return 0;
++}
++
++static int cmx270_resume(struct sys_device *dev)
++{
++ /* restore MSC registers */
++ MSC0 = sleep_save_msc[0];
++ MSC1 = sleep_save_msc[1];
++ MSC2 = sleep_save_msc[2];
++
++ return 0;
++}
++
++static struct sysdev_class cmx270_pm_sysclass = {
++ set_kset_name("pm"),
++ .resume = cmx270_resume,
++ .suspend = cmx270_suspend,
++};
++
++static struct sys_device cmx270_pm_device = {
++ .cls = &cmx270_pm_sysclass,
++};
++
++static int __init cmx270_pm_init(void)
++{
++ int error;
++ error = sysdev_class_register(&cmx270_pm_sysclass);
++ if (error == 0)
++ error = sysdev_register(&cmx270_pm_device);
++
++ error = sysfs_create_group(&power_subsys.kset.kobj,&attr_group);
++ return error;
++}
++#else
++static int __init cmx270_pm_init(void) { return 0; }
++#endif
++
++/* SA1111 compatibiliy 8 bit read register needed for proper function
++ of ITE8152 UART */
++#define MEMC_SA1111 __REG(0x48000064)
++
++static void __init cmx270_init(void)
++{
++ /* set display timings for VGA 640x480 by default */
++ //struct cmx270_display_info *tfbi = &cmx270_displays[2];
++
++ MEMC_SA1111 = 0x3c;
++
++ cmx270_pm_init();
++
++#if 0
++
++ if ( mtype >= 0 && mtype < ARRAY_SIZE(cmx270_displays) )
++
++ /* use default instead of unsupported displays */
++ if ( tfbi->fb_info.pixclock == 0 &&
++ tfbi->fb_info.xres == 0 &&
++ tfbi->fb_info.yres == 0 ) {
++ printk(KERN_WARNING "CM-X270 does not support %s display\n", cmx270_displays[mtype].display_name);
++ tfbi = &cmx270_displays[2];
++ }
++
++ /* setup color depth */
++ if( mtype == MTYPE_USER_DEFINED ) {
++ mbpp = tfbi->fb_info.bpp;
++ }
++ if( mbpp > 0 ) {
++ if( (mbpp!=1) && (mbpp!=2) && (mbpp!=4) &&
++ (mbpp!=8) && (mbpp!=16)) {
++ printk(KERN_WARNING "Illegal BPP value "
++ "supplied, leaving default\n");
++ mbpp = 8;
++ }
++ }
++ else mbpp = 8;
++ tfbi->fb_info.bpp = mbpp;
++
++ printk(KERN_INFO "Running a %s display with %d bits per pixel\n",
++ tfbi->display_name, tfbi->fb_info.bpp);
++ set_pxa_fb_info(&tfbi->fb_info);
++#endif
++
++ set_pxa_fb_info(&cmx270_pxafb_info);
++
++ /* register CM-X270 platform devices */
++ platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
++
++ /* set MCI and OHCI platform parameters */
++ pxa_set_mci_info(&cmx270_mci_platform_data);
++ pxa_set_ohci_info(&cmx270_ohci_platform_data);
++
++ /* This enables the STUART */
++ pxa_gpio_mode(GPIO46_STRXD_MD);
++ pxa_gpio_mode(GPIO47_STTXD_MD);
++
++ /* This enables the BTUART */
++ pxa_gpio_mode(GPIO42_BTRXD_MD);
++ pxa_gpio_mode(GPIO43_BTTXD_MD);
++ pxa_gpio_mode(GPIO44_BTCTS_MD);
++ pxa_gpio_mode(GPIO45_BTRTS_MD);
++}
++
++int machine_is_cmx270l(void)
++{
++ int is_l = 0;
++ volatile unsigned char *flash =
++ (volatile unsigned char *)(CMX270_FLASH_VIRT + 0x3ffe8UL);
++ char rev[10];
++ int i;
++
++ memset(rev, 0, 10);
++ for ( i = 0; i < 8; i++ )
++ rev[i] = flash[i];
++ if ( (rev[6] - '0') > 1 )
++ is_l = 1;
++
++ printk(KERN_DEBUG "%s: revision read: %s, is_l = %d\n",
++ __FUNCTION__, rev, is_l);
++
++ return is_l;
++}
++
++static void __init cmx270_init_irq(void)
++{
++ pxa_init_irq();
++
++ /* LED and NAND GPIOs should not be probed for IRQ */
++ set_irq_flags(IRQ_GPIO(11), 0);
++ set_irq_flags(IRQ_GPIO(89), 0);
++ set_irq_flags(IRQ_GPIO(93), 0);
++ set_irq_flags(IRQ_GPIO(94), 0);
++
++ /* Setup interrupt for dm9000 */
++ pxa_gpio_mode(IRQ_TO_GPIO(CMX270_ETHIRQ));
++ set_irq_type(CMX270_ETHIRQ, IRQT_RISING);
++
++}
++
++static void __init cmx270_map_io(void)
++{
++ pxa_map_io();
++ iotable_init(cmx270_io_desc, ARRAY_SIZE(cmx270_io_desc));
++}
++
++
++MACHINE_START(ARMCORE, "Compulab CM-x270")
++ .boot_params = 0xa0000100,
++ .phys_io = 0x40000000,
++ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
++ .map_io = cmx270_map_io,
++ .init_irq = cmx270_init_irq,
++ .timer = &pxa_timer,
++ .init_machine = cmx270_init,
++MACHINE_END
++
+diff --git a/include/asm-arm/arch-pxa/cm-x270.h b/include/asm-arm/arch-pxa/cm-x270.h
+new file mode 100644
+index 0000000000000000000000000000000000000000..36f9917d55168f5498617fee7ed1b19bf9d3051b
+--- /dev/null
++++ b/include/asm-arm/arch-pxa/cm-x270.h
+@@ -0,0 +1,72 @@
++/*
++ * linux/include/asm/arch-pxa/armcore.h
++ *
++ * Compulab Ltd., 2003
++ *
++ * ARMCore registers
++ */
++
++//#include <linux/config.h>
++
++#define CMX270_CS1_PHYS (PXA_CS1_PHYS)
++#define MARATHON_PHYS (PXA_CS2_PHYS)
++#define CMX270_IDE104_PHYS (PXA_CS3_PHYS)
++#define CMX270_IT8152_PHYS (PXA_CS4_PHYS)
++
++#define PXA_CS_SIZE (64*1024*1024)
++
++/* Virtual map */
++
++#define CMX270_VIRT_BASE (0xe8000000)
++
++#define CMX270_IT8152_VIRT (CMX270_VIRT_BASE)
++#define CMX270_IDE104_VIRT (CMX270_IT8152_VIRT + PXA_CS_SIZE)
++
++
++/* GPIO related definitions */
++#define GPIO_IT8152_IRQ (22)
++#define GPIO_RED_LED (93)
++#define GPIO_GREEN_LED (94)
++
++
++#define IRQ_GPIO_IT8152_IRQ IRQ_GPIO(GPIO_IT8152_IRQ)
++#define PME_IRQ IRQ_GPIO(0)
++#define CMX270_IDE_IRQ IRQ_GPIO(100)
++#define CMX270_GPIRQ1 IRQ_GPIO(101)
++#define CMX270_TOUCHIRQ IRQ_GPIO(96)
++#define CMX270_ETHIRQ IRQ_GPIO(10)
++#define CMX270_GFXIRQ IRQ_GPIO(95)
++#define CMX270_NANDIRQ IRQ_GPIO(89)
++#define CMX270_MMC_IRQ IRQ_GPIO(83)
++
++/* LED macros */
++#define CMX270_RED_ON() GPCR(GPIO_RED_LED) = GPIO_bit(GPIO_RED_LED)
++#define CMX270_RED_OFF() GPSR(GPIO_RED_LED) = GPIO_bit(GPIO_RED_LED)
++#define CMX270_GREEN_ON() GPCR(GPIO_GREEN_LED) = GPIO_bit(GPIO_GREEN_LED)
++#define CMX270_GREEN_OFF() GPSR(GPIO_GREEN_LED) = GPIO_bit(GPIO_GREEN_LED)
++
++/* PCMCIA related definitions */
++#define PCC_DETECT(x) (GPLR(84 - (x)) & GPIO_bit(84 - (x)))
++#define PCC_READY(x) (GPLR(82 - (x)) & GPIO_bit(81 - (x)))
++
++#define PCMCIA_S0_CD_VALID IRQ_GPIO(84)
++#define PCMCIA_S0_CD_VALID_EDGE GPIO_BOTH_EDGES
++
++#define PCMCIA_S1_CD_VALID IRQ_GPIO(83)
++#define PCMCIA_S1_CD_VALID_EDGE GPIO_BOTH_EDGES
++
++#define PCMCIA_S0_RDYINT IRQ_GPIO(82)
++#define PCMCIA_S1_RDYINT IRQ_GPIO(81)
++
++#define PCMCIA_RESET_GPIO 53
++
++
++
++
++
++
++
++
++
++
++
+--
+1.4.4.4
+
diff --git a/packages/linux/compulab-pxa270-2.6.20/0003-ramdisk_load.patch b/packages/linux/compulab-pxa270-2.6.20/0003-ramdisk_load.patch
new file mode 100644
index 0000000000..b96ae410f5
--- /dev/null
+++ b/packages/linux/compulab-pxa270-2.6.20/0003-ramdisk_load.patch
@@ -0,0 +1,38 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Cliff Brake <cbrake@happy.dev.bec-systems.com>
+Date: Fri Mar 16 23:23:10 2007 -0400
+Subject: [PATCH] ramdisk_load
+
+initramfs loading fix
+
+---
+
+ init/initramfs.c | 10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+base 32abeb7a135309651fabb41ebfab98c9f6b67dbf
+last a34beb5936e5819d8b2d51b153434825700463ef
+diff --git a/init/initramfs.c b/init/initramfs.c
+index 4fa0f7977de1a16db501d91c3c9b062cb7898c2d..545d1cd9dfffeb88835cc2f219db51497c963449 100644
+--- a/init/initramfs.c
++++ b/init/initramfs.c
+@@ -535,6 +535,16 @@ static int __init populate_rootfs(void)
+ #ifdef CONFIG_BLK_DEV_INITRD
+ if (initrd_start) {
+ #ifdef CONFIG_BLK_DEV_RAM
++
++ /* hack to make initramfs work because the
++ * compulab BL does not zero out the
++ * initrd memory
++ */
++ int initrd_size = *(int *)(0xef9c0000);
++ initrd_end = initrd_start + initrd_size;
++ //printk("CLIFF: initrd_start = 0x%x\n", initrd_start);
++ //printk("CLIFF: initrd_end = 0x%x\n", initrd_end);
++
+ int fd;
+ printk(KERN_INFO "checking if image is initramfs...");
+ err = unpack_to_rootfs((char *)initrd_start,
+--
+1.4.4.4
+
diff --git a/packages/linux/compulab-pxa270-2.6.20/0004-nand-driver.patch b/packages/linux/compulab-pxa270-2.6.20/0004-nand-driver.patch
new file mode 100644
index 0000000000..f8e05c3c22
--- /dev/null
+++ b/packages/linux/compulab-pxa270-2.6.20/0004-nand-driver.patch
@@ -0,0 +1,324 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Cliff Brake <cbrake@happy.dev.bec-systems.com>
+Date: Tue Apr 3 11:38:59 2007 -0400
+Subject: [PATCH] nand driver
+
+2.6.20 NAND flash driver for cm-x270
+
+---
+
+ drivers/mtd/nand/Kconfig | 4 +
+ drivers/mtd/nand/Makefile | 1
+ drivers/mtd/nand/cmx270-nand.c | 271 ++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 276 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/mtd/nand/cmx270-nand.c
+
+base a34beb5936e5819d8b2d51b153434825700463ef
+last deaa2960bd8fb1f706a935cd7a87321977e6f568
+diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
+index 358f55a82dbe4ebb73b1b0ee460063a6145e3f0e..c80272bcc69b6e13ab0c4403e4635a8a4076dc6c 100644
+--- a/drivers/mtd/nand/Kconfig
++++ b/drivers/mtd/nand/Kconfig
+@@ -247,6 +247,10 @@ config MTD_NAND_AT91
+ help
+ Enables support for NAND Flash / Smart Media Card interface
+ on Atmel AT91 processors.
++
++config MTD_NAND_CM_X270
++ tristate "Support for NAND Flash on CompuLab CM-X270"
++ depends on MTD_NAND && ARCH_PXA
+
+ config MTD_NAND_NANDSIM
+ tristate "Support for NAND Flash Simulator"
+diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
+index f7a53f0b70177451680402a2c2cce4c98991cd6e..d5abbca6d5ae18e287af0b02075f99838d35dc85 100644
+--- a/drivers/mtd/nand/Makefile
++++ b/drivers/mtd/nand/Makefile
+@@ -24,6 +24,7 @@ obj-$(CONFIG_MTD_NAND_NANDSIM) += nandsim.o
+ obj-$(CONFIG_MTD_NAND_CS553X) += cs553x_nand.o
+ obj-$(CONFIG_MTD_NAND_NDFC) += ndfc.o
+ obj-$(CONFIG_MTD_NAND_AT91) += at91_nand.o
++obj-$(CONFIG_MTD_NAND_CM_X270) += cmx270-nand.o
+
+ nand-objs := nand_base.o nand_bbt.o
+ cafe_nand-objs := cafe.o cafe_ecc.o
+diff --git a/drivers/mtd/nand/cmx270-nand.c b/drivers/mtd/nand/cmx270-nand.c
+new file mode 100644
+index 0000000000000000000000000000000000000000..1cd531e610dee846e246b4b1d56bb4119939682b
+--- /dev/null
++++ b/drivers/mtd/nand/cmx270-nand.c
+@@ -0,0 +1,271 @@
++/*
++ * drivers/mtd/nand/cmx270-nand.c
++ *
++ * Copyright (C) 2005 Compulab, Ltd. (mike@compulab.co.il)
++ * 2007 BEC Systems, LLC (cbrake@bec-systems.com)
++ * - updated to 2.6.20 NAND API
++ *
++ * Derived from drivers/mtd/nand/h1910.c
++ * Copyright (C) 2002 Marius Gröger (mag@sysgo.de)
++ * Copyright (c) 2001 Thomas Gleixner (gleixner@autronix.de)
++ *
++ *
++ * 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.
++ *
++ * Overview:
++ * This is a device driver for the NAND flash device found on the
++ * CM-X270 board.
++ */
++
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/nand.h>
++#include <linux/mtd/partitions.h>
++
++#include <asm/io.h>
++#include <asm/irq.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++
++#define GPIO_NAND_CS (11)
++#define GPIO_NAND_RB (89)
++
++#define DRAIN_WB() \
++ do { \
++ unsigned char dummy; \
++ asm volatile ("mcr p15, 0, r0, c7, c10, 4":::"r0"); \
++ dummy=*((volatile unsigned char*)UNCACHED_ADDR); \
++ } while(0);
++
++/*
++ * MTD structure for CM-X270 board
++ */
++static struct mtd_info *cmx270_nand_mtd = NULL;
++
++/*
++ * Module stuff
++ */
++
++#ifdef CONFIG_MTD_PARTITIONS
++/*
++ * Define static partitions for flash device
++ */
++static struct mtd_partition partition_info[] = {
++ {
++ .name = "app",
++ .offset = 0,
++ .size = 64*1024*1024
++ },
++ {
++ .name = "data",
++ .offset = MTDPART_OFS_APPEND,
++ .size = MTDPART_SIZ_FULL
++ }
++};
++
++#define NUM_PARTITIONS ARRAY_SIZE(partition_info)
++
++#endif
++
++
++static u_char cmx270_read_byte(struct mtd_info *mtd)
++{
++ struct nand_chip *this = mtd->priv;
++ return (readl(this->IO_ADDR_R) >> 16);
++}
++
++static void cmx270_write_byte(struct mtd_info *mtd, u_char byte)
++{
++ struct nand_chip *this = mtd->priv;
++ writel((byte << 16), this->IO_ADDR_W);
++}
++
++static void cmx270_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
++{
++ int i;
++ struct nand_chip *this = mtd->priv;
++
++ for (i=0; i<len; i++) {
++ writel((*buf++ << 16), this->IO_ADDR_W);
++ }
++}
++
++static void cmx270_read_buf(struct mtd_info *mtd, u_char *buf, int len)
++{
++ int i;
++ struct nand_chip *this = mtd->priv;
++
++ for (i=0; i<len; i++) {
++ *buf++ = readl(this->IO_ADDR_R) >> 16;
++ }
++}
++
++static int cmx270_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
++{
++ int i;
++ struct nand_chip *this = mtd->priv;
++
++ for (i=0; i<len; i++) {
++ if ( buf[i] != (u_char)(readl(this->IO_ADDR_R) >> 16) )
++ return -EFAULT;
++ }
++
++ return 0;
++}
++
++static inline void nand_cs_on(void)
++{
++ GPCR(GPIO_NAND_CS) = GPIO_bit(GPIO_NAND_CS);
++}
++
++static void nand_cs_off(void)
++{
++ DRAIN_WB();
++
++ GPSR(GPIO_NAND_CS) = GPIO_bit(GPIO_NAND_CS);
++}
++
++/*
++ * hardware specific access to control-lines
++ *
++ * NAND_NCE: bit 0 - GPIO_NAND_CS
++ * NAND_CLE: bit 1 - address bit 2
++ * NAND_ALE: bit 2 - address bit 3
++ */
++static void cmx270_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
++{
++ struct nand_chip* chip = mtd->priv;
++
++ DRAIN_WB();
++
++ if (ctrl & NAND_CTRL_CHANGE) {
++ if (ctrl & NAND_NCE) nand_cs_on();
++ else nand_cs_off();
++ }
++
++
++ if (cmd != NAND_CMD_NONE) {
++ writel(cmd << 16, (unsigned int)(chip->IO_ADDR_W) | ((ctrl & 0x6) << 1 ));
++ }
++
++ DRAIN_WB();
++}
++
++/*
++ * read device ready pin
++ */
++static int cmx270_device_ready(struct mtd_info *mtd)
++{
++ DRAIN_WB();
++ return ( GPLR(GPIO_NAND_RB) & GPIO_bit(GPIO_NAND_RB) );
++}
++
++/*
++ * Main initialization routine
++ */
++static int __init cmx270_init (void)
++{
++ struct nand_chip *this;
++ const char *part_type = 0;
++ int mtd_parts_nb = 0;
++ struct mtd_partition *mtd_parts = 0;
++ static unsigned int nandaddr = 0;
++
++
++ /* Allocate memory for MTD device structure and private data */
++ cmx270_nand_mtd = kmalloc(sizeof(struct mtd_info) +
++ sizeof(struct nand_chip),
++ GFP_KERNEL);
++ if (!cmx270_nand_mtd) {
++ printk("Unable to allocate CM-X270 NAND MTD device structure.\n");
++ return -ENOMEM;
++ }
++
++ nandaddr = (volatile unsigned int)ioremap(PXA_CS1_PHYS, 100);
++
++ /* Get pointer to private data */
++ this = (struct nand_chip *) (&cmx270_nand_mtd[1]);
++
++ /* Initialize structures */
++ memset((char *) cmx270_nand_mtd, 0, sizeof(struct mtd_info));
++ memset((char *) this, 0, sizeof(struct nand_chip));
++
++ /* Link the private data with the MTD structure */
++ cmx270_nand_mtd->priv = this;
++ cmx270_nand_mtd->owner = THIS_MODULE;
++
++ /* insert callbacks */
++ this->IO_ADDR_R = (void __iomem *)nandaddr;
++ this->IO_ADDR_W = (void __iomem *)nandaddr;
++ this->cmd_ctrl = cmx270_hwcontrol;
++/* this->dev_ready = cmx270_device_ready; /\* unknown whether that was correct or not so we will just do it like this *\/ */
++
++ /* 15 us command delay time */
++ this->chip_delay = 50;
++ this->ecc.mode = NAND_ECC_SOFT;
++
++ /* read/write functions */
++ this->read_byte = cmx270_read_byte;
++ //this->write_byte = cmx270_write_byte;
++ this->read_buf = cmx270_read_buf;
++ this->write_buf = cmx270_write_buf;
++ this->verify_buf = cmx270_verify_buf;
++
++ /* Scan to find existence of the device */
++ if (nand_scan (cmx270_nand_mtd, 1)) {
++ printk(KERN_NOTICE "No NAND device - returning -ENXIO\n");
++ iounmap((void*)nandaddr);
++ kfree (cmx270_nand_mtd);
++ return -ENXIO;
++ }
++
++//#ifdef CONFIG_MTD_CMDLINE_PARTS
++#if 0
++ mtd_parts_nb = parse_cmdline_partitions(cmx270_nand_mtd, &mtd_parts,
++ "cmx270");
++ if (mtd_parts_nb > 0)
++ part_type = "command line";
++ else
++ mtd_parts_nb = 0;
++#endif
++ if (mtd_parts_nb == 0)
++ {
++ mtd_parts = partition_info;
++ mtd_parts_nb = NUM_PARTITIONS;
++ part_type = "static";
++ }
++
++ /* Register the partitions */
++ printk(KERN_NOTICE "Using %s partition definition\n", part_type);
++ add_mtd_partitions(cmx270_nand_mtd, mtd_parts, mtd_parts_nb);
++
++ /* Return happy */
++ return 0;
++}
++module_init(cmx270_init);
++
++/*
++ * Clean up routine
++ */
++static void __exit cmx270_cleanup (void)
++{
++ struct nand_chip *this;
++
++ this = (struct nand_chip *) (&cmx270_nand_mtd[1]);
++ iounmap(this->IO_ADDR_R);
++
++ /* Release resources, unregister device */
++ nand_release (cmx270_nand_mtd);
++
++ /* Free the MTD device structure */
++ kfree (cmx270_nand_mtd);
++}
++module_exit(cmx270_cleanup);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Mike Rapoport <mike at compulab dot co dot il>");
++MODULE_DESCRIPTION("NAND flash driver for Compulab CM-X270 Core");
+--
+1.4.4.4
+
diff --git a/packages/linux/compulab-pxa270-2.6.20/0005-mmcsd_large_cards-r0.patch b/packages/linux/compulab-pxa270-2.6.20/0005-mmcsd_large_cards-r0.patch
new file mode 100644
index 0000000000..87c46d7144
--- /dev/null
+++ b/packages/linux/compulab-pxa270-2.6.20/0005-mmcsd_large_cards-r0.patch
@@ -0,0 +1,41 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Cliff Brake <cbrake@happy.dev.bec-systems.com>
+Date: Tue Apr 3 22:16:15 2007 -0400
+Subject: [PATCH] mmcsd_large_cards r0
+
+large card patch
+
+---
+
+ drivers/mmc/mmc_block.c | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+base deaa2960bd8fb1f706a935cd7a87321977e6f568
+last b6144d28fde6225f49d1d56e49b333b7ff11d8dd
+diff --git a/drivers/mmc/mmc_block.c b/drivers/mmc/mmc_block.c
+index 87713572293f0d3044e077e1b9944617dc14ce1f..8ebf6c6d672236ee23081769aebd7aaffea70d1a 100644
+--- a/drivers/mmc/mmc_block.c
++++ b/drivers/mmc/mmc_block.c
+@@ -406,6 +406,7 @@ static struct mmc_blk_data *mmc_blk_alloc(struct mmc_card *card)
+ {
+ struct mmc_blk_data *md;
+ int devidx, ret;
++ unsigned long cap;
+
+ devidx = find_first_zero_bit(dev_use, MMC_NUM_MINORS);
+ if (devidx >= MMC_NUM_MINORS)
+@@ -471,6 +472,11 @@ static struct mmc_blk_data *mmc_blk_alloc(struct mmc_card *card)
+
+ sprintf(md->disk->disk_name, "mmcblk%d", devidx);
+
++ if (card->csd.read_blkbits > 9)
++ md->block_bits = 9;
++ else
++ md->block_bits = card->csd.read_blkbits;
++
+ blk_queue_hardsect_size(md->queue.queue, 1 << md->block_bits);
+
+ /*
+--
+1.4.4.4
+
diff --git a/packages/linux/compulab-pxa270-2.6.20/0006-mmcsd_no_scr_check-r0.patch b/packages/linux/compulab-pxa270-2.6.20/0006-mmcsd_no_scr_check-r0.patch
new file mode 100644
index 0000000000..c1cbcec8f0
--- /dev/null
+++ b/packages/linux/compulab-pxa270-2.6.20/0006-mmcsd_no_scr_check-r0.patch
@@ -0,0 +1,35 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Cliff Brake <cbrake@happy.dev.bec-systems.com>
+Date: Tue Apr 3 22:17:25 2007 -0400
+Subject: [PATCH] mmcsd_no_scr_check r0
+
+mmc_no_sd check
+
+---
+
+ drivers/mmc/mmc.c | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+base b6144d28fde6225f49d1d56e49b333b7ff11d8dd
+last 8139d6c8b46a7a041094753eced2d46e006d93ab
+diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
+index 6f2a282e2b9759c0511cf5501a0bd4e9bd501e3f..b0c830c65a27f5579a2d4f67345e4d9bd1f0fe24 100644
+--- a/drivers/mmc/mmc.c
++++ b/drivers/mmc/mmc.c
+@@ -670,9 +670,11 @@ static void mmc_decode_scr(struct mmc_card *card)
+
+ scr_struct = UNSTUFF_BITS(resp, 60, 4);
+ if (scr_struct != 0) {
+- printk("%s: unrecognised SCR structure version %d\n",
++ printk("%s: Warning - unrecognised SCR structure version %d\n",
+ mmc_hostname(card->host), scr_struct);
+- mmc_card_set_bad(card);
++ //mmc_card_set_bad(card);
++ scr->bus_widths = 0;
++ scr->sda_vsn = 0;
+ return;
+ }
+
+--
+1.4.4.4
+
diff --git a/packages/linux/compulab-pxa270-2.6.20/defconfig b/packages/linux/compulab-pxa270-2.6.20/defconfig
new file mode 100644
index 0000000000..d7a62f274e
--- /dev/null
+++ b/packages/linux/compulab-pxa270-2.6.20/defconfig
@@ -0,0 +1,1188 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20
+# Tue Apr 3 23:39:41 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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="-cm-x270"
+# 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=y
+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=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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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 is not set
+# 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=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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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_CM_X270=y
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+CONFIG_MACH_ARMCORE=y
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_ARMCORE_REV12=y
+# CONFIG_ARMCORE_REV11 is not set
+CONFIG_SVS_POWER=y
+CONFIG_PXA27x=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_DCACHE_DISABLE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PROC_GPIO=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+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="console=ttyS1,38400 bpp=16 mem=64M mtdparts=physmap-flash.0:256k(boot)ro,0x180000(kernel),-(root)"
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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 is not set
+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=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_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
+
+#
+# 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_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
+# 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 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
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x400000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL 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
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_SHARPSL is not set
+CONFIG_MTD_NAND_CM_X270=y
+# CONFIG_MTD_NAND_NANDSIM 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_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_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# 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 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
+
+#
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_SMC91X is not set
+CONFIG_DM9000=y
+# CONFIG_SMC911X is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS 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 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_KEYBOARD_STOWAWAY is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+# CONFIG_MOUSE_SERIAL 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_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=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# 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_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# 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 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# 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_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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
+
+#
+# Misc devices
+#
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX 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_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+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_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=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_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_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=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_TOUCHSCREEN 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 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=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 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_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_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_PXA=m
+# CONFIG_MMC_TIFM_SD is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+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=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+# 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 is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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=y
+# 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 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
+
+#
+# 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 is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/compulab-pxa270_2.6.16.bb b/packages/linux/compulab-pxa270_2.6.16.bb
index 5e6f664bc2..6064224d80 100644
--- a/packages/linux/compulab-pxa270_2.6.16.bb
+++ b/packages/linux/compulab-pxa270_2.6.16.bb
@@ -1,12 +1,15 @@
SECTION = "kernel"
DESCRIPTION = "Linux kernel for the Compulab PXA270 system"
LICENSE = "GPL"
-PR = "r2"
+PR = "r5"
+
+# Note, the compulab package contains a binary NAND driver that is not
+# EABI compatible
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2 \
file://linux-2.6.16.patch;patch=1 \
file://defconfig \
- http://www.compulab.co.il/x270/download/x270-linux-drv.zip"
+ http://www.compulab.co.il/x270/download/x270-linux-drv.zip;md5sum=6b8c1bda1dd066674b7a9f614976a715"
S = "${WORKDIR}/linux-2.6.16"
@@ -26,13 +29,41 @@ do_configure_prepend() {
}
do_deploy() {
+ KNAME=${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin
install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${KNAME}
}
+python do_compulab_image() {
+ import os
+ import os.path
+ import struct
+
+ deploy_dir = bb.data.getVar('DEPLOY_DIR_IMAGE', d, 1)
+ kernel_name = os.path.join(deploy_dir, bb.data.expand('${KERNEL_IMAGETYPE}-${MACHINE}.bin', d))
+
+ img_file = os.path.join(deploy_dir, 'zImage-compulab-pxa270.img')
+
+ fo = open(img_file, 'wb')
+
+ image_data = open(kernel_name, 'rb').read()
+
+ # first write size into first 4 bytes
+ size_s = struct.pack('i', len(image_data))
+
+ # truncate size if we are running on a 64-bit host
+ size_s = size_s[:4]
+
+ fo.write(size_s)
+ fo.write(image_data)
+ fo.close()
+}
+
+
do_deploy[dirs] = "${S}"
addtask deploy before do_build after do_compile
+addtask compulab_image before do_build after do_deploy
COMPATIBLE_MACHINE = "compulab-pxa270"
diff --git a/packages/linux/compulab-pxa270_2.6.20.bb b/packages/linux/compulab-pxa270_2.6.20.bb
new file mode 100644
index 0000000000..1897073d4d
--- /dev/null
+++ b/packages/linux/compulab-pxa270_2.6.20.bb
@@ -0,0 +1,61 @@
+SECTION = "kernel"
+DESCRIPTION = "Linux kernel for the Compulab PXA270 system"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2 \
+ file://0001-gitignore.patch;patch=1 \
+ file://0002-cm-x270-base.patch;patch=1 \
+ file://0003-ramdisk_load.patch;patch=1 \
+ file://0004-nand-driver.patch;patch=1 \
+ file://0005-mmcsd_large_cards-r0.patch;patch=1 \
+ file://0006-mmcsd_no_scr_check-r0.patch;patch=1 \
+ file://defconfig \
+ "
+
+# Note, for 2.6.20, we are no longer using the compulab binary
+# flash driver -- use JFFS2 instead
+
+
+S = "${WORKDIR}/linux-2.6.20"
+
+COMPATIBLE_HOST = 'arm.*-linux'
+
+inherit kernel
+inherit package
+
+ARCH = "arm"
+KERNEL_IMAGETYPE = "zImage"
+
+FILES_kernel-image = ""
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+}
+
+do_deploy() {
+ KNAME=${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${KNAME}
+ # Create an image file that has the size prepended (used by cm-x270 BL)
+ # The following can only be done on a little endian machine
+ # note, the following does not work on all machines as it requires a
+ # recent version of coreutils (>= 6.0). The correct solution is to code
+ # the following in Python instead
+ #size=$(stat --printf=%s ${KNAME})
+ #size_=$(printf '\%03o'\
+ #$((size & 0x000000FF))\
+ #$((size>>8 & 0x000000FF))\
+ #$((size>>16 & 0x000000FF))\
+ #$((size>>24 & 0x000000FF)))
+ #size_=${size_}'\c'
+ #echo -e $size_ > ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.img
+ #cat ${KNAME} >> ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.img
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
+
+COMPATIBLE_MACHINE = "compulab-pxa270"
+
diff --git a/packages/linux/devkitidp-pxa255-2.6.19/.mtn2git_empty b/packages/linux/devkitidp-pxa255-2.6.19/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/devkitidp-pxa255-2.6.19/.mtn2git_empty
diff --git a/packages/linux/devkitidp-pxa255-2.6.19/defconfig b/packages/linux/devkitidp-pxa255-2.6.19/defconfig
new file mode 100644
index 0000000000..23bf0167f6
--- /dev/null
+++ b/packages/linux/devkitidp-pxa255-2.6.19/defconfig
@@ -0,0 +1,1156 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19
+# Sat Jan 6 12:58:12 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+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 is not set
+# CONFIG_RELAY is not set
+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_ALL is not set
+# 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_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+CONFIG_ARCH_PXA_IDP=y
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA25x=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 is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+CONFIG_PCMCIA_DEBUG=y
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# 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_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200 mtdparts=phys_mapped_flash:256k(boot)ro,0x1C0000(kernel),-(root)"
+# 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 is not set
+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=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 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_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
+
+#
+# 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_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
+# CONFIG_DEBUG_DRIVER is not set
+# 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 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_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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# 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 is not set
+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 is not set
+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
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0000000
+CONFIG_MTD_PHYSMAP_LEN=0x4000000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=4
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL 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
+
+#
+# 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_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# 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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDECS is not set
+# CONFIG_BLK_DEV_IDECD is not set
+# 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 is not set
+# CONFIG_IDE_ARM 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_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+# CONFIG_BLK_DEV_SD is not set
+# 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
+
+#
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
+# CONFIG_SMC911X is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS 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_IDPKBD=y
+# CONFIG_INPUT_MOUSE 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_SERPORT is not set
+# 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_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+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=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM 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_ABITUGURU is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+# CONFIG_LEDS_TRIGGERS is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX 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_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+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 is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+CONFIG_USB_DEBUG=y
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+CONFIG_USB_BANDWIDTH=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
+
+#
+# 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_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA 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_TOUCHSCREEN 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 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_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_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
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+CONFIG_MMC_DEBUG=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_TIFM_SD is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS 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 is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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 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_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 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_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# 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
+# 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 is not set
+# 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
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS 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_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/devkitidp-pxa255-2.6.19/linux-2.6.19_devkitidp1.patch b/packages/linux/devkitidp-pxa255-2.6.19/linux-2.6.19_devkitidp1.patch
new file mode 100644
index 0000000000..783ecaef43
--- /dev/null
+++ b/packages/linux/devkitidp-pxa255-2.6.19/linux-2.6.19_devkitidp1.patch
@@ -0,0 +1,1586 @@
+Index: linux-2.6.19/arch/arm/configs/pxa255-idp_defconfig
+===================================================================
+--- linux-2.6.19.orig/arch/arm/configs/pxa255-idp_defconfig
++++ linux-2.6.19/arch/arm/configs/pxa255-idp_defconfig
+@@ -1,14 +1,13 @@
+ #
+ # Automatically generated make config: don't edit
+-# Linux kernel version: 2.6.12-rc1-bk2
+-# Sun Mar 27 22:20:17 2005
++# Linux kernel version: 2.6.13
++# Fri Sep 2 11:36:29 2005
+ #
+ CONFIG_ARM=y
+ CONFIG_MMU=y
+ CONFIG_UID16=y
+ CONFIG_RWSEM_GENERIC_SPINLOCK=y
+ CONFIG_GENERIC_CALIBRATE_DELAY=y
+-CONFIG_GENERIC_IOMAP=y
+
+ #
+ # Code maturity level options
+@@ -16,6 +15,7 @@ CONFIG_GENERIC_IOMAP=y
+ CONFIG_EXPERIMENTAL=y
+ CONFIG_CLEAN_COMPILE=y
+ CONFIG_BROKEN_ON_SMP=y
++CONFIG_INIT_ENV_ARG_LIMIT=32
+
+ #
+ # General setup
+@@ -34,6 +34,8 @@ CONFIG_KOBJECT_UEVENT=y
+ CONFIG_KALLSYMS=y
+ # CONFIG_KALLSYMS_ALL is not set
+ # CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_PRINTK=y
++CONFIG_BUG=y
+ CONFIG_BASE_FULL=y
+ CONFIG_FUTEX=y
+ CONFIG_EPOLL=y
+@@ -50,11 +52,12 @@ CONFIG_BASE_SMALL=0
+ # Loadable module support
+ #
+ CONFIG_MODULES=y
+-# CONFIG_MODULE_UNLOAD is not set
++CONFIG_MODULE_UNLOAD=y
++CONFIG_MODULE_FORCE_UNLOAD=y
+ CONFIG_OBSOLETE_MODPARM=y
+ # CONFIG_MODVERSIONS is not set
+ # CONFIG_MODULE_SRCVERSION_ALL is not set
+-# CONFIG_KMOD is not set
++CONFIG_KMOD=y
+
+ #
+ # System Type
+@@ -79,6 +82,7 @@ CONFIG_ARCH_PXA=y
+ # CONFIG_ARCH_VERSATILE is not set
+ # CONFIG_ARCH_IMX is not set
+ # CONFIG_ARCH_H720X is not set
++# CONFIG_ARCH_AAEC2000 is not set
+
+ #
+ # Intel PXA2xx Implementations
+@@ -98,7 +102,6 @@ CONFIG_CPU_32v5=y
+ CONFIG_CPU_ABRT_EV5T=y
+ CONFIG_CPU_CACHE_VIVT=y
+ CONFIG_CPU_TLB_V4WBI=y
+-CONFIG_CPU_MINICACHE=y
+
+ #
+ # Processor Features
+@@ -109,16 +112,35 @@ CONFIG_XSCALE_PMU=y
+ #
+ # Bus support
+ #
++CONFIG_ISA_DMA_API=y
+
+ #
+ # PCCARD (PCMCIA/CardBus) support
+ #
+-# CONFIG_PCCARD is not set
++CONFIG_PCCARD=y
++CONFIG_PCMCIA_DEBUG=y
++CONFIG_PCMCIA=y
++CONFIG_PCMCIA_LOAD_CIS=y
++CONFIG_PCMCIA_IOCTL=y
++
++#
++# PC-card bridges
++#
++# CONFIG_TCIC is not set
++CONFIG_PCMCIA_PXA2XX=y
+
+ #
+ # Kernel Features
+ #
+ # CONFIG_PREEMPT is not set
++# CONFIG_NO_IDLE_HZ 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_LEDS=y
+ CONFIG_LEDS_TIMER=y
+ CONFIG_LEDS_CPU=y
+@@ -129,7 +151,7 @@ CONFIG_ALIGNMENT_TRAP=y
+ #
+ CONFIG_ZBOOT_ROM_TEXT=0x0
+ CONFIG_ZBOOT_ROM_BSS=0x0
+-CONFIG_CMDLINE="root=/dev/nfs ip=dhcp console=ttyS0,115200 mem=64M"
++CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200 mtdparts=phys_mapped_flash:256k(boot)ro,0x1C0000(kernel),-(root)"
+ # CONFIG_XIP_KERNEL is not set
+
+ #
+@@ -157,6 +179,67 @@ CONFIG_BINFMT_ELF=y
+ # CONFIG_PM is not set
+
+ #
++# Networking
++#
++CONFIG_NET=y
++
++#
++# Networking options
++#
++# CONFIG_PACKET is not set
++CONFIG_UNIX=y
++# 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_TUNNEL is not set
++CONFIG_IP_TCPDIAG=y
++# CONFIG_IP_TCPDIAG_IPV6 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
++
++#
++# SCTP Configuration (EXPERIMENTAL)
++#
++# CONFIG_IP_SCTP 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
++# CONFIG_NET_SCHED is not set
++# CONFIG_NET_CLS_ROUTE 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
++
++#
+ # Device Drivers
+ #
+
+@@ -165,7 +248,7 @@ CONFIG_BINFMT_ELF=y
+ #
+ CONFIG_STANDALONE=y
+ CONFIG_PREVENT_FIRMWARE_BUILD=y
+-# CONFIG_FW_LOADER is not set
++CONFIG_FW_LOADER=y
+ # CONFIG_DEBUG_DRIVER is not set
+
+ #
+@@ -176,7 +259,7 @@ CONFIG_MTD=y
+ # CONFIG_MTD_CONCAT is not set
+ CONFIG_MTD_PARTITIONS=y
+ # CONFIG_MTD_REDBOOT_PARTS is not set
+-# CONFIG_MTD_CMDLINE_PARTS is not set
++CONFIG_MTD_CMDLINE_PARTS=y
+ # CONFIG_MTD_AFS_PARTS is not set
+
+ #
+@@ -209,6 +292,7 @@ CONFIG_MTD_MAP_BANK_WIDTH_4=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
+@@ -222,10 +306,14 @@ CONFIG_MTD_CFI_UTIL=y
+ # Mapping drivers for chip access
+ #
+ # CONFIG_MTD_COMPLEX_MAPPINGS is not set
+-# CONFIG_MTD_PHYSMAP is not set
++CONFIG_MTD_PHYSMAP=y
++CONFIG_MTD_PHYSMAP_START=0x0000000
++CONFIG_MTD_PHYSMAP_LEN=0x4000000
++CONFIG_MTD_PHYSMAP_BANKWIDTH=4
+ # CONFIG_MTD_ARM_INTEGRATOR is not set
+ # CONFIG_MTD_EDB7312 is not set
+ # CONFIG_MTD_SHARP_SL is not set
++# CONFIG_MTD_PLATRAM is not set
+
+ #
+ # Self-contained MTD device drivers
+@@ -260,10 +348,10 @@ CONFIG_MTD_CFI_UTIL=y
+ #
+ # Block devices
+ #
+-# CONFIG_BLK_DEV_FD is not set
+ # CONFIG_BLK_DEV_COW_COMMON is not set
+ # CONFIG_BLK_DEV_LOOP is not set
+ # CONFIG_BLK_DEV_NBD is not set
++# CONFIG_BLK_DEV_UB is not set
+ # CONFIG_BLK_DEV_RAM is not set
+ CONFIG_BLK_DEV_RAM_COUNT=16
+ CONFIG_INITRAMFS_SOURCE=""
+@@ -290,9 +378,11 @@ CONFIG_BLK_DEV_IDE=y
+ # CONFIG_BLK_DEV_IDE_SATA is not set
+ CONFIG_BLK_DEV_IDEDISK=y
+ # CONFIG_IDEDISK_MULTI_MODE is not set
++# CONFIG_BLK_DEV_IDECS is not set
+ # CONFIG_BLK_DEV_IDECD is not set
+ # 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
+
+ #
+@@ -307,89 +397,69 @@ CONFIG_BLK_DEV_IDEDISK=y
+ #
+ # SCSI device support
+ #
+-# CONFIG_SCSI is not set
++CONFIG_SCSI=y
++CONFIG_SCSI_PROC_FS=y
+
+ #
+-# Multi-device support (RAID and LVM)
++# SCSI support type (disk, tape, CD-ROM)
+ #
+-# CONFIG_MD is not set
++# CONFIG_BLK_DEV_SD is not set
++# 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
+
+ #
+-# Fusion MPT device support
++# 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
+
+ #
+-# IEEE 1394 (FireWire) support
++# SCSI Transport Attributes
+ #
++# CONFIG_SCSI_SPI_ATTRS is not set
++# CONFIG_SCSI_FC_ATTRS is not set
++# CONFIG_SCSI_ISCSI_ATTRS is not set
+
+ #
+-# I2O device support
++# SCSI low-level drivers
+ #
++# CONFIG_SCSI_SATA is not set
++# CONFIG_SCSI_DEBUG is not set
+
+ #
+-# Networking support
++# PCMCIA SCSI adapter support
+ #
+-CONFIG_NET=y
++# CONFIG_PCMCIA_AHA152X is not set
++# CONFIG_PCMCIA_FDOMAIN is not set
++# CONFIG_PCMCIA_NINJA_SCSI is not set
++# CONFIG_PCMCIA_QLOGIC is not set
++# CONFIG_PCMCIA_SYM53C500 is not set
+
+ #
+-# Networking options
++# Multi-device support (RAID and LVM)
+ #
+-# CONFIG_PACKET is not set
+-# CONFIG_NETLINK_DEV is not set
+-CONFIG_UNIX=y
+-# CONFIG_NET_KEY is not set
+-CONFIG_INET=y
+-# CONFIG_IP_MULTICAST is not set
+-# CONFIG_IP_ADVANCED_ROUTER is not set
+-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_TUNNEL is not set
+-CONFIG_IP_TCPDIAG=y
+-# CONFIG_IP_TCPDIAG_IPV6 is not set
+-# CONFIG_IPV6 is not set
+-# CONFIG_NETFILTER is not set
++# CONFIG_MD is not set
+
+ #
+-# SCTP Configuration (EXPERIMENTAL)
++# Fusion MPT device support
+ #
+-# CONFIG_IP_SCTP 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
++# CONFIG_FUSION is not set
+
+ #
+-# QoS and/or fair queueing
++# IEEE 1394 (FireWire) support
+ #
+-# CONFIG_NET_SCHED is not set
+-# CONFIG_NET_CLS_ROUTE is not set
+
+ #
+-# Network testing
++# I2O device support
++#
++
++#
++# Network device support
+ #
+-# CONFIG_NET_PKTGEN is not set
+-# CONFIG_NETPOLL is not set
+-# CONFIG_NET_POLL_CONTROLLER is not set
+-# CONFIG_HAMRADIO is not set
+-# CONFIG_IRDA is not set
+-# CONFIG_BT is not set
+ CONFIG_NETDEVICES=y
+ # CONFIG_DUMMY is not set
+ # CONFIG_BONDING is not set
+@@ -402,6 +472,7 @@ CONFIG_NETDEVICES=y
+ CONFIG_NET_ETHERNET=y
+ CONFIG_MII=y
+ CONFIG_SMC91X=y
++# CONFIG_DM9000 is not set
+
+ #
+ # Ethernet (1000 Mbit)
+@@ -421,6 +492,11 @@ CONFIG_SMC91X=y
+ # CONFIG_NET_RADIO is not set
+
+ #
++# PCMCIA network device support
++#
++# CONFIG_NET_PCMCIA is not set
++
++#
+ # Wan interfaces
+ #
+ # CONFIG_WAN is not set
+@@ -428,6 +504,8 @@ CONFIG_SMC91X=y
+ # CONFIG_SLIP 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
+@@ -443,7 +521,7 @@ CONFIG_INPUT=y
+ # Userland interfaces
+ #
+ CONFIG_INPUT_MOUSEDEV=y
+-CONFIG_INPUT_MOUSEDEV_PSAUX=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
+@@ -455,11 +533,12 @@ CONFIG_INPUT_EVDEV=y
+ # Input Device Drivers
+ #
+ CONFIG_INPUT_KEYBOARD=y
+-CONFIG_KEYBOARD_ATKBD=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_IDPKBD=y
+ # CONFIG_INPUT_MOUSE is not set
+ # CONFIG_INPUT_JOYSTICK is not set
+ # CONFIG_INPUT_TOUCHSCREEN is not set
+@@ -470,10 +549,8 @@ CONFIG_KEYBOARD_ATKBD=y
+ #
+ CONFIG_SERIO=y
+ # CONFIG_SERIO_SERPORT is not set
+-CONFIG_SERIO_LIBPS2=y
+ # CONFIG_SERIO_RAW is not set
+ # CONFIG_GAMEPORT is not set
+-CONFIG_SOUND_GAMEPORT=y
+
+ #
+ # Character devices
+@@ -516,18 +593,28 @@ CONFIG_LEGACY_PTY_COUNT=256
+ #
+ # Ftape, the floppy tape device driver
+ #
+-# CONFIG_DRM is not set
++
++#
++# PCMCIA character devices
++#
++# CONFIG_SYNCLINK_CS is not set
+ # CONFIG_RAW_DRIVER is not set
+
+ #
+ # TPM devices
+ #
+-# CONFIG_TCG_TPM is not set
+
+ #
+ # I2C support
+ #
+ # CONFIG_I2C is not set
++# CONFIG_I2C_SENSOR is not set
++
++#
++# Hardware Monitoring support
++#
++CONFIG_HWMON=y
++# CONFIG_HWMON_DEBUG_CHIP is not set
+
+ #
+ # Misc devices
+@@ -551,10 +638,12 @@ CONFIG_FB_CFB_FILLRECT=y
+ CONFIG_FB_CFB_COPYAREA=y
+ CONFIG_FB_CFB_IMAGEBLIT=y
+ CONFIG_FB_SOFT_CURSOR=y
++# CONFIG_FB_MACMODES is not set
+ # CONFIG_FB_MODE_HELPERS is not set
+ # CONFIG_FB_TILEBLITTING is not set
+ CONFIG_FB_PXA=y
+ # CONFIG_FB_PXA_PARAMETERS is not set
++# CONFIG_FB_S1D13XXX is not set
+ # CONFIG_FB_VIRTUAL is not set
+
+ #
+@@ -563,15 +652,9 @@ CONFIG_FB_PXA=y
+ # CONFIG_VGA_CONSOLE is not set
+ CONFIG_DUMMY_CONSOLE=y
+ CONFIG_FRAMEBUFFER_CONSOLE=y
+-CONFIG_FONTS=y
++# CONFIG_FONTS is not set
+ CONFIG_FONT_8x8=y
+ CONFIG_FONT_8x16=y
+-# CONFIG_FONT_6x11 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
+
+ #
+ # Logo configuration
+@@ -592,7 +675,116 @@ CONFIG_LOGO_LINUX_CLUT224=y
+ #
+ CONFIG_USB_ARCH_HAS_HCD=y
+ # CONFIG_USB_ARCH_HAS_OHCI is not set
+-# CONFIG_USB is not set
++CONFIG_USB=y
++CONFIG_USB_DEBUG=y
++
++#
++# Miscellaneous USB options
++#
++# CONFIG_USB_DEVICEFS is not set
++CONFIG_USB_BANDWIDTH=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
++
++#
++# USB Device Class drivers
++#
++# CONFIG_USB_BLUETOOTH_TTY is not set
++# 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
++
++#
++# USB Input Devices
++#
++CONFIG_USB_HID=y
++CONFIG_USB_HIDINPUT=y
++# 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_XPAD is not set
++# CONFIG_USB_ATI_REMOTE is not set
++# CONFIG_USB_KEYSPAN_REMOTE 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=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_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_LD is not set
++
++#
++# USB DSL modem support
++#
+
+ #
+ # USB Gadget Support
+@@ -602,17 +794,23 @@ CONFIG_USB_ARCH_HAS_HCD=y
+ #
+ # MMC/SD Card support
+ #
+-# CONFIG_MMC is not set
++CONFIG_MMC=y
++CONFIG_MMC_DEBUG=y
++CONFIG_MMC_BLOCK=y
++CONFIG_MMC_PXA=y
++# CONFIG_MMC_WBSD 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_JBD is not set
+ # CONFIG_REISERFS_FS is not set
+ # CONFIG_JFS_FS is not set
++# CONFIG_FS_POSIX_ACL is not set
+
+ #
+ # XFS support
+@@ -620,6 +818,7 @@ CONFIG_EXT2_FS=y
+ # CONFIG_XFS_FS is not set
+ # CONFIG_MINIX_FS is not set
+ # CONFIG_ROMFS_FS is not set
++CONFIG_INOTIFY=y
+ # CONFIG_QUOTA is not set
+ CONFIG_DNOTIFY=y
+ # CONFIG_AUTOFS_FS is not set
+@@ -636,8 +835,9 @@ CONFIG_DNOTIFY=y
+ #
+ CONFIG_FAT_FS=y
+ CONFIG_MSDOS_FS=y
+-# CONFIG_VFAT_FS is not set
++CONFIG_VFAT_FS=y
+ CONFIG_FAT_DEFAULT_CODEPAGE=437
++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+ # CONFIG_NTFS_FS is not set
+
+ #
+@@ -645,7 +845,6 @@ CONFIG_FAT_DEFAULT_CODEPAGE=437
+ #
+ CONFIG_PROC_FS=y
+ CONFIG_SYSFS=y
+-# CONFIG_DEVFS_FS is not set
+ # CONFIG_DEVPTS_FS_XATTR is not set
+ # CONFIG_TMPFS is not set
+ # CONFIG_HUGETLB_PAGE is not set
+@@ -664,8 +863,7 @@ CONFIG_RAMFS=y
+ # CONFIG_JFFS_FS is not set
+ CONFIG_JFFS2_FS=y
+ CONFIG_JFFS2_FS_DEBUG=0
+-# CONFIG_JFFS2_FS_NAND is not set
+-# CONFIG_JFFS2_FS_NOR_ECC is not set
++CONFIG_JFFS2_FS_WRITEBUFFER=y
+ # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+ CONFIG_JFFS2_ZLIB=y
+ CONFIG_JFFS2_RTIME=y
+@@ -687,6 +885,7 @@ CONFIG_NFS_FS=y
+ # CONFIG_NFSD is not set
+ CONFIG_ROOT_NFS=y
+ CONFIG_LOCKD=y
++CONFIG_NFS_COMMON=y
+ CONFIG_SUNRPC=y
+ # CONFIG_RPCSEC_GSS_KRB5 is not set
+ # CONFIG_RPCSEC_GSS_SPKM3 is not set
+Index: linux-2.6.19/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.19.orig/arch/arm/mach-pxa/Kconfig
++++ linux-2.6.19/arch/arm/mach-pxa/Kconfig
+@@ -21,7 +21,7 @@ config MACH_MAINSTONE
+ select IWMMXT
+
+ config ARCH_PXA_IDP
+- bool "Accelent Xscale IDP"
++ bool "DevKitIDP PXA255"
+ select PXA25x
+
+ config PXA_SHARPSL
+Index: linux-2.6.19/drivers/input/keyboard/idpkbd.c
+===================================================================
+--- /dev/null
++++ linux-2.6.19/drivers/input/keyboard/idpkbd.c
+@@ -0,0 +1,418 @@
++/*
++ * DevKitIDP PXA255 matrix keyboard driver
++ * Copyright (C) 2005 BSQUARE
++ * David Plentovich <davidp@bsquare.com>
++ *
++ * Based on (2.4.x) driver/char/asi_keyboard.c - Cliff Brake
++ */
++
++/*
++ * 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 <linux/stddef.h>
++
++#include <linux/input.h>
++#include <linux/module.h>
++#include <linux/init.h>
++
++#include <linux/timer.h>
++#include <linux/sched.h>
++#include <linux/delay.h>
++
++#include <linux/types.h>
++#include <linux/keyboard.h>
++#include <linux/kd.h>
++
++#include <asm/irq.h>
++#include <asm/io.h>
++
++//#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/idp.h>
++
++MODULE_AUTHOR("David Plentovich <davidp@bsquare.com>");
++MODULE_DESCRIPTION("DevKitIDP PXA255 matrix keyboard driver");
++MODULE_LICENSE("GPL");
++
++
++//NOTE: Platform HW specific settings are defined in include/asm-arm/arch-pxa/idp.h
++
++
++// set to true to use timers to poll keyboard
++#define POLL_KEYBOARD 1
++
++
++// local variables
++
++#define FN_KEY_SCANCODE 4 //scancode returned when Fn key pressed
++#define NUMLOCK_KEY_SCANCODE 10 //scancode returned when NumLock key pressed
++
++// keyboard matrix 14 columns by 7 rows
++static unsigned char idpkbd_keycode[(KEYBD_MATRIX_NUMBER_OUTPUTS * KEYBD_MATRIX_NUMBER_INPUTS)] = { \
++ KEY_LEFTALT, KEY_GRAVE, 0, KEY_LEFTCTRL, 0, KEY_ESC, KEY_1, KEY_2, KEY_9, KEY_0, KEY_MINUS, KEY_EQUAL, 0, KEY_BACKSPACE, \
++ 0, KEY_BACKSLASH, KEY_LEFTSHIFT, 0, 0, KEY_DELETE, 0, KEY_T, KEY_Y, KEY_U, KEY_I, KEY_ENTER, KEY_RIGHTSHIFT, KEY_DOWN, \
++ 0, KEY_TAB, 0, 0, 0, KEY_Q, KEY_W, KEY_E, KEY_R, KEY_O, KEY_P, KEY_LEFTBRACE, 0, KEY_RIGHTBRACE, \
++ 0, KEY_Z, 0, 0, 0, KEY_CAPSLOCK, 0, 0, KEY_K, KEY_L, KEY_SEMICOLON, KEY_APOSTROPHE, 0, KEY_UP, \
++ 0, KEY_A, 0, 0, 0, KEY_S, KEY_D, KEY_F, KEY_G, KEY_H, KEY_J, KEY_SLASH, 0, KEY_LEFT, \
++ 0, KEY_X, 0, 0, 0, KEY_C, KEY_V, KEY_B, KEY_N, KEY_M, KEY_COMMA, KEY_DOT, 0, KEY_SPACE, \
++ 0, 0, 0, 0, 0, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, 0, 0, KEY_RIGHT \
++};
++
++// function key keyboard matrix 14 columns by 7 rows
++//TODO: change Fn key for +/= to be shifted version of KEY_PAUSE (instead of KEY_BACK)
++static unsigned char idpkbd_fn_keycode[(KEYBD_MATRIX_NUMBER_OUTPUTS * KEYBD_MATRIX_NUMBER_INPUTS)] = { \
++ 0, 0, 0, 0, 0, 0, KEY_F1, KEY_F2, KEY_F9, KEY_F10, 0, KEY_BACK, 0, 0, \
++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_PAGEDOWN, \
++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_PAUSE, 0, KEY_SCROLLLOCK, \
++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_PRINT, KEY_SYSRQ, 0, KEY_PAGEUP, \
++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_HOME, \
++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
++ 0, 0, 0, 0, 0, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, 0, 0, KEY_END \
++};
++
++//NOTE: NUMLOCK and NumKeypad are not supported; keys are already accessable in other ways.
++
++int idpkbd_used = 0;
++int fn_key_active = 0;
++
++static struct input_dev * idpkbd_dev;
++
++static int scaninterval = HZ/60; //rate to scan keyboard
++static struct timer_list scan_timer;
++
++
++// Note: these are not hardware dependent masks, they are
++// just simple n-bit masks based on the number of ins and outs
++// All hardware dependent matrix keyboard stuff is in portable.h
++#define KEYBD_MATRIX_INPUT_MASK ((1 << KEYBD_MATRIX_NUMBER_INPUTS)-1)
++#define KEYBD_MATRIX_OUTPUT_MASK ((1 << KEYBD_MATRIX_NUMBER_OUTPUTS)-1)
++
++static __u16 keystate_prev[KEYBD_MATRIX_NUMBER_OUTPUTS];
++static __u16 keystate_test[KEYBD_MATRIX_NUMBER_OUTPUTS];
++static __u16 keystate_cur [KEYBD_MATRIX_NUMBER_OUTPUTS];
++static int keystate_prev_active = 0; //FALSE;
++static int keystate_stable_ctr = 0;
++
++
++
++/* local function definitions */
++static void setoutput(__u16 columns)
++{
++ #ifdef KEYBD_MATRIX_INVERT_OUTPUT_LOGIC
++ KEYBD_MATRIX_SET_OUTPUTS(~columns);
++ #else
++ KEYBD_MATRIX_SET_OUTPUTS(columns);
++ #endif
++}
++
++static __u16 scaninput(void)
++{
++ __u32 inputs;
++
++ KEYBD_MATRIX_GET_INPUTS(inputs);
++
++ #ifdef KEYBD_MATRIX_INVERT_INPUT_LOGIC
++ return (__u16)(~inputs & KEYBD_MATRIX_INPUT_MASK);
++ #else
++ return (__u16)(inputs & KEYBD_MATRIX_INPUT_MASK);
++ #endif
++}
++
++static int dokeystatetransition(void)
++{
++ unsigned char code;
++ int i, j;
++ __u16 keystate_xor[KEYBD_MATRIX_NUMBER_OUTPUTS];
++ int ret_val = 0; //FALSE;
++ //int bFoundValidScancode = FALSE;
++
++ /* iterate over columns */
++ for (i = 0; i < KEYBD_MATRIX_NUMBER_OUTPUTS; i++)
++ {
++ if (keystate_cur[i] != 0)
++ ret_val = 1; //TRUE;
++
++ keystate_xor[i] = keystate_prev[i] ^ keystate_cur[i];
++ if (keystate_xor[i] != 0)
++ {
++ /* at least one matrix switch was changed, set backlight activity detect flag */
++ //vpDriverGlobals->misc.BacklightActivity = 1;
++
++ /* iterate over rows */
++ for (j = 0; j < KEYBD_MATRIX_NUMBER_INPUTS; j++)
++ {
++ if (keystate_xor[i] & (1 << j))
++ {
++ code = (j * KEYBD_MATRIX_NUMBER_OUTPUTS) + i;
++ /* figure out if key is pressed or released and process */
++
++ // support alt keymap for function keys
++ if (code == FN_KEY_SCANCODE)
++ {
++ fn_key_active = (keystate_cur[i] & (1 << j)) ? 1 : 0;
++ }
++ else
++ {
++ if (fn_key_active)
++ {
++// printk("matrix %i, key %i, up/down %i\n", code, idpkbd_fn_keycode[code], (keystate_cur[i] & (1 << j)) ? 1 : 0);
++ input_report_key(idpkbd_dev, idpkbd_fn_keycode[code], (keystate_cur[i] & (1 << j)) ? 1 : 0);
++ }
++ else
++ {
++// printk("matrix %i, key %i, up/down %i\n", code, idpkbd_keycode[code], (keystate_cur[i] & (1 << j)) ? 1 : 0);
++ input_report_key(idpkbd_dev, idpkbd_keycode[code], (keystate_cur[i] & (1 << j)) ? 1 : 0);
++ }
++ }
++
++ }
++ }
++ input_sync(idpkbd_dev);
++ }
++ keystate_prev[i] = keystate_cur[i];
++ }
++
++ return ret_val;
++}
++
++
++// handles keyboard keypress
++#if POLL_KEYBOARD
++static void idpkbd_scan_keyboard(unsigned long dummy)
++{
++ __u16 cs; /* column status */
++ int i;
++// printk(KERN_INFO "%s:\n", __FUNCTION__);
++
++#define SCAN_START 0 /* start of scan state machine */
++#define SCAN_GETSTATE 1 /* get keyboard state */
++#define SCAN_STAB 2 /* wait for key to stabalize */
++
++ /* start of keyboard scanning sequence */
++ /* Always start with an all-column scan */
++ setoutput( KEYBD_MATRIX_OUTPUT_MASK );
++ udelay( KEYBD_MATRIX_SETTLING_TIME_US );
++ cs = scaninput();
++
++// printk("cs = %x\n", cs);
++// printk("keystate_stable_ctr = %d\n", keystate_stable_ctr);
++// printk("keystate_pre_active = %d\n", keystate_prev_active);
++// printk("\n");
++
++ /*
++ * if no keys were down in previous state AND we are
++ * not in stablizing mode AND the all-column scan
++ * is 0, then keyboard is idle.
++ */
++
++ if ((! keystate_prev_active) && (keystate_stable_ctr == 0) && (cs == 0))
++ goto scan_done;
++
++ /* Get the current state of the keyboard */
++ if (cs == 0)
++ {
++ for (i = 0; i < KEYBD_MATRIX_NUMBER_OUTPUTS; i++)
++ {
++ keystate_cur[i] = 0;
++ }
++ }
++ else
++ {
++ for (i = 0; i < KEYBD_MATRIX_NUMBER_OUTPUTS; i++)
++ {
++ setoutput ( 1 << i );
++ udelay(KEYBD_MATRIX_SETTLING_TIME_US);
++ keystate_cur[i] = scaninput();
++ }
++ }
++
++ /* Handle the stablizing case first */
++ if (keystate_stable_ctr > 0)
++ {
++
++ /* Compare the current state against the test state */
++ cs = 1;
++ for (i = 0; i < KEYBD_MATRIX_NUMBER_OUTPUTS; i++)
++ {
++ if (keystate_cur[i] != keystate_test[i])
++ {
++ cs = 0;
++ break;
++ }
++ }
++
++ // Are the states the same ?
++ if (cs)
++ {
++ ++ keystate_stable_ctr;
++ if (keystate_stable_ctr == KEYBD_MATRIX_KEYSTATE_DEBOUNCE_CONSTANT)
++ {
++ keystate_prev_active = dokeystatetransition();
++ keystate_stable_ctr = 0;
++ }
++ goto scan_done;
++ }
++ else
++ {
++ keystate_stable_ctr = 0; // Clear stable counter and fall through to next stage
++ }
++ }
++
++ // Compare the current state against the previous state
++ cs = 1;
++ for (i = 0; i < KEYBD_MATRIX_NUMBER_OUTPUTS; i++)
++ {
++ if (keystate_cur[i] != keystate_prev[i])
++ {
++ cs = 0;
++ break;
++ }
++ }
++
++ // If the states are different, begin waiting for stablizing
++ if (! cs)
++ {
++ for (i = 0; i < KEYBD_MATRIX_NUMBER_OUTPUTS; i++)
++ {
++ keystate_test[i] = keystate_cur[i];
++ }
++ keystate_stable_ctr = 1;
++ }
++
++scan_done:
++ // reload timer for next scan
++ mod_timer(&scan_timer, jiffies + scaninterval);
++}
++#else
++static void idpkbd_interrupt(int irq, void *dummy, struct pt_regs *fp)
++{
++// printk(KERN_INFO "%s:\n", __FUNCTION__);
++
++ input_report_key(idpkbd_dev, BTN_0, inb(IDPKBD_PORT) & 1);
++ input_sync(idpkbd_dev);
++}
++#endif
++
++//TODO: Verify Events operation
++// handles keyboard LED and beep events
++int idpkbd_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
++{
++// printk(KERN_INFO "%s:\n", __FUNCTION__);
++
++ if (type == EV_SND && code == SND_BELL) {
++//x outb(value, IDPKBD_BELL);
++ return 0;
++ }
++
++ if (type == EV_LED) {
++// TODO:
++ return 0;
++ }
++
++ return -1;
++}
++
++static int idpkbd_open(struct input_dev *dev)
++{
++// printk(KERN_INFO "%s:\n", __FUNCTION__);
++
++ if (idpkbd_used++)
++ return 0;
++
++#if POLL_KEYBOARD
++ // start timer to scan matrix keyboard
++ init_timer(&scan_timer);
++ scan_timer.function = idpkbd_scan_keyboard;
++ mod_timer(&scan_timer, jiffies + scaninterval);
++#else
++ if (request_irq(IDPKBD_IRQ, idpkbd_interrupt, 0, "idpkbd", NULL)) {
++ printk(KERN_ERR "idpkbd.c: Can't allocate irq %d\n", idpkbd_irq);
++ idpkbd_used--;
++ return -EBUSY;
++ }
++#endif
++
++ return 0;
++}
++
++static void idpkbd_close(struct input_dev *dev)
++{
++// printk(KERN_INFO "%s:\n", __FUNCTION__);
++
++ if (!--idpkbd_used) {
++#if POLL_KEYBOARD
++ // stop timer
++ del_timer(&scan_timer);
++#else
++ free_irq(IDPKBD_IRQ, idpkbd_interrupt);
++#endif
++ }
++}
++
++static int __init idpkbd_init(void)
++{
++ int i;
++// printk(KERN_INFO "%s:\n", __FUNCTION__);
++
++ idpkbd_dev = input_allocate_device();
++
++ // fill in driver information
++ idpkbd_dev->name = "DevKitIDP PXA255 matrix keyboard";
++ idpkbd_dev->phys = "idpkdb/input0";
++// idpkbd_dev.id.bustype = BUS_MATRIX;
++ idpkbd_dev->id.vendor = 0x0001;
++ idpkbd_dev->id.product = 0x0001;
++ idpkbd_dev->id.version = 0x0100;
++
++ // fill in function pointers
++ idpkbd_dev->open = idpkbd_open;
++ idpkbd_dev->close = idpkbd_close;
++ idpkbd_dev->event = idpkbd_event;
++
++ // setup available keypresses
++ idpkbd_dev->evbit[0] = BIT(EV_KEY);
++// idpkbd_dev.evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
++ idpkbd_dev->keycode = idpkbd_keycode;
++ idpkbd_dev->keycodesize = sizeof(unsigned char);
++// idpkbd_dev.keycodemax = ARRAY_SIZE(idpkbd_keycode);
++ idpkbd_dev->keycodemax = ARRAY_SIZE(idpkbd_keycode) + ARRAY_SIZE(idpkbd_fn_keycode);
++
++ for (i = 0; i < (KEYBD_MATRIX_NUMBER_OUTPUTS * KEYBD_MATRIX_NUMBER_INPUTS); i++)
++ {
++ if (idpkbd_keycode[i])
++ set_bit(idpkbd_keycode[i], idpkbd_dev->keybit);
++ if (idpkbd_fn_keycode[i])
++ set_bit(idpkbd_fn_keycode[i], idpkbd_dev->keybit);
++ }
++
++ input_register_device(idpkbd_dev);
++
++ printk(KERN_INFO "input: %s\n", idpkbd_dev->name);
++ return 0;
++}
++
++static void __exit idpkbd_exit(void)
++{
++// printk(KERN_INFO "%s:\n", __FUNCTION__);
++
++ input_unregister_device(idpkbd_dev);
++}
++
++module_init(idpkbd_init);
++module_exit(idpkbd_exit);
++
++
+Index: linux-2.6.19/drivers/input/keyboard/Kconfig
+===================================================================
+--- linux-2.6.19.orig/drivers/input/keyboard/Kconfig
++++ linux-2.6.19/drivers/input/keyboard/Kconfig
+@@ -203,4 +203,14 @@ config KEYBOARD_OMAP
+ To compile this driver as a module, choose M here: the
+ module will be called omap-keypad.
+
++config KEYBOARD_IDPKBD
++ tristate "IDP matrix scan keyboard"
++ depends on ARCH_PXA_IDP && INPUT && INPUT_KEYBOARD
++ help
++ Say Y here if you are running Linux on a DevKitIDP PXA255 and want
++ to use the attached matrix scan keyboard.
++
++ To compile this driver as a module, choose M here: the
++ module will be called idpkbd.
++
+ endif
+Index: linux-2.6.19/drivers/input/keyboard/Makefile
+===================================================================
+--- linux-2.6.19.orig/drivers/input/keyboard/Makefile
++++ linux-2.6.19/drivers/input/keyboard/Makefile
+@@ -4,6 +4,7 @@
+
+ # Each configuration option enables a list of files.
+
++obj-$(CONFIG_KEYBOARD_IDPKBD) += idpkbd.o
+ obj-$(CONFIG_KEYBOARD_ATKBD) += atkbd.o
+ obj-$(CONFIG_KEYBOARD_SUNKBD) += sunkbd.o
+ obj-$(CONFIG_KEYBOARD_LKKBD) += lkkbd.o
+Index: linux-2.6.19/drivers/pcmcia/Makefile
+===================================================================
+--- linux-2.6.19.orig/drivers/pcmcia/Makefile
++++ linux-2.6.19/drivers/pcmcia/Makefile
+@@ -68,5 +68,6 @@ sa1100_cs-$(CONFIG_SA1100_SIMPAD) += sa
+
+ pxa2xx_cs-$(CONFIG_ARCH_LUBBOCK) += pxa2xx_lubbock.o sa1111_generic.o
+ pxa2xx_cs-$(CONFIG_MACH_MAINSTONE) += pxa2xx_mainstone.o
++pxa2xx_cs-$(CONFIG_ARCH_PXA_IDP) += pxa2xx_idp.o
+ pxa2xx_cs-$(CONFIG_PXA_SHARPSL) += pxa2xx_sharpsl.o
+
+Index: linux-2.6.19/drivers/pcmcia/pxa2xx_idp.c
+===================================================================
+--- /dev/null
++++ linux-2.6.19/drivers/pcmcia/pxa2xx_idp.c
+@@ -0,0 +1,392 @@
++/*
++ * linux/drivers/pcmcia/pxa2xx_idp.c
++ *
++ * DevKitIDP PXA255 PCMCIA specific routines.
++ * Copyright (C) 2005 BSQUARE
++ * David Plentovich <davidp@bsquare.com>
++ *
++ * Based on pxa2xx_mainstone.c - Nicolas Pitre
++ * Based on (2.4.x) driver/pcmcia/pxa/pxa_idp.c - Jeff Sutherland
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/errno.h>
++#include <linux/interrupt.h>
++#include <linux/device.h>
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++
++#include <pcmcia/ss.h>
++
++#include <asm/hardware.h>
++#include <asm/irq.h>
++
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/idp.h>
++
++#include "soc_common.h"
++
++#define IDP_S0_CD_IRQ PCMCIA_S0_CD_VALID
++#define IDP_S1_CD_IRQ PCMCIA_S1_CD_VALID
++#define IDP_S0_IRQ PCMCIA_S0_RDYINT
++#define IDP_S1_IRQ PCMCIA_S1_RDYINT
++
++static struct pcmcia_irqs irqs[] = {
++ { 0, IDP_S0_CD_IRQ, "PCMCIA0 CD" },
++ { 1, IDP_S1_CD_IRQ, "PCMCIA1 CD" },
++};
++
++
++static int idp_pcmcia_hw_init_cnt = 0;
++
++
++static int idp_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
++{
++ printk("%s: socket %i\n", __FUNCTION__, skt->nr); //dcp
++
++ if (!idp_pcmcia_hw_init_cnt++)
++ {
++ /* Set PCMCIA Socket 0 power to standby mode.
++ * PXA IDP has dedicated CPLD pins for all this stuff :-)
++ */
++ IDP_CPLD_PCCARD_EN = PCC0_ENABLE | PCC1_ENABLE; //both slots disabled, reset NOT active
++ IDP_CPLD_PCCARD_PWR = 0; //all power to both slots off
++
++ /*
++ * Setup default state of GPIO outputs
++ * before we enable them as outputs.
++ */
++ GPSR(GPIO48_nPOE) =
++ GPIO_bit(GPIO48_nPOE) |
++ GPIO_bit(GPIO49_nPWE) |
++ GPIO_bit(GPIO50_nPIOR) |
++ GPIO_bit(GPIO51_nPIOW) |
++ GPIO_bit(GPIO52_nPCE_1) |
++ GPIO_bit(GPIO53_nPCE_2);
++
++ pxa_gpio_mode(GPIO48_nPOE_MD);
++ pxa_gpio_mode(GPIO49_nPWE_MD);
++ pxa_gpio_mode(GPIO50_nPIOR_MD);
++ pxa_gpio_mode(GPIO51_nPIOW_MD);
++ pxa_gpio_mode(GPIO52_nPCE_1_MD);
++ pxa_gpio_mode(GPIO53_nPCE_2_MD);
++ pxa_gpio_mode(GPIO54_pSKTSEL_MD);
++ pxa_gpio_mode(GPIO55_nPREG_MD);
++ pxa_gpio_mode(GPIO56_nPWAIT_MD);
++ pxa_gpio_mode(GPIO57_nIOIS16_MD);
++
++#if 0 //x
++ GPDR(IRQ_TO_GPIO_2_80(PCMCIA_S0_CD_VALID)) &= ~GPIO_bit(IRQ_TO_GPIO_2_80(PCMCIA_S0_CD_VALID));
++ GPDR(IRQ_TO_GPIO_2_80(PCMCIA_S1_CD_VALID)) &= ~GPIO_bit(IRQ_TO_GPIO_2_80(PCMCIA_S1_CD_VALID));
++
++ set_GPIO_IRQ_edge(IRQ_TO_GPIO_2_80(PCMCIA_S0_CD_VALID), GPIO_BOTH_EDGES);
++ set_GPIO_IRQ_edge(IRQ_TO_GPIO_2_80(PCMCIA_S1_CD_VALID), GPIO_BOTH_EDGES);
++
++ //irq's for slots:
++ GPDR(IRQ_TO_GPIO_2_80(PCMCIA_S0_RDYINT)) &= ~GPIO_bit(IRQ_TO_GPIO_2_80(PCMCIA_S0_RDYINT));
++ GPDR(IRQ_TO_GPIO_2_80(PCMCIA_S1_RDYINT)) &= ~GPIO_bit(IRQ_TO_GPIO_2_80(PCMCIA_S1_RDYINT));
++
++ set_GPIO_IRQ_edge(IRQ_TO_GPIO_2_80(PCMCIA_S0_RDYINT), GPIO_FALLING_EDGE);
++ set_GPIO_IRQ_edge(IRQ_TO_GPIO_2_80(PCMCIA_S1_RDYINT), GPIO_FALLING_EDGE);
++#endif //x
++ }
++
++#if 0 //x
++ return_val = request_irq(PCMCIA_S0_CD_VALID, init->handler, SA_INTERRUPT, "PXA PCMCIA CD0", NULL);
++
++ if (return_val < 0)
++ return -1;
++
++ return_val += request_irq(PCMCIA_S1_CD_VALID, init->handler, SA_INTERRUPT, "PXA PCMCIA CD1", NULL);
++
++ if (return_val < 0) {
++ free_irq(PCMCIA_S0_CD_VALID, NULL);
++ return -1;
++ }
++
++ return 2;
++
++#endif //x
++ skt->irq = (skt->nr == 0) ? IDP_S0_IRQ : IDP_S1_IRQ;
++ return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
++}
++
++static void idp_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
++{
++//x free_irq(PCMCIA_S0_CD_VALID, NULL);
++//x free_irq(PCMCIA_S1_CD_VALID, NULL);
++
++ printk("%s: socket %i\n", __FUNCTION__, skt->nr); //dcp
++
++ soc_pcmcia_free_irqs(skt, irqs, ARRAY_SIZE(irqs));
++
++ if (!--idp_pcmcia_hw_init_cnt)
++ {
++ IDP_CPLD_PCCARD_EN = 0x03; //disable slots
++ udelay(200);
++ IDP_CPLD_PCCARD_PWR = 0; //shut off all power
++ }
++}
++
++//x static unsigned long idp_pcmcia_status[2];
++
++static void idp_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
++ struct pcmcia_state *state)
++{
++ unsigned long status;
++ volatile unsigned long *stat_regs[2] = { &IDP_CPLD_PCCARD0_STATUS, &IDP_CPLD_PCCARD1_STATUS };
++// printk("%s: socket %i\n", __FUNCTION__, skt->nr); //dcp
++
++//x status = (skt->nr == 0) ? IDP_PCMCIA0 : IDP_PCMCIA1;
++ status = *stat_regs[skt->nr];
++//x flip = (status ^ idp_pcmcia_status[skt->nr]) & IDP_PCMCiIA_nSTSCHG_BVD1;
++
++#if 0 //x
++ /*
++ * Workaround for STSCHG which can't be deasserted:
++ * We therefore disable/enable corresponding IRQs
++ * as needed to avoid IRQ locks.
++ */
++ if (flip) {
++ idp_pcmcia_status[skt->nr] = status;
++ if (status & IDP_PCMCIA_nSTSCHG_BVD1)
++ enable_irq( (skt->nr == 0) ? IDP_S0_STSCHG_IRQ
++ : IDP_S1_STSCHG_IRQ );
++ else
++ disable_irq( (skt->nr == 0) ? IDP_S0_STSCHG_IRQ
++ : IDP_S1_STSCHG_IRQ );
++ }
++#endif //x
++
++//x state->detect = (status & IDP_PCMCIA_nCD) ? 0 : 1;
++ state->detect = (PCC_DETECT(skt->nr)) ? 0 : 1; // this one is gpio
++ state->ready = (status & _PCC_IRQ) ? 1 : 0;
++ state->bvd1 = (status & PCC_BVD1) ? 1 : 0;
++ state->bvd2 = (status & PCC_BVD2) ? 1 : 0;
++ state->wrprot = (status & _PCC_WRPROT) ? 1 : 0;
++ state->vs_3v = (status & PCC_VS1) ? 0 : 1;
++ state->vs_Xv = (status & PCC_VS2) ? 0 : 1;
++
++#if 0
++ printk("%s: Sock %u flags: %s%s%s%s%s%s%s\n",__FUNCTION__,skt->nr,
++ (state->detect) ? "DET " : "",
++ (state->ready) ? "RDY " : "",
++ (state->bvd1) ? "BVD1 " : "",
++ (state->bvd2) ? "BVD2 " : "",
++ (state->wrprot) ? "WRPROT " : "",
++ (state->vs_3v) ? "VS_3V " : "",
++ (state->vs_Xv) ? "VS_XV " : "");
++#endif
++}
++
++static int idp_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
++ const socket_state_t *state)
++{
++ /* The PXA Idp uses the Maxim MAX1602, with the following connections:
++ *
++ * Socket 0 (PCMCIA):
++ * MAX1602 PXA_IDP Register
++ * Pin Signal IDP_CPLD_PCCARD_PWR:
++ * ----- ------- ----------------------
++ * A0VPP PCC0_PWR0 bit0
++ * A1VPP PCC0_PWR1 bit1
++ * A0VCC PCC0_PWR2 bit2
++ * A1VCC PCC0_PWR3 bit3
++ * VX VCC
++ * VY +3.3V
++ * 12IN +12V
++ * CODE +3.3V Cirrus Code, CODE = High (VY)
++ *
++ * Socket 1 (PCMCIA):
++ * MAX1602 PXA_IDP Register
++ * Pin Signal IDP_CPLD_PCCARD_PWR:
++ * ----- ------- ----------------------
++ * A0VPP PCC1_PWR0 bit4
++ * A1VPP PCC1_PWR1 bit5
++ * A0VCC PCC1_PWR2 bit6
++ * A1VCC PCC1_PWR3 bit7
++ * VX VCC
++ * VY +3.3V
++ * 12IN +12V
++ * CODE +3.3V Cirrus Code, CODE = High (VY)
++ *
++ */
++
++ printk("%s: socket %i %i %i\n", __FUNCTION__, skt->nr, state->Vcc, state->Vpp); //dcp
++
++ switch (skt->nr) {
++ case 0:
++ switch (state->Vcc) {
++ case 0:
++ IDP_CPLD_PCCARD_EN |= PCC0_ENABLE; // disable socket
++ udelay(200);
++ IDP_CPLD_PCCARD_PWR &= ~(PCC0_PWR2 | PCC0_PWR3);
++ break;
++
++ case 33:
++ IDP_CPLD_PCCARD_PWR &= ~(PCC0_PWR2 | PCC0_PWR3);
++ IDP_CPLD_PCCARD_PWR |= PCC0_PWR3;
++ IDP_CPLD_PCCARD_EN &= ~PCC0_ENABLE; //turn it on
++ break;
++
++ case 50:
++ IDP_CPLD_PCCARD_PWR &= ~(PCC0_PWR2 | PCC0_PWR3);
++ IDP_CPLD_PCCARD_PWR |= PCC0_PWR2;
++ IDP_CPLD_PCCARD_EN &= ~PCC0_ENABLE;
++ break;
++
++ default:
++ printk(KERN_ERR "%s(): bad Vcc %u\n", __FUNCTION__, state->Vcc);
++ return -1;
++ }
++
++ switch (state->Vpp) {
++ case 0:
++ IDP_CPLD_PCCARD_PWR &= ~(PCC0_PWR0 | PCC0_PWR1);
++ break;
++
++ case 120:
++ IDP_CPLD_PCCARD_PWR &= ~(PCC0_PWR0 | PCC0_PWR1);
++ IDP_CPLD_PCCARD_PWR |= PCC0_PWR1;
++ break;
++
++ default:
++ if(state->Vpp == state->Vcc) {
++ IDP_CPLD_PCCARD_PWR = (IDP_CPLD_PCCARD_PWR & ~(PCC0_PWR0 | PCC0_PWR1)) | PCC0_PWR0;
++ }
++ else {
++ printk(KERN_ERR "%s(): bad Vpp %u\n", __FUNCTION__, state->Vpp);
++ return -1;
++ }
++ }
++
++ if (state->flags & SS_RESET) {
++ IDP_CPLD_PCCARD_EN = (IDP_CPLD_PCCARD_EN | PCC0_RESET);
++ printk("RESET\n");
++ }
++ else
++ IDP_CPLD_PCCARD_EN = (IDP_CPLD_PCCARD_EN & ~PCC0_RESET);
++
++ break;
++
++ case 1:
++ switch (state->Vcc) {
++ case 0:
++ IDP_CPLD_PCCARD_EN |= PCC1_ENABLE; // disable socket
++ udelay(200);
++ IDP_CPLD_PCCARD_PWR &= ~(PCC1_PWR2 | PCC1_PWR3);
++ break;
++
++ case 33:
++ IDP_CPLD_PCCARD_PWR &= ~(PCC1_PWR2 | PCC1_PWR3);
++ IDP_CPLD_PCCARD_PWR |= PCC1_PWR3;
++ IDP_CPLD_PCCARD_EN &= ~PCC1_ENABLE; //turn it on
++ break;
++
++ case 50:
++ IDP_CPLD_PCCARD_PWR &= ~(PCC1_PWR2 | PCC1_PWR3);
++ IDP_CPLD_PCCARD_PWR |= PCC1_PWR2;
++ IDP_CPLD_PCCARD_EN &= ~PCC1_ENABLE;
++ break;
++
++ default:
++ printk(KERN_ERR "%s(): bad Vcc %u\n", __FUNCTION__, state->Vcc);
++ return -1;
++ }
++
++ switch (state->Vpp) {
++ case 0:
++ IDP_CPLD_PCCARD_PWR &= ~(PCC1_PWR0 | PCC1_PWR1);
++ break;
++
++ case 120:
++ IDP_CPLD_PCCARD_PWR &= ~(PCC1_PWR0 | PCC1_PWR1);
++ IDP_CPLD_PCCARD_PWR |= PCC1_PWR1;
++ break;
++
++ default:
++ if(state->Vpp == state->Vcc) {
++ IDP_CPLD_PCCARD_PWR = (IDP_CPLD_PCCARD_PWR & ~(PCC1_PWR0 | PCC1_PWR1)) | PCC1_PWR0;
++ }
++ else {
++ printk(KERN_ERR "%s(): bad Vpp %u\n", __FUNCTION__, state->Vpp);
++ return -1;
++ }
++ }
++
++ if (state->flags & SS_RESET) {
++ IDP_CPLD_PCCARD_EN = (IDP_CPLD_PCCARD_EN | PCC1_RESET);
++ printk("RESET\n");
++ }
++ else
++ IDP_CPLD_PCCARD_EN = (IDP_CPLD_PCCARD_EN & ~PCC1_RESET);
++
++ break;
++ }
++ return 0;
++}
++
++static void idp_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
++{
++ printk("%s: socket %i\n", __FUNCTION__, skt->nr); //dcp
++}
++
++static void idp_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
++{
++ printk("%s: socket %i\n", __FUNCTION__, skt->nr); //dcp
++}
++
++static struct pcmcia_low_level idp_pcmcia_ops = {
++ .owner = THIS_MODULE,
++ .hw_init = idp_pcmcia_hw_init,
++ .hw_shutdown = idp_pcmcia_hw_shutdown,
++ .socket_state = idp_pcmcia_socket_state,
++ .configure_socket = idp_pcmcia_configure_socket,
++ .socket_init = idp_pcmcia_socket_init,
++ .socket_suspend = idp_pcmcia_socket_suspend,
++ .nr = 2,
++};
++
++static struct platform_device *idp_pcmcia_device;
++
++static int __init idp_pcmcia_init(void)
++{
++ int ret;
++ printk("%s\n", __FUNCTION__); //dcp
++
++ idp_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
++ if (!idp_pcmcia_device)
++ return -ENOMEM;
++ memset(idp_pcmcia_device, 0, sizeof(*idp_pcmcia_device));
++ idp_pcmcia_device->name = "pxa2xx-pcmcia";
++ idp_pcmcia_device->dev.platform_data = &idp_pcmcia_ops;
++
++ ret = platform_device_register(idp_pcmcia_device);
++ if (ret)
++ kfree(idp_pcmcia_device);
++
++ return ret;
++}
++
++static void __exit idp_pcmcia_exit(void)
++{
++ printk("%s\n", __FUNCTION__); //dcp
++ /*
++ * This call is supposed to free our idp_pcmcia_device.
++ * Unfortunately platform_device don't have a free method, and
++ * we can't assume it's free of any reference at this point so we
++ * can't free it either.
++ */
++ platform_device_unregister(idp_pcmcia_device);
++}
++
++module_init(idp_pcmcia_init);
++module_exit(idp_pcmcia_exit);
++
++MODULE_LICENSE("GPL");
+Index: linux-2.6.19/include/asm-arm/arch-pxa/idp.h
+===================================================================
+--- linux-2.6.19.orig/include/asm-arm/arch-pxa/idp.h
++++ linux-2.6.19/include/asm-arm/arch-pxa/idp.h
+@@ -179,15 +179,15 @@
+ #define KEYBD_MATRIX_NUMBER_INPUTS 7
+ #define KEYBD_MATRIX_NUMBER_OUTPUTS 14
+
+-#define KEYBD_MATRIX_INVERT_OUTPUT_LOGIC FALSE
+-#define KEYBD_MATRIX_INVERT_INPUT_LOGIC FALSE
++#undef KEYBD_MATRIX_INVERT_OUTPUT_LOGIC
++#undef KEYBD_MATRIX_INVERT_INPUT_LOGIC
+
+-#define KEYBD_MATRIX_SETTLING_TIME_US 100
++#define KEYBD_MATRIX_SETTLING_TIME_US 40
+ #define KEYBD_MATRIX_KEYSTATE_DEBOUNCE_CONSTANT 2
+
+ #define KEYBD_MATRIX_SET_OUTPUTS(outputs) \
+ {\
+- IDP_CPLD_KB_COL_LOW = outputs;\
++ IDP_CPLD_KB_COL_LOW = outputs & 0x7f;\
+ IDP_CPLD_KB_COL_HIGH = outputs >> 7;\
+ }
+
diff --git a/packages/linux/devkitidp-pxa255-kernel_2.6.11.bb b/packages/linux/devkitidp-pxa255-kernel_2.6.11.bb
deleted file mode 100644
index a79c90220c..0000000000
--- a/packages/linux/devkitidp-pxa255-kernel_2.6.11.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "Linux kernel for the BSQUARE PXA255 DevKitIDP"
-LICENSE = "GPL"
-PR = "r2"
-
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.11.tar.bz2 \
- ftp://ftp.accelent.com/pxa255_idp/linux/kernel-2.6.11-rc4_idp.patch;patch=1 \
- ftp://ftp.accelent.com/pxa255_idp/linux/kernel-2.6.11_idp_leds.patch;patch=1 \
- ftp://ftp.accelent.com/pxa255_idp/linux/devkitidp-pxa255_defconfig"
-
-S = "${WORKDIR}/linux-2.6.11"
-
-COMPATIBLE_HOST = 'arm.*-linux'
-COMPATIBLE_MACHINE = "devkitidp-pxa255"
-
-inherit kernel
-inherit package
-
-ARCH = "arm"
-KERNEL_IMAGETYPE = "uImage"
-#CMDLINE_CONSOLE ?= "ttyS0,115200n8"
-#CMDLINE_ROOT = "root=/dev/slug rootfstype=ext2,jffs2 initrd=0x01000000,10M mem=32M@0x00000000"
-#CMDLINE_ROOT = "root=/dev/mtdblock4 rootfstype=jffs2 mem=32M@0x00000000"
-#CMDLINE_ROOT = "root=/dev/ram0 rw rootfstype=ext2,jffs2 initrd=0x01000000,10M init=/linuxrc mem=32M@0x00000000"
-#CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_CONSOLE}"
-CMDLINE = "root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200 mtdparts=phys_mapped_flash:256k(boot)ro,0x1C0000(kernel),-(root)"
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/${MACHINE}_defconfig ${S}/.config
-# echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
-}
-
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
-}
-
-do_deploy[dirs] = "${S}"
-
-addtask deploy before do_build after do_compile
diff --git a/packages/linux/devkitidp-pxa255_2.6.19.bb b/packages/linux/devkitidp-pxa255_2.6.19.bb
new file mode 100644
index 0000000000..500c0535d2
--- /dev/null
+++ b/packages/linux/devkitidp-pxa255_2.6.19.bb
@@ -0,0 +1,39 @@
+SECTION = "kernel"
+DESCRIPTION = "Linux kernel for the BSQUARE PXA255 DevKitIDP"
+LICENSE = "GPL"
+PR = "r4"
+DEPENDS = "u-boot"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz2 \
+ file://linux-2.6.19_devkitidp1.patch;patch=1 \
+ file://defconfig"
+
+S = "${WORKDIR}/linux-2.6.19"
+
+COMPATIBLE_MACHINE = "devkitidp-pxa255"
+
+inherit kernel
+inherit package
+
+ARCH = "arm"
+KERNEL_IMAGETYPE = "uImage"
+#CMDLINE_CONSOLE ?= "ttyS0,115200n8"
+#CMDLINE_ROOT = "root=/dev/slug rootfstype=ext2,jffs2 initrd=0x01000000,10M mem=32M@0x00000000"
+#CMDLINE_ROOT = "root=/dev/mtdblock4 rootfstype=jffs2 mem=32M@0x00000000"
+#CMDLINE_ROOT = "root=/dev/ram0 rw rootfstype=ext2,jffs2 initrd=0x01000000,10M init=/linuxrc mem=32M@0x00000000"
+#CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_CONSOLE}"
+CMDLINE = "root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200 mtdparts=phys_mapped_flash:256k(boot)ro,0x1C0000(kernel),-(root)"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+# echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR}/images
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
diff --git a/packages/linux/ep93xx-kernel/dynamic-phys-offset-2.6.20-rc7.diff b/packages/linux/ep93xx-kernel/dynamic-phys-offset-2.6.20-rc7.diff
new file mode 100644
index 0000000000..1f59be644e
--- /dev/null
+++ b/packages/linux/ep93xx-kernel/dynamic-phys-offset-2.6.20-rc7.diff
@@ -0,0 +1,199 @@
+On the Cirrus Logic ep93xx, system RAM isn't one nice physically
+contiguous region as it is on most SoCs, but it is spread out over
+between one and four memory banks.
+
+What's worse, RAM doesn't necessarily start at any fixed physical
+memory location. The start of RAM (PHYS_OFFSET) is not only board-
+specific, but on some boards also depends on jumper settings (whether
+async or sync boot mode is selected.)
+
+The attached patch adds the RUNTIME_PHYS_OFFSET config option, which,
+if selected, turns PHYS_OFFSET into a variable which is determined and
+set by __create_page_tables by looking at the current pc. This allows
+booting a single kernel image on all the different flavors of ep93xx
+boards, reducing user confusion and hopefully pleasing our kautobuild
+admin :-) If the option isn't selected, there's zero impact.
+
+Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
+===================================================================
+20070202 modified to apply cleanly to linux-2.6.20-rc7 - NZG
+===================================================================
+diff -Naur linux-2.6.20-rc7/arch/arm/Kconfig linux-2.6.20-rc7-e1.0/arch/arm/Kconfig
+--- linux-2.6.20-rc7/arch/arm/Kconfig 2007-02-02 10:26:21.000000000 -0600
++++ linux-2.6.20-rc7-e1.0/arch/arm/Kconfig 2007-02-02 16:23:05.000000000 -0600
+@@ -113,6 +113,9 @@
+ help
+ The base address of exception vectors.
+
++config RUNTIME_PHYS_OFFSET
++ bool
++
+ source "init/Kconfig"
+
+ menu "System Type"
+@@ -187,6 +190,7 @@
+ bool "EP93xx-based"
+ select ARM_AMBA
+ select ARM_VIC
++ select RUNTIME_PHYS_OFFSET
+ help
+ This enables support for the Cirrus EP93xx series of CPUs.
+
+diff -Naur linux-2.6.20-rc7/arch/arm/boot/compressed/Makefile linux-2.6.20-rc7-e1.0/arch/arm/boot/compressed/Makefile
+--- linux-2.6.20-rc7/arch/arm/boot/compressed/Makefile 2006-11-29 15:57:37.000000000 -0600
++++ linux-2.6.20-rc7-e1.0/arch/arm/boot/compressed/Makefile 2007-02-02 16:23:05.000000000 -0600
+@@ -78,13 +78,10 @@
+ EXTRA_CFLAGS := -fpic
+ EXTRA_AFLAGS :=
+
+-# Supply ZRELADDR, INITRD_PHYS and PARAMS_PHYS to the decompressor via
+-# linker symbols. We only define initrd_phys and params_phys if the
+-# machine class defined the corresponding makefile variable.
++# Supply ZRELADDR and PARAMS_PHYS to the decompressor via linker
++# symbols. We only define params_phys if the machine class defined
++# the corresponding makefile variable.
+ LDFLAGS_vmlinux := --defsym zreladdr=$(ZRELADDR)
+-ifneq ($(INITRD_PHYS),)
+-LDFLAGS_vmlinux += --defsym initrd_phys=$(INITRD_PHYS)
+-endif
+ ifneq ($(PARAMS_PHYS),)
+ LDFLAGS_vmlinux += --defsym params_phys=$(PARAMS_PHYS)
+ endif
+diff -Naur linux-2.6.20-rc7/arch/arm/boot/compressed/head.S linux-2.6.20-rc7-e1.0/arch/arm/boot/compressed/head.S
+--- linux-2.6.20-rc7/arch/arm/boot/compressed/head.S 2006-11-29 15:57:37.000000000 -0600
++++ linux-2.6.20-rc7-e1.0/arch/arm/boot/compressed/head.S 2007-02-02 16:23:05.000000000 -0600
+@@ -156,6 +156,11 @@
+ .text
+ adr r0, LC0
+ ldmia r0, {r1, r2, r3, r4, r5, r6, ip, sp}
++#ifdef CONFIG_RUNTIME_PHYS_OFFSET
++ and r10, pc, #0xf0000000 @ fix up zreladdr
++ add r4, r4, r10
++#endif
++
+ subs r0, r0, r1 @ calculate the delta offset
+
+ @ if delta is zero, we are
+diff -Naur linux-2.6.20-rc7/arch/arm/kernel/head.S linux-2.6.20-rc7-e1.0/arch/arm/kernel/head.S
+--- linux-2.6.20-rc7/arch/arm/kernel/head.S 2007-02-02 10:26:21.000000000 -0600
++++ linux-2.6.20-rc7-e1.0/arch/arm/kernel/head.S 2007-02-02 16:36:21.000000000 -0600
+@@ -43,8 +43,8 @@
+ .globl swapper_pg_dir
+ .equ swapper_pg_dir, KERNEL_RAM_VADDR - 0x4000
+
+- .macro pgtbl, rd
+- ldr \rd, =(KERNEL_RAM_PADDR - 0x4000)
++ .macro pgtbl, rd, phys_offset
++ add \rd, \phys_offset, #(TEXT_OFFSET - 0x4000)
+ .endm
+
+ #ifdef CONFIG_XIP_KERNEL
+@@ -206,10 +206,22 @@
+ * Returns:
+ * r0, r3, r6, r7 corrupted
+ * r4 = physical page table address
++ * r5 = PHYS_OFFSET
+ */
+ .type __create_page_tables, %function
+ __create_page_tables:
+- pgtbl r4 @ page table address
++#ifdef CONFIG_RUNTIME_PHYS_OFFSET
++ adr r5, stext
++ sub r5, r5, #TEXT_OFFSET @ r5 = phys_offset
++
++ ldr r4, =(phys_offset - PAGE_OFFSET)
++ add r4, r4, r5
++ str r5, [r4] @ save phys_offset
++#else
++ mov r5, #PHYS_OFFSET @ r5 = phys_offset
++#endif
++
++ pgtbl r4, r5 @ r4 = page table address
+
+ /*
+ * Clear the 16K level 1 swapper page table
+@@ -255,8 +267,7 @@
+ * Then map first 1MB of ram in case it contains our boot params.
+ */
+ add r0, r4, #PAGE_OFFSET >> 18
+- orr r6, r7, #(PHYS_OFFSET & 0xff000000)
+- orr r6, r6, #(PHYS_OFFSET & 0x00e00000)
++ orr r6, r7, r5
+ str r6, [r0]
+
+ #ifdef CONFIG_XIP_KERNEL
+diff -Naur linux-2.6.20-rc7/arch/arm/kernel/setup.c linux-2.6.20-rc7-e1.0/arch/arm/kernel/setup.c
+--- linux-2.6.20-rc7/arch/arm/kernel/setup.c 2007-02-02 10:26:21.000000000 -0600
++++ linux-2.6.20-rc7-e1.0/arch/arm/kernel/setup.c 2007-02-02 16:23:05.000000000 -0600
+@@ -59,6 +59,16 @@
+ extern int root_mountflags;
+ extern void _stext, _text, _etext, __data_start, _edata, _end;
+
++#ifdef CONFIG_RUNTIME_PHYS_OFFSET
++/*
++ * The assignment is here solely to prevent this variable from ending
++ * up in bss. As the early startup code writes to it, we don't want it
++ * to be zeroed again later.
++ */
++unsigned long phys_offset = 0xdeadbeef;
++EXPORT_SYMBOL(phys_offset);
++#endif
++
+ unsigned int processor_id;
+ unsigned int __machine_arch_type;
+ EXPORT_SYMBOL(__machine_arch_type);
+@@ -749,7 +759,7 @@
+ { tag_size(tag_core), ATAG_CORE },
+ { 1, PAGE_SIZE, 0xff },
+ { tag_size(tag_mem32), ATAG_MEM },
+- { MEM_SIZE, PHYS_OFFSET },
++ { MEM_SIZE, 0 },
+ { 0, ATAG_NONE }
+ };
+
+@@ -770,6 +780,8 @@
+ struct machine_desc *mdesc;
+ char *from = default_command_line;
+
++ init_tags.mem.start = PHYS_OFFSET;
++
+ setup_processor();
+ mdesc = setup_machine(machine_arch_type);
+ machine_name = mdesc->name;
+diff -Naur linux-2.6.20-rc7/arch/arm/mach-ep93xx/Makefile.boot linux-2.6.20-rc7-e1.0/arch/arm/mach-ep93xx/Makefile.boot
+--- linux-2.6.20-rc7/arch/arm/mach-ep93xx/Makefile.boot 2006-11-29 15:57:37.000000000 -0600
++++ linux-2.6.20-rc7-e1.0/arch/arm/mach-ep93xx/Makefile.boot 2007-02-02 16:23:05.000000000 -0600
+@@ -1,2 +1 @@
+ zreladdr-y := 0x00008000
+-params_phys-y := 0x00000100
+diff -Naur linux-2.6.20-rc7/include/asm-arm/arch-ep93xx/memory.h linux-2.6.20-rc7-e1.0/include/asm-arm/arch-ep93xx/memory.h
+--- linux-2.6.20-rc7/include/asm-arm/arch-ep93xx/memory.h 2006-11-29 15:57:37.000000000 -0600
++++ linux-2.6.20-rc7-e1.0/include/asm-arm/arch-ep93xx/memory.h 2007-02-02 16:23:05.000000000 -0600
+@@ -5,7 +5,9 @@
+ #ifndef __ASM_ARCH_MEMORY_H
+ #define __ASM_ARCH_MEMORY_H
+
++#ifndef CONFIG_RUNTIME_PHYS_OFFSET
+ #define PHYS_OFFSET UL(0x00000000)
++#endif
+
+ #define __bus_to_virt(x) __phys_to_virt(x)
+ #define __virt_to_bus(x) __virt_to_phys(x)
+diff -Naur linux-2.6.20-rc7/include/asm-arm/memory.h linux-2.6.20-rc7-e1.0/include/asm-arm/memory.h
+--- linux-2.6.20-rc7/include/asm-arm/memory.h 2007-02-02 10:26:27.000000000 -0600
++++ linux-2.6.20-rc7-e1.0/include/asm-arm/memory.h 2007-02-02 16:23:05.000000000 -0600
+@@ -73,6 +73,14 @@
+ */
+ #define IOREMAP_MAX_ORDER 24
+
++/*
++ * PHYS_OFFSET determined at run time?
++ */
++#if defined(CONFIG_RUNTIME_PHYS_OFFSET) && !defined(__ASSEMBLY__)
++extern unsigned long phys_offset;
++#define PHYS_OFFSET (phys_offset)
++#endif
++
+ #else /* CONFIG_MMU */
+
+ /*
diff --git a/packages/linux/ep93xx-kernel_2.6.19+2.6.20-rc7.bb b/packages/linux/ep93xx-kernel_2.6.19+2.6.20-rc7.bb
new file mode 100644
index 0000000000..4c39b0fc90
--- /dev/null
+++ b/packages/linux/ep93xx-kernel_2.6.19+2.6.20-rc7.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "Linux Kernel for Cirrus Logic ep39xx compatible machines"
+SECTION = "kernel"
+LICENSE = "GPL"
+PR = "r1"
+
+COMPATIBLE_MACHINE = "ep93xx"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz2 \
+ ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/testing/patch-2.6.20-rc7.bz2;patch=1 \
+ file://dynamic-phys-offset-2.6.20-rc7.diff;patch=1 \
+ file://defconfig \
+ "
+
+S = "${WORKDIR}/linux-2.6.19"
+
+inherit kernel
+
+KERNEL_IMAGETYPE = "zImage"
+
+
+
+do_configure() {
+ rm -f ${S}/.config
+
+ if [ ! -e ${WORKDIR}/defconfig ]; then
+ die "No default configuration for ${MACHINE} available."
+ fi
+
+
+ if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
+ echo "CONFIG_AEABI=y" >> ${S}/.config
+ echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
+ else
+ echo "# CONFIG_AEABI is not set" >> ${S}/.config
+ echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
+ fi
+
+ sed -e '/CONFIG_AEABI/d' \
+ -e '/CONFIG_OABI_COMPAT=/d' \
+ '${WORKDIR}/defconfig' >>'${S}/.config'
+
+ yes '' | oe_runmake oldconfig
+
+
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_package after do_install
+
+
+
diff --git a/packages/linux/gta01-kernel_2.6.bb b/packages/linux/gta01-kernel_2.6.bb
new file mode 100644
index 0000000000..eaafb7e7b2
--- /dev/null
+++ b/packages/linux/gta01-kernel_2.6.bb
@@ -0,0 +1 @@
+require linux-gta01_2.6.17.14.bb
diff --git a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.1/defconfig-ipaqpxa b/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.1/defconfig-ipaqpxa
deleted file mode 100644
index ee30cf0a42..0000000000
--- a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.1/defconfig-ipaqpxa
+++ /dev/null
@@ -1,1578 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_OMAHA is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_RISCSTATION is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_AT91RM9200DK is not set
-# CONFIG_MINIMAL_OOPS is not set
-
-#
-# Linux As Bootldr support
-#
-# CONFIG_LAB is not set
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-
-#
-# Archimedes/A5000 Implementations (select only ONE)
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ACCELENT is not set
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_CONSUS is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_JORNADA56X is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SIMPUTER is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_REGISTERS is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-CONFIG_ARCH_H3900=y
-CONFIG_ARCH_H1900=y
-CONFIG_ARCH_H5400=y
-# CONFIG_ARCH_H2200 is not set
-CONFIG_ARCH_AXIM=y
-CONFIG_PXA_USB=m
-CONFIG_PXA_USB_NETLINK=m
-CONFIG_PXA_USB_CHAR=m
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_ARM1026 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_XSCALE_PXA250=y
-# CONFIG_XSCALE_80200_OLD is not set
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-# CONFIG_SA1100_IPAQ is not set
-CONFIG_PXA_IPAQ=y
-CONFIG_IPAQ_HANDHELD=y
-
-#
-# Compaq iPAQ Handheld
-#
-CONFIG_IPAQ_HAL=m
-# CONFIG_H3600_MICRO is not set
-CONFIG_IPAQ_HAS_ROSELLA=y
-CONFIG_IPAQ_HAS_ASIC3=y
-CONFIG_H3600_ASIC=m
-CONFIG_H3900_ASIC_DEBUG=m
-CONFIG_H5400_ASIC=m
-CONFIG_H1900_ASIC=m
-CONFIG_H1900_TS=m
-CONFIG_H3600_HARDWARE=y
-CONFIG_IPAQ_SLEEVE=m
-CONFIG_SLEEVE_DEBUG=y
-CONFIG_SLEEVE_DEBUG_VERBOSE=0
-# CONFIG_SLEEVE_IRQ_DEMUX is not set
-
-#
-# Dell Axim X5
-#
-CONFIG_AXIM_HAL=m
-
-#
-# Processor Features
-#
-# CONFIG_DISCONTIGMEM is not set
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CPU_FREQ=y
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=m
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=m
-# CONFIG_MERCURY_BACKPAQ is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=m
-CONFIG_MMC_DEBUG=y
-CONFIG_MMC_DEBUG_VERBOSE=0
-CONFIG_MMC_SAMSUNG_ASIC=m
-# CONFIG_MMC_S3C2410 is not set
-CONFIG_MMC_H5400=m
-CONFIG_MMC_ASIC3=m
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_XIP_KERNEL is not set
-
-#
-# At least one math emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=m
-# CONFIG_HWTIMER is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="keepinitrd"
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-CONFIG_PARPORT_PC_CML1=m
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-CONFIG_PARPORT_PC_PCMCIA=m
-# CONFIG_PARPORT_ARC is not set
-# CONFIG_PARPORT_IDP is not set
-# CONFIG_PARPORT_AMIGA is not set
-# CONFIG_PARPORT_MFC3 is not set
-# CONFIG_PARPORT_ATARI is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_SUNBPP is not set
-# CONFIG_PARPORT_OTHER is not set
-# CONFIG_PARPORT_1284 is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=1
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# 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=m
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_CFI_B1 is not set
-CONFIG_MTD_CFI_B2=y
-CONFIG_MTD_CFI_B4=y
-# CONFIG_MTD_CFI_B8 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_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_IPAQ=y
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_H720X is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_CEIVA is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-CONFIG_MTD_BLKMTD=m
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_NVRD=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-CONFIG_BLK_DEV_LVM=m
-CONFIG_BLK_DEV_DM=m
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-# CONFIG_NETLINK_DEV is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_TFTP is not set
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_MAC=m
-# CONFIG_IP_NF_MATCH_PKTTYPE is not set
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_DSCP is not set
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-# CONFIG_IP_NF_MATCH_HELPER is not set
-CONFIG_IP_NF_MATCH_STATE=m
-# CONFIG_IP_NF_MATCH_CONNTRACK is not set
-# CONFIG_IP_NF_MATCH_UNCLEAN is not set
-# CONFIG_IP_NF_MATCH_OWNER is not set
-CONFIG_IP_NF_FILTER=m
-# CONFIG_IP_NF_TARGET_REJECT is not set
-# CONFIG_IP_NF_TARGET_MIRROR is not set
-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_NAT_LOCAL is not set
-# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-# CONFIG_IP_NF_TARGET_ECN is not set
-# CONFIG_IP_NF_TARGET_DSCP is not set
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_ARPTABLES is not set
-CONFIG_IP_NF_COMPAT_IPCHAINS=m
-CONFIG_IP_NF_NAT_NEEDED=y
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MOBILITY=m
-CONFIG_IPV6_MOBILITY_MN=m
-# CONFIG_IPV6_MOBILITY_HA is not set
-CONFIG_IPV6_MOBILITY_DEBUG=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-# CONFIG_IP6_NF_MATCH_OWNER is not set
-CONFIG_IP6_NF_MATCH_MARK=m
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_AHESP is not set
-# CONFIG_IP6_NF_MATCH_LENGTH is not set
-# CONFIG_IP6_NF_MATCH_EUI64 is not set
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-
-#
-#
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
-CONFIG_BRIDGE=m
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_IPSEC=m
-
-#
-# IPSec options (FreeS/WAN)
-#
-CONFIG_KLIPS_AUTH_HMAC_MD5=y
-CONFIG_KLIPS_AUTH_HMAC_SHA1=y
-CONFIG_KLIPS_ENC_3DES=y
-
-#
-# ESP always enabled with tunnel mode
-#
-CONFIG_KLIPS_IPCOMP=y
-CONFIG_KLIPS_DEBUG=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-# CONFIG_SPECTRUM24T is not set
-
-#
-# Wireless Pcmcia cards support
-#
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-# CONFIG_WVLAN_CS is not set
-# CONFIG_MWVLAN_CS is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_HOSTAP_CS is not set
-CONFIG_NET_WIRELESS=y
-CONFIG_ATMELWLAN=y
-CONFIG_ATMELWLAN_USB_503A_RFMD=m
-CONFIG_ATMELWLAN_PCMCIA_502A=m
-CONFIG_ATMELWLAN_PCMCIA_3COM=m
-CONFIG_ATMELWLAN_PCMCIA_502AD=m
-CONFIG_ATMELWLAN_PCMCIA_502AE=m
-CONFIG_ATMELWLAN_PCMCIA_504=m
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_AXNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-CONFIG_NET_PCMCIA_RADIO=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_PCMCIA_NETWAVE=m
-CONFIG_PCMCIA_WAVELAN=m
-# CONFIG_AIRONET4500_CS is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-CONFIG_IRDA_ULTRA=y
-
-#
-# IrDA options
-#
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-CONFIG_IRDA_DEBUG=y
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-CONFIG_IRPORT_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-CONFIG_PXA_FIR=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=m
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=m
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_IDEDISK_STROKE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=m
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_SD_EXTRA_DEVS=40
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_SR_EXTRA_DEVS=2
-CONFIG_CHR_DEV_SG=m
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# 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_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID 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_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO 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_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-CONFIG_SCSI_PCMCIA=y
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=m
-CONFIG_INPUT_KEYBDEV=m
-CONFIG_INPUT_MOUSEDEV=m
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=m
-CONFIG_INPUT_UINPUT=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-CONFIG_SERIAL_EXTENDED=y
-# CONFIG_SERIAL_MANY_PORTS is not set
-# CONFIG_SERIAL_SHARE_IRQ is not set
-# CONFIG_SERIAL_DETECT_IRQ is not set
-# CONFIG_SERIAL_MULTIPORT is not set
-# CONFIG_HUB6 is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_S3C2410 is not set
-# CONFIG_SERIAL_S3C2410_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_SIR_PXA is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
-# CONFIG_PRINTER is not set
-# CONFIG_PPDEV is not set
-CONFIG_NEWTONKBD=m
-# CONFIG_SA1100_PROFILER is not set
-
-#
-# Compaq iPAQ H3600 support
-#
-CONFIG_TOUCHSCREEN_H3600=m
-# CONFIG_H3600_BACKPAQ_FPGA is not set
-# CONFIG_H3600_BACKPAQ_ACCEL is not set
-# CONFIG_H3600_BACKPAQ_GASGAUGE is not set
-# CONFIG_H3600_BACKPAQ_SRAM is not set
-# CONFIG_H3600_BACKPAQ_AUDIO is not set
-# CONFIG_H3600_STOWAWAY is not set
-# CONFIG_H3800_MICROKBD is not set
-# CONFIG_SA1100_LIRC is not set
-CONFIG_H5400_BUZZER=m
-CONFIG_H5400_FSI=m
-
-#
-# I2C support
-#
-CONFIG_I2C=m
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-CONFIG_I2C_PXA_ALGO=m
-CONFIG_I2C_PXA_ADAP=m
-CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_PROC=m
-# CONFIG_I2C_DS1307 is not set
-
-#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-# CONFIG_L3_ALGOBIT is not set
-# CONFIG_L3_BIT_SA1100_GPIO is not set
-
-#
-# Other L3 adapters
-#
-# CONFIG_L3_S3C2410 is not set
-# CONFIG_L3_SA1111 is not set
-# CONFIG_L3_BACKPAQ is not set
-# CONFIG_BIT_SA1100_GPIO is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=m
-# CONFIG_PSMOUSE is not set
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_MK712_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-CONFIG_INPUT_SERIO=m
-CONFIG_INPUT_SERPORT=m
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_PCWATCHDOG is not set
-# CONFIG_21285_WATCHDOG is not set
-# CONFIG_977_WATCHDOG is not set
-# CONFIG_SA1100_WATCHDOG is not set
-CONFIG_PXA_WATCHDOG=m
-# CONFIG_OMAHA_WATCHDOG is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_WAFER_WDT is not set
-# CONFIG_I810_TCO is not set
-# CONFIG_MIXCOMWD is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_W83877F_WDT is not set
-# CONFIG_WDT is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_PXA_RTC=m
-CONFIG_PXA_RTC_HACK=y
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=m
-CONFIG_PCMCIA_MOBILISCAN_CS=m
-# CONFIG_AXIM_TS is not set
-CONFIG_AXIM_KEY=m
-# CONFIG_AXIM_KEY_FIX is not set
-
-#
-# Multimedia devices
-#
-CONFIG_MEDIA=m
-CONFIG_VIDEO_DEV=m
-CONFIG_V4L2_DEV=m
-
-#
-# Video For Linux
-#
-CONFIG_VIDEO_PROC_FS=y
-# CONFIG_I2C_PARPORT is not set
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=m
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_ZORAN_BUZ is not set
-# CONFIG_VIDEO_ZORAN_DC10 is not set
-# CONFIG_VIDEO_ZORAN_LML33 is not set
-# CONFIG_VIDEO_ZR36120 is not set
-# CONFIG_VIDEO_MEYE is not set
-# CONFIG_VIDEO_CYBERPRO is not set
-# CONFIG_VIDEO_H3600_BACKPAQ is not set
-# CONFIG_VIDEO_HAWKEYE is not set
-
-#
-# Video for Linux 2 (V4L2)
-#
-CONFIG_VIDEO_WINNOV_CS=m
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_MIROPCM20 is not set
-# CONFIG_RADIO_MIROPCM20_RDS is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=m
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_UMSDOS_FS=m
-CONFIG_VFAT_FS=m
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_NAND is not set
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=m
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-# CONFIG_DRIVERFS_FS is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=m
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-CONFIG_SUNRPC=m
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-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_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
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_S3C2410 is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_EPSON1356 is not set
-# CONFIG_FB_MQ200 is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_8BPP is not set
-CONFIG_FB_PXA_16BPP=y
-CONFIG_FB_MQ1100=y
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-# CONFIG_FBCON_NO_LOGO is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-CONFIG_SOUND_H3900_UDA1380=m
-CONFIG_SOUND_H5400=m
-CONFIG_SOUND_OSS=m
-# CONFIG_SOUND_TRACEINIT is not set
-# CONFIG_SOUND_DMAP is not set
-# CONFIG_SOUND_AD1816 is not set
-# CONFIG_SOUND_SGALAXY is not set
-# CONFIG_SOUND_ADLIB is not set
-# CONFIG_SOUND_ACI_MIXER is not set
-# CONFIG_SOUND_CS4232 is not set
-# CONFIG_SOUND_SSCAPE is not set
-# CONFIG_SOUND_GUS is not set
-# CONFIG_SOUND_VMIDI is not set
-# CONFIG_SOUND_TRIX is not set
-# CONFIG_SOUND_MSS is not set
-# CONFIG_SOUND_MPU401 is not set
-# CONFIG_SOUND_NM256 is not set
-# CONFIG_SOUND_MAD16 is not set
-# CONFIG_SOUND_PAS is not set
-# CONFIG_PAS_JOYSTICK is not set
-# CONFIG_SOUND_PSS is not set
-# CONFIG_SOUND_SB is not set
-# CONFIG_SOUND_AWE32_SYNTH is not set
-# CONFIG_SOUND_WAVEFRONT is not set
-# CONFIG_SOUND_MAUI is not set
-# CONFIG_SOUND_YM3812 is not set
-# CONFIG_SOUND_OPL3SA1 is not set
-# CONFIG_SOUND_OPL3SA2 is not set
-# CONFIG_SOUND_YMFPCI is not set
-# CONFIG_SOUND_YMFPCI_LEGACY is not set
-# CONFIG_SOUND_UART6850 is not set
-# CONFIG_SOUND_AEDSP16 is not set
-# CONFIG_SOUND_VIDC is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-CONFIG_SOUND_PXA_AC97=m
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# Console Switches
-#
-# CONFIG_SWITCHES is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-CONFIG_USB_OHCI=m
-# CONFIG_USB_OHCI_SA1111 is not set
-CONFIG_USB_OHCI_H5400=m
-# CONFIG_USB_OHCI_S3C2410 is not set
-# CONFIG_USB_SL811HS is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_AUDIO=m
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_BLUETOOTH is not set
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=m
-
-#
-# USB Human Interface Devices (HID)
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_WACOM is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_OV511=m
-CONFIG_USB_PWC=m
-CONFIG_USB_SE401=m
-CONFIG_USB_STV680=m
-CONFIG_USB_VICAM=m
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DABUSB is not set
-
-#
-# USB Network adaptors
-#
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-CONFIG_USB_CDCETHER=m
-# CONFIG_USB_USBNET is not set
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_BRLVGER is not set
-
-#
-# Linux As Bootldr Modules
-#
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-# CONFIG_YMODEM is not set
-# CONFIG_LAB_DUMMY is not set
-# CONFIG_LAB_CRC is not set
-# CONFIG_LAB_YMODEM is not set
-# CONFIG_LAB_MTD is not set
-# CONFIG_LAB_COPY is not set
-# CONFIG_LAB_COPY_YMODEM is not set
-# CONFIG_LAB_COPY_FLASH is not set
-# CONFIG_LAB_COPY_FS is not set
-# CONFIG_LAB_COPY_WRAPPER is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BLUEZ_HCIUSB is not set
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-# CONFIG_BLUEZ_HCIUART_BCSP_TXCRC is not set
-# CONFIG_BLUEZ_HCIBFUSB is not set
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBT3C=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-# CONFIG_BLUEZ_HCIVHCI is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_FRAME_POINTER is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
-
-#
-# Library routines
-#
-# CONFIG_CRC32 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.4/defconfig-h3900 b/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.4/defconfig-h3900
deleted file mode 100644
index f4055e86c5..0000000000
--- a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.4/defconfig-h3900
+++ /dev/null
@@ -1,1578 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_OMAHA is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_RISCSTATION is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_AT91RM9200DK is not set
-# CONFIG_MINIMAL_OOPS is not set
-
-#
-# Linux As Bootldr support
-#
-# CONFIG_LAB is not set
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-
-#
-# Archimedes/A5000 Implementations (select only ONE)
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ACCELENT is not set
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_CONSUS is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_JORNADA56X is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SIMPUTER is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_REGISTERS is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-CONFIG_ARCH_H3900=y
-CONFIG_ARCH_H1900=y
-CONFIG_ARCH_H5400=y
-# CONFIG_ARCH_H2200 is not set
-CONFIG_ARCH_AXIM=y
-CONFIG_PXA_USB=m
-CONFIG_PXA_USB_NETLINK=m
-CONFIG_PXA_USB_CHAR=m
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_ARM1026 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_XSCALE_PXA250=y
-# CONFIG_XSCALE_80200_OLD is not set
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-# CONFIG_SA1100_IPAQ is not set
-CONFIG_PXA_IPAQ=y
-CONFIG_IPAQ_HANDHELD=y
-
-#
-# Compaq iPAQ Handheld
-#
-CONFIG_IPAQ_HAL=m
-# CONFIG_H3600_MICRO is not set
-CONFIG_IPAQ_HAS_ROSELLA=y
-CONFIG_IPAQ_HAS_ASIC3=y
-CONFIG_H3600_ASIC=m
-CONFIG_H3900_ASIC_DEBUG=m
-CONFIG_H5400_ASIC=m
-CONFIG_H1900_ASIC=m
-CONFIG_H1900_TS=m
-CONFIG_H3600_HARDWARE=y
-CONFIG_IPAQ_SLEEVE=m
-CONFIG_SLEEVE_DEBUG=y
-CONFIG_SLEEVE_DEBUG_VERBOSE=0
-# CONFIG_SLEEVE_IRQ_DEMUX is not set
-
-#
-# Dell Axim X5
-#
-CONFIG_AXIM_HAL=m
-
-#
-# Processor Features
-#
-# CONFIG_DISCONTIGMEM is not set
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CPU_FREQ=y
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=m
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=m
-# CONFIG_MERCURY_BACKPAQ is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_DEBUG_VERBOSE is not set
-CONFIG_MMC_SAMSUNG_ASIC=m
-# CONFIG_MMC_S3C2410 is not set
-CONFIG_MMC_H5400=m
-CONFIG_MMC_ASIC3=m
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_XIP_KERNEL is not set
-
-#
-# At least one math emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=m
-# CONFIG_HWTIMER is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="keepinitrd"
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-CONFIG_PARPORT_PC_CML1=m
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-CONFIG_PARPORT_PC_PCMCIA=m
-# CONFIG_PARPORT_ARC is not set
-# CONFIG_PARPORT_IDP is not set
-# CONFIG_PARPORT_AMIGA is not set
-# CONFIG_PARPORT_MFC3 is not set
-# CONFIG_PARPORT_ATARI is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_SUNBPP is not set
-# CONFIG_PARPORT_OTHER is not set
-# CONFIG_PARPORT_1284 is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=1
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# 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=m
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_CFI_B1 is not set
-CONFIG_MTD_CFI_B2=y
-CONFIG_MTD_CFI_B4=y
-# CONFIG_MTD_CFI_B8 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_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_IPAQ=y
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_H720X is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_CEIVA is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-CONFIG_MTD_BLKMTD=m
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_NVRD=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-CONFIG_BLK_DEV_LVM=m
-CONFIG_BLK_DEV_DM=m
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-# CONFIG_NETLINK_DEV is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_TFTP is not set
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_MAC=m
-# CONFIG_IP_NF_MATCH_PKTTYPE is not set
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_DSCP is not set
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-# CONFIG_IP_NF_MATCH_HELPER is not set
-CONFIG_IP_NF_MATCH_STATE=m
-# CONFIG_IP_NF_MATCH_CONNTRACK is not set
-# CONFIG_IP_NF_MATCH_UNCLEAN is not set
-# CONFIG_IP_NF_MATCH_OWNER is not set
-CONFIG_IP_NF_FILTER=m
-# CONFIG_IP_NF_TARGET_REJECT is not set
-# CONFIG_IP_NF_TARGET_MIRROR is not set
-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_NAT_LOCAL is not set
-# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-# CONFIG_IP_NF_TARGET_ECN is not set
-# CONFIG_IP_NF_TARGET_DSCP is not set
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_ARPTABLES is not set
-CONFIG_IP_NF_COMPAT_IPCHAINS=m
-CONFIG_IP_NF_NAT_NEEDED=y
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MOBILITY=m
-CONFIG_IPV6_MOBILITY_MN=m
-# CONFIG_IPV6_MOBILITY_HA is not set
-CONFIG_IPV6_MOBILITY_DEBUG=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-# CONFIG_IP6_NF_MATCH_OWNER is not set
-CONFIG_IP6_NF_MATCH_MARK=m
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_AHESP is not set
-# CONFIG_IP6_NF_MATCH_LENGTH is not set
-# CONFIG_IP6_NF_MATCH_EUI64 is not set
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-
-#
-#
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
-CONFIG_BRIDGE=m
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_IPSEC=m
-
-#
-# IPSec options (FreeS/WAN)
-#
-CONFIG_KLIPS_AUTH_HMAC_MD5=y
-CONFIG_KLIPS_AUTH_HMAC_SHA1=y
-CONFIG_KLIPS_ENC_3DES=y
-
-#
-# ESP always enabled with tunnel mode
-#
-CONFIG_KLIPS_IPCOMP=y
-CONFIG_KLIPS_DEBUG=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-# CONFIG_SPECTRUM24T is not set
-
-#
-# Wireless Pcmcia cards support
-#
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-# CONFIG_WVLAN_CS is not set
-# CONFIG_MWVLAN_CS is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_HOSTAP_CS is not set
-CONFIG_NET_WIRELESS=y
-CONFIG_ATMELWLAN=y
-CONFIG_ATMELWLAN_USB_503A_RFMD=m
-CONFIG_ATMELWLAN_PCMCIA_502A=m
-CONFIG_ATMELWLAN_PCMCIA_3COM=m
-CONFIG_ATMELWLAN_PCMCIA_502AD=m
-CONFIG_ATMELWLAN_PCMCIA_502AE=m
-CONFIG_ATMELWLAN_PCMCIA_504=m
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_AXNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-CONFIG_NET_PCMCIA_RADIO=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_PCMCIA_NETWAVE=m
-CONFIG_PCMCIA_WAVELAN=m
-# CONFIG_AIRONET4500_CS is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-CONFIG_IRDA_ULTRA=y
-
-#
-# IrDA options
-#
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-CONFIG_IRDA_DEBUG=y
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-CONFIG_IRPORT_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-CONFIG_PXA_FIR=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=m
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=m
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_IDEDISK_STROKE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=m
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_SD_EXTRA_DEVS=40
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_SR_EXTRA_DEVS=2
-CONFIG_CHR_DEV_SG=m
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# 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_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID 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_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO 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_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-CONFIG_SCSI_PCMCIA=y
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=m
-CONFIG_INPUT_KEYBDEV=m
-CONFIG_INPUT_MOUSEDEV=m
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=m
-CONFIG_INPUT_UINPUT=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-CONFIG_SERIAL_EXTENDED=y
-# CONFIG_SERIAL_MANY_PORTS is not set
-# CONFIG_SERIAL_SHARE_IRQ is not set
-# CONFIG_SERIAL_DETECT_IRQ is not set
-# CONFIG_SERIAL_MULTIPORT is not set
-# CONFIG_HUB6 is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_S3C2410 is not set
-# CONFIG_SERIAL_S3C2410_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_SIR_PXA is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
-# CONFIG_PRINTER is not set
-# CONFIG_PPDEV is not set
-CONFIG_NEWTONKBD=m
-# CONFIG_SA1100_PROFILER is not set
-
-#
-# Compaq iPAQ H3600 support
-#
-CONFIG_TOUCHSCREEN_H3600=m
-# CONFIG_H3600_BACKPAQ_FPGA is not set
-# CONFIG_H3600_BACKPAQ_ACCEL is not set
-# CONFIG_H3600_BACKPAQ_GASGAUGE is not set
-# CONFIG_H3600_BACKPAQ_SRAM is not set
-# CONFIG_H3600_BACKPAQ_AUDIO is not set
-# CONFIG_H3600_STOWAWAY is not set
-# CONFIG_H3800_MICROKBD is not set
-# CONFIG_SA1100_LIRC is not set
-CONFIG_H5400_BUZZER=m
-CONFIG_H5400_FSI=m
-
-#
-# I2C support
-#
-CONFIG_I2C=m
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-CONFIG_I2C_PXA_ALGO=m
-CONFIG_I2C_PXA_ADAP=m
-CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_PROC=m
-# CONFIG_I2C_DS1307 is not set
-
-#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-# CONFIG_L3_ALGOBIT is not set
-# CONFIG_L3_BIT_SA1100_GPIO is not set
-
-#
-# Other L3 adapters
-#
-# CONFIG_L3_S3C2410 is not set
-# CONFIG_L3_SA1111 is not set
-# CONFIG_L3_BACKPAQ is not set
-# CONFIG_BIT_SA1100_GPIO is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=m
-# CONFIG_PSMOUSE is not set
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_MK712_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-CONFIG_INPUT_SERIO=m
-CONFIG_INPUT_SERPORT=m
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_PCWATCHDOG is not set
-# CONFIG_21285_WATCHDOG is not set
-# CONFIG_977_WATCHDOG is not set
-# CONFIG_SA1100_WATCHDOG is not set
-CONFIG_PXA_WATCHDOG=m
-# CONFIG_OMAHA_WATCHDOG is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_WAFER_WDT is not set
-# CONFIG_I810_TCO is not set
-# CONFIG_MIXCOMWD is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_W83877F_WDT is not set
-# CONFIG_WDT is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_PXA_RTC=m
-CONFIG_PXA_RTC_HACK=y
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=m
-CONFIG_PCMCIA_MOBILISCAN_CS=m
-# CONFIG_AXIM_TS is not set
-CONFIG_AXIM_KEY=m
-# CONFIG_AXIM_KEY_FIX is not set
-
-#
-# Multimedia devices
-#
-CONFIG_MEDIA=m
-CONFIG_VIDEO_DEV=m
-CONFIG_V4L2_DEV=m
-
-#
-# Video For Linux
-#
-CONFIG_VIDEO_PROC_FS=y
-# CONFIG_I2C_PARPORT is not set
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=m
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_ZORAN_BUZ is not set
-# CONFIG_VIDEO_ZORAN_DC10 is not set
-# CONFIG_VIDEO_ZORAN_LML33 is not set
-# CONFIG_VIDEO_ZR36120 is not set
-# CONFIG_VIDEO_MEYE is not set
-# CONFIG_VIDEO_CYBERPRO is not set
-# CONFIG_VIDEO_H3600_BACKPAQ is not set
-# CONFIG_VIDEO_HAWKEYE is not set
-
-#
-# Video for Linux 2 (V4L2)
-#
-CONFIG_VIDEO_WINNOV_CS=m
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_MIROPCM20 is not set
-# CONFIG_RADIO_MIROPCM20_RDS is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=m
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_UMSDOS_FS=m
-CONFIG_VFAT_FS=m
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_NAND is not set
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=m
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-# CONFIG_DRIVERFS_FS is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=m
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-CONFIG_SUNRPC=m
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-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_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
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_S3C2410 is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_EPSON1356 is not set
-# CONFIG_FB_MQ200 is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_8BPP is not set
-CONFIG_FB_PXA_16BPP=y
-CONFIG_FB_MQ1100=y
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-# CONFIG_FBCON_NO_LOGO is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-CONFIG_SOUND_H3900_UDA1380=m
-CONFIG_SOUND_H5400=m
-CONFIG_SOUND_OSS=m
-# CONFIG_SOUND_TRACEINIT is not set
-# CONFIG_SOUND_DMAP is not set
-# CONFIG_SOUND_AD1816 is not set
-# CONFIG_SOUND_SGALAXY is not set
-# CONFIG_SOUND_ADLIB is not set
-# CONFIG_SOUND_ACI_MIXER is not set
-# CONFIG_SOUND_CS4232 is not set
-# CONFIG_SOUND_SSCAPE is not set
-# CONFIG_SOUND_GUS is not set
-# CONFIG_SOUND_VMIDI is not set
-# CONFIG_SOUND_TRIX is not set
-# CONFIG_SOUND_MSS is not set
-# CONFIG_SOUND_MPU401 is not set
-# CONFIG_SOUND_NM256 is not set
-# CONFIG_SOUND_MAD16 is not set
-# CONFIG_SOUND_PAS is not set
-# CONFIG_PAS_JOYSTICK is not set
-# CONFIG_SOUND_PSS is not set
-# CONFIG_SOUND_SB is not set
-# CONFIG_SOUND_AWE32_SYNTH is not set
-# CONFIG_SOUND_WAVEFRONT is not set
-# CONFIG_SOUND_MAUI is not set
-# CONFIG_SOUND_YM3812 is not set
-# CONFIG_SOUND_OPL3SA1 is not set
-# CONFIG_SOUND_OPL3SA2 is not set
-# CONFIG_SOUND_YMFPCI is not set
-# CONFIG_SOUND_YMFPCI_LEGACY is not set
-# CONFIG_SOUND_UART6850 is not set
-# CONFIG_SOUND_AEDSP16 is not set
-# CONFIG_SOUND_VIDC is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-CONFIG_SOUND_PXA_AC97=m
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# Console Switches
-#
-# CONFIG_SWITCHES is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-CONFIG_USB_OHCI=m
-# CONFIG_USB_OHCI_SA1111 is not set
-CONFIG_USB_OHCI_H5400=m
-# CONFIG_USB_OHCI_S3C2410 is not set
-# CONFIG_USB_SL811HS is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_AUDIO=m
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_BLUETOOTH is not set
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=m
-
-#
-# USB Human Interface Devices (HID)
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_WACOM is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_OV511=m
-CONFIG_USB_PWC=m
-CONFIG_USB_SE401=m
-CONFIG_USB_STV680=m
-CONFIG_USB_VICAM=m
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DABUSB is not set
-
-#
-# USB Network adaptors
-#
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-CONFIG_USB_CDCETHER=m
-# CONFIG_USB_USBNET is not set
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_BRLVGER is not set
-
-#
-# Linux As Bootldr Modules
-#
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-# CONFIG_YMODEM is not set
-# CONFIG_LAB_DUMMY is not set
-# CONFIG_LAB_CRC is not set
-# CONFIG_LAB_YMODEM is not set
-# CONFIG_LAB_MTD is not set
-# CONFIG_LAB_COPY is not set
-# CONFIG_LAB_COPY_YMODEM is not set
-# CONFIG_LAB_COPY_FLASH is not set
-# CONFIG_LAB_COPY_FS is not set
-# CONFIG_LAB_COPY_WRAPPER is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BLUEZ_HCIUSB is not set
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-# CONFIG_BLUEZ_HCIUART_BCSP_TXCRC is not set
-# CONFIG_BLUEZ_HCIBFUSB is not set
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBT3C=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-# CONFIG_BLUEZ_HCIVHCI is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_FRAME_POINTER is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
-
-#
-# Library routines
-#
-# CONFIG_CRC32 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.4/mmc_h5400.patch b/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.4/mmc_h5400.patch
deleted file mode 100644
index 2f75747ebf..0000000000
--- a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.4/mmc_h5400.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- kernel/drivers/mmc/mmc_h5400.c.old 2004-12-06 20:41:32.000000000 +0000
-+++ kernel/drivers/mmc/mmc_h5400.c 2004-12-06 20:42:02.000000000 +0000
-@@ -28,6 +28,7 @@
- #include <asm/irq.h>
- #include <asm/io.h> /* ioremap() */
- #include <asm/unaligned.h>
-+#include <asm/mach-types.h>
-
- #include <asm/arch/hardware.h>
- #include <asm/arch/h5400-gpio.h>
-@@ -97,6 +98,9 @@
- {
- int retval;
-
-+ if (!machine_is_h5400())
-+ return -ENODEV;
-+
- h5400_mmc_lowlevel.sd_base = ioremap(H5400_ASIC_PHYS + _H5400_ASIC_SDI_Base, 0x10000) + 0x30;
- retval = s3c_mmc_register_slot(&h5400_mmc_lowlevel);
- if ( retval < 0 )
diff --git a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.5/defconfig-h3900 b/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.5/defconfig-h3900
deleted file mode 100644
index d72096cc2f..0000000000
--- a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.5/defconfig-h3900
+++ /dev/null
@@ -1,1447 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_OMAHA is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_RISCSTATION is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_AT91RM9200DK is not set
-# CONFIG_MINIMAL_OOPS is not set
-
-#
-# Linux As Bootldr support
-#
-# CONFIG_LAB is not set
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ACCELENT is not set
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_CONSUS is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_JORNADA56X is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SIMPUTER is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_REGISTERS is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-CONFIG_ARCH_H3900=y
-CONFIG_ARCH_H1900=y
-CONFIG_ARCH_H5400=y
-# CONFIG_ARCH_H2200 is not set
-CONFIG_ARCH_AXIM=y
-CONFIG_PXA_USB=m
-CONFIG_PXA_USB_NETLINK=m
-CONFIG_PXA_USB_CHAR=m
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_ARM1026 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_XSCALE_PXA250=y
-# CONFIG_XSCALE_80200_OLD is not set
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-# CONFIG_SA1100_IPAQ is not set
-CONFIG_PXA_IPAQ=y
-CONFIG_IPAQ_HANDHELD=y
-
-#
-# Compaq iPAQ Handheld
-#
-CONFIG_IPAQ_HAL=m
-# CONFIG_H3600_MICRO is not set
-CONFIG_IPAQ_HAS_ROSELLA=y
-CONFIG_IPAQ_HAS_ASIC3=y
-CONFIG_H3600_ASIC=m
-CONFIG_H3900_ASIC_DEBUG=m
-CONFIG_H5400_ASIC=m
-CONFIG_H1900_ASIC=m
-CONFIG_H1900_TS=m
-CONFIG_H3600_HARDWARE=y
-CONFIG_IPAQ_SLEEVE=m
-CONFIG_SLEEVE_DEBUG=y
-CONFIG_SLEEVE_DEBUG_VERBOSE=0
-# CONFIG_SLEEVE_IRQ_DEMUX is not set
-
-#
-# Dell Axim X5
-#
-CONFIG_AXIM_HAL=m
-# CONFIG_DISCONTIGMEM is not set
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CPU_FREQ=y
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=m
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=m
-# CONFIG_MERCURY_BACKPAQ is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_SAMSUNG_ASIC=m
-# CONFIG_MMC_S3C2410 is not set
-CONFIG_MMC_H5400=m
-CONFIG_MMC_ASIC3=m
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_XIP_KERNEL is not set
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=m
-# CONFIG_HWTIMER is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="keepinitrd"
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-CONFIG_PARPORT_PC_CML1=m
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-CONFIG_PARPORT_PC_PCMCIA=m
-# CONFIG_PARPORT_ARC is not set
-# CONFIG_PARPORT_IDP is not set
-# CONFIG_PARPORT_AMIGA is not set
-# CONFIG_PARPORT_MFC3 is not set
-# CONFIG_PARPORT_ATARI is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_SUNBPP is not set
-# CONFIG_PARPORT_OTHER is not set
-# CONFIG_PARPORT_1284 is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=1
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_CFI_B1 is not set
-CONFIG_MTD_CFI_B2=y
-CONFIG_MTD_CFI_B4=y
-# CONFIG_MTD_CFI_B8 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_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_IPAQ=y
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_H720X is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_CEIVA is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-CONFIG_MTD_BLKMTD=m
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_NVRD=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-CONFIG_BLK_DEV_LVM=m
-CONFIG_BLK_DEV_DM=m
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-# CONFIG_NETLINK_DEV is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_TFTP is not set
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_MAC=m
-# CONFIG_IP_NF_MATCH_PKTTYPE is not set
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_DSCP is not set
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-# CONFIG_IP_NF_MATCH_HELPER is not set
-CONFIG_IP_NF_MATCH_STATE=m
-# CONFIG_IP_NF_MATCH_CONNTRACK is not set
-# CONFIG_IP_NF_MATCH_UNCLEAN is not set
-# CONFIG_IP_NF_MATCH_OWNER is not set
-CONFIG_IP_NF_FILTER=m
-# CONFIG_IP_NF_TARGET_REJECT is not set
-# CONFIG_IP_NF_TARGET_MIRROR is not set
-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_NAT_LOCAL is not set
-# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-# CONFIG_IP_NF_TARGET_ECN is not set
-# CONFIG_IP_NF_TARGET_DSCP is not set
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_ARPTABLES is not set
-CONFIG_IP_NF_COMPAT_IPCHAINS=m
-CONFIG_IP_NF_NAT_NEEDED=y
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MOBILITY=m
-CONFIG_IPV6_MOBILITY_MN=m
-# CONFIG_IPV6_MOBILITY_HA is not set
-CONFIG_IPV6_MOBILITY_DEBUG=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-# CONFIG_IP6_NF_MATCH_OWNER is not set
-CONFIG_IP6_NF_MATCH_MARK=m
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_AHESP is not set
-# CONFIG_IP6_NF_MATCH_LENGTH is not set
-# CONFIG_IP6_NF_MATCH_EUI64 is not set
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
-CONFIG_BRIDGE=m
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_IPSEC=m
-CONFIG_KLIPS_AUTH_HMAC_MD5=y
-CONFIG_KLIPS_AUTH_HMAC_SHA1=y
-CONFIG_KLIPS_ENC_3DES=y
-CONFIG_KLIPS_IPCOMP=y
-CONFIG_KLIPS_DEBUG=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-# CONFIG_SPECTRUM24T is not set
-# CONFIG_PCMCIA_HERMES is not set
-CONFIG_AIRO_CS=m
-# CONFIG_WVLAN_CS is not set
-# CONFIG_MWVLAN_CS is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_HOSTAP_CS is not set
-CONFIG_NET_WIRELESS=y
-# CONFIG_ATMELWLAN is not set
-# CONFIG_ATMELWLAN_USB_503A_RFMD is not set
-# CONFIG_ATMELWLAN_PCMCIA_502A is not set
-# CONFIG_ATMELWLAN_PCMCIA_3COM is not set
-# CONFIG_ATMELWLAN_PCMCIA_502AD is not set
-# CONFIG_ATMELWLAN_PCMCIA_502AE is not set
-# CONFIG_ATMELWLAN_PCMCIA_504 is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_AXNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-CONFIG_NET_PCMCIA_RADIO=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_PCMCIA_NETWAVE=m
-CONFIG_PCMCIA_WAVELAN=m
-# CONFIG_AIRONET4500_CS is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=m
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-CONFIG_IRDA_ULTRA=y
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-CONFIG_IRDA_DEBUG=y
-
-#
-# Infrared-port device drivers
-#
-CONFIG_IRTTY_SIR=m
-CONFIG_IRPORT_SIR=m
-# CONFIG_DONGLE is not set
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-CONFIG_PXA_FIR=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=m
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=m
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_IDEDISK_STROKE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_SD_EXTRA_DEVS=40
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_SR_EXTRA_DEVS=2
-CONFIG_CHR_DEV_SG=m
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# 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_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID 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_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO 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_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-CONFIG_SCSI_PCMCIA=y
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=m
-CONFIG_INPUT_KEYBDEV=m
-CONFIG_INPUT_MOUSEDEV=m
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=m
-CONFIG_INPUT_UINPUT=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-CONFIG_SERIAL_EXTENDED=y
-# CONFIG_SERIAL_MANY_PORTS is not set
-# CONFIG_SERIAL_SHARE_IRQ is not set
-# CONFIG_SERIAL_DETECT_IRQ is not set
-# CONFIG_SERIAL_MULTIPORT is not set
-# CONFIG_HUB6 is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_S3C2410 is not set
-# CONFIG_SERIAL_S3C2410_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_SIR_PXA is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
-# CONFIG_PRINTER is not set
-# CONFIG_PPDEV is not set
-CONFIG_NEWTONKBD=m
-# CONFIG_SA1100_PROFILER is not set
-CONFIG_TOUCHSCREEN_H3600=m
-# CONFIG_H3600_BACKPAQ_FPGA is not set
-# CONFIG_H3600_BACKPAQ_ACCEL is not set
-# CONFIG_H3600_BACKPAQ_GASGAUGE is not set
-# CONFIG_H3600_BACKPAQ_SRAM is not set
-# CONFIG_H3600_BACKPAQ_AUDIO is not set
-# CONFIG_H3600_STOWAWAY is not set
-# CONFIG_H3800_MICROKBD is not set
-# CONFIG_SA1100_LIRC is not set
-CONFIG_H5400_BUZZER=m
-CONFIG_H5400_FSI=m
-
-#
-# I2C support
-#
-CONFIG_I2C=m
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-CONFIG_I2C_PXA_ALGO=m
-CONFIG_I2C_PXA_ADAP=m
-CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_PROC=m
-# CONFIG_I2C_DS1307 is not set
-
-#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-# CONFIG_L3_ALGOBIT is not set
-# CONFIG_L3_BIT_SA1100_GPIO is not set
-# CONFIG_L3_S3C2410 is not set
-# CONFIG_L3_SA1111 is not set
-# CONFIG_L3_BACKPAQ is not set
-# CONFIG_BIT_SA1100_GPIO is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=m
-# CONFIG_PSMOUSE is not set
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_MK712_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-CONFIG_INPUT_SERIO=m
-CONFIG_INPUT_SERPORT=m
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_PCWATCHDOG is not set
-# CONFIG_21285_WATCHDOG is not set
-# CONFIG_977_WATCHDOG is not set
-# CONFIG_SA1100_WATCHDOG is not set
-CONFIG_PXA_WATCHDOG=m
-# CONFIG_OMAHA_WATCHDOG is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_WAFER_WDT is not set
-# CONFIG_I810_TCO is not set
-# CONFIG_MIXCOMWD is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_W83877F_WDT is not set
-# CONFIG_WDT is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_PXA_RTC=m
-CONFIG_PXA_RTC_HACK=y
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=m
-CONFIG_PCMCIA_MOBILISCAN_CS=m
-# CONFIG_AXIM_TS is not set
-CONFIG_AXIM_KEY=m
-# CONFIG_AXIM_KEY_FIX is not set
-
-#
-# Multimedia devices
-#
-CONFIG_MEDIA=m
-CONFIG_VIDEO_DEV=m
-CONFIG_V4L2_DEV=m
-
-#
-# Video For Linux
-#
-CONFIG_VIDEO_PROC_FS=y
-# CONFIG_I2C_PARPORT is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=m
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_ZORAN_BUZ is not set
-# CONFIG_VIDEO_ZORAN_DC10 is not set
-# CONFIG_VIDEO_ZORAN_LML33 is not set
-# CONFIG_VIDEO_ZR36120 is not set
-# CONFIG_VIDEO_MEYE is not set
-# CONFIG_VIDEO_CYBERPRO is not set
-# CONFIG_VIDEO_H3600_BACKPAQ is not set
-# CONFIG_VIDEO_HAWKEYE is not set
-CONFIG_VIDEO_WINNOV_CS=m
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_MIROPCM20 is not set
-# CONFIG_RADIO_MIROPCM20_RDS is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=m
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_UMSDOS_FS=m
-CONFIG_VFAT_FS=m
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_NAND is not set
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=m
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-# CONFIG_DRIVERFS_FS is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=m
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-CONFIG_SUNRPC=m
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-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_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
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_S3C2410 is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_EPSON1356 is not set
-# CONFIG_FB_MQ200 is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_8BPP is not set
-CONFIG_FB_PXA_16BPP=y
-CONFIG_FB_MQ1100=y
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-# CONFIG_FBCON_NO_LOGO is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-CONFIG_SOUND_H3900_UDA1380=m
-CONFIG_SOUND_H5400=m
-CONFIG_SOUND_OSS=m
-# CONFIG_SOUND_TRACEINIT is not set
-# CONFIG_SOUND_DMAP is not set
-# CONFIG_SOUND_AD1816 is not set
-# CONFIG_SOUND_SGALAXY is not set
-# CONFIG_SOUND_ADLIB is not set
-# CONFIG_SOUND_ACI_MIXER is not set
-# CONFIG_SOUND_CS4232 is not set
-# CONFIG_SOUND_SSCAPE is not set
-# CONFIG_SOUND_GUS is not set
-# CONFIG_SOUND_VMIDI is not set
-# CONFIG_SOUND_TRIX is not set
-# CONFIG_SOUND_MSS is not set
-# CONFIG_SOUND_MPU401 is not set
-# CONFIG_SOUND_NM256 is not set
-# CONFIG_SOUND_MAD16 is not set
-# CONFIG_SOUND_PAS is not set
-# CONFIG_PAS_JOYSTICK is not set
-# CONFIG_SOUND_PSS is not set
-# CONFIG_SOUND_SB is not set
-# CONFIG_SOUND_AWE32_SYNTH is not set
-# CONFIG_SOUND_WAVEFRONT is not set
-# CONFIG_SOUND_MAUI is not set
-# CONFIG_SOUND_YM3812 is not set
-# CONFIG_SOUND_OPL3SA1 is not set
-# CONFIG_SOUND_OPL3SA2 is not set
-# CONFIG_SOUND_YMFPCI is not set
-# CONFIG_SOUND_YMFPCI_LEGACY is not set
-# CONFIG_SOUND_UART6850 is not set
-# CONFIG_SOUND_AEDSP16 is not set
-# CONFIG_SOUND_VIDC is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-CONFIG_SOUND_PXA_AC97=m
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# Console Switches
-#
-# CONFIG_SWITCHES is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-CONFIG_USB_OHCI=m
-# CONFIG_USB_OHCI_SA1111 is not set
-CONFIG_USB_OHCI_H5400=m
-CONFIG_USB_SL811HS=m
-CONFIG_USB_SL811HS_CS=m
-CONFIG_USB_AUDIO=m
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_BLUETOOTH is not set
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=m
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_OV511=m
-CONFIG_USB_PWC=m
-# CONFIG_USB_QC is not set
-CONFIG_USB_SE401=m
-CONFIG_USB_STV680=m
-CONFIG_USB_VICAM=m
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DABUSB is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-CONFIG_USB_CDCETHER=m
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-CONFIG_USB_SERIAL_IPAQ=m
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_BRLVGER is not set
-
-#
-# Linux As Bootldr Modules
-#
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-# CONFIG_YMODEM is not set
-# CONFIG_LAB_DUMMY is not set
-# CONFIG_LAB_CRC is not set
-# CONFIG_LAB_YMODEM is not set
-# CONFIG_LAB_MTD is not set
-# CONFIG_LAB_COPY is not set
-# CONFIG_LAB_COPY_YMODEM is not set
-# CONFIG_LAB_COPY_FLASH is not set
-# CONFIG_LAB_COPY_FS is not set
-# CONFIG_LAB_COPY_WRAPPER is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BLUEZ_HCIUSB=m
-# CONFIG_BLUEZ_HCIUSB_SCO is not set
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-# CONFIG_BLUEZ_HCIUART_BCSP_TXCRC is not set
-# CONFIG_BLUEZ_HCIBFUSB is not set
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBT3C=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-# CONFIG_BLUEZ_HCIVHCI is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_FRAME_POINTER is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
-
-#
-# Library routines
-#
-# CONFIG_CRC32 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.6/defconfig-h3900 b/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.6/defconfig-h3900
deleted file mode 100644
index 5c87c3925f..0000000000
--- a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh37.6/defconfig-h3900
+++ /dev/null
@@ -1,1468 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_OMAHA is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_RISCSTATION is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_AT91RM9200DK is not set
-# CONFIG_MINIMAL_OOPS is not set
-
-#
-# Linux As Bootldr support
-#
-# CONFIG_LAB is not set
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ACCELENT is not set
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_CONSUS is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_JORNADA56X is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SIMPUTER is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_REGISTERS is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-CONFIG_ARCH_H3900=y
-CONFIG_ARCH_H1900=y
-CONFIG_ARCH_H5400=y
-# CONFIG_ARCH_H2200 is not set
-CONFIG_ARCH_AXIM=y
-CONFIG_PXA_USB=m
-CONFIG_PXA_USB_NETLINK=m
-CONFIG_PXA_USB_CHAR=m
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_ARM1026 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_XSCALE_PXA250=y
-# CONFIG_XSCALE_80200_OLD is not set
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-# CONFIG_SA1100_IPAQ is not set
-CONFIG_PXA_IPAQ=y
-CONFIG_IPAQ_HANDHELD=y
-
-#
-# Compaq iPAQ Handheld
-#
-CONFIG_IPAQ_HAL=m
-# CONFIG_H3600_MICRO is not set
-CONFIG_IPAQ_HAS_ROSELLA=y
-CONFIG_IPAQ_HAS_ASIC3=y
-CONFIG_H3600_ASIC=m
-CONFIG_H3900_ASIC_DEBUG=m
-CONFIG_H5400_ASIC=m
-CONFIG_H1900_ASIC=m
-CONFIG_H1900_TS=m
-CONFIG_H3600_HARDWARE=y
-CONFIG_IPAQ_SLEEVE=m
-CONFIG_SLEEVE_DEBUG=y
-CONFIG_SLEEVE_DEBUG_VERBOSE=0
-# CONFIG_SLEEVE_IRQ_DEMUX is not set
-
-#
-# Dell Axim X5
-#
-CONFIG_AXIM_HAL=m
-# CONFIG_DISCONTIGMEM is not set
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CPU_FREQ=y
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=m
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=m
-# CONFIG_MERCURY_BACKPAQ is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_SAMSUNG_ASIC=m
-# CONFIG_MMC_S3C2410 is not set
-CONFIG_MMC_H5400=m
-CONFIG_MMC_ASIC3=m
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_XIP_KERNEL is not set
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=m
-# CONFIG_HWTIMER is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="keepinitrd"
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-CONFIG_PARPORT_PC_CML1=m
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-CONFIG_PARPORT_PC_PCMCIA=m
-# CONFIG_PARPORT_ARC is not set
-# CONFIG_PARPORT_IDP is not set
-# CONFIG_PARPORT_AMIGA is not set
-# CONFIG_PARPORT_MFC3 is not set
-# CONFIG_PARPORT_ATARI is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_SUNBPP is not set
-# CONFIG_PARPORT_OTHER is not set
-# CONFIG_PARPORT_1284 is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=1
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_CFI_B1 is not set
-CONFIG_MTD_CFI_B2=y
-CONFIG_MTD_CFI_B4=y
-# CONFIG_MTD_CFI_B8 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_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_IPAQ=y
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_H720X is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_CEIVA is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-CONFIG_MTD_BLKMTD=m
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_NVRD=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-CONFIG_BLK_DEV_LVM=m
-CONFIG_BLK_DEV_DM=m
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-# CONFIG_NETLINK_DEV is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_TFTP is not set
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_MAC=m
-# CONFIG_IP_NF_MATCH_PKTTYPE is not set
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_DSCP is not set
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-# CONFIG_IP_NF_MATCH_HELPER is not set
-CONFIG_IP_NF_MATCH_STATE=m
-# CONFIG_IP_NF_MATCH_CONNTRACK is not set
-# CONFIG_IP_NF_MATCH_UNCLEAN is not set
-# CONFIG_IP_NF_MATCH_OWNER is not set
-CONFIG_IP_NF_FILTER=m
-# CONFIG_IP_NF_TARGET_REJECT is not set
-# CONFIG_IP_NF_TARGET_MIRROR is not set
-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_NAT_LOCAL is not set
-# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-# CONFIG_IP_NF_TARGET_ECN is not set
-# CONFIG_IP_NF_TARGET_DSCP is not set
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_ARPTABLES is not set
-CONFIG_IP_NF_COMPAT_IPCHAINS=m
-CONFIG_IP_NF_NAT_NEEDED=y
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MOBILITY=m
-CONFIG_IPV6_MOBILITY_MN=m
-# CONFIG_IPV6_MOBILITY_HA is not set
-CONFIG_IPV6_MOBILITY_DEBUG=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-# CONFIG_IP6_NF_MATCH_OWNER is not set
-CONFIG_IP6_NF_MATCH_MARK=m
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_AHESP is not set
-# CONFIG_IP6_NF_MATCH_LENGTH is not set
-# CONFIG_IP6_NF_MATCH_EUI64 is not set
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
-CONFIG_BRIDGE=m
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_IPSEC=m
-CONFIG_KLIPS_AUTH_HMAC_MD5=y
-CONFIG_KLIPS_AUTH_HMAC_SHA1=y
-CONFIG_KLIPS_ENC_3DES=y
-CONFIG_KLIPS_IPCOMP=y
-CONFIG_KLIPS_DEBUG=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-# CONFIG_SPECTRUM24T is not set
-# CONFIG_PCMCIA_HERMES is not set
-CONFIG_AIRO_CS=m
-# CONFIG_WVLAN_CS is not set
-# CONFIG_MWVLAN_CS is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_HOSTAP_CS is not set
-CONFIG_NET_WIRELESS=y
-# CONFIG_ATMELWLAN is not set
-# CONFIG_ATMELWLAN_USB_503A_RFMD is not set
-# CONFIG_ATMELWLAN_PCMCIA_502A is not set
-# CONFIG_ATMELWLAN_PCMCIA_3COM is not set
-# CONFIG_ATMELWLAN_PCMCIA_502AD is not set
-# CONFIG_ATMELWLAN_PCMCIA_502AE is not set
-# CONFIG_ATMELWLAN_PCMCIA_504 is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_AXNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-CONFIG_NET_PCMCIA_RADIO=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_PCMCIA_NETWAVE=m
-CONFIG_PCMCIA_WAVELAN=m
-# CONFIG_AIRONET4500_CS is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=m
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-CONFIG_IRDA_ULTRA=y
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-CONFIG_IRDA_DEBUG=y
-
-#
-# Infrared-port device drivers
-#
-CONFIG_IRTTY_SIR=m
-CONFIG_IRPORT_SIR=m
-# CONFIG_DONGLE is not set
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-CONFIG_PXA_FIR=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=m
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=m
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_IDEDISK_STROKE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_SD_EXTRA_DEVS=40
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_SR_EXTRA_DEVS=2
-CONFIG_CHR_DEV_SG=m
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# 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_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID 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_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO 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_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-CONFIG_SCSI_PCMCIA=y
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=m
-CONFIG_INPUT_KEYBDEV=m
-CONFIG_INPUT_MOUSEDEV=m
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=m
-CONFIG_INPUT_UINPUT=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-CONFIG_SERIAL_EXTENDED=y
-# CONFIG_SERIAL_MANY_PORTS is not set
-# CONFIG_SERIAL_SHARE_IRQ is not set
-# CONFIG_SERIAL_DETECT_IRQ is not set
-# CONFIG_SERIAL_MULTIPORT is not set
-# CONFIG_HUB6 is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_S3C2410 is not set
-# CONFIG_SERIAL_S3C2410_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_SIR_PXA is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
-# CONFIG_PRINTER is not set
-# CONFIG_PPDEV is not set
-CONFIG_NEWTONKBD=m
-# CONFIG_SA1100_PROFILER is not set
-CONFIG_TOUCHSCREEN_H3600=m
-# CONFIG_H3600_BACKPAQ_FPGA is not set
-# CONFIG_H3600_BACKPAQ_ACCEL is not set
-# CONFIG_H3600_BACKPAQ_GASGAUGE is not set
-# CONFIG_H3600_BACKPAQ_SRAM is not set
-# CONFIG_H3600_BACKPAQ_AUDIO is not set
-# CONFIG_H3600_STOWAWAY is not set
-# CONFIG_H3800_MICROKBD is not set
-# CONFIG_SA1100_LIRC is not set
-CONFIG_H5400_BUZZER=m
-CONFIG_H5400_FSI=m
-
-#
-# I2C support
-#
-CONFIG_I2C=m
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-CONFIG_I2C_PXA_ALGO=m
-CONFIG_I2C_PXA_ADAP=m
-CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_PROC=m
-# CONFIG_I2C_DS1307 is not set
-
-#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-# CONFIG_L3_ALGOBIT is not set
-# CONFIG_L3_BIT_SA1100_GPIO is not set
-# CONFIG_L3_S3C2410 is not set
-# CONFIG_L3_SA1111 is not set
-# CONFIG_L3_BACKPAQ is not set
-# CONFIG_BIT_SA1100_GPIO is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=m
-# CONFIG_PSMOUSE is not set
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_MK712_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-CONFIG_INPUT_SERIO=m
-CONFIG_INPUT_SERPORT=m
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_PCWATCHDOG is not set
-# CONFIG_21285_WATCHDOG is not set
-# CONFIG_977_WATCHDOG is not set
-# CONFIG_SA1100_WATCHDOG is not set
-CONFIG_PXA_WATCHDOG=m
-# CONFIG_OMAHA_WATCHDOG is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_WAFER_WDT is not set
-# CONFIG_I810_TCO is not set
-# CONFIG_MIXCOMWD is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_W83877F_WDT is not set
-# CONFIG_WDT is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_PXA_RTC=m
-CONFIG_PXA_RTC_HACK=y
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=m
-CONFIG_PCMCIA_MOBILISCAN_CS=m
-# CONFIG_AXIM_TS is not set
-CONFIG_AXIM_KEY=m
-# CONFIG_AXIM_KEY_FIX is not set
-
-#
-# Multimedia devices
-#
-CONFIG_MEDIA=m
-CONFIG_VIDEO_DEV=m
-CONFIG_V4L2_DEV=m
-
-#
-# Video For Linux
-#
-CONFIG_VIDEO_PROC_FS=y
-# CONFIG_I2C_PARPORT is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=m
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_ZORAN_BUZ is not set
-# CONFIG_VIDEO_ZORAN_DC10 is not set
-# CONFIG_VIDEO_ZORAN_LML33 is not set
-# CONFIG_VIDEO_ZR36120 is not set
-# CONFIG_VIDEO_MEYE is not set
-# CONFIG_VIDEO_CYBERPRO is not set
-# CONFIG_VIDEO_H3600_BACKPAQ is not set
-# CONFIG_VIDEO_HAWKEYE is not set
-CONFIG_VIDEO_WINNOV_CS=m
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_MIROPCM20 is not set
-# CONFIG_RADIO_MIROPCM20_RDS is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=m
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_UMSDOS_FS=m
-CONFIG_VFAT_FS=m
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_NAND is not set
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=m
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-# CONFIG_DRIVERFS_FS is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=m
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-CONFIG_SUNRPC=m
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-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_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
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_S3C2410 is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_EPSON1356 is not set
-# CONFIG_FB_MQ200 is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_8BPP is not set
-CONFIG_FB_PXA_16BPP=y
-CONFIG_FB_MQ1100=y
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-# CONFIG_FBCON_NO_LOGO is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-CONFIG_SOUND_H3900_UDA1380=m
-CONFIG_SOUND_H5400=m
-CONFIG_SOUND_OSS=m
-# CONFIG_SOUND_TRACEINIT is not set
-# CONFIG_SOUND_DMAP is not set
-# CONFIG_SOUND_AD1816 is not set
-# CONFIG_SOUND_SGALAXY is not set
-# CONFIG_SOUND_ADLIB is not set
-# CONFIG_SOUND_ACI_MIXER is not set
-# CONFIG_SOUND_CS4232 is not set
-# CONFIG_SOUND_SSCAPE is not set
-# CONFIG_SOUND_GUS is not set
-# CONFIG_SOUND_VMIDI is not set
-# CONFIG_SOUND_TRIX is not set
-# CONFIG_SOUND_MSS is not set
-# CONFIG_SOUND_MPU401 is not set
-# CONFIG_SOUND_NM256 is not set
-# CONFIG_SOUND_MAD16 is not set
-# CONFIG_SOUND_PAS is not set
-# CONFIG_PAS_JOYSTICK is not set
-# CONFIG_SOUND_PSS is not set
-# CONFIG_SOUND_SB is not set
-# CONFIG_SOUND_AWE32_SYNTH is not set
-# CONFIG_SOUND_WAVEFRONT is not set
-# CONFIG_SOUND_MAUI is not set
-# CONFIG_SOUND_YM3812 is not set
-# CONFIG_SOUND_OPL3SA1 is not set
-# CONFIG_SOUND_OPL3SA2 is not set
-# CONFIG_SOUND_YMFPCI is not set
-# CONFIG_SOUND_YMFPCI_LEGACY is not set
-# CONFIG_SOUND_UART6850 is not set
-# CONFIG_SOUND_AEDSP16 is not set
-# CONFIG_SOUND_VIDC is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-CONFIG_SOUND_PXA_AC97=m
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# Console Switches
-#
-# CONFIG_SWITCHES is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-CONFIG_USB_OHCI=m
-# CONFIG_USB_OHCI_SA1111 is not set
-CONFIG_USB_OHCI_H5400=m
-CONFIG_USB_SL811HS=m
-CONFIG_USB_SL811HS_CS=m
-CONFIG_USB_AUDIO=m
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_BLUETOOTH is not set
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=m
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_OV511=m
-CONFIG_USB_PWC=m
-# CONFIG_USB_QC is not set
-CONFIG_USB_SE401=m
-CONFIG_USB_STV680=m
-CONFIG_USB_VICAM=m
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DABUSB is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-CONFIG_USB_CDCETHER=m
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-CONFIG_USB_SERIAL_IPAQ=m
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_BRLVGER is not set
-
-#
-# Support for USB gadgets
-#
-CONFIG_USB_GADGET=m
-CONFIG_USB_GADGET_PXA2XX=y
-# CONFIG_USB_GADGET_N9604 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_SUPERH is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_CONTROLLER is not set
-CONFIG_USB_PXA2XX=m
-CONFIG_USB_GADGET_CONTROLLER=m
-# CONFIG_USB_GADGET_DUALSPEED is not set
-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
-
-#
-# Linux As Bootldr Modules
-#
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-# CONFIG_YMODEM is not set
-# CONFIG_LAB_DUMMY is not set
-# CONFIG_LAB_CRC is not set
-# CONFIG_LAB_YMODEM is not set
-# CONFIG_LAB_MTD is not set
-# CONFIG_LAB_COPY is not set
-# CONFIG_LAB_COPY_YMODEM is not set
-# CONFIG_LAB_COPY_FLASH is not set
-# CONFIG_LAB_COPY_FS is not set
-# CONFIG_LAB_COPY_WRAPPER is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BLUEZ_HCIUSB=m
-# CONFIG_BLUEZ_HCIUSB_SCO is not set
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-# CONFIG_BLUEZ_HCIUART_BCSP_TXCRC is not set
-# CONFIG_BLUEZ_HCIBFUSB is not set
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBT3C=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-# CONFIG_BLUEZ_HCIVHCI is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_FRAME_POINTER is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
-
-#
-# Library routines
-#
-# CONFIG_CRC32 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh39/defconfig-h3900 b/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh39/defconfig-h3900
deleted file mode 100644
index dcc9feff52..0000000000
--- a/packages/linux/handhelds-pxa-2.4.19-rmk6-pxa1-hh39/defconfig-h3900
+++ /dev/null
@@ -1,1488 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_OMAHA is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_RISCSTATION is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_AT91RM9200DK is not set
-# CONFIG_MINIMAL_OOPS is not set
-
-#
-# Linux As Bootldr support
-#
-# CONFIG_LAB is not set
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ACCELENT is not set
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_CONSUS is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_JORNADA56X is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SIMPUTER is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_REGISTERS is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-CONFIG_ARCH_H3900=y
-CONFIG_ARCH_H1900=y
-CONFIG_ARCH_H5400=y
-# CONFIG_ARCH_H2200 is not set
-CONFIG_ARCH_AXIM=y
-CONFIG_PXA_USB=m
-CONFIG_PXA_USB_NETLINK=m
-CONFIG_PXA_USB_CHAR=m
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_ARM1026 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_XSCALE_PXA250=y
-# CONFIG_XSCALE_80200_OLD is not set
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-# CONFIG_SA1100_IPAQ is not set
-CONFIG_PXA_IPAQ=y
-CONFIG_IPAQ_HANDHELD=y
-
-#
-# Compaq iPAQ Handheld
-#
-CONFIG_IPAQ_HAL=m
-# CONFIG_H3600_MICRO is not set
-CONFIG_IPAQ_HAS_ROSELLA=y
-CONFIG_IPAQ_HAS_ASIC3=y
-CONFIG_H3600_ASIC=m
-CONFIG_H3900_ASIC_DEBUG=m
-CONFIG_H5400_ASIC=m
-CONFIG_H1900_ASIC=m
-CONFIG_H1900_TS=m
-CONFIG_H3600_HARDWARE=y
-CONFIG_IPAQ_SLEEVE=m
-CONFIG_SLEEVE_DEBUG=y
-CONFIG_SLEEVE_DEBUG_VERBOSE=0
-# CONFIG_SLEEVE_IRQ_DEMUX is not set
-
-#
-# Dell Axim X5
-#
-CONFIG_AXIM_HAL=m
-# CONFIG_DISCONTIGMEM is not set
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CPU_FREQ=y
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=m
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=m
-CONFIG_MERCURY_BACKPAQ=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_SAMSUNG_ASIC=m
-# CONFIG_MMC_S3C2410 is not set
-CONFIG_MMC_H5400=m
-CONFIG_MMC_ASIC3=m
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_XIP_KERNEL is not set
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=m
-# CONFIG_HWTIMER is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="keepinitrd"
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-CONFIG_PARPORT_PC_CML1=m
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-CONFIG_PARPORT_PC_PCMCIA=m
-# CONFIG_PARPORT_ARC is not set
-# CONFIG_PARPORT_IDP is not set
-# CONFIG_PARPORT_AMIGA is not set
-# CONFIG_PARPORT_MFC3 is not set
-# CONFIG_PARPORT_ATARI is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_SUNBPP is not set
-# CONFIG_PARPORT_OTHER is not set
-# CONFIG_PARPORT_1284 is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=1
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# 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=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
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_IPAQ=y
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_IXP425 is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_H720X is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_CEIVA is not set
-# CONFIG_MTD_NOR_TOTO is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-CONFIG_MTD_BLKMTD=m
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCPROBE is not set
-# CONFIG_MTD_DOCECC is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-# CONFIG_MTD_NAND_SPIA is not set
-# CONFIG_MTD_NAND_TOTO is not set
-# CONFIG_MTD_NAND_AUTCPU12 is not set
-# CONFIG_MTD_NAND_EDB7312 is not set
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_NVRD=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-CONFIG_BLK_DEV_LVM=m
-CONFIG_BLK_DEV_DM=m
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-# CONFIG_NETLINK_DEV is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_TFTP is not set
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_MAC=m
-# CONFIG_IP_NF_MATCH_PKTTYPE is not set
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_DSCP is not set
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-# CONFIG_IP_NF_MATCH_HELPER is not set
-CONFIG_IP_NF_MATCH_STATE=m
-# CONFIG_IP_NF_MATCH_CONNTRACK is not set
-# CONFIG_IP_NF_MATCH_UNCLEAN is not set
-# CONFIG_IP_NF_MATCH_OWNER is not set
-CONFIG_IP_NF_FILTER=m
-# CONFIG_IP_NF_TARGET_REJECT is not set
-# CONFIG_IP_NF_TARGET_MIRROR is not set
-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_NAT_LOCAL is not set
-# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-# CONFIG_IP_NF_TARGET_ECN is not set
-# CONFIG_IP_NF_TARGET_DSCP is not set
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_ARPTABLES is not set
-CONFIG_IP_NF_COMPAT_IPCHAINS=m
-CONFIG_IP_NF_NAT_NEEDED=y
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MOBILITY=m
-CONFIG_IPV6_MOBILITY_MN=m
-# CONFIG_IPV6_MOBILITY_HA is not set
-CONFIG_IPV6_MOBILITY_DEBUG=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-# CONFIG_IP6_NF_MATCH_OWNER is not set
-CONFIG_IP6_NF_MATCH_MARK=m
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_AHESP is not set
-# CONFIG_IP6_NF_MATCH_LENGTH is not set
-# CONFIG_IP6_NF_MATCH_EUI64 is not set
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
-CONFIG_BRIDGE=m
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_IPSEC=m
-CONFIG_KLIPS_AUTH_HMAC_MD5=y
-CONFIG_KLIPS_AUTH_HMAC_SHA1=y
-CONFIG_KLIPS_ENC_3DES=y
-CONFIG_KLIPS_IPCOMP=y
-CONFIG_KLIPS_DEBUG=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-# CONFIG_SPECTRUM24T is not set
-# CONFIG_PCMCIA_HERMES is not set
-CONFIG_AIRO_CS=m
-# CONFIG_WVLAN_CS is not set
-# CONFIG_MWVLAN_CS is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_HOSTAP_CS is not set
-CONFIG_NET_WIRELESS=y
-# CONFIG_ATMELWLAN is not set
-# CONFIG_ATMELWLAN_USB_503A_RFMD is not set
-# CONFIG_ATMELWLAN_PCMCIA_502A is not set
-# CONFIG_ATMELWLAN_PCMCIA_3COM is not set
-# CONFIG_ATMELWLAN_PCMCIA_502AD is not set
-# CONFIG_ATMELWLAN_PCMCIA_502AE is not set
-# CONFIG_ATMELWLAN_PCMCIA_504 is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_AXNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-CONFIG_NET_PCMCIA_RADIO=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_PCMCIA_NETWAVE=m
-CONFIG_PCMCIA_WAVELAN=m
-# CONFIG_AIRONET4500_CS is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=m
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-CONFIG_IRDA_ULTRA=y
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-CONFIG_IRDA_DEBUG=y
-
-#
-# Infrared-port device drivers
-#
-CONFIG_IRTTY_SIR=m
-CONFIG_IRPORT_SIR=m
-# CONFIG_DONGLE is not set
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-CONFIG_PXA_FIR=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=m
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=m
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_IDEDISK_STROKE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_SD_EXTRA_DEVS=40
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_SR_EXTRA_DEVS=2
-CONFIG_CHR_DEV_SG=m
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# 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_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID 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_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO 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_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-CONFIG_SCSI_PCMCIA=y
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=m
-CONFIG_INPUT_KEYBDEV=m
-CONFIG_INPUT_MOUSEDEV=m
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=m
-CONFIG_INPUT_UINPUT=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-CONFIG_SERIAL_EXTENDED=y
-# CONFIG_SERIAL_MANY_PORTS is not set
-# CONFIG_SERIAL_SHARE_IRQ is not set
-# CONFIG_SERIAL_DETECT_IRQ is not set
-# CONFIG_SERIAL_MULTIPORT is not set
-# CONFIG_HUB6 is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_S3C2410 is not set
-# CONFIG_SERIAL_S3C2410_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_SIR_PXA is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
-# CONFIG_PRINTER is not set
-# CONFIG_PPDEV is not set
-CONFIG_NEWTONKBD=m
-# CONFIG_SA1100_PROFILER is not set
-CONFIG_TOUCHSCREEN_H3600=m
-CONFIG_H3600_BACKPAQ_FPGA=m
-CONFIG_H3600_BACKPAQ_ACCEL=m
-CONFIG_H3600_BACKPAQ_GASGAUGE=m
-CONFIG_H3600_BACKPAQ_SRAM=m
-CONFIG_H3600_BACKPAQ_AUDIO=m
-# CONFIG_H3600_STOWAWAY is not set
-# CONFIG_H3800_MICROKBD is not set
-# CONFIG_SA1100_LIRC is not set
-CONFIG_H5400_BUZZER=m
-CONFIG_H5400_FSI=m
-
-#
-# I2C support
-#
-CONFIG_I2C=m
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-CONFIG_I2C_PXA_ALGO=m
-CONFIG_I2C_PXA_ADAP=m
-CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_PROC=m
-# CONFIG_I2C_DS1307 is not set
-
-#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-# CONFIG_L3_ALGOBIT is not set
-# CONFIG_L3_BIT_SA1100_GPIO is not set
-# CONFIG_L3_S3C2410 is not set
-# CONFIG_L3_SA1111 is not set
-# CONFIG_L3_BACKPAQ is not set
-# CONFIG_BIT_SA1100_GPIO is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=m
-# CONFIG_PSMOUSE is not set
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_MK712_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-CONFIG_INPUT_SERIO=m
-CONFIG_INPUT_SERPORT=m
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_PCWATCHDOG is not set
-# CONFIG_21285_WATCHDOG is not set
-# CONFIG_977_WATCHDOG is not set
-# CONFIG_SA1100_WATCHDOG is not set
-CONFIG_PXA_WATCHDOG=m
-# CONFIG_OMAHA_WATCHDOG is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_WAFER_WDT is not set
-# CONFIG_I810_TCO is not set
-# CONFIG_MIXCOMWD is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_W83877F_WDT is not set
-# CONFIG_WDT is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_PXA_RTC=m
-CONFIG_PXA_RTC_HACK=y
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=m
-CONFIG_PCMCIA_MOBILISCAN_CS=m
-# CONFIG_AXIM_TS is not set
-CONFIG_AXIM_KEY=m
-# CONFIG_AXIM_KEY_FIX is not set
-
-#
-# Multimedia devices
-#
-CONFIG_MEDIA=m
-CONFIG_VIDEO_DEV=m
-CONFIG_V4L2_DEV=m
-
-#
-# Video For Linux
-#
-CONFIG_VIDEO_PROC_FS=y
-# CONFIG_I2C_PARPORT is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=m
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_ZORAN_BUZ is not set
-# CONFIG_VIDEO_ZORAN_DC10 is not set
-# CONFIG_VIDEO_ZORAN_LML33 is not set
-# CONFIG_VIDEO_ZR36120 is not set
-# CONFIG_VIDEO_MEYE is not set
-# CONFIG_VIDEO_CYBERPRO is not set
-CONFIG_VIDEO_H3600_BACKPAQ=m
-# CONFIG_VIDEO_HAWKEYE is not set
-CONFIG_VIDEO_WINNOV_CS=m
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_MIROPCM20 is not set
-# CONFIG_RADIO_MIROPCM20_RDS is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=m
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_UMSDOS_FS=m
-CONFIG_VFAT_FS=m
-# 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 is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_JFFS2_LZO is not set
-# CONFIG_JFFS2_LZARI is not set
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_PROC is not set
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=m
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-# CONFIG_DRIVERFS_FS is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=m
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-CONFIG_SUNRPC=m
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-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_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
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_S3C2410 is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_EPSON1356 is not set
-# CONFIG_FB_MQ200 is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_8BPP is not set
-CONFIG_FB_PXA_16BPP=y
-CONFIG_FB_MQ1100=y
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-# CONFIG_FBCON_NO_LOGO is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-CONFIG_SOUND_H3900_UDA1380=m
-CONFIG_SOUND_H5400=m
-CONFIG_SOUND_OSS=m
-# CONFIG_SOUND_TRACEINIT is not set
-# CONFIG_SOUND_DMAP is not set
-# CONFIG_SOUND_AD1816 is not set
-# CONFIG_SOUND_SGALAXY is not set
-# CONFIG_SOUND_ADLIB is not set
-# CONFIG_SOUND_ACI_MIXER is not set
-# CONFIG_SOUND_CS4232 is not set
-# CONFIG_SOUND_SSCAPE is not set
-# CONFIG_SOUND_GUS is not set
-# CONFIG_SOUND_VMIDI is not set
-# CONFIG_SOUND_TRIX is not set
-# CONFIG_SOUND_MSS is not set
-# CONFIG_SOUND_MPU401 is not set
-# CONFIG_SOUND_NM256 is not set
-# CONFIG_SOUND_MAD16 is not set
-# CONFIG_SOUND_PAS is not set
-# CONFIG_PAS_JOYSTICK is not set
-# CONFIG_SOUND_PSS is not set
-# CONFIG_SOUND_SB is not set
-# CONFIG_SOUND_AWE32_SYNTH is not set
-# CONFIG_SOUND_WAVEFRONT is not set
-# CONFIG_SOUND_MAUI is not set
-# CONFIG_SOUND_YM3812 is not set
-# CONFIG_SOUND_OPL3SA1 is not set
-# CONFIG_SOUND_OPL3SA2 is not set
-# CONFIG_SOUND_YMFPCI is not set
-# CONFIG_SOUND_YMFPCI_LEGACY is not set
-# CONFIG_SOUND_UART6850 is not set
-# CONFIG_SOUND_AEDSP16 is not set
-# CONFIG_SOUND_VIDC is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-CONFIG_SOUND_PXA_AC97=m
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# Console Switches
-#
-# CONFIG_SWITCHES is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-CONFIG_USB_OHCI=m
-# CONFIG_USB_OHCI_SA1111 is not set
-CONFIG_USB_OHCI_H5400=m
-CONFIG_USB_SL811HS=m
-CONFIG_USB_SL811HS_CS=m
-CONFIG_USB_AUDIO=m
-# CONFIG_USB_EMI26 is not set
-CONFIG_USB_BLUETOOTH=m
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=m
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-CONFIG_USB_HIDDEV=y
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_OV511=m
-CONFIG_USB_PWC=m
-# CONFIG_USB_QC is not set
-CONFIG_USB_SE401=m
-CONFIG_USB_STV680=m
-CONFIG_USB_VICAM=m
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DABUSB is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-CONFIG_USB_CDCETHER=m
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_BRLVGER is not set
-
-#
-# Support for USB gadgets
-#
-CONFIG_USB_GADGET=m
-CONFIG_USB_GADGET_PXA2XX=y
-# CONFIG_USB_GADGET_N9604 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_SUPERH is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_CONTROLLER is not set
-CONFIG_USB_PXA2XX=m
-CONFIG_USB_GADGET_CONTROLLER=m
-# CONFIG_USB_GADGET_DUALSPEED is not set
-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
-
-#
-# Linux As Bootldr Modules
-#
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-# CONFIG_YMODEM is not set
-# CONFIG_LAB_DUMMY is not set
-# CONFIG_LAB_CRC is not set
-# CONFIG_LAB_YMODEM is not set
-# CONFIG_LAB_MTD is not set
-# CONFIG_LAB_COPY is not set
-# CONFIG_LAB_COPY_YMODEM is not set
-# CONFIG_LAB_COPY_FLASH is not set
-# CONFIG_LAB_COPY_FS is not set
-# CONFIG_LAB_COPY_WRAPPER is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BLUEZ_HCIUSB is not set
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-# CONFIG_BLUEZ_HCIUART_BCSP_TXCRC is not set
-# CONFIG_BLUEZ_HCIBFUSB is not set
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBT3C=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-# CONFIG_BLUEZ_HCIVHCI is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_FRAME_POINTER is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
-
-#
-# Library routines
-#
-# CONFIG_CRC32 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-# CONFIG_REED_SOLOMON is not set
diff --git a/packages/linux/handhelds-pxa_2.4.19-rmk6-pxa1-hh40.bb b/packages/linux/handhelds-pxa_2.4.19-rmk6-pxa1-hh40.bb
deleted file mode 100644
index bc739d3f0f..0000000000
--- a/packages/linux/handhelds-pxa_2.4.19-rmk6-pxa1-hh40.bb
+++ /dev/null
@@ -1,71 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "handhelds.org Linux kernel for PXA25x based devices."
-LICENSE = "GPL"
-PR = "r0"
-
-KERNEL_CCSUFFIX = "-3.3.4"
-COMPATIBLE_HOST = "arm.*-linux"
-COMPATIBLE_MACHINE = '(h3900|h5000)'
-
-SRC_URI = "${HANDHELDS_CVS};module=linux/kernel;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
- file://defconfig-${PACKAGE_ARCH} \
- file://ipaq-hal.init \
- file://linux-2.4-mmc-debugging.patch;patch=1 \
- file://linux-2.4-usb-gadget.patch;patch=1 \
- file://usb-gadget-ether-compat.patch;patch=1 \
- file://linux-2.4-no-short-loads.patch;patch=1 \
- file://linux-2.4-cpufreq.patch;patch=1"
-
-S = "${WORKDIR}/kernel"
-
-inherit kernel update-rc.d
-
-K_MAJOR = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[0]}"
-K_MINOR = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[1]}"
-K_MICRO = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[2]}"
-RMKV = "${@bb.data.getVar('PV',d,1).split('-')[1].split('rmk')[-1]}"
-PXAV = "${@bb.data.getVar('PV',d,1).split('-')[2].split('pxa')[-1]}"
-HHV = "${@bb.data.getVar('PV',d,1).split('-')[3].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 + int(bb.data.getVar('RMKV',d,1)) * 1000 + int(bb.data.getVar('PXAV',d,1)) * 100 + float(bb.data.getVar('HHV',d,1)))}"
-
-module_conf_h3900_asic = "alias ipaq_hal_3900 h3900_asic"
-module_conf_h5400_asic = "alias ipaq_hal_5400 h5400_asic"
-module_conf_pxa_ir = "alias irda0 pxa_ir"
-module_conf_i2c-algo-pxa = "options i2c-algo-pxa pxa_scan=0"
-module_conf_pcmcia_core = "options pcmcia_core ignore_cis_vcc=1"
-module_conf_ppp_async = "alias ppp0 ppp_async"
-module_conf_orinoco_cs = "options orinoco_cs ignore_cis_vcc=1"
-module_conf_hostap_cs = "options hostap_cs ignore_cis_vcc=1"
-module_conf_hidp = "alias bt-prot-5 hidp"
-
-module_autoload_h3600_ts = "h3600_ts"
-module_autoload_apm = "apm"
-module_autoload_af_packet = "af_packet"
-module_autoload_usb-ohci-h5400 = "usb-ohci-h5400"
-module_autoload_ppp_async = "ppp_async"
-module_autoload_usb-eth = "usb-eth"
-module_autoload_h5400_buzzer = "h5400_buzzer"
-module_autoload_mmc_h5400 = "mmc_h5400"
-module_autoload_h5400-audio = "h5400-audio"
-module_autoload_h3900-uda1380 = "h3900-uda1380"
-module_autoload_sa1100-rtc = "sa1100-rtc"
-module_autoload_ak4535 = "ak4535"
-module_autoload_i2c-adap-pxa = "i2c-adap-pxa"
-
-FILES_kernel += "/etc/init.d/ipaq-hal"
-INITSCRIPT_NAME = "ipaq-hal"
-INITSCRIPT_PARAMS = "start 21 S ."
-
-# extra depends
-RDEPENDS_kernel-module-h5400-audio = "kernel-module-ak4535 kernel-module-i2c-adap-pxa"
-RDEPENDS_kernel-module-h3900-uda1380 = "kernel-module-uda1380 kernel-module-i2c-adap-pxa"
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/defconfig-${PACKAGE_ARCH} ${S}/.config
-}
-
-do_install_append() {
- install -d ${D}${sysconfdir}/init.d
- install ${WORKDIR}/ipaq-hal.init ${D}${sysconfdir}/init.d/ipaq-hal
-}
diff --git a/packages/linux/handhelds-pxa_2.4.19-rmk6-pxa1-hh41.1.bb b/packages/linux/handhelds-pxa_2.4.19-rmk6-pxa1-hh41.1.bb
deleted file mode 100644
index b936a4ad64..0000000000
--- a/packages/linux/handhelds-pxa_2.4.19-rmk6-pxa1-hh41.1.bb
+++ /dev/null
@@ -1,77 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "handhelds.org Linux kernel for PXA25x based devices."
-LICENSE = "GPL"
-PR = "r2"
-
-
-KERNEL_CCSUFFIX = "-3.3.4"
-COMPATIBLE_HOST = "arm.*-linux"
-COMPATIBLE_MACHINE = '(h3900|h5000)'
-
-
-SRC_URI = "${HANDHELDS_CVS};module=linux/kernel;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
- file://defconfig-${PACKAGE_ARCH} \
- file://ipaq-hal.init \
- file://linux-2.4-mmc-debugging.patch;patch=1 \
- file://linux-2.4-usb-gadget.patch;patch=1 \
- file://usb-gadget-ether-compat.patch;patch=1 \
- file://linux-2.4-no-short-loads.patch;patch=1 \
- file://linux-2.4-cpufreq.patch;patch=1"
-
-S = "${WORKDIR}/kernel"
-
-KERNEL_PRESERVE_HH_MINOR_VER = "1"
-
-inherit kernel update-rc.d
-
-K_MAJOR = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[0]}"
-K_MINOR = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[1]}"
-K_MICRO = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[2]}"
-RMKV = "${@bb.data.getVar('PV',d,1).split('-')[1].split('rmk')[-1]}"
-PXAV = "${@bb.data.getVar('PV',d,1).split('-')[2].split('pxa')[-1]}"
-HHV = "${@bb.data.getVar('PV',d,1).split('-')[3].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 + int(bb.data.getVar('RMKV',d,1)) * 1000 + int(bb.data.getVar('PXAV',d,1)) * 100 + float(bb.data.getVar('HHV',d,1)))}"
-
-module_conf_h3900_asic = "alias ipaq_hal_3900 h3900_asic"
-module_conf_h5400_asic = "alias ipaq_hal_5400 h5400_asic"
-module_conf_pxa_ir = "alias irda0 pxa_ir"
-module_conf_i2c-algo-pxa = "options i2c-algo-pxa pxa_scan=0"
-module_conf_pcmcia_core = "options pcmcia_core ignore_cis_vcc=1"
-module_conf_ppp_async = "alias ppp0 ppp_async"
-module_conf_orinoco_cs = "options orinoco_cs ignore_cis_vcc=1"
-module_conf_hostap_cs = "options hostap_cs ignore_cis_vcc=1"
-module_conf_hidp = "alias bt-prot-5 hidp"
-
-module_autoload_h3600_ts = "h3600_ts"
-module_autoload_apm = "apm"
-module_autoload_af_packet = "af_packet"
-module_autoload_usb-ohci-h5400 = "usb-ohci-h5400"
-module_autoload_ppp_async = "ppp_async"
-module_autoload_usb-eth = "usb-eth"
-module_autoload_h5400_buzzer = "h5400_buzzer"
-# breaks booting on first install of h3900 handhelds
-#module_autoload_mmc_asic3 = "mmc_asic3"
-module_autoload_mmc_h5400 = "mmc_h5400"
-module_autoload_h5400-audio = "h5400-audio"
-module_autoload_h3900-uda1380 = "h3900-uda1380"
-module_autoload_sa1100-rtc = "sa1100-rtc"
-module_autoload_ak4535 = "ak4535"
-module_autoload_i2c-adap-pxa = "i2c-adap-pxa"
-
-FILES_kernel += "/etc/init.d/ipaq-hal"
-INITSCRIPT_NAME = "ipaq-hal"
-INITSCRIPT_PARAMS = "start 21 S ."
-
-# extra depends
-RDEPENDS_kernel-module-h5400-audio = "kernel-module-ak4535 kernel-module-i2c-adap-pxa"
-RDEPENDS_kernel-module-h3900-uda1380 = "kernel-module-uda1380 kernel-module-i2c-adap-pxa"
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/defconfig-${PACKAGE_ARCH} ${S}/.config
-}
-
-do_install_append() {
- install -d ${D}${sysconfdir}/init.d
- install ${WORKDIR}/ipaq-hal.init ${D}${sysconfdir}/init.d/ipaq-hal
-}
diff --git a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/defconfig-ipaqsa b/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/defconfig-ipaqsa
deleted file mode 100644
index f144aa6c17..0000000000
--- a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/defconfig-ipaqsa
+++ /dev/null
@@ -1,1505 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_OMAHA is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_RISCSTATION is not set
-CONFIG_ARCH_SA1100=y
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_AT91RM9200DK is not set
-# CONFIG_MINIMAL_OOPS is not set
-
-#
-# Linux As Bootldr support
-#
-# CONFIG_LAB is not set
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-
-#
-# Archimedes/A5000 Implementations (select only ONE)
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ACCELENT is not set
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-CONFIG_SA1100_H3100=y
-CONFIG_SA1100_H3600=y
-CONFIG_SA1100_H3800=y
-# CONFIG_SA1100_CONSUS is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_JORNADA56X is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SIMPUTER is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-CONFIG_SA1100_USB=m
-CONFIG_SA1100_USB_NETLINK=m
-CONFIG_SA1100_USB_CHAR=m
-CONFIG_REGISTERS=m
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-# CONFIG_ARCH_H3900 is not set
-# CONFIG_ARCH_H1900 is not set
-# CONFIG_ARCH_H5400 is not set
-# CONFIG_ARCH_H2200 is not set
-# CONFIG_ARCH_AXIM is not set
-# CONFIG_PXA_USB is not set
-# CONFIG_PXA_USB_NETLINK is not set
-# CONFIG_PXA_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_ARM1026 is not set
-# CONFIG_CPU_SA110 is not set
-CONFIG_CPU_SA1100=y
-# CONFIG_CPU_32v3 is not set
-CONFIG_CPU_32v4=y
-CONFIG_SA1100_IPAQ=y
-# CONFIG_PXA_IPAQ is not set
-CONFIG_IPAQ_HANDHELD=y
-
-#
-# Compaq iPAQ Handheld
-#
-CONFIG_IPAQ_HAL=m
-CONFIG_H3600_MICRO=m
-CONFIG_IPAQ_HAS_ROSELLA=y
-CONFIG_H3600_ASIC=m
-CONFIG_H3900_ASIC_DEBUG=y
-# CONFIG_H5400_ASIC is not set
-# CONFIG_H1900_ASIC is not set
-# CONFIG_H1900_TS is not set
-CONFIG_H3600_HARDWARE=y
-CONFIG_IPAQ_SLEEVE=m
-CONFIG_SLEEVE_DEBUG=y
-CONFIG_SLEEVE_DEBUG_VERBOSE=0
-# CONFIG_SLEEVE_IRQ_DEMUX is not set
-
-#
-# Processor Features
-#
-CONFIG_DISCONTIGMEM=y
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-CONFIG_ISA=y
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CPU_FREQ=y
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=m
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-CONFIG_PCMCIA_SA1100=m
-# CONFIG_PCMCIA_PXA is not set
-CONFIG_MERCURY_BACKPAQ=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=m
-CONFIG_MMC_DEBUG=y
-CONFIG_MMC_DEBUG_VERBOSE=0
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-
-#
-# At least one math emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=m
-CONFIG_HWTIMER=m
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="keepinitrd"
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=1
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# 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=m
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL 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=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_CFI_B1 is not set
-CONFIG_MTD_CFI_B2=y
-CONFIG_MTD_CFI_B4=y
-# CONFIG_MTD_CFI_B8 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_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_IPAQ=y
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_H720X is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_CEIVA is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-CONFIG_MTD_MTDRAM=m
-CONFIG_MTDRAM_TOTAL_SIZE=4096
-CONFIG_MTDRAM_ERASE_SIZE=128
-CONFIG_MTD_BLKMTD=m
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_NVRD=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-CONFIG_BLK_DEV_LVM=m
-CONFIG_BLK_DEV_DM=m
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-# CONFIG_NETLINK_DEV is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_TFTP is not set
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_MAC=m
-# CONFIG_IP_NF_MATCH_PKTTYPE is not set
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_DSCP is not set
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-# CONFIG_IP_NF_MATCH_HELPER is not set
-CONFIG_IP_NF_MATCH_STATE=m
-# CONFIG_IP_NF_MATCH_CONNTRACK is not set
-# CONFIG_IP_NF_MATCH_UNCLEAN is not set
-# CONFIG_IP_NF_MATCH_OWNER is not set
-CONFIG_IP_NF_FILTER=m
-# CONFIG_IP_NF_TARGET_REJECT is not set
-# CONFIG_IP_NF_TARGET_MIRROR is not set
-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_NAT_LOCAL is not set
-# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-# CONFIG_IP_NF_TARGET_ECN is not set
-# CONFIG_IP_NF_TARGET_DSCP is not set
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_ARPTABLES is not set
-CONFIG_IP_NF_COMPAT_IPCHAINS=m
-CONFIG_IP_NF_NAT_NEEDED=y
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_IPV6_TUNNEL=m
-CONFIG_IPV6_MOBILITY=m
-CONFIG_IPV6_MOBILITY_MN=m
-# CONFIG_IPV6_MOBILITY_HA is not set
-CONFIG_IPV6_MOBILITY_DEBUG=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-# CONFIG_IP6_NF_MATCH_OWNER is not set
-CONFIG_IP6_NF_MATCH_MARK=m
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_AHESP is not set
-# CONFIG_IP6_NF_MATCH_LENGTH is not set
-# CONFIG_IP6_NF_MATCH_EUI64 is not set
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-
-#
-#
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
-CONFIG_BRIDGE=m
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_IPSEC=m
-
-#
-# IPSec options (FreeS/WAN)
-#
-CONFIG_IPSEC_IPIP=y
-CONFIG_IPSEC_AH=y
-CONFIG_IPSEC_AUTH_HMAC_MD5=y
-CONFIG_IPSEC_AUTH_HMAC_SHA1=y
-CONFIG_IPSEC_ESP=y
-CONFIG_IPSEC_ENC_3DES=y
-CONFIG_IPSEC_IPCOMP=y
-CONFIG_IPSEC_DEBUG=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-# CONFIG_SPECTRUM24T is not set
-
-#
-# Wireless Pcmcia cards support
-#
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-# CONFIG_WVLAN_CS is not set
-# CONFIG_MWVLAN_CS is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_HOSTAP_CS is not set
-CONFIG_NET_WIRELESS=y
-CONFIG_ATMELWLAN=y
-# CONFIG_ATMELWLAN_USB_503A_RFMD is not set
-CONFIG_ATMELWLAN_PCMCIA_502A=m
-CONFIG_ATMELWLAN_PCMCIA_3COM=m
-CONFIG_ATMELWLAN_PCMCIA_502AD=m
-CONFIG_ATMELWLAN_PCMCIA_502AE=m
-CONFIG_ATMELWLAN_PCMCIA_504=m
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_AXNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-CONFIG_NET_PCMCIA_RADIO=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_PCMCIA_NETWAVE=m
-CONFIG_PCMCIA_WAVELAN=m
-# CONFIG_AIRONET4500_CS is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-CONFIG_IRDA_ULTRA=y
-
-#
-# IrDA options
-#
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-CONFIG_IRDA_DEBUG=y
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-CONFIG_IRPORT_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-CONFIG_SA1100_FIR=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=m
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=m
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_IDEDISK_STROKE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=m
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_SD_EXTRA_DEVS=40
-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_SR_EXTRA_DEVS=2
-CONFIG_CHR_DEV_SG=m
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# 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_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID 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_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO 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_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-CONFIG_SCSI_PCMCIA=y
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=m
-CONFIG_INPUT_KEYBDEV=m
-CONFIG_INPUT_MOUSEDEV=m
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=m
-CONFIG_INPUT_UINPUT=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=m
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_S3C2410 is not set
-# CONFIG_SERIAL_S3C2410_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SA1100_DEFAULT_BAUDRATE=115200
-CONFIG_SERIAL_H3800_ASIC=m
-# CONFIG_SERIAL_SIR_PXA is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
-CONFIG_NEWTONKBD=m
-CONFIG_SA1100_PROFILER=m
-
-#
-# Compaq iPAQ H3600 support
-#
-CONFIG_TOUCHSCREEN_H3600=m
-CONFIG_H3600_BACKPAQ_FPGA=m
-CONFIG_H3600_BACKPAQ_ACCEL=m
-CONFIG_H3600_BACKPAQ_GASGAUGE=m
-CONFIG_H3600_BACKPAQ_SRAM=m
-CONFIG_H3600_BACKPAQ_AUDIO=m
-CONFIG_H3600_STOWAWAY=m
-CONFIG_H3800_MICROKBD=m
-CONFIG_SA1100_LIRC=m
-# CONFIG_H5400_BUZZER is not set
-# CONFIG_H5400_FSI is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# L3 serial bus support
-#
-CONFIG_L3=y
-CONFIG_L3_ALGOBIT=y
-CONFIG_L3_BIT_SA1100_GPIO=y
-
-#
-# Other L3 adapters
-#
-# CONFIG_L3_S3C2410 is not set
-# CONFIG_L3_SA1111 is not set
-CONFIG_L3_BACKPAQ=m
-CONFIG_BIT_SA1100_GPIO=y
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=m
-# CONFIG_PSMOUSE is not set
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_MK712_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-CONFIG_INPUT_SERIO=m
-CONFIG_INPUT_SERPORT=m
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_PCWATCHDOG is not set
-# CONFIG_21285_WATCHDOG is not set
-# CONFIG_977_WATCHDOG is not set
-CONFIG_SA1100_WATCHDOG=m
-# CONFIG_PXA_WATCHDOG is not set
-# CONFIG_OMAHA_WATCHDOG is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_WAFER_WDT is not set
-# CONFIG_I810_TCO is not set
-# CONFIG_MIXCOMWD is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_W83877F_WDT is not set
-# CONFIG_WDT is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_SA1100_RTC=m
-# CONFIG_PXA_RTC_HACK 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_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=m
-# CONFIG_PCMCIA_MOBILISCAN_CS is not set
-# CONFIG_AXIM_KEY_FIX is not set
-
-#
-# Multimedia devices
-#
-CONFIG_MEDIA=m
-CONFIG_VIDEO_DEV=m
-CONFIG_V4L2_DEV=m
-
-#
-# Video For Linux
-#
-CONFIG_VIDEO_PROC_FS=y
-# CONFIG_I2C_PARPORT is not set
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_ZORAN_BUZ is not set
-# CONFIG_VIDEO_ZORAN_DC10 is not set
-# CONFIG_VIDEO_ZORAN_LML33 is not set
-# CONFIG_VIDEO_ZR36120 is not set
-# CONFIG_VIDEO_MEYE is not set
-# CONFIG_VIDEO_CYBERPRO is not set
-CONFIG_VIDEO_H3600_BACKPAQ=m
-# CONFIG_VIDEO_HAWKEYE is not set
-
-#
-# Video for Linux 2 (V4L2)
-#
-CONFIG_VIDEO_WINNOV_CS=m
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_MIROPCM20 is not set
-# CONFIG_RADIO_MIROPCM20_RDS is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=m
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_UMSDOS_FS=m
-CONFIG_VFAT_FS=m
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_NAND is not set
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=m
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-# CONFIG_DRIVERFS_FS is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=m
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-CONFIG_SUNRPC=m
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-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_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
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_S3C2410 is not set
-CONFIG_FB_SA1100=y
-# CONFIG_FB_EPSON1356 is not set
-# CONFIG_FB_MQ200 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_MQ1100 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-CONFIG_FBCON_CFB4=y
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-# CONFIG_FBCON_NO_LOGO is not set
-CONFIG_FBCON_FONTWIDTH8_ONLY=y
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-CONFIG_SOUND_SA1100=m
-CONFIG_SOUND_UDA1341=m
-# CONFIG_SOUND_SA1100_MONO is not set
-# CONFIG_SOUND_ASSABET_UDA1341 is not set
-CONFIG_SOUND_H3600_UDA1341=m
-# CONFIG_SOUND_PANGOLIN_UDA1341 is not set
-# CONFIG_SOUND_SA1111_UDA1341 is not set
-# CONFIG_SOUND_SA1100SSP is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_VIDC is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-# CONFIG_SOUND_PXA_AC97 is not set
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# Console Switches
-#
-# CONFIG_SWITCHES is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-# CONFIG_USB_OHCI is not set
-# CONFIG_USB_OHCI_SA1111 is not set
-# CONFIG_USB_OHCI_H5400 is not set
-# CONFIG_USB_OHCI_S3C2410 is not set
-CONFIG_USB_SL811HS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_BLUETOOTH is not set
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=m
-
-#
-# USB Human Interface Devices (HID)
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_WACOM is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_OV511=m
-CONFIG_USB_PWC=m
-CONFIG_USB_SE401=m
-CONFIG_USB_STV680=m
-CONFIG_USB_VICAM=m
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DABUSB is not set
-
-#
-# USB Network adaptors
-#
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-CONFIG_USB_CDCETHER=m
-# CONFIG_USB_USBNET is not set
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_BRLVGER is not set
-
-#
-# Linux As Bootldr Modules
-#
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-# CONFIG_YMODEM is not set
-# CONFIG_LAB_DUMMY is not set
-# CONFIG_LAB_CRC is not set
-# CONFIG_LAB_YMODEM is not set
-# CONFIG_LAB_MTD is not set
-# CONFIG_LAB_COPY is not set
-# CONFIG_LAB_COPY_YMODEM is not set
-# CONFIG_LAB_COPY_FLASH is not set
-# CONFIG_LAB_COPY_FS is not set
-# CONFIG_LAB_COPY_WRAPPER is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BLUEZ_HCIUSB is not set
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-# CONFIG_BLUEZ_HCIUART_BCSP_TXCRC is not set
-# CONFIG_BLUEZ_HCIBFUSB is not set
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBT3C=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-# CONFIG_BLUEZ_HCIVHCI is not set
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
-
-#
-# Library routines
-#
-# CONFIG_CRC32 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/disable-pcmcia-probe.patch b/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/disable-pcmcia-probe.patch
deleted file mode 100644
index 79ba036323..0000000000
--- a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/disable-pcmcia-probe.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- linux/drivers/pcmcia/Config.in~disable-pcmcia-probe 2003-05-13 11:18:23.000000000 +0200
-+++ linux/drivers/pcmcia/Config.in 2004-05-27 13:59:50.000000000 +0200
-@@ -15,9 +15,6 @@
- tristate 'PCMCIA/CardBus support' CONFIG_PCMCIA
- if [ "$CONFIG_PCMCIA" != "n" ]; then
- # yes, I really mean the following...
-- if [ "$CONFIG_ISA" = "y" -o "$CONFIG_ARCH_SA1100" = "y" ]; then
-- define_bool CONFIG_PCMCIA_PROBE y
-- fi
- if [ "$CONFIG_PCI" != "n" ]; then
- bool ' CardBus support' CONFIG_CARDBUS
- fi
diff --git a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/ipsec.patch b/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/ipsec.patch
deleted file mode 100644
index 545175b7fc..0000000000
--- a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/ipsec.patch
+++ /dev/null
@@ -1,1446 +0,0 @@
---- linux/net/Makefile 3 Dec 2003 19:15:16 -0000 1.25
-+++ linux/net/Makefile 20 Feb 2003 15:50:38 -0000 1.24
-@@ -19,6 +19,7 @@
- subdir-$(CONFIG_NETFILTER) += ipv4/netfilter
- subdir-$(CONFIG_UNIX) += unix
- subdir-$(CONFIG_IPV6) += ipv6
-+subdir-$(CONFIG_IPSEC) += ipsec
-
- ifneq ($(CONFIG_IPV6),n)
- ifneq ($(CONFIG_IPV6),)
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ linux/include/zlib/zlib.h 2004-07-05 23:56:59.000000000 +0100
-@@ -0,0 +1,893 @@
-+/* zlib.h -- interface of the 'zlib' general purpose compression library
-+ version 1.1.4, March 11th, 2002
-+
-+ Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler
-+
-+ This software is provided 'as-is', without any express or implied
-+ warranty. In no event will the authors be held liable for any damages
-+ arising from the use of this software.
-+
-+ Permission is granted to anyone to use this software for any purpose,
-+ including commercial applications, and to alter it and redistribute it
-+ freely, subject to the following restrictions:
-+
-+ 1. The origin of this software must not be misrepresented; you must not
-+ claim that you wrote the original software. If you use this software
-+ in a product, an acknowledgment in the product documentation would be
-+ appreciated but is not required.
-+ 2. Altered source versions must be plainly marked as such, and must not be
-+ misrepresented as being the original software.
-+ 3. This notice may not be removed or altered from any source distribution.
-+
-+ Jean-loup Gailly Mark Adler
-+ jloup@gzip.org madler@alumni.caltech.edu
-+
-+
-+ The data format used by the zlib library is described by RFCs (Request for
-+ Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
-+ (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
-+*/
-+
-+#ifndef _ZLIB_H
-+#define _ZLIB_H
-+
-+#include "zconf.h"
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+#define ZLIB_VERSION "1.1.4"
-+
-+/*
-+ The 'zlib' compression library provides in-memory compression and
-+ decompression functions, including integrity checks of the uncompressed
-+ data. This version of the library supports only one compression method
-+ (deflation) but other algorithms will be added later and will have the same
-+ stream interface.
-+
-+ Compression can be done in a single step if the buffers are large
-+ enough (for example if an input file is mmap'ed), or can be done by
-+ repeated calls of the compression function. In the latter case, the
-+ application must provide more input and/or consume the output
-+ (providing more output space) before each call.
-+
-+ The library also supports reading and writing files in gzip (.gz) format
-+ with an interface similar to that of stdio.
-+
-+ The library does not install any signal handler. The decoder checks
-+ the consistency of the compressed data, so the library should never
-+ crash even in case of corrupted input.
-+*/
-+
-+typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-+typedef void (*free_func) OF((voidpf opaque, voidpf address));
-+
-+struct internal_state;
-+
-+typedef struct z_stream_s {
-+ Bytef *next_in; /* next input byte */
-+ uInt avail_in; /* number of bytes available at next_in */
-+ uLong total_in; /* total nb of input bytes read so far */
-+
-+ Bytef *next_out; /* next output byte should be put there */
-+ uInt avail_out; /* remaining free space at next_out */
-+ uLong total_out; /* total nb of bytes output so far */
-+
-+ const char *msg; /* last error message, NULL if no error */
-+ struct internal_state FAR *state; /* not visible by applications */
-+
-+ alloc_func zalloc; /* used to allocate the internal state */
-+ free_func zfree; /* used to free the internal state */
-+ voidpf opaque; /* private data object passed to zalloc and zfree */
-+
-+ int data_type; /* best guess about the data type: ascii or binary */
-+ uLong adler; /* adler32 value of the uncompressed data */
-+ uLong reserved; /* reserved for future use */
-+} z_stream;
-+
-+typedef z_stream FAR *z_streamp;
-+
-+/*
-+ The application must update next_in and avail_in when avail_in has
-+ dropped to zero. It must update next_out and avail_out when avail_out
-+ has dropped to zero. The application must initialize zalloc, zfree and
-+ opaque before calling the init function. All other fields are set by the
-+ compression library and must not be updated by the application.
-+
-+ The opaque value provided by the application will be passed as the first
-+ parameter for calls of zalloc and zfree. This can be useful for custom
-+ memory management. The compression library attaches no meaning to the
-+ opaque value.
-+
-+ zalloc must return Z_NULL if there is not enough memory for the object.
-+ If zlib is used in a multi-threaded application, zalloc and zfree must be
-+ thread safe.
-+
-+ On 16-bit systems, the functions zalloc and zfree must be able to allocate
-+ exactly 65536 bytes, but will not be required to allocate more than this
-+ if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
-+ pointers returned by zalloc for objects of exactly 65536 bytes *must*
-+ have their offset normalized to zero. The default allocation function
-+ provided by this library ensures this (see zutil.c). To reduce memory
-+ requirements and avoid any allocation of 64K objects, at the expense of
-+ compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
-+
-+ The fields total_in and total_out can be used for statistics or
-+ progress reports. After compression, total_in holds the total size of
-+ the uncompressed data and may be saved for use in the decompressor
-+ (particularly if the decompressor wants to decompress everything in
-+ a single step).
-+*/
-+
-+ /* constants */
-+
-+#define Z_NO_FLUSH 0
-+#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
-+#define Z_SYNC_FLUSH 2
-+#define Z_FULL_FLUSH 3
-+#define Z_FINISH 4
-+/* Allowed flush values; see deflate() below for details */
-+
-+#define Z_OK 0
-+#define Z_STREAM_END 1
-+#define Z_NEED_DICT 2
-+#define Z_ERRNO (-1)
-+#define Z_STREAM_ERROR (-2)
-+#define Z_DATA_ERROR (-3)
-+#define Z_MEM_ERROR (-4)
-+#define Z_BUF_ERROR (-5)
-+#define Z_VERSION_ERROR (-6)
-+/* Return codes for the compression/decompression functions. Negative
-+ * values are errors, positive values are used for special but normal events.
-+ */
-+
-+#define Z_NO_COMPRESSION 0
-+#define Z_BEST_SPEED 1
-+#define Z_BEST_COMPRESSION 9
-+#define Z_DEFAULT_COMPRESSION (-1)
-+/* compression levels */
-+
-+#define Z_FILTERED 1
-+#define Z_HUFFMAN_ONLY 2
-+#define Z_DEFAULT_STRATEGY 0
-+/* compression strategy; see deflateInit2() below for details */
-+
-+#define Z_BINARY 0
-+#define Z_ASCII 1
-+#define Z_UNKNOWN 2
-+/* Possible values of the data_type field */
-+
-+#define Z_DEFLATED 8
-+/* The deflate compression method (the only one supported in this version) */
-+
-+#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
-+
-+#define zlib_version zlibVersion()
-+/* for compatibility with versions < 1.0.2 */
-+
-+ /* basic functions */
-+
-+ZEXTERN const char * ZEXPORT zlibVersion OF((void));
-+/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
-+ If the first character differs, the library code actually used is
-+ not compatible with the zlib.h header file used by the application.
-+ This check is automatically made by deflateInit and inflateInit.
-+ */
-+
-+/*
-+ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
-+
-+ Initializes the internal stream state for compression. The fields
-+ zalloc, zfree and opaque must be initialized before by the caller.
-+ If zalloc and zfree are set to Z_NULL, deflateInit updates them to
-+ use default allocation functions.
-+
-+ The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
-+ 1 gives best speed, 9 gives best compression, 0 gives no compression at
-+ all (the input data is simply copied a block at a time).
-+ Z_DEFAULT_COMPRESSION requests a default compromise between speed and
-+ compression (currently equivalent to level 6).
-+
-+ deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
-+ enough memory, Z_STREAM_ERROR if level is not a valid compression level,
-+ Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
-+ with the version assumed by the caller (ZLIB_VERSION).
-+ msg is set to null if there is no error message. deflateInit does not
-+ perform any compression: this will be done by deflate().
-+*/
-+
-+
-+ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
-+/*
-+ deflate compresses as much data as possible, and stops when the input
-+ buffer becomes empty or the output buffer becomes full. It may introduce some
-+ output latency (reading input without producing any output) except when
-+ forced to flush.
-+
-+ The detailed semantics are as follows. deflate performs one or both of the
-+ following actions:
-+
-+ - Compress more input starting at next_in and update next_in and avail_in
-+ accordingly. If not all input can be processed (because there is not
-+ enough room in the output buffer), next_in and avail_in are updated and
-+ processing will resume at this point for the next call of deflate().
-+
-+ - Provide more output starting at next_out and update next_out and avail_out
-+ accordingly. This action is forced if the parameter flush is non zero.
-+ Forcing flush frequently degrades the compression ratio, so this parameter
-+ should be set only when necessary (in interactive applications).
-+ Some output may be provided even if flush is not set.
-+
-+ Before the call of deflate(), the application should ensure that at least
-+ one of the actions is possible, by providing more input and/or consuming
-+ more output, and updating avail_in or avail_out accordingly; avail_out
-+ should never be zero before the call. The application can consume the
-+ compressed output when it wants, for example when the output buffer is full
-+ (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
-+ and with zero avail_out, it must be called again after making room in the
-+ output buffer because there might be more output pending.
-+
-+ If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
-+ flushed to the output buffer and the output is aligned on a byte boundary, so
-+ that the decompressor can get all input data available so far. (In particular
-+ avail_in is zero after the call if enough output space has been provided
-+ before the call.) Flushing may degrade compression for some compression
-+ algorithms and so it should be used only when necessary.
-+
-+ If flush is set to Z_FULL_FLUSH, all output is flushed as with
-+ Z_SYNC_FLUSH, and the compression state is reset so that decompression can
-+ restart from this point if previous compressed data has been damaged or if
-+ random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
-+ the compression.
-+
-+ If deflate returns with avail_out == 0, this function must be called again
-+ with the same value of the flush parameter and more output space (updated
-+ avail_out), until the flush is complete (deflate returns with non-zero
-+ avail_out).
-+
-+ If the parameter flush is set to Z_FINISH, pending input is processed,
-+ pending output is flushed and deflate returns with Z_STREAM_END if there
-+ was enough output space; if deflate returns with Z_OK, this function must be
-+ called again with Z_FINISH and more output space (updated avail_out) but no
-+ more input data, until it returns with Z_STREAM_END or an error. After
-+ deflate has returned Z_STREAM_END, the only possible operations on the
-+ stream are deflateReset or deflateEnd.
-+
-+ Z_FINISH can be used immediately after deflateInit if all the compression
-+ is to be done in a single step. In this case, avail_out must be at least
-+ 0.1% larger than avail_in plus 12 bytes. If deflate does not return
-+ Z_STREAM_END, then it must be called again as described above.
-+
-+ deflate() sets strm->adler to the adler32 checksum of all input read
-+ so far (that is, total_in bytes).
-+
-+ deflate() may update data_type if it can make a good guess about
-+ the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
-+ binary. This field is only for information purposes and does not affect
-+ the compression algorithm in any manner.
-+
-+ deflate() returns Z_OK if some progress has been made (more input
-+ processed or more output produced), Z_STREAM_END if all input has been
-+ consumed and all output has been produced (only when flush is set to
-+ Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
-+ if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
-+ (for example avail_in or avail_out was zero).
-+*/
-+
-+
-+ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
-+/*
-+ All dynamically allocated data structures for this stream are freed.
-+ This function discards any unprocessed input and does not flush any
-+ pending output.
-+
-+ deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
-+ stream state was inconsistent, Z_DATA_ERROR if the stream was freed
-+ prematurely (some input or output was discarded). In the error case,
-+ msg may be set but then points to a static string (which must not be
-+ deallocated).
-+*/
-+
-+
-+/*
-+ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
-+
-+ Initializes the internal stream state for decompression. The fields
-+ next_in, avail_in, zalloc, zfree and opaque must be initialized before by
-+ the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
-+ value depends on the compression method), inflateInit determines the
-+ compression method from the zlib header and allocates all data structures
-+ accordingly; otherwise the allocation will be deferred to the first call of
-+ inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to
-+ use default allocation functions.
-+
-+ inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
-+ memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
-+ version assumed by the caller. msg is set to null if there is no error
-+ message. inflateInit does not perform any decompression apart from reading
-+ the zlib header if present: this will be done by inflate(). (So next_in and
-+ avail_in may be modified, but next_out and avail_out are unchanged.)
-+*/
-+
-+
-+ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
-+/*
-+ inflate decompresses as much data as possible, and stops when the input
-+ buffer becomes empty or the output buffer becomes full. It may some
-+ introduce some output latency (reading input without producing any output)
-+ except when forced to flush.
-+
-+ The detailed semantics are as follows. inflate performs one or both of the
-+ following actions:
-+
-+ - Decompress more input starting at next_in and update next_in and avail_in
-+ accordingly. If not all input can be processed (because there is not
-+ enough room in the output buffer), next_in is updated and processing
-+ will resume at this point for the next call of inflate().
-+
-+ - Provide more output starting at next_out and update next_out and avail_out
-+ accordingly. inflate() provides as much output as possible, until there
-+ is no more input data or no more space in the output buffer (see below
-+ about the flush parameter).
-+
-+ Before the call of inflate(), the application should ensure that at least
-+ one of the actions is possible, by providing more input and/or consuming
-+ more output, and updating the next_* and avail_* values accordingly.
-+ The application can consume the uncompressed output when it wants, for
-+ example when the output buffer is full (avail_out == 0), or after each
-+ call of inflate(). If inflate returns Z_OK and with zero avail_out, it
-+ must be called again after making room in the output buffer because there
-+ might be more output pending.
-+
-+ If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much
-+ output as possible to the output buffer. The flushing behavior of inflate is
-+ not specified for values of the flush parameter other than Z_SYNC_FLUSH
-+ and Z_FINISH, but the current implementation actually flushes as much output
-+ as possible anyway.
-+
-+ inflate() should normally be called until it returns Z_STREAM_END or an
-+ error. However if all decompression is to be performed in a single step
-+ (a single call of inflate), the parameter flush should be set to
-+ Z_FINISH. In this case all pending input is processed and all pending
-+ output is flushed; avail_out must be large enough to hold all the
-+ uncompressed data. (The size of the uncompressed data may have been saved
-+ by the compressor for this purpose.) The next operation on this stream must
-+ be inflateEnd to deallocate the decompression state. The use of Z_FINISH
-+ is never required, but can be used to inform inflate that a faster routine
-+ may be used for the single inflate() call.
-+
-+ If a preset dictionary is needed at this point (see inflateSetDictionary
-+ below), inflate sets strm-adler to the adler32 checksum of the
-+ dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise
-+ it sets strm->adler to the adler32 checksum of all output produced
-+ so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or
-+ an error code as described below. At the end of the stream, inflate()
-+ checks that its computed adler32 checksum is equal to that saved by the
-+ compressor and returns Z_STREAM_END only if the checksum is correct.
-+
-+ inflate() returns Z_OK if some progress has been made (more input processed
-+ or more output produced), Z_STREAM_END if the end of the compressed data has
-+ been reached and all uncompressed output has been produced, Z_NEED_DICT if a
-+ preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
-+ corrupted (input stream not conforming to the zlib format or incorrect
-+ adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent
-+ (for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not
-+ enough memory, Z_BUF_ERROR if no progress is possible or if there was not
-+ enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR
-+ case, the application may then call inflateSync to look for a good
-+ compression block.
-+*/
-+
-+
-+ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
-+/*
-+ All dynamically allocated data structures for this stream are freed.
-+ This function discards any unprocessed input and does not flush any
-+ pending output.
-+
-+ inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
-+ was inconsistent. In the error case, msg may be set but then points to a
-+ static string (which must not be deallocated).
-+*/
-+
-+ /* Advanced functions */
-+
-+/*
-+ The following functions are needed only in some special applications.
-+*/
-+
-+/*
-+ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
-+ int level,
-+ int method,
-+ int windowBits,
-+ int memLevel,
-+ int strategy));
-+
-+ This is another version of deflateInit with more compression options. The
-+ fields next_in, zalloc, zfree and opaque must be initialized before by
-+ the caller.
-+
-+ The method parameter is the compression method. It must be Z_DEFLATED in
-+ this version of the library.
-+
-+ The windowBits parameter is the base two logarithm of the window size
-+ (the size of the history buffer). It should be in the range 8..15 for this
-+ version of the library. Larger values of this parameter result in better
-+ compression at the expense of memory usage. The default value is 15 if
-+ deflateInit is used instead.
-+
-+ The memLevel parameter specifies how much memory should be allocated
-+ for the internal compression state. memLevel=1 uses minimum memory but
-+ is slow and reduces compression ratio; memLevel=9 uses maximum memory
-+ for optimal speed. The default value is 8. See zconf.h for total memory
-+ usage as a function of windowBits and memLevel.
-+
-+ The strategy parameter is used to tune the compression algorithm. Use the
-+ value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
-+ filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no
-+ string match). Filtered data consists mostly of small values with a
-+ somewhat random distribution. In this case, the compression algorithm is
-+ tuned to compress them better. The effect of Z_FILTERED is to force more
-+ Huffman coding and less string matching; it is somewhat intermediate
-+ between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects
-+ the compression ratio but not the correctness of the compressed output even
-+ if it is not set appropriately.
-+
-+ deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-+ memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
-+ method). msg is set to null if there is no error message. deflateInit2 does
-+ not perform any compression: this will be done by deflate().
-+*/
-+
-+ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
-+ const Bytef *dictionary,
-+ uInt dictLength));
-+/*
-+ Initializes the compression dictionary from the given byte sequence
-+ without producing any compressed output. This function must be called
-+ immediately after deflateInit, deflateInit2 or deflateReset, before any
-+ call of deflate. The compressor and decompressor must use exactly the same
-+ dictionary (see inflateSetDictionary).
-+
-+ The dictionary should consist of strings (byte sequences) that are likely
-+ to be encountered later in the data to be compressed, with the most commonly
-+ used strings preferably put towards the end of the dictionary. Using a
-+ dictionary is most useful when the data to be compressed is short and can be
-+ predicted with good accuracy; the data can then be compressed better than
-+ with the default empty dictionary.
-+
-+ Depending on the size of the compression data structures selected by
-+ deflateInit or deflateInit2, a part of the dictionary may in effect be
-+ discarded, for example if the dictionary is larger than the window size in
-+ deflate or deflate2. Thus the strings most likely to be useful should be
-+ put at the end of the dictionary, not at the front.
-+
-+ Upon return of this function, strm->adler is set to the Adler32 value
-+ of the dictionary; the decompressor may later use this value to determine
-+ which dictionary has been used by the compressor. (The Adler32 value
-+ applies to the whole dictionary even if only a subset of the dictionary is
-+ actually used by the compressor.)
-+
-+ deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
-+ parameter is invalid (such as NULL dictionary) or the stream state is
-+ inconsistent (for example if deflate has already been called for this stream
-+ or if the compression method is bsort). deflateSetDictionary does not
-+ perform any compression: this will be done by deflate().
-+*/
-+
-+ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
-+ z_streamp source));
-+/*
-+ Sets the destination stream as a complete copy of the source stream.
-+
-+ This function can be useful when several compression strategies will be
-+ tried, for example when there are several ways of pre-processing the input
-+ data with a filter. The streams that will be discarded should then be freed
-+ by calling deflateEnd. Note that deflateCopy duplicates the internal
-+ compression state which can be quite large, so this strategy is slow and
-+ can consume lots of memory.
-+
-+ deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
-+ enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
-+ (such as zalloc being NULL). msg is left unchanged in both source and
-+ destination.
-+*/
-+
-+ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
-+/*
-+ This function is equivalent to deflateEnd followed by deflateInit,
-+ but does not free and reallocate all the internal compression state.
-+ The stream will keep the same compression level and any other attributes
-+ that may have been set by deflateInit2.
-+
-+ deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-+ stream state was inconsistent (such as zalloc or state being NULL).
-+*/
-+
-+ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
-+ int level,
-+ int strategy));
-+/*
-+ Dynamically update the compression level and compression strategy. The
-+ interpretation of level and strategy is as in deflateInit2. This can be
-+ used to switch between compression and straight copy of the input data, or
-+ to switch to a different kind of input data requiring a different
-+ strategy. If the compression level is changed, the input available so far
-+ is compressed with the old level (and may be flushed); the new level will
-+ take effect only at the next call of deflate().
-+
-+ Before the call of deflateParams, the stream state must be set as for
-+ a call of deflate(), since the currently available input may have to
-+ be compressed and flushed. In particular, strm->avail_out must be non-zero.
-+
-+ deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
-+ stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
-+ if strm->avail_out was zero.
-+*/
-+
-+/*
-+ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
-+ int windowBits));
-+
-+ This is another version of inflateInit with an extra parameter. The
-+ fields next_in, avail_in, zalloc, zfree and opaque must be initialized
-+ before by the caller.
-+
-+ The windowBits parameter is the base two logarithm of the maximum window
-+ size (the size of the history buffer). It should be in the range 8..15 for
-+ this version of the library. The default value is 15 if inflateInit is used
-+ instead. If a compressed stream with a larger window size is given as
-+ input, inflate() will return with the error code Z_DATA_ERROR instead of
-+ trying to allocate a larger window.
-+
-+ inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-+ memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative
-+ memLevel). msg is set to null if there is no error message. inflateInit2
-+ does not perform any decompression apart from reading the zlib header if
-+ present: this will be done by inflate(). (So next_in and avail_in may be
-+ modified, but next_out and avail_out are unchanged.)
-+*/
-+
-+ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
-+ const Bytef *dictionary,
-+ uInt dictLength));
-+/*
-+ Initializes the decompression dictionary from the given uncompressed byte
-+ sequence. This function must be called immediately after a call of inflate
-+ if this call returned Z_NEED_DICT. The dictionary chosen by the compressor
-+ can be determined from the Adler32 value returned by this call of
-+ inflate. The compressor and decompressor must use exactly the same
-+ dictionary (see deflateSetDictionary).
-+
-+ inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
-+ parameter is invalid (such as NULL dictionary) or the stream state is
-+ inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
-+ expected one (incorrect Adler32 value). inflateSetDictionary does not
-+ perform any decompression: this will be done by subsequent calls of
-+ inflate().
-+*/
-+
-+ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
-+/*
-+ Skips invalid compressed data until a full flush point (see above the
-+ description of deflate with Z_FULL_FLUSH) can be found, or until all
-+ available input is skipped. No output is provided.
-+
-+ inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
-+ if no more input was provided, Z_DATA_ERROR if no flush point has been found,
-+ or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
-+ case, the application may save the current current value of total_in which
-+ indicates where valid compressed data was found. In the error case, the
-+ application may repeatedly call inflateSync, providing more input each time,
-+ until success or end of the input data.
-+*/
-+
-+ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
-+/*
-+ This function is equivalent to inflateEnd followed by inflateInit,
-+ but does not free and reallocate all the internal decompression state.
-+ The stream will keep attributes that may have been set by inflateInit2.
-+
-+ inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-+ stream state was inconsistent (such as zalloc or state being NULL).
-+*/
-+
-+
-+ /* utility functions */
-+
-+/*
-+ The following utility functions are implemented on top of the
-+ basic stream-oriented functions. To simplify the interface, some
-+ default options are assumed (compression level and memory usage,
-+ standard memory allocation functions). The source code of these
-+ utility functions can easily be modified if you need special options.
-+*/
-+
-+ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen,
-+ const Bytef *source, uLong sourceLen));
-+/*
-+ Compresses the source buffer into the destination buffer. sourceLen is
-+ the byte length of the source buffer. Upon entry, destLen is the total
-+ size of the destination buffer, which must be at least 0.1% larger than
-+ sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the
-+ compressed buffer.
-+ This function can be used to compress a whole file at once if the
-+ input file is mmap'ed.
-+ compress returns Z_OK if success, Z_MEM_ERROR if there was not
-+ enough memory, Z_BUF_ERROR if there was not enough room in the output
-+ buffer.
-+*/
-+
-+ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
-+ const Bytef *source, uLong sourceLen,
-+ int level));
-+/*
-+ Compresses the source buffer into the destination buffer. The level
-+ parameter has the same meaning as in deflateInit. sourceLen is the byte
-+ length of the source buffer. Upon entry, destLen is the total size of the
-+ destination buffer, which must be at least 0.1% larger than sourceLen plus
-+ 12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
-+
-+ compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-+ memory, Z_BUF_ERROR if there was not enough room in the output buffer,
-+ Z_STREAM_ERROR if the level parameter is invalid.
-+*/
-+
-+ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
-+ const Bytef *source, uLong sourceLen));
-+/*
-+ Decompresses the source buffer into the destination buffer. sourceLen is
-+ the byte length of the source buffer. Upon entry, destLen is the total
-+ size of the destination buffer, which must be large enough to hold the
-+ entire uncompressed data. (The size of the uncompressed data must have
-+ been saved previously by the compressor and transmitted to the decompressor
-+ by some mechanism outside the scope of this compression library.)
-+ Upon exit, destLen is the actual size of the compressed buffer.
-+ This function can be used to decompress a whole file at once if the
-+ input file is mmap'ed.
-+
-+ uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
-+ enough memory, Z_BUF_ERROR if there was not enough room in the output
-+ buffer, or Z_DATA_ERROR if the input data was corrupted.
-+*/
-+
-+
-+typedef voidp gzFile;
-+
-+ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
-+/*
-+ Opens a gzip (.gz) file for reading or writing. The mode parameter
-+ is as in fopen ("rb" or "wb") but can also include a compression level
-+ ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
-+ Huffman only compression as in "wb1h". (See the description
-+ of deflateInit2 for more information about the strategy parameter.)
-+
-+ gzopen can be used to read a file which is not in gzip format; in this
-+ case gzread will directly read from the file without decompression.
-+
-+ gzopen returns NULL if the file could not be opened or if there was
-+ insufficient memory to allocate the (de)compression state; errno
-+ can be checked to distinguish the two cases (if errno is zero, the
-+ zlib error is Z_MEM_ERROR). */
-+
-+ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
-+/*
-+ gzdopen() associates a gzFile with the file descriptor fd. File
-+ descriptors are obtained from calls like open, dup, creat, pipe or
-+ fileno (in the file has been previously opened with fopen).
-+ The mode parameter is as in gzopen.
-+ The next call of gzclose on the returned gzFile will also close the
-+ file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
-+ descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
-+ gzdopen returns NULL if there was insufficient memory to allocate
-+ the (de)compression state.
-+*/
-+
-+ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
-+/*
-+ Dynamically update the compression level or strategy. See the description
-+ of deflateInit2 for the meaning of these parameters.
-+ gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
-+ opened for writing.
-+*/
-+
-+ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
-+/*
-+ Reads the given number of uncompressed bytes from the compressed file.
-+ If the input file was not in gzip format, gzread copies the given number
-+ of bytes into the buffer.
-+ gzread returns the number of uncompressed bytes actually read (0 for
-+ end of file, -1 for error). */
-+
-+ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
-+ const voidp buf, unsigned len));
-+/*
-+ Writes the given number of uncompressed bytes into the compressed file.
-+ gzwrite returns the number of uncompressed bytes actually written
-+ (0 in case of error).
-+*/
-+
-+ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...));
-+/*
-+ Converts, formats, and writes the args to the compressed file under
-+ control of the format string, as in fprintf. gzprintf returns the number of
-+ uncompressed bytes actually written (0 in case of error).
-+*/
-+
-+ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
-+/*
-+ Writes the given null-terminated string to the compressed file, excluding
-+ the terminating null character.
-+ gzputs returns the number of characters written, or -1 in case of error.
-+*/
-+
-+ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
-+/*
-+ Reads bytes from the compressed file until len-1 characters are read, or
-+ a newline character is read and transferred to buf, or an end-of-file
-+ condition is encountered. The string is then terminated with a null
-+ character.
-+ gzgets returns buf, or Z_NULL in case of error.
-+*/
-+
-+ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
-+/*
-+ Writes c, converted to an unsigned char, into the compressed file.
-+ gzputc returns the value that was written, or -1 in case of error.
-+*/
-+
-+ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
-+/*
-+ Reads one byte from the compressed file. gzgetc returns this byte
-+ or -1 in case of end of file or error.
-+*/
-+
-+ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
-+/*
-+ Flushes all pending output into the compressed file. The parameter
-+ flush is as in the deflate() function. The return value is the zlib
-+ error number (see function gzerror below). gzflush returns Z_OK if
-+ the flush parameter is Z_FINISH and all output could be flushed.
-+ gzflush should be called only when strictly necessary because it can
-+ degrade compression.
-+*/
-+
-+ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
-+ z_off_t offset, int whence));
-+/*
-+ Sets the starting position for the next gzread or gzwrite on the
-+ given compressed file. The offset represents a number of bytes in the
-+ uncompressed data stream. The whence parameter is defined as in lseek(2);
-+ the value SEEK_END is not supported.
-+ If the file is opened for reading, this function is emulated but can be
-+ extremely slow. If the file is opened for writing, only forward seeks are
-+ supported; gzseek then compresses a sequence of zeroes up to the new
-+ starting position.
-+
-+ gzseek returns the resulting offset location as measured in bytes from
-+ the beginning of the uncompressed stream, or -1 in case of error, in
-+ particular if the file is opened for writing and the new starting position
-+ would be before the current position.
-+*/
-+
-+ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
-+/*
-+ Rewinds the given file. This function is supported only for reading.
-+
-+ gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
-+*/
-+
-+ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
-+/*
-+ Returns the starting position for the next gzread or gzwrite on the
-+ given compressed file. This position represents a number of bytes in the
-+ uncompressed data stream.
-+
-+ gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
-+*/
-+
-+ZEXTERN int ZEXPORT gzeof OF((gzFile file));
-+/*
-+ Returns 1 when EOF has previously been detected reading the given
-+ input stream, otherwise zero.
-+*/
-+
-+ZEXTERN int ZEXPORT gzclose OF((gzFile file));
-+/*
-+ Flushes all pending output if necessary, closes the compressed file
-+ and deallocates all the (de)compression state. The return value is the zlib
-+ error number (see function gzerror below).
-+*/
-+
-+ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
-+/*
-+ Returns the error message for the last error which occurred on the
-+ given compressed file. errnum is set to zlib error number. If an
-+ error occurred in the file system and not in the compression library,
-+ errnum is set to Z_ERRNO and the application may consult errno
-+ to get the exact error code.
-+*/
-+
-+ /* checksum functions */
-+
-+/*
-+ These functions are not related to compression but are exported
-+ anyway because they might be useful in applications using the
-+ compression library.
-+*/
-+
-+ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
-+
-+/*
-+ Update a running Adler-32 checksum with the bytes buf[0..len-1] and
-+ return the updated checksum. If buf is NULL, this function returns
-+ the required initial value for the checksum.
-+ An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
-+ much faster. Usage example:
-+
-+ uLong adler = adler32(0L, Z_NULL, 0);
-+
-+ while (read_buffer(buffer, length) != EOF) {
-+ adler = adler32(adler, buffer, length);
-+ }
-+ if (adler != original_adler) error();
-+*/
-+
-+ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
-+/*
-+ Update a running crc with the bytes buf[0..len-1] and return the updated
-+ crc. If buf is NULL, this function returns the required initial value
-+ for the crc. Pre- and post-conditioning (one's complement) is performed
-+ within this function so it shouldn't be done by the application.
-+ Usage example:
-+
-+ uLong crc = crc32(0L, Z_NULL, 0);
-+
-+ while (read_buffer(buffer, length) != EOF) {
-+ crc = crc32(crc, buffer, length);
-+ }
-+ if (crc != original_crc) error();
-+*/
-+
-+
-+ /* various hacks, don't look :) */
-+
-+/* deflateInit and inflateInit are macros to allow checking the zlib version
-+ * and the compiler's view of z_stream:
-+ */
-+ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
-+ const char *version, int stream_size));
-+ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
-+ const char *version, int stream_size));
-+ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
-+ int windowBits, int memLevel,
-+ int strategy, const char *version,
-+ int stream_size));
-+ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
-+ const char *version, int stream_size));
-+#define deflateInit(strm, level) \
-+ deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
-+#define inflateInit(strm) \
-+ inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream))
-+#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
-+ deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
-+ (strategy), ZLIB_VERSION, sizeof(z_stream))
-+#define inflateInit2(strm, windowBits) \
-+ inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
-+
-+
-+#if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL)
-+ struct internal_state {int dummy;}; /* hack for buggy compilers */
-+#endif
-+
-+ZEXTERN const char * ZEXPORT zError OF((int err));
-+ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z));
-+ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void));
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* _ZLIB_H */
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ linux/include/zlib/zutil.h 2004-07-05 23:59:30.000000000 +0100
-@@ -0,0 +1,225 @@
-+/* zutil.h -- internal interface and configuration of the compression library
-+ * Copyright (C) 1995-2002 Jean-loup Gailly.
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* WARNING: this file should *not* be used by applications. It is
-+ part of the implementation of the compression library and is
-+ subject to change. Applications should only use zlib.h.
-+ */
-+
-+/* @(#) $Id: zutil.h,v 1.1 2004/07/05 22:59:30 pb Exp $ */
-+
-+#ifndef _Z_UTIL_H
-+#define _Z_UTIL_H
-+
-+#include "zlib.h"
-+
-+#include <linux/string.h>
-+#define HAVE_MEMCPY
-+
-+#if 0 // #ifdef STDC
-+# include <stddef.h>
-+# include <string.h>
-+# include <stdlib.h>
-+#endif
-+#ifndef __KERNEL__
-+#ifdef NO_ERRNO_H
-+ extern int errno;
-+#else
-+# include <errno.h>
-+#endif
-+#endif
-+
-+#ifndef local
-+# define local static
-+#endif
-+/* compile with -Dlocal if your debugger can't find static symbols */
-+
-+typedef unsigned char uch;
-+typedef uch FAR uchf;
-+typedef unsigned short ush;
-+typedef ush FAR ushf;
-+typedef unsigned long ulg;
-+
-+extern const char *z_errmsg[10]; /* indexed by 2-zlib_error */
-+/* (size given to avoid silly warnings with Visual C++) */
-+
-+#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
-+
-+#define ERR_RETURN(strm,err) \
-+ return (strm->msg = ERR_MSG(err), (err))
-+/* To be used only when the state is known to be valid */
-+
-+ /* common constants */
-+
-+#ifndef DEF_WBITS
-+# define DEF_WBITS MAX_WBITS
-+#endif
-+/* default windowBits for decompression. MAX_WBITS is for compression only */
-+
-+#if MAX_MEM_LEVEL >= 8
-+# define DEF_MEM_LEVEL 8
-+#else
-+# define DEF_MEM_LEVEL MAX_MEM_LEVEL
-+#endif
-+/* default memLevel */
-+
-+#define STORED_BLOCK 0
-+#define STATIC_TREES 1
-+#define DYN_TREES 2
-+/* The three kinds of block type */
-+
-+#define MIN_MATCH 3
-+#define MAX_MATCH 258
-+/* The minimum and maximum match lengths */
-+
-+#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
-+
-+ /* target dependencies */
-+
-+#ifdef MSDOS
-+# define OS_CODE 0x00
-+# if defined(__TURBOC__) || defined(__BORLANDC__)
-+# if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
-+ /* Allow compilation with ANSI keywords only enabled */
-+ void _Cdecl farfree( void *block );
-+ void *_Cdecl farmalloc( unsigned long nbytes );
-+# else
-+# include <alloc.h>
-+# endif
-+# else /* MSC or DJGPP */
-+# include <malloc.h>
-+# endif
-+#endif
-+
-+#ifdef OS2
-+# define OS_CODE 0x06
-+#endif
-+
-+#ifdef WIN32 /* Window 95 & Windows NT */
-+# define OS_CODE 0x0b
-+#endif
-+
-+#if defined(VAXC) || defined(VMS)
-+# define OS_CODE 0x02
-+# define F_OPEN(name, mode) \
-+ fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
-+#endif
-+
-+#ifdef AMIGA
-+# define OS_CODE 0x01
-+#endif
-+
-+#if defined(ATARI) || defined(atarist)
-+# define OS_CODE 0x05
-+#endif
-+
-+#if defined(MACOS) || defined(TARGET_OS_MAC)
-+# define OS_CODE 0x07
-+# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
-+# include <unix.h> /* for fdopen */
-+# else
-+# ifndef fdopen
-+# define fdopen(fd,mode) NULL /* No fdopen() */
-+# endif
-+# endif
-+#endif
-+
-+#ifdef __50SERIES /* Prime/PRIMOS */
-+# define OS_CODE 0x0F
-+#endif
-+
-+#ifdef TOPS20
-+# define OS_CODE 0x0a
-+#endif
-+
-+#if defined(_BEOS_) || defined(RISCOS)
-+# define fdopen(fd,mode) NULL /* No fdopen() */
-+#endif
-+
-+#if (defined(_MSC_VER) && (_MSC_VER > 600))
-+# define fdopen(fd,type) _fdopen(fd,type)
-+#endif
-+
-+
-+ /* Common defaults */
-+
-+#ifndef OS_CODE
-+# define OS_CODE 0x03 /* assume Unix */
-+#endif
-+
-+#ifndef F_OPEN
-+# define F_OPEN(name, mode) fopen((name), (mode))
-+#endif
-+
-+ /* functions */
-+
-+#ifdef HAVE_STRERROR
-+ extern char *strerror OF((int));
-+# define zstrerror(errnum) strerror(errnum)
-+#else
-+# define zstrerror(errnum) ""
-+#endif
-+
-+#if defined(pyr)
-+# define NO_MEMCPY
-+#endif
-+#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
-+ /* Use our own functions for small and medium model with MSC <= 5.0.
-+ * You may have to use the same strategy for Borland C (untested).
-+ * The __SC__ check is for Symantec.
-+ */
-+# define NO_MEMCPY
-+#endif
-+#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
-+# define HAVE_MEMCPY
-+#endif
-+#ifdef HAVE_MEMCPY
-+# ifdef SMALL_MEDIUM /* MSDOS small or medium model */
-+# define zmemcpy _fmemcpy
-+# define zmemcmp _fmemcmp
-+# define zmemzero(dest, len) _fmemset(dest, 0, len)
-+# else
-+# define zmemcpy memcpy
-+# define zmemcmp memcmp
-+# define zmemzero(dest, len) memset(dest, 0, len)
-+# endif
-+#else
-+ extern void zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
-+ extern int zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
-+ extern void zmemzero OF((Bytef* dest, uInt len));
-+#endif
-+
-+/* Diagnostic functions */
-+#ifdef DEBUG
-+# include <stdio.h>
-+ extern int z_verbose;
-+ extern void z_error OF((char *m));
-+# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
-+# define Trace(x) {if (z_verbose>=0) fprintf x ;}
-+# define Tracev(x) {if (z_verbose>0) fprintf x ;}
-+# define Tracevv(x) {if (z_verbose>1) fprintf x ;}
-+# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;}
-+# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;}
-+#else
-+# define Assert(cond,msg)
-+# define Trace(x)
-+# define Tracev(x)
-+# define Tracevv(x)
-+# define Tracec(c,x)
-+# define Tracecv(c,x)
-+#endif
-+
-+
-+typedef uLong (ZEXPORT *check_func) OF((uLong check, const Bytef *buf,
-+ uInt len));
-+voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
-+void zcfree OF((voidpf opaque, voidpf ptr));
-+
-+#define ZALLOC(strm, items, size) \
-+ (*((strm)->zalloc))((strm)->opaque, (items), (size))
-+#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
-+#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
-+
-+#endif /* _Z_UTIL_H */
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ linux/include/zconf.h 2004-07-04 15:38:31.000000000 +0100
-@@ -0,0 +1,309 @@
-+/* zconf.h -- configuration of the zlib compression library
-+ * Copyright (C) 1995-2002 Jean-loup Gailly.
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* @(#) $Id: zconf.h,v 1.2 2004/02/22 06:48:23 mcr Exp $ */
-+
-+#ifndef _ZCONF_H
-+#define _ZCONF_H
-+
-+/*
-+ * If you *really* need a unique prefix for all types and library functions,
-+ * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
-+ */
-+#ifdef IPCOMP_PREFIX
-+# define deflateInit_ ipcomp_deflateInit_
-+# define deflate ipcomp_deflate
-+# define deflateEnd ipcomp_deflateEnd
-+# define inflateInit_ ipcomp_inflateInit_
-+# define inflate ipcomp_inflate
-+# define inflateEnd ipcomp_inflateEnd
-+# define deflateInit2_ ipcomp_deflateInit2_
-+# define deflateSetDictionary ipcomp_deflateSetDictionary
-+# define deflateCopy ipcomp_deflateCopy
-+# define deflateReset ipcomp_deflateReset
-+# define deflateParams ipcomp_deflateParams
-+# define inflateInit2_ ipcomp_inflateInit2_
-+# define inflateSetDictionary ipcomp_inflateSetDictionary
-+# define inflateSync ipcomp_inflateSync
-+# define inflateSyncPoint ipcomp_inflateSyncPoint
-+# define inflateReset ipcomp_inflateReset
-+# define compress ipcomp_compress
-+# define compress2 ipcomp_compress2
-+# define uncompress ipcomp_uncompress
-+# define adler32 ipcomp_adler32
-+# define crc32 ipcomp_crc32
-+# define get_crc_table ipcomp_get_crc_table
-+/* SSS: these also need to be prefixed to avoid clash with ppp_deflate and ext2compression */
-+# define inflate_blocks ipcomp_deflate_blocks
-+# define inflate_blocks_free ipcomp_deflate_blocks_free
-+# define inflate_blocks_new ipcomp_inflate_blocks_new
-+# define inflate_blocks_reset ipcomp_inflate_blocks_reset
-+# define inflate_blocks_sync_point ipcomp_inflate_blocks_sync_point
-+# define inflate_set_dictionary ipcomp_inflate_set_dictionary
-+# define inflate_codes ipcomp_inflate_codes
-+# define inflate_codes_free ipcomp_inflate_codes_free
-+# define inflate_codes_new ipcomp_inflate_codes_new
-+# define inflate_fast ipcomp_inflate_fast
-+# define inflate_trees_bits ipcomp_inflate_trees_bits
-+# define inflate_trees_dynamic ipcomp_inflate_trees_dynamic
-+# define inflate_trees_fixed ipcomp_inflate_trees_fixed
-+# define inflate_flush ipcomp_inflate_flush
-+# define inflate_mask ipcomp_inflate_mask
-+# define _dist_code _ipcomp_dist_code
-+# define _length_code _ipcomp_length_code
-+# define _tr_align _ipcomp_tr_align
-+# define _tr_flush_block _ipcomp_tr_flush_block
-+# define _tr_init _ipcomp_tr_init
-+# define _tr_stored_block _ipcomp_tr_stored_block
-+# define _tr_tally _ipcomp_tr_tally
-+# define zError ipcomp_zError
-+# define z_errmsg ipcomp_z_errmsg
-+# define zlibVersion ipcomp_zlibVersion
-+# define match_init ipcomp_match_init
-+# define longest_match ipcomp_longest_match
-+#endif
-+
-+#ifdef Z_PREFIX
-+# define Byte z_Byte
-+# define uInt z_uInt
-+# define uLong z_uLong
-+# define Bytef z_Bytef
-+# define charf z_charf
-+# define intf z_intf
-+# define uIntf z_uIntf
-+# define uLongf z_uLongf
-+# define voidpf z_voidpf
-+# define voidp z_voidp
-+#endif
-+
-+#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
-+# define WIN32
-+#endif
-+#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386)
-+# ifndef __32BIT__
-+# define __32BIT__
-+# endif
-+#endif
-+#if defined(__MSDOS__) && !defined(MSDOS)
-+# define MSDOS
-+#endif
-+
-+/*
-+ * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
-+ * than 64k bytes at a time (needed on systems with 16-bit int).
-+ */
-+#if defined(MSDOS) && !defined(__32BIT__)
-+# define MAXSEG_64K
-+#endif
-+#ifdef MSDOS
-+# define UNALIGNED_OK
-+#endif
-+
-+#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32)) && !defined(STDC)
-+# define STDC
-+#endif
-+#if defined(__STDC__) || defined(__cplusplus) || defined(__OS2__)
-+# ifndef STDC
-+# define STDC
-+# endif
-+#endif
-+
-+#ifndef STDC
-+# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
-+# define const
-+# endif
-+#endif
-+
-+/* Some Mac compilers merge all .h files incorrectly: */
-+#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__)
-+# define NO_DUMMY_DECL
-+#endif
-+
-+/* Old Borland C incorrectly complains about missing returns: */
-+#if defined(__BORLANDC__) && (__BORLANDC__ < 0x500)
-+# define NEED_DUMMY_RETURN
-+#endif
-+
-+
-+/* Maximum value for memLevel in deflateInit2 */
-+#ifndef MAX_MEM_LEVEL
-+# ifdef MAXSEG_64K
-+# define MAX_MEM_LEVEL 8
-+# else
-+# define MAX_MEM_LEVEL 9
-+# endif
-+#endif
-+
-+/* Maximum value for windowBits in deflateInit2 and inflateInit2.
-+ * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
-+ * created by gzip. (Files created by minigzip can still be extracted by
-+ * gzip.)
-+ */
-+#ifndef MAX_WBITS
-+# define MAX_WBITS 15 /* 32K LZ77 window */
-+#endif
-+
-+/* The memory requirements for deflate are (in bytes):
-+ (1 << (windowBits+2)) + (1 << (memLevel+9))
-+ that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
-+ plus a few kilobytes for small objects. For example, if you want to reduce
-+ the default memory requirements from 256K to 128K, compile with
-+ make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
-+ Of course this will generally degrade compression (there's no free lunch).
-+
-+ The memory requirements for inflate are (in bytes) 1 << windowBits
-+ that is, 32K for windowBits=15 (default value) plus a few kilobytes
-+ for small objects.
-+*/
-+
-+ /* Type declarations */
-+
-+#ifndef OF /* function prototypes */
-+# ifdef STDC
-+# define OF(args) args
-+# else
-+# define OF(args) ()
-+# endif
-+#endif
-+
-+/* The following definitions for FAR are needed only for MSDOS mixed
-+ * model programming (small or medium model with some far allocations).
-+ * This was tested only with MSC; for other MSDOS compilers you may have
-+ * to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
-+ * just define FAR to be empty.
-+ */
-+#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__)
-+ /* MSC small or medium model */
-+# define SMALL_MEDIUM
-+# ifdef _MSC_VER
-+# define FAR _far
-+# else
-+# define FAR far
-+# endif
-+#endif
-+#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__))
-+# ifndef __32BIT__
-+# define SMALL_MEDIUM
-+# define FAR _far
-+# endif
-+#endif
-+
-+/* Compile with -DZLIB_DLL for Windows DLL support */
-+#if defined(ZLIB_DLL)
-+# if defined(_WINDOWS) || defined(WINDOWS)
-+# ifdef FAR
-+# undef FAR
-+# endif
-+# include <windows.h>
-+# define ZEXPORT WINAPI
-+# ifdef WIN32
-+# define ZEXPORTVA WINAPIV
-+# else
-+# define ZEXPORTVA FAR _cdecl _export
-+# endif
-+# endif
-+# if defined (__BORLANDC__)
-+# if (__BORLANDC__ >= 0x0500) && defined (WIN32)
-+# include <windows.h>
-+# define ZEXPORT __declspec(dllexport) WINAPI
-+# define ZEXPORTRVA __declspec(dllexport) WINAPIV
-+# else
-+# if defined (_Windows) && defined (__DLL__)
-+# define ZEXPORT _export
-+# define ZEXPORTVA _export
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#if defined (__BEOS__)
-+# if defined (ZLIB_DLL)
-+# define ZEXTERN extern __declspec(dllexport)
-+# else
-+# define ZEXTERN extern __declspec(dllimport)
-+# endif
-+#endif
-+
-+#ifndef ZEXPORT
-+# define ZEXPORT
-+#endif
-+#ifndef ZEXPORTVA
-+# define ZEXPORTVA
-+#endif
-+#ifndef ZEXTERN
-+# define ZEXTERN extern
-+#endif
-+
-+#ifndef FAR
-+# define FAR
-+#endif
-+
-+#if !defined(MACOS) && !defined(TARGET_OS_MAC)
-+typedef unsigned char Byte; /* 8 bits */
-+#endif
-+typedef unsigned int uInt; /* 16 bits or more */
-+typedef unsigned long uLong; /* 32 bits or more */
-+
-+#ifdef SMALL_MEDIUM
-+ /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
-+# define Bytef Byte FAR
-+#else
-+ typedef Byte FAR Bytef;
-+#endif
-+typedef char FAR charf;
-+typedef int FAR intf;
-+typedef uInt FAR uIntf;
-+typedef uLong FAR uLongf;
-+
-+#ifdef STDC
-+ typedef void FAR *voidpf;
-+ typedef void *voidp;
-+#else
-+ typedef Byte FAR *voidpf;
-+ typedef Byte *voidp;
-+#endif
-+
-+#ifdef HAVE_UNISTD_H
-+# include <sys/types.h> /* for off_t */
-+# include <unistd.h> /* for SEEK_* and off_t */
-+# define z_off_t off_t
-+#endif
-+#ifndef SEEK_SET
-+# define SEEK_SET 0 /* Seek from beginning of file. */
-+# define SEEK_CUR 1 /* Seek from current position. */
-+# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
-+#endif
-+#ifndef z_off_t
-+# define z_off_t long
-+#endif
-+
-+/* MVS linker does not support external names larger than 8 bytes */
-+#if defined(__MVS__)
-+# pragma map(deflateInit_,"DEIN")
-+# pragma map(deflateInit2_,"DEIN2")
-+# pragma map(deflateEnd,"DEEND")
-+# pragma map(inflateInit_,"ININ")
-+# pragma map(inflateInit2_,"ININ2")
-+# pragma map(inflateEnd,"INEND")
-+# pragma map(inflateSync,"INSY")
-+# pragma map(inflateSetDictionary,"INSEDI")
-+# pragma map(inflate_blocks,"INBL")
-+# pragma map(inflate_blocks_new,"INBLNE")
-+# pragma map(inflate_blocks_free,"INBLFR")
-+# pragma map(inflate_blocks_reset,"INBLRE")
-+# pragma map(inflate_codes_free,"INCOFR")
-+# pragma map(inflate_codes,"INCO")
-+# pragma map(inflate_fast,"INFA")
-+# pragma map(inflate_flush,"INFLU")
-+# pragma map(inflate_mask,"INMA")
-+# pragma map(inflate_set_dictionary,"INSEDI2")
-+# pragma map(ipcomp_inflate_copyright,"INCOPY")
-+# pragma map(inflate_trees_bits,"INTRBI")
-+# pragma map(inflate_trees_dynamic,"INTRDY")
-+# pragma map(inflate_trees_fixed,"INTRFI")
-+# pragma map(inflate_trees_free,"INTRFR")
-+#endif
-+
-+#endif /* _ZCONF_H */
diff --git a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/mkdep.patch b/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/mkdep.patch
deleted file mode 100644
index 4daeaa11be..0000000000
--- a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh36.12/mkdep.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Made by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- linux/Makefile~mkdep 2003-12-19 09:36:51.000000000 -0800
-+++ linux/Makefile 2003-12-19 09:57:44.000000000 -0800
-@@ -458,7 +458,7 @@
-
- dep-files: scripts/mkdep archdep include/linux/version.h
- scripts/mkdep -- init/*.c > .depend
-- scripts/mkdep -- `find $(FINDHPATH) -name SCCS -prune -o -follow -name \*.h ! -name modversions.h -print` > .hdepend
-+ $(foreach, dir, $(FINDHPATH), scripts/mkdep -- `find $(dir) -name SCCS -prune -o -follow -name \*.h ! -name modversions.h -print` >> .hdepend)
- $(MAKE) $(patsubst %,_sfdep_%,$(SUBDIRS)) _FASTDEP_ALL_SUB_DIRS="$(SUBDIRS)"
- ifdef CONFIG_MODVERSIONS
- $(MAKE) update-modverfile
diff --git a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.1/defconfig-ipaqsa b/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.1/defconfig-ipaqsa
deleted file mode 100644
index 2a965e4f32..0000000000
--- a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.1/defconfig-ipaqsa
+++ /dev/null
@@ -1,1508 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_OMAHA is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_RISCSTATION is not set
-CONFIG_ARCH_SA1100=y
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_AT91RM9200DK is not set
-# CONFIG_MINIMAL_OOPS is not set
-
-#
-# Linux As Bootldr support
-#
-# CONFIG_LAB is not set
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-
-#
-# Archimedes/A5000 Implementations (select only ONE)
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ACCELENT is not set
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-CONFIG_SA1100_H3100=y
-CONFIG_SA1100_H3600=y
-CONFIG_SA1100_H3800=y
-# CONFIG_SA1100_CONSUS is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_JORNADA56X is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SIMPUTER is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-CONFIG_SA1100_USB=m
-CONFIG_SA1100_USB_NETLINK=m
-CONFIG_SA1100_USB_CHAR=m
-CONFIG_REGISTERS=m
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-# CONFIG_ARCH_H3900 is not set
-# CONFIG_ARCH_H1900 is not set
-# CONFIG_ARCH_H5400 is not set
-# CONFIG_ARCH_H2200 is not set
-# CONFIG_ARCH_AXIM is not set
-# CONFIG_PXA_USB is not set
-# CONFIG_PXA_USB_NETLINK is not set
-# CONFIG_PXA_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_ARM1026 is not set
-# CONFIG_CPU_SA110 is not set
-CONFIG_CPU_SA1100=y
-# CONFIG_CPU_32v3 is not set
-CONFIG_CPU_32v4=y
-CONFIG_SA1100_IPAQ=y
-# CONFIG_PXA_IPAQ is not set
-CONFIG_IPAQ_HANDHELD=y
-
-#
-# Compaq iPAQ Handheld
-#
-CONFIG_IPAQ_HAL=m
-CONFIG_H3600_MICRO=m
-CONFIG_IPAQ_HAS_ROSELLA=y
-# CONFIG_IPAQ_HAS_ASIC3 is not set
-CONFIG_H3600_ASIC=m
-CONFIG_H3900_ASIC_DEBUG=y
-# CONFIG_H5400_ASIC is not set
-# CONFIG_H1900_ASIC is not set
-# CONFIG_H1900_TS is not set
-CONFIG_H3600_HARDWARE=y
-CONFIG_IPAQ_SLEEVE=m
-CONFIG_SLEEVE_DEBUG=y
-CONFIG_SLEEVE_DEBUG_VERBOSE=0
-# CONFIG_SLEEVE_IRQ_DEMUX is not set
-
-#
-# Processor Features
-#
-CONFIG_DISCONTIGMEM=y
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-CONFIG_ISA=y
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CPU_FREQ=y
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=m
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-CONFIG_PCMCIA_SA1100=m
-# CONFIG_PCMCIA_PXA is not set
-CONFIG_MERCURY_BACKPAQ=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=m
-CONFIG_MMC_DEBUG=y
-CONFIG_MMC_DEBUG_VERBOSE=0
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-
-#
-# At least one math emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=m
-CONFIG_HWTIMER=m
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="keepinitrd"
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=1
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# 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=m
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL 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=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_CFI_B1 is not set
-CONFIG_MTD_CFI_B2=y
-CONFIG_MTD_CFI_B4=y
-# CONFIG_MTD_CFI_B8 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_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_IPAQ=y
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_H720X is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_CEIVA is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-CONFIG_MTD_MTDRAM=m
-CONFIG_MTDRAM_TOTAL_SIZE=4096
-CONFIG_MTDRAM_ERASE_SIZE=128
-CONFIG_MTD_BLKMTD=m
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_NVRD=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-CONFIG_BLK_DEV_LVM=m
-CONFIG_BLK_DEV_DM=m
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-# CONFIG_NETLINK_DEV is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_TFTP is not set
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_MAC=m
-# CONFIG_IP_NF_MATCH_PKTTYPE is not set
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_DSCP is not set
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-# CONFIG_IP_NF_MATCH_HELPER is not set
-CONFIG_IP_NF_MATCH_STATE=m
-# CONFIG_IP_NF_MATCH_CONNTRACK is not set
-# CONFIG_IP_NF_MATCH_UNCLEAN is not set
-# CONFIG_IP_NF_MATCH_OWNER is not set
-CONFIG_IP_NF_FILTER=m
-# CONFIG_IP_NF_TARGET_REJECT is not set
-# CONFIG_IP_NF_TARGET_MIRROR is not set
-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_NAT_LOCAL is not set
-# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-# CONFIG_IP_NF_TARGET_ECN is not set
-# CONFIG_IP_NF_TARGET_DSCP is not set
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_ARPTABLES is not set
-CONFIG_IP_NF_COMPAT_IPCHAINS=m
-CONFIG_IP_NF_NAT_NEEDED=y
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MOBILITY=m
-CONFIG_IPV6_MOBILITY_MN=m
-# CONFIG_IPV6_MOBILITY_HA is not set
-CONFIG_IPV6_MOBILITY_DEBUG=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-# CONFIG_IP6_NF_MATCH_OWNER is not set
-CONFIG_IP6_NF_MATCH_MARK=m
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_AHESP is not set
-# CONFIG_IP6_NF_MATCH_LENGTH is not set
-# CONFIG_IP6_NF_MATCH_EUI64 is not set
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-
-#
-#
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
-CONFIG_BRIDGE=m
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_IPSEC=m
-
-#
-# IPSec options (FreeS/WAN)
-#
-CONFIG_KLIPS_AUTH_HMAC_MD5=y
-CONFIG_KLIPS_AUTH_HMAC_SHA1=y
-CONFIG_KLIPS_ENC_3DES=y
-
-#
-# ESP always enabled with tunnel mode
-#
-CONFIG_KLIPS_IPCOMP=y
-CONFIG_KLIPS_DEBUG=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_AIRO is not set
-# CONFIG_HERMES is not set
-# CONFIG_SPECTRUM24T is not set
-
-#
-# Wireless Pcmcia cards support
-#
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-# CONFIG_WVLAN_CS is not set
-# CONFIG_MWVLAN_CS is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_HOSTAP_CS is not set
-CONFIG_NET_WIRELESS=y
-CONFIG_ATMELWLAN=y
-# CONFIG_ATMELWLAN_USB_503A_RFMD is not set
-CONFIG_ATMELWLAN_PCMCIA_502A=m
-CONFIG_ATMELWLAN_PCMCIA_3COM=m
-CONFIG_ATMELWLAN_PCMCIA_502AD=m
-CONFIG_ATMELWLAN_PCMCIA_502AE=m
-CONFIG_ATMELWLAN_PCMCIA_504=m
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_AXNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-CONFIG_NET_PCMCIA_RADIO=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_PCMCIA_NETWAVE=m
-CONFIG_PCMCIA_WAVELAN=m
-# CONFIG_AIRONET4500_CS is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-CONFIG_IRDA_ULTRA=y
-
-#
-# IrDA options
-#
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-CONFIG_IRDA_DEBUG=y
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-CONFIG_IRPORT_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-CONFIG_SA1100_FIR=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=m
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=m
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_IDEDISK_STROKE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=m
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_SD_EXTRA_DEVS=40
-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_SR_EXTRA_DEVS=2
-CONFIG_CHR_DEV_SG=m
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# 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_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID 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_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO 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_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-CONFIG_SCSI_PCMCIA=y
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=m
-CONFIG_INPUT_KEYBDEV=m
-CONFIG_INPUT_MOUSEDEV=m
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=m
-CONFIG_INPUT_UINPUT=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=m
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_S3C2410 is not set
-# CONFIG_SERIAL_S3C2410_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SA1100_DEFAULT_BAUDRATE=115200
-CONFIG_SERIAL_H3800_ASIC=m
-# CONFIG_SERIAL_SIR_PXA is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
-CONFIG_NEWTONKBD=m
-CONFIG_SA1100_PROFILER=m
-
-#
-# Compaq iPAQ H3600 support
-#
-CONFIG_TOUCHSCREEN_H3600=m
-CONFIG_H3600_BACKPAQ_FPGA=m
-CONFIG_H3600_BACKPAQ_ACCEL=m
-CONFIG_H3600_BACKPAQ_GASGAUGE=m
-CONFIG_H3600_BACKPAQ_SRAM=m
-CONFIG_H3600_BACKPAQ_AUDIO=m
-CONFIG_H3600_STOWAWAY=m
-CONFIG_H3800_MICROKBD=m
-CONFIG_SA1100_LIRC=m
-# CONFIG_H5400_BUZZER is not set
-# CONFIG_H5400_FSI is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# L3 serial bus support
-#
-CONFIG_L3=y
-CONFIG_L3_ALGOBIT=y
-CONFIG_L3_BIT_SA1100_GPIO=y
-
-#
-# Other L3 adapters
-#
-# CONFIG_L3_S3C2410 is not set
-# CONFIG_L3_SA1111 is not set
-CONFIG_L3_BACKPAQ=m
-CONFIG_BIT_SA1100_GPIO=y
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=m
-# CONFIG_PSMOUSE is not set
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_MK712_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-CONFIG_INPUT_SERIO=m
-CONFIG_INPUT_SERPORT=m
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_PCWATCHDOG is not set
-# CONFIG_21285_WATCHDOG is not set
-# CONFIG_977_WATCHDOG is not set
-CONFIG_SA1100_WATCHDOG=m
-# CONFIG_PXA_WATCHDOG is not set
-# CONFIG_OMAHA_WATCHDOG is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_WAFER_WDT is not set
-# CONFIG_I810_TCO is not set
-# CONFIG_MIXCOMWD is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_W83877F_WDT is not set
-# CONFIG_WDT is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_SA1100_RTC=m
-# CONFIG_PXA_RTC_HACK 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_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=m
-# CONFIG_PCMCIA_MOBILISCAN_CS is not set
-# CONFIG_AXIM_KEY_FIX is not set
-
-#
-# Multimedia devices
-#
-CONFIG_MEDIA=m
-CONFIG_VIDEO_DEV=m
-CONFIG_V4L2_DEV=m
-
-#
-# Video For Linux
-#
-CONFIG_VIDEO_PROC_FS=y
-# CONFIG_I2C_PARPORT is not set
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_ZORAN_BUZ is not set
-# CONFIG_VIDEO_ZORAN_DC10 is not set
-# CONFIG_VIDEO_ZORAN_LML33 is not set
-# CONFIG_VIDEO_ZR36120 is not set
-# CONFIG_VIDEO_MEYE is not set
-# CONFIG_VIDEO_CYBERPRO is not set
-CONFIG_VIDEO_H3600_BACKPAQ=m
-# CONFIG_VIDEO_HAWKEYE is not set
-
-#
-# Video for Linux 2 (V4L2)
-#
-CONFIG_VIDEO_WINNOV_CS=m
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_MIROPCM20 is not set
-# CONFIG_RADIO_MIROPCM20_RDS is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=m
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_UMSDOS_FS=m
-CONFIG_VFAT_FS=m
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_NAND is not set
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=m
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-# CONFIG_DRIVERFS_FS is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=m
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-CONFIG_SUNRPC=m
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-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_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
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_S3C2410 is not set
-CONFIG_FB_SA1100=y
-# CONFIG_FB_EPSON1356 is not set
-# CONFIG_FB_MQ200 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_MQ1100 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-CONFIG_FBCON_CFB4=y
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-# CONFIG_FBCON_NO_LOGO is not set
-CONFIG_FBCON_FONTWIDTH8_ONLY=y
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-CONFIG_SOUND_SA1100=m
-CONFIG_SOUND_UDA1341=m
-# CONFIG_SOUND_SA1100_MONO is not set
-# CONFIG_SOUND_ASSABET_UDA1341 is not set
-CONFIG_SOUND_H3600_UDA1341=m
-# CONFIG_SOUND_PANGOLIN_UDA1341 is not set
-# CONFIG_SOUND_SA1111_UDA1341 is not set
-# CONFIG_SOUND_SA1100SSP is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_VIDC is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-# CONFIG_SOUND_PXA_AC97 is not set
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# Console Switches
-#
-# CONFIG_SWITCHES is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-# CONFIG_USB_OHCI is not set
-# CONFIG_USB_OHCI_SA1111 is not set
-# CONFIG_USB_OHCI_H5400 is not set
-# CONFIG_USB_OHCI_S3C2410 is not set
-CONFIG_USB_SL811HS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_BLUETOOTH is not set
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=m
-
-#
-# USB Human Interface Devices (HID)
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_WACOM is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_OV511=m
-CONFIG_USB_PWC=m
-CONFIG_USB_SE401=m
-CONFIG_USB_STV680=m
-CONFIG_USB_VICAM=m
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DABUSB is not set
-
-#
-# USB Network adaptors
-#
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-CONFIG_USB_CDCETHER=m
-# CONFIG_USB_USBNET is not set
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_BRLVGER is not set
-
-#
-# Linux As Bootldr Modules
-#
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-# CONFIG_YMODEM is not set
-# CONFIG_LAB_DUMMY is not set
-# CONFIG_LAB_CRC is not set
-# CONFIG_LAB_YMODEM is not set
-# CONFIG_LAB_MTD is not set
-# CONFIG_LAB_COPY is not set
-# CONFIG_LAB_COPY_YMODEM is not set
-# CONFIG_LAB_COPY_FLASH is not set
-# CONFIG_LAB_COPY_FS is not set
-# CONFIG_LAB_COPY_WRAPPER is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BLUEZ_HCIUSB is not set
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-# CONFIG_BLUEZ_HCIUART_BCSP_TXCRC is not set
-# CONFIG_BLUEZ_HCIBFUSB is not set
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBT3C=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-# CONFIG_BLUEZ_HCIVHCI is not set
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
-
-#
-# Library routines
-#
-# CONFIG_CRC32 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.4/defconfig-h3600 b/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.4/defconfig-h3600
deleted file mode 100644
index 97aeac5392..0000000000
--- a/packages/linux/handhelds-sa-2.4.19-rmk6-pxa1-hh37.4/defconfig-h3600
+++ /dev/null
@@ -1,1464 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_OMAHA is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_RISCSTATION is not set
-CONFIG_ARCH_SA1100=y
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_AT91RM9200DK is not set
-# CONFIG_MINIMAL_OOPS is not set
-
-#
-# Linux As Bootldr support
-#
-# CONFIG_LAB is not set
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ACCELENT is not set
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-CONFIG_SA1100_H3100=y
-CONFIG_SA1100_H3600=y
-CONFIG_SA1100_H3800=y
-# CONFIG_SA1100_CONSUS is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_JORNADA56X is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SIMPUTER is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-CONFIG_SA1100_USB=m
-CONFIG_SA1100_USB_NETLINK=m
-CONFIG_SA1100_USB_CHAR=m
-CONFIG_REGISTERS=m
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-# CONFIG_ARCH_H3900 is not set
-# CONFIG_ARCH_H1900 is not set
-# CONFIG_ARCH_H5400 is not set
-# CONFIG_ARCH_H2200 is not set
-# CONFIG_ARCH_AXIM is not set
-# CONFIG_PXA_USB is not set
-# CONFIG_PXA_USB_NETLINK is not set
-# CONFIG_PXA_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_ARM1026 is not set
-# CONFIG_CPU_SA110 is not set
-CONFIG_CPU_SA1100=y
-# CONFIG_CPU_32v3 is not set
-CONFIG_CPU_32v4=y
-CONFIG_SA1100_IPAQ=y
-# CONFIG_PXA_IPAQ is not set
-CONFIG_IPAQ_HANDHELD=y
-
-#
-# Compaq iPAQ Handheld
-#
-CONFIG_IPAQ_HAL=m
-CONFIG_H3600_MICRO=m
-CONFIG_IPAQ_HAS_ROSELLA=y
-# CONFIG_IPAQ_HAS_ASIC3 is not set
-CONFIG_H3600_ASIC=m
-CONFIG_H3900_ASIC_DEBUG=y
-# CONFIG_H5400_ASIC is not set
-# CONFIG_H1900_ASIC is not set
-# CONFIG_H1900_TS is not set
-CONFIG_H3600_HARDWARE=y
-CONFIG_IPAQ_SLEEVE=m
-CONFIG_SLEEVE_DEBUG=y
-CONFIG_SLEEVE_DEBUG_VERBOSE=0
-# CONFIG_SLEEVE_IRQ_DEMUX is not set
-CONFIG_DISCONTIGMEM=y
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-CONFIG_ISA=y
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CPU_FREQ=y
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=m
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-CONFIG_PCMCIA_SA1100=m
-# CONFIG_PCMCIA_PXA is not set
-CONFIG_MERCURY_BACKPAQ=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=m
-CONFIG_MMC_DEBUG=y
-CONFIG_MMC_DEBUG_VERBOSE=0
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=m
-CONFIG_HWTIMER=m
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="keepinitrd"
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=1
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL 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=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_CFI_B1 is not set
-CONFIG_MTD_CFI_B2=y
-CONFIG_MTD_CFI_B4=y
-# CONFIG_MTD_CFI_B8 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_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_IPAQ=y
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_H720X is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_CEIVA is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-CONFIG_MTD_MTDRAM=m
-CONFIG_MTDRAM_TOTAL_SIZE=4096
-CONFIG_MTDRAM_ERASE_SIZE=128
-CONFIG_MTD_BLKMTD=m
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_NVRD=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-CONFIG_BLK_DEV_LVM=m
-CONFIG_BLK_DEV_DM=m
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-# CONFIG_NETLINK_DEV is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_TFTP is not set
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_MAC=m
-# CONFIG_IP_NF_MATCH_PKTTYPE is not set
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_DSCP is not set
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-# CONFIG_IP_NF_MATCH_HELPER is not set
-CONFIG_IP_NF_MATCH_STATE=m
-# CONFIG_IP_NF_MATCH_CONNTRACK is not set
-# CONFIG_IP_NF_MATCH_UNCLEAN is not set
-# CONFIG_IP_NF_MATCH_OWNER is not set
-CONFIG_IP_NF_FILTER=m
-# CONFIG_IP_NF_TARGET_REJECT is not set
-# CONFIG_IP_NF_TARGET_MIRROR is not set
-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_NAT_LOCAL is not set
-# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-# CONFIG_IP_NF_TARGET_ECN is not set
-# CONFIG_IP_NF_TARGET_DSCP is not set
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_ARPTABLES is not set
-CONFIG_IP_NF_COMPAT_IPCHAINS=m
-CONFIG_IP_NF_NAT_NEEDED=y
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MOBILITY=m
-CONFIG_IPV6_MOBILITY_MN=m
-# CONFIG_IPV6_MOBILITY_HA is not set
-CONFIG_IPV6_MOBILITY_DEBUG=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-# CONFIG_IP6_NF_MATCH_OWNER is not set
-CONFIG_IP6_NF_MATCH_MARK=m
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_AHESP is not set
-# CONFIG_IP6_NF_MATCH_LENGTH is not set
-# CONFIG_IP6_NF_MATCH_EUI64 is not set
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
-CONFIG_BRIDGE=m
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_IPSEC=m
-CONFIG_KLIPS_AUTH_HMAC_MD5=y
-CONFIG_KLIPS_AUTH_HMAC_SHA1=y
-CONFIG_KLIPS_ENC_3DES=y
-CONFIG_KLIPS_IPCOMP=y
-CONFIG_KLIPS_DEBUG=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_AIRO is not set
-# CONFIG_HERMES is not set
-# CONFIG_SPECTRUM24T is not set
-# CONFIG_PCMCIA_HERMES is not set
-CONFIG_AIRO_CS=m
-# CONFIG_WVLAN_CS is not set
-# CONFIG_MWVLAN_CS is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_HOSTAP_CS is not set
-CONFIG_NET_WIRELESS=y
-# CONFIG_ATMELWLAN is not set
-# CONFIG_ATMELWLAN_USB_503A_RFMD is not set
-# CONFIG_ATMELWLAN_PCMCIA_502A is not set
-# CONFIG_ATMELWLAN_PCMCIA_3COM is not set
-# CONFIG_ATMELWLAN_PCMCIA_502AD is not set
-# CONFIG_ATMELWLAN_PCMCIA_502AE is not set
-# CONFIG_ATMELWLAN_PCMCIA_504 is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_AXNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-CONFIG_NET_PCMCIA_RADIO=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_PCMCIA_NETWAVE=m
-CONFIG_PCMCIA_WAVELAN=m
-# CONFIG_AIRONET4500_CS is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=m
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-CONFIG_IRDA_ULTRA=y
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-CONFIG_IRDA_DEBUG=y
-
-#
-# Infrared-port device drivers
-#
-CONFIG_IRTTY_SIR=m
-CONFIG_IRPORT_SIR=m
-# CONFIG_DONGLE is not set
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-CONFIG_SA1100_FIR=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=m
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=m
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_IDEDISK_STROKE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEFLOPPY=m
-CONFIG_BLK_DEV_IDESCSI=m
-# CONFIG_IDE_TASK_IOCTL is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_SD_EXTRA_DEVS=40
-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_SR_EXTRA_DEVS=2
-CONFIG_CHR_DEV_SG=m
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# 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_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID 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_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO 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_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-CONFIG_SCSI_PCMCIA=y
-CONFIG_PCMCIA_AHA152X=m
-CONFIG_PCMCIA_FDOMAIN=m
-CONFIG_PCMCIA_NINJA_SCSI=m
-CONFIG_PCMCIA_QLOGIC=m
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-CONFIG_ISDN=m
-CONFIG_ISDN_BOOL=y
-CONFIG_ISDN_PPP=y
-CONFIG_ISDN_PPP_VJ=y
-CONFIG_ISDN_MPP=y
-CONFIG_ISDN_PPP_BSDCOMP=m
-CONFIG_ISDN_AUDIO=y
-CONFIG_ISDN_TTY_FAX=y
-
-#
-# ISDN feature submodules
-#
-CONFIG_ISDN_DRV_LOOP=m
-CONFIG_ISDN_DIVERSION=m
-
-#
-# Passive ISDN cards
-#
-CONFIG_ISDN_DRV_HISAX=m
-CONFIG_ISDN_HISAX=y
-CONFIG_HISAX_EURO=y
-# CONFIG_DE_AOC is not set
-# 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
-# CONFIG_HISAX_16_0 is not set
-CONFIG_HISAX_16_3=y
-# CONFIG_HISAX_TELESPCI is not set
-# CONFIG_HISAX_S0BOX is not set
-# CONFIG_HISAX_AVM_A1 is not set
-# CONFIG_HISAX_FRITZPCI is not set
-# CONFIG_HISAX_AVM_A1_PCMCIA is not set
-# CONFIG_HISAX_ELSA is not set
-# CONFIG_HISAX_IX1MICROR2 is not set
-# CONFIG_HISAX_DIEHLDIVA is not set
-# CONFIG_HISAX_ASUSCOM is not set
-# CONFIG_HISAX_TELEINT is not set
-# CONFIG_HISAX_HFCS is not set
-# CONFIG_HISAX_SEDLBAUER is not set
-# CONFIG_HISAX_SPORTSTER is not set
-# CONFIG_HISAX_MIC is not set
-# CONFIG_HISAX_NETJET is not set
-# CONFIG_HISAX_NETJET_U is not set
-# CONFIG_HISAX_NICCY is not set
-# CONFIG_HISAX_ISURF is not set
-# CONFIG_HISAX_HSTSAPHIR is not set
-# CONFIG_HISAX_BKM_A4T is not set
-# CONFIG_HISAX_SCT_QUADRO is not set
-# CONFIG_HISAX_GAZEL is not set
-# CONFIG_HISAX_HFC_PCI is not set
-# CONFIG_HISAX_W6692 is not set
-CONFIG_HISAX_HFC_SX=y
-# CONFIG_HISAX_DEBUG is not set
-CONFIG_HISAX_SEDLBAUER_CS=m
-CONFIG_HISAX_ELSA_CS=m
-# CONFIG_HISAX_AVM_A1_CS is not set
-CONFIG_HISAX_ST5481=m
-# CONFIG_HISAX_FRITZ_PCIPNP is not set
-
-#
-# Active ISDN cards
-#
-# CONFIG_ISDN_DRV_ICN is not set
-# CONFIG_ISDN_DRV_PCBIT is not set
-# CONFIG_ISDN_DRV_SC is not set
-# CONFIG_ISDN_DRV_ACT2000 is not set
-# CONFIG_ISDN_DRV_EICON is not set
-# CONFIG_ISDN_DRV_TPAM is not set
-CONFIG_ISDN_CAPI=m
-# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set
-# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
-CONFIG_ISDN_CAPI_CAPI20=m
-CONFIG_ISDN_CAPI_CAPIDRV=m
-# CONFIG_ISDN_DRV_AVMB1_B1ISA is not set
-# CONFIG_ISDN_DRV_AVMB1_B1PCI is not set
-# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set
-# CONFIG_ISDN_DRV_AVMB1_T1ISA is not set
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-# CONFIG_ISDN_DRV_AVMB1_AVM_CS is not set
-# CONFIG_ISDN_DRV_AVMB1_T1PCI is not set
-# CONFIG_ISDN_DRV_AVMB1_C4 is not set
-# CONFIG_HYSDN is not set
-# CONFIG_HYSDN_CAPI is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=m
-CONFIG_INPUT_KEYBDEV=m
-CONFIG_INPUT_MOUSEDEV=m
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=m
-CONFIG_INPUT_UINPUT=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=m
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_S3C2410 is not set
-# CONFIG_SERIAL_S3C2410_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SA1100_DEFAULT_BAUDRATE=115200
-CONFIG_SERIAL_H3800_ASIC=m
-# CONFIG_SERIAL_SIR_PXA is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
-CONFIG_NEWTONKBD=m
-CONFIG_SA1100_PROFILER=m
-CONFIG_TOUCHSCREEN_H3600=m
-CONFIG_H3600_BACKPAQ_FPGA=m
-CONFIG_H3600_BACKPAQ_ACCEL=m
-CONFIG_H3600_BACKPAQ_GASGAUGE=m
-CONFIG_H3600_BACKPAQ_SRAM=m
-CONFIG_H3600_BACKPAQ_AUDIO=m
-CONFIG_H3600_STOWAWAY=m
-CONFIG_H3800_MICROKBD=m
-CONFIG_SA1100_LIRC=m
-# CONFIG_H5400_BUZZER is not set
-# CONFIG_H5400_FSI is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# L3 serial bus support
-#
-CONFIG_L3=y
-CONFIG_L3_ALGOBIT=y
-CONFIG_L3_BIT_SA1100_GPIO=y
-# CONFIG_L3_S3C2410 is not set
-# CONFIG_L3_SA1111 is not set
-CONFIG_L3_BACKPAQ=m
-CONFIG_BIT_SA1100_GPIO=y
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=m
-# CONFIG_PSMOUSE is not set
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_MK712_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-CONFIG_INPUT_SERIO=m
-CONFIG_INPUT_SERPORT=m
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_PCWATCHDOG is not set
-# CONFIG_21285_WATCHDOG is not set
-# CONFIG_977_WATCHDOG is not set
-CONFIG_SA1100_WATCHDOG=m
-# CONFIG_PXA_WATCHDOG is not set
-# CONFIG_OMAHA_WATCHDOG is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_WAFER_WDT is not set
-# CONFIG_I810_TCO is not set
-# CONFIG_MIXCOMWD is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_W83877F_WDT is not set
-# CONFIG_WDT is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_SA1100_RTC=m
-# CONFIG_PXA_RTC_HACK 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_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=m
-CONFIG_PCMCIA_MOBILISCAN_CS=m
-# CONFIG_AXIM_KEY_FIX is not set
-
-#
-# Multimedia devices
-#
-CONFIG_MEDIA=m
-CONFIG_VIDEO_DEV=m
-CONFIG_V4L2_DEV=m
-
-#
-# Video For Linux
-#
-CONFIG_VIDEO_PROC_FS=y
-# CONFIG_I2C_PARPORT is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_ZORAN_BUZ is not set
-# CONFIG_VIDEO_ZORAN_DC10 is not set
-# CONFIG_VIDEO_ZORAN_LML33 is not set
-# CONFIG_VIDEO_ZR36120 is not set
-# CONFIG_VIDEO_MEYE is not set
-# CONFIG_VIDEO_CYBERPRO is not set
-CONFIG_VIDEO_H3600_BACKPAQ=m
-# CONFIG_VIDEO_HAWKEYE is not set
-CONFIG_VIDEO_WINNOV_CS=m
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_MIROPCM20 is not set
-# CONFIG_RADIO_MIROPCM20_RDS is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=m
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_UMSDOS_FS=m
-CONFIG_VFAT_FS=m
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_NAND is not set
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-# CONFIG_DRIVERFS_FS is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=m
-# CONFIG_SYSV_FS is not set
-CONFIG_UDF_FS=m
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-CONFIG_CODA_FS=m
-CONFIG_INTERMEZZO_FS=m
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-CONFIG_SUNRPC=m
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-CONFIG_ZISOFS_FS=m
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-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_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
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_S3C2410 is not set
-CONFIG_FB_SA1100=y
-# CONFIG_FB_EPSON1356 is not set
-# CONFIG_FB_MQ200 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_MQ1100 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-CONFIG_FBCON_CFB4=y
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-# CONFIG_FBCON_NO_LOGO is not set
-CONFIG_FBCON_FONTWIDTH8_ONLY=y
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-CONFIG_SOUND_SA1100=m
-CONFIG_SOUND_UDA1341=m
-# CONFIG_SOUND_SA1100_MONO is not set
-# CONFIG_SOUND_ASSABET_UDA1341 is not set
-CONFIG_SOUND_H3600_UDA1341=m
-# CONFIG_SOUND_PANGOLIN_UDA1341 is not set
-# CONFIG_SOUND_SA1111_UDA1341 is not set
-# CONFIG_SOUND_SA1100SSP is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_VIDC is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-# CONFIG_SOUND_PXA_AC97 is not set
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# Console Switches
-#
-CONFIG_SWITCHES=m
-CONFIG_SWITCHES_SA1100=y
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_BANDWIDTH=y
-# CONFIG_USB_LONG_TIMEOUT is not set
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-# CONFIG_USB_OHCI is not set
-# CONFIG_USB_OHCI_SA1111 is not set
-# CONFIG_USB_OHCI_H5400 is not set
-CONFIG_USB_SL811HS=m
-CONFIG_USB_SL811HS_CS=m
-CONFIG_USB_AUDIO=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_BLUETOOTH=m
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_DPCM=y
-CONFIG_USB_STORAGE_HP8200e=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-CONFIG_USB_HIDDEV=y
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_WACOM=m
-CONFIG_USB_DC2XX=m
-CONFIG_USB_MDC800=m
-CONFIG_USB_SCANNER=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USB_HPUSBSCSI=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_OV511=m
-CONFIG_USB_PWC=m
-CONFIG_USB_QC=m
-CONFIG_USB_SE401=m
-CONFIG_USB_STV680=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_DSBR=m
-CONFIG_USB_DABUSB=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_CATC=m
-CONFIG_USB_CDCETHER=m
-CONFIG_USB_USBNET=m
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-# CONFIG_USB_SERIAL_GENERIC is not set
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_BRLVGER=m
-
-#
-# Linux As Bootldr Modules
-#
-# CONFIG_BIG_KERNEL is not set
-# CONFIG_USE_DATE_CODE is not set
-# CONFIG_YMODEM is not set
-# CONFIG_LAB_DUMMY is not set
-# CONFIG_LAB_CRC is not set
-# CONFIG_LAB_YMODEM is not set
-# CONFIG_LAB_MTD is not set
-# CONFIG_LAB_COPY is not set
-# CONFIG_LAB_COPY_YMODEM is not set
-# CONFIG_LAB_COPY_FLASH is not set
-# CONFIG_LAB_COPY_FS is not set
-# CONFIG_LAB_COPY_WRAPPER is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-# CONFIG_BLUEZ_CMTP is not set
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BLUEZ_HCIUSB is not set
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-# CONFIG_BLUEZ_HCIUART_BCSP_TXCRC is not set
-# CONFIG_BLUEZ_HCIBFUSB is not set
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBT3C=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-CONFIG_BLUEZ_HCIVHCI=m
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
-
-#
-# Library routines
-#
-CONFIG_CRC32=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/handhelds-sa_2.4.19-rmk6-pxa1-hh36.12.bb b/packages/linux/handhelds-sa_2.4.19-rmk6-pxa1-hh36.12.bb
deleted file mode 100644
index 269f09022b..0000000000
--- a/packages/linux/handhelds-sa_2.4.19-rmk6-pxa1-hh36.12.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "handhelds.org Linux kernel for StrongArm processor based devices."
-LICENSE = "GPL"
-PR = "r3"
-
-KERNEL_CCSUFFIX = "-3.3.4"
-COMPATIBLE_HOST = "arm.*-linux"
-COMPATIBLE_MACHINE = '(h3600|simpad)'
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/handhelds-sa-${PV}"
-SRC_URI = "${HANDHELDS_CVS};module=linux/kernel;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
- file://defconfig-ipaqsa \
- file://ipaq-hal.init \
- file://ipsec.patch;patch=1"
-
-S = "${WORKDIR}/kernel"
-
-inherit kernel
-
-PACKAGE_ARCH = "ipaqsa"
-
-K_MAJOR = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[0]}"
-K_MINOR = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[1]}"
-K_MICRO = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[2]}"
-RMKV = "${@bb.data.getVar('PV',d,1).split('-')[1].split('rmk')[-1]}"
-PXAV = "${@bb.data.getVar('PV',d,1).split('-')[2].split('pxa')[-1]}"
-HHV = "${@bb.data.getVar('PV',d,1).split('-')[3].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 + int(bb.data.getVar('RMKV',d,1)) * 1000 + int(bb.data.getVar('PXAV',d,1)) * 100 + float(bb.data.getVar('HHV',d,1)))}"
-
-module_conf_h3600_micro = "alias ipaq_hal_3600 h3600_micro"
-module_conf_h3600_asic = "alias ipaq_hal_3800 h3600_asic"
-module_conf_pxa_ir = "alias irda0 sa_ir"
-module_conf_i2c_algo_pxa = "options i2c-algo-sa sa_scan=0"
-module_conf_pcmcia_core = "options pcmcia_core ignore_cis_vcc=1"
-module_conf_ppp_async = "alias ppp0 ppp_async"
-module_conf_orinoco_cs = "options orinoco_cs ignore_cis_vcc=1"
-module_conf_hostap_cs = "options hostap_cs ignore_cis_vcc=1"
-module_conf_spectrum_cs = "options spectrum_cs ignore_cis_vcc=1"
-
-module_autoload_h3600_generic_sleeve = "h3600_generic_sleeve"
-module_autoload_ds = "ds"
-module_autoload_sa1100_cs = "sa1100_cs"
-module_autoload_h3600_ts = "h3600_ts"
-module_autoload_apm = "apm"
-
-FILES_kernel += "/etc/init.d/ipaq-hal"
-INITSCRIPT_NAME = "ipaq-hal"
-INITSCRIPT_PARAMS = "start 21 S ."
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/defconfig-${PACKAGE_ARCH} ${S}/.config
-}
-
-do_install_append() {
- install -d ${D}${sysconfdir}/init.d
- install ${WORKDIR}/ipaq-hal.init ${D}${sysconfdir}/init.d/ipaq-hal
-}
diff --git a/packages/linux/handhelds-sa_2.4.19-rmk6-pxa1-hh37.1.bb b/packages/linux/handhelds-sa_2.4.19-rmk6-pxa1-hh37.1.bb
deleted file mode 100644
index 92937d97ce..0000000000
--- a/packages/linux/handhelds-sa_2.4.19-rmk6-pxa1-hh37.1.bb
+++ /dev/null
@@ -1,57 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "handhelds.org Linux kernel for StrongArm processor based devices."
-LICENSE = "GPL"
-PR = "r3"
-
-KERNEL_CCSUFFIX = "-3.3.4"
-COMPATIBLE_HOST = "arm.*-linux"
-COMPATIBLE_MACHINE = '(h3600|simpad)'
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/handhelds-sa-${PV}"
-SRC_URI = "${HANDHELDS_CVS};module=linux/kernel;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
- file://defconfig-ipaqsa \
- file://ipaq-hal.init"
-
-S = "${WORKDIR}/kernel"
-
-inherit kernel update-rc.d
-
-PACKAGE_ARCH = "ipaqsa"
-
-K_MAJOR = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[0]}"
-K_MINOR = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[1]}"
-K_MICRO = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[2]}"
-RMKV = "${@bb.data.getVar('PV',d,1).split('-')[1].split('rmk')[-1]}"
-PXAV = "${@bb.data.getVar('PV',d,1).split('-')[2].split('pxa')[-1]}"
-HHV = "${@bb.data.getVar('PV',d,1).split('-')[3].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 + int(bb.data.getVar('RMKV',d,1)) * 1000 + int(bb.data.getVar('PXAV',d,1)) * 100 + float(bb.data.getVar('HHV',d,1)))}"
-
-module_conf_h3600_micro = "alias ipaq_hal_3600 h3600_micro"
-module_conf_h3600_asic = "alias ipaq_hal_3800 h3600_asic"
-module_conf_sa1100_ir = "alias irda0 sa1100_ir"
-module_conf_pcmcia_core = "options pcmcia_core ignore_cis_vcc=1"
-module_conf_ppp_async = "alias ppp0 ppp_async"
-module_conf_orinoco_cs = "options orinoco_cs ignore_cis_vcc=1"
-module_conf_hostap_cs = "options hostap_cs ignore_cis_vcc=1"
-module_conf_spectrum_cs = "options spectrum_cs ignore_cis_vcc=1"
-
-module_autoload_h3600_ts = "h3600_ts"
-module_autoload_apm = "apm"
-module_autoload_h3600-uda1341 = "h3600-uda1341"
-module_autoload_af_packet = "af_packet"
-module_autoload_ppp_async = "ppp_async"
-module_autoload_usb-eth = "usb-eth"
-
-FILES_kernel += "/etc/init.d/ipaq-hal"
-INITSCRIPT_NAME = "ipaq-hal"
-INITSCRIPT_PARAMS = "start 21 S ."
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/defconfig-${PACKAGE_ARCH} ${S}/.config
-}
-
-do_install_append() {
- install -d ${D}${sysconfdir}/init.d
- install ${WORKDIR}/ipaq-hal.init ${D}${sysconfdir}/init.d/ipaq-hal
-}
diff --git a/packages/linux/handhelds-sa_2.4.19-rmk6-pxa1-hh37.4.bb b/packages/linux/handhelds-sa_2.4.19-rmk6-pxa1-hh37.4.bb
deleted file mode 100644
index 8da6da5a23..0000000000
--- a/packages/linux/handhelds-sa_2.4.19-rmk6-pxa1-hh37.4.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "handhelds.org Linux kernel for StrongArm processor based devices."
-LICENSE = "GPL"
-PR = "r6"
-
-KERNEL_CCSUFFIX = "-3.3.4"
-COMPATIBLE_HOST = "arm.*-linux"
-COMPATIBLE_MACHINE = '(h3600|simpad)'
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/handhelds-sa-${PV}"
-SRC_URI = "${HANDHELDS_CVS};module=linux/kernel;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
- file://defconfig-${PACKAGE_ARCH} \
- file://ipaq-hal.init"
-
-S = "${WORKDIR}/kernel"
-
-inherit kernel update-rc.d
-
-K_MAJOR = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[0]}"
-K_MINOR = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[1]}"
-K_MICRO = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[2]}"
-RMKV = "${@bb.data.getVar('PV',d,1).split('-')[1].split('rmk')[-1]}"
-PXAV = "${@bb.data.getVar('PV',d,1).split('-')[2].split('pxa')[-1]}"
-HHV = "${@bb.data.getVar('PV',d,1).split('-')[3].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 + int(bb.data.getVar('RMKV',d,1)) * 1000 + int(bb.data.getVar('PXAV',d,1)) * 100 + float(bb.data.getVar('HHV',d,1)))}"
-
-module_conf_h3600_micro = "alias ipaq_hal_3600 h3600_micro"
-module_conf_h3600_asic = "alias ipaq_hal_3800 h3600_asic"
-module_conf_sa1100_ir = "alias irda0 sa1100_ir"
-module_conf_pcmcia_core = "options pcmcia_core ignore_cis_vcc=1"
-module_conf_ppp_async = "alias ppp0 ppp_async"
-module_conf_orinoco_cs = "options orinoco_cs ignore_cis_vcc=1"
-module_conf_hostap_cs = "options hostap_cs ignore_cis_vcc=1"
-module_conf_spectrum_cs = "options spectrum_cs ignore_cis_vcc=1"
-
-module_autoload_h3600_ts = "h3600_ts"
-module_autoload_apm = "apm"
-module_autoload_h3600-uda1341 = "h3600-uda1341"
-module_autoload_af_packet = "af_packet"
-module_autoload_ppp_async = "ppp_async"
-module_autoload_usb-eth = "usb-eth"
-
-FILES_kernel += "/etc/init.d/ipaq-hal"
-INITSCRIPT_NAME = "ipaq-hal"
-INITSCRIPT_PARAMS = "start 21 S ."
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/defconfig-${PACKAGE_ARCH} ${S}/.config
-}
-
-do_install_append() {
- install -d ${D}${sysconfdir}/init.d
- install ${WORKDIR}/ipaq-hal.init ${D}${sysconfdir}/init.d/ipaq-hal
-}
diff --git a/packages/linux/ixp4xx-kernel-svnpatch.inc b/packages/linux/ixp4xx-kernel-svnpatch.inc
index 992310b5a8..16ce3c48f6 100644
--- a/packages/linux/ixp4xx-kernel-svnpatch.inc
+++ b/packages/linux/ixp4xx-kernel-svnpatch.inc
@@ -4,8 +4,13 @@ IXP4XX_KERNEL_SVN_REPO ?= "http://svn.nslu2-linux.org/svnroot/kernel/trunk"
do_svnpatch() {
svn co ${IXP4XX_KERNEL_SVN_REPO}/patches/${IXP4XX_KERNEL_PATCH_DIR} --revision ${IXP4XX_KERNEL_SVN_REV} ${WORKDIR}/patches-${PV}
- cp ${WORKDIR}/patches-${PV}/defconfig ${WORKDIR}/defconfig
+ if [ ! -f ${WORKDIR}/defconfig ] ; then \
+ cp ${WORKDIR}/patches-${PV}/defconfig ${WORKDIR}/defconfig ; \
+ fi
rm -rf ${S}/patches
cd ${S} && ln -s ${WORKDIR}/patches-${PV} ${S}/patches
+ if [ -f ${WORKDIR}/series ] ; then \
+ cp ${WORKDIR}/series ${WORKDIR}/patches-${PV}/series ; \
+ fi
cd ${S} && rm -rf .pc && ${STAGING_BINDIR_NATIVE}/quilt push -av
}
diff --git a/packages/linux/ixp4xx-kernel.inc b/packages/linux/ixp4xx-kernel.inc
index 2e49e912f5..1c9d004d0f 100644
--- a/packages/linux/ixp4xx-kernel.inc
+++ b/packages/linux/ixp4xx-kernel.inc
@@ -26,6 +26,8 @@ SECTION = "kernel"
DESCRIPTION = "Linux kernel for the Intel IXP4xx device"
LICENSE = "GPL"
+DEPENDS = "arm-kernel-shim devio-native"
+
# Linux kernel source has the general form linux-X.Y.Z-patchP,
# X.Y is the major version number, Z (which may have multiple
# parts) is a sub-version and 'patch' is something like 'mm' or
@@ -72,6 +74,9 @@ python () {
# pre patches actually require the *preceding* kernel version the code
# fixes that up appropriately.
pv = bb.data.getVar("PV",d,1).split('-')
+ if pv[0].count('+'):
+ prev = pv[0].split('+')
+ pv[0] = prev[1];
kernel = pv[0].split('.')
base = pv[0]
name = [base]
@@ -146,7 +151,7 @@ SRC_URI = "${IXP4XX_SRCURI}"
SRC_URI += "${IXP4XX_PATCHES}"
COMPATIBLE_HOST = 'arm.*-linux.*'
-COMPATIBLE_MACHINE = '(ixp4xx|loft|nslu2|nas100d|dsmg600|fsg3)'
+COMPATIBLE_MACHINE = '(ixp4xx|nslu2)'
inherit kernel
@@ -177,16 +182,13 @@ EXTRA_OEMAKE += "EXTRAVERSION="
EXTRA_OEMAKE += "LOCALVERSION="
EXTRA_OEMAKE += "MAKEFLAGS='--no-print-directory'"
-# Override KERNEL_RELEASE from kernel.bbclass to match:
-KERNEL_RELEASE = "${KERNEL_VERSION}"
-
# Set the correct CONFIG_CPU_xxx_ENDIAN and CONFIG_CMDLINE at the head
# of the .config file and remove any settings in defconfig then append
# defconfig to .config
do_configure_prepend() {
rm -f ${S}/.config
echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >>'${S}/.config'
- if test '${ARCH_BYTE_SEX}' = be
+ if test '${SITEINFO_ENDIANESS}' = be
then
echo 'CONFIG_CPU_BIG_ENDIAN=y' >>'${S}/.config'
fi
@@ -209,6 +211,12 @@ do_configure_prepend() {
}
+
+# Kernel module dependencies
+
+RDEPENDS_kernel-module-zd1211rw += "zd1211-firmware"
+
+
# MACHID and LE handling
#
# This mach_fixup function adds the required prefix to the image to
@@ -238,7 +246,7 @@ do_configure_prepend() {
# The generic package only includes the generic image, the other
# packages are made below (they are kernel-image packages but
# with a different ARCH).
-FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}-${IXP4XX_SUFFIX}-${KERNEL_RELEASE}"
+FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}-${MACHINE_ARCH}-${KERNEL_VERSION}"
# MACHINE DEFINITIONS: one block for each machine
@@ -246,78 +254,60 @@ FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}-${IXP4XX_SUFFIX}-${KERNEL_RELEAS
nslu2_MACHID = "597"
PACKAGES += "kernel-image-nslu2"
PKG_kernel-image-nslu2 = "kernel-image-${KERNEL_VERSION}"
-PACKAGE_ARCH_kernel-image-nslu2 = "nslu2${ARCH_BYTE_SEX}"
+PACKAGE_ARCH_kernel-image-nslu2 = "nslu2${SITEINFO_ENDIANESS}"
DESCRIPTION_kernel-image-nslu2 = "Linux kernel for the LinkSys NSLU2"
-FILES_kernel-image-nslu2 = "/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-nslu2${ARCH_BYTE_SEX}-${KERNEL_RELEASE}"
+FILES_kernel-image-nslu2 = "/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-nslu2${SITEINFO_ENDIANESS}-${KERNEL_VERSION}"
pkg_postinst_kernel-image-nslu2 () {
- update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-nslu2${ARCH_BYTE_SEX}-${KERNEL_RELEASE} ${KERNEL_PRIORITY} || true
+ update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-nslu2${SITEINFO_ENDIANESS}-${KERNEL_VERSION} ${KERNEL_PRIORITY} || true
}
pkg_postrm_kernel-image-nslu2 () {
- update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-nslu2${ARCH_BYTE_SEX}-${KERNEL_RELEASE} || true
-}
-
-# The correct settings for Loft:
-loft_MACHID = "849"
-PACKAGES += "kernel-image-loft"
-PKG_kernel-image-loft = "kernel-image-${KERNEL_VERSION}"
-PACKAGE_ARCH_kernel-image-loft = "loft${ARCH_BYTE_SEX}"
-DESCRIPTION_kernel-image-loft = "Linux kernel for the Giant Shoulder Inc. Loft board"
-FILES_kernel-image-loft = "/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-loft${ARCH_BYTE_SEX}-${KERNEL_RELEASE}"
-pkg_postinst_kernel-image-loft () {
- update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-loft${ARCH_BYTE_SEX}-${KERNEL_RELEASE} ${KERNEL_PRIORITY} || true
-}
-pkg_postrm_kernel-image-loft () {
- update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-loft${ARCH_BYTE_SEX}-${KERNEL_RELEASE} || true
+ update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-nslu2${SITEINFO_ENDIANESS}-${KERNEL_VERSION} || true
}
# The correct settings for the NAS100D board:
nas100d_MACHID = "865"
PACKAGES += "kernel-image-nas100d"
PKG_kernel-image-nas100d = "kernel-image-${KERNEL_VERSION}"
-PACKAGE_ARCH_kernel-image-nas100d = "nas100d${ARCH_BYTE_SEX}"
+PACKAGE_ARCH_kernel-image-nas100d = "nas100d${SITEINFO_ENDIANESS}"
DESCRIPTION_kernel-image-nas100d = "Linux kernel for the IOMega NAS100D"
-FILES_kernel-image-nas100d = "/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-nas100d${ARCH_BYTE_SEX}-${KERNEL_RELEASE}"
+FILES_kernel-image-nas100d = "/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-nas100d${SITEINFO_ENDIANESS}-${KERNEL_VERSION}"
pkg_postinst_kernel-image-nas100d () {
- update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-nas100d${ARCH_BYTE_SEX}-${KERNEL_RELEASE} ${KERNEL_PRIORITY} || true
+ update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-nas100d${SITEINFO_ENDIANESS}-${KERNEL_VERSION} ${KERNEL_PRIORITY} || true
}
pkg_postrm_kernel-image-nas100d () {
- update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-nas100d${ARCH_BYTE_SEX}-${KERNEL_RELEASE} || true
+ update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-nas100d${SITEINFO_ENDIANESS}-${KERNEL_VERSION} || true
}
# The correct settings for the DSMG600 board:
dsmg600_MACHID = "964"
PACKAGES += "kernel-image-dsmg600"
PKG_kernel-image-dsmg600 = "kernel-image-${KERNEL_VERSION}"
-PACKAGE_ARCH_kernel-image-dsmg600 = "dsmg600${ARCH_BYTE_SEX}"
+PACKAGE_ARCH_kernel-image-dsmg600 = "dsmg600${SITEINFO_ENDIANESS}"
DESCRIPTION_kernel-image-dsmg600 = "Linux kernel for the D-Link DSM-G600"
-FILES_kernel-image-dsmg600 = "/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-dsmg600${ARCH_BYTE_SEX}-${KERNEL_RELEASE}"
+FILES_kernel-image-dsmg600 = "/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-dsmg600${SITEINFO_ENDIANESS}-${KERNEL_VERSION}"
pkg_postinst_kernel-image-dsmg600 () {
- update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-dsmg600${ARCH_BYTE_SEX}-${KERNEL_RELEASE} ${KERNEL_PRIORITY} || true
+ update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-dsmg600${SITEINFO_ENDIANESS}-${KERNEL_VERSION} ${KERNEL_PRIORITY} || true
}
pkg_postrm_kernel-image-dsmg600 () {
- update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-dsmg600${ARCH_BYTE_SEX}-${KERNEL_RELEASE} || true
+ update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-dsmg600${SITEINFO_ENDIANESS}-${KERNEL_VERSION} || true
}
# The correct settings for the FSG-3 board:
fsg3_MACHID = "1091"
PACKAGES += "kernel-image-fsg3"
PKG_kernel-image-fsg3 = "kernel-image-${KERNEL_VERSION}"
-PACKAGE_ARCH_kernel-image-fsg3 = "fsg3${ARCH_BYTE_SEX}"
+PACKAGE_ARCH_kernel-image-fsg3 = "fsg3${SITEINFO_ENDIANESS}"
DESCRIPTION_kernel-image-fsg3 = "Linux kernel for the Freecom FSG-3"
-FILES_kernel-image-fsg3 = "/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-fsg3${ARCH_BYTE_SEX}-${KERNEL_RELEASE}"
+FILES_kernel-image-fsg3 = "/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-fsg3${SITEINFO_ENDIANESS}-${KERNEL_VERSION}"
pkg_postinst_kernel-image-fsg3 () {
- update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-fsg3${ARCH_BYTE_SEX}-${KERNEL_RELEASE} ${KERNEL_PRIORITY} || true
+ update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-fsg3${SITEINFO_ENDIANESS}-${KERNEL_VERSION} ${KERNEL_PRIORITY} || true
}
pkg_postrm_kernel-image-fsg3 () {
- update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-fsg3${ARCH_BYTE_SEX}-${KERNEL_RELEASE} || true
+ update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-fsg3${SITEINFO_ENDIANESS}-${KERNEL_VERSION} || true
}
-#FIXUP: the correct instructions to copy the kernel prepended with the le fixup
-#FIXME: do a fixup for BE too...
-FIXUP_armeb = "cp$"
-FIXUP_arm = "wb 0xee110f10,4;wb 0xe3c00080,4;wb 0xee010f10,4;xp $,4"
-
-DEPENDS += "devio-native"
+BYTESWAP_armeb = "cp$"
+BYTESWAP_arm = "xp $,4"
# We need the alternatives to happen in the kernel-image packages, not in
# the kernel package, because only the images know the name of the kernel.
@@ -326,41 +316,41 @@ pkg_postinst_kernel () {
pkg_postrm_kernel () {
}
-# copy_image <dest> <cmdline> <machine-id>
+# copy_image <dest> <machine>
# copy the zImage and append the appropriate shim
# dest: where to copy to
-# cmdline: command line to pass to image
-# machine-id: decimal machine id to prepend, empty for none
+# machine: machine shim to prepend, empty for none
copy_image() {
- local setmach
+ local shim
- setmach=""
- test -n "$2" && setmach="wb $2 . 256/ 255& 0xe3a01c00+, 4; wb 255& 0xe3811000+, 4;"
+ shim="/dev/null"
+ test -n "$2" && shim="${STAGING_LOADER_DIR}/arm-kernel-shim-$2.bin"
- rm -f "$1".new
- devio '<<${KERNEL_OUTPUT}' >"$1".new "$setmach"'${FIXUP}' || {
+ rm -f "$1".new "$1".shimmed
+ cat $shim ${KERNEL_OUTPUT} > "$1".shimmed
+ devio '<<'"$1"'.shimmed' >"$1".new '${BYTESWAP}' || {
echo 'ERROR: ${KERNEL_OUTPUT}: failed to copy zImage' >&2
return 1
}
+ rm -f "$1".shimmed
mv "$1".new "$1"
}
install_image() {
- copy_image '${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-'"$1"'-${KERNEL_RELEASE}' "$2"
+ copy_image '${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-'"$1"'-${KERNEL_VERSION}' "$2"
}
do_install_append() {
# Overwrite the unshimmed generic image with a shimmed one (but without
# any command line or machine id override).
- rm -f '${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_RELEASE}'
- install_image '${IXP4XX_SUFFIX}'
+ rm -f '${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}'
+ install_image '${MACHINE_ARCH}'
# Add the machine specific images, with appropriate suffixes
- install_image 'nslu2${ARCH_BYTE_SEX}' '${nslu2_MACHID}'
- install_image 'loft${ARCH_BYTE_SEX}' '${loft_MACHID}'
- install_image 'nas100d${ARCH_BYTE_SEX}' '${nas100d_MACHID}'
- install_image 'dsmg600${ARCH_BYTE_SEX}' '${dsmg600_MACHID}'
- install_image 'fsg3${ARCH_BYTE_SEX}' '${fsg3_MACHID}'
+ install_image 'nslu2${SITEINFO_ENDIANESS}' 'nslu2'
+ install_image 'nas100d${SITEINFO_ENDIANESS}' 'nas100d'
+ install_image 'dsmg600${SITEINFO_ENDIANESS}' 'dsmg600'
+ install_image 'fsg3${SITEINFO_ENDIANESS}' 'fsg3'
}
do_deploy[dirs] = "${S}"
@@ -371,25 +361,13 @@ deploy_image() {
do_deploy() {
install -d ${DEPLOY_DIR_IMAGE}
- deploy_image '${IXP4XX_SUFFIX}'
+ deploy_image '${MACHINE_ARCH}'
# And the machine specific images
- deploy_image 'nslu2${ARCH_BYTE_SEX}' '${nslu2_MACHID}'
- deploy_image 'loft${ARCH_BYTE_SEX}' '${loft_MACHID}'
- deploy_image 'nas100d${ARCH_BYTE_SEX}' '${nas100d_MACHID}'
- deploy_image 'dsmg600${ARCH_BYTE_SEX}' '${dsmg600_MACHID}'
- deploy_image 'fsg3${ARCH_BYTE_SEX}' '${fsg3_MACHID}'
+ deploy_image 'nslu2${SITEINFO_ENDIANESS}' 'nslu2'
+ deploy_image 'nas100d${SITEINFO_ENDIANESS}' 'nas100d'
+ deploy_image 'dsmg600${SITEINFO_ENDIANESS}' 'dsmg600'
+ deploy_image 'fsg3${SITEINFO_ENDIANESS}' 'fsg3'
}
-addtask deploy before do_build after do_compile
-
-python () {
- # check for IXP4XX_SUFFIX - if not set then we don't know what to build,
- # also sanity check the SLUGOS_IMAGESEX
- sex = bb.data.getVar("SLUGOS_IMAGESEX", d, 1)
- if sex != 'little-endian' and sex != 'big-endian':
- raise bb.parse.SkipPackage("slugos kernels require SLUGOS_IMAGESEX")
- suffix = bb.data.getVar("IXP4XX_SUFFIX", d, 1)
- if suffix == '':
- raise bb.parse.SkipPackage("slugos kernels require IXP4XX_SUFFIX")
-}
+addtask deploy before do_package after do_install
diff --git a/packages/linux/ixp4xx-kernel/2.6.19/.mtn2git_empty b/packages/linux/ixp4xx-kernel/2.6.19/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.19/.mtn2git_empty
diff --git a/packages/linux/ixp4xx-kernel/2.6.19/defconfig b/packages/linux/ixp4xx-kernel/2.6.19/defconfig
new file mode 100644
index 0000000000..58d6a39c8d
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.19/defconfig
@@ -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/ixp4xx-kernel/2.6.19/series b/packages/linux/ixp4xx-kernel/2.6.19/series
new file mode 100644
index 0000000000..e7ef3083dd
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.19/series
@@ -0,0 +1,47 @@
+# Patches numbered 00 are externally maintained (large) patchsets
+# Patches numbered 01 to 10 are for immediate push upstream, and
+# must be all able to be applied independently in any order.
+# Patches marked with ## need reworking and are currently disabled
+
+squashfs/squashfs.patch
+squashfs/squashfs-ramdisk.patch
+squashfs/squashfs-force-O2.patch
+squashfs/squashfs-lzma.patch
+squashfs/squashfs-Kconfig.patch
+squashfs/squashfs-Makefile.patch
+00-linux-2.6.19.2.patch
+01-nslu2-led-swap.patch
+05-mtdpart-redboot-partition-truncate.patch
+07-remove-avila-ixdp425-setup.patch
+08-avila-loft-setup.patch
+10-bridging-fix.patch
+11-mtdpart-redboot-config-byteswap.patch
+30-ixp4xx-npe-driver-0.3.1.patch
+37-ixp4xx-net-driver-improve-mac-handling-0.3.1.patch
+39-ixp4xx-net-driver-mtd-load-fw-0.3.1.patch
+40-avila-setup-mac.patch
+41-nslu2-setup-mac.patch
+42-nas100d-setup-mac.patch
+43-nslu2-mtd-microcode.patch
+44-nas100d-mtd-microcode.patch
+45-eeprom-new-notifier.patch
+50-leds-arm-cpu-activity.patch
+52-nas100d-mtd-load-mac.patch
+53-nslu2-mtd-load-mac.patch
+55-increase-entropy-pools.patch
+60-nas100d-artop-temp-fix.patch
+66-hwmon-ad7418.patch
+75-dsmg600-support.patch
+76-dsmg600-pwrbtn.patch
+78-velocity-BE.patch
+80-kexec-arm-r3.patch
+85-nslu2-rtc-fixup.patch
+86-nas100d-rtc-fixup.patch
+87-dsmg600-rtc-fixup.patch
+88-dsmg600-dflt-cmdline.patch
+95-pata-ixp4xx.patch
+96-fsg3-support.patch
+97-avila-setup-pata.patch
+98-sata_via-add-pata-cleanly.patch
+99-avila-mtd-microcode.patch
+99-avila-loft-mac-platform.patch
diff --git a/packages/linux/ixp4xx-kernel/2.6.20/.mtn2git_empty b/packages/linux/ixp4xx-kernel/2.6.20/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.20/.mtn2git_empty
diff --git a/packages/linux/ixp4xx-kernel/2.6.20/defconfig b/packages/linux/ixp4xx-kernel/2.6.20/defconfig
new file mode 100644
index 0000000000..27fab8ab73
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.20/defconfig
@@ -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/ixp4xx-kernel/2.6.20/series b/packages/linux/ixp4xx-kernel/2.6.20/series
new file mode 100644
index 0000000000..4b67723257
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.20/series
@@ -0,0 +1,43 @@
+# Patches numbered 00 are externally maintained (large) patchsets
+# Patches numbered 01 to 10 are for immediate push upstream, and
+# must be all able to be applied independently in any order.
+# Patches marked with ## need reworking and are currently disabled
+
+squashfs/squashfs.patch
+squashfs/squashfs-ramdisk.patch
+squashfs/squashfs-force-O2.patch
+squashfs/squashfs-lzma.patch
+squashfs/squashfs-Kconfig.patch
+squashfs/squashfs-Makefile.patch
+00-linux-2.6.20.2.patch
+07-remove-avila-ixdp425-setup.patch
+08-avila-loft-setup.patch
+09-avila-setup-pata.patch
+30-ixp4xx-npe-driver-0.3.1.patch
+37-ixp4xx-net-driver-improve-mac-handling.patch
+39-ixp4xx-net-driver-mtd-load-fw.patch
+40-avila-setup-mac.patch
+41-nslu2-setup-mac.patch
+42-nas100d-setup-mac.patch
+43-nslu2-mtd-microcode.patch
+44-nas100d-mtd-microcode.patch
+45-eeprom-new-notifier.patch
+50-leds-arm-cpu-activity.patch
+52-nas100d-mtd-load-mac.patch
+53-nslu2-mtd-load-mac.patch
+55-increase-entropy-pools.patch
+60-nas100d-artop-temp-fix.patch
+66-hwmon-ad7418.patch
+75-dsmg600-support.patch
+76-dsmg600-pwrbtn.patch
+78-velocity-BE.patch
+80-kexec-arm-upstream.patch
+85-nslu2-rtc-fixup.patch
+86-nas100d-rtc-fixup.patch
+87-dsmg600-rtc-fixup.patch
+89-dsmg600-mv-freq-fixup.patch
+89-nslu2-mv-freq-fixup.patch
+96-fsg3-support.patch
+98-sata_via-pata-support-upstream.patch
+99-avila-mtd-microcode.patch
+99-avila-loft-mac-platform.patch
diff --git a/packages/linux/ixp4xx-kernel/2.6.21/.mtn2git_empty b/packages/linux/ixp4xx-kernel/2.6.21/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.21/.mtn2git_empty
diff --git a/packages/linux/ixp4xx-kernel/2.6.21/defconfig b/packages/linux/ixp4xx-kernel/2.6.21/defconfig
new file mode 100644
index 0000000000..a0242bf951
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.21/defconfig
@@ -0,0 +1,2063 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21-rc4
+# Tue Mar 20 01:42:04 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 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_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=" 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 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_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
+
+#
+# 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 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
+
+#
+# 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 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
+# 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_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_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_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_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 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
+
+#
+# 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=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 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
+# 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 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_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
+
+#
+# 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=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_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+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/ixp4xx-kernel_2.6.19.bb b/packages/linux/ixp4xx-kernel_2.6.19.bb
index 321d24a035..c724535b63 100644
--- a/packages/linux/ixp4xx-kernel_2.6.19.bb
+++ b/packages/linux/ixp4xx-kernel_2.6.19.bb
@@ -6,7 +6,7 @@
# http://trac.nslu2-linux.org/kernel/
#
# The revision that is pulled from SVN is specified below
-IXP4XX_KERNEL_SVN_REV = "644"
+IXP4XX_KERNEL_SVN_REV = "699"
#
# The directory containing the patches to be applied is
# specified below
@@ -20,3 +20,6 @@ PR = "r1.${IXP4XX_KERNEL_SVN_REV}"
require ixp4xx-kernel.inc
require ixp4xx-kernel-svnpatch.inc
+
+SRC_URI += "file://defconfig"
+SRC_URI += "file://series"
diff --git a/packages/linux/ixp4xx-kernel_2.6.20.bb b/packages/linux/ixp4xx-kernel_2.6.20.bb
new file mode 100644
index 0000000000..8e6f1b27df
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel_2.6.20.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 = "821"
+#
+# The directory containing the patches to be applied is
+# specified below
+IXP4XX_KERNEL_PATCH_DIR = "2.6.20"
+#
+# 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 = "r4.${IXP4XX_KERNEL_SVN_REV}"
+
+require ixp4xx-kernel.inc
+require ixp4xx-kernel-svnpatch.inc
+
+SRC_URI += "file://defconfig"
diff --git a/packages/linux/ixp4xx-kernel_2.6.21.bb b/packages/linux/ixp4xx-kernel_2.6.21.bb
new file mode 100644
index 0000000000..b998d5933d
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel_2.6.21.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 = "824"
+#
+# The directory containing the patches to be applied is
+# specified below
+IXP4XX_KERNEL_PATCH_DIR = "2.6.21"
+#
+# 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-dht-walnut-2.6.20/.mtn2git_empty b/packages/linux/linux-dht-walnut-2.6.20/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-dht-walnut-2.6.20/.mtn2git_empty
diff --git a/packages/linux/linux-dht-walnut-2.6.20/dht-walnut_defconfig b/packages/linux/linux-dht-walnut-2.6.20/dht-walnut_defconfig
new file mode 100644
index 0000000000..b6b752f623
--- /dev/null
+++ b/packages/linux/linux-dht-walnut-2.6.20/dht-walnut_defconfig
@@ -0,0 +1,2311 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20
+# Tue Feb 27 05:44:23 2007
+#
+# CONFIG_PPC64 is not set
+CONFIG_PPC32=y
+CONFIG_PPC_MERGE=y
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_IRQ_PER_CPU=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_ILOG2_U32=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_PPC=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_PPC_OF=y
+# CONFIG_PPC_UDBG_16550 is not set
+# CONFIG_GENERIC_TBSYNC is not set
+CONFIG_AUDIT_ARCH=y
+CONFIG_GENERIC_BUG=y
+# CONFIG_DEFAULT_UIMAGE is not set
+
+#
+# Processor support
+#
+# CONFIG_CLASSIC32 is not set
+# CONFIG_PPC_82xx is not set
+# CONFIG_PPC_83xx is not set
+# CONFIG_PPC_85xx is not set
+# CONFIG_PPC_86xx is not set
+CONFIG_40x=y
+# CONFIG_44x is not set
+# CONFIG_8xx is not set
+# CONFIG_E200 is not set
+CONFIG_PPC_DCR_NATIVE=y
+# CONFIG_PPC_DCR_MMIO is not set
+CONFIG_PPC_DCR=y
+CONFIG_NOT_COHERENT_CACHE=y
+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_IPC_NS is not set
+CONFIG_POSIX_MQUEUE=y
+# 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=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL_SYSCALL=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 is not set
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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 is not set
+# 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=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"
+CONFIG_PPC_GEN550=y
+CONFIG_4xx=y
+# CONFIG_WANT_EARLY_SERIAL is not set
+
+#
+# AMCC 4xx options
+#
+# CONFIG_BUBINGA is not set
+# CONFIG_CPCI405 is not set
+# CONFIG_EP405 is not set
+# CONFIG_REDWOOD_5 is not set
+# CONFIG_REDWOOD_6 is not set
+# CONFIG_SYCAMORE is not set
+CONFIG_WALNUT=y
+# CONFIG_XILINX_ML300 is not set
+CONFIG_IBM405_ERR77=y
+CONFIG_IBM405_ERR51=y
+CONFIG_IBM_OCP=y
+CONFIG_BIOS_FIXUP=y
+CONFIG_405GP=y
+CONFIG_IBM_OPENBIOS=y
+CONFIG_PPC4xx_DMA=y
+CONFIG_PPC4xx_EDMA=y
+CONFIG_UART0_TTYS0=y
+# CONFIG_UART0_TTYS1 is not set
+
+#
+# IBM 40x options
+#
+# CONFIG_MPIC is not set
+
+#
+# Kernel options
+#
+# CONFIG_HIGHMEM is not set
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+CONFIG_HZ_1000=y
+CONFIG_HZ=1000
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
+CONFIG_PREEMPT_BKL=y
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+CONFIG_MATH_EMULATION=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+# CONFIG_PC_KEYBOARD is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_POPULATES_NODE_MAP=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 is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+# CONFIG_PROC_DEVICETREE is not set
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="ip=on"
+# CONFIG_PM is not set
+CONFIG_SECCOMP=y
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+# CONFIG_MPIC_WEIRD is not set
+# CONFIG_PPC_I8259 is not set
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_PCIEPORTBUS 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
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=m
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+CONFIG_PD6729=m
+CONFIG_I82092=m
+CONFIG_PCCARD_NONSTATIC=m
+
+#
+# PCI Hotplug Support
+#
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Advanced setup
+#
+CONFIG_ADVANCED_OPTIONS=y
+CONFIG_HIGHMEM_START=0xfe000000
+# CONFIG_LOWMEM_SIZE_BOOL is not set
+CONFIG_LOWMEM_SIZE=0x30000000
+# CONFIG_KERNEL_START_BOOL is not set
+CONFIG_KERNEL_START=0xc0000000
+# CONFIG_TASK_SIZE_BOOL is not set
+CONFIG_TASK_SIZE=0x80000000
+# CONFIG_CONSISTENT_START_BOOL is not set
+CONFIG_CONSISTENT_START=0xff100000
+# CONFIG_CONSISTENT_SIZE_BOOL is not set
+CONFIG_CONSISTENT_SIZE=0x00200000
+# CONFIG_BOOT_LOAD_BOOL is not set
+CONFIG_BOOT_LOAD=0x00400000
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+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_MULTIPATH_CACHED is not set
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE=y
+# CONFIG_IP_PIMSM_V1 is not set
+# CONFIG_IP_PIMSM_V2 is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=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=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
+
+#
+# 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_NETLABEL 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_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_IP6_NF_QUEUE=m
+
+#
+# DECnet: Netfilter Configuration
+#
+# CONFIG_DECNET_NF_GRABULATOR is not set
+
+#
+# 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=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_HMAC_NONE is not set
+# CONFIG_SCTP_HMAC_SHA1 is not set
+CONFIG_SCTP_HMAC_MD5=y
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC 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=m
+# CONFIG_DECNET_ROUTER is not set
+CONFIG_LLC=m
+CONFIG_LLC2=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+# CONFIG_DEV_APPLETALK is not set
+CONFIG_X25=m
+CONFIG_LAPB=m
+CONFIG_ECONET=m
+# CONFIG_ECONET_AUNUDP is not set
+# CONFIG_ECONET_NATIVE is not set
+CONFIG_WAN_ROUTER=m
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_FIFO=y
+CONFIG_NET_SCH_CLK_JIFFIES=y
+# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# 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_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 is not set
+# CONFIG_CLS_U32_MARK is not set
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+# CONFIG_NET_EMATCH is not set
+# CONFIG_NET_CLS_ACT is not set
+CONFIG_NET_CLS_POLICE=y
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_ESTIMATOR=y
+
+#
+# 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
+CONFIG_WIRELESS_EXT=y
+CONFIG_FIB_RULES=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+# CONFIG_STANDALONE is not set
+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=m
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=m
+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
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=m
+CONFIG_MTD_BLOCK_RO=m
+CONFIG_FTL=m
+CONFIG_NFTL=m
+# CONFIG_NFTL_RW is not set
+CONFIG_INFTL=m
+CONFIG_RFD_FTL=m
+CONFIG_SSFDC=m
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=m
+CONFIG_MTD_JEDECPROBE=m
+CONFIG_MTD_GEN_PROBE=m
+# 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=m
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
+CONFIG_MTD_CFI_UTIL=m
+CONFIG_MTD_RAM=m
+CONFIG_MTD_ROM=m
+CONFIG_MTD_ABSENT=m
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_PHYSMAP=m
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x4000000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PHYSMAP_OF is not set
+CONFIG_MTD_WALNUT=m
+CONFIG_MTD_PCI=m
+CONFIG_MTD_PLATRAM=m
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_PMC551=m
+CONFIG_MTD_PMC551_BUGFIX=y
+# CONFIG_MTD_PMC551_DEBUG is not set
+CONFIG_MTD_DATAFLASH=m
+CONFIG_MTD_M25P80=m
+CONFIG_MTD_SLRAM=y
+CONFIG_MTD_PHRAM=y
+# CONFIG_MTD_MTDRAM is not set
+CONFIG_MTD_BLOCK2MTD=y
+
+#
+# Disk-On-Chip Device Drivers
+#
+CONFIG_MTD_DOC2000=m
+CONFIG_MTD_DOC2001=m
+CONFIG_MTD_DOC2001PLUS=m
+CONFIG_MTD_DOCPROBE=m
+CONFIG_MTD_DOCECC=m
+# CONFIG_MTD_DOCPROBE_ADVANCED is not set
+CONFIG_MTD_DOCPROBE_ADDRESS=0
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=m
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND_IDS=m
+CONFIG_MTD_NAND_DISKONCHIP=m
+# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
+# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
+CONFIG_MTD_NAND_CAFE=m
+CONFIG_MTD_NAND_NANDSIM=m
+
+#
+# OneNAND Flash Device Drivers
+#
+CONFIG_MTD_ONENAND=m
+# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
+# CONFIG_MTD_ONENAND_OTP is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_PC_PCMCIA is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_AX88796 is not set
+# CONFIG_PARPORT_1284 is not set
+CONFIG_PARPORT_NOT_PC=y
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_PARIDE 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=y
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+CONFIG_BLK_DEV_UB=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+
+#
+# Misc devices
+#
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDECS is not set
+CONFIG_BLK_DEV_IDECD=y
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_BLK_DEV_IDEFLOPPY=m
+CONFIG_BLK_DEV_IDESCSI=m
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+CONFIG_BLK_DEV_IDEPCI=y
+# CONFIG_IDEPCI_SHARE_IRQ is not set
+CONFIG_BLK_DEV_OFFBOARD=y
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+# CONFIG_IDEDMA_ONLYDISK is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_JMICRON is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+# CONFIG_BLK_DEV_PIIX is not set
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+CONFIG_BLK_DEV_PDC202XX_OLD=y
+CONFIG_PDC202XX_BURST=y
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SL82C105 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+# CONFIG_SCSI_TGT is not set
+CONFIG_SCSI_NETLINK=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=y
+# 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=m
+CONFIG_SCSI_FC_ATTRS=m
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS 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_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_PPA is not set
+# CONFIG_SCSI_IMM is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD 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=m
+
+#
+# Subsystem Options
+#
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+# CONFIG_IEEE1394_OUI_DB is not set
+CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
+CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
+# CONFIG_IEEE1394_EXPORT_FULL_API is not set
+
+#
+# Device Drivers
+#
+CONFIG_IEEE1394_PCILYNX=m
+CONFIG_IEEE1394_OHCI1394=m
+
+#
+# Protocol Drivers
+#
+CONFIG_IEEE1394_VIDEO1394=m
+CONFIG_IEEE1394_SBP2=m
+CONFIG_IEEE1394_ETH1394=m
+CONFIG_IEEE1394_DV1394=m
+CONFIG_IEEE1394_RAWIO=m
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Macintosh device drivers
+#
+# CONFIG_MAC_EMUMOUSEBTN is not set
+# CONFIG_WINDFARM is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+CONFIG_BONDING=m
+CONFIG_EQUALIZER=m
+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_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+
+#
+# Tulip family network device support
+#
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+# CONFIG_TULIP_NAPI is not set
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+# CONFIG_ULI526X is not set
+CONFIG_PCMCIA_XIRCOM=m
+CONFIG_PCMCIA_XIRTULIP=m
+CONFIG_HP100=m
+CONFIG_IBM_EMAC=y
+CONFIG_IBM_EMAC_RXB=128
+CONFIG_IBM_EMAC_TXB=64
+CONFIG_IBM_EMAC_POLL_WEIGHT=32
+CONFIG_IBM_EMAC_RX_COPY_THRESHOLD=256
+CONFIG_IBM_EMAC_RX_SKB_HEADROOM=0
+# CONFIG_IBM_EMAC_DEBUG is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+# CONFIG_PCNET32_NAPI is not set
+CONFIG_AMD8111_ETH=m
+# CONFIG_AMD8111E_NAPI is not set
+CONFIG_ADAPTEC_STARFIRE=m
+# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
+CONFIG_B44=m
+CONFIG_FORCEDETH=m
+# CONFIG_FORCEDETH_NAPI is not set
+CONFIG_DGRS=m
+CONFIG_EEPRO100=m
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_TLAN=m
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_VIA_RHINE_NAPI is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_DL2K=m
+CONFIG_E1000=m
+# CONFIG_E1000_NAPI is not set
+# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+# CONFIG_R8169_NAPI is not set
+# CONFIG_R8169_VLAN is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+CONFIG_SK98LIN=m
+CONFIG_VIA_VELOCITY=m
+CONFIG_TIGON3=m
+CONFIG_BNX2=m
+# 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=m
+CONFIG_PCMCIA_WAVELAN=m
+CONFIG_PCMCIA_NETWAVE=m
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+CONFIG_PCMCIA_RAYCS=m
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_AIRO is not set
+CONFIG_HERMES=m
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+# CONFIG_NORTEL_HERMES is not set
+CONFIG_PCI_HERMES=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+# CONFIG_PCMCIA_SPECTRUM is not set
+CONFIG_AIRO_CS=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_PCMCIA_WL3501=m
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+CONFIG_PRISM54=m
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
+
+#
+# Wan interfaces
+#
+CONFIG_WAN=y
+CONFIG_LANMEDIA=m
+CONFIG_HDLC=m
+# CONFIG_HDLC_RAW is not set
+# CONFIG_HDLC_RAW_ETH is not set
+# CONFIG_HDLC_CISCO is not set
+# CONFIG_HDLC_FR is not set
+# CONFIG_HDLC_PPP is not set
+# CONFIG_HDLC_X25 is not set
+CONFIG_PCI200SYN=m
+CONFIG_WANXL=m
+CONFIG_PC300=m
+
+#
+# Cyclades-PC300 MLPPP support is disabled.
+#
+
+#
+# Refer to the file README.mlppp, provided by PC300 package.
+#
+CONFIG_FARSYNC=m
+CONFIG_DSCC4=m
+# CONFIG_DSCC4_PCISYNC is not set
+# CONFIG_DSCC4_PCI_RST is not set
+CONFIG_DLCI=m
+CONFIG_DLCI_COUNT=24
+CONFIG_DLCI_MAX=8
+# CONFIG_WAN_ROUTER_DRIVERS is not set
+CONFIG_LAPBETHER=m
+CONFIG_X25_ASY=m
+
+#
+# ATM drivers
+#
+# 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_PLIP 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 is not set
+CONFIG_PPPOE=m
+CONFIG_PPPOATM=m
+CONFIG_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLHC=m
+CONFIG_SLIP_SMART=y
+# CONFIG_SLIP_MODE_SLIP6 is not set
+# CONFIG_NET_FC is not set
+CONFIG_SHAPER=m
+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
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS 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 is not set
+# 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_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL 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 is not set
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_PARKBD is not set
+# CONFIG_SERIO_PCIPS2 is not set
+# CONFIG_SERIO_LIBPS2 is not set
+# 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_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_PCI=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_UARTLITE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_PRINTER=m
+# CONFIG_LP_CONSOLE is not set
+CONFIG_PPDEV=m
+# CONFIG_TIPAR 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=m
+# CONFIG_BOOKE_WDT is not set
+
+#
+# PCI-based Watchdog Cards
+#
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+# CONFIG_WDT_501_PCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+CONFIG_USBPCWATCHDOG=m
+CONFIG_HW_RANDOM=m
+CONFIG_NVRAM=m
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+
+#
+# PCMCIA character devices
+#
+CONFIG_SYNCLINK_CS=m
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 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=y
+CONFIG_I2C_ALGOPCA=y
+
+#
+# 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_IBM_IIC=y
+# CONFIG_I2C_MPC is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT 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=m
+# CONFIG_SENSORS_DS1374 is not set
+CONFIG_SENSORS_EEPROM=m
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_M41T00=m
+# 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=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=m
+# CONFIG_SPI_BUTTERFLY is not set
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_MATROX=m
+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 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=m
+# CONFIG_HWMON_VID is not set
+# 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_LM70 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_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 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
+
+#
+# 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_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TDA9875=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=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 is not set
+CONFIG_VIDEO_BT848=m
+# CONFIG_VIDEO_BT848_DVB is not set
+# CONFIG_VIDEO_SAA6588 is not set
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_USB=m
+# CONFIG_VIDEO_CPIA2 is not set
+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_DVB 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_BLACKBIRD is not set
+# CONFIG_VIDEO_CX88_DVB 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_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+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 is not set
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+
+#
+# Radio Adapters
+#
+CONFIG_RADIO_GEMTEK_PCI=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_MAESTRO=m
+CONFIG_USB_DSBR=m
+
+#
+# Digital Video Broadcasting Devices
+#
+CONFIG_DVB=y
+CONFIG_DVB_CORE=m
+# CONFIG_DVB_CORE_ATTACH is not set
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+CONFIG_DVB_AV7110=m
+# CONFIG_DVB_AV7110_FIRMWARE is not set
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+
+#
+# Supported USB Adapters
+#
+# CONFIG_DVB_USB is not set
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_DVB_CINERGYT2=m
+# CONFIG_DVB_CINERGYT2_TUNING is not set
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
+
+#
+# Supported BT878 Adapters
+#
+CONFIG_DVB_BT8XX=m
+
+#
+# Supported Pluto2 Adapters
+#
+# CONFIG_DVB_PLUTO2 is not set
+
+#
+# Supported DVB Frontends
+#
+
+#
+# Customise DVB Frontends
+#
+# CONFIG_DVB_FE_CUSTOMISE is not set
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_CX24110=m
+# CONFIG_DVB_CX24123 is not set
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_TDA10086=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+# CONFIG_DVB_DIB7000M is not set
+# CONFIG_DVB_DIB7000P is not set
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+
+#
+# Tuners/PLL support
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TDA826X=m
+# CONFIG_DVB_TUNER_MT2060 is not set
+CONFIG_DVB_TUNER_LGH06XF=m
+
+#
+# Miscellaneous devices
+#
+CONFIG_DVB_LNBP21=m
+# CONFIG_DVB_ISL6421 is not set
+CONFIG_DVB_TUA6100=m
+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=m
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB=y
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_OF is not set
+# CONFIG_FB_CT65550 is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_VGA16 is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+CONFIG_FB_MATROX=y
+CONFIG_FB_MATROX_MILLENIUM=y
+CONFIG_FB_MATROX_MYSTIQUE=y
+CONFIG_FB_MATROX_G=y
+# CONFIG_FB_MATROX_I2C is not set
+# CONFIG_FB_MATROX_MULTIHEAD 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_TRIDENT is not set
+# CONFIG_FB_IBM_GXT4500 is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_LCD_DEVICE=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# 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 is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN 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=m
+# CONFIG_USB_SL811_CS 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=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_DPCM=y
+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_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+CONFIG_USB_ACECAD=m
+CONFIG_USB_KBTAB=m
+CONFIG_USB_POWERMATE=m
+CONFIG_USB_TOUCHSCREEN=m
+CONFIG_USB_TOUCHSCREEN_EGALAX=y
+CONFIG_USB_TOUCHSCREEN_PANJIT=y
+CONFIG_USB_TOUCHSCREEN_3M=y
+CONFIG_USB_TOUCHSCREEN_ITM=y
+CONFIG_USB_TOUCHSCREEN_ETURBO=y
+CONFIG_USB_TOUCHSCREEN_GUNZE=y
+CONFIG_USB_TOUCHSCREEN_DMC_TSC10=y
+CONFIG_USB_YEALINK=m
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+CONFIG_USB_ATI_REMOTE2=m
+CONFIG_USB_KEYSPAN_REMOTE=m
+CONFIG_USB_APPLETOUCH=m
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+CONFIG_USB_PEGASUS=y
+# CONFIG_USB_RTL8150 is not set
+CONFIG_USB_USBNET_MII=y
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_CDCETHER=y
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=y
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=y
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+CONFIG_USB_SERIAL_AIRPRIME=m
+# 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=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+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 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+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 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=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYPRESS_CY7C63=m
+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=m
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_SISUSBVGA_CON is not set
+CONFIG_USB_LD=m
+CONFIG_USB_TRANCEVIBRATOR=m
+CONFIG_USB_TEST=m
+
+#
+# USB DSL modem support
+#
+CONFIG_USB_ATM=m
+# CONFIG_USB_SPEEDTOUCH is not set
+# CONFIG_USB_CXACRU is not set
+# CONFIG_USB_UEAGLEATM is not set
+# CONFIG_USB_XUSBATM is not set
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+CONFIG_USB_GADGET_NET2280=y
+CONFIG_USB_NET2280=m
+# CONFIG_USB_GADGET_PXA2XX 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_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
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C348 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_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# DMA Engine support
+#
+CONFIG_DMA_ENGINE=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA=y
+
+#
+# DMA Devices
+#
+CONFIG_INTEL_IOATDMA=m
+
+#
+# Virtualization
+#
+
+#
+# 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 is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_REISERFS_FS_XATTR is not set
+CONFIG_JFS_FS=m
+# CONFIG_JFS_POSIX_ACL is not set
+# CONFIG_JFS_SECURITY is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS 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=m
+CONFIG_ROMFS_FS=m
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_QUOTA=y
+CONFIG_QFMT_V1=m
+CONFIG_QFMT_V2=m
+CONFIG_QUOTACTL=y
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=m
+CONFIG_AUTOFS4_FS=m
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_ZISOFS_FS=y
+CONFIG_UDF_FS=y
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=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=m
+# CONFIG_ADFS_FS_RW is not set
+CONFIG_AFFS_FS=m
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_BEFS_FS=m
+# CONFIG_BEFS_DEBUG is not set
+CONFIG_BFS_FS=m
+CONFIG_EFS_FS=m
+CONFIG_JFFS2_FS=m
+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=m
+CONFIG_HPFS_FS=m
+CONFIG_QNX4FS_FS=m
+CONFIG_SYSV_FS=m
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_UFS_DEBUG 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 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=m
+CONFIG_RPCSEC_GSS_KRB5=m
+CONFIG_RPCSEC_GSS_SPKM3=m
+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=m
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+CONFIG_CODA_FS=m
+# CONFIG_CODA_FS_OLD_API is not set
+CONFIG_AFS_FS=m
+CONFIG_RXRPC=m
+# 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=y
+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=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+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=y
+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
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_REED_SOLOMON=m
+CONFIG_REED_SOLOMON_DEC16=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
+
+#
+# Instrumentation 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_BOOTX_TEXT is not set
+# CONFIG_SERIAL_TEXT_DEBUG is not set
+# CONFIG_PPC_EARLY_DEBUG is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+CONFIG_SECURITY=y
+CONFIG_SECURITY_NETWORK=y
+# CONFIG_SECURITY_NETWORK_XFRM is not set
+CONFIG_SECURITY_CAPABILITIES=m
+CONFIG_SECURITY_ROOTPLUG=m
+
+#
+# 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=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=y
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=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_TEST=m
+
+#
+# Hardware crypto devices
+#
diff --git a/packages/linux/linux-dht-walnut-2.6.20/remove-todc.patch b/packages/linux/linux-dht-walnut-2.6.20/remove-todc.patch
new file mode 100644
index 0000000000..afdc904a08
--- /dev/null
+++ b/packages/linux/linux-dht-walnut-2.6.20/remove-todc.patch
@@ -0,0 +1,920 @@
+Index: working-2.6/arch/powerpc/sysdev/todc.c
+===================================================================
+--- working-2.6.orig/arch/powerpc/sysdev/todc.c 2006-08-25 14:27:11.000000000 +1000
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,392 +0,0 @@
+-/*
+- * Time of Day Clock support for the M48T35, M48T37, M48T59, and MC146818
+- * Real Time Clocks/Timekeepers.
+- *
+- * Author: Mark A. Greer <mgreer@mvista.com>
+- *
+- * 2001-2004 (c) MontaVista, Software, Inc. This file is licensed under
+- * the terms of the GNU General Public License version 2. This program
+- * is licensed "as is" without any warranty of any kind, whether express
+- * or implied.
+- */
+-#include <linux/errno.h>
+-#include <linux/init.h>
+-#include <linux/kernel.h>
+-#include <linux/time.h>
+-#include <linux/timex.h>
+-#include <linux/bcd.h>
+-#include <linux/mc146818rtc.h>
+-
+-#include <asm/machdep.h>
+-#include <asm/io.h>
+-#include <asm/time.h>
+-#include <asm/todc.h>
+-
+-/*
+- * Depending on the hardware on your board and your board design, the
+- * RTC/NVRAM may be accessed either directly (like normal memory) or via
+- * address/data registers. If your board uses the direct method, set
+- * 'nvram_data' to the base address of your nvram and leave 'nvram_as0' and
+- * 'nvram_as1' NULL. If your board uses address/data regs to access nvram,
+- * set 'nvram_as0' to the address of the lower byte, set 'nvram_as1' to the
+- * address of the upper byte (leave NULL if using mc146818), and set
+- * 'nvram_data' to the address of the 8-bit data register.
+- *
+- * Note: Even though the documentation for the various RTC chips say that it
+- * take up to a second before it starts updating once the 'R' bit is
+- * cleared, they always seem to update even though we bang on it many
+- * times a second. This is true, except for the Dallas Semi 1746/1747
+- * (possibly others). Those chips seem to have a real problem whenever
+- * we set the 'R' bit before reading them, they basically stop counting.
+- * --MAG
+- */
+-
+-/*
+- * 'todc_info' should be initialized in your *_setup.c file to
+- * point to a fully initialized 'todc_info_t' structure.
+- * This structure holds all the register offsets for your particular
+- * TODC/RTC chip.
+- * TODC_ALLOC()/TODC_INIT() will allocate and initialize this table for you.
+- */
+-
+-#ifdef RTC_FREQ_SELECT
+-#undef RTC_FREQ_SELECT
+-#define RTC_FREQ_SELECT control_b /* Register A */
+-#endif
+-
+-#ifdef RTC_CONTROL
+-#undef RTC_CONTROL
+-#define RTC_CONTROL control_a /* Register B */
+-#endif
+-
+-#ifdef RTC_INTR_FLAGS
+-#undef RTC_INTR_FLAGS
+-#define RTC_INTR_FLAGS watchdog /* Register C */
+-#endif
+-
+-#ifdef RTC_VALID
+-#undef RTC_VALID
+-#define RTC_VALID interrupts /* Register D */
+-#endif
+-
+-/* Access routines when RTC accessed directly (like normal memory) */
+-u_char
+-todc_direct_read_val(int addr)
+-{
+- return readb((void __iomem *)(todc_info->nvram_data + addr));
+-}
+-
+-void
+-todc_direct_write_val(int addr, unsigned char val)
+-{
+- writeb(val, (void __iomem *)(todc_info->nvram_data + addr));
+- return;
+-}
+-
+-/* Access routines for accessing m48txx type chips via addr/data regs */
+-u_char
+-todc_m48txx_read_val(int addr)
+-{
+- outb(addr, todc_info->nvram_as0);
+- outb(addr>>todc_info->as0_bits, todc_info->nvram_as1);
+- return inb(todc_info->nvram_data);
+-}
+-
+-void
+-todc_m48txx_write_val(int addr, unsigned char val)
+-{
+- outb(addr, todc_info->nvram_as0);
+- outb(addr>>todc_info->as0_bits, todc_info->nvram_as1);
+- outb(val, todc_info->nvram_data);
+- return;
+-}
+-
+-/* Access routines for accessing mc146818 type chips via addr/data regs */
+-u_char
+-todc_mc146818_read_val(int addr)
+-{
+- outb_p(addr, todc_info->nvram_as0);
+- return inb_p(todc_info->nvram_data);
+-}
+-
+-void
+-todc_mc146818_write_val(int addr, unsigned char val)
+-{
+- outb_p(addr, todc_info->nvram_as0);
+- outb_p(val, todc_info->nvram_data);
+-}
+-
+-
+-/*
+- * Routines to make RTC chips with NVRAM buried behind an addr/data pair
+- * have the NVRAM and clock regs appear at the same level.
+- * The NVRAM will appear to start at addr 0 and the clock regs will appear
+- * to start immediately after the NVRAM (actually, start at offset
+- * todc_info->nvram_size).
+- */
+-static inline u_char
+-todc_read_val(int addr)
+-{
+- u_char val;
+-
+- if (todc_info->sw_flags & TODC_FLAG_2_LEVEL_NVRAM) {
+- if (addr < todc_info->nvram_size) { /* NVRAM */
+- ppc_md.rtc_write_val(todc_info->nvram_addr_reg, addr);
+- val = ppc_md.rtc_read_val(todc_info->nvram_data_reg);
+- } else { /* Clock Reg */
+- addr -= todc_info->nvram_size;
+- val = ppc_md.rtc_read_val(addr);
+- }
+- } else
+- val = ppc_md.rtc_read_val(addr);
+-
+- return val;
+-}
+-
+-static inline void
+-todc_write_val(int addr, u_char val)
+-{
+- if (todc_info->sw_flags & TODC_FLAG_2_LEVEL_NVRAM) {
+- if (addr < todc_info->nvram_size) { /* NVRAM */
+- ppc_md.rtc_write_val(todc_info->nvram_addr_reg, addr);
+- ppc_md.rtc_write_val(todc_info->nvram_data_reg, val);
+- } else { /* Clock Reg */
+- addr -= todc_info->nvram_size;
+- ppc_md.rtc_write_val(addr, val);
+- }
+- } else
+- ppc_md.rtc_write_val(addr, val);
+-}
+-
+-/*
+- * TODC routines
+- *
+- * There is some ugly stuff in that there are assumptions for the mc146818.
+- *
+- * Assumptions:
+- * - todc_info->control_a has the offset as mc146818 Register B reg
+- * - todc_info->control_b has the offset as mc146818 Register A reg
+- * - m48txx control reg's write enable or 'W' bit is same as
+- * mc146818 Register B 'SET' bit (i.e., 0x80)
+- *
+- * These assumptions were made to make the code simpler.
+- */
+-long __init
+-todc_time_init(void)
+-{
+- u_char cntl_b;
+-
+- if (!ppc_md.rtc_read_val)
+- ppc_md.rtc_read_val = ppc_md.nvram_read_val;
+- if (!ppc_md.rtc_write_val)
+- ppc_md.rtc_write_val = ppc_md.nvram_write_val;
+-
+- cntl_b = todc_read_val(todc_info->control_b);
+-
+- if (todc_info->rtc_type == TODC_TYPE_MC146818) {
+- if ((cntl_b & 0x70) != 0x20) {
+- printk(KERN_INFO "TODC real-time-clock was stopped."
+- " Now starting...");
+- cntl_b &= ~0x70;
+- cntl_b |= 0x20;
+- }
+-
+- todc_write_val(todc_info->control_b, cntl_b);
+- } else if (todc_info->rtc_type == TODC_TYPE_DS17285) {
+- u_char mode;
+-
+- mode = todc_read_val(TODC_TYPE_DS17285_CNTL_A);
+- /* Make sure countdown clear is not set */
+- mode &= ~0x40;
+- /* Enable oscillator, extended register set */
+- mode |= 0x30;
+- todc_write_val(TODC_TYPE_DS17285_CNTL_A, mode);
+-
+- } else if (todc_info->rtc_type == TODC_TYPE_DS1501) {
+- u_char month;
+-
+- todc_info->enable_read = TODC_DS1501_CNTL_B_TE;
+- todc_info->enable_write = TODC_DS1501_CNTL_B_TE;
+-
+- month = todc_read_val(todc_info->month);
+-
+- if ((month & 0x80) == 0x80) {
+- printk(KERN_INFO "TODC %s %s\n",
+- "real-time-clock was stopped.",
+- "Now starting...");
+- month &= ~0x80;
+- todc_write_val(todc_info->month, month);
+- }
+-
+- cntl_b &= ~TODC_DS1501_CNTL_B_TE;
+- todc_write_val(todc_info->control_b, cntl_b);
+- } else { /* must be a m48txx type */
+- u_char cntl_a;
+-
+- todc_info->enable_read = TODC_MK48TXX_CNTL_A_R;
+- todc_info->enable_write = TODC_MK48TXX_CNTL_A_W;
+-
+- cntl_a = todc_read_val(todc_info->control_a);
+-
+- /* Check & clear STOP bit in control B register */
+- if (cntl_b & TODC_MK48TXX_DAY_CB) {
+- printk(KERN_INFO "TODC %s %s\n",
+- "real-time-clock was stopped.",
+- "Now starting...");
+-
+- cntl_a |= todc_info->enable_write;
+- cntl_b &= ~TODC_MK48TXX_DAY_CB;/* Start Oscil */
+-
+- todc_write_val(todc_info->control_a, cntl_a);
+- todc_write_val(todc_info->control_b, cntl_b);
+- }
+-
+- /* Make sure READ & WRITE bits are cleared. */
+- cntl_a &= ~(todc_info->enable_write | todc_info->enable_read);
+- todc_write_val(todc_info->control_a, cntl_a);
+- }
+-
+- return 0;
+-}
+-
+-/*
+- * There is some ugly stuff in that there are assumptions that for a mc146818,
+- * the todc_info->control_a has the offset of the mc146818 Register B reg and
+- * that the register'ss 'SET' bit is the same as the m48txx's write enable
+- * bit in the control register of the m48txx (i.e., 0x80).
+- *
+- * It was done to make the code look simpler.
+- */
+-void
+-todc_get_rtc_time(struct rtc_time *tm)
+-{
+- uint year = 0, mon = 0, mday = 0, hour = 0, min = 0, sec = 0;
+- uint limit, i;
+- u_char save_control, uip = 0;
+- extern void GregorianDay(struct rtc_time *);
+-
+- spin_lock(&rtc_lock);
+- save_control = todc_read_val(todc_info->control_a);
+-
+- if (todc_info->rtc_type != TODC_TYPE_MC146818) {
+- limit = 1;
+-
+- switch (todc_info->rtc_type) {
+- case TODC_TYPE_DS1553:
+- case TODC_TYPE_DS1557:
+- case TODC_TYPE_DS1743:
+- case TODC_TYPE_DS1746: /* XXXX BAD HACK -> FIX */
+- case TODC_TYPE_DS1747:
+- case TODC_TYPE_DS17285:
+- break;
+- default:
+- todc_write_val(todc_info->control_a,
+- (save_control | todc_info->enable_read));
+- }
+- } else
+- limit = 100000000;
+-
+- for (i=0; i<limit; i++) {
+- if (todc_info->rtc_type == TODC_TYPE_MC146818)
+- uip = todc_read_val(todc_info->RTC_FREQ_SELECT);
+-
+- sec = todc_read_val(todc_info->seconds) & 0x7f;
+- min = todc_read_val(todc_info->minutes) & 0x7f;
+- hour = todc_read_val(todc_info->hours) & 0x3f;
+- mday = todc_read_val(todc_info->day_of_month) & 0x3f;
+- mon = todc_read_val(todc_info->month) & 0x1f;
+- year = todc_read_val(todc_info->year) & 0xff;
+-
+- if (todc_info->rtc_type == TODC_TYPE_MC146818) {
+- uip |= todc_read_val(todc_info->RTC_FREQ_SELECT);
+- if ((uip & RTC_UIP) == 0)
+- break;
+- }
+- }
+-
+- if (todc_info->rtc_type != TODC_TYPE_MC146818) {
+- switch (todc_info->rtc_type) {
+- case TODC_TYPE_DS1553:
+- case TODC_TYPE_DS1557:
+- case TODC_TYPE_DS1743:
+- case TODC_TYPE_DS1746: /* XXXX BAD HACK -> FIX */
+- case TODC_TYPE_DS1747:
+- case TODC_TYPE_DS17285:
+- break;
+- default:
+- save_control &= ~(todc_info->enable_read);
+- todc_write_val(todc_info->control_a, save_control);
+- }
+- }
+- spin_unlock(&rtc_lock);
+-
+- if ((todc_info->rtc_type != TODC_TYPE_MC146818)
+- || ((save_control & RTC_DM_BINARY) == 0)
+- || RTC_ALWAYS_BCD) {
+- BCD_TO_BIN(sec);
+- BCD_TO_BIN(min);
+- BCD_TO_BIN(hour);
+- BCD_TO_BIN(mday);
+- BCD_TO_BIN(mon);
+- BCD_TO_BIN(year);
+- }
+-
+- if ((year + 1900) < 1970) {
+- year += 100;
+- }
+-
+- tm->tm_sec = sec;
+- tm->tm_min = min;
+- tm->tm_hour = hour;
+- tm->tm_mday = mday;
+- tm->tm_mon = mon;
+- tm->tm_year = year;
+-
+- GregorianDay(tm);
+-}
+-
+-int
+-todc_set_rtc_time(struct rtc_time *tm)
+-{
+- u_char save_control, save_freq_select = 0;
+-
+- spin_lock(&rtc_lock);
+- save_control = todc_read_val(todc_info->control_a);
+-
+- /* Assuming MK48T59_RTC_CA_WRITE & RTC_SET are equal */
+- todc_write_val(todc_info->control_a,
+- (save_control | todc_info->enable_write));
+- save_control &= ~(todc_info->enable_write); /* in case it was set */
+-
+- if (todc_info->rtc_type == TODC_TYPE_MC146818) {
+- save_freq_select = todc_read_val(todc_info->RTC_FREQ_SELECT);
+- todc_write_val(todc_info->RTC_FREQ_SELECT,
+- save_freq_select | RTC_DIV_RESET2);
+- }
+-
+- if ((todc_info->rtc_type != TODC_TYPE_MC146818)
+- || ((save_control & RTC_DM_BINARY) == 0)
+- || RTC_ALWAYS_BCD) {
+- BIN_TO_BCD(tm->tm_sec);
+- BIN_TO_BCD(tm->tm_min);
+- BIN_TO_BCD(tm->tm_hour);
+- BIN_TO_BCD(tm->tm_mon);
+- BIN_TO_BCD(tm->tm_mday);
+- BIN_TO_BCD(tm->tm_year);
+- }
+-
+- todc_write_val(todc_info->seconds, tm->tm_sec);
+- todc_write_val(todc_info->minutes, tm->tm_min);
+- todc_write_val(todc_info->hours, tm->tm_hour);
+- todc_write_val(todc_info->month, tm->tm_mon);
+- todc_write_val(todc_info->day_of_month, tm->tm_mday);
+- todc_write_val(todc_info->year, tm->tm_year);
+-
+- todc_write_val(todc_info->control_a, save_control);
+-
+- if (todc_info->rtc_type == TODC_TYPE_MC146818)
+- todc_write_val(todc_info->RTC_FREQ_SELECT, save_freq_select);
+-
+- spin_unlock(&rtc_lock);
+- return 0;
+-}
+Index: working-2.6/include/asm-powerpc/todc.h
+===================================================================
+--- working-2.6.orig/include/asm-powerpc/todc.h 2006-08-25 14:27:15.000000000 +1000
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,487 +0,0 @@
+-/*
+- * Definitions for the M48Txx and mc146818 series of Time of day/Real Time
+- * Clock chips.
+- *
+- * Author: Mark A. Greer <mgreer@mvista.com>
+- *
+- * 2001 (c) MontaVista, Software, Inc. This file is licensed under
+- * the terms of the GNU General Public License version 2. This program
+- * is licensed "as is" without any warranty of any kind, whether express
+- * or implied.
+- */
+-
+-/*
+- * Support for the M48T37/M48T59/.../mc146818 Real Time Clock chips.
+- * Purpose is to make one generic file that handles all of these chips instead
+- * of every platform implementing the same code over & over again.
+- */
+-
+-#ifndef __PPC_KERNEL_TODC_H
+-#define __PPC_KERNEL_TODC_H
+-
+-typedef struct {
+- uint rtc_type; /* your particular chip */
+-
+- /*
+- * Following are the addresses of the AS0, AS1, and DATA registers
+- * of these chips. Note that these are board-specific.
+- */
+- unsigned int nvram_as0;
+- unsigned int nvram_as1;
+- unsigned int nvram_data;
+-
+- /*
+- * Define bits to stop external set of regs from changing so
+- * the chip can be read/written reliably.
+- */
+- unsigned char enable_read;
+- unsigned char enable_write;
+-
+- /*
+- * Following is the number of AS0 address bits. This is normally
+- * 8 but some bad hardware routes address lines incorrectly.
+- */
+- int as0_bits;
+-
+- int nvram_size; /* Size of NVRAM on chip */
+- int sw_flags; /* Software control flags */
+-
+- /* Following are the register offsets for the particular chip */
+- int year;
+- int month;
+- int day_of_month;
+- int day_of_week;
+- int hours;
+- int minutes;
+- int seconds;
+- int control_b;
+- int control_a;
+- int watchdog;
+- int interrupts;
+- int alarm_date;
+- int alarm_hour;
+- int alarm_minutes;
+- int alarm_seconds;
+- int century;
+- int flags;
+-
+- /*
+- * Some RTC chips have their NVRAM buried behind a addr/data pair of
+- * regs on the first level/clock registers. The following fields
+- * are the addresses for those addr/data regs.
+- */
+- int nvram_addr_reg;
+- int nvram_data_reg;
+-} todc_info_t;
+-
+-/*
+- * Define the types of TODC/RTC variants that are supported in
+- * arch/ppc/kernel/todc_time.c
+- * Make a new one of these for any chip somehow differs from what's already
+- * defined. That way, if you ever need to put in code to touch those
+- * bits/registers in todc_time.c, you can put it inside an
+- * 'if (todc_info->rtc_type == TODC_TYPE_XXX)' so you won't break
+- * anyone else.
+- */
+-#define TODC_TYPE_MK48T35 1
+-#define TODC_TYPE_MK48T37 2
+-#define TODC_TYPE_MK48T59 3
+-#define TODC_TYPE_DS1693 4 /* Dallas DS1693 RTC */
+-#define TODC_TYPE_DS1743 5 /* Dallas DS1743 RTC */
+-#define TODC_TYPE_DS1746 6 /* Dallas DS1746 RTC */
+-#define TODC_TYPE_DS1747 7 /* Dallas DS1747 RTC */
+-#define TODC_TYPE_DS1501 8 /* Dallas DS1501 RTC */
+-#define TODC_TYPE_DS1643 9 /* Dallas DS1643 RTC */
+-#define TODC_TYPE_PC97307 10 /* PC97307 internal RTC */
+-#define TODC_TYPE_DS1557 11 /* Dallas DS1557 RTC */
+-#define TODC_TYPE_DS17285 12 /* Dallas DS17285 RTC */
+-#define TODC_TYPE_DS1553 13 /* Dallas DS1553 RTC */
+-#define TODC_TYPE_MC146818 100 /* Leave room for m48txx's */
+-
+-/*
+- * Bit to clear/set to enable reads/writes to the chip
+- */
+-#define TODC_MK48TXX_CNTL_A_R 0x40
+-#define TODC_MK48TXX_CNTL_A_W 0x80
+-#define TODC_MK48TXX_DAY_CB 0x80
+-
+-#define TODC_DS1501_CNTL_B_TE 0x80
+-
+-/*
+- * Define flag bits used by todc routines.
+- */
+-#define TODC_FLAG_2_LEVEL_NVRAM 0x00000001
+-
+-/*
+- * Define the values for the various RTC's that should to into the todc_info
+- * table.
+- * Note: The XXX_NVRAM_SIZE, XXX_NVRAM_ADDR_REG, and XXX_NVRAM_DATA_REG only
+- * matter if XXX_SW_FLAGS has TODC_FLAG_2_LEVEL_NVRAM set.
+- */
+-#define TODC_TYPE_MK48T35_NVRAM_SIZE 0x7ff8
+-#define TODC_TYPE_MK48T35_SW_FLAGS 0
+-#define TODC_TYPE_MK48T35_YEAR 0x7fff
+-#define TODC_TYPE_MK48T35_MONTH 0x7ffe
+-#define TODC_TYPE_MK48T35_DOM 0x7ffd /* Day of Month */
+-#define TODC_TYPE_MK48T35_DOW 0x7ffc /* Day of Week */
+-#define TODC_TYPE_MK48T35_HOURS 0x7ffb
+-#define TODC_TYPE_MK48T35_MINUTES 0x7ffa
+-#define TODC_TYPE_MK48T35_SECONDS 0x7ff9
+-#define TODC_TYPE_MK48T35_CNTL_B 0x7ff9
+-#define TODC_TYPE_MK48T35_CNTL_A 0x7ff8
+-#define TODC_TYPE_MK48T35_WATCHDOG 0x0000
+-#define TODC_TYPE_MK48T35_INTERRUPTS 0x0000
+-#define TODC_TYPE_MK48T35_ALARM_DATE 0x0000
+-#define TODC_TYPE_MK48T35_ALARM_HOUR 0x0000
+-#define TODC_TYPE_MK48T35_ALARM_MINUTES 0x0000
+-#define TODC_TYPE_MK48T35_ALARM_SECONDS 0x0000
+-#define TODC_TYPE_MK48T35_CENTURY 0x0000
+-#define TODC_TYPE_MK48T35_FLAGS 0x0000
+-#define TODC_TYPE_MK48T35_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_MK48T35_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_MK48T37_NVRAM_SIZE 0x7ff0
+-#define TODC_TYPE_MK48T37_SW_FLAGS 0
+-#define TODC_TYPE_MK48T37_YEAR 0x7fff
+-#define TODC_TYPE_MK48T37_MONTH 0x7ffe
+-#define TODC_TYPE_MK48T37_DOM 0x7ffd /* Day of Month */
+-#define TODC_TYPE_MK48T37_DOW 0x7ffc /* Day of Week */
+-#define TODC_TYPE_MK48T37_HOURS 0x7ffb
+-#define TODC_TYPE_MK48T37_MINUTES 0x7ffa
+-#define TODC_TYPE_MK48T37_SECONDS 0x7ff9
+-#define TODC_TYPE_MK48T37_CNTL_B 0x7ff9
+-#define TODC_TYPE_MK48T37_CNTL_A 0x7ff8
+-#define TODC_TYPE_MK48T37_WATCHDOG 0x7ff7
+-#define TODC_TYPE_MK48T37_INTERRUPTS 0x7ff6
+-#define TODC_TYPE_MK48T37_ALARM_DATE 0x7ff5
+-#define TODC_TYPE_MK48T37_ALARM_HOUR 0x7ff4
+-#define TODC_TYPE_MK48T37_ALARM_MINUTES 0x7ff3
+-#define TODC_TYPE_MK48T37_ALARM_SECONDS 0x7ff2
+-#define TODC_TYPE_MK48T37_CENTURY 0x7ff1
+-#define TODC_TYPE_MK48T37_FLAGS 0x7ff0
+-#define TODC_TYPE_MK48T37_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_MK48T37_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_MK48T59_NVRAM_SIZE 0x1ff0
+-#define TODC_TYPE_MK48T59_SW_FLAGS 0
+-#define TODC_TYPE_MK48T59_YEAR 0x1fff
+-#define TODC_TYPE_MK48T59_MONTH 0x1ffe
+-#define TODC_TYPE_MK48T59_DOM 0x1ffd /* Day of Month */
+-#define TODC_TYPE_MK48T59_DOW 0x1ffc /* Day of Week */
+-#define TODC_TYPE_MK48T59_HOURS 0x1ffb
+-#define TODC_TYPE_MK48T59_MINUTES 0x1ffa
+-#define TODC_TYPE_MK48T59_SECONDS 0x1ff9
+-#define TODC_TYPE_MK48T59_CNTL_B 0x1ff9
+-#define TODC_TYPE_MK48T59_CNTL_A 0x1ff8
+-#define TODC_TYPE_MK48T59_WATCHDOG 0x1fff
+-#define TODC_TYPE_MK48T59_INTERRUPTS 0x1fff
+-#define TODC_TYPE_MK48T59_ALARM_DATE 0x1fff
+-#define TODC_TYPE_MK48T59_ALARM_HOUR 0x1fff
+-#define TODC_TYPE_MK48T59_ALARM_MINUTES 0x1fff
+-#define TODC_TYPE_MK48T59_ALARM_SECONDS 0x1fff
+-#define TODC_TYPE_MK48T59_CENTURY 0x1fff
+-#define TODC_TYPE_MK48T59_FLAGS 0x1fff
+-#define TODC_TYPE_MK48T59_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_MK48T59_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1501_NVRAM_SIZE 0x100
+-#define TODC_TYPE_DS1501_SW_FLAGS TODC_FLAG_2_LEVEL_NVRAM
+-#define TODC_TYPE_DS1501_YEAR (TODC_TYPE_DS1501_NVRAM_SIZE + 0x06)
+-#define TODC_TYPE_DS1501_MONTH (TODC_TYPE_DS1501_NVRAM_SIZE + 0x05)
+-#define TODC_TYPE_DS1501_DOM (TODC_TYPE_DS1501_NVRAM_SIZE + 0x04)
+-#define TODC_TYPE_DS1501_DOW (TODC_TYPE_DS1501_NVRAM_SIZE + 0x03)
+-#define TODC_TYPE_DS1501_HOURS (TODC_TYPE_DS1501_NVRAM_SIZE + 0x02)
+-#define TODC_TYPE_DS1501_MINUTES (TODC_TYPE_DS1501_NVRAM_SIZE + 0x01)
+-#define TODC_TYPE_DS1501_SECONDS (TODC_TYPE_DS1501_NVRAM_SIZE + 0x00)
+-#define TODC_TYPE_DS1501_CNTL_B (TODC_TYPE_DS1501_NVRAM_SIZE + 0x0f)
+-#define TODC_TYPE_DS1501_CNTL_A (TODC_TYPE_DS1501_NVRAM_SIZE + 0x0f)
+-#define TODC_TYPE_DS1501_WATCHDOG (TODC_TYPE_DS1501_NVRAM_SIZE + 0xff)
+-#define TODC_TYPE_DS1501_INTERRUPTS (TODC_TYPE_DS1501_NVRAM_SIZE + 0xff)
+-#define TODC_TYPE_DS1501_ALARM_DATE (TODC_TYPE_DS1501_NVRAM_SIZE + 0x0b)
+-#define TODC_TYPE_DS1501_ALARM_HOUR (TODC_TYPE_DS1501_NVRAM_SIZE + 0x0a)
+-#define TODC_TYPE_DS1501_ALARM_MINUTES (TODC_TYPE_DS1501_NVRAM_SIZE + 0x09)
+-#define TODC_TYPE_DS1501_ALARM_SECONDS (TODC_TYPE_DS1501_NVRAM_SIZE + 0x08)
+-#define TODC_TYPE_DS1501_CENTURY (TODC_TYPE_DS1501_NVRAM_SIZE + 0x07)
+-#define TODC_TYPE_DS1501_FLAGS (TODC_TYPE_DS1501_NVRAM_SIZE + 0xff)
+-#define TODC_TYPE_DS1501_NVRAM_ADDR_REG 0x10
+-#define TODC_TYPE_DS1501_NVRAM_DATA_REG 0x13
+-
+-#define TODC_TYPE_DS1553_NVRAM_SIZE 0x1ff0
+-#define TODC_TYPE_DS1553_SW_FLAGS 0
+-#define TODC_TYPE_DS1553_YEAR 0x1fff
+-#define TODC_TYPE_DS1553_MONTH 0x1ffe
+-#define TODC_TYPE_DS1553_DOM 0x1ffd /* Day of Month */
+-#define TODC_TYPE_DS1553_DOW 0x1ffc /* Day of Week */
+-#define TODC_TYPE_DS1553_HOURS 0x1ffb
+-#define TODC_TYPE_DS1553_MINUTES 0x1ffa
+-#define TODC_TYPE_DS1553_SECONDS 0x1ff9
+-#define TODC_TYPE_DS1553_CNTL_B 0x1ff9
+-#define TODC_TYPE_DS1553_CNTL_A 0x1ff8 /* control_a R/W regs */
+-#define TODC_TYPE_DS1553_WATCHDOG 0x1ff7
+-#define TODC_TYPE_DS1553_INTERRUPTS 0x1ff6
+-#define TODC_TYPE_DS1553_ALARM_DATE 0x1ff5
+-#define TODC_TYPE_DS1553_ALARM_HOUR 0x1ff4
+-#define TODC_TYPE_DS1553_ALARM_MINUTES 0x1ff3
+-#define TODC_TYPE_DS1553_ALARM_SECONDS 0x1ff2
+-#define TODC_TYPE_DS1553_CENTURY 0x1ff8
+-#define TODC_TYPE_DS1553_FLAGS 0x1ff0
+-#define TODC_TYPE_DS1553_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1553_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1557_NVRAM_SIZE 0x7fff0
+-#define TODC_TYPE_DS1557_SW_FLAGS 0
+-#define TODC_TYPE_DS1557_YEAR 0x7ffff
+-#define TODC_TYPE_DS1557_MONTH 0x7fffe
+-#define TODC_TYPE_DS1557_DOM 0x7fffd /* Day of Month */
+-#define TODC_TYPE_DS1557_DOW 0x7fffc /* Day of Week */
+-#define TODC_TYPE_DS1557_HOURS 0x7fffb
+-#define TODC_TYPE_DS1557_MINUTES 0x7fffa
+-#define TODC_TYPE_DS1557_SECONDS 0x7fff9
+-#define TODC_TYPE_DS1557_CNTL_B 0x7fff9
+-#define TODC_TYPE_DS1557_CNTL_A 0x7fff8 /* control_a R/W regs */
+-#define TODC_TYPE_DS1557_WATCHDOG 0x7fff7
+-#define TODC_TYPE_DS1557_INTERRUPTS 0x7fff6
+-#define TODC_TYPE_DS1557_ALARM_DATE 0x7fff5
+-#define TODC_TYPE_DS1557_ALARM_HOUR 0x7fff4
+-#define TODC_TYPE_DS1557_ALARM_MINUTES 0x7fff3
+-#define TODC_TYPE_DS1557_ALARM_SECONDS 0x7fff2
+-#define TODC_TYPE_DS1557_CENTURY 0x7fff8
+-#define TODC_TYPE_DS1557_FLAGS 0x7fff0
+-#define TODC_TYPE_DS1557_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1557_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1643_NVRAM_SIZE 0x1ff8
+-#define TODC_TYPE_DS1643_SW_FLAGS 0
+-#define TODC_TYPE_DS1643_YEAR 0x1fff
+-#define TODC_TYPE_DS1643_MONTH 0x1ffe
+-#define TODC_TYPE_DS1643_DOM 0x1ffd /* Day of Month */
+-#define TODC_TYPE_DS1643_DOW 0x1ffc /* Day of Week */
+-#define TODC_TYPE_DS1643_HOURS 0x1ffb
+-#define TODC_TYPE_DS1643_MINUTES 0x1ffa
+-#define TODC_TYPE_DS1643_SECONDS 0x1ff9
+-#define TODC_TYPE_DS1643_CNTL_B 0x1ff9
+-#define TODC_TYPE_DS1643_CNTL_A 0x1ff8 /* control_a R/W regs */
+-#define TODC_TYPE_DS1643_WATCHDOG 0x1fff
+-#define TODC_TYPE_DS1643_INTERRUPTS 0x1fff
+-#define TODC_TYPE_DS1643_ALARM_DATE 0x1fff
+-#define TODC_TYPE_DS1643_ALARM_HOUR 0x1fff
+-#define TODC_TYPE_DS1643_ALARM_MINUTES 0x1fff
+-#define TODC_TYPE_DS1643_ALARM_SECONDS 0x1fff
+-#define TODC_TYPE_DS1643_CENTURY 0x1ff8
+-#define TODC_TYPE_DS1643_FLAGS 0x1fff
+-#define TODC_TYPE_DS1643_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1643_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1693_NVRAM_SIZE 0 /* Not handled yet */
+-#define TODC_TYPE_DS1693_SW_FLAGS 0
+-#define TODC_TYPE_DS1693_YEAR 0x09
+-#define TODC_TYPE_DS1693_MONTH 0x08
+-#define TODC_TYPE_DS1693_DOM 0x07 /* Day of Month */
+-#define TODC_TYPE_DS1693_DOW 0x06 /* Day of Week */
+-#define TODC_TYPE_DS1693_HOURS 0x04
+-#define TODC_TYPE_DS1693_MINUTES 0x02
+-#define TODC_TYPE_DS1693_SECONDS 0x00
+-#define TODC_TYPE_DS1693_CNTL_B 0x0b
+-#define TODC_TYPE_DS1693_CNTL_A 0x0a
+-#define TODC_TYPE_DS1693_WATCHDOG 0xff
+-#define TODC_TYPE_DS1693_INTERRUPTS 0xff
+-#define TODC_TYPE_DS1693_ALARM_DATE 0x49
+-#define TODC_TYPE_DS1693_ALARM_HOUR 0x05
+-#define TODC_TYPE_DS1693_ALARM_MINUTES 0x03
+-#define TODC_TYPE_DS1693_ALARM_SECONDS 0x01
+-#define TODC_TYPE_DS1693_CENTURY 0x48
+-#define TODC_TYPE_DS1693_FLAGS 0xff
+-#define TODC_TYPE_DS1693_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1693_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1743_NVRAM_SIZE 0x1ff8
+-#define TODC_TYPE_DS1743_SW_FLAGS 0
+-#define TODC_TYPE_DS1743_YEAR 0x1fff
+-#define TODC_TYPE_DS1743_MONTH 0x1ffe
+-#define TODC_TYPE_DS1743_DOM 0x1ffd /* Day of Month */
+-#define TODC_TYPE_DS1743_DOW 0x1ffc /* Day of Week */
+-#define TODC_TYPE_DS1743_HOURS 0x1ffb
+-#define TODC_TYPE_DS1743_MINUTES 0x1ffa
+-#define TODC_TYPE_DS1743_SECONDS 0x1ff9
+-#define TODC_TYPE_DS1743_CNTL_B 0x1ff9
+-#define TODC_TYPE_DS1743_CNTL_A 0x1ff8 /* control_a R/W regs */
+-#define TODC_TYPE_DS1743_WATCHDOG 0x1fff
+-#define TODC_TYPE_DS1743_INTERRUPTS 0x1fff
+-#define TODC_TYPE_DS1743_ALARM_DATE 0x1fff
+-#define TODC_TYPE_DS1743_ALARM_HOUR 0x1fff
+-#define TODC_TYPE_DS1743_ALARM_MINUTES 0x1fff
+-#define TODC_TYPE_DS1743_ALARM_SECONDS 0x1fff
+-#define TODC_TYPE_DS1743_CENTURY 0x1ff8
+-#define TODC_TYPE_DS1743_FLAGS 0x1fff
+-#define TODC_TYPE_DS1743_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1743_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1746_NVRAM_SIZE 0x1fff8
+-#define TODC_TYPE_DS1746_SW_FLAGS 0
+-#define TODC_TYPE_DS1746_YEAR 0x1ffff
+-#define TODC_TYPE_DS1746_MONTH 0x1fffe
+-#define TODC_TYPE_DS1746_DOM 0x1fffd /* Day of Month */
+-#define TODC_TYPE_DS1746_DOW 0x1fffc /* Day of Week */
+-#define TODC_TYPE_DS1746_HOURS 0x1fffb
+-#define TODC_TYPE_DS1746_MINUTES 0x1fffa
+-#define TODC_TYPE_DS1746_SECONDS 0x1fff9
+-#define TODC_TYPE_DS1746_CNTL_B 0x1fff9
+-#define TODC_TYPE_DS1746_CNTL_A 0x1fff8 /* control_a R/W regs */
+-#define TODC_TYPE_DS1746_WATCHDOG 0x00000
+-#define TODC_TYPE_DS1746_INTERRUPTS 0x00000
+-#define TODC_TYPE_DS1746_ALARM_DATE 0x00000
+-#define TODC_TYPE_DS1746_ALARM_HOUR 0x00000
+-#define TODC_TYPE_DS1746_ALARM_MINUTES 0x00000
+-#define TODC_TYPE_DS1746_ALARM_SECONDS 0x00000
+-#define TODC_TYPE_DS1746_CENTURY 0x00000
+-#define TODC_TYPE_DS1746_FLAGS 0x00000
+-#define TODC_TYPE_DS1746_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1746_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1747_NVRAM_SIZE 0x7fff8
+-#define TODC_TYPE_DS1747_SW_FLAGS 0
+-#define TODC_TYPE_DS1747_YEAR 0x7ffff
+-#define TODC_TYPE_DS1747_MONTH 0x7fffe
+-#define TODC_TYPE_DS1747_DOM 0x7fffd /* Day of Month */
+-#define TODC_TYPE_DS1747_DOW 0x7fffc /* Day of Week */
+-#define TODC_TYPE_DS1747_HOURS 0x7fffb
+-#define TODC_TYPE_DS1747_MINUTES 0x7fffa
+-#define TODC_TYPE_DS1747_SECONDS 0x7fff9
+-#define TODC_TYPE_DS1747_CNTL_B 0x7fff9
+-#define TODC_TYPE_DS1747_CNTL_A 0x7fff8 /* control_a R/W regs */
+-#define TODC_TYPE_DS1747_WATCHDOG 0x00000
+-#define TODC_TYPE_DS1747_INTERRUPTS 0x00000
+-#define TODC_TYPE_DS1747_ALARM_DATE 0x00000
+-#define TODC_TYPE_DS1747_ALARM_HOUR 0x00000
+-#define TODC_TYPE_DS1747_ALARM_MINUTES 0x00000
+-#define TODC_TYPE_DS1747_ALARM_SECONDS 0x00000
+-#define TODC_TYPE_DS1747_CENTURY 0x00000
+-#define TODC_TYPE_DS1747_FLAGS 0x00000
+-#define TODC_TYPE_DS1747_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1747_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS17285_NVRAM_SIZE (0x1000-0x80) /* 4Kx8 NVRAM (minus RTC regs) */
+-#define TODC_TYPE_DS17285_SW_FLAGS TODC_FLAG_2_LEVEL_NVRAM
+-#define TODC_TYPE_DS17285_SECONDS (TODC_TYPE_DS17285_NVRAM_SIZE + 0x00)
+-#define TODC_TYPE_DS17285_ALARM_SECONDS (TODC_TYPE_DS17285_NVRAM_SIZE + 0x01)
+-#define TODC_TYPE_DS17285_MINUTES (TODC_TYPE_DS17285_NVRAM_SIZE + 0x02)
+-#define TODC_TYPE_DS17285_ALARM_MINUTES (TODC_TYPE_DS17285_NVRAM_SIZE + 0x03)
+-#define TODC_TYPE_DS17285_HOURS (TODC_TYPE_DS17285_NVRAM_SIZE + 0x04)
+-#define TODC_TYPE_DS17285_ALARM_HOUR (TODC_TYPE_DS17285_NVRAM_SIZE + 0x05)
+-#define TODC_TYPE_DS17285_DOW (TODC_TYPE_DS17285_NVRAM_SIZE + 0x06)
+-#define TODC_TYPE_DS17285_DOM (TODC_TYPE_DS17285_NVRAM_SIZE + 0x07)
+-#define TODC_TYPE_DS17285_MONTH (TODC_TYPE_DS17285_NVRAM_SIZE + 0x08)
+-#define TODC_TYPE_DS17285_YEAR (TODC_TYPE_DS17285_NVRAM_SIZE + 0x09)
+-#define TODC_TYPE_DS17285_CNTL_A (TODC_TYPE_DS17285_NVRAM_SIZE + 0x0A)
+-#define TODC_TYPE_DS17285_CNTL_B (TODC_TYPE_DS17285_NVRAM_SIZE + 0x0B)
+-#define TODC_TYPE_DS17285_CNTL_C (TODC_TYPE_DS17285_NVRAM_SIZE + 0x0C)
+-#define TODC_TYPE_DS17285_CNTL_D (TODC_TYPE_DS17285_NVRAM_SIZE + 0x0D)
+-#define TODC_TYPE_DS17285_WATCHDOG 0
+-#define TODC_TYPE_DS17285_INTERRUPTS 0
+-#define TODC_TYPE_DS17285_ALARM_DATE 0
+-#define TODC_TYPE_DS17285_CENTURY 0
+-#define TODC_TYPE_DS17285_FLAGS 0
+-#define TODC_TYPE_DS17285_NVRAM_ADDR_REG 0x50
+-#define TODC_TYPE_DS17285_NVRAM_DATA_REG 0x53
+-
+-#define TODC_TYPE_MC146818_NVRAM_SIZE 0 /* XXXX */
+-#define TODC_TYPE_MC146818_SW_FLAGS 0
+-#define TODC_TYPE_MC146818_YEAR 0x09
+-#define TODC_TYPE_MC146818_MONTH 0x08
+-#define TODC_TYPE_MC146818_DOM 0x07 /* Day of Month */
+-#define TODC_TYPE_MC146818_DOW 0x06 /* Day of Week */
+-#define TODC_TYPE_MC146818_HOURS 0x04
+-#define TODC_TYPE_MC146818_MINUTES 0x02
+-#define TODC_TYPE_MC146818_SECONDS 0x00
+-#define TODC_TYPE_MC146818_CNTL_B 0x0a
+-#define TODC_TYPE_MC146818_CNTL_A 0x0b /* control_a R/W regs */
+-#define TODC_TYPE_MC146818_WATCHDOG 0
+-#define TODC_TYPE_MC146818_INTERRUPTS 0x0c
+-#define TODC_TYPE_MC146818_ALARM_DATE 0xff
+-#define TODC_TYPE_MC146818_ALARM_HOUR 0x05
+-#define TODC_TYPE_MC146818_ALARM_MINUTES 0x03
+-#define TODC_TYPE_MC146818_ALARM_SECONDS 0x01
+-#define TODC_TYPE_MC146818_CENTURY 0xff
+-#define TODC_TYPE_MC146818_FLAGS 0xff
+-#define TODC_TYPE_MC146818_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_MC146818_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_PC97307_NVRAM_SIZE 0 /* No NVRAM? */
+-#define TODC_TYPE_PC97307_SW_FLAGS 0
+-#define TODC_TYPE_PC97307_YEAR 0x09
+-#define TODC_TYPE_PC97307_MONTH 0x08
+-#define TODC_TYPE_PC97307_DOM 0x07 /* Day of Month */
+-#define TODC_TYPE_PC97307_DOW 0x06 /* Day of Week */
+-#define TODC_TYPE_PC97307_HOURS 0x04
+-#define TODC_TYPE_PC97307_MINUTES 0x02
+-#define TODC_TYPE_PC97307_SECONDS 0x00
+-#define TODC_TYPE_PC97307_CNTL_B 0x0a
+-#define TODC_TYPE_PC97307_CNTL_A 0x0b /* control_a R/W regs */
+-#define TODC_TYPE_PC97307_WATCHDOG 0x0c
+-#define TODC_TYPE_PC97307_INTERRUPTS 0x0d
+-#define TODC_TYPE_PC97307_ALARM_DATE 0xff
+-#define TODC_TYPE_PC97307_ALARM_HOUR 0x05
+-#define TODC_TYPE_PC97307_ALARM_MINUTES 0x03
+-#define TODC_TYPE_PC97307_ALARM_SECONDS 0x01
+-#define TODC_TYPE_PC97307_CENTURY 0xff
+-#define TODC_TYPE_PC97307_FLAGS 0xff
+-#define TODC_TYPE_PC97307_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_PC97307_NVRAM_DATA_REG 0
+-
+-/*
+- * Define macros to allocate and init the todc_info_t table that will
+- * be used by the todc_time.c routines.
+- */
+-#define TODC_ALLOC() \
+- static todc_info_t todc_info_alloc; \
+- todc_info_t *todc_info = &todc_info_alloc;
+-
+-#define TODC_INIT(clock_type, as0, as1, data, bits) { \
+- todc_info->rtc_type = clock_type; \
+- \
+- todc_info->nvram_as0 = (unsigned int)(as0); \
+- todc_info->nvram_as1 = (unsigned int)(as1); \
+- todc_info->nvram_data = (unsigned int)(data); \
+- \
+- todc_info->as0_bits = (bits); \
+- \
+- todc_info->nvram_size = clock_type ##_NVRAM_SIZE; \
+- todc_info->sw_flags = clock_type ##_SW_FLAGS; \
+- \
+- todc_info->year = clock_type ##_YEAR; \
+- todc_info->month = clock_type ##_MONTH; \
+- todc_info->day_of_month = clock_type ##_DOM; \
+- todc_info->day_of_week = clock_type ##_DOW; \
+- todc_info->hours = clock_type ##_HOURS; \
+- todc_info->minutes = clock_type ##_MINUTES; \
+- todc_info->seconds = clock_type ##_SECONDS; \
+- todc_info->control_b = clock_type ##_CNTL_B; \
+- todc_info->control_a = clock_type ##_CNTL_A; \
+- todc_info->watchdog = clock_type ##_WATCHDOG; \
+- todc_info->interrupts = clock_type ##_INTERRUPTS; \
+- todc_info->alarm_date = clock_type ##_ALARM_DATE; \
+- todc_info->alarm_hour = clock_type ##_ALARM_HOUR; \
+- todc_info->alarm_minutes = clock_type ##_ALARM_MINUTES; \
+- todc_info->alarm_seconds = clock_type ##_ALARM_SECONDS; \
+- todc_info->century = clock_type ##_CENTURY; \
+- todc_info->flags = clock_type ##_FLAGS; \
+- \
+- todc_info->nvram_addr_reg = clock_type ##_NVRAM_ADDR_REG; \
+- todc_info->nvram_data_reg = clock_type ##_NVRAM_DATA_REG; \
+-}
+-
+-extern todc_info_t *todc_info;
+-
+-unsigned char todc_direct_read_val(int addr);
+-void todc_direct_write_val(int addr, unsigned char val);
+-unsigned char todc_m48txx_read_val(int addr);
+-void todc_m48txx_write_val(int addr, unsigned char val);
+-unsigned char todc_mc146818_read_val(int addr);
+-void todc_mc146818_write_val(int addr, unsigned char val);
+-
+-long todc_time_init(void);
+-void todc_get_rtc_time(struct rtc_time *);
+-int todc_set_rtc_time(struct rtc_time *);
+-void todc_calibrate_decr(void);
+-
+-#endif /* __PPC_KERNEL_TODC_H */
+Index: working-2.6/arch/powerpc/sysdev/Makefile
+===================================================================
+--- working-2.6.orig/arch/powerpc/sysdev/Makefile 2006-10-03 14:57:15.000000000 +1000
++++ working-2.6/arch/powerpc/sysdev/Makefile 2006-10-03 16:31:48.000000000 +1000
+@@ -10,7 +10,6 @@ obj-$(CONFIG_40x) += dcr.o
+ obj-$(CONFIG_U3_DART) += dart_iommu.o
+ obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o
+ obj-$(CONFIG_FSL_SOC) += fsl_soc.o
+-obj-$(CONFIG_PPC_TODC) += todc.o
+ obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o
+
+ ifeq ($(CONFIG_PPC_MERGE),y)
+Index: working-2.6/arch/powerpc/Kconfig
+===================================================================
+--- working-2.6.orig/arch/powerpc/Kconfig 2006-10-03 16:26:20.000000000 +1000
++++ working-2.6/arch/powerpc/Kconfig 2006-10-03 16:33:10.000000000 +1000
+@@ -584,12 +584,6 @@ config TAU_AVERAGE
+
+ If in doubt, say N here.
+
+-config PPC_TODC
+- depends on EMBEDDED6xx
+- bool "Generic Time-of-day Clock (TODC) support"
+- ---help---
+- This adds support for many TODC/RTC chips.
+-
+ endmenu
+
+ source arch/powerpc/platforms/embedded6xx/Kconfig
+
+
diff --git a/packages/linux/linux-dht-walnut_2.6.20.bb b/packages/linux/linux-dht-walnut_2.6.20.bb
new file mode 100644
index 0000000000..4a93954dfe
--- /dev/null
+++ b/packages/linux/linux-dht-walnut_2.6.20.bb
@@ -0,0 +1,72 @@
+SECTION = "kernel"
+DESCRIPTION = "Linux kernel for DHT-Walnut (ppc) machine"
+LICENSE = "GPL"
+PR = "r1"
+DEPENDS = "u-boot"
+
+KERNEL_CCSUFFIX = "-3.4.4"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://dht-walnut_defconfig"
+
+
+S = "${WORKDIR}/linux-${PV}"
+
+inherit kernel
+
+
+FILES_kernel-image = "/boot/zImage.elf"
+
+export OS = "Linux"
+ARCH = "ppc"
+KERNEL_IMAGETYPE = "zImage"
+KERNEL_OUTPUT = "arch/ppc/boot/images/zImage.elf"
+
+
+
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/dht-walnut_defconfig ${S}/.config
+}
+
+
+do_stage_append () {
+#need ppc platforms includes + friends in order for external kernel modules to compile as headers as still split
+
+ install -d ${STAGING_KERNEL_DIR}/arch/
+ cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+
+ cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+}
+
+
+
+
+
+do_install_append () {
+ install -d ${DEPLOY_DIR}/images
+ install -m 0755 arch/ppc/boot/images/zImage.elf ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.elf
+ install -m 0755 vmlinux ${DEPLOY_DIR}/images/
+ powerpc-${TARGET_OS}-objcopy -O binary -R .note -R .comment -S ${DEPLOY_DIR}/images/vmlinux ${DEPLOY_DIR}/images/linux.bin
+ gzip -f -9 ${DEPLOY_DIR}/images/linux.bin
+ mkimage -A ppc -O linux -T kernel -C gzip -a 0 -e 0 -n "ppc405"+${PV} -d ${DEPLOY_DIR}/images/linux.bin.gz ${DEPLOY_DIR}/images/uImage-${PV}-${MACHINE}-${DATETIME}.bin
+ rm ${DEPLOY_DIR}/images/vmlinux
+ rm ${DEPLOY_DIR}/images/linux.bin.gz
+
+
+}
+
+
+pkg_postinst_kernel () {
+ true
+}
+
+pkg_postrm_kernel () {
+ true
+}
+
+
+
+
diff --git a/packages/linux/linux-efika-2.6.20.11/.mtn2git_empty b/packages/linux/linux-efika-2.6.20.11/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20.11/.mtn2git_empty
diff --git a/packages/linux/linux-efika-2.6.20.11/sched-cfs-v9-v2.6.20.11.patch b/packages/linux/linux-efika-2.6.20.11/sched-cfs-v9-v2.6.20.11.patch
new file mode 100644
index 0000000000..29071a99ac
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20.11/sched-cfs-v9-v2.6.20.11.patch
@@ -0,0 +1,5590 @@
+This is the Complete Fair Scheduler (CFS) v9 patch for
+linux 2.6.20.10 patch (rediffed cleanly against .11).
+
+http://people.redhat.com/mingo/cfs-scheduler/
+
+Index: linux-cfs-2.6.20.8.q/Documentation/kernel-parameters.txt
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/Documentation/kernel-parameters.txt
++++ linux-cfs-2.6.20.8.q/Documentation/kernel-parameters.txt
+@@ -914,49 +914,6 @@ and is between 256 and 4096 characters.
+
+ mga= [HW,DRM]
+
+- migration_cost=
+- [KNL,SMP] debug: override scheduler migration costs
+- Format: <level-1-usecs>,<level-2-usecs>,...
+- This debugging option can be used to override the
+- default scheduler migration cost matrix. The numbers
+- are indexed by 'CPU domain distance'.
+- E.g. migration_cost=1000,2000,3000 on an SMT NUMA
+- box will set up an intra-core migration cost of
+- 1 msec, an inter-core migration cost of 2 msecs,
+- and an inter-node migration cost of 3 msecs.
+-
+- WARNING: using the wrong values here can break
+- scheduler performance, so it's only for scheduler
+- development purposes, not production environments.
+-
+- migration_debug=
+- [KNL,SMP] migration cost auto-detect verbosity
+- Format=<0|1|2>
+- If a system's migration matrix reported at bootup
+- seems erroneous then this option can be used to
+- increase verbosity of the detection process.
+- We default to 0 (no extra messages), 1 will print
+- some more information, and 2 will be really
+- verbose (probably only useful if you also have a
+- serial console attached to the system).
+-
+- migration_factor=
+- [KNL,SMP] multiply/divide migration costs by a factor
+- Format=<percent>
+- This debug option can be used to proportionally
+- increase or decrease the auto-detected migration
+- costs for all entries of the migration matrix.
+- E.g. migration_factor=150 will increase migration
+- costs by 50%. (and thus the scheduler will be less
+- eager migrating cache-hot tasks)
+- migration_factor=80 will decrease migration costs
+- by 20%. (thus the scheduler will be more eager to
+- migrate tasks)
+-
+- WARNING: using the wrong values here can break
+- scheduler performance, so it's only for scheduler
+- development purposes, not production environments.
+-
+ mousedev.tap_time=
+ [MOUSE] Maximum time between finger touching and
+ leaving touchpad surface for touch to be considered
+Index: linux-cfs-2.6.20.8.q/Documentation/sched-design-CFS.txt
+===================================================================
+--- /dev/null
++++ linux-cfs-2.6.20.8.q/Documentation/sched-design-CFS.txt
+@@ -0,0 +1,107 @@
++[announce] [patch] Modular Scheduler Core and Completely Fair Scheduler [CFS]
++
++i'm pleased to announce the first release of the "Modular Scheduler Core
++and Completely Fair Scheduler [CFS]" patchset:
++
++ http://redhat.com/~mingo/cfs-scheduler/
++
++This project is a complete rewrite of the Linux task scheduler. My goal
++is to address various feature requests and to fix deficiencies in the
++vanilla scheduler that were suggested/found in the past few years, both
++for desktop scheduling and for server scheduling workloads.
++
++[ QuickStart: apply the patch, recompile, reboot. The new scheduler
++ will be active by default and all tasks will default to the
++ SCHED_NORMAL interactive scheduling class. ]
++
++Highlights are:
++
++ - the introduction of Scheduling Classes: an extensible hierarchy of
++ scheduler modules. These modules encapsulate scheduling policy
++ details and are handled by the scheduler core without the core
++ code assuming about them too much.
++
++ - sched_fair.c implements the 'CFS desktop scheduler': it is a
++ replacement for the vanilla scheduler's SCHED_OTHER interactivity
++ code.
++
++ i'd like to give credit to Con Kolivas for the general approach here:
++ he has proven via RSDL/SD that 'fair scheduling' is possible and that
++ it results in better desktop scheduling. Kudos Con!
++
++ The CFS patch uses a completely different approach and implementation
++ from RSDL/SD. My goal was to make CFS's interactivity quality exceed
++ that of RSDL/SD, which is a high standard to meet :-) Testing
++ feedback is welcome to decide this one way or another. [ and, in any
++ case, all of SD's logic could be added via a kernel/sched_sd.c module
++ as well, if Con is interested in such an approach. ]
++
++ CFS's design is quite radical: it does not use runqueues, it uses a
++ time-ordered rbtree to build a 'timeline' of future task execution,
++ and thus has no 'array switch' artifacts (by which both the vanilla
++ scheduler and RSDL/SD are affected).
++
++ CFS uses nanosecond granularity accounting and does not rely on any
++ jiffies or other HZ detail. Thus the CFS scheduler has no notion of
++ 'timeslices' and has no heuristics whatsoever. There is only one
++ central tunable:
++
++ /proc/sys/kernel/sched_granularity_ns
++
++ which can be used to tune the scheduler from 'desktop' (low
++ latencies) to 'server' (good batching) workloads. It defaults to a
++ setting suitable for desktop workloads. SCHED_BATCH is handled by the
++ CFS scheduler module too.
++
++ due to its design, the CFS scheduler is not prone to any of the
++ 'attacks' that exist today against the heuristics of the stock
++ scheduler: fiftyp.c, thud.c, chew.c, ring-test.c, massive_intr.c all
++ work fine and do not impact interactivity and produce the expected
++ behavior.
++
++ the CFS scheduler has a much stronger handling of nice levels and
++ SCHED_BATCH: both types of workloads should be isolated much more
++ agressively than under the vanilla scheduler.
++
++ ( another rdetail: due to nanosec accounting and timeline sorting,
++ sched_yield() support is very simple under CFS, and in fact under
++ CFS sched_yield() behaves much better than under any other
++ scheduler i have tested so far. )
++
++ - sched_rt.c implements SCHED_FIFO and SCHED_RR semantics, in a simpler
++ way than the vanilla scheduler does. It uses 100 runqueues (for all
++ 100 RT priority levels, instead of 140 in the vanilla scheduler)
++ and it needs no expired array.
++
++ - reworked/sanitized SMP load-balancing: the runqueue-walking
++ assumptions are gone from the load-balancing code now, and
++ iterators of the scheduling modules are used. The balancing code got
++ quite a bit simpler as a result.
++
++the core scheduler got smaller by more than 700 lines:
++
++ kernel/sched.c | 1454 ++++++++++++++++------------------------------------------------
++ 1 file changed, 372 insertions(+), 1082 deletions(-)
++
++and even adding all the scheduling modules, the total size impact is
++relatively small:
++
++ 18 files changed, 1454 insertions(+), 1133 deletions(-)
++
++most of the increase is due to extensive comments. The kernel size
++impact is in fact a small negative:
++
++ text data bss dec hex filename
++ 23366 4001 24 27391 6aff kernel/sched.o.vanilla
++ 24159 2705 56 26920 6928 kernel/sched.o.CFS
++
++(this is mainly due to the benefit of getting rid of the expired array
++and its data structure overhead.)
++
++thanks go to Thomas Gleixner and Arjan van de Ven for review of this
++patchset.
++
++as usual, any sort of feedback, bugreports, fixes and suggestions are
++more than welcome,
++
++ Ingo
+Index: linux-cfs-2.6.20.8.q/Makefile
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/Makefile
++++ linux-cfs-2.6.20.8.q/Makefile
+@@ -1,7 +1,7 @@
+ VERSION = 2
+ PATCHLEVEL = 6
+ SUBLEVEL = 20
+-EXTRAVERSION = .11
++EXTRAVERSION = .11-cfs-v9
+ NAME = Homicidal Dwarf Hamster
+
+ # *DOCUMENTATION*
+Index: linux-cfs-2.6.20.8.q/arch/i386/kernel/smpboot.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/arch/i386/kernel/smpboot.c
++++ linux-cfs-2.6.20.8.q/arch/i386/kernel/smpboot.c
+@@ -1132,18 +1132,6 @@ exit:
+ }
+ #endif
+
+-static void smp_tune_scheduling(void)
+-{
+- unsigned long cachesize; /* kB */
+-
+- if (cpu_khz) {
+- cachesize = boot_cpu_data.x86_cache_size;
+-
+- if (cachesize > 0)
+- max_cache_size = cachesize * 1024;
+- }
+-}
+-
+ /*
+ * Cycle through the processors sending APIC IPIs to boot each.
+ */
+@@ -1172,7 +1160,6 @@ static void __init smp_boot_cpus(unsigne
+ x86_cpu_to_apicid[0] = boot_cpu_physical_apicid;
+
+ current_thread_info()->cpu = 0;
+- smp_tune_scheduling();
+
+ set_cpu_sibling_map(0);
+
+Index: linux-cfs-2.6.20.8.q/arch/i386/kernel/syscall_table.S
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/arch/i386/kernel/syscall_table.S
++++ linux-cfs-2.6.20.8.q/arch/i386/kernel/syscall_table.S
+@@ -319,3 +319,4 @@ ENTRY(sys_call_table)
+ .long sys_move_pages
+ .long sys_getcpu
+ .long sys_epoll_pwait
++ .long sys_sched_yield_to /* 320 */
+Index: linux-cfs-2.6.20.8.q/arch/i386/kernel/tsc.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/arch/i386/kernel/tsc.c
++++ linux-cfs-2.6.20.8.q/arch/i386/kernel/tsc.c
+@@ -61,6 +61,8 @@ static inline int check_tsc_unstable(voi
+
+ void mark_tsc_unstable(void)
+ {
++ sched_clock_unstable_event();
++
+ tsc_unstable = 1;
+ }
+ EXPORT_SYMBOL_GPL(mark_tsc_unstable);
+@@ -107,13 +109,7 @@ unsigned long long sched_clock(void)
+ {
+ unsigned long long this_offset;
+
+- /*
+- * in the NUMA case we dont use the TSC as they are not
+- * synchronized across all CPUs.
+- */
+-#ifndef CONFIG_NUMA
+- if (!cpu_khz || check_tsc_unstable())
+-#endif
++ if (!cpu_khz || !cpu_has_tsc)
+ /* no locking but a rare wrong value is not a big deal */
+ return (jiffies_64 - INITIAL_JIFFIES) * (1000000000 / HZ);
+
+Index: linux-cfs-2.6.20.8.q/arch/ia64/kernel/setup.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/arch/ia64/kernel/setup.c
++++ linux-cfs-2.6.20.8.q/arch/ia64/kernel/setup.c
+@@ -773,7 +773,6 @@ static void __cpuinit
+ get_max_cacheline_size (void)
+ {
+ unsigned long line_size, max = 1;
+- unsigned int cache_size = 0;
+ u64 l, levels, unique_caches;
+ pal_cache_config_info_t cci;
+ s64 status;
+@@ -803,8 +802,6 @@ get_max_cacheline_size (void)
+ line_size = 1 << cci.pcci_line_size;
+ if (line_size > max)
+ max = line_size;
+- if (cache_size < cci.pcci_cache_size)
+- cache_size = cci.pcci_cache_size;
+ if (!cci.pcci_unified) {
+ status = ia64_pal_cache_config_info(l,
+ /* cache_type (instruction)= */ 1,
+@@ -821,9 +818,6 @@ get_max_cacheline_size (void)
+ ia64_i_cache_stride_shift = cci.pcci_stride;
+ }
+ out:
+-#ifdef CONFIG_SMP
+- max_cache_size = max(max_cache_size, cache_size);
+-#endif
+ if (max > ia64_max_cacheline_size)
+ ia64_max_cacheline_size = max;
+ }
+Index: linux-cfs-2.6.20.8.q/arch/mips/kernel/smp.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/arch/mips/kernel/smp.c
++++ linux-cfs-2.6.20.8.q/arch/mips/kernel/smp.c
+@@ -245,7 +245,6 @@ void __init smp_prepare_cpus(unsigned in
+ {
+ init_new_context(current, &init_mm);
+ current_thread_info()->cpu = 0;
+- smp_tune_scheduling();
+ plat_prepare_cpus(max_cpus);
+ #ifndef CONFIG_HOTPLUG_CPU
+ cpu_present_map = cpu_possible_map;
+Index: linux-cfs-2.6.20.8.q/arch/sparc/kernel/smp.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/arch/sparc/kernel/smp.c
++++ linux-cfs-2.6.20.8.q/arch/sparc/kernel/smp.c
+@@ -69,16 +69,6 @@ void __cpuinit smp_store_cpu_info(int id
+ cpu_data(id).prom_node = cpu_node;
+ cpu_data(id).mid = cpu_get_hwmid(cpu_node);
+
+- /* this is required to tune the scheduler correctly */
+- /* is it possible to have CPUs with different cache sizes? */
+- if (id == boot_cpu_id) {
+- int cache_line,cache_nlines;
+- cache_line = 0x20;
+- cache_line = prom_getintdefault(cpu_node, "ecache-line-size", cache_line);
+- cache_nlines = 0x8000;
+- cache_nlines = prom_getintdefault(cpu_node, "ecache-nlines", cache_nlines);
+- max_cache_size = cache_line * cache_nlines;
+- }
+ if (cpu_data(id).mid < 0)
+ panic("No MID found for CPU%d at node 0x%08d", id, cpu_node);
+ }
+Index: linux-cfs-2.6.20.8.q/arch/sparc64/kernel/smp.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/arch/sparc64/kernel/smp.c
++++ linux-cfs-2.6.20.8.q/arch/sparc64/kernel/smp.c
+@@ -1293,41 +1293,6 @@ int setup_profiling_timer(unsigned int m
+ return 0;
+ }
+
+-static void __init smp_tune_scheduling(void)
+-{
+- struct device_node *dp;
+- int instance;
+- unsigned int def, smallest = ~0U;
+-
+- def = ((tlb_type == hypervisor) ?
+- (3 * 1024 * 1024) :
+- (4 * 1024 * 1024));
+-
+- instance = 0;
+- while (!cpu_find_by_instance(instance, &dp, NULL)) {
+- unsigned int val;
+-
+- val = of_getintprop_default(dp, "ecache-size", def);
+- if (val < smallest)
+- smallest = val;
+-
+- instance++;
+- }
+-
+- /* Any value less than 256K is nonsense. */
+- if (smallest < (256U * 1024U))
+- smallest = 256 * 1024;
+-
+- max_cache_size = smallest;
+-
+- if (smallest < 1U * 1024U * 1024U)
+- printk(KERN_INFO "Using max_cache_size of %uKB\n",
+- smallest / 1024U);
+- else
+- printk(KERN_INFO "Using max_cache_size of %uMB\n",
+- smallest / 1024U / 1024U);
+-}
+-
+ /* Constrain the number of cpus to max_cpus. */
+ void __init smp_prepare_cpus(unsigned int max_cpus)
+ {
+@@ -1363,7 +1328,6 @@ void __init smp_prepare_cpus(unsigned in
+ }
+
+ smp_store_cpu_info(boot_cpu_id);
+- smp_tune_scheduling();
+ }
+
+ /* Set this up early so that things like the scheduler can init
+Index: linux-cfs-2.6.20.8.q/fs/proc/array.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/fs/proc/array.c
++++ linux-cfs-2.6.20.8.q/fs/proc/array.c
+@@ -165,7 +165,6 @@ static inline char * task_state(struct t
+ rcu_read_lock();
+ buffer += sprintf(buffer,
+ "State:\t%s\n"
+- "SleepAVG:\t%lu%%\n"
+ "Tgid:\t%d\n"
+ "Pid:\t%d\n"
+ "PPid:\t%d\n"
+@@ -173,9 +172,8 @@ static inline char * task_state(struct t
+ "Uid:\t%d\t%d\t%d\t%d\n"
+ "Gid:\t%d\t%d\t%d\t%d\n",
+ get_task_state(p),
+- (p->sleep_avg/1024)*100/(1020000000/1024),
+- p->tgid, p->pid,
+- pid_alive(p) ? rcu_dereference(p->real_parent)->tgid : 0,
++ p->tgid, p->pid,
++ pid_alive(p) ? rcu_dereference(p->real_parent)->tgid : 0,
+ pid_alive(p) && p->ptrace ? rcu_dereference(p->parent)->pid : 0,
+ p->uid, p->euid, p->suid, p->fsuid,
+ p->gid, p->egid, p->sgid, p->fsgid);
+@@ -312,6 +310,11 @@ int proc_pid_status(struct task_struct *
+ return buffer - orig;
+ }
+
++int proc_pid_sched(struct task_struct *task, char *buffer)
++{
++ return sched_print_task_state(task, buffer) - buffer;
++}
++
+ static int do_task_stat(struct task_struct *task, char * buffer, int whole)
+ {
+ unsigned long vsize, eip, esp, wchan = ~0UL;
+Index: linux-cfs-2.6.20.8.q/fs/proc/base.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/fs/proc/base.c
++++ linux-cfs-2.6.20.8.q/fs/proc/base.c
+@@ -1839,6 +1839,7 @@ static struct pid_entry tgid_base_stuff[
+ INF("environ", S_IRUSR, pid_environ),
+ INF("auxv", S_IRUSR, pid_auxv),
+ INF("status", S_IRUGO, pid_status),
++ INF("sched", S_IRUGO, pid_sched),
+ INF("cmdline", S_IRUGO, pid_cmdline),
+ INF("stat", S_IRUGO, tgid_stat),
+ INF("statm", S_IRUGO, pid_statm),
+@@ -2121,6 +2122,7 @@ static struct pid_entry tid_base_stuff[]
+ INF("environ", S_IRUSR, pid_environ),
+ INF("auxv", S_IRUSR, pid_auxv),
+ INF("status", S_IRUGO, pid_status),
++ INF("sched", S_IRUGO, pid_sched),
+ INF("cmdline", S_IRUGO, pid_cmdline),
+ INF("stat", S_IRUGO, tid_stat),
+ INF("statm", S_IRUGO, pid_statm),
+Index: linux-cfs-2.6.20.8.q/fs/proc/internal.h
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/fs/proc/internal.h
++++ linux-cfs-2.6.20.8.q/fs/proc/internal.h
+@@ -36,6 +36,7 @@ extern int proc_exe_link(struct inode *,
+ extern int proc_tid_stat(struct task_struct *, char *);
+ extern int proc_tgid_stat(struct task_struct *, char *);
+ extern int proc_pid_status(struct task_struct *, char *);
++extern int proc_pid_sched(struct task_struct *, char *);
+ extern int proc_pid_statm(struct task_struct *, char *);
+
+ extern struct file_operations proc_maps_operations;
+Index: linux-cfs-2.6.20.8.q/include/asm-generic/bitops/sched.h
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/include/asm-generic/bitops/sched.h
++++ linux-cfs-2.6.20.8.q/include/asm-generic/bitops/sched.h
+@@ -6,28 +6,23 @@
+
+ /*
+ * Every architecture must define this function. It's the fastest
+- * way of searching a 140-bit bitmap where the first 100 bits are
+- * unlikely to be set. It's guaranteed that at least one of the 140
+- * bits is cleared.
++ * way of searching a 100-bit bitmap. It's guaranteed that at least
++ * one of the 100 bits is cleared.
+ */
+ static inline int sched_find_first_bit(const unsigned long *b)
+ {
+ #if BITS_PER_LONG == 64
+- if (unlikely(b[0]))
++ if (b[0])
+ return __ffs(b[0]);
+- if (likely(b[1]))
+- return __ffs(b[1]) + 64;
+- return __ffs(b[2]) + 128;
++ return __ffs(b[1]) + 64;
+ #elif BITS_PER_LONG == 32
+- if (unlikely(b[0]))
++ if (b[0])
+ return __ffs(b[0]);
+- if (unlikely(b[1]))
++ if (b[1])
+ return __ffs(b[1]) + 32;
+- if (unlikely(b[2]))
++ if (b[2])
+ return __ffs(b[2]) + 64;
+- if (b[3])
+- return __ffs(b[3]) + 96;
+- return __ffs(b[4]) + 128;
++ return __ffs(b[3]) + 96;
+ #else
+ #error BITS_PER_LONG not defined
+ #endif
+Index: linux-cfs-2.6.20.8.q/include/asm-i386/topology.h
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/include/asm-i386/topology.h
++++ linux-cfs-2.6.20.8.q/include/asm-i386/topology.h
+@@ -85,7 +85,6 @@ static inline int node_to_first_cpu(int
+ .idle_idx = 1, \
+ .newidle_idx = 2, \
+ .wake_idx = 1, \
+- .per_cpu_gain = 100, \
+ .flags = SD_LOAD_BALANCE \
+ | SD_BALANCE_EXEC \
+ | SD_BALANCE_FORK \
+Index: linux-cfs-2.6.20.8.q/include/asm-i386/unistd.h
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/include/asm-i386/unistd.h
++++ linux-cfs-2.6.20.8.q/include/asm-i386/unistd.h
+@@ -325,10 +325,11 @@
+ #define __NR_move_pages 317
+ #define __NR_getcpu 318
+ #define __NR_epoll_pwait 319
++#define __NR_sched_yield_to 320
+
+ #ifdef __KERNEL__
+
+-#define NR_syscalls 320
++#define NR_syscalls 321
+
+ #define __ARCH_WANT_IPC_PARSE_VERSION
+ #define __ARCH_WANT_OLD_READDIR
+Index: linux-cfs-2.6.20.8.q/include/asm-ia64/topology.h
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/include/asm-ia64/topology.h
++++ linux-cfs-2.6.20.8.q/include/asm-ia64/topology.h
+@@ -65,7 +65,6 @@ void build_cpu_to_node_map(void);
+ .max_interval = 4, \
+ .busy_factor = 64, \
+ .imbalance_pct = 125, \
+- .per_cpu_gain = 100, \
+ .cache_nice_tries = 2, \
+ .busy_idx = 2, \
+ .idle_idx = 1, \
+@@ -97,7 +96,6 @@ void build_cpu_to_node_map(void);
+ .newidle_idx = 0, /* unused */ \
+ .wake_idx = 1, \
+ .forkexec_idx = 1, \
+- .per_cpu_gain = 100, \
+ .flags = SD_LOAD_BALANCE \
+ | SD_BALANCE_EXEC \
+ | SD_BALANCE_FORK \
+Index: linux-cfs-2.6.20.8.q/include/asm-mips/mach-ip27/topology.h
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/include/asm-mips/mach-ip27/topology.h
++++ linux-cfs-2.6.20.8.q/include/asm-mips/mach-ip27/topology.h
+@@ -28,7 +28,6 @@ extern unsigned char __node_distances[MA
+ .busy_factor = 32, \
+ .imbalance_pct = 125, \
+ .cache_nice_tries = 1, \
+- .per_cpu_gain = 100, \
+ .flags = SD_LOAD_BALANCE \
+ | SD_BALANCE_EXEC \
+ | SD_WAKE_BALANCE, \
+Index: linux-cfs-2.6.20.8.q/include/asm-powerpc/topology.h
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/include/asm-powerpc/topology.h
++++ linux-cfs-2.6.20.8.q/include/asm-powerpc/topology.h
+@@ -57,7 +57,6 @@ static inline int pcibus_to_node(struct
+ .busy_factor = 32, \
+ .imbalance_pct = 125, \
+ .cache_nice_tries = 1, \
+- .per_cpu_gain = 100, \
+ .busy_idx = 3, \
+ .idle_idx = 1, \
+ .newidle_idx = 2, \
+Index: linux-cfs-2.6.20.8.q/include/asm-x86_64/topology.h
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/include/asm-x86_64/topology.h
++++ linux-cfs-2.6.20.8.q/include/asm-x86_64/topology.h
+@@ -43,7 +43,6 @@ extern int __node_distance(int, int);
+ .newidle_idx = 0, \
+ .wake_idx = 1, \
+ .forkexec_idx = 1, \
+- .per_cpu_gain = 100, \
+ .flags = SD_LOAD_BALANCE \
+ | SD_BALANCE_FORK \
+ | SD_BALANCE_EXEC \
+Index: linux-cfs-2.6.20.8.q/include/asm-x86_64/unistd.h
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/include/asm-x86_64/unistd.h
++++ linux-cfs-2.6.20.8.q/include/asm-x86_64/unistd.h
+@@ -619,8 +619,10 @@ __SYSCALL(__NR_sync_file_range, sys_sync
+ __SYSCALL(__NR_vmsplice, sys_vmsplice)
+ #define __NR_move_pages 279
+ __SYSCALL(__NR_move_pages, sys_move_pages)
++#define __NR_sched_yield_to 280
++__SYSCALL(__NR_sched_yield_to, sys_sched_yield_to)
+
+-#define __NR_syscall_max __NR_move_pages
++#define __NR_syscall_max __NR_sched_yield_to
+
+ #ifndef __NO_STUBS
+ #define __ARCH_WANT_OLD_READDIR
+Index: linux-cfs-2.6.20.8.q/include/linux/hardirq.h
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/include/linux/hardirq.h
++++ linux-cfs-2.6.20.8.q/include/linux/hardirq.h
+@@ -79,6 +79,19 @@
+ #endif
+
+ #ifdef CONFIG_PREEMPT
++# define PREEMPT_CHECK_OFFSET 1
++#else
++# define PREEMPT_CHECK_OFFSET 0
++#endif
++
++/*
++ * Check whether we were atomic before we did preempt_disable():
++ * (used by the scheduler)
++ */
++#define in_atomic_preempt_off() \
++ ((preempt_count() & ~PREEMPT_ACTIVE) != PREEMPT_CHECK_OFFSET)
++
++#ifdef CONFIG_PREEMPT
+ # define preemptible() (preempt_count() == 0 && !irqs_disabled())
+ # define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1)
+ #else
+Index: linux-cfs-2.6.20.8.q/include/linux/ktime.h
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/include/linux/ktime.h
++++ linux-cfs-2.6.20.8.q/include/linux/ktime.h
+@@ -274,4 +274,6 @@ extern void ktime_get_ts(struct timespec
+ /* Get the real (wall-) time in timespec format: */
+ #define ktime_get_real_ts(ts) getnstimeofday(ts)
+
++extern ktime_t ktime_get(void);
++
+ #endif
+Index: linux-cfs-2.6.20.8.q/include/linux/sched.h
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/include/linux/sched.h
++++ linux-cfs-2.6.20.8.q/include/linux/sched.h
+@@ -2,7 +2,6 @@
+ #define _LINUX_SCHED_H
+
+ #include <linux/auxvec.h> /* For AT_VECTOR_SIZE */
+-
+ /*
+ * cloning flags:
+ */
+@@ -37,6 +36,8 @@
+
+ #ifdef __KERNEL__
+
++#include <linux/rbtree.h> /* For run_node */
++
+ struct sched_param {
+ int sched_priority;
+ };
+@@ -196,13 +197,13 @@ extern void init_idle(struct task_struct
+ extern cpumask_t nohz_cpu_mask;
+
+ /*
+- * Only dump TASK_* tasks. (-1 for all tasks)
++ * Only dump TASK_* tasks. (0 for all tasks)
+ */
+ extern void show_state_filter(unsigned long state_filter);
+
+ static inline void show_state(void)
+ {
+- show_state_filter(-1);
++ show_state_filter(0);
+ }
+
+ extern void show_regs(struct pt_regs *);
+@@ -464,7 +465,7 @@ struct signal_struct {
+ * from jiffies_to_ns(utime + stime) if sched_clock uses something
+ * other than jiffies.)
+ */
+- unsigned long long sched_time;
++ unsigned long long sum_sched_runtime;
+
+ /*
+ * We don't bother to synchronize most readers of this at all,
+@@ -524,6 +525,7 @@ struct signal_struct {
+ #define MAX_RT_PRIO MAX_USER_RT_PRIO
+
+ #define MAX_PRIO (MAX_RT_PRIO + 40)
++#define DEFAULT_PRIO (MAX_RT_PRIO + 20)
+
+ #define rt_prio(prio) unlikely((prio) < MAX_RT_PRIO)
+ #define rt_task(p) rt_prio((p)->prio)
+@@ -635,7 +637,14 @@ enum idle_type
+ /*
+ * sched-domains (multiprocessor balancing) declarations:
+ */
+-#define SCHED_LOAD_SCALE 128UL /* increase resolution of load */
++
++/*
++ * Increase resolution of nice-level calculations:
++ */
++#define SCHED_LOAD_SHIFT 10
++#define SCHED_LOAD_SCALE (1UL << SCHED_LOAD_SHIFT)
++
++#define SCHED_LOAD_SCALE_FUZZ (SCHED_LOAD_SCALE >> 5)
+
+ #ifdef CONFIG_SMP
+ #define SD_LOAD_BALANCE 1 /* Do load balancing on this domain. */
+@@ -684,7 +693,6 @@ struct sched_domain {
+ unsigned int imbalance_pct; /* No balance until over watermark */
+ unsigned long long cache_hot_time; /* Task considered cache hot (ns) */
+ unsigned int cache_nice_tries; /* Leave cache hot tasks for # tries */
+- unsigned int per_cpu_gain; /* CPU % gained by adding domain cpus */
+ unsigned int busy_idx;
+ unsigned int idle_idx;
+ unsigned int newidle_idx;
+@@ -733,12 +741,6 @@ struct sched_domain {
+ extern int partition_sched_domains(cpumask_t *partition1,
+ cpumask_t *partition2);
+
+-/*
+- * Maximum cache size the migration-costs auto-tuning code will
+- * search from:
+- */
+-extern unsigned int max_cache_size;
+-
+ #endif /* CONFIG_SMP */
+
+
+@@ -789,14 +791,28 @@ struct mempolicy;
+ struct pipe_inode_info;
+ struct uts_namespace;
+
+-enum sleep_type {
+- SLEEP_NORMAL,
+- SLEEP_NONINTERACTIVE,
+- SLEEP_INTERACTIVE,
+- SLEEP_INTERRUPTED,
+-};
++struct rq;
+
+-struct prio_array;
++struct sched_class {
++ struct sched_class *next;
++
++ void (*enqueue_task) (struct rq *rq, struct task_struct *p,
++ int wakeup, u64 now);
++ void (*dequeue_task) (struct rq *rq, struct task_struct *p,
++ int sleep, u64 now);
++ void (*yield_task) (struct rq *rq, struct task_struct *p,
++ struct task_struct *p_to);
++
++ void (*check_preempt_curr) (struct rq *rq, struct task_struct *p);
++
++ struct task_struct * (*pick_next_task) (struct rq *rq, u64 now);
++ void (*put_prev_task) (struct rq *rq, struct task_struct *p, u64 now);
++
++ struct task_struct * (*load_balance_start) (struct rq *rq);
++ struct task_struct * (*load_balance_next) (struct rq *rq);
++ void (*task_tick) (struct rq *rq, struct task_struct *p);
++ void (*task_new) (struct rq *rq, struct task_struct *p);
++};
+
+ struct task_struct {
+ volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
+@@ -813,26 +829,45 @@ struct task_struct {
+ #endif
+ #endif
+ int load_weight; /* for niceness load balancing purposes */
++ int load_shift;
++
+ int prio, static_prio, normal_prio;
++ int on_rq;
+ struct list_head run_list;
+- struct prio_array *array;
++ struct rb_node run_node;
+
+ unsigned short ioprio;
+ #ifdef CONFIG_BLK_DEV_IO_TRACE
+ unsigned int btrace_seq;
+ #endif
+- unsigned long sleep_avg;
+- unsigned long long timestamp, last_ran;
+- unsigned long long sched_time; /* sched_clock time spent running */
+- enum sleep_type sleep_type;
++ /* CFS scheduling class statistics fields: */
++ u64 wait_start_fair;
++ u64 wait_start;
++ u64 exec_start;
++ u64 sleep_start;
++ u64 block_start;
++ u64 sleep_max;
++ u64 block_max;
++ u64 exec_max;
++ u64 wait_max;
++ u64 last_ran;
++
++ s64 wait_runtime;
++ u64 sum_exec_runtime;
++ s64 fair_key;
++ s64 sum_wait_runtime;
+
+ unsigned long policy;
+ cpumask_t cpus_allowed;
+- unsigned int time_slice, first_time_slice;
++ unsigned int time_slice;
++ struct sched_class *sched_class;
++
++ s64 min_wait_runtime;
+
+ #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT)
+ struct sched_info sched_info;
+ #endif
++ u64 nr_switches;
+
+ struct list_head tasks;
+ /*
+@@ -1195,8 +1230,9 @@ static inline int set_cpus_allowed(struc
+ #endif
+
+ extern unsigned long long sched_clock(void);
++extern void sched_clock_unstable_event(void);
+ extern unsigned long long
+-current_sched_time(const struct task_struct *current_task);
++current_sched_runtime(const struct task_struct *current_task);
+
+ /* sched_exec is called by processes performing an exec */
+ #ifdef CONFIG_SMP
+@@ -1212,6 +1248,13 @@ static inline void idle_task_exit(void)
+ #endif
+
+ extern void sched_idle_next(void);
++extern char * sched_print_task_state(struct task_struct *p, char *buffer);
++
++extern unsigned int sysctl_sched_granularity;
++extern unsigned int sysctl_sched_wakeup_granularity;
++extern unsigned int sysctl_sched_sleep_history_max;
++extern unsigned int sysctl_sched_child_runs_first;
++extern unsigned int sysctl_sched_load_smoothing;
+
+ #ifdef CONFIG_RT_MUTEXES
+ extern int rt_mutex_getprio(struct task_struct *p);
+@@ -1290,8 +1333,7 @@ extern void FASTCALL(wake_up_new_task(st
+ #else
+ static inline void kick_process(struct task_struct *tsk) { }
+ #endif
+-extern void FASTCALL(sched_fork(struct task_struct * p, int clone_flags));
+-extern void FASTCALL(sched_exit(struct task_struct * p));
++extern void sched_fork(struct task_struct * p, int clone_flags);
+
+ extern int in_group_p(gid_t);
+ extern int in_egroup_p(gid_t);
+Index: linux-cfs-2.6.20.8.q/include/linux/topology.h
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/include/linux/topology.h
++++ linux-cfs-2.6.20.8.q/include/linux/topology.h
+@@ -96,7 +96,6 @@
+ .busy_factor = 64, \
+ .imbalance_pct = 110, \
+ .cache_nice_tries = 0, \
+- .per_cpu_gain = 25, \
+ .busy_idx = 0, \
+ .idle_idx = 0, \
+ .newidle_idx = 1, \
+@@ -128,7 +127,6 @@
+ .busy_factor = 64, \
+ .imbalance_pct = 125, \
+ .cache_nice_tries = 1, \
+- .per_cpu_gain = 100, \
+ .busy_idx = 2, \
+ .idle_idx = 1, \
+ .newidle_idx = 2, \
+@@ -159,7 +157,6 @@
+ .busy_factor = 64, \
+ .imbalance_pct = 125, \
+ .cache_nice_tries = 1, \
+- .per_cpu_gain = 100, \
+ .busy_idx = 2, \
+ .idle_idx = 1, \
+ .newidle_idx = 2, \
+@@ -193,7 +190,6 @@
+ .newidle_idx = 0, /* unused */ \
+ .wake_idx = 0, /* unused */ \
+ .forkexec_idx = 0, /* unused */ \
+- .per_cpu_gain = 100, \
+ .flags = SD_LOAD_BALANCE \
+ | SD_SERIALIZE, \
+ .last_balance = jiffies, \
+Index: linux-cfs-2.6.20.8.q/init/main.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/init/main.c
++++ linux-cfs-2.6.20.8.q/init/main.c
+@@ -422,7 +422,7 @@ static void noinline rest_init(void)
+
+ /*
+ * The boot idle thread must execute schedule()
+- * at least one to get things moving:
++ * at least once to get things moving:
+ */
+ preempt_enable_no_resched();
+ schedule();
+Index: linux-cfs-2.6.20.8.q/kernel/exit.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/kernel/exit.c
++++ linux-cfs-2.6.20.8.q/kernel/exit.c
+@@ -112,7 +112,7 @@ static void __exit_signal(struct task_st
+ sig->maj_flt += tsk->maj_flt;
+ sig->nvcsw += tsk->nvcsw;
+ sig->nivcsw += tsk->nivcsw;
+- sig->sched_time += tsk->sched_time;
++ sig->sum_sched_runtime += tsk->sum_exec_runtime;
+ sig = NULL; /* Marker for below. */
+ }
+
+@@ -170,7 +170,6 @@ repeat:
+ zap_leader = (leader->exit_signal == -1);
+ }
+
+- sched_exit(p);
+ write_unlock_irq(&tasklist_lock);
+ proc_flush_task(p);
+ release_thread(p);
+Index: linux-cfs-2.6.20.8.q/kernel/fork.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/kernel/fork.c
++++ linux-cfs-2.6.20.8.q/kernel/fork.c
+@@ -874,7 +874,7 @@ static inline int copy_signal(unsigned l
+ sig->utime = sig->stime = sig->cutime = sig->cstime = cputime_zero;
+ sig->nvcsw = sig->nivcsw = sig->cnvcsw = sig->cnivcsw = 0;
+ sig->min_flt = sig->maj_flt = sig->cmin_flt = sig->cmaj_flt = 0;
+- sig->sched_time = 0;
++ sig->sum_sched_runtime = 0;
+ INIT_LIST_HEAD(&sig->cpu_timers[0]);
+ INIT_LIST_HEAD(&sig->cpu_timers[1]);
+ INIT_LIST_HEAD(&sig->cpu_timers[2]);
+@@ -1037,7 +1037,7 @@ static struct task_struct *copy_process(
+
+ p->utime = cputime_zero;
+ p->stime = cputime_zero;
+- p->sched_time = 0;
++
+ p->rchar = 0; /* I/O counter: bytes read */
+ p->wchar = 0; /* I/O counter: bytes written */
+ p->syscr = 0; /* I/O counter: read syscalls */
+Index: linux-cfs-2.6.20.8.q/kernel/hrtimer.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/kernel/hrtimer.c
++++ linux-cfs-2.6.20.8.q/kernel/hrtimer.c
+@@ -45,7 +45,7 @@
+ *
+ * returns the time in ktime_t format
+ */
+-static ktime_t ktime_get(void)
++ktime_t ktime_get(void)
+ {
+ struct timespec now;
+
+Index: linux-cfs-2.6.20.8.q/kernel/posix-cpu-timers.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/kernel/posix-cpu-timers.c
++++ linux-cfs-2.6.20.8.q/kernel/posix-cpu-timers.c
+@@ -161,7 +161,7 @@ static inline cputime_t virt_ticks(struc
+ }
+ static inline unsigned long long sched_ns(struct task_struct *p)
+ {
+- return (p == current) ? current_sched_time(p) : p->sched_time;
++ return (p == current) ? current_sched_runtime(p) : p->sum_exec_runtime;
+ }
+
+ int posix_cpu_clock_getres(const clockid_t which_clock, struct timespec *tp)
+@@ -246,10 +246,10 @@ static int cpu_clock_sample_group_locked
+ } while (t != p);
+ break;
+ case CPUCLOCK_SCHED:
+- cpu->sched = p->signal->sched_time;
++ cpu->sched = p->signal->sum_sched_runtime;
+ /* Add in each other live thread. */
+ while ((t = next_thread(t)) != p) {
+- cpu->sched += t->sched_time;
++ cpu->sched += t->sum_exec_runtime;
+ }
+ cpu->sched += sched_ns(p);
+ break;
+@@ -417,7 +417,7 @@ int posix_cpu_timer_del(struct k_itimer
+ */
+ static void cleanup_timers(struct list_head *head,
+ cputime_t utime, cputime_t stime,
+- unsigned long long sched_time)
++ unsigned long long sum_exec_runtime)
+ {
+ struct cpu_timer_list *timer, *next;
+ cputime_t ptime = cputime_add(utime, stime);
+@@ -446,10 +446,10 @@ static void cleanup_timers(struct list_h
+ ++head;
+ list_for_each_entry_safe(timer, next, head, entry) {
+ list_del_init(&timer->entry);
+- if (timer->expires.sched < sched_time) {
++ if (timer->expires.sched < sum_exec_runtime) {
+ timer->expires.sched = 0;
+ } else {
+- timer->expires.sched -= sched_time;
++ timer->expires.sched -= sum_exec_runtime;
+ }
+ }
+ }
+@@ -462,7 +462,7 @@ static void cleanup_timers(struct list_h
+ void posix_cpu_timers_exit(struct task_struct *tsk)
+ {
+ cleanup_timers(tsk->cpu_timers,
+- tsk->utime, tsk->stime, tsk->sched_time);
++ tsk->utime, tsk->stime, tsk->sum_exec_runtime);
+
+ }
+ void posix_cpu_timers_exit_group(struct task_struct *tsk)
+@@ -470,7 +470,7 @@ void posix_cpu_timers_exit_group(struct
+ cleanup_timers(tsk->signal->cpu_timers,
+ cputime_add(tsk->utime, tsk->signal->utime),
+ cputime_add(tsk->stime, tsk->signal->stime),
+- tsk->sched_time + tsk->signal->sched_time);
++ tsk->sum_exec_runtime + tsk->signal->sum_sched_runtime);
+ }
+
+
+@@ -531,7 +531,7 @@ static void process_timer_rebalance(stru
+ nsleft = max_t(unsigned long long, nsleft, 1);
+ do {
+ if (likely(!(t->flags & PF_EXITING))) {
+- ns = t->sched_time + nsleft;
++ ns = t->sum_exec_runtime + nsleft;
+ if (t->it_sched_expires == 0 ||
+ t->it_sched_expires > ns) {
+ t->it_sched_expires = ns;
+@@ -999,7 +999,7 @@ static void check_thread_timers(struct t
+ struct cpu_timer_list *t = list_entry(timers->next,
+ struct cpu_timer_list,
+ entry);
+- if (!--maxfire || tsk->sched_time < t->expires.sched) {
++ if (!--maxfire || tsk->sum_exec_runtime < t->expires.sched) {
+ tsk->it_sched_expires = t->expires.sched;
+ break;
+ }
+@@ -1019,7 +1019,7 @@ static void check_process_timers(struct
+ int maxfire;
+ struct signal_struct *const sig = tsk->signal;
+ cputime_t utime, stime, ptime, virt_expires, prof_expires;
+- unsigned long long sched_time, sched_expires;
++ unsigned long long sum_sched_runtime, sched_expires;
+ struct task_struct *t;
+ struct list_head *timers = sig->cpu_timers;
+
+@@ -1039,12 +1039,12 @@ static void check_process_timers(struct
+ */
+ utime = sig->utime;
+ stime = sig->stime;
+- sched_time = sig->sched_time;
++ sum_sched_runtime = sig->sum_sched_runtime;
+ t = tsk;
+ do {
+ utime = cputime_add(utime, t->utime);
+ stime = cputime_add(stime, t->stime);
+- sched_time += t->sched_time;
++ sum_sched_runtime += t->sum_exec_runtime;
+ t = next_thread(t);
+ } while (t != tsk);
+ ptime = cputime_add(utime, stime);
+@@ -1085,7 +1085,7 @@ static void check_process_timers(struct
+ struct cpu_timer_list *t = list_entry(timers->next,
+ struct cpu_timer_list,
+ entry);
+- if (!--maxfire || sched_time < t->expires.sched) {
++ if (!--maxfire || sum_sched_runtime < t->expires.sched) {
+ sched_expires = t->expires.sched;
+ break;
+ }
+@@ -1177,7 +1177,7 @@ static void check_process_timers(struct
+ virt_left = cputime_sub(virt_expires, utime);
+ virt_left = cputime_div_non_zero(virt_left, nthreads);
+ if (sched_expires) {
+- sched_left = sched_expires - sched_time;
++ sched_left = sched_expires - sum_sched_runtime;
+ do_div(sched_left, nthreads);
+ sched_left = max_t(unsigned long long, sched_left, 1);
+ } else {
+@@ -1203,7 +1203,7 @@ static void check_process_timers(struct
+ t->it_virt_expires = ticks;
+ }
+
+- sched = t->sched_time + sched_left;
++ sched = t->sum_exec_runtime + sched_left;
+ if (sched_expires && (t->it_sched_expires == 0 ||
+ t->it_sched_expires > sched)) {
+ t->it_sched_expires = sched;
+@@ -1295,7 +1295,7 @@ void run_posix_cpu_timers(struct task_st
+
+ if (UNEXPIRED(prof) && UNEXPIRED(virt) &&
+ (tsk->it_sched_expires == 0 ||
+- tsk->sched_time < tsk->it_sched_expires))
++ tsk->sum_exec_runtime < tsk->it_sched_expires))
+ return;
+
+ #undef UNEXPIRED
+Index: linux-cfs-2.6.20.8.q/kernel/sched.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/kernel/sched.c
++++ linux-cfs-2.6.20.8.q/kernel/sched.c
+@@ -89,110 +89,13 @@
+ */
+ #define MIN_TIMESLICE max(5 * HZ / 1000, 1)
+ #define DEF_TIMESLICE (100 * HZ / 1000)
+-#define ON_RUNQUEUE_WEIGHT 30
+-#define CHILD_PENALTY 95
+-#define PARENT_PENALTY 100
+-#define EXIT_WEIGHT 3
+-#define PRIO_BONUS_RATIO 25
+-#define MAX_BONUS (MAX_USER_PRIO * PRIO_BONUS_RATIO / 100)
+-#define INTERACTIVE_DELTA 2
+-#define MAX_SLEEP_AVG (DEF_TIMESLICE * MAX_BONUS)
+-#define STARVATION_LIMIT (MAX_SLEEP_AVG)
+-#define NS_MAX_SLEEP_AVG (JIFFIES_TO_NS(MAX_SLEEP_AVG))
+-
+-/*
+- * If a task is 'interactive' then we reinsert it in the active
+- * array after it has expired its current timeslice. (it will not
+- * continue to run immediately, it will still roundrobin with
+- * other interactive tasks.)
+- *
+- * This part scales the interactivity limit depending on niceness.
+- *
+- * We scale it linearly, offset by the INTERACTIVE_DELTA delta.
+- * Here are a few examples of different nice levels:
+- *
+- * TASK_INTERACTIVE(-20): [1,1,1,1,1,1,1,1,1,0,0]
+- * TASK_INTERACTIVE(-10): [1,1,1,1,1,1,1,0,0,0,0]
+- * TASK_INTERACTIVE( 0): [1,1,1,1,0,0,0,0,0,0,0]
+- * TASK_INTERACTIVE( 10): [1,1,0,0,0,0,0,0,0,0,0]
+- * TASK_INTERACTIVE( 19): [0,0,0,0,0,0,0,0,0,0,0]
+- *
+- * (the X axis represents the possible -5 ... 0 ... +5 dynamic
+- * priority range a task can explore, a value of '1' means the
+- * task is rated interactive.)
+- *
+- * Ie. nice +19 tasks can never get 'interactive' enough to be
+- * reinserted into the active array. And only heavily CPU-hog nice -20
+- * tasks will be expired. Default nice 0 tasks are somewhere between,
+- * it takes some effort for them to get interactive, but it's not
+- * too hard.
+- */
+-
+-#define CURRENT_BONUS(p) \
+- (NS_TO_JIFFIES((p)->sleep_avg) * MAX_BONUS / \
+- MAX_SLEEP_AVG)
+-
+-#define GRANULARITY (10 * HZ / 1000 ? : 1)
+-
+-#ifdef CONFIG_SMP
+-#define TIMESLICE_GRANULARITY(p) (GRANULARITY * \
+- (1 << (((MAX_BONUS - CURRENT_BONUS(p)) ? : 1) - 1)) * \
+- num_online_cpus())
+-#else
+-#define TIMESLICE_GRANULARITY(p) (GRANULARITY * \
+- (1 << (((MAX_BONUS - CURRENT_BONUS(p)) ? : 1) - 1)))
+-#endif
+-
+-#define SCALE(v1,v1_max,v2_max) \
+- (v1) * (v2_max) / (v1_max)
+-
+-#define DELTA(p) \
+- (SCALE(TASK_NICE(p) + 20, 40, MAX_BONUS) - 20 * MAX_BONUS / 40 + \
+- INTERACTIVE_DELTA)
+-
+-#define TASK_INTERACTIVE(p) \
+- ((p)->prio <= (p)->static_prio - DELTA(p))
+-
+-#define INTERACTIVE_SLEEP(p) \
+- (JIFFIES_TO_NS(MAX_SLEEP_AVG * \
+- (MAX_BONUS / 2 + DELTA((p)) + 1) / MAX_BONUS - 1))
+-
+-#define TASK_PREEMPTS_CURR(p, rq) \
+- ((p)->prio < (rq)->curr->prio)
+-
+-#define SCALE_PRIO(x, prio) \
+- max(x * (MAX_PRIO - prio) / (MAX_USER_PRIO / 2), MIN_TIMESLICE)
+-
+-static unsigned int static_prio_timeslice(int static_prio)
+-{
+- if (static_prio < NICE_TO_PRIO(0))
+- return SCALE_PRIO(DEF_TIMESLICE * 4, static_prio);
+- else
+- return SCALE_PRIO(DEF_TIMESLICE, static_prio);
+-}
+-
+-/*
+- * task_timeslice() scales user-nice values [ -20 ... 0 ... 19 ]
+- * to time slice values: [800ms ... 100ms ... 5ms]
+- *
+- * The higher a thread's priority, the bigger timeslices
+- * it gets during one round of execution. But even the lowest
+- * priority thread gets MIN_TIMESLICE worth of execution time.
+- */
+-
+-static inline unsigned int task_timeslice(struct task_struct *p)
+-{
+- return static_prio_timeslice(p->static_prio);
+-}
+
+ /*
+- * These are the runqueue data structures:
++ * This is the priority-queue data structure of the RT scheduling class:
+ */
+-
+ struct prio_array {
+- unsigned int nr_active;
+- DECLARE_BITMAP(bitmap, MAX_PRIO+1); /* include 1 bit for delimiter */
+- struct list_head queue[MAX_PRIO];
++ DECLARE_BITMAP(bitmap, MAX_RT_PRIO+1); /* include 1 bit for delimiter */
++ struct list_head queue[MAX_RT_PRIO];
+ };
+
+ /*
+@@ -209,12 +112,13 @@ struct rq {
+ * nr_running and cpu_load should be in the same cacheline because
+ * remote CPUs use both these fields when doing load calculation.
+ */
+- unsigned long nr_running;
++ long nr_running;
+ unsigned long raw_weighted_load;
+-#ifdef CONFIG_SMP
+- unsigned long cpu_load[3];
+-#endif
+- unsigned long long nr_switches;
++ #define CPU_LOAD_IDX_MAX 5
++ unsigned long cpu_load[CPU_LOAD_IDX_MAX];
++
++ u64 nr_switches;
++ unsigned long nr_load_updates;
+
+ /*
+ * This is part of a global counter where only the total sum
+@@ -224,14 +128,29 @@ struct rq {
+ */
+ unsigned long nr_uninterruptible;
+
+- unsigned long expired_timestamp;
+- /* Cached timestamp set by update_cpu_clock() */
+- unsigned long long most_recent_timestamp;
+ struct task_struct *curr, *idle;
+ unsigned long next_balance;
+ struct mm_struct *prev_mm;
+- struct prio_array *active, *expired, arrays[2];
+- int best_expired_prio;
++
++ u64 clock, prev_clock_raw;
++ s64 clock_max_delta;
++ u64 fair_clock, prev_fair_clock;
++ u64 exec_clock, prev_exec_clock;
++ u64 wait_runtime;
++
++ unsigned int clock_warps;
++ unsigned int clock_unstable_events;
++
++ struct sched_class *load_balance_class;
++
++ struct prio_array active;
++ int rt_load_balance_idx;
++ struct list_head *rt_load_balance_head, *rt_load_balance_curr;
++
++ struct rb_root tasks_timeline;
++ struct rb_node *rb_leftmost;
++ struct rb_node *rb_load_balance_curr;
++
+ atomic_t nr_iowait;
+
+ #ifdef CONFIG_SMP
+@@ -268,7 +187,107 @@ struct rq {
+ struct lock_class_key rq_lock_key;
+ };
+
+-static DEFINE_PER_CPU(struct rq, runqueues);
++static DEFINE_PER_CPU(struct rq, runqueues) ____cacheline_aligned_in_smp;
++
++static inline void check_preempt_curr(struct rq *rq, struct task_struct *p)
++{
++ rq->curr->sched_class->check_preempt_curr(rq, p);
++}
++
++#define SCALE_PRIO(x, prio) \
++ max(x * (MAX_PRIO - prio) / (MAX_USER_PRIO / 2), MIN_TIMESLICE)
++
++/*
++ * static_prio_timeslice() scales user-nice values [ -20 ... 0 ... 19 ]
++ * to time slice values: [800ms ... 100ms ... 5ms]
++ */
++static unsigned int static_prio_timeslice(int static_prio)
++{
++ if (static_prio == NICE_TO_PRIO(19))
++ return 1;
++
++ if (static_prio < NICE_TO_PRIO(0))
++ return SCALE_PRIO(DEF_TIMESLICE * 4, static_prio);
++ else
++ return SCALE_PRIO(DEF_TIMESLICE, static_prio);
++}
++
++/*
++ * Print out various scheduling related per-task fields:
++ */
++char * sched_print_task_state(struct task_struct *p, char *buffer)
++{
++ struct rq *this_rq = &per_cpu(runqueues, raw_smp_processor_id());
++ unsigned long long t0, t1;
++
++#define P(F) \
++ buffer += sprintf(buffer, "%-25s:%20Ld\n", #F, (long long)p->F)
++
++ P(wait_start);
++ P(wait_start_fair);
++ P(exec_start);
++ P(sleep_start);
++ P(block_start);
++ P(sleep_max);
++ P(block_max);
++ P(exec_max);
++ P(wait_max);
++ P(min_wait_runtime);
++ P(last_ran);
++ P(wait_runtime);
++ P(sum_exec_runtime);
++#undef P
++
++ t0 = sched_clock();
++ t1 = sched_clock();
++ buffer += sprintf(buffer, "%-25s:%20Ld\n", "clock-delta",
++ (long long)t1-t0);
++ buffer += sprintf(buffer, "%-25s:%20Ld\n", "rq-wait_runtime",
++ (long long)this_rq->wait_runtime);
++ buffer += sprintf(buffer, "%-25s:%20Ld\n", "rq-exec_clock",
++ (long long)this_rq->exec_clock);
++ buffer += sprintf(buffer, "%-25s:%20Ld\n", "rq-fair_clock",
++ (long long)this_rq->fair_clock);
++ buffer += sprintf(buffer, "%-25s:%20Ld\n", "rq-clock",
++ (long long)this_rq->clock);
++ buffer += sprintf(buffer, "%-25s:%20Ld\n", "rq-prev_clock_raw",
++ (long long)this_rq->prev_clock_raw);
++ buffer += sprintf(buffer, "%-25s:%20Ld\n", "rq-clock_max_delta",
++ (long long)this_rq->clock_max_delta);
++ buffer += sprintf(buffer, "%-25s:%20u\n", "rq-clock_warps",
++ this_rq->clock_warps);
++ buffer += sprintf(buffer, "%-25s:%20u\n", "rq-clock_unstable_events",
++ this_rq->clock_unstable_events);
++ return buffer;
++}
++
++/*
++ * Per-runqueue clock, as finegrained as the platform can give us:
++ */
++static inline unsigned long long __rq_clock(struct rq *rq)
++{
++ u64 now = sched_clock();
++ u64 clock = rq->clock;
++ u64 prev_raw = rq->prev_clock_raw;
++ s64 delta = now - prev_raw;
++
++ /*
++ * Protect against sched_clock() occasionally going backwards:
++ */
++ if (unlikely(delta < 0)) {
++ clock++;
++ rq->clock_warps++;
++ } else {
++ if (unlikely(delta > rq->clock_max_delta))
++ rq->clock_max_delta = delta;
++ clock += delta;
++ }
++
++ rq->prev_clock_raw = now;
++ rq->clock = clock;
++
++ return clock;
++}
+
+ static inline int cpu_of(struct rq *rq)
+ {
+@@ -279,6 +298,16 @@ static inline int cpu_of(struct rq *rq)
+ #endif
+ }
+
++static inline unsigned long long rq_clock(struct rq *rq)
++{
++ int this_cpu = smp_processor_id();
++
++ if (this_cpu == cpu_of(rq))
++ return __rq_clock(rq);
++
++ return rq->clock;
++}
++
+ /*
+ * The domain tree (rq->sd) is protected by RCU's quiescent state transition.
+ * See detach_destroy_domains: synchronize_sched for details.
+@@ -423,134 +452,6 @@ static inline void task_rq_unlock(struct
+ spin_unlock_irqrestore(&rq->lock, *flags);
+ }
+
+-#ifdef CONFIG_SCHEDSTATS
+-/*
+- * bump this up when changing the output format or the meaning of an existing
+- * format, so that tools can adapt (or abort)
+- */
+-#define SCHEDSTAT_VERSION 14
+-
+-static int show_schedstat(struct seq_file *seq, void *v)
+-{
+- int cpu;
+-
+- seq_printf(seq, "version %d\n", SCHEDSTAT_VERSION);
+- seq_printf(seq, "timestamp %lu\n", jiffies);
+- for_each_online_cpu(cpu) {
+- struct rq *rq = cpu_rq(cpu);
+-#ifdef CONFIG_SMP
+- struct sched_domain *sd;
+- int dcnt = 0;
+-#endif
+-
+- /* runqueue-specific stats */
+- seq_printf(seq,
+- "cpu%d %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu",
+- cpu, rq->yld_both_empty,
+- rq->yld_act_empty, rq->yld_exp_empty, rq->yld_cnt,
+- rq->sched_switch, rq->sched_cnt, rq->sched_goidle,
+- rq->ttwu_cnt, rq->ttwu_local,
+- rq->rq_sched_info.cpu_time,
+- rq->rq_sched_info.run_delay, rq->rq_sched_info.pcnt);
+-
+- seq_printf(seq, "\n");
+-
+-#ifdef CONFIG_SMP
+- /* domain-specific stats */
+- preempt_disable();
+- for_each_domain(cpu, sd) {
+- enum idle_type itype;
+- char mask_str[NR_CPUS];
+-
+- cpumask_scnprintf(mask_str, NR_CPUS, sd->span);
+- seq_printf(seq, "domain%d %s", dcnt++, mask_str);
+- for (itype = SCHED_IDLE; itype < MAX_IDLE_TYPES;
+- itype++) {
+- seq_printf(seq, " %lu %lu %lu %lu %lu %lu %lu "
+- "%lu",
+- sd->lb_cnt[itype],
+- sd->lb_balanced[itype],
+- sd->lb_failed[itype],
+- sd->lb_imbalance[itype],
+- sd->lb_gained[itype],
+- sd->lb_hot_gained[itype],
+- sd->lb_nobusyq[itype],
+- sd->lb_nobusyg[itype]);
+- }
+- seq_printf(seq, " %lu %lu %lu %lu %lu %lu %lu %lu %lu"
+- " %lu %lu %lu\n",
+- sd->alb_cnt, sd->alb_failed, sd->alb_pushed,
+- sd->sbe_cnt, sd->sbe_balanced, sd->sbe_pushed,
+- sd->sbf_cnt, sd->sbf_balanced, sd->sbf_pushed,
+- sd->ttwu_wake_remote, sd->ttwu_move_affine,
+- sd->ttwu_move_balance);
+- }
+- preempt_enable();
+-#endif
+- }
+- return 0;
+-}
+-
+-static int schedstat_open(struct inode *inode, struct file *file)
+-{
+- unsigned int size = PAGE_SIZE * (1 + num_online_cpus() / 32);
+- char *buf = kmalloc(size, GFP_KERNEL);
+- struct seq_file *m;
+- int res;
+-
+- if (!buf)
+- return -ENOMEM;
+- res = single_open(file, show_schedstat, NULL);
+- if (!res) {
+- m = file->private_data;
+- m->buf = buf;
+- m->size = size;
+- } else
+- kfree(buf);
+- return res;
+-}
+-
+-const struct file_operations proc_schedstat_operations = {
+- .open = schedstat_open,
+- .read = seq_read,
+- .llseek = seq_lseek,
+- .release = single_release,
+-};
+-
+-/*
+- * Expects runqueue lock to be held for atomicity of update
+- */
+-static inline void
+-rq_sched_info_arrive(struct rq *rq, unsigned long delta_jiffies)
+-{
+- if (rq) {
+- rq->rq_sched_info.run_delay += delta_jiffies;
+- rq->rq_sched_info.pcnt++;
+- }
+-}
+-
+-/*
+- * Expects runqueue lock to be held for atomicity of update
+- */
+-static inline void
+-rq_sched_info_depart(struct rq *rq, unsigned long delta_jiffies)
+-{
+- if (rq)
+- rq->rq_sched_info.cpu_time += delta_jiffies;
+-}
+-# define schedstat_inc(rq, field) do { (rq)->field++; } while (0)
+-# define schedstat_add(rq, field, amt) do { (rq)->field += (amt); } while (0)
+-#else /* !CONFIG_SCHEDSTATS */
+-static inline void
+-rq_sched_info_arrive(struct rq *rq, unsigned long delta_jiffies)
+-{}
+-static inline void
+-rq_sched_info_depart(struct rq *rq, unsigned long delta_jiffies)
+-{}
+-# define schedstat_inc(rq, field) do { } while (0)
+-# define schedstat_add(rq, field, amt) do { } while (0)
+-#endif
+-
+ /*
+ * this_rq_lock - lock this runqueue and disable interrupts.
+ */
+@@ -566,178 +467,60 @@ static inline struct rq *this_rq_lock(vo
+ return rq;
+ }
+
+-#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT)
+-/*
+- * Called when a process is dequeued from the active array and given
+- * the cpu. We should note that with the exception of interactive
+- * tasks, the expired queue will become the active queue after the active
+- * queue is empty, without explicitly dequeuing and requeuing tasks in the
+- * expired queue. (Interactive tasks may be requeued directly to the
+- * active queue, thus delaying tasks in the expired queue from running;
+- * see scheduler_tick()).
+- *
+- * This function is only called from sched_info_arrive(), rather than
+- * dequeue_task(). Even though a task may be queued and dequeued multiple
+- * times as it is shuffled about, we're really interested in knowing how
+- * long it was from the *first* time it was queued to the time that it
+- * finally hit a cpu.
+- */
+-static inline void sched_info_dequeued(struct task_struct *t)
+-{
+- t->sched_info.last_queued = 0;
+-}
+-
+ /*
+- * Called when a task finally hits the cpu. We can now calculate how
+- * long it was waiting to run. We also note when it began so that we
+- * can keep stats on how long its timeslice is.
++ * CPU frequency is/was unstable - start new by setting prev_clock_raw:
+ */
+-static void sched_info_arrive(struct task_struct *t)
++void sched_clock_unstable_event(void)
+ {
+- unsigned long now = jiffies, delta_jiffies = 0;
+-
+- if (t->sched_info.last_queued)
+- delta_jiffies = now - t->sched_info.last_queued;
+- sched_info_dequeued(t);
+- t->sched_info.run_delay += delta_jiffies;
+- t->sched_info.last_arrival = now;
+- t->sched_info.pcnt++;
++ unsigned long flags;
++ struct rq *rq;
+
+- rq_sched_info_arrive(task_rq(t), delta_jiffies);
++ rq = task_rq_lock(current, &flags);
++ rq->prev_clock_raw = sched_clock();
++ rq->clock_unstable_events++;
++ task_rq_unlock(rq, &flags);
+ }
+
+ /*
+- * Called when a process is queued into either the active or expired
+- * array. The time is noted and later used to determine how long we
+- * had to wait for us to reach the cpu. Since the expired queue will
+- * become the active queue after active queue is empty, without dequeuing
+- * and requeuing any tasks, we are interested in queuing to either. It
+- * is unusual but not impossible for tasks to be dequeued and immediately
+- * requeued in the same or another array: this can happen in sched_yield(),
+- * set_user_nice(), and even load_balance() as it moves tasks from runqueue
+- * to runqueue.
++ * resched_task - mark a task 'to be rescheduled now'.
+ *
+- * This function is only called from enqueue_task(), but also only updates
+- * the timestamp if it is already not set. It's assumed that
+- * sched_info_dequeued() will clear that stamp when appropriate.
+- */
+-static inline void sched_info_queued(struct task_struct *t)
+-{
+- if (unlikely(sched_info_on()))
+- if (!t->sched_info.last_queued)
+- t->sched_info.last_queued = jiffies;
+-}
+-
+-/*
+- * Called when a process ceases being the active-running process, either
+- * voluntarily or involuntarily. Now we can calculate how long we ran.
++ * On UP this means the setting of the need_resched flag, on SMP it
++ * might also involve a cross-CPU call to trigger the scheduler on
++ * the target CPU.
+ */
+-static inline void sched_info_depart(struct task_struct *t)
+-{
+- unsigned long delta_jiffies = jiffies - t->sched_info.last_arrival;
++#ifdef CONFIG_SMP
+
+- t->sched_info.cpu_time += delta_jiffies;
+- rq_sched_info_depart(task_rq(t), delta_jiffies);
+-}
++#ifndef tsk_is_polling
++#define tsk_is_polling(t) test_tsk_thread_flag(t, TIF_POLLING_NRFLAG)
++#endif
+
+-/*
+- * Called when tasks are switched involuntarily due, typically, to expiring
+- * their time slice. (This may also be called when switching to or from
+- * the idle task.) We are only called when prev != next.
+- */
+-static inline void
+-__sched_info_switch(struct task_struct *prev, struct task_struct *next)
++static void resched_task(struct task_struct *p)
+ {
+- struct rq *rq = task_rq(prev);
+-
+- /*
+- * prev now departs the cpu. It's not interesting to record
+- * stats about how efficient we were at scheduling the idle
+- * process, however.
+- */
+- if (prev != rq->idle)
+- sched_info_depart(prev);
++ int cpu;
+
+- if (next != rq->idle)
+- sched_info_arrive(next);
+-}
+-static inline void
+-sched_info_switch(struct task_struct *prev, struct task_struct *next)
+-{
+- if (unlikely(sched_info_on()))
+- __sched_info_switch(prev, next);
+-}
+-#else
+-#define sched_info_queued(t) do { } while (0)
+-#define sched_info_switch(t, next) do { } while (0)
+-#endif /* CONFIG_SCHEDSTATS || CONFIG_TASK_DELAY_ACCT */
++ assert_spin_locked(&task_rq(p)->lock);
+
+-/*
+- * Adding/removing a task to/from a priority array:
+- */
+-static void dequeue_task(struct task_struct *p, struct prio_array *array)
+-{
+- array->nr_active--;
+- list_del(&p->run_list);
+- if (list_empty(array->queue + p->prio))
+- __clear_bit(p->prio, array->bitmap);
+-}
++ if (unlikely(test_tsk_thread_flag(p, TIF_NEED_RESCHED)))
++ return;
+
+-static void enqueue_task(struct task_struct *p, struct prio_array *array)
+-{
+- sched_info_queued(p);
+- list_add_tail(&p->run_list, array->queue + p->prio);
+- __set_bit(p->prio, array->bitmap);
+- array->nr_active++;
+- p->array = array;
+-}
++ set_tsk_thread_flag(p, TIF_NEED_RESCHED);
+
+-/*
+- * Put task to the end of the run list without the overhead of dequeue
+- * followed by enqueue.
+- */
+-static void requeue_task(struct task_struct *p, struct prio_array *array)
+-{
+- list_move_tail(&p->run_list, array->queue + p->prio);
+-}
++ cpu = task_cpu(p);
++ if (cpu == smp_processor_id())
++ return;
+
+-static inline void
+-enqueue_task_head(struct task_struct *p, struct prio_array *array)
+-{
+- list_add(&p->run_list, array->queue + p->prio);
+- __set_bit(p->prio, array->bitmap);
+- array->nr_active++;
+- p->array = array;
++ /* NEED_RESCHED must be visible before we test polling */
++ smp_mb();
++ if (!tsk_is_polling(p))
++ smp_send_reschedule(cpu);
+ }
+-
+-/*
+- * __normal_prio - return the priority that is based on the static
+- * priority but is modified by bonuses/penalties.
+- *
+- * We scale the actual sleep average [0 .... MAX_SLEEP_AVG]
+- * into the -5 ... 0 ... +5 bonus/penalty range.
+- *
+- * We use 25% of the full 0...39 priority range so that:
+- *
+- * 1) nice +19 interactive tasks do not preempt nice 0 CPU hogs.
+- * 2) nice -20 CPU hogs do not get preempted by nice 0 tasks.
+- *
+- * Both properties are important to certain workloads.
+- */
+-
+-static inline int __normal_prio(struct task_struct *p)
++#else
++static inline void resched_task(struct task_struct *p)
+ {
+- int bonus, prio;
+-
+- bonus = CURRENT_BONUS(p) - MAX_BONUS / 2;
+-
+- prio = p->static_prio - bonus;
+- if (prio < MAX_RT_PRIO)
+- prio = MAX_RT_PRIO;
+- if (prio > MAX_PRIO-1)
+- prio = MAX_PRIO-1;
+- return prio;
++ assert_spin_locked(&task_rq(p)->lock);
++ set_tsk_need_resched(p);
+ }
++#endif
+
+ /*
+ * To aid in avoiding the subversion of "niceness" due to uneven distribution
+@@ -761,22 +544,33 @@ static inline int __normal_prio(struct t
+ #define RTPRIO_TO_LOAD_WEIGHT(rp) \
+ (PRIO_TO_LOAD_WEIGHT(MAX_RT_PRIO) + LOAD_WEIGHT(rp))
+
++/*
++ * Nice levels are logarithmic. These are the load shifts assigned
++ * to nice levels, where a step of every 2 nice levels means a
++ * multiplicator of 2:
++ */
++const int prio_to_load_shift[40] = {
++/* -20 */ 20, 19, 19, 18, 18, 17, 17, 16, 16, 15,
++/* -10 */ 15, 14, 14, 13, 13, 12, 12, 11, 11, 10,
++/* 0 */ 10, 9, 9, 8, 8, 7, 7, 6, 6, 5,
++/* 10 */ 5, 4, 4, 3, 3, 2, 2, 1, 1, 0
++};
++
++static int get_load_shift(struct task_struct *p)
++{
++ int prio = p->static_prio;
++
++ if (rt_prio(prio) || p->policy == SCHED_BATCH)
++ return 0;
++
++ return prio_to_load_shift[prio - MAX_RT_PRIO];
++}
++
+ static void set_load_weight(struct task_struct *p)
+ {
+- if (has_rt_policy(p)) {
+-#ifdef CONFIG_SMP
+- if (p == task_rq(p)->migration_thread)
+- /*
+- * The migration thread does the actual balancing.
+- * Giving its load any weight will skew balancing
+- * adversely.
+- */
+- p->load_weight = 0;
+- else
+-#endif
+- p->load_weight = RTPRIO_TO_LOAD_WEIGHT(p->rt_priority);
+- } else
+- p->load_weight = PRIO_TO_LOAD_WEIGHT(p->static_prio);
++ p->load_shift = get_load_shift(p);
++ p->load_weight = 1 << p->load_shift;
++ p->wait_runtime = 0;
+ }
+
+ static inline void
+@@ -803,6 +597,40 @@ static inline void dec_nr_running(struct
+ dec_raw_weighted_load(rq, p);
+ }
+
++static void activate_task(struct rq *rq, struct task_struct *p, int wakeup);
++
++#include "sched_stats.h"
++#include "sched_rt.c"
++#include "sched_fair.c"
++#include "sched_debug.c"
++
++#define sched_class_highest (&rt_sched_class)
++
++static void enqueue_task(struct rq *rq, struct task_struct *p, int wakeup)
++{
++ u64 now = rq_clock(rq);
++
++ sched_info_queued(p);
++ p->sched_class->enqueue_task(rq, p, wakeup, now);
++ p->on_rq = 1;
++}
++
++static void dequeue_task(struct rq *rq, struct task_struct *p, int sleep)
++{
++ u64 now = rq_clock(rq);
++
++ p->sched_class->dequeue_task(rq, p, sleep, now);
++ p->on_rq = 0;
++}
++
++/*
++ * __normal_prio - return the priority that is based on the static prio
++ */
++static inline int __normal_prio(struct task_struct *p)
++{
++ return p->static_prio;
++}
++
+ /*
+ * Calculate the expected normal priority: i.e. priority
+ * without taking RT-inheritance into account. Might be
+@@ -842,210 +670,31 @@ static int effective_prio(struct task_st
+ }
+
+ /*
+- * __activate_task - move a task to the runqueue.
++ * activate_task - move a task to the runqueue.
+ */
+-static void __activate_task(struct task_struct *p, struct rq *rq)
++static void activate_task(struct rq *rq, struct task_struct *p, int wakeup)
+ {
+- struct prio_array *target = rq->active;
+-
+- if (batch_task(p))
+- target = rq->expired;
+- enqueue_task(p, target);
++ enqueue_task(rq, p, wakeup);
+ inc_nr_running(p, rq);
+ }
+
+ /*
+- * __activate_idle_task - move idle task to the _front_ of runqueue.
++ * activate_idle_task - move idle task to the _front_ of runqueue.
+ */
+-static inline void __activate_idle_task(struct task_struct *p, struct rq *rq)
++static inline void activate_idle_task(struct task_struct *p, struct rq *rq)
+ {
+- enqueue_task_head(p, rq->active);
++ enqueue_task(rq, p, 0);
+ inc_nr_running(p, rq);
+ }
+
+ /*
+- * Recalculate p->normal_prio and p->prio after having slept,
+- * updating the sleep-average too:
+- */
+-static int recalc_task_prio(struct task_struct *p, unsigned long long now)
+-{
+- /* Caller must always ensure 'now >= p->timestamp' */
+- unsigned long sleep_time = now - p->timestamp;
+-
+- if (batch_task(p))
+- sleep_time = 0;
+-
+- if (likely(sleep_time > 0)) {
+- /*
+- * This ceiling is set to the lowest priority that would allow
+- * a task to be reinserted into the active array on timeslice
+- * completion.
+- */
+- unsigned long ceiling = INTERACTIVE_SLEEP(p);
+-
+- if (p->mm && sleep_time > ceiling && p->sleep_avg < ceiling) {
+- /*
+- * Prevents user tasks from achieving best priority
+- * with one single large enough sleep.
+- */
+- p->sleep_avg = ceiling;
+- /*
+- * Using INTERACTIVE_SLEEP() as a ceiling places a
+- * nice(0) task 1ms sleep away from promotion, and
+- * gives it 700ms to round-robin with no chance of
+- * being demoted. This is more than generous, so
+- * mark this sleep as non-interactive to prevent the
+- * on-runqueue bonus logic from intervening should
+- * this task not receive cpu immediately.
+- */
+- p->sleep_type = SLEEP_NONINTERACTIVE;
+- } else {
+- /*
+- * Tasks waking from uninterruptible sleep are
+- * limited in their sleep_avg rise as they
+- * are likely to be waiting on I/O
+- */
+- if (p->sleep_type == SLEEP_NONINTERACTIVE && p->mm) {
+- if (p->sleep_avg >= ceiling)
+- sleep_time = 0;
+- else if (p->sleep_avg + sleep_time >=
+- ceiling) {
+- p->sleep_avg = ceiling;
+- sleep_time = 0;
+- }
+- }
+-
+- /*
+- * This code gives a bonus to interactive tasks.
+- *
+- * The boost works by updating the 'average sleep time'
+- * value here, based on ->timestamp. The more time a
+- * task spends sleeping, the higher the average gets -
+- * and the higher the priority boost gets as well.
+- */
+- p->sleep_avg += sleep_time;
+-
+- }
+- if (p->sleep_avg > NS_MAX_SLEEP_AVG)
+- p->sleep_avg = NS_MAX_SLEEP_AVG;
+- }
+-
+- return effective_prio(p);
+-}
+-
+-/*
+- * activate_task - move a task to the runqueue and do priority recalculation
+- *
+- * Update all the scheduling statistics stuff. (sleep average
+- * calculation, priority modifiers, etc.)
+- */
+-static void activate_task(struct task_struct *p, struct rq *rq, int local)
+-{
+- unsigned long long now;
+-
+- if (rt_task(p))
+- goto out;
+-
+- now = sched_clock();
+-#ifdef CONFIG_SMP
+- if (!local) {
+- /* Compensate for drifting sched_clock */
+- struct rq *this_rq = this_rq();
+- now = (now - this_rq->most_recent_timestamp)
+- + rq->most_recent_timestamp;
+- }
+-#endif
+-
+- /*
+- * Sleep time is in units of nanosecs, so shift by 20 to get a
+- * milliseconds-range estimation of the amount of time that the task
+- * spent sleeping:
+- */
+- if (unlikely(prof_on == SLEEP_PROFILING)) {
+- if (p->state == TASK_UNINTERRUPTIBLE)
+- profile_hits(SLEEP_PROFILING, (void *)get_wchan(p),
+- (now - p->timestamp) >> 20);
+- }
+-
+- p->prio = recalc_task_prio(p, now);
+-
+- /*
+- * This checks to make sure it's not an uninterruptible task
+- * that is now waking up.
+- */
+- if (p->sleep_type == SLEEP_NORMAL) {
+- /*
+- * Tasks which were woken up by interrupts (ie. hw events)
+- * are most likely of interactive nature. So we give them
+- * the credit of extending their sleep time to the period
+- * of time they spend on the runqueue, waiting for execution
+- * on a CPU, first time around:
+- */
+- if (in_interrupt())
+- p->sleep_type = SLEEP_INTERRUPTED;
+- else {
+- /*
+- * Normal first-time wakeups get a credit too for
+- * on-runqueue time, but it will be weighted down:
+- */
+- p->sleep_type = SLEEP_INTERACTIVE;
+- }
+- }
+- p->timestamp = now;
+-out:
+- __activate_task(p, rq);
+-}
+-
+-/*
+ * deactivate_task - remove a task from the runqueue.
+ */
+-static void deactivate_task(struct task_struct *p, struct rq *rq)
++static void deactivate_task(struct rq *rq, struct task_struct *p, int sleep)
+ {
++ dequeue_task(rq, p, sleep);
+ dec_nr_running(p, rq);
+- dequeue_task(p, p->array);
+- p->array = NULL;
+-}
+-
+-/*
+- * resched_task - mark a task 'to be rescheduled now'.
+- *
+- * On UP this means the setting of the need_resched flag, on SMP it
+- * might also involve a cross-CPU call to trigger the scheduler on
+- * the target CPU.
+- */
+-#ifdef CONFIG_SMP
+-
+-#ifndef tsk_is_polling
+-#define tsk_is_polling(t) test_tsk_thread_flag(t, TIF_POLLING_NRFLAG)
+-#endif
+-
+-static void resched_task(struct task_struct *p)
+-{
+- int cpu;
+-
+- assert_spin_locked(&task_rq(p)->lock);
+-
+- if (unlikely(test_tsk_thread_flag(p, TIF_NEED_RESCHED)))
+- return;
+-
+- set_tsk_thread_flag(p, TIF_NEED_RESCHED);
+-
+- cpu = task_cpu(p);
+- if (cpu == smp_processor_id())
+- return;
+-
+- /* NEED_RESCHED must be visible before we test polling */
+- smp_mb();
+- if (!tsk_is_polling(p))
+- smp_send_reschedule(cpu);
+-}
+-#else
+-static inline void resched_task(struct task_struct *p)
+-{
+- assert_spin_locked(&task_rq(p)->lock);
+- set_tsk_need_resched(p);
+ }
+-#endif
+
+ /**
+ * task_curr - is this task currently executing on a CPU?
+@@ -1085,7 +734,7 @@ migrate_task(struct task_struct *p, int
+ * If the task is not on a runqueue (and not running), then
+ * it is sufficient to simply update the task's cpu field.
+ */
+- if (!p->array && !task_running(rq, p)) {
++ if (!p->on_rq && !task_running(rq, p)) {
+ set_task_cpu(p, dest_cpu);
+ return 0;
+ }
+@@ -1116,7 +765,7 @@ void wait_task_inactive(struct task_stru
+ repeat:
+ rq = task_rq_lock(p, &flags);
+ /* Must be off runqueue entirely, not preempted. */
+- if (unlikely(p->array || task_running(rq, p))) {
++ if (unlikely(p->on_rq || task_running(rq, p))) {
+ /* If it's preempted, we yield. It could be a while. */
+ preempted = !task_running(rq, p);
+ task_rq_unlock(rq, &flags);
+@@ -1292,9 +941,9 @@ static int sched_balance_self(int cpu, i
+ struct sched_domain *tmp, *sd = NULL;
+
+ for_each_domain(cpu, tmp) {
+- /*
+- * If power savings logic is enabled for a domain, stop there.
+- */
++ /*
++ * If power savings logic is enabled for a domain, stop there.
++ */
+ if (tmp->flags & SD_POWERSAVINGS_BALANCE)
+ break;
+ if (tmp->flags & flag)
+@@ -1412,7 +1061,7 @@ static int try_to_wake_up(struct task_st
+ if (!(old_state & state))
+ goto out;
+
+- if (p->array)
++ if (p->on_rq)
+ goto out_running;
+
+ cpu = task_cpu(p);
+@@ -1505,7 +1154,7 @@ out_set_cpu:
+ old_state = p->state;
+ if (!(old_state & state))
+ goto out;
+- if (p->array)
++ if (p->on_rq)
+ goto out_running;
+
+ this_cpu = smp_processor_id();
+@@ -1514,25 +1163,10 @@ out_set_cpu:
+
+ out_activate:
+ #endif /* CONFIG_SMP */
+- if (old_state == TASK_UNINTERRUPTIBLE) {
++ if (old_state == TASK_UNINTERRUPTIBLE)
+ rq->nr_uninterruptible--;
+- /*
+- * Tasks on involuntary sleep don't earn
+- * sleep_avg beyond just interactive state.
+- */
+- p->sleep_type = SLEEP_NONINTERACTIVE;
+- } else
+
+- /*
+- * Tasks that have marked their sleep as noninteractive get
+- * woken up with their sleep average not weighted in an
+- * interactive way.
+- */
+- if (old_state & TASK_NONINTERACTIVE)
+- p->sleep_type = SLEEP_NONINTERACTIVE;
+-
+-
+- activate_task(p, rq, cpu == this_cpu);
++ activate_task(rq, p, 1);
+ /*
+ * Sync wakeups (i.e. those types of wakeups where the waker
+ * has indicated that it will leave the CPU in short order)
+@@ -1541,10 +1175,8 @@ out_activate:
+ * the waker guarantees that the freshly woken up task is going
+ * to be considered on this CPU.)
+ */
+- if (!sync || cpu != this_cpu) {
+- if (TASK_PREEMPTS_CURR(p, rq))
+- resched_task(rq->curr);
+- }
++ if (!sync || cpu != this_cpu)
++ check_preempt_curr(rq, p);
+ success = 1;
+
+ out_running:
+@@ -1567,19 +1199,35 @@ int fastcall wake_up_state(struct task_s
+ return try_to_wake_up(p, state, 0);
+ }
+
+-static void task_running_tick(struct rq *rq, struct task_struct *p);
++/*
++ * The task was running during this tick - call the class tick
++ * (to update the time slice counter and other statistics, etc.):
++ */
++static void task_running_tick(struct rq *rq, struct task_struct *p)
++{
++ spin_lock(&rq->lock);
++ p->sched_class->task_tick(rq, p);
++ spin_unlock(&rq->lock);
++}
++
+ /*
+ * Perform scheduler related setup for a newly forked process p.
+ * p is forked by current.
++ *
++ * __sched_fork() is basic setup used by init_idle() too:
+ */
+-void fastcall sched_fork(struct task_struct *p, int clone_flags)
++static void __sched_fork(struct task_struct *p)
+ {
+- int cpu = get_cpu();
++ p->wait_start_fair = p->wait_start = p->exec_start = p->last_ran = 0;
++ p->sum_exec_runtime = p->wait_runtime = 0;
++ p->sum_wait_runtime = 0;
++ p->sleep_start = p->block_start = 0;
++ p->sleep_max = p->block_max = p->exec_max = p->wait_max = 0;
+
+-#ifdef CONFIG_SMP
+- cpu = sched_balance_self(cpu, SD_BALANCE_FORK);
+-#endif
+- set_task_cpu(p, cpu);
++ INIT_LIST_HEAD(&p->run_list);
++ p->on_rq = 0;
++ p->nr_switches = 0;
++ p->min_wait_runtime = 0;
+
+ /*
+ * We mark the process as running here, but have not actually
+@@ -1588,16 +1236,29 @@ void fastcall sched_fork(struct task_str
+ * event cannot wake it up and insert it on the runqueue either.
+ */
+ p->state = TASK_RUNNING;
++}
++
++/*
++ * fork()/clone()-time setup:
++ */
++void sched_fork(struct task_struct *p, int clone_flags)
++{
++ int cpu = get_cpu();
++
++ __sched_fork(p);
++
++#ifdef CONFIG_SMP
++ cpu = sched_balance_self(cpu, SD_BALANCE_FORK);
++#endif
++ set_task_cpu(p, cpu);
+
+ /*
+ * Make sure we do not leak PI boosting priority to the child:
+ */
+ p->prio = current->normal_prio;
+
+- INIT_LIST_HEAD(&p->run_list);
+- p->array = NULL;
+ #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT)
+- if (unlikely(sched_info_on()))
++ if (likely(sched_info_on()))
+ memset(&p->sched_info, 0, sizeof(p->sched_info));
+ #endif
+ #if defined(CONFIG_SMP) && defined(__ARCH_WANT_UNLOCKED_CTXSW)
+@@ -1607,34 +1268,16 @@ void fastcall sched_fork(struct task_str
+ /* Want to start with kernel preemption disabled. */
+ task_thread_info(p)->preempt_count = 1;
+ #endif
+- /*
+- * Share the timeslice between parent and child, thus the
+- * total amount of pending timeslices in the system doesn't change,
+- * resulting in more scheduling fairness.
+- */
+- local_irq_disable();
+- p->time_slice = (current->time_slice + 1) >> 1;
+- /*
+- * The remainder of the first timeslice might be recovered by
+- * the parent if the child exits early enough.
+- */
+- p->first_time_slice = 1;
+- current->time_slice >>= 1;
+- p->timestamp = sched_clock();
+- if (unlikely(!current->time_slice)) {
+- /*
+- * This case is rare, it happens when the parent has only
+- * a single jiffy left from its timeslice. Taking the
+- * runqueue lock is not a problem.
+- */
+- current->time_slice = 1;
+- task_running_tick(cpu_rq(cpu), current);
+- }
+- local_irq_enable();
+ put_cpu();
+ }
+
+ /*
++ * After fork, child runs first. (default) If set to 0 then
++ * parent will (try to) run first.
++ */
++unsigned int __read_mostly sysctl_sched_child_runs_first = 1;
++
++/*
+ * wake_up_new_task - wake up a newly created task for the first time.
+ *
+ * This function will do some initial scheduler statistics housekeeping
+@@ -1643,107 +1286,27 @@ void fastcall sched_fork(struct task_str
+ */
+ void fastcall wake_up_new_task(struct task_struct *p, unsigned long clone_flags)
+ {
+- struct rq *rq, *this_rq;
+ unsigned long flags;
+- int this_cpu, cpu;
++ struct rq *rq;
++ int this_cpu;
+
+ rq = task_rq_lock(p, &flags);
+ BUG_ON(p->state != TASK_RUNNING);
+- this_cpu = smp_processor_id();
+- cpu = task_cpu(p);
+-
+- /*
+- * We decrease the sleep average of forking parents
+- * and children as well, to keep max-interactive tasks
+- * from forking tasks that are max-interactive. The parent
+- * (current) is done further down, under its lock.
+- */
+- p->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(p) *
+- CHILD_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS);
++ this_cpu = smp_processor_id(); /* parent's CPU */
+
+ p->prio = effective_prio(p);
+
+- if (likely(cpu == this_cpu)) {
+- if (!(clone_flags & CLONE_VM)) {
+- /*
+- * The VM isn't cloned, so we're in a good position to
+- * do child-runs-first in anticipation of an exec. This
+- * usually avoids a lot of COW overhead.
+- */
+- if (unlikely(!current->array))
+- __activate_task(p, rq);
+- else {
+- p->prio = current->prio;
+- p->normal_prio = current->normal_prio;
+- list_add_tail(&p->run_list, &current->run_list);
+- p->array = current->array;
+- p->array->nr_active++;
+- inc_nr_running(p, rq);
+- }
+- set_need_resched();
+- } else
+- /* Run child last */
+- __activate_task(p, rq);
+- /*
+- * We skip the following code due to cpu == this_cpu
+- *
+- * task_rq_unlock(rq, &flags);
+- * this_rq = task_rq_lock(current, &flags);
+- */
+- this_rq = rq;
++ if (!sysctl_sched_child_runs_first || (clone_flags & CLONE_VM) ||
++ task_cpu(p) != this_cpu || !current->on_rq) {
++ activate_task(rq, p, 0);
+ } else {
+- this_rq = cpu_rq(this_cpu);
+-
+- /*
+- * Not the local CPU - must adjust timestamp. This should
+- * get optimised away in the !CONFIG_SMP case.
+- */
+- p->timestamp = (p->timestamp - this_rq->most_recent_timestamp)
+- + rq->most_recent_timestamp;
+- __activate_task(p, rq);
+- if (TASK_PREEMPTS_CURR(p, rq))
+- resched_task(rq->curr);
+-
+ /*
+- * Parent and child are on different CPUs, now get the
+- * parent runqueue to update the parent's ->sleep_avg:
++ * Let the scheduling class do new task startup
++ * management (if any):
+ */
+- task_rq_unlock(rq, &flags);
+- this_rq = task_rq_lock(current, &flags);
++ p->sched_class->task_new(rq, p);
+ }
+- current->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(current) *
+- PARENT_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS);
+- task_rq_unlock(this_rq, &flags);
+-}
+-
+-/*
+- * Potentially available exiting-child timeslices are
+- * retrieved here - this way the parent does not get
+- * penalized for creating too many threads.
+- *
+- * (this cannot be used to 'generate' timeslices
+- * artificially, because any timeslice recovered here
+- * was given away by the parent in the first place.)
+- */
+-void fastcall sched_exit(struct task_struct *p)
+-{
+- unsigned long flags;
+- struct rq *rq;
+-
+- /*
+- * If the child was a (relative-) CPU hog then decrease
+- * the sleep_avg of the parent as well.
+- */
+- rq = task_rq_lock(p->parent, &flags);
+- if (p->first_time_slice && task_cpu(p) == task_cpu(p->parent)) {
+- p->parent->time_slice += p->time_slice;
+- if (unlikely(p->parent->time_slice > task_timeslice(p)))
+- p->parent->time_slice = task_timeslice(p);
+- }
+- if (p->sleep_avg < p->parent->sleep_avg)
+- p->parent->sleep_avg = p->parent->sleep_avg /
+- (EXIT_WEIGHT + 1) * EXIT_WEIGHT + p->sleep_avg /
+- (EXIT_WEIGHT + 1);
++ check_preempt_curr(rq, p);
+ task_rq_unlock(rq, &flags);
+ }
+
+@@ -1941,17 +1504,56 @@ unsigned long nr_active(void)
+ return running + uninterruptible;
+ }
+
+-#ifdef CONFIG_SMP
+-
+-/*
+- * Is this task likely cache-hot:
+- */
+-static inline int
+-task_hot(struct task_struct *p, unsigned long long now, struct sched_domain *sd)
++static void update_load_fair(struct rq *this_rq)
+ {
+- return (long long)(now - p->last_ran) < (long long)sd->cache_hot_time;
++ unsigned long this_load, fair_delta, exec_delta, idle_delta;
++ unsigned int i, scale;
++ s64 fair_delta64, exec_delta64;
++ unsigned long tmp;
++ u64 tmp64;
++
++ this_rq->nr_load_updates++;
++
++ fair_delta64 = this_rq->fair_clock - this_rq->prev_fair_clock + 1;
++ this_rq->prev_fair_clock = this_rq->fair_clock;
++ WARN_ON_ONCE(fair_delta64 <= 0);
++
++ exec_delta64 = this_rq->exec_clock - this_rq->prev_exec_clock + 1;
++ this_rq->prev_exec_clock = this_rq->exec_clock;
++ WARN_ON_ONCE(exec_delta64 <= 0);
++
++ if (fair_delta64 > (s64)LONG_MAX)
++ fair_delta64 = (s64)LONG_MAX;
++ fair_delta = (unsigned long)fair_delta64;
++
++ if (exec_delta64 > (s64)LONG_MAX)
++ exec_delta64 = (s64)LONG_MAX;
++ exec_delta = (unsigned long)exec_delta64;
++ if (exec_delta > TICK_NSEC)
++ exec_delta = TICK_NSEC;
++
++ idle_delta = TICK_NSEC - exec_delta;
++
++ tmp = (SCHED_LOAD_SCALE * exec_delta) / fair_delta;
++ tmp64 = (u64)tmp * (u64)exec_delta;
++ do_div(tmp64, TICK_NSEC);
++ this_load = (unsigned long)tmp64;
++
++ /* Update our load: */
++ for (i = 0, scale = 1; i < CPU_LOAD_IDX_MAX; i++, scale += scale) {
++ unsigned long old_load, new_load;
++
++ /* scale is effectively 1 << i now, and >> i divides by scale */
++
++ old_load = this_rq->cpu_load[i];
++ new_load = this_load;
++
++ this_rq->cpu_load[i] = (old_load*(scale-1) + new_load) >> i;
++ }
+ }
+
++#ifdef CONFIG_SMP
++
+ /*
+ * double_rq_lock - safely lock two runqueues
+ *
+@@ -2068,23 +1670,17 @@ void sched_exec(void)
+ * pull_task - move a task from a remote runqueue to the local runqueue.
+ * Both runqueues must be locked.
+ */
+-static void pull_task(struct rq *src_rq, struct prio_array *src_array,
+- struct task_struct *p, struct rq *this_rq,
+- struct prio_array *this_array, int this_cpu)
++static void pull_task(struct rq *src_rq, struct task_struct *p,
++ struct rq *this_rq, int this_cpu)
+ {
+- dequeue_task(p, src_array);
+- dec_nr_running(p, src_rq);
++ deactivate_task(src_rq, p, 0);
+ set_task_cpu(p, this_cpu);
+- inc_nr_running(p, this_rq);
+- enqueue_task(p, this_array);
+- p->timestamp = (p->timestamp - src_rq->most_recent_timestamp)
+- + this_rq->most_recent_timestamp;
++ activate_task(this_rq, p, 0);
+ /*
+ * Note that idle threads have a prio of MAX_PRIO, for this test
+ * to be always true for them.
+ */
+- if (TASK_PREEMPTS_CURR(p, this_rq))
+- resched_task(this_rq->curr);
++ check_preempt_curr(this_rq, p);
+ }
+
+ /*
+@@ -2109,25 +1705,59 @@ int can_migrate_task(struct task_struct
+ return 0;
+
+ /*
+- * Aggressive migration if:
+- * 1) task is cache cold, or
+- * 2) too many balance attempts have failed.
++ * Aggressive migration if too many balance attempts have failed:
+ */
+-
+- if (sd->nr_balance_failed > sd->cache_nice_tries) {
+-#ifdef CONFIG_SCHEDSTATS
+- if (task_hot(p, rq->most_recent_timestamp, sd))
+- schedstat_inc(sd, lb_hot_gained[idle]);
+-#endif
++ if (sd->nr_balance_failed > sd->cache_nice_tries)
+ return 1;
+- }
+
+- if (task_hot(p, rq->most_recent_timestamp, sd))
+- return 0;
+ return 1;
+ }
+
+-#define rq_best_prio(rq) min((rq)->curr->prio, (rq)->best_expired_prio)
++/*
++ * Load-balancing iterator: iterate through the hieararchy of scheduling
++ * classes, starting with the highest-prio one:
++ */
++
++struct task_struct * load_balance_start(struct rq *rq)
++{
++ struct sched_class *class = sched_class_highest;
++ struct task_struct *p;
++
++ do {
++ p = class->load_balance_start(rq);
++ if (p) {
++ rq->load_balance_class = class;
++ return p;
++ }
++ class = class->next;
++ } while (class);
++
++ return NULL;
++}
++
++struct task_struct * load_balance_next(struct rq *rq)
++{
++ struct sched_class *class = rq->load_balance_class;
++ struct task_struct *p;
++
++ p = class->load_balance_next(rq);
++ if (p)
++ return p;
++ /*
++ * Pick up the next class (if any) and attempt to start
++ * the iterator there:
++ */
++ while ((class = class->next)) {
++ p = class->load_balance_start(rq);
++ if (p) {
++ rq->load_balance_class = class;
++ return p;
++ }
++ }
++ return NULL;
++}
++
++#define rq_best_prio(rq) (rq)->curr->prio
+
+ /*
+ * move_tasks tries to move up to max_nr_move tasks and max_load_move weighted
+@@ -2141,11 +1771,9 @@ static int move_tasks(struct rq *this_rq
+ struct sched_domain *sd, enum idle_type idle,
+ int *all_pinned)
+ {
+- int idx, pulled = 0, pinned = 0, this_best_prio, best_prio,
++ int pulled = 0, pinned = 0, this_best_prio, best_prio,
+ best_prio_seen, skip_for_load;
+- struct prio_array *array, *dst_array;
+- struct list_head *head, *curr;
+- struct task_struct *tmp;
++ struct task_struct *p;
+ long rem_load_move;
+
+ if (max_nr_move == 0 || max_load_move == 0)
+@@ -2165,76 +1793,41 @@ static int move_tasks(struct rq *this_rq
+ best_prio_seen = best_prio == busiest->curr->prio;
+
+ /*
+- * We first consider expired tasks. Those will likely not be
+- * executed in the near future, and they are most likely to
+- * be cache-cold, thus switching CPUs has the least effect
+- * on them.
+- */
+- if (busiest->expired->nr_active) {
+- array = busiest->expired;
+- dst_array = this_rq->expired;
+- } else {
+- array = busiest->active;
+- dst_array = this_rq->active;
+- }
+-
+-new_array:
+- /* Start searching at priority 0: */
+- idx = 0;
+-skip_bitmap:
+- if (!idx)
+- idx = sched_find_first_bit(array->bitmap);
+- else
+- idx = find_next_bit(array->bitmap, MAX_PRIO, idx);
+- if (idx >= MAX_PRIO) {
+- if (array == busiest->expired && busiest->active->nr_active) {
+- array = busiest->active;
+- dst_array = this_rq->active;
+- goto new_array;
+- }
++ * Start the load-balancing iterator:
++ */
++ p = load_balance_start(busiest);
++next:
++ if (!p)
+ goto out;
+- }
+-
+- head = array->queue + idx;
+- curr = head->prev;
+-skip_queue:
+- tmp = list_entry(curr, struct task_struct, run_list);
+-
+- curr = curr->prev;
+-
+ /*
+ * To help distribute high priority tasks accross CPUs we don't
+ * skip a task if it will be the highest priority task (i.e. smallest
+ * prio value) on its new queue regardless of its load weight
+ */
+- skip_for_load = tmp->load_weight > rem_load_move;
+- if (skip_for_load && idx < this_best_prio)
+- skip_for_load = !best_prio_seen && idx == best_prio;
++ skip_for_load = p->load_weight > rem_load_move;
++ if (skip_for_load && p->prio < this_best_prio)
++ skip_for_load = !best_prio_seen && p->prio == best_prio;
+ if (skip_for_load ||
+- !can_migrate_task(tmp, busiest, this_cpu, sd, idle, &pinned)) {
++ !can_migrate_task(p, busiest, this_cpu, sd, idle, &pinned)) {
+
+- best_prio_seen |= idx == best_prio;
+- if (curr != head)
+- goto skip_queue;
+- idx++;
+- goto skip_bitmap;
++ best_prio_seen |= p->prio == best_prio;
++ p = load_balance_next(busiest);
++ goto next;
+ }
+
+- pull_task(busiest, array, tmp, this_rq, dst_array, this_cpu);
++ pull_task(busiest, p, this_rq, this_cpu);
+ pulled++;
+- rem_load_move -= tmp->load_weight;
++ rem_load_move -= p->load_weight;
+
+ /*
+ * We only want to steal up to the prescribed number of tasks
+ * and the prescribed amount of weighted load.
+ */
+ if (pulled < max_nr_move && rem_load_move > 0) {
+- if (idx < this_best_prio)
+- this_best_prio = idx;
+- if (curr != head)
+- goto skip_queue;
+- idx++;
+- goto skip_bitmap;
++ if (p->prio < this_best_prio)
++ this_best_prio = p->prio;
++ p = load_balance_next(busiest);
++ goto next;
+ }
+ out:
+ /*
+@@ -2360,8 +1953,8 @@ find_busiest_group(struct sched_domain *
+ * Busy processors will not participate in power savings
+ * balance.
+ */
+- if (idle == NOT_IDLE || !(sd->flags & SD_POWERSAVINGS_BALANCE))
+- goto group_next;
++ if (idle == NOT_IDLE || !(sd->flags & SD_POWERSAVINGS_BALANCE))
++ goto group_next;
+
+ /*
+ * If the local group is idle or completely loaded
+@@ -2371,42 +1964,42 @@ find_busiest_group(struct sched_domain *
+ !this_nr_running))
+ power_savings_balance = 0;
+
+- /*
++ /*
+ * If a group is already running at full capacity or idle,
+ * don't include that group in power savings calculations
+- */
+- if (!power_savings_balance || sum_nr_running >= group_capacity
++ */
++ if (!power_savings_balance || sum_nr_running >= group_capacity
+ || !sum_nr_running)
+- goto group_next;
++ goto group_next;
+
+- /*
++ /*
+ * Calculate the group which has the least non-idle load.
+- * This is the group from where we need to pick up the load
+- * for saving power
+- */
+- if ((sum_nr_running < min_nr_running) ||
+- (sum_nr_running == min_nr_running &&
++ * This is the group from where we need to pick up the load
++ * for saving power
++ */
++ if ((sum_nr_running < min_nr_running) ||
++ (sum_nr_running == min_nr_running &&
+ first_cpu(group->cpumask) <
+ first_cpu(group_min->cpumask))) {
+- group_min = group;
+- min_nr_running = sum_nr_running;
++ group_min = group;
++ min_nr_running = sum_nr_running;
+ min_load_per_task = sum_weighted_load /
+ sum_nr_running;
+- }
++ }
+
+- /*
++ /*
+ * Calculate the group which is almost near its
+- * capacity but still has some space to pick up some load
+- * from other group and save more power
+- */
+- if (sum_nr_running <= group_capacity - 1) {
+- if (sum_nr_running > leader_nr_running ||
+- (sum_nr_running == leader_nr_running &&
+- first_cpu(group->cpumask) >
+- first_cpu(group_leader->cpumask))) {
+- group_leader = group;
+- leader_nr_running = sum_nr_running;
+- }
++ * capacity but still has some space to pick up some load
++ * from other group and save more power
++ */
++ if (sum_nr_running <= group_capacity - 1) {
++ if (sum_nr_running > leader_nr_running ||
++ (sum_nr_running == leader_nr_running &&
++ first_cpu(group->cpumask) >
++ first_cpu(group_leader->cpumask))) {
++ group_leader = group;
++ leader_nr_running = sum_nr_running;
++ }
+ }
+ group_next:
+ #endif
+@@ -2461,7 +2054,7 @@ group_next:
+ * a think about bumping its value to force at least one task to be
+ * moved
+ */
+- if (*imbalance < busiest_load_per_task) {
++ if (*imbalance + SCHED_LOAD_SCALE_FUZZ < busiest_load_per_task) {
+ unsigned long tmp, pwr_now, pwr_move;
+ unsigned int imbn;
+
+@@ -2475,7 +2068,8 @@ small_imbalance:
+ } else
+ this_load_per_task = SCHED_LOAD_SCALE;
+
+- if (max_load - this_load >= busiest_load_per_task * imbn) {
++ if (max_load - this_load + SCHED_LOAD_SCALE_FUZZ >=
++ busiest_load_per_task * imbn) {
+ *imbalance = busiest_load_per_task;
+ return busiest;
+ }
+@@ -2884,30 +2478,6 @@ static void active_load_balance(struct r
+ spin_unlock(&target_rq->lock);
+ }
+
+-static void update_load(struct rq *this_rq)
+-{
+- unsigned long this_load;
+- int i, scale;
+-
+- this_load = this_rq->raw_weighted_load;
+-
+- /* Update our load: */
+- for (i = 0, scale = 1; i < 3; i++, scale <<= 1) {
+- unsigned long old_load, new_load;
+-
+- old_load = this_rq->cpu_load[i];
+- new_load = this_load;
+- /*
+- * Round up the averaging division if load is increasing. This
+- * prevents us from getting stuck on 9 if the load is 10, for
+- * example.
+- */
+- if (new_load > old_load)
+- new_load += scale-1;
+- this_rq->cpu_load[i] = (old_load*(scale-1) + new_load) / scale;
+- }
+-}
+-
+ /*
+ * run_rebalance_domains is triggered when needed from the scheduler tick.
+ *
+@@ -2987,76 +2557,27 @@ static inline void idle_balance(int cpu,
+ }
+ #endif
+
+-static inline void wake_priority_sleeper(struct rq *rq)
+-{
+-#ifdef CONFIG_SCHED_SMT
+- if (!rq->nr_running)
+- return;
+-
+- spin_lock(&rq->lock);
+- /*
+- * If an SMT sibling task has been put to sleep for priority
+- * reasons reschedule the idle task to see if it can now run.
+- */
+- if (rq->nr_running)
+- resched_task(rq->idle);
+- spin_unlock(&rq->lock);
+-#endif
+-}
+-
+ DEFINE_PER_CPU(struct kernel_stat, kstat);
+
+ EXPORT_PER_CPU_SYMBOL(kstat);
+
+ /*
+- * This is called on clock ticks and on context switches.
+- * Bank in p->sched_time the ns elapsed since the last tick or switch.
+- */
+-static inline void
+-update_cpu_clock(struct task_struct *p, struct rq *rq, unsigned long long now)
+-{
+- p->sched_time += now - p->last_ran;
+- p->last_ran = rq->most_recent_timestamp = now;
+-}
+-
+-/*
+- * Return current->sched_time plus any more ns on the sched_clock
++ * Return current->sum_exec_runtime plus any more ns on the sched_clock
+ * that have not yet been banked.
+ */
+-unsigned long long current_sched_time(const struct task_struct *p)
++unsigned long long current_sched_runtime(const struct task_struct *p)
+ {
+ unsigned long long ns;
+ unsigned long flags;
+
+ local_irq_save(flags);
+- ns = p->sched_time + sched_clock() - p->last_ran;
++ ns = p->sum_exec_runtime + sched_clock() - p->last_ran;
+ local_irq_restore(flags);
+
+ return ns;
+ }
+
+ /*
+- * We place interactive tasks back into the active array, if possible.
+- *
+- * To guarantee that this does not starve expired tasks we ignore the
+- * interactivity of a task if the first expired task had to wait more
+- * than a 'reasonable' amount of time. This deadline timeout is
+- * load-dependent, as the frequency of array switched decreases with
+- * increasing number of running tasks. We also ignore the interactivity
+- * if a better static_prio task has expired:
+- */
+-static inline int expired_starving(struct rq *rq)
+-{
+- if (rq->curr->static_prio > rq->best_expired_prio)
+- return 1;
+- if (!STARVATION_LIMIT || !rq->expired_timestamp)
+- return 0;
+- if (jiffies - rq->expired_timestamp > STARVATION_LIMIT * rq->nr_running)
+- return 1;
+- return 0;
+-}
+-
+-/*
+ * Account user cpu time to a process.
+ * @p: the process that the cpu time gets accounted to
+ * @hardirq_offset: the offset to subtract from hardirq_count()
+@@ -3129,81 +2650,6 @@ void account_steal_time(struct task_stru
+ cpustat->steal = cputime64_add(cpustat->steal, tmp);
+ }
+
+-static void task_running_tick(struct rq *rq, struct task_struct *p)
+-{
+- if (p->array != rq->active) {
+- /* Task has expired but was not scheduled yet */
+- set_tsk_need_resched(p);
+- return;
+- }
+- spin_lock(&rq->lock);
+- /*
+- * The task was running during this tick - update the
+- * time slice counter. Note: we do not update a thread's
+- * priority until it either goes to sleep or uses up its
+- * timeslice. This makes it possible for interactive tasks
+- * to use up their timeslices at their highest priority levels.
+- */
+- if (rt_task(p)) {
+- /*
+- * RR tasks need a special form of timeslice management.
+- * FIFO tasks have no timeslices.
+- */
+- if ((p->policy == SCHED_RR) && !--p->time_slice) {
+- p->time_slice = task_timeslice(p);
+- p->first_time_slice = 0;
+- set_tsk_need_resched(p);
+-
+- /* put it at the end of the queue: */
+- requeue_task(p, rq->active);
+- }
+- goto out_unlock;
+- }
+- if (!--p->time_slice) {
+- dequeue_task(p, rq->active);
+- set_tsk_need_resched(p);
+- p->prio = effective_prio(p);
+- p->time_slice = task_timeslice(p);
+- p->first_time_slice = 0;
+-
+- if (!rq->expired_timestamp)
+- rq->expired_timestamp = jiffies;
+- if (!TASK_INTERACTIVE(p) || expired_starving(rq)) {
+- enqueue_task(p, rq->expired);
+- if (p->static_prio < rq->best_expired_prio)
+- rq->best_expired_prio = p->static_prio;
+- } else
+- enqueue_task(p, rq->active);
+- } else {
+- /*
+- * Prevent a too long timeslice allowing a task to monopolize
+- * the CPU. We do this by splitting up the timeslice into
+- * smaller pieces.
+- *
+- * Note: this does not mean the task's timeslices expire or
+- * get lost in any way, they just might be preempted by
+- * another task of equal priority. (one with higher
+- * priority would have preempted this task already.) We
+- * requeue this task to the end of the list on this priority
+- * level, which is in essence a round-robin of tasks with
+- * equal priority.
+- *
+- * This only applies to tasks in the interactive
+- * delta range with at least TIMESLICE_GRANULARITY to requeue.
+- */
+- if (TASK_INTERACTIVE(p) && !((task_timeslice(p) -
+- p->time_slice) % TIMESLICE_GRANULARITY(p)) &&
+- (p->time_slice >= TIMESLICE_GRANULARITY(p)) &&
+- (p->array == rq->active)) {
+-
+- requeue_task(p, rq->active);
+- set_tsk_need_resched(p);
+- }
+- }
+-out_unlock:
+- spin_unlock(&rq->lock);
+-}
+-
+ /*
+ * This function gets called by the timer code, with HZ frequency.
+ * We call it with interrupts disabled.
+@@ -3213,155 +2659,19 @@ out_unlock:
+ */
+ void scheduler_tick(void)
+ {
+- unsigned long long now = sched_clock();
+ struct task_struct *p = current;
+ int cpu = smp_processor_id();
+ struct rq *rq = cpu_rq(cpu);
+
+- update_cpu_clock(p, rq, now);
+-
+- if (p == rq->idle)
+- /* Task on the idle queue */
+- wake_priority_sleeper(rq);
+- else
++ if (p != rq->idle)
+ task_running_tick(rq, p);
++ update_load_fair(rq);
+ #ifdef CONFIG_SMP
+- update_load(rq);
+ if (time_after_eq(jiffies, rq->next_balance))
+ raise_softirq(SCHED_SOFTIRQ);
+ #endif
+ }
+
+-#ifdef CONFIG_SCHED_SMT
+-static inline void wakeup_busy_runqueue(struct rq *rq)
+-{
+- /* If an SMT runqueue is sleeping due to priority reasons wake it up */
+- if (rq->curr == rq->idle && rq->nr_running)
+- resched_task(rq->idle);
+-}
+-
+-/*
+- * Called with interrupt disabled and this_rq's runqueue locked.
+- */
+-static void wake_sleeping_dependent(int this_cpu)
+-{
+- struct sched_domain *tmp, *sd = NULL;
+- int i;
+-
+- for_each_domain(this_cpu, tmp) {
+- if (tmp->flags & SD_SHARE_CPUPOWER) {
+- sd = tmp;
+- break;
+- }
+- }
+-
+- if (!sd)
+- return;
+-
+- for_each_cpu_mask(i, sd->span) {
+- struct rq *smt_rq = cpu_rq(i);
+-
+- if (i == this_cpu)
+- continue;
+- if (unlikely(!spin_trylock(&smt_rq->lock)))
+- continue;
+-
+- wakeup_busy_runqueue(smt_rq);
+- spin_unlock(&smt_rq->lock);
+- }
+-}
+-
+-/*
+- * number of 'lost' timeslices this task wont be able to fully
+- * utilize, if another task runs on a sibling. This models the
+- * slowdown effect of other tasks running on siblings:
+- */
+-static inline unsigned long
+-smt_slice(struct task_struct *p, struct sched_domain *sd)
+-{
+- return p->time_slice * (100 - sd->per_cpu_gain) / 100;
+-}
+-
+-/*
+- * To minimise lock contention and not have to drop this_rq's runlock we only
+- * trylock the sibling runqueues and bypass those runqueues if we fail to
+- * acquire their lock. As we only trylock the normal locking order does not
+- * need to be obeyed.
+- */
+-static int
+-dependent_sleeper(int this_cpu, struct rq *this_rq, struct task_struct *p)
+-{
+- struct sched_domain *tmp, *sd = NULL;
+- int ret = 0, i;
+-
+- /* kernel/rt threads do not participate in dependent sleeping */
+- if (!p->mm || rt_task(p))
+- return 0;
+-
+- for_each_domain(this_cpu, tmp) {
+- if (tmp->flags & SD_SHARE_CPUPOWER) {
+- sd = tmp;
+- break;
+- }
+- }
+-
+- if (!sd)
+- return 0;
+-
+- for_each_cpu_mask(i, sd->span) {
+- struct task_struct *smt_curr;
+- struct rq *smt_rq;
+-
+- if (i == this_cpu)
+- continue;
+-
+- smt_rq = cpu_rq(i);
+- if (unlikely(!spin_trylock(&smt_rq->lock)))
+- continue;
+-
+- smt_curr = smt_rq->curr;
+-
+- if (!smt_curr->mm)
+- goto unlock;
+-
+- /*
+- * If a user task with lower static priority than the
+- * running task on the SMT sibling is trying to schedule,
+- * delay it till there is proportionately less timeslice
+- * left of the sibling task to prevent a lower priority
+- * task from using an unfair proportion of the
+- * physical cpu's resources. -ck
+- */
+- if (rt_task(smt_curr)) {
+- /*
+- * With real time tasks we run non-rt tasks only
+- * per_cpu_gain% of the time.
+- */
+- if ((jiffies % DEF_TIMESLICE) >
+- (sd->per_cpu_gain * DEF_TIMESLICE / 100))
+- ret = 1;
+- } else {
+- if (smt_curr->static_prio < p->static_prio &&
+- !TASK_PREEMPTS_CURR(p, smt_rq) &&
+- smt_slice(smt_curr, sd) > task_timeslice(p))
+- ret = 1;
+- }
+-unlock:
+- spin_unlock(&smt_rq->lock);
+- }
+- return ret;
+-}
+-#else
+-static inline void wake_sleeping_dependent(int this_cpu)
+-{
+-}
+-static inline int
+-dependent_sleeper(int this_cpu, struct rq *this_rq, struct task_struct *p)
+-{
+- return 0;
+-}
+-#endif
+-
+ #if defined(CONFIG_PREEMPT) && defined(CONFIG_DEBUG_PREEMPT)
+
+ void fastcall add_preempt_count(int val)
+@@ -3400,49 +2710,27 @@ EXPORT_SYMBOL(sub_preempt_count);
+
+ #endif
+
+-static inline int interactive_sleep(enum sleep_type sleep_type)
+-{
+- return (sleep_type == SLEEP_INTERACTIVE ||
+- sleep_type == SLEEP_INTERRUPTED);
+-}
+-
+ /*
+- * schedule() is the main scheduler function.
++ * Various schedule()-time debugging checks and statistics:
+ */
+-asmlinkage void __sched schedule(void)
++static inline void schedule_debug(struct rq *rq, struct task_struct *prev)
+ {
+- struct task_struct *prev, *next;
+- struct prio_array *array;
+- struct list_head *queue;
+- unsigned long long now;
+- unsigned long run_time;
+- int cpu, idx, new_prio;
+- long *switch_count;
+- struct rq *rq;
+-
+ /*
+ * Test if we are atomic. Since do_exit() needs to call into
+ * schedule() atomically, we ignore that path for now.
+ * Otherwise, whine if we are scheduling when we should not be.
+ */
+- if (unlikely(in_atomic() && !current->exit_state)) {
++ if (unlikely(in_atomic_preempt_off() && !prev->exit_state)) {
+ printk(KERN_ERR "BUG: scheduling while atomic: "
+ "%s/0x%08x/%d\n",
+- current->comm, preempt_count(), current->pid);
+- debug_show_held_locks(current);
++ prev->comm, preempt_count(), prev->pid);
++ debug_show_held_locks(prev);
+ if (irqs_disabled())
+- print_irqtrace_events(current);
++ print_irqtrace_events(prev);
+ dump_stack();
+ }
+ profile_hit(SCHED_PROFILING, __builtin_return_address(0));
+
+-need_resched:
+- preempt_disable();
+- prev = current;
+- release_kernel_lock(prev);
+-need_resched_nonpreemptible:
+- rq = this_rq();
+-
+ /*
+ * The idle thread is not allowed to schedule!
+ * Remove this check after it has been exercised a bit.
+@@ -3453,19 +2741,45 @@ need_resched_nonpreemptible:
+ }
+
+ schedstat_inc(rq, sched_cnt);
+- now = sched_clock();
+- if (likely((long long)(now - prev->timestamp) < NS_MAX_SLEEP_AVG)) {
+- run_time = now - prev->timestamp;
+- if (unlikely((long long)(now - prev->timestamp) < 0))
+- run_time = 0;
+- } else
+- run_time = NS_MAX_SLEEP_AVG;
++}
+
+- /*
+- * Tasks charged proportionately less run_time at high sleep_avg to
+- * delay them losing their interactive status
+- */
+- run_time /= (CURRENT_BONUS(prev) ? : 1);
++static inline struct task_struct *
++pick_next_task(struct rq *rq, struct task_struct *prev)
++{
++ struct sched_class *class = sched_class_highest;
++ u64 now = __rq_clock(rq);
++ struct task_struct *p;
++
++ prev->sched_class->put_prev_task(rq, prev, now);
++
++ do {
++ p = class->pick_next_task(rq, now);
++ if (p)
++ return p;
++ class = class->next;
++ } while (class);
++
++ return NULL;
++}
++
++/*
++ * schedule() is the main scheduler function.
++ */
++asmlinkage void __sched schedule(void)
++{
++ struct task_struct *prev, *next;
++ long *switch_count;
++ struct rq *rq;
++ int cpu;
++
++need_resched:
++ preempt_disable();
++ prev = current;
++ release_kernel_lock(prev);
++need_resched_nonpreemptible:
++ rq = this_rq();
++
++ schedule_debug(rq, prev);
+
+ spin_lock_irq(&rq->lock);
+
+@@ -3478,7 +2792,7 @@ need_resched_nonpreemptible:
+ else {
+ if (prev->state == TASK_UNINTERRUPTIBLE)
+ rq->nr_uninterruptible++;
+- deactivate_task(prev, rq);
++ deactivate_task(rq, prev, 1);
+ }
+ }
+
+@@ -3486,68 +2800,25 @@ need_resched_nonpreemptible:
+ if (unlikely(!rq->nr_running)) {
+ idle_balance(cpu, rq);
+ if (!rq->nr_running) {
++ prev->sched_class->put_prev_task(rq, prev,
++ __rq_clock(rq));
+ next = rq->idle;
+- rq->expired_timestamp = 0;
+- wake_sleeping_dependent(cpu);
++ schedstat_inc(rq, sched_goidle);
+ goto switch_tasks;
+ }
+ }
+
+- array = rq->active;
+- if (unlikely(!array->nr_active)) {
+- /*
+- * Switch the active and expired arrays.
+- */
+- schedstat_inc(rq, sched_switch);
+- rq->active = rq->expired;
+- rq->expired = array;
+- array = rq->active;
+- rq->expired_timestamp = 0;
+- rq->best_expired_prio = MAX_PRIO;
+- }
+-
+- idx = sched_find_first_bit(array->bitmap);
+- queue = array->queue + idx;
+- next = list_entry(queue->next, struct task_struct, run_list);
+-
+- if (!rt_task(next) && interactive_sleep(next->sleep_type)) {
+- unsigned long long delta = now - next->timestamp;
+- if (unlikely((long long)(now - next->timestamp) < 0))
+- delta = 0;
+-
+- if (next->sleep_type == SLEEP_INTERACTIVE)
+- delta = delta * (ON_RUNQUEUE_WEIGHT * 128 / 100) / 128;
+-
+- array = next->array;
+- new_prio = recalc_task_prio(next, next->timestamp + delta);
+-
+- if (unlikely(next->prio != new_prio)) {
+- dequeue_task(next, array);
+- next->prio = new_prio;
+- enqueue_task(next, array);
+- }
+- }
+- next->sleep_type = SLEEP_NORMAL;
+- if (rq->nr_running == 1 && dependent_sleeper(cpu, rq, next))
+- next = rq->idle;
++ next = pick_next_task(rq, prev);
++ next->nr_switches++;
++
+ switch_tasks:
+- if (next == rq->idle)
+- schedstat_inc(rq, sched_goidle);
+ prefetch(next);
+ prefetch_stack(next);
+ clear_tsk_need_resched(prev);
+ rcu_qsctr_inc(task_cpu(prev));
+
+- update_cpu_clock(prev, rq, now);
+-
+- prev->sleep_avg -= run_time;
+- if ((long)prev->sleep_avg <= 0)
+- prev->sleep_avg = 0;
+- prev->timestamp = prev->last_ran = now;
+-
+ sched_info_switch(prev, next);
+ if (likely(prev != next)) {
+- next->timestamp = next->last_ran = now;
+ rq->nr_switches++;
+ rq->curr = next;
+ ++*switch_count;
+@@ -3978,29 +3249,28 @@ EXPORT_SYMBOL(sleep_on_timeout);
+ */
+ void rt_mutex_setprio(struct task_struct *p, int prio)
+ {
+- struct prio_array *array;
+ unsigned long flags;
++ int oldprio, on_rq;
+ struct rq *rq;
+- int oldprio;
+
+ BUG_ON(prio < 0 || prio > MAX_PRIO);
+
+ rq = task_rq_lock(p, &flags);
+
+ oldprio = p->prio;
+- array = p->array;
+- if (array)
+- dequeue_task(p, array);
++ on_rq = p->on_rq;
++ if (on_rq)
++ dequeue_task(rq, p, 0);
++
++ if (rt_prio(prio))
++ p->sched_class = &rt_sched_class;
++ else
++ p->sched_class = &fair_sched_class;
++
+ p->prio = prio;
+
+- if (array) {
+- /*
+- * If changing to an RT priority then queue it
+- * in the active array!
+- */
+- if (rt_task(p))
+- array = rq->active;
+- enqueue_task(p, array);
++ if (on_rq) {
++ enqueue_task(rq, p, 0);
+ /*
+ * Reschedule if we are currently running on this runqueue and
+ * our priority decreased, or if we are not currently running on
+@@ -4009,8 +3279,9 @@ void rt_mutex_setprio(struct task_struct
+ if (task_running(rq, p)) {
+ if (p->prio > oldprio)
+ resched_task(rq->curr);
+- } else if (TASK_PREEMPTS_CURR(p, rq))
+- resched_task(rq->curr);
++ } else {
++ check_preempt_curr(rq, p);
++ }
+ }
+ task_rq_unlock(rq, &flags);
+ }
+@@ -4019,8 +3290,7 @@ void rt_mutex_setprio(struct task_struct
+
+ void set_user_nice(struct task_struct *p, long nice)
+ {
+- struct prio_array *array;
+- int old_prio, delta;
++ int old_prio, delta, on_rq;
+ unsigned long flags;
+ struct rq *rq;
+
+@@ -4041,9 +3311,9 @@ void set_user_nice(struct task_struct *p
+ p->static_prio = NICE_TO_PRIO(nice);
+ goto out_unlock;
+ }
+- array = p->array;
+- if (array) {
+- dequeue_task(p, array);
++ on_rq = p->on_rq;
++ if (on_rq) {
++ dequeue_task(rq, p, 0);
+ dec_raw_weighted_load(rq, p);
+ }
+
+@@ -4053,8 +3323,8 @@ void set_user_nice(struct task_struct *p
+ p->prio = effective_prio(p);
+ delta = p->prio - old_prio;
+
+- if (array) {
+- enqueue_task(p, array);
++ if (on_rq) {
++ enqueue_task(rq, p, 0);
+ inc_raw_weighted_load(rq, p);
+ /*
+ * If the task increased its priority or is running and
+@@ -4175,20 +3445,27 @@ static inline struct task_struct *find_p
+ }
+
+ /* Actually do priority change: must hold rq lock. */
+-static void __setscheduler(struct task_struct *p, int policy, int prio)
++static void
++__setscheduler(struct rq *rq, struct task_struct *p, int policy, int prio)
+ {
+- BUG_ON(p->array);
++ BUG_ON(p->on_rq);
+
+ p->policy = policy;
++ switch (p->policy) {
++ case SCHED_NORMAL:
++ case SCHED_BATCH:
++ p->sched_class = &fair_sched_class;
++ break;
++ case SCHED_FIFO:
++ case SCHED_RR:
++ p->sched_class = &rt_sched_class;
++ break;
++ }
++
+ p->rt_priority = prio;
+ p->normal_prio = normal_prio(p);
+ /* we are holding p->pi_lock already */
+ p->prio = rt_mutex_getprio(p);
+- /*
+- * SCHED_BATCH tasks are treated as perpetual CPU hogs:
+- */
+- if (policy == SCHED_BATCH)
+- p->sleep_avg = 0;
+ set_load_weight(p);
+ }
+
+@@ -4204,8 +3481,7 @@ static void __setscheduler(struct task_s
+ int sched_setscheduler(struct task_struct *p, int policy,
+ struct sched_param *param)
+ {
+- int retval, oldprio, oldpolicy = -1;
+- struct prio_array *array;
++ int retval, oldprio, oldpolicy = -1, on_rq;
+ unsigned long flags;
+ struct rq *rq;
+
+@@ -4279,13 +3555,13 @@ recheck:
+ spin_unlock_irqrestore(&p->pi_lock, flags);
+ goto recheck;
+ }
+- array = p->array;
+- if (array)
+- deactivate_task(p, rq);
++ on_rq = p->on_rq;
++ if (on_rq)
++ deactivate_task(rq, p, 0);
+ oldprio = p->prio;
+- __setscheduler(p, policy, param->sched_priority);
+- if (array) {
+- __activate_task(p, rq);
++ __setscheduler(rq, p, policy, param->sched_priority);
++ if (on_rq) {
++ activate_task(rq, p, 0);
+ /*
+ * Reschedule if we are currently running on this runqueue and
+ * our priority decreased, or if we are not currently running on
+@@ -4294,8 +3570,9 @@ recheck:
+ if (task_running(rq, p)) {
+ if (p->prio > oldprio)
+ resched_task(rq->curr);
+- } else if (TASK_PREEMPTS_CURR(p, rq))
+- resched_task(rq->curr);
++ } else {
++ check_preempt_curr(rq, p);
++ }
+ }
+ __task_rq_unlock(rq);
+ spin_unlock_irqrestore(&p->pi_lock, flags);
+@@ -4558,50 +3835,66 @@ asmlinkage long sys_sched_getaffinity(pi
+ if (ret < 0)
+ return ret;
+
+- if (copy_to_user(user_mask_ptr, &mask, sizeof(cpumask_t)))
+- return -EFAULT;
++ if (copy_to_user(user_mask_ptr, &mask, sizeof(cpumask_t)))
++ return -EFAULT;
++
++ return sizeof(cpumask_t);
++}
++
++/**
++ * sys_sched_yield - yield the current processor to other threads.
++ *
++ * This function yields the current CPU to other tasks. If there are no
++ * other threads running on this CPU then this function will return.
++ */
++asmlinkage long sys_sched_yield(void)
++{
++ struct rq *rq = this_rq_lock();
++
++ schedstat_inc(rq, yld_cnt);
++ if (rq->nr_running == 1)
++ schedstat_inc(rq, yld_act_empty);
++ else
++ current->sched_class->yield_task(rq, current, NULL);
++
++ /*
++ * Since we are going to call schedule() anyway, there's
++ * no need to preempt or enable interrupts:
++ */
++ __release(rq->lock);
++ spin_release(&rq->lock.dep_map, 1, _THIS_IP_);
++ _raw_spin_unlock(&rq->lock);
++ preempt_enable_no_resched();
++
++ schedule();
+
+- return sizeof(cpumask_t);
++ return 0;
+ }
+
+ /**
+- * sys_sched_yield - yield the current processor to other threads.
++ * sys_sched_yield_to - yield the current processor to another thread
+ *
+- * this function yields the current CPU by moving the calling thread
++ * This function yields the current CPU by moving the calling thread
+ * to the expired array. If there are no other threads running on this
+ * CPU then this function will return.
+ */
+-asmlinkage long sys_sched_yield(void)
++asmlinkage long sys_sched_yield_to(pid_t pid)
+ {
+- struct rq *rq = this_rq_lock();
+- struct prio_array *array = current->array, *target = rq->expired;
++ struct task_struct *p_to;
++ struct rq *rq;
+
+- schedstat_inc(rq, yld_cnt);
+- /*
+- * We implement yielding by moving the task into the expired
+- * queue.
+- *
+- * (special rule: RT tasks will just roundrobin in the active
+- * array.)
+- */
+- if (rt_task(current))
+- target = rq->active;
++ rcu_read_lock();
++ p_to = find_task_by_pid(pid);
++ if (!p_to)
++ goto out_unlock;
+
+- if (array->nr_active == 1) {
++ rq = this_rq_lock();
++
++ schedstat_inc(rq, yld_cnt);
++ if (rq->nr_running == 1)
+ schedstat_inc(rq, yld_act_empty);
+- if (!rq->expired->nr_active)
+- schedstat_inc(rq, yld_both_empty);
+- } else if (!rq->expired->nr_active)
+- schedstat_inc(rq, yld_exp_empty);
+-
+- if (array != target) {
+- dequeue_task(current, array);
+- enqueue_task(current, target);
+- } else
+- /*
+- * requeue_task is cheaper so perform that if possible.
+- */
+- requeue_task(current, array);
++ else
++ current->sched_class->yield_task(rq, current, p_to);
+
+ /*
+ * Since we are going to call schedule() anyway, there's
+@@ -4610,13 +3903,19 @@ asmlinkage long sys_sched_yield(void)
+ __release(rq->lock);
+ spin_release(&rq->lock.dep_map, 1, _THIS_IP_);
+ _raw_spin_unlock(&rq->lock);
++ rcu_read_unlock();
+ preempt_enable_no_resched();
+
+ schedule();
+
+ return 0;
++
++out_unlock:
++ rcu_read_unlock();
++ return -ESRCH;
+ }
+
++
+ static void __cond_resched(void)
+ {
+ #ifdef CONFIG_DEBUG_SPINLOCK_SLEEP
+@@ -4812,7 +4111,7 @@ long sys_sched_rr_get_interval(pid_t pid
+ goto out_unlock;
+
+ jiffies_to_timespec(p->policy == SCHED_FIFO ?
+- 0 : task_timeslice(p), &t);
++ 0 : static_prio_timeslice(p->static_prio), &t);
+ read_unlock(&tasklist_lock);
+ retval = copy_to_user(interval, &t, sizeof(t)) ? -EFAULT : 0;
+ out_nounlock:
+@@ -4915,7 +4214,7 @@ void show_state_filter(unsigned long sta
+ * console might take alot of time:
+ */
+ touch_nmi_watchdog();
+- if (p->state & state_filter)
++ if (!state_filter || (p->state & state_filter))
+ show_task(p);
+ } while_each_thread(g, p);
+
+@@ -4925,6 +4224,7 @@ void show_state_filter(unsigned long sta
+ */
+ if (state_filter == -1)
+ debug_show_all_locks();
++ sysrq_sched_debug_show();
+ }
+
+ /**
+@@ -4940,11 +4240,10 @@ void __cpuinit init_idle(struct task_str
+ struct rq *rq = cpu_rq(cpu);
+ unsigned long flags;
+
+- idle->timestamp = sched_clock();
+- idle->sleep_avg = 0;
+- idle->array = NULL;
++ __sched_fork(idle);
++ idle->exec_start = sched_clock();
++
+ idle->prio = idle->normal_prio = MAX_PRIO;
+- idle->state = TASK_RUNNING;
+ idle->cpus_allowed = cpumask_of_cpu(cpu);
+ set_task_cpu(idle, cpu);
+
+@@ -5062,19 +4361,10 @@ static int __migrate_task(struct task_st
+ goto out;
+
+ set_task_cpu(p, dest_cpu);
+- if (p->array) {
+- /*
+- * Sync timestamp with rq_dest's before activating.
+- * The same thing could be achieved by doing this step
+- * afterwards, and pretending it was a local activate.
+- * This way is cleaner and logically correct.
+- */
+- p->timestamp = p->timestamp - rq_src->most_recent_timestamp
+- + rq_dest->most_recent_timestamp;
+- deactivate_task(p, rq_src);
+- __activate_task(p, rq_dest);
+- if (TASK_PREEMPTS_CURR(p, rq_dest))
+- resched_task(rq_dest->curr);
++ if (p->on_rq) {
++ deactivate_task(rq_src, p, 0);
++ activate_task(rq_dest, p, 0);
++ check_preempt_curr(rq_dest, p);
+ }
+ ret = 1;
+ out:
+@@ -5246,10 +4536,10 @@ void sched_idle_next(void)
+ */
+ spin_lock_irqsave(&rq->lock, flags);
+
+- __setscheduler(p, SCHED_FIFO, MAX_RT_PRIO-1);
++ __setscheduler(rq, p, SCHED_FIFO, MAX_RT_PRIO-1);
+
+ /* Add idle task to the _front_ of its priority queue: */
+- __activate_idle_task(p, rq);
++ activate_idle_task(p, rq);
+
+ spin_unlock_irqrestore(&rq->lock, flags);
+ }
+@@ -5299,16 +4589,15 @@ static void migrate_dead(unsigned int de
+ static void migrate_dead_tasks(unsigned int dead_cpu)
+ {
+ struct rq *rq = cpu_rq(dead_cpu);
+- unsigned int arr, i;
++ struct task_struct *next;
+
+- for (arr = 0; arr < 2; arr++) {
+- for (i = 0; i < MAX_PRIO; i++) {
+- struct list_head *list = &rq->arrays[arr].queue[i];
+-
+- while (!list_empty(list))
+- migrate_dead(dead_cpu, list_entry(list->next,
+- struct task_struct, run_list));
+- }
++ for (;;) {
++ if (!rq->nr_running)
++ break;
++ next = pick_next_task(rq, rq->curr);
++ if (!next)
++ break;
++ migrate_dead(dead_cpu, next);
+ }
+ }
+ #endif /* CONFIG_HOTPLUG_CPU */
+@@ -5334,7 +4623,7 @@ migration_call(struct notifier_block *nf
+ kthread_bind(p, cpu);
+ /* Must be high prio: stop_machine expects to yield to it. */
+ rq = task_rq_lock(p, &flags);
+- __setscheduler(p, SCHED_FIFO, MAX_RT_PRIO-1);
++ __setscheduler(rq, p, SCHED_FIFO, MAX_RT_PRIO-1);
+ task_rq_unlock(rq, &flags);
+ cpu_rq(cpu)->migration_thread = p;
+ break;
+@@ -5362,9 +4651,9 @@ migration_call(struct notifier_block *nf
+ rq->migration_thread = NULL;
+ /* Idle task back to normal (off runqueue, low prio) */
+ rq = task_rq_lock(rq->idle, &flags);
+- deactivate_task(rq->idle, rq);
++ deactivate_task(rq, rq->idle, 0);
+ rq->idle->static_prio = MAX_PRIO;
+- __setscheduler(rq->idle, SCHED_NORMAL, 0);
++ __setscheduler(rq, rq->idle, SCHED_NORMAL, 0);
+ migrate_dead_tasks(cpu);
+ task_rq_unlock(rq, &flags);
+ migrate_nr_uninterruptible(rq);
+@@ -5665,483 +4954,6 @@ init_sched_build_groups(cpumask_t span,
+
+ #define SD_NODES_PER_DOMAIN 16
+
+-/*
+- * Self-tuning task migration cost measurement between source and target CPUs.
+- *
+- * This is done by measuring the cost of manipulating buffers of varying
+- * sizes. For a given buffer-size here are the steps that are taken:
+- *
+- * 1) the source CPU reads+dirties a shared buffer
+- * 2) the target CPU reads+dirties the same shared buffer
+- *
+- * We measure how long they take, in the following 4 scenarios:
+- *
+- * - source: CPU1, target: CPU2 | cost1
+- * - source: CPU2, target: CPU1 | cost2
+- * - source: CPU1, target: CPU1 | cost3
+- * - source: CPU2, target: CPU2 | cost4
+- *
+- * We then calculate the cost3+cost4-cost1-cost2 difference - this is
+- * the cost of migration.
+- *
+- * We then start off from a small buffer-size and iterate up to larger
+- * buffer sizes, in 5% steps - measuring each buffer-size separately, and
+- * doing a maximum search for the cost. (The maximum cost for a migration
+- * normally occurs when the working set size is around the effective cache
+- * size.)
+- */
+-#define SEARCH_SCOPE 2
+-#define MIN_CACHE_SIZE (64*1024U)
+-#define DEFAULT_CACHE_SIZE (5*1024*1024U)
+-#define ITERATIONS 1
+-#define SIZE_THRESH 130
+-#define COST_THRESH 130
+-
+-/*
+- * The migration cost is a function of 'domain distance'. Domain
+- * distance is the number of steps a CPU has to iterate down its
+- * domain tree to share a domain with the other CPU. The farther
+- * two CPUs are from each other, the larger the distance gets.
+- *
+- * Note that we use the distance only to cache measurement results,
+- * the distance value is not used numerically otherwise. When two
+- * CPUs have the same distance it is assumed that the migration
+- * cost is the same. (this is a simplification but quite practical)
+- */
+-#define MAX_DOMAIN_DISTANCE 32
+-
+-static unsigned long long migration_cost[MAX_DOMAIN_DISTANCE] =
+- { [ 0 ... MAX_DOMAIN_DISTANCE-1 ] =
+-/*
+- * Architectures may override the migration cost and thus avoid
+- * boot-time calibration. Unit is nanoseconds. Mostly useful for
+- * virtualized hardware:
+- */
+-#ifdef CONFIG_DEFAULT_MIGRATION_COST
+- CONFIG_DEFAULT_MIGRATION_COST
+-#else
+- -1LL
+-#endif
+-};
+-
+-/*
+- * Allow override of migration cost - in units of microseconds.
+- * E.g. migration_cost=1000,2000,3000 will set up a level-1 cost
+- * of 1 msec, level-2 cost of 2 msecs and level3 cost of 3 msecs:
+- */
+-static int __init migration_cost_setup(char *str)
+-{
+- int ints[MAX_DOMAIN_DISTANCE+1], i;
+-
+- str = get_options(str, ARRAY_SIZE(ints), ints);
+-
+- printk("#ints: %d\n", ints[0]);
+- for (i = 1; i <= ints[0]; i++) {
+- migration_cost[i-1] = (unsigned long long)ints[i]*1000;
+- printk("migration_cost[%d]: %Ld\n", i-1, migration_cost[i-1]);
+- }
+- return 1;
+-}
+-
+-__setup ("migration_cost=", migration_cost_setup);
+-
+-/*
+- * Global multiplier (divisor) for migration-cutoff values,
+- * in percentiles. E.g. use a value of 150 to get 1.5 times
+- * longer cache-hot cutoff times.
+- *
+- * (We scale it from 100 to 128 to long long handling easier.)
+- */
+-
+-#define MIGRATION_FACTOR_SCALE 128
+-
+-static unsigned int migration_factor = MIGRATION_FACTOR_SCALE;
+-
+-static int __init setup_migration_factor(char *str)
+-{
+- get_option(&str, &migration_factor);
+- migration_factor = migration_factor * MIGRATION_FACTOR_SCALE / 100;
+- return 1;
+-}
+-
+-__setup("migration_factor=", setup_migration_factor);
+-
+-/*
+- * Estimated distance of two CPUs, measured via the number of domains
+- * we have to pass for the two CPUs to be in the same span:
+- */
+-static unsigned long domain_distance(int cpu1, int cpu2)
+-{
+- unsigned long distance = 0;
+- struct sched_domain *sd;
+-
+- for_each_domain(cpu1, sd) {
+- WARN_ON(!cpu_isset(cpu1, sd->span));
+- if (cpu_isset(cpu2, sd->span))
+- return distance;
+- distance++;
+- }
+- if (distance >= MAX_DOMAIN_DISTANCE) {
+- WARN_ON(1);
+- distance = MAX_DOMAIN_DISTANCE-1;
+- }
+-
+- return distance;
+-}
+-
+-static unsigned int migration_debug;
+-
+-static int __init setup_migration_debug(char *str)
+-{
+- get_option(&str, &migration_debug);
+- return 1;
+-}
+-
+-__setup("migration_debug=", setup_migration_debug);
+-
+-/*
+- * Maximum cache-size that the scheduler should try to measure.
+- * Architectures with larger caches should tune this up during
+- * bootup. Gets used in the domain-setup code (i.e. during SMP
+- * bootup).
+- */
+-unsigned int max_cache_size;
+-
+-static int __init setup_max_cache_size(char *str)
+-{
+- get_option(&str, &max_cache_size);
+- return 1;
+-}
+-
+-__setup("max_cache_size=", setup_max_cache_size);
+-
+-/*
+- * Dirty a big buffer in a hard-to-predict (for the L2 cache) way. This
+- * is the operation that is timed, so we try to generate unpredictable
+- * cachemisses that still end up filling the L2 cache:
+- */
+-static void touch_cache(void *__cache, unsigned long __size)
+-{
+- unsigned long size = __size / sizeof(long);
+- unsigned long chunk1 = size / 3;
+- unsigned long chunk2 = 2 * size / 3;
+- unsigned long *cache = __cache;
+- int i;
+-
+- for (i = 0; i < size/6; i += 8) {
+- switch (i % 6) {
+- case 0: cache[i]++;
+- case 1: cache[size-1-i]++;
+- case 2: cache[chunk1-i]++;
+- case 3: cache[chunk1+i]++;
+- case 4: cache[chunk2-i]++;
+- case 5: cache[chunk2+i]++;
+- }
+- }
+-}
+-
+-/*
+- * Measure the cache-cost of one task migration. Returns in units of nsec.
+- */
+-static unsigned long long
+-measure_one(void *cache, unsigned long size, int source, int target)
+-{
+- cpumask_t mask, saved_mask;
+- unsigned long long t0, t1, t2, t3, cost;
+-
+- saved_mask = current->cpus_allowed;
+-
+- /*
+- * Flush source caches to RAM and invalidate them:
+- */
+- sched_cacheflush();
+-
+- /*
+- * Migrate to the source CPU:
+- */
+- mask = cpumask_of_cpu(source);
+- set_cpus_allowed(current, mask);
+- WARN_ON(smp_processor_id() != source);
+-
+- /*
+- * Dirty the working set:
+- */
+- t0 = sched_clock();
+- touch_cache(cache, size);
+- t1 = sched_clock();
+-
+- /*
+- * Migrate to the target CPU, dirty the L2 cache and access
+- * the shared buffer. (which represents the working set
+- * of a migrated task.)
+- */
+- mask = cpumask_of_cpu(target);
+- set_cpus_allowed(current, mask);
+- WARN_ON(smp_processor_id() != target);
+-
+- t2 = sched_clock();
+- touch_cache(cache, size);
+- t3 = sched_clock();
+-
+- cost = t1-t0 + t3-t2;
+-
+- if (migration_debug >= 2)
+- printk("[%d->%d]: %8Ld %8Ld %8Ld => %10Ld.\n",
+- source, target, t1-t0, t1-t0, t3-t2, cost);
+- /*
+- * Flush target caches to RAM and invalidate them:
+- */
+- sched_cacheflush();
+-
+- set_cpus_allowed(current, saved_mask);
+-
+- return cost;
+-}
+-
+-/*
+- * Measure a series of task migrations and return the average
+- * result. Since this code runs early during bootup the system
+- * is 'undisturbed' and the average latency makes sense.
+- *
+- * The algorithm in essence auto-detects the relevant cache-size,
+- * so it will properly detect different cachesizes for different
+- * cache-hierarchies, depending on how the CPUs are connected.
+- *
+- * Architectures can prime the upper limit of the search range via
+- * max_cache_size, otherwise the search range defaults to 20MB...64K.
+- */
+-static unsigned long long
+-measure_cost(int cpu1, int cpu2, void *cache, unsigned int size)
+-{
+- unsigned long long cost1, cost2;
+- int i;
+-
+- /*
+- * Measure the migration cost of 'size' bytes, over an
+- * average of 10 runs:
+- *
+- * (We perturb the cache size by a small (0..4k)
+- * value to compensate size/alignment related artifacts.
+- * We also subtract the cost of the operation done on
+- * the same CPU.)
+- */
+- cost1 = 0;
+-
+- /*
+- * dry run, to make sure we start off cache-cold on cpu1,
+- * and to get any vmalloc pagefaults in advance:
+- */
+- measure_one(cache, size, cpu1, cpu2);
+- for (i = 0; i < ITERATIONS; i++)
+- cost1 += measure_one(cache, size - i * 1024, cpu1, cpu2);
+-
+- measure_one(cache, size, cpu2, cpu1);
+- for (i = 0; i < ITERATIONS; i++)
+- cost1 += measure_one(cache, size - i * 1024, cpu2, cpu1);
+-
+- /*
+- * (We measure the non-migrating [cached] cost on both
+- * cpu1 and cpu2, to handle CPUs with different speeds)
+- */
+- cost2 = 0;
+-
+- measure_one(cache, size, cpu1, cpu1);
+- for (i = 0; i < ITERATIONS; i++)
+- cost2 += measure_one(cache, size - i * 1024, cpu1, cpu1);
+-
+- measure_one(cache, size, cpu2, cpu2);
+- for (i = 0; i < ITERATIONS; i++)
+- cost2 += measure_one(cache, size - i * 1024, cpu2, cpu2);
+-
+- /*
+- * Get the per-iteration migration cost:
+- */
+- do_div(cost1, 2 * ITERATIONS);
+- do_div(cost2, 2 * ITERATIONS);
+-
+- return cost1 - cost2;
+-}
+-
+-static unsigned long long measure_migration_cost(int cpu1, int cpu2)
+-{
+- unsigned long long max_cost = 0, fluct = 0, avg_fluct = 0;
+- unsigned int max_size, size, size_found = 0;
+- long long cost = 0, prev_cost;
+- void *cache;
+-
+- /*
+- * Search from max_cache_size*5 down to 64K - the real relevant
+- * cachesize has to lie somewhere inbetween.
+- */
+- if (max_cache_size) {
+- max_size = max(max_cache_size * SEARCH_SCOPE, MIN_CACHE_SIZE);
+- size = max(max_cache_size / SEARCH_SCOPE, MIN_CACHE_SIZE);
+- } else {
+- /*
+- * Since we have no estimation about the relevant
+- * search range
+- */
+- max_size = DEFAULT_CACHE_SIZE * SEARCH_SCOPE;
+- size = MIN_CACHE_SIZE;
+- }
+-
+- if (!cpu_online(cpu1) || !cpu_online(cpu2)) {
+- printk("cpu %d and %d not both online!\n", cpu1, cpu2);
+- return 0;
+- }
+-
+- /*
+- * Allocate the working set:
+- */
+- cache = vmalloc(max_size);
+- if (!cache) {
+- printk("could not vmalloc %d bytes for cache!\n", 2 * max_size);
+- return 1000000; /* return 1 msec on very small boxen */
+- }
+-
+- while (size <= max_size) {
+- prev_cost = cost;
+- cost = measure_cost(cpu1, cpu2, cache, size);
+-
+- /*
+- * Update the max:
+- */
+- if (cost > 0) {
+- if (max_cost < cost) {
+- max_cost = cost;
+- size_found = size;
+- }
+- }
+- /*
+- * Calculate average fluctuation, we use this to prevent
+- * noise from triggering an early break out of the loop:
+- */
+- fluct = abs(cost - prev_cost);
+- avg_fluct = (avg_fluct + fluct)/2;
+-
+- if (migration_debug)
+- printk("-> [%d][%d][%7d] %3ld.%ld [%3ld.%ld] (%ld): "
+- "(%8Ld %8Ld)\n",
+- cpu1, cpu2, size,
+- (long)cost / 1000000,
+- ((long)cost / 100000) % 10,
+- (long)max_cost / 1000000,
+- ((long)max_cost / 100000) % 10,
+- domain_distance(cpu1, cpu2),
+- cost, avg_fluct);
+-
+- /*
+- * If we iterated at least 20% past the previous maximum,
+- * and the cost has dropped by more than 20% already,
+- * (taking fluctuations into account) then we assume to
+- * have found the maximum and break out of the loop early:
+- */
+- if (size_found && (size*100 > size_found*SIZE_THRESH))
+- if (cost+avg_fluct <= 0 ||
+- max_cost*100 > (cost+avg_fluct)*COST_THRESH) {
+-
+- if (migration_debug)
+- printk("-> found max.\n");
+- break;
+- }
+- /*
+- * Increase the cachesize in 10% steps:
+- */
+- size = size * 10 / 9;
+- }
+-
+- if (migration_debug)
+- printk("[%d][%d] working set size found: %d, cost: %Ld\n",
+- cpu1, cpu2, size_found, max_cost);
+-
+- vfree(cache);
+-
+- /*
+- * A task is considered 'cache cold' if at least 2 times
+- * the worst-case cost of migration has passed.
+- *
+- * (this limit is only listened to if the load-balancing
+- * situation is 'nice' - if there is a large imbalance we
+- * ignore it for the sake of CPU utilization and
+- * processing fairness.)
+- */
+- return 2 * max_cost * migration_factor / MIGRATION_FACTOR_SCALE;
+-}
+-
+-static void calibrate_migration_costs(const cpumask_t *cpu_map)
+-{
+- int cpu1 = -1, cpu2 = -1, cpu, orig_cpu = raw_smp_processor_id();
+- unsigned long j0, j1, distance, max_distance = 0;
+- struct sched_domain *sd;
+-
+- j0 = jiffies;
+-
+- /*
+- * First pass - calculate the cacheflush times:
+- */
+- for_each_cpu_mask(cpu1, *cpu_map) {
+- for_each_cpu_mask(cpu2, *cpu_map) {
+- if (cpu1 == cpu2)
+- continue;
+- distance = domain_distance(cpu1, cpu2);
+- max_distance = max(max_distance, distance);
+- /*
+- * No result cached yet?
+- */
+- if (migration_cost[distance] == -1LL)
+- migration_cost[distance] =
+- measure_migration_cost(cpu1, cpu2);
+- }
+- }
+- /*
+- * Second pass - update the sched domain hierarchy with
+- * the new cache-hot-time estimations:
+- */
+- for_each_cpu_mask(cpu, *cpu_map) {
+- distance = 0;
+- for_each_domain(cpu, sd) {
+- sd->cache_hot_time = migration_cost[distance];
+- distance++;
+- }
+- }
+- /*
+- * Print the matrix:
+- */
+- if (migration_debug)
+- printk("migration: max_cache_size: %d, cpu: %d MHz:\n",
+- max_cache_size,
+-#ifdef CONFIG_X86
+- cpu_khz/1000
+-#else
+- -1
+-#endif
+- );
+- if (system_state == SYSTEM_BOOTING && num_online_cpus() > 1) {
+- printk("migration_cost=");
+- for (distance = 0; distance <= max_distance; distance++) {
+- if (distance)
+- printk(",");
+- printk("%ld", (long)migration_cost[distance] / 1000);
+- }
+- printk("\n");
+- }
+- j1 = jiffies;
+- if (migration_debug)
+- printk("migration: %ld seconds\n", (j1-j0) / HZ);
+-
+- /*
+- * Move back to the original CPU. NUMA-Q gets confused
+- * if we migrate to another quad during bootup.
+- */
+- if (raw_smp_processor_id() != orig_cpu) {
+- cpumask_t mask = cpumask_of_cpu(orig_cpu),
+- saved_mask = current->cpus_allowed;
+-
+- set_cpus_allowed(current, mask);
+- set_cpus_allowed(current, saved_mask);
+- }
+-}
+-
+ #ifdef CONFIG_NUMA
+
+ /**
+@@ -6671,10 +5483,6 @@ static int build_sched_domains(const cpu
+ #endif
+ cpu_attach_domain(sd, i);
+ }
+- /*
+- * Tune cache-hot values:
+- */
+- calibrate_migration_costs(cpu_map);
+
+ return 0;
+
+@@ -6875,6 +5683,16 @@ void __init sched_init_smp(void)
+ /* Move init over to a non-isolated CPU */
+ if (set_cpus_allowed(current, non_isolated_cpus) < 0)
+ BUG();
++ /*
++ * Increase the granularity value when there are more CPUs,
++ * because with more CPUs the 'effective latency' as visible
++ * to users decreases. But the relationship is not linear,
++ * so pick a second-best guess by going with the log2 of the
++ * number of CPUs.
++ *
++ * This idea comes from the SD scheduler of Con Kolivas:
++ */
++ sysctl_sched_granularity *= 1 + ilog2(num_online_cpus());
+ }
+ #else
+ void __init sched_init_smp(void)
+@@ -6894,7 +5712,14 @@ int in_sched_functions(unsigned long add
+
+ void __init sched_init(void)
+ {
+- int i, j, k;
++ int i, j;
++
++ current->sched_class = &fair_sched_class;
++ /*
++ * Link up the scheduling class hierarchy:
++ */
++ rt_sched_class.next = &fair_sched_class;
++ fair_sched_class.next = NULL;
+
+ for_each_possible_cpu(i) {
+ struct prio_array *array;
+@@ -6904,14 +5729,13 @@ void __init sched_init(void)
+ spin_lock_init(&rq->lock);
+ lockdep_set_class(&rq->lock, &rq->rq_lock_key);
+ rq->nr_running = 0;
+- rq->active = rq->arrays;
+- rq->expired = rq->arrays + 1;
+- rq->best_expired_prio = MAX_PRIO;
++ rq->tasks_timeline = RB_ROOT;
++ rq->clock = rq->fair_clock = 1;
+
++ for (j = 0; j < CPU_LOAD_IDX_MAX; j++)
++ rq->cpu_load[j] = 0;
+ #ifdef CONFIG_SMP
+ rq->sd = NULL;
+- for (j = 1; j < 3; j++)
+- rq->cpu_load[j] = 0;
+ rq->active_balance = 0;
+ rq->push_cpu = 0;
+ rq->cpu = i;
+@@ -6920,15 +5744,13 @@ void __init sched_init(void)
+ #endif
+ atomic_set(&rq->nr_iowait, 0);
+
+- for (j = 0; j < 2; j++) {
+- array = rq->arrays + j;
+- for (k = 0; k < MAX_PRIO; k++) {
+- INIT_LIST_HEAD(array->queue + k);
+- __clear_bit(k, array->bitmap);
+- }
+- // delimiter for bitsearch
+- __set_bit(MAX_PRIO, array->bitmap);
++ array = &rq->active;
++ for (j = 0; j < MAX_RT_PRIO; j++) {
++ INIT_LIST_HEAD(array->queue + j);
++ __clear_bit(j, array->bitmap);
+ }
++ /* delimiter for bitsearch: */
++ __set_bit(MAX_RT_PRIO, array->bitmap);
+ }
+
+ set_load_weight(&init_task);
+@@ -6984,28 +5806,54 @@ EXPORT_SYMBOL(__might_sleep);
+ #ifdef CONFIG_MAGIC_SYSRQ
+ void normalize_rt_tasks(void)
+ {
+- struct prio_array *array;
+ struct task_struct *p;
+ unsigned long flags;
+ struct rq *rq;
++ int on_rq;
+
+ read_lock_irq(&tasklist_lock);
+ for_each_process(p) {
+- if (!rt_task(p))
++ p->fair_key = 0;
++ p->wait_runtime = 0;
++ p->wait_start_fair = 0;
++ p->wait_start = 0;
++ p->exec_start = 0;
++ p->sleep_start = 0;
++ p->block_start = 0;
++ task_rq(p)->fair_clock = 0;
++ task_rq(p)->clock = 0;
++
++ if (!rt_task(p)) {
++ /*
++ * Renice negative nice level userspace
++ * tasks back to 0:
++ */
++ if (TASK_NICE(p) < 0 && p->mm)
++ set_user_nice(p, 0);
+ continue;
++ }
+
+ spin_lock_irqsave(&p->pi_lock, flags);
+ rq = __task_rq_lock(p);
++#ifdef CONFIG_SMP
++ /*
++ * Do not touch the migration thread:
++ */
++ if (p == rq->migration_thread)
++ goto out_unlock;
++#endif
+
+- array = p->array;
+- if (array)
+- deactivate_task(p, task_rq(p));
+- __setscheduler(p, SCHED_NORMAL, 0);
+- if (array) {
+- __activate_task(p, task_rq(p));
++ on_rq = p->on_rq;
++ if (on_rq)
++ deactivate_task(task_rq(p), p, 0);
++ __setscheduler(rq, p, SCHED_NORMAL, 0);
++ if (on_rq) {
++ activate_task(task_rq(p), p, 0);
+ resched_task(rq->curr);
+ }
+-
++#ifdef CONFIG_SMP
++ out_unlock:
++#endif
+ __task_rq_unlock(rq);
+ spin_unlock_irqrestore(&p->pi_lock, flags);
+ }
+Index: linux-cfs-2.6.20.8.q/kernel/sched_debug.c
+===================================================================
+--- /dev/null
++++ linux-cfs-2.6.20.8.q/kernel/sched_debug.c
+@@ -0,0 +1,161 @@
++/*
++ * kernel/time/sched_debug.c
++ *
++ * Print the CFS rbtree
++ *
++ * Copyright(C) 2007, Red Hat, Inc., Ingo Molnar
++ *
++ * 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/proc_fs.h>
++#include <linux/module.h>
++#include <linux/spinlock.h>
++#include <linux/sched.h>
++#include <linux/seq_file.h>
++#include <linux/kallsyms.h>
++#include <linux/ktime.h>
++
++#include <asm/uaccess.h>
++
++typedef void (*print_fn_t)(struct seq_file *m, unsigned int *classes);
++
++/*
++ * This allows printing both to /proc/sched_debug and
++ * to the console
++ */
++#define SEQ_printf(m, x...) \
++ do { \
++ if (m) \
++ seq_printf(m, x); \
++ else \
++ printk(x); \
++ } while (0)
++
++static void
++print_task(struct seq_file *m, struct rq *rq, struct task_struct *p, u64 now)
++{
++ if (rq->curr == p)
++ SEQ_printf(m, "R");
++ else
++ SEQ_printf(m, " ");
++
++ SEQ_printf(m, "%14s %5d %15Ld %13Ld %13Ld %9Ld %5d "
++ "%15Ld %15Ld %15Ld\n",
++ p->comm, p->pid,
++ (long long)p->fair_key, (long long)p->fair_key - rq->fair_clock,
++ (long long)p->wait_runtime,
++ (long long)p->nr_switches,
++ p->prio,
++ (long long)p->wait_start_fair - rq->fair_clock,
++ (long long)p->sum_exec_runtime,
++ (long long)p->sum_wait_runtime);
++}
++
++static void print_rq(struct seq_file *m, struct rq *rq, u64 now)
++{
++ struct task_struct *p;
++ struct rb_node *curr;
++
++ SEQ_printf(m,
++ "\nrunnable tasks:\n"
++ " task PID tree-key delta waiting"
++ " switches prio wstart-fair"
++ " sum-exec sum-wait\n"
++ "-----------------------------------------------------------------"
++ "--------------------------------"
++ "--------------------------------\n");
++
++ curr = first_fair(rq);
++ while (curr) {
++ p = rb_entry(curr, struct task_struct, run_node);
++ print_task(m, rq, p, now);
++
++ curr = rb_next(curr);
++ }
++}
++
++static void print_cpu(struct seq_file *m, int cpu, u64 now)
++{
++ struct rq *rq = &per_cpu(runqueues, cpu);
++
++ SEQ_printf(m, "\ncpu: %d\n", cpu);
++#define P(x) \
++ SEQ_printf(m, " .%-22s: %Lu\n", #x, (unsigned long long)(rq->x))
++
++ P(nr_running);
++ P(raw_weighted_load);
++ P(nr_switches);
++ P(nr_load_updates);
++ P(nr_uninterruptible);
++ P(next_balance);
++ P(curr->pid);
++ P(clock);
++ P(prev_clock_raw);
++ P(clock_warps);
++ P(clock_unstable_events);
++ P(clock_max_delta);
++ rq->clock_max_delta = 0;
++ P(fair_clock);
++ P(prev_fair_clock);
++ P(exec_clock);
++ P(prev_exec_clock);
++ P(wait_runtime);
++ P(cpu_load[0]);
++ P(cpu_load[1]);
++ P(cpu_load[2]);
++ P(cpu_load[3]);
++ P(cpu_load[4]);
++#undef P
++
++ print_rq(m, rq, now);
++}
++
++static int sched_debug_show(struct seq_file *m, void *v)
++{
++ u64 now = ktime_to_ns(ktime_get());
++ int cpu;
++
++ SEQ_printf(m, "Sched Debug Version: v0.02\n");
++ SEQ_printf(m, "now at %Lu nsecs\n", (unsigned long long)now);
++
++ for_each_online_cpu(cpu)
++ print_cpu(m, cpu, now);
++
++ SEQ_printf(m, "\n");
++
++ return 0;
++}
++
++void sysrq_sched_debug_show(void)
++{
++ sched_debug_show(NULL, NULL);
++}
++
++static int sched_debug_open(struct inode *inode, struct file *filp)
++{
++ return single_open(filp, sched_debug_show, NULL);
++}
++
++static struct file_operations sched_debug_fops = {
++ .open = sched_debug_open,
++ .read = seq_read,
++ .llseek = seq_lseek,
++ .release = seq_release,
++};
++
++static int __init init_sched_debug_procfs(void)
++{
++ struct proc_dir_entry *pe;
++
++ pe = create_proc_entry("sched_debug", 0644, NULL);
++ if (!pe)
++ return -ENOMEM;
++
++ pe->proc_fops = &sched_debug_fops;
++
++ return 0;
++}
++__initcall(init_sched_debug_procfs);
+Index: linux-cfs-2.6.20.8.q/kernel/sched_fair.c
+===================================================================
+--- /dev/null
++++ linux-cfs-2.6.20.8.q/kernel/sched_fair.c
+@@ -0,0 +1,618 @@
++/*
++ * Completely Fair Scheduling (CFS) Class (SCHED_NORMAL/SCHED_BATCH)
++ */
++
++/*
++ * Preemption granularity:
++ * (default: 2 msec, units: nanoseconds)
++ *
++ * NOTE: this granularity value is not the same as the concept of
++ * 'timeslice length' - timeslices in CFS will typically be somewhat
++ * larger than this value. (to see the precise effective timeslice
++ * length of your workload, run vmstat and monitor the context-switches
++ * field)
++ *
++ * On SMP systems the value of this is multiplied by the log2 of the
++ * number of CPUs. (i.e. factor 2x on 2-way systems, 3x on 4-way
++ * systems, 4x on 8-way systems, 5x on 16-way systems, etc.)
++ */
++unsigned int sysctl_sched_granularity __read_mostly = 2000000;
++
++unsigned int sysctl_sched_sleep_history_max __read_mostly = 2000000000;
++
++unsigned int sysctl_sched_load_smoothing = 2;
++
++/*
++ * Wake-up granularity.
++ * (default: 1 msec, units: nanoseconds)
++ *
++ * This option delays the preemption effects of decoupled workloads
++ * and reduces their over-scheduling. Synchronous workloads will still
++ * have immediate wakeup/sleep latencies.
++ */
++unsigned int sysctl_sched_wakeup_granularity __read_mostly = 0;
++
++
++extern struct sched_class fair_sched_class;
++
++/**************************************************************/
++/* Scheduling class tree data structure manipulation methods:
++ */
++
++/*
++ * Enqueue a task into the rb-tree:
++ */
++static inline void __enqueue_task_fair(struct rq *rq, struct task_struct *p)
++{
++ struct rb_node **link = &rq->tasks_timeline.rb_node;
++ struct rb_node *parent = NULL;
++ struct task_struct *entry;
++ s64 key = p->fair_key;
++ int leftmost = 1;
++
++ /*
++ * Find the right place in the rbtree:
++ */
++ while (*link) {
++ parent = *link;
++ entry = rb_entry(parent, struct task_struct, run_node);
++ /*
++ * We dont care about collisions. Nodes with
++ * the same key stay together.
++ */
++ if (key < entry->fair_key) {
++ link = &parent->rb_left;
++ } else {
++ link = &parent->rb_right;
++ leftmost = 0;
++ }
++ }
++
++ /*
++ * Maintain a cache of leftmost tree entries (it is frequently
++ * used):
++ */
++ if (leftmost)
++ rq->rb_leftmost = &p->run_node;
++
++ rb_link_node(&p->run_node, parent, link);
++ rb_insert_color(&p->run_node, &rq->tasks_timeline);
++}
++
++static inline void __dequeue_task_fair(struct rq *rq, struct task_struct *p)
++{
++ if (rq->rb_leftmost == &p->run_node)
++ rq->rb_leftmost = NULL;
++ rb_erase(&p->run_node, &rq->tasks_timeline);
++}
++
++static inline struct rb_node * first_fair(struct rq *rq)
++{
++ if (rq->rb_leftmost)
++ return rq->rb_leftmost;
++ /* Cache the value returned by rb_first() */
++ rq->rb_leftmost = rb_first(&rq->tasks_timeline);
++ return rq->rb_leftmost;
++}
++
++static struct task_struct * __pick_next_task_fair(struct rq *rq)
++{
++ return rb_entry(first_fair(rq), struct task_struct, run_node);
++}
++
++/**************************************************************/
++/* Scheduling class statistics methods:
++ */
++
++static inline u64
++rescale_load(struct task_struct *p, u64 value)
++{
++ int load_shift = p->load_shift;
++
++ if (load_shift == SCHED_LOAD_SHIFT)
++ return value;
++
++ return (value << load_shift) >> SCHED_LOAD_SHIFT;
++}
++
++static u64
++niced_granularity(struct rq *rq, struct task_struct *curr,
++ unsigned long granularity)
++{
++ return rescale_load(curr, granularity);
++}
++
++/*
++ * Update the current task's runtime statistics. Skip current tasks that
++ * are not in our scheduling class.
++ */
++static inline void update_curr(struct rq *rq, u64 now)
++{
++ u64 delta_exec, delta_fair, delta_mine;
++ struct task_struct *curr = rq->curr;
++ unsigned long load;
++
++ if (curr->sched_class != &fair_sched_class || curr == rq->idle
++ || !curr->on_rq)
++ return;
++ /*
++ * Get the amount of time the current task was running
++ * since the last time we changed raw_weighted_load:
++ */
++ delta_exec = now - curr->exec_start;
++ if (unlikely(delta_exec > curr->exec_max))
++ curr->exec_max = delta_exec;
++
++ if (sysctl_sched_load_smoothing) {
++ delta_fair = delta_exec << SCHED_LOAD_SHIFT;
++ do_div(delta_fair, rq->raw_weighted_load);
++
++ load = rq->cpu_load[CPU_LOAD_IDX_MAX-1] + 1;
++ if (sysctl_sched_load_smoothing & 2)
++ load = max(load, rq->raw_weighted_load);
++
++ delta_mine = delta_exec << curr->load_shift;
++ do_div(delta_mine, load);
++ } else {
++ delta_fair = delta_exec << SCHED_LOAD_SHIFT;
++ do_div(delta_fair, rq->raw_weighted_load);
++
++ delta_mine = delta_exec << curr->load_shift;
++ do_div(delta_mine, rq->raw_weighted_load);
++ }
++
++ curr->sum_exec_runtime += delta_exec;
++ curr->exec_start = now;
++
++ rq->fair_clock += delta_fair;
++ rq->exec_clock += delta_exec;
++
++ /*
++ * We executed delta_exec amount of time on the CPU,
++ * but we were only entitled to delta_mine amount of
++ * time during that period (if nr_running == 1 then
++ * the two values are equal):
++ */
++
++ /*
++ * Task already marked for preemption, do not burden
++ * it with the cost of not having left the CPU yet.
++ */
++ if (unlikely(test_tsk_thread_flag(curr, TIF_NEED_RESCHED)))
++ goto out_nowait;
++
++ curr->wait_runtime -= delta_exec - delta_mine;
++ if (unlikely(curr->wait_runtime < curr->min_wait_runtime))
++ curr->min_wait_runtime = curr->wait_runtime;
++
++ rq->wait_runtime -= delta_exec - delta_mine;
++out_nowait:
++ ;
++}
++
++static inline void
++update_stats_wait_start(struct rq *rq, struct task_struct *p, u64 now)
++{
++ p->wait_start_fair = rq->fair_clock;
++ p->wait_start = now;
++}
++
++/*
++ * Task is being enqueued - update stats:
++ */
++static inline void
++update_stats_enqueue(struct rq *rq, struct task_struct *p, u64 now)
++{
++ s64 key;
++
++ /*
++ * Update the fair clock.
++ */
++ update_curr(rq, now);
++
++ /*
++ * Are we enqueueing a waiting task? (for current tasks
++ * a dequeue/enqueue event is a NOP)
++ */
++ if (p != rq->curr)
++ update_stats_wait_start(rq, p, now);
++ /*
++ * Update the key:
++ */
++ key = rq->fair_clock;
++
++ /*
++ * Optimize the common nice 0 case:
++ */
++ if (likely(p->load_shift == SCHED_LOAD_SHIFT)) {
++ key -= p->wait_runtime;
++ } else {
++ unsigned int delta_bits;
++
++ if (p->load_shift < SCHED_LOAD_SHIFT) {
++ /* plus-reniced tasks get helped: */
++ delta_bits = SCHED_LOAD_SHIFT - p->load_shift;
++ key -= p->wait_runtime << delta_bits;
++ } else {
++ /* negative-reniced tasks get hurt: */
++ delta_bits = p->load_shift - SCHED_LOAD_SHIFT;
++ key -= p->wait_runtime >> delta_bits;
++ }
++ }
++
++ p->fair_key = key;
++}
++
++/*
++ * Note: must be called with a freshly updated rq->fair_clock.
++ */
++static inline void
++update_stats_wait_end(struct rq *rq, struct task_struct *p, u64 now)
++{
++ u64 delta, fair_delta, delta_wait;
++
++ delta_wait = now - p->wait_start;
++ if (unlikely(delta_wait > p->wait_max))
++ p->wait_max = delta_wait;
++
++ delta = rq->fair_clock - p->wait_start_fair;
++ fair_delta = rescale_load(p, delta);
++
++ p->sum_wait_runtime += fair_delta;
++ rq->wait_runtime += fair_delta;
++ p->wait_runtime += fair_delta;
++
++ p->wait_start_fair = 0;
++ p->wait_start = 0;
++}
++
++static inline void
++update_stats_dequeue(struct rq *rq, struct task_struct *p, u64 now)
++{
++ update_curr(rq, now);
++ /*
++ * Mark the end of the wait period if dequeueing a
++ * waiting task:
++ */
++ if (p != rq->curr)
++ update_stats_wait_end(rq, p, now);
++}
++
++/*
++ * We are picking a new current task - update its stats:
++ */
++static inline void
++update_stats_curr_start(struct rq *rq, struct task_struct *p, u64 now)
++{
++ /*
++ * We are starting a new run period:
++ */
++ p->exec_start = now;
++}
++
++/*
++ * We are descheduling a task - update its stats:
++ */
++static inline void
++update_stats_curr_end(struct rq *rq, struct task_struct *p, u64 now)
++{
++ update_curr(rq, now);
++
++ p->exec_start = 0;
++}
++
++/**************************************************************/
++/* Scheduling class queueing methods:
++ */
++
++/*
++ * The enqueue_task method is called before nr_running is
++ * increased. Here we update the fair scheduling stats and
++ * then put the task into the rbtree:
++ */
++static void
++enqueue_task_fair(struct rq *rq, struct task_struct *p, int wakeup, u64 now)
++{
++ unsigned long max_delta = sysctl_sched_sleep_history_max, factor;
++ u64 delta = 0;
++
++ if (wakeup) {
++ if (p->sleep_start) {
++ delta = now - p->sleep_start;
++ if ((s64)delta < 0)
++ delta = 0;
++
++ if (unlikely(delta > p->sleep_max))
++ p->sleep_max = delta;
++
++ p->sleep_start = 0;
++ }
++ if (p->block_start) {
++ delta = now - p->block_start;
++ if ((s64)delta < 0)
++ delta = 0;
++
++ if (unlikely(delta > p->block_max))
++ p->block_max = delta;
++
++ p->block_start = 0;
++ }
++
++ /*
++ * We are after a wait period, decay the
++ * wait_runtime value:
++ */
++ if (max_delta != -1 && max_delta != -2) {
++ if (delta < max_delta) {
++ factor = 1024 * (max_delta -
++ (unsigned long)delta) / max_delta;
++ p->wait_runtime *= (int)factor;
++ p->wait_runtime /= 1024;
++ } else {
++ p->wait_runtime = 0;
++ }
++ }
++ }
++ update_stats_enqueue(rq, p, now);
++ if (wakeup && max_delta == -2)
++ p->wait_runtime = 0;
++ __enqueue_task_fair(rq, p);
++}
++
++/*
++ * The dequeue_task method is called before nr_running is
++ * decreased. We remove the task from the rbtree and
++ * update the fair scheduling stats:
++ */
++static void
++dequeue_task_fair(struct rq *rq, struct task_struct *p, int sleep, u64 now)
++{
++ update_stats_dequeue(rq, p, now);
++ if (sleep) {
++ if (p->state & TASK_INTERRUPTIBLE)
++ p->sleep_start = now;
++ if (p->state & TASK_UNINTERRUPTIBLE)
++ p->block_start = now;
++ }
++ __dequeue_task_fair(rq, p);
++}
++
++/*
++ * sched_yield() support is very simple via the rbtree: we just
++ * dequeue the task and move it after the next task, which
++ * causes tasks to roundrobin.
++ */
++static void
++yield_task_fair(struct rq *rq, struct task_struct *p, struct task_struct *p_to)
++{
++ struct rb_node *curr, *next, *first;
++ struct task_struct *p_next;
++ s64 yield_key;
++ u64 now;
++
++ /*
++ * yield-to support: if we are on the same runqueue then
++ * give half of our wait_runtime (if it's positive) to the other task:
++ */
++ if (p_to && p->wait_runtime > 0) {
++ p_to->wait_runtime += p->wait_runtime >> 1;
++ p->wait_runtime >>= 1;
++ }
++ curr = &p->run_node;
++ first = first_fair(rq);
++ /*
++ * Move this task to the second place in the tree:
++ */
++ if (unlikely(curr != first)) {
++ next = first;
++ } else {
++ next = rb_next(curr);
++ /*
++ * We were the last one already - nothing to do, return
++ * and reschedule:
++ */
++ if (unlikely(!next))
++ return;
++ }
++
++ p_next = rb_entry(next, struct task_struct, run_node);
++ /*
++ * Minimally necessary key value to be the second in the tree:
++ */
++ yield_key = p_next->fair_key + 1;
++
++ now = __rq_clock(rq);
++ dequeue_task_fair(rq, p, 0, now);
++ p->on_rq = 0;
++
++ /*
++ * Only update the key if we need to move more backwards
++ * than the minimally necessary position to be the second:
++ */
++ if (p->fair_key < yield_key)
++ p->fair_key = yield_key;
++
++ __enqueue_task_fair(rq, p);
++ p->on_rq = 1;
++}
++
++/*
++ * Preempt the current task with a newly woken task if needed:
++ */
++static inline void
++__check_preempt_curr_fair(struct rq *rq, struct task_struct *p,
++ struct task_struct *curr, unsigned long granularity)
++{
++ s64 __delta = curr->fair_key - p->fair_key;
++
++ /*
++ * Take scheduling granularity into account - do not
++ * preempt the current task unless the best task has
++ * a larger than sched_granularity fairness advantage:
++ */
++ if (__delta > niced_granularity(rq, curr, granularity))
++ resched_task(curr);
++}
++
++/*
++ * Preempt the current task with a newly woken task if needed:
++ */
++static void check_preempt_curr_fair(struct rq *rq, struct task_struct *p)
++{
++ struct task_struct *curr = rq->curr;
++
++ if ((curr == rq->idle) || rt_prio(p->prio)) {
++ resched_task(curr);
++ } else {
++ __check_preempt_curr_fair(rq, p, curr,
++ sysctl_sched_granularity);
++ }
++}
++
++static struct task_struct * pick_next_task_fair(struct rq *rq, u64 now)
++{
++ struct task_struct *p = __pick_next_task_fair(rq);
++
++ /*
++ * Any task has to be enqueued before it get to execute on
++ * a CPU. So account for the time it spent waiting on the
++ * runqueue. (note, here we rely on pick_next_task() having
++ * done a put_prev_task_fair() shortly before this, which
++ * updated rq->fair_clock - used by update_stats_wait_end())
++ */
++ update_stats_wait_end(rq, p, now);
++ update_stats_curr_start(rq, p, now);
++
++ return p;
++}
++
++/*
++ * Account for a descheduled task:
++ */
++static void put_prev_task_fair(struct rq *rq, struct task_struct *prev, u64 now)
++{
++ if (prev == rq->idle)
++ return;
++
++ update_stats_curr_end(rq, prev, now);
++ /*
++ * If the task is still waiting for the CPU (it just got
++ * preempted), start the wait period:
++ */
++ if (prev->on_rq)
++ update_stats_wait_start(rq, prev, now);
++}
++
++/**************************************************************/
++/* Fair scheduling class load-balancing methods:
++ */
++
++/*
++ * Load-balancing iterator. Note: while the runqueue stays locked
++ * during the whole iteration, the current task might be
++ * dequeued so the iterator has to be dequeue-safe. Here we
++ * achieve that by always pre-iterating before returning
++ * the current task:
++ */
++static struct task_struct * load_balance_start_fair(struct rq *rq)
++{
++ struct rb_node *first = first_fair(rq);
++ struct task_struct *p;
++
++ if (!first)
++ return NULL;
++
++ p = rb_entry(first, struct task_struct, run_node);
++
++ rq->rb_load_balance_curr = rb_next(first);
++
++ return p;
++}
++
++static struct task_struct * load_balance_next_fair(struct rq *rq)
++{
++ struct rb_node *curr = rq->rb_load_balance_curr;
++ struct task_struct *p;
++
++ if (!curr)
++ return NULL;
++
++ p = rb_entry(curr, struct task_struct, run_node);
++ rq->rb_load_balance_curr = rb_next(curr);
++
++ return p;
++}
++
++/*
++ * scheduler tick hitting a task of our scheduling class:
++ */
++static void task_tick_fair(struct rq *rq, struct task_struct *curr)
++{
++ struct task_struct *next;
++ u64 now = __rq_clock(rq);
++
++ /*
++ * Dequeue and enqueue the task to update its
++ * position within the tree:
++ */
++ dequeue_task_fair(rq, curr, 0, now);
++ curr->on_rq = 0;
++ enqueue_task_fair(rq, curr, 0, now);
++ curr->on_rq = 1;
++
++ /*
++ * Reschedule if another task tops the current one.
++ */
++ next = __pick_next_task_fair(rq);
++ if (next == curr)
++ return;
++
++ if ((curr == rq->idle) || (rt_prio(next->prio) &&
++ (next->prio < curr->prio)))
++ resched_task(curr);
++ else
++ __check_preempt_curr_fair(rq, next, curr,
++ sysctl_sched_granularity);
++}
++
++/*
++ * Share the fairness runtime between parent and child, thus the
++ * total amount of pressure for CPU stays equal - new tasks
++ * get a chance to run but frequent forkers are not allowed to
++ * monopolize the CPU. Note: the parent runqueue is locked,
++ * the child is not running yet.
++ */
++static void task_new_fair(struct rq *rq, struct task_struct *p)
++{
++ sched_info_queued(p);
++ update_stats_enqueue(rq, p, rq_clock(rq));
++ /*
++ * Child runs first: we let it run before the parent
++ * until it reschedules once. We set up the key so that
++ * it will preempt the parent:
++ */
++ p->fair_key = current->fair_key - niced_granularity(rq, rq->curr,
++ sysctl_sched_granularity) - 1;
++ __enqueue_task_fair(rq, p);
++ p->on_rq = 1;
++ inc_nr_running(p, rq);
++}
++
++/*
++ * All the scheduling class methods:
++ */
++struct sched_class fair_sched_class __read_mostly = {
++ .enqueue_task = enqueue_task_fair,
++ .dequeue_task = dequeue_task_fair,
++ .yield_task = yield_task_fair,
++
++ .check_preempt_curr = check_preempt_curr_fair,
++
++ .pick_next_task = pick_next_task_fair,
++ .put_prev_task = put_prev_task_fair,
++
++ .load_balance_start = load_balance_start_fair,
++ .load_balance_next = load_balance_next_fair,
++ .task_tick = task_tick_fair,
++ .task_new = task_new_fair,
++};
+Index: linux-cfs-2.6.20.8.q/kernel/sched_rt.c
+===================================================================
+--- /dev/null
++++ linux-cfs-2.6.20.8.q/kernel/sched_rt.c
+@@ -0,0 +1,184 @@
++/*
++ * Real-Time Scheduling Class (mapped to the SCHED_FIFO and SCHED_RR
++ * policies)
++ */
++
++static void
++enqueue_task_rt(struct rq *rq, struct task_struct *p, int wakeup, u64 now)
++{
++ struct prio_array *array = &rq->active;
++
++ list_add_tail(&p->run_list, array->queue + p->prio);
++ __set_bit(p->prio, array->bitmap);
++}
++
++/*
++ * Adding/removing a task to/from a priority array:
++ */
++static void
++dequeue_task_rt(struct rq *rq, struct task_struct *p, int sleep, u64 now)
++{
++ struct prio_array *array = &rq->active;
++
++ list_del(&p->run_list);
++ if (list_empty(array->queue + p->prio))
++ __clear_bit(p->prio, array->bitmap);
++}
++
++/*
++ * Put task to the end of the run list without the overhead of dequeue
++ * followed by enqueue.
++ */
++static void requeue_task_rt(struct rq *rq, struct task_struct *p)
++{
++ struct prio_array *array = &rq->active;
++
++ list_move_tail(&p->run_list, array->queue + p->prio);
++}
++
++static void
++yield_task_rt(struct rq *rq, struct task_struct *p, struct task_struct *p_to)
++{
++ requeue_task_rt(rq, p);
++}
++
++/*
++ * Preempt the current task with a newly woken task if needed:
++ */
++static void check_preempt_curr_rt(struct rq *rq, struct task_struct *p)
++{
++ if (p->prio < rq->curr->prio)
++ resched_task(rq->curr);
++}
++
++static struct task_struct * pick_next_task_rt(struct rq *rq, u64 now)
++{
++ struct prio_array *array = &rq->active;
++ struct list_head *queue;
++ int idx;
++
++ idx = sched_find_first_bit(array->bitmap);
++ if (idx >= MAX_RT_PRIO)
++ return NULL;
++
++ queue = array->queue + idx;
++ return list_entry(queue->next, struct task_struct, run_list);
++}
++
++/*
++ * No accounting done when RT tasks are descheduled:
++ */
++static void put_prev_task_rt(struct rq *rq, struct task_struct *p, u64 now)
++{
++}
++
++/*
++ * Load-balancing iterator. Note: while the runqueue stays locked
++ * during the whole iteration, the current task might be
++ * dequeued so the iterator has to be dequeue-safe. Here we
++ * achieve that by always pre-iterating before returning
++ * the current task:
++ */
++static struct task_struct * load_balance_start_rt(struct rq *rq)
++{
++ struct prio_array *array = &rq->active;
++ struct list_head *head, *curr;
++ struct task_struct *p;
++ int idx;
++
++ idx = sched_find_first_bit(array->bitmap);
++ if (idx >= MAX_RT_PRIO)
++ return NULL;
++
++ head = array->queue + idx;
++ curr = head->prev;
++
++ p = list_entry(curr, struct task_struct, run_list);
++
++ curr = curr->prev;
++
++ rq->rt_load_balance_idx = idx;
++ rq->rt_load_balance_head = head;
++ rq->rt_load_balance_curr = curr;
++
++ return p;
++}
++
++static struct task_struct * load_balance_next_rt(struct rq *rq)
++{
++ struct prio_array *array = &rq->active;
++ struct list_head *head, *curr;
++ struct task_struct *p;
++ int idx;
++
++ idx = rq->rt_load_balance_idx;
++ head = rq->rt_load_balance_head;
++ curr = rq->rt_load_balance_curr;
++
++ /*
++ * If we arrived back to the head again then
++ * iterate to the next queue (if any):
++ */
++ if (unlikely(head == curr)) {
++ int next_idx = find_next_bit(array->bitmap, MAX_RT_PRIO, idx+1);
++
++ if (next_idx >= MAX_RT_PRIO)
++ return NULL;
++
++ idx = next_idx;
++ head = array->queue + idx;
++ curr = head->prev;
++
++ rq->rt_load_balance_idx = idx;
++ rq->rt_load_balance_head = head;
++ }
++
++ p = list_entry(curr, struct task_struct, run_list);
++
++ curr = curr->prev;
++
++ rq->rt_load_balance_curr = curr;
++
++ return p;
++}
++
++static void task_tick_rt(struct rq *rq, struct task_struct *p)
++{
++ /*
++ * RR tasks need a special form of timeslice management.
++ * FIFO tasks have no timeslices.
++ */
++ if ((p->policy == SCHED_RR) && !--p->time_slice) {
++ p->time_slice = static_prio_timeslice(p->static_prio);
++ set_tsk_need_resched(p);
++
++ /* put it at the end of the queue: */
++ requeue_task_rt(rq, p);
++ }
++}
++
++/*
++ * No parent/child timeslice management necessary for RT tasks,
++ * just activate them:
++ */
++static void task_new_rt(struct rq *rq, struct task_struct *p)
++{
++ activate_task(rq, p, 1);
++}
++
++static struct sched_class rt_sched_class __read_mostly = {
++ .enqueue_task = enqueue_task_rt,
++ .dequeue_task = dequeue_task_rt,
++ .yield_task = yield_task_rt,
++
++ .check_preempt_curr = check_preempt_curr_rt,
++
++ .pick_next_task = pick_next_task_rt,
++ .put_prev_task = put_prev_task_rt,
++
++ .load_balance_start = load_balance_start_rt,
++ .load_balance_next = load_balance_next_rt,
++
++ .task_tick = task_tick_rt,
++ .task_new = task_new_rt,
++};
+Index: linux-cfs-2.6.20.8.q/kernel/sched_stats.h
+===================================================================
+--- /dev/null
++++ linux-cfs-2.6.20.8.q/kernel/sched_stats.h
+@@ -0,0 +1,235 @@
++
++#ifdef CONFIG_SCHEDSTATS
++/*
++ * bump this up when changing the output format or the meaning of an existing
++ * format, so that tools can adapt (or abort)
++ */
++#define SCHEDSTAT_VERSION 14
++
++static int show_schedstat(struct seq_file *seq, void *v)
++{
++ int cpu;
++
++ seq_printf(seq, "version %d\n", SCHEDSTAT_VERSION);
++ seq_printf(seq, "timestamp %lu\n", jiffies);
++ for_each_online_cpu(cpu) {
++ struct rq *rq = cpu_rq(cpu);
++#ifdef CONFIG_SMP
++ struct sched_domain *sd;
++ int dcnt = 0;
++#endif
++
++ /* runqueue-specific stats */
++ seq_printf(seq,
++ "cpu%d %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu",
++ cpu, rq->yld_both_empty,
++ rq->yld_act_empty, rq->yld_exp_empty, rq->yld_cnt,
++ rq->sched_switch, rq->sched_cnt, rq->sched_goidle,
++ rq->ttwu_cnt, rq->ttwu_local,
++ rq->rq_sched_info.cpu_time,
++ rq->rq_sched_info.run_delay, rq->rq_sched_info.pcnt);
++
++ seq_printf(seq, "\n");
++
++#ifdef CONFIG_SMP
++ /* domain-specific stats */
++ preempt_disable();
++ for_each_domain(cpu, sd) {
++ enum idle_type itype;
++ char mask_str[NR_CPUS];
++
++ cpumask_scnprintf(mask_str, NR_CPUS, sd->span);
++ seq_printf(seq, "domain%d %s", dcnt++, mask_str);
++ for (itype = SCHED_IDLE; itype < MAX_IDLE_TYPES;
++ itype++) {
++ seq_printf(seq, " %lu %lu %lu %lu %lu %lu %lu "
++ "%lu",
++ sd->lb_cnt[itype],
++ sd->lb_balanced[itype],
++ sd->lb_failed[itype],
++ sd->lb_imbalance[itype],
++ sd->lb_gained[itype],
++ sd->lb_hot_gained[itype],
++ sd->lb_nobusyq[itype],
++ sd->lb_nobusyg[itype]);
++ }
++ seq_printf(seq, " %lu %lu %lu %lu %lu %lu %lu %lu %lu"
++ " %lu %lu %lu\n",
++ sd->alb_cnt, sd->alb_failed, sd->alb_pushed,
++ sd->sbe_cnt, sd->sbe_balanced, sd->sbe_pushed,
++ sd->sbf_cnt, sd->sbf_balanced, sd->sbf_pushed,
++ sd->ttwu_wake_remote, sd->ttwu_move_affine,
++ sd->ttwu_move_balance);
++ }
++ preempt_enable();
++#endif
++ }
++ return 0;
++}
++
++static int schedstat_open(struct inode *inode, struct file *file)
++{
++ unsigned int size = PAGE_SIZE * (1 + num_online_cpus() / 32);
++ char *buf = kmalloc(size, GFP_KERNEL);
++ struct seq_file *m;
++ int res;
++
++ if (!buf)
++ return -ENOMEM;
++ res = single_open(file, show_schedstat, NULL);
++ if (!res) {
++ m = file->private_data;
++ m->buf = buf;
++ m->size = size;
++ } else
++ kfree(buf);
++ return res;
++}
++
++const struct file_operations proc_schedstat_operations = {
++ .open = schedstat_open,
++ .read = seq_read,
++ .llseek = seq_lseek,
++ .release = single_release,
++};
++
++/*
++ * Expects runqueue lock to be held for atomicity of update
++ */
++static inline void
++rq_sched_info_arrive(struct rq *rq, unsigned long delta_jiffies)
++{
++ if (rq) {
++ rq->rq_sched_info.run_delay += delta_jiffies;
++ rq->rq_sched_info.pcnt++;
++ }
++}
++
++/*
++ * Expects runqueue lock to be held for atomicity of update
++ */
++static inline void
++rq_sched_info_depart(struct rq *rq, unsigned long delta_jiffies)
++{
++ if (rq)
++ rq->rq_sched_info.cpu_time += delta_jiffies;
++}
++# define schedstat_inc(rq, field) do { (rq)->field++; } while (0)
++# define schedstat_add(rq, field, amt) do { (rq)->field += (amt); } while (0)
++#else /* !CONFIG_SCHEDSTATS */
++static inline void
++rq_sched_info_arrive(struct rq *rq, unsigned long delta_jiffies)
++{}
++static inline void
++rq_sched_info_depart(struct rq *rq, unsigned long delta_jiffies)
++{}
++# define schedstat_inc(rq, field) do { } while (0)
++# define schedstat_add(rq, field, amt) do { } while (0)
++#endif
++
++#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT)
++/*
++ * Called when a process is dequeued from the active array and given
++ * the cpu. We should note that with the exception of interactive
++ * tasks, the expired queue will become the active queue after the active
++ * queue is empty, without explicitly dequeuing and requeuing tasks in the
++ * expired queue. (Interactive tasks may be requeued directly to the
++ * active queue, thus delaying tasks in the expired queue from running;
++ * see scheduler_tick()).
++ *
++ * This function is only called from sched_info_arrive(), rather than
++ * dequeue_task(). Even though a task may be queued and dequeued multiple
++ * times as it is shuffled about, we're really interested in knowing how
++ * long it was from the *first* time it was queued to the time that it
++ * finally hit a cpu.
++ */
++static inline void sched_info_dequeued(struct task_struct *t)
++{
++ t->sched_info.last_queued = 0;
++}
++
++/*
++ * Called when a task finally hits the cpu. We can now calculate how
++ * long it was waiting to run. We also note when it began so that we
++ * can keep stats on how long its timeslice is.
++ */
++static void sched_info_arrive(struct task_struct *t)
++{
++ unsigned long now = jiffies, delta_jiffies = 0;
++
++ if (t->sched_info.last_queued)
++ delta_jiffies = now - t->sched_info.last_queued;
++ sched_info_dequeued(t);
++ t->sched_info.run_delay += delta_jiffies;
++ t->sched_info.last_arrival = now;
++ t->sched_info.pcnt++;
++
++ rq_sched_info_arrive(task_rq(t), delta_jiffies);
++}
++
++/*
++ * Called when a process is queued into either the active or expired
++ * array. The time is noted and later used to determine how long we
++ * had to wait for us to reach the cpu. Since the expired queue will
++ * become the active queue after active queue is empty, without dequeuing
++ * and requeuing any tasks, we are interested in queuing to either. It
++ * is unusual but not impossible for tasks to be dequeued and immediately
++ * requeued in the same or another array: this can happen in sched_yield(),
++ * set_user_nice(), and even load_balance() as it moves tasks from runqueue
++ * to runqueue.
++ *
++ * This function is only called from enqueue_task(), but also only updates
++ * the timestamp if it is already not set. It's assumed that
++ * sched_info_dequeued() will clear that stamp when appropriate.
++ */
++static inline void sched_info_queued(struct task_struct *t)
++{
++ if (unlikely(sched_info_on()))
++ if (!t->sched_info.last_queued)
++ t->sched_info.last_queued = jiffies;
++}
++
++/*
++ * Called when a process ceases being the active-running process, either
++ * voluntarily or involuntarily. Now we can calculate how long we ran.
++ */
++static inline void sched_info_depart(struct task_struct *t)
++{
++ unsigned long delta_jiffies = jiffies - t->sched_info.last_arrival;
++
++ t->sched_info.cpu_time += delta_jiffies;
++ rq_sched_info_depart(task_rq(t), delta_jiffies);
++}
++
++/*
++ * Called when tasks are switched involuntarily due, typically, to expiring
++ * their time slice. (This may also be called when switching to or from
++ * the idle task.) We are only called when prev != next.
++ */
++static inline void
++__sched_info_switch(struct task_struct *prev, struct task_struct *next)
++{
++ struct rq *rq = task_rq(prev);
++
++ /*
++ * prev now departs the cpu. It's not interesting to record
++ * stats about how efficient we were at scheduling the idle
++ * process, however.
++ */
++ if (prev != rq->idle)
++ sched_info_depart(prev);
++
++ if (next != rq->idle)
++ sched_info_arrive(next);
++}
++static inline void
++sched_info_switch(struct task_struct *prev, struct task_struct *next)
++{
++ if (unlikely(sched_info_on()))
++ __sched_info_switch(prev, next);
++}
++#else
++#define sched_info_queued(t) do { } while (0)
++#define sched_info_switch(t, next) do { } while (0)
++#endif /* CONFIG_SCHEDSTATS || CONFIG_TASK_DELAY_ACCT */
++
+Index: linux-cfs-2.6.20.8.q/kernel/sysctl.c
+===================================================================
+--- linux-cfs-2.6.20.8.q.orig/kernel/sysctl.c
++++ linux-cfs-2.6.20.8.q/kernel/sysctl.c
+@@ -320,6 +320,46 @@ static ctl_table kern_table[] = {
+ .strategy = &sysctl_uts_string,
+ },
+ {
++ .ctl_name = CTL_UNNUMBERED,
++ .procname = "sched_granularity_ns",
++ .data = &sysctl_sched_granularity,
++ .maxlen = sizeof(unsigned int),
++ .mode = 0644,
++ .proc_handler = &proc_dointvec,
++ },
++ {
++ .ctl_name = CTL_UNNUMBERED,
++ .procname = "sched_wakeup_granularity_ns",
++ .data = &sysctl_sched_wakeup_granularity,
++ .maxlen = sizeof(unsigned int),
++ .mode = 0644,
++ .proc_handler = &proc_dointvec,
++ },
++ {
++ .ctl_name = CTL_UNNUMBERED,
++ .procname = "sched_sleep_history_max_ns",
++ .data = &sysctl_sched_sleep_history_max,
++ .maxlen = sizeof(unsigned int),
++ .mode = 0644,
++ .proc_handler = &proc_dointvec,
++ },
++ {
++ .ctl_name = CTL_UNNUMBERED,
++ .procname = "sched_child_runs_first",
++ .data = &sysctl_sched_child_runs_first,
++ .maxlen = sizeof(unsigned int),
++ .mode = 0644,
++ .proc_handler = &proc_dointvec,
++ },
++ {
++ .ctl_name = CTL_UNNUMBERED,
++ .procname = "sched_load_smoothing",
++ .data = &sysctl_sched_load_smoothing,
++ .maxlen = sizeof(unsigned int),
++ .mode = 0644,
++ .proc_handler = &proc_dointvec,
++ },
++ {
+ .ctl_name = KERN_PANIC,
+ .procname = "panic",
+ .data = &panic_timeout,
diff --git a/packages/linux/linux-efika-2.6.20/.mtn2git_empty b/packages/linux/linux-efika-2.6.20/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/.mtn2git_empty
diff --git a/packages/linux/linux-efika-2.6.20/0001-powerpc-serial-Dispose-irq-mapping-when-done-in-mpc52xx_serial.c.txt b/packages/linux/linux-efika-2.6.20/0001-powerpc-serial-Dispose-irq-mapping-when-done-in-mpc52xx_serial.c.txt
new file mode 100644
index 0000000000..ef3c42dc30
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0001-powerpc-serial-Dispose-irq-mapping-when-done-in-mpc52xx_serial.c.txt
@@ -0,0 +1,27 @@
+From 733239db928c98f4d110fc33f0cf1278cf5385ef Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Mon, 18 Dec 2006 22:48:02 +0100
+Subject: [PATCH] [PATCH] powerpc/serial: Dispose irq mapping when done in mpc52xx_serial.c
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ drivers/serial/mpc52xx_uart.c | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c
+index 9d11a75..eef3b02 100644
+--- a/drivers/serial/mpc52xx_uart.c
++++ b/drivers/serial/mpc52xx_uart.c
+@@ -997,6 +997,9 @@ mpc52xx_uart_of_remove(struct of_device *op)
+ if (port)
+ uart_remove_one_port(&mpc52xx_uart_driver, port);
+
++ if (port->irq != NO_IRQ)
++ irq_dispose_mapping(port->irq);
++
+ return 0;
+ }
+
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0003-powerpc-Add-device-tree-fixups-for-the-EFIKA.txt b/packages/linux/linux-efika-2.6.20/0003-powerpc-Add-device-tree-fixups-for-the-EFIKA.txt
new file mode 100644
index 0000000000..eddebfe2e7
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0003-powerpc-Add-device-tree-fixups-for-the-EFIKA.txt
@@ -0,0 +1,110 @@
+From 7fa32df37b889fd0520b28870153b711c65192d2 Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Sat, 23 Dec 2006 20:25:18 +0100
+Subject: [PATCH] [PATCH] powerpc: Add device tree fixups for the EFIKA
+
+We make the efika device tree compliant with the defined bindings
+(at least compliant enough). This is mostly done by mangling
+the device_type and compatible properties, but also adding
+some missing bits.
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ arch/powerpc/kernel/prom_init.c | 76 +++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 76 insertions(+), 0 deletions(-)
+
+diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c
+index 520ef42..5291d62 100644
+--- a/arch/powerpc/kernel/prom_init.c
++++ b/arch/powerpc/kernel/prom_init.c
+@@ -2117,11 +2117,87 @@ static void __init fixup_device_tree_pmac(void)
+ #define fixup_device_tree_pmac()
+ #endif
+
++#ifdef CONFIG_PPC_EFIKA
++/* The current fw of the Efika has a device tree needs quite a few
++ * fixups to be compliant with the mpc52xx bindings. It's currently
++ * unknown if it will ever be compliant (come on bPlan ...) so we do fixups.
++ * NOTE that we (barely) tolerate it because the EFIKA was out before
++ * the bindings were finished, for any new boards -> RTFM ! */
++
++struct subst_entry {
++ char *path;
++ char *property;
++ void *value;
++ int value_len;
++};
++
++static void __init fixup_device_tree_efika(void)
++{
++ /* Substitution table */
++ #define prop_cstr(x) x, sizeof(x)
++ int prop_sound_irq[3] = { 2, 2, 0 };
++ struct subst_entry efika_subst_table[] = {
++ { "/", "device_type", prop_cstr("efika") },
++ { "/builtin", "compatible", prop_cstr("soc") },
++ { "/builtin/ata", "compatible", prop_cstr("mpc5200b-ata\0mpc52xx-ata"), },
++ { "/builtin/bestcomm", "compatible", prop_cstr("mpc5200b-bestcomm\0mpc52xx-bestcomm") },
++ { "/builtin/ethernet", "compatible", prop_cstr("mpc5200b-fec\0mpc52xx-fec") },
++ { "/builtin/pic", "compatible", prop_cstr("mpc5200b-pic\0mpc52xx-pic") },
++ { "/builtin/serial", "compatible", prop_cstr("mpc5200b-psc-uart\0mpc52xx-psc-uart") },
++ { "/builtin/sound", "compatible", prop_cstr("mpc5200b-psc-ac97\0mpc52xx-psc-ac97") },
++ { "/builtin/sound", "interrupts", prop_sound_irq, sizeof(prop_sound_irq) },
++ { "/builtin/sram", "compatible", prop_cstr("mpc5200b-sram\0mpc52xx-sram") },
++ { "/builtin/sram", "device_type", prop_cstr("sram") },
++ {}
++ };
++ #undef prop_cstr
++
++ /* Vars */
++ u32 node;
++ char prop[64];
++ int rv, i;
++
++ /* Check if we're really running on a EFIKA */
++ node = call_prom("finddevice", 1, 1, ADDR("/"));
++ if (!PHANDLE_VALID(node))
++ return;
++
++ rv = prom_getprop(node, "model", prop, sizeof(prop));
++ if (rv == PROM_ERROR)
++ return;
++ if (strcmp(prop, "EFIKA5K2"))
++ return;
++
++ prom_printf("Applying EFIKA device tree fixups\n");
++
++ /* Process substitution table */
++ for (i=0; efika_subst_table[i].path; i++) {
++ struct subst_entry *se = &efika_subst_table[i];
++
++ node = call_prom("finddevice", 1, 1, ADDR(se->path));
++ if (!PHANDLE_VALID(node)) {
++ prom_printf("fixup_device_tree_efika: ",
++ "skipped entry %x - not found\n", i);
++ continue;
++ }
++
++ rv = prom_setprop(node, se->path, se->property,
++ se->value, se->value_len );
++ if (rv == PROM_ERROR)
++ prom_printf("fixup_device_tree_efika: ",
++ "skipped entry %x - setprop error\n", i);
++ }
++}
++#else
++#define fixup_device_tree_efika()
++#endif
++
+ static void __init fixup_device_tree(void)
+ {
+ fixup_device_tree_maple();
+ fixup_device_tree_chrp();
+ fixup_device_tree_pmac();
++ fixup_device_tree_efika();
+ }
+
+ static void __init prom_find_boot_cpu(void)
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0004-powerpc-Use-common-52xx-of_platform-probe-code-for-EFIKA.txt b/packages/linux/linux-efika-2.6.20/0004-powerpc-Use-common-52xx-of_platform-probe-code-for-EFIKA.txt
new file mode 100644
index 0000000000..763d53208f
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0004-powerpc-Use-common-52xx-of_platform-probe-code-for-EFIKA.txt
@@ -0,0 +1,106 @@
+From ae911446f91481cf26e6dc5edef034a50a6c410c Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Sat, 23 Dec 2006 20:33:30 +0100
+Subject: [PATCH] [PATCH] powerpc: Use common 52xx of_platform probe code for EFIKA
+
+Now that the device tree has the good properties, we can
+remove all the efika_init code by a single call to common code.
+
+While we're modifying that file, a few whitespaces/alignement/typo
+fixes are made (nothing significant).
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ arch/powerpc/platforms/52xx/efika-setup.c | 64 ++++++++---------------------
+ 1 files changed, 18 insertions(+), 46 deletions(-)
+
+diff --git a/arch/powerpc/platforms/52xx/efika-setup.c b/arch/powerpc/platforms/52xx/efika-setup.c
+index 110c980..d61ce84 100644
+--- a/arch/powerpc/platforms/52xx/efika-setup.c
++++ b/arch/powerpc/platforms/52xx/efika-setup.c
+@@ -2,7 +2,7 @@
+ *
+ * Efika 5K2 platform setup
+ * Some code really inspired from the lite5200b platform.
+- *
++ *
+ * Copyright (C) 2006 bplan GmbH
+ *
+ * This file is licensed under the terms of the GNU General Public License
+@@ -81,35 +81,7 @@ static void __init efika_setup_arch(void)
+ efika_pcisetup();
+
+ if (ppc_md.progress)
+- ppc_md.progress("Linux/PPC " UTS_RELEASE " runnung on Efika ;-)\n", 0x0);
+-}
+-
+-static void __init efika_init(void)
+-{
+- struct device_node *np;
+- struct device_node *cnp = NULL;
+- const u32 *base;
+-
+- /* Find every child of the SOC node and add it to of_platform */
+- np = of_find_node_by_name(NULL, "builtin");
+- if (np) {
+- char name[BUS_ID_SIZE];
+- while ((cnp = of_get_next_child(np, cnp))) {
+- strcpy(name, cnp->name);
+-
+- base = get_property(cnp, "reg", NULL);
+- if (base == NULL)
+- continue;
+-
+- snprintf(name+strlen(name), BUS_ID_SIZE, "@%x", *base);
+- of_platform_device_create(cnp, name, NULL);
+-
+- printk(KERN_INFO EFIKA_PLATFORM_NAME" : Added %s (type '%s' at '%s') to the known devices\n", name, cnp->type, cnp->full_name);
+- }
+- }
+-
+- if (ppc_md.progress)
+- ppc_md.progress(" Have fun with your Efika! ", 0x7777);
++ ppc_md.progress("Linux/PPC " UTS_RELEASE " running on Efika ;-)\n", 0x0);
+ }
+
+ static int __init efika_probe(void)
+@@ -131,20 +103,20 @@ static int __init efika_probe(void)
+
+ define_machine(efika)
+ {
+- .name = EFIKA_PLATFORM_NAME,
+- .probe = efika_probe,
+- .setup_arch = efika_setup_arch,
+- .init = efika_init,
+- .show_cpuinfo = efika_show_cpuinfo,
+- .init_IRQ = mpc52xx_init_irq,
+- .get_irq = mpc52xx_get_irq,
+- .restart = rtas_restart,
+- .power_off = rtas_power_off,
+- .halt = rtas_halt,
+- .set_rtc_time = rtas_set_rtc_time,
+- .get_rtc_time = rtas_get_rtc_time,
+- .progress = rtas_progress,
+- .get_boot_time = rtas_get_boot_time,
+- .calibrate_decr = generic_calibrate_decr,
+- .phys_mem_access_prot = pci_phys_mem_access_prot,
++ .name = EFIKA_PLATFORM_NAME,
++ .probe = efika_probe,
++ .setup_arch = efika_setup_arch,
++ .init = mpc52xx_declare_of_platform_devices,
++ .show_cpuinfo = efika_show_cpuinfo,
++ .init_IRQ = mpc52xx_init_irq,
++ .get_irq = mpc52xx_get_irq,
++ .restart = rtas_restart,
++ .power_off = rtas_power_off,
++ .halt = rtas_halt,
++ .set_rtc_time = rtas_set_rtc_time,
++ .get_rtc_time = rtas_get_rtc_time,
++ .progress = rtas_progress,
++ .get_boot_time = rtas_get_boot_time,
++ .calibrate_decr = generic_calibrate_decr,
++ .phys_mem_access_prot = pci_phys_mem_access_prot,
+ };
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0005-powerpc-Restore-proper-link-order-in-platform.txt b/packages/linux/linux-efika-2.6.20/0005-powerpc-Restore-proper-link-order-in-platform.txt
new file mode 100644
index 0000000000..0b4bbe3376
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0005-powerpc-Restore-proper-link-order-in-platform.txt
@@ -0,0 +1,33 @@
+From 720e2caeeff0d9585d5627d29ffd660a5a9d9f88 Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Sat, 23 Dec 2006 20:43:39 +0100
+Subject: [PATCH] [PATCH] powerpc: Restore 'proper' link order in platform
+
+The 52xx was put before CHRP to allow EFIKA to be recognized
+properly. Now the efika tree is fixed up in prom_init so
+no need for this ugly hack. So we restore the 'normal'
+order.
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ arch/powerpc/platforms/Makefile | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/arch/powerpc/platforms/Makefile b/arch/powerpc/platforms/Makefile
+index 507d1b9..44d95ea 100644
+--- a/arch/powerpc/platforms/Makefile
++++ b/arch/powerpc/platforms/Makefile
+@@ -5,9 +5,9 @@ ifeq ($(CONFIG_PPC64),y)
+ obj-$(CONFIG_PPC_PMAC) += powermac/
+ endif
+ endif
+-obj-$(CONFIG_PPC_MPC52xx) += 52xx/
+ obj-$(CONFIG_PPC_CHRP) += chrp/
+ obj-$(CONFIG_4xx) += 4xx/
++obj-$(CONFIG_PPC_MPC52xx) += 52xx/
+ obj-$(CONFIG_PPC_83xx) += 83xx/
+ obj-$(CONFIG_PPC_85xx) += 85xx/
+ obj-$(CONFIG_PPC_86xx) += 86xx/
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0006-Rework-the-OHCI-quirk-mecanism-as-suggested-by-David.txt b/packages/linux/linux-efika-2.6.20/0006-Rework-the-OHCI-quirk-mecanism-as-suggested-by-David.txt
new file mode 100644
index 0000000000..39f6fef607
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0006-Rework-the-OHCI-quirk-mecanism-as-suggested-by-David.txt
@@ -0,0 +1,236 @@
+From 9282a04f14cef512736ac4a895fb48456e6a8989 Mon Sep 17 00:00:00 2001
+From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Date: Thu, 14 Dec 2006 14:13:26 +1100
+Subject: [PATCH] [PATCH] Rework the OHCI quirk mecanism as suggested by David
+
+This patch applies David Brownell's suggestion for reworking the
+OHCI quirk mechanism via a table of PCI IDs. It adapts the existing
+quirks to use that mechanism.
+
+This also moves the quirks to reset() as suggested by the comment
+in there. This is necessary as we need to have the endian properly
+set before we try to init the controller.
+
+Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Acked-by: David Brownell <dbrownell@users.sourceforge.net>
+
+ drivers/usb/host/ohci-pci.c | 173 +++++++++++++++++++++++++++-----------------
+ 1 file changed, 110 insertions(+), 63 deletions(-)
+---
+ drivers/usb/host/ohci-pci.c | 173 +++++++++++++++++++++++++++----------------
+ 1 files changed, 110 insertions(+), 63 deletions(-)
+
+diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
+index 596e0b4..82fbec3 100644
+--- a/drivers/usb/host/ohci-pci.c
++++ b/drivers/usb/host/ohci-pci.c
+@@ -20,79 +20,128 @@
+
+ /*-------------------------------------------------------------------------*/
+
+-static int
+-ohci_pci_reset (struct usb_hcd *hcd)
++/* AMD 756, for most chips (early revs), corrupts register
++ * values on read ... so enable the vendor workaround.
++ */
++static int __devinit ohci_quirk_amd756(struct usb_hcd *hcd)
+ {
+ struct ohci_hcd *ohci = hcd_to_ohci (hcd);
+
+- ohci_hcd_init (ohci);
+- return ohci_init (ohci);
++ ohci->flags = OHCI_QUIRK_AMD756;
++ ohci_dbg (ohci, "AMD756 erratum 4 workaround\n");
++
++ /* also erratum 10 (suspend/resume issues) */
++ device_init_wakeup(&hcd->self.root_hub->dev, 0);
++
++ return 0;
+ }
+
+-static int __devinit
+-ohci_pci_start (struct usb_hcd *hcd)
++/* Apple's OHCI driver has a lot of bizarre workarounds
++ * for this chip. Evidently control and bulk lists
++ * can get confused. (B&W G3 models, and ...)
++ */
++static int __devinit ohci_quirk_opti(struct usb_hcd *hcd)
+ {
+ struct ohci_hcd *ohci = hcd_to_ohci (hcd);
+- int ret;
+
+- /* REVISIT this whole block should move to reset(), which handles
+- * all the other one-time init.
++ ohci_dbg (ohci, "WARNING: OPTi workarounds unavailable\n");
++
++ return 0;
++}
++
++/* Check for NSC87560. We have to look at the bridge (fn1) to
++ * identify the USB (fn2). This quirk might apply to more or
++ * even all NSC stuff.
++ */
++static int __devinit ohci_quirk_ns(struct usb_hcd *hcd)
++{
++ struct pci_dev *pdev = to_pci_dev(hcd->self.controller);
++ struct pci_dev *b;
++
++ b = pci_get_slot (pdev->bus, PCI_DEVFN (PCI_SLOT (pdev->devfn), 1));
++ if (b && b->device == PCI_DEVICE_ID_NS_87560_LIO
++ && b->vendor == PCI_VENDOR_ID_NS) {
++ struct ohci_hcd *ohci = hcd_to_ohci (hcd);
++
++ ohci->flags |= OHCI_QUIRK_SUPERIO;
++ ohci_dbg (ohci, "Using NSC SuperIO setup\n");
++ }
++ pci_dev_put(b);
++
++ return 0;
++}
++
++/* Check for Compaq's ZFMicro chipset, which needs short
++ * delays before control or bulk queues get re-activated
++ * in finish_unlinks()
++ */
++static int __devinit ohci_quirk_zfmicro(struct usb_hcd *hcd)
++{
++ struct ohci_hcd *ohci = hcd_to_ohci (hcd);
++
++ ohci->flags |= OHCI_QUIRK_ZFMICRO;
++ ohci_dbg (ohci, "enabled Compaq ZFMicro chipset quirk\n");
++
++ return 0;
++}
++
++
++/* List of quirks for OHCI */
++static const struct pci_device_id ohci_pci_quirks[] = {
++ {
++ PCI_DEVICE(PCI_VENDOR_ID_AMD, 0x740c),
++ .driver_data = (unsigned long)ohci_quirk_amd756,
++ },
++ {
++ PCI_DEVICE(PCI_VENDOR_ID_OPTI, 0xc861),
++ .driver_data = (unsigned long)ohci_quirk_opti,
++ },
++ {
++ PCI_DEVICE(PCI_VENDOR_ID_NS, PCI_ANY_ID),
++ .driver_data = (unsigned long)ohci_quirk_ns,
++ },
++ {
++ PCI_DEVICE(PCI_VENDOR_ID_COMPAQ, 0xa0f8),
++ .driver_data = (unsigned long)ohci_quirk_zfmicro,
++ },
++ /* FIXME for some of the early AMD 760 southbridges, OHCI
++ * won't work at all. blacklist them.
+ */
++ {},
++};
++
++static int ohci_pci_reset (struct usb_hcd *hcd)
++{
++ struct ohci_hcd *ohci = hcd_to_ohci (hcd);
++ int ret = 0;
++
+ if (hcd->self.controller) {
+ struct pci_dev *pdev = to_pci_dev(hcd->self.controller);
++ const struct pci_device_id *quirk_id;
+
+- /* AMD 756, for most chips (early revs), corrupts register
+- * values on read ... so enable the vendor workaround.
+- */
+- if (pdev->vendor == PCI_VENDOR_ID_AMD
+- && pdev->device == 0x740c) {
+- ohci->flags = OHCI_QUIRK_AMD756;
+- ohci_dbg (ohci, "AMD756 erratum 4 workaround\n");
+- /* also erratum 10 (suspend/resume issues) */
+- device_init_wakeup(&hcd->self.root_hub->dev, 0);
++ quirk_id = pci_match_id(ohci_pci_quirks, pdev);
++ if (quirk_id != NULL) {
++ int (*quirk)(struct usb_hcd *ohci);
++ quirk = (void *)quirk_id->driver_data;
++ ret = quirk(hcd);
+ }
++ }
++ if (ret == 0) {
++ ohci_hcd_init (ohci);
++ return ohci_init (ohci);
++ }
++ return ret;
++}
+
+- /* FIXME for some of the early AMD 760 southbridges, OHCI
+- * won't work at all. blacklist them.
+- */
+-
+- /* Apple's OHCI driver has a lot of bizarre workarounds
+- * for this chip. Evidently control and bulk lists
+- * can get confused. (B&W G3 models, and ...)
+- */
+- else if (pdev->vendor == PCI_VENDOR_ID_OPTI
+- && pdev->device == 0xc861) {
+- ohci_dbg (ohci,
+- "WARNING: OPTi workarounds unavailable\n");
+- }
+
+- /* Check for NSC87560. We have to look at the bridge (fn1) to
+- * identify the USB (fn2). This quirk might apply to more or
+- * even all NSC stuff.
+- */
+- else if (pdev->vendor == PCI_VENDOR_ID_NS) {
+- struct pci_dev *b;
+-
+- b = pci_get_slot (pdev->bus,
+- PCI_DEVFN (PCI_SLOT (pdev->devfn), 1));
+- if (b && b->device == PCI_DEVICE_ID_NS_87560_LIO
+- && b->vendor == PCI_VENDOR_ID_NS) {
+- ohci->flags |= OHCI_QUIRK_SUPERIO;
+- ohci_dbg (ohci, "Using NSC SuperIO setup\n");
+- }
+- pci_dev_put(b);
+- }
++static int __devinit ohci_pci_start (struct usb_hcd *hcd)
++{
++ struct ohci_hcd *ohci = hcd_to_ohci (hcd);
++ int ret;
+
+- /* Check for Compaq's ZFMicro chipset, which needs short
+- * delays before control or bulk queues get re-activated
+- * in finish_unlinks()
+- */
+- else if (pdev->vendor == PCI_VENDOR_ID_COMPAQ
+- && pdev->device == 0xa0f8) {
+- ohci->flags |= OHCI_QUIRK_ZFMICRO;
+- ohci_dbg (ohci,
+- "enabled Compaq ZFMicro chipset quirk\n");
+- }
++#ifdef CONFIG_PM /* avoid warnings about unused pdev */
++ if (hcd->self.controller) {
++ struct pci_dev *pdev = to_pci_dev(hcd->self.controller);
+
+ /* RWC may not be set for add-in PCI cards, since boot
+ * firmware probably ignored them. This transfers PCI
+@@ -101,16 +150,14 @@ ohci_pci_start (struct usb_hcd *hcd)
+ if (device_may_wakeup(&pdev->dev))
+ ohci->hc_control |= OHCI_CTRL_RWC;
+ }
++#endif /* CONFIG_PM */
+
+- /* NOTE: there may have already been a first reset, to
+- * keep bios/smm irqs from making trouble
+- */
+- if ((ret = ohci_run (ohci)) < 0) {
++ ret = ohci_run (ohci);
++ if (ret < 0) {
+ ohci_err (ohci, "can't start\n");
+ ohci_stop (hcd);
+- return ret;
+ }
+- return 0;
++ return ret;
+ }
+
+ #ifdef CONFIG_PM
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0007-Implement-support-for-split-endian-OHCI.txt b/packages/linux/linux-efika-2.6.20/0007-Implement-support-for-split-endian-OHCI.txt
new file mode 100644
index 0000000000..f49e0cfa7d
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0007-Implement-support-for-split-endian-OHCI.txt
@@ -0,0 +1,367 @@
+From a87f8738eb3651b7eea1feae793def3a48dc36c6 Mon Sep 17 00:00:00 2001
+From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Date: Thu, 14 Dec 2006 14:13:28 +1100
+Subject: [PATCH] [PATCH] Implement support for "split" endian OHCI
+
+This patch separates support for big endian MMIO register access
+and big endian descriptors in order to support the Toshiba SCC
+implementation which has big endian registers but little endian
+in-memory descriptors.
+
+It simplifies the access functions a bit in ohci.h while at it.
+
+Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Acked-by: David Brownell <dbrownell@users.sourceforge.net>
+
+ drivers/usb/host/Kconfig | 10 ++
+ drivers/usb/host/ohci-pci.c | 26 +++++++
+ drivers/usb/host/ohci-ppc-soc.c | 2
+ drivers/usb/host/ohci.h | 147 +++++++++++++++++++++++++---------------
+ 4 files changed, 130 insertions(+), 55 deletions(-)
+---
+ drivers/usb/host/Kconfig | 10 ++-
+ drivers/usb/host/ohci-pci.c | 26 +++++++
+ drivers/usb/host/ohci-ppc-soc.c | 2 +-
+ drivers/usb/host/ohci.h | 147 +++++++++++++++++++++++++--------------
+ 4 files changed, 130 insertions(+), 55 deletions(-)
+
+diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
+index cc60759..faabce8 100644
+--- a/drivers/usb/host/Kconfig
++++ b/drivers/usb/host/Kconfig
+@@ -101,7 +101,8 @@ config USB_OHCI_HCD_PPC_SOC
+ bool "OHCI support for on-chip PPC USB controller"
+ depends on USB_OHCI_HCD && (STB03xxx || PPC_MPC52xx)
+ default y
+- select USB_OHCI_BIG_ENDIAN
++ select USB_OHCI_BIG_ENDIAN_DESC
++ select USB_OHCI_BIG_ENDIAN_MMIO
+ ---help---
+ Enables support for the USB controller on the MPC52xx or
+ STB03xxx processor chip. If unsure, say Y.
+@@ -115,7 +116,12 @@ config USB_OHCI_HCD_PCI
+ Enables support for PCI-bus plug-in USB controller cards.
+ If unsure, say Y.
+
+-config USB_OHCI_BIG_ENDIAN
++config USB_OHCI_BIG_ENDIAN_DESC
++ bool
++ depends on USB_OHCI_HCD
++ default n
++
++config USB_OHCI_BIG_ENDIAN_MMIO
+ bool
+ depends on USB_OHCI_HCD
+ default n
+diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
+index 82fbec3..292daf0 100644
+--- a/drivers/usb/host/ohci-pci.c
++++ b/drivers/usb/host/ohci-pci.c
+@@ -85,6 +85,27 @@ static int __devinit ohci_quirk_zfmicro(struct usb_hcd *hcd)
+ return 0;
+ }
+
++/* Check for Toshiba SCC OHCI which has big endian registers
++ * and little endian in memory data structures
++ */
++static int __devinit ohci_quirk_toshiba_scc(struct usb_hcd *hcd)
++{
++ struct ohci_hcd *ohci = hcd_to_ohci (hcd);
++
++ /* That chip is only present in the southbridge of some
++ * cell based platforms which are supposed to select
++ * CONFIG_USB_OHCI_BIG_ENDIAN_MMIO. We verify here if
++ * that was the case though.
++ */
++#ifdef CONFIG_USB_OHCI_BIG_ENDIAN_MMIO
++ ohci->flags |= OHCI_QUIRK_BE_MMIO;
++ ohci_dbg (ohci, "enabled big endian Toshiba quirk\n");
++ return 0;
++#else
++ ohci_err (ohci, "unsupported big endian Toshiba quirk\n");
++ return -ENXIO;
++#endif
++}
+
+ /* List of quirks for OHCI */
+ static const struct pci_device_id ohci_pci_quirks[] = {
+@@ -104,9 +125,14 @@ static const struct pci_device_id ohci_pci_quirks[] = {
+ PCI_DEVICE(PCI_VENDOR_ID_COMPAQ, 0xa0f8),
+ .driver_data = (unsigned long)ohci_quirk_zfmicro,
+ },
++ {
++ PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA_2, 0x01b6),
++ .driver_data = (unsigned long)ohci_quirk_toshiba_scc,
++ },
+ /* FIXME for some of the early AMD 760 southbridges, OHCI
+ * won't work at all. blacklist them.
+ */
++
+ {},
+ };
+
+diff --git a/drivers/usb/host/ohci-ppc-soc.c b/drivers/usb/host/ohci-ppc-soc.c
+index e1a7eb8..c7ce8e6 100644
+--- a/drivers/usb/host/ohci-ppc-soc.c
++++ b/drivers/usb/host/ohci-ppc-soc.c
+@@ -72,7 +72,7 @@ static int usb_hcd_ppc_soc_probe(const struct hc_driver *driver,
+ }
+
+ ohci = hcd_to_ohci(hcd);
+- ohci->flags |= OHCI_BIG_ENDIAN;
++ ohci->flags |= OHCI_QUIRK_BE_MMIO | OHCI_QUIRK_BE_DESC;
+ ohci_hcd_init(ohci);
+
+ retval = usb_add_hcd(hcd, irq, IRQF_DISABLED);
+diff --git a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h
+index 405257f..fc7c161 100644
+--- a/drivers/usb/host/ohci.h
++++ b/drivers/usb/host/ohci.h
+@@ -394,8 +394,9 @@ struct ohci_hcd {
+ #define OHCI_QUIRK_AMD756 0x01 /* erratum #4 */
+ #define OHCI_QUIRK_SUPERIO 0x02 /* natsemi */
+ #define OHCI_QUIRK_INITRESET 0x04 /* SiS, OPTi, ... */
+-#define OHCI_BIG_ENDIAN 0x08 /* big endian HC */
+-#define OHCI_QUIRK_ZFMICRO 0x10 /* Compaq ZFMicro chipset*/
++#define OHCI_QUIRK_BE_DESC 0x08 /* BE descriptors */
++#define OHCI_QUIRK_BE_MMIO 0x10 /* BE registers */
++#define OHCI_QUIRK_ZFMICRO 0x20 /* Compaq ZFMicro chipset*/
+ // there are also chip quirks/bugs in init logic
+
+ };
+@@ -439,117 +440,156 @@ static inline struct usb_hcd *ohci_to_hcd (const struct ohci_hcd *ohci)
+ * a minority (notably the IBM STB04XXX and the Motorola MPC5200
+ * processors) implement them in big endian format.
+ *
++ * In addition some more exotic implementations like the Toshiba
++ * Spider (aka SCC) cell southbridge are "mixed" endian, that is,
++ * they have a different endianness for registers vs. in-memory
++ * descriptors.
++ *
+ * This attempts to support either format at compile time without a
+ * runtime penalty, or both formats with the additional overhead
+ * of checking a flag bit.
++ *
++ * That leads to some tricky Kconfig rules howevber. There are
++ * different defaults based on some arch/ppc platforms, though
++ * the basic rules are:
++ *
++ * Controller type Kconfig options needed
++ * --------------- ----------------------
++ * little endian CONFIG_USB_OHCI_LITTLE_ENDIAN
++ *
++ * fully big endian CONFIG_USB_OHCI_BIG_ENDIAN_DESC _and_
++ * CONFIG_USB_OHCI_BIG_ENDIAN_MMIO
++ *
++ * mixed endian CONFIG_USB_OHCI_LITTLE_ENDIAN _and_
++ * CONFIG_USB_OHCI_BIG_ENDIAN_{MMIO,DESC}
++ *
++ * (If you have a mixed endian controller, you -must- also define
++ * CONFIG_USB_OHCI_LITTLE_ENDIAN or things will not work when building
++ * both your mixed endian and a fully big endian controller support in
++ * the same kernel image).
+ */
+
+-#ifdef CONFIG_USB_OHCI_BIG_ENDIAN
++#ifdef CONFIG_USB_OHCI_BIG_ENDIAN_DESC
++#ifdef CONFIG_USB_OHCI_LITTLE_ENDIAN
++#define big_endian_desc(ohci) (ohci->flags & OHCI_QUIRK_BE_DESC)
++#else
++#define big_endian_desc(ohci) 1 /* only big endian */
++#endif
++#else
++#define big_endian_desc(ohci) 0 /* only little endian */
++#endif
+
++#ifdef CONFIG_USB_OHCI_BIG_ENDIAN_MMIO
+ #ifdef CONFIG_USB_OHCI_LITTLE_ENDIAN
+-#define big_endian(ohci) (ohci->flags & OHCI_BIG_ENDIAN) /* either */
++#define big_endian_mmio(ohci) (ohci->flags & OHCI_QUIRK_BE_MMIO)
++#else
++#define big_endian_mmio(ohci) 1 /* only big endian */
++#endif
+ #else
+-#define big_endian(ohci) 1 /* only big endian */
++#define big_endian_mmio(ohci) 0 /* only little endian */
+ #endif
+
+ /*
+ * Big-endian read/write functions are arch-specific.
+ * Other arches can be added if/when they're needed.
++ *
++ * REVISIT: arch/powerpc now has readl/writel_be, so the
++ * definition below can die once the STB04xxx support is
++ * finally ported over.
+ */
+-#if defined(CONFIG_PPC)
++#if defined(CONFIG_PPC) && !defined(CONFIG_PPC_MERGE)
+ #define readl_be(addr) in_be32((__force unsigned *)addr)
+ #define writel_be(val, addr) out_be32((__force unsigned *)addr, val)
+ #endif
+
+-static inline unsigned int ohci_readl (const struct ohci_hcd *ohci,
+- __hc32 __iomem * regs)
++static inline unsigned int _ohci_readl (const struct ohci_hcd *ohci,
++ __hc32 __iomem * regs)
+ {
+- return big_endian(ohci) ? readl_be (regs) : readl ((__force u32 *)regs);
++ return big_endian_mmio(ohci) ?
++ readl_be ((__force u32 *)regs) :
++ readl ((__force u32 *)regs);
+ }
+
+-static inline void ohci_writel (const struct ohci_hcd *ohci,
+- const unsigned int val, __hc32 __iomem *regs)
++static inline void _ohci_writel (const struct ohci_hcd *ohci,
++ const unsigned int val, __hc32 __iomem *regs)
+ {
+- big_endian(ohci) ? writel_be (val, regs) :
+- writel (val, (__force u32 *)regs);
++ big_endian_mmio(ohci) ?
++ writel_be (val, (__force u32 *)regs) :
++ writel (val, (__force u32 *)regs);
+ }
+
+-#else /* !CONFIG_USB_OHCI_BIG_ENDIAN */
+-
+-#define big_endian(ohci) 0 /* only little endian */
+-
+ #ifdef CONFIG_ARCH_LH7A404
+- /* Marc Singer: at the time this code was written, the LH7A404
+- * had a problem reading the USB host registers. This
+- * implementation of the ohci_readl function performs the read
+- * twice as a work-around.
+- */
+-static inline unsigned int
+-ohci_readl (const struct ohci_hcd *ohci, const __hc32 *regs)
+-{
+- *(volatile __force unsigned int*) regs;
+- return *(volatile __force unsigned int*) regs;
+-}
++/* Marc Singer: at the time this code was written, the LH7A404
++ * had a problem reading the USB host registers. This
++ * implementation of the ohci_readl function performs the read
++ * twice as a work-around.
++ */
++#define ohci_readl(o,r) (_ohci_readl(o,r),_ohci_readl(o,r))
++#define ohci_writel(o,v,r) _ohci_writel(o,v,r)
+ #else
+- /* Standard version of ohci_readl uses standard, platform
+- * specific implementation. */
+-static inline unsigned int
+-ohci_readl (const struct ohci_hcd *ohci, __hc32 __iomem * regs)
+-{
+- return readl(regs);
+-}
++#define ohci_readl(o,r) _ohci_readl(o,r)
++#define ohci_writel(o,v,r) _ohci_writel(o,v,r)
+ #endif
+
+-static inline void ohci_writel (const struct ohci_hcd *ohci,
+- const unsigned int val, __hc32 __iomem *regs)
+-{
+- writel (val, regs);
+-}
+-
+-#endif /* !CONFIG_USB_OHCI_BIG_ENDIAN */
+
+ /*-------------------------------------------------------------------------*/
+
+ /* cpu to ohci */
+ static inline __hc16 cpu_to_hc16 (const struct ohci_hcd *ohci, const u16 x)
+ {
+- return big_endian(ohci) ? (__force __hc16)cpu_to_be16(x) : (__force __hc16)cpu_to_le16(x);
++ return big_endian_desc(ohci) ?
++ (__force __hc16)cpu_to_be16(x) :
++ (__force __hc16)cpu_to_le16(x);
+ }
+
+ static inline __hc16 cpu_to_hc16p (const struct ohci_hcd *ohci, const u16 *x)
+ {
+- return big_endian(ohci) ? cpu_to_be16p(x) : cpu_to_le16p(x);
++ return big_endian_desc(ohci) ?
++ cpu_to_be16p(x) :
++ cpu_to_le16p(x);
+ }
+
+ static inline __hc32 cpu_to_hc32 (const struct ohci_hcd *ohci, const u32 x)
+ {
+- return big_endian(ohci) ? (__force __hc32)cpu_to_be32(x) : (__force __hc32)cpu_to_le32(x);
++ return big_endian_desc(ohci) ?
++ (__force __hc32)cpu_to_be32(x) :
++ (__force __hc32)cpu_to_le32(x);
+ }
+
+ static inline __hc32 cpu_to_hc32p (const struct ohci_hcd *ohci, const u32 *x)
+ {
+- return big_endian(ohci) ? cpu_to_be32p(x) : cpu_to_le32p(x);
++ return big_endian_desc(ohci) ?
++ cpu_to_be32p(x) :
++ cpu_to_le32p(x);
+ }
+
+ /* ohci to cpu */
+ static inline u16 hc16_to_cpu (const struct ohci_hcd *ohci, const __hc16 x)
+ {
+- return big_endian(ohci) ? be16_to_cpu((__force __be16)x) : le16_to_cpu((__force __le16)x);
++ return big_endian_desc(ohci) ?
++ be16_to_cpu((__force __be16)x) :
++ le16_to_cpu((__force __le16)x);
+ }
+
+ static inline u16 hc16_to_cpup (const struct ohci_hcd *ohci, const __hc16 *x)
+ {
+- return big_endian(ohci) ? be16_to_cpup((__force __be16 *)x) : le16_to_cpup((__force __le16 *)x);
++ return big_endian_desc(ohci) ?
++ be16_to_cpup((__force __be16 *)x) :
++ le16_to_cpup((__force __le16 *)x);
+ }
+
+ static inline u32 hc32_to_cpu (const struct ohci_hcd *ohci, const __hc32 x)
+ {
+- return big_endian(ohci) ? be32_to_cpu((__force __be32)x) : le32_to_cpu((__force __le32)x);
++ return big_endian_desc(ohci) ?
++ be32_to_cpu((__force __be32)x) :
++ le32_to_cpu((__force __le32)x);
+ }
+
+ static inline u32 hc32_to_cpup (const struct ohci_hcd *ohci, const __hc32 *x)
+ {
+- return big_endian(ohci) ? be32_to_cpup((__force __be32 *)x) : le32_to_cpup((__force __le32 *)x);
++ return big_endian_desc(ohci) ?
++ be32_to_cpup((__force __be32 *)x) :
++ le32_to_cpup((__force __le32 *)x);
+ }
+
+ /*-------------------------------------------------------------------------*/
+@@ -557,6 +597,9 @@ static inline u32 hc32_to_cpup (const struct ohci_hcd *ohci, const __hc32 *x)
+ /* HCCA frame number is 16 bits, but is accessed as 32 bits since not all
+ * hardware handles 16 bit reads. That creates a different confusion on
+ * some big-endian SOC implementations. Same thing happens with PSW access.
++ *
++ * FIXME: Deal with that as a runtime quirk when STB03xxx is ported over
++ * to arch/powerpc
+ */
+
+ #ifdef CONFIG_STB03xxx
+@@ -568,7 +611,7 @@ static inline u32 hc32_to_cpup (const struct ohci_hcd *ohci, const __hc32 *x)
+ static inline u16 ohci_frame_no(const struct ohci_hcd *ohci)
+ {
+ u32 tmp;
+- if (big_endian(ohci)) {
++ if (big_endian_desc(ohci)) {
+ tmp = be32_to_cpup((__force __be32 *)&ohci->hcca->frame_no);
+ tmp >>= OHCI_BE_FRAME_NO_SHIFT;
+ } else
+@@ -580,7 +623,7 @@ static inline u16 ohci_frame_no(const struct ohci_hcd *ohci)
+ static inline __hc16 *ohci_hwPSWp(const struct ohci_hcd *ohci,
+ const struct td *td, int index)
+ {
+- return (__hc16 *)(big_endian(ohci) ?
++ return (__hc16 *)(big_endian_desc(ohci) ?
+ &td->hwPSW[index ^ 1] : &td->hwPSW[index]);
+ }
+
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0008-ohci-Rework-bus-glue-integration-to-allow-several-at-once.txt b/packages/linux/linux-efika-2.6.20/0008-ohci-Rework-bus-glue-integration-to-allow-several-at-once.txt
new file mode 100644
index 0000000000..c209ee035b
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0008-ohci-Rework-bus-glue-integration-to-allow-several-at-once.txt
@@ -0,0 +1,470 @@
+From 51294aa1482ea961a3e51ddac587b70b7c1c8ba0 Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Wed, 13 Dec 2006 20:35:37 +0100
+Subject: [PATCH] [PATCH] ohci: Rework bus glue integration to allow several at once
+
+The previous model had the module_init & module_exit function in the
+bus glue .c files themselves. That's a problem if several glues need
+to be selected at once and the driver is built has module. This case
+is quite common in embedded system where you want to handle both the
+integrated ohci controller and some extra controller on PCI.
+
+The ohci-hcd.c file now provide the module_init & module_exit and
+appropriate driver registering/unregistering is done conditionally,
+using #ifdefs.
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+Acked-by: David Brownell <dbrownell@users.sourceforge.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/usb/host/ohci-at91.c | 15 ------
+ drivers/usb/host/ohci-au1xxx.c | 16 ------
+ drivers/usb/host/ohci-ep93xx.c | 12 -----
+ drivers/usb/host/ohci-hcd.c | 98 +++++++++++++++++++++++++++++++++------
+ drivers/usb/host/ohci-lh7a404.c | 16 ------
+ drivers/usb/host/ohci-omap.c | 19 --------
+ drivers/usb/host/ohci-pci.c | 20 --------
+ drivers/usb/host/ohci-pnx4008.c | 12 -----
+ drivers/usb/host/ohci-pnx8550.c | 16 ------
+ drivers/usb/host/ohci-ppc-soc.c | 16 ------
+ drivers/usb/host/ohci-pxa27x.c | 16 ------
+ drivers/usb/host/ohci-s3c2410.c | 12 -----
+ drivers/usb/host/ohci-sa1111.c | 16 ------
+ 13 files changed, 83 insertions(+), 201 deletions(-)
+
+diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
+index cc40551..53f62cf 100644
+--- a/drivers/usb/host/ohci-at91.c
++++ b/drivers/usb/host/ohci-at91.c
+@@ -320,18 +320,3 @@ static struct platform_driver ohci_hcd_at91_driver = {
+ },
+ };
+
+-static int __init ohci_hcd_at91_init (void)
+-{
+- if (usb_disabled())
+- return -ENODEV;
+-
+- return platform_driver_register(&ohci_hcd_at91_driver);
+-}
+-
+-static void __exit ohci_hcd_at91_cleanup (void)
+-{
+- platform_driver_unregister(&ohci_hcd_at91_driver);
+-}
+-
+-module_init (ohci_hcd_at91_init);
+-module_exit (ohci_hcd_at91_cleanup);
+diff --git a/drivers/usb/host/ohci-au1xxx.c b/drivers/usb/host/ohci-au1xxx.c
+index e70b243..663a060 100644
+--- a/drivers/usb/host/ohci-au1xxx.c
++++ b/drivers/usb/host/ohci-au1xxx.c
+@@ -345,19 +345,3 @@ static struct platform_driver ohci_hcd_au1xxx_driver = {
+ },
+ };
+
+-static int __init ohci_hcd_au1xxx_init (void)
+-{
+- pr_debug (DRIVER_INFO " (Au1xxx)");
+- pr_debug ("block sizes: ed %d td %d\n",
+- sizeof (struct ed), sizeof (struct td));
+-
+- return platform_driver_register(&ohci_hcd_au1xxx_driver);
+-}
+-
+-static void __exit ohci_hcd_au1xxx_cleanup (void)
+-{
+- platform_driver_unregister(&ohci_hcd_au1xxx_driver);
+-}
+-
+-module_init (ohci_hcd_au1xxx_init);
+-module_exit (ohci_hcd_au1xxx_cleanup);
+diff --git a/drivers/usb/host/ohci-ep93xx.c b/drivers/usb/host/ohci-ep93xx.c
+index 43ae696..e9974c3 100644
+--- a/drivers/usb/host/ohci-ep93xx.c
++++ b/drivers/usb/host/ohci-ep93xx.c
+@@ -214,15 +214,3 @@ static struct platform_driver ohci_hcd_ep93xx_driver = {
+ },
+ };
+
+-static int __init ohci_hcd_ep93xx_init(void)
+-{
+- return platform_driver_register(&ohci_hcd_ep93xx_driver);
+-}
+-
+-static void __exit ohci_hcd_ep93xx_cleanup(void)
+-{
+- platform_driver_unregister(&ohci_hcd_ep93xx_driver);
+-}
+-
+-module_init(ohci_hcd_ep93xx_init);
+-module_exit(ohci_hcd_ep93xx_cleanup);
+diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
+index c1c1d87..9926b8f 100644
+--- a/drivers/usb/host/ohci-hcd.c
++++ b/drivers/usb/host/ohci-hcd.c
+@@ -855,63 +855,131 @@ MODULE_LICENSE ("GPL");
+
+ #ifdef CONFIG_PCI
+ #include "ohci-pci.c"
++#define PCI_DRIVER ohci_pci_driver
+ #endif
+
+ #ifdef CONFIG_SA1111
+ #include "ohci-sa1111.c"
++#define SA1111_DRIVER ohci_hcd_sa1111_driver
+ #endif
+
+ #ifdef CONFIG_ARCH_S3C2410
+ #include "ohci-s3c2410.c"
++#define PLATFORM_DRIVER ohci_hcd_s3c2410_driver
+ #endif
+
+ #ifdef CONFIG_ARCH_OMAP
+ #include "ohci-omap.c"
++#define PLATFORM_DRIVER ohci_hcd_omap_driver
+ #endif
+
+ #ifdef CONFIG_ARCH_LH7A404
+ #include "ohci-lh7a404.c"
++#define PLATFORM_DRIVER ohci_hcd_lh7a404_driver
+ #endif
+
+ #ifdef CONFIG_PXA27x
+ #include "ohci-pxa27x.c"
++#define PLATFORM_DRIVER ohci_hcd_pxa27x_driver
+ #endif
+
+ #ifdef CONFIG_ARCH_EP93XX
+ #include "ohci-ep93xx.c"
++#define PLATFORM_DRIVER ohci_hcd_ep93xx_driver
+ #endif
+
+ #ifdef CONFIG_SOC_AU1X00
+ #include "ohci-au1xxx.c"
++#define PLATFORM_DRIVER ohci_hcd_au1xxx_driver
+ #endif
+
+-#ifdef CONFIG_PNX8550
+-#include "ohci-pnx8550.c"
+-#endif
++#ifdef CONFIG_PNX8550
++#include "ohci-pnx8550.c"
++#define PLATFORM_DRIVER ohci_hcd_pnx8550_driver
++#endif
+
+ #ifdef CONFIG_USB_OHCI_HCD_PPC_SOC
+ #include "ohci-ppc-soc.c"
++#define PLATFORM_DRIVER ohci_hcd_ppc_soc_driver
+ #endif
+
+ #ifdef CONFIG_ARCH_AT91
+ #include "ohci-at91.c"
++#define PLATFORM_DRIVER ohci_hcd_at91_driver
+ #endif
+
+ #ifdef CONFIG_ARCH_PNX4008
+ #include "ohci-pnx4008.c"
++#define PLATFORM_DRIVER usb_hcd_pnx4008_driver
+ #endif
+
+-#if !(defined(CONFIG_PCI) \
+- || defined(CONFIG_SA1111) \
+- || defined(CONFIG_ARCH_S3C2410) \
+- || defined(CONFIG_ARCH_OMAP) \
+- || defined (CONFIG_ARCH_LH7A404) \
+- || defined (CONFIG_PXA27x) \
+- || defined (CONFIG_ARCH_EP93XX) \
+- || defined (CONFIG_SOC_AU1X00) \
+- || defined (CONFIG_USB_OHCI_HCD_PPC_SOC) \
+- || defined (CONFIG_ARCH_AT91) \
+- || defined (CONFIG_ARCH_PNX4008) \
+- )
++
++#if !defined(PCI_DRIVER) && \
++ !defined(PLATFORM_DRIVER) && \
++ !defined(SA1111_DRIVER)
+ #error "missing bus glue for ohci-hcd"
+ #endif
++
++static int __init ohci_hcd_mod_init(void)
++{
++ int retval = 0;
++ int ls = 0;
++
++ if (usb_disabled())
++ return -ENODEV;
++
++ printk (KERN_DEBUG "%s: " DRIVER_INFO "\n", hcd_name);
++ pr_debug ("%s: block sizes: ed %Zd td %Zd\n", hcd_name,
++ sizeof (struct ed), sizeof (struct td));
++
++#ifdef PLATFORM_DRIVER
++ retval = platform_driver_register(&PLATFORM_DRIVER);
++ if (retval < 0)
++ return retval;
++ ls++;
++#endif
++
++#ifdef SA1111_DRIVER
++ retval = sa1111_driver_register(&SA1111_DRIVER);
++ if (retval < 0)
++ goto error;
++ ls++;
++#endif
++
++#ifdef PCI_DRIVER
++ retval = pci_register_driver(&PCI_DRIVER);
++ if (retval < 0)
++ goto error;
++ ls++;
++#endif
++
++ return retval;
++
++ /* Error path */
++error:
++#ifdef PLATFORM_DRIVER
++ if (ls--)
++ platform_driver_unregister(&PLATFORM_DRIVER);
++#endif
++#ifdef SA1111_DRIVER
++ if (ls--)
++ sa1111_driver_unregister(&SA1111_DRIVER);
++#endif
++ return retval;
++}
++module_init(ohci_hcd_mod_init);
++
++static void __exit ohci_hcd_mod_exit(void)
++{
++#ifdef PCI_DRIVER
++ pci_unregister_driver(&PCI_DRIVER);
++#endif
++#ifdef SA1111_DRIVER
++ sa1111_driver_unregister(&SA1111_DRIVER);
++#endif
++#ifdef PLATFORM_DRIVER
++ platform_driver_unregister(&PLATFORM_DRIVER);
++#endif
++}
++module_exit(ohci_hcd_mod_exit);
++
+diff --git a/drivers/usb/host/ohci-lh7a404.c b/drivers/usb/host/ohci-lh7a404.c
+index e9807cf..4a043ab 100644
+--- a/drivers/usb/host/ohci-lh7a404.c
++++ b/drivers/usb/host/ohci-lh7a404.c
+@@ -251,19 +251,3 @@ static struct platform_driver ohci_hcd_lh7a404_driver = {
+ },
+ };
+
+-static int __init ohci_hcd_lh7a404_init (void)
+-{
+- pr_debug (DRIVER_INFO " (LH7A404)");
+- pr_debug ("block sizes: ed %d td %d\n",
+- sizeof (struct ed), sizeof (struct td));
+-
+- return platform_driver_register(&ohci_hcd_lh7a404_driver);
+-}
+-
+-static void __exit ohci_hcd_lh7a404_cleanup (void)
+-{
+- platform_driver_unregister(&ohci_hcd_lh7a404_driver);
+-}
+-
+-module_init (ohci_hcd_lh7a404_init);
+-module_exit (ohci_hcd_lh7a404_cleanup);
+diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c
+index 27be1f9..5cfa3d1 100644
+--- a/drivers/usb/host/ohci-omap.c
++++ b/drivers/usb/host/ohci-omap.c
+@@ -544,22 +544,3 @@ static struct platform_driver ohci_hcd_omap_driver = {
+ },
+ };
+
+-static int __init ohci_hcd_omap_init (void)
+-{
+- printk (KERN_DEBUG "%s: " DRIVER_INFO " (OMAP)\n", hcd_name);
+- if (usb_disabled())
+- return -ENODEV;
+-
+- pr_debug("%s: block sizes: ed %Zd td %Zd\n", hcd_name,
+- sizeof (struct ed), sizeof (struct td));
+-
+- return platform_driver_register(&ohci_hcd_omap_driver);
+-}
+-
+-static void __exit ohci_hcd_omap_cleanup (void)
+-{
+- platform_driver_unregister(&ohci_hcd_omap_driver);
+-}
+-
+-module_init (ohci_hcd_omap_init);
+-module_exit (ohci_hcd_omap_cleanup);
+diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
+index 292daf0..b331ac4 100644
+--- a/drivers/usb/host/ohci-pci.c
++++ b/drivers/usb/host/ohci-pci.c
+@@ -311,23 +311,3 @@ static struct pci_driver ohci_pci_driver = {
+ .shutdown = usb_hcd_pci_shutdown,
+ };
+
+-
+-static int __init ohci_hcd_pci_init (void)
+-{
+- printk (KERN_DEBUG "%s: " DRIVER_INFO " (PCI)\n", hcd_name);
+- if (usb_disabled())
+- return -ENODEV;
+-
+- pr_debug ("%s: block sizes: ed %Zd td %Zd\n", hcd_name,
+- sizeof (struct ed), sizeof (struct td));
+- return pci_register_driver (&ohci_pci_driver);
+-}
+-module_init (ohci_hcd_pci_init);
+-
+-/*-------------------------------------------------------------------------*/
+-
+-static void __exit ohci_hcd_pci_cleanup (void)
+-{
+- pci_unregister_driver (&ohci_pci_driver);
+-}
+-module_exit (ohci_hcd_pci_cleanup);
+diff --git a/drivers/usb/host/ohci-pnx4008.c b/drivers/usb/host/ohci-pnx4008.c
+index 3a8cbfb..893b172 100644
+--- a/drivers/usb/host/ohci-pnx4008.c
++++ b/drivers/usb/host/ohci-pnx4008.c
+@@ -465,15 +465,3 @@ static struct platform_driver usb_hcd_pnx4008_driver = {
+ .remove = usb_hcd_pnx4008_remove,
+ };
+
+-static int __init usb_hcd_pnx4008_init(void)
+-{
+- return platform_driver_register(&usb_hcd_pnx4008_driver);
+-}
+-
+-static void __exit usb_hcd_pnx4008_cleanup(void)
+-{
+- return platform_driver_unregister(&usb_hcd_pnx4008_driver);
+-}
+-
+-module_init(usb_hcd_pnx4008_init);
+-module_exit(usb_hcd_pnx4008_cleanup);
+diff --git a/drivers/usb/host/ohci-pnx8550.c b/drivers/usb/host/ohci-pnx8550.c
+index 6922b91..de45eb0 100644
+--- a/drivers/usb/host/ohci-pnx8550.c
++++ b/drivers/usb/host/ohci-pnx8550.c
+@@ -240,19 +240,3 @@ static struct platform_driver ohci_hcd_pnx8550_driver = {
+ .remove = ohci_hcd_pnx8550_drv_remove,
+ };
+
+-static int __init ohci_hcd_pnx8550_init (void)
+-{
+- pr_debug (DRIVER_INFO " (pnx8550)");
+- pr_debug ("block sizes: ed %d td %d\n",
+- sizeof (struct ed), sizeof (struct td));
+-
+- return platform_driver_register(&ohci_hcd_pnx8550_driver);
+-}
+-
+-static void __exit ohci_hcd_pnx8550_cleanup (void)
+-{
+- platform_driver_unregister(&ohci_hcd_pnx8550_driver);
+-}
+-
+-module_init (ohci_hcd_pnx8550_init);
+-module_exit (ohci_hcd_pnx8550_cleanup);
+diff --git a/drivers/usb/host/ohci-ppc-soc.c b/drivers/usb/host/ohci-ppc-soc.c
+index c7ce8e6..1a2e177 100644
+--- a/drivers/usb/host/ohci-ppc-soc.c
++++ b/drivers/usb/host/ohci-ppc-soc.c
+@@ -208,19 +208,3 @@ static struct platform_driver ohci_hcd_ppc_soc_driver = {
+ },
+ };
+
+-static int __init ohci_hcd_ppc_soc_init(void)
+-{
+- pr_debug(DRIVER_INFO " (PPC SOC)\n");
+- pr_debug("block sizes: ed %d td %d\n", sizeof(struct ed),
+- sizeof(struct td));
+-
+- return platform_driver_register(&ohci_hcd_ppc_soc_driver);
+-}
+-
+-static void __exit ohci_hcd_ppc_soc_cleanup(void)
+-{
+- platform_driver_unregister(&ohci_hcd_ppc_soc_driver);
+-}
+-
+-module_init(ohci_hcd_ppc_soc_init);
+-module_exit(ohci_hcd_ppc_soc_cleanup);
+diff --git a/drivers/usb/host/ohci-pxa27x.c b/drivers/usb/host/ohci-pxa27x.c
+index 3bbea84..f1563dc 100644
+--- a/drivers/usb/host/ohci-pxa27x.c
++++ b/drivers/usb/host/ohci-pxa27x.c
+@@ -369,19 +369,3 @@ static struct platform_driver ohci_hcd_pxa27x_driver = {
+ },
+ };
+
+-static int __init ohci_hcd_pxa27x_init (void)
+-{
+- pr_debug (DRIVER_INFO " (pxa27x)");
+- pr_debug ("block sizes: ed %d td %d\n",
+- sizeof (struct ed), sizeof (struct td));
+-
+- return platform_driver_register(&ohci_hcd_pxa27x_driver);
+-}
+-
+-static void __exit ohci_hcd_pxa27x_cleanup (void)
+-{
+- platform_driver_unregister(&ohci_hcd_pxa27x_driver);
+-}
+-
+-module_init (ohci_hcd_pxa27x_init);
+-module_exit (ohci_hcd_pxa27x_cleanup);
+diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c
+index b350d45..6829814 100644
+--- a/drivers/usb/host/ohci-s3c2410.c
++++ b/drivers/usb/host/ohci-s3c2410.c
+@@ -501,15 +501,3 @@ static struct platform_driver ohci_hcd_s3c2410_driver = {
+ },
+ };
+
+-static int __init ohci_hcd_s3c2410_init (void)
+-{
+- return platform_driver_register(&ohci_hcd_s3c2410_driver);
+-}
+-
+-static void __exit ohci_hcd_s3c2410_cleanup (void)
+-{
+- platform_driver_unregister(&ohci_hcd_s3c2410_driver);
+-}
+-
+-module_init (ohci_hcd_s3c2410_init);
+-module_exit (ohci_hcd_s3c2410_cleanup);
+diff --git a/drivers/usb/host/ohci-sa1111.c b/drivers/usb/host/ohci-sa1111.c
+index fe0090e..0f48f2d 100644
+--- a/drivers/usb/host/ohci-sa1111.c
++++ b/drivers/usb/host/ohci-sa1111.c
+@@ -269,19 +269,3 @@ static struct sa1111_driver ohci_hcd_sa1111_driver = {
+ .remove = ohci_hcd_sa1111_drv_remove,
+ };
+
+-static int __init ohci_hcd_sa1111_init (void)
+-{
+- dbg (DRIVER_INFO " (SA-1111)");
+- dbg ("block sizes: ed %d td %d",
+- sizeof (struct ed), sizeof (struct td));
+-
+- return sa1111_driver_register(&ohci_hcd_sa1111_driver);
+-}
+-
+-static void __exit ohci_hcd_sa1111_cleanup (void)
+-{
+- sa1111_driver_unregister(&ohci_hcd_sa1111_driver);
+-}
+-
+-module_init (ohci_hcd_sa1111_init);
+-module_exit (ohci_hcd_sa1111_cleanup);
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0009-ohci-Add-support-for-OHCI-controller-on-the-of_platform-bus.txt b/packages/linux/linux-efika-2.6.20/0009-ohci-Add-support-for-OHCI-controller-on-the-of_platform-bus.txt
new file mode 100644
index 0000000000..2b53e487f8
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0009-ohci-Add-support-for-OHCI-controller-on-the-of_platform-bus.txt
@@ -0,0 +1,349 @@
+From 944afcaa19737396ed514e3e845a3db2de9377f3 Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Wed, 13 Dec 2006 21:03:30 +0100
+Subject: [PATCH] [PATCH] ohci: Add support for OHCI controller on the of_platform bus
+
+PPC embedded systems can have a ohci controller builtin. In the
+new model, it will end up as a driver on the of_platform bus,
+this patches takes care of them.
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+Acked-by: David Brownell <dbrownell@users.sourceforge.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/usb/host/Kconfig | 23 ++++-
+ drivers/usb/host/ohci-hcd.c | 20 ++++
+ drivers/usb/host/ohci-ppc-of.c | 232 ++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 274 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
+index faabce8..c49715d 100644
+--- a/drivers/usb/host/Kconfig
++++ b/drivers/usb/host/Kconfig
+@@ -107,9 +107,30 @@ config USB_OHCI_HCD_PPC_SOC
+ Enables support for the USB controller on the MPC52xx or
+ STB03xxx processor chip. If unsure, say Y.
+
++config USB_OHCI_HCD_PPC_OF
++ bool "OHCI support for PPC USB controller on OF platform bus"
++ depends on USB_OHCI_HCD && PPC_OF
++ default y
++ ---help---
++ Enables support for the USB controller PowerPC present on the
++ OpenFirmware platform bus.
++
++config USB_OHCI_HCD_PPC_OF_BE
++ bool "Support big endian HC"
++ depends on USB_OHCI_HCD_PPC_OF
++ default y
++ select USB_OHCI_BIG_ENDIAN_DESC
++ select USB_OHCI_BIG_ENDIAN_MMIO
++
++config USB_OHCI_HCD_PPC_OF_LE
++ bool "Support little endian HC"
++ depends on USB_OHCI_HCD_PPC_OF
++ default n
++ select USB_OHCI_LITTLE_ENDIAN
++
+ config USB_OHCI_HCD_PCI
+ bool "OHCI support for PCI-bus USB controllers"
+- depends on USB_OHCI_HCD && PCI && (STB03xxx || PPC_MPC52xx)
++ depends on USB_OHCI_HCD && PCI && (STB03xxx || PPC_MPC52xx || USB_OHCI_HCD_PPC_OF)
+ default y
+ select USB_OHCI_LITTLE_ENDIAN
+ ---help---
+diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
+index 9926b8f..c6ae1ff 100644
+--- a/drivers/usb/host/ohci-hcd.c
++++ b/drivers/usb/host/ohci-hcd.c
+@@ -914,8 +914,14 @@ MODULE_LICENSE ("GPL");
+ #endif
+
+
++#ifdef CONFIG_USB_OHCI_HCD_PPC_OF
++#include "ohci-ppc-of.c"
++#define OF_PLATFORM_DRIVER ohci_hcd_ppc_of_driver
++#endif
++
+ #if !defined(PCI_DRIVER) && \
+ !defined(PLATFORM_DRIVER) && \
++ !defined(OF_PLATFORM_DRIVER) && \
+ !defined(SA1111_DRIVER)
+ #error "missing bus glue for ohci-hcd"
+ #endif
+@@ -939,6 +945,13 @@ static int __init ohci_hcd_mod_init(void)
+ ls++;
+ #endif
+
++#ifdef OF_PLATFORM_DRIVER
++ retval = of_register_platform_driver(&OF_PLATFORM_DRIVER);
++ if (retval < 0)
++ goto error;
++ ls++;
++#endif
++
+ #ifdef SA1111_DRIVER
+ retval = sa1111_driver_register(&SA1111_DRIVER);
+ if (retval < 0)
+@@ -961,6 +974,10 @@ error:
+ if (ls--)
+ platform_driver_unregister(&PLATFORM_DRIVER);
+ #endif
++#ifdef OF_PLATFORM_DRIVER
++ if (ls--)
++ of_unregister_platform_driver(&OF_PLATFORM_DRIVER);
++#endif
+ #ifdef SA1111_DRIVER
+ if (ls--)
+ sa1111_driver_unregister(&SA1111_DRIVER);
+@@ -977,6 +994,9 @@ static void __exit ohci_hcd_mod_exit(void)
+ #ifdef SA1111_DRIVER
+ sa1111_driver_unregister(&SA1111_DRIVER);
+ #endif
++#ifdef OF_PLATFORM_DRIVER
++ of_unregister_platform_driver(&OF_PLATFORM_DRIVER);
++#endif
+ #ifdef PLATFORM_DRIVER
+ platform_driver_unregister(&PLATFORM_DRIVER);
+ #endif
+diff --git a/drivers/usb/host/ohci-ppc-of.c b/drivers/usb/host/ohci-ppc-of.c
+new file mode 100644
+index 0000000..84b555b
+--- /dev/null
++++ b/drivers/usb/host/ohci-ppc-of.c
+@@ -0,0 +1,232 @@
++/*
++ * 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
++ * (C) Copyright 2006 Sylvain Munaut <tnt@246tNt.com>
++ *
++ * Bus glue for OHCI HC on the of_platform bus
++ *
++ * Modified for of_platform bus from ohci-sa1111.c
++ *
++ * This file is licenced under the GPL.
++ */
++
++#include <linux/signal.h>
++
++#include <asm/of_platform.h>
++#include <asm/prom.h>
++
++
++static int __devinit
++ohci_ppc_of_start(struct usb_hcd *hcd)
++{
++ struct ohci_hcd *ohci = hcd_to_ohci(hcd);
++ int ret;
++
++ if ((ret = ohci_init(ohci)) < 0)
++ return ret;
++
++ if ((ret = ohci_run(ohci)) < 0) {
++ err("can't start %s", ohci_to_hcd(ohci)->self.bus_name);
++ ohci_stop(hcd);
++ return ret;
++ }
++
++ return 0;
++}
++
++static const struct hc_driver ohci_ppc_of_hc_driver = {
++ .description = hcd_name,
++ .product_desc = "OF OHCI",
++ .hcd_priv_size = sizeof(struct ohci_hcd),
++
++ /*
++ * generic hardware linkage
++ */
++ .irq = ohci_irq,
++ .flags = HCD_USB11 | HCD_MEMORY,
++
++ /*
++ * basic lifecycle operations
++ */
++ .start = ohci_ppc_of_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 int __devinit
++ohci_hcd_ppc_of_probe(struct of_device *op, const struct of_device_id *match)
++{
++ struct device_node *dn = op->node;
++ struct usb_hcd *hcd;
++ struct ohci_hcd *ohci;
++ struct resource res;
++ int irq;
++
++ int rv;
++ int is_bigendian;
++
++ if (usb_disabled())
++ return -ENODEV;
++
++ is_bigendian =
++ device_is_compatible(dn, "ohci-bigendian") ||
++ device_is_compatible(dn, "ohci-be");;
++
++ dev_dbg(&op->dev, "initializing PPC-OF USB Controller\n");
++
++ rv = of_address_to_resource(dn, 0, &res);
++ if (rv)
++ return rv;
++
++ hcd = usb_create_hcd(&ohci_ppc_of_hc_driver, &op->dev, "PPC-OF USB");
++ if (!hcd)
++ return -ENOMEM;
++
++ hcd->rsrc_start = res.start;
++ hcd->rsrc_len = res.end - res.start + 1;
++
++ if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) {
++ printk(KERN_ERR __FILE__ ": request_mem_region failed\n");
++ rv = -EBUSY;
++ goto err_rmr;
++ }
++
++ irq = irq_of_parse_and_map(dn, 0);
++ if (irq == NO_IRQ) {
++ printk(KERN_ERR __FILE__ ": irq_of_parse_and_map failed\n");
++ rv = -EBUSY;
++ goto err_irq;
++ }
++
++ hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len);
++ if (!hcd->regs) {
++ printk(KERN_ERR __FILE__ ": ioremap failed\n");
++ rv = -ENOMEM;
++ goto err_ioremap;
++ }
++
++ ohci = hcd_to_ohci(hcd);
++ if (is_bigendian)
++ ohci->flags |= OHCI_QUIRK_BE_MMIO | OHCI_QUIRK_BE_DESC;
++
++ ohci_hcd_init(ohci);
++
++ rv = usb_add_hcd(hcd, irq, 0);
++ if (rv == 0)
++ return 0;
++
++ iounmap(hcd->regs);
++err_ioremap:
++ irq_dispose_mapping(irq);
++err_irq:
++ release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
++err_rmr:
++ usb_put_hcd(hcd);
++
++ return rv;
++}
++
++static int ohci_hcd_ppc_of_remove(struct of_device *op)
++{
++ struct usb_hcd *hcd = dev_get_drvdata(&op->dev);
++ dev_set_drvdata(&op->dev, NULL);
++
++ dev_dbg(&op->dev, "stopping PPC-OF USB Controller\n");
++
++ usb_remove_hcd(hcd);
++
++ iounmap(hcd->regs);
++ irq_dispose_mapping(hcd->irq);
++ release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
++
++ usb_put_hcd(hcd);
++
++ return 0;
++}
++
++static int ohci_hcd_ppc_of_shutdown(struct of_device *op)
++{
++ struct usb_hcd *hcd = dev_get_drvdata(&op->dev);
++
++ if (hcd->driver->shutdown)
++ hcd->driver->shutdown(hcd);
++
++ return 0;
++}
++
++
++static struct of_device_id ohci_hcd_ppc_of_match[] = {
++#ifdef CONFIG_USB_OHCI_HCD_PPC_OF_BE
++ {
++ .name = "usb",
++ .compatible = "ohci-bigendian",
++ },
++ {
++ .name = "usb",
++ .compatible = "ohci-be",
++ },
++#endif
++#ifdef CONFIG_USB_OHCI_HCD_PPC_OF_LE
++ {
++ .name = "usb",
++ .compatible = "ohci-littledian",
++ },
++ {
++ .name = "usb",
++ .compatible = "ohci-le",
++ },
++#endif
++ {},
++};
++MODULE_DEVICE_TABLE(of, ohci_hcd_ppc_of_match);
++
++#if !defined(CONFIG_USB_OHCI_HCD_PPC_OF_BE) && \
++ !defined(CONFIG_USB_OHCI_HCD_PPC_OF_LE)
++#error "No endianess selected for ppc-of-ohci"
++#endif
++
++
++static struct of_platform_driver ohci_hcd_ppc_of_driver = {
++ .name = "ppc-of-ohci",
++ .match_table = ohci_hcd_ppc_of_match,
++ .probe = ohci_hcd_ppc_of_probe,
++ .remove = ohci_hcd_ppc_of_remove,
++ .shutdown = ohci_hcd_ppc_of_shutdown,
++#ifdef CONFIG_PM
++ /*.suspend = ohci_hcd_ppc_soc_drv_suspend,*/
++ /*.resume = ohci_hcd_ppc_soc_drv_resume,*/
++#endif
++ .driver = {
++ .name = "ppc-of-ohci",
++ .owner = THIS_MODULE,
++ },
++};
++
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0010-libata-Add-support-for-the-MPC52xx-ATA-controller.txt b/packages/linux/linux-efika-2.6.20/0010-libata-Add-support-for-the-MPC52xx-ATA-controller.txt
new file mode 100644
index 0000000000..4a69da5c2c
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0010-libata-Add-support-for-the-MPC52xx-ATA-controller.txt
@@ -0,0 +1,620 @@
+From 83ebd6314e55f9baf2c4e795397346b338274ef5 Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Fri, 8 Dec 2006 00:08:14 +0100
+Subject: [PATCH] [PATCH] libata: Add support for the MPC52xx ATA controller
+
+This patch adds initial libata support for the Freescale
+MPC5200 integrated IDE controller.
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+Signed-off-by: Jeff Garzik <jeff@garzik.org>
+---
+ drivers/ata/Kconfig | 9 +
+ drivers/ata/Makefile | 1 +
+ drivers/ata/pata_mpc52xx.c | 563 ++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 573 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
+index b34e0a9..fa1d327 100644
+--- a/drivers/ata/Kconfig
++++ b/drivers/ata/Kconfig
+@@ -337,6 +337,15 @@ config PATA_MARVELL
+
+ If unsure, say N.
+
++config PATA_MPC52xx
++ tristate "Freescale MPC52xx SoC internal IDE"
++ depends on PPC_MPC52xx
++ help
++ This option enables support for integrated IDE controller
++ of the Freescale MPC52xx SoC.
++
++ If unsure, say N.
++
+ config PATA_MPIIX
+ tristate "Intel PATA MPIIX support"
+ depends on PCI
+diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile
+index bc3d81a..3081e1f 100644
+--- a/drivers/ata/Makefile
++++ b/drivers/ata/Makefile
+@@ -38,6 +38,7 @@ obj-$(CONFIG_PATA_NETCELL) += pata_netcell.o
+ obj-$(CONFIG_PATA_NS87410) += pata_ns87410.o
+ obj-$(CONFIG_PATA_OPTI) += pata_opti.o
+ obj-$(CONFIG_PATA_OPTIDMA) += pata_optidma.o
++obj-$(CONFIG_PATA_MPC52xx) += pata_mpc52xx.o
+ obj-$(CONFIG_PATA_MARVELL) += pata_marvell.o
+ obj-$(CONFIG_PATA_MPIIX) += pata_mpiix.o
+ obj-$(CONFIG_PATA_OLDPIIX) += pata_oldpiix.o
+diff --git a/drivers/ata/pata_mpc52xx.c b/drivers/ata/pata_mpc52xx.c
+new file mode 100644
+index 0000000..8b7019a
+--- /dev/null
++++ b/drivers/ata/pata_mpc52xx.c
+@@ -0,0 +1,563 @@
++/*
++ * drivers/ata/pata_mpc52xx.c
++ *
++ * libata driver for the Freescale MPC52xx on-chip IDE interface
++ *
++ * Copyright (C) 2006 Sylvain Munaut <tnt@246tNt.com>
++ * Copyright (C) 2003 Mipsys - Benjamin Herrenschmidt
++ *
++ * This file is licensed under the terms of the GNU General Public License
++ * version 2. This program is licensed "as is" without any warranty of any
++ * kind, whether express or implied.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/slab.h>
++#include <linux/delay.h>
++#include <linux/libata.h>
++
++#include <asm/io.h>
++#include <asm/types.h>
++#include <asm/prom.h>
++#include <asm/of_platform.h>
++#include <asm/mpc52xx.h>
++
++
++#define DRV_NAME "mpc52xx_ata"
++#define DRV_VERSION "0.1.0"
++
++
++/* Private structures used by the driver */
++struct mpc52xx_ata_timings {
++ u32 pio1;
++ u32 pio2;
++};
++
++struct mpc52xx_ata_priv {
++ unsigned int ipb_period;
++ struct mpc52xx_ata __iomem * ata_regs;
++ int ata_irq;
++ struct mpc52xx_ata_timings timings[2];
++ int csel;
++};
++
++
++/* ATAPI-4 PIO specs (in ns) */
++static const int ataspec_t0[5] = {600, 383, 240, 180, 120};
++static const int ataspec_t1[5] = { 70, 50, 30, 30, 25};
++static const int ataspec_t2_8[5] = {290, 290, 290, 80, 70};
++static const int ataspec_t2_16[5] = {165, 125, 100, 80, 70};
++static const int ataspec_t2i[5] = { 0, 0, 0, 70, 25};
++static const int ataspec_t4[5] = { 30, 20, 15, 10, 10};
++static const int ataspec_ta[5] = { 35, 35, 35, 35, 35};
++
++#define CALC_CLKCYC(c,v) ((((v)+(c)-1)/(c)))
++
++
++/* Bit definitions inside the registers */
++#define MPC52xx_ATA_HOSTCONF_SMR 0x80000000UL /* State machine reset */
++#define MPC52xx_ATA_HOSTCONF_FR 0x40000000UL /* FIFO Reset */
++#define MPC52xx_ATA_HOSTCONF_IE 0x02000000UL /* Enable interrupt in PIO */
++#define MPC52xx_ATA_HOSTCONF_IORDY 0x01000000UL /* Drive supports IORDY protocol */
++
++#define MPC52xx_ATA_HOSTSTAT_TIP 0x80000000UL /* Transaction in progress */
++#define MPC52xx_ATA_HOSTSTAT_UREP 0x40000000UL /* UDMA Read Extended Pause */
++#define MPC52xx_ATA_HOSTSTAT_RERR 0x02000000UL /* Read Error */
++#define MPC52xx_ATA_HOSTSTAT_WERR 0x01000000UL /* Write Error */
++
++#define MPC52xx_ATA_FIFOSTAT_EMPTY 0x01 /* FIFO Empty */
++
++#define MPC52xx_ATA_DMAMODE_WRITE 0x01 /* Write DMA */
++#define MPC52xx_ATA_DMAMODE_READ 0x02 /* Read DMA */
++#define MPC52xx_ATA_DMAMODE_UDMA 0x04 /* UDMA enabled */
++#define MPC52xx_ATA_DMAMODE_IE 0x08 /* Enable drive interrupt to CPU in DMA mode */
++#define MPC52xx_ATA_DMAMODE_FE 0x10 /* FIFO Flush enable in Rx mode */
++#define MPC52xx_ATA_DMAMODE_FR 0x20 /* FIFO Reset */
++#define MPC52xx_ATA_DMAMODE_HUT 0x40 /* Host UDMA burst terminate */
++
++
++/* Structure of the hardware registers */
++struct mpc52xx_ata {
++
++ /* Host interface registers */
++ u32 config; /* ATA + 0x00 Host configuration */
++ u32 host_status; /* ATA + 0x04 Host controller status */
++ u32 pio1; /* ATA + 0x08 PIO Timing 1 */
++ u32 pio2; /* ATA + 0x0c PIO Timing 2 */
++ u32 mdma1; /* ATA + 0x10 MDMA Timing 1 */
++ u32 mdma2; /* ATA + 0x14 MDMA Timing 2 */
++ u32 udma1; /* ATA + 0x18 UDMA Timing 1 */
++ u32 udma2; /* ATA + 0x1c UDMA Timing 2 */
++ u32 udma3; /* ATA + 0x20 UDMA Timing 3 */
++ u32 udma4; /* ATA + 0x24 UDMA Timing 4 */
++ u32 udma5; /* ATA + 0x28 UDMA Timing 5 */
++ u32 share_cnt; /* ATA + 0x2c ATA share counter */
++ u32 reserved0[3];
++
++ /* FIFO registers */
++ u32 fifo_data; /* ATA + 0x3c */
++ u8 fifo_status_frame; /* ATA + 0x40 */
++ u8 fifo_status; /* ATA + 0x41 */
++ u16 reserved7[1];
++ u8 fifo_control; /* ATA + 0x44 */
++ u8 reserved8[5];
++ u16 fifo_alarm; /* ATA + 0x4a */
++ u16 reserved9;
++ u16 fifo_rdp; /* ATA + 0x4e */
++ u16 reserved10;
++ u16 fifo_wrp; /* ATA + 0x52 */
++ u16 reserved11;
++ u16 fifo_lfrdp; /* ATA + 0x56 */
++ u16 reserved12;
++ u16 fifo_lfwrp; /* ATA + 0x5a */
++
++ /* Drive TaskFile registers */
++ u8 tf_control; /* ATA + 0x5c TASKFILE Control/Alt Status */
++ u8 reserved13[3];
++ u16 tf_data; /* ATA + 0x60 TASKFILE Data */
++ u16 reserved14;
++ u8 tf_features; /* ATA + 0x64 TASKFILE Features/Error */
++ u8 reserved15[3];
++ u8 tf_sec_count; /* ATA + 0x68 TASKFILE Sector Count */
++ u8 reserved16[3];
++ u8 tf_sec_num; /* ATA + 0x6c TASKFILE Sector Number */
++ u8 reserved17[3];
++ u8 tf_cyl_low; /* ATA + 0x70 TASKFILE Cylinder Low */
++ u8 reserved18[3];
++ u8 tf_cyl_high; /* ATA + 0x74 TASKFILE Cylinder High */
++ u8 reserved19[3];
++ u8 tf_dev_head; /* ATA + 0x78 TASKFILE Device/Head */
++ u8 reserved20[3];
++ u8 tf_command; /* ATA + 0x7c TASKFILE Command/Status */
++ u8 dma_mode; /* ATA + 0x7d ATA Host DMA Mode configuration */
++ u8 reserved21[2];
++};
++
++
++/* ======================================================================== */
++/* Aux fns */
++/* ======================================================================== */
++
++
++/* MPC52xx low level hw control */
++
++static int
++mpc52xx_ata_compute_pio_timings(struct mpc52xx_ata_priv *priv, int dev, int pio)
++{
++ struct mpc52xx_ata_timings *timing = &priv->timings[dev];
++ unsigned int ipb_period = priv->ipb_period;
++ unsigned int t0, t1, t2_8, t2_16, t2i, t4, ta;
++
++ if ((pio<0) || (pio>4))
++ return -EINVAL;
++
++ t0 = CALC_CLKCYC(ipb_period, 1000 * ataspec_t0[pio]);
++ t1 = CALC_CLKCYC(ipb_period, 1000 * ataspec_t1[pio]);
++ t2_8 = CALC_CLKCYC(ipb_period, 1000 * ataspec_t2_8[pio]);
++ t2_16 = CALC_CLKCYC(ipb_period, 1000 * ataspec_t2_16[pio]);
++ t2i = CALC_CLKCYC(ipb_period, 1000 * ataspec_t2i[pio]);
++ t4 = CALC_CLKCYC(ipb_period, 1000 * ataspec_t4[pio]);
++ ta = CALC_CLKCYC(ipb_period, 1000 * ataspec_ta[pio]);
++
++ timing->pio1 = (t0 << 24) | (t2_8 << 16) | (t2_16 << 8) | (t2i);
++ timing->pio2 = (t4 << 24) | (t1 << 16) | (ta << 8);
++
++ return 0;
++}
++
++static void
++mpc52xx_ata_apply_timings(struct mpc52xx_ata_priv *priv, int device)
++{
++ struct mpc52xx_ata __iomem *regs = priv->ata_regs;
++ struct mpc52xx_ata_timings *timing = &priv->timings[device];
++
++ out_be32(&regs->pio1, timing->pio1);
++ out_be32(&regs->pio2, timing->pio2);
++ out_be32(&regs->mdma1, 0);
++ out_be32(&regs->mdma2, 0);
++ out_be32(&regs->udma1, 0);
++ out_be32(&regs->udma2, 0);
++ out_be32(&regs->udma3, 0);
++ out_be32(&regs->udma4, 0);
++ out_be32(&regs->udma5, 0);
++
++ priv->csel = device;
++}
++
++static int
++mpc52xx_ata_hw_init(struct mpc52xx_ata_priv *priv)
++{
++ struct mpc52xx_ata __iomem *regs = priv->ata_regs;
++ int tslot;
++
++ /* Clear share_cnt (all sample code do this ...) */
++ out_be32(&regs->share_cnt, 0);
++
++ /* Configure and reset host */
++ out_be32(&regs->config,
++ MPC52xx_ATA_HOSTCONF_IE |
++ MPC52xx_ATA_HOSTCONF_IORDY |
++ MPC52xx_ATA_HOSTCONF_SMR |
++ MPC52xx_ATA_HOSTCONF_FR);
++
++ udelay(10);
++
++ out_be32(&regs->config,
++ MPC52xx_ATA_HOSTCONF_IE |
++ MPC52xx_ATA_HOSTCONF_IORDY);
++
++ /* Set the time slot to 1us */
++ tslot = CALC_CLKCYC(priv->ipb_period, 1000000);
++ out_be32(&regs->share_cnt, tslot << 16 );
++
++ /* Init timings to PIO0 */
++ memset(priv->timings, 0x00, 2*sizeof(struct mpc52xx_ata_timings));
++
++ mpc52xx_ata_compute_pio_timings(priv, 0, 0);
++ mpc52xx_ata_compute_pio_timings(priv, 1, 0);
++
++ mpc52xx_ata_apply_timings(priv, 0);
++
++ return 0;
++}
++
++
++/* ======================================================================== */
++/* libata driver */
++/* ======================================================================== */
++
++static void
++mpc52xx_ata_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct mpc52xx_ata_priv *priv = ap->host->private_data;
++ int pio, rv;
++
++ pio = adev->pio_mode - XFER_PIO_0;
++
++ rv = mpc52xx_ata_compute_pio_timings(priv, adev->devno, pio);
++
++ if (rv) {
++ printk(KERN_ERR DRV_NAME
++ ": Trying to select invalid PIO mode %d\n", pio);
++ return;
++ }
++
++ mpc52xx_ata_apply_timings(priv, adev->devno);
++}
++static void
++mpc52xx_ata_dev_select(struct ata_port *ap, unsigned int device)
++{
++ struct mpc52xx_ata_priv *priv = ap->host->private_data;
++
++ if (device != priv->csel)
++ mpc52xx_ata_apply_timings(priv, device);
++
++ ata_std_dev_select(ap,device);
++}
++
++static void
++mpc52xx_ata_error_handler(struct ata_port *ap)
++{
++ ata_bmdma_drive_eh(ap, ata_std_prereset, ata_std_softreset, NULL,
++ ata_std_postreset);
++}
++
++
++
++static struct scsi_host_template mpc52xx_ata_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++};
++
++static struct ata_port_operations mpc52xx_ata_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = mpc52xx_ata_set_piomode,
++ .dev_select = mpc52xx_ata_dev_select,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .freeze = ata_bmdma_freeze,
++ .thaw = ata_bmdma_thaw,
++ .error_handler = mpc52xx_ata_error_handler,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_mmio_data_xfer,
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++static struct ata_probe_ent mpc52xx_ata_probe_ent = {
++ .port_ops = &mpc52xx_ata_port_ops,
++ .sht = &mpc52xx_ata_sht,
++ .n_ports = 1,
++ .pio_mask = 0x1f, /* Up to PIO4 */
++ .mwdma_mask = 0x00, /* No MWDMA */
++ .udma_mask = 0x00, /* No UDMA */
++ .port_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_MMIO,
++ .irq_flags = 0,
++};
++
++static int __devinit
++mpc52xx_ata_init_one(struct device *dev, struct mpc52xx_ata_priv *priv)
++{
++ struct ata_probe_ent *ae = &mpc52xx_ata_probe_ent;
++ struct ata_ioports *aio = &ae->port[0];
++ int rv;
++
++ INIT_LIST_HEAD(&ae->node);
++ ae->dev = dev;
++ ae->irq = priv->ata_irq;
++
++ aio->cmd_addr = 0; /* Don't have a classic reg block */
++ aio->altstatus_addr = (unsigned long)&priv->ata_regs->tf_control;
++ aio->ctl_addr = (unsigned long)&priv->ata_regs->tf_control;
++ aio->data_addr = (unsigned long)&priv->ata_regs->tf_data;
++ aio->error_addr = (unsigned long)&priv->ata_regs->tf_features;
++ aio->feature_addr = (unsigned long)&priv->ata_regs->tf_features;
++ aio->nsect_addr = (unsigned long)&priv->ata_regs->tf_sec_count;
++ aio->lbal_addr = (unsigned long)&priv->ata_regs->tf_sec_num;
++ aio->lbam_addr = (unsigned long)&priv->ata_regs->tf_cyl_low;
++ aio->lbah_addr = (unsigned long)&priv->ata_regs->tf_cyl_high;
++ aio->device_addr = (unsigned long)&priv->ata_regs->tf_dev_head;
++ aio->status_addr = (unsigned long)&priv->ata_regs->tf_command;
++ aio->command_addr = (unsigned long)&priv->ata_regs->tf_command;
++
++ ae->private_data = priv;
++
++ rv = ata_device_add(ae);
++
++ return rv ? 0 : -EINVAL;
++}
++
++static struct mpc52xx_ata_priv *
++mpc52xx_ata_remove_one(struct device *dev)
++{
++ struct ata_host *host = dev_get_drvdata(dev);
++ struct mpc52xx_ata_priv *priv = host->private_data;
++
++ ata_host_remove(host);
++
++ return priv;
++}
++
++
++/* ======================================================================== */
++/* OF Platform driver */
++/* ======================================================================== */
++
++static int __devinit
++mpc52xx_ata_probe(struct of_device *op, const struct of_device_id *match)
++{
++ unsigned int ipb_freq;
++ struct resource res_mem;
++ int ata_irq = NO_IRQ;
++ struct mpc52xx_ata __iomem *ata_regs = NULL;
++ struct mpc52xx_ata_priv *priv = NULL;
++ int rv;
++
++ /* Get ipb frequency */
++ ipb_freq = mpc52xx_find_ipb_freq(op->node);
++ if (!ipb_freq) {
++ printk(KERN_ERR DRV_NAME ": "
++ "Unable to find IPB Bus frequency\n" );
++ return -ENODEV;
++ }
++
++ /* Get IRQ and register */
++ rv = of_address_to_resource(op->node, 0, &res_mem);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": "
++ "Error while parsing device node resource\n" );
++ return rv;
++ }
++
++ ata_irq = irq_of_parse_and_map(op->node, 0);
++ if (ata_irq == NO_IRQ) {
++ printk(KERN_ERR DRV_NAME ": "
++ "Error while mapping the irq\n");
++ return -EINVAL;
++ }
++
++ /* Request mem region */
++ if (!request_mem_region(res_mem.start,
++ sizeof(struct mpc52xx_ata), DRV_NAME)) {
++ printk(KERN_ERR DRV_NAME ": "
++ "Error while requesting mem region\n");
++ irq_dispose_mapping(ata_irq);
++ return -EBUSY;
++ }
++
++ /* Remap registers */
++ ata_regs = ioremap(res_mem.start, sizeof(struct mpc52xx_ata));
++ if (!ata_regs) {
++ printk(KERN_ERR DRV_NAME ": "
++ "Error while mapping register set\n");
++ rv = -ENOMEM;
++ goto err;
++ }
++
++ /* Prepare our private structure */
++ priv = kmalloc(sizeof(struct mpc52xx_ata_priv), GFP_ATOMIC);
++ if (!priv) {
++ printk(KERN_ERR DRV_NAME ": "
++ "Error while allocating private structure\n");
++ rv = -ENOMEM;
++ goto err;
++ }
++
++ priv->ipb_period = 1000000000 / (ipb_freq / 1000);
++ priv->ata_regs = ata_regs;
++ priv->ata_irq = ata_irq;
++ priv->csel = -1;
++
++ /* Init the hw */
++ rv = mpc52xx_ata_hw_init(priv);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": Error during HW init\n");
++ goto err;
++ }
++
++ /* Register ourselves to libata */
++ rv = mpc52xx_ata_init_one(&op->dev, priv);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": "
++ "Error while registering to ATA layer\n");
++ return rv;
++ }
++
++ /* Done */
++ return 0;
++
++ /* Error path */
++err:
++ kfree(priv);
++
++ if (ata_regs)
++ iounmap(ata_regs);
++
++ release_mem_region(res_mem.start, sizeof(struct mpc52xx_ata));
++
++ irq_dispose_mapping(ata_irq);
++
++ return rv;
++}
++
++static int
++mpc52xx_ata_remove(struct of_device *op)
++{
++ struct mpc52xx_ata_priv *priv;
++ struct resource res_mem;
++ int rv;
++
++ /* Unregister */
++ priv = mpc52xx_ata_remove_one(&op->dev);
++
++ /* Free everything */
++ iounmap(priv->ata_regs);
++
++ rv = of_address_to_resource(op->node, 0, &res_mem);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": "
++ "Error while parsing device node resource\n");
++ printk(KERN_ERR DRV_NAME ": "
++ "Zone may not be properly released\n");
++ } else
++ release_mem_region(res_mem.start, sizeof(struct mpc52xx_ata));
++
++ irq_dispose_mapping(priv->ata_irq);
++
++ kfree(priv);
++
++ return 0;
++}
++
++
++#ifdef CONFIG_PM
++
++static int
++mpc52xx_ata_suspend(struct of_device *op, pm_message_t state)
++{
++ return 0; /* FIXME : What to do here ? */
++}
++
++static int
++mpc52xx_ata_resume(struct of_device *op)
++{
++ return 0; /* FIXME : What to do here ? */
++}
++
++#endif
++
++
++static struct of_device_id mpc52xx_ata_of_match[] = {
++ {
++ .compatible = "mpc5200-ata",
++ },
++ {
++ .compatible = "mpc52xx-ata",
++ },
++ {},
++};
++
++
++static struct of_platform_driver mpc52xx_ata_of_platform_driver = {
++ .owner = THIS_MODULE,
++ .name = DRV_NAME,
++ .match_table = mpc52xx_ata_of_match,
++ .probe = mpc52xx_ata_probe,
++ .remove = mpc52xx_ata_remove,
++#ifdef CONFIG_PM
++ .suspend = mpc52xx_ata_suspend,
++ .resume = mpc52xx_ata_resume,
++#endif
++ .driver = {
++ .name = DRV_NAME,
++ .owner = THIS_MODULE,
++ },
++};
++
++
++/* ======================================================================== */
++/* Module */
++/* ======================================================================== */
++
++static int __init
++mpc52xx_ata_init(void)
++{
++ printk(KERN_INFO "ata: MPC52xx IDE/ATA libata driver\n");
++ return of_register_platform_driver(&mpc52xx_ata_of_platform_driver);
++}
++
++static void __exit
++mpc52xx_ata_exit(void)
++{
++ of_unregister_platform_driver(&mpc52xx_ata_of_platform_driver);
++}
++
++module_init(mpc52xx_ata_init);
++module_exit(mpc52xx_ata_exit);
++
++MODULE_AUTHOR("Sylvain Munaut <tnt@246tNt.com>");
++MODULE_DESCRIPTION("Freescale MPC52xx IDE/ATA libata driver");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(of, mpc52xx_ata_of_match);
++MODULE_VERSION(DRV_VERSION);
++
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0011-ohci-Whitespace-and-typo-fix-in-ohci-ppc-of.c.txt b/packages/linux/linux-efika-2.6.20/0011-ohci-Whitespace-and-typo-fix-in-ohci-ppc-of.c.txt
new file mode 100644
index 0000000000..2228fa06b3
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0011-ohci-Whitespace-and-typo-fix-in-ohci-ppc-of.c.txt
@@ -0,0 +1,38 @@
+From 947dc060772ceb8b33a35bd2ded245908fa9442f Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Sat, 23 Dec 2006 22:16:05 +0100
+Subject: [PATCH] [PATCH] ohci: Whitespace and typo fix in ohci-ppc-of.c
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ drivers/usb/host/ohci-ppc-of.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/usb/host/ohci-ppc-of.c b/drivers/usb/host/ohci-ppc-of.c
+index 84b555b..08e237c 100644
+--- a/drivers/usb/host/ohci-ppc-of.c
++++ b/drivers/usb/host/ohci-ppc-of.c
+@@ -96,9 +96,9 @@ ohci_hcd_ppc_of_probe(struct of_device *op, const struct of_device_id *match)
+ if (usb_disabled())
+ return -ENODEV;
+
+- is_bigendian =
++ is_bigendian =
+ device_is_compatible(dn, "ohci-bigendian") ||
+- device_is_compatible(dn, "ohci-be");;
++ device_is_compatible(dn, "ohci-be");
+
+ dev_dbg(&op->dev, "initializing PPC-OF USB Controller\n");
+
+@@ -206,7 +206,7 @@ static struct of_device_id ohci_hcd_ppc_of_match[] = {
+ #endif
+ {},
+ };
+-MODULE_DEVICE_TABLE(of, ohci_hcd_ppc_of_match);
++MODULE_DEVICE_TABLE(of, ohci_hcd_ppc_of_match);
+
+ #if !defined(CONFIG_USB_OHCI_HCD_PPC_OF_BE) && \
+ !defined(CONFIG_USB_OHCI_HCD_PPC_OF_LE)
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0012-ata-Fix-pata_mpc52xx.c-compatible-list.txt b/packages/linux/linux-efika-2.6.20/0012-ata-Fix-pata_mpc52xx.c-compatible-list.txt
new file mode 100644
index 0000000000..33f2ffcad0
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0012-ata-Fix-pata_mpc52xx.c-compatible-list.txt
@@ -0,0 +1,31 @@
+From 20e872b5fed46ba15ed6f2c29cc2adf98657c9a4 Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Sat, 23 Dec 2006 22:20:06 +0100
+Subject: [PATCH] [PATCH] ata: Fix pata_mpc52xx.c 'compatible' list
+
+The list contained an entry to support a non-standard device-tree,
+this is now handled by fixups in early boot.
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ drivers/ata/pata_mpc52xx.c | 4 +---
+ 1 files changed, 1 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/ata/pata_mpc52xx.c b/drivers/ata/pata_mpc52xx.c
+index 8b7019a..ff40016 100644
+--- a/drivers/ata/pata_mpc52xx.c
++++ b/drivers/ata/pata_mpc52xx.c
+@@ -509,9 +509,7 @@ mpc52xx_ata_resume(struct of_device *op)
+
+ static struct of_device_id mpc52xx_ata_of_match[] = {
+ {
+- .compatible = "mpc5200-ata",
+- },
+- {
++ .type = "ata",
+ .compatible = "mpc52xx-ata",
+ },
+ {},
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0013-powerpc-serial-Fix-mpc52xx_uart.c-compatible-list.txt b/packages/linux/linux-efika-2.6.20/0013-powerpc-serial-Fix-mpc52xx_uart.c-compatible-list.txt
new file mode 100644
index 0000000000..d0c5a4647a
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0013-powerpc-serial-Fix-mpc52xx_uart.c-compatible-list.txt
@@ -0,0 +1,28 @@
+From f3736d1a7f74d7dec888a8a8d8c593ca08a31000 Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Sat, 23 Dec 2006 22:21:43 +0100
+Subject: [PATCH] [PATCH] powerpc/serial: Fix mpc52xx_uart.c 'compatible' list
+
+The list contained an entry to support a non-standard device-tree,
+this is now handled by fixups in early boot.
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ drivers/serial/mpc52xx_uart.c | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c
+index eef3b02..c20cd81 100644
+--- a/drivers/serial/mpc52xx_uart.c
++++ b/drivers/serial/mpc52xx_uart.c
+@@ -128,7 +128,6 @@ static irqreturn_t mpc52xx_uart_int(int irq,void *dev_id);
+ #if defined(CONFIG_PPC_MERGE)
+ static struct of_device_id mpc52xx_uart_of_match[] = {
+ { .type = "serial", .compatible = "mpc52xx-psc-uart", },
+- { .type = "serial", .compatible = "mpc5200-psc", }, /* Efika only! */
+ {},
+ };
+ #endif
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0014-powerpc-Small-cleanup-of-EFIKA-platform.txt b/packages/linux/linux-efika-2.6.20/0014-powerpc-Small-cleanup-of-EFIKA-platform.txt
new file mode 100644
index 0000000000..a373e9703d
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0014-powerpc-Small-cleanup-of-EFIKA-platform.txt
@@ -0,0 +1,144 @@
+From 65cd4fcc30440e903fd99973918373ee4534b70a Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Sat, 23 Dec 2006 22:39:18 +0100
+Subject: [PATCH] [PATCH] powerpc: Small cleanup of EFIKA platform
+
+This is just some cleanup to remove the efika.h header that just have
+2 lines in it and is not really necessary.
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ arch/powerpc/platforms/52xx/efika-pci.c | 23 ++++++++++++++++-------
+ arch/powerpc/platforms/52xx/efika-setup.c | 7 ++++---
+ arch/powerpc/platforms/52xx/efika.h | 19 -------------------
+ 3 files changed, 20 insertions(+), 29 deletions(-)
+
+diff --git a/arch/powerpc/platforms/52xx/efika-pci.c b/arch/powerpc/platforms/52xx/efika-pci.c
+index 62e05b2..3732dec 100644
+--- a/arch/powerpc/platforms/52xx/efika-pci.c
++++ b/arch/powerpc/platforms/52xx/efika-pci.c
+@@ -1,3 +1,13 @@
++/*
++ * Efika 5K2 PCI support thru RTAS
++ *
++ * Copyright (C) 2006 bplan GmbH
++ *
++ * This file is licensed under the terms of the GNU General Public License
++ * version 2. This program is licensed "as is" without any warranty of any
++ * kind, whether express or implied.
++ *
++ */
+
+ #include <linux/kernel.h>
+ #include <linux/pci.h>
+@@ -12,7 +22,6 @@
+ #include <asm/pci-bridge.h>
+ #include <asm/rtas.h>
+
+-#include "efika.h"
+
+ #ifdef CONFIG_PCI
+ /*
+@@ -62,7 +71,7 @@ void __init efika_pcisetup(void)
+
+ root = of_find_node_by_path("/");
+ if (root == NULL) {
+- printk(KERN_WARNING EFIKA_PLATFORM_NAME
++ printk(KERN_WARNING __FILE__
+ ": Unable to find the root node\n");
+ return;
+ }
+@@ -76,30 +85,30 @@ void __init efika_pcisetup(void)
+ of_node_put(root);
+
+ if (pcictrl == NULL) {
+- printk(KERN_WARNING EFIKA_PLATFORM_NAME
++ printk(KERN_WARNING __FILE__
+ ": Unable to find the PCI bridge node\n");
+ return;
+ }
+
+ bus_range = get_property(pcictrl, "bus-range", &len);
+ if (bus_range == NULL || len < 2 * sizeof(int)) {
+- printk(KERN_WARNING EFIKA_PLATFORM_NAME
++ printk(KERN_WARNING __FILE__
+ ": Can't get bus-range for %s\n", pcictrl->full_name);
+ return;
+ }
+
+ if (bus_range[1] == bus_range[0])
+- printk(KERN_INFO EFIKA_PLATFORM_NAME ": PCI bus %d",
++ printk(KERN_INFO __FILE__ ": PCI bus %d",
+ bus_range[0]);
+ else
+- printk(KERN_INFO EFIKA_PLATFORM_NAME ": PCI buses %d..%d",
++ printk(KERN_INFO __FILE__ ": PCI buses %d..%d",
+ bus_range[0], bus_range[1]);
+ printk(" controlled by %s\n", pcictrl->full_name);
+ printk("\n");
+
+ hose = pcibios_alloc_controller();
+ if (!hose) {
+- printk(KERN_WARNING EFIKA_PLATFORM_NAME
++ printk(KERN_WARNING __FILE__
+ ": Can't allocate PCI controller structure for %s\n",
+ pcictrl->full_name);
+ return;
+diff --git a/arch/powerpc/platforms/52xx/efika-setup.c b/arch/powerpc/platforms/52xx/efika-setup.c
+index d61ce84..17bf73a 100644
+--- a/arch/powerpc/platforms/52xx/efika-setup.c
++++ b/arch/powerpc/platforms/52xx/efika-setup.c
+@@ -1,5 +1,4 @@
+ /*
+- *
+ * Efika 5K2 platform setup
+ * Some code really inspired from the lite5200b platform.
+ *
+@@ -32,7 +31,9 @@
+ #include <asm/of_platform.h>
+ #include <asm/mpc52xx.h>
+
+-#include "efika.h"
++
++extern void __init efika_pcisetup(void);
++
+
+ static void efika_show_cpuinfo(struct seq_file *m)
+ {
+@@ -103,7 +104,7 @@ static int __init efika_probe(void)
+
+ define_machine(efika)
+ {
+- .name = EFIKA_PLATFORM_NAME,
++ .name = "Efika",
+ .probe = efika_probe,
+ .setup_arch = efika_setup_arch,
+ .init = mpc52xx_declare_of_platform_devices,
+diff --git a/arch/powerpc/platforms/52xx/efika.h b/arch/powerpc/platforms/52xx/efika.h
+deleted file mode 100644
+index 2f060fd..0000000
+--- a/arch/powerpc/platforms/52xx/efika.h
++++ /dev/null
+@@ -1,19 +0,0 @@
+-/*
+- * Efika 5K2 platform setup - Header file
+- *
+- * Copyright (C) 2006 bplan GmbH
+- *
+- * This file is licensed under the terms of the GNU General Public License
+- * version 2. This program is licensed "as is" without any warranty of any
+- * kind, whether express or implied.
+- *
+- */
+-
+-#ifndef __ARCH_POWERPC_EFIKA__
+-#define __ARCH_POWERPC_EFIKA__
+-
+-#define EFIKA_PLATFORM_NAME "Efika"
+-
+-extern void __init efika_pcisetup(void);
+-
+-#endif
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0015-powerpc-Add-a-unified-uevent-handler-for-bus-based-on-of_device.txt b/packages/linux/linux-efika-2.6.20/0015-powerpc-Add-a-unified-uevent-handler-for-bus-based-on-of_device.txt
new file mode 100644
index 0000000000..6de1fd28f8
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0015-powerpc-Add-a-unified-uevent-handler-for-bus-based-on-of_device.txt
@@ -0,0 +1,116 @@
+From 90dc591d4c897c7a49191888c1e4d413cc08b8b7 Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Sat, 23 Dec 2006 23:08:56 +0100
+Subject: [PATCH] [PATCH] powerpc: Add a unified uevent handler for bus based on of_device
+
+This common uevent handler allow the several bus types based on
+of_device to generate the uevent properly and avoiding
+code duplication.
+
+This handlers take a struct device as argument and can therefore
+be used as the uevent call directly if no special treatment is
+needed for the bus.
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ arch/powerpc/kernel/of_device.c | 66 +++++++++++++++++++++++++++++++++++++++
+ include/asm-powerpc/of_device.h | 3 ++
+ 2 files changed, 69 insertions(+), 0 deletions(-)
+
+diff --git a/arch/powerpc/kernel/of_device.c b/arch/powerpc/kernel/of_device.c
+index e921514..ac024ad 100644
+--- a/arch/powerpc/kernel/of_device.c
++++ b/arch/powerpc/kernel/of_device.c
+@@ -120,6 +120,71 @@ void of_device_unregister(struct of_device *ofdev)
+ }
+
+
++int of_device_uevent(struct device *dev,
++ char **envp, int num_envp, char *buffer, int buffer_size)
++{
++ struct of_device *ofdev;
++ const char *compat;
++ char *compat2;
++ char compat_buf[128]; /* need to be size of 'compatible' */
++ int i = 0, length = 0, seen = 0, cplen, sl;
++
++ if (!dev)
++ return -ENODEV;
++
++ ofdev = to_of_device(dev);
++
++ if (add_uevent_var(envp, num_envp, &i,
++ buffer, buffer_size, &length,
++ "OF_NAME=%s", ofdev->node->name))
++ return -ENOMEM;
++
++ if (add_uevent_var(envp, num_envp, &i,
++ buffer, buffer_size, &length,
++ "OF_TYPE=%s", ofdev->node->type))
++ return -ENOMEM;
++
++ /* Since the compatible field can contain pretty much anything
++ * it's not really legal to split it out with commas. We split it
++ * up using a number of environment variables instead. */
++
++ compat = get_property(ofdev->node, "compatible", &cplen);
++ compat2 = compat_buf;
++ if (compat)
++ memcpy(compat2, compat, cplen);
++ while (compat && *compat && cplen > 0) {
++ if (add_uevent_var(envp, num_envp, &i,
++ buffer, buffer_size, &length,
++ "OF_COMPATIBLE_%d=%s", seen, compat))
++ return -ENOMEM;
++
++ sl = strlen (compat) + 1;
++ compat += sl;
++ compat2 += sl;
++ cplen -= sl;
++ seen++;
++ compat2[-1] = 'C';
++ }
++ compat2[seen?-1:0] = 0;
++
++ if (add_uevent_var(envp, num_envp, &i,
++ buffer, buffer_size, &length,
++ "OF_COMPATIBLE_N=%d", seen))
++ return -ENOMEM;
++
++ if (add_uevent_var(envp, num_envp, &i,
++ buffer, buffer_size, &length,
++ "MODALIAS=of:N%sT%sC%s",
++ ofdev->node->name, ofdev->node->type,
++ compat_buf))
++ return -ENOMEM;
++
++ envp[i] = NULL;
++
++ return 0;
++}
++
++
+ EXPORT_SYMBOL(of_match_node);
+ EXPORT_SYMBOL(of_match_device);
+ EXPORT_SYMBOL(of_device_register);
+@@ -127,3 +192,4 @@ EXPORT_SYMBOL(of_device_unregister);
+ EXPORT_SYMBOL(of_dev_get);
+ EXPORT_SYMBOL(of_dev_put);
+ EXPORT_SYMBOL(of_release_dev);
++EXPORT_SYMBOL(of_device_uevent);
+diff --git a/include/asm-powerpc/of_device.h b/include/asm-powerpc/of_device.h
+index a889b20..4f1aabe 100644
+--- a/include/asm-powerpc/of_device.h
++++ b/include/asm-powerpc/of_device.h
+@@ -32,5 +32,8 @@ extern int of_device_register(struct of_device *ofdev);
+ extern void of_device_unregister(struct of_device *ofdev);
+ extern void of_release_dev(struct device *dev);
+
++extern int of_device_uevent(struct device *dev,
++ char **envp, int num_envp, char *buffer, int buffer_size);
++
+ #endif /* __KERNEL__ */
+ #endif /* _ASM_POWERPC_OF_DEVICE_H */
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0016-macintosh-Use-the-new-of_device-common-uevent-handler.txt b/packages/linux/linux-efika-2.6.20/0016-macintosh-Use-the-new-of_device-common-uevent-handler.txt
new file mode 100644
index 0000000000..93859bdebd
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0016-macintosh-Use-the-new-of_device-common-uevent-handler.txt
@@ -0,0 +1,130 @@
+From 2507b27c0841752a6f419439896fcb089fa4a5ba Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Sat, 23 Dec 2006 23:13:56 +0100
+Subject: [PATCH] [PATCH] macintosh: Use the new of_device common uevent handler
+
+The generation of the uevent is now common to all bus using
+of_device.
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ drivers/macintosh/macio_asic.c | 98 +---------------------------------------
+ 1 files changed, 1 insertions(+), 97 deletions(-)
+
+diff --git a/drivers/macintosh/macio_asic.c b/drivers/macintosh/macio_asic.c
+index d562160..e851266 100644
+--- a/drivers/macintosh/macio_asic.c
++++ b/drivers/macintosh/macio_asic.c
+@@ -134,108 +134,12 @@ static int macio_device_resume(struct device * dev)
+ return 0;
+ }
+
+-static int macio_uevent(struct device *dev, char **envp, int num_envp,
+- char *buffer, int buffer_size)
+-{
+- struct macio_dev * macio_dev;
+- struct of_device * of;
+- char *scratch;
+- const char *compat, *compat2;
+-
+- int i = 0;
+- int length, cplen, cplen2, seen = 0;
+-
+- if (!dev)
+- return -ENODEV;
+-
+- macio_dev = to_macio_device(dev);
+- if (!macio_dev)
+- return -ENODEV;
+-
+- of = &macio_dev->ofdev;
+-
+- /* stuff we want to pass to /sbin/hotplug */
+- envp[i++] = scratch = buffer;
+- length = scnprintf (scratch, buffer_size, "OF_NAME=%s", of->node->name);
+- ++length;
+- buffer_size -= length;
+- if ((buffer_size <= 0) || (i >= num_envp))
+- return -ENOMEM;
+- scratch += length;
+-
+- envp[i++] = scratch;
+- length = scnprintf (scratch, buffer_size, "OF_TYPE=%s", of->node->type);
+- ++length;
+- buffer_size -= length;
+- if ((buffer_size <= 0) || (i >= num_envp))
+- return -ENOMEM;
+- scratch += length;
+-
+- /* Since the compatible field can contain pretty much anything
+- * it's not really legal to split it out with commas. We split it
+- * up using a number of environment variables instead. */
+-
+- compat = get_property(of->node, "compatible", &cplen);
+- compat2 = compat;
+- cplen2= cplen;
+- while (compat && cplen > 0) {
+- envp[i++] = scratch;
+- length = scnprintf (scratch, buffer_size,
+- "OF_COMPATIBLE_%d=%s", seen, compat);
+- ++length;
+- buffer_size -= length;
+- if ((buffer_size <= 0) || (i >= num_envp))
+- return -ENOMEM;
+- scratch += length;
+- length = strlen (compat) + 1;
+- compat += length;
+- cplen -= length;
+- seen++;
+- }
+-
+- envp[i++] = scratch;
+- length = scnprintf (scratch, buffer_size, "OF_COMPATIBLE_N=%d", seen);
+- ++length;
+- buffer_size -= length;
+- if ((buffer_size <= 0) || (i >= num_envp))
+- return -ENOMEM;
+- scratch += length;
+-
+- envp[i++] = scratch;
+- length = scnprintf (scratch, buffer_size, "MODALIAS=of:N%sT%s",
+- of->node->name, of->node->type);
+- /* overwrite '\0' */
+- buffer_size -= length;
+- if ((buffer_size <= 0) || (i >= num_envp))
+- return -ENOMEM;
+- scratch += length;
+-
+- if (!compat2) {
+- compat2 = "";
+- cplen2 = 1;
+- }
+- while (cplen2 > 0) {
+- length = snprintf (scratch, buffer_size, "C%s", compat2);
+- buffer_size -= length;
+- if (buffer_size <= 0)
+- return -ENOMEM;
+- scratch += length;
+- length = strlen (compat2) + 1;
+- compat2 += length;
+- cplen2 -= length;
+- }
+-
+- envp[i] = NULL;
+-
+- return 0;
+-}
+-
+ extern struct device_attribute macio_dev_attrs[];
+
+ struct bus_type macio_bus_type = {
+ .name = "macio",
+ .match = macio_bus_match,
+- .uevent = macio_uevent,
++ .uevent = of_device_uevent,
+ .probe = macio_device_probe,
+ .remove = macio_device_remove,
+ .shutdown = macio_device_shutdown,
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0017-powerpc-Add-uevent-handler-for-of_platform_bus.txt b/packages/linux/linux-efika-2.6.20/0017-powerpc-Add-uevent-handler-for-of_platform_bus.txt
new file mode 100644
index 0000000000..303cf6ba01
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0017-powerpc-Add-uevent-handler-for-of_platform_bus.txt
@@ -0,0 +1,29 @@
+From 846d6cd8584eee7517543be073c8b3fe9fefd065 Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Sat, 23 Dec 2006 23:16:07 +0100
+Subject: [PATCH] [PATCH] powerpc: Add uevent handler for of_platform_bus
+
+Adding this handler allow userspace to properly handle the module
+autoloading. The generation of the uevent itself is now common to
+all bus using of_device, so not much code here.
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ arch/powerpc/kernel/of_platform.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/arch/powerpc/kernel/of_platform.c b/arch/powerpc/kernel/of_platform.c
+index b734517..da78e44 100644
+--- a/arch/powerpc/kernel/of_platform.c
++++ b/arch/powerpc/kernel/of_platform.c
+@@ -133,6 +133,7 @@ static int of_platform_device_resume(struct device * dev)
+ struct bus_type of_platform_bus_type = {
+ .name = "of_platform",
+ .match = of_platform_bus_match,
++ .uevent = of_device_uevent,
+ .probe = of_platform_device_probe,
+ .remove = of_platform_device_remove,
+ .suspend = of_platform_device_suspend,
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0018-powerpc-Add-uevent-handler-for-ibmebus.txt b/packages/linux/linux-efika-2.6.20/0018-powerpc-Add-uevent-handler-for-ibmebus.txt
new file mode 100644
index 0000000000..39392a6060
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0018-powerpc-Add-uevent-handler-for-ibmebus.txt
@@ -0,0 +1,50 @@
+From ddc4a7296f3abd28a902f38ae915224d6d93edca Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Sat, 23 Dec 2006 23:20:58 +0100
+Subject: [PATCH] [PATCH] powerpc: Add uevent handler for ibmebus
+
+Adding this handler allow userspace to properly handle the module
+autoloading. The generation of the uevent itself is now common to
+all bus using of_device, so not much code here.
+
+But we still need a small wrapper to filter out the dummy root
+device node used by this bus.
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ arch/powerpc/kernel/ibmebus.c | 16 ++++++++++++++++
+ 1 files changed, 16 insertions(+), 0 deletions(-)
+
+diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c
+index 82bd2f1..2e8d9fd 100644
+--- a/arch/powerpc/kernel/ibmebus.c
++++ b/arch/powerpc/kernel/ibmebus.c
+@@ -361,9 +361,25 @@ static int ibmebus_bus_match(struct device *dev, struct device_driver *drv)
+ return 0;
+ }
+
++static int ibmebus_bus_uevent(struct device *dev,
++ char **envp, int num_envp, char *buffer, int buffer_size)
++{
++ struct ibmebus_dev *ebus_dev;
++
++ if (!dev)
++ return -ENODEV;
++
++ ebus_dev = to_ibmebus_dev(dev);
++ if (ebus_dev==ibmebus_bus_device) /* filter dummy root device */
++ return -ENODEV;
++
++ return of_device_uevent(dev, envp, num_envp, buffer, buffer_size);
++}
++
+ struct bus_type ibmebus_bus_type = {
+ .name = "ibmebus",
+ .match = ibmebus_bus_match,
++ .uevent = ibmebus_bus_uevent,
+ };
+ EXPORT_SYMBOL(ibmebus_bus_type);
+
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0019-MPC5200-Bestcomm-platform-driver.txt b/packages/linux/linux-efika-2.6.20/0019-MPC5200-Bestcomm-platform-driver.txt
new file mode 100644
index 0000000000..74bfbf9b39
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0019-MPC5200-Bestcomm-platform-driver.txt
@@ -0,0 +1,1439 @@
+From d9e27abf78b3bd714eb9c37c529d0bff7c5403d9 Mon Sep 17 00:00:00 2001
+From: Andrey Volkov <avolkov@varma-el.com>
+Date: Fri, 18 Aug 2006 10:01:38 -0600
+Subject: [PATCH] [PATCH 01/02] MPC5200 Bestcomm platform driver
+
+This is first part of "platformizied" bestcomm/fec drivers.
+
+Signed-Off-By: Andrey Volkov <avolkov at varma-el.com>
+---
+ arch/ppc/Kconfig | 5 +
+ arch/ppc/syslib/Makefile | 1 +
+ arch/ppc/syslib/bestcomm/Makefile | 2 +
+ arch/ppc/syslib/bestcomm/bestcomm.c | 408 +++++++++++++++++++++++
+ arch/ppc/syslib/bestcomm/bestcomm.h | 473 +++++++++++++++++++++++++++
+ arch/ppc/syslib/bestcomm/fec.c | 174 ++++++++++
+ arch/ppc/syslib/bestcomm/fec.h | 71 ++++
+ arch/ppc/syslib/bestcomm/sdma_fec_rx_task.c | 71 ++++
+ arch/ppc/syslib/bestcomm/sdma_fec_tx_task.c | 84 +++++
+ arch/ppc/syslib/mpc52xx_devices.c | 22 ++
+ arch/ppc/syslib/mpc52xx_sys.c | 4 +-
+ include/asm-ppc/mpc52xx.h | 2 +
+ 12 files changed, 1315 insertions(+), 2 deletions(-)
+
+diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig
+index 8eb82ef..d8a561e 100644
+--- a/arch/ppc/Kconfig
++++ b/arch/ppc/Kconfig
+@@ -775,6 +775,11 @@ config EMBEDDEDBOOT
+ config PPC_MPC52xx
+ bool
+
++config PPC_BESTCOMM
++ bool
++ depends on PPC_MPC52xx
++ default y
++
+ config 8260
+ bool "CPM2 Support" if WILLOW
+ depends on 6xx
+diff --git a/arch/ppc/syslib/Makefile b/arch/ppc/syslib/Makefile
+index dca23f2..ab015df 100644
+--- a/arch/ppc/syslib/Makefile
++++ b/arch/ppc/syslib/Makefile
+@@ -106,3 +106,4 @@ obj-$(CONFIG_PCI) += mpc52xx_pci.o
+ endif
+
+ obj-$(CONFIG_PPC_I8259) += i8259.o
++obj-$(CONFIG_PPC_BESTCOMM) += bestcomm/
+diff --git a/arch/ppc/syslib/bestcomm/Makefile b/arch/ppc/syslib/bestcomm/Makefile
+new file mode 100644
+index 0000000..02cc99a
+--- /dev/null
++++ b/arch/ppc/syslib/bestcomm/Makefile
+@@ -0,0 +1,2 @@
++obj-$(CONFIG_PPC_BESTCOMM) += bestcomm.o
++obj-$(CONFIG_FEC_MPC52xx) += sdma_fec_rx_task.o sdma_fec_tx_task.o fec.o
+diff --git a/arch/ppc/syslib/bestcomm/bestcomm.c b/arch/ppc/syslib/bestcomm/bestcomm.c
+new file mode 100644
+index 0000000..ef45e02
+--- /dev/null
++++ b/arch/ppc/syslib/bestcomm/bestcomm.c
+@@ -0,0 +1,408 @@
++/*
++ * arch/ppc/syslib/bestcomm/bestcomm.c
++ *
++ * Driver for MPC52xx processor BestComm peripheral controller
++ *
++ * Author: Dale Farnsworth <dfarnsworth@mvista.com>
++ *
++ * 2003-2004 (c) MontaVista, Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ *
++ * HISTORY:
++ *
++ * 2005-08-14 Converted to platform driver by
++ * Andrey Volkov <avolkov@varma-el.com>, Varma Electronics Oy
++ */
++
++#include <linux/config.h>
++#include <linux/version.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/errno.h>
++#include <linux/slab.h>
++#include <linux/spinlock.h>
++#include <linux/string.h>
++#include <linux/device.h>
++
++#include <asm/bug.h>
++#include <asm/io.h>
++#include <asm/mpc52xx.h>
++
++#include "bestcomm.h"
++
++#define DRIVER_NAME "mpc52xx-sdma"
++
++struct sdma_io sdma;
++
++static spinlock_t sdma_lock = SPIN_LOCK_UNLOCKED;
++
++#ifdef CONFIG_BESTCOMM_DEBUG
++void sdma_dump(void)
++{
++ int i;
++ printk("** SDMA registers: pa = %08x, va = %08x\n", sdma.base_reg_addr, sdma.io);
++ printk("** taskBar = %08x\n", sdma.io->taskBar);
++ printk("** currentPointer = %08x\n", sdma.io->currentPointer);
++ printk("** endPointer = %08x\n", sdma.io->endPointer);
++ printk("** variablePointer = %08x\n", sdma.io->variablePointer);
++
++ printk("** IntVect1 = %08x\n", sdma.io->IntVect1);
++ printk("** IntVect2 = %08x\n", sdma.io->IntVect2);
++ printk("** PtdCntrl = %08x\n", sdma.io->PtdCntrl);
++
++ printk("** IntPend = %08x\n", sdma.io->IntPend);
++ printk("** IntMask = %08x\n", sdma.io->IntMask);
++
++ printk("** TCR dump:");
++
++ for (i=0;i<16;i++) {
++ if(i%8 == 0)
++ printk("\n** %02X:",i);
++ printk(" %04X",sdma.io->tcr[i]);
++ }
++ printk("\n** IPR dump:");
++ for (i=0;i<32;i++) {
++ if(i%16 == 0)
++ printk("\n** %02X:",i);
++ printk(" %02X",sdma.io->ipr[i]);
++ }
++ printk("\n** cReqSelect = %08x\n", sdma.io->cReqSelect);
++ printk("** task_size0 = %08x\n", sdma.io->task_size0);
++ printk("** task_size1 = %08x\n", sdma.io->task_size1);
++ printk("** MDEDebug = %08x\n", sdma.io->MDEDebug);
++ printk("** ADSDebug = %08x\n", sdma.io->ADSDebug);
++ printk("** Value1 = %08x\n", sdma.io->Value1);
++ printk("** Value2 = %08x\n", sdma.io->Value2);
++ printk("** Control = %08x\n", sdma.io->Control);
++ printk("** Status = %08x\n", sdma.io->Status);
++ printk("** PTDDebug = %08x\n", sdma.io->PTDDebug);
++}
++#endif
++
++#ifdef CONFIG_BESTCOMM_DEBUG
++#define SDMA_DUMP_REGS() sdma_dump()
++#else
++#define SDMA_DUMP_REGS()
++#endif
++
++/*
++ * Use a very simple SRAM allocator.
++ * There is no mechanism for freeing space.
++ * In an attempt to minimize internal fragmentation, the SRAM is
++ * divided into two areas.
++ *
++ * Area 1 is at the beginning of SRAM
++ * and is used for allocations requiring alignments of 16 bytes or less.
++ * Successive allocations return higher addresses.
++ *
++ * Area 2 is at the end of SRAM and is used for the remaining allocations.
++ * Successive allocations return lower addresses.
++ *
++ * I've considered adding routines to support the freeing of SRAM allocations,
++ * but the SRAM is so small (16K) that fragmentation can quickly cause the
++ * SRAM to be unusable. If you can come up with a slick way to free SRAM
++ * memory without the fragmentation problem, please do so.
++ */
++
++static u8 *area1_end;
++static u8 *area2_begin;
++
++void *sdma_sram_alloc(int size, int alignment, u32 *dma_handle)
++{
++ u8 *a;
++
++ spin_lock(&sdma_lock);
++
++ /* alignment must be a power of 2 */
++ BUG_ON(alignment & (alignment - 1));
++
++ if (alignment < 16) {
++ a = (u8 *)(((u32)area1_end + (alignment-1)) & ~(alignment-1));
++ if (a + size <= area2_begin)
++ area1_end = a + size;
++ else
++ a = 0; /* out of memory */
++ } else {
++ a = (u8 *)(((u32)area2_begin - size) & ~(alignment - 1));
++ if (a >= area1_end)
++ area2_begin = a;
++ else
++ a = 0; /* out of memory */
++ }
++ if(a && dma_handle)
++ *dma_handle = sdma_sram_pa(a);
++ spin_unlock(&sdma_lock);
++ return (void *)a;
++}
++
++/* this will need to be updated if Freescale changes their task code FDT */
++static u32 fdt_ops[] = {
++ 0xa0045670, /* FDT[48] */
++ 0x80045670, /* FDT[49] */
++ 0x21800000, /* FDT[50] */
++ 0x21e00000, /* FDT[51] */
++ 0x21500000, /* FDT[52] */
++ 0x21400000, /* FDT[53] */
++ 0x21500000, /* FDT[54] */
++ 0x20400000, /* FDT[55] */
++ 0x20500000, /* FDT[56] */
++ 0x20800000, /* FDT[57] */
++ 0x20a00000, /* FDT[58] */
++ 0xc0170000, /* FDT[59] */
++ 0xc0145670, /* FDT[60] */
++ 0xc0345670, /* FDT[61] */
++ 0xa0076540, /* FDT[62] */
++ 0xa0000760, /* FDT[63] */
++};
++
++static int new_task_number(void)
++{
++ struct sdma_tdt *tdt;
++ int i;
++
++ spin_lock(&sdma_lock);
++
++ tdt = sdma.tdt;
++ for (i=0; i<SDMA_MAX_TASKS; i++, tdt++)
++ if (tdt->start == 0)
++ break;
++ if (i == SDMA_MAX_TASKS)
++ i = -1;
++
++ spin_unlock(&sdma_lock);
++
++ return i;
++}
++
++int sdma_load_task(u32 *task_image)
++{
++ struct sdma_task_header *head = (struct sdma_task_header *)task_image;
++ struct sdma_tdt *tdt;
++ int tasknum;
++ u32 *desc;
++ u32 *var_src, *var_dst;
++ u32 *inc_src;
++ void *start;
++
++ BUG_ON(head->magic != SDMA_TASK_MAGIC);
++
++ tasknum = new_task_number();
++ if (tasknum < 0)
++ return -ENOMEM;
++
++ desc = (u32 *)(head + 1);
++ var_src = desc + head->desc_size;
++ inc_src = var_src + head->var_size;
++
++ tdt = &sdma.tdt[tasknum];
++
++ start = sdma_sram_alloc(head->desc_size * sizeof(u32), 4, &tdt->start);
++ if (!start)
++ return -ENOMEM;
++ tdt->stop = tdt->start + (head->desc_size - 1)*sizeof(u32);
++ var_dst = sdma_sram_va(tdt->var);
++
++ memcpy(start, desc, head->desc_size * sizeof(u32));
++ memcpy(&var_dst[head->first_var], var_src, head->var_size * sizeof(u32));
++ memcpy(&var_dst[SDMA_MAX_VAR], inc_src, head->inc_size * sizeof(u32));
++
++ return tasknum;
++}
++
++void sdma_set_initiator(int task, int initiator)
++{
++ int i;
++ int num_descs;
++ u32 *desc;
++ int next_drd_has_initiator;
++
++ sdma_set_tcr_initiator(task, initiator);
++
++ desc = sdma_task_desc(task);
++ next_drd_has_initiator = 1;
++ num_descs = sdma_task_num_descs(task);
++
++ for (i=0; i<num_descs; i++, desc++) {
++ if (!sdma_desc_is_drd(*desc))
++ continue;
++ if (next_drd_has_initiator)
++ if (sdma_desc_initiator(*desc) != SDMA_INITIATOR_ALWAYS)
++ sdma_set_desc_initiator(desc, initiator);
++ next_drd_has_initiator = !sdma_drd_is_extended(*desc);
++ }
++}
++
++struct sdma *sdma_alloc(int queue_size)
++{
++ struct sdma *s = kmalloc(sizeof(*s), GFP_KERNEL);
++ void **cookie;
++
++ if (!s)
++ return NULL;
++
++ memset(s, 0, sizeof(*s));
++
++ if (queue_size) {
++ cookie = kmalloc(sizeof(*cookie) * queue_size, GFP_KERNEL);
++ if (!cookie) {
++ kfree(s);
++ return NULL;
++ }
++ s->cookie = cookie;
++ }
++
++ s->num_bd = queue_size;
++ return s;
++}
++
++void sdma_free(struct sdma *s)
++{
++ if (s->cookie)
++ kfree(s->cookie);
++ kfree(s);
++}
++
++static int __devinit mpc52xx_sdma_probe(struct device *dev)
++{
++ struct platform_device *pdev = to_platform_device(dev);
++ int task;
++ u32 *context;
++ u32 *fdt;
++ struct sdma_tdt *tdt;
++ struct resource *mem_io, *mem_sram;
++ u32 tdt_pa, var_pa, context_pa, fdt_pa;
++ int ret = -ENODEV;
++
++ mem_io = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ mem_sram = platform_get_resource(pdev, IORESOURCE_MEM, 1);
++ if (!mem_io || !mem_sram)
++ goto out;
++
++ if (!request_mem_region(mem_io->start, mem_io->end - mem_io->start + 1, DRIVER_NAME)) {
++ printk(KERN_ERR DRIVER_NAME " - resource unavailable\n");
++ goto out;
++ }
++ sdma.base_reg_addr = mem_io->start;
++
++ sdma.io = ioremap_nocache(mem_io->start, sizeof(struct mpc52xx_sdma));
++
++ if (!sdma.io ) {
++ printk(KERN_ERR DRIVER_NAME " - failed to map sdma regs\n");
++ ret = -ENOMEM;
++ goto map_io_error;
++ }
++
++ SDMA_DUMP_REGS();
++
++ sdma.sram_size = mem_sram->end - mem_sram->start + 1;
++ if (!request_mem_region(mem_sram->start, sdma.sram_size, DRIVER_NAME)) {
++ printk(KERN_ERR DRIVER_NAME " - resource unavailable\n");
++ goto req_sram_error;
++ }
++
++ sdma.base_sram_addr = mem_sram->start;
++ sdma.sram = ioremap_nocache(mem_sram->start, sdma.sram_size);
++ if (!sdma.sram ) {
++ printk(KERN_ERR DRIVER_NAME " - failed to map sdma sram\n");
++ ret = -ENOMEM;
++ goto map_sram_error;
++ }
++
++ area1_end = sdma.sram;
++ area2_begin = area1_end + sdma.sram_size;
++
++ memset(area1_end, 0, sdma.sram_size);
++
++ /* allocate space for task descriptors, contexts, and var tables */
++ sdma.tdt = sdma_sram_alloc(sizeof(struct sdma_tdt) * SDMA_MAX_TASKS, 4, &tdt_pa);
++
++ context = sdma_sram_alloc(SDMA_CONTEXT_SIZE * SDMA_MAX_TASKS,
++ SDMA_CONTEXT_ALIGN, &context_pa);
++ sdma.var = sdma_sram_alloc( (SDMA_VAR_SIZE + SDMA_INC_SIZE) * SDMA_MAX_TASKS,
++ SDMA_VAR_ALIGN, &var_pa);
++ fdt = sdma_sram_alloc(SDMA_FDT_SIZE, SDMA_FDT_ALIGN, &fdt_pa);
++ memcpy(&fdt[48], fdt_ops, sizeof(fdt_ops));
++
++ out_be32(&sdma.io->taskBar, tdt_pa);
++
++ tdt = sdma.tdt;
++ for (task=0; task < SDMA_MAX_TASKS; task++) {
++ out_be16(&sdma.io->tcr[task], 0);
++ out_8(&sdma.io->ipr[task], 0);
++
++ tdt->context = context_pa;
++ tdt->var = var_pa;
++ tdt->fdt = fdt_pa;
++ var_pa += (SDMA_MAX_VAR + SDMA_MAX_INC)*sizeof(u32);
++ context_pa += SDMA_MAX_CONTEXT*sizeof(u32);
++ tdt++;
++ }
++
++ out_8(&sdma.io->ipr[SDMA_INITIATOR_ALWAYS], SDMA_IPR_ALWAYS);
++
++ /* Disable COMM Bus Prefetch, apparently it's not reliable yet */
++ out_be16(&sdma.io->PtdCntrl, in_be16(&sdma.io->PtdCntrl) | 1);
++
++ printk(KERN_INFO "MPC52xx BestComm inited\n");
++
++ return 0;
++
++map_sram_error:
++ release_mem_region(mem_sram->start, sdma.sram_size);
++req_sram_error:
++ iounmap(sdma.io);
++map_io_error:
++ release_mem_region(mem_io->start, mem_io->end - mem_io->start + 1);
++out:
++ printk(KERN_ERR "DMA: MPC52xx BestComm init FAILED !!!\n");
++ return ret;
++}
++
++
++static struct device_driver mpc52xx_sdma_driver = {
++ .owner = THIS_MODULE,
++ .name = DRIVER_NAME,
++ .bus = &platform_bus_type,
++ .probe = mpc52xx_sdma_probe,
++/* .remove = mpc52xx_sdma_remove, TODO */
++#ifdef CONFIG_PM
++/* .suspend = mpc52xx_sdma_suspend, TODO */
++/* .resume = mpc52xx_sdma_resume, TODO */
++#endif
++};
++
++static int __init
++mpc52xx_sdma_init(void)
++{
++ printk(KERN_INFO "DMA: MPC52xx BestComm driver\n");
++ return driver_register(&mpc52xx_sdma_driver);
++}
++
++#ifdef MODULE
++static void __exit
++mpc52xx_sdma_exit(void)
++{
++ driver_unregister(&mpc52xx_sdma_driver);
++}
++#endif
++
++#ifndef MODULE
++ subsys_initcall(mpc52xx_sdma_init);
++#else
++ module_init(mpc52xx_sdma_init);
++ module_exit(mpc52xx_sdma_exit);
++#endif
++
++
++MODULE_DESCRIPTION("Freescale MPC52xx BestComm DMA");
++MODULE_LICENSE("GPL");
++
++EXPORT_SYMBOL(sdma_sram_alloc);
++EXPORT_SYMBOL(sdma_load_task);
++EXPORT_SYMBOL(sdma_set_initiator);
++EXPORT_SYMBOL(sdma_free);
++EXPORT_SYMBOL(sdma);
++
++
+diff --git a/arch/ppc/syslib/bestcomm/bestcomm.h b/arch/ppc/syslib/bestcomm/bestcomm.h
+new file mode 100644
+index 0000000..14bf397
+--- /dev/null
++++ b/arch/ppc/syslib/bestcomm/bestcomm.h
+@@ -0,0 +1,473 @@
++/*
++ * arch/ppc/syslib/bestcomm/bestcomm.h
++ *
++ * Driver for MPC52xx processor BestComm peripheral controller
++ *
++ * Author: Dale Farnsworth <dfarnsworth@mvista.com>
++ *
++ * 2003-2004 (c) MontaVista, Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ *
++ * HISTORY:
++ *
++ * 2005-08-14 Converted to platform driver by
++ * Andrey Volkov <avolkov@varma-el.com>, Varma Electronics Oy
++ */
++
++#ifndef __BESTCOMM_BESTCOMM_H__
++#define __BESTCOMM_BESTCOMM_H__
++
++/* Buffer Descriptor definitions */
++struct sdma_bd {
++ u32 status;
++ void *data;
++};
++
++struct sdma_bd2 {
++ u32 status;
++ void *data1;
++ void *data2;
++};
++
++struct sdma_io {
++ unsigned long base_reg_addr;
++ struct mpc52xx_sdma __iomem *io;
++ unsigned long base_sram_addr;
++ void __iomem *sram;
++ size_t sram_size;
++
++ struct sdma_tdt __iomem *tdt;
++ u32 __iomem *var;
++};
++extern struct sdma_io sdma;
++
++#define sdma_sram_pa(virt) (((unsigned long)(((void __iomem *)(virt))-sdma.sram))+sdma.base_sram_addr)
++#define sdma_sram_va(pa) ((void __iomem *)((((unsigned long)(pa))-sdma.base_sram_addr)+((unsigned long)sdma.sram)))
++
++#define sdma_io_pa(virt) (((unsigned long)(((void __iomem *)(virt))-((void __iomem *)sdma.io)))+sdma.base_reg_addr)
++#define sdma_io_va(pa) ((void __iomem *)((((unsigned long)(pa))-sdma.base_reg_addr)+((unsigned long)sdma.io)))
++
++#define SDMA_LEN_BITS 26
++#define SDMA_LEN_MASK ((1 << SDMA_LEN_BITS) - 1)
++
++#define SDMA_BD_READY 0x40000000UL
++
++#define SDMA_FEC_TX_BD_TFD 0x08000000UL /* transmit frame done */
++#define SDMA_FEC_TX_BD_INT 0x04000000UL /* Interrupt */
++#define SDMA_FEC_TX_BD_TFD_INIT (SDMA_BD_READY | SDMA_FEC_TX_BD_TFD | \
++ SDMA_FEC_TX_BD_INT)
++
++struct sdma {
++ union {
++ struct sdma_bd *bd;
++ struct sdma_bd2 *bd2;
++ };
++ void **cookie;
++ u16 index;
++ u16 outdex;
++ u16 num_bd;
++ s16 tasknum;
++ u32 flags;
++};
++
++#define SDMA_FLAGS_NONE 0x0000
++#define SDMA_FLAGS_ENABLE_TASK 0x0001
++#define SDMA_FLAGS_BD2 0x0002
++
++/* Task Descriptor Table Entry */
++struct sdma_tdt {
++ u32 start;
++ u32 stop;
++ u32 var;
++ u32 fdt;
++ u32 exec_status; /* used internally by SmartComm engine */
++ u32 mvtp; /* used internally by SmartComm engine */
++ u32 context;
++ u32 litbase;
++};
++
++//extern struct sdma_tdt *sdma_tdt;
++
++#define SDMA_MAX_TASKS 16
++#define SDMA_MAX_VAR 24
++#define SDMA_MAX_INC 8
++#define SDMA_MAX_FDT 64
++#define SDMA_MAX_CONTEXT 20
++#define SDMA_CONTEXT_SIZE SDMA_MAX_CONTEXT * sizeof(u32)
++#define SDMA_CONTEXT_ALIGN 0x100
++#define SDMA_VAR_SIZE SDMA_MAX_VAR * sizeof(u32)
++#define SDMA_VAR_ALIGN 0x80
++#define SDMA_INC_SIZE SDMA_MAX_INC * sizeof(u32)
++#define SDMA_FDT_SIZE SDMA_MAX_FDT * sizeof(u32)
++#define SDMA_FDT_ALIGN 0x100
++#define SDMA_BD_ALIGN 0x10
++
++#define TASK_ENABLE 0x8000
++
++#ifndef DPRINK
++ #ifdef CONFIG_BESTCOMM_DEBUG
++ #define DPRINTK(a,b...) printk(KERN_DEBUG "sdma: %s: " a, __FUNCTION__ , ## b)
++ #else
++ #define DPRINTK(a,b...)
++ #endif
++#endif
++
++static inline void sdma_enable_task(int task)
++{
++ DPRINTK("***DMA enable task (%d): tdt = %08x\n",task, sdma.tdt);
++ DPRINTK("***tdt->start = %08x\n",sdma.tdt[task].start);
++ DPRINTK("***tdt->stop = %08x\n",sdma.tdt[task].stop);
++ DPRINTK("***tdt->var = %08x\n",sdma.tdt[task].var);
++ DPRINTK("***tdt->fdt = %08x\n",sdma.tdt[task].fdt);
++ DPRINTK("***tdt->status = %08x\n",sdma.tdt[task].exec_status);
++ DPRINTK("***tdt->mvtp = %08x\n",sdma.tdt[task].mvtp);
++ DPRINTK("***tdt->context = %08x\n",sdma.tdt[task].context);
++ DPRINTK("***tdt->litbase = %08x\n",sdma.tdt[task].litbase);
++ DPRINTK("***--------------\n");
++
++ u16 reg = in_be16(&sdma.io->tcr[task]);
++ DPRINTK("***enable task: &sdma.io->tcr=%08x, reg = %04x\n", &sdma.io->tcr, reg);
++ out_be16(&sdma.io->tcr[task], reg | TASK_ENABLE);
++}
++
++static inline void sdma_disable_task(int task)
++{
++ u16 reg = in_be16(&sdma.io->tcr[task]);
++ DPRINTK("***disable task(%d): reg = %04x\n", task, reg);
++ out_be16(&sdma.io->tcr[task], reg & ~TASK_ENABLE);
++}
++
++static inline int sdma_irq(struct sdma *s)
++{
++ return MPC52xx_SDMA_IRQ_BASE + s->tasknum;
++}
++
++static inline void sdma_enable(struct sdma *s)
++{
++ sdma_enable_task(s->tasknum);
++}
++
++static inline void sdma_disable(struct sdma *s)
++{
++ sdma_disable_task(s->tasknum);
++}
++
++static inline int sdma_queue_empty(struct sdma *s)
++{
++ return s->index == s->outdex;
++}
++
++static inline void sdma_clear_irq(struct sdma *s)
++{
++ out_be32(&sdma.io->IntPend, 1 << s->tasknum);
++}
++
++static inline int sdma_next_index(struct sdma *s)
++{
++ return ((s->index + 1) == s->num_bd) ? 0 : s->index + 1;
++}
++
++static inline int sdma_next_outdex(struct sdma *s)
++{
++ return ((s->outdex + 1) == s->num_bd) ? 0 : s->outdex + 1;
++}
++
++static inline int sdma_queue_full(struct sdma *s)
++{
++ return s->outdex == sdma_next_index(s);
++}
++
++static inline int sdma_buffer_done(struct sdma *s)
++{
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(s->flags & SDMA_FLAGS_BD2);
++#endif
++ if (sdma_queue_empty(s))
++ return 0;
++ return (s->bd[s->outdex].status & SDMA_BD_READY) == 0;
++}
++
++static inline int sdma_buffer2_done(struct sdma *s)
++{
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(!(s->flags & SDMA_FLAGS_BD2));
++#endif
++ if (sdma_queue_empty(s))
++ return 0;
++
++ return (s->bd2[s->outdex].status & SDMA_BD_READY) == 0;
++}
++
++static inline u32 *sdma_task_desc(int task)
++{
++ return sdma_sram_va(sdma.tdt[task].start);
++}
++
++static inline u32 sdma_task_num_descs(int task)
++{
++ return (sdma.tdt[task].stop - sdma.tdt[task].start)/sizeof(u32) + 1;
++}
++
++static inline u32 *sdma_task_var(int task)
++{
++ return sdma_sram_va(sdma.tdt[task].var);
++}
++
++static inline u32 *sdma_task_inc(int task)
++{
++ return &sdma_task_var(task)[SDMA_MAX_VAR];
++}
++
++static inline void sdma_set_tcr_initiator(int task, int initiator) {
++ u16 *tcr = &sdma.io->tcr[task];
++ out_be16(tcr, (in_be16(tcr) & ~0x1f00) | (initiator << 8));
++}
++
++#define SDMA_DRD_INITIATOR_SHIFT 21
++
++static inline int sdma_desc_initiator(u32 desc)
++{
++ return (desc >> SDMA_DRD_INITIATOR_SHIFT) & 0x1f;
++}
++
++static inline void sdma_set_desc_initiator(u32 *desc, int initiator)
++{
++ *desc = (*desc & ~(0x1f << SDMA_DRD_INITIATOR_SHIFT)) |
++ ((initiator << SDMA_DRD_INITIATOR_SHIFT) & 0x1f);
++}
++
++static inline void sdma_submit_buffer(struct sdma *s, void *cookie, void *data,
++ int length)
++{
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(s->flags & SDMA_FLAGS_BD2);
++#endif
++ s->cookie[s->index] = cookie;
++ s->bd[s->index].data = data;
++ s->bd[s->index].status = SDMA_BD_READY | length;
++ s->index = sdma_next_index(s);
++ if (s->flags & SDMA_FLAGS_ENABLE_TASK)
++ sdma_enable_task(s->tasknum);
++}
++
++/*
++ * Special submit_buffer function to submit last buffer of a frame to
++ * the FEC tx task. tfd means "transmit frame done".
++ */
++static inline void sdma_fec_tfd_submit_buffer(struct sdma *s, void *cookie,
++ void *data, int length)
++{
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(s->flags & SDMA_FLAGS_BD2);
++#endif
++ s->cookie[s->index] = cookie;
++ s->bd[s->index].data = data;
++ s->bd[s->index].status = SDMA_FEC_TX_BD_TFD_INIT | length;
++ s->index = sdma_next_index(s);
++ sdma_enable_task(s->tasknum);
++}
++
++static inline void *sdma_retrieve_buffer(struct sdma *s, int *length)
++{
++ void *cookie = s->cookie[s->outdex];
++
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(s->flags & SDMA_FLAGS_BD2);
++#endif
++ if (length)
++ *length = s->bd[s->outdex].status & SDMA_LEN_MASK;
++ s->outdex = sdma_next_outdex(s);
++ return cookie;
++}
++
++static inline void sdma_submit_buffer2(struct sdma *s, void *cookie,
++ void *data1, void *data2, int length)
++{
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(!(s->flags & SDMA_FLAGS_BD2));
++#endif
++ s->cookie[s->index] = cookie;
++ s->bd2[s->index].data1 = data1;
++ s->bd2[s->index].data2 = data2;
++ s->bd2[s->index].status = SDMA_BD_READY | length;
++ s->index = sdma_next_index(s);
++ if (s->flags & SDMA_FLAGS_ENABLE_TASK)
++ sdma_enable_task(s->tasknum);
++}
++
++static inline void *sdma_retrieve_buffer2(struct sdma *s, int *length)
++{
++ void *cookie = s->cookie[s->outdex];
++
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(!(s->flags & SDMA_FLAGS_BD2));
++#endif
++ if (length)
++ *length = s->bd2[s->outdex].status & SDMA_LEN_MASK;
++ s->outdex = sdma_next_outdex(s);
++ return cookie;
++}
++
++#define SDMA_TASK_MAGIC 0x4243544B /* 'BCTK' */
++
++/* the size fields are given in number of 32-bit words */
++struct sdma_task_header {
++ u32 magic;
++ u8 desc_size;
++ u8 var_size;
++ u8 inc_size;
++ u8 first_var;
++ u8 reserved[8];
++};
++
++#define SDMA_DESC_NOP 0x000001f8
++#define SDMA_LCD_MASK 0x80000000
++#define SDMA_DRD_EXTENDED 0x40000000
++
++#define sdma_drd_is_extended(desc) ((desc) & SDMA_DRD_EXTENDED)
++
++static inline int sdma_desc_is_drd(u32 desc) {
++ return !(desc & SDMA_LCD_MASK) && desc != SDMA_DESC_NOP;
++};
++
++#define SDMA_PRAGMA_BIT_RSV 7 /* reserved pragma bit */
++#define SDMA_PRAGMA_BIT_PRECISE_INC 6 /* increment 0=when possible, */
++ /* 1=iter end */
++#define SDMA_PRAGMA_BIT_RST_ERROR_NO 5 /* don't reset errors on */
++ /* task enable */
++#define SDMA_PRAGMA_BIT_PACK 4 /* pack data enable */
++#define SDMA_PRAGMA_BIT_INTEGER 3 /* data alignment */
++ /* 0=frac(msb), 1=int(lsb) */
++#define SDMA_PRAGMA_BIT_SPECREAD 2 /* XLB speculative read */
++#define SDMA_PRAGMA_BIT_CW 1 /* write line buffer enable */
++#define SDMA_PRAGMA_BIT_RL 0 /* read line buffer enable */
++
++#define SDMA_STD_PRAGMA ((0 << SDMA_PRAGMA_BIT_RSV) | \
++ (0 << SDMA_PRAGMA_BIT_PRECISE_INC) | \
++ (0 << SDMA_PRAGMA_BIT_RST_ERROR_NO) | \
++ (0 << SDMA_PRAGMA_BIT_PACK) | \
++ (0 << SDMA_PRAGMA_BIT_INTEGER) | \
++ (1 << SDMA_PRAGMA_BIT_SPECREAD) | \
++ (1 << SDMA_PRAGMA_BIT_CW) | \
++ (1 << SDMA_PRAGMA_BIT_RL))
++
++#define SDMA_PCI_PRAGMA ((0 << SDMA_PRAGMA_BIT_RSV) | \
++ (0 << SDMA_PRAGMA_BIT_PRECISE_INC) | \
++ (0 << SDMA_PRAGMA_BIT_RST_ERROR_NO) | \
++ (0 << SDMA_PRAGMA_BIT_PACK) | \
++ (1 << SDMA_PRAGMA_BIT_INTEGER) | \
++ (1 << SDMA_PRAGMA_BIT_SPECREAD) | \
++ (1 << SDMA_PRAGMA_BIT_CW) | \
++ (1 << SDMA_PRAGMA_BIT_RL))
++
++#define SDMA_ATA_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_CRC16_DP_0_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_CRC16_DP_1_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_FEC_RX_BD_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_FEC_TX_BD_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_DP_0_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_DP_1_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_DP_2_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_DP_3_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_DP_BD_0_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_DP_BD_1_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_RX_BD_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_TX_BD_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_LPC_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_PCI_RX_PRAGMA SDMA_PCI_PRAGMA
++#define SDMA_PCI_TX_PRAGMA SDMA_PCI_PRAGMA
++
++static inline void sdma_set_task_pragma(int task, int pragma)
++{
++ u32 *fdt = &sdma.tdt[task].fdt;
++ *fdt = (*fdt & ~0xff) | pragma;
++}
++
++static inline void sdma_set_task_auto_start(int task, int next_task)
++{
++ u16 *tcr = &sdma.io->tcr[task];
++ out_be16(tcr, (in_be16(tcr) & ~0xff) | 0x00c0 | next_task);
++}
++
++#define SDMA_INITIATOR_ALWAYS 0
++#define SDMA_INITIATOR_SCTMR_0 1
++#define SDMA_INITIATOR_SCTMR_1 2
++#define SDMA_INITIATOR_FEC_RX 3
++#define SDMA_INITIATOR_FEC_TX 4
++#define SDMA_INITIATOR_ATA_RX 5
++#define SDMA_INITIATOR_ATA_TX 6
++#define SDMA_INITIATOR_SCPCI_RX 7
++#define SDMA_INITIATOR_SCPCI_TX 8
++#define SDMA_INITIATOR_PSC3_RX 9
++#define SDMA_INITIATOR_PSC3_TX 10
++#define SDMA_INITIATOR_PSC2_RX 11
++#define SDMA_INITIATOR_PSC2_TX 12
++#define SDMA_INITIATOR_PSC1_RX 13
++#define SDMA_INITIATOR_PSC1_TX 14
++#define SDMA_INITIATOR_SCTMR_2 15
++#define SDMA_INITIATOR_SCLPC 16
++#define SDMA_INITIATOR_PSC5_RX 17
++#define SDMA_INITIATOR_PSC5_TX 18
++#define SDMA_INITIATOR_PSC4_RX 19
++#define SDMA_INITIATOR_PSC4_TX 20
++#define SDMA_INITIATOR_I2C2_RX 21
++#define SDMA_INITIATOR_I2C2_TX 22
++#define SDMA_INITIATOR_I2C1_RX 23
++#define SDMA_INITIATOR_I2C1_TX 24
++#define SDMA_INITIATOR_PSC6_RX 25
++#define SDMA_INITIATOR_PSC6_TX 26
++#define SDMA_INITIATOR_IRDA_RX 25
++#define SDMA_INITIATOR_IRDA_TX 26
++#define SDMA_INITIATOR_SCTMR_3 27
++#define SDMA_INITIATOR_SCTMR_4 28
++#define SDMA_INITIATOR_SCTMR_5 29
++#define SDMA_INITIATOR_SCTMR_6 30
++#define SDMA_INITIATOR_SCTMR_7 31
++
++#define SDMA_IPR_ALWAYS 7
++#define SDMA_IPR_SCTMR_0 2
++#define SDMA_IPR_SCTMR_1 2
++#define SDMA_IPR_FEC_RX 6
++#define SDMA_IPR_FEC_TX 5
++#define SDMA_IPR_ATA_RX 4
++#define SDMA_IPR_ATA_TX 3
++#define SDMA_IPR_SCPCI_RX 2
++#define SDMA_IPR_SCPCI_TX 2
++#define SDMA_IPR_PSC3_RX 2
++#define SDMA_IPR_PSC3_TX 2
++#define SDMA_IPR_PSC2_RX 2
++#define SDMA_IPR_PSC2_TX 2
++#define SDMA_IPR_PSC1_RX 2
++#define SDMA_IPR_PSC1_TX 2
++#define SDMA_IPR_SCTMR_2 2
++#define SDMA_IPR_SCLPC 2
++#define SDMA_IPR_PSC5_RX 2
++#define SDMA_IPR_PSC5_TX 2
++#define SDMA_IPR_PSC4_RX 2
++#define SDMA_IPR_PSC4_TX 2
++#define SDMA_IPR_I2C2_RX 2
++#define SDMA_IPR_I2C2_TX 2
++#define SDMA_IPR_I2C1_RX 2
++#define SDMA_IPR_I2C1_TX 2
++#define SDMA_IPR_PSC6_RX 2
++#define SDMA_IPR_PSC6_TX 2
++#define SDMA_IPR_IRDA_RX 2
++#define SDMA_IPR_IRDA_TX 2
++#define SDMA_IPR_SCTMR_3 2
++#define SDMA_IPR_SCTMR_4 2
++#define SDMA_IPR_SCTMR_5 2
++#define SDMA_IPR_SCTMR_6 2
++#define SDMA_IPR_SCTMR_7 2
++
++extern struct sdma *sdma_alloc(int request_queue_size);
++extern void sdma_free(struct sdma *sdma_struct);
++extern int sdma_load_task(u32 *task_image);
++extern void *sdma_sram_alloc(int size, int alignment, u32 *dma_handle);
++extern void sdma_init_bd(struct sdma *s);
++extern void sdma_init_bd2(struct sdma *s);
++
++#define FIELD_OFFSET(s,f) ((unsigned long)(&(((struct s*)0)->f)))
++
++#endif /* __BESTCOMM_BESTCOMM_H__ */
+diff --git a/arch/ppc/syslib/bestcomm/fec.c b/arch/ppc/syslib/bestcomm/fec.c
+new file mode 100644
+index 0000000..8756856
+--- /dev/null
++++ b/arch/ppc/syslib/bestcomm/fec.c
+@@ -0,0 +1,174 @@
++/*
++ * arch/ppc/syslib/bestcomm/fec.c
++ *
++ * Driver for MPC52xx processor BestComm FEC controller
++ *
++ * Author: Dale Farnsworth <dfarnsworth@mvista.com>
++ *
++ * 2003-2004 (c) MontaVista, Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ *
++ * HISTORY:
++ *
++ * 2005-08-14 Converted to platform driver by
++ * Andrey Volkov <avolkov@varma-el.com>, Varma Electronics Oy
++ */
++
++#include <linux/config.h>
++#include <linux/version.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/string.h>
++#include <linux/types.h>
++#include <asm/errno.h>
++#include <asm/io.h>
++
++#include <asm/mpc52xx.h>
++
++#include "bestcomm.h"
++#include "fec.h"
++
++/*
++ * Initialize FEC receive task.
++ * Returns task number of FEC receive task.
++ * Returns -1 on failure
++ */
++int sdma_fec_rx_init(struct sdma *s, phys_addr_t fifo, int maxbufsize)
++{
++ struct sdma_fec_rx_var *var;
++ struct sdma_fec_rx_inc *inc;
++
++ static int tasknum = -1;
++ static struct sdma_bd *bd = 0;
++ static u32 bd_pa;
++
++ if (tasknum < 0) {
++ tasknum = sdma_load_task(sdma_fec_rx_task);
++ if (tasknum < 0)
++ return tasknum;
++ }
++
++ if (!bd)
++ bd = (struct sdma_bd *)sdma_sram_alloc(sizeof(*bd) * s->num_bd,
++ SDMA_BD_ALIGN, &bd_pa);
++ if (!bd)
++ return -ENOMEM;
++
++ sdma_disable_task(tasknum);
++
++ s->tasknum = tasknum;
++ s->bd = bd;
++ s->flags = SDMA_FLAGS_NONE;
++ s->index = 0;
++ s->outdex = 0;
++ memset(bd, 0, sizeof(*bd) * s->num_bd);
++
++ var = (struct sdma_fec_rx_var *)sdma_task_var(tasknum);
++ var->enable = sdma_io_pa(&sdma.io->tcr[tasknum]);
++ var->fifo = fifo;
++ var->bd_base = bd_pa;
++ var->bd_last = bd_pa + (s->num_bd - 1)*sizeof(struct sdma_bd);
++ var->bd_start = bd_pa;
++ var->buffer_size = maxbufsize;
++
++ /* These are constants, they should have been in the image file */
++ inc = (struct sdma_fec_rx_inc *)sdma_task_inc(tasknum);
++ inc->incr_bytes = -(s16)sizeof(u32);
++ inc->incr_dst = sizeof(u32);
++ inc->incr_dst_ma = sizeof(u8);
++
++ sdma_set_task_pragma(tasknum, SDMA_FEC_RX_BD_PRAGMA);
++ sdma_set_task_auto_start(tasknum, tasknum);
++
++ /* clear pending interrupt bits */
++ out_be32(&sdma.io->IntPend, 1<<tasknum);
++
++ out_8(&sdma.io->ipr[SDMA_INITIATOR_FEC_RX], SDMA_IPR_FEC_RX);
++
++ return tasknum;
++}
++
++/*
++ * Return 2nd to last DRD
++ * This is an ugly hack, but at least it's only done once at initialization
++ */
++static u32 *self_modified_drd(int tasknum)
++{
++ u32 *desc;
++ int num_descs;
++ int drd_count;
++ int i;
++
++ num_descs = sdma_task_num_descs(tasknum);
++ desc = sdma_task_desc(tasknum) + num_descs - 1;
++ drd_count = 0;
++ for (i=0; i<num_descs; i++, desc--)
++ if (sdma_desc_is_drd(*desc) && ++drd_count == 3)
++ break;
++ return desc;
++}
++
++/*
++ * Initialize FEC transmit task.
++ * Returns task number of FEC transmit task.
++ * Returns -1 on failure
++ */
++int sdma_fec_tx_init(struct sdma *s, phys_addr_t fifo)
++{
++ struct sdma_fec_tx_var *var;
++ struct sdma_fec_tx_inc *inc;
++
++ static int tasknum = -1;
++ static struct sdma_bd *bd = 0;
++ static u32 bd_pa;
++
++ if (tasknum < 0) {
++ tasknum = sdma_load_task(sdma_fec_tx_task);
++ if (tasknum < 0)
++ return tasknum;
++ }
++
++ if (!bd)
++ bd = (struct sdma_bd *)sdma_sram_alloc(sizeof(*bd) * s->num_bd,
++ SDMA_BD_ALIGN, &bd_pa);
++ if (!bd)
++ return -ENOMEM;
++
++ sdma_disable_task(tasknum);
++
++ s->tasknum = tasknum;
++ s->bd = bd;
++ s->flags = SDMA_FLAGS_ENABLE_TASK;
++ s->index = 0;
++ s->outdex = 0;
++ memset(bd, 0, sizeof(*bd) * s->num_bd);
++
++ var = (struct sdma_fec_tx_var *)sdma_task_var(tasknum);
++ var->DRD = sdma_sram_pa(self_modified_drd(tasknum));
++ var->fifo = fifo;
++ var->enable = sdma_io_pa(&sdma.io->tcr[tasknum]);
++ var->bd_base = bd_pa;
++ var->bd_last = bd_pa + (s->num_bd - 1)*sizeof(struct sdma_bd);
++ var->bd_start = bd_pa;
++
++ /* These are constants, they should have been in the image file */
++ inc = (struct sdma_fec_tx_inc *)sdma_task_inc(tasknum);
++ inc->incr_bytes = -(s16)sizeof(u32);
++ inc->incr_src = sizeof(u32);
++ inc->incr_src_ma = sizeof(u8);
++
++ sdma_set_task_pragma(tasknum, SDMA_FEC_TX_BD_PRAGMA);
++ sdma_set_task_auto_start(tasknum, tasknum);
++
++ /* clear pending interrupt bits */
++ out_be32(&sdma.io->IntPend, 1<<tasknum);
++
++ out_8(&sdma.io->ipr[SDMA_INITIATOR_FEC_TX], SDMA_IPR_FEC_TX);
++
++ return tasknum;
++}
++
++EXPORT_SYMBOL(sdma_fec_rx_init);
++EXPORT_SYMBOL(sdma_fec_tx_init);
+diff --git a/arch/ppc/syslib/bestcomm/fec.h b/arch/ppc/syslib/bestcomm/fec.h
+new file mode 100644
+index 0000000..e3abc0f
+--- /dev/null
++++ b/arch/ppc/syslib/bestcomm/fec.h
+@@ -0,0 +1,71 @@
++/*
++ * arch/ppc/syslib/bestcomm/fec.h
++ *
++ * Driver for MPC52xx processor BestComm FEC controller
++ *
++ * Author: Dale Farnsworth <dfarnsworth@mvista.com>
++ *
++ * 2003-2004 (c) MontaVista, Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ *
++ * HISTORY:
++ *
++ * 2005-08-14 Converted to platform driver by
++ * Andrey Volkov <avolkov@varma-el.com>, Varma Electronics Oy
++ */
++
++#ifndef __BESTCOMM_FEC_H__
++#define __BESTCOMM_FEC_H__
++
++
++/* rx task vars that need to be set before enabling the task */
++struct sdma_fec_rx_var {
++ u32 enable; /* (u16*) address of task's control register */
++ u32 fifo; /* (u32*) address of fec's fifo */
++ u32 bd_base; /* (struct sdma_bd*) beginning of ring buffer */
++ u32 bd_last; /* (struct sdma_bd*) end of ring buffer */
++ u32 bd_start; /* (struct sdma_bd*) current bd */
++ u32 buffer_size; /* size of receive buffer */
++};
++
++/* rx task incs that need to be set before enabling the task */
++struct sdma_fec_rx_inc {
++ u16 pad0;
++ s16 incr_bytes;
++ u16 pad1;
++ s16 incr_dst;
++ u16 pad2;
++ s16 incr_dst_ma;
++};
++
++/* tx task vars that need to be set before enabling the task */
++struct sdma_fec_tx_var {
++ u32 DRD; /* (u32*) address of self-modified DRD */
++ u32 fifo; /* (u32*) address of fec's fifo */
++ u32 enable; /* (u16*) address of task's control register */
++ u32 bd_base; /* (struct sdma_bd*) beginning of ring buffer */
++ u32 bd_last; /* (struct sdma_bd*) end of ring buffer */
++ u32 bd_start; /* (struct sdma_bd*) current bd */
++ u32 buffer_size; /* set by uCode for each packet */
++};
++
++/* tx task incs that need to be set before enabling the task */
++struct sdma_fec_tx_inc {
++ u16 pad0;
++ s16 incr_bytes;
++ u16 pad1;
++ s16 incr_src;
++ u16 pad2;
++ s16 incr_src_ma;
++};
++
++extern int sdma_fec_rx_init(struct sdma *s, phys_addr_t fifo, int maxbufsize);
++extern int sdma_fec_tx_init(struct sdma *s, phys_addr_t fifo);
++
++extern u32 sdma_fec_rx_task[];
++extern u32 sdma_fec_tx_task[];
++
++
++#endif /* __BESTCOMM_FEC_H__ */
+diff --git a/arch/ppc/syslib/bestcomm/sdma_fec_rx_task.c b/arch/ppc/syslib/bestcomm/sdma_fec_rx_task.c
+new file mode 100644
+index 0000000..511b036
+--- /dev/null
++++ b/arch/ppc/syslib/bestcomm/sdma_fec_rx_task.c
+@@ -0,0 +1,71 @@
++/*
++ * sdma_fec_rx_task.c
++ *
++ * Automatically created based on BestCommAPI-2.2/code_dma/image_rtos1/dma_image.hex
++ * on Tue Mar 22 11:19:38 2005 GMT
++ */
++
++#include <linux/types.h>
++
++/*
++ * The header consists of the following fields:
++ * uint32_t magic;
++ * uint8_t desc_size;
++ * uint8_t var_size;
++ * uint8_t inc_size;
++ * uint8_t first_var;
++ * uint8_t reserved[8];
++ *
++ * The size fields contain the number of 32-bit words.
++*/
++
++uint32_t sdma_fec_rx_task[] = {
++ /* header */
++ 0x4243544b,
++ 0x18060709,
++ 0x00000000,
++ 0x00000000,
++
++ /* Task descriptors */
++ 0x808220e3, /* LCD: idx0 = var1, idx1 = var4; idx1 <= var3; idx0 += inc4, idx1 += inc3 */
++ 0x10601010, /* DRD1A: var4 = var2; FN=0 MORE init=3 WS=0 RS=0 */
++ 0xb8800264, /* LCD: idx2 = *idx1, idx3 = var0; idx2 < var9; idx2 += inc4, idx3 += inc4 */
++ 0x10001308, /* DRD1A: var4 = idx1; FN=0 MORE init=0 WS=0 RS=0 */
++ 0x60140002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=2 RS=2 */
++ 0x0cccfcca, /* DRD2B1: *idx3 = EU3(); EU3(*idx3,var10) */
++ 0x80004000, /* LCDEXT: idx2 = 0x00000000; ; */
++ 0xb8c58029, /* LCD: idx3 = *(idx1 + var00000015); idx3 once var0; idx3 += inc5 */
++ 0x60000002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=0 RS=0 */
++ 0x088cf8cc, /* DRD2B1: idx2 = EU3(); EU3(idx3,var12) */
++ 0x991982f2, /* LCD: idx2 = idx2, idx3 = idx3; idx2 > var11; idx2 += inc6, idx3 += inc2 */
++ 0x006acf80, /* DRD1A: *idx3 = *idx0; FN=0 init=3 WS=1 RS=1 */
++ 0x80004000, /* LCDEXT: idx2 = 0x00000000; ; */
++ 0x9999802d, /* LCD: idx3 = idx3; idx3 once var0; idx3 += inc5 */
++ 0x70000002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
++ 0x034cfc4e, /* DRD2B1: var13 = EU3(); EU3(*idx1,var14) */
++ 0x00008868, /* DRD1A: idx2 = var13; FN=0 init=0 WS=0 RS=0 */
++ 0x99198341, /* LCD: idx2 = idx2, idx3 = idx3; idx2 > var13; idx2 += inc0, idx3 += inc1 */
++ 0x007ecf80, /* DRD1A: *idx3 = *idx0; FN=0 init=3 WS=3 RS=3 */
++ 0x99198272, /* LCD: idx2 = idx2, idx3 = idx3; idx2 > var9; idx2 += inc6, idx3 += inc2 */
++ 0x046acf80, /* DRD1A: *idx3 = *idx0; FN=0 INT init=3 WS=1 RS=1 */
++ 0x9819002d, /* LCD: idx2 = idx0; idx2 once var0; idx2 += inc5 */
++ 0x0060c790, /* DRD1A: *idx1 = *idx2; FN=0 init=3 WS=0 RS=0 */
++ 0x000001f8, /* NOP */
++
++ /* VAR[9]-VAR[14] */
++ 0x40000000,
++ 0x7fff7fff,
++ 0x00000000,
++ 0x00000003,
++ 0x40000008,
++ 0x43ffffff,
++
++ /* INC[0]-INC[6] */
++ 0x40000000,
++ 0xe0000000,
++ 0xe0000000,
++ 0xa0000008,
++ 0x20000000,
++ 0x00000000,
++ 0x4000ffff,
++};
+diff --git a/arch/ppc/syslib/bestcomm/sdma_fec_tx_task.c b/arch/ppc/syslib/bestcomm/sdma_fec_tx_task.c
+new file mode 100644
+index 0000000..d8d7fd3
+--- /dev/null
++++ b/arch/ppc/syslib/bestcomm/sdma_fec_tx_task.c
+@@ -0,0 +1,84 @@
++/*
++ * sdma_fec_tx_task.c
++ *
++ * Automatically created based on BestCommAPI-2.2/code_dma/image_rtos1/dma_image.hex
++ * on Tue Mar 22 11:19:29 2005 GMT
++ */
++
++#include <linux/types.h>
++
++/*
++ * The header consists of the following fields:
++ * uint32_t magic;
++ * uint8_t desc_size;
++ * uint8_t var_size;
++ * uint8_t inc_size;
++ * uint8_t first_var;
++ * uint8_t reserved[8];
++ *
++ * The size fields contain the number of 32-bit words.
++*/
++
++uint32_t sdma_fec_tx_task[] = {
++ /* header */
++ 0x4243544b,
++ 0x2407070d,
++ 0x00000000,
++ 0x00000000,
++
++ /* Task descriptors */
++ 0x8018001b, /* LCD: idx0 = var0; idx0 <= var0; idx0 += inc3 */
++ 0x60000005, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=5 EXT init=0 WS=0 RS=0 */
++ 0x01ccfc0d, /* DRD2B1: var7 = EU3(); EU3(*idx0,var13) */
++ 0x8082a123, /* LCD: idx0 = var1, idx1 = var5; idx1 <= var4; idx0 += inc4, idx1 += inc3 */
++ 0x10801418, /* DRD1A: var5 = var3; FN=0 MORE init=4 WS=0 RS=0 */
++ 0xf88103a4, /* LCDEXT: idx2 = *idx1, idx3 = var2; idx2 < var14; idx2 += inc4, idx3 += inc4 */
++ 0x801a6024, /* LCD: idx4 = var0; ; idx4 += inc4 */
++ 0x10001708, /* DRD1A: var5 = idx1; FN=0 MORE init=0 WS=0 RS=0 */
++ 0x60140002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=2 RS=2 */
++ 0x0cccfccf, /* DRD2B1: *idx3 = EU3(); EU3(*idx3,var15) */
++ 0x991a002c, /* LCD: idx2 = idx2, idx3 = idx4; idx2 once var0; idx2 += inc5, idx3 += inc4 */
++ 0x70000002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
++ 0x024cfc4d, /* DRD2B1: var9 = EU3(); EU3(*idx1,var13) */
++ 0x60000003, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=3 EXT init=0 WS=0 RS=0 */
++ 0x0cccf247, /* DRD2B1: *idx3 = EU3(); EU3(var9,var7) */
++ 0x80004000, /* LCDEXT: idx2 = 0x00000000; ; */
++ 0xb8c80029, /* LCD: idx3 = *(idx1 + var0000001a); idx3 once var0; idx3 += inc5 */
++ 0x70000002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
++ 0x088cf8d1, /* DRD2B1: idx2 = EU3(); EU3(idx3,var17) */
++ 0x00002f10, /* DRD1A: var11 = idx2; FN=0 init=0 WS=0 RS=0 */
++ 0x99198432, /* LCD: idx2 = idx2, idx3 = idx3; idx2 > var16; idx2 += inc6, idx3 += inc2 */
++ 0x008ac398, /* DRD1A: *idx0 = *idx3; FN=0 init=4 WS=1 RS=1 */
++ 0x80004000, /* LCDEXT: idx2 = 0x00000000; ; */
++ 0x9999802d, /* LCD: idx3 = idx3; idx3 once var0; idx3 += inc5 */
++ 0x70000002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
++ 0x048cfc53, /* DRD2B1: var18 = EU3(); EU3(*idx1,var19) */
++ 0x60000008, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=8 EXT init=0 WS=0 RS=0 */
++ 0x088cf48b, /* DRD2B1: idx2 = EU3(); EU3(var18,var11) */
++ 0x99198481, /* LCD: idx2 = idx2, idx3 = idx3; idx2 > var18; idx2 += inc0, idx3 += inc1 */
++ 0x009ec398, /* DRD1A: *idx0 = *idx3; FN=0 init=4 WS=3 RS=3 */
++ 0x991983b2, /* LCD: idx2 = idx2, idx3 = idx3; idx2 > var14; idx2 += inc6, idx3 += inc2 */
++ 0x088ac398, /* DRD1A: *idx0 = *idx3; FN=0 TFD init=4 WS=1 RS=1 */
++ 0x9919002d, /* LCD: idx2 = idx2; idx2 once var0; idx2 += inc5 */
++ 0x60000005, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=5 EXT init=0 WS=0 RS=0 */
++ 0x0c4cf88e, /* DRD2B1: *idx1 = EU3(); EU3(idx2,var14) */
++ 0x000001f8, /* NOP */
++
++ /* VAR[13]-VAR[19] */
++ 0x0c000000,
++ 0x40000000,
++ 0x7fff7fff,
++ 0x00000000,
++ 0x00000003,
++ 0x40000004,
++ 0x43ffffff,
++
++ /* INC[0]-INC[6] */
++ 0x40000000,
++ 0xe0000000,
++ 0xe0000000,
++ 0xa0000008,
++ 0x20000000,
++ 0x00000000,
++ 0x4000ffff,
++};
+diff --git a/arch/ppc/syslib/mpc52xx_devices.c b/arch/ppc/syslib/mpc52xx_devices.c
+index 7487539..abe6161 100644
+--- a/arch/ppc/syslib/mpc52xx_devices.c
++++ b/arch/ppc/syslib/mpc52xx_devices.c
+@@ -33,6 +33,28 @@ static struct fsl_i2c_platform_data mpc52xx_fsl_i2c_pdata = {
+ possibly using IORESOURCE_DMA. But that's when BestComm is ready ... */
+
+ struct platform_device ppc_sys_platform_devices[] = {
++ [MPC52xx_SDMA] = {
++ .name = "mpc52xx-sdma",
++ .id = -1,
++ .num_resources = 3,
++ .resource = (struct resource[]) {
++ {
++ .start = 0x1200,
++ .end = 0x12ff,
++ .flags = IORESOURCE_MEM,
++ },
++ {
++ .start = 0x8000,
++ .end = 0xbfff,
++ .flags = IORESOURCE_MEM,
++ },
++ {
++ .start = MPC52xx_SDMA_IRQ,
++ .end = MPC52xx_SDMA_IRQ,
++ .flags = IORESOURCE_IRQ,
++ },
++ },
++ },
+ [MPC52xx_MSCAN1] = {
+ .name = "mpc52xx-mscan",
+ .id = 0,
+diff --git a/arch/ppc/syslib/mpc52xx_sys.c b/arch/ppc/syslib/mpc52xx_sys.c
+index b4e6f97..a74b19c 100644
+--- a/arch/ppc/syslib/mpc52xx_sys.c
++++ b/arch/ppc/syslib/mpc52xx_sys.c
+@@ -19,10 +19,10 @@ struct ppc_sys_spec ppc_sys_specs[] = {
+ .ppc_sys_name = "5200",
+ .mask = 0xffff0000,
+ .value = 0x80110000,
+- .num_devices = 15,
++ .num_devices = MPC52xx_NUM_DEVICES,
+ .device_list = (enum ppc_sys_devices[])
+ {
+- MPC52xx_MSCAN1, MPC52xx_MSCAN2, MPC52xx_SPI,
++ MPC52xx_SDMA, MPC52xx_MSCAN1, MPC52xx_MSCAN2, MPC52xx_SPI,
+ MPC52xx_USB, MPC52xx_BDLC, MPC52xx_PSC1, MPC52xx_PSC2,
+ MPC52xx_PSC3, MPC52xx_PSC4, MPC52xx_PSC5, MPC52xx_PSC6,
+ MPC52xx_FEC, MPC52xx_ATA, MPC52xx_I2C1, MPC52xx_I2C2,
+diff --git a/include/asm-ppc/mpc52xx.h b/include/asm-ppc/mpc52xx.h
+index d9d21aa..4856b74 100644
+--- a/include/asm-ppc/mpc52xx.h
++++ b/include/asm-ppc/mpc52xx.h
+@@ -34,6 +34,8 @@ struct pt_regs;
+ /* ======================================================================== */
+
+ enum ppc_sys_devices {
++ MPC52xx_SDMA, /* Must be first device to probe,
++ else FEC/ATA will failed */
+ MPC52xx_MSCAN1,
+ MPC52xx_MSCAN2,
+ MPC52xx_SPI,
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0020-Fec-MPC5200-eth-driver.txt b/packages/linux/linux-efika-2.6.20/0020-Fec-MPC5200-eth-driver.txt
new file mode 100644
index 0000000000..6c9ab0ebeb
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0020-Fec-MPC5200-eth-driver.txt
@@ -0,0 +1,1783 @@
+From 6b6e09cca4346ea737db427d568843034eb348fa Mon Sep 17 00:00:00 2001
+From: Andrey Volkov <avolkov@varma-el.com>
+Date: Fri, 18 Aug 2006 10:02:29 -0600
+Subject: [PATCH] [PATCH 02/02] Fec MPC5200 eth driver
+
+Second part. Contain only FEC parts.
+Depended on previous bestcomm patch.
+
+Signed-Off-By: Andrey Volkov <avolkov at varma-el.com>
+---
+ drivers/net/Kconfig | 1 +
+ drivers/net/Makefile | 1 +
+ drivers/net/fec_mpc52xx/Kconfig | 23 ++
+ drivers/net/fec_mpc52xx/Makefile | 2 +
+ drivers/net/fec_mpc52xx/fec.c | 768 +++++++++++++++++++++++++++++++++++++
+ drivers/net/fec_mpc52xx/fec.h | 308 +++++++++++++++
+ drivers/net/fec_mpc52xx/fec_phy.c | 526 +++++++++++++++++++++++++
+ drivers/net/fec_mpc52xx/fec_phy.h | 73 ++++
+ 8 files changed, 1702 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
+index 8aa8dd0..0658e92 100644
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -1902,6 +1902,7 @@ config NE_H8300
+ controller on the Renesas H8/300 processor.
+
+ source "drivers/net/fec_8xx/Kconfig"
++source "drivers/net/fec_mpc52xx/Kconfig"
+ source "drivers/net/fs_enet/Kconfig"
+
+ endmenu
+diff --git a/drivers/net/Makefile b/drivers/net/Makefile
+index 4c0d4e5..e6f903d 100644
+--- a/drivers/net/Makefile
++++ b/drivers/net/Makefile
+@@ -196,6 +196,7 @@ obj-$(CONFIG_SMC91X) += smc91x.o
+ obj-$(CONFIG_SMC911X) += smc911x.o
+ obj-$(CONFIG_DM9000) += dm9000.o
+ obj-$(CONFIG_FEC_8XX) += fec_8xx/
++obj-$(CONFIG_FEC_MPC52xx) += fec_mpc52xx/
+
+ obj-$(CONFIG_MACB) += macb.o
+
+diff --git a/drivers/net/fec_mpc52xx/Kconfig b/drivers/net/fec_mpc52xx/Kconfig
+new file mode 100644
+index 0000000..098c3fa
+--- /dev/null
++++ b/drivers/net/fec_mpc52xx/Kconfig
+@@ -0,0 +1,23 @@
++menu "MPC5200 Networking Options"
++ depends PPC_MPC52xx && NET_ETHERNET
++
++config FEC_MPC52xx
++ bool "FEC Ethernet"
++ depends on NET_ETHERNET
++ select PPC_BESTCOMM
++ select CRC32
++ ---help---
++ This option enables support for the MPC5200's on-chip
++ Fast Ethernet Controller
++
++config USE_MDIO
++ bool " Use external Ethernet MII PHY"
++ select MII
++ depends FEC_MPC52xx
++ ---help---
++ The MPC5200's FEC can connect to the Ethernet either with
++ an external MII PHY chip or 10 Mbps 7-wire interface
++ (Motorola? industry standard).
++ If your board uses an external PHY, say y, else n.
++
++endmenu
+diff --git a/drivers/net/fec_mpc52xx/Makefile b/drivers/net/fec_mpc52xx/Makefile
+new file mode 100644
+index 0000000..b8ae05c
+--- /dev/null
++++ b/drivers/net/fec_mpc52xx/Makefile
+@@ -0,0 +1,2 @@
++obj-$(CONFIG_FEC_MPC52xx) += fec.o
++obj-$(CONFIG_USE_MDIO) += fec_phy.o
+diff --git a/drivers/net/fec_mpc52xx/fec.c b/drivers/net/fec_mpc52xx/fec.c
+new file mode 100644
+index 0000000..b5f1559
+--- /dev/null
++++ b/drivers/net/fec_mpc52xx/fec.c
+@@ -0,0 +1,768 @@
++/*
++ * drivers/net/fec_mpc52xx/fec.c
++ *
++ * Driver for the MPC5200 Fast Ethernet Controller
++ *
++ * Author: Dale Farnsworth <dfarnsworth@mvista.com>
++ *
++ * 2003-2004 (c) MontaVista, Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++
++#include <linux/module.h>
++
++#include <linux/kernel.h>
++#include <linux/types.h>
++#include <linux/spinlock.h>
++#include <linux/errno.h>
++#include <linux/init.h>
++#include <linux/crc32.h>
++
++#include <linux/netdevice.h>
++#include <linux/etherdevice.h>
++#include <linux/ethtool.h>
++#include <linux/skbuff.h>
++
++#include <asm/io.h>
++#include <asm/delay.h>
++#include <asm/ppcboot.h>
++#include <asm/mpc52xx.h>
++
++#include <syslib/bestcomm/bestcomm.h>
++#include <syslib/bestcomm/fec.h>
++
++#include "fec_phy.h"
++#include "fec.h"
++
++#define DRIVER_NAME "mpc52xx-fec"
++
++static irqreturn_t fec_interrupt(int, void *, struct pt_regs *);
++static irqreturn_t fec_rx_interrupt(int, void *, struct pt_regs *);
++static irqreturn_t fec_tx_interrupt(int, void *, struct pt_regs *);
++static struct net_device_stats *fec_get_stats(struct net_device *);
++static void fec_set_multicast_list(struct net_device *dev);
++static void fec_reinit(struct net_device *dev);
++
++static u8 mpc52xx_fec_mac_addr[6];
++static u8 null_mac[6];
++
++static void fec_tx_timeout(struct net_device *dev)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++
++ priv->stats.tx_errors++;
++
++ if (!priv->tx_full)
++ netif_wake_queue(dev);
++}
++
++static void fec_set_paddr(struct net_device *dev, u8 *mac)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct mpc52xx_fec *fec = priv->fec;
++
++ out_be32(&fec->paddr1, *(u32*)(&mac[0]));
++ out_be32(&fec->paddr2, (*(u16*)(&mac[4]) << 16) | 0x8808);
++}
++
++static void fec_get_paddr(struct net_device *dev, u8 *mac)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct mpc52xx_fec *fec = priv->fec;
++
++ *(u32*)(&mac[0]) = in_be32(&fec->paddr1);
++ *(u16*)(&mac[4]) = in_be32(&fec->paddr2) >> 16;
++}
++
++static int fec_set_mac_address(struct net_device *dev, void *addr)
++{
++ struct sockaddr *sock = (struct sockaddr *)addr;
++
++ memcpy(dev->dev_addr, sock->sa_data, dev->addr_len);
++
++ fec_set_paddr(dev, sock->sa_data);
++ return 0;
++}
++
++/* This function is called to start or restart the FEC during a link
++ * change. This happens on fifo errors or when switching between half
++ * and full duplex.
++ */
++static void fec_restart(struct net_device *dev, int duplex)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct mpc52xx_fec *fec = priv->fec;
++ u32 rcntrl;
++ u32 tcntrl;
++ int i;
++
++ out_be32(&fec->rfifo_status, in_be32(&fec->rfifo_status) & 0x700000);
++ out_be32(&fec->tfifo_status, in_be32(&fec->tfifo_status) & 0x700000);
++ out_be32(&fec->reset_cntrl, 0x1000000);
++
++ /* Whack a reset. We should wait for this. */
++ out_be32(&fec->ecntrl, FEC_ECNTRL_RESET);
++ for (i = 0; i < FEC_RESET_DELAY; ++i) {
++ if ((in_be32(&fec->ecntrl) & FEC_ECNTRL_RESET) == 0)
++ break;
++ udelay(1);
++ }
++ if (i == FEC_RESET_DELAY)
++ printk (KERN_ERR DRIVER_NAME ": FEC Reset timeout!\n");
++
++ /* Set station address. */
++ fec_set_paddr(dev, dev->dev_addr);
++
++ fec_set_multicast_list(dev);
++
++ rcntrl = FEC_RX_BUFFER_SIZE << 16; /* max frame length */
++ rcntrl |= FEC_RCNTRL_FCE;
++ rcntrl |= MII_RCNTL_MODE;
++ if (duplex)
++ tcntrl = FEC_TCNTRL_FDEN; /* FD enable */
++ else {
++ rcntrl |= FEC_RCNTRL_DRT;
++ tcntrl = 0;
++ }
++ out_be32(&fec->r_cntrl, rcntrl);
++ out_be32(&fec->x_cntrl, tcntrl);
++
++ set_phy_speed(fec, priv->phy_speed);
++
++ priv->full_duplex = duplex;
++
++ /* Clear any outstanding interrupt. */
++ out_be32(&fec->ievent, 0xffffffff); /* clear intr events */
++
++ /* Enable interrupts we wish to service.
++ */
++ out_be32(&fec->imask, FEC_IMASK_ENABLE);
++
++ /* And last, enable the transmit and receive processing.
++ */
++ out_be32(&fec->ecntrl, FEC_ECNTRL_ETHER_EN);
++ out_be32(&fec->r_des_active, 0x01000000);
++
++ /* The tx ring is no longer full. */
++ if (priv->tx_full)
++ {
++ priv->tx_full = 0;
++ netif_wake_queue(dev);
++ }
++}
++
++static void fec_free_rx_buffers(struct sdma *s)
++{
++ struct sk_buff *skb;
++
++ while (!sdma_queue_empty(s)) {
++ skb = sdma_retrieve_buffer(s, NULL);
++ kfree_skb(skb);
++ }
++}
++
++static int fec_open(struct net_device *dev)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct sk_buff *skb;
++ void *data;
++
++ sdma_fec_rx_init(priv->rx_sdma, priv->rx_fifo, FEC_RX_BUFFER_SIZE);
++ sdma_fec_tx_init(priv->tx_sdma, priv->tx_fifo);
++
++ while (!sdma_queue_full(priv->rx_sdma)) {
++ skb = dev_alloc_skb(FEC_RX_BUFFER_SIZE);
++ if (skb == 0)
++ goto eagain;
++
++ /* zero out the initial receive buffers to aid debugging */
++ memset(skb->data, 0, FEC_RX_BUFFER_SIZE);
++ data = (void *)virt_to_phys(skb->data);
++ sdma_submit_buffer(priv->rx_sdma, skb, data, FEC_RX_BUFFER_SIZE);
++ }
++
++ fec_set_paddr(dev, dev->dev_addr);
++
++ if (fec_mii_wait(dev) != 0)
++ return -ENODEV;
++
++ sdma_enable(priv->rx_sdma);
++ sdma_enable(priv->tx_sdma);
++
++ netif_start_queue(dev);
++
++ return 0;
++
++eagain:
++ printk(KERN_ERR "fec_open: failed\n");
++
++ fec_free_rx_buffers(priv->rx_sdma);
++
++ return -EAGAIN;
++}
++
++/* This will only be invoked if your driver is _not_ in XOFF state.
++ * What this means is that you need not check it, and that this
++ * invariant will hold if you make sure that the netif_*_queue()
++ * calls are done at the proper times.
++ */
++static int fec_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ void *data;
++
++ if (sdma_queue_full(priv->tx_sdma))
++ panic("MPC52xx transmit queue overrun\n");
++
++ spin_lock_irq(&priv->lock);
++ dev->trans_start = jiffies;
++
++ data = (void *)virt_to_phys(skb->data);
++ sdma_fec_tfd_submit_buffer(priv->tx_sdma, skb, data, skb->len);
++
++ if (sdma_queue_full(priv->tx_sdma)) {
++ priv->tx_full = 1;
++ netif_stop_queue(dev);
++ }
++ spin_unlock_irq(&priv->lock);
++
++ return 0;
++}
++
++/* This handles BestComm transmit task interrupts
++ */
++static irqreturn_t fec_tx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct net_device *dev = dev_id;
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct sk_buff *skb;
++
++ for (;;) {
++ sdma_clear_irq(priv->tx_sdma);
++ spin_lock(&priv->lock);
++ if (!sdma_buffer_done(priv->tx_sdma)) {
++ spin_unlock(&priv->lock);
++ break;
++ }
++ skb = sdma_retrieve_buffer(priv->tx_sdma, NULL);
++
++ if (priv->tx_full) {
++ priv->tx_full = 0;
++ netif_wake_queue(dev);
++ }
++ spin_unlock(&priv->lock);
++ dev_kfree_skb_irq(skb);
++ }
++
++ return IRQ_HANDLED;
++}
++
++static irqreturn_t fec_rx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct net_device *dev = dev_id;
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct sk_buff *skb;
++ struct sk_buff *rskb;
++ int status;
++
++ for (;;) {
++ sdma_clear_irq(priv->rx_sdma);
++
++ if (!sdma_buffer_done(priv->rx_sdma))
++ break;
++
++ rskb = sdma_retrieve_buffer(priv->rx_sdma, &status);
++
++ /* Test for errors in received frame */
++ if (status & 0x370000) {
++ /* Drop packet and reuse the buffer */
++ sdma_submit_buffer(
++ priv->rx_sdma, rskb,
++ (void *)virt_to_phys(rskb->data),
++ FEC_RX_BUFFER_SIZE );
++
++ priv->stats.rx_dropped++;
++
++ continue;
++ }
++
++ /* allocate replacement skb */
++ skb = dev_alloc_skb(FEC_RX_BUFFER_SIZE);
++ if (skb) {
++ /* Process the received skb */
++ int length = (status & ((1<<11) - 1)) - sizeof(u32);
++ skb_put(rskb, length); /* length included CRC32 */
++
++ rskb->dev = dev;
++ rskb->protocol = eth_type_trans(rskb, dev);
++ netif_rx(rskb);
++ dev->last_rx = jiffies;
++ } else {
++ /* Can't get a new one : reuse the same & drop pkt */
++ printk(KERN_NOTICE
++ "%s: Memory squeeze, dropping packet.\n",
++ dev->name);
++ priv->stats.rx_dropped++;
++
++ skb = rskb;
++ }
++
++ sdma_submit_buffer( priv->rx_sdma, skb,
++ (void *)virt_to_phys(skb->data), FEC_RX_BUFFER_SIZE );
++ }
++
++ return IRQ_HANDLED;
++}
++
++static irqreturn_t fec_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct net_device *dev = (struct net_device *)dev_id;
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct mpc52xx_fec *fec = priv->fec;
++ int ievent;
++
++ ievent = in_be32(&fec->ievent);
++ out_be32(&fec->ievent, ievent); /* clear pending events */
++
++ if (ievent & (FEC_IEVENT_RFIFO_ERROR | FEC_IEVENT_XFIFO_ERROR)) {
++ if (ievent & FEC_IEVENT_RFIFO_ERROR)
++ printk(KERN_WARNING "FEC_IEVENT_RFIFO_ERROR\n");
++ if (ievent & FEC_IEVENT_XFIFO_ERROR)
++ printk(KERN_WARNING "FEC_IEVENT_XFIFO_ERROR\n");
++ fec_reinit(dev);
++ }
++ else if (ievent & FEC_IEVENT_MII)
++ fec_mii(dev);
++ return IRQ_HANDLED;
++}
++
++static int fec_close(struct net_device *dev)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ unsigned long timeout;
++
++ priv->open_time = 0;
++ priv->sequence_done = 0;
++
++ netif_stop_queue(dev);
++
++ sdma_disable(priv->rx_sdma); /* disable receive task */
++
++ /* Wait for queues to drain */
++ timeout = jiffies + 2*HZ;
++ while (time_before(jiffies, timeout) &&
++ (!sdma_queue_empty(priv->tx_sdma) ||
++ !sdma_queue_empty(priv->rx_sdma))) {
++ set_current_state(TASK_INTERRUPTIBLE);
++ schedule_timeout(HZ/10);
++ }
++ if (time_after_eq(jiffies, timeout))
++ printk(KERN_ERR "fec_close: queues didn't drain\n");
++
++ sdma_disable(priv->tx_sdma);
++
++ fec_free_rx_buffers(priv->rx_sdma);
++
++ fec_get_stats(dev);
++
++ return 0;
++}
++
++/*
++ * Get the current statistics.
++ * This may be called with the card open or closed.
++ */
++static struct net_device_stats *fec_get_stats(struct net_device *dev)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct net_device_stats *stats = &priv->stats;
++ struct mpc52xx_fec *fec = priv->fec;
++
++ stats->rx_bytes = in_be32(&fec->rmon_r_octets);
++ stats->rx_packets = in_be32(&fec->rmon_r_packets);
++ stats->rx_errors = stats->rx_packets - in_be32(&fec->ieee_r_frame_ok);
++ stats->tx_bytes = in_be32(&fec->rmon_t_octets);
++ stats->tx_packets = in_be32(&fec->rmon_t_packets);
++ stats->tx_errors = stats->tx_packets - (
++ in_be32(&fec->ieee_t_frame_ok) +
++ in_be32(&fec->rmon_t_col) +
++ in_be32(&fec->ieee_t_1col) +
++ in_be32(&fec->ieee_t_mcol) +
++ in_be32(&fec->ieee_t_def));
++ stats->multicast = in_be32(&fec->rmon_r_mc_pkt);
++ stats->collisions = in_be32(&fec->rmon_t_col);
++
++ /* detailed rx_errors: */
++ stats->rx_length_errors = in_be32(&fec->rmon_r_undersize)
++ + in_be32(&fec->rmon_r_oversize)
++ + in_be32(&fec->rmon_r_frag)
++ + in_be32(&fec->rmon_r_jab);
++ stats->rx_over_errors = in_be32(&fec->r_macerr);
++ stats->rx_crc_errors = in_be32(&fec->ieee_r_crc);
++ stats->rx_frame_errors = in_be32(&fec->ieee_r_align);
++ stats->rx_fifo_errors = in_be32(&fec->rmon_r_drop);
++ stats->rx_missed_errors = in_be32(&fec->rmon_r_drop);
++
++ /* detailed tx_errors: */
++ stats->tx_aborted_errors = 0;
++ stats->tx_carrier_errors = in_be32(&fec->ieee_t_cserr);
++ stats->tx_fifo_errors = in_be32(&fec->rmon_t_drop);
++ stats->tx_heartbeat_errors = in_be32(&fec->ieee_t_sqe);
++ stats->tx_window_errors = in_be32(&fec->ieee_t_lcol);
++
++ return stats;
++}
++
++static void fec_update_stat(struct net_device *dev)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct net_device_stats *stats = &priv->stats;
++ struct mpc52xx_fec *fec = priv->fec;
++
++ out_be32(&fec->mib_control, FEC_MIB_DISABLE);
++ memset_io(&fec->rmon_t_drop, 0,
++ (u32)&fec->reserved10 - (u32)&fec->rmon_t_drop);
++ out_be32(&fec->mib_control, 0);
++ memset(stats, 0, sizeof *stats);
++ fec_get_stats(dev);
++}
++
++/*
++ * Set or clear the multicast filter for this adaptor.
++ */
++static void fec_set_multicast_list(struct net_device *dev)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct mpc52xx_fec *fec = priv->fec;
++ u32 rx_control;
++
++ rx_control = in_be32(&fec->r_cntrl);
++
++ if (dev->flags & IFF_PROMISC) {
++ rx_control |= FEC_RCNTRL_PROM;
++ out_be32(&fec->r_cntrl, rx_control);
++ } else {
++ rx_control &= ~FEC_RCNTRL_PROM;
++ out_be32(&fec->r_cntrl, rx_control);
++
++ if (dev->flags & IFF_ALLMULTI) {
++ out_be32(&fec->gaddr1, 0xffffffff);
++ out_be32(&fec->gaddr2, 0xffffffff);
++ } else {
++ u32 crc;
++ int i;
++ struct dev_mc_list *dmi;
++ u32 gaddr1 = 0x00000000;
++ u32 gaddr2 = 0x00000000;
++
++ dmi = dev->mc_list;
++ for (i=0; i<dev->mc_count; i++) {
++ crc = ether_crc_le(6, dmi->dmi_addr) >> 26;
++ if (crc >= 32)
++ gaddr1 |= 1 << (crc-32);
++ else
++ gaddr2 |= 1 << crc;
++ dmi = dmi->next;
++ }
++ out_be32(&fec->gaddr1, gaddr1);
++ out_be32(&fec->gaddr2, gaddr2);
++ }
++ }
++}
++
++static void __init fec_str2mac(char *str, unsigned char *mac)
++{
++ int i;
++ u64 val64;
++
++ val64 = simple_strtoull(str, NULL, 16);
++
++ for (i = 0; i < 6; i++)
++ mac[5-i] = val64 >> (i*8);
++}
++
++int __init mpc52xx_fec_mac_setup(char *mac_address)
++{
++ fec_str2mac(mac_address, mpc52xx_fec_mac_addr);
++ return 0;
++}
++
++__setup("mpc52xx-mac=", mpc52xx_fec_mac_setup);
++
++static void fec_hw_init(struct net_device *dev)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct mpc52xx_fec *fec = priv->fec;
++ bd_t *bd = (bd_t *) &__res;
++
++ out_be32(&fec->op_pause, 0x00010020);
++ out_be32(&fec->rfifo_cntrl, 0x0f000000);
++ out_be32(&fec->rfifo_alarm, 0x0000030c);
++ out_be32(&fec->tfifo_cntrl, 0x0f000000);
++ out_be32(&fec->tfifo_alarm, 0x00000100);
++ out_be32(&fec->x_wmrk, 0x3); /* xmit fifo watermark = 256 */
++ out_be32(&fec->xmit_fsm, 0x03000000); /* enable crc generation */
++ out_be32(&fec->iaddr1, 0x00000000); /* No individual filter */
++ out_be32(&fec->iaddr2, 0x00000000); /* No individual filter */
++
++ priv->phy_speed = ((bd->bi_ipbfreq >> 20) / 5) << 1;
++
++ fec_restart(dev, 0); /* always use half duplex mode only */
++ /*
++ * Read MIB counters in order to reset them,
++ * then zero all the stats fields in memory
++ */
++ fec_update_stat(dev);
++}
++
++
++static void fec_reinit(struct net_device *dev)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct mpc52xx_fec *fec = priv->fec;
++ static void fec_update_stat(struct net_device *);
++
++ netif_stop_queue(dev);
++ out_be32(&fec->imask, 0x0);
++
++ /* Disable the rx and tx tasks. */
++ sdma_disable(priv->rx_sdma);
++ sdma_disable(priv->tx_sdma);
++
++ /* Stop FEC */
++ out_be32(&fec->ecntrl, in_be32(&fec->ecntrl) & ~0x2);
++
++ /* Restart the DMA tasks */
++ sdma_fec_rx_init(priv->rx_sdma, priv->rx_fifo, FEC_RX_BUFFER_SIZE);
++ sdma_fec_tx_init(priv->tx_sdma, priv->tx_fifo);
++ fec_hw_init(dev);
++
++ if (priv->sequence_done) { /* redo the fec_open() */
++ fec_free_rx_buffers(priv->rx_sdma);
++ fec_open(dev);
++ }
++ return;
++}
++
++
++/* ======================================================================== */
++/* Platform Driver */
++/* ======================================================================== */
++
++static int __devinit
++mpc52xx_fec_probe(struct device *dev)
++{
++ int ret;
++ struct platform_device *pdev = to_platform_device(dev);
++ struct net_device *ndev;
++ struct fec_priv *priv = NULL;
++ struct resource *mem;
++
++ volatile int dbg=0;
++ while(dbg)
++ __asm("nop");
++ /* Reserve FEC control zone */
++ mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if ((mem->end - mem->start + 1) != sizeof(struct mpc52xx_fec)) {
++ printk(KERN_ERR DRIVER_NAME
++ " - invalid resource size (%lx != %x), check mpc52xx_devices.c\n",
++ mem->end - mem->start + 1, sizeof(struct mpc52xx_fec));
++ return -EINVAL;
++ }
++
++ if (!request_mem_region(mem->start, sizeof(struct mpc52xx_fec),
++ DRIVER_NAME))
++ return -EBUSY;
++
++ /* Get the ether ndev & it's private zone */
++ ndev = alloc_etherdev(sizeof(struct fec_priv));
++ if (!ndev) {
++ ret = -ENOMEM;
++ goto probe_error;
++ }
++
++ priv = (struct fec_priv *)ndev->priv;
++
++ /* Init ether ndev with what we have */
++ ndev->open = fec_open;
++ ndev->stop = fec_close;
++ ndev->hard_start_xmit = fec_hard_start_xmit;
++ ndev->do_ioctl = fec_ioctl;
++ ndev->get_stats = fec_get_stats;
++ ndev->set_mac_address = fec_set_mac_address;
++ ndev->set_multicast_list = fec_set_multicast_list;
++ ndev->tx_timeout = fec_tx_timeout;
++ ndev->watchdog_timeo = FEC_WATCHDOG_TIMEOUT;
++ ndev->flags &= ~IFF_RUNNING;
++ ndev->base_addr = mem->start;
++
++ priv->rx_fifo = ndev->base_addr + FIELD_OFFSET(mpc52xx_fec,rfifo_data);
++ priv->tx_fifo = ndev->base_addr + FIELD_OFFSET(mpc52xx_fec,tfifo_data);
++ priv->t_irq = priv->r_irq = ndev->irq = -1; /* IRQ are free for now */
++
++ spin_lock_init(&priv->lock);
++
++ /* ioremap the zones */
++ priv->fec = (struct mpc52xx_fec *)
++ ioremap(mem->start, sizeof(struct mpc52xx_fec));
++
++ if (!priv->fec) {
++ ret = -ENOMEM;
++ goto probe_error;
++ }
++
++ /* SDMA init */
++ priv->rx_sdma = sdma_alloc(FEC_RX_NUM_BD);
++ priv->tx_sdma = sdma_alloc(FEC_TX_NUM_BD);
++
++ if (!priv->rx_sdma || !priv->tx_sdma) {
++ ret = -ENOMEM;
++ goto probe_error;
++ }
++
++ ret = sdma_fec_rx_init(priv->rx_sdma, priv->rx_fifo,FEC_RX_BUFFER_SIZE);
++ if (ret < 0)
++ goto probe_error;
++
++ ret = sdma_fec_tx_init(priv->tx_sdma, priv->tx_fifo);
++ if (ret < 0)
++ goto probe_error;
++
++ /* Get the IRQ we need one by one */
++ /* Control */
++ ndev->irq = platform_get_irq(pdev, 0);
++ if (request_irq(ndev->irq, &fec_interrupt, SA_INTERRUPT,
++ DRIVER_NAME "_ctrl", ndev)) {
++ printk(KERN_ERR DRIVER_NAME ": ctrl interrupt request failed\n");
++ ret = -EBUSY;
++ ndev->irq = -1; /* Don't try to free it */
++ goto probe_error;
++ }
++
++ /* RX */
++ priv->r_irq = sdma_irq(priv->rx_sdma);
++ if (request_irq(priv->r_irq, &fec_rx_interrupt, SA_INTERRUPT,
++ DRIVER_NAME "_rx", ndev)) {
++ printk(KERN_ERR DRIVER_NAME ": rx interrupt request failed\n");
++ ret = -EBUSY;
++ priv->r_irq = -1; /* Don't try to free it */
++ goto probe_error;
++ }
++
++ /* TX */
++ priv->t_irq = sdma_irq(priv->tx_sdma);
++ if (request_irq(priv->t_irq, &fec_tx_interrupt, SA_INTERRUPT,
++ DRIVER_NAME "_tx", ndev)) {
++ printk(KERN_ERR DRIVER_NAME ": tx interrupt request failed\n");
++ ret = -EBUSY;
++ priv->t_irq = -1; /* Don't try to free it */
++ goto probe_error;
++ }
++
++ /* MAC address init */
++ if (memcmp(mpc52xx_fec_mac_addr, null_mac, 6) != 0)
++ memcpy(ndev->dev_addr, mpc52xx_fec_mac_addr, 6);
++ else
++ fec_get_paddr(ndev, ndev->dev_addr);
++
++ /* Hardware init */
++ fec_hw_init(ndev);
++
++ /* Register the new network device */
++ ret = register_netdev(ndev);
++ if(ret < 0)
++ goto probe_error;
++
++ /* MII init : After register ???? */
++ fec_mii_init(ndev);
++
++ /* We're done ! */
++ dev_set_drvdata(dev, ndev);
++
++ return 0;
++
++
++ /* Error handling - free everything that might be allocated */
++probe_error:
++
++ if (ndev) {
++ if (priv->rx_sdma) sdma_free(priv->rx_sdma);
++ if (priv->tx_sdma) sdma_free(priv->tx_sdma);
++
++ if (ndev->irq >= 0) free_irq(ndev->irq, ndev);
++ if (priv->r_irq >= 0) free_irq(priv->r_irq, ndev);
++ if (priv->t_irq >= 0) free_irq(priv->t_irq, ndev);
++
++ if (priv->fec) iounmap(priv->fec);
++
++ free_netdev(ndev);
++ }
++
++ release_mem_region(mem->start, sizeof(struct mpc52xx_fec));
++
++ return ret;
++}
++
++static int
++mpc52xx_fec_remove(struct device *dev)
++{
++ struct net_device *ndev;
++ struct fec_priv *priv;
++
++ ndev = (struct net_device *) dev_get_drvdata(dev);
++ if (!ndev)
++ return 0;
++ priv = (struct fec_priv *) ndev->priv;
++
++ unregister_netdev(ndev);
++
++ free_irq(ndev->irq, ndev);
++ free_irq(priv->r_irq, ndev);
++ free_irq(priv->t_irq, ndev);
++
++ iounmap(priv->fec);
++
++ release_mem_region(ndev->base_addr, sizeof(struct mpc52xx_fec));
++
++ free_netdev(ndev);
++
++ dev_set_drvdata(dev, NULL);
++ return 0;
++}
++
++static struct device_driver mpc52xx_fec_driver = {
++ .name = DRIVER_NAME,
++ .bus = &platform_bus_type,
++ .probe = mpc52xx_fec_probe,
++ .remove = mpc52xx_fec_remove,
++#ifdef CONFIG_PM
++/* .suspend = mpc52xx_fec_suspend, TODO */
++/* .resume = mpc52xx_fec_resume, TODO */
++#endif
++};
++
++/* ======================================================================== */
++/* Module */
++/* ======================================================================== */
++
++static int __init
++mpc52xx_fec_init(void)
++{
++ return driver_register(&mpc52xx_fec_driver);
++}
++
++static void __exit
++mpc52xx_fec_exit(void)
++{
++ driver_unregister(&mpc52xx_fec_driver);
++}
++
++
++module_init(mpc52xx_fec_init);
++module_exit(mpc52xx_fec_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Dale Farnsworth");
++MODULE_DESCRIPTION("Ethernet driver for the Freescale MPC52xx FEC");
+diff --git a/drivers/net/fec_mpc52xx/fec.h b/drivers/net/fec_mpc52xx/fec.h
+new file mode 100644
+index 0000000..f9eed36
+--- /dev/null
++++ b/drivers/net/fec_mpc52xx/fec.h
+@@ -0,0 +1,308 @@
++/*
++ * drivers/net/fec_mpc52xx/fec.h
++ *
++ * Driver for the MPC5200 Fast Ethernet Controller
++ *
++ * Author: Dale Farnsworth <dfarnsworth@mvista.com>
++ *
++ * 2003-2004 (c) MontaVista, Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++
++#ifndef __DRIVERS_NET_MPC52XX_FEC_H__
++#define __DRIVERS_NET_MPC52XX_FEC_H__
++
++/* Tunable constant */
++/* FEC_RX_BUFFER_SIZE includes 4 bytes for CRC32 */
++#define FEC_RX_BUFFER_SIZE 1522 /* max receive packet size */
++#define FEC_RX_NUM_BD 64
++#define FEC_TX_NUM_BD 64
++
++#define FEC_RESET_DELAY 50 /* uS */
++
++#define FEC_WATCHDOG_TIMEOUT ((400*HZ)/1000)
++
++struct fec_priv {
++ int full_duplex;
++ int tx_full;
++ int r_irq;
++ int t_irq;
++ u32 last_transmit_time;
++ struct mpc52xx_fec *fec;
++ struct sdma *rx_sdma;
++ struct sdma *tx_sdma;
++ spinlock_t lock;
++ unsigned long open_time;
++ struct net_device_stats stats;
++#ifdef CONFIG_USE_MDIO
++ uint phy_id;
++ uint phy_id_done;
++ uint phy_status;
++ uint phy_speed;
++ phy_info_t *phy;
++ struct tasklet_struct phy_task;
++ uint sequence_done;
++ uint phy_addr;
++ struct timer_list phy_timer_list;
++ u16 old_status;
++ phys_addr_t rx_fifo;
++ phys_addr_t tx_fifo;
++#endif /* CONFIG_USE_MDIO */
++};
++
++
++/* ======================================================================== */
++/* Hardware register sets & bits */
++/* ======================================================================== */
++
++struct mpc52xx_fec {
++ u32 fec_id; /* FEC + 0x000 */
++ u32 ievent; /* FEC + 0x004 */
++ u32 imask; /* FEC + 0x008 */
++
++ u32 reserved0[1]; /* FEC + 0x00C */
++ u32 r_des_active; /* FEC + 0x010 */
++ u32 x_des_active; /* FEC + 0x014 */
++ u32 r_des_active_cl; /* FEC + 0x018 */
++ u32 x_des_active_cl; /* FEC + 0x01C */
++ u32 ivent_set; /* FEC + 0x020 */
++ u32 ecntrl; /* FEC + 0x024 */
++
++ u32 reserved1[6]; /* FEC + 0x028-03C */
++ u32 mii_data; /* FEC + 0x040 */
++ u32 mii_speed; /* FEC + 0x044 */
++ u32 mii_status; /* FEC + 0x048 */
++
++ u32 reserved2[5]; /* FEC + 0x04C-05C */
++ u32 mib_data; /* FEC + 0x060 */
++ u32 mib_control; /* FEC + 0x064 */
++
++ u32 reserved3[6]; /* FEC + 0x068-7C */
++ u32 r_activate; /* FEC + 0x080 */
++ u32 r_cntrl; /* FEC + 0x084 */
++ u32 r_hash; /* FEC + 0x088 */
++ u32 r_data; /* FEC + 0x08C */
++ u32 ar_done; /* FEC + 0x090 */
++ u32 r_test; /* FEC + 0x094 */
++ u32 r_mib; /* FEC + 0x098 */
++ u32 r_da_low; /* FEC + 0x09C */
++ u32 r_da_high; /* FEC + 0x0A0 */
++
++ u32 reserved4[7]; /* FEC + 0x0A4-0BC */
++ u32 x_activate; /* FEC + 0x0C0 */
++ u32 x_cntrl; /* FEC + 0x0C4 */
++ u32 backoff; /* FEC + 0x0C8 */
++ u32 x_data; /* FEC + 0x0CC */
++ u32 x_status; /* FEC + 0x0D0 */
++ u32 x_mib; /* FEC + 0x0D4 */
++ u32 x_test; /* FEC + 0x0D8 */
++ u32 fdxfc_da1; /* FEC + 0x0DC */
++ u32 fdxfc_da2; /* FEC + 0x0E0 */
++ u32 paddr1; /* FEC + 0x0E4 */
++ u32 paddr2; /* FEC + 0x0E8 */
++ u32 op_pause; /* FEC + 0x0EC */
++
++ u32 reserved5[4]; /* FEC + 0x0F0-0FC */
++ u32 instr_reg; /* FEC + 0x100 */
++ u32 context_reg; /* FEC + 0x104 */
++ u32 test_cntrl; /* FEC + 0x108 */
++ u32 acc_reg; /* FEC + 0x10C */
++ u32 ones; /* FEC + 0x110 */
++ u32 zeros; /* FEC + 0x114 */
++ u32 iaddr1; /* FEC + 0x118 */
++ u32 iaddr2; /* FEC + 0x11C */
++ u32 gaddr1; /* FEC + 0x120 */
++ u32 gaddr2; /* FEC + 0x124 */
++ u32 random; /* FEC + 0x128 */
++ u32 rand1; /* FEC + 0x12C */
++ u32 tmp; /* FEC + 0x130 */
++
++ u32 reserved6[3]; /* FEC + 0x134-13C */
++ u32 fifo_id; /* FEC + 0x140 */
++ u32 x_wmrk; /* FEC + 0x144 */
++ u32 fcntrl; /* FEC + 0x148 */
++ u32 r_bound; /* FEC + 0x14C */
++ u32 r_fstart; /* FEC + 0x150 */
++ u32 r_count; /* FEC + 0x154 */
++ u32 r_lag; /* FEC + 0x158 */
++ u32 r_read; /* FEC + 0x15C */
++ u32 r_write; /* FEC + 0x160 */
++ u32 x_count; /* FEC + 0x164 */
++ u32 x_lag; /* FEC + 0x168 */
++ u32 x_retry; /* FEC + 0x16C */
++ u32 x_write; /* FEC + 0x170 */
++ u32 x_read; /* FEC + 0x174 */
++
++ u32 reserved7[2]; /* FEC + 0x178-17C */
++ u32 fm_cntrl; /* FEC + 0x180 */
++ u32 rfifo_data; /* FEC + 0x184 */
++ u32 rfifo_status; /* FEC + 0x188 */
++ u32 rfifo_cntrl; /* FEC + 0x18C */
++ u32 rfifo_lrf_ptr; /* FEC + 0x190 */
++ u32 rfifo_lwf_ptr; /* FEC + 0x194 */
++ u32 rfifo_alarm; /* FEC + 0x198 */
++ u32 rfifo_rdptr; /* FEC + 0x19C */
++ u32 rfifo_wrptr; /* FEC + 0x1A0 */
++ u32 tfifo_data; /* FEC + 0x1A4 */
++ u32 tfifo_status; /* FEC + 0x1A8 */
++ u32 tfifo_cntrl; /* FEC + 0x1AC */
++ u32 tfifo_lrf_ptr; /* FEC + 0x1B0 */
++ u32 tfifo_lwf_ptr; /* FEC + 0x1B4 */
++ u32 tfifo_alarm; /* FEC + 0x1B8 */
++ u32 tfifo_rdptr; /* FEC + 0x1BC */
++ u32 tfifo_wrptr; /* FEC + 0x1C0 */
++
++ u32 reset_cntrl; /* FEC + 0x1C4 */
++ u32 xmit_fsm; /* FEC + 0x1C8 */
++
++ u32 reserved8[3]; /* FEC + 0x1CC-1D4 */
++ u32 rdes_data0; /* FEC + 0x1D8 */
++ u32 rdes_data1; /* FEC + 0x1DC */
++ u32 r_length; /* FEC + 0x1E0 */
++ u32 x_length; /* FEC + 0x1E4 */
++ u32 x_addr; /* FEC + 0x1E8 */
++ u32 cdes_data; /* FEC + 0x1EC */
++ u32 status; /* FEC + 0x1F0 */
++ u32 dma_control; /* FEC + 0x1F4 */
++ u32 des_cmnd; /* FEC + 0x1F8 */
++ u32 data; /* FEC + 0x1FC */
++
++ u32 rmon_t_drop; /* FEC + 0x200 */
++ u32 rmon_t_packets; /* FEC + 0x204 */
++ u32 rmon_t_bc_pkt; /* FEC + 0x208 */
++ u32 rmon_t_mc_pkt; /* FEC + 0x20C */
++ u32 rmon_t_crc_align; /* FEC + 0x210 */
++ u32 rmon_t_undersize; /* FEC + 0x214 */
++ u32 rmon_t_oversize; /* FEC + 0x218 */
++ u32 rmon_t_frag; /* FEC + 0x21C */
++ u32 rmon_t_jab; /* FEC + 0x220 */
++ u32 rmon_t_col; /* FEC + 0x224 */
++ u32 rmon_t_p64; /* FEC + 0x228 */
++ u32 rmon_t_p65to127; /* FEC + 0x22C */
++ u32 rmon_t_p128to255; /* FEC + 0x230 */
++ u32 rmon_t_p256to511; /* FEC + 0x234 */
++ u32 rmon_t_p512to1023; /* FEC + 0x238 */
++ u32 rmon_t_p1024to2047; /* FEC + 0x23C */
++ u32 rmon_t_p_gte2048; /* FEC + 0x240 */
++ u32 rmon_t_octets; /* FEC + 0x244 */
++ u32 ieee_t_drop; /* FEC + 0x248 */
++ u32 ieee_t_frame_ok; /* FEC + 0x24C */
++ u32 ieee_t_1col; /* FEC + 0x250 */
++ u32 ieee_t_mcol; /* FEC + 0x254 */
++ u32 ieee_t_def; /* FEC + 0x258 */
++ u32 ieee_t_lcol; /* FEC + 0x25C */
++ u32 ieee_t_excol; /* FEC + 0x260 */
++ u32 ieee_t_macerr; /* FEC + 0x264 */
++ u32 ieee_t_cserr; /* FEC + 0x268 */
++ u32 ieee_t_sqe; /* FEC + 0x26C */
++ u32 t_fdxfc; /* FEC + 0x270 */
++ u32 ieee_t_octets_ok; /* FEC + 0x274 */
++
++ u32 reserved9[2]; /* FEC + 0x278-27C */
++ u32 rmon_r_drop; /* FEC + 0x280 */
++ u32 rmon_r_packets; /* FEC + 0x284 */
++ u32 rmon_r_bc_pkt; /* FEC + 0x288 */
++ u32 rmon_r_mc_pkt; /* FEC + 0x28C */
++ u32 rmon_r_crc_align; /* FEC + 0x290 */
++ u32 rmon_r_undersize; /* FEC + 0x294 */
++ u32 rmon_r_oversize; /* FEC + 0x298 */
++ u32 rmon_r_frag; /* FEC + 0x29C */
++ u32 rmon_r_jab; /* FEC + 0x2A0 */
++
++ u32 rmon_r_resvd_0; /* FEC + 0x2A4 */
++
++ u32 rmon_r_p64; /* FEC + 0x2A8 */
++ u32 rmon_r_p65to127; /* FEC + 0x2AC */
++ u32 rmon_r_p128to255; /* FEC + 0x2B0 */
++ u32 rmon_r_p256to511; /* FEC + 0x2B4 */
++ u32 rmon_r_p512to1023; /* FEC + 0x2B8 */
++ u32 rmon_r_p1024to2047; /* FEC + 0x2BC */
++ u32 rmon_r_p_gte2048; /* FEC + 0x2C0 */
++ u32 rmon_r_octets; /* FEC + 0x2C4 */
++ u32 ieee_r_drop; /* FEC + 0x2C8 */
++ u32 ieee_r_frame_ok; /* FEC + 0x2CC */
++ u32 ieee_r_crc; /* FEC + 0x2D0 */
++ u32 ieee_r_align; /* FEC + 0x2D4 */
++ u32 r_macerr; /* FEC + 0x2D8 */
++ u32 r_fdxfc; /* FEC + 0x2DC */
++ u32 ieee_r_octets_ok; /* FEC + 0x2E0 */
++
++ u32 reserved10[7]; /* FEC + 0x2E4-2FC */
++
++ u32 reserved11[64]; /* FEC + 0x300-3FF */
++};
++
++#define FEC_MIB_DISABLE 0x80000000
++
++#define FEC_IEVENT_HBERR 0x80000000
++#define FEC_IEVENT_BABR 0x40000000
++#define FEC_IEVENT_BABT 0x20000000
++#define FEC_IEVENT_GRA 0x10000000
++#define FEC_IEVENT_TFINT 0x08000000
++#define FEC_IEVENT_MII 0x00800000
++#define FEC_IEVENT_LATE_COL 0x00200000
++#define FEC_IEVENT_COL_RETRY_LIM 0x00100000
++#define FEC_IEVENT_XFIFO_UN 0x00080000
++#define FEC_IEVENT_XFIFO_ERROR 0x00040000
++#define FEC_IEVENT_RFIFO_ERROR 0x00020000
++
++#define FEC_IMASK_HBERR 0x80000000
++#define FEC_IMASK_BABR 0x40000000
++#define FEC_IMASK_BABT 0x20000000
++#define FEC_IMASK_GRA 0x10000000
++#define FEC_IMASK_MII 0x00800000
++#define FEC_IMASK_LATE_COL 0x00200000
++#define FEC_IMASK_COL_RETRY_LIM 0x00100000
++#define FEC_IMASK_XFIFO_UN 0x00080000
++#define FEC_IMASK_XFIFO_ERROR 0x00040000
++#define FEC_IMASK_RFIFO_ERROR 0x00020000
++
++#define FEC_RCNTRL_MAX_FL_SHIFT 16
++#define FEC_RCNTRL_LOOP 0x01
++#define FEC_RCNTRL_DRT 0x02
++#define FEC_RCNTRL_MII_MODE 0x04
++#define FEC_RCNTRL_PROM 0x08
++#define FEC_RCNTRL_BC_REJ 0x10
++#define FEC_RCNTRL_FCE 0x20
++
++#define FEC_TCNTRL_GTS 0x00000001
++#define FEC_TCNTRL_HBC 0x00000002
++#define FEC_TCNTRL_FDEN 0x00000004
++#define FEC_TCNTRL_TFC_PAUSE 0x00000008
++#define FEC_TCNTRL_RFC_PAUSE 0x00000010
++
++#define FEC_ECNTRL_RESET 0x00000001
++#define FEC_ECNTRL_ETHER_EN 0x00000002
++
++struct mibCounters {
++ unsigned int byteReceived;
++ unsigned int byteSent;
++ unsigned int framesReceived;
++ unsigned int framesSent;
++ unsigned int totalByteReceived;
++ unsigned int totalFramesReceived;
++ unsigned int broadcastFramesReceived;
++ unsigned int multicastFramesReceived;
++ unsigned int cRCError;
++ unsigned int oversizeFrames;
++ unsigned int fragments;
++ unsigned int jabber;
++ unsigned int collision;
++ unsigned int lateCollision;
++ unsigned int frames64;
++ unsigned int frames65_127;
++ unsigned int frames128_255;
++ unsigned int frames256_511;
++ unsigned int frames512_1023;
++ unsigned int frames1024_MaxSize;
++ unsigned int macRxError;
++ unsigned int droppedFrames;
++ unsigned int outMulticastFrames;
++ unsigned int outBroadcastFrames;
++ unsigned int undersizeFrames;
++};
++
++
++#endif /* __DRIVERS_NET_MPC52XX_FEC_H__ */
+diff --git a/drivers/net/fec_mpc52xx/fec_phy.c b/drivers/net/fec_mpc52xx/fec_phy.c
+new file mode 100644
+index 0000000..2a287de
+--- /dev/null
++++ b/drivers/net/fec_mpc52xx/fec_phy.c
+@@ -0,0 +1,526 @@
++/*
++ * arch/ppc/52xx_io/fec_phy.c
++ *
++ * Driver for the MPC5200 Fast Ethernet Controller
++ * Based heavily on the MII support for the MPC8xx by Dan Malek
++ *
++ * Author: Dale Farnsworth <dfarnsworth@mvista.com>
++ *
++ * 2003-2004 (c) MontaVista, Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++
++#include <linux/kernel.h>
++#include <linux/types.h>
++#include <linux/netdevice.h>
++#include <linux/mii.h>
++#include <linux/ethtool.h>
++#include <linux/mii.h>
++#include <asm/io.h>
++#include <asm/mpc52xx.h>
++#include <syslib/bestcomm/bestcomm.h>
++#include <syslib/bestcomm/fec.h>
++#include "fec_phy.h"
++#include "fec.h"
++
++static int mpc52xx_netdev_ethtool_ioctl(struct net_device *dev, void *useraddr);
++
++/* MII processing. We keep this as simple as possible. Requests are
++ * placed on the list (if there is room). When the request is finished
++ * by the MII, an optional function may be called.
++ */
++typedef struct mii_list {
++ uint mii_regval;
++ void (*mii_func)(uint val, struct net_device *dev, uint data);
++ struct mii_list *mii_next;
++ uint mii_data;
++} mii_list_t;
++
++#define NMII 20
++mii_list_t mii_cmds[NMII];
++mii_list_t *mii_free;
++mii_list_t *mii_head;
++mii_list_t *mii_tail;
++
++typedef struct mdio_read_data {
++ __u16 regval;
++ struct task_struct *sleeping_task;
++} mdio_read_data_t;
++
++static int mii_queue(struct net_device *dev, int request,
++ void (*func)(uint, struct net_device *, uint), uint data);
++
++/* Make MII read/write commands for the FEC.
++ * */
++#define mk_mii_read(REG) (0x60020000 | ((REG & 0x1f) << 18))
++#define mk_mii_write(REG, VAL) (0x50020000 | ((REG & 0x1f) << 18) | \
++ (VAL & 0xffff))
++#define mk_mii_end 0
++
++/* Register definitions for the PHY.
++*/
++
++#define MII_REG_CR 0 /* Control Register */
++#define MII_REG_SR 1 /* Status Register */
++#define MII_REG_PHYIR1 2 /* PHY Identification Register 1 */
++#define MII_REG_PHYIR2 3 /* PHY Identification Register 2 */
++#define MII_REG_ANAR 4 /* A-N Advertisement Register */
++#define MII_REG_ANLPAR 5 /* A-N Link Partner Ability Register */
++#define MII_REG_ANER 6 /* A-N Expansion Register */
++#define MII_REG_ANNPTR 7 /* A-N Next Page Transmit Register */
++#define MII_REG_ANLPRNPR 8 /* A-N Link Partner Received Next Page Reg. */
++
++/* values for phy_status */
++
++#define PHY_CONF_ANE 0x0001 /* 1 auto-negotiation enabled */
++#define PHY_CONF_LOOP 0x0002 /* 1 loopback mode enabled */
++#define PHY_CONF_SPMASK 0x00f0 /* mask for speed */
++#define PHY_CONF_10HDX 0x0010 /* 10 Mbit half duplex supported */
++#define PHY_CONF_10FDX 0x0020 /* 10 Mbit full duplex supported */
++#define PHY_CONF_100HDX 0x0040 /* 100 Mbit half duplex supported */
++#define PHY_CONF_100FDX 0x0080 /* 100 Mbit full duplex supported */
++
++#define PHY_STAT_LINK 0x0100 /* 1 up - 0 down */
++#define PHY_STAT_FAULT 0x0200 /* 1 remote fault */
++#define PHY_STAT_ANC 0x0400 /* 1 auto-negotiation complete */
++#define PHY_STAT_SPMASK 0xf000 /* mask for speed */
++#define PHY_STAT_10HDX 0x1000 /* 10 Mbit half duplex selected */
++#define PHY_STAT_10FDX 0x2000 /* 10 Mbit full duplex selected */
++#define PHY_STAT_100HDX 0x4000 /* 100 Mbit half duplex selected */
++#define PHY_STAT_100FDX 0x8000 /* 100 Mbit full duplex selected */
++
++void fec_mii(struct net_device *dev)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct mpc52xx_fec *fec = priv->fec;
++ mii_list_t *mip;
++ uint mii_reg;
++
++ mii_reg = in_be32(&fec->mii_data);
++
++ if ((mip = mii_head) == NULL) {
++ printk(KERN_ERR "MII and no head!\n");
++ return;
++ }
++
++ if (mip->mii_func != NULL)
++ (*(mip->mii_func))(mii_reg, dev, mip->mii_data);
++
++ mii_head = mip->mii_next;
++ mip->mii_next = mii_free;
++ mii_free = mip;
++
++ if ((mip = mii_head) != NULL)
++ out_be32(&fec->mii_data, mip->mii_regval);
++}
++
++static int mii_queue(struct net_device *dev, int regval,
++ void (*func)(uint, struct net_device *, uint),
++ uint data)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ struct mpc52xx_fec *fec = priv->fec;
++ mii_list_t *mip;
++ int retval;
++
++ /* Add PHY address to register command.
++ */
++ regval |= priv->phy_addr << 23;
++
++ retval = 0;
++
++ if ((mip = mii_free) != NULL) {
++ mii_free = mip->mii_next;
++ mip->mii_regval = regval;
++ mip->mii_func = func;
++ mip->mii_next = NULL;
++ mip->mii_data = data;
++ if (mii_head) {
++ mii_tail->mii_next = mip;
++ mii_tail = mip;
++ } else {
++ mii_head = mii_tail = mip;
++ out_be32(&fec->mii_data, regval);
++ }
++ } else
++ retval = 1;
++
++ return retval;
++}
++
++static void mii_do_cmd(struct net_device *dev, const phy_cmd_t *c)
++{
++ int k;
++
++ if (!c)
++ return;
++
++ for (k = 0; (c+k)->mii_data != mk_mii_end; k++)
++ mii_queue(dev, (c+k)->mii_data, (c+k)->funct, 0);
++}
++
++static void mii_parse_sr(uint mii_reg, struct net_device *dev, uint data)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ uint s = priv->phy_status;
++
++ s &= ~(PHY_STAT_LINK | PHY_STAT_FAULT | PHY_STAT_ANC);
++
++ if (mii_reg & 0x0004)
++ s |= PHY_STAT_LINK;
++ if (mii_reg & 0x0010)
++ s |= PHY_STAT_FAULT;
++ if (mii_reg & 0x0020)
++ s |= PHY_STAT_ANC;
++
++ priv->phy_status = s;
++}
++
++static void mii_parse_cr(uint mii_reg, struct net_device *dev, uint data)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ uint s = priv->phy_status;
++
++ s &= ~(PHY_CONF_ANE | PHY_CONF_LOOP);
++
++ if (mii_reg & 0x1000)
++ s |= PHY_CONF_ANE;
++ if (mii_reg & 0x4000)
++ s |= PHY_CONF_LOOP;
++
++ priv->phy_status = s;
++}
++
++static void mii_parse_anar(uint mii_reg, struct net_device *dev, uint data)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ uint s = priv->phy_status;
++
++ s &= ~(PHY_CONF_SPMASK);
++
++ if (mii_reg & 0x0020)
++ s |= PHY_CONF_10HDX;
++ if (mii_reg & 0x0040)
++ s |= PHY_CONF_10FDX;
++ if (mii_reg & 0x0080)
++ s |= PHY_CONF_100HDX;
++ if (mii_reg & 0x0100)
++ s |= PHY_CONF_100FDX;
++
++ priv->phy_status = s;
++}
++
++/* ------------------------------------------------------------------------- */
++/* Generic PHY support. Should work for all PHYs, but does not support link
++ * change interrupts.
++ */
++static phy_info_t phy_info_generic = {
++ 0x00000000, /* 0-->match any PHY */
++ "GENERIC",
++
++ (const phy_cmd_t []) { /* config */
++ /* advertise only half-duplex capabilities */
++ { mk_mii_write(MII_ADVERTISE, MII_ADVERTISE_HALF),
++ mii_parse_anar },
++
++ /* enable auto-negotiation */
++ { mk_mii_write(MII_BMCR, BMCR_ANENABLE), mii_parse_cr },
++ { mk_mii_end, }
++ },
++ (const phy_cmd_t []) { /* startup */
++ /* restart auto-negotiation */
++ { mk_mii_write(MII_BMCR, (BMCR_ANENABLE | BMCR_ANRESTART)),
++ NULL },
++ { mk_mii_end, }
++ },
++ (const phy_cmd_t []) { /* ack_int */
++ /* We don't actually use the ack_int table with a generic
++ * PHY, but putting a reference to mii_parse_sr here keeps
++ * us from getting a compiler warning about unused static
++ * functions in the case where we only compile in generic
++ * PHY support.
++ */
++ { mk_mii_read(MII_BMSR), mii_parse_sr },
++ { mk_mii_end, }
++ },
++ (const phy_cmd_t []) { /* shutdown */
++ { mk_mii_end, }
++ },
++};
++/* -------------------------------------------------------------------- */
++
++/* register definitions for the 971 */
++
++#define MII_LXT971_PCR 16 /* Port Control Register */
++#define MII_LXT971_SR2 17 /* Status Register 2 */
++#define MII_LXT971_IER 18 /* Interrupt Enable Register */
++#define MII_LXT971_ISR 19 /* Interrupt Status Register */
++#define MII_LXT971_LCR 20 /* LED Control Register */
++#define MII_LXT971_TCR 30 /* Transmit Control Register */
++
++static void mii_parse_lxt971_sr2(uint mii_reg, struct net_device *dev, uint data)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ uint s = priv->phy_status;
++
++ s &= ~(PHY_STAT_SPMASK);
++
++ if (mii_reg & 0x4000) {
++ if (mii_reg & 0x0200)
++ s |= PHY_STAT_100FDX;
++ else
++ s |= PHY_STAT_100HDX;
++ } else {
++ if (mii_reg & 0x0200)
++ s |= PHY_STAT_10FDX;
++ else
++ s |= PHY_STAT_10HDX;
++ }
++ if (mii_reg & 0x0008)
++ s |= PHY_STAT_FAULT;
++
++ priv->phy_status = s;
++}
++
++static phy_info_t phy_info_lxt971 = {
++ 0x0001378e,
++ "LXT971",
++
++ (const phy_cmd_t []) { /* config */
++ { mk_mii_write(MII_REG_ANAR, 0x0A1), NULL }, /* 10/100, HD */
++ { mk_mii_read(MII_REG_CR), mii_parse_cr },
++ { mk_mii_read(MII_REG_ANAR), mii_parse_anar },
++ { mk_mii_end, }
++ },
++ (const phy_cmd_t []) { /* startup - enable interrupts */
++ { mk_mii_write(MII_LXT971_IER, 0x00f2), NULL },
++ { mk_mii_write(MII_REG_CR, 0x1200), NULL }, /* autonegotiate */
++
++ /* Somehow does the 971 tell me that the link is down
++ * the first read after power-up.
++ * read here to get a valid value in ack_int */
++
++ { mk_mii_read(MII_REG_SR), mii_parse_sr },
++ { mk_mii_end, }
++ },
++ (const phy_cmd_t []) { /* ack_int */
++ /* find out the current status */
++
++ { mk_mii_read(MII_REG_SR), mii_parse_sr },
++ { mk_mii_read(MII_LXT971_SR2), mii_parse_lxt971_sr2 },
++
++ /* we only need to read ISR to acknowledge */
++
++ { mk_mii_read(MII_LXT971_ISR), NULL },
++ { mk_mii_end, }
++ },
++ (const phy_cmd_t []) { /* shutdown - disable interrupts */
++ { mk_mii_write(MII_LXT971_IER, 0x0000), NULL },
++ { mk_mii_end, }
++ },
++};
++
++static phy_info_t *phy_info[] = {
++ &phy_info_lxt971,
++ /* Generic PHY support. This must be the last PHY in the table.
++ * It will be used to support any PHY that doesn't match a previous
++ * entry in the table.
++ */
++ &phy_info_generic,
++ NULL
++};
++
++static void mii_display_config(struct net_device *dev)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ uint s = priv->phy_status;
++
++ printk(KERN_INFO "%s: config: auto-negotiation ", dev->name);
++
++ if (s & PHY_CONF_ANE)
++ printk("on");
++ else
++ printk("off");
++
++ if (s & PHY_CONF_100FDX)
++ printk(", 100FDX");
++ if (s & PHY_CONF_100HDX)
++ printk(", 100HDX");
++ if (s & PHY_CONF_10FDX)
++ printk(", 10FDX");
++ if (s & PHY_CONF_10HDX)
++ printk(", 10HDX");
++ if (!(s & PHY_CONF_SPMASK))
++ printk(", No speed/duplex selected?");
++
++ if (s & PHY_CONF_LOOP)
++ printk(", loopback enabled");
++
++ printk(".\n");
++
++ priv->sequence_done = 1;
++}
++
++static void mii_queue_config(uint mii_reg, struct net_device *dev, uint data)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++
++ priv->phy_task.func = (void *)mii_display_config;
++ priv->phy_task.data = (unsigned long)dev;
++ tasklet_schedule(&priv->phy_task);
++}
++
++
++phy_cmd_t phy_cmd_config[] = { { mk_mii_read(MII_REG_CR), mii_queue_config },
++ { mk_mii_end, } };
++
++
++/* Read remainder of PHY ID.
++*/
++static void mii_discover_phy3(uint mii_reg, struct net_device *dev, uint data)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ int i;
++
++ priv->phy_id |= (mii_reg & 0xffff);
++
++ for (i = 0; phy_info[i]; i++) {
++ if (phy_info[i]->id == (priv->phy_id >> 4) || !phy_info[i]->id)
++ break;
++ if (phy_info[i]->id == 0) /* check generic entry */
++ break;
++ }
++
++ if (!phy_info[i])
++ panic("%s: PHY id 0x%08x is not supported!\n",
++ dev->name, priv->phy_id);
++
++ priv->phy = phy_info[i];
++ priv->phy_id_done = 1;
++
++ printk(KERN_INFO "%s: Phy @ 0x%x, type %s (0x%08x)\n",
++ dev->name, priv->phy_addr, priv->phy->name, priv->phy_id);
++}
++
++/* Scan all of the MII PHY addresses looking for someone to respond
++ * with a valid ID. This usually happens quickly.
++ */
++static void mii_discover_phy(uint mii_reg, struct net_device *dev, uint data)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ uint phytype;
++
++ if ((phytype = (mii_reg & 0xffff)) != 0xffff) {
++ /* Got first part of ID, now get remainder.
++ */
++ priv->phy_id = phytype << 16;
++ mii_queue(dev, mk_mii_read(MII_REG_PHYIR2), mii_discover_phy3,
++ 0);
++ } else {
++ priv->phy_addr++;
++ if (priv->phy_addr < 32)
++ mii_queue(dev, mk_mii_read(MII_REG_PHYIR1),
++ mii_discover_phy, 0);
++ else
++ printk(KERN_ERR "fec: No PHY device found.\n");
++ }
++}
++
++static int mpc52xx_netdev_ethtool_ioctl(struct net_device *dev, void *useraddr)
++{
++ __u32 ethcmd;
++
++ if (copy_from_user(&ethcmd, useraddr, sizeof ethcmd))
++ return -EFAULT;
++
++ switch (ethcmd) {
++
++ /* Get driver info */
++ case ETHTOOL_GDRVINFO:{
++ struct ethtool_drvinfo info = { ETHTOOL_GDRVINFO };
++ strncpy(info.driver, "MPC5200 FEC",
++ sizeof info.driver - 1);
++ if (copy_to_user(useraddr, &info, sizeof info))
++ return -EFAULT;
++ return 0;
++ }
++ /* get message-level */
++ case ETHTOOL_GMSGLVL:{
++ struct ethtool_value edata = { ETHTOOL_GMSGLVL };
++ edata.data = 0; /* XXX */
++ if (copy_to_user(useraddr, &edata, sizeof edata))
++ return -EFAULT;
++ return 0;
++ }
++ /* set message-level */
++ case ETHTOOL_SMSGLVL:{
++ struct ethtool_value edata;
++ if (copy_from_user(&edata, useraddr, sizeof edata))
++ return -EFAULT;
++ return 0;
++ }
++ }
++ return -EOPNOTSUPP;
++}
++
++int fec_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
++{
++ int retval;
++
++ switch (cmd) {
++ case SIOCETHTOOL:
++ retval = mpc52xx_netdev_ethtool_ioctl(
++ dev, (void *) rq->ifr_data);
++ break;
++
++ default:
++ retval = -EOPNOTSUPP;
++ break;
++ }
++ return retval;
++}
++
++void fec_mii_init(struct net_device *dev)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++ int i;
++
++ for (i=0; i<NMII-1; i++)
++ mii_cmds[i].mii_next = &mii_cmds[i+1];
++ mii_free = mii_cmds;
++
++ /* Queue up command to detect the PHY and initialize the
++ * remainder of the interface.
++ */
++ priv->phy_id_done = 0;
++ priv->phy_addr = 0;
++ mii_queue(dev, mk_mii_read(MII_REG_PHYIR1), mii_discover_phy, 0);
++
++ priv->old_status = 0;
++}
++
++int fec_mii_wait(struct net_device *dev)
++{
++ struct fec_priv *priv = (struct fec_priv *)dev->priv;
++
++ if (!priv->sequence_done) {
++ if (!priv->phy) {
++ printk("KERN_ERR fec_open: PHY not configured\n");
++ return -ENODEV; /* No PHY we understand */
++ }
++
++ mii_do_cmd(dev, priv->phy->config);
++ mii_do_cmd(dev, phy_cmd_config); /* display configuration */
++ while(!priv->sequence_done)
++ schedule();
++
++ mii_do_cmd(dev, priv->phy->startup);
++ }
++ return 0;
++}
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Dale Farnsworth");
++MODULE_DESCRIPTION("PHY driver for Motorola MPC52xx FEC");
+diff --git a/drivers/net/fec_mpc52xx/fec_phy.h b/drivers/net/fec_mpc52xx/fec_phy.h
+new file mode 100644
+index 0000000..5c23bff
+--- /dev/null
++++ b/drivers/net/fec_mpc52xx/fec_phy.h
+@@ -0,0 +1,73 @@
++/*
++ * arch/ppc/52xx_io/fec_phy.h
++ *
++ * Driver for the MPC5200 Fast Ethernet Controller
++ * Based heavily on the MII support for the MPC8xx by Dan Malek
++ *
++ * Author: Dale Farnsworth <dfarnsworth@mvista.com>
++ *
++ * 2003-2004 (c) MontaVista, Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++
++#ifdef CONFIG_USE_MDIO
++#define MII_ADVERTISE_HALF (ADVERTISE_100HALF | ADVERTISE_10HALF | \
++ ADVERTISE_CSMA)
++
++#define MII_ADVERTISE_ALL (ADVERTISE_100FULL | ADVERTISE_10FULL | \
++ MII_ADVERTISE_HALF)
++#ifdef PHY_INTERRUPT
++#define MII_ADVERTISE_DEFAULT MII_ADVERTISE_ALL
++#else
++#define MII_ADVERTISE_DEFAULT MII_ADVERTISE_HALF
++#endif
++
++#define MII_RCNTL_MODE FEC_RCNTRL_MII_MODE
++#define set_phy_speed(fec, s) out_be32(&fec->mii_speed, s)
++#define FEC_IMASK_ENABLE 0xf0fe0000
++
++typedef struct {
++ uint mii_data;
++ void (*funct)(uint mii_reg, struct net_device *dev, uint data);
++} phy_cmd_t;
++
++typedef struct {
++ uint id;
++ char *name;
++
++ const phy_cmd_t *config;
++ const phy_cmd_t *startup;
++ const phy_cmd_t *ack_int;
++ const phy_cmd_t *shutdown;
++} phy_info_t;
++
++#else
++#define MII_RCNTL_MODE 0
++#define set_phy_speed(fec, s)
++#define FEC_IMASK_ENABLE 0xf07e0000
++#define fec_mii_wait(dev) 0
++#define fec_mii(dev) printk(KERN_WARNING "unexpected FEC_IEVENT_MII\n")
++#define fec_mii_init(dev)
++#endif /* CONFIG_USE_MDIO */
++
++/* MII-related definitions */
++#define FEC_MII_DATA_ST 0x40000000 /* Start frame */
++#define FEC_MII_DATA_OP_RD 0x20000000 /* Perform read */
++#define FEC_MII_DATA_OP_WR 0x10000000 /* Perform write */
++#define FEC_MII_DATA_PA_MSK 0x0f800000 /* PHY Address mask */
++#define FEC_MII_DATA_RA_MSK 0x007c0000 /* PHY Register mask */
++#define FEC_MII_DATA_TA 0x00020000 /* Turnaround */
++#define FEC_MII_DATA_DATAMSK 0x00000fff /* PHY data mask */
++
++#define FEC_MII_DATA_RA_SHIFT 0x12 /* MII reg addr bits */
++#define FEC_MII_DATA_PA_SHIFT 0x17 /* MII PHY addr bits */
++
++#define FEC_MII_SPEED (5 * 2)
++
++extern void fec_mii_init(struct net_device *dev);
++extern int fec_mii_wait(struct net_device *dev);
++extern void fec_mii(struct net_device *dev);
++
++extern int fec_ioctl(struct net_device *, struct ifreq *rq, int cmd);
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0021-POWERPC-Copy-bestcomm-support-files-into-arch-powerpc.txt b/packages/linux/linux-efika-2.6.20/0021-POWERPC-Copy-bestcomm-support-files-into-arch-powerpc.txt
new file mode 100644
index 0000000000..958ca7f20b
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0021-POWERPC-Copy-bestcomm-support-files-into-arch-powerpc.txt
@@ -0,0 +1,1335 @@
+From 50ea8834d3b4c79ddaa8f1df88d285ebe8e71cd4 Mon Sep 17 00:00:00 2001
+From: Grant Likely <grant.likely@secretlab.ca>
+Date: Mon, 4 Dec 2006 22:19:21 -0700
+Subject: [PATCH] [POWERPC] Copy bestcomm support files into arch/powerpc
+
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+---
+ arch/powerpc/platforms/52xx/bestcomm.c | 408 ++++++++++++++++++++
+ arch/powerpc/platforms/52xx/bestcomm.h | 473 ++++++++++++++++++++++++
+ arch/powerpc/platforms/52xx/fec.c | 174 +++++++++
+ arch/powerpc/platforms/52xx/fec.h | 71 ++++
+ arch/powerpc/platforms/52xx/sdma_fec_rx_task.c | 71 ++++
+ arch/powerpc/platforms/52xx/sdma_fec_tx_task.c | 84 +++++
+ 6 files changed, 1281 insertions(+), 0 deletions(-)
+
+diff --git a/arch/powerpc/platforms/52xx/bestcomm.c b/arch/powerpc/platforms/52xx/bestcomm.c
+new file mode 100644
+index 0000000..ef45e02
+--- /dev/null
++++ b/arch/powerpc/platforms/52xx/bestcomm.c
+@@ -0,0 +1,408 @@
++/*
++ * arch/ppc/syslib/bestcomm/bestcomm.c
++ *
++ * Driver for MPC52xx processor BestComm peripheral controller
++ *
++ * Author: Dale Farnsworth <dfarnsworth@mvista.com>
++ *
++ * 2003-2004 (c) MontaVista, Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ *
++ * HISTORY:
++ *
++ * 2005-08-14 Converted to platform driver by
++ * Andrey Volkov <avolkov@varma-el.com>, Varma Electronics Oy
++ */
++
++#include <linux/config.h>
++#include <linux/version.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/errno.h>
++#include <linux/slab.h>
++#include <linux/spinlock.h>
++#include <linux/string.h>
++#include <linux/device.h>
++
++#include <asm/bug.h>
++#include <asm/io.h>
++#include <asm/mpc52xx.h>
++
++#include "bestcomm.h"
++
++#define DRIVER_NAME "mpc52xx-sdma"
++
++struct sdma_io sdma;
++
++static spinlock_t sdma_lock = SPIN_LOCK_UNLOCKED;
++
++#ifdef CONFIG_BESTCOMM_DEBUG
++void sdma_dump(void)
++{
++ int i;
++ printk("** SDMA registers: pa = %08x, va = %08x\n", sdma.base_reg_addr, sdma.io);
++ printk("** taskBar = %08x\n", sdma.io->taskBar);
++ printk("** currentPointer = %08x\n", sdma.io->currentPointer);
++ printk("** endPointer = %08x\n", sdma.io->endPointer);
++ printk("** variablePointer = %08x\n", sdma.io->variablePointer);
++
++ printk("** IntVect1 = %08x\n", sdma.io->IntVect1);
++ printk("** IntVect2 = %08x\n", sdma.io->IntVect2);
++ printk("** PtdCntrl = %08x\n", sdma.io->PtdCntrl);
++
++ printk("** IntPend = %08x\n", sdma.io->IntPend);
++ printk("** IntMask = %08x\n", sdma.io->IntMask);
++
++ printk("** TCR dump:");
++
++ for (i=0;i<16;i++) {
++ if(i%8 == 0)
++ printk("\n** %02X:",i);
++ printk(" %04X",sdma.io->tcr[i]);
++ }
++ printk("\n** IPR dump:");
++ for (i=0;i<32;i++) {
++ if(i%16 == 0)
++ printk("\n** %02X:",i);
++ printk(" %02X",sdma.io->ipr[i]);
++ }
++ printk("\n** cReqSelect = %08x\n", sdma.io->cReqSelect);
++ printk("** task_size0 = %08x\n", sdma.io->task_size0);
++ printk("** task_size1 = %08x\n", sdma.io->task_size1);
++ printk("** MDEDebug = %08x\n", sdma.io->MDEDebug);
++ printk("** ADSDebug = %08x\n", sdma.io->ADSDebug);
++ printk("** Value1 = %08x\n", sdma.io->Value1);
++ printk("** Value2 = %08x\n", sdma.io->Value2);
++ printk("** Control = %08x\n", sdma.io->Control);
++ printk("** Status = %08x\n", sdma.io->Status);
++ printk("** PTDDebug = %08x\n", sdma.io->PTDDebug);
++}
++#endif
++
++#ifdef CONFIG_BESTCOMM_DEBUG
++#define SDMA_DUMP_REGS() sdma_dump()
++#else
++#define SDMA_DUMP_REGS()
++#endif
++
++/*
++ * Use a very simple SRAM allocator.
++ * There is no mechanism for freeing space.
++ * In an attempt to minimize internal fragmentation, the SRAM is
++ * divided into two areas.
++ *
++ * Area 1 is at the beginning of SRAM
++ * and is used for allocations requiring alignments of 16 bytes or less.
++ * Successive allocations return higher addresses.
++ *
++ * Area 2 is at the end of SRAM and is used for the remaining allocations.
++ * Successive allocations return lower addresses.
++ *
++ * I've considered adding routines to support the freeing of SRAM allocations,
++ * but the SRAM is so small (16K) that fragmentation can quickly cause the
++ * SRAM to be unusable. If you can come up with a slick way to free SRAM
++ * memory without the fragmentation problem, please do so.
++ */
++
++static u8 *area1_end;
++static u8 *area2_begin;
++
++void *sdma_sram_alloc(int size, int alignment, u32 *dma_handle)
++{
++ u8 *a;
++
++ spin_lock(&sdma_lock);
++
++ /* alignment must be a power of 2 */
++ BUG_ON(alignment & (alignment - 1));
++
++ if (alignment < 16) {
++ a = (u8 *)(((u32)area1_end + (alignment-1)) & ~(alignment-1));
++ if (a + size <= area2_begin)
++ area1_end = a + size;
++ else
++ a = 0; /* out of memory */
++ } else {
++ a = (u8 *)(((u32)area2_begin - size) & ~(alignment - 1));
++ if (a >= area1_end)
++ area2_begin = a;
++ else
++ a = 0; /* out of memory */
++ }
++ if(a && dma_handle)
++ *dma_handle = sdma_sram_pa(a);
++ spin_unlock(&sdma_lock);
++ return (void *)a;
++}
++
++/* this will need to be updated if Freescale changes their task code FDT */
++static u32 fdt_ops[] = {
++ 0xa0045670, /* FDT[48] */
++ 0x80045670, /* FDT[49] */
++ 0x21800000, /* FDT[50] */
++ 0x21e00000, /* FDT[51] */
++ 0x21500000, /* FDT[52] */
++ 0x21400000, /* FDT[53] */
++ 0x21500000, /* FDT[54] */
++ 0x20400000, /* FDT[55] */
++ 0x20500000, /* FDT[56] */
++ 0x20800000, /* FDT[57] */
++ 0x20a00000, /* FDT[58] */
++ 0xc0170000, /* FDT[59] */
++ 0xc0145670, /* FDT[60] */
++ 0xc0345670, /* FDT[61] */
++ 0xa0076540, /* FDT[62] */
++ 0xa0000760, /* FDT[63] */
++};
++
++static int new_task_number(void)
++{
++ struct sdma_tdt *tdt;
++ int i;
++
++ spin_lock(&sdma_lock);
++
++ tdt = sdma.tdt;
++ for (i=0; i<SDMA_MAX_TASKS; i++, tdt++)
++ if (tdt->start == 0)
++ break;
++ if (i == SDMA_MAX_TASKS)
++ i = -1;
++
++ spin_unlock(&sdma_lock);
++
++ return i;
++}
++
++int sdma_load_task(u32 *task_image)
++{
++ struct sdma_task_header *head = (struct sdma_task_header *)task_image;
++ struct sdma_tdt *tdt;
++ int tasknum;
++ u32 *desc;
++ u32 *var_src, *var_dst;
++ u32 *inc_src;
++ void *start;
++
++ BUG_ON(head->magic != SDMA_TASK_MAGIC);
++
++ tasknum = new_task_number();
++ if (tasknum < 0)
++ return -ENOMEM;
++
++ desc = (u32 *)(head + 1);
++ var_src = desc + head->desc_size;
++ inc_src = var_src + head->var_size;
++
++ tdt = &sdma.tdt[tasknum];
++
++ start = sdma_sram_alloc(head->desc_size * sizeof(u32), 4, &tdt->start);
++ if (!start)
++ return -ENOMEM;
++ tdt->stop = tdt->start + (head->desc_size - 1)*sizeof(u32);
++ var_dst = sdma_sram_va(tdt->var);
++
++ memcpy(start, desc, head->desc_size * sizeof(u32));
++ memcpy(&var_dst[head->first_var], var_src, head->var_size * sizeof(u32));
++ memcpy(&var_dst[SDMA_MAX_VAR], inc_src, head->inc_size * sizeof(u32));
++
++ return tasknum;
++}
++
++void sdma_set_initiator(int task, int initiator)
++{
++ int i;
++ int num_descs;
++ u32 *desc;
++ int next_drd_has_initiator;
++
++ sdma_set_tcr_initiator(task, initiator);
++
++ desc = sdma_task_desc(task);
++ next_drd_has_initiator = 1;
++ num_descs = sdma_task_num_descs(task);
++
++ for (i=0; i<num_descs; i++, desc++) {
++ if (!sdma_desc_is_drd(*desc))
++ continue;
++ if (next_drd_has_initiator)
++ if (sdma_desc_initiator(*desc) != SDMA_INITIATOR_ALWAYS)
++ sdma_set_desc_initiator(desc, initiator);
++ next_drd_has_initiator = !sdma_drd_is_extended(*desc);
++ }
++}
++
++struct sdma *sdma_alloc(int queue_size)
++{
++ struct sdma *s = kmalloc(sizeof(*s), GFP_KERNEL);
++ void **cookie;
++
++ if (!s)
++ return NULL;
++
++ memset(s, 0, sizeof(*s));
++
++ if (queue_size) {
++ cookie = kmalloc(sizeof(*cookie) * queue_size, GFP_KERNEL);
++ if (!cookie) {
++ kfree(s);
++ return NULL;
++ }
++ s->cookie = cookie;
++ }
++
++ s->num_bd = queue_size;
++ return s;
++}
++
++void sdma_free(struct sdma *s)
++{
++ if (s->cookie)
++ kfree(s->cookie);
++ kfree(s);
++}
++
++static int __devinit mpc52xx_sdma_probe(struct device *dev)
++{
++ struct platform_device *pdev = to_platform_device(dev);
++ int task;
++ u32 *context;
++ u32 *fdt;
++ struct sdma_tdt *tdt;
++ struct resource *mem_io, *mem_sram;
++ u32 tdt_pa, var_pa, context_pa, fdt_pa;
++ int ret = -ENODEV;
++
++ mem_io = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ mem_sram = platform_get_resource(pdev, IORESOURCE_MEM, 1);
++ if (!mem_io || !mem_sram)
++ goto out;
++
++ if (!request_mem_region(mem_io->start, mem_io->end - mem_io->start + 1, DRIVER_NAME)) {
++ printk(KERN_ERR DRIVER_NAME " - resource unavailable\n");
++ goto out;
++ }
++ sdma.base_reg_addr = mem_io->start;
++
++ sdma.io = ioremap_nocache(mem_io->start, sizeof(struct mpc52xx_sdma));
++
++ if (!sdma.io ) {
++ printk(KERN_ERR DRIVER_NAME " - failed to map sdma regs\n");
++ ret = -ENOMEM;
++ goto map_io_error;
++ }
++
++ SDMA_DUMP_REGS();
++
++ sdma.sram_size = mem_sram->end - mem_sram->start + 1;
++ if (!request_mem_region(mem_sram->start, sdma.sram_size, DRIVER_NAME)) {
++ printk(KERN_ERR DRIVER_NAME " - resource unavailable\n");
++ goto req_sram_error;
++ }
++
++ sdma.base_sram_addr = mem_sram->start;
++ sdma.sram = ioremap_nocache(mem_sram->start, sdma.sram_size);
++ if (!sdma.sram ) {
++ printk(KERN_ERR DRIVER_NAME " - failed to map sdma sram\n");
++ ret = -ENOMEM;
++ goto map_sram_error;
++ }
++
++ area1_end = sdma.sram;
++ area2_begin = area1_end + sdma.sram_size;
++
++ memset(area1_end, 0, sdma.sram_size);
++
++ /* allocate space for task descriptors, contexts, and var tables */
++ sdma.tdt = sdma_sram_alloc(sizeof(struct sdma_tdt) * SDMA_MAX_TASKS, 4, &tdt_pa);
++
++ context = sdma_sram_alloc(SDMA_CONTEXT_SIZE * SDMA_MAX_TASKS,
++ SDMA_CONTEXT_ALIGN, &context_pa);
++ sdma.var = sdma_sram_alloc( (SDMA_VAR_SIZE + SDMA_INC_SIZE) * SDMA_MAX_TASKS,
++ SDMA_VAR_ALIGN, &var_pa);
++ fdt = sdma_sram_alloc(SDMA_FDT_SIZE, SDMA_FDT_ALIGN, &fdt_pa);
++ memcpy(&fdt[48], fdt_ops, sizeof(fdt_ops));
++
++ out_be32(&sdma.io->taskBar, tdt_pa);
++
++ tdt = sdma.tdt;
++ for (task=0; task < SDMA_MAX_TASKS; task++) {
++ out_be16(&sdma.io->tcr[task], 0);
++ out_8(&sdma.io->ipr[task], 0);
++
++ tdt->context = context_pa;
++ tdt->var = var_pa;
++ tdt->fdt = fdt_pa;
++ var_pa += (SDMA_MAX_VAR + SDMA_MAX_INC)*sizeof(u32);
++ context_pa += SDMA_MAX_CONTEXT*sizeof(u32);
++ tdt++;
++ }
++
++ out_8(&sdma.io->ipr[SDMA_INITIATOR_ALWAYS], SDMA_IPR_ALWAYS);
++
++ /* Disable COMM Bus Prefetch, apparently it's not reliable yet */
++ out_be16(&sdma.io->PtdCntrl, in_be16(&sdma.io->PtdCntrl) | 1);
++
++ printk(KERN_INFO "MPC52xx BestComm inited\n");
++
++ return 0;
++
++map_sram_error:
++ release_mem_region(mem_sram->start, sdma.sram_size);
++req_sram_error:
++ iounmap(sdma.io);
++map_io_error:
++ release_mem_region(mem_io->start, mem_io->end - mem_io->start + 1);
++out:
++ printk(KERN_ERR "DMA: MPC52xx BestComm init FAILED !!!\n");
++ return ret;
++}
++
++
++static struct device_driver mpc52xx_sdma_driver = {
++ .owner = THIS_MODULE,
++ .name = DRIVER_NAME,
++ .bus = &platform_bus_type,
++ .probe = mpc52xx_sdma_probe,
++/* .remove = mpc52xx_sdma_remove, TODO */
++#ifdef CONFIG_PM
++/* .suspend = mpc52xx_sdma_suspend, TODO */
++/* .resume = mpc52xx_sdma_resume, TODO */
++#endif
++};
++
++static int __init
++mpc52xx_sdma_init(void)
++{
++ printk(KERN_INFO "DMA: MPC52xx BestComm driver\n");
++ return driver_register(&mpc52xx_sdma_driver);
++}
++
++#ifdef MODULE
++static void __exit
++mpc52xx_sdma_exit(void)
++{
++ driver_unregister(&mpc52xx_sdma_driver);
++}
++#endif
++
++#ifndef MODULE
++ subsys_initcall(mpc52xx_sdma_init);
++#else
++ module_init(mpc52xx_sdma_init);
++ module_exit(mpc52xx_sdma_exit);
++#endif
++
++
++MODULE_DESCRIPTION("Freescale MPC52xx BestComm DMA");
++MODULE_LICENSE("GPL");
++
++EXPORT_SYMBOL(sdma_sram_alloc);
++EXPORT_SYMBOL(sdma_load_task);
++EXPORT_SYMBOL(sdma_set_initiator);
++EXPORT_SYMBOL(sdma_free);
++EXPORT_SYMBOL(sdma);
++
++
+diff --git a/arch/powerpc/platforms/52xx/bestcomm.h b/arch/powerpc/platforms/52xx/bestcomm.h
+new file mode 100644
+index 0000000..14bf397
+--- /dev/null
++++ b/arch/powerpc/platforms/52xx/bestcomm.h
+@@ -0,0 +1,473 @@
++/*
++ * arch/ppc/syslib/bestcomm/bestcomm.h
++ *
++ * Driver for MPC52xx processor BestComm peripheral controller
++ *
++ * Author: Dale Farnsworth <dfarnsworth@mvista.com>
++ *
++ * 2003-2004 (c) MontaVista, Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ *
++ * HISTORY:
++ *
++ * 2005-08-14 Converted to platform driver by
++ * Andrey Volkov <avolkov@varma-el.com>, Varma Electronics Oy
++ */
++
++#ifndef __BESTCOMM_BESTCOMM_H__
++#define __BESTCOMM_BESTCOMM_H__
++
++/* Buffer Descriptor definitions */
++struct sdma_bd {
++ u32 status;
++ void *data;
++};
++
++struct sdma_bd2 {
++ u32 status;
++ void *data1;
++ void *data2;
++};
++
++struct sdma_io {
++ unsigned long base_reg_addr;
++ struct mpc52xx_sdma __iomem *io;
++ unsigned long base_sram_addr;
++ void __iomem *sram;
++ size_t sram_size;
++
++ struct sdma_tdt __iomem *tdt;
++ u32 __iomem *var;
++};
++extern struct sdma_io sdma;
++
++#define sdma_sram_pa(virt) (((unsigned long)(((void __iomem *)(virt))-sdma.sram))+sdma.base_sram_addr)
++#define sdma_sram_va(pa) ((void __iomem *)((((unsigned long)(pa))-sdma.base_sram_addr)+((unsigned long)sdma.sram)))
++
++#define sdma_io_pa(virt) (((unsigned long)(((void __iomem *)(virt))-((void __iomem *)sdma.io)))+sdma.base_reg_addr)
++#define sdma_io_va(pa) ((void __iomem *)((((unsigned long)(pa))-sdma.base_reg_addr)+((unsigned long)sdma.io)))
++
++#define SDMA_LEN_BITS 26
++#define SDMA_LEN_MASK ((1 << SDMA_LEN_BITS) - 1)
++
++#define SDMA_BD_READY 0x40000000UL
++
++#define SDMA_FEC_TX_BD_TFD 0x08000000UL /* transmit frame done */
++#define SDMA_FEC_TX_BD_INT 0x04000000UL /* Interrupt */
++#define SDMA_FEC_TX_BD_TFD_INIT (SDMA_BD_READY | SDMA_FEC_TX_BD_TFD | \
++ SDMA_FEC_TX_BD_INT)
++
++struct sdma {
++ union {
++ struct sdma_bd *bd;
++ struct sdma_bd2 *bd2;
++ };
++ void **cookie;
++ u16 index;
++ u16 outdex;
++ u16 num_bd;
++ s16 tasknum;
++ u32 flags;
++};
++
++#define SDMA_FLAGS_NONE 0x0000
++#define SDMA_FLAGS_ENABLE_TASK 0x0001
++#define SDMA_FLAGS_BD2 0x0002
++
++/* Task Descriptor Table Entry */
++struct sdma_tdt {
++ u32 start;
++ u32 stop;
++ u32 var;
++ u32 fdt;
++ u32 exec_status; /* used internally by SmartComm engine */
++ u32 mvtp; /* used internally by SmartComm engine */
++ u32 context;
++ u32 litbase;
++};
++
++//extern struct sdma_tdt *sdma_tdt;
++
++#define SDMA_MAX_TASKS 16
++#define SDMA_MAX_VAR 24
++#define SDMA_MAX_INC 8
++#define SDMA_MAX_FDT 64
++#define SDMA_MAX_CONTEXT 20
++#define SDMA_CONTEXT_SIZE SDMA_MAX_CONTEXT * sizeof(u32)
++#define SDMA_CONTEXT_ALIGN 0x100
++#define SDMA_VAR_SIZE SDMA_MAX_VAR * sizeof(u32)
++#define SDMA_VAR_ALIGN 0x80
++#define SDMA_INC_SIZE SDMA_MAX_INC * sizeof(u32)
++#define SDMA_FDT_SIZE SDMA_MAX_FDT * sizeof(u32)
++#define SDMA_FDT_ALIGN 0x100
++#define SDMA_BD_ALIGN 0x10
++
++#define TASK_ENABLE 0x8000
++
++#ifndef DPRINK
++ #ifdef CONFIG_BESTCOMM_DEBUG
++ #define DPRINTK(a,b...) printk(KERN_DEBUG "sdma: %s: " a, __FUNCTION__ , ## b)
++ #else
++ #define DPRINTK(a,b...)
++ #endif
++#endif
++
++static inline void sdma_enable_task(int task)
++{
++ DPRINTK("***DMA enable task (%d): tdt = %08x\n",task, sdma.tdt);
++ DPRINTK("***tdt->start = %08x\n",sdma.tdt[task].start);
++ DPRINTK("***tdt->stop = %08x\n",sdma.tdt[task].stop);
++ DPRINTK("***tdt->var = %08x\n",sdma.tdt[task].var);
++ DPRINTK("***tdt->fdt = %08x\n",sdma.tdt[task].fdt);
++ DPRINTK("***tdt->status = %08x\n",sdma.tdt[task].exec_status);
++ DPRINTK("***tdt->mvtp = %08x\n",sdma.tdt[task].mvtp);
++ DPRINTK("***tdt->context = %08x\n",sdma.tdt[task].context);
++ DPRINTK("***tdt->litbase = %08x\n",sdma.tdt[task].litbase);
++ DPRINTK("***--------------\n");
++
++ u16 reg = in_be16(&sdma.io->tcr[task]);
++ DPRINTK("***enable task: &sdma.io->tcr=%08x, reg = %04x\n", &sdma.io->tcr, reg);
++ out_be16(&sdma.io->tcr[task], reg | TASK_ENABLE);
++}
++
++static inline void sdma_disable_task(int task)
++{
++ u16 reg = in_be16(&sdma.io->tcr[task]);
++ DPRINTK("***disable task(%d): reg = %04x\n", task, reg);
++ out_be16(&sdma.io->tcr[task], reg & ~TASK_ENABLE);
++}
++
++static inline int sdma_irq(struct sdma *s)
++{
++ return MPC52xx_SDMA_IRQ_BASE + s->tasknum;
++}
++
++static inline void sdma_enable(struct sdma *s)
++{
++ sdma_enable_task(s->tasknum);
++}
++
++static inline void sdma_disable(struct sdma *s)
++{
++ sdma_disable_task(s->tasknum);
++}
++
++static inline int sdma_queue_empty(struct sdma *s)
++{
++ return s->index == s->outdex;
++}
++
++static inline void sdma_clear_irq(struct sdma *s)
++{
++ out_be32(&sdma.io->IntPend, 1 << s->tasknum);
++}
++
++static inline int sdma_next_index(struct sdma *s)
++{
++ return ((s->index + 1) == s->num_bd) ? 0 : s->index + 1;
++}
++
++static inline int sdma_next_outdex(struct sdma *s)
++{
++ return ((s->outdex + 1) == s->num_bd) ? 0 : s->outdex + 1;
++}
++
++static inline int sdma_queue_full(struct sdma *s)
++{
++ return s->outdex == sdma_next_index(s);
++}
++
++static inline int sdma_buffer_done(struct sdma *s)
++{
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(s->flags & SDMA_FLAGS_BD2);
++#endif
++ if (sdma_queue_empty(s))
++ return 0;
++ return (s->bd[s->outdex].status & SDMA_BD_READY) == 0;
++}
++
++static inline int sdma_buffer2_done(struct sdma *s)
++{
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(!(s->flags & SDMA_FLAGS_BD2));
++#endif
++ if (sdma_queue_empty(s))
++ return 0;
++
++ return (s->bd2[s->outdex].status & SDMA_BD_READY) == 0;
++}
++
++static inline u32 *sdma_task_desc(int task)
++{
++ return sdma_sram_va(sdma.tdt[task].start);
++}
++
++static inline u32 sdma_task_num_descs(int task)
++{
++ return (sdma.tdt[task].stop - sdma.tdt[task].start)/sizeof(u32) + 1;
++}
++
++static inline u32 *sdma_task_var(int task)
++{
++ return sdma_sram_va(sdma.tdt[task].var);
++}
++
++static inline u32 *sdma_task_inc(int task)
++{
++ return &sdma_task_var(task)[SDMA_MAX_VAR];
++}
++
++static inline void sdma_set_tcr_initiator(int task, int initiator) {
++ u16 *tcr = &sdma.io->tcr[task];
++ out_be16(tcr, (in_be16(tcr) & ~0x1f00) | (initiator << 8));
++}
++
++#define SDMA_DRD_INITIATOR_SHIFT 21
++
++static inline int sdma_desc_initiator(u32 desc)
++{
++ return (desc >> SDMA_DRD_INITIATOR_SHIFT) & 0x1f;
++}
++
++static inline void sdma_set_desc_initiator(u32 *desc, int initiator)
++{
++ *desc = (*desc & ~(0x1f << SDMA_DRD_INITIATOR_SHIFT)) |
++ ((initiator << SDMA_DRD_INITIATOR_SHIFT) & 0x1f);
++}
++
++static inline void sdma_submit_buffer(struct sdma *s, void *cookie, void *data,
++ int length)
++{
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(s->flags & SDMA_FLAGS_BD2);
++#endif
++ s->cookie[s->index] = cookie;
++ s->bd[s->index].data = data;
++ s->bd[s->index].status = SDMA_BD_READY | length;
++ s->index = sdma_next_index(s);
++ if (s->flags & SDMA_FLAGS_ENABLE_TASK)
++ sdma_enable_task(s->tasknum);
++}
++
++/*
++ * Special submit_buffer function to submit last buffer of a frame to
++ * the FEC tx task. tfd means "transmit frame done".
++ */
++static inline void sdma_fec_tfd_submit_buffer(struct sdma *s, void *cookie,
++ void *data, int length)
++{
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(s->flags & SDMA_FLAGS_BD2);
++#endif
++ s->cookie[s->index] = cookie;
++ s->bd[s->index].data = data;
++ s->bd[s->index].status = SDMA_FEC_TX_BD_TFD_INIT | length;
++ s->index = sdma_next_index(s);
++ sdma_enable_task(s->tasknum);
++}
++
++static inline void *sdma_retrieve_buffer(struct sdma *s, int *length)
++{
++ void *cookie = s->cookie[s->outdex];
++
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(s->flags & SDMA_FLAGS_BD2);
++#endif
++ if (length)
++ *length = s->bd[s->outdex].status & SDMA_LEN_MASK;
++ s->outdex = sdma_next_outdex(s);
++ return cookie;
++}
++
++static inline void sdma_submit_buffer2(struct sdma *s, void *cookie,
++ void *data1, void *data2, int length)
++{
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(!(s->flags & SDMA_FLAGS_BD2));
++#endif
++ s->cookie[s->index] = cookie;
++ s->bd2[s->index].data1 = data1;
++ s->bd2[s->index].data2 = data2;
++ s->bd2[s->index].status = SDMA_BD_READY | length;
++ s->index = sdma_next_index(s);
++ if (s->flags & SDMA_FLAGS_ENABLE_TASK)
++ sdma_enable_task(s->tasknum);
++}
++
++static inline void *sdma_retrieve_buffer2(struct sdma *s, int *length)
++{
++ void *cookie = s->cookie[s->outdex];
++
++#ifdef CONFIG_BESTCOMM_DEBUG
++ BUG_ON(!(s->flags & SDMA_FLAGS_BD2));
++#endif
++ if (length)
++ *length = s->bd2[s->outdex].status & SDMA_LEN_MASK;
++ s->outdex = sdma_next_outdex(s);
++ return cookie;
++}
++
++#define SDMA_TASK_MAGIC 0x4243544B /* 'BCTK' */
++
++/* the size fields are given in number of 32-bit words */
++struct sdma_task_header {
++ u32 magic;
++ u8 desc_size;
++ u8 var_size;
++ u8 inc_size;
++ u8 first_var;
++ u8 reserved[8];
++};
++
++#define SDMA_DESC_NOP 0x000001f8
++#define SDMA_LCD_MASK 0x80000000
++#define SDMA_DRD_EXTENDED 0x40000000
++
++#define sdma_drd_is_extended(desc) ((desc) & SDMA_DRD_EXTENDED)
++
++static inline int sdma_desc_is_drd(u32 desc) {
++ return !(desc & SDMA_LCD_MASK) && desc != SDMA_DESC_NOP;
++};
++
++#define SDMA_PRAGMA_BIT_RSV 7 /* reserved pragma bit */
++#define SDMA_PRAGMA_BIT_PRECISE_INC 6 /* increment 0=when possible, */
++ /* 1=iter end */
++#define SDMA_PRAGMA_BIT_RST_ERROR_NO 5 /* don't reset errors on */
++ /* task enable */
++#define SDMA_PRAGMA_BIT_PACK 4 /* pack data enable */
++#define SDMA_PRAGMA_BIT_INTEGER 3 /* data alignment */
++ /* 0=frac(msb), 1=int(lsb) */
++#define SDMA_PRAGMA_BIT_SPECREAD 2 /* XLB speculative read */
++#define SDMA_PRAGMA_BIT_CW 1 /* write line buffer enable */
++#define SDMA_PRAGMA_BIT_RL 0 /* read line buffer enable */
++
++#define SDMA_STD_PRAGMA ((0 << SDMA_PRAGMA_BIT_RSV) | \
++ (0 << SDMA_PRAGMA_BIT_PRECISE_INC) | \
++ (0 << SDMA_PRAGMA_BIT_RST_ERROR_NO) | \
++ (0 << SDMA_PRAGMA_BIT_PACK) | \
++ (0 << SDMA_PRAGMA_BIT_INTEGER) | \
++ (1 << SDMA_PRAGMA_BIT_SPECREAD) | \
++ (1 << SDMA_PRAGMA_BIT_CW) | \
++ (1 << SDMA_PRAGMA_BIT_RL))
++
++#define SDMA_PCI_PRAGMA ((0 << SDMA_PRAGMA_BIT_RSV) | \
++ (0 << SDMA_PRAGMA_BIT_PRECISE_INC) | \
++ (0 << SDMA_PRAGMA_BIT_RST_ERROR_NO) | \
++ (0 << SDMA_PRAGMA_BIT_PACK) | \
++ (1 << SDMA_PRAGMA_BIT_INTEGER) | \
++ (1 << SDMA_PRAGMA_BIT_SPECREAD) | \
++ (1 << SDMA_PRAGMA_BIT_CW) | \
++ (1 << SDMA_PRAGMA_BIT_RL))
++
++#define SDMA_ATA_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_CRC16_DP_0_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_CRC16_DP_1_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_FEC_RX_BD_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_FEC_TX_BD_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_DP_0_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_DP_1_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_DP_2_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_DP_3_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_DP_BD_0_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_DP_BD_1_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_RX_BD_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_TX_BD_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_GEN_LPC_PRAGMA SDMA_STD_PRAGMA
++#define SDMA_PCI_RX_PRAGMA SDMA_PCI_PRAGMA
++#define SDMA_PCI_TX_PRAGMA SDMA_PCI_PRAGMA
++
++static inline void sdma_set_task_pragma(int task, int pragma)
++{
++ u32 *fdt = &sdma.tdt[task].fdt;
++ *fdt = (*fdt & ~0xff) | pragma;
++}
++
++static inline void sdma_set_task_auto_start(int task, int next_task)
++{
++ u16 *tcr = &sdma.io->tcr[task];
++ out_be16(tcr, (in_be16(tcr) & ~0xff) | 0x00c0 | next_task);
++}
++
++#define SDMA_INITIATOR_ALWAYS 0
++#define SDMA_INITIATOR_SCTMR_0 1
++#define SDMA_INITIATOR_SCTMR_1 2
++#define SDMA_INITIATOR_FEC_RX 3
++#define SDMA_INITIATOR_FEC_TX 4
++#define SDMA_INITIATOR_ATA_RX 5
++#define SDMA_INITIATOR_ATA_TX 6
++#define SDMA_INITIATOR_SCPCI_RX 7
++#define SDMA_INITIATOR_SCPCI_TX 8
++#define SDMA_INITIATOR_PSC3_RX 9
++#define SDMA_INITIATOR_PSC3_TX 10
++#define SDMA_INITIATOR_PSC2_RX 11
++#define SDMA_INITIATOR_PSC2_TX 12
++#define SDMA_INITIATOR_PSC1_RX 13
++#define SDMA_INITIATOR_PSC1_TX 14
++#define SDMA_INITIATOR_SCTMR_2 15
++#define SDMA_INITIATOR_SCLPC 16
++#define SDMA_INITIATOR_PSC5_RX 17
++#define SDMA_INITIATOR_PSC5_TX 18
++#define SDMA_INITIATOR_PSC4_RX 19
++#define SDMA_INITIATOR_PSC4_TX 20
++#define SDMA_INITIATOR_I2C2_RX 21
++#define SDMA_INITIATOR_I2C2_TX 22
++#define SDMA_INITIATOR_I2C1_RX 23
++#define SDMA_INITIATOR_I2C1_TX 24
++#define SDMA_INITIATOR_PSC6_RX 25
++#define SDMA_INITIATOR_PSC6_TX 26
++#define SDMA_INITIATOR_IRDA_RX 25
++#define SDMA_INITIATOR_IRDA_TX 26
++#define SDMA_INITIATOR_SCTMR_3 27
++#define SDMA_INITIATOR_SCTMR_4 28
++#define SDMA_INITIATOR_SCTMR_5 29
++#define SDMA_INITIATOR_SCTMR_6 30
++#define SDMA_INITIATOR_SCTMR_7 31
++
++#define SDMA_IPR_ALWAYS 7
++#define SDMA_IPR_SCTMR_0 2
++#define SDMA_IPR_SCTMR_1 2
++#define SDMA_IPR_FEC_RX 6
++#define SDMA_IPR_FEC_TX 5
++#define SDMA_IPR_ATA_RX 4
++#define SDMA_IPR_ATA_TX 3
++#define SDMA_IPR_SCPCI_RX 2
++#define SDMA_IPR_SCPCI_TX 2
++#define SDMA_IPR_PSC3_RX 2
++#define SDMA_IPR_PSC3_TX 2
++#define SDMA_IPR_PSC2_RX 2
++#define SDMA_IPR_PSC2_TX 2
++#define SDMA_IPR_PSC1_RX 2
++#define SDMA_IPR_PSC1_TX 2
++#define SDMA_IPR_SCTMR_2 2
++#define SDMA_IPR_SCLPC 2
++#define SDMA_IPR_PSC5_RX 2
++#define SDMA_IPR_PSC5_TX 2
++#define SDMA_IPR_PSC4_RX 2
++#define SDMA_IPR_PSC4_TX 2
++#define SDMA_IPR_I2C2_RX 2
++#define SDMA_IPR_I2C2_TX 2
++#define SDMA_IPR_I2C1_RX 2
++#define SDMA_IPR_I2C1_TX 2
++#define SDMA_IPR_PSC6_RX 2
++#define SDMA_IPR_PSC6_TX 2
++#define SDMA_IPR_IRDA_RX 2
++#define SDMA_IPR_IRDA_TX 2
++#define SDMA_IPR_SCTMR_3 2
++#define SDMA_IPR_SCTMR_4 2
++#define SDMA_IPR_SCTMR_5 2
++#define SDMA_IPR_SCTMR_6 2
++#define SDMA_IPR_SCTMR_7 2
++
++extern struct sdma *sdma_alloc(int request_queue_size);
++extern void sdma_free(struct sdma *sdma_struct);
++extern int sdma_load_task(u32 *task_image);
++extern void *sdma_sram_alloc(int size, int alignment, u32 *dma_handle);
++extern void sdma_init_bd(struct sdma *s);
++extern void sdma_init_bd2(struct sdma *s);
++
++#define FIELD_OFFSET(s,f) ((unsigned long)(&(((struct s*)0)->f)))
++
++#endif /* __BESTCOMM_BESTCOMM_H__ */
+diff --git a/arch/powerpc/platforms/52xx/fec.c b/arch/powerpc/platforms/52xx/fec.c
+new file mode 100644
+index 0000000..8756856
+--- /dev/null
++++ b/arch/powerpc/platforms/52xx/fec.c
+@@ -0,0 +1,174 @@
++/*
++ * arch/ppc/syslib/bestcomm/fec.c
++ *
++ * Driver for MPC52xx processor BestComm FEC controller
++ *
++ * Author: Dale Farnsworth <dfarnsworth@mvista.com>
++ *
++ * 2003-2004 (c) MontaVista, Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ *
++ * HISTORY:
++ *
++ * 2005-08-14 Converted to platform driver by
++ * Andrey Volkov <avolkov@varma-el.com>, Varma Electronics Oy
++ */
++
++#include <linux/config.h>
++#include <linux/version.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/string.h>
++#include <linux/types.h>
++#include <asm/errno.h>
++#include <asm/io.h>
++
++#include <asm/mpc52xx.h>
++
++#include "bestcomm.h"
++#include "fec.h"
++
++/*
++ * Initialize FEC receive task.
++ * Returns task number of FEC receive task.
++ * Returns -1 on failure
++ */
++int sdma_fec_rx_init(struct sdma *s, phys_addr_t fifo, int maxbufsize)
++{
++ struct sdma_fec_rx_var *var;
++ struct sdma_fec_rx_inc *inc;
++
++ static int tasknum = -1;
++ static struct sdma_bd *bd = 0;
++ static u32 bd_pa;
++
++ if (tasknum < 0) {
++ tasknum = sdma_load_task(sdma_fec_rx_task);
++ if (tasknum < 0)
++ return tasknum;
++ }
++
++ if (!bd)
++ bd = (struct sdma_bd *)sdma_sram_alloc(sizeof(*bd) * s->num_bd,
++ SDMA_BD_ALIGN, &bd_pa);
++ if (!bd)
++ return -ENOMEM;
++
++ sdma_disable_task(tasknum);
++
++ s->tasknum = tasknum;
++ s->bd = bd;
++ s->flags = SDMA_FLAGS_NONE;
++ s->index = 0;
++ s->outdex = 0;
++ memset(bd, 0, sizeof(*bd) * s->num_bd);
++
++ var = (struct sdma_fec_rx_var *)sdma_task_var(tasknum);
++ var->enable = sdma_io_pa(&sdma.io->tcr[tasknum]);
++ var->fifo = fifo;
++ var->bd_base = bd_pa;
++ var->bd_last = bd_pa + (s->num_bd - 1)*sizeof(struct sdma_bd);
++ var->bd_start = bd_pa;
++ var->buffer_size = maxbufsize;
++
++ /* These are constants, they should have been in the image file */
++ inc = (struct sdma_fec_rx_inc *)sdma_task_inc(tasknum);
++ inc->incr_bytes = -(s16)sizeof(u32);
++ inc->incr_dst = sizeof(u32);
++ inc->incr_dst_ma = sizeof(u8);
++
++ sdma_set_task_pragma(tasknum, SDMA_FEC_RX_BD_PRAGMA);
++ sdma_set_task_auto_start(tasknum, tasknum);
++
++ /* clear pending interrupt bits */
++ out_be32(&sdma.io->IntPend, 1<<tasknum);
++
++ out_8(&sdma.io->ipr[SDMA_INITIATOR_FEC_RX], SDMA_IPR_FEC_RX);
++
++ return tasknum;
++}
++
++/*
++ * Return 2nd to last DRD
++ * This is an ugly hack, but at least it's only done once at initialization
++ */
++static u32 *self_modified_drd(int tasknum)
++{
++ u32 *desc;
++ int num_descs;
++ int drd_count;
++ int i;
++
++ num_descs = sdma_task_num_descs(tasknum);
++ desc = sdma_task_desc(tasknum) + num_descs - 1;
++ drd_count = 0;
++ for (i=0; i<num_descs; i++, desc--)
++ if (sdma_desc_is_drd(*desc) && ++drd_count == 3)
++ break;
++ return desc;
++}
++
++/*
++ * Initialize FEC transmit task.
++ * Returns task number of FEC transmit task.
++ * Returns -1 on failure
++ */
++int sdma_fec_tx_init(struct sdma *s, phys_addr_t fifo)
++{
++ struct sdma_fec_tx_var *var;
++ struct sdma_fec_tx_inc *inc;
++
++ static int tasknum = -1;
++ static struct sdma_bd *bd = 0;
++ static u32 bd_pa;
++
++ if (tasknum < 0) {
++ tasknum = sdma_load_task(sdma_fec_tx_task);
++ if (tasknum < 0)
++ return tasknum;
++ }
++
++ if (!bd)
++ bd = (struct sdma_bd *)sdma_sram_alloc(sizeof(*bd) * s->num_bd,
++ SDMA_BD_ALIGN, &bd_pa);
++ if (!bd)
++ return -ENOMEM;
++
++ sdma_disable_task(tasknum);
++
++ s->tasknum = tasknum;
++ s->bd = bd;
++ s->flags = SDMA_FLAGS_ENABLE_TASK;
++ s->index = 0;
++ s->outdex = 0;
++ memset(bd, 0, sizeof(*bd) * s->num_bd);
++
++ var = (struct sdma_fec_tx_var *)sdma_task_var(tasknum);
++ var->DRD = sdma_sram_pa(self_modified_drd(tasknum));
++ var->fifo = fifo;
++ var->enable = sdma_io_pa(&sdma.io->tcr[tasknum]);
++ var->bd_base = bd_pa;
++ var->bd_last = bd_pa + (s->num_bd - 1)*sizeof(struct sdma_bd);
++ var->bd_start = bd_pa;
++
++ /* These are constants, they should have been in the image file */
++ inc = (struct sdma_fec_tx_inc *)sdma_task_inc(tasknum);
++ inc->incr_bytes = -(s16)sizeof(u32);
++ inc->incr_src = sizeof(u32);
++ inc->incr_src_ma = sizeof(u8);
++
++ sdma_set_task_pragma(tasknum, SDMA_FEC_TX_BD_PRAGMA);
++ sdma_set_task_auto_start(tasknum, tasknum);
++
++ /* clear pending interrupt bits */
++ out_be32(&sdma.io->IntPend, 1<<tasknum);
++
++ out_8(&sdma.io->ipr[SDMA_INITIATOR_FEC_TX], SDMA_IPR_FEC_TX);
++
++ return tasknum;
++}
++
++EXPORT_SYMBOL(sdma_fec_rx_init);
++EXPORT_SYMBOL(sdma_fec_tx_init);
+diff --git a/arch/powerpc/platforms/52xx/fec.h b/arch/powerpc/platforms/52xx/fec.h
+new file mode 100644
+index 0000000..e3abc0f
+--- /dev/null
++++ b/arch/powerpc/platforms/52xx/fec.h
+@@ -0,0 +1,71 @@
++/*
++ * arch/ppc/syslib/bestcomm/fec.h
++ *
++ * Driver for MPC52xx processor BestComm FEC controller
++ *
++ * Author: Dale Farnsworth <dfarnsworth@mvista.com>
++ *
++ * 2003-2004 (c) MontaVista, Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ *
++ * HISTORY:
++ *
++ * 2005-08-14 Converted to platform driver by
++ * Andrey Volkov <avolkov@varma-el.com>, Varma Electronics Oy
++ */
++
++#ifndef __BESTCOMM_FEC_H__
++#define __BESTCOMM_FEC_H__
++
++
++/* rx task vars that need to be set before enabling the task */
++struct sdma_fec_rx_var {
++ u32 enable; /* (u16*) address of task's control register */
++ u32 fifo; /* (u32*) address of fec's fifo */
++ u32 bd_base; /* (struct sdma_bd*) beginning of ring buffer */
++ u32 bd_last; /* (struct sdma_bd*) end of ring buffer */
++ u32 bd_start; /* (struct sdma_bd*) current bd */
++ u32 buffer_size; /* size of receive buffer */
++};
++
++/* rx task incs that need to be set before enabling the task */
++struct sdma_fec_rx_inc {
++ u16 pad0;
++ s16 incr_bytes;
++ u16 pad1;
++ s16 incr_dst;
++ u16 pad2;
++ s16 incr_dst_ma;
++};
++
++/* tx task vars that need to be set before enabling the task */
++struct sdma_fec_tx_var {
++ u32 DRD; /* (u32*) address of self-modified DRD */
++ u32 fifo; /* (u32*) address of fec's fifo */
++ u32 enable; /* (u16*) address of task's control register */
++ u32 bd_base; /* (struct sdma_bd*) beginning of ring buffer */
++ u32 bd_last; /* (struct sdma_bd*) end of ring buffer */
++ u32 bd_start; /* (struct sdma_bd*) current bd */
++ u32 buffer_size; /* set by uCode for each packet */
++};
++
++/* tx task incs that need to be set before enabling the task */
++struct sdma_fec_tx_inc {
++ u16 pad0;
++ s16 incr_bytes;
++ u16 pad1;
++ s16 incr_src;
++ u16 pad2;
++ s16 incr_src_ma;
++};
++
++extern int sdma_fec_rx_init(struct sdma *s, phys_addr_t fifo, int maxbufsize);
++extern int sdma_fec_tx_init(struct sdma *s, phys_addr_t fifo);
++
++extern u32 sdma_fec_rx_task[];
++extern u32 sdma_fec_tx_task[];
++
++
++#endif /* __BESTCOMM_FEC_H__ */
+diff --git a/arch/powerpc/platforms/52xx/sdma_fec_rx_task.c b/arch/powerpc/platforms/52xx/sdma_fec_rx_task.c
+new file mode 100644
+index 0000000..511b036
+--- /dev/null
++++ b/arch/powerpc/platforms/52xx/sdma_fec_rx_task.c
+@@ -0,0 +1,71 @@
++/*
++ * sdma_fec_rx_task.c
++ *
++ * Automatically created based on BestCommAPI-2.2/code_dma/image_rtos1/dma_image.hex
++ * on Tue Mar 22 11:19:38 2005 GMT
++ */
++
++#include <linux/types.h>
++
++/*
++ * The header consists of the following fields:
++ * uint32_t magic;
++ * uint8_t desc_size;
++ * uint8_t var_size;
++ * uint8_t inc_size;
++ * uint8_t first_var;
++ * uint8_t reserved[8];
++ *
++ * The size fields contain the number of 32-bit words.
++*/
++
++uint32_t sdma_fec_rx_task[] = {
++ /* header */
++ 0x4243544b,
++ 0x18060709,
++ 0x00000000,
++ 0x00000000,
++
++ /* Task descriptors */
++ 0x808220e3, /* LCD: idx0 = var1, idx1 = var4; idx1 <= var3; idx0 += inc4, idx1 += inc3 */
++ 0x10601010, /* DRD1A: var4 = var2; FN=0 MORE init=3 WS=0 RS=0 */
++ 0xb8800264, /* LCD: idx2 = *idx1, idx3 = var0; idx2 < var9; idx2 += inc4, idx3 += inc4 */
++ 0x10001308, /* DRD1A: var4 = idx1; FN=0 MORE init=0 WS=0 RS=0 */
++ 0x60140002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=2 RS=2 */
++ 0x0cccfcca, /* DRD2B1: *idx3 = EU3(); EU3(*idx3,var10) */
++ 0x80004000, /* LCDEXT: idx2 = 0x00000000; ; */
++ 0xb8c58029, /* LCD: idx3 = *(idx1 + var00000015); idx3 once var0; idx3 += inc5 */
++ 0x60000002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=0 RS=0 */
++ 0x088cf8cc, /* DRD2B1: idx2 = EU3(); EU3(idx3,var12) */
++ 0x991982f2, /* LCD: idx2 = idx2, idx3 = idx3; idx2 > var11; idx2 += inc6, idx3 += inc2 */
++ 0x006acf80, /* DRD1A: *idx3 = *idx0; FN=0 init=3 WS=1 RS=1 */
++ 0x80004000, /* LCDEXT: idx2 = 0x00000000; ; */
++ 0x9999802d, /* LCD: idx3 = idx3; idx3 once var0; idx3 += inc5 */
++ 0x70000002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
++ 0x034cfc4e, /* DRD2B1: var13 = EU3(); EU3(*idx1,var14) */
++ 0x00008868, /* DRD1A: idx2 = var13; FN=0 init=0 WS=0 RS=0 */
++ 0x99198341, /* LCD: idx2 = idx2, idx3 = idx3; idx2 > var13; idx2 += inc0, idx3 += inc1 */
++ 0x007ecf80, /* DRD1A: *idx3 = *idx0; FN=0 init=3 WS=3 RS=3 */
++ 0x99198272, /* LCD: idx2 = idx2, idx3 = idx3; idx2 > var9; idx2 += inc6, idx3 += inc2 */
++ 0x046acf80, /* DRD1A: *idx3 = *idx0; FN=0 INT init=3 WS=1 RS=1 */
++ 0x9819002d, /* LCD: idx2 = idx0; idx2 once var0; idx2 += inc5 */
++ 0x0060c790, /* DRD1A: *idx1 = *idx2; FN=0 init=3 WS=0 RS=0 */
++ 0x000001f8, /* NOP */
++
++ /* VAR[9]-VAR[14] */
++ 0x40000000,
++ 0x7fff7fff,
++ 0x00000000,
++ 0x00000003,
++ 0x40000008,
++ 0x43ffffff,
++
++ /* INC[0]-INC[6] */
++ 0x40000000,
++ 0xe0000000,
++ 0xe0000000,
++ 0xa0000008,
++ 0x20000000,
++ 0x00000000,
++ 0x4000ffff,
++};
+diff --git a/arch/powerpc/platforms/52xx/sdma_fec_tx_task.c b/arch/powerpc/platforms/52xx/sdma_fec_tx_task.c
+new file mode 100644
+index 0000000..d8d7fd3
+--- /dev/null
++++ b/arch/powerpc/platforms/52xx/sdma_fec_tx_task.c
+@@ -0,0 +1,84 @@
++/*
++ * sdma_fec_tx_task.c
++ *
++ * Automatically created based on BestCommAPI-2.2/code_dma/image_rtos1/dma_image.hex
++ * on Tue Mar 22 11:19:29 2005 GMT
++ */
++
++#include <linux/types.h>
++
++/*
++ * The header consists of the following fields:
++ * uint32_t magic;
++ * uint8_t desc_size;
++ * uint8_t var_size;
++ * uint8_t inc_size;
++ * uint8_t first_var;
++ * uint8_t reserved[8];
++ *
++ * The size fields contain the number of 32-bit words.
++*/
++
++uint32_t sdma_fec_tx_task[] = {
++ /* header */
++ 0x4243544b,
++ 0x2407070d,
++ 0x00000000,
++ 0x00000000,
++
++ /* Task descriptors */
++ 0x8018001b, /* LCD: idx0 = var0; idx0 <= var0; idx0 += inc3 */
++ 0x60000005, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=5 EXT init=0 WS=0 RS=0 */
++ 0x01ccfc0d, /* DRD2B1: var7 = EU3(); EU3(*idx0,var13) */
++ 0x8082a123, /* LCD: idx0 = var1, idx1 = var5; idx1 <= var4; idx0 += inc4, idx1 += inc3 */
++ 0x10801418, /* DRD1A: var5 = var3; FN=0 MORE init=4 WS=0 RS=0 */
++ 0xf88103a4, /* LCDEXT: idx2 = *idx1, idx3 = var2; idx2 < var14; idx2 += inc4, idx3 += inc4 */
++ 0x801a6024, /* LCD: idx4 = var0; ; idx4 += inc4 */
++ 0x10001708, /* DRD1A: var5 = idx1; FN=0 MORE init=0 WS=0 RS=0 */
++ 0x60140002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=2 RS=2 */
++ 0x0cccfccf, /* DRD2B1: *idx3 = EU3(); EU3(*idx3,var15) */
++ 0x991a002c, /* LCD: idx2 = idx2, idx3 = idx4; idx2 once var0; idx2 += inc5, idx3 += inc4 */
++ 0x70000002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
++ 0x024cfc4d, /* DRD2B1: var9 = EU3(); EU3(*idx1,var13) */
++ 0x60000003, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=3 EXT init=0 WS=0 RS=0 */
++ 0x0cccf247, /* DRD2B1: *idx3 = EU3(); EU3(var9,var7) */
++ 0x80004000, /* LCDEXT: idx2 = 0x00000000; ; */
++ 0xb8c80029, /* LCD: idx3 = *(idx1 + var0000001a); idx3 once var0; idx3 += inc5 */
++ 0x70000002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
++ 0x088cf8d1, /* DRD2B1: idx2 = EU3(); EU3(idx3,var17) */
++ 0x00002f10, /* DRD1A: var11 = idx2; FN=0 init=0 WS=0 RS=0 */
++ 0x99198432, /* LCD: idx2 = idx2, idx3 = idx3; idx2 > var16; idx2 += inc6, idx3 += inc2 */
++ 0x008ac398, /* DRD1A: *idx0 = *idx3; FN=0 init=4 WS=1 RS=1 */
++ 0x80004000, /* LCDEXT: idx2 = 0x00000000; ; */
++ 0x9999802d, /* LCD: idx3 = idx3; idx3 once var0; idx3 += inc5 */
++ 0x70000002, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
++ 0x048cfc53, /* DRD2B1: var18 = EU3(); EU3(*idx1,var19) */
++ 0x60000008, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=8 EXT init=0 WS=0 RS=0 */
++ 0x088cf48b, /* DRD2B1: idx2 = EU3(); EU3(var18,var11) */
++ 0x99198481, /* LCD: idx2 = idx2, idx3 = idx3; idx2 > var18; idx2 += inc0, idx3 += inc1 */
++ 0x009ec398, /* DRD1A: *idx0 = *idx3; FN=0 init=4 WS=3 RS=3 */
++ 0x991983b2, /* LCD: idx2 = idx2, idx3 = idx3; idx2 > var14; idx2 += inc6, idx3 += inc2 */
++ 0x088ac398, /* DRD1A: *idx0 = *idx3; FN=0 TFD init=4 WS=1 RS=1 */
++ 0x9919002d, /* LCD: idx2 = idx2; idx2 once var0; idx2 += inc5 */
++ 0x60000005, /* DRD2A: EU0=0 EU1=0 EU2=0 EU3=5 EXT init=0 WS=0 RS=0 */
++ 0x0c4cf88e, /* DRD2B1: *idx1 = EU3(); EU3(idx2,var14) */
++ 0x000001f8, /* NOP */
++
++ /* VAR[13]-VAR[19] */
++ 0x0c000000,
++ 0x40000000,
++ 0x7fff7fff,
++ 0x00000000,
++ 0x00000003,
++ 0x40000004,
++ 0x43ffffff,
++
++ /* INC[0]-INC[6] */
++ 0x40000000,
++ 0xe0000000,
++ 0xe0000000,
++ 0xa0000008,
++ 0x20000000,
++ 0x00000000,
++ 0x4000ffff,
++};
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0022-MPC52xx-PCI-now-working-on-lite5200.-ugly-but-working.txt b/packages/linux/linux-efika-2.6.20/0022-MPC52xx-PCI-now-working-on-lite5200.-ugly-but-working.txt
new file mode 100644
index 0000000000..dbf61629fc
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0022-MPC52xx-PCI-now-working-on-lite5200.-ugly-but-working.txt
@@ -0,0 +1,464 @@
+From c4c2f5cb57335b1b47aa8007b0cfce48cc46fa06 Mon Sep 17 00:00:00 2001
+From: Grant Likely <grant.likely@secretlab.ca>
+Date: Tue, 21 Nov 2006 14:41:59 -0700
+Subject: [PATCH] [MPC52xx] PCI now working on lite5200... ugly, but working
+
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+---
+ arch/powerpc/platforms/52xx/mpc52xx_pci.c | 334 +++++++++++++++++++++++++++++
+ arch/powerpc/platforms/52xx/mpc52xx_pci.h | 104 +++++++++
+ 2 files changed, 438 insertions(+), 0 deletions(-)
+
+diff --git a/arch/powerpc/platforms/52xx/mpc52xx_pci.c b/arch/powerpc/platforms/52xx/mpc52xx_pci.c
+new file mode 100644
+index 0000000..07dce3c
+--- /dev/null
++++ b/arch/powerpc/platforms/52xx/mpc52xx_pci.c
+@@ -0,0 +1,334 @@
++/*
++ * PCI code for the Freescale MPC52xx embedded CPU.
++ *
++ * Copyright (C) 2004 Secret Lab Technologies Ltd.
++ * Grant Likely <grant.likely@secretlab.ca>
++ * Copyright (C) 2004 Sylvain Munaut <tnt@246tNt.com>
++ *
++ * This file is licensed under the terms of the GNU General Public License
++ * version 2. This program is licensed "as is" without any warranty of any
++ * kind, whether express or implied.
++ */
++
++#define DEBUG
++
++#include <asm/pci.h>
++#include <asm/mpc52xx.h>
++#include "mpc52xx_pci.h"
++#include <asm/delay.h>
++#include <asm/machdep.h>
++#include <linux/kernel.h>
++
++
++/* This macro is defined to activate the workaround for the bug
++ 435 of the MPC5200 (L25R). With it activated, we don't do any
++ 32 bits configuration access during type-1 cycles */
++#define MPC5200_BUG_435_WORKAROUND
++
++
++static int
++mpc52xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
++ int offset, int len, u32 *val)
++{
++ struct pci_controller *hose = bus->sysdata;
++ u32 value;
++
++ if (ppc_md.pci_exclude_device)
++ if (ppc_md.pci_exclude_device(bus->number, devfn))
++ return PCIBIOS_DEVICE_NOT_FOUND;
++
++ out_be32(hose->cfg_addr,
++ (1 << 31) |
++ ((bus->number - hose->bus_offset) << 16) |
++ (devfn << 8) |
++ (offset & 0xfc));
++ mb();
++
++#ifdef MPC5200_BUG_435_WORKAROUND
++ if (bus->number != hose->bus_offset) {
++ switch (len) {
++ case 1:
++ value = in_8(((u8 __iomem *)hose->cfg_data) +
++ (offset & 3));
++ break;
++ case 2:
++ value = in_le16(((u16 __iomem *)hose->cfg_data) +
++ ((offset>>1) & 1));
++ break;
++
++ default:
++ value = in_le16((u16 __iomem *)hose->cfg_data) |
++ (in_le16(((u16 __iomem *)hose->cfg_data) + 1) << 16);
++ break;
++ }
++ }
++ else
++#endif
++ {
++ value = in_le32(hose->cfg_data);
++
++ if (len != 4) {
++ value >>= ((offset & 0x3) << 3);
++ value &= 0xffffffff >> (32 - (len << 3));
++ }
++ }
++
++ *val = value;
++
++ out_be32(hose->cfg_addr, 0);
++ mb();
++
++ return PCIBIOS_SUCCESSFUL;
++}
++
++static int
++mpc52xx_pci_write_config(struct pci_bus *bus, unsigned int devfn,
++ int offset, int len, u32 val)
++{
++ struct pci_controller *hose = bus->sysdata;
++ u32 value, mask;
++
++ if (ppc_md.pci_exclude_device)
++ if (ppc_md.pci_exclude_device(bus->number, devfn))
++ return PCIBIOS_DEVICE_NOT_FOUND;
++
++ out_be32(hose->cfg_addr,
++ (1 << 31) |
++ ((bus->number - hose->bus_offset) << 16) |
++ (devfn << 8) |
++ (offset & 0xfc));
++ mb();
++
++#ifdef MPC5200_BUG_435_WORKAROUND
++ if (bus->number != hose->bus_offset) {
++ switch (len) {
++ case 1:
++ out_8(((u8 __iomem *)hose->cfg_data) +
++ (offset & 3), val);
++ break;
++ case 2:
++ out_le16(((u16 __iomem *)hose->cfg_data) +
++ ((offset>>1) & 1), val);
++ break;
++
++ default:
++ out_le16((u16 __iomem *)hose->cfg_data,
++ (u16)val);
++ out_le16(((u16 __iomem *)hose->cfg_data) + 1,
++ (u16)(val>>16));
++ break;
++ }
++ }
++ else
++#endif
++ {
++ if (len != 4) {
++ value = in_le32(hose->cfg_data);
++
++ offset = (offset & 0x3) << 3;
++ mask = (0xffffffff >> (32 - (len << 3)));
++ mask <<= offset;
++
++ value &= ~mask;
++ val = value | ((val << offset) & mask);
++ }
++
++ out_le32(hose->cfg_data, val);
++ }
++ mb();
++
++ out_be32(hose->cfg_addr, 0);
++ mb();
++
++ return PCIBIOS_SUCCESSFUL;
++}
++
++static struct pci_ops mpc52xx_pci_ops = {
++ .read = mpc52xx_pci_read_config,
++ .write = mpc52xx_pci_write_config
++};
++
++
++static void __init
++mpc52xx_pci_setup(struct pci_controller *hose,
++ struct mpc52xx_pci __iomem *pci_regs)
++{
++ struct resource *res;
++ u32 tmp;
++ int iwcr0 = 0, iwcr1 = 0, iwcr2 = 0;
++
++ pr_debug("mpc52xx_pci_setup()\n");
++
++ pr_debug("iw0btar=%x iw1btar=%x iw2btar=%x iwcr=%x\n",
++ in_be32(&pci_regs->iw0btar), in_be32(&pci_regs->iw1btar),
++ in_be32(&pci_regs->iw2btar), in_be32(&pci_regs->iwcr));
++ pr_debug("tbatr0=%x tbatr1=%x tcr=%x gscr=%x\n",
++ in_be32(&pci_regs->tbatr0), in_be32(&pci_regs->tbatr1),
++ in_be32(&pci_regs->tcr), in_be32(&pci_regs->gscr));
++
++ /* Setup control regs */
++ tmp = in_be32(&pci_regs->scr);
++ tmp |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
++ out_be32(&pci_regs->scr, tmp);
++
++ /* Setup windows */
++ res = &hose->mem_resources[0];
++ if (res->flags) {
++ pr_debug("mem_resource[0] = {.start=%x, .end=%x, .flags=%lx}\n",
++ res->start, res->end, res->flags);
++ out_be32(&pci_regs->iw0btar,
++ MPC52xx_PCI_IWBTAR_TRANSLATION(res->start, res->start,
++ res->end - res->start + 1));
++ iwcr0 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_MEM;
++ if (res->flags & IORESOURCE_PREFETCH)
++ iwcr0 |= MPC52xx_PCI_IWCR_READ_MULTI;
++ else
++ iwcr0 |= MPC52xx_PCI_IWCR_READ;
++ }
++
++ res = &hose->mem_resources[1];
++ if (res->flags) {
++ pr_debug("mem_resource[1] = {.start=%x, .end=%x, .flags=%lx}\n",
++ res->start, res->end, res->flags);
++ out_be32(&pci_regs->iw1btar,
++ MPC52xx_PCI_IWBTAR_TRANSLATION(res->start, res->start,
++ res->end - res->start + 1));
++ iwcr1 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_MEM;
++ if (res->flags & IORESOURCE_PREFETCH)
++ iwcr1 |= MPC52xx_PCI_IWCR_READ_MULTI;
++ else
++ iwcr1 |= MPC52xx_PCI_IWCR_READ;
++ }
++
++ res = &hose->io_resource;
++ if (!res) {
++ printk(KERN_ERR "%s: Didn't find IO resources\n", __FILE__);
++ return;
++ }
++ pr_debug(".io_resource={.start=%x,.end=%x,.flags=%lx} "
++ ".io_base_phys=%lx\n",
++ res->start, res->end, res->flags, hose->io_base_phys);
++ out_be32(&pci_regs->iw2btar,
++ MPC52xx_PCI_IWBTAR_TRANSLATION(hose->io_base_phys,
++ res->start,
++ res->end - res->start + 1));
++ iwcr2 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_IO;
++
++ pr_debug("iwcr0=%x iwcr1=%x iwcr2=%x iwcr=%x old_iwcr=%x\n",
++ iwcr0, iwcr1, iwcr2,
++ MPC52xx_PCI_IWCR_PACK(iwcr0, iwcr1, iwcr2),
++ in_be32(&pci_regs->iwcr));
++ out_be32(&pci_regs->iwcr, MPC52xx_PCI_IWCR_PACK(iwcr0, iwcr1, iwcr2));
++
++ out_be32(&pci_regs->tbatr0,
++ MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_IO );
++ out_be32(&pci_regs->tbatr1,
++ MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_MEM );
++
++ out_be32(&pci_regs->tcr, MPC52xx_PCI_TCR_LD);
++
++ /* Reset the exteral bus ( internal PCI controller is NOT resetted ) */
++ /* Not necessary and can be a bad thing if for example the bootloader
++ is displaying a splash screen or ... Just left here for
++ documentation purpose if anyone need it */
++ tmp = in_be32(&pci_regs->gscr);
++#if 0
++ out_be32(&pci_regs->gscr, tmp | MPC52xx_PCI_GSCR_PR);
++ udelay(50);
++#endif
++ out_be32(&pci_regs->gscr, tmp & ~MPC52xx_PCI_GSCR_PR);
++
++ pr_debug("iw0btar=%x iw1btar=%x iw2btar=%x iwcr=%x\n",
++ in_be32(&pci_regs->iw0btar), in_be32(&pci_regs->iw1btar),
++ in_be32(&pci_regs->iw2btar), in_be32(&pci_regs->iwcr));
++ pr_debug("tbatr0=%x tbatr1=%x tcr=%x gscr=%x\n",
++ in_be32(&pci_regs->tbatr0), in_be32(&pci_regs->tbatr1),
++ in_be32(&pci_regs->tcr), in_be32(&pci_regs->gscr));
++}
++
++static void
++mpc52xx_pci_fixup_resources(struct pci_dev *dev)
++{
++ int i;
++
++ pr_debug("mpc52xx_pci_fixup_resources() %.4x:%.4x\n",
++ dev->vendor, dev->device);
++
++ /* We don't rely on boot loader for PCI and resets all
++ devices */
++ for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
++ struct resource *res = &dev->resource[i];
++ if (res->end > res->start) { /* Only valid resources */
++ res->end -= res->start;
++ res->start = 0;
++ res->flags |= IORESOURCE_UNSET;
++ }
++ }
++
++ /* The PCI Host bridge of MPC52xx has a prefetch memory resource
++ fixed to 1Gb. Doesn't fit in the resource system so we remove it */
++ if ( (dev->vendor == PCI_VENDOR_ID_MOTOROLA) &&
++ ( dev->device == PCI_DEVICE_ID_MOTOROLA_MPC5200
++ || dev->device == PCI_DEVICE_ID_MOTOROLA_MPC5200B) ) {
++ struct resource *res = &dev->resource[1];
++ res->start = res->end = res->flags = 0;
++ }
++}
++
++int __init
++mpc52xx_add_bridge(struct device_node *node)
++{
++ int len;
++ struct mpc52xx_pci __iomem *pci_regs;
++ struct pci_controller *hose;
++ const int *bus_range;
++ struct resource rsrc;
++
++ pr_debug("Adding PCI host bridge %s\n", node->full_name);
++
++ pci_assign_all_buses = 1;
++
++ if (of_address_to_resource(node, 0, &rsrc) != 0) {
++ printk(KERN_ERR "Can't get %s resources\n", node->full_name);
++ return -EINVAL;
++ }
++
++ bus_range = get_property(node, "bus-range", &len);
++ if (bus_range == NULL || len < 2 * sizeof(int)) {
++ printk(KERN_WARNING "Can't get bus-range for %s, assume"
++ " bus 0\n", node->full_name);
++ }
++
++ hose = pcibios_alloc_controller();
++ if (!hose)
++ return -ENOMEM;
++
++ ppc_md.pcibios_fixup_resources = mpc52xx_pci_fixup_resources;
++
++ hose->arch_data = node;
++ hose->set_cfg_type = 1;
++
++ hose->first_busno = bus_range ? bus_range[0] : 0;
++ hose->last_busno = bus_range ? bus_range[1] : 0xff;
++
++ hose->bus_offset = 0;
++ hose->ops = &mpc52xx_pci_ops;
++
++ pci_regs = ioremap(rsrc.start, rsrc.end - rsrc.start + 1);
++ if (!pci_regs)
++ return -ENOMEM;
++
++ pci_process_bridge_OF_ranges(hose, node, 0);
++
++ hose->cfg_addr = &pci_regs->car;
++
++ hose->cfg_data = hose->io_base_virt;
++ hose->io_base_virt = ioremap(hose->io_base_phys,
++ hose->io_resource.end + 1 -
++ hose->io_resource.start);
++ isa_io_base = (unsigned long) hose->io_base_virt;
++
++ mpc52xx_pci_setup(hose, pci_regs);
++
++ return 0;
++}
+diff --git a/arch/powerpc/platforms/52xx/mpc52xx_pci.h b/arch/powerpc/platforms/52xx/mpc52xx_pci.h
+new file mode 100644
+index 0000000..07a659e
+--- /dev/null
++++ b/arch/powerpc/platforms/52xx/mpc52xx_pci.h
+@@ -0,0 +1,104 @@
++/*
++ * PCI Include file the Freescale MPC52xx embedded cpu chips
++ *
++ * Inspired from code written by Dale Farnsworth <dfarnsworth@mvista.com>
++ * for the 2.4 kernel.
++ *
++ * Copyright (C) 2004 Sylvain Munaut <tnt@246tNt.com>
++ * Copyright (C) 2003 MontaVista, Software, Inc.
++ *
++ * This file is licensed under the terms of the GNU General Public License
++ * version 2. This program is licensed "as is" without any warranty of any
++ * kind, whether express or implied.
++ */
++
++#ifndef __SYSLIB_MPC52xx_PCI_H__
++#define __SYSLIB_MPC52xx_PCI_H__
++
++/* ======================================================================== */
++/* PCI windows config */
++/* ======================================================================== */
++
++#define MPC52xx_PCI_TARGET_IO 0xf0000000
++#define MPC52xx_PCI_TARGET_MEM 0x00000000
++
++
++/* ======================================================================== */
++/* Structures mapping & Defines for PCI Unit */
++/* ======================================================================== */
++
++#define MPC52xx_PCI_GSCR_BM 0x40000000
++#define MPC52xx_PCI_GSCR_PE 0x20000000
++#define MPC52xx_PCI_GSCR_SE 0x10000000
++#define MPC52xx_PCI_GSCR_XLB2PCI_MASK 0x07000000
++#define MPC52xx_PCI_GSCR_XLB2PCI_SHIFT 24
++#define MPC52xx_PCI_GSCR_IPG2PCI_MASK 0x00070000
++#define MPC52xx_PCI_GSCR_IPG2PCI_SHIFT 16
++#define MPC52xx_PCI_GSCR_BME 0x00004000
++#define MPC52xx_PCI_GSCR_PEE 0x00002000
++#define MPC52xx_PCI_GSCR_SEE 0x00001000
++#define MPC52xx_PCI_GSCR_PR 0x00000001
++
++
++#define MPC52xx_PCI_IWBTAR_TRANSLATION(proc_ad,pci_ad,size) \
++ ( ( (proc_ad) & 0xff000000 ) | \
++ ( (((size) - 1) >> 8) & 0x00ff0000 ) | \
++ ( ((pci_ad) >> 16) & 0x0000ff00 ) )
++
++#define MPC52xx_PCI_IWCR_PACK(win0,win1,win2) (((win0) << 24) | \
++ ((win1) << 16) | \
++ ((win2) << 8))
++
++#define MPC52xx_PCI_IWCR_DISABLE 0x0
++#define MPC52xx_PCI_IWCR_ENABLE 0x1
++#define MPC52xx_PCI_IWCR_READ 0x0
++#define MPC52xx_PCI_IWCR_READ_LINE 0x2
++#define MPC52xx_PCI_IWCR_READ_MULTI 0x4
++#define MPC52xx_PCI_IWCR_MEM 0x0
++#define MPC52xx_PCI_IWCR_IO 0x8
++
++#define MPC52xx_PCI_TCR_P 0x01000000
++#define MPC52xx_PCI_TCR_LD 0x00010000
++
++#define MPC52xx_PCI_TBATR_DISABLE 0x0
++#define MPC52xx_PCI_TBATR_ENABLE 0x1
++
++
++#ifndef __ASSEMBLY__
++
++struct mpc52xx_pci {
++ u32 idr; /* PCI + 0x00 */
++ u32 scr; /* PCI + 0x04 */
++ u32 ccrir; /* PCI + 0x08 */
++ u32 cr1; /* PCI + 0x0C */
++ u32 bar0; /* PCI + 0x10 */
++ u32 bar1; /* PCI + 0x14 */
++ u8 reserved1[16]; /* PCI + 0x18 */
++ u32 ccpr; /* PCI + 0x28 */
++ u32 sid; /* PCI + 0x2C */
++ u32 erbar; /* PCI + 0x30 */
++ u32 cpr; /* PCI + 0x34 */
++ u8 reserved2[4]; /* PCI + 0x38 */
++ u32 cr2; /* PCI + 0x3C */
++ u8 reserved3[32]; /* PCI + 0x40 */
++ u32 gscr; /* PCI + 0x60 */
++ u32 tbatr0; /* PCI + 0x64 */
++ u32 tbatr1; /* PCI + 0x68 */
++ u32 tcr; /* PCI + 0x6C */
++ u32 iw0btar; /* PCI + 0x70 */
++ u32 iw1btar; /* PCI + 0x74 */
++ u32 iw2btar; /* PCI + 0x78 */
++ u8 reserved4[4]; /* PCI + 0x7C */
++ u32 iwcr; /* PCI + 0x80 */
++ u32 icr; /* PCI + 0x84 */
++ u32 isr; /* PCI + 0x88 */
++ u32 arb; /* PCI + 0x8C */
++ u8 reserved5[104]; /* PCI + 0x90 */
++ u32 car; /* PCI + 0xF8 */
++ u8 reserved6[4]; /* PCI + 0xFC */
++};
++
++#endif /* __ASSEMBLY__ */
++
++
++#endif /* __SYSLIB_MPC52xx_PCI_H__ */
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0023-POWERPC-Make-FEC-work-on-the-lite5200.txt b/packages/linux/linux-efika-2.6.20/0023-POWERPC-Make-FEC-work-on-the-lite5200.txt
new file mode 100644
index 0000000000..bdbafcb30d
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0023-POWERPC-Make-FEC-work-on-the-lite5200.txt
@@ -0,0 +1,700 @@
+From 3c687b616fee5d7097e965fce80f8f8b2b6e14cf Mon Sep 17 00:00:00 2001
+From: Grant Likely <grant.likely@secretlab.ca>
+Date: Mon, 4 Dec 2006 22:29:03 -0700
+Subject: [PATCH] [POWERPC] Make FEC work on the lite5200
+
+This patch may very well break Eth support on the Efika, and it's not
+very pretty. But is works well enough for an NFS rootfs. This also
+makes major bestcomm changes by removing Efika-specific bestcomm
+support and porting the arch/ppc bestcomm support driver which
+was posted to linuxppc-embedded about a year ago.
+
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+---
+ arch/powerpc/Kconfig | 5 +
+ arch/powerpc/platforms/52xx/Makefile | 3 +
+ arch/powerpc/platforms/52xx/bestcomm.c | 98 ++++++++++-------------
+ arch/powerpc/platforms/52xx/bestcomm.h | 13 ++-
+ arch/powerpc/platforms/52xx/fec.c | 1 -
+ arch/powerpc/platforms/52xx/lite5200.c | 9 ++
+ drivers/net/fec_mpc52xx/Kconfig | 2 +-
+ drivers/net/fec_mpc52xx/fec.c | 137 +++++++++++++++++++++++++++----
+ drivers/net/fec_mpc52xx/fec_phy.c | 6 ++
+ 9 files changed, 196 insertions(+), 78 deletions(-)
+
+diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
+index 8699dad..23d7d73 100644
+--- a/arch/powerpc/Kconfig
++++ b/arch/powerpc/Kconfig
+@@ -429,6 +429,11 @@ config PPC_MPC52xx
+ bool
+ default n
+
++config PPC_BESTCOMM
++ bool
++ depends on PPC_MPC52xx
++ default y
++
+ config PPC_EFIKA
+ bool "bPlan Efika 5k2. MPC5200B based computer"
+ depends on PPC_MULTIPLATFORM && PPC32
+diff --git a/arch/powerpc/platforms/52xx/Makefile b/arch/powerpc/platforms/52xx/Makefile
+index a46184a..d85ea04 100644
+--- a/arch/powerpc/platforms/52xx/Makefile
++++ b/arch/powerpc/platforms/52xx/Makefile
+@@ -3,6 +3,9 @@
+ #
+ ifeq ($(CONFIG_PPC_MERGE),y)
+ obj-y += mpc52xx_pic.o mpc52xx_common.o
++obj-$(CONFIG_PCI) += mpc52xx_pci.o
++obj-$(CONFIG_PPC_BESTCOMM) += bestcomm.o
++obj-$(CONFIG_FEC_MPC52xx) += sdma_fec_rx_task.o sdma_fec_tx_task.o fec.o
+ endif
+
+ obj-$(CONFIG_PPC_EFIKA) += efika-setup.o efika-pci.o
+diff --git a/arch/powerpc/platforms/52xx/bestcomm.c b/arch/powerpc/platforms/52xx/bestcomm.c
+index ef45e02..9935b01 100644
+--- a/arch/powerpc/platforms/52xx/bestcomm.c
++++ b/arch/powerpc/platforms/52xx/bestcomm.c
+@@ -16,7 +16,6 @@
+ * Andrey Volkov <avolkov@varma-el.com>, Varma Electronics Oy
+ */
+
+-#include <linux/config.h>
+ #include <linux/version.h>
+ #include <linux/module.h>
+ #include <linux/kernel.h>
+@@ -24,17 +23,19 @@
+ #include <linux/slab.h>
+ #include <linux/spinlock.h>
+ #include <linux/string.h>
+-#include <linux/device.h>
+
+ #include <asm/bug.h>
+ #include <asm/io.h>
+ #include <asm/mpc52xx.h>
++#include <asm/of_platform.h>
+
+ #include "bestcomm.h"
+
+-#define DRIVER_NAME "mpc52xx-sdma"
++#define DRIVER_NAME "mpc52xx-bestcomm"
+
+ struct sdma_io sdma;
++struct device_node *sdma_node;
++struct device_node *sram_node;
+
+ static spinlock_t sdma_lock = SPIN_LOCK_UNLOCKED;
+
+@@ -42,7 +43,8 @@ static spinlock_t sdma_lock = SPIN_LOCK_UNLOCKED;
+ void sdma_dump(void)
+ {
+ int i;
+- printk("** SDMA registers: pa = %08x, va = %08x\n", sdma.base_reg_addr, sdma.io);
++ printk("** SDMA registers: pa = %.8lx, va = %p\n",
++ sdma.base_reg_addr, sdma.io);
+ printk("** taskBar = %08x\n", sdma.io->taskBar);
+ printk("** currentPointer = %08x\n", sdma.io->currentPointer);
+ printk("** endPointer = %08x\n", sdma.io->endPointer);
+@@ -254,6 +256,7 @@ struct sdma *sdma_alloc(int queue_size)
+ }
+
+ s->num_bd = queue_size;
++ s->node = sdma_node;
+ return s;
+ }
+
+@@ -264,29 +267,49 @@ void sdma_free(struct sdma *s)
+ kfree(s);
+ }
+
+-static int __devinit mpc52xx_sdma_probe(struct device *dev)
++static int __init mpc52xx_sdma_init(void)
+ {
+- struct platform_device *pdev = to_platform_device(dev);
+ int task;
+ u32 *context;
+ u32 *fdt;
+ struct sdma_tdt *tdt;
+- struct resource *mem_io, *mem_sram;
+- u32 tdt_pa, var_pa, context_pa, fdt_pa;
++ struct resource mem_io, mem_sram;
++ u32 tdt_pa, var_pa, context_pa, fdt_pa;
+ int ret = -ENODEV;
+
+- mem_io = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+- mem_sram = platform_get_resource(pdev, IORESOURCE_MEM, 1);
+- if (!mem_io || !mem_sram)
++ /* Find SDMA registers */
++ sdma_node = of_find_compatible_node(NULL, "dma-controller", "mpc52xx-bestcomm");
++ if (!sdma_node) {
++ printk (KERN_ERR DRIVER_NAME ": could not locate SDRAM controller\n");
+ goto out;
++ }
++
++ if ((ret = of_address_to_resource(sdma_node, 0, &mem_io)) != 0) {
++ printk(KERN_ERR "Could not get address of SDMA controller\n");
++ goto out;
++ }
++
++ /* Find SRAM location */
++ sram_node = of_find_compatible_node(NULL, "sram", "mpc52xx-sram");
++ if (!sram_node) {
++ printk (KERN_ERR DRIVER_NAME ": could not locate SRAM\n");
++ goto out;
++ }
++
++ if ((ret = of_address_to_resource(sram_node, 0, &mem_sram)) != 0) {
++ printk(KERN_ERR "Could not get address of SRAM\n");
++ goto out;
++ }
+
+- if (!request_mem_region(mem_io->start, mem_io->end - mem_io->start + 1, DRIVER_NAME)) {
++ /* Map register regions */
++ if (!request_mem_region(mem_io.start, mem_io.end - mem_io.start + 1,
++ DRIVER_NAME)) {
+ printk(KERN_ERR DRIVER_NAME " - resource unavailable\n");
+ goto out;
+ }
+- sdma.base_reg_addr = mem_io->start;
++ sdma.base_reg_addr = mem_io.start;
+
+- sdma.io = ioremap_nocache(mem_io->start, sizeof(struct mpc52xx_sdma));
++ sdma.io = ioremap_nocache(mem_io.start, sizeof(struct mpc52xx_sdma));
+
+ if (!sdma.io ) {
+ printk(KERN_ERR DRIVER_NAME " - failed to map sdma regs\n");
+@@ -296,14 +319,14 @@ static int __devinit mpc52xx_sdma_probe(struct device *dev)
+
+ SDMA_DUMP_REGS();
+
+- sdma.sram_size = mem_sram->end - mem_sram->start + 1;
+- if (!request_mem_region(mem_sram->start, sdma.sram_size, DRIVER_NAME)) {
++ sdma.sram_size = mem_sram.end - mem_sram.start + 1;
++ if (!request_mem_region(mem_sram.start, sdma.sram_size, DRIVER_NAME)) {
+ printk(KERN_ERR DRIVER_NAME " - resource unavailable\n");
+ goto req_sram_error;
+ }
+
+- sdma.base_sram_addr = mem_sram->start;
+- sdma.sram = ioremap_nocache(mem_sram->start, sdma.sram_size);
++ sdma.base_sram_addr = mem_sram.start;
++ sdma.sram = ioremap_nocache(mem_sram.start, sdma.sram_size);
+ if (!sdma.sram ) {
+ printk(KERN_ERR DRIVER_NAME " - failed to map sdma sram\n");
+ ret = -ENOMEM;
+@@ -350,50 +373,17 @@ static int __devinit mpc52xx_sdma_probe(struct device *dev)
+ return 0;
+
+ map_sram_error:
+- release_mem_region(mem_sram->start, sdma.sram_size);
++ release_mem_region(mem_sram.start, sdma.sram_size);
+ req_sram_error:
+ iounmap(sdma.io);
+ map_io_error:
+- release_mem_region(mem_io->start, mem_io->end - mem_io->start + 1);
++ release_mem_region(mem_io.start, mem_io.end - mem_io.start + 1);
+ out:
+ printk(KERN_ERR "DMA: MPC52xx BestComm init FAILED !!!\n");
+ return ret;
+ }
+
+-
+-static struct device_driver mpc52xx_sdma_driver = {
+- .owner = THIS_MODULE,
+- .name = DRIVER_NAME,
+- .bus = &platform_bus_type,
+- .probe = mpc52xx_sdma_probe,
+-/* .remove = mpc52xx_sdma_remove, TODO */
+-#ifdef CONFIG_PM
+-/* .suspend = mpc52xx_sdma_suspend, TODO */
+-/* .resume = mpc52xx_sdma_resume, TODO */
+-#endif
+-};
+-
+-static int __init
+-mpc52xx_sdma_init(void)
+-{
+- printk(KERN_INFO "DMA: MPC52xx BestComm driver\n");
+- return driver_register(&mpc52xx_sdma_driver);
+-}
+-
+-#ifdef MODULE
+-static void __exit
+-mpc52xx_sdma_exit(void)
+-{
+- driver_unregister(&mpc52xx_sdma_driver);
+-}
+-#endif
+-
+-#ifndef MODULE
+- subsys_initcall(mpc52xx_sdma_init);
+-#else
+- module_init(mpc52xx_sdma_init);
+- module_exit(mpc52xx_sdma_exit);
+-#endif
++subsys_initcall(mpc52xx_sdma_init);
+
+
+ MODULE_DESCRIPTION("Freescale MPC52xx BestComm DMA");
+diff --git a/arch/powerpc/platforms/52xx/bestcomm.h b/arch/powerpc/platforms/52xx/bestcomm.h
+index 14bf397..bd2619d 100644
+--- a/arch/powerpc/platforms/52xx/bestcomm.h
++++ b/arch/powerpc/platforms/52xx/bestcomm.h
+@@ -19,6 +19,8 @@
+ #ifndef __BESTCOMM_BESTCOMM_H__
+ #define __BESTCOMM_BESTCOMM_H__
+
++#include "mpc52xx_pic.h"
++
+ /* Buffer Descriptor definitions */
+ struct sdma_bd {
+ u32 status;
+@@ -70,6 +72,7 @@ struct sdma {
+ u16 num_bd;
+ s16 tasknum;
+ u32 flags;
++ struct device_node *node;
+ };
+
+ #define SDMA_FLAGS_NONE 0x0000
+@@ -116,7 +119,9 @@ struct sdma_tdt {
+
+ static inline void sdma_enable_task(int task)
+ {
+- DPRINTK("***DMA enable task (%d): tdt = %08x\n",task, sdma.tdt);
++ u16 reg;
++
++ DPRINTK("***DMA enable task (%d): tdt = %p\n",task, sdma.tdt);
+ DPRINTK("***tdt->start = %08x\n",sdma.tdt[task].start);
+ DPRINTK("***tdt->stop = %08x\n",sdma.tdt[task].stop);
+ DPRINTK("***tdt->var = %08x\n",sdma.tdt[task].var);
+@@ -127,8 +132,8 @@ static inline void sdma_enable_task(int task)
+ DPRINTK("***tdt->litbase = %08x\n",sdma.tdt[task].litbase);
+ DPRINTK("***--------------\n");
+
+- u16 reg = in_be16(&sdma.io->tcr[task]);
+- DPRINTK("***enable task: &sdma.io->tcr=%08x, reg = %04x\n", &sdma.io->tcr, reg);
++ reg = in_be16(&sdma.io->tcr[task]);
++ DPRINTK("***enable task: &sdma.io->tcr=%p, reg = %04x\n", &sdma.io->tcr, reg);
+ out_be16(&sdma.io->tcr[task], reg | TASK_ENABLE);
+ }
+
+@@ -141,7 +146,7 @@ static inline void sdma_disable_task(int task)
+
+ static inline int sdma_irq(struct sdma *s)
+ {
+- return MPC52xx_SDMA_IRQ_BASE + s->tasknum;
++ return irq_of_parse_and_map(s->node, s->tasknum);
+ }
+
+ static inline void sdma_enable(struct sdma *s)
+diff --git a/arch/powerpc/platforms/52xx/fec.c b/arch/powerpc/platforms/52xx/fec.c
+index 8756856..90df6f4 100644
+--- a/arch/powerpc/platforms/52xx/fec.c
++++ b/arch/powerpc/platforms/52xx/fec.c
+@@ -16,7 +16,6 @@
+ * Andrey Volkov <avolkov@varma-el.com>, Varma Electronics Oy
+ */
+
+-#include <linux/config.h>
+ #include <linux/version.h>
+ #include <linux/module.h>
+ #include <linux/kernel.h>
+diff --git a/arch/powerpc/platforms/52xx/lite5200.c b/arch/powerpc/platforms/52xx/lite5200.c
+index 0f21bab..f1bbe24 100644
+--- a/arch/powerpc/platforms/52xx/lite5200.c
++++ b/arch/powerpc/platforms/52xx/lite5200.c
+@@ -107,6 +107,15 @@ static void __init lite52xx_setup_arch(void)
+ mpc52xx_setup_cpu(); /* Generic */
+ lite52xx_setup_cpu(); /* Platorm specific */
+
++#ifdef CONFIG_PCI
++ np = of_find_node_by_type(np, "pci");
++ if (np)
++ mpc52xx_add_bridge(np);
++
++ //ppc_md.pci_swizzle = common_swizzle;
++ //ppc_md.pci_exclude_device = mpc52xx_exclude_device;
++#endif
++
+ #ifdef CONFIG_BLK_DEV_INITRD
+ if (initrd_start)
+ ROOT_DEV = Root_RAM0;
+diff --git a/drivers/net/fec_mpc52xx/Kconfig b/drivers/net/fec_mpc52xx/Kconfig
+index 098c3fa..b6bce55 100644
+--- a/drivers/net/fec_mpc52xx/Kconfig
++++ b/drivers/net/fec_mpc52xx/Kconfig
+@@ -11,7 +11,7 @@ config FEC_MPC52xx
+ Fast Ethernet Controller
+
+ config USE_MDIO
+- bool " Use external Ethernet MII PHY"
++ bool "Use external Ethernet MII PHY"
+ select MII
+ depends FEC_MPC52xx
+ ---help---
+diff --git a/drivers/net/fec_mpc52xx/fec.c b/drivers/net/fec_mpc52xx/fec.c
+index b5f1559..894da79 100644
+--- a/drivers/net/fec_mpc52xx/fec.c
++++ b/drivers/net/fec_mpc52xx/fec.c
+@@ -30,17 +30,24 @@
+ #include <asm/ppcboot.h>
+ #include <asm/mpc52xx.h>
+
++#if defined(CONFIG_PPC_MERGE)
++#include <asm/of_device.h>
++#include <asm/of_platform.h>
++#include <platforms/52xx/bestcomm.h>
++#include <platforms/52xx/fec.h>
++#else
+ #include <syslib/bestcomm/bestcomm.h>
+ #include <syslib/bestcomm/fec.h>
++#endif
+
+ #include "fec_phy.h"
+ #include "fec.h"
+
+ #define DRIVER_NAME "mpc52xx-fec"
+
+-static irqreturn_t fec_interrupt(int, void *, struct pt_regs *);
+-static irqreturn_t fec_rx_interrupt(int, void *, struct pt_regs *);
+-static irqreturn_t fec_tx_interrupt(int, void *, struct pt_regs *);
++static irqreturn_t fec_interrupt(int, void *);
++static irqreturn_t fec_rx_interrupt(int, void *);
++static irqreturn_t fec_tx_interrupt(int, void *);
+ static struct net_device_stats *fec_get_stats(struct net_device *);
+ static void fec_set_multicast_list(struct net_device *dev);
+ static void fec_reinit(struct net_device *dev);
+@@ -233,7 +240,7 @@ static int fec_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
+
+ /* This handles BestComm transmit task interrupts
+ */
+-static irqreturn_t fec_tx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++static irqreturn_t fec_tx_interrupt(int irq, void *dev_id)
+ {
+ struct net_device *dev = dev_id;
+ struct fec_priv *priv = (struct fec_priv *)dev->priv;
+@@ -259,7 +266,7 @@ static irqreturn_t fec_tx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+ return IRQ_HANDLED;
+ }
+
+-static irqreturn_t fec_rx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++static irqreturn_t fec_rx_interrupt(int irq, void *dev_id)
+ {
+ struct net_device *dev = dev_id;
+ struct fec_priv *priv = (struct fec_priv *)dev->priv;
+@@ -316,7 +323,7 @@ static irqreturn_t fec_rx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+ return IRQ_HANDLED;
+ }
+
+-static irqreturn_t fec_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++static irqreturn_t fec_interrupt(int irq, void *dev_id)
+ {
+ struct net_device *dev = (struct net_device *)dev_id;
+ struct fec_priv *priv = (struct fec_priv *)dev->priv;
+@@ -324,13 +331,18 @@ static irqreturn_t fec_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+ int ievent;
+
+ ievent = in_be32(&fec->ievent);
++ if (!ievent)
++ return IRQ_NONE;
++
+ out_be32(&fec->ievent, ievent); /* clear pending events */
+
+ if (ievent & (FEC_IEVENT_RFIFO_ERROR | FEC_IEVENT_XFIFO_ERROR)) {
+- if (ievent & FEC_IEVENT_RFIFO_ERROR)
+- printk(KERN_WARNING "FEC_IEVENT_RFIFO_ERROR\n");
+- if (ievent & FEC_IEVENT_XFIFO_ERROR)
+- printk(KERN_WARNING "FEC_IEVENT_XFIFO_ERROR\n");
++ if (net_ratelimit() && (ievent & FEC_IEVENT_RFIFO_ERROR))
++ printk(KERN_WARNING "FEC_IEVENT_RFIFO_ERROR (%.8x)\n",
++ ievent);
++ if (net_ratelimit() && (ievent & FEC_IEVENT_XFIFO_ERROR))
++ printk(KERN_WARNING "FEC_IEVENT_XFIFO_ERROR (%.8x)\n",
++ ievent);
+ fec_reinit(dev);
+ }
+ else if (ievent & FEC_IEVENT_MII)
+@@ -495,7 +507,9 @@ static void fec_hw_init(struct net_device *dev)
+ {
+ struct fec_priv *priv = (struct fec_priv *)dev->priv;
+ struct mpc52xx_fec *fec = priv->fec;
++#if !defined(CONFIG_PPC_MERGE)
+ bd_t *bd = (bd_t *) &__res;
++#endif
+
+ out_be32(&fec->op_pause, 0x00010020);
+ out_be32(&fec->rfifo_cntrl, 0x0f000000);
+@@ -507,7 +521,9 @@ static void fec_hw_init(struct net_device *dev)
+ out_be32(&fec->iaddr1, 0x00000000); /* No individual filter */
+ out_be32(&fec->iaddr2, 0x00000000); /* No individual filter */
+
++#if !defined(CONFIG_PPC_MERGE)
+ priv->phy_speed = ((bd->bi_ipbfreq >> 20) / 5) << 1;
++#endif
+
+ fec_restart(dev, 0); /* always use half duplex mode only */
+ /*
+@@ -522,7 +538,6 @@ static void fec_reinit(struct net_device *dev)
+ {
+ struct fec_priv *priv = (struct fec_priv *)dev->priv;
+ struct mpc52xx_fec *fec = priv->fec;
+- static void fec_update_stat(struct net_device *);
+
+ netif_stop_queue(dev);
+ out_be32(&fec->imask, 0x0);
+@@ -551,19 +566,38 @@ static void fec_reinit(struct net_device *dev)
+ /* Platform Driver */
+ /* ======================================================================== */
+
++#if defined(CONFIG_PPC_MERGE)
++static int __devinit
++mpc52xx_fec_probe(struct of_device *op, const struct of_device_id *match)
++#else
+ static int __devinit
+ mpc52xx_fec_probe(struct device *dev)
++#endif
+ {
+ int ret;
++#if defined(CONFIG_PPC_MERGE)
++ int rv;
++ struct resource __mem;
++ struct resource *mem = &__mem;
++#else
+ struct platform_device *pdev = to_platform_device(dev);
++ struct resource *mem;
++#endif
+ struct net_device *ndev;
+ struct fec_priv *priv = NULL;
+- struct resource *mem;
+
+ volatile int dbg=0;
+ while(dbg)
+ __asm("nop");
+ /* Reserve FEC control zone */
++#if defined(CONFIG_PPC_MERGE)
++ rv = of_address_to_resource(op->node, 0, mem);
++ if (rv) {
++ printk(KERN_ERR DRIVER_NAME ": "
++ "Error while parsing device node resource\n" );
++ return rv;
++ }
++#else
+ mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if ((mem->end - mem->start + 1) != sizeof(struct mpc52xx_fec)) {
+ printk(KERN_ERR DRIVER_NAME
+@@ -571,7 +605,8 @@ mpc52xx_fec_probe(struct device *dev)
+ mem->end - mem->start + 1, sizeof(struct mpc52xx_fec));
+ return -EINVAL;
+ }
+-
++#endif
++
+ if (!request_mem_region(mem->start, sizeof(struct mpc52xx_fec),
+ DRIVER_NAME))
+ return -EBUSY;
+@@ -579,6 +614,8 @@ mpc52xx_fec_probe(struct device *dev)
+ /* Get the ether ndev & it's private zone */
+ ndev = alloc_etherdev(sizeof(struct fec_priv));
+ if (!ndev) {
++ printk(KERN_ERR DRIVER_NAME ": "
++ "Can not allocate the ethernet device\n" );
+ ret = -ENOMEM;
+ goto probe_error;
+ }
+@@ -609,6 +646,8 @@ mpc52xx_fec_probe(struct device *dev)
+ ioremap(mem->start, sizeof(struct mpc52xx_fec));
+
+ if (!priv->fec) {
++ printk(KERN_ERR DRIVER_NAME ": "
++ "Can not remap IO memory at 0x%8.8x\n", mem->start );
+ ret = -ENOMEM;
+ goto probe_error;
+ }
+@@ -618,6 +657,8 @@ mpc52xx_fec_probe(struct device *dev)
+ priv->tx_sdma = sdma_alloc(FEC_TX_NUM_BD);
+
+ if (!priv->rx_sdma || !priv->tx_sdma) {
++ printk(KERN_ERR DRIVER_NAME ": "
++ "Can not init SDMA tasks\n" );
+ ret = -ENOMEM;
+ goto probe_error;
+ }
+@@ -631,8 +672,13 @@ mpc52xx_fec_probe(struct device *dev)
+ goto probe_error;
+
+ /* Get the IRQ we need one by one */
+- /* Control */
++ /* Control */
++#if defined(CONFIG_PPC_MERGE)
++ ndev->irq = irq_of_parse_and_map(op->node, 0);
++#else
+ ndev->irq = platform_get_irq(pdev, 0);
++#endif
++
+ if (request_irq(ndev->irq, &fec_interrupt, SA_INTERRUPT,
+ DRIVER_NAME "_ctrl", ndev)) {
+ printk(KERN_ERR DRIVER_NAME ": ctrl interrupt request failed\n");
+@@ -641,26 +687,32 @@ mpc52xx_fec_probe(struct device *dev)
+ goto probe_error;
+ }
+
+- /* RX */
++ /* RX */
+ priv->r_irq = sdma_irq(priv->rx_sdma);
+ if (request_irq(priv->r_irq, &fec_rx_interrupt, SA_INTERRUPT,
+ DRIVER_NAME "_rx", ndev)) {
+- printk(KERN_ERR DRIVER_NAME ": rx interrupt request failed\n");
++ printk(KERN_ERR DRIVER_NAME ": rx request_irq(0x%x) failed\n",
++ priv->r_irq);
+ ret = -EBUSY;
+ priv->r_irq = -1; /* Don't try to free it */
+ goto probe_error;
+ }
+
+- /* TX */
++ /* TX */
+ priv->t_irq = sdma_irq(priv->tx_sdma);
+ if (request_irq(priv->t_irq, &fec_tx_interrupt, SA_INTERRUPT,
+ DRIVER_NAME "_tx", ndev)) {
+- printk(KERN_ERR DRIVER_NAME ": tx interrupt request failed\n");
++ printk(KERN_ERR DRIVER_NAME ": tx request_irq(0x%x) failed\n",
++ priv->t_irq);
+ ret = -EBUSY;
+ priv->t_irq = -1; /* Don't try to free it */
+ goto probe_error;
+ }
+
++#if defined(CONFIG_PPC_MERGE)
++ priv->phy_speed = ((mpc52xx_find_ipb_freq(op->node) >> 20) / 5) << 1;
++#endif
++
+ /* MAC address init */
+ if (memcmp(mpc52xx_fec_mac_addr, null_mac, 6) != 0)
+ memcpy(ndev->dev_addr, mpc52xx_fec_mac_addr, 6);
+@@ -679,7 +731,11 @@ mpc52xx_fec_probe(struct device *dev)
+ fec_mii_init(ndev);
+
+ /* We're done ! */
++#if defined(CONFIG_PPC_MERGE)
++ dev_set_drvdata(&op->dev, ndev);
++#else
+ dev_set_drvdata(dev, ndev);
++#endif
+
+ return 0;
+
+@@ -705,13 +761,22 @@ probe_error:
+ return ret;
+ }
+
++#if defined(CONFIG_PPC_MERGE)
++static int
++mpc52xx_fec_remove(struct of_device *op)
++#else
+ static int
+ mpc52xx_fec_remove(struct device *dev)
++#endif
+ {
+ struct net_device *ndev;
+ struct fec_priv *priv;
+
++#if defined(CONFIG_PPC_MERGE)
++ ndev = (struct net_device *) dev_get_drvdata(&op->dev);
++#else
+ ndev = (struct net_device *) dev_get_drvdata(dev);
++#endif
+ if (!ndev)
+ return 0;
+ priv = (struct fec_priv *) ndev->priv;
+@@ -728,10 +793,37 @@ mpc52xx_fec_remove(struct device *dev)
+
+ free_netdev(ndev);
+
++#if defined(CONFIG_PPC_MERGE)
++ dev_set_drvdata(&op->dev, NULL);
++#else
+ dev_set_drvdata(dev, NULL);
++#endif
+ return 0;
+ }
+
++#if defined(CONFIG_PPC_MERGE)
++static struct of_device_id mpc52xx_fec_of_match[] = {
++ { .compatible = "mpc5200-ethernet", },
++ { .compatible = "mpc52xx-fec", },
++ {},
++};
++
++static struct of_platform_driver mpc52xx_fec_driver = {
++ .name = DRIVER_NAME,
++ .owner = THIS_MODULE,
++ .match_table = mpc52xx_fec_of_match,
++ .probe = mpc52xx_fec_probe,
++ .remove = mpc52xx_fec_remove,
++#ifdef CONFIG_PM
++/* .suspend = mpc52xx_fec_suspend, TODO */
++/* .resume = mpc52xx_fec_resume, TODO */
++#endif
++ .driver = {
++ .name = DRIVER_NAME,
++ .owner = THIS_MODULE,
++ },
++};
++#else
+ static struct device_driver mpc52xx_fec_driver = {
+ .name = DRIVER_NAME,
+ .bus = &platform_bus_type,
+@@ -742,6 +834,7 @@ static struct device_driver mpc52xx_fec_driver = {
+ /* .resume = mpc52xx_fec_resume, TODO */
+ #endif
+ };
++#endif
+
+ /* ======================================================================== */
+ /* Module */
+@@ -750,13 +843,21 @@ static struct device_driver mpc52xx_fec_driver = {
+ static int __init
+ mpc52xx_fec_init(void)
+ {
++#if defined(CONFIG_PPC_MERGE)
++ return of_register_platform_driver(&mpc52xx_fec_driver);
++#else
+ return driver_register(&mpc52xx_fec_driver);
++#endif
+ }
+
+ static void __exit
+ mpc52xx_fec_exit(void)
+ {
++#if defined(CONFIG_PPC_MERGE)
++ of_unregister_platform_driver(&mpc52xx_fec_driver);
++#else
+ driver_unregister(&mpc52xx_fec_driver);
++#endif
+ }
+
+
+diff --git a/drivers/net/fec_mpc52xx/fec_phy.c b/drivers/net/fec_mpc52xx/fec_phy.c
+index 2a287de..25e0409 100644
+--- a/drivers/net/fec_mpc52xx/fec_phy.c
++++ b/drivers/net/fec_mpc52xx/fec_phy.c
+@@ -20,8 +20,14 @@
+ #include <linux/mii.h>
+ #include <asm/io.h>
+ #include <asm/mpc52xx.h>
++
++#ifdef CONFIG_PPC_MERGE
++#include <platforms/52xx/bestcomm.h>
++#else
+ #include <syslib/bestcomm/bestcomm.h>
+ #include <syslib/bestcomm/fec.h>
++#endif
++
+ #include "fec_phy.h"
+ #include "fec.h"
+
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0024-Add-missing-function-prototype.txt b/packages/linux/linux-efika-2.6.20/0024-Add-missing-function-prototype.txt
new file mode 100644
index 0000000000..2fb1a495bc
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0024-Add-missing-function-prototype.txt
@@ -0,0 +1,26 @@
+From 4ad1395745f590eba1b5220c8dd3ca6541f49db7 Mon Sep 17 00:00:00 2001
+From: Grant Likely <grant.likely@secretlab.ca>
+Date: Mon, 4 Dec 2006 22:55:49 -0700
+Subject: [PATCH] Add missing function prototype
+
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+---
+ include/asm-powerpc/mpc52xx.h | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/include/asm-powerpc/mpc52xx.h b/include/asm-powerpc/mpc52xx.h
+index 4560d72..7afd5bf 100644
+--- a/include/asm-powerpc/mpc52xx.h
++++ b/include/asm-powerpc/mpc52xx.h
+@@ -249,6 +249,8 @@ extern void mpc52xx_declare_of_platform_devices(void);
+ extern void mpc52xx_init_irq(void);
+ extern unsigned int mpc52xx_get_irq(void);
+
++extern int __init mpc52xx_add_bridge(struct device_node *node);
++
+ #endif /* __ASSEMBLY__ */
+
+ #endif /* __ASM_POWERPC_MPC52xx_H__ */
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0025-POWERPC-Misc-EFIKA-fixups-for-rtas-chrp.txt b/packages/linux/linux-efika-2.6.20/0025-POWERPC-Misc-EFIKA-fixups-for-rtas-chrp.txt
new file mode 100644
index 0000000000..8f39c3a3d6
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0025-POWERPC-Misc-EFIKA-fixups-for-rtas-chrp.txt
@@ -0,0 +1,133 @@
+From 95f80c44731c46261b0ba334b35ee803f21ef60b Mon Sep 17 00:00:00 2001
+From: Grant Likely <grant.likely@secretlab.ca>
+Date: Mon, 4 Dec 2006 23:01:13 -0700
+Subject: [PATCH] [POWERPC] Misc EFIKA fixups for rtas/chrp
+
+---
+ arch/powerpc/kernel/proc_ppc64.c | 9 --------
+ arch/powerpc/kernel/rtas-proc.c | 36 +++++++++++++++++++++++++---------
+ arch/powerpc/platforms/chrp/setup.c | 9 ++++++++
+ 3 files changed, 35 insertions(+), 19 deletions(-)
+
+diff --git a/arch/powerpc/kernel/proc_ppc64.c b/arch/powerpc/kernel/proc_ppc64.c
+index dd7001c..fa54220 100644
+--- a/arch/powerpc/kernel/proc_ppc64.c
++++ b/arch/powerpc/kernel/proc_ppc64.c
+@@ -51,15 +51,6 @@ static int __init proc_ppc64_create(void)
+ if (!root)
+ return 1;
+
+- if (!of_find_node_by_path("/rtas"))
+- return 0;
+-
+- if (!proc_mkdir("rtas", root))
+- return 1;
+-
+- if (!proc_symlink("rtas", NULL, "ppc64/rtas"))
+- return 1;
+-
+ return 0;
+ }
+ core_initcall(proc_ppc64_create);
+diff --git a/arch/powerpc/kernel/rtas-proc.c b/arch/powerpc/kernel/rtas-proc.c
+index 2fe82ab..4c06c32 100644
+--- a/arch/powerpc/kernel/rtas-proc.c
++++ b/arch/powerpc/kernel/rtas-proc.c
+@@ -253,43 +253,59 @@ static void get_location_code(struct seq_file *m,
+ static void check_location_string(struct seq_file *m, const char *c);
+ static void check_location(struct seq_file *m, const char *c);
+
++static int __init proc_rtas_create(void)
++{
++ struct proc_dir_entry *root;
++
++ root = proc_mkdir("rtas" , NULL);
++ if (!root)
++ return -1;
++
++#ifdef CONFIG_PPC64
++ if (!proc_symlink("rtas", NULL, "ppc64/rtas"))
++ return -1;
++#endif
++
++ return 0;
++}
++
+ static int __init proc_rtas_init(void)
+ {
+ struct proc_dir_entry *entry;
+
+- if (!machine_is(pseries))
+- return -ENODEV;
+-
+ rtas_node = of_find_node_by_name(NULL, "rtas");
+ if (rtas_node == NULL)
+ return -ENODEV;
+
+- entry = create_proc_entry("ppc64/rtas/progress", S_IRUGO|S_IWUSR, NULL);
++ if (proc_rtas_create() != 0)
++ return -ENODEV;
++
++ entry = create_proc_entry("rtas/progress", S_IRUGO|S_IWUSR, NULL);
+ if (entry)
+ entry->proc_fops = &ppc_rtas_progress_operations;
+
+- entry = create_proc_entry("ppc64/rtas/clock", S_IRUGO|S_IWUSR, NULL);
++ entry = create_proc_entry("rtas/clock", S_IRUGO|S_IWUSR, NULL);
+ if (entry)
+ entry->proc_fops = &ppc_rtas_clock_operations;
+
+- entry = create_proc_entry("ppc64/rtas/poweron", S_IWUSR|S_IRUGO, NULL);
++ entry = create_proc_entry("rtas/poweron", S_IWUSR|S_IRUGO, NULL);
+ if (entry)
+ entry->proc_fops = &ppc_rtas_poweron_operations;
+
+- entry = create_proc_entry("ppc64/rtas/sensors", S_IRUGO, NULL);
++ entry = create_proc_entry("rtas/sensors", S_IRUGO, NULL);
+ if (entry)
+ entry->proc_fops = &ppc_rtas_sensors_operations;
+
+- entry = create_proc_entry("ppc64/rtas/frequency", S_IWUSR|S_IRUGO,
++ entry = create_proc_entry("rtas/frequency", S_IWUSR|S_IRUGO,
+ NULL);
+ if (entry)
+ entry->proc_fops = &ppc_rtas_tone_freq_operations;
+
+- entry = create_proc_entry("ppc64/rtas/volume", S_IWUSR|S_IRUGO, NULL);
++ entry = create_proc_entry("rtas/volume", S_IWUSR|S_IRUGO, NULL);
+ if (entry)
+ entry->proc_fops = &ppc_rtas_tone_volume_operations;
+
+- entry = create_proc_entry("ppc64/rtas/rmo_buffer", S_IRUSR, NULL);
++ entry = create_proc_entry("rtas/rmo_buffer", S_IRUSR, NULL);
+ if (entry)
+ entry->proc_fops = &ppc_rtas_rmo_buf_ops;
+
+diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c
+index e1f51d4..ec4515c 100644
+--- a/arch/powerpc/platforms/chrp/setup.c
++++ b/arch/powerpc/platforms/chrp/setup.c
+@@ -580,11 +580,20 @@ static int __init chrp_probe(void)
+ {
+ char *dtype = of_get_flat_dt_prop(of_get_flat_dt_root(),
+ "device_type", NULL);
++
++ char *model = of_get_flat_dt_prop(of_get_flat_dt_root(),
++ "model", NULL);
+ if (dtype == NULL)
+ return 0;
+ if (strcmp(dtype, "chrp"))
+ return 0;
+
++ /*
++ * Filter out efika because it has its own platform
++ */
++ if (model && (strcmp(model, "EFIKA5K2") == 0) )
++ return 0;
++
+ ISA_DMA_THRESHOLD = ~0L;
+ DMA_MODE_READ = 0x44;
+ DMA_MODE_WRITE = 0x48;
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0026-POWERPC-Cleanup-mpc52xx-PCI-support.txt b/packages/linux/linux-efika-2.6.20/0026-POWERPC-Cleanup-mpc52xx-PCI-support.txt
new file mode 100644
index 0000000000..3119060f2b
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0026-POWERPC-Cleanup-mpc52xx-PCI-support.txt
@@ -0,0 +1,911 @@
+From 78aaa3476bf62a50d85a9753bf1ef82fd296ca73 Mon Sep 17 00:00:00 2001
+From: Grant Likely <grant.likely@secretlab.ca>
+Date: Mon, 11 Dec 2006 22:41:49 -0700
+Subject: [PATCH] [POWERPC] Cleanup mpc52xx PCI support
+
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+---
+ arch/powerpc/Kconfig | 17 ++-
+ arch/powerpc/platforms/52xx/mpc52xx_pci.c | 334 ------------------------
+ arch/powerpc/platforms/52xx/mpc52xx_pci.h | 104 --------
+ arch/powerpc/platforms/52xx/pci.c | 404 +++++++++++++++++++++++++++++
+ 4 files changed, 420 insertions(+), 439 deletions(-)
+
+diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
+index 23d7d73..ec17225 100644
+--- a/arch/powerpc/Kconfig
++++ b/arch/powerpc/Kconfig
+@@ -429,6 +429,21 @@ config PPC_MPC52xx
+ bool
+ default n
+
++config PPC_MPC5200
++ bool
++ select PPC_MPC52xx
++ default n
++
++config PPC_MPC5200_BUGFIX
++ bool "MPC5200 (L25R) bugfix support"
++ depends on PPC_MPC5200
++ default n
++ help
++ Enable workarounds for original MPC5200 errata. This is not required
++ for MPC5200B based boards.
++
++ It is safe to say 'Y' here
++
+ config PPC_BESTCOMM
+ bool
+ depends on PPC_MPC52xx
+@@ -446,7 +461,7 @@ config PPC_EFIKA
+ config PPC_LITE5200
+ bool "Freescale Lite5200 Eval Board"
+ depends on PPC_MULTIPLATFORM && PPC32
+- select PPC_MPC52xx
++ select PPC_MPC5200
+ default n
+
+ config PPC_PMAC
+diff --git a/arch/powerpc/platforms/52xx/mpc52xx_pci.c b/arch/powerpc/platforms/52xx/mpc52xx_pci.c
+deleted file mode 100644
+index 07dce3c..0000000
+--- a/arch/powerpc/platforms/52xx/mpc52xx_pci.c
++++ /dev/null
+@@ -1,334 +0,0 @@
+-/*
+- * PCI code for the Freescale MPC52xx embedded CPU.
+- *
+- * Copyright (C) 2004 Secret Lab Technologies Ltd.
+- * Grant Likely <grant.likely@secretlab.ca>
+- * Copyright (C) 2004 Sylvain Munaut <tnt@246tNt.com>
+- *
+- * This file is licensed under the terms of the GNU General Public License
+- * version 2. This program is licensed "as is" without any warranty of any
+- * kind, whether express or implied.
+- */
+-
+-#define DEBUG
+-
+-#include <asm/pci.h>
+-#include <asm/mpc52xx.h>
+-#include "mpc52xx_pci.h"
+-#include <asm/delay.h>
+-#include <asm/machdep.h>
+-#include <linux/kernel.h>
+-
+-
+-/* This macro is defined to activate the workaround for the bug
+- 435 of the MPC5200 (L25R). With it activated, we don't do any
+- 32 bits configuration access during type-1 cycles */
+-#define MPC5200_BUG_435_WORKAROUND
+-
+-
+-static int
+-mpc52xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
+- int offset, int len, u32 *val)
+-{
+- struct pci_controller *hose = bus->sysdata;
+- u32 value;
+-
+- if (ppc_md.pci_exclude_device)
+- if (ppc_md.pci_exclude_device(bus->number, devfn))
+- return PCIBIOS_DEVICE_NOT_FOUND;
+-
+- out_be32(hose->cfg_addr,
+- (1 << 31) |
+- ((bus->number - hose->bus_offset) << 16) |
+- (devfn << 8) |
+- (offset & 0xfc));
+- mb();
+-
+-#ifdef MPC5200_BUG_435_WORKAROUND
+- if (bus->number != hose->bus_offset) {
+- switch (len) {
+- case 1:
+- value = in_8(((u8 __iomem *)hose->cfg_data) +
+- (offset & 3));
+- break;
+- case 2:
+- value = in_le16(((u16 __iomem *)hose->cfg_data) +
+- ((offset>>1) & 1));
+- break;
+-
+- default:
+- value = in_le16((u16 __iomem *)hose->cfg_data) |
+- (in_le16(((u16 __iomem *)hose->cfg_data) + 1) << 16);
+- break;
+- }
+- }
+- else
+-#endif
+- {
+- value = in_le32(hose->cfg_data);
+-
+- if (len != 4) {
+- value >>= ((offset & 0x3) << 3);
+- value &= 0xffffffff >> (32 - (len << 3));
+- }
+- }
+-
+- *val = value;
+-
+- out_be32(hose->cfg_addr, 0);
+- mb();
+-
+- return PCIBIOS_SUCCESSFUL;
+-}
+-
+-static int
+-mpc52xx_pci_write_config(struct pci_bus *bus, unsigned int devfn,
+- int offset, int len, u32 val)
+-{
+- struct pci_controller *hose = bus->sysdata;
+- u32 value, mask;
+-
+- if (ppc_md.pci_exclude_device)
+- if (ppc_md.pci_exclude_device(bus->number, devfn))
+- return PCIBIOS_DEVICE_NOT_FOUND;
+-
+- out_be32(hose->cfg_addr,
+- (1 << 31) |
+- ((bus->number - hose->bus_offset) << 16) |
+- (devfn << 8) |
+- (offset & 0xfc));
+- mb();
+-
+-#ifdef MPC5200_BUG_435_WORKAROUND
+- if (bus->number != hose->bus_offset) {
+- switch (len) {
+- case 1:
+- out_8(((u8 __iomem *)hose->cfg_data) +
+- (offset & 3), val);
+- break;
+- case 2:
+- out_le16(((u16 __iomem *)hose->cfg_data) +
+- ((offset>>1) & 1), val);
+- break;
+-
+- default:
+- out_le16((u16 __iomem *)hose->cfg_data,
+- (u16)val);
+- out_le16(((u16 __iomem *)hose->cfg_data) + 1,
+- (u16)(val>>16));
+- break;
+- }
+- }
+- else
+-#endif
+- {
+- if (len != 4) {
+- value = in_le32(hose->cfg_data);
+-
+- offset = (offset & 0x3) << 3;
+- mask = (0xffffffff >> (32 - (len << 3)));
+- mask <<= offset;
+-
+- value &= ~mask;
+- val = value | ((val << offset) & mask);
+- }
+-
+- out_le32(hose->cfg_data, val);
+- }
+- mb();
+-
+- out_be32(hose->cfg_addr, 0);
+- mb();
+-
+- return PCIBIOS_SUCCESSFUL;
+-}
+-
+-static struct pci_ops mpc52xx_pci_ops = {
+- .read = mpc52xx_pci_read_config,
+- .write = mpc52xx_pci_write_config
+-};
+-
+-
+-static void __init
+-mpc52xx_pci_setup(struct pci_controller *hose,
+- struct mpc52xx_pci __iomem *pci_regs)
+-{
+- struct resource *res;
+- u32 tmp;
+- int iwcr0 = 0, iwcr1 = 0, iwcr2 = 0;
+-
+- pr_debug("mpc52xx_pci_setup()\n");
+-
+- pr_debug("iw0btar=%x iw1btar=%x iw2btar=%x iwcr=%x\n",
+- in_be32(&pci_regs->iw0btar), in_be32(&pci_regs->iw1btar),
+- in_be32(&pci_regs->iw2btar), in_be32(&pci_regs->iwcr));
+- pr_debug("tbatr0=%x tbatr1=%x tcr=%x gscr=%x\n",
+- in_be32(&pci_regs->tbatr0), in_be32(&pci_regs->tbatr1),
+- in_be32(&pci_regs->tcr), in_be32(&pci_regs->gscr));
+-
+- /* Setup control regs */
+- tmp = in_be32(&pci_regs->scr);
+- tmp |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
+- out_be32(&pci_regs->scr, tmp);
+-
+- /* Setup windows */
+- res = &hose->mem_resources[0];
+- if (res->flags) {
+- pr_debug("mem_resource[0] = {.start=%x, .end=%x, .flags=%lx}\n",
+- res->start, res->end, res->flags);
+- out_be32(&pci_regs->iw0btar,
+- MPC52xx_PCI_IWBTAR_TRANSLATION(res->start, res->start,
+- res->end - res->start + 1));
+- iwcr0 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_MEM;
+- if (res->flags & IORESOURCE_PREFETCH)
+- iwcr0 |= MPC52xx_PCI_IWCR_READ_MULTI;
+- else
+- iwcr0 |= MPC52xx_PCI_IWCR_READ;
+- }
+-
+- res = &hose->mem_resources[1];
+- if (res->flags) {
+- pr_debug("mem_resource[1] = {.start=%x, .end=%x, .flags=%lx}\n",
+- res->start, res->end, res->flags);
+- out_be32(&pci_regs->iw1btar,
+- MPC52xx_PCI_IWBTAR_TRANSLATION(res->start, res->start,
+- res->end - res->start + 1));
+- iwcr1 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_MEM;
+- if (res->flags & IORESOURCE_PREFETCH)
+- iwcr1 |= MPC52xx_PCI_IWCR_READ_MULTI;
+- else
+- iwcr1 |= MPC52xx_PCI_IWCR_READ;
+- }
+-
+- res = &hose->io_resource;
+- if (!res) {
+- printk(KERN_ERR "%s: Didn't find IO resources\n", __FILE__);
+- return;
+- }
+- pr_debug(".io_resource={.start=%x,.end=%x,.flags=%lx} "
+- ".io_base_phys=%lx\n",
+- res->start, res->end, res->flags, hose->io_base_phys);
+- out_be32(&pci_regs->iw2btar,
+- MPC52xx_PCI_IWBTAR_TRANSLATION(hose->io_base_phys,
+- res->start,
+- res->end - res->start + 1));
+- iwcr2 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_IO;
+-
+- pr_debug("iwcr0=%x iwcr1=%x iwcr2=%x iwcr=%x old_iwcr=%x\n",
+- iwcr0, iwcr1, iwcr2,
+- MPC52xx_PCI_IWCR_PACK(iwcr0, iwcr1, iwcr2),
+- in_be32(&pci_regs->iwcr));
+- out_be32(&pci_regs->iwcr, MPC52xx_PCI_IWCR_PACK(iwcr0, iwcr1, iwcr2));
+-
+- out_be32(&pci_regs->tbatr0,
+- MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_IO );
+- out_be32(&pci_regs->tbatr1,
+- MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_MEM );
+-
+- out_be32(&pci_regs->tcr, MPC52xx_PCI_TCR_LD);
+-
+- /* Reset the exteral bus ( internal PCI controller is NOT resetted ) */
+- /* Not necessary and can be a bad thing if for example the bootloader
+- is displaying a splash screen or ... Just left here for
+- documentation purpose if anyone need it */
+- tmp = in_be32(&pci_regs->gscr);
+-#if 0
+- out_be32(&pci_regs->gscr, tmp | MPC52xx_PCI_GSCR_PR);
+- udelay(50);
+-#endif
+- out_be32(&pci_regs->gscr, tmp & ~MPC52xx_PCI_GSCR_PR);
+-
+- pr_debug("iw0btar=%x iw1btar=%x iw2btar=%x iwcr=%x\n",
+- in_be32(&pci_regs->iw0btar), in_be32(&pci_regs->iw1btar),
+- in_be32(&pci_regs->iw2btar), in_be32(&pci_regs->iwcr));
+- pr_debug("tbatr0=%x tbatr1=%x tcr=%x gscr=%x\n",
+- in_be32(&pci_regs->tbatr0), in_be32(&pci_regs->tbatr1),
+- in_be32(&pci_regs->tcr), in_be32(&pci_regs->gscr));
+-}
+-
+-static void
+-mpc52xx_pci_fixup_resources(struct pci_dev *dev)
+-{
+- int i;
+-
+- pr_debug("mpc52xx_pci_fixup_resources() %.4x:%.4x\n",
+- dev->vendor, dev->device);
+-
+- /* We don't rely on boot loader for PCI and resets all
+- devices */
+- for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
+- struct resource *res = &dev->resource[i];
+- if (res->end > res->start) { /* Only valid resources */
+- res->end -= res->start;
+- res->start = 0;
+- res->flags |= IORESOURCE_UNSET;
+- }
+- }
+-
+- /* The PCI Host bridge of MPC52xx has a prefetch memory resource
+- fixed to 1Gb. Doesn't fit in the resource system so we remove it */
+- if ( (dev->vendor == PCI_VENDOR_ID_MOTOROLA) &&
+- ( dev->device == PCI_DEVICE_ID_MOTOROLA_MPC5200
+- || dev->device == PCI_DEVICE_ID_MOTOROLA_MPC5200B) ) {
+- struct resource *res = &dev->resource[1];
+- res->start = res->end = res->flags = 0;
+- }
+-}
+-
+-int __init
+-mpc52xx_add_bridge(struct device_node *node)
+-{
+- int len;
+- struct mpc52xx_pci __iomem *pci_regs;
+- struct pci_controller *hose;
+- const int *bus_range;
+- struct resource rsrc;
+-
+- pr_debug("Adding PCI host bridge %s\n", node->full_name);
+-
+- pci_assign_all_buses = 1;
+-
+- if (of_address_to_resource(node, 0, &rsrc) != 0) {
+- printk(KERN_ERR "Can't get %s resources\n", node->full_name);
+- return -EINVAL;
+- }
+-
+- bus_range = get_property(node, "bus-range", &len);
+- if (bus_range == NULL || len < 2 * sizeof(int)) {
+- printk(KERN_WARNING "Can't get bus-range for %s, assume"
+- " bus 0\n", node->full_name);
+- }
+-
+- hose = pcibios_alloc_controller();
+- if (!hose)
+- return -ENOMEM;
+-
+- ppc_md.pcibios_fixup_resources = mpc52xx_pci_fixup_resources;
+-
+- hose->arch_data = node;
+- hose->set_cfg_type = 1;
+-
+- hose->first_busno = bus_range ? bus_range[0] : 0;
+- hose->last_busno = bus_range ? bus_range[1] : 0xff;
+-
+- hose->bus_offset = 0;
+- hose->ops = &mpc52xx_pci_ops;
+-
+- pci_regs = ioremap(rsrc.start, rsrc.end - rsrc.start + 1);
+- if (!pci_regs)
+- return -ENOMEM;
+-
+- pci_process_bridge_OF_ranges(hose, node, 0);
+-
+- hose->cfg_addr = &pci_regs->car;
+-
+- hose->cfg_data = hose->io_base_virt;
+- hose->io_base_virt = ioremap(hose->io_base_phys,
+- hose->io_resource.end + 1 -
+- hose->io_resource.start);
+- isa_io_base = (unsigned long) hose->io_base_virt;
+-
+- mpc52xx_pci_setup(hose, pci_regs);
+-
+- return 0;
+-}
+diff --git a/arch/powerpc/platforms/52xx/mpc52xx_pci.h b/arch/powerpc/platforms/52xx/mpc52xx_pci.h
+deleted file mode 100644
+index 07a659e..0000000
+--- a/arch/powerpc/platforms/52xx/mpc52xx_pci.h
++++ /dev/null
+@@ -1,104 +0,0 @@
+-/*
+- * PCI Include file the Freescale MPC52xx embedded cpu chips
+- *
+- * Inspired from code written by Dale Farnsworth <dfarnsworth@mvista.com>
+- * for the 2.4 kernel.
+- *
+- * Copyright (C) 2004 Sylvain Munaut <tnt@246tNt.com>
+- * Copyright (C) 2003 MontaVista, Software, Inc.
+- *
+- * This file is licensed under the terms of the GNU General Public License
+- * version 2. This program is licensed "as is" without any warranty of any
+- * kind, whether express or implied.
+- */
+-
+-#ifndef __SYSLIB_MPC52xx_PCI_H__
+-#define __SYSLIB_MPC52xx_PCI_H__
+-
+-/* ======================================================================== */
+-/* PCI windows config */
+-/* ======================================================================== */
+-
+-#define MPC52xx_PCI_TARGET_IO 0xf0000000
+-#define MPC52xx_PCI_TARGET_MEM 0x00000000
+-
+-
+-/* ======================================================================== */
+-/* Structures mapping & Defines for PCI Unit */
+-/* ======================================================================== */
+-
+-#define MPC52xx_PCI_GSCR_BM 0x40000000
+-#define MPC52xx_PCI_GSCR_PE 0x20000000
+-#define MPC52xx_PCI_GSCR_SE 0x10000000
+-#define MPC52xx_PCI_GSCR_XLB2PCI_MASK 0x07000000
+-#define MPC52xx_PCI_GSCR_XLB2PCI_SHIFT 24
+-#define MPC52xx_PCI_GSCR_IPG2PCI_MASK 0x00070000
+-#define MPC52xx_PCI_GSCR_IPG2PCI_SHIFT 16
+-#define MPC52xx_PCI_GSCR_BME 0x00004000
+-#define MPC52xx_PCI_GSCR_PEE 0x00002000
+-#define MPC52xx_PCI_GSCR_SEE 0x00001000
+-#define MPC52xx_PCI_GSCR_PR 0x00000001
+-
+-
+-#define MPC52xx_PCI_IWBTAR_TRANSLATION(proc_ad,pci_ad,size) \
+- ( ( (proc_ad) & 0xff000000 ) | \
+- ( (((size) - 1) >> 8) & 0x00ff0000 ) | \
+- ( ((pci_ad) >> 16) & 0x0000ff00 ) )
+-
+-#define MPC52xx_PCI_IWCR_PACK(win0,win1,win2) (((win0) << 24) | \
+- ((win1) << 16) | \
+- ((win2) << 8))
+-
+-#define MPC52xx_PCI_IWCR_DISABLE 0x0
+-#define MPC52xx_PCI_IWCR_ENABLE 0x1
+-#define MPC52xx_PCI_IWCR_READ 0x0
+-#define MPC52xx_PCI_IWCR_READ_LINE 0x2
+-#define MPC52xx_PCI_IWCR_READ_MULTI 0x4
+-#define MPC52xx_PCI_IWCR_MEM 0x0
+-#define MPC52xx_PCI_IWCR_IO 0x8
+-
+-#define MPC52xx_PCI_TCR_P 0x01000000
+-#define MPC52xx_PCI_TCR_LD 0x00010000
+-
+-#define MPC52xx_PCI_TBATR_DISABLE 0x0
+-#define MPC52xx_PCI_TBATR_ENABLE 0x1
+-
+-
+-#ifndef __ASSEMBLY__
+-
+-struct mpc52xx_pci {
+- u32 idr; /* PCI + 0x00 */
+- u32 scr; /* PCI + 0x04 */
+- u32 ccrir; /* PCI + 0x08 */
+- u32 cr1; /* PCI + 0x0C */
+- u32 bar0; /* PCI + 0x10 */
+- u32 bar1; /* PCI + 0x14 */
+- u8 reserved1[16]; /* PCI + 0x18 */
+- u32 ccpr; /* PCI + 0x28 */
+- u32 sid; /* PCI + 0x2C */
+- u32 erbar; /* PCI + 0x30 */
+- u32 cpr; /* PCI + 0x34 */
+- u8 reserved2[4]; /* PCI + 0x38 */
+- u32 cr2; /* PCI + 0x3C */
+- u8 reserved3[32]; /* PCI + 0x40 */
+- u32 gscr; /* PCI + 0x60 */
+- u32 tbatr0; /* PCI + 0x64 */
+- u32 tbatr1; /* PCI + 0x68 */
+- u32 tcr; /* PCI + 0x6C */
+- u32 iw0btar; /* PCI + 0x70 */
+- u32 iw1btar; /* PCI + 0x74 */
+- u32 iw2btar; /* PCI + 0x78 */
+- u8 reserved4[4]; /* PCI + 0x7C */
+- u32 iwcr; /* PCI + 0x80 */
+- u32 icr; /* PCI + 0x84 */
+- u32 isr; /* PCI + 0x88 */
+- u32 arb; /* PCI + 0x8C */
+- u8 reserved5[104]; /* PCI + 0x90 */
+- u32 car; /* PCI + 0xF8 */
+- u8 reserved6[4]; /* PCI + 0xFC */
+-};
+-
+-#endif /* __ASSEMBLY__ */
+-
+-
+-#endif /* __SYSLIB_MPC52xx_PCI_H__ */
+diff --git a/arch/powerpc/platforms/52xx/pci.c b/arch/powerpc/platforms/52xx/pci.c
+new file mode 100644
+index 0000000..14940af
+--- /dev/null
++++ b/arch/powerpc/platforms/52xx/pci.c
+@@ -0,0 +1,404 @@
++/*
++ * PCI code for the Freescale MPC52xx embedded CPU.
++ *
++ * Copyright (C) 2004 Secret Lab Technologies Ltd.
++ * Grant Likely <grant.likely@secretlab.ca>
++ * Copyright (C) 2004 Sylvain Munaut <tnt@246tNt.com>
++ *
++ * This file is licensed under the terms of the GNU General Public License
++ * version 2. This program is licensed "as is" without any warranty of any
++ * kind, whether express or implied.
++ */
++
++#undef DEBUG
++
++#include <asm/pci.h>
++#include <asm/mpc52xx.h>
++#include <asm/delay.h>
++#include <asm/machdep.h>
++#include <linux/kernel.h>
++
++
++/* ======================================================================== */
++/* PCI windows config */
++/* ======================================================================== */
++
++#define MPC52xx_PCI_TARGET_IO 0xf0000000
++#define MPC52xx_PCI_TARGET_MEM 0x00000000
++
++/* ======================================================================== */
++/* Structures mapping & Defines for PCI Unit */
++/* ======================================================================== */
++
++#define MPC52xx_PCI_GSCR_BM 0x40000000
++#define MPC52xx_PCI_GSCR_PE 0x20000000
++#define MPC52xx_PCI_GSCR_SE 0x10000000
++#define MPC52xx_PCI_GSCR_XLB2PCI_MASK 0x07000000
++#define MPC52xx_PCI_GSCR_XLB2PCI_SHIFT 24
++#define MPC52xx_PCI_GSCR_IPG2PCI_MASK 0x00070000
++#define MPC52xx_PCI_GSCR_IPG2PCI_SHIFT 16
++#define MPC52xx_PCI_GSCR_BME 0x00004000
++#define MPC52xx_PCI_GSCR_PEE 0x00002000
++#define MPC52xx_PCI_GSCR_SEE 0x00001000
++#define MPC52xx_PCI_GSCR_PR 0x00000001
++
++
++#define MPC52xx_PCI_IWBTAR_TRANSLATION(proc_ad,pci_ad,size) \
++ ( ( (proc_ad) & 0xff000000 ) | \
++ ( (((size) - 1) >> 8) & 0x00ff0000 ) | \
++ ( ((pci_ad) >> 16) & 0x0000ff00 ) )
++
++#define MPC52xx_PCI_IWCR_PACK(win0,win1,win2) (((win0) << 24) | \
++ ((win1) << 16) | \
++ ((win2) << 8))
++
++#define MPC52xx_PCI_IWCR_DISABLE 0x0
++#define MPC52xx_PCI_IWCR_ENABLE 0x1
++#define MPC52xx_PCI_IWCR_READ 0x0
++#define MPC52xx_PCI_IWCR_READ_LINE 0x2
++#define MPC52xx_PCI_IWCR_READ_MULTI 0x4
++#define MPC52xx_PCI_IWCR_MEM 0x0
++#define MPC52xx_PCI_IWCR_IO 0x8
++
++#define MPC52xx_PCI_TCR_P 0x01000000
++#define MPC52xx_PCI_TCR_LD 0x00010000
++
++#define MPC52xx_PCI_TBATR_DISABLE 0x0
++#define MPC52xx_PCI_TBATR_ENABLE 0x1
++
++struct mpc52xx_pci {
++ u32 idr; /* PCI + 0x00 */
++ u32 scr; /* PCI + 0x04 */
++ u32 ccrir; /* PCI + 0x08 */
++ u32 cr1; /* PCI + 0x0C */
++ u32 bar0; /* PCI + 0x10 */
++ u32 bar1; /* PCI + 0x14 */
++ u8 reserved1[16]; /* PCI + 0x18 */
++ u32 ccpr; /* PCI + 0x28 */
++ u32 sid; /* PCI + 0x2C */
++ u32 erbar; /* PCI + 0x30 */
++ u32 cpr; /* PCI + 0x34 */
++ u8 reserved2[4]; /* PCI + 0x38 */
++ u32 cr2; /* PCI + 0x3C */
++ u8 reserved3[32]; /* PCI + 0x40 */
++ u32 gscr; /* PCI + 0x60 */
++ u32 tbatr0; /* PCI + 0x64 */
++ u32 tbatr1; /* PCI + 0x68 */
++ u32 tcr; /* PCI + 0x6C */
++ u32 iw0btar; /* PCI + 0x70 */
++ u32 iw1btar; /* PCI + 0x74 */
++ u32 iw2btar; /* PCI + 0x78 */
++ u8 reserved4[4]; /* PCI + 0x7C */
++ u32 iwcr; /* PCI + 0x80 */
++ u32 icr; /* PCI + 0x84 */
++ u32 isr; /* PCI + 0x88 */
++ u32 arb; /* PCI + 0x8C */
++ u8 reserved5[104]; /* PCI + 0x90 */
++ u32 car; /* PCI + 0xF8 */
++ u8 reserved6[4]; /* PCI + 0xFC */
++};
++
++static int
++mpc52xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
++ int offset, int len, u32 *val)
++{
++ struct pci_controller *hose = bus->sysdata;
++ u32 value;
++
++ if (ppc_md.pci_exclude_device)
++ if (ppc_md.pci_exclude_device(bus->number, devfn))
++ return PCIBIOS_DEVICE_NOT_FOUND;
++
++ out_be32(hose->cfg_addr,
++ (1 << 31) |
++ ((bus->number - hose->bus_offset) << 16) |
++ (devfn << 8) |
++ (offset & 0xfc));
++ mb();
++
++#if defined(CONFIG_PPC_MPC5200_BUGFIX)
++ if (bus->number != hose->bus_offset) {
++ /* workaround for the bug 435 of the MPC5200 (L25R);
++ * Don't do 32 bits config access during type-1 cycles */
++ switch (len) {
++ case 1:
++ value = in_8(((u8 __iomem *)hose->cfg_data) +
++ (offset & 3));
++ break;
++ case 2:
++ value = in_le16(((u16 __iomem *)hose->cfg_data) +
++ ((offset>>1) & 1));
++ break;
++
++ default:
++ value = in_le16((u16 __iomem *)hose->cfg_data) |
++ (in_le16(((u16 __iomem *)hose->cfg_data) + 1) << 16);
++ break;
++ }
++ }
++ else
++#endif
++ {
++ value = in_le32(hose->cfg_data);
++
++ if (len != 4) {
++ value >>= ((offset & 0x3) << 3);
++ value &= 0xffffffff >> (32 - (len << 3));
++ }
++ }
++
++ *val = value;
++
++ out_be32(hose->cfg_addr, 0);
++ mb();
++
++ return PCIBIOS_SUCCESSFUL;
++}
++
++static int
++mpc52xx_pci_write_config(struct pci_bus *bus, unsigned int devfn,
++ int offset, int len, u32 val)
++{
++ struct pci_controller *hose = bus->sysdata;
++ u32 value, mask;
++
++ if (ppc_md.pci_exclude_device)
++ if (ppc_md.pci_exclude_device(bus->number, devfn))
++ return PCIBIOS_DEVICE_NOT_FOUND;
++
++ out_be32(hose->cfg_addr,
++ (1 << 31) |
++ ((bus->number - hose->bus_offset) << 16) |
++ (devfn << 8) |
++ (offset & 0xfc));
++ mb();
++
++#if defined(CONFIG_PPC_MPC5200_BUGFIX)
++ if (bus->number != hose->bus_offset) {
++ /* workaround for the bug 435 of the MPC5200 (L25R);
++ * Don't do 32 bits config access during type-1 cycles */
++ switch (len) {
++ case 1:
++ out_8(((u8 __iomem *)hose->cfg_data) +
++ (offset & 3), val);
++ break;
++ case 2:
++ out_le16(((u16 __iomem *)hose->cfg_data) +
++ ((offset>>1) & 1), val);
++ break;
++
++ default:
++ out_le16((u16 __iomem *)hose->cfg_data,
++ (u16)val);
++ out_le16(((u16 __iomem *)hose->cfg_data) + 1,
++ (u16)(val>>16));
++ break;
++ }
++ }
++ else
++#endif
++ {
++ if (len != 4) {
++ value = in_le32(hose->cfg_data);
++
++ offset = (offset & 0x3) << 3;
++ mask = (0xffffffff >> (32 - (len << 3)));
++ mask <<= offset;
++
++ value &= ~mask;
++ val = value | ((val << offset) & mask);
++ }
++
++ out_le32(hose->cfg_data, val);
++ }
++ mb();
++
++ out_be32(hose->cfg_addr, 0);
++ mb();
++
++ return PCIBIOS_SUCCESSFUL;
++}
++
++static struct pci_ops mpc52xx_pci_ops = {
++ .read = mpc52xx_pci_read_config,
++ .write = mpc52xx_pci_write_config
++};
++
++
++static void __init
++mpc52xx_pci_setup(struct pci_controller *hose,
++ struct mpc52xx_pci __iomem *pci_regs)
++{
++ struct resource *res;
++ u32 tmp;
++ int iwcr0 = 0, iwcr1 = 0, iwcr2 = 0;
++
++ pr_debug("mpc52xx_pci_setup(hose=%p, pci_regs=%p)\n", hose, pci_regs);
++
++ /* pci_process_bridge_OF_ranges() found all our addresses for us;
++ * now store them in the right places */
++ hose->cfg_addr = &pci_regs->car;
++ hose->cfg_data = hose->io_base_virt;
++ hose->io_base_virt = ioremap(hose->io_base_phys,
++ hose->io_resource.end + 1 -
++ hose->io_resource.start);
++ isa_io_base = (unsigned long) hose->io_base_virt;
++
++ /* Control regs */
++ tmp = in_be32(&pci_regs->scr);
++ tmp |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
++ out_be32(&pci_regs->scr, tmp);
++
++ /* Memory windows */
++ res = &hose->mem_resources[0];
++ if (res->flags) {
++ pr_debug("mem_resource[0] = {.start=%x, .end=%x, .flags=%lx}\n",
++ res->start, res->end, res->flags);
++ out_be32(&pci_regs->iw0btar,
++ MPC52xx_PCI_IWBTAR_TRANSLATION(res->start, res->start,
++ res->end - res->start + 1));
++ iwcr0 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_MEM;
++ if (res->flags & IORESOURCE_PREFETCH)
++ iwcr0 |= MPC52xx_PCI_IWCR_READ_MULTI;
++ else
++ iwcr0 |= MPC52xx_PCI_IWCR_READ;
++ }
++
++ res = &hose->mem_resources[1];
++ if (res->flags) {
++ pr_debug("mem_resource[1] = {.start=%x, .end=%x, .flags=%lx}\n",
++ res->start, res->end, res->flags);
++ out_be32(&pci_regs->iw1btar,
++ MPC52xx_PCI_IWBTAR_TRANSLATION(res->start, res->start,
++ res->end - res->start + 1));
++ iwcr1 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_MEM;
++ if (res->flags & IORESOURCE_PREFETCH)
++ iwcr1 |= MPC52xx_PCI_IWCR_READ_MULTI;
++ else
++ iwcr1 |= MPC52xx_PCI_IWCR_READ;
++ }
++
++ /* IO resources */
++ res = &hose->io_resource;
++ if (!res) {
++ printk(KERN_ERR "%s: Didn't find IO resources\n", __FILE__);
++ return;
++ }
++ pr_debug(".io_resource={.start=%x,.end=%x,.flags=%lx} "
++ ".io_base_phys=%lx\n",
++ res->start, res->end, res->flags, hose->io_base_phys);
++ out_be32(&pci_regs->iw2btar,
++ MPC52xx_PCI_IWBTAR_TRANSLATION(hose->io_base_phys,
++ res->start,
++ res->end - res->start + 1));
++ iwcr2 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_IO;
++
++ /* Set all the IWCR fields at once; they're in the same reg */
++ out_be32(&pci_regs->iwcr, MPC52xx_PCI_IWCR_PACK(iwcr0, iwcr1, iwcr2));
++
++ out_be32(&pci_regs->tbatr0,
++ MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_IO );
++ out_be32(&pci_regs->tbatr1,
++ MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_MEM );
++
++ out_be32(&pci_regs->tcr, MPC52xx_PCI_TCR_LD);
++
++#if 0
++ /* Reset the exteral bus ( internal PCI controller is NOT resetted ) */
++ /* Not necessary and can be a bad thing if for example the bootloader
++ is displaying a splash screen or ... Just left here for
++ documentation purpose if anyone need it */
++ tmp = in_be32(&pci_regs->gscr);
++ out_be32(&pci_regs->gscr, tmp | MPC52xx_PCI_GSCR_PR);
++ udelay(50);
++ out_be32(&pci_regs->gscr, tmp & ~MPC52xx_PCI_GSCR_PR);
++#endif
++}
++
++static void
++mpc52xx_pci_fixup_resources(struct pci_dev *dev)
++{
++ int i;
++
++ pr_debug("mpc52xx_pci_fixup_resources() %.4x:%.4x\n",
++ dev->vendor, dev->device);
++
++ /* We don't rely on boot loader for PCI and resets all
++ devices */
++ for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
++ struct resource *res = &dev->resource[i];
++ if (res->end > res->start) { /* Only valid resources */
++ res->end -= res->start;
++ res->start = 0;
++ res->flags |= IORESOURCE_UNSET;
++ }
++ }
++
++ /* The PCI Host bridge of MPC52xx has a prefetch memory resource
++ fixed to 1Gb. Doesn't fit in the resource system so we remove it */
++ if ( (dev->vendor == PCI_VENDOR_ID_MOTOROLA) &&
++ ( dev->device == PCI_DEVICE_ID_MOTOROLA_MPC5200
++ || dev->device == PCI_DEVICE_ID_MOTOROLA_MPC5200B) ) {
++ struct resource *res = &dev->resource[1];
++ res->start = res->end = res->flags = 0;
++ }
++}
++
++int __init
++mpc52xx_add_bridge(struct device_node *node)
++{
++ int len;
++ struct mpc52xx_pci __iomem *pci_regs;
++ struct pci_controller *hose;
++ const int *bus_range;
++ struct resource rsrc;
++
++ pr_debug("Adding MPC52xx PCI host bridge %s\n", node->full_name);
++
++ pci_assign_all_buses = 1;
++
++ if (of_address_to_resource(node, 0, &rsrc) != 0) {
++ printk(KERN_ERR "Can't get %s resources\n", node->full_name);
++ return -EINVAL;
++ }
++
++ bus_range = get_property(node, "bus-range", &len);
++ if (bus_range == NULL || len < 2 * sizeof(int)) {
++ printk(KERN_WARNING "Can't get %s bus-range, assume bus 0\n",
++ node->full_name);
++ bus_range = NULL;
++ }
++
++ /* There are some PCI quirks on the 52xx, register the hook to
++ * fix them. */
++ ppc_md.pcibios_fixup_resources = mpc52xx_pci_fixup_resources;
++
++ /* Alloc and initialize the pci controller. Values in the device
++ * tree are needed to configure the 52xx PCI controller. Rather
++ * than parse the tree here, let pci_process_bridge_OF_ranges()
++ * do it for us and extract the values after the fact */
++ hose = pcibios_alloc_controller();
++ if (!hose)
++ return -ENOMEM;
++
++ hose->arch_data = node;
++ hose->set_cfg_type = 1;
++
++ hose->first_busno = bus_range ? bus_range[0] : 0;
++ hose->last_busno = bus_range ? bus_range[1] : 0xff;
++
++ hose->bus_offset = 0;
++ hose->ops = &mpc52xx_pci_ops;
++
++ pci_regs = ioremap(rsrc.start, rsrc.end - rsrc.start + 1);
++ if (!pci_regs)
++ return -ENOMEM;
++
++ pci_process_bridge_OF_ranges(hose, node, 0);
++
++ /* Finish setting up PCI using values obtained by
++ * pci_proces_bridge_OF_ranges */
++ mpc52xx_pci_setup(hose, pci_regs);
++
++ return 0;
++}
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0027-POWERPC-Change-name-of-mpc52xx-pci-support-file-in-Makefile.txt b/packages/linux/linux-efika-2.6.20/0027-POWERPC-Change-name-of-mpc52xx-pci-support-file-in-Makefile.txt
new file mode 100644
index 0000000000..80a769b9bf
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0027-POWERPC-Change-name-of-mpc52xx-pci-support-file-in-Makefile.txt
@@ -0,0 +1,28 @@
+From 5145742e15b45e96c623f571dee421306dc95a3e Mon Sep 17 00:00:00 2001
+From: Grant Likely <grant.likely@secretlab.ca>
+Date: Mon, 11 Dec 2006 22:45:39 -0700
+Subject: [PATCH] [POWERPC] Change name of mpc52xx pci support file in Makefile
+
+Oops, missed a bit in the previous patch
+
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+---
+ arch/powerpc/platforms/52xx/Makefile | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/arch/powerpc/platforms/52xx/Makefile b/arch/powerpc/platforms/52xx/Makefile
+index d85ea04..a7c646a 100644
+--- a/arch/powerpc/platforms/52xx/Makefile
++++ b/arch/powerpc/platforms/52xx/Makefile
+@@ -3,7 +3,7 @@
+ #
+ ifeq ($(CONFIG_PPC_MERGE),y)
+ obj-y += mpc52xx_pic.o mpc52xx_common.o
+-obj-$(CONFIG_PCI) += mpc52xx_pci.o
++obj-$(CONFIG_PCI) += pci.o
+ obj-$(CONFIG_PPC_BESTCOMM) += bestcomm.o
+ obj-$(CONFIG_FEC_MPC52xx) += sdma_fec_rx_task.o sdma_fec_tx_task.o fec.o
+ endif
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0028-POWERPC-Change-link-order-so-mpc52xx-fec-always-shows-up-as-eth0.txt b/packages/linux/linux-efika-2.6.20/0028-POWERPC-Change-link-order-so-mpc52xx-fec-always-shows-up-as-eth0.txt
new file mode 100644
index 0000000000..0761bea354
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0028-POWERPC-Change-link-order-so-mpc52xx-fec-always-shows-up-as-eth0.txt
@@ -0,0 +1,47 @@
+From 2086d309f8b8de0b41119596d43f2a7bfe028a89 Mon Sep 17 00:00:00 2001
+From: Grant Likely <grant.likely@secretlab.ca>
+Date: Mon, 11 Dec 2006 22:46:59 -0700
+Subject: [PATCH] [POWERPC] Change link order so mpc52xx-fec always shows up as eth0
+
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+---
+ drivers/net/Makefile | 2 +-
+ drivers/net/fec_mpc52xx/fec.c | 2 ++
+ 2 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/net/Makefile b/drivers/net/Makefile
+index e6f903d..95f0963 100644
+--- a/drivers/net/Makefile
++++ b/drivers/net/Makefile
+@@ -24,6 +24,7 @@ ucc_geth_driver-objs := ucc_geth.o ucc_geth_phy.o
+ obj-$(CONFIG_PLIP) += plip.o
+
+ obj-$(CONFIG_ROADRUNNER) += rrunner.o
++obj-$(CONFIG_FEC_MPC52xx) += fec_mpc52xx/
+
+ obj-$(CONFIG_HAPPYMEAL) += sunhme.o
+ obj-$(CONFIG_SUNLANCE) += sunlance.o
+@@ -196,7 +197,6 @@ obj-$(CONFIG_SMC91X) += smc91x.o
+ obj-$(CONFIG_SMC911X) += smc911x.o
+ obj-$(CONFIG_DM9000) += dm9000.o
+ obj-$(CONFIG_FEC_8XX) += fec_8xx/
+-obj-$(CONFIG_FEC_MPC52xx) += fec_mpc52xx/
+
+ obj-$(CONFIG_MACB) += macb.o
+
+diff --git a/drivers/net/fec_mpc52xx/fec.c b/drivers/net/fec_mpc52xx/fec.c
+index 894da79..30cef2b 100644
+--- a/drivers/net/fec_mpc52xx/fec.c
++++ b/drivers/net/fec_mpc52xx/fec.c
+@@ -731,6 +731,8 @@ mpc52xx_fec_probe(struct device *dev)
+ fec_mii_init(ndev);
+
+ /* We're done ! */
++ printk(KERN_INFO "%s: mpc52xx-fec at %#lx,",
++ ndev->name, (long)mem->start);
+ #if defined(CONFIG_PPC_MERGE)
+ dev_set_drvdata(&op->dev, ndev);
+ #else
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0029-POWERPC-Fixup-pr_print-format-for-mpc52xx-pci-support.txt b/packages/linux/linux-efika-2.6.20/0029-POWERPC-Fixup-pr_print-format-for-mpc52xx-pci-support.txt
new file mode 100644
index 0000000000..3a1793924f
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0029-POWERPC-Fixup-pr_print-format-for-mpc52xx-pci-support.txt
@@ -0,0 +1,28 @@
+From 08bb999d4f8b866a570775db5788cd84edafd3f5 Mon Sep 17 00:00:00 2001
+From: Grant Likely <grant.likely@secretlab.ca>
+Date: Mon, 11 Dec 2006 23:00:24 -0700
+Subject: [PATCH] [POWERPC] Fixup pr_print format for mpc52xx pci support
+
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+---
+ arch/powerpc/platforms/52xx/pci.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/arch/powerpc/platforms/52xx/pci.c b/arch/powerpc/platforms/52xx/pci.c
+index 14940af..b732fdc 100644
+--- a/arch/powerpc/platforms/52xx/pci.c
++++ b/arch/powerpc/platforms/52xx/pci.c
+@@ -285,8 +285,8 @@ mpc52xx_pci_setup(struct pci_controller *hose,
+ return;
+ }
+ pr_debug(".io_resource={.start=%x,.end=%x,.flags=%lx} "
+- ".io_base_phys=%lx\n",
+- res->start, res->end, res->flags, hose->io_base_phys);
++ ".io_base_phys=0x%p\n",
++ res->start, res->end, res->flags, (void*)hose->io_base_phys);
+ out_be32(&pci_regs->iw2btar,
+ MPC52xx_PCI_IWBTAR_TRANSLATION(hose->io_base_phys,
+ res->start,
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0030-POWERPC-Add-mpc52xx-lite5200-PCI-support.txt b/packages/linux/linux-efika-2.6.20/0030-POWERPC-Add-mpc52xx-lite5200-PCI-support.txt
new file mode 100644
index 0000000000..dae76e0d75
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0030-POWERPC-Add-mpc52xx-lite5200-PCI-support.txt
@@ -0,0 +1,871 @@
+From 56aad819c662c854466a8c454c948e79dd2f0777 Mon Sep 17 00:00:00 2001
+From: Grant Likely <grant.likely@secretlab.ca>
+Date: Mon, 11 Dec 2006 23:23:40 -0700
+Subject: [PATCH] [POWERPC] Add mpc52xx/lite5200 PCI support
+
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+---
+ arch/powerpc/platforms/52xx/Makefile | 2 +-
+ arch/powerpc/platforms/52xx/lite5200.c | 3 -
+ arch/powerpc/platforms/52xx/mpc52xx_pci.c | 412 +++++++++++++++++++++++++++++
+ arch/powerpc/platforms/52xx/pci.c | 404 ----------------------------
+ 4 files changed, 413 insertions(+), 408 deletions(-)
+
+diff --git a/arch/powerpc/platforms/52xx/Makefile b/arch/powerpc/platforms/52xx/Makefile
+index a7c646a..d85ea04 100644
+--- a/arch/powerpc/platforms/52xx/Makefile
++++ b/arch/powerpc/platforms/52xx/Makefile
+@@ -3,7 +3,7 @@
+ #
+ ifeq ($(CONFIG_PPC_MERGE),y)
+ obj-y += mpc52xx_pic.o mpc52xx_common.o
+-obj-$(CONFIG_PCI) += pci.o
++obj-$(CONFIG_PCI) += mpc52xx_pci.o
+ obj-$(CONFIG_PPC_BESTCOMM) += bestcomm.o
+ obj-$(CONFIG_FEC_MPC52xx) += sdma_fec_rx_task.o sdma_fec_tx_task.o fec.o
+ endif
+diff --git a/arch/powerpc/platforms/52xx/lite5200.c b/arch/powerpc/platforms/52xx/lite5200.c
+index f1bbe24..cdb16bf 100644
+--- a/arch/powerpc/platforms/52xx/lite5200.c
++++ b/arch/powerpc/platforms/52xx/lite5200.c
+@@ -111,9 +111,6 @@ static void __init lite52xx_setup_arch(void)
+ np = of_find_node_by_type(np, "pci");
+ if (np)
+ mpc52xx_add_bridge(np);
+-
+- //ppc_md.pci_swizzle = common_swizzle;
+- //ppc_md.pci_exclude_device = mpc52xx_exclude_device;
+ #endif
+
+ #ifdef CONFIG_BLK_DEV_INITRD
+diff --git a/arch/powerpc/platforms/52xx/mpc52xx_pci.c b/arch/powerpc/platforms/52xx/mpc52xx_pci.c
+new file mode 100644
+index 0000000..faf161b
+--- /dev/null
++++ b/arch/powerpc/platforms/52xx/mpc52xx_pci.c
+@@ -0,0 +1,412 @@
++/*
++ * PCI code for the Freescale MPC52xx embedded CPU.
++ *
++ * Copyright (C) 2006 Secret Lab Technologies Ltd.
++ * Grant Likely <grant.likely@secretlab.ca>
++ * Copyright (C) 2004 Sylvain Munaut <tnt@246tNt.com>
++ *
++ * This file is licensed under the terms of the GNU General Public License
++ * version 2. This program is licensed "as is" without any warranty of any
++ * kind, whether express or implied.
++ */
++
++#undef DEBUG
++
++#include <asm/pci.h>
++#include <asm/mpc52xx.h>
++#include <asm/delay.h>
++#include <asm/machdep.h>
++#include <linux/kernel.h>
++
++
++/* ======================================================================== */
++/* PCI windows config */
++/* ======================================================================== */
++
++#define MPC52xx_PCI_TARGET_IO 0xf0000000
++#define MPC52xx_PCI_TARGET_MEM 0x00000000
++
++
++/* ======================================================================== */
++/* Structures mapping & Defines for PCI Unit */
++/* ======================================================================== */
++
++#define MPC52xx_PCI_GSCR_BM 0x40000000
++#define MPC52xx_PCI_GSCR_PE 0x20000000
++#define MPC52xx_PCI_GSCR_SE 0x10000000
++#define MPC52xx_PCI_GSCR_XLB2PCI_MASK 0x07000000
++#define MPC52xx_PCI_GSCR_XLB2PCI_SHIFT 24
++#define MPC52xx_PCI_GSCR_IPG2PCI_MASK 0x00070000
++#define MPC52xx_PCI_GSCR_IPG2PCI_SHIFT 16
++#define MPC52xx_PCI_GSCR_BME 0x00004000
++#define MPC52xx_PCI_GSCR_PEE 0x00002000
++#define MPC52xx_PCI_GSCR_SEE 0x00001000
++#define MPC52xx_PCI_GSCR_PR 0x00000001
++
++
++#define MPC52xx_PCI_IWBTAR_TRANSLATION(proc_ad,pci_ad,size) \
++ ( ( (proc_ad) & 0xff000000 ) | \
++ ( (((size) - 1) >> 8) & 0x00ff0000 ) | \
++ ( ((pci_ad) >> 16) & 0x0000ff00 ) )
++
++#define MPC52xx_PCI_IWCR_PACK(win0,win1,win2) (((win0) << 24) | \
++ ((win1) << 16) | \
++ ((win2) << 8))
++
++#define MPC52xx_PCI_IWCR_DISABLE 0x0
++#define MPC52xx_PCI_IWCR_ENABLE 0x1
++#define MPC52xx_PCI_IWCR_READ 0x0
++#define MPC52xx_PCI_IWCR_READ_LINE 0x2
++#define MPC52xx_PCI_IWCR_READ_MULTI 0x4
++#define MPC52xx_PCI_IWCR_MEM 0x0
++#define MPC52xx_PCI_IWCR_IO 0x8
++
++#define MPC52xx_PCI_TCR_P 0x01000000
++#define MPC52xx_PCI_TCR_LD 0x00010000
++
++#define MPC52xx_PCI_TBATR_DISABLE 0x0
++#define MPC52xx_PCI_TBATR_ENABLE 0x1
++
++struct mpc52xx_pci {
++ u32 idr; /* PCI + 0x00 */
++ u32 scr; /* PCI + 0x04 */
++ u32 ccrir; /* PCI + 0x08 */
++ u32 cr1; /* PCI + 0x0C */
++ u32 bar0; /* PCI + 0x10 */
++ u32 bar1; /* PCI + 0x14 */
++ u8 reserved1[16]; /* PCI + 0x18 */
++ u32 ccpr; /* PCI + 0x28 */
++ u32 sid; /* PCI + 0x2C */
++ u32 erbar; /* PCI + 0x30 */
++ u32 cpr; /* PCI + 0x34 */
++ u8 reserved2[4]; /* PCI + 0x38 */
++ u32 cr2; /* PCI + 0x3C */
++ u8 reserved3[32]; /* PCI + 0x40 */
++ u32 gscr; /* PCI + 0x60 */
++ u32 tbatr0; /* PCI + 0x64 */
++ u32 tbatr1; /* PCI + 0x68 */
++ u32 tcr; /* PCI + 0x6C */
++ u32 iw0btar; /* PCI + 0x70 */
++ u32 iw1btar; /* PCI + 0x74 */
++ u32 iw2btar; /* PCI + 0x78 */
++ u8 reserved4[4]; /* PCI + 0x7C */
++ u32 iwcr; /* PCI + 0x80 */
++ u32 icr; /* PCI + 0x84 */
++ u32 isr; /* PCI + 0x88 */
++ u32 arb; /* PCI + 0x8C */
++ u8 reserved5[104]; /* PCI + 0x90 */
++ u32 car; /* PCI + 0xF8 */
++ u8 reserved6[4]; /* PCI + 0xFC */
++};
++
++
++/* ======================================================================== */
++/* PCI configuration acess */
++/* ======================================================================== */
++
++static int
++mpc52xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
++ int offset, int len, u32 *val)
++{
++ struct pci_controller *hose = bus->sysdata;
++ u32 value;
++
++ if (ppc_md.pci_exclude_device)
++ if (ppc_md.pci_exclude_device(bus->number, devfn))
++ return PCIBIOS_DEVICE_NOT_FOUND;
++
++ out_be32(hose->cfg_addr,
++ (1 << 31) |
++ ((bus->number - hose->bus_offset) << 16) |
++ (devfn << 8) |
++ (offset & 0xfc));
++ mb();
++
++#if defined(CONFIG_PPC_MPC5200_BUGFIX)
++ if (bus->number != hose->bus_offset) {
++ /* workaround for the bug 435 of the MPC5200 (L25R);
++ * Don't do 32 bits config access during type-1 cycles */
++ switch (len) {
++ case 1:
++ value = in_8(((u8 __iomem *)hose->cfg_data) +
++ (offset & 3));
++ break;
++ case 2:
++ value = in_le16(((u16 __iomem *)hose->cfg_data) +
++ ((offset>>1) & 1));
++ break;
++
++ default:
++ value = in_le16((u16 __iomem *)hose->cfg_data) |
++ (in_le16(((u16 __iomem *)hose->cfg_data) + 1) << 16);
++ break;
++ }
++ }
++ else
++#endif
++ {
++ value = in_le32(hose->cfg_data);
++
++ if (len != 4) {
++ value >>= ((offset & 0x3) << 3);
++ value &= 0xffffffff >> (32 - (len << 3));
++ }
++ }
++
++ *val = value;
++
++ out_be32(hose->cfg_addr, 0);
++ mb();
++
++ return PCIBIOS_SUCCESSFUL;
++}
++
++static int
++mpc52xx_pci_write_config(struct pci_bus *bus, unsigned int devfn,
++ int offset, int len, u32 val)
++{
++ struct pci_controller *hose = bus->sysdata;
++ u32 value, mask;
++
++ if (ppc_md.pci_exclude_device)
++ if (ppc_md.pci_exclude_device(bus->number, devfn))
++ return PCIBIOS_DEVICE_NOT_FOUND;
++
++ out_be32(hose->cfg_addr,
++ (1 << 31) |
++ ((bus->number - hose->bus_offset) << 16) |
++ (devfn << 8) |
++ (offset & 0xfc));
++ mb();
++
++#if defined(CONFIG_PPC_MPC5200_BUGFIX)
++ if (bus->number != hose->bus_offset) {
++ /* workaround for the bug 435 of the MPC5200 (L25R);
++ * Don't do 32 bits config access during type-1 cycles */
++ switch (len) {
++ case 1:
++ out_8(((u8 __iomem *)hose->cfg_data) +
++ (offset & 3), val);
++ break;
++ case 2:
++ out_le16(((u16 __iomem *)hose->cfg_data) +
++ ((offset>>1) & 1), val);
++ break;
++
++ default:
++ out_le16((u16 __iomem *)hose->cfg_data,
++ (u16)val);
++ out_le16(((u16 __iomem *)hose->cfg_data) + 1,
++ (u16)(val>>16));
++ break;
++ }
++ }
++ else
++#endif
++ {
++ if (len != 4) {
++ value = in_le32(hose->cfg_data);
++
++ offset = (offset & 0x3) << 3;
++ mask = (0xffffffff >> (32 - (len << 3)));
++ mask <<= offset;
++
++ value &= ~mask;
++ val = value | ((val << offset) & mask);
++ }
++
++ out_le32(hose->cfg_data, val);
++ }
++ mb();
++
++ out_be32(hose->cfg_addr, 0);
++ mb();
++
++ return PCIBIOS_SUCCESSFUL;
++}
++
++static struct pci_ops mpc52xx_pci_ops = {
++ .read = mpc52xx_pci_read_config,
++ .write = mpc52xx_pci_write_config
++};
++
++
++/* ======================================================================== */
++/* PCI setup */
++/* ======================================================================== */
++
++static void __init
++mpc52xx_pci_setup(struct pci_controller *hose,
++ struct mpc52xx_pci __iomem *pci_regs)
++{
++ struct resource *res;
++ u32 tmp;
++ int iwcr0 = 0, iwcr1 = 0, iwcr2 = 0;
++
++ pr_debug("mpc52xx_pci_setup(hose=%p, pci_regs=%p)\n", hose, pci_regs);
++
++ /* pci_process_bridge_OF_ranges() found all our addresses for us;
++ * now store them in the right places */
++ hose->cfg_addr = &pci_regs->car;
++ hose->cfg_data = hose->io_base_virt;
++
++ /* Control regs */
++ tmp = in_be32(&pci_regs->scr);
++ tmp |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
++ out_be32(&pci_regs->scr, tmp);
++
++ /* Memory windows */
++ res = &hose->mem_resources[0];
++ if (res->flags) {
++ pr_debug("mem_resource[0] = {.start=%x, .end=%x, .flags=%lx}\n",
++ res->start, res->end, res->flags);
++ out_be32(&pci_regs->iw0btar,
++ MPC52xx_PCI_IWBTAR_TRANSLATION(res->start, res->start,
++ res->end - res->start + 1));
++ iwcr0 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_MEM;
++ if (res->flags & IORESOURCE_PREFETCH)
++ iwcr0 |= MPC52xx_PCI_IWCR_READ_MULTI;
++ else
++ iwcr0 |= MPC52xx_PCI_IWCR_READ;
++ }
++
++ res = &hose->mem_resources[1];
++ if (res->flags) {
++ pr_debug("mem_resource[1] = {.start=%x, .end=%x, .flags=%lx}\n",
++ res->start, res->end, res->flags);
++ out_be32(&pci_regs->iw1btar,
++ MPC52xx_PCI_IWBTAR_TRANSLATION(res->start, res->start,
++ res->end - res->start + 1));
++ iwcr1 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_MEM;
++ if (res->flags & IORESOURCE_PREFETCH)
++ iwcr1 |= MPC52xx_PCI_IWCR_READ_MULTI;
++ else
++ iwcr1 |= MPC52xx_PCI_IWCR_READ;
++ }
++
++ /* IO resources */
++ res = &hose->io_resource;
++ if (!res) {
++ printk(KERN_ERR "%s: Didn't find IO resources\n", __FILE__);
++ return;
++ }
++ pr_debug(".io_resource={.start=%x,.end=%x,.flags=%lx} "
++ ".io_base_phys=0x%p\n",
++ res->start, res->end, res->flags, (void*)hose->io_base_phys);
++ out_be32(&pci_regs->iw2btar,
++ MPC52xx_PCI_IWBTAR_TRANSLATION(hose->io_base_phys,
++ res->start,
++ res->end - res->start + 1));
++ iwcr2 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_IO;
++
++ /* Set all the IWCR fields at once; they're in the same reg */
++ out_be32(&pci_regs->iwcr, MPC52xx_PCI_IWCR_PACK(iwcr0, iwcr1, iwcr2));
++
++ out_be32(&pci_regs->tbatr0,
++ MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_IO );
++ out_be32(&pci_regs->tbatr1,
++ MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_MEM );
++
++ out_be32(&pci_regs->tcr, MPC52xx_PCI_TCR_LD);
++
++ tmp = in_be32(&pci_regs->gscr);
++#if 0
++ /* Reset the exteral bus ( internal PCI controller is NOT resetted ) */
++ /* Not necessary and can be a bad thing if for example the bootloader
++ is displaying a splash screen or ... Just left here for
++ documentation purpose if anyone need it */
++ out_be32(&pci_regs->gscr, tmp | MPC52xx_PCI_GSCR_PR);
++ udelay(50);
++#endif
++
++ /* Make sure the PCI bridge is out of reset */
++ out_be32(&pci_regs->gscr, tmp & ~MPC52xx_PCI_GSCR_PR);
++}
++
++static void
++mpc52xx_pci_fixup_resources(struct pci_dev *dev)
++{
++ int i;
++
++ pr_debug("mpc52xx_pci_fixup_resources() %.4x:%.4x\n",
++ dev->vendor, dev->device);
++
++ /* We don't rely on boot loader for PCI and resets all
++ devices */
++ for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
++ struct resource *res = &dev->resource[i];
++ if (res->end > res->start) { /* Only valid resources */
++ res->end -= res->start;
++ res->start = 0;
++ res->flags |= IORESOURCE_UNSET;
++ }
++ }
++
++ /* The PCI Host bridge of MPC52xx has a prefetch memory resource
++ fixed to 1Gb. Doesn't fit in the resource system so we remove it */
++ if ( (dev->vendor == PCI_VENDOR_ID_MOTOROLA) &&
++ ( dev->device == PCI_DEVICE_ID_MOTOROLA_MPC5200
++ || dev->device == PCI_DEVICE_ID_MOTOROLA_MPC5200B) ) {
++ struct resource *res = &dev->resource[1];
++ res->start = res->end = res->flags = 0;
++ }
++}
++
++int __init
++mpc52xx_add_bridge(struct device_node *node)
++{
++ int len;
++ struct mpc52xx_pci __iomem *pci_regs;
++ struct pci_controller *hose;
++ const int *bus_range;
++ struct resource rsrc;
++
++ pr_debug("Adding MPC52xx PCI host bridge %s\n", node->full_name);
++
++ pci_assign_all_buses = 1;
++
++ if (of_address_to_resource(node, 0, &rsrc) != 0) {
++ printk(KERN_ERR "Can't get %s resources\n", node->full_name);
++ return -EINVAL;
++ }
++
++ bus_range = get_property(node, "bus-range", &len);
++ if (bus_range == NULL || len < 2 * sizeof(int)) {
++ printk(KERN_WARNING "Can't get %s bus-range, assume bus 0\n",
++ node->full_name);
++ bus_range = NULL;
++ }
++
++ /* There are some PCI quirks on the 52xx, register the hook to
++ * fix them. */
++ ppc_md.pcibios_fixup_resources = mpc52xx_pci_fixup_resources;
++
++ /* Alloc and initialize the pci controller. Values in the device
++ * tree are needed to configure the 52xx PCI controller. Rather
++ * than parse the tree here, let pci_process_bridge_OF_ranges()
++ * do it for us and extract the values after the fact */
++ hose = pcibios_alloc_controller();
++ if (!hose)
++ return -ENOMEM;
++
++ hose->arch_data = node;
++ hose->set_cfg_type = 1;
++
++ hose->first_busno = bus_range ? bus_range[0] : 0;
++ hose->last_busno = bus_range ? bus_range[1] : 0xff;
++
++ hose->bus_offset = 0;
++ hose->ops = &mpc52xx_pci_ops;
++
++ pci_regs = ioremap(rsrc.start, rsrc.end - rsrc.start + 1);
++ if (!pci_regs)
++ return -ENOMEM;
++
++ pci_process_bridge_OF_ranges(hose, node, 1);
++
++ /* Finish setting up PCI using values obtained by
++ * pci_proces_bridge_OF_ranges */
++ mpc52xx_pci_setup(hose, pci_regs);
++
++ return 0;
++}
+diff --git a/arch/powerpc/platforms/52xx/pci.c b/arch/powerpc/platforms/52xx/pci.c
+deleted file mode 100644
+index b732fdc..0000000
+--- a/arch/powerpc/platforms/52xx/pci.c
++++ /dev/null
+@@ -1,404 +0,0 @@
+-/*
+- * PCI code for the Freescale MPC52xx embedded CPU.
+- *
+- * Copyright (C) 2004 Secret Lab Technologies Ltd.
+- * Grant Likely <grant.likely@secretlab.ca>
+- * Copyright (C) 2004 Sylvain Munaut <tnt@246tNt.com>
+- *
+- * This file is licensed under the terms of the GNU General Public License
+- * version 2. This program is licensed "as is" without any warranty of any
+- * kind, whether express or implied.
+- */
+-
+-#undef DEBUG
+-
+-#include <asm/pci.h>
+-#include <asm/mpc52xx.h>
+-#include <asm/delay.h>
+-#include <asm/machdep.h>
+-#include <linux/kernel.h>
+-
+-
+-/* ======================================================================== */
+-/* PCI windows config */
+-/* ======================================================================== */
+-
+-#define MPC52xx_PCI_TARGET_IO 0xf0000000
+-#define MPC52xx_PCI_TARGET_MEM 0x00000000
+-
+-/* ======================================================================== */
+-/* Structures mapping & Defines for PCI Unit */
+-/* ======================================================================== */
+-
+-#define MPC52xx_PCI_GSCR_BM 0x40000000
+-#define MPC52xx_PCI_GSCR_PE 0x20000000
+-#define MPC52xx_PCI_GSCR_SE 0x10000000
+-#define MPC52xx_PCI_GSCR_XLB2PCI_MASK 0x07000000
+-#define MPC52xx_PCI_GSCR_XLB2PCI_SHIFT 24
+-#define MPC52xx_PCI_GSCR_IPG2PCI_MASK 0x00070000
+-#define MPC52xx_PCI_GSCR_IPG2PCI_SHIFT 16
+-#define MPC52xx_PCI_GSCR_BME 0x00004000
+-#define MPC52xx_PCI_GSCR_PEE 0x00002000
+-#define MPC52xx_PCI_GSCR_SEE 0x00001000
+-#define MPC52xx_PCI_GSCR_PR 0x00000001
+-
+-
+-#define MPC52xx_PCI_IWBTAR_TRANSLATION(proc_ad,pci_ad,size) \
+- ( ( (proc_ad) & 0xff000000 ) | \
+- ( (((size) - 1) >> 8) & 0x00ff0000 ) | \
+- ( ((pci_ad) >> 16) & 0x0000ff00 ) )
+-
+-#define MPC52xx_PCI_IWCR_PACK(win0,win1,win2) (((win0) << 24) | \
+- ((win1) << 16) | \
+- ((win2) << 8))
+-
+-#define MPC52xx_PCI_IWCR_DISABLE 0x0
+-#define MPC52xx_PCI_IWCR_ENABLE 0x1
+-#define MPC52xx_PCI_IWCR_READ 0x0
+-#define MPC52xx_PCI_IWCR_READ_LINE 0x2
+-#define MPC52xx_PCI_IWCR_READ_MULTI 0x4
+-#define MPC52xx_PCI_IWCR_MEM 0x0
+-#define MPC52xx_PCI_IWCR_IO 0x8
+-
+-#define MPC52xx_PCI_TCR_P 0x01000000
+-#define MPC52xx_PCI_TCR_LD 0x00010000
+-
+-#define MPC52xx_PCI_TBATR_DISABLE 0x0
+-#define MPC52xx_PCI_TBATR_ENABLE 0x1
+-
+-struct mpc52xx_pci {
+- u32 idr; /* PCI + 0x00 */
+- u32 scr; /* PCI + 0x04 */
+- u32 ccrir; /* PCI + 0x08 */
+- u32 cr1; /* PCI + 0x0C */
+- u32 bar0; /* PCI + 0x10 */
+- u32 bar1; /* PCI + 0x14 */
+- u8 reserved1[16]; /* PCI + 0x18 */
+- u32 ccpr; /* PCI + 0x28 */
+- u32 sid; /* PCI + 0x2C */
+- u32 erbar; /* PCI + 0x30 */
+- u32 cpr; /* PCI + 0x34 */
+- u8 reserved2[4]; /* PCI + 0x38 */
+- u32 cr2; /* PCI + 0x3C */
+- u8 reserved3[32]; /* PCI + 0x40 */
+- u32 gscr; /* PCI + 0x60 */
+- u32 tbatr0; /* PCI + 0x64 */
+- u32 tbatr1; /* PCI + 0x68 */
+- u32 tcr; /* PCI + 0x6C */
+- u32 iw0btar; /* PCI + 0x70 */
+- u32 iw1btar; /* PCI + 0x74 */
+- u32 iw2btar; /* PCI + 0x78 */
+- u8 reserved4[4]; /* PCI + 0x7C */
+- u32 iwcr; /* PCI + 0x80 */
+- u32 icr; /* PCI + 0x84 */
+- u32 isr; /* PCI + 0x88 */
+- u32 arb; /* PCI + 0x8C */
+- u8 reserved5[104]; /* PCI + 0x90 */
+- u32 car; /* PCI + 0xF8 */
+- u8 reserved6[4]; /* PCI + 0xFC */
+-};
+-
+-static int
+-mpc52xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
+- int offset, int len, u32 *val)
+-{
+- struct pci_controller *hose = bus->sysdata;
+- u32 value;
+-
+- if (ppc_md.pci_exclude_device)
+- if (ppc_md.pci_exclude_device(bus->number, devfn))
+- return PCIBIOS_DEVICE_NOT_FOUND;
+-
+- out_be32(hose->cfg_addr,
+- (1 << 31) |
+- ((bus->number - hose->bus_offset) << 16) |
+- (devfn << 8) |
+- (offset & 0xfc));
+- mb();
+-
+-#if defined(CONFIG_PPC_MPC5200_BUGFIX)
+- if (bus->number != hose->bus_offset) {
+- /* workaround for the bug 435 of the MPC5200 (L25R);
+- * Don't do 32 bits config access during type-1 cycles */
+- switch (len) {
+- case 1:
+- value = in_8(((u8 __iomem *)hose->cfg_data) +
+- (offset & 3));
+- break;
+- case 2:
+- value = in_le16(((u16 __iomem *)hose->cfg_data) +
+- ((offset>>1) & 1));
+- break;
+-
+- default:
+- value = in_le16((u16 __iomem *)hose->cfg_data) |
+- (in_le16(((u16 __iomem *)hose->cfg_data) + 1) << 16);
+- break;
+- }
+- }
+- else
+-#endif
+- {
+- value = in_le32(hose->cfg_data);
+-
+- if (len != 4) {
+- value >>= ((offset & 0x3) << 3);
+- value &= 0xffffffff >> (32 - (len << 3));
+- }
+- }
+-
+- *val = value;
+-
+- out_be32(hose->cfg_addr, 0);
+- mb();
+-
+- return PCIBIOS_SUCCESSFUL;
+-}
+-
+-static int
+-mpc52xx_pci_write_config(struct pci_bus *bus, unsigned int devfn,
+- int offset, int len, u32 val)
+-{
+- struct pci_controller *hose = bus->sysdata;
+- u32 value, mask;
+-
+- if (ppc_md.pci_exclude_device)
+- if (ppc_md.pci_exclude_device(bus->number, devfn))
+- return PCIBIOS_DEVICE_NOT_FOUND;
+-
+- out_be32(hose->cfg_addr,
+- (1 << 31) |
+- ((bus->number - hose->bus_offset) << 16) |
+- (devfn << 8) |
+- (offset & 0xfc));
+- mb();
+-
+-#if defined(CONFIG_PPC_MPC5200_BUGFIX)
+- if (bus->number != hose->bus_offset) {
+- /* workaround for the bug 435 of the MPC5200 (L25R);
+- * Don't do 32 bits config access during type-1 cycles */
+- switch (len) {
+- case 1:
+- out_8(((u8 __iomem *)hose->cfg_data) +
+- (offset & 3), val);
+- break;
+- case 2:
+- out_le16(((u16 __iomem *)hose->cfg_data) +
+- ((offset>>1) & 1), val);
+- break;
+-
+- default:
+- out_le16((u16 __iomem *)hose->cfg_data,
+- (u16)val);
+- out_le16(((u16 __iomem *)hose->cfg_data) + 1,
+- (u16)(val>>16));
+- break;
+- }
+- }
+- else
+-#endif
+- {
+- if (len != 4) {
+- value = in_le32(hose->cfg_data);
+-
+- offset = (offset & 0x3) << 3;
+- mask = (0xffffffff >> (32 - (len << 3)));
+- mask <<= offset;
+-
+- value &= ~mask;
+- val = value | ((val << offset) & mask);
+- }
+-
+- out_le32(hose->cfg_data, val);
+- }
+- mb();
+-
+- out_be32(hose->cfg_addr, 0);
+- mb();
+-
+- return PCIBIOS_SUCCESSFUL;
+-}
+-
+-static struct pci_ops mpc52xx_pci_ops = {
+- .read = mpc52xx_pci_read_config,
+- .write = mpc52xx_pci_write_config
+-};
+-
+-
+-static void __init
+-mpc52xx_pci_setup(struct pci_controller *hose,
+- struct mpc52xx_pci __iomem *pci_regs)
+-{
+- struct resource *res;
+- u32 tmp;
+- int iwcr0 = 0, iwcr1 = 0, iwcr2 = 0;
+-
+- pr_debug("mpc52xx_pci_setup(hose=%p, pci_regs=%p)\n", hose, pci_regs);
+-
+- /* pci_process_bridge_OF_ranges() found all our addresses for us;
+- * now store them in the right places */
+- hose->cfg_addr = &pci_regs->car;
+- hose->cfg_data = hose->io_base_virt;
+- hose->io_base_virt = ioremap(hose->io_base_phys,
+- hose->io_resource.end + 1 -
+- hose->io_resource.start);
+- isa_io_base = (unsigned long) hose->io_base_virt;
+-
+- /* Control regs */
+- tmp = in_be32(&pci_regs->scr);
+- tmp |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
+- out_be32(&pci_regs->scr, tmp);
+-
+- /* Memory windows */
+- res = &hose->mem_resources[0];
+- if (res->flags) {
+- pr_debug("mem_resource[0] = {.start=%x, .end=%x, .flags=%lx}\n",
+- res->start, res->end, res->flags);
+- out_be32(&pci_regs->iw0btar,
+- MPC52xx_PCI_IWBTAR_TRANSLATION(res->start, res->start,
+- res->end - res->start + 1));
+- iwcr0 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_MEM;
+- if (res->flags & IORESOURCE_PREFETCH)
+- iwcr0 |= MPC52xx_PCI_IWCR_READ_MULTI;
+- else
+- iwcr0 |= MPC52xx_PCI_IWCR_READ;
+- }
+-
+- res = &hose->mem_resources[1];
+- if (res->flags) {
+- pr_debug("mem_resource[1] = {.start=%x, .end=%x, .flags=%lx}\n",
+- res->start, res->end, res->flags);
+- out_be32(&pci_regs->iw1btar,
+- MPC52xx_PCI_IWBTAR_TRANSLATION(res->start, res->start,
+- res->end - res->start + 1));
+- iwcr1 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_MEM;
+- if (res->flags & IORESOURCE_PREFETCH)
+- iwcr1 |= MPC52xx_PCI_IWCR_READ_MULTI;
+- else
+- iwcr1 |= MPC52xx_PCI_IWCR_READ;
+- }
+-
+- /* IO resources */
+- res = &hose->io_resource;
+- if (!res) {
+- printk(KERN_ERR "%s: Didn't find IO resources\n", __FILE__);
+- return;
+- }
+- pr_debug(".io_resource={.start=%x,.end=%x,.flags=%lx} "
+- ".io_base_phys=0x%p\n",
+- res->start, res->end, res->flags, (void*)hose->io_base_phys);
+- out_be32(&pci_regs->iw2btar,
+- MPC52xx_PCI_IWBTAR_TRANSLATION(hose->io_base_phys,
+- res->start,
+- res->end - res->start + 1));
+- iwcr2 = MPC52xx_PCI_IWCR_ENABLE | MPC52xx_PCI_IWCR_IO;
+-
+- /* Set all the IWCR fields at once; they're in the same reg */
+- out_be32(&pci_regs->iwcr, MPC52xx_PCI_IWCR_PACK(iwcr0, iwcr1, iwcr2));
+-
+- out_be32(&pci_regs->tbatr0,
+- MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_IO );
+- out_be32(&pci_regs->tbatr1,
+- MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_MEM );
+-
+- out_be32(&pci_regs->tcr, MPC52xx_PCI_TCR_LD);
+-
+-#if 0
+- /* Reset the exteral bus ( internal PCI controller is NOT resetted ) */
+- /* Not necessary and can be a bad thing if for example the bootloader
+- is displaying a splash screen or ... Just left here for
+- documentation purpose if anyone need it */
+- tmp = in_be32(&pci_regs->gscr);
+- out_be32(&pci_regs->gscr, tmp | MPC52xx_PCI_GSCR_PR);
+- udelay(50);
+- out_be32(&pci_regs->gscr, tmp & ~MPC52xx_PCI_GSCR_PR);
+-#endif
+-}
+-
+-static void
+-mpc52xx_pci_fixup_resources(struct pci_dev *dev)
+-{
+- int i;
+-
+- pr_debug("mpc52xx_pci_fixup_resources() %.4x:%.4x\n",
+- dev->vendor, dev->device);
+-
+- /* We don't rely on boot loader for PCI and resets all
+- devices */
+- for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
+- struct resource *res = &dev->resource[i];
+- if (res->end > res->start) { /* Only valid resources */
+- res->end -= res->start;
+- res->start = 0;
+- res->flags |= IORESOURCE_UNSET;
+- }
+- }
+-
+- /* The PCI Host bridge of MPC52xx has a prefetch memory resource
+- fixed to 1Gb. Doesn't fit in the resource system so we remove it */
+- if ( (dev->vendor == PCI_VENDOR_ID_MOTOROLA) &&
+- ( dev->device == PCI_DEVICE_ID_MOTOROLA_MPC5200
+- || dev->device == PCI_DEVICE_ID_MOTOROLA_MPC5200B) ) {
+- struct resource *res = &dev->resource[1];
+- res->start = res->end = res->flags = 0;
+- }
+-}
+-
+-int __init
+-mpc52xx_add_bridge(struct device_node *node)
+-{
+- int len;
+- struct mpc52xx_pci __iomem *pci_regs;
+- struct pci_controller *hose;
+- const int *bus_range;
+- struct resource rsrc;
+-
+- pr_debug("Adding MPC52xx PCI host bridge %s\n", node->full_name);
+-
+- pci_assign_all_buses = 1;
+-
+- if (of_address_to_resource(node, 0, &rsrc) != 0) {
+- printk(KERN_ERR "Can't get %s resources\n", node->full_name);
+- return -EINVAL;
+- }
+-
+- bus_range = get_property(node, "bus-range", &len);
+- if (bus_range == NULL || len < 2 * sizeof(int)) {
+- printk(KERN_WARNING "Can't get %s bus-range, assume bus 0\n",
+- node->full_name);
+- bus_range = NULL;
+- }
+-
+- /* There are some PCI quirks on the 52xx, register the hook to
+- * fix them. */
+- ppc_md.pcibios_fixup_resources = mpc52xx_pci_fixup_resources;
+-
+- /* Alloc and initialize the pci controller. Values in the device
+- * tree are needed to configure the 52xx PCI controller. Rather
+- * than parse the tree here, let pci_process_bridge_OF_ranges()
+- * do it for us and extract the values after the fact */
+- hose = pcibios_alloc_controller();
+- if (!hose)
+- return -ENOMEM;
+-
+- hose->arch_data = node;
+- hose->set_cfg_type = 1;
+-
+- hose->first_busno = bus_range ? bus_range[0] : 0;
+- hose->last_busno = bus_range ? bus_range[1] : 0xff;
+-
+- hose->bus_offset = 0;
+- hose->ops = &mpc52xx_pci_ops;
+-
+- pci_regs = ioremap(rsrc.start, rsrc.end - rsrc.start + 1);
+- if (!pci_regs)
+- return -ENOMEM;
+-
+- pci_process_bridge_OF_ranges(hose, node, 0);
+-
+- /* Finish setting up PCI using values obtained by
+- * pci_proces_bridge_OF_ranges */
+- mpc52xx_pci_setup(hose, pci_regs);
+-
+- return 0;
+-}
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0031-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt b/packages/linux/linux-efika-2.6.20/0031-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt
new file mode 100644
index 0000000000..5e8d5a268c
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0031-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt
@@ -0,0 +1,828 @@
+From 46e8903e34759728afd11dd11c481e6a94e6b06d Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Mon, 18 Dec 2006 22:51:38 +0100
+Subject: [PATCH] [PATCH] sound: Add support for the MPC52xx PSC AC97 Link
+
+Messy driver, to be cleaned ... a lot ...
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ include/asm-ppc/mpc52xx_psc.h | 10 +-
+ sound/ppc/Kconfig | 16 +
+ sound/ppc/Makefile | 3 +
+ sound/ppc/mpc52xx_ac97.c | 738 +++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 765 insertions(+), 2 deletions(-)
+
+diff --git a/include/asm-ppc/mpc52xx_psc.h b/include/asm-ppc/mpc52xx_psc.h
+index 9d850b2..c82b8d4 100644
+--- a/include/asm-ppc/mpc52xx_psc.h
++++ b/include/asm-ppc/mpc52xx_psc.h
+@@ -28,6 +28,10 @@
+ #define MPC52xx_PSC_MAXNUM 6
+
+ /* Programmable Serial Controller (PSC) status register bits */
++#define MPC52xx_PSC_SR_UNEX_RX 0x0001
++#define MPC52xx_PSC_SR_DATA_VAL 0x0002
++#define MPC52xx_PSC_SR_DATA_OVR 0x0004
++#define MPC52xx_PSC_SR_CMDSEND 0x0008
+ #define MPC52xx_PSC_SR_CDE 0x0080
+ #define MPC52xx_PSC_SR_RXRDY 0x0100
+ #define MPC52xx_PSC_SR_RXFULL 0x0200
+@@ -132,8 +136,10 @@ struct mpc52xx_psc {
+ u8 reserved5[3];
+ u8 ctlr; /* PSC + 0x1c */
+ u8 reserved6[3];
+- u16 ccr; /* PSC + 0x20 */
+- u8 reserved7[14];
++ u32 ccr; /* PSC + 0x20 */
++ u32 ac97_slots; /* PSC + 0x24 */
++ u32 ac97_cmd; /* PSC + 0x28 */
++ u32 ac97_data; /* PSC + 0x2c */
+ u8 ivr; /* PSC + 0x30 */
+ u8 reserved8[3];
+ u8 ip; /* PSC + 0x34 */
+diff --git a/sound/ppc/Kconfig b/sound/ppc/Kconfig
+index a3fb149..afd58f7 100644
+--- a/sound/ppc/Kconfig
++++ b/sound/ppc/Kconfig
+@@ -33,3 +33,19 @@ config SND_POWERMAC_AUTO_DRC
+ option.
+
+ endmenu
++
++
++# ALSA ppc drivers
++
++menu "ALSA PPC devices"
++ depends on SND!=n && PPC
++
++config SND_PPC_MPC52xx_AC97
++ tristate "Freescale MPC52xx AC97 interface support"
++ depends on SND && PPC_MPC52xx
++ select SND_AC97_CODEC
++ help
++ Say Y or M if you want to support any AC97 codec attached to
++ the Freescqle MPC52xx AC97 interface.
++
++endmenu
+diff --git a/sound/ppc/Makefile b/sound/ppc/Makefile
+index 4d95c65..c29cb9b 100644
+--- a/sound/ppc/Makefile
++++ b/sound/ppc/Makefile
+@@ -4,6 +4,9 @@
+ #
+
+ snd-powermac-objs := powermac.o pmac.o awacs.o burgundy.o daca.o tumbler.o keywest.o beep.o
++snd-mpc52xx-ac97-objs := mpc52xx_ac97.o
+
+ # Toplevel Module Dependency
+ obj-$(CONFIG_SND_POWERMAC) += snd-powermac.o
++
++obj-$(CONFIG_SND_PPC_MPC52xx_AC97) += snd-mpc52xx-ac97.o
+diff --git a/sound/ppc/mpc52xx_ac97.c b/sound/ppc/mpc52xx_ac97.c
+new file mode 100644
+index 0000000..a4f008e
+--- /dev/null
++++ b/sound/ppc/mpc52xx_ac97.c
+@@ -0,0 +1,738 @@
++/*
++ * Driver for the PSC of the Freescale MPC52xx configured as AC97 interface
++ *
++ *
++ * Copyright (C) 2006 Sylvain Munaut <tnt@246tNt.com>
++ *
++ * This file is licensed under the terms of the GNU General Public License
++ * version 2. This program is licensed "as is" without any warranty of any
++ * kind, whether express or implied.
++ */
++
++#define DEBUG
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/interrupt.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/initval.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/ac97_codec.h>
++
++#include <asm/of_platform.h>
++#include <asm/mpc52xx_psc.h>
++
++
++#define DRV_NAME "mpc52xx-psc-ac97"
++
++
++/* ======================================================================== */
++/* Structs / Defines */
++/* ======================================================================== */
++
++/* Private structure */
++struct mpc52xx_ac97_priv {
++ struct device *dev;
++ resource_size_t mem_start;
++ resource_size_t mem_len;
++ int irq;
++ struct mpc52xx_psc __iomem *psc;
++ struct snd_card *card;
++ struct snd_pcm *pcm;
++ struct snd_ac97 *ac97;
++
++ struct snd_pcm_substream *substream_playback;
++ unsigned int buf_pos;
++};
++
++/* Register bit definition (AC97 mode specific) */
++#define PSC_AC97_SLOT_BIT(n) (1<<(12-n))
++#define PSC_AC97_SLOTS_XMIT_SHIFT 16
++#define PSC_AC97_SLOTS_RECV_SHIFT 0
++
++
++
++/* ======================================================================== */
++/* ISR routine */
++/* ======================================================================== */
++
++static irqreturn_t
++mpc52xx_ac97_irq(int irq, void *dev_id)
++{
++ struct mpc52xx_ac97_priv *priv = dev_id;
++
++ static int icnt = 0;
++ #if 0
++ {
++ unsigned int val;
++// val = in_be32(&priv->psc->ac97_data);
++ printk(KERN_INFO "mpc52xx_ac97_irq fired (isr=%04x, status=%04x) %08x\n", in_be16(&priv->psc->mpc52xx_psc_imr), in_be16(&priv->psc->mpc52xx_psc_status), val);
++ out_8(&priv->psc->command,MPC52xx_PSC_RST_ERR_STAT);
++ }
++ #endif
++
++ /* Anti Crash during dev ;) */
++ #if 0
++ if ((icnt++) > 50000)
++ out_be16(&priv->psc->mpc52xx_psc_imr, 0);
++ #endif
++
++ /* Copy 64 data into the buffer */
++ if (in_be16(&priv->psc->mpc52xx_psc_imr) & 0x0100) {
++ if (priv->substream_playback) {
++ struct snd_pcm_runtime *rt;
++
++ rt = priv->substream_playback->runtime;
++
++ if (snd_pcm_playback_hw_avail(rt) < bytes_to_frames(rt,128)) {
++ int i;
++ /* Push silence */
++ for (i=0; i<64; i++)
++ out_be32(&priv->psc->mpc52xx_psc_buffer_32, 0x00000800);
++ printk(KERN_DEBUG "pushed silence ...\n");
++ } else {
++ int i;
++ unsigned short *data;
++
++ data = (unsigned short *)
++ (&rt->dma_area[frames_to_bytes(rt, priv->buf_pos)]);
++
++ for (i=0; i<64; i++)
++ out_be32(&priv->psc->mpc52xx_psc_buffer_32,
++ (((unsigned int)data[i]) << 16) | 0x00000000);
++ /* Setting the sof bit looks useless */
++
++ priv->buf_pos += bytes_to_frames(rt,128);;
++ if (priv->buf_pos >= rt->buffer_size)
++ priv->buf_pos = 0;
++
++ snd_pcm_period_elapsed(priv->substream_playback);
++ }
++ } else {
++ out_be16(&priv->psc->mpc52xx_psc_imr, 0);
++ printk(KERN_DEBUG "Interrupt with no stream ...\n");
++ }
++ } else {
++ printk(KERN_ERR "Spurious int\n");
++ }
++
++ return IRQ_HANDLED;
++}
++
++
++/* ======================================================================== */
++/* PCM interface */
++/* ======================================================================== */
++
++/* HW desc */
++
++static struct snd_pcm_hardware mpc52xx_ac97_hw = {
++ .info = SNDRV_PCM_INFO_INTERLEAVED |
++ SNDRV_PCM_INFO_MMAP |
++ SNDRV_PCM_INFO_MMAP_VALID,
++ .formats = SNDRV_PCM_FMTBIT_S16_BE,
++ .rates = SNDRV_PCM_RATE_8000_48000,
++ .rate_min = 8000,
++ .rate_max = 48000,
++ .channels_min = 1,
++ .channels_max = 2, /* Support for more ? */
++ .buffer_bytes_max = 128*1024,
++ .period_bytes_min = 128, /* 32, */
++ .period_bytes_max = 128, /* 16*1024, */
++ .periods_min = 8,
++ .periods_max = 256,
++ .fifo_size = 512,
++};
++
++
++/* Playback */
++
++static int
++mpc52xx_ac97_playback_open(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++
++ dev_dbg(priv->dev, "mpc52xx_ac97_playback_open(%p)\n", substream);
++
++ substream->runtime->hw = mpc52xx_ac97_hw;
++
++ priv->substream_playback = substream;
++ priv->buf_pos = 0; /* FIXME Do that where ? */
++
++ return 0; /* FIXME */
++}
++
++static int
++mpc52xx_ac97_playback_close(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++ dev_dbg(priv->dev, "mpc52xx_ac97_playback_close(%p)\n", substream);
++ priv->substream_playback = NULL;
++ return 0; /* FIXME */
++}
++
++static int
++mpc52xx_ac97_playback_prepare(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++
++ dev_dbg(priv->dev, "mpc52xx_ac97_playback_prepare(%p)\n", substream);
++
++ /* FIXME, need a spinlock to protect access */
++ if (substream->runtime->channels == 1)
++ out_be32(&priv->psc->ac97_slots, 0x01000000);
++ else
++ out_be32(&priv->psc->ac97_slots, 0x03000000);
++
++ snd_ac97_set_rate(priv->ac97, AC97_PCM_FRONT_DAC_RATE, substream->runtime->rate);
++
++ return 0; /* FIXME */
++}
++
++
++/* Capture */
++
++static int
++mpc52xx_ac97_capture_open(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++ return 0; /* FIXME */
++}
++
++static int
++mpc52xx_ac97_capture_close(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++ return 0; /* FIXME */
++}
++
++static int
++mpc52xx_ac97_capture_prepare(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++ return 0; /* FIXME */
++}
++
++
++/* Common */
++
++static int
++mpc52xx_ac97_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++ int rv;
++
++ dev_dbg(priv->dev, "mpc52xx_ac97_hw_params(%p)\n", substream);
++
++ rv = snd_pcm_lib_malloc_pages(substream,
++ params_buffer_bytes(params));
++ if (rv < 0) {
++ printk(KERN_ERR "hw params failes\n"); /* FIXME */
++ return rv;
++ }
++
++ printk(KERN_DEBUG "%d %d %d\n", params_buffer_bytes(params), params_period_bytes(params), params_periods(params));
++
++
++ return 0;
++}
++
++static int
++mpc52xx_ac97_hw_free(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++
++ dev_dbg(priv->dev, "mpc52xx_ac97_hw_free(%p)\n", substream);
++
++ return snd_pcm_lib_free_pages(substream);
++}
++
++static int
++mpc52xx_ac97_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++ int rv = 0;
++
++ dev_dbg(priv->dev, "mpc52xx_ac97_trigger(%p,%d)\n", substream, cmd);
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ /* Enable TX interrupt */
++ out_be16(&priv->psc->mpc52xx_psc_imr, 0x0100); // 0x0100
++
++ break;
++
++ case SNDRV_PCM_TRIGGER_STOP:
++ /* Disable TX interrupt */
++ out_be16(&priv->psc->mpc52xx_psc_imr, 0x0000);
++
++ break;
++
++ default:
++ rv = -EINVAL;
++ }
++
++ /* FIXME */
++ return rv;
++}
++
++static snd_pcm_uframes_t
++mpc52xx_ac97_pointer(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++
++// dev_dbg(priv->dev, "mpc52xx_ac97_pointer(%p)\n", substream);
++
++ if (substream->runtime->channels == 1)
++ return priv->buf_pos; /* FIXME */
++ else
++ return priv->buf_pos >> 1; /* FIXME */
++}
++
++
++/* Ops */
++
++static struct snd_pcm_ops mpc52xx_ac97_playback_ops = {
++ .open = mpc52xx_ac97_playback_open,
++ .close = mpc52xx_ac97_playback_close,
++ .ioctl = snd_pcm_lib_ioctl,
++ .hw_params = mpc52xx_ac97_hw_params,
++ .hw_free = mpc52xx_ac97_hw_free,
++ .prepare = mpc52xx_ac97_playback_prepare,
++ .trigger = mpc52xx_ac97_trigger,
++ .pointer = mpc52xx_ac97_pointer,
++};
++
++static struct snd_pcm_ops mpc52xx_ac97_capture_ops = {
++ .open = mpc52xx_ac97_capture_open,
++ .close = mpc52xx_ac97_capture_close,
++ .ioctl = snd_pcm_lib_ioctl,
++ .hw_params = mpc52xx_ac97_hw_params,
++ .hw_free = mpc52xx_ac97_hw_free,
++ .prepare = mpc52xx_ac97_capture_prepare,
++ .trigger = mpc52xx_ac97_trigger,
++ .pointer = mpc52xx_ac97_pointer,
++};
++
++
++/* ======================================================================== */
++/* AC97 Bus interface */
++/* ======================================================================== */
++
++static unsigned short
++mpc52xx_ac97_bus_read(struct snd_ac97 *ac97, unsigned short reg)
++{
++ struct mpc52xx_ac97_priv *priv = ac97->private_data;
++ int timeout;
++ unsigned int val;
++
++ dev_dbg(priv->dev, "ac97 read: reg %04x\n", reg);
++
++ /* Wait for it to be ready */
++ timeout = 1000;
++ while ((--timeout) && (in_be16(&priv->psc->mpc52xx_psc_status) &
++ MPC52xx_PSC_SR_CMDSEND) )
++ udelay(10);
++
++ if (!timeout) {
++ printk(KERN_ERR DRV_NAME ": timeout on ac97 bus (rdy)\n");
++ return 0xffff;
++ }
++
++ /* Do the read */
++ out_be32(&priv->psc->ac97_cmd, (1<<31) | ((reg & 0x7f) << 24));
++
++ /* Wait for the answer */
++ timeout = 1000;
++ while ((--timeout) && !(in_be16(&priv->psc->mpc52xx_psc_status) &
++ MPC52xx_PSC_SR_DATA_VAL) )
++ udelay(10);
++
++ if (!timeout) {
++ printk(KERN_ERR DRV_NAME ": timeout on ac97 read (val)\n");
++ return 0xffff;
++ }
++
++ /* Get the data */
++ val = in_be32(&priv->psc->ac97_data);
++ if ( ((val>>24) & 0x7f) != reg ) {
++ printk(KERN_ERR DRV_NAME ": reg echo error on ac97 read\n");
++ return 0xffff;
++ }
++ val = (val >> 8) & 0xffff;
++
++ dev_dbg(priv->dev, "ac97 read ok: reg %04x val %04x\n",
++ reg, val);
++
++ return (unsigned short) val;
++}
++
++static void
++mpc52xx_ac97_bus_write(struct snd_ac97 *ac97,
++ unsigned short reg, unsigned short val)
++{
++ struct mpc52xx_ac97_priv *priv = ac97->private_data;
++ int timeout;
++
++ dev_dbg(priv->dev, "ac97 write: reg %04x val %04x\n",
++ reg, val);
++
++ /* Wait for it to be ready */
++ timeout = 1000;
++ while ((--timeout) && (in_be16(&priv->psc->mpc52xx_psc_status) &
++ MPC52xx_PSC_SR_CMDSEND) )
++ udelay(10);
++
++ if (!timeout) {
++ printk(KERN_ERR DRV_NAME ": timeout on ac97 write\n");
++ return;
++ }
++
++ /* Write data */
++ out_be32(&priv->psc->ac97_cmd, ((reg & 0x7f) << 24) | (val << 8));
++}
++
++static void
++mpc52xx_ac97_bus_reset(struct snd_ac97 *ac97)
++{
++ struct mpc52xx_ac97_priv *priv = ac97->private_data;
++
++ dev_dbg(priv->dev, "ac97 codec reset\n");
++
++ /* Do a cold reset */
++ out_8(&priv->psc->op1, 0x03);
++ udelay(10);
++ out_8(&priv->psc->op0, 0x02);
++ udelay(50);
++
++ /* PSC recover from cold reset (cfr user manual, not sure if useful) */
++ out_be32(&priv->psc->sicr, in_be32(&priv->psc->sicr));
++}
++
++
++static struct snd_ac97_bus_ops mpc52xx_ac97_bus_ops = {
++ .read = mpc52xx_ac97_bus_read,
++ .write = mpc52xx_ac97_bus_write,
++ .reset = mpc52xx_ac97_bus_reset,
++};
++
++
++/* ======================================================================== */
++/* Sound driver setup */
++/* ======================================================================== */
++
++static int
++mpc52xx_ac97_setup_pcm(struct mpc52xx_ac97_priv *priv)
++{
++ int rv;
++
++ rv = snd_pcm_new(priv->card, DRV_NAME "-pcm", 0, 1, 1, &priv->pcm);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": snd_pcm_new failed\n");
++ return rv;
++ }
++
++ rv = snd_pcm_lib_preallocate_pages_for_all(priv->pcm,
++ SNDRV_DMA_TYPE_CONTINUOUS, snd_dma_continuous_data(GFP_KERNEL),
++ 128*1024, 128*1024);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME
++ ": snd_pcm_lib_preallocate_pages_for_all failed\n");
++ return rv;
++ }
++
++ snd_pcm_set_ops(priv->pcm, SNDRV_PCM_STREAM_PLAYBACK,
++ &mpc52xx_ac97_playback_ops);
++ snd_pcm_set_ops(priv->pcm, SNDRV_PCM_STREAM_CAPTURE,
++ &mpc52xx_ac97_capture_ops);
++
++ priv->pcm->private_data = priv;
++ priv->pcm->info_flags = 0;
++
++ strcpy(priv->pcm->name, "Freescale MPC52xx PSC-AC97 PCM");
++
++ return 0;
++}
++
++static int
++mpc52xx_ac97_setup_mixer(struct mpc52xx_ac97_priv *priv)
++{
++ struct snd_ac97_bus *ac97_bus;
++ struct snd_ac97_template ac97_template;
++ int rv;
++
++ rv = snd_ac97_bus(priv->card, 0, &mpc52xx_ac97_bus_ops, NULL, &ac97_bus);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": snd_ac97_bus failed\n");
++ return rv;
++ }
++
++ memset(&ac97_template, 0, sizeof(struct snd_ac97_template));
++ ac97_template.private_data = priv;
++
++ rv = snd_ac97_mixer(ac97_bus, &ac97_template, &priv->ac97);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": snd_ac97_mixer failed\n");
++ return rv;
++ }
++
++ return 0;
++}
++
++
++static int
++mpc52xx_ac97_hwinit(struct mpc52xx_ac97_priv *priv)
++{
++ /* Reset everything first by safety */
++ out_8(&priv->psc->command,MPC52xx_PSC_RST_RX);
++ out_8(&priv->psc->command,MPC52xx_PSC_RST_TX);
++ out_8(&priv->psc->command,MPC52xx_PSC_RST_ERR_STAT);
++
++ /* Do a cold reset of codec */
++ out_8(&priv->psc->op1, 0x03);
++ udelay(10);
++ out_8(&priv->psc->op0, 0x02);
++ udelay(50);
++
++ /* Configure AC97 enhanced mode */
++ out_be32(&priv->psc->sicr, 0x03010000);
++
++ /* No slots active */
++ out_be32(&priv->psc->ac97_slots, 0x00000000);
++
++ /* No IRQ */
++ out_be16(&priv->psc->mpc52xx_psc_imr, 0x0000);
++
++ /* FIFO levels */
++ out_8(&priv->psc->rfcntl, 0x07);
++ out_8(&priv->psc->tfcntl, 0x07);
++ out_be16(&priv->psc->rfalarm, 0x80);
++ out_be16(&priv->psc->tfalarm, 0x80);
++
++ /* Go */
++ out_8(&priv->psc->command,MPC52xx_PSC_TX_ENABLE);
++ out_8(&priv->psc->command,MPC52xx_PSC_RX_ENABLE);
++
++ return 0;
++}
++
++static int
++mpc52xx_ac97_hwshutdown(struct mpc52xx_ac97_priv *priv)
++{
++ /* No IRQ */
++ out_be16(&priv->psc->mpc52xx_psc_imr, 0x0000);
++
++ /* Disable TB & RX */
++ out_8(&priv->psc->command,MPC52xx_PSC_RST_RX);
++ out_8(&priv->psc->command,MPC52xx_PSC_RST_TX);
++
++ /* FIXME : Reset or put codec in low power ? */
++
++ return 0;
++}
++
++
++/* ======================================================================== */
++/* OF Platform Driver */
++/* ======================================================================== */
++
++static int __devinit
++mpc52xx_ac97_probe(struct of_device *op, const struct of_device_id *match)
++{
++ struct device_node *dn = op->node;
++ struct mpc52xx_ac97_priv *priv;
++ struct snd_card *card;
++ struct resource res;
++ int rv;
++
++ dev_dbg(&op->dev, "probing MPC52xx PSC AC97 driver\n");
++
++ /* Get card structure */
++ rv = -ENOMEM;
++ card = snd_card_new(SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
++ THIS_MODULE, sizeof(struct mpc52xx_ac97_priv));
++ if (!card)
++ goto err_early;
++
++ priv = card->private_data;
++
++ /* Init our private structure */
++ priv->card = card;
++ priv->dev = &op->dev;
++
++ /* Get resources (mem,irq,...) */
++ rv = of_address_to_resource(dn, 0, &res);
++ if (rv)
++ goto err_early;
++
++ priv->mem_start = res.start;
++ priv->mem_len = res.end - res.start + 1;
++
++ if (!request_mem_region(priv->mem_start, priv->mem_len, DRV_NAME)) {
++ printk(KERN_ERR DRV_NAME ": request_mem_region failed\n");
++ rv = -EBUSY;
++ goto err_early;
++ }
++
++ priv->psc = ioremap(priv->mem_start, priv->mem_len);
++ if (!priv->psc) {
++ printk(KERN_ERR DRV_NAME ": ioremap failed\n");
++ rv = -ENOMEM;
++ goto err_iomap;
++ }
++
++ priv->irq = irq_of_parse_and_map(dn, 0);
++ if (priv->irq == NO_IRQ) {
++ printk(KERN_ERR DRV_NAME ": irq_of_parse_and_map failed\n");
++ rv = -EBUSY;
++ goto err_irqmap;
++ }
++
++ /* Low level HW Init */
++ mpc52xx_ac97_hwinit(priv);
++
++ /* Request IRQ now that we're 'stable' */
++ rv = request_irq(priv->irq, mpc52xx_ac97_irq, 0, DRV_NAME, priv);
++ if (rv < 0) {
++ printk(KERN_ERR DRV_NAME ": request_irq failed\n");
++ goto err_irqreq;
++ }
++
++ /* Prepare sound stuff */
++ rv = mpc52xx_ac97_setup_mixer(priv);
++ if (rv)
++ goto err_late;
++
++ rv = mpc52xx_ac97_setup_pcm(priv);
++ if (rv)
++ goto err_late;
++
++ /* Finally register the card */
++ snprintf(card->shortname, sizeof(card->shortname), DRV_NAME);
++ snprintf(card->longname, sizeof(card->longname),
++ "Freescale MPC52xx PSC-AC97 (%s)", card->mixername);
++
++ rv = snd_card_register(card);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": snd_card_register failed\n");
++ goto err_late;
++ }
++
++ dev_set_drvdata(&op->dev, priv);
++
++ return 0;
++
++err_late:
++ free_irq(priv->irq, priv);
++err_irqreq:
++ mpc52xx_ac97_hwshutdown(priv);
++ irq_dispose_mapping(priv->irq);
++err_irqmap:
++ iounmap(priv->psc);
++err_iomap:
++ release_mem_region(priv->mem_start, priv->mem_len);
++err_early:
++ if (card)
++ snd_card_free(card);
++ return rv;
++}
++
++static int
++mpc52xx_ac97_remove(struct of_device *op)
++{
++ struct mpc52xx_ac97_priv *priv;
++
++ dev_dbg(&op->dev, "removing MPC52xx PSC AC97 driver\n");
++
++ priv = dev_get_drvdata(&op->dev);
++ if (priv) {
++ /* Sound subsys shutdown */
++ snd_card_free(priv->card);
++
++ /* Low level HW shutdown */
++ mpc52xx_ac97_hwshutdown(priv);
++
++ /* Release resources */
++ iounmap(priv->psc);
++ free_irq(priv->irq, priv);
++ irq_dispose_mapping(priv->irq);
++ release_mem_region(priv->mem_start, priv->mem_len);
++ }
++
++ dev_set_drvdata(&op->dev, NULL);
++
++ return 0;
++}
++
++
++static struct of_device_id mpc52xx_ac97_of_match[] = {
++ {
++/* .type = "ac97", FIXME Efika ... */
++ .compatible = "mpc5200b-psc-ac97", /* B only for now */
++ },
++};
++/* Prevent autoload during developpment phase ... */
++/* MODULE_DEVICE_TABLE(of, mpc52xx_ac97_of_match); */
++
++
++static struct of_platform_driver mpc52xx_ac97_of_driver = {
++ .owner = THIS_MODULE,
++ .name = DRV_NAME,
++ .match_table = mpc52xx_ac97_of_match,
++ .probe = mpc52xx_ac97_probe,
++ .remove = mpc52xx_ac97_remove,
++ .driver = {
++ .name = DRV_NAME,
++ },
++};
++
++
++/* ======================================================================== */
++/* Module */
++/* ======================================================================== */
++
++static int __init
++mpc52xx_ac97_init(void)
++{
++ int rv;
++
++ /* FIXME BIG FAT EFIKA HACK */
++ {
++ void *mbar;
++ mbar = ioremap(0xf0000000, 0x100000);
++ printk(KERN_INFO "EFIKA HACK: port_config %08x\n", in_be32(mbar + 0xb00));
++ out_be32(mbar + 0xb00, 0x01051124);
++ printk(KERN_INFO "EFIKA HACK: port_config %08x\n", in_be32(mbar + 0xb00));
++ iounmap(mbar);
++ }
++ /* ------------------------ */
++
++ printk(KERN_INFO "Sound: MPC52xx PSC AC97 driver\n");
++
++ rv = of_register_platform_driver(&mpc52xx_ac97_of_driver);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": "
++ "of_register_platform_driver failed (%i)\n", rv);
++ return rv;
++ }
++
++ return 0;
++}
++
++static void __exit
++mpc52xx_ac97_exit(void)
++{
++ of_unregister_platform_driver(&mpc52xx_ac97_of_driver);
++}
++
++module_init(mpc52xx_ac97_init);
++module_exit(mpc52xx_ac97_exit);
++
++MODULE_AUTHOR("Sylvain Munaut <tnt@246tNt.com>");
++MODULE_DESCRIPTION(DRV_NAME ": Freescale MPC52xx PSC AC97 driver");
++MODULE_LICENSE("GPL");
++
+--
+1.4.4.2
+
diff --git a/packages/linux/linux-efika-2.6.20/0032-POWERPC-EFIKA-Adds-missing-interrupts-from-bestcomm-node.txt b/packages/linux/linux-efika-2.6.20/0032-POWERPC-EFIKA-Adds-missing-interrupts-from-bestcomm-node.txt
new file mode 100644
index 0000000000..1e0735849d
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0032-POWERPC-EFIKA-Adds-missing-interrupts-from-bestcomm-node.txt
@@ -0,0 +1,36 @@
+From: Grant Likely <grant.likely@secretlab.ca>
+Date: Tue, 9 Jan 2007 08:40:11 +0000 (-0700)
+Subject: [POWERPC] Efika: Add missing interrupts from bestcomm node
+X-Git-Url: http://git.secretlab.ca/cgi-bin/gitweb.cgi?p=linux-2.6.git;a=commitdiff;h=7eaf3ab60bdf3b8850f30916e06934f2e1437eb3
+
+[POWERPC] Efika: Add missing interrupts from bestcomm node
+
+The efika device tree does not have the list of bestcomm interrupts which
+are expected by the Linux 52xx bestcomm device driver. This adds the
+expected properties
+
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+---
+
+--- a/arch/powerpc/kernel/prom_init.c
++++ b/arch/powerpc/kernel/prom_init.c
+@@ -2136,11 +2136,17 @@ static void __init fixup_device_tree_efi
+ /* Substitution table */
+ #define prop_cstr(x) x, sizeof(x)
+ int prop_sound_irq[3] = { 2, 2, 0 };
++ int prop_bestcomm_irq[3*16] = { 3,0,0, 3,1,0, 3,2,0, 3,3,0,
++ 3,4,0, 3,5,0, 3,6,0, 3,7,0,
++ 3,8,0, 3,9,0, 3,10,0, 3,11,0,
++ 3,12,0, 3,13,0, 3,14,0, 3,15,0,
++ };
+ struct subst_entry efika_subst_table[] = {
+ { "/", "device_type", prop_cstr("efika") },
+ { "/builtin", "compatible", prop_cstr("soc") },
+ { "/builtin/ata", "compatible", prop_cstr("mpc5200b-ata\0mpc52xx-ata"), },
+ { "/builtin/bestcomm", "compatible", prop_cstr("mpc5200b-bestcomm\0mpc52xx-bestcomm") },
++ { "/builtin/bestcomm", "interrupts", prop_bestcomm_irq, sizeof(prop_bestcomm_irq) },
+ { "/builtin/ethernet", "compatible", prop_cstr("mpc5200b-fec\0mpc52xx-fec") },
+ { "/builtin/pic", "compatible", prop_cstr("mpc5200b-pic\0mpc52xx-pic") },
+ { "/builtin/serial", "compatible", prop_cstr("mpc5200b-psc-uart\0mpc52xx-psc-uart") },
+--
+
diff --git a/packages/linux/linux-efika-2.6.20/0033-EFIKA-fullduplex-prpl_aln.txt b/packages/linux/linux-efika-2.6.20/0033-EFIKA-fullduplex-prpl_aln.txt
new file mode 100644
index 0000000000..6feba7b112
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/0033-EFIKA-fullduplex-prpl_aln.txt
@@ -0,0 +1,27 @@
+diff -uNr orig-drivers/net/fec_mpc52xx/fec.c drivers/net/fec_mpc52xx/fec.c
+--- /orig-drivers/net/fec_mpc52xx/fec.c 2007-03-10 13:34:46.000000000 +0200
++++ /drivers/net/fec_mpc52xx/fec.c 2007-03-10 13:45:45.000000000 +0200
+@@ -525,7 +525,7 @@
+ priv->phy_speed = ((bd->bi_ipbfreq >> 20) / 5) << 1;
+ #endif
+
+- fec_restart(dev, 0); /* always use half duplex mode only */
++ fec_restart(dev, 1); /* always use full duplex mode only */
+ /*
+ * Read MIB counters in order to reset them,
+ * then zero all the stats fields in memory
+diff -uNr orig-drivers/net/fec_mpc52xx/fec_phy.c drivers/net/fec_mpc52xx/fec_phy.c
+--- /orig-drivers/net/fec_mpc52xx/fec_phy.c 2007-03-10 13:34:47.000000000 +0200
++++ /drivers/net/fec_mpc52xx/fec_phy.c 2007-03-10 13:44:56.000000000 +0200
+@@ -227,8 +227,8 @@
+ "GENERIC",
+
+ (const phy_cmd_t []) { /* config */
+- /* advertise only half-duplex capabilities */
+- { mk_mii_write(MII_ADVERTISE, MII_ADVERTISE_HALF),
++ /* advertise only full-duplex capabilities */
++ { mk_mii_write(MII_ADVERTISE, MII_ADVERTISE_ALL),
+ mii_parse_anar },
+
+ /* enable auto-negotiation */
+
diff --git a/packages/linux/linux-efika-2.6.20/defconfig b/packages/linux/linux-efika-2.6.20/defconfig
new file mode 100644
index 0000000000..fb7c9109bf
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/defconfig
@@ -0,0 +1,1621 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20
+# Tue Feb 27 05:45:18 2007
+#
+# CONFIG_PPC64 is not set
+CONFIG_PPC32=y
+CONFIG_PPC_MERGE=y
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_IRQ_PER_CPU=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_ILOG2_U32=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_PPC=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_PPC_OF=y
+CONFIG_PPC_UDBG_16550=y
+# CONFIG_GENERIC_TBSYNC is not set
+CONFIG_AUDIT_ARCH=y
+CONFIG_GENERIC_BUG=y
+# CONFIG_DEFAULT_UIMAGE is not set
+
+#
+# Processor support
+#
+CONFIG_CLASSIC32=y
+# CONFIG_PPC_82xx is not set
+# CONFIG_PPC_83xx is not set
+# CONFIG_PPC_85xx is not set
+# CONFIG_PPC_86xx is not set
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_8xx is not set
+# CONFIG_E200 is not set
+CONFIG_6xx=y
+CONFIG_PPC_FPU=y
+# CONFIG_PPC_DCR_NATIVE is not set
+# CONFIG_PPC_DCR_MMIO is not set
+# CONFIG_ALTIVEC is not set
+CONFIG_PPC_STD_MMU=y
+CONFIG_PPC_STD_MMU_32=y
+# CONFIG_SMP is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION="-efika"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_POSIX_MQUEUE=y
+# 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 is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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 is not set
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+
+#
+# Platform support
+#
+CONFIG_PPC_MULTIPLATFORM=y
+# CONFIG_EMBEDDED6xx is not set
+# CONFIG_APUS is not set
+CONFIG_PPC_CHRP=y
+CONFIG_PPC_MPC52xx=y
+CONFIG_PPC_MPC5200=y
+CONFIG_PPC_MPC5200_BUGFIX=y
+CONFIG_PPC_BESTCOMM=y
+CONFIG_PPC_EFIKA=y
+CONFIG_PPC_LITE5200=y
+# CONFIG_PPC_PMAC is not set
+# CONFIG_PPC_CELL is not set
+# CONFIG_PPC_CELL_NATIVE is not set
+CONFIG_PPC_NATIVE=y
+CONFIG_UDBG_RTAS_CONSOLE=y
+CONFIG_PPC_RTAS=y
+# CONFIG_RTAS_ERROR_LOGGING is not set
+CONFIG_RTAS_PROC=y
+# CONFIG_MMIO_NVRAM is not set
+CONFIG_PPC_MPC106=y
+# CONFIG_PPC_970_NAP is not set
+# CONFIG_PPC_INDIRECT_IO is not set
+# CONFIG_GENERIC_IOMAP is not set
+# CONFIG_CPU_FREQ is not set
+# CONFIG_TAU is not set
+# CONFIG_WANT_EARLY_SERIAL is not set
+CONFIG_MPIC=y
+CONFIG_USE_MDIO=y
+
+#
+# Kernel options
+#
+# CONFIG_HIGHMEM is not set
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+CONFIG_HZ_1000=y
+CONFIG_HZ=1000
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_MISC=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+# CONFIG_KEXEC is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_POPULATES_NODE_MAP=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 is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_PROC_DEVICETREE=y
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=ttyS0,9600 console=ttyPSC0,115200"
+# CONFIG_PM is not set
+CONFIG_SECCOMP=y
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+# CONFIG_ISA is not set
+CONFIG_GENERIC_ISA_DMA=y
+# CONFIG_MPIC_WEIRD is not set
+CONFIG_PPC_I8259=y
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_PCIEPORTBUS is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# PCI Hotplug Support
+#
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Advanced setup
+#
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Default settings for advanced configuration options are used
+#
+CONFIG_HIGHMEM_START=0xfe000000
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_TASK_SIZE=0x80000000
+CONFIG_BOOT_LOAD=0x00800000
+
+#
+# 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=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# 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=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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=y
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF 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 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_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK 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_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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+CONFIG_DONGLE=y
+CONFIG_ESI_DONGLE=m
+CONFIG_ACTISYS_DONGLE=m
+CONFIG_TEKRAM_DONGLE=m
+CONFIG_TOIM3232_DONGLE=m
+CONFIG_LITELINK_DONGLE=m
+CONFIG_MA600_DONGLE=m
+CONFIG_GIRBIL_DONGLE=m
+CONFIG_MCP2120_DONGLE=m
+CONFIG_OLD_BELKIN_DONGLE=m
+CONFIG_ACT200L_DONGLE=m
+
+#
+# Old SIR device drivers
+#
+CONFIG_IRPORT_SIR=m
+
+#
+# Old Serial dongle support
+#
+# CONFIG_DONGLE_OLD is not set
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+CONFIG_SIGMATEL_FIR=m
+CONFIG_NSC_FIR=m
+CONFIG_WINBOND_FIR=m
+CONFIG_TOSHIBA_FIR=m
+CONFIG_SMC_IRCC_FIR=m
+CONFIG_ALI_FIR=m
+CONFIG_VLSI_FIR=m
+CONFIG_VIA_FIR=m
+CONFIG_MCS_FIR=m
+# CONFIG_BT is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+# CONFIG_IEEE80211_CRYPT_CCMP is not set
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+# CONFIG_IEEE80211_SOFTMAC 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 is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD 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=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# Misc devices
+#
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE 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_IDEDISK=y
+# 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_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+# CONFIG_IDEDMA_ONLYDISK is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_JMICRON is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+# CONFIG_BLK_DEV_PIIX is not set
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SL82C105 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDEDMA=y
+CONFIG_IDEDMA_IVB=y
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+CONFIG_RAID_ATTRS=y
+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 is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SR_VENDOR=y
+CONFIG_CHR_DEV_SG=y
+# 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=y
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SCSI_SAS_ATTRS=m
+CONFIG_SCSI_SAS_LIBSAS=m
+# CONFIG_SCSI_SAS_LIBSAS_DEBUG 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_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_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 is not set
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+# CONFIG_PATA_ARTOP is not set
+# 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=y
+# 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_MPC52xx=y
+# 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
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD 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
+
+#
+# Macintosh device drivers
+#
+# CONFIG_MAC_EMUMOUSEBTN is not set
+# CONFIG_WINDFARM 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
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+CONFIG_FIXED_PHY=m
+CONFIG_FIXED_MII_10_FDX=y
+CONFIG_FIXED_MII_100_FDX=y
+
+#
+# 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=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+
+#
+# Tulip family network device support
+#
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_PCI is not set
+
+#
+# MPC5200 Networking Options
+#
+CONFIG_FEC_MPC52xx=y
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+CONFIG_E1000=m
+# CONFIG_E1000_NAPI is not set
+# CONFIG_E1000_DISABLE_PACKET_SPLIT 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_SIS190=m
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+CONFIG_SK98LIN=m
+CONFIG_TIGON3=m
+# CONFIG_BNX2 is not set
+# CONFIG_MV643XX_ETH 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_AIRO is not set
+# CONFIG_HERMES is not set
+CONFIG_ATMEL=m
+# CONFIG_PCI_ATMEL is not set
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+CONFIG_PRISM54=m
+CONFIG_USB_ZD1201=m
+CONFIG_HOSTAP=m
+# CONFIG_HOSTAP_FIRMWARE is not set
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+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 is not set
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+CONFIG_PPPOE=m
+CONFIG_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLHC=m
+# CONFIG_SLIP_SMART is not set
+CONFIG_SLIP_MODE_SLIP6=y
+# 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
+# CONFIG_INPUT_FF_MEMLESS 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_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_PCSPKR is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_I8042 is not set
+CONFIG_SERIO_SERPORT=m
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_RAW=m
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=16
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_UARTLITE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_MPC52xx=y
+CONFIG_SERIAL_MPC52xx_CONSOLE=y
+CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_BRIQ_PANEL is not set
+CONFIG_HVC_DRIVER=y
+CONFIG_HVC_RTAS=y
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_WATCHDOG_RTAS=m
+
+#
+# PCI-based Watchdog Cards
+#
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+CONFIG_WDT_501_PCI=y
+
+#
+# USB-based Watchdog Cards
+#
+CONFIG_USBPCWATCHDOG=m
+CONFIG_HW_RANDOM=y
+CONFIG_NVRAM=y
+CONFIG_GEN_RTC=y
+# CONFIG_GEN_RTC_X is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+CONFIG_AGP=m
+# 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=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# 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_HYDRA is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+CONFIG_I2C_MPC=y
+# CONFIG_I2C_NFORCE2 is not set
+CONFIG_I2C_OCORES=y
+CONFIG_I2C_PARPORT_LIGHT=y
+CONFIG_I2C_PROSAVAGE=m
+CONFIG_I2C_SAVAGE4=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+CONFIG_I2C_VOODOO3=m
+CONFIG_I2C_PCA_ISA=m
+
+#
+# Miscellaneous I2C Chip support
+#
+CONFIG_SENSORS_DS1337=m
+CONFIG_SENSORS_DS1374=m
+CONFIG_SENSORS_EEPROM=m
+CONFIG_SENSORS_PCF8574=m
+CONFIG_SENSORS_PCA9539=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_M41T00=m
+CONFIG_SENSORS_MAX6875=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# 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 is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB=y
+CONFIG_FB_DDC=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+CONFIG_FB_MACMODES=y
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+# 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_OF=y
+# CONFIG_FB_CT65550 is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_VGA16 is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_MATROX is not set
+CONFIG_FB_RADEON=y
+CONFIG_FB_RADEON_I2C=y
+# CONFIG_FB_RADEON_DEBUG is not set
+CONFIG_FB_ATY128=y
+CONFIG_FB_ATY=y
+CONFIG_FB_ATY_CT=y
+CONFIG_FB_ATY_GENERIC_LCD=y
+CONFIG_FB_ATY_GX=y
+# CONFIG_FB_SAVAGE is not set
+CONFIG_FB_SIS=y
+CONFIG_FB_SIS_300=y
+CONFIG_FB_SIS_315=y
+# 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_TRIDENT is not set
+# CONFIG_FB_IBM_GXT4500 is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_VGACON_SOFT_SCROLLBACK=y
+CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# 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=y
+CONFIG_USB_DYNAMIC_MINORS=y
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PPC_SOC=y
+CONFIG_USB_OHCI_HCD_PPC_OF=y
+CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
+CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
+CONFIG_USB_OHCI_HCD_PCI=y
+CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
+CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
+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 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_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=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_TOUCHSCREEN 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 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_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_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_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_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
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+# CONFIG_LEDS_CLASS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+# CONFIG_LEDS_TRIGGER_TIMER is not set
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# 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=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# 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
+
+#
+# DMA Engine support
+#
+CONFIG_DMA_ENGINE=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA=y
+
+#
+# DMA Devices
+#
+# CONFIG_INTEL_IOATDMA is not set
+
+#
+# Virtualization
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+# CONFIG_EXT2_FS_POSIX_ACL is not set
+# CONFIG_EXT2_FS_SECURITY 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=y
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_REISERFS_FS_XATTR is not set
+CONFIG_JFS_FS=y
+# CONFIG_JFS_POSIX_ACL is not set
+# CONFIG_JFS_SECURITY is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=y
+# 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 is not set
+CONFIG_ROMFS_FS=y
+CONFIG_INOTIFY=y
+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_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_ZISOFS_FS=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="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=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=y
+CONFIG_HFSPLUS_FS=y
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS 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=m
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_UFS_DEBUG is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+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_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+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 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+CONFIG_AMIGA_PARTITION=y
+# CONFIG_ATARI_PARTITION is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=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_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=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# 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=y
+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=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
+
+#
+# Instrumentation Support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# 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=y
+CONFIG_BOOTX_TEXT=y
+CONFIG_SERIAL_TEXT_DEBUG=y
+# CONFIG_PPC_EARLY_DEBUG 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_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_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_LRW is not set
+CONFIG_CRYPTO_DES=y
+# 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 is not set
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
diff --git a/packages/linux/linux-efika-2.6.20/v4l.diff b/packages/linux/linux-efika-2.6.20/v4l.diff
new file mode 100644
index 0000000000..cf5643e30d
--- /dev/null
+++ b/packages/linux/linux-efika-2.6.20/v4l.diff
@@ -0,0 +1,28 @@
+diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
+index a00fe72..5b60c05 100644
+--- a/arch/powerpc/Makefile
++++ b/arch/powerpc/Makefile
+@@ -139,6 +139,8 @@ core-$(CONFIG_XMON) += arch/powerpc/xmon/
+
+ drivers-$(CONFIG_OPROFILE) += arch/powerpc/oprofile/
+
++libs-y += `$(CC) -print-libgcc-file-name`
++
+ # Default to zImage, override when needed
+ defaultimage-y := zImage
+ defaultimage-$(CONFIG_PPC_ISERIES) := vmlinux
+diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
+index 9179f07..dea8384 100644
+--- a/arch/powerpc/kernel/ppc_ksyms.c
++++ b/arch/powerpc/kernel/ppc_ksyms.c
+@@ -164,6 +164,9 @@ long long __lshrdi3(long long, int);
+ EXPORT_SYMBOL(__ashrdi3);
+ EXPORT_SYMBOL(__ashldi3);
+ EXPORT_SYMBOL(__lshrdi3);
++
++extern void __ucmpdi2(void);
++EXPORT_SYMBOL(__ucmpdi2);
+ #endif
+
+ EXPORT_SYMBOL(memcpy);
+
diff --git a/packages/linux/linux-efika/0001-powerpc-Add-device-tree-fixup-for-the-EFIKA.txt b/packages/linux/linux-efika/0001-powerpc-Add-device-tree-fixup-for-the-EFIKA.txt
new file mode 100644
index 0000000000..332ce4df19
--- /dev/null
+++ b/packages/linux/linux-efika/0001-powerpc-Add-device-tree-fixup-for-the-EFIKA.txt
@@ -0,0 +1,99 @@
+From 6c8a0f1870285e82dc473d31ac297d570460dd66 Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Thu, 21 Dec 2006 22:26:39 +0100
+Subject: [PATCH] powerpc: Add device tree fixup for the EFIKA
+
+We make the efika device tree compliant with the defined bindings
+(at least compliant enough). We also add some missing bits.
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ arch/powerpc/kernel/prom_init.c | 74 +++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 74 insertions(+), 0 deletions(-)
+
+diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c
+index 520ef42..294e875 100644
+--- a/arch/powerpc/kernel/prom_init.c
++++ b/arch/powerpc/kernel/prom_init.c
+@@ -2117,11 +2117,78 @@ #else
+ #define fixup_device_tree_pmac()
+ #endif
+
++#ifdef CONFIG_PPC_EFIKA
++/* The current fw of the Efika has a device tree needs quite a few
++ * fixups to be compliant with the mpc52xx bindings. It's currently
++ * unknown if it will ever be compliant (come on bPlan ...) so we do fixups.
++ * NOTE that we (barely) tolerate it because the EFIKA was out before
++ * the bindings were finished, for any new boards -> RTFM ! */
++
++struct subst_entry {
++ char *path;
++ char *property;
++ void *value;
++ int value_len;
++};
++
++static void __init fixup_device_tree_efika(void)
++{
++ /* Substitution table */
++ #define prop_cstr(x) x, sizeof(x)
++ int prop_sound_irq[3] = { 2, 2, 0 };
++ struct subst_entry efika_subst_table[] = {
++ { "/builtin/sound", "compatible", prop_cstr("mpc5200b-psc-ac97\0mpc52xx-psc-ac97") },
++ { "/builtin/sound", "interrupts", prop_sound_irq, sizeof(prop_sound_irq) },
++ {}
++ };
++ #undef prop_cstr
++
++ /* Vars */
++ u32 node;
++ char prop[64];
++ int rv, i;
++
++ /* Check if we're really running on a EFIKA */
++ node = call_prom("finddevice", 1, 1, ADDR("/"));
++ if (!PHANDLE_VALID(node))
++ return;
++
++ rv = prom_getprop(node, "model", prop, sizeof(prop));
++ if (rv == PROM_ERROR)
++ return;
++ if (strcmp(prop, "EFIKA5K2"))
++ return;
++
++ prom_printf("Applying EFIKA device tree fixups\n");
++
++ /* Process substitution table */
++ for (i=0; efika_subst_table[i].path; i++) {
++ struct subst_entry *se = &efika_subst_table[i];
++
++ node = call_prom("finddevice", 1, 1, ADDR(se->path));
++ if (!PHANDLE_VALID(node)) {
++ prom_printf("fixup_device_tree_efika: ",
++ "skipped entry %x - not found\n", i);
++ continue;
++ }
++
++ rv = prom_setprop(node, se->path, se->property,
++ se->value, se->value_len );
++ if (rv == PROM_ERROR)
++ prom_printf("fixup_device_tree_efika: ",
++ "skipped entry %x - setprop error\n", i);
++ }
++}
++#else
++#define fixup_device_tree_efika()
++#endif
++
+ static void __init fixup_device_tree(void)
+ {
+ fixup_device_tree_maple();
+ fixup_device_tree_chrp();
+ fixup_device_tree_pmac();
++ fixup_device_tree_efika();
+ }
+
+ static void __init prom_find_boot_cpu(void)
+--
+1.4.2
+
diff --git a/packages/linux/linux-efika/0001-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt b/packages/linux/linux-efika/0001-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt
new file mode 100644
index 0000000000..a352f0e2f5
--- /dev/null
+++ b/packages/linux/linux-efika/0001-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt
@@ -0,0 +1,834 @@
+I cleaned up the setting of the port_config register on the MPC5200B.
+This driver now touches only the two relevant bits without overriding
+the others.
+
+Signed-off-by: Leon Woestenberg <leonw@mailcan.com>
+
+From 144658ad3d23bb426e29562235e40f0f9797a9c7 Mon Sep 17 00:00:00 2001
+From: Sylvain Munaut <tnt@246tNt.com>
+Date: Mon, 18 Dec 2006 22:51:38 +0100
+Subject: [PATCH] sound: Add support for the MPC52xx PSC AC97 Link
+
+Messy driver, to be cleaned ... a lot ...
+
+Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
+---
+ include/asm-ppc/mpc52xx_psc.h | 10 -
+ sound/ppc/Kconfig | 16 +
+ sound/ppc/Makefile | 3
+ sound/ppc/mpc52xx_ac97.c | 738 +++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 765 insertions(+), 2 deletions(-)
+
+Index: linux-2.6.19-rc6_efika/include/asm-ppc/mpc52xx_psc.h
+===================================================================
+--- linux-2.6.19-rc6_efika.orig/include/asm-ppc/mpc52xx_psc.h 2007-01-14 19:45:07.000000000 +0100
++++ linux-2.6.19-rc6_efika/include/asm-ppc/mpc52xx_psc.h 2007-01-14 19:45:07.000000000 +0100
+@@ -28,6 +28,10 @@
+ #define MPC52xx_PSC_MAXNUM 6
+
+ /* Programmable Serial Controller (PSC) status register bits */
++#define MPC52xx_PSC_SR_UNEX_RX 0x0001
++#define MPC52xx_PSC_SR_DATA_VAL 0x0002
++#define MPC52xx_PSC_SR_DATA_OVR 0x0004
++#define MPC52xx_PSC_SR_CMDSEND 0x0008
+ #define MPC52xx_PSC_SR_CDE 0x0080
+ #define MPC52xx_PSC_SR_RXRDY 0x0100
+ #define MPC52xx_PSC_SR_RXFULL 0x0200
+@@ -132,8 +136,10 @@
+ u8 reserved5[3];
+ u8 ctlr; /* PSC + 0x1c */
+ u8 reserved6[3];
+- u16 ccr; /* PSC + 0x20 */
+- u8 reserved7[14];
++ u32 ccr; /* PSC + 0x20 */
++ u32 ac97_slots; /* PSC + 0x24 */
++ u32 ac97_cmd; /* PSC + 0x28 */
++ u32 ac97_data; /* PSC + 0x2c */
+ u8 ivr; /* PSC + 0x30 */
+ u8 reserved8[3];
+ u8 ip; /* PSC + 0x34 */
+Index: linux-2.6.19-rc6_efika/sound/ppc/Kconfig
+===================================================================
+--- linux-2.6.19-rc6_efika.orig/sound/ppc/Kconfig 2007-01-14 19:45:07.000000000 +0100
++++ linux-2.6.19-rc6_efika/sound/ppc/Kconfig 2007-01-14 19:45:07.000000000 +0100
+@@ -33,3 +33,19 @@
+ option.
+
+ endmenu
++
++
++# ALSA ppc drivers
++
++menu "ALSA PPC devices"
++ depends on SND!=n && PPC
++
++config SND_PPC_MPC52xx_AC97
++ tristate "Freescale MPC52xx AC97 interface support"
++ depends on SND && PPC_MPC52xx
++ select SND_AC97_CODEC
++ help
++ Say Y or M if you want to support any AC97 codec attached to
++ the Freescqle MPC52xx AC97 interface.
++
++endmenu
+Index: linux-2.6.19-rc6_efika/sound/ppc/Makefile
+===================================================================
+--- linux-2.6.19-rc6_efika.orig/sound/ppc/Makefile 2007-01-14 19:45:07.000000000 +0100
++++ linux-2.6.19-rc6_efika/sound/ppc/Makefile 2007-01-14 19:45:07.000000000 +0100
+@@ -4,6 +4,9 @@
+ #
+
+ snd-powermac-objs := powermac.o pmac.o awacs.o burgundy.o daca.o tumbler.o keywest.o beep.o
++snd-mpc52xx-ac97-objs := mpc52xx_ac97.o
+
+ # Toplevel Module Dependency
+ obj-$(CONFIG_SND_POWERMAC) += snd-powermac.o
++
++obj-$(CONFIG_SND_PPC_MPC52xx_AC97) += snd-mpc52xx-ac97.o
+Index: linux-2.6.19-rc6_efika/sound/ppc/mpc52xx_ac97.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.19-rc6_efika/sound/ppc/mpc52xx_ac97.c 2007-01-14 22:45:55.000000000 +0100
+@@ -0,0 +1,742 @@
++/*
++ * Driver for the PSC of the Freescale MPC52xx configured as AC97 interface
++ *
++ *
++ * Copyright (C) 2006 Sylvain Munaut <tnt@246tNt.com>
++ *
++ * This file is licensed under the terms of the GNU General Public License
++ * version 2. This program is licensed "as is" without any warranty of any
++ * kind, whether express or implied.
++ */
++
++#define DEBUG
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/interrupt.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/initval.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/ac97_codec.h>
++
++#include <asm/of_platform.h>
++#include <asm/mpc52xx_psc.h>
++
++
++#define DRV_NAME "mpc52xx-psc-ac97"
++
++
++/* ======================================================================== */
++/* Structs / Defines */
++/* ======================================================================== */
++
++/* Private structure */
++struct mpc52xx_ac97_priv {
++ struct device *dev;
++ resource_size_t mem_start;
++ resource_size_t mem_len;
++ int irq;
++ struct mpc52xx_psc __iomem *psc;
++ struct snd_card *card;
++ struct snd_pcm *pcm;
++ struct snd_ac97 *ac97;
++
++ struct snd_pcm_substream *substream_playback;
++ unsigned int buf_pos;
++};
++
++/* Register bit definition (AC97 mode specific) */
++#define PSC_AC97_SLOT_BIT(n) (1<<(12-n))
++#define PSC_AC97_SLOTS_XMIT_SHIFT 16
++#define PSC_AC97_SLOTS_RECV_SHIFT 0
++
++
++
++/* ======================================================================== */
++/* ISR routine */
++/* ======================================================================== */
++
++static irqreturn_t
++mpc52xx_ac97_irq(int irq, void *dev_id)
++{
++ struct mpc52xx_ac97_priv *priv = dev_id;
++
++ static int icnt = 0;
++ #if 0
++ {
++ unsigned int val;
++// val = in_be32(&priv->psc->ac97_data);
++ printk(KERN_INFO "mpc52xx_ac97_irq fired (isr=%04x, status=%04x) %08x\n", in_be16(&priv->psc->mpc52xx_psc_imr), in_be16(&priv->psc->mpc52xx_psc_status), val);
++ out_8(&priv->psc->command,MPC52xx_PSC_RST_ERR_STAT);
++ }
++ #endif
++
++ /* Anti Crash during dev ;) */
++ #if 0
++ if ((icnt++) > 50000)
++ out_be16(&priv->psc->mpc52xx_psc_imr, 0);
++ #endif
++
++ /* Copy 64 data into the buffer */
++ if (in_be16(&priv->psc->mpc52xx_psc_imr) & 0x0100) {
++ if (priv->substream_playback) {
++ struct snd_pcm_runtime *rt;
++
++ rt = priv->substream_playback->runtime;
++
++ if (snd_pcm_playback_hw_avail(rt) < bytes_to_frames(rt,128)) {
++ int i;
++ /* Push silence */
++ for (i=0; i<64; i++)
++ out_be32(&priv->psc->mpc52xx_psc_buffer_32, 0x00000800);
++ printk(KERN_DEBUG "pushed silence ...\n");
++ } else {
++ int i;
++ unsigned short *data;
++
++ data = (unsigned short *)
++ (&rt->dma_area[frames_to_bytes(rt, priv->buf_pos)]);
++
++ for (i=0; i<64; i++)
++ out_be32(&priv->psc->mpc52xx_psc_buffer_32,
++ (((unsigned int)data[i]) << 16) | 0x00000000);
++ /* Setting the sof bit looks useless */
++
++ priv->buf_pos += bytes_to_frames(rt,128);;
++ if (priv->buf_pos >= rt->buffer_size)
++ priv->buf_pos = 0;
++
++ snd_pcm_period_elapsed(priv->substream_playback);
++ }
++ } else {
++ out_be16(&priv->psc->mpc52xx_psc_imr, 0);
++ printk(KERN_DEBUG "Interrupt with no stream ...\n");
++ }
++ } else {
++ printk(KERN_ERR "Spurious int\n");
++ }
++
++ return IRQ_HANDLED;
++}
++
++
++/* ======================================================================== */
++/* PCM interface */
++/* ======================================================================== */
++
++/* HW desc */
++
++static struct snd_pcm_hardware mpc52xx_ac97_hw = {
++ .info = SNDRV_PCM_INFO_INTERLEAVED |
++ SNDRV_PCM_INFO_MMAP |
++ SNDRV_PCM_INFO_MMAP_VALID,
++ .formats = SNDRV_PCM_FMTBIT_S16_BE,
++ .rates = SNDRV_PCM_RATE_8000_48000,
++ .rate_min = 8000,
++ .rate_max = 48000,
++ .channels_min = 1,
++ .channels_max = 2, /* Support for more ? */
++ .buffer_bytes_max = 128*1024,
++ .period_bytes_min = 128, /* 32, */
++ .period_bytes_max = 128, /* 16*1024, */
++ .periods_min = 8,
++ .periods_max = 256,
++ .fifo_size = 512,
++};
++
++
++/* Playback */
++
++static int
++mpc52xx_ac97_playback_open(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++
++ dev_dbg(priv->dev, "mpc52xx_ac97_playback_open(%p)\n", substream);
++
++ substream->runtime->hw = mpc52xx_ac97_hw;
++
++ priv->substream_playback = substream;
++ priv->buf_pos = 0; /* FIXME Do that where ? */
++
++ return 0; /* FIXME */
++}
++
++static int
++mpc52xx_ac97_playback_close(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++ dev_dbg(priv->dev, "mpc52xx_ac97_playback_close(%p)\n", substream);
++ priv->substream_playback = NULL;
++ return 0; /* FIXME */
++}
++
++static int
++mpc52xx_ac97_playback_prepare(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++
++ dev_dbg(priv->dev, "mpc52xx_ac97_playback_prepare(%p)\n", substream);
++
++ /* FIXME, need a spinlock to protect access */
++ if (substream->runtime->channels == 1)
++ out_be32(&priv->psc->ac97_slots, 0x01000000);
++ else
++ out_be32(&priv->psc->ac97_slots, 0x03000000);
++
++ snd_ac97_set_rate(priv->ac97, AC97_PCM_FRONT_DAC_RATE, substream->runtime->rate);
++
++ return 0; /* FIXME */
++}
++
++
++/* Capture */
++
++static int
++mpc52xx_ac97_capture_open(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++ return 0; /* FIXME */
++}
++
++static int
++mpc52xx_ac97_capture_close(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++ return 0; /* FIXME */
++}
++
++static int
++mpc52xx_ac97_capture_prepare(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++ return 0; /* FIXME */
++}
++
++
++/* Common */
++
++static int
++mpc52xx_ac97_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++ int rv;
++
++ dev_dbg(priv->dev, "mpc52xx_ac97_hw_params(%p)\n", substream);
++
++ rv = snd_pcm_lib_malloc_pages(substream,
++ params_buffer_bytes(params));
++ if (rv < 0) {
++ printk(KERN_ERR "hw params failes\n"); /* FIXME */
++ return rv;
++ }
++
++ printk(KERN_DEBUG "%d %d %d\n", params_buffer_bytes(params), params_period_bytes(params), params_periods(params));
++
++
++ return 0;
++}
++
++static int
++mpc52xx_ac97_hw_free(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++
++ dev_dbg(priv->dev, "mpc52xx_ac97_hw_free(%p)\n", substream);
++
++ return snd_pcm_lib_free_pages(substream);
++}
++
++static int
++mpc52xx_ac97_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++ int rv = 0;
++
++ dev_dbg(priv->dev, "mpc52xx_ac97_trigger(%p,%d)\n", substream, cmd);
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ /* Enable TX interrupt */
++ out_be16(&priv->psc->mpc52xx_psc_imr, 0x0100); // 0x0100
++
++ break;
++
++ case SNDRV_PCM_TRIGGER_STOP:
++ /* Disable TX interrupt */
++ out_be16(&priv->psc->mpc52xx_psc_imr, 0x0000);
++
++ break;
++
++ default:
++ rv = -EINVAL;
++ }
++
++ /* FIXME */
++ return rv;
++}
++
++static snd_pcm_uframes_t
++mpc52xx_ac97_pointer(struct snd_pcm_substream *substream)
++{
++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data;
++
++// dev_dbg(priv->dev, "mpc52xx_ac97_pointer(%p)\n", substream);
++
++ if (substream->runtime->channels == 1)
++ return priv->buf_pos; /* FIXME */
++ else
++ return priv->buf_pos >> 1; /* FIXME */
++}
++
++
++/* Ops */
++
++static struct snd_pcm_ops mpc52xx_ac97_playback_ops = {
++ .open = mpc52xx_ac97_playback_open,
++ .close = mpc52xx_ac97_playback_close,
++ .ioctl = snd_pcm_lib_ioctl,
++ .hw_params = mpc52xx_ac97_hw_params,
++ .hw_free = mpc52xx_ac97_hw_free,
++ .prepare = mpc52xx_ac97_playback_prepare,
++ .trigger = mpc52xx_ac97_trigger,
++ .pointer = mpc52xx_ac97_pointer,
++};
++
++static struct snd_pcm_ops mpc52xx_ac97_capture_ops = {
++ .open = mpc52xx_ac97_capture_open,
++ .close = mpc52xx_ac97_capture_close,
++ .ioctl = snd_pcm_lib_ioctl,
++ .hw_params = mpc52xx_ac97_hw_params,
++ .hw_free = mpc52xx_ac97_hw_free,
++ .prepare = mpc52xx_ac97_capture_prepare,
++ .trigger = mpc52xx_ac97_trigger,
++ .pointer = mpc52xx_ac97_pointer,
++};
++
++
++/* ======================================================================== */
++/* AC97 Bus interface */
++/* ======================================================================== */
++
++static unsigned short
++mpc52xx_ac97_bus_read(struct snd_ac97 *ac97, unsigned short reg)
++{
++ struct mpc52xx_ac97_priv *priv = ac97->private_data;
++ int timeout;
++ unsigned int val;
++
++ dev_dbg(priv->dev, "ac97 read: reg %04x\n", reg);
++
++ /* Wait for it to be ready */
++ timeout = 1000;
++ while ((--timeout) && (in_be16(&priv->psc->mpc52xx_psc_status) &
++ MPC52xx_PSC_SR_CMDSEND) )
++ udelay(10);
++
++ if (!timeout) {
++ printk(KERN_ERR DRV_NAME ": timeout on ac97 bus (rdy)\n");
++ return 0xffff;
++ }
++
++ /* Do the read */
++ out_be32(&priv->psc->ac97_cmd, (1<<31) | ((reg & 0x7f) << 24));
++
++ /* Wait for the answer */
++ timeout = 1000;
++ while ((--timeout) && !(in_be16(&priv->psc->mpc52xx_psc_status) &
++ MPC52xx_PSC_SR_DATA_VAL) )
++ udelay(10);
++
++ if (!timeout) {
++ printk(KERN_ERR DRV_NAME ": timeout on ac97 read (val)\n");
++ return 0xffff;
++ }
++
++ /* Get the data */
++ val = in_be32(&priv->psc->ac97_data);
++ if ( ((val>>24) & 0x7f) != reg ) {
++ printk(KERN_ERR DRV_NAME ": reg echo error on ac97 read\n");
++ return 0xffff;
++ }
++ val = (val >> 8) & 0xffff;
++
++ dev_dbg(priv->dev, "ac97 read ok: reg %04x val %04x\n",
++ reg, val);
++
++ return (unsigned short) val;
++}
++
++static void
++mpc52xx_ac97_bus_write(struct snd_ac97 *ac97,
++ unsigned short reg, unsigned short val)
++{
++ struct mpc52xx_ac97_priv *priv = ac97->private_data;
++ int timeout;
++
++ dev_dbg(priv->dev, "ac97 write: reg %04x val %04x\n",
++ reg, val);
++
++ /* Wait for it to be ready */
++ timeout = 1000;
++ while ((--timeout) && (in_be16(&priv->psc->mpc52xx_psc_status) &
++ MPC52xx_PSC_SR_CMDSEND) )
++ udelay(10);
++
++ if (!timeout) {
++ printk(KERN_ERR DRV_NAME ": timeout on ac97 write\n");
++ return;
++ }
++
++ /* Write data */
++ out_be32(&priv->psc->ac97_cmd, ((reg & 0x7f) << 24) | (val << 8));
++}
++
++static void
++mpc52xx_ac97_bus_reset(struct snd_ac97 *ac97)
++{
++ struct mpc52xx_ac97_priv *priv = ac97->private_data;
++
++ dev_dbg(priv->dev, "ac97 codec reset\n");
++
++ /* Do a cold reset */
++ out_8(&priv->psc->op1, 0x03);
++ udelay(10);
++ out_8(&priv->psc->op0, 0x02);
++ udelay(50);
++
++ /* PSC recover from cold reset (cfr user manual, not sure if useful) */
++ out_be32(&priv->psc->sicr, in_be32(&priv->psc->sicr));
++}
++
++
++static struct snd_ac97_bus_ops mpc52xx_ac97_bus_ops = {
++ .read = mpc52xx_ac97_bus_read,
++ .write = mpc52xx_ac97_bus_write,
++ .reset = mpc52xx_ac97_bus_reset,
++};
++
++
++/* ======================================================================== */
++/* Sound driver setup */
++/* ======================================================================== */
++
++static int
++mpc52xx_ac97_setup_pcm(struct mpc52xx_ac97_priv *priv)
++{
++ int rv;
++
++ rv = snd_pcm_new(priv->card, DRV_NAME "-pcm", 0, 1, 1, &priv->pcm);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": snd_pcm_new failed\n");
++ return rv;
++ }
++
++ rv = snd_pcm_lib_preallocate_pages_for_all(priv->pcm,
++ SNDRV_DMA_TYPE_CONTINUOUS, snd_dma_continuous_data(GFP_KERNEL),
++ 128*1024, 128*1024);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME
++ ": snd_pcm_lib_preallocate_pages_for_all failed\n");
++ return rv;
++ }
++
++ snd_pcm_set_ops(priv->pcm, SNDRV_PCM_STREAM_PLAYBACK,
++ &mpc52xx_ac97_playback_ops);
++ snd_pcm_set_ops(priv->pcm, SNDRV_PCM_STREAM_CAPTURE,
++ &mpc52xx_ac97_capture_ops);
++
++ priv->pcm->private_data = priv;
++ priv->pcm->info_flags = 0;
++
++ strcpy(priv->pcm->name, "Freescale MPC52xx PSC-AC97 PCM");
++
++ return 0;
++}
++
++static int
++mpc52xx_ac97_setup_mixer(struct mpc52xx_ac97_priv *priv)
++{
++ struct snd_ac97_bus *ac97_bus;
++ struct snd_ac97_template ac97_template;
++ int rv;
++
++ rv = snd_ac97_bus(priv->card, 0, &mpc52xx_ac97_bus_ops, NULL, &ac97_bus);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": snd_ac97_bus failed\n");
++ return rv;
++ }
++
++ memset(&ac97_template, 0, sizeof(struct snd_ac97_template));
++ ac97_template.private_data = priv;
++
++ rv = snd_ac97_mixer(ac97_bus, &ac97_template, &priv->ac97);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": snd_ac97_mixer failed\n");
++ return rv;
++ }
++
++ return 0;
++}
++
++
++static int
++mpc52xx_ac97_hwinit(struct mpc52xx_ac97_priv *priv)
++{
++ /* Reset everything first by safety */
++ out_8(&priv->psc->command,MPC52xx_PSC_RST_RX);
++ out_8(&priv->psc->command,MPC52xx_PSC_RST_TX);
++ out_8(&priv->psc->command,MPC52xx_PSC_RST_ERR_STAT);
++
++ /* Do a cold reset of codec */
++ out_8(&priv->psc->op1, 0x03);
++ udelay(10);
++ out_8(&priv->psc->op0, 0x02);
++ udelay(50);
++
++ /* Configure AC97 enhanced mode */
++ out_be32(&priv->psc->sicr, 0x03010000);
++
++ /* No slots active */
++ out_be32(&priv->psc->ac97_slots, 0x00000000);
++
++ /* No IRQ */
++ out_be16(&priv->psc->mpc52xx_psc_imr, 0x0000);
++
++ /* FIFO levels */
++ out_8(&priv->psc->rfcntl, 0x07);
++ out_8(&priv->psc->tfcntl, 0x07);
++ out_be16(&priv->psc->rfalarm, 0x80);
++ out_be16(&priv->psc->tfalarm, 0x80);
++
++ /* Go */
++ out_8(&priv->psc->command,MPC52xx_PSC_TX_ENABLE);
++ out_8(&priv->psc->command,MPC52xx_PSC_RX_ENABLE);
++
++ return 0;
++}
++
++static int
++mpc52xx_ac97_hwshutdown(struct mpc52xx_ac97_priv *priv)
++{
++ /* No IRQ */
++ out_be16(&priv->psc->mpc52xx_psc_imr, 0x0000);
++
++ /* Disable TB & RX */
++ out_8(&priv->psc->command,MPC52xx_PSC_RST_RX);
++ out_8(&priv->psc->command,MPC52xx_PSC_RST_TX);
++
++ /* FIXME : Reset or put codec in low power ? */
++
++ return 0;
++}
++
++
++/* ======================================================================== */
++/* OF Platform Driver */
++/* ======================================================================== */
++
++static int __devinit
++mpc52xx_ac97_probe(struct of_device *op, const struct of_device_id *match)
++{
++ struct device_node *dn = op->node;
++ struct mpc52xx_ac97_priv *priv;
++ struct snd_card *card;
++ struct resource res;
++ int rv;
++
++ dev_dbg(&op->dev, "probing MPC52xx PSC AC97 driver\n");
++
++ /* Get card structure */
++ rv = -ENOMEM;
++ card = snd_card_new(SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
++ THIS_MODULE, sizeof(struct mpc52xx_ac97_priv));
++ if (!card)
++ goto err_early;
++
++ priv = card->private_data;
++
++ /* Init our private structure */
++ priv->card = card;
++ priv->dev = &op->dev;
++
++ /* Get resources (mem,irq,...) */
++ rv = of_address_to_resource(dn, 0, &res);
++ if (rv)
++ goto err_early;
++
++ priv->mem_start = res.start;
++ priv->mem_len = res.end - res.start + 1;
++
++ if (!request_mem_region(priv->mem_start, priv->mem_len, DRV_NAME)) {
++ printk(KERN_ERR DRV_NAME ": request_mem_region failed\n");
++ rv = -EBUSY;
++ goto err_early;
++ }
++
++ priv->psc = ioremap(priv->mem_start, priv->mem_len);
++ if (!priv->psc) {
++ printk(KERN_ERR DRV_NAME ": ioremap failed\n");
++ rv = -ENOMEM;
++ goto err_iomap;
++ }
++
++ priv->irq = irq_of_parse_and_map(dn, 0);
++ if (priv->irq == NO_IRQ) {
++ printk(KERN_ERR DRV_NAME ": irq_of_parse_and_map failed\n");
++ rv = -EBUSY;
++ goto err_irqmap;
++ }
++
++ /* Low level HW Init */
++ mpc52xx_ac97_hwinit(priv);
++
++ /* Request IRQ now that we're 'stable' */
++ rv = request_irq(priv->irq, mpc52xx_ac97_irq, 0, DRV_NAME, priv);
++ if (rv < 0) {
++ printk(KERN_ERR DRV_NAME ": request_irq failed\n");
++ goto err_irqreq;
++ }
++
++ /* Prepare sound stuff */
++ rv = mpc52xx_ac97_setup_mixer(priv);
++ if (rv)
++ goto err_late;
++
++ rv = mpc52xx_ac97_setup_pcm(priv);
++ if (rv)
++ goto err_late;
++
++ /* Finally register the card */
++ snprintf(card->shortname, sizeof(card->shortname), DRV_NAME);
++ snprintf(card->longname, sizeof(card->longname),
++ "Freescale MPC52xx PSC-AC97 (%s)", card->mixername);
++
++ rv = snd_card_register(card);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": snd_card_register failed\n");
++ goto err_late;
++ }
++
++ dev_set_drvdata(&op->dev, priv);
++
++ return 0;
++
++err_late:
++ free_irq(priv->irq, priv);
++err_irqreq:
++ mpc52xx_ac97_hwshutdown(priv);
++ irq_dispose_mapping(priv->irq);
++err_irqmap:
++ iounmap(priv->psc);
++err_iomap:
++ release_mem_region(priv->mem_start, priv->mem_len);
++err_early:
++ if (card)
++ snd_card_free(card);
++ return rv;
++}
++
++static int
++mpc52xx_ac97_remove(struct of_device *op)
++{
++ struct mpc52xx_ac97_priv *priv;
++
++ dev_dbg(&op->dev, "removing MPC52xx PSC AC97 driver\n");
++
++ priv = dev_get_drvdata(&op->dev);
++ if (priv) {
++ /* Sound subsys shutdown */
++ snd_card_free(priv->card);
++
++ /* Low level HW shutdown */
++ mpc52xx_ac97_hwshutdown(priv);
++
++ /* Release resources */
++ iounmap(priv->psc);
++ free_irq(priv->irq, priv);
++ irq_dispose_mapping(priv->irq);
++ release_mem_region(priv->mem_start, priv->mem_len);
++ }
++
++ dev_set_drvdata(&op->dev, NULL);
++
++ return 0;
++}
++
++
++static struct of_device_id mpc52xx_ac97_of_match[] = {
++ {
++/* .type = "ac97", FIXME Efika ... */
++ .compatible = "mpc5200b-psc-ac97", /* B only for now */
++ },
++};
++/* Prevent autoload during developpment phase ... */
++/* MODULE_DEVICE_TABLE(of, mpc52xx_ac97_of_match); */
++
++
++static struct of_platform_driver mpc52xx_ac97_of_driver = {
++ .owner = THIS_MODULE,
++ .name = DRV_NAME,
++ .match_table = mpc52xx_ac97_of_match,
++ .probe = mpc52xx_ac97_probe,
++ .remove = mpc52xx_ac97_remove,
++ .driver = {
++ .name = DRV_NAME,
++ },
++};
++
++
++/* ======================================================================== */
++/* Module */
++/* ======================================================================== */
++
++static int __init
++mpc52xx_ac97_init(void)
++{
++ int rv;
++
++ /* Set port_config bits[25:26] to 01, keep the others as-is. This
++ sets PSC2 to AC97 mode. */
++ {
++ void *mbar;
++ u32 port_config;
++ mbar = ioremap(0xf0000000, 0x100000);
++ port_config = in_be32(mbar + 0xb00);
++ printk(KERN_INFO "port_config was: %08x\n", port_config);
++ port_config &= ~0x00000060;
++ port_config |= 0x00000020;
++ out_be32(mbar + 0xb00, port_config);
++ printk(KERN_INFO "port_config now: %08x\n", port_config);
++ iounmap(mbar);
++ }
++
++ printk(KERN_INFO "Sound: MPC52xx PSC AC97 driver\n");
++
++ rv = of_register_platform_driver(&mpc52xx_ac97_of_driver);
++ if (rv) {
++ printk(KERN_ERR DRV_NAME ": "
++ "of_register_platform_driver failed (%i)\n", rv);
++ return rv;
++ }
++
++ return 0;
++}
++
++static void __exit
++mpc52xx_ac97_exit(void)
++{
++ of_unregister_platform_driver(&mpc52xx_ac97_of_driver);
++}
++
++module_init(mpc52xx_ac97_init);
++module_exit(mpc52xx_ac97_exit);
++
++MODULE_AUTHOR("Sylvain Munaut <tnt@246tNt.com>");
++MODULE_DESCRIPTION(DRV_NAME ": Freescale MPC52xx PSC AC97 driver");
++MODULE_LICENSE("GPL");
++
diff --git a/packages/linux/linux-efika/defconfig b/packages/linux/linux-efika/defconfig
index 41529d9678..b8a39ffa05 100644
--- a/packages/linux/linux-efika/defconfig
+++ b/packages/linux/linux-efika/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.19-rc6
-# Mon Nov 27 17:09:56 2006
+# Sun Dec 31 01:46:08 2006
#
# CONFIG_PPC64 is not set
CONFIG_PPC32=y
@@ -1413,6 +1413,11 @@ CONFIG_SND_VIA82XX_MODEM=m
#
#
+# ALSA PPC devices
+#
+CONFIG_SND_PPC_MPC52xx_AC97=m
+
+#
# USB devices
#
CONFIG_SND_USB_AUDIO=m
@@ -1822,7 +1827,7 @@ CONFIG_RPCSEC_GSS_SPKM3=m
CONFIG_SMB_FS=m
CONFIG_SMB_NLS_DEFAULT=y
CONFIG_SMB_NLS_REMOTE="iso8859-1"
-# CONFIG_CIFS is not set
+CONFIG_CIFS=m
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
diff --git a/packages/linux/linux-efika_2.6.18+2.6.19-rc6.bb b/packages/linux/linux-efika_2.6.18+2.6.19-rc6.bb
index ff9b958eb3..7c28e7270e 100644
--- a/packages/linux/linux-efika_2.6.18+2.6.19-rc6.bb
+++ b/packages/linux/linux-efika_2.6.18+2.6.19-rc6.bb
@@ -1,13 +1,17 @@
DESCRIPTION = "Linux Kernel for the EFIKA dev platform"
SECTION = "kernel"
LICENSE = "GPL"
-PR = "r1"
+PR = "r3"
COMPATIBLE_MACHINE = "efika"
SRC_URI = "http://www.efika.de/download/linux-2.6.19-rc6_efika.tgz \
+ file://0001-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt;patch=1 \
+ file://0001-powerpc-Add-device-tree-fixup-for-the-EFIKA.txt;patch=1 \
file://defconfig \
"
+# http://www.246tnt.com/files/0001-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt;patch=1 \
+# http://lkml.org/lkml/2006/11/29/335;patch=1 \
S = "${WORKDIR}/linux-2.6.19-rc6_efika"
@@ -19,7 +23,7 @@ KERNEL_IMAGETYPE = "zImage"
do_configure() {
install -m 644 ${WORKDIR}/defconfig ${S}/.config
- make ARCH=${ARCH} oldconfig
+ yes | make ARCH=${ARCH} oldconfig
}
do_deploy() {
diff --git a/packages/linux/linux-efika_2.6.20.11.bb b/packages/linux/linux-efika_2.6.20.11.bb
new file mode 100644
index 0000000000..d54b642a1b
--- /dev/null
+++ b/packages/linux/linux-efika_2.6.20.11.bb
@@ -0,0 +1,86 @@
+DESCRIPTION = "Linux Kernel for the EFIKA dev platform"
+SECTION = "kernel"
+LICENSE = "GPL"
+PR = "r0"
+
+COMPATIBLE_MACHINE = "efika"
+
+FILESPATH = "${FILE_DIRNAME}/linux-efika-${PV}:${FILE_DIRNAME}/linux-efika-2.6.20"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2 \
+ file://0001-powerpc-serial-Dispose-irq-mapping-when-done-in-mpc52xx_serial.c.txt;p=1;patch=1 \
+ file://0003-powerpc-Add-device-tree-fixups-for-the-EFIKA.txt;p=1;patch=1 \
+ file://0004-powerpc-Use-common-52xx-of_platform-probe-code-for-EFIKA.txt;p=1;patch=1 \
+ file://0005-powerpc-Restore-proper-link-order-in-platform.txt;p=1;patch=1 \
+ file://0006-Rework-the-OHCI-quirk-mecanism-as-suggested-by-David.txt;p=1;patch=1 \
+ file://0007-Implement-support-for-split-endian-OHCI.txt;p=1;patch=1 \
+ file://0008-ohci-Rework-bus-glue-integration-to-allow-several-at-once.txt;p=1;patch=1 \
+ file://0009-ohci-Add-support-for-OHCI-controller-on-the-of_platform-bus.txt;p=1;patch=1 \
+ file://0010-libata-Add-support-for-the-MPC52xx-ATA-controller.txt;p=1;patch=1 \
+ file://0011-ohci-Whitespace-and-typo-fix-in-ohci-ppc-of.c.txt;p=1;patch=1 \
+ file://0012-ata-Fix-pata_mpc52xx.c-compatible-list.txt;p=1;patch=1 \
+ file://0013-powerpc-serial-Fix-mpc52xx_uart.c-compatible-list.txt;p=1;patch=1 \
+ file://0014-powerpc-Small-cleanup-of-EFIKA-platform.txt;p=1;patch=1 \
+ file://0015-powerpc-Add-a-unified-uevent-handler-for-bus-based-on-of_device.txt;p=1;patch=1 \
+ file://0016-macintosh-Use-the-new-of_device-common-uevent-handler.txt;p=1;patch=1 \
+ file://0017-powerpc-Add-uevent-handler-for-of_platform_bus.txt;p=1;patch=1 \
+ file://0018-powerpc-Add-uevent-handler-for-ibmebus.txt;p=1;patch=1 \
+ file://0019-MPC5200-Bestcomm-platform-driver.txt;p=1;patch=1 \
+ file://0020-Fec-MPC5200-eth-driver.txt;p=1;patch=1 \
+ file://0021-POWERPC-Copy-bestcomm-support-files-into-arch-powerpc.txt;p=1;patch=1 \
+ file://0022-MPC52xx-PCI-now-working-on-lite5200.-ugly-but-working.txt;p=1;patch=1 \
+ file://0023-POWERPC-Make-FEC-work-on-the-lite5200.txt;p=1;patch=1 \
+ file://0024-Add-missing-function-prototype.txt;p=1;patch=1 \
+ file://0025-POWERPC-Misc-EFIKA-fixups-for-rtas-chrp.txt;p=1;patch=1 \
+ file://0026-POWERPC-Cleanup-mpc52xx-PCI-support.txt;p=1;patch=1 \
+ file://0027-POWERPC-Change-name-of-mpc52xx-pci-support-file-in-Makefile.txt;p=1;patch=1 \
+ file://0028-POWERPC-Change-link-order-so-mpc52xx-fec-always-shows-up-as-eth0.txt;p=1;patch=1 \
+ file://0029-POWERPC-Fixup-pr_print-format-for-mpc52xx-pci-support.txt;p=1;patch=1 \
+ file://0030-POWERPC-Add-mpc52xx-lite5200-PCI-support.txt;p=1;patch=1 \
+ file://0031-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt;p=1;patch=1 \
+ file://0032-POWERPC-EFIKA-Adds-missing-interrupts-from-bestcomm-node.txt;p=1;patch=1 \
+ file://0033-EFIKA-fullduplex-prpl_aln.txt;p=1;patch=1 \
+ file://v4l.diff;p=1;patch=1 \
+ http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.20.11.bz2;p=1;patch=1 \
+ file://sched-cfs-v9-v2.6.20.11.patch;p=1;patch=1 \
+ file://defconfig \
+ "
+
+
+S = "${WORKDIR}/linux-2.6.20"
+
+inherit kernel
+
+export ARCH="powerpc"
+
+KERNEL_IMAGETYPE = "zImage"
+
+do_configure() {
+ install -m 644 ${WORKDIR}/defconfig ${S}/.config
+ make ARCH=${ARCH} oldconfig
+}
+
+do_stage_append () {
+#need ppc platforms includes + friends in order for external kernel modules to compile as headers as still split
+
+ install -d ${STAGING_KERNEL_DIR}/arch/
+ cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+
+ install -d ${STAGING_KERNEL_DIR}/include/asm
+ cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+}
+
+
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
+
+
diff --git a/packages/linux/linux-efika_2.6.20.bb b/packages/linux/linux-efika_2.6.20.bb
new file mode 100644
index 0000000000..bb2a6dc815
--- /dev/null
+++ b/packages/linux/linux-efika_2.6.20.bb
@@ -0,0 +1,83 @@
+DESCRIPTION = "Linux Kernel for the EFIKA dev platform"
+SECTION = "kernel"
+LICENSE = "GPL"
+PR = "r2"
+
+COMPATIBLE_MACHINE = "efika"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://0001-powerpc-serial-Dispose-irq-mapping-when-done-in-mpc52xx_serial.c.txt;p=1;patch=1 \
+ file://0003-powerpc-Add-device-tree-fixups-for-the-EFIKA.txt;p=1;patch=1 \
+ file://0004-powerpc-Use-common-52xx-of_platform-probe-code-for-EFIKA.txt;p=1;patch=1 \
+ file://0005-powerpc-Restore-proper-link-order-in-platform.txt;p=1;patch=1 \
+ file://0006-Rework-the-OHCI-quirk-mecanism-as-suggested-by-David.txt;p=1;patch=1 \
+ file://0007-Implement-support-for-split-endian-OHCI.txt;p=1;patch=1 \
+ file://0008-ohci-Rework-bus-glue-integration-to-allow-several-at-once.txt;p=1;patch=1 \
+ file://0009-ohci-Add-support-for-OHCI-controller-on-the-of_platform-bus.txt;p=1;patch=1 \
+ file://0010-libata-Add-support-for-the-MPC52xx-ATA-controller.txt;p=1;patch=1 \
+ file://0011-ohci-Whitespace-and-typo-fix-in-ohci-ppc-of.c.txt;p=1;patch=1 \
+ file://0012-ata-Fix-pata_mpc52xx.c-compatible-list.txt;p=1;patch=1 \
+ file://0013-powerpc-serial-Fix-mpc52xx_uart.c-compatible-list.txt;p=1;patch=1 \
+ file://0014-powerpc-Small-cleanup-of-EFIKA-platform.txt;p=1;patch=1 \
+ file://0015-powerpc-Add-a-unified-uevent-handler-for-bus-based-on-of_device.txt;p=1;patch=1 \
+ file://0016-macintosh-Use-the-new-of_device-common-uevent-handler.txt;p=1;patch=1 \
+ file://0017-powerpc-Add-uevent-handler-for-of_platform_bus.txt;p=1;patch=1 \
+ file://0018-powerpc-Add-uevent-handler-for-ibmebus.txt;p=1;patch=1 \
+ file://0019-MPC5200-Bestcomm-platform-driver.txt;p=1;patch=1 \
+ file://0020-Fec-MPC5200-eth-driver.txt;p=1;patch=1 \
+ file://0021-POWERPC-Copy-bestcomm-support-files-into-arch-powerpc.txt;p=1;patch=1 \
+ file://0022-MPC52xx-PCI-now-working-on-lite5200.-ugly-but-working.txt;p=1;patch=1 \
+ file://0023-POWERPC-Make-FEC-work-on-the-lite5200.txt;p=1;patch=1 \
+ file://0024-Add-missing-function-prototype.txt;p=1;patch=1 \
+ file://0025-POWERPC-Misc-EFIKA-fixups-for-rtas-chrp.txt;p=1;patch=1 \
+ file://0026-POWERPC-Cleanup-mpc52xx-PCI-support.txt;p=1;patch=1 \
+ file://0027-POWERPC-Change-name-of-mpc52xx-pci-support-file-in-Makefile.txt;p=1;patch=1 \
+ file://0028-POWERPC-Change-link-order-so-mpc52xx-fec-always-shows-up-as-eth0.txt;p=1;patch=1 \
+ file://0029-POWERPC-Fixup-pr_print-format-for-mpc52xx-pci-support.txt;p=1;patch=1 \
+ file://0030-POWERPC-Add-mpc52xx-lite5200-PCI-support.txt;p=1;patch=1 \
+ file://0031-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt;p=1;patch=1 \
+ file://0032-POWERPC-EFIKA-Adds-missing-interrupts-from-bestcomm-node.txt;p=1;patch=1 \
+ file://0033-EFIKA-fullduplex-prpl_aln.txt;p=1;patch=1 \
+ file://v4l.diff;p=1;patch=1 \
+
+ file://defconfig \
+ "
+
+
+S = "${WORKDIR}/linux-${PV}"
+
+inherit kernel
+
+export ARCH="powerpc"
+
+KERNEL_IMAGETYPE = "zImage"
+
+do_configure() {
+ install -m 644 ${WORKDIR}/defconfig ${S}/.config
+ make ARCH=${ARCH} oldconfig
+}
+
+do_stage_append () {
+#need ppc platforms includes + friends in order for external kernel modules to compile as headers as still split
+
+ install -d ${STAGING_KERNEL_DIR}/arch/
+ cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+
+ install -d ${STAGING_KERNEL_DIR}/include/asm
+ cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+}
+
+
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
+
+
diff --git a/packages/linux/linux-epia-2.6.19.2/.mtn2git_empty b/packages/linux/linux-epia-2.6.19.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-epia-2.6.19.2/.mtn2git_empty
diff --git a/packages/linux/linux-epia-2.6.19.2/epia_defconfig b/packages/linux/linux-epia-2.6.19.2/epia_defconfig
new file mode 100644
index 0000000000..db84c236cb
--- /dev/null
+++ b/packages/linux/linux-epia-2.6.19.2/epia_defconfig
@@ -0,0 +1,1875 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19.2
+# Fri Jan 26 11:55:32 2007
+#
+CONFIG_X86_32=y
+CONFIG_GENERIC_TIME=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_SEMAPHORE_SLEEPERS=y
+CONFIG_X86=y
+CONFIG_MMU=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_DMI=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# 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_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 is not set
+# CONFIG_RELAY is not set
+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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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 is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+CONFIG_LBD=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF 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"
+
+#
+# Processor type and features
+#
+# CONFIG_SMP is not set
+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 is not set
+# 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=y
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_X86_GENERIC is not set
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_XADD=y
+CONFIG_X86_L1_CACHE_SHIFT=5
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_CALIBRATE_DELAY=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_USE_PPRO_CHECKSUM=y
+CONFIG_X86_USE_3DNOW=y
+CONFIG_X86_TSC=y
+# CONFIG_HPET_TIMER 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 is not set
+CONFIG_VM86=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_PAGE_OFFSET=0xC0000000
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_POPULATES_NODE_MAP=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_RESOURCES_64BIT is not set
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MTRR=y
+# CONFIG_EFI is not set
+CONFIG_REGPARM=y
+CONFIG_SECCOMP=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_KEXEC=y
+CONFIG_PHYSICAL_START=0x100000
+CONFIG_COMPAT_VDSO=y
+
+#
+# Power management options (ACPI, APM)
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_SOFTWARE_SUSPEND=y
+CONFIG_PM_STD_PARTITION=""
+
+#
+# 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_DOCK is not set
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_THERMAL=y
+# CONFIG_ACPI_ASUS is not set
+CONFIG_ACPI_IBM=m
+# CONFIG_ACPI_IBM_DOCK 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
+# CONFIG_ACPI_SBS is not set
+
+#
+# APM (Advanced Power Management) BIOS Support
+#
+# CONFIG_APM is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=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 is not set
+
+#
+# CPUFreq processor drivers
+#
+CONFIG_X86_ACPI_CPUFREQ=m
+# CONFIG_X86_POWERNOW_K6 is not set
+# CONFIG_X86_POWERNOW_K7 is not set
+# CONFIG_X86_POWERNOW_K8 is not set
+# CONFIG_X86_GX_SUSPMOD is not set
+# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
+# CONFIG_X86_SPEEDSTEP_ICH is not set
+# CONFIG_X86_SPEEDSTEP_SMI is not set
+# CONFIG_X86_P4_CLOCKMOD is not set
+# CONFIG_X86_CPUFREQ_NFORCE2 is not set
+# CONFIG_X86_LONGRUN is not set
+CONFIG_X86_LONGHAUL=y
+
+#
+# shared options
+#
+# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
+# CONFIG_X86_SPEEDSTEP_LIB 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_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 is not set
+CONFIG_BINFMT_MISC=m
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=y
+# CONFIG_XFRM_SUB_POLICY 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=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_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=y
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
+CONFIG_IPV6_MIP6=y
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+CONFIG_INET6_XFRM_MODE_TRANSPORT=y
+CONFIG_INET6_XFRM_MODE_TUNNEL=y
+CONFIG_INET6_XFRM_MODE_BEET=y
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=y
+# 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_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=y
+# 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 is not set
+# CONFIG_IP_NF_FTP is not set
+# CONFIG_IP_NF_IRC is not set
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_H323 is not set
+# CONFIG_IP_NF_SIP is not set
+CONFIG_IP_NF_QUEUE=y
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE 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_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=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+# CONFIG_BT_RFCOMM_TTY is not set
+CONFIG_BT_BNEP=m
+# CONFIG_BT_BNEP_MC_FILTER is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
+# 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 is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# 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 is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_AX88796 is not set
+# CONFIG_PARPORT_1284 is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNP is not set
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=m
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE 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 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=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# Misc devices
+#
+# CONFIG_IBM_ASM is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE 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=y
+CONFIG_IDEDISK_MULTI_MODE=y
+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_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+# CONFIG_BLK_DEV_RZ1000 is not set
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+# CONFIG_IDEDMA_ONLYDISK is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_ATIIXP is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_CS5535 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_JMICRON is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+# CONFIG_BLK_DEV_PIIX is not set
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SIS5513 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+CONFIG_BLK_DEV_VIA82CXXX=y
+# CONFIG_IDE_ARM is not set
+# CONFIG_IDE_CHIPSETS is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD 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=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 is not set
+# 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 is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS 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_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_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_PPA is not set
+# CONFIG_SCSI_IMM is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 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_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_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
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA 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 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=y
+
+#
+# Subsystem Options
+#
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+# CONFIG_IEEE1394_OUI_DB is not set
+CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
+CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
+# CONFIG_IEEE1394_EXPORT_FULL_API is not set
+
+#
+# Device Drivers
+#
+# CONFIG_IEEE1394_PCILYNX is not set
+CONFIG_IEEE1394_OHCI1394=y
+
+#
+# Protocol Drivers
+#
+CONFIG_IEEE1394_VIDEO1394=m
+CONFIG_IEEE1394_SBP2=m
+# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
+CONFIG_IEEE1394_ETH1394=m
+CONFIG_IEEE1394_DV1394=m
+CONFIG_IEEE1394_RAWIO=m
+
+#
+# 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
+
+#
+# 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 is not set
+# 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=y
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_VIA_RHINE_NAPI is not set
+# CONFIG_NET_POCKET 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
+# 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 is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP 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
+# CONFIG_INPUT_FF_MEMLESS 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=m
+# 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 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+# 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=y
+# CONFIG_INPUT_PCSPKR is not set
+# CONFIG_INPUT_WISTRON_BTNS is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=m
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PARKBD 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_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_PRINTER=m
+# CONFIG_LP_CONSOLE is not set
+CONFIG_PPDEV=m
+# CONFIG_TIPAR is not set
+
+#
+# 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=y
+# CONFIG_AGP_ALI is not set
+# CONFIG_AGP_ATI is not set
+# CONFIG_AGP_AMD is not set
+# CONFIG_AGP_AMD64 is not set
+# CONFIG_AGP_INTEL is not set
+# CONFIG_AGP_NVIDIA is not set
+# CONFIG_AGP_SIS is not set
+# CONFIG_AGP_SWORKS is not set
+CONFIG_AGP_VIA=y
+# CONFIG_AGP_EFFICEON is not set
+CONFIG_DRM=y
+# CONFIG_DRM_TDFX is not set
+# CONFIG_DRM_R128 is not set
+# CONFIG_DRM_RADEON is not set
+# CONFIG_DRM_MGA is not set
+# CONFIG_DRM_SIS is not set
+CONFIG_DRM_VIA=y
+# CONFIG_DRM_SAVAGE is not set
+# CONFIG_MWAVE is not set
+# CONFIG_PC8736x_GPIO is not set
+# CONFIG_NSC_GPIO 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=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+# 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_ELEKTOR is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_SCx200_ACB 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=m
+CONFIG_I2C_VIAPRO=m
+# 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# 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 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+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_K8TEMP 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=m
+# CONFIG_SENSORS_VT8231 is not set
+# CONFIG_SENSORS_W83781D is not set
+# 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_HDAPS is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# 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_VIVI is not set
+# CONFIG_VIDEO_BT848 is not set
+# CONFIG_VIDEO_PMS is not set
+# CONFIG_VIDEO_BWQCAM is not set
+# CONFIG_VIDEO_CQCAM 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_VIDEO_STRADIS is not set
+# CONFIG_VIDEO_ZORAN is not set
+# CONFIG_VIDEO_SAA7134 is not set
+# CONFIG_VIDEO_MXB is not set
+# CONFIG_VIDEO_DPC is not set
+# CONFIG_VIDEO_HEXIUM_ORION is not set
+# CONFIG_VIDEO_HEXIUM_GEMINI is not set
+# CONFIG_VIDEO_CX88 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 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
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_CADET is not set
+# CONFIG_RADIO_RTRACK is not set
+# CONFIG_RADIO_RTRACK2 is not set
+# CONFIG_RADIO_AZTECH is not set
+# CONFIG_RADIO_GEMTEK is not set
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_RADIO_SF16FMI is not set
+# CONFIG_RADIO_SF16FMR2 is not set
+# CONFIG_RADIO_TERRATEC is not set
+# CONFIG_RADIO_TRUST is not set
+# CONFIG_RADIO_TYPHOON is not set
+# CONFIG_RADIO_ZOLTRIX is not set
+# CONFIG_USB_DSBR is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+CONFIG_DVB=y
+CONFIG_DVB_CORE=m
+# CONFIG_DVB_CORE_ATTACH is not set
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+CONFIG_DVB_AV7110=m
+# CONFIG_DVB_AV7110_OSD is not set
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+# CONFIG_DVB_BUDGET_AV is not set
+CONFIG_DVB_BUDGET_PATCH=m
+
+#
+# Supported USB Adapters
+#
+# CONFIG_DVB_USB is not set
+# CONFIG_DVB_TTUSB_BUDGET is not set
+# CONFIG_DVB_TTUSB_DEC is not set
+# CONFIG_DVB_CINERGYT2 is not set
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+# CONFIG_DVB_B2C2_FLEXCOP is not set
+
+#
+# Supported BT878 Adapters
+#
+
+#
+# Supported Pluto2 Adapters
+#
+# CONFIG_DVB_PLUTO2 is not set
+
+#
+# Supported DVB Frontends
+#
+
+#
+# Customise DVB Frontends
+#
+# CONFIG_DVB_FE_CUSTOMISE is not set
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_STV0299=m
+# CONFIG_DVB_CX24110 is not set
+# CONFIG_DVB_CX24123 is not set
+CONFIG_DVB_TDA8083=m
+# CONFIG_DVB_MT312 is not set
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_TDA10086=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+CONFIG_DVB_SP8870=m
+# CONFIG_DVB_SP887X is not set
+# CONFIG_DVB_CX22700 is not set
+# CONFIG_DVB_CX22702 is not set
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+# CONFIG_DVB_MT352 is not set
+# CONFIG_DVB_ZL10353 is not set
+# CONFIG_DVB_DIB3000MB is not set
+# CONFIG_DVB_DIB3000MC is not set
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+# CONFIG_DVB_NXT200X is not set
+# CONFIG_DVB_OR51211 is not set
+# CONFIG_DVB_OR51132 is not set
+# CONFIG_DVB_BCM3510 is not set
+# CONFIG_DVB_LGDT330X is not set
+
+#
+# Tuners/PLL support
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TDA826X=m
+# CONFIG_DVB_TUNER_MT2060 is not set
+
+#
+# Miscellaneous devices
+#
+CONFIG_DVB_LNBP21=m
+# CONFIG_DVB_ISL6421 is not set
+# CONFIG_DVB_TUA6100 is not set
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_VIDEOBUF=m
+CONFIG_VIDEO_BUF=m
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB is not set
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
+# CONFIG_VIDEO_SELECT is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_RAWMIDI=y
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=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_MPU401_UART=y
+CONFIG_SND_AC97_CODEC=y
+CONFIG_SND_AC97_BUS=y
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_MTS64 is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ISA devices
+#
+# CONFIG_SND_ADLIB is not set
+# CONFIG_SND_AD1848 is not set
+# CONFIG_SND_CMI8330 is not set
+# CONFIG_SND_CS4231 is not set
+# CONFIG_SND_CS4232 is not set
+# CONFIG_SND_CS4236 is not set
+# CONFIG_SND_ES1688 is not set
+# CONFIG_SND_ES18XX is not set
+# CONFIG_SND_GUSCLASSIC is not set
+# CONFIG_SND_GUSEXTREME is not set
+# CONFIG_SND_GUSMAX is not set
+# CONFIG_SND_OPL3SA2 is not set
+# CONFIG_SND_OPTI92X_AD1848 is not set
+# CONFIG_SND_OPTI92X_CS4231 is not set
+# CONFIG_SND_OPTI93X is not set
+# CONFIG_SND_MIRO is not set
+# CONFIG_SND_SB8 is not set
+# CONFIG_SND_SB16 is not set
+# CONFIG_SND_SBAWE is not set
+# CONFIG_SND_SGALAXY is not set
+# CONFIG_SND_SSCAPE is not set
+# CONFIG_SND_WAVEFRONT is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALS4000 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_CS5535AUDIO 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=y
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+# CONFIG_SND_AC97_POWER_SAVE is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_USX2Y is not set
+
+#
+# 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_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_EHCI_TT_NEWSCHED 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=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_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA 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_TOUCHSCREEN 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 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_MON=y
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# 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_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_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
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+# CONFIG_EDAC is not set
+
+#
+# Real Time Clock
+#
+# 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=y
+# 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 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=y
+# CONFIG_FUSE_FS is not set
+
+#
+# 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_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLBFS 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=m
+# 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=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 is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# 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
+# 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=y
+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=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=m
+
+#
+# Instrumentation Support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=y
+# CONFIG_KPROBES is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_UNUSED_SYMBOLS=y
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_FS is not set
+# CONFIG_UNWIND_INFO is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_EARLY_PRINTK=y
+CONFIG_DOUBLEFAULT=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_PLIST=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_KTIME_SCALAR=y
diff --git a/packages/linux/linux-epia_2.6.19.2.bb b/packages/linux/linux-epia_2.6.19.2.bb
new file mode 100644
index 0000000000..87d61b0226
--- /dev/null
+++ b/packages/linux/linux-epia_2.6.19.2.bb
@@ -0,0 +1,27 @@
+SECTION = "kernel"
+DESCRIPTION = "Linux kernel for VIA EPiA"
+LICENSE = "GPL"
+PR = "r1"
+
+KERNEL_CCSUFFIX = "-3.3.4"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://epia_defconfig"
+S = "${WORKDIR}/linux-${PV}"
+
+COMPATIBLE_HOST = 'i.86.*-linux'
+
+inherit kernel
+
+ARCH = "i386"
+KERNEL_IMAGETYPE = "bzImage"
+
+# Don't want kernel in rootfs
+FILES_kernel = ""
+ALLOW_EMPTY_kernel = "1"
+PACKAGES += "kernel-image"
+FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/epia_defconfig ${S}/.config
+}
diff --git a/packages/linux/linux-ezx-2.6.20.7/.mtn2git_empty b/packages/linux/linux-ezx-2.6.20.7/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.20.7/defconfig-a780 b/packages/linux/linux-ezx-2.6.20.7/defconfig-a780
new file mode 100644
index 0000000000..a9300a61f5
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/defconfig-a780
@@ -0,0 +1,1249 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20.7
+# Sun Apr 22 15:03:36 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+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=y
+CONFIG_IKCONFIG_PROC=y
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+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_ALL is not set
+# 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_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+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=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA_EZX=y
+# CONFIG_PXA_EZX_E680 is not set
+CONFIG_PXA_EZX_A780=y
+# CONFIG_PXA_EZX_E2 is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=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_DCACHE_DISABLE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000 mem=16M@0xAC000000"
+# 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=m
+CONFIG_BINFMT_MISC=m
+
+#
+# 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 is not set
+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=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=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_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
+
+#
+# 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_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=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP 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 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+CONFIG_CONNECTOR=m
+
+#
+# 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 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# 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 is not set
+# 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
+CONFIG_MTD_XIP=y
+
+#
+# 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_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD 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_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_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS 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=y
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+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_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 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_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+# 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_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+
+#
+# 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_DTLK is not set
+# CONFIG_R3964 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 is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# 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=y
+CONFIG_SPI_DEBUG=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=y
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX 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_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# 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=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+# CONFIG_SND_SEQUENCER is not set
+# CONFIG_SND_MIXER_OSS is not set
+# CONFIG_SND_PCM_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# 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
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# 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_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=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_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# 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 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
+
+#
+# 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_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_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
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX 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_AT91 is not set
+CONFIG_USB_GADGET_DUMMY_HCD=y
+CONFIG_USB_DUMMY_HCD=y
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_TIFM_SD 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 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=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=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=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 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 is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# 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
+# 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=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 is not set
+# 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_LOG_BUF_SHIFT=16
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_RT_MUTEXES=y
+CONFIG_DEBUG_PI_LIST=y
+# CONFIG_RT_MUTEX_TESTER is not set
+CONFIG_DEBUG_SPINLOCK=y
+CONFIG_DEBUG_MUTEXES=y
+CONFIG_DEBUG_RWSEMS=y
+CONFIG_DEBUG_SPINLOCK_SLEEP=y
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-core.patch b/packages/linux/linux-ezx-2.6.20.7/ezx-core.patch
new file mode 100644
index 0000000000..3b9877ce83
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/ezx-core.patch
@@ -0,0 +1,1120 @@
+Index: linux-2.6.20.7/arch/arm/boot/compressed/head-xscale.S
+===================================================================
+--- linux-2.6.20.7.orig/arch/arm/boot/compressed/head-xscale.S 2007-04-21 22:31:54.000000000 -0300
++++ linux-2.6.20.7/arch/arm/boot/compressed/head-xscale.S 2007-04-21 22:32:53.000000000 -0300
+@@ -53,3 +53,6 @@
+ str r1, [r0, #0x18]
+ #endif
+
++#ifdef CONFIG_ARCH_EZX
++ mov r7, #MACH_TYPE_EZX
++#endif
+Index: linux-2.6.20.7/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.20.7.orig/arch/arm/mach-pxa/Kconfig 2007-04-21 22:31:54.000000000 -0300
++++ linux-2.6.20.7/arch/arm/mach-pxa/Kconfig 2007-04-22 01:33:15.000000000 -0300
+@@ -37,6 +37,10 @@
+ bool "Keith und Koep Trizeps4 DIMM-Module"
+ select PXA27x
+
++config PXA_EZX
++ bool "Motorola EZX Platform"
++ select PXA_SSP
++
+ endchoice
+
+ if PXA_SHARPSL
+@@ -71,6 +75,27 @@
+
+ endif
+
++if PXA_EZX
++
++choice
++ prompt "Select target EZX device"
++
++config PXA_EZX_E680
++ bool "Motorola E680 GSM Phone"
++ select PXA27x
++
++config PXA_EZX_A780
++ bool "Motorola A780 GSM Phone"
++ select PXA27x
++
++config PXA_EZX_E2
++ bool "Motorola E2 GSM Phone"
++ select PXA27x
++
++endchoice
++
++endif
++
+ endmenu
+
+ config MACH_POODLE
+@@ -144,4 +169,5 @@
+ tristate
+ help
+ Enable support for PXA2xx SSP ports
++
+ endif
+Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.20.7.orig/arch/arm/mach-pxa/Makefile 2007-04-21 22:31:54.000000000 -0300
++++ linux-2.6.20.7/arch/arm/mach-pxa/Makefile 2007-04-22 01:33:17.000000000 -0300
+@@ -18,6 +18,7 @@
+ obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
+ obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
+ obj-$(CONFIG_MACH_TOSA) += tosa.o
++obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o
+
+ # Support for blinky lights
+ led-y := leds.o
+Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/arch/arm/mach-pxa/ezx.c 2007-04-22 01:33:17.000000000 -0300
+@@ -0,0 +1,379 @@
++/*
++ * linux/arch/arm/mach-ezx/a780.c
++ *
++ * Support for the Motorola Ezx A780 Development Platform.
++ *
++ * Author: Zhuang Xiaofan
++ * Created: Nov 25, 2003
++ * Copyright: Motorola 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/init.h>
++#include <linux/major.h>
++#include <linux/fs.h>
++#include <linux/interrupt.h>
++#include <linux/sched.h>
++#include <linux/bitops.h>
++#include <linux/apm_bios.h>
++#include <linux/platform_device.h>
++#include <linux/input.h>
++
++#include <asm/types.h>
++#include <asm/setup.h>
++#include <asm/memory.h>
++#include <asm/mach-types.h>
++#include <asm/hardware.h>
++#include <asm/irq.h>
++
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++#include <asm/mach/irq.h>
++
++#include <asm/arch/ohci.h>
++#include <asm/arch/pxa-regs.h>
++
++#include "ezx.h"
++#include "generic.h"
++#include <linux/tty.h>
++#include <linux/apm_bios.h>
++
++
++extern void usb_send_readurb(void);
++extern int ezx_ssp_set_machinfo(struct ezxssp_machinfo *);
++//FIXME extern void pm_do_poweroff(void);
++
++/* BP Handshake */
++#define FIRST_STEP 2
++#define LAST_STEP 3
++#define BP_RDY_TIMEOUT 0x000c0000
++
++/* check power down condition */
++inline void check_power_off(void)
++{
++ if (!(GPIO_is_high(GPIO_BB_WDI2))) {
++#ifdef CONFIG_PM
++//FIXME pm_do_poweroff();
++#endif
++ }
++}
++
++/* SSP */
++struct platform_device ezxssp_device = {
++ .name = "ezx-ssp",
++ .id = -1,
++};
++
++struct ezxssp_machinfo ezx_ssp_machinfo = {
++ .port = 1,
++ .cs_pcap = GPIO_SPI_CE,
++ .clk_pcap = 1,
++};
++
++
++/* OHCI Controller */
++
++static int ezx_ohci_init(struct device *dev)
++{
++ /* for A780 support (connected with Neptune) */
++ pxa_gpio_mode(GPIO30_USB_P3_2); /* GPIO30 - USB_P3_2/ICL_TXENB */
++ pxa_gpio_mode(GPIO31_USB_P3_6); /* GPIO31 - USB_P3_6/ICL_VPOUT */
++ pxa_gpio_mode(GPIO90_USB_P3_5); /* GPIO90 - USB_P3_5/ICL_VPIN */
++ pxa_gpio_mode(GPIO91_USB_P3_1); /* GPIO91 - USB_P3_1/ICL_XRXD */
++ pxa_gpio_mode(GPIO56_USB_P3_4); /* GPIO56 - USB_P3_4/ICL_VMOUT */
++ pxa_gpio_mode(GPIO113_USB_P3_3);/* GPIO113 - USB_P3_3/ICL_VMIN */
++ UP3OCR = 0x00000002;
++
++ UHCHR = UHCHR & ~(UHCHR_SSEP2 | UHCHR_SSEP3 | UHCHR_SSE);
++
++ return 0;
++}
++
++static struct pxaohci_platform_data ezx_ohci_platform_data = {
++ .port_mode = PMM_NPS_MODE,
++ .init = ezx_ohci_init,
++};
++
++static int step = FIRST_STEP;
++void handshake(void)
++{
++ /* step 1: check MCU_INT_SW or BP_RDY is low (now it is checked in apboot) */
++ if (step == 1) {
++ int timeout = BP_RDY_TIMEOUT;
++
++ /* config MCU_INT_SW, BP_RDY as input */
++ GPDR(GPIO_MCU_INT_SW) &= ~GPIO_bit(GPIO_MCU_INT_SW);
++ GPDR(GPIO_BP_RDY) &= ~GPIO_bit(GPIO_BP_RDY);
++
++ while ( timeout -- ) {
++ if ( (!(GPIO_is_high(GPIO_MCU_INT_SW)))
++ || (!(GPIO_is_high(GPIO_BP_RDY))) ) {
++ step ++;
++ break;
++ }
++
++ check_power_off();
++ }
++ }
++
++ /* step 2: wait BP_RDY is low */
++ if (step == 2) {
++ if (!(GPIO_is_high(GPIO_BP_RDY))) {
++
++ /* config MCU_INT_SW as output */
++ pxa_gpio_mode(GPIO_MCU_INT_SW | GPIO_OUT);
++ clr_GPIO(GPIO_MCU_INT_SW);
++
++ step ++;
++ }
++ }
++
++ /* step 3: wait BP_RDY is high */
++ if (step == 3) {
++ if (GPIO_is_high(GPIO_BP_RDY)) {
++ step ++;
++ //FIXME delay_bklight();
++ set_GPIO(GPIO_MCU_INT_SW);
++ }
++ }
++}
++
++#ifdef CONFIG_APM
++static unsigned long idle_limit = 0;
++int pm_handle_irq(int irq)
++{
++
++ //FIXME: extern unsigned long idle_limit;
++ //FIXME: extern int can_idle, can_sleep;
++ static unsigned long tmp_jiffy; /* for temporary store of jiffies */
++
++ /*
++ * if idle_limit is zero, never enter idle.
++ * if not OS timer, reset idle timer count
++ */
++ if (idle_limit == 0) {
++ tmp_jiffy = jiffies;
++ return irq;
++ }
++#if 0
++ if (irq != IRQ_OST0) {
++ tmp_jiffy = jiffies;
++ can_idle = 0;
++ can_sleep = 0;
++ } else if (jiffies > tmp_jiffy + idle_limit) {
++
++ /*
++ * I think this is enough to prevent from reentering here
++ * due to jiffies will be stoped
++ */
++ tmp_jiffy = jiffies;
++
++ /* if pm idle timer expired, queue event */
++ apm_queue_event(KRNL_PROC_INACT);
++ can_idle = 1;
++ }
++#endif
++
++ return irq;
++}
++
++irqreturn_t bp_wdi_intr(int irq, void *dev_id)
++{
++//FIXME apm_queue_event(KRNL_BP_WDI);
++ return IRQ_HANDLED;
++}
++
++static struct irqaction bp_wdi_irq = {
++ .name = "BP wdi",
++ .handler = &bp_wdi_intr,
++};
++#endif
++
++int handshake_pass(void)
++{
++ return (step > LAST_STEP);
++}
++
++static irqreturn_t bp_rdy_intr(int irq, void *dev_id)
++{
++ static int usbipc_ready = 0;
++
++ if (!usbipc_ready) {
++ handshake();
++ if (handshake_pass()) {
++ disable_irq(IRQ_GPIO(GPIO_BB_WDI2));
++
++ /* set bp_rdy handle for usb ipc */
++ set_irq_type(GPIO_BP_RDY, IRQT_FALLING);
++ usbipc_ready = 1;
++ }
++ } else
++ // FIXME usb_send_readurb();
++ {}
++
++ return IRQ_HANDLED;
++}
++
++static struct irqaction bp_rdy_irq = {
++ .name = "BP rdy",
++ .handler = bp_rdy_intr,
++};
++
++static irqreturn_t bp_wdi2_intr(int irq, void *dev_id)
++{
++#ifdef CONFIG_PM
++//FIXME pm_do_poweroff();
++#endif
++ return IRQ_HANDLED;
++}
++
++static struct irqaction bp_wdi2_irq = {
++ .name = "BP wdi2",
++ .handler = bp_wdi2_intr,
++};
++
++
++static struct resource ezx_bp_resources[] = {
++ [0] = {
++ .start = GPIO_BP_RDY,
++ .end = GPIO_BP_RDY,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = GPIO_BB_WDI2,
++ .end = GPIO_BB_WDI2,
++ .flags = IORESOURCE_IRQ,
++ },
++#ifdef CONFIG_APM
++ [2] = {
++ .start = GPIO_BB_WDI,
++ .end = GPIO_BB_WDI,
++ .flags = IORESOURCE_IRQ,
++ },
++#endif
++};
++
++static struct platform_device ezx_bp_device = {
++ .name = "ezx-bp",
++ .dev = {
++ //.parent =
++ //.platform_data =
++ },
++ .id = -1,
++ .num_resources = ARRAY_SIZE(ezx_bp_resources),
++ .resource = ezx_bp_resources,
++};
++
++static void __init ezx_init_gpio_irq(void)
++{
++#ifdef CONFIG_APM
++ set_irq_type(GPIO_BB_WDI, IRQT_FALLING);
++ setup_irq(IRQ_GPIO(GPIO_BB_WDI), &bp_wdi_irq);
++#endif
++ set_irq_type(GPIO_BP_RDY, IRQT_BOTHEDGE);
++ setup_irq(IRQ_GPIO(GPIO_BP_RDY), &bp_rdy_irq);
++
++ set_irq_type(GPIO_BB_WDI2, IRQT_FALLING);
++ setup_irq(IRQ_GPIO(GPIO_BB_WDI2), &bp_wdi2_irq);
++}
++
++static void __init a780_init_irq(void)
++{
++ pxa_init_irq();
++
++ /* init ezx specfic gpio irq */
++ ezx_init_gpio_irq();
++
++ check_power_off();
++ handshake();
++ if (handshake_pass()) {
++ disable_irq(IRQ_GPIO(GPIO_BP_RDY));
++ disable_irq(IRQ_GPIO(GPIO_BB_WDI2));
++ }
++}
++
++static struct platform_device *devices[] __initdata = {
++ &ezxssp_device,
++ &ezx_bp_device,
++};
++
++static void __init a780_init(void)
++{
++//FIXME CKEN = CKEN9_OSTIMER | CKEN22_MEMC | CKEN5_STUART;
++
++ ezx_ssp_set_machinfo(&ezx_ssp_machinfo);
++
++ /* set BB_RESET PIN out put high */
++ pxa_gpio_mode(GPIO_BB_RESET|GPIO_OUT);
++ set_GPIO(GPIO_BB_RESET);
++
++ pxa_gpio_mode(GPIO_ICL_FFRXD_MD);
++ pxa_gpio_mode(GPIO_ICL_FFTXD_MD);
++ pxa_gpio_mode(GPIO_ICL_FFCTS_MD);
++ pxa_gpio_mode(GPIO_ICL_FFRTS_MD);
++
++ pxa_gpio_mode(GPIO42_BTRXD_MD);
++ pxa_gpio_mode(GPIO43_BTTXD_MD);
++ pxa_gpio_mode(GPIO44_BTCTS_MD);
++ pxa_gpio_mode(GPIO45_BTRTS_MD);
++
++ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
++ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
++ clr_GPIO(GPIO_EMU_MUX1);
++ pxa_gpio_mode(GPIO_EMU_MUX2|GPIO_OUT);
++ clr_GPIO(GPIO_EMU_MUX2);
++
++#if defined(CONFIG_PXA_EZX_E680)
++ pxa_gpio_mode(GPIO46_STRXD_MD);
++ pxa_gpio_mode(GPIO47_STTXD_MD);
++
++ /* setup sleep mode values */
++ PWER = 0xc000f803; // disable usb 0xdc00f803;
++ PFER = 0x0000f803;
++ PRER = 0x00001802;
++ // keypad wakeup (PKWR,PGSR3) should be in keypad.c
++ PGSR0 = 0x00000010;
++ PGSR1 = 0x02800000;
++ PGSR2 = 0x00040000;
++ PGSR3 = 0x00000000;
++ PCFR = PCFR_DC_EN | PCFR_FS | PCFR_FP | PCFR_OPDE;
++ PSLR = 0x05800f00;
++
++#elif defined(CONFIG_PXA_EZX_A780)
++
++ /* Standard UART */
++ pxa_gpio_mode(GPIO46_STRXD_MD);
++ pxa_gpio_mode(GPIO47_STTXD_MD);
++
++ /* setup sleep mode values */
++ PWER = 0xc0007803; // disable usb, GPIO15 NC
++ PFER = 0x00007803;
++ PRER = 0x00001802;
++ // keypad wakeup (PKWR,PGSR3) should be in keypad.c
++ PGSR0 = 0x00000010;
++ PGSR1 = 0x02800000;
++ PGSR2 = 0x00040000;
++ PGSR3 = 0x00000008;
++ PCFR = PCFR_DC_EN | PCFR_FS | PCFR_FP | PCFR_OPDE;
++ PSLR = 0x05800f00;
++
++#endif
++ pxa_set_ohci_info(&ezx_ohci_platform_data);
++
++ platform_add_devices(devices, ARRAY_SIZE(devices));
++
++}
++
++MACHINE_START(EZX, "Motorola Ezx Platform")
++ /* Maintainer: Harald Welte <laforge@gnumonks.org> */
++ .phys_io = 0x40000000,
++ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
++ .boot_params = 0xa0000100,
++ .map_io = pxa_map_io,
++ .init_irq = a780_init_irq,
++ .timer = &pxa_timer,
++ .init_machine = a780_init,
++MACHINE_END
+Index: linux-2.6.20.7/include/asm-arm/arch-pxa/ezx.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/include/asm-arm/arch-pxa/ezx.h 2007-04-21 22:32:53.000000000 -0300
+@@ -0,0 +1,225 @@
++/*
++ * linux/include/asm-arm/arch-pxa/ezx.h
++ *
++ * Specific macro defines for Motorola Ezx Development Platform
++ *
++ * Author: Zhuang Xiaofan
++ * Created: Nov 25, 2003
++ * Copyright: Motorola 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.
++ */
++
++/* support E680 p3 and ealier PCB */
++//#define E680_P3_AND_EARLY
++
++#define GPIO_is_high(x) (GPLR(x) & GPIO_bit(x))
++#define set_GPIO(x) (GPSR(x) = GPIO_bit(x))
++#define clr_GPIO(x) (GPCR(x) = GPIO_bit(x))
++
++/*
++ * Flags in memory for sleep use
++ */
++#define FLAG_ADDR PHYS_OFFSET
++#define RESUME_ADDR (PHYS_OFFSET + 4)
++#define BPSIG_ADDR (PHYS_OFFSET + 8)
++
++#define USER_OFF_FLAG 0x5a5a5a5a
++#define SLEEP_FLAG 0x6b6b6b6b
++#define OFF_FLAG 0x7c7c7c7c
++#define REFLASH_FLAG 0x0C1D2E3F
++#define PASS_THRU_FLAG 0x12345678
++
++#define WDI_FLAG 0xbb00dead
++#define NO_FLAG 0xaa00dead
++
++/*
++ * GPIO control pin, have to change when hardware lock down
++ */
++
++#ifdef E680_P3_AND_EARLY
++
++/* shakehand with BP's PIN */
++#define GPIO_BP_RDY 0 /* BP_RDY */
++#define GPIO_BB_WDI 13 /* BB_WDI */
++#define GPIO_BB_WDI2 3 /* BB_WDI2 */
++#define GPIO_BB_RESET 57 /* BB_RESET */
++#define GPIO_MCU_INT_SW 115 /* MCU_INT_SW */
++#define GPIO_TC_MM_EN 89 /* TC_MM_EN */
++
++/* control PCAP direct PIN */
++#define GPIO_WDI_AP 4 /* WDI_AP */
++#define GPIO_SYS_RESTART 55 /* restart PCAP power */
++#define GPIO_AP_STANDBY 28 /* make pcap enter standby mode */
++
++/* communicate with PCAP's PIN */
++#define GPIO_PCAP_SEC_INT 1 /* PCAP interrupt PIN to AP */
++#define GPIO_SPI_CLK 23 /* PCAP SPI port clock */
++#define GPIO_SPI_CE 24 /* PCAP SPI port SSPFRM */
++#define GPIO_SPI_MOSI 25 /* PCAP SPI port SSPTXD */
++#define GPIO_SPI_MISO 26 /* PCAP SPI port SSPRXD */
++
++/* blue tooth control PIN */
++#define GPIO_BT_WAKEUP 2 /* AP wake up bluetooth module */
++#define GPIO_BT_HOSTWAKE 14 /* bluetooth module wake up Ap module */
++#define GPIO_BT_RESET 56 /* AP reset bluetooth module */
++
++/* control LCD high - OFF low -- ON */
++#define GPIO_LCD_OFF 116 /* control LCD */
++
++/* FFUART PIN */
++#define GPIO_ICL_FFRXD_MD (34 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
++#define GPIO_ICL_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
++
++#elif defined(A780_P1_AND_EARLY)
++
++/* shakehand with BP's PIN */
++#define GPIO_BP_RDY 0 /* BP_RDY */
++#define GPIO_BB_WDI 13 /* BB_WDI */
++#define GPIO_BB_WDI2 3 /* BB_WDI2 */
++#define GPIO_BB_RESET 82 /* BB_RESET */
++#define GPIO_MCU_INT_SW 57 /* MCU_INT_SW */
++#define GPIO_TC_MM_EN 89 /* TC_MM_EN */
++
++/* control PCAP direct PIN */
++#define GPIO_WDI_AP 4 /* WDI_AP */
++#define GPIO_SYS_RESTART 55 /* restart PCAP power */
++#define GPIO_AP_STANDBY 28 /* make pcap enter standby mode */
++
++/* communicate with PCAP's PIN */
++#define GPIO_PCAP_SEC_INT 1 /* PCAP interrupt PIN to AP */
++#define GPIO_SPI_CLK 29 /* PCAP SPI port clock */
++#define GPIO_SPI_CE 24 /* PCAP SPI port SSPFRM */
++#define GPIO_SPI_MOSI 25 /* PCAP SPI port SSPTXD */
++#define GPIO_SPI_MISO 26 /* PCAP SPI port SSPRXD */
++
++/* blue tooth control PIN */
++#define GPIO_BT_WAKEUP 2 /* AP wake up bluetooth module */
++#define GPIO_BT_HOSTWAKE 14 /* bluetooth module wake up Ap module */
++#define GPIO_BT_RESET 56 /* AP reset bluetooth module */
++
++/* control LCD high - OFF low -- ON */
++#define GPIO_LCD_OFF 116 /* control LCD */
++
++/* FFUART PIN */
++#define GPIO_ICL_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
++#define GPIO_ICL_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
++
++#else
++
++/* shakehand with BP's PIN */
++#define GPIO_BP_RDY 0 /* BP_RDY */
++#define GPIO_BB_WDI 13 /* BB_WDI */
++#define GPIO_BB_WDI2 3 /* BB_WDI2 */
++#define GPIO_BB_RESET 82 /* BB_RESET */
++#define GPIO_MCU_INT_SW 57 /* MCU_INT_SW */
++#define GPIO_TC_MM_EN 99 /* TC_MM_EN */
++
++/* control PCAP direct PIN */
++#define GPIO_WDI_AP 4 /* WDI_AP */
++#define GPIO_SYS_RESTART 55 /* restart PCAP power */
++//#define GPIO_AP_STANDBY 28 /* make pcap enter standby mode */
++
++/* communicate with PCAP's PIN */
++#define GPIO_PCAP_SEC_INT 1 /* PCAP interrupt PIN to AP */
++#define GPIO_SPI_CLK 29 /* PCAP SPI port clock */
++#define GPIO_SPI_CE 24 /* PCAP SPI port SSPFRM */
++#define GPIO_SPI_MOSI 25 /* PCAP SPI port SSPTXD */
++#define GPIO_SPI_MISO 26 /* PCAP SPI port SSPRXD */
++
++/* blue tooth control PIN */
++#define GPIO_BT_WAKEUP 28 /* AP wake up bluetooth module */
++#define GPIO_BT_HOSTWAKE 14 /* AP wake up bluetooth module */
++#define GPIO_BT_RESET 48 /* AP reset bluetooth module */
++
++/* control LCD high - OFF low -- ON */
++#define GPIO_LCD_OFF 116 /* control LCD */
++
++/* FFUART PIN */
++#define GPIO_ICL_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
++#define GPIO_ICL_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
++
++#endif
++/*
++ * ezx platform, wake up source edge detect bit
++ */
++#define PEDR_INT_SEC 1
++
++#define GPIO_FLIP_PIN 12
++/*E680 screen lock button*/
++
++#define GPIO_LOCK_SCREEN_PIN GPIO_FLIP_PIN
++
++/* MMC interface */
++#define GPIO_MMC_DETECT 11
++#define GPIO_MMC_CLK 32
++#define GPIO_MMC_DATA0 92
++#define GPIO_MMC_WP 107
++#define GPIO_MMC_DATA1 109
++#define GPIO_MMC_DATA2 110
++#define GPIO_MMC_DATA3 111
++#define GPIO_MMC_CMD 112
++
++/* interface function */
++#define GPIO_MMC_CLK_MD (GPIO_MMC_CLK | GPIO_ALT_FN_2_OUT)
++#define GPIO_MMC_DATA0_MD (GPIO_MMC_DATA0 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++#define GPIO_MMC_DATA1_MD (GPIO_MMC_DATA1 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++#define GPIO_MMC_DATA2_MD (GPIO_MMC_DATA2 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++#define GPIO_MMC_DATA3_MD (GPIO_MMC_DATA3 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++
++#define GPIO_MMC_CMD_MD (GPIO_MMC_CMD | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++
++/* EMU GPIO 119 ---MUX2 120 --- MUX1 */
++#define GPIO_EMU_MUX1 120
++#define GPIO_EMU_MUX2 119
++#define GPIO_SNP_INT_CTL 86
++#define GPIO_SNP_INT_IN 87
++
++
++/* audio related pins */
++#define AP_13MHZ_OUTPUT_PIN 9
++
++#ifdef CONFIG_ARCH_EZX_E680
++#define GPIO_VA_SEL_BUL 79
++#define GPIO_FLT_SEL_BUL 80 /* out filter select pin */
++#define GPIO_MIDI_RESET 78 /* GPIO used by MIDI chipset */
++#define GPIO_MIDI_CS 33
++#define GPIO_MIDI_IRQ 15
++#define GPIO_MIDI_NPWE 49
++#define GPIO_MIDI_RDY 18
++#endif
++
++#ifdef CONFIG_ARCH_EZX_A780
++#define GPIO_HW_ATTENUATE_A780 96 /* hw noise attenuation be used or bypassed, for receiver or louderspeaker mode */
++#endif
++
++
++/* bp status pin */
++#define GPIO_BP_STATE 41
++
++/* define usb related pin */
++#define GPIO34_TXENB 34
++#define GPIO35_XRXD 35
++#define GPIO36_VMOUT 36
++#define GPIO39_VPOUT 39
++#define GPIO40_VPIN 40
++#define GPIO53_VMIN 53
++
++/* USB client 6 pin defination */
++#define GPIO34_TXENB_MD (GPIO34_TXENB | GPIO_ALT_FN_1_OUT)
++#define GPIO35_XRXD_MD (GPIO35_XRXD | GPIO_ALT_FN_2_IN )
++#define GPIO36_VMOUT_MD (GPIO36_VMOUT | GPIO_ALT_FN_1_OUT)
++#define GPIO39_VPOUT_MD (GPIO39_VPOUT | GPIO_ALT_FN_1_OUT)
++#define GPIO40_VPIN_MD (GPIO40_VPIN | GPIO_ALT_FN_3_IN )
++#define GPIO53_VMIN_MD (GPIO53_VMIN | GPIO_ALT_FN_2_IN )
++
++#define GPIO53_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
++
+Index: linux-2.6.20.7/include/asm-arm/arch-pxa/pxa-regs.h
+===================================================================
+--- linux-2.6.20.7.orig/include/asm/arch/pxa-regs.h 2007-04-21 22:31:54.000000000 -0300
++++ linux-2.6.20.7/include/asm-arm/arch-pxa/pxa-regs.h 2007-04-21 22:32:53.000000000 -0300
+@@ -854,6 +854,8 @@
+ #define UP2OCR_HXOE (1 << 17) /* Host Port 2 Transceiver Output Enable */
+ #define UP2OCR_SEOS (1 << 24) /* Single-Ended Output Select */
+
++#define UP3OCR __REG(0x40600024) /* USB Port 3 Output Control register */
++
+ #define UDCCSN(x) __REG2(0x40600100, (x) << 2)
+ #define UDCCSR0 __REG(0x40600100) /* UDC Control/Status register - Endpoint 0 */
+ #define UDCCSR0_SA (1 << 7) /* Setup Active */
+@@ -1257,6 +1259,7 @@
+ #define GPIO33_nCS_5 33 /* chip select 5 */
+ #define GPIO34_FFRXD 34 /* FFUART receive */
+ #define GPIO34_MMCCS0 34 /* MMC Chip Select 0 */
++#define GPIO34_USB_P2_2 34 /* USB Port2 Pin 2 */
+ #define GPIO35_FFCTS 35 /* FFUART Clear to send */
+ #define GPIO36_FFDCD 36 /* FFUART Data carrier detect */
+ #define GPIO37_FFDSR 37 /* FFUART data set ready */
+@@ -1370,6 +1373,7 @@
+ #define GPIO18_RDY_MD (18 | GPIO_ALT_FN_1_IN)
+ #define GPIO19_DREQ1_MD (19 | GPIO_ALT_FN_1_IN)
+ #define GPIO20_DREQ0_MD (20 | GPIO_ALT_FN_1_IN)
++#define GPIO22_SCLK2_MD (22 | GPIO_ALT_FN_3_IN)
+ #define GPIO23_SCLK_MD (23 | GPIO_ALT_FN_2_OUT)
+ #define GPIO24_SFRM_MD (24 | GPIO_ALT_FN_2_OUT)
+ #define GPIO25_STXD_MD (25 | GPIO_ALT_FN_2_OUT)
+@@ -1380,23 +1384,33 @@
+ #define GPIO28_BITCLK_OUT_I2S_MD (28 | GPIO_ALT_FN_1_OUT)
+ #define GPIO29_SDATA_IN_AC97_MD (29 | GPIO_ALT_FN_1_IN)
+ #define GPIO29_SDATA_IN_I2S_MD (29 | GPIO_ALT_FN_2_IN)
++#define GPIO29_SCLK_MD (29 | GPIO_ALT_FN_3_IN)
+ #define GPIO30_SDATA_OUT_AC97_MD (30 | GPIO_ALT_FN_2_OUT)
+ #define GPIO30_SDATA_OUT_I2S_MD (30 | GPIO_ALT_FN_1_OUT)
++#define GPIO30_USB_P3_2 (30 | GPIO_ALT_FN_3_OUT)
+ #define GPIO31_SYNC_I2S_MD (31 | GPIO_ALT_FN_1_OUT)
+ #define GPIO31_SYNC_AC97_MD (31 | GPIO_ALT_FN_2_OUT)
++#define GPIO31_USB_P3_6 (31 | GPIO_ALT_FN_3_OUT)
+ #define GPIO32_SDATA_IN1_AC97_MD (32 | GPIO_ALT_FN_1_IN)
+ #define GPIO32_SYSCLK_I2S_MD (32 | GPIO_ALT_FN_1_OUT)
+ #define GPIO32_MMCCLK_MD ( 32 | GPIO_ALT_FN_2_OUT)
+ #define GPIO33_nCS_5_MD (33 | GPIO_ALT_FN_2_OUT)
+ #define GPIO34_FFRXD_MD (34 | GPIO_ALT_FN_1_IN)
+ #define GPIO34_MMCCS0_MD (34 | GPIO_ALT_FN_2_OUT)
++#define GPIO34_USB_P2_2_MD (34 | GPIO_ALT_FN_1_OUT)
+ #define GPIO35_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
++#define GPIO35_USB_P2_1_MD (35 | GPIO_ALT_FN_2_IN)
+ #define GPIO36_FFDCD_MD (36 | GPIO_ALT_FN_1_IN)
++#define GPIO36_USB_P2_4_MD (36 | GPIO_ALT_FN_1_OUT)
+ #define GPIO37_FFDSR_MD (37 | GPIO_ALT_FN_1_IN)
++#define GPIO37_SFRM2_MD (37 | GPIO_ALT_FN_2_IN)
+ #define GPIO38_FFRI_MD (38 | GPIO_ALT_FN_1_IN)
++#define GPIO38_STXD2_MD (38 | GPIO_ALT_FN_2_OUT)
+ #define GPIO39_MMCCS1_MD (39 | GPIO_ALT_FN_1_OUT)
+ #define GPIO39_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
++#define GPIO39_USB_P2_6_MD (39 | GPIO_ALT_FN_1_OUT)
+ #define GPIO40_FFDTR_MD (40 | GPIO_ALT_FN_2_OUT)
++#define GPIO40_USB_P2_5_MD (40 | GPIO_ALT_FN_3_IN)
+ #define GPIO41_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
+ #define GPIO42_BTRXD_MD (42 | GPIO_ALT_FN_1_IN)
+ #define GPIO42_HWRXD_MD (42 | GPIO_ALT_FN_3_IN)
+@@ -1421,13 +1435,17 @@
+ #define GPIO51_HWRTS_MD (51 | GPIO_ALT_FN_1_OUT)
+ #define GPIO51_nPIOW_MD (51 | GPIO_ALT_FN_2_OUT)
+ #define GPIO52_nPCE_1_MD (52 | GPIO_ALT_FN_2_OUT)
++#define GPIO52_SCLK3_MD (52 | GPIO_ALT_FN_2_OUT)
+ #define GPIO53_nPCE_2_MD (53 | GPIO_ALT_FN_2_OUT)
+ #define GPIO53_MMCCLK_MD (53 | GPIO_ALT_FN_1_OUT)
++#define GPIO53_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
++#define GPIO53_USB_P2_3_MD (53 | GPIO_ALT_FN_2_IN)
+ #define GPIO54_MMCCLK_MD (54 | GPIO_ALT_FN_1_OUT)
+ #define GPIO54_nPCE_2_MD (54 | GPIO_ALT_FN_2_OUT)
+ #define GPIO54_pSKTSEL_MD (54 | GPIO_ALT_FN_2_OUT)
+ #define GPIO55_nPREG_MD (55 | GPIO_ALT_FN_2_OUT)
+ #define GPIO56_nPWAIT_MD (56 | GPIO_ALT_FN_1_IN)
++#define GPIO56_USB_P3_4 (56 | GPIO_ALT_FN_1_OUT)
+ #define GPIO57_nIOIS16_MD (57 | GPIO_ALT_FN_1_IN)
+ #define GPIO58_LDD_0_MD (58 | GPIO_ALT_FN_2_OUT)
+ #define GPIO59_LDD_1_MD (59 | GPIO_ALT_FN_2_OUT)
+@@ -1463,13 +1481,19 @@
+ #define GPIO80_nCS_4_MD (80 | GPIO_ALT_FN_2_OUT)
+ #define GPIO81_NSSP_CLK_OUT (81 | GPIO_ALT_FN_1_OUT)
+ #define GPIO81_NSSP_CLK_IN (81 | GPIO_ALT_FN_1_IN)
++#define GPIO81_STXD3_MD (81 | GPIO_ALT_FN_1_OUT)
+ #define GPIO82_NSSP_FRM_OUT (82 | GPIO_ALT_FN_1_OUT)
+ #define GPIO82_NSSP_FRM_IN (82 | GPIO_ALT_FN_1_IN)
+ #define GPIO83_NSSP_TX (83 | GPIO_ALT_FN_1_OUT)
+ #define GPIO83_NSSP_RX (83 | GPIO_ALT_FN_2_IN)
++#define GPIO83_SFRM3_MD (83 | GPIO_ALT_FN_1_IN)
+ #define GPIO84_NSSP_TX (84 | GPIO_ALT_FN_1_OUT)
+ #define GPIO84_NSSP_RX (84 | GPIO_ALT_FN_2_IN)
+ #define GPIO85_nPCE_1_MD (85 | GPIO_ALT_FN_1_OUT)
++#define GPIO88_SRXD2_MD (88 | GPIO_ALT_FN_2_IN)
++#define GPIO89_SRXD3_MD (89 | GPIO_ALT_FN_1_IN)
++#define GPIO90_USB_P3_5 (90 | GPIO_ALT_FN_2_IN)
++#define GPIO91_USB_P3_1 (91 | GPIO_ALT_FN_2_IN)
+ #define GPIO92_MMCDAT0_MD (92 | GPIO_ALT_FN_1_OUT)
+ #define GPIO102_nPCE_1_MD (102 | GPIO_ALT_FN_1_OUT)
+ #define GPIO104_pSKTSEL_MD (104 | GPIO_ALT_FN_1_OUT)
+@@ -1481,6 +1505,7 @@
+ #define GPIO112_MMCCMD_MD (112 | GPIO_ALT_FN_1_OUT)
+ #define GPIO113_I2S_SYSCLK_MD (113 | GPIO_ALT_FN_1_OUT)
+ #define GPIO113_AC97_RESET_N_MD (113 | GPIO_ALT_FN_2_OUT)
++#define GPIO113_USB_P3_3 (113 | GPIO_ALT_FN_3_IN)
+ #define GPIO117_I2CSCL_MD (117 | GPIO_ALT_FN_1_OUT)
+ #define GPIO118_I2CSDA_MD (118 | GPIO_ALT_FN_1_IN)
+
+@@ -1496,6 +1521,7 @@
+ #define PFER __REG(0x40F00014) /* Power Manager GPIO Falling-Edge Detect Enable Register */
+ #define PEDR __REG(0x40F00018) /* Power Manager GPIO Edge Detect Status Register */
+ #define PCFR __REG(0x40F0001C) /* Power Manager General Configuration Register */
++#define PGSR(x) (__REG(0x40F00020 + ((unsigned long)(x)/32*4)))
+ #define PGSR0 __REG(0x40F00020) /* Power Manager GPIO Sleep State Register for GP[31-0] */
+ #define PGSR1 __REG(0x40F00024) /* Power Manager GPIO Sleep State Register for GP[63-32] */
+ #define PGSR2 __REG(0x40F00028) /* Power Manager GPIO Sleep State Register for GP[84-64] */
+Index: linux-2.6.20.7/arch/arm/boot/compressed/head.S
+===================================================================
+--- linux-2.6.20.7.orig/arch/arm/boot/compressed/head.S 2007-04-21 22:31:54.000000000 -0300
++++ linux-2.6.20.7/arch/arm/boot/compressed/head.S 2007-04-21 22:32:53.000000000 -0300
+@@ -117,6 +117,9 @@
+ mov r0, r0
+ .endr
+
++ mov r1, #0x300 @ mach_id 0x363 is official EZX
++ orr r1, r1, #0x63 @ bootloader JUMP doesn't set r1
++
+ b 1f
+ .word 0x016f2818 @ Magic numbers to help the loader
+ .word start @ absolute load/run zImage address
+Index: linux-2.6.20.7/include/asm-arm/arch-pxa/uncompress.h
+===================================================================
+--- linux-2.6.20.7.orig/include/asm-arm/arch-pxa/uncompress.h 2007-04-21 22:31:54.000000000 -0300
++++ linux-2.6.20.7/include/asm-arm/arch-pxa/uncompress.h 2007-04-21 22:32:53.000000000 -0300
+@@ -14,14 +14,14 @@
+ #define STUART ((volatile unsigned long *)0x40700000)
+ #define HWUART ((volatile unsigned long *)0x41600000)
+
+-#define UART FFUART
++#define UART STUART
+
+
+ static inline void putc(char c)
+ {
+- while (!(UART[5] & 0x20))
++/* while (!(UART[5] & 0x40))
+ barrier();
+- UART[0] = c;
++ UART[0] = c;*/
+ }
+
+ /*
+Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx_ssp.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/arch/arm/mach-pxa/ezx_ssp.c 2007-04-22 01:36:48.000000000 -0300
+@@ -0,0 +1,130 @@
++/*
++ * SSP control code for Motorola EZX phones
++ *
++ * Copyright (c) 2007 Daniel Ribeiro <drwyrm@gmail.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.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/sched.h>
++#include <linux/slab.h>
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++#include <asm/hardware.h>
++#include <asm/mach-types.h>
++
++#include <asm/arch/ssp.h>
++#include <asm/arch/pxa-regs.h>
++
++#include "ezx.h"
++
++static DEFINE_SPINLOCK(ezx_ssp_lock);
++static struct ssp_dev ezx_ssp_dev;
++static struct ssp_state ezx_ssp_state;
++static struct ezxssp_machinfo *ssp_machinfo;
++
++/* PCAP */
++unsigned long ezx_ssp_pcap_putget(ulong data)
++{
++ unsigned long flag;
++ u32 ret = 0;
++
++ spin_lock_irqsave(&ezx_ssp_lock, flag);
++ if (ssp_machinfo->cs_pcap >= 0)
++ GPCR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
++
++ ssp_write_word(&ezx_ssp_dev,data);
++ ssp_read_word(&ezx_ssp_dev, &ret);
++
++ if (ssp_machinfo->cs_pcap >= 0)
++ GPSR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
++ spin_unlock_irqrestore(&ezx_ssp_lock, flag);
++
++ return ret;
++}
++EXPORT_SYMBOL(ezx_ssp_pcap_putget);
++
++/* ASSP */
++
++/* NSSP */
++
++void __init ezx_ssp_set_machinfo(struct ezxssp_machinfo *machinfo)
++{
++ ssp_machinfo = machinfo;
++}
++
++static int __init ezx_ssp_probe(struct platform_device *dev)
++{
++ int ret;
++ /* PCAP init */
++ pxa_gpio_mode(29|GPIO_ALT_FN_3_OUT);
++ pxa_gpio_mode(GPIO24_SFRM_MD);
++ pxa_gpio_mode(GPIO25_STXD_MD);
++ pxa_gpio_mode(GPIO26_SRXD_MD);
++
++ /* Chip Select - Disable All */
++ if (ssp_machinfo->cs_pcap >= 0)
++ pxa_gpio_mode(ssp_machinfo->cs_pcap | GPIO_OUT | GPIO_DFLT_HIGH);
++
++ ret = ssp_init(&ezx_ssp_dev, ssp_machinfo->port, 0);
++
++ if (ret)
++ printk(KERN_ERR "Unable to register SSP handler!\n");
++ else {
++ ssp_disable(&ezx_ssp_dev);
++ ssp_config(&ezx_ssp_dev,
++ (SSCR0_Motorola | SSCR0_DataSize(16) | SSCR0_EDSS),
++ (SSCR1_TxTresh(1) | SSCR1_RxTresh(1)),
++ 0, SSCR0_SerClkDiv(ssp_machinfo->clk_pcap));
++ ssp_enable(&ezx_ssp_dev);
++ }
++
++ return ret;
++}
++
++static int ezx_ssp_remove(struct platform_device *dev)
++{
++ ssp_exit(&ezx_ssp_dev);
++ return 0;
++}
++
++static int ezx_ssp_suspend(struct platform_device *dev, pm_message_t state)
++{
++ ssp_flush(&ezx_ssp_dev);
++ ssp_save_state(&ezx_ssp_dev,&ezx_ssp_state);
++
++ return 0;
++}
++
++static int ezx_ssp_resume(struct platform_device *dev)
++{
++ if (ssp_machinfo->cs_pcap >= 0)
++ GPSR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
++ ssp_restore_state(&ezx_ssp_dev,&ezx_ssp_state);
++ ssp_enable(&ezx_ssp_dev);
++
++ return 0;
++}
++
++static struct platform_driver ezxssp_driver = {
++ .probe = ezx_ssp_probe,
++ .remove = ezx_ssp_remove,
++ .suspend = ezx_ssp_suspend,
++ .resume = ezx_ssp_resume,
++ .driver = {
++ .name = "ezx-ssp",
++ },
++};
++
++int __init ezx_ssp_init(void)
++{
++ return platform_driver_register(&ezxssp_driver);
++}
++
++arch_initcall(ezx_ssp_init);
+Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/arch/arm/mach-pxa/ezx.h 2007-04-22 01:38:55.000000000 -0300
+@@ -0,0 +1,9 @@
++#include <asm/arch/ezx.h>
++
++/* SSP */
++struct ezxssp_machinfo {
++ int port;
++ int cs_pcap;
++ int clk_pcap;
++};
++
+Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx_lcd.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/arch/arm/mach-pxa/ezx_lcd.c 2007-04-21 22:32:53.000000000 -0300
+@@ -0,0 +1,112 @@
++/*
++ * linux/arch/arm/mach-ezx/a780.c
++ *
++ * Support for the Motorola Ezx A780 Development Platform.
++ *
++ * Author: Zhuang Xiaofan
++ * Created: Nov 25, 2003
++ * Copyright: Motorola 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/fb.h>
++#include <linux/delay.h>
++#include <asm/arch/pxafb.h>
++#include <asm/arch/pxa-regs.h>
++
++/*
++ * EZX PXA Framebuffer
++ */
++
++static void pxafb_lcd_power(int on, struct fb_var_screeninfo *var)
++{
++ if (on) {
++// mdelay(1);
++ GPSR3 = 0x00100000;
++ mdelay(10);
++ GPCR3 = 0x00100000;
++ GPDR3 |= 0x00100000;
++ } else {
++ GPSR3 = 0x00100000;
++ PGSR3 |= 0x00100000;
++ mdelay(41);
++ LCCR0 &= ~LCCR0_LDM; /* disable lcd disable done interrupt */
++ LCCR0 |= LCCR0_DIS; /* normal disable lcd */
++ mdelay(18);
++ }
++}
++
++#ifdef CONFIG_PXA_E2
++static void sumatra_backlight_power(int on)
++{
++ if (on) {
++ pxa_gpio_mode(GPIO16_PWM0_MD);
++ pxa_set_cken(CKEN0_PWM0, 1);
++ PWM_CTRL0 = 0;
++ PWM_PWDUTY0 = 0x3ff;
++ PWM_PERVAL0 = 0x3ff;
++ } else {
++ PWM_CTRL0 = 0;
++ PWM_PWDUTY0 = 0x0;
++ PWM_PERVAL0 = 0x3FF;
++ pxa_set_cken(CKEN0_PWM0, 0);
++ }
++}
++
++static struct pxafb_mode_info mode_ezx = {
++ .pixclock = 192308,
++ .xres = 240,
++ .yres = 320,
++ .bpp = 8,
++ .hsync_len = 10,
++ .left_margin = 20,
++ .right_margin = 10,
++ .vsync_len = 2,
++ .upper_margin = 3,
++ .lower_margin = 2,
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++};
++
++static struct pxafb_mach_info ezx_fb_info __initdata = {
++ .modes = &mode_ezx,
++ .num_modes = 1,
++ .lccr0 = 0x022008B8,
++ .lccr3 = 0xC130FF13,
++ .pxafb_backlight_power = sumatra_backlight_power,
++ .pxafb_lcd_power = &pxafb_lcd_power,
++};
++
++#else
++static struct pxafb_mode_info mode_ezx = {
++ .pixclock = 150000,
++ .xres = 240,
++ .yres = 320,
++ .bpp = 16,
++ .hsync_len = 10,
++ .left_margin = 20,
++ .right_margin = 10,
++ .vsync_len = 2,
++ .upper_margin = 3,
++ .lower_margin = 2,
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++};
++
++static struct pxafb_mach_info ezx_fb_info __initdata = {
++ .modes = &mode_ezx,
++ .num_modes = 1,
++ .lccr0 = 0x002008F8,
++ .lccr3 = 0x0430FF09,
++ .pxafb_lcd_power= &pxafb_lcd_power,
++};
++#endif
++
++int __init __ezx_lcd_init (void)
++{
++ set_pxa_fb_info(&ezx_fb_info);
++ return 0;
++}
++
++arch_initcall(__ezx_lcd_init);
+Index: linux-2.6.20.7/arch/arm/mm/init.c
+===================================================================
+--- linux-2.6.20.7.orig/arch/arm/mm/init.c 2007-04-21 22:32:57.000000000 -0300
++++ linux-2.6.20.7/arch/arm/mm/init.c 2007-04-21 22:44:03.000000000 -0300
+@@ -241,6 +241,10 @@
+ */
+ reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT,
+ boot_pages << PAGE_SHIFT);
++#ifdef CONFIG_ARCH_EZX
++ /* reserve the first page memory for exiting sleep and user off */
++ reserve_bootmem_node(pgdat, PHYS_OFFSET, PAGE_SIZE);
++#endif
+
+ #ifdef CONFIG_BLK_DEV_INITRD
+ /*
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-emu.patch b/packages/linux/linux-ezx-2.6.20.7/ezx-emu.patch
new file mode 100644
index 0000000000..de9de60461
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/ezx-emu.patch
@@ -0,0 +1,332 @@
+Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-emu.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/arch/arm/mach-pxa/ezx-emu.c 2007-04-21 12:33:22.000000000 -0300
+@@ -0,0 +1,215 @@
++/*
++ * EMU Driver for Motorola EZX phones
++ *
++ * Copyright (c) 2007 Daniel Ribeiro <drwyrm@gmail.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.
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/interrupt.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx.h>
++#include <asm/arch/ezx-pcap.h>
++#include <asm/arch/udc.h>
++
++static struct pxa2xx_udc_mach_info ezx_udc_info;
++extern int ezx_pcap_bit_set(u_int32_t, u_int8_t);
++extern int ezx_pcap_read_bit(u_int32_t);
++
++void emu_switch_to_usb(void)
++{
++ pxa_gpio_mode(GPIO34_USB_P2_2_MD);
++ pxa_gpio_mode(GPIO35_USB_P2_1_MD);
++ pxa_gpio_mode(GPIO36_USB_P2_4_MD);
++ pxa_gpio_mode(GPIO39_USB_P2_6_MD);
++ pxa_gpio_mode(GPIO40_USB_P2_5_MD);
++ pxa_gpio_mode(GPIO53_USB_P2_3_MD);
++ UP2OCR = 0x02000000;
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_FSENB, 0);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN, 1);
++ clr_GPIO(GPIO_EMU_MUX1);
++ clr_GPIO(GPIO_EMU_MUX2);
++}
++EXPORT_SYMBOL(emu_switch_to_usb);
++
++void emu_switch_to_uart(void)
++{
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN,0);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 0);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232_DIR, 1);
++ set_GPIO(GPIO39_FFTXD);
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
++ set_GPIO(GPIO34_TXENB);
++ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
++ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
++ pxa_gpio_mode(GPIO39_FFTXD_MD);
++ pxa_gpio_mode(GPIO53_FFRXD_MD);
++ CKEN |= CKEN6_FFUART;
++ clr_GPIO(GPIO_EMU_MUX1);
++ clr_GPIO(GPIO_EMU_MUX2);
++
++}
++EXPORT_SYMBOL(emu_switch_to_uart);
++
++void emu_switch_to_audio(int stereo)
++{
++ clr_GPIO(GPIO39_VPOUT);
++ if (stereo) {
++ pxa_gpio_mode(GPIO34_USB_P2_2 | GPIO_IN);
++ clr_GPIO(GPIO39_VPOUT);
++ } else {
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
++ set_GPIO(GPIO34_TXENB);
++ }
++
++ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
++ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO39_VPOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
++ pxa_gpio_mode(GPIO53_VMIN | GPIO_IN);
++ set_GPIO(GPIO_EMU_MUX1);
++ if (stereo)
++ set_GPIO(GPIO_EMU_MUX2);
++ else
++ clr_GPIO(GPIO_EMU_MUX2);
++}
++
++void emu_switch_to_nothing(void)
++{
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN, 0);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 1);
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
++ set_GPIO(GPIO34_TXENB);
++ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
++ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO39_VPOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
++ pxa_gpio_mode(GPIO53_VMIN | GPIO_IN);
++}
++
++
++static irqreturn_t emu_irq(int irq, void *data)
++{
++ printk("emu_irq(%u) entered: ", irq);
++
++ switch (irq) {
++ case EZX_IRQ_USB4V:
++ printk("usb 4v\n");
++ if(ezx_pcap_read_bit(SSP_PCAP_ADJ_BIT_PSTAT_USBDET_4V))
++#if defined CONFIG_PXA_EZX_EMU_USB
++ emu_switch_to_usb();
++#elif defined CONFIG_PXA_EZX_EMU_UART
++ emu_switch_to_uart();
++#else
++ emu_switch_to_nothing();
++#endif
++ else
++ emu_switch_to_nothing();
++ break;
++ case EZX_IRQ_USB1V:
++ printk("usb 1v\n");
++ break;
++ default:
++ printk("unknown\n");
++ break;
++ }
++
++ return IRQ_HANDLED;
++}
++
++static int __init ezx_emu_probe(struct platform_device *dev)
++{
++ printk("ezx_emu_probe entered!\n");
++ pxa_gpio_mode(GPIO_SNP_INT_IN | GPIO_IN);
++ pxa_gpio_mode(GPIO_EMU_MUX1 | GPIO_OUT);
++ pxa_gpio_mode(GPIO_EMU_MUX2 | GPIO_OUT);
++
++ request_irq(EZX_IRQ_USB4V, &emu_irq, SA_INTERRUPT, "usb 4v", NULL);
++ request_irq(EZX_IRQ_USB1V, &emu_irq, SA_INTERRUPT, "usb 1v", NULL);
++
++ pxa_set_udc_info(&ezx_udc_info);
++
++#if defined CONFIG_PXA_EZX_EMU_USB
++ emu_switch_to_usb();
++#elif defined CONFIG_PXA_EZX_EMU_UART
++ emu_switch_to_uart();
++#else
++ emu_switch_to_nothing();
++#endif
++
++ return 0;
++}
++
++static int ezx_emu_remove(struct platform_device *dev)
++{
++ free_irq(EZX_IRQ_USB4V, NULL);
++ free_irq(EZX_IRQ_USB1V, NULL);
++
++ return 0;
++}
++
++/* USB Device Controller */
++static int udc_connected_status;
++static void ezx_udc_command(int cmd)
++{
++ switch (cmd) {
++ case PXA2XX_UDC_CMD_DISCONNECT:
++ printk(KERN_NOTICE "USB cmd disconnect\n");
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU,0);
++ udc_connected_status = 0;
++ break;
++ case PXA2XX_UDC_CMD_CONNECT:
++ printk(KERN_NOTICE "USB cmd connect\n");
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU,1);
++ udc_connected_status = 1;
++ break;
++ }
++}
++
++static int ezx_udc_is_connected(void)
++{
++ return udc_connected_status;
++}
++
++static struct pxa2xx_udc_mach_info ezx_udc_info __initdata = {
++ .udc_is_connected = ezx_udc_is_connected,
++ .udc_command = ezx_udc_command,
++};
++
++static struct platform_driver ezxemu_driver = {
++ .probe = ezx_emu_probe,
++ .remove = ezx_emu_remove,
++ //.suspend = ezx_emu_suspend,
++ //.resume = ezx_emu_resume,
++ .driver = {
++ .name = "ezx-emu",
++ .owner = THIS_MODULE,
++ },
++};
++
++int __init ezx_emu_init(void)
++{
++ return platform_driver_register(&ezxemu_driver);
++}
++
++void ezx_emu_fini(void)
++{
++ return platform_driver_unregister(&ezxemu_driver);
++}
++
++module_init(ezx_emu_init);
++module_exit(ezx_emu_fini);
++
++MODULE_DESCRIPTION("Motorola Enchanced Mini Usb driver");
++MODULE_AUTHOR("Daniel Ribeiro <drwyrm@gmail.com>");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.20.7/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.20.7.orig/arch/arm/mach-pxa/Kconfig 2007-04-21 12:32:50.000000000 -0300
++++ linux-2.6.20.7/arch/arm/mach-pxa/Kconfig 2007-04-21 12:32:54.000000000 -0300
+@@ -94,6 +94,27 @@
+
+ endchoice
+
++config PXA_EZX_EMU
++ bool "Motorola Enchanced Mini Usb"
++
++if PXA_EZX_EMU
++
++choice
++ prompt "Select default EMU mode"
++
++config PXA_EZX_EMU_USB
++ bool "USB"
++
++config PXA_EZX_EMU_UART
++ bool "UART"
++
++config PXA_EZX_EMU_NOTHING
++ bool "nothing"
++
++endchoice
++
++endif
++
+ endif
+
+ endmenu
+Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.20.7.orig/arch/arm/mach-pxa/Makefile 2007-04-21 12:32:50.000000000 -0300
++++ linux-2.6.20.7/arch/arm/mach-pxa/Makefile 2007-04-21 12:32:54.000000000 -0300
+@@ -19,6 +19,7 @@
+ obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
+ obj-$(CONFIG_MACH_TOSA) += tosa.o
+ obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o
++obj-$(CONFIG_PXA_EZX_EMU) += ezx-emu.o
+
+ # Support for blinky lights
+ led-y := leds.o
+Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- linux-2.6.20.7.orig/arch/arm/mach-pxa/ezx.c 2007-04-21 12:32:50.000000000 -0300
++++ linux-2.6.20.7/arch/arm/mach-pxa/ezx.c 2007-04-21 12:32:54.000000000 -0300
+@@ -36,6 +36,7 @@
+ #include <asm/arch/ohci.h>
+ #include <asm/arch/pxa-regs.h>
+
++
+ #include "ezx.h"
+ #include "generic.h"
+ #include <linux/tty.h>
+@@ -92,6 +93,30 @@
+ .resource = ezxpcap_resources,
+ };
+
++/* EMU */
++static struct resource ezxemu_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_USB4V,
++ .end = EZX_IRQ_USB4V,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_USB1V,
++ .end = EZX_IRQ_USB1V,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device ezxemu_device = {
++ .name = "ezx-emu",
++ .id = -1,
++// .dev = {
++// .parent = &ezxpcap_device.dev,
++// },
++ .num_resources = ARRAY_SIZE(ezxemu_resources),
++ .resource = ezxemu_resources,
++};
++
+ /* OHCI Controller */
+
+ static int ezx_ohci_init(struct device *dev)
+@@ -317,6 +342,7 @@
+ &ezxssp_device,
+ &ezxpcap_device,
+ &ezxbp_device,
++ &ezxemu_device,
+ };
+
+ static void __init a780_init(void)
+@@ -383,7 +409,15 @@
+ pxa_set_ohci_info(&ezx_ohci_platform_data);
+
+ platform_add_devices(devices, ARRAY_SIZE(devices));
+-
++/*
++#if defined CONFIG_PXA_EZX_EMU_USB
++ emu_switch_to_usb();
++#elif defined CONFIG_PXA_EZX_EMU_UART
++ emu_switch_to_uart();
++#else
++ emu_switch_to_nothing();
++#endif
++*/
+ }
+
+ MACHINE_START(EZX, "Motorola Ezx Platform")
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-fix-usb_pxa27x_udc-r3.patch b/packages/linux/linux-ezx-2.6.20.7/ezx-fix-usb_pxa27x_udc-r3.patch
new file mode 100644
index 0000000000..c3cbf25a09
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/ezx-fix-usb_pxa27x_udc-r3.patch
@@ -0,0 +1,16 @@
+Index: linux-2.6.20.7/drivers/usb/gadget/pxa27x_udc.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/usb/gadget/pxa27x_udc.c 2007-04-21 12:30:51.000000000 -0300
++++ linux-2.6.20.7/drivers/usb/gadget/pxa27x_udc.c 2007-04-21 12:32:21.000000000 -0300
+@@ -1615,8 +1615,9 @@
+
+ DMSG("Connecting\n");
+ /* RPFIXME */
+- UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE;
+- //dev->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
++ //UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE;
++ UP2OCR = 0x02000000; // temporary solution for ezx.
++ dev->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
+ }
+
+
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-mci.patch b/packages/linux/linux-ezx-2.6.20.7/ezx-mci.patch
new file mode 100644
index 0000000000..d16693e3e4
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/ezx-mci.patch
@@ -0,0 +1,177 @@
+Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-mci.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/arch/arm/mach-pxa/ezx-mci.c 2007-04-20 01:10:13.000000000 -0300
+@@ -0,0 +1,159 @@
++/*
++ * linux/arch/arm/mach-ezx/a780.c
++ *
++ * Support for the Motorola Ezx A780 Development Platform.
++ *
++ * Author: Zhuang Xiaofan
++ * Created: Nov 25, 2003
++ * Copyright: Motorola 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/mmc/host.h>
++#include <linux/irq.h>
++#include <asm/irq.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx-pcap.h>
++#include <asm/arch/mmc.h>
++#include <asm/arch/hardware.h>
++
++extern int ezx_pcap_mmcsd_power(int);
++extern void ezx_pcap_mmcsd_voltage(u_int32_t);
++
++static struct pxamci_platform_data ezx_mci_platform_data;
++
++static int ezx_mci_init(struct device *dev,
++ irqreturn_t (*ezx_detect_int)(int, void *),
++ void *data)
++{
++ int err;
++ printk("%s entered\n", __FUNCTION__);
++
++ /* Setup GPIO for PXA27x MMC/SD controller */
++ pxa_gpio_mode(GPIO32_MMCCLK_MD);
++ pxa_gpio_mode(GPIO112_MMCCMD_MD);
++ pxa_gpio_mode(GPIO92_MMCDAT0_MD);
++ pxa_gpio_mode(GPIO109_MMCDAT1_MD);
++ pxa_gpio_mode(GPIO110_MMCDAT2_MD);
++ pxa_gpio_mode(GPIO111_MMCDAT3_MD);
++
++ ezx_pcap_mmcsd_power(1);
++
++ ezx_mci_platform_data.detect_delay = msecs_to_jiffies(250);
++
++ err = request_irq(0x49, ezx_detect_int, SA_INTERRUPT,
++ "MMC card detect", data);
++ if (err) {
++ printk(KERN_ERR "ezx_mci_detect: MMC/SD: can't request "
++ "MMC card detect IRQ\n");
++ return -1;
++ }
++
++ set_irq_type(0x0b, IRQT_BOTHEDGE);
++
++ return 0;
++}
++
++static int ezx_mci_get_ro(struct device *dev)
++{
++ printk("%s entered\n", __FUNCTION__);
++#if defined(CONFIG_PXA_EZX_E680)
++ /* this is only e680, i guess */
++ // return GPIO_is_high(96+4);
++ return (GPLR3 & 0x800);
++#else
++ return 0;
++#endif
++}
++
++#if defined(CONFIG_PXA_EZX_A780)
++static u_int8_t mmc_voltage[] = {
++ [MMC_VDD_160] = 5,
++ [MMC_VDD_170] = 5,
++ [MMC_VDD_180] = 6,
++ [MMC_VDD_190] = 6,
++ [MMC_VDD_200] = 7,
++ [MMC_VDD_210] = 7,
++ [MMC_VDD_220] = 8,
++ [MMC_VDD_230] = 8,
++ [MMC_VDD_240] = 9,
++ [MMC_VDD_250] = 9,
++ [MMC_VDD_260] = 10,
++ [MMC_VDD_270] = 10,
++ [MMC_VDD_280] = 11,
++ [MMC_VDD_290] = 11,
++ [MMC_VDD_300] = 12,
++ [MMC_VDD_310] = 12,
++ [MMC_VDD_320] = 13,
++ [MMC_VDD_330] = 13,
++ [MMC_VDD_340] = 14,
++ [MMC_VDD_350] = 14,
++ [MMC_VDD_360] = 15,
++};
++#elif defined(CONFIG_PXA_EZX_E680)
++static u_int8_t mmc_voltage[] = {
++ [MMC_VDD_160] = 3,
++ [MMC_VDD_170] = 3,
++ [MMC_VDD_180] = 3,
++ [MMC_VDD_190] = 3,
++ [MMC_VDD_200] = 3,
++ [MMC_VDD_210] = 3,
++ [MMC_VDD_220] = 3,
++ [MMC_VDD_230] = 3,
++ [MMC_VDD_240] = 3,
++ [MMC_VDD_250] = 3,
++ [MMC_VDD_260] = 3,
++ [MMC_VDD_270] = 3,
++ [MMC_VDD_280] = 3,
++ [MMC_VDD_290] = 3,
++ [MMC_VDD_300] = 3,
++ [MMC_VDD_310] = 3,
++ [MMC_VDD_320] = 3,
++ [MMC_VDD_330] = 3,
++ [MMC_VDD_340] = 3,
++ [MMC_VDD_350] = 3,
++ [MMC_VDD_360] = 3,
++};
++#endif
++
++static void ezx_mci_setpower(struct device *dev, unsigned int vdd)
++{
++ printk("%s(vdd=%u) entered\n", __FUNCTION__, vdd);
++ if (vdd <= MMC_VDD_360)
++ ezx_pcap_mmcsd_voltage(mmc_voltage[vdd]);
++
++ ezx_pcap_mmcsd_power(1);
++}
++
++static void ezx_mci_exit(struct device *dev, void *data)
++{
++ printk("%s entered\n", __FUNCTION__);
++ ezx_pcap_mmcsd_power(0);
++ free_irq(0x49, data);
++}
++
++static struct pxamci_platform_data ezx_mci_platform_data = {
++#if defined(CONFIG_PXA_EZX_E680)
++ .ocr_mask = MMC_VDD_27_28,
++#elif defined(CONFIG_PXA_EZX_A780)
++ .ocr_mask = MMC_VDD_160_165|MMC_VDD_18_19|MMC_VDD_20_21
++ |MMC_VDD_22_23|MMC_VDD_24_25|MMC_VDD_26_27
++ |MMC_VDD_28_29|MMC_VDD_30_31|MMC_VDD_32_33
++ |MMC_VDD_34_35|MMC_VDD_35_36,
++#endif
++ .init = ezx_mci_init,
++ .get_ro = ezx_mci_get_ro,
++ .setpower = ezx_mci_setpower,
++ .exit = ezx_mci_exit,
++};
++
++int __init __ezx_mci_init (void)
++{
++ pxa_set_mci_info(&ezx_mci_platform_data);
++ return 0;
++}
++
++arch_initcall(__ezx_mci_init);
+Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.20.7.orig/arch/arm/mach-pxa/Makefile 2007-04-21 02:56:16.000000000 -0300
++++ linux-2.6.20.7/arch/arm/mach-pxa/Makefile 2007-04-21 03:00:03.000000000 -0300
+@@ -18,7 +18,7 @@
+ obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
+ obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
+ obj-$(CONFIG_MACH_TOSA) += tosa.o
+-obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o
++obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o
+
+ # Support for blinky lights
+ led-y := leds.o
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-mtd-map.patch b/packages/linux/linux-ezx-2.6.20.7/ezx-mtd-map.patch
new file mode 100644
index 0000000000..f59e31d9a2
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/ezx-mtd-map.patch
@@ -0,0 +1,274 @@
+Index: linux-2.6.20.7/drivers/mtd/maps/Kconfig
+===================================================================
+--- linux-2.6.20.7.orig/drivers/mtd/maps/Kconfig 2007-04-21 12:47:04.000000000 -0300
++++ linux-2.6.20.7/drivers/mtd/maps/Kconfig 2007-04-21 13:01:08.000000000 -0300
+@@ -595,6 +595,28 @@
+ help
+ This enables access to the flash chip on the Sharp SL Series of PDAs.
+
++config MTD_EZX
++ bool "Map driver for Motorola EZX Platform"
++ depends on MTD && PXA_EZX
++
++if MTD_EZX
++
++choice
++ prompt "Select partition mapping for EZX platform"
++
++config MTD_EZX_A780
++ bool "A780/E680 Original Mapping"
++
++config MTD_EZX_A780_ALTERNATE
++ bool "A780/E680 Alternate Mapping for BLOB2"
++
++config MTD_EZX_E2
++ bool "E2 Original Mapping"
++
++endchoice
++
++endif
++
+ config MTD_PLATRAM
+ tristate "Map driver for platform device RAM (mtd-ram)"
+ depends on MTD
+Index: linux-2.6.20.7/drivers/mtd/maps/Makefile
+===================================================================
+--- linux-2.6.20.7.orig/drivers/mtd/maps/Makefile 2007-04-21 12:55:09.000000000 -0300
++++ linux-2.6.20.7/drivers/mtd/maps/Makefile 2007-04-21 12:55:45.000000000 -0300
+@@ -72,3 +72,4 @@
+ obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o
+ obj-$(CONFIG_MTD_MTX1) += mtx-1_flash.o
+ obj-$(CONFIG_MTD_TQM834x) += tqm834x.o
++obj-$(CONFIG_MTD_EZX) += ezx-flash.o
+Index: linux-2.6.20.7/drivers/mtd/maps/ezx-flash.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/drivers/mtd/maps/ezx-flash.c 2007-04-21 13:07:14.000000000 -0300
+@@ -0,0 +1,227 @@
++/*
++ * $Id: $
++ *
++ * Map driver for the PXA27x
++ *
++ * Author: Harald Welte
++ * Copyright: (C) 2001 MontaVista Software 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.
++ *
++ * Mar 3, 2007 - (Daniel Ribeiro) Alternate partition table
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/dma-mapping.h>
++#include <linux/slab.h>
++
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/map.h>
++#include <linux/mtd/partitions.h>
++
++#include <asm/io.h>
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/mainstone.h>
++
++#define WINDOW_ADDR 0x0
++#define WINDOW_SIZE (32*1024*1024)
++#define WINDOW_CACHE_ADDR 0x0
++#define WINDOW_CACHE_SIZE 0x1a00000
++
++static void pxa27x_map_inval_cache(struct map_info *map, unsigned long from,
++ ssize_t len)
++{
++#if 0
++ unsigned long endaddress, i, j;
++ endaddress = from + len -1;
++ from &= ~(32-1);
++ endaddress &= ~(32-1);
++ for (i = from; i <= endaddress; i += 32)
++ asm("mcr p15, 0, %0, c7, c6, 1"::"r"(i));
++
++ asm( "mrc p15, 0, %0, c2, c0, 0\n"
++ "mov %0, %0\n"
++ "sub pc, pc #4"
++ :"=r"(j));
++#else
++ consistent_sync((char *)map->cached + from, len, DMA_FROM_DEVICE);
++#endif
++}
++
++
++struct map_info pxa27x_map = {
++ .name = "PXA27x flash",
++ .size = WINDOW_SIZE,
++ .phys = WINDOW_ADDR,
++ .inval_cache = &pxa27x_map_inval_cache,
++};
++
++#if defined CONFIG_MTD_EZX_A780_ALTERNATE
++static struct mtd_partition pxa27x_partitions[] = {
++ {
++ .name = "Bootloader (RO)",
++ .size = 0x00020000,
++ .offset = 0,
++ .mask_flags = MTD_WRITEABLE,
++ }, {
++ .name = "Bootloader 2",
++ .size = 0x00020000,
++ .offset = 0x00020000,
++ } , {
++ .name = "Kernel 1",
++ .size = 0x000e0000, // 896KB
++ .offset = 0x00040000,
++ } , {
++ .name = "rootfs",
++ .size = 0x01760000,
++ .offset = 0x00120000,
++ } , {
++ .name = "Kernel 2",
++ .size = 0x00180000, // 1.5MB
++ .offset = 0x01880000,
++ } , {
++ .name = "VFM_Filesystem",
++ .size = 0x005a0000,
++ .offset = 0x01a00000,
++ } , {
++ .name = "setup",
++ .size = 0x00020000,
++ .offset = 0x01fa0000,
++ } , {
++ .name = "Logo",
++ .size = 0x00020000,
++ .offset = 0x01fc0000,
++ },
++};
++#elif defined CONFIG_MTD_EZX_A780
++static struct mtd_partition pxa27x_partitions[] = {
++ {
++ .name = "Bootloader",
++ .size = 0x00020000,
++ .offset = 0,
++ .mask_flags = MTD_WRITEABLE,
++ }, {
++ .name = "Kernel",
++ .size = 0x000e0000,
++ .offset = 0x00020000,
++ } , {
++ .name = "rootfs",
++ .size = 0x018e0000,
++ .offset = 0x00120000,
++ } , {
++ .name = "VFM_Filesystem",
++ .size = 0x00580000,
++ .offset = 0x01a00000,
++ } , {
++ .name = "setup",
++ .size = 0x00020000,
++ .offset = 0x01fa0000,
++ } , {
++ .name = "Logo",
++ .size = 0x00020000,
++ .offset = 0x01fc0000,
++ },
++};
++#else
++#error "please define partition for this PXA27x implementation"
++#endif
++
++
++static struct mtd_info *mymtd;
++static struct mtd_partition *parsed_parts;
++
++static const char *probes[] = { "RedBoot", "cmdlinepart", NULL };
++
++static int __init init_pxa27x(void)
++{
++ struct mtd_partition *parts;
++ int nb_parts = 0;
++ int parsed_nr_parts = 0;
++ char *part_type = "static";
++
++ pxa27x_map.bankwidth = (BOOT_DEF & 1) ? 2 : 4;
++
++ printk("Probing PXA27x flash at physical address 0x%08x (%d-bit bankwidth)\n",
++ WINDOW_ADDR, pxa27x_map.bankwidth * 8);
++ pxa27x_map.virt = ioremap(pxa27x_map.phys, pxa27x_map.size);
++
++ if (!pxa27x_map.virt) {
++ printk("Failed to ioremap\n");
++ return -EIO;
++ }
++
++ mymtd = do_map_probe("cfi_probe", &pxa27x_map);
++ if (!mymtd) {
++ iounmap((void *)pxa27x_map.virt);
++ return -ENXIO;
++ }
++ mymtd->owner = THIS_MODULE;
++
++#if 0
++ /* ioremap the first flash chip as cacheable */
++ pxa27x_map.cached = ioremap_cached(pxa27x_map.phys, pxa27x_map.size);
++ if (!pxa27x_map.cached) {
++ printk("Failed to do cacheable-ioremap\n");
++ iounmap((void *)pxa27x_map.virt);
++ return -EIO;
++ }
++#endif
++ simple_map_init(&pxa27x_map);
++
++ if (parsed_nr_parts == 0) {
++ int ret = parse_mtd_partitions(mymtd, probes, &parsed_parts, 0);
++
++ if (ret > 0) {
++ part_type = "RedBoot";
++ parsed_nr_parts = ret;
++ }
++ }
++
++ if (parsed_nr_parts > 0) {
++ parts = parsed_parts;
++ nb_parts = parsed_nr_parts;
++ } else {
++ parts = pxa27x_partitions;
++ nb_parts = ARRAY_SIZE(pxa27x_partitions);
++ }
++
++ if (nb_parts) {
++ printk(KERN_NOTICE "Using %s partition definition\n", part_type);
++ add_mtd_partitions(mymtd, parts, nb_parts);
++ } else {
++ add_mtd_device(mymtd);
++ }
++#if 0
++ if (ret = ezx_partition_init())
++#endif
++ return 0;
++}
++
++static void __exit cleanup_pxa27x(void)
++{
++ if (mymtd) {
++ del_mtd_partitions(mymtd);
++ map_destroy(mymtd);
++ if (parsed_parts)
++ kfree(parsed_parts);
++ }
++ if (pxa27x_map.virt)
++ iounmap((void *)pxa27x_map.virt);
++ if (pxa27x_map.cached)
++ iounmap((void *)pxa27x_map.cached);
++ return;
++}
++
++module_init(init_pxa27x);
++module_exit(cleanup_pxa27x);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>");
++MODULE_DESCRIPTION("MTD map driver for Motorola EZX platform");
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-pcap.patch b/packages/linux/linux-ezx-2.6.20.7/ezx-pcap.patch
new file mode 100644
index 0000000000..22c5d44f36
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/ezx-pcap.patch
@@ -0,0 +1,1197 @@
+Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c 2007-04-21 08:26:37.000000000 -0300
+@@ -0,0 +1,411 @@
++/* Driver for Motorola PCAP2 as present in EZX phones
++ *
++ * This is both a SPI device driver for PCAP itself, as well as
++ * an IRQ demultiplexer for handling PCAP generated events such as
++ * headphone jack sense by downstream drivers.
++ *
++ * (C) 2006 by Harald Welte <laforge@openezx.org>
++ *
++ * 2007, April - Daniel Ribeiro <drwyrm@gmail.com>
++ * Altered to work with corgi's SSP code.
++ * Fixed irq handling routine.
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/platform_device.h>
++#include <linux/interrupt.h>
++#include <linux/kernel_stat.h>
++
++#include <asm/hardware.h>
++#include <asm/mach-types.h>
++
++#include <asm/arch/ssp.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx-pcap.h>
++#include <asm/arch/irqs.h>
++#include <asm/mach/irq.h>
++
++#include "ezx.h"
++
++#if 0
++#define DEBUGP(x, args...) printk(x, ## args)
++#else
++#define DEBUGP(x, args...)
++#endif
++
++extern unsigned long ezx_ssp_pcap_putget(ulong);
++
++int ezx_pcap_write(u_int8_t reg_num, u_int32_t value)
++{
++ value &= SSP_PCAP_REGISTER_VALUE_MASK;
++ value |= SSP_PCAP_REGISTER_WRITE_OP_BIT
++ | (reg_num<<SSP_PCAP_REGISTER_ADDRESS_SHIFT);
++
++ local_irq_disable();
++ ezx_ssp_pcap_putget(value);
++ local_irq_enable();
++
++ DEBUGP("pcap write r%x: 0x%08x\n", reg_num, value);
++ return 0;
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_write);
++
++int ezx_pcap_read(u_int8_t reg_num, u_int32_t *value)
++{
++ u_int32_t frame = SSP_PCAP_REGISTER_READ_OP_BIT
++ | (reg_num<<SSP_PCAP_REGISTER_ADDRESS_SHIFT);
++
++ local_irq_disable();
++ *value = ezx_ssp_pcap_putget(frame);
++ local_irq_enable();
++
++ DEBUGP("pcap read r%x: 0x%08x\n", reg_num, *value);
++ return 0;
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_read);
++
++int ezx_pcap_bit_set(u_int32_t sspPcapBit, u_int8_t to)
++{
++ int ret;
++ u_int32_t tmp;
++ u_int32_t bit = (sspPcapBit & SSP_PCAP_REGISTER_VALUE_MASK);
++ u_int8_t reg_num = (sspPcapBit & SSP_PCAP_REGISTER_ADDRESS_MASK)
++ >> SSP_PCAP_REGISTER_ADDRESS_SHIFT;
++
++ ret = ezx_pcap_read(reg_num, &tmp);
++ if (ret < 0)
++ return ret;
++
++ if (to == 0)
++ tmp &= ~bit;
++ else
++ tmp |= bit;
++
++ return ezx_pcap_write(reg_num, tmp);
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_bit_set);
++
++int ezx_pcap_read_bit(u_int32_t bit)
++{
++ int ret;
++ u_int32_t tmp;
++ u_int8_t reg_num = (bit & SSP_PCAP_REGISTER_ADDRESS_MASK)
++ >> SSP_PCAP_REGISTER_ADDRESS_SHIFT;
++
++ ret = ezx_pcap_read(reg_num, &tmp);
++ if (ret < 0)
++ return ret;
++
++ return tmp & (bit & SSP_PCAP_REGISTER_VALUE_MASK);
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_read_bit);
++
++
++static int ezx_pcap_vibrator_level(u_int32_t bit)
++{
++ /* FIXME */
++ return 0;
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_vibrator_level);
++
++
++static int pcap_init(void)
++{
++ /* initialize registers */
++ /* FIXME: this should be board-level, not chip-level */
++ /* implement a per board pcap init reg array? */
++
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ISR_USB4VI, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_USB4VM, 0);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ISR_USB1VI, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_USB1VM, 0);
++ // disable all interrupts
++ //ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, 0x03ffffff);
++
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1CTRL, 1);
++ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
++ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
++
++ /* set SW1 sleep to keep SW1 1.3v in sync mode */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE10, 0);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE11, 0);
++ /* SW1 active in sync mode */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE00, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE01, 0);
++ /* at SW1 -core voltage to 1.30V */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW10_DVS, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW11_DVS, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW12_DVS, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW13_DVS, 0);
++
++ /* when STANDY2 PIN ACTIVE (high) set V3-- sram V8 -- pll off */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V3_STBY, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V3_LOWPWR, 0);
++
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V8_STBY, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V8_LOWPWR, 0);
++
++ /* when STANDY2 PIN ACTIVE (high) set V4-- lcd only for e680 V6 ---
++ * camera for e680 */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V4_STBY, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V4_LOWPWR, 1);
++
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V6_STBY, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V6_LOWPWR, 0);
++
++ /* set Vc to low power mode when AP sleep */
++ //SSP_PCAP_bit_set( SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VC_STBY);
++
++ /* set VAUX2 to voltage 2.775V and low power mode when AP sleep */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_1, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_0, 0);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_STBY, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_LOWPWR, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 1);
++
++ PGSR(GPIO34_TXENB) |= GPIO_bit(GPIO34_TXENB);
++
++ return 0;
++}
++/* MMC/SD specific functions */
++
++void ezx_pcap_mmcsd_voltage(u_int32_t bits)
++{
++ unsigned int tmp;
++ ezx_pcap_read(SSP_PCAP_ADJ_AUX_VREG_REGISTER, &tmp);
++#if defined(CONFIG_PXA_EZX_E680)
++ tmp &= 0xffffff9f; /* zero all vaux2 bits */
++ tmp |= (bits & 0x3) << 5;
++#elif defined(CONFIG_PXA_EZX_A780)
++ tmp &= 0xfffff0ff; /* zero all vaux3 bits */
++ tmp |= (bits & 0xf) << 8;
++#endif
++ ezx_pcap_write(SSP_PCAP_ADJ_AUX_VREG_REGISTER, tmp);
++}
++EXPORT_SYMBOL(ezx_pcap_mmcsd_voltage);
++
++int ezx_pcap_mmcsd_power(int on)
++{
++ if (on) {
++#if defined(CONFIG_PXA_EZX_E680)
++ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 1);
++#else
++ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN, 1);
++#endif
++ } else {
++#if defined(CONFIG_PXA_EZX_E680)
++ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 0);
++#else
++ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN, 0);
++#endif
++ }
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_mmcsd_power);
++
++/* IRQ Handling */
++
++/* Array indexed by BIT POSITION of PCAP register, returns IRQ number */
++static unsigned int pcap2irq[] = {
++ [0] = EZX_IRQ_ADCDONE,
++ [1] = EZX_IRQ_TS,
++ [2] = 0, /* 1HZ */
++ [3] = 0, /* WI */
++ [4] = 0, /* WI */
++ [5] = 0, /* TODA */
++ [6] = EZX_IRQ_USB4V,
++ [7] = 0, /* ONOFF */
++ [8] = 0, /* ONOFF2 */
++ [9] = EZX_IRQ_USB1V,
++ [10] = 0, /* MOBPORT */
++ [11] = EZX_IRQ_MIC,
++ [12] = EZX_IRQ_HEADJACK,
++ [13] = 0, /* ST */
++ [14] = 0, /* PC */
++ [15] = 0, /* WARM */
++ [16] = 0, /* EOL */
++ [17] = 0, /* CLK */
++ [18] = 0, /* SYS_RST */
++ [19] = 0,
++ [20] = EZX_IRQ_ADCDONE2,
++ [21] = 0, /* SOFT_RESET */
++ [22] = 0, /* MNEXB */
++};
++
++/* Array indexed by IRQ NUMBER, returns PCAP absolute value */
++static unsigned int irq2pcap[] = {
++ [EZX_IRQ_ADCDONE] = SSP_PCAP_ADJ_BIT_ISR_ADCDONEI,
++ [EZX_IRQ_TS] = SSP_PCAP_ADJ_BIT_ISR_TSI,
++ [EZX_IRQ_USB4V] = SSP_PCAP_ADJ_BIT_ISR_USB4VI,
++ [EZX_IRQ_USB1V] = SSP_PCAP_ADJ_BIT_ISR_USB1VI,
++ [EZX_IRQ_HEADJACK] = SSP_PCAP_ADJ_BIT_ISR_A1I,
++ [EZX_IRQ_MIC] = SSP_PCAP_ADJ_BIT_ISR_MB2I,
++ [EZX_IRQ_ADCDONE2] = SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I,
++};
++
++static void pcap_ack_irq(unsigned int irq)
++{
++ DEBUGP("pcap_ack_irq: %u\n", irq);
++ ezx_pcap_write(SSP_PCAP_ADJ_ISR_REGISTER, irq2pcap[irq]);
++}
++
++static void pcap_mask_irq(unsigned int irq)
++{
++ u_int32_t reg;
++
++ DEBUGP("pcap_mask_irq: %u\n", irq);
++
++ /* this needs to be atomic... but we're not on SMP so it is */
++ ezx_pcap_read(SSP_PCAP_ADJ_MSR_REGISTER, &reg);
++ reg |= irq2pcap[irq];
++ ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, reg);
++}
++
++static void pcap_unmask_irq(unsigned int irq)
++{
++ u_int32_t tmp;
++ DEBUGP("pcap_unmask_irq: %u\n", irq);
++
++ /* this needs to be atomic... but we're not on SMP so it is */
++ ezx_pcap_read(SSP_PCAP_ADJ_MSR_REGISTER, &tmp);
++ tmp &= ~irq2pcap[irq];
++ ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, tmp);
++}
++
++static struct irq_chip pcap_chip = {
++ .ack = pcap_ack_irq,
++ .mask = pcap_mask_irq,
++ .unmask = pcap_unmask_irq,
++};
++
++/* handler for interrupt received from PCAP via GPIO */
++static void pcap_irq_demux_handler(unsigned int irq, struct irq_desc *desc)
++{
++ int i;
++ const unsigned int cpu = smp_processor_id();
++ u_int32_t reg;
++
++ DEBUGP("pcap_irq_demux_handler(%u,,) entered\n", irq);
++
++ spin_lock(&desc->lock);
++
++ desc->status &= ~(IRQ_REPLAY | IRQ_WAITING);
++
++ if (unlikely(desc->status & IRQ_INPROGRESS)) {
++ DEBUGP("irq busy, masking it off\n");
++ desc->status |= (IRQ_PENDING | IRQ_MASKED);
++ desc->chip->mask(irq);
++ desc->chip->ack(irq);
++ goto out_unlock;
++ }
++
++ kstat_cpu(cpu).irqs[irq]++;
++ desc->status |= IRQ_INPROGRESS;
++
++ do {
++ if (unlikely((desc->status &
++ (IRQ_PENDING | IRQ_MASKED | IRQ_DISABLED)) ==
++ (IRQ_PENDING | IRQ_MASKED))) {
++ DEBUGP("dealing with pending IRQ, unmasking\n");
++ desc->chip->unmask(irq);
++ desc->status &= ~IRQ_MASKED;
++ }
++
++ desc->status &= ~IRQ_PENDING;
++ spin_unlock(&desc->lock);
++
++ ezx_pcap_read(SSP_PCAP_ADJ_ISR_REGISTER, &reg);
++ DEBUGP("pcap_irq_demux_handler: ISR=0x%08x\n", reg);
++
++ for (i = ARRAY_SIZE(pcap2irq)-1; i >= 0; i--) {
++ unsigned int pirq = pcap2irq[i];
++ if (pirq == 0)
++ continue;
++
++ if (reg & (1 << i)) {
++ struct irq_desc *subdesc;
++ DEBUGP("found irq %u\n", pirq);
++ subdesc = irq_desc + pirq;
++
++ // acknowledge pcap irq
++ // do just one pcap irq each time
++ subdesc->chip->ack(pirq);
++ i = 0;
++
++ handle_IRQ_event(pirq, subdesc->action);
++ }
++ }
++ spin_lock(&desc->lock);
++
++ } while ((desc->status & (IRQ_PENDING | IRQ_DISABLED)) == IRQ_PENDING);
++
++ desc->status &= ~IRQ_INPROGRESS;
++
++out_unlock:
++ spin_unlock(&desc->lock);
++}
++
++static int ezx_pcap_remove(struct platform_device *pdev)
++{
++ int irq;
++ DEBUGP("exz_pcap_remove entered\n");
++
++ set_irq_chained_handler(IRQ_GPIO1, NULL);
++
++ for (irq = EZX_IRQ(0); irq <= EZX_IRQ(6); irq++) {
++ set_irq_chip(irq, NULL);
++ set_irq_handler(irq, NULL);
++ set_irq_flags(irq, 0);
++ }
++
++ return 0;
++}
++
++static int __init ezx_pcap_probe(struct platform_device *pdev)
++{
++ unsigned int irq;
++ DEBUGP("ezx_pcap_probe entered\n");
++
++ pcap_init();
++
++ set_irq_type(IRQ_GPIO1, IRQT_RISING);
++ /* set up interrupt demultiplexing code for PCAP2 irqs */
++ for (irq = EZX_IRQ(0); irq <= EZX_IRQ(6); irq++) {
++ set_irq_chip(irq, &pcap_chip);
++ set_irq_handler(irq, handle_edge_irq);
++ set_irq_flags(irq, IRQF_VALID);
++ }
++ set_irq_chained_handler(IRQ_GPIO1, pcap_irq_demux_handler);
++
++ printk("PCAP2 SSP driver registered.\n");
++
++ return 0;
++}
++
++static struct platform_driver ezxpcap_driver = {
++ .probe = ezx_pcap_probe,
++ .remove = ezx_pcap_remove,
++ .driver = {
++ .name = "ezx-pcap",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init ezx_pcap_init(void)
++{
++ DEBUGP("ezx_pcap_init entered\n");
++ return platform_driver_register(&ezxpcap_driver);
++}
++
++static void __exit ezx_pcap_exit(void)
++{
++ return platform_driver_unregister(&ezxpcap_driver);
++}
++
++module_init(ezx_pcap_init);
++module_exit(ezx_pcap_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Harald Welte");
++MODULE_DESCRIPTION("SPI Driver for Motorola PCAP2");
++
+Index: linux-2.6.20.7/include/asm-arm/arch-pxa/ezx-pcap.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/include/asm-arm/arch-pxa/ezx-pcap.h 2007-04-21 08:26:37.000000000 -0300
+@@ -0,0 +1,665 @@
++/* (c) Copyright Motorola Beijing 2002 all rights reserved.
++
++ Project Name : EZX
++ Project No. :
++ Title :
++ File Name :
++ Description :
++
++ ************** REVISION HISTORY **********************************************
++ Date Author Reference
++ ======== ========== ==========================
++ 2002-07-01 weiqiang lin create
++*/
++#ifndef SSP_PCAP_H
++#define SSP_PCAP_H
++
++#define SSP_vibrate_start_command() SSP_PCAP_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN); \
++ SSP_PCAP_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN)
++
++#define SSP_vibrate_stop_command() SSP_PCAP_bit_clean(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN); \
++ SSP_PCAP_bit_clean(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN)
++
++#define SSP_PCAP_REGISTER_VALUE_LENGTH 16
++
++#define SSP_PCAP_REGISTER_WRITE_OP_BIT 0x80000000
++#define SSP_PCAP_REGISTER_READ_OP_BIT 0x00000000
++
++#define SSP_PCAP_REGISTER_VALUE_UP_WORD_MASK 0xffff0000
++#define SSP_PCAP_REGISTER_VALUE_DOWN_WORD_MASK 0x0000ffff
++
++#define SSP_PCAP_REGISTER_VALUE_MASK 0x01ffffff
++#define SSP_PCAP_REGISTER_VALUE_MASK 0x01ffffff
++#define SSP_PCAP_REGISTER_ADDRESS_MASK 0x7c000000
++#define SSP_PCAP_REGISTER_ADDRESS_SHIFT 26
++#define SSP_PCAP_REGISTER_NUMBER 32
++
++#define SSP_PCAP_ADC_START_VALUE_SET_MASK 0xfffffc00
++#define SSP_PCAP_ADC_START_VALUE 0x000001dd
++
++
++#define SSP_PCAP_PHONE_CDC_CLOCK_MASK 0x000001c0
++#define SSP_PCAP_STEREO_SAMPLE_RATE_MASK 0x00000f00
++#define SSP_PCAP_STEREO_BCLK_TIME_SLOT_MASK 0x00018000
++#define SSP_PCAP_STEREO_CLOCK_MASK 0x0000001c
++#define SSP_PCAP_DIGITAL_AUDIO_MODE_MASK 0x00006000
++#define SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK 0x000e0000
++#define SSP_PCAP_MONO_PGA_MASK 0x00180000
++
++#define SSP_PCAP_VIBRATOR_VOLTAGE_LEVEL_MASK 0x00300000
++
++#define SSP_PCAP_AUDIO_IN_GAIN_MASK 0x0000001f
++#define SSP_PCAP_AUDIO_IN_GAIN_SHIFT 0
++#define SSP_PCAP_AUDIO_OUT_GAIN_MASK 0x0001e000
++#define SSP_PCAP_AUDIO_OUT_GAIN_SHIFT 13
++
++
++#define SSP_PCAP_ADD1_VALUE_MASK 0x000003ff
++#define SSP_PCAP_ADD1_VALUE_SHIFT 0
++#define SSP_PCAP_ADD2_VALUE_MASK 0x000ffc00
++#define SSP_PCAP_ADD2_VALUE_SHIFT 10
++
++
++#define PCAP_AUDIO_IN_GAIN_MAX_VALUE 31
++#define PCAP_AUDIO_OUT_GAIN_MAX_VALUE 15
++
++#define PCAP_CLEAR_INTERRUPT_REGISTER 0x00141fdf
++#define PCAP_MASK_ALL_INTERRUPT 0x0013ffff
++
++#define SSP_PCAP_TS_KEEPER_TIMER 100 /* 1 second */
++#define START_ADC_DELAY_TIMER 1991 /* 540 us */
++
++#define SSP_SEND_PM_ALART_INTERVAL 1000 *HZ/1000 /* 1 second */
++#define SSP_SEND_MSG_USB_ACCESSORY_INFO_DEBOUNCE 200 *HZ/1000 /* 200ms */
++
++struct ssp_interrupt_info
++{
++ u32 type;
++ u32 status;
++ void* privdata;
++};
++
++#ifndef U8
++#define U8 unsigned char
++#endif
++
++#ifndef U32
++#define U32 unsigned long
++#endif
++
++#ifndef U16
++#define U16 unsigned short
++#endif
++
++#ifndef P_U16
++#define P_U16 U16*
++#endif
++
++#ifndef P_U32
++#define P_U32 U32*
++#endif
++
++#define SSP_SELECT_BUFFER (volatile unsigned long *)(0xf4000000)
++
++#define SSP_SR_RNE 0x00000008
++#define SSP_PCAP_BASE 0x00001000
++/************************ STRUCTURES, ENUMS, AND TYPEDEFS **************************/
++typedef enum accessoryStatus
++{
++ ACCESSORY_DEVICE_STATUS_DETACHED = 0,
++ ACCESSORY_DEVICE_STATUS_ATTACHED ,
++ ACCESSORY_DEVICE_STATUS_UNKNOW =0x000000ff
++}ACCESSORY_DEVICE_STATUS;
++
++typedef enum accessoryType
++{
++ ACCESSORY_DEVICE_NONE = 0,
++ ACCESSORY_DEVICE_SERIAL_PORT ,
++ ACCESSORY_DEVICE_USB_PORT ,
++ ACCESSORY_DEVICE_UNKNOW =0x000000ff
++}ACCESSORY_TYPE;
++
++typedef enum pcapReturnStatus
++{
++ SSP_PCAP_SUCCESS = 0,
++ SSP_PCAP_ERROR_REGISTER = SSP_PCAP_BASE+1,
++ SSP_PCAP_ERROR_VALUE = SSP_PCAP_BASE+2,
++
++ SSP_PCAP_NOT_RUN = SSP_PCAP_BASE+0xff
++}SSP_PCAP_STATUS;
++
++typedef enum pcapPortType
++{
++ SSP_PCAP_SERIAL_PORT = 0x00000000,
++ SSP_PCAP_LOW_USB_PORT = 0x00000001,
++ SSP_PCAP_HIGH_USB_PORT = 0x00000002,
++ SSP_PCAP_UNKNOW_PORT = 0x000000ff
++}SSP_PCAP_PORT_TYPE;
++
++typedef enum pcapInitDriverType
++{
++ SSP_PCAP_TS_OPEN = 0x00000000,
++ SSP_PCAP_AUDIO_OPEN = 0x00000001,
++ SSP_PCAP_UNKNOW_DRIVER_OPEN = 0x000000ff
++}SSP_PCAP_INIT_DRIVER_TYPE;
++
++
++typedef enum pcapReturnBitStatus
++{
++ SSP_PCAP_BIT_ZERO = 0x00000000,
++ SSP_PCAP_BIT_ONE = 0x00000001,
++ SSP_PCAP_BIT_ERROR = 0xff000000
++}SSP_PCAP_BIT_STATUS;
++
++typedef enum pcapCDCClkType
++{
++ PCAP_CDC_CLK_IN_13M0 = 0x00000000,
++ PCAP_CDC_CLK_IN_15M36 = 0x00000040,
++ PCAP_CDC_CLK_IN_16M8 = 0x00000080,
++ PCAP_CDC_CLK_IN_19M44 = 0x000000c0,
++ PCAP_CDC_CLK_IN_26M0 = 0x00000100
++}PHONE_CDC_CLOCK_TYPE;
++
++typedef enum pcapST_SR
++{
++ PCAP_ST_SAMPLE_RATE_8K = 0x00000000,
++ PCAP_ST_SAMPLE_RATE_11K = 0x00000100,
++ PCAP_ST_SAMPLE_RATE_12K = 0x00000200,
++ PCAP_ST_SAMPLE_RATE_16K = 0x00000300,
++ PCAP_ST_SAMPLE_RATE_22K = 0x00000400,
++ PCAP_ST_SAMPLE_RATE_24K = 0x00000500,
++ PCAP_ST_SAMPLE_RATE_32K = 0x00000600,
++ PCAP_ST_SAMPLE_RATE_44K = 0x00000700,
++ PCAP_ST_SAMPLE_RATE_48K = 0x00000800
++}ST_SAMPLE_RATE_TYPE;
++
++typedef enum pcapST_BCLK
++{
++ PCAP_ST_BCLK_SLOT_16 = 0x00000000,
++ PCAP_ST_BCLK_SLOT_8 = 0x00008000,
++ PCAP_ST_BCLK_SLOT_4 = 0x00010000,
++ PCAP_ST_BCLK_SLOT_2 = 0x00018000,
++}ST_BCLK_TIME_SLOT_TYPE;
++
++typedef enum pcapST_CLK
++{
++ PCAP_ST_CLK_PLL_CLK_IN_13M0 = 0x00000000,
++ PCAP_ST_CLK_PLL_CLK_IN_15M36 = 0x00000004,
++ PCAP_ST_CLK_PLL_CLK_IN_16M8 = 0x00000008,
++ PCAP_ST_CLK_PLL_CLK_IN_19M44 = 0x0000000c,
++ PCAP_ST_CLK_PLL_CLK_IN_26M0 = 0x00000010,
++ PCAP_ST_CLK_PLL_CLK_IN_EXT_MCLK = 0x00000014,
++ PCAP_ST_CLK_PLL_CLK_IN_FSYNC = 0x00000018,
++ PCAP_ST_CLK_PLL_CLK_IN_BITCLK = 0x0000001c
++}ST_CLK_TYPE;
++
++typedef enum pcapDigitalAudioInterfaceMode
++{
++ PCAP_DIGITAL_AUDIO_INTERFACE_NORMAL = 0x00000000,
++ PCAP_DIGITAL_AUDIO_INTERFACE_NETWORK = 0x00002000,
++ PCAP_DIGITAL_AUDIO_INTERFACE_I2S = 0x00004000
++}DIG_AUD_MODE_TYPE;
++
++typedef enum pcapMono
++{
++ PCAP_MONO_PGA_R_L_STEREO = 0x00000000,
++ PCAP_MONO_PGA_RL = 0x00080000,
++ PCAP_MONO_PGA_RL_3DB = 0x00100000,
++ PCAP_MONO_PGA_RL_6DB = 0x00180000
++}MONO_TYPE;
++
++typedef enum pcapVibratorVoltageLevel
++{
++ PCAP_VIBRATOR_VOLTAGE_LEVEL0 = 0x00000000,
++ PCAP_VIBRATOR_VOLTAGE_LEVEL1 = 0x00100000,
++ PCAP_VIBRATOR_VOLTAGE_LEVEL2 = 0x00200000,
++ PCAP_VIBRATOR_VOLTAGE_LEVEL3 = 0x00300000
++}VibratorVoltageLevel_TYPE;
++
++typedef enum pcapTouchScreenMode
++{
++ PCAP_TS_POSITION_X_MEASUREMENT = 0x00000000,
++ PCAP_TS_POSITION_XY_MEASUREMENT = 0x00020000,
++ PCAP_TS_PRESSURE_MEASUREMENT = 0x00040000,
++ PCAP_TS_PLATE_X_MEASUREMENT = 0x00060000,
++ PCAP_TS_PLATE_Y_MEASUREMENT = 0x00080000,
++ PCAP_TS_STANDBY_MODE = 0x000a0000,
++ PCAP_TS_NONTS_MODE = 0x000c0000
++}TOUCH_SCREEN_DETECT_TYPE;
++
++typedef enum pcapADJRegister
++{
++ SSP_PCAP_ADJ_ISR_REGISTER = 0x00,
++ SSP_PCAP_ADJ_MSR_REGISTER = 0x01,
++ SSP_PCAP_ADJ_PSTAT_REGISTER = 0x02,
++ SSP_PCAP_ADJ_VREG2_REGISTER = 0x06,
++ SSP_PCAP_ADJ_AUX_VREG_REGISTER = 0x07,
++ SSP_PCAP_ADJ_BATT_DAC_REGISTER = 0x08,
++ SSP_PCAP_ADJ_ADC1_REGISTER = 0x09,
++ SSP_PCAP_ADJ_ADC2_REGISTER = 0x0a,
++ SSP_PCAP_ADJ_AUD_CODEC_REGISTER = 0x0b,
++ SSP_PCAP_ADJ_AUD_RX_AMPS_REGISTER = 0x0c,
++ SSP_PCAP_ADJ_ST_DAC_REGISTER = 0x0d,
++ SSP_PCAP_ADJ_BUSCTRL_REGISTER = 0x14,
++ SSP_PCAP_ADJ_PERIPH_REGISTER = 0x15,
++ SSP_PCAP_ADJ_LOWPWR_CTRL_REGISTER = 0x18,
++ SSP_PCAP_ADJ_TX_AUD_AMPS_REGISTER = 0x1a,
++ SSP_PCAP_ADJ_GP_REG_REGISTER = 0x1b
++}SSP_PCAP_SECONDARY_PROCESSOR_REGISTER;
++
++typedef enum pcapADJBit_SetType
++{
++ SSP_PCAP_ADJ_BIT_ISR_ADCDONEI = 0x00000001,
++ SSP_PCAP_ADJ_BIT_ISR_TSI = 0x00000002,
++ SSP_PCAP_ADJ_BIT_ISR_1HZI = 0x00000004,
++ SSP_PCAP_ADJ_BIT_ISR_WHI = 0x00000008,
++ SSP_PCAP_ADJ_BIT_ISR_WLI = 0x00000010,
++ SSP_PCAP_ADJ_BIT_ISR_TODAI = 0x00000020,
++ SSP_PCAP_ADJ_BIT_ISR_USB4VI = 0x00000040,
++ SSP_PCAP_ADJ_BIT_ISR_ONOFFI = 0x00000080,
++ SSP_PCAP_ADJ_BIT_ISR_ONOFF2I = 0x00000100,
++ SSP_PCAP_ADJ_BIT_ISR_USB1VI = 0x00000200,
++ SSP_PCAP_ADJ_BIT_ISR_MOBPORTI = 0x00000400,
++ SSP_PCAP_ADJ_BIT_ISR_MB2I = 0x00000800,
++ SSP_PCAP_ADJ_BIT_ISR_A1I = 0x00001000,
++ SSP_PCAP_ADJ_BIT_ISR_STI = 0x00002000,
++ SSP_PCAP_ADJ_BIT_ISR_PCI = 0x00004000,
++ SSP_PCAP_ADJ_BIT_ISR_WARMI = 0x00008000,
++ SSP_PCAP_ADJ_BIT_ISR_EOLI = 0x00010000,
++ SSP_PCAP_ADJ_BIT_ISR_CLKI = 0x00020000,
++ SSP_PCAP_ADJ_BIT_ISR_SYS_RSTI = 0x00040000,
++ SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I = 0x00100000,
++ SSP_PCAP_ADJ_BIT_ISR_SOFT_RESETI = 0x00200000,
++ SSP_PCAP_ADJ_BIT_ISR_MNEXBI = 0x00400000,
++
++ SSP_PCAP_ADJ_BIT_MSR_ADCDONEM = 0x04000001,
++ SSP_PCAP_ADJ_BIT_MSR_TSM = 0x04000002,
++ SSP_PCAP_ADJ_BIT_MSR_1HZM = 0x04000004,
++ SSP_PCAP_ADJ_BIT_MSR_WHM = 0x04000008,
++ SSP_PCAP_ADJ_BIT_MSR_WLM = 0x04000010,
++ SSP_PCAP_ADJ_BIT_MSR_TODAM = 0x04000020,
++ SSP_PCAP_ADJ_BIT_MSR_USB4VM = 0x04000040,
++ SSP_PCAP_ADJ_BIT_MSR_ONOFFM = 0x04000080,
++ SSP_PCAP_ADJ_BIT_MSR_ONOFF2M = 0x04000100,
++ SSP_PCAP_ADJ_BIT_MSR_USB1VM = 0x04000200,
++ SSP_PCAP_ADJ_BIT_MSR_MOBPORTM = 0x04000400,
++ SSP_PCAP_ADJ_BIT_MSR_MB2M = 0x04000800,
++ SSP_PCAP_ADJ_BIT_MSR_A1M = 0x04001000,
++ SSP_PCAP_ADJ_BIT_MSR_STM = 0x04002000,
++ SSP_PCAP_ADJ_BIT_MSR_PCM = 0x04004000,
++ SSP_PCAP_ADJ_BIT_MSR_WARMM = 0x04008000,
++ SSP_PCAP_ADJ_BIT_MSR_EOLM = 0x04010000,
++ SSP_PCAP_ADJ_BIT_MSR_CLKM = 0x04020000,
++ SSP_PCAP_ADJ_BIT_MSR_SYS_RSTM = 0x04040000,
++ SSP_PCAP_ADJ_BIT_MSR_ADCDONE2M = 0x04100000,
++ SSP_PCAP_ADJ_BIT_MSR_SOFT_RESETM = 0x04200000,
++ SSP_PCAP_ADJ_BIT_MSR_MNEXBM = 0x04400000,
++
++ SSP_PCAP_ADJ_BIT_PSTAT_USBDET_4V = 0x08000040,
++ SSP_PCAP_ADJ_BIT_PSTAT_ONOFFSNS = 0x08000080,
++ SSP_PCAP_ADJ_BIT_PSTAT_ONOFFSNS2 = 0x08000100,
++ SSP_PCAP_ADJ_BIT_PSTAT_USBDET_1V = 0x08000200,
++ SSP_PCAP_ADJ_BIT_PSTAT_MOBSENSB = 0x08000400,
++ SSP_PCAP_ADJ_BIT_PSTAT_MB2SNS = 0x08000800,
++ SSP_PCAP_ADJ_BIT_PSTAT_A1SNS = 0x08001000,
++ SSP_PCAP_ADJ_BIT_PSTAT_MSTB = 0x08002000,
++ SSP_PCAP_ADJ_BIT_PSTAT_EOL_STAT = 0x08010000,
++ SSP_PCAP_ADJ_BIT_PSTAT_CLK_STAT = 0x08020000,
++ SSP_PCAP_ADJ_BIT_PSTAT_SYS_RST = 0x08040000,
++ SSP_PCAP_ADJ_BIT_PSTAT_BATTFBSNS = 0x08080000,
++ SSP_PCAP_ADJ_BIT_PSTAT_BATT_DET_IN_SNS = 0x08200000,
++ SSP_PCAP_ADJ_BIT_PSTAT_MNEXBSNS = 0x08400000,
++ SSP_PCAP_ADJ_BIT_PSTAT_WARM_SYS_RST = 0x08800000,
++
++ SSP_PCAP_ADJ_BIT_VREG2_V1_STBY = 0x18000001,
++ SSP_PCAP_ADJ_BIT_VREG2_V2_STBY = 0x18000002,
++ SSP_PCAP_ADJ_BIT_VREG2_V3_STBY = 0x18000004,
++ SSP_PCAP_ADJ_BIT_VREG2_V4_STBY = 0x18000008,
++ SSP_PCAP_ADJ_BIT_VREG2_V5_STBY = 0x18000010,
++ SSP_PCAP_ADJ_BIT_VREG2_V6_STBY = 0x18000020,
++ SSP_PCAP_ADJ_BIT_VREG2_V7_STBY = 0x18000040,
++ SSP_PCAP_ADJ_BIT_VREG2_V8_STBY = 0x18000080,
++ SSP_PCAP_ADJ_BIT_VREG2_V9_STBY = 0x18000100,
++ SSP_PCAP_ADJ_BIT_VREG2_V10_STBY = 0x18000200,
++ SSP_PCAP_ADJ_BIT_VREG2_V1_LOWPWR = 0x18000400,
++ SSP_PCAP_ADJ_BIT_VREG2_V2_LOWPWR = 0x18000800,
++ SSP_PCAP_ADJ_BIT_VREG2_V3_LOWPWR = 0x18001000,
++ SSP_PCAP_ADJ_BIT_VREG2_V4_LOWPWR = 0x18002000,
++ SSP_PCAP_ADJ_BIT_VREG2_V5_LOWPWR = 0x18004000,
++ SSP_PCAP_ADJ_BIT_VREG2_V6_LOWPWR = 0x18008000,
++ SSP_PCAP_ADJ_BIT_VREG2_V7_LOWPWR = 0x18010000,
++ SSP_PCAP_ADJ_BIT_VREG2_V8_LOWPWR = 0x18020000,
++ SSP_PCAP_ADJ_BIT_VREG2_V9_LOWPWR = 0x18040000,
++ SSP_PCAP_ADJ_BIT_VREG2_V10_LOWPWR = 0x18080000,
++
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_EN = 0x1c000002,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_0 = 0x1c000004,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_1 = 0x1c000008,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN = 0x1c000010,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_0 = 0x1c000020,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_1 = 0x1c000040,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN = 0x1c000080,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_0 = 0x1c000100,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_1 = 0x1c000200,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_2 = 0x1c000400,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_3 = 0x1c000800,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX4_EN = 0x1c001000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX4_0 = 0x1c002000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX4_1 = 0x1c004000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VSIM2_EN = 0x1c010000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VSIM_EN = 0x1c020000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VSIM_0 = 0x1c040000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN = 0x1c080000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_0 = 0x1c100000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_1 = 0x1c200000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_STBY = 0x1c400000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_LOWPWR = 0x1c800000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_SW3_STBY = 0x1d000000,
++
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC0 = 0x20000001,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC1 = 0x20000002,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC2 = 0x20000004,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC3 = 0x20000008,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC4 = 0x20000010,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC5 = 0x20000020,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC6 = 0x20000040,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC7 = 0x20000080,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_B_FDBK = 0x20000100,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_EXT_ISENSE = 0x20000200,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN0 = 0x20000400,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN1 = 0x20000800,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN2 = 0x20001000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN3 = 0x20002000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_I_COIN = 0x20004000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_COIN_CH_EN = 0x20008000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_SEL0 = 0x20020000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_SEL1 = 0x20040000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_SEL2 = 0x20080000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_CMP_EN = 0x20100000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_BATT_DET_EN = 0x20200000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_THERMBIAS_CTRL = 0x20400000,
++
++ SSP_PCAP_ADJ_BIT_ADC1_ADEN = 0x24000001,
++ SSP_PCAP_ADJ_BIT_ADC1_RAND = 0x24000002,
++ SSP_PCAP_ADJ_BIT_ADC1_AD_SEL1 = 0x24000004,
++ SSP_PCAP_ADJ_BIT_ADC1_AD_SEL2 = 0x24000008,
++ SSP_PCAP_ADJ_BIT_ADC1_ADA10 = 0x24000010,
++ SSP_PCAP_ADJ_BIT_ADC1_ADA11 = 0x24000020,
++ SSP_PCAP_ADJ_BIT_ADC1_ADA12 = 0x24000040,
++ SSP_PCAP_ADJ_BIT_ADC1_ADA20 = 0x24000080,
++ SSP_PCAP_ADJ_BIT_ADC1_ADA21 = 0x24000100,
++ SSP_PCAP_ADJ_BIT_ADC1_ADA22 = 0x24000200,
++ SSP_PCAP_ADJ_BIT_ADC1_ATO0 = 0x24000400,
++ SSP_PCAP_ADJ_BIT_ADC1_ATO1 = 0x24000800,
++ SSP_PCAP_ADJ_BIT_ADC1_ATO2 = 0x24001000,
++ SSP_PCAP_ADJ_BIT_ADC1_ATO3 = 0x24002000,
++ SSP_PCAP_ADJ_BIT_ADC1_ATOX = 0x24004000,
++ SSP_PCAP_ADJ_BIT_ADC1_MTR1 = 0x24008000,
++ SSP_PCAP_ADJ_BIT_ADC1_MTR2 = 0x24010000,
++ SSP_PCAP_ADJ_BIT_ADC1_TS_M0 = 0x24020000,
++ SSP_PCAP_ADJ_BIT_ADC1_TS_M1 = 0x24040000,
++ SSP_PCAP_ADJ_BIT_ADC1_TS_M2 = 0x24080000,
++ SSP_PCAP_ADJ_BIT_ADC1_TS_REF_LOWPWR = 0x24100000,
++ SSP_PCAP_ADJ_BIT_ADC1_TS_REFENB = 0x24200000,
++ SSP_PCAP_ADJ_BIT_ADC1_BATT_I_POLARITY = 0x24400000,
++ SSP_PCAP_ADJ_BIT_ADC1_BATT_I_ADC = 0x24800000,
++
++ SSP_PCAP_ADJ_BIT_ADC2_ADD10 = 0x28000001,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD11 = 0x28000002,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD12 = 0x28000004,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD13 = 0x28000008,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD14 = 0x28000010,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD15 = 0x28000020,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD16 = 0x28000040,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD17 = 0x28000080,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD18 = 0x28000100,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD19 = 0x28000200,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD20 = 0x28000400,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD21 = 0x28000800,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD22 = 0x28001000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD23 = 0x28002000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD24 = 0x28004000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD25 = 0x28008000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD26 = 0x28010000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD27 = 0x28020000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD28 = 0x28040000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD29 = 0x28080000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADINC1 = 0x28100000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADINC2 = 0x28200000,
++ SSP_PCAP_ADJ_BIT_ADC2_ASC = 0x28400000,
++
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_AUDIHPF = 0x2c000001,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_SMB = 0x2c000002,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_AUDOHPF = 0x2c000004,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CD_TS = 0x2c000008,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_DLM = 0x2c000010,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_ADITH = 0x2c000020,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK0 = 0x2c000040,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK1 = 0x2c000080,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK2 = 0x2c000100,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CLK_INV = 0x2c000200,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_FS_INV = 0x2c000400,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_DF_RESET = 0x2c000800,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_EN = 0x2c001000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK_EN = 0x2c002000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_FS_8K_16K = 0x2c004000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_DIG_AUD_IN = 0x2c008000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CLK_IN_SEL = 0x2c010000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2_MUX = 0x2c020000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG0 = 0x2c040000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG1 = 0x2c080000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG2 = 0x2c100000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG3 = 0x2c200000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG4 = 0x2c400000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG_PRI_ADJ = 0x2c800000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_PRI_ADJ = 0x2c200000,
++
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1_EN = 0x30000001,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A2_EN = 0x30000002,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A4_EN = 0x30000010,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_ARIGHT_EN = 0x30000020,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_ALEFT_EN = 0x30000040,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_CD_BYP = 0x30000080,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_CDC_SW = 0x30000100,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_ST_DAC_SW = 0x30000200,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_PGA_IN_SW = 0x30000400,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_PGA_R_EN = 0x30000800,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_PGA_L_EN = 0x30001000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG0 = 0x30002000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG1 = 0x30004000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG2 = 0x30008000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG3 = 0x30010000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1CTRL = 0x30020000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_MONO0 = 0x30080000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_MONO1 = 0x30100000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG_PRI_ADJ = 0x30200000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_MONO_PRI_ADJ = 0x30400000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_RX_PRI_ADJ0 = 0x30800000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_RX_PRI_ADJ1 = 0x31000000,
++
++ SSP_PCAP_ADJ_BIT_ST_DAC_SMB_ST_DAC = 0x34000001,
++ SSP_PCAP_ADJ_BIT_ST_DAC_STDET_EN = 0x34000002,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK0 = 0x34000004,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK1 = 0x34000008,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK2 = 0x34000010,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK_EN = 0x34000020,
++ SSP_PCAP_ADJ_BIT_ST_DAC_DF_RESET_ST_DAC = 0x34000040,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_DAC_EN = 0x34000080,
++ SSP_PCAP_ADJ_BIT_ST_DAC_SR0 = 0x34000100,
++ SSP_PCAP_ADJ_BIT_ST_DAC_SR1 = 0x34000200,
++ SSP_PCAP_ADJ_BIT_ST_DAC_SR2 = 0x34000400,
++ SSP_PCAP_ADJ_BIT_ST_DAC_SR3 = 0x34000800,
++ SSP_PCAP_ADJ_BIT_ST_DAC_DIG_AUD_IN_ST_DAC = 0x34001000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_DIG_AUD_FS0 = 0x34002000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_DIG_AUD_FS1 = 0x34004000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_BCLK0 = 0x34008000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_BCLK1 = 0x34010000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK_INV = 0x34020000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_FS_INV = 0x34040000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_DAC_CLK_IN_SEL = 0x34080000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_DAC_PRI_ADJ = 0x35000000,
++
++ SSP_PCAP_ADJ_BIT_BUSCTRL_FSENB = 0x50000001,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_SUSPEND = 0x50000002,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU = 0x50000004,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PD = 0x50000008,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN = 0x50000010,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PS = 0x50000020,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_MSTR_EN = 0x50000040,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_VBUS_PD_ENB = 0x50000080,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_CURRLIM = 0x50000100,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB = 0x50000200,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_RS232_DIR = 0x50000400,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_SE0_CONN = 0x50000800,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PDM = 0x50001000,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_BUS_PRI_ADJ = 0x51000000,
++
++ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL0 = 0x54000001,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL1 = 0x54000002,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL2 = 0x54000004,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL3 = 0x54000008,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL4 = 0x54000010,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_EN = 0x54000020,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_EN = 0x54000040,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL0 = 0x54000080,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL1 = 0x54000100,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL2 = 0x54000200,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL3 = 0x54000400,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL0 = 0x54000800,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL1 = 0x54001000,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL2 = 0x54002000,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL3 = 0x54004000,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_I0 = 0x54008000,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_I1 = 0x54010000,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_I0 = 0x54020000,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_I1 = 0x54040000,
++ SSP_PCAP_ADJ_BIT_PERIPH_SKIP = 0x54080000,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL0 = 0x54100000,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL1 = 0x54200000,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL2 = 0x54400000,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL3 = 0x54800000,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL4 = 0x55000000,
++
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_STBY = 0x60000001,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_LOWPWR = 0x60000002,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX3_STBY = 0x60000004,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX3_LOWPWR = 0x60000008,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX4_STBY = 0x60000010,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX4_LOWPWR = 0x60000020,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VSIM_LOWPWR = 0x60000040,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VSIM2_LOWPWR = 0x60000080,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE00 = 0x60000100,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE01 = 0x60000200,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE10 = 0x60000400,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE11 = 0x60000800,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW10_DVS = 0x60001000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW11_DVS = 0x60002000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW12_DVS = 0x60004000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW13_DVS = 0x60008000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE00 = 0x60010000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE01 = 0x60020000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE10 = 0x60040000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE11 = 0x60080000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW20_DVS = 0x60100000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW21_DVS = 0x60200000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW22_DVS = 0x60400000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW23_DVS = 0x60800000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VC_STBY = 0x61000000,
++
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG0 = 0x68000001,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG1 = 0x68000002,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG2 = 0x68000004,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG3 = 0x68000008,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG4 = 0x68000010,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A3_EN = 0x68000020,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A3_MUX = 0x68000040,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A5_EN = 0x68000080,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A5_MUX = 0x68000100,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_EXT_MIC_MUX = 0x68000200,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_MB_ON2 = 0x68000400,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_MB_ON1 = 0x68000800,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A1ID_TX = 0x68001000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A1_CONFIG = 0x68002000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AHS_CONFIG = 0x68004000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A2_CONFIG = 0x68008000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIO_LOWPWR = 0x68080000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIO_STBY = 0x68100000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_V2_EN_2 = 0x68200000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG_PRI_ADJ = 0x68400000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_TX_PRI_ADJ0 = 0x68800000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_TX_PRI_ADJ1 = 0x69000000,
++
++ SSP_PCAP_ADJ_BIT_SYS_RST_CLR = 0x6c000001,
++ SSP_PCAP_ADJ_BIT_SYS_RST_MODE0 = 0x6c000002,
++ SSP_PCAP_ADJ_BIT_SYS_RST_MODE1 = 0x6c000004,
++ SSP_PCAP_ADJ_BIT_SYS_VFLASH_0 = 0x6c000008,
++ SSP_PCAP_ADJ_BIT_SYS_VFLASH_1 = 0x6c000010,
++ SSP_PCAP_ADJ_BIT_SYS_MID_SELECT = 0x6c000020,
++ SSP_PCAP_ADJ_BIT_SYS_MID_FET = 0x6c000040,
++ SSP_PCAP_ADJ_BIT_SYS_MAIN_LOW = 0x6c000080,
++ SSP_PCAP_ADJ_BIT_SYS_BATTFB_DIS = 0x6c000100,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG9 = 0x6c000200,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG10 = 0x6c000400,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG11 = 0x6c000800,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG12 = 0x6c001000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG13 = 0x6c002000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG14 = 0x6c004000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG15 = 0x6c008000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG16 = 0x6c010000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG17 = 0x6c020000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG18 = 0x6c040000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG19 = 0x6c080000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG20 = 0x6c100000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG21 = 0x6c200000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG22 = 0x6c400000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG23 = 0x6c800000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG24 = 0x6d000000
++
++}SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE;
++
++/************************ FUNCTION PROTOTYPES **************************************/
++extern void ssp_pcap_init(void);
++extern void ssp_pcap_release(void);
++
++extern void ssp_pcap_open(SSP_PCAP_INIT_DRIVER_TYPE portType);
++extern void ssp_pcap_close(void);
++
++extern void ssp_pcap_intoSleep_callBack(void);
++extern void ssp_pcap_wakeUp_callBack(void);
++
++
++extern SSP_PCAP_STATUS SSP_PCAP_write_data_to_PCAP(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER ssp_pcap_register,U32 ssp_pcap_register_value);
++extern SSP_PCAP_STATUS SSP_PCAP_read_data_from_PCAP(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER ssp_pcap_register,P_U32 p_ssp_pcap_register_value);
++
++extern SSP_PCAP_STATUS SSP_PCAP_bit_set(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
++extern SSP_PCAP_STATUS SSP_PCAP_bit_clean(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
++extern SSP_PCAP_BIT_STATUS SSP_PCAP_get_bit_from_buffer(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
++extern SSP_PCAP_BIT_STATUS SSP_PCAP_get_bit_from_PCAP(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
++extern U32 SSP_PCAP_get_register_value_from_buffer(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER ssp_pcap_register ) ;
++
++extern SSP_PCAP_STATUS SSP_PCAP_TSI_mode_set(TOUCH_SCREEN_DETECT_TYPE mode_Type );
++extern SSP_PCAP_STATUS SSP_PCAP_TSI_start_XY_read(void);
++extern SSP_PCAP_STATUS SSP_PCAP_TSI_get_XY_value(P_U16 p_x,P_U16 p_y);
++extern SSP_PCAP_STATUS SSP_PCAP_CDC_CLK_set(PHONE_CDC_CLOCK_TYPE clkType);
++
++extern SSP_PCAP_STATUS SSP_PCAP_CDC_SR_set(ST_SAMPLE_RATE_TYPE srType);
++extern SSP_PCAP_STATUS SSP_PCAP_BCLK_set(ST_BCLK_TIME_SLOT_TYPE bclkType);
++extern SSP_PCAP_STATUS SSP_PCAP_STCLK_set(ST_CLK_TYPE stClkType);
++extern SSP_PCAP_STATUS SSP_PCAP_DIG_AUD_FS_set(DIG_AUD_MODE_TYPE fsType);
++extern SSP_PCAP_STATUS SSP_PCAP_AUDIG_set(U32 audioInGain);
++extern SSP_PCAP_STATUS SSP_PCAP_MONO_set(MONO_TYPE monoType);
++extern SSP_PCAP_STATUS SSP_PCAP_AUDOG_set(U32 audioOutGain);
++
++extern SSP_PCAP_STATUS SSP_PCAP_V_VIB_level_set(VibratorVoltageLevel_TYPE VIBLevelType);
++extern SSP_PCAP_STATUS SSP_PCAP_configure_USB_UART_transeiver(SSP_PCAP_PORT_TYPE portType);
++extern SSP_PCAP_BIT_STATUS SSP_PCAP_get_audio_in_status(void);
++
++/* for log */
++extern void pcap_log_add_pure_data(u8* pData,u32 len);
++extern void pcap_log_add_data(u8* pData,u32 len);
++
++/* screen lock on/off handler */
++extern void ssp_pcap_screenlock_lock(u32 data);
++extern void ssp_pcap_screenlock_unlock(u32 data);
++
++#endif
+Index: linux-2.6.20.7/include/asm-arm/arch-pxa/irqs.h
+===================================================================
+--- linux-2.6.20.7.orig/include/asm-arm/arch-pxa/irqs.h 2007-04-21 08:26:32.000000000 -0300
++++ linux-2.6.20.7/include/asm-arm/arch-pxa/irqs.h 2007-04-21 08:26:37.000000000 -0300
+@@ -176,7 +176,8 @@
+ #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1)
+ #elif defined(CONFIG_ARCH_LUBBOCK) || \
+ defined(CONFIG_MACH_LOGICPD_PXA270) || \
+- defined(CONFIG_MACH_MAINSTONE)
++ defined(CONFIG_MACH_MAINSTONE) || \
++ defined(CONFIG_PXA_EZX)
+ #define NR_IRQS (IRQ_BOARD_END)
+ #else
+ #define NR_IRQS (IRQ_BOARD_START)
+@@ -222,3 +223,16 @@
+ #define IRQ_LOCOMO_GPIO_BASE (IRQ_BOARD_START + 1)
+ #define IRQ_LOCOMO_LT_BASE (IRQ_BOARD_START + 2)
+ #define IRQ_LOCOMO_SPI_BASE (IRQ_BOARD_START + 3)
++
++/* EZX Interrupts (CONFIG_EZX) */
++#define EZX_IRQ(x) (IRQ_BOARD_START + (x))
++#define EZX_IRQ_ADCDONE EZX_IRQ(0) /* PCAP */
++#define EZX_IRQ_TS EZX_IRQ(1) /* PCAP */
++#define EZX_IRQ_USB4V EZX_IRQ(2) /* PCAP */
++#define EZX_IRQ_USB1V EZX_IRQ(3) /* PCAP */
++#define EZX_IRQ_HEADJACK EZX_IRQ(4) /* PCAP */
++#define EZX_IRQ_MIC EZX_IRQ(5) /* PCAP */
++#define EZX_IRQ_ADCDONE2 EZX_IRQ(6) /* PCAP */
++#define EZX_IRQ_ONOFF EZX_IRQ(7)
++#define EZX_IRQ_ONOFF2 EZX_IRQ(8)
++
+Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.20.7.orig/arch/arm/mach-pxa/Makefile 2007-04-21 08:26:37.000000000 -0300
++++ linux-2.6.20.7/arch/arm/mach-pxa/Makefile 2007-04-21 08:45:09.000000000 -0300
+@@ -18,7 +18,7 @@
+ obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
+ obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
+ obj-$(CONFIG_MACH_TOSA) += tosa.o
+-obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o
++obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o
+
+ # Support for blinky lights
+ led-y := leds.o
+Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- linux-2.6.20.7.orig/arch/arm/mach-pxa/ezx.c 2007-04-21 08:26:37.000000000 -0300
++++ linux-2.6.20.7/arch/arm/mach-pxa/ezx.c 2007-04-21 08:51:15.000000000 -0300
+@@ -73,6 +73,24 @@
+ .clk_pcap = 1,
+ };
+
++/* PCAP */
++static struct resource ezxpcap_resources[] = {
++ [0] = {
++ .start = IRQ_GPIO1,
++ .end = IRQ_GPIO1,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device ezxpcap_device = {
++ .name = "ezx-pcap",
++ .id = -1,
++ .dev = {
++ .parent = &ezxssp_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(ezxpcap_resources),
++ .resource = ezxpcap_resources,
++};
+
+ /* OHCI Controller */
+
+@@ -236,7 +254,7 @@
+ };
+
+
+-static struct resource ezx_bp_resources[] = {
++static struct resource ezxbp_resources[] = {
+ [0] = {
+ .start = GPIO_BP_RDY,
+ .end = GPIO_BP_RDY,
+@@ -256,15 +274,15 @@
+ #endif
+ };
+
+-static struct platform_device ezx_bp_device = {
++static struct platform_device ezxbp_device = {
+ .name = "ezx-bp",
+ .dev = {
+ //.parent =
+ //.platform_data =
+ },
+ .id = -1,
+- .num_resources = ARRAY_SIZE(ezx_bp_resources),
+- .resource = ezx_bp_resources,
++ .num_resources = ARRAY_SIZE(ezxbp_resources),
++ .resource = ezxbp_resources,
+ };
+
+ static void __init ezx_init_gpio_irq(void)
+@@ -297,7 +315,8 @@
+
+ static struct platform_device *devices[] __initdata = {
+ &ezxssp_device,
+- &ezx_bp_device,
++ &ezxpcap_device,
++ &ezxbp_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-serial-bug-workaround.patch b/packages/linux/linux-ezx-2.6.20.7/ezx-serial-bug-workaround.patch
new file mode 100644
index 0000000000..9f30cc35fe
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/ezx-serial-bug-workaround.patch
@@ -0,0 +1,45 @@
+Work around some errata in the pxa serial code (copied from motorolas 2.4.x tree)
+
+Index: linux-2.6.20.7/drivers/serial/pxa.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/serial/pxa.c 2007-04-21 13:57:46.000000000 -0300
++++ linux-2.6.20.7/drivers/serial/pxa.c 2007-04-21 14:05:03.000000000 -0300
+@@ -29,6 +29,10 @@
+ #define SUPPORT_SYSRQ
+ #endif
+
++#define pxa_buggy_port(x) ({ \
++ int cpu_ver; asm("mrc%? p15, 0, %0, c0, c0" : "=r" (cpu_ver)); \
++ ((x) == PORT_PXA && (cpu_ver & ~1) == 0x69052100); })
++
+ #include <linux/module.h>
+ #include <linux/ioport.h>
+ #include <linux/init.h>
+@@ -195,7 +199,7 @@
+ if (uart_circ_empty(xmit))
+ serial_pxa_stop_tx(&up->port);
+ }
+-
++static inline irqreturn_t serial_pxa_irq(int, void *);
+ static void serial_pxa_start_tx(struct uart_port *port)
+ {
+ struct uart_pxa_port *up = (struct uart_pxa_port *)port;
+@@ -203,6 +207,8 @@
+ if (!(up->ier & UART_IER_THRI)) {
+ up->ier |= UART_IER_THRI;
+ serial_out(up, UART_IER, up->ier);
++ if (pxa_buggy_port(up->port.type))
++ serial_pxa_irq(up->port.irq, NULL);
+ }
+ }
+
+@@ -298,6 +304,9 @@
+
+ mcr |= up->mcr;
+
++ if (pxa_buggy_port(up->port.type) && up->port.irq != 0)
++ mcr ^= UART_MCR_OUT2;
++
+ serial_out(up, UART_MCR, mcr);
+ }
+
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-fix-init-errorpath.patch b/packages/linux/linux-ezx-2.6.20.7/mux-fix-init-errorpath.patch
new file mode 100644
index 0000000000..716ef86fd1
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/mux-fix-init-errorpath.patch
@@ -0,0 +1,20 @@
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 00:10:32.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 00:42:23.000000000 +0100
+@@ -811,7 +811,6 @@
+ /*init the related mux interface*/
+ if (!(bvd_ipc = kzalloc(sizeof(struct ipc_usb_data), GFP_KERNEL))) {
+ err("usb_ipc_init: Out of memory.");
+- usb_deregister(&usb_ipc_driver);
+ return -ENOMEM;
+ }
+ bvd_dbg("usb_ipc_init: Address of bvd_ipc:%p", bvd_ipc);
+@@ -819,7 +818,6 @@
+ if (!(bvd_ipc->xmit.buf = kmalloc(IPC_USB_XMIT_SIZE, GFP_KERNEL))) {
+ err("usb_ipc_init: Not enough memory for the input buffer.");
+ kfree(bvd_ipc);
+- usb_deregister(&usb_ipc_driver);
+ return -ENOMEM;
+ }
+ bvd_dbg("usb_ipc_init: bvd_ipc->xmit.buf address:%p",
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-fix-makefile.patch b/packages/linux/linux-ezx-2.6.20.7/mux-fix-makefile.patch
new file mode 100644
index 0000000000..f7884ca524
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/mux-fix-makefile.patch
@@ -0,0 +1,14 @@
+Index: linux-2.6.20.7/drivers/char/Makefile
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/Makefile 2007-04-22 10:51:23.000000000 +0200
++++ linux-2.6.20.7/drivers/char/Makefile 2007-04-22 10:52:48.000000000 +0200
+@@ -101,7 +101,8 @@
+ obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o
+ obj-$(CONFIG_TCG_TPM) += tpm/
+
+-obj-$(CONFIG_TS0710_MUX) += ts0710_mux.o ts0710_mux_usb.o
++obj-$(CONFIG_TS0710_MUX_USB) += ts0710_mux_usb.o
++obj-$(CONFIG_TS0710_MUX) += ts0710_mux.o
+
+
+ # Files generated that shall be removed upon make clean
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-fix-tty-driver.patch b/packages/linux/linux-ezx-2.6.20.7/mux-fix-tty-driver.patch
new file mode 100644
index 0000000000..2e1aabd952
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/mux-fix-tty-driver.patch
@@ -0,0 +1,125 @@
+Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux.c 2007-04-22 10:51:31.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-22 10:53:05.000000000 +0200
+@@ -241,7 +241,8 @@
+ static volatile __u8 mux_recv_info_flags[NR_MUXS];
+ static mux_recv_struct *mux_recv_queue = NULL;
+
+-static struct tty_driver mux_driver;
++// Local for 2.6?
++static struct tty_driver *mux_driver;
+
+ #ifdef USB_FOR_MUX
+ #define COMM_FOR_MUX_DRIVER usb_for_mux_driver
+@@ -3007,6 +3008,7 @@
+ #else
+ mux_tty[line]++;
+ dlci = tty2dlci[line];
++ mux_table[line] = tty;
+
+ /* if( dlci == 1 ) { */
+ /* Open server channel 0 first */
+@@ -3087,6 +3089,7 @@
+ }
+ }
+
++
+ retval = 0;
+ #endif
+ out:
+@@ -3894,43 +3897,50 @@
+ INIT_WORK(&receive_tqueue, receive_worker, NULL);
+ INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
+
+- memset(&mux_driver, 0, sizeof(struct tty_driver));
+- memset(&mux_tty, 0, sizeof(mux_tty));
+- mux_driver.magic = TTY_DRIVER_MAGIC;
+- mux_driver.driver_name = "ts0710mux";
+- mux_driver.name = "ts0710mux";
+- mux_driver.major = TS0710MUX_MAJOR;
+- mux_driver.minor_start = TS0710MUX_MINOR_START;
+- mux_driver.num = NR_MUXS;
+- mux_driver.type = TTY_DRIVER_TYPE_SERIAL;
+- mux_driver.subtype = SERIAL_TYPE_NORMAL;
+- mux_driver.init_termios = tty_std_termios;
+- mux_driver.init_termios.c_iflag = 0;
+- mux_driver.init_termios.c_oflag = 0;
+- mux_driver.init_termios.c_cflag = B38400 | CS8 | CREAD;
+- mux_driver.init_termios.c_lflag = 0;
+- mux_driver.flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
+-
+- mux_driver.ttys = mux_table;
+- mux_driver.termios = mux_termios;
+- mux_driver.termios_locked = mux_termios_locked;
++ mux_driver = alloc_tty_driver(NR_MUXS);
++ if (!mux_driver)
++ return -ENOMEM;
++
++ mux_driver->owner = THIS_MODULE;
++ mux_driver->driver_name = "ts0710mux";
++ mux_driver->name = "mux";
++ mux_driver->devfs_name = "mux";
++ mux_driver->major = TS0710MUX_MAJOR;
++ mux_driver->minor_start = TS0710MUX_MINOR_START;
++ mux_driver->type = TTY_DRIVER_TYPE_SERIAL;
++ mux_driver->subtype = SERIAL_TYPE_NORMAL;
++ mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
++
++ mux_driver->init_termios = tty_std_termios;
++ mux_driver->init_termios.c_iflag = 0;
++ mux_driver->init_termios.c_oflag = 0;
++ mux_driver->init_termios.c_cflag = B38400 | CS8 | CREAD;
++ mux_driver->init_termios.c_lflag = 0;
++
++// mux_driver.ttys = mux_table;
++ mux_driver->termios = mux_termios;
++ mux_driver->termios_locked = mux_termios_locked;
+ // mux_driver.driver_state = mux_state;
+- mux_driver.other = NULL;
++ mux_driver->other = NULL;
+
+- mux_driver.open = mux_open;
+- mux_driver.close = mux_close;
+- mux_driver.write = mux_write;
+- mux_driver.write_room = mux_write_room;
+- mux_driver.flush_buffer = mux_flush_buffer;
+- mux_driver.chars_in_buffer = mux_chars_in_buffer;
+- mux_driver.throttle = mux_throttle;
+- mux_driver.unthrottle = mux_unthrottle;
+- mux_driver.ioctl = mux_ioctl;
+- mux_driver.owner = THIS_MODULE;
++ mux_driver->open = mux_open;
++ mux_driver->close = mux_close;
++ mux_driver->write = mux_write;
++ mux_driver->write_room = mux_write_room;
++ mux_driver->flush_buffer = mux_flush_buffer;
++ mux_driver->chars_in_buffer = mux_chars_in_buffer;
++ mux_driver->throttle = mux_throttle;
++ mux_driver->unthrottle = mux_unthrottle;
++ mux_driver->ioctl = mux_ioctl;
+
+- if (tty_register_driver(&mux_driver))
++ // FIXME: No panic() here
++ if (tty_register_driver(mux_driver))
+ panic("Couldn't register mux driver");
+
++ for (j=0; j<NR_MUXS; j++)
++ tty_register_device(mux_driver, j, NULL);
++
++
+ COMM_MUX_DISPATCHER = mux_dispatcher;
+ COMM_MUX_SENDER = mux_sender;
+
+@@ -3964,7 +3974,10 @@
+ mux_recv_info[j] = 0;
+ }
+
+- if (tty_unregister_driver(&mux_driver))
++ for (j=0; j<NR_MUXS; j++)
++ tty_unregister_device(mux_driver, j);
++
++ if (tty_unregister_driver(mux_driver))
+ panic("Couldn't unregister mux driver");
+ }
+
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-fix.patch b/packages/linux/linux-ezx-2.6.20.7/mux-fix.patch
new file mode 100644
index 0000000000..b820762f41
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/mux-fix.patch
@@ -0,0 +1,164 @@
+Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux_usb.c 2007-04-21 18:07:45.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-21 20:55:13.000000000 +0200
+@@ -626,7 +626,6 @@
+ }
+
+ interface = &intf->cur_altsetting->desc;
+- endpoint = &intf->cur_altsetting->endpoint[0].desc;
+ /* Start checking for two bulk endpoints or ... FIXME: This is a future
+ * enhancement...*/
+ bvd_dbg("usb_ipc_probe: Number of Endpoints:%d",
+@@ -638,30 +637,26 @@
+
+ ep_cnt = have_bulk_in_mux = have_bulk_out_mux = 0;
+
+- bvd_dbg("usb_ipc_probe: endpoint[0] is:%x",
+- (&endpoint[0])->bEndpointAddress);
+- bvd_dbg("usb_ipc_probe: endpoint[1] is:%x ",
+- (&endpoint[1])->bEndpointAddress);
+-
+ while (ep_cnt < interface->bNumEndpoints) {
+-
+- if (!have_bulk_in_mux && IS_EP_BULK_IN(endpoint[ep_cnt])) {
+- bvd_dbg("usb_ipc_probe: bEndpointAddress(IN) is:%x ",
+- (&endpoint[ep_cnt])->bEndpointAddress);
+- have_bulk_in_mux =
+- (&endpoint[ep_cnt])->bEndpointAddress;
+- readsize = (&endpoint[ep_cnt])->wMaxPacketSize;
++ endpoint = &intf->cur_altsetting->endpoint[ep_cnt].desc;
++ bvd_dbg("usb_ipc_probe: endpoint[%i] is: %x", ep_cnt,
++ endpoint->bEndpointAddress);
++
++ if (!have_bulk_in_mux && IS_EP_BULK_IN(*endpoint)) {
++ bvd_dbg("usb_ipc_probe: bEndpointAddress(IN) is: %x ",
++ endpoint->bEndpointAddress);
++ have_bulk_in_mux = endpoint->bEndpointAddress;
++ readsize = endpoint->wMaxPacketSize;
+ bvd_dbg("usb_ipc_probe: readsize=%d", readsize);
+ ep_cnt++;
+ continue;
+ }
+
+- if (!have_bulk_out_mux && IS_EP_BULK_OUT(endpoint[ep_cnt])) {
+- bvd_dbg("usb_ipc_probe: bEndpointAddress(OUT) is:%x ",
+- (&endpoint[ep_cnt])->bEndpointAddress);
+- have_bulk_out_mux =
+- (&endpoint[ep_cnt])->bEndpointAddress;
+- writesize = (&endpoint[ep_cnt])->wMaxPacketSize;
++ if (!have_bulk_out_mux && IS_EP_BULK_OUT(*endpoint)) {
++ bvd_dbg("usb_ipc_probe: bEndpointAddress(OUT) is: %x ",
++ endpoint->bEndpointAddress);
++ have_bulk_out_mux = endpoint->bEndpointAddress;
++ writesize = endpoint->wMaxPacketSize;
+ bvd_dbg("usb_ipc_probe: writesize=%d", writesize);
+ ep_cnt++;
+ continue;
+@@ -718,21 +713,27 @@
+ bvd_ipc->bh_bp.func = usbipc_bh_bp_func;
+ bvd_ipc->bh_bp.data = (unsigned long) bvd_ipc;
+
++ bvd_dbg("after assignements");
+ /*Build a write urb*/
++ usb_init_urb(&bvd_ipc->writeurb_mux);
+ usb_fill_bulk_urb(&bvd_ipc->writeurb_mux, usbdev,
+ usb_sndbulkpipe(bvd_ipc->ipc_dev,
+ bvd_ipc->bulk_out_ep_mux),
+ bvd_ipc->obuf, writesize, usb_ipc_write_bulk,
+ bvd_ipc);
+ //bvd_ipc->writeurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
++ bvd_dbg("after write urb");
+
+ /*Build a read urb and send a IN token first time*/
++ usb_init_urb(&bvd_ipc->readurb_mux);
+ usb_fill_bulk_urb(&bvd_ipc->readurb_mux, usbdev,
+ usb_rcvbulkpipe(usbdev, bvd_ipc->bulk_in_ep_mux),
+ bvd_ipc->ibuf, readsize, usb_ipc_read_bulk, bvd_ipc);
+ //bvd_ipc->readurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
++ bvd_dbg("after read urb");
+
+- usb_driver_claim_interface(&usb_ipc_driver, intf, bvd_ipc);
++ //usb_driver_claim_interface(&usb_ipc_driver, intf, bvd_ipc);
++ bvd_dbg("after claim interface");
+ //usb_driver_claim_interface(&usb_ipc_driver, &ipccfg->interface[1], bvd_ipc);
+
+ // a2590c: dsplog is not supported by this driver
+@@ -740,6 +741,8 @@
+ // &ipccfg->interface[2], bvd_ipc);
+ /*send a IN token first time*/
+ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
++ bvd_dbg("after assignement");
++
+ if (usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
+ printk("usb_ipc_prob: usb_submit_urb(read mux bulk) failed!\n");
+
+@@ -750,7 +753,7 @@
+ tasklet_schedule(&bvd_ipc->bh);
+ }
+
+- printk("usb_ipc_probe: completed probe!");
++ printk("usb_ipc_probe: completed probe!\n");
+ usb_set_intfdata(intf, &bvd_ipc);
+ return 0;
+ }
+@@ -760,21 +763,23 @@
+ //struct usb_device *usbdev = interface_to_usbdev(intf);
+ struct ipc_usb_data *bvd_ipc_disconnect = usb_get_intfdata(intf);
+
+- printk("usb_ipc_disconnect:*** \n");
+
++ printk("usb_ipc_disconnect. bvd_ipc_disconnect address: %p\n", bvd_ipc_disconnect);
++
++ //FIXME: Memory leak?
+ if ((UHCRHPS3 & 0x4) == 0)
+- usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
++ // usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
+
+- usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
++ //usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
+
+ bvd_ipc_disconnect->ipc_flag = IPC_USB_PROBE_NOT_READY;
+ kfree(bvd_ipc_disconnect->ibuf);
+ kfree(bvd_ipc_disconnect->obuf);
+
+- usb_driver_release_interface(&usb_ipc_driver,
+- bvd_ipc_disconnect->ipc_dev->actconfig->interface[0]);
+- usb_driver_release_interface(&usb_ipc_driver,
+- bvd_ipc_disconnect->ipc_dev->actconfig->interface[1]);
++ //usb_driver_release_interface(&usb_ipc_driver,
++ // bvd_ipc_disconnect->ipc_dev->actconfig->interface[0]);
++ //usb_driver_release_interface(&usb_ipc_driver,
++ // bvd_ipc_disconnect->ipc_dev->actconfig->interface[1]);
+
+ //a2590c: dsplog interface is not supported by this driver
+ //usb_driver_release_interface(&usb_ipc_driver, &bvd_ipc_disconnect->ipc_dev->actconfig->interface[2]);
+@@ -803,13 +808,6 @@
+ int result;
+
+ bvd_dbg("init usb_ipc");
+- /* register driver at the USB subsystem */
+- result = usb_register(&usb_ipc_driver);
+- if (result < 0) {
+- err ("usb ipc driver could not be registered");
+- return result;
+- }
+-
+ /*init the related mux interface*/
+ if (!(bvd_ipc = kzalloc(sizeof(struct ipc_usb_data), GFP_KERNEL))) {
+ err("usb_ipc_init: Out of memory.");
+@@ -836,6 +834,14 @@
+ usb_for_mux_driver = &ipcusb_tty_driver;
+ usb_for_mux_tty = &ipcusb_tty;
+
++ /* register driver at the USB subsystem */
++ // this was called before bvd_ipc was allocated
++ result = usb_register(&usb_ipc_driver);
++ if (result < 0) {
++ err ("usb ipc driver could not be registered");
++ return result;
++ }
++
+ /* init timers for ipcusb read process and usb suspend */
+ init_timer(&ipcusb_timer);
+ ipcusb_timer.function = ipcusb_timeout;
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-ifdef-ezx-features.patch b/packages/linux/linux-ezx-2.6.20.7/mux-ifdef-ezx-features.patch
new file mode 100644
index 0000000000..f9ad633c76
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/mux-ifdef-ezx-features.patch
@@ -0,0 +1,85 @@
+diff -pruN linux-2.6.20.7/drivers/char/ts0710_mux_usb.c linux-2.6.20.7_x386/drivers/char/ts0710_mux_usb.c
+--- linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-22 10:51:38.000000000 +0200
++++ linux-2.6.20.7_x386/drivers/char/ts0710_mux_usb.c 2007-04-22 11:44:54.000000000 +0200
+@@ -35,10 +35,14 @@
+ #include <linux/list.h>
+ #include <linux/errno.h>
+ #include <asm/uaccess.h>
++
++#ifdef CONFIG_PXA_EZX
+ #include <asm/hardware.h>
+ #include <asm/arch/hardware.h>
+ #include <asm/arch-pxa/pxa-regs.h>
+ #include <asm/arch-pxa/ezx.h>
++#endif
++
+ #include <linux/slab.h>
+ #include <linux/miscdevice.h>
+ #include <linux/init.h>
+@@ -341,8 +345,10 @@ static void usb_ipc_write_bulk(struct ur
+
+ static void wakeup_timeout(unsigned long data)
+ {
++#ifdef CONFIG_PXA_EZX
+ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
+ bvd_dbg("wakup_timeout: send GPIO_MCU_INT_SW signal!");
++#endif
+ }
+
+ static void suspend_timeout(unsigned long data)
+@@ -353,10 +359,12 @@ static void suspend_timeout(unsigned lon
+ bvd_dbg("suspend_timeout: add the suspend timer again");
+ } else {
+ unlink_urbs(&bvd_ipc->readurb_mux);
++#ifdef CONFIG_PXA_EZX
+ UHCRHPS3 = 0x4;
+ mdelay(40);
+ bvd_dbg("suspend_timeout: send SUSPEND signal! UHCRHPS3=0x%x",
+ UHCRHPS3);
++#endif
+ }
+ }
+
+@@ -404,6 +412,7 @@ static void ipcusb_xmit_data(void)
+ bvd_ipc->writeurb_mux.transfer_buffer_length = buf_num;
+ bvd_dbg("ipcusb_xmit_data: copy data to write urb finished! ");
+
++#ifdef CONFIG_PXA_EZX
+ if ((UHCRHPS3 & 0x4) == 0x4) {
+ static int ret;
+ int time = 0;
+@@ -442,6 +451,7 @@ static void ipcusb_xmit_data(void)
+ "failed! status=%d\n", ret);
+ bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
+ }
++#endif
+
+ sumbit_times++;
+ bvd_ipc->write_finished_flag = 0;
+@@ -464,12 +474,16 @@ static void usbipc_bh_func(unsigned long
+
+ static void usbipc_bh_bp_func(unsigned long param)
+ {
++#ifdef CONFIG_PXA_EZX
+ if ((UHCRHPS3 & 0x4) == 0x4) {
+ UHCRHPS3 = 0x8;
++#endif
+ mdelay(40);
++#ifdef CONFIG_PXA_EZX
+ bvd_dbg("ipcusb_softint_send_readurb: Send RESUME signal! "
+ "UHCRHPS3=0x%x", UHCRHPS3);
+ }
++#endif
+ if (bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) {
+ //get_halted_bit();
+
+@@ -734,7 +748,9 @@ static void usb_ipc_disconnect(struct us
+ printk("usb_ipc_disconnect. bvd_ipc_disconnect address: %p\n", bvd_ipc_disconnect);
+
+ //FIXME: Memory leak?
++#ifdef CONFIG_PXA_EZX
+ if ((UHCRHPS3 & 0x4) == 0)
++#endif
+ // usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
+
+ //usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-linux-2.6.20.7-fix.patch b/packages/linux/linux-ezx-2.6.20.7/mux-linux-2.6.20.7-fix.patch
new file mode 100644
index 0000000000..bc6e3972b6
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/mux-linux-2.6.20.7-fix.patch
@@ -0,0 +1,96 @@
+diff -pruN linux-2.6.20.7/drivers/char/ts0710.h linux-2.6.20.7_x386/drivers/char/ts0710.h
+--- linux-2.6.20.7/drivers/char/ts0710.h 2007-04-22 10:51:23.000000000 +0200
++++ linux-2.6.20.7_x386/drivers/char/ts0710.h 2007-04-22 11:16:37.000000000 +0200
+@@ -45,7 +45,7 @@
+ * 11/18/2002 Modified
+ */
+
+-#include <linux/config.h>
++//#include <linux/config.h>
+ #include <linux/module.h>
+
+ #include <linux/errno.h>
+@@ -58,7 +58,7 @@
+ #include <linux/major.h>
+ #include <linux/mm.h>
+ #include <linux/init.h>
+-#include <linux/devfs_fs_kernel.h>
++//#include <linux/devfs_fs_kernel.h>
+
+ #include <asm/uaccess.h>
+ #include <asm/system.h>
+diff -pruN linux-2.6.20.7/drivers/char/ts0710_mux.c linux-2.6.20.7_x386/drivers/char/ts0710_mux.c
+--- linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-22 10:53:05.000000000 +0200
++++ linux-2.6.20.7_x386/drivers/char/ts0710_mux.c 2007-04-22 11:20:07.000000000 +0200
+@@ -46,7 +46,7 @@
+ * 11/18/2002 Second version
+ * 04/21/2004 Add GPRS PROC
+ */
+-#include <linux/config.h>
++//#include <linux/config.h>
+ #include <linux/module.h>
+ #include <linux/types.h>
+
+@@ -70,7 +70,7 @@
+ #include <linux/mm.h>
+ #include <linux/slab.h>
+ #include <linux/init.h>
+-#include <linux/devfs_fs_kernel.h>
++//#include <linux/devfs_fs_kernel.h>
+ //#include <syslog.h>
+
+ #include <asm/uaccess.h>
+@@ -1894,11 +1894,14 @@ int ts0710_recv_data(ts0710_con * ts0710
+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
+ queue_data = 1;
+ } else {
++ /*
+ if (test_bit
+ (TTY_DONT_FLIP, &tty->flags)) {
+ queue_data = 1;
+ post_recv = 1;
+- } else if (recv_info->total) {
++ } else
++ */
++ if (recv_info->total) {
+ queue_data = 1;
+ post_recv = 1;
+ } else if (recv_room < uih_len) {
+@@ -3499,11 +3502,14 @@ static void post_recv_worker(void *priva
+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
+ add_post_recv_queue(&post_recv_q, recv_info);
+ continue;
+- } else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
++ }
++ /*
++ else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
+ post_recv = 1;
+ add_post_recv_queue(&post_recv_q, recv_info);
+ continue;
+ }
++ */
+
+ flow_control = 0;
+ recv_packet2 = recv_info->mux_packet;
+@@ -3893,9 +3899,9 @@ static int __init mux_init(void)
+ }
+ post_recv_count_flag = 0;
+
+- INIT_WORK(&send_tqueue, send_worker, NULL);
+- INIT_WORK(&receive_tqueue, receive_worker, NULL);
+- INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
++ INIT_WORK(&send_tqueue, send_worker);
++ INIT_WORK(&receive_tqueue, receive_worker);
++ INIT_WORK(&post_recv_tqueue, post_recv_worker);
+
+ mux_driver = alloc_tty_driver(NR_MUXS);
+ if (!mux_driver)
+@@ -3904,7 +3910,7 @@ static int __init mux_init(void)
+ mux_driver->owner = THIS_MODULE;
+ mux_driver->driver_name = "ts0710mux";
+ mux_driver->name = "mux";
+- mux_driver->devfs_name = "mux";
++ //mux_driver->devfs_name = "mux";
+ mux_driver->major = TS0710MUX_MAJOR;
+ mux_driver->minor_start = TS0710MUX_MINOR_START;
+ mux_driver->type = TTY_DRIVER_TYPE_SERIAL;
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-remove-flipbuffers.patch b/packages/linux/linux-ezx-2.6.20.7/mux-remove-flipbuffers.patch
new file mode 100644
index 0000000000..d4781f9fc7
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/mux-remove-flipbuffers.patch
@@ -0,0 +1,269 @@
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 00:52:25.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 00:52:26.000000000 +0100
+@@ -133,6 +133,7 @@
+
+ struct circ_buf xmit; /* write cric bufffer */
+ struct list_head in_buf_list;
++ spinlock_t in_buf_lock;
+ char bulk_in_ep_mux,
+ bulk_out_ep_mux,
+ bulk_in_ep_dsplog;
+@@ -204,9 +205,39 @@
+ return;
+ }
+ memcpy(inbuf->body, (unsigned char*)urb->transfer_buffer, count);
++ spin_lock(&bvd_ipc->in_buf_lock);
+ list_add_tail(&inbuf->list, &bvd_ipc->in_buf_list);
++ spin_unlock(&bvd_ipc->in_buf_lock);
+ }
+
++int get_from_inbuf_list(const unsigned char *buf, int dst_count)
++{
++ int ret = 0;
++ spin_lock(&bvd_ipc->in_buf_lock);
++ if (!(list_empty(&bvd_ipc->in_buf_list))) {
++ int src_count;
++ buf_list_t *inbuf;
++ struct list_head *ptr;
++
++ ptr = bvd_ipc->in_buf_list.next;
++ inbuf = list_entry(ptr, buf_list_t, list);
++ src_count = inbuf->size;
++ if (dst_count >= src_count) {
++ memcpy(buf, inbuf->body, src_count);
++ ret = src_count;
++ list_del(ptr);
++ kfree(inbuf->body);
++ kfree(inbuf);
++ } else {
++ bvd_dbg("get_from_inbuf_list: not enough space in destination buffer");
++ }
++ }
++ spin_unlock(&bvd_ipc->in_buf_lock);
++
++ return ret;
++}
++EXPORT_SYMBOL(get_from_inbuf_list);
++
+ static void ipcusb_timeout(unsigned long data)
+ {
+ struct tty_struct *tty = &ipcusb_tty;
+@@ -214,13 +245,14 @@
+
+ bvd_dbg("ipcusb_timeout***");
+
++ spin_lock(&bvd_ipc->in_buf_lock);
+ while (!(list_empty(&bvd_ipc->in_buf_list))) {
+ int count;
+ buf_list_t *inbuf;
+ struct list_head *ptr = NULL;
+
+ ptr = bvd_ipc->in_buf_list.next;
+- inbuf = list_entry (ptr, buf_list_t, list);
++ inbuf = list_entry(ptr, buf_list_t, list);
+ count = inbuf->size;
+ if (tty_insert_flip_string(tty, inbuf->body, count) >= count) {
+ list_del(ptr);
+@@ -232,10 +264,12 @@
+ break;
+ }
+ }
++ spin_unlock(&bvd_ipc->in_buf_lock);
+
+ if (usb_mux_dispatcher)
+ usb_mux_dispatcher(tty); /**call Liu changhui's func.**/
+
++ spin_lock(&bvd_ipc->in_buf_lock);
+ if (list_empty(&bvd_ipc->in_buf_list)) {
+ urb->actual_length = 0;
+ urb->dev = bvd_ipc->ipc_dev;
+@@ -246,6 +280,7 @@
+ ipcusb_timer.data = (unsigned long)urb;
+ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
+ }
++ spin_unlock(&bvd_ipc->in_buf_lock);
+ }
+
+ static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
+@@ -266,69 +301,11 @@
+ if (count > 0 && ((*ipcusb_bp_to_ap) != NULL))
+ (*ipcusb_bp_to_ap)(urb->transfer_buffer, urb->actual_length);
+
+- if (!(list_empty(&bvd_ipc->in_buf_list))) {
+- int need_mux = 0;
+-
+- bvd_dbg("usb_ipc_read_bulk: some urbs in_buf_list");
+- if (count > 0) {
+- bvd_ipc->suspend_flag = 1;
+- append_to_inbuf_list(urb); /* append the current received urb */
+-#if 0
+- if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
+- {
+- last_jiff = jiffies;
+- queue_apm_event(KRNL_ICL, NULL);
+- }
+-#endif
+- }
+-
+- while (!(list_empty(&bvd_ipc->in_buf_list))) {
+- struct list_head* ptr = NULL;
+- ptr = bvd_ipc->in_buf_list.next;
+- inbuf = list_entry(ptr, buf_list_t, list);
+- count = inbuf->size;
+- need_mux = 1;
+-
+- tty_insert_flip_string(tty, inbuf->body, count);
+-
+- list_del(ptr);
+- kfree(inbuf->body);
+- inbuf->body = NULL;
+- kfree(inbuf);
+- }
+-
+- if (usb_mux_dispatcher && need_mux)
+- usb_mux_dispatcher(tty); /* call Liu changhui's func. */
+-
+- if (list_empty(&bvd_ipc->in_buf_list)) {
+- urb->actual_length = 0;
+- urb->dev = bvd_ipc->ipc_dev;
+- if (usb_submit_urb(urb, GFP_ATOMIC))
+- bvd_dbg("usb_ipc_read_bulk: "
+- "failed resubmitting read urb");
+- bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
+- } else {
+- ipcusb_timer.data = (unsigned long)urb;
+- mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
+- }
+- } else if (count > 0) {
+- bvd_dbg("usb_ipc_read_bulk: no urbs in_buf_list");
++ if (count > 0) {
++ bvd_dbg("usb_ipc_read_bulk: inserting buffer into in_buf_list");
+ bvd_ipc->suspend_flag = 1;
+
+- if (tty_insert_flip_string(tty, urb->transfer_buffer,
+- count) < count) {
+- bvd_ipc->suspend_flag = 1;
+- append_to_inbuf_list(urb);
+- ipcusb_timer.data = (unsigned long)urb;
+- mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
+-#if 0
+- if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
+- {
+- last_jiff = jiffies;
+- queue_apm_event(KRNL_ICL, NULL);
+- }
+-#endif
+- }
++ append_to_inbuf_list(urb);
+
+ if (usb_mux_dispatcher)
+ usb_mux_dispatcher(tty); /* call Liu changhui's func. */
+@@ -337,13 +314,6 @@
+ urb->dev = bvd_ipc->ipc_dev;
+ if (usb_submit_urb(urb, GFP_ATOMIC))
+ bvd_dbg("failed resubmitting read urb");
+-#if 0
+- if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
+- {
+- last_jiff = jiffies;
+- queue_apm_event(KRNL_ICL, NULL);
+- }
+-#endif
+ bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
+ }
+
+@@ -705,7 +675,8 @@
+ bvd_ipc->bulk_out_ep_mux= have_bulk_out_mux;
+ bvd_ipc->ipc_dev = usbdev;
+ bvd_ipc->writesize = writesize;
+- INIT_LIST_HEAD (&bvd_ipc->in_buf_list);
++ INIT_LIST_HEAD(&bvd_ipc->in_buf_list);
++ bvd_ipc->in_buf_lock = SPIN_LOCK_UNLOCKED;
+
+ bvd_ipc->bh.func = usbipc_bh_func;
+ bvd_ipc->bh.data = (unsigned long) bvd_ipc;
+Index: linux-2.6.16/drivers/char/ts0710_mux.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux.c 2007-01-17 00:52:23.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux.c 2007-01-17 00:52:26.000000000 +0100
+@@ -3149,7 +3149,7 @@
+ static void receive_worker(void *private_)
+ {
+ struct tty_struct *tty = COMM_FOR_MUX_TTY;
+- int i, count;
++ int i, count, tbuf_free, tbuf_read;
+ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
+ static unsigned char *tbuf_ptr = &tbuf[0];
+ static unsigned char *start_flag = 0;
+@@ -3167,29 +3167,39 @@
+
+ UNUSED_PARAM(private_);
+
+- if (!tty)
+- return;
++ if (!tty)
++ return;
++
++ while (1) {
++ tbuf_free = TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf);
++ TS0710_PRINTK("Reading max %i bytes from ts0710_mux_usb inbuf.\n", tbuf_free);
++ tbuf_read = get_from_inbuf_list(tbuf_ptr, tbuf_free);
++ if (tbuf_read == 0) {
++ break;
++ } else {
++ TS0710_PRINTK("Read %i bytes.\n", tbuf_read);
++ };
++ tbuf_ptr += tbuf_read;
++ };
++
++ count = (tbuf_ptr - tbuf);
++
++ // Should be impossible?
++ //if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
++ // TS0710_PRINTK
++ // ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
++ // count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
++ //}
+
+ #ifdef USB_FOR_MUX
+- TS0710_DEBUG("Receive following bytes from IPC-USB");
++ TS0710_DEBUG("Received following bytes from IPC-USB");
+ #else
+- TS0710_DEBUG("Receive following bytes from UART");
++ TS0710_DEBUG("Received following bytes from UART");
+ #endif
+-
+- TS0710_DEBUGHEX(cp, count);
+-
+- if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
+- TS0710_PRINTK
+- ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
+- count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
+- }
+-
+- count = tty_buffer_request_room(tty, count);
+-
+- for (i = 0; i < count; i++)
+- tty_insert_flip_char(tty, tbuf_ptr[i], TTY_NORMAL);
+-
+- tbuf_ptr += count;
++ TS0710_DEBUGHEX(tbuf, count);
++
++ //gets updated above
++ //tbuf_ptr += count;
+ search = &tbuf[0];
+
+ if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.h
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.h 2007-01-17 00:52:23.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.h 2007-01-17 00:52:26.000000000 +0100
+@@ -27,3 +27,6 @@
+ extern struct tty_struct *usb_for_mux_tty;
+ extern void (*usb_mux_dispatcher)(struct tty_struct *tty);
+ extern void (*usb_mux_sender)(void);
++
++extern int get_from_inbuf_list(const unsigned char *buf, int dst_count);
++
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-remove-get_halted_bit.patch b/packages/linux/linux-ezx-2.6.20.7/mux-remove-get_halted_bit.patch
new file mode 100644
index 0000000000..0ebe27d03b
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/mux-remove-get_halted_bit.patch
@@ -0,0 +1,22 @@
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 01:06:21.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 01:06:31.000000000 +0100
+@@ -461,7 +461,7 @@
+ ipcusb_xmit_data();
+ }
+
+-extern void get_halted_bit(void);
++//extern void get_halted_bit(void);
+
+ static void usbipc_bh_bp_func(unsigned long param)
+ {
+@@ -472,7 +472,7 @@
+ "UHCRHPS3=0x%x", UHCRHPS3);
+ }
+ if (bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) {
+- get_halted_bit();
++ //get_halted_bit();
+
+ /*send a IN token*/
+ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-remove-usbh_finished_resume.patch b/packages/linux/linux-ezx-2.6.20.7/mux-remove-usbh_finished_resume.patch
new file mode 100644
index 0000000000..c415ded428
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/mux-remove-usbh_finished_resume.patch
@@ -0,0 +1,22 @@
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 01:12:23.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 01:12:37.000000000 +0100
+@@ -97,7 +97,6 @@
+ static int sumbit_times = 0;
+ static int callback_times = 0;
+ //static unsigned long last_jiff = 0;
+-extern int usbh_finished_resume;
+ /*end global values defined*/
+
+ MODULE_AUTHOR(DRIVER_AUTHOR);
+@@ -546,9 +545,6 @@
+ void usb_send_readurb(void)
+ {
+ //printk("usb_send_readurb: begining!UHCRHPS3=0x%x, usbh_finished_resume=%d\n", UHCRHPS3, usbh_finished_resume);
+-
+- if (usbh_finished_resume == 0)
+- return;
+
+ tasklet_schedule(&bvd_ipc->bh_bp);
+ }
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux_cli.patch b/packages/linux/linux-ezx-2.6.20.7/mux_cli.patch
new file mode 100644
index 0000000000..c86e3b40e4
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/mux_cli.patch
@@ -0,0 +1,5395 @@
+Index: linux-2.6.20.7/drivers/char/Kconfig
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/Kconfig 2007-04-13 22:48:14.000000000 +0200
++++ linux-2.6.20.7/drivers/char/Kconfig 2007-04-21 18:04:56.000000000 +0200
+@@ -1030,5 +1030,17 @@
+ sysfs directory, /sys/devices/platform/telco_clock, with a number of
+ files for controlling the behavior of this hardware.
+
++config TS0710_MUX
++ tristate "GSM TS 07.10 Multiplex driver"
++ help
++ This implements the GSM 07.10 multiplex.
++
++config TS0710_MUX_USB
++ tristate "Motorola USB support for TS 07.10 Multiplex driver"
++ depends on TS0710_MUX
++ help
++ This ads support for TS 07.10 over USB, as found in motorola
++ Smartphones.
++
+ endmenu
+
+Index: linux-2.6.20.7/drivers/char/Makefile
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/Makefile 2007-04-13 22:48:14.000000000 +0200
++++ linux-2.6.20.7/drivers/char/Makefile 2007-04-21 18:06:42.000000000 +0200
+@@ -101,6 +101,9 @@
+ obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o
+ obj-$(CONFIG_TCG_TPM) += tpm/
+
++obj-$(CONFIG_TS0710_MUX) += ts0710_mux.o ts0710_mux_usb.o
++
++
+ # Files generated that shall be removed upon make clean
+ clean-files := consolemap_deftbl.c defkeymap.c
+
+Index: linux-2.6.20.7/drivers/char/ts0710.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/drivers/char/ts0710.h 2007-04-21 18:04:56.000000000 +0200
+@@ -0,0 +1,368 @@
++/*
++ * File: ts0710.h
++ *
++ * Portions derived from rfcomm.c, original header as follows:
++ *
++ * Copyright (C) 2000, 2001 Axis Communications AB
++ *
++ * Author: Mats Friden <mats.friden@axis.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.
++ *
++ * Exceptionally, Axis Communications AB grants discretionary and
++ * conditional permissions for additional use of the text contained
++ * in the company's release of the AXIS OpenBT Stack under the
++ * provisions set forth hereunder.
++ *
++ * Provided that, if you use the AXIS OpenBT Stack with other files,
++ * that do not implement functionality as specified in the Bluetooth
++ * System specification, to produce an executable, this does not by
++ * itself cause the resulting executable to be covered by the GNU
++ * General Public License. Your use of that executable is in no way
++ * restricted on account of using the AXIS OpenBT Stack code with it.
++ *
++ * This exception does not however invalidate any other reasons why
++ * the executable file might be covered by the provisions of the GNU
++ * General Public License.
++ *
++ */
++/*
++ * Copyright (C) 2002 Motorola
++ *
++ * 07/28/2002 Initial version based on rfcomm.c
++ * 11/18/2002 Modified
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++
++#include <linux/errno.h>
++#include <linux/sched.h>
++#include <linux/interrupt.h>
++#include <linux/tty.h>
++#include <linux/tty_flip.h>
++#include <linux/fcntl.h>
++#include <linux/string.h>
++#include <linux/major.h>
++#include <linux/mm.h>
++#include <linux/init.h>
++#include <linux/devfs_fs_kernel.h>
++
++#include <asm/uaccess.h>
++#include <asm/system.h>
++#include <asm/bitops.h>
++
++#include <asm/byteorder.h>
++#include <asm/types.h>
++
++#define TS0710_MAX_CHN 14
++
++#define SET_PF(ctr) ((ctr) | (1 << 4))
++#define CLR_PF(ctr) ((ctr) & 0xef)
++#define GET_PF(ctr) (((ctr) >> 4) & 0x1)
++
++#define GET_PN_MSG_FRAME_SIZE(pn) ( ((pn)->frame_sizeh << 8) | ((pn)->frame_sizel))
++#define SET_PN_MSG_FRAME_SIZE(pn, size) ({ (pn)->frame_sizel = (size) & 0xff; \
++ (pn)->frame_sizeh = (size) >> 8; })
++
++#define GET_LONG_LENGTH(a) ( ((a).h_len << 7) | ((a).l_len) )
++#define SET_LONG_LENGTH(a, length) ({ (a).ea = 0; \
++ (a).l_len = length & 0x7F; \
++ (a).h_len = (length >> 7) & 0xFF; })
++
++#define SHORT_CRC_CHECK 3
++#define LONG_CRC_CHECK 4
++
++/* FIXME: Should thsi one be define here? */
++#define SHORT_PAYLOAD_SIZE 127
++
++#define EA 1
++#define FCS_SIZE 1
++#define FLAG_SIZE 2
++
++#define TS0710_MAX_HDR_SIZE 5
++#define DEF_TS0710_MTU 256
++
++#define TS0710_BASIC_FLAG 0xF9
++/* the control field */
++#define SABM 0x2f
++#define SABM_SIZE 4
++#define UA 0x63
++#define UA_SIZE 4
++#define DM 0x0f
++#define DISC 0x43
++#define UIH 0xef
++
++/* the type field in a multiplexer command packet */
++#define TEST 0x8
++#define FCON 0x28
++#define FCOFF 0x18
++#define MSC 0x38
++#define RPN 0x24
++#define RLS 0x14
++#define PN 0x20
++#define NSC 0x4
++
++/* V.24 modem control signals */
++#define FC 0x2
++#define RTC 0x4
++#define RTR 0x8
++#define IC 0x40
++#define DV 0x80
++
++#define CTRL_CHAN 0 /* The control channel is defined as DLCI 0 */
++#define MCC_CMD 1 /* Multiplexer command cr */
++#define MCC_RSP 0 /* Multiplexer response cr */
++
++#ifdef __LITTLE_ENDIAN_BITFIELD
++
++typedef struct {
++ __u8 ea:1;
++ __u8 cr:1;
++ __u8 d:1;
++ __u8 server_chn:5;
++} __attribute__ ((packed)) address_field;
++
++typedef struct {
++ __u8 ea:1;
++ __u8 len:7;
++} __attribute__ ((packed)) short_length;
++
++typedef struct {
++ __u8 ea:1;
++ __u8 l_len:7;
++ __u8 h_len;
++} __attribute__ ((packed)) long_length;
++
++typedef struct {
++ address_field addr;
++ __u8 control;
++ short_length length;
++} __attribute__ ((packed)) short_frame_head;
++
++typedef struct {
++ short_frame_head h;
++ __u8 data[0];
++} __attribute__ ((packed)) short_frame;
++
++typedef struct {
++ address_field addr;
++ __u8 control;
++ long_length length;
++ __u8 data[0];
++} __attribute__ ((packed)) long_frame_head;
++
++typedef struct {
++ long_frame_head h;
++ __u8 data[0];
++} __attribute__ ((packed)) long_frame;
++
++/* Typedefinitions for structures used for the multiplexer commands */
++typedef struct {
++ __u8 ea:1;
++ __u8 cr:1;
++ __u8 type:6;
++} __attribute__ ((packed)) mcc_type;
++
++typedef struct {
++ mcc_type type;
++ short_length length;
++ __u8 value[0];
++} __attribute__ ((packed)) mcc_short_frame_head;
++
++typedef struct {
++ mcc_short_frame_head h;
++ __u8 value[0];
++} __attribute__ ((packed)) mcc_short_frame;
++
++typedef struct {
++ mcc_type type;
++ long_length length;
++ __u8 value[0];
++} __attribute__ ((packed)) mcc_long_frame_head;
++
++typedef struct {
++ mcc_long_frame_head h;
++ __u8 value[0];
++} __attribute__ ((packed)) mcc_long_frame;
++
++/* MSC-command */
++typedef struct {
++ __u8 ea:1;
++ __u8 fc:1;
++ __u8 rtc:1;
++ __u8 rtr:1;
++ __u8 reserved:2;
++ __u8 ic:1;
++ __u8 dv:1;
++} __attribute__ ((packed)) v24_sigs;
++
++typedef struct {
++ __u8 ea:1;
++ __u8 b1:1;
++ __u8 b2:1;
++ __u8 b3:1;
++ __u8 len:4;
++} __attribute__ ((packed)) brk_sigs;
++
++typedef struct {
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ address_field dlci;
++ __u8 v24_sigs;
++ //brk_sigs break_signals;
++ __u8 fcs;
++} __attribute__ ((packed)) msc_msg;
++
++#if 0
++/* conflict with termios.h */
++/* RPN command */
++#define B2400 0
++#define B4800 1
++#define B7200 2
++#define B9600 3
++#define B19200 4
++#define B38400 5
++#define B57600 6
++#define B115200 7
++#define D230400 8
++#endif
++
++/*
++typedef struct{
++ __u8 bit_rate:1;
++ __u8 data_bits:1;
++ __u8 stop_bit:1;
++ __u8 parity:1;
++ __u8 parity_type:1;
++ __u8 xon_u8:1;
++ __u8 xoff_u8:1;
++ __u8 res1:1;
++ __u8 xon_input:1;
++ __u8 xon_output:1;
++ __u8 rtr_input:1;
++ __u8 rtr_output:1;
++ __u8 rtc_input:1;
++ __u8 rtc_output:1;
++ __u8 res2:2;
++} __attribute__((packed)) parameter_mask;
++
++typedef struct{
++ __u8 bit_rate;
++ __u8 data_bits:2;
++ __u8 stop_bit:1;
++ __u8 parity:1;
++ __u8 parity_type:2;
++ __u8 res1:2;
++ __u8 xon_input:1;
++ __u8 xon_output:1;
++ __u8 rtr_input:1;
++ __u8 rtr_output:1;
++ __u8 rtc_input:1;
++ __u8 rtc_output:1;
++ __u8 res2:2;
++ __u8 xon_u8;
++ __u8 xoff_u8;
++ parameter_mask pm;
++} __attribute__((packed)) rpn_values;
++
++typedef struct{
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ address_field dlci;
++ rpn_values rpn_val;
++ __u8 fcs;
++} __attribute__((packed)) rpn_msg;
++*/
++
++/* RLS-command */
++/*
++typedef struct{
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ address_field dlci;
++ __u8 error:4;
++ __u8 res:4;
++ __u8 fcs;
++} __attribute__((packed)) rls_msg;
++*/
++
++/* PN-command */
++typedef struct {
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ __u8 dlci:6;
++ __u8 res1:2;
++ __u8 frame_type:4;
++ __u8 credit_flow:4;
++ __u8 prior:6;
++ __u8 res2:2;
++ __u8 ack_timer;
++ __u8 frame_sizel;
++ __u8 frame_sizeh;
++ __u8 max_nbrof_retrans;
++ __u8 credits;
++ __u8 fcs;
++} __attribute__ ((packed)) pn_msg;
++
++/* NSC-command */
++typedef struct {
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ mcc_type command_type;
++ __u8 fcs;
++} __attribute__ ((packed)) nsc_msg;
++
++#else
++#error Only littel-endianess supported now!
++#endif
++
++enum {
++ REJECTED = 0,
++ DISCONNECTED,
++ CONNECTING,
++ NEGOTIATING,
++ CONNECTED,
++ DISCONNECTING,
++ FLOW_STOPPED
++};
++
++enum ts0710_events {
++ CONNECT_IND,
++ CONNECT_CFM,
++ DISCONN_CFM
++};
++
++typedef struct {
++ volatile __u8 state;
++ volatile __u8 flow_control;
++ volatile __u8 initiated;
++ volatile __u8 initiator;
++ volatile __u16 mtu;
++ wait_queue_head_t open_wait;
++ wait_queue_head_t close_wait;
++} dlci_struct;
++
++/* user space interfaces */
++typedef struct {
++ volatile __u8 initiator;
++ volatile __u8 c_dlci;
++ volatile __u16 mtu;
++ volatile __u8 be_testing;
++ volatile __u32 test_errs;
++ wait_queue_head_t test_wait;
++
++ dlci_struct dlci[TS0710_MAX_CHN];
++} ts0710_con;
+Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-21 18:08:02.000000000 +0200
+@@ -0,0 +1,3966 @@
++/*
++ * File: mux_driver.c
++ *
++ * Portions derived from rfcomm.c, original header as follows:
++ *
++ * Copyright (C) 2000, 2001 Axis Communications AB
++ *
++ * Author: Mats Friden <mats.friden@axis.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.
++ *
++ * Exceptionally, Axis Communications AB grants discretionary and
++ * conditional permissions for additional use of the text contained
++ * in the company's release of the AXIS OpenBT Stack under the
++ * provisions set forth hereunder.
++ *
++ * Provided that, if you use the AXIS OpenBT Stack with other files,
++ * that do not implement functionality as specified in the Bluetooth
++ * System specification, to produce an executable, this does not by
++ * itself cause the resulting executable to be covered by the GNU
++ * General Public License. Your use of that executable is in no way
++ * restricted on account of using the AXIS OpenBT Stack code with it.
++ *
++ * This exception does not however invalidate any other reasons why
++ * the executable file might be covered by the provisions of the GNU
++ * General Public License.
++ *
++ */
++/*
++ * Copyright (C) 2002-2004 Motorola
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ *
++ * 07/28/2002 Initial version
++ * 11/18/2002 Second version
++ * 04/21/2004 Add GPRS PROC
++ */
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/types.h>
++
++#include <linux/kernel.h>
++#include <linux/proc_fs.h>
++
++#define USB_FOR_MUX
++
++#ifndef USB_FOR_MUX
++#include <linux/serial.h>
++#endif
++
++#include <linux/errno.h>
++#include <linux/sched.h>
++#include <linux/interrupt.h>
++#include <linux/tty.h>
++#include <linux/tty_flip.h>
++#include <linux/fcntl.h>
++#include <linux/string.h>
++#include <linux/major.h>
++#include <linux/mm.h>
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/devfs_fs_kernel.h>
++//#include <syslog.h>
++
++#include <asm/uaccess.h>
++#include <asm/system.h>
++#include <asm/bitops.h>
++
++#ifdef USB_FOR_MUX
++//#include <linux/usb.h>
++#include "ts0710_mux_usb.h"
++#endif
++
++#include "ts0710.h"
++#include "ts0710_mux.h"
++
++#define TS0710MUX_GPRS_SESSION_MAX 2
++#define TS0710MUX_MAJOR 250
++#define TS0710MUX_MINOR_START 0
++#define NR_MUXS 16
++
++ /*#define TS0710MUX_TIME_OUT 30 *//* 300ms */
++#define TS0710MUX_TIME_OUT 250 /* 2500ms, for BP UART hardware flow control AP UART */
++
++#define TS0710MUX_IO_DLCI_FC_ON 0x54F2
++#define TS0710MUX_IO_DLCI_FC_OFF 0x54F3
++#define TS0710MUX_IO_FC_ON 0x54F4
++#define TS0710MUX_IO_FC_OFF 0x54F5
++
++#define TS0710MUX_MAX_BUF_SIZE 2048
++
++#define TS0710MUX_SEND_BUF_OFFSET 10
++#define TS0710MUX_SEND_BUF_SIZE (DEF_TS0710_MTU + TS0710MUX_SEND_BUF_OFFSET + 34)
++#define TS0710MUX_RECV_BUF_SIZE TS0710MUX_SEND_BUF_SIZE
++
++/*For BP UART problem Begin*/
++#ifdef TS0710SEQ2
++#define ACK_SPACE 66 /* 6 * 11(ACK frame size) */
++#else
++#define ACK_SPACE 42 /* 6 * 7(ACK frame size) */
++#endif
++/*For BP UART problem End*/
++
++ /*#define TS0710MUX_SERIAL_BUF_SIZE (DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE)*//* For BP UART problem */
++#define TS0710MUX_SERIAL_BUF_SIZE (DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE + ACK_SPACE) /* For BP UART problem: ACK_SPACE */
++
++#define TS0710MUX_MAX_TOTAL_FRAME_SIZE (DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE + FLAG_SIZE)
++#define TS0710MUX_MAX_CHARS_IN_BUF 65535
++#define TS0710MUX_THROTTLE_THRESHOLD DEF_TS0710_MTU
++
++#define TEST_PATTERN_SIZE 250
++
++#define CMDTAG 0x55
++#define DATATAG 0xAA
++
++#define ACK 0x4F /*For BP UART problem */
++
++/*For BP UART problem Begin*/
++#ifdef TS0710SEQ2
++#define FIRST_BP_SEQ_OFFSET 1 /*offset from start flag */
++#define SECOND_BP_SEQ_OFFSET 2 /*offset from start flag */
++#define FIRST_AP_SEQ_OFFSET 3 /*offset from start flag */
++#define SECOND_AP_SEQ_OFFSET 4 /*offset from start flag */
++#define SLIDE_BP_SEQ_OFFSET 5 /*offset from start flag */
++#define SEQ_FIELD_SIZE 5
++#else
++#define SLIDE_BP_SEQ_OFFSET 1 /*offset from start flag */
++#define SEQ_FIELD_SIZE 1
++#endif
++
++#define ADDRESS_FIELD_OFFSET (1 + SEQ_FIELD_SIZE) /*offset from start flag */
++/*For BP UART problem End*/
++
++#ifndef UNUSED_PARAM
++#define UNUSED_PARAM(v) (void)(v)
++#endif
++
++#define TS0710MUX_GPRS1_DLCI 7
++#define TS0710MUX_GPRS2_DLCI 8
++
++#define TS0710MUX_GPRS1_RECV_COUNT_IDX 0
++#define TS0710MUX_GPRS1_SEND_COUNT_IDX 1
++#define TS0710MUX_GPRS2_RECV_COUNT_IDX 2
++#define TS0710MUX_GPRS2_SEND_COUNT_IDX 3
++#define TS0710MUX_COUNT_MAX_IDX 3
++#define TS0710MUX_COUNT_IDX_NUM (TS0710MUX_COUNT_MAX_IDX + 1)
++
++static volatile int mux_data_count[TS0710MUX_COUNT_IDX_NUM] = { 0, 0, 0, 0 };
++static volatile int mux_data_count2[TS0710MUX_COUNT_IDX_NUM] = { 0, 0, 0, 0 };
++static struct semaphore mux_data_count_mutex[TS0710MUX_COUNT_IDX_NUM];
++static volatile __u8 post_recv_count_flag = 0;
++
++/*PROC file*/
++struct proc_dir_entry *gprs_proc_file = NULL;
++ssize_t file_proc_read(struct file *file, char *buf, size_t size,
++ loff_t * ppos);
++ssize_t file_proc_write(struct file *file, const char *buf, size_t count,
++ loff_t * ppos);
++struct file_operations file_proc_operations = {
++ read:file_proc_read,
++ write:file_proc_write,
++};
++typedef struct {
++ int recvBytes;
++ int sentBytes;
++} gprs_bytes;
++
++static __u8 tty2dlci[NR_MUXS] =
++ { 1, 2, 3, 4, 5, 6, 7, 8, 6, 7, 8, 9, 10, 11, 12, 13 };
++static __u8 iscmdtty[NR_MUXS] =
++ { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 };
++typedef struct {
++ __u8 cmdtty;
++ __u8 datatty;
++} dlci_tty;
++static dlci_tty dlci2tty[] = { {0, 0}, /* DLCI 0 */
++{0, 0}, /* DLCI 1 */
++{1, 1}, /* DLCI 2 */
++{2, 2}, /* DLCI 3 */
++{3, 3}, /* DLCI 4 */
++{4, 4}, /* DLCI 5 */
++{5, 8}, /* DLCI 6 */
++{6, 9}, /* DLCI 7 */
++{7, 10}, /* DLCI 8 */
++{11, 11}, /* DLCI 9 */
++{12, 12}, /* DLCI 10 */
++{13, 13}, /* DLCI 11 */
++{14, 14}, /* DLCI 12 */
++{15, 15}
++}; /* DLCI 13 */
++
++typedef struct {
++ volatile __u8 buf[TS0710MUX_SEND_BUF_SIZE];
++ volatile __u8 *frame;
++ unsigned long flags;
++ volatile __u16 length;
++ volatile __u8 filled;
++ volatile __u8 dummy; /* Allignment to 4*n bytes */
++} mux_send_struct;
++
++/* Bit number in flags of mux_send_struct */
++#define BUF_BUSY 0
++
++struct mux_recv_packet_tag {
++ __u8 *data;
++ __u32 length;
++ struct mux_recv_packet_tag *next;
++};
++typedef struct mux_recv_packet_tag mux_recv_packet;
++
++struct mux_recv_struct_tag {
++ __u8 data[TS0710MUX_RECV_BUF_SIZE];
++ __u32 length;
++ __u32 total;
++ mux_recv_packet *mux_packet;
++ struct mux_recv_struct_tag *next;
++ int no_tty;
++ volatile __u8 post_unthrottle;
++};
++typedef struct mux_recv_struct_tag mux_recv_struct;
++
++#define RECV_RUNNING 0
++static unsigned long mux_recv_flags = 0;
++
++static mux_send_struct *mux_send_info[NR_MUXS];
++static volatile __u8 mux_send_info_flags[NR_MUXS];
++static volatile __u8 mux_send_info_idx = NR_MUXS;
++
++static mux_recv_struct *mux_recv_info[NR_MUXS];
++static volatile __u8 mux_recv_info_flags[NR_MUXS];
++static mux_recv_struct *mux_recv_queue = NULL;
++
++static struct tty_driver mux_driver;
++
++#ifdef USB_FOR_MUX
++#define COMM_FOR_MUX_DRIVER usb_for_mux_driver
++#define COMM_FOR_MUX_TTY usb_for_mux_tty
++#define COMM_MUX_DISPATCHER usb_mux_dispatcher
++#define COMM_MUX_SENDER usb_mux_sender
++#else
++#define COMM_FOR_MUX_DRIVER serial_for_mux_driver
++#define COMM_FOR_MUX_TTY serial_for_mux_tty
++#define COMM_MUX_DISPATCHER serial_mux_dispatcher
++#define COMM_MUX_SENDER serial_mux_sender
++
++extern struct list_head *tq_serial_for_mux;
++#endif
++
++extern struct tty_driver *COMM_FOR_MUX_DRIVER;
++extern struct tty_struct *COMM_FOR_MUX_TTY;
++extern void (*COMM_MUX_DISPATCHER) (struct tty_struct * tty);
++extern void (*COMM_MUX_SENDER) (void);
++
++static struct work_struct send_tqueue;
++static struct work_struct receive_tqueue;
++static struct work_struct post_recv_tqueue;
++
++static struct tty_struct *mux_table[NR_MUXS];
++static struct termios *mux_termios[NR_MUXS];
++static struct termios *mux_termios_locked[NR_MUXS];
++static volatile short int mux_tty[NR_MUXS];
++
++#ifdef min
++#undef min
++#define min(a,b) ( (a)<(b) ? (a):(b) )
++#endif
++
++static int get_count(__u8 idx);
++static int set_count(__u8 idx, int count);
++static int add_count(__u8 idx, int count);
++
++static int send_ua(ts0710_con * ts0710, __u8 dlci);
++static int send_dm(ts0710_con * ts0710, __u8 dlci);
++static int send_sabm(ts0710_con * ts0710, __u8 dlci);
++static int send_disc(ts0710_con * ts0710, __u8 dlci);
++static void queue_uih(mux_send_struct * send_info, __u16 len,
++ ts0710_con * ts0710, __u8 dlci);
++static int send_pn_msg(ts0710_con * ts0710, __u8 prior, __u32 frame_size,
++ __u8 credit_flow, __u8 credits, __u8 dlci, __u8 cr);
++static int send_nsc_msg(ts0710_con * ts0710, mcc_type cmd, __u8 cr);
++static void set_uih_hdr(short_frame * uih_pkt, __u8 dlci, __u32 len, __u8 cr);
++
++static __u32 crc_check(__u8 * data, __u32 length, __u8 check_sum);
++static __u8 crc_calc(__u8 * data, __u32 length);
++static void create_crctable(__u8 table[]);
++
++static void mux_sched_send(void);
++
++static __u8 crctable[256];
++
++static ts0710_con ts0710_connection;
++/*
++static rpn_values rpn_val;
++*/
++
++static int valid_dlci(__u8 dlci)
++{
++ if ((dlci < TS0710_MAX_CHN) && (dlci > 0))
++ return 1;
++ else
++ return 0;
++}
++
++#ifdef TS0710DEBUG
++
++#ifdef PRINT_OUTPUT_PRINTK
++#define TS0710_DEBUG(fmt, arg...) printk(KERN_INFO "MUX " __FUNCTION__ ": " fmt "\n" , ## arg)
++#else
++#include "ezxlog.h"
++static __u8 strDebug[256];
++#define TS0710_DEBUG(fmt, arg...) ({ snprintf(strDebug, sizeof(strDebug), "MUX " __FUNCTION__ ": " fmt "\n" , ## arg); \
++ /*printk("%s", strDebug)*/ezxlogk("MX", strDebug, strlen(strDebug)); })
++#endif /* End #ifdef PRINT_OUTPUT_PRINTK */
++
++#else
++#define TS0710_DEBUG(fmt...)
++#endif /* End #ifdef TS0710DEBUG */
++
++#ifdef TS0710LOG
++static unsigned char g_tbuf[TS0710MUX_MAX_BUF_SIZE];
++#ifdef PRINT_OUTPUT_PRINTK
++#define TS0710_LOG(fmt, arg...) printk(fmt, ## arg)
++#define TS0710_PRINTK(fmt, arg...) printk(fmt, ## arg)
++#else
++#include "ezxlog.h"
++static __u8 strLog[256];
++#define TS0710_LOG(fmt, arg...) ({ snprintf(strLog, sizeof(strLog), fmt, ## arg); \
++ /*printk("%s", strLog)*/ezxlogk("MX", strLog, strlen(strLog)); })
++#define TS0710_PRINTK(fmt, arg...) ({ printk(fmt, ## arg); \
++ TS0710_LOG(fmt, ## arg); })
++#endif /* End #ifdef PRINT_OUTPUT_PRINTK */
++
++#else
++#define TS0710_LOG(fmt...)
++#define TS0710_PRINTK(fmt, arg...) printk(fmt, ## arg)
++#endif /* End #ifdef TS0710LOG */
++
++#ifdef TS0710DEBUG
++static void TS0710_DEBUGHEX(__u8 * buf, int len)
++{
++ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
++
++ int i;
++ int c;
++
++ if (len <= 0) {
++ return;
++ }
++
++ c = 0;
++ for (i = 0; (i < len) && (c < (TS0710MUX_MAX_BUF_SIZE - 3)); i++) {
++ sprintf(&tbuf[c], "%02x ", buf[i]);
++ c += 3;
++ }
++ tbuf[c] = 0;
++
++#ifdef PRINT_OUTPUT_PRINTK
++ TS0710_DEBUG("%s", tbuf);
++#else
++ /*printk("%s\n", tbuf) */ ezxlogk("MX", tbuf, c);
++#endif
++}
++static void TS0710_DEBUGSTR(__u8 * buf, int len)
++{
++ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
++
++ if (len <= 0) {
++ return;
++ }
++
++ if (len > (TS0710MUX_MAX_BUF_SIZE - 1)) {
++ len = (TS0710MUX_MAX_BUF_SIZE - 1);
++ }
++
++ memcpy(tbuf, buf, len);
++ tbuf[len] = 0;
++
++#ifdef PRINT_OUTPUT_PRINTK
++ /* 0x00 byte in the string pointed by tbuf may truncate the print result */
++ TS0710_DEBUG("%s", tbuf);
++#else
++ /*printk("%s\n", tbuf) */ ezxlogk("MX", tbuf, len);
++#endif
++}
++#else
++#define TS0710_DEBUGHEX(buf, len)
++#define TS0710_DEBUGSTR(buf, len)
++#endif /* End #ifdef TS0710DEBUG */
++
++#ifdef TS0710LOG
++static void TS0710_LOGSTR_FRAME(__u8 send, __u8 * data, int len)
++{
++ short_frame *short_pkt;
++ long_frame *long_pkt;
++ __u8 *uih_data_start;
++ __u32 uih_len;
++ __u8 dlci;
++ int pos;
++
++ if (len <= 0) {
++ return;
++ }
++
++ pos = 0;
++ if (send) {
++ pos += sprintf(&g_tbuf[pos], "<");
++ short_pkt = (short_frame *) (data + 1); /*For BP UART problem */
++ } else {
++ /*For BP UART problem */
++ /*pos += sprintf(&g_tbuf[pos], ">"); */
++ pos += sprintf(&g_tbuf[pos], ">%d ", *(data + SLIDE_BP_SEQ_OFFSET)); /*For BP UART problem */
++
++#ifdef TS0710SEQ2
++ pos += sprintf(&g_tbuf[pos], "%02x %02x %02x %02x ", *(data + FIRST_BP_SEQ_OFFSET), *(data + SECOND_BP_SEQ_OFFSET), *(data + FIRST_AP_SEQ_OFFSET), *(data + SECOND_AP_SEQ_OFFSET)); /*For BP UART problem */
++#endif
++
++ short_pkt = (short_frame *) (data + ADDRESS_FIELD_OFFSET); /*For BP UART problem */
++ }
++
++ /*For BP UART problem */
++ /*short_pkt = (short_frame *)(data + 1); */
++
++ dlci = short_pkt->h.addr.server_chn << 1 | short_pkt->h.addr.d;
++ switch (CLR_PF(short_pkt->h.control)) {
++ case SABM:
++ pos += sprintf(&g_tbuf[pos], "C SABM %d ::", dlci);
++ break;
++ case UA:
++ pos += sprintf(&g_tbuf[pos], "C UA %d ::", dlci);
++ break;
++ case DM:
++ pos += sprintf(&g_tbuf[pos], "C DM %d ::", dlci);
++ break;
++ case DISC:
++ pos += sprintf(&g_tbuf[pos], "C DISC %d ::", dlci);
++ break;
++
++ /*For BP UART problem Begin */
++ case ACK:
++ pos += sprintf(&g_tbuf[pos], "C ACK %d ", short_pkt->data[0]);
++
++#ifdef TS0710SEQ2
++ pos += sprintf(&g_tbuf[pos], "%02x %02x %02x %02x ", short_pkt->data[1], short_pkt->data[2], short_pkt->data[3], short_pkt->data[4]); /*For BP UART problem */
++#endif
++
++ pos += sprintf(&g_tbuf[pos], "::");
++ break;
++ /*For BP UART problem End */
++
++ case UIH:
++ if (!dlci) {
++ pos += sprintf(&g_tbuf[pos], "C MCC %d ::", dlci);
++ } else {
++
++ if ((short_pkt->h.length.ea) == 0) {
++ long_pkt = (long_frame *) short_pkt;
++ uih_len = GET_LONG_LENGTH(long_pkt->h.length);
++ uih_data_start = long_pkt->h.data;
++ } else {
++ uih_len = short_pkt->h.length.len;
++ uih_data_start = short_pkt->data;
++ }
++ switch (*uih_data_start) {
++ case CMDTAG:
++ pos +=
++ sprintf(&g_tbuf[pos], "I %d A %d ::", dlci,
++ uih_len);
++ break;
++ case DATATAG:
++ default:
++ pos +=
++ sprintf(&g_tbuf[pos], "I %d D %d ::", dlci,
++ uih_len);
++ break;
++ }
++
++ }
++ break;
++ default:
++ pos += sprintf(&g_tbuf[pos], "N!!! %d ::", dlci);
++ break;
++ }
++
++ if (len > (sizeof(g_tbuf) - pos - 1)) {
++ len = (sizeof(g_tbuf) - pos - 1);
++ }
++
++ memcpy(&g_tbuf[pos], data, len);
++ pos += len;
++ g_tbuf[pos] = 0;
++
++#ifdef PRINT_OUTPUT_PRINTK
++ /* 0x00 byte in the string pointed by g_tbuf may truncate the print result */
++ TS0710_LOG("%s\n", g_tbuf);
++#else
++ /*printk("%s\n", g_tbuf) */ ezxlogk("MX", g_tbuf, pos);
++#endif
++}
++#else
++#define TS0710_LOGSTR_FRAME(send, data, len)
++#endif
++
++#ifdef TS0710SIG
++#define my_for_each_task(p) \
++ for ((p) = current; ((p) = (p)->next_task) != current; )
++
++static void TS0710_SIG2APLOGD(void)
++{
++ struct task_struct *p;
++ static __u8 sig = 0;
++
++ if (sig) {
++ return;
++ }
++
++ read_lock(&tasklist_lock);
++ my_for_each_task(p) {
++ if (strncmp(p->comm, "aplogd", 6) == 0) {
++ sig = 1;
++ if (send_sig(SIGUSR2, p, 1) == 0) {
++ TS0710_PRINTK
++ ("MUX: success to send SIGUSR2 to aplogd!\n");
++ } else {
++ TS0710_PRINTK
++ ("MUX: failure to send SIGUSR2 to aplogd!\n");
++ }
++ break;
++ }
++ }
++ read_unlock(&tasklist_lock);
++
++ if (!sig) {
++ TS0710_PRINTK("MUX: not found aplogd!\n");
++ }
++}
++#else
++#define TS0710_SIG2APLOGD()
++#endif
++
++static int basic_write(ts0710_con * ts0710, __u8 * buf, int len)
++{
++ int res;
++
++ UNUSED_PARAM(ts0710);
++
++ buf[0] = TS0710_BASIC_FLAG;
++ buf[len + 1] = TS0710_BASIC_FLAG;
++
++ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
++ TS0710_PRINTK
++ ("MUX basic_write: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n");
++
++#ifndef USB_FOR_MUX
++ TS0710_PRINTK
++ ("MUX basic_write: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n");
++ TS0710_SIG2APLOGD();
++#endif
++
++ return -1;
++ }
++
++ TS0710_LOGSTR_FRAME(1, buf, len + 2);
++ TS0710_DEBUGHEX(buf, len + 2);
++
++ res = COMM_FOR_MUX_DRIVER->write(COMM_FOR_MUX_TTY, buf, len + 2);
++
++ if (res != len + 2) {
++ TS0710_PRINTK("MUX basic_write: Write Error!\n");
++ return -1;
++ }
++
++ return len + 2;
++}
++
++/* Functions for the crc-check and calculation */
++
++#define CRC_VALID 0xcf
++
++static __u32 crc_check(__u8 * data, __u32 length, __u8 check_sum)
++{
++ __u8 fcs = 0xff;
++
++ while (length--) {
++ fcs = crctable[fcs ^ *data++];
++ }
++ fcs = crctable[fcs ^ check_sum];
++ TS0710_DEBUG("fcs : %d\n", fcs);
++ if (fcs == (uint) 0xcf) { /*CRC_VALID) */
++ TS0710_DEBUG("crc_check: CRC check OK\n");
++ return 0;
++ } else {
++ TS0710_PRINTK("MUX crc_check: CRC check failed\n");
++ return 1;
++ }
++}
++
++/* Calculates the checksum according to the ts0710 specification */
++
++static __u8 crc_calc(__u8 * data, __u32 length)
++{
++ __u8 fcs = 0xff;
++
++ while (length--) {
++ fcs = crctable[fcs ^ *data++];
++ }
++
++ return 0xff - fcs;
++}
++
++/* Calulates a reversed CRC table for the FCS check */
++
++static void create_crctable(__u8 table[])
++{
++ int i, j;
++
++ __u8 data;
++ __u8 code_word = (__u8) 0xe0;
++ __u8 sr = (__u8) 0;
++
++ for (j = 0; j < 256; j++) {
++ data = (__u8) j;
++
++ for (i = 0; i < 8; i++) {
++ if ((data & 0x1) ^ (sr & 0x1)) {
++ sr >>= 1;
++ sr ^= code_word;
++ } else {
++ sr >>= 1;
++ }
++
++ data >>= 1;
++ sr &= 0xff;
++ }
++
++ table[j] = sr;
++ sr = 0;
++ }
++}
++
++static void ts0710_reset_dlci(__u8 j)
++{
++ if (j >= TS0710_MAX_CHN)
++ return;
++
++ ts0710_connection.dlci[j].state = DISCONNECTED;
++ ts0710_connection.dlci[j].flow_control = 0;
++ ts0710_connection.dlci[j].mtu = DEF_TS0710_MTU;
++ ts0710_connection.dlci[j].initiated = 0;
++ ts0710_connection.dlci[j].initiator = 0;
++ init_waitqueue_head(&ts0710_connection.dlci[j].open_wait);
++ init_waitqueue_head(&ts0710_connection.dlci[j].close_wait);
++}
++
++static void ts0710_reset_con(void)
++{
++ __u8 j;
++
++ ts0710_connection.initiator = 0;
++ ts0710_connection.mtu = DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE;
++ ts0710_connection.be_testing = 0;
++ ts0710_connection.test_errs = 0;
++ init_waitqueue_head(&ts0710_connection.test_wait);
++
++ for (j = 0; j < TS0710_MAX_CHN; j++) {
++ ts0710_reset_dlci(j);
++ }
++}
++
++static void ts0710_init(void)
++{
++ create_crctable(crctable);
++
++ ts0710_reset_con();
++
++ /* Set the values in the rpn octets */
++/*
++ rpn_val.bit_rate = 7;
++ rpn_val.data_bits = 3;
++ rpn_val.stop_bit = 0;
++ rpn_val.parity = 0;
++ rpn_val.parity_type = 0;
++ rpn_val.res1 = 0;
++ rpn_val.xon_input = 0;
++ rpn_val.xon_output = 0;
++ rpn_val.rtr_input = 0;
++ rpn_val.rtr_output = 0;
++ rpn_val.rtc_input = 0;
++ rpn_val.rtc_output = 0;
++ rpn_val.res2 = 0;
++ rpn_val.xon_u8 = 0x11;
++ rpn_val.xoff_u8 = 0x13;
++ memset(&rpn_val.pm, 0 , 2); *//* Set the mask to zero */
++}
++
++static void ts0710_upon_disconnect(void)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ __u8 j;
++
++ for (j = 0; j < TS0710_MAX_CHN; j++) {
++ ts0710->dlci[j].state = DISCONNECTED;
++ wake_up_interruptible(&ts0710->dlci[j].open_wait);
++ wake_up_interruptible(&ts0710->dlci[j].close_wait);
++ }
++ ts0710->be_testing = 0;
++ wake_up_interruptible(&ts0710->test_wait);
++ ts0710_reset_con();
++}
++
++/* Sending packet functions */
++
++/* Creates a UA packet and puts it at the beginning of the pkt pointer */
++
++static int send_ua(ts0710_con * ts0710, __u8 dlci)
++{
++ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
++ short_frame *ua;
++
++ TS0710_DEBUG("send_ua: Creating UA packet to DLCI %d\n", dlci);
++
++ ua = (short_frame *) (buf + 1);
++ ua->h.addr.ea = 1;
++ ua->h.addr.cr = ((~(ts0710->initiator)) & 0x1);
++ ua->h.addr.d = (dlci) & 0x1;
++ ua->h.addr.server_chn = (dlci) >> 0x1;
++ ua->h.control = SET_PF(UA);
++ ua->h.length.ea = 1;
++ ua->h.length.len = 0;
++ ua->data[0] = crc_calc((__u8 *) ua, SHORT_CRC_CHECK);
++
++ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
++}
++
++/* Creates a DM packet and puts it at the beginning of the pkt pointer */
++
++static int send_dm(ts0710_con * ts0710, __u8 dlci)
++{
++ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
++ short_frame *dm;
++
++ TS0710_DEBUG("send_dm: Creating DM packet to DLCI %d\n", dlci);
++
++ dm = (short_frame *) (buf + 1);
++ dm->h.addr.ea = 1;
++ dm->h.addr.cr = ((~(ts0710->initiator)) & 0x1);
++ dm->h.addr.d = dlci & 0x1;
++ dm->h.addr.server_chn = dlci >> 0x1;
++ dm->h.control = SET_PF(DM);
++ dm->h.length.ea = 1;
++ dm->h.length.len = 0;
++ dm->data[0] = crc_calc((__u8 *) dm, SHORT_CRC_CHECK);
++
++ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
++}
++
++static int send_sabm(ts0710_con * ts0710, __u8 dlci)
++{
++ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
++ short_frame *sabm;
++
++ TS0710_DEBUG("send_sabm: Creating SABM packet to DLCI %d\n", dlci);
++
++ sabm = (short_frame *) (buf + 1);
++ sabm->h.addr.ea = 1;
++ sabm->h.addr.cr = ((ts0710->initiator) & 0x1);
++ sabm->h.addr.d = dlci & 0x1;
++ sabm->h.addr.server_chn = dlci >> 0x1;
++ sabm->h.control = SET_PF(SABM);
++ sabm->h.length.ea = 1;
++ sabm->h.length.len = 0;
++ sabm->data[0] = crc_calc((__u8 *) sabm, SHORT_CRC_CHECK);
++
++ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
++}
++
++static int send_disc(ts0710_con * ts0710, __u8 dlci)
++{
++ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
++ short_frame *disc;
++
++ TS0710_DEBUG("send_disc: Creating DISC packet to DLCI %d\n", dlci);
++
++ disc = (short_frame *) (buf + 1);
++ disc->h.addr.ea = 1;
++ disc->h.addr.cr = ((ts0710->initiator) & 0x1);
++ disc->h.addr.d = dlci & 0x1;
++ disc->h.addr.server_chn = dlci >> 0x1;
++ disc->h.control = SET_PF(DISC);
++ disc->h.length.ea = 1;
++ disc->h.length.len = 0;
++ disc->data[0] = crc_calc((__u8 *) disc, SHORT_CRC_CHECK);
++
++ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
++}
++
++static void queue_uih(mux_send_struct * send_info, __u16 len,
++ ts0710_con * ts0710, __u8 dlci)
++{
++ __u32 size;
++
++ TS0710_DEBUG
++ ("queue_uih: Creating UIH packet with %d bytes data to DLCI %d\n",
++ len, dlci);
++
++ if (len > SHORT_PAYLOAD_SIZE) {
++ long_frame *l_pkt;
++
++ size = sizeof(long_frame) + len + FCS_SIZE;
++ l_pkt = (long_frame *) (send_info->frame - sizeof(long_frame));
++ set_uih_hdr((void *)l_pkt, dlci, len, ts0710->initiator);
++ l_pkt->data[len] = crc_calc((__u8 *) l_pkt, LONG_CRC_CHECK);
++ send_info->frame = ((__u8 *) l_pkt) - 1;
++ } else {
++ short_frame *s_pkt;
++
++ size = sizeof(short_frame) + len + FCS_SIZE;
++ s_pkt =
++ (short_frame *) (send_info->frame - sizeof(short_frame));
++ set_uih_hdr((void *)s_pkt, dlci, len, ts0710->initiator);
++ s_pkt->data[len] = crc_calc((__u8 *) s_pkt, SHORT_CRC_CHECK);
++ send_info->frame = ((__u8 *) s_pkt) - 1;
++ }
++ send_info->length = size;
++}
++
++/* Multiplexer command packets functions */
++
++/* Turns on the ts0710 flow control */
++
++static int ts0710_fcon_msg(ts0710_con * ts0710, __u8 cr)
++{
++ __u8 buf[30];
++ mcc_short_frame *mcc_pkt;
++ short_frame *uih_pkt;
++ __u32 size;
++
++ size = sizeof(short_frame) + sizeof(mcc_short_frame) + FCS_SIZE;
++ uih_pkt = (short_frame *) (buf + 1);
++ set_uih_hdr(uih_pkt, CTRL_CHAN, sizeof(mcc_short_frame),
++ ts0710->initiator);
++ uih_pkt->data[sizeof(mcc_short_frame)] =
++ crc_calc((__u8 *) uih_pkt, SHORT_CRC_CHECK);
++ mcc_pkt = (mcc_short_frame *) (uih_pkt->data);
++
++ mcc_pkt->h.type.ea = EA;
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = FCON;
++ mcc_pkt->h.length.ea = EA;
++ mcc_pkt->h.length.len = 0;
++
++ return basic_write(ts0710, buf, size);
++}
++
++/* Turns off the ts0710 flow control */
++
++static int ts0710_fcoff_msg(ts0710_con * ts0710, __u8 cr)
++{
++ __u8 buf[30];
++ mcc_short_frame *mcc_pkt;
++ short_frame *uih_pkt;
++ __u32 size;
++
++ size = (sizeof(short_frame) + sizeof(mcc_short_frame) + FCS_SIZE);
++ uih_pkt = (short_frame *) (buf + 1);
++ set_uih_hdr(uih_pkt, CTRL_CHAN, sizeof(mcc_short_frame),
++ ts0710->initiator);
++ uih_pkt->data[sizeof(mcc_short_frame)] =
++ crc_calc((__u8 *) uih_pkt, SHORT_CRC_CHECK);
++ mcc_pkt = (mcc_short_frame *) (uih_pkt->data);
++
++ mcc_pkt->h.type.ea = 1;
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = FCOFF;
++ mcc_pkt->h.length.ea = 1;
++ mcc_pkt->h.length.len = 0;
++
++ return basic_write(ts0710, buf, size);
++}
++
++/*
++static int ts0710_rpn_msg(ts0710_con *ts0710, __u8 cr, __u8 dlci, __u8 req)
++{
++ char buf[100];
++ rpn_msg* rpn_pkt;
++ __u32 fsize;
++ __u32 psize;
++
++ fsize = sizeof(rpn_msg);
++
++ if (req) {
++ fsize -= sizeof(rpn_values);
++ }
++
++ psize = (fsize - sizeof(short_frame) - FCS_SIZE);
++
++ rpn_pkt = (rpn_msg *) buf;
++
++ set_uih_hdr((short_frame *) rpn_pkt, CTRL_CHAN, psize, ts0710->initiator);
++
++ rpn_pkt->fcs = crc_calc((__u8*) rpn_pkt, SHORT_CRC_CHECK);
++
++ rpn_pkt->mcc_s_head.type.ea = EA;
++ rpn_pkt->mcc_s_head.type.cr = cr;
++ rpn_pkt->mcc_s_head.type.type = RPN;
++ rpn_pkt->mcc_s_head.length.ea = EA;
++
++ rpn_pkt->dlci.ea = EA;
++ rpn_pkt->dlci.cr = 1;
++ rpn_pkt->dlci.d = dlci & 1;
++ rpn_pkt->dlci.server_chn = (dlci >> 1);
++
++ if (req) {
++ rpn_pkt->mcc_s_head.length.len = 1;
++ rpn_pkt->rpn_val.bit_rate = rpn_pkt->fcs;
++ } else {
++ rpn_pkt->mcc_s_head.length.len = 8;
++ memcpy(&(rpn_pkt->rpn_val), &rpn_val, sizeof(rpn_values));
++ }
++ return basic_write(ts0710, buf, fsize);
++}
++*/
++/*
++static int ts0710_rls_msg(ts0710_con *ts0710, __u8 cr, __u8 dlci, __u8 err_code)
++{
++ char buf[100];
++ rls_msg *rls_pkt;
++ __u32 fsize;
++ __u32 psize;
++
++ fsize = sizeof(rls_msg);
++ psize = fsize - sizeof(short_frame) - FCS_SIZE;
++ rls_pkt = (rls_msg *) buf;
++
++ set_uih_hdr((short_frame *) rls_pkt, CTRL_CHAN, psize, ts0710->initiator);
++ rls_pkt->fcs = crc_calc((__u8*) rls_pkt, SHORT_CRC_CHECK);
++
++ rls_pkt->mcc_s_head.type.ea = EA;
++ rls_pkt->mcc_s_head.type.cr = cr;
++ rls_pkt->mcc_s_head.type.type = RLS;
++ rls_pkt->mcc_s_head.length.ea = EA;
++ rls_pkt->mcc_s_head.length.len = 2;
++
++ rls_pkt->dlci.ea = EA;
++ rls_pkt->dlci.cr = 1;
++ rls_pkt->dlci.d = dlci & 1;
++ rls_pkt->dlci.server_chn = dlci >> 1;
++ rls_pkt->error = err_code;
++ rls_pkt->res = 0;
++
++ return basic_write(ts0710, buf, fsize);
++}
++*/
++
++/* Sends an PN-messages and sets the not negotiable parameters to their
++ default values in ts0710 */
++
++static int send_pn_msg(ts0710_con * ts0710, __u8 prior, __u32 frame_size,
++ __u8 credit_flow, __u8 credits, __u8 dlci, __u8 cr)
++{
++ __u8 buf[30];
++ pn_msg *pn_pkt;
++ __u32 size;
++ TS0710_DEBUG
++ ("send_pn_msg: DLCI 0x%02x, prior:0x%02x, frame_size:%d, credit_flow:%x, credits:%d, cr:%x\n",
++ dlci, prior, frame_size, credit_flow, credits, cr);
++
++ size = sizeof(pn_msg);
++ pn_pkt = (pn_msg *) (buf + 1);
++
++ set_uih_hdr((void *)pn_pkt, CTRL_CHAN,
++ size - (sizeof(short_frame) + FCS_SIZE), ts0710->initiator);
++ pn_pkt->fcs = crc_calc((__u8 *) pn_pkt, SHORT_CRC_CHECK);
++
++ pn_pkt->mcc_s_head.type.ea = 1;
++ pn_pkt->mcc_s_head.type.cr = cr;
++ pn_pkt->mcc_s_head.type.type = PN;
++ pn_pkt->mcc_s_head.length.ea = 1;
++ pn_pkt->mcc_s_head.length.len = 8;
++
++ pn_pkt->res1 = 0;
++ pn_pkt->res2 = 0;
++ pn_pkt->dlci = dlci;
++ pn_pkt->frame_type = 0;
++ pn_pkt->credit_flow = credit_flow;
++ pn_pkt->prior = prior;
++ pn_pkt->ack_timer = 0;
++ SET_PN_MSG_FRAME_SIZE(pn_pkt, frame_size);
++ pn_pkt->credits = credits;
++ pn_pkt->max_nbrof_retrans = 0;
++
++ return basic_write(ts0710, buf, size);
++}
++
++/* Send a Not supported command - command, which needs 3 bytes */
++
++static int send_nsc_msg(ts0710_con * ts0710, mcc_type cmd, __u8 cr)
++{
++ __u8 buf[30];
++ nsc_msg *nsc_pkt;
++ __u32 size;
++
++ size = sizeof(nsc_msg);
++ nsc_pkt = (nsc_msg *) (buf + 1);
++
++ set_uih_hdr((void *)nsc_pkt, CTRL_CHAN,
++ sizeof(nsc_msg) - sizeof(short_frame) - FCS_SIZE,
++ ts0710->initiator);
++
++ nsc_pkt->fcs = crc_calc((__u8 *) nsc_pkt, SHORT_CRC_CHECK);
++
++ nsc_pkt->mcc_s_head.type.ea = 1;
++ nsc_pkt->mcc_s_head.type.cr = cr;
++ nsc_pkt->mcc_s_head.type.type = NSC;
++ nsc_pkt->mcc_s_head.length.ea = 1;
++ nsc_pkt->mcc_s_head.length.len = 1;
++
++ nsc_pkt->command_type.ea = 1;
++ nsc_pkt->command_type.cr = cmd.cr;
++ nsc_pkt->command_type.type = cmd.type;
++
++ return basic_write(ts0710, buf, size);
++}
++
++static int ts0710_msc_msg(ts0710_con * ts0710, __u8 value, __u8 cr, __u8 dlci)
++{
++ __u8 buf[30];
++ msc_msg *msc_pkt;
++ __u32 size;
++
++ size = sizeof(msc_msg);
++ msc_pkt = (msc_msg *) (buf + 1);
++
++ set_uih_hdr((void *)msc_pkt, CTRL_CHAN,
++ sizeof(msc_msg) - sizeof(short_frame) - FCS_SIZE,
++ ts0710->initiator);
++
++ msc_pkt->fcs = crc_calc((__u8 *) msc_pkt, SHORT_CRC_CHECK);
++
++ msc_pkt->mcc_s_head.type.ea = 1;
++ msc_pkt->mcc_s_head.type.cr = cr;
++ msc_pkt->mcc_s_head.type.type = MSC;
++ msc_pkt->mcc_s_head.length.ea = 1;
++ msc_pkt->mcc_s_head.length.len = 2;
++
++ msc_pkt->dlci.ea = 1;
++ msc_pkt->dlci.cr = 1;
++ msc_pkt->dlci.d = dlci & 1;
++ msc_pkt->dlci.server_chn = (dlci >> 1) & 0x1f;
++
++ msc_pkt->v24_sigs = value;
++
++ return basic_write(ts0710, buf, size);
++}
++
++static int ts0710_test_msg(ts0710_con * ts0710, __u8 * test_pattern, __u32 len,
++ __u8 cr, __u8 * f_buf /*Frame buf */ )
++{
++ __u32 size;
++
++ if (len > SHORT_PAYLOAD_SIZE) {
++ long_frame *uih_pkt;
++ mcc_long_frame *mcc_pkt;
++
++ size =
++ (sizeof(long_frame) + sizeof(mcc_long_frame) + len +
++ FCS_SIZE);
++ uih_pkt = (long_frame *) (f_buf + 1);
++
++ set_uih_hdr((short_frame *) uih_pkt, CTRL_CHAN, len +
++ sizeof(mcc_long_frame), ts0710->initiator);
++ uih_pkt->data[GET_LONG_LENGTH(uih_pkt->h.length)] =
++ crc_calc((__u8 *) uih_pkt, LONG_CRC_CHECK);
++ mcc_pkt = (mcc_long_frame *) uih_pkt->data;
++
++ mcc_pkt->h.type.ea = EA;
++ /* cr tells whether it is a commmand (1) or a response (0) */
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = TEST;
++ SET_LONG_LENGTH(mcc_pkt->h.length, len);
++ memcpy(mcc_pkt->value, test_pattern, len);
++ } else if (len > (SHORT_PAYLOAD_SIZE - sizeof(mcc_short_frame))) {
++ long_frame *uih_pkt;
++ mcc_short_frame *mcc_pkt;
++
++ /* Create long uih packet and short mcc packet */
++ size =
++ (sizeof(long_frame) + sizeof(mcc_short_frame) + len +
++ FCS_SIZE);
++ uih_pkt = (long_frame *) (f_buf + 1);
++
++ set_uih_hdr((short_frame *) uih_pkt, CTRL_CHAN,
++ len + sizeof(mcc_short_frame), ts0710->initiator);
++ uih_pkt->data[GET_LONG_LENGTH(uih_pkt->h.length)] =
++ crc_calc((__u8 *) uih_pkt, LONG_CRC_CHECK);
++ mcc_pkt = (mcc_short_frame *) uih_pkt->data;
++
++ mcc_pkt->h.type.ea = EA;
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = TEST;
++ mcc_pkt->h.length.ea = EA;
++ mcc_pkt->h.length.len = len;
++ memcpy(mcc_pkt->value, test_pattern, len);
++ } else {
++ short_frame *uih_pkt;
++ mcc_short_frame *mcc_pkt;
++
++ size =
++ (sizeof(short_frame) + sizeof(mcc_short_frame) + len +
++ FCS_SIZE);
++ uih_pkt = (short_frame *) (f_buf + 1);
++
++ set_uih_hdr((void *)uih_pkt, CTRL_CHAN, len
++ + sizeof(mcc_short_frame), ts0710->initiator);
++ uih_pkt->data[uih_pkt->h.length.len] =
++ crc_calc((__u8 *) uih_pkt, SHORT_CRC_CHECK);
++ mcc_pkt = (mcc_short_frame *) uih_pkt->data;
++
++ mcc_pkt->h.type.ea = EA;
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = TEST;
++ mcc_pkt->h.length.ea = EA;
++ mcc_pkt->h.length.len = len;
++ memcpy(mcc_pkt->value, test_pattern, len);
++
++ }
++ return basic_write(ts0710, f_buf, size);
++}
++
++static void set_uih_hdr(short_frame * uih_pkt, __u8 dlci, __u32 len, __u8 cr)
++{
++ uih_pkt->h.addr.ea = 1;
++ uih_pkt->h.addr.cr = cr;
++ uih_pkt->h.addr.d = dlci & 0x1;
++ uih_pkt->h.addr.server_chn = dlci >> 1;
++ uih_pkt->h.control = CLR_PF(UIH);
++
++ if (len > SHORT_PAYLOAD_SIZE) {
++ SET_LONG_LENGTH(((long_frame *) uih_pkt)->h.length, len);
++ } else {
++ uih_pkt->h.length.ea = 1;
++ uih_pkt->h.length.len = len;
++ }
++}
++
++/* Parses a multiplexer control channel packet */
++
++void process_mcc(__u8 * data, __u32 len, ts0710_con * ts0710, int longpkt)
++{
++ __u8 *tbuf = NULL;
++ mcc_short_frame *mcc_short_pkt;
++ int j;
++
++ if (longpkt) {
++ mcc_short_pkt =
++ (mcc_short_frame *) (((long_frame *) data)->data);
++ } else {
++ mcc_short_pkt =
++ (mcc_short_frame *) (((short_frame *) data)->data);
++ }
++
++ switch (mcc_short_pkt->h.type.type) {
++ case TEST:
++ if (mcc_short_pkt->h.type.cr == MCC_RSP) {
++ TS0710_DEBUG("Received test command response\n");
++
++ if (ts0710->be_testing) {
++ if ((mcc_short_pkt->h.length.ea) == 0) {
++ mcc_long_frame *mcc_long_pkt;
++ mcc_long_pkt =
++ (mcc_long_frame *) mcc_short_pkt;
++ if (GET_LONG_LENGTH
++ (mcc_long_pkt->h.length) !=
++ TEST_PATTERN_SIZE) {
++ ts0710->test_errs =
++ TEST_PATTERN_SIZE;
++ TS0710_DEBUG
++ ("Err: received test pattern is %d bytes long, not expected %d\n",
++ GET_LONG_LENGTH
++ (mcc_long_pkt->h.length),
++ TEST_PATTERN_SIZE);
++ } else {
++ ts0710->test_errs = 0;
++ for (j = 0;
++ j < TEST_PATTERN_SIZE;
++ j++) {
++ if (mcc_long_pkt->
++ value[j] !=
++ (j & 0xFF)) {
++ (ts0710->
++ test_errs)++;
++ }
++ }
++ }
++
++ } else {
++
++#if TEST_PATTERN_SIZE < 128
++ if (mcc_short_pkt->h.length.len !=
++ TEST_PATTERN_SIZE) {
++#endif
++
++ ts0710->test_errs =
++ TEST_PATTERN_SIZE;
++ TS0710_DEBUG
++ ("Err: received test pattern is %d bytes long, not expected %d\n",
++ mcc_short_pkt->h.length.
++ len, TEST_PATTERN_SIZE);
++
++#if TEST_PATTERN_SIZE < 128
++ } else {
++ ts0710->test_errs = 0;
++ for (j = 0;
++ j < TEST_PATTERN_SIZE;
++ j++) {
++ if (mcc_short_pkt->
++ value[j] !=
++ (j & 0xFF)) {
++ (ts0710->
++ test_errs)++;
++ }
++ }
++ }
++#endif
++
++ }
++
++ ts0710->be_testing = 0; /* Clear the flag */
++ wake_up_interruptible(&ts0710->test_wait);
++ } else {
++ TS0710_DEBUG
++ ("Err: shouldn't or late to get test cmd response\n");
++ }
++ } else {
++ tbuf = (__u8 *) kmalloc(len + 32, GFP_ATOMIC);
++ if (!tbuf) {
++ break;
++ }
++
++ if ((mcc_short_pkt->h.length.ea) == 0) {
++ mcc_long_frame *mcc_long_pkt;
++ mcc_long_pkt = (mcc_long_frame *) mcc_short_pkt;
++ ts0710_test_msg(ts0710, mcc_long_pkt->value,
++ GET_LONG_LENGTH(mcc_long_pkt->h.
++ length),
++ MCC_RSP, tbuf);
++ } else {
++ ts0710_test_msg(ts0710, mcc_short_pkt->value,
++ mcc_short_pkt->h.length.len,
++ MCC_RSP, tbuf);
++ }
++
++ kfree(tbuf);
++ }
++ break;
++
++ case FCON: /*Flow control on command */
++ TS0710_PRINTK
++ ("MUX Received Flow control(all channels) on command\n");
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ ts0710->dlci[0].state = CONNECTED;
++ ts0710_fcon_msg(ts0710, MCC_RSP);
++ mux_sched_send();
++ }
++ break;
++
++ case FCOFF: /*Flow control off command */
++ TS0710_PRINTK
++ ("MUX Received Flow control(all channels) off command\n");
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ for (j = 0; j < TS0710_MAX_CHN; j++) {
++ ts0710->dlci[j].state = FLOW_STOPPED;
++ }
++ ts0710_fcoff_msg(ts0710, MCC_RSP);
++ }
++ break;
++
++ case MSC: /*Modem status command */
++ {
++ __u8 dlci;
++ __u8 v24_sigs;
++
++ dlci = (mcc_short_pkt->value[0]) >> 2;
++ v24_sigs = mcc_short_pkt->value[1];
++
++ if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ send_dm(ts0710, dlci);
++ break;
++ }
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ TS0710_DEBUG("Received Modem status command\n");
++ if (v24_sigs & 2) {
++ if (ts0710->dlci[dlci].state ==
++ CONNECTED) {
++ TS0710_LOG
++ ("MUX Received Flow off on dlci %d\n",
++ dlci);
++ ts0710->dlci[dlci].state =
++ FLOW_STOPPED;
++ }
++ } else {
++ if (ts0710->dlci[dlci].state ==
++ FLOW_STOPPED) {
++ ts0710->dlci[dlci].state =
++ CONNECTED;
++ TS0710_LOG
++ ("MUX Received Flow on on dlci %d\n",
++ dlci);
++ mux_sched_send();
++ }
++ }
++
++ ts0710_msc_msg(ts0710, v24_sigs, MCC_RSP, dlci);
++/*
++ if (!(ts0710->dlci[dlci].initiated) && !(ts0710->dlci[dlci].initiator)) {
++ ts0710_msc_msg(ts0710, EA | RTR | RTC | DV, MCC_CMD, dlci);
++ ts0710->dlci[dlci].initiated = 1;
++ }
++*/
++ } else {
++ TS0710_DEBUG
++ ("Received Modem status response\n");
++
++ if (v24_sigs & 2) {
++ TS0710_DEBUG("Flow stop accepted\n");
++ }
++ }
++ break;
++ }
++
++ /* case RPN: *//*Remote port negotiation command */
++
++/* {
++ __u8 dlci;
++
++ dlci = (mcc_short_pkt->value[0]) >> 2;
++
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ if (mcc_short_pkt->h.length.len == 1) {
++ TS0710_DEBUG("Received Remote port negotiation command\n");
++ ts0710_rpn_msg(ts0710, MCC_RSP, dlci, 0);
++ } else {
++*/
++ /* Accept the other sides settings (accept all for now) */
++/* TS0710_DEBUG("Received Remote port negotiation respons\n");
++ memcpy(&rpn_val, &mcc_short_pkt->value[1], 8);
++ ts0710_rpn_msg(ts0710, MCC_RSP, dlci, 0);
++*/
++ /* Zero the parametermask after response */
++/* memset(&rpn_val.pm, 0, 2);
++ }
++ }
++ break;
++ }
++*/
++/*
++ case RLS: *//*Remote line status */
++/* {
++ __u8 dlci;
++ __u8 err_code;
++
++ TS0710_DEBUG("Received Remote line status\n");
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ dlci = mcc_short_pkt->value[0] >> 2;
++ err_code = mcc_short_pkt->value[1];
++
++ ts0710_rls_msg(ts0710, MCC_RSP, dlci, err_code);
++ }
++ break;
++ }
++*/
++ case PN: /*DLC parameter negotiation */
++ {
++ __u8 dlci;
++ __u16 frame_size;
++ pn_msg *pn_pkt;
++
++ pn_pkt = (pn_msg *) data;
++ dlci = pn_pkt->dlci;
++ frame_size = GET_PN_MSG_FRAME_SIZE(pn_pkt);
++ TS0710_DEBUG
++ ("Received DLC parameter negotiation, PN\n");
++ if (pn_pkt->mcc_s_head.type.cr == MCC_CMD) {
++ TS0710_DEBUG("received PN command with:\n");
++ TS0710_DEBUG("Frame size:%d\n", frame_size);
++
++ frame_size =
++ min(frame_size, ts0710->dlci[dlci].mtu);
++ send_pn_msg(ts0710, pn_pkt->prior, frame_size,
++ 0, 0, dlci, MCC_RSP);
++ ts0710->dlci[dlci].mtu = frame_size;
++ TS0710_DEBUG("process_mcc : mtu set to %d\n",
++ ts0710->dlci[dlci].mtu);
++ } else {
++ TS0710_DEBUG("received PN response with:\n");
++ TS0710_DEBUG("Frame size:%d\n", frame_size);
++
++ frame_size =
++ min(frame_size, ts0710->dlci[dlci].mtu);
++ ts0710->dlci[dlci].mtu = frame_size;
++
++ TS0710_DEBUG
++ ("process_mcc : mtu set on dlci:%d to %d\n",
++ dlci, ts0710->dlci[dlci].mtu);
++
++ if (ts0710->dlci[dlci].state == NEGOTIATING) {
++ ts0710->dlci[dlci].state = CONNECTING;
++ wake_up_interruptible(&ts0710->
++ dlci[dlci].
++ open_wait);
++ }
++ }
++ break;
++ }
++
++ case NSC: /*Non supported command resonse */
++ TS0710_LOG("MUX Received Non supported command response\n");
++ break;
++
++ default: /*Non supported command received */
++ TS0710_LOG("MUX Received a non supported command\n");
++ send_nsc_msg(ts0710, mcc_short_pkt->h.type, MCC_RSP);
++ break;
++ }
++}
++
++static mux_recv_packet *get_mux_recv_packet(__u32 size)
++{
++ mux_recv_packet *recv_packet;
++
++ TS0710_DEBUG("Enter into get_mux_recv_packet");
++
++ recv_packet =
++ (mux_recv_packet *) kmalloc(sizeof(mux_recv_packet), GFP_ATOMIC);
++ if (!recv_packet) {
++ return 0;
++ }
++
++ recv_packet->data = (__u8 *) kmalloc(size, GFP_ATOMIC);
++ if (!(recv_packet->data)) {
++ kfree(recv_packet);
++ return 0;
++ }
++ recv_packet->length = 0;
++ recv_packet->next = 0;
++ return recv_packet;
++}
++
++static void free_mux_recv_packet(mux_recv_packet * recv_packet)
++{
++ TS0710_DEBUG("Enter into free_mux_recv_packet");
++
++ if (!recv_packet) {
++ return;
++ }
++
++ if (recv_packet->data) {
++ kfree(recv_packet->data);
++ }
++ kfree(recv_packet);
++}
++
++static void free_mux_recv_struct(mux_recv_struct * recv_info)
++{
++ mux_recv_packet *recv_packet1, *recv_packet2;
++
++ if (!recv_info) {
++ return;
++ }
++
++ recv_packet1 = recv_info->mux_packet;
++ while (recv_packet1) {
++ recv_packet2 = recv_packet1->next;
++ free_mux_recv_packet(recv_packet1);
++ recv_packet1 = recv_packet2;
++ }
++
++ kfree(recv_info);
++}
++
++static inline void add_post_recv_queue(mux_recv_struct ** head,
++ mux_recv_struct * new_item)
++{
++ new_item->next = *head;
++ *head = new_item;
++}
++
++static void ts0710_flow_on(__u8 dlci, ts0710_con * ts0710)
++{
++ int i;
++ __u8 cmdtty;
++ __u8 datatty;
++ struct tty_struct *tty;
++ mux_recv_struct *recv_info;
++
++ if ((ts0710->dlci[0].state != CONNECTED)
++ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
++ return;
++ } else if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ return;
++ }
++
++ if (!(ts0710->dlci[dlci].flow_control)) {
++ return;
++ }
++
++ cmdtty = dlci2tty[dlci].cmdtty;
++ datatty = dlci2tty[dlci].datatty;
++
++ if (cmdtty != datatty) {
++ /* Check AT cmd tty */
++ tty = mux_table[cmdtty];
++ if (mux_tty[cmdtty] && tty) {
++ if (test_bit(TTY_THROTTLED, &tty->flags)) {
++ return;
++ }
++ }
++ recv_info = mux_recv_info[cmdtty];
++ if (mux_recv_info_flags[cmdtty] && recv_info) {
++ if (recv_info->total) {
++ return;
++ }
++ }
++
++ /* Check data tty */
++ tty = mux_table[datatty];
++ if (mux_tty[datatty] && tty) {
++ if (test_bit(TTY_THROTTLED, &tty->flags)) {
++ return;
++ }
++ }
++ recv_info = mux_recv_info[datatty];
++ if (mux_recv_info_flags[datatty] && recv_info) {
++ if (recv_info->total) {
++ return;
++ }
++ }
++ }
++
++ for (i = 0; i < 3; i++) {
++ if (ts0710_msc_msg(ts0710, EA | RTC | RTR | DV, MCC_CMD, dlci) <
++ 0) {
++ continue;
++ } else {
++ TS0710_LOG("MUX send Flow on on dlci %d\n", dlci);
++ ts0710->dlci[dlci].flow_control = 0;
++ break;
++ }
++ }
++}
++
++static void ts0710_flow_off(struct tty_struct *tty, __u8 dlci,
++ ts0710_con * ts0710)
++{
++ int i;
++
++ if (test_and_set_bit(TTY_THROTTLED, &tty->flags)) {
++ return;
++ }
++
++ if ((ts0710->dlci[0].state != CONNECTED)
++ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
++ return;
++ } else if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ return;
++ }
++
++ if (ts0710->dlci[dlci].flow_control) {
++ return;
++ }
++
++ for (i = 0; i < 3; i++) {
++ if (ts0710_msc_msg
++ (ts0710, EA | FC | RTC | RTR | DV, MCC_CMD, dlci) < 0) {
++ continue;
++ } else {
++ TS0710_LOG("MUX send Flow off on dlci %d\n", dlci);
++ ts0710->dlci[dlci].flow_control = 1;
++ break;
++ }
++ }
++}
++
++int ts0710_recv_data(ts0710_con * ts0710, char *data, int len)
++{
++ short_frame *short_pkt;
++ long_frame *long_pkt;
++ __u8 *uih_data_start;
++ __u32 uih_len;
++ __u8 dlci;
++ __u8 be_connecting;
++#ifdef TS0710DEBUG
++ unsigned long t;
++#endif
++
++ short_pkt = (short_frame *) data;
++
++ dlci = short_pkt->h.addr.server_chn << 1 | short_pkt->h.addr.d;
++ switch (CLR_PF(short_pkt->h.control)) {
++ case SABM:
++ TS0710_DEBUG("SABM-packet received\n");
++
++/*For BP UART problem
++ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
++ break;
++*/
++
++ if (!dlci) {
++ TS0710_DEBUG("server channel == 0\n");
++ ts0710->dlci[0].state = CONNECTED;
++
++ TS0710_DEBUG("sending back UA - control channel\n");
++ send_ua(ts0710, dlci);
++ wake_up_interruptible(&ts0710->dlci[0].open_wait);
++
++ } else if (valid_dlci(dlci)) {
++
++ TS0710_DEBUG("Incomming connect on channel %d\n", dlci);
++
++ TS0710_DEBUG("sending UA, dlci %d\n", dlci);
++ send_ua(ts0710, dlci);
++
++ ts0710->dlci[dlci].state = CONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
++
++ } else {
++ TS0710_DEBUG("invalid dlci %d, sending DM\n", dlci);
++ send_dm(ts0710, dlci);
++ }
++
++ break;
++
++ case UA:
++ TS0710_DEBUG("UA packet received\n");
++
++/*For BP UART problem
++ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
++ break;
++*/
++
++ if (!dlci) {
++ TS0710_DEBUG("server channel == 0\n");
++
++ if (ts0710->dlci[0].state == CONNECTING) {
++ ts0710->dlci[0].state = CONNECTED;
++ wake_up_interruptible(&ts0710->dlci[0].
++ open_wait);
++ } else if (ts0710->dlci[0].state == DISCONNECTING) {
++ ts0710_upon_disconnect();
++ } else {
++ TS0710_DEBUG
++ (" Something wrong receiving UA packet\n");
++ }
++ } else if (valid_dlci(dlci)) {
++ TS0710_DEBUG("Incomming UA on channel %d\n", dlci);
++
++ if (ts0710->dlci[dlci].state == CONNECTING) {
++ ts0710->dlci[dlci].state = CONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].
++ open_wait);
++ } else if (ts0710->dlci[dlci].state == DISCONNECTING) {
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].
++ open_wait);
++ wake_up_interruptible(&ts0710->dlci[dlci].
++ close_wait);
++ ts0710_reset_dlci(dlci);
++ } else {
++ TS0710_DEBUG
++ (" Something wrong receiving UA packet\n");
++ }
++ } else {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ }
++
++ break;
++
++ case DM:
++ TS0710_DEBUG("DM packet received\n");
++
++/*For BP UART problem
++ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
++ break;
++*/
++
++ if (!dlci) {
++ TS0710_DEBUG("server channel == 0\n");
++
++ if (ts0710->dlci[0].state == CONNECTING) {
++ be_connecting = 1;
++ } else {
++ be_connecting = 0;
++ }
++ ts0710_upon_disconnect();
++ if (be_connecting) {
++ ts0710->dlci[0].state = REJECTED;
++ }
++ } else if (valid_dlci(dlci)) {
++ TS0710_DEBUG("Incomming DM on channel %d\n", dlci);
++
++ if (ts0710->dlci[dlci].state == CONNECTING) {
++ ts0710->dlci[dlci].state = REJECTED;
++ } else {
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ }
++ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
++ wake_up_interruptible(&ts0710->dlci[dlci].close_wait);
++ ts0710_reset_dlci(dlci);
++ } else {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ }
++
++ break;
++
++ case DISC:
++ TS0710_DEBUG("DISC packet received\n");
++
++/*For BP UART problem
++ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
++ break;
++*/
++
++ if (!dlci) {
++ TS0710_DEBUG("server channel == 0\n");
++
++ send_ua(ts0710, dlci);
++ TS0710_DEBUG("DISC, sending back UA\n");
++
++ ts0710_upon_disconnect();
++ } else if (valid_dlci(dlci)) {
++ TS0710_DEBUG("Incomming DISC on channel %d\n", dlci);
++
++ send_ua(ts0710, dlci);
++ TS0710_DEBUG("DISC, sending back UA\n");
++
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
++ wake_up_interruptible(&ts0710->dlci[dlci].close_wait);
++ ts0710_reset_dlci(dlci);
++ } else {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ }
++
++ break;
++
++ case UIH:
++ TS0710_DEBUG("UIH packet received\n");
++
++ if ((dlci >= TS0710_MAX_CHN)) {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ send_dm(ts0710, dlci);
++ break;
++ }
++
++ if (GET_PF(short_pkt->h.control)) {
++ TS0710_LOG
++ ("MUX Error %s: UIH packet with P/F set, discard it!\n",
++ __FUNCTION__);
++ break;
++ }
++
++ if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ TS0710_LOG
++ ("MUX Error %s: DLCI %d not connected, discard it!\n",
++ __FUNCTION__, dlci);
++ send_dm(ts0710, dlci);
++ break;
++ }
++
++ if ((short_pkt->h.length.ea) == 0) {
++ TS0710_DEBUG("Long UIH packet received\n");
++ long_pkt = (long_frame *) data;
++ uih_len = GET_LONG_LENGTH(long_pkt->h.length);
++ uih_data_start = long_pkt->h.data;
++ TS0710_DEBUG("long packet length %d\n", uih_len);
++
++/*For BP UART problem
++ if (crc_check(data, LONG_CRC_CHECK, *(uih_data_start + uih_len)))
++ break;
++*/
++ } else {
++ TS0710_DEBUG("Short UIH pkt received\n");
++ uih_len = short_pkt->h.length.len;
++ uih_data_start = short_pkt->data;
++
++/*For BP UART problem
++ if (crc_check(data, SHORT_CRC_CHECK, *(uih_data_start + uih_len)))
++ break;
++*/
++ }
++
++ if (dlci == 0) {
++ TS0710_DEBUG("UIH on serv_channel 0\n");
++ process_mcc(data, len, ts0710,
++ !(short_pkt->h.length.ea));
++ } else if (valid_dlci(dlci)) {
++ /* do tty dispatch */
++ __u8 tag;
++ __u8 tty_idx;
++ struct tty_struct *tty;
++ __u8 queue_data;
++ __u8 post_recv;
++ __u8 flow_control;
++ mux_recv_struct *recv_info;
++ int recv_room;
++ mux_recv_packet *recv_packet, *recv_packet2;
++
++ TS0710_DEBUG("UIH on channel %d\n", dlci);
++
++ if (uih_len > ts0710->dlci[dlci].mtu) {
++ TS0710_PRINTK
++ ("MUX Error: DLCI:%d, uih_len:%d is bigger than mtu:%d, discard data!\n",
++ dlci, uih_len, ts0710->dlci[dlci].mtu);
++ break;
++ }
++
++ tag = *uih_data_start;
++ uih_data_start++;
++ uih_len--;
++
++ if (!uih_len) {
++ break;
++ }
++
++ switch (tag) {
++ case CMDTAG:
++ tty_idx = dlci2tty[dlci].cmdtty;
++ TS0710_DEBUG("CMDTAG on DLCI:%d, /dev/mux%d\n",
++ dlci, tty_idx);
++ TS0710_DEBUGSTR(uih_data_start, uih_len);
++ if (!(iscmdtty[tty_idx])) {
++ TS0710_PRINTK
++ ("MUX Error: %s: Wrong CMDTAG on DLCI:%d, /dev/mux%d\n",
++ __FUNCTION__, dlci, tty_idx);
++ }
++ break;
++ case DATATAG:
++ default:
++ tty_idx = dlci2tty[dlci].datatty;
++ TS0710_DEBUG
++ ("NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
++ dlci, tty_idx);
++ if (iscmdtty[tty_idx]) {
++ TS0710_PRINTK
++ ("MUX Error: %s: Wrong NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
++ __FUNCTION__, dlci, tty_idx);
++ }
++ break;
++ }
++ tty = mux_table[tty_idx];
++ if ((!mux_tty[tty_idx]) || (!tty)) {
++ TS0710_PRINTK
++ ("MUX: No application waiting for, discard it! /dev/mux%d\n",
++ tty_idx);
++ } else { /* Begin processing received data */
++ if ((!mux_recv_info_flags[tty_idx])
++ || (!mux_recv_info[tty_idx])) {
++ TS0710_PRINTK
++ ("MUX Error: No mux_recv_info, discard it! /dev/mux%d\n",
++ tty_idx);
++ break;
++ }
++
++ recv_info = mux_recv_info[tty_idx];
++ if (recv_info->total > 8192) {
++ TS0710_PRINTK
++ ("MUX : discard data for tty_idx:%d, recv_info->total > 8192 \n",
++ tty_idx);
++ break;
++ }
++
++ queue_data = 0;
++ post_recv = 0;
++ flow_control = 0;
++ recv_room = 65535;
++ if (tty->receive_room)
++ recv_room = tty->receive_room;
++
++ if (test_bit(TTY_THROTTLED, &tty->flags)) {
++ queue_data = 1;
++ } else {
++ if (test_bit
++ (TTY_DONT_FLIP, &tty->flags)) {
++ queue_data = 1;
++ post_recv = 1;
++ } else if (recv_info->total) {
++ queue_data = 1;
++ post_recv = 1;
++ } else if (recv_room < uih_len) {
++ queue_data = 1;
++ flow_control = 1;
++ }
++
++ if ((recv_room -
++ (uih_len + recv_info->total)) <
++ ts0710->dlci[dlci].mtu) {
++ flow_control = 1;
++ }
++ }
++
++ if (!queue_data) {
++ /* Put received data into read buffer of tty */
++ TS0710_DEBUG
++ ("Put received data into read buffer of /dev/mux%d",
++ tty_idx);
++
++#ifdef TS0710DEBUG
++ t = jiffies;
++#endif
++
++ (tty->ldisc.receive_buf) (tty,
++ uih_data_start,
++ NULL,
++ uih_len);
++
++#ifdef TS0710DEBUG
++ TS0710_DEBUG
++ ("tty->ldisc.receive_buf take ticks: %lu",
++ (jiffies - t));
++#endif
++
++ } else { /* Queue data */
++
++ TS0710_DEBUG
++ ("Put received data into recv queue of /dev/mux%d",
++ tty_idx);
++ if (recv_info->total) {
++ /* recv_info is already linked into mux_recv_queue */
++
++ recv_packet =
++ get_mux_recv_packet
++ (uih_len);
++ if (!recv_packet) {
++ TS0710_PRINTK
++ ("MUX %s: no memory\n",
++ __FUNCTION__);
++ break;
++ }
++
++ memcpy(recv_packet->data,
++ uih_data_start, uih_len);
++ recv_packet->length = uih_len;
++ recv_info->total += uih_len;
++ recv_packet->next = NULL;
++
++ if (!(recv_info->mux_packet)) {
++ recv_info->mux_packet =
++ recv_packet;
++ } else {
++ recv_packet2 =
++ recv_info->
++ mux_packet;
++ while (recv_packet2->
++ next) {
++ recv_packet2 =
++ recv_packet2->
++ next;
++ }
++ recv_packet2->next =
++ recv_packet;
++ } /* End if( !(recv_info->mux_packet) ) */
++ } else { /* recv_info->total == 0 */
++ if (uih_len >
++ TS0710MUX_RECV_BUF_SIZE) {
++ TS0710_PRINTK
++ ("MUX Error: tty_idx:%d, uih_len == %d is too big\n",
++ tty_idx, uih_len);
++ uih_len =
++ TS0710MUX_RECV_BUF_SIZE;
++ }
++ memcpy(recv_info->data,
++ uih_data_start, uih_len);
++ recv_info->length = uih_len;
++ recv_info->total = uih_len;
++
++ add_post_recv_queue
++ (&mux_recv_queue,
++ recv_info);
++ } /* End recv_info->total == 0 */
++ } /* End Queue data */
++
++ if (flow_control) {
++ /* Do something for flow control */
++ ts0710_flow_off(tty, dlci, ts0710);
++ }
++
++ if (tty_idx ==
++ dlci2tty[TS0710MUX_GPRS1_DLCI].datatty) {
++ if (add_count
++ (TS0710MUX_GPRS1_RECV_COUNT_IDX,
++ uih_len) < 0) {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ mux_data_count2
++ [TS0710MUX_GPRS1_RECV_COUNT_IDX]
++ += uih_len;
++ }
++ } else if (tty_idx ==
++ dlci2tty[TS0710MUX_GPRS2_DLCI].
++ datatty) {
++ if (add_count
++ (TS0710MUX_GPRS2_RECV_COUNT_IDX,
++ uih_len) < 0) {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ mux_data_count2
++ [TS0710MUX_GPRS2_RECV_COUNT_IDX]
++ += uih_len;
++ }
++ }
++
++ if (post_recv)
++ schedule_work(&post_recv_tqueue);
++ } /* End processing received data */
++ } else {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ }
++
++ break;
++
++ default:
++ TS0710_DEBUG("illegal packet\n");
++ break;
++ }
++ return 0;
++}
++
++/*
++int ts0710_send_data(ts0710_con *ts0710, __u8 dlci, __u8 *data, __u32 count)
++{
++ __u32 c, total = 0;
++ __u8 tag, first;
++
++ if( ts0710->dlci[0].state == FLOW_STOPPED ){
++ TS0710_DEBUG("Flow stopped on all channels, returning zero\n");
++*/
++/*
++ return -EFLOWSTOPPED;
++ } else if( ts0710->dlci[dlci].state == FLOW_STOPPED ){
++ TS0710_DEBUG("Flow stopped, returning zero\n");
++*/
++/*
++ return -EFLOWSTOPPED;
++ } else if( ts0710->dlci[dlci].state == CONNECTED ){
++
++ TS0710_DEBUG("trying to send %d bytes\n", count);
++ tag = *data;
++ first = 1;
++*/
++ /* The first byte is always a Cmd/Data tag */
++/*
++ while( count > 1 ){
++
++ c = min(count, ts0710->dlci[dlci].mtu);
++ if( queue_uih(data, c, ts0710, dlci) <= 0 ) {
++ break;
++ }
++
++ total += (c - 1);
++ data += (c - 1);
++ *data = tag;
++ count -= (c - 1);
++
++ if( first ) {
++ first = 0;
++ total++;
++ }
++ }
++ TS0710_DEBUG("sent %d bytes\n", total);
++ return total;
++ } else {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ return -EDISCONNECTED;
++ }
++}
++*/
++
++/* Close ts0710 channel */
++static void ts0710_close_channel(__u8 dlci)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int try;
++ unsigned long t;
++
++ TS0710_DEBUG("ts0710_disc_command on channel %d\n", dlci);
++
++ if ((ts0710->dlci[dlci].state == DISCONNECTED)
++ || (ts0710->dlci[dlci].state == REJECTED)) {
++ return;
++ } else if (ts0710->dlci[dlci].state == DISCONNECTING) {
++ /* Reentry */
++ return;
++ } else {
++ ts0710->dlci[dlci].state = DISCONNECTING;
++ try = 3;
++ while (try--) {
++ t = jiffies;
++ send_disc(ts0710, dlci);
++ interruptible_sleep_on_timeout(&ts0710->dlci[dlci].
++ close_wait,
++ TS0710MUX_TIME_OUT);
++ if (ts0710->dlci[dlci].state == DISCONNECTED) {
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI %d Send DISC got signal!\n",
++ dlci);
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI %d Send DISC timeout!\n", dlci);
++ continue;
++ }
++ }
++
++ if (ts0710->dlci[dlci].state != DISCONNECTED) {
++ if (dlci == 0) { /* Control Channel */
++ ts0710_upon_disconnect();
++ } else { /* Other Channel */
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].
++ close_wait);
++ ts0710_reset_dlci(dlci);
++ }
++ }
++ }
++}
++
++int ts0710_open_channel(__u8 dlci)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int try;
++ int retval;
++ unsigned long t;
++
++ retval = -ENODEV;
++ if (dlci == 0) { // control channel
++ if ((ts0710->dlci[0].state == CONNECTED)
++ || (ts0710->dlci[0].state == FLOW_STOPPED)) {
++ return 0;
++ } else if (ts0710->dlci[0].state == CONNECTING) {
++ /* Reentry */
++ TS0710_PRINTK
++ ("MUX DLCI: 0, reentry to open DLCI 0, pid: %d, %s !\n",
++ current->pid, current->comm);
++ try = 11;
++ while (try--) {
++ t = jiffies;
++ interruptible_sleep_on_timeout(&ts0710->dlci[0].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if ((ts0710->dlci[0].state == CONNECTED)
++ || (ts0710->dlci[0].state ==
++ FLOW_STOPPED)) {
++ retval = 0;
++ break;
++ } else if (ts0710->dlci[0].state == REJECTED) {
++ retval = -EREJECTED;
++ break;
++ } else if (ts0710->dlci[0].state ==
++ DISCONNECTED) {
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Wait for connecting got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Wait for connecting timeout!\n",
++ dlci);
++ continue;
++ } else if (ts0710->dlci[0].state == CONNECTING) {
++ continue;
++ }
++ }
++
++ if (ts0710->dlci[0].state == CONNECTING) {
++ ts0710->dlci[0].state = DISCONNECTED;
++ }
++ } else if ((ts0710->dlci[0].state != DISCONNECTED)
++ && (ts0710->dlci[0].state != REJECTED)) {
++ TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
++ return retval;
++ } else {
++ ts0710->initiator = 1;
++ ts0710->dlci[0].state = CONNECTING;
++ ts0710->dlci[0].initiator = 1;
++ try = 10;
++ while (try--) {
++ t = jiffies;
++ send_sabm(ts0710, 0);
++ interruptible_sleep_on_timeout(&ts0710->dlci[0].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if ((ts0710->dlci[0].state == CONNECTED)
++ || (ts0710->dlci[0].state ==
++ FLOW_STOPPED)) {
++ retval = 0;
++ break;
++ } else if (ts0710->dlci[0].state == REJECTED) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM got rejected!\n",
++ dlci);
++ retval = -EREJECTED;
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM timeout!\n",
++ dlci);
++ continue;
++ }
++ }
++
++ if (ts0710->dlci[0].state == CONNECTING) {
++ ts0710->dlci[0].state = DISCONNECTED;
++ }
++ wake_up_interruptible(&ts0710->dlci[0].open_wait);
++ }
++ } else { // other channel
++ if ((ts0710->dlci[0].state != CONNECTED)
++ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
++ return retval;
++ } else if ((ts0710->dlci[dlci].state == CONNECTED)
++ || (ts0710->dlci[dlci].state == FLOW_STOPPED)) {
++ return 0;
++ } else if ((ts0710->dlci[dlci].state == NEGOTIATING)
++ || (ts0710->dlci[dlci].state == CONNECTING)) {
++ /* Reentry */
++ try = 8;
++ while (try--) {
++ t = jiffies;
++ interruptible_sleep_on_timeout(&ts0710->
++ dlci[dlci].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if ((ts0710->dlci[dlci].state == CONNECTED)
++ || (ts0710->dlci[dlci].state ==
++ FLOW_STOPPED)) {
++ retval = 0;
++ break;
++ } else if (ts0710->dlci[dlci].state == REJECTED) {
++ retval = -EREJECTED;
++ break;
++ } else if (ts0710->dlci[dlci].state ==
++ DISCONNECTED) {
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Wait for connecting got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Wait for connecting timeout!\n",
++ dlci);
++ continue;
++ } else
++ if ((ts0710->dlci[dlci].state ==
++ NEGOTIATING)
++ || (ts0710->dlci[dlci].state ==
++ CONNECTING)) {
++ continue;
++ }
++ }
++
++ if ((ts0710->dlci[dlci].state == NEGOTIATING)
++ || (ts0710->dlci[dlci].state == CONNECTING)) {
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ }
++ } else if ((ts0710->dlci[dlci].state != DISCONNECTED)
++ && (ts0710->dlci[dlci].state != REJECTED)) {
++ TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
++ return retval;
++ } else {
++ ts0710->dlci[dlci].state = NEGOTIATING;
++ ts0710->dlci[dlci].initiator = 1;
++ try = 3;
++ while (try--) {
++ t = jiffies;
++ send_pn_msg(ts0710, 7, ts0710->dlci[dlci].mtu,
++ 0, 0, dlci, 1);
++ interruptible_sleep_on_timeout(&ts0710->
++ dlci[dlci].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if (ts0710->dlci[dlci].state == CONNECTING) {
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send pn_msg got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send pn_msg timeout!\n",
++ dlci);
++ continue;
++ }
++ }
++
++ if (ts0710->dlci[dlci].state == CONNECTING) {
++ try = 3;
++ while (try--) {
++ t = jiffies;
++ send_sabm(ts0710, dlci);
++ interruptible_sleep_on_timeout(&ts0710->
++ dlci
++ [dlci].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if ((ts0710->dlci[dlci].state ==
++ CONNECTED)
++ || (ts0710->dlci[dlci].state ==
++ FLOW_STOPPED)) {
++ retval = 0;
++ break;
++ } else if (ts0710->dlci[dlci].state ==
++ REJECTED) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM got rejected!\n",
++ dlci);
++ retval = -EREJECTED;
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >=
++ TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM timeout!\n",
++ dlci);
++ continue;
++ }
++ }
++ }
++
++ if ((ts0710->dlci[dlci].state == NEGOTIATING)
++ || (ts0710->dlci[dlci].state == CONNECTING)) {
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ }
++ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
++ }
++ }
++ return retval;
++}
++
++static int ts0710_exec_test_cmd(void)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ __u8 *f_buf; /* Frame buffer */
++ __u8 *d_buf; /* Data buffer */
++ int retval = -EFAULT;
++ int j;
++ unsigned long t;
++
++ if (ts0710->be_testing) {
++ /* Reentry */
++ t = jiffies;
++ interruptible_sleep_on_timeout(&ts0710->test_wait,
++ 3 * TS0710MUX_TIME_OUT);
++ if (ts0710->be_testing == 0) {
++ if (ts0710->test_errs == 0) {
++ retval = 0;
++ } else {
++ retval = -EFAULT;
++ }
++ } else if (signal_pending(current)) {
++ TS0710_DEBUG
++ ("Wait for Test_cmd response got signal!\n");
++ retval = -EAGAIN;
++ } else if ((jiffies - t) >= 3 * TS0710MUX_TIME_OUT) {
++ TS0710_DEBUG("Wait for Test_cmd response timeout!\n");
++ retval = -EFAULT;
++ }
++ } else {
++ ts0710->be_testing = 1; /* Set the flag */
++
++ f_buf = (__u8 *) kmalloc(TEST_PATTERN_SIZE + 32, GFP_KERNEL);
++ d_buf = (__u8 *) kmalloc(TEST_PATTERN_SIZE + 32, GFP_KERNEL);
++ if ((!f_buf) || (!d_buf)) {
++ if (f_buf) {
++ kfree(f_buf);
++ }
++ if (d_buf) {
++ kfree(d_buf);
++ }
++
++ ts0710->be_testing = 0; /* Clear the flag */
++ ts0710->test_errs = TEST_PATTERN_SIZE;
++ wake_up_interruptible(&ts0710->test_wait);
++ return -ENOMEM;
++ }
++
++ for (j = 0; j < TEST_PATTERN_SIZE; j++) {
++ d_buf[j] = j & 0xFF;
++ }
++
++ t = jiffies;
++ ts0710_test_msg(ts0710, d_buf, TEST_PATTERN_SIZE, MCC_CMD,
++ f_buf);
++ interruptible_sleep_on_timeout(&ts0710->test_wait,
++ 2 * TS0710MUX_TIME_OUT);
++ if (ts0710->be_testing == 0) {
++ if (ts0710->test_errs == 0) {
++ retval = 0;
++ } else {
++ retval = -EFAULT;
++ }
++ } else if (signal_pending(current)) {
++ TS0710_DEBUG("Send Test_cmd got signal!\n");
++ retval = -EAGAIN;
++ } else if ((jiffies - t) >= 2 * TS0710MUX_TIME_OUT) {
++ TS0710_DEBUG("Send Test_cmd timeout!\n");
++ ts0710->test_errs = TEST_PATTERN_SIZE;
++ retval = -EFAULT;
++ }
++
++ ts0710->be_testing = 0; /* Clear the flag */
++ wake_up_interruptible(&ts0710->test_wait);
++
++ /* Release buffer */
++ if (f_buf) {
++ kfree(f_buf);
++ }
++ if (d_buf) {
++ kfree(d_buf);
++ }
++ }
++
++ return retval;
++}
++
++static void mux_sched_send(void)
++{
++
++#ifdef USB_FOR_MUX
++ schedule_work(&send_tqueue);
++#else
++ if (!tq_serial_for_mux) {
++ TS0710_PRINTK("MUX Error: %s: tq_serial_for_mux == 0\n",
++ __FUNCTION__);
++ return;
++ }
++ schedule_work(&send_tqueue);
++ mark_bh(SERIAL_BH);
++#endif
++
++}
++
++/****************************
++ * TTY driver routines
++*****************************/
++
++static void mux_close(struct tty_struct *tty, struct file *filp)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ __u8 dlci;
++ __u8 cmdtty;
++ __u8 datatty;
++
++ UNUSED_PARAM(filp);
++
++ if (!tty) {
++ return;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return;
++ }
++ if (mux_tty[line] > 0)
++ mux_tty[line]--;
++
++ dlci = tty2dlci[line];
++ cmdtty = dlci2tty[dlci].cmdtty;
++ datatty = dlci2tty[dlci].datatty;
++ if ((mux_tty[cmdtty] == 0) && (mux_tty[datatty] == 0)) {
++ if (dlci == 1) {
++ ts0710_close_channel(0);
++ TS0710_PRINTK
++ ("MUX mux_close: tapisrv might be down!!! Close DLCI 1\n");
++ TS0710_SIG2APLOGD();
++ }
++ ts0710_close_channel(dlci);
++ }
++
++ if (mux_tty[line] == 0) {
++ if ((mux_send_info_flags[line])
++ && (mux_send_info[line])
++ /*&& (mux_send_info[line]->filled == 0) */
++ ) {
++ mux_send_info_flags[line] = 0;
++ kfree(mux_send_info[line]);
++ mux_send_info[line] = 0;
++ TS0710_DEBUG("Free mux_send_info for /dev/mux%d", line);
++ }
++
++ if ((mux_recv_info_flags[line])
++ && (mux_recv_info[line])
++ && (mux_recv_info[line]->total == 0)) {
++ mux_recv_info_flags[line] = 0;
++ free_mux_recv_struct(mux_recv_info[line]);
++ mux_recv_info[line] = 0;
++ TS0710_DEBUG("Free mux_recv_info for /dev/mux%d", line);
++ }
++
++ ts0710_flow_on(dlci, ts0710);
++ schedule_work(&post_recv_tqueue);
++
++ wake_up_interruptible(&tty->read_wait);
++ wake_up_interruptible(&tty->write_wait);
++ tty->packet = 0;
++ }
++}
++
++static void mux_throttle(struct tty_struct *tty)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ int i;
++ __u8 dlci;
++
++ if (!tty) {
++ return;
++ }
++
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return;
++ }
++
++ TS0710_DEBUG("Enter into %s, minor number is: %d\n", __FUNCTION__,
++ line);
++
++ dlci = tty2dlci[line];
++ if ((ts0710->dlci[0].state != CONNECTED)
++ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
++ return;
++ } else if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ return;
++ }
++
++ if (ts0710->dlci[dlci].flow_control) {
++ return;
++ }
++
++ for (i = 0; i < 3; i++) {
++ if (ts0710_msc_msg
++ (ts0710, EA | FC | RTC | RTR | DV, MCC_CMD, dlci) < 0) {
++ continue;
++ } else {
++ TS0710_LOG("MUX Send Flow off on dlci %d\n", dlci);
++ ts0710->dlci[dlci].flow_control = 1;
++ break;
++ }
++ }
++}
++
++static void mux_unthrottle(struct tty_struct *tty)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ __u8 dlci;
++ mux_recv_struct *recv_info;
++
++ if (!tty) {
++ return;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return;
++ }
++
++ if ((!mux_recv_info_flags[line]) || (!mux_recv_info[line])) {
++ return;
++ }
++
++ TS0710_DEBUG("Enter into %s, minor number is: %d\n", __FUNCTION__,
++ line);
++
++ recv_info = mux_recv_info[line];
++ dlci = tty2dlci[line];
++
++ if (recv_info->total) {
++ recv_info->post_unthrottle = 1;
++ schedule_work(&post_recv_tqueue);
++ } else {
++ ts0710_flow_on(dlci, ts0710);
++ }
++}
++
++static int mux_chars_in_buffer(struct tty_struct *tty)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int retval;
++ int line;
++ __u8 dlci;
++ mux_send_struct *send_info;
++
++ retval = TS0710MUX_MAX_CHARS_IN_BUF;
++ if (!tty) {
++ goto out;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ goto out;
++ }
++
++ dlci = tty2dlci[line];
++ if (ts0710->dlci[0].state == FLOW_STOPPED) {
++ TS0710_DEBUG
++ ("Flow stopped on all channels, returning MAX chars in buffer\n");
++ goto out;
++ } else if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped, returning MAX chars in buffer\n");
++ goto out;
++ } else if (ts0710->dlci[dlci].state != CONNECTED) {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ goto out;
++ }
++
++ if (!(mux_send_info_flags[line])) {
++ goto out;
++ }
++ send_info = mux_send_info[line];
++ if (!send_info) {
++ goto out;
++ }
++ if (send_info->filled) {
++ goto out;
++ }
++
++ retval = 0;
++
++ out:
++ return retval;
++}
++
++static int mux_chars_in_serial_buffer(struct tty_struct *tty)
++{
++ UNUSED_PARAM(tty);
++
++ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
++ TS0710_PRINTK
++ ("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n",
++ __FUNCTION__);
++
++#ifndef USB_FOR_MUX
++ TS0710_PRINTK
++ ("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n",
++ __FUNCTION__);
++ TS0710_SIG2APLOGD();
++#endif
++
++ return 0;
++ }
++ return COMM_FOR_MUX_DRIVER->chars_in_buffer(COMM_FOR_MUX_TTY);
++}
++
++static int mux_write(struct tty_struct *tty,
++ const unsigned char *buf, int count)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ __u8 dlci;
++ mux_send_struct *send_info;
++ __u8 *d_buf;
++ __u16 c;
++ __u8 post_recv;
++
++ if (count <= 0) {
++ return 0;
++ }
++
++ if (!tty) {
++ return 0;
++ }
++
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS))
++ return -ENODEV;
++
++ dlci = tty2dlci[line];
++ if (ts0710->dlci[0].state == FLOW_STOPPED) {
++ TS0710_DEBUG
++ ("Flow stopped on all channels, returning zero /dev/mux%d\n",
++ line);
++ return 0;
++ } else if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped, returning zero /dev/mux%d\n", line);
++ return 0;
++ } else if (ts0710->dlci[dlci].state == CONNECTED) {
++
++ if (!(mux_send_info_flags[line])) {
++ TS0710_PRINTK
++ ("MUX Error: mux_write: mux_send_info_flags[%d] == 0\n",
++ line);
++ return -ENODEV;
++ }
++ send_info = mux_send_info[line];
++ if (!send_info) {
++ TS0710_PRINTK
++ ("MUX Error: mux_write: mux_send_info[%d] == 0\n",
++ line);
++ return -ENODEV;
++ }
++
++ c = min(count, (ts0710->dlci[dlci].mtu - 1));
++ if (c <= 0) {
++ return 0;
++ }
++
++ if (test_and_set_bit(BUF_BUSY, &send_info->flags))
++ return 0;
++
++ if (send_info->filled) {
++ clear_bit(BUF_BUSY, &send_info->flags);
++ return 0;
++ }
++
++ d_buf = ((__u8 *) send_info->buf) + TS0710MUX_SEND_BUF_OFFSET;
++ memcpy(&d_buf[1], buf, c);
++
++ TS0710_DEBUG("Prepare to send %d bytes from /dev/mux%d", c,
++ line);
++ if (iscmdtty[line]) {
++ TS0710_DEBUGSTR(&d_buf[1], c);
++ TS0710_DEBUG("CMDTAG");
++ d_buf[0] = CMDTAG;
++ } else {
++ TS0710_DEBUG("DATATAG");
++ d_buf[0] = DATATAG;
++ }
++
++ TS0710_DEBUGHEX(d_buf, c + 1);
++
++ send_info->frame = d_buf;
++ queue_uih(send_info, c + 1, ts0710, dlci);
++ send_info->filled = 1;
++ clear_bit(BUF_BUSY, &send_info->flags);
++
++ post_recv = 0;
++ if (dlci == TS0710MUX_GPRS1_DLCI) {
++ if (add_count
++ (TS0710MUX_GPRS1_SEND_COUNT_IDX, c) < 0) {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ mux_data_count2[TS0710MUX_GPRS1_SEND_COUNT_IDX]
++ += c;
++ }
++ } else if (dlci == TS0710MUX_GPRS2_DLCI) {
++ if (add_count
++ (TS0710MUX_GPRS2_SEND_COUNT_IDX, c) < 0) {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ mux_data_count2[TS0710MUX_GPRS2_SEND_COUNT_IDX]
++ += c;
++ }
++ }
++
++ if (post_recv)
++ schedule_work(&post_recv_tqueue);
++
++ if (mux_chars_in_serial_buffer(COMM_FOR_MUX_TTY) == 0) {
++ /* Sending bottom half should be
++ run after return from this function */
++ mux_sched_send();
++ }
++ return c;
++ } else {
++ TS0710_PRINTK("MUX mux_write: DLCI %d not connected\n", dlci);
++ return -EDISCONNECTED;
++ }
++}
++
++static int mux_write_room(struct tty_struct *tty)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int retval;
++ int line;
++ __u8 dlci;
++ mux_send_struct *send_info;
++
++ retval = 0;
++ if (!tty) {
++ goto out;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ goto out;
++ }
++
++ dlci = tty2dlci[line];
++ if (ts0710->dlci[0].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped on all channels, returning ZERO\n");
++ goto out;
++ } else if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped, returning ZERO\n");
++ goto out;
++ } else if (ts0710->dlci[dlci].state != CONNECTED) {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ goto out;
++ }
++
++ if (!(mux_send_info_flags[line])) {
++ goto out;
++ }
++ send_info = mux_send_info[line];
++ if (!send_info) {
++ goto out;
++ }
++ if (send_info->filled) {
++ goto out;
++ }
++
++ retval = ts0710->dlci[dlci].mtu - 1;
++
++ out:
++ return retval;
++}
++
++static int mux_ioctl(struct tty_struct *tty, struct file *file,
++ unsigned int cmd, unsigned long arg)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ __u8 dlci;
++
++ UNUSED_PARAM(file);
++ UNUSED_PARAM(arg);
++
++ if (!tty) {
++ return -EIO;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return -ENODEV;
++ }
++
++ dlci = tty2dlci[line];
++ switch (cmd) {
++ case TS0710MUX_IO_MSC_HANGUP:
++ if (ts0710_msc_msg(ts0710, EA | RTR | DV, MCC_CMD, dlci) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++
++ case TS0710MUX_IO_TEST_CMD:
++ return ts0710_exec_test_cmd();
++/*
++ case TS0710MUX_IO_DLCI_FC_ON:
++ if( line == 0 ) {
++ break;
++ }
++ if( ts0710_msc_msg(ts0710, EA | RTC | RTR | DV, MCC_CMD, (__u8)line) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++
++ case TS0710MUX_IO_DLCI_FC_OFF:
++ if( line == 0 ) {
++ break;
++ }
++ if( ts0710_msc_msg(ts0710, EA | FC | RTC | RTR | DV, MCC_CMD, (__u8)line) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++
++ case TS0710MUX_IO_FC_ON:
++ if( line != 0 ) {
++ break;
++ }
++ if( ts0710_fcon_msg(ts0710, MCC_CMD) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++
++ case TS0710MUX_IO_FC_OFF:
++ if( line != 0 ) {
++ break;
++ }
++ if( ts0710_fcoff_msg(ts0710, MCC_CMD) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++*/
++ default:
++ break;
++ }
++ return -ENOIOCTLCMD;
++}
++
++static void mux_flush_buffer(struct tty_struct *tty)
++{
++ int line;
++
++ if (!tty) {
++ return;
++ }
++
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return;
++ }
++
++ TS0710_PRINTK("MUX %s: line is:%d\n", __FUNCTION__, line);
++
++ if ((mux_send_info_flags[line])
++ && (mux_send_info[line])
++ && (mux_send_info[line]->filled)) {
++
++ mux_send_info[line]->filled = 0;
++ }
++
++ wake_up_interruptible(&tty->write_wait);
++#ifdef SERIAL_HAVE_POLL_WAIT
++ wake_up_interruptible(&tty->poll_wait);
++#endif
++ if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&
++ tty->ldisc.write_wakeup) {
++ (tty->ldisc.write_wakeup) (tty);
++ }
++
++/*
++ if( (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0) ) {
++ TS0710_PRINTK("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n", __FUNCTION__);
++
++#ifndef USB_FOR_MUX
++ TS0710_PRINTK("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n", __FUNCTION__);
++ TS0710_SIG2APLOGD();
++#endif
++
++ return;
++ }
++ return COMM_FOR_MUX_DRIVER->flush_buffer(COMM_FOR_MUX_TTY);
++*/
++}
++
++static int mux_open(struct tty_struct *tty, struct file *filp)
++{
++ int retval;
++ int line;
++ __u8 dlci;
++ __u8 cmdtty;
++ __u8 datatty;
++ mux_send_struct *send_info;
++ mux_recv_struct *recv_info;
++
++ UNUSED_PARAM(filp);
++
++ retval = -ENODEV;
++ if ((COMM_FOR_MUX_DRIVER == NULL) || (COMM_FOR_MUX_TTY == NULL)) {
++
++#ifdef USB_FOR_MUX
++ TS0710_PRINTK("MUX: please install and open IPC-USB first\n");
++#else
++ TS0710_PRINTK("MUX: please install and open ttyS0 first\n");
++#endif
++
++ goto out;
++ }
++
++ if (!tty) {
++ goto out;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ goto out;
++ }
++#ifdef TS0710SERVER
++ /* do nothing as a server */
++ mux_tty[line]++;
++ retval = 0;
++#else
++ mux_tty[line]++;
++ dlci = tty2dlci[line];
++
++/* if( dlci == 1 ) { */
++ /* Open server channel 0 first */
++ if ((retval = ts0710_open_channel(0)) != 0) {
++ TS0710_PRINTK("MUX: Can't connect server channel 0!\n");
++ ts0710_init();
++
++ mux_tty[line]--;
++ goto out;
++ }
++/* } */
++
++ /* Allocate memory first. As soon as connection has been established, MUX may receive */
++ if (mux_send_info_flags[line] == 0) {
++ send_info =
++ (mux_send_struct *) kmalloc(sizeof(mux_send_struct),
++ GFP_KERNEL);
++ if (!send_info) {
++ retval = -ENOMEM;
++
++ mux_tty[line]--;
++ goto out;
++ }
++ send_info->length = 0;
++ send_info->flags = 0;
++ send_info->filled = 0;
++ mux_send_info[line] = send_info;
++ mux_send_info_flags[line] = 1;
++ TS0710_DEBUG("Allocate mux_send_info for /dev/mux%d", line);
++ }
++
++ if (mux_recv_info_flags[line] == 0) {
++ recv_info =
++ (mux_recv_struct *) kmalloc(sizeof(mux_recv_struct),
++ GFP_KERNEL);
++ if (!recv_info) {
++ mux_send_info_flags[line] = 0;
++ kfree(mux_send_info[line]);
++ mux_send_info[line] = 0;
++ TS0710_DEBUG("Free mux_send_info for /dev/mux%d", line);
++ retval = -ENOMEM;
++
++ mux_tty[line]--;
++ goto out;
++ }
++ recv_info->length = 0;
++ recv_info->total = 0;
++ recv_info->mux_packet = 0;
++ recv_info->next = 0;
++ recv_info->no_tty = line;
++ recv_info->post_unthrottle = 0;
++ mux_recv_info[line] = recv_info;
++ mux_recv_info_flags[line] = 1;
++ TS0710_DEBUG("Allocate mux_recv_info for /dev/mux%d", line);
++ }
++
++ /* Now establish DLCI connection */
++ cmdtty = dlci2tty[dlci].cmdtty;
++ datatty = dlci2tty[dlci].datatty;
++ if ((mux_tty[cmdtty] > 0) || (mux_tty[datatty] > 0)) {
++ if ((retval = ts0710_open_channel(dlci)) != 0) {
++ TS0710_PRINTK("MUX: Can't connected channel %d!\n",
++ dlci);
++ ts0710_reset_dlci(dlci);
++
++ mux_send_info_flags[line] = 0;
++ kfree(mux_send_info[line]);
++ mux_send_info[line] = 0;
++ TS0710_DEBUG("Free mux_send_info for /dev/mux%d", line);
++
++ mux_recv_info_flags[line] = 0;
++ free_mux_recv_struct(mux_recv_info[line]);
++ mux_recv_info[line] = 0;
++ TS0710_DEBUG("Free mux_recv_info for /dev/mux%d", line);
++
++ mux_tty[line]--;
++ goto out;
++ }
++ }
++
++ retval = 0;
++#endif
++ out:
++ return retval;
++}
++
++/* mux dispatcher, call from serial.c receiver_chars() */
++void mux_dispatcher(struct tty_struct *tty)
++{
++ UNUSED_PARAM(tty);
++
++ schedule_work(&receive_tqueue);
++}
++
++/*For BP UART problem Begin*/
++#ifdef TS0710SEQ2
++static int send_ack(ts0710_con * ts0710, __u8 seq_num, __u8 bp_seq1,
++ __u8 bp_seq2)
++#else
++static int send_ack(ts0710_con * ts0710, __u8 seq_num)
++#endif
++{
++ __u8 buf[20];
++ short_frame *ack;
++
++#ifdef TS0710SEQ2
++ static __u16 ack_seq = 0;
++#endif
++
++ ack = (short_frame *) (buf + 1);
++ ack->h.addr.ea = 1;
++ ack->h.addr.cr = ((ts0710->initiator) & 0x1);
++ ack->h.addr.d = 0;
++ ack->h.addr.server_chn = 0;
++ ack->h.control = ACK;
++ ack->h.length.ea = 1;
++
++#ifdef TS0710SEQ2
++ ack->h.length.len = 5;
++ ack->data[0] = seq_num;
++ ack->data[1] = bp_seq1;
++ ack->data[2] = bp_seq2;
++ ack->data[3] = (ack_seq & 0xFF);
++ ack->data[4] = (ack_seq >> 8) & 0xFF;
++ ack_seq++;
++ ack->data[5] = crc_calc((__u8 *) ack, SHORT_CRC_CHECK);
++#else
++ ack->h.length.len = 1;
++ ack->data[0] = seq_num;
++ ack->data[1] = crc_calc((__u8 *) ack, SHORT_CRC_CHECK);
++#endif
++
++ return basic_write(ts0710, buf,
++ (sizeof(short_frame) + FCS_SIZE +
++ ack->h.length.len));
++}
++
++/*For BP UART problem End*/
++
++static void receive_worker(void *private_)
++{
++ struct tty_struct *tty = COMM_FOR_MUX_TTY;
++ int i, count;
++ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
++ static unsigned char *tbuf_ptr = &tbuf[0];
++ static unsigned char *start_flag = 0;
++ unsigned char *search, *to, *from;
++ short_frame *short_pkt;
++ long_frame *long_pkt;
++ static int framelen = -1;
++
++ /*For BP UART problem Begin */
++ static __u8 expect_seq = 0;
++ __u32 crc_error;
++ __u8 *uih_data_start;
++ __u32 uih_len;
++ /*For BP UART problem End */
++
++ UNUSED_PARAM(private_);
++
++ if (!tty)
++ return;
++
++#ifdef USB_FOR_MUX
++ TS0710_DEBUG("Receive following bytes from IPC-USB");
++#else
++ TS0710_DEBUG("Receive following bytes from UART");
++#endif
++
++ TS0710_DEBUGHEX(cp, count);
++
++ if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
++ TS0710_PRINTK
++ ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
++ count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
++ }
++
++ count = tty_buffer_request_room(tty, count);
++
++ for (i = 0; i < count; i++)
++ tty_insert_flip_char(tty, tbuf_ptr[i], TTY_NORMAL);
++
++ tbuf_ptr += count;
++ search = &tbuf[0];
++
++ if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
++ schedule_work(&receive_tqueue);
++ return;
++ }
++
++ if ((start_flag != 0) && (framelen != -1)) {
++ if ((tbuf_ptr - start_flag) < framelen) {
++ clear_bit(RECV_RUNNING, &mux_recv_flags);
++ return;
++ }
++ }
++
++ while (1) {
++ if (start_flag == 0) { /* Frame Start Flag not found */
++ framelen = -1;
++ while (search < tbuf_ptr) {
++ if (*search == TS0710_BASIC_FLAG) {
++ start_flag = search;
++ break;
++ }
++#ifdef TS0710LOG
++ else {
++ TS0710_LOG(">S %02x %c\n", *search,
++ *search);
++ }
++#endif
++
++ search++;
++ }
++
++ if (start_flag == 0) {
++ tbuf_ptr = &tbuf[0];
++ break;
++ }
++ } else { /* Frame Start Flag found */
++ /* 1 start flag + 1 address + 1 control + 1 or 2 length + lengths data + 1 FCS + 1 end flag */
++ /* For BP UART problem 1 start flag + 1 seq_num + 1 address + ...... */
++ /*if( (framelen == -1) && ((tbuf_ptr - start_flag) > TS0710_MAX_HDR_SIZE) ) */
++ if ((framelen == -1) && ((tbuf_ptr - start_flag) > (TS0710_MAX_HDR_SIZE + SEQ_FIELD_SIZE))) { /*For BP UART problem */
++ /*short_pkt = (short_frame *) (start_flag + 1); */
++ short_pkt = (short_frame *) (start_flag + ADDRESS_FIELD_OFFSET); /*For BP UART problem */
++ if (short_pkt->h.length.ea == 1) { /* short frame */
++ /*framelen = TS0710_MAX_HDR_SIZE + short_pkt->h.length.len + 1; */
++ framelen = TS0710_MAX_HDR_SIZE + short_pkt->h.length.len + 1 + SEQ_FIELD_SIZE; /*For BP UART problem */
++ } else { /* long frame */
++ /*long_pkt = (long_frame *) (start_flag + 1); */
++ long_pkt = (long_frame *) (start_flag + ADDRESS_FIELD_OFFSET); /*For BP UART problem */
++ /*framelen = TS0710_MAX_HDR_SIZE + GET_LONG_LENGTH( long_pkt->h.length ) + 2; */
++ framelen = TS0710_MAX_HDR_SIZE + GET_LONG_LENGTH(long_pkt->h.length) + 2 + SEQ_FIELD_SIZE; /*For BP UART problem */
++ }
++
++ /*if( framelen > TS0710MUX_MAX_TOTAL_FRAME_SIZE ) { */
++ if (framelen > (TS0710MUX_MAX_TOTAL_FRAME_SIZE + SEQ_FIELD_SIZE)) { /*For BP UART problem */
++ TS0710_LOGSTR_FRAME(0, start_flag,
++ (tbuf_ptr -
++ start_flag));
++ TS0710_PRINTK
++ ("MUX Error: %s: frame length:%d is bigger than Max total frame size:%d\n",
++ /*__FUNCTION__, framelen, TS0710MUX_MAX_TOTAL_FRAME_SIZE);*/
++ __FUNCTION__, framelen, (TS0710MUX_MAX_TOTAL_FRAME_SIZE + SEQ_FIELD_SIZE)); /*For BP UART problem */
++ search = start_flag + 1;
++ start_flag = 0;
++ framelen = -1;
++ continue;
++ }
++ }
++
++ if ((framelen != -1)
++ && ((tbuf_ptr - start_flag) >= framelen)) {
++ if (*(start_flag + framelen - 1) == TS0710_BASIC_FLAG) { /* OK, We got one frame */
++
++ /*For BP UART problem Begin */
++ TS0710_LOGSTR_FRAME(0, start_flag,
++ framelen);
++ TS0710_DEBUGHEX(start_flag, framelen);
++
++ short_pkt =
++ (short_frame *) (start_flag +
++ ADDRESS_FIELD_OFFSET);
++ if ((short_pkt->h.length.ea) == 0) {
++ long_pkt =
++ (long_frame *) (start_flag +
++ ADDRESS_FIELD_OFFSET);
++ uih_len =
++ GET_LONG_LENGTH(long_pkt->h.
++ length);
++ uih_data_start =
++ long_pkt->h.data;
++
++ crc_error =
++ crc_check((__u8
++ *) (start_flag +
++ SLIDE_BP_SEQ_OFFSET),
++ LONG_CRC_CHECK +
++ 1,
++ *(uih_data_start +
++ uih_len));
++ } else {
++ uih_len =
++ short_pkt->h.length.len;
++ uih_data_start =
++ short_pkt->data;
++
++ crc_error =
++ crc_check((__u8
++ *) (start_flag +
++ SLIDE_BP_SEQ_OFFSET),
++ SHORT_CRC_CHECK +
++ 1,
++ *(uih_data_start +
++ uih_len));
++ }
++
++ if (!crc_error) {
++ if (expect_seq ==
++ *(start_flag +
++ SLIDE_BP_SEQ_OFFSET)) {
++ expect_seq++;
++ if (expect_seq >= 4) {
++ expect_seq = 0;
++ }
++#ifdef TS0710SEQ2
++ send_ack
++ (&ts0710_connection,
++ expect_seq,
++ *(start_flag +
++ FIRST_BP_SEQ_OFFSET),
++ *(start_flag +
++ SECOND_BP_SEQ_OFFSET));
++#else
++ send_ack
++ (&ts0710_connection,
++ expect_seq);
++#endif
++
++ ts0710_recv_data
++ (&ts0710_connection,
++ start_flag +
++ ADDRESS_FIELD_OFFSET,
++ framelen - 2 -
++ SEQ_FIELD_SIZE);
++ } else {
++
++#ifdef TS0710DEBUG
++ if (*
++ (start_flag +
++ SLIDE_BP_SEQ_OFFSET)
++ != 0x9F) {
++#endif
++
++ TS0710_LOG
++ ("MUX sequence number %d is not expected %d, discard data!\n",
++ *
++ (start_flag
++ +
++ SLIDE_BP_SEQ_OFFSET),
++ expect_seq);
++
++#ifdef TS0710SEQ2
++ send_ack
++ (&ts0710_connection,
++ expect_seq,
++ *
++ (start_flag
++ +
++ FIRST_BP_SEQ_OFFSET),
++ *
++ (start_flag
++ +
++ SECOND_BP_SEQ_OFFSET));
++#else
++ send_ack
++ (&ts0710_connection,
++ expect_seq);
++#endif
++
++#ifdef TS0710DEBUG
++ } else {
++ *(uih_data_start
++ + uih_len) =
++ 0;
++ TS0710_PRINTK
++ ("MUX bp log: %s\n",
++ uih_data_start);
++ }
++#endif
++
++ }
++ } else { /* crc_error */
++ search = start_flag + 1;
++ start_flag = 0;
++ framelen = -1;
++ continue;
++ } /*End if(!crc_error) */
++
++ /*For BP UART problem End */
++
++/*For BP UART problem
++ TS0710_LOGSTR_FRAME(0, start_flag, framelen);
++ TS0710_DEBUGHEX(start_flag, framelen);
++ ts0710_recv_data(&ts0710_connection, start_flag + 1, framelen - 2);
++*/
++ search = start_flag + framelen;
++ } else {
++ TS0710_LOGSTR_FRAME(0, start_flag,
++ framelen);
++ TS0710_DEBUGHEX(start_flag, framelen);
++ TS0710_PRINTK
++ ("MUX: Lost synchronization!\n");
++ search = start_flag + 1;
++ }
++
++ start_flag = 0;
++ framelen = -1;
++ continue;
++ }
++
++ if (start_flag != &tbuf[0]) {
++ to = tbuf;
++ from = start_flag;
++ count = tbuf_ptr - start_flag;
++ while (count--) {
++ *to++ = *from++;
++ }
++
++ tbuf_ptr -= (start_flag - tbuf);
++ start_flag = tbuf;
++ }
++ break;
++ } /* End Frame Start Flag found */
++ } /* End while(1) */
++
++ clear_bit(RECV_RUNNING, &mux_recv_flags);
++}
++
++static void post_recv_worker(void *private_)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int tty_idx;
++ struct tty_struct *tty;
++ __u8 post_recv;
++ __u8 flow_control;
++ __u8 dlci;
++ mux_recv_struct *recv_info, *recv_info2, *post_recv_q;
++ int recv_room;
++ mux_recv_packet *recv_packet, *recv_packet2;
++ __u8 j;
++
++ UNUSED_PARAM(private_);
++
++ if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
++ schedule_work(&post_recv_tqueue);
++ return;
++ }
++
++ TS0710_DEBUG("Enter into post_recv_worker");
++
++ post_recv = 0;
++ if (!mux_recv_queue) {
++ goto out;
++ }
++
++ post_recv_q = NULL;
++ recv_info2 = mux_recv_queue;
++ while ((recv_info = recv_info2)) {
++ recv_info2 = recv_info->next;
++
++ if (!(recv_info->total)) {
++ TS0710_PRINTK
++ ("MUX Error: %s: Should not get here, recv_info->total == 0 \n",
++ __FUNCTION__);
++ continue;
++ }
++
++ tty_idx = recv_info->no_tty;
++ dlci = tty2dlci[tty_idx];
++ tty = mux_table[tty_idx];
++ if ((!mux_tty[tty_idx]) || (!tty)) {
++ TS0710_PRINTK
++ ("MUX: No application waiting for, free recv_info! tty_idx:%d\n",
++ tty_idx);
++ mux_recv_info_flags[tty_idx] = 0;
++ free_mux_recv_struct(mux_recv_info[tty_idx]);
++ mux_recv_info[tty_idx] = 0;
++ ts0710_flow_on(dlci, ts0710);
++ continue;
++ }
++
++ TS0710_DEBUG("/dev/mux%d recv_info->total is: %d", tty_idx,
++ recv_info->total);
++
++ if (test_bit(TTY_THROTTLED, &tty->flags)) {
++ add_post_recv_queue(&post_recv_q, recv_info);
++ continue;
++ } else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
++ post_recv = 1;
++ add_post_recv_queue(&post_recv_q, recv_info);
++ continue;
++ }
++
++ flow_control = 0;
++ recv_packet2 = recv_info->mux_packet;
++ while (recv_info->total) {
++ recv_room = 65535;
++ if (tty->receive_room)
++ recv_room = tty->receive_room;
++
++ if (recv_info->length) {
++ if (recv_room < recv_info->length) {
++ flow_control = 1;
++ break;
++ }
++
++ /* Put queued data into read buffer of tty */
++ TS0710_DEBUG
++ ("Put queued recv data into read buffer of /dev/mux%d",
++ tty_idx);
++ TS0710_DEBUGHEX(recv_info->data,
++ recv_info->length);
++ (tty->ldisc.receive_buf) (tty, recv_info->data,
++ NULL,
++ recv_info->length);
++ recv_info->total -= recv_info->length;
++ recv_info->length = 0;
++ } else { /* recv_info->length == 0 */
++ if ((recv_packet = recv_packet2)) {
++ recv_packet2 = recv_packet->next;
++
++ if (recv_room < recv_packet->length) {
++ flow_control = 1;
++ recv_info->mux_packet =
++ recv_packet;
++ break;
++ }
++
++ /* Put queued data into read buffer of tty */
++ TS0710_DEBUG
++ ("Put queued recv data into read buffer of /dev/mux%d",
++ tty_idx);
++ TS0710_DEBUGHEX(recv_packet->data,
++ recv_packet->length);
++ (tty->ldisc.receive_buf) (tty,
++ recv_packet->
++ data, NULL,
++ recv_packet->
++ length);
++ recv_info->total -= recv_packet->length;
++ free_mux_recv_packet(recv_packet);
++ } else {
++ TS0710_PRINTK
++ ("MUX Error: %s: Should not get here, recv_info->total is:%u \n",
++ __FUNCTION__, recv_info->total);
++ }
++ } /* End recv_info->length == 0 */
++ } /* End while( recv_info->total ) */
++
++ if (!(recv_info->total)) {
++ /* Important clear */
++ recv_info->mux_packet = 0;
++
++ if (recv_info->post_unthrottle) {
++ /* Do something for post_unthrottle */
++ ts0710_flow_on(dlci, ts0710);
++ recv_info->post_unthrottle = 0;
++ }
++ } else {
++ add_post_recv_queue(&post_recv_q, recv_info);
++
++ if (flow_control) {
++ /* Do something for flow control */
++ if (recv_info->post_unthrottle) {
++ set_bit(TTY_THROTTLED, &tty->flags);
++ recv_info->post_unthrottle = 0;
++ } else {
++ ts0710_flow_off(tty, dlci, ts0710);
++ }
++ } /* End if( flow_control ) */
++ }
++ } /* End while( (recv_info = recv_info2) ) */
++
++ mux_recv_queue = post_recv_q;
++
++ out:
++ if (post_recv_count_flag) {
++ post_recv_count_flag = 0;
++ for (j = 0; j < TS0710MUX_COUNT_IDX_NUM; j++) {
++ if (mux_data_count2[j] > 0) {
++ if (add_count(j, mux_data_count2[j]) == 0) {
++ mux_data_count2[j] = 0;
++ } else {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ }
++ }
++ } /* End for (j = 0; j < TS0710MUX_COUNT_IDX_NUM; j++) */
++ }
++ /* End if( post_recv_count_flag ) */
++ if (post_recv)
++ schedule_work(&post_recv_tqueue);
++ clear_bit(RECV_RUNNING, &mux_recv_flags);
++}
++
++/* mux sender, call from serial.c transmit_chars() */
++void mux_sender(void)
++{
++ mux_send_struct *send_info;
++ int chars;
++ __u8 idx;
++
++ chars = mux_chars_in_serial_buffer(COMM_FOR_MUX_TTY);
++ if (!chars) {
++ /* chars == 0 */
++ TS0710_LOG("<[]\n");
++ mux_sched_send();
++ return;
++ }
++
++ idx = mux_send_info_idx;
++ if ((idx < NR_MUXS) && (mux_send_info_flags[idx])) {
++ send_info = mux_send_info[idx];
++ if ((send_info)
++ && (send_info->filled)
++ && (send_info->length <=
++ (TS0710MUX_SERIAL_BUF_SIZE - chars))) {
++
++ mux_sched_send();
++ }
++ }
++}
++
++static void send_worker(void *private_)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ __u8 j;
++ mux_send_struct *send_info;
++ int chars;
++ struct tty_struct *tty;
++ __u8 dlci;
++
++ UNUSED_PARAM(private_);
++
++ TS0710_DEBUG("Enter into send_worker");
++
++ mux_send_info_idx = NR_MUXS;
++
++ if (ts0710->dlci[0].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped on all channels\n");
++ return;
++ }
++
++ for (j = 0; j < NR_MUXS; j++) {
++
++ if (!(mux_send_info_flags[j])) {
++ continue;
++ }
++
++ send_info = mux_send_info[j];
++ if (!send_info) {
++ continue;
++ }
++
++ if (!(send_info->filled)) {
++ continue;
++ }
++
++ dlci = tty2dlci[j];
++ if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped on channel DLCI: %d\n",
++ dlci);
++ continue;
++ } else if (ts0710->dlci[dlci].state != CONNECTED) {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ send_info->filled = 0;
++ continue;
++ }
++
++ chars = mux_chars_in_serial_buffer(COMM_FOR_MUX_TTY);
++ if (send_info->length <= (TS0710MUX_SERIAL_BUF_SIZE - chars)) {
++ TS0710_DEBUG("Send queued UIH for /dev/mux%d", j);
++ basic_write(ts0710, (__u8 *) send_info->frame,
++ send_info->length);
++ send_info->length = 0;
++ send_info->filled = 0;
++ } else {
++ mux_send_info_idx = j;
++ break;
++ }
++ } /* End for() loop */
++
++ /* Queue UIH data to be transmitted */
++ for (j = 0; j < NR_MUXS; j++) {
++
++ if (!(mux_send_info_flags[j])) {
++ continue;
++ }
++
++ send_info = mux_send_info[j];
++ if (!send_info) {
++ continue;
++ }
++
++ if (send_info->filled) {
++ continue;
++ }
++
++ /* Now queue UIH data to send_info->buf */
++
++ if (!mux_tty[j]) {
++ continue;
++ }
++
++ tty = mux_table[j];
++ if (!tty) {
++ continue;
++ }
++
++ dlci = tty2dlci[j];
++ if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped on channel DLCI: %d\n",
++ dlci);
++ continue;
++ } else if (ts0710->dlci[dlci].state != CONNECTED) {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ continue;
++ }
++
++ if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP))
++ && tty->ldisc.write_wakeup) {
++ (tty->ldisc.write_wakeup) (tty);
++ }
++ wake_up_interruptible(&tty->write_wait);
++
++#ifdef SERIAL_HAVE_POLL_WAIT
++ wake_up_interruptible(&tty->poll_wait);
++#endif
++
++ if (send_info->filled) {
++ if (j < mux_send_info_idx) {
++ mux_send_info_idx = j;
++ }
++ }
++ } /* End for() loop */
++}
++
++static int get_count(__u8 idx)
++{
++ int ret;
++
++ if (idx > TS0710MUX_COUNT_MAX_IDX) {
++ TS0710_PRINTK("MUX get_count: invalid idx: %d!\n", idx);
++ return -1;
++ }
++
++ down(&mux_data_count_mutex[idx]);
++ ret = mux_data_count[idx];
++ up(&mux_data_count_mutex[idx]);
++
++ return ret;
++}
++
++static int set_count(__u8 idx, int count)
++{
++ if (idx > TS0710MUX_COUNT_MAX_IDX) {
++ TS0710_PRINTK("MUX set_count: invalid idx: %d!\n", idx);
++ return -1;
++ }
++ if (count < 0) {
++ TS0710_PRINTK("MUX set_count: invalid count: %d!\n", count);
++ return -1;
++ }
++
++ down(&mux_data_count_mutex[idx]);
++ mux_data_count[idx] = count;
++ up(&mux_data_count_mutex[idx]);
++
++ return 0;
++}
++
++static int add_count(__u8 idx, int count)
++{
++ if (idx > TS0710MUX_COUNT_MAX_IDX) {
++ TS0710_PRINTK("MUX add_count: invalid idx: %d!\n", idx);
++ return -1;
++ }
++ if (count <= 0) {
++ TS0710_PRINTK("MUX add_count: invalid count: %d!\n", count);
++ return -1;
++ }
++
++ if (down_trylock(&mux_data_count_mutex[idx]))
++ return -1;
++ mux_data_count[idx] += count;
++ up(&mux_data_count_mutex[idx]);
++
++ return 0;
++}
++
++ssize_t file_proc_read(struct file * file, char *buf, size_t size,
++ loff_t * ppos)
++{
++ gprs_bytes gprsData[TS0710MUX_GPRS_SESSION_MAX];
++ int bufLen = sizeof(gprs_bytes) * TS0710MUX_GPRS_SESSION_MAX;
++
++ UNUSED_PARAM(file);
++ UNUSED_PARAM(size);
++ UNUSED_PARAM(ppos);
++
++ gprsData[0].recvBytes = get_count(TS0710MUX_GPRS1_RECV_COUNT_IDX);
++ gprsData[0].sentBytes = get_count(TS0710MUX_GPRS1_SEND_COUNT_IDX);
++ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].recvBytes =
++ get_count(TS0710MUX_GPRS2_RECV_COUNT_IDX);
++ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].sentBytes =
++ get_count(TS0710MUX_GPRS2_SEND_COUNT_IDX);
++
++ copy_to_user(buf, gprsData, bufLen);
++
++ return bufLen;
++}
++
++ssize_t file_proc_write(struct file * file, const char *buf, size_t count,
++ loff_t * ppos)
++{
++ gprs_bytes gprsData[TS0710MUX_GPRS_SESSION_MAX];
++ int bufLen = sizeof(gprs_bytes) * TS0710MUX_GPRS_SESSION_MAX;
++
++ UNUSED_PARAM(file);
++ UNUSED_PARAM(count);
++ UNUSED_PARAM(ppos);
++
++ memset(gprsData, 0, bufLen);
++
++ copy_from_user(gprsData, buf, bufLen);
++
++ set_count(TS0710MUX_GPRS1_RECV_COUNT_IDX, gprsData[0].recvBytes);
++ set_count(TS0710MUX_GPRS1_SEND_COUNT_IDX, gprsData[0].sentBytes);
++ set_count(TS0710MUX_GPRS2_RECV_COUNT_IDX,
++ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].recvBytes);
++ set_count(TS0710MUX_GPRS2_SEND_COUNT_IDX,
++ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].sentBytes);
++
++ return bufLen;
++}
++
++static void gprs_proc_init(void)
++{
++ gprs_proc_file =
++ create_proc_entry("gprsbytes", S_IRUSR | S_IWUSR, NULL);
++ gprs_proc_file->proc_fops = &file_proc_operations;
++}
++
++static void gprs_proc_exit(void)
++{
++ remove_proc_entry("gprsbytes", gprs_proc_file);
++}
++
++static int __init mux_init(void)
++{
++ __u8 j;
++
++ if (COMM_FOR_MUX_DRIVER == NULL) {
++
++#ifdef USB_FOR_MUX
++ panic("please install IPC-USB first\n");
++#else
++ panic("please install ttyS0 first\n");
++#endif
++
++ }
++
++ ts0710_init();
++
++ for (j = 0; j < NR_MUXS; j++) {
++ mux_send_info_flags[j] = 0;
++ mux_send_info[j] = 0;
++ mux_recv_info_flags[j] = 0;
++ mux_recv_info[j] = 0;
++ }
++ mux_send_info_idx = NR_MUXS;
++ mux_recv_queue = NULL;
++ mux_recv_flags = 0;
++
++ for (j = 0; j < TS0710MUX_COUNT_IDX_NUM; j++) {
++ mux_data_count[j] = 0;
++ mux_data_count2[j] = 0;
++ init_MUTEX(&mux_data_count_mutex[j]);
++ }
++ post_recv_count_flag = 0;
++
++ INIT_WORK(&send_tqueue, send_worker, NULL);
++ INIT_WORK(&receive_tqueue, receive_worker, NULL);
++ INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
++
++ memset(&mux_driver, 0, sizeof(struct tty_driver));
++ memset(&mux_tty, 0, sizeof(mux_tty));
++ mux_driver.magic = TTY_DRIVER_MAGIC;
++ mux_driver.driver_name = "ts0710mux";
++ mux_driver.name = "ts0710mux";
++ mux_driver.major = TS0710MUX_MAJOR;
++ mux_driver.minor_start = TS0710MUX_MINOR_START;
++ mux_driver.num = NR_MUXS;
++ mux_driver.type = TTY_DRIVER_TYPE_SERIAL;
++ mux_driver.subtype = SERIAL_TYPE_NORMAL;
++ mux_driver.init_termios = tty_std_termios;
++ mux_driver.init_termios.c_iflag = 0;
++ mux_driver.init_termios.c_oflag = 0;
++ mux_driver.init_termios.c_cflag = B38400 | CS8 | CREAD;
++ mux_driver.init_termios.c_lflag = 0;
++ mux_driver.flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
++
++ mux_driver.ttys = mux_table;
++ mux_driver.termios = mux_termios;
++ mux_driver.termios_locked = mux_termios_locked;
++// mux_driver.driver_state = mux_state;
++ mux_driver.other = NULL;
++
++ mux_driver.open = mux_open;
++ mux_driver.close = mux_close;
++ mux_driver.write = mux_write;
++ mux_driver.write_room = mux_write_room;
++ mux_driver.flush_buffer = mux_flush_buffer;
++ mux_driver.chars_in_buffer = mux_chars_in_buffer;
++ mux_driver.throttle = mux_throttle;
++ mux_driver.unthrottle = mux_unthrottle;
++ mux_driver.ioctl = mux_ioctl;
++ mux_driver.owner = THIS_MODULE;
++
++ if (tty_register_driver(&mux_driver))
++ panic("Couldn't register mux driver");
++
++ COMM_MUX_DISPATCHER = mux_dispatcher;
++ COMM_MUX_SENDER = mux_sender;
++
++ gprs_proc_init();
++
++ return 0;
++}
++
++static void __exit mux_exit(void)
++{
++ __u8 j;
++
++ COMM_MUX_DISPATCHER = NULL;
++ COMM_MUX_SENDER = NULL;
++
++ gprs_proc_exit();
++
++ mux_send_info_idx = NR_MUXS;
++ mux_recv_queue = NULL;
++ for (j = 0; j < NR_MUXS; j++) {
++ if ((mux_send_info_flags[j]) && (mux_send_info[j])) {
++ kfree(mux_send_info[j]);
++ }
++ mux_send_info_flags[j] = 0;
++ mux_send_info[j] = 0;
++
++ if ((mux_recv_info_flags[j]) && (mux_recv_info[j])) {
++ free_mux_recv_struct(mux_recv_info[j]);
++ }
++ mux_recv_info_flags[j] = 0;
++ mux_recv_info[j] = 0;
++ }
++
++ if (tty_unregister_driver(&mux_driver))
++ panic("Couldn't unregister mux driver");
++}
++
++module_init(mux_init);
++module_exit(mux_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
++MODULE_DESCRIPTION("TS 07.10 Multiplexer");
+Index: linux-2.6.20.7/drivers/char/ts0710_mux.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/drivers/char/ts0710_mux.h 2007-04-21 18:04:56.000000000 +0200
+@@ -0,0 +1,103 @@
++/*
++ * mux_macro.h
++ *
++ * Copyright (C) 2002 2005 Motorola
++ *
++ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
++ *
++ *
++ * 11/18/2002 (Motorola) - Initial version
++ *
++ */
++
++/*
++* This header file should be included by both MUX and other applications
++* which access MUX device files. It gives the additional macro definitions
++* shared between MUX and applications.
++*/
++
++/* MUX DLCI(Data Link Connection Identifier) Configuration */
++/*
++* DLCI Service
++* 0 Control Channel
++* 1 Voice Call & Network-related
++* 2 SMS MO
++* 3 SMS MT
++* 4 Phonebook & related
++* 5 MISC
++* 6 CSD/FAX
++* 7 GPRS1
++* 8 GPRS2
++* 9 Logger CMD
++* 10 Logger Data
++* 11 Test CMD
++* 12 AGPS
++* 13 Net Monitor
++*/
++
++/* Mapping between DLCI and MUX device files */
++/*
++* File Name Minor DLCI AT Command/Data
++* /dev/mux0 0 1 AT Command
++* /dev/mux1 1 2 AT Command
++* /dev/mux2 2 3 AT Command
++* /dev/mux3 3 4 AT Command
++* /dev/mux4 4 5 AT Command
++* /dev/mux5 5 6 AT Command
++* /dev/mux6 6 7 AT Command
++* /dev/mux7 7 8 AT Command
++* /dev/mux8 8 6 Data
++* /dev/mux9 9 7 Data
++* /dev/mux10 10 8 Data
++* /dev/mux11 11 9 Data
++* /dev/mux12 12 10 Data
++* /dev/mux13 13 11 Data
++* /dev/mux14 14 12 Data
++* /dev/mux15 15 13 Data
++*/
++
++#define MUX_CMD_FILE_VOICE_CALL "/dev/mux0"
++#define MUX_CMD_FILE_SMS_MO "/dev/mux1"
++#define MUX_CMD_FILE_SMS_MT "/dev/mux2"
++#define MUX_CMD_FILE_PHONEBOOK "/dev/mux3"
++#define MUX_CMD_FILE_MISC "/dev/mux4"
++#define MUX_CMD_FILE_CSD "/dev/mux5"
++#define MUX_CMD_FILE_GPRS1 "/dev/mux6"
++#define MUX_CMD_FILE_GPRS2 "/dev/mux7"
++
++#define MUX_DATA_FILE_CSD "/dev/mux8"
++#define MUX_DATA_FILE_GPRS1 "/dev/mux9"
++#define MUX_DATA_FILE_GPRS2 "/dev/mux10"
++#define MUX_DATA_FILE_LOGGER_CMD "/dev/mux11"
++#define MUX_DATA_FILE_LOGGER_DATA "/dev/mux12"
++#define MUX_DATA_FILE_TEST_CMD "/dev/mux13"
++#define MUX_DATA_FILE_AGPS "/dev/mux14"
++#define MUX_DATA_FILE_NET_MONITOR "/dev/mux15"
++
++#define NUM_MUX_CMD_FILES 8
++#define NUM_MUX_DATA_FILES 8
++#define NUM_MUX_FILES ( NUM_MUX_CMD_FILES + NUM_MUX_DATA_FILES )
++
++/* Special ioctl() upon a MUX device file for hanging up a call */
++#define TS0710MUX_IO_MSC_HANGUP 0x54F0
++
++/* Special ioctl() upon a MUX device file for MUX loopback test */
++#define TS0710MUX_IO_TEST_CMD 0x54F1
++
++/* Special Error code might be return from write() to a MUX device file */
++#define EDISCONNECTED 900 /* Logical data link is disconnected */
++
++/* Special Error code might be return from open() to a MUX device file */
++#define EREJECTED 901 /* Logical data link connection request is rejected */
+Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-21 18:07:45.000000000 +0200
+@@ -0,0 +1,868 @@
++/*
++ * linux/drivers/usb/ipcusb.c
++ *
++ * Implementation of a ipc driver based Intel's Bulverde USB Host
++ * Controller.
++ *
++ * Copyright (C) 2003-2005 Motorola
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ *
++ * 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
++ *
++ * 2003-Nov-03 - (Motorola) created
++ * 2004-Feb-20 - (Motorola) Add Power Manager codes
++ * 2004-Apr-14 - (Motorola) Update Suspend/Resume codes
++ * 2004-May-10 - (Motorola) Add unlink_urbs codes and do some updates of send
++ * out urb sequence
++ * 2006-Jun-22 - (Harald Welte) port to Linux 2.6.x
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/list.h>
++#include <linux/errno.h>
++#include <asm/uaccess.h>
++#include <asm/hardware.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch-pxa/pxa-regs.h>
++#include <asm/arch-pxa/ezx.h>
++#include <linux/slab.h>
++#include <linux/miscdevice.h>
++#include <linux/init.h>
++#include <linux/timer.h>
++#include <linux/delay.h>
++#include <linux/sched.h>
++#include <linux/tty.h>
++#include <linux/tty_driver.h>
++#include <linux/tty_flip.h>
++#include <linux/circ_buf.h>
++#include <linux/usb.h>
++
++#include "ts0710_mux_usb.h"
++
++/*Macro defined for this driver*/
++#define DRIVER_VERSION "1.0alpha1"
++#define DRIVER_AUTHOR "Motorola / Harald Welte <laforge@openezx.org>"
++#define DRIVER_DESC "USB IPC Driver (TS07.10 lowlevel)"
++#define MOTO_IPC_VID 0x22b8
++#define MOTO_IPC_PID 0x3006
++#define IBUF_SIZE 32 /*urb size*/
++#define IPC_USB_XMIT_SIZE 1024
++#define IPC_URB_SIZE 32
++#define IPC_USB_WRITE_INIT 0
++#define IPC_USB_WRITE_XMIT 1
++#define IPC_USB_PROBE_READY 3
++#define IPC_USB_PROBE_NOT_READY 4
++#define DBG_MAX_BUF_SIZE 1024
++#define ICL_EVENT_INTERVAL (HZ)
++#undef BVD_DEBUG
++
++#define IS_EP_BULK(ep) ((ep).bmAttributes == USB_ENDPOINT_XFER_BULK ? 1 : 0)
++#define IS_EP_BULK_IN(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN)
++#define IS_EP_BULK_OUT(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT)
++/*End defined macro*/
++
++/*global values defined*/
++static struct usb_driver usb_ipc_driver;
++static struct timer_list ipcusb_timer;
++static struct timer_list suspend_timer;
++static struct timer_list wakeup_timer;
++static struct tty_struct ipcusb_tty; /* the coresponding tty struct, we just use flip buffer here. */
++static struct tty_driver ipcusb_tty_driver; /* the coresponding tty driver, we just use write and chars in buff here*/
++struct tty_driver *usb_for_mux_driver = NULL;
++struct tty_struct *usb_for_mux_tty = NULL;
++void (*usb_mux_dispatcher)(struct tty_struct *tty) = NULL;
++void (*usb_mux_sender)(void) = NULL;
++void (*ipcusb_ap_to_bp)(unsigned char*, int) = NULL;
++void (*ipcusb_bp_to_ap)(unsigned char*, int) = NULL;
++EXPORT_SYMBOL(usb_for_mux_driver);
++EXPORT_SYMBOL(usb_for_mux_tty);
++EXPORT_SYMBOL(usb_mux_dispatcher);
++EXPORT_SYMBOL(usb_mux_sender);
++EXPORT_SYMBOL(ipcusb_ap_to_bp);
++EXPORT_SYMBOL(ipcusb_bp_to_ap);
++static int sumbit_times = 0;
++static int callback_times = 0;
++//static unsigned long last_jiff = 0;
++extern int usbh_finished_resume;
++/*end global values defined*/
++
++MODULE_AUTHOR(DRIVER_AUTHOR);
++MODULE_DESCRIPTION(DRIVER_DESC);
++MODULE_LICENSE("GPL");
++
++#ifdef BVD_DEBUG
++#define bvd_dbg(format, arg...) printk(__FILE__ ": " format "\n" , ## arg)
++#else
++#define bvd_dbg(format, arg...) do {} while (0)
++#endif
++
++/* USB device context */
++typedef struct {
++ struct list_head list;
++ int size;
++ char *body;
++} buf_list_t;
++
++struct ipc_usb_data {
++ u_int8_t write_finished_flag;
++ u_int8_t write_flag,
++ ipc_flag,
++ suspend_flag;
++ struct usb_device *ipc_dev;
++ struct urb readurb_mux,
++ writeurb_mux,
++ writeurb_dsplog;
++ char *obuf, *ibuf;
++ int writesize; /* max packet size for the
++ output bulk endpoint *
++ transfer buffers */
++
++ struct circ_buf xmit; /* write cric bufffer */
++ struct list_head in_buf_list;
++ char bulk_in_ep_mux,
++ bulk_out_ep_mux,
++ bulk_in_ep_dsplog;
++ unsigned int ifnum;
++
++ struct tasklet_struct bh,
++ bh_bp;
++
++ spinlock_t lock;
++};
++
++struct ipc_usb_data *bvd_ipc;
++
++#ifdef BVD_DEBUG
++static void bvd_dbg_hex(__u8 *buf, int len)
++{
++ static unsigned char tbuf[DBG_MAX_BUF_SIZE];
++ int i, c;
++
++ if (len <= 0)
++ return;
++
++ c = 0;
++ for (i=0; (i < len) && (c < (DBG_MAX_BUF_SIZE - 3)); i++) {
++ sprintf(&tbuf[c], "%02x ",buf[i]);
++ c += 3;
++ }
++ tbuf[c] = 0;
++
++ printk("%s: %s\n", __FUNCTION__, tbuf);
++}
++#else
++#define bvd_dbg_hex(buf, len)
++#endif
++
++static int unlink_urbs(struct urb *urb)
++{
++ unsigned long flags;
++ int retval;
++
++ spin_lock_irqsave(&bvd_ipc->lock, flags);
++
++ retval = usb_unlink_urb(urb);
++ if (retval != -EINPROGRESS && retval != 0)
++ printk("unlink urb err, %d", retval);
++
++ spin_unlock_irqrestore(&bvd_ipc->lock, flags);
++ return retval;
++}
++
++static void append_to_inbuf_list(struct urb *urb)
++{
++ buf_list_t *inbuf;
++ int count = urb->actual_length;
++
++ inbuf = kmalloc(sizeof(buf_list_t), GFP_KERNEL);
++ if (!inbuf) {
++ printk("append_to_inbuf_list: (%d) out of memory!\n",
++ sizeof(buf_list_t));
++ return;
++ }
++
++ inbuf->size = count;
++ inbuf->body = kmalloc(sizeof(char)*count, GFP_KERNEL);
++ if (!inbuf->body) {
++ kfree(inbuf);
++ printk("append_to_inbuf_list: (%d) out of memory!\n",
++ sizeof(char)*count);
++ return;
++ }
++ memcpy(inbuf->body, (unsigned char*)urb->transfer_buffer, count);
++ list_add_tail(&inbuf->list, &bvd_ipc->in_buf_list);
++}
++
++static void ipcusb_timeout(unsigned long data)
++{
++ struct tty_struct *tty = &ipcusb_tty;
++ struct urb *urb = (struct urb *)data;
++
++ bvd_dbg("ipcusb_timeout***");
++
++ while (!(list_empty(&bvd_ipc->in_buf_list))) {
++ int count;
++ buf_list_t *inbuf;
++ struct list_head *ptr = NULL;
++
++ ptr = bvd_ipc->in_buf_list.next;
++ inbuf = list_entry (ptr, buf_list_t, list);
++ count = inbuf->size;
++ if (tty_insert_flip_string(tty, inbuf->body, count) >= count) {
++ list_del(ptr);
++ kfree(inbuf->body);
++ inbuf->body = NULL;
++ kfree(inbuf);
++ } else {
++ bvd_dbg("ipcusb_timeout: bvd_ipc->in_buf_list empty!");
++ break;
++ }
++ }
++
++ if (usb_mux_dispatcher)
++ usb_mux_dispatcher(tty); /**call Liu changhui's func.**/
++
++ if (list_empty(&bvd_ipc->in_buf_list)) {
++ urb->actual_length = 0;
++ urb->dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(urb, GFP_ATOMIC))
++ bvd_dbg("ipcusb_timeout: failed resubmitting read urb");
++ bvd_dbg("ipcusb_timeout: resubmited read urb");
++ } else {
++ ipcusb_timer.data = (unsigned long)urb;
++ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
++ }
++}
++
++static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
++{
++ buf_list_t *inbuf;
++ int count = urb->actual_length;
++ struct tty_struct *tty = &ipcusb_tty;
++
++ bvd_dbg("usb_ipc_read_bulk: begining!");
++ if (urb->status)
++ printk("nonzero read bulk status received: %d\n", urb->status);
++
++ bvd_dbg("usb_ipc_read_bulk: urb->actual_length=%d", urb->actual_length);
++ bvd_dbg("usb_ipc_read_bulk: urb->transfer_buffer:");
++
++ bvd_dbg_hex((unsigned char*)urb->transfer_buffer, urb->actual_length);
++
++ if (count > 0 && ((*ipcusb_bp_to_ap) != NULL))
++ (*ipcusb_bp_to_ap)(urb->transfer_buffer, urb->actual_length);
++
++ if (!(list_empty(&bvd_ipc->in_buf_list))) {
++ int need_mux = 0;
++
++ bvd_dbg("usb_ipc_read_bulk: some urbs in_buf_list");
++ if (count > 0) {
++ bvd_ipc->suspend_flag = 1;
++ append_to_inbuf_list(urb); /* append the current received urb */
++#if 0
++ if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
++ {
++ last_jiff = jiffies;
++ queue_apm_event(KRNL_ICL, NULL);
++ }
++#endif
++ }
++
++ while (!(list_empty(&bvd_ipc->in_buf_list))) {
++ struct list_head* ptr = NULL;
++ ptr = bvd_ipc->in_buf_list.next;
++ inbuf = list_entry(ptr, buf_list_t, list);
++ count = inbuf->size;
++ need_mux = 1;
++
++ tty_insert_flip_string(tty, inbuf->body, count);
++
++ list_del(ptr);
++ kfree(inbuf->body);
++ inbuf->body = NULL;
++ kfree(inbuf);
++ }
++
++ if (usb_mux_dispatcher && need_mux)
++ usb_mux_dispatcher(tty); /* call Liu changhui's func. */
++
++ if (list_empty(&bvd_ipc->in_buf_list)) {
++ urb->actual_length = 0;
++ urb->dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(urb, GFP_ATOMIC))
++ bvd_dbg("usb_ipc_read_bulk: "
++ "failed resubmitting read urb");
++ bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
++ } else {
++ ipcusb_timer.data = (unsigned long)urb;
++ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
++ }
++ } else if (count > 0) {
++ bvd_dbg("usb_ipc_read_bulk: no urbs in_buf_list");
++ bvd_ipc->suspend_flag = 1;
++
++ if (tty_insert_flip_string(tty, urb->transfer_buffer,
++ count) < count) {
++ bvd_ipc->suspend_flag = 1;
++ append_to_inbuf_list(urb);
++ ipcusb_timer.data = (unsigned long)urb;
++ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
++#if 0
++ if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
++ {
++ last_jiff = jiffies;
++ queue_apm_event(KRNL_ICL, NULL);
++ }
++#endif
++ }
++
++ if (usb_mux_dispatcher)
++ usb_mux_dispatcher(tty); /* call Liu changhui's func. */
++
++ urb->actual_length = 0;
++ urb->dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(urb, GFP_ATOMIC))
++ bvd_dbg("failed resubmitting read urb");
++#if 0
++ if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
++ {
++ last_jiff = jiffies;
++ queue_apm_event(KRNL_ICL, NULL);
++ }
++#endif
++ bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
++ }
++
++ bvd_dbg("usb_ipc_read_bulk: completed!!!");
++}
++
++static void usb_ipc_write_bulk(struct urb *urb, struct pt_regs *regs)
++{
++ callback_times++;
++ bvd_ipc->write_finished_flag = 1;
++
++ bvd_dbg("usb_ipc_write_bulk: begining!");
++ //printk("%s: write_finished_flag=%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
++
++ if (urb->status)
++ printk("nonzero write bulk status received: %d\n", urb->status);
++
++ if (usb_mux_sender)
++ usb_mux_sender(); /**call Liu changhui's func**/
++
++ //printk("usb_ipc_write_bulk: mark ipcusb_softint!\n");
++ tasklet_schedule(&bvd_ipc->bh);
++
++ bvd_dbg("usb_ipc_write_bulk: finished!");
++}
++
++static void wakeup_timeout(unsigned long data)
++{
++ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++ bvd_dbg("wakup_timeout: send GPIO_MCU_INT_SW signal!");
++}
++
++static void suspend_timeout(unsigned long data)
++{
++ if (bvd_ipc->suspend_flag == 1) {
++ bvd_ipc->suspend_flag = 0;
++ mod_timer(&suspend_timer, jiffies+(5000*HZ/1000));
++ bvd_dbg("suspend_timeout: add the suspend timer again");
++ } else {
++ unlink_urbs(&bvd_ipc->readurb_mux);
++ UHCRHPS3 = 0x4;
++ mdelay(40);
++ bvd_dbg("suspend_timeout: send SUSPEND signal! UHCRHPS3=0x%x",
++ UHCRHPS3);
++ }
++}
++
++static void ipcusb_xmit_data(void)
++{
++ int c, count = IPC_URB_SIZE;
++ int result = 0;
++ int buf_flag = 0;
++ int buf_num = 0;
++
++ //printk("%s: sumbit_times=%d, callback_times=%d\n", __FUNCTION__, sumbit_times, callback_times);
++ if (bvd_ipc->write_finished_flag == 0)
++ return;
++
++ while (1) {
++ c = CIRC_CNT_TO_END(bvd_ipc->xmit.head, bvd_ipc->xmit.tail,
++ IPC_USB_XMIT_SIZE);
++ if (count < c)
++ c = count;
++ if (c <= 0)
++ break;
++
++ memcpy(bvd_ipc->obuf+buf_num,
++ bvd_ipc->xmit.buf + bvd_ipc->xmit.tail, c);
++ buf_flag = 1;
++ bvd_ipc->xmit.tail = ((bvd_ipc->xmit.tail + c)
++ & (IPC_USB_XMIT_SIZE-1));
++ count -= c;
++ buf_num += c;
++ }
++
++ if (buf_num == 0) {
++ bvd_dbg("ipcusb_xmit_data: buf_num=%d, add suspend_timer",
++ buf_num);
++ bvd_ipc->suspend_flag = 0;
++ mod_timer(&suspend_timer, jiffies+(5000*HZ/1000));
++ }
++
++ bvd_dbg("ipcusb_xmit_data: buf_num=%d", buf_num);
++ bvd_dbg("ipcusb_xmit_data: bvd_ipc->obuf: ");
++
++ bvd_dbg_hex((bvd_ipc->obuf)-buf_num, buf_num);
++
++ if (buf_flag) {
++ bvd_ipc->writeurb_mux.transfer_buffer_length = buf_num;
++ bvd_dbg("ipcusb_xmit_data: copy data to write urb finished! ");
++
++ if ((UHCRHPS3 & 0x4) == 0x4) {
++ static int ret;
++ int time = 0;
++
++ /* if BP sleep, wake up BP first */
++ pxa_gpio_mode(GPIO_IN | 41);
++ if (GPIO_is_high(41)) {
++ if (GPIO_is_high(GPIO_MCU_INT_SW))
++ GPCR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++ else
++ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++
++ time = jiffies;
++ while (GPIO_is_high(41) && (jiffies < (time+HZ)));
++
++ if (GPIO_is_high(41)) {
++ printk("%s: Wakeup BP timeout! BP state is %d\n",
++ __FUNCTION__, GPIO_is_high(41));
++ }
++ if (GPIO_is_high(GPIO_MCU_INT_SW))
++ GPCR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++ else
++ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++ }
++
++ /* Resume BP */
++ UHCRHPS3 = 0x8;
++ mdelay(40);
++ bvd_dbg("ipcusb_xmit_data: Send RESUME signal! UHCRHPS3=0x%x",
++ UHCRHPS3);
++ /*send IN token*/
++ bvd_ipc->readurb_mux.actual_length = 0;
++ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
++ if (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
++ printk("ipcusb_xmit_data: usb_submit_urb(read mux bulk)"
++ "failed! status=%d\n", ret);
++ bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
++ }
++
++ sumbit_times++;
++ bvd_ipc->write_finished_flag = 0;
++ //printk("%s: clear write_finished_flag:%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
++ bvd_ipc->writeurb_mux.dev = bvd_ipc->ipc_dev;
++ if (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC))
++ warn("ipcusb_xmit_data: funky result! result=%d\n", result);
++
++ bvd_dbg("ipcusb_xmit_data: usb_submit_urb finished! result:%d", result);
++
++ }
++}
++
++static void usbipc_bh_func(unsigned long param)
++{
++ ipcusb_xmit_data();
++}
++
++extern void get_halted_bit(void);
++
++static void usbipc_bh_bp_func(unsigned long param)
++{
++ if ((UHCRHPS3 & 0x4) == 0x4) {
++ UHCRHPS3 = 0x8;
++ mdelay(40);
++ bvd_dbg("ipcusb_softint_send_readurb: Send RESUME signal! "
++ "UHCRHPS3=0x%x", UHCRHPS3);
++ }
++ if (bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) {
++ get_halted_bit();
++
++ /*send a IN token*/
++ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC)) {
++ bvd_dbg("ipcusb_softint_send_readurb: "
++ "usb_submit_urb(read mux bulk) failed!");
++ }
++ bvd_dbg("ipcusb_softint_send_readurb: Send a IN token successfully!");
++ bvd_ipc->suspend_flag = 0;
++ bvd_dbg("ipcusb_softint_send_readurb: add suspend_timer");
++ mod_timer(&suspend_timer, jiffies+(5000*HZ/1000));
++ }
++}
++
++static int usb_ipc_write(struct tty_struct *tty,
++ const unsigned char *buf, int count)
++{
++ int c, ret = 0;
++
++ bvd_dbg("usb_ipc_write: count=%d, buf: ", count);
++ bvd_dbg_hex(buf, count);
++
++ if (count <= 0)
++ return 0;
++
++ if (*ipcusb_ap_to_bp != NULL)
++ (*ipcusb_ap_to_bp)(buf, count);
++
++ bvd_ipc->suspend_flag = 1;
++
++ if ((bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) &&
++ (bvd_ipc->xmit.head == bvd_ipc->xmit.tail)) {
++ bvd_dbg("usb_ipc_write: set write_flag");
++ bvd_ipc->write_flag = IPC_USB_WRITE_XMIT;
++ }
++
++ while (1) {
++ c = CIRC_SPACE_TO_END(bvd_ipc->xmit.head,
++ bvd_ipc->xmit.tail, IPC_USB_XMIT_SIZE);
++ if (count < c)
++ c = count;
++ if (c <= 0)
++ break;
++
++ memcpy(bvd_ipc->xmit.buf + bvd_ipc->xmit.head, buf, c);
++ bvd_ipc->xmit.head = ((bvd_ipc->xmit.head + c)
++ & (IPC_USB_XMIT_SIZE-1));
++ buf += c;
++ count -= c;
++ ret += c;
++ }
++ bvd_dbg("usb_ipc_write: ret=%d, bvd_ipc->xmit.buf: ", ret);
++
++ bvd_dbg_hex(bvd_ipc->xmit.buf, ret);
++
++ if (bvd_ipc->write_flag == IPC_USB_WRITE_XMIT) {
++ bvd_ipc->write_flag = IPC_USB_WRITE_INIT;
++ bvd_dbg("usb_ipc_write: mark ipcusb_softint");
++ tasklet_schedule(&bvd_ipc->bh);
++ }
++
++ bvd_dbg("usb_ipc_write: ret=%d\n", ret);
++ return ret;
++}
++
++static int usb_ipc_chars_in_buffer(struct tty_struct *tty)
++{
++ return CIRC_CNT(bvd_ipc->xmit.head, bvd_ipc->xmit.tail, IPC_USB_XMIT_SIZE);
++}
++
++void usb_send_readurb(void)
++{
++ //printk("usb_send_readurb: begining!UHCRHPS3=0x%x, usbh_finished_resume=%d\n", UHCRHPS3, usbh_finished_resume);
++
++ if (usbh_finished_resume == 0)
++ return;
++
++ tasklet_schedule(&bvd_ipc->bh_bp);
++}
++
++static int usb_ipc_probe(struct usb_interface *intf,
++ const struct usb_device_id *id)
++{
++ struct usb_device *usbdev = interface_to_usbdev(intf);
++ struct usb_config_descriptor *ipccfg;
++ struct usb_interface_descriptor *interface;
++ struct usb_endpoint_descriptor *endpoint;
++ int ep_cnt, readsize, writesize;
++ char have_bulk_in_mux, have_bulk_out_mux;
++
++ bvd_dbg("usb_ipc_probe: vendor id 0x%x, device id 0x%x",
++ usbdev->descriptor.idVendor, usbdev->descriptor.idProduct);
++
++ if ((usbdev->descriptor.idVendor != MOTO_IPC_VID) ||
++ (usbdev->descriptor.idProduct != MOTO_IPC_PID))
++ return -ENODEV;
++
++ /* a2590c : dsplog interface is not supported by this driver */
++ if (intf->minor == 2) /* dsplog interface number is 2 */
++ return -1;
++
++ bvd_dbg("usb_ipc_probe: USB dev address:%p", usbdev);
++ bvd_dbg("usb_ipc_probe: ifnum:%u", intf->minor);
++
++ ipccfg = &usbdev->actconfig->desc;
++ bvd_dbg("usb_ipc_prob: config%d", ipccfg->bConfigurationValue);
++ bvd_dbg("usb_ipc_prob: bNumInterfaces = %d", ipccfg->bNumInterfaces);
++
++ /* After this point we can be a little noisy about what we are trying
++ * to configure, hehe. */
++ if (usbdev->descriptor.bNumConfigurations != 1) {
++ info("usb_ipc_probe: Only one device configuration "
++ "is supported.");
++ return -1;
++ }
++
++ if (usbdev->config[0].desc.bNumInterfaces != 3) {
++ info("usb_ipc_probe: Only three device interfaces are "
++ "supported.");
++ return -1;
++ }
++
++ interface = &intf->cur_altsetting->desc;
++ endpoint = &intf->cur_altsetting->endpoint[0].desc;
++ /* Start checking for two bulk endpoints or ... FIXME: This is a future
++ * enhancement...*/
++ bvd_dbg("usb_ipc_probe: Number of Endpoints:%d",
++ (int) interface->bNumEndpoints);
++ if (interface->bNumEndpoints != 2) {
++ info("usb_ipc_probe: Only two endpoints supported.");
++ return -1;
++ }
++
++ ep_cnt = have_bulk_in_mux = have_bulk_out_mux = 0;
++
++ bvd_dbg("usb_ipc_probe: endpoint[0] is:%x",
++ (&endpoint[0])->bEndpointAddress);
++ bvd_dbg("usb_ipc_probe: endpoint[1] is:%x ",
++ (&endpoint[1])->bEndpointAddress);
++
++ while (ep_cnt < interface->bNumEndpoints) {
++
++ if (!have_bulk_in_mux && IS_EP_BULK_IN(endpoint[ep_cnt])) {
++ bvd_dbg("usb_ipc_probe: bEndpointAddress(IN) is:%x ",
++ (&endpoint[ep_cnt])->bEndpointAddress);
++ have_bulk_in_mux =
++ (&endpoint[ep_cnt])->bEndpointAddress;
++ readsize = (&endpoint[ep_cnt])->wMaxPacketSize;
++ bvd_dbg("usb_ipc_probe: readsize=%d", readsize);
++ ep_cnt++;
++ continue;
++ }
++
++ if (!have_bulk_out_mux && IS_EP_BULK_OUT(endpoint[ep_cnt])) {
++ bvd_dbg("usb_ipc_probe: bEndpointAddress(OUT) is:%x ",
++ (&endpoint[ep_cnt])->bEndpointAddress);
++ have_bulk_out_mux =
++ (&endpoint[ep_cnt])->bEndpointAddress;
++ writesize = (&endpoint[ep_cnt])->wMaxPacketSize;
++ bvd_dbg("usb_ipc_probe: writesize=%d", writesize);
++ ep_cnt++;
++ continue;
++ }
++
++ info("usb_ipc_probe: Undetected endpoint ^_^ ");
++ /* Shouldn't ever get here unless we have something weird */
++ return -1;
++ }
++
++ /* Perform a quick check to make sure that everything worked as it
++ * should have. */
++
++ switch (interface->bNumEndpoints) {
++ case 2:
++ if (!have_bulk_in_mux || !have_bulk_out_mux) {
++ info("usb_ipc_probe: Two bulk endpoints required.");
++ return -1;
++ }
++ break;
++ default:
++ info("usb_ipc_probe: Endpoint determination failed ^_^ ");
++ return -1;
++ }
++
++ /* Ok, now initialize all the relevant values */
++ if (!(bvd_ipc->obuf = (char *)kmalloc(writesize, GFP_KERNEL))) {
++ err("usb_ipc_probe: Not enough memory for the output buffer.");
++ kfree(bvd_ipc);
++ return -1;
++ }
++ bvd_dbg("usb_ipc_probe: obuf address:%p", bvd_ipc->obuf);
++
++ if (!(bvd_ipc->ibuf = (char *)kmalloc(readsize, GFP_KERNEL))) {
++ err("usb_ipc_probe: Not enough memory for the input buffer.");
++ kfree(bvd_ipc->obuf);
++ kfree(bvd_ipc);
++ return -1;
++ }
++ bvd_dbg("usb_ipc_probe: ibuf address:%p", bvd_ipc->ibuf);
++
++ bvd_ipc->ipc_flag = IPC_USB_PROBE_READY;
++ bvd_ipc->write_finished_flag = 1;
++ bvd_ipc->suspend_flag = 1;
++ bvd_ipc->bulk_in_ep_mux= have_bulk_in_mux;
++ bvd_ipc->bulk_out_ep_mux= have_bulk_out_mux;
++ bvd_ipc->ipc_dev = usbdev;
++ bvd_ipc->writesize = writesize;
++ INIT_LIST_HEAD (&bvd_ipc->in_buf_list);
++
++ bvd_ipc->bh.func = usbipc_bh_func;
++ bvd_ipc->bh.data = (unsigned long) bvd_ipc;
++
++ bvd_ipc->bh_bp.func = usbipc_bh_bp_func;
++ bvd_ipc->bh_bp.data = (unsigned long) bvd_ipc;
++
++ /*Build a write urb*/
++ usb_fill_bulk_urb(&bvd_ipc->writeurb_mux, usbdev,
++ usb_sndbulkpipe(bvd_ipc->ipc_dev,
++ bvd_ipc->bulk_out_ep_mux),
++ bvd_ipc->obuf, writesize, usb_ipc_write_bulk,
++ bvd_ipc);
++ //bvd_ipc->writeurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
++
++ /*Build a read urb and send a IN token first time*/
++ usb_fill_bulk_urb(&bvd_ipc->readurb_mux, usbdev,
++ usb_rcvbulkpipe(usbdev, bvd_ipc->bulk_in_ep_mux),
++ bvd_ipc->ibuf, readsize, usb_ipc_read_bulk, bvd_ipc);
++ //bvd_ipc->readurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
++
++ usb_driver_claim_interface(&usb_ipc_driver, intf, bvd_ipc);
++ //usb_driver_claim_interface(&usb_ipc_driver, &ipccfg->interface[1], bvd_ipc);
++
++ // a2590c: dsplog is not supported by this driver
++ // usb_driver_claim_interface(&usb_ipc_driver,
++ // &ipccfg->interface[2], bvd_ipc);
++ /*send a IN token first time*/
++ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
++ printk("usb_ipc_prob: usb_submit_urb(read mux bulk) failed!\n");
++
++ bvd_dbg("usb_ipc_prob: Send a IN token successfully!");
++
++ if (bvd_ipc->xmit.head != bvd_ipc->xmit.tail) {
++ printk("usb_ipc_probe: mark ipcusb_softint!\n");
++ tasklet_schedule(&bvd_ipc->bh);
++ }
++
++ printk("usb_ipc_probe: completed probe!");
++ usb_set_intfdata(intf, &bvd_ipc);
++ return 0;
++}
++
++static void usb_ipc_disconnect(struct usb_interface *intf)
++{
++ //struct usb_device *usbdev = interface_to_usbdev(intf);
++ struct ipc_usb_data *bvd_ipc_disconnect = usb_get_intfdata(intf);
++
++ printk("usb_ipc_disconnect:*** \n");
++
++ if ((UHCRHPS3 & 0x4) == 0)
++ usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
++
++ usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
++
++ bvd_ipc_disconnect->ipc_flag = IPC_USB_PROBE_NOT_READY;
++ kfree(bvd_ipc_disconnect->ibuf);
++ kfree(bvd_ipc_disconnect->obuf);
++
++ usb_driver_release_interface(&usb_ipc_driver,
++ bvd_ipc_disconnect->ipc_dev->actconfig->interface[0]);
++ usb_driver_release_interface(&usb_ipc_driver,
++ bvd_ipc_disconnect->ipc_dev->actconfig->interface[1]);
++
++ //a2590c: dsplog interface is not supported by this driver
++ //usb_driver_release_interface(&usb_ipc_driver, &bvd_ipc_disconnect->ipc_dev->actconfig->interface[2]);
++
++ bvd_ipc_disconnect->ipc_dev = NULL;
++
++ usb_set_intfdata(intf, NULL);
++
++ printk("usb_ipc_disconnect completed!\n");
++}
++
++static struct usb_device_id usb_ipc_id_table[] = {
++ { USB_DEVICE(MOTO_IPC_VID, MOTO_IPC_PID) },
++ { } /* Terminating entry */
++};
++
++static struct usb_driver usb_ipc_driver = {
++ .name = "usb ipc",
++ .probe = usb_ipc_probe,
++ .disconnect = usb_ipc_disconnect,
++ .id_table = usb_ipc_id_table,
++};
++
++static int __init usb_ipc_init(void)
++{
++ int result;
++
++ bvd_dbg("init usb_ipc");
++ /* register driver at the USB subsystem */
++ result = usb_register(&usb_ipc_driver);
++ if (result < 0) {
++ err ("usb ipc driver could not be registered");
++ return result;
++ }
++
++ /*init the related mux interface*/
++ if (!(bvd_ipc = kzalloc(sizeof(struct ipc_usb_data), GFP_KERNEL))) {
++ err("usb_ipc_init: Out of memory.");
++ usb_deregister(&usb_ipc_driver);
++ return -ENOMEM;
++ }
++ bvd_dbg("usb_ipc_init: Address of bvd_ipc:%p", bvd_ipc);
++
++ if (!(bvd_ipc->xmit.buf = kmalloc(IPC_USB_XMIT_SIZE, GFP_KERNEL))) {
++ err("usb_ipc_init: Not enough memory for the input buffer.");
++ kfree(bvd_ipc);
++ usb_deregister(&usb_ipc_driver);
++ return -ENOMEM;
++ }
++ bvd_dbg("usb_ipc_init: bvd_ipc->xmit.buf address:%p",
++ bvd_ipc->xmit.buf);
++ bvd_ipc->ipc_dev = NULL;
++ bvd_ipc->xmit.head = bvd_ipc->xmit.tail = 0;
++ bvd_ipc->write_flag = IPC_USB_WRITE_INIT;
++
++ ipcusb_tty_driver.write = usb_ipc_write;
++ ipcusb_tty_driver.chars_in_buffer = usb_ipc_chars_in_buffer;
++
++ usb_for_mux_driver = &ipcusb_tty_driver;
++ usb_for_mux_tty = &ipcusb_tty;
++
++ /* init timers for ipcusb read process and usb suspend */
++ init_timer(&ipcusb_timer);
++ ipcusb_timer.function = ipcusb_timeout;
++
++ init_timer(&suspend_timer);
++ suspend_timer.function = suspend_timeout;
++
++ init_timer(&wakeup_timer);
++ wakeup_timer.function = wakeup_timeout;
++
++ info("USB Host(Bulverde) IPC driver registered.");
++ info(DRIVER_VERSION ":" DRIVER_DESC);
++
++ return 0;
++}
++
++static void __exit usb_ipc_exit(void)
++{
++ bvd_dbg("cleanup bvd_ipc");
++
++ kfree(bvd_ipc->xmit.buf);
++ kfree(bvd_ipc);
++ usb_deregister(&usb_ipc_driver);
++
++ info("USB Host(Bulverde) IPC driver deregistered.");
++}
++
++module_init(usb_ipc_init);
++module_exit(usb_ipc_exit);
++EXPORT_SYMBOL(usb_send_readurb);
+Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.h 2007-04-21 18:07:21.000000000 +0200
+@@ -0,0 +1,29 @@
++/*
++ * linux/drivers/usb/ipcusb.h
++ *
++ * Implementation of a ipc driver based Intel's Bulverde USB Host
++ * Controller.
++ *
++ * Copyright (C) 2003-2005 Motorola
++ *
++ * 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
++ *
++ * 2003-Nov-18 - (Motorola) created
++ *
++ */
++extern struct tty_driver *usb_for_mux_driver;
++extern struct tty_struct *usb_for_mux_tty;
++extern void (*usb_mux_dispatcher)(struct tty_struct *tty);
++extern void (*usb_mux_sender)(void);
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux_debug.patch b/packages/linux/linux-ezx-2.6.20.7/mux_debug.patch
new file mode 100644
index 0000000000..58cb25a0b6
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/mux_debug.patch
@@ -0,0 +1,551 @@
+Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux.c 2007-04-22 12:24:18.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-22 12:26:47.000000000 +0200
+@@ -85,6 +85,9 @@
+ #include "ts0710.h"
+ #include "ts0710_mux.h"
+
++#define TS0710DEBUG
++#define PRINT_OUTPUT_PRINTK
++
+ #define TS0710MUX_GPRS_SESSION_MAX 2
+ #define TS0710MUX_MAJOR 250
+ #define TS0710MUX_MINOR_START 0
+@@ -316,7 +319,7 @@
+ #ifdef TS0710DEBUG
+
+ #ifdef PRINT_OUTPUT_PRINTK
+-#define TS0710_DEBUG(fmt, arg...) printk(KERN_INFO "MUX " __FUNCTION__ ": " fmt "\n" , ## arg)
++#define TS0710_DEBUG(fmt, arg...) printk(KERN_INFO "MUX %s: " fmt "\n" , __func__, ## arg)
+ #else
+ #include "ezxlog.h"
+ static __u8 strDebug[256];
+@@ -530,10 +533,10 @@
+ if (strncmp(p->comm, "aplogd", 6) == 0) {
+ sig = 1;
+ if (send_sig(SIGUSR2, p, 1) == 0) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: success to send SIGUSR2 to aplogd!\n");
+ } else {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: failure to send SIGUSR2 to aplogd!\n");
+ }
+ break;
+@@ -542,7 +545,7 @@
+ read_unlock(&tasklist_lock);
+
+ if (!sig) {
+- TS0710_PRINTK("MUX: not found aplogd!\n");
++ TS0710_DEBUG("MUX: not found aplogd!\n");
+ }
+ }
+ #else
+@@ -559,11 +562,11 @@
+ buf[len + 1] = TS0710_BASIC_FLAG;
+
+ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX basic_write: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n");
+
+ #ifndef USB_FOR_MUX
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX basic_write: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n");
+ TS0710_SIG2APLOGD();
+ #endif
+@@ -577,7 +580,7 @@
+ res = COMM_FOR_MUX_DRIVER->write(COMM_FOR_MUX_TTY, buf, len + 2);
+
+ if (res != len + 2) {
+- TS0710_PRINTK("MUX basic_write: Write Error!\n");
++ TS0710_DEBUG("MUX basic_write: Write Error!\n");
+ return -1;
+ }
+
+@@ -601,7 +604,7 @@
+ TS0710_DEBUG("crc_check: CRC check OK\n");
+ return 0;
+ } else {
+- TS0710_PRINTK("MUX crc_check: CRC check failed\n");
++ TS0710_DEBUG("MUX crc_check: CRC check failed\n");
+ return 1;
+ }
+ }
+@@ -1266,7 +1269,7 @@
+ break;
+
+ case FCON: /*Flow control on command */
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Received Flow control(all channels) on command\n");
+ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
+ ts0710->dlci[0].state = CONNECTED;
+@@ -1276,7 +1279,7 @@
+ break;
+
+ case FCOFF: /*Flow control off command */
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Received Flow control(all channels) off command\n");
+ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
+ for (j = 0; j < TS0710_MAX_CHN; j++) {
+@@ -1823,7 +1826,7 @@
+ TS0710_DEBUG("UIH on channel %d\n", dlci);
+
+ if (uih_len > ts0710->dlci[dlci].mtu) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: DLCI:%d, uih_len:%d is bigger than mtu:%d, discard data!\n",
+ dlci, uih_len, ts0710->dlci[dlci].mtu);
+ break;
+@@ -1844,7 +1847,7 @@
+ dlci, tty_idx);
+ TS0710_DEBUGSTR(uih_data_start, uih_len);
+ if (!(iscmdtty[tty_idx])) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: Wrong CMDTAG on DLCI:%d, /dev/mux%d\n",
+ __FUNCTION__, dlci, tty_idx);
+ }
+@@ -1856,7 +1859,7 @@
+ ("NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
+ dlci, tty_idx);
+ if (iscmdtty[tty_idx]) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: Wrong NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
+ __FUNCTION__, dlci, tty_idx);
+ }
+@@ -1864,13 +1867,14 @@
+ }
+ tty = mux_table[tty_idx];
+ if ((!mux_tty[tty_idx]) || (!tty)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: No application waiting for, discard it! /dev/mux%d\n",
+ tty_idx);
++ TS0710_DEBUG("MUX: mux_tty[%d] = %d, tty is at %i", tty_idx, mux_tty[tty_idx], tty);
+ } else { /* Begin processing received data */
+ if ((!mux_recv_info_flags[tty_idx])
+ || (!mux_recv_info[tty_idx])) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: No mux_recv_info, discard it! /dev/mux%d\n",
+ tty_idx);
+ break;
+@@ -1878,7 +1882,7 @@
+
+ recv_info = mux_recv_info[tty_idx];
+ if (recv_info->total > 8192) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX : discard data for tty_idx:%d, recv_info->total > 8192 \n",
+ tty_idx);
+ break;
+@@ -1949,7 +1953,7 @@
+ get_mux_recv_packet
+ (uih_len);
+ if (!recv_packet) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX %s: no memory\n",
+ __FUNCTION__);
+ break;
+@@ -1980,7 +1984,7 @@
+ } else { /* recv_info->total == 0 */
+ if (uih_len >
+ TS0710MUX_RECV_BUF_SIZE) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: tty_idx:%d, uih_len == %d is too big\n",
+ tty_idx, uih_len);
+ uih_len =
+@@ -2120,12 +2124,12 @@
+ if (ts0710->dlci[dlci].state == DISCONNECTED) {
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI %d Send DISC got signal!\n",
+ dlci);
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI %d Send DISC timeout!\n", dlci);
+ continue;
+ }
+@@ -2158,7 +2162,7 @@
+ return 0;
+ } else if (ts0710->dlci[0].state == CONNECTING) {
+ /* Reentry */
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI: 0, reentry to open DLCI 0, pid: %d, %s !\n",
+ current->pid, current->comm);
+ try = 11;
+@@ -2179,13 +2183,13 @@
+ DISCONNECTED) {
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Wait for connecting got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Wait for connecting timeout!\n",
+ dlci);
+ continue;
+@@ -2199,7 +2203,7 @@
+ }
+ } else if ((ts0710->dlci[0].state != DISCONNECTED)
+ && (ts0710->dlci[0].state != REJECTED)) {
+- TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
++ TS0710_DEBUG("MUX DLCI:%d state is invalid!\n", dlci);
+ return retval;
+ } else {
+ ts0710->initiator = 1;
+@@ -2218,19 +2222,19 @@
+ retval = 0;
+ break;
+ } else if (ts0710->dlci[0].state == REJECTED) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM got rejected!\n",
+ dlci);
+ retval = -EREJECTED;
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM timeout!\n",
+ dlci);
+ continue;
+@@ -2271,13 +2275,13 @@
+ DISCONNECTED) {
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Wait for connecting got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Wait for connecting timeout!\n",
+ dlci);
+ continue;
+@@ -2296,7 +2300,7 @@
+ }
+ } else if ((ts0710->dlci[dlci].state != DISCONNECTED)
+ && (ts0710->dlci[dlci].state != REJECTED)) {
+- TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
++ TS0710_DEBUG("MUX DLCI:%d state is invalid!\n", dlci);
+ return retval;
+ } else {
+ ts0710->dlci[dlci].state = NEGOTIATING;
+@@ -2313,13 +2317,13 @@
+ if (ts0710->dlci[dlci].state == CONNECTING) {
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send pn_msg got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send pn_msg timeout!\n",
+ dlci);
+ continue;
+@@ -2344,20 +2348,20 @@
+ break;
+ } else if (ts0710->dlci[dlci].state ==
+ REJECTED) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM got rejected!\n",
+ dlci);
+ retval = -EREJECTED;
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >=
+ TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM timeout!\n",
+ dlci);
+ continue;
+@@ -2468,7 +2472,7 @@
+ schedule_work(&send_tqueue);
+ #else
+ if (!tq_serial_for_mux) {
+- TS0710_PRINTK("MUX Error: %s: tq_serial_for_mux == 0\n",
++ TS0710_DEBUG("MUX Error: %s: tq_serial_for_mux == 0\n",
+ __FUNCTION__);
+ return;
+ }
+@@ -2508,7 +2512,7 @@
+ if ((mux_tty[cmdtty] == 0) && (mux_tty[datatty] == 0)) {
+ if (dlci == 1) {
+ ts0710_close_channel(0);
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX mux_close: tapisrv might be down!!! Close DLCI 1\n");
+ TS0710_SIG2APLOGD();
+ }
+@@ -2673,12 +2677,12 @@
+ UNUSED_PARAM(tty);
+
+ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n",
+ __FUNCTION__);
+
+ #ifndef USB_FOR_MUX
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n",
+ __FUNCTION__);
+ TS0710_SIG2APLOGD();
+@@ -2724,14 +2728,14 @@
+ } else if (ts0710->dlci[dlci].state == CONNECTED) {
+
+ if (!(mux_send_info_flags[line])) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: mux_write: mux_send_info_flags[%d] == 0\n",
+ line);
+ return -ENODEV;
+ }
+ send_info = mux_send_info[line];
+ if (!send_info) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: mux_write: mux_send_info[%d] == 0\n",
+ line);
+ return -ENODEV;
+@@ -2800,7 +2804,7 @@
+ }
+ return c;
+ } else {
+- TS0710_PRINTK("MUX mux_write: DLCI %d not connected\n", dlci);
++ TS0710_DEBUG("MUX mux_write: DLCI %d not connected\n", dlci);
+ return -EDISCONNECTED;
+ }
+ }
+@@ -2940,7 +2944,7 @@
+ return;
+ }
+
+- TS0710_PRINTK("MUX %s: line is:%d\n", __FUNCTION__, line);
++ TS0710_DEBUG("MUX %s: line is:%d\n", __FUNCTION__, line);
+
+ if ((mux_send_info_flags[line])
+ && (mux_send_info[line])
+@@ -2960,10 +2964,10 @@
+
+ /*
+ if( (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0) ) {
+- TS0710_PRINTK("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n", __FUNCTION__);
++ TS0710_DEBUG("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n", __FUNCTION__);
+
+ #ifndef USB_FOR_MUX
+- TS0710_PRINTK("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n", __FUNCTION__);
++ TS0710_DEBUG("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n", __FUNCTION__);
+ TS0710_SIG2APLOGD();
+ #endif
+
+@@ -2989,9 +2993,9 @@
+ if ((COMM_FOR_MUX_DRIVER == NULL) || (COMM_FOR_MUX_TTY == NULL)) {
+
+ #ifdef USB_FOR_MUX
+- TS0710_PRINTK("MUX: please install and open IPC-USB first\n");
++ TS0710_DEBUG("MUX: please install and open IPC-USB first\n");
+ #else
+- TS0710_PRINTK("MUX: please install and open ttyS0 first\n");
++ TS0710_DEBUG("MUX: please install and open ttyS0 first\n");
+ #endif
+
+ goto out;
+@@ -3016,7 +3020,7 @@
+ /* if( dlci == 1 ) { */
+ /* Open server channel 0 first */
+ if ((retval = ts0710_open_channel(0)) != 0) {
+- TS0710_PRINTK("MUX: Can't connect server channel 0!\n");
++ TS0710_DEBUG("MUX: Can't connect server channel 0!\n");
+ ts0710_init();
+
+ mux_tty[line]--;
+@@ -3073,7 +3077,7 @@
+ datatty = dlci2tty[dlci].datatty;
+ if ((mux_tty[cmdtty] > 0) || (mux_tty[datatty] > 0)) {
+ if ((retval = ts0710_open_channel(dlci)) != 0) {
+- TS0710_PRINTK("MUX: Can't connected channel %d!\n",
++ TS0710_DEBUG("MUX: Can't connected channel %d!\n",
+ dlci);
+ ts0710_reset_dlci(dlci);
+
+@@ -3096,6 +3100,7 @@
+ retval = 0;
+ #endif
+ out:
++ TS0710_DEBUG("returning %d for open of /dev/mux%d (mux_tty[%d] = %d", retval, line, line, mux_tty[line]);
+ return retval;
+ }
+
+@@ -3178,12 +3183,12 @@
+
+ while (1) {
+ tbuf_free = TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf);
+- TS0710_PRINTK("Reading max %i bytes from ts0710_mux_usb inbuf.\n", tbuf_free);
++ TS0710_DEBUG("Reading max %i bytes from ts0710_mux_usb inbuf.\n", tbuf_free);
+ tbuf_read = get_from_inbuf_list(tbuf_ptr, tbuf_free);
+ if (tbuf_read == 0) {
+ break;
+ } else {
+- TS0710_PRINTK("Read %i bytes.\n", tbuf_read);
++ TS0710_DEBUG("Read %i bytes.\n", tbuf_read);
+ };
+ tbuf_ptr += tbuf_read;
+ };
+@@ -3192,7 +3197,7 @@
+
+ // Should be impossible?
+ //if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
+- // TS0710_PRINTK
++ // TS0710_DEBUG
+ // ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
+ // count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
+ //}
+@@ -3264,7 +3269,7 @@
+ TS0710_LOGSTR_FRAME(0, start_flag,
+ (tbuf_ptr -
+ start_flag));
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: frame length:%d is bigger than Max total frame size:%d\n",
+ /*__FUNCTION__, framelen, TS0710MUX_MAX_TOTAL_FRAME_SIZE);*/
+ __FUNCTION__, framelen, (TS0710MUX_MAX_TOTAL_FRAME_SIZE + SEQ_FIELD_SIZE)); /*For BP UART problem */
+@@ -3389,7 +3394,7 @@
+ *(uih_data_start
+ + uih_len) =
+ 0;
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX bp log: %s\n",
+ uih_data_start);
+ }
+@@ -3415,7 +3420,7 @@
+ TS0710_LOGSTR_FRAME(0, start_flag,
+ framelen);
+ TS0710_DEBUGHEX(start_flag, framelen);
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: Lost synchronization!\n");
+ search = start_flag + 1;
+ }
+@@ -3476,7 +3481,7 @@
+ recv_info2 = recv_info->next;
+
+ if (!(recv_info->total)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: Should not get here, recv_info->total == 0 \n",
+ __FUNCTION__);
+ continue;
+@@ -3486,7 +3491,7 @@
+ dlci = tty2dlci[tty_idx];
+ tty = mux_table[tty_idx];
+ if ((!mux_tty[tty_idx]) || (!tty)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: No application waiting for, free recv_info! tty_idx:%d\n",
+ tty_idx);
+ mux_recv_info_flags[tty_idx] = 0;
+@@ -3560,7 +3565,7 @@
+ recv_info->total -= recv_packet->length;
+ free_mux_recv_packet(recv_packet);
+ } else {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: Should not get here, recv_info->total is:%u \n",
+ __FUNCTION__, recv_info->total);
+ }
+@@ -3760,7 +3765,7 @@
+ int ret;
+
+ if (idx > TS0710MUX_COUNT_MAX_IDX) {
+- TS0710_PRINTK("MUX get_count: invalid idx: %d!\n", idx);
++ TS0710_DEBUG("MUX get_count: invalid idx: %d!\n", idx);
+ return -1;
+ }
+
+@@ -3774,11 +3779,11 @@
+ static int set_count(__u8 idx, int count)
+ {
+ if (idx > TS0710MUX_COUNT_MAX_IDX) {
+- TS0710_PRINTK("MUX set_count: invalid idx: %d!\n", idx);
++ TS0710_DEBUG("MUX set_count: invalid idx: %d!\n", idx);
+ return -1;
+ }
+ if (count < 0) {
+- TS0710_PRINTK("MUX set_count: invalid count: %d!\n", count);
++ TS0710_DEBUG("MUX set_count: invalid count: %d!\n", count);
+ return -1;
+ }
+
+@@ -3792,11 +3797,11 @@
+ static int add_count(__u8 idx, int count)
+ {
+ if (idx > TS0710MUX_COUNT_MAX_IDX) {
+- TS0710_PRINTK("MUX add_count: invalid idx: %d!\n", idx);
++ TS0710_DEBUG("MUX add_count: invalid idx: %d!\n", idx);
+ return -1;
+ }
+ if (count <= 0) {
+- TS0710_PRINTK("MUX add_count: invalid count: %d!\n", count);
++ TS0710_DEBUG("MUX add_count: invalid count: %d!\n", count);
+ return -1;
+ }
+
+Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux_usb.c 2007-04-22 12:26:47.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-22 12:26:47.000000000 +0200
+@@ -72,7 +72,8 @@
+ #define IPC_USB_PROBE_NOT_READY 4
+ #define DBG_MAX_BUF_SIZE 1024
+ #define ICL_EVENT_INTERVAL (HZ)
+-#undef BVD_DEBUG
++
++#define BVD_DEBUG
+
+ #define IS_EP_BULK(ep) ((ep).bmAttributes == USB_ENDPOINT_XFER_BULK ? 1 : 0)
+ #define IS_EP_BULK_IN(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN)
diff --git a/packages/linux/linux-ezx-2.6.20.7/usb_add_epalloc-r3.patch b/packages/linux/linux-ezx-2.6.20.7/usb_add_epalloc-r3.patch
new file mode 100644
index 0000000000..fc9daf5297
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/usb_add_epalloc-r3.patch
@@ -0,0 +1,282 @@
+Index: linux-2.6.20.7/drivers/usb/gadget/epautoconf.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/usb/gadget/epautoconf.c 2007-04-21 11:24:21.000000000 -0300
++++ linux-2.6.20.7/drivers/usb/gadget/epautoconf.c 2007-04-21 11:27:53.000000000 -0300
+@@ -228,14 +228,19 @@
+ *
+ * On failure, this returns a null endpoint descriptor.
+ */
+-struct usb_ep * __devinit usb_ep_autoconfig (
++struct usb_ep * usb_ep_autoconfig (
+ struct usb_gadget *gadget,
+- struct usb_endpoint_descriptor *desc
++ struct usb_endpoint_descriptor *desc,
++ struct usb_endpoint_config *epconfig, int numconfigs
+ )
+ {
+ struct usb_ep *ep;
+ u8 type;
+
++ /* Use device specific ep allocation code if provided */
++ if (gadget->ops->ep_alloc)
++ return gadget->ops->ep_alloc(gadget, desc, epconfig, numconfigs);
++
+ type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
+
+ /* First, apply chip-specific "best usage" knowledge.
+Index: linux-2.6.20.7/drivers/usb/gadget/ether.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/usb/gadget/ether.c 2007-04-21 11:27:52.000000000 -0300
++++ linux-2.6.20.7/drivers/usb/gadget/ether.c 2007-04-21 11:27:53.000000000 -0300
+@@ -2219,7 +2219,8 @@
+ struct eth_dev *dev;
+ struct net_device *net;
+ u8 cdc = 1, zlp = 1, rndis = 1;
+- struct usb_ep *in_ep, *out_ep, *status_ep = NULL;
++ struct usb_ep *in_ep = NULL , *out_ep = NULL, *status_ep = NULL;
++ struct usb_endpoint_config ep_config[2];
+ int status = -ENOMEM;
+ int gcnum;
+
+@@ -2318,7 +2319,26 @@
+
+ /* all we really need is bulk IN/OUT */
+ usb_ep_autoconfig_reset (gadget);
+- in_ep = usb_ep_autoconfig (gadget, &fs_source_desc);
++
++ ep_config[0].config = DEV_CONFIG_VALUE;
++#if defined(DEV_CONFIG_CDC)
++ ep_config[0].interface = data_intf.bInterfaceNumber;
++ ep_config[0].altinterface = data_intf.bAlternateSetting;
++#else /* DEV_CONFIG_SUBSET */
++ ep_config[0].interface = subset_data_intf.bInterfaceNumber;
++ ep_config[0].altinterface = subset_data_intf.bAlternateSetting;
++#endif
++
++#ifdef CONFIG_USB_ETH_RNDIS
++ ep_config[1].config = DEV_RNDIS_CONFIG_VALUE;
++ ep_config[1].interface = rndis_data_intf.bInterfaceNumber;
++ ep_config[1].altinterface = rndis_data_intf.bAlternateSetting;
++
++ in_ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 2);
++#else
++ in_ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 1);
++#endif
++
+ if (!in_ep) {
+ autoconf_fail:
+ dev_err (&gadget->dev,
+@@ -2328,7 +2348,12 @@
+ }
+ in_ep->driver_data = in_ep; /* claim */
+
+- out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc);
++#ifdef CONFIG_USB_ETH_RNDIS
++ out_ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 2);
++#else
++ out_ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 1);
++#endif
++
+ if (!out_ep)
+ goto autoconf_fail;
+ out_ep->driver_data = out_ep; /* claim */
+@@ -2338,7 +2363,25 @@
+ * Since some hosts expect one, try to allocate one anyway.
+ */
+ if (cdc || rndis) {
+- status_ep = usb_ep_autoconfig (gadget, &fs_status_desc);
++#ifdef DEV_CONFIG_CDC
++ ep_config[0].config = DEV_CONFIG_VALUE;
++ ep_config[0].interface = control_intf.bInterfaceNumber;
++ ep_config[0].altinterface = control_intf.bAlternateSetting;
++#endif
++#ifdef CONFIG_USB_ETH_RNDIS
++ ep_config[1].config = DEV_RNDIS_CONFIG_VALUE;
++ ep_config[1].interface = rndis_control_intf.bInterfaceNumber;
++ ep_config[1].altinterface = rndis_control_intf.bAlternateSetting;
++#endif
++
++#if defined(DEV_CONFIG_CDC) && defined(CONFIG_USB_ETH_RNDIS)
++ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[0], 2);
++#elif defined(CONFIG_USB_ETH_RNDIS)
++ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[1], 1);
++#else
++ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[0], 1);
++#endif
++
+ if (status_ep) {
+ status_ep->driver_data = status_ep; /* claim */
+ } else if (rndis) {
+Index: linux-2.6.20.7/drivers/usb/gadget/file_storage.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/usb/gadget/file_storage.c 2007-04-21 11:24:21.000000000 -0300
++++ linux-2.6.20.7/drivers/usb/gadget/file_storage.c 2007-04-21 11:27:53.000000000 -0300
+@@ -3850,6 +3850,7 @@
+ struct usb_ep *ep;
+ struct usb_request *req;
+ char *pathbuf, *p;
++ struct usb_endpoint_config ep_config;
+
+ fsg->gadget = gadget;
+ set_gadget_data(gadget, fsg);
+@@ -3920,21 +3921,25 @@
+ }
+
+ /* Find all the endpoints we will use */
++ ep_config.config = CONFIG_VALUE;
++ ep_config.interface = intf_desc.bInterfaceNumber;
++ ep_config.altinterface = intf_desc.bAlternateSetting;
++
+ usb_ep_autoconfig_reset(gadget);
+- ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc, &ep_config, 1);
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+ fsg->bulk_in = ep;
+
+- ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc, &ep_config, 1);
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+ fsg->bulk_out = ep;
+
+ if (transport_is_cbi()) {
+- ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc, &ep_config, 1);
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+Index: linux-2.6.20.7/drivers/usb/gadget/serial.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/usb/gadget/serial.c 2007-04-21 11:24:21.000000000 -0300
++++ linux-2.6.20.7/drivers/usb/gadget/serial.c 2007-04-21 11:27:53.000000000 -0300
+@@ -1357,6 +1357,7 @@
+ struct usb_ep *ep;
+ struct gs_dev *dev;
+ int gcnum;
++ struct usb_endpoint_config ep_config[2];
+
+ /* Some controllers can't support CDC ACM:
+ * - sh doesn't support multiple interfaces or configs;
+@@ -1377,22 +1378,33 @@
+ __constant_cpu_to_le16(GS_VERSION_NUM|0x0099);
+ }
+
++ ep_config[0].config = GS_BULK_CONFIG_ID;
++ ep_config[0].interface = gs_bulk_interface_desc.bInterfaceNumber;
++ ep_config[0].altinterface = gs_bulk_interface_desc.bAlternateSetting;
++ ep_config[1].config = GS_ACM_CONFIG_ID;
++ ep_config[1].interface = gs_data_interface_desc.bInterfaceNumber;
++ ep_config[1].altinterface = gs_data_interface_desc.bAlternateSetting;
++
+ usb_ep_autoconfig_reset(gadget);
+
+- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc);
++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc, &ep_config[0], 2);
+ if (!ep)
+ goto autoconf_fail;
+ EP_IN_NAME = ep->name;
+ ep->driver_data = ep; /* claim the endpoint */
+
+- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc);
++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc, &ep_config[0], 2);
+ if (!ep)
+ goto autoconf_fail;
+ EP_OUT_NAME = ep->name;
+ ep->driver_data = ep; /* claim the endpoint */
+
+ if (use_acm) {
+- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc);
++ ep_config[0].config = GS_ACM_CONFIG_ID;
++ ep_config[0].interface = gs_control_interface_desc.bInterfaceNumber;
++ ep_config[0].altinterface = gs_control_interface_desc.bAlternateSetting;
++
++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc, &ep_config[0], 1);
+ if (!ep) {
+ printk(KERN_ERR "gs_bind: cannot run ACM on %s\n", gadget->name);
+ goto autoconf_fail;
+Index: linux-2.6.20.7/drivers/usb/gadget/zero.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/usb/gadget/zero.c 2007-04-21 11:24:21.000000000 -0300
++++ linux-2.6.20.7/drivers/usb/gadget/zero.c 2007-04-21 11:27:53.000000000 -0300
+@@ -1144,6 +1144,7 @@
+ struct zero_dev *dev;
+ struct usb_ep *ep;
+ int gcnum;
++ struct usb_endpoint_config ep_config[2];
+
+ /* FIXME this can't yet work right with SH ... it has only
+ * one configuration, numbered one.
+@@ -1156,7 +1157,15 @@
+ * but there may also be important quirks to address.
+ */
+ usb_ep_autoconfig_reset (gadget);
+- ep = usb_ep_autoconfig (gadget, &fs_source_desc);
++
++ ep_config[0].config = CONFIG_SOURCE_SINK;
++ ep_config[0].interface = source_sink_intf.bInterfaceNumber;
++ ep_config[0].altinterface = source_sink_intf.bAlternateSetting;
++ ep_config[1].config = CONFIG_LOOPBACK;
++ ep_config[1].interface = loopback_intf.bInterfaceNumber;
++ ep_config[1].altinterface = loopback_intf.bAlternateSetting;
++
++ ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 2);
+ if (!ep) {
+ autoconf_fail:
+ printk (KERN_ERR "%s: can't autoconfigure on %s\n",
+@@ -1166,7 +1175,7 @@
+ EP_IN_NAME = ep->name;
+ ep->driver_data = ep; /* claim */
+
+- ep = usb_ep_autoconfig (gadget, &fs_sink_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 2);
+ if (!ep)
+ goto autoconf_fail;
+ EP_OUT_NAME = ep->name;
+Index: linux-2.6.20.7/include/linux/usb_gadget.h
+===================================================================
+--- linux-2.6.20.7.orig/include/linux/usb_gadget.h 2007-04-21 11:24:21.000000000 -0300
++++ linux-2.6.20.7/include/linux/usb_gadget.h 2007-04-21 11:27:53.000000000 -0300
+@@ -445,10 +445,28 @@
+
+ struct usb_gadget;
+
++/**
++ * struct usb_endpoint_config - possible configurations of a given endpoint
++ * @config: the configuration number
++ * @interface: the interface number
++ * @altinterface: the altinterface number
++ *
++ * Used as an array to pass information about the possible configurations
++ * of a given endpoint to the bus controller.
++ */
++struct usb_endpoint_config {
++ u8 config;
++ u8 interface;
++ u8 altinterface;
++};
++
+ /* the rest of the api to the controller hardware: device operations,
+ * which don't involve endpoints (or i/o).
+ */
+ struct usb_gadget_ops {
++ struct usb_ep* (*ep_alloc)(struct usb_gadget *,
++ struct usb_endpoint_descriptor *,
++ struct usb_endpoint_config *, int);
+ int (*get_frame)(struct usb_gadget *);
+ int (*wakeup)(struct usb_gadget *);
+ int (*set_selfpowered) (struct usb_gadget *, int is_selfpowered);
+@@ -872,7 +890,10 @@
+ /* utility wrapping a simple endpoint selection policy */
+
+ extern struct usb_ep *usb_ep_autoconfig (struct usb_gadget *,
+- struct usb_endpoint_descriptor *) __devinit;
++ struct usb_endpoint_descriptor *,
++ struct usb_endpoint_config *,
++ int numconfigs
++);
+
+ extern void usb_ep_autoconfig_reset (struct usb_gadget *) __devinit;
+
diff --git a/packages/linux/linux-ezx-2.6.20.7/usb_pxa27x_udc-r3.patch b/packages/linux/linux-ezx-2.6.20.7/usb_pxa27x_udc-r3.patch
new file mode 100644
index 0000000000..2e60d5b9ce
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.20.7/usb_pxa27x_udc-r3.patch
@@ -0,0 +1,2868 @@
+ arch/arm/mach-pxa/spitz.c | 27
+ drivers/usb/gadget/Kconfig | 20
+ drivers/usb/gadget/Makefile | 1
+ drivers/usb/gadget/ether.c | 12
+ drivers/usb/gadget/pxa27x_udc.c | 2412 ++++++++++++++++++++++++++++++++++++++++
+ drivers/usb/gadget/pxa27x_udc.h | 298 ++++
+ drivers/usb/gadget/pxa2xx_udc.h | 7
+ 7 files changed, 2774 insertions(+), 3 deletions(-)
+
+Index: linux-2.6.20.7/arch/arm/mach-pxa/spitz.c
+===================================================================
+--- linux-2.6.20.7.orig/arch/arm/mach-pxa/spitz.c 2007-04-21 12:21:53.000000000 -0300
++++ linux-2.6.20.7/arch/arm/mach-pxa/spitz.c 2007-04-21 12:22:00.000000000 -0300
+@@ -348,6 +348,32 @@
+
+
+ /*
++ * USB Client (Gadget/UDC)
++ */
++static void spitz_udc_command(int cmd)
++{
++ switch(cmd) {
++ case PXA2XX_UDC_CMD_CONNECT:
++ UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE;
++ break;
++ case PXA2XX_UDC_CMD_DISCONNECT:
++ //UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE;
++ break;
++ }
++}
++
++static int spitz_udc_detect(void)
++{
++ return 1;
++}
++
++static struct pxa2xx_udc_mach_info spitz_udc_info __initdata = {
++ .udc_is_connected = spitz_udc_detect,
++ .udc_command = spitz_udc_command,
++};
++
++
++/*
+ * USB Host (OHCI)
+ */
+ static int spitz_ohci_init(struct device *dev)
+@@ -498,6 +524,7 @@
+ pxa_gpio_mode(SPITZ_GPIO_HSYNC | GPIO_IN);
+
+ platform_add_devices(devices, ARRAY_SIZE(devices));
++ pxa_set_udc_info(&spitz_udc_info);
+ pxa_set_mci_info(&spitz_mci_platform_data);
+ pxa_set_ohci_info(&spitz_ohci_platform_data);
+ pxa_set_ficp_info(&spitz_ficp_platform_data);
+Index: linux-2.6.20.7/drivers/usb/gadget/Kconfig
+===================================================================
+--- linux-2.6.20.7.orig/drivers/usb/gadget/Kconfig 2007-04-21 12:21:53.000000000 -0300
++++ linux-2.6.20.7/drivers/usb/gadget/Kconfig 2007-04-21 12:22:00.000000000 -0300
+@@ -121,6 +121,26 @@
+ default y if USB_ETH
+ default y if USB_G_SERIAL
+
++config USB_GADGET_PXA27X
++ boolean "PXA 27x"
++ depends on ARCH_PXA && PXA27x
++ help
++ Intel's PXA 27x series XScale ARM-5TE processors include
++ an integrated full speed USB 1.1 device controller.
++
++ It has 23 endpoints, as well as endpoint zero (for control
++ transfers).
++
++ Say "y" to link the driver statically, or "m" to build a
++ dynamically linked module called "pxa27x_udc" and force all
++ gadget drivers to also be dynamically linked.
++
++config USB_PXA27X
++ tristate
++ depends on USB_GADGET_PXA27X
++ default USB_GADGET
++ select USB_GADGET_SELECTED
++
+ config USB_GADGET_GOKU
+ boolean "Toshiba TC86C001 'Goku-S'"
+ depends on PCI
+Index: linux-2.6.20.7/drivers/usb/gadget/Makefile
+===================================================================
+--- linux-2.6.20.7.orig/drivers/usb/gadget/Makefile 2007-04-21 12:21:53.000000000 -0300
++++ linux-2.6.20.7/drivers/usb/gadget/Makefile 2007-04-21 12:22:00.000000000 -0300
+@@ -4,6 +4,7 @@
+ obj-$(CONFIG_USB_DUMMY_HCD) += dummy_hcd.o
+ obj-$(CONFIG_USB_NET2280) += net2280.o
+ obj-$(CONFIG_USB_PXA2XX) += pxa2xx_udc.o
++obj-$(CONFIG_USB_PXA27X) += pxa27x_udc.o
+ obj-$(CONFIG_USB_GOKU) += goku_udc.o
+ obj-$(CONFIG_USB_OMAP) += omap_udc.o
+ obj-$(CONFIG_USB_LH7A40X) += lh7a40x_udc.o
+Index: linux-2.6.20.7/drivers/usb/gadget/pxa27x_udc.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/drivers/usb/gadget/pxa27x_udc.c 2007-04-21 12:29:05.000000000 -0300
+@@ -0,0 +1,2412 @@
++/*
++ * Handles the Intel 27x USB Device Controller (UDC)
++ *
++ * Copyright (C) 2002 Intrinsyc, Inc. (Frank Becker)
++ * Copyright (C) 2003 Robert Schwebel, Pengutronix
++ * Copyright (C) 2003 Benedikt Spranger, Pengutronix
++ * Copyright (C) 2003 David Brownell
++ * Copyright (C) 2003 Joshua Wise
++ * Copyright (C) 2004 Intel Corporation
++ * Copyright (C) 2005 SDG Systems, LLC (Aric Blumer)
++ * Copyright (C) 2005-2006 Openedhand Ltd. (Richard Purdie)
++ *
++ * 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
++ *
++ */
++
++#undef DEBUG
++//#define DEBUG 1
++//#define VERBOSE DBG_VERBOSE
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/ioport.h>
++#include <linux/types.h>
++#include <linux/version.h>
++#include <linux/errno.h>
++#include <linux/platform_device.h>
++#include <linux/delay.h>
++#include <linux/sched.h>
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/timer.h>
++#include <linux/list.h>
++#include <linux/interrupt.h>
++#include <linux/proc_fs.h>
++#include <linux/mm.h>
++#include <linux/device.h>
++#include <linux/dma-mapping.h>
++
++#include <asm/byteorder.h>
++#include <asm/dma.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++#include <asm/system.h>
++#include <asm/mach-types.h>
++#include <asm/unaligned.h>
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++
++#include <linux/usb_ch9.h>
++#include <linux/usb_gadget.h>
++
++#include <asm/arch/udc.h>
++
++/*
++ * This driver handles the USB Device Controller (UDC) in Intel's PXA 27x
++ * series processors.
++ *
++ * Such controller drivers work with a gadget driver. The gadget driver
++ * returns descriptors, implements configuration and data protocols used
++ * by the host to interact with this device, and allocates endpoints to
++ * the different protocol interfaces. The controller driver virtualizes
++ * usb hardware so that the gadget drivers will be more portable.
++ *
++ * This UDC hardware wants to implement a bit too much USB protocol. The
++ * biggest issue is that the endpoints have to be setup before the controller
++ * can be enabled and each endpoint can only have one configuration, interface
++ * and alternative interface number. Once enabled, these cannot be changed
++ * without a controller reset.
++ *
++ * Intel Errata #22 mentions issues when changing alternate interface.
++ * The exact meaning of this remains uncertain as gadget drivers using alternate
++ * interfaces such as CDC-Ethernet appear to work...
++ */
++
++#define DRIVER_VERSION "01-01-2006"
++#define DRIVER_DESC "PXA 27x USB Device Controller driver"
++
++static const char driver_name [] = "pxa27x_udc";
++
++static const char ep0name [] = "ep0";
++
++
++#define USE_DMA
++//#undef USE_DMA
++
++#ifdef CONFIG_PROC_FS
++#define UDC_PROC_FILE
++#endif
++
++#include "pxa27x_udc.h"
++
++#ifdef USE_DMA
++static int use_dma = 1;
++module_param(use_dma, bool, 0);
++MODULE_PARM_DESC(use_dma, "true to use dma");
++
++static void dma_nodesc_handler(int dmach, void *_ep);
++static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req);
++
++#define DMASTR " (dma support)"
++
++#else /* !USE_DMA */
++#define DMASTR " (pio only)"
++#endif
++
++#define UDCISR0_IR0 0x3
++#define UDCISR_INT_MASK (UDC_INT_FIFOERROR | UDC_INT_PACKETCMP)
++#define UDCICR_INT_MASK UDCISR_INT_MASK
++
++#define UDCCSR_MASK (UDCCSR_FST | UDCCSR_DME)
++
++static void pxa27x_ep_fifo_flush(struct usb_ep *ep);
++static void nuke(struct pxa27x_ep *, int status);
++static void udc_init_ep(struct pxa27x_udc *dev);
++
++
++/*
++ * Endpoint Functions
++ */
++static void pio_irq_enable(int ep_num)
++{
++ if (ep_num < 16)
++ UDCICR0 |= 3 << (ep_num * 2);
++ else {
++ ep_num -= 16;
++ UDCICR1 |= 3 << (ep_num * 2);
++ }
++}
++
++static void pio_irq_disable(int ep_num)
++{
++ ep_num &= 0xf;
++ if (ep_num < 16)
++ UDCICR0 &= ~(3 << (ep_num * 2));
++ else {
++ ep_num -= 16;
++ UDCICR1 &= ~(3 << (ep_num * 2));
++ }
++}
++
++/* The UDCCR reg contains mask and interrupt status bits,
++ * so using '|=' isn't safe as it may ack an interrupt.
++ */
++#define UDCCR_MASK_BITS (UDCCR_OEN | UDCCR_UDE)
++
++static inline void udc_set_mask_UDCCR(int mask)
++{
++ UDCCR = (UDCCR & UDCCR_MASK_BITS) | (mask & UDCCR_MASK_BITS);
++}
++
++static inline void udc_clear_mask_UDCCR(int mask)
++{
++ UDCCR = (UDCCR & UDCCR_MASK_BITS) & ~(mask & UDCCR_MASK_BITS);
++}
++
++static inline void udc_ack_int_UDCCR(int mask)
++{
++ /* udccr contains the bits we dont want to change */
++ __u32 udccr = UDCCR & UDCCR_MASK_BITS;
++
++ UDCCR = udccr | (mask & ~UDCCR_MASK_BITS);
++}
++
++/*
++ * Endpoint enable/disable
++ *
++ * Not much to do here as the ep_alloc function sets up most things. Once
++ * enabled, not much of the pxa27x configuration can be changed.
++ *
++ */
++static int pxa27x_ep_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc)
++{
++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ struct pxa27x_ep *ep = virt_ep->pxa_ep;
++ struct pxa27x_udc *dev;
++
++ if (!_ep || !desc || _ep->name == ep0name
++ || desc->bDescriptorType != USB_DT_ENDPOINT
++ || ep->fifo_size < le16_to_cpu(desc->wMaxPacketSize)) {
++ dev_err(ep->dev->dev, "%s, bad ep or descriptor\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ /* xfer types must match, except that interrupt ~= bulk */
++ if( ep->ep_type != USB_ENDPOINT_XFER_BULK
++ && desc->bmAttributes != USB_ENDPOINT_XFER_INT) {
++ dev_err(ep->dev->dev, "%s, %s type mismatch\n", __FUNCTION__, _ep->name);
++ return -EINVAL;
++ }
++
++ /* hardware _could_ do smaller, but driver doesn't */
++ if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK
++ && le16_to_cpu (desc->wMaxPacketSize)
++ != BULK_FIFO_SIZE)
++ || !desc->wMaxPacketSize) {
++ dev_err(ep->dev->dev, "%s, bad %s maxpacket\n", __FUNCTION__, _ep->name);
++ return -ERANGE;
++ }
++
++ dev = ep->dev;
++ if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) {
++ dev_err(ep->dev->dev, "%s, bogus device state\n", __FUNCTION__);
++ return -ESHUTDOWN;
++ }
++
++ ep->desc = desc;
++ ep->dma = -1;
++ ep->stopped = 0;
++ ep->pio_irqs = ep->dma_irqs = 0;
++ ep->usb_ep->maxpacket = le16_to_cpu(desc->wMaxPacketSize);
++
++ /* flush fifo (mostly for OUT buffers) */
++ pxa27x_ep_fifo_flush(_ep);
++
++ /* ... reset halt state too, if we could ... */
++
++#ifdef USE_DMA
++ /* for (some) bulk and ISO endpoints, try to get a DMA channel and
++ * bind it to the endpoint. otherwise use PIO.
++ */
++ dev_dbg(ep->dev->dev, "%s: called attributes=%d\n", __FUNCTION__, ep->ep_type);
++ switch (ep->ep_type) {
++ case USB_ENDPOINT_XFER_ISOC:
++ if (le16_to_cpu(desc->wMaxPacketSize) % 32)
++ break;
++ // fall through
++ case USB_ENDPOINT_XFER_BULK:
++ if (!use_dma || !ep->reg_drcmr)
++ break;
++ ep->dma = pxa_request_dma((char *)_ep->name, (le16_to_cpu(desc->wMaxPacketSize) > 64)
++ ? DMA_PRIO_MEDIUM : DMA_PRIO_LOW, dma_nodesc_handler, ep);
++ if (ep->dma >= 0) {
++ *ep->reg_drcmr = DRCMR_MAPVLD | ep->dma;
++ dev_dbg(ep->dev->dev, "%s using dma%d\n", _ep->name, ep->dma);
++ }
++ default:
++ break;
++ }
++#endif
++ DBG(DBG_VERBOSE, "enabled %s\n", _ep->name);
++ return 0;
++}
++
++static int pxa27x_ep_disable(struct usb_ep *_ep)
++{
++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ struct pxa27x_ep *ep = virt_ep->pxa_ep;
++ unsigned long flags;
++
++ if (!_ep || !ep->desc) {
++ dev_err(ep->dev->dev, "%s, %s not enabled\n", __FUNCTION__,
++ _ep ? _ep->name : NULL);
++ return -EINVAL;
++ }
++ local_irq_save(flags);
++ nuke(ep, -ESHUTDOWN);
++
++#ifdef USE_DMA
++ if (ep->dma >= 0) {
++ *ep->reg_drcmr = 0;
++ pxa_free_dma(ep->dma);
++ ep->dma = -1;
++ }
++#endif
++
++ /* flush fifo (mostly for IN buffers) */
++ pxa27x_ep_fifo_flush(_ep);
++
++ ep->desc = 0;
++ ep->stopped = 1;
++
++ local_irq_restore(flags);
++ DBG(DBG_VERBOSE, "%s disabled\n", _ep->name);
++ return 0;
++}
++
++
++
++/* for the pxa27x, these can just wrap kmalloc/kfree. gadget drivers
++ * must still pass correctly initialized endpoints, since other controller
++ * drivers may care about how it's currently set up (dma issues etc).
++ */
++
++/*
++ * pxa27x_ep_alloc_request - allocate a request data structure
++ */
++static struct usb_request *
++pxa27x_ep_alloc_request(struct usb_ep *_ep, unsigned gfp_flags)
++{
++ struct pxa27x_request *req;
++
++ req = kzalloc(sizeof *req, gfp_flags);
++ if (!req)
++ return 0;
++
++ INIT_LIST_HEAD(&req->queue);
++ return &req->req;
++}
++
++
++/*
++ * pxa27x_ep_free_request - deallocate a request data structure
++ */
++static void
++pxa27x_ep_free_request(struct usb_ep *_ep, struct usb_request *_req)
++{
++ struct pxa27x_request *req;
++
++ req = container_of(_req, struct pxa27x_request, req);
++ WARN_ON(!list_empty(&req->queue));
++ kfree(req);
++}
++
++
++/* PXA cache needs flushing with DMA I/O (it's dma-incoherent), but there's
++ * no device-affinity and the heap works perfectly well for i/o buffers.
++ * It wastes much less memory than dma_alloc_coherent() would, and even
++ * prevents cacheline (32 bytes wide) sharing problems.
++ */
++static void *
++pxa27x_ep_alloc_buffer(struct usb_ep *_ep, unsigned bytes, dma_addr_t *dma, unsigned gfp_flags)
++{
++ char *retval;
++
++ retval = kmalloc(bytes, gfp_flags & ~(__GFP_DMA|__GFP_HIGHMEM));
++ if (retval)
++ *dma = virt_to_bus(retval);
++ return retval;
++}
++
++static void
++pxa27x_ep_free_buffer(struct usb_ep *_ep, void *buf, dma_addr_t dma, unsigned bytes)
++{
++ kfree(buf);
++}
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * done - retire a request; caller blocked irqs
++ */
++static void done(struct pxa27x_ep *ep, struct pxa27x_request *req, int status)
++{
++ list_del_init(&req->queue);
++ if (likely (req->req.status == -EINPROGRESS))
++ req->req.status = status;
++ else
++ status = req->req.status;
++
++ if (status && status != -ESHUTDOWN)
++ DBG(DBG_VERBOSE, "complete %s req %p stat %d len %u/%u\n",
++ ep->usb_ep->name, &req->req, status,
++ req->req.actual, req->req.length);
++
++ /* don't modify queue heads during completion callback */
++ req->req.complete(ep->usb_ep, &req->req);
++}
++
++
++static inline void ep0_idle(struct pxa27x_udc *dev)
++{
++ dev->ep0state = EP0_IDLE;
++}
++
++static int write_packet(volatile u32 *uddr, struct pxa27x_request *req, unsigned max)
++{
++ u32 *buf;
++ int length, count, remain;
++
++ buf = (u32*)(req->req.buf + req->req.actual);
++ prefetch(buf);
++
++ /* how big will this packet be? */
++ length = min(req->req.length - req->req.actual, max);
++ req->req.actual += length;
++
++ remain = length & 0x3;
++ count = length & ~(0x3);
++
++ //dev_dbg(ep->dev->dev, "Length %d, Remain %d, Count %d\n",length, remain, count);
++
++ while (likely(count)) {
++ //dev_dbg(ep->dev->dev, "Sending:0x%x\n", *buf);
++ *uddr = *buf++;
++ count -= 4;
++ }
++
++ if (remain) {
++ volatile u8* reg=(u8*)uddr;
++ char *rd =(u8*)buf;
++
++ while (remain--) {
++ *reg=*rd++;
++ }
++ }
++
++ return length;
++}
++
++/*
++ * write to an IN endpoint fifo, as many packets as possible.
++ * irqs will use this to write the rest later.
++ * caller guarantees at least one packet buffer is ready (or a zlp).
++ */
++static int
++write_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ unsigned max;
++
++ max = le16_to_cpu(ep->desc->wMaxPacketSize);
++ do {
++ int count, is_last, is_short;
++
++ //dev_dbg(ep->dev->dev, "write_fifo7 %x\n", *ep->reg_udccsr);
++
++ if (*ep->reg_udccsr & UDCCSR_PC) {
++ //dev_dbg(ep->dev->dev, "Transmit Complete\n");
++ *ep->reg_udccsr = UDCCSR_PC | (*ep->reg_udccsr & UDCCSR_MASK);
++ }
++
++ if (*ep->reg_udccsr & UDCCSR_TRN) {
++ //dev_dbg(ep->dev->dev, "Clearing Underrun\n");
++ *ep->reg_udccsr = UDCCSR_TRN | (*ep->reg_udccsr & UDCCSR_MASK);
++ }
++ //dev_dbg(ep->dev->dev, "write_fifo8 %x\n", *ep->reg_udccsr);
++
++ count = write_packet(ep->reg_udcdr, req, max);
++
++ /* last packet is usually short (or a zlp) */
++ if (unlikely (count != max))
++ is_last = is_short = 1;
++ else {
++ if (likely(req->req.length != req->req.actual)
++ || req->req.zero)
++ is_last = 0;
++ else
++ is_last = 1;
++ /* interrupt/iso maxpacket may not fill the fifo */
++ is_short = unlikely (max < ep->fifo_size);
++ }
++
++ //dev_dbg(ep->dev->dev, "write_fifo0 %x\n", *ep->reg_udccsr);
++
++ dev_dbg(ep->dev->dev, "wrote %s count:%d bytes%s%s %d left %p\n",
++ ep->usb_ep->name, count,
++ is_last ? "/L" : "", is_short ? "/S" : "",
++ req->req.length - req->req.actual, &req->req);
++
++ /* let loose that packet. maybe try writing another one,
++ * double buffering might work.
++ */
++
++ if (is_short)
++ *ep->reg_udccsr = UDCCSR_SP | (*ep->reg_udccsr & UDCCSR_MASK);
++
++ dev_dbg(ep->dev->dev, "write_fifo0.5 %x\n", *ep->reg_udccsr);
++
++ /* requests complete when all IN data is in the FIFO */
++ if (is_last) {
++ done(ep, req, 0);
++ if (list_empty(&ep->queue) || unlikely(ep->dma >= 0)) {
++ pio_irq_disable(ep->pxa_ep_num);
++ //dev_dbg(ep->dev->dev, "write_fifo1 %x\n", *ep->reg_udccsr);
++#ifdef USE_DMA
++ /* unaligned data and zlps couldn't use dma */
++ if (unlikely(!list_empty(&ep->queue))) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep,req);
++ return 0;
++ }
++#endif
++ }
++ //dev_dbg(ep->dev->dev, "write_fifo2 %x\n", *ep->reg_udccsr);
++ return 1;
++ }
++
++ // TODO experiment: how robust can fifo mode tweaking be?
++ // double buffering is off in the default fifo mode, which
++ // prevents TFS from being set here.
++
++ } while (*ep->reg_udccsr & UDCCSR_FS);
++ //dev_dbg(ep->dev->dev, "write_fifo2 %x\n", *ep->reg_udccsr);
++ return 0;
++}
++
++/* caller asserts req->pending (ep0 irq status nyet cleared); starts
++ * ep0 data stage. these chips want very simple state transitions.
++ */
++static inline
++void ep0start(struct pxa27x_udc *dev, u32 flags, const char *tag)
++{
++ UDCCSR0 = flags|UDCCSR0_SA|UDCCSR0_OPC;
++ UDCISR0 = UDCICR_INT(0, UDC_INT_FIFOERROR | UDC_INT_PACKETCMP);
++ dev->req_pending = 0;
++ DBG(DBG_VERY_NOISY, "%s %s, %02x/%02x\n",
++ __FUNCTION__, tag, UDCCSR0, flags);
++}
++
++static int
++write_ep0_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ unsigned count;
++ int is_short;
++
++ count = write_packet(&UDCDR0, req, EP0_FIFO_SIZE);
++ ep->dev->stats.write.bytes += count;
++
++ /* last packet "must be" short (or a zlp) */
++ is_short = (count != EP0_FIFO_SIZE);
++
++ DBG(DBG_VERY_NOISY, "ep0in %d bytes %d left %p\n", count,
++ req->req.length - req->req.actual, &req->req);
++
++ if (unlikely (is_short)) {
++ if (ep->dev->req_pending)
++ ep0start(ep->dev, UDCCSR0_IPR, "short IN");
++ else
++ UDCCSR0 = UDCCSR0_IPR;
++
++ count = req->req.length;
++ done(ep, req, 0);
++ ep0_idle(ep->dev);
++#if 0
++ /* This seems to get rid of lost status irqs in some cases:
++ * host responds quickly, or next request involves config
++ * change automagic, or should have been hidden, or ...
++ *
++ * FIXME get rid of all udelays possible...
++ */
++ if (count >= EP0_FIFO_SIZE) {
++ count = 100;
++ do {
++ if ((UDCCSR0 & UDCCSR0_OPC) != 0) {
++ /* clear OPC, generate ack */
++ UDCCSR0 = UDCCSR0_OPC;
++ break;
++ }
++ count--;
++ udelay(1);
++ } while (count);
++ }
++#endif
++ } else if (ep->dev->req_pending)
++ ep0start(ep->dev, 0, "IN");
++ return is_short;
++}
++
++
++/*
++ * read_fifo - unload packet(s) from the fifo we use for usb OUT
++ * transfers and put them into the request. caller should have made
++ * sure there's at least one packet ready.
++ *
++ * returns true if the request completed because of short packet or the
++ * request buffer having filled (and maybe overran till end-of-packet).
++ */
++static int read_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ for (;;) {
++ u32 *buf;
++ int bufferspace, count, is_short;
++
++ /* make sure there's a packet in the FIFO.*/
++ if (unlikely ((*ep->reg_udccsr & UDCCSR_PC) == 0))
++ break;
++ buf =(u32*) (req->req.buf + req->req.actual);
++ prefetchw(buf);
++ bufferspace = req->req.length - req->req.actual;
++
++ /* read all bytes from this packet */
++ if (likely (*ep->reg_udccsr & UDCCSR_BNE)) {
++ count = 0x3ff & *ep->reg_udcbcr;
++ req->req.actual += min(count, bufferspace);
++ } else /* zlp */
++ count = 0;
++
++ is_short = (count < ep->usb_ep->maxpacket);
++ dev_dbg(ep->dev->dev, "read %s udccsr:%02x, count:%d bytes%s req %p %d/%d\n",
++ ep->usb_ep->name, *ep->reg_udccsr, count,
++ is_short ? "/S" : "",
++ &req->req, req->req.actual, req->req.length);
++
++ count = min(count, bufferspace);
++ while (likely (count > 0)) {
++ *buf++ = *ep->reg_udcdr;
++ count -= 4;
++ }
++ dev_dbg(ep->dev->dev, "Buf:0x%p\n", req->req.buf);
++
++ *ep->reg_udccsr = UDCCSR_PC;
++ /* RPC/RSP/RNE could now reflect the other packet buffer */
++
++ /* completion */
++ if (is_short || req->req.actual == req->req.length) {
++ done(ep, req, 0);
++ if (list_empty(&ep->queue))
++ pio_irq_disable(ep->pxa_ep_num);
++ return 1;
++ }
++
++ /* finished that packet. the next one may be waiting... */
++ }
++ return 0;
++}
++
++/*
++ * special ep0 version of the above. no UBCR0 or double buffering; status
++ * handshaking is magic. most device protocols don't need control-OUT.
++ * CDC vendor commands (and RNDIS), mass storage CB/CBI, and some other
++ * protocols do use them.
++ */
++static int read_ep0_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ u32 *buf, word;
++ unsigned bufferspace;
++
++ buf = (u32*) (req->req.buf + req->req.actual);
++ bufferspace = req->req.length - req->req.actual;
++
++ while (UDCCSR0 & UDCCSR0_RNE) {
++ word = UDCDR0;
++
++ if (unlikely (bufferspace == 0)) {
++ /* this happens when the driver's buffer
++ * is smaller than what the host sent.
++ * discard the extra data.
++ */
++ if (req->req.status != -EOVERFLOW)
++ dev_info(ep->dev->dev, "%s overflow\n", ep->usb_ep->name);
++ req->req.status = -EOVERFLOW;
++ } else {
++ *buf++ = word;
++ req->req.actual += 4;
++ bufferspace -= 4;
++ }
++ }
++
++ UDCCSR0 = UDCCSR0_OPC ;
++
++ /* completion */
++ if (req->req.actual >= req->req.length)
++ return 1;
++
++ /* finished that packet. the next one may be waiting... */
++ return 0;
++}
++
++#ifdef USE_DMA
++
++#define MAX_IN_DMA ((DCMD_LENGTH + 1) - BULK_FIFO_SIZE)
++static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ u32 dcmd = 0;
++ u32 len = req->req.length;
++ u32 buf = req->req.dma;
++ u32 fifo = io_v2p((u32)ep->reg_udcdr);
++
++ buf += req->req.actual;
++ len -= req->req.actual;
++ ep->dma_con = 0;
++
++ DMSG("%s: req:0x%p length:%d, actual:%d dma:%d\n",
++ __FUNCTION__, &req->req, req->req.length,
++ req->req.actual,ep->dma);
++
++ /* no-descriptor mode can be simple for bulk-in, iso-in, iso-out */
++ DCSR(ep->dma) = DCSR_NODESC;
++ if (buf & 0x3)
++ DALGN |= 1 << ep->dma;
++ else
++ DALGN &= ~(1 << ep->dma);
++
++ if (ep->dir_in) {
++ DSADR(ep->dma) = buf;
++ DTADR(ep->dma) = fifo;
++ if (len > MAX_IN_DMA) {
++ len= MAX_IN_DMA;
++ ep->dma_con =1 ;
++ } else if (len >= ep->usb_ep->maxpacket) {
++ if ((ep->dma_con = (len % ep->usb_ep->maxpacket) != 0))
++ len = ep->usb_ep->maxpacket;
++ }
++ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN
++ | DCMD_FLOWTRG | DCMD_INCSRCADDR;
++ } else {
++ DSADR(ep->dma) = fifo;
++ DTADR(ep->dma) = buf;
++ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN
++ | DCMD_FLOWSRC | DCMD_INCTRGADDR;
++ }
++ *ep->reg_udccsr = UDCCSR_DME;
++ DCMD(ep->dma) = dcmd;
++ DCSR(ep->dma) = DCSR_NODESC | DCSR_EORIRQEN \
++ | ((ep->dir_in) ? DCSR_STOPIRQEN : 0);
++ *ep->reg_drcmr = ep->dma | DRCMR_MAPVLD;
++ DCSR(ep->dma) |= DCSR_RUN;
++}
++
++static void cancel_dma(struct pxa27x_ep *ep)
++{
++ struct pxa27x_request *req;
++ u32 tmp;
++
++ if (DCSR(ep->dma) == 0 || list_empty(&ep->queue))
++ return;
++
++ DMSG("hehe dma:%d,dcsr:0x%x\n", ep->dma, DCSR(ep->dma));
++ DCSR(ep->dma) = 0;
++ while ((DCSR(ep->dma) & DCSR_STOPSTATE) == 0)
++ cpu_relax();
++
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++ tmp = DCMD(ep->dma) & DCMD_LENGTH;
++ req->req.actual = req->req.length - tmp;
++
++ /* the last tx packet may be incomplete, so flush the fifo.
++ * FIXME correct req.actual if we can
++ */
++ *ep->reg_udccsr = UDCCSR_FEF;
++}
++
++static void dma_nodesc_handler(int dmach, void *_ep)
++{
++ struct pxa27x_ep *ep = _ep;
++ struct pxa27x_request *req, *req_next;
++ u32 dcsr, tmp, completed;
++
++ local_irq_disable();
++
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++
++ DMSG("%s, buf:0x%p\n",__FUNCTION__, req->req.buf);
++
++ ep->dma_irqs++;
++ ep->dev->stats.irqs++;
++
++ completed = 0;
++
++ dcsr = DCSR(dmach);
++ DCSR(ep->dma) &= ~DCSR_RUN;
++
++ if (dcsr & DCSR_BUSERR) {
++ DCSR(dmach) = DCSR_BUSERR;
++ dev_err(ep->dev->dev, "DMA Bus Error\n");
++ req->req.status = -EIO;
++ completed = 1;
++ } else if (dcsr & DCSR_ENDINTR) {
++ DCSR(dmach) = DCSR_ENDINTR;
++ if (ep->dir_in) {
++ tmp = req->req.length - req->req.actual;
++ /* Last packet is a short one*/
++ if (tmp < ep->usb_ep->maxpacket) {
++ int count = 0;
++
++ *ep->reg_udccsr = UDCCSR_SP | \
++ (*ep->reg_udccsr & UDCCSR_MASK);
++ /*Wait for packet out */
++ while( (count++ < 10000) && \
++ !(*ep->reg_udccsr & UDCCSR_FS));
++ if (count >= 10000)
++ DMSG("Failed to send packet\n");
++ else
++ DMSG("%s: short packet sent len:%d,"
++ "length:%d,actual:%d\n", __FUNCTION__,
++ tmp, req->req.length, req->req.actual);
++ req->req.actual = req->req.length;
++ completed = 1;
++ /* There are still packets to transfer */
++ } else if ( ep->dma_con) {
++ DMSG("%s: more packets,length:%d,actual:%d\n",
++ __FUNCTION__,req->req.length,
++ req->req.actual);
++ req->req.actual += ep->usb_ep->maxpacket;
++ completed = 0;
++ } else {
++ DMSG("%s: no more packets,length:%d,"
++ "actual:%d\n", __FUNCTION__,
++ req->req.length, req->req.actual);
++ req->req.actual = req->req.length;
++ completed = 1;
++ }
++ } else {
++ req->req.actual = req->req.length;
++ completed = 1;
++ }
++ } else if (dcsr & DCSR_EORINTR) { //Only happened in OUT DMA
++ int remain,udccsr ;
++
++ DCSR(dmach) = DCSR_EORINTR;
++ remain = DCMD(dmach) & DCMD_LENGTH;
++ req->req.actual = req->req.length - remain;
++
++ udccsr = *ep->reg_udccsr;
++ if (udccsr & UDCCSR_SP) {
++ *ep->reg_udccsr = UDCCSR_PC | (udccsr & UDCCSR_MASK);
++ completed = 1;
++ }
++ DMSG("%s: length:%d actual:%d\n",
++ __FUNCTION__, req->req.length, req->req.actual);
++ } else
++ DMSG("%s: Others dma:%d DCSR:0x%x DCMD:0x%x\n",
++ __FUNCTION__, dmach, DCSR(dmach), DCMD(dmach));
++
++ if (likely(completed)) {
++ if (req->queue.next != &ep->queue) {
++ req_next = list_entry(req->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep, req_next);
++ }
++ done(ep, req, 0);
++ } else {
++ kick_dma(ep, req);
++ }
++
++ local_irq_enable();
++}
++
++#endif
++/*-------------------------------------------------------------------------*/
++
++static int
++pxa27x_ep_queue(struct usb_ep *_ep, struct usb_request *_req, unsigned gfp_flags)
++{
++ struct pxa27x_virt_ep *virt_ep;
++ struct pxa27x_ep *ep;
++ struct pxa27x_request *req;
++ struct pxa27x_udc *dev;
++ unsigned long flags;
++
++ virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ ep = virt_ep->pxa_ep;
++
++ req = container_of(_req, struct pxa27x_request, req);
++ if (unlikely (!_req || !_req->complete || !_req->buf||
++ !list_empty(&req->queue))) {
++ DMSG("%s, bad params\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ if (unlikely (!_ep || (!ep->desc && _ep->name != ep0name))) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ DMSG("%s, ep point %d is queue\n", __FUNCTION__, ep->ep_num);
++
++ dev = ep->dev;
++ if (unlikely (!dev->driver
++ || dev->gadget.speed == USB_SPEED_UNKNOWN)) {
++ DMSG("%s, bogus device state\n", __FUNCTION__);
++ return -ESHUTDOWN;
++ }
++
++ /* iso is always one packet per request, that's the only way
++ * we can report per-packet status. that also helps with dma.
++ */
++ if (unlikely (ep->ep_type == USB_ENDPOINT_XFER_ISOC
++ && req->req.length > le16_to_cpu
++ (ep->desc->wMaxPacketSize)))
++ return -EMSGSIZE;
++
++#ifdef USE_DMA
++ // FIXME caller may already have done the dma mapping
++ if (ep->dma >= 0) {
++ _req->dma = dma_map_single(dev->dev, _req->buf, _req->length,
++ (ep->dir_in) ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
++ }
++#endif
++
++ DBG(DBG_NOISY, "%s queue req %p, len %d buf %p\n",
++ _ep->name, _req, _req->length, _req->buf);
++
++ local_irq_save(flags);
++
++ _req->status = -EINPROGRESS;
++ _req->actual = 0;
++
++ /* kickstart this i/o queue? */
++ if (list_empty(&ep->queue) && !ep->stopped) {
++ if (ep->desc == 0 /* ep0 */) {
++ unsigned length = _req->length;
++
++ switch (dev->ep0state) {
++ case EP0_IN_DATA_PHASE:
++ dev->stats.write.ops++;
++ if (write_ep0_fifo(ep, req))
++ req = 0;
++ break;
++
++ case EP0_OUT_DATA_PHASE:
++ dev->stats.read.ops++;
++ if (dev->req_pending)
++ ep0start(dev, UDCCSR0_IPR, "OUT");
++ if (length == 0 || ((UDCCSR0 & UDCCSR0_RNE) != 0
++ && read_ep0_fifo(ep, req))) {
++ ep0_idle(dev);
++ done(ep, req, 0);
++ req = 0;
++ }
++ break;
++ case EP0_NO_ACTION:
++ ep0_idle(dev);
++ req=0;
++ break;
++ default:
++ DMSG("ep0 i/o, odd state %d\n", dev->ep0state);
++ local_irq_restore (flags);
++ return -EL2HLT;
++ }
++#ifdef USE_DMA
++ /* either start dma or prime pio pump */
++ } else if (ep->dma >= 0) {
++ kick_dma(ep, req);
++#endif
++ /* can the FIFO can satisfy the request immediately? */
++ } else if (ep->dir_in && (*ep->reg_udccsr & UDCCSR_FS) != 0
++ && write_fifo(ep, req)) {
++ req = 0;
++ } else if ((*ep->reg_udccsr & UDCCSR_FS) != 0
++ && read_fifo(ep, req)) {
++ req = 0;
++ }
++ DMSG("req:%p,ep->desc:%p,ep->dma:%d\n", req, ep->desc, ep->dma);
++ if (likely (req && ep->desc) && ep->dma < 0)
++ pio_irq_enable(ep->pxa_ep_num);
++ }
++
++ /* pio or dma irq handler advances the queue. */
++ if (likely (req != 0))
++ list_add_tail(&req->queue, &ep->queue);
++ local_irq_restore(flags);
++
++ return 0;
++}
++
++
++/*
++ * nuke - dequeue ALL requests
++ */
++static void nuke(struct pxa27x_ep *ep, int status)
++{
++ struct pxa27x_request *req;
++
++ /* called with irqs blocked */
++#ifdef USE_DMA
++ if (ep->dma >= 0 && !ep->stopped)
++ cancel_dma(ep);
++#endif
++ while (!list_empty(&ep->queue)) {
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++ done(ep, req, status);
++ }
++ if (ep->desc)
++ pio_irq_disable(ep->pxa_ep_num);
++}
++
++
++/* dequeue JUST ONE request */
++static int pxa27x_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
++{
++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ struct pxa27x_ep *ep = virt_ep->pxa_ep;
++ struct pxa27x_request *req;
++ unsigned long flags;
++
++ if (!_ep || _ep->name == ep0name)
++ return -EINVAL;
++
++ local_irq_save(flags);
++
++ /* make sure it's actually queued on this endpoint */
++ list_for_each_entry(req, &ep->queue, queue) {
++ if (&req->req == _req)
++ break;
++ }
++ if (&req->req != _req) {
++ local_irq_restore(flags);
++ return -EINVAL;
++ }
++
++#ifdef USE_DMA
++ if (ep->dma >= 0 && ep->queue.next == &req->queue && !ep->stopped) {
++ cancel_dma(ep);
++ done(ep, req, -ECONNRESET);
++ /* restart i/o */
++ if (!list_empty(&ep->queue)) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep, req);
++ }
++ } else
++#endif
++ done(ep, req, -ECONNRESET);
++
++ local_irq_restore(flags);
++ return 0;
++}
++
++/*-------------------------------------------------------------------------*/
++
++static int pxa27x_ep_set_halt(struct usb_ep *_ep, int value)
++{
++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ struct pxa27x_ep *ep = virt_ep->pxa_ep;
++ unsigned long flags;
++
++ DMSG("%s is called\n", __FUNCTION__);
++ if (unlikely (!_ep || (!ep->desc && _ep->name != ep0name))
++ || ep->ep_type == USB_ENDPOINT_XFER_ISOC) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -EINVAL;
++ }
++ if (value == 0) {
++ /* this path (reset toggle+halt) is needed to implement
++ * SET_INTERFACE on normal hardware. but it can't be
++ * done from software on the PXA UDC, and the hardware
++ * forgets to do it as part of SET_INTERFACE automagic.
++ */
++ DMSG("only host can clear %s halt\n", _ep->name);
++ return -EROFS;
++ }
++
++ local_irq_save(flags);
++
++ if (ep->dir_in && ((*ep->reg_udccsr & UDCCSR_FS) == 0
++ || !list_empty(&ep->queue))) {
++ local_irq_restore(flags);
++ return -EAGAIN;
++ }
++
++ /* FST bit is the same for control, bulk in, bulk out, interrupt in */
++ *ep->reg_udccsr = UDCCSR_FST|UDCCSR_FEF;
++
++ /* ep0 needs special care */
++ if (!ep->desc) {
++ start_watchdog(ep->dev);
++ ep->dev->req_pending = 0;
++ ep->dev->ep0state = EP0_STALL;
++
++ /* and bulk/intr endpoints like dropping stalls too */
++ } else {
++ unsigned i;
++ for (i = 0; i < 1000; i += 20) {
++ if (*ep->reg_udccsr & UDCCSR_SST)
++ break;
++ udelay(20);
++ }
++ }
++ local_irq_restore(flags);
++
++ DBG(DBG_VERBOSE, "%s halt\n", _ep->name);
++ return 0;
++}
++
++static int pxa27x_ep_fifo_status(struct usb_ep *_ep)
++{
++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ struct pxa27x_ep *ep = virt_ep->pxa_ep;
++
++ if (!_ep) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -ENODEV;
++ }
++ /* pxa can't report unclaimed bytes from IN fifos */
++ if (ep->dir_in)
++ return -EOPNOTSUPP;
++ if (ep->dev->gadget.speed == USB_SPEED_UNKNOWN
++ || (*ep->reg_udccsr & UDCCSR_FS) == 0)
++ return 0;
++ else
++ return (*ep->reg_udcbcr & 0xfff) + 1;
++}
++
++static void pxa27x_ep_fifo_flush(struct usb_ep *_ep)
++{
++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ struct pxa27x_ep *ep = virt_ep->pxa_ep;
++
++ DMSG("pxa27x_ep_fifo_flush\n");
++
++ if (!_ep || _ep->name == ep0name || !list_empty(&ep->queue)) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return;
++ }
++
++ /* toggle and halt bits stay unchanged */
++
++ /* for OUT, just read and discard the FIFO contents. */
++ if (!ep->dir_in) {
++ while (((*ep->reg_udccsr) & UDCCSR_BNE) != 0)
++ (void) *ep->reg_udcdr;
++ return;
++ }
++
++ /* most IN status is the same, but ISO can't stall */
++ *ep->reg_udccsr = UDCCSR_PC|UDCCSR_FST|UDCCSR_TRN
++ | (ep->ep_type == USB_ENDPOINT_XFER_ISOC)
++ ? 0 : UDCCSR_SST;
++}
++
++
++static struct usb_ep_ops pxa27x_ep_ops = {
++ .enable = pxa27x_ep_enable,
++ .disable = pxa27x_ep_disable,
++
++ .alloc_request = pxa27x_ep_alloc_request,
++ .free_request = pxa27x_ep_free_request,
++
++ .alloc_buffer = pxa27x_ep_alloc_buffer,
++ .free_buffer = pxa27x_ep_free_buffer,
++
++ .queue = pxa27x_ep_queue,
++ .dequeue = pxa27x_ep_dequeue,
++
++ .set_halt = pxa27x_ep_set_halt,
++ .fifo_status = pxa27x_ep_fifo_status,
++ .fifo_flush = pxa27x_ep_fifo_flush,
++};
++
++
++/* ---------------------------------------------------------------------------
++ * device-scoped parts of the api to the usb controller hardware
++ * ---------------------------------------------------------------------------
++ */
++
++static inline unsigned int validate_fifo_size(u8 bmAttributes)
++{
++ switch (bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
++ case USB_ENDPOINT_XFER_CONTROL:
++ return EP0_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_ISOC:
++ return ISO_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_BULK:
++ return BULK_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_INT:
++ return INT_FIFO_SIZE;
++ break;
++ default:
++ break;
++ }
++}
++
++static void pxa27x_ep_free(struct usb_gadget *gadget, struct usb_ep *_ep)
++{
++ struct pxa27x_udc *dev = the_controller;
++ struct pxa27x_virt_ep *virt_ep;
++ int i;
++
++ virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if (dev->ep[i].usb_ep == &virt_ep->usb_ep) {
++ if (dev->ep[i].desc) {
++ virt_ep->pxa_ep = &dev->ep[i];
++ pxa27x_ep_disable(&virt_ep->usb_ep);
++ }
++ dev->ep[i].usb_ep = NULL;
++ }
++ }
++
++ if (!list_empty(&virt_ep->usb_ep.ep_list))
++ list_del_init(&virt_ep->usb_ep.ep_list);
++
++ kfree(virt_ep->usb_ep.name);
++ kfree(virt_ep);
++}
++
++static void pxa27x_ep_freeall(struct usb_gadget *gadget)
++{
++ struct pxa27x_udc *dev = the_controller;
++ int i;
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if(dev->ep[i].usb_ep)
++ pxa27x_ep_free(gadget, dev->ep[i].usb_ep);
++ }
++}
++
++#define NAME_SIZE 18
++
++static int pxa27x_find_free_ep(struct pxa27x_udc *dev)
++{
++ int i;
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if(!dev->ep[i].assigned)
++ return i;
++ }
++ return -1;
++}
++
++/*
++ * Endpoint Allocation/Configuration
++ *
++ * pxa27x endpoint configuration is fixed when the device is enabled. Any pxa
++ * endpoint is only active in one configuration, interface and alternate
++ * interface combination so to support gadget drivers, we map one usb_ep to
++ * one of several pxa ep's. One pxa endpoint is assigned per configuration
++ * combination.
++ */
++static struct usb_ep* pxa27x_ep_alloc(struct usb_gadget *gadget, struct usb_endpoint_descriptor *desc,
++ struct usb_endpoint_config *epconfig, int configs)
++{
++ struct pxa27x_udc *dev = the_controller;
++ struct pxa27x_virt_ep *virt_ep;
++ unsigned int i, fifo_size;
++ char *name;
++
++ if (unlikely(configs < 1)) {
++ dev_err(dev->dev, "%s: Error in config data\n", __FUNCTION__);
++ return NULL;
++ }
++
++ virt_ep = kmalloc(sizeof(struct pxa27x_virt_ep), GFP_KERNEL);
++ name = kmalloc(NAME_SIZE, GFP_KERNEL);
++ if (!virt_ep || !name) {
++ dev_err(dev->dev, "%s: -ENOMEM\n", __FUNCTION__);
++ kfree(name);
++ kfree(virt_ep);
++ return NULL;
++ }
++
++ if (!(desc->wMaxPacketSize)) {
++ fifo_size = validate_fifo_size(desc->bmAttributes);
++ desc->wMaxPacketSize = fifo_size;
++ } else {
++ fifo_size = desc->wMaxPacketSize;
++ }
++
++ DMSG("pxa27x_ep_alloc: bLength: %d, bDescriptorType: %x, bEndpointAddress: %x,\n"
++ " bmAttributes: %x, wMaxPacketSize: %d\n", desc->bLength,
++ desc->bDescriptorType, desc->bEndpointAddress, desc->bmAttributes,
++ desc->wMaxPacketSize);
++
++ if (!(desc->bEndpointAddress & 0xF))
++ desc->bEndpointAddress |= dev->ep_num;
++
++ for (i = 0; i < configs; i++)
++ {
++ struct pxa27x_ep *pxa_ep;
++ int j;
++
++ DMSG("pxa27x_ep_alloc: config: %d, interface: %d, altinterface: %x,\n",
++ epconfig->config, epconfig->interface, epconfig->altinterface);
++
++ j = pxa27x_find_free_ep(dev);
++
++ if (unlikely(j < 0)) {
++ dev_err(dev->dev, "pxa27x_ep_alloc: Failed to find a spare endpoint\n");
++ pxa27x_ep_free(gadget, &virt_ep->usb_ep);
++ return NULL;
++ }
++
++ pxa_ep = &dev->ep[j];
++
++ if (i == 0)
++ virt_ep->pxa_ep = pxa_ep;
++
++ pxa_ep->assigned = 1;
++ pxa_ep->ep_num = dev->ep_num;
++ pxa_ep->pxa_ep_num = j;
++ pxa_ep->usb_ep = &virt_ep->usb_ep;
++ pxa_ep->dev = dev;
++ pxa_ep->desc = desc;
++ pxa_ep->pio_irqs = pxa_ep->dma_irqs = 0;
++ pxa_ep->dma = -1;
++
++ pxa_ep->fifo_size = fifo_size;
++ pxa_ep->dir_in = (desc->bEndpointAddress & USB_DIR_IN) ? 1 : 0;
++ pxa_ep->ep_type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
++ pxa_ep->stopped = 1;
++ pxa_ep->dma_con = 0;
++ pxa_ep->config = epconfig->config;
++ pxa_ep->interface = epconfig->interface;
++ pxa_ep->aisn = epconfig->altinterface;
++
++ pxa_ep->reg_udccsr = &UDCCSR0 + j;
++ pxa_ep->reg_udcbcr = &UDCBCR0 + j;
++ pxa_ep->reg_udcdr = &UDCDR0 + j ;
++ pxa_ep->reg_udccr = &UDCCRA - 1 + j;
++#ifdef USE_DMA
++ pxa_ep->reg_drcmr = &DRCMR24 + j;
++#endif
++
++ /* Configure UDCCR */
++ *pxa_ep->reg_udccr = ((pxa_ep->config << UDCCONR_CN_S) & UDCCONR_CN)
++ | ((pxa_ep->interface << UDCCONR_IN_S) & UDCCONR_IN)
++ | ((pxa_ep->aisn << UDCCONR_AISN_S) & UDCCONR_AISN)
++ | ((dev->ep_num << UDCCONR_EN_S) & UDCCONR_EN)
++ | ((pxa_ep->ep_type << UDCCONR_ET_S) & UDCCONR_ET)
++ | ((pxa_ep->dir_in) ? UDCCONR_ED : 0)
++ | ((min(pxa_ep->fifo_size, (unsigned)desc->wMaxPacketSize) << UDCCONR_MPS_S ) & UDCCONR_MPS)
++ | UDCCONR_EE;
++// | UDCCONR_DE | UDCCONR_EE;
++
++
++
++#ifdef USE_DMA
++ /* Only BULK use DMA */
++ if ((pxa_ep->ep_type & USB_ENDPOINT_XFERTYPE_MASK)\
++ == USB_ENDPOINT_XFER_BULK)
++ *pxa_ep->reg_udccsr = UDCCSR_DME;
++#endif
++
++ DMSG("UDCCR: 0x%p is 0x%x\n", pxa_ep->reg_udccr,*pxa_ep->reg_udccr);
++
++ epconfig++;
++ }
++
++ /* Fill ep name*/
++ switch (desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
++ case USB_ENDPOINT_XFER_BULK:
++ sprintf(name, "ep%d%s-bulk", dev->ep_num,
++ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out"));
++ break;
++ case USB_ENDPOINT_XFER_INT:
++ sprintf(name, "ep%d%s-intr", dev->ep_num,
++ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out"));
++ break;
++ default:
++ sprintf(name, "ep%d%s", dev->ep_num,
++ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out"));
++ break;
++ }
++
++ virt_ep->desc = desc;
++ virt_ep->usb_ep.name = name;
++ virt_ep->usb_ep.ops = &pxa27x_ep_ops;
++ virt_ep->usb_ep.maxpacket = min((ushort)fifo_size, desc->wMaxPacketSize);
++
++ list_add_tail(&virt_ep->usb_ep.ep_list, &gadget->ep_list);
++
++ dev->ep_num++;
++ return &virt_ep->usb_ep;
++}
++
++static int pxa27x_udc_get_frame(struct usb_gadget *_gadget)
++{
++ return (UDCFNR & 0x7FF);
++}
++
++static int pxa27x_udc_wakeup(struct usb_gadget *_gadget)
++{
++ /* host may not have enabled remote wakeup */
++ if ((UDCCR & UDCCR_DWRE) == 0)
++ return -EHOSTUNREACH;
++ udc_set_mask_UDCCR(UDCCR_UDR);
++ return 0;
++}
++
++static const struct usb_gadget_ops pxa27x_udc_ops = {
++ .ep_alloc = pxa27x_ep_alloc,
++ .get_frame = pxa27x_udc_get_frame,
++ .wakeup = pxa27x_udc_wakeup,
++ // current versions must always be self-powered
++};
++
++
++/*-------------------------------------------------------------------------*/
++
++#ifdef UDC_PROC_FILE
++
++static const char proc_node_name [] = "driver/udc";
++
++static int
++udc_proc_read(char *page, char **start, off_t off, int count,
++ int *eof, void *_dev)
++{
++ char *buf = page;
++ struct pxa27x_udc *dev = _dev;
++ char *next = buf;
++ unsigned size = count;
++ unsigned long flags;
++ int i, t;
++ u32 tmp;
++
++ if (off != 0)
++ return 0;
++
++ local_irq_save(flags);
++
++ /* basic device status */
++ t = scnprintf(next, size, DRIVER_DESC "\n"
++ "%s version: %s\nGadget driver: %s\n",
++ driver_name, DRIVER_VERSION DMASTR,
++ dev->driver ? dev->driver->driver.name : "(none)");
++ size -= t;
++ next += t;
++
++ /* registers for device and ep0 */
++ t = scnprintf(next, size,
++ "uicr %02X.%02X, usir %02X.%02x, ufnr %02X\n",
++ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR);
++ size -= t;
++ next += t;
++
++ tmp = UDCCR;
++ t = scnprintf(next, size,"udccr %02X =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n", tmp,
++ (tmp & UDCCR_OEN) ? " oen":"",
++ (tmp & UDCCR_AALTHNP) ? " aalthnp":"",
++ (tmp & UDCCR_AHNP) ? " rem" : "",
++ (tmp & UDCCR_BHNP) ? " rstir" : "",
++ (tmp & UDCCR_DWRE) ? " dwre" : "",
++ (tmp & UDCCR_SMAC) ? " smac" : "",
++ (tmp & UDCCR_EMCE) ? " emce" : "",
++ (tmp & UDCCR_UDR) ? " udr" : "",
++ (tmp & UDCCR_UDA) ? " uda" : "",
++ (tmp & UDCCR_UDE) ? " ude" : "",
++ (tmp & UDCCR_ACN) >> UDCCR_ACN_S,
++ (tmp & UDCCR_AIN) >> UDCCR_AIN_S,
++ (tmp & UDCCR_AAISN)>> UDCCR_AAISN_S );
++
++ size -= t;
++ next += t;
++
++ tmp = UDCCSR0;
++ t = scnprintf(next, size,
++ "udccsr0 %02X =%s%s%s%s%s%s%s\n", tmp,
++ (tmp & UDCCSR0_SA) ? " sa" : "",
++ (tmp & UDCCSR0_RNE) ? " rne" : "",
++ (tmp & UDCCSR0_FST) ? " fst" : "",
++ (tmp & UDCCSR0_SST) ? " sst" : "",
++ (tmp & UDCCSR0_DME) ? " dme" : "",
++ (tmp & UDCCSR0_IPR) ? " ipr" : "",
++ (tmp & UDCCSR0_OPC) ? " opc" : "");
++ size -= t;
++ next += t;
++
++ if (!dev->driver)
++ goto done;
++
++ t = scnprintf(next, size, "ep0 IN %lu/%lu, OUT %lu/%lu\nirqs %lu\n\n",
++ dev->stats.write.bytes, dev->stats.write.ops,
++ dev->stats.read.bytes, dev->stats.read.ops,
++ dev->stats.irqs);
++ size -= t;
++ next += t;
++
++ /* dump endpoint queues */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep [i];
++ struct pxa27x_request *req;
++ int t;
++
++ if (i != 0) {
++ const struct usb_endpoint_descriptor *d;
++
++ d = ep->desc;
++ if (!d)
++ continue;
++ tmp = *dev->ep [i].reg_udccsr;
++ t = scnprintf(next, size,
++ "%d max %d %s udccs %02x udccr:0x%x\n",
++ i, le16_to_cpu (d->wMaxPacketSize),
++ (ep->dma >= 0) ? "dma" : "pio", tmp,
++ *dev->ep[i].reg_udccr);
++ /* TODO translate all five groups of udccs bits! */
++
++ } else /* ep0 should only have one transfer queued */
++ t = scnprintf(next, size, "ep0 max 16 pio irqs %lu\n",
++ ep->pio_irqs);
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++
++ if (list_empty(&ep->queue)) {
++ t = scnprintf(next, size, "\t(nothing queued)\n");
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++ continue;
++ }
++ list_for_each_entry(req, &ep->queue, queue) {
++#ifdef USE_DMA
++ if (ep->dma >= 0 && req->queue.prev == &ep->queue)
++ t = scnprintf(next, size, "\treq %p len %d/%d "
++ "buf %p (dma%d dcmd %08x)\n",
++ &req->req, req->req.actual,
++ req->req.length, req->req.buf,
++ ep->dma, DCMD(ep->dma)
++ /* low 13 bits == bytes-to-go */);
++ else
++#endif
++ t = scnprintf(next, size,
++ "\treq %p len %d/%d buf %p\n",
++ &req->req, req->req.actual,
++ req->req.length, req->req.buf);
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++ }
++ }
++
++done:
++ local_irq_restore(flags);
++ *eof = 1;
++ return count - size;
++}
++
++#define create_proc_files() \
++ create_proc_read_entry(proc_node_name, 0, NULL, udc_proc_read, dev)
++#define remove_proc_files() \
++ remove_proc_entry(proc_node_name, NULL)
++
++#else /* !UDC_PROC_FILE */
++#define create_proc_files() do {} while (0)
++#define remove_proc_files() do {} while (0)
++
++#endif /* UDC_PROC_FILE */
++
++/* "function" sysfs attribute */
++static ssize_t show_function(struct device *_dev, struct device_attribute *attr, char *buf)
++{
++ struct pxa27x_udc *dev = dev_get_drvdata(_dev);
++
++ if (!dev->driver || !dev->driver->function
++ || strlen(dev->driver->function) > PAGE_SIZE)
++ return 0;
++ return scnprintf(buf, PAGE_SIZE, "%s\n", dev->driver->function);
++}
++static DEVICE_ATTR(function, S_IRUGO, show_function, NULL);
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * udc_disable - disable USB device controller
++ */
++static void udc_disable(struct pxa27x_udc *dev)
++{
++ UDCICR0 = UDCICR1 = 0x00000000;
++
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++
++ /* Disable clock for USB device */
++ pxa_set_cken(CKEN11_USB, 0);
++
++ ep0_idle(dev);
++ dev->gadget.speed = USB_SPEED_UNKNOWN;
++ dev->mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT);
++}
++
++
++/*
++ * udc_reinit - initialize software state
++ */
++static void udc_reinit(struct pxa27x_udc *dev)
++{
++ u32 i;
++
++ dev->ep0state = EP0_IDLE;
++
++ /* basic endpoint records init */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->stopped = 0;
++ ep->pio_irqs = ep->dma_irqs = 0;
++ }
++ dev->configuration = 0;
++ dev->interface = 0;
++ dev->alternate = 0;
++ /* the rest was statically initialized, and is read-only */
++}
++
++/* until it's enabled, this UDC should be completely invisible
++ * to any USB host.
++ */
++static void udc_enable(struct pxa27x_udc *dev)
++{
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++
++ /* Enable clock for USB device */
++ pxa_set_cken(CKEN11_USB, 1);
++
++ UDCICR0 = UDCICR1 = 0;
++
++ ep0_idle(dev);
++ dev->gadget.speed = USB_SPEED_FULL;
++ dev->stats.irqs = 0;
++
++ udc_set_mask_UDCCR(UDCCR_UDE);
++ udelay(2);
++ if (UDCCR & UDCCR_EMCE)
++ dev_err(dev->dev, "There are error in configuration, udc disabled\n");
++
++ /* caller must be able to sleep in order to cope
++ * with startup transients.
++ */
++ msleep(100);
++
++ /* enable suspend/resume and reset irqs */
++ UDCICR1 = UDCICR1_IECC | UDCICR1_IERU | UDCICR1_IESU | UDCICR1_IERS;
++
++ /* enable ep0 irqs */
++ UDCICR0 = UDCICR_INT(0,UDCICR_INT_MASK);
++
++ DMSG("Connecting\n");
++ /* RPFIXME */
++ UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE;
++ //dev->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
++}
++
++
++/* when a driver is successfully registered, it will receive
++ * control requests including set_configuration(), which enables
++ * non-control requests. then usb traffic follows until a
++ * disconnect is reported. then a host may connect again, or
++ * the driver might get unbound.
++ */
++int usb_gadget_register_driver(struct usb_gadget_driver *driver)
++{
++ struct pxa27x_udc *dev = the_controller;
++ int retval;
++
++ if (!driver || driver->speed != USB_SPEED_FULL || !driver->bind
++ || !driver->unbind || !driver->disconnect || !driver->setup)
++ return -EINVAL;
++ if (!dev)
++ return -ENODEV;
++ if (dev->driver)
++ return -EBUSY;
++
++ udc_disable(dev);
++ udc_init_ep(dev);
++ udc_reinit(dev);
++
++ /* first hook up the driver ... */
++ dev->driver = driver;
++ dev->gadget.dev.driver = &driver->driver;
++ dev->ep_num = 1;
++
++ retval = device_add(&dev->gadget.dev);
++ if (retval) {
++ DMSG("device_add error %d\n", retval);
++ goto add_fail;
++ }
++ retval = driver->bind(&dev->gadget);
++ if (retval) {
++ DMSG("bind to driver %s --> error %d\n",
++ driver->driver.name, retval);
++ goto bind_fail;
++ }
++ retval = device_create_file(dev->dev, &dev_attr_function);
++ if (retval) {
++ DMSG("device_create_file failed: %d\n", retval);
++ goto create_file_fail;
++ }
++
++ /* ... then enable host detection and ep0; and we're ready
++ * for set_configuration as well as eventual disconnect.
++ * NOTE: this shouldn't power up until later.
++ */
++ DMSG("registered gadget driver '%s'\n", driver->driver.name);
++ udc_enable(dev);
++ dump_state(dev);
++ return 0;
++
++create_file_fail:
++ driver->unbind(&dev->gadget);
++bind_fail:
++ device_del(&dev->gadget.dev);
++add_fail:
++ dev->driver = 0;
++ dev->gadget.dev.driver = 0;
++ return retval;
++}
++EXPORT_SYMBOL(usb_gadget_register_driver);
++
++static void
++stop_activity(struct pxa27x_udc *dev, struct usb_gadget_driver *driver)
++{
++ int i;
++
++ DMSG("Trace path 1\n");
++ /* don't disconnect drivers more than once */
++ if (dev->gadget.speed == USB_SPEED_UNKNOWN)
++ driver = 0;
++ dev->gadget.speed = USB_SPEED_UNKNOWN;
++
++ /* prevent new request submissions, kill any outstanding requests */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->stopped = 1;
++ nuke(ep, -ESHUTDOWN);
++ }
++ del_timer_sync(&dev->timer);
++
++ /* report disconnect; the driver is already quiesced */
++ if (driver)
++ driver->disconnect(&dev->gadget);
++
++ /* re-init driver-visible data structures */
++ udc_reinit(dev);
++}
++
++int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
++{
++ struct pxa27x_udc *dev = the_controller;
++
++ if (!dev)
++ return -ENODEV;
++ if (!driver || driver != dev->driver)
++ return -EINVAL;
++
++ local_irq_disable();
++ udc_disable(dev);
++ stop_activity(dev, driver);
++ local_irq_enable();
++
++ driver->unbind(&dev->gadget);
++ pxa27x_ep_freeall(&dev->gadget);
++ dev->driver = 0;
++
++ device_del(&dev->gadget.dev);
++ device_remove_file(dev->dev, &dev_attr_function);
++
++ DMSG("unregistered gadget driver '%s'\n", driver->driver.name);
++ dump_state(dev);
++ return 0;
++}
++EXPORT_SYMBOL(usb_gadget_unregister_driver);
++
++
++/*-------------------------------------------------------------------------*/
++
++static inline void clear_ep_state(struct pxa27x_udc *dev)
++{
++ unsigned i;
++
++ /* hardware SET_{CONFIGURATION,INTERFACE} automagic resets endpoint
++ * fifos, and pending transactions mustn't be continued in any case.
++ */
++ for (i = 1; i < UDC_EP_NUM; i++)
++ nuke(&dev->ep[i], -ECONNABORTED);
++}
++
++static void udc_watchdog(unsigned long _dev)
++{
++ struct pxa27x_udc *dev = (void *)_dev;
++
++ local_irq_disable();
++ if (dev->ep0state == EP0_STALL
++ && (UDCCSR0 & UDCCSR0_FST) == 0
++ && (UDCCSR0 & UDCCSR0_SST) == 0) {
++ UDCCSR0 = UDCCSR0_FST|UDCCSR0_FTF;
++ DBG(DBG_VERBOSE, "ep0 re-stall\n");
++ start_watchdog(dev);
++ }
++ local_irq_enable();
++}
++
++static void handle_ep0(struct pxa27x_udc *dev)
++{
++ u32 udccsr0 = UDCCSR0;
++ struct pxa27x_ep *ep = &dev->ep[0];
++ struct pxa27x_request *req;
++ union {
++ struct usb_ctrlrequest r;
++ u8 raw[8];
++ u32 word[2];
++ } u;
++
++ if (list_empty(&ep->queue))
++ req = 0;
++ else
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++
++ /* clear stall status */
++ if (udccsr0 & UDCCSR0_SST) {
++ nuke(ep, -EPIPE);
++ UDCCSR0 = UDCCSR0_SST;
++ del_timer(&dev->timer);
++ ep0_idle(dev);
++ }
++
++ /* previous request unfinished? non-error iff back-to-back ... */
++ if ((udccsr0 & UDCCSR0_SA) != 0 && dev->ep0state != EP0_IDLE) {
++ nuke(ep, 0);
++ del_timer(&dev->timer);
++ ep0_idle(dev);
++ }
++
++ switch (dev->ep0state) {
++ case EP0_NO_ACTION:
++ dev_info(dev->dev, "%s: Busy\n", __FUNCTION__);
++ /*Fall through */
++ case EP0_IDLE:
++ /* late-breaking status? */
++ udccsr0 = UDCCSR0;
++
++ /* start control request? */
++ if (likely((udccsr0 & (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE))
++ == (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE))) {
++ int i;
++
++ nuke(ep, -EPROTO);
++ /* read SETUP packet */
++ for (i = 0; i < 2; i++) {
++ if (unlikely(!(UDCCSR0 & UDCCSR0_RNE))) {
++bad_setup:
++ DMSG("SETUP %d!\n", i);
++ goto stall;
++ }
++ u.word [i] = UDCDR0;
++ }
++ if (unlikely((UDCCSR0 & UDCCSR0_RNE) != 0))
++ goto bad_setup;
++
++ le16_to_cpus(&u.r.wValue);
++ le16_to_cpus(&u.r.wIndex);
++ le16_to_cpus(&u.r.wLength);
++
++ DBG(DBG_VERBOSE, "SETUP %02x.%02x v%04x i%04x l%04x\n",
++ u.r.bRequestType, u.r.bRequest,
++ u.r.wValue, u.r.wIndex, u.r.wLength);
++ /* cope with automagic for some standard requests. */
++ dev->req_std = (u.r.bRequestType & USB_TYPE_MASK)
++ == USB_TYPE_STANDARD;
++ dev->req_config = 0;
++ dev->req_pending = 1;
++#if 0
++ switch (u.r.bRequest) {
++ /* hardware was supposed to hide this */
++ case USB_REQ_SET_CONFIGURATION:
++ case USB_REQ_SET_INTERFACE:
++ case USB_REQ_SET_ADDRESS:
++ dev_err(dev->dev, "Should not come here\n");
++ break;
++ }
++
++#endif
++ if (u.r.bRequestType & USB_DIR_IN)
++ dev->ep0state = EP0_IN_DATA_PHASE;
++ else
++ dev->ep0state = EP0_OUT_DATA_PHASE;
++ i = dev->driver->setup(&dev->gadget, &u.r);
++
++ if (i < 0) {
++ /* hardware automagic preventing STALL... */
++ if (dev->req_config) {
++ /* hardware sometimes neglects to tell
++ * tell us about config change events,
++ * so later ones may fail...
++ */
++ WARN("config change %02x fail %d?\n",
++ u.r.bRequest, i);
++ return;
++ /* TODO experiment: if has_cfr,
++ * hardware didn't ACK; maybe we
++ * could actually STALL!
++ */
++ }
++ DBG(DBG_VERBOSE, "protocol STALL, "
++ "%02x err %d\n", UDCCSR0, i);
++stall:
++ /* the watchdog timer helps deal with cases
++ * where udc seems to clear FST wrongly, and
++ * then NAKs instead of STALLing.
++ */
++ ep0start(dev, UDCCSR0_FST|UDCCSR0_FTF, "stall");
++ start_watchdog(dev);
++ dev->ep0state = EP0_STALL;
++
++ /* deferred i/o == no response yet */
++ } else if (dev->req_pending) {
++ if (likely(dev->ep0state == EP0_IN_DATA_PHASE
++ || dev->req_std || u.r.wLength))
++ ep0start(dev, 0, "defer");
++ else
++ ep0start(dev, UDCCSR0_IPR, "defer/IPR");
++ }
++
++ /* expect at least one data or status stage irq */
++ return;
++
++ } else {
++ /* some random early IRQ:
++ * - we acked FST
++ * - IPR cleared
++ * - OPC got set, without SA (likely status stage)
++ */
++ UDCCSR0 = udccsr0 & (UDCCSR0_SA|UDCCSR0_OPC);
++ }
++ break;
++ case EP0_IN_DATA_PHASE: /* GET_DESCRIPTOR etc */
++ if (udccsr0 & UDCCSR0_OPC) {
++ UDCCSR0 = UDCCSR0_OPC|UDCCSR0_FTF;
++ DBG(DBG_VERBOSE, "ep0in premature status\n");
++ if (req)
++ done(ep, req, 0);
++ ep0_idle(dev);
++ } else /* irq was IPR clearing */ {
++ if (req) {
++ /* this IN packet might finish the request */
++ (void) write_ep0_fifo(ep, req);
++ } /* else IN token before response was written */
++ }
++ break;
++ case EP0_OUT_DATA_PHASE: /* SET_DESCRIPTOR etc */
++ if (udccsr0 & UDCCSR0_OPC) {
++ if (req) {
++ /* this OUT packet might finish the request */
++ if (read_ep0_fifo(ep, req))
++ done(ep, req, 0);
++ /* else more OUT packets expected */
++ } /* else OUT token before read was issued */
++ } else /* irq was IPR clearing */ {
++ DBG(DBG_VERBOSE, "ep0out premature status\n");
++ if (req)
++ done(ep, req, 0);
++ ep0_idle(dev);
++ }
++ break;
++ case EP0_STALL:
++ UDCCSR0 = UDCCSR0_FST;
++ break;
++ }
++ UDCISR0 = UDCISR_INT(0, UDCISR_INT_MASK);
++}
++
++
++static void handle_ep(struct pxa27x_ep *ep)
++{
++ struct pxa27x_request *req;
++ int completed;
++ u32 udccsr=0;
++
++ DMSG("%s is called\n", __FUNCTION__);
++ do {
++ completed = 0;
++ if (likely (!list_empty(&ep->queue))) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ } else
++ req = 0;
++
++// udccsr = *ep->reg_udccsr;
++ DMSG("%s: req:%p, udcisr0:0x%x udccsr %p:0x%x\n", __FUNCTION__,
++ req, UDCISR0, ep->reg_udccsr, *ep->reg_udccsr);
++ if (unlikely(ep->dir_in)) {
++ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr;
++ if (unlikely (udccsr))
++ *ep->reg_udccsr = udccsr;
++
++ if (req && likely ((*ep->reg_udccsr & UDCCSR_FS) != 0))
++ completed = write_fifo(ep, req);
++
++ } else {
++ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr;
++ if (unlikely(udccsr))
++ *ep->reg_udccsr = udccsr;
++
++ /* fifos can hold packets, ready for reading... */
++ if (likely(req)) {
++ completed = read_fifo(ep, req);
++ } else {
++ pio_irq_disable (ep->pxa_ep_num);
++ //*ep->reg_udccsr = UDCCSR_FEF;
++ DMSG("%s: no req for out data\n",
++ __FUNCTION__);
++ }
++ }
++ ep->pio_irqs++;
++ } while (completed);
++}
++
++static void pxa27x_update_eps(struct pxa27x_udc *dev)
++{
++ struct pxa27x_virt_ep *virt_ep;
++ int i;
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if(!dev->ep[i].assigned || !dev->ep[i].usb_ep)
++ continue;
++ virt_ep = container_of(dev->ep[i].usb_ep, struct pxa27x_virt_ep, usb_ep);
++
++ DMSG("%s, Updating eps %d:%d, %d:%d, %d:%d, %p,%p\n", __FUNCTION__, dev->ep[i].config, dev->configuration
++ ,dev->ep[i].interface, dev->interface, dev->ep[i].aisn, dev->alternate, virt_ep->pxa_ep, &dev->ep[i]);
++
++ if(dev->ep[i].config == dev->configuration && virt_ep->pxa_ep != &dev->ep[i]) {
++ if ((dev->ep[i].interface == dev->interface &&
++ dev->ep[i].aisn == dev->alternate) || virt_ep->pxa_ep->config != dev->configuration) {
++
++ if (virt_ep->pxa_ep->desc) {
++ DMSG("%s, Changing end point to %d (en/dis)\n", __FUNCTION__, i);
++ pxa27x_ep_disable(&virt_ep->usb_ep);
++ virt_ep->pxa_ep = &dev->ep[i];
++ pxa27x_ep_enable(&virt_ep->usb_ep, virt_ep->desc);
++ } else {
++ DMSG("%s, Changing end point to %d (no en/dis)\n", __FUNCTION__, i);
++ virt_ep->pxa_ep = &dev->ep[i];
++ }
++ }
++ }
++ }
++}
++
++static void pxa27x_change_configuration(struct pxa27x_udc *dev)
++{
++ struct usb_ctrlrequest req ;
++
++ pxa27x_update_eps(dev);
++
++ req.bRequestType = 0;
++ req.bRequest = USB_REQ_SET_CONFIGURATION;
++ req.wValue = dev->configuration;
++ req.wIndex = 0;
++ req.wLength = 0;
++
++ dev->ep0state = EP0_NO_ACTION;
++ dev->driver->setup(&dev->gadget, &req);
++}
++
++static void pxa27x_change_interface(struct pxa27x_udc *dev)
++{
++ struct usb_ctrlrequest req;
++
++ pxa27x_update_eps(dev);
++
++ req.bRequestType = USB_RECIP_INTERFACE;
++ req.bRequest = USB_REQ_SET_INTERFACE;
++ req.wValue = dev->alternate;
++ req.wIndex = dev->interface;
++ req.wLength = 0;
++
++ dev->ep0state = EP0_NO_ACTION;
++ dev->driver->setup(&dev->gadget, &req);
++}
++
++/*
++ * pxa27x_udc_irq - interrupt handler
++ *
++ * avoid delays in ep0 processing. the control handshaking isn't always
++ * under software control (pxa250c0 and the pxa255 are better), and delays
++ * could cause usb protocol errors.
++ */
++static irqreturn_t pxa27x_udc_irq(int irq, void *_dev)
++{
++ struct pxa27x_udc *dev = _dev;
++ int handled;
++
++ dev->stats.irqs++;
++
++ DBG(DBG_VERBOSE, "Interrupt, UDCISR0:0x%08x, UDCISR1:0x%08x, "
++ "UDCCR:0x%08x\n", UDCISR0, UDCISR1, UDCCR);
++ do {
++ u32 udcir = UDCISR1 & 0xF8000000;
++
++ handled = 0;
++
++ /* SUSpend Interrupt Request */
++ if (unlikely(udcir & UDCISR1_IRSU)) {
++ UDCISR1 = UDCISR1_IRSU;
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB suspend\n");
++ if (dev->gadget.speed != USB_SPEED_UNKNOWN
++ && dev->driver
++ && dev->driver->suspend)
++ dev->driver->suspend(&dev->gadget);
++ ep0_idle(dev);
++ }
++
++ /* RESume Interrupt Request */
++ if (unlikely(udcir & UDCISR1_IRRU)) {
++ UDCISR1 = UDCISR1_IRRU;
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB resume\n");
++
++ if (dev->gadget.speed != USB_SPEED_UNKNOWN
++ && dev->driver
++ && dev->driver->resume)
++ dev->driver->resume(&dev->gadget);
++ }
++
++ if (unlikely(udcir & UDCISR1_IRCC)) {
++ unsigned config, interface, alternate;
++
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB SET_CONFIGURATION or "
++ "SET_INTERFACE command received\n");
++
++ config = (UDCCR & UDCCR_ACN) >> UDCCR_ACN_S;
++
++ if (dev->configuration != config) {
++ dev->configuration = config;
++ pxa27x_change_configuration(dev) ;
++ }
++
++ interface = (UDCCR & UDCCR_AIN) >> UDCCR_AIN_S;
++ alternate = (UDCCR & UDCCR_AAISN) >> UDCCR_AAISN_S;
++
++ if ((dev->interface != interface) || (dev->alternate != alternate)) {
++ dev->interface = interface;
++ dev->alternate = alternate;
++ pxa27x_change_interface(dev);
++ }
++
++ UDCCR |= UDCCR_SMAC;
++
++ UDCISR1 = UDCISR1_IRCC;
++ DMSG("%s: con:%d,inter:%d,alt:%d\n",
++ __FUNCTION__, config,interface, alternate);
++ }
++
++ /* ReSeT Interrupt Request - USB reset */
++ if (unlikely(udcir & UDCISR1_IRRS)) {
++ UDCISR1 = UDCISR1_IRRS;
++ handled = 1;
++
++ if ((UDCCR & UDCCR_UDA) == 0) {
++ DBG(DBG_VERBOSE, "USB reset start\n");
++
++ /* reset driver and endpoints,
++ * in case that's not yet done
++ */
++ stop_activity(dev, dev->driver);
++ }
++ INFO("USB reset\n");
++ dev->gadget.speed = USB_SPEED_FULL;
++ memset(&dev->stats, 0, sizeof dev->stats);
++
++ } else {
++ u32 udcisr0 = UDCISR0 ;
++ u32 udcisr1 = UDCISR1 & 0xFFFF;
++ int i;
++
++ if (unlikely (!udcisr0 && !udcisr1))
++ continue;
++
++ DBG(DBG_VERY_NOISY, "irq %02x.%02x\n", udcisr1,udcisr0);
++
++ /* control traffic */
++ if (udcisr0 & UDCISR0_IR0) {
++ dev->ep[0].pio_irqs++;
++ handle_ep0(dev);
++ handled = 1;
++ }
++
++ udcisr0 >>= 2;
++ /* endpoint data transfers */
++ for (i = 1; udcisr0!=0 && i < 16; udcisr0>>=2,i++) {
++ UDCISR0 = UDCISR_INT(i, UDCISR_INT_MASK);
++
++ if (udcisr0 & UDC_INT_FIFOERROR)
++ dev_err(dev->dev, " Endpoint %d Fifo error\n", i);
++ if (udcisr0 & UDC_INT_PACKETCMP) {
++ handle_ep(&dev->ep[i]);
++ handled = 1;
++ }
++
++ }
++
++ for (i = 0; udcisr1!=0 && i < 8; udcisr1 >>= 2, i++) {
++ UDCISR1 = UDCISR_INT(i, UDCISR_INT_MASK);
++
++ if (udcisr1 & UDC_INT_FIFOERROR) {
++ dev_err(dev->dev, "Endpoint %d fifo error\n", (i+16));
++ }
++
++ if (udcisr1 & UDC_INT_PACKETCMP) {
++ handle_ep(&dev->ep[i+16]);
++ handled = 1;
++ }
++ }
++ }
++
++ /* we could also ask for 1 msec SOF (SIR) interrupts */
++
++ } while (handled);
++ return IRQ_HANDLED;
++}
++
++int write_ep0_zlp(void)
++{
++ UDCCSR0 = UDCCSR0_IPR;
++ return 0;
++}
++EXPORT_SYMBOL(write_ep0_zlp);
++
++static void udc_init_ep(struct pxa27x_udc *dev)
++{
++ int i;
++
++ INIT_LIST_HEAD(&dev->gadget.ep_list);
++ INIT_LIST_HEAD(&dev->gadget.ep0->ep_list);
++
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->dma = -1;
++ if (i != 0) {
++ memset(ep, 0, sizeof(*ep));
++ }
++ INIT_LIST_HEAD(&ep->queue);
++ }
++}
++
++/*-------------------------------------------------------------------------*/
++
++static void nop_release(struct device *dev)
++{
++ DMSG("%s %s\n", __FUNCTION__, dev->bus_id);
++}
++
++/* this uses load-time allocation and initialization (instead of
++ * doing it at run-time) to save code, eliminate fault paths, and
++ * be more obviously correct.
++ */
++
++static struct pxa27x_udc memory = {
++ .gadget = {
++ .ops = &pxa27x_udc_ops,
++ .ep0 = &memory.virt_ep0.usb_ep,
++ .name = driver_name,
++ .dev = {
++ .bus_id = "gadget",
++ .release = nop_release,
++ },
++ },
++
++ /* control endpoint */
++ .virt_ep0 = {
++ .pxa_ep = &memory.ep[0],
++ .usb_ep = {
++ .name = ep0name,
++ .ops = &pxa27x_ep_ops,
++ .maxpacket = EP0_FIFO_SIZE,
++ },
++ },
++
++ .ep[0] = {
++ .usb_ep = &memory.virt_ep0.usb_ep,
++ .dev = &memory,
++ .reg_udccsr = &UDCCSR0,
++ .reg_udcdr = &UDCDR0,
++ },
++};
++
++static int __init pxa27x_udc_probe(struct platform_device *_dev)
++{
++ struct pxa27x_udc *dev = &memory;
++ int retval;
++
++ /* other non-static parts of init */
++ dev->dev = &_dev->dev;
++ dev->mach = _dev->dev.platform_data;
++
++ /* RPFIXME */
++ UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE;
++
++ init_timer(&dev->timer);
++ dev->timer.function = udc_watchdog;
++ dev->timer.data = (unsigned long) dev;
++
++ device_initialize(&dev->gadget.dev);
++ dev->gadget.dev.parent = &_dev->dev;
++ dev->gadget.dev.dma_mask = _dev->dev.dma_mask;
++
++ the_controller = dev;
++ platform_set_drvdata(_dev, dev);
++
++ udc_disable(dev);
++ udc_init_ep(dev);
++ udc_reinit(dev);
++
++ /* irq setup after old hardware state is cleaned up */
++ retval = request_irq(IRQ_USB, pxa27x_udc_irq,
++ SA_INTERRUPT, driver_name, dev);
++ if (retval != 0) {
++ dev_err(dev->dev, "%s: can't get irq %i, err %d\n",
++ driver_name, IRQ_USB, retval);
++ return -EBUSY;
++ }
++ dev->got_irq = 1;
++
++ create_proc_files();
++
++ return 0;
++}
++
++static int pxa27x_udc_remove(struct platform_device *_dev)
++{
++ struct pxa27x_udc *dev = platform_get_drvdata(_dev);
++
++ udc_disable(dev);
++ remove_proc_files();
++ usb_gadget_unregister_driver(dev->driver);
++
++ pxa27x_ep_freeall(&dev->gadget);
++
++ if (dev->got_irq) {
++ free_irq(IRQ_USB, dev);
++ dev->got_irq = 0;
++ }
++ platform_set_drvdata(_dev, 0);
++ the_controller = 0;
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static void pxa27x_udc_shutdown(struct platform_device *_dev)
++{
++ struct pxa27x_udc *dev = platform_get_drvdata(_dev);
++
++ udc_disable(dev);
++}
++
++static int pxa27x_udc_suspend(struct platform_device *_dev, pm_message_t state)
++{
++ int i;
++ struct pxa27x_udc *dev = platform_get_drvdata(_dev);
++
++ DMSG("%s is called\n", __FUNCTION__);
++
++ dev->udccsr0 = UDCCSR0;
++ for(i=1; (i<UDC_EP_NUM); i++) {
++ if (dev->ep[i].assigned) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++ ep->udccsr_value = *ep->reg_udccsr;
++ ep->udccr_value = *ep->reg_udccr;
++ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n",
++ i, *ep->reg_udccsr, *ep->reg_udccr);
++ }
++ }
++
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++ pxa_set_cken(CKEN11_USB, 0);
++
++ return 0;
++}
++
++static int pxa27x_udc_resume(struct platform_device *_dev)
++{
++ int i;
++ struct pxa27x_udc *dev = platform_get_drvdata(_dev);
++
++ DMSG("%s is called\n", __FUNCTION__);
++ UDCCSR0 = dev->udccsr0 & (UDCCSR0_FST | UDCCSR0_DME);
++ for (i=1; i < UDC_EP_NUM; i++) {
++ if (dev->ep[i].assigned) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++ *ep->reg_udccsr = ep->udccsr_value;
++ *ep->reg_udccr = ep->udccr_value;
++ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n",
++ i, *ep->reg_udccsr, *ep->reg_udccr);
++ }
++ }
++
++ udc_enable(dev);
++
++ /* OTGPH bit is set when sleep mode is entered.
++ * it indicates that OTG pad is retaining its state.
++ * Upon exit from sleep mode and before clearing OTGPH,
++ * Software must configure the USB OTG pad, UDC, and UHC
++ * to the state they were in before entering sleep mode.*/
++ PSSR |= PSSR_OTGPH;
++
++ return 0;
++}
++#endif
++
++/*-------------------------------------------------------------------------*/
++
++static struct platform_driver udc_driver = {
++ .driver = {
++ .name = "pxa2xx-udc",
++ },
++ .probe = pxa27x_udc_probe,
++ .remove = pxa27x_udc_remove,
++#ifdef CONFIG_PM
++ .shutdown = pxa27x_udc_shutdown,
++ .suspend = pxa27x_udc_suspend,
++ .resume = pxa27x_udc_resume
++#endif
++};
++
++static int __init udc_init(void)
++{
++ printk(KERN_INFO "%s: version %s\n", driver_name, DRIVER_VERSION);
++ return platform_driver_register(&udc_driver);
++}
++module_init(udc_init);
++
++static void __exit udc_exit(void)
++{
++ platform_driver_unregister(&udc_driver);
++}
++module_exit(udc_exit);
++
++MODULE_DESCRIPTION(DRIVER_DESC);
++MODULE_AUTHOR("Frank Becker, Robert Schwebel, David Brownell");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.20.7/drivers/usb/gadget/pxa27x_udc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/drivers/usb/gadget/pxa27x_udc.h 2007-04-21 12:22:00.000000000 -0300
+@@ -0,0 +1,298 @@
++/*
++ * linux/drivers/usb/gadget/pxa27x_udc.h
++ * Intel PXA27x on-chip full speed USB device controller
++ *
++ * Copyright (C) 2003 Robert Schwebel <r.schwebel@pengutronix.de>, Pengutronix
++ * Copyright (C) 2003 David Brownell
++ * Copyright (C) 2004 Intel Corporation
++ *
++ * 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 __LINUX_USB_GADGET_PXA27X_H
++#define __LINUX_USB_GADGET_PXA27X_H
++
++#include <linux/types.h>
++
++struct pxa27x_udc;
++
++struct pxa27x_ep {
++ struct pxa27x_udc *dev;
++ struct usb_ep *usb_ep;
++ const struct usb_endpoint_descriptor *desc;
++
++ struct list_head queue;
++ unsigned long pio_irqs;
++ unsigned long dma_irqs;
++
++ unsigned pxa_ep_num;
++ int dma;
++ unsigned fifo_size;
++ unsigned ep_type;
++
++ unsigned stopped : 1;
++ unsigned dma_con : 1;
++ unsigned dir_in : 1;
++ unsigned assigned : 1;
++
++ unsigned ep_num;
++ unsigned config;
++ unsigned interface;
++ unsigned aisn;
++ /* UDCCSR = UDC Control/Status Register for this EP
++ * UBCR = UDC Byte Count Remaining (contents of OUT fifo)
++ * UDCDR = UDC Endpoint Data Register (the fifo)
++ * UDCCR = UDC Endpoint Configuration Registers
++ * DRCM = DMA Request Channel Map
++ */
++ volatile u32 *reg_udccsr;
++ volatile u32 *reg_udcbcr;
++ volatile u32 *reg_udcdr;
++ volatile u32 *reg_udccr;
++#ifdef USE_DMA
++ volatile u32 *reg_drcmr;
++#define drcmr(n) .reg_drcmr = & DRCMR ## n ,
++#else
++#define drcmr(n)
++#endif
++
++#ifdef CONFIG_PM
++ unsigned udccsr_value;
++ unsigned udccr_value;
++#endif
++};
++
++struct pxa27x_virt_ep {
++ struct usb_ep usb_ep;
++ const struct usb_endpoint_descriptor *desc;
++ struct pxa27x_ep *pxa_ep;
++};
++
++struct pxa27x_request {
++ struct usb_request req;
++ struct list_head queue;
++};
++
++enum ep0_state {
++ EP0_IDLE,
++ EP0_IN_DATA_PHASE,
++ EP0_OUT_DATA_PHASE,
++// EP0_END_XFER,
++ EP0_STALL,
++ EP0_NO_ACTION
++};
++
++#define EP0_FIFO_SIZE ((unsigned)16)
++#define BULK_FIFO_SIZE ((unsigned)64)
++#define ISO_FIFO_SIZE ((unsigned)256)
++#define INT_FIFO_SIZE ((unsigned)8)
++
++struct udc_stats {
++ struct ep0stats {
++ unsigned long ops;
++ unsigned long bytes;
++ } read, write;
++ unsigned long irqs;
++};
++
++#define UDC_EP_NUM 24
++
++
++struct pxa27x_udc {
++ struct usb_gadget gadget;
++ struct usb_gadget_driver *driver;
++
++ enum ep0_state ep0state;
++ struct udc_stats stats;
++ unsigned got_irq : 1,
++ has_cfr : 1,
++ req_pending : 1,
++ req_std : 1,
++ req_config : 1;
++
++#define start_watchdog(dev) mod_timer(&dev->timer, jiffies + (HZ/200))
++ struct timer_list timer;
++
++ struct device *dev;
++ struct pxa2xx_udc_mach_info *mach;
++ u64 dma_mask;
++ struct pxa27x_virt_ep virt_ep0;
++ struct pxa27x_ep ep[UDC_EP_NUM];
++ unsigned int ep_num;
++
++ unsigned configuration,
++ interface,
++ alternate;
++#ifdef CONFIG_PM
++ unsigned udccsr0;
++#endif
++};
++
++static struct pxa27x_udc *the_controller;
++
++#if 0
++/*-------------------------------------------------------------------------*/
++
++
++/* one GPIO should be used to detect host disconnect */
++static inline int is_usb_connected(void)
++{
++ if (!the_controller->mach->udc_is_connected)
++ return 1;
++ return the_controller->mach->udc_is_connected();
++}
++
++/* one GPIO should force the host to see this device (or not) */
++static inline void make_usb_disappear(void)
++{
++ if (!the_controller->mach->udc_command)
++ return;
++ the_controller->mach->udc_command(PXA27X_UDC_CMD_DISCONNECT);
++}
++
++static inline void let_usb_appear(void)
++{
++ if (!the_controller->mach->udc_command)
++ return;
++ the_controller->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
++}
++#endif
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * Debugging support vanishes in non-debug builds. DBG_NORMAL should be
++ * mostly silent during normal use/testing, with no timing side-effects.
++ */
++#define DBG_NORMAL 1 /* error paths, device state transitions */
++#define DBG_VERBOSE 2 /* add some success path trace info */
++#define DBG_NOISY 3 /* ... even more: request level */
++#define DBG_VERY_NOISY 4 /* ... even more: packet level */
++
++#ifdef DEBUG
++static const char *state_name[] = {
++ "EP0_IDLE",
++ "EP0_IN_DATA_PHASE", "EP0_OUT_DATA_PHASE",
++ "EP0_END_XFER", "EP0_STALL"
++};
++
++#define DMSG(stuff...) printk(KERN_ERR "udc: " stuff)
++
++#ifdef VERBOSE
++# define UDC_DEBUG DBG_VERBOSE
++#else
++# define UDC_DEBUG DBG_NORMAL
++#endif
++
++static void __attribute__ ((__unused__))
++dump_udccr(const char *label)
++{
++ u32 udccr = UDCCR;
++ DMSG("%s 0x%08x =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n",
++ label, udccr,
++ (udccr & UDCCR_OEN) ? " oen":"",
++ (udccr & UDCCR_AALTHNP) ? " aalthnp":"",
++ (udccr & UDCCR_AHNP) ? " rem" : "",
++ (udccr & UDCCR_BHNP) ? " rstir" : "",
++ (udccr & UDCCR_DWRE) ? " dwre" : "",
++ (udccr & UDCCR_SMAC) ? " smac" : "",
++ (udccr & UDCCR_EMCE) ? " emce" : "",
++ (udccr & UDCCR_UDR) ? " udr" : "",
++ (udccr & UDCCR_UDA) ? " uda" : "",
++ (udccr & UDCCR_UDE) ? " ude" : "",
++ (udccr & UDCCR_ACN) >> UDCCR_ACN_S,
++ (udccr & UDCCR_AIN) >> UDCCR_AIN_S,
++ (udccr & UDCCR_AAISN)>> UDCCR_AAISN_S );
++}
++
++static void __attribute__ ((__unused__))
++dump_udccsr0(const char *label)
++{
++ u32 udccsr0 = UDCCSR0;
++
++ DMSG("%s %s 0x%08x =%s%s%s%s%s%s%s\n",
++ label, state_name[the_controller->ep0state], udccsr0,
++ (udccsr0 & UDCCSR0_SA) ? " sa" : "",
++ (udccsr0 & UDCCSR0_RNE) ? " rne" : "",
++ (udccsr0 & UDCCSR0_FST) ? " fst" : "",
++ (udccsr0 & UDCCSR0_SST) ? " sst" : "",
++ (udccsr0 & UDCCSR0_DME) ? " dme" : "",
++ (udccsr0 & UDCCSR0_IPR) ? " ipr" : "",
++ (udccsr0 & UDCCSR0_OPC) ? " opr" : "");
++}
++
++static void __attribute__ ((__unused__))
++dump_state(struct pxa27x_udc *dev)
++{
++ unsigned i;
++
++ DMSG("%s, udcicr %02X.%02X, udcsir %02X.%02x, udcfnr %02X\n",
++ state_name[dev->ep0state],
++ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR);
++ dump_udccr("udccr");
++
++ if (!dev->driver) {
++ DMSG("no gadget driver bound\n");
++ return;
++ } else
++ DMSG("ep0 driver '%s'\n", dev->driver->driver.name);
++
++
++ dump_udccsr0 ("udccsr0");
++ DMSG("ep0 IN %lu/%lu, OUT %lu/%lu\n",
++ dev->stats.write.bytes, dev->stats.write.ops,
++ dev->stats.read.bytes, dev->stats.read.ops);
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if (dev->ep[i].assigned)
++ DMSG ("udccs%d = %02x\n", i, *dev->ep->reg_udccsr);
++ }
++}
++
++#if 0
++static void dump_regs(u8 ep)
++{
++ DMSG("EP:%d UDCCSR:0x%08x UDCBCR:0x%08x\n UDCCR:0x%08x\n",
++ ep,UDCCSN(ep), UDCBCN(ep), UDCCN(ep));
++}
++static void dump_req (struct pxa27x_request *req)
++{
++ struct usb_request *r = &req->req;
++
++ DMSG("%s: buf:0x%08x length:%d dma:0x%08x actual:%d\n",
++ __FUNCTION__, (unsigned)r->buf, r->length,
++ r->dma, r->actual);
++}
++#endif
++
++#else
++
++#define DMSG(stuff...) do{}while(0)
++
++#define dump_udccr(x) do{}while(0)
++#define dump_udccsr0(x) do{}while(0)
++#define dump_state(x) do{}while(0)
++
++#define UDC_DEBUG ((unsigned)4)
++
++#endif
++
++#define DBG(lvl, stuff...) do{if ((lvl) <= UDC_DEBUG) DMSG(stuff);}while(0)
++
++#define WARN(stuff...) printk(KERN_WARNING "udc: " stuff)
++#define INFO(stuff...) printk(KERN_INFO "udc: " stuff)
++
++
++#endif /* __LINUX_USB_GADGET_PXA27X_H */
+Index: linux-2.6.20.7/drivers/usb/gadget/pxa2xx_udc.h
+===================================================================
+--- linux-2.6.20.7.orig/drivers/usb/gadget/pxa2xx_udc.h 2007-04-21 12:21:53.000000000 -0300
++++ linux-2.6.20.7/drivers/usb/gadget/pxa2xx_udc.h 2007-04-21 12:22:00.000000000 -0300
+@@ -259,7 +259,8 @@
+ unsigned i;
+
+ DMSG("%s %s, uicr %02X.%02X, usir %02X.%02x, ufnr %02X.%02X\n",
+- is_usb_connected() ? "host " : "disconnected",
++ //is_usb_connected() ? "host " : "disconnected",
++ "host ",
+ state_name[dev->ep0state],
+ UICR1, UICR0, USIR1, USIR0, UFNRH, UFNRL);
+ dump_udccr("udccr");
+@@ -276,8 +277,8 @@
+ } else
+ DMSG("ep0 driver '%s'\n", dev->driver->driver.name);
+
+- if (!is_usb_connected())
+- return;
++ //if (!is_usb_connected())
++ // return;
+
+ dump_udccs0 ("udccs0");
+ DMSG("ep0 IN %lu/%lu, OUT %lu/%lu\n",
+Index: linux-2.6.20.7/drivers/usb/gadget/ether.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/usb/gadget/ether.c 2007-04-21 12:21:53.000000000 -0300
++++ linux-2.6.20.7/drivers/usb/gadget/ether.c 2007-04-21 12:29:18.000000000 -0300
+@@ -1275,6 +1275,10 @@
+ /* done sending after USB_CDC_GET_ENCAPSULATED_RESPONSE */
+ }
+
++#ifdef CONFIG_USB_GADGET_PXA27X
++int write_ep0_zlp(void);
++#endif
++
+ static void rndis_command_complete (struct usb_ep *ep, struct usb_request *req)
+ {
+ struct eth_dev *dev = ep->driver_data;
+@@ -1285,6 +1289,10 @@
+ status = rndis_msg_parser (dev->rndis_config, (u8 *) req->buf);
+ if (status < 0)
+ ERROR(dev, "%s: rndis parse error %d\n", __FUNCTION__, status);
++
++#ifdef CONFIG_USB_GADGET_PXA27X
++ write_ep0_zlp();
++#endif
+ spin_unlock(&dev->lock);
+ }
+
diff --git a/packages/linux/linux-ezx-2.6.21/.mtn2git_empty b/packages/linux/linux-ezx-2.6.21/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.21/defconfig-a780 b/packages/linux/linux-ezx-2.6.21/defconfig-a780
new file mode 100644
index 0000000000..42fb38751c
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/defconfig-a780
@@ -0,0 +1,1253 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21
+# Fri Apr 27 21:27:36 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+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_ARCH_MTD_XIP=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="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+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=y
+CONFIG_IKCONFIG_PROC=y
+# CONFIG_SYSFS_DEPRECATED is not set
+# 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=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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 is not set
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+CONFIG_TINY_SHMEM=y
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+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
+
+#
+# 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 is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA_EZX=y
+# CONFIG_PXA_EZX_E680 is not set
+CONFIG_PXA_EZX_A780=y
+# CONFIG_PXA_EZX_E2 is not set
+CONFIG_PXA_EZX_EMU=y
+CONFIG_PXA_EZX_EMU_USB=y
+# CONFIG_PXA_EZX_EMU_UART is not set
+# CONFIG_PXA_EZX_EMU_NOTHING is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=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_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+
+#
+# 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=0
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000 mem=16M@0xAC000000"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC 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=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM_EMULATION=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_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=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_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
+
+#
+# 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_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=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP 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 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+CONFIG_CONNECTOR=m
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=m
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=m
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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=m
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=m
+# 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=m
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=m
+# 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
+CONFIG_MTD_XIP=y
+
+#
+# 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_SHARP_SL is not set
+CONFIG_MTD_EZX=m
+# CONFIG_MTD_EZX_A780 is not set
+CONFIG_MTD_EZX_A780_ALTERNATE=y
+# CONFIG_MTD_EZX_E2 is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD 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_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 is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP 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
+
+#
+# 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=y
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+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_GPIO=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 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_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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+
+#
+# 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_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+CONFIG_TS0710_MUX=y
+CONFIG_TS0710_MUX_USB=y
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# 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_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# 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=y
+CONFIG_SPI_DEBUG=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=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_PXA=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX 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_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# 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=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# 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 is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS 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_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_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_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# 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 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
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 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_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
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL 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_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 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=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=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=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 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 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=y
+# CONFIG_NFS_V4 is not set
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+# 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_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# 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=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+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 is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+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=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+CONFIG_DEBUG_RT_MUTEXES=y
+CONFIG_DEBUG_PI_LIST=y
+# CONFIG_RT_MUTEX_TESTER is not set
+CONFIG_DEBUG_SPINLOCK=y
+CONFIG_DEBUG_MUTEXES=y
+CONFIG_DEBUG_SPINLOCK_SLEEP=y
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-core.patch b/packages/linux/linux-ezx-2.6.21/ezx-core.patch
new file mode 100644
index 0000000000..8e89afff53
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/ezx-core.patch
@@ -0,0 +1,1116 @@
+Index: linux-2.6.21/arch/arm/boot/compressed/head-xscale.S
+===================================================================
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head-xscale.S 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head-xscale.S 2007-05-03 17:42:02.000000000 -0300
+@@ -53,3 +53,6 @@
+ str r1, [r0, #0x18]
+ #endif
+
++#ifdef CONFIG_ARCH_EZX
++ mov r7, #MACH_TYPE_EZX
++#endif
+Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-04 04:17:33.000000000 -0300
+@@ -37,6 +37,10 @@
+ bool "Keith und Koep Trizeps4 DIMM-Module"
+ select PXA27x
+
++config PXA_EZX
++ bool "Motorola EZX Platform"
++ select PXA_SSP
++
+ endchoice
+
+ if PXA_SHARPSL
+@@ -71,6 +75,27 @@
+
+ endif
+
++if PXA_EZX
++
++choice
++ prompt "Select target EZX device"
++
++config PXA_EZX_E680
++ bool "Motorola E680 GSM Phone"
++ select PXA27x
++
++config PXA_EZX_A780
++ bool "Motorola A780 GSM Phone"
++ select PXA27x
++
++config PXA_EZX_E2
++ bool "Motorola E2 GSM Phone"
++ select PXA27x
++
++endchoice
++
++endif
++
+ endmenu
+
+ config MACH_POODLE
+@@ -144,4 +169,5 @@
+ tristate
+ help
+ Enable support for PXA2xx SSP ports
++
+ endif
+Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-05-04 04:17:42.000000000 -0300
+@@ -18,6 +18,7 @@
+ obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
+ obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
+ obj-$(CONFIG_MACH_TOSA) += tosa.o
++obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o
+
+ # Support for blinky lights
+ led-y := leds.o
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-04 04:17:42.000000000 -0300
+@@ -0,0 +1,378 @@
++/*
++ * linux/arch/arm/mach-ezx/a780.c
++ *
++ * Support for the Motorola Ezx A780 Development Platform.
++ *
++ * Author: Zhuang Xiaofan
++ * Created: Nov 25, 2003
++ * Copyright: Motorola 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/init.h>
++#include <linux/major.h>
++#include <linux/fs.h>
++#include <linux/interrupt.h>
++#include <linux/sched.h>
++#include <linux/bitops.h>
++#include <linux/apm_bios.h>
++#include <linux/platform_device.h>
++
++#include <asm/types.h>
++#include <asm/setup.h>
++#include <asm/memory.h>
++#include <asm/mach-types.h>
++#include <asm/hardware.h>
++#include <asm/irq.h>
++
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++#include <asm/mach/irq.h>
++
++#include <asm/arch/ohci.h>
++#include <asm/arch/pxa-regs.h>
++
++#include "ezx.h"
++#include "generic.h"
++#include <linux/tty.h>
++#include <linux/apm_bios.h>
++
++
++extern void usb_send_readurb(void);
++extern int ezx_ssp_set_machinfo(struct ezxssp_machinfo *);
++//FIXME extern void pm_do_poweroff(void);
++
++/* BP Handshake */
++#define FIRST_STEP 2
++#define LAST_STEP 3
++#define BP_RDY_TIMEOUT 0x000c0000
++
++/* check power down condition */
++inline void check_power_off(void)
++{
++ if (!(GPIO_is_high(GPIO_BB_WDI2))) {
++#ifdef CONFIG_PM
++//FIXME pm_do_poweroff();
++#endif
++ }
++}
++
++/* SSP */
++struct platform_device ezxssp_device = {
++ .name = "ezx-ssp",
++ .id = -1,
++};
++
++struct ezxssp_machinfo ezx_ssp_machinfo = {
++ .port = 1,
++ .cs_pcap = GPIO_SPI_CE,
++ .clk_pcap = 1,
++};
++
++
++/* OHCI Controller */
++
++static int ezx_ohci_init(struct device *dev)
++{
++ /* for A780 support (connected with Neptune) */
++ pxa_gpio_mode(GPIO30_USB_P3_2); /* GPIO30 - USB_P3_2/ICL_TXENB */
++ pxa_gpio_mode(GPIO31_USB_P3_6); /* GPIO31 - USB_P3_6/ICL_VPOUT */
++ pxa_gpio_mode(GPIO90_USB_P3_5); /* GPIO90 - USB_P3_5/ICL_VPIN */
++ pxa_gpio_mode(GPIO91_USB_P3_1); /* GPIO91 - USB_P3_1/ICL_XRXD */
++ pxa_gpio_mode(GPIO56_USB_P3_4); /* GPIO56 - USB_P3_4/ICL_VMOUT */
++ pxa_gpio_mode(GPIO113_USB_P3_3);/* GPIO113 - USB_P3_3/ICL_VMIN */
++ UP3OCR = 0x00000002;
++
++ UHCHR = UHCHR & ~(UHCHR_SSEP2 | UHCHR_SSEP3 | UHCHR_SSE);
++
++ return 0;
++}
++
++static struct pxaohci_platform_data ezx_ohci_platform_data = {
++ .port_mode = PMM_NPS_MODE,
++ .init = ezx_ohci_init,
++};
++
++static int step = FIRST_STEP;
++void handshake(void)
++{
++ /* step 1: check MCU_INT_SW or BP_RDY is low (now it is checked in apboot) */
++ if (step == 1) {
++ int timeout = BP_RDY_TIMEOUT;
++
++ /* config MCU_INT_SW, BP_RDY as input */
++ GPDR(GPIO_MCU_INT_SW) &= ~GPIO_bit(GPIO_MCU_INT_SW);
++ GPDR(GPIO_BP_RDY) &= ~GPIO_bit(GPIO_BP_RDY);
++
++ while ( timeout -- ) {
++ if ( (!(GPIO_is_high(GPIO_MCU_INT_SW)))
++ || (!(GPIO_is_high(GPIO_BP_RDY))) ) {
++ step ++;
++ break;
++ }
++
++ check_power_off();
++ }
++ }
++
++ /* step 2: wait BP_RDY is low */
++ if (step == 2) {
++ if (!(GPIO_is_high(GPIO_BP_RDY))) {
++
++ /* config MCU_INT_SW as output */
++ pxa_gpio_mode(GPIO_MCU_INT_SW | GPIO_OUT);
++ clr_GPIO(GPIO_MCU_INT_SW);
++
++ step ++;
++ }
++ }
++
++ /* step 3: wait BP_RDY is high */
++ if (step == 3) {
++ if (GPIO_is_high(GPIO_BP_RDY)) {
++ step ++;
++ //FIXME delay_bklight();
++ set_GPIO(GPIO_MCU_INT_SW);
++ }
++ }
++}
++
++#ifdef CONFIG_APM
++static unsigned long idle_limit = 0;
++int pm_handle_irq(int irq)
++{
++
++ //FIXME: extern unsigned long idle_limit;
++ //FIXME: extern int can_idle, can_sleep;
++ static unsigned long tmp_jiffy; /* for temporary store of jiffies */
++
++ /*
++ * if idle_limit is zero, never enter idle.
++ * if not OS timer, reset idle timer count
++ */
++ if (idle_limit == 0) {
++ tmp_jiffy = jiffies;
++ return irq;
++ }
++#if 0
++ if (irq != IRQ_OST0) {
++ tmp_jiffy = jiffies;
++ can_idle = 0;
++ can_sleep = 0;
++ } else if (jiffies > tmp_jiffy + idle_limit) {
++
++ /*
++ * I think this is enough to prevent from reentering here
++ * due to jiffies will be stoped
++ */
++ tmp_jiffy = jiffies;
++
++ /* if pm idle timer expired, queue event */
++ apm_queue_event(KRNL_PROC_INACT);
++ can_idle = 1;
++ }
++#endif
++
++ return irq;
++}
++
++irqreturn_t bp_wdi_intr(int irq, void *dev_id)
++{
++//FIXME apm_queue_event(KRNL_BP_WDI);
++ return IRQ_HANDLED;
++}
++
++static struct irqaction bp_wdi_irq = {
++ .name = "BP wdi",
++ .handler = &bp_wdi_intr,
++};
++#endif
++
++int handshake_pass(void)
++{
++ return (step > LAST_STEP);
++}
++
++static irqreturn_t bp_rdy_intr(int irq, void *dev_id)
++{
++ static int usbipc_ready = 0;
++
++ if (!usbipc_ready) {
++ handshake();
++ if (handshake_pass()) {
++ disable_irq(IRQ_GPIO(GPIO_BB_WDI2));
++
++ /* set bp_rdy handle for usb ipc */
++ set_irq_type(GPIO_BP_RDY, IRQT_FALLING);
++ usbipc_ready = 1;
++ }
++ } else
++ // FIXME usb_send_readurb();
++ {}
++
++ return IRQ_HANDLED;
++}
++
++static struct irqaction bp_rdy_irq = {
++ .name = "BP rdy",
++ .handler = bp_rdy_intr,
++};
++
++static irqreturn_t bp_wdi2_intr(int irq, void *dev_id)
++{
++#ifdef CONFIG_PM
++//FIXME pm_do_poweroff();
++#endif
++ return IRQ_HANDLED;
++}
++
++static struct irqaction bp_wdi2_irq = {
++ .name = "BP wdi2",
++ .handler = bp_wdi2_intr,
++};
++
++
++static struct resource ezx_bp_resources[] = {
++ [0] = {
++ .start = GPIO_BP_RDY,
++ .end = GPIO_BP_RDY,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = GPIO_BB_WDI2,
++ .end = GPIO_BB_WDI2,
++ .flags = IORESOURCE_IRQ,
++ },
++#ifdef CONFIG_APM
++ [2] = {
++ .start = GPIO_BB_WDI,
++ .end = GPIO_BB_WDI,
++ .flags = IORESOURCE_IRQ,
++ },
++#endif
++};
++
++static struct platform_device ezx_bp_device = {
++ .name = "ezx-bp",
++ .dev = {
++ //.parent =
++ //.platform_data =
++ },
++ .id = -1,
++ .num_resources = ARRAY_SIZE(ezx_bp_resources),
++ .resource = ezx_bp_resources,
++};
++
++static void __init ezx_init_gpio_irq(void)
++{
++#ifdef CONFIG_APM
++ set_irq_type(GPIO_BB_WDI, IRQT_FALLING);
++ setup_irq(IRQ_GPIO(GPIO_BB_WDI), &bp_wdi_irq);
++#endif
++ set_irq_type(GPIO_BP_RDY, IRQT_BOTHEDGE);
++ setup_irq(IRQ_GPIO(GPIO_BP_RDY), &bp_rdy_irq);
++
++ set_irq_type(GPIO_BB_WDI2, IRQT_FALLING);
++ setup_irq(IRQ_GPIO(GPIO_BB_WDI2), &bp_wdi2_irq);
++}
++
++static void __init a780_init_irq(void)
++{
++ pxa_init_irq();
++
++ /* init ezx specfic gpio irq */
++ ezx_init_gpio_irq();
++
++ check_power_off();
++ handshake();
++ if (handshake_pass()) {
++ disable_irq(IRQ_GPIO(GPIO_BP_RDY));
++ disable_irq(IRQ_GPIO(GPIO_BB_WDI2));
++ }
++}
++
++static struct platform_device *devices[] __initdata = {
++ &ezxssp_device,
++ &ezx_bp_device,
++};
++
++static void __init a780_init(void)
++{
++ CKEN = CKEN9_OSTIMER | CKEN22_MEMC;
++
++ ezx_ssp_set_machinfo(&ezx_ssp_machinfo);
++
++ /* set BB_RESET PIN out put high */
++ pxa_gpio_mode(GPIO_BB_RESET|GPIO_OUT);
++ set_GPIO(GPIO_BB_RESET);
++
++ pxa_gpio_mode(GPIO_ICL_FFRXD_MD);
++ pxa_gpio_mode(GPIO_ICL_FFTXD_MD);
++ pxa_gpio_mode(GPIO_ICL_FFCTS_MD);
++ pxa_gpio_mode(GPIO_ICL_FFRTS_MD);
++
++ pxa_gpio_mode(GPIO42_BTRXD_MD);
++ pxa_gpio_mode(GPIO43_BTTXD_MD);
++ pxa_gpio_mode(GPIO44_BTCTS_MD);
++ pxa_gpio_mode(GPIO45_BTRTS_MD);
++
++ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
++ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
++ clr_GPIO(GPIO_EMU_MUX1);
++ pxa_gpio_mode(GPIO_EMU_MUX2|GPIO_OUT);
++ clr_GPIO(GPIO_EMU_MUX2);
++
++#if defined(CONFIG_PXA_EZX_E680)
++ pxa_gpio_mode(GPIO46_STRXD_MD);
++ pxa_gpio_mode(GPIO47_STTXD_MD);
++
++ /* setup sleep mode values */
++ PWER = 0xc000f803; // disable usb 0xdc00f803;
++ PFER = 0x0000f803;
++ PRER = 0x00001802;
++ // keypad wakeup (PKWR,PGSR3) should be in keypad.c
++ PGSR0 = 0x00000010;
++ PGSR1 = 0x02800000;
++ PGSR2 = 0x00040000;
++ PGSR3 = 0x00000000;
++ PCFR = PCFR_DC_EN | PCFR_FS | PCFR_FP | PCFR_OPDE;
++ PSLR = 0x05800f00;
++
++#elif defined(CONFIG_PXA_EZX_A780)
++
++ /* Standard UART */
++ pxa_gpio_mode(GPIO46_STRXD_MD);
++ pxa_gpio_mode(GPIO47_STTXD_MD);
++
++ /* setup sleep mode values */
++ PWER = 0xc0007803; // disable usb, GPIO15 NC
++ PFER = 0x00007803;
++ PRER = 0x00001802;
++ // keypad wakeup (PKWR,PGSR3) should be in keypad.c
++ PGSR0 = 0x00000010;
++ PGSR1 = 0x02800000;
++ PGSR2 = 0x00040000;
++ PGSR3 = 0x00000008;
++ PCFR = PCFR_DC_EN | PCFR_FS | PCFR_FP | PCFR_OPDE;
++ PSLR = 0x05800f00;
++
++#endif
++ pxa_set_ohci_info(&ezx_ohci_platform_data);
++
++ platform_add_devices(devices, ARRAY_SIZE(devices));
++
++}
++
++MACHINE_START(EZX, "Motorola Ezx Platform")
++ /* Maintainer: Harald Welte <laforge@gnumonks.org> */
++ .phys_io = 0x40000000,
++ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
++ .boot_params = 0xa0000100,
++ .map_io = pxa_map_io,
++ .init_irq = a780_init_irq,
++ .timer = &pxa_timer,
++ .init_machine = a780_init,
++MACHINE_END
+Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/include/asm-arm/arch-pxa/ezx.h 2007-05-03 17:42:02.000000000 -0300
+@@ -0,0 +1,225 @@
++/*
++ * linux/include/asm-arm/arch-pxa/ezx.h
++ *
++ * Specific macro defines for Motorola Ezx Development Platform
++ *
++ * Author: Zhuang Xiaofan
++ * Created: Nov 25, 2003
++ * Copyright: Motorola 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.
++ */
++
++/* support E680 p3 and ealier PCB */
++//#define E680_P3_AND_EARLY
++
++#define GPIO_is_high(x) (GPLR(x) & GPIO_bit(x))
++#define set_GPIO(x) (GPSR(x) = GPIO_bit(x))
++#define clr_GPIO(x) (GPCR(x) = GPIO_bit(x))
++
++/*
++ * Flags in memory for sleep use
++ */
++#define FLAG_ADDR PHYS_OFFSET
++#define RESUME_ADDR (PHYS_OFFSET + 4)
++#define BPSIG_ADDR (PHYS_OFFSET + 8)
++
++#define USER_OFF_FLAG 0x5a5a5a5a
++#define SLEEP_FLAG 0x6b6b6b6b
++#define OFF_FLAG 0x7c7c7c7c
++#define REFLASH_FLAG 0x0C1D2E3F
++#define PASS_THRU_FLAG 0x12345678
++
++#define WDI_FLAG 0xbb00dead
++#define NO_FLAG 0xaa00dead
++
++/*
++ * GPIO control pin, have to change when hardware lock down
++ */
++
++#ifdef E680_P3_AND_EARLY
++
++/* shakehand with BP's PIN */
++#define GPIO_BP_RDY 0 /* BP_RDY */
++#define GPIO_BB_WDI 13 /* BB_WDI */
++#define GPIO_BB_WDI2 3 /* BB_WDI2 */
++#define GPIO_BB_RESET 57 /* BB_RESET */
++#define GPIO_MCU_INT_SW 115 /* MCU_INT_SW */
++#define GPIO_TC_MM_EN 89 /* TC_MM_EN */
++
++/* control PCAP direct PIN */
++#define GPIO_WDI_AP 4 /* WDI_AP */
++#define GPIO_SYS_RESTART 55 /* restart PCAP power */
++#define GPIO_AP_STANDBY 28 /* make pcap enter standby mode */
++
++/* communicate with PCAP's PIN */
++#define GPIO_PCAP_SEC_INT 1 /* PCAP interrupt PIN to AP */
++#define GPIO_SPI_CLK 23 /* PCAP SPI port clock */
++#define GPIO_SPI_CE 24 /* PCAP SPI port SSPFRM */
++#define GPIO_SPI_MOSI 25 /* PCAP SPI port SSPTXD */
++#define GPIO_SPI_MISO 26 /* PCAP SPI port SSPRXD */
++
++/* blue tooth control PIN */
++#define GPIO_BT_WAKEUP 2 /* AP wake up bluetooth module */
++#define GPIO_BT_HOSTWAKE 14 /* bluetooth module wake up Ap module */
++#define GPIO_BT_RESET 56 /* AP reset bluetooth module */
++
++/* control LCD high - OFF low -- ON */
++#define GPIO_LCD_OFF 116 /* control LCD */
++
++/* FFUART PIN */
++#define GPIO_ICL_FFRXD_MD (34 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
++#define GPIO_ICL_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
++
++#elif defined(A780_P1_AND_EARLY)
++
++/* shakehand with BP's PIN */
++#define GPIO_BP_RDY 0 /* BP_RDY */
++#define GPIO_BB_WDI 13 /* BB_WDI */
++#define GPIO_BB_WDI2 3 /* BB_WDI2 */
++#define GPIO_BB_RESET 82 /* BB_RESET */
++#define GPIO_MCU_INT_SW 57 /* MCU_INT_SW */
++#define GPIO_TC_MM_EN 89 /* TC_MM_EN */
++
++/* control PCAP direct PIN */
++#define GPIO_WDI_AP 4 /* WDI_AP */
++#define GPIO_SYS_RESTART 55 /* restart PCAP power */
++#define GPIO_AP_STANDBY 28 /* make pcap enter standby mode */
++
++/* communicate with PCAP's PIN */
++#define GPIO_PCAP_SEC_INT 1 /* PCAP interrupt PIN to AP */
++#define GPIO_SPI_CLK 29 /* PCAP SPI port clock */
++#define GPIO_SPI_CE 24 /* PCAP SPI port SSPFRM */
++#define GPIO_SPI_MOSI 25 /* PCAP SPI port SSPTXD */
++#define GPIO_SPI_MISO 26 /* PCAP SPI port SSPRXD */
++
++/* blue tooth control PIN */
++#define GPIO_BT_WAKEUP 2 /* AP wake up bluetooth module */
++#define GPIO_BT_HOSTWAKE 14 /* bluetooth module wake up Ap module */
++#define GPIO_BT_RESET 56 /* AP reset bluetooth module */
++
++/* control LCD high - OFF low -- ON */
++#define GPIO_LCD_OFF 116 /* control LCD */
++
++/* FFUART PIN */
++#define GPIO_ICL_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
++#define GPIO_ICL_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
++
++#else
++
++/* shakehand with BP's PIN */
++#define GPIO_BP_RDY 0 /* BP_RDY */
++#define GPIO_BB_WDI 13 /* BB_WDI */
++#define GPIO_BB_WDI2 3 /* BB_WDI2 */
++#define GPIO_BB_RESET 82 /* BB_RESET */
++#define GPIO_MCU_INT_SW 57 /* MCU_INT_SW */
++#define GPIO_TC_MM_EN 99 /* TC_MM_EN */
++
++/* control PCAP direct PIN */
++#define GPIO_WDI_AP 4 /* WDI_AP */
++#define GPIO_SYS_RESTART 55 /* restart PCAP power */
++//#define GPIO_AP_STANDBY 28 /* make pcap enter standby mode */
++
++/* communicate with PCAP's PIN */
++#define GPIO_PCAP_SEC_INT 1 /* PCAP interrupt PIN to AP */
++#define GPIO_SPI_CLK 29 /* PCAP SPI port clock */
++#define GPIO_SPI_CE 24 /* PCAP SPI port SSPFRM */
++#define GPIO_SPI_MOSI 25 /* PCAP SPI port SSPTXD */
++#define GPIO_SPI_MISO 26 /* PCAP SPI port SSPRXD */
++
++/* blue tooth control PIN */
++#define GPIO_BT_WAKEUP 28 /* AP wake up bluetooth module */
++#define GPIO_BT_HOSTWAKE 14 /* AP wake up bluetooth module */
++#define GPIO_BT_RESET 48 /* AP reset bluetooth module */
++
++/* control LCD high - OFF low -- ON */
++#define GPIO_LCD_OFF 116 /* control LCD */
++
++/* FFUART PIN */
++#define GPIO_ICL_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
++#define GPIO_ICL_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
++
++#endif
++/*
++ * ezx platform, wake up source edge detect bit
++ */
++#define PEDR_INT_SEC 1
++
++#define GPIO_FLIP_PIN 12
++/*E680 screen lock button*/
++
++#define GPIO_LOCK_SCREEN_PIN GPIO_FLIP_PIN
++
++/* MMC interface */
++#define GPIO_MMC_DETECT 11
++#define GPIO_MMC_CLK 32
++#define GPIO_MMC_DATA0 92
++#define GPIO_MMC_WP 107
++#define GPIO_MMC_DATA1 109
++#define GPIO_MMC_DATA2 110
++#define GPIO_MMC_DATA3 111
++#define GPIO_MMC_CMD 112
++
++/* interface function */
++#define GPIO_MMC_CLK_MD (GPIO_MMC_CLK | GPIO_ALT_FN_2_OUT)
++#define GPIO_MMC_DATA0_MD (GPIO_MMC_DATA0 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++#define GPIO_MMC_DATA1_MD (GPIO_MMC_DATA1 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++#define GPIO_MMC_DATA2_MD (GPIO_MMC_DATA2 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++#define GPIO_MMC_DATA3_MD (GPIO_MMC_DATA3 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++
++#define GPIO_MMC_CMD_MD (GPIO_MMC_CMD | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++
++/* EMU GPIO 119 ---MUX2 120 --- MUX1 */
++#define GPIO_EMU_MUX1 120
++#define GPIO_EMU_MUX2 119
++#define GPIO_SNP_INT_CTL 86
++#define GPIO_SNP_INT_IN 87
++
++
++/* audio related pins */
++#define AP_13MHZ_OUTPUT_PIN 9
++
++#ifdef CONFIG_ARCH_EZX_E680
++#define GPIO_VA_SEL_BUL 79
++#define GPIO_FLT_SEL_BUL 80 /* out filter select pin */
++#define GPIO_MIDI_RESET 78 /* GPIO used by MIDI chipset */
++#define GPIO_MIDI_CS 33
++#define GPIO_MIDI_IRQ 15
++#define GPIO_MIDI_NPWE 49
++#define GPIO_MIDI_RDY 18
++#endif
++
++#ifdef CONFIG_ARCH_EZX_A780
++#define GPIO_HW_ATTENUATE_A780 96 /* hw noise attenuation be used or bypassed, for receiver or louderspeaker mode */
++#endif
++
++
++/* bp status pin */
++#define GPIO_BP_STATE 41
++
++/* define usb related pin */
++#define GPIO34_TXENB 34
++#define GPIO35_XRXD 35
++#define GPIO36_VMOUT 36
++#define GPIO39_VPOUT 39
++#define GPIO40_VPIN 40
++#define GPIO53_VMIN 53
++
++/* USB client 6 pin defination */
++#define GPIO34_TXENB_MD (GPIO34_TXENB | GPIO_ALT_FN_1_OUT)
++#define GPIO35_XRXD_MD (GPIO35_XRXD | GPIO_ALT_FN_2_IN )
++#define GPIO36_VMOUT_MD (GPIO36_VMOUT | GPIO_ALT_FN_1_OUT)
++#define GPIO39_VPOUT_MD (GPIO39_VPOUT | GPIO_ALT_FN_1_OUT)
++#define GPIO40_VPIN_MD (GPIO40_VPIN | GPIO_ALT_FN_3_IN )
++#define GPIO53_VMIN_MD (GPIO53_VMIN | GPIO_ALT_FN_2_IN )
++
++#define GPIO53_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
++
+Index: linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h
+===================================================================
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-05-04 04:17:32.000000000 -0300
+@@ -849,6 +849,8 @@
+ #define UP2OCR_HXOE (1 << 17) /* Host Port 2 Transceiver Output Enable */
+ #define UP2OCR_SEOS (1 << 24) /* Single-Ended Output Select */
+
++#define UP3OCR __REG(0x40600024) /* USB Port 3 Output Control register */
++
+ #define UDCCSN(x) __REG2(0x40600100, (x) << 2)
+ #define UDCCSR0 __REG(0x40600100) /* UDC Control/Status register - Endpoint 0 */
+ #define UDCCSR0_SA (1 << 7) /* Setup Active */
+@@ -1252,6 +1254,7 @@
+ #define GPIO33_nCS_5 33 /* chip select 5 */
+ #define GPIO34_FFRXD 34 /* FFUART receive */
+ #define GPIO34_MMCCS0 34 /* MMC Chip Select 0 */
++#define GPIO34_USB_P2_2 34 /* USB Port2 Pin 2 */
+ #define GPIO35_FFCTS 35 /* FFUART Clear to send */
+ #define GPIO36_FFDCD 36 /* FFUART Data carrier detect */
+ #define GPIO37_FFDSR 37 /* FFUART data set ready */
+@@ -1365,6 +1368,7 @@
+ #define GPIO18_RDY_MD (18 | GPIO_ALT_FN_1_IN)
+ #define GPIO19_DREQ1_MD (19 | GPIO_ALT_FN_1_IN)
+ #define GPIO20_DREQ0_MD (20 | GPIO_ALT_FN_1_IN)
++#define GPIO22_SCLK2_MD (22 | GPIO_ALT_FN_3_IN)
+ #define GPIO23_SCLK_MD (23 | GPIO_ALT_FN_2_OUT)
+ #define GPIO24_SFRM_MD (24 | GPIO_ALT_FN_2_OUT)
+ #define GPIO25_STXD_MD (25 | GPIO_ALT_FN_2_OUT)
+@@ -1375,23 +1379,33 @@
+ #define GPIO28_BITCLK_OUT_I2S_MD (28 | GPIO_ALT_FN_1_OUT)
+ #define GPIO29_SDATA_IN_AC97_MD (29 | GPIO_ALT_FN_1_IN)
+ #define GPIO29_SDATA_IN_I2S_MD (29 | GPIO_ALT_FN_2_IN)
++#define GPIO29_SCLK_MD (29 | GPIO_ALT_FN_3_IN)
+ #define GPIO30_SDATA_OUT_AC97_MD (30 | GPIO_ALT_FN_2_OUT)
+ #define GPIO30_SDATA_OUT_I2S_MD (30 | GPIO_ALT_FN_1_OUT)
++#define GPIO30_USB_P3_2 (30 | GPIO_ALT_FN_3_OUT)
+ #define GPIO31_SYNC_I2S_MD (31 | GPIO_ALT_FN_1_OUT)
+ #define GPIO31_SYNC_AC97_MD (31 | GPIO_ALT_FN_2_OUT)
++#define GPIO31_USB_P3_6 (31 | GPIO_ALT_FN_3_OUT)
+ #define GPIO32_SDATA_IN1_AC97_MD (32 | GPIO_ALT_FN_1_IN)
+ #define GPIO32_SYSCLK_I2S_MD (32 | GPIO_ALT_FN_1_OUT)
+ #define GPIO32_MMCCLK_MD ( 32 | GPIO_ALT_FN_2_OUT)
+ #define GPIO33_nCS_5_MD (33 | GPIO_ALT_FN_2_OUT)
+ #define GPIO34_FFRXD_MD (34 | GPIO_ALT_FN_1_IN)
+ #define GPIO34_MMCCS0_MD (34 | GPIO_ALT_FN_2_OUT)
++#define GPIO34_USB_P2_2_MD (34 | GPIO_ALT_FN_1_OUT)
+ #define GPIO35_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
++#define GPIO35_USB_P2_1_MD (35 | GPIO_ALT_FN_2_IN)
+ #define GPIO36_FFDCD_MD (36 | GPIO_ALT_FN_1_IN)
++#define GPIO36_USB_P2_4_MD (36 | GPIO_ALT_FN_1_OUT)
+ #define GPIO37_FFDSR_MD (37 | GPIO_ALT_FN_1_IN)
++#define GPIO37_SFRM2_MD (37 | GPIO_ALT_FN_2_IN)
+ #define GPIO38_FFRI_MD (38 | GPIO_ALT_FN_1_IN)
++#define GPIO38_STXD2_MD (38 | GPIO_ALT_FN_2_OUT)
+ #define GPIO39_MMCCS1_MD (39 | GPIO_ALT_FN_1_OUT)
+ #define GPIO39_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
++#define GPIO39_USB_P2_6_MD (39 | GPIO_ALT_FN_1_OUT)
+ #define GPIO40_FFDTR_MD (40 | GPIO_ALT_FN_2_OUT)
++#define GPIO40_USB_P2_5_MD (40 | GPIO_ALT_FN_3_IN)
+ #define GPIO41_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
+ #define GPIO42_BTRXD_MD (42 | GPIO_ALT_FN_1_IN)
+ #define GPIO42_HWRXD_MD (42 | GPIO_ALT_FN_3_IN)
+@@ -1416,13 +1430,17 @@
+ #define GPIO51_HWRTS_MD (51 | GPIO_ALT_FN_1_OUT)
+ #define GPIO51_nPIOW_MD (51 | GPIO_ALT_FN_2_OUT)
+ #define GPIO52_nPCE_1_MD (52 | GPIO_ALT_FN_2_OUT)
++#define GPIO52_SCLK3_MD (52 | GPIO_ALT_FN_2_OUT)
+ #define GPIO53_nPCE_2_MD (53 | GPIO_ALT_FN_2_OUT)
+ #define GPIO53_MMCCLK_MD (53 | GPIO_ALT_FN_1_OUT)
++#define GPIO53_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
++#define GPIO53_USB_P2_3_MD (53 | GPIO_ALT_FN_2_IN)
+ #define GPIO54_MMCCLK_MD (54 | GPIO_ALT_FN_1_OUT)
+ #define GPIO54_nPCE_2_MD (54 | GPIO_ALT_FN_2_OUT)
+ #define GPIO54_pSKTSEL_MD (54 | GPIO_ALT_FN_2_OUT)
+ #define GPIO55_nPREG_MD (55 | GPIO_ALT_FN_2_OUT)
+ #define GPIO56_nPWAIT_MD (56 | GPIO_ALT_FN_1_IN)
++#define GPIO56_USB_P3_4 (56 | GPIO_ALT_FN_1_OUT)
+ #define GPIO57_nIOIS16_MD (57 | GPIO_ALT_FN_1_IN)
+ #define GPIO58_LDD_0_MD (58 | GPIO_ALT_FN_2_OUT)
+ #define GPIO59_LDD_1_MD (59 | GPIO_ALT_FN_2_OUT)
+@@ -1458,13 +1476,19 @@
+ #define GPIO80_nCS_4_MD (80 | GPIO_ALT_FN_2_OUT)
+ #define GPIO81_NSSP_CLK_OUT (81 | GPIO_ALT_FN_1_OUT)
+ #define GPIO81_NSSP_CLK_IN (81 | GPIO_ALT_FN_1_IN)
++#define GPIO81_STXD3_MD (81 | GPIO_ALT_FN_1_OUT)
+ #define GPIO82_NSSP_FRM_OUT (82 | GPIO_ALT_FN_1_OUT)
+ #define GPIO82_NSSP_FRM_IN (82 | GPIO_ALT_FN_1_IN)
+ #define GPIO83_NSSP_TX (83 | GPIO_ALT_FN_1_OUT)
+ #define GPIO83_NSSP_RX (83 | GPIO_ALT_FN_2_IN)
++#define GPIO83_SFRM3_MD (83 | GPIO_ALT_FN_1_IN)
+ #define GPIO84_NSSP_TX (84 | GPIO_ALT_FN_1_OUT)
+ #define GPIO84_NSSP_RX (84 | GPIO_ALT_FN_2_IN)
+ #define GPIO85_nPCE_1_MD (85 | GPIO_ALT_FN_1_OUT)
++#define GPIO88_SRXD2_MD (88 | GPIO_ALT_FN_2_IN)
++#define GPIO89_SRXD3_MD (89 | GPIO_ALT_FN_1_IN)
++#define GPIO90_USB_P3_5 (90 | GPIO_ALT_FN_2_IN)
++#define GPIO91_USB_P3_1 (91 | GPIO_ALT_FN_2_IN)
+ #define GPIO92_MMCDAT0_MD (92 | GPIO_ALT_FN_1_OUT)
+ #define GPIO102_nPCE_1_MD (102 | GPIO_ALT_FN_1_OUT)
+ #define GPIO104_pSKTSEL_MD (104 | GPIO_ALT_FN_1_OUT)
+@@ -1476,6 +1500,7 @@
+ #define GPIO112_MMCCMD_MD (112 | GPIO_ALT_FN_1_OUT)
+ #define GPIO113_I2S_SYSCLK_MD (113 | GPIO_ALT_FN_1_OUT)
+ #define GPIO113_AC97_RESET_N_MD (113 | GPIO_ALT_FN_2_OUT)
++#define GPIO113_USB_P3_3 (113 | GPIO_ALT_FN_3_IN)
+ #define GPIO117_I2CSCL_MD (117 | GPIO_ALT_FN_1_IN)
+ #define GPIO118_I2CSDA_MD (118 | GPIO_ALT_FN_1_IN)
+
+@@ -1491,6 +1516,7 @@
+ #define PFER __REG(0x40F00014) /* Power Manager GPIO Falling-Edge Detect Enable Register */
+ #define PEDR __REG(0x40F00018) /* Power Manager GPIO Edge Detect Status Register */
+ #define PCFR __REG(0x40F0001C) /* Power Manager General Configuration Register */
++#define PGSR(x) (__REG(0x40F00020 + ((unsigned long)(x)/32*4)))
+ #define PGSR0 __REG(0x40F00020) /* Power Manager GPIO Sleep State Register for GP[31-0] */
+ #define PGSR1 __REG(0x40F00024) /* Power Manager GPIO Sleep State Register for GP[63-32] */
+ #define PGSR2 __REG(0x40F00028) /* Power Manager GPIO Sleep State Register for GP[84-64] */
+Index: linux-2.6.21/arch/arm/boot/compressed/head.S
+===================================================================
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head.S 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-05-03 17:42:02.000000000 -0300
+@@ -117,6 +117,9 @@
+ mov r0, r0
+ .endr
+
++ mov r1, #0x300 @ mach_id 0x363 is official EZX
++ orr r1, r1, #0x63 @ bootloader JUMP doesn't set r1
++
+ b 1f
+ .word 0x016f2818 @ Magic numbers to help the loader
+ .word start @ absolute load/run zImage address
+Index: linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h
+===================================================================
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/uncompress.h 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-05-03 17:42:02.000000000 -0300
+@@ -14,14 +14,14 @@
+ #define STUART ((volatile unsigned long *)0x40700000)
+ #define HWUART ((volatile unsigned long *)0x41600000)
+
+-#define UART FFUART
++#define UART STUART
+
+
+ static inline void putc(char c)
+ {
+- while (!(UART[5] & 0x20))
++/* while (!(UART[5] & 0x40))
+ barrier();
+- UART[0] = c;
++ UART[0] = c;*/
+ }
+
+ /*
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c 2007-05-03 17:42:02.000000000 -0300
+@@ -0,0 +1,126 @@
++/*
++ * SSP control code for Motorola EZX phones
++ *
++ * Copyright (c) 2007 Daniel Ribeiro <drwyrm@gmail.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.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/sched.h>
++#include <linux/slab.h>
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++#include <asm/hardware.h>
++#include <asm/mach-types.h>
++
++#include <asm/arch/ssp.h>
++#include <asm/arch/pxa-regs.h>
++
++#include "ezx.h"
++
++static DEFINE_SPINLOCK(ezx_ssp_lock);
++static struct ssp_dev ezx_ssp_dev;
++static struct ssp_state ezx_ssp_state;
++static struct ezxssp_machinfo *ssp_machinfo;
++
++/* PCAP */
++unsigned long ezx_ssp_pcap_putget(ulong data)
++{
++ unsigned long flag;
++ u32 ret = 0;
++
++ spin_lock_irqsave(&ezx_ssp_lock, flag);
++ if (ssp_machinfo->cs_pcap >= 0)
++ GPCR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
++
++ ssp_write_word(&ezx_ssp_dev,data);
++ ssp_read_word(&ezx_ssp_dev, &ret);
++
++ if (ssp_machinfo->cs_pcap >= 0)
++ GPSR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
++ spin_unlock_irqrestore(&ezx_ssp_lock, flag);
++
++ return ret;
++}
++EXPORT_SYMBOL(ezx_ssp_pcap_putget);
++
++void __init ezx_ssp_set_machinfo(struct ezxssp_machinfo *machinfo)
++{
++ ssp_machinfo = machinfo;
++}
++
++static int __init ezx_ssp_probe(struct platform_device *dev)
++{
++ int ret;
++ /* PCAP init */
++ pxa_gpio_mode(29|GPIO_ALT_FN_3_OUT);
++ pxa_gpio_mode(GPIO24_SFRM_MD);
++ pxa_gpio_mode(GPIO25_STXD_MD);
++ pxa_gpio_mode(GPIO26_SRXD_MD);
++
++ /* Chip Select - Disable All */
++ if (ssp_machinfo->cs_pcap >= 0)
++ pxa_gpio_mode(ssp_machinfo->cs_pcap | GPIO_OUT | GPIO_DFLT_HIGH);
++
++ ret = ssp_init(&ezx_ssp_dev, ssp_machinfo->port, 0);
++
++ if (ret)
++ printk(KERN_ERR "Unable to register SSP handler!\n");
++ else {
++ ssp_disable(&ezx_ssp_dev);
++ ssp_config(&ezx_ssp_dev,
++ (SSCR0_Motorola | SSCR0_DataSize(16) | SSCR0_EDSS),
++ (SSCR1_TxTresh(1) | SSCR1_RxTresh(1)),
++ 0, SSCR0_SerClkDiv(ssp_machinfo->clk_pcap));
++ ssp_enable(&ezx_ssp_dev);
++ }
++
++ return ret;
++}
++
++static int ezx_ssp_remove(struct platform_device *dev)
++{
++ ssp_exit(&ezx_ssp_dev);
++ return 0;
++}
++
++static int ezx_ssp_suspend(struct platform_device *dev, pm_message_t state)
++{
++ ssp_flush(&ezx_ssp_dev);
++ ssp_save_state(&ezx_ssp_dev,&ezx_ssp_state);
++
++ return 0;
++}
++
++static int ezx_ssp_resume(struct platform_device *dev)
++{
++ if (ssp_machinfo->cs_pcap >= 0)
++ GPSR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
++ ssp_restore_state(&ezx_ssp_dev,&ezx_ssp_state);
++ ssp_enable(&ezx_ssp_dev);
++
++ return 0;
++}
++
++static struct platform_driver ezxssp_driver = {
++ .probe = ezx_ssp_probe,
++ .remove = ezx_ssp_remove,
++ .suspend = ezx_ssp_suspend,
++ .resume = ezx_ssp_resume,
++ .driver = {
++ .name = "ezx-ssp",
++ },
++};
++
++int __init ezx_ssp_init(void)
++{
++ return platform_driver_register(&ezxssp_driver);
++}
++
++arch_initcall(ezx_ssp_init);
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.h 2007-05-03 17:42:02.000000000 -0300
+@@ -0,0 +1,9 @@
++#include <asm/arch/ezx.h>
++
++/* SSP */
++struct ezxssp_machinfo {
++ int port;
++ int cs_pcap;
++ int clk_pcap;
++};
++
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx_lcd.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx_lcd.c 2007-05-03 17:42:02.000000000 -0300
+@@ -0,0 +1,113 @@
++/*
++ * linux/arch/arm/mach-ezx/a780.c
++ *
++ * Support for the Motorola Ezx A780 Development Platform.
++ *
++ * Author: Zhuang Xiaofan
++ * Created: Nov 25, 2003
++ * Copyright: Motorola 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/fb.h>
++#include <linux/delay.h>
++#include <asm/arch/pxafb.h>
++#include <asm/arch/pxa-regs.h>
++
++/*
++ * EZX PXA Framebuffer
++ */
++
++static void pxafb_lcd_power(int on, struct fb_var_screeninfo *var)
++{
++ if (on) {
++// mdelay(1);
++ GPSR3 = 0x00100000;
++ mdelay(10);
++ GPCR3 = 0x00100000;
++ GPDR3 |= 0x00100000;
++ } else {
++ GPSR3 = 0x00100000;
++ PGSR3 |= 0x00100000;
++ mdelay(41);
++ LCCR0 &= ~LCCR0_LDM; /* disable lcd disable done interrupt */
++ LCCR0 |= LCCR0_DIS; /* normal disable lcd */
++ mdelay(18);
++ }
++}
++
++static void ezx_backlight_power(int on)
++{
++ if (on) {
++ pxa_gpio_mode(GPIO16_PWM0_MD);
++ pxa_set_cken(CKEN0_PWM0, 1);
++ PWM_CTRL0 = 0;
++ PWM_PWDUTY0 = 0x3ff;
++ PWM_PERVAL0 = 0x3ff;
++ } else {
++ PWM_CTRL0 = 0;
++ PWM_PWDUTY0 = 0x0;
++ PWM_PERVAL0 = 0x3FF;
++ pxa_set_cken(CKEN0_PWM0, 0);
++ }
++}
++
++#ifdef CONFIG_PXA_E2
++static struct pxafb_mode_info mode_ezx = {
++ .pixclock = 192308,
++ .xres = 240,
++ .yres = 320,
++ .bpp = 8,
++ .hsync_len = 10,
++ .left_margin = 20,
++ .right_margin = 10,
++ .vsync_len = 2,
++ .upper_margin = 3,
++ .lower_margin = 2,
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++};
++
++static struct pxafb_mach_info ezx_fb_info = {
++ .modes = &mode_ezx,
++ .num_modes = 1,
++ .lccr0 = 0x022008B8,
++ .lccr3 = 0xC130FF13,
++ .pxafb_backlight_power = ezx_backlight_power,
++ .pxafb_lcd_power = &pxafb_lcd_power,
++};
++
++#else
++static struct pxafb_mode_info mode_ezx = {
++ .pixclock = 150000,
++ .xres = 240,
++ .yres = 320,
++ .bpp = 16,
++ .hsync_len = 10,
++ .left_margin = 20,
++ .right_margin = 10,
++ .vsync_len = 2,
++ .upper_margin = 3,
++ .lower_margin = 2,
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++};
++
++static struct pxafb_mach_info ezx_fb_info = {
++ .modes = &mode_ezx,
++ .num_modes = 1,
++ .lccr0 = 0x002008F8,
++ .lccr3 = 0x0430FF09,
++ .pxafb_backlight_power = ezx_backlight_power,
++ .pxafb_lcd_power = &pxafb_lcd_power,
++};
++#endif
++
++int __init __ezx_lcd_init (void)
++{
++ set_pxa_fb_info(&ezx_fb_info);
++ return 0;
++}
++
++arch_initcall(__ezx_lcd_init);
+Index: linux-2.6.21/arch/arm/mm/init.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mm/init.c 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/arch/arm/mm/init.c 2007-05-04 03:48:30.000000000 -0300
+@@ -241,6 +241,10 @@
+ */
+ reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT,
+ boot_pages << PAGE_SHIFT);
++#ifdef CONFIG_PXA_EZX
++ /* reserve the first page memory for exiting sleep and user off */
++ reserve_bootmem_node(pgdat, PHYS_OFFSET, PAGE_SIZE);
++#endif
+
+ #ifdef CONFIG_BLK_DEV_INITRD
+ /*
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-emu.patch b/packages/linux/linux-ezx-2.6.21/ezx-emu.patch
new file mode 100644
index 0000000000..91d99ee17b
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/ezx-emu.patch
@@ -0,0 +1,315 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c 2007-05-02 23:30:15.000000000 -0300
+@@ -0,0 +1,215 @@
++/*
++ * EMU Driver for Motorola EZX phones
++ *
++ * Copyright (c) 2007 Daniel Ribeiro <drwyrm@gmail.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.
++ */
++
++#include <linux/kernel.h>
++#include <linux/interrupt.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx.h>
++#include <asm/arch/ezx-pcap.h>
++#include <asm/arch/udc.h>
++
++static struct pxa2xx_udc_mach_info ezx_udc_info;
++extern int ezx_pcap_bit_set(u_int32_t, u_int8_t);
++extern int ezx_pcap_read_bit(u_int32_t);
++
++#if defined CONFIG_PXA_EZX_EMU_USB
++#define emu_switch_to_default() emu_switch_to_usb()
++#elif defined CONFIG_PXA_EZX_EMU_UART
++#define emu_switch_to_default() emu_switch_to_uart()
++#else
++#define emu_switch_to_default() emu_switch_to_nothing()
++#endif
++
++void emu_switch_to_usb(void)
++{
++ pxa_gpio_mode(GPIO34_USB_P2_2_MD);
++ pxa_gpio_mode(GPIO35_USB_P2_1_MD);
++ pxa_gpio_mode(GPIO36_USB_P2_4_MD);
++ pxa_gpio_mode(GPIO39_USB_P2_6_MD);
++ pxa_gpio_mode(GPIO40_USB_P2_5_MD);
++ pxa_gpio_mode(GPIO53_USB_P2_3_MD);
++ UP2OCR = 0x02000000;
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_FSENB, 0);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN, 1);
++ clr_GPIO(GPIO_EMU_MUX1);
++ clr_GPIO(GPIO_EMU_MUX2);
++}
++
++void emu_switch_to_uart(void)
++{
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN,0);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 0);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232_DIR, 1);
++ set_GPIO(GPIO39_FFTXD);
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
++ set_GPIO(GPIO34_TXENB);
++ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
++ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
++ pxa_gpio_mode(GPIO39_FFTXD_MD);
++ pxa_gpio_mode(GPIO53_FFRXD_MD);
++ CKEN |= CKEN6_FFUART;
++ clr_GPIO(GPIO_EMU_MUX1);
++ clr_GPIO(GPIO_EMU_MUX2);
++
++}
++
++void emu_switch_to_audio(int stereo)
++{
++ clr_GPIO(GPIO39_VPOUT);
++ if (stereo) {
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_IN);
++ clr_GPIO(GPIO39_VPOUT);
++ } else {
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
++ set_GPIO(GPIO34_TXENB);
++ }
++
++ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
++ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO39_VPOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
++ pxa_gpio_mode(GPIO53_VMIN | GPIO_IN);
++ set_GPIO(GPIO_EMU_MUX1);
++ if (stereo)
++ set_GPIO(GPIO_EMU_MUX2);
++ else
++ clr_GPIO(GPIO_EMU_MUX2);
++}
++
++void emu_switch_to_nothing(void)
++{
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN, 0);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 1);
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
++ set_GPIO(GPIO34_TXENB);
++ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
++ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO39_VPOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
++ pxa_gpio_mode(GPIO53_VMIN | GPIO_IN);
++}
++
++
++static irqreturn_t emu_irq(int irq, void *data)
++{
++ switch (irq) {
++ case EZX_IRQ_USB4V:
++ if(ezx_pcap_read_bit(SSP_PCAP_ADJ_BIT_PSTAT_USBDET_4V))
++ emu_switch_to_default();
++ break;
++ case EZX_IRQ_USB1V:
++ if(!ezx_pcap_read_bit(SSP_PCAP_ADJ_BIT_PSTAT_USBDET_1V))
++ emu_switch_to_nothing();
++ break;
++ }
++
++ return IRQ_HANDLED;
++}
++
++static int __init ezx_emu_probe(struct platform_device *dev)
++{
++ pxa_gpio_mode(GPIO_SNP_INT_IN | GPIO_IN);
++ pxa_gpio_mode(GPIO_EMU_MUX1 | GPIO_OUT);
++ pxa_gpio_mode(GPIO_EMU_MUX2 | GPIO_OUT);
++
++ request_irq(EZX_IRQ_USB4V, &emu_irq, SA_INTERRUPT, "usb 4v", NULL);
++ request_irq(EZX_IRQ_USB1V, &emu_irq, SA_INTERRUPT, "usb 1v", NULL);
++
++ pxa_set_udc_info(&ezx_udc_info);
++
++ if(ezx_pcap_read_bit(SSP_PCAP_ADJ_BIT_PSTAT_USBDET_4V))
++ emu_switch_to_default();
++ else
++ emu_switch_to_nothing();
++
++ return 0;
++}
++
++static int ezx_emu_remove(struct platform_device *dev)
++{
++ free_irq(EZX_IRQ_USB4V, NULL);
++ free_irq(EZX_IRQ_USB1V, NULL);
++
++ return 0;
++}
++
++static int ezx_emu_suspend(struct platform_device *dev, pm_message_t state)
++{
++ emu_switch_to_nothing();
++ return 0;
++}
++
++static int ezx_emu_resume(struct platform_device *dev)
++{
++ emu_switch_to_default();
++ return 0;
++}
++
++/* USB Device Controller */
++static int udc_connected_status;
++static void ezx_udc_command(int cmd)
++{
++ switch (cmd) {
++ case PXA2XX_UDC_CMD_DISCONNECT:
++ printk(KERN_NOTICE "USB cmd disconnect\n");
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU,0);
++ udc_connected_status = 0;
++ break;
++ case PXA2XX_UDC_CMD_CONNECT:
++ printk(KERN_NOTICE "USB cmd connect\n");
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU,1);
++ udc_connected_status = 1;
++ break;
++ }
++}
++
++static int ezx_udc_is_connected(void)
++{
++ return udc_connected_status;
++}
++
++static struct pxa2xx_udc_mach_info ezx_udc_info __initdata = {
++ .udc_is_connected = ezx_udc_is_connected,
++ .udc_command = ezx_udc_command,
++};
++
++static struct platform_driver ezxemu_driver = {
++ .probe = ezx_emu_probe,
++ .remove = ezx_emu_remove,
++ .suspend = ezx_emu_suspend,
++ .resume = ezx_emu_resume,
++ .driver = {
++ .name = "ezx-emu",
++ .owner = THIS_MODULE,
++ },
++};
++
++int __init ezx_emu_init(void)
++{
++ return platform_driver_register(&ezxemu_driver);
++}
++
++void ezx_emu_fini(void)
++{
++ return platform_driver_unregister(&ezxemu_driver);
++}
++
++module_init(ezx_emu_init);
++module_exit(ezx_emu_fini);
++
++MODULE_DESCRIPTION("Motorola Enchanced Mini Usb driver");
++MODULE_AUTHOR("Daniel Ribeiro <drwyrm@gmail.com>");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-02 21:31:22.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-02 23:26:53.000000000 -0300
+@@ -94,6 +94,27 @@
+
+ endchoice
+
++config PXA_EZX_EMU
++ bool "Motorola Enchanced Mini Usb"
++
++if PXA_EZX_EMU
++
++choice
++ prompt "Select default EMU mode"
++
++config PXA_EZX_EMU_USB
++ bool "USB"
++
++config PXA_EZX_EMU_UART
++ bool "UART"
++
++config PXA_EZX_EMU_NOTHING
++ bool "nothing"
++
++endchoice
++
++endif
++
+ endif
+
+ endmenu
+Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-05-02 23:26:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-05-03 17:41:40.000000000 -0300
+@@ -19,6 +19,7 @@
+ obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
+ obj-$(CONFIG_MACH_TOSA) += tosa.o
+ obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o
++obj-$(CONFIG_PXA_EZX_EMU) += ezx-emu.o
+
+ # Support for blinky lights
+ led-y := leds.o
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-02 23:26:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-03 17:25:08.000000000 -0300
+@@ -35,6 +35,7 @@
+ #include <asm/arch/ohci.h>
+ #include <asm/arch/pxa-regs.h>
+
++
+ #include "ezx.h"
+ #include "generic.h"
+ #include <linux/tty.h>
+@@ -91,6 +92,30 @@
+ .resource = ezxpcap_resources,
+ };
+
++/* EMU */
++static struct resource ezxemu_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_USB4V,
++ .end = EZX_IRQ_USB4V,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_USB1V,
++ .end = EZX_IRQ_USB1V,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device ezxemu_device = {
++ .name = "ezx-emu",
++ .id = -1,
++ .dev = {
++ .parent = &ezxpcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(ezxemu_resources),
++ .resource = ezxemu_resources,
++};
++
+ /* OHCI Controller */
+
+ static int ezx_ohci_init(struct device *dev)
+@@ -316,6 +341,7 @@
+ &ezxssp_device,
+ &ezxpcap_device,
+ &ezxbp_device,
++ &ezxemu_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-kbd.patch b/packages/linux/linux-ezx-2.6.21/ezx-kbd.patch
new file mode 100644
index 0000000000..7c020a2d96
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/ezx-kbd.patch
@@ -0,0 +1,139 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-kbd.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-kbd.c 2007-04-30 20:33:19.000000000 -0300
+@@ -0,0 +1,109 @@
++#include <linux/input.h>
++#include <asm/arch/kbd.h>
++#include <asm/arch/pxa-regs.h>
++
++extern void __init pxa_set_kbd_info(struct pxakbd_platform_data *);
++
++#if defined(CONFIG_PXA_EZX_E680)
++static unsigned char ezx_keycode[] = {
++ /* row 0 */
++ KEY_UP, KEY_RIGHT, KEY_RESERVED, KEY_PHONE,
++ /* row 1 */
++ KEY_DOWN, KEY_LEFT, KEY_VOLUMEUP, KEY_VOLUMEDOWN,
++ /* row 2 */
++ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_KPENTER,
++};
++
++static unsigned char ezx_direct_keycode[] = {
++ KEY_CAMERA,
++ KEYPAD_RESERVED,
++ KEYPAD_RESERVED,
++ KEYPAD_HOME,
++ KEY_POWER,
++ KEYPAD_MENU,
++};
++#elif defined(CONFIG_PXA_EZX_A780)
++static unsigned char ezx_keycode[] = {
++ /* row 0 */
++ KEY_KPENTER, KEY_MENU, KEY_CANCEL, KEY_PAGEUP, KEY_UP,
++ /* row 1 */
++ KEY_KP1, KEY_KP2, KEY_KP3, KEY_ENTER, KEY_KPENTER, /*center joypad */
++ /* row 2 */
++ KEY_KP4, KEY_KP5, KEY_KP6, KEY_PAGEDOWN, KEY_PHONE,
++ /* row 3 */
++ KEY_KP7, KEY_KP8, KEY_KP9, KEY_PHONE, KEY_LEFT,
++ /* row 4 */
++ KEY_KPASTERISK, KEY_KP0, KEY_KPDOT, KEY_PAGEDOWN, KEY_DOWN,
++};
++static unsigned char ezx_direct_keycode[] = {
++ KEY_CAMERA,
++};
++#else
++#error "no EZX subarchitecture defined"
++#endif
++
++static int ezx_kbd_init(void)
++{
++#if defined(CONFIG_PXA_EZX_E680)
++ pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN); /* KP_DKIN<0>, VR Key */
++ pxa_gpio_mode(96 | GPIO_ALT_FN_1_IN); /* KP_DKIN<3>, GAME_A */
++ pxa_gpio_mode(97 | GPIO_ALT_FN_1_IN); /* KP_DKIN<4>, power key */
++ pxa_gpio_mode(98 | GPIO_ALT_FN_1_IN); /* KP_DKIN<5>, GAME_B */
++ pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN); /* KP_MKIN<0> */
++ pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN); /* KP_MKIN<1> */
++ pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN); /* KP_MKIN<2> */
++ pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<0> */
++ pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<1> */
++ pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<2> */
++ pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<3> */
++ pxa_gpio_mode(GPIO_TC_MM_EN);
++ GPDR(GPIO_TC_MM_EN) |= GPIO_bit(GPIO_TC_MM_EN);
++ GPSR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN);
++ PGSR3 |= GPIO_bit(GPIO_TC_MM_EN);
++#elif defined(CONFIG_PXA_EZX_A780)
++ pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN); /* KP_DKIN<0>, voice_rec */
++ pxa_gpio_mode(97 | GPIO_ALT_FN_3_IN); /* KP_MKIN<3> */
++ pxa_gpio_mode(98 | GPIO_ALT_FN_3_IN); /* KP_MKIN<4> */
++ pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN); /* KP_MKIN<0> */
++ pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN); /* KP_MKIN<1> */
++ pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN); /* KP_MKIN<2> */
++ pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<0> */
++ pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<1> */
++ pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<2> */
++ pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<3> */
++ pxa_gpio_mode(107 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<4> */
++#endif
++ return 0;
++}
++
++static struct pxakbd_platform_data ezx_kbd_platform_data = {
++ .init = &ezx_kbd_init,
++ .scan_interval = HZ/40,
++ .matrix = {
++ .keycode = ezx_keycode,
++#if defined(CONFIG_PXA_EZX_E680)
++ .cols = 4,
++ .rows = 3,
++#elif defined(CONFIG_PXA_EZX_A780)
++ .cols = 5,
++ .rows = 5,
++#endif
++ },
++ .direct = {
++ .keycode = ezx_direct_keycode,
++#if defined(CONFIG_PXA_EZX_E680)
++ .num = 6,
++#elif defined(CONFIG_PXA_EZX_A780)
++ .num = 1,
++#endif
++ },
++};
++
++
++int __init __ezx_kbd_init (void)
++{
++ pxa_set_kbd_info(&ezx_kbd_platform_data);
++ return 0;
++}
++
++arch_initcall(__ezx_kbd_init);
+Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-04-30 20:09:21.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-04-30 20:09:34.000000000 -0300
+@@ -18,7 +18,7 @@
+ obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
+ obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
+ obj-$(CONFIG_MACH_TOSA) += tosa.o
+-obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o
++obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o ezx-kbd.o
+ obj-$(CONFIG_PXA_EZX_EMU) += ezx-emu.o
+
+ # Support for blinky lights
+Index: linux-2.6.21/drivers/input/keyboard/pxakbd.c
+===================================================================
+--- linux-2.6.21.orig/drivers/input/keyboard/pxakbd.c 2007-04-30 20:47:29.000000000 -0300
++++ linux-2.6.21/drivers/input/keyboard/pxakbd.c 2007-04-30 20:49:32.000000000 -0300
+@@ -213,6 +213,7 @@
+ if (!input_dev)
+ goto out_pxa;
+
++ spin_lock_init(&pxakbd->lock);
+ pxakbd->irq = platform_get_irq(pdev, 0);
+ r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!r || pxakbd->irq == NO_IRQ) {
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-mci.patch b/packages/linux/linux-ezx-2.6.21/ezx-mci.patch
new file mode 100644
index 0000000000..d16693e3e4
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/ezx-mci.patch
@@ -0,0 +1,177 @@
+Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-mci.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.7/arch/arm/mach-pxa/ezx-mci.c 2007-04-20 01:10:13.000000000 -0300
+@@ -0,0 +1,159 @@
++/*
++ * linux/arch/arm/mach-ezx/a780.c
++ *
++ * Support for the Motorola Ezx A780 Development Platform.
++ *
++ * Author: Zhuang Xiaofan
++ * Created: Nov 25, 2003
++ * Copyright: Motorola 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/mmc/host.h>
++#include <linux/irq.h>
++#include <asm/irq.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx-pcap.h>
++#include <asm/arch/mmc.h>
++#include <asm/arch/hardware.h>
++
++extern int ezx_pcap_mmcsd_power(int);
++extern void ezx_pcap_mmcsd_voltage(u_int32_t);
++
++static struct pxamci_platform_data ezx_mci_platform_data;
++
++static int ezx_mci_init(struct device *dev,
++ irqreturn_t (*ezx_detect_int)(int, void *),
++ void *data)
++{
++ int err;
++ printk("%s entered\n", __FUNCTION__);
++
++ /* Setup GPIO for PXA27x MMC/SD controller */
++ pxa_gpio_mode(GPIO32_MMCCLK_MD);
++ pxa_gpio_mode(GPIO112_MMCCMD_MD);
++ pxa_gpio_mode(GPIO92_MMCDAT0_MD);
++ pxa_gpio_mode(GPIO109_MMCDAT1_MD);
++ pxa_gpio_mode(GPIO110_MMCDAT2_MD);
++ pxa_gpio_mode(GPIO111_MMCDAT3_MD);
++
++ ezx_pcap_mmcsd_power(1);
++
++ ezx_mci_platform_data.detect_delay = msecs_to_jiffies(250);
++
++ err = request_irq(0x49, ezx_detect_int, SA_INTERRUPT,
++ "MMC card detect", data);
++ if (err) {
++ printk(KERN_ERR "ezx_mci_detect: MMC/SD: can't request "
++ "MMC card detect IRQ\n");
++ return -1;
++ }
++
++ set_irq_type(0x0b, IRQT_BOTHEDGE);
++
++ return 0;
++}
++
++static int ezx_mci_get_ro(struct device *dev)
++{
++ printk("%s entered\n", __FUNCTION__);
++#if defined(CONFIG_PXA_EZX_E680)
++ /* this is only e680, i guess */
++ // return GPIO_is_high(96+4);
++ return (GPLR3 & 0x800);
++#else
++ return 0;
++#endif
++}
++
++#if defined(CONFIG_PXA_EZX_A780)
++static u_int8_t mmc_voltage[] = {
++ [MMC_VDD_160] = 5,
++ [MMC_VDD_170] = 5,
++ [MMC_VDD_180] = 6,
++ [MMC_VDD_190] = 6,
++ [MMC_VDD_200] = 7,
++ [MMC_VDD_210] = 7,
++ [MMC_VDD_220] = 8,
++ [MMC_VDD_230] = 8,
++ [MMC_VDD_240] = 9,
++ [MMC_VDD_250] = 9,
++ [MMC_VDD_260] = 10,
++ [MMC_VDD_270] = 10,
++ [MMC_VDD_280] = 11,
++ [MMC_VDD_290] = 11,
++ [MMC_VDD_300] = 12,
++ [MMC_VDD_310] = 12,
++ [MMC_VDD_320] = 13,
++ [MMC_VDD_330] = 13,
++ [MMC_VDD_340] = 14,
++ [MMC_VDD_350] = 14,
++ [MMC_VDD_360] = 15,
++};
++#elif defined(CONFIG_PXA_EZX_E680)
++static u_int8_t mmc_voltage[] = {
++ [MMC_VDD_160] = 3,
++ [MMC_VDD_170] = 3,
++ [MMC_VDD_180] = 3,
++ [MMC_VDD_190] = 3,
++ [MMC_VDD_200] = 3,
++ [MMC_VDD_210] = 3,
++ [MMC_VDD_220] = 3,
++ [MMC_VDD_230] = 3,
++ [MMC_VDD_240] = 3,
++ [MMC_VDD_250] = 3,
++ [MMC_VDD_260] = 3,
++ [MMC_VDD_270] = 3,
++ [MMC_VDD_280] = 3,
++ [MMC_VDD_290] = 3,
++ [MMC_VDD_300] = 3,
++ [MMC_VDD_310] = 3,
++ [MMC_VDD_320] = 3,
++ [MMC_VDD_330] = 3,
++ [MMC_VDD_340] = 3,
++ [MMC_VDD_350] = 3,
++ [MMC_VDD_360] = 3,
++};
++#endif
++
++static void ezx_mci_setpower(struct device *dev, unsigned int vdd)
++{
++ printk("%s(vdd=%u) entered\n", __FUNCTION__, vdd);
++ if (vdd <= MMC_VDD_360)
++ ezx_pcap_mmcsd_voltage(mmc_voltage[vdd]);
++
++ ezx_pcap_mmcsd_power(1);
++}
++
++static void ezx_mci_exit(struct device *dev, void *data)
++{
++ printk("%s entered\n", __FUNCTION__);
++ ezx_pcap_mmcsd_power(0);
++ free_irq(0x49, data);
++}
++
++static struct pxamci_platform_data ezx_mci_platform_data = {
++#if defined(CONFIG_PXA_EZX_E680)
++ .ocr_mask = MMC_VDD_27_28,
++#elif defined(CONFIG_PXA_EZX_A780)
++ .ocr_mask = MMC_VDD_160_165|MMC_VDD_18_19|MMC_VDD_20_21
++ |MMC_VDD_22_23|MMC_VDD_24_25|MMC_VDD_26_27
++ |MMC_VDD_28_29|MMC_VDD_30_31|MMC_VDD_32_33
++ |MMC_VDD_34_35|MMC_VDD_35_36,
++#endif
++ .init = ezx_mci_init,
++ .get_ro = ezx_mci_get_ro,
++ .setpower = ezx_mci_setpower,
++ .exit = ezx_mci_exit,
++};
++
++int __init __ezx_mci_init (void)
++{
++ pxa_set_mci_info(&ezx_mci_platform_data);
++ return 0;
++}
++
++arch_initcall(__ezx_mci_init);
+Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.20.7.orig/arch/arm/mach-pxa/Makefile 2007-04-21 02:56:16.000000000 -0300
++++ linux-2.6.20.7/arch/arm/mach-pxa/Makefile 2007-04-21 03:00:03.000000000 -0300
+@@ -18,7 +18,7 @@
+ obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
+ obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
+ obj-$(CONFIG_MACH_TOSA) += tosa.o
+-obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o
++obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o
+
+ # Support for blinky lights
+ led-y := leds.o
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-mtd-map.patch b/packages/linux/linux-ezx-2.6.21/ezx-mtd-map.patch
new file mode 100644
index 0000000000..7ef42f0ffc
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/ezx-mtd-map.patch
@@ -0,0 +1,274 @@
+Index: linux-2.6.21/drivers/mtd/maps/Kconfig
+===================================================================
+--- linux-2.6.21.orig/drivers/mtd/maps/Kconfig 2007-04-26 00:08:32.000000000 -0300
++++ linux-2.6.21/drivers/mtd/maps/Kconfig 2007-04-26 20:49:33.000000000 -0300
+@@ -595,6 +595,28 @@
+ help
+ This enables access to the flash chip on the Sharp SL Series of PDAs.
+
++config MTD_EZX
++ tristate "Map driver for Motorola EZX Platform"
++ depends on MTD && PXA_EZX
++
++if MTD_EZX
++
++choice
++ prompt "Select partition mapping for EZX platform"
++
++config MTD_EZX_A780
++ bool "A780/E680 Original Mapping"
++
++config MTD_EZX_A780_ALTERNATE
++ bool "A780/E680 Alternate Mapping for BLOB2"
++
++config MTD_EZX_E2
++ bool "E2 Original Mapping"
++
++endchoice
++
++endif
++
+ config MTD_PLATRAM
+ tristate "Map driver for platform device RAM (mtd-ram)"
+ depends on MTD
+Index: linux-2.6.21/drivers/mtd/maps/Makefile
+===================================================================
+--- linux-2.6.21.orig/drivers/mtd/maps/Makefile 2007-04-26 00:08:32.000000000 -0300
++++ linux-2.6.21/drivers/mtd/maps/Makefile 2007-04-26 20:30:30.000000000 -0300
+@@ -72,3 +72,4 @@
+ obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o
+ obj-$(CONFIG_MTD_MTX1) += mtx-1_flash.o
+ obj-$(CONFIG_MTD_TQM834x) += tqm834x.o
++obj-$(CONFIG_MTD_EZX) += ezx-flash.o
+Index: linux-2.6.21/drivers/mtd/maps/ezx-flash.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/drivers/mtd/maps/ezx-flash.c 2007-04-26 20:30:30.000000000 -0300
+@@ -0,0 +1,227 @@
++/*
++ * $Id: $
++ *
++ * Map driver for the PXA27x
++ *
++ * Author: Harald Welte
++ * Copyright: (C) 2001 MontaVista Software 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.
++ *
++ * Mar 3, 2007 - (Daniel Ribeiro) Alternate partition table
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/dma-mapping.h>
++#include <linux/slab.h>
++
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/map.h>
++#include <linux/mtd/partitions.h>
++
++#include <asm/io.h>
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/mainstone.h>
++
++#define WINDOW_ADDR 0x0
++#define WINDOW_SIZE (32*1024*1024)
++#define WINDOW_CACHE_ADDR 0x0
++#define WINDOW_CACHE_SIZE 0x1a00000
++
++static void pxa27x_map_inval_cache(struct map_info *map, unsigned long from,
++ ssize_t len)
++{
++#if 0
++ unsigned long endaddress, i, j;
++ endaddress = from + len -1;
++ from &= ~(32-1);
++ endaddress &= ~(32-1);
++ for (i = from; i <= endaddress; i += 32)
++ asm("mcr p15, 0, %0, c7, c6, 1"::"r"(i));
++
++ asm( "mrc p15, 0, %0, c2, c0, 0\n"
++ "mov %0, %0\n"
++ "sub pc, pc #4"
++ :"=r"(j));
++#else
++ consistent_sync((char *)map->cached + from, len, DMA_FROM_DEVICE);
++#endif
++}
++
++
++struct map_info pxa27x_map = {
++ .name = "PXA27x flash",
++ .size = WINDOW_SIZE,
++ .phys = WINDOW_ADDR,
++ .inval_cache = &pxa27x_map_inval_cache,
++};
++
++#if defined CONFIG_MTD_EZX_A780_ALTERNATE
++static struct mtd_partition pxa27x_partitions[] = {
++ {
++ .name = "Bootloader (RO)",
++ .size = 0x00020000,
++ .offset = 0,
++ .mask_flags = MTD_WRITEABLE,
++ }, {
++ .name = "Bootloader 2",
++ .size = 0x00020000,
++ .offset = 0x00020000,
++ } , {
++ .name = "Kernel 1",
++ .size = 0x000e0000, // 896KB
++ .offset = 0x00040000,
++ } , {
++ .name = "rootfs",
++ .size = 0x01760000,
++ .offset = 0x00120000,
++ } , {
++ .name = "Kernel 2",
++ .size = 0x00180000, // 1.5MB
++ .offset = 0x01880000,
++ } , {
++ .name = "VFM_Filesystem",
++ .size = 0x005a0000,
++ .offset = 0x01a00000,
++ } , {
++ .name = "setup",
++ .size = 0x00020000,
++ .offset = 0x01fa0000,
++ } , {
++ .name = "Logo",
++ .size = 0x00020000,
++ .offset = 0x01fc0000,
++ },
++};
++#elif defined CONFIG_MTD_EZX_A780
++static struct mtd_partition pxa27x_partitions[] = {
++ {
++ .name = "Bootloader",
++ .size = 0x00020000,
++ .offset = 0,
++ .mask_flags = MTD_WRITEABLE,
++ }, {
++ .name = "Kernel",
++ .size = 0x000e0000,
++ .offset = 0x00020000,
++ } , {
++ .name = "rootfs",
++ .size = 0x018e0000,
++ .offset = 0x00120000,
++ } , {
++ .name = "VFM_Filesystem",
++ .size = 0x00580000,
++ .offset = 0x01a00000,
++ } , {
++ .name = "setup",
++ .size = 0x00020000,
++ .offset = 0x01fa0000,
++ } , {
++ .name = "Logo",
++ .size = 0x00020000,
++ .offset = 0x01fc0000,
++ },
++};
++#else
++#error "please define partition for this PXA27x implementation"
++#endif
++
++
++static struct mtd_info *mymtd;
++static struct mtd_partition *parsed_parts;
++
++static const char *probes[] = { "RedBoot", "cmdlinepart", NULL };
++
++static int __init init_pxa27x(void)
++{
++ struct mtd_partition *parts;
++ int nb_parts = 0;
++ int parsed_nr_parts = 0;
++ char *part_type = "static";
++
++ pxa27x_map.bankwidth = (BOOT_DEF & 1) ? 2 : 4;
++
++ printk("Probing PXA27x flash at physical address 0x%08x (%d-bit bankwidth)\n",
++ WINDOW_ADDR, pxa27x_map.bankwidth * 8);
++ pxa27x_map.virt = ioremap(pxa27x_map.phys, pxa27x_map.size);
++
++ if (!pxa27x_map.virt) {
++ printk("Failed to ioremap\n");
++ return -EIO;
++ }
++
++ mymtd = do_map_probe("cfi_probe", &pxa27x_map);
++ if (!mymtd) {
++ iounmap((void *)pxa27x_map.virt);
++ return -ENXIO;
++ }
++ mymtd->owner = THIS_MODULE;
++
++#if 0
++ /* ioremap the first flash chip as cacheable */
++ pxa27x_map.cached = ioremap_cached(pxa27x_map.phys, pxa27x_map.size);
++ if (!pxa27x_map.cached) {
++ printk("Failed to do cacheable-ioremap\n");
++ iounmap((void *)pxa27x_map.virt);
++ return -EIO;
++ }
++#endif
++ simple_map_init(&pxa27x_map);
++
++ if (parsed_nr_parts == 0) {
++ int ret = parse_mtd_partitions(mymtd, probes, &parsed_parts, 0);
++
++ if (ret > 0) {
++ part_type = "RedBoot";
++ parsed_nr_parts = ret;
++ }
++ }
++
++ if (parsed_nr_parts > 0) {
++ parts = parsed_parts;
++ nb_parts = parsed_nr_parts;
++ } else {
++ parts = pxa27x_partitions;
++ nb_parts = ARRAY_SIZE(pxa27x_partitions);
++ }
++
++ if (nb_parts) {
++ printk(KERN_NOTICE "Using %s partition definition\n", part_type);
++ add_mtd_partitions(mymtd, parts, nb_parts);
++ } else {
++ add_mtd_device(mymtd);
++ }
++#if 0
++ if (ret = ezx_partition_init())
++#endif
++ return 0;
++}
++
++static void __exit cleanup_pxa27x(void)
++{
++ if (mymtd) {
++ del_mtd_partitions(mymtd);
++ map_destroy(mymtd);
++ if (parsed_parts)
++ kfree(parsed_parts);
++ }
++ if (pxa27x_map.virt)
++ iounmap((void *)pxa27x_map.virt);
++ if (pxa27x_map.cached)
++ iounmap((void *)pxa27x_map.cached);
++ return;
++}
++
++module_init(init_pxa27x);
++module_exit(cleanup_pxa27x);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>");
++MODULE_DESCRIPTION("MTD map driver for Motorola EZX platform");
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-pcap.patch b/packages/linux/linux-ezx-2.6.21/ezx-pcap.patch
new file mode 100644
index 0000000000..a077ad5ffb
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/ezx-pcap.patch
@@ -0,0 +1,1211 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c 2007-05-04 03:07:37.000000000 -0300
+@@ -0,0 +1,425 @@
++/* Driver for Motorola PCAP2 as present in EZX phones
++ *
++ * This is both a SPI device driver for PCAP itself, as well as
++ * an IRQ demultiplexer for handling PCAP generated events such as
++ * headphone jack sense by downstream drivers.
++ *
++ * (C) 2006 by Harald Welte <laforge@openezx.org>
++ *
++ * 2007, April - Daniel Ribeiro <drwyrm@gmail.com>
++ * Altered to work with corgi's SSP code.
++ * Fixed irq handling routine.
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/platform_device.h>
++#include <linux/interrupt.h>
++#include <linux/kernel_stat.h>
++
++#include <asm/hardware.h>
++#include <asm/mach-types.h>
++
++#include <asm/arch/ssp.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx-pcap.h>
++#include <asm/arch/irqs.h>
++#include <asm/mach/irq.h>
++
++#include "ezx.h"
++
++#if 0
++#define DEBUGP(x, args...) printk(x, ## args)
++#else
++#define DEBUGP(x, args...)
++#endif
++
++extern unsigned long ezx_ssp_pcap_putget(ulong);
++
++int ezx_pcap_write(u_int8_t reg_num, u_int32_t value)
++{
++ value &= SSP_PCAP_REGISTER_VALUE_MASK;
++ value |= SSP_PCAP_REGISTER_WRITE_OP_BIT
++ | (reg_num<<SSP_PCAP_REGISTER_ADDRESS_SHIFT);
++
++ local_irq_disable();
++ ezx_ssp_pcap_putget(value);
++ local_irq_enable();
++
++// DEBUGP("pcap write r%x: 0x%08x\n", reg_num, value);
++ return 0;
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_write);
++
++int ezx_pcap_read(u_int8_t reg_num, u_int32_t *value)
++{
++ u_int32_t frame = SSP_PCAP_REGISTER_READ_OP_BIT
++ | (reg_num<<SSP_PCAP_REGISTER_ADDRESS_SHIFT);
++
++ local_irq_disable();
++ *value = ezx_ssp_pcap_putget(frame);
++ local_irq_enable();
++
++// DEBUGP("pcap read r%x: 0x%08x\n", reg_num, *value);
++ return 0;
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_read);
++
++int ezx_pcap_bit_set(u_int32_t sspPcapBit, u_int8_t to)
++{
++ int ret;
++ u_int32_t tmp;
++ u_int32_t bit = (sspPcapBit & SSP_PCAP_REGISTER_VALUE_MASK);
++ u_int8_t reg_num = (sspPcapBit & SSP_PCAP_REGISTER_ADDRESS_MASK)
++ >> SSP_PCAP_REGISTER_ADDRESS_SHIFT;
++
++ ret = ezx_pcap_read(reg_num, &tmp);
++ if (ret < 0)
++ return ret;
++
++ if (to == 0)
++ tmp &= ~bit;
++ else
++ tmp |= bit;
++
++ return ezx_pcap_write(reg_num, tmp);
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_bit_set);
++
++int ezx_pcap_read_bit(u_int32_t bit)
++{
++ int ret;
++ u_int32_t tmp;
++ u_int8_t reg_num = (bit & SSP_PCAP_REGISTER_ADDRESS_MASK)
++ >> SSP_PCAP_REGISTER_ADDRESS_SHIFT;
++
++ ret = ezx_pcap_read(reg_num, &tmp);
++ if (ret < 0)
++ return ret;
++
++ return tmp & (bit & SSP_PCAP_REGISTER_VALUE_MASK);
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_read_bit);
++
++
++static int ezx_pcap_vibrator_level(u_int32_t bit)
++{
++ /* FIXME */
++ return 0;
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_vibrator_level);
++
++
++static int pcap_init(void)
++{
++ /* initialize registers */
++ /* FIXME: this should be board-level, not chip-level */
++ /* implement a per board pcap init reg array? */
++
++// ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ISR_USB4VI, 1);
++// ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_USB4VM, 0);
++// ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ISR_USB1VI, 1);
++// ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_USB1VM, 0);
++ // disable all interrupts
++ ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, PCAP_MASK_ALL_INTERRUPT);
++ // clear all interrupts
++ ezx_pcap_write(SSP_PCAP_ADJ_ISR_REGISTER, PCAP_MASK_ALL_INTERRUPT);
++
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1CTRL, 1);
++ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
++ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
++
++ /* set SW1 sleep to keep SW1 1.3v in sync mode */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE10, 0);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE11, 0);
++ /* SW1 active in sync mode */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE00, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE01, 0);
++ /* at SW1 -core voltage to 1.30V */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW10_DVS, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW11_DVS, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW12_DVS, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW13_DVS, 0);
++
++ /* when STANDY2 PIN ACTIVE (high) set V3-- sram V8 -- pll off */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V3_STBY, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V3_LOWPWR, 0);
++
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V8_STBY, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V8_LOWPWR, 0);
++
++ /* when STANDY2 PIN ACTIVE (high) set V4-- lcd only for e680 V6 ---
++ * camera for e680 */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V4_STBY, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V4_LOWPWR, 1);
++
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V6_STBY, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V6_LOWPWR, 0);
++
++ /* set Vc to low power mode when AP sleep */
++ //SSP_PCAP_bit_set( SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VC_STBY);
++
++ /* set VAUX2 to voltage 2.775V and low power mode when AP sleep */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_1, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_0, 0);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_STBY, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_LOWPWR, 1);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 1);
++
++ PGSR(GPIO34_TXENB) |= GPIO_bit(GPIO34_TXENB);
++
++ return 0;
++}
++/* MMC/SD specific functions */
++
++void ezx_pcap_mmcsd_voltage(u_int32_t bits)
++{
++ unsigned int tmp;
++ ezx_pcap_read(SSP_PCAP_ADJ_AUX_VREG_REGISTER, &tmp);
++#if defined(CONFIG_PXA_EZX_E680)
++ tmp &= 0xffffff9f; /* zero all vaux2 bits */
++ tmp |= (bits & 0x3) << 5;
++#elif defined(CONFIG_PXA_EZX_A780)
++ tmp &= 0xfffff0ff; /* zero all vaux3 bits */
++ tmp |= (bits & 0xf) << 8;
++#endif
++ ezx_pcap_write(SSP_PCAP_ADJ_AUX_VREG_REGISTER, tmp);
++}
++EXPORT_SYMBOL(ezx_pcap_mmcsd_voltage);
++
++int ezx_pcap_mmcsd_power(int on)
++{
++ if (on) {
++#if defined(CONFIG_PXA_EZX_E680)
++ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 1);
++#else
++ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN, 1);
++#endif
++ } else {
++#if defined(CONFIG_PXA_EZX_E680)
++ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 0);
++#else
++ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN, 0);
++#endif
++ }
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_mmcsd_power);
++
++/* IRQ Handling */
++
++/* Array indexed by BIT POSITION of PCAP register, returns IRQ number */
++static unsigned int pcap2irq[] = {
++ [0] = EZX_IRQ_ADCDONE,
++ [1] = EZX_IRQ_TS,
++ [2] = 0, /* 1HZ */
++ [3] = 0, /* WI */
++ [4] = 0, /* WI */
++ [5] = 0, /* TODA */
++ [6] = EZX_IRQ_USB4V,
++ [7] = 0, /* ONOFF */
++ [8] = 0, /* ONOFF2 */
++ [9] = EZX_IRQ_USB1V,
++ [10] = 0, /* MOBPORT */
++ [11] = EZX_IRQ_MIC,
++ [12] = EZX_IRQ_HEADJACK,
++ [13] = 0, /* ST */
++ [14] = 0, /* PC */
++ [15] = 0, /* WARM */
++ [16] = 0, /* EOL */
++ [17] = 0, /* CLK */
++ [18] = 0, /* SYS_RST */
++ [19] = 0,
++ [20] = EZX_IRQ_ADCDONE2,
++ [21] = 0, /* SOFT_RESET */
++ [22] = 0, /* MNEXB */
++};
++
++/* Array indexed by IRQ NUMBER, returns PCAP absolute value */
++static unsigned int irq2pcap[] = {
++ [EZX_IRQ_ADCDONE] = SSP_PCAP_ADJ_BIT_ISR_ADCDONEI,
++ [EZX_IRQ_TS] = SSP_PCAP_ADJ_BIT_ISR_TSI,
++ [EZX_IRQ_USB4V] = SSP_PCAP_ADJ_BIT_ISR_USB4VI,
++ [EZX_IRQ_USB1V] = SSP_PCAP_ADJ_BIT_ISR_USB1VI,
++ [EZX_IRQ_HEADJACK] = SSP_PCAP_ADJ_BIT_ISR_A1I,
++ [EZX_IRQ_MIC] = SSP_PCAP_ADJ_BIT_ISR_MB2I,
++ [EZX_IRQ_ADCDONE2] = SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I,
++};
++
++static void pcap_ack_irq(unsigned int irq)
++{
++ DEBUGP("pcap_ack_irq: %u\n", irq);
++ ezx_pcap_write(SSP_PCAP_ADJ_ISR_REGISTER, irq2pcap[irq]);
++}
++
++static void pcap_mask_irq(unsigned int irq)
++{
++ u_int32_t reg;
++
++ DEBUGP("pcap_mask_irq: %u\n", irq);
++
++ /* this needs to be atomic... but we're not on SMP so it is */
++ ezx_pcap_read(SSP_PCAP_ADJ_MSR_REGISTER, &reg);
++ reg |= irq2pcap[irq];
++ ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, reg);
++}
++
++static void pcap_unmask_irq(unsigned int irq)
++{
++ u_int32_t tmp;
++ DEBUGP("pcap_unmask_irq: %u\n", irq);
++
++ /* this needs to be atomic... but we're not on SMP so it is */
++ ezx_pcap_read(SSP_PCAP_ADJ_MSR_REGISTER, &tmp);
++ tmp &= ~irq2pcap[irq];
++ ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, tmp);
++}
++
++static struct irq_chip pcap_chip = {
++ .ack = pcap_ack_irq,
++ .mask = pcap_mask_irq,
++ .unmask = pcap_unmask_irq,
++};
++
++/* handler for interrupt received from PCAP via GPIO */
++static void pcap_irq_demux_handler(unsigned int irq, struct irq_desc *desc)
++{
++ int i;
++ const unsigned int cpu = smp_processor_id();
++ u_int32_t reg, mask;
++
++ spin_lock(&desc->lock);
++
++ DEBUGP("pcap_irq_demux_handler(%u,,) entered\n", irq);
++
++ desc->status &= ~(IRQ_REPLAY | IRQ_WAITING);
++
++ if (unlikely(desc->status & IRQ_INPROGRESS)) {
++ DEBUGP("irq busy, masking it off\n");
++ desc->status |= (IRQ_PENDING | IRQ_MASKED);
++ desc->chip->mask(irq);
++ desc->chip->ack(irq);
++ goto out_unlock;
++ }
++
++ kstat_cpu(cpu).irqs[irq]++;
++ desc->chip->ack(irq);
++ desc->status |= IRQ_INPROGRESS;
++
++ do {
++ if (unlikely((desc->status &
++ (IRQ_PENDING | IRQ_MASKED | IRQ_DISABLED)) ==
++ (IRQ_PENDING | IRQ_MASKED))) {
++ DEBUGP("dealing with pending IRQ, unmasking\n");
++ desc->chip->unmask(irq);
++ desc->status &= ~IRQ_MASKED;
++ }
++
++ desc->status &= ~IRQ_PENDING;
++
++ ezx_pcap_read(SSP_PCAP_ADJ_ISR_REGISTER, &reg);
++ ezx_pcap_read(SSP_PCAP_ADJ_MSR_REGISTER, &mask);
++ DEBUGP("pcap_irq_demux_handler: ISR=0x%08x MSR=0x%08x\n", reg, mask);
++
++ for (i = ARRAY_SIZE(pcap2irq)-1; i >= 0; i--) {
++ unsigned int pirq = pcap2irq[i];
++ if (pirq == 0)
++ continue;
++
++ if ((reg & (1 << i)) && !(mask & (1 << i))) {
++ struct irq_desc *subdesc;
++ DEBUGP("found irq %u\n", pirq);
++ subdesc = irq_desc + pirq;
++ subdesc->chip->ack(pirq);
++
++ spin_unlock(&desc->lock);
++ handle_IRQ_event(pirq, subdesc->action);
++ spin_lock(&desc->lock);
++ }
++ }
++
++ } while ((desc->status & (IRQ_PENDING | IRQ_DISABLED)) == IRQ_PENDING);
++
++ desc->status &= ~IRQ_INPROGRESS;
++
++out_unlock:
++ spin_unlock(&desc->lock);
++}
++
++static int ezx_pcap_remove(struct platform_device *pdev)
++{
++ int irq;
++ DEBUGP("exz_pcap_remove entered\n");
++
++ set_irq_chained_handler(IRQ_GPIO1, NULL);
++
++ for (irq = EZX_IRQ(0); irq <= EZX_IRQ(6); irq++) {
++ set_irq_chip(irq, NULL);
++ set_irq_handler(irq, NULL);
++ set_irq_flags(irq, 0);
++ }
++
++ return 0;
++}
++
++static int __init ezx_pcap_probe(struct platform_device *pdev)
++{
++ unsigned int irq;
++ DEBUGP("ezx_pcap_probe entered\n");
++
++ pcap_init();
++
++ set_irq_type(IRQ_GPIO1, IRQT_RISING);
++ /* set up interrupt demultiplexing code for PCAP2 irqs */
++ for (irq = EZX_IRQ(0); irq <= EZX_IRQ(6); irq++) {
++ set_irq_chip(irq, &pcap_chip);
++ set_irq_handler(irq, handle_edge_irq);
++ set_irq_flags(irq, IRQF_VALID);
++ }
++ set_irq_chained_handler(IRQ_GPIO1, pcap_irq_demux_handler);
++
++ printk("PCAP2 SSP driver registered.\n");
++
++ return 0;
++}
++
++static int ezx_pcap_suspend(struct platform_device *dev, pm_message_t state)
++{
++ DEBUGP("pcap suspend!\n");
++ return 0;
++}
++
++static int ezx_pcap_resume(struct platform_device *dev)
++{
++ DEBUGP("pcap resume!\n");
++ return 0;
++}
++
++static struct platform_driver ezxpcap_driver = {
++ .probe = ezx_pcap_probe,
++ .remove = ezx_pcap_remove,
++ .suspend = ezx_pcap_suspend,
++ .resume = ezx_pcap_resume,
++ .driver = {
++ .name = "ezx-pcap",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init ezx_pcap_init(void)
++{
++ DEBUGP("ezx_pcap_init entered\n");
++ return platform_driver_register(&ezxpcap_driver);
++}
++
++static void __exit ezx_pcap_exit(void)
++{
++ return platform_driver_unregister(&ezxpcap_driver);
++}
++
++module_init(ezx_pcap_init);
++module_exit(ezx_pcap_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Harald Welte");
++MODULE_DESCRIPTION("SPI Driver for Motorola PCAP2");
++
+Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx-pcap.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/include/asm-arm/arch-pxa/ezx-pcap.h 2007-05-03 17:43:48.000000000 -0300
+@@ -0,0 +1,665 @@
++/* (c) Copyright Motorola Beijing 2002 all rights reserved.
++
++ Project Name : EZX
++ Project No. :
++ Title :
++ File Name :
++ Description :
++
++ ************** REVISION HISTORY **********************************************
++ Date Author Reference
++ ======== ========== ==========================
++ 2002-07-01 weiqiang lin create
++*/
++#ifndef SSP_PCAP_H
++#define SSP_PCAP_H
++
++#define SSP_vibrate_start_command() SSP_PCAP_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN); \
++ SSP_PCAP_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN)
++
++#define SSP_vibrate_stop_command() SSP_PCAP_bit_clean(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN); \
++ SSP_PCAP_bit_clean(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN)
++
++#define SSP_PCAP_REGISTER_VALUE_LENGTH 16
++
++#define SSP_PCAP_REGISTER_WRITE_OP_BIT 0x80000000
++#define SSP_PCAP_REGISTER_READ_OP_BIT 0x00000000
++
++#define SSP_PCAP_REGISTER_VALUE_UP_WORD_MASK 0xffff0000
++#define SSP_PCAP_REGISTER_VALUE_DOWN_WORD_MASK 0x0000ffff
++
++#define SSP_PCAP_REGISTER_VALUE_MASK 0x01ffffff
++#define SSP_PCAP_REGISTER_VALUE_MASK 0x01ffffff
++#define SSP_PCAP_REGISTER_ADDRESS_MASK 0x7c000000
++#define SSP_PCAP_REGISTER_ADDRESS_SHIFT 26
++#define SSP_PCAP_REGISTER_NUMBER 32
++
++#define SSP_PCAP_ADC_START_VALUE_SET_MASK 0xfffffc00
++#define SSP_PCAP_ADC_START_VALUE 0x000001dd
++
++
++#define SSP_PCAP_PHONE_CDC_CLOCK_MASK 0x000001c0
++#define SSP_PCAP_STEREO_SAMPLE_RATE_MASK 0x00000f00
++#define SSP_PCAP_STEREO_BCLK_TIME_SLOT_MASK 0x00018000
++#define SSP_PCAP_STEREO_CLOCK_MASK 0x0000001c
++#define SSP_PCAP_DIGITAL_AUDIO_MODE_MASK 0x00006000
++#define SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK 0x000e0000
++#define SSP_PCAP_MONO_PGA_MASK 0x00180000
++
++#define SSP_PCAP_VIBRATOR_VOLTAGE_LEVEL_MASK 0x00300000
++
++#define SSP_PCAP_AUDIO_IN_GAIN_MASK 0x0000001f
++#define SSP_PCAP_AUDIO_IN_GAIN_SHIFT 0
++#define SSP_PCAP_AUDIO_OUT_GAIN_MASK 0x0001e000
++#define SSP_PCAP_AUDIO_OUT_GAIN_SHIFT 13
++
++
++#define SSP_PCAP_ADD1_VALUE_MASK 0x000003ff
++#define SSP_PCAP_ADD1_VALUE_SHIFT 0
++#define SSP_PCAP_ADD2_VALUE_MASK 0x000ffc00
++#define SSP_PCAP_ADD2_VALUE_SHIFT 10
++
++
++#define PCAP_AUDIO_IN_GAIN_MAX_VALUE 31
++#define PCAP_AUDIO_OUT_GAIN_MAX_VALUE 15
++
++#define PCAP_CLEAR_INTERRUPT_REGISTER 0x00141fdf
++#define PCAP_MASK_ALL_INTERRUPT 0x0013ffff
++
++#define SSP_PCAP_TS_KEEPER_TIMER 100 /* 1 second */
++#define START_ADC_DELAY_TIMER 1991 /* 540 us */
++
++#define SSP_SEND_PM_ALART_INTERVAL 1000 *HZ/1000 /* 1 second */
++#define SSP_SEND_MSG_USB_ACCESSORY_INFO_DEBOUNCE 200 *HZ/1000 /* 200ms */
++
++struct ssp_interrupt_info
++{
++ u32 type;
++ u32 status;
++ void* privdata;
++};
++
++#ifndef U8
++#define U8 unsigned char
++#endif
++
++#ifndef U32
++#define U32 unsigned long
++#endif
++
++#ifndef U16
++#define U16 unsigned short
++#endif
++
++#ifndef P_U16
++#define P_U16 U16*
++#endif
++
++#ifndef P_U32
++#define P_U32 U32*
++#endif
++
++#define SSP_SELECT_BUFFER (volatile unsigned long *)(0xf4000000)
++
++#define SSP_SR_RNE 0x00000008
++#define SSP_PCAP_BASE 0x00001000
++/************************ STRUCTURES, ENUMS, AND TYPEDEFS **************************/
++typedef enum accessoryStatus
++{
++ ACCESSORY_DEVICE_STATUS_DETACHED = 0,
++ ACCESSORY_DEVICE_STATUS_ATTACHED ,
++ ACCESSORY_DEVICE_STATUS_UNKNOW =0x000000ff
++}ACCESSORY_DEVICE_STATUS;
++
++typedef enum accessoryType
++{
++ ACCESSORY_DEVICE_NONE = 0,
++ ACCESSORY_DEVICE_SERIAL_PORT ,
++ ACCESSORY_DEVICE_USB_PORT ,
++ ACCESSORY_DEVICE_UNKNOW =0x000000ff
++}ACCESSORY_TYPE;
++
++typedef enum pcapReturnStatus
++{
++ SSP_PCAP_SUCCESS = 0,
++ SSP_PCAP_ERROR_REGISTER = SSP_PCAP_BASE+1,
++ SSP_PCAP_ERROR_VALUE = SSP_PCAP_BASE+2,
++
++ SSP_PCAP_NOT_RUN = SSP_PCAP_BASE+0xff
++}SSP_PCAP_STATUS;
++
++typedef enum pcapPortType
++{
++ SSP_PCAP_SERIAL_PORT = 0x00000000,
++ SSP_PCAP_LOW_USB_PORT = 0x00000001,
++ SSP_PCAP_HIGH_USB_PORT = 0x00000002,
++ SSP_PCAP_UNKNOW_PORT = 0x000000ff
++}SSP_PCAP_PORT_TYPE;
++
++typedef enum pcapInitDriverType
++{
++ SSP_PCAP_TS_OPEN = 0x00000000,
++ SSP_PCAP_AUDIO_OPEN = 0x00000001,
++ SSP_PCAP_UNKNOW_DRIVER_OPEN = 0x000000ff
++}SSP_PCAP_INIT_DRIVER_TYPE;
++
++
++typedef enum pcapReturnBitStatus
++{
++ SSP_PCAP_BIT_ZERO = 0x00000000,
++ SSP_PCAP_BIT_ONE = 0x00000001,
++ SSP_PCAP_BIT_ERROR = 0xff000000
++}SSP_PCAP_BIT_STATUS;
++
++typedef enum pcapCDCClkType
++{
++ PCAP_CDC_CLK_IN_13M0 = 0x00000000,
++ PCAP_CDC_CLK_IN_15M36 = 0x00000040,
++ PCAP_CDC_CLK_IN_16M8 = 0x00000080,
++ PCAP_CDC_CLK_IN_19M44 = 0x000000c0,
++ PCAP_CDC_CLK_IN_26M0 = 0x00000100
++}PHONE_CDC_CLOCK_TYPE;
++
++typedef enum pcapST_SR
++{
++ PCAP_ST_SAMPLE_RATE_8K = 0x00000000,
++ PCAP_ST_SAMPLE_RATE_11K = 0x00000100,
++ PCAP_ST_SAMPLE_RATE_12K = 0x00000200,
++ PCAP_ST_SAMPLE_RATE_16K = 0x00000300,
++ PCAP_ST_SAMPLE_RATE_22K = 0x00000400,
++ PCAP_ST_SAMPLE_RATE_24K = 0x00000500,
++ PCAP_ST_SAMPLE_RATE_32K = 0x00000600,
++ PCAP_ST_SAMPLE_RATE_44K = 0x00000700,
++ PCAP_ST_SAMPLE_RATE_48K = 0x00000800
++}ST_SAMPLE_RATE_TYPE;
++
++typedef enum pcapST_BCLK
++{
++ PCAP_ST_BCLK_SLOT_16 = 0x00000000,
++ PCAP_ST_BCLK_SLOT_8 = 0x00008000,
++ PCAP_ST_BCLK_SLOT_4 = 0x00010000,
++ PCAP_ST_BCLK_SLOT_2 = 0x00018000,
++}ST_BCLK_TIME_SLOT_TYPE;
++
++typedef enum pcapST_CLK
++{
++ PCAP_ST_CLK_PLL_CLK_IN_13M0 = 0x00000000,
++ PCAP_ST_CLK_PLL_CLK_IN_15M36 = 0x00000004,
++ PCAP_ST_CLK_PLL_CLK_IN_16M8 = 0x00000008,
++ PCAP_ST_CLK_PLL_CLK_IN_19M44 = 0x0000000c,
++ PCAP_ST_CLK_PLL_CLK_IN_26M0 = 0x00000010,
++ PCAP_ST_CLK_PLL_CLK_IN_EXT_MCLK = 0x00000014,
++ PCAP_ST_CLK_PLL_CLK_IN_FSYNC = 0x00000018,
++ PCAP_ST_CLK_PLL_CLK_IN_BITCLK = 0x0000001c
++}ST_CLK_TYPE;
++
++typedef enum pcapDigitalAudioInterfaceMode
++{
++ PCAP_DIGITAL_AUDIO_INTERFACE_NORMAL = 0x00000000,
++ PCAP_DIGITAL_AUDIO_INTERFACE_NETWORK = 0x00002000,
++ PCAP_DIGITAL_AUDIO_INTERFACE_I2S = 0x00004000
++}DIG_AUD_MODE_TYPE;
++
++typedef enum pcapMono
++{
++ PCAP_MONO_PGA_R_L_STEREO = 0x00000000,
++ PCAP_MONO_PGA_RL = 0x00080000,
++ PCAP_MONO_PGA_RL_3DB = 0x00100000,
++ PCAP_MONO_PGA_RL_6DB = 0x00180000
++}MONO_TYPE;
++
++typedef enum pcapVibratorVoltageLevel
++{
++ PCAP_VIBRATOR_VOLTAGE_LEVEL0 = 0x00000000,
++ PCAP_VIBRATOR_VOLTAGE_LEVEL1 = 0x00100000,
++ PCAP_VIBRATOR_VOLTAGE_LEVEL2 = 0x00200000,
++ PCAP_VIBRATOR_VOLTAGE_LEVEL3 = 0x00300000
++}VibratorVoltageLevel_TYPE;
++
++typedef enum pcapTouchScreenMode
++{
++ PCAP_TS_POSITION_X_MEASUREMENT = 0x00000000,
++ PCAP_TS_POSITION_XY_MEASUREMENT = 0x00020000,
++ PCAP_TS_PRESSURE_MEASUREMENT = 0x00040000,
++ PCAP_TS_PLATE_X_MEASUREMENT = 0x00060000,
++ PCAP_TS_PLATE_Y_MEASUREMENT = 0x00080000,
++ PCAP_TS_STANDBY_MODE = 0x000a0000,
++ PCAP_TS_NONTS_MODE = 0x000c0000
++}TOUCH_SCREEN_DETECT_TYPE;
++
++typedef enum pcapADJRegister
++{
++ SSP_PCAP_ADJ_ISR_REGISTER = 0x00,
++ SSP_PCAP_ADJ_MSR_REGISTER = 0x01,
++ SSP_PCAP_ADJ_PSTAT_REGISTER = 0x02,
++ SSP_PCAP_ADJ_VREG2_REGISTER = 0x06,
++ SSP_PCAP_ADJ_AUX_VREG_REGISTER = 0x07,
++ SSP_PCAP_ADJ_BATT_DAC_REGISTER = 0x08,
++ SSP_PCAP_ADJ_ADC1_REGISTER = 0x09,
++ SSP_PCAP_ADJ_ADC2_REGISTER = 0x0a,
++ SSP_PCAP_ADJ_AUD_CODEC_REGISTER = 0x0b,
++ SSP_PCAP_ADJ_AUD_RX_AMPS_REGISTER = 0x0c,
++ SSP_PCAP_ADJ_ST_DAC_REGISTER = 0x0d,
++ SSP_PCAP_ADJ_BUSCTRL_REGISTER = 0x14,
++ SSP_PCAP_ADJ_PERIPH_REGISTER = 0x15,
++ SSP_PCAP_ADJ_LOWPWR_CTRL_REGISTER = 0x18,
++ SSP_PCAP_ADJ_TX_AUD_AMPS_REGISTER = 0x1a,
++ SSP_PCAP_ADJ_GP_REG_REGISTER = 0x1b
++}SSP_PCAP_SECONDARY_PROCESSOR_REGISTER;
++
++typedef enum pcapADJBit_SetType
++{
++ SSP_PCAP_ADJ_BIT_ISR_ADCDONEI = 0x00000001,
++ SSP_PCAP_ADJ_BIT_ISR_TSI = 0x00000002,
++ SSP_PCAP_ADJ_BIT_ISR_1HZI = 0x00000004,
++ SSP_PCAP_ADJ_BIT_ISR_WHI = 0x00000008,
++ SSP_PCAP_ADJ_BIT_ISR_WLI = 0x00000010,
++ SSP_PCAP_ADJ_BIT_ISR_TODAI = 0x00000020,
++ SSP_PCAP_ADJ_BIT_ISR_USB4VI = 0x00000040,
++ SSP_PCAP_ADJ_BIT_ISR_ONOFFI = 0x00000080,
++ SSP_PCAP_ADJ_BIT_ISR_ONOFF2I = 0x00000100,
++ SSP_PCAP_ADJ_BIT_ISR_USB1VI = 0x00000200,
++ SSP_PCAP_ADJ_BIT_ISR_MOBPORTI = 0x00000400,
++ SSP_PCAP_ADJ_BIT_ISR_MB2I = 0x00000800,
++ SSP_PCAP_ADJ_BIT_ISR_A1I = 0x00001000,
++ SSP_PCAP_ADJ_BIT_ISR_STI = 0x00002000,
++ SSP_PCAP_ADJ_BIT_ISR_PCI = 0x00004000,
++ SSP_PCAP_ADJ_BIT_ISR_WARMI = 0x00008000,
++ SSP_PCAP_ADJ_BIT_ISR_EOLI = 0x00010000,
++ SSP_PCAP_ADJ_BIT_ISR_CLKI = 0x00020000,
++ SSP_PCAP_ADJ_BIT_ISR_SYS_RSTI = 0x00040000,
++ SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I = 0x00100000,
++ SSP_PCAP_ADJ_BIT_ISR_SOFT_RESETI = 0x00200000,
++ SSP_PCAP_ADJ_BIT_ISR_MNEXBI = 0x00400000,
++
++ SSP_PCAP_ADJ_BIT_MSR_ADCDONEM = 0x04000001,
++ SSP_PCAP_ADJ_BIT_MSR_TSM = 0x04000002,
++ SSP_PCAP_ADJ_BIT_MSR_1HZM = 0x04000004,
++ SSP_PCAP_ADJ_BIT_MSR_WHM = 0x04000008,
++ SSP_PCAP_ADJ_BIT_MSR_WLM = 0x04000010,
++ SSP_PCAP_ADJ_BIT_MSR_TODAM = 0x04000020,
++ SSP_PCAP_ADJ_BIT_MSR_USB4VM = 0x04000040,
++ SSP_PCAP_ADJ_BIT_MSR_ONOFFM = 0x04000080,
++ SSP_PCAP_ADJ_BIT_MSR_ONOFF2M = 0x04000100,
++ SSP_PCAP_ADJ_BIT_MSR_USB1VM = 0x04000200,
++ SSP_PCAP_ADJ_BIT_MSR_MOBPORTM = 0x04000400,
++ SSP_PCAP_ADJ_BIT_MSR_MB2M = 0x04000800,
++ SSP_PCAP_ADJ_BIT_MSR_A1M = 0x04001000,
++ SSP_PCAP_ADJ_BIT_MSR_STM = 0x04002000,
++ SSP_PCAP_ADJ_BIT_MSR_PCM = 0x04004000,
++ SSP_PCAP_ADJ_BIT_MSR_WARMM = 0x04008000,
++ SSP_PCAP_ADJ_BIT_MSR_EOLM = 0x04010000,
++ SSP_PCAP_ADJ_BIT_MSR_CLKM = 0x04020000,
++ SSP_PCAP_ADJ_BIT_MSR_SYS_RSTM = 0x04040000,
++ SSP_PCAP_ADJ_BIT_MSR_ADCDONE2M = 0x04100000,
++ SSP_PCAP_ADJ_BIT_MSR_SOFT_RESETM = 0x04200000,
++ SSP_PCAP_ADJ_BIT_MSR_MNEXBM = 0x04400000,
++
++ SSP_PCAP_ADJ_BIT_PSTAT_USBDET_4V = 0x08000040,
++ SSP_PCAP_ADJ_BIT_PSTAT_ONOFFSNS = 0x08000080,
++ SSP_PCAP_ADJ_BIT_PSTAT_ONOFFSNS2 = 0x08000100,
++ SSP_PCAP_ADJ_BIT_PSTAT_USBDET_1V = 0x08000200,
++ SSP_PCAP_ADJ_BIT_PSTAT_MOBSENSB = 0x08000400,
++ SSP_PCAP_ADJ_BIT_PSTAT_MB2SNS = 0x08000800,
++ SSP_PCAP_ADJ_BIT_PSTAT_A1SNS = 0x08001000,
++ SSP_PCAP_ADJ_BIT_PSTAT_MSTB = 0x08002000,
++ SSP_PCAP_ADJ_BIT_PSTAT_EOL_STAT = 0x08010000,
++ SSP_PCAP_ADJ_BIT_PSTAT_CLK_STAT = 0x08020000,
++ SSP_PCAP_ADJ_BIT_PSTAT_SYS_RST = 0x08040000,
++ SSP_PCAP_ADJ_BIT_PSTAT_BATTFBSNS = 0x08080000,
++ SSP_PCAP_ADJ_BIT_PSTAT_BATT_DET_IN_SNS = 0x08200000,
++ SSP_PCAP_ADJ_BIT_PSTAT_MNEXBSNS = 0x08400000,
++ SSP_PCAP_ADJ_BIT_PSTAT_WARM_SYS_RST = 0x08800000,
++
++ SSP_PCAP_ADJ_BIT_VREG2_V1_STBY = 0x18000001,
++ SSP_PCAP_ADJ_BIT_VREG2_V2_STBY = 0x18000002,
++ SSP_PCAP_ADJ_BIT_VREG2_V3_STBY = 0x18000004,
++ SSP_PCAP_ADJ_BIT_VREG2_V4_STBY = 0x18000008,
++ SSP_PCAP_ADJ_BIT_VREG2_V5_STBY = 0x18000010,
++ SSP_PCAP_ADJ_BIT_VREG2_V6_STBY = 0x18000020,
++ SSP_PCAP_ADJ_BIT_VREG2_V7_STBY = 0x18000040,
++ SSP_PCAP_ADJ_BIT_VREG2_V8_STBY = 0x18000080,
++ SSP_PCAP_ADJ_BIT_VREG2_V9_STBY = 0x18000100,
++ SSP_PCAP_ADJ_BIT_VREG2_V10_STBY = 0x18000200,
++ SSP_PCAP_ADJ_BIT_VREG2_V1_LOWPWR = 0x18000400,
++ SSP_PCAP_ADJ_BIT_VREG2_V2_LOWPWR = 0x18000800,
++ SSP_PCAP_ADJ_BIT_VREG2_V3_LOWPWR = 0x18001000,
++ SSP_PCAP_ADJ_BIT_VREG2_V4_LOWPWR = 0x18002000,
++ SSP_PCAP_ADJ_BIT_VREG2_V5_LOWPWR = 0x18004000,
++ SSP_PCAP_ADJ_BIT_VREG2_V6_LOWPWR = 0x18008000,
++ SSP_PCAP_ADJ_BIT_VREG2_V7_LOWPWR = 0x18010000,
++ SSP_PCAP_ADJ_BIT_VREG2_V8_LOWPWR = 0x18020000,
++ SSP_PCAP_ADJ_BIT_VREG2_V9_LOWPWR = 0x18040000,
++ SSP_PCAP_ADJ_BIT_VREG2_V10_LOWPWR = 0x18080000,
++
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_EN = 0x1c000002,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_0 = 0x1c000004,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_1 = 0x1c000008,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN = 0x1c000010,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_0 = 0x1c000020,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_1 = 0x1c000040,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN = 0x1c000080,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_0 = 0x1c000100,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_1 = 0x1c000200,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_2 = 0x1c000400,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_3 = 0x1c000800,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX4_EN = 0x1c001000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX4_0 = 0x1c002000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX4_1 = 0x1c004000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VSIM2_EN = 0x1c010000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VSIM_EN = 0x1c020000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VSIM_0 = 0x1c040000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN = 0x1c080000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_0 = 0x1c100000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_1 = 0x1c200000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_STBY = 0x1c400000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_LOWPWR = 0x1c800000,
++ SSP_PCAP_ADJ_BIT_AUX_VREG_SW3_STBY = 0x1d000000,
++
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC0 = 0x20000001,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC1 = 0x20000002,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC2 = 0x20000004,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC3 = 0x20000008,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC4 = 0x20000010,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC5 = 0x20000020,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC6 = 0x20000040,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC7 = 0x20000080,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_B_FDBK = 0x20000100,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_EXT_ISENSE = 0x20000200,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN0 = 0x20000400,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN1 = 0x20000800,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN2 = 0x20001000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN3 = 0x20002000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_I_COIN = 0x20004000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_COIN_CH_EN = 0x20008000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_SEL0 = 0x20020000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_SEL1 = 0x20040000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_SEL2 = 0x20080000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_CMP_EN = 0x20100000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_BATT_DET_EN = 0x20200000,
++ SSP_PCAP_ADJ_BIT_BATT_DAC_THERMBIAS_CTRL = 0x20400000,
++
++ SSP_PCAP_ADJ_BIT_ADC1_ADEN = 0x24000001,
++ SSP_PCAP_ADJ_BIT_ADC1_RAND = 0x24000002,
++ SSP_PCAP_ADJ_BIT_ADC1_AD_SEL1 = 0x24000004,
++ SSP_PCAP_ADJ_BIT_ADC1_AD_SEL2 = 0x24000008,
++ SSP_PCAP_ADJ_BIT_ADC1_ADA10 = 0x24000010,
++ SSP_PCAP_ADJ_BIT_ADC1_ADA11 = 0x24000020,
++ SSP_PCAP_ADJ_BIT_ADC1_ADA12 = 0x24000040,
++ SSP_PCAP_ADJ_BIT_ADC1_ADA20 = 0x24000080,
++ SSP_PCAP_ADJ_BIT_ADC1_ADA21 = 0x24000100,
++ SSP_PCAP_ADJ_BIT_ADC1_ADA22 = 0x24000200,
++ SSP_PCAP_ADJ_BIT_ADC1_ATO0 = 0x24000400,
++ SSP_PCAP_ADJ_BIT_ADC1_ATO1 = 0x24000800,
++ SSP_PCAP_ADJ_BIT_ADC1_ATO2 = 0x24001000,
++ SSP_PCAP_ADJ_BIT_ADC1_ATO3 = 0x24002000,
++ SSP_PCAP_ADJ_BIT_ADC1_ATOX = 0x24004000,
++ SSP_PCAP_ADJ_BIT_ADC1_MTR1 = 0x24008000,
++ SSP_PCAP_ADJ_BIT_ADC1_MTR2 = 0x24010000,
++ SSP_PCAP_ADJ_BIT_ADC1_TS_M0 = 0x24020000,
++ SSP_PCAP_ADJ_BIT_ADC1_TS_M1 = 0x24040000,
++ SSP_PCAP_ADJ_BIT_ADC1_TS_M2 = 0x24080000,
++ SSP_PCAP_ADJ_BIT_ADC1_TS_REF_LOWPWR = 0x24100000,
++ SSP_PCAP_ADJ_BIT_ADC1_TS_REFENB = 0x24200000,
++ SSP_PCAP_ADJ_BIT_ADC1_BATT_I_POLARITY = 0x24400000,
++ SSP_PCAP_ADJ_BIT_ADC1_BATT_I_ADC = 0x24800000,
++
++ SSP_PCAP_ADJ_BIT_ADC2_ADD10 = 0x28000001,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD11 = 0x28000002,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD12 = 0x28000004,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD13 = 0x28000008,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD14 = 0x28000010,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD15 = 0x28000020,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD16 = 0x28000040,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD17 = 0x28000080,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD18 = 0x28000100,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD19 = 0x28000200,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD20 = 0x28000400,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD21 = 0x28000800,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD22 = 0x28001000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD23 = 0x28002000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD24 = 0x28004000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD25 = 0x28008000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD26 = 0x28010000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD27 = 0x28020000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD28 = 0x28040000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADD29 = 0x28080000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADINC1 = 0x28100000,
++ SSP_PCAP_ADJ_BIT_ADC2_ADINC2 = 0x28200000,
++ SSP_PCAP_ADJ_BIT_ADC2_ASC = 0x28400000,
++
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_AUDIHPF = 0x2c000001,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_SMB = 0x2c000002,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_AUDOHPF = 0x2c000004,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CD_TS = 0x2c000008,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_DLM = 0x2c000010,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_ADITH = 0x2c000020,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK0 = 0x2c000040,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK1 = 0x2c000080,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK2 = 0x2c000100,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CLK_INV = 0x2c000200,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_FS_INV = 0x2c000400,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_DF_RESET = 0x2c000800,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_EN = 0x2c001000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK_EN = 0x2c002000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_FS_8K_16K = 0x2c004000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_DIG_AUD_IN = 0x2c008000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CLK_IN_SEL = 0x2c010000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2_MUX = 0x2c020000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG0 = 0x2c040000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG1 = 0x2c080000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG2 = 0x2c100000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG3 = 0x2c200000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG4 = 0x2c400000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG_PRI_ADJ = 0x2c800000,
++ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_PRI_ADJ = 0x2c200000,
++
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1_EN = 0x30000001,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A2_EN = 0x30000002,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A4_EN = 0x30000010,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_ARIGHT_EN = 0x30000020,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_ALEFT_EN = 0x30000040,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_CD_BYP = 0x30000080,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_CDC_SW = 0x30000100,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_ST_DAC_SW = 0x30000200,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_PGA_IN_SW = 0x30000400,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_PGA_R_EN = 0x30000800,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_PGA_L_EN = 0x30001000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG0 = 0x30002000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG1 = 0x30004000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG2 = 0x30008000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG3 = 0x30010000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1CTRL = 0x30020000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_MONO0 = 0x30080000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_MONO1 = 0x30100000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG_PRI_ADJ = 0x30200000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_MONO_PRI_ADJ = 0x30400000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_RX_PRI_ADJ0 = 0x30800000,
++ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_RX_PRI_ADJ1 = 0x31000000,
++
++ SSP_PCAP_ADJ_BIT_ST_DAC_SMB_ST_DAC = 0x34000001,
++ SSP_PCAP_ADJ_BIT_ST_DAC_STDET_EN = 0x34000002,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK0 = 0x34000004,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK1 = 0x34000008,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK2 = 0x34000010,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK_EN = 0x34000020,
++ SSP_PCAP_ADJ_BIT_ST_DAC_DF_RESET_ST_DAC = 0x34000040,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_DAC_EN = 0x34000080,
++ SSP_PCAP_ADJ_BIT_ST_DAC_SR0 = 0x34000100,
++ SSP_PCAP_ADJ_BIT_ST_DAC_SR1 = 0x34000200,
++ SSP_PCAP_ADJ_BIT_ST_DAC_SR2 = 0x34000400,
++ SSP_PCAP_ADJ_BIT_ST_DAC_SR3 = 0x34000800,
++ SSP_PCAP_ADJ_BIT_ST_DAC_DIG_AUD_IN_ST_DAC = 0x34001000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_DIG_AUD_FS0 = 0x34002000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_DIG_AUD_FS1 = 0x34004000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_BCLK0 = 0x34008000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_BCLK1 = 0x34010000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK_INV = 0x34020000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_FS_INV = 0x34040000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_DAC_CLK_IN_SEL = 0x34080000,
++ SSP_PCAP_ADJ_BIT_ST_DAC_ST_DAC_PRI_ADJ = 0x35000000,
++
++ SSP_PCAP_ADJ_BIT_BUSCTRL_FSENB = 0x50000001,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_SUSPEND = 0x50000002,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU = 0x50000004,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PD = 0x50000008,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN = 0x50000010,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PS = 0x50000020,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_MSTR_EN = 0x50000040,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_VBUS_PD_ENB = 0x50000080,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_CURRLIM = 0x50000100,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB = 0x50000200,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_RS232_DIR = 0x50000400,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_SE0_CONN = 0x50000800,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PDM = 0x50001000,
++ SSP_PCAP_ADJ_BIT_BUSCTRL_BUS_PRI_ADJ = 0x51000000,
++
++ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL0 = 0x54000001,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL1 = 0x54000002,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL2 = 0x54000004,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL3 = 0x54000008,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL4 = 0x54000010,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_EN = 0x54000020,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_EN = 0x54000040,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL0 = 0x54000080,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL1 = 0x54000100,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL2 = 0x54000200,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL3 = 0x54000400,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL0 = 0x54000800,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL1 = 0x54001000,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL2 = 0x54002000,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL3 = 0x54004000,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_I0 = 0x54008000,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_I1 = 0x54010000,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_I0 = 0x54020000,
++ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_I1 = 0x54040000,
++ SSP_PCAP_ADJ_BIT_PERIPH_SKIP = 0x54080000,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL0 = 0x54100000,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL1 = 0x54200000,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL2 = 0x54400000,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL3 = 0x54800000,
++ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL4 = 0x55000000,
++
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_STBY = 0x60000001,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_LOWPWR = 0x60000002,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX3_STBY = 0x60000004,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX3_LOWPWR = 0x60000008,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX4_STBY = 0x60000010,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX4_LOWPWR = 0x60000020,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VSIM_LOWPWR = 0x60000040,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VSIM2_LOWPWR = 0x60000080,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE00 = 0x60000100,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE01 = 0x60000200,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE10 = 0x60000400,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE11 = 0x60000800,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW10_DVS = 0x60001000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW11_DVS = 0x60002000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW12_DVS = 0x60004000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW13_DVS = 0x60008000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE00 = 0x60010000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE01 = 0x60020000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE10 = 0x60040000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE11 = 0x60080000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW20_DVS = 0x60100000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW21_DVS = 0x60200000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW22_DVS = 0x60400000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW23_DVS = 0x60800000,
++ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VC_STBY = 0x61000000,
++
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG0 = 0x68000001,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG1 = 0x68000002,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG2 = 0x68000004,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG3 = 0x68000008,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG4 = 0x68000010,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A3_EN = 0x68000020,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A3_MUX = 0x68000040,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A5_EN = 0x68000080,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A5_MUX = 0x68000100,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_EXT_MIC_MUX = 0x68000200,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_MB_ON2 = 0x68000400,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_MB_ON1 = 0x68000800,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A1ID_TX = 0x68001000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A1_CONFIG = 0x68002000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AHS_CONFIG = 0x68004000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A2_CONFIG = 0x68008000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIO_LOWPWR = 0x68080000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIO_STBY = 0x68100000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_V2_EN_2 = 0x68200000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG_PRI_ADJ = 0x68400000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_TX_PRI_ADJ0 = 0x68800000,
++ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_TX_PRI_ADJ1 = 0x69000000,
++
++ SSP_PCAP_ADJ_BIT_SYS_RST_CLR = 0x6c000001,
++ SSP_PCAP_ADJ_BIT_SYS_RST_MODE0 = 0x6c000002,
++ SSP_PCAP_ADJ_BIT_SYS_RST_MODE1 = 0x6c000004,
++ SSP_PCAP_ADJ_BIT_SYS_VFLASH_0 = 0x6c000008,
++ SSP_PCAP_ADJ_BIT_SYS_VFLASH_1 = 0x6c000010,
++ SSP_PCAP_ADJ_BIT_SYS_MID_SELECT = 0x6c000020,
++ SSP_PCAP_ADJ_BIT_SYS_MID_FET = 0x6c000040,
++ SSP_PCAP_ADJ_BIT_SYS_MAIN_LOW = 0x6c000080,
++ SSP_PCAP_ADJ_BIT_SYS_BATTFB_DIS = 0x6c000100,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG9 = 0x6c000200,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG10 = 0x6c000400,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG11 = 0x6c000800,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG12 = 0x6c001000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG13 = 0x6c002000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG14 = 0x6c004000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG15 = 0x6c008000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG16 = 0x6c010000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG17 = 0x6c020000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG18 = 0x6c040000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG19 = 0x6c080000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG20 = 0x6c100000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG21 = 0x6c200000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG22 = 0x6c400000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG23 = 0x6c800000,
++ SSP_PCAP_ADJ_BIT_SYS_GP_REG24 = 0x6d000000
++
++}SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE;
++
++/************************ FUNCTION PROTOTYPES **************************************/
++extern void ssp_pcap_init(void);
++extern void ssp_pcap_release(void);
++
++extern void ssp_pcap_open(SSP_PCAP_INIT_DRIVER_TYPE portType);
++extern void ssp_pcap_close(void);
++
++extern void ssp_pcap_intoSleep_callBack(void);
++extern void ssp_pcap_wakeUp_callBack(void);
++
++
++extern SSP_PCAP_STATUS SSP_PCAP_write_data_to_PCAP(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER ssp_pcap_register,U32 ssp_pcap_register_value);
++extern SSP_PCAP_STATUS SSP_PCAP_read_data_from_PCAP(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER ssp_pcap_register,P_U32 p_ssp_pcap_register_value);
++
++extern SSP_PCAP_STATUS SSP_PCAP_bit_set(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
++extern SSP_PCAP_STATUS SSP_PCAP_bit_clean(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
++extern SSP_PCAP_BIT_STATUS SSP_PCAP_get_bit_from_buffer(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
++extern SSP_PCAP_BIT_STATUS SSP_PCAP_get_bit_from_PCAP(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
++extern U32 SSP_PCAP_get_register_value_from_buffer(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER ssp_pcap_register ) ;
++
++extern SSP_PCAP_STATUS SSP_PCAP_TSI_mode_set(TOUCH_SCREEN_DETECT_TYPE mode_Type );
++extern SSP_PCAP_STATUS SSP_PCAP_TSI_start_XY_read(void);
++extern SSP_PCAP_STATUS SSP_PCAP_TSI_get_XY_value(P_U16 p_x,P_U16 p_y);
++extern SSP_PCAP_STATUS SSP_PCAP_CDC_CLK_set(PHONE_CDC_CLOCK_TYPE clkType);
++
++extern SSP_PCAP_STATUS SSP_PCAP_CDC_SR_set(ST_SAMPLE_RATE_TYPE srType);
++extern SSP_PCAP_STATUS SSP_PCAP_BCLK_set(ST_BCLK_TIME_SLOT_TYPE bclkType);
++extern SSP_PCAP_STATUS SSP_PCAP_STCLK_set(ST_CLK_TYPE stClkType);
++extern SSP_PCAP_STATUS SSP_PCAP_DIG_AUD_FS_set(DIG_AUD_MODE_TYPE fsType);
++extern SSP_PCAP_STATUS SSP_PCAP_AUDIG_set(U32 audioInGain);
++extern SSP_PCAP_STATUS SSP_PCAP_MONO_set(MONO_TYPE monoType);
++extern SSP_PCAP_STATUS SSP_PCAP_AUDOG_set(U32 audioOutGain);
++
++extern SSP_PCAP_STATUS SSP_PCAP_V_VIB_level_set(VibratorVoltageLevel_TYPE VIBLevelType);
++extern SSP_PCAP_STATUS SSP_PCAP_configure_USB_UART_transeiver(SSP_PCAP_PORT_TYPE portType);
++extern SSP_PCAP_BIT_STATUS SSP_PCAP_get_audio_in_status(void);
++
++/* for log */
++extern void pcap_log_add_pure_data(u8* pData,u32 len);
++extern void pcap_log_add_data(u8* pData,u32 len);
++
++/* screen lock on/off handler */
++extern void ssp_pcap_screenlock_lock(u32 data);
++extern void ssp_pcap_screenlock_unlock(u32 data);
++
++#endif
+Index: linux-2.6.21/include/asm-arm/arch-pxa/irqs.h
+===================================================================
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/irqs.h 2007-05-03 17:41:55.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/irqs.h 2007-05-03 17:43:48.000000000 -0300
+@@ -176,7 +176,8 @@
+ #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1)
+ #elif defined(CONFIG_ARCH_LUBBOCK) || \
+ defined(CONFIG_MACH_LOGICPD_PXA270) || \
+- defined(CONFIG_MACH_MAINSTONE)
++ defined(CONFIG_MACH_MAINSTONE) || \
++ defined(CONFIG_PXA_EZX)
+ #define NR_IRQS (IRQ_BOARD_END)
+ #else
+ #define NR_IRQS (IRQ_BOARD_START)
+@@ -222,3 +223,16 @@
+ #define IRQ_LOCOMO_GPIO_BASE (IRQ_BOARD_START + 1)
+ #define IRQ_LOCOMO_LT_BASE (IRQ_BOARD_START + 2)
+ #define IRQ_LOCOMO_SPI_BASE (IRQ_BOARD_START + 3)
++
++/* EZX Interrupts (CONFIG_EZX) */
++#define EZX_IRQ(x) (IRQ_BOARD_START + (x))
++#define EZX_IRQ_ADCDONE EZX_IRQ(0) /* PCAP */
++#define EZX_IRQ_TS EZX_IRQ(1) /* PCAP */
++#define EZX_IRQ_USB4V EZX_IRQ(2) /* PCAP */
++#define EZX_IRQ_USB1V EZX_IRQ(3) /* PCAP */
++#define EZX_IRQ_HEADJACK EZX_IRQ(4) /* PCAP */
++#define EZX_IRQ_MIC EZX_IRQ(5) /* PCAP */
++#define EZX_IRQ_ADCDONE2 EZX_IRQ(6) /* PCAP */
++#define EZX_IRQ_ONOFF EZX_IRQ(7)
++#define EZX_IRQ_ONOFF2 EZX_IRQ(8)
++
+Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-05-03 17:42:02.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-05-04 04:17:33.000000000 -0300
+@@ -18,7 +18,7 @@
+ obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
+ obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
+ obj-$(CONFIG_MACH_TOSA) += tosa.o
+-obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o
++obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o
+
+ # Support for blinky lights
+ led-y := leds.o
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-03 17:42:02.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-04 04:17:33.000000000 -0300
+@@ -72,6 +72,24 @@
+ .clk_pcap = 1,
+ };
+
++/* PCAP */
++static struct resource ezxpcap_resources[] = {
++ [0] = {
++ .start = IRQ_GPIO1,
++ .end = IRQ_GPIO1,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device ezxpcap_device = {
++ .name = "ezx-pcap",
++ .id = -1,
++ .dev = {
++ .parent = &ezxssp_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(ezxpcap_resources),
++ .resource = ezxpcap_resources,
++};
+
+ /* OHCI Controller */
+
+@@ -235,7 +253,7 @@
+ };
+
+
+-static struct resource ezx_bp_resources[] = {
++static struct resource ezxbp_resources[] = {
+ [0] = {
+ .start = GPIO_BP_RDY,
+ .end = GPIO_BP_RDY,
+@@ -255,15 +273,15 @@
+ #endif
+ };
+
+-static struct platform_device ezx_bp_device = {
++static struct platform_device ezxbp_device = {
+ .name = "ezx-bp",
+ .dev = {
+ //.parent =
+ //.platform_data =
+ },
+ .id = -1,
+- .num_resources = ARRAY_SIZE(ezx_bp_resources),
+- .resource = ezx_bp_resources,
++ .num_resources = ARRAY_SIZE(ezxbp_resources),
++ .resource = ezxbp_resources,
+ };
+
+ static void __init ezx_init_gpio_irq(void)
+@@ -296,7 +314,8 @@
+
+ static struct platform_device *devices[] __initdata = {
+ &ezxssp_device,
+- &ezx_bp_device,
++ &ezxpcap_device,
++ &ezxbp_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-pm.patch b/packages/linux/linux-ezx-2.6.21/ezx-pm.patch
new file mode 100644
index 0000000000..4ad66936c9
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/ezx-pm.patch
@@ -0,0 +1,58 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/pxa27x.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/pxa27x.c 2007-05-03 17:41:39.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/pxa27x.c 2007-05-03 17:43:42.000000000 -0300
+@@ -22,6 +22,10 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/ohci.h>
+
++#ifdef CONFIG_PXA_EZX
++#include <asm/arch/ezx.h>
++#endif
++
+ #include "generic.h"
+
+ /* Crystal clock: 13MHz */
+@@ -156,7 +160,13 @@
+ break;
+ case PM_SUSPEND_MEM:
+ /* set resume return address */
++#ifdef CONFIG_PXA_EZX
++ /* set EZX flags for blob - WM */
++ *(unsigned long *)(phys_to_virt(RESUME_ADDR)) = virt_to_phys(pxa_cpu_resume);
++ *(unsigned long *)(phys_to_virt(FLAG_ADDR)) = SLEEP_FLAG;
++#else
+ PSPR = virt_to_phys(pxa_cpu_resume);
++#endif
+ pxa_cpu_suspend(PWRMODE_SLEEP);
+ break;
+ }
+Index: linux-2.6.21/arch/arm/mach-pxa/pm.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/pm.c 2007-05-03 17:41:39.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/pm.c 2007-05-04 03:51:15.000000000 -0300
+@@ -24,6 +24,10 @@
+ #include <asm/arch/lubbock.h>
+ #include <asm/mach/time.h>
+
++#ifdef CONFIG_PXA_EZX
++#include <asm/arch/ezx.h>
++#endif
++
+
+ /*
+ * Debug macros
+@@ -152,8 +156,12 @@
+ }
+
+ /* ensure not to come back here if it wasn't intended */
++#ifdef CONFIG_PXA_EZX
++ *(unsigned long *)(phys_to_virt(RESUME_ADDR)) = 0;
++ *(unsigned long *)(phys_to_virt(FLAG_ADDR)) = OFF_FLAG;
++#else
+ PSPR = 0;
+-
++#endif
+ /* restore registers */
+ RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1); RESTORE_GPLEVEL(2);
+ RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2);
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-serial-bug-workaround.patch b/packages/linux/linux-ezx-2.6.21/ezx-serial-bug-workaround.patch
new file mode 100644
index 0000000000..9f30cc35fe
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/ezx-serial-bug-workaround.patch
@@ -0,0 +1,45 @@
+Work around some errata in the pxa serial code (copied from motorolas 2.4.x tree)
+
+Index: linux-2.6.20.7/drivers/serial/pxa.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/serial/pxa.c 2007-04-21 13:57:46.000000000 -0300
++++ linux-2.6.20.7/drivers/serial/pxa.c 2007-04-21 14:05:03.000000000 -0300
+@@ -29,6 +29,10 @@
+ #define SUPPORT_SYSRQ
+ #endif
+
++#define pxa_buggy_port(x) ({ \
++ int cpu_ver; asm("mrc%? p15, 0, %0, c0, c0" : "=r" (cpu_ver)); \
++ ((x) == PORT_PXA && (cpu_ver & ~1) == 0x69052100); })
++
+ #include <linux/module.h>
+ #include <linux/ioport.h>
+ #include <linux/init.h>
+@@ -195,7 +199,7 @@
+ if (uart_circ_empty(xmit))
+ serial_pxa_stop_tx(&up->port);
+ }
+-
++static inline irqreturn_t serial_pxa_irq(int, void *);
+ static void serial_pxa_start_tx(struct uart_port *port)
+ {
+ struct uart_pxa_port *up = (struct uart_pxa_port *)port;
+@@ -203,6 +207,8 @@
+ if (!(up->ier & UART_IER_THRI)) {
+ up->ier |= UART_IER_THRI;
+ serial_out(up, UART_IER, up->ier);
++ if (pxa_buggy_port(up->port.type))
++ serial_pxa_irq(up->port.irq, NULL);
+ }
+ }
+
+@@ -298,6 +304,9 @@
+
+ mcr |= up->mcr;
+
++ if (pxa_buggy_port(up->port.type) && up->port.irq != 0)
++ mcr ^= UART_MCR_OUT2;
++
+ serial_out(up, UART_MCR, mcr);
+ }
+
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-ts.patch b/packages/linux/linux-ezx-2.6.21/ezx-ts.patch
new file mode 100644
index 0000000000..1dd88efd6e
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/ezx-ts.patch
@@ -0,0 +1,399 @@
+Index: linux-2.6.21/drivers/input/touchscreen/Kconfig
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/Kconfig 2007-04-26 05:08:32.000000000 +0200
++++ linux-2.6.21/drivers/input/touchscreen/Kconfig 2007-04-26 23:27:05.000000000 +0200
+@@ -164,4 +164,16 @@
+ To compile this driver as a module, choose M here: the
+ module will be called ucb1400_ts.
+
++config TOUCHSCREEN_PCAP
++ tristate "Motorola PCAP touchscreen"
++ depends on PXA_EZX_PCAP
++ help
++ Say Y here if you have a Motorola EZX (E680, A780) telephone
++ and want to support the built-in touchscreen.
++
++ If unsure, say N.
++
++ To compile this driver as a module, choose M here: the
++ module will be called hp680_ts_input.
++
+ endif
+Index: linux-2.6.21/drivers/input/touchscreen/Makefile
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/Makefile 2007-04-26 05:08:32.000000000 +0200
++++ linux-2.6.21/drivers/input/touchscreen/Makefile 2007-04-26 23:27:52.000000000 +0200
+@@ -16,3 +16,4 @@
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
+ obj-$(CONFIG_TOUCHSCREEN_UCB1400) += ucb1400_ts.o
++obj-$(CONFIG_TOUCHSCREEN_PCAP) += pcap_ts.o
+Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-04-26 23:27:05.000000000 +0200
+@@ -0,0 +1,364 @@
++/*
++ * pcap_ts.c - Touchscreen driver for Motorola PCAP2 based touchscreen as found
++ * in the EZX phone platform.
++ *
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ *
++ * Based on information found in the original Motorola 2.4.x ezx-ts.c driver.
++ *
++ * 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.
++ *
++ * TODO:
++ * split this in a hardirq handler and a tasklet/bh
++ * suspend/resume support
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/fs.h>
++#include <linux/string.h>
++#include <linux/pm.h>
++#include <linux/timer.h>
++#include <linux/config.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.h>
++#include <linux/input.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++
++#include "../../misc/ezx/ssp_pcap.h"
++
++#if 1
++#define DEBUGP(x, args ...) printk(KERN_DEBUG "%s: " x, __FUNCTION__, ## args)
++#else
++#define DEBUGP(x, args ...)
++#endif
++
++#define PRESSURE 1
++#define COORDINATE 2
++
++struct pcap_ts {
++ int irq_xy;
++ int irq_touch;
++ struct input_dev *input;
++ struct timer_list timer;
++
++ u_int16_t x, y;
++ u_int16_t pressure, pressure_last;
++
++ u_int8_t read_state;
++};
++
++#define X_AXIS_MIN 0
++#define X_AXIS_MAX 1023
++
++#define Y_AXIS_MAX X_AXIS_MAX
++#define Y_AXIS_MIN X_AXIS_MIN
++
++#define PRESSURE_MAX X_AXIS_MAX
++#define PRESSURE_MIN X_AXIS_MIN
++
++static int pcap_ts_mode(u_int32_t mode)
++{
++ int ret;
++
++ u_int32_t tmp;
++
++ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++ if (ret < 0)
++ return ret;
++
++ tmp &= ~SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK;
++ tmp |= mode;
++ ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++
++ DEBUGP("set ts mode ");
++ if (mode == PCAP_TS_POSITION_XY_MEASUREMENT)
++ DEBUGP("COORD\n");
++ else if (mode == PCAP_TS_PRESSURE_MEASUREMENT)
++ DEBUGP("PRESS\n");
++ else if (mode == PCAP_TS_STANDBY_MODE)
++ DEBUGP("STANDBY\n");
++ else
++ printk("UNKNOWN\n");
++
++ return ret;
++}
++
++/* issue a XY read command to the ADC of PCAP2. Well get an ADCDONE2 interrupt
++ * once the result of the conversion is available */
++static int pcap_ts_start_xy_read(struct pcap_ts *pcap_ts)
++{
++ int ret;
++ u_int32_t tmp;
++ DEBUGP("start xy read in mode %s\n",
++ pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
++
++ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++ if (ret < 0)
++ return ret;
++
++ tmp &= SSP_PCAP_ADC_START_VALUE_SET_MASK;
++ tmp |= SSP_PCAP_ADC_START_VALUE;
++
++ ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++ if (ret < 0)
++ return ret;
++
++ ret = ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ADC2_ASC, 1);
++
++ return ret;
++}
++
++/* read the XY result from the ADC of PCAP2 */
++static int pcap_ts_get_xy_value(struct pcap_ts *pcap_ts)
++{
++ int ret;
++ u_int32_t tmp;
++
++ DEBUGP("get xy value in mode %s\n",
++ pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
++
++ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC2_REGISTER, &tmp);
++ if (ret < 0)
++ return ret;
++
++ if (tmp & 0x00400000)
++ return -EIO;
++
++ if (pcap_ts->read_state == COORDINATE) {
++ pcap_ts->x = (tmp & SSP_PCAP_ADD1_VALUE_MASK);
++ pcap_ts->y = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
++ >>SSP_PCAP_ADD2_VALUE_SHIFT;
++ } else {
++ pcap_ts->pressure_last = pcap_ts->pressure;
++ pcap_ts->pressure = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
++ >>SSP_PCAP_ADD2_VALUE_SHIFT;
++ }
++
++ return 0;
++}
++
++/* PCAP2 interrupts us when ADC conversion result is available */
++static irqreturn_t pcap_ts_irq_xy(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct pcap_ts *pcap_ts = dev_id;
++
++ if (pcap_ts_get_xy_value(pcap_ts) < 0) {
++ printk("pcap_ts: error reading XY value\n");
++ return IRQ_HANDLED;
++ }
++
++ DEBUGP("%s X=%4d, Y=%4d Z=%4d\n",
++ pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS",
++ pcap_ts->x, pcap_ts->y, pcap_ts->pressure);
++
++ if (pcap_ts->read_state == PRESSURE) {
++ input_report_abs(pcap_ts->input, ABS_PRESSURE,
++ pcap_ts->pressure);
++ if ((pcap_ts->pressure >= PRESSURE_MAX ||
++ pcap_ts->pressure <= PRESSURE_MIN ) &&
++ pcap_ts->pressure == pcap_ts->pressure_last) {
++ /* pen has been released */
++ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
++ input_sync(pcap_ts->input);
++
++ pcap_ts->x = pcap_ts->y = 0;
++
++ /* ask PCAP2 to interrupt us if touch event happens
++ * again */
++ pcap_ts->read_state = PRESSURE;
++ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++
++ /* no need for timer, we'll get interrupted with
++ * next touch down event */
++ del_timer(&pcap_ts->timer);
++ } else {
++ /* pen has been touched down */
++ input_report_key(pcap_ts->input, BTN_TOUCH, 1);
++ /* don't input_sync(), we don't know position yet */
++
++ /* switch state machine into coordinate read mode */
++ pcap_ts->read_state = COORDINATE;
++ pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
++ pcap_ts_start_xy_read(pcap_ts);
++
++ mod_timer(&pcap_ts->timer, jiffies + HZ/20);
++ }
++ } else {
++ /* we are in coordinate mode */
++ if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
++ pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
++ DEBUGP("invalid x/y coordinate position: PEN_UP?\n");
++#if 0
++ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
++ pcap_ts->x = pcap_ts->y = 0;
++#endif
++ } else {
++ input_report_abs(pcap_ts->input, ABS_X, pcap_ts->x);
++ input_report_abs(pcap_ts->input, ABS_Y, pcap_ts->y);
++ }
++ input_sync(pcap_ts->input);
++
++ /* switch back to pressure read mode */
++ pcap_ts->read_state = PRESSURE;
++ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++ }
++
++ return IRQ_HANDLED;
++}
++
++/* PCAP2 interrupts us if the pen touches down */
++static irqreturn_t pcap_ts_irq_touch(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct pcap_ts *pcap_ts = dev_id;
++ DEBUGP("entered\n");
++
++ /* mask Touchscreen interrupt bit, prevents further touch events
++ * from being reported to us until we're finished with reading
++ * both pressure and x/y from ADC */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 1);
++ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
++ pcap_ts->read_state = PRESSURE;
++ pcap_ts_start_xy_read(pcap_ts);
++
++ return IRQ_HANDLED;
++}
++
++static void pcap_ts_timer_fn(unsigned long data)
++{
++ struct pcap_ts *pcap_ts = (struct pcap_ts *) data;
++
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 1);
++ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
++ pcap_ts->read_state = PRESSURE;
++ pcap_ts_start_xy_read(pcap_ts);
++}
++
++static int __init ezxts_probe(struct platform_device *pdev)
++{
++ struct pcap_ts *pcap_ts;
++ struct input_dev *input_dev;
++ int err = -ENOMEM;
++
++ pcap_ts = kzalloc(sizeof(*pcap_ts), GFP_KERNEL);
++ input_dev = input_allocate_device();
++ if (!pcap_ts || !input_dev)
++ goto fail;
++
++ pcap_ts->irq_xy = platform_get_irq(pdev, 0);
++ if (pcap_ts->irq_xy < 0) {
++ err = pcap_ts->irq_xy;
++ goto fail;
++ }
++
++ pcap_ts->irq_touch = platform_get_irq(pdev, 1);
++ if (pcap_ts->irq_touch < 0) {
++ err = pcap_ts->irq_touch;
++ goto fail;
++ }
++
++ ssp_pcap_open(SSP_PCAP_TS_OPEN);
++
++ err = request_irq(pcap_ts->irq_xy, pcap_ts_irq_xy, SA_INTERRUPT,
++ "PCAP Touchscreen XY", pcap_ts);
++ if (err < 0) {
++ printk(KERN_ERR "pcap_ts: can't grab xy irq %d: %d\n",
++ pcap_ts->irq_xy, err);
++ goto fail;
++ }
++
++ err = request_irq(pcap_ts->irq_touch, pcap_ts_irq_touch, SA_INTERRUPT,
++ "PCAP Touchscreen Touch", pcap_ts);
++ if (err < 0) {
++ printk(KERN_ERR "pcap_ts: can't grab touch irq %d: %d\n",
++ pcap_ts->irq_touch, err);
++ goto fail_xy;
++ }
++
++ pcap_ts->input = input_dev;
++ pcap_ts->read_state = PRESSURE;
++ init_timer(&pcap_ts->timer);
++ pcap_ts->timer.data = (unsigned long) pcap_ts;
++ pcap_ts->timer.function = &pcap_ts_timer_fn;
++
++ platform_set_drvdata(pdev, pcap_ts);
++
++ /* enable pressure interrupt */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++
++ input_dev->name = "EZX PCAP2 Touchscreen";
++ input_dev->phys = "ezxts/input0";
++ input_dev->id.bustype = BUS_HOST;
++ input_dev->id.vendor = 0x0001;
++ input_dev->id.product = 0x0002;
++ input_dev->id.version = 0x0100;
++ input_dev->cdev.dev = &pdev->dev;
++ input_dev->private = pcap_ts;
++
++ input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);
++ input_dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
++ input_set_abs_params(input_dev, ABS_X, X_AXIS_MIN, X_AXIS_MAX, 0, 0);
++ input_set_abs_params(input_dev, ABS_Y, Y_AXIS_MIN, Y_AXIS_MAX, 0, 0);
++ input_set_abs_params(input_dev, ABS_PRESSURE, PRESSURE_MIN,
++ PRESSURE_MAX, 0, 0);
++
++ input_register_device(pcap_ts->input);
++
++ return 0;
++
++fail_xy:
++ free_irq(pcap_ts->irq_xy, pcap_ts);
++fail:
++ input_free_device(input_dev);
++ kfree(pcap_ts);
++
++ return err;
++}
++
++static int ezxts_remove(struct platform_device *pdev)
++{
++ struct pcap_ts *pcap_ts = platform_get_drvdata(pdev);
++
++ del_timer_sync(&pcap_ts->timer);
++
++ free_irq(pcap_ts->irq_touch, pcap_ts);
++ free_irq(pcap_ts->irq_xy, pcap_ts);
++
++ input_unregister_device(pcap_ts->input);
++ kfree(pcap_ts);
++
++ return 0;
++}
++
++static struct platform_driver ezxts_driver = {
++ .probe = ezxts_probe,
++ .remove = ezxts_remove,
++ //.suspend = ezxts_suspend,
++ //.resume = ezxts_resume,
++ .driver = {
++ .name = "pcap-ts",
++ },
++};
++
++static int __devinit ezxts_init(void)
++{
++ return platform_driver_register(&ezxts_driver);
++}
++
++static void __exit ezxts_exit(void)
++{
++ platform_driver_unregister(&ezxts_driver);
++}
++
++module_init(ezxts_init);
++module_exit(ezxts_exit);
++
++MODULE_DESCRIPTION("Motorola PCAP2 touchscreen driver");
++MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-ezx-2.6.21/mux-fix-init-errorpath.patch b/packages/linux/linux-ezx-2.6.21/mux-fix-init-errorpath.patch
new file mode 100644
index 0000000000..716ef86fd1
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/mux-fix-init-errorpath.patch
@@ -0,0 +1,20 @@
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 00:10:32.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 00:42:23.000000000 +0100
+@@ -811,7 +811,6 @@
+ /*init the related mux interface*/
+ if (!(bvd_ipc = kzalloc(sizeof(struct ipc_usb_data), GFP_KERNEL))) {
+ err("usb_ipc_init: Out of memory.");
+- usb_deregister(&usb_ipc_driver);
+ return -ENOMEM;
+ }
+ bvd_dbg("usb_ipc_init: Address of bvd_ipc:%p", bvd_ipc);
+@@ -819,7 +818,6 @@
+ if (!(bvd_ipc->xmit.buf = kmalloc(IPC_USB_XMIT_SIZE, GFP_KERNEL))) {
+ err("usb_ipc_init: Not enough memory for the input buffer.");
+ kfree(bvd_ipc);
+- usb_deregister(&usb_ipc_driver);
+ return -ENOMEM;
+ }
+ bvd_dbg("usb_ipc_init: bvd_ipc->xmit.buf address:%p",
diff --git a/packages/linux/linux-ezx-2.6.21/mux-fix-makefile.patch b/packages/linux/linux-ezx-2.6.21/mux-fix-makefile.patch
new file mode 100644
index 0000000000..31452da847
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/mux-fix-makefile.patch
@@ -0,0 +1,14 @@
+Index: linux-2.6.21/drivers/char/Makefile
+===================================================================
+--- linux-2.6.21.orig/drivers/char/Makefile 2007-04-26 20:09:29.000000000 +0200
++++ linux-2.6.21/drivers/char/Makefile 2007-04-26 20:09:46.000000000 +0200
+@@ -104,7 +104,8 @@
+ obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o
+ obj-$(CONFIG_TCG_TPM) += tpm/
+
+-obj-$(CONFIG_TS0710_MUX) += ts0710_mux.o ts0710_mux_usb.o
++obj-$(CONFIG_TS0710_MUX_USB) += ts0710_mux_usb.o
++obj-$(CONFIG_TS0710_MUX) += ts0710_mux.o
+
+
+ # Files generated that shall be removed upon make clean
diff --git a/packages/linux/linux-ezx-2.6.21/mux-fix-tty-driver.patch b/packages/linux/linux-ezx-2.6.21/mux-fix-tty-driver.patch
new file mode 100644
index 0000000000..2e1aabd952
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/mux-fix-tty-driver.patch
@@ -0,0 +1,125 @@
+Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux.c 2007-04-22 10:51:31.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-22 10:53:05.000000000 +0200
+@@ -241,7 +241,8 @@
+ static volatile __u8 mux_recv_info_flags[NR_MUXS];
+ static mux_recv_struct *mux_recv_queue = NULL;
+
+-static struct tty_driver mux_driver;
++// Local for 2.6?
++static struct tty_driver *mux_driver;
+
+ #ifdef USB_FOR_MUX
+ #define COMM_FOR_MUX_DRIVER usb_for_mux_driver
+@@ -3007,6 +3008,7 @@
+ #else
+ mux_tty[line]++;
+ dlci = tty2dlci[line];
++ mux_table[line] = tty;
+
+ /* if( dlci == 1 ) { */
+ /* Open server channel 0 first */
+@@ -3087,6 +3089,7 @@
+ }
+ }
+
++
+ retval = 0;
+ #endif
+ out:
+@@ -3894,43 +3897,50 @@
+ INIT_WORK(&receive_tqueue, receive_worker, NULL);
+ INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
+
+- memset(&mux_driver, 0, sizeof(struct tty_driver));
+- memset(&mux_tty, 0, sizeof(mux_tty));
+- mux_driver.magic = TTY_DRIVER_MAGIC;
+- mux_driver.driver_name = "ts0710mux";
+- mux_driver.name = "ts0710mux";
+- mux_driver.major = TS0710MUX_MAJOR;
+- mux_driver.minor_start = TS0710MUX_MINOR_START;
+- mux_driver.num = NR_MUXS;
+- mux_driver.type = TTY_DRIVER_TYPE_SERIAL;
+- mux_driver.subtype = SERIAL_TYPE_NORMAL;
+- mux_driver.init_termios = tty_std_termios;
+- mux_driver.init_termios.c_iflag = 0;
+- mux_driver.init_termios.c_oflag = 0;
+- mux_driver.init_termios.c_cflag = B38400 | CS8 | CREAD;
+- mux_driver.init_termios.c_lflag = 0;
+- mux_driver.flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
+-
+- mux_driver.ttys = mux_table;
+- mux_driver.termios = mux_termios;
+- mux_driver.termios_locked = mux_termios_locked;
++ mux_driver = alloc_tty_driver(NR_MUXS);
++ if (!mux_driver)
++ return -ENOMEM;
++
++ mux_driver->owner = THIS_MODULE;
++ mux_driver->driver_name = "ts0710mux";
++ mux_driver->name = "mux";
++ mux_driver->devfs_name = "mux";
++ mux_driver->major = TS0710MUX_MAJOR;
++ mux_driver->minor_start = TS0710MUX_MINOR_START;
++ mux_driver->type = TTY_DRIVER_TYPE_SERIAL;
++ mux_driver->subtype = SERIAL_TYPE_NORMAL;
++ mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
++
++ mux_driver->init_termios = tty_std_termios;
++ mux_driver->init_termios.c_iflag = 0;
++ mux_driver->init_termios.c_oflag = 0;
++ mux_driver->init_termios.c_cflag = B38400 | CS8 | CREAD;
++ mux_driver->init_termios.c_lflag = 0;
++
++// mux_driver.ttys = mux_table;
++ mux_driver->termios = mux_termios;
++ mux_driver->termios_locked = mux_termios_locked;
+ // mux_driver.driver_state = mux_state;
+- mux_driver.other = NULL;
++ mux_driver->other = NULL;
+
+- mux_driver.open = mux_open;
+- mux_driver.close = mux_close;
+- mux_driver.write = mux_write;
+- mux_driver.write_room = mux_write_room;
+- mux_driver.flush_buffer = mux_flush_buffer;
+- mux_driver.chars_in_buffer = mux_chars_in_buffer;
+- mux_driver.throttle = mux_throttle;
+- mux_driver.unthrottle = mux_unthrottle;
+- mux_driver.ioctl = mux_ioctl;
+- mux_driver.owner = THIS_MODULE;
++ mux_driver->open = mux_open;
++ mux_driver->close = mux_close;
++ mux_driver->write = mux_write;
++ mux_driver->write_room = mux_write_room;
++ mux_driver->flush_buffer = mux_flush_buffer;
++ mux_driver->chars_in_buffer = mux_chars_in_buffer;
++ mux_driver->throttle = mux_throttle;
++ mux_driver->unthrottle = mux_unthrottle;
++ mux_driver->ioctl = mux_ioctl;
+
+- if (tty_register_driver(&mux_driver))
++ // FIXME: No panic() here
++ if (tty_register_driver(mux_driver))
+ panic("Couldn't register mux driver");
+
++ for (j=0; j<NR_MUXS; j++)
++ tty_register_device(mux_driver, j, NULL);
++
++
+ COMM_MUX_DISPATCHER = mux_dispatcher;
+ COMM_MUX_SENDER = mux_sender;
+
+@@ -3964,7 +3974,10 @@
+ mux_recv_info[j] = 0;
+ }
+
+- if (tty_unregister_driver(&mux_driver))
++ for (j=0; j<NR_MUXS; j++)
++ tty_unregister_device(mux_driver, j);
++
++ if (tty_unregister_driver(mux_driver))
+ panic("Couldn't unregister mux driver");
+ }
+
diff --git a/packages/linux/linux-ezx-2.6.21/mux-fix.patch b/packages/linux/linux-ezx-2.6.21/mux-fix.patch
new file mode 100644
index 0000000000..b820762f41
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/mux-fix.patch
@@ -0,0 +1,164 @@
+Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux_usb.c 2007-04-21 18:07:45.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-21 20:55:13.000000000 +0200
+@@ -626,7 +626,6 @@
+ }
+
+ interface = &intf->cur_altsetting->desc;
+- endpoint = &intf->cur_altsetting->endpoint[0].desc;
+ /* Start checking for two bulk endpoints or ... FIXME: This is a future
+ * enhancement...*/
+ bvd_dbg("usb_ipc_probe: Number of Endpoints:%d",
+@@ -638,30 +637,26 @@
+
+ ep_cnt = have_bulk_in_mux = have_bulk_out_mux = 0;
+
+- bvd_dbg("usb_ipc_probe: endpoint[0] is:%x",
+- (&endpoint[0])->bEndpointAddress);
+- bvd_dbg("usb_ipc_probe: endpoint[1] is:%x ",
+- (&endpoint[1])->bEndpointAddress);
+-
+ while (ep_cnt < interface->bNumEndpoints) {
+-
+- if (!have_bulk_in_mux && IS_EP_BULK_IN(endpoint[ep_cnt])) {
+- bvd_dbg("usb_ipc_probe: bEndpointAddress(IN) is:%x ",
+- (&endpoint[ep_cnt])->bEndpointAddress);
+- have_bulk_in_mux =
+- (&endpoint[ep_cnt])->bEndpointAddress;
+- readsize = (&endpoint[ep_cnt])->wMaxPacketSize;
++ endpoint = &intf->cur_altsetting->endpoint[ep_cnt].desc;
++ bvd_dbg("usb_ipc_probe: endpoint[%i] is: %x", ep_cnt,
++ endpoint->bEndpointAddress);
++
++ if (!have_bulk_in_mux && IS_EP_BULK_IN(*endpoint)) {
++ bvd_dbg("usb_ipc_probe: bEndpointAddress(IN) is: %x ",
++ endpoint->bEndpointAddress);
++ have_bulk_in_mux = endpoint->bEndpointAddress;
++ readsize = endpoint->wMaxPacketSize;
+ bvd_dbg("usb_ipc_probe: readsize=%d", readsize);
+ ep_cnt++;
+ continue;
+ }
+
+- if (!have_bulk_out_mux && IS_EP_BULK_OUT(endpoint[ep_cnt])) {
+- bvd_dbg("usb_ipc_probe: bEndpointAddress(OUT) is:%x ",
+- (&endpoint[ep_cnt])->bEndpointAddress);
+- have_bulk_out_mux =
+- (&endpoint[ep_cnt])->bEndpointAddress;
+- writesize = (&endpoint[ep_cnt])->wMaxPacketSize;
++ if (!have_bulk_out_mux && IS_EP_BULK_OUT(*endpoint)) {
++ bvd_dbg("usb_ipc_probe: bEndpointAddress(OUT) is: %x ",
++ endpoint->bEndpointAddress);
++ have_bulk_out_mux = endpoint->bEndpointAddress;
++ writesize = endpoint->wMaxPacketSize;
+ bvd_dbg("usb_ipc_probe: writesize=%d", writesize);
+ ep_cnt++;
+ continue;
+@@ -718,21 +713,27 @@
+ bvd_ipc->bh_bp.func = usbipc_bh_bp_func;
+ bvd_ipc->bh_bp.data = (unsigned long) bvd_ipc;
+
++ bvd_dbg("after assignements");
+ /*Build a write urb*/
++ usb_init_urb(&bvd_ipc->writeurb_mux);
+ usb_fill_bulk_urb(&bvd_ipc->writeurb_mux, usbdev,
+ usb_sndbulkpipe(bvd_ipc->ipc_dev,
+ bvd_ipc->bulk_out_ep_mux),
+ bvd_ipc->obuf, writesize, usb_ipc_write_bulk,
+ bvd_ipc);
+ //bvd_ipc->writeurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
++ bvd_dbg("after write urb");
+
+ /*Build a read urb and send a IN token first time*/
++ usb_init_urb(&bvd_ipc->readurb_mux);
+ usb_fill_bulk_urb(&bvd_ipc->readurb_mux, usbdev,
+ usb_rcvbulkpipe(usbdev, bvd_ipc->bulk_in_ep_mux),
+ bvd_ipc->ibuf, readsize, usb_ipc_read_bulk, bvd_ipc);
+ //bvd_ipc->readurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
++ bvd_dbg("after read urb");
+
+- usb_driver_claim_interface(&usb_ipc_driver, intf, bvd_ipc);
++ //usb_driver_claim_interface(&usb_ipc_driver, intf, bvd_ipc);
++ bvd_dbg("after claim interface");
+ //usb_driver_claim_interface(&usb_ipc_driver, &ipccfg->interface[1], bvd_ipc);
+
+ // a2590c: dsplog is not supported by this driver
+@@ -740,6 +741,8 @@
+ // &ipccfg->interface[2], bvd_ipc);
+ /*send a IN token first time*/
+ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
++ bvd_dbg("after assignement");
++
+ if (usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
+ printk("usb_ipc_prob: usb_submit_urb(read mux bulk) failed!\n");
+
+@@ -750,7 +753,7 @@
+ tasklet_schedule(&bvd_ipc->bh);
+ }
+
+- printk("usb_ipc_probe: completed probe!");
++ printk("usb_ipc_probe: completed probe!\n");
+ usb_set_intfdata(intf, &bvd_ipc);
+ return 0;
+ }
+@@ -760,21 +763,23 @@
+ //struct usb_device *usbdev = interface_to_usbdev(intf);
+ struct ipc_usb_data *bvd_ipc_disconnect = usb_get_intfdata(intf);
+
+- printk("usb_ipc_disconnect:*** \n");
+
++ printk("usb_ipc_disconnect. bvd_ipc_disconnect address: %p\n", bvd_ipc_disconnect);
++
++ //FIXME: Memory leak?
+ if ((UHCRHPS3 & 0x4) == 0)
+- usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
++ // usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
+
+- usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
++ //usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
+
+ bvd_ipc_disconnect->ipc_flag = IPC_USB_PROBE_NOT_READY;
+ kfree(bvd_ipc_disconnect->ibuf);
+ kfree(bvd_ipc_disconnect->obuf);
+
+- usb_driver_release_interface(&usb_ipc_driver,
+- bvd_ipc_disconnect->ipc_dev->actconfig->interface[0]);
+- usb_driver_release_interface(&usb_ipc_driver,
+- bvd_ipc_disconnect->ipc_dev->actconfig->interface[1]);
++ //usb_driver_release_interface(&usb_ipc_driver,
++ // bvd_ipc_disconnect->ipc_dev->actconfig->interface[0]);
++ //usb_driver_release_interface(&usb_ipc_driver,
++ // bvd_ipc_disconnect->ipc_dev->actconfig->interface[1]);
+
+ //a2590c: dsplog interface is not supported by this driver
+ //usb_driver_release_interface(&usb_ipc_driver, &bvd_ipc_disconnect->ipc_dev->actconfig->interface[2]);
+@@ -803,13 +808,6 @@
+ int result;
+
+ bvd_dbg("init usb_ipc");
+- /* register driver at the USB subsystem */
+- result = usb_register(&usb_ipc_driver);
+- if (result < 0) {
+- err ("usb ipc driver could not be registered");
+- return result;
+- }
+-
+ /*init the related mux interface*/
+ if (!(bvd_ipc = kzalloc(sizeof(struct ipc_usb_data), GFP_KERNEL))) {
+ err("usb_ipc_init: Out of memory.");
+@@ -836,6 +834,14 @@
+ usb_for_mux_driver = &ipcusb_tty_driver;
+ usb_for_mux_tty = &ipcusb_tty;
+
++ /* register driver at the USB subsystem */
++ // this was called before bvd_ipc was allocated
++ result = usb_register(&usb_ipc_driver);
++ if (result < 0) {
++ err ("usb ipc driver could not be registered");
++ return result;
++ }
++
+ /* init timers for ipcusb read process and usb suspend */
+ init_timer(&ipcusb_timer);
+ ipcusb_timer.function = ipcusb_timeout;
diff --git a/packages/linux/linux-ezx-2.6.21/mux-ifdef-ezx-features.patch b/packages/linux/linux-ezx-2.6.21/mux-ifdef-ezx-features.patch
new file mode 100644
index 0000000000..e7935a2598
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/mux-ifdef-ezx-features.patch
@@ -0,0 +1,86 @@
+Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux_usb.c 2007-04-24 16:31:51.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-24 16:34:57.000000000 +0200
+@@ -35,10 +35,14 @@
+ #include <linux/list.h>
+ #include <linux/errno.h>
+ #include <asm/uaccess.h>
++
++#ifdef CONFIG_PXA_EZX
+ #include <asm/hardware.h>
+ #include <asm/arch/hardware.h>
+ #include <asm/arch-pxa/pxa-regs.h>
+ #include <asm/arch-pxa/ezx.h>
++#endif
++
+ #include <linux/slab.h>
+ #include <linux/miscdevice.h>
+ #include <linux/init.h>
+@@ -341,8 +345,10 @@
+
+ static void wakeup_timeout(unsigned long data)
+ {
++#ifdef CONFIG_PXA_EZX
+ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
+ bvd_dbg("wakup_timeout: send GPIO_MCU_INT_SW signal!");
++#endif
+ }
+
+ static void suspend_timeout(unsigned long data)
+@@ -353,10 +359,12 @@
+ bvd_dbg("suspend_timeout: add the suspend timer again");
+ } else {
+ unlink_urbs(&bvd_ipc->readurb_mux);
++#ifdef CONFIG_PXA_EZX
+ UHCRHPS3 = 0x4;
+ mdelay(40);
+ bvd_dbg("suspend_timeout: send SUSPEND signal! UHCRHPS3=0x%x",
+ UHCRHPS3);
++#endif
+ }
+ }
+
+@@ -404,6 +412,7 @@
+ bvd_ipc->writeurb_mux.transfer_buffer_length = buf_num;
+ bvd_dbg("ipcusb_xmit_data: copy data to write urb finished! ");
+
++#ifdef CONFIG_PXA_EZX
+ if ((UHCRHPS3 & 0x4) == 0x4) {
+ static int ret;
+ int time = 0;
+@@ -442,6 +451,7 @@
+ "failed! status=%d\n", ret);
+ bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
+ }
++#endif
+
+ sumbit_times++;
+ bvd_ipc->write_finished_flag = 0;
+@@ -464,12 +474,16 @@
+
+ static void usbipc_bh_bp_func(unsigned long param)
+ {
++#ifdef CONFIG_PXA_EZX
+ if ((UHCRHPS3 & 0x4) == 0x4) {
+ UHCRHPS3 = 0x8;
++#endif
+ mdelay(40);
++#ifdef CONFIG_PXA_EZX
+ bvd_dbg("ipcusb_softint_send_readurb: Send RESUME signal! "
+ "UHCRHPS3=0x%x", UHCRHPS3);
+ }
++#endif
+ if (bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) {
+ //get_halted_bit();
+
+@@ -734,7 +748,9 @@
+ printk("usb_ipc_disconnect. bvd_ipc_disconnect address: %p\n", bvd_ipc_disconnect);
+
+ //FIXME: Memory leak?
++#ifdef CONFIG_PXA_EZX
+ if ((UHCRHPS3 & 0x4) == 0)
++#endif
+ // usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
+
+ //usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
diff --git a/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch b/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch
new file mode 100644
index 0000000000..cab7490118
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch
@@ -0,0 +1,224 @@
+Index: linux-2.6.20.7/drivers/char/ts0710.h
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710.h 2007-04-24 16:04:23.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710.h 2007-04-24 16:04:23.000000000 +0200
+@@ -45,7 +45,7 @@
+ * 11/18/2002 Modified
+ */
+
+-#include <linux/config.h>
++//#include <linux/config.h>
+ #include <linux/module.h>
+
+ #include <linux/errno.h>
+@@ -58,7 +58,7 @@
+ #include <linux/major.h>
+ #include <linux/mm.h>
+ #include <linux/init.h>
+-#include <linux/devfs_fs_kernel.h>
++//#include <linux/devfs_fs_kernel.h>
+
+ #include <asm/uaccess.h>
+ #include <asm/system.h>
+Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux.c 2007-04-24 16:04:23.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-24 16:26:58.000000000 +0200
+@@ -46,7 +46,7 @@
+ * 11/18/2002 Second version
+ * 04/21/2004 Add GPRS PROC
+ */
+-#include <linux/config.h>
++//#include <linux/config.h>
+ #include <linux/module.h>
+ #include <linux/types.h>
+
+@@ -70,7 +70,7 @@
+ #include <linux/mm.h>
+ #include <linux/slab.h>
+ #include <linux/init.h>
+-#include <linux/devfs_fs_kernel.h>
++//#include <linux/devfs_fs_kernel.h>
+ //#include <syslog.h>
+
+ #include <asm/uaccess.h>
+@@ -268,8 +268,8 @@
+ static struct work_struct post_recv_tqueue;
+
+ static struct tty_struct *mux_table[NR_MUXS];
+-static struct termios *mux_termios[NR_MUXS];
+-static struct termios *mux_termios_locked[NR_MUXS];
++static struct ktermios *mux_termios[NR_MUXS];
++static struct ktermios *mux_termios_locked[NR_MUXS];
+ static volatile short int mux_tty[NR_MUXS];
+
+ #ifdef min
+@@ -1894,11 +1894,14 @@
+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
+ queue_data = 1;
+ } else {
++ /*
+ if (test_bit
+ (TTY_DONT_FLIP, &tty->flags)) {
+ queue_data = 1;
+ post_recv = 1;
+- } else if (recv_info->total) {
++ } else
++ */
++ if (recv_info->total) {
+ queue_data = 1;
+ post_recv = 1;
+ } else if (recv_room < uih_len) {
+@@ -3149,7 +3152,7 @@
+
+ /*For BP UART problem End*/
+
+-static void receive_worker(void *private_)
++static void receive_worker(struct work_struct *private_)
+ {
+ struct tty_struct *tty = COMM_FOR_MUX_TTY;
+ int i, count, tbuf_free, tbuf_read;
+@@ -3440,7 +3443,7 @@
+ clear_bit(RECV_RUNNING, &mux_recv_flags);
+ }
+
+-static void post_recv_worker(void *private_)
++static void post_recv_worker(struct work_struct *private_)
+ {
+ ts0710_con *ts0710 = &ts0710_connection;
+ int tty_idx;
+@@ -3499,11 +3502,14 @@
+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
+ add_post_recv_queue(&post_recv_q, recv_info);
+ continue;
+- } else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
++ }
++ /*
++ else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
+ post_recv = 1;
+ add_post_recv_queue(&post_recv_q, recv_info);
+ continue;
+ }
++ */
+
+ flow_control = 0;
+ recv_packet2 = recv_info->mux_packet;
+@@ -3635,7 +3641,7 @@
+ }
+ }
+
+-static void send_worker(void *private_)
++static void send_worker(struct work_struct *private_)
+ {
+ ts0710_con *ts0710 = &ts0710_connection;
+ __u8 j;
+@@ -3893,9 +3899,9 @@
+ }
+ post_recv_count_flag = 0;
+
+- INIT_WORK(&send_tqueue, send_worker, NULL);
+- INIT_WORK(&receive_tqueue, receive_worker, NULL);
+- INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
++ INIT_WORK(&send_tqueue, send_worker);
++ INIT_WORK(&receive_tqueue, receive_worker);
++ INIT_WORK(&post_recv_tqueue, post_recv_worker);
+
+ mux_driver = alloc_tty_driver(NR_MUXS);
+ if (!mux_driver)
+@@ -3904,12 +3910,12 @@
+ mux_driver->owner = THIS_MODULE;
+ mux_driver->driver_name = "ts0710mux";
+ mux_driver->name = "mux";
+- mux_driver->devfs_name = "mux";
++ //mux_driver->devfs_name = "mux";
+ mux_driver->major = TS0710MUX_MAJOR;
+ mux_driver->minor_start = TS0710MUX_MINOR_START;
+ mux_driver->type = TTY_DRIVER_TYPE_SERIAL;
+ mux_driver->subtype = SERIAL_TYPE_NORMAL;
+- mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
++ mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
+
+ mux_driver->init_termios = tty_std_termios;
+ mux_driver->init_termios.c_iflag = 0;
+@@ -3917,10 +3923,10 @@
+ mux_driver->init_termios.c_cflag = B38400 | CS8 | CREAD;
+ mux_driver->init_termios.c_lflag = 0;
+
+-// mux_driver.ttys = mux_table;
++ //mux_driver.ttys = mux_table;
+ mux_driver->termios = mux_termios;
+ mux_driver->termios_locked = mux_termios_locked;
+-// mux_driver.driver_state = mux_state;
++ //mux_driver.driver_state = mux_state;
+ mux_driver->other = NULL;
+
+ mux_driver->open = mux_open;
+Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux_usb.c 2007-04-24 16:27:30.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-24 16:31:51.000000000 +0200
+@@ -86,8 +86,8 @@
+ struct tty_struct *usb_for_mux_tty = NULL;
+ void (*usb_mux_dispatcher)(struct tty_struct *tty) = NULL;
+ void (*usb_mux_sender)(void) = NULL;
+-void (*ipcusb_ap_to_bp)(unsigned char*, int) = NULL;
+-void (*ipcusb_bp_to_ap)(unsigned char*, int) = NULL;
++void (*ipcusb_ap_to_bp)(const unsigned char*, int) = NULL;
++void (*ipcusb_bp_to_ap)(const unsigned char*, int) = NULL;
+ EXPORT_SYMBOL(usb_for_mux_driver);
+ EXPORT_SYMBOL(usb_for_mux_tty);
+ EXPORT_SYMBOL(usb_mux_dispatcher);
+@@ -222,7 +222,7 @@
+ inbuf = list_entry(ptr, buf_list_t, list);
+ src_count = inbuf->size;
+ if (dst_count >= src_count) {
+- memcpy(buf, inbuf->body, src_count);
++ memcpy((char *)buf, inbuf->body, src_count);
+ ret = src_count;
+ list_del(ptr);
+ kfree(inbuf->body);
+@@ -282,7 +282,7 @@
+ spin_unlock(&bvd_ipc->in_buf_lock);
+ }
+
+-static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
++static void usb_ipc_read_bulk(struct urb *urb)
+ {
+ buf_list_t *inbuf;
+ int count = urb->actual_length;
+@@ -319,7 +319,7 @@
+ bvd_dbg("usb_ipc_read_bulk: completed!!!");
+ }
+
+-static void usb_ipc_write_bulk(struct urb *urb, struct pt_regs *regs)
++static void usb_ipc_write_bulk(struct urb *urb)
+ {
+ callback_times++;
+ bvd_ipc->write_finished_flag = 1;
+@@ -437,7 +437,7 @@
+ /*send IN token*/
+ bvd_ipc->readurb_mux.actual_length = 0;
+ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
+- if (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
++ if ( (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC)) )
+ printk("ipcusb_xmit_data: usb_submit_urb(read mux bulk)"
+ "failed! status=%d\n", ret);
+ bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
+@@ -447,7 +447,7 @@
+ bvd_ipc->write_finished_flag = 0;
+ //printk("%s: clear write_finished_flag:%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
+ bvd_ipc->writeurb_mux.dev = bvd_ipc->ipc_dev;
+- if (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC))
++ if ( (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC)) )
+ warn("ipcusb_xmit_data: funky result! result=%d\n", result);
+
+ bvd_dbg("ipcusb_xmit_data: usb_submit_urb finished! result:%d", result);
+@@ -556,7 +556,7 @@
+ struct usb_config_descriptor *ipccfg;
+ struct usb_interface_descriptor *interface;
+ struct usb_endpoint_descriptor *endpoint;
+- int ep_cnt, readsize, writesize;
++ int ep_cnt, readsize=0, writesize=0;
+ char have_bulk_in_mux, have_bulk_out_mux;
+
+ bvd_dbg("usb_ipc_probe: vendor id 0x%x, device id 0x%x",
diff --git a/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch b/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch
new file mode 100644
index 0000000000..8d5299e3bd
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch
@@ -0,0 +1,297 @@
+Index: linux-2.6.21/drivers/char/ts0710.h
+===================================================================
+--- linux-2.6.21.orig/drivers/char/ts0710.h 2007-04-27 20:35:44.000000000 -0300
++++ linux-2.6.21/drivers/char/ts0710.h 2007-04-27 20:36:03.000000000 -0300
+@@ -45,7 +45,6 @@
+ * 11/18/2002 Modified
+ */
+
+-#include <linux/config.h>
+ #include <linux/module.h>
+
+ #include <linux/errno.h>
+@@ -58,7 +57,6 @@
+ #include <linux/major.h>
+ #include <linux/mm.h>
+ #include <linux/init.h>
+-#include <linux/devfs_fs_kernel.h>
+
+ #include <asm/uaccess.h>
+ #include <asm/system.h>
+Index: linux-2.6.21/drivers/char/ts0710_mux.c
+===================================================================
+--- linux-2.6.21.orig/drivers/char/ts0710_mux.c 2007-04-27 20:35:44.000000000 -0300
++++ linux-2.6.21/drivers/char/ts0710_mux.c 2007-04-27 20:36:03.000000000 -0300
+@@ -46,7 +46,6 @@
+ * 11/18/2002 Second version
+ * 04/21/2004 Add GPRS PROC
+ */
+-#include <linux/config.h>
+ #include <linux/module.h>
+ #include <linux/types.h>
+
+@@ -70,15 +69,12 @@
+ #include <linux/mm.h>
+ #include <linux/slab.h>
+ #include <linux/init.h>
+-#include <linux/devfs_fs_kernel.h>
+-//#include <syslog.h>
+
+ #include <asm/uaccess.h>
+ #include <asm/system.h>
+ #include <asm/bitops.h>
+
+ #ifdef USB_FOR_MUX
+-//#include <linux/usb.h>
+ #include "ts0710_mux_usb.h"
+ #endif
+
+@@ -268,8 +264,8 @@
+ static struct work_struct post_recv_tqueue;
+
+ static struct tty_struct *mux_table[NR_MUXS];
+-static struct termios *mux_termios[NR_MUXS];
+-static struct termios *mux_termios_locked[NR_MUXS];
++static struct ktermios *mux_termios[NR_MUXS];
++static struct ktermios *mux_termios_locked[NR_MUXS];
+ static volatile short int mux_tty[NR_MUXS];
+
+ #ifdef min
+@@ -1894,11 +1890,7 @@
+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
+ queue_data = 1;
+ } else {
+- if (test_bit
+- (TTY_DONT_FLIP, &tty->flags)) {
+- queue_data = 1;
+- post_recv = 1;
+- } else if (recv_info->total) {
++ if (recv_info->total) {
+ queue_data = 1;
+ post_recv = 1;
+ } else if (recv_room < uih_len) {
+@@ -3149,10 +3141,10 @@
+
+ /*For BP UART problem End*/
+
+-static void receive_worker(void *private_)
++static void receive_worker(struct work_struct *work)
+ {
+ struct tty_struct *tty = COMM_FOR_MUX_TTY;
+- int i, count, tbuf_free, tbuf_read;
++ int count, tbuf_free, tbuf_read;
+ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
+ static unsigned char *tbuf_ptr = &tbuf[0];
+ static unsigned char *start_flag = 0;
+@@ -3168,7 +3160,7 @@
+ __u32 uih_len;
+ /*For BP UART problem End */
+
+- UNUSED_PARAM(private_);
++ UNUSED_PARAM(work);
+
+ if (!tty)
+ return;
+@@ -3440,7 +3432,7 @@
+ clear_bit(RECV_RUNNING, &mux_recv_flags);
+ }
+
+-static void post_recv_worker(void *private_)
++static void post_recv_worker(struct work_struct *work)
+ {
+ ts0710_con *ts0710 = &ts0710_connection;
+ int tty_idx;
+@@ -3453,7 +3445,7 @@
+ mux_recv_packet *recv_packet, *recv_packet2;
+ __u8 j;
+
+- UNUSED_PARAM(private_);
++ UNUSED_PARAM(work);
+
+ if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
+ schedule_work(&post_recv_tqueue);
+@@ -3499,10 +3491,6 @@
+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
+ add_post_recv_queue(&post_recv_q, recv_info);
+ continue;
+- } else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
+- post_recv = 1;
+- add_post_recv_queue(&post_recv_q, recv_info);
+- continue;
+ }
+
+ flow_control = 0;
+@@ -3635,7 +3623,7 @@
+ }
+ }
+
+-static void send_worker(void *private_)
++static void send_worker(struct work_struct *work)
+ {
+ ts0710_con *ts0710 = &ts0710_connection;
+ __u8 j;
+@@ -3644,7 +3632,7 @@
+ struct tty_struct *tty;
+ __u8 dlci;
+
+- UNUSED_PARAM(private_);
++ UNUSED_PARAM(work);
+
+ TS0710_DEBUG("Enter into send_worker");
+
+@@ -3819,7 +3807,8 @@
+ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].sentBytes =
+ get_count(TS0710MUX_GPRS2_SEND_COUNT_IDX);
+
+- copy_to_user(buf, gprsData, bufLen);
++ if(copy_to_user(buf, gprsData, bufLen))
++ return -EFAULT;
+
+ return bufLen;
+ }
+@@ -3836,7 +3825,8 @@
+
+ memset(gprsData, 0, bufLen);
+
+- copy_from_user(gprsData, buf, bufLen);
++ if(copy_from_user(gprsData, buf, bufLen))
++ return -EFAULT;
+
+ set_count(TS0710MUX_GPRS1_RECV_COUNT_IDX, gprsData[0].recvBytes);
+ set_count(TS0710MUX_GPRS1_SEND_COUNT_IDX, gprsData[0].sentBytes);
+@@ -3893,9 +3883,9 @@
+ }
+ post_recv_count_flag = 0;
+
+- INIT_WORK(&send_tqueue, send_worker, NULL);
+- INIT_WORK(&receive_tqueue, receive_worker, NULL);
+- INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
++ INIT_WORK(&send_tqueue, send_worker);
++ INIT_WORK(&receive_tqueue, receive_worker);
++ INIT_WORK(&post_recv_tqueue, post_recv_worker);
+
+ mux_driver = alloc_tty_driver(NR_MUXS);
+ if (!mux_driver)
+@@ -3904,12 +3894,11 @@
+ mux_driver->owner = THIS_MODULE;
+ mux_driver->driver_name = "ts0710mux";
+ mux_driver->name = "mux";
+- mux_driver->devfs_name = "mux";
+ mux_driver->major = TS0710MUX_MAJOR;
+ mux_driver->minor_start = TS0710MUX_MINOR_START;
+ mux_driver->type = TTY_DRIVER_TYPE_SERIAL;
+ mux_driver->subtype = SERIAL_TYPE_NORMAL;
+- mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
++ mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
+
+ mux_driver->init_termios = tty_std_termios;
+ mux_driver->init_termios.c_iflag = 0;
+@@ -3917,10 +3906,10 @@
+ mux_driver->init_termios.c_cflag = B38400 | CS8 | CREAD;
+ mux_driver->init_termios.c_lflag = 0;
+
+-// mux_driver.ttys = mux_table;
++ //mux_driver.ttys = mux_table;
+ mux_driver->termios = mux_termios;
+ mux_driver->termios_locked = mux_termios_locked;
+-// mux_driver.driver_state = mux_state;
++ //mux_driver.driver_state = mux_state;
+ mux_driver->other = NULL;
+
+ mux_driver->open = mux_open;
+Index: linux-2.6.21/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.21.orig/drivers/char/ts0710_mux_usb.c 2007-04-27 20:35:44.000000000 -0300
++++ linux-2.6.21/drivers/char/ts0710_mux_usb.c 2007-04-27 22:34:31.000000000 -0300
+@@ -188,7 +188,8 @@
+ buf_list_t *inbuf;
+ int count = urb->actual_length;
+
+- inbuf = kmalloc(sizeof(buf_list_t), GFP_KERNEL);
++ // we are called from interrupt context.
++ inbuf = kmalloc(sizeof(buf_list_t), GFP_ATOMIC);
+ if (!inbuf) {
+ printk("append_to_inbuf_list: (%d) out of memory!\n",
+ sizeof(buf_list_t));
+@@ -196,7 +197,7 @@
+ }
+
+ inbuf->size = count;
+- inbuf->body = kmalloc(sizeof(char)*count, GFP_KERNEL);
++ inbuf->body = kmalloc(sizeof(char)*count, GFP_ATOMIC);
+ if (!inbuf->body) {
+ kfree(inbuf);
+ printk("append_to_inbuf_list: (%d) out of memory!\n",
+@@ -222,7 +223,7 @@
+ inbuf = list_entry(ptr, buf_list_t, list);
+ src_count = inbuf->size;
+ if (dst_count >= src_count) {
+- memcpy(buf, inbuf->body, src_count);
++ memcpy((unsigned char *)buf, inbuf->body, src_count);
+ ret = src_count;
+ list_del(ptr);
+ kfree(inbuf->body);
+@@ -282,9 +283,8 @@
+ spin_unlock(&bvd_ipc->in_buf_lock);
+ }
+
+-static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
++static void usb_ipc_read_bulk(struct urb *urb)
+ {
+- buf_list_t *inbuf;
+ int count = urb->actual_length;
+ struct tty_struct *tty = &ipcusb_tty;
+
+@@ -319,7 +319,7 @@
+ bvd_dbg("usb_ipc_read_bulk: completed!!!");
+ }
+
+-static void usb_ipc_write_bulk(struct urb *urb, struct pt_regs *regs)
++static void usb_ipc_write_bulk(struct urb *urb)
+ {
+ callback_times++;
+ bvd_ipc->write_finished_flag = 1;
+@@ -437,7 +437,7 @@
+ /*send IN token*/
+ bvd_ipc->readurb_mux.actual_length = 0;
+ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
+- if (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
++ if ((ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC)))
+ printk("ipcusb_xmit_data: usb_submit_urb(read mux bulk)"
+ "failed! status=%d\n", ret);
+ bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
+@@ -447,7 +447,7 @@
+ bvd_ipc->write_finished_flag = 0;
+ //printk("%s: clear write_finished_flag:%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
+ bvd_ipc->writeurb_mux.dev = bvd_ipc->ipc_dev;
+- if (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC))
++ if ((result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC)))
+ warn("ipcusb_xmit_data: funky result! result=%d\n", result);
+
+ bvd_dbg("ipcusb_xmit_data: usb_submit_urb finished! result:%d", result);
+@@ -498,7 +498,7 @@
+ return 0;
+
+ if (*ipcusb_ap_to_bp != NULL)
+- (*ipcusb_ap_to_bp)(buf, count);
++ (*ipcusb_ap_to_bp)((unsigned char *)buf, count);
+
+ bvd_ipc->suspend_flag = 1;
+
+@@ -602,6 +602,7 @@
+ }
+
+ ep_cnt = have_bulk_in_mux = have_bulk_out_mux = 0;
++ readsize = writesize = 0;
+
+ while (ep_cnt < interface->bNumEndpoints) {
+ endpoint = &intf->cur_altsetting->endpoint[ep_cnt].desc;
+@@ -792,6 +793,8 @@
+ bvd_ipc->ipc_dev = NULL;
+ bvd_ipc->xmit.head = bvd_ipc->xmit.tail = 0;
+ bvd_ipc->write_flag = IPC_USB_WRITE_INIT;
++ spin_lock_init(&bvd_ipc->lock);
++ spin_lock_init(&bvd_ipc->in_buf_lock);
+
+ ipcusb_tty_driver.write = usb_ipc_write;
+ ipcusb_tty_driver.chars_in_buffer = usb_ipc_chars_in_buffer;
diff --git a/packages/linux/linux-ezx-2.6.21/mux-remove-flipbuffers.patch b/packages/linux/linux-ezx-2.6.21/mux-remove-flipbuffers.patch
new file mode 100644
index 0000000000..d4781f9fc7
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/mux-remove-flipbuffers.patch
@@ -0,0 +1,269 @@
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 00:52:25.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 00:52:26.000000000 +0100
+@@ -133,6 +133,7 @@
+
+ struct circ_buf xmit; /* write cric bufffer */
+ struct list_head in_buf_list;
++ spinlock_t in_buf_lock;
+ char bulk_in_ep_mux,
+ bulk_out_ep_mux,
+ bulk_in_ep_dsplog;
+@@ -204,9 +205,39 @@
+ return;
+ }
+ memcpy(inbuf->body, (unsigned char*)urb->transfer_buffer, count);
++ spin_lock(&bvd_ipc->in_buf_lock);
+ list_add_tail(&inbuf->list, &bvd_ipc->in_buf_list);
++ spin_unlock(&bvd_ipc->in_buf_lock);
+ }
+
++int get_from_inbuf_list(const unsigned char *buf, int dst_count)
++{
++ int ret = 0;
++ spin_lock(&bvd_ipc->in_buf_lock);
++ if (!(list_empty(&bvd_ipc->in_buf_list))) {
++ int src_count;
++ buf_list_t *inbuf;
++ struct list_head *ptr;
++
++ ptr = bvd_ipc->in_buf_list.next;
++ inbuf = list_entry(ptr, buf_list_t, list);
++ src_count = inbuf->size;
++ if (dst_count >= src_count) {
++ memcpy(buf, inbuf->body, src_count);
++ ret = src_count;
++ list_del(ptr);
++ kfree(inbuf->body);
++ kfree(inbuf);
++ } else {
++ bvd_dbg("get_from_inbuf_list: not enough space in destination buffer");
++ }
++ }
++ spin_unlock(&bvd_ipc->in_buf_lock);
++
++ return ret;
++}
++EXPORT_SYMBOL(get_from_inbuf_list);
++
+ static void ipcusb_timeout(unsigned long data)
+ {
+ struct tty_struct *tty = &ipcusb_tty;
+@@ -214,13 +245,14 @@
+
+ bvd_dbg("ipcusb_timeout***");
+
++ spin_lock(&bvd_ipc->in_buf_lock);
+ while (!(list_empty(&bvd_ipc->in_buf_list))) {
+ int count;
+ buf_list_t *inbuf;
+ struct list_head *ptr = NULL;
+
+ ptr = bvd_ipc->in_buf_list.next;
+- inbuf = list_entry (ptr, buf_list_t, list);
++ inbuf = list_entry(ptr, buf_list_t, list);
+ count = inbuf->size;
+ if (tty_insert_flip_string(tty, inbuf->body, count) >= count) {
+ list_del(ptr);
+@@ -232,10 +264,12 @@
+ break;
+ }
+ }
++ spin_unlock(&bvd_ipc->in_buf_lock);
+
+ if (usb_mux_dispatcher)
+ usb_mux_dispatcher(tty); /**call Liu changhui's func.**/
+
++ spin_lock(&bvd_ipc->in_buf_lock);
+ if (list_empty(&bvd_ipc->in_buf_list)) {
+ urb->actual_length = 0;
+ urb->dev = bvd_ipc->ipc_dev;
+@@ -246,6 +280,7 @@
+ ipcusb_timer.data = (unsigned long)urb;
+ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
+ }
++ spin_unlock(&bvd_ipc->in_buf_lock);
+ }
+
+ static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
+@@ -266,69 +301,11 @@
+ if (count > 0 && ((*ipcusb_bp_to_ap) != NULL))
+ (*ipcusb_bp_to_ap)(urb->transfer_buffer, urb->actual_length);
+
+- if (!(list_empty(&bvd_ipc->in_buf_list))) {
+- int need_mux = 0;
+-
+- bvd_dbg("usb_ipc_read_bulk: some urbs in_buf_list");
+- if (count > 0) {
+- bvd_ipc->suspend_flag = 1;
+- append_to_inbuf_list(urb); /* append the current received urb */
+-#if 0
+- if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
+- {
+- last_jiff = jiffies;
+- queue_apm_event(KRNL_ICL, NULL);
+- }
+-#endif
+- }
+-
+- while (!(list_empty(&bvd_ipc->in_buf_list))) {
+- struct list_head* ptr = NULL;
+- ptr = bvd_ipc->in_buf_list.next;
+- inbuf = list_entry(ptr, buf_list_t, list);
+- count = inbuf->size;
+- need_mux = 1;
+-
+- tty_insert_flip_string(tty, inbuf->body, count);
+-
+- list_del(ptr);
+- kfree(inbuf->body);
+- inbuf->body = NULL;
+- kfree(inbuf);
+- }
+-
+- if (usb_mux_dispatcher && need_mux)
+- usb_mux_dispatcher(tty); /* call Liu changhui's func. */
+-
+- if (list_empty(&bvd_ipc->in_buf_list)) {
+- urb->actual_length = 0;
+- urb->dev = bvd_ipc->ipc_dev;
+- if (usb_submit_urb(urb, GFP_ATOMIC))
+- bvd_dbg("usb_ipc_read_bulk: "
+- "failed resubmitting read urb");
+- bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
+- } else {
+- ipcusb_timer.data = (unsigned long)urb;
+- mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
+- }
+- } else if (count > 0) {
+- bvd_dbg("usb_ipc_read_bulk: no urbs in_buf_list");
++ if (count > 0) {
++ bvd_dbg("usb_ipc_read_bulk: inserting buffer into in_buf_list");
+ bvd_ipc->suspend_flag = 1;
+
+- if (tty_insert_flip_string(tty, urb->transfer_buffer,
+- count) < count) {
+- bvd_ipc->suspend_flag = 1;
+- append_to_inbuf_list(urb);
+- ipcusb_timer.data = (unsigned long)urb;
+- mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
+-#if 0
+- if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
+- {
+- last_jiff = jiffies;
+- queue_apm_event(KRNL_ICL, NULL);
+- }
+-#endif
+- }
++ append_to_inbuf_list(urb);
+
+ if (usb_mux_dispatcher)
+ usb_mux_dispatcher(tty); /* call Liu changhui's func. */
+@@ -337,13 +314,6 @@
+ urb->dev = bvd_ipc->ipc_dev;
+ if (usb_submit_urb(urb, GFP_ATOMIC))
+ bvd_dbg("failed resubmitting read urb");
+-#if 0
+- if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
+- {
+- last_jiff = jiffies;
+- queue_apm_event(KRNL_ICL, NULL);
+- }
+-#endif
+ bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
+ }
+
+@@ -705,7 +675,8 @@
+ bvd_ipc->bulk_out_ep_mux= have_bulk_out_mux;
+ bvd_ipc->ipc_dev = usbdev;
+ bvd_ipc->writesize = writesize;
+- INIT_LIST_HEAD (&bvd_ipc->in_buf_list);
++ INIT_LIST_HEAD(&bvd_ipc->in_buf_list);
++ bvd_ipc->in_buf_lock = SPIN_LOCK_UNLOCKED;
+
+ bvd_ipc->bh.func = usbipc_bh_func;
+ bvd_ipc->bh.data = (unsigned long) bvd_ipc;
+Index: linux-2.6.16/drivers/char/ts0710_mux.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux.c 2007-01-17 00:52:23.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux.c 2007-01-17 00:52:26.000000000 +0100
+@@ -3149,7 +3149,7 @@
+ static void receive_worker(void *private_)
+ {
+ struct tty_struct *tty = COMM_FOR_MUX_TTY;
+- int i, count;
++ int i, count, tbuf_free, tbuf_read;
+ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
+ static unsigned char *tbuf_ptr = &tbuf[0];
+ static unsigned char *start_flag = 0;
+@@ -3167,29 +3167,39 @@
+
+ UNUSED_PARAM(private_);
+
+- if (!tty)
+- return;
++ if (!tty)
++ return;
++
++ while (1) {
++ tbuf_free = TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf);
++ TS0710_PRINTK("Reading max %i bytes from ts0710_mux_usb inbuf.\n", tbuf_free);
++ tbuf_read = get_from_inbuf_list(tbuf_ptr, tbuf_free);
++ if (tbuf_read == 0) {
++ break;
++ } else {
++ TS0710_PRINTK("Read %i bytes.\n", tbuf_read);
++ };
++ tbuf_ptr += tbuf_read;
++ };
++
++ count = (tbuf_ptr - tbuf);
++
++ // Should be impossible?
++ //if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
++ // TS0710_PRINTK
++ // ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
++ // count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
++ //}
+
+ #ifdef USB_FOR_MUX
+- TS0710_DEBUG("Receive following bytes from IPC-USB");
++ TS0710_DEBUG("Received following bytes from IPC-USB");
+ #else
+- TS0710_DEBUG("Receive following bytes from UART");
++ TS0710_DEBUG("Received following bytes from UART");
+ #endif
+-
+- TS0710_DEBUGHEX(cp, count);
+-
+- if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
+- TS0710_PRINTK
+- ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
+- count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
+- }
+-
+- count = tty_buffer_request_room(tty, count);
+-
+- for (i = 0; i < count; i++)
+- tty_insert_flip_char(tty, tbuf_ptr[i], TTY_NORMAL);
+-
+- tbuf_ptr += count;
++ TS0710_DEBUGHEX(tbuf, count);
++
++ //gets updated above
++ //tbuf_ptr += count;
+ search = &tbuf[0];
+
+ if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.h
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.h 2007-01-17 00:52:23.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.h 2007-01-17 00:52:26.000000000 +0100
+@@ -27,3 +27,6 @@
+ extern struct tty_struct *usb_for_mux_tty;
+ extern void (*usb_mux_dispatcher)(struct tty_struct *tty);
+ extern void (*usb_mux_sender)(void);
++
++extern int get_from_inbuf_list(const unsigned char *buf, int dst_count);
++
diff --git a/packages/linux/linux-ezx-2.6.21/mux-remove-get_halted_bit.patch b/packages/linux/linux-ezx-2.6.21/mux-remove-get_halted_bit.patch
new file mode 100644
index 0000000000..0ebe27d03b
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/mux-remove-get_halted_bit.patch
@@ -0,0 +1,22 @@
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 01:06:21.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 01:06:31.000000000 +0100
+@@ -461,7 +461,7 @@
+ ipcusb_xmit_data();
+ }
+
+-extern void get_halted_bit(void);
++//extern void get_halted_bit(void);
+
+ static void usbipc_bh_bp_func(unsigned long param)
+ {
+@@ -472,7 +472,7 @@
+ "UHCRHPS3=0x%x", UHCRHPS3);
+ }
+ if (bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) {
+- get_halted_bit();
++ //get_halted_bit();
+
+ /*send a IN token*/
+ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
diff --git a/packages/linux/linux-ezx-2.6.21/mux-remove-usbh_finished_resume.patch b/packages/linux/linux-ezx-2.6.21/mux-remove-usbh_finished_resume.patch
new file mode 100644
index 0000000000..c415ded428
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/mux-remove-usbh_finished_resume.patch
@@ -0,0 +1,22 @@
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 01:12:23.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 01:12:37.000000000 +0100
+@@ -97,7 +97,6 @@
+ static int sumbit_times = 0;
+ static int callback_times = 0;
+ //static unsigned long last_jiff = 0;
+-extern int usbh_finished_resume;
+ /*end global values defined*/
+
+ MODULE_AUTHOR(DRIVER_AUTHOR);
+@@ -546,9 +545,6 @@
+ void usb_send_readurb(void)
+ {
+ //printk("usb_send_readurb: begining!UHCRHPS3=0x%x, usbh_finished_resume=%d\n", UHCRHPS3, usbh_finished_resume);
+-
+- if (usbh_finished_resume == 0)
+- return;
+
+ tasklet_schedule(&bvd_ipc->bh_bp);
+ }
diff --git a/packages/linux/linux-ezx-2.6.21/mux_cli.patch b/packages/linux/linux-ezx-2.6.21/mux_cli.patch
new file mode 100644
index 0000000000..2964f24fd2
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/mux_cli.patch
@@ -0,0 +1,5395 @@
+Index: linux-2.6.21/drivers/char/Kconfig
+===================================================================
+--- linux-2.6.21.orig/drivers/char/Kconfig 2007-04-26 20:07:19.000000000 +0200
++++ linux-2.6.21/drivers/char/Kconfig 2007-04-26 20:09:29.000000000 +0200
+@@ -1071,5 +1071,17 @@
+ /sys/devices/platform/telco_clock, with a number of files for
+ controlling the behavior of this hardware.
+
++config TS0710_MUX
++ tristate "GSM TS 07.10 Multiplex driver"
++ help
++ This implements the GSM 07.10 multiplex.
++
++config TS0710_MUX_USB
++ tristate "Motorola USB support for TS 07.10 Multiplex driver"
++ depends on TS0710_MUX
++ help
++ This ads support for TS 07.10 over USB, as found in motorola
++ Smartphones.
++
+ endmenu
+
+Index: linux-2.6.21/drivers/char/Makefile
+===================================================================
+--- linux-2.6.21.orig/drivers/char/Makefile 2007-04-26 20:07:19.000000000 +0200
++++ linux-2.6.21/drivers/char/Makefile 2007-04-26 20:09:29.000000000 +0200
+@@ -104,6 +104,9 @@
+ obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o
+ obj-$(CONFIG_TCG_TPM) += tpm/
+
++obj-$(CONFIG_TS0710_MUX) += ts0710_mux.o ts0710_mux_usb.o
++
++
+ # Files generated that shall be removed upon make clean
+ clean-files := consolemap_deftbl.c defkeymap.c
+
+Index: linux-2.6.21/drivers/char/ts0710.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/drivers/char/ts0710.h 2007-04-26 20:09:29.000000000 +0200
+@@ -0,0 +1,368 @@
++/*
++ * File: ts0710.h
++ *
++ * Portions derived from rfcomm.c, original header as follows:
++ *
++ * Copyright (C) 2000, 2001 Axis Communications AB
++ *
++ * Author: Mats Friden <mats.friden@axis.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.
++ *
++ * Exceptionally, Axis Communications AB grants discretionary and
++ * conditional permissions for additional use of the text contained
++ * in the company's release of the AXIS OpenBT Stack under the
++ * provisions set forth hereunder.
++ *
++ * Provided that, if you use the AXIS OpenBT Stack with other files,
++ * that do not implement functionality as specified in the Bluetooth
++ * System specification, to produce an executable, this does not by
++ * itself cause the resulting executable to be covered by the GNU
++ * General Public License. Your use of that executable is in no way
++ * restricted on account of using the AXIS OpenBT Stack code with it.
++ *
++ * This exception does not however invalidate any other reasons why
++ * the executable file might be covered by the provisions of the GNU
++ * General Public License.
++ *
++ */
++/*
++ * Copyright (C) 2002 Motorola
++ *
++ * 07/28/2002 Initial version based on rfcomm.c
++ * 11/18/2002 Modified
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++
++#include <linux/errno.h>
++#include <linux/sched.h>
++#include <linux/interrupt.h>
++#include <linux/tty.h>
++#include <linux/tty_flip.h>
++#include <linux/fcntl.h>
++#include <linux/string.h>
++#include <linux/major.h>
++#include <linux/mm.h>
++#include <linux/init.h>
++#include <linux/devfs_fs_kernel.h>
++
++#include <asm/uaccess.h>
++#include <asm/system.h>
++#include <asm/bitops.h>
++
++#include <asm/byteorder.h>
++#include <asm/types.h>
++
++#define TS0710_MAX_CHN 14
++
++#define SET_PF(ctr) ((ctr) | (1 << 4))
++#define CLR_PF(ctr) ((ctr) & 0xef)
++#define GET_PF(ctr) (((ctr) >> 4) & 0x1)
++
++#define GET_PN_MSG_FRAME_SIZE(pn) ( ((pn)->frame_sizeh << 8) | ((pn)->frame_sizel))
++#define SET_PN_MSG_FRAME_SIZE(pn, size) ({ (pn)->frame_sizel = (size) & 0xff; \
++ (pn)->frame_sizeh = (size) >> 8; })
++
++#define GET_LONG_LENGTH(a) ( ((a).h_len << 7) | ((a).l_len) )
++#define SET_LONG_LENGTH(a, length) ({ (a).ea = 0; \
++ (a).l_len = length & 0x7F; \
++ (a).h_len = (length >> 7) & 0xFF; })
++
++#define SHORT_CRC_CHECK 3
++#define LONG_CRC_CHECK 4
++
++/* FIXME: Should thsi one be define here? */
++#define SHORT_PAYLOAD_SIZE 127
++
++#define EA 1
++#define FCS_SIZE 1
++#define FLAG_SIZE 2
++
++#define TS0710_MAX_HDR_SIZE 5
++#define DEF_TS0710_MTU 256
++
++#define TS0710_BASIC_FLAG 0xF9
++/* the control field */
++#define SABM 0x2f
++#define SABM_SIZE 4
++#define UA 0x63
++#define UA_SIZE 4
++#define DM 0x0f
++#define DISC 0x43
++#define UIH 0xef
++
++/* the type field in a multiplexer command packet */
++#define TEST 0x8
++#define FCON 0x28
++#define FCOFF 0x18
++#define MSC 0x38
++#define RPN 0x24
++#define RLS 0x14
++#define PN 0x20
++#define NSC 0x4
++
++/* V.24 modem control signals */
++#define FC 0x2
++#define RTC 0x4
++#define RTR 0x8
++#define IC 0x40
++#define DV 0x80
++
++#define CTRL_CHAN 0 /* The control channel is defined as DLCI 0 */
++#define MCC_CMD 1 /* Multiplexer command cr */
++#define MCC_RSP 0 /* Multiplexer response cr */
++
++#ifdef __LITTLE_ENDIAN_BITFIELD
++
++typedef struct {
++ __u8 ea:1;
++ __u8 cr:1;
++ __u8 d:1;
++ __u8 server_chn:5;
++} __attribute__ ((packed)) address_field;
++
++typedef struct {
++ __u8 ea:1;
++ __u8 len:7;
++} __attribute__ ((packed)) short_length;
++
++typedef struct {
++ __u8 ea:1;
++ __u8 l_len:7;
++ __u8 h_len;
++} __attribute__ ((packed)) long_length;
++
++typedef struct {
++ address_field addr;
++ __u8 control;
++ short_length length;
++} __attribute__ ((packed)) short_frame_head;
++
++typedef struct {
++ short_frame_head h;
++ __u8 data[0];
++} __attribute__ ((packed)) short_frame;
++
++typedef struct {
++ address_field addr;
++ __u8 control;
++ long_length length;
++ __u8 data[0];
++} __attribute__ ((packed)) long_frame_head;
++
++typedef struct {
++ long_frame_head h;
++ __u8 data[0];
++} __attribute__ ((packed)) long_frame;
++
++/* Typedefinitions for structures used for the multiplexer commands */
++typedef struct {
++ __u8 ea:1;
++ __u8 cr:1;
++ __u8 type:6;
++} __attribute__ ((packed)) mcc_type;
++
++typedef struct {
++ mcc_type type;
++ short_length length;
++ __u8 value[0];
++} __attribute__ ((packed)) mcc_short_frame_head;
++
++typedef struct {
++ mcc_short_frame_head h;
++ __u8 value[0];
++} __attribute__ ((packed)) mcc_short_frame;
++
++typedef struct {
++ mcc_type type;
++ long_length length;
++ __u8 value[0];
++} __attribute__ ((packed)) mcc_long_frame_head;
++
++typedef struct {
++ mcc_long_frame_head h;
++ __u8 value[0];
++} __attribute__ ((packed)) mcc_long_frame;
++
++/* MSC-command */
++typedef struct {
++ __u8 ea:1;
++ __u8 fc:1;
++ __u8 rtc:1;
++ __u8 rtr:1;
++ __u8 reserved:2;
++ __u8 ic:1;
++ __u8 dv:1;
++} __attribute__ ((packed)) v24_sigs;
++
++typedef struct {
++ __u8 ea:1;
++ __u8 b1:1;
++ __u8 b2:1;
++ __u8 b3:1;
++ __u8 len:4;
++} __attribute__ ((packed)) brk_sigs;
++
++typedef struct {
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ address_field dlci;
++ __u8 v24_sigs;
++ //brk_sigs break_signals;
++ __u8 fcs;
++} __attribute__ ((packed)) msc_msg;
++
++#if 0
++/* conflict with termios.h */
++/* RPN command */
++#define B2400 0
++#define B4800 1
++#define B7200 2
++#define B9600 3
++#define B19200 4
++#define B38400 5
++#define B57600 6
++#define B115200 7
++#define D230400 8
++#endif
++
++/*
++typedef struct{
++ __u8 bit_rate:1;
++ __u8 data_bits:1;
++ __u8 stop_bit:1;
++ __u8 parity:1;
++ __u8 parity_type:1;
++ __u8 xon_u8:1;
++ __u8 xoff_u8:1;
++ __u8 res1:1;
++ __u8 xon_input:1;
++ __u8 xon_output:1;
++ __u8 rtr_input:1;
++ __u8 rtr_output:1;
++ __u8 rtc_input:1;
++ __u8 rtc_output:1;
++ __u8 res2:2;
++} __attribute__((packed)) parameter_mask;
++
++typedef struct{
++ __u8 bit_rate;
++ __u8 data_bits:2;
++ __u8 stop_bit:1;
++ __u8 parity:1;
++ __u8 parity_type:2;
++ __u8 res1:2;
++ __u8 xon_input:1;
++ __u8 xon_output:1;
++ __u8 rtr_input:1;
++ __u8 rtr_output:1;
++ __u8 rtc_input:1;
++ __u8 rtc_output:1;
++ __u8 res2:2;
++ __u8 xon_u8;
++ __u8 xoff_u8;
++ parameter_mask pm;
++} __attribute__((packed)) rpn_values;
++
++typedef struct{
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ address_field dlci;
++ rpn_values rpn_val;
++ __u8 fcs;
++} __attribute__((packed)) rpn_msg;
++*/
++
++/* RLS-command */
++/*
++typedef struct{
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ address_field dlci;
++ __u8 error:4;
++ __u8 res:4;
++ __u8 fcs;
++} __attribute__((packed)) rls_msg;
++*/
++
++/* PN-command */
++typedef struct {
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ __u8 dlci:6;
++ __u8 res1:2;
++ __u8 frame_type:4;
++ __u8 credit_flow:4;
++ __u8 prior:6;
++ __u8 res2:2;
++ __u8 ack_timer;
++ __u8 frame_sizel;
++ __u8 frame_sizeh;
++ __u8 max_nbrof_retrans;
++ __u8 credits;
++ __u8 fcs;
++} __attribute__ ((packed)) pn_msg;
++
++/* NSC-command */
++typedef struct {
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ mcc_type command_type;
++ __u8 fcs;
++} __attribute__ ((packed)) nsc_msg;
++
++#else
++#error Only littel-endianess supported now!
++#endif
++
++enum {
++ REJECTED = 0,
++ DISCONNECTED,
++ CONNECTING,
++ NEGOTIATING,
++ CONNECTED,
++ DISCONNECTING,
++ FLOW_STOPPED
++};
++
++enum ts0710_events {
++ CONNECT_IND,
++ CONNECT_CFM,
++ DISCONN_CFM
++};
++
++typedef struct {
++ volatile __u8 state;
++ volatile __u8 flow_control;
++ volatile __u8 initiated;
++ volatile __u8 initiator;
++ volatile __u16 mtu;
++ wait_queue_head_t open_wait;
++ wait_queue_head_t close_wait;
++} dlci_struct;
++
++/* user space interfaces */
++typedef struct {
++ volatile __u8 initiator;
++ volatile __u8 c_dlci;
++ volatile __u16 mtu;
++ volatile __u8 be_testing;
++ volatile __u32 test_errs;
++ wait_queue_head_t test_wait;
++
++ dlci_struct dlci[TS0710_MAX_CHN];
++} ts0710_con;
+Index: linux-2.6.21/drivers/char/ts0710_mux.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/drivers/char/ts0710_mux.c 2007-04-26 20:09:29.000000000 +0200
+@@ -0,0 +1,3966 @@
++/*
++ * File: mux_driver.c
++ *
++ * Portions derived from rfcomm.c, original header as follows:
++ *
++ * Copyright (C) 2000, 2001 Axis Communications AB
++ *
++ * Author: Mats Friden <mats.friden@axis.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.
++ *
++ * Exceptionally, Axis Communications AB grants discretionary and
++ * conditional permissions for additional use of the text contained
++ * in the company's release of the AXIS OpenBT Stack under the
++ * provisions set forth hereunder.
++ *
++ * Provided that, if you use the AXIS OpenBT Stack with other files,
++ * that do not implement functionality as specified in the Bluetooth
++ * System specification, to produce an executable, this does not by
++ * itself cause the resulting executable to be covered by the GNU
++ * General Public License. Your use of that executable is in no way
++ * restricted on account of using the AXIS OpenBT Stack code with it.
++ *
++ * This exception does not however invalidate any other reasons why
++ * the executable file might be covered by the provisions of the GNU
++ * General Public License.
++ *
++ */
++/*
++ * Copyright (C) 2002-2004 Motorola
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ *
++ * 07/28/2002 Initial version
++ * 11/18/2002 Second version
++ * 04/21/2004 Add GPRS PROC
++ */
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/types.h>
++
++#include <linux/kernel.h>
++#include <linux/proc_fs.h>
++
++#define USB_FOR_MUX
++
++#ifndef USB_FOR_MUX
++#include <linux/serial.h>
++#endif
++
++#include <linux/errno.h>
++#include <linux/sched.h>
++#include <linux/interrupt.h>
++#include <linux/tty.h>
++#include <linux/tty_flip.h>
++#include <linux/fcntl.h>
++#include <linux/string.h>
++#include <linux/major.h>
++#include <linux/mm.h>
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/devfs_fs_kernel.h>
++//#include <syslog.h>
++
++#include <asm/uaccess.h>
++#include <asm/system.h>
++#include <asm/bitops.h>
++
++#ifdef USB_FOR_MUX
++//#include <linux/usb.h>
++#include "ts0710_mux_usb.h"
++#endif
++
++#include "ts0710.h"
++#include "ts0710_mux.h"
++
++#define TS0710MUX_GPRS_SESSION_MAX 2
++#define TS0710MUX_MAJOR 250
++#define TS0710MUX_MINOR_START 0
++#define NR_MUXS 16
++
++ /*#define TS0710MUX_TIME_OUT 30 *//* 300ms */
++#define TS0710MUX_TIME_OUT 250 /* 2500ms, for BP UART hardware flow control AP UART */
++
++#define TS0710MUX_IO_DLCI_FC_ON 0x54F2
++#define TS0710MUX_IO_DLCI_FC_OFF 0x54F3
++#define TS0710MUX_IO_FC_ON 0x54F4
++#define TS0710MUX_IO_FC_OFF 0x54F5
++
++#define TS0710MUX_MAX_BUF_SIZE 2048
++
++#define TS0710MUX_SEND_BUF_OFFSET 10
++#define TS0710MUX_SEND_BUF_SIZE (DEF_TS0710_MTU + TS0710MUX_SEND_BUF_OFFSET + 34)
++#define TS0710MUX_RECV_BUF_SIZE TS0710MUX_SEND_BUF_SIZE
++
++/*For BP UART problem Begin*/
++#ifdef TS0710SEQ2
++#define ACK_SPACE 66 /* 6 * 11(ACK frame size) */
++#else
++#define ACK_SPACE 42 /* 6 * 7(ACK frame size) */
++#endif
++/*For BP UART problem End*/
++
++ /*#define TS0710MUX_SERIAL_BUF_SIZE (DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE)*//* For BP UART problem */
++#define TS0710MUX_SERIAL_BUF_SIZE (DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE + ACK_SPACE) /* For BP UART problem: ACK_SPACE */
++
++#define TS0710MUX_MAX_TOTAL_FRAME_SIZE (DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE + FLAG_SIZE)
++#define TS0710MUX_MAX_CHARS_IN_BUF 65535
++#define TS0710MUX_THROTTLE_THRESHOLD DEF_TS0710_MTU
++
++#define TEST_PATTERN_SIZE 250
++
++#define CMDTAG 0x55
++#define DATATAG 0xAA
++
++#define ACK 0x4F /*For BP UART problem */
++
++/*For BP UART problem Begin*/
++#ifdef TS0710SEQ2
++#define FIRST_BP_SEQ_OFFSET 1 /*offset from start flag */
++#define SECOND_BP_SEQ_OFFSET 2 /*offset from start flag */
++#define FIRST_AP_SEQ_OFFSET 3 /*offset from start flag */
++#define SECOND_AP_SEQ_OFFSET 4 /*offset from start flag */
++#define SLIDE_BP_SEQ_OFFSET 5 /*offset from start flag */
++#define SEQ_FIELD_SIZE 5
++#else
++#define SLIDE_BP_SEQ_OFFSET 1 /*offset from start flag */
++#define SEQ_FIELD_SIZE 1
++#endif
++
++#define ADDRESS_FIELD_OFFSET (1 + SEQ_FIELD_SIZE) /*offset from start flag */
++/*For BP UART problem End*/
++
++#ifndef UNUSED_PARAM
++#define UNUSED_PARAM(v) (void)(v)
++#endif
++
++#define TS0710MUX_GPRS1_DLCI 7
++#define TS0710MUX_GPRS2_DLCI 8
++
++#define TS0710MUX_GPRS1_RECV_COUNT_IDX 0
++#define TS0710MUX_GPRS1_SEND_COUNT_IDX 1
++#define TS0710MUX_GPRS2_RECV_COUNT_IDX 2
++#define TS0710MUX_GPRS2_SEND_COUNT_IDX 3
++#define TS0710MUX_COUNT_MAX_IDX 3
++#define TS0710MUX_COUNT_IDX_NUM (TS0710MUX_COUNT_MAX_IDX + 1)
++
++static volatile int mux_data_count[TS0710MUX_COUNT_IDX_NUM] = { 0, 0, 0, 0 };
++static volatile int mux_data_count2[TS0710MUX_COUNT_IDX_NUM] = { 0, 0, 0, 0 };
++static struct semaphore mux_data_count_mutex[TS0710MUX_COUNT_IDX_NUM];
++static volatile __u8 post_recv_count_flag = 0;
++
++/*PROC file*/
++struct proc_dir_entry *gprs_proc_file = NULL;
++ssize_t file_proc_read(struct file *file, char *buf, size_t size,
++ loff_t * ppos);
++ssize_t file_proc_write(struct file *file, const char *buf, size_t count,
++ loff_t * ppos);
++struct file_operations file_proc_operations = {
++ read:file_proc_read,
++ write:file_proc_write,
++};
++typedef struct {
++ int recvBytes;
++ int sentBytes;
++} gprs_bytes;
++
++static __u8 tty2dlci[NR_MUXS] =
++ { 1, 2, 3, 4, 5, 6, 7, 8, 6, 7, 8, 9, 10, 11, 12, 13 };
++static __u8 iscmdtty[NR_MUXS] =
++ { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 };
++typedef struct {
++ __u8 cmdtty;
++ __u8 datatty;
++} dlci_tty;
++static dlci_tty dlci2tty[] = { {0, 0}, /* DLCI 0 */
++{0, 0}, /* DLCI 1 */
++{1, 1}, /* DLCI 2 */
++{2, 2}, /* DLCI 3 */
++{3, 3}, /* DLCI 4 */
++{4, 4}, /* DLCI 5 */
++{5, 8}, /* DLCI 6 */
++{6, 9}, /* DLCI 7 */
++{7, 10}, /* DLCI 8 */
++{11, 11}, /* DLCI 9 */
++{12, 12}, /* DLCI 10 */
++{13, 13}, /* DLCI 11 */
++{14, 14}, /* DLCI 12 */
++{15, 15}
++}; /* DLCI 13 */
++
++typedef struct {
++ volatile __u8 buf[TS0710MUX_SEND_BUF_SIZE];
++ volatile __u8 *frame;
++ unsigned long flags;
++ volatile __u16 length;
++ volatile __u8 filled;
++ volatile __u8 dummy; /* Allignment to 4*n bytes */
++} mux_send_struct;
++
++/* Bit number in flags of mux_send_struct */
++#define BUF_BUSY 0
++
++struct mux_recv_packet_tag {
++ __u8 *data;
++ __u32 length;
++ struct mux_recv_packet_tag *next;
++};
++typedef struct mux_recv_packet_tag mux_recv_packet;
++
++struct mux_recv_struct_tag {
++ __u8 data[TS0710MUX_RECV_BUF_SIZE];
++ __u32 length;
++ __u32 total;
++ mux_recv_packet *mux_packet;
++ struct mux_recv_struct_tag *next;
++ int no_tty;
++ volatile __u8 post_unthrottle;
++};
++typedef struct mux_recv_struct_tag mux_recv_struct;
++
++#define RECV_RUNNING 0
++static unsigned long mux_recv_flags = 0;
++
++static mux_send_struct *mux_send_info[NR_MUXS];
++static volatile __u8 mux_send_info_flags[NR_MUXS];
++static volatile __u8 mux_send_info_idx = NR_MUXS;
++
++static mux_recv_struct *mux_recv_info[NR_MUXS];
++static volatile __u8 mux_recv_info_flags[NR_MUXS];
++static mux_recv_struct *mux_recv_queue = NULL;
++
++static struct tty_driver mux_driver;
++
++#ifdef USB_FOR_MUX
++#define COMM_FOR_MUX_DRIVER usb_for_mux_driver
++#define COMM_FOR_MUX_TTY usb_for_mux_tty
++#define COMM_MUX_DISPATCHER usb_mux_dispatcher
++#define COMM_MUX_SENDER usb_mux_sender
++#else
++#define COMM_FOR_MUX_DRIVER serial_for_mux_driver
++#define COMM_FOR_MUX_TTY serial_for_mux_tty
++#define COMM_MUX_DISPATCHER serial_mux_dispatcher
++#define COMM_MUX_SENDER serial_mux_sender
++
++extern struct list_head *tq_serial_for_mux;
++#endif
++
++extern struct tty_driver *COMM_FOR_MUX_DRIVER;
++extern struct tty_struct *COMM_FOR_MUX_TTY;
++extern void (*COMM_MUX_DISPATCHER) (struct tty_struct * tty);
++extern void (*COMM_MUX_SENDER) (void);
++
++static struct work_struct send_tqueue;
++static struct work_struct receive_tqueue;
++static struct work_struct post_recv_tqueue;
++
++static struct tty_struct *mux_table[NR_MUXS];
++static struct termios *mux_termios[NR_MUXS];
++static struct termios *mux_termios_locked[NR_MUXS];
++static volatile short int mux_tty[NR_MUXS];
++
++#ifdef min
++#undef min
++#define min(a,b) ( (a)<(b) ? (a):(b) )
++#endif
++
++static int get_count(__u8 idx);
++static int set_count(__u8 idx, int count);
++static int add_count(__u8 idx, int count);
++
++static int send_ua(ts0710_con * ts0710, __u8 dlci);
++static int send_dm(ts0710_con * ts0710, __u8 dlci);
++static int send_sabm(ts0710_con * ts0710, __u8 dlci);
++static int send_disc(ts0710_con * ts0710, __u8 dlci);
++static void queue_uih(mux_send_struct * send_info, __u16 len,
++ ts0710_con * ts0710, __u8 dlci);
++static int send_pn_msg(ts0710_con * ts0710, __u8 prior, __u32 frame_size,
++ __u8 credit_flow, __u8 credits, __u8 dlci, __u8 cr);
++static int send_nsc_msg(ts0710_con * ts0710, mcc_type cmd, __u8 cr);
++static void set_uih_hdr(short_frame * uih_pkt, __u8 dlci, __u32 len, __u8 cr);
++
++static __u32 crc_check(__u8 * data, __u32 length, __u8 check_sum);
++static __u8 crc_calc(__u8 * data, __u32 length);
++static void create_crctable(__u8 table[]);
++
++static void mux_sched_send(void);
++
++static __u8 crctable[256];
++
++static ts0710_con ts0710_connection;
++/*
++static rpn_values rpn_val;
++*/
++
++static int valid_dlci(__u8 dlci)
++{
++ if ((dlci < TS0710_MAX_CHN) && (dlci > 0))
++ return 1;
++ else
++ return 0;
++}
++
++#ifdef TS0710DEBUG
++
++#ifdef PRINT_OUTPUT_PRINTK
++#define TS0710_DEBUG(fmt, arg...) printk(KERN_INFO "MUX " __FUNCTION__ ": " fmt "\n" , ## arg)
++#else
++#include "ezxlog.h"
++static __u8 strDebug[256];
++#define TS0710_DEBUG(fmt, arg...) ({ snprintf(strDebug, sizeof(strDebug), "MUX " __FUNCTION__ ": " fmt "\n" , ## arg); \
++ /*printk("%s", strDebug)*/ezxlogk("MX", strDebug, strlen(strDebug)); })
++#endif /* End #ifdef PRINT_OUTPUT_PRINTK */
++
++#else
++#define TS0710_DEBUG(fmt...)
++#endif /* End #ifdef TS0710DEBUG */
++
++#ifdef TS0710LOG
++static unsigned char g_tbuf[TS0710MUX_MAX_BUF_SIZE];
++#ifdef PRINT_OUTPUT_PRINTK
++#define TS0710_LOG(fmt, arg...) printk(fmt, ## arg)
++#define TS0710_PRINTK(fmt, arg...) printk(fmt, ## arg)
++#else
++#include "ezxlog.h"
++static __u8 strLog[256];
++#define TS0710_LOG(fmt, arg...) ({ snprintf(strLog, sizeof(strLog), fmt, ## arg); \
++ /*printk("%s", strLog)*/ezxlogk("MX", strLog, strlen(strLog)); })
++#define TS0710_PRINTK(fmt, arg...) ({ printk(fmt, ## arg); \
++ TS0710_LOG(fmt, ## arg); })
++#endif /* End #ifdef PRINT_OUTPUT_PRINTK */
++
++#else
++#define TS0710_LOG(fmt...)
++#define TS0710_PRINTK(fmt, arg...) printk(fmt, ## arg)
++#endif /* End #ifdef TS0710LOG */
++
++#ifdef TS0710DEBUG
++static void TS0710_DEBUGHEX(__u8 * buf, int len)
++{
++ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
++
++ int i;
++ int c;
++
++ if (len <= 0) {
++ return;
++ }
++
++ c = 0;
++ for (i = 0; (i < len) && (c < (TS0710MUX_MAX_BUF_SIZE - 3)); i++) {
++ sprintf(&tbuf[c], "%02x ", buf[i]);
++ c += 3;
++ }
++ tbuf[c] = 0;
++
++#ifdef PRINT_OUTPUT_PRINTK
++ TS0710_DEBUG("%s", tbuf);
++#else
++ /*printk("%s\n", tbuf) */ ezxlogk("MX", tbuf, c);
++#endif
++}
++static void TS0710_DEBUGSTR(__u8 * buf, int len)
++{
++ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
++
++ if (len <= 0) {
++ return;
++ }
++
++ if (len > (TS0710MUX_MAX_BUF_SIZE - 1)) {
++ len = (TS0710MUX_MAX_BUF_SIZE - 1);
++ }
++
++ memcpy(tbuf, buf, len);
++ tbuf[len] = 0;
++
++#ifdef PRINT_OUTPUT_PRINTK
++ /* 0x00 byte in the string pointed by tbuf may truncate the print result */
++ TS0710_DEBUG("%s", tbuf);
++#else
++ /*printk("%s\n", tbuf) */ ezxlogk("MX", tbuf, len);
++#endif
++}
++#else
++#define TS0710_DEBUGHEX(buf, len)
++#define TS0710_DEBUGSTR(buf, len)
++#endif /* End #ifdef TS0710DEBUG */
++
++#ifdef TS0710LOG
++static void TS0710_LOGSTR_FRAME(__u8 send, __u8 * data, int len)
++{
++ short_frame *short_pkt;
++ long_frame *long_pkt;
++ __u8 *uih_data_start;
++ __u32 uih_len;
++ __u8 dlci;
++ int pos;
++
++ if (len <= 0) {
++ return;
++ }
++
++ pos = 0;
++ if (send) {
++ pos += sprintf(&g_tbuf[pos], "<");
++ short_pkt = (short_frame *) (data + 1); /*For BP UART problem */
++ } else {
++ /*For BP UART problem */
++ /*pos += sprintf(&g_tbuf[pos], ">"); */
++ pos += sprintf(&g_tbuf[pos], ">%d ", *(data + SLIDE_BP_SEQ_OFFSET)); /*For BP UART problem */
++
++#ifdef TS0710SEQ2
++ pos += sprintf(&g_tbuf[pos], "%02x %02x %02x %02x ", *(data + FIRST_BP_SEQ_OFFSET), *(data + SECOND_BP_SEQ_OFFSET), *(data + FIRST_AP_SEQ_OFFSET), *(data + SECOND_AP_SEQ_OFFSET)); /*For BP UART problem */
++#endif
++
++ short_pkt = (short_frame *) (data + ADDRESS_FIELD_OFFSET); /*For BP UART problem */
++ }
++
++ /*For BP UART problem */
++ /*short_pkt = (short_frame *)(data + 1); */
++
++ dlci = short_pkt->h.addr.server_chn << 1 | short_pkt->h.addr.d;
++ switch (CLR_PF(short_pkt->h.control)) {
++ case SABM:
++ pos += sprintf(&g_tbuf[pos], "C SABM %d ::", dlci);
++ break;
++ case UA:
++ pos += sprintf(&g_tbuf[pos], "C UA %d ::", dlci);
++ break;
++ case DM:
++ pos += sprintf(&g_tbuf[pos], "C DM %d ::", dlci);
++ break;
++ case DISC:
++ pos += sprintf(&g_tbuf[pos], "C DISC %d ::", dlci);
++ break;
++
++ /*For BP UART problem Begin */
++ case ACK:
++ pos += sprintf(&g_tbuf[pos], "C ACK %d ", short_pkt->data[0]);
++
++#ifdef TS0710SEQ2
++ pos += sprintf(&g_tbuf[pos], "%02x %02x %02x %02x ", short_pkt->data[1], short_pkt->data[2], short_pkt->data[3], short_pkt->data[4]); /*For BP UART problem */
++#endif
++
++ pos += sprintf(&g_tbuf[pos], "::");
++ break;
++ /*For BP UART problem End */
++
++ case UIH:
++ if (!dlci) {
++ pos += sprintf(&g_tbuf[pos], "C MCC %d ::", dlci);
++ } else {
++
++ if ((short_pkt->h.length.ea) == 0) {
++ long_pkt = (long_frame *) short_pkt;
++ uih_len = GET_LONG_LENGTH(long_pkt->h.length);
++ uih_data_start = long_pkt->h.data;
++ } else {
++ uih_len = short_pkt->h.length.len;
++ uih_data_start = short_pkt->data;
++ }
++ switch (*uih_data_start) {
++ case CMDTAG:
++ pos +=
++ sprintf(&g_tbuf[pos], "I %d A %d ::", dlci,
++ uih_len);
++ break;
++ case DATATAG:
++ default:
++ pos +=
++ sprintf(&g_tbuf[pos], "I %d D %d ::", dlci,
++ uih_len);
++ break;
++ }
++
++ }
++ break;
++ default:
++ pos += sprintf(&g_tbuf[pos], "N!!! %d ::", dlci);
++ break;
++ }
++
++ if (len > (sizeof(g_tbuf) - pos - 1)) {
++ len = (sizeof(g_tbuf) - pos - 1);
++ }
++
++ memcpy(&g_tbuf[pos], data, len);
++ pos += len;
++ g_tbuf[pos] = 0;
++
++#ifdef PRINT_OUTPUT_PRINTK
++ /* 0x00 byte in the string pointed by g_tbuf may truncate the print result */
++ TS0710_LOG("%s\n", g_tbuf);
++#else
++ /*printk("%s\n", g_tbuf) */ ezxlogk("MX", g_tbuf, pos);
++#endif
++}
++#else
++#define TS0710_LOGSTR_FRAME(send, data, len)
++#endif
++
++#ifdef TS0710SIG
++#define my_for_each_task(p) \
++ for ((p) = current; ((p) = (p)->next_task) != current; )
++
++static void TS0710_SIG2APLOGD(void)
++{
++ struct task_struct *p;
++ static __u8 sig = 0;
++
++ if (sig) {
++ return;
++ }
++
++ read_lock(&tasklist_lock);
++ my_for_each_task(p) {
++ if (strncmp(p->comm, "aplogd", 6) == 0) {
++ sig = 1;
++ if (send_sig(SIGUSR2, p, 1) == 0) {
++ TS0710_PRINTK
++ ("MUX: success to send SIGUSR2 to aplogd!\n");
++ } else {
++ TS0710_PRINTK
++ ("MUX: failure to send SIGUSR2 to aplogd!\n");
++ }
++ break;
++ }
++ }
++ read_unlock(&tasklist_lock);
++
++ if (!sig) {
++ TS0710_PRINTK("MUX: not found aplogd!\n");
++ }
++}
++#else
++#define TS0710_SIG2APLOGD()
++#endif
++
++static int basic_write(ts0710_con * ts0710, __u8 * buf, int len)
++{
++ int res;
++
++ UNUSED_PARAM(ts0710);
++
++ buf[0] = TS0710_BASIC_FLAG;
++ buf[len + 1] = TS0710_BASIC_FLAG;
++
++ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
++ TS0710_PRINTK
++ ("MUX basic_write: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n");
++
++#ifndef USB_FOR_MUX
++ TS0710_PRINTK
++ ("MUX basic_write: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n");
++ TS0710_SIG2APLOGD();
++#endif
++
++ return -1;
++ }
++
++ TS0710_LOGSTR_FRAME(1, buf, len + 2);
++ TS0710_DEBUGHEX(buf, len + 2);
++
++ res = COMM_FOR_MUX_DRIVER->write(COMM_FOR_MUX_TTY, buf, len + 2);
++
++ if (res != len + 2) {
++ TS0710_PRINTK("MUX basic_write: Write Error!\n");
++ return -1;
++ }
++
++ return len + 2;
++}
++
++/* Functions for the crc-check and calculation */
++
++#define CRC_VALID 0xcf
++
++static __u32 crc_check(__u8 * data, __u32 length, __u8 check_sum)
++{
++ __u8 fcs = 0xff;
++
++ while (length--) {
++ fcs = crctable[fcs ^ *data++];
++ }
++ fcs = crctable[fcs ^ check_sum];
++ TS0710_DEBUG("fcs : %d\n", fcs);
++ if (fcs == (uint) 0xcf) { /*CRC_VALID) */
++ TS0710_DEBUG("crc_check: CRC check OK\n");
++ return 0;
++ } else {
++ TS0710_PRINTK("MUX crc_check: CRC check failed\n");
++ return 1;
++ }
++}
++
++/* Calculates the checksum according to the ts0710 specification */
++
++static __u8 crc_calc(__u8 * data, __u32 length)
++{
++ __u8 fcs = 0xff;
++
++ while (length--) {
++ fcs = crctable[fcs ^ *data++];
++ }
++
++ return 0xff - fcs;
++}
++
++/* Calulates a reversed CRC table for the FCS check */
++
++static void create_crctable(__u8 table[])
++{
++ int i, j;
++
++ __u8 data;
++ __u8 code_word = (__u8) 0xe0;
++ __u8 sr = (__u8) 0;
++
++ for (j = 0; j < 256; j++) {
++ data = (__u8) j;
++
++ for (i = 0; i < 8; i++) {
++ if ((data & 0x1) ^ (sr & 0x1)) {
++ sr >>= 1;
++ sr ^= code_word;
++ } else {
++ sr >>= 1;
++ }
++
++ data >>= 1;
++ sr &= 0xff;
++ }
++
++ table[j] = sr;
++ sr = 0;
++ }
++}
++
++static void ts0710_reset_dlci(__u8 j)
++{
++ if (j >= TS0710_MAX_CHN)
++ return;
++
++ ts0710_connection.dlci[j].state = DISCONNECTED;
++ ts0710_connection.dlci[j].flow_control = 0;
++ ts0710_connection.dlci[j].mtu = DEF_TS0710_MTU;
++ ts0710_connection.dlci[j].initiated = 0;
++ ts0710_connection.dlci[j].initiator = 0;
++ init_waitqueue_head(&ts0710_connection.dlci[j].open_wait);
++ init_waitqueue_head(&ts0710_connection.dlci[j].close_wait);
++}
++
++static void ts0710_reset_con(void)
++{
++ __u8 j;
++
++ ts0710_connection.initiator = 0;
++ ts0710_connection.mtu = DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE;
++ ts0710_connection.be_testing = 0;
++ ts0710_connection.test_errs = 0;
++ init_waitqueue_head(&ts0710_connection.test_wait);
++
++ for (j = 0; j < TS0710_MAX_CHN; j++) {
++ ts0710_reset_dlci(j);
++ }
++}
++
++static void ts0710_init(void)
++{
++ create_crctable(crctable);
++
++ ts0710_reset_con();
++
++ /* Set the values in the rpn octets */
++/*
++ rpn_val.bit_rate = 7;
++ rpn_val.data_bits = 3;
++ rpn_val.stop_bit = 0;
++ rpn_val.parity = 0;
++ rpn_val.parity_type = 0;
++ rpn_val.res1 = 0;
++ rpn_val.xon_input = 0;
++ rpn_val.xon_output = 0;
++ rpn_val.rtr_input = 0;
++ rpn_val.rtr_output = 0;
++ rpn_val.rtc_input = 0;
++ rpn_val.rtc_output = 0;
++ rpn_val.res2 = 0;
++ rpn_val.xon_u8 = 0x11;
++ rpn_val.xoff_u8 = 0x13;
++ memset(&rpn_val.pm, 0 , 2); *//* Set the mask to zero */
++}
++
++static void ts0710_upon_disconnect(void)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ __u8 j;
++
++ for (j = 0; j < TS0710_MAX_CHN; j++) {
++ ts0710->dlci[j].state = DISCONNECTED;
++ wake_up_interruptible(&ts0710->dlci[j].open_wait);
++ wake_up_interruptible(&ts0710->dlci[j].close_wait);
++ }
++ ts0710->be_testing = 0;
++ wake_up_interruptible(&ts0710->test_wait);
++ ts0710_reset_con();
++}
++
++/* Sending packet functions */
++
++/* Creates a UA packet and puts it at the beginning of the pkt pointer */
++
++static int send_ua(ts0710_con * ts0710, __u8 dlci)
++{
++ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
++ short_frame *ua;
++
++ TS0710_DEBUG("send_ua: Creating UA packet to DLCI %d\n", dlci);
++
++ ua = (short_frame *) (buf + 1);
++ ua->h.addr.ea = 1;
++ ua->h.addr.cr = ((~(ts0710->initiator)) & 0x1);
++ ua->h.addr.d = (dlci) & 0x1;
++ ua->h.addr.server_chn = (dlci) >> 0x1;
++ ua->h.control = SET_PF(UA);
++ ua->h.length.ea = 1;
++ ua->h.length.len = 0;
++ ua->data[0] = crc_calc((__u8 *) ua, SHORT_CRC_CHECK);
++
++ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
++}
++
++/* Creates a DM packet and puts it at the beginning of the pkt pointer */
++
++static int send_dm(ts0710_con * ts0710, __u8 dlci)
++{
++ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
++ short_frame *dm;
++
++ TS0710_DEBUG("send_dm: Creating DM packet to DLCI %d\n", dlci);
++
++ dm = (short_frame *) (buf + 1);
++ dm->h.addr.ea = 1;
++ dm->h.addr.cr = ((~(ts0710->initiator)) & 0x1);
++ dm->h.addr.d = dlci & 0x1;
++ dm->h.addr.server_chn = dlci >> 0x1;
++ dm->h.control = SET_PF(DM);
++ dm->h.length.ea = 1;
++ dm->h.length.len = 0;
++ dm->data[0] = crc_calc((__u8 *) dm, SHORT_CRC_CHECK);
++
++ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
++}
++
++static int send_sabm(ts0710_con * ts0710, __u8 dlci)
++{
++ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
++ short_frame *sabm;
++
++ TS0710_DEBUG("send_sabm: Creating SABM packet to DLCI %d\n", dlci);
++
++ sabm = (short_frame *) (buf + 1);
++ sabm->h.addr.ea = 1;
++ sabm->h.addr.cr = ((ts0710->initiator) & 0x1);
++ sabm->h.addr.d = dlci & 0x1;
++ sabm->h.addr.server_chn = dlci >> 0x1;
++ sabm->h.control = SET_PF(SABM);
++ sabm->h.length.ea = 1;
++ sabm->h.length.len = 0;
++ sabm->data[0] = crc_calc((__u8 *) sabm, SHORT_CRC_CHECK);
++
++ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
++}
++
++static int send_disc(ts0710_con * ts0710, __u8 dlci)
++{
++ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
++ short_frame *disc;
++
++ TS0710_DEBUG("send_disc: Creating DISC packet to DLCI %d\n", dlci);
++
++ disc = (short_frame *) (buf + 1);
++ disc->h.addr.ea = 1;
++ disc->h.addr.cr = ((ts0710->initiator) & 0x1);
++ disc->h.addr.d = dlci & 0x1;
++ disc->h.addr.server_chn = dlci >> 0x1;
++ disc->h.control = SET_PF(DISC);
++ disc->h.length.ea = 1;
++ disc->h.length.len = 0;
++ disc->data[0] = crc_calc((__u8 *) disc, SHORT_CRC_CHECK);
++
++ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
++}
++
++static void queue_uih(mux_send_struct * send_info, __u16 len,
++ ts0710_con * ts0710, __u8 dlci)
++{
++ __u32 size;
++
++ TS0710_DEBUG
++ ("queue_uih: Creating UIH packet with %d bytes data to DLCI %d\n",
++ len, dlci);
++
++ if (len > SHORT_PAYLOAD_SIZE) {
++ long_frame *l_pkt;
++
++ size = sizeof(long_frame) + len + FCS_SIZE;
++ l_pkt = (long_frame *) (send_info->frame - sizeof(long_frame));
++ set_uih_hdr((void *)l_pkt, dlci, len, ts0710->initiator);
++ l_pkt->data[len] = crc_calc((__u8 *) l_pkt, LONG_CRC_CHECK);
++ send_info->frame = ((__u8 *) l_pkt) - 1;
++ } else {
++ short_frame *s_pkt;
++
++ size = sizeof(short_frame) + len + FCS_SIZE;
++ s_pkt =
++ (short_frame *) (send_info->frame - sizeof(short_frame));
++ set_uih_hdr((void *)s_pkt, dlci, len, ts0710->initiator);
++ s_pkt->data[len] = crc_calc((__u8 *) s_pkt, SHORT_CRC_CHECK);
++ send_info->frame = ((__u8 *) s_pkt) - 1;
++ }
++ send_info->length = size;
++}
++
++/* Multiplexer command packets functions */
++
++/* Turns on the ts0710 flow control */
++
++static int ts0710_fcon_msg(ts0710_con * ts0710, __u8 cr)
++{
++ __u8 buf[30];
++ mcc_short_frame *mcc_pkt;
++ short_frame *uih_pkt;
++ __u32 size;
++
++ size = sizeof(short_frame) + sizeof(mcc_short_frame) + FCS_SIZE;
++ uih_pkt = (short_frame *) (buf + 1);
++ set_uih_hdr(uih_pkt, CTRL_CHAN, sizeof(mcc_short_frame),
++ ts0710->initiator);
++ uih_pkt->data[sizeof(mcc_short_frame)] =
++ crc_calc((__u8 *) uih_pkt, SHORT_CRC_CHECK);
++ mcc_pkt = (mcc_short_frame *) (uih_pkt->data);
++
++ mcc_pkt->h.type.ea = EA;
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = FCON;
++ mcc_pkt->h.length.ea = EA;
++ mcc_pkt->h.length.len = 0;
++
++ return basic_write(ts0710, buf, size);
++}
++
++/* Turns off the ts0710 flow control */
++
++static int ts0710_fcoff_msg(ts0710_con * ts0710, __u8 cr)
++{
++ __u8 buf[30];
++ mcc_short_frame *mcc_pkt;
++ short_frame *uih_pkt;
++ __u32 size;
++
++ size = (sizeof(short_frame) + sizeof(mcc_short_frame) + FCS_SIZE);
++ uih_pkt = (short_frame *) (buf + 1);
++ set_uih_hdr(uih_pkt, CTRL_CHAN, sizeof(mcc_short_frame),
++ ts0710->initiator);
++ uih_pkt->data[sizeof(mcc_short_frame)] =
++ crc_calc((__u8 *) uih_pkt, SHORT_CRC_CHECK);
++ mcc_pkt = (mcc_short_frame *) (uih_pkt->data);
++
++ mcc_pkt->h.type.ea = 1;
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = FCOFF;
++ mcc_pkt->h.length.ea = 1;
++ mcc_pkt->h.length.len = 0;
++
++ return basic_write(ts0710, buf, size);
++}
++
++/*
++static int ts0710_rpn_msg(ts0710_con *ts0710, __u8 cr, __u8 dlci, __u8 req)
++{
++ char buf[100];
++ rpn_msg* rpn_pkt;
++ __u32 fsize;
++ __u32 psize;
++
++ fsize = sizeof(rpn_msg);
++
++ if (req) {
++ fsize -= sizeof(rpn_values);
++ }
++
++ psize = (fsize - sizeof(short_frame) - FCS_SIZE);
++
++ rpn_pkt = (rpn_msg *) buf;
++
++ set_uih_hdr((short_frame *) rpn_pkt, CTRL_CHAN, psize, ts0710->initiator);
++
++ rpn_pkt->fcs = crc_calc((__u8*) rpn_pkt, SHORT_CRC_CHECK);
++
++ rpn_pkt->mcc_s_head.type.ea = EA;
++ rpn_pkt->mcc_s_head.type.cr = cr;
++ rpn_pkt->mcc_s_head.type.type = RPN;
++ rpn_pkt->mcc_s_head.length.ea = EA;
++
++ rpn_pkt->dlci.ea = EA;
++ rpn_pkt->dlci.cr = 1;
++ rpn_pkt->dlci.d = dlci & 1;
++ rpn_pkt->dlci.server_chn = (dlci >> 1);
++
++ if (req) {
++ rpn_pkt->mcc_s_head.length.len = 1;
++ rpn_pkt->rpn_val.bit_rate = rpn_pkt->fcs;
++ } else {
++ rpn_pkt->mcc_s_head.length.len = 8;
++ memcpy(&(rpn_pkt->rpn_val), &rpn_val, sizeof(rpn_values));
++ }
++ return basic_write(ts0710, buf, fsize);
++}
++*/
++/*
++static int ts0710_rls_msg(ts0710_con *ts0710, __u8 cr, __u8 dlci, __u8 err_code)
++{
++ char buf[100];
++ rls_msg *rls_pkt;
++ __u32 fsize;
++ __u32 psize;
++
++ fsize = sizeof(rls_msg);
++ psize = fsize - sizeof(short_frame) - FCS_SIZE;
++ rls_pkt = (rls_msg *) buf;
++
++ set_uih_hdr((short_frame *) rls_pkt, CTRL_CHAN, psize, ts0710->initiator);
++ rls_pkt->fcs = crc_calc((__u8*) rls_pkt, SHORT_CRC_CHECK);
++
++ rls_pkt->mcc_s_head.type.ea = EA;
++ rls_pkt->mcc_s_head.type.cr = cr;
++ rls_pkt->mcc_s_head.type.type = RLS;
++ rls_pkt->mcc_s_head.length.ea = EA;
++ rls_pkt->mcc_s_head.length.len = 2;
++
++ rls_pkt->dlci.ea = EA;
++ rls_pkt->dlci.cr = 1;
++ rls_pkt->dlci.d = dlci & 1;
++ rls_pkt->dlci.server_chn = dlci >> 1;
++ rls_pkt->error = err_code;
++ rls_pkt->res = 0;
++
++ return basic_write(ts0710, buf, fsize);
++}
++*/
++
++/* Sends an PN-messages and sets the not negotiable parameters to their
++ default values in ts0710 */
++
++static int send_pn_msg(ts0710_con * ts0710, __u8 prior, __u32 frame_size,
++ __u8 credit_flow, __u8 credits, __u8 dlci, __u8 cr)
++{
++ __u8 buf[30];
++ pn_msg *pn_pkt;
++ __u32 size;
++ TS0710_DEBUG
++ ("send_pn_msg: DLCI 0x%02x, prior:0x%02x, frame_size:%d, credit_flow:%x, credits:%d, cr:%x\n",
++ dlci, prior, frame_size, credit_flow, credits, cr);
++
++ size = sizeof(pn_msg);
++ pn_pkt = (pn_msg *) (buf + 1);
++
++ set_uih_hdr((void *)pn_pkt, CTRL_CHAN,
++ size - (sizeof(short_frame) + FCS_SIZE), ts0710->initiator);
++ pn_pkt->fcs = crc_calc((__u8 *) pn_pkt, SHORT_CRC_CHECK);
++
++ pn_pkt->mcc_s_head.type.ea = 1;
++ pn_pkt->mcc_s_head.type.cr = cr;
++ pn_pkt->mcc_s_head.type.type = PN;
++ pn_pkt->mcc_s_head.length.ea = 1;
++ pn_pkt->mcc_s_head.length.len = 8;
++
++ pn_pkt->res1 = 0;
++ pn_pkt->res2 = 0;
++ pn_pkt->dlci = dlci;
++ pn_pkt->frame_type = 0;
++ pn_pkt->credit_flow = credit_flow;
++ pn_pkt->prior = prior;
++ pn_pkt->ack_timer = 0;
++ SET_PN_MSG_FRAME_SIZE(pn_pkt, frame_size);
++ pn_pkt->credits = credits;
++ pn_pkt->max_nbrof_retrans = 0;
++
++ return basic_write(ts0710, buf, size);
++}
++
++/* Send a Not supported command - command, which needs 3 bytes */
++
++static int send_nsc_msg(ts0710_con * ts0710, mcc_type cmd, __u8 cr)
++{
++ __u8 buf[30];
++ nsc_msg *nsc_pkt;
++ __u32 size;
++
++ size = sizeof(nsc_msg);
++ nsc_pkt = (nsc_msg *) (buf + 1);
++
++ set_uih_hdr((void *)nsc_pkt, CTRL_CHAN,
++ sizeof(nsc_msg) - sizeof(short_frame) - FCS_SIZE,
++ ts0710->initiator);
++
++ nsc_pkt->fcs = crc_calc((__u8 *) nsc_pkt, SHORT_CRC_CHECK);
++
++ nsc_pkt->mcc_s_head.type.ea = 1;
++ nsc_pkt->mcc_s_head.type.cr = cr;
++ nsc_pkt->mcc_s_head.type.type = NSC;
++ nsc_pkt->mcc_s_head.length.ea = 1;
++ nsc_pkt->mcc_s_head.length.len = 1;
++
++ nsc_pkt->command_type.ea = 1;
++ nsc_pkt->command_type.cr = cmd.cr;
++ nsc_pkt->command_type.type = cmd.type;
++
++ return basic_write(ts0710, buf, size);
++}
++
++static int ts0710_msc_msg(ts0710_con * ts0710, __u8 value, __u8 cr, __u8 dlci)
++{
++ __u8 buf[30];
++ msc_msg *msc_pkt;
++ __u32 size;
++
++ size = sizeof(msc_msg);
++ msc_pkt = (msc_msg *) (buf + 1);
++
++ set_uih_hdr((void *)msc_pkt, CTRL_CHAN,
++ sizeof(msc_msg) - sizeof(short_frame) - FCS_SIZE,
++ ts0710->initiator);
++
++ msc_pkt->fcs = crc_calc((__u8 *) msc_pkt, SHORT_CRC_CHECK);
++
++ msc_pkt->mcc_s_head.type.ea = 1;
++ msc_pkt->mcc_s_head.type.cr = cr;
++ msc_pkt->mcc_s_head.type.type = MSC;
++ msc_pkt->mcc_s_head.length.ea = 1;
++ msc_pkt->mcc_s_head.length.len = 2;
++
++ msc_pkt->dlci.ea = 1;
++ msc_pkt->dlci.cr = 1;
++ msc_pkt->dlci.d = dlci & 1;
++ msc_pkt->dlci.server_chn = (dlci >> 1) & 0x1f;
++
++ msc_pkt->v24_sigs = value;
++
++ return basic_write(ts0710, buf, size);
++}
++
++static int ts0710_test_msg(ts0710_con * ts0710, __u8 * test_pattern, __u32 len,
++ __u8 cr, __u8 * f_buf /*Frame buf */ )
++{
++ __u32 size;
++
++ if (len > SHORT_PAYLOAD_SIZE) {
++ long_frame *uih_pkt;
++ mcc_long_frame *mcc_pkt;
++
++ size =
++ (sizeof(long_frame) + sizeof(mcc_long_frame) + len +
++ FCS_SIZE);
++ uih_pkt = (long_frame *) (f_buf + 1);
++
++ set_uih_hdr((short_frame *) uih_pkt, CTRL_CHAN, len +
++ sizeof(mcc_long_frame), ts0710->initiator);
++ uih_pkt->data[GET_LONG_LENGTH(uih_pkt->h.length)] =
++ crc_calc((__u8 *) uih_pkt, LONG_CRC_CHECK);
++ mcc_pkt = (mcc_long_frame *) uih_pkt->data;
++
++ mcc_pkt->h.type.ea = EA;
++ /* cr tells whether it is a commmand (1) or a response (0) */
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = TEST;
++ SET_LONG_LENGTH(mcc_pkt->h.length, len);
++ memcpy(mcc_pkt->value, test_pattern, len);
++ } else if (len > (SHORT_PAYLOAD_SIZE - sizeof(mcc_short_frame))) {
++ long_frame *uih_pkt;
++ mcc_short_frame *mcc_pkt;
++
++ /* Create long uih packet and short mcc packet */
++ size =
++ (sizeof(long_frame) + sizeof(mcc_short_frame) + len +
++ FCS_SIZE);
++ uih_pkt = (long_frame *) (f_buf + 1);
++
++ set_uih_hdr((short_frame *) uih_pkt, CTRL_CHAN,
++ len + sizeof(mcc_short_frame), ts0710->initiator);
++ uih_pkt->data[GET_LONG_LENGTH(uih_pkt->h.length)] =
++ crc_calc((__u8 *) uih_pkt, LONG_CRC_CHECK);
++ mcc_pkt = (mcc_short_frame *) uih_pkt->data;
++
++ mcc_pkt->h.type.ea = EA;
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = TEST;
++ mcc_pkt->h.length.ea = EA;
++ mcc_pkt->h.length.len = len;
++ memcpy(mcc_pkt->value, test_pattern, len);
++ } else {
++ short_frame *uih_pkt;
++ mcc_short_frame *mcc_pkt;
++
++ size =
++ (sizeof(short_frame) + sizeof(mcc_short_frame) + len +
++ FCS_SIZE);
++ uih_pkt = (short_frame *) (f_buf + 1);
++
++ set_uih_hdr((void *)uih_pkt, CTRL_CHAN, len
++ + sizeof(mcc_short_frame), ts0710->initiator);
++ uih_pkt->data[uih_pkt->h.length.len] =
++ crc_calc((__u8 *) uih_pkt, SHORT_CRC_CHECK);
++ mcc_pkt = (mcc_short_frame *) uih_pkt->data;
++
++ mcc_pkt->h.type.ea = EA;
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = TEST;
++ mcc_pkt->h.length.ea = EA;
++ mcc_pkt->h.length.len = len;
++ memcpy(mcc_pkt->value, test_pattern, len);
++
++ }
++ return basic_write(ts0710, f_buf, size);
++}
++
++static void set_uih_hdr(short_frame * uih_pkt, __u8 dlci, __u32 len, __u8 cr)
++{
++ uih_pkt->h.addr.ea = 1;
++ uih_pkt->h.addr.cr = cr;
++ uih_pkt->h.addr.d = dlci & 0x1;
++ uih_pkt->h.addr.server_chn = dlci >> 1;
++ uih_pkt->h.control = CLR_PF(UIH);
++
++ if (len > SHORT_PAYLOAD_SIZE) {
++ SET_LONG_LENGTH(((long_frame *) uih_pkt)->h.length, len);
++ } else {
++ uih_pkt->h.length.ea = 1;
++ uih_pkt->h.length.len = len;
++ }
++}
++
++/* Parses a multiplexer control channel packet */
++
++void process_mcc(__u8 * data, __u32 len, ts0710_con * ts0710, int longpkt)
++{
++ __u8 *tbuf = NULL;
++ mcc_short_frame *mcc_short_pkt;
++ int j;
++
++ if (longpkt) {
++ mcc_short_pkt =
++ (mcc_short_frame *) (((long_frame *) data)->data);
++ } else {
++ mcc_short_pkt =
++ (mcc_short_frame *) (((short_frame *) data)->data);
++ }
++
++ switch (mcc_short_pkt->h.type.type) {
++ case TEST:
++ if (mcc_short_pkt->h.type.cr == MCC_RSP) {
++ TS0710_DEBUG("Received test command response\n");
++
++ if (ts0710->be_testing) {
++ if ((mcc_short_pkt->h.length.ea) == 0) {
++ mcc_long_frame *mcc_long_pkt;
++ mcc_long_pkt =
++ (mcc_long_frame *) mcc_short_pkt;
++ if (GET_LONG_LENGTH
++ (mcc_long_pkt->h.length) !=
++ TEST_PATTERN_SIZE) {
++ ts0710->test_errs =
++ TEST_PATTERN_SIZE;
++ TS0710_DEBUG
++ ("Err: received test pattern is %d bytes long, not expected %d\n",
++ GET_LONG_LENGTH
++ (mcc_long_pkt->h.length),
++ TEST_PATTERN_SIZE);
++ } else {
++ ts0710->test_errs = 0;
++ for (j = 0;
++ j < TEST_PATTERN_SIZE;
++ j++) {
++ if (mcc_long_pkt->
++ value[j] !=
++ (j & 0xFF)) {
++ (ts0710->
++ test_errs)++;
++ }
++ }
++ }
++
++ } else {
++
++#if TEST_PATTERN_SIZE < 128
++ if (mcc_short_pkt->h.length.len !=
++ TEST_PATTERN_SIZE) {
++#endif
++
++ ts0710->test_errs =
++ TEST_PATTERN_SIZE;
++ TS0710_DEBUG
++ ("Err: received test pattern is %d bytes long, not expected %d\n",
++ mcc_short_pkt->h.length.
++ len, TEST_PATTERN_SIZE);
++
++#if TEST_PATTERN_SIZE < 128
++ } else {
++ ts0710->test_errs = 0;
++ for (j = 0;
++ j < TEST_PATTERN_SIZE;
++ j++) {
++ if (mcc_short_pkt->
++ value[j] !=
++ (j & 0xFF)) {
++ (ts0710->
++ test_errs)++;
++ }
++ }
++ }
++#endif
++
++ }
++
++ ts0710->be_testing = 0; /* Clear the flag */
++ wake_up_interruptible(&ts0710->test_wait);
++ } else {
++ TS0710_DEBUG
++ ("Err: shouldn't or late to get test cmd response\n");
++ }
++ } else {
++ tbuf = (__u8 *) kmalloc(len + 32, GFP_ATOMIC);
++ if (!tbuf) {
++ break;
++ }
++
++ if ((mcc_short_pkt->h.length.ea) == 0) {
++ mcc_long_frame *mcc_long_pkt;
++ mcc_long_pkt = (mcc_long_frame *) mcc_short_pkt;
++ ts0710_test_msg(ts0710, mcc_long_pkt->value,
++ GET_LONG_LENGTH(mcc_long_pkt->h.
++ length),
++ MCC_RSP, tbuf);
++ } else {
++ ts0710_test_msg(ts0710, mcc_short_pkt->value,
++ mcc_short_pkt->h.length.len,
++ MCC_RSP, tbuf);
++ }
++
++ kfree(tbuf);
++ }
++ break;
++
++ case FCON: /*Flow control on command */
++ TS0710_PRINTK
++ ("MUX Received Flow control(all channels) on command\n");
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ ts0710->dlci[0].state = CONNECTED;
++ ts0710_fcon_msg(ts0710, MCC_RSP);
++ mux_sched_send();
++ }
++ break;
++
++ case FCOFF: /*Flow control off command */
++ TS0710_PRINTK
++ ("MUX Received Flow control(all channels) off command\n");
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ for (j = 0; j < TS0710_MAX_CHN; j++) {
++ ts0710->dlci[j].state = FLOW_STOPPED;
++ }
++ ts0710_fcoff_msg(ts0710, MCC_RSP);
++ }
++ break;
++
++ case MSC: /*Modem status command */
++ {
++ __u8 dlci;
++ __u8 v24_sigs;
++
++ dlci = (mcc_short_pkt->value[0]) >> 2;
++ v24_sigs = mcc_short_pkt->value[1];
++
++ if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ send_dm(ts0710, dlci);
++ break;
++ }
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ TS0710_DEBUG("Received Modem status command\n");
++ if (v24_sigs & 2) {
++ if (ts0710->dlci[dlci].state ==
++ CONNECTED) {
++ TS0710_LOG
++ ("MUX Received Flow off on dlci %d\n",
++ dlci);
++ ts0710->dlci[dlci].state =
++ FLOW_STOPPED;
++ }
++ } else {
++ if (ts0710->dlci[dlci].state ==
++ FLOW_STOPPED) {
++ ts0710->dlci[dlci].state =
++ CONNECTED;
++ TS0710_LOG
++ ("MUX Received Flow on on dlci %d\n",
++ dlci);
++ mux_sched_send();
++ }
++ }
++
++ ts0710_msc_msg(ts0710, v24_sigs, MCC_RSP, dlci);
++/*
++ if (!(ts0710->dlci[dlci].initiated) && !(ts0710->dlci[dlci].initiator)) {
++ ts0710_msc_msg(ts0710, EA | RTR | RTC | DV, MCC_CMD, dlci);
++ ts0710->dlci[dlci].initiated = 1;
++ }
++*/
++ } else {
++ TS0710_DEBUG
++ ("Received Modem status response\n");
++
++ if (v24_sigs & 2) {
++ TS0710_DEBUG("Flow stop accepted\n");
++ }
++ }
++ break;
++ }
++
++ /* case RPN: *//*Remote port negotiation command */
++
++/* {
++ __u8 dlci;
++
++ dlci = (mcc_short_pkt->value[0]) >> 2;
++
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ if (mcc_short_pkt->h.length.len == 1) {
++ TS0710_DEBUG("Received Remote port negotiation command\n");
++ ts0710_rpn_msg(ts0710, MCC_RSP, dlci, 0);
++ } else {
++*/
++ /* Accept the other sides settings (accept all for now) */
++/* TS0710_DEBUG("Received Remote port negotiation respons\n");
++ memcpy(&rpn_val, &mcc_short_pkt->value[1], 8);
++ ts0710_rpn_msg(ts0710, MCC_RSP, dlci, 0);
++*/
++ /* Zero the parametermask after response */
++/* memset(&rpn_val.pm, 0, 2);
++ }
++ }
++ break;
++ }
++*/
++/*
++ case RLS: *//*Remote line status */
++/* {
++ __u8 dlci;
++ __u8 err_code;
++
++ TS0710_DEBUG("Received Remote line status\n");
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ dlci = mcc_short_pkt->value[0] >> 2;
++ err_code = mcc_short_pkt->value[1];
++
++ ts0710_rls_msg(ts0710, MCC_RSP, dlci, err_code);
++ }
++ break;
++ }
++*/
++ case PN: /*DLC parameter negotiation */
++ {
++ __u8 dlci;
++ __u16 frame_size;
++ pn_msg *pn_pkt;
++
++ pn_pkt = (pn_msg *) data;
++ dlci = pn_pkt->dlci;
++ frame_size = GET_PN_MSG_FRAME_SIZE(pn_pkt);
++ TS0710_DEBUG
++ ("Received DLC parameter negotiation, PN\n");
++ if (pn_pkt->mcc_s_head.type.cr == MCC_CMD) {
++ TS0710_DEBUG("received PN command with:\n");
++ TS0710_DEBUG("Frame size:%d\n", frame_size);
++
++ frame_size =
++ min(frame_size, ts0710->dlci[dlci].mtu);
++ send_pn_msg(ts0710, pn_pkt->prior, frame_size,
++ 0, 0, dlci, MCC_RSP);
++ ts0710->dlci[dlci].mtu = frame_size;
++ TS0710_DEBUG("process_mcc : mtu set to %d\n",
++ ts0710->dlci[dlci].mtu);
++ } else {
++ TS0710_DEBUG("received PN response with:\n");
++ TS0710_DEBUG("Frame size:%d\n", frame_size);
++
++ frame_size =
++ min(frame_size, ts0710->dlci[dlci].mtu);
++ ts0710->dlci[dlci].mtu = frame_size;
++
++ TS0710_DEBUG
++ ("process_mcc : mtu set on dlci:%d to %d\n",
++ dlci, ts0710->dlci[dlci].mtu);
++
++ if (ts0710->dlci[dlci].state == NEGOTIATING) {
++ ts0710->dlci[dlci].state = CONNECTING;
++ wake_up_interruptible(&ts0710->
++ dlci[dlci].
++ open_wait);
++ }
++ }
++ break;
++ }
++
++ case NSC: /*Non supported command resonse */
++ TS0710_LOG("MUX Received Non supported command response\n");
++ break;
++
++ default: /*Non supported command received */
++ TS0710_LOG("MUX Received a non supported command\n");
++ send_nsc_msg(ts0710, mcc_short_pkt->h.type, MCC_RSP);
++ break;
++ }
++}
++
++static mux_recv_packet *get_mux_recv_packet(__u32 size)
++{
++ mux_recv_packet *recv_packet;
++
++ TS0710_DEBUG("Enter into get_mux_recv_packet");
++
++ recv_packet =
++ (mux_recv_packet *) kmalloc(sizeof(mux_recv_packet), GFP_ATOMIC);
++ if (!recv_packet) {
++ return 0;
++ }
++
++ recv_packet->data = (__u8 *) kmalloc(size, GFP_ATOMIC);
++ if (!(recv_packet->data)) {
++ kfree(recv_packet);
++ return 0;
++ }
++ recv_packet->length = 0;
++ recv_packet->next = 0;
++ return recv_packet;
++}
++
++static void free_mux_recv_packet(mux_recv_packet * recv_packet)
++{
++ TS0710_DEBUG("Enter into free_mux_recv_packet");
++
++ if (!recv_packet) {
++ return;
++ }
++
++ if (recv_packet->data) {
++ kfree(recv_packet->data);
++ }
++ kfree(recv_packet);
++}
++
++static void free_mux_recv_struct(mux_recv_struct * recv_info)
++{
++ mux_recv_packet *recv_packet1, *recv_packet2;
++
++ if (!recv_info) {
++ return;
++ }
++
++ recv_packet1 = recv_info->mux_packet;
++ while (recv_packet1) {
++ recv_packet2 = recv_packet1->next;
++ free_mux_recv_packet(recv_packet1);
++ recv_packet1 = recv_packet2;
++ }
++
++ kfree(recv_info);
++}
++
++static inline void add_post_recv_queue(mux_recv_struct ** head,
++ mux_recv_struct * new_item)
++{
++ new_item->next = *head;
++ *head = new_item;
++}
++
++static void ts0710_flow_on(__u8 dlci, ts0710_con * ts0710)
++{
++ int i;
++ __u8 cmdtty;
++ __u8 datatty;
++ struct tty_struct *tty;
++ mux_recv_struct *recv_info;
++
++ if ((ts0710->dlci[0].state != CONNECTED)
++ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
++ return;
++ } else if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ return;
++ }
++
++ if (!(ts0710->dlci[dlci].flow_control)) {
++ return;
++ }
++
++ cmdtty = dlci2tty[dlci].cmdtty;
++ datatty = dlci2tty[dlci].datatty;
++
++ if (cmdtty != datatty) {
++ /* Check AT cmd tty */
++ tty = mux_table[cmdtty];
++ if (mux_tty[cmdtty] && tty) {
++ if (test_bit(TTY_THROTTLED, &tty->flags)) {
++ return;
++ }
++ }
++ recv_info = mux_recv_info[cmdtty];
++ if (mux_recv_info_flags[cmdtty] && recv_info) {
++ if (recv_info->total) {
++ return;
++ }
++ }
++
++ /* Check data tty */
++ tty = mux_table[datatty];
++ if (mux_tty[datatty] && tty) {
++ if (test_bit(TTY_THROTTLED, &tty->flags)) {
++ return;
++ }
++ }
++ recv_info = mux_recv_info[datatty];
++ if (mux_recv_info_flags[datatty] && recv_info) {
++ if (recv_info->total) {
++ return;
++ }
++ }
++ }
++
++ for (i = 0; i < 3; i++) {
++ if (ts0710_msc_msg(ts0710, EA | RTC | RTR | DV, MCC_CMD, dlci) <
++ 0) {
++ continue;
++ } else {
++ TS0710_LOG("MUX send Flow on on dlci %d\n", dlci);
++ ts0710->dlci[dlci].flow_control = 0;
++ break;
++ }
++ }
++}
++
++static void ts0710_flow_off(struct tty_struct *tty, __u8 dlci,
++ ts0710_con * ts0710)
++{
++ int i;
++
++ if (test_and_set_bit(TTY_THROTTLED, &tty->flags)) {
++ return;
++ }
++
++ if ((ts0710->dlci[0].state != CONNECTED)
++ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
++ return;
++ } else if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ return;
++ }
++
++ if (ts0710->dlci[dlci].flow_control) {
++ return;
++ }
++
++ for (i = 0; i < 3; i++) {
++ if (ts0710_msc_msg
++ (ts0710, EA | FC | RTC | RTR | DV, MCC_CMD, dlci) < 0) {
++ continue;
++ } else {
++ TS0710_LOG("MUX send Flow off on dlci %d\n", dlci);
++ ts0710->dlci[dlci].flow_control = 1;
++ break;
++ }
++ }
++}
++
++int ts0710_recv_data(ts0710_con * ts0710, char *data, int len)
++{
++ short_frame *short_pkt;
++ long_frame *long_pkt;
++ __u8 *uih_data_start;
++ __u32 uih_len;
++ __u8 dlci;
++ __u8 be_connecting;
++#ifdef TS0710DEBUG
++ unsigned long t;
++#endif
++
++ short_pkt = (short_frame *) data;
++
++ dlci = short_pkt->h.addr.server_chn << 1 | short_pkt->h.addr.d;
++ switch (CLR_PF(short_pkt->h.control)) {
++ case SABM:
++ TS0710_DEBUG("SABM-packet received\n");
++
++/*For BP UART problem
++ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
++ break;
++*/
++
++ if (!dlci) {
++ TS0710_DEBUG("server channel == 0\n");
++ ts0710->dlci[0].state = CONNECTED;
++
++ TS0710_DEBUG("sending back UA - control channel\n");
++ send_ua(ts0710, dlci);
++ wake_up_interruptible(&ts0710->dlci[0].open_wait);
++
++ } else if (valid_dlci(dlci)) {
++
++ TS0710_DEBUG("Incomming connect on channel %d\n", dlci);
++
++ TS0710_DEBUG("sending UA, dlci %d\n", dlci);
++ send_ua(ts0710, dlci);
++
++ ts0710->dlci[dlci].state = CONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
++
++ } else {
++ TS0710_DEBUG("invalid dlci %d, sending DM\n", dlci);
++ send_dm(ts0710, dlci);
++ }
++
++ break;
++
++ case UA:
++ TS0710_DEBUG("UA packet received\n");
++
++/*For BP UART problem
++ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
++ break;
++*/
++
++ if (!dlci) {
++ TS0710_DEBUG("server channel == 0\n");
++
++ if (ts0710->dlci[0].state == CONNECTING) {
++ ts0710->dlci[0].state = CONNECTED;
++ wake_up_interruptible(&ts0710->dlci[0].
++ open_wait);
++ } else if (ts0710->dlci[0].state == DISCONNECTING) {
++ ts0710_upon_disconnect();
++ } else {
++ TS0710_DEBUG
++ (" Something wrong receiving UA packet\n");
++ }
++ } else if (valid_dlci(dlci)) {
++ TS0710_DEBUG("Incomming UA on channel %d\n", dlci);
++
++ if (ts0710->dlci[dlci].state == CONNECTING) {
++ ts0710->dlci[dlci].state = CONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].
++ open_wait);
++ } else if (ts0710->dlci[dlci].state == DISCONNECTING) {
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].
++ open_wait);
++ wake_up_interruptible(&ts0710->dlci[dlci].
++ close_wait);
++ ts0710_reset_dlci(dlci);
++ } else {
++ TS0710_DEBUG
++ (" Something wrong receiving UA packet\n");
++ }
++ } else {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ }
++
++ break;
++
++ case DM:
++ TS0710_DEBUG("DM packet received\n");
++
++/*For BP UART problem
++ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
++ break;
++*/
++
++ if (!dlci) {
++ TS0710_DEBUG("server channel == 0\n");
++
++ if (ts0710->dlci[0].state == CONNECTING) {
++ be_connecting = 1;
++ } else {
++ be_connecting = 0;
++ }
++ ts0710_upon_disconnect();
++ if (be_connecting) {
++ ts0710->dlci[0].state = REJECTED;
++ }
++ } else if (valid_dlci(dlci)) {
++ TS0710_DEBUG("Incomming DM on channel %d\n", dlci);
++
++ if (ts0710->dlci[dlci].state == CONNECTING) {
++ ts0710->dlci[dlci].state = REJECTED;
++ } else {
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ }
++ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
++ wake_up_interruptible(&ts0710->dlci[dlci].close_wait);
++ ts0710_reset_dlci(dlci);
++ } else {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ }
++
++ break;
++
++ case DISC:
++ TS0710_DEBUG("DISC packet received\n");
++
++/*For BP UART problem
++ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
++ break;
++*/
++
++ if (!dlci) {
++ TS0710_DEBUG("server channel == 0\n");
++
++ send_ua(ts0710, dlci);
++ TS0710_DEBUG("DISC, sending back UA\n");
++
++ ts0710_upon_disconnect();
++ } else if (valid_dlci(dlci)) {
++ TS0710_DEBUG("Incomming DISC on channel %d\n", dlci);
++
++ send_ua(ts0710, dlci);
++ TS0710_DEBUG("DISC, sending back UA\n");
++
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
++ wake_up_interruptible(&ts0710->dlci[dlci].close_wait);
++ ts0710_reset_dlci(dlci);
++ } else {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ }
++
++ break;
++
++ case UIH:
++ TS0710_DEBUG("UIH packet received\n");
++
++ if ((dlci >= TS0710_MAX_CHN)) {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ send_dm(ts0710, dlci);
++ break;
++ }
++
++ if (GET_PF(short_pkt->h.control)) {
++ TS0710_LOG
++ ("MUX Error %s: UIH packet with P/F set, discard it!\n",
++ __FUNCTION__);
++ break;
++ }
++
++ if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ TS0710_LOG
++ ("MUX Error %s: DLCI %d not connected, discard it!\n",
++ __FUNCTION__, dlci);
++ send_dm(ts0710, dlci);
++ break;
++ }
++
++ if ((short_pkt->h.length.ea) == 0) {
++ TS0710_DEBUG("Long UIH packet received\n");
++ long_pkt = (long_frame *) data;
++ uih_len = GET_LONG_LENGTH(long_pkt->h.length);
++ uih_data_start = long_pkt->h.data;
++ TS0710_DEBUG("long packet length %d\n", uih_len);
++
++/*For BP UART problem
++ if (crc_check(data, LONG_CRC_CHECK, *(uih_data_start + uih_len)))
++ break;
++*/
++ } else {
++ TS0710_DEBUG("Short UIH pkt received\n");
++ uih_len = short_pkt->h.length.len;
++ uih_data_start = short_pkt->data;
++
++/*For BP UART problem
++ if (crc_check(data, SHORT_CRC_CHECK, *(uih_data_start + uih_len)))
++ break;
++*/
++ }
++
++ if (dlci == 0) {
++ TS0710_DEBUG("UIH on serv_channel 0\n");
++ process_mcc(data, len, ts0710,
++ !(short_pkt->h.length.ea));
++ } else if (valid_dlci(dlci)) {
++ /* do tty dispatch */
++ __u8 tag;
++ __u8 tty_idx;
++ struct tty_struct *tty;
++ __u8 queue_data;
++ __u8 post_recv;
++ __u8 flow_control;
++ mux_recv_struct *recv_info;
++ int recv_room;
++ mux_recv_packet *recv_packet, *recv_packet2;
++
++ TS0710_DEBUG("UIH on channel %d\n", dlci);
++
++ if (uih_len > ts0710->dlci[dlci].mtu) {
++ TS0710_PRINTK
++ ("MUX Error: DLCI:%d, uih_len:%d is bigger than mtu:%d, discard data!\n",
++ dlci, uih_len, ts0710->dlci[dlci].mtu);
++ break;
++ }
++
++ tag = *uih_data_start;
++ uih_data_start++;
++ uih_len--;
++
++ if (!uih_len) {
++ break;
++ }
++
++ switch (tag) {
++ case CMDTAG:
++ tty_idx = dlci2tty[dlci].cmdtty;
++ TS0710_DEBUG("CMDTAG on DLCI:%d, /dev/mux%d\n",
++ dlci, tty_idx);
++ TS0710_DEBUGSTR(uih_data_start, uih_len);
++ if (!(iscmdtty[tty_idx])) {
++ TS0710_PRINTK
++ ("MUX Error: %s: Wrong CMDTAG on DLCI:%d, /dev/mux%d\n",
++ __FUNCTION__, dlci, tty_idx);
++ }
++ break;
++ case DATATAG:
++ default:
++ tty_idx = dlci2tty[dlci].datatty;
++ TS0710_DEBUG
++ ("NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
++ dlci, tty_idx);
++ if (iscmdtty[tty_idx]) {
++ TS0710_PRINTK
++ ("MUX Error: %s: Wrong NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
++ __FUNCTION__, dlci, tty_idx);
++ }
++ break;
++ }
++ tty = mux_table[tty_idx];
++ if ((!mux_tty[tty_idx]) || (!tty)) {
++ TS0710_PRINTK
++ ("MUX: No application waiting for, discard it! /dev/mux%d\n",
++ tty_idx);
++ } else { /* Begin processing received data */
++ if ((!mux_recv_info_flags[tty_idx])
++ || (!mux_recv_info[tty_idx])) {
++ TS0710_PRINTK
++ ("MUX Error: No mux_recv_info, discard it! /dev/mux%d\n",
++ tty_idx);
++ break;
++ }
++
++ recv_info = mux_recv_info[tty_idx];
++ if (recv_info->total > 8192) {
++ TS0710_PRINTK
++ ("MUX : discard data for tty_idx:%d, recv_info->total > 8192 \n",
++ tty_idx);
++ break;
++ }
++
++ queue_data = 0;
++ post_recv = 0;
++ flow_control = 0;
++ recv_room = 65535;
++ if (tty->receive_room)
++ recv_room = tty->receive_room;
++
++ if (test_bit(TTY_THROTTLED, &tty->flags)) {
++ queue_data = 1;
++ } else {
++ if (test_bit
++ (TTY_DONT_FLIP, &tty->flags)) {
++ queue_data = 1;
++ post_recv = 1;
++ } else if (recv_info->total) {
++ queue_data = 1;
++ post_recv = 1;
++ } else if (recv_room < uih_len) {
++ queue_data = 1;
++ flow_control = 1;
++ }
++
++ if ((recv_room -
++ (uih_len + recv_info->total)) <
++ ts0710->dlci[dlci].mtu) {
++ flow_control = 1;
++ }
++ }
++
++ if (!queue_data) {
++ /* Put received data into read buffer of tty */
++ TS0710_DEBUG
++ ("Put received data into read buffer of /dev/mux%d",
++ tty_idx);
++
++#ifdef TS0710DEBUG
++ t = jiffies;
++#endif
++
++ (tty->ldisc.receive_buf) (tty,
++ uih_data_start,
++ NULL,
++ uih_len);
++
++#ifdef TS0710DEBUG
++ TS0710_DEBUG
++ ("tty->ldisc.receive_buf take ticks: %lu",
++ (jiffies - t));
++#endif
++
++ } else { /* Queue data */
++
++ TS0710_DEBUG
++ ("Put received data into recv queue of /dev/mux%d",
++ tty_idx);
++ if (recv_info->total) {
++ /* recv_info is already linked into mux_recv_queue */
++
++ recv_packet =
++ get_mux_recv_packet
++ (uih_len);
++ if (!recv_packet) {
++ TS0710_PRINTK
++ ("MUX %s: no memory\n",
++ __FUNCTION__);
++ break;
++ }
++
++ memcpy(recv_packet->data,
++ uih_data_start, uih_len);
++ recv_packet->length = uih_len;
++ recv_info->total += uih_len;
++ recv_packet->next = NULL;
++
++ if (!(recv_info->mux_packet)) {
++ recv_info->mux_packet =
++ recv_packet;
++ } else {
++ recv_packet2 =
++ recv_info->
++ mux_packet;
++ while (recv_packet2->
++ next) {
++ recv_packet2 =
++ recv_packet2->
++ next;
++ }
++ recv_packet2->next =
++ recv_packet;
++ } /* End if( !(recv_info->mux_packet) ) */
++ } else { /* recv_info->total == 0 */
++ if (uih_len >
++ TS0710MUX_RECV_BUF_SIZE) {
++ TS0710_PRINTK
++ ("MUX Error: tty_idx:%d, uih_len == %d is too big\n",
++ tty_idx, uih_len);
++ uih_len =
++ TS0710MUX_RECV_BUF_SIZE;
++ }
++ memcpy(recv_info->data,
++ uih_data_start, uih_len);
++ recv_info->length = uih_len;
++ recv_info->total = uih_len;
++
++ add_post_recv_queue
++ (&mux_recv_queue,
++ recv_info);
++ } /* End recv_info->total == 0 */
++ } /* End Queue data */
++
++ if (flow_control) {
++ /* Do something for flow control */
++ ts0710_flow_off(tty, dlci, ts0710);
++ }
++
++ if (tty_idx ==
++ dlci2tty[TS0710MUX_GPRS1_DLCI].datatty) {
++ if (add_count
++ (TS0710MUX_GPRS1_RECV_COUNT_IDX,
++ uih_len) < 0) {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ mux_data_count2
++ [TS0710MUX_GPRS1_RECV_COUNT_IDX]
++ += uih_len;
++ }
++ } else if (tty_idx ==
++ dlci2tty[TS0710MUX_GPRS2_DLCI].
++ datatty) {
++ if (add_count
++ (TS0710MUX_GPRS2_RECV_COUNT_IDX,
++ uih_len) < 0) {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ mux_data_count2
++ [TS0710MUX_GPRS2_RECV_COUNT_IDX]
++ += uih_len;
++ }
++ }
++
++ if (post_recv)
++ schedule_work(&post_recv_tqueue);
++ } /* End processing received data */
++ } else {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ }
++
++ break;
++
++ default:
++ TS0710_DEBUG("illegal packet\n");
++ break;
++ }
++ return 0;
++}
++
++/*
++int ts0710_send_data(ts0710_con *ts0710, __u8 dlci, __u8 *data, __u32 count)
++{
++ __u32 c, total = 0;
++ __u8 tag, first;
++
++ if( ts0710->dlci[0].state == FLOW_STOPPED ){
++ TS0710_DEBUG("Flow stopped on all channels, returning zero\n");
++*/
++/*
++ return -EFLOWSTOPPED;
++ } else if( ts0710->dlci[dlci].state == FLOW_STOPPED ){
++ TS0710_DEBUG("Flow stopped, returning zero\n");
++*/
++/*
++ return -EFLOWSTOPPED;
++ } else if( ts0710->dlci[dlci].state == CONNECTED ){
++
++ TS0710_DEBUG("trying to send %d bytes\n", count);
++ tag = *data;
++ first = 1;
++*/
++ /* The first byte is always a Cmd/Data tag */
++/*
++ while( count > 1 ){
++
++ c = min(count, ts0710->dlci[dlci].mtu);
++ if( queue_uih(data, c, ts0710, dlci) <= 0 ) {
++ break;
++ }
++
++ total += (c - 1);
++ data += (c - 1);
++ *data = tag;
++ count -= (c - 1);
++
++ if( first ) {
++ first = 0;
++ total++;
++ }
++ }
++ TS0710_DEBUG("sent %d bytes\n", total);
++ return total;
++ } else {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ return -EDISCONNECTED;
++ }
++}
++*/
++
++/* Close ts0710 channel */
++static void ts0710_close_channel(__u8 dlci)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int try;
++ unsigned long t;
++
++ TS0710_DEBUG("ts0710_disc_command on channel %d\n", dlci);
++
++ if ((ts0710->dlci[dlci].state == DISCONNECTED)
++ || (ts0710->dlci[dlci].state == REJECTED)) {
++ return;
++ } else if (ts0710->dlci[dlci].state == DISCONNECTING) {
++ /* Reentry */
++ return;
++ } else {
++ ts0710->dlci[dlci].state = DISCONNECTING;
++ try = 3;
++ while (try--) {
++ t = jiffies;
++ send_disc(ts0710, dlci);
++ interruptible_sleep_on_timeout(&ts0710->dlci[dlci].
++ close_wait,
++ TS0710MUX_TIME_OUT);
++ if (ts0710->dlci[dlci].state == DISCONNECTED) {
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI %d Send DISC got signal!\n",
++ dlci);
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI %d Send DISC timeout!\n", dlci);
++ continue;
++ }
++ }
++
++ if (ts0710->dlci[dlci].state != DISCONNECTED) {
++ if (dlci == 0) { /* Control Channel */
++ ts0710_upon_disconnect();
++ } else { /* Other Channel */
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].
++ close_wait);
++ ts0710_reset_dlci(dlci);
++ }
++ }
++ }
++}
++
++int ts0710_open_channel(__u8 dlci)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int try;
++ int retval;
++ unsigned long t;
++
++ retval = -ENODEV;
++ if (dlci == 0) { // control channel
++ if ((ts0710->dlci[0].state == CONNECTED)
++ || (ts0710->dlci[0].state == FLOW_STOPPED)) {
++ return 0;
++ } else if (ts0710->dlci[0].state == CONNECTING) {
++ /* Reentry */
++ TS0710_PRINTK
++ ("MUX DLCI: 0, reentry to open DLCI 0, pid: %d, %s !\n",
++ current->pid, current->comm);
++ try = 11;
++ while (try--) {
++ t = jiffies;
++ interruptible_sleep_on_timeout(&ts0710->dlci[0].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if ((ts0710->dlci[0].state == CONNECTED)
++ || (ts0710->dlci[0].state ==
++ FLOW_STOPPED)) {
++ retval = 0;
++ break;
++ } else if (ts0710->dlci[0].state == REJECTED) {
++ retval = -EREJECTED;
++ break;
++ } else if (ts0710->dlci[0].state ==
++ DISCONNECTED) {
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Wait for connecting got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Wait for connecting timeout!\n",
++ dlci);
++ continue;
++ } else if (ts0710->dlci[0].state == CONNECTING) {
++ continue;
++ }
++ }
++
++ if (ts0710->dlci[0].state == CONNECTING) {
++ ts0710->dlci[0].state = DISCONNECTED;
++ }
++ } else if ((ts0710->dlci[0].state != DISCONNECTED)
++ && (ts0710->dlci[0].state != REJECTED)) {
++ TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
++ return retval;
++ } else {
++ ts0710->initiator = 1;
++ ts0710->dlci[0].state = CONNECTING;
++ ts0710->dlci[0].initiator = 1;
++ try = 10;
++ while (try--) {
++ t = jiffies;
++ send_sabm(ts0710, 0);
++ interruptible_sleep_on_timeout(&ts0710->dlci[0].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if ((ts0710->dlci[0].state == CONNECTED)
++ || (ts0710->dlci[0].state ==
++ FLOW_STOPPED)) {
++ retval = 0;
++ break;
++ } else if (ts0710->dlci[0].state == REJECTED) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM got rejected!\n",
++ dlci);
++ retval = -EREJECTED;
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM timeout!\n",
++ dlci);
++ continue;
++ }
++ }
++
++ if (ts0710->dlci[0].state == CONNECTING) {
++ ts0710->dlci[0].state = DISCONNECTED;
++ }
++ wake_up_interruptible(&ts0710->dlci[0].open_wait);
++ }
++ } else { // other channel
++ if ((ts0710->dlci[0].state != CONNECTED)
++ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
++ return retval;
++ } else if ((ts0710->dlci[dlci].state == CONNECTED)
++ || (ts0710->dlci[dlci].state == FLOW_STOPPED)) {
++ return 0;
++ } else if ((ts0710->dlci[dlci].state == NEGOTIATING)
++ || (ts0710->dlci[dlci].state == CONNECTING)) {
++ /* Reentry */
++ try = 8;
++ while (try--) {
++ t = jiffies;
++ interruptible_sleep_on_timeout(&ts0710->
++ dlci[dlci].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if ((ts0710->dlci[dlci].state == CONNECTED)
++ || (ts0710->dlci[dlci].state ==
++ FLOW_STOPPED)) {
++ retval = 0;
++ break;
++ } else if (ts0710->dlci[dlci].state == REJECTED) {
++ retval = -EREJECTED;
++ break;
++ } else if (ts0710->dlci[dlci].state ==
++ DISCONNECTED) {
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Wait for connecting got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Wait for connecting timeout!\n",
++ dlci);
++ continue;
++ } else
++ if ((ts0710->dlci[dlci].state ==
++ NEGOTIATING)
++ || (ts0710->dlci[dlci].state ==
++ CONNECTING)) {
++ continue;
++ }
++ }
++
++ if ((ts0710->dlci[dlci].state == NEGOTIATING)
++ || (ts0710->dlci[dlci].state == CONNECTING)) {
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ }
++ } else if ((ts0710->dlci[dlci].state != DISCONNECTED)
++ && (ts0710->dlci[dlci].state != REJECTED)) {
++ TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
++ return retval;
++ } else {
++ ts0710->dlci[dlci].state = NEGOTIATING;
++ ts0710->dlci[dlci].initiator = 1;
++ try = 3;
++ while (try--) {
++ t = jiffies;
++ send_pn_msg(ts0710, 7, ts0710->dlci[dlci].mtu,
++ 0, 0, dlci, 1);
++ interruptible_sleep_on_timeout(&ts0710->
++ dlci[dlci].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if (ts0710->dlci[dlci].state == CONNECTING) {
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send pn_msg got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send pn_msg timeout!\n",
++ dlci);
++ continue;
++ }
++ }
++
++ if (ts0710->dlci[dlci].state == CONNECTING) {
++ try = 3;
++ while (try--) {
++ t = jiffies;
++ send_sabm(ts0710, dlci);
++ interruptible_sleep_on_timeout(&ts0710->
++ dlci
++ [dlci].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if ((ts0710->dlci[dlci].state ==
++ CONNECTED)
++ || (ts0710->dlci[dlci].state ==
++ FLOW_STOPPED)) {
++ retval = 0;
++ break;
++ } else if (ts0710->dlci[dlci].state ==
++ REJECTED) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM got rejected!\n",
++ dlci);
++ retval = -EREJECTED;
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >=
++ TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM timeout!\n",
++ dlci);
++ continue;
++ }
++ }
++ }
++
++ if ((ts0710->dlci[dlci].state == NEGOTIATING)
++ || (ts0710->dlci[dlci].state == CONNECTING)) {
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ }
++ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
++ }
++ }
++ return retval;
++}
++
++static int ts0710_exec_test_cmd(void)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ __u8 *f_buf; /* Frame buffer */
++ __u8 *d_buf; /* Data buffer */
++ int retval = -EFAULT;
++ int j;
++ unsigned long t;
++
++ if (ts0710->be_testing) {
++ /* Reentry */
++ t = jiffies;
++ interruptible_sleep_on_timeout(&ts0710->test_wait,
++ 3 * TS0710MUX_TIME_OUT);
++ if (ts0710->be_testing == 0) {
++ if (ts0710->test_errs == 0) {
++ retval = 0;
++ } else {
++ retval = -EFAULT;
++ }
++ } else if (signal_pending(current)) {
++ TS0710_DEBUG
++ ("Wait for Test_cmd response got signal!\n");
++ retval = -EAGAIN;
++ } else if ((jiffies - t) >= 3 * TS0710MUX_TIME_OUT) {
++ TS0710_DEBUG("Wait for Test_cmd response timeout!\n");
++ retval = -EFAULT;
++ }
++ } else {
++ ts0710->be_testing = 1; /* Set the flag */
++
++ f_buf = (__u8 *) kmalloc(TEST_PATTERN_SIZE + 32, GFP_KERNEL);
++ d_buf = (__u8 *) kmalloc(TEST_PATTERN_SIZE + 32, GFP_KERNEL);
++ if ((!f_buf) || (!d_buf)) {
++ if (f_buf) {
++ kfree(f_buf);
++ }
++ if (d_buf) {
++ kfree(d_buf);
++ }
++
++ ts0710->be_testing = 0; /* Clear the flag */
++ ts0710->test_errs = TEST_PATTERN_SIZE;
++ wake_up_interruptible(&ts0710->test_wait);
++ return -ENOMEM;
++ }
++
++ for (j = 0; j < TEST_PATTERN_SIZE; j++) {
++ d_buf[j] = j & 0xFF;
++ }
++
++ t = jiffies;
++ ts0710_test_msg(ts0710, d_buf, TEST_PATTERN_SIZE, MCC_CMD,
++ f_buf);
++ interruptible_sleep_on_timeout(&ts0710->test_wait,
++ 2 * TS0710MUX_TIME_OUT);
++ if (ts0710->be_testing == 0) {
++ if (ts0710->test_errs == 0) {
++ retval = 0;
++ } else {
++ retval = -EFAULT;
++ }
++ } else if (signal_pending(current)) {
++ TS0710_DEBUG("Send Test_cmd got signal!\n");
++ retval = -EAGAIN;
++ } else if ((jiffies - t) >= 2 * TS0710MUX_TIME_OUT) {
++ TS0710_DEBUG("Send Test_cmd timeout!\n");
++ ts0710->test_errs = TEST_PATTERN_SIZE;
++ retval = -EFAULT;
++ }
++
++ ts0710->be_testing = 0; /* Clear the flag */
++ wake_up_interruptible(&ts0710->test_wait);
++
++ /* Release buffer */
++ if (f_buf) {
++ kfree(f_buf);
++ }
++ if (d_buf) {
++ kfree(d_buf);
++ }
++ }
++
++ return retval;
++}
++
++static void mux_sched_send(void)
++{
++
++#ifdef USB_FOR_MUX
++ schedule_work(&send_tqueue);
++#else
++ if (!tq_serial_for_mux) {
++ TS0710_PRINTK("MUX Error: %s: tq_serial_for_mux == 0\n",
++ __FUNCTION__);
++ return;
++ }
++ schedule_work(&send_tqueue);
++ mark_bh(SERIAL_BH);
++#endif
++
++}
++
++/****************************
++ * TTY driver routines
++*****************************/
++
++static void mux_close(struct tty_struct *tty, struct file *filp)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ __u8 dlci;
++ __u8 cmdtty;
++ __u8 datatty;
++
++ UNUSED_PARAM(filp);
++
++ if (!tty) {
++ return;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return;
++ }
++ if (mux_tty[line] > 0)
++ mux_tty[line]--;
++
++ dlci = tty2dlci[line];
++ cmdtty = dlci2tty[dlci].cmdtty;
++ datatty = dlci2tty[dlci].datatty;
++ if ((mux_tty[cmdtty] == 0) && (mux_tty[datatty] == 0)) {
++ if (dlci == 1) {
++ ts0710_close_channel(0);
++ TS0710_PRINTK
++ ("MUX mux_close: tapisrv might be down!!! Close DLCI 1\n");
++ TS0710_SIG2APLOGD();
++ }
++ ts0710_close_channel(dlci);
++ }
++
++ if (mux_tty[line] == 0) {
++ if ((mux_send_info_flags[line])
++ && (mux_send_info[line])
++ /*&& (mux_send_info[line]->filled == 0) */
++ ) {
++ mux_send_info_flags[line] = 0;
++ kfree(mux_send_info[line]);
++ mux_send_info[line] = 0;
++ TS0710_DEBUG("Free mux_send_info for /dev/mux%d", line);
++ }
++
++ if ((mux_recv_info_flags[line])
++ && (mux_recv_info[line])
++ && (mux_recv_info[line]->total == 0)) {
++ mux_recv_info_flags[line] = 0;
++ free_mux_recv_struct(mux_recv_info[line]);
++ mux_recv_info[line] = 0;
++ TS0710_DEBUG("Free mux_recv_info for /dev/mux%d", line);
++ }
++
++ ts0710_flow_on(dlci, ts0710);
++ schedule_work(&post_recv_tqueue);
++
++ wake_up_interruptible(&tty->read_wait);
++ wake_up_interruptible(&tty->write_wait);
++ tty->packet = 0;
++ }
++}
++
++static void mux_throttle(struct tty_struct *tty)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ int i;
++ __u8 dlci;
++
++ if (!tty) {
++ return;
++ }
++
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return;
++ }
++
++ TS0710_DEBUG("Enter into %s, minor number is: %d\n", __FUNCTION__,
++ line);
++
++ dlci = tty2dlci[line];
++ if ((ts0710->dlci[0].state != CONNECTED)
++ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
++ return;
++ } else if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ return;
++ }
++
++ if (ts0710->dlci[dlci].flow_control) {
++ return;
++ }
++
++ for (i = 0; i < 3; i++) {
++ if (ts0710_msc_msg
++ (ts0710, EA | FC | RTC | RTR | DV, MCC_CMD, dlci) < 0) {
++ continue;
++ } else {
++ TS0710_LOG("MUX Send Flow off on dlci %d\n", dlci);
++ ts0710->dlci[dlci].flow_control = 1;
++ break;
++ }
++ }
++}
++
++static void mux_unthrottle(struct tty_struct *tty)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ __u8 dlci;
++ mux_recv_struct *recv_info;
++
++ if (!tty) {
++ return;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return;
++ }
++
++ if ((!mux_recv_info_flags[line]) || (!mux_recv_info[line])) {
++ return;
++ }
++
++ TS0710_DEBUG("Enter into %s, minor number is: %d\n", __FUNCTION__,
++ line);
++
++ recv_info = mux_recv_info[line];
++ dlci = tty2dlci[line];
++
++ if (recv_info->total) {
++ recv_info->post_unthrottle = 1;
++ schedule_work(&post_recv_tqueue);
++ } else {
++ ts0710_flow_on(dlci, ts0710);
++ }
++}
++
++static int mux_chars_in_buffer(struct tty_struct *tty)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int retval;
++ int line;
++ __u8 dlci;
++ mux_send_struct *send_info;
++
++ retval = TS0710MUX_MAX_CHARS_IN_BUF;
++ if (!tty) {
++ goto out;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ goto out;
++ }
++
++ dlci = tty2dlci[line];
++ if (ts0710->dlci[0].state == FLOW_STOPPED) {
++ TS0710_DEBUG
++ ("Flow stopped on all channels, returning MAX chars in buffer\n");
++ goto out;
++ } else if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped, returning MAX chars in buffer\n");
++ goto out;
++ } else if (ts0710->dlci[dlci].state != CONNECTED) {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ goto out;
++ }
++
++ if (!(mux_send_info_flags[line])) {
++ goto out;
++ }
++ send_info = mux_send_info[line];
++ if (!send_info) {
++ goto out;
++ }
++ if (send_info->filled) {
++ goto out;
++ }
++
++ retval = 0;
++
++ out:
++ return retval;
++}
++
++static int mux_chars_in_serial_buffer(struct tty_struct *tty)
++{
++ UNUSED_PARAM(tty);
++
++ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
++ TS0710_PRINTK
++ ("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n",
++ __FUNCTION__);
++
++#ifndef USB_FOR_MUX
++ TS0710_PRINTK
++ ("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n",
++ __FUNCTION__);
++ TS0710_SIG2APLOGD();
++#endif
++
++ return 0;
++ }
++ return COMM_FOR_MUX_DRIVER->chars_in_buffer(COMM_FOR_MUX_TTY);
++}
++
++static int mux_write(struct tty_struct *tty,
++ const unsigned char *buf, int count)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ __u8 dlci;
++ mux_send_struct *send_info;
++ __u8 *d_buf;
++ __u16 c;
++ __u8 post_recv;
++
++ if (count <= 0) {
++ return 0;
++ }
++
++ if (!tty) {
++ return 0;
++ }
++
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS))
++ return -ENODEV;
++
++ dlci = tty2dlci[line];
++ if (ts0710->dlci[0].state == FLOW_STOPPED) {
++ TS0710_DEBUG
++ ("Flow stopped on all channels, returning zero /dev/mux%d\n",
++ line);
++ return 0;
++ } else if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped, returning zero /dev/mux%d\n", line);
++ return 0;
++ } else if (ts0710->dlci[dlci].state == CONNECTED) {
++
++ if (!(mux_send_info_flags[line])) {
++ TS0710_PRINTK
++ ("MUX Error: mux_write: mux_send_info_flags[%d] == 0\n",
++ line);
++ return -ENODEV;
++ }
++ send_info = mux_send_info[line];
++ if (!send_info) {
++ TS0710_PRINTK
++ ("MUX Error: mux_write: mux_send_info[%d] == 0\n",
++ line);
++ return -ENODEV;
++ }
++
++ c = min(count, (ts0710->dlci[dlci].mtu - 1));
++ if (c <= 0) {
++ return 0;
++ }
++
++ if (test_and_set_bit(BUF_BUSY, &send_info->flags))
++ return 0;
++
++ if (send_info->filled) {
++ clear_bit(BUF_BUSY, &send_info->flags);
++ return 0;
++ }
++
++ d_buf = ((__u8 *) send_info->buf) + TS0710MUX_SEND_BUF_OFFSET;
++ memcpy(&d_buf[1], buf, c);
++
++ TS0710_DEBUG("Prepare to send %d bytes from /dev/mux%d", c,
++ line);
++ if (iscmdtty[line]) {
++ TS0710_DEBUGSTR(&d_buf[1], c);
++ TS0710_DEBUG("CMDTAG");
++ d_buf[0] = CMDTAG;
++ } else {
++ TS0710_DEBUG("DATATAG");
++ d_buf[0] = DATATAG;
++ }
++
++ TS0710_DEBUGHEX(d_buf, c + 1);
++
++ send_info->frame = d_buf;
++ queue_uih(send_info, c + 1, ts0710, dlci);
++ send_info->filled = 1;
++ clear_bit(BUF_BUSY, &send_info->flags);
++
++ post_recv = 0;
++ if (dlci == TS0710MUX_GPRS1_DLCI) {
++ if (add_count
++ (TS0710MUX_GPRS1_SEND_COUNT_IDX, c) < 0) {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ mux_data_count2[TS0710MUX_GPRS1_SEND_COUNT_IDX]
++ += c;
++ }
++ } else if (dlci == TS0710MUX_GPRS2_DLCI) {
++ if (add_count
++ (TS0710MUX_GPRS2_SEND_COUNT_IDX, c) < 0) {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ mux_data_count2[TS0710MUX_GPRS2_SEND_COUNT_IDX]
++ += c;
++ }
++ }
++
++ if (post_recv)
++ schedule_work(&post_recv_tqueue);
++
++ if (mux_chars_in_serial_buffer(COMM_FOR_MUX_TTY) == 0) {
++ /* Sending bottom half should be
++ run after return from this function */
++ mux_sched_send();
++ }
++ return c;
++ } else {
++ TS0710_PRINTK("MUX mux_write: DLCI %d not connected\n", dlci);
++ return -EDISCONNECTED;
++ }
++}
++
++static int mux_write_room(struct tty_struct *tty)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int retval;
++ int line;
++ __u8 dlci;
++ mux_send_struct *send_info;
++
++ retval = 0;
++ if (!tty) {
++ goto out;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ goto out;
++ }
++
++ dlci = tty2dlci[line];
++ if (ts0710->dlci[0].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped on all channels, returning ZERO\n");
++ goto out;
++ } else if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped, returning ZERO\n");
++ goto out;
++ } else if (ts0710->dlci[dlci].state != CONNECTED) {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ goto out;
++ }
++
++ if (!(mux_send_info_flags[line])) {
++ goto out;
++ }
++ send_info = mux_send_info[line];
++ if (!send_info) {
++ goto out;
++ }
++ if (send_info->filled) {
++ goto out;
++ }
++
++ retval = ts0710->dlci[dlci].mtu - 1;
++
++ out:
++ return retval;
++}
++
++static int mux_ioctl(struct tty_struct *tty, struct file *file,
++ unsigned int cmd, unsigned long arg)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ __u8 dlci;
++
++ UNUSED_PARAM(file);
++ UNUSED_PARAM(arg);
++
++ if (!tty) {
++ return -EIO;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return -ENODEV;
++ }
++
++ dlci = tty2dlci[line];
++ switch (cmd) {
++ case TS0710MUX_IO_MSC_HANGUP:
++ if (ts0710_msc_msg(ts0710, EA | RTR | DV, MCC_CMD, dlci) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++
++ case TS0710MUX_IO_TEST_CMD:
++ return ts0710_exec_test_cmd();
++/*
++ case TS0710MUX_IO_DLCI_FC_ON:
++ if( line == 0 ) {
++ break;
++ }
++ if( ts0710_msc_msg(ts0710, EA | RTC | RTR | DV, MCC_CMD, (__u8)line) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++
++ case TS0710MUX_IO_DLCI_FC_OFF:
++ if( line == 0 ) {
++ break;
++ }
++ if( ts0710_msc_msg(ts0710, EA | FC | RTC | RTR | DV, MCC_CMD, (__u8)line) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++
++ case TS0710MUX_IO_FC_ON:
++ if( line != 0 ) {
++ break;
++ }
++ if( ts0710_fcon_msg(ts0710, MCC_CMD) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++
++ case TS0710MUX_IO_FC_OFF:
++ if( line != 0 ) {
++ break;
++ }
++ if( ts0710_fcoff_msg(ts0710, MCC_CMD) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++*/
++ default:
++ break;
++ }
++ return -ENOIOCTLCMD;
++}
++
++static void mux_flush_buffer(struct tty_struct *tty)
++{
++ int line;
++
++ if (!tty) {
++ return;
++ }
++
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return;
++ }
++
++ TS0710_PRINTK("MUX %s: line is:%d\n", __FUNCTION__, line);
++
++ if ((mux_send_info_flags[line])
++ && (mux_send_info[line])
++ && (mux_send_info[line]->filled)) {
++
++ mux_send_info[line]->filled = 0;
++ }
++
++ wake_up_interruptible(&tty->write_wait);
++#ifdef SERIAL_HAVE_POLL_WAIT
++ wake_up_interruptible(&tty->poll_wait);
++#endif
++ if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&
++ tty->ldisc.write_wakeup) {
++ (tty->ldisc.write_wakeup) (tty);
++ }
++
++/*
++ if( (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0) ) {
++ TS0710_PRINTK("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n", __FUNCTION__);
++
++#ifndef USB_FOR_MUX
++ TS0710_PRINTK("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n", __FUNCTION__);
++ TS0710_SIG2APLOGD();
++#endif
++
++ return;
++ }
++ return COMM_FOR_MUX_DRIVER->flush_buffer(COMM_FOR_MUX_TTY);
++*/
++}
++
++static int mux_open(struct tty_struct *tty, struct file *filp)
++{
++ int retval;
++ int line;
++ __u8 dlci;
++ __u8 cmdtty;
++ __u8 datatty;
++ mux_send_struct *send_info;
++ mux_recv_struct *recv_info;
++
++ UNUSED_PARAM(filp);
++
++ retval = -ENODEV;
++ if ((COMM_FOR_MUX_DRIVER == NULL) || (COMM_FOR_MUX_TTY == NULL)) {
++
++#ifdef USB_FOR_MUX
++ TS0710_PRINTK("MUX: please install and open IPC-USB first\n");
++#else
++ TS0710_PRINTK("MUX: please install and open ttyS0 first\n");
++#endif
++
++ goto out;
++ }
++
++ if (!tty) {
++ goto out;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ goto out;
++ }
++#ifdef TS0710SERVER
++ /* do nothing as a server */
++ mux_tty[line]++;
++ retval = 0;
++#else
++ mux_tty[line]++;
++ dlci = tty2dlci[line];
++
++/* if( dlci == 1 ) { */
++ /* Open server channel 0 first */
++ if ((retval = ts0710_open_channel(0)) != 0) {
++ TS0710_PRINTK("MUX: Can't connect server channel 0!\n");
++ ts0710_init();
++
++ mux_tty[line]--;
++ goto out;
++ }
++/* } */
++
++ /* Allocate memory first. As soon as connection has been established, MUX may receive */
++ if (mux_send_info_flags[line] == 0) {
++ send_info =
++ (mux_send_struct *) kmalloc(sizeof(mux_send_struct),
++ GFP_KERNEL);
++ if (!send_info) {
++ retval = -ENOMEM;
++
++ mux_tty[line]--;
++ goto out;
++ }
++ send_info->length = 0;
++ send_info->flags = 0;
++ send_info->filled = 0;
++ mux_send_info[line] = send_info;
++ mux_send_info_flags[line] = 1;
++ TS0710_DEBUG("Allocate mux_send_info for /dev/mux%d", line);
++ }
++
++ if (mux_recv_info_flags[line] == 0) {
++ recv_info =
++ (mux_recv_struct *) kmalloc(sizeof(mux_recv_struct),
++ GFP_KERNEL);
++ if (!recv_info) {
++ mux_send_info_flags[line] = 0;
++ kfree(mux_send_info[line]);
++ mux_send_info[line] = 0;
++ TS0710_DEBUG("Free mux_send_info for /dev/mux%d", line);
++ retval = -ENOMEM;
++
++ mux_tty[line]--;
++ goto out;
++ }
++ recv_info->length = 0;
++ recv_info->total = 0;
++ recv_info->mux_packet = 0;
++ recv_info->next = 0;
++ recv_info->no_tty = line;
++ recv_info->post_unthrottle = 0;
++ mux_recv_info[line] = recv_info;
++ mux_recv_info_flags[line] = 1;
++ TS0710_DEBUG("Allocate mux_recv_info for /dev/mux%d", line);
++ }
++
++ /* Now establish DLCI connection */
++ cmdtty = dlci2tty[dlci].cmdtty;
++ datatty = dlci2tty[dlci].datatty;
++ if ((mux_tty[cmdtty] > 0) || (mux_tty[datatty] > 0)) {
++ if ((retval = ts0710_open_channel(dlci)) != 0) {
++ TS0710_PRINTK("MUX: Can't connected channel %d!\n",
++ dlci);
++ ts0710_reset_dlci(dlci);
++
++ mux_send_info_flags[line] = 0;
++ kfree(mux_send_info[line]);
++ mux_send_info[line] = 0;
++ TS0710_DEBUG("Free mux_send_info for /dev/mux%d", line);
++
++ mux_recv_info_flags[line] = 0;
++ free_mux_recv_struct(mux_recv_info[line]);
++ mux_recv_info[line] = 0;
++ TS0710_DEBUG("Free mux_recv_info for /dev/mux%d", line);
++
++ mux_tty[line]--;
++ goto out;
++ }
++ }
++
++ retval = 0;
++#endif
++ out:
++ return retval;
++}
++
++/* mux dispatcher, call from serial.c receiver_chars() */
++void mux_dispatcher(struct tty_struct *tty)
++{
++ UNUSED_PARAM(tty);
++
++ schedule_work(&receive_tqueue);
++}
++
++/*For BP UART problem Begin*/
++#ifdef TS0710SEQ2
++static int send_ack(ts0710_con * ts0710, __u8 seq_num, __u8 bp_seq1,
++ __u8 bp_seq2)
++#else
++static int send_ack(ts0710_con * ts0710, __u8 seq_num)
++#endif
++{
++ __u8 buf[20];
++ short_frame *ack;
++
++#ifdef TS0710SEQ2
++ static __u16 ack_seq = 0;
++#endif
++
++ ack = (short_frame *) (buf + 1);
++ ack->h.addr.ea = 1;
++ ack->h.addr.cr = ((ts0710->initiator) & 0x1);
++ ack->h.addr.d = 0;
++ ack->h.addr.server_chn = 0;
++ ack->h.control = ACK;
++ ack->h.length.ea = 1;
++
++#ifdef TS0710SEQ2
++ ack->h.length.len = 5;
++ ack->data[0] = seq_num;
++ ack->data[1] = bp_seq1;
++ ack->data[2] = bp_seq2;
++ ack->data[3] = (ack_seq & 0xFF);
++ ack->data[4] = (ack_seq >> 8) & 0xFF;
++ ack_seq++;
++ ack->data[5] = crc_calc((__u8 *) ack, SHORT_CRC_CHECK);
++#else
++ ack->h.length.len = 1;
++ ack->data[0] = seq_num;
++ ack->data[1] = crc_calc((__u8 *) ack, SHORT_CRC_CHECK);
++#endif
++
++ return basic_write(ts0710, buf,
++ (sizeof(short_frame) + FCS_SIZE +
++ ack->h.length.len));
++}
++
++/*For BP UART problem End*/
++
++static void receive_worker(void *private_)
++{
++ struct tty_struct *tty = COMM_FOR_MUX_TTY;
++ int i, count;
++ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
++ static unsigned char *tbuf_ptr = &tbuf[0];
++ static unsigned char *start_flag = 0;
++ unsigned char *search, *to, *from;
++ short_frame *short_pkt;
++ long_frame *long_pkt;
++ static int framelen = -1;
++
++ /*For BP UART problem Begin */
++ static __u8 expect_seq = 0;
++ __u32 crc_error;
++ __u8 *uih_data_start;
++ __u32 uih_len;
++ /*For BP UART problem End */
++
++ UNUSED_PARAM(private_);
++
++ if (!tty)
++ return;
++
++#ifdef USB_FOR_MUX
++ TS0710_DEBUG("Receive following bytes from IPC-USB");
++#else
++ TS0710_DEBUG("Receive following bytes from UART");
++#endif
++
++ TS0710_DEBUGHEX(cp, count);
++
++ if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
++ TS0710_PRINTK
++ ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
++ count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
++ }
++
++ count = tty_buffer_request_room(tty, count);
++
++ for (i = 0; i < count; i++)
++ tty_insert_flip_char(tty, tbuf_ptr[i], TTY_NORMAL);
++
++ tbuf_ptr += count;
++ search = &tbuf[0];
++
++ if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
++ schedule_work(&receive_tqueue);
++ return;
++ }
++
++ if ((start_flag != 0) && (framelen != -1)) {
++ if ((tbuf_ptr - start_flag) < framelen) {
++ clear_bit(RECV_RUNNING, &mux_recv_flags);
++ return;
++ }
++ }
++
++ while (1) {
++ if (start_flag == 0) { /* Frame Start Flag not found */
++ framelen = -1;
++ while (search < tbuf_ptr) {
++ if (*search == TS0710_BASIC_FLAG) {
++ start_flag = search;
++ break;
++ }
++#ifdef TS0710LOG
++ else {
++ TS0710_LOG(">S %02x %c\n", *search,
++ *search);
++ }
++#endif
++
++ search++;
++ }
++
++ if (start_flag == 0) {
++ tbuf_ptr = &tbuf[0];
++ break;
++ }
++ } else { /* Frame Start Flag found */
++ /* 1 start flag + 1 address + 1 control + 1 or 2 length + lengths data + 1 FCS + 1 end flag */
++ /* For BP UART problem 1 start flag + 1 seq_num + 1 address + ...... */
++ /*if( (framelen == -1) && ((tbuf_ptr - start_flag) > TS0710_MAX_HDR_SIZE) ) */
++ if ((framelen == -1) && ((tbuf_ptr - start_flag) > (TS0710_MAX_HDR_SIZE + SEQ_FIELD_SIZE))) { /*For BP UART problem */
++ /*short_pkt = (short_frame *) (start_flag + 1); */
++ short_pkt = (short_frame *) (start_flag + ADDRESS_FIELD_OFFSET); /*For BP UART problem */
++ if (short_pkt->h.length.ea == 1) { /* short frame */
++ /*framelen = TS0710_MAX_HDR_SIZE + short_pkt->h.length.len + 1; */
++ framelen = TS0710_MAX_HDR_SIZE + short_pkt->h.length.len + 1 + SEQ_FIELD_SIZE; /*For BP UART problem */
++ } else { /* long frame */
++ /*long_pkt = (long_frame *) (start_flag + 1); */
++ long_pkt = (long_frame *) (start_flag + ADDRESS_FIELD_OFFSET); /*For BP UART problem */
++ /*framelen = TS0710_MAX_HDR_SIZE + GET_LONG_LENGTH( long_pkt->h.length ) + 2; */
++ framelen = TS0710_MAX_HDR_SIZE + GET_LONG_LENGTH(long_pkt->h.length) + 2 + SEQ_FIELD_SIZE; /*For BP UART problem */
++ }
++
++ /*if( framelen > TS0710MUX_MAX_TOTAL_FRAME_SIZE ) { */
++ if (framelen > (TS0710MUX_MAX_TOTAL_FRAME_SIZE + SEQ_FIELD_SIZE)) { /*For BP UART problem */
++ TS0710_LOGSTR_FRAME(0, start_flag,
++ (tbuf_ptr -
++ start_flag));
++ TS0710_PRINTK
++ ("MUX Error: %s: frame length:%d is bigger than Max total frame size:%d\n",
++ /*__FUNCTION__, framelen, TS0710MUX_MAX_TOTAL_FRAME_SIZE);*/
++ __FUNCTION__, framelen, (TS0710MUX_MAX_TOTAL_FRAME_SIZE + SEQ_FIELD_SIZE)); /*For BP UART problem */
++ search = start_flag + 1;
++ start_flag = 0;
++ framelen = -1;
++ continue;
++ }
++ }
++
++ if ((framelen != -1)
++ && ((tbuf_ptr - start_flag) >= framelen)) {
++ if (*(start_flag + framelen - 1) == TS0710_BASIC_FLAG) { /* OK, We got one frame */
++
++ /*For BP UART problem Begin */
++ TS0710_LOGSTR_FRAME(0, start_flag,
++ framelen);
++ TS0710_DEBUGHEX(start_flag, framelen);
++
++ short_pkt =
++ (short_frame *) (start_flag +
++ ADDRESS_FIELD_OFFSET);
++ if ((short_pkt->h.length.ea) == 0) {
++ long_pkt =
++ (long_frame *) (start_flag +
++ ADDRESS_FIELD_OFFSET);
++ uih_len =
++ GET_LONG_LENGTH(long_pkt->h.
++ length);
++ uih_data_start =
++ long_pkt->h.data;
++
++ crc_error =
++ crc_check((__u8
++ *) (start_flag +
++ SLIDE_BP_SEQ_OFFSET),
++ LONG_CRC_CHECK +
++ 1,
++ *(uih_data_start +
++ uih_len));
++ } else {
++ uih_len =
++ short_pkt->h.length.len;
++ uih_data_start =
++ short_pkt->data;
++
++ crc_error =
++ crc_check((__u8
++ *) (start_flag +
++ SLIDE_BP_SEQ_OFFSET),
++ SHORT_CRC_CHECK +
++ 1,
++ *(uih_data_start +
++ uih_len));
++ }
++
++ if (!crc_error) {
++ if (expect_seq ==
++ *(start_flag +
++ SLIDE_BP_SEQ_OFFSET)) {
++ expect_seq++;
++ if (expect_seq >= 4) {
++ expect_seq = 0;
++ }
++#ifdef TS0710SEQ2
++ send_ack
++ (&ts0710_connection,
++ expect_seq,
++ *(start_flag +
++ FIRST_BP_SEQ_OFFSET),
++ *(start_flag +
++ SECOND_BP_SEQ_OFFSET));
++#else
++ send_ack
++ (&ts0710_connection,
++ expect_seq);
++#endif
++
++ ts0710_recv_data
++ (&ts0710_connection,
++ start_flag +
++ ADDRESS_FIELD_OFFSET,
++ framelen - 2 -
++ SEQ_FIELD_SIZE);
++ } else {
++
++#ifdef TS0710DEBUG
++ if (*
++ (start_flag +
++ SLIDE_BP_SEQ_OFFSET)
++ != 0x9F) {
++#endif
++
++ TS0710_LOG
++ ("MUX sequence number %d is not expected %d, discard data!\n",
++ *
++ (start_flag
++ +
++ SLIDE_BP_SEQ_OFFSET),
++ expect_seq);
++
++#ifdef TS0710SEQ2
++ send_ack
++ (&ts0710_connection,
++ expect_seq,
++ *
++ (start_flag
++ +
++ FIRST_BP_SEQ_OFFSET),
++ *
++ (start_flag
++ +
++ SECOND_BP_SEQ_OFFSET));
++#else
++ send_ack
++ (&ts0710_connection,
++ expect_seq);
++#endif
++
++#ifdef TS0710DEBUG
++ } else {
++ *(uih_data_start
++ + uih_len) =
++ 0;
++ TS0710_PRINTK
++ ("MUX bp log: %s\n",
++ uih_data_start);
++ }
++#endif
++
++ }
++ } else { /* crc_error */
++ search = start_flag + 1;
++ start_flag = 0;
++ framelen = -1;
++ continue;
++ } /*End if(!crc_error) */
++
++ /*For BP UART problem End */
++
++/*For BP UART problem
++ TS0710_LOGSTR_FRAME(0, start_flag, framelen);
++ TS0710_DEBUGHEX(start_flag, framelen);
++ ts0710_recv_data(&ts0710_connection, start_flag + 1, framelen - 2);
++*/
++ search = start_flag + framelen;
++ } else {
++ TS0710_LOGSTR_FRAME(0, start_flag,
++ framelen);
++ TS0710_DEBUGHEX(start_flag, framelen);
++ TS0710_PRINTK
++ ("MUX: Lost synchronization!\n");
++ search = start_flag + 1;
++ }
++
++ start_flag = 0;
++ framelen = -1;
++ continue;
++ }
++
++ if (start_flag != &tbuf[0]) {
++ to = tbuf;
++ from = start_flag;
++ count = tbuf_ptr - start_flag;
++ while (count--) {
++ *to++ = *from++;
++ }
++
++ tbuf_ptr -= (start_flag - tbuf);
++ start_flag = tbuf;
++ }
++ break;
++ } /* End Frame Start Flag found */
++ } /* End while(1) */
++
++ clear_bit(RECV_RUNNING, &mux_recv_flags);
++}
++
++static void post_recv_worker(void *private_)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int tty_idx;
++ struct tty_struct *tty;
++ __u8 post_recv;
++ __u8 flow_control;
++ __u8 dlci;
++ mux_recv_struct *recv_info, *recv_info2, *post_recv_q;
++ int recv_room;
++ mux_recv_packet *recv_packet, *recv_packet2;
++ __u8 j;
++
++ UNUSED_PARAM(private_);
++
++ if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
++ schedule_work(&post_recv_tqueue);
++ return;
++ }
++
++ TS0710_DEBUG("Enter into post_recv_worker");
++
++ post_recv = 0;
++ if (!mux_recv_queue) {
++ goto out;
++ }
++
++ post_recv_q = NULL;
++ recv_info2 = mux_recv_queue;
++ while ((recv_info = recv_info2)) {
++ recv_info2 = recv_info->next;
++
++ if (!(recv_info->total)) {
++ TS0710_PRINTK
++ ("MUX Error: %s: Should not get here, recv_info->total == 0 \n",
++ __FUNCTION__);
++ continue;
++ }
++
++ tty_idx = recv_info->no_tty;
++ dlci = tty2dlci[tty_idx];
++ tty = mux_table[tty_idx];
++ if ((!mux_tty[tty_idx]) || (!tty)) {
++ TS0710_PRINTK
++ ("MUX: No application waiting for, free recv_info! tty_idx:%d\n",
++ tty_idx);
++ mux_recv_info_flags[tty_idx] = 0;
++ free_mux_recv_struct(mux_recv_info[tty_idx]);
++ mux_recv_info[tty_idx] = 0;
++ ts0710_flow_on(dlci, ts0710);
++ continue;
++ }
++
++ TS0710_DEBUG("/dev/mux%d recv_info->total is: %d", tty_idx,
++ recv_info->total);
++
++ if (test_bit(TTY_THROTTLED, &tty->flags)) {
++ add_post_recv_queue(&post_recv_q, recv_info);
++ continue;
++ } else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
++ post_recv = 1;
++ add_post_recv_queue(&post_recv_q, recv_info);
++ continue;
++ }
++
++ flow_control = 0;
++ recv_packet2 = recv_info->mux_packet;
++ while (recv_info->total) {
++ recv_room = 65535;
++ if (tty->receive_room)
++ recv_room = tty->receive_room;
++
++ if (recv_info->length) {
++ if (recv_room < recv_info->length) {
++ flow_control = 1;
++ break;
++ }
++
++ /* Put queued data into read buffer of tty */
++ TS0710_DEBUG
++ ("Put queued recv data into read buffer of /dev/mux%d",
++ tty_idx);
++ TS0710_DEBUGHEX(recv_info->data,
++ recv_info->length);
++ (tty->ldisc.receive_buf) (tty, recv_info->data,
++ NULL,
++ recv_info->length);
++ recv_info->total -= recv_info->length;
++ recv_info->length = 0;
++ } else { /* recv_info->length == 0 */
++ if ((recv_packet = recv_packet2)) {
++ recv_packet2 = recv_packet->next;
++
++ if (recv_room < recv_packet->length) {
++ flow_control = 1;
++ recv_info->mux_packet =
++ recv_packet;
++ break;
++ }
++
++ /* Put queued data into read buffer of tty */
++ TS0710_DEBUG
++ ("Put queued recv data into read buffer of /dev/mux%d",
++ tty_idx);
++ TS0710_DEBUGHEX(recv_packet->data,
++ recv_packet->length);
++ (tty->ldisc.receive_buf) (tty,
++ recv_packet->
++ data, NULL,
++ recv_packet->
++ length);
++ recv_info->total -= recv_packet->length;
++ free_mux_recv_packet(recv_packet);
++ } else {
++ TS0710_PRINTK
++ ("MUX Error: %s: Should not get here, recv_info->total is:%u \n",
++ __FUNCTION__, recv_info->total);
++ }
++ } /* End recv_info->length == 0 */
++ } /* End while( recv_info->total ) */
++
++ if (!(recv_info->total)) {
++ /* Important clear */
++ recv_info->mux_packet = 0;
++
++ if (recv_info->post_unthrottle) {
++ /* Do something for post_unthrottle */
++ ts0710_flow_on(dlci, ts0710);
++ recv_info->post_unthrottle = 0;
++ }
++ } else {
++ add_post_recv_queue(&post_recv_q, recv_info);
++
++ if (flow_control) {
++ /* Do something for flow control */
++ if (recv_info->post_unthrottle) {
++ set_bit(TTY_THROTTLED, &tty->flags);
++ recv_info->post_unthrottle = 0;
++ } else {
++ ts0710_flow_off(tty, dlci, ts0710);
++ }
++ } /* End if( flow_control ) */
++ }
++ } /* End while( (recv_info = recv_info2) ) */
++
++ mux_recv_queue = post_recv_q;
++
++ out:
++ if (post_recv_count_flag) {
++ post_recv_count_flag = 0;
++ for (j = 0; j < TS0710MUX_COUNT_IDX_NUM; j++) {
++ if (mux_data_count2[j] > 0) {
++ if (add_count(j, mux_data_count2[j]) == 0) {
++ mux_data_count2[j] = 0;
++ } else {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ }
++ }
++ } /* End for (j = 0; j < TS0710MUX_COUNT_IDX_NUM; j++) */
++ }
++ /* End if( post_recv_count_flag ) */
++ if (post_recv)
++ schedule_work(&post_recv_tqueue);
++ clear_bit(RECV_RUNNING, &mux_recv_flags);
++}
++
++/* mux sender, call from serial.c transmit_chars() */
++void mux_sender(void)
++{
++ mux_send_struct *send_info;
++ int chars;
++ __u8 idx;
++
++ chars = mux_chars_in_serial_buffer(COMM_FOR_MUX_TTY);
++ if (!chars) {
++ /* chars == 0 */
++ TS0710_LOG("<[]\n");
++ mux_sched_send();
++ return;
++ }
++
++ idx = mux_send_info_idx;
++ if ((idx < NR_MUXS) && (mux_send_info_flags[idx])) {
++ send_info = mux_send_info[idx];
++ if ((send_info)
++ && (send_info->filled)
++ && (send_info->length <=
++ (TS0710MUX_SERIAL_BUF_SIZE - chars))) {
++
++ mux_sched_send();
++ }
++ }
++}
++
++static void send_worker(void *private_)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ __u8 j;
++ mux_send_struct *send_info;
++ int chars;
++ struct tty_struct *tty;
++ __u8 dlci;
++
++ UNUSED_PARAM(private_);
++
++ TS0710_DEBUG("Enter into send_worker");
++
++ mux_send_info_idx = NR_MUXS;
++
++ if (ts0710->dlci[0].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped on all channels\n");
++ return;
++ }
++
++ for (j = 0; j < NR_MUXS; j++) {
++
++ if (!(mux_send_info_flags[j])) {
++ continue;
++ }
++
++ send_info = mux_send_info[j];
++ if (!send_info) {
++ continue;
++ }
++
++ if (!(send_info->filled)) {
++ continue;
++ }
++
++ dlci = tty2dlci[j];
++ if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped on channel DLCI: %d\n",
++ dlci);
++ continue;
++ } else if (ts0710->dlci[dlci].state != CONNECTED) {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ send_info->filled = 0;
++ continue;
++ }
++
++ chars = mux_chars_in_serial_buffer(COMM_FOR_MUX_TTY);
++ if (send_info->length <= (TS0710MUX_SERIAL_BUF_SIZE - chars)) {
++ TS0710_DEBUG("Send queued UIH for /dev/mux%d", j);
++ basic_write(ts0710, (__u8 *) send_info->frame,
++ send_info->length);
++ send_info->length = 0;
++ send_info->filled = 0;
++ } else {
++ mux_send_info_idx = j;
++ break;
++ }
++ } /* End for() loop */
++
++ /* Queue UIH data to be transmitted */
++ for (j = 0; j < NR_MUXS; j++) {
++
++ if (!(mux_send_info_flags[j])) {
++ continue;
++ }
++
++ send_info = mux_send_info[j];
++ if (!send_info) {
++ continue;
++ }
++
++ if (send_info->filled) {
++ continue;
++ }
++
++ /* Now queue UIH data to send_info->buf */
++
++ if (!mux_tty[j]) {
++ continue;
++ }
++
++ tty = mux_table[j];
++ if (!tty) {
++ continue;
++ }
++
++ dlci = tty2dlci[j];
++ if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped on channel DLCI: %d\n",
++ dlci);
++ continue;
++ } else if (ts0710->dlci[dlci].state != CONNECTED) {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ continue;
++ }
++
++ if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP))
++ && tty->ldisc.write_wakeup) {
++ (tty->ldisc.write_wakeup) (tty);
++ }
++ wake_up_interruptible(&tty->write_wait);
++
++#ifdef SERIAL_HAVE_POLL_WAIT
++ wake_up_interruptible(&tty->poll_wait);
++#endif
++
++ if (send_info->filled) {
++ if (j < mux_send_info_idx) {
++ mux_send_info_idx = j;
++ }
++ }
++ } /* End for() loop */
++}
++
++static int get_count(__u8 idx)
++{
++ int ret;
++
++ if (idx > TS0710MUX_COUNT_MAX_IDX) {
++ TS0710_PRINTK("MUX get_count: invalid idx: %d!\n", idx);
++ return -1;
++ }
++
++ down(&mux_data_count_mutex[idx]);
++ ret = mux_data_count[idx];
++ up(&mux_data_count_mutex[idx]);
++
++ return ret;
++}
++
++static int set_count(__u8 idx, int count)
++{
++ if (idx > TS0710MUX_COUNT_MAX_IDX) {
++ TS0710_PRINTK("MUX set_count: invalid idx: %d!\n", idx);
++ return -1;
++ }
++ if (count < 0) {
++ TS0710_PRINTK("MUX set_count: invalid count: %d!\n", count);
++ return -1;
++ }
++
++ down(&mux_data_count_mutex[idx]);
++ mux_data_count[idx] = count;
++ up(&mux_data_count_mutex[idx]);
++
++ return 0;
++}
++
++static int add_count(__u8 idx, int count)
++{
++ if (idx > TS0710MUX_COUNT_MAX_IDX) {
++ TS0710_PRINTK("MUX add_count: invalid idx: %d!\n", idx);
++ return -1;
++ }
++ if (count <= 0) {
++ TS0710_PRINTK("MUX add_count: invalid count: %d!\n", count);
++ return -1;
++ }
++
++ if (down_trylock(&mux_data_count_mutex[idx]))
++ return -1;
++ mux_data_count[idx] += count;
++ up(&mux_data_count_mutex[idx]);
++
++ return 0;
++}
++
++ssize_t file_proc_read(struct file * file, char *buf, size_t size,
++ loff_t * ppos)
++{
++ gprs_bytes gprsData[TS0710MUX_GPRS_SESSION_MAX];
++ int bufLen = sizeof(gprs_bytes) * TS0710MUX_GPRS_SESSION_MAX;
++
++ UNUSED_PARAM(file);
++ UNUSED_PARAM(size);
++ UNUSED_PARAM(ppos);
++
++ gprsData[0].recvBytes = get_count(TS0710MUX_GPRS1_RECV_COUNT_IDX);
++ gprsData[0].sentBytes = get_count(TS0710MUX_GPRS1_SEND_COUNT_IDX);
++ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].recvBytes =
++ get_count(TS0710MUX_GPRS2_RECV_COUNT_IDX);
++ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].sentBytes =
++ get_count(TS0710MUX_GPRS2_SEND_COUNT_IDX);
++
++ copy_to_user(buf, gprsData, bufLen);
++
++ return bufLen;
++}
++
++ssize_t file_proc_write(struct file * file, const char *buf, size_t count,
++ loff_t * ppos)
++{
++ gprs_bytes gprsData[TS0710MUX_GPRS_SESSION_MAX];
++ int bufLen = sizeof(gprs_bytes) * TS0710MUX_GPRS_SESSION_MAX;
++
++ UNUSED_PARAM(file);
++ UNUSED_PARAM(count);
++ UNUSED_PARAM(ppos);
++
++ memset(gprsData, 0, bufLen);
++
++ copy_from_user(gprsData, buf, bufLen);
++
++ set_count(TS0710MUX_GPRS1_RECV_COUNT_IDX, gprsData[0].recvBytes);
++ set_count(TS0710MUX_GPRS1_SEND_COUNT_IDX, gprsData[0].sentBytes);
++ set_count(TS0710MUX_GPRS2_RECV_COUNT_IDX,
++ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].recvBytes);
++ set_count(TS0710MUX_GPRS2_SEND_COUNT_IDX,
++ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].sentBytes);
++
++ return bufLen;
++}
++
++static void gprs_proc_init(void)
++{
++ gprs_proc_file =
++ create_proc_entry("gprsbytes", S_IRUSR | S_IWUSR, NULL);
++ gprs_proc_file->proc_fops = &file_proc_operations;
++}
++
++static void gprs_proc_exit(void)
++{
++ remove_proc_entry("gprsbytes", gprs_proc_file);
++}
++
++static int __init mux_init(void)
++{
++ __u8 j;
++
++ if (COMM_FOR_MUX_DRIVER == NULL) {
++
++#ifdef USB_FOR_MUX
++ panic("please install IPC-USB first\n");
++#else
++ panic("please install ttyS0 first\n");
++#endif
++
++ }
++
++ ts0710_init();
++
++ for (j = 0; j < NR_MUXS; j++) {
++ mux_send_info_flags[j] = 0;
++ mux_send_info[j] = 0;
++ mux_recv_info_flags[j] = 0;
++ mux_recv_info[j] = 0;
++ }
++ mux_send_info_idx = NR_MUXS;
++ mux_recv_queue = NULL;
++ mux_recv_flags = 0;
++
++ for (j = 0; j < TS0710MUX_COUNT_IDX_NUM; j++) {
++ mux_data_count[j] = 0;
++ mux_data_count2[j] = 0;
++ init_MUTEX(&mux_data_count_mutex[j]);
++ }
++ post_recv_count_flag = 0;
++
++ INIT_WORK(&send_tqueue, send_worker, NULL);
++ INIT_WORK(&receive_tqueue, receive_worker, NULL);
++ INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
++
++ memset(&mux_driver, 0, sizeof(struct tty_driver));
++ memset(&mux_tty, 0, sizeof(mux_tty));
++ mux_driver.magic = TTY_DRIVER_MAGIC;
++ mux_driver.driver_name = "ts0710mux";
++ mux_driver.name = "ts0710mux";
++ mux_driver.major = TS0710MUX_MAJOR;
++ mux_driver.minor_start = TS0710MUX_MINOR_START;
++ mux_driver.num = NR_MUXS;
++ mux_driver.type = TTY_DRIVER_TYPE_SERIAL;
++ mux_driver.subtype = SERIAL_TYPE_NORMAL;
++ mux_driver.init_termios = tty_std_termios;
++ mux_driver.init_termios.c_iflag = 0;
++ mux_driver.init_termios.c_oflag = 0;
++ mux_driver.init_termios.c_cflag = B38400 | CS8 | CREAD;
++ mux_driver.init_termios.c_lflag = 0;
++ mux_driver.flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
++
++ mux_driver.ttys = mux_table;
++ mux_driver.termios = mux_termios;
++ mux_driver.termios_locked = mux_termios_locked;
++// mux_driver.driver_state = mux_state;
++ mux_driver.other = NULL;
++
++ mux_driver.open = mux_open;
++ mux_driver.close = mux_close;
++ mux_driver.write = mux_write;
++ mux_driver.write_room = mux_write_room;
++ mux_driver.flush_buffer = mux_flush_buffer;
++ mux_driver.chars_in_buffer = mux_chars_in_buffer;
++ mux_driver.throttle = mux_throttle;
++ mux_driver.unthrottle = mux_unthrottle;
++ mux_driver.ioctl = mux_ioctl;
++ mux_driver.owner = THIS_MODULE;
++
++ if (tty_register_driver(&mux_driver))
++ panic("Couldn't register mux driver");
++
++ COMM_MUX_DISPATCHER = mux_dispatcher;
++ COMM_MUX_SENDER = mux_sender;
++
++ gprs_proc_init();
++
++ return 0;
++}
++
++static void __exit mux_exit(void)
++{
++ __u8 j;
++
++ COMM_MUX_DISPATCHER = NULL;
++ COMM_MUX_SENDER = NULL;
++
++ gprs_proc_exit();
++
++ mux_send_info_idx = NR_MUXS;
++ mux_recv_queue = NULL;
++ for (j = 0; j < NR_MUXS; j++) {
++ if ((mux_send_info_flags[j]) && (mux_send_info[j])) {
++ kfree(mux_send_info[j]);
++ }
++ mux_send_info_flags[j] = 0;
++ mux_send_info[j] = 0;
++
++ if ((mux_recv_info_flags[j]) && (mux_recv_info[j])) {
++ free_mux_recv_struct(mux_recv_info[j]);
++ }
++ mux_recv_info_flags[j] = 0;
++ mux_recv_info[j] = 0;
++ }
++
++ if (tty_unregister_driver(&mux_driver))
++ panic("Couldn't unregister mux driver");
++}
++
++module_init(mux_init);
++module_exit(mux_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
++MODULE_DESCRIPTION("TS 07.10 Multiplexer");
+Index: linux-2.6.21/drivers/char/ts0710_mux.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/drivers/char/ts0710_mux.h 2007-04-26 20:09:29.000000000 +0200
+@@ -0,0 +1,103 @@
++/*
++ * mux_macro.h
++ *
++ * Copyright (C) 2002 2005 Motorola
++ *
++ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
++ *
++ *
++ * 11/18/2002 (Motorola) - Initial version
++ *
++ */
++
++/*
++* This header file should be included by both MUX and other applications
++* which access MUX device files. It gives the additional macro definitions
++* shared between MUX and applications.
++*/
++
++/* MUX DLCI(Data Link Connection Identifier) Configuration */
++/*
++* DLCI Service
++* 0 Control Channel
++* 1 Voice Call & Network-related
++* 2 SMS MO
++* 3 SMS MT
++* 4 Phonebook & related
++* 5 MISC
++* 6 CSD/FAX
++* 7 GPRS1
++* 8 GPRS2
++* 9 Logger CMD
++* 10 Logger Data
++* 11 Test CMD
++* 12 AGPS
++* 13 Net Monitor
++*/
++
++/* Mapping between DLCI and MUX device files */
++/*
++* File Name Minor DLCI AT Command/Data
++* /dev/mux0 0 1 AT Command
++* /dev/mux1 1 2 AT Command
++* /dev/mux2 2 3 AT Command
++* /dev/mux3 3 4 AT Command
++* /dev/mux4 4 5 AT Command
++* /dev/mux5 5 6 AT Command
++* /dev/mux6 6 7 AT Command
++* /dev/mux7 7 8 AT Command
++* /dev/mux8 8 6 Data
++* /dev/mux9 9 7 Data
++* /dev/mux10 10 8 Data
++* /dev/mux11 11 9 Data
++* /dev/mux12 12 10 Data
++* /dev/mux13 13 11 Data
++* /dev/mux14 14 12 Data
++* /dev/mux15 15 13 Data
++*/
++
++#define MUX_CMD_FILE_VOICE_CALL "/dev/mux0"
++#define MUX_CMD_FILE_SMS_MO "/dev/mux1"
++#define MUX_CMD_FILE_SMS_MT "/dev/mux2"
++#define MUX_CMD_FILE_PHONEBOOK "/dev/mux3"
++#define MUX_CMD_FILE_MISC "/dev/mux4"
++#define MUX_CMD_FILE_CSD "/dev/mux5"
++#define MUX_CMD_FILE_GPRS1 "/dev/mux6"
++#define MUX_CMD_FILE_GPRS2 "/dev/mux7"
++
++#define MUX_DATA_FILE_CSD "/dev/mux8"
++#define MUX_DATA_FILE_GPRS1 "/dev/mux9"
++#define MUX_DATA_FILE_GPRS2 "/dev/mux10"
++#define MUX_DATA_FILE_LOGGER_CMD "/dev/mux11"
++#define MUX_DATA_FILE_LOGGER_DATA "/dev/mux12"
++#define MUX_DATA_FILE_TEST_CMD "/dev/mux13"
++#define MUX_DATA_FILE_AGPS "/dev/mux14"
++#define MUX_DATA_FILE_NET_MONITOR "/dev/mux15"
++
++#define NUM_MUX_CMD_FILES 8
++#define NUM_MUX_DATA_FILES 8
++#define NUM_MUX_FILES ( NUM_MUX_CMD_FILES + NUM_MUX_DATA_FILES )
++
++/* Special ioctl() upon a MUX device file for hanging up a call */
++#define TS0710MUX_IO_MSC_HANGUP 0x54F0
++
++/* Special ioctl() upon a MUX device file for MUX loopback test */
++#define TS0710MUX_IO_TEST_CMD 0x54F1
++
++/* Special Error code might be return from write() to a MUX device file */
++#define EDISCONNECTED 900 /* Logical data link is disconnected */
++
++/* Special Error code might be return from open() to a MUX device file */
++#define EREJECTED 901 /* Logical data link connection request is rejected */
+Index: linux-2.6.21/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/drivers/char/ts0710_mux_usb.c 2007-04-26 20:09:29.000000000 +0200
+@@ -0,0 +1,868 @@
++/*
++ * linux/drivers/usb/ipcusb.c
++ *
++ * Implementation of a ipc driver based Intel's Bulverde USB Host
++ * Controller.
++ *
++ * Copyright (C) 2003-2005 Motorola
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ *
++ * 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
++ *
++ * 2003-Nov-03 - (Motorola) created
++ * 2004-Feb-20 - (Motorola) Add Power Manager codes
++ * 2004-Apr-14 - (Motorola) Update Suspend/Resume codes
++ * 2004-May-10 - (Motorola) Add unlink_urbs codes and do some updates of send
++ * out urb sequence
++ * 2006-Jun-22 - (Harald Welte) port to Linux 2.6.x
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/list.h>
++#include <linux/errno.h>
++#include <asm/uaccess.h>
++#include <asm/hardware.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch-pxa/pxa-regs.h>
++#include <asm/arch-pxa/ezx.h>
++#include <linux/slab.h>
++#include <linux/miscdevice.h>
++#include <linux/init.h>
++#include <linux/timer.h>
++#include <linux/delay.h>
++#include <linux/sched.h>
++#include <linux/tty.h>
++#include <linux/tty_driver.h>
++#include <linux/tty_flip.h>
++#include <linux/circ_buf.h>
++#include <linux/usb.h>
++
++#include "ts0710_mux_usb.h"
++
++/*Macro defined for this driver*/
++#define DRIVER_VERSION "1.0alpha1"
++#define DRIVER_AUTHOR "Motorola / Harald Welte <laforge@openezx.org>"
++#define DRIVER_DESC "USB IPC Driver (TS07.10 lowlevel)"
++#define MOTO_IPC_VID 0x22b8
++#define MOTO_IPC_PID 0x3006
++#define IBUF_SIZE 32 /*urb size*/
++#define IPC_USB_XMIT_SIZE 1024
++#define IPC_URB_SIZE 32
++#define IPC_USB_WRITE_INIT 0
++#define IPC_USB_WRITE_XMIT 1
++#define IPC_USB_PROBE_READY 3
++#define IPC_USB_PROBE_NOT_READY 4
++#define DBG_MAX_BUF_SIZE 1024
++#define ICL_EVENT_INTERVAL (HZ)
++#undef BVD_DEBUG
++
++#define IS_EP_BULK(ep) ((ep).bmAttributes == USB_ENDPOINT_XFER_BULK ? 1 : 0)
++#define IS_EP_BULK_IN(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN)
++#define IS_EP_BULK_OUT(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT)
++/*End defined macro*/
++
++/*global values defined*/
++static struct usb_driver usb_ipc_driver;
++static struct timer_list ipcusb_timer;
++static struct timer_list suspend_timer;
++static struct timer_list wakeup_timer;
++static struct tty_struct ipcusb_tty; /* the coresponding tty struct, we just use flip buffer here. */
++static struct tty_driver ipcusb_tty_driver; /* the coresponding tty driver, we just use write and chars in buff here*/
++struct tty_driver *usb_for_mux_driver = NULL;
++struct tty_struct *usb_for_mux_tty = NULL;
++void (*usb_mux_dispatcher)(struct tty_struct *tty) = NULL;
++void (*usb_mux_sender)(void) = NULL;
++void (*ipcusb_ap_to_bp)(unsigned char*, int) = NULL;
++void (*ipcusb_bp_to_ap)(unsigned char*, int) = NULL;
++EXPORT_SYMBOL(usb_for_mux_driver);
++EXPORT_SYMBOL(usb_for_mux_tty);
++EXPORT_SYMBOL(usb_mux_dispatcher);
++EXPORT_SYMBOL(usb_mux_sender);
++EXPORT_SYMBOL(ipcusb_ap_to_bp);
++EXPORT_SYMBOL(ipcusb_bp_to_ap);
++static int sumbit_times = 0;
++static int callback_times = 0;
++//static unsigned long last_jiff = 0;
++extern int usbh_finished_resume;
++/*end global values defined*/
++
++MODULE_AUTHOR(DRIVER_AUTHOR);
++MODULE_DESCRIPTION(DRIVER_DESC);
++MODULE_LICENSE("GPL");
++
++#ifdef BVD_DEBUG
++#define bvd_dbg(format, arg...) printk(__FILE__ ": " format "\n" , ## arg)
++#else
++#define bvd_dbg(format, arg...) do {} while (0)
++#endif
++
++/* USB device context */
++typedef struct {
++ struct list_head list;
++ int size;
++ char *body;
++} buf_list_t;
++
++struct ipc_usb_data {
++ u_int8_t write_finished_flag;
++ u_int8_t write_flag,
++ ipc_flag,
++ suspend_flag;
++ struct usb_device *ipc_dev;
++ struct urb readurb_mux,
++ writeurb_mux,
++ writeurb_dsplog;
++ char *obuf, *ibuf;
++ int writesize; /* max packet size for the
++ output bulk endpoint *
++ transfer buffers */
++
++ struct circ_buf xmit; /* write cric bufffer */
++ struct list_head in_buf_list;
++ char bulk_in_ep_mux,
++ bulk_out_ep_mux,
++ bulk_in_ep_dsplog;
++ unsigned int ifnum;
++
++ struct tasklet_struct bh,
++ bh_bp;
++
++ spinlock_t lock;
++};
++
++struct ipc_usb_data *bvd_ipc;
++
++#ifdef BVD_DEBUG
++static void bvd_dbg_hex(__u8 *buf, int len)
++{
++ static unsigned char tbuf[DBG_MAX_BUF_SIZE];
++ int i, c;
++
++ if (len <= 0)
++ return;
++
++ c = 0;
++ for (i=0; (i < len) && (c < (DBG_MAX_BUF_SIZE - 3)); i++) {
++ sprintf(&tbuf[c], "%02x ",buf[i]);
++ c += 3;
++ }
++ tbuf[c] = 0;
++
++ printk("%s: %s\n", __FUNCTION__, tbuf);
++}
++#else
++#define bvd_dbg_hex(buf, len)
++#endif
++
++static int unlink_urbs(struct urb *urb)
++{
++ unsigned long flags;
++ int retval;
++
++ spin_lock_irqsave(&bvd_ipc->lock, flags);
++
++ retval = usb_unlink_urb(urb);
++ if (retval != -EINPROGRESS && retval != 0)
++ printk("unlink urb err, %d", retval);
++
++ spin_unlock_irqrestore(&bvd_ipc->lock, flags);
++ return retval;
++}
++
++static void append_to_inbuf_list(struct urb *urb)
++{
++ buf_list_t *inbuf;
++ int count = urb->actual_length;
++
++ inbuf = kmalloc(sizeof(buf_list_t), GFP_KERNEL);
++ if (!inbuf) {
++ printk("append_to_inbuf_list: (%d) out of memory!\n",
++ sizeof(buf_list_t));
++ return;
++ }
++
++ inbuf->size = count;
++ inbuf->body = kmalloc(sizeof(char)*count, GFP_KERNEL);
++ if (!inbuf->body) {
++ kfree(inbuf);
++ printk("append_to_inbuf_list: (%d) out of memory!\n",
++ sizeof(char)*count);
++ return;
++ }
++ memcpy(inbuf->body, (unsigned char*)urb->transfer_buffer, count);
++ list_add_tail(&inbuf->list, &bvd_ipc->in_buf_list);
++}
++
++static void ipcusb_timeout(unsigned long data)
++{
++ struct tty_struct *tty = &ipcusb_tty;
++ struct urb *urb = (struct urb *)data;
++
++ bvd_dbg("ipcusb_timeout***");
++
++ while (!(list_empty(&bvd_ipc->in_buf_list))) {
++ int count;
++ buf_list_t *inbuf;
++ struct list_head *ptr = NULL;
++
++ ptr = bvd_ipc->in_buf_list.next;
++ inbuf = list_entry (ptr, buf_list_t, list);
++ count = inbuf->size;
++ if (tty_insert_flip_string(tty, inbuf->body, count) >= count) {
++ list_del(ptr);
++ kfree(inbuf->body);
++ inbuf->body = NULL;
++ kfree(inbuf);
++ } else {
++ bvd_dbg("ipcusb_timeout: bvd_ipc->in_buf_list empty!");
++ break;
++ }
++ }
++
++ if (usb_mux_dispatcher)
++ usb_mux_dispatcher(tty); /**call Liu changhui's func.**/
++
++ if (list_empty(&bvd_ipc->in_buf_list)) {
++ urb->actual_length = 0;
++ urb->dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(urb, GFP_ATOMIC))
++ bvd_dbg("ipcusb_timeout: failed resubmitting read urb");
++ bvd_dbg("ipcusb_timeout: resubmited read urb");
++ } else {
++ ipcusb_timer.data = (unsigned long)urb;
++ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
++ }
++}
++
++static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
++{
++ buf_list_t *inbuf;
++ int count = urb->actual_length;
++ struct tty_struct *tty = &ipcusb_tty;
++
++ bvd_dbg("usb_ipc_read_bulk: begining!");
++ if (urb->status)
++ printk("nonzero read bulk status received: %d\n", urb->status);
++
++ bvd_dbg("usb_ipc_read_bulk: urb->actual_length=%d", urb->actual_length);
++ bvd_dbg("usb_ipc_read_bulk: urb->transfer_buffer:");
++
++ bvd_dbg_hex((unsigned char*)urb->transfer_buffer, urb->actual_length);
++
++ if (count > 0 && ((*ipcusb_bp_to_ap) != NULL))
++ (*ipcusb_bp_to_ap)(urb->transfer_buffer, urb->actual_length);
++
++ if (!(list_empty(&bvd_ipc->in_buf_list))) {
++ int need_mux = 0;
++
++ bvd_dbg("usb_ipc_read_bulk: some urbs in_buf_list");
++ if (count > 0) {
++ bvd_ipc->suspend_flag = 1;
++ append_to_inbuf_list(urb); /* append the current received urb */
++#if 0
++ if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
++ {
++ last_jiff = jiffies;
++ queue_apm_event(KRNL_ICL, NULL);
++ }
++#endif
++ }
++
++ while (!(list_empty(&bvd_ipc->in_buf_list))) {
++ struct list_head* ptr = NULL;
++ ptr = bvd_ipc->in_buf_list.next;
++ inbuf = list_entry(ptr, buf_list_t, list);
++ count = inbuf->size;
++ need_mux = 1;
++
++ tty_insert_flip_string(tty, inbuf->body, count);
++
++ list_del(ptr);
++ kfree(inbuf->body);
++ inbuf->body = NULL;
++ kfree(inbuf);
++ }
++
++ if (usb_mux_dispatcher && need_mux)
++ usb_mux_dispatcher(tty); /* call Liu changhui's func. */
++
++ if (list_empty(&bvd_ipc->in_buf_list)) {
++ urb->actual_length = 0;
++ urb->dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(urb, GFP_ATOMIC))
++ bvd_dbg("usb_ipc_read_bulk: "
++ "failed resubmitting read urb");
++ bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
++ } else {
++ ipcusb_timer.data = (unsigned long)urb;
++ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
++ }
++ } else if (count > 0) {
++ bvd_dbg("usb_ipc_read_bulk: no urbs in_buf_list");
++ bvd_ipc->suspend_flag = 1;
++
++ if (tty_insert_flip_string(tty, urb->transfer_buffer,
++ count) < count) {
++ bvd_ipc->suspend_flag = 1;
++ append_to_inbuf_list(urb);
++ ipcusb_timer.data = (unsigned long)urb;
++ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
++#if 0
++ if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
++ {
++ last_jiff = jiffies;
++ queue_apm_event(KRNL_ICL, NULL);
++ }
++#endif
++ }
++
++ if (usb_mux_dispatcher)
++ usb_mux_dispatcher(tty); /* call Liu changhui's func. */
++
++ urb->actual_length = 0;
++ urb->dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(urb, GFP_ATOMIC))
++ bvd_dbg("failed resubmitting read urb");
++#if 0
++ if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
++ {
++ last_jiff = jiffies;
++ queue_apm_event(KRNL_ICL, NULL);
++ }
++#endif
++ bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
++ }
++
++ bvd_dbg("usb_ipc_read_bulk: completed!!!");
++}
++
++static void usb_ipc_write_bulk(struct urb *urb, struct pt_regs *regs)
++{
++ callback_times++;
++ bvd_ipc->write_finished_flag = 1;
++
++ bvd_dbg("usb_ipc_write_bulk: begining!");
++ //printk("%s: write_finished_flag=%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
++
++ if (urb->status)
++ printk("nonzero write bulk status received: %d\n", urb->status);
++
++ if (usb_mux_sender)
++ usb_mux_sender(); /**call Liu changhui's func**/
++
++ //printk("usb_ipc_write_bulk: mark ipcusb_softint!\n");
++ tasklet_schedule(&bvd_ipc->bh);
++
++ bvd_dbg("usb_ipc_write_bulk: finished!");
++}
++
++static void wakeup_timeout(unsigned long data)
++{
++ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++ bvd_dbg("wakup_timeout: send GPIO_MCU_INT_SW signal!");
++}
++
++static void suspend_timeout(unsigned long data)
++{
++ if (bvd_ipc->suspend_flag == 1) {
++ bvd_ipc->suspend_flag = 0;
++ mod_timer(&suspend_timer, jiffies+(5000*HZ/1000));
++ bvd_dbg("suspend_timeout: add the suspend timer again");
++ } else {
++ unlink_urbs(&bvd_ipc->readurb_mux);
++ UHCRHPS3 = 0x4;
++ mdelay(40);
++ bvd_dbg("suspend_timeout: send SUSPEND signal! UHCRHPS3=0x%x",
++ UHCRHPS3);
++ }
++}
++
++static void ipcusb_xmit_data(void)
++{
++ int c, count = IPC_URB_SIZE;
++ int result = 0;
++ int buf_flag = 0;
++ int buf_num = 0;
++
++ //printk("%s: sumbit_times=%d, callback_times=%d\n", __FUNCTION__, sumbit_times, callback_times);
++ if (bvd_ipc->write_finished_flag == 0)
++ return;
++
++ while (1) {
++ c = CIRC_CNT_TO_END(bvd_ipc->xmit.head, bvd_ipc->xmit.tail,
++ IPC_USB_XMIT_SIZE);
++ if (count < c)
++ c = count;
++ if (c <= 0)
++ break;
++
++ memcpy(bvd_ipc->obuf+buf_num,
++ bvd_ipc->xmit.buf + bvd_ipc->xmit.tail, c);
++ buf_flag = 1;
++ bvd_ipc->xmit.tail = ((bvd_ipc->xmit.tail + c)
++ & (IPC_USB_XMIT_SIZE-1));
++ count -= c;
++ buf_num += c;
++ }
++
++ if (buf_num == 0) {
++ bvd_dbg("ipcusb_xmit_data: buf_num=%d, add suspend_timer",
++ buf_num);
++ bvd_ipc->suspend_flag = 0;
++ mod_timer(&suspend_timer, jiffies+(5000*HZ/1000));
++ }
++
++ bvd_dbg("ipcusb_xmit_data: buf_num=%d", buf_num);
++ bvd_dbg("ipcusb_xmit_data: bvd_ipc->obuf: ");
++
++ bvd_dbg_hex((bvd_ipc->obuf)-buf_num, buf_num);
++
++ if (buf_flag) {
++ bvd_ipc->writeurb_mux.transfer_buffer_length = buf_num;
++ bvd_dbg("ipcusb_xmit_data: copy data to write urb finished! ");
++
++ if ((UHCRHPS3 & 0x4) == 0x4) {
++ static int ret;
++ int time = 0;
++
++ /* if BP sleep, wake up BP first */
++ pxa_gpio_mode(GPIO_IN | 41);
++ if (GPIO_is_high(41)) {
++ if (GPIO_is_high(GPIO_MCU_INT_SW))
++ GPCR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++ else
++ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++
++ time = jiffies;
++ while (GPIO_is_high(41) && (jiffies < (time+HZ)));
++
++ if (GPIO_is_high(41)) {
++ printk("%s: Wakeup BP timeout! BP state is %d\n",
++ __FUNCTION__, GPIO_is_high(41));
++ }
++ if (GPIO_is_high(GPIO_MCU_INT_SW))
++ GPCR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++ else
++ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++ }
++
++ /* Resume BP */
++ UHCRHPS3 = 0x8;
++ mdelay(40);
++ bvd_dbg("ipcusb_xmit_data: Send RESUME signal! UHCRHPS3=0x%x",
++ UHCRHPS3);
++ /*send IN token*/
++ bvd_ipc->readurb_mux.actual_length = 0;
++ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
++ if (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
++ printk("ipcusb_xmit_data: usb_submit_urb(read mux bulk)"
++ "failed! status=%d\n", ret);
++ bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
++ }
++
++ sumbit_times++;
++ bvd_ipc->write_finished_flag = 0;
++ //printk("%s: clear write_finished_flag:%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
++ bvd_ipc->writeurb_mux.dev = bvd_ipc->ipc_dev;
++ if (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC))
++ warn("ipcusb_xmit_data: funky result! result=%d\n", result);
++
++ bvd_dbg("ipcusb_xmit_data: usb_submit_urb finished! result:%d", result);
++
++ }
++}
++
++static void usbipc_bh_func(unsigned long param)
++{
++ ipcusb_xmit_data();
++}
++
++extern void get_halted_bit(void);
++
++static void usbipc_bh_bp_func(unsigned long param)
++{
++ if ((UHCRHPS3 & 0x4) == 0x4) {
++ UHCRHPS3 = 0x8;
++ mdelay(40);
++ bvd_dbg("ipcusb_softint_send_readurb: Send RESUME signal! "
++ "UHCRHPS3=0x%x", UHCRHPS3);
++ }
++ if (bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) {
++ get_halted_bit();
++
++ /*send a IN token*/
++ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC)) {
++ bvd_dbg("ipcusb_softint_send_readurb: "
++ "usb_submit_urb(read mux bulk) failed!");
++ }
++ bvd_dbg("ipcusb_softint_send_readurb: Send a IN token successfully!");
++ bvd_ipc->suspend_flag = 0;
++ bvd_dbg("ipcusb_softint_send_readurb: add suspend_timer");
++ mod_timer(&suspend_timer, jiffies+(5000*HZ/1000));
++ }
++}
++
++static int usb_ipc_write(struct tty_struct *tty,
++ const unsigned char *buf, int count)
++{
++ int c, ret = 0;
++
++ bvd_dbg("usb_ipc_write: count=%d, buf: ", count);
++ bvd_dbg_hex(buf, count);
++
++ if (count <= 0)
++ return 0;
++
++ if (*ipcusb_ap_to_bp != NULL)
++ (*ipcusb_ap_to_bp)(buf, count);
++
++ bvd_ipc->suspend_flag = 1;
++
++ if ((bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) &&
++ (bvd_ipc->xmit.head == bvd_ipc->xmit.tail)) {
++ bvd_dbg("usb_ipc_write: set write_flag");
++ bvd_ipc->write_flag = IPC_USB_WRITE_XMIT;
++ }
++
++ while (1) {
++ c = CIRC_SPACE_TO_END(bvd_ipc->xmit.head,
++ bvd_ipc->xmit.tail, IPC_USB_XMIT_SIZE);
++ if (count < c)
++ c = count;
++ if (c <= 0)
++ break;
++
++ memcpy(bvd_ipc->xmit.buf + bvd_ipc->xmit.head, buf, c);
++ bvd_ipc->xmit.head = ((bvd_ipc->xmit.head + c)
++ & (IPC_USB_XMIT_SIZE-1));
++ buf += c;
++ count -= c;
++ ret += c;
++ }
++ bvd_dbg("usb_ipc_write: ret=%d, bvd_ipc->xmit.buf: ", ret);
++
++ bvd_dbg_hex(bvd_ipc->xmit.buf, ret);
++
++ if (bvd_ipc->write_flag == IPC_USB_WRITE_XMIT) {
++ bvd_ipc->write_flag = IPC_USB_WRITE_INIT;
++ bvd_dbg("usb_ipc_write: mark ipcusb_softint");
++ tasklet_schedule(&bvd_ipc->bh);
++ }
++
++ bvd_dbg("usb_ipc_write: ret=%d\n", ret);
++ return ret;
++}
++
++static int usb_ipc_chars_in_buffer(struct tty_struct *tty)
++{
++ return CIRC_CNT(bvd_ipc->xmit.head, bvd_ipc->xmit.tail, IPC_USB_XMIT_SIZE);
++}
++
++void usb_send_readurb(void)
++{
++ //printk("usb_send_readurb: begining!UHCRHPS3=0x%x, usbh_finished_resume=%d\n", UHCRHPS3, usbh_finished_resume);
++
++ if (usbh_finished_resume == 0)
++ return;
++
++ tasklet_schedule(&bvd_ipc->bh_bp);
++}
++
++static int usb_ipc_probe(struct usb_interface *intf,
++ const struct usb_device_id *id)
++{
++ struct usb_device *usbdev = interface_to_usbdev(intf);
++ struct usb_config_descriptor *ipccfg;
++ struct usb_interface_descriptor *interface;
++ struct usb_endpoint_descriptor *endpoint;
++ int ep_cnt, readsize, writesize;
++ char have_bulk_in_mux, have_bulk_out_mux;
++
++ bvd_dbg("usb_ipc_probe: vendor id 0x%x, device id 0x%x",
++ usbdev->descriptor.idVendor, usbdev->descriptor.idProduct);
++
++ if ((usbdev->descriptor.idVendor != MOTO_IPC_VID) ||
++ (usbdev->descriptor.idProduct != MOTO_IPC_PID))
++ return -ENODEV;
++
++ /* a2590c : dsplog interface is not supported by this driver */
++ if (intf->minor == 2) /* dsplog interface number is 2 */
++ return -1;
++
++ bvd_dbg("usb_ipc_probe: USB dev address:%p", usbdev);
++ bvd_dbg("usb_ipc_probe: ifnum:%u", intf->minor);
++
++ ipccfg = &usbdev->actconfig->desc;
++ bvd_dbg("usb_ipc_prob: config%d", ipccfg->bConfigurationValue);
++ bvd_dbg("usb_ipc_prob: bNumInterfaces = %d", ipccfg->bNumInterfaces);
++
++ /* After this point we can be a little noisy about what we are trying
++ * to configure, hehe. */
++ if (usbdev->descriptor.bNumConfigurations != 1) {
++ info("usb_ipc_probe: Only one device configuration "
++ "is supported.");
++ return -1;
++ }
++
++ if (usbdev->config[0].desc.bNumInterfaces != 3) {
++ info("usb_ipc_probe: Only three device interfaces are "
++ "supported.");
++ return -1;
++ }
++
++ interface = &intf->cur_altsetting->desc;
++ endpoint = &intf->cur_altsetting->endpoint[0].desc;
++ /* Start checking for two bulk endpoints or ... FIXME: This is a future
++ * enhancement...*/
++ bvd_dbg("usb_ipc_probe: Number of Endpoints:%d",
++ (int) interface->bNumEndpoints);
++ if (interface->bNumEndpoints != 2) {
++ info("usb_ipc_probe: Only two endpoints supported.");
++ return -1;
++ }
++
++ ep_cnt = have_bulk_in_mux = have_bulk_out_mux = 0;
++
++ bvd_dbg("usb_ipc_probe: endpoint[0] is:%x",
++ (&endpoint[0])->bEndpointAddress);
++ bvd_dbg("usb_ipc_probe: endpoint[1] is:%x ",
++ (&endpoint[1])->bEndpointAddress);
++
++ while (ep_cnt < interface->bNumEndpoints) {
++
++ if (!have_bulk_in_mux && IS_EP_BULK_IN(endpoint[ep_cnt])) {
++ bvd_dbg("usb_ipc_probe: bEndpointAddress(IN) is:%x ",
++ (&endpoint[ep_cnt])->bEndpointAddress);
++ have_bulk_in_mux =
++ (&endpoint[ep_cnt])->bEndpointAddress;
++ readsize = (&endpoint[ep_cnt])->wMaxPacketSize;
++ bvd_dbg("usb_ipc_probe: readsize=%d", readsize);
++ ep_cnt++;
++ continue;
++ }
++
++ if (!have_bulk_out_mux && IS_EP_BULK_OUT(endpoint[ep_cnt])) {
++ bvd_dbg("usb_ipc_probe: bEndpointAddress(OUT) is:%x ",
++ (&endpoint[ep_cnt])->bEndpointAddress);
++ have_bulk_out_mux =
++ (&endpoint[ep_cnt])->bEndpointAddress;
++ writesize = (&endpoint[ep_cnt])->wMaxPacketSize;
++ bvd_dbg("usb_ipc_probe: writesize=%d", writesize);
++ ep_cnt++;
++ continue;
++ }
++
++ info("usb_ipc_probe: Undetected endpoint ^_^ ");
++ /* Shouldn't ever get here unless we have something weird */
++ return -1;
++ }
++
++ /* Perform a quick check to make sure that everything worked as it
++ * should have. */
++
++ switch (interface->bNumEndpoints) {
++ case 2:
++ if (!have_bulk_in_mux || !have_bulk_out_mux) {
++ info("usb_ipc_probe: Two bulk endpoints required.");
++ return -1;
++ }
++ break;
++ default:
++ info("usb_ipc_probe: Endpoint determination failed ^_^ ");
++ return -1;
++ }
++
++ /* Ok, now initialize all the relevant values */
++ if (!(bvd_ipc->obuf = (char *)kmalloc(writesize, GFP_KERNEL))) {
++ err("usb_ipc_probe: Not enough memory for the output buffer.");
++ kfree(bvd_ipc);
++ return -1;
++ }
++ bvd_dbg("usb_ipc_probe: obuf address:%p", bvd_ipc->obuf);
++
++ if (!(bvd_ipc->ibuf = (char *)kmalloc(readsize, GFP_KERNEL))) {
++ err("usb_ipc_probe: Not enough memory for the input buffer.");
++ kfree(bvd_ipc->obuf);
++ kfree(bvd_ipc);
++ return -1;
++ }
++ bvd_dbg("usb_ipc_probe: ibuf address:%p", bvd_ipc->ibuf);
++
++ bvd_ipc->ipc_flag = IPC_USB_PROBE_READY;
++ bvd_ipc->write_finished_flag = 1;
++ bvd_ipc->suspend_flag = 1;
++ bvd_ipc->bulk_in_ep_mux= have_bulk_in_mux;
++ bvd_ipc->bulk_out_ep_mux= have_bulk_out_mux;
++ bvd_ipc->ipc_dev = usbdev;
++ bvd_ipc->writesize = writesize;
++ INIT_LIST_HEAD (&bvd_ipc->in_buf_list);
++
++ bvd_ipc->bh.func = usbipc_bh_func;
++ bvd_ipc->bh.data = (unsigned long) bvd_ipc;
++
++ bvd_ipc->bh_bp.func = usbipc_bh_bp_func;
++ bvd_ipc->bh_bp.data = (unsigned long) bvd_ipc;
++
++ /*Build a write urb*/
++ usb_fill_bulk_urb(&bvd_ipc->writeurb_mux, usbdev,
++ usb_sndbulkpipe(bvd_ipc->ipc_dev,
++ bvd_ipc->bulk_out_ep_mux),
++ bvd_ipc->obuf, writesize, usb_ipc_write_bulk,
++ bvd_ipc);
++ //bvd_ipc->writeurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
++
++ /*Build a read urb and send a IN token first time*/
++ usb_fill_bulk_urb(&bvd_ipc->readurb_mux, usbdev,
++ usb_rcvbulkpipe(usbdev, bvd_ipc->bulk_in_ep_mux),
++ bvd_ipc->ibuf, readsize, usb_ipc_read_bulk, bvd_ipc);
++ //bvd_ipc->readurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
++
++ usb_driver_claim_interface(&usb_ipc_driver, intf, bvd_ipc);
++ //usb_driver_claim_interface(&usb_ipc_driver, &ipccfg->interface[1], bvd_ipc);
++
++ // a2590c: dsplog is not supported by this driver
++ // usb_driver_claim_interface(&usb_ipc_driver,
++ // &ipccfg->interface[2], bvd_ipc);
++ /*send a IN token first time*/
++ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
++ printk("usb_ipc_prob: usb_submit_urb(read mux bulk) failed!\n");
++
++ bvd_dbg("usb_ipc_prob: Send a IN token successfully!");
++
++ if (bvd_ipc->xmit.head != bvd_ipc->xmit.tail) {
++ printk("usb_ipc_probe: mark ipcusb_softint!\n");
++ tasklet_schedule(&bvd_ipc->bh);
++ }
++
++ printk("usb_ipc_probe: completed probe!");
++ usb_set_intfdata(intf, &bvd_ipc);
++ return 0;
++}
++
++static void usb_ipc_disconnect(struct usb_interface *intf)
++{
++ //struct usb_device *usbdev = interface_to_usbdev(intf);
++ struct ipc_usb_data *bvd_ipc_disconnect = usb_get_intfdata(intf);
++
++ printk("usb_ipc_disconnect:*** \n");
++
++ if ((UHCRHPS3 & 0x4) == 0)
++ usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
++
++ usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
++
++ bvd_ipc_disconnect->ipc_flag = IPC_USB_PROBE_NOT_READY;
++ kfree(bvd_ipc_disconnect->ibuf);
++ kfree(bvd_ipc_disconnect->obuf);
++
++ usb_driver_release_interface(&usb_ipc_driver,
++ bvd_ipc_disconnect->ipc_dev->actconfig->interface[0]);
++ usb_driver_release_interface(&usb_ipc_driver,
++ bvd_ipc_disconnect->ipc_dev->actconfig->interface[1]);
++
++ //a2590c: dsplog interface is not supported by this driver
++ //usb_driver_release_interface(&usb_ipc_driver, &bvd_ipc_disconnect->ipc_dev->actconfig->interface[2]);
++
++ bvd_ipc_disconnect->ipc_dev = NULL;
++
++ usb_set_intfdata(intf, NULL);
++
++ printk("usb_ipc_disconnect completed!\n");
++}
++
++static struct usb_device_id usb_ipc_id_table[] = {
++ { USB_DEVICE(MOTO_IPC_VID, MOTO_IPC_PID) },
++ { } /* Terminating entry */
++};
++
++static struct usb_driver usb_ipc_driver = {
++ .name = "usb ipc",
++ .probe = usb_ipc_probe,
++ .disconnect = usb_ipc_disconnect,
++ .id_table = usb_ipc_id_table,
++};
++
++static int __init usb_ipc_init(void)
++{
++ int result;
++
++ bvd_dbg("init usb_ipc");
++ /* register driver at the USB subsystem */
++ result = usb_register(&usb_ipc_driver);
++ if (result < 0) {
++ err ("usb ipc driver could not be registered");
++ return result;
++ }
++
++ /*init the related mux interface*/
++ if (!(bvd_ipc = kzalloc(sizeof(struct ipc_usb_data), GFP_KERNEL))) {
++ err("usb_ipc_init: Out of memory.");
++ usb_deregister(&usb_ipc_driver);
++ return -ENOMEM;
++ }
++ bvd_dbg("usb_ipc_init: Address of bvd_ipc:%p", bvd_ipc);
++
++ if (!(bvd_ipc->xmit.buf = kmalloc(IPC_USB_XMIT_SIZE, GFP_KERNEL))) {
++ err("usb_ipc_init: Not enough memory for the input buffer.");
++ kfree(bvd_ipc);
++ usb_deregister(&usb_ipc_driver);
++ return -ENOMEM;
++ }
++ bvd_dbg("usb_ipc_init: bvd_ipc->xmit.buf address:%p",
++ bvd_ipc->xmit.buf);
++ bvd_ipc->ipc_dev = NULL;
++ bvd_ipc->xmit.head = bvd_ipc->xmit.tail = 0;
++ bvd_ipc->write_flag = IPC_USB_WRITE_INIT;
++
++ ipcusb_tty_driver.write = usb_ipc_write;
++ ipcusb_tty_driver.chars_in_buffer = usb_ipc_chars_in_buffer;
++
++ usb_for_mux_driver = &ipcusb_tty_driver;
++ usb_for_mux_tty = &ipcusb_tty;
++
++ /* init timers for ipcusb read process and usb suspend */
++ init_timer(&ipcusb_timer);
++ ipcusb_timer.function = ipcusb_timeout;
++
++ init_timer(&suspend_timer);
++ suspend_timer.function = suspend_timeout;
++
++ init_timer(&wakeup_timer);
++ wakeup_timer.function = wakeup_timeout;
++
++ info("USB Host(Bulverde) IPC driver registered.");
++ info(DRIVER_VERSION ":" DRIVER_DESC);
++
++ return 0;
++}
++
++static void __exit usb_ipc_exit(void)
++{
++ bvd_dbg("cleanup bvd_ipc");
++
++ kfree(bvd_ipc->xmit.buf);
++ kfree(bvd_ipc);
++ usb_deregister(&usb_ipc_driver);
++
++ info("USB Host(Bulverde) IPC driver deregistered.");
++}
++
++module_init(usb_ipc_init);
++module_exit(usb_ipc_exit);
++EXPORT_SYMBOL(usb_send_readurb);
+Index: linux-2.6.21/drivers/char/ts0710_mux_usb.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/drivers/char/ts0710_mux_usb.h 2007-04-26 20:09:29.000000000 +0200
+@@ -0,0 +1,29 @@
++/*
++ * linux/drivers/usb/ipcusb.h
++ *
++ * Implementation of a ipc driver based Intel's Bulverde USB Host
++ * Controller.
++ *
++ * Copyright (C) 2003-2005 Motorola
++ *
++ * 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
++ *
++ * 2003-Nov-18 - (Motorola) created
++ *
++ */
++extern struct tty_driver *usb_for_mux_driver;
++extern struct tty_struct *usb_for_mux_tty;
++extern void (*usb_mux_dispatcher)(struct tty_struct *tty);
++extern void (*usb_mux_sender)(void);
diff --git a/packages/linux/linux-ezx-2.6.21/mux_debug.patch b/packages/linux/linux-ezx-2.6.21/mux_debug.patch
new file mode 100644
index 0000000000..58cb25a0b6
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/mux_debug.patch
@@ -0,0 +1,551 @@
+Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux.c 2007-04-22 12:24:18.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-22 12:26:47.000000000 +0200
+@@ -85,6 +85,9 @@
+ #include "ts0710.h"
+ #include "ts0710_mux.h"
+
++#define TS0710DEBUG
++#define PRINT_OUTPUT_PRINTK
++
+ #define TS0710MUX_GPRS_SESSION_MAX 2
+ #define TS0710MUX_MAJOR 250
+ #define TS0710MUX_MINOR_START 0
+@@ -316,7 +319,7 @@
+ #ifdef TS0710DEBUG
+
+ #ifdef PRINT_OUTPUT_PRINTK
+-#define TS0710_DEBUG(fmt, arg...) printk(KERN_INFO "MUX " __FUNCTION__ ": " fmt "\n" , ## arg)
++#define TS0710_DEBUG(fmt, arg...) printk(KERN_INFO "MUX %s: " fmt "\n" , __func__, ## arg)
+ #else
+ #include "ezxlog.h"
+ static __u8 strDebug[256];
+@@ -530,10 +533,10 @@
+ if (strncmp(p->comm, "aplogd", 6) == 0) {
+ sig = 1;
+ if (send_sig(SIGUSR2, p, 1) == 0) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: success to send SIGUSR2 to aplogd!\n");
+ } else {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: failure to send SIGUSR2 to aplogd!\n");
+ }
+ break;
+@@ -542,7 +545,7 @@
+ read_unlock(&tasklist_lock);
+
+ if (!sig) {
+- TS0710_PRINTK("MUX: not found aplogd!\n");
++ TS0710_DEBUG("MUX: not found aplogd!\n");
+ }
+ }
+ #else
+@@ -559,11 +562,11 @@
+ buf[len + 1] = TS0710_BASIC_FLAG;
+
+ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX basic_write: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n");
+
+ #ifndef USB_FOR_MUX
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX basic_write: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n");
+ TS0710_SIG2APLOGD();
+ #endif
+@@ -577,7 +580,7 @@
+ res = COMM_FOR_MUX_DRIVER->write(COMM_FOR_MUX_TTY, buf, len + 2);
+
+ if (res != len + 2) {
+- TS0710_PRINTK("MUX basic_write: Write Error!\n");
++ TS0710_DEBUG("MUX basic_write: Write Error!\n");
+ return -1;
+ }
+
+@@ -601,7 +604,7 @@
+ TS0710_DEBUG("crc_check: CRC check OK\n");
+ return 0;
+ } else {
+- TS0710_PRINTK("MUX crc_check: CRC check failed\n");
++ TS0710_DEBUG("MUX crc_check: CRC check failed\n");
+ return 1;
+ }
+ }
+@@ -1266,7 +1269,7 @@
+ break;
+
+ case FCON: /*Flow control on command */
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Received Flow control(all channels) on command\n");
+ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
+ ts0710->dlci[0].state = CONNECTED;
+@@ -1276,7 +1279,7 @@
+ break;
+
+ case FCOFF: /*Flow control off command */
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Received Flow control(all channels) off command\n");
+ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
+ for (j = 0; j < TS0710_MAX_CHN; j++) {
+@@ -1823,7 +1826,7 @@
+ TS0710_DEBUG("UIH on channel %d\n", dlci);
+
+ if (uih_len > ts0710->dlci[dlci].mtu) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: DLCI:%d, uih_len:%d is bigger than mtu:%d, discard data!\n",
+ dlci, uih_len, ts0710->dlci[dlci].mtu);
+ break;
+@@ -1844,7 +1847,7 @@
+ dlci, tty_idx);
+ TS0710_DEBUGSTR(uih_data_start, uih_len);
+ if (!(iscmdtty[tty_idx])) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: Wrong CMDTAG on DLCI:%d, /dev/mux%d\n",
+ __FUNCTION__, dlci, tty_idx);
+ }
+@@ -1856,7 +1859,7 @@
+ ("NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
+ dlci, tty_idx);
+ if (iscmdtty[tty_idx]) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: Wrong NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
+ __FUNCTION__, dlci, tty_idx);
+ }
+@@ -1864,13 +1867,14 @@
+ }
+ tty = mux_table[tty_idx];
+ if ((!mux_tty[tty_idx]) || (!tty)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: No application waiting for, discard it! /dev/mux%d\n",
+ tty_idx);
++ TS0710_DEBUG("MUX: mux_tty[%d] = %d, tty is at %i", tty_idx, mux_tty[tty_idx], tty);
+ } else { /* Begin processing received data */
+ if ((!mux_recv_info_flags[tty_idx])
+ || (!mux_recv_info[tty_idx])) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: No mux_recv_info, discard it! /dev/mux%d\n",
+ tty_idx);
+ break;
+@@ -1878,7 +1882,7 @@
+
+ recv_info = mux_recv_info[tty_idx];
+ if (recv_info->total > 8192) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX : discard data for tty_idx:%d, recv_info->total > 8192 \n",
+ tty_idx);
+ break;
+@@ -1949,7 +1953,7 @@
+ get_mux_recv_packet
+ (uih_len);
+ if (!recv_packet) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX %s: no memory\n",
+ __FUNCTION__);
+ break;
+@@ -1980,7 +1984,7 @@
+ } else { /* recv_info->total == 0 */
+ if (uih_len >
+ TS0710MUX_RECV_BUF_SIZE) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: tty_idx:%d, uih_len == %d is too big\n",
+ tty_idx, uih_len);
+ uih_len =
+@@ -2120,12 +2124,12 @@
+ if (ts0710->dlci[dlci].state == DISCONNECTED) {
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI %d Send DISC got signal!\n",
+ dlci);
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI %d Send DISC timeout!\n", dlci);
+ continue;
+ }
+@@ -2158,7 +2162,7 @@
+ return 0;
+ } else if (ts0710->dlci[0].state == CONNECTING) {
+ /* Reentry */
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI: 0, reentry to open DLCI 0, pid: %d, %s !\n",
+ current->pid, current->comm);
+ try = 11;
+@@ -2179,13 +2183,13 @@
+ DISCONNECTED) {
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Wait for connecting got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Wait for connecting timeout!\n",
+ dlci);
+ continue;
+@@ -2199,7 +2203,7 @@
+ }
+ } else if ((ts0710->dlci[0].state != DISCONNECTED)
+ && (ts0710->dlci[0].state != REJECTED)) {
+- TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
++ TS0710_DEBUG("MUX DLCI:%d state is invalid!\n", dlci);
+ return retval;
+ } else {
+ ts0710->initiator = 1;
+@@ -2218,19 +2222,19 @@
+ retval = 0;
+ break;
+ } else if (ts0710->dlci[0].state == REJECTED) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM got rejected!\n",
+ dlci);
+ retval = -EREJECTED;
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM timeout!\n",
+ dlci);
+ continue;
+@@ -2271,13 +2275,13 @@
+ DISCONNECTED) {
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Wait for connecting got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Wait for connecting timeout!\n",
+ dlci);
+ continue;
+@@ -2296,7 +2300,7 @@
+ }
+ } else if ((ts0710->dlci[dlci].state != DISCONNECTED)
+ && (ts0710->dlci[dlci].state != REJECTED)) {
+- TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
++ TS0710_DEBUG("MUX DLCI:%d state is invalid!\n", dlci);
+ return retval;
+ } else {
+ ts0710->dlci[dlci].state = NEGOTIATING;
+@@ -2313,13 +2317,13 @@
+ if (ts0710->dlci[dlci].state == CONNECTING) {
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send pn_msg got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send pn_msg timeout!\n",
+ dlci);
+ continue;
+@@ -2344,20 +2348,20 @@
+ break;
+ } else if (ts0710->dlci[dlci].state ==
+ REJECTED) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM got rejected!\n",
+ dlci);
+ retval = -EREJECTED;
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >=
+ TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM timeout!\n",
+ dlci);
+ continue;
+@@ -2468,7 +2472,7 @@
+ schedule_work(&send_tqueue);
+ #else
+ if (!tq_serial_for_mux) {
+- TS0710_PRINTK("MUX Error: %s: tq_serial_for_mux == 0\n",
++ TS0710_DEBUG("MUX Error: %s: tq_serial_for_mux == 0\n",
+ __FUNCTION__);
+ return;
+ }
+@@ -2508,7 +2512,7 @@
+ if ((mux_tty[cmdtty] == 0) && (mux_tty[datatty] == 0)) {
+ if (dlci == 1) {
+ ts0710_close_channel(0);
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX mux_close: tapisrv might be down!!! Close DLCI 1\n");
+ TS0710_SIG2APLOGD();
+ }
+@@ -2673,12 +2677,12 @@
+ UNUSED_PARAM(tty);
+
+ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n",
+ __FUNCTION__);
+
+ #ifndef USB_FOR_MUX
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n",
+ __FUNCTION__);
+ TS0710_SIG2APLOGD();
+@@ -2724,14 +2728,14 @@
+ } else if (ts0710->dlci[dlci].state == CONNECTED) {
+
+ if (!(mux_send_info_flags[line])) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: mux_write: mux_send_info_flags[%d] == 0\n",
+ line);
+ return -ENODEV;
+ }
+ send_info = mux_send_info[line];
+ if (!send_info) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: mux_write: mux_send_info[%d] == 0\n",
+ line);
+ return -ENODEV;
+@@ -2800,7 +2804,7 @@
+ }
+ return c;
+ } else {
+- TS0710_PRINTK("MUX mux_write: DLCI %d not connected\n", dlci);
++ TS0710_DEBUG("MUX mux_write: DLCI %d not connected\n", dlci);
+ return -EDISCONNECTED;
+ }
+ }
+@@ -2940,7 +2944,7 @@
+ return;
+ }
+
+- TS0710_PRINTK("MUX %s: line is:%d\n", __FUNCTION__, line);
++ TS0710_DEBUG("MUX %s: line is:%d\n", __FUNCTION__, line);
+
+ if ((mux_send_info_flags[line])
+ && (mux_send_info[line])
+@@ -2960,10 +2964,10 @@
+
+ /*
+ if( (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0) ) {
+- TS0710_PRINTK("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n", __FUNCTION__);
++ TS0710_DEBUG("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n", __FUNCTION__);
+
+ #ifndef USB_FOR_MUX
+- TS0710_PRINTK("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n", __FUNCTION__);
++ TS0710_DEBUG("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n", __FUNCTION__);
+ TS0710_SIG2APLOGD();
+ #endif
+
+@@ -2989,9 +2993,9 @@
+ if ((COMM_FOR_MUX_DRIVER == NULL) || (COMM_FOR_MUX_TTY == NULL)) {
+
+ #ifdef USB_FOR_MUX
+- TS0710_PRINTK("MUX: please install and open IPC-USB first\n");
++ TS0710_DEBUG("MUX: please install and open IPC-USB first\n");
+ #else
+- TS0710_PRINTK("MUX: please install and open ttyS0 first\n");
++ TS0710_DEBUG("MUX: please install and open ttyS0 first\n");
+ #endif
+
+ goto out;
+@@ -3016,7 +3020,7 @@
+ /* if( dlci == 1 ) { */
+ /* Open server channel 0 first */
+ if ((retval = ts0710_open_channel(0)) != 0) {
+- TS0710_PRINTK("MUX: Can't connect server channel 0!\n");
++ TS0710_DEBUG("MUX: Can't connect server channel 0!\n");
+ ts0710_init();
+
+ mux_tty[line]--;
+@@ -3073,7 +3077,7 @@
+ datatty = dlci2tty[dlci].datatty;
+ if ((mux_tty[cmdtty] > 0) || (mux_tty[datatty] > 0)) {
+ if ((retval = ts0710_open_channel(dlci)) != 0) {
+- TS0710_PRINTK("MUX: Can't connected channel %d!\n",
++ TS0710_DEBUG("MUX: Can't connected channel %d!\n",
+ dlci);
+ ts0710_reset_dlci(dlci);
+
+@@ -3096,6 +3100,7 @@
+ retval = 0;
+ #endif
+ out:
++ TS0710_DEBUG("returning %d for open of /dev/mux%d (mux_tty[%d] = %d", retval, line, line, mux_tty[line]);
+ return retval;
+ }
+
+@@ -3178,12 +3183,12 @@
+
+ while (1) {
+ tbuf_free = TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf);
+- TS0710_PRINTK("Reading max %i bytes from ts0710_mux_usb inbuf.\n", tbuf_free);
++ TS0710_DEBUG("Reading max %i bytes from ts0710_mux_usb inbuf.\n", tbuf_free);
+ tbuf_read = get_from_inbuf_list(tbuf_ptr, tbuf_free);
+ if (tbuf_read == 0) {
+ break;
+ } else {
+- TS0710_PRINTK("Read %i bytes.\n", tbuf_read);
++ TS0710_DEBUG("Read %i bytes.\n", tbuf_read);
+ };
+ tbuf_ptr += tbuf_read;
+ };
+@@ -3192,7 +3197,7 @@
+
+ // Should be impossible?
+ //if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
+- // TS0710_PRINTK
++ // TS0710_DEBUG
+ // ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
+ // count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
+ //}
+@@ -3264,7 +3269,7 @@
+ TS0710_LOGSTR_FRAME(0, start_flag,
+ (tbuf_ptr -
+ start_flag));
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: frame length:%d is bigger than Max total frame size:%d\n",
+ /*__FUNCTION__, framelen, TS0710MUX_MAX_TOTAL_FRAME_SIZE);*/
+ __FUNCTION__, framelen, (TS0710MUX_MAX_TOTAL_FRAME_SIZE + SEQ_FIELD_SIZE)); /*For BP UART problem */
+@@ -3389,7 +3394,7 @@
+ *(uih_data_start
+ + uih_len) =
+ 0;
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX bp log: %s\n",
+ uih_data_start);
+ }
+@@ -3415,7 +3420,7 @@
+ TS0710_LOGSTR_FRAME(0, start_flag,
+ framelen);
+ TS0710_DEBUGHEX(start_flag, framelen);
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: Lost synchronization!\n");
+ search = start_flag + 1;
+ }
+@@ -3476,7 +3481,7 @@
+ recv_info2 = recv_info->next;
+
+ if (!(recv_info->total)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: Should not get here, recv_info->total == 0 \n",
+ __FUNCTION__);
+ continue;
+@@ -3486,7 +3491,7 @@
+ dlci = tty2dlci[tty_idx];
+ tty = mux_table[tty_idx];
+ if ((!mux_tty[tty_idx]) || (!tty)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: No application waiting for, free recv_info! tty_idx:%d\n",
+ tty_idx);
+ mux_recv_info_flags[tty_idx] = 0;
+@@ -3560,7 +3565,7 @@
+ recv_info->total -= recv_packet->length;
+ free_mux_recv_packet(recv_packet);
+ } else {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: Should not get here, recv_info->total is:%u \n",
+ __FUNCTION__, recv_info->total);
+ }
+@@ -3760,7 +3765,7 @@
+ int ret;
+
+ if (idx > TS0710MUX_COUNT_MAX_IDX) {
+- TS0710_PRINTK("MUX get_count: invalid idx: %d!\n", idx);
++ TS0710_DEBUG("MUX get_count: invalid idx: %d!\n", idx);
+ return -1;
+ }
+
+@@ -3774,11 +3779,11 @@
+ static int set_count(__u8 idx, int count)
+ {
+ if (idx > TS0710MUX_COUNT_MAX_IDX) {
+- TS0710_PRINTK("MUX set_count: invalid idx: %d!\n", idx);
++ TS0710_DEBUG("MUX set_count: invalid idx: %d!\n", idx);
+ return -1;
+ }
+ if (count < 0) {
+- TS0710_PRINTK("MUX set_count: invalid count: %d!\n", count);
++ TS0710_DEBUG("MUX set_count: invalid count: %d!\n", count);
+ return -1;
+ }
+
+@@ -3792,11 +3797,11 @@
+ static int add_count(__u8 idx, int count)
+ {
+ if (idx > TS0710MUX_COUNT_MAX_IDX) {
+- TS0710_PRINTK("MUX add_count: invalid idx: %d!\n", idx);
++ TS0710_DEBUG("MUX add_count: invalid idx: %d!\n", idx);
+ return -1;
+ }
+ if (count <= 0) {
+- TS0710_PRINTK("MUX add_count: invalid count: %d!\n", count);
++ TS0710_DEBUG("MUX add_count: invalid count: %d!\n", count);
+ return -1;
+ }
+
+Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux_usb.c 2007-04-22 12:26:47.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-22 12:26:47.000000000 +0200
+@@ -72,7 +72,8 @@
+ #define IPC_USB_PROBE_NOT_READY 4
+ #define DBG_MAX_BUF_SIZE 1024
+ #define ICL_EVENT_INTERVAL (HZ)
+-#undef BVD_DEBUG
++
++#define BVD_DEBUG
+
+ #define IS_EP_BULK(ep) ((ep).bmAttributes == USB_ENDPOINT_XFER_BULK ? 1 : 0)
+ #define IS_EP_BULK_IN(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN)
diff --git a/packages/linux/linux-ezx-2.6.21/pcap-ts.patch b/packages/linux/linux-ezx-2.6.21/pcap-ts.patch
new file mode 100644
index 0000000000..a07ec1abe9
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/pcap-ts.patch
@@ -0,0 +1,450 @@
+Index: linux-2.6.21/drivers/input/touchscreen/Kconfig
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/Kconfig 2007-05-03 17:39:18.000000000 -0300
++++ linux-2.6.21/drivers/input/touchscreen/Kconfig 2007-05-03 17:44:12.000000000 -0300
+@@ -164,4 +164,13 @@
+ To compile this driver as a module, choose M here: the
+ module will be called ucb1400_ts.
+
++config TOUCHSCREEN_PCAP
++ tristate "Motorola PCAP touchscreen"
++ depends on PXA_EZX
++ help
++ Say Y here if you have a Motorola EZX telephone and
++ want to support the built-in touchscreen.
++
++ If unsure, say N.
++
+ endif
+Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-05-04 04:17:22.000000000 -0300
+@@ -0,0 +1,372 @@
++/*
++ * pcap_ts.c - Touchscreen driver for Motorola PCAP2 based touchscreen as found
++ * in the EZX phone platform.
++ *
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ *
++ * Based on information found in the original Motorola 2.4.x ezx-ts.c driver.
++ *
++ * 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.
++ *
++ * May 3, 2007 - Daniel Ribeiro <drwyrm@gmail.com>
++ * Major cleanup
++ * PM Callbacks
++ *
++ * TODO:
++ * split this in a hardirq handler and a tasklet/bh
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/fs.h>
++#include <linux/string.h>
++#include <linux/pm.h>
++#include <linux/timer.h>
++//#include <linux/config.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.h>
++#include <linux/input.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx-pcap.h>
++
++#if 0
++#define DEBUGP(x, args ...) printk(x, ## args)
++#else
++#define DEBUGP(x, args ...)
++#endif
++
++#define PRESSURE 1
++#define COORDINATE 2
++#define STANDBY 3
++
++struct pcap_ts {
++ int irq_xy;
++ int irq_touch;
++ struct input_dev *input;
++ struct timer_list timer;
++
++ u_int16_t x, y;
++ u_int16_t pressure;
++
++ u_int8_t read_state;
++};
++
++#define X_AXIS_MIN 0
++#define X_AXIS_MAX 1023
++
++#define Y_AXIS_MAX X_AXIS_MAX
++#define Y_AXIS_MIN X_AXIS_MIN
++
++#define PRESSURE_MAX X_AXIS_MAX
++#define PRESSURE_MIN X_AXIS_MIN
++
++/* if we try to read faster, pressure reading becomes unreliable */
++#define SAMPLE_INTERVAL (HZ/50)
++
++
++static void pcap_ts_mode(u_int32_t mode)
++{
++ u_int32_t tmp;
++
++ ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++ tmp &= ~SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK;
++ tmp |= mode;
++ ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++}
++
++/* issue a XY read command to the ADC of PCAP2. Well get an ADCDONE2 interrupt
++ * once the result of the conversion is available */
++static void pcap_ts_start_xy_read(struct pcap_ts *pcap_ts)
++{
++ u_int32_t tmp;
++
++ ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++ tmp &= SSP_PCAP_ADC_START_VALUE_SET_MASK;
++ tmp |= SSP_PCAP_ADC_START_VALUE;
++ ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ADC2_ASC, 1);
++}
++
++/* read the XY result from the ADC of PCAP2 */
++static void pcap_ts_get_xy_value(struct pcap_ts *pcap_ts)
++{
++ u_int32_t tmp;
++
++ ezx_pcap_read(SSP_PCAP_ADJ_ADC2_REGISTER, &tmp);
++
++ if (pcap_ts->read_state == COORDINATE && !(tmp & 0x00400000)) {
++ pcap_ts->x = (tmp & SSP_PCAP_ADD1_VALUE_MASK);
++ pcap_ts->y = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
++ >>SSP_PCAP_ADD2_VALUE_SHIFT;
++ } else {
++ pcap_ts->pressure = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
++ >>SSP_PCAP_ADD2_VALUE_SHIFT;
++ }
++
++}
++
++/* PCAP2 interrupts us when ADC conversion result is available */
++static irqreturn_t pcap_ts_irq_xy(int irq, void *dev_id)
++{
++ struct pcap_ts *pcap_ts = dev_id;
++
++ pcap_ts_get_xy_value(pcap_ts);
++ DEBUGP(KERN_DEBUG "%s X=%4d, Y=%4d Z=%4d ",
++ pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS",
++ pcap_ts->x, pcap_ts->y, pcap_ts->pressure);
++
++ switch (pcap_ts->read_state) {
++ case PRESSURE:
++ if (pcap_ts->pressure >= PRESSURE_MAX ||
++ pcap_ts->pressure <= PRESSURE_MIN ) {
++ /* pen has been released (or cant read pressure - WM)*/
++ DEBUGP("UP\n");
++ /* do nothing */
++ } else {
++ /* pen has been touched down */
++ DEBUGP("DOWN\n");
++ input_report_key(pcap_ts->input, BTN_TOUCH, 1);
++ input_report_abs(pcap_ts->input, ABS_PRESSURE, pcap_ts->pressure);
++ }
++ /* switch state machine into coordinate read mode */
++ pcap_ts->read_state = COORDINATE;
++ pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
++ pcap_ts_start_xy_read(pcap_ts);
++ break;
++ case COORDINATE:
++ if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
++ pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
++ /* pen has been released */
++ DEBUGP("UP END\n");
++
++ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
++ input_report_abs(pcap_ts->input, ABS_PRESSURE, 0);
++
++ /* no need for timer, we'll get interrupted with
++ * next touch down event */
++ del_timer(&pcap_ts->timer);
++
++ /* ask PCAP2 to interrupt us if touch event happens
++ * again */
++ pcap_ts->read_state = STANDBY;
++ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++ } else {
++ DEBUGP("DOWN\n");
++ input_report_abs(pcap_ts->input, ABS_X, pcap_ts->x);
++ input_report_abs(pcap_ts->input, ABS_Y, pcap_ts->y);
++
++ /* switch back to pressure read mode */
++ pcap_ts->read_state = PRESSURE;
++ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
++ mod_timer(&pcap_ts->timer, jiffies + SAMPLE_INTERVAL);
++ }
++ input_sync(pcap_ts->input);
++ break;
++ default:
++ DEBUGP("ERROR\n");
++ break;
++ }
++
++ return IRQ_HANDLED;
++}
++
++/* PCAP2 interrupts us if the pen touches down (interrupts also on pen up - WM)*/
++static irqreturn_t pcap_ts_irq_touch(int irq, void *dev_id)
++{
++ struct pcap_ts *pcap_ts = dev_id;
++
++ /* mask Touchscreen interrupt bit, prevents further touch events
++ * from being reported to us until we're finished with reading
++ * both pressure and x/y from ADC */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 1);
++
++ DEBUGP("touched!!\n");
++ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
++ pcap_ts->read_state = PRESSURE;
++ pcap_ts_start_xy_read(pcap_ts);
++
++ return IRQ_HANDLED;
++}
++
++static void pcap_ts_timer_fn(unsigned long data)
++{
++ struct pcap_ts *pcap_ts = (struct pcap_ts *) data;
++
++ pcap_ts_start_xy_read(pcap_ts);
++}
++
++static int __init ezxts_probe(struct platform_device *pdev)
++{
++ int ret;
++ u_int32_t tmp;
++ struct pcap_ts *pcap_ts;
++ struct input_dev *input_dev;
++ int err = -ENOMEM;
++
++ pcap_ts = kzalloc(sizeof(*pcap_ts), GFP_KERNEL);
++ input_dev = input_allocate_device();
++ if (!pcap_ts || !input_dev)
++ goto fail;
++
++ pcap_ts->irq_xy = platform_get_irq(pdev, 0);
++ if (pcap_ts->irq_xy < 0) {
++ err = pcap_ts->irq_xy;
++ goto fail;
++ }
++
++ pcap_ts->irq_touch = platform_get_irq(pdev, 1);
++ if (pcap_ts->irq_touch < 0) {
++ err = pcap_ts->irq_touch;
++ goto fail;
++ }
++
++ // Some initialization before done in ssp_pcap_open()
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_TS_REFENB, 0);
++ // ack interrupts
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I, 1);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ISR_TSI, 1);
++ // unmask interrupts
++ // ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_MSR_ADCDONE2M, 0);
++ // set adc bits? FIXME I dont think its necessary - WM
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC2_ADINC1, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC2_ADINC2, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO0, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO1, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO2, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO3, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATOX, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_MTR1, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_MTR2, 0);
++
++ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++ if (ret < 0)
++ return ret;
++
++ tmp &= (~SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK);
++ tmp |= PCAP_TS_STANDBY_MODE;
++
++ ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++ if (ret < 0)
++ return ret;
++
++ err = request_irq(pcap_ts->irq_xy, pcap_ts_irq_xy, SA_INTERRUPT,
++ "PCAP Touchscreen XY", pcap_ts);
++ if (err < 0) {
++ printk(KERN_ERR "pcap_ts: can't grab xy irq %d: %d\n",
++ pcap_ts->irq_xy, err);
++ goto fail;
++ }
++
++ err = request_irq(pcap_ts->irq_touch, pcap_ts_irq_touch, SA_INTERRUPT,
++ "PCAP Touchscreen Touch", pcap_ts);
++ if (err < 0) {
++ printk(KERN_ERR "pcap_ts: can't grab touch irq %d: %d\n",
++ pcap_ts->irq_touch, err);
++ goto fail_xy;
++ }
++
++ pcap_ts->input = input_dev;
++ init_timer(&pcap_ts->timer);
++ pcap_ts->timer.data = (unsigned long) pcap_ts;
++ pcap_ts->timer.function = &pcap_ts_timer_fn;
++
++ platform_set_drvdata(pdev, pcap_ts);
++
++ pcap_ts->read_state = STANDBY;
++ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
++
++ /* enable pressure interrupt */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++
++ input_dev->name = "EZX PCAP2 Touchscreen";
++ input_dev->phys = "ezxts/input0";
++ input_dev->id.bustype = BUS_HOST;
++ input_dev->id.vendor = 0x0001;
++ input_dev->id.product = 0x0002;
++ input_dev->id.version = 0x0100;
++ input_dev->cdev.dev = &pdev->dev;
++ input_dev->private = pcap_ts;
++
++ input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);
++ input_dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
++ input_set_abs_params(input_dev, ABS_X, X_AXIS_MIN, X_AXIS_MAX, 0, 0);
++ input_set_abs_params(input_dev, ABS_Y, Y_AXIS_MIN, Y_AXIS_MAX, 0, 0);
++ input_set_abs_params(input_dev, ABS_PRESSURE, PRESSURE_MIN,
++ PRESSURE_MAX, 0, 0);
++
++ input_register_device(pcap_ts->input);
++
++ return 0;
++
++fail_xy:
++ free_irq(pcap_ts->irq_xy, pcap_ts);
++fail:
++ input_free_device(input_dev);
++ kfree(pcap_ts);
++
++ return err;
++}
++
++static int ezxts_remove(struct platform_device *pdev)
++{
++ struct pcap_ts *pcap_ts = platform_get_drvdata(pdev);
++
++ del_timer_sync(&pcap_ts->timer);
++
++ free_irq(pcap_ts->irq_touch, pcap_ts);
++ free_irq(pcap_ts->irq_xy, pcap_ts);
++
++ input_unregister_device(pcap_ts->input);
++ kfree(pcap_ts);
++
++ return 0;
++}
++
++static int ezxts_suspend(struct platform_device *dev, pm_message_t state)
++{
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ADC1_TS_REF_LOWPWR, 1);
++ return 0;
++}
++
++static int ezxts_resume(struct platform_device *dev)
++{
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ADC1_TS_REF_LOWPWR, 0);
++ /* just in case we suspend with TSI masked. */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++ return 0;
++}
++
++
++static struct platform_driver ezxts_driver = {
++ .probe = ezxts_probe,
++ .remove = ezxts_remove,
++ .suspend = ezxts_suspend,
++ .resume = ezxts_resume,
++ .driver = {
++ .name = "pcap-ts",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init ezxts_init(void)
++{
++ return platform_driver_register(&ezxts_driver);
++}
++
++static void __exit ezxts_exit(void)
++{
++ platform_driver_unregister(&ezxts_driver);
++}
++
++module_init(ezxts_init);
++module_exit(ezxts_exit);
++
++MODULE_DESCRIPTION("Motorola PCAP2 touchscreen driver");
++MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-03 19:09:25.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-03 19:15:57.000000000 -0300
+@@ -116,8 +116,32 @@
+ .resource = ezxemu_resources,
+ };
+
+-/* OHCI Controller */
++/* PCAP_TS */
++struct resource pcap_ts_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_ADCDONE2,
++ .end = EZX_IRQ_ADCDONE2,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_TS,
++ .end = EZX_IRQ_TS,
++ .flags = IORESOURCE_IRQ,
++ }
++};
+
++struct platform_device pcap_ts_device = {
++ .name = "pcap-ts",
++ .id = -1,
++ .dev = {
++ .parent = &ezxpcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(pcap_ts_resources),
++ .resource = pcap_ts_resources,
++};
++
++
++/* OHCI Controller */
+ static int ezx_ohci_init(struct device *dev)
+ {
+ /* for A780 support (connected with Neptune) */
+@@ -342,6 +366,7 @@
+ &ezxpcap_device,
+ &ezxbp_device,
+ &ezxemu_device,
++ &pcap_ts_device,
+ };
+
+ static void __init a780_init(void)
+Index: linux-2.6.21/drivers/input/touchscreen/Makefile
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/Makefile 2007-05-03 18:50:12.000000000 -0300
++++ linux-2.6.21/drivers/input/touchscreen/Makefile 2007-05-03 18:50:59.000000000 -0300
+@@ -16,3 +16,4 @@
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
+ obj-$(CONFIG_TOUCHSCREEN_UCB1400) += ucb1400_ts.o
++obj-$(CONFIG_TOUCHSCREEN_PCAP) += pcap_ts.o
diff --git a/packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch b/packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch
new file mode 100644
index 0000000000..d46033bc80
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch
@@ -0,0 +1,237 @@
+Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/pcap_ts.c 2007-05-01 16:28:00.000000000 +0200
++++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-05-01 16:28:03.000000000 +0200
+@@ -21,15 +21,14 @@
+ #include <linux/string.h>
+ #include <linux/pm.h>
+ #include <linux/timer.h>
+-#include <linux/config.h>
++//#include <linux/config.h>
+ #include <linux/interrupt.h>
+ #include <linux/platform_device.h>
+ #include <linux/input.h>
+
+ #include <asm/arch/hardware.h>
+ #include <asm/arch/pxa-regs.h>
+-
+-#include "../../misc/ezx/ssp_pcap.h"
++#include <asm/arch/ezx-pcap.h>
+
+ #if 1
+ #define DEBUGP(x, args ...) printk(KERN_DEBUG "%s: " x, __FUNCTION__, ## args)
+@@ -61,6 +60,9 @@
+ #define PRESSURE_MAX X_AXIS_MAX
+ #define PRESSURE_MIN X_AXIS_MIN
+
++#define SAMPLE_INTERVAL (HZ/100)
++
++
+ static int pcap_ts_mode(u_int32_t mode)
+ {
+ int ret;
+@@ -157,8 +159,6 @@
+ pcap_ts->x, pcap_ts->y, pcap_ts->pressure);
+
+ if (pcap_ts->read_state == PRESSURE) {
+- input_report_abs(pcap_ts->input, ABS_PRESSURE,
+- pcap_ts->pressure);
+ if ((pcap_ts->pressure >= PRESSURE_MAX ||
+ pcap_ts->pressure <= PRESSURE_MIN ) &&
+ pcap_ts->pressure == pcap_ts->pressure_last) {
+@@ -166,6 +166,8 @@
+ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
+ input_sync(pcap_ts->input);
+
++ input_report_abs(pcap_ts->input, ABS_PRESSURE, 0);
++
+ pcap_ts->x = pcap_ts->y = 0;
+
+ /* ask PCAP2 to interrupt us if touch event happens
+@@ -182,18 +184,24 @@
+ input_report_key(pcap_ts->input, BTN_TOUCH, 1);
+ /* don't input_sync(), we don't know position yet */
+
++ if (pcap_ts->pressure == 0)
++ pcap_ts->pressure = pcap_ts->pressure_last;
++
++ input_report_abs(pcap_ts->input, ABS_PRESSURE,
++ pcap_ts->pressure);
++
+ /* switch state machine into coordinate read mode */
+ pcap_ts->read_state = COORDINATE;
+ pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
+ pcap_ts_start_xy_read(pcap_ts);
+-
+- mod_timer(&pcap_ts->timer, jiffies + HZ/20);
+ }
+ } else {
+ /* we are in coordinate mode */
+ if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
+ pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
+ DEBUGP("invalid x/y coordinate position: PEN_UP?\n");
++
++ pcap_ts->pressure = 0;
+ #if 0
+ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
+ pcap_ts->x = pcap_ts->y = 0;
+@@ -206,8 +214,8 @@
+
+ /* switch back to pressure read mode */
+ pcap_ts->read_state = PRESSURE;
+- pcap_ts_mode(PCAP_TS_STANDBY_MODE);
+- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
++ mod_timer(&pcap_ts->timer, jiffies + SAMPLE_INTERVAL);
+ }
+
+ return IRQ_HANDLED;
+@@ -234,18 +242,19 @@
+ {
+ struct pcap_ts *pcap_ts = (struct pcap_ts *) data;
+
+- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 1);
+- pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
+- pcap_ts->read_state = PRESSURE;
+ pcap_ts_start_xy_read(pcap_ts);
+ }
+
+ static int __init ezxts_probe(struct platform_device *pdev)
+ {
++ int ret;
++ u_int32_t tmp;
+ struct pcap_ts *pcap_ts;
+ struct input_dev *input_dev;
+ int err = -ENOMEM;
+
++ printk(KERN_DEBUG "Start probing TS!\n");
++
+ pcap_ts = kzalloc(sizeof(*pcap_ts), GFP_KERNEL);
+ input_dev = input_allocate_device();
+ if (!pcap_ts || !input_dev)
+@@ -263,7 +272,46 @@
+ goto fail;
+ }
+
+- ssp_pcap_open(SSP_PCAP_TS_OPEN);
++ // Some initialization before done in ssp_pcap_open()
++ //ssp_pcap_open(SSP_PCAP_TS_OPEN);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_TS_REFENB, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I, 1);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ISR_TSI, 1);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_MSR_ADCDONE2M, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC2_ADINC1, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC2_ADINC2, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO0, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO1, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO2, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO3, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATOX, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_MTR1, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_MTR2, 0);
++
++ //SSP_PCAP_TSI_mode_set(PCAP_TS_STANDBY_MODE);
++ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++ if (ret < 0)
++ return ret;
++
++ tmp &= (~SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK);
++ tmp |= PCAP_TS_STANDBY_MODE;
++
++ ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++ if (ret < 0)
++ return ret;
++
++ /* send the usb accessory infomation to PM */
++ /*
++ if((ACCESSORY_TYPE) sspUsbAccessoryInfo.type == ACCESSORY_DEVICE_USB_PORT)
++ {
++ if( (ACCESSORY_DEVICE_STATUS )sspUsbAccessoryInfo.status == ACCESSORY_DEVICE_STATUS_ATTACHED )
++ apm_queue_event(KRNL_ACCS_ATTACH);
++ else
++ apm_queue_event(KRNL_ACCS_DETACH);
++ }
++ */
++
+
+ err = request_irq(pcap_ts->irq_xy, pcap_ts_irq_xy, SA_INTERRUPT,
+ "PCAP Touchscreen XY", pcap_ts);
+@@ -343,10 +391,11 @@
+ //.resume = ezxts_resume,
+ .driver = {
+ .name = "pcap-ts",
++ .owner = THIS_MODULE,
+ },
+ };
+
+-static int __devinit ezxts_init(void)
++static int __init ezxts_init(void)
+ {
+ return platform_driver_register(&ezxts_driver);
+ }
+Index: linux-2.6.21/drivers/input/touchscreen/Kconfig
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/Kconfig 2007-05-01 16:28:00.000000000 +0200
++++ linux-2.6.21/drivers/input/touchscreen/Kconfig 2007-05-01 16:28:03.000000000 +0200
+@@ -166,7 +166,7 @@
+
+ config TOUCHSCREEN_PCAP
+ tristate "Motorola PCAP touchscreen"
+- depends on PXA_EZX_PCAP
++ depends on PXA_EZX
+ help
+ Say Y here if you have a Motorola EZX (E680, A780) telephone
+ and want to support the built-in touchscreen.
+@@ -174,6 +174,6 @@
+ If unsure, say N.
+
+ To compile this driver as a module, choose M here: the
+- module will be called hp680_ts_input.
++ module will be called pcap_ts.
+
+ endif
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-01 16:28:00.000000000 +0200
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-01 16:28:03.000000000 +0200
+@@ -116,6 +116,31 @@
+ .resource = ezxemu_resources,
+ };
+
++/* PCAP_TS */
++struct resource pcap_ts_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_ADCDONE2,
++ .end = EZX_IRQ_ADCDONE2,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_TS,
++ .end = EZX_IRQ_TS,
++ .flags = IORESOURCE_IRQ,
++ }
++};
++
++struct platform_device pcap_ts_device = {
++ .name = "pcap-ts",
++ .id = -1,
++ .dev = {
++ .parent = &ezxpcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(pcap_ts_resources),
++ .resource = pcap_ts_resources,
++};
++
++
+ /* OHCI Controller */
+
+ static int ezx_ohci_init(struct device *dev)
+@@ -342,6 +367,7 @@
+ &ezxpcap_device,
+ &ezxbp_device,
+ &ezxemu_device,
++ &pcap_ts_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/pxa-kbd.patch b/packages/linux/linux-ezx-2.6.21/pxa-kbd.patch
new file mode 100644
index 0000000000..9bc6be656a
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/pxa-kbd.patch
@@ -0,0 +1,463 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/generic.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/generic.c 2007-04-30 19:19:58.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/generic.c 2007-04-30 19:45:20.000000000 -0300
+@@ -42,6 +42,7 @@
+ #include <asm/arch/mmc.h>
+ #include <asm/arch/irda.h>
+ #include <asm/arch/i2c.h>
++#include <asm/arch/kbd.h>
+
+ #include "generic.h"
+
+@@ -430,6 +431,30 @@
+ .id = -1,
+ };
+
++static struct resource pxa_kbd_resources[] = {
++ {
++ .start = IRQ_KEYPAD,
++ .end = IRQ_KEYPAD,
++ .flags = IORESOURCE_IRQ,
++ }, {
++ .start = 0x41500000,
++ .end = 0x4150004c,
++ .flags = IORESOURCE_MEM,
++ },
++};
++
++static struct platform_device kbd_device = {
++ .name = "pxa-keyboard",
++ .id = -1,
++ .resource = pxa_kbd_resources,
++ .num_resources = ARRAY_SIZE(pxa_kbd_resources),
++};
++
++void __init pxa_set_kbd_info(struct pxakbd_platform_data *info)
++{
++ kbd_device.dev.platform_data = info;
++}
++
+ static struct platform_device *devices[] __initdata = {
+ &pxamci_device,
+ &udc_device,
+@@ -444,6 +469,7 @@
+ #endif
+ &i2s_device,
+ &pxartc_device,
++ &kbd_device,
+ };
+
+ static int __init pxa_init(void)
+Index: linux-2.6.21/drivers/input/keyboard/Kconfig
+===================================================================
+--- linux-2.6.21.orig/drivers/input/keyboard/Kconfig 2007-04-30 19:15:26.000000000 -0300
++++ linux-2.6.21/drivers/input/keyboard/Kconfig 2007-04-30 19:43:53.000000000 -0300
+@@ -229,4 +229,11 @@
+ To compile this driver as a module, choose M here: the
+ module will be called gpio-keys.
+
++config KEYBOARD_PXA
++ tristate "Intel PXA keyboard support"
++ depends on ARCH_PXA
++ help
++ This add support for a driver of the Intel PXA2xx keyboard
++ controller.
++
+ endif
+Index: linux-2.6.21/drivers/input/keyboard/Makefile
+===================================================================
+--- linux-2.6.21.orig/drivers/input/keyboard/Makefile 2007-04-30 19:17:25.000000000 -0300
++++ linux-2.6.21/drivers/input/keyboard/Makefile 2007-04-30 19:46:54.000000000 -0300
+@@ -19,4 +19,4 @@
+ obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
+ obj-$(CONFIG_KEYBOARD_AAED2000) += aaed2000_kbd.o
+ obj-$(CONFIG_KEYBOARD_GPIO) += gpio_keys.o
+-
++obj-$(CONFIG_KEYBOARD_PXA) += pxakbd.o
+Index: linux-2.6.21/include/asm-arm/arch-pxa/kbd.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/include/asm-arm/arch-pxa/kbd.h 2007-04-30 19:27:58.000000000 -0300
+@@ -0,0 +1,28 @@
++/*
++ * kbd_pxa.h
++ *
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++#ifndef _KBD_PXA_H_
++#define _KBD_PXA_H_
++
++struct pxakbd_platform_data {
++ int (*init)(void); /* init gpio, etc. */
++ unsigned int scan_interval;
++ struct {
++ unsigned int rows;
++ unsigned int cols;
++ unsigned char *keycode;
++ } matrix;
++ struct {
++ unsigned int num;
++ unsigned char *keycode;
++ } direct;
++};
++
++#endif
+Index: linux-2.6.21/drivers/input/keyboard/pxakbd.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/drivers/input/keyboard/pxakbd.c 2007-04-30 19:48:13.000000000 -0300
+@@ -0,0 +1,332 @@
++/*
++ * Driver for Motorola EZX phone "keyboard"
++ *
++ * (C) 2006 by Harald Welte <laforge@openezx.org>
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/interrupt.h>
++#include <linux/input.h>
++#include <linux/spinlock.h>
++#include <linux/platform_device.h>
++
++#include <asm/hardware.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++
++#include <asm/arch/kbd.h>
++#include <asm/arch/irqs.h>
++#include <asm/arch/pxa-regs.h>
++
++#if 1
++#define DEBUGP(x, args ...) printk(x, ## args)
++#else
++#define DEBUGP(x, args ...)
++#endif
++
++/* per-keyboard private data structure */
++struct pxakbd {
++ struct input_dev *input;
++ struct timer_list timer;
++ spinlock_t lock;
++
++ struct resource *res;
++ unsigned int irq;
++
++ struct pxakbd_platform_data *pd;
++};
++
++static int pxakbd_scan_direct(struct pxakbd *pxakbd)
++{
++ u_int32_t kpdk;
++ unsigned int i;
++ int num_pressed = 0;
++
++ kpdk = KPDK & 0x000000ff;
++ for (i = 0; i < pxakbd->pd->direct.num; i++) {
++ int pressed = 0;
++
++ if (kpdk & (1 << i)) {
++ pressed = 1;
++ num_pressed++;
++ DEBUGP("pxakbd: pressed: direct %u\n", i);
++ }
++ if (pxakbd->pd->direct.keycode[i] != KEY_RESERVED) {
++ DEBUGP( "pxakbd: sending to input layer: keycode = %d, pressed = %d\n", pxakbd->pd->direct.keycode[i], pressed );
++ input_report_key(pxakbd->input, pxakbd->pd->direct.keycode[i],
++ pressed);
++ }
++ }
++ return num_pressed;
++}
++
++/* read the full 8x8 matrix from the PXA27x keypad controller */
++static void __read_matrix(u_int8_t *matrix)
++{
++ u_int32_t tmp;
++
++ tmp = KPASMKP0;
++ matrix[0] = tmp & 0x000000ff;
++ matrix[1] = (tmp & 0x00ff0000) >> 16;
++
++ tmp = KPASMKP1;
++ matrix[2] = tmp & 0x000000ff;
++ matrix[3] = (tmp & 0x00ff0000) >> 16;
++
++ tmp = KPASMKP2;
++ matrix[4] = tmp & 0x000000ff;
++ matrix[5] = (tmp & 0x00ff0000) >> 16;
++
++ tmp = KPASMKP3;
++ matrix[6] = tmp & 0x000000ff;
++ matrix[7] = (tmp & 0x00ff0000) >> 16;
++}
++
++/* compare current matrix with last, generate 'diff' events */
++static int __cmp_matrix_gen_events(struct pxakbd *pxakbd, u_int8_t *matrix)
++{
++ unsigned int i;
++ int num_pressed = 0;
++
++ /* iterate over the matrix */
++ for (i = 0; i < pxakbd->pd->matrix.rows; i++) {
++ unsigned int j;
++ for (j = 0; j < pxakbd->pd->matrix.cols; j++) {
++ u_int32_t scancode =
++ (i * pxakbd->pd->matrix.cols) + j;
++ int pressed = matrix[i] & (1 << j);
++
++ if (pressed) {
++ DEBUGP("pxakbd: pressed: %u/%u\n", i, j);
++ num_pressed++;
++ }
++
++ input_report_key(pxakbd->input,
++ pxakbd->pd->matrix.keycode[scancode], pressed);
++ }
++ }
++
++ return num_pressed;
++}
++
++/* scan the matrix keypad */
++static int pxakbd_scan_matrix(struct pxakbd *pxakbd)
++{
++ int num_pressed;
++ u_int32_t kpas;
++ u_int8_t matrix[8];
++
++ kpas = KPAS;
++
++ if ((kpas & KPAS_MUKP) == KPAS_MUKP_NONE) {
++ /* no keys pressed */
++ memset(matrix, 0, sizeof(matrix));
++ } else if ((kpas & KPAS_MUKP) == KPAS_MUKP_ONE) {
++ /* one key pressed */
++ u_int8_t row = (kpas & KPAS_RP) >> 4;
++ u_int8_t col = kpas & KPAS_CP;
++
++ if (row == 0x0f || col == 0x0f) {
++ printk(KERN_WARNING "pxakbd: col or row invalid!\n");
++ return -1;
++ }
++
++ /* clear the matrix and set the single pressed key */
++ memset(matrix, 0, sizeof(matrix));
++ matrix[row] |= (1 << col);
++ } else {
++ /* multiple keys pressed */
++ __read_matrix(matrix);
++ }
++
++ num_pressed = __cmp_matrix_gen_events(pxakbd, matrix);
++
++ return num_pressed;
++}
++
++static void pxakbd_timer_callback(unsigned long data)
++{
++ unsigned long flags;
++ struct pxakbd *pxakbd = (struct pxakbd *) data;
++ unsigned int num_pressed;
++
++ spin_lock_irqsave(&pxakbd->lock, flags);
++
++ num_pressed = pxakbd_scan_direct(pxakbd);
++ num_pressed += pxakbd_scan_matrix(pxakbd);
++
++ spin_unlock_irqrestore(&pxakbd->lock, flags);
++
++ /* propagate events up the input stack */
++ input_sync(pxakbd->input);
++}
++
++static irqreturn_t pxakbd_interrupt(int irq, void *dummy)
++{
++ struct pxakbd *pxakbd = dummy;
++ u_int32_t kpc;
++ int handled = 0;
++ int num_pressed = 0;
++
++ /* read and clear interrupt */
++ kpc = KPC;
++
++ if (kpc & KPC_DI) {
++ num_pressed += pxakbd_scan_direct(pxakbd);
++ handled = 1;
++ }
++
++ if (kpc & KPC_MI) {
++ while (KPAS & KPAS_SO) {
++ /* wait for scan to complete beforereading scan regs */
++ cpu_relax();
++ }
++ num_pressed += pxakbd_scan_matrix(pxakbd);
++ handled = 1;
++ }
++
++ /* If any keys are currently pressed, we need to start the timer to detect
++ * key release. */
++ if (num_pressed)
++ mod_timer(&pxakbd->timer, jiffies + pxakbd->pd->scan_interval);
++
++ /* propagate events up the input stack */
++ input_sync(pxakbd->input);
++
++ return IRQ_RETVAL(handled);
++}
++
++static int __init pxakbd_probe(struct platform_device *pdev)
++{
++ struct pxakbd *pxakbd;
++ struct input_dev *input_dev;
++ struct resource *r;
++ int i;
++ int ret = -ENOMEM;
++
++ pxakbd = kzalloc(sizeof(*pxakbd), GFP_KERNEL);
++ if (!pxakbd)
++ goto out;
++
++ input_dev = input_allocate_device();
++ if (!input_dev)
++ goto out_pxa;
++
++ pxakbd->irq = platform_get_irq(pdev, 0);
++ r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!r || pxakbd->irq == NO_IRQ) {
++ printk(KERN_ERR "pxakbd: invalid resources\n");
++ ret = -EBUSY;
++ goto out_idev;
++ }
++
++ pxakbd->input = input_dev;
++ init_timer(&pxakbd->timer);
++ pxakbd->timer.function = pxakbd_timer_callback;
++ pxakbd->timer.data = (unsigned long) pxakbd;
++ pxakbd->pd = pdev->dev.platform_data;
++ pxakbd->res = r;
++
++ input_dev->name = "PXA Keyboard";
++ input_dev->phys = "pxakbd/input0";
++ input_dev->id.bustype = BUS_HOST;
++ input_dev->id.vendor = 0x0001;
++ input_dev->id.product = 0x0001;
++ input_dev->id.version = 0x0001;
++ input_dev->cdev.dev = &pdev->dev;
++ input_dev->private = pxakbd;
++
++ input_dev->evbit[0] = BIT(EV_KEY)|BIT(EV_REP);
++ input_dev->keycode = pxakbd->pd->matrix.keycode;
++ input_dev->keycodesize = sizeof(unsigned char);
++ input_dev->keycodemax = pxakbd->pd->matrix.rows
++ *pxakbd->pd->matrix.cols;
++
++ for (i = 0; i < input_dev->keycodemax; i++)
++ set_bit(pxakbd->pd->matrix.keycode[i], input_dev->keybit);
++ clear_bit(0, input_dev->keybit);
++
++ if (request_irq(pxakbd->irq, pxakbd_interrupt, 0, "pxakbd", pxakbd)) {
++ printk(KERN_ERR "pxakbd: can't request irq %d\n", pxakbd->irq);
++ ret = -EBUSY;
++ goto out_idev;
++ }
++
++ r = request_mem_region(r->start, 0x4c, "pxakbd");
++ if (!r) {
++ printk(KERN_ERR "pxakbd: can't request memregion\n");
++ ret = -EBUSY;
++ goto out_irq;
++ }
++
++ /* set up gpio */
++ pxakbd->pd->init();
++
++ /* set keypad control register */
++ KPC = (KPC_ASACT | /* automatic scan on activity */
++ KPC_ME | KPC_DE | /* matrix and direct keypad enabled */
++ ((pxakbd->pd->matrix.cols-1)<<23) | /* columns */
++ ((pxakbd->pd->matrix.rows-1)<<26) | /* rows */
++ ((pxakbd->pd->direct.num-1)<<6) | /* direct keys */
++ KPC_MS_ALL); /* scan all columns */
++
++ pxa_set_cken(CKEN19_KEYPAD, 1);
++
++ KPC |= (KPC_DIE | KPC_MIE); /* enable matrix and direct keyboard */
++
++ KPKDI = 0x40; /* matrix key debounce interval: 0x40 */
++
++ platform_set_drvdata(pdev, pxakbd);
++
++ return input_register_device(pxakbd->input);
++
++out_drvdata:
++ platform_set_drvdata(pdev, NULL);
++out_mem:
++ release_resource(r);
++out_irq:
++ free_irq(pxakbd->irq, pxakbd);
++out_idev:
++ input_free_device(input_dev);
++out_pxa:
++ kfree(pxakbd);
++out:
++ return ret;
++}
++
++static int pxakbd_remove(struct platform_device *pdev)
++{
++ struct pxakbd *pxakbd = platform_get_drvdata(pdev);
++ input_unregister_device(pxakbd->input);
++ platform_set_drvdata(pdev, NULL);
++ release_resource(pxakbd->res);
++ free_irq(pxakbd->irq, pxakbd);
++ kfree(pxakbd);
++ return 0;
++}
++
++static struct platform_driver pxakbd_driver = {
++ .probe = &pxakbd_probe,
++ .remove = &pxakbd_remove,
++ .driver = {
++ .name = "pxa-keyboard",
++ },
++};
++
++static int __devinit pxakbd_init(void)
++{
++ return platform_driver_register(&pxakbd_driver);
++}
++
++static void __exit pxakbd_exit(void)
++{
++ platform_driver_unregister(&pxakbd_driver);
++}
++
++module_init(pxakbd_init);
++module_exit(pxakbd_exit);
++
++MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
++MODULE_DESCRIPTION("Driver for Intel PXA27x keypad controller");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h
+===================================================================
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-04-30 19:39:30.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-04-30 19:42:34.000000000 -0300
+@@ -2165,6 +2165,11 @@
+ #define KPMK_MKP (0x1 << 31)
+ #define KPAS_SO (0x1 << 31)
+ #define KPASMKPx_SO (0x1 << 31)
++#define KPAS_RP (0x000000f0)
++#define KPAS_CP (0x0000000f)
++#define KPAS_MUKP (0x7c000000)
++#define KPAS_MUKP_ONE (0x04000000)
++#define KPAS_MUKP_NONE (0x00000000)
+
+ /*
+ * UHC: USB Host Controller (OHCI-like) register definitions
diff --git a/packages/linux/linux-ezx-2.6.21/pxa27x-udc-support.2.patch b/packages/linux/linux-ezx-2.6.21/pxa27x-udc-support.2.patch
new file mode 100644
index 0000000000..d35e40f046
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/pxa27x-udc-support.2.patch
@@ -0,0 +1,3037 @@
+diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
+index 4097a86..5d3ea6e 100644
+--- a/drivers/usb/gadget/Kconfig
++++ b/drivers/usb/gadget/Kconfig
+@@ -111,6 +111,24 @@ config USB_PXA2XX
+ default USB_GADGET
+ select USB_GADGET_SELECTED
+
++config USB_GADGET_PXA27X
++ boolean "PXA 27x"
++ depends on ARCH_PXA && PXA27x
++ help
++ Intel's PXA 27x series XScale processors include an integrated
++ full speed USB 1.1 device controller.
++
++ Say "y" to link the driver statically, or "m" to build a
++ dynamically linked module called "pxa2xx_udc" and force all
++ gadget drivers to also be dynamically linked.
++
++
++config USB_PXA27X
++ tristate
++ depends on USB_GADGET_PXA27X
++ default USB_GADGET
++ select USB_GADGET_SELECTED
++
+ # if there's only one gadget driver, using only two bulk endpoints,
+ # don't waste memory for the other endpoints
+ config USB_PXA2XX_SMALL
+diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile
+index e71e086..7e508a6 100644
+--- a/drivers/usb/gadget/Makefile
++++ b/drivers/usb/gadget/Makefile
+@@ -4,6 +4,7 @@
+ obj-$(CONFIG_USB_DUMMY_HCD) += dummy_hcd.o
+ obj-$(CONFIG_USB_NET2280) += net2280.o
+ obj-$(CONFIG_USB_PXA2XX) += pxa2xx_udc.o
++obj-$(CONFIG_USB_PXA27X) += pxa27x_udc.o
+ obj-$(CONFIG_USB_GOKU) += goku_udc.o
+ obj-$(CONFIG_USB_OMAP) += omap_udc.o
+ obj-$(CONFIG_USB_LH7A40X) += lh7a40x_udc.o
+diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c
+index f28af06..e7d72ff 100644
+--- a/drivers/usb/gadget/epautoconf.c
++++ b/drivers/usb/gadget/epautoconf.c
+@@ -230,7 +230,8 @@ find_ep (struct usb_gadget *gadget, const char *name)
+ */
+ struct usb_ep * __devinit usb_ep_autoconfig (
+ struct usb_gadget *gadget,
+- struct usb_endpoint_descriptor *desc
++ struct usb_endpoint_descriptor *desc,
++ int config, int interface, int alt
+ )
+ {
+ struct usb_ep *ep;
+@@ -238,6 +239,11 @@ struct usb_ep * __devinit usb_ep_autoconfig (
+
+ type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
+
++ /* If have ep_alloc() function use it! */
++ if (gadget->ops->ep_alloc)
++ return gadget->ops->ep_alloc(gadget, desc,
++ config, interface, alt);
++
+ /* First, apply chip-specific "best usage" knowledge.
+ * This might make a good usb_gadget_ops hook ...
+ */
+diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
+index 04e6b85..bc6de31 100644
+--- a/drivers/usb/gadget/ether.c
++++ b/drivers/usb/gadget/ether.c
+@@ -258,10 +258,6 @@ MODULE_PARM_DESC(host_addr, "Host Ethernet Address");
+ #define DEV_CONFIG_CDC
+ #endif
+
+-#ifdef CONFIG_USB_GADGET_PXA27X
+-#define DEV_CONFIG_CDC
+-#endif
+-
+ #ifdef CONFIG_USB_GADGET_S3C2410
+ #define DEV_CONFIG_CDC
+ #endif
+@@ -294,6 +290,10 @@ MODULE_PARM_DESC(host_addr, "Host Ethernet Address");
+ #define DEV_CONFIG_SUBSET
+ #endif
+
++#ifdef CONFIG_USB_GADGET_PXA27X
++#define DEV_CONFIG_SUBSET
++#endif
++
+ #ifdef CONFIG_USB_GADGET_SA1100
+ /* use non-CDC for backwards compatibility */
+ #define DEV_CONFIG_SUBSET
+@@ -2309,6 +2309,9 @@ eth_bind (struct usb_gadget *gadget)
+ * non-CDC to be compatible with ARM Linux-2.4 "usb-eth".
+ */
+ cdc = 0;
++ } else if (gadget_is_pxa27x(gadget)) {
++ /* hardware can't write zlps */
++ zlp = 0;
+ }
+
+ gcnum = usb_gadget_controller_number (gadget);
+@@ -2375,7 +2378,22 @@ eth_bind (struct usb_gadget *gadget)
+
+ /* all we really need is bulk IN/OUT */
+ usb_ep_autoconfig_reset (gadget);
+- in_ep = usb_ep_autoconfig (gadget, &fs_source_desc);
++#ifdef CONFIG_USB_ETH_RNDIS
++ in_ep = usb_ep_autoconfig (gadget, &fs_source_desc,
++ DEV_RNDIS_CONFIG_VALUE,
++ (int)rndis_data_intf.bInterfaceNumber,
++ (int)rndis_data_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_CDC)
++ in_ep = usb_ep_autoconfig (gadget, &fs_source_desc,
++ DEV_CONFIG_VALUE,
++ (int)data_intf.bInterfaceNumber,
++ (int)data_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_SUBSET)
++ in_ep = usb_ep_autoconfig (gadget, &fs_source_desc,
++ DEV_CONFIG_VALUE,
++ (int)subset_data_intf.bInterfaceNumber,
++ (int)subset_data_intf.bAlternateSetting);
++#endif /* CONFIG_USB_ETH_RNDIS */
+ if (!in_ep) {
+ autoconf_fail:
+ dev_err (&gadget->dev,
+@@ -2385,7 +2403,22 @@ autoconf_fail:
+ }
+ in_ep->driver_data = in_ep; /* claim */
+
+- out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc);
++#ifdef CONFIG_USB_ETH_RNDIS
++ out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc,
++ DEV_RNDIS_CONFIG_VALUE,
++ (int)rndis_data_intf.bInterfaceNumber,
++ (int)rndis_data_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_CDC)
++ out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc,
++ DEV_CONFIG_VALUE,
++ (int)data_intf.bInterfaceNumber,
++ (int)data_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_SUBSET)
++ out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc,
++ DEV_CONFIG_VALUE,
++ (int)subset_data_intf.bInterfaceNumber,
++ (int)subset_data_intf.bAlternateSetting);
++#endif /* CONFIG_USB_ETH_RNDIS */
+ if (!out_ep)
+ goto autoconf_fail;
+ out_ep->driver_data = out_ep; /* claim */
+@@ -2395,7 +2428,17 @@ autoconf_fail:
+ * Since some hosts expect one, try to allocate one anyway.
+ */
+ if (cdc || rndis) {
+- status_ep = usb_ep_autoconfig (gadget, &fs_status_desc);
++#ifdef CONFIG_USB_ETH_RNDIS
++ status_ep = usb_ep_autoconfig (gadget, &fs_status_desc,
++ DEV_RNDIS_CONFIG_VALUE,
++ (int)rndis_control_intf.bInterfaceNumber,
++ (int)rndis_control_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_CDC)
++ status_ep = usb_ep_autoconfig (gadget, &fs_status_desc,
++ DEV_CONFIG_VALUE,
++ (int)control_intf.bInterfaceNumber,
++ (int)control_intf.bAlternateSetting);
++#endif /* CONFIG_USB_ETH_RNDIS */
+ if (status_ep) {
+ status_ep->driver_data = status_ep; /* claim */
+ } else if (rndis) {
+@@ -2403,13 +2446,14 @@ autoconf_fail:
+ "can't run RNDIS on %s\n",
+ gadget->name);
+ return -ENODEV;
++ }
+ #ifdef DEV_CONFIG_CDC
+ /* pxa25x only does CDC subset; often used with RNDIS */
+- } else if (cdc) {
++ else if (cdc) {
+ control_intf.bNumEndpoints = 0;
+ /* FIXME remove endpoint from descriptor list */
+-#endif
+ }
++#endif
+ }
+ #endif
+
+diff --git a/drivers/usb/gadget/file_storage.c b/drivers/usb/gadget/file_storage.c
+index c6b6479..6af5fdd 100644
+--- a/drivers/usb/gadget/file_storage.c
++++ b/drivers/usb/gadget/file_storage.c
+@@ -3920,20 +3920,20 @@ static int __init fsg_bind(struct usb_gadget *gadget)
+
+ /* Find all the endpoints we will use */
+ usb_ep_autoconfig_reset(gadget);
+- ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc, 0, 0, 0);
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+ fsg->bulk_in = ep;
+
+- ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc, 0, 0, 0);
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+ fsg->bulk_out = ep;
+
+ if (transport_is_cbi()) {
+- ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc, 0, 0, 0);
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+diff --git a/drivers/usb/gadget/gadget_chips.h b/drivers/usb/gadget/gadget_chips.h
+index 2e3d662..f3b3291 100644
+--- a/drivers/usb/gadget/gadget_chips.h
++++ b/drivers/usb/gadget/gadget_chips.h
+@@ -177,5 +177,7 @@ static inline int usb_gadget_controller_number(struct usb_gadget *gadget)
+ return 0x17;
+ else if (gadget_is_husb2dev(gadget))
+ return 0x18;
++ else if (gadget_is_pxa27x(gadget))
++ return 0x19;
+ return -ENOENT;
+ }
+diff --git a/drivers/usb/gadget/gmidi.c b/drivers/usb/gadget/gmidi.c
+index d08a8d0..d51feb2 100644
+--- a/drivers/usb/gadget/gmidi.c
++++ b/drivers/usb/gadget/gmidi.c
+@@ -1204,7 +1204,7 @@ static int __devinit gmidi_bind(struct usb_gadget *gadget)
+ * but there may also be important quirks to address.
+ */
+ usb_ep_autoconfig_reset(gadget);
+- in_ep = usb_ep_autoconfig(gadget, &bulk_in_desc);
++ in_ep = usb_ep_autoconfig(gadget, &bulk_in_desc, 0, 0, 0);
+ if (!in_ep) {
+ autoconf_fail:
+ printk(KERN_ERR "%s: can't autoconfigure on %s\n",
+@@ -1214,7 +1214,7 @@ autoconf_fail:
+ EP_IN_NAME = in_ep->name;
+ in_ep->driver_data = in_ep; /* claim */
+
+- out_ep = usb_ep_autoconfig(gadget, &bulk_out_desc);
++ out_ep = usb_ep_autoconfig(gadget, &bulk_out_desc, 0, 0, 0);
+ if (!out_ep) {
+ goto autoconf_fail;
+ }
+diff --git a/drivers/usb/gadget/pxa27x_udc.c b/drivers/usb/gadget/pxa27x_udc.c
+new file mode 100644
+index 0000000..d89ecc5
+--- /dev/null
++++ b/drivers/usb/gadget/pxa27x_udc.c
+@@ -0,0 +1,2354 @@
++/*
++ * linux/drivers/usb/gadget/pxa27x_udc.c
++ * Intel PXA2xx and IXP4xx on-chip full speed USB device controllers
++ *
++ * Copyright (C) 2002 Intrinsyc, Inc. (Frank Becker)
++ * Copyright (C) 2003 Robert Schwebel, Pengutronix
++ * Copyright (C) 2003 Benedikt Spranger, Pengutronix
++ * Copyright (C) 2003 David Brownell
++ * Copyright (C) 2003 Joshua Wise
++ * Copyright (C) 2004 Intel Corporation
++ * Copyright (C) 2007 Rodolfo Giometti <giometti@linux.it>
++ *
++ * 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
++ *
++ */
++
++#undef DEBUG
++/* #define VERBOSE DBG_VERBOSE */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/ioport.h>
++#include <linux/types.h>
++#include <linux/version.h>
++#include <linux/errno.h>
++#include <linux/delay.h>
++#include <linux/sched.h>
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/timer.h>
++#include <linux/list.h>
++#include <linux/interrupt.h>
++#include <linux/proc_fs.h>
++#include <linux/mm.h>
++#include <linux/device.h>
++#include <linux/dma-mapping.h>
++#include <linux/platform_device.h>
++
++#include <asm/byteorder.h>
++#include <asm/dma.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++#include <asm/system.h>
++#include <asm/mach-types.h>
++#include <asm/unaligned.h>
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++
++#include <linux/usb/ch9.h>
++#include <linux/usb_gadget.h>
++
++#include <asm/arch/udc.h>
++
++
++/*
++ * This driver handles the USB Device Controller (UDC) in Intel's PXA 27x
++ * series processors.
++ * Such controller drivers work with a gadget driver. The gadget driver
++ * returns descriptors, implements configuration and data protocols used
++ * by the host to interact with this device, and allocates endpoints to
++ * the different protocol interfaces. The controller driver virtualizes
++ * usb hardware so that the gadget drivers will be more portable.
++ *
++ * This UDC hardware wants to implement a bit too much USB protocol, so
++ * it constrains the sorts of USB configuration change events that work.
++ * The errata for these chips are misleading; some "fixed" bugs from
++ * pxa250 a0/a1 b0/b1/b2 sure act like they're still there.
++ */
++
++#define DRIVER_VERSION "08-Feb-2007"
++#define DRIVER_DESC "PXA 27x USB Device Controller driver"
++
++
++static const char driver_name [] = "pxa27x_udc";
++
++static const char ep0name [] = "ep0";
++
++
++#undef USE_DMA
++#undef DISABLE_TEST_MODE
++
++#ifdef CONFIG_PROC_FS
++#define UDC_PROC_FILE
++#endif
++
++#include "pxa27x_udc.h"
++
++#ifdef CONFIG_EMBEDDED
++/* few strings, and little code to use them */
++#undef DEBUG
++#undef UDC_PROC_FILE
++#endif
++
++#ifdef USE_DMA
++static int use_dma = 1;
++module_param(use_dma, bool, 0);
++MODULE_PARM_DESC (use_dma, "true to use dma");
++
++static void dma_nodesc_handler (int dmach, void *_ep);
++static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req);
++
++#define DMASTR " (dma support)"
++
++#else /* !USE_DMA */
++#define DMASTR " (pio only)"
++#endif
++
++#ifdef CONFIG_USB_PXA27X_SMALL
++#define SIZE_STR " (small)"
++#else
++#define SIZE_STR ""
++#endif
++
++#ifdef DISABLE_TEST_MODE
++/* (mode == 0) == no undocumented chip tweaks
++ * (mode & 1) == double buffer bulk IN
++ * (mode & 2) == double buffer bulk OUT
++ * ... so mode = 3 (or 7, 15, etc) does it for both
++ */
++static ushort fifo_mode = 0;
++module_param(fifo_mode, ushort, 0);
++MODULE_PARM_DESC (fifo_mode, "pxa27x udc fifo mode");
++#endif
++
++#define UDCISR0_IR0 0x3
++#define UDCISR_INT_MASK (UDC_INT_FIFOERROR | UDC_INT_PACKETCMP)
++#define UDCICR_INT_MASK UDCISR_INT_MASK
++
++#define UDCCSR_MASK (UDCCSR_FST | UDCCSR_DME)
++/* ---------------------------------------------------------------------------
++ * endpoint related parts of the api to the usb controller hardware,
++ * used by gadget driver; and the inner talker-to-hardware core.
++ * ---------------------------------------------------------------------------
++ */
++
++static void pxa27x_ep_fifo_flush (struct usb_ep *ep);
++static void nuke (struct pxa27x_ep *, int status);
++
++static void pio_irq_enable(int ep_num)
++{
++ if (ep_num < 16)
++ UDCICR0 |= 3 << (ep_num * 2);
++ else {
++ ep_num -= 16;
++ UDCICR1 |= 3 << (ep_num * 2);
++ }
++}
++
++static void pio_irq_disable(int ep_num)
++{
++ ep_num &= 0xf;
++ if (ep_num < 16)
++ UDCICR0 &= ~(3 << (ep_num * 2));
++ else {
++ ep_num -= 16;
++ UDCICR1 &= ~(3 << (ep_num * 2));
++ }
++}
++
++/* The UDCCR reg contains mask and interrupt status bits,
++ * so using '|=' isn't safe as it may ack an interrupt.
++ */
++#define UDCCR_MASK_BITS (UDCCR_OEN | UDCCR_UDE)
++
++static inline void udc_set_mask_UDCCR(int mask)
++{
++ UDCCR = (UDCCR & UDCCR_MASK_BITS) | (mask & UDCCR_MASK_BITS);
++}
++
++static inline void udc_clear_mask_UDCCR(int mask)
++{
++ UDCCR = (UDCCR & UDCCR_MASK_BITS) & ~(mask & UDCCR_MASK_BITS);
++}
++
++static inline void udc_ack_int_UDCCR(int mask)
++{
++ /* udccr contains the bits we dont want to change */
++ __u32 udccr = UDCCR & UDCCR_MASK_BITS;
++
++ UDCCR = udccr | (mask & ~UDCCR_MASK_BITS);
++}
++
++/*
++ * endpoint enable/disable
++ *
++ * we need to verify the descriptors used to enable endpoints. since pxa27x
++ * endpoint configurations are fixed, and are pretty much always enabled,
++ * there's not a lot to manage here.
++ *
++ * because pxa27x can't selectively initialize bulk (or interrupt) endpoints,
++ * (resetting endpoint halt and toggle), SET_INTERFACE is unusable except
++ * for a single interface (with only the default altsetting) and for gadget
++ * drivers that don't halt endpoints (not reset by set_interface). that also
++ * means that if you use ISO, you must violate the USB spec rule that all
++ * iso endpoints must be in non-default altsettings.
++ */
++static int pxa27x_ep_enable (struct usb_ep *_ep,
++ const struct usb_endpoint_descriptor *desc)
++{
++ struct pxa27x_ep *ep;
++ struct pxa27x_udc *dev;
++
++ ep = container_of (_ep, struct pxa27x_ep, ep);
++ if (!_ep || !desc || _ep->name == ep0name
++ || desc->bDescriptorType != USB_DT_ENDPOINT
++ || ep->fifo_size < le16_to_cpu(desc->wMaxPacketSize)) {
++ DMSG("%s, bad ep or descriptor\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ /* xfer types must match, except that interrupt ~= bulk */
++ if( ep->ep_type != USB_ENDPOINT_XFER_BULK
++ && desc->bmAttributes != USB_ENDPOINT_XFER_INT) {
++ DMSG("%s, %s type mismatch\n", __FUNCTION__, _ep->name);
++ return -EINVAL;
++ }
++
++ /* hardware _could_ do smaller, but driver doesn't */
++ if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK
++ && le16_to_cpu (desc->wMaxPacketSize)
++ != BULK_FIFO_SIZE)
++ || !desc->wMaxPacketSize) {
++ DMSG("%s, bad %s maxpacket\n", __FUNCTION__, _ep->name);
++ return -ERANGE;
++ }
++
++ dev = ep->dev;
++ if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) {
++ DMSG("%s, bogus device state\n", __FUNCTION__);
++ return -ESHUTDOWN;
++ }
++
++ ep->desc = desc;
++ ep->dma = -1;
++ ep->stopped = 0;
++ ep->pio_irqs = ep->dma_irqs = 0;
++ ep->ep.maxpacket = le16_to_cpu (desc->wMaxPacketSize);
++
++ /* flush fifo (mostly for OUT buffers) */
++ pxa27x_ep_fifo_flush (_ep);
++
++ /* ... reset halt state too, if we could ... */
++
++#ifdef USE_DMA
++ /* for (some) bulk and ISO endpoints, try to get a DMA channel and
++ * bind it to the endpoint. otherwise use PIO.
++ */
++ DMSG("%s: called attributes=%d\n", __FUNCTION__, ep->ep_type);
++ switch (ep->ep_type) {
++ case USB_ENDPOINT_XFER_ISOC:
++ if (le16_to_cpu(desc->wMaxPacketSize) % 32)
++ break;
++ // fall through
++ case USB_ENDPOINT_XFER_BULK:
++ if (!use_dma || !ep->reg_drcmr)
++ break;
++ ep->dma = pxa_request_dma ((char *)_ep->name,
++ (le16_to_cpu (desc->wMaxPacketSize) > 64)
++ ? DMA_PRIO_MEDIUM /* some iso */
++ : DMA_PRIO_LOW,
++ dma_nodesc_handler, ep);
++ if (ep->dma >= 0) {
++ *ep->reg_drcmr = DRCMR_MAPVLD | ep->dma;
++ DMSG("%s using dma%d\n", _ep->name, ep->dma);
++ }
++ default:
++ break;
++ }
++#endif
++ DBG(DBG_VERBOSE, "enabled %s\n", _ep->name);
++ return 0;
++}
++
++static int pxa27x_ep_disable (struct usb_ep *_ep)
++{
++ struct pxa27x_ep *ep;
++
++ ep = container_of (_ep, struct pxa27x_ep, ep);
++ if (!_ep || !ep->desc) {
++ DMSG("%s, %s not enabled\n", __FUNCTION__,
++ _ep ? ep->ep.name : NULL);
++ return -EINVAL;
++ }
++ nuke (ep, -ESHUTDOWN);
++
++#ifdef USE_DMA
++ if (ep->dma >= 0) {
++ *ep->reg_drcmr = 0;
++ pxa_free_dma (ep->dma);
++ ep->dma = -1;
++ }
++#endif
++
++ /* flush fifo (mostly for IN buffers) */
++ pxa27x_ep_fifo_flush (_ep);
++
++ ep->desc = 0;
++ ep->stopped = 1;
++
++ DBG(DBG_VERBOSE, "%s disabled\n", _ep->name);
++ return 0;
++}
++
++/*-------------------------------------------------------------------------*/
++
++/* for the pxa27x, these can just wrap kmalloc/kfree. gadget drivers
++ * must still pass correctly initialized endpoints, since other controller
++ * drivers may care about how it's currently set up (dma issues etc).
++ */
++
++/*
++ * pxa27x_ep_alloc_request - allocate a request data structure
++ */
++static struct usb_request *
++pxa27x_ep_alloc_request (struct usb_ep *_ep, unsigned int gfp_flags)
++{
++ struct pxa27x_request *req;
++
++ req = kmalloc (sizeof *req, gfp_flags);
++ if (!req)
++ return 0;
++
++ memset (req, 0, sizeof *req);
++ INIT_LIST_HEAD (&req->queue);
++ return &req->req;
++}
++
++
++/*
++ * pxa27x_ep_free_request - deallocate a request data structure
++ */
++static void
++pxa27x_ep_free_request (struct usb_ep *_ep, struct usb_request *_req)
++{
++ struct pxa27x_request *req;
++
++ req = container_of(_req, struct pxa27x_request, req);
++ WARN_ON (!list_empty (&req->queue));
++ kfree(req);
++}
++
++
++/* PXA cache needs flushing with DMA I/O (it's dma-incoherent), but there's
++ * no device-affinity and the heap works perfectly well for i/o buffers.
++ * It wastes much less memory than dma_alloc_coherent() would, and even
++ * prevents cacheline (32 bytes wide) sharing problems.
++ */
++static void *
++pxa27x_ep_alloc_buffer(struct usb_ep *_ep, unsigned bytes,
++ dma_addr_t *dma, unsigned int gfp_flags)
++{
++ char *retval;
++
++ retval = kmalloc (bytes, gfp_flags & ~(__GFP_DMA|__GFP_HIGHMEM));
++ if (retval)
++ *dma = virt_to_bus (retval);
++ return retval;
++}
++
++static void
++pxa27x_ep_free_buffer(struct usb_ep *_ep, void *buf, dma_addr_t dma,
++ unsigned bytes)
++{
++ kfree (buf);
++}
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * done - retire a request; caller blocked irqs
++ */
++static void done(struct pxa27x_ep *ep, struct pxa27x_request *req, int status)
++{
++ list_del_init(&req->queue);
++ if (likely (req->req.status == -EINPROGRESS))
++ req->req.status = status;
++ else
++ status = req->req.status;
++
++ if (status && status != -ESHUTDOWN)
++ DBG(DBG_VERBOSE, "complete %s req %p stat %d len %u/%u\n",
++ ep->ep.name, &req->req, status,
++ req->req.actual, req->req.length);
++
++ /* don't modify queue heads during completion callback */
++ req->req.complete(&ep->ep, &req->req);
++}
++
++
++static inline void ep0_idle (struct pxa27x_udc *dev)
++{
++ dev->ep0state = EP0_IDLE;
++ LED_EP0_OFF;
++}
++
++static int
++write_packet(volatile u32 *uddr, struct pxa27x_request *req, unsigned max)
++{
++ u32 *buf;
++ int length, count, remain;
++
++ buf = (u32*)(req->req.buf + req->req.actual);
++ prefetch(buf);
++
++ /* how big will this packet be? */
++ length = min(req->req.length - req->req.actual, max);
++ req->req.actual += length;
++
++ remain = length & 0x3;
++ count = length & ~(0x3);
++
++ while (likely(count)) {
++ *uddr = *buf++;
++ count -= 4;
++ }
++
++ if (remain) {
++ volatile u8* reg=(u8*)uddr;
++ char *rd =(u8*)buf;
++
++ while (remain--) {
++ *reg=*rd++;
++ }
++ }
++
++ return length;
++}
++
++/*
++ * write to an IN endpoint fifo, as many packets as possible.
++ * irqs will use this to write the rest later.
++ * caller guarantees at least one packet buffer is ready (or a zlp).
++ */
++static int
++write_fifo (struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ unsigned max;
++
++ max = le16_to_cpu(ep->desc->wMaxPacketSize);
++ do {
++ int count;
++ int is_last, is_short;
++
++ count = write_packet(ep->reg_udcdr, req, max);
++
++ /* last packet is usually short (or a zlp) */
++ if (unlikely (count != max))
++ is_last = is_short = 1;
++ else {
++ if (likely(req->req.length != req->req.actual)
++ || req->req.zero)
++ is_last = 0;
++ else
++ is_last = 1;
++ /* interrupt/iso maxpacket may not fill the fifo */
++ is_short = unlikely (max < ep->fifo_size);
++ }
++
++ DMSG("wrote %s count:%d bytes%s%s %d left %p\n",
++ ep->ep.name, count,
++ is_last ? "/L" : "", is_short ? "/S" : "",
++ req->req.length - req->req.actual, &req->req);
++
++ /* let loose that packet. maybe try writing another one,
++ * double buffering might work. TSP, TPC, and TFS
++ * bit values are the same for all normal IN endpoints.
++ */
++ *ep->reg_udccsr = UDCCSR_PC;
++ if (is_short)
++ *ep->reg_udccsr = UDCCSR_SP;
++
++ /* requests complete when all IN data is in the FIFO */
++ if (is_last) {
++ done (ep, req, 0);
++ if (list_empty(&ep->queue) || unlikely(ep->dma >= 0)) {
++ pio_irq_disable (ep->ep_num);
++#ifdef USE_DMA
++ /* unaligned data and zlps couldn't use dma */
++ if (unlikely(!list_empty(&ep->queue))) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep,req);
++ return 0;
++ }
++#endif
++ }
++ return 1;
++ }
++
++ // TODO experiment: how robust can fifo mode tweaking be?
++ // double buffering is off in the default fifo mode, which
++ // prevents TFS from being set here.
++
++ } while (*ep->reg_udccsr & UDCCSR_FS);
++ return 0;
++}
++
++/* caller asserts req->pending (ep0 irq status nyet cleared); starts
++ * ep0 data stage. these chips want very simple state transitions.
++ */
++static inline
++void ep0start(struct pxa27x_udc *dev, u32 flags, const char *tag)
++{
++ UDCCSR0 = flags|UDCCSR0_SA|UDCCSR0_OPC;
++ UDCISR0 = UDCICR_INT(0, UDC_INT_FIFOERROR | UDC_INT_PACKETCMP);
++ dev->req_pending = 0;
++ DBG(DBG_VERY_NOISY, "%s %s, %02x/%02x\n",
++ __FUNCTION__, tag, UDCCSR0, flags);
++}
++
++static int
++write_ep0_fifo (struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ unsigned count;
++ int is_short;
++
++ count = write_packet(&UDCDR0, req, EP0_FIFO_SIZE);
++ ep->dev->stats.write.bytes += count;
++
++ /* last packet "must be" short (or a zlp) */
++ is_short = (count != EP0_FIFO_SIZE);
++
++ DBG(DBG_VERY_NOISY, "ep0in %d bytes %d left %p\n", count,
++ req->req.length - req->req.actual, &req->req);
++
++ if (unlikely (is_short)) {
++ if (ep->dev->req_pending)
++ ep0start(ep->dev, UDCCSR0_IPR, "short IN");
++ else
++ UDCCSR0 = UDCCSR0_IPR;
++
++ count = req->req.length;
++ done (ep, req, 0);
++ ep0_idle(ep->dev);
++#if 0
++ /* This seems to get rid of lost status irqs in some cases:
++ * host responds quickly, or next request involves config
++ * change automagic, or should have been hidden, or ...
++ *
++ * FIXME get rid of all udelays possible...
++ */
++ if (count >= EP0_FIFO_SIZE) {
++ count = 100;
++ do {
++ if ((UDCCSR0 & UDCCSR0_OPC) != 0) {
++ /* clear OPC, generate ack */
++ UDCCSR0 = UDCCSR0_OPC;
++ break;
++ }
++ count--;
++ udelay(1);
++ } while (count);
++ }
++#endif
++ } else if (ep->dev->req_pending)
++ ep0start(ep->dev, 0, "IN");
++ return is_short;
++}
++
++
++/*
++ * read_fifo - unload packet(s) from the fifo we use for usb OUT
++ * transfers and put them into the request. caller should have made
++ * sure there's at least one packet ready.
++ *
++ * returns true if the request completed because of short packet or the
++ * request buffer having filled (and maybe overran till end-of-packet).
++ */
++static int
++read_fifo (struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ for (;;) {
++ u32 *buf;
++ int bufferspace, count, is_short;
++
++ /* make sure there's a packet in the FIFO.*/
++ if (unlikely ((*ep->reg_udccsr & UDCCSR_PC) == 0))
++ break;
++ buf =(u32*) (req->req.buf + req->req.actual);
++ prefetchw(buf);
++ bufferspace = req->req.length - req->req.actual;
++
++ /* read all bytes from this packet */
++ if (likely (*ep->reg_udccsr & UDCCSR_BNE)) {
++ count = 0x3ff & *ep->reg_udcbcr;
++ req->req.actual += min (count, bufferspace);
++ } else /* zlp */
++ count = 0;
++
++ is_short = (count < ep->ep.maxpacket);
++ DMSG("read %s udccsr:%02x, count:%d bytes%s req %p %d/%d\n",
++ ep->ep.name, *ep->reg_udccsr, count,
++ is_short ? "/S" : "",
++ &req->req, req->req.actual, req->req.length);
++
++// dump_regs(ep->ep_num );
++ count = min(count, bufferspace);
++ while (likely (count > 0)) {
++ *buf++ = *ep->reg_udcdr;
++ count -= 4;
++ }
++ DMSG("Buf:0x%p\n", req->req.buf);
++
++ *ep->reg_udccsr = UDCCSR_PC;
++ /* RPC/RSP/RNE could now reflect the other packet buffer */
++
++ /* completion */
++ if (is_short || req->req.actual == req->req.length) {
++ done (ep, req, 0);
++ if (list_empty(&ep->queue))
++ pio_irq_disable (ep->ep_num);
++ return 1;
++ }
++
++ /* finished that packet. the next one may be waiting... */
++ }
++ return 0;
++}
++
++/*
++ * special ep0 version of the above. no UBCR0 or double buffering; status
++ * handshaking is magic. most device protocols don't need control-OUT.
++ * CDC vendor commands (and RNDIS), mass storage CB/CBI, and some other
++ * protocols do use them.
++ */
++static int
++read_ep0_fifo (struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ u32 *buf, word;
++ unsigned bufferspace;
++
++ buf = (u32*) (req->req.buf + req->req.actual);
++ bufferspace = req->req.length - req->req.actual;
++
++ while (UDCCSR0 & UDCCSR0_RNE) {
++ word = UDCDR0;
++
++ if (unlikely (bufferspace == 0)) {
++ /* this happens when the driver's buffer
++ * is smaller than what the host sent.
++ * discard the extra data.
++ */
++ if (req->req.status != -EOVERFLOW)
++ DMSG("%s overflow\n", ep->ep.name);
++ req->req.status = -EOVERFLOW;
++ } else {
++ *buf++ = word;
++ req->req.actual += 4;
++ bufferspace -= 4;
++ }
++ }
++
++ UDCCSR0 = UDCCSR0_OPC ;
++
++ /* completion */
++ if (req->req.actual >= req->req.length)
++ return 1;
++
++ /* finished that packet. the next one may be waiting... */
++ return 0;
++}
++
++#ifdef USE_DMA
++
++#define MAX_IN_DMA ((DCMD_LENGTH + 1) - BULK_FIFO_SIZE)
++static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ u32 dcmd = 0;
++ u32 len = req->req.length;
++ u32 buf = req->req.dma;
++ u32 fifo = io_v2p ((u32)ep->reg_udcdr);
++
++ buf += req->req.actual;
++ len -= req->req.actual;
++ ep->dma_con = 0;
++
++ DMSG("%s: req:0x%p length:%d, actual:%d dma:%d\n",
++ __FUNCTION__, &req->req, req->req.length,
++ req->req.actual,ep->dma);
++
++ /* no-descriptor mode can be simple for bulk-in, iso-in, iso-out */
++ DCSR(ep->dma) = DCSR_NODESC;
++ if (buf & 0x3)
++ DALGN |= 1 << ep->dma;
++ else
++ DALGN &= ~(1 << ep->dma);
++
++ if (ep->dir_in) {
++ DSADR(ep->dma) = buf;
++ DTADR(ep->dma) = fifo;
++ if (len > MAX_IN_DMA) {
++ len= MAX_IN_DMA;
++ ep->dma_con =1 ;
++ } else if (len >= ep->ep.maxpacket) {
++ if ((ep->dma_con = (len % ep->ep.maxpacket) != 0))
++ len = ep->ep.maxpacket;
++ }
++ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN
++ | DCMD_FLOWTRG | DCMD_INCSRCADDR;
++ } else {
++ DSADR(ep->dma) = fifo;
++ DTADR(ep->dma) = buf;
++ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN
++ | DCMD_FLOWSRC | DCMD_INCTRGADDR;
++ }
++ *ep->reg_udccsr = UDCCSR_DME;
++ DCMD(ep->dma) = dcmd;
++ DCSR(ep->dma) = DCSR_NODESC | DCSR_EORIRQEN \
++ | ((ep->dir_in) ? DCSR_STOPIRQEN : 0);
++ *ep->reg_drcmr = ep->dma | DRCMR_MAPVLD;
++ DCSR(ep->dma) |= DCSR_RUN;
++}
++
++static void cancel_dma(struct pxa27x_ep *ep)
++{
++ struct pxa27x_request *req;
++ u32 tmp;
++
++ if (DCSR(ep->dma) == 0 || list_empty(&ep->queue))
++ return;
++
++ DMSG("hehe dma:%d,dcsr:0x%x\n", ep->dma, DCSR(ep->dma));
++ DCSR(ep->dma) = 0;
++ while ((DCSR(ep->dma) & DCSR_STOPSTATE) == 0)
++ cpu_relax();
++
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++ tmp = DCMD(ep->dma) & DCMD_LENGTH;
++ req->req.actual = req->req.length - tmp;
++
++ /* the last tx packet may be incomplete, so flush the fifo.
++ * FIXME correct req.actual if we can
++ */
++ *ep->reg_udccsr = UDCCSR_FEF;
++}
++
++static void dma_nodesc_handler(int dmach, void *_ep, struct pt_regs *r)
++{
++ struct pxa27x_ep *ep = _ep;
++ struct pxa27x_request *req, *req_next;
++ u32 dcsr, tmp, completed;
++
++ local_irq_disable();
++
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++
++ DMSG("%s, buf:0x%p\n",__FUNCTION__, req->req.buf);
++
++ ep->dma_irqs++;
++ ep->dev->stats.irqs++;
++ HEX_DISPLAY(ep->dev->stats.irqs);
++
++ completed = 0;
++
++ dcsr = DCSR(dmach);
++ DCSR(ep->dma) &= ~DCSR_RUN;
++
++ if (dcsr & DCSR_BUSERR) {
++ DCSR(dmach) = DCSR_BUSERR;
++ printk(KERN_ERR " Buss Error\n");
++ req->req.status = -EIO;
++ completed = 1;
++ } else if (dcsr & DCSR_ENDINTR) {
++ DCSR(dmach) = DCSR_ENDINTR;
++ if (ep->dir_in) {
++ tmp = req->req.length - req->req.actual;
++ /* Last packet is a short one*/
++ if ( tmp < ep->ep.maxpacket) {
++ int count = 0;
++
++ *ep->reg_udccsr = UDCCSR_SP | \
++ (*ep->reg_udccsr & UDCCSR_MASK);
++ /*Wait for packet out */
++ while( (count++ < 10000) && \
++ !(*ep->reg_udccsr & UDCCSR_FS));
++ if (count >= 10000)
++ DMSG("Failed to send packet\n");
++ else
++ DMSG("%s: short packet sent len:%d,"
++ "length:%d,actual:%d\n", __FUNCTION__,
++ tmp, req->req.length, req->req.actual);
++ req->req.actual = req->req.length;
++ completed = 1;
++ /* There are still packets to transfer */
++ } else if ( ep->dma_con) {
++ DMSG("%s: more packets,length:%d,actual:%d\n",
++ __FUNCTION__,req->req.length,
++ req->req.actual);
++ req->req.actual += ep->ep.maxpacket;
++ completed = 0;
++ } else {
++ DMSG("%s: no more packets,length:%d,"
++ "actual:%d\n", __FUNCTION__,
++ req->req.length, req->req.actual);
++ req->req.actual = req->req.length;
++ completed = 1;
++ }
++ } else {
++ req->req.actual = req->req.length;
++ completed = 1;
++ }
++ } else if (dcsr & DCSR_EORINTR) { //Only happened in OUT DMA
++ int remain,udccsr ;
++
++ DCSR(dmach) = DCSR_EORINTR;
++ remain = DCMD(dmach) & DCMD_LENGTH;
++ req->req.actual = req->req.length - remain;
++
++ udccsr = *ep->reg_udccsr;
++ if (udccsr & UDCCSR_SP) {
++ *ep->reg_udccsr = UDCCSR_PC | (udccsr & UDCCSR_MASK);
++ completed = 1;
++ }
++ DMSG("%s: length:%d actual:%d\n",
++ __FUNCTION__, req->req.length, req->req.actual);
++ } else
++ DMSG("%s: Others dma:%d DCSR:0x%x DCMD:0x%x\n",
++ __FUNCTION__, dmach, DCSR(dmach), DCMD(dmach));
++
++ if (likely(completed)) {
++ if (req->queue.next != &ep->queue) {
++ req_next = list_entry(req->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep, req_next);
++ }
++ done(ep, req, 0);
++ } else {
++ kick_dma(ep, req);
++ }
++
++ local_irq_enable();
++}
++
++#endif
++/*-------------------------------------------------------------------------*/
++
++static int
++pxa27x_ep_queue(struct usb_ep *_ep, struct usb_request *_req, unsigned int gfp_flags)
++{
++ struct pxa27x_ep *ep;
++ struct pxa27x_request *req;
++ struct pxa27x_udc *dev;
++ unsigned long flags;
++
++ req = container_of(_req, struct pxa27x_request, req);
++ if (unlikely (!_req || !_req->complete || !_req->buf||
++ !list_empty(&req->queue))) {
++ DMSG("%s, bad params\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (unlikely (!_ep || (!ep->desc && ep->ep.name != ep0name))) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ DMSG("%s, ep point %d is queue\n", __FUNCTION__, ep->ep_num);
++
++ dev = ep->dev;
++ if (unlikely (!dev->driver
++ || dev->gadget.speed == USB_SPEED_UNKNOWN)) {
++ DMSG("%s, bogus device state\n", __FUNCTION__);
++ return -ESHUTDOWN;
++ }
++
++ /* iso is always one packet per request, that's the only way
++ * we can report per-packet status. that also helps with dma.
++ */
++ if (unlikely (ep->ep_type == USB_ENDPOINT_XFER_ISOC
++ && req->req.length > le16_to_cpu
++ (ep->desc->wMaxPacketSize)))
++ return -EMSGSIZE;
++
++#ifdef USE_DMA
++ /* FIXME: caller may already have done the dma mapping */
++ if (ep->dma >= 0) {
++ _req->dma = dma_map_single(dev->dev, _req->buf, _req->length,
++ (ep->dir_in) ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
++ }
++#endif
++
++ DBG(DBG_NOISY, "%s queue req %p, len %d buf %p\n",
++ _ep->name, _req, _req->length, _req->buf);
++
++ local_irq_save(flags);
++
++ _req->status = -EINPROGRESS;
++ _req->actual = 0;
++
++ /* kickstart this i/o queue? */
++ if (list_empty(&ep->queue) && !ep->stopped) {
++ if (ep->desc == 0 /* ep0 */) {
++ unsigned length = _req->length;
++
++ switch (dev->ep0state) {
++ case EP0_IN_DATA_PHASE:
++ dev->stats.write.ops++;
++ if (write_ep0_fifo(ep, req))
++ req = 0;
++ break;
++
++ case EP0_OUT_DATA_PHASE:
++ dev->stats.read.ops++;
++ if (dev->req_pending)
++ ep0start(dev, UDCCSR0_IPR, "OUT");
++ if (length == 0 || ((UDCCSR0 & UDCCSR0_RNE) != 0
++ && read_ep0_fifo(ep, req))) {
++ ep0_idle(dev);
++ done(ep, req, 0);
++ req = 0;
++ }
++ break;
++ case EP0_NO_ACTION:
++ ep0_idle(dev);
++ req=0;
++ break;
++ default:
++ DMSG("ep0 i/o, odd state %d\n", dev->ep0state);
++ local_irq_restore (flags);
++ return -EL2HLT;
++ }
++#ifdef USE_DMA
++ /* either start dma or prime pio pump */
++ } else if (ep->dma >= 0) {
++ kick_dma(ep, req);
++#endif
++ /* can the FIFO can satisfy the request immediately? */
++ } else if (ep->dir_in
++ && (*ep->reg_udccsr & UDCCSR_FS) != 0
++ && write_fifo(ep, req)) {
++ req = 0;
++ } else if ((*ep->reg_udccsr & UDCCSR_FS) != 0
++ && read_fifo(ep, req)) {
++ req = 0;
++ }
++ DMSG("req:%p,ep->desc:%p,ep->dma:%d\n", req, ep->desc, ep->dma);
++ if (likely (req && ep->desc) && ep->dma < 0)
++ pio_irq_enable(ep->ep_num);
++ }
++
++ /* pio or dma irq handler advances the queue. */
++ if (likely (req != 0))
++ list_add_tail(&req->queue, &ep->queue);
++ local_irq_restore(flags);
++
++ return 0;
++}
++
++
++/*
++ * nuke - dequeue ALL requests
++ */
++static void nuke(struct pxa27x_ep *ep, int status)
++{
++ struct pxa27x_request *req;
++
++ /* called with irqs blocked */
++#ifdef USE_DMA
++ if (ep->dma >= 0 && !ep->stopped)
++ cancel_dma(ep);
++#endif
++ while (!list_empty(&ep->queue)) {
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++ done(ep, req, status);
++ }
++ if (ep->desc)
++ pio_irq_disable (ep->ep_num);
++}
++
++
++/* dequeue JUST ONE request */
++static int pxa27x_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
++{
++ struct pxa27x_ep *ep;
++ struct pxa27x_request *req;
++ unsigned long flags;
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (!_ep || ep->ep.name == ep0name)
++ return -EINVAL;
++
++ local_irq_save(flags);
++
++ /* make sure it's actually queued on this endpoint */
++ list_for_each_entry (req, &ep->queue, queue) {
++ if (&req->req == _req)
++ break;
++ }
++ if (&req->req != _req) {
++ local_irq_restore(flags);
++ return -EINVAL;
++ }
++
++#ifdef USE_DMA
++ if (ep->dma >= 0 && ep->queue.next == &req->queue && !ep->stopped) {
++ cancel_dma(ep);
++ done(ep, req, -ECONNRESET);
++ /* restart i/o */
++ if (!list_empty(&ep->queue)) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep, req);
++ }
++ } else
++#endif
++ done(ep, req, -ECONNRESET);
++
++ local_irq_restore(flags);
++ return 0;
++}
++
++/*-------------------------------------------------------------------------*/
++
++static int pxa27x_ep_set_halt(struct usb_ep *_ep, int value)
++{
++ struct pxa27x_ep *ep;
++ unsigned long flags;
++
++ DMSG("%s is called\n", __FUNCTION__);
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (unlikely (!_ep
++ || (!ep->desc && ep->ep.name != ep0name))
++ || ep->ep_type == USB_ENDPOINT_XFER_ISOC) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -EINVAL;
++ }
++ if (value == 0) {
++ /* this path (reset toggle+halt) is needed to implement
++ * SET_INTERFACE on normal hardware. but it can't be
++ * done from software on the PXA UDC, and the hardware
++ * forgets to do it as part of SET_INTERFACE automagic.
++ */
++ DMSG("only host can clear %s halt\n", _ep->name);
++ return -EROFS;
++ }
++
++ local_irq_save(flags);
++
++ if (ep->dir_in && ((*ep->reg_udccsr & UDCCSR_FS) == 0
++ || !list_empty(&ep->queue))) {
++ local_irq_restore(flags);
++ return -EAGAIN;
++ }
++
++ /* FST bit is the same for control, bulk in, bulk out, interrupt in */
++ *ep->reg_udccsr = UDCCSR_FST|UDCCSR_FEF;
++
++ /* ep0 needs special care */
++ if (!ep->desc) {
++ start_watchdog(ep->dev);
++ ep->dev->req_pending = 0;
++ ep->dev->ep0state = EP0_STALL;
++ LED_EP0_OFF;
++
++ /* and bulk/intr endpoints like dropping stalls too */
++ } else {
++ unsigned i;
++ for (i = 0; i < 1000; i += 20) {
++ if (*ep->reg_udccsr & UDCCSR_SST)
++ break;
++ udelay(20);
++ }
++ }
++ local_irq_restore(flags);
++
++ DBG(DBG_VERBOSE, "%s halt\n", _ep->name);
++ return 0;
++}
++
++static int pxa27x_ep_fifo_status(struct usb_ep *_ep)
++{
++ struct pxa27x_ep *ep;
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (!_ep) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -ENODEV;
++ }
++ /* pxa can't report unclaimed bytes from IN fifos */
++ if (ep->dir_in)
++ return -EOPNOTSUPP;
++ if (ep->dev->gadget.speed == USB_SPEED_UNKNOWN
++ || (*ep->reg_udccsr & UDCCSR_FS) == 0)
++ return 0;
++ else
++ return (*ep->reg_udcbcr & 0xfff) + 1;
++}
++
++static void pxa27x_ep_fifo_flush(struct usb_ep *_ep)
++{
++ struct pxa27x_ep *ep;
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (!_ep || ep->ep.name == ep0name || !list_empty(&ep->queue)) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return;
++ }
++
++ /* toggle and halt bits stay unchanged */
++
++ /* for OUT, just read and discard the FIFO contents. */
++ if (!ep->dir_in) {
++ while (((*ep->reg_udccsr) & UDCCSR_BNE) != 0)
++ (void) *ep->reg_udcdr;
++ return;
++ }
++
++ /* most IN status is the same, but ISO can't stall */
++ *ep->reg_udccsr = UDCCSR_PC|UDCCSR_FST|UDCCSR_TRN
++ | (ep->ep_type == USB_ENDPOINT_XFER_ISOC)
++ ? 0 : UDCCSR_SST;
++}
++
++
++static struct usb_ep_ops pxa27x_ep_ops = {
++ .enable = pxa27x_ep_enable,
++ .disable = pxa27x_ep_disable,
++
++ .alloc_request = pxa27x_ep_alloc_request,
++ .free_request = pxa27x_ep_free_request,
++
++ .alloc_buffer = pxa27x_ep_alloc_buffer,
++ .free_buffer = pxa27x_ep_free_buffer,
++
++ .queue = pxa27x_ep_queue,
++ .dequeue = pxa27x_ep_dequeue,
++
++ .set_halt = pxa27x_ep_set_halt,
++ .fifo_status = pxa27x_ep_fifo_status,
++ .fifo_flush = pxa27x_ep_fifo_flush,
++};
++
++
++/* ---------------------------------------------------------------------------
++ * device-scoped parts of the api to the usb controller hardware
++ * ---------------------------------------------------------------------------
++ */
++
++static inline void validate_fifo_size(struct pxa27x_ep *pxa_ep, u8 bmAttributes)
++{
++ switch (bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
++ case USB_ENDPOINT_XFER_CONTROL:
++ pxa_ep->fifo_size = EP0_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_ISOC:
++ pxa_ep->fifo_size = ISO_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_BULK:
++ pxa_ep->fifo_size = BULK_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_INT:
++ pxa_ep->fifo_size = INT_FIFO_SIZE;
++ break;
++ default:
++ break;
++ }
++}
++
++#define NAME_SIZE 18
++struct usb_ep* pxa27x_ep_alloc(struct usb_gadget *gadget, struct usb_endpoint_descriptor *desc, int config, int interface, int alt)
++{
++ u32 tmp ;
++ unsigned i;
++ char* name;
++ struct usb_ep * ep = NULL;
++ struct pxa27x_ep *pxa_ep = NULL;
++ struct pxa27x_udc *dev = the_controller;
++
++ DMSG("pxa27x_config_ep is called\n");
++ DMSG(" usb endpoint descriptor is:\n"
++ " bLength:%d\n"
++ " bDescriptorType:%x\n"
++ " bEndpointAddress:%x\n"
++ " bmAttributes:%x\n"
++ " wMaxPacketSize:%d\n",
++ desc->bLength,
++ desc->bDescriptorType,desc->bEndpointAddress,
++ desc->bmAttributes,desc->wMaxPacketSize);
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if(!dev->ep[i].assigned) {
++ pxa_ep = &dev->ep[i];
++ pxa_ep->assigned = 1;
++ pxa_ep->ep_num = i;
++ break;
++ }
++ }
++ if (unlikely(i == UDC_EP_NUM)) {
++ printk(KERN_ERR __FILE__ ": Failed to find a spare endpoint\n");
++ return ep;
++ }
++
++
++ ep = &pxa_ep->ep;
++
++ pxa_ep->dev = dev;
++ pxa_ep->desc = desc;
++ pxa_ep->pio_irqs = pxa_ep->dma_irqs = 0;
++ pxa_ep->dma = -1;
++
++ if (!(desc->bEndpointAddress & 0xF))
++ desc->bEndpointAddress |= i;
++
++ if (!(desc->wMaxPacketSize)) {
++ validate_fifo_size(pxa_ep, desc->bmAttributes);
++ desc->wMaxPacketSize = pxa_ep->fifo_size;
++ } else
++ pxa_ep->fifo_size = desc->wMaxPacketSize;
++
++ pxa_ep->dir_in = (desc->bEndpointAddress & USB_DIR_IN) ? 1 : 0;
++ pxa_ep->ep_type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
++ pxa_ep->stopped = 1;
++ pxa_ep->dma_con = 0;
++ pxa_ep->config = config;
++ pxa_ep->interface = interface;
++ pxa_ep->aisn = alt;
++
++ pxa_ep->reg_udccsr = &UDCCSR0 + i;
++ pxa_ep->reg_udcbcr = &UDCBCR0 + i;
++ pxa_ep->reg_udcdr = &UDCDR0 + i ;
++ pxa_ep->reg_udccr = &UDCCRA - 1 + i;
++#ifdef USE_DMA
++ pxa_ep->reg_drcmr = &DRCMR24 + i;
++#endif
++
++ DMSG("udccsr=0x%8x, udcbcr=0x%8x, udcdr=0x%8x,"
++ "udccr0=0x%8x\n",
++ (unsigned)pxa_ep->reg_udccsr,
++ (unsigned)pxa_ep->reg_udcbcr,
++ (unsigned)pxa_ep->reg_udcdr,
++ (unsigned)pxa_ep->reg_udccr);
++
++ /* Configure UDCCR */
++ tmp = 0;
++ tmp |= (pxa_ep->config << UDCCONR_CN_S) & UDCCONR_CN;
++#if 0
++ tmp |= (pxa_ep->interface << UDCCONR_IN_S) & UDCCONR_IN;
++ tmp |= (pxa_ep->aisn << UDCCONR_AISN_S) & UDCCONR_AISN;
++#else
++ tmp |= (0 << UDCCONR_IN_S) & UDCCONR_IN;
++ tmp |= (0 << UDCCONR_AISN_S) & UDCCONR_AISN;
++#endif
++ tmp |= (desc->bEndpointAddress << UDCCONR_EN_S) & UDCCONR_EN;
++ tmp |= (pxa_ep->ep_type << UDCCONR_ET_S) & UDCCONR_ET;
++ tmp |= (pxa_ep->dir_in) ? UDCCONR_ED : 0;
++ tmp |= (min(pxa_ep->fifo_size, (unsigned)desc->wMaxPacketSize) \
++ << UDCCONR_MPS_S ) & UDCCONR_MPS;
++ tmp |= UDCCONR_DE | UDCCONR_EE;
++// tmp |= UDCCONR_EE;
++
++ *pxa_ep->reg_udccr = tmp;
++
++#ifdef USE_DMA
++ /* Only BULK use DMA */
++ if ((pxa_ep->ep_type & USB_ENDPOINT_XFERTYPE_MASK)\
++ == USB_ENDPOINT_XFER_BULK)
++ *pxa_ep->reg_udccsr = UDCCSR_DME;
++#endif
++
++ DMSG("UDCCR: 0x%p is 0x%x\n", pxa_ep->reg_udccr,*pxa_ep->reg_udccr);
++
++ /* Fill ep name*/
++ name = kmalloc(NAME_SIZE, GFP_KERNEL);
++ if (!name) {
++ printk(KERN_ERR "%s: Error\n", __FUNCTION__);
++ return NULL;
++ }
++
++ switch (pxa_ep->ep_type) {
++ case USB_ENDPOINT_XFER_BULK:
++ sprintf(name, "Bulk-%s-%d", (pxa_ep->dir_in ? "in":"out"), i);
++ break;
++ case USB_ENDPOINT_XFER_INT:
++ sprintf(name, "Interrupt-%s-%d", (pxa_ep->dir_in ? \
++ "in":"out"), i);
++ break;
++ default:
++ sprintf(name, "endpoint-%s-%d", (pxa_ep->dir_in ? \
++ "in":"out"), i);
++ break;
++ }
++ ep->name = name;
++
++ ep->ops = &pxa27x_ep_ops;
++ ep->maxpacket = min((ushort)pxa_ep->fifo_size, desc->wMaxPacketSize);
++
++ list_add_tail (&ep->ep_list, &gadget->ep_list);
++ return ep;
++}
++
++static int pxa27x_udc_get_frame(struct usb_gadget *_gadget)
++{
++ return (UDCFNR & 0x3FF);
++}
++
++static int pxa27x_udc_wakeup(struct usb_gadget *_gadget)
++{
++ /* host may not have enabled remote wakeup */
++ if ((UDCCR & UDCCR_DWRE) == 0)
++ return -EHOSTUNREACH;
++ udc_set_mask_UDCCR(UDCCR_UDR);
++ return 0;
++}
++
++static const struct usb_gadget_ops pxa27x_udc_ops = {
++ .ep_alloc = pxa27x_ep_alloc,
++ .get_frame = pxa27x_udc_get_frame,
++ .wakeup = pxa27x_udc_wakeup,
++ // current versions must always be self-powered
++};
++
++
++/*-------------------------------------------------------------------------*/
++
++#ifdef UDC_PROC_FILE
++
++static const char proc_node_name [] = "driver/udc";
++
++static int
++udc_proc_read(char *page, char **start, off_t off, int count,
++ int *eof, void *_dev)
++{
++ char *buf = page;
++ struct pxa27x_udc *dev = _dev;
++ char *next = buf;
++ unsigned size = count;
++ unsigned long flags;
++ int i, t;
++ u32 tmp;
++
++ if (off != 0)
++ return 0;
++
++ local_irq_save(flags);
++
++ /* basic device status */
++ t = scnprintf(next, size, DRIVER_DESC "\n"
++ "%s version: %s\nGadget driver: %s\n",
++ driver_name, DRIVER_VERSION SIZE_STR DMASTR,
++ dev->driver ? dev->driver->driver.name : "(none)");
++ size -= t;
++ next += t;
++
++ /* registers for device and ep0 */
++ t = scnprintf(next, size,
++ "uicr %02X.%02X, usir %02X.%02x, ufnr %02X\n",
++ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR);
++ size -= t;
++ next += t;
++
++ tmp = UDCCR;
++ t = scnprintf(next, size,"udccr %02X =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n", tmp,
++ (tmp & UDCCR_OEN) ? " oen":"",
++ (tmp & UDCCR_AALTHNP) ? " aalthnp":"",
++ (tmp & UDCCR_AHNP) ? " rem" : "",
++ (tmp & UDCCR_BHNP) ? " rstir" : "",
++ (tmp & UDCCR_DWRE) ? " dwre" : "",
++ (tmp & UDCCR_SMAC) ? " smac" : "",
++ (tmp & UDCCR_EMCE) ? " emce" : "",
++ (tmp & UDCCR_UDR) ? " udr" : "",
++ (tmp & UDCCR_UDA) ? " uda" : "",
++ (tmp & UDCCR_UDE) ? " ude" : "",
++ (tmp & UDCCR_ACN) >> UDCCR_ACN_S,
++ (tmp & UDCCR_AIN) >> UDCCR_AIN_S,
++ (tmp & UDCCR_AAISN)>> UDCCR_AAISN_S );
++
++ size -= t;
++ next += t;
++
++ tmp = UDCCSR0;
++ t = scnprintf(next, size,
++ "udccsr0 %02X =%s%s%s%s%s%s%s\n", tmp,
++ (tmp & UDCCSR0_SA) ? " sa" : "",
++ (tmp & UDCCSR0_RNE) ? " rne" : "",
++ (tmp & UDCCSR0_FST) ? " fst" : "",
++ (tmp & UDCCSR0_SST) ? " sst" : "",
++ (tmp & UDCCSR0_DME) ? " dme" : "",
++ (tmp & UDCCSR0_IPR) ? " ipr" : "",
++ (tmp & UDCCSR0_OPC) ? " opc" : "");
++ size -= t;
++ next += t;
++
++ if (!dev->driver)
++ goto done;
++
++ t = scnprintf(next, size, "ep0 IN %lu/%lu, OUT %lu/%lu\nirqs %lu\n\n",
++ dev->stats.write.bytes, dev->stats.write.ops,
++ dev->stats.read.bytes, dev->stats.read.ops,
++ dev->stats.irqs);
++ size -= t;
++ next += t;
++
++ /* dump endpoint queues */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep [i];
++ struct pxa27x_request *req;
++ int t;
++
++ if (i != 0) {
++ const struct usb_endpoint_descriptor *d;
++
++ d = ep->desc;
++ if (!d)
++ continue;
++ tmp = *dev->ep [i].reg_udccsr;
++ t = scnprintf(next, size,
++ "%s max %d %s udccs %02x udccr:0x%x\n",
++ ep->ep.name, le16_to_cpu (d->wMaxPacketSize),
++ (ep->dma >= 0) ? "dma" : "pio", tmp,
++ *dev->ep[i].reg_udccr);
++ /* TODO translate all five groups of udccs bits! */
++
++ } else /* ep0 should only have one transfer queued */
++ t = scnprintf(next, size, "ep0 max 16 pio irqs %lu\n",
++ ep->pio_irqs);
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++
++ if (list_empty(&ep->queue)) {
++ t = scnprintf(next, size, "\t(nothing queued)\n");
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++ continue;
++ }
++ list_for_each_entry(req, &ep->queue, queue) {
++#ifdef USE_DMA
++ if (ep->dma >= 0 && req->queue.prev == &ep->queue)
++ t = scnprintf(next, size,
++ "\treq %p len %d/%d "
++ "buf %p (dma%d dcmd %08x)\n",
++ &req->req, req->req.actual,
++ req->req.length, req->req.buf,
++ ep->dma, DCMD(ep->dma)
++ // low 13 bits == bytes-to-go
++ );
++ else
++#endif
++ t = scnprintf(next, size,
++ "\treq %p len %d/%d buf %p\n",
++ &req->req, req->req.actual,
++ req->req.length, req->req.buf);
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++ }
++ }
++
++done:
++ local_irq_restore(flags);
++ *eof = 1;
++ return count - size;
++}
++
++#define create_proc_files() \
++ create_proc_read_entry(proc_node_name, 0, NULL, udc_proc_read, dev)
++#define remove_proc_files() \
++ remove_proc_entry(proc_node_name, NULL)
++
++#else /* !UDC_PROC_FILE */
++#define create_proc_files() do {} while (0)
++#define remove_proc_files() do {} while (0)
++
++#endif /* UDC_PROC_FILE */
++
++/* "function" sysfs attribute */
++static ssize_t
++show_function (struct device *_dev, struct device_attribute *attr, char *buf)
++{
++ struct pxa27x_udc *dev = dev_get_drvdata (_dev);
++
++ if (!dev->driver
++ || !dev->driver->function
++ || strlen (dev->driver->function) > PAGE_SIZE)
++ return 0;
++ return scnprintf (buf, PAGE_SIZE, "%s\n", dev->driver->function);
++}
++static DEVICE_ATTR (function, S_IRUGO, show_function, NULL);
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * udc_disable - disable USB device controller
++ */
++static void udc_disable(struct pxa27x_udc *dev)
++{
++ UDCICR0 = UDCICR1 = 0x00000000;
++
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++
++ /* Disable clock for USB device */
++ pxa_set_cken(CKEN11_USB, 0);
++
++ ep0_idle (dev);
++ dev->gadget.speed = USB_SPEED_UNKNOWN;
++
++ if (dev->mach->gpio_pullup)
++ GPCR(dev->mach->gpio_pullup) = GPIO_bit(dev->mach->gpio_pullup);
++ if (dev->mach->udc_command)
++ dev->mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT);
++
++ make_usb_disappear();
++}
++
++
++/*
++ * udc_reinit - initialize software state
++ */
++static void udc_reinit(struct pxa27x_udc *dev)
++{
++ u32 i;
++
++ dev->ep0state = EP0_IDLE;
++
++ /* basic endpoint records init */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->stopped = 0;
++ ep->pio_irqs = ep->dma_irqs = 0;
++ }
++ dev->configuration = 0;
++ dev->interface = 0;
++ dev->alternate = 0;
++ /* the rest was statically initialized, and is read-only */
++}
++
++/* until it's enabled, this UDC should be completely invisible
++ * to any USB host.
++ */
++static void udc_enable (struct pxa27x_udc *dev)
++{
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++
++ /* Enable clock for USB device */
++ pxa_set_cken(CKEN11_USB, 1);
++
++ UDCICR0 = UDCICR1 = 0;
++
++ ep0_idle(dev);
++ dev->gadget.speed = USB_SPEED_FULL;
++ dev->stats.irqs = 0;
++
++ udc_set_mask_UDCCR(UDCCR_UDE);
++ udelay (2);
++ if (UDCCR & UDCCR_EMCE)
++ {
++ printk(KERN_ERR ": There are error in configuration, udc disabled\n");
++ }
++
++ /* caller must be able to sleep in order to cope
++ * with startup transients.
++ */
++ msleep(100);
++
++ /* enable suspend/resume and reset irqs */
++ UDCICR1 = UDCICR1_IECC | UDCICR1_IERU | UDCICR1_IESU | UDCICR1_IERS;
++
++ /* enable ep0 irqs */
++ UDCICR0 = UDCICR_INT(0,UDCICR_INT_MASK);
++#if 0
++ for(i=1; i < UDC_EP_NUM; i++) {
++ if (dev->ep[i].assigned)
++ pio_irq_enable(i);
++ }
++#endif
++
++ if (dev->mach->gpio_pullup)
++ GPSR(dev->mach->gpio_pullup) = GPIO_bit(dev->mach->gpio_pullup);
++ if (dev->mach->udc_command)
++ dev->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
++
++ /* FIXME */
++ let_usb_appear();
++}
++
++
++/* when a driver is successfully registered, it will receive
++ * control requests including set_configuration(), which enables
++ * non-control requests. then usb traffic follows until a
++ * disconnect is reported. then a host may connect again, or
++ * the driver might get unbound.
++ */
++int usb_gadget_register_driver(struct usb_gadget_driver *driver)
++{
++ struct pxa27x_udc *dev = the_controller;
++ int retval;
++
++ DMSG("dev=0x%x, driver=0x%x, speed=%d, "
++ "bind=0x%x, unbind=0x%x, disconnect=0x%x, setup=0x%x\n",
++ (unsigned)dev, (unsigned)driver, driver->speed,
++ (unsigned)driver->bind, (unsigned)driver->unbind,
++ (unsigned)driver->disconnect, (unsigned)driver->setup);
++
++ if (!driver || driver->speed != USB_SPEED_FULL
++ || !driver->bind
++ || !driver->unbind
++ || !driver->disconnect
++ || !driver->setup)
++ return -EINVAL;
++ if (!dev)
++ return -ENODEV;
++ if (dev->driver)
++ return -EBUSY;
++
++ /* first hook up the driver ... */
++ dev->driver = driver;
++ dev->gadget.dev.driver = &driver->driver;
++
++ device_add(&dev->gadget.dev);
++ retval = driver->bind(&dev->gadget);
++ if (retval) {
++ DMSG("bind to driver %s --> error %d\n",
++ driver->driver.name, retval);
++ device_del (&dev->gadget.dev);
++
++ dev->driver = 0;
++ dev->gadget.dev.driver = 0;
++ return retval;
++ }
++ device_create_file(dev->dev, &dev_attr_function);
++
++ /* ... then enable host detection and ep0; and we're ready
++ * for set_configuration as well as eventual disconnect.
++ * NOTE: this shouldn't power up until later.
++ */
++ DMSG("registered gadget driver '%s'\n", driver->driver.name);
++ udc_enable(dev);
++ dump_state(dev);
++ return 0;
++}
++EXPORT_SYMBOL(usb_gadget_register_driver);
++
++static void
++stop_activity(struct pxa27x_udc *dev, struct usb_gadget_driver *driver)
++{
++ int i;
++
++ DMSG("Trace path 1\n");
++ /* don't disconnect drivers more than once */
++ if (dev->gadget.speed == USB_SPEED_UNKNOWN)
++ driver = 0;
++ dev->gadget.speed = USB_SPEED_UNKNOWN;
++
++ /* prevent new request submissions, kill any outstanding requests */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->stopped = 1;
++ nuke(ep, -ESHUTDOWN);
++ }
++ del_timer_sync(&dev->timer);
++
++ /* report disconnect; the driver is already quiesced */
++ if (driver)
++ driver->disconnect(&dev->gadget);
++
++ /* re-init driver-visible data structures */
++ udc_reinit(dev);
++}
++
++int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
++{
++ struct pxa27x_udc *dev = the_controller;
++
++ if (!dev)
++ return -ENODEV;
++ if (!driver || driver != dev->driver)
++ return -EINVAL;
++
++ local_irq_disable();
++ udc_disable(dev);
++ stop_activity(dev, driver);
++ local_irq_enable();
++
++ driver->unbind(&dev->gadget);
++ dev->driver = 0;
++
++ device_del (&dev->gadget.dev);
++ device_remove_file(dev->dev, &dev_attr_function);
++
++ DMSG("unregistered gadget driver '%s'\n", driver->driver.name);
++ dump_state(dev);
++ return 0;
++}
++EXPORT_SYMBOL(usb_gadget_unregister_driver);
++
++#ifndef enable_disconnect_irq
++#define enable_disconnect_irq() do {} while (0)
++#define disable_disconnect_irq() do {} while (0)
++#endif
++
++
++/*-------------------------------------------------------------------------*/
++
++static inline void clear_ep_state (struct pxa27x_udc *dev)
++{
++ unsigned i;
++
++ /* hardware SET_{CONFIGURATION,INTERFACE} automagic resets endpoint
++ * fifos, and pending transactions mustn't be continued in any case.
++ */
++ for (i = 1; i < UDC_EP_NUM; i++)
++ nuke(&dev->ep[i], -ECONNABORTED);
++}
++
++static void udc_watchdog(unsigned long _dev)
++{
++ struct pxa27x_udc *dev = (void *)_dev;
++
++ local_irq_disable();
++ if (dev->ep0state == EP0_STALL
++ && (UDCCSR0 & UDCCSR0_FST) == 0
++ && (UDCCSR0 & UDCCSR0_SST) == 0) {
++ UDCCSR0 = UDCCSR0_FST|UDCCSR0_FTF;
++ DBG(DBG_VERBOSE, "ep0 re-stall\n");
++ start_watchdog(dev);
++ }
++ local_irq_enable();
++}
++
++static void handle_ep0 (struct pxa27x_udc *dev)
++{
++ u32 udccsr0 = UDCCSR0;
++ struct pxa27x_ep *ep = &dev->ep [0];
++ struct pxa27x_request *req;
++ union {
++ struct usb_ctrlrequest r;
++ u8 raw [8];
++ u32 word [2];
++ } u;
++
++ if (list_empty(&ep->queue))
++ req = 0;
++ else
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++
++ /* clear stall status */
++ if (udccsr0 & UDCCSR0_SST) {
++ nuke(ep, -EPIPE);
++ UDCCSR0 = UDCCSR0_SST;
++ del_timer(&dev->timer);
++ ep0_idle(dev);
++ }
++
++ /* previous request unfinished? non-error iff back-to-back ... */
++ if ((udccsr0 & UDCCSR0_SA) != 0 && dev->ep0state != EP0_IDLE) {
++ nuke(ep, 0);
++ del_timer(&dev->timer);
++ ep0_idle(dev);
++ }
++
++ switch (dev->ep0state) {
++ case EP0_NO_ACTION:
++ printk(KERN_INFO"%s: Busy\n", __FUNCTION__);
++ /*Fall through */
++ case EP0_IDLE:
++ /* late-breaking status? */
++ udccsr0 = UDCCSR0;
++
++ /* start control request? */
++ if (likely((udccsr0 & (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE))
++ == (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE))) {
++ int i;
++
++ nuke (ep, -EPROTO);
++ /* read SETUP packet */
++ for (i = 0; i < 2; i++) {
++ if (unlikely(!(UDCCSR0 & UDCCSR0_RNE))) {
++bad_setup:
++ DMSG("SETUP %d!\n", i);
++ goto stall;
++ }
++ u.word [i] = UDCDR0;
++ }
++ if (unlikely((UDCCSR0 & UDCCSR0_RNE) != 0))
++ goto bad_setup;
++
++ le16_to_cpus (&u.r.wValue);
++ le16_to_cpus (&u.r.wIndex);
++ le16_to_cpus (&u.r.wLength);
++
++ LED_EP0_ON;
++
++ DBG(DBG_VERBOSE, "SETUP %02x.%02x v%04x i%04x l%04x\n",
++ u.r.bRequestType, u.r.bRequest,
++ u.r.wValue, u.r.wIndex, u.r.wLength);
++ /* cope with automagic for some standard requests. */
++ dev->req_std = (u.r.bRequestType & USB_TYPE_MASK)
++ == USB_TYPE_STANDARD;
++ dev->req_config = 0;
++ dev->req_pending = 1;
++#if 0
++ switch (u.r.bRequest) {
++ /* hardware was supposed to hide this */
++ case USB_REQ_SET_CONFIGURATION:
++ case USB_REQ_SET_INTERFACE:
++ case USB_REQ_SET_ADDRESS:
++ printk(KERN_ERR "Should not come here\n");
++ break;
++ }
++
++#endif
++ if (u.r.bRequestType & USB_DIR_IN)
++ dev->ep0state = EP0_IN_DATA_PHASE;
++ else
++ dev->ep0state = EP0_OUT_DATA_PHASE;
++ i = dev->driver->setup(&dev->gadget, &u.r);
++
++ if (i < 0) {
++ /* hardware automagic preventing STALL... */
++ if (dev->req_config) {
++ /* hardware sometimes neglects to tell
++ * tell us about config change events,
++ * so later ones may fail...
++ */
++ WARN("config change %02x fail %d?\n",
++ u.r.bRequest, i);
++ return;
++ /* TODO experiment: if has_cfr,
++ * hardware didn't ACK; maybe we
++ * could actually STALL!
++ */
++ }
++ DBG(DBG_VERBOSE, "protocol STALL, "
++ "%02x err %d\n", UDCCSR0, i);
++stall:
++ /* the watchdog timer helps deal with cases
++ * where udc seems to clear FST wrongly, and
++ * then NAKs instead of STALLing.
++ */
++ ep0start(dev, UDCCSR0_FST|UDCCSR0_FTF, "stall");
++ start_watchdog(dev);
++ dev->ep0state = EP0_STALL;
++ LED_EP0_OFF;
++
++ /* deferred i/o == no response yet */
++ } else if (dev->req_pending) {
++ if (likely(dev->ep0state == EP0_IN_DATA_PHASE
++ || dev->req_std || u.r.wLength))
++ ep0start(dev, 0, "defer");
++ else
++ ep0start(dev, UDCCSR0_IPR, "defer/IPR");
++ }
++
++ /* expect at least one data or status stage irq */
++ return;
++
++ } else {
++ /* some random early IRQ:
++ * - we acked FST
++ * - IPR cleared
++ * - OPC got set, without SA (likely status stage)
++ */
++ UDCCSR0 = udccsr0 & (UDCCSR0_SA|UDCCSR0_OPC);
++ }
++ break;
++ case EP0_IN_DATA_PHASE: /* GET_DESCRIPTOR etc */
++ if (udccsr0 & UDCCSR0_OPC) {
++ UDCCSR0 = UDCCSR0_OPC|UDCCSR0_FTF;
++ DBG(DBG_VERBOSE, "ep0in premature status\n");
++ if (req)
++ done(ep, req, 0);
++ ep0_idle(dev);
++ } else /* irq was IPR clearing */ {
++ if (req) {
++ /* this IN packet might finish the request */
++ (void) write_ep0_fifo(ep, req);
++ } /* else IN token before response was written */
++ }
++ break;
++ case EP0_OUT_DATA_PHASE: /* SET_DESCRIPTOR etc */
++ if (udccsr0 & UDCCSR0_OPC) {
++ if (req) {
++ /* this OUT packet might finish the request */
++ if (read_ep0_fifo(ep, req))
++ done(ep, req, 0);
++ /* else more OUT packets expected */
++ } /* else OUT token before read was issued */
++ } else /* irq was IPR clearing */ {
++ DBG(DBG_VERBOSE, "ep0out premature status\n");
++ if (req)
++ done(ep, req, 0);
++ ep0_idle(dev);
++ }
++ break;
++ case EP0_STALL:
++ UDCCSR0 = UDCCSR0_FST;
++ break;
++ }
++ UDCISR0 = UDCISR_INT(0, UDCISR_INT_MASK);
++}
++
++
++static void handle_ep(struct pxa27x_ep *ep)
++{
++ struct pxa27x_request *req;
++ int completed;
++ u32 udccsr=0;
++
++ DMSG("%s is called\n", __FUNCTION__);
++ do {
++ completed = 0;
++ if (likely (!list_empty(&ep->queue))) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ } else
++ req = 0;
++
++// udccsr = *ep->reg_udccsr;
++ DMSG("%s: req:%p, udcisr0:0x%x udccsr %p:0x%x\n", __FUNCTION__,
++ req, UDCISR0, ep->reg_udccsr, *ep->reg_udccsr);
++ if (unlikely(ep->dir_in)) {
++ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr;
++ if (unlikely (udccsr))
++ *ep->reg_udccsr = udccsr;
++
++ if (req && likely ((*ep->reg_udccsr & UDCCSR_FS) != 0))
++ completed = write_fifo(ep, req);
++
++ } else {
++ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr;
++ if (unlikely(udccsr))
++ *ep->reg_udccsr = udccsr;
++
++ /* fifos can hold packets, ready for reading... */
++ if (likely(req)) {
++ completed = read_fifo(ep, req);
++ } else {
++ pio_irq_disable (ep->ep_num);
++ *ep->reg_udccsr = UDCCSR_FEF;
++ DMSG("%s: no req for out data\n",
++ __FUNCTION__);
++ }
++ }
++ ep->pio_irqs++;
++ } while (completed);
++}
++
++static void pxa27x_change_configuration (struct pxa27x_udc *dev)
++{
++ struct usb_ctrlrequest req ;
++
++ req.bRequestType = 0;
++ req.bRequest = USB_REQ_SET_CONFIGURATION;
++ req.wValue = dev->configuration;
++ req.wIndex = 0;
++ req.wLength = 0;
++
++ dev->ep0state = EP0_NO_ACTION;
++ dev->driver->setup(&dev->gadget, &req);
++
++}
++
++static void pxa27x_change_interface (struct pxa27x_udc *dev)
++{
++ struct usb_ctrlrequest req;
++
++ req.bRequestType = USB_RECIP_INTERFACE;
++ req.bRequest = USB_REQ_SET_INTERFACE;
++ req.wValue = dev->alternate;
++ req.wIndex = dev->interface;
++ req.wLength = 0;
++
++ dev->ep0state = EP0_NO_ACTION;
++ dev->driver->setup(&dev->gadget, &req);
++}
++
++/*
++ * pxa27x_udc_irq - interrupt handler
++ *
++ * avoid delays in ep0 processing. the control handshaking isn't always
++ * under software control (pxa250c0 and the pxa255 are better), and delays
++ * could cause usb protocol errors.
++ */
++static irqreturn_t pxa27x_udc_irq(int irq, void *_dev)
++{
++ struct pxa27x_udc *dev = _dev;
++ int handled;
++
++ dev->stats.irqs++;
++ HEX_DISPLAY(dev->stats.irqs);
++
++ DBG(DBG_VERBOSE, "Interrupt, UDCISR0:0x%08x, UDCISR1:0x%08x, "
++ "UDCCR:0x%08x\n", UDCISR0, UDCISR1, UDCCR);
++
++ do {
++ u32 udcir = UDCISR1 & 0xF8000000;
++
++ handled = 0;
++
++ /* SUSpend Interrupt Request */
++ if (unlikely(udcir & UDCISR1_IRSU)) {
++ UDCISR1 = UDCISR1_IRSU;
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB suspend\n");
++ if (dev->gadget.speed != USB_SPEED_UNKNOWN
++ && dev->driver
++ && dev->driver->suspend)
++ dev->driver->suspend(&dev->gadget);
++ ep0_idle (dev);
++ }
++
++ /* RESume Interrupt Request */
++ if (unlikely(udcir & UDCISR1_IRRU)) {
++ UDCISR1 = UDCISR1_IRRU;
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB resume\n");
++
++ if (dev->gadget.speed != USB_SPEED_UNKNOWN
++ && dev->driver
++ && dev->driver->resume)
++ dev->driver->resume(&dev->gadget);
++ }
++
++ if (unlikely(udcir & UDCISR1_IRCC)) {
++ unsigned config, interface, alternate;
++
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB SET_CONFIGURATION or "
++ "SET_INTERFACE command received\n");
++
++ UDCCR |= UDCCR_SMAC;
++
++ config = (UDCCR & UDCCR_ACN) >> UDCCR_ACN_S;
++
++ if (dev->configuration != config) {
++ dev->configuration = config;
++ pxa27x_change_configuration(dev) ;
++ }
++
++ interface = (UDCCR & UDCCR_AIN) >> UDCCR_AIN_S;
++ alternate = (UDCCR & UDCCR_AAISN) >> UDCCR_AAISN_S;
++
++ if ( (dev->configuration != interface) || \
++ (dev->alternate != alternate)){
++ dev->interface = config;
++ dev->alternate = alternate;
++ pxa27x_change_interface(dev);
++ }
++
++ UDCISR1 = UDCISR1_IRCC;
++ DMSG("%s: con:%d,inter:%d,alt:%d\n",
++ __FUNCTION__, config,interface, alternate);
++ }
++
++ /* ReSeT Interrupt Request - USB reset */
++ if (unlikely(udcir & UDCISR1_IRRS)) {
++ UDCISR1 = UDCISR1_IRRS;
++ handled = 1;
++
++ if ((UDCCR & UDCCR_UDA) == 0) {
++ DBG(DBG_VERBOSE, "SB reset start\n");
++
++ /* reset driver and endpoints,
++ * in case that's not yet done
++ */
++ stop_activity (dev, dev->driver);
++
++ }
++ INFO("USB reset\n");
++ dev->gadget.speed = USB_SPEED_FULL;
++ memset(&dev->stats, 0, sizeof dev->stats);
++
++ } else {
++ u32 udcisr0 = UDCISR0 ;
++ u32 udcisr1 = UDCISR1 & 0xFFFF;
++ int i;
++
++ if (unlikely (!udcisr0 && !udcisr1))
++ continue;
++
++ DBG(DBG_VERY_NOISY, "irq %02x.%02x\n", udcisr1,udcisr0);
++
++ /* control traffic */
++ if (udcisr0 & UDCISR0_IR0) {
++ dev->ep[0].pio_irqs++;
++ handle_ep0(dev);
++ handled = 1;
++ }
++
++ udcisr0 >>= 2;
++ /* endpoint data transfers */
++ for (i = 1; udcisr0!=0 && i < 16; udcisr0>>=2,i++) {
++ UDCISR0 = UDCISR_INT(i, UDCISR_INT_MASK);
++
++ if (udcisr0 & UDC_INT_FIFOERROR)
++ printk(KERN_ERR" Endpoint %d Fifo error\n", i);
++ if (udcisr0 & UDC_INT_PACKETCMP) {
++ handle_ep(&dev->ep[i]);
++ handled = 1;
++ }
++
++ }
++
++ for (i = 0; udcisr1!=0 && i < 8; udcisr1 >>= 2, i++) {
++ UDCISR1 = UDCISR_INT(i, UDCISR_INT_MASK);
++
++ if (udcisr1 & UDC_INT_FIFOERROR) {
++ printk(KERN_ERR" Endpoint %d fifo error\n", (i+16));
++ }
++
++ if (udcisr1 & UDC_INT_PACKETCMP) {
++ handle_ep(&dev->ep[i+16]);
++ handled = 1;
++ }
++ }
++ }
++
++ /* we could also ask for 1 msec SOF (SIR) interrupts */
++
++ } while (handled);
++ return IRQ_HANDLED;
++}
++
++static void udc_init_ep(struct pxa27x_udc *dev)
++{
++ int i;
++
++ INIT_LIST_HEAD (&dev->gadget.ep_list);
++ INIT_LIST_HEAD (&dev->gadget.ep0->ep_list);
++
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->dma = -1;
++ if (i != 0) {
++ memset(ep, 0, sizeof(*ep));
++ }
++ INIT_LIST_HEAD (&ep->queue);
++ }
++}
++
++/*-------------------------------------------------------------------------*/
++
++static void nop_release (struct device *dev)
++{
++ DMSG("%s %s\n", __FUNCTION__, dev->bus_id);
++}
++
++/* this uses load-time allocation and initialization (instead of
++ * doing it at run-time) to save code, eliminate fault paths, and
++ * be more obviously correct.
++ */
++static struct pxa27x_udc memory = {
++ .gadget = {
++ .ops = &pxa27x_udc_ops,
++ .ep0 = &memory.ep[0].ep,
++ .name = driver_name,
++ .dev = {
++ .bus_id = "gadget",
++ .release = nop_release,
++ },
++ },
++
++ /* control endpoint */
++ .ep[0] = {
++ .ep = {
++ .name = ep0name,
++ .ops = &pxa27x_ep_ops,
++ .maxpacket = EP0_FIFO_SIZE,
++ },
++ .dev = &memory,
++ .reg_udccsr = &UDCCSR0,
++ .reg_udcdr = &UDCDR0,
++ }
++};
++
++#define CP15R0_VENDOR_MASK 0xffffe000
++
++#define CP15R0_XSCALE_VALUE 0x69054000 /* intel/arm/xscale */
++
++/*
++ * probe - binds to the platform device
++ */
++static int pxa27x_udc_probe(struct platform_device *pdev)
++{
++ struct device *dev = &pdev->dev;
++ struct pxa27x_udc *udc = &memory;
++ int retval;
++ u32 chiprev;
++
++ /* insist on Intel/ARM/XScale */
++ asm("mrc%? p15, 0, %0, c0, c0" : "=r" (chiprev));
++ if ((chiprev & CP15R0_VENDOR_MASK) != CP15R0_XSCALE_VALUE) {
++ printk(KERN_ERR "%s: not XScale!\n", driver_name);
++ return -ENODEV;
++ }
++ /* other non-static parts of init */
++ udc->dev = dev;
++ udc->mach = dev->platform_data;
++
++ /* FIXME */
++ if (udc->mach->gpio_pullup)
++ pxa_gpio_mode((udc->mach->gpio_pullup & GPIO_MD_MASK_NR) | \
++ GPIO_OUT | GPIO_DFLT_HIGH);
++
++ init_timer(&udc->timer);
++ udc->timer.function = udc_watchdog;
++ udc->timer.data = (unsigned long) udc;
++
++ device_initialize(&udc->gadget.dev);
++ udc->gadget.dev.parent = dev;
++ udc->gadget.dev.dma_mask = dev->dma_mask;
++
++ the_controller = udc;
++ dev_set_drvdata(dev, udc);
++
++ udc_disable(udc);
++ udc_init_ep(udc);
++ udc_reinit(udc);
++
++ /* irq setup after old hardware state is cleaned up */
++ retval = request_irq(IRQ_USB, pxa27x_udc_irq,
++ SA_INTERRUPT, driver_name, udc);
++ if (retval != 0) {
++ printk(KERN_ERR "%s: can't get irq %i, err %d\n",
++ driver_name, IRQ_USB, retval);
++ return -EBUSY;
++ }
++ udc->got_irq = 1;
++
++ create_proc_files();
++
++ return 0;
++}
++
++static int pxa27x_udc_remove(struct platform_device *pdev)
++{
++ struct device *dev = &pdev->dev;
++ struct pxa27x_udc *udc = dev->driver_data;
++
++ udc_disable(udc);
++ remove_proc_files();
++ usb_gadget_unregister_driver(udc->driver);
++
++ if (udc->got_irq) {
++ free_irq(IRQ_USB, udc);
++ udc->got_irq = 0;
++ }
++ if (machine_is_lubbock() && udc->got_disc) {
++ free_irq(LUBBOCK_USB_DISC_IRQ, udc);
++ udc->got_disc = 0;
++ }
++ dev_set_drvdata(dev, 0);
++ the_controller = 0;
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static int pxa27x_udc_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct device *dev = &pdev->dev;
++ struct pxa27x_udc *udc = dev->driver_data;
++ int i;
++
++ DMSG("%s will go into SUSPEND_POWER_DOWN\n", __FUNCTION__);
++ udc->udccsr0 = UDCCSR0;
++ for(i=1; (i<UDC_EP_NUM); i++) {
++ if (udc->ep[i].assigned) {
++ struct pxa27x_ep *ep = &udc->ep[i];
++
++ ep->udccsr_value = *ep->reg_udccsr;
++ ep->udccr_value = *ep->reg_udccr;
++ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n",
++ i, *ep->reg_udccsr, *ep->reg_udccr);
++ }
++ }
++
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++ pxa_set_cken(CKEN11_USB, 0);
++
++ return 0;
++}
++
++static int pxa27x_udc_resume(struct platform_device *pdev)
++{
++ struct device *dev = &pdev->dev;
++ struct pxa27x_udc *udc = dev->driver_data;
++ int i;
++
++ DMSG("%s: udc resume\n", __FUNCTION__);
++
++ UDCCSR0 = udc->udccsr0 & (UDCCSR0_FST | UDCCSR0_DME);
++ for (i=1; i < UDC_EP_NUM; i++) {
++ if (udc->ep[i].assigned) {
++ struct pxa27x_ep *ep = &udc->ep[i];
++
++ *ep->reg_udccsr = ep->udccsr_value;
++ *ep->reg_udccr = ep->udccr_value;
++ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n",
++ i, *ep->reg_udccsr, *ep->reg_udccr);
++ }
++ }
++ udc_enable(udc);
++ /* OTGPH bit is set when sleep mode is entered.
++ * it indicates that OTG pad is retaining its state.
++ * Upon exit from sleep mode and before clearing OTGPH,
++ * Software must configure the USB OTG pad, UDC, and UHC
++ * to the state they were in before entering sleep mode.*/
++ PSSR |= PSSR_OTGPH;
++
++ return 0;
++}
++#else
++#define pxa27x_udc_suspend NULL
++#define pxa27x_udc_resume NULL
++#endif
++
++/*-------------------------------------------------------------------------*/
++
++static struct platform_driver pxa27x_udc_driver = {
++ .probe = pxa27x_udc_probe,
++ .remove = pxa27x_udc_remove,
++ .suspend = pxa27x_udc_suspend,
++ .resume = pxa27x_udc_resume,
++ .driver = {
++ .name = "pxa2xx-udc",
++ },
++};
++
++static int __init udc_init(void)
++{
++ printk(KERN_INFO "%s: version %s\n", driver_name, DRIVER_VERSION);
++ return platform_driver_register(&pxa27x_udc_driver);
++}
++module_init(udc_init);
++
++static void __exit udc_exit(void)
++{
++ platform_driver_unregister(&pxa27x_udc_driver);
++}
++module_exit(udc_exit);
++
++MODULE_DESCRIPTION(DRIVER_DESC);
++MODULE_AUTHOR("Frank Becker, Robert Schwebel, David Brownell");
++MODULE_LICENSE("GPL");
+diff --git a/drivers/usb/gadget/pxa27x_udc.h b/drivers/usb/gadget/pxa27x_udc.h
+new file mode 100644
+index 0000000..c4b72a2
+--- /dev/null
++++ b/drivers/usb/gadget/pxa27x_udc.h
+@@ -0,0 +1,329 @@
++/*
++ * linux/drivers/usb/gadget/pxa27x_udc.h
++ * Intel PXA27x on-chip full speed USB device controller
++ *
++ * Copyright (C) 2003 Robert Schwebel <r.schwebel@pengutronix.de>, Pengutronix
++ * Copyright (C) 2003 David Brownell
++ * Copyright (C) 2004 Intel Corporation
++ *
++ * 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 __LINUX_USB_GADGET_PXA27X_H
++#define __LINUX_USB_GADGET_PXA27X_H
++
++#include <linux/types.h>
++
++struct pxa27x_udc;
++
++struct pxa27x_ep {
++ struct usb_ep ep;
++ struct pxa27x_udc *dev;
++
++ const struct usb_endpoint_descriptor *desc;
++ struct list_head queue;
++ unsigned long pio_irqs;
++ unsigned long dma_irqs;
++
++ int dma;
++ unsigned fifo_size;
++ unsigned ep_num;
++ unsigned ep_type;
++
++ unsigned stopped : 1;
++ unsigned dma_con : 1;
++ unsigned dir_in : 1;
++ unsigned assigned : 1;
++
++ unsigned config;
++ unsigned interface;
++ unsigned aisn;
++ /* UDCCSR = UDC Control/Status Register for this EP
++ * UBCR = UDC Byte Count Remaining (contents of OUT fifo)
++ * UDCDR = UDC Endpoint Data Register (the fifo)
++ * UDCCR = UDC Endpoint Configuration Registers
++ * DRCM = DMA Request Channel Map
++ */
++ volatile u32 *reg_udccsr;
++ volatile u32 *reg_udcbcr;
++ volatile u32 *reg_udcdr;
++ volatile u32 *reg_udccr;
++#ifdef USE_DMA
++ volatile u32 *reg_drcmr;
++#define drcmr(n) .reg_drcmr = & DRCMR ## n ,
++#else
++#define drcmr(n)
++#endif
++
++#ifdef CONFIG_PM
++ unsigned udccsr_value;
++ unsigned udccr_value;
++#endif
++};
++
++struct pxa27x_request {
++ struct usb_request req;
++ struct list_head queue;
++};
++
++enum ep0_state {
++ EP0_IDLE,
++ EP0_IN_DATA_PHASE,
++ EP0_OUT_DATA_PHASE,
++// EP0_END_XFER,
++ EP0_STALL,
++ EP0_NO_ACTION
++};
++
++#define EP0_FIFO_SIZE ((unsigned)16)
++#define BULK_FIFO_SIZE ((unsigned)64)
++#define ISO_FIFO_SIZE ((unsigned)256)
++#define INT_FIFO_SIZE ((unsigned)8)
++
++struct udc_stats {
++ struct ep0stats {
++ unsigned long ops;
++ unsigned long bytes;
++ } read, write;
++ unsigned long irqs;
++};
++
++#ifdef CONFIG_USB_PXA27X_SMALL
++/* when memory's tight, SMALL config saves code+data. */
++//#undef USE_DMA
++//#define UDC_EP_NUM 3
++#endif
++
++#ifndef UDC_EP_NUM
++#define UDC_EP_NUM 24
++#endif
++
++struct pxa27x_udc {
++ struct usb_gadget gadget;
++ struct usb_gadget_driver *driver;
++
++ enum ep0_state ep0state;
++ struct udc_stats stats;
++ unsigned got_irq : 1,
++ got_disc : 1,
++ has_cfr : 1,
++ req_pending : 1,
++ req_std : 1,
++ req_config : 1;
++
++#define start_watchdog(dev) mod_timer(&dev->timer, jiffies + (HZ/200))
++ struct timer_list timer;
++
++ struct device *dev;
++ struct pxa2xx_udc_mach_info *mach;
++ u64 dma_mask;
++ struct pxa27x_ep ep [UDC_EP_NUM];
++
++ unsigned configuration,
++ interface,
++ alternate;
++#ifdef CONFIG_PM
++ unsigned udccsr0;
++#endif
++};
++
++/*-------------------------------------------------------------------------*/
++#if 0
++#ifdef DEBUG
++#define HEX_DISPLAY(n) do { \
++ if (machine_is_mainstone())\
++ { MST_LEDDAT1 = (n); } \
++ } while(0)
++
++#define HEX_DISPLAY1(n) HEX_DISPLAY(n)
++
++#define HEX_DISPLAY2(n) do { \
++ if (machine_is_mainstone()) \
++ { MST_LEDDAT2 = (n); } \
++ } while(0)
++
++#endif /* DEBUG */
++#endif
++/*-------------------------------------------------------------------------*/
++
++/* LEDs are only for debug */
++#ifndef HEX_DISPLAY
++#define HEX_DISPLAY(n) do {} while(0)
++#endif
++
++#ifndef LED_CONNECTED_ON
++#define LED_CONNECTED_ON do {} while(0)
++#define LED_CONNECTED_OFF do {} while(0)
++#endif
++#ifndef LED_EP0_ON
++#define LED_EP0_ON do {} while (0)
++#define LED_EP0_OFF do {} while (0)
++#endif
++
++static struct pxa27x_udc *the_controller;
++
++/*-------------------------------------------------------------------------*/
++
++/* one GPIO should be used to detect host disconnect */
++static inline int is_usb_connected(void)
++{
++ if (!the_controller->mach->udc_is_connected)
++ return 1;
++ return the_controller->mach->udc_is_connected();
++}
++
++/* one GPIO should force the host to see this device (or not) */
++static inline void make_usb_disappear(void)
++{
++ if (!the_controller->mach->udc_command)
++ return;
++ the_controller->mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT);
++}
++
++static inline void let_usb_appear(void)
++{
++ if (!the_controller->mach->udc_command)
++ return;
++ the_controller->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
++}
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * Debugging support vanishes in non-debug builds. DBG_NORMAL should be
++ * mostly silent during normal use/testing, with no timing side-effects.
++ */
++#define DBG_NORMAL 1 /* error paths, device state transitions */
++#define DBG_VERBOSE 2 /* add some success path trace info */
++#define DBG_NOISY 3 /* ... even more: request level */
++#define DBG_VERY_NOISY 4 /* ... even more: packet level */
++
++#ifdef DEBUG
++
++static const char *state_name[] = {
++ "EP0_IDLE",
++ "EP0_IN_DATA_PHASE", "EP0_OUT_DATA_PHASE",
++ "EP0_END_XFER", "EP0_STALL"
++};
++
++#define DMSG(stuff...) printk(KERN_ERR "udc: " stuff)
++
++#ifdef VERBOSE
++# define UDC_DEBUG DBG_VERBOSE
++#else
++# define UDC_DEBUG DBG_NORMAL
++#endif
++
++static void __attribute__ ((__unused__))
++dump_udccr(const char *label)
++{
++ u32 udccr = UDCCR;
++ DMSG("%s 0x%08x =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n",
++ label, udccr,
++ (udccr & UDCCR_OEN) ? " oen":"",
++ (udccr & UDCCR_AALTHNP) ? " aalthnp":"",
++ (udccr & UDCCR_AHNP) ? " rem" : "",
++ (udccr & UDCCR_BHNP) ? " rstir" : "",
++ (udccr & UDCCR_DWRE) ? " dwre" : "",
++ (udccr & UDCCR_SMAC) ? " smac" : "",
++ (udccr & UDCCR_EMCE) ? " emce" : "",
++ (udccr & UDCCR_UDR) ? " udr" : "",
++ (udccr & UDCCR_UDA) ? " uda" : "",
++ (udccr & UDCCR_UDE) ? " ude" : "",
++ (udccr & UDCCR_ACN) >> UDCCR_ACN_S,
++ (udccr & UDCCR_AIN) >> UDCCR_AIN_S,
++ (udccr & UDCCR_AAISN)>> UDCCR_AAISN_S );
++}
++
++static void __attribute__ ((__unused__))
++dump_udccsr0(const char *label)
++{
++ u32 udccsr0 = UDCCSR0;
++
++ DMSG("%s %s 0x%08x =%s%s%s%s%s%s%s\n",
++ label, state_name[the_controller->ep0state], udccsr0,
++ (udccsr0 & UDCCSR0_SA) ? " sa" : "",
++ (udccsr0 & UDCCSR0_RNE) ? " rne" : "",
++ (udccsr0 & UDCCSR0_FST) ? " fst" : "",
++ (udccsr0 & UDCCSR0_SST) ? " sst" : "",
++ (udccsr0 & UDCCSR0_DME) ? " dme" : "",
++ (udccsr0 & UDCCSR0_IPR) ? " ipr" : "",
++ (udccsr0 & UDCCSR0_OPC) ? " opr" : "");
++}
++
++static void __attribute__ ((__unused__))
++dump_state(struct pxa27x_udc *dev)
++{
++ unsigned i;
++
++ DMSG("%s, udcicr %02X.%02X, udcsir %02X.%02x, udcfnr %02X\n",
++ state_name[dev->ep0state],
++ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR);
++ dump_udccr("udccr");
++
++ if (!dev->driver) {
++ DMSG("no gadget driver bound\n");
++ return;
++ } else
++ DMSG("ep0 driver '%s'\n", dev->driver->driver.name);
++
++
++ dump_udccsr0 ("udccsr0");
++ DMSG("ep0 IN %lu/%lu, OUT %lu/%lu\n",
++ dev->stats.write.bytes, dev->stats.write.ops,
++ dev->stats.read.bytes, dev->stats.read.ops);
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if (dev->ep [i].desc == 0)
++ continue;
++ DMSG ("udccs%d = %02x\n", i, *dev->ep->reg_udccsr);
++ }
++}
++
++#if 0
++static void dump_regs(u8 ep)
++{
++ DMSG("EP:%d UDCCSR:0x%08x UDCBCR:0x%08x\n UDCCR:0x%08x\n",
++ ep,UDCCSN(ep), UDCBCN(ep), UDCCN(ep));
++}
++static void dump_req (struct pxa27x_request *req)
++{
++ struct usb_request *r = &req->req;
++
++ DMSG("%s: buf:0x%08x length:%d dma:0x%08x actual:%d\n",
++ __FUNCTION__, (unsigned)r->buf, r->length,
++ r->dma, r->actual);
++}
++#endif
++
++#else
++
++#define DMSG(stuff...) do{}while(0)
++
++#define dump_udccr(x) do{}while(0)
++#define dump_udccsr0(x) do{}while(0)
++#define dump_state(x) do{}while(0)
++
++#define UDC_DEBUG ((unsigned)0)
++
++#endif
++
++#define DBG(lvl, stuff...) do{if ((lvl) <= UDC_DEBUG) DMSG(stuff);}while(0)
++
++#define WARN(stuff...) printk(KERN_WARNING "udc: " stuff)
++#define INFO(stuff...) printk(KERN_INFO "udc: " stuff)
++
++
++#endif /* __LINUX_USB_GADGET_PXA27X_H */
+diff --git a/drivers/usb/gadget/serial.c b/drivers/usb/gadget/serial.c
+index e552668..971e491 100644
+--- a/drivers/usb/gadget/serial.c
++++ b/drivers/usb/gadget/serial.c
+@@ -1378,20 +1378,20 @@ static int __init gs_bind(struct usb_gadget *gadget)
+
+ usb_ep_autoconfig_reset(gadget);
+
+- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc);
++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc, 0, 0, 0);
+ if (!ep)
+ goto autoconf_fail;
+ EP_IN_NAME = ep->name;
+ ep->driver_data = ep; /* claim the endpoint */
+
+- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc);
++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc, 0, 0, 0);
+ if (!ep)
+ goto autoconf_fail;
+ EP_OUT_NAME = ep->name;
+ ep->driver_data = ep; /* claim the endpoint */
+
+ if (use_acm) {
+- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc);
++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc, 0, 0, 0);
+ if (!ep) {
+ printk(KERN_ERR "gs_bind: cannot run ACM on %s\n", gadget->name);
+ goto autoconf_fail;
+diff --git a/drivers/usb/gadget/zero.c b/drivers/usb/gadget/zero.c
+index 8c85e33..46ffe6c 100644
+--- a/drivers/usb/gadget/zero.c
++++ b/drivers/usb/gadget/zero.c
+@@ -1155,7 +1155,7 @@ zero_bind (struct usb_gadget *gadget)
+ * but there may also be important quirks to address.
+ */
+ usb_ep_autoconfig_reset (gadget);
+- ep = usb_ep_autoconfig (gadget, &fs_source_desc);
++ ep = usb_ep_autoconfig (gadget, &fs_source_desc, 0, 0, 0);
+ if (!ep) {
+ autoconf_fail:
+ printk (KERN_ERR "%s: can't autoconfigure on %s\n",
+@@ -1165,7 +1165,7 @@ autoconf_fail:
+ EP_IN_NAME = ep->name;
+ ep->driver_data = ep; /* claim */
+
+- ep = usb_ep_autoconfig (gadget, &fs_sink_desc);
++ ep = usb_ep_autoconfig (gadget, &fs_sink_desc, 0, 0, 0);
+ if (!ep)
+ goto autoconf_fail;
+ EP_OUT_NAME = ep->name;
+diff --git a/include/linux/usb_gadget.h b/include/linux/usb_gadget.h
+index e17186d..64c81fd 100644
+--- a/include/linux/usb_gadget.h
++++ b/include/linux/usb_gadget.h
+@@ -445,10 +445,28 @@ usb_ep_fifo_flush (struct usb_ep *ep)
+
+ struct usb_gadget;
+
++/**
++ * struct usb_endpoint_config - possible configurations of a given endpoint
++ * @config: the configuration number
++ * @interface: the interface number
++ * @altinterface: the altinterface number
++ *
++ * Used as an array to pass information about the possible configurations
++ * of a given endpoint to the bus controller.
++ */
++struct usb_endpoint_config {
++ int config;
++ int interface;
++ int altinterface;
++};
++
+ /* the rest of the api to the controller hardware: device operations,
+ * which don't involve endpoints (or i/o).
+ */
+ struct usb_gadget_ops {
++ struct usb_ep* (*ep_alloc)(struct usb_gadget *gadget,
++ struct usb_endpoint_descriptor *desc,
++ int config, int interface, int alt);
+ int (*get_frame)(struct usb_gadget *);
+ int (*wakeup)(struct usb_gadget *);
+ int (*set_selfpowered) (struct usb_gadget *, int is_selfpowered);
+@@ -872,7 +890,8 @@ int usb_gadget_config_buf(const struct usb_config_descriptor *config,
+ /* utility wrapping a simple endpoint selection policy */
+
+ extern struct usb_ep *usb_ep_autoconfig (struct usb_gadget *,
+- struct usb_endpoint_descriptor *) __devinit;
++ struct usb_endpoint_descriptor *,
++ int, int, int) __devinit;
+
+ extern void usb_ep_autoconfig_reset (struct usb_gadget *) __devinit;
+
diff --git a/packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch b/packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch
new file mode 100644
index 0000000000..9f4ce980ad
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch
@@ -0,0 +1,21 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/pcap_ts.c 2007-04-30 21:55:41.000000000 +0200
++++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-04-30 21:55:41.000000000 +0200
+@@ -128,10 +128,7 @@
+ if (ret < 0)
+ return ret;
+
+- if (tmp & 0x00400000)
+- return -EIO;
+-
+- if (pcap_ts->read_state == COORDINATE) {
++ if (pcap_ts->read_state == COORDINATE && !(tmp & 0x00400000)) {
+ pcap_ts->x = (tmp & SSP_PCAP_ADD1_VALUE_MASK);
+ pcap_ts->y = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
+ >>SSP_PCAP_ADD2_VALUE_SHIFT;
diff --git a/packages/linux/linux-ezx-2.6.21/wyrm-ts.diff b/packages/linux/linux-ezx-2.6.21/wyrm-ts.diff
new file mode 100644
index 0000000000..6e424c626c
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/wyrm-ts.diff
@@ -0,0 +1,124 @@
+Ignores read interrupts after penUP events until a penDOWN interrupt arrives.
+Some other changes i dont remember exactly. :)
+Signed-off-by: Daniel Ribeiro <drwyrm@gmail.com>
+Index: linux-2.6.16/drivers/input/touchscreen/pcap_ts.c
+===================================================================
+--- linux-2.6.16.orig/drivers/input/touchscreen/pcap_ts.c 2007-03-09 21:26:25.000000000 -0300
++++ linux-2.6.16/drivers/input/touchscreen/pcap_ts.c 2007-03-09 21:26:42.000000000 -0300
+@@ -31,7 +31,7 @@
+
+ #include "../../misc/ezx/ssp_pcap.h"
+
+-#if 1
++#if 0
+ #define DEBUGP(x, args ...) printk(KERN_DEBUG "%s: " x, __FUNCTION__, ## args)
+ #else
+ #define DEBUGP(x, args ...)
+@@ -39,6 +39,7 @@
+
+ #define PRESSURE 1
+ #define COORDINATE 2
++#define STANDBY 3
+
+ struct pcap_ts {
+ int irq_xy;
+@@ -97,7 +98,7 @@
+ int ret;
+ u_int32_t tmp;
+ DEBUGP("start xy read in mode %s\n",
+- pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
++ pcap_ts->read_state == COORDINATE ? "COORD" : (pcap_ts->read_state == PRESSURE ? "PRESS" : "STANDBY"));
+
+ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
+ if (ret < 0)
+@@ -122,7 +123,7 @@
+ u_int32_t tmp;
+
+ DEBUGP("get xy value in mode %s\n",
+- pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
++ pcap_ts->read_state == COORDINATE ? "COORD" : (pcap_ts->read_state == PRESSURE ? "PRESS" : "STANDBY"));
+
+ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC2_REGISTER, &tmp);
+ if (ret < 0)
+@@ -145,7 +146,16 @@
+ static irqreturn_t pcap_ts_irq_xy(int irq, void *dev_id, struct pt_regs *regs)
+ {
+ struct pcap_ts *pcap_ts = dev_id;
++// DEBUGP("read_state: %d\n", pcap_ts->read_state);
+
++ /*
++ * Ignore further read interrupts after we set STANDBY - WM
++ */
++ if (pcap_ts->read_state == STANDBY)
++ {
++ DEBUGP("ignored\n");
++ return IRQ_HANDLED;
++ }
+ if (pcap_ts_get_xy_value(pcap_ts) < 0) {
+ printk("pcap_ts: error reading XY value\n");
+ return IRQ_HANDLED;
+@@ -160,33 +170,32 @@
+ pcap_ts->pressure <= PRESSURE_MIN ) &&
+ pcap_ts->pressure == pcap_ts->pressure_last) {
+ /* pen has been released */
++ DEBUGP("UP\n");
+ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
+- input_sync(pcap_ts->input);
+-
+ input_report_abs(pcap_ts->input, ABS_PRESSURE, 0);
++ input_sync(pcap_ts->input);
+
+ pcap_ts->x = pcap_ts->y = 0;
+
++ /* no need for timer, we'll get interrupted with
++ * next touch down event */
++ del_timer(&pcap_ts->timer);
++
+ /* ask PCAP2 to interrupt us if touch event happens
+ * again */
+- pcap_ts->read_state = PRESSURE;
++ pcap_ts->read_state = STANDBY;
+ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
+-
+- /* no need for timer, we'll get interrupted with
+- * next touch down event */
+- del_timer(&pcap_ts->timer);
+ } else {
+ /* pen has been touched down */
++ DEBUGP("DOWN\n");
++
+ input_report_key(pcap_ts->input, BTN_TOUCH, 1);
+ /* don't input_sync(), we don't know position yet */
+
+ if (pcap_ts->pressure == 0)
+ pcap_ts->pressure = pcap_ts->pressure_last;
+
+- input_report_abs(pcap_ts->input, ABS_PRESSURE,
+- pcap_ts->pressure);
+-
+ /* switch state machine into coordinate read mode */
+ pcap_ts->read_state = COORDINATE;
+ pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
+@@ -196,18 +205,14 @@
+ /* we are in coordinate mode */
+ if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
+ pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
+- DEBUGP("invalid x/y coordinate position: PEN_UP?\n");
+-
++ DEBUGP("PEN_UP?\n");
+ pcap_ts->pressure = 0;
+-#if 0
+- input_report_key(pcap_ts->input, BTN_TOUCH, 0);
+- pcap_ts->x = pcap_ts->y = 0;
+-#endif
+ } else {
++ input_report_abs(pcap_ts->input, ABS_PRESSURE, pcap_ts->pressure);
+ input_report_abs(pcap_ts->input, ABS_X, pcap_ts->x);
+ input_report_abs(pcap_ts->input, ABS_Y, pcap_ts->y);
++ input_sync(pcap_ts->input);
+ }
+- input_sync(pcap_ts->input);
+
+ /* switch back to pressure read mode */
+ pcap_ts->read_state = PRESSURE;
diff --git a/packages/linux/linux-ezx/defconfig-a780 b/packages/linux/linux-ezx/defconfig-a780
index beb7a64cc1..313540dc4c 100644
--- a/packages/linux/linux-ezx/defconfig-a780
+++ b/packages/linux/linux-ezx/defconfig-a780
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.16.13
-# Thu May 18 19:40:25 2006
+# Sun Jan 21 10:52:04 2007
#
CONFIG_ARM=y
CONFIG_MMU=y
@@ -14,13 +14,12 @@ CONFIG_ARCH_MTD_XIP=y
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
#
# General setup
#
-CONFIG_LOCALVERSION="-ezx6"
+# CONFIG_LOCALVERSION is not set
# CONFIG_LOCALVERSION_AUTO is not set
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
@@ -124,6 +123,8 @@ CONFIG_IWMMXT=y
CONFIG_PXA_SPI=y
CONFIG_PXA_EZX_PCAP=y
CONFIG_PXA_EZX_PCAP_EMU=m
+CONFIG_PXA_EZX_PCAP_EMU_USB=y
+# CONFIG_PXA_EZX_PCAP_EMU_UART is not set
#
# Processor Type
@@ -155,7 +156,8 @@ CONFIG_XSCALE_PMU=y
#
# CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set
-# 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
@@ -172,7 +174,7 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="mem=32M root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=1 ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off console=ttyS2,115200n8 console=tty0"
+CONFIG_CMDLINE="console=ttyS2,115200n8 console=tty1 noinitrd root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5 ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off debug mem=32M@0xA0000000 mem=16M@0xAC000000"
# CONFIG_XIP_KERNEL is not set
#
@@ -192,7 +194,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
@@ -737,7 +738,6 @@ CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
-# CONFIG_LEGACY_PTY_COUNT is not set
#
# IPMI
@@ -765,6 +765,8 @@ CONFIG_SA1100_RTC=y
#
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
+CONFIG_TS0710_MUX=y
+CONFIG_TS0710_MUX_USB=y
#
# I2C support
@@ -841,9 +843,10 @@ CONFIG_SPI_BITBANG=m
#
# Motorola EZX devices
#
-# CONFIG_KEYPAD_A780 is not set
+CONFIG_KEYPAD_A780=y
# CONFIG_KEYPAD_E680 is not set
-# CONFIG_KEYLIGHT_A780 is not set
+CONFIG_KEYLIGHT_A780=y
+CONFIG_VIBRATOR_A780=y
# CONFIG_FMRADIO_E680 is not set
#
@@ -856,7 +859,6 @@ CONFIG_SPI_BITBANG=m
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_TRIGGERS=y
-# CONFIG_LEDS_E680 is not set
CONFIG_LEDS_A780=y
CONFIG_LEDS_TRIGGER_TIMER=y
@@ -914,9 +916,10 @@ CONFIG_LOGO_LINUX_CLUT224=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_BACKLIGHT_EZX=y
CONFIG_LCD_CLASS_DEVICE=m
CONFIG_LCD_DEVICE=y
+# CONFIG_BACKLIGHT_HP680 is not set
+CONFIG_BACKLIGHT_EZX=y
#
# Sound
@@ -928,7 +931,7 @@ CONFIG_LCD_DEVICE=y
#
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB=m
+CONFIG_USB=y
# CONFIG_USB_DEBUG is not set
#
@@ -944,7 +947,7 @@ CONFIG_USB=m
# USB Host Controller Drivers
#
# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
+CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# CONFIG_USB_SL811_HCD is not set
diff --git a/packages/linux/linux-ezx/defconfig-rokr-e2 b/packages/linux/linux-ezx/defconfig-rokr-e2
new file mode 100644
index 0000000000..6345a77a34
--- /dev/null
+++ b/packages/linux/linux-ezx/defconfig-rokr-e2
@@ -0,0 +1,904 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19.1
+# Thu Jan 4 18:45:14 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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 is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# 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 is not set
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+
+#
+# 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 is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+CONFIG_ARCH_EZX=y
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_ARCH_EZX_SUMATRA=y
+# CONFIG_ARCH_EZX_A780 is not set
+CONFIG_PXA27x=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_DCACHE_DISABLE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# 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="mem=32M console=tty0 video=pxafb:mode:240x320-8,active root=/dev/mmcblk0p1 rootdelay=1"
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+# CONFIG_PACKET is not set
+# CONFIG_UNIX is not set
+# CONFIG_NET_KEY is not set
+# CONFIG_INET is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER 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_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 is not set
+# CONFIG_FW_LOADER is not set
+# 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 is not set
+# CONFIG_MTD_PARTITIONS is not set
+
+#
+# User Modules And Translation Layers
+#
+# CONFIG_MTD_CHAR is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_XIP 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_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD 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_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+# CONFIG_NETDEVICES is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# 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=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 is not set
+# 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 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 is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_PXA is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# 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_DTLK is not set
+# CONFIG_R3964 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 is not set
+
+#
+# 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_PXA is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# 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=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=y
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+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_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX 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_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+CONFIG_FONT_6x11=y
+# 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 is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# HID Devices
+#
+# CONFIG_HID is not set
+
+#
+# USB support
+#
+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
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL 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_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_TIFM_SD 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+# CONFIG_EXT2_FS 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 is not set
+# 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 is not set
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# 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 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
+#
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf-8"
+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 is not set
+# 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=y
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_ENABLE_MUST_CHECK is not set
+# 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=y
+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 is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-ezx/wyrm-ts.diff b/packages/linux/linux-ezx/wyrm-ts.diff
new file mode 100644
index 0000000000..a7ec75613c
--- /dev/null
+++ b/packages/linux/linux-ezx/wyrm-ts.diff
@@ -0,0 +1,119 @@
+--- /tmp/pcap_ts.c 2007-02-04 16:55:21.000000000 -0200
++++ linux-2.6.16/drivers/input/touchscreen/pcap_ts.c 2007-02-04 18:47:58.000000000 -0200
+@@ -31,7 +31,7 @@
+
+ #include "../../misc/ezx/ssp_pcap.h"
+
+-#if 1
++#if 0
+ #define DEBUGP(x, args ...) printk(KERN_DEBUG "%s: " x, __FUNCTION__, ## args)
+ #else
+ #define DEBUGP(x, args ...)
+@@ -39,6 +39,7 @@
+
+ #define PRESSURE 1
+ #define COORDINATE 2
++#define STANDBY 3
+
+ struct pcap_ts {
+ int irq_xy;
+@@ -97,7 +98,7 @@
+ int ret;
+ u_int32_t tmp;
+ DEBUGP("start xy read in mode %s\n",
+- pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
++ pcap_ts->read_state == COORDINATE ? "COORD" : (pcap_ts->read_state == PRESSURE ? "PRESS" : "STANDBY"));
+
+ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
+ if (ret < 0)
+@@ -122,7 +123,7 @@
+ u_int32_t tmp;
+
+ DEBUGP("get xy value in mode %s\n",
+- pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
++ pcap_ts->read_state == COORDINATE ? "COORD" : (pcap_ts->read_state == PRESSURE ? "PRESS" : "STANDBY"));
+
+ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC2_REGISTER, &tmp);
+ if (ret < 0)
+@@ -145,7 +146,16 @@
+ static irqreturn_t pcap_ts_irq_xy(int irq, void *dev_id, struct pt_regs *regs)
+ {
+ struct pcap_ts *pcap_ts = dev_id;
++// DEBUGP("read_state: %d\n", pcap_ts->read_state);
+
++ /*
++ * Ignore further read interrupts after we set STANDBY - WM
++ */
++ if (pcap_ts->read_state == STANDBY)
++ {
++ DEBUGP("ignored\n");
++ return IRQ_HANDLED;
++ }
+ if (pcap_ts_get_xy_value(pcap_ts) < 0) {
+ printk("pcap_ts: error reading XY value\n");
+ return IRQ_HANDLED;
+@@ -160,33 +170,32 @@
+ pcap_ts->pressure <= PRESSURE_MIN ) &&
+ pcap_ts->pressure == pcap_ts->pressure_last) {
+ /* pen has been released */
++ DEBUGP("UP\n");
+ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
+- input_sync(pcap_ts->input);
+-
+ input_report_abs(pcap_ts->input, ABS_PRESSURE, 0);
++ input_sync(pcap_ts->input);
+
+ pcap_ts->x = pcap_ts->y = 0;
+
++ /* no need for timer, we'll get interrupted with
++ * next touch down event */
++ del_timer(&pcap_ts->timer);
++
+ /* ask PCAP2 to interrupt us if touch event happens
+ * again */
+- pcap_ts->read_state = PRESSURE;
++ pcap_ts->read_state = STANDBY;
+ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
+-
+- /* no need for timer, we'll get interrupted with
+- * next touch down event */
+- del_timer(&pcap_ts->timer);
+ } else {
+ /* pen has been touched down */
++ DEBUGP("DOWN\n");
++
+ input_report_key(pcap_ts->input, BTN_TOUCH, 1);
+ /* don't input_sync(), we don't know position yet */
+
+ if (pcap_ts->pressure == 0)
+ pcap_ts->pressure = pcap_ts->pressure_last;
+
+- input_report_abs(pcap_ts->input, ABS_PRESSURE,
+- pcap_ts->pressure);
+-
+ /* switch state machine into coordinate read mode */
+ pcap_ts->read_state = COORDINATE;
+ pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
+@@ -196,18 +205,14 @@
+ /* we are in coordinate mode */
+ if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
+ pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
+- DEBUGP("invalid x/y coordinate position: PEN_UP?\n");
+-
++ DEBUGP("PEN_UP?\n");
+ pcap_ts->pressure = 0;
+-#if 0
+- input_report_key(pcap_ts->input, BTN_TOUCH, 0);
+- pcap_ts->x = pcap_ts->y = 0;
+-#endif
+ } else {
++ input_report_abs(pcap_ts->input, ABS_PRESSURE, pcap_ts->pressure);
+ input_report_abs(pcap_ts->input, ABS_X, pcap_ts->x);
+ input_report_abs(pcap_ts->input, ABS_Y, pcap_ts->y);
++ input_sync(pcap_ts->input);
+ }
+- input_sync(pcap_ts->input);
+
+ /* switch back to pressure read mode */
+ pcap_ts->read_state = PRESSURE;
diff --git a/packages/linux/linux-ezx_2.6.16.13.bb b/packages/linux/linux-ezx_2.6.16.13.bb
index 0f4863e125..1e6d3e2506 100644
--- a/packages/linux/linux-ezx_2.6.16.13.bb
+++ b/packages/linux/linux-ezx_2.6.16.13.bb
@@ -4,8 +4,8 @@ AUTHOR = "Harald Welte and the OpenEZX Team <openezx-devel@lists.openezx.org>"
HOMEPAGE = "http://www.openezx.org"
LICENSE = "GPL"
DEPENDS += "quilt-native"
-EZX = "ezx7"
-PR = "${EZX}-r1"
+EZX = "ezx9"
+PR = "${EZX}-r2"
inherit kernel
@@ -16,14 +16,12 @@ RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
# source and patches
#
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2 \
- http://people.openezx.org/stefan/patches/patches-2.6.16-2.6.16.13-ezx7.tar.bz2 \
+ http://www.openezx.org/download/patches-2.6.16-2.6.16.13-${EZX}.tar.bz2 \
\
- file://sa1100-rtc-gcc4.diff;patch=1 \
- file://pxa-serial-gcc4.diff;patch=1 \
- \
file://logo_linux_clut224.ppm \
file://defconfig-a780 \
- file://defconfig-e680"
+ file://defconfig-e680 \
+ file://wyrm-ts.diff;patch=1"
S = "${WORKDIR}/linux-2.6.16"
##############################################################
@@ -103,7 +101,7 @@ do_compile_append() {
do_deploy() {
install -d ${DEPLOY_DIR_IMAGE}
install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
- tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_VERSION}-${MACHINE}.tgz -C ${D} lib
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/linux-ezx_2.6.19+2.6.20-rc2.bb b/packages/linux/linux-ezx_2.6.19+2.6.20-rc2.bb
new file mode 100644
index 0000000000..b5202fc0f5
--- /dev/null
+++ b/packages/linux/linux-ezx_2.6.19+2.6.20-rc2.bb
@@ -0,0 +1,125 @@
+DESCRIPTION = "2.6 Linux Development Kernel for the Motorola GSM phones A780 and E680"
+SECTION = "kernel"
+AUTHOR = "Harald Welte and the OpenEZX Team <openezx-devel@lists.openezx.org>"
+HOMEPAGE = "http://www.openezx.org"
+LICENSE = "GPL"
+DEPENDS += "quilt-native"
+EZX = "ezx0"
+PR = "${EZX}-r2"
+
+DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_rokr-e2 = "1"
+
+inherit kernel
+
+KERNEL_RELEASE = "2.6.20-rc2"
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-ezx"
+
+RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
+DMSRC = "http://people.openezx.org/dotmonkey/patch"
+
+##############################################################
+# source and patches
+#
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz2 \
+ ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/testing/patch-2.6.20-rc2.bz2;patch=1 \
+ ${DMSRC}/Kconfig.patch;patch=1;pnum=5 \
+ ${DMSRC}/Makefile.patch;patch=1;pnum=5 \
+ ${DMSRC}/head-xscale.S.patch;patch=1;pnum=5 \
+ ${DMSRC}/sumatra.c.patch;patch=1;pnum=1 \
+ ${DMSRC}/uncompress.h.patch;patch=1;pnum=5 \
+ file://logo_linux_clut224.ppm \
+ file://defconfig-${MACHINE} \
+ file://wyrm-ts.diff;patch=1"
+
+S = "${WORKDIR}/linux-2.6.19"
+
+##############################################################
+# kernel image resides on a seperate flash partition (for now)
+#
+FILES_kernel-image = ""
+ALLOW_EMPTY = "1"
+
+COMPATIBLE_HOST = "arm.*-linux"
+COMPATIBLE_MACHINE = '(a780|e680|a1200|rokr-e2)'
+
+CMDLINE_CON = "console=ttyS2,115200n8 console=tty1 noinitrd"
+CMDLINE_CON_rokr-e2 = "video=pxafb:mode:240x320-8,active console=ttyS2,115200n8 console=tty1"
+
+CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
+# uncomment if you want to boot over NFS
+#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
+# uncomment to enable dyntick
+#CMDLINE_OTHER = "dyntick=enable"
+CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
+CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
+CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG} mem=32M@0xA0000000 mem=16M@0xAC000000"
+CMDLINE_rokr-e2 = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG}"
+
+###############################################################
+# module configs specific to this kernel
+#
+module_autoload_pxaficp_ir = "pxaficp_ir"
+module_autoload_snd-pcm-oss = "snd-pcm-oss"
+
+do_ezxpatch() {
+ #mv ${WORKDIR}/patches ${S} && cd ${S} && quilt push -av
+ #rm -Rf patches .pc
+ :
+}
+
+do_configure() {
+ install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
+
+ if [ ! -e ${WORKDIR}/defconfig-${MACHINE} ]; then
+ die "No default configuration for ${MACHINE} available."
+ fi
+
+ echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
+
+ if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
+ echo "CONFIG_AEABI=y" >> ${S}/.config
+ echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
+ else
+ echo "# CONFIG_AEABI is not set" >> ${S}/.config
+ echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
+ fi
+
+ sed -e '/CONFIG_AEABI/d' \
+ -e '/CONFIG_OABI_COMPAT=/d' \
+ -e '/CONFIG_CMDLINE=/d' \
+ -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
+ -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ABS_POS=/d' \
+ '${WORKDIR}/defconfig-${MACHINE}' >>'${S}/.config'
+
+ yes '' | oe_runmake oldconfig
+}
+
+###############################################################
+# check the kernel is below the 1024*1024 byte limit for the boot-over usb
+#
+do_compile_append() {
+ size=`ls -l arch/${ARCH}/boot/${KERNEL_IMAGETYPE} | awk '{ print $5}'`
+ if [ $size -ge 1294336 ]; then
+ rm arch/${ARCH}/boot/${KERNEL_IMAGETYPE}
+ echo "Size is $size"
+ die "This kernel is too big for your EZX Phone. Please reduce the size of the kernel by making more of it modular."
+ fi
+}
+
+###############################################################
+# put into deploy directory
+#
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_package after do_install
+addtask ezxpatch before do_patch after do_unpack
diff --git a/packages/linux/linux-ezx_2.6.20.7.bb b/packages/linux/linux-ezx_2.6.20.7.bb
new file mode 100644
index 0000000000..7336fee762
--- /dev/null
+++ b/packages/linux/linux-ezx_2.6.20.7.bb
@@ -0,0 +1,125 @@
+DESCRIPTION = "2.6 Linux Development Kernel for the Motorola GSM phones A780 and E680"
+SECTION = "kernel"
+AUTHOR = "Harald Welte and the OpenEZX Team <openezx-devel@lists.openezx.org>"
+HOMEPAGE = "http://www.openezx.org"
+LICENSE = "GPL"
+DEPENDS += "quilt-native"
+EZX = "ezx0"
+PR = "${EZX}-r0"
+
+DEFAULT_PREFERENCE = "-1"
+
+
+inherit kernel
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-ezx"
+RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
+
+##############################################################
+# source and patches
+#
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.20.7.tar.bz2 \
+ \
+ file://ezx-core.patch;patch=1 \
+ file://ezx-pcap.patch;patch=1 \
+ file://ezx-mci.patch;patch=1 \
+ file://usb_pxa27x_udc-r3.patch;patch=1 \
+ file://usb_add_epalloc-r3.patch;patch=1 \
+ file://ezx-emu.patch;patch=1 \
+ file://ezx-fix-usb_pxa27x_udc-r3.patch;patch=1 \
+ file://ezx-mtd-map.patch;patch=1 \
+ file://ezx-serial-bug-workaround.patch;patch=1 \
+ file://mux_cli.patch;patch=1 \
+ file://mux-fix.patch;patch=1 \
+ file://mux-fix-init-errorpath.patch;patch=1 \
+ file://mux-remove-flipbuffers.patch;patch=1 \
+ file://mux-remove-get_halted_bit.patch;patch=1 \
+ file://mux-remove-usbh_finished_resume.patch;patch=1 \
+ file://mux-fix-makefile.patch;patch=1 \
+ file://mux-fix-tty-driver.patch;patch=1 \
+ \
+ file://logo_linux_clut224.ppm \
+ file://defconfig-a780 \
+ file://defconfig-e680 \
+ "
+
+S = "${WORKDIR}/linux-2.6.20.7"
+
+##############################################################
+# kernel image resides on a seperate flash partition (for now)
+#
+FILES_kernel-image = ""
+ALLOW_EMPTY = "1"
+
+COMPATIBLE_HOST = "arm.*-linux"
+COMPATIBLE_MACHINE = '(a780|e680)'
+
+CMDLINE_CON = "console=ttyS2,115200n8 console=tty1 noinitrd"
+CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
+# uncomment if you want to boot over NFS
+#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
+# uncomment to enable dyntick
+#CMDLINE_OTHER = "dyntick=enable"
+CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
+CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
+CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG} mem=32M@0xA0000000 mem=16M@0xAC000000"
+
+###############################################################
+# module configs specific to this kernel
+#
+module_autoload_pxaficp_ir = "pxaficp_ir"
+module_autoload_snd-pcm-oss = "snd-pcm-oss"
+
+do_configure() {
+ install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
+
+ if [ ! -e ${WORKDIR}/defconfig-${MACHINE} ]; then
+ die "No default configuration for ${MACHINE} available."
+ fi
+
+ echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
+
+ if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
+ echo "CONFIG_AEABI=y" >> ${S}/.config
+ echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
+ else
+ echo "# CONFIG_AEABI is not set" >> ${S}/.config
+ echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
+ fi
+
+ sed -e '/CONFIG_AEABI/d' \
+ -e '/CONFIG_OABI_COMPAT=/d' \
+ -e '/CONFIG_CMDLINE=/d' \
+ -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
+ -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ABS_POS=/d' \
+ '${WORKDIR}/defconfig-${MACHINE}' >>'${S}/.config'
+
+ yes '' | oe_runmake oldconfig
+}
+
+###############################################################
+# check the kernel is below the 1024*1024 byte limit for the boot-over usb
+#
+do_compile_append() {
+ size=`ls -l arch/${ARCH}/boot/${KERNEL_IMAGETYPE} | awk '{ print $5}'`
+ if [ $size -ge 1294336 ]; then
+ rm arch/${ARCH}/boot/${KERNEL_IMAGETYPE}
+ echo "Size is $size"
+ echo "This kernel is too big for your EZX Phone. Please reduce the size of the kernel by making more of it modular."
+ fi
+}
+
+###############################################################
+# put into deploy directory
+#
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_VERSION}-${MACHINE}.tgz -C ${D} lib
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_package after do_install
diff --git a/packages/linux/linux-ezx_2.6.21.bb b/packages/linux/linux-ezx_2.6.21.bb
new file mode 100644
index 0000000000..35dc2dff5d
--- /dev/null
+++ b/packages/linux/linux-ezx_2.6.21.bb
@@ -0,0 +1,127 @@
+DESCRIPTION = "2.6 Linux Development Kernel for the Motorola GSM phones A780 and E680"
+SECTION = "kernel"
+AUTHOR = "Harald Welte and the OpenEZX Team <openezx-devel@lists.openezx.org>"
+HOMEPAGE = "http://www.openezx.org"
+LICENSE = "GPL"
+DEPENDS += "quilt-native"
+EZX = "ezx0"
+PR = "${EZX}-r4"
+
+inherit kernel
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-ezx"
+RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
+
+##############################################################
+# source and patches
+#
+SRC_URI = " \
+ ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://ezx-core.patch;patch=1 \
+ file://ezx-pm.patch;patch=1 \
+ file://ezx-pcap.patch;patch=1 \
+ file://ezx-mci.patch;patch=1 \
+ file://pxa27x-udc-support.2.patch;patch=1 \
+ file://ezx-emu.patch;patch=1 \
+ file://ezx-mtd-map.patch;patch=1 \
+ file://ezx-serial-bug-workaround.patch;patch=1 \
+ file://pxa-kbd.patch;patch=1 \
+ file://ezx-kbd.patch;patch=1 \
+ file://pcap-ts.patch;patch=1 \
+ file://mux_cli.patch;patch=1 \
+ file://mux-fix.patch;patch=1 \
+ file://mux-fix-init-errorpath.patch;patch=1 \
+ file://mux-remove-flipbuffers.patch;patch=1 \
+ file://mux-remove-get_halted_bit.patch;patch=1 \
+ file://mux-remove-usbh_finished_resume.patch;patch=1 \
+ file://mux-fix-makefile.patch;patch=1 \
+ file://mux-fix-tty-driver.patch;patch=1 \
+ file://mux-linux-2.6.21-fix.patch;patch=1 \
+ file://mux-ifdef-ezx-features.patch;patch=1 \
+ file://mux_debug.patch;patch=1 \
+ file://logo_linux_clut224.ppm \
+ file://defconfig-a780 \
+ file://defconfig-e680 \
+ "
+
+S = "${WORKDIR}/linux-${PV}"
+
+
+##############################################################
+# kernel image resides on a seperate flash partition (for now)
+#
+FILES_kernel-image = ""
+ALLOW_EMPTY = "1"
+
+COMPATIBLE_HOST = "arm.*-linux"
+COMPATIBLE_MACHINE = '(a780|e680)'
+
+CMDLINE_CON = "console=ttyS2,115200n8 console=tty1 noinitrd"
+CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
+# uncomment if you want to boot over NFS
+#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
+# uncomment to enable dyntick
+#CMDLINE_OTHER = "dyntick=enable"
+CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
+CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
+CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG} mem=32M@0xA0000000 mem=16M@0xAC000000"
+
+###############################################################
+# module configs specific to this kernel
+#
+module_autoload_pxaficp_ir = "pxaficp_ir"
+module_autoload_snd-pcm-oss = "snd-pcm-oss"
+
+do_configure() {
+ install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
+
+ if [ ! -e ${WORKDIR}/defconfig-${MACHINE} ]; then
+ die "No default configuration for ${MACHINE} available."
+ fi
+
+ echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
+
+ if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
+ echo "CONFIG_AEABI=y" >> ${S}/.config
+ echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
+ else
+ echo "# CONFIG_AEABI is not set" >> ${S}/.config
+ echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
+ fi
+
+ sed -e '/CONFIG_AEABI/d' \
+ -e '/CONFIG_OABI_COMPAT=/d' \
+ -e '/CONFIG_CMDLINE=/d' \
+ -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
+ -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ABS_POS=/d' \
+ '${WORKDIR}/defconfig-${MACHINE}' >>'${S}/.config'
+
+ yes '' | oe_runmake oldconfig
+}
+
+###############################################################
+# check the kernel is below the 1024*1024 byte limit for the boot-over usb
+#
+do_compile_append() {
+ size=`ls -l arch/${ARCH}/boot/${KERNEL_IMAGETYPE} | awk '{ print $5}'`
+ if [ $size -ge 1294336 ]; then
+ rm arch/${ARCH}/boot/${KERNEL_IMAGETYPE}
+ echo "Size is $size"
+ echo "This kernel is too big for your EZX Phone. Please reduce the size of the kernel by making more of it modular."
+ fi
+}
+
+###############################################################
+# put into deploy directory
+#
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_VERSION}-${MACHINE}.tgz -C ${D} lib
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_populate_staging after do_package
diff --git a/packages/linux/linux-gta01.inc b/packages/linux/linux-gta01.inc
new file mode 100644
index 0000000000..ee3c09e908
--- /dev/null
+++ b/packages/linux/linux-gta01.inc
@@ -0,0 +1,95 @@
+DESCRIPTION = "2.6 Linux Development Kernel for FIC Neo1973 (GTA01)"
+SECTION = "kernel"
+AUTHOR = "Harald Welte <laforge@openmoko.org>"
+HOMEPAGE = "N/A"
+LICENSE = "GPL"
+DEPENDS += "u-boot-mkimage-gta01-native"
+
+inherit kernel
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-gta01"
+
+##############################################################
+# source and patches
+#
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.tar.bz2 \
+ file://defconfig-${VANILLA_VERSION}-${MACHINE}"
+S = "${WORKDIR}/linux-${VANILLA_VERSION}"
+
+##############################################################
+# kernel image resides on a seperate flash partition (for now)
+#
+FILES_kernel-image = ""
+ALLOW_EMPTY = "1"
+
+COMPATIBLE_MACHINE = 'fic-gta01'
+
+CMDLINE_CON = ""
+#CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
+# uncomment if you want to boot over NFS
+#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
+# uncomment to enable dyntick
+#CMDLINE_OTHER = "dyntick=enable"
+CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
+CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
+CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG}"
+
+###############################################################
+# module configs specific to this kernel
+#
+module_autoload_ohci-hcd = "ohci-hcd"
+module_autoload_g_ether = "g_ether"
+#module_autoload_snd-pcm-oss = "snd-pcm-oss"
+#module_autoload_snd-soc-corgi_c7x0 = "snd-soc-s3c24xx"
+
+do_prepatch() {
+ mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
+ rm -Rf patches .pc
+}
+
+do_configure() {
+ if [ ! -e ${WORKDIR}/defconfig-${VANILLA_VERSION}-${MACHINE} ]; then
+ die "No default configuration for ${MACHINE} available."
+ fi
+
+ echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
+
+ if [ "${TARGET_OS}" == "linux-gnueabi" ]; then
+ echo "CONFIG_AEABI=y" >> ${S}/.config
+ echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
+ else
+ echo "# CONFIG_AEABI is not set" >> ${S}/.config
+ echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
+ fi
+
+ sed -e '/CONFIG_AEABI/d' \
+ -e '/CONFIG_OABI_COMPAT=/d' \
+ -e '/CONFIG_CMDLINE=/d' \
+ -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
+ -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ABS_POS=/d' \
+ '${WORKDIR}/defconfig-${VANILLA_VERSION}-${MACHINE}' >>'${S}/.config'
+
+ yes '' | oe_runmake oldconfig
+}
+
+###############################################################
+# put into deploy directory and append u-boot header
+#
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${PR}-${MACHINE}.tgz -C ${D} lib
+ ${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin
+ rm -f linux.bin.gz
+ gzip -9 linux.bin
+ uboot-mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "OpenMoko Kernel Image Neo1973(GTA01)" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
+ rm -f linux.bin.gz
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask prepatch before do_patch after do_unpack
+addtask deploy before do_package after do_install
+
diff --git a/packages/linux/linux-gta01/.mtn2git_empty b/packages/linux/linux-gta01/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-gta01/.mtn2git_empty
diff --git a/packages/linux/linux-gta01/defconfig-2.6.20-fic-gta01 b/packages/linux/linux-gta01/defconfig-2.6.20-fic-gta01
new file mode 100644
index 0000000000..e0a885fa0d
--- /dev/null
+++ b/packages/linux/linux-gta01/defconfig-2.6.20-fic-gta01
@@ -0,0 +1,1781 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20
+# Thu Feb 15 23:04:12 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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="-moko8"
+# 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 is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+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_ALL is not set
+# 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_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=m
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=m
+# 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 is not set
+# 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=y
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# S3C24XX Implementations
+#
+# CONFIG_MACH_AML_M5900 is not set
+# CONFIG_MACH_ANUBIS is not set
+# CONFIG_MACH_OSIRIS is not set
+# CONFIG_ARCH_BAST is not set
+# CONFIG_ARCH_H1940 is not set
+# CONFIG_MACH_N30 is not set
+# CONFIG_ARCH_SMDK2410 is not set
+CONFIG_MACH_QT2410=y
+CONFIG_MACH_GTA01=y
+# CONFIG_ARCH_S3C2440 is not set
+# CONFIG_MACH_SMDK2413 is not set
+# CONFIG_MACH_VR1000 is not set
+# CONFIG_MACH_RX3715 is not set
+# CONFIG_MACH_OTOM is not set
+# CONFIG_MACH_NEXCODER_2440 is not set
+# CONFIG_MACH_VSTMS is not set
+CONFIG_S3C2410_CLOCK=y
+CONFIG_S3C2410_PM=y
+CONFIG_CPU_S3C2410_DMA=y
+CONFIG_CPU_S3C2410=y
+
+#
+# S3C2410 Boot
+#
+# CONFIG_S3C2410_BOOT_WATCHDOG is not set
+CONFIG_S3C2410_BOOT_ERROR_RESET=y
+
+#
+# S3C2410 Setup
+#
+CONFIG_S3C2410_DMA=y
+# CONFIG_S3C2410_DMA_DEBUG is not set
+# CONFIG_S3C2410_PM_DEBUG is not set
+# CONFIG_S3C2410_PM_CHECK is not set
+CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_32v4T=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_CACHE_V4WT=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
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=200
+# 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="console=ttySAC0,115200n8 ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off debug"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+CONFIG_FPE_FASTFPE=y
+
+#
+# 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=y
+CONFIG_PM_LEGACY=y
+CONFIG_PM_DEBUG=y
+CONFIG_DISABLE_CONSOLE_SUSPEND=y
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM=y
+
+#
+# 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_XFRM_SUB_POLICY is not set
+CONFIG_NET_KEY=m
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+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 is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+# CONFIG_IP_PNP is not set
+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=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=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_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
+
+#
+# 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 is not set
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_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_MATCH_COMMENT is not set
+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_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 is not set
+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 is not set
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# 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 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_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_NET_SCH_CLK_JIFFIES is not set
+CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_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 is not set
+# CONFIG_NET_CLS_ACT is not set
+# CONFIG_NET_CLS_POLICE is not set
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_ESTIMATOR=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# 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 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 is not set
+CONFIG_FIB_RULES=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+CONFIG_CONNECTOR=m
+
+#
+# Memory Technology Devices (MTD)
+#
+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 is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD 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=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND_IDS=y
+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_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM 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_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=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+# 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=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 is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+CONFIG_SCSI_SCAN_ASYNC=y
+
+#
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+# 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
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+CONFIG_NET_PCI=y
+CONFIG_CS89x0=m
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN 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 is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+
+#
+# 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=m
+CONFIG_KEYBOARD_GTA01=y
+CONFIG_KEYBOARD_QT2410=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+CONFIG_TOUCHSCREEN_S3C2410=y
+# CONFIG_TOUCHSCREEN_S3C2410_DEBUG 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_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_NR_TTY_DEVICES=4
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_S3C2410=y
+CONFIG_SERIAL_S3C2410_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+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_S3C2410_WATCHDOG=m
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TS0710_MUX is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=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_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+CONFIG_I2C_S3C2410=y
+# CONFIG_I2C_STUB 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 is not set
+CONFIG_SENSORS_PCF50606=y
+# CONFIG_SENSORS_PCF8574 is not set
+# 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=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_S3C24XX_GPIO=y
+CONFIG_SPI_S3C24XX=y
+
+#
+# SPI Protocol Masters
+#
+CONFIG_SPI_SLAVE_JBT6K74=y
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# 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_LM70 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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
+
+#
+# Misc devices
+#
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+CONFIG_LEDS_S3C24XX=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_S3C2410=y
+# CONFIG_FB_S3C2410_DEBUG 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_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+CONFIG_FONT_6x11=y
+# 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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_GTA01=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+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_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
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=y
+
+#
+# Soc Platforms
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Freescale i.MX
+#
+
+#
+# SoC Audio for the Samsung S3C24XX
+#
+CONFIG_SND_S3C24XX_SOC=y
+CONFIG_SND_S3C24XX_SOC_I2S=y
+CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y
+
+#
+# Soc Codecs
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_WM8711 is not set
+# CONFIG_SND_SOC_WM8510 is not set
+# CONFIG_SND_SOC_WM8731 is not set
+# CONFIG_SND_SOC_WM8750 is not set
+CONFIG_SND_SOC_WM8753=y
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM8956 is not set
+# CONFIG_SND_SOC_WM8960 is not set
+CONFIG_SND_SOC_WM8976=y
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM8980 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+# CONFIG_SND_SOC_WM9712 is not set
+# CONFIG_SND_SOC_UDA1380 is not set
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+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_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_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=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_DPCM=y
+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_KARMA=y
+CONFIG_USB_LIBUSUAL=y
+
+#
+# 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_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 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 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=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_NET_ZAURUS=m
+CONFIG_USB_MON=y
+
+#
+# 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=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=y
+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
+#
+# 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_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=m
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX 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=y
+CONFIG_USB_S3C2410=y
+# CONFIG_USB_S3C2410_DEBUG is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_TIFM_SD is not set
+CONFIG_MMC_S3C=m
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_HCTOSYS is not set
+CONFIG_RTC_DEBUG=y
+
+#
+# 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_S3C=m
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# 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=y
+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 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=m
+
+#
+# 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_YAFFS_FS is not set
+# CONFIG_YAFFS_YAFFS1 is not set
+# CONFIG_YAFFS_DOES_ECC is not set
+# CONFIG_YAFFS_YAFFS2 is not set
+# CONFIG_YAFFS_AUTO_YAFFS2 is not set
+# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
+# CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS is not set
+# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
+# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
+# CONFIG_YAFFS_SHORT_NAMES_IN_RAM is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# 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=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=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 is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# 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
+# CONFIG_9P_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=m
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+# 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=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=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# 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_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_ERRORS is not set
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+CONFIG_DEBUG_S3C2410_PORT=y
+CONFIG_DEBUG_S3C2410_UART=0
+
+#
+# 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_LRW=m
+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=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
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-gta01/defconfig-2.6.21.1-fic-gta01 b/packages/linux/linux-gta01/defconfig-2.6.21.1-fic-gta01
new file mode 100644
index 0000000000..276b6e5b23
--- /dev/null
+++ b/packages/linux/linux-gta01/defconfig-2.6.21.1-fic-gta01
@@ -0,0 +1,1837 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21.1
+# Tue May 1 09:19:54 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+# CONFIG_GENERIC_TIME is not set
+CONFIG_MMU=y
+CONFIG_NO_IOPORT=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_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="-moko10"
+# 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=y
+CONFIG_IKCONFIG_PROC=y
+# CONFIG_SYSFS_DEPRECATED is not set
+# 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_ALL is not set
+# 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_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=m
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=m
+# 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 is not set
+# 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=y
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_PLAT_S3C24XX=y
+CONFIG_CPU_S3C244X=y
+# CONFIG_S3C2410_BOOT_WATCHDOG is not set
+CONFIG_S3C2410_BOOT_ERROR_RESET=y
+CONFIG_S3C2410_PM_DEBUG=y
+# CONFIG_S3C2410_PM_CHECK is not set
+CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
+CONFIG_S3C2410_DMA=y
+# CONFIG_S3C2410_DMA_DEBUG is not set
+CONFIG_MACH_SMDK=y
+
+#
+# S3C2400 Machines
+#
+CONFIG_CPU_S3C2410=y
+CONFIG_CPU_S3C2410_DMA=y
+CONFIG_S3C2410_PM=y
+CONFIG_S3C2410_GPIO=y
+CONFIG_S3C2410_CLOCK=y
+
+#
+# S3C2410 Machines
+#
+# CONFIG_ARCH_SMDK2410 is not set
+# CONFIG_ARCH_H1940 is not set
+# CONFIG_MACH_N30 is not set
+# CONFIG_ARCH_BAST is not set
+# CONFIG_MACH_OTOM is not set
+# CONFIG_MACH_AML_M5900 is not set
+# CONFIG_MACH_VR1000 is not set
+# CONFIG_MACH_QT2410 is not set
+CONFIG_MACH_NEO1973_GTA01=y
+
+#
+# S3C2412 Machines
+#
+# CONFIG_MACH_SMDK2413 is not set
+# CONFIG_MACH_VSTMS is not set
+CONFIG_CPU_S3C2440=y
+CONFIG_S3C2440_DMA=y
+
+#
+# S3C2440 Machines
+#
+# CONFIG_MACH_ANUBIS is not set
+# CONFIG_MACH_OSIRIS is not set
+# CONFIG_MACH_RX3715 is not set
+CONFIG_ARCH_S3C2440=y
+# CONFIG_MACH_NEXCODER_2440 is not set
+CONFIG_SMDK2440_CPU2440=y
+CONFIG_MACH_HXD8=y
+
+#
+# S3C2442 Machines
+#
+# CONFIG_SMDK2440_CPU2442 is not set
+
+#
+# S3C2443 Machines
+#
+# CONFIG_MACH_SMDK2443 is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_32v4T=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_CACHE_V4WT=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_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=200
+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=" ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off debug"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+CONFIG_FPE_FASTFPE=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+CONFIG_PM_DEBUG=y
+CONFIG_DISABLE_CONSOLE_SUSPEND=y
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM_EMULATION=y
+
+#
+# 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=y
+CONFIG_NET_KEY=m
+CONFIG_NET_KEY_MIGRATE=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+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 is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+# CONFIG_IP_PNP is not set
+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=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=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_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 is not set
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=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_TCPMSS=m
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+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 is not set
+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 is not set
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# 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 is not set
+
+#
+# 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 is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=y
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=y
+# 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=y
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_NET_SCH_CLK_JIFFIES is not set
+CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_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 is not set
+# CONFIG_NET_CLS_ACT is not set
+# CONFIG_NET_CLS_POLICE is not set
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_ESTIMATOR=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# 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 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 is not set
+CONFIG_FIB_RULES=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+CONFIG_CONNECTOR=m
+
+#
+# Memory Technology Devices (MTD)
+#
+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 is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD 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=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND_IDS=y
+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_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM 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_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=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+# 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=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 is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+CONFIG_SCSI_SCAN_ASYNC=y
+
+#
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+# 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
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN 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 is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+
+#
+# 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=m
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_GTA01=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+CONFIG_TOUCHSCREEN_S3C2410=y
+# CONFIG_TOUCHSCREEN_S3C2410_DEBUG 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_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_NR_TTY_DEVICES=4
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_S3C2410=y
+CONFIG_SERIAL_S3C2410_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+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_S3C2410_WATCHDOG=m
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TS0710_MUX is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=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_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+CONFIG_I2C_S3C2410=y
+# CONFIG_I2C_STUB 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 is not set
+CONFIG_SENSORS_PCF50606=y
+# CONFIG_SENSORS_PCF8574 is not set
+# 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=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_S3C24XX=y
+CONFIG_SPI_S3C24XX_GPIO=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+CONFIG_SPI_SLAVE_JBT6K74=y
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# 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_LM70 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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
+
+#
+# Misc devices
+#
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_S3C24XX is not set
+CONFIG_LEDS_GTA01=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=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_S3C2410=y
+CONFIG_FB_S3C2410_DEBUG=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_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+CONFIG_FONT_6x11=y
+# 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
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+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_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
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=y
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Freescale i.MX
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+
+#
+# SoC Audio for the Samsung S3C24XX
+#
+CONFIG_SND_S3C24XX_SOC=y
+CONFIG_SND_S3C24XX_SOC_I2S=y
+CONFIG_SND_S3C24XX_SOC_SMDK2440=m
+CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y
+CONFIG_SND_SOC_WM8753=y
+CONFIG_SND_SOC_UDA1380=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# 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 is not set
+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_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# 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=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_DPCM=y
+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_KARMA=y
+CONFIG_USB_LIBUSUAL=y
+
+#
+# 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_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 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
+CONFIG_USB_GTCO=m
+
+#
+# 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=y
+
+#
+# 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=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=y
+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
+#
+# 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=m
+# 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=m
+CONFIG_USB_IOWARRIOR=m
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX 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=y
+CONFIG_USB_S3C2410=y
+# CONFIG_USB_S3C2410_DEBUG is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_S3C=m
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_HCTOSYS is not set
+CONFIG_RTC_DEBUG=y
+
+#
+# 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_S3C=m
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# 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=y
+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 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=m
+
+#
+# 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_YAFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# 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=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=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 is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# 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
+# CONFIG_9P_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=m
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+# 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=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=y
+# 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_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# 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_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+CONFIG_DEBUG_S3C2410_PORT=y
+CONFIG_DEBUG_S3C2410_UART=0
+
+#
+# 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=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+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
+CONFIG_HAS_IOMEM=y
diff --git a/packages/linux/linux-gta01/defconfig-fic-gta01 b/packages/linux/linux-gta01/defconfig-fic-gta01
new file mode 100644
index 0000000000..40adbcd1a1
--- /dev/null
+++ b/packages/linux/linux-gta01/defconfig-fic-gta01
@@ -0,0 +1,1621 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.17.14
+# Tue Feb 13 20:26:21 2007
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_VECTORS_BASE=0xffff0000
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION="-moko7"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_EMBEDDED is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_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=y
+# CONFIG_MODVERSIONS is not set
+# 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=m
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=m
+# 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_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_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+CONFIG_ARCH_S3C2410=y
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# S3C24XX Implementations
+#
+# CONFIG_MACH_ANUBIS is not set
+# CONFIG_MACH_OSIRIS is not set
+# CONFIG_ARCH_BAST is not set
+# CONFIG_ARCH_H1940 is not set
+# CONFIG_MACH_N30 is not set
+# CONFIG_ARCH_SMDK2410 is not set
+CONFIG_MACH_QT2410=y
+CONFIG_MACH_GTA01=y
+# CONFIG_ARCH_S3C2440 is not set
+# CONFIG_MACH_VR1000 is not set
+# CONFIG_MACH_RX3715 is not set
+# CONFIG_MACH_OTOM is not set
+# CONFIG_MACH_NEXCODER_2440 is not set
+CONFIG_CPU_S3C2410=y
+
+#
+# S3C2410 Boot
+#
+CONFIG_S3C2410_BOOT_ERROR_RESET=y
+
+#
+# S3C2410 Setup
+#
+CONFIG_S3C2410_DMA=y
+# CONFIG_S3C2410_DMA_DEBUG is not set
+CONFIG_S3C2410_PM_DEBUG=y
+CONFIG_S3C2410_PM_CHECK=y
+CONFIG_S3C2410_PM_CHECK_CHUNKSIZE=64
+CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=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
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=200
+# 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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttySAC0,115200n8 ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off debug"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+CONFIG_FPE_FASTFPE=y
+
+#
+# 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=y
+CONFIG_PM_LEGACY=y
+CONFIG_PM_DEBUG=y
+CONFIG_APM=y
+
+#
+# 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=m
+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 is not set
+# CONFIG_IP_PNP_RARP is not set
+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=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+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_IPV6_TUNNEL=m
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+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_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
+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_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+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=y
+# CONFIG_IP_NF_CONNTRACK_MARK is not set
+CONFIG_IP_NF_CONNTRACK_EVENTS=y
+CONFIG_IP_NF_CONNTRACK_NETLINK=m
+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 is not set
+# CONFIG_IP_NF_AMANDA is not set
+CONFIG_IP_NF_PPTP=m
+CONFIG_IP_NF_H323=m
+# 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 is not set
+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 is not set
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=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 is not set
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
+CONFIG_IP_NF_NAT_FTP=m
+CONFIG_IP_NF_NAT_PPTP=m
+CONFIG_IP_NF_NAT_H323=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 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=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 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=y
+# CONFIG_NET_SCH_CLK_JIFFIES is not set
+CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_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 is not set
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+# CONFIG_NET_EMATCH is not set
+# CONFIG_NET_CLS_ACT is not set
+# CONFIG_NET_CLS_POLICE is not set
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_ESTIMATOR=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# 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 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 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+CONFIG_CONNECTOR=m
+
+#
+# Memory Technology Devices (MTD)
+#
+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_BLOCK=y
+# CONFIG_FTL is not set
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+CONFIG_INFTL=m
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD 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=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_S3C2410=y
+CONFIG_MTD_NAND_S3C2410_BBT=y
+# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
+# CONFIG_MTD_NAND_S3C2410_HWECC is not set
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM 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_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=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+# 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_IDEDISK=y
+# 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_IDE_ARM 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 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 is not set
+# 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_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+# 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
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+CONFIG_NET_PCI=y
+CONFIG_CS89x0=y
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+
+#
+# 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_GTA01=m
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+CONFIG_TOUCHSCREEN_S3C2410=y
+# CONFIG_TOUCHSCREEN_S3C2410_DEBUG 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_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+# 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_S3C2410=y
+CONFIG_SERIAL_S3C2410_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+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_NVRAM is not set
+CONFIG_S3C2410_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+# CONFIG_TS0710_MUX is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=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_PARPORT_LIGHT is not set
+CONFIG_I2C_S3C2410=y
+# CONFIG_I2C_STUB 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 is not set
+CONFIG_SENSORS_PCF50606=y
+# CONFIG_SENSORS_PCF8574 is not set
+# 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=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_S3C24XX_GPIO=y
+CONFIG_SPI_S3C24XX=y
+
+#
+# SPI Protocol Masters
+#
+CONFIG_SPI_SLAVE_JBT6K74=y
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID 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_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_W83781D 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_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_V4L2=y
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB 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_FIRMWARE_EDID=y
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_S3C2410=y
+# CONFIG_FB_S3C2410_DEBUG 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_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+CONFIG_FONT_6x11=y
+# 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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_GTA01=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+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
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=y
+
+#
+# Soc Platforms
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Freescale i.MX
+#
+
+#
+# SoC Audio for the Samsung S3C24XX
+#
+CONFIG_SND_S3C24XX_SOC=m
+CONFIG_SND_S3C24XX_SOC_I2S=m
+CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=m
+
+#
+# Soc Codecs
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_WM8711 is not set
+# CONFIG_SND_SOC_WM8510 is not set
+# CONFIG_SND_SOC_WM8731 is not set
+# CONFIG_SND_SOC_WM8750 is not set
+CONFIG_SND_SOC_WM8753=m
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM8956 is not set
+# CONFIG_SND_SOC_WM8960 is not set
+CONFIG_SND_SOC_WM8976=m
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM8980 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+# CONFIG_SND_SOC_WM9712 is not set
+# CONFIG_SND_SOC_UDA1380 is not set
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# 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 is not set
+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_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_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=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_DPCM=y
+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_LIBUSUAL=y
+
+#
+# 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 is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# 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 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 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=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=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_NET_ZAURUS=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRPRIME=m
+CONFIG_USB_SERIAL_ANYDATA=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_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+CONFIG_USB_SERIAL_SAFE_PADDED=y
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+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_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE 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=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX 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=y
+CONFIG_USB_S3C2410=y
+# CONFIG_USB_S3C2410_DEBUG is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_S3C=y
+
+#
+# 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
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST 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=y
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=y
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS 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_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=m
+
+#
+# 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=m
+CONFIG_JFFS_FS_VERBOSE=0
+# CONFIG_JFFS_PROC_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# 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=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_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 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=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=m
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+# 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=m
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_UNWIND_INFO=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+# CONFIG_DEBUG_ERRORS is not set
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+CONFIG_DEBUG_S3C2410_PORT=y
+CONFIG_DEBUG_S3C2410_UART=0
+
+#
+# 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 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_DES=y
+# 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=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=m
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# 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
diff --git a/packages/linux/linux-gta01/udc-nomodule-misccr.patch b/packages/linux/linux-gta01/udc-nomodule-misccr.patch
new file mode 100644
index 0000000000..0f84b56c2a
--- /dev/null
+++ b/packages/linux/linux-gta01/udc-nomodule-misccr.patch
@@ -0,0 +1,22 @@
+Index: linux-2.6.17.14-fic1/drivers/usb/gadget/s3c2410_udc.c
+===================================================================
+--- linux-2.6.17.14-fic1.orig/drivers/usb/gadget/s3c2410_udc.c 2006-11-03 01:22:14.000000000 +0100
++++ linux-2.6.17.14-fic1/drivers/usb/gadget/s3c2410_udc.c 2006-11-03 12:41:52.000000000 +0100
+@@ -1492,7 +1492,7 @@
+ return -ENODEV;
+ if (udc->driver)
+ return -EBUSY;
+- if (!driver->bind || !driver->unbind || !driver->setup
++ if (!driver->bind || !driver->setup
+ || driver->speed == USB_SPEED_UNKNOWN)
+ return -EINVAL;
+
+@@ -1700,6 +1700,8 @@
+ }
+ dprintk(DEBUG_VERBOSE, "%s: got irq %i\n", gadget_name, IRQ_USBD);
+
++ s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST|S3C2410_MISCCR_USBSUSPND0|S3C2410_MISCCR_USBSUSPND1, 0);
++
+ #ifdef ENABLE_SYSFS
+ /* create device files */
+ device_create_file(&pdev->dev, &dev_attr_regs);
diff --git a/packages/linux/linux-gta01_2.6.17.14.bb b/packages/linux/linux-gta01_2.6.17.14.bb
new file mode 100644
index 0000000000..8f3c37753a
--- /dev/null
+++ b/packages/linux/linux-gta01_2.6.17.14.bb
@@ -0,0 +1,101 @@
+DESCRIPTION = "2.6 Linux Development Kernel for FIC Neo1973 (GTA01)"
+SECTION = "kernel"
+AUTHOR = "Harald Welte <laforge@openmoko.org>"
+HOMEPAGE = "N/A"
+LICENSE = "GPL"
+DEPENDS += "uboot-gta01"
+MOKOR = "moko7"
+PR = "${MOKOR}-r1"
+
+inherit kernel
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-gta01"
+#HWSRC = "http://people.gta01.openmoko.org/laforge/src/kernel/20060806"
+
+##############################################################
+# source and patches
+#
+SRC_URI = "http://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.14.tar.bz2 \
+ svn://svn.openmoko.org/trunk/src/target/kernel;module=patches;proto=https \
+ file://defconfig-${MACHINE}"
+S = "${WORKDIR}/linux-2.6.17.14"
+
+##############################################################
+# kernel image resides on a seperate flash partition (for now)
+#
+FILES_kernel-image = ""
+ALLOW_EMPTY = "1"
+
+COMPATIBLE_MACHINE = 'fic-gta01'
+
+CMDLINE_CON = "console=ttySAC0,115200n8"
+#CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
+# uncomment if you want to boot over NFS
+#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
+# uncomment to enable dyntick
+#CMDLINE_OTHER = "dyntick=enable"
+CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
+CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
+CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG}"
+
+###############################################################
+# module configs specific to this kernel
+#
+module_autoload_ohci-hcd = "ohci-hcd"
+module_autoload_g_ether = "g_ether"
+#module_autoload_snd-pcm-oss = "snd-pcm-oss"
+#module_autoload_snd-soc-corgi_c7x0 = "snd-soc-s3c24xx"
+
+do_prepatch() {
+ mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
+ rm -Rf patches .pc
+}
+
+do_configure() {
+ #install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
+
+ if [ ! -e ${WORKDIR}/defconfig-${MACHINE} ]; then
+ die "No default configuration for ${MACHINE} available."
+ fi
+
+ echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
+
+ if [ "${TARGET_OS}" == "linux-gnueabi" ]; then
+ echo "CONFIG_AEABI=y" >> ${S}/.config
+ echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
+ else
+ echo "# CONFIG_AEABI is not set" >> ${S}/.config
+ echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
+ fi
+
+ sed -e '/CONFIG_AEABI/d' \
+ -e '/CONFIG_OABI_COMPAT=/d' \
+ -e '/CONFIG_CMDLINE=/d' \
+ -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
+ -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ABS_POS=/d' \
+ '${WORKDIR}/defconfig-${MACHINE}' >>'${S}/.config'
+
+ yes '' | oe_runmake oldconfig
+}
+
+###############################################################
+# put into deploy directory and append u-boot header
+#
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${PR}-${MACHINE}.tgz -C ${D} lib
+ arm-linux-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin
+ rm -f linux.bin.gz
+ gzip -9 linux.bin
+ uboot-mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "OpenMoko Kernel Image Neo1973(GTA01)" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
+ rm -f linux.bin.gz
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask prepatch before do_patch after do_unpack
+addtask deploy before do_package after do_install
+
diff --git a/packages/linux/linux-gta01_2.6.17.7.bb b/packages/linux/linux-gta01_2.6.17.7.bb
new file mode 100644
index 0000000000..cf4bfeb8ea
--- /dev/null
+++ b/packages/linux/linux-gta01_2.6.17.7.bb
@@ -0,0 +1,97 @@
+DESCRIPTION = "2.6 Linux Development Kernel for FIC GTA01"
+SECTION = "kernel"
+AUTHOR = "Harald Welte <hwelte@hmw-consulting.de>"
+HOMEPAGE = "N/A"
+LICENSE = "GPL"
+DEPENDS += "uboot-gta01"
+PR = "r4"
+
+inherit kernel
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-gta01"
+HWSRC = "http://people.gta01.hmw-consulting.de/laforge/src/kernel/20060806"
+
+##############################################################
+# source and patches
+#
+SRC_URI = "http://people.gta01.hmw-consulting.de/laforge/tmp/linux-2.6.17.7-gta01-lcm.tar.bz2 \
+ file://defconfig-${MACHINE}"
+S = "${WORKDIR}/linux-2.6.17.7-new"
+
+##############################################################
+# kernel image resides on a seperate flash partition (for now)
+#
+FILES_kernel-image = ""
+ALLOW_EMPTY = "1"
+
+COMPATIBLE_MACHINE = 'fic-gta01'
+
+CMDLINE_CON = "console=ttySAC0,115200n8"
+#CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
+# uncomment if you want to boot over NFS
+#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
+# uncomment to enable dyntick
+#CMDLINE_OTHER = "dyntick=enable"
+CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
+CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
+CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG}"
+
+###############################################################
+# module configs specific to this kernel
+#
+#module_autoload_pxaficp_ir = "pxaficp_ir"
+#module_autoload_snd-pcm-oss = "snd-pcm-oss"
+
+do_prepatch() {
+ mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
+ rm -Rf patches .pc
+}
+
+do_configure() {
+ #install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
+
+ if [ ! -e ${WORKDIR}/defconfig-${MACHINE} ]; then
+ die "No default configuration for ${MACHINE} available."
+ fi
+
+ echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
+
+ if [ "${TARGET_OS}" == "linux-gnueabi" ]; then
+ echo "CONFIG_AEABI=y" >> ${S}/.config
+ echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
+ else
+ echo "# CONFIG_AEABI is not set" >> ${S}/.config
+ echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
+ fi
+
+ sed -e '/CONFIG_AEABI/d' \
+ -e '/CONFIG_OABI_COMPAT=/d' \
+ -e '/CONFIG_CMDLINE=/d' \
+ -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
+ -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ABS_POS=/d' \
+ '${WORKDIR}/defconfig-${MACHINE}' >>'${S}/.config'
+
+ yes '' | oe_runmake oldconfig
+}
+
+###############################################################
+# put into deploy directory and append u-boot header
+#
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
+ arm-linux-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin
+ rm -f linux.bin.gz
+ gzip -9 linux.bin
+ uboot-mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "Kernel Image QT2410" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${MACHINE}-${DATETIME}.bin
+ rm -f linux.bin.gz
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask prepatch before do_patch after do_unpack
+addtask deploy before do_package after do_install
+
diff --git a/packages/linux/linux-gta01_2.6.20.bb b/packages/linux/linux-gta01_2.6.20.bb
new file mode 100644
index 0000000000..2c8fe80b33
--- /dev/null
+++ b/packages/linux/linux-gta01_2.6.20.bb
@@ -0,0 +1,102 @@
+DESCRIPTION = "2.6 Linux Development Kernel for FIC Neo1973 (GTA01)"
+SECTION = "kernel"
+AUTHOR = "Harald Welte <laforge@openmoko.org>"
+HOMEPAGE = "N/A"
+LICENSE = "GPL"
+DEPENDS += "u-boot-mkimage-gta01-native"
+MOKOR = "moko8"
+PR = "${MOKOR}-r2"
+
+VANILLA_VERSION = "2.6.20"
+
+inherit kernel
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-gta01"
+
+##############################################################
+# source and patches
+#
+SRC_URI = "http://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.tar.bz2 \
+ svn://svn.openmoko.org/branches/src/target/kernel/2.6.20.x;module=patches;proto=http \
+ file://defconfig-${VANILLA_VERSION}-${MACHINE}"
+S = "${WORKDIR}/linux-${VANILLA_VERSION}"
+
+##############################################################
+# kernel image resides on a seperate flash partition (for now)
+#
+FILES_kernel-image = ""
+ALLOW_EMPTY = "1"
+
+COMPATIBLE_MACHINE = 'fic-gta01'
+
+CMDLINE_CON = ""
+#CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
+# uncomment if you want to boot over NFS
+#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
+# uncomment to enable dyntick
+#CMDLINE_OTHER = "dyntick=enable"
+CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
+CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
+CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG}"
+
+###############################################################
+# module configs specific to this kernel
+#
+module_autoload_ohci-hcd = "ohci-hcd"
+module_autoload_g_ether = "g_ether"
+#module_autoload_snd-pcm-oss = "snd-pcm-oss"
+#module_autoload_snd-soc-corgi_c7x0 = "snd-soc-s3c24xx"
+
+do_prepatch() {
+ mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
+ rm -Rf patches .pc
+}
+
+do_configure() {
+ #install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
+
+ if [ ! -e ${WORKDIR}/defconfig-${VANILLA_VERSION}-${MACHINE} ]; then
+ die "No default configuration for ${MACHINE} available."
+ fi
+
+ echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
+
+ if [ "${TARGET_OS}" == "linux-gnueabi" ]; then
+ echo "CONFIG_AEABI=y" >> ${S}/.config
+ echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
+ else
+ echo "# CONFIG_AEABI is not set" >> ${S}/.config
+ echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
+ fi
+
+ sed -e '/CONFIG_AEABI/d' \
+ -e '/CONFIG_OABI_COMPAT=/d' \
+ -e '/CONFIG_CMDLINE=/d' \
+ -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
+ -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
+ -e '/CONFIG_MTDRAM_ABS_POS=/d' \
+ '${WORKDIR}/defconfig-${VANILLA_VERSION}-${MACHINE}' >>'${S}/.config'
+
+ yes '' | oe_runmake oldconfig
+}
+
+###############################################################
+# put into deploy directory and append u-boot header
+#
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${PR}-${MACHINE}.tgz -C ${D} lib
+ ${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin
+ rm -f linux.bin.gz
+ gzip -9 linux.bin
+ uboot-mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "OpenMoko Kernel Image Neo1973(GTA01)" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
+ rm -f linux.bin.gz
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask prepatch before do_patch after do_unpack
+addtask deploy before do_package after do_install
+
diff --git a/packages/linux/linux-gta01_2.6.21.1.bb b/packages/linux/linux-gta01_2.6.21.1.bb
new file mode 100644
index 0000000000..a9bf11126b
--- /dev/null
+++ b/packages/linux/linux-gta01_2.6.21.1.bb
@@ -0,0 +1,10 @@
+require linux-gta01.inc
+
+DEFAULT_PREFERENCE = "-6"
+
+MOKOR = "moko10"
+PR = "${MOKOR}-r0"
+VANILLA_VERSION = "2.6.21.1"
+
+SRC_URI += "svn://svn.openmoko.org/trunk/src/target/kernel;module=patches;proto=http"
+
diff --git a/packages/linux/linux-hackndev-2.6/.mtn2git_empty b/packages/linux/linux-hackndev-2.6/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-hackndev-2.6/.mtn2git_empty
diff --git a/packages/linux/linux-hackndev-2.6/palmld/.mtn2git_empty b/packages/linux/linux-hackndev-2.6/palmld/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-hackndev-2.6/palmld/.mtn2git_empty
diff --git a/packages/linux/linux-hackndev-2.6/palmld/defconfig b/packages/linux/linux-hackndev-2.6/palmld/defconfig
new file mode 100644
index 0000000000..ff2d62f2c7
--- /dev/null
+++ b/packages/linux/linux-hackndev-2.6/palmld/defconfig
@@ -0,0 +1,1300 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20-hnd0
+# Tue Feb 27 17:46:56 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_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 is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_INITRAMFS_SOURCE is not set
+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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# 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=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"
+
+#
+# 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 is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X50 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+CONFIG_MACH_XSCALE_PALMLD=y
+CONFIG_PALMLD_PCMCIA=m
+# CONFIG_PALMLD_USB is not set
+CONFIG_PALMLD_IDE=m
+# CONFIG_MACH_XSCALE_PALMTREO650 is not set
+# CONFIG_MACH_XSCALE_TREO680 is not set
+# CONFIG_MACH_T700WX is not set
+# CONFIG_MACH_TUNGE2 is not set
+# CONFIG_MACH_T3XSCALE is not set
+CONFIG_GPIOED=m
+CONFIG_GPIOEDNG=m
+# CONFIG_MACH_XSCALE_PALMTT5 is not set
+# CONFIG_MACH_XSCALE_PALMTX is not set
+# CONFIG_MACH_PALMZ72 is not set
+# CONFIG_MACH_OMAP_PALMTC is not set
+# CONFIG_MACH_ZIRE31 is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_RTC_EPOCH=1904
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_DCACHE_DISABLE is not set
+CONFIG_IWMMXT=y
+# CONFIG_ARMBOOT_PROC is not set
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=m
+CONFIG_PCMCIA_DEBUG=y
+CONFIG_PCMCIA=m
+# CONFIG_PCMCIA_LOAD_CIS is not set
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=m
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=100
+# 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=""
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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 is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_NET_KEY=y
+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 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+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
+
+#
+# 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_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=y
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=y
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=y
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_PXA_FICP=m
+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 is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
+# CONFIG_BT_HIDP is not set
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
+# CONFIG_BT_HCIBLUECARD is not set
+# CONFIG_BT_HCIBTUART 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 is not set
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+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=m
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+# CONFIG_MTD_PARTITIONS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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=m
+CONFIG_MTD_JEDECPROBE=m
+CONFIG_MTD_GEN_PROBE=m
+# 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=m
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
+CONFIG_MTD_CFI_UTIL=m
+CONFIG_MTD_RAM=m
+CONFIG_MTD_ROM=m
+CONFIG_MTD_ABSENT=m
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_XIP 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_IMPA7 is not set
+# CONFIG_MTD_SHARP_SL 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
+
+#
+# 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_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=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# 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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDECS is not set
+# 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
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_IDE_ARM 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 is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# 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
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_ACX is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# 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_SLIP is not set
+CONFIG_SLHC=m
+# 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS 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=y
+CONFIG_INPUT_TSDEV_SCREEN_X=320
+CONFIG_INPUT_TSDEV_SCREEN_Y=480
+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_GPIO_KEYS is not set
+CONFIG_KEYBOARD_PXA27x=y
+CONFIG_KEYBOARD_PALMIR=y
+# CONFIG_KEYBOARD_PALMWK is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# 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_ADC is not set
+# CONFIG_TOUCHSCREEN_ADC_DEBOUNCE is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+CONFIG_TOUCHSCREEN_WM97XX=m
+# CONFIG_TOUCHSCREEN_WM9705 is not set
+CONFIG_TOUCHSCREEN_WM9712=y
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_WM97XX_PXA is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=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_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+# 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_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+# CONFIG_SERIAL_PXA_IR is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+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=m
+# CONFIG_NVRAM is not set
+CONFIG_SA1100_RTC=y
+# CONFIG_DTLK 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM 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 is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Hardware Monitoring - Battery
+#
+CONFIG_BATTERY_MONITOR=y
+# CONFIG_ADC_BATTERY is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+CONFIG_BATTCHARGE_MONITOR=m
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_ADC_AD7877 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+CONFIG_LEDS_PALMLD=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+# CONFIG_LEDS_TRIGGER_MMC_CARD is not set
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_SHARED is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_LCD_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_PXAPWM=m
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY 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_SEQUENCER_OSS=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_AC97_CODEC=m
+# 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
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2xx_I2SOUND is not set
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+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
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS 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=y
+# 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 is not set
+# 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 is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_SQUASHFS 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
+# CONFIG_UNION_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# 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
+# 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="utf-8"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=y
+CONFIG_NLS_CODEPAGE_775=y
+CONFIG_NLS_CODEPAGE_850=y
+CONFIG_NLS_CODEPAGE_852=y
+CONFIG_NLS_CODEPAGE_855=y
+CONFIG_NLS_CODEPAGE_857=y
+CONFIG_NLS_CODEPAGE_860=y
+CONFIG_NLS_CODEPAGE_861=y
+CONFIG_NLS_CODEPAGE_862=y
+CONFIG_NLS_CODEPAGE_863=y
+CONFIG_NLS_CODEPAGE_864=y
+CONFIG_NLS_CODEPAGE_865=y
+CONFIG_NLS_CODEPAGE_866=y
+CONFIG_NLS_CODEPAGE_869=y
+# 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=y
+CONFIG_NLS_CODEPAGE_1250=y
+CONFIG_NLS_CODEPAGE_1251=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=y
+CONFIG_NLS_ISO8859_3=y
+CONFIG_NLS_ISO8859_4=y
+CONFIG_NLS_ISO8859_5=y
+CONFIG_NLS_ISO8859_6=y
+CONFIG_NLS_ISO8859_7=y
+CONFIG_NLS_ISO8859_9=y
+CONFIG_NLS_ISO8859_13=y
+CONFIG_NLS_ISO8859_14=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_NLS_KOI8_R=y
+CONFIG_NLS_KOI8_U=y
+CONFIG_NLS_UTF8=y
+
+#
+# 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_SMALLOOPS is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+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
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_MANAGER=m
+# 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_MD5 is not set
+# 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=m
+CONFIG_CRYPTO_CBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_DES 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=m
+# 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_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-hackndev-2.6/palmtt3/.mtn2git_empty b/packages/linux/linux-hackndev-2.6/palmtt3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-hackndev-2.6/palmtt3/.mtn2git_empty
diff --git a/packages/linux/linux-hackndev-2.6/palmtt3/defconfig b/packages/linux/linux-hackndev-2.6/palmtt3/defconfig
new file mode 100644
index 0000000000..e10d5b792b
--- /dev/null
+++ b/packages/linux/linux-hackndev-2.6/palmtt3/defconfig
@@ -0,0 +1,1383 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20-hnd0
+# Mon Mar 5 03:36:29 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_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=y
+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 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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+
+#
+# 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 is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X50 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_XSCALE_PALMTREO650 is not set
+# CONFIG_MACH_XSCALE_TREO680 is not set
+# CONFIG_MACH_T700WX is not set
+# CONFIG_MACH_TUNGE2 is not set
+CONFIG_MACH_T3XSCALE=y
+CONFIG_PALM_T3_BUTTONS=y
+CONFIG_PALM_T3_BATTERY=m
+# CONFIG_PALM_T3_GPIOED is not set
+# CONFIG_PALM_T3_GPIOEDNG is not set
+# CONFIG_MACH_XSCALE_PALMTT5 is not set
+# CONFIG_MACH_XSCALE_PALMTX is not set
+# CONFIG_MACH_PALMZ72 is not set
+CONFIG_GPIOED=m
+CONFIG_GPIOEDNG=m
+# CONFIG_MACH_OMAP_PALMTC is not set
+# CONFIG_MACH_ZIRE31 is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA25x=y
+CONFIG_PXA_RTC_EPOCH=1904
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_DCACHE_DISABLE is not set
+# CONFIG_IWMMXT is not set
+# CONFIG_ARMBOOT_PROC is not set
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="mem=64M root=/dev/ram0 init=/linuxrc initrd=0xA0400000,900332 max_loop=255"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=m
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+CONFIG_CPU_FREQ_PXA=y
+CONFIG_PXA25x_ALTERNATE_FREQS=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=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_DPM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM=m
+
+#
+# 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_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 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=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 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
+
+#
+# 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_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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_PXA_FICP=m
+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_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIVHCI=m
+# CONFIG_IEEE80211 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
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=m
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=m
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
+# 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=m
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=m
+# 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=m
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=m
+# 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
+# CONFIG_MTD_XIP 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_PALMT3 is not set
+# CONFIG_MTD_SHARP_SL 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
+
+#
+# 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_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=1
+CONFIG_BLK_DEV_RAM_SIZE=3072
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# 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 is not set
+# CONFIG_PPP_BSDCOMP is not set
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+CONFIG_NETPOLL_RX=y
+CONFIG_NETPOLL_TRAP=y
+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_MOUSEDEV_PSAUX 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=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=y
+CONFIG_GPIO_KEYS=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_TSC2101=m
+# 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_ADC is not set
+# CONFIG_TOUCHSCREEN_ADC_DEBOUNCE is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_WM97XX is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+CONFIG_SERIO_RAW=y
+# 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+# CONFIG_SERIAL_PXA_CONSOLE is not set
+CONFIG_SERIAL_PXA_COUNT=4
+# CONFIG_SERIAL_PXA_IR is not set
+CONFIG_SERIAL_CORE=y
+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=m
+# CONFIG_NVRAM is not set
+CONFIG_SA1100_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 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=m
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+CONFIG_I2C_ALGOPXA=y
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_I2C_ADCM2650 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+CONFIG_TPS65010=m
+# 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 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=m
+# CONFIG_HWMON_VID is not set
+# 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_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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
+
+#
+# Hardware Monitoring - Battery
+#
+CONFIG_BATTERY_MONITOR=m
+CONFIG_ADC_BATTERY=m
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+CONFIG_SOC_TSC2101=m
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+CONFIG_BATTCHARGE_MONITOR=m
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_ADC_AD7877 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_SHARED=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+CONFIG_FONT_6x11=y
+# 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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_PXAPWM=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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 is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DUMMY=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2xx_I2SOUND=m
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_WBSD_PALMT3=m
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc"
+# 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+CONFIG_EXT2_FS_XIP=y
+CONFIG_FS_XIP=y
+# 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 is not set
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+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=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=852
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-2"
+# 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=m
+
+#
+# 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 is not set
+# CONFIG_CRAMFS is not set
+CONFIG_SQUASHFS=m
+CONFIG_SQUASHFS_EMBEDDED=y
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=4
+CONFIG_SQUASHFS_VMALLOC=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
+CONFIG_UNION_FS=m
+# CONFIG_UNION_FS_XATTR 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 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# 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
+# 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=y
+CONFIG_NLS_DEFAULT="iso8859-2"
+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=y
+# 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=m
+# 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=y
+# CONFIG_NLS_CODEPAGE_1251 is not set
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=y
+# 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=m
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# 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=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_SMALLOOPS is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+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
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_MANAGER=m
+# 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_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=m
+CONFIG_CRYPTO_CBC=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=m
+# 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_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=m
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-hackndev-2.6/palmtx/.mtn2git_empty b/packages/linux/linux-hackndev-2.6/palmtx/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-hackndev-2.6/palmtx/.mtn2git_empty
diff --git a/packages/linux/linux-hackndev-2.6/palmtx/busybox-config b/packages/linux/linux-hackndev-2.6/palmtx/busybox-config
new file mode 100644
index 0000000000..1f4708b018
--- /dev/null
+++ b/packages/linux/linux-hackndev-2.6/palmtx/busybox-config
@@ -0,0 +1,571 @@
+#
+# Automatically generated make config: don't edit
+#
+HAVE_DOT_CONFIG=y
+
+#
+# General Configuration
+#
+# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
+CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+# CONFIG_FEATURE_VERBOSE_USAGE is not set
+# CONFIG_FEATURE_INSTALLER is not set
+# CONFIG_LOCALE_SUPPORT is not set
+# CONFIG_FEATURE_DEVFS is not set
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_SUID=y
+# CONFIG_FEATURE_SUID_CONFIG is not set
+# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
+# CONFIG_SELINUX is not set
+
+#
+# Build Options
+#
+CONFIG_STATIC=y
+# CONFIG_LFS is not set
+EXTRA_CFLAGS_OPTIONS=""
+CONFIG_FEATURE_SUSv2=y
+# CONFIG_FEATURE_SUSv2_OBSOLETE is not set
+
+#
+# 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"
+
+#
+# Archival Utilities
+#
+# CONFIG_AR is not set
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+# CONFIG_BUNZIP2 is not set
+# CONFIG_CPIO is not set
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+# CONFIG_GUNZIP is not set
+# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
+# CONFIG_GZIP is not set
+# CONFIG_RPM2CPIO is not set
+# CONFIG_RPM is not set
+# CONFIG_TAR is not set
+# CONFIG_FEATURE_TAR_CREATE is not set
+# CONFIG_FEATURE_TAR_BZIP2 is not set
+# CONFIG_FEATURE_TAR_FROM is not set
+# CONFIG_FEATURE_TAR_GZIP is not set
+# CONFIG_FEATURE_TAR_COMPRESS is not set
+# CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY is not set
+# CONFIG_FEATURE_TAR_GNU_EXTENSIONS is not set
+# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
+# CONFIG_UNCOMPRESS is not set
+# CONFIG_UNZIP is not set
+# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
+# CONFIG_FEATURE_DEB_TAR_GZ is not set
+# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
+
+#
+# Coreutils
+#
+# CONFIG_BASENAME is not set
+# CONFIG_CAL is not set
+CONFIG_CAT=y
+# CONFIG_CHGRP is not set
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+# CONFIG_CHROOT is not set
+# CONFIG_CMP is not set
+# CONFIG_COMM is not set
+CONFIG_CP=y
+# CONFIG_CUT is not set
+# CONFIG_DATE is not set
+# CONFIG_FEATURE_DATE_ISOFMT is not set
+# CONFIG_DD is not set
+# CONFIG_DF is not set
+# CONFIG_DIRNAME is not set
+# CONFIG_DOS2UNIX is not set
+# CONFIG_UNIX2DOS is not set
+# CONFIG_DU is not set
+# CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K is not set
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+CONFIG_EXPR=y
+CONFIG_FALSE=y
+# CONFIG_FOLD is not set
+# CONFIG_HEAD is not set
+# CONFIG_FEATURE_FANCY_HEAD is not set
+# CONFIG_HOSTID is not set
+# CONFIG_ID is not set
+# CONFIG_INSTALL is not set
+# CONFIG_LENGTH is not set
+CONFIG_LN=y
+# CONFIG_LOGNAME is not set
+# CONFIG_LS is not set
+# CONFIG_FEATURE_LS_FILETYPES is not set
+# CONFIG_FEATURE_LS_FOLLOWLINKS is not set
+# CONFIG_FEATURE_LS_RECURSIVE is not set
+# CONFIG_FEATURE_LS_SORTFILES is not set
+# CONFIG_FEATURE_LS_TIMESTAMPS is not set
+# CONFIG_FEATURE_LS_USERNAME is not set
+# CONFIG_FEATURE_LS_COLOR is not set
+# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
+# CONFIG_MD5SUM is not set
+CONFIG_MKDIR=y
+# CONFIG_MKFIFO is not set
+CONFIG_MKNOD=y
+CONFIG_MV=y
+# CONFIG_NICE is not set
+# CONFIG_NOHUP is not set
+# CONFIG_OD is not set
+# CONFIG_PRINTENV is not set
+# CONFIG_PRINTF is not set
+CONFIG_PWD=y
+# CONFIG_REALPATH is not set
+CONFIG_RM=y
+CONFIG_RMDIR=y
+# CONFIG_SEQ is not set
+# CONFIG_SHA1SUM is not set
+CONFIG_SLEEP=y
+# CONFIG_FEATURE_FANCY_SLEEP is not set
+# CONFIG_SORT is not set
+# CONFIG_FEATURE_SORT_BIG is not set
+CONFIG_STAT=y
+# CONFIG_FEATURE_STAT_FORMAT is not set
+# CONFIG_STTY is not set
+# CONFIG_SUM is not set
+CONFIG_SYNC=y
+# CONFIG_TAIL is not set
+# CONFIG_FEATURE_FANCY_TAIL is not set
+# CONFIG_TEE is not set
+# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
+CONFIG_TEST=y
+
+#
+# test (forced enabled for use with shell)
+#
+# CONFIG_FEATURE_TEST_64 is not set
+# CONFIG_TOUCH is not set
+# CONFIG_TR is not set
+# CONFIG_FEATURE_TR_CLASSES is not set
+# CONFIG_FEATURE_TR_EQUIV is not set
+CONFIG_TRUE=y
+# CONFIG_TTY is not set
+# CONFIG_UNAME is not set
+# CONFIG_UNIQ is not set
+# CONFIG_USLEEP is not set
+# CONFIG_UUDECODE is not set
+# CONFIG_UUENCODE is not set
+# CONFIG_WATCH is not set
+# CONFIG_WC is not set
+# CONFIG_WHO is not set
+# CONFIG_WHOAMI is not set
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+# CONFIG_FEATURE_AUTOWIDTH is not set
+# CONFIG_FEATURE_HUMAN_READABLE is not set
+# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
+
+#
+# Console Utilities
+#
+# CONFIG_CHVT is not set
+# CONFIG_CLEAR is not set
+# CONFIG_DEALLOCVT is not set
+# CONFIG_DUMPKMAP is not set
+# CONFIG_LOADFONT is not set
+# CONFIG_LOADKMAP is not set
+# CONFIG_OPENVT is not set
+# CONFIG_RESET is not set
+# CONFIG_SETCONSOLE is not set
+# CONFIG_SETKEYCODES is not set
+
+#
+# Debian Utilities
+#
+# CONFIG_MKTEMP is not set
+# CONFIG_PIPE_PROGRESS is not set
+# CONFIG_READLINK is not set
+# CONFIG_FEATURE_READLINK_FOLLOW is not set
+# CONFIG_RUN_PARTS is not set
+# CONFIG_START_STOP_DAEMON is not set
+# CONFIG_WHICH is not set
+
+#
+# Linux Ext2 FS Progs
+#
+# CONFIG_CHATTR is not set
+CONFIG_E2FSCK=y
+# CONFIG_FSCK is not set
+# CONFIG_LSATTR is not set
+# CONFIG_MKE2FS is not set
+# CONFIG_TUNE2FS is not set
+# CONFIG_E2LABEL is not set
+# CONFIG_FINDFS is not set
+
+#
+# Editors
+#
+CONFIG_AWK=y
+# CONFIG_FEATURE_AWK_MATH is not set
+# CONFIG_PATCH is not set
+CONFIG_SED=y
+# CONFIG_VI is not set
+# CONFIG_FEATURE_VI_COLON is not set
+# CONFIG_FEATURE_VI_YANKMARK is not set
+# CONFIG_FEATURE_VI_SEARCH is not set
+# CONFIG_FEATURE_VI_USE_SIGNALS is not set
+# 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 is not set
+# CONFIG_FEATURE_VI_OPTIMIZE_CURSOR is not set
+
+#
+# Finding Utilities
+#
+# CONFIG_FIND is not set
+# CONFIG_FEATURE_FIND_MTIME is not set
+# CONFIG_FEATURE_FIND_PERM is not set
+# CONFIG_FEATURE_FIND_TYPE is not set
+# CONFIG_FEATURE_FIND_XDEV is not set
+# CONFIG_FEATURE_FIND_NEWER is not set
+# CONFIG_FEATURE_FIND_INUM is not set
+# CONFIG_FEATURE_FIND_EXEC is not set
+# CONFIG_GREP is not set
+# CONFIG_FEATURE_GREP_EGREP_ALIAS is not set
+# CONFIG_FEATURE_GREP_FGREP_ALIAS is not set
+# CONFIG_FEATURE_GREP_CONTEXT is not set
+# CONFIG_XARGS is not set
+# 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_FEATURE_USE_INITTAB is not set
+# CONFIG_FEATURE_INITRD is not set
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+# CONFIG_FEATURE_INIT_SCTTY is not set
+# CONFIG_FEATURE_EXTRA_QUIET is not set
+# CONFIG_HALT is not set
+# CONFIG_MESG is not set
+# CONFIG_POWEROFF is not set
+# CONFIG_REBOOT 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 is not set
+# 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
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+# CONFIG_CROND is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+# CONFIG_CRONTAB is not set
+# CONFIG_DC is not set
+# 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_EJECT is not set
+# CONFIG_LAST is not set
+# CONFIG_LESS is not set
+# CONFIG_FEATURE_LESS_BRACKETS is not set
+# CONFIG_FEATURE_LESS_FLAGS is not set
+# 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
+# BB_APPLET_RUNLEVEL is not set
+# CONFIG_RX is not set
+# CONFIG_STRINGS is not set
+# CONFIG_SETSID is not set
+# CONFIG_TIME is not set
+# CONFIG_WATCHDOG 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 is not set
+# CONFIG_LSMOD is not set
+# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
+# CONFIG_MODPROBE is not set
+# CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS is not set
+
+#
+# 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
+
+#
+# Networking Utilities
+#
+# CONFIG_FEATURE_IPV6 is not set
+# CONFIG_ARPING 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_HOSTNAME is not set
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
+# CONFIG_FEATURE_HTTPD_CGI 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 is not set
+# CONFIG_FEATURE_IFCONFIG_STATUS is not set
+# CONFIG_FEATURE_IFCONFIG_SLIP is not set
+# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
+# CONFIG_FEATURE_IFCONFIG_HW is not set
+# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
+# CONFIG_IFUPDOWN is not set
+# CONFIG_FEATURE_IFUPDOWN_IP is not set
+# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
+# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set
+# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
+# CONFIG_FEATURE_IFUPDOWN_IPX is not set
+# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
+# CONFIG_INETD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+# CONFIG_IP is not set
+# CONFIG_FEATURE_IP_ADDRESS is not set
+# CONFIG_FEATURE_IP_LINK is not set
+# CONFIG_FEATURE_IP_ROUTE is not set
+# CONFIG_FEATURE_IP_TUNNEL is not set
+# CONFIG_IPCALC is not set
+# CONFIG_FEATURE_IPCALC_FANCY is not set
+# CONFIG_IPADDR is not set
+# CONFIG_IPLINK is not set
+# CONFIG_IPROUTE is not set
+# CONFIG_IPTUNNEL is not set
+# CONFIG_NAMEIF is not set
+# CONFIG_NC is not set
+# CONFIG_NC_GAPING_SECURITY_HOLE is not set
+# CONFIG_NETSTAT is not set
+# CONFIG_NSLOOKUP is not set
+# CONFIG_PING is not set
+# CONFIG_FEATURE_FANCY_PING is not set
+# CONFIG_PING6 is not set
+# CONFIG_FEATURE_FANCY_PING6 is not set
+# CONFIG_ROUTE is not set
+# CONFIG_TELNET is not set
+# CONFIG_FEATURE_TELNET_TTYPE is not set
+# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
+# CONFIG_TELNETD is not set
+# CONFIG_FEATURE_TELNETD_INETD is not set
+# CONFIG_TFTP is not set
+# CONFIG_FEATURE_TFTP_GET is not set
+# CONFIG_FEATURE_TFTP_PUT is not set
+# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
+# CONFIG_FEATURE_TFTP_DEBUG is not set
+# CONFIG_TRACEROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+# CONFIG_VCONFIG is not set
+# CONFIG_WGET is not set
+# CONFIG_FEATURE_WGET_STATUSBAR is not set
+# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
+# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
+
+#
+# udhcp Server/Client
+#
+# CONFIG_UDHCPD is not set
+# CONFIG_UDHCPC is not set
+# CONFIG_DUMPLEASES is not set
+# CONFIG_FEATURE_UDHCP_SYSLOG is not set
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+# CONFIG_ZCIP is not set
+
+#
+# Process Utilities
+#
+# CONFIG_FREE is not set
+# CONFIG_FUSER is not set
+# CONFIG_KILL is not set
+# CONFIG_KILLALL is not set
+# CONFIG_PIDOF is not set
+# CONFIG_FEATURE_PIDOF_SINGLE is not set
+# CONFIG_FEATURE_PIDOF_OMIT is not set
+# CONFIG_PS is not set
+# CONFIG_FEATURE_PS_WIDE is not set
+# CONFIG_RENICE is not set
+# CONFIG_BB_SYSCTL is not set
+# CONFIG_TOP is not set
+# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set
+# CONFIG_UPTIME is not set
+
+#
+# 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=y
+# CONFIG_ASH_GETOPTS is not set
+# CONFIG_ASH_CMDCMD is not set
+# CONFIG_ASH_BUILTIN_ECHO 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 is not set
+# CONFIG_HUSH is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# Bourne Shell Options
+#
+# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
+# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
+# CONFIG_FEATURE_COMMAND_EDITING is not set
+# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
+CONFIG_FEATURE_COMMAND_HISTORY=0
+# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
+# CONFIG_FEATURE_COMMAND_TAB_COMPLETION is not set
+# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
+# CONFIG_FEATURE_SH_FANCY_PROMPT is not set
+
+#
+# System Logging Utilities
+#
+# CONFIG_SYSLOGD is not set
+# CONFIG_FEATURE_ROTATE_LOGFILE is not set
+# CONFIG_FEATURE_REMOTE_LOG is not set
+# CONFIG_FEATURE_IPC_SYSLOG is not set
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
+# CONFIG_LOGREAD is not set
+# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
+# CONFIG_KLOGD is not set
+# CONFIG_LOGGER is not set
+
+#
+# Linux System Utilities
+#
+# CONFIG_DMESG is not set
+# CONFIG_FBSET is not set
+# CONFIG_FEATURE_FBSET_FANCY is not set
+# CONFIG_FEATURE_FBSET_READMODE is not set
+# CONFIG_FDFLUSH is not set
+# CONFIG_FDFORMAT is not set
+# CONFIG_FDISK is not set
+# FDISK_SUPPORT_LARGE_DISKS is not set
+# CONFIG_FEATURE_FDISK_WRITABLE is not set
+# 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 is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
+# CONFIG_GETOPT is not set
+# CONFIG_HEXDUMP is not set
+# CONFIG_HWCLOCK is not set
+# CONFIG_FEATURE_HWCLOCK_LONGOPTIONS is not set
+# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
+# CONFIG_IPCRM is not set
+# CONFIG_IPCS is not set
+# CONFIG_LOSETUP is not set
+# CONFIG_MDEV is not set
+# CONFIG_FEATURE_MDEV_CONF is not set
+# CONFIG_MKSWAP is not set
+# CONFIG_MORE is not set
+# CONFIG_FEATURE_USE_TERMIOS is not set
+# CONFIG_PIVOT_ROOT is not set
+CONFIG_SWITCH_ROOT=y
+# CONFIG_RDATE is not set
+# CONFIG_READPROFILE is not set
+CONFIG_SWAPONOFF=y
+CONFIG_MOUNT=y
+# CONFIG_FEATURE_MOUNT_NFS is not set
+CONFIG_UMOUNT=y
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_NO_DEBUG_LIB is not set
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
diff --git a/packages/linux/linux-hackndev-2.6/palmtx/defconfig b/packages/linux/linux-hackndev-2.6/palmtx/defconfig
new file mode 100644
index 0000000000..68dcca286d
--- /dev/null
+++ b/packages/linux/linux-hackndev-2.6/palmtx/defconfig
@@ -0,0 +1,1221 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20-hnd0
+# Wed Mar 28 10:35:44 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_IPC_NS is not set
+CONFIG_POSIX_MQUEUE=y
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+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=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+# CONFIG_IOSCHED_DEADLINE is not set
+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"
+
+#
+# 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 is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X50 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_XSCALE_PALMTREO650 is not set
+# CONFIG_MACH_XSCALE_TREO680 is not set
+# CONFIG_MACH_T700WX is not set
+# CONFIG_MACH_TUNGE2 is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_MACH_XSCALE_PALMTT5 is not set
+CONFIG_MACH_XSCALE_PALMTX=y
+# CONFIG_PALMTX_PCMCIA is not set
+# CONFIG_PALMTX_DEBUG is not set
+CONFIG_PALMTX_BATTERY=m
+CONFIG_PALMTX_PM=y
+# CONFIG_MACH_PALMZ72 is not set
+# CONFIG_MACH_OMAP_PALMTC is not set
+# CONFIG_MACH_ZIRE31 is not set
+CONFIG_GPIOED=m
+CONFIG_GPIOEDNG=m
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA27x=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_DCACHE_DISABLE is not set
+CONFIG_IWMMXT=y
+# CONFIG_ARMBOOT_PROC is not set
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+
+#
+# Bus support
+#
+
+#
+# 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="mem=32M"
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_DPM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+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_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 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
+
+#
+# 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_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=y
+
+#
+# IrDA protocols
+#
+# CONFIG_IRLAN is not set
+# CONFIG_IRNET is not set
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_PXA_FICP=y
+CONFIG_BT=m
+# CONFIG_BT_L2CAP is not set
+# CONFIG_BT_SCO is not set
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUART=m
+# CONFIG_BT_HCIUART_H4 is not set
+# CONFIG_BT_HCIUART_BCSP 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_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 is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# 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
+#
+
+#
+# Block devices
+#
+# 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=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_SMC911X is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=y
+# CONFIG_PPP_MULTILINK is not set
+# 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_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
+
+#
+# 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=y
+CONFIG_INPUT_TSDEV_SCREEN_X=320
+CONFIG_INPUT_TSDEV_SCREEN_Y=480
+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_GPIO_KEYS is not set
+CONFIG_KEYBOARD_PXA27x=y
+# CONFIG_KEYBOARD_PALMWK is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 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_ADC is not set
+# CONFIG_TOUCHSCREEN_ADC_DEBOUNCE is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+CONFIG_TOUCHSCREEN_WM97XX=y
+# CONFIG_TOUCHSCREEN_WM9705 is not set
+CONFIG_TOUCHSCREEN_WM9712=y
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_WM97XX_PXA is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_LIBPS2 is not set
+# 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_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+# CONFIG_SERIAL_PXA_IR is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+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=m
+# CONFIG_NVRAM is not set
+CONFIG_SA1100_RTC=m
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=y
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Hardware Monitoring - Battery
+#
+CONFIG_BATTERY_MONITOR=y
+# CONFIG_ADC_BATTERY is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+# CONFIG_BATTCHARGE_MONITOR is not set
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_ADC_AD7877 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+# CONFIG_LEDS_TRIGGER_HWTIMER is not set
+CONFIG_LEDS_TRIGGER_MMC_CARD=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+# CONFIG_LEDS_TRIGGER_SHARED is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=y
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+CONFIG_VIDEO_ADV_DEBUG=y
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_PXA_CAMERA is not set
+
+#
+# Radio Adapters
+#
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_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 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
+
+#
+# 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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_PXAPWM=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=y
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2xx_I2SOUND is not set
+CONFIG_SND_PXA2XX_PCM=y
+CONFIG_SND_PXA2XX_AC97=y
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=y
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+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
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA27X_DMA is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=m
+CONFIG_RTC_EPOCH=1970
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 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 is not set
+# 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=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_CRAMFS is not set
+CONFIG_SQUASHFS=y
+CONFIG_SQUASHFS_EMBEDDED=y
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_SQUASHFS_VMALLOC is not set
+# CONFIG_SQUASHFS_LZMA 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
+# CONFIG_UNION_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# 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
+# 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=y
+# 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=y
+# 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=y
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# 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_SMALLOOPS 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=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_MANAGER=m
+# 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_MD5 is not set
+# 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=m
+CONFIG_CRYPTO_CBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_DES 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 is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-hackndev-2.6/palmtx/init b/packages/linux/linux-hackndev-2.6/palmtx/init
new file mode 100755
index 0000000000..fe4a191603
--- /dev/null
+++ b/packages/linux/linux-hackndev-2.6/palmtx/init
@@ -0,0 +1,195 @@
+#!/bin/sh
+# $Id: $
+# authors: Cristiano P.
+#
+
+# TODO: echo only if VERBOSE
+# TODO: check the whole thing ...
+
+# defaults:
+VERBOSE=true
+FORCE_FSCK=false
+UMOUNT_FILES_DEV=false
+
+FILES_DEV=/dev/mmcblk0p1
+FILES_MNT=/mnt/mmc
+ROOT_DEV=$FILES_MNT/opie-image-v0.8.4-palmtx.rootfs.ext2
+SWAP_DEV=none
+
+MODULES_DIR="/lib/modules"
+POST_MODULES_SCRIPT=""
+
+echo mounting sysfs
+mount -n -t sysfs sys /sys >/dev/null 2>&1 || mount -t sysfs sys /sys
+
+echo mounting proc filesystem
+mount -n -t proc none /proc >/dev/null 2>&1 || mount -t proc none /proc
+
+# try to get model name from /proc/cpuinfo
+MODEL_NAME=`awk -F: '/Hardware/ { print $2 }' </proc/cpuinfo | sed 's/^ *//;s/ *$//'`
+
+[ $VERBOSE = "true" ] && echo Model name: $MODEL_NAME
+
+# device specific configuration
+case $MODEL_NAME in
+ "Palm TX")
+ FILES_MNT=/media/mmc1
+ ;;
+
+ "Palm LifeDrive")
+ HDD_DEV=/dev/hda
+ HDD_OFFSET=91814912
+ LOOP_DEV=/dev/loop0
+ ;;
+
+ *)
+ ;;
+esac
+
+echo initram init started
+
+if [ -f /etc/modules.initrd ]; then
+ echo loading initial modules
+ cat /etc/modules.initrd | while read module; do
+ echo loading module: $module
+ /sbin/insmod $MODULES_DIR/$module > /dev/null
+ done
+fi
+
+
+# device specific actions ...
+case $MODEL_NAME in
+ "Palm LifeDrive")
+ echo Mounting LifeDrive data partition...
+ losetup -o $HDD_OFFSET $LOOP_DEV $HDD_DEV
+ FILES_DEV=$LOOP_DEV
+ FILES_MNT=/mnt/hda
+ ;;
+
+ *)
+ ;;
+esac
+
+
+if [ -b $FILES_DEV ]; then
+ FILES_DEV_MOUNTED=false
+ echo -n "attempting to mount $FILES_DEV: "
+ /bin/mount -t vfat -o rw $FILES_DEV $FILES_MNT > /dev/null 2>&1
+ [ $? ] && FILES_DEV_MOUNTED=true
+
+ if [ $FILES_DEV_MOUNTED = "true" ]; then
+ echo "mounted on $FILES_MNT."
+ /bin/sleep 1
+ echo -n "sourcing linux.boot.cfg: "
+ # todo: check parameters/files?
+ if [ -f $FILES_MNT/linux.boot.cfg ]; then
+ echo found.
+ . $FILES_MNT/linux.boot.cfg
+
+ if [ -f $FILES_MNT/modules.initrd ]; then
+ echo loading additional modules now:
+ cat $FILES_MNT/modules.initrd | while read module; do
+ loading module: $module
+ /sbin/insmod $MODULES_DIR/$module > /dev/null
+ done
+ fi
+ else
+ echo not found.
+ fi
+ else
+ echo "could not mount."
+ FILES_DEV_MOUNTED=false
+ fi
+else
+ echo device $FILES_DEV not found.
+ FILES_DEV_MOUNTED=false
+fi
+
+# this script could be used to update the rootfs before booting familiar (new modules, scripts, config, ...)
+echo -n "post_module script: "
+if [ -n "$POST_MODULES_SCRIPT" ]; then
+ if [ -f "$POST_MODULES_SCRIPT" ]; then
+ echo found $POST_MODULES_SCRIPT .
+ $POST_MODULES_SCRIPT
+ fi
+else
+ echo not found.
+fi
+
+# probably swap should/can be enabled by familiar (add to /etc/fstab?)
+# is it the right place to mount swap?
+if [ -n "$SWAP_DEV" -a $SWAP_DEV != "none" ]; then
+ echo -n "mount swap at $SWAP_DEV: "
+
+ if [ -f $SWAP_DEV -o -b $SWAP_DEV ]; then
+ /sbin/swapon $SWAP_DEV > /dev/null 2>&1
+ echo done.
+ else
+ echo not found.
+ fi
+else
+ echo "no swap specified."
+fi
+
+# force fsck if specified
+if [ $FORCE_FSCK = "true" ]; then
+ echo "checking rootfs [$ROOT_DEV]"
+ if [ $VERBOSE = "true" ]; then
+ /sbin/e2fsck -f -y $ROOT_DEV
+ else
+ /sbin/e2fsck -f -y $ROOT_DEV > /dev/null 2>&1
+ fi
+fi
+
+echo -n "mounting rootfs: "
+
+# todo: calculate root dev id? (256*major + minor)
+if [ -f $ROOT_DEV ]; then
+ #echo 0x701 > /proc/sys/kernel/real-root-dev
+ mount -n $ROOT_DEV /newroot -o rw loop 2>/dev/null
+ [ $? ] && ROOT_MOUNTED=true
+ # this shouldn't be possible if image is on FILES_DEV
+ UMOUNT_FILES_DEV=false
+elif [ -b $ROOT_DEV ]; then
+ mount -n $ROOT_DEV /newroot -o rw 2>/dev/null
+ [ $? ] && ROOT_MOUNTED=true
+else
+ echo "not a file or a block device."
+ ROOT_MOUNTED=false
+fi
+
+# TODO: should initial /dev (/oldroot/dev) be unmounted after init by GPE?
+if [ $ROOT_MOUNTED = "true" ]; then
+ echo mounted
+
+ # umount mmc if forced by UMOUNT_FILES_DEV
+ if [ $UMOUNT_FILES_DEV = "true" -a $FILES_DEV_MOUNTED = "true" ]; then
+ umount -l $FILES_DEV
+ [ $? ] && FILES_DEV_MOUNTED=false
+ [ $FILES_DEV_MOUNTED = "false" ] && echo "$FILES_DEV umounted"
+ fi
+
+ # move mmc's mount point on new rootfs
+ if [ $FILES_DEV_MOUNTED = "true" ]; then
+ echo moving $FILES_MNT to /newroot$FILES_MNT
+ mount --move $FILES_MNT /newroot$FILES_MNT
+ fi
+
+ # force umount sys and proc
+ umount -l /sys
+ umount -l /proc
+
+ # method 2: use switch_root (needs initramfs)
+ exec /sbin/switch_root -c /dev/console /newroot /sbin/init 5
+
+ echo "* * * switch_root failed! * * *"
+else
+ echo "failed!"
+ echo could not mount root fs: init failed!
+ echo please, reset, check your configuration and retry.
+ sleep 100000
+fi
+
+# TODO: run ezhikov's keyshell here?
+exec /bin/sh
+
diff --git a/packages/linux/linux-hackndev-2.6/palmtx/initramfs_list b/packages/linux/linux-hackndev-2.6/palmtx/initramfs_list
new file mode 100644
index 0000000000..821a7cc7cc
--- /dev/null
+++ b/packages/linux/linux-hackndev-2.6/palmtx/initramfs_list
@@ -0,0 +1,243 @@
+
+#####################
+# ../initramfs/root
+# Last modified: 1156149630
+
+dir /bin 755 0 0
+file /bin/busybox ../busybox-1.1.0/busybox 4755 0 0
+slink /bin/awk busybox 777 0 0
+slink /bin/ash busybox 777 0 0
+slink /bin/cat busybox 777 0 0
+slink /bin/chgrp busybox 777 0 0
+slink /bin/chmod busybox 777 0 0
+slink /bin/chown busybox 777 0 0
+slink /bin/cp busybox 777 0 0
+slink /bin/df busybox 777 0 0
+slink /bin/dmesg busybox 777 0 0
+slink /bin/echo busybox 777 0 0
+slink /bin/false busybox 777 0 0
+slink /bin/getopt busybox 777 0 0
+slink /bin/grep busybox 777 0 0
+slink /bin/hostname busybox 777 0 0
+slink /bin/kill busybox 777 0 0
+slink /bin/ln busybox 777 0 0
+slink /bin/ls busybox 777 0 0
+slink /bin/mkdir busybox 777 0 0
+slink /bin/mknod busybox 777 0 0
+slink /bin/mktemp busybox 777 0 0
+slink /bin/more busybox 777 0 0
+slink /bin/mount busybox 777 0 0
+slink /bin/mt busybox 777 0 0
+slink /bin/mv busybox 777 0 0
+slink /bin/pidof busybox 777 0 0
+slink /bin/ping busybox 777 0 0
+slink /bin/ps busybox 777 0 0
+slink /bin/pwd busybox 777 0 0
+slink /bin/rm busybox 777 0 0
+slink /bin/rmdir busybox 777 0 0
+slink /bin/sed busybox 777 0 0
+slink /bin/sh busybox 777 0 0
+slink /bin/sleep busybox 777 0 0
+slink /bin/stty busybox 777 0 0
+slink /bin/su busybox 777 0 0
+slink /bin/sync busybox 777 0 0
+slink /bin/touch busybox 777 0 0
+slink /bin/true busybox 777 0 0
+slink /bin/umount busybox 777 0 0
+slink /bin/uname busybox 777 0 0
+slink /bin/stat busybox 777 0 0
+dir /dev 755 0 0
+slink /dev/log /tmp/log 777 0 0
+dir /dev/pts 755 0 0
+dir /dev/shm 755 0 0
+nod /dev/mem 640 0 0 c 1 1
+nod /dev/kmem 640 0 0 c 1 2
+nod /dev/null 666 0 0 c 1 3
+nod /dev/zero 666 0 0 c 1 5
+nod /dev/random 666 0 0 c 1 8
+nod /dev/urandom 666 0 0 c 1 9
+nod /dev/ram 640 0 0 b 1 1
+nod /dev/ram0 640 0 0 b 1 0
+nod /dev/ram1 640 0 0 b 1 1
+nod /dev/ram2 640 0 0 b 1 2
+nod /dev/ram3 640 0 0 b 1 3
+slink /dev/loop0 loop/0 777 0 0
+slink /dev/loop1 loop/1 777 0 0
+nod /dev/rtc 640 0 0 c 10 135
+nod /dev/console 666 0 0 c 5 1
+nod /dev/tty 666 0 0 c 5 0
+nod /dev/tty0 666 0 0 c 4 0
+nod /dev/tty1 666 0 0 c 4 1
+nod /dev/tty2 666 0 0 c 4 2
+nod /dev/tty3 666 0 0 c 4 3
+nod /dev/tty4 666 0 0 c 4 4
+nod /dev/tty5 666 0 0 c 4 5
+nod /dev/tty6 666 0 0 c 4 6
+nod /dev/tty7 666 0 0 c 4 7
+nod /dev/ttyp0 666 0 0 c 3 0
+nod /dev/ttyp1 666 0 0 c 3 1
+nod /dev/ttyp2 666 0 0 c 3 2
+nod /dev/ttyp3 666 0 0 c 3 3
+nod /dev/ttyp4 666 0 0 c 3 4
+nod /dev/ttyp5 666 0 0 c 3 5
+nod /dev/ttyp6 666 0 0 c 3 6
+nod /dev/ttyp7 666 0 0 c 3 7
+nod /dev/ttyp8 666 0 0 c 3 8
+nod /dev/ttyp9 666 0 0 c 3 9
+nod /dev/ptyp0 666 0 0 c 2 0
+nod /dev/ptyp1 666 0 0 c 2 1
+nod /dev/ptyp2 666 0 0 c 2 2
+nod /dev/ptyp3 666 0 0 c 2 3
+nod /dev/ptyp4 666 0 0 c 2 4
+nod /dev/ptyp5 666 0 0 c 2 5
+nod /dev/ptyp6 666 0 0 c 2 6
+nod /dev/ptyp7 666 0 0 c 2 7
+nod /dev/ptyp8 666 0 0 c 2 8
+nod /dev/ptyp9 666 0 0 c 2 9
+nod /dev/ptmx 666 0 0 c 5 2
+nod /dev/ttyP0 666 0 0 c 57 0
+nod /dev/ttyP1 666 0 0 c 57 1
+nod /dev/ttyP2 666 0 0 c 57 2
+nod /dev/ttyP3 666 0 0 c 57 3
+nod /dev/ttyS0 666 0 0 c 4 64
+nod /dev/ttyS1 666 0 0 c 4 65
+nod /dev/ttyS2 666 0 0 c 4 66
+nod /dev/ttyS3 666 0 0 c 4 67
+nod /dev/fb0 640 0 0 c 29 0
+nod /dev/fb1 640 0 0 c 29 32
+nod /dev/fb2 640 0 0 c 29 64
+nod /dev/fb3 640 0 0 c 29 96
+nod /dev/psaux 666 0 0 c 10 1
+dir /dev/input 755 0 0
+nod /dev/input/mice 640 0 0 c 13 63
+nod /dev/input/mouse0 660 0 0 c 13 32
+nod /dev/input/mouse1 660 0 0 c 13 33
+nod /dev/input/mouse2 660 0 0 c 13 34
+nod /dev/input/mouse3 660 0 0 c 13 35
+nod /dev/input/event0 660 0 0 c 13 64
+nod /dev/input/event1 660 0 0 c 13 65
+nod /dev/input/event2 660 0 0 c 13 66
+nod /dev/input/event3 660 0 0 c 13 67
+nod /dev/mtd0 640 0 0 c 90 0
+nod /dev/mtd1 640 0 0 c 90 2
+nod /dev/mtd2 640 0 0 c 90 4
+nod /dev/mtd3 640 0 0 c 90 6
+nod /dev/mtdblock0 640 0 0 b 31 0
+nod /dev/mtdblock1 640 0 0 b 31 1
+nod /dev/mtdblock2 640 0 0 b 31 2
+nod /dev/mtdblock3 640 0 0 b 31 3
+dir /dev/net 755 0 0
+nod /dev/net/tun 660 0 0 c 10 200
+nod /dev/hda 640 0 0 b 3 0
+nod /dev/hda1 640 0 0 b 3 1
+nod /dev/hda2 640 0 0 b 3 2
+nod /dev/hda3 640 0 0 b 3 3
+nod /dev/hda4 640 0 0 b 3 4
+nod /dev/hda5 640 0 0 b 3 5
+nod /dev/hda6 640 0 0 b 3 6
+nod /dev/hda7 640 0 0 b 3 7
+nod /dev/hda8 640 0 0 b 3 8
+nod /dev/hda9 640 0 0 b 3 9
+nod /dev/hda10 640 0 0 b 3 10
+nod /dev/hda11 640 0 0 b 3 11
+nod /dev/hda12 640 0 0 b 3 12
+nod /dev/hda13 640 0 0 b 3 13
+nod /dev/hda14 640 0 0 b 3 14
+nod /dev/hdb 640 0 0 b 3 64
+nod /dev/hdb1 640 0 0 b 3 65
+nod /dev/hdb2 640 0 0 b 3 66
+nod /dev/hdb3 640 0 0 b 3 67
+nod /dev/hdb4 640 0 0 b 3 68
+nod /dev/hdb5 640 0 0 b 3 69
+nod /dev/hdb6 640 0 0 b 3 70
+nod /dev/hdb7 640 0 0 b 3 71
+nod /dev/hdb8 640 0 0 b 3 72
+nod /dev/hdb9 640 0 0 b 3 73
+nod /dev/hdb10 640 0 0 b 3 74
+nod /dev/hdb11 640 0 0 b 3 75
+nod /dev/hdb12 640 0 0 b 3 76
+nod /dev/hdb13 640 0 0 b 3 77
+nod /dev/hdb14 640 0 0 b 3 78
+nod /dev/mmcblk0 666 0 0 b 254 0
+nod /dev/mmcblk0p1 666 0 0 b 254 1
+nod /dev/mmcblk0p2 666 0 0 b 254 2
+nod /dev/mmcblk0p3 666 0 0 b 254 3
+nod /dev/mmcblk0p4 666 0 0 b 254 4
+nod /dev/mmcblk0p5 666 0 0 b 254 5
+nod /dev/mmcblk0p6 666 0 0 b 254 6
+nod /dev/mmcblk0p7 666 0 0 b 254 7
+nod /dev/mmcblk0p8 666 0 0 b 254 8
+nod /dev/mmcblk0p9 666 0 0 b 254 9
+dir /dev/loop 755 0 0
+nod /dev/loop/0 644 0 0 b 7 0
+nod /dev/loop/1 644 0 0 b 7 1
+nod /dev/loop/2 644 0 0 b 7 2
+nod /dev/loop/3 644 0 0 b 7 3
+nod /dev/loop/4 644 0 0 b 7 4
+nod /dev/loop/5 644 0 0 b 7 5
+slink /dev/loop2 loop/2 777 0 0
+slink /dev/loop3 loop/3 777 0 0
+slink /dev/loop4 loop/4 777 0 0
+slink /dev/loop5 loop/5 777 0 0
+dir /etc 755 0 0
+slink /etc/mtab ../proc/mounts 777 0 0
+dir /lib 755 0 0
+dir /lib/modules 755 0 0
+dir /media 755 0 0
+dir /media/mmc1 755 0 0
+dir /mnt 755 0 0
+dir /mnt/mmc 755 0 0
+dir /newroot 755 0 0
+dir /proc 755 0 0
+dir /root 755 0 0
+dir /sbin 755 0 0
+slink /sbin/getty ../bin/busybox 777 0 0
+slink /sbin/halt ../bin/busybox 777 0 0
+slink /sbin/init ../bin/busybox 777 0 0
+slink /sbin/insmod ../bin/busybox 777 0 0
+slink /sbin/klogd ../bin/busybox 777 0 0
+slink /sbin/lsmod ../bin/busybox 777 0 0
+slink /sbin/rmmod ../bin/busybox 777 0 0
+slink /sbin/route ../bin/busybox 777 0 0
+slink /sbin/sulogin ../bin/busybox 777 0 0
+slink /sbin/swapoff ../bin/busybox 777 0 0
+slink /sbin/swapon ../bin/busybox 777 0 0
+slink /sbin/syslogd ../bin/busybox 777 0 0
+slink /sbin/switch_root ../bin/busybox 777 0 0
+slink /sbin/e2fsck ../bin/busybox 777 0 0
+slink /sbin/fsck.ext2 ../bin/busybox 777 0 0
+slink /sbin/fsck.ext3 ../bin/busybox 777 0 0
+dir /sys 755 0 0
+dir /tmp 755 0 0
+dir /usr 755 0 0
+dir /usr/bin 755 0 0
+slink /usr/bin/[ ../../bin/busybox 777 0 0
+slink /usr/bin/[[ ../../bin/busybox 777 0 0
+slink /usr/bin/chvt ../../bin/busybox 777 0 0
+slink /usr/bin/clear ../../bin/busybox 777 0 0
+slink /usr/bin/du ../../bin/busybox 777 0 0
+slink /usr/bin/env ../../bin/busybox 777 0 0
+slink /usr/bin/expr ../../bin/busybox 777 0 0
+slink /usr/bin/find ../../bin/busybox 777 0 0
+slink /usr/bin/free ../../bin/busybox 777 0 0
+slink /usr/bin/hostid ../../bin/busybox 777 0 0
+slink /usr/bin/id ../../bin/busybox 777 0 0
+slink /usr/bin/logger ../../bin/busybox 777 0 0
+slink /usr/bin/logname ../../bin/busybox 777 0 0
+slink /usr/bin/tail ../../bin/busybox 777 0 0
+slink /usr/bin/test ../../bin/busybox 777 0 0
+slink /usr/bin/tty ../../bin/busybox 777 0 0
+slink /usr/bin/uptime ../../bin/busybox 777 0 0
+slink /usr/bin/xargs ../../bin/busybox 777 0 0
+slink /usr/bin/yes ../../bin/busybox 777 0 0
+slink /usr/bin/basename ../../bin/busybox 777 0 0
+slink /usr/bin/cmp ../../bin/busybox 777 0 0
+slink /usr/bin/dc ../../bin/busybox 777 0 0
+slink /usr/bin/dirname ../../bin/busybox 777 0 0
+slink /usr/bin/head ../../bin/busybox 777 0 0
+slink /usr/bin/sort ../../bin/busybox 777 0 0
+slink /usr/bin/strings ../../bin/busybox 777 0 0
+slink /usr/bin/tee ../../bin/busybox 777 0 0
+slink /usr/bin/uniq ../../bin/busybox 777 0 0
+dir /usr/sbin 755 0 0
+file /init ../init 755 0 0
diff --git a/packages/linux/linux-hackndev-2.6/palmz72/.mtn2git_empty b/packages/linux/linux-hackndev-2.6/palmz72/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-hackndev-2.6/palmz72/.mtn2git_empty
diff --git a/packages/linux/linux-hackndev-2.6/palmz72/defconfig b/packages/linux/linux-hackndev-2.6/palmz72/defconfig
new file mode 100644
index 0000000000..c31d272ac6
--- /dev/null
+++ b/packages/linux/linux-hackndev-2.6/palmz72/defconfig
@@ -0,0 +1,1121 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.17-hnd0
+# Sat Feb 3 23:56:17 2007
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+
+#
+# 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=y
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_MINIMAL_OOPS is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_USELIB=y
+# CONFIG_CORE_DUMP is not set
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+# CONFIG_IOSCHED_DEADLINE is not set
+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"
+
+#
+# System Type
+#
+# 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_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# 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_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_ARCH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_XSCALE_PALMTREO650 is not set
+# CONFIG_MACH_XSCALE_TREO680 is not set
+# CONFIG_MACH_T700WX is not set
+# CONFIG_MACH_TUNGE2 is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_MACH_XSCALE_PALMTT5 is not set
+# CONFIG_MACH_XSCALE_PALMTX is not set
+CONFIG_MACH_PALMZ72=y
+CONFIG_PALMZ72_PM=y
+CONFIG_PALMZ72_BATTERY=m
+CONFIG_GPIOED=m
+CONFIG_GPIOEDNG=m
+# CONFIG_MACH_OMAP_PALMTC is not set
+# CONFIG_MACH_ZIRE31 is not set
+# CONFIG_PXA_SHARPSL is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_RTC_EPOCH=1970
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_ARMBOOT_PROC is not set
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Platforms
+#
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_HAMCOP is not set
+
+#
+# Bus support
+#
+
+#
+# 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_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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="mem=32M"
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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=y
+CONFIG_PM_DEBUG=y
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+# CONFIG_PACKET is not set
+CONFIG_UNIX=y
+# 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 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_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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=m
+
+#
+# IrDA protocols
+#
+# CONFIG_IRLAN is not set
+# CONFIG_IRNET is not set
+# CONFIG_IRCOMM is not set
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_PXA_FICP=m
+CONFIG_BT=m
+# CONFIG_BT_L2CAP is not set
+# CONFIG_BT_SCO is not set
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUART=m
+# CONFIG_BT_HCIUART_H4 is not set
+# CONFIG_BT_HCIUART_BCSP 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_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 is not set
+
+#
+# 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
+#
+
+#
+# Block devices
+#
+# 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=4096
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=y
+# CONFIG_PPP_MULTILINK is not set
+# 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_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=320
+CONFIG_INPUT_TSDEV_SCREEN_Y=480
+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_PXA27x=y
+# CONFIG_KEYBOARD_PALMIR is not set
+CONFIG_KEYBOARD_PALMWK=m
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 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_WM97XX=y
+# CONFIG_TOUCHSCREEN_WM9705 is not set
+CONFIG_TOUCHSCREEN_WM9712=y
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_WM97XX_PXA is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_LIBPS2 is not set
+# 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+CONFIG_SA1100_RTC=m
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=y
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+
+#
+# Misc devices
+#
+CONFIG_BATTERY_MONITOR=y
+# CONFIG_BATTCHARGE_MONITOR is not set
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_PALMZ72=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=y
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+CONFIG_VIDEO_ADV_DEBUG=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+
+#
+# Encoders and Decoders
+#
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_MAESTRO 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_FIRMWARE_EDID=y
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_PARAMETERS=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_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
+
+#
+# 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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_PXAPWM=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=y
+CONFIG_SND_AC97_BUS=y
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2xx_I2SOUND is not set
+CONFIG_SND_PXA2XX_PCM=y
+CONFIG_SND_PXA2XX_AC97=y
+
+#
+# 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 is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA27X_DMA is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+# CONFIG_MMC_ASIC3 is not set
+# CONFIG_MMC_WBSD_PALMT3 is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST 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_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 is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_INOTIFY is not set
+# 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=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_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_CRAMFS is not set
+CONFIG_SQUASHFS=y
+CONFIG_SQUASHFS_EMBEDDED=y
+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
+CONFIG_UNION_FS=m
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# 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
+# 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=y
+# 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=y
+# 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=y
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_SMALLOOPS 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 is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# 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_DES 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 is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
diff --git a/packages/linux/linux-hackndev-2.6_svn.bb b/packages/linux/linux-hackndev-2.6_svn.bb
new file mode 100644
index 0000000000..552356e23a
--- /dev/null
+++ b/packages/linux/linux-hackndev-2.6_svn.bb
@@ -0,0 +1,84 @@
+DESCRIPTION = "Hack&Dev's Linux kernel for Palm devices."
+HOMEPAGE = "http://www.hackndev.com/"
+SECTION = "kernel"
+LICENSE = "GPL"
+PR = "r4"
+
+COMPATIBLE_MACHINE = "(palmtt3|palmtx|palmld|palmz72)"
+
+SRC_URI = "svn://svn.sourceforge.net/svnroot/hackndev/linux4palm/linux;module=trunk;proto=https \
+ file://defconfig"
+
+SRC_URI_append_palmtx += "http://www.busybox.net/downloads/busybox-1.1.0.tar.bz2 \
+ file://init \
+ file://initramfs_list \
+ file://busybox-config"
+
+S = "${WORKDIR}/trunk"
+
+K_MAJOR = "2"
+K_MINOR = "6"
+K_MICRO = "20"
+HHV="hnd0"
+PV = "${K_MAJOR}.${K_MINOR}.${K_MICRO}-${HHV}"
+
+inherit kernel
+
+do_configure() {
+
+ if [ -f ${WORKDIR}/defconfig ]; then
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config || die "No configuration for ${MACHINE} available."
+ else
+ install -m 0644 ${S}/arch/arm/configs/${MACHINE}_defconfig ${S}/.config \
+ || die "No default configuration for ${MACHINE} available."
+ fi
+
+ if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
+ echo "CONFIG_AEABI=y" >> ${S}/.config
+ echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
+ else
+ echo "# CONFIG_AEABI is not set" >> ${S}/.config
+ echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
+ fi
+
+ if [ -f ${WORKDIR}/initramfs_list ]; then
+ install -m 0644 ${WORKDIR}/busybox-config ${WORKDIR}/busybox-1.1.0/.config \
+ || die "No busybox configuration available."
+
+ echo "CROSS_COMPILER_PREFIX=\"${TARGET_PREFIX}\"" >> ${WORKDIR}/busybox-1.1.0/.config
+ echo "USING_CROSS_COMPILER=y" >> ${WORKDIR}/busybox-1.1.0/.config
+
+ MY_UID=`id -u`
+ MY_GID=`id -g`
+
+ echo "CONFIG_INITRAMFS_SOURCE=\"../initramfs_list\"" >> ${S}/.config
+ echo "CONFIG_INITRAMFS_ROOT_UID=${MY_UID}" >> ${S}/.config
+ echo "CONFIG_INITRAMFS_ROOT_GID=${MY_GID}" >> ${S}/.config
+ else
+ echo "CONFIG_INITRAMFS_SOURCE=\"\"" >> ${S}/.config
+ echo "CONFIG_INITRAMFS_ROOT_UID=0" >> ${S}/.config
+ echo "CONFIG_INITRAMFS_ROOT_GID=0" >> ${S}/.config
+
+ fi
+
+ yes '' | oe_runmake oldconfig
+
+}
+
+
+do_compile_prepend() {
+ if [ -f ${WORKDIR}/initramfs_list ]; then
+ cd ${WORKDIR}/busybox-1.1.0
+ oe_runmake 'CC=${CC}' 'CROSS=${HOST_PREFIX}'
+ cd -
+ fi
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
diff --git a/packages/linux/linux-handhelds-2.6-2.6.16/h1910/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.16/h1910/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.16/h1910/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.16/h1910/defconfig b/packages/linux/linux-handhelds-2.6-2.6.16/h1910/defconfig
new file mode 100644
index 0000000000..c299fd95c7
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.16/h1910/defconfig
@@ -0,0 +1,1201 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.16-hh9
+# Fri Jan 12 03:26:16 2007
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=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 is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+# CONFIG_MINIMAL_OOPS is not set
+CONFIG_IKCONFIG_PROC=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_USELIB=y
+CONFIG_CORE_DUMP=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=y
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+# 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_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# 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_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+CONFIG_ARCH_H1900=y
+CONFIG_IPAQ_H1900_LCD=y
+CONFIG_IPAQ_H1900_BUTTONS=y
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_ARCH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_MACH_X30 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_PXA_SHARPSL is not set
+CONFIG_PXA25x=y
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_XSCALE_PMU=y
+CONFIG_KEXEC=y
+
+#
+# Compaq/iPAQ Platforms
+#
+CONFIG_PXA_IPAQ=y
+
+#
+# XScale-based iPAQ
+#
+CONFIG_IPAQ_HANDHELD=y
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+# CONFIG_IPAQ_SAMCOP is not set
+# CONFIG_IPAQ_HAMCOP is not set
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+CONFIG_PCMCIA_DEBUG=y
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=y
+# 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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="keepinitrd"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+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=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_PXA=y
+CONFIG_PXA25x_ALTERNATE_FREQS=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=y
+# CONFIG_PM_LEGACY is not set
+CONFIG_PM_DEBUG=y
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+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=y
+# CONFIG_IP_PNP_DHCP is not set
+# 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_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
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_IPV6_TUNNEL 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 is not set
+
+#
+# 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 is not set
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_QUEUE is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+
+#
+# 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 is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# 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=y
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRCOMM=y
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_PXA_FICP=y
+# 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
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# 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
+#
+
+#
+# Block devices
+#
+# 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_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=6
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+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
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_IDE_GENERIC is not set
+# CONFIG_IDE_ARM 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 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+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 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+
+#
+# I2C support
+#
+CONFIG_I2C=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_ELV is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_RTC_X1205_I2C 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
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+CONFIG_SA1100_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_DEBUG=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID 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_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_W83781D 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_HWMON_DEBUG_CHIP is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+# CONFIG_SOC_TSC2101 is not set
+
+#
+# Misc devices
+#
+CONFIG_BATTERY_MONITOR=y
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP 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=y
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_PARAMETERS=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_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# 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=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+CONFIG_SND_DEBUG_DETECT=y
+
+#
+# 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
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_A716 is not set
+CONFIG_SND_H1910=y
+# CONFIG_SND_H2200 is not set
+# CONFIG_SND_H4000 is not set
+# CONFIG_SND_HTCMAGICIAN is not set
+# CONFIG_SND_HX4700 is not set
+# CONFIG_SND_HTCUNIVERSAL is not set
+# CONFIG_SND_H5XXX_AK4535 is not set
+CONFIG_SND_PXA2xx_I2SOUND=y
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# PCMCIA devices
+#
+CONFIG_SND_UDA1380=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_ASIC3=y
+
+#
+# LED devices
+#
+CONFIG_CLASS_LEDS=y
+
+#
+# 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_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 is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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_SYSFS=y
+CONFIG_TMPFS=y
+# 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 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_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
+# 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=y
+CONFIG_NLS_CODEPAGE_1251=y
+# 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=y
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=15
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_VM=y
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+# 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_DES=y
+# 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=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.16/htcuniversal/defconfig b/packages/linux/linux-handhelds-2.6-2.6.16/htcuniversal/defconfig
index d409f0b3f5..600a3cbf03 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.16/htcuniversal/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.16/htcuniversal/defconfig
@@ -29,7 +29,7 @@ CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_SYSCTL=y
-CONFIG_AUDIT=y
+# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
# CONFIG_MINIMAL_OOPS is not set
CONFIG_IKCONFIG_PROC=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.17/htcuniversal/defconfig b/packages/linux/linux-handhelds-2.6-2.6.17/htcuniversal/defconfig
index d409f0b3f5..600a3cbf03 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.17/htcuniversal/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.17/htcuniversal/defconfig
@@ -29,7 +29,7 @@ CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_SYSCTL=y
-CONFIG_AUDIT=y
+# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
# CONFIG_MINIMAL_OOPS is not set
CONFIG_IKCONFIG_PROC=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.18/htcuniversal/defconfig b/packages/linux/linux-handhelds-2.6-2.6.18/htcuniversal/defconfig
index d409f0b3f5..600a3cbf03 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.18/htcuniversal/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.18/htcuniversal/defconfig
@@ -29,7 +29,7 @@ CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_SYSCTL=y
-CONFIG_AUDIT=y
+# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
# CONFIG_MINIMAL_OOPS is not set
CONFIG_IKCONFIG_PROC=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.19/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/aximx50/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.19/aximx50/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/aximx50/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/aximx50/defconfig b/packages/linux/linux-handhelds-2.6-2.6.19/aximx50/defconfig
new file mode 100644
index 0000000000..91e02bd64c
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/aximx50/defconfig
@@ -0,0 +1,1495 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19-hh9
+# Tue Jan 23 23:52:25 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_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=y
+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=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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+CONFIG_IOSCHED_DEADLINE=y
+# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X30 is not set
+CONFIG_MACH_X50=y
+CONFIG_X50_VGA=y
+CONFIG_X50_BUTTONS=m
+CONFIG_X50_TS=m
+CONFIG_DRAM_BASE=0xa8000000
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA27x=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_DCACHE_DISABLE is not set
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+
+#
+# Bus support
+#
+
+#
+# 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="keepinitrd"
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM=m
+
+#
+# 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=m
+# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_NET_KEY=m
+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 is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=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=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"
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+# 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 is not set
+
+#
+# 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 is not set
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_H323 is not set
+# CONFIG_IP_NF_SIP is not set
+# CONFIG_IP_NF_QUEUE is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+
+#
+# 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 is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+CONFIG_IRPORT_SIR=m
+
+#
+# Old Serial dongle support
+#
+# CONFIG_DONGLE_OLD is not set
+
+#
+# FIR device drivers
+#
+# CONFIG_PXA_FICP is not set
+CONFIG_BT=m
+# CONFIG_BT_L2CAP is not set
+# CONFIG_BT_SCO is not set
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 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=y
+CONFIG_MTD_DEBUG_VERBOSE=1
+CONFIG_MTD_CONCAT=m
+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=m
+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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+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_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
+# CONFIG_MTD_XIP 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_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD 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=m
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=m
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_SHARPSL is not set
+# CONFIG_MTD_NAND_NANDSIM 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_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=m
+CONFIG_IDE_MAX_HWIFS=4
+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_IDECD=m
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_BLK_DEV_IDEFLOPPY=m
+CONFIG_BLK_DEV_IDESCSI=m
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+# CONFIG_IDE_ARM 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=m
+# 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=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 is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=m
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# 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
+# CONFIG_HOSTAP is not set
+# CONFIG_ACX is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=y
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE 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
+
+#
+# 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=m
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=480
+CONFIG_INPUT_TSDEV_SCREEN_Y=640
+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=m
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_GPIO_KEYS=y
+# CONFIG_KEYBOARD_ASIC3 is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+CONFIG_MOUSE_NAVPOINT=m
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=m
+CONFIG_TOUCHSCREEN_ADS7846_SSP=m
+# 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_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_ADC=m
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=m
+CONFIG_SERIO_SERPORT=m
+# CONFIG_SERIO_LIBPS2 is not set
+CONFIG_SERIO_RAW=m
+# 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+CONFIG_NVRAM=m
+CONFIG_SA1100_RTC=m
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+CONFIG_I2C_ISA=m
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_STUB=m
+CONFIG_I2C_PCA_ISA=m
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+CONFIG_SENSORS_EEPROM=m
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_RTC8564=m
+# 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=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=m
+CONFIG_SPI_PXA2XX=y
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_DS2482 is not set
+# CONFIG_W1_DS1WM is not set
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+CONFIG_W1_DS2760=m
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1031=m
+# CONFIG_SENSORS_ADM9240 is not set
+CONFIG_SENSORS_ASB100=m
+# CONFIG_SENSORS_ATXP1 is not set
+CONFIG_SENSORS_DS1621=m
+# CONFIG_SENSORS_F71805F is not set
+CONFIG_SENSORS_FSCHER=m
+# CONFIG_SENSORS_FSCPOS is not set
+CONFIG_SENSORS_GL518SM=m
+# CONFIG_SENSORS_GL520SM is not set
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM63=m
+# CONFIG_SENSORS_LM70 is not set
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+# CONFIG_SENSORS_LM92 is not set
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_SMSC47M1=m
+# CONFIG_SENSORS_SMSC47M192 is not set
+CONFIG_SENSORS_SMSC47B397=m
+# CONFIG_SENSORS_VT1211 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83627HF=m
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Hardware Monitoring - Battery
+#
+CONFIG_BATTERY_MONITOR=m
+
+#
+# L3 serial bus support
+#
+CONFIG_L3=m
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+CONFIG_HTC_ASIC3_DS1WM=y
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+CONFIG_ADC_ADS7846_SSP=m
+# CONFIG_ADC_AD7877 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_VIDEO_V4L1_COMPAT is not set
+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_VIVI is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+
+#
+# Radio Adapters
+#
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB=y
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+CONFIG_FB_MBX=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_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=y
+# 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=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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=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_VIRMIDI=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# 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 is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA27X_DMA is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_ASIC3=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS 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 is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG 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=m
+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=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_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=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+# 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 is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# 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
+# 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="iso8859-15"
+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 is not set
+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=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+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 is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_DES=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_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/h2200/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.19/h2200/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/h2200/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/h2200/defconfig b/packages/linux/linux-handhelds-2.6-2.6.19/h2200/defconfig
new file mode 100644
index 0000000000..8decacd4a2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/h2200/defconfig
@@ -0,0 +1,1645 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.17-hh2
+# Wed Nov 1 20:06:18 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+
+#
+# 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_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+# CONFIG_MINIMAL_OOPS is not set
+# CONFIG_IKCONFIG_PROC is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_USELIB is not set
+# CONFIG_CORE_DUMP is not set
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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_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_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# 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_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+CONFIG_DMABOUNCE=y
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_ARCH_H1900 is not set
+CONFIG_ARCH_H2200=y
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_PXA_SHARPSL is not set
+CONFIG_PXA25x=y
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+CONFIG_GPIO_KEYS=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_XSCALE_PMU=y
+CONFIG_KEXEC=y
+
+#
+# Compaq/iPAQ Platforms
+#
+CONFIG_PXA_IPAQ=y
+
+#
+# XScale-based iPAQ
+#
+CONFIG_IPAQ_HANDHELD=y
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+# CONFIG_IPAQ_SAMCOP is not set
+CONFIG_IPAQ_HAMCOP=y
+CONFIG_IPAQ_SAMCOP_TOUCHSCREEN=y
+CONFIG_IPAQ_SAMCOP_DMA=y
+
+#
+# Bus support
+#
+
+#
+# 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_PCMCIA_PXA2XX=y
+CONFIG_PCMCIA_H2200=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 root=/dev/mmcblk0p1"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+CONFIG_PXA25x_ALTERNATE_FREQS=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=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# 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=m
+CONFIG_NET_KEY=m
+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 is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+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=y
+CONFIG_IPV6_PRIVACY=y
+# 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_IPV6_TUNNEL 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 is not set
+
+#
+# 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 is not set
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_H323 is not set
+# CONFIG_IP_NF_QUEUE is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+
+#
+# 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 is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+CONFIG_IRPORT_SIR=m
+
+#
+# Old Serial dongle support
+#
+# CONFIG_DONGLE_OLD is not set
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+CONFIG_BT=y
+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 is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=y
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=y
+CONFIG_IEEE80211_CRYPT_CCMP=y
+CONFIG_IEEE80211_CRYPT_TKIP=y
+# CONFIG_IEEE80211_SOFTMAC 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_DEBUG_DRIVER 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+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
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_SHARP_SL 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
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_HAMCOP=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_SHARPSL is not set
+# CONFIG_MTD_NAND_NANDSIM 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_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_INITRD=y
+# 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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+CONFIG_BLK_DEV_IDECD=m
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_BLK_DEV_IDEFLOPPY=m
+CONFIG_BLK_DEV_IDESCSI=m
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+# CONFIG_IDE_ARM 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=m
+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=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 is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+CONFIG_SCSI_SPI_ATTRS=m
+# 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_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+CONFIG_PCMCIA_AHA152X=m
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+CONFIG_MII=m
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# 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
+CONFIG_PCMCIA_WAVELAN=m
+CONFIG_PCMCIA_NETWAVE=m
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+CONFIG_PCMCIA_RAYCS=m
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_HERMES=m
+CONFIG_ATMEL=m
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+# CONFIG_PCMCIA_SPECTRUM is not set
+CONFIG_AIRO_CS=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_PCMCIA_WL3501=m
+CONFIG_HOSTAP=m
+# CONFIG_HOSTAP_FIRMWARE is not set
+CONFIG_HOSTAP_CS=m
+# CONFIG_ACX is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+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=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=m
+CONFIG_KEYBOARD_H2200=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=m
+CONFIG_SERIO_SERPORT=m
+# CONFIG_SERIO_LIBPS2 is not set
+CONFIG_SERIO_RAW=m
+# 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=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_ELV is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 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
+
+#
+# L3 serial bus support
+#
+CONFIG_L3=m
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE 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_SA1100_WATCHDOG=m
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+# CONFIG_NVRAM is not set
+CONFIG_SA1100_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=y
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_DS9490 is not set
+# CONFIG_W1_MASTER_DS2482 is not set
+CONFIG_W1_SAMCOP=y
+CONFIG_W1_DS1WM=y
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+CONFIG_W1_DS2760=y
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# SoC drivers
+#
+CONFIG_SOC_MQ11XX=y
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_SOC_TSC2101 is not set
+
+#
+# Misc devices
+#
+CONFIG_BATTERY_MONITOR=y
+CONFIG_H2200_BATTERY=y
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_H2200 is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_VIDEO_V4L1_COMPAT is not set
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+
+#
+# Encoders and Decoders
+#
+# CONFIG_VIDEO_MSP3400 is not set
+# CONFIG_VIDEO_CS53L32A is not set
+# CONFIG_VIDEO_WM8775 is not set
+# CONFIG_VIDEO_WM8739 is not set
+# CONFIG_VIDEO_CX25840 is not set
+# CONFIG_VIDEO_SAA711X is not set
+# CONFIG_VIDEO_SAA7127 is not set
+# CONFIG_VIDEO_UPD64031A is not set
+# CONFIG_VIDEO_UPD64083 is not set
+
+#
+# V4L USB devices
+#
+
+#
+# Radio Adapters
+#
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB 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_FIRMWARE_EDID=y
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_PXA is not set
+CONFIG_FB_MQ1100=y
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=m
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# 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=y
+# 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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+CONFIG_BACKLIGHT_H2200=y
+CONFIG_LCD_H2200=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+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=y
+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
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_A716 is not set
+# CONFIG_SND_H1910 is not set
+CONFIG_SND_H2200=y
+# CONFIG_SND_H4000 is not set
+# CONFIG_SND_HTCMAGICIAN is not set
+# CONFIG_SND_HX4700 is not set
+# CONFIG_SND_HTCUNIVERSAL is not set
+# CONFIG_SND_H5XXX_AK4535 is not set
+CONFIG_SND_PXA2xx_I2SOUND=y
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+CONFIG_SND_UDA1380=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+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_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_ISP116X_HCD=m
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+
+#
+# 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 is not set
+# 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 is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# 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 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 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_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=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_ZD1201=m
+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_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_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+# CONFIG_USB_ETH_RNDIS is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TMIO is not set
+CONFIG_MMC_SAMCOP=y
+# CONFIG_MMC_ASIC3 is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+# CONFIG_EXT2_FS_SECURITY is not set
+# 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 is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+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 is not set
+CONFIG_JFS_FS=m
+CONFIG_JFS_POSIX_ACL=y
+# CONFIG_JFS_SECURITY is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_EXPORT=y
+# CONFIG_XFS_QUOTA is not set
+CONFIG_XFS_SECURITY=y
+CONFIG_XFS_POSIX_ACL=y
+# CONFIG_XFS_RT is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=m
+CONFIG_INOTIFY=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=y
+CONFIG_MSDOS_FS=m
+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 is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=m
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+CONFIG_HFSPLUS_FS=m
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+# 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=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=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_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+CONFIG_CODA_FS=m
+# CONFIG_CODA_FS_OLD_API is not set
+CONFIG_AFS_FS=m
+CONFIG_RXRPC=m
+CONFIG_9P_FS=m
+
+#
+# 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=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=y
+CONFIG_NLS_ISO8859_1=y
+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=y
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_UNWIND_INFO is not set
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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=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_DES=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=y
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/h3600/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.19/h3600/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/h3600/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/h3600/defconfig b/packages/linux/linux-handhelds-2.6-2.6.19/h3600/defconfig
new file mode 100644
index 0000000000..7dd8772892
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/h3600/defconfig
@@ -0,0 +1,1101 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.17-hh2
+# Mon Nov 6 21:29:46 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+
+#
+# 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 is not set
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_MINIMAL_OOPS is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# 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_USELIB=y
+CONFIG_CORE_DUMP=y
+CONFIG_SLAB=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+CONFIG_OBSOLETE_INTERMODULE=y
+
+#
+# Loadable module support
+#
+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
+
+#
+# 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 is not set
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+
+#
+# System Type
+#
+# 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_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+# 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_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_COLLIE is not set
+# CONFIG_SA1100_H3100 is not set
+CONFIG_SA1100_H3600=y
+# CONFIG_SA1100_H3800 is not set
+CONFIG_SA1100_H3XXX=y
+# CONFIG_SA1100_BADGE4 is not set
+# CONFIG_SA1100_JORNADA56X is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_XDA is not set
+# CONFIG_SA1100_HACKKIT is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHANNON is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_SSP is not set
+# CONFIG_H3600_SLEEVE is not set
+# CONFIG_SA1100_USB is not set
+CONFIG_IPAQ_H3600_LCD=y
+CONFIG_GPIO_KEYS=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_SA1100=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4=y
+CONFIG_CPU_CACHE_V4WB=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WB=y
+
+#
+# Processor Features
+#
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Platforms
+#
+CONFIG_SA1100_IPAQ=y
+
+#
+# SA1100-based iPAQ
+#
+CONFIG_IPAQ_HANDHELD=y
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+CONFIG_IPAQ_MICRO=m
+CONFIG_IPAQ_MICRO_BATTERY=m
+# CONFIG_IPAQ_SAMCOP is not set
+# CONFIG_IPAQ_HAMCOP is not set
+
+#
+# Bus support
+#
+CONFIG_ISA=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=y
+CONFIG_NODES_SHIFT=2
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM_MANUAL=y
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_NEED_MULTIPLE_NODES=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_LEDS 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
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=m
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=m
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+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=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+CONFIG_CPU_FREQ_SA1100=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=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+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_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_SA1100_FIR=m
+# 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 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=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
+
+#
+# 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=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# 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 is not set
+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 is not set
+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
+# CONFIG_MTD_XIP 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_SA1100 is not set
+CONFIG_MTD_IPAQ=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
+
+#
+# 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_PNP is not set
+
+#
+# Block devices
+#
+# 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_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=m
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# 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_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 is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=m
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+# CONFIG_INPUT_EVDEV is not set
+# 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 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# L3 serial bus support
+#
+CONFIG_L3=m
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE 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_SA1100_WATCHDOG=m
+
+#
+# ISA-based Watchdog Cards
+#
+# CONFIG_PCWATCHDOG is not set
+# CONFIG_MIXCOMWD is not set
+# CONFIG_WDT is not set
+# CONFIG_NVRAM is not set
+CONFIG_SA1100_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK 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=m
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_SOC_TSC2101 is not set
+
+#
+# Misc devices
+#
+CONFIG_BATTERY_MONITOR=m
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP_SA11X0 is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_V4L2=y
+
+#
+# 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_FIRMWARE_EDID is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+CONFIG_FB_SA1100=y
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# 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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+# CONFIG_SND_SEQUENCER is not set
+# CONFIG_SND_MIXER_OSS is not set
+# CONFIG_SND_PCM_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# 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
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_SA11XX_UDA1341 is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk 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 is not set
+
+#
+# File systems
+#
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_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_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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="ascii"
+# CONFIG_NTFS_FS is not set
+
+#
+# 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_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=m
+# 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 is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# 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
+# CONFIG_9P_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="utf-8"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# 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 is not set
+# 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
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING 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_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 is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=m
+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_DES=m
+# 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=m
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/h3900/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.19/h3900/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/h3900/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/h3900/defconfig b/packages/linux/linux-handhelds-2.6-2.6.19/h3900/defconfig
new file mode 100644
index 0000000000..52b2c8741e
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/h3900/defconfig
@@ -0,0 +1,1116 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19-hh8
+# Mon Jan 22 05:03:33 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+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=y
+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 is not set
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+CONFIG_IOSCHED_DEADLINE=y
+# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+CONFIG_MACH_H3900=y
+CONFIG_IPAQ_H3900_LCD=y
+CONFIG_IPAQ_H3900_BACKLIGHT=y
+CONFIG_IPAQ_H3900_BATTERY=y
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X30 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA25x=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB is not set
+CONFIG_PXA_IPAQ=y
+
+#
+# XScale-based iPAQ
+#
+CONFIG_IPAQ_HANDHELD=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_DCACHE_DISABLE is not set
+CONFIG_XSCALE_PMU=y
+CONFIG_KEXEC=y
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+CONFIG_PCMCIA_DEBUG=y
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+# CONFIG_PCMCIA_PXA2XX is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="keepinitrd"
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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=y
+# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
+CONFIG_PM_SYSFS_DEPRECATED=y
+CONFIG_APM=y
+
+#
+# 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_XFRM_SUB_POLICY 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 is not set
+# 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_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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_DIAG is not set
+# 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 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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_NETFILTER_XTABLES is not set
+
+#
+# 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 is not set
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_H323 is not set
+# CONFIG_IP_NF_SIP is not set
+# CONFIG_IP_NF_QUEUE 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_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
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# 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
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+# CONFIG_NETDEVICES is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# 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=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_GPIO_KEYS=y
+CONFIG_KEYBOARD_ASIC2=y
+# CONFIG_KEYBOARD_ASIC3 is not set
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_NAVPOINT is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# 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_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_ASIC2=y
+# 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+
+#
+# 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_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# 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_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 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 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Hardware Monitoring - Battery
+#
+# CONFIG_BATTERY_MONITOR is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+CONFIG_HTC_ASIC2=y
+CONFIG_HTC_ASIC3=y
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_ADC_ADS7846_SSP is not set
+CONFIG_ADC_ASIC2=y
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_ASIC3 is not set
+
+#
+# LED Triggers
+#
+# CONFIG_LEDS_TRIGGERS is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# 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=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+# CONFIG_SND is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_ASIC3=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 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 is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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_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_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
+# 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=y
+CONFIG_NLS_CODEPAGE_1251=y
+# 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=y
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=16
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS 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=y
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_VM=y
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+# 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_ECB is not set
+# CONFIG_CRYPTO_CBC is not set
+CONFIG_CRYPTO_DES=y
+# 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=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/h4000/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.19/h4000/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/h4000/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/h4000/defconfig b/packages/linux/linux-handhelds-2.6-2.6.19/h4000/defconfig
new file mode 100644
index 0000000000..f17812c9f4
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/h4000/defconfig
@@ -0,0 +1,1150 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19-hh8
+# Mon Jan 22 05:03:36 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+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=y
+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 is not set
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+CONFIG_IOSCHED_DEADLINE=y
+# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+CONFIG_MACH_H4000=y
+# CONFIG_IPAQ_H4000_SERIAL is not set
+CONFIG_IPAQ_H4000_UDC=y
+CONFIG_IPAQ_H4000_LCD=y
+CONFIG_IPAQ_H4000_BACKLIGHT=y
+CONFIG_IPAQ_H4000_TS=y
+CONFIG_IPAQ_H4000_BUTTONS=y
+CONFIG_IPAQ_H4000_BATT=y
+CONFIG_IPAQ_H4000_LEDS=y
+CONFIG_IPAQ_H4000_BT=y
+CONFIG_IPAQ_H4300_KBD=m
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X30 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA25x=y
+CONFIG_PXA_SSP=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB is not set
+CONFIG_PXA_IPAQ=y
+
+#
+# XScale-based iPAQ
+#
+CONFIG_IPAQ_HANDHELD=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_DCACHE_DISABLE is not set
+CONFIG_XSCALE_PMU=y
+CONFIG_KEXEC=y
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+CONFIG_PCMCIA_DEBUG=y
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+# CONFIG_PCMCIA_PXA2XX is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="keepinitrd"
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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=y
+# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
+CONFIG_PM_SYSFS_DEPRECATED=y
+CONFIG_APM=y
+
+#
+# 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_XFRM_SUB_POLICY 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 is not set
+# 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_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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_DIAG is not set
+# 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 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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_NETFILTER_XTABLES is not set
+
+#
+# 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 is not set
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_H323 is not set
+# CONFIG_IP_NF_SIP is not set
+# CONFIG_IP_NF_QUEUE 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_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
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# 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
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+# CONFIG_NETDEVICES is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# 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=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_GPIO_KEYS=y
+CONFIG_KEYBOARD_ASIC3=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_NAVPOINT 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 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+
+#
+# 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_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# 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_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 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 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Hardware Monitoring - Battery
+#
+# CONFIG_BATTERY_MONITOR is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+CONFIG_ADC_ADS7846_SSP=y
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_ASIC3=y
+
+#
+# LED Triggers
+#
+# CONFIG_LEDS_TRIGGERS is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# 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=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_H4000=m
+CONFIG_SND_PXA2xx_I2SOUND=m
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+CONFIG_SND_UDA1380=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_ASIC3=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 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 is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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_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_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
+# 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=y
+CONFIG_NLS_CODEPAGE_1251=y
+# 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=y
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=16
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS 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=y
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_VM=y
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+# 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_ECB is not set
+# CONFIG_CRYPTO_CBC is not set
+CONFIG_CRYPTO_DES=y
+# 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=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/htcblueangel/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.19/htcblueangel/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/htcblueangel/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/htcblueangel/defconfig b/packages/linux/linux-handhelds-2.6-2.6.19/htcblueangel/defconfig
new file mode 100644
index 0000000000..b9ce6faf0c
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/htcblueangel/defconfig
@@ -0,0 +1,1501 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19-hh6
+# Wed Dec 20 17:26:40 2006
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+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=y
+# CONFIG_MINIMAL_OOPS is not set
+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=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_USELIB=y
+CONFIG_CORE_DUMP=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+CONFIG_IOSCHED_DEADLINE=y
+# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+CONFIG_MACH_BLUEANGEL=y
+CONFIG_MACH_BLUEANGEL_LCD=y
+CONFIG_MACH_BLUEANGEL_BACKLIGHT=y
+CONFIG_MACH_BLUEANGEL_DS1WM=m
+# CONFIG_MACH_BLUEANGEL_PCMCIA is not set
+CONFIG_MACH_BLUEANGEL_SUSPEND=m
+# CONFIG_MACH_BLUEANGEL_LEDS is not set
+CONFIG_MACH_BLUEANGEL_KEYPAD=m
+# CONFIG_MACH_BLUEANGEL_AUDIO is not set
+CONFIG_MACH_BLUEANGEL_BATTERY=m
+CONFIG_MACH_BLUEANGEL_ROM=m
+CONFIG_MACH_BLUEANGEL_DPRAM=m
+CONFIG_MACH_BLUEANGEL_UDC=y
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X30 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA25x=y
+CONFIG_PXA_SSP=y
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_DCACHE_DISABLE is not set
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Platforms
+#
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# 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=""
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM=y
+
+#
+# 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=m
+# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_NET_KEY=m
+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=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+# CONFIG_IP_MROUTE 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=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"
+
+#
+# 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 is not set
+
+#
+# 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 is not set
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_H323 is not set
+# CONFIG_IP_NF_SIP is not set
+# CONFIG_IP_NF_QUEUE is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+
+#
+# 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 is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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=y
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=y
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+CONFIG_IRPORT_SIR=m
+
+#
+# Old Serial dongle support
+#
+# CONFIG_DONGLE_OLD is not set
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=y
+# CONFIG_MCS_FIR 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 is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=m
+# CONFIG_BT_HCIUART_H4 is not set
+# CONFIG_BT_HCIUART_BCSP 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 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_DEBUG_DRIVER is not set
+# 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=y
+CONFIG_MTD_DEBUG_VERBOSE=1
+CONFIG_MTD_CONCAT=m
+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=m
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+CONFIG_INFTL=y
+# 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=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+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_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
+# CONFIG_MTD_XIP 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_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD 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=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_DISKONCHIP=y
+# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
+# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
+# CONFIG_MTD_NAND_SHARPSL is not set
+# CONFIG_MTD_NAND_NANDSIM 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_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# 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
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_ACX is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# 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
+
+#
+# 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=m
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=m
+# 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_GPIO_KEYS is not set
+# CONFIG_KEYBOARD_ASIC3 is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 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_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+# CONFIG_SERIAL_PXA_CONSOLE is not set
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+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_SA1100_WATCHDOG is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+CONFIG_SA1100_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# 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 is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ELV is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 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=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_PXA2XX is not set
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Hardware Monitoring - Battery
+#
+CONFIG_BATTERY_MONITOR=y
+
+#
+# L3 serial bus support
+#
+CONFIG_L3=m
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+# CONFIG_SOC_TSC2101 is not set
+CONFIG_SOC_TSC2200=y
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_PXA is not set
+# CONFIG_FB_MBX is not set
+CONFIG_FB_W100=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# 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=y
+# 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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+# CONFIG_SND_SEQUENCER is not set
+# CONFIG_SND_MIXER_OSS is not set
+# CONFIG_SND_PCM_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# 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
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+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_ISP116X_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+# 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_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# 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 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
+
+#
+# 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_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_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_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_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+CONFIG_USB_GADGET_DUMMY_HCD=y
+CONFIG_USB_DUMMY_HCD=m
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_ASIC3=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS 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_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 is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=m
+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_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=m
+# 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 is not set
+# CONFIG_NFSD_TCP is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# 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
+# 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=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 is not set
+CONFIG_NLS_ISO8859_1=y
+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=y
+
+#
+# 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=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS 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_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+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 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_DES=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 is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_REED_SOLOMON=y
+CONFIG_REED_SOLOMON_DEC16=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/htcuniversal/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.19/htcuniversal/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/htcuniversal/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/htcuniversal/defconfig b/packages/linux/linux-handhelds-2.6-2.6.19/htcuniversal/defconfig
new file mode 100644
index 0000000000..ad5cce380d
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/htcuniversal/defconfig
@@ -0,0 +1,1447 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19-hh6
+# Sat Dec 16 20:23:29 2006
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_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=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+# CONFIG_MINIMAL_OOPS is not set
+CONFIG_IKCONFIG_PROC=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_USELIB=y
+CONFIG_CORE_DUMP=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+CONFIG_MACH_HTCUNIVERSAL=y
+CONFIG_HTCUNIVERSAL_CORE=y
+CONFIG_HTCUNIVERSAL_UDC=y
+CONFIG_HTCUNIVERSAL_POWER=y
+CONFIG_HTCUNIVERSAL_BACKLIGHT=y
+CONFIG_HTCUNIVERSAL_LCD=y
+CONFIG_HTCUNIVERSAL_TS2=y
+CONFIG_HTCUNIVERSAL_BUTTONS=y
+CONFIG_HTCUNIVERSAL_BLUETOOTH=y
+CONFIG_HTCUNIVERSAL_PHONE=y
+CONFIG_HTCUNIVERSAL_AK4641=m
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X30 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA27x=y
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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 is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Platforms
+#
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# 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=""
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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=y
+CONFIG_PM_DEBUG=y
+# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM=y
+
+#
+# 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=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 is not set
+# 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=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=y
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# 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
+
+#
+# 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_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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+# CONFIG_IRNET is not set
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR 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 is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 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 is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# 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_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# 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 is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+# CONFIG_BLK_DEV_SD is not set
+# 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
+
+#
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+CONFIG_MII=y
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# 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
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+CONFIG_ACX=m
+# CONFIG_ACX_USB is not set
+CONFIG_ACX_MEM=y
+CONFIG_ACX_HTCUNIVERSAL=m
+
+#
+# Wan interfaces
+#
+# 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 is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# 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
+
+#
+# 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=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_GPIO_KEYS=y
+CONFIG_KEYBOARD_ASIC3=y
+CONFIG_KEYBOARD_PXA27x=y
+# CONFIG_INPUT_MOUSE 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_SERPORT is not set
+# CONFIG_SERIO_LIBPS2 is not set
+# 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_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+# CONFIG_SERIAL_PXA_CONSOLE is not set
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# 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=m
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ELV is not set
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 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=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+# CONFIG_SPI_PXA2XX is not set
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# 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_LM70 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Hardware Monitoring - Battery
+#
+CONFIG_BATTERY_MONITOR=y
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB=y
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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 is not set
+# 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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_HTCUNIVERSAL=m
+CONFIG_SND_PXA2xx_I2SOUND=m
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# 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 is not set
+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_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_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 is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# 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 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 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=y
+CONFIG_USB_NET_CDCETHER=y
+# CONFIG_USB_NET_GL620A is not set
+# CONFIG_USB_NET_NET1080 is not set
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+# CONFIG_USB_NET_ZAURUS 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 is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP2101 is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# 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_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_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_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=m
+# CONFIG_USB_PXA27X_DMA is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_ASIC3=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 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 is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# 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=y
+CONFIG_INOTIFY=y
+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_FUSE_FS=m
+
+#
+# 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=850
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-15"
+# 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_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=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_ACL_SUPPORT=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=y
+CONFIG_SMB_NLS_REMOTE="utf8"
+# 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="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=y
+# 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=y
+# 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=y
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# 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=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+# 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_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=y
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/hx4700/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.19/hx4700/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/hx4700/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/hx4700/defconfig b/packages/linux/linux-handhelds-2.6-2.6.19/hx4700/defconfig
new file mode 100644
index 0000000000..8914f07dbb
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/hx4700/defconfig
@@ -0,0 +1,1842 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19-hh3
+# Wed Dec 6 04:42:47 2006
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_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=y
+# CONFIG_MINIMAL_OOPS is not set
+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=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_USELIB is not set
+CONFIG_CORE_DUMP=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+CONFIG_IOSCHED_DEADLINE=y
+# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+CONFIG_MACH_H4700=y
+CONFIG_HX4700_NAVPOINT=y
+CONFIG_HX4700_CORE=y
+CONFIG_HX4700_TS=y
+CONFIG_HX4700_BLUETOOTH=y
+CONFIG_HX4700_PCMCIA=y
+CONFIG_HX4700_LCD=y
+CONFIG_HX4700_LEDS=y
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X30 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA27x=y
+CONFIG_IWMMXT=y
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_DCACHE_DISABLE is not set
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Platforms
+#
+CONFIG_PXA_IPAQ=y
+
+#
+# XScale-based iPAQ
+#
+CONFIG_IPAQ_HANDHELD=y
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+
+#
+# Bus support
+#
+
+#
+# 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_PCMCIA_PXA2XX=y
+
+#
+# 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="keepinitrd"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+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_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_PXA=y
+CONFIG_PXA25x_ALTERNATE_FREQS=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=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SYSFS_DEPRECATED=y
+CONFIG_APM=y
+
+#
+# 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=m
+# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_NET_KEY=m
+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 is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=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=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+# CONFIG_INET_XFRM_MODE_BEET is not set
+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=y
+# 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 is not set
+# 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 is not set
+
+#
+# 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 is not set
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_H323 is not set
+# CONFIG_IP_NF_SIP is not set
+# CONFIG_IP_NF_QUEUE is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+
+#
+# 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 is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+CONFIG_IRPORT_SIR=m
+
+#
+# Old Serial dongle support
+#
+# CONFIG_DONGLE_OLD is not set
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+# CONFIG_PXA_FICP is not set
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
+# CONFIG_BT_HCIBLUECARD is not set
+CONFIG_BT_HCIBTUART=m
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=y
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=y
+CONFIG_IEEE80211_CRYPT_CCMP=y
+CONFIG_IEEE80211_CRYPT_TKIP=y
+# CONFIG_IEEE80211_SOFTMAC 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_DEBUG_DRIVER is not set
+# 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 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=m
+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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+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_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
+# CONFIG_MTD_XIP 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_IPAQ is not set
+# CONFIG_MTD_SHARP_SL 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
+
+#
+# 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_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+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=y
+CONFIG_IDE_MAX_HWIFS=4
+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_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+# CONFIG_IDE_ARM 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=m
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+# CONFIG_BLK_DEV_SD is not set
+# 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
+
+#
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+CONFIG_MII=m
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# 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
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+# CONFIG_PCMCIA_SPECTRUM is not set
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_USB_ZD1201=m
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_CS=m
+CONFIG_ACX=y
+# CONFIG_ACX_USB is not set
+CONFIG_ACX_MEM=y
+CONFIG_ACX_HX4700=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+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=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=m
+# 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_GPIO_KEYS=y
+# CONFIG_KEYBOARD_ASIC3 is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+CONFIG_MOUSE_NAVPOINT=y
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=m
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_LIBPS2=m
+CONFIG_SERIO_RAW=m
+# 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=m
+CONFIG_SERIAL_8250_CS=m
+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_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+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_SA1100_WATCHDOG=m
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# 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_ELV is not set
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 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 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# 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_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_BATTERY_MONITOR=y
+
+#
+# L3 serial bus support
+#
+CONFIG_L3=m
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_ASIC3=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_TIMER_ASIC3=y
+# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=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_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 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 is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+CONFIG_USB_SN9C102=m
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_USB_DSBR is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_PXA is not set
+# CONFIG_FB_MBX is not set
+CONFIG_FB_W100=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_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 is not set
+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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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=y
+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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_HX4700=m
+CONFIG_SND_PXA2xx_I2SOUND=m
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+CONFIG_SND_AK4641=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 is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# 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_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_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+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_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# 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=m
+# 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 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 Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+# CONFIG_USB_USBNET_MII is not set
+CONFIG_USB_USBNET=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 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+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=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_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
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA27X_DMA is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_ASIC3=y
+
+#
+# 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# 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 is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+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=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+CONFIG_REISERFS_PROC_INFO=y
+CONFIG_REISERFS_FS_XATTR=y
+# CONFIG_REISERFS_FS_POSIX_ACL is not set
+# CONFIG_REISERFS_FS_SECURITY is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_SECURITY=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_RT=y
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=m
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_QUOTACTL=y
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=m
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+CONFIG_HFSPLUS_FS=m
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+# 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=y
+# CONFIG_NFS_V4 is not set
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+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=m
+
+#
+# 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=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+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=y
+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=y
+
+#
+# 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=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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=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 is not set
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/magician/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.19/magician/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/magician/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/magician/defconfig b/packages/linux/linux-handhelds-2.6-2.6.19/magician/defconfig
new file mode 100644
index 0000000000..112a49f206
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/magician/defconfig
@@ -0,0 +1,1524 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19-hh7
+# Tue Jan 9 15:26:27 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_IPC_NS is not set
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# 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=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_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=y
+# CONFIG_MODVERSIONS is not set
+# 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=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"
+
+#
+# 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 is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+CONFIG_MACH_MAGICIAN=y
+CONFIG_MAGICIAN_PM=y
+CONFIG_MAGICIAN_TS=m
+CONFIG_MAGICIAN_LCD=y
+CONFIG_MAGICIAN_CPLD=y
+CONFIG_MAGICIAN_DS1WM=m
+CONFIG_MAGICIAN_PHONE=m
+CONFIG_MAGICIAN_FLASH=m
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA27x=y
+CONFIG_IWMMXT=y
+CONFIG_PXA_SSP=m
+CONFIG_PXA_SUSPEND_SAVE_EXTRA_REGS=y
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_DCACHE_DISABLE is not set
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Platforms
+#
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+
+#
+# Bus support
+#
+
+#
+# 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="console=tty0 noinitrd root=/dev/mmcblk0p2 ro mem=63M debug"
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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_SYSFS_DEPRECATED is not set
+CONFIG_APM=y
+
+#
+# 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=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=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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+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_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
+
+#
+# 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_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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR 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 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+CONFIG_CONNECTOR=m
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=m
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=3
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
+# 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=m
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=m
+# 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=m
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=m
+# 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
+# CONFIG_MTD_XIP 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_SHARP_SL 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
+
+#
+# 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_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 is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# 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 is not set
+# CONFIG_PPP_DEFLATE is not set
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# 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
+
+#
+# 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=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_GPIO_KEYS=y
+# CONFIG_KEYBOARD_PXA27x is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# 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_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+# CONFIG_SERIAL_PXA_CONSOLE is not set
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# 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_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=m
+
+#
+# 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_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 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
+CONFIG_W1_CON=y
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_DS2490 is not set
+# CONFIG_W1_MASTER_DS2482 is not set
+CONFIG_W1_MASTER_DS1WM=m
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+CONFIG_W1_DS2760=m
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# 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_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Hardware Monitoring - Battery
+#
+CONFIG_BATTERY_MONITOR=y
+CONFIG_MAGICIAN_BATTERY=m
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_MAGICIAN=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_SHARED is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_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 is not set
+# 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=y
+# 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 is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+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
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_HTCMAGICIAN is not set
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=m
+
+#
+# Soc Platforms
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2xx_SOC=m
+CONFIG_SND_PXA2xx_SOC_I2S=m
+CONFIG_SND_PXA2xx_SOC_SSP=m
+CONFIG_SND_PXA2xx_SOC_MAGICIAN=m
+# CONFIG_SND_PXA2xx_SOC_BLUEANGEL is not set
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Freescale i.MX
+#
+
+#
+# SoC Audio for the Samsung S3C24XX
+#
+
+#
+# Soc Codecs
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_WM8711 is not set
+# CONFIG_SND_SOC_WM8510 is not set
+# CONFIG_SND_SOC_WM8731 is not set
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM8956 is not set
+# CONFIG_SND_SOC_WM8976 is not set
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM8980 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+# CONFIG_SND_SOC_WM9712 is not set
+CONFIG_SND_SOC_UDA1380=m
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# 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 is not set
+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_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# 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_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_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# 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 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
+
+#
+# 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_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_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_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA27X_DMA is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+# CONFIG_USB_ETH_RNDIS is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+CONFIG_USB_FILE_STORAGE_TEST=y
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# 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 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=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 is not set
+# 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_JFFS_FS is not set
+# CONFIG_JFFS2_FS 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 is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+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 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=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=y
+CONFIG_NLS_DEFAULT="cp437"
+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=y
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# 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_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC 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=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+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 is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_DES=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_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/rx3000/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.19/rx3000/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/rx3000/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.19/rx3000/defconfig b/packages/linux/linux-handhelds-2.6-2.6.19/rx3000/defconfig
new file mode 100644
index 0000000000..cf5cea0a4b
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.19/rx3000/defconfig
@@ -0,0 +1,1341 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19-hh8
+# Mon Jan 22 13:41:47 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+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=y
+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=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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+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=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"
+
+#
+# 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 is not set
+# 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=y
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# S3C24XX Implementations
+#
+# CONFIG_MACH_AML_M5900 is not set
+# CONFIG_MACH_ANUBIS is not set
+# CONFIG_MACH_OSIRIS is not set
+# CONFIG_ARCH_BAST is not set
+CONFIG_PM_H1940=y
+# CONFIG_ARCH_H1940 is not set
+# CONFIG_MACH_N30 is not set
+# CONFIG_ARCH_SMDK2410 is not set
+# CONFIG_ARCH_S3C2440 is not set
+# CONFIG_MACH_SMDK2413 is not set
+# CONFIG_MACH_VR1000 is not set
+CONFIG_MACH_RX3715=y
+CONFIG_RX3715_LEDS=m
+CONFIG_RX3715_BLUETOOTH=m
+# CONFIG_MACH_HTCHERMES is not set
+# CONFIG_MACH_HTC_TRINITY is not set
+# CONFIG_MACH_OTOM is not set
+# CONFIG_MACH_NEXCODER_2440 is not set
+# CONFIG_MACH_VSTMS is not set
+# CONFIG_MACH_G500 is not set
+CONFIG_S3C2410_CLOCK=y
+CONFIG_S3C2410_PM=y
+CONFIG_CPU_S3C244X=y
+CONFIG_CPU_S3C2440=y
+
+#
+# S3C2410 Boot
+#
+# CONFIG_S3C2410_BOOT_WATCHDOG is not set
+CONFIG_S3C2410_BOOT_ERROR_RESET=y
+
+#
+# S3C2410 Setup
+#
+CONFIG_S3C2410_DMA=y
+# CONFIG_S3C2410_DMA_DEBUG is not set
+# CONFIG_S3C2410_PM_DEBUG is not set
+# CONFIG_S3C2410_PM_CHECK is not set
+CONFIG_S3C2410_LOWLEVEL_UART_PORT=2
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_32v4T=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_CACHE_V4WT=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_KEXEC is not set
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=200
+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=""
+# 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=y
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+CONFIG_PM_DEBUG=y
+# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM=y
+
+#
+# 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=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_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"
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS 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=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=y
+# 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 is not set
+# CONFIG_IP_NF_FTP is not set
+# CONFIG_IP_NF_IRC is not set
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_H323 is not set
+# CONFIG_IP_NF_SIP is not set
+CONFIG_IP_NF_QUEUE=y
+
+#
+# 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_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=y
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_BT=y
+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 is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+# CONFIG_STANDALONE is not set
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=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 is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_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=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_S3C2410=y
+# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
+CONFIG_MTD_NAND_S3C2410_HWECC=y
+# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM 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_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=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# 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
+# CONFIG_HOSTAP is not set
+CONFIG_ACX=m
+CONFIG_ACX_MEM=y
+CONFIG_ACX_RX3715=m
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=y
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=y
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=y
+CONFIG_PPP_BSDCOMP=y
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE 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
+
+#
+# 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=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_GPIO_KEYS=y
+CONFIG_KEYBOARD_ASIC3=y
+# CONFIG_S3C2410_BUTTONS is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# 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_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_S3C2410=y
+# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
+# CONFIG_TOUCHSCREEN_S3C2410_ALT is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_LIBPS2 is not set
+# 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_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_S3C2410=y
+CONFIG_SERIAL_S3C2410_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# 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_S3C2410_WATCHDOG=y
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# 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 is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+CONFIG_I2C_S3C2410=m
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 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
+CONFIG_W1_CON=y
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_DS2482 is not set
+CONFIG_W1_DS1WM=m
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+CONFIG_W1_DS2760=m
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Hardware Monitoring - Battery
+#
+CONFIG_BATTERY_MONITOR=m
+CONFIG_RX3715_BATTERY=m
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+CONFIG_HTC_ASIC3_DS1WM=y
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_S3C24XX is not set
+CONFIG_LEDS_ASIC3=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_TIMER_ASIC3=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_S3C2410=y
+# CONFIG_FB_S3C2410_DEBUG is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_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 is not set
+# 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=y
+# 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=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_S3C2410=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_RX3715=m
+CONFIG_SND_S3C2410=m
+# CONFIG_SND_S3C2410_DBG is not set
+# CONFIG_SND_S3C2410_DBG_DMA is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+CONFIG_SND_UDA1380=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 is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+CONFIG_USB_GADGET_S3C2410=y
+CONFIG_USB_S3C2410=y
+# CONFIG_USB_S3C2410_DEBUG is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_S3C2440 is not set
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_ASIC3=y
+
+#
+# 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_S3C=y
+# 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 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 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 is not set
+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_JFFS_FS is not set
+CONFIG_JFFS2_FS=m
+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 is not set
+# CONFIG_NFSD 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
+# 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=y
+CONFIG_NLS_DEFAULT="cp1251"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=y
+# 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=y
+# 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=y
+# 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=y
+# 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=y
+# CONFIG_NLS_ISO8859_15 is not set
+CONFIG_NLS_KOI8_R=y
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=y
+
+#
+# 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
+CONFIG_DEBUG_S3C2410_UART=2
+
+#
+# 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_MANAGER=m
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+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_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_DES=y
+# 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_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-handhelds-2.6.inc b/packages/linux/linux-handhelds-2.6.inc
index 01026cbb79..b3dfa209bc 100644
--- a/packages/linux/linux-handhelds-2.6.inc
+++ b/packages/linux/linux-handhelds-2.6.inc
@@ -3,7 +3,7 @@ DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer h
LICENSE = "GPL"
COMPATIBLE_HOST = "arm.*-linux"
-COMPATIBLE_MACHINE ?= '(h1910|h2200|h3600|h3900|h4000|h5000|htcblueangel|htcuniversal|hx4700|jornada56x|magician|simpad)'
+COMPATIBLE_MACHINE ?= '(asus730|aximx50|h1910|h2200|h3600|h3800|h3900|h4000|h5000|htcblueangel|htcuniversal|hx4700|jornada56x|magician|simpad|rx3000|htchermes)'
# SRC_URI *must* be overriden in includer, but this is a good reference
SRC_URI ?= "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
@@ -61,8 +61,13 @@ 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}
+
+ #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
}
do_deploy[dirs] = "${S}"
-addtask deploy before do_build after do_compile
+addtask deploy before do_package after do_install
diff --git a/packages/linux/linux-handhelds-2.6/aximx50/.mtn2git_empty b/packages/linux/linux-handhelds-2.6/aximx50/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/aximx50/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/aximx50/defconfig b/packages/linux/linux-handhelds-2.6/aximx50/defconfig
new file mode 100644
index 0000000000..91e02bd64c
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/aximx50/defconfig
@@ -0,0 +1,1495 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19-hh9
+# Tue Jan 23 23:52:25 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_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=y
+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=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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+CONFIG_IOSCHED_DEADLINE=y
+# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X30 is not set
+CONFIG_MACH_X50=y
+CONFIG_X50_VGA=y
+CONFIG_X50_BUTTONS=m
+CONFIG_X50_TS=m
+CONFIG_DRAM_BASE=0xa8000000
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA27x=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_DCACHE_DISABLE is not set
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+
+#
+# Bus support
+#
+
+#
+# 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="keepinitrd"
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM=m
+
+#
+# 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=m
+# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_NET_KEY=m
+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 is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=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=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"
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+# 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 is not set
+
+#
+# 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 is not set
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_H323 is not set
+# CONFIG_IP_NF_SIP is not set
+# CONFIG_IP_NF_QUEUE is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+
+#
+# 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 is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+CONFIG_IRPORT_SIR=m
+
+#
+# Old Serial dongle support
+#
+# CONFIG_DONGLE_OLD is not set
+
+#
+# FIR device drivers
+#
+# CONFIG_PXA_FICP is not set
+CONFIG_BT=m
+# CONFIG_BT_L2CAP is not set
+# CONFIG_BT_SCO is not set
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 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=y
+CONFIG_MTD_DEBUG_VERBOSE=1
+CONFIG_MTD_CONCAT=m
+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=m
+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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+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_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
+# CONFIG_MTD_XIP 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_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD 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=m
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=m
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_SHARPSL is not set
+# CONFIG_MTD_NAND_NANDSIM 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_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=m
+CONFIG_IDE_MAX_HWIFS=4
+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_IDECD=m
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_BLK_DEV_IDEFLOPPY=m
+CONFIG_BLK_DEV_IDESCSI=m
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+# CONFIG_IDE_ARM 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=m
+# 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=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 is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=m
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# 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
+# CONFIG_HOSTAP is not set
+# CONFIG_ACX is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=y
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE 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
+
+#
+# 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=m
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=480
+CONFIG_INPUT_TSDEV_SCREEN_Y=640
+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=m
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_GPIO_KEYS=y
+# CONFIG_KEYBOARD_ASIC3 is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+CONFIG_MOUSE_NAVPOINT=m
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=m
+CONFIG_TOUCHSCREEN_ADS7846_SSP=m
+# 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_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_ADC=m
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=m
+CONFIG_SERIO_SERPORT=m
+# CONFIG_SERIO_LIBPS2 is not set
+CONFIG_SERIO_RAW=m
+# 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+CONFIG_NVRAM=m
+CONFIG_SA1100_RTC=m
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+CONFIG_I2C_ISA=m
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_STUB=m
+CONFIG_I2C_PCA_ISA=m
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+CONFIG_SENSORS_EEPROM=m
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_RTC8564=m
+# 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=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=m
+CONFIG_SPI_PXA2XX=y
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_DS2482 is not set
+# CONFIG_W1_DS1WM is not set
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+CONFIG_W1_DS2760=m
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1031=m
+# CONFIG_SENSORS_ADM9240 is not set
+CONFIG_SENSORS_ASB100=m
+# CONFIG_SENSORS_ATXP1 is not set
+CONFIG_SENSORS_DS1621=m
+# CONFIG_SENSORS_F71805F is not set
+CONFIG_SENSORS_FSCHER=m
+# CONFIG_SENSORS_FSCPOS is not set
+CONFIG_SENSORS_GL518SM=m
+# CONFIG_SENSORS_GL520SM is not set
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM63=m
+# CONFIG_SENSORS_LM70 is not set
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+# CONFIG_SENSORS_LM92 is not set
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_SMSC47M1=m
+# CONFIG_SENSORS_SMSC47M192 is not set
+CONFIG_SENSORS_SMSC47B397=m
+# CONFIG_SENSORS_VT1211 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83627HF=m
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Hardware Monitoring - Battery
+#
+CONFIG_BATTERY_MONITOR=m
+
+#
+# L3 serial bus support
+#
+CONFIG_L3=m
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+CONFIG_HTC_ASIC3_DS1WM=y
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+CONFIG_ADC_ADS7846_SSP=m
+# CONFIG_ADC_AD7877 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_VIDEO_V4L1_COMPAT is not set
+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_VIVI is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+
+#
+# Radio Adapters
+#
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB=y
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+CONFIG_FB_MBX=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_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=y
+# 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=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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=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_VIRMIDI=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# 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 is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA27X_DMA is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_ASIC3=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS 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 is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG 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=m
+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=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_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=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+# 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 is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# 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
+# 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="iso8859-15"
+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 is not set
+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=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+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 is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_DES=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_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-handhelds-2.6/h3900/.mtn2git_empty b/packages/linux/linux-handhelds-2.6/h3900/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/h3900/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/h3900/defconfig b/packages/linux/linux-handhelds-2.6/h3900/defconfig
new file mode 100644
index 0000000000..1ad5c9589b
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/h3900/defconfig
@@ -0,0 +1,1260 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20-hh5
+# Sun Apr 1 09:55:56 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+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=y
+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 is not set
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+CONFIG_IOSCHED_DEADLINE=y
+# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+CONFIG_MACH_H3900=y
+CONFIG_IPAQ_H3900_LCD=y
+CONFIG_IPAQ_H3900_BACKLIGHT=y
+CONFIG_IPAQ_H3900_BATTERY=y
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_MACH_HTCATHENA is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X30 is not set
+# CONFIG_MACH_X50 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_MACH_RECON is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA25x=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB is not set
+CONFIG_PXA_IPAQ=y
+
+#
+# XScale-based iPAQ
+#
+CONFIG_IPAQ_HANDHELD=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_DCACHE_DISABLE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+CONFIG_KEXEC=y
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="keepinitrd"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+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_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_PXA=y
+CONFIG_PXA25x_ALTERNATE_FREQS=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=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_DPM_DEBUG=y
+CONFIG_PM_SYSFS_DEPRECATED=y
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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=y
+# CONFIG_IP_PNP_DHCP is not set
+# 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_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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# 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 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_IP_NF_QUEUE 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_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=y
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=y
+CONFIG_IRCOMM=y
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=y
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_PXA_FICP=y
+CONFIG_BT=y
+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_HCIUART is not set
+# CONFIG_BT_HCIVHCI 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
+# CONFIG_DEBUG_DRIVER is not set
+# 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+# CONFIG_MTD_CHAR is not set
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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 is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_SHARP_SL 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
+
+#
+# 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_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+# CONFIG_NETDEVICES is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# 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=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_GPIO_KEYS=y
+CONFIG_KEYBOARD_ASIC2=y
+# CONFIG_KEYBOARD_ASIC3 is not set
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_NAVPOINT is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# 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_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_ASIC2=y
+# CONFIG_TOUCHSCREEN_ADC is not set
+# CONFIG_TOUCHSCREEN_ADC_DEBOUNCE is not set
+# CONFIG_TOUCHSCREEN_UCB1400 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_PXA_IR=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_RS232_SERIAL is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+
+#
+# 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_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# 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_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 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 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Hardware Monitoring - Battery
+#
+# CONFIG_BATTERY_MONITOR is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+CONFIG_HTC_ASIC2=y
+CONFIG_HTC_ASIC3=y
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+CONFIG_ADC=y
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_ADC_AD7877 is not set
+CONFIG_ADC_ASIC2=y
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_ASIC3 is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HWTIMER=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# 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=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+# CONFIG_SND is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+# CONFIG_HID is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+# CONFIG_USB_PXA2XX_GPIO is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_ASIC3=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 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 is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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 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_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
+# 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=y
+CONFIG_NLS_CODEPAGE_1251=y
+# 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=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+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_LOG_BUF_SHIFT=16
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS 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=y
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_VM=y
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC 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_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=y
+# 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_CBC is not set
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=y
+# 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=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-handhelds-2.6/h4000/defconfig b/packages/linux/linux-handhelds-2.6/h4000/defconfig
index 28a78fa880..f649d6f014 100644
--- a/packages/linux/linux-handhelds-2.6/h4000/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h4000/defconfig
@@ -1,14 +1,18 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.18-hh0
-# Sat Nov 18 21:26:56 2006
+# Linux kernel version: 2.6.20-hh5
+# Mon Apr 2 06:23:29 2007
#
CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
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_ARCH_MTD_XIP=y
@@ -29,19 +33,22 @@ CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
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=y
-# CONFIG_MINIMAL_OOPS is not set
CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=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_EMBEDDED=y
+# CONFIG_UID16 is not set
+CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -53,8 +60,6 @@ CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SHMEM=y
-CONFIG_USELIB=y
-CONFIG_CORE_DUMP=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
@@ -75,7 +80,10 @@ 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
@@ -107,7 +115,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP23XX is not set
@@ -128,6 +138,7 @@ CONFIG_ARCH_PXA=y
# CONFIG_MACH_LOGICPD_PXA270 is not set
# CONFIG_MACH_MAINSTONE is not set
# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
# CONFIG_ARCH_ESERIES is not set
# CONFIG_MACH_A620 is not set
# CONFIG_MACH_A716 is not set
@@ -136,15 +147,17 @@ CONFIG_ARCH_PXA=y
# CONFIG_ARCH_H2200 is not set
# CONFIG_MACH_H3900 is not set
CONFIG_MACH_H4000=y
-CONFIG_IPAQ_H4000_SERIAL=m
-CONFIG_IPAQ_H4000_UDC=y
+CONFIG_MACH_H4300=y
+CONFIG_IPAQ_H4000_IRDA=y
+# CONFIG_IPAQ_H4000_UDC is not set
CONFIG_IPAQ_H4000_LCD=y
CONFIG_IPAQ_H4000_BACKLIGHT=y
-CONFIG_IPAQ_H4000_TS=y
-CONFIG_IPAQ_H4000_PCMCIA=y
CONFIG_IPAQ_H4000_BUTTONS=y
-CONFIG_IPAQ_H4000_BATT=y
-CONFIG_IPAQ_H4300_KBD=m
+# CONFIG_IPAQ_H4000_BATT is not set
+CONFIG_IPAQ_H4000_BATTERY=y
+CONFIG_IPAQ_H4000_LEDS=y
+CONFIG_IPAQ_H4000_BT=y
+CONFIG_IPAQ_H4300_KBD=y
# CONFIG_MACH_H4700 is not set
# CONFIG_MACH_HX2750 is not set
# CONFIG_ARCH_H5400 is not set
@@ -156,23 +169,31 @@ CONFIG_IPAQ_H4300_KBD=m
# CONFIG_MACH_BLUEANGEL is not set
# CONFIG_MACH_HTCBEETLES is not set
# CONFIG_MACH_HW6900 is not set
+# CONFIG_MACH_HTCATHENA is not set
# CONFIG_ARCH_AXIMX3 is not set
# CONFIG_ARCH_AXIMX5 is not set
# CONFIG_MACH_X30 is not set
+# CONFIG_MACH_X50 is not set
# CONFIG_ARCH_ROVERP1 is not set
# CONFIG_ARCH_ROVERP5P is not set
# CONFIG_MACH_XSCALE_PALMLD is not set
# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_MACH_RECON is not set
# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
CONFIG_PXA25x=y
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
+CONFIG_PXA_SSP=y
#
# Linux As Bootloader
#
# CONFIG_LAB is not set
+CONFIG_PXA_IPAQ=y
+
+#
+# XScale-based iPAQ
+#
+CONFIG_IPAQ_HANDHELD=y
#
# Processor Type
@@ -183,25 +204,19 @@ 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_DCACHE_DISABLE is not set
+# CONFIG_IWMMXT is not set
CONFIG_XSCALE_PMU=y
CONFIG_KEXEC=y
#
-# Compaq/iPAQ Platforms
-#
-CONFIG_PXA_IPAQ=y
-
-#
-# XScale-based iPAQ
-#
-CONFIG_IPAQ_HANDHELD=y
-
-#
# Compaq/iPAQ Drivers
#
@@ -209,8 +224,6 @@ CONFIG_IPAQ_HANDHELD=y
# Compaq/HP iPAQ Drivers
#
# CONFIG_IPAQ_SLEEVE is not set
-# CONFIG_IPAQ_SAMCOP is not set
-# CONFIG_IPAQ_HAMCOP is not set
#
# Bus support
@@ -219,16 +232,7 @@ CONFIG_IPAQ_HANDHELD=y
#
# PCCARD (PCMCIA/CardBus) support
#
-CONFIG_PCCARD=y
-CONFIG_PCMCIA_DEBUG=y
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
+# CONFIG_PCCARD is not set
#
# Kernel Features
@@ -236,7 +240,8 @@ CONFIG_PCMCIA_PXA2XX=y
# CONFIG_PREEMPT is not set
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=100
-# 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
@@ -265,12 +270,12 @@ 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=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=m
-CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+# 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_PXA=y
CONFIG_PXA25x_ALTERNATE_FREQS=y
@@ -292,14 +297,15 @@ 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
#
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
-CONFIG_PM_DEBUG=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_DPM_DEBUG=y
+CONFIG_PM_SYSFS_DEPRECATED=y
CONFIG_APM=y
#
@@ -311,11 +317,9 @@ CONFIG_NET=y
# Networking options
#
# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=m
+CONFIG_PACKET=y
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=y
@@ -335,67 +339,39 @@ CONFIG_IP_PNP=y
# 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_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
+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 is not set
-# CONFIG_INET6_ESP is not set
-# CONFIG_INET6_IPCOMP is not set
+# CONFIG_IPV6 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_IPV6_TUNNEL 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_NF_CONNTRACK_ENABLED is not set
# CONFIG_NETFILTER_XTABLES is not set
#
# 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 is not set
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-# CONFIG_IP_NF_TFTP is not set
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_PPTP is not set
-# CONFIG_IP_NF_H323 is not set
-# CONFIG_IP_NF_SIP is not set
# CONFIG_IP_NF_QUEUE is not set
#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# Bridge: Netfilter Configuration
-#
-# CONFIG_BRIDGE_NF_EBTABLES is not set
-
-#
# DCCP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_DCCP is not set
@@ -410,10 +386,9 @@ CONFIG_IP_NF_IRC=m
#
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
-CONFIG_BRIDGE=m
+# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
-CONFIG_LLC=m
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
@@ -437,7 +412,7 @@ CONFIG_IRDA=y
#
# IrDA protocols
#
-CONFIG_IRLAN=m
+CONFIG_IRLAN=y
CONFIG_IRCOMM=y
# CONFIG_IRDA_ULTRA is not set
@@ -455,7 +430,7 @@ CONFIG_IRDA_DEBUG=y
#
# SIR device drivers
#
-CONFIG_IRTTY_SIR=m
+CONFIG_IRTTY_SIR=y
#
# Dongle support
@@ -488,16 +463,11 @@ CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
-CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART=y
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIDTL1 is not set
-# CONFIG_BT_HCIBT3C is not set
-# CONFIG_BT_HCIBLUECARD is not set
-# CONFIG_BT_HCIBTUART is not set
# CONFIG_BT_HCIVHCI is not set
# CONFIG_IEEE80211 is not set
-CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -521,9 +491,8 @@ CONFIG_FW_LOADER=y
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=1
-CONFIG_MTD_CONCAT=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
# CONFIG_MTD_CMDLINE_PARTS is not set
@@ -532,20 +501,21 @@ CONFIG_MTD_PARTITIONS=y
#
# User Modules And Translation Layers
#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
+# CONFIG_MTD_CHAR is not set
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
# 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=m
+# CONFIG_MTD_CFI is not set
# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=m
-# 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
@@ -556,31 +526,21 @@ 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=m
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=m
# 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
-CONFIG_MTD_XIP=y
#
# 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_IPAQ is not set
# CONFIG_MTD_SHARP_SL is not set
# CONFIG_MTD_PLATRAM is not set
#
# Self-contained MTD device drivers
#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
@@ -626,11 +586,10 @@ CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
# Block devices
#
# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=6
+CONFIG_BLK_DEV_RAM_COUNT=4
CONFIG_BLK_DEV_RAM_SIZE=8192
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
CONFIG_BLK_DEV_INITRD=y
@@ -640,35 +599,19 @@ CONFIG_BLK_DEV_INITRD=y
#
# ATA/ATAPI/MFM/RLL support
#
-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
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_IDE_GENERIC is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
+# CONFIG_IDE is not set
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
#
# Multi-device support (RAID and LVM)
@@ -691,81 +634,7 @@ CONFIG_BLK_DEV_IDECS=m
#
# 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
-
-#
-# PHY device support
-#
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# 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
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# CONFIG_HERMES is not set
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-# CONFIG_HOSTAP is not set
-CONFIG_ACX=y
-CONFIG_ACX_MEM=y
-# CONFIG_ACX_H4000 is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-# CONFIG_NET_PCMCIA is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
+# CONFIG_NETDEVICES is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
@@ -778,15 +647,14 @@ CONFIG_NET_WIRELESS=y
# 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=y
-CONFIG_INPUT_TSDEV_SCREEN_X=240
-CONFIG_INPUT_TSDEV_SCREEN_Y=320
+# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
@@ -799,11 +667,29 @@ CONFIG_INPUT_KEYBOARD=y
# 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_GPIO_KEYS=y
CONFIG_KEYBOARD_ASIC3=y
-# CONFIG_INPUT_MOUSE is not set
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_NAVPOINT is not set
+# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# 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_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_ADC is not set
+CONFIG_TOUCHSCREEN_ADC_DEBOUNCE=y
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
# CONFIG_INPUT_MISC is not set
#
@@ -832,17 +718,41 @@ CONFIG_HW_CONSOLE=y
CONFIG_SERIAL_PXA=y
CONFIG_SERIAL_PXA_CONSOLE=y
CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_PXA_IR=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_RS232_SERIAL=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=32
#
+# 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_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_TIHTC 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
+CONFIG_I2C=m
+# CONFIG_I2C_CHARDEV is not set
#
# I2C Algorithms
@@ -854,8 +764,7 @@ CONFIG_I2C_CHARDEV=y
#
# I2C Hardware Bus support
#
-# CONFIG_I2C_ELV is not set
-CONFIG_I2C_PXA=y
+CONFIG_I2C_PXA=m
# CONFIG_I2C_PXA_SLAVE is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
@@ -872,6 +781,7 @@ CONFIG_I2C_PXA=y
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCA9535 is not set
# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
@@ -879,112 +789,33 @@ CONFIG_I2C_PXA=y
# CONFIG_I2C_DEBUG_CHIP is not set
#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_NVRAM is not set
-CONFIG_SA1100_RTC=y
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
# SPI support
#
-CONFIG_SPI=y
-CONFIG_SPI_DEBUG=y
-CONFIG_SPI_MASTER=y
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
#
-# SPI Master Controller Drivers
+# Dallas's 1-wire bus
#
-# CONFIG_SPI_BITBANG is not set
-# CONFIG_SPI_PXA2XX is not set
+# CONFIG_W1 is not set
#
-# SPI Protocol Masters
+# Hardware Monitoring support
#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
#
-# Dallas's 1-wire bus
+# Hardware Monitoring - Battery
#
+CONFIG_BATTERY_MONITOR=y
+CONFIG_ADC_BATTERY=y
+CONFIG_APM_POWER=y
#
-# Hardware Monitoring support
+# L3 serial bus support
#
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# 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_LM70 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_W83781D is not set
-# 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_HWMON_DEBUG_CHIP is not set
+# CONFIG_L3 is not set
#
# SoC drivers
@@ -993,38 +824,51 @@ CONFIG_HWMON=y
# CONFIG_SOC_T7L66XB is not set
# CONFIG_SOC_TC6387XB is not set
# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
# CONFIG_HTC_ASIC2 is not set
CONFIG_HTC_ASIC3=y
+# CONFIG_HTC_ASIC3_DS1WM is not set
# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
#
# Misc devices
#
-CONFIG_BATTERY_MONITOR=y
#
# Multimedia Capabilities Port drivers
#
# CONFIG_MCP is not set
+CONFIG_ADC=y
+CONFIG_ADC_ADS7846_SSP=y
+# CONFIG_ADC_AD7877 is not set
+# CONFIG_TIFM_CORE is not set
#
# LED devices
#
-# CONFIG_NEW_LEDS is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
#
# LED drivers
#
+CONFIG_LEDS_ASIC3=y
#
# LED Triggers
#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HWTIMER=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=y
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
#
# Digital Video Broadcasting Devices
@@ -1034,7 +878,7 @@ CONFIG_VIDEO_V4L2=y
#
# Graphics support
#
-CONFIG_FIRMWARE_EDID=y
+# CONFIG_FIRMWARE_EDID is not set
CONFIG_FB=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
@@ -1042,13 +886,14 @@ CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
# CONFIG_FB_MODE_HELPERS is not set
-CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_TILEBLITTING is not set
# CONFIG_FB_IMAGEON is not set
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_PXA=y
-CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_PXA_PARAMETERS is not set
# CONFIG_FB_MBX is not set
# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
#
# Console display driver support
@@ -1088,21 +933,19 @@ 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_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 is not set
+CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-CONFIG_SND_DEBUG_DETECT=y
-# CONFIG_SND_PCM_XRUN_DEBUG is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
#
# Generic devices
@@ -1115,17 +958,16 @@ CONFIG_SND_DEBUG_DETECT=y
#
# ALSA ARM devices
#
-CONFIG_SND_H4000=y
-# CONFIG_SND_HTCSABLE is not set
-CONFIG_SND_PXA2xx_I2SOUND=y
+CONFIG_SND_H4000=m
+CONFIG_SND_PXA2xx_I2SOUND=m
# CONFIG_SND_PXA2XX_AC97 is not set
+# CONFIG_SND_RECON is not set
#
-# PCMCIA devices
+# SoC audio support
#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-CONFIG_SND_UDA1380=y
+# CONFIG_SND_SOC is not set
+CONFIG_SND_UDA1380=m
#
# Open Sound System
@@ -1133,6 +975,11 @@ CONFIG_SND_UDA1380=y
# CONFIG_SOUND_PRIME is not set
#
+# HID Devices
+#
+# CONFIG_HID is not set
+
+#
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
@@ -1148,7 +995,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
# USB Gadget Support
#
CONFIG_USB_GADGET=y
-CONFIG_USB_GADGET_DEBUG_FILES=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_SELECTED=y
# CONFIG_USB_GADGET_NET2280 is not set
CONFIG_USB_GADGET_PXA2XX=y
@@ -1158,17 +1005,20 @@ CONFIG_USB_PXA2XX=y
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_MQ11XX is not set
# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
# CONFIG_USB_GADGET_OMAP is not set
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
# CONFIG_USB_ZERO is not set
CONFIG_USB_ETH=y
-# CONFIG_USB_ETH_RNDIS is not set
+CONFIG_USB_ETH_RNDIS=y
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
+CONFIG_USB_PXA2XX_GPIO=y
#
# MMC/SD Card support
@@ -1177,6 +1027,7 @@ CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=y
# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TIFM_SD is not set
# CONFIG_MMC_TMIO is not set
# CONFIG_MMC_SAMCOP is not set
CONFIG_MMC_ASIC3=y
@@ -1185,7 +1036,35 @@ CONFIG_MMC_ASIC3=y
# Real Time Clock
#
CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
#
# File systems
@@ -1194,10 +1073,12 @@ 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
@@ -1229,8 +1110,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# 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
@@ -1245,16 +1128,7 @@ CONFIG_RAMFS=y
# 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=m
-CONFIG_JFFS2_FS_DEBUG=1
-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_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
@@ -1337,6 +1211,11 @@ CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_UTF8=y
#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
# Profiling support
#
# CONFIG_PROFILING is not set
@@ -1344,11 +1223,14 @@ CONFIG_NLS_UTF8=y
#
# Kernel hacking
#
-# CONFIG_PRINTK_TIME is not set
+CONFIG_PRINTK_TIME=y
+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_LOG_BUF_SHIFT=15
+CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
@@ -1362,16 +1244,15 @@ CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
CONFIG_DEBUG_VM=y
+# CONFIG_DEBUG_LIST is not set
CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_DEBUG_USER=y
-# CONFIG_DEBUG_WAITQ is not set
CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
#
# Security options
@@ -1383,7 +1264,11 @@ CONFIG_DEBUG_ERRORS=y
# Cryptographic options
#
CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=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
@@ -1392,6 +1277,10 @@ CONFIG_CRYPTO_SHA1=y
# 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_CBC is not set
+# CONFIG_CRYPTO_LRW is not set
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
@@ -1415,6 +1304,7 @@ CONFIG_CRYPTO_DEFLATE=y
#
# Library routines
#
+CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=y
# CONFIG_CRC16 is not set
CONFIG_CRC32=y
@@ -1424,3 +1314,4 @@ CONFIG_ZLIB_DEFLATE=y
CONFIG_REED_SOLOMON=y
CONFIG_REED_SOLOMON_DEC16=y
CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-handhelds-2.6/h5000/.mtn2git_empty b/packages/linux/linux-handhelds-2.6/h5000/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/h5000/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/h5000/defconfig b/packages/linux/linux-handhelds-2.6/h5000/defconfig
new file mode 100644
index 0000000000..d81f16f9c6
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/h5000/defconfig
@@ -0,0 +1,1252 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20-hh6
+# Wed Apr 4 17:25:07 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+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=y
+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 is not set
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+CONFIG_IOSCHED_DEADLINE=y
+# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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_DMABOUNCE=y
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+CONFIG_ARCH_H5400=y
+CONFIG_IPAQ_H5400_BT=y
+CONFIG_IPAQ_H5400_LCD=y
+CONFIG_IPAQ_H5400_BL=y
+CONFIG_IPAQ_H5400_BATTERY=y
+CONFIG_IPAQ_H5400_LEDS=y
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_MACH_HTCATHENA is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X50 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_MACH_RECON is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA25x=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB is not set
+CONFIG_PXA_IPAQ=y
+
+#
+# XScale-based iPAQ
+#
+CONFIG_IPAQ_HANDHELD=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_DCACHE_DISABLE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+CONFIG_KEXEC=y
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+# CONFIG_IPAQ_SAMCOP_FSI is not set
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="keepinitrd"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+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_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_PXA=y
+CONFIG_PXA25x_ALTERNATE_FREQS=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=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_DPM_DEBUG=y
+CONFIG_PM_SYSFS_DEPRECATED=y
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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=y
+# CONFIG_IP_PNP_DHCP is not set
+# 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_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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# 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 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_IP_NF_QUEUE 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_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=y
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=y
+CONFIG_IRCOMM=y
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=y
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_PXA_FICP=y
+CONFIG_BT=y
+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_HCIUART is not set
+# CONFIG_BT_HCIVHCI 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
+# CONFIG_DEBUG_DRIVER is not set
+# 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 is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+# CONFIG_MTD_CHAR 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
+# 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=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+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_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
+# CONFIG_MTD_XIP 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_IPAQ=y
+# CONFIG_MTD_SHARP_SL 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
+
+#
+# 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_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+# CONFIG_NETDEVICES is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# 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=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_GPIO_KEYS=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_NAVPOINT is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# 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_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_SAMCOP=y
+# CONFIG_TOUCHSCREEN_ADC is not set
+CONFIG_TOUCHSCREEN_ADC_DEBOUNCE=y
+# CONFIG_TOUCHSCREEN_UCB1400 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_PXA_IR=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_RS232_SERIAL is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+
+#
+# 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_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_TIHTC is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_H5400_BUZZER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM 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=y
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_DS1WM=y
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+CONFIG_W1_DS2760=y
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Hardware Monitoring - Battery
+#
+CONFIG_BATTERY_MONITOR=y
+CONFIG_DS2760_BATTERY=y
+# CONFIG_ADC_BATTERY is not set
+# CONFIG_APM_POWER is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# SoC drivers
+#
+CONFIG_SOC_MQ11XX=y
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+CONFIG_SOC_SAMCOP=y
+# CONFIG_SOC_HAMCOP is not set
+CONFIG_SOC_SAMCOP_DMA=y
+# CONFIG_SOC_SAMCOP_DMA_DEBUG is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+CONFIG_ADC=y
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_ADC_AD7877 is not set
+CONFIG_ADC_SAMCOP=y
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_SAMCOP=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HWTIMER=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_PXA is not set
+# CONFIG_FB_MBX is not set
+CONFIG_FB_MQ1100=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+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
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+# CONFIG_SND is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+# CONFIG_HID is not set
+
+#
+# USB support
+#
+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
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+# CONFIG_USB_PXA2XX_GPIO is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+CONFIG_MMC_SAMCOP=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# 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_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 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 is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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 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_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
+# 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=y
+CONFIG_NLS_CODEPAGE_1251=y
+# 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=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+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_LOG_BUF_SHIFT=16
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS 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=y
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_VM=y
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC 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_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=y
+# 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_CBC is not set
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=y
+# 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=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig b/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig
index d409f0b3f5..ad5cce380d 100644
--- a/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig
+++ b/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig
@@ -1,15 +1,21 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17-hh1
-# Sun Oct 1 20:32:17 2006
+# Linux kernel version: 2.6.19-hh6
+# Sat Dec 16 20:23:29 2006
#
CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
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_ARCH_MTD_XIP=y
CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
# Code maturity level options
@@ -25,19 +31,23 @@ CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
-CONFIG_SYSCTL=y
-CONFIG_AUDIT=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
# CONFIG_MINIMAL_OOPS is not set
CONFIG_IKCONFIG_PROC=y
# CONFIG_RELAY is not set
CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-# CONFIG_EMBEDDED is not set
+CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
@@ -51,6 +61,8 @@ CONFIG_SHMEM=y
CONFIG_USELIB=y
CONFIG_CORE_DUMP=y
CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set
@@ -68,6 +80,7 @@ CONFIG_KMOD=y
#
# Block layer
#
+CONFIG_BLOCK=y
# CONFIG_BLK_DEV_IO_TRACE is not set
#
@@ -86,18 +99,27 @@ 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_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX 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 is not set
# 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=y
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
@@ -105,12 +127,6 @@ CONFIG_ARCH_PXA=y
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
#
# Intel PXA2xx Implementations
@@ -119,9 +135,11 @@ CONFIG_ARCH_PXA=y
# CONFIG_MACH_LOGICPD_PXA270 is not set
# CONFIG_MACH_MAINSTONE is not set
# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
# CONFIG_ARCH_ESERIES is not set
# CONFIG_MACH_A620 is not set
# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
# CONFIG_ARCH_H1900 is not set
# CONFIG_ARCH_H2200 is not set
# CONFIG_MACH_H3900 is not set
@@ -133,25 +151,29 @@ CONFIG_ARCH_PXA=y
CONFIG_MACH_HTCUNIVERSAL=y
CONFIG_HTCUNIVERSAL_CORE=y
CONFIG_HTCUNIVERSAL_UDC=y
-# CONFIG_HTCUNIVERSAL_POWER is not set
+CONFIG_HTCUNIVERSAL_POWER=y
+CONFIG_HTCUNIVERSAL_BACKLIGHT=y
CONFIG_HTCUNIVERSAL_LCD=y
CONFIG_HTCUNIVERSAL_TS2=y
-CONFIG_HTCUNIVERSAL_KEYPAD=y
+CONFIG_HTCUNIVERSAL_BUTTONS=y
CONFIG_HTCUNIVERSAL_BLUETOOTH=y
-# CONFIG_HTCUNIVERSAL_PHONE is not set
+CONFIG_HTCUNIVERSAL_PHONE=y
+CONFIG_HTCUNIVERSAL_AK4641=m
# CONFIG_MACH_HTCALPINE is not set
# CONFIG_MACH_MAGICIAN is not set
# CONFIG_MACH_HTCAPACHE is not set
# CONFIG_MACH_BLUEANGEL is not set
# CONFIG_MACH_HTCBEETLES is not set
-# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_HW6900 is not set
# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
# CONFIG_MACH_X30 is not set
# CONFIG_ARCH_ROVERP1 is not set
# CONFIG_ARCH_ROVERP5P is not set
# CONFIG_MACH_XSCALE_PALMLD is not set
# CONFIG_MACH_T3XSCALE is not set
# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
CONFIG_PXA27x=y
# CONFIG_SA1100_H3100 is not set
# CONFIG_SA1100_H3600 is not set
@@ -171,11 +193,14 @@ 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 is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
CONFIG_XSCALE_PMU=y
# CONFIG_KEXEC is not set
@@ -190,7 +215,6 @@ CONFIG_XSCALE_PMU=y
#
# Compaq/HP iPAQ Drivers
#
-# CONFIG_IPAQ_HAMCOP is not set
#
# Bus support
@@ -218,6 +242,7 @@ 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
#
@@ -257,6 +282,8 @@ CONFIG_BINFMT_ELF=y
CONFIG_PM=y
CONFIG_PM_LEGACY=y
CONFIG_PM_DEBUG=y
+# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
CONFIG_APM=y
#
@@ -271,6 +298,9 @@ CONFIG_NET=y
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=y
@@ -287,15 +317,20 @@ CONFIG_IP_PNP_DHCP=y
# 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_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=y
# CONFIG_INET_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
# 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
#
@@ -321,7 +356,6 @@ CONFIG_TCP_CONG_BIC=y
# 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
@@ -381,6 +415,7 @@ CONFIG_IRTTY_SIR=m
# CONFIG_USB_IRDA is not set
# CONFIG_SIGMATEL_FIR is not set
CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR is not set
CONFIG_BT=m
CONFIG_BT_L2CAP=m
CONFIG_BT_SCO=m
@@ -401,7 +436,7 @@ CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_BCSP=y
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBPA10X is not set
-CONFIG_BT_HCIBFUSB=m
+# CONFIG_BT_HCIBFUSB is not set
# CONFIG_BT_HCIVHCI is not set
# CONFIG_IEEE80211 is not set
CONFIG_WIRELESS_EXT=y
@@ -416,6 +451,7 @@ CONFIG_WIRELESS_EXT=y
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
#
# Connector - unified userspace <-> kernelspace linker
@@ -459,6 +495,7 @@ CONFIG_BLK_DEV_LOOP=y
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
+# CONFIG_SCSI_NETLINK is not set
# CONFIG_SCSI_PROC_FS is not set
#
@@ -479,21 +516,26 @@ CONFIG_SCSI=y
# CONFIG_SCSI_LOGGING is not set
#
-# SCSI Transport Attributes
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
#
# SCSI low-level drivers
#
# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
# CONFIG_SCSI_DEBUG is not set
#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
@@ -528,6 +570,7 @@ CONFIG_NETDEVICES=y
# Ethernet (10 or 100Mbit)
#
# CONFIG_NET_ETHERNET is not set
+CONFIG_MII=y
#
# Ethernet (1000 Mbit)
@@ -551,6 +594,7 @@ CONFIG_NET_RADIO=y
# Obsolete Wireless cards support (pre-802.11)
#
# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
# CONFIG_HOSTAP is not set
CONFIG_ACX=m
# CONFIG_ACX_USB is not set
@@ -571,6 +615,7 @@ CONFIG_PPP_BSDCOMP=m
# CONFIG_PPP_MPPE is not set
CONFIG_PPPOE=m
# CONFIG_SLIP is not set
+CONFIG_SLHC=m
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
@@ -585,14 +630,12 @@ CONFIG_PPPOE=m
# Input device support
#
CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
#
# Userland interfaces
#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
+# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
@@ -602,11 +645,15 @@ CONFIG_INPUT_EVDEV=y
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=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_GPIO_KEYS=y
+CONFIG_KEYBOARD_ASIC3=y
+CONFIG_KEYBOARD_PXA27x=y
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -617,7 +664,7 @@ CONFIG_KEYBOARD_ATKBD=y
#
CONFIG_SERIO=y
# CONFIG_SERIO_SERPORT is not set
-CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set
@@ -627,6 +674,7 @@ CONFIG_SERIO_LIBPS2=y
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
#
@@ -645,6 +693,31 @@ CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
# I2C support
#
CONFIG_I2C=y
@@ -653,7 +726,7 @@ CONFIG_I2C_CHARDEV=y
#
# I2C Algorithms
#
-# CONFIG_I2C_ALGOBIT is not set
+CONFIG_I2C_ALGOBIT=m
# CONFIG_I2C_ALGOPCF is not set
# CONFIG_I2C_ALGOPCA is not set
@@ -661,7 +734,9 @@ CONFIG_I2C_CHARDEV=y
# I2C Hardware Bus support
#
# CONFIG_I2C_ELV is not set
-# CONFIG_I2C_PXA is not set
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_PCA_ISA is not set
@@ -671,11 +746,12 @@ CONFIG_I2C_CHARDEV=y
#
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
-CONFIG_SENSORS_EEPROM=y
+# CONFIG_SENSORS_EEPROM is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCA9535 is not set
# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
@@ -683,41 +759,6 @@ CONFIG_SENSORS_EEPROM=y
# CONFIG_I2C_DEBUG_CHIP is not set
#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-CONFIG_SA1100_RTC=y
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
# SPI support
#
CONFIG_SPI=y
@@ -741,8 +782,57 @@ CONFIG_SPI_BITBANG=y
#
# Hardware Monitoring support
#
-# CONFIG_HWMON is not set
+CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set
+# 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_LM70 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Hardware Monitoring - Battery
+#
+CONFIG_BATTERY_MONITOR=y
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
#
# SoC drivers
@@ -751,19 +841,23 @@ CONFIG_SPI_BITBANG=y
# CONFIG_SOC_T7L66XB is not set
# CONFIG_SOC_TC6387XB is not set
# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
# CONFIG_HTC_ASIC2 is not set
CONFIG_HTC_ASIC3=y
# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
#
# Misc devices
#
-CONFIG_BATTERY_MONITOR=y
#
# Multimedia Capabilities Port drivers
#
# CONFIG_MCP is not set
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_TIFM_CORE is not set
#
# LED devices
@@ -782,7 +876,6 @@ CONFIG_BATTERY_MONITOR=y
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
#
# Digital Video Broadcasting Devices
@@ -793,19 +886,23 @@ CONFIG_VIDEO_V4L2=y
#
# Graphics support
#
+CONFIG_FIRMWARE_EDID=y
CONFIG_FB=y
+# CONFIG_FB_DDC is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_MACMODES is not set
-CONFIG_FB_FIRMWARE_EDID=y
+# CONFIG_FB_BACKLIGHT is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_TILEBLITTING is not set
# CONFIG_FB_IMAGEON is not set
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_PXA=y
-CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
#
# Console display driver support
@@ -843,7 +940,54 @@ CONFIG_BACKLIGHT_CORGI=y
#
# Sound
#
-# CONFIG_SOUND is not set
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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 is not set
+# 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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_HTCUNIVERSAL=m
+CONFIG_SND_PXA2xx_I2SOUND=m
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
#
# USB support
@@ -867,7 +1011,7 @@ CONFIG_USB_DEVICEFS=y
# USB Host Controller Drivers
#
# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD=m
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# CONFIG_USB_SL811_HCD is not set
@@ -924,15 +1068,16 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# 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=y
CONFIG_USB_NET_CDCETHER=y
# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=y
+# CONFIG_USB_NET_NET1080 is not set
# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
# CONFIG_USB_NET_RNDIS_HOST is not set
# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=y
-# CONFIG_USB_ZD1201 is not set
+# CONFIG_USB_NET_ZAURUS is not set
# CONFIG_USB_MON is not set
#
@@ -942,23 +1087,63 @@ CONFIG_USB_NET_ZAURUS=y
#
# USB Serial Converter support
#
-# CONFIG_USB_SERIAL is not set
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP2101 is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
#
# 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_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_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_TEST is not set
#
@@ -988,7 +1173,8 @@ CONFIG_USB_ETH=m
# CONFIG_USB_ETH_RNDIS is not set
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
#
@@ -998,6 +1184,7 @@ CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=y
# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TIFM_SD is not set
# CONFIG_MMC_TMIO is not set
# CONFIG_MMC_SAMCOP is not set
CONFIG_MMC_ASIC3=y
@@ -1006,7 +1193,34 @@ CONFIG_MMC_ASIC3=y
# Real Time Clock
#
CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
#
# File systems
@@ -1016,16 +1230,19 @@ CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL 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=y
CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
@@ -1046,16 +1263,16 @@ CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=850
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-15"
-CONFIG_NTFS_FS=y
-# CONFIG_NTFS_DEBUG is not set
-# CONFIG_NTFS_RW is not set
+# 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
@@ -1080,8 +1297,20 @@ CONFIG_CRAMFS=y
#
# Network File Systems
#
-# CONFIG_NFS_FS is not set
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_ACL_SUPPORT=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=y
CONFIG_SMB_NLS_REMOTE="utf8"
@@ -1114,7 +1343,7 @@ CONFIG_NLS_CODEPAGE_850=y
# 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_865=y
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
@@ -1150,13 +1379,15 @@ CONFIG_NLS_UTF8=y
# 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=y
+# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_FS is not set
CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
+# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_USER is not set
#
@@ -1169,6 +1400,10 @@ CONFIG_FRAME_POINTER=y
# Cryptographic options
#
CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
@@ -1178,6 +1413,8 @@ CONFIG_CRYPTO_SHA1=y
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
@@ -1207,3 +1444,4 @@ CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-handhelds-2.6/hx4700/defconfig b/packages/linux/linux-handhelds-2.6/hx4700/defconfig
index 8914f07dbb..49111f9b48 100644
--- a/packages/linux/linux-handhelds-2.6/hx4700/defconfig
+++ b/packages/linux/linux-handhelds-2.6/hx4700/defconfig
@@ -148,11 +148,14 @@ CONFIG_ARCH_PXA=y
CONFIG_MACH_H4700=y
CONFIG_HX4700_NAVPOINT=y
CONFIG_HX4700_CORE=y
-CONFIG_HX4700_TS=y
+# CONFIG_HX4700_TS is not set
CONFIG_HX4700_BLUETOOTH=y
CONFIG_HX4700_PCMCIA=y
CONFIG_HX4700_LCD=y
CONFIG_HX4700_LEDS=y
+CONFIG_HX4700_BATTERY=y
+# CONFIG_HX4700_POWER is not set
+CONFIG_HX4700_UDC=y
# CONFIG_MACH_HX2750 is not set
# CONFIG_ARCH_H5400 is not set
# CONFIG_MACH_HIMALAYA is not set
@@ -163,20 +166,22 @@ CONFIG_HX4700_LEDS=y
# CONFIG_MACH_BLUEANGEL is not set
# CONFIG_MACH_HTCBEETLES is not set
# CONFIG_MACH_HW6900 is not set
+# CONFIG_MACH_HTCATHENA is not set
# CONFIG_ARCH_AXIMX3 is not set
# CONFIG_ARCH_AXIMX5 is not set
# CONFIG_MACH_X30 is not set
+# CONFIG_MACH_X50 is not set
# CONFIG_ARCH_ROVERP1 is not set
# CONFIG_ARCH_ROVERP5P is not set
# CONFIG_MACH_XSCALE_PALMLD is not set
# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_MACH_RECON is not set
# CONFIG_PXA_SHARPSL is not set
# CONFIG_MACH_TRIZEPS4 is not set
CONFIG_PXA27x=y
CONFIG_IWMMXT=y
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
+CONFIG_PXA27x_VOLTAGE=m
+CONFIG_PXA27x_VOLTAGE_MAX158xx=m
#
# Linux As Bootloader
@@ -386,24 +391,12 @@ CONFIG_BRIDGE_NETFILTER=y
# 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_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 is not set
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-# CONFIG_IP_NF_TFTP is not set
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_PPTP is not set
-# CONFIG_IP_NF_H323 is not set
-# CONFIG_IP_NF_SIP is not set
# CONFIG_IP_NF_QUEUE is not set
#
@@ -567,6 +560,7 @@ CONFIG_MTD_PARTITIONS=y
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -909,7 +903,7 @@ CONFIG_KEYBOARD_ATKBD=m
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_GPIO_KEYS=y
-# CONFIG_KEYBOARD_ASIC3 is not set
+CONFIG_KEYBOARD_ASIC3=y
# CONFIG_KEYBOARD_PXA27x is not set
CONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not set
@@ -917,7 +911,20 @@ CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_NAVPOINT=y
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# 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_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_ADC is not set
+CONFIG_TOUCHSCREEN_ADC_DEBOUNCE=y
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_UINPUT=m
@@ -954,8 +961,10 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_PXA=y
CONFIG_SERIAL_PXA_CONSOLE=y
CONFIG_SERIAL_PXA_COUNT=4
+# CONFIG_SERIAL_PXA_IR is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_RS232_SERIAL=y
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
@@ -1052,7 +1061,22 @@ CONFIG_I2C_PXA=m
#
# Dallas's 1-wire bus
#
-# CONFIG_W1 is not set
+CONFIG_W1=y
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_DS2490 is not set
+# CONFIG_W1_MASTER_DS2482 is not set
+CONFIG_W1_DS1WM=y
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+CONFIG_W1_DS2760=y
#
# Hardware Monitoring support
@@ -1097,12 +1121,18 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
+#
+# Hardware Monitoring - Battery
+#
CONFIG_BATTERY_MONITOR=y
+CONFIG_DS2760_BATTERY=y
+CONFIG_ADC_BATTERY=y
+CONFIG_APM_POWER=y
#
# L3 serial bus support
#
-CONFIG_L3=m
+# CONFIG_L3 is not set
#
# SoC drivers
@@ -1115,6 +1145,7 @@ CONFIG_L3=m
# CONFIG_SOC_HAMCOP is not set
# CONFIG_HTC_ASIC2 is not set
CONFIG_HTC_ASIC3=y
+CONFIG_HTC_ASIC3_DS1WM=y
# CONFIG_SOC_TSC2101 is not set
# CONFIG_SOC_TSC2200 is not set
@@ -1126,7 +1157,9 @@ CONFIG_HTC_ASIC3=y
# Multimedia Capabilities Port drivers
#
# CONFIG_MCP is not set
-# CONFIG_ADC_ADS7846_SSP is not set
+CONFIG_ADC=y
+CONFIG_ADC_ADS7846_SSP=y
+# CONFIG_ADC_AD7877 is not set
# CONFIG_TIFM_CORE is not set
#
@@ -1145,7 +1178,7 @@ CONFIG_LEDS_ASIC3=y
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_TIMER_ASIC3=y
+CONFIG_LEDS_TRIGGER_HWTIMER=y
# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
CONFIG_LEDS_TRIGGER_SHARED=y
@@ -1317,6 +1350,11 @@ CONFIG_SND_AK4641=m
# CONFIG_SOUND_PRIME is not set
#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
@@ -1375,7 +1413,6 @@ CONFIG_USB_STORAGE=m
# 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
@@ -1475,6 +1512,7 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_MQ11XX is not set
# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
# CONFIG_USB_GADGET_OMAP is not set
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
@@ -1620,7 +1658,6 @@ CONFIG_HFSPLUS_FS=m
# 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
diff --git a/packages/linux/linux-handhelds-2.6/hx4700/defconfig.main b/packages/linux/linux-handhelds-2.6/hx4700/defconfig.main
new file mode 100644
index 0000000000..576f9c3c5e
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/hx4700/defconfig.main
@@ -0,0 +1,1811 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19-hh3
+# Tue Dec 5 23:50:28 2006
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_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=y
+# CONFIG_MINIMAL_OOPS is not set
+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=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_USELIB is not set
+CONFIG_CORE_DUMP=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+CONFIG_IOSCHED_DEADLINE=y
+# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+CONFIG_MACH_H4700=y
+CONFIG_HX4700_NAVPOINT=y
+CONFIG_HX4700_CORE=y
+CONFIG_HX4700_TS=y
+CONFIG_HX4700_BLUETOOTH=y
+CONFIG_HX4700_PCMCIA=y
+CONFIG_HX4700_LCD=y
+CONFIG_HX4700_LEDS=y
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X30 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA27x=y
+CONFIG_IWMMXT=y
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_DCACHE_DISABLE is not set
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Platforms
+#
+CONFIG_PXA_IPAQ=y
+
+#
+# XScale-based iPAQ
+#
+CONFIG_IPAQ_HANDHELD=y
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+
+#
+# Bus support
+#
+
+#
+# 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_PCMCIA_PXA2XX=y
+
+#
+# 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="keepinitrd"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+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_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_PXA=y
+CONFIG_PXA25x_ALTERNATE_FREQS=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=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SYSFS_DEPRECATED=y
+CONFIG_APM=y
+
+#
+# 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=m
+# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_NET_KEY=m
+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=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=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=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+# CONFIG_INET_XFRM_MODE_BEET is not set
+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=y
+# 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 is not set
+# 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 is not set
+
+#
+# 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 is not set
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_H323 is not set
+# CONFIG_IP_NF_SIP is not set
+# CONFIG_IP_NF_QUEUE is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+
+#
+# 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 is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+CONFIG_IRPORT_SIR=m
+
+#
+# Old Serial dongle support
+#
+# CONFIG_DONGLE_OLD is not set
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+# CONFIG_PXA_FICP is not set
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
+# CONFIG_BT_HCIBLUECARD is not set
+CONFIG_BT_HCIBTUART=m
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=y
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=y
+CONFIG_IEEE80211_CRYPT_CCMP=y
+CONFIG_IEEE80211_CRYPT_TKIP=y
+# CONFIG_IEEE80211_SOFTMAC 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_DEBUG_DRIVER is not set
+# 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 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=m
+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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+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_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
+# CONFIG_MTD_XIP 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_IPAQ is not set
+# CONFIG_MTD_SHARP_SL 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
+
+#
+# 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_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+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=y
+CONFIG_IDE_MAX_HWIFS=4
+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_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+# CONFIG_IDE_ARM 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=m
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+# CONFIG_BLK_DEV_SD is not set
+# 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
+
+#
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+CONFIG_MII=m
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# 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
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+# CONFIG_PCMCIA_SPECTRUM is not set
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_USB_ZD1201=m
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_CS=m
+CONFIG_ACX=y
+# CONFIG_ACX_USB is not set
+CONFIG_ACX_MEM=y
+CONFIG_ACX_HX4700=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+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=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=m
+# 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_GPIO_KEYS=y
+# CONFIG_KEYBOARD_ASIC3 is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+CONFIG_MOUSE_NAVPOINT=y
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=m
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_LIBPS2=m
+CONFIG_SERIO_RAW=m
+# 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=m
+CONFIG_SERIAL_8250_CS=m
+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_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+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_SA1100_WATCHDOG=m
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+CONFIG_SA1100_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# 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_ELV is not set
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 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 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# 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_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_BATTERY_MONITOR=y
+
+#
+# L3 serial bus support
+#
+CONFIG_L3=m
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_ASIC3=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_TIMER_ASIC3=y
+# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=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_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 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 is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+CONFIG_USB_SN9C102=m
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_USB_DSBR is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_PXA is not set
+# CONFIG_FB_MBX is not set
+CONFIG_FB_W100=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_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 is not set
+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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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=y
+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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_HX4700=m
+CONFIG_SND_PXA2xx_I2SOUND=m
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+CONFIG_SND_AK4641=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 is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# 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_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_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+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_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# 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=m
+# 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 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 Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+# CONFIG_USB_USBNET_MII is not set
+CONFIG_USB_USBNET=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 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+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=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_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
+
+#
+# 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_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=m
+# CONFIG_USB_PXA27X_DMA is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+# CONFIG_USB_ETH_RNDIS is not set
+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_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_ASIC3=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+# CONFIG_EXT2_FS_SECURITY is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+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=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=y
+CONFIG_REISERFS_FS_XATTR=y
+# CONFIG_REISERFS_FS_POSIX_ACL is not set
+# CONFIG_REISERFS_FS_SECURITY is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_SECURITY=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_RT=y
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=m
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_QUOTACTL=y
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=m
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+CONFIG_HFSPLUS_FS=m
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+# 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=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=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=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+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=m
+
+#
+# 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=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+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=y
+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=y
+
+#
+# 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=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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=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 is not set
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-handhelds-2.6/hx4700/defconfig.old b/packages/linux/linux-handhelds-2.6/hx4700/defconfig.old
new file mode 100644
index 0000000000..e34bdb7916
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/hx4700/defconfig.old
@@ -0,0 +1,1765 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.18-hh2
+# Sat Dec 2 19:05:03 2006
+#
+CONFIG_ARM=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_ARCH_MTD_XIP=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_MINIMAL_OOPS is not set
+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_ALL is not set
+# 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_USELIB is not set
+CONFIG_CORE_DUMP=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+CONFIG_IOSCHED_DEADLINE=y
+# 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_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+CONFIG_MACH_H4700=y
+CONFIG_HX4700_NAVPOINT=y
+CONFIG_HX4700_CORE=y
+CONFIG_HX4700_TS=y
+CONFIG_HX4700_BLUETOOTH=y
+CONFIG_HX4700_PCMCIA=y
+CONFIG_HX4700_LCD=y
+CONFIG_HX4700_LEDS=y
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X30 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA27x=y
+CONFIG_IWMMXT=y
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Platforms
+#
+CONFIG_PXA_IPAQ=y
+
+#
+# XScale-based iPAQ
+#
+CONFIG_IPAQ_HANDHELD=y
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+
+#
+# Bus support
+#
+
+#
+# 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_PCMCIA_PXA2XX=y
+
+#
+# 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="keepinitrd"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+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_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_PXA=y
+CONFIG_PXA25x_ALTERNATE_FREQS=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=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# 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=m
+CONFIG_NET_KEY=m
+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=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=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=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=y
+# 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 is not set
+
+#
+# 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 is not set
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_H323 is not set
+# CONFIG_IP_NF_SIP is not set
+# CONFIG_IP_NF_QUEUE is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+
+#
+# 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 is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+CONFIG_IRPORT_SIR=m
+
+#
+# Old Serial dongle support
+#
+# CONFIG_DONGLE_OLD is not set
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+# CONFIG_PXA_FICP is not set
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
+# CONFIG_BT_HCIBLUECARD is not set
+CONFIG_BT_HCIBTUART=m
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=y
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=y
+CONFIG_IEEE80211_CRYPT_CCMP=y
+CONFIG_IEEE80211_CRYPT_TKIP=y
+# CONFIG_IEEE80211_SOFTMAC 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_DEBUG_DRIVER is not set
+# 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 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=m
+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
+
+#
+# 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=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+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_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
+# CONFIG_MTD_XIP 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_IPAQ is not set
+# CONFIG_MTD_SHARP_SL 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
+
+#
+# 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_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+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=y
+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_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+# CONFIG_IDE_ARM 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=m
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+# CONFIG_BLK_DEV_SD is not set
+# 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
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# 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_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+CONFIG_MII=m
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# 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
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+# CONFIG_PCMCIA_SPECTRUM is not set
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_USB_ZD1201=m
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_CS=m
+CONFIG_ACX=y
+# CONFIG_ACX_USB is not set
+CONFIG_ACX_MEM=y
+CONFIG_ACX_HX4700=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+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=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=m
+# 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_GPIO_KEYS=y
+# CONFIG_KEYBOARD_ASIC3 is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+CONFIG_MOUSE_NAVPOINT=y
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=m
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_LIBPS2=m
+CONFIG_SERIO_RAW=m
+# 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=m
+CONFIG_SERIAL_8250_CS=m
+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_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+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_SA1100_WATCHDOG=m
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+CONFIG_SA1100_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# 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_ELV is not set
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 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=y
+# CONFIG_HWMON_VID is not set
+# 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_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_W83781D is not set
+# 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_HWMON_DEBUG_CHIP is not set
+CONFIG_BATTERY_MONITOR=y
+
+#
+# L3 serial bus support
+#
+CONFIG_L3=m
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+# CONFIG_SOC_TSC2101 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_ASIC3=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_TIMER_ASIC3=y
+# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=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 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
+
+#
+# Encoders and Decoders
+#
+# CONFIG_VIDEO_MSP3400 is not set
+# CONFIG_VIDEO_CS53L32A is not set
+# CONFIG_VIDEO_TLV320AIC23B is not set
+# CONFIG_VIDEO_WM8775 is not set
+# CONFIG_VIDEO_WM8739 is not set
+# CONFIG_VIDEO_CX2341X is not set
+# CONFIG_VIDEO_CX25840 is not set
+# CONFIG_VIDEO_SAA711X is not set
+# CONFIG_VIDEO_SAA7127 is not set
+# CONFIG_VIDEO_UPD64031A is not set
+# CONFIG_VIDEO_UPD64083 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 is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+CONFIG_USB_SN9C102=m
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_USB_DSBR is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_PXA is not set
+# CONFIG_FB_MBX is not set
+CONFIG_FB_W100=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_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 is not set
+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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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=y
+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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_HX4700=m
+CONFIG_SND_PXA2xx_I2SOUND=m
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+CONFIG_SND_AK4641=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 is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# 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_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_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+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_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=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=m
+# 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 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 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_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=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=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_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_LD 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_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=m
+# CONFIG_USB_PXA27X_DMA is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+# CONFIG_USB_ETH_RNDIS is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+CONFIG_MMC_ASIC3=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+# CONFIG_EXT2_FS_SECURITY is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY 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=y
+CONFIG_REISERFS_FS_XATTR=y
+# CONFIG_REISERFS_FS_POSIX_ACL is not set
+# CONFIG_REISERFS_FS_SECURITY is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_SECURITY=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_RT=y
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=m
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_QUOTACTL=y
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=m
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+CONFIG_HFSPLUS_FS=m
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+# 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=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=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=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+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=m
+
+#
+# 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=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+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=y
+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=y
+
+#
+# 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=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS 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=y
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_UNWIND_INFO is not set
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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=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 is not set
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-handhelds-2.6/magician/.mtn2git_empty b/packages/linux/linux-handhelds-2.6/magician/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/magician/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/magician/defconfig b/packages/linux/linux-handhelds-2.6/magician/defconfig
new file mode 100644
index 0000000000..d542ccef14
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6/magician/defconfig
@@ -0,0 +1,1556 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20-hh3
+# Sun Mar 25 13:00:41 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_IPC_NS is not set
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# 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=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_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=y
+# CONFIG_MODVERSIONS is not set
+# 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=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"
+
+#
+# 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 is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+CONFIG_MACH_MAGICIAN=y
+CONFIG_MAGICIAN_PM=y
+CONFIG_MAGICIAN_TS=m
+CONFIG_MAGICIAN_LCD=y
+CONFIG_MAGICIAN_CPLD=y
+CONFIG_MAGICIAN_DS1WM=y
+CONFIG_MAGICIAN_PHONE=m
+CONFIG_MAGICIAN_FLASH=m
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_MACH_HTCATHENA is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X50 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_MACH_RECON is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=m
+CONFIG_PXA_SUSPEND_SAVE_EXTRA_REGS=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB 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_DCACHE_DISABLE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+
+#
+# Bus support
+#
+
+#
+# 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="console=tty0 noinitrd root=/dev/mmcblk0p2 ro mem=63M debug"
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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_DPM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM=y
+
+#
+# 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=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=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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+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
+
+#
+# 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_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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR 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 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=m
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=3
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
+# 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=m
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=m
+# 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=m
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=m
+# 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
+# CONFIG_MTD_XIP 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_SHARP_SL 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
+
+#
+# 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_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 is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# 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 is not set
+# CONFIG_PPP_DEFLATE is not set
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# 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
+
+#
+# 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=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_GPIO_KEYS=y
+# CONFIG_KEYBOARD_PXA27x is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# 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_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_ADC is not set
+CONFIG_TOUCHSCREEN_ADC_DEBOUNCE=m
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+# CONFIG_SERIAL_PXA_CONSOLE is not set
+CONFIG_SERIAL_PXA_COUNT=4
+# CONFIG_SERIAL_PXA_IR is not set
+CONFIG_SERIAL_CORE=y
+# CONFIG_RS232_SERIAL is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# 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_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+CONFIG_TIHTC=m
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=m
+
+#
+# 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_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 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=y
+CONFIG_W1_CON=y
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_DS2490 is not set
+# CONFIG_W1_MASTER_DS2482 is not set
+CONFIG_W1_DS1WM=y
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+CONFIG_W1_DS2760=y
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# 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_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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
+
+#
+# Hardware Monitoring - Battery
+#
+CONFIG_BATTERY_MONITOR=y
+CONFIG_MAGICIAN_BATTERY=y
+CONFIG_DS2760_BATTERY=y
+# CONFIG_ADC_BATTERY is not set
+CONFIG_APM_POWER=y
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+CONFIG_ADC_ADS7846_SSP=m
+# CONFIG_ADC_AD7877 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_MAGICIAN=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+# CONFIG_LEDS_TRIGGER_HWTIMER is not set
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_SHARED is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_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 is not set
+# 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=y
+# 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 is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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 is not set
+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
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+# CONFIG_SND_RECON is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=m
+
+#
+# Soc Platforms
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2xx_SOC=m
+CONFIG_SND_PXA2xx_SOC_I2S=m
+CONFIG_SND_PXA2xx_SOC_SSP=m
+CONFIG_SND_PXA2xx_SOC_MAGICIAN=m
+# CONFIG_SND_PXA2xx_SOC_BLUEANGEL is not set
+# CONFIG_SND_PXA2xx_SOC_H5000 is not set
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Freescale i.MX
+#
+
+#
+# SoC Audio for the Samsung S3C24XX
+#
+
+#
+# Soc Codecs
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_WM8711 is not set
+# CONFIG_SND_SOC_WM8510 is not set
+# CONFIG_SND_SOC_WM8731 is not set
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM8956 is not set
+# CONFIG_SND_SOC_WM8960 is not set
+# CONFIG_SND_SOC_WM8976 is not set
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM8980 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+# CONFIG_SND_SOC_WM9712 is not set
+CONFIG_SND_SOC_UDA1380=m
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# 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_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_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_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_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# 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 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
+
+#
+# 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_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_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_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA27X_DMA is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+# CONFIG_USB_ETH_RNDIS is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+CONFIG_USB_FILE_STORAGE_TEST=y
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# 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 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=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 is not set
+# 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 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 is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+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 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=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=y
+CONFIG_NLS_DEFAULT="cp437"
+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=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# 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_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC 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=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+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 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=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_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-handhelds-2.6/rx3000/defconfig b/packages/linux/linux-handhelds-2.6/rx3000/defconfig
index 3d915d7f8f..cf5cea0a4b 100644
--- a/packages/linux/linux-handhelds-2.6/rx3000/defconfig
+++ b/packages/linux/linux-handhelds-2.6/rx3000/defconfig
@@ -1,11 +1,13 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.18-hh1
-# Wed Nov 29 21:13:14 2006
+# Linux kernel version: 2.6.19-hh8
+# Mon Jan 22 13:41:47 2007
#
CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
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
@@ -28,19 +30,21 @@ CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
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=y
-# CONFIG_MINIMAL_OOPS is not set
CONFIG_IKCONFIG_PROC=y
# CONFIG_RELAY is not set
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-# CONFIG_EMBEDDED is not set
-CONFIG_UID16=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
@@ -51,8 +55,6 @@ CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SHMEM=y
-CONFIG_USELIB=y
-CONFIG_CORE_DUMP=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
@@ -73,6 +75,7 @@ CONFIG_KMOD=y
#
# Block layer
#
+CONFIG_BLOCK=y
# CONFIG_BLK_DEV_IO_TRACE is not set
#
@@ -105,7 +108,8 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP23XX is not set
@@ -118,16 +122,15 @@ CONFIG_ARCH_S3C2410=y
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_OMAP is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
#
# S3C24XX Implementations
#
+# CONFIG_MACH_AML_M5900 is not set
# CONFIG_MACH_ANUBIS is not set
# CONFIG_MACH_OSIRIS is not set
# CONFIG_ARCH_BAST is not set
+CONFIG_PM_H1940=y
# CONFIG_ARCH_H1940 is not set
# CONFIG_MACH_N30 is not set
# CONFIG_ARCH_SMDK2410 is not set
@@ -135,9 +138,16 @@ CONFIG_ARCH_S3C2410=y
# CONFIG_MACH_SMDK2413 is not set
# CONFIG_MACH_VR1000 is not set
CONFIG_MACH_RX3715=y
+CONFIG_RX3715_LEDS=m
+CONFIG_RX3715_BLUETOOTH=m
+# CONFIG_MACH_HTCHERMES is not set
+# CONFIG_MACH_HTC_TRINITY is not set
# CONFIG_MACH_OTOM is not set
# CONFIG_MACH_NEXCODER_2440 is not set
+# CONFIG_MACH_VSTMS is not set
+# CONFIG_MACH_G500 is not set
CONFIG_S3C2410_CLOCK=y
+CONFIG_S3C2410_PM=y
CONFIG_CPU_S3C244X=y
CONFIG_CPU_S3C2440=y
@@ -172,6 +182,8 @@ CONFIG_CPU_CACHE_V4WT=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
@@ -183,10 +195,6 @@ CONFIG_ARM_THUMB=y
# CONFIG_KEXEC is not set
#
-# Compaq/iPAQ Platforms
-#
-
-#
# Compaq/iPAQ Drivers
#
@@ -209,7 +217,8 @@ CONFIG_ARM_THUMB=y
# CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set
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
@@ -225,9 +234,9 @@ CONFIG_ALIGNMENT_TRAP=y
#
# Boot options
#
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CMDLINE="root=/dev/mmcblk0p2"
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
# CONFIG_XIP_KERNEL is not set
#
@@ -247,7 +256,6 @@ CONFIG_FPE_NWFPE=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
CONFIG_BINFMT_MISC=y
-# CONFIG_ARTHUR is not set
#
# Power management options
@@ -255,6 +263,8 @@ CONFIG_BINFMT_MISC=y
CONFIG_PM=y
CONFIG_PM_LEGACY=y
CONFIG_PM_DEBUG=y
+# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
CONFIG_APM=y
#
@@ -271,6 +281,7 @@ 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=y
@@ -289,10 +300,12 @@ CONFIG_IP_FIB_HASH=y
# 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_BIC=y
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
#
# IP: Virtual Server Configuration
@@ -389,7 +402,7 @@ CONFIG_IRDA_FAST_RR=y
#
# SIR device drivers
#
-CONFIG_IRTTY_SIR=y
+CONFIG_IRTTY_SIR=m
#
# Dongle support
@@ -421,11 +434,12 @@ CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
-CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
-# CONFIG_BT_HCIUART_BCSP is not set
+CONFIG_BT_HCIUART_BCSP=y
# CONFIG_BT_HCIVHCI is not set
# CONFIG_IEEE80211 is not set
+CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -465,6 +479,7 @@ CONFIG_MTD_BLOCK=y
# 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
@@ -560,6 +575,12 @@ CONFIG_BLK_DEV_INITRD=y
#
# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
#
# Multi-device support (RAID and LVM)
@@ -612,7 +633,17 @@ CONFIG_NETDEVICES=y
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_HOSTAP is not set
+CONFIG_ACX=m
+CONFIG_ACX_MEM=y
+CONFIG_ACX_RX3715=m
#
# Wan interfaces
@@ -628,6 +659,7 @@ CONFIG_PPP_BSDCOMP=y
# CONFIG_PPP_MPPE is not set
# CONFIG_PPPOE 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
@@ -642,18 +674,14 @@ CONFIG_PPP_BSDCOMP=y
# Input device support
#
CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS 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_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_TSDEV=y
-CONFIG_INPUT_TSDEV_SCREEN_X=240
-CONFIG_INPUT_TSDEV_SCREEN_Y=320
+# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
@@ -666,19 +694,26 @@ CONFIG_INPUT_KEYBOARD=y
# 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_GPIO_KEYS=y
CONFIG_KEYBOARD_ASIC3=y
-CONFIG_INPUT_MOUSE=y
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_NAVPOINT is not set
-# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_S3C2410_BUTTONS is not set
+# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
CONFIG_INPUT_TOUCHSCREEN=y
# 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_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_S3C2410=y
+# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
+# CONFIG_TOUCHSCREEN_S3C2410_ALT is not set
# CONFIG_INPUT_MISC is not set
#
@@ -686,6 +721,7 @@ CONFIG_INPUT_TOUCHSCREEN=y
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set
@@ -732,7 +768,6 @@ CONFIG_WATCHDOG=y
CONFIG_S3C2410_WATCHDOG=y
CONFIG_HW_RANDOM=y
# CONFIG_NVRAM is not set
-# CONFIG_S3C2410_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
@@ -745,13 +780,12 @@ CONFIG_HW_RANDOM=y
# TPM devices
#
# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
#
# I2C support
#
CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_CHARDEV=y
#
# I2C Algorithms
@@ -763,7 +797,6 @@ CONFIG_I2C_CHARDEV=m
#
# I2C Hardware Bus support
#
-# CONFIG_I2C_ELV is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
CONFIG_I2C_S3C2410=m
@@ -780,10 +813,11 @@ CONFIG_I2C_S3C2410=m
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCA9535 is not set
# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 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=y
+# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
@@ -817,7 +851,12 @@ CONFIG_W1_DS2760=m
#
# CONFIG_HWMON is not set
# CONFIG_HWMON_VID is not set
-CONFIG_BATTERY_MONITOR=y
+
+#
+# Hardware Monitoring - Battery
+#
+CONFIG_BATTERY_MONITOR=m
+CONFIG_RX3715_BATTERY=m
#
# L3 serial bus support
@@ -833,7 +872,9 @@ CONFIG_BATTERY_MONITOR=y
# CONFIG_SOC_HAMCOP is not set
# CONFIG_HTC_ASIC2 is not set
CONFIG_HTC_ASIC3=y
+CONFIG_HTC_ASIC3_DS1WM=y
# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
#
# Misc devices
@@ -843,6 +884,8 @@ CONFIG_HTC_ASIC3=y
# Multimedia Capabilities Port drivers
#
# CONFIG_MCP is not set
+# CONFIG_ADC_ADS7846_SSP is not set
+# CONFIG_TIFM_CORE is not set
#
# LED devices
@@ -854,21 +897,21 @@ CONFIG_LEDS_CLASS=y
# LED drivers
#
# CONFIG_LEDS_S3C24XX is not set
-# CONFIG_LEDS_ASIC3 is not set
+CONFIG_LEDS_ASIC3=y
#
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_TIMER_ASIC3=y
# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-# CONFIG_LEDS_TRIGGER_SHARED is not set
+CONFIG_LEDS_TRIGGER_SHARED=y
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
#
# Digital Video Broadcasting Devices
@@ -892,6 +935,7 @@ CONFIG_FB_TILEBLITTING=y
CONFIG_FB_S3C2410=y
# CONFIG_FB_S3C2410_DEBUG is not set
# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
#
# Console display driver support
@@ -925,11 +969,56 @@ CONFIG_BACKLIGHT_DEVICE=y
CONFIG_LCD_CLASS_DEVICE=y
CONFIG_LCD_DEVICE=y
# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_S3C2410=y
#
# Sound
#
-# CONFIG_SOUND is not set
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_RX3715=m
+CONFIG_SND_S3C2410=m
+# CONFIG_SND_S3C2410_DBG is not set
+# CONFIG_SND_S3C2410_DBG_DMA is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+CONFIG_SND_UDA1380=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
#
# USB support
@@ -946,18 +1035,30 @@ CONFIG_USB_ARCH_HAS_OHCI=y
#
# USB Gadget Support
#
-CONFIG_USB_GADGET=m
+CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
# CONFIG_USB_GADGET_NET2280 is not set
# CONFIG_USB_GADGET_PXA2XX is not set
# CONFIG_USB_GADGET_PXA27X is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_MQ11XX is not set
# CONFIG_USB_GADGET_LH7A40X is not set
+CONFIG_USB_GADGET_S3C2410=y
+CONFIG_USB_S3C2410=y
+# CONFIG_USB_S3C2410_DEBUG is not set
# CONFIG_USB_GADGET_OMAP is not set
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
#
# MMC/SD Card support
@@ -965,6 +1066,8 @@ CONFIG_USB_GADGET=m
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_S3C2440 is not set
+# CONFIG_MMC_TIFM_SD is not set
# CONFIG_MMC_TMIO is not set
# CONFIG_MMC_SAMCOP is not set
CONFIG_MMC_ASIC3=y
@@ -976,6 +1079,7 @@ 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
@@ -1009,10 +1113,12 @@ 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
@@ -1044,8 +1150,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# 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
@@ -1082,7 +1190,8 @@ CONFIG_JFFS2_RTIME=y
#
# CONFIG_NFS_FS is not set
# CONFIG_NFSD is not set
-# CONFIG_SMB_FS 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
@@ -1164,14 +1273,15 @@ CONFIG_OPROFILE=y
# 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=y
+# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_FS is not set
CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
+# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_USER is not set
CONFIG_DEBUG_S3C2410_UART=2
@@ -1185,6 +1295,9 @@ CONFIG_DEBUG_S3C2410_UART=2
# Cryptographic options
#
CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_MANAGER=m
# CONFIG_CRYPTO_HMAC is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
@@ -1194,6 +1307,8 @@ CONFIG_CRYPTO_MD5=y
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
diff --git a/packages/linux/linux-handhelds-2.6_2.6.16-hh7.bb b/packages/linux/linux-handhelds-2.6_2.6.16-hh7.bb
deleted file mode 100644
index dd8ebe2440..0000000000
--- a/packages/linux/linux-handhelds-2.6_2.6.16-hh7.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
-LICENSE = "GPL"
-PR = "r2"
-
-# Override where to look for defconfigs and patches,
-# we have per-kernel-release sets.
-FILESPATH = "${FILE_DIRNAME}/linux-handhelds-2.6-2.6.16/${MACHINE}:${FILE_DIRNAME}/linux-handhelds-2.6-2.6.16"
-
-SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
- file://24-hostap_cs_id.diff;patch=1 \
- file://hrw-pcmcia-ids-r2.patch;patch=1 \
- file://defconfig"
-
-require linux-handhelds-2.6.inc
diff --git a/packages/linux/linux-handhelds-2.6_2.6.16-hh8.bb b/packages/linux/linux-handhelds-2.6_2.6.16-hh8.bb
deleted file mode 100644
index bdfc876a94..0000000000
--- a/packages/linux/linux-handhelds-2.6_2.6.16-hh8.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
-LICENSE = "GPL"
-PR = "r1"
-
-# Override where to look for defconfigs and patches,
-# we have per-kernel-release sets.
-FILESPATH = "${FILE_DIRNAME}/linux-handhelds-2.6-2.6.16/${MACHINE}:${FILE_DIRNAME}/linux-handhelds-2.6-2.6.16"
-
-SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
- file://24-hostap_cs_id.diff;patch=1 \
- file://hrw-pcmcia-ids-r2.patch;patch=1 \
- http://www.handhelds.org/hypermail/kernel-discuss/att-2217/h5400-udc-mod-from-milan.patch;patch=1;pnum=0 \
- file://defconfig"
-
-require linux-handhelds-2.6.inc
diff --git a/packages/linux/linux-handhelds-2.6_2.6.16-hh9.bb b/packages/linux/linux-handhelds-2.6_2.6.16-hh9.bb
new file mode 100644
index 0000000000..8b1f153f11
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6_2.6.16-hh9.bb
@@ -0,0 +1,13 @@
+SECTION = "kernel"
+DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
+LICENSE = "GPL"
+PR = "r0"
+
+# Override where to look for defconfigs and patches,
+# we have per-kernel-release sets.
+FILESPATH = "${FILE_DIRNAME}/linux-handhelds-2.6-2.6.16/${MACHINE}:${FILE_DIRNAME}/linux-handhelds-2.6-2.6.16"
+
+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.17-hh2.bb b/packages/linux/linux-handhelds-2.6_2.6.17-hh2.bb
deleted file mode 100644
index 9bbbcaf70f..0000000000
--- a/packages/linux/linux-handhelds-2.6_2.6.17-hh2.bb
+++ /dev/null
@@ -1,17 +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"
-
-# Override where to look for defconfigs and patches,
-# we have per-kernel-release sets.
-FILESPATH = "${FILE_DIRNAME}/linux-handhelds-2.6-2.6.17/${MACHINE}:${FILE_DIRNAME}/linux-handhelds-2.6-2.6.17"
-
-SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
- file://24-hostap_cs_id.diff;patch=1 \
- file://hrw-pcmcia-ids-r2.patch;patch=1 \
- file://defconfig"
-
-require linux-handhelds-2.6.inc
diff --git a/packages/linux/linux-handhelds-2.6_2.6.17-hh3.bb b/packages/linux/linux-handhelds-2.6_2.6.17-hh4.bb
index c19678efe2..c19678efe2 100644
--- a/packages/linux/linux-handhelds-2.6_2.6.17-hh3.bb
+++ b/packages/linux/linux-handhelds-2.6_2.6.17-hh4.bb
diff --git a/packages/linux/linux-handhelds-2.6_2.6.18-hh1.bb b/packages/linux/linux-handhelds-2.6_2.6.18-hh1.bb
deleted file mode 100644
index 724971cacb..0000000000
--- a/packages/linux/linux-handhelds-2.6_2.6.18-hh1.bb
+++ /dev/null
@@ -1,15 +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"
-
-# Override where to look for defconfigs and patches,
-# we have per-kernel-release sets.
-FILESPATH = "${FILE_DIRNAME}/linux-handhelds-2.6-2.6.18/${MACHINE}:${FILE_DIRNAME}/linux-handhelds-2.6-2.6.18"
-
-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.19-hh11.bb b/packages/linux/linux-handhelds-2.6_2.6.19-hh11.bb
new file mode 100644
index 0000000000..77f55415ba
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6_2.6.19-hh11.bb
@@ -0,0 +1,15 @@
+SECTION = "kernel"
+DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
+LICENSE = "GPL"
+PR = "r1"
+
+DEFAULT_PREFERENCE = "-1"
+
+# Override where to look for defconfigs and patches,
+# we have per-kernel-release sets.
+FILESPATH = "${FILE_DIRNAME}/linux-handhelds-2.6-2.6.19/${MACHINE}:${FILE_DIRNAME}/linux-handhelds-2.6-2.6.19"
+
+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.19-hh13.bb b/packages/linux/linux-handhelds-2.6_2.6.19-hh13.bb
new file mode 100644
index 0000000000..77f55415ba
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6_2.6.19-hh13.bb
@@ -0,0 +1,15 @@
+SECTION = "kernel"
+DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
+LICENSE = "GPL"
+PR = "r1"
+
+DEFAULT_PREFERENCE = "-1"
+
+# Override where to look for defconfigs and patches,
+# we have per-kernel-release sets.
+FILESPATH = "${FILE_DIRNAME}/linux-handhelds-2.6-2.6.19/${MACHINE}:${FILE_DIRNAME}/linux-handhelds-2.6-2.6.19"
+
+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.19-hh5.bb b/packages/linux/linux-handhelds-2.6_2.6.20-hh4.bb
index b34d4630a0..b34d4630a0 100644
--- a/packages/linux/linux-handhelds-2.6_2.6.19-hh5.bb
+++ b/packages/linux/linux-handhelds-2.6_2.6.20-hh4.bb
diff --git a/packages/linux/linux-handhelds-2.6_2.6.19-hh7.bb b/packages/linux/linux-handhelds-2.6_2.6.20-hh5.bb
index b34d4630a0..b34d4630a0 100644
--- a/packages/linux/linux-handhelds-2.6_2.6.19-hh7.bb
+++ b/packages/linux/linux-handhelds-2.6_2.6.20-hh5.bb
diff --git a/packages/linux/linux-handhelds-2.6_2.6.20-hh6.bb b/packages/linux/linux-handhelds-2.6_2.6.20-hh6.bb
new file mode 100644
index 0000000000..ec5844bfb5
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6_2.6.20-hh6.bb
@@ -0,0 +1,11 @@
+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"
+
+require linux-handhelds-2.6.inc
diff --git a/packages/linux/linux-handhelds-2.6_cvs.bb b/packages/linux/linux-handhelds-2.6_cvs.bb
index e004199865..8d657237b9 100644
--- a/packages/linux/linux-handhelds-2.6_cvs.bb
+++ b/packages/linux/linux-handhelds-2.6_cvs.bb
@@ -2,14 +2,14 @@ SECTION = "kernel"
DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
LICENSE = "GPL"
PV = "${K_MAJOR}.${K_MINOR}.${K_MICRO}-hh${HHV}+cvs${SRCDATE}"
-PR = "r5"
+PR = "r0"
DEFAULT_PREFERENCE = "-1"
K_MAJOR = "2"
K_MINOR = "6"
-K_MICRO = "19"
-HHV = "7"
+K_MICRO = "20"
+HHV = "6"
SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26 \
file://defconfig"
diff --git a/packages/linux/linux-jlime-jornada6xx-2.6.17/keyboard-fix-deadkeys.patch b/packages/linux/linux-jlime-jornada6xx-2.6.17/keyboard-fix-deadkeys.patch
new file mode 100644
index 0000000000..73923555d4
--- /dev/null
+++ b/packages/linux/linux-jlime-jornada6xx-2.6.17/keyboard-fix-deadkeys.patch
@@ -0,0 +1,204 @@
+--- linux-2.6.17-linuxsh/drivers/input/keyboard/hp680_keyb.c 2006-12-06 21:56:06.000000000 +0000
++++ linux-2.6.17/drivers/input/keyboard/hp680_keyb.c 2007-01-10 21:00:34.000000000 +0000
+@@ -5,6 +5,7 @@
+ *
+ * Copyright (C) 2005 Andriy Skulysh
+ * Copyright (C) 2006 Paul Mundt
++ * Copyright (C) 2007 Kristoffer Ericson
+ *
+ * Splited from drivers/input/keyboard/hp600_keyb.c
+ *
+@@ -20,6 +21,10 @@
+ #include <asm/io.h>
+ #include "scan_keyb.h"
+
++#define PCCR 0xa4000104
++#define PDCR 0xa4000106
++#define PECR 0xa4000108
++#define PFCR 0xa400010a
+ #define PCDR 0xa4000124
+ #define PDDR 0xa4000126
+ #define PEDR 0xa4000128
+@@ -30,6 +35,24 @@
+ #define PKDR 0xa4000132
+ #define PLDR 0xa4000134
+
++/***************************************************************
++HP Jornada 680(SWEDISH version) keyboard
++[!] indicates Special Characters
++
++_______________________________________________________________________
++| ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 POWER|
++| 1 2 3 4 5 6 7 8 9 0 + ` BKPSPACE|
++|* Q W E R T Y U I O P ! ^ ENTER|
++| TAB A S D F G H J K L ! ! ' ENTER|
++| SHIFT Z X C V B N M , . - UP SHIFT|
++| CTRL WIN ALT ? =======SPACE======== ALTG DEL LEF DO RI ]
++-----------------------------------------------------------------------
++
++
++****************************************************************/
++
++
++
+ /****************************************************************
+ HP Jornada 690(Japanese version) keyboard scan matrix
+
+@@ -71,31 +94,56 @@
+ ****************************************************************/
+
+ static const unsigned char hp680_japanese_table[] = {
+- /* PTD1 */
++/*
++ /* PTD1 */
++ /* ? ? ? ? Esc ? ? ? */
+ 0x3a, 0x70, 0x29, 0x00, 0x01, 0x00, 0x00, 0x00,
++ /* F1 F2 F3 F8 F7 F6 F4 F5 */
+ 0x3b, 0x3c, 0x3d, 0x42, 0x41, 0x40, 0x3e, 0x3f,
+- /* PTD5 */
++
++ /* PTD5 */
++ /* / : Enter ? Z ? ? ? */
+ 0x35, 0x28, 0x1c, 0x00, 0x2c, 0x00, 0x00, 0x00,
++ /* X C V . , M B N */
+ 0x2d, 0x2e, 0x2f, 0x34, 0x33, 0x32, 0x30, 0x31,
+- /* PTD7 */
+- 0x50, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+- 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x38, 0x7b,
+- /* PTE0 */
++
++ /* PTD7 */
++ /* Down Right ? ? ? ? ? ? */
++ 0x50, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
++ /* ? ? ? Left ? ? Alt ? */
++ 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x38, 0x7b,
++
++ /* PTE0 */
++ /* ? ? ? ? Win ? ? ? */
+ 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00,
++ /* Ctrl ? Space Del _ ? ? ? */
+ 0x1d, 0x00, 0x39, 0x53, 0x73, 0xf9, 0x00, 0x00,
+- /* PTE1 */
++
++ /* PTE1 */
++ /* ; [ ] ? A ? ? ? */
+ 0x27, 0x1b, 0x2b, 0x00, 0x1e, 0x00, 0x00, 0x00,
++ /* S D F L K J G H */
+ 0x1f, 0x20, 0x21, 0x26, 0x25, 0x24, 0x22, 0x23,
+- /* PTE3 */
+- 0x48, 0x7d, 0x36, 0x00, 0x0f, 0x00, 0x00, 0x00,
+- 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+- /* PTE6 */
++
++ /* PTE3 */
++ /* Up \ ShiftR ? Q ? ? ? */
++ 0x48, 0x7d, 0x36, 0x00, 0x0f, 0x00, 0x00, 0x00,
++ /* ? ShiftL ? ? ? ? ? ? */
++ 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
++
++ /* PTE6 */
++ /* P @ BS ? Q ? ? ? */
+ 0x19, 0x1a, 0x0e, 0x00, 0x10, 0x00, 0x00, 0x00,
++ /* W E R O I U T Y */
+ 0x11, 0x12, 0x13, 0x18, 0x17, 0x16, 0x14, 0x15,
+- /* PTE7 */
+- 0x0b, 0x0c, 0x0d, 0x00, 0x02, 0x00, 0x00, 0x00,
+- 0x03, 0x04, 0x05, 0x0a, 0x09, 0x08, 0x06, 0x07,
+- /* **** */
++
++ /* PTE7 */
++ /* 0 + = ? 1 ? ? ? */
++ 0x0b, 0x0c, 0x0d, 0x00, 0x02, 0x00, 0x00, 0x00,
++ /* 2 3 4 9 8 7 5 6 */
++ 0x03, 0x04, 0x05, 0x0a, 0x09, 0x08, 0x06, 0x07,
++
++ /* **** */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ };
+@@ -103,37 +151,72 @@
+ static int hp680_japanese_scan_kbd(unsigned char *s)
+ {
+ int i;
+- unsigned char matrix_switch[] = {
+- 0xfd, 0xff, /* PTD1 */
+- 0xdf, 0xff, /* PTD5 */
+- 0x7f, 0xff, /* PTD7 */
+- 0xff, 0xfe, /* PTE0 */
+- 0xff, 0xfd, /* PTE1 */
+- 0xff, 0xf7, /* PTE3 */
+- 0xff, 0xbf, /* PTE6 */
+- 0xff, 0x7f, /* PTE7 */
++ unsigned short ec_static,dc_static; /* = UINT16_t */
++ unsigned char matrix_switch[] = {
++ 0xfd, 0xff, /* PTD1 PD(1) */
++ 0xdf, 0xff, /* PTD5 PD(5) */
++ 0x7f, 0xff, /* PTD7 PD(7) */
++ 0xff, 0xfe, /* PTE0 PE(0) */
++ 0xff, 0xfd, /* PTE1 PE(1) */
++ 0xff, 0xf7, /* PTE3 PE(3) */
++ 0xff, 0xbf, /* PTE6 PE(6) */
++ 0xff, 0x7f, /* PTE7 PE(7) */
+ }, *t=matrix_switch;
++ /* PD(x) :
++ 1. 0xcc0c & (1~(1 << (2*(x)+1)))))
++ 2. (0xf0cf & 0xfffff) */
++ /* PE(x) :
++ 1. 0xcc0c & 0xffff
++ 2. 0xf0cf & (1~(1 << (2*(x)+1))))) */
++ unsigned short matrix_PDE[] = {
++ 0xcc04, 0xf0cf, /* PD(1) */
++ 0xc40c, 0xf0cf, /* PD(5) */
++ 0x4c0c, 0xf0cf, /* PD(7) */
++ 0xcc0c, 0xf0cd, /* PE(0) */
++ 0xcc0c, 0xf0c7, /* PE(1) */
++ 0xcc0c, 0xf04f, /* PE(3) */
++ 0xcc0c, 0xd0cf, /* PE(6) */
++ 0xcc0c, 0x70cf, /* PE(7) */
++ }
++ , *y=matrix_PDE;
++ /* Save these control reg bits */
++ dc_static = (ctrl_inw(PDCR) & (~0xcc0c));
++ ec_static = (ctrl_inw(PECR) & (~0xf0cf));
+
+ for(i=0; i<8; i++) {
+- ctrl_outb(*t++, PDDR);
++ /* disable output for all but the one we want to scan */
++ ctrl_outw((dc_static | *y++), PDCR);
++ ctrl_outw((ec_static | *y++), PECR);
++ udelay(5);
++
++ /* Get scanline row */
++ ctrl_outb(*t++, PDDR);
+ ctrl_outb(*t++, PEDR);
++ udelay(50);
++
++ /* Read data */
+ *s++=ctrl_inb(PCDR);
+ *s++=ctrl_inb(PFDR);
+ }
+-
++ /* Scan no lines */
+ ctrl_outb(0xff, PDDR);
+ ctrl_outb(0xff, PEDR);
++
++ /* Enable all scanlines */
++ ctrl_outw((dc_static | (0x5555 & 0xcc0c)),PDCR);
++ ctrl_outw((ec_static | (0x5555 & 0xf0cf)),PECR);
++ /* Ignore extra keys and events */
+
+ *s++=ctrl_inb(PGDR);
+ *s++=ctrl_inb(PHDR);
+-
++
+ return 0;
+ }
+
+ static struct scan_keyboard hp680_kbd = {
+ .scan = hp680_japanese_scan_kbd,
+ .table = hp680_japanese_table,
+- .length = 18,
++ .length = 16,
+ };
+
+ static int __init hp680_kbd_init_hw(void)
diff --git a/packages/linux/linux-jlime-jornada6xx-2.6.21rc5/.mtn2git_empty b/packages/linux/linux-jlime-jornada6xx-2.6.21rc5/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-jlime-jornada6xx-2.6.21rc5/.mtn2git_empty
diff --git a/packages/linux/linux-jlime-jornada6xx-2.6.21rc5/defconfig b/packages/linux/linux-jlime-jornada6xx-2.6.21rc5/defconfig
new file mode 100644
index 0000000000..2a86055123
--- /dev/null
+++ b/packages/linux/linux-jlime-jornada6xx-2.6.21rc5/defconfig
@@ -0,0 +1,1245 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21-rc5
+# Wed Apr 4 23:26:23 2007
+#
+CONFIG_SUPERH=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+# CONFIG_GENERIC_TIME is not set
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# 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_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_RELAY=y
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# 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=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_SH_SOLUTION_ENGINE is not set
+# CONFIG_SH_7751_SOLUTION_ENGINE is not set
+# CONFIG_SH_7300_SOLUTION_ENGINE is not set
+# CONFIG_SH_7343_SOLUTION_ENGINE is not set
+# CONFIG_SH_73180_SOLUTION_ENGINE is not set
+# CONFIG_SH_7751_SYSTEMH is not set
+CONFIG_SH_HP6XX=y
+# CONFIG_SH_SATURN is not set
+# CONFIG_SH_DREAMCAST is not set
+# CONFIG_SH_MPC1211 is not set
+# CONFIG_SH_SH03 is not set
+# CONFIG_SH_SECUREEDGE5410 is not set
+# CONFIG_SH_HS7751RVOIP is not set
+# CONFIG_SH_7710VOIPGW is not set
+# CONFIG_SH_RTS7751R2D is not set
+# CONFIG_SH_R7780RP is not set
+# CONFIG_SH_EDOSK7705 is not set
+# CONFIG_SH_SH4202_MICRODEV is not set
+# CONFIG_SH_LANDISK is not set
+# CONFIG_SH_TITAN is not set
+# CONFIG_SH_SHMIN is not set
+# CONFIG_SH_7206_SOLUTION_ENGINE is not set
+# CONFIG_SH_7619_SOLUTION_ENGINE is not set
+# CONFIG_SH_UNKNOWN is not set
+
+#
+# Processor selection
+#
+CONFIG_CPU_SH3=y
+
+#
+# SH-2 Processor Support
+#
+# CONFIG_CPU_SUBTYPE_SH7604 is not set
+# CONFIG_CPU_SUBTYPE_SH7619 is not set
+
+#
+# SH-2A Processor Support
+#
+# CONFIG_CPU_SUBTYPE_SH7206 is not set
+
+#
+# SH-3 Processor Support
+#
+# CONFIG_CPU_SUBTYPE_SH7300 is not set
+# CONFIG_CPU_SUBTYPE_SH7705 is not set
+# CONFIG_CPU_SUBTYPE_SH7706 is not set
+# CONFIG_CPU_SUBTYPE_SH7707 is not set
+# CONFIG_CPU_SUBTYPE_SH7708 is not set
+CONFIG_CPU_SUBTYPE_SH7709=y
+# CONFIG_CPU_SUBTYPE_SH7710 is not set
+
+#
+# SH-4 Processor Support
+#
+# CONFIG_CPU_SUBTYPE_SH7750 is not set
+# CONFIG_CPU_SUBTYPE_SH7091 is not set
+# CONFIG_CPU_SUBTYPE_SH7750R is not set
+# CONFIG_CPU_SUBTYPE_SH7750S is not set
+# CONFIG_CPU_SUBTYPE_SH7751 is not set
+# CONFIG_CPU_SUBTYPE_SH7751R is not set
+# CONFIG_CPU_SUBTYPE_SH7760 is not set
+# CONFIG_CPU_SUBTYPE_SH4_202 is not set
+
+#
+# ST40 Processor Support
+#
+# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
+# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
+
+#
+# SH-4A Processor Support
+#
+# CONFIG_CPU_SUBTYPE_SH7770 is not set
+# CONFIG_CPU_SUBTYPE_SH7780 is not set
+# CONFIG_CPU_SUBTYPE_SH7785 is not set
+
+#
+# SH4AL-DSP Processor Support
+#
+# CONFIG_CPU_SUBTYPE_SH73180 is not set
+# CONFIG_CPU_SUBTYPE_SH7343 is not set
+# CONFIG_CPU_SUBTYPE_SH7722 is not set
+
+#
+# Memory management options
+#
+CONFIG_MMU=y
+CONFIG_PAGE_OFFSET=0x80000000
+CONFIG_MEMORY_START=0x0d000000
+CONFIG_MEMORY_SIZE=0x00400000
+CONFIG_VSYSCALL=y
+CONFIG_PAGE_SIZE_4KB=y
+# CONFIG_PAGE_SIZE_8KB is not set
+# CONFIG_PAGE_SIZE_64KB 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=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+
+#
+# Cache configuration
+#
+# CONFIG_SH_DIRECT_MAPPED is not set
+CONFIG_SH_WRITETHROUGH=y
+# CONFIG_SH_OCRAM is not set
+
+#
+# Processor features
+#
+CONFIG_CPU_LITTLE_ENDIAN=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+# CONFIG_SH_FPU_EMU is not set
+CONFIG_SH_DSP=y
+CONFIG_SH_ADC=y
+CONFIG_CPU_HAS_INTEVT=y
+CONFIG_CPU_HAS_PINT_IRQ=y
+CONFIG_CPU_HAS_IPR_IRQ=y
+CONFIG_CPU_HAS_SR_RB=y
+
+#
+# Timer support
+#
+CONFIG_SH_TMU=y
+CONFIG_SH_TIMER_IRQ=16
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_SH_PCLK_FREQ=22110000
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# DMA support
+#
+CONFIG_SH_DMA=y
+CONFIG_NR_ONCHIP_DMA_CHANNELS=4
+# CONFIG_NR_DMA_CHANNELS_BOOL is not set
+
+#
+# Companion Chips
+#
+CONFIG_HD6446X_SERIES=y
+CONFIG_HD64461=y
+# CONFIG_HD64465 is not set
+CONFIG_HD64461_IRQ=36
+CONFIG_HD64461_IOBASE=0xb0000000
+CONFIG_HD64461_ENABLER=y
+
+#
+# Additional SuperH Device Drivers
+#
+# CONFIG_PUSH_SWITCH is not set
+
+#
+# Kernel features
+#
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+# CONFIG_KEXEC is not set
+# CONFIG_SMP is not set
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+
+#
+# Boot options
+#
+CONFIG_ZERO_PAGE_OFFSET=0x00001000
+CONFIG_BOOT_LINK_OFFSET=0x00800000
+# CONFIG_UBC_WAKEUP is not set
+# CONFIG_CMDLINE_BOOL is not set
+
+#
+# Bus options
+#
+CONFIG_ISA=y
+# CONFIG_PCI 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 is not set
+
+#
+# PC-card bridges
+#
+# CONFIG_I82365 is not set
+# CONFIG_TCIC is not set
+CONFIG_PCMCIA_PROBE=y
+
+#
+# PCI Hotplug Support
+#
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_FLAT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options (EXPERIMENTAL)
+#
+# CONFIG_PM is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_NETDEBUG=y
+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=y
+# CONFIG_NET_KEY_MIGRATE 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 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
+
+#
+# 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_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=y
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=y
+# CONFIG_IEEE80211_CRYPT_CCMP is not set
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+# CONFIG_IEEE80211_SOFTMAC 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 is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=y
+# CONFIG_PARPORT_PC is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_AX88796 is not set
+# CONFIG_PARPORT_1284 is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNP is not set
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# 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 is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# Misc devices
+#
+
+#
+# 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 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=y
+CONFIG_CHR_DEV_SCH=y
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+# 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 is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
+# CONFIG_PATA_LEGACY is not set
+# CONFIG_PATA_PCMCIA is not set
+# CONFIG_PATA_QDI is not set
+# CONFIG_PATA_WINBOND_VLB is not set
+CONFIG_PATA_PLATFORM=y
+
+#
+# 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 is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN 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_STNIC is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_SMC91X is not set
+# CONFIG_NET_VENDOR_RACAL 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 is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# 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
+# CONFIG_ARLAN is not set
+# CONFIG_WAVELAN is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_HOSTAP is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+# CONFIG_PCMCIA_PCNET is not set
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PLIP is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP 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
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+# CONFIG_INPUT_EVDEV is not set
+# 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_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# 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_HP600=y
+# 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_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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_SH_SCI=y
+CONFIG_SERIAL_SH_SCI_NR_UARTS=2
+CONFIG_SERIAL_SH_SCI_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=5
+# CONFIG_PRINTER is not set
+# CONFIG_PPDEV is not set
+# CONFIG_TIPAR is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM 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_ABITUGURU is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_HP680=y
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=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
+
+#
+# Frambuffer hardware drivers
+#
+# CONFIG_FB_EPSON1355 is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_HIT=y
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# 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 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+CONFIG_FONT_PEARL_8x8=y
+# 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 is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+# CONFIG_USB_ARCH_HAS_HCD is not set
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# 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_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SH=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# Auxiliary Display support
+#
+
+#
+# Virtualization
+#
+
+#
+# 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 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 is not set
+# 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 is not set
+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_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLBFS 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_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 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+# CONFIG_NFSD_V3 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# 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
+# 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=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+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_TRACE_IRQFLAGS_SUPPORT=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 is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_SH_STANDARD_BIOS is not set
+# CONFIG_EARLY_SCIF_CONSOLE is not set
+# CONFIG_KGDB 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_MANAGER=y
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+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=y
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_DES is not set
+# 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=y
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_DEFLATE is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
+# CONFIG_CRYPTO_CRC32C is not set
+# 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=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-jlime-jornada6xx-2.6.21rc5/git-20070405-2.patch b/packages/linux/linux-jlime-jornada6xx-2.6.21rc5/git-20070405-2.patch
new file mode 100644
index 0000000000..205d62a952
--- /dev/null
+++ b/packages/linux/linux-jlime-jornada6xx-2.6.21rc5/git-20070405-2.patch
@@ -0,0 +1,1058 @@
+diff --git a/arch/sh/boards/hp6xx/setup.c b/arch/sh/boards/hp6xx/setup.c
+index b5a9664..5c6726d 100644
+--- a/arch/sh/boards/hp6xx/setup.c
++++ b/arch/sh/boards/hp6xx/setup.c
+@@ -2,6 +2,8 @@
+ * linux/arch/sh/boards/hp6xx/setup.c
+ *
+ * Copyright (C) 2002 Andriy Skulysh
++ * Copyright (C) 2007 Kristoffer Ericson <Kristoffer_e1@hotmail.com>
++ *
+ *
+ * May be copied or modified under the terms of the GNU General Public
+ * License. See linux/COPYING for more information.
+@@ -10,6 +12,7 @@
+ */
+ #include <linux/types.h>
+ #include <linux/init.h>
++#include <linux/platform_device.h>
+ #include <asm/hd64461.h>
+ #include <asm/io.h>
+ #include <asm/irq.h>
+@@ -19,6 +22,41 @@
+ #define SCPCR 0xa4000116
+ #define SCPDR 0xa4000136
+
++/* CF Slot */
++static struct resource cf_ide_resources[] = {
++ [0] = {
++ .start = 0x15000000 + 0x1f0,
++ .end = 0x15000000 + 0x1f0 + 0x08 - 0x01,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = 0x15000000 + 0x1fe,
++ .end = 0x15000000 + 0x1fe + 0x01,
++ .flags = IORESOURCE_MEM,
++ },
++ [2] = {
++ .start = 93,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++static struct platform_device cf_ide_device = {
++ .name = "pata_platform",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(cf_ide_resources),
++ .resource = cf_ide_resources,
++};
++
++static struct platform_device *hp6xx_devices[] __initdata = {
++
++ &cf_ide_device,
++};
++
++static int __init hp6xx_devices_setup(void)
++{
++ return platform_add_devices(hp6xx_devices,ARRAY_SIZE(hp6xx_devices));
++}
++
+ static void __init hp6xx_setup(char **cmdline_p)
+ {
+ u8 v8;
+@@ -61,40 +99,12 @@ static void __init hp6xx_setup(char **cmdline_p)
+ ctrl_outw(v, SCPCR);
+ }
+
+-/*
+- * XXX: This is stupid, we should have a generic machine vector for the cchips
+- * and just wrap the platform setup code in to this, as it's the only thing
+- * that ends up being different.
+- */
++device_initcall(hp6xx_devices_setup);
++
+ struct sh_machine_vector mv_hp6xx __initmv = {
+ .mv_name = "hp6xx",
+ .mv_setup = hp6xx_setup,
+ .mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM,
+-
+- .mv_inb = hd64461_inb,
+- .mv_inw = hd64461_inw,
+- .mv_inl = hd64461_inl,
+- .mv_outb = hd64461_outb,
+- .mv_outw = hd64461_outw,
+- .mv_outl = hd64461_outl,
+-
+- .mv_inb_p = hd64461_inb_p,
+- .mv_inw_p = hd64461_inw,
+- .mv_inl_p = hd64461_inl,
+- .mv_outb_p = hd64461_outb_p,
+- .mv_outw_p = hd64461_outw,
+- .mv_outl_p = hd64461_outl,
+-
+- .mv_insb = hd64461_insb,
+- .mv_insw = hd64461_insw,
+- .mv_insl = hd64461_insl,
+- .mv_outsb = hd64461_outsb,
+- .mv_outsw = hd64461_outsw,
+- .mv_outsl = hd64461_outsl,
+-
+- .mv_readw = hd64461_readw,
+- .mv_writew = hd64461_writew,
+-
+ .mv_irq_demux = hd64461_irq_demux,
+ };
+ ALIAS_MV(hp6xx)
+diff --git a/arch/sh/cchips/hd6446x/hd64461/setup.c b/arch/sh/cchips/hd6446x/hd64461/setup.c
+index 4d49b5c..f59e73f 100644
+--- a/arch/sh/cchips/hd6446x/hd64461/setup.c
++++ b/arch/sh/cchips/hd6446x/hd64461/setup.c
+@@ -122,7 +122,7 @@ int hd64461_irq_demux(int irq)
+ }
+ }
+ }
+- return __irq_demux(irq);
++ return (irq);
+ }
+
+ static struct irqaction irq0 = { hd64461_interrupt, IRQF_DISABLED, CPU_MASK_NONE, "HD64461", NULL, NULL };
+diff --git a/arch/sh/drivers/dma/dma-sh.c b/arch/sh/drivers/dma/dma-sh.c
+index 06ed060..b56fab8 100644
+--- a/arch/sh/drivers/dma/dma-sh.c
++++ b/arch/sh/drivers/dma/dma-sh.c
+@@ -19,6 +19,13 @@
+ #include <asm/io.h>
+ #include "dma-sh.h"
+
++#ifdef CONFIG_CPU_SUBTYPE_SH7709
++ #define DMTE0_IRQ 48
++ #define DMTE1_IRQ 49
++ #define DMTE2_IRQ 50
++ #define DMTE3_IRQ 51
++#endif
++
+ static int dmte_irq_map[] = {
+ DMTE0_IRQ,
+ DMTE1_IRQ,
+diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7709.c b/arch/sh/kernel/cpu/sh3/setup-sh7709.c
+index dc9b211..3e9bb0c 100644
+--- a/arch/sh/kernel/cpu/sh3/setup-sh7709.c
++++ b/arch/sh/kernel/cpu/sh3/setup-sh7709.c
+@@ -52,20 +52,29 @@ static int __init sh7709_devices_setup(void)
+ }
+ __initcall(sh7709_devices_setup);
+
+-#define IPRx(A,N) .addr=A, .shift=0*N*-1
++#define IPRx(A,N) .addr=A, .shift=N
+ #define IPRA(N) IPRx(0xfffffee2UL,N)
+ #define IPRB(N) IPRx(0xfffffee4UL,N)
++#define IPRC(N) IPRx(0xa4000016UL,N)
++#define IPRD(N) IPRx(0xa4000018UL,N)
+ #define IPRE(N) IPRx(0xa400001aUL,N)
+
+ static struct ipr_data sh7709_ipr_map[] = {
+- [16] = { IPRA(15-12), 2 }, /* TMU TUNI0 */
+- [17] = { IPRA(11-8), 4 }, /* TMU TUNI1 */
+- [22] = { IPRA(3-0), 2 }, /* RTC CUI */
+- [23 ... 26] = { IPRB(7-4), 3 }, /* SCI */
+- [27] = { IPRB(15-12), 2 }, /* WDT ITI */
+- [48 ... 51] = { IPRE(15-12), 7 }, /* DMA */
+- [52 ... 55] = { IPRE(11-8), 3 }, /* IRDA */
+- [56 ... 59] = { IPRE(7-4), 3 }, /* SCIF */
++ [16] = { IPRA(12), 2 }, /* TMU TUNI0 */
++ [17] = { IPRA(8), 4 }, /* TMU TUNI1 */
++ [18 ... 19] = { IPRA(4), 1 }, /* TMU TUNI1 */
++ [20 ... 22] = { IPRA(0), 2 }, /* RTC CUI */
++ [23 ... 26] = { IPRB(4), 3 }, /* SCI */
++ [27] = { IPRB(12), 2 }, /* WDT ITI */
++ [32] = { IPRC(0), 1 }, /* IRQ 0 */
++ [33] = { IPRC(4), 1 }, /* IRQ 1 */
++ [34] = { IPRC(8), 1 }, /* IRQ 2 APM */
++ [35] = { IPRC(12), 1 }, /* IRQ 3 TOUCHSCREEN */
++ [36] = { IPRD(0), 1 }, /* IRQ 4 */
++ [37] = { IPRD(4), 1 }, /* IRQ 5 */
++ [48 ... 51] = { IPRE(12), 7 }, /* DMA */
++ [52 ... 55] = { IPRE(8), 3 }, /* IRDA */
++ [56 ... 59] = { IPRE(4), 3 }, /* SCIF */
+ };
+
+ void __init init_IRQ_ipr()
+diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig
+index f17e9c7..52a6323 100644
+--- a/drivers/input/keyboard/Kconfig
++++ b/drivers/input/keyboard/Kconfig
+@@ -68,6 +68,9 @@ config KEYBOARD_ATKBD_RDI_KEYCODES
+ right-hand column will be interpreted as the key shown in the
+ left-hand column.
+
++config KEYBOARD_HP680
++ tristate "HP 680 Keyboard Driver"
++
+ config KEYBOARD_SUNKBD
+ tristate "Sun Type 4 and Type 5 keyboard"
+ select SERIO
+diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile
+index 586a0fe..09ee105 100644
+--- a/drivers/input/keyboard/Makefile
++++ b/drivers/input/keyboard/Makefile
+@@ -19,4 +19,4 @@ obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
+ obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
+ obj-$(CONFIG_KEYBOARD_AAED2000) += aaed2000_kbd.o
+ obj-$(CONFIG_KEYBOARD_GPIO) += gpio_keys.o
+-
++obj-$(CONFIG_KEYBOARD_HP680) += scan_keyb.o hp680_keyb.o
+diff --git a/drivers/input/keyboard/hp680_keyb.c b/drivers/input/keyboard/hp680_keyb.c
+new file mode 100644
+index 0000000..d534a2c
+--- /dev/null
++++ b/drivers/input/keyboard/hp680_keyb.c
+@@ -0,0 +1,235 @@
++/*
++ * drivers/input/keyboard/hp680_keyb.c
++ *
++ * HP Jornada 680/690 scan keyboard
++ *
++ * Copyright (C) 2005 Andriy Skulysh
++ * Copyright (C) 2006 Paul Mundt
++ * Copyright (C) 2007 Kristoffer Ericson
++ *
++ * Splited from drivers/input/keyboard/hp600_keyb.c
++ *
++ * Copyright (C) 2000 YAEGASHI Takeshi
++ * HP600 keyboard scan routine and translation table
++ * Copyright (C) 2000 Niibe Yutaka
++ * HP620 keyboard translation table
++ */
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <asm/delay.h>
++#include <asm/io.h>
++#include "scan_keyb.h"
++
++#define PCCR 0xa4000104
++#define PDCR 0xa4000106
++#define PECR 0xa4000108
++#define PFCR 0xa400010a
++#define PCDR 0xa4000124
++#define PDDR 0xa4000126
++#define PEDR 0xa4000128
++#define PFDR 0xa400012a
++#define PGDR 0xa400012c
++#define PHDR 0xa400012e
++#define PJDR 0xa4000130
++#define PKDR 0xa4000132
++#define PLDR 0xa4000134
++
++/***************************************************************
++HP Jornada 680(SWEDISH version) keyboard
++[!] indicates Special Characters
++
++_______________________________________________________________________
++| ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 POWER|
++| 1 2 3 4 5 6 7 8 9 0 + ` BKPSPACE|
++|* Q W E R T Y U I O P ! ^ ENTER|
++| TAB A S D F G H J K L ! ! ' ENTER|
++| SHIFT Z X C V B N M , . - UP SHIFT|
++| CTRL WIN ALT ? =======SPACE======== ALTG DEL LEF DO RI ]
++-----------------------------------------------------------------------
++
++
++****************************************************************/
++
++
++
++/****************************************************************
++HP Jornada 690(Japanese version) keyboard scan matrix
++
++ PTC7 PTC6 PTC5 PTC4 PTC3 PTC2 PTC1 PTC0
++PTD1 REC Escape on/off Han/Zen Hira Eisu
++PTD5 REC Z on/off Enter : /
++PTD7 REC Right Down
++PTE0 REC Windows on/off
++PTE1 REC A on/off ] [ ;
++PTE3 REC Tab on/off ShirtR \ Up
++PTE6 REC Q on/off BS @ P
++PTE7 REC 1 on/off ^ - 0
++
++ PTF7 PTF6 PTF5 PTF4 PTF3 PTF2 PTF1 PTF0
++PTD1 F5 F4 F6 F7 F8 F3 F2 F1
++PTD5 N B M , . V C X
++PTD7 Muhen Alt Left
++PTE0 Henkan _ Del Space Ctrl
++PTE1 H G J K L F D S
++PTE3 ShiftL
++PTE6 Y T U I O R E W
++PTE7 6 5 7 8 9 4 3 2
++
++ PTG5 PTG4 PTG3 PTG0 PTH0
++* REC REW FWW Cover on/off
++
++
++ 7 6 5 4 3 2 1 0
++C: 0xffff 0xdf IP IP IP IP IP IP IP IP
++D: 0x6786 0x59 O I O IP I F O I
++E: 0x5045 0x00 O O F F O F O O
++F: 0xffff 0xff IP IP IP IP IP IP IP IP
++G: 0xaffe 0xfd I I IP IP IP IP IP I
++H: 0x70f2 0x49 O IP F F IP IP F I
++J: 0x0704 0x22 F F O IP F F O F
++K: 0x0100 0x10 F F F O F F F F
++L: 0x0c3c 0x26 F F IP F F IP IP F
++
++****************************************************************/
++
++static const unsigned char hp680_japanese_table[] = {
++/*
++ /* PTD1 */
++ /* ? ? ? ? Esc ? ? ? */
++ 0x3a, 0x70, 0x29, 0x00, 0x01, 0x00, 0x00, 0x00,
++ /* F1 F2 F3 F8 F7 F6 F4 F5 */
++ 0x3b, 0x3c, 0x3d, 0x42, 0x41, 0x40, 0x3e, 0x3f,
++
++ /* PTD5 */
++ /* / : Enter ? Z ? ? ? */
++ 0x35, 0x28, 0x1c, 0x00, 0x2c, 0x00, 0x00, 0x00,
++ /* X C V . , M B N */
++ 0x2d, 0x2e, 0x2f, 0x34, 0x33, 0x32, 0x30, 0x31,
++
++ /* PTD7 */
++ /* Down Right ? ? ? ? ? ? */
++ 0x50, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
++ /* ? ? ? Left ? ? Alt ? */
++ 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x38, 0x7b,
++
++ /* PTE0 */
++ /* ? ? ? ? Win ? ? ? */
++ 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00,
++ /* Ctrl ? Space Del _ ? ? ? */
++ 0x1d, 0x00, 0x39, 0x53, 0x73, 0xf9, 0x00, 0x00,
++
++ /* PTE1 */
++ /* ; [ ] ? A ? ? ? */
++ 0x27, 0x1b, 0x2b, 0x00, 0x1e, 0x00, 0x00, 0x00,
++ /* S D F L K J G H */
++ 0x1f, 0x20, 0x21, 0x26, 0x25, 0x24, 0x22, 0x23,
++
++ /* PTE3 */
++ /* Up \ ShiftR ? Q ? ? ? */
++ 0x48, 0x7d, 0x36, 0x00, 0x0f, 0x00, 0x00, 0x00,
++ /* ? ShiftL ? ? ? ? ? ? */
++ 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
++
++ /* PTE6 */
++ /* P @ BS ? Q ? ? ? */
++ 0x19, 0x1a, 0x0e, 0x00, 0x10, 0x00, 0x00, 0x00,
++ /* W E R O I U T Y */
++ 0x11, 0x12, 0x13, 0x18, 0x17, 0x16, 0x14, 0x15,
++
++ /* PTE7 */
++ /* 0 + = ? 1 ? ? ? */
++ 0x0b, 0x0c, 0x0d, 0x00, 0x02, 0x00, 0x00, 0x00,
++ /* 2 3 4 9 8 7 5 6 */
++ 0x03, 0x04, 0x05, 0x0a, 0x09, 0x08, 0x06, 0x07,
++
++ /* **** */
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
++};
++
++static int hp680_japanese_scan_kbd(unsigned char *s)
++{
++ int i;
++ unsigned short ec_static,dc_static; /* = UINT16_t */
++ unsigned char matrix_switch[] = {
++ 0xfd, 0xff, /* PTD1 PD(1) */
++ 0xdf, 0xff, /* PTD5 PD(5) */
++ 0x7f, 0xff, /* PTD7 PD(7) */
++ 0xff, 0xfe, /* PTE0 PE(0) */
++ 0xff, 0xfd, /* PTE1 PE(1) */
++ 0xff, 0xf7, /* PTE3 PE(3) */
++ 0xff, 0xbf, /* PTE6 PE(6) */
++ 0xff, 0x7f, /* PTE7 PE(7) */
++ }, *t=matrix_switch;
++ /* PD(x) :
++ 1. 0xcc0c & (1~(1 << (2*(x)+1)))))
++ 2. (0xf0cf & 0xfffff) */
++ /* PE(x) :
++ 1. 0xcc0c & 0xffff
++ 2. 0xf0cf & (1~(1 << (2*(x)+1))))) */
++ unsigned short matrix_PDE[] = {
++ 0xcc04, 0xf0cf, /* PD(1) */
++ 0xc40c, 0xf0cf, /* PD(5) */
++ 0x4c0c, 0xf0cf, /* PD(7) */
++ 0xcc0c, 0xf0cd, /* PE(0) */
++ 0xcc0c, 0xf0c7, /* PE(1) */
++ 0xcc0c, 0xf04f, /* PE(3) */
++ 0xcc0c, 0xd0cf, /* PE(6) */
++ 0xcc0c, 0x70cf, /* PE(7) */
++ }
++ , *y=matrix_PDE;
++ /* Save these control reg bits */
++ dc_static = (ctrl_inw(PDCR) & (~0xcc0c));
++ ec_static = (ctrl_inw(PECR) & (~0xf0cf));
++
++ for(i=0; i<8; i++) {
++ /* disable output for all but the one we want to scan */
++ ctrl_outw((dc_static | *y++), PDCR);
++ ctrl_outw((ec_static | *y++), PECR);
++ udelay(5);
++
++ /* Get scanline row */
++ ctrl_outb(*t++, PDDR);
++ ctrl_outb(*t++, PEDR);
++ udelay(50);
++
++ /* Read data */
++ *s++=ctrl_inb(PCDR);
++ *s++=ctrl_inb(PFDR);
++ }
++ /* Scan no lines */
++ ctrl_outb(0xff, PDDR);
++ ctrl_outb(0xff, PEDR);
++
++ /* Enable all scanlines */
++ ctrl_outw((dc_static | (0x5555 & 0xcc0c)),PDCR);
++ ctrl_outw((ec_static | (0x5555 & 0xf0cf)),PECR);
++ /* Ignore extra keys and events */
++
++ *s++=ctrl_inb(PGDR);
++ *s++=ctrl_inb(PHDR);
++
++ return 0;
++}
++
++static struct scan_keyboard hp680_kbd = {
++ .scan = hp680_japanese_scan_kbd,
++ .table = hp680_japanese_table,
++ .length = 16,
++};
++
++static int __init hp680_kbd_init_hw(void)
++{
++ printk(KERN_INFO "HP680 matrix scan keyboard registered\n");
++ return register_scan_keyboard(&hp680_kbd);
++}
++
++static void __exit hp680_kbd_exit_hw(void)
++{
++ unregister_scan_keyboard(&hp680_kbd);
++}
++
++module_init(hp680_kbd_init_hw);
++module_exit(hp680_kbd_exit_hw);
++MODULE_LICENSE("GPL");
+diff --git a/drivers/input/keyboard/scan_keyb.c b/drivers/input/keyboard/scan_keyb.c
+new file mode 100644
+index 0000000..e65668b
+--- /dev/null
++++ b/drivers/input/keyboard/scan_keyb.c
+@@ -0,0 +1,148 @@
++/*
++ * Generic scan keyboard driver
++ *
++ * Copyright (C) 2000 YAEGASHI Takeshi
++ * Copyright (C) 2003 Andriy Skulysh
++ * Copyright (C) 2006 Paul Mundt
++ *
++ * 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.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/sched.h>
++#include <linux/init.h>
++#include <linux/slab.h>
++#include <linux/interrupt.h>
++#include <linux/kbd_kern.h>
++#include <linux/input.h>
++#include <linux/timer.h>
++#include "scan_keyb.h"
++
++#define SCANHZ (HZ/20)
++
++static int scan_jiffies;
++static struct scan_keyboard *keyboards;
++struct timer_list scan_timer;
++static char *hpkbd_name = "Hitachi scankeyboard";
++static char *hpkbd_phys = "input0";
++
++static void check_kbd(struct scan_keyboard *kbd,
++ unsigned char *new, unsigned char *old)
++{
++ const unsigned char *table = kbd->table;
++ int length = kbd->length;
++ int need_tasklet_schedule = 0;
++ unsigned int xor, bit;
++
++ while (length-- > 0) {
++ if ((xor = *new ^ *old) == 0)
++ table += 8;
++ else {
++ for (bit = 0x01; bit < 0x100; bit <<= 1) {
++ if (xor & bit) {
++ input_report_key(kbd->dev, *table,
++ !(*new & bit));
++ need_tasklet_schedule = 1;
++ }
++
++ table++;
++ }
++ }
++
++ new++;
++ old++;
++ }
++
++ if (need_tasklet_schedule) {
++ input_sync(kbd->dev);
++ tasklet_schedule(&keyboard_tasklet);
++ }
++}
++
++static void scan_kbd(unsigned long dummy)
++{
++ struct scan_keyboard *kbd;
++
++ scan_jiffies++;
++
++ for (kbd = keyboards; kbd != NULL; kbd = kbd->next) {
++ if (scan_jiffies & 1) {
++ if (!kbd->scan(kbd->s0))
++ check_kbd(kbd, kbd->s0, kbd->s1);
++ else
++ memcpy(kbd->s0, kbd->s1, kbd->length);
++ } else {
++ if (!kbd->scan(kbd->s1))
++ check_kbd(kbd, kbd->s1, kbd->s0);
++ else
++ memcpy(kbd->s1, kbd->s0, kbd->length);
++ }
++ }
++
++ mod_timer(&scan_timer, jiffies + SCANHZ);
++}
++
++int register_scan_keyboard(struct scan_keyboard *kbd)
++{
++ int i;
++
++ kbd->s0 = kmalloc(kbd->length, GFP_KERNEL);
++ if (kbd->s0 == NULL)
++ goto error;
++
++ kbd->s1 = kmalloc(kbd->length, GFP_KERNEL);
++ if (kbd->s1 == NULL)
++ goto error;
++
++ memset(kbd->s0, -1, kbd->length);
++ memset(kbd->s1, -1, kbd->length);
++
++ kbd->dev = input_allocate_device();
++ if (!kbd->dev)
++ goto error;
++
++ kbd->dev->name = hpkbd_name;
++ kbd->dev->phys = hpkbd_phys;
++ kbd->dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
++ //init_input_dev(kbd->dev);
++ kbd->dev->keycode = (unsigned char *)kbd->table;
++ kbd->dev->keycodesize = sizeof(unsigned char);
++ kbd->dev->keycodemax = ARRAY_SIZE(kbd->table);
++
++ for (i = 0; i < 128; i++)
++ if (kbd->table[i])
++ set_bit(kbd->table[i], kbd->dev->keybit);
++
++ clear_bit(0, kbd->dev->keybit);
++ input_register_device(kbd->dev);
++
++ kbd->next = keyboards;
++ keyboards = kbd;
++
++ init_timer(&scan_timer);
++ scan_timer.expires = jiffies + SCANHZ;
++ scan_timer.data = 0;
++ scan_timer.function = scan_kbd;
++ add_timer(&scan_timer);
++
++ return 0;
++
++error:
++ kfree(kbd->s1);
++ kfree(kbd->s0);
++
++ return -ENOMEM;
++}
++EXPORT_SYMBOL_GPL(register_scan_keyboard);
++
++void unregister_scan_keyboard(struct scan_keyboard *kbd)
++{
++ del_timer_sync(&scan_timer);
++ keyboards = kbd->next;
++ input_unregister_device(kbd->dev);
++ input_free_device(kbd->dev);
++}
++EXPORT_SYMBOL_GPL(unregister_scan_keyboard);
+diff --git a/drivers/input/keyboard/scan_keyb.h b/drivers/input/keyboard/scan_keyb.h
+new file mode 100644
+index 0000000..e50510f
+--- /dev/null
++++ b/drivers/input/keyboard/scan_keyb.h
+@@ -0,0 +1,16 @@
++#ifndef __DRIVER_CHAR_SCAN_KEYB_H
++#define __DRIVER_CHAR_SCAN_KEYB_H
++
++struct scan_keyboard {
++ struct scan_keyboard *next;
++ int (*scan)(unsigned char *buffer);
++ const unsigned char *table;
++ unsigned char *s0, *s1;
++ int length;
++ struct input_dev *dev;
++};
++
++int register_scan_keyboard(struct scan_keyboard *);
++void unregister_scan_keyboard(struct scan_keyboard *);
++
++#endif
+diff --git a/drivers/input/touchscreen/hp680_ts_input.c b/drivers/input/touchscreen/hp680_ts_input.c
+index 2490874..0450d28 100644
+--- a/drivers/input/touchscreen/hp680_ts_input.c
++++ b/drivers/input/touchscreen/hp680_ts_input.c
+@@ -18,12 +18,12 @@
+ #define PHDR 0xa400012e
+ #define SCPDR 0xa4000136
+
+-static void do_softint(void *data);
++static void do_softint(struct work_struct *work);
+
+ static struct input_dev *hp680_ts_dev;
+-static DECLARE_WORK(work, do_softint, 0);
++static DECLARE_DELAYED_WORK(work, do_softint);
+
+-static void do_softint(void *data)
++static void do_softint(struct work_struct *work)
+ {
+ int absx = 0, absy = 0;
+ u8 scpdr;
+@@ -68,9 +68,8 @@ static void do_softint(void *data)
+
+ static irqreturn_t hp680_ts_interrupt(int irq, void *dev)
+ {
+- disable_irq_nosync(irq);
++ disable_irq_nosync(irq);
+ schedule_delayed_work(&work, HZ / 20);
+-
+ return IRQ_HANDLED;
+ }
+
+@@ -108,7 +107,7 @@ static int __init hp680_ts_init(void)
+ return 0;
+
+ fail2: free_irq(HP680_TS_IRQ, NULL);
+- cancel_delayed_work(&work);
++ cancel_delayed_work(&work); /* delay_ts->work */
+ flush_scheduled_work();
+ fail1: input_free_device(hp680_ts_dev);
+ return err;
+diff --git a/drivers/video/backlight/hp680_bl.c b/drivers/video/backlight/hp680_bl.c
+index 0899fcc..109329a 100644
+--- a/drivers/video/backlight/hp680_bl.c
++++ b/drivers/video/backlight/hp680_bl.c
+@@ -125,8 +125,8 @@ static int hp680bl_remove(struct platform_device *pdev)
+ {
+ struct backlight_device *bd = platform_get_drvdata(pdev);
+
+- hp680bl_data.brightness = 0;
+- hp680bl_data.power = 0;
++// hp680bl_data.brightness = 0;
++// hp680bl_data.power = 0;
+ hp680bl_send_intensity(bd);
+
+ backlight_device_unregister(bd);
+diff --git a/include/asm-sh/hd64461.h b/include/asm-sh/hd64461.h
+index 27e5c34..cd2e5f9 100644
+--- a/include/asm-sh/hd64461.h
++++ b/include/asm-sh/hd64461.h
+@@ -9,111 +9,122 @@
+ /* Constants for PCMCIA mappings */
+ #define HD64461_PCC_WINDOW 0x01000000
+
+-#define HD64461_PCC0_BASE 0xb8000000 /* area 6 */
+-#define HD64461_PCC0_ATTR (HD64461_PCC0_BASE)
+-#define HD64461_PCC0_COMM (HD64461_PCC0_BASE+HD64461_PCC_WINDOW)
+-#define HD64461_PCC0_IO (HD64461_PCC0_BASE+2*HD64461_PCC_WINDOW)
+-
+-#define HD64461_PCC1_BASE 0xb4000000 /* area 5 */
+-#define HD64461_PCC1_ATTR (HD64461_PCC1_BASE)
+-#define HD64461_PCC1_COMM (HD64461_PCC1_BASE+HD64461_PCC_WINDOW)
+-
+-#define HD64461_STBCR 0x10000
+-#define HD64461_STBCR_CKIO_STBY 0x2000
+-#define HD64461_STBCR_SAFECKE_IST 0x1000
+-#define HD64461_STBCR_SLCKE_IST 0x0800
+-#define HD64461_STBCR_SAFECKE_OST 0x0400
+-#define HD64461_STBCR_SLCKE_OST 0x0200
+-#define HD64461_STBCR_SMIAST 0x0100
+-#define HD64461_STBCR_SLCDST 0x0080
+-#define HD64461_STBCR_SPC0ST 0x0040
+-#define HD64461_STBCR_SPC1ST 0x0020
+-#define HD64461_STBCR_SAFEST 0x0010
+-#define HD64461_STBCR_STM0ST 0x0008
+-#define HD64461_STBCR_STM1ST 0x0004
+-#define HD64461_STBCR_SIRST 0x0002
+-#define HD64461_STBCR_SURTST 0x0001
+-
+-#define HD64461_SYSCR 0x10002
+-#define HD64461_SCPUCR 0x10004
+-
+-#define HD64461_LCDCBAR 0x11000
+-#define HD64461_LCDCLOR 0x11002
+-#define HD64461_LCDCCR 0x11004
+-#define HD64461_LCDCCR_STBACK 0x0400
+-#define HD64461_LCDCCR_STREQ 0x0100
+-#define HD64461_LCDCCR_MOFF 0x0080
+-#define HD64461_LCDCCR_REFSEL 0x0040
+-#define HD64461_LCDCCR_EPON 0x0020
+-#define HD64461_LCDCCR_SPON 0x0010
+-
+-#define HD64461_LDR1 0x11010
++#define HD64461_PCC0_BASE 0xb8000000 /* area 6 */
++#define HD64461_PCC0_ATTR (HD64461_PCC0_BASE) /* 0xb8000000 */
++#define HD64461_PCC0_COMM (HD64461_PCC0_BASE+HD64461_PCC_WINDOW) /* 0xb9000000 */
++#define HD64461_PCC0_IO (HD64461_PCC0_BASE+2*HD64461_PCC_WINDOW) /* 0xba000000 */
++
++#define HD64461_PCC1_BASE 0xb4000000 /* area 5 */
++#define HD64461_PCC1_ATTR (HD64461_PCC1_BASE) /* 0xb4000000 */
++#define HD64461_PCC1_COMM (HD64461_PCC1_BASE+HD64461_PCC_WINDOW) /* 0xb5000000 */
++
++/* if PORT < 0xf000 then ADDR = 0xa0000000 + PORT */
++#define HD64461_STBCR (CONFIG_HD64461_IOBASE)
++#define HD64461_STBCR_CKIO_STBY 0xa0002000
++#define HD64461_STBCR_SAFECKE_IST 0xa0001000
++#define HD64461_STBCR_SLCKE_IST 0xa0000800
++#define HD64461_STBCR_SAFECKE_OST 0xa0000400
++#define HD64461_STBCR_SLCKE_OST 0xa0000200
++#define HD64461_STBCR_SMIAST 0xa0000100
++#define HD64461_STBCR_SLCDST 0xa0000080
++#define HD64461_STBCR_SPC0ST 0xa0000040
++#define HD64461_STBCR_SPC1ST 0xa0000020
++#define HD64461_STBCR_SAFEST 0xa0000010
++#define HD64461_STBCR_STM0ST 0xa0000008
++#define HD64461_STBCR_STM1ST 0xa0000004
++#define HD64461_STBCR_SIRST 0xa0000002
++#define HD64461_STBCR_SURTST 0xa0000001
++
++/* if PORT < 0x20000 then ADDR = CONFIG_HD64461_IOBASE + PORT - 0x10000 */
++#define HD64461_SYSCR (CONFIG_HD64461_IOBASE + 0x10002 - 0x10000)
++#define HD64461_SCPUCR (CONFIG_HD64461_IOBASE + 0x10004 - 0x10000)
++#define HD64461_LCDCBAR (CONFIG_HD64461_IOBASE + 0x11000 - 0x10000)
++#define HD64461_LCDCLOR (CONFIG_HD64461_IOBASE + 0x11002 - 0x10000)
++#define HD64461_LCDCCR (CONFIG_HD64461_IOBASE + 0x11004 - 0x10000)
++
++
++/* if PORT < 0xf000 then ADDR = 0xa0000000 + PORT */
++#define HD64461_LCDCCR_STBACK (0xa0000000 + 0x0400)
++#define HD64461_LCDCCR_STREQ (0xa0000000 + 0x0100)
++#define HD64461_LCDCCR_MOFF (0xa0000000 + 0x0080)
++#define HD64461_LCDCCR_REFSEL (0xa0000000 + 0x0040)
++#define HD64461_LCDCCR_EPON (0xa0000000 + 0x0020)
++#define HD64461_LCDCCR_SPON (0xa0000000 + 0x0010)
++
++/* if PORT < 0x20000 then ADDR = CONFIG_HD64461_IOBASE + PORT - 0x10000 */
++#define HD64461_LDR1 (CONFIG_HD64461_IOBASE + 0x11010 - 0x10000)
++
++/* if PORT < 0xf000 then ADDR = 0xa0000000 + PORT */
+ #define HD64461_LDR1_DON 0x01
+ #define HD64461_LDR1_DINV 0x80
+
+-#define HD64461_LDR2 0x11012
+-#define HD64461_LDHNCR 0x11014
+-#define HD64461_LDHNSR 0x11016
+-#define HD64461_LDVNTR 0x11018
+-#define HD64461_LDVNDR 0x1101a
+-#define HD64461_LDVSPR 0x1101c
+-#define HD64461_LDR3 0x1101e
+-
+-#define HD64461_CPTWAR 0x11030
+-#define HD64461_CPTWDR 0x11032
+-#define HD64461_CPTRAR 0x11034
+-#define HD64461_CPTRDR 0x11036
+-
+-#define HD64461_GRDOR 0x11040
+-#define HD64461_GRSCR 0x11042
+-#define HD64461_GRCFGR 0x11044
++/* if PORT < 0x20000 then ADDR = CONFIG_HD64461_IOBASE + PORT - 0x10000 */
++#define HD64461_LDR2 (CONFIG_HD64461_IOBASE + 0x11012 - 0x10000)
++#define HD64461_LDHNCR (CONFIG_HD64461_IOBASE + 0x11014 - 0x10000)
++#define HD64461_LDHNSR (CONFIG_HD64461_IOBASE + 0x11016 - 0x10000)
++#define HD64461_LDVNTR (CONFIG_HD64461_IOBASE + 0x11018 - 0x10000)
++#define HD64461_LDVNDR (CONFIG_HD64461_IOBASE + 0x1101a - 0x10000)
++#define HD64461_LDVSPR (CONFIG_HD64461_IOBASE + 0x1101c - 0x10000)
++#define HD64461_LDR3 (CONFIG_HD64461_IOBASE + 0x1101e - 0x10000)
++
++#define HD64461_CPTWAR (CONFIG_HD64461_IOBASE + 0x11030 - 0x10000)
++#define HD64461_CPTWDR (CONFIG_HD64461_IOBASE + 0x11032 - 0x10000)
++#define HD64461_CPTRAR (CONFIG_HD64461_IOBASE + 0x11034 - 0x10000)
++#define HD64461_CPTRDR (CONFIG_HD64461_IOBASE + 0x11036 - 0x10000)
++
++#define HD64461_GRDOR (CONFIG_HD64461_IOBASE + 0x11040 - 0x10000)
++#define HD64461_GRSCR (CONFIG_HD64461_IOBASE + 0x11042 - 0x10000)
++#define HD64461_GRCFGR (CONFIG_HD64461_IOBASE + 0x11044 - 0x10000)
++
+ #define HD64461_GRCFGR_ACCSTATUS 0x10
+ #define HD64461_GRCFGR_ACCRESET 0x08
+-#define HD64461_GRCFGR_ACCSTART_BITBLT 0x06
+-#define HD64461_GRCFGR_ACCSTART_LINE 0x04
++#define HD64461_GRCFGR_ACCSTART_BITBLT 0x06
++#define HD64461_GRCFGR_ACCSTART_LINE 0x04
+ #define HD64461_GRCFGR_COLORDEPTH16 0x01
+
+-#define HD64461_LNSARH 0x11046
+-#define HD64461_LNSARL 0x11048
+-#define HD64461_LNAXLR 0x1104a
+-#define HD64461_LNDGR 0x1104c
+-#define HD64461_LNAXR 0x1104e
+-#define HD64461_LNERTR 0x11050
+-#define HD64461_LNMDR 0x11052
+-#define HD64461_BBTSSARH 0x11054
+-#define HD64461_BBTSSARL 0x11056
+-#define HD64461_BBTDSARH 0x11058
+-#define HD64461_BBTDSARL 0x1105a
+-#define HD64461_BBTDWR 0x1105c
+-#define HD64461_BBTDHR 0x1105e
+-#define HD64461_BBTPARH 0x11060
+-#define HD64461_BBTPARL 0x11062
+-#define HD64461_BBTMARH 0x11064
+-#define HD64461_BBTMARL 0x11066
+-#define HD64461_BBTROPR 0x11068
+-#define HD64461_BBTMDR 0x1106a
+-
++/* if PORT < 0x20000 then CONFIG_HD64461_IOBASE + PORT - 0x10000 */
++#define HD64461_LNSARH (CONFIG_HD64461_IOBASE + 0x11046 - 0x10000)
++#define HD64461_LNSARL (CONFIG_HD64461_IOBASE + 0x11048 - 0x10000)
++#define HD64461_LNAXLR (CONFIG_HD64461_IOBASE + 0x1104a - 0x10000)
++#define HD64461_LNDGR (CONFIG_HD64461_IOBASE + 0x1104c - 0x10000)
++#define HD64461_LNAXR (CONFIG_HD64461_IOBASE + 0x1104e - 0x10000)
++#define HD64461_LNERTR (CONFIG_HD64461_IOBASE + 0x11050 - 0x10000)
++#define HD64461_LNMDR (CONFIG_HD64461_IOBASE + 0x11052 - 0x10000)
++#define HD64461_BBTSSARH (CONFIG_HD64461_IOBASE + 0x11054 - 0x10000)
++#define HD64461_BBTSSARL (CONFIG_HD64461_IOBASE + 0x11056 - 0x10000)
++#define HD64461_BBTDSARH (CONFIG_HD64461_IOBASE + 0x11058 - 0x10000)
++#define HD64461_BBTDSARL (CONFIG_HD64461_IOBASE + 0x1105a - 0x10000)
++#define HD64461_BBTDWR (CONFIG_HD64461_IOBASE + 0x1105c - 0x10000)
++#define HD64461_BBTDHR (CONFIG_HD64461_IOBASE + 0x1105e - 0x10000)
++#define HD64461_BBTPARH (CONFIG_HD64461_IOBASE + 0x11060 - 0x10000)
++#define HD64461_BBTPARL (CONFIG_HD64461_IOBASE + 0x11062 - 0x10000)
++#define HD64461_BBTMARH (CONFIG_HD64461_IOBASE + 0x11064 - 0x10000)
++#define HD64461_BBTMARL (CONFIG_HD64461_IOBASE + 0x11066 - 0x10000)
++#define HD64461_BBTROPR (CONFIG_HD64461_IOBASE + 0x11068 - 0x10000)
++#define HD64461_BBTMDR (CONFIG_HD64461_IOBASE + 0x1106a - 0x10000)
++
++/* These must be like this, otherwise the Jornada will not boot! */
+ /* PC Card Controller Registers */
+-#define HD64461_PCC0ISR 0x12000 /* socket 0 interface status */
+-#define HD64461_PCC0GCR 0x12002 /* socket 0 general control */
+-#define HD64461_PCC0CSCR 0x12004 /* socket 0 card status change */
+-#define HD64461_PCC0CSCIER 0x12006 /* socket 0 card status change interrupt enable */
+-#define HD64461_PCC0SCR 0x12008 /* socket 0 software control */
+-#define HD64461_PCC1ISR 0x12010 /* socket 1 interface status */
+-#define HD64461_PCC1GCR 0x12012 /* socket 1 general control */
+-#define HD64461_PCC1CSCR 0x12014 /* socket 1 card status change */
+-#define HD64461_PCC1CSCIER 0x12016 /* socket 1 card status change interrupt enable */
+-#define HD64461_PCC1SCR 0x12018 /* socket 1 software control */
++#define HD64461_PCC0ISR (CONFIG_HD64461_IOBASE + 0x12000 - 0x10000) /* socket 0 interface status */
++#define HD64461_PCC0GCR (CONFIG_HD64461_IOBASE + 0x12002 - 0x10000) /* socket 0 general control */
++#define HD64461_PCC0CSCR (CONFIG_HD64461_IOBASE + 0x12004 - 0x10000) /* socket 0 card status change */
++#define HD64461_PCC0CSCIER (CONFIG_HD64461_IOBASE + 0x12006 - 0x10000) /* socket 0 card status change interrupt enable */
++#define HD64461_PCC0SCR (CONFIG_HD64461_IOBASE + 0x12008 - 0x10000) /* socket 0 software control */
++#define HD64461_PCC1ISR (CONFIG_HD64461_IOBASE + 0x12010 - 0x10000) /* socket 1 interface status */
++#define HD64461_PCC1GCR (CONFIG_HD64461_IOBASE + 0x12012 - 0x10000) /* socket 1 general control */
++#define HD64461_PCC1CSCR (CONFIG_HD64461_IOBASE + 0x12014 - 0x10000) /* socket 1 card status change */
++#define HD64461_PCC1CSCIER (CONFIG_HD64461_IOBASE + 0x12016 - 0x10000) /* socket 1 card status change interrupt enable */
++#define HD64461_PCC1SCR (CONFIG_HD64461_IOBASE + 0x12018 - 0x10000) /* socket 1 software control */
+
+ /* PCC Interface Status Register */
+-#define HD64461_PCCISR_READY 0x80 /* card ready */
+-#define HD64461_PCCISR_MWP 0x40 /* card write-protected */
+-#define HD64461_PCCISR_VS2 0x20 /* voltage select pin 2 */
+-#define HD64461_PCCISR_VS1 0x10 /* voltage select pin 1 */
+-#define HD64461_PCCISR_CD2 0x08 /* card detect 2 */
+-#define HD64461_PCCISR_CD1 0x04 /* card detect 1 */
+-#define HD64461_PCCISR_BVD2 0x02 /* battery 1 */
+-#define HD64461_PCCISR_BVD1 0x01 /* battery 1 */
++#define HD64461_PCCISR_READY 0x80 /* card ready */
++#define HD64461_PCCISR_MWP 0x40 /* card write-protected */
++#define HD64461_PCCISR_VS2 0x20 /* voltage select pin 2 */
++#define HD64461_PCCISR_VS1 0x10 /* voltage select pin 1 */
++#define HD64461_PCCISR_CD2 0x08 /* card detect 2 */
++#define HD64461_PCCISR_CD1 0x04 /* card detect 1 */
++#define HD64461_PCCISR_BVD2 0x02 /* battery 1 */
++#define HD64461_PCCISR_BVD1 0x01 /* battery 1 */
+
+ #define HD64461_PCCISR_PCD_MASK 0x0c /* card detect */
+ #define HD64461_PCCISR_BVD_MASK 0x03 /* battery voltage */
+@@ -160,29 +171,29 @@
+ #define HD64461_PCCSCR_VCC1 0x02 /* voltage control pin 1 */
+ #define HD64461_PCCSCR_SWP 0x01 /* write protect */
+
+-#define HD64461_P0OCR 0x1202a
+-#define HD64461_P1OCR 0x1202c
+-#define HD64461_PGCR 0x1202e
+-
+-#define HD64461_GPACR 0x14000
+-#define HD64461_GPBCR 0x14002
+-#define HD64461_GPCCR 0x14004
+-#define HD64461_GPDCR 0x14006
+-#define HD64461_GPADR 0x14010
+-#define HD64461_GPBDR 0x14012
+-#define HD64461_GPCDR 0x14014
+-#define HD64461_GPDDR 0x14016
+-#define HD64461_GPAICR 0x14020
+-#define HD64461_GPBICR 0x14022
+-#define HD64461_GPCICR 0x14024
+-#define HD64461_GPDICR 0x14026
+-#define HD64461_GPAISR 0x14040
+-#define HD64461_GPBISR 0x14042
+-#define HD64461_GPCISR 0x14044
+-#define HD64461_GPDISR 0x14046
+-
+-#define HD64461_NIRR 0x15000
+-#define HD64461_NIMR 0x15002
++#define HD64461_P0OCR (CONFIG_HD64461_IOBASE + 0x1202a - 0x10000)
++#define HD64461_P1OCR (CONFIG_HD64461_IOBASE + 0x1202c - 0x10000)
++#define HD64461_PGCR (CONFIG_HD64461_IOBASE + 0x1202e - 0x10000)
++
++#define HD64461_GPACR (CONFIG_HD64461_IOBASE + 0x14000 - 0x10000)
++#define HD64461_GPBCR (CONFIG_HD64461_IOBASE + 0x14002 - 0x10000)
++#define HD64461_GPCCR (CONFIG_HD64461_IOBASE + 0x14004 - 0x10000)
++#define HD64461_GPDCR (CONFIG_HD64461_IOBASE + 0x14006 - 0x10000)
++#define HD64461_GPADR (CONFIG_HD64461_IOBASE + 0x14010 - 0x10000)
++#define HD64461_GPBDR (CONFIG_HD64461_IOBASE + 0x14012 - 0x10000)
++#define HD64461_GPCDR (CONFIG_HD64461_IOBASE + 0x14014 - 0x10000)
++#define HD64461_GPDDR (CONFIG_HD64461_IOBASE + 0x14016 - 0x10000)
++#define HD64461_GPAICR (CONFIG_HD64461_IOBASE + 0x14020 - 0x10000)
++#define HD64461_GPBICR (CONFIG_HD64461_IOBASE + 0x14022 - 0x10000)
++#define HD64461_GPCICR (CONFIG_HD64461_IOBASE + 0x14024 - 0x10000)
++#define HD64461_GPDICR (CONFIG_HD64461_IOBASE + 0x14026 - 0x10000)
++#define HD64461_GPAISR (CONFIG_HD64461_IOBASE + 0x14040 - 0x10000)
++#define HD64461_GPBISR (CONFIG_HD64461_IOBASE + 0x14042 - 0x10000)
++#define HD64461_GPCISR (CONFIG_HD64461_IOBASE + 0x14044 - 0x10000)
++#define HD64461_GPDISR (CONFIG_HD64461_IOBASE + 0x14046 - 0x10000)
++
++#define HD64461_NIRR 0xb0005000 /* 0x10005000 */
++#define HD64461_NIMR 0xb0005002 /* 0x10005002 */
+
+ #define HD64461_IRQBASE OFFCHIP_IRQ_BASE
+ #define HD64461_IRQ_NUM 16
+diff --git a/include/asm-sh/io.h b/include/asm-sh/io.h
+index a0e55b0..08848ee 100644
+--- a/include/asm-sh/io.h
++++ b/include/asm-sh/io.h
+@@ -143,6 +143,7 @@ void __raw_readsl(unsigned long addr, void *data, int longlen);
+ #define readl_relaxed(a) readl(a)
+
+ /* Simple MMIO */
++#ifndef CONFIG_CPU_SUBTYPE_SH7709
+ #define ioread8(a) readb(a)
+ #define ioread16(a) readw(a)
+ #define ioread16be(a) be16_to_cpu(__raw_readw((a)))
+@@ -154,6 +155,7 @@ void __raw_readsl(unsigned long addr, void *data, int longlen);
+ #define iowrite16be(v,a) __raw_writew(cpu_to_be16((v)),(a))
+ #define iowrite32(v,a) writel((v),(a))
+ #define iowrite32be(v,a) __raw_writel(cpu_to_be32((v)),(a))
++#endif
+
+ #define ioread8_rep(a,d,c) insb((a),(d),(c))
+ #define ioread16_rep(a,d,c) insw((a),(d),(c))
+@@ -163,6 +165,20 @@ void __raw_readsl(unsigned long addr, void *data, int longlen);
+ #define iowrite16_rep(a,s,c) outsw((a),(s),(c))
+ #define iowrite32_rep(a,s,c) outsl((a),(s),(c))
+
++#ifdef CONFIG_CPU_SUBTYPE_SH7709
++ #define ioread8(a) inb(a)
++ #define ioread16(a) inw(a)
++ #define ioread16be(a) be16_to_cpu(inw((a)))
++ #define ioread32(a) inl(a)
++ #define ioread32be(v,a) be32_to_cpu(inl((a)))
++
++ #define iowrite8(v,a) outb((v),(a))
++ #define iowrite16(v,a) outw((v),(a))
++ #define iowrite16be(v,a) outw(cpu_to_be16((v),(a)))
++ #define iowrite32(v,a) outl((v),(a))
++ #define iowrite32be(v,a) outl(cpu_to_be32((v),(a)))
++#endif
++
+ #define mmiowb() wmb() /* synco on SH-4A, otherwise a nop */
+
+ /*
+diff --git a/include/asm-sh/irq.h b/include/asm-sh/irq.h
+index afe188f..95f9a1a 100644
+--- a/include/asm-sh/irq.h
++++ b/include/asm-sh/irq.h
+@@ -23,6 +23,40 @@
+ defined(CONFIG_CPU_SUBTYPE_SH7705)
+ # define ONCHIP_NR_IRQS 64 // Actually 61
+ # define PINT_NR_IRQS 16
++
++ #define INTC_IRR0 0xa4000004UL
++ #define INTC_IRR1 0xa4000006UL
++ #define INTC_IRR2 0xa4000008UL
++
++ #define INTC_IPRA 0xfffffee2UL
++ #define INTC_IPRB 0xfffffee4UL
++ #define INTC_IPRD 0xa4000018UL
++
++ #define INTC_INTER 0xa4000014UL
++
++ #define INTC_ICR0 0xfffffee0UL
++ #define INTC_ICR1 0xa4000010UL
++ #define INTC_ICR2 0xa4000012UL
++
++ #define PORT_PACR 0xa4000100UL
++ #define PORT_PBCR 0xa4000102UL
++ #define PORT_PCCR 0xa4000104UL
++ #define PORT_PFCR 0xa400010aUL
++
++ #define PORT_PADR 0xa4000120UL
++ #define PORT_PBDR 0xa4000122UL
++ #define PORT_PCDR 0xa4000124UL
++ #define PORT_PFDR 0xa400012aUL
++
++ #define PINT0_IRQ 40
++ #define PINT8_IRQ 41
++ #define PINT0_IPR_ADDR INTC_IPRD
++ #define PINT8_IPR_ADDR INTC_IPRD
++ #define PINT0_IPR_POS 3
++ #define PINT8_IPR_POS 2
++ #define PINT0_PRIORITY 2
++ #define PINT8_PRIORITY 2
++
+ #elif defined(CONFIG_CPU_SUBTYPE_SH7710)
+ # define ONCHIP_NR_IRQS 104
+ #elif defined(CONFIG_CPU_SUBTYPE_SH7750)
+diff --git a/sound/oss/sh_dac_audio.c b/sound/oss/sh_dac_audio.c
+index 7ea9acc..dcfcad0 100644
+--- a/sound/oss/sh_dac_audio.c
++++ b/sound/oss/sh_dac_audio.c
+@@ -32,6 +32,7 @@
+ #define MODNAME "sh_dac_audio"
+
+ #define TMU_TOCR_INIT 0x00
++#define TIMER1_IRQ 14
+
+ #define TMU1_TCR_INIT 0x0020 /* Clock/4, rising edge; interrupt on */
+ #define TMU1_TSTR_INIT 0x02 /* Bit to turn on TMU1 */
+@@ -104,7 +105,7 @@ static void dac_audio_set_rate(void)
+ unsigned long interval;
+ struct clk *clk;
+
+- clk = clk_get("module_clk");
++ clk = clk_get("module_clk", NULL);
+ interval = (clk_get_rate(clk) / 4) / rate;
+ clk_put(clk);
+ ctrl_outl(interval, TMU1_TCOR);
diff --git a/packages/linux/linux-jlime-jornada6xx-2.6.21rc5/hp6xx-IRQ3.patch b/packages/linux/linux-jlime-jornada6xx-2.6.21rc5/hp6xx-IRQ3.patch
new file mode 100644
index 0000000000..c4819514d7
--- /dev/null
+++ b/packages/linux/linux-jlime-jornada6xx-2.6.21rc5/hp6xx-IRQ3.patch
@@ -0,0 +1,4 @@
+14c14
+< #define HP680_TS_IRQ IRQ3_IRQ
+---
+> #define HP680_TS_IRQ 35
diff --git a/packages/linux/linux-jlime-jornada6xx_2.6.17.bb b/packages/linux/linux-jlime-jornada6xx_2.6.17.bb
index 1c22e230e1..4fdeb52fc4 100644
--- a/packages/linux/linux-jlime-jornada6xx_2.6.17.bb
+++ b/packages/linux/linux-jlime-jornada6xx_2.6.17.bb
@@ -11,7 +11,8 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.17.tar.gz \
file://LinuxSH-2.6.17.patch;patch=0 \
file://unexpected-int-fix.patch;patch=0 \
file://keymap-fix.patch;patch=0 \
- file://io.h-fix.patch;patch=0"
+ file://io.h-fix.patch;patch=0 \
+ file://keyboard-fix-deadkeys.patch;patch=0"
S = "${WORKDIR}/linux-${PV}"
diff --git a/packages/linux/linux-jlime-jornada6xx_2.6.21rc5.bb b/packages/linux/linux-jlime-jornada6xx_2.6.21rc5.bb
new file mode 100644
index 0000000000..82b54258b5
--- /dev/null
+++ b/packages/linux/linux-jlime-jornada6xx_2.6.21rc5.bb
@@ -0,0 +1,33 @@
+SECTION = "kernel"
+DESCRIPTION = "JLime Linux kernel for SuperH based Jornada 6xx"
+LICENSE = "GPL"
+PR = "r0"
+
+COMPATIBLE_HOST = "sh.*-linux"
+#COMPATIBLE_MACHINE = "jornada6xx"
+
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=v2.6.21-rc5 \
+ file://git-20070405-2.patch;patch=1 \
+ file://hp6xx-IRQ3.patch;patch=1 \
+ file://defconfig"
+
+
+S = "${WORKDIR}/git"
+
+inherit kernel
+
+#Lets let 3.4.x handle the compilation of this one
+KERNEL_CCSUFFIX = "-3.4.4"
+
+ARCH = "sh"
+KERNEL_IMAGETYPE = "zImage"
+FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/$(ARCH)/boot/$(KERNEL_IMAGETYPE) $(DEPLOY_DIR)/images/$(KERNEL_IMAGETYPE)
+}
diff --git a/packages/linux/linux-jlime-jornada7xx_2.6.19rc6.bb b/packages/linux/linux-jlime-jornada7xx_2.6.19rc6.bb
index 7fc274351a..10b3d2edac 100644
--- a/packages/linux/linux-jlime-jornada7xx_2.6.19rc6.bb
+++ b/packages/linux/linux-jlime-jornada7xx_2.6.19rc6.bb
@@ -20,7 +20,6 @@ KERNEL_CCSUFFIX = "-3.4.4"
ARCH = "arm"
KERNEL_IMAGETYPE = "zImage"
-KERNEL_RELEASE = "2.6.19-rc6"
FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
diff --git a/packages/linux/linux-linkstationarm/.mtn2git_empty b/packages/linux/linux-linkstationarm/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-linkstationarm/.mtn2git_empty
diff --git a/packages/linux/linux-linkstationarm/defconfig b/packages/linux/linux-linkstationarm/defconfig
new file mode 100644
index 0000000000..0c11bab677
--- /dev/null
+++ b/packages/linux/linux-linkstationarm/defconfig
@@ -0,0 +1,1123 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.12.6
+# Tue Apr 3 15:51:24 2007
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_IOMAP=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_CLEAN_COMPILE=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+# CONFIG_LOCALVERSION is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_HOTPLUG=y
+CONFIG_KOBJECT_UEVENT=y
+# CONFIG_IKCONFIG is not set
+# CONFIG_EMBEDDED is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=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_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_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# System Type
+#
+# 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_CAMELOT is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+CONFIG_ARCH_MV88fxx81=y
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 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_VERSATILE is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+
+#
+# BUFFALO Features
+#
+CONFIG_BUFFALO_PLATFORM=y
+CONFIG_BUFFALO_LINKSTATION_LSGL=y
+# CONFIG_BUFFALO_TERASTATION_TEST is not set
+# CONFIG_BUFFALO_LSGL_SOFT_BOARDID is not set
+CONFIG_USE_RS5C372=y
+CONFIG_BUFFALO_USE_MICON=y
+
+#
+# mv88fxx81 Options
+#
+# CONFIG_ARCH_MV88f1181 is not set
+CONFIG_ARCH_MV88f5181=y
+CONFIG_MV88F5182=y
+# CONFIG_VOIP_RD2 is not set
+# CONFIG_MV_88W8660 is not set
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+# CONFIG_USE_DSP is not set
+CONFIG_MV_DMA_COPYUSER=y
+
+#
+# egiga options
+#
+CONFIG_ETH_0_MACADDR="000000000051"
+# CONFIG_EGIGA_PROC is not set
+# CONFIG_EGIGA_MULTI_Q is not set
+# CONFIG_QUARTER_DECK is not set
+
+#
+# cesa options
+#
+CONFIG_MV_CESA=y
+# CONFIG_MV_CESA_TEST is not set
+CONFIG_SCSI_MVSATA=y
+CONFIG_MV88fxx81_PROC=y
+CONFIG_UBOOT_STRUCT=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_BIG_ENDIAN 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
+
+#
+# Bus support
+#
+CONFIG_ISA_DMA_API=y
+CONFIG_PCI=y
+# CONFIG_PCI_LEGACY_PROC is not set
+# CONFIG_PCI_NAMES is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_SMP is not set
+# CONFIG_PREEMPT is not set
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_REORDER is not set
+# CONFIG_DISCONTIGMEM is not set
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=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="console=ttyAM0 root=/dev/nfs rw nfsroot=10.4.50.31:/home/rshitrit/cramfs-1.1/cramfs-1.1/shoko2 mem=32M ip=10.4.50.99:10.4.50.31:::ARM:eth0:none"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+CONFIG_FPE_FASTFPE=y
+# CONFIG_VFP is not set
+CONFIG_VFP_RUN_FAST_MODE=y
+
+#
+# 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
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_GEOMETRY 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=y
+CONFIG_MTD_CFI_AMDSTD_RETRY=0
+# 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_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0xf0000000
+CONFIG_MTD_PHYSMAP_LEN=0x1000000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_EDB7312 is not set
+# CONFIG_MTD_IMPA7 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_BLKMTD 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
+
+#
+# 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=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=y
+CONFIG_BLK_DEV_RAM_COUNT=3
+CONFIG_BLK_DEV_RAM_SIZE=16384
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CDROM_PKTCDVD is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# SCSI device support
+#
+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 is not set
+CONFIG_CHR_DEV_SG=y
+
+#
+# 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 is not set
+
+#
+# SCSI low-level drivers
+#
+# 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_SCSI_SATA is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+CONFIG_SCSI_QLA2XXX=y
+# CONFIG_SCSI_QLA21XX is not set
+# CONFIG_SCSI_QLA22XX is not set
+# CONFIG_SCSI_QLA2300 is not set
+# CONFIG_SCSI_QLA2322 is not set
+# CONFIG_SCSI_QLA6312 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 is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Networking support
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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_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_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_IP_TCPDIAG=y
+# CONFIG_IP_TCPDIAG_IPV6 is not set
+# CONFIG_IPV6 is not set
+# CONFIG_NETFILTER is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP 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_LLC=m
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+CONFIG_ATALK=m
+# CONFIG_DEV_APPLETALK 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
+# CONFIG_NET_CLS_ROUTE is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+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
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+
+#
+# Tulip family network device support
+#
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_PCI 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_SK98LIN=y
+CONFIG_SK98LIN_NAPI=y
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# 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
+# CONFIG_MARVELL_HARDAP is not set
+# CONFIG_MARVELL_SOFTAP 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
+
+#
+# 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 is not set
+# CONFIG_INPUT_MOUSE 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 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=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+# 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=y
+CONFIG_LEGACY_PTY_COUNT=16
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC 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=m
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# 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_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_ISA is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_SCx200_ACB 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
+
+#
+# Hardware Sensors Chip support
+#
+# CONFIG_I2C_SENSOR 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_ASB100 is not set
+# CONFIG_SENSORS_DS1621 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_SMSC47B397 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+
+#
+# Other I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 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
+
+#
+# Misc devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+
+#
+# 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_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_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_BLUETOOTH_TTY is not set
+# 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=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_DPCM=y
+# CONFIG_USB_STORAGE_USBAT is not set
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_USB_HIDINPUT=y
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_MTOUCH is not set
+# CONFIG_USB_EGALAX is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE 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_TEST is not set
+
+#
+# USB ATM/DSL drivers
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+
+#
+# XFS support
+#
+CONFIG_XFS_FS=y
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+
+#
+# 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="utf8"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVPTS_FS_XATTR is not set
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_XATTR is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+
+#
+# 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 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_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_SUNRPC=y
+# 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=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+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=y
+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=y
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_FRAME_POINTER=y
+CONFIG_DEBUG_USER=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_WP512=y
+CONFIG_CRYPTO_TGR192=y
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_BLOWFISH=y
+CONFIG_CRYPTO_TWOFISH=y
+CONFIG_CRYPTO_SERPENT=y
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_CAST5=y
+CONFIG_CRYPTO_CAST6=y
+CONFIG_CRYPTO_TEA=y
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_KHAZAD=y
+CONFIG_CRYPTO_ANUBIS=y
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+
diff --git a/packages/linux/linux-linkstationarm/makefile.patch b/packages/linux/linux-linkstationarm/makefile.patch
new file mode 100644
index 0000000000..89d6d50594
--- /dev/null
+++ b/packages/linux/linux-linkstationarm/makefile.patch
@@ -0,0 +1,11 @@
+--- linux-2.6.12.old/Makefile 2005-08-28 23:41:01.000000000 +0000
++++ linux-2.6.12/Makefile 2007-04-07 17:56:02.000000000 +0000
+@@ -1,7 +1,7 @@
+ VERSION = 2
+ PATCHLEVEL = 6
+ SUBLEVEL = 12
+-EXTRAVERSION = -arm1
++EXTRAVERSION = .6-arm1
+ NAME=Woozy Numbat
+
+ # *DOCUMENTATION*
diff --git a/packages/linux/linux-linkstationarm_2.6.12.bb b/packages/linux/linux-linkstationarm_2.6.12.bb
new file mode 100644
index 0000000000..77703ad999
--- /dev/null
+++ b/packages/linux/linux-linkstationarm_2.6.12.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "Linux Kernel for ARM based Buffalo Linkstations"
+SECTION = "kernel"
+LICENSE = "GPL"
+PR = "r2"
+
+COMPATIBLE_MACHINE = "lsarm"
+
+SRC_URI = "http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.12.tar.bz2 \
+ http://downloads.linkstationwiki.net/Users/timtimred/lsarm/2.6.12-compiler_fix.patch;patch=1 \
+ file://makefile.patch;patch=1 \
+ file://defconfig \
+ "
+
+S = "${WORKDIR}/linux-2.6.12"
+
+inherit kernel
+
+export ARCH="arm"
+
+KERNEL_IMAGETYPE = "uImage"
+
+do_configure() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+ ARCH=${ARCH} oe_runmake oldconfig
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/vmlinux.UBoot
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
+
diff --git a/packages/linux/linux-linkstationppc/.mtn2git_empty b/packages/linux/linux-linkstationppc/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-linkstationppc/.mtn2git_empty
diff --git a/packages/linux/linux-linkstationppc/defconfig b/packages/linux/linux-linkstationppc/defconfig
new file mode 100644
index 0000000000..385f7826f0
--- /dev/null
+++ b/packages/linux/linux-linkstationppc/defconfig
@@ -0,0 +1,1981 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21-rc4
+# Sun Mar 25 15:52:14 2007
+#
+# CONFIG_PPC64 is not set
+CONFIG_PPC32=y
+CONFIG_PPC_MERGE=y
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_IRQ_PER_CPU=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_ILOG2_U32=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_PPC=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_PPC_OF=y
+CONFIG_PPC_UDBG_16550=y
+# CONFIG_GENERIC_TBSYNC is not set
+CONFIG_AUDIT_ARCH=y
+CONFIG_GENERIC_BUG=y
+CONFIG_DEFAULT_UIMAGE=y
+
+#
+# Processor support
+#
+CONFIG_CLASSIC32=y
+# CONFIG_PPC_82xx is not set
+# CONFIG_PPC_83xx is not set
+# CONFIG_PPC_85xx is not set
+# CONFIG_PPC_86xx is not set
+# CONFIG_PPC_8xx is not set
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_E200 is not set
+CONFIG_6xx=y
+CONFIG_PPC_FPU=y
+# CONFIG_PPC_DCR_NATIVE is not set
+# CONFIG_PPC_DCR_MMIO is not set
+# CONFIG_ALTIVEC is not set
+CONFIG_PPC_STD_MMU=y
+CONFIG_PPC_STD_MMU_32=y
+# CONFIG_SMP is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# 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_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# 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=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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 is not set
+# 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=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"
+
+#
+# Platform support
+#
+# CONFIG_PPC_MULTIPLATFORM is not set
+CONFIG_EMBEDDED6xx=y
+# CONFIG_APUS is not set
+# CONFIG_PPC_MPC52xx is not set
+# CONFIG_PPC_MPC5200 is not set
+# CONFIG_PPC_CELL is not set
+# CONFIG_PPC_CELL_NATIVE is not set
+# CONFIG_PPC_RTAS is not set
+# CONFIG_MMIO_NVRAM is not set
+# CONFIG_PPC_MPC106 is not set
+# CONFIG_PPC_970_NAP is not set
+# CONFIG_PPC_INDIRECT_IO is not set
+# CONFIG_GENERIC_IOMAP is not set
+# CONFIG_CPU_FREQ is not set
+# CONFIG_TAU is not set
+# CONFIG_KATANA is not set
+# CONFIG_WILLOW is not set
+# CONFIG_CPCI690 is not set
+# CONFIG_POWERPMC250 is not set
+# CONFIG_CHESTNUT is not set
+# CONFIG_SPRUCE is not set
+# CONFIG_HDPU is not set
+# CONFIG_EV64260 is not set
+# CONFIG_LOPEC is not set
+# CONFIG_MVME5100 is not set
+# CONFIG_PPLUS is not set
+# CONFIG_PRPMC750 is not set
+# CONFIG_PRPMC800 is not set
+# CONFIG_SANDPOINT is not set
+CONFIG_LINKSTATION=y
+# CONFIG_MPC7448HPC2 is not set
+# CONFIG_RADSTONE_PPC7D is not set
+# CONFIG_PAL4 is not set
+# CONFIG_EST8260 is not set
+# CONFIG_SBC82xx is not set
+# CONFIG_SBS8260 is not set
+# CONFIG_RPX8260 is not set
+# CONFIG_TQM8260 is not set
+# CONFIG_ADS8272 is not set
+# CONFIG_PQ2FADS is not set
+# CONFIG_EV64360 is not set
+CONFIG_PPC_GEN550=y
+CONFIG_MPC10X_BRIDGE=y
+CONFIG_MPC10X_OPENPIC=y
+# CONFIG_MPC10X_STORE_GATHERING is not set
+# CONFIG_WANT_EARLY_SERIAL is not set
+CONFIG_MPIC=y
+
+#
+# Kernel options
+#
+# CONFIG_HIGHMEM is not set
+CONFIG_HZ_100=y
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=100
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_POPULATES_NODE_MAP=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 is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_PROC_DEVICETREE=y
+# CONFIG_CMDLINE_BOOL is not set
+# CONFIG_PM is not set
+CONFIG_SECCOMP=y
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+CONFIG_ZONE_DMA=y
+CONFIG_GENERIC_ISA_DMA=y
+# CONFIG_MPIC_WEIRD is not set
+# CONFIG_PPC_I8259 is not set
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_FSL_SOC=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_PCIEPORTBUS is not set
+# CONFIG_PCI_DEBUG is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# PCI Hotplug Support
+#
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Advanced setup
+#
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Default settings for advanced configuration options are used
+#
+CONFIG_HIGHMEM_START=0xfe000000
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_TASK_SIZE=0x80000000
+CONFIG_BOOT_LOAD=0x00800000
+
+#
+# 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=m
+# 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=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_MULTIPLE_TABLES is not set
+# CONFIG_IP_ROUTE_MULTIPATH is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE=y
+# CONFIG_IP_PIMSM_V1 is not set
+# CONFIG_IP_PIMSM_V2 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=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
+
+#
+# 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
+# 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=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_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 is not set
+# CONFIG_NF_CONNTRACK_MARK is not set
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+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 is not set
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# 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 is not set
+CONFIG_IP_NF_MATCH_RECENT=m
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_AH is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+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 is not set
+# CONFIG_IP_NF_TARGET_ULOG is not set
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+# CONFIG_IP_NF_TARGET_NETMAP is not set
+# CONFIG_IP_NF_TARGET_SAME is not set
+# CONFIG_NF_NAT_SNMP_BASIC is not set
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=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 is not set
+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 is not set
+# CONFIG_IP6_NF_QUEUE is not set
+# CONFIG_IP6_NF_IPTABLES is not set
+
+#
+# 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 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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+# CONFIG_SIGMATEL_FIR is not set
+# CONFIG_NSC_FIR is not set
+# CONFIG_WINBOND_FIR is not set
+# CONFIG_TOSHIBA_FIR is not set
+# CONFIG_SMC_IRCC_FIR is not set
+# CONFIG_ALI_FIR is not set
+# CONFIG_VLSI_FIR is not set
+# CONFIG_VIA_FIR is not set
+CONFIG_MCS_FIR=m
+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=y
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+CONFIG_IEEE80211_SOFTMAC_DEBUG=y
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# 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 is not set
+# CONFIG_MTD_CMDLINE_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=y
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+# CONFIG_MTD_MAP_BANK_WIDTH_2 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP 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
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0xffc00000
+CONFIG_MTD_PHYSMAP_LEN=0x400000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=1
+# CONFIG_MTD_PHYSMAP_OF 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_DEV_FD 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=y
+CONFIG_BLK_DEV_RAM_COUNT=2
+CONFIG_BLK_DEV_RAM_SIZE=8192
+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
+
+#
+# Misc devices
+#
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# 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 is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_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 is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS 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_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_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 is not set
+# 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 is not set
+# 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=y
+# 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=y
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND 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=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+# CONFIG_MD_FAULTY is not set
+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
+
+#
+# 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
+
+#
+# Macintosh device drivers
+#
+# CONFIG_MAC_EMUMOUSEBTN is not set
+# CONFIG_WINDFARM 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_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+
+#
+# Tulip family network device support
+#
+CONFIG_NET_TULIP=y
+# CONFIG_DE2104X is not set
+CONFIG_TULIP=y
+# CONFIG_TULIP_MWI is not set
+CONFIG_TULIP_MMIO=y
+# CONFIG_TULIP_NAPI is not set
+# CONFIG_DE4X5 is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_DM9102 is not set
+# CONFIG_ULI526X is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_PCI 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=y
+# CONFIG_R8169_NAPI is not set
+# CONFIG_R8169_VLAN is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+# 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_AIRO 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 is not set
+# CONFIG_SLIP is not set
+# 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
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS 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=m
+# 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_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_I8042 is not set
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_PCIPS2 is not set
+# 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_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_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_UARTLITE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+# CONFIG_SERIAL_OF_PLATFORM 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=y
+# CONFIG_NVRAM 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_AGP 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 is not set
+# 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_MPC=y
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PASEMI 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=m
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_M41T00 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 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# 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 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
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+# CONFIG_FB is not set
+# CONFIG_FB_IBM_GXT4500 is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FONT_8x16=y
+
+#
+# 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 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_SEQUENCER_OSS=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_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_ALS4000 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 PowerMac devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_USX2Y=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 is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PPC_OF=y
+CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
+# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
+CONFIG_USB_OHCI_HCD_PCI=y
+CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
+CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+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 is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+CONFIG_USB_ACECAD=m
+CONFIG_USB_KBTAB=m
+CONFIG_USB_POWERMATE=m
+CONFIG_USB_TOUCHSCREEN=m
+CONFIG_USB_TOUCHSCREEN_EGALAX=y
+CONFIG_USB_TOUCHSCREEN_PANJIT=y
+CONFIG_USB_TOUCHSCREEN_3M=y
+CONFIG_USB_TOUCHSCREEN_ITM=y
+CONFIG_USB_TOUCHSCREEN_ETURBO=y
+CONFIG_USB_TOUCHSCREEN_GUNZE=y
+CONFIG_USB_TOUCHSCREEN_DMC_TSC10=y
+CONFIG_USB_YEALINK=m
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+CONFIG_USB_ATI_REMOTE2=m
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+CONFIG_USB_APPLETOUCH=y
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+CONFIG_USB_MICROTEK=m
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_CONSOLE=y
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP2101 is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+CONFIG_USB_SERIAL_FTDI_SIO=y
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+# 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=m
+# CONFIG_USB_BERRY_CHARGE is not set
+CONFIG_USB_LED=m
+CONFIG_USB_CYPRESS_CY7C63=m
+CONFIG_USB_CYTHERM=m
+# CONFIG_USB_PHIDGET is not set
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+CONFIG_USB_SISUSBVGA_CON=y
+# 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
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+CONFIG_RTC_DRV_RS5C372=y
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# Auxiliary Display support
+#
+
+#
+# Virtualization
+#
+
+#
+# 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=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_REISERFS_FS_XATTR is not set
+CONFIG_JFS_FS=m
+# CONFIG_JFS_POSIX_ACL is not set
+# CONFIG_JFS_SECURITY is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_FS_POSIX_ACL=y
+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 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="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=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=m
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=m
+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=m
+CONFIG_VXFS_FS=m
+CONFIG_HPFS_FS=m
+CONFIG_QNX4FS_FS=m
+CONFIG_SYSV_FS=m
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_UFS_DEBUG is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+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 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=y
+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 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=m
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS 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=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+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
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+
+#
+# Instrumentation Support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+# CONFIG_KPROBES is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# 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_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=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_BUGVERBOSE=y
+# 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_DEBUGGER is not set
+# CONFIG_BDI_SWITCH is not set
+# CONFIG_BOOTX_TEXT is not set
+# CONFIG_SERIAL_TEXT_DEBUG is not set
+# CONFIG_PPC_EARLY_DEBUG 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=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+# 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 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=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+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
+#
diff --git a/packages/linux/linux-linkstationppc_2.6.21-rc5.bb b/packages/linux/linux-linkstationppc_2.6.21-rc5.bb
new file mode 100644
index 0000000000..7a6efb0059
--- /dev/null
+++ b/packages/linux/linux-linkstationppc_2.6.21-rc5.bb
@@ -0,0 +1,42 @@
+DESCRIPTION = "Linux Kernel for the Buffalo Linkstation HG 2.6.21-rc5"
+SECTION = "kernel"
+LICENSE = "GPL"
+PR = "r0"
+
+DEPENDS = "dtc-native"
+COMPATIBLE_MACHINE = "(lsppchd|lsppchg)"
+
+SRC_URI = "http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2 \
+ http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.21-rc5.bz2;patch=1 \
+ file://defconfig \
+ "
+
+S = "${WORKDIR}/linux-2.6.20"
+
+inherit kernel
+
+export ARCH="powerpc"
+
+KERNEL_IMAGETYPE = "uImage"
+
+FILES_kernel-image += "/boot/kuroboxHG.dtb \
+ /boot/kuroboxHD.dtb"
+
+do_configure() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+ ARCH=${ARCH} oe_runmake oldconfig
+}
+
+do_install_append() {
+ dtc -f -I dts -O dtb -o ${D}/boot/kuroboxHG.dtb -V 16 arch/${ARCH}/boot/dts/kuroboxHG.dts
+ dtc -f -I dts -O dtb -o ${D}/boot/kuroboxHD.dtb -V 16 arch/${ARCH}/boot/dts/kuroboxHD.dts
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/vmlinux.UBoot
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
diff --git a/packages/linux/linux-magicbox-2.6.18.6/.mtn2git_empty b/packages/linux/linux-magicbox-2.6.18.6/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.18.6/.mtn2git_empty
diff --git a/packages/linux/linux-magicbox-2.6.18.6/000-fix-makefile.patch b/packages/linux/linux-magicbox-2.6.18.6/000-fix-makefile.patch
new file mode 100644
index 0000000000..ce52a02b2f
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.18.6/000-fix-makefile.patch
@@ -0,0 +1,12 @@
+diff -ru linux-2.6.18/Makefile linux-2.6.18-magicbox/Makefile
+--- linux-2.6.18/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-magicbox/Makefile 2006-09-22 20:16:55.000000000 +0200
+@@ -1,7 +1,7 @@
+ VERSION = 2
+ PATCHLEVEL = 6
+ SUBLEVEL = 18
+-EXTRAVERSION = .6
++EXTRAVERSION = -magicbox2
+ NAME=Avast! A bilge rat!
+
+ # *DOCUMENTATION*
diff --git a/packages/linux/linux-magicbox-2.6.18.6/001-magicbox-board-2.6.18.patch b/packages/linux/linux-magicbox-2.6.18.6/001-magicbox-board-2.6.18.patch
new file mode 100644
index 0000000000..bd3214dacd
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.18.6/001-magicbox-board-2.6.18.patch
@@ -0,0 +1,381 @@
+diff -Nru linux-2.6.18/arch/ppc/platforms/4xx/Kconfig linux-2.6.18-magicbox/arch/ppc/platforms/4xx/Kconfig
+--- linux-2.6.18/arch/ppc/platforms/4xx/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-magicbox/arch/ppc/platforms/4xx/Kconfig 2006-09-22 03:38:30.000000000 +0200
+@@ -14,7 +14,7 @@
+ choice
+ prompt "Machine Type"
+ depends on 40x
+- default WALNUT
++ default MAGICBOX
+
+ config BUBINGA
+ bool "Bubinga"
+@@ -52,6 +52,12 @@
+ help
+ This option enables support for the IBM PPC405GP evaluation board.
+
++config MAGICBOX
++ bool "MagicBox"
++ select WANT_EARLY_SERIAL
++ help
++ This option enables support for the IBM PPC405EP evaluation board.
++
+ config XILINX_ML300
+ bool "Xilinx-ML300"
+ help
+@@ -173,7 +179,7 @@
+
+ config IBM_OCP
+ bool
+- depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT
++ depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT || MAGICBOX
+ default y
+
+ config IBM_EMAC4
+@@ -183,7 +189,7 @@
+
+ config BIOS_FIXUP
+ bool
+- depends on BUBINGA || EP405 || SYCAMORE || WALNUT || CPCI405
++ depends on BUBINGA || EP405 || SYCAMORE || WALNUT || CPCI405 || MAGICBOX
+ default y
+
+ # OAK doesn't exist but wanted to keep this around for any future 403GCX boards
+@@ -194,7 +200,7 @@
+
+ config 405EP
+ bool
+- depends on BUBINGA
++ depends on BUBINGA || MAGICBOX
+ default y
+
+ config 405GP
+diff -Nru linux-2.6.18/arch/ppc/platforms/4xx/Makefile linux-2.6.18-magicbox/arch/ppc/platforms/4xx/Makefile
+--- linux-2.6.18/arch/ppc/platforms/4xx/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-magicbox/arch/ppc/platforms/4xx/Makefile 2006-09-22 03:37:18.000000000 +0200
+@@ -13,6 +13,7 @@
+ obj-$(CONFIG_REDWOOD_6) += redwood6.o
+ obj-$(CONFIG_SYCAMORE) += sycamore.o
+ obj-$(CONFIG_WALNUT) += walnut.o
++obj-$(CONFIG_MAGICBOX) += magicbox.o
+ obj-$(CONFIG_XILINX_ML300) += xilinx_ml300.o
+ obj-$(CONFIG_XILINX_ML403) += xilinx_ml403.o
+
+diff -Nru linux-2.6.18/arch/ppc/platforms/4xx/magicbox.c linux-2.6.18-magicbox/arch/ppc/platforms/4xx/magicbox.c
+--- linux-2.6.18/arch/ppc/platforms/4xx/magicbox.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-magicbox/arch/ppc/platforms/4xx/magicbox.c 2006-09-22 03:37:18.000000000 +0200
+@@ -0,0 +1,249 @@
++/*
++ * Support for IBM PPC 405EP-based MagicBox board
++ * Copyright (C) 2006 Karol Lewandowski
++ *
++ * Heavily based on bubinga.c
++ *
++ * Author: SAW (IBM), derived from walnut.c.
++ * Maintained by MontaVista Software <source@mvista.com>
++ *
++ * 2003 (c) MontaVista Softare Inc. This file is licensed under the
++ * terms of the GNU General Public License version 2. This program is
++ * licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++
++#include <linux/config.h>
++#include <linux/init.h>
++#include <linux/smp.h>
++#include <linux/threads.h>
++#include <linux/param.h>
++#include <linux/string.h>
++#include <linux/blkdev.h>
++#include <linux/pci.h>
++#include <linux/tty.h>
++#include <linux/serial.h>
++#include <linux/serial_core.h>
++
++#include <asm/system.h>
++#include <asm/pci-bridge.h>
++#include <asm/processor.h>
++#include <asm/machdep.h>
++#include <asm/page.h>
++#include <asm/time.h>
++#include <asm/io.h>
++#include <asm/kgdb.h>
++#include <asm/ocp.h>
++#include <asm/ibm_ocp_pci.h>
++
++#include <platforms/4xx/ibm405ep.h>
++
++#undef DEBUG
++
++#ifdef DEBUG
++#define DBG(x...) printk(x)
++#else
++#define DBG(x...)
++#endif
++
++extern bd_t __res;
++
++/* Some IRQs unique to board
++ * Used by the generic 405 PCI setup functions in ppc4xx_pci.c
++ */
++int __init
++ppc405_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
++{
++ static char pci_irq_table[][4] =
++ /*
++ * PCI IDSEL/INTPIN->INTLINE
++ * A B C D
++ */
++ {
++ {28, 28, 28, 28}, /* IDSEL 1 - PCI slot 1 */
++ {29, 29, 29, 29}, /* IDSEL 2 - PCI slot 2 */
++ {30, 30, 30, 30}, /* IDSEL 3 - PCI slot 3 */
++ {31, 31, 31, 31}, /* IDSEL 4 - PCI slot 4 */
++ };
++
++ const long min_idsel = 1, max_idsel = 4, irqs_per_slot = 4;
++ return PCI_IRQ_TABLE_LOOKUP;
++};
++
++
++/* The serial clock for the chip is an internal clock determined by
++ * different clock speeds/dividers.
++ * Calculate the proper input baud rate and setup the serial driver.
++ */
++static void __init
++magicbox_early_serial_map(void)
++{
++ u32 uart_div;
++ int uart_clock;
++ struct uart_port port;
++
++ /* Calculate the serial clock input frequency
++ *
++ * The base baud is the PLL OUTA (provided in the board info
++ * structure) divided by the external UART Divisor, divided
++ * by 16.
++ */
++ uart_div = (mfdcr(DCRN_CPC0_UCR_BASE) & DCRN_CPC0_UCR_U0DIV);
++ uart_clock = __res.bi_procfreq / uart_div;
++
++ /* Setup serial port access */
++ memset(&port, 0, sizeof(port));
++ port.membase = (void*)ACTING_UART0_IO_BASE;
++ port.irq = ACTING_UART0_INT;
++ port.uartclk = uart_clock;
++ port.regshift = 0;
++ port.iotype = UPIO_MEM;
++ port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST;
++ port.line = 0;
++
++ if (early_serial_setup(&port) != 0) {
++ printk("Early serial init of port 0 failed\n");
++ }
++
++ port.membase = (void*)ACTING_UART1_IO_BASE;
++ port.irq = ACTING_UART1_INT;
++ port.line = 1;
++
++ if (early_serial_setup(&port) != 0) {
++ printk("Early serial init of port 1 failed\n");
++ }
++}
++
++void __init
++bios_fixup(struct pci_controller *hose, struct pcil0_regs *pcip)
++{
++ unsigned int bar_response, bar;
++ /*
++ * Expected PCI mapping:
++ *
++ * PLB addr PCI memory addr
++ * --------------------- ---------------------
++ * 0000'0000 - 7fff'ffff <--- 0000'0000 - 7fff'ffff
++ * 8000'0000 - Bfff'ffff ---> 8000'0000 - Bfff'ffff
++ *
++ * PLB addr PCI io addr
++ * --------------------- ---------------------
++ * e800'0000 - e800'ffff ---> 0000'0000 - 0001'0000
++ *
++ * The following code is simplified by assuming that the bootrom
++ * has been well behaved in following this mapping.
++ */
++
++#ifdef DEBUG
++ int i;
++
++ printk("ioremap PCLIO_BASE = 0x%x\n", pcip);
++ printk("PCI bridge regs before fixup \n");
++ for (i = 0; i <= 3; i++) {
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].ma)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].la)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].pcila)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].pciha)));
++ }
++ printk(" ptm1ms\t0x%x\n", in_le32(&(pcip->ptm1ms)));
++ printk(" ptm1la\t0x%x\n", in_le32(&(pcip->ptm1la)));
++ printk(" ptm2ms\t0x%x\n", in_le32(&(pcip->ptm2ms)));
++ printk(" ptm2la\t0x%x\n", in_le32(&(pcip->ptm2la)));
++
++#endif
++
++ /* added for IBM boot rom version 1.15 bios bar changes -AK */
++
++ /* Disable region first */
++ out_le32((void *) &(pcip->pmm[0].ma), 0x00000000);
++ /* PLB starting addr, PCI: 0x80000000 */
++ out_le32((void *) &(pcip->pmm[0].la), 0x80000000);
++ /* PCI start addr, 0x80000000 */
++ out_le32((void *) &(pcip->pmm[0].pcila), PPC405_PCI_MEM_BASE);
++ /* 512MB range of PLB to PCI */
++ out_le32((void *) &(pcip->pmm[0].pciha), 0x00000000);
++ /* Enable no pre-fetch, enable region */
++ out_le32((void *) &(pcip->pmm[0].ma), ((0xffffffff -
++ (PPC405_PCI_UPPER_MEM -
++ PPC405_PCI_MEM_BASE)) | 0x01));
++
++ /* Disable region one */
++ out_le32((void *) &(pcip->pmm[1].ma), 0x00000000);
++ out_le32((void *) &(pcip->pmm[1].la), 0x00000000);
++ out_le32((void *) &(pcip->pmm[1].pcila), 0x00000000);
++ out_le32((void *) &(pcip->pmm[1].pciha), 0x00000000);
++ out_le32((void *) &(pcip->pmm[1].ma), 0x00000000);
++ out_le32((void *) &(pcip->ptm1ms), 0x00000001);
++
++ /* Disable region two */
++ out_le32((void *) &(pcip->pmm[2].ma), 0x00000000);
++ out_le32((void *) &(pcip->pmm[2].la), 0x00000000);
++ out_le32((void *) &(pcip->pmm[2].pcila), 0x00000000);
++ out_le32((void *) &(pcip->pmm[2].pciha), 0x00000000);
++ out_le32((void *) &(pcip->pmm[2].ma), 0x00000000);
++ out_le32((void *) &(pcip->ptm2ms), 0x00000000);
++ out_le32((void *) &(pcip->ptm2la), 0x00000000);
++
++ /* Zero config bars */
++ for (bar = PCI_BASE_ADDRESS_1; bar <= PCI_BASE_ADDRESS_2; bar += 4) {
++ early_write_config_dword(hose, hose->first_busno,
++ PCI_FUNC(hose->first_busno), bar,
++ 0x00000000);
++ early_read_config_dword(hose, hose->first_busno,
++ PCI_FUNC(hose->first_busno), bar,
++ &bar_response);
++ DBG("BUS %d, device %d, Function %d bar 0x%8.8x is 0x%8.8x\n",
++ hose->first_busno, PCI_SLOT(hose->first_busno),
++ PCI_FUNC(hose->first_busno), bar, bar_response);
++ }
++ /* end work arround */
++
++#ifdef DEBUG
++ printk("PCI bridge regs after fixup \n");
++ for (i = 0; i <= 3; i++) {
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].ma)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].la)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].pcila)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].pciha)));
++ }
++ printk(" ptm1ms\t0x%x\n", in_le32(&(pcip->ptm1ms)));
++ printk(" ptm1la\t0x%x\n", in_le32(&(pcip->ptm1la)));
++ printk(" ptm2ms\t0x%x\n", in_le32(&(pcip->ptm2ms)));
++ printk(" ptm2la\t0x%x\n", in_le32(&(pcip->ptm2la)));
++
++#endif /* DEBUG */
++}
++
++void __init
++magicbox_setup_arch(void)
++{
++ ppc4xx_setup_arch();
++
++ ibm_ocp_set_emac(0, 1);
++
++ magicbox_early_serial_map();
++
++ /* Identify the system */
++ printk("MagicBox port (C) 2005 Karol Lewandowski <kl@jasmine.eu.org>\n");
++}
++
++void __init
++magicbox_map_io(void)
++{
++ ppc4xx_map_io();
++}
++
++void __init
++platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
++ unsigned long r6, unsigned long r7)
++{
++ ppc4xx_init(r3, r4, r5, r6, r7);
++
++ ppc_md.setup_arch = magicbox_setup_arch;
++ ppc_md.setup_io_mappings = magicbox_map_io;
++
++#ifdef CONFIG_KGDB
++ ppc_md.early_serial_map = magicbox_early_serial_map;
++#endif
++
++}
+diff -Nru linux-2.6.18/arch/ppc/platforms/4xx/magicbox.h linux-2.6.18-magicbox/arch/ppc/platforms/4xx/magicbox.h
+--- linux-2.6.18/arch/ppc/platforms/4xx/magicbox.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-magicbox/arch/ppc/platforms/4xx/magicbox.h 2006-09-22 03:37:18.000000000 +0200
+@@ -0,0 +1,47 @@
++/*
++ * Support for IBM PPC 405EP-based MagicBox board
++ *
++ * Heavily based on bubinga.h
++ *
++ *
++ * Author: SAW (IBM), derived from walnut.h.
++ * Maintained by MontaVista Software <source@mvista.com>
++ *
++ * 2003 (c) MontaVista Softare Inc. This file is licensed under the
++ * terms of the GNU General Public License version 2. This program is
++ * licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++
++#ifdef __KERNEL__
++#ifndef __MAGICBOX_H__
++#define __MAGICBOX_H__
++
++#include <linux/config.h>
++#include <platforms/4xx/ibm405ep.h>
++#include <asm/ppcboot.h>
++
++/* Memory map for the "MagicBox" 405EP evaluation board -- generic 4xx. */
++
++/* The UART clock is based off an internal clock -
++ * define BASE_BAUD based on the internal clock and divider(s).
++ * Since BASE_BAUD must be a constant, we will initialize it
++ * using clock/divider values which OpenBIOS initializes
++ * for typical configurations at various CPU speeds.
++ * The base baud is calculated as (FWDA / EXT UART DIV / 16)
++ */
++#define BASE_BAUD 0
++
++/* Flash */
++#define PPC40x_FPGA_BASE 0xF0300000
++#define PPC40x_FPGA_REG_OFFS 1 /* offset to flash map reg */
++#define PPC40x_FLASH_ONBD_N(x) (x & 0x02)
++#define PPC40x_FLASH_SRAM_SEL(x) (x & 0x01)
++#define PPC40x_FLASH_LOW 0xFFF00000
++#define PPC40x_FLASH_HIGH 0xFFF80000
++#define PPC40x_FLASH_SIZE 0x80000
++
++#define PPC4xx_MACHINE_NAME "MagicBox"
++
++#endif /* __MAGICBOX_H__ */
++#endif /* __KERNEL__ */
+diff -Nru linux-2.6.18/include/asm-ppc/ibm4xx.h linux-2.6.18-magicbox/include/asm-ppc/ibm4xx.h
+--- linux-2.6.18/include/asm-ppc/ibm4xx.h 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-magicbox/include/asm-ppc/ibm4xx.h 2006-09-22 03:37:18.000000000 +0200
+@@ -18,6 +18,10 @@
+
+ #ifdef CONFIG_40x
+
++#if defined(CONFIG_MAGICBOX)
++#include <platforms/4xx/magicbox.h>
++#endif
++
+ #if defined(CONFIG_BUBINGA)
+ #include <platforms/4xx/bubinga.h>
+ #endif
diff --git a/packages/linux/linux-magicbox-2.6.18.6/002-magicbox-mtd-map-2.6.18.patch b/packages/linux/linux-magicbox-2.6.18.6/002-magicbox-mtd-map-2.6.18.patch
new file mode 100644
index 0000000000..f549f34420
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.18.6/002-magicbox-mtd-map-2.6.18.patch
@@ -0,0 +1,136 @@
+diff -Nru linux-2.6.18/drivers/mtd/maps/Kconfig linux-2.6.18-magicmap/drivers/mtd/maps/Kconfig
+--- linux-2.6.18/drivers/mtd/maps/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-magicmap/drivers/mtd/maps/Kconfig 2006-09-22 03:36:25.000000000 +0200
+@@ -323,6 +323,15 @@
+ Walnut board. If you have one of these boards and would like to
+ use the flash chips on it, say 'Y'.
+
++config MTD_MAGICMAP
++ tristate "Flash device mapped on IBM 405EP MagicBox"
++ depends on MTD_CFI && MTD_PARTITIONS && 40x && MAGICBOX
++ help
++ This enables access routines for the flash chips on the IBM 405EP
++ MagicBox board. If you have one of these boards and would like to
++ use the flash chips on it, say 'Y'.
++
++
+ config MTD_EBONY
+ tristate "Flash devices mapped on IBM 440GP Ebony"
+ depends on MTD_JEDECPROBE && EBONY
+diff -Nru linux-2.6.18/drivers/mtd/maps/Makefile linux-2.6.18-magicmap/drivers/mtd/maps/Makefile
+--- linux-2.6.18/drivers/mtd/maps/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-magicmap/drivers/mtd/maps/Makefile 2006-09-22 03:36:25.000000000 +0200
+@@ -58,6 +58,7 @@
+ obj-$(CONFIG_MTD_BEECH) += beech-mtd.o
+ obj-$(CONFIG_MTD_ARCTIC) += arctic-mtd.o
+ obj-$(CONFIG_MTD_WALNUT) += walnut.o
++obj-$(CONFIG_MTD_MAGICMAP) += magicmap.o
+ obj-$(CONFIG_MTD_H720X) += h720x-flash.o
+ obj-$(CONFIG_MTD_SBC8240) += sbc8240.o
+ obj-$(CONFIG_MTD_NOR_TOTO) += omap-toto-flash.o
+diff -Nru linux-2.6.18/drivers/mtd/maps/magicmap.c linux-2.6.18-magicmap/drivers/mtd/maps/magicmap.c
+--- linux-2.6.18/drivers/mtd/maps/magicmap.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-magicmap/drivers/mtd/maps/magicmap.c 2006-09-22 03:36:25.000000000 +0200
+@@ -0,0 +1,102 @@
++/*
++ * magicmap.c: Copyleft 2005 Karol Lewandowski
++ *
++ * Mapping for MagicBox flash.
++ * Based on walnut.c.
++ *
++ * Heikki Lindholm <holindho@infradead.org>
++ *
++ *
++ * 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 <linux/module.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/map.h>
++#include <linux/mtd/partitions.h>
++#include <linux/config.h>
++#include <asm/io.h>
++
++static struct mtd_info *flash;
++
++static struct map_info magic_map = {
++ .name = "Magically mapped flash",
++ .phys = 0xffc00000,
++ .size = 0x400000,
++ .bankwidth = 2,
++};
++
++static struct mtd_partition magic_partitions[] = {
++ {
++ .name = "kernel",
++ .offset = 0x0,
++ .size = 0x0e0000,
++ },
++ {
++ .name = "ramdisk",
++ .offset = 0x0e0000,
++ .size = 0x2c0000,
++ },
++ {
++ .name = "persistent",
++ .offset = 0x3a0000,
++ .size = 0x020000,
++ },
++ {
++ .name = "bootloader",
++ .offset = 0x3c0000,
++ .size = 0x040000,
++ .mask_flags = MTD_WRITEABLE,
++ },
++};
++
++int __init init_magic(void)
++{
++ magic_map.virt =
++ (void __iomem *)ioremap(magic_map.phys, magic_map.size);
++
++ if (!magic_map.virt) {
++ printk("Failed to ioremap flash.\n");
++ return -EIO;
++ }
++
++ simple_map_init(&magic_map);
++
++ flash = do_map_probe("cfi_probe", &magic_map);
++ if (flash) {
++ flash->owner = THIS_MODULE;
++ add_mtd_partitions(flash, magic_partitions,
++ ARRAY_SIZE(magic_partitions));
++ } else {
++ printk("map probe failed for flash\n");
++ return -ENXIO;
++ }
++
++ return 0;
++}
++
++static void __exit cleanup_magic(void)
++{
++ if (flash) {
++ del_mtd_partitions(flash);
++ map_destroy(flash);
++ }
++
++ if (magic_map.virt) {
++ iounmap((void *)magic_map.virt);
++ magic_map.virt = NULL;
++ }
++}
++
++module_init(init_magic);
++module_exit(cleanup_magic);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Karol Lewandowski");
++MODULE_DESCRIPTION("MTD map and partitions for IBM 405EP MagicBox boards");
diff --git a/packages/linux/linux-magicbox-2.6.18.6/010-load-ramdisk-even-if-rootdev-equals-ramdisk.patch b/packages/linux/linux-magicbox-2.6.18.6/010-load-ramdisk-even-if-rootdev-equals-ramdisk.patch
new file mode 100644
index 0000000000..d980be9d6c
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.18.6/010-load-ramdisk-even-if-rootdev-equals-ramdisk.patch
@@ -0,0 +1,16 @@
+--- linux-2.6.15-magicbox3/init/do_mounts_initrd.c~ 2005-08-31 00:26:43.000000000 +0200
++++ linux-2.6.15-magicbox3/init/do_mounts_initrd.c 2006-05-14 14:00:35.000000000 +0200
+@@ -112,8 +112,12 @@
+ * unless /dev/ram0 is supposed to be our actual root device,
+ * in that case the ram disk is just set up here, and gets
+ * mounted in the normal path.
++ *
++ * Not true for magicbox: someone put root=/dev/ram into
++ * bootloader defaults and prepared hundreds of boards...
++ * Fix issue there.
+ */
+- if (rd_load_image("/initrd.image") && ROOT_DEV != Root_RAM0) {
++ if (rd_load_image("/initrd.image")) {
+ sys_unlink("/initrd.image");
+ handle_initrd();
+ return 1;
diff --git a/packages/linux/linux-magicbox-2.6.18.6/config-2.6.18-magicbox2 b/packages/linux/linux-magicbox-2.6.18.6/config-2.6.18-magicbox2
new file mode 100644
index 0000000000..c181d182cf
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.18.6/config-2.6.18-magicbox2
@@ -0,0 +1,1204 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.18-magicbox2
+# Thu Dec 28 19:45:11 2006
+#
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_PPC=y
+CONFIG_PPC32=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# 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 is not set
+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 is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL=y
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+# CONFIG_FUTEX is not set
+# CONFIG_EPOLL is not set
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=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 is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+# 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 is not set
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+
+#
+# Processor
+#
+# CONFIG_6xx is not set
+CONFIG_40x=y
+# CONFIG_44x is not set
+# CONFIG_8xx is not set
+# CONFIG_E200 is not set
+# CONFIG_E500 is not set
+# CONFIG_MATH_EMULATION is not set
+# CONFIG_KEXEC is not set
+# CONFIG_CPU_FREQ is not set
+CONFIG_4xx=y
+CONFIG_WANT_EARLY_SERIAL=y
+
+#
+# IBM 4xx options
+#
+# CONFIG_BUBINGA is not set
+# CONFIG_CPCI405 is not set
+# CONFIG_EP405 is not set
+# CONFIG_REDWOOD_5 is not set
+# CONFIG_REDWOOD_6 is not set
+# CONFIG_SYCAMORE is not set
+# CONFIG_WALNUT is not set
+CONFIG_MAGICBOX=y
+# CONFIG_XILINX_ML300 is not set
+# CONFIG_XILINX_ML403 is not set
+CONFIG_IBM_OCP=y
+CONFIG_BIOS_FIXUP=y
+CONFIG_405EP=y
+CONFIG_PPC4xx_DMA=y
+CONFIG_PPC4xx_EDMA=y
+CONFIG_PPC_GEN550=y
+CONFIG_UART0_TTYS0=y
+# CONFIG_UART0_TTYS1 is not set
+CONFIG_NOT_COHERENT_CACHE=y
+
+#
+# Platform options
+#
+# CONFIG_PC_KEYBOARD is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_HZ_100=y
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=100
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT 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=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_CMDLINE_BOOL is not set
+# CONFIG_PM is not set
+# CONFIG_SECCOMP is not set
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+# CONFIG_PPC_I8259 is not set
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Advanced setup
+#
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Default settings for advanced configuration options are used
+#
+CONFIG_HIGHMEM_START=0xfe000000
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_TASK_SIZE=0x80000000
+CONFIG_CONSISTENT_START=0xff100000
+CONFIG_CONSISTENT_SIZE=0x00200000
+CONFIG_BOOT_LOAD=0x00400000
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+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_FWMARK=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
+CONFIG_IP_ROUTE_VERBOSE=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+CONFIG_NET_IPGRE=y
+CONFIG_NET_IPGRE_BROADCAST=y
+# 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS 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=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+CONFIG_NETFILTER_XTABLES=y
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_MARK=y
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=y
+# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+CONFIG_NETFILTER_XT_MATCH_ESP=y
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=y
+CONFIG_NETFILTER_XT_MATCH_LIMIT=y
+CONFIG_NETFILTER_XT_MATCH_MAC=y
+CONFIG_NETFILTER_XT_MATCH_MARK=y
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=y
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
+CONFIG_NETFILTER_XT_MATCH_QUOTA=y
+CONFIG_NETFILTER_XT_MATCH_REALM=y
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+CONFIG_NETFILTER_XT_MATCH_STRING=y
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=y
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+CONFIG_IP_NF_CT_ACCT=y
+CONFIG_IP_NF_CONNTRACK_MARK=y
+# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
+# CONFIG_IP_NF_CT_PROTO_SCTP is not set
+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 is not set
+CONFIG_IP_NF_PPTP=m
+# CONFIG_IP_NF_H323 is not set
+# CONFIG_IP_NF_SIP is not set
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=y
+CONFIG_IP_NF_MATCH_IPRANGE=y
+CONFIG_IP_NF_MATCH_LAYER7=m
+# CONFIG_IP_NF_MATCH_LAYER7_DEBUG is not set
+CONFIG_IP_NF_MATCH_TOS=y
+# CONFIG_IP_NF_MATCH_RECENT is not set
+CONFIG_IP_NF_MATCH_ECN=y
+CONFIG_IP_NF_MATCH_DSCP=y
+CONFIG_IP_NF_MATCH_AH=y
+CONFIG_IP_NF_MATCH_TTL=y
+# CONFIG_IP_NF_MATCH_OWNER is not set
+CONFIG_IP_NF_MATCH_ADDRTYPE=y
+CONFIG_IP_NF_MATCH_HASHLIMIT=y
+CONFIG_IP_NF_FILTER=y
+CONFIG_IP_NF_TARGET_REJECT=y
+CONFIG_IP_NF_TARGET_LOG=y
+CONFIG_IP_NF_TARGET_ULOG=y
+CONFIG_IP_NF_TARGET_TCPMSS=y
+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 is not set
+CONFIG_IP_NF_NAT_IRC=m
+CONFIG_IP_NF_NAT_FTP=m
+CONFIG_IP_NF_NAT_TFTP=m
+CONFIG_IP_NF_NAT_PPTP=m
+CONFIG_IP_NF_MANGLE=y
+CONFIG_IP_NF_TARGET_TOS=y
+CONFIG_IP_NF_TARGET_ECN=y
+# CONFIG_IP_NF_TARGET_DSCP is not set
+CONFIG_IP_NF_TARGET_TTL=y
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=y
+CONFIG_IP_NF_ARPTABLES=y
+CONFIG_IP_NF_ARPFILTER=y
+CONFIG_IP_NF_ARP_MANGLE=y
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=y
+CONFIG_BRIDGE_EBT_BROUTE=y
+CONFIG_BRIDGE_EBT_T_FILTER=y
+CONFIG_BRIDGE_EBT_T_NAT=y
+CONFIG_BRIDGE_EBT_802_3=y
+CONFIG_BRIDGE_EBT_AMONG=y
+CONFIG_BRIDGE_EBT_ARP=y
+CONFIG_BRIDGE_EBT_IP=y
+CONFIG_BRIDGE_EBT_LIMIT=y
+CONFIG_BRIDGE_EBT_MARK=y
+CONFIG_BRIDGE_EBT_PKTTYPE=y
+CONFIG_BRIDGE_EBT_STP=y
+CONFIG_BRIDGE_EBT_VLAN=y
+CONFIG_BRIDGE_EBT_ARPREPLY=y
+CONFIG_BRIDGE_EBT_DNAT=y
+CONFIG_BRIDGE_EBT_MARK_T=y
+CONFIG_BRIDGE_EBT_REDIRECT=y
+CONFIG_BRIDGE_EBT_SNAT=y
+CONFIG_BRIDGE_EBT_LOG=y
+CONFIG_BRIDGE_EBT_ULOG=y
+
+#
+# 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=y
+CONFIG_VLAN_8021Q=y
+# CONFIG_DECNET is not set
+CONFIG_LLC=y
+# 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=y
+CONFIG_NET_SCH_CLK_JIFFIES=y
+# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# Queueing/Scheduling
+#
+# CONFIG_NET_SCH_CBQ is not set
+CONFIG_NET_SCH_HTB=y
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=y
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=y
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=y
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+# CONFIG_NET_SCH_NETEM is not set
+CONFIG_NET_SCH_INGRESS=y
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=y
+CONFIG_NET_CLS_TCINDEX=y
+CONFIG_NET_CLS_ROUTE4=y
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=y
+CONFIG_NET_CLS_U32=y
+# CONFIG_CLS_U32_PERF is not set
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+# CONFIG_NET_CLS_RSVP6 is not set
+# CONFIG_NET_EMATCH is not set
+# CONFIG_NET_CLS_ACT is not set
+# CONFIG_NET_CLS_POLICE is not set
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_ESTIMATOR=y
+
+#
+# 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=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 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# 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 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
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_MAGICMAP=y
+# 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_DEV_FD 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=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# 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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# 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
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_BLK_DEV_IDEPCI is not set
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_MAGICBOX_IDE=y
+CONFIG_BLK_DEV_MAGICBOX_PROTOTYPE=y
+# 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 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Macintosh device drivers
+#
+# CONFIG_WINDFARM is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+CONFIG_IBM_EMAC=y
+CONFIG_IBM_EMAC_RXB=64
+CONFIG_IBM_EMAC_TXB=8
+CONFIG_IBM_EMAC_POLL_WEIGHT=32
+CONFIG_IBM_EMAC_RX_COPY_THRESHOLD=256
+CONFIG_IBM_EMAC_RX_SKB_HEADROOM=0
+# CONFIG_IBM_EMAC_PHY_RX_CLK_FIX is not set
+# CONFIG_IBM_EMAC_DEBUG 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_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_AIRO is not set
+CONFIG_HERMES=m
+# CONFIG_PLX_HERMES is not set
+# CONFIG_TMD_HERMES is not set
+# CONFIG_NORTEL_HERMES is not set
+CONFIG_PCI_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+# CONFIG_PRISM54 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+# CONFIG_HOSTAP_PLX is not set
+CONFIG_HOSTAP_PCI=m
+CONFIG_NET_WIRELESS=y
+
+#
+# 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_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 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 is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+# CONFIG_SERIAL_8250_PCI 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_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=y
+# CONFIG_BOOKE_WDT is not set
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_GEN_RTC 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_AGP is not set
+# 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=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_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_IBM_IIC=y
+# CONFIG_I2C_MPC 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_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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_M41T00 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=y
+# CONFIG_HWMON_VID is not set
+# 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=y
+# 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 is not set
+# 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_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB 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 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 is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_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_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=y
+# CONFIG_INOTIFY is not set
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+# CONFIG_PROC_KCORE is not set
+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 is not set
+# CONFIG_CRAMFS is not set
+CONFIG_SQUASHFS=y
+# 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 is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# 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
+# 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 is not set
+
+#
+# IBM 40x options
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=y
+CONFIG_TEXTSEARCH_BM=y
+CONFIG_TEXTSEARCH_FSM=y
+# 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_FS is not set
+# CONFIG_SERIAL_TEXT_DEBUG is not set
+CONFIG_PPC_OCP=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# 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_DES is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=y
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_DEFLATE is not set
+CONFIG_CRYPTO_MICHAEL_MIC=y
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
diff --git a/packages/linux/linux-magicbox-2.6.18.6/kernel-2.6.18-layer7-2.6.patch b/packages/linux/linux-magicbox-2.6.18.6/kernel-2.6.18-layer7-2.6.patch
new file mode 100644
index 0000000000..63e36d7a5c
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.18.6/kernel-2.6.18-layer7-2.6.patch
@@ -0,0 +1,2051 @@
+--- linux-2.6.18/include/linux/netfilter_ipv4/ip_conntrack.h 2006-09-19 22:42:06.000000000 -0500
++++ linux-2.6.18-layer7/include/linux/netfilter_ipv4/ip_conntrack.h 2006-09-24 10:17:45.000000000 -0500
+@@ -127,6 +127,15 @@ struct ip_conntrack
+ /* Traversed often, so hopefully in different cacheline to top */
+ /* These are my tuples; original and reply */
+ struct ip_conntrack_tuple_hash tuplehash[IP_CT_DIR_MAX];
++
++#if defined(CONFIG_IP_NF_MATCH_LAYER7) || defined(CONFIG_IP_NF_MATCH_LAYER7_MODULE)
++ struct {
++ char * app_proto; /* e.g. "http". NULL before decision. "unknown" after decision if no match */
++ char * app_data; /* application layer data so far. NULL after match decision */
++ unsigned int app_data_len;
++ } layer7;
++#endif
++
+ };
+
+ struct ip_conntrack_expect
+--- linux-2.6.18/include/linux/netfilter_ipv4/ipt_layer7.h 1969-12-31 18:00:00.000000000 -0600
++++ linux-2.6.18-layer7/include/linux/netfilter_ipv4/ipt_layer7.h 2006-09-24 10:17:45.000000000 -0500
+@@ -0,0 +1,26 @@
++/*
++ By Matthew Strait <quadong@users.sf.net>, Dec 2003.
++ http://l7-filter.sf.net
++
++ 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.
++ http://www.gnu.org/licenses/gpl.txt
++*/
++
++#ifndef _IPT_LAYER7_H
++#define _IPT_LAYER7_H
++
++#define MAX_PATTERN_LEN 8192
++#define MAX_PROTOCOL_LEN 256
++
++typedef char *(*proc_ipt_search) (char *, char, char *);
++
++struct ipt_layer7_info {
++ char protocol[MAX_PROTOCOL_LEN];
++ char invert:1;
++ char pattern[MAX_PATTERN_LEN];
++};
++
++#endif /* _IPT_LAYER7_H */
+--- linux-2.6.18/net/ipv4/netfilter/Kconfig 2006-09-19 22:42:06.000000000 -0500
++++ linux-2.6.18-layer7/net/ipv4/netfilter/Kconfig 2006-09-24 10:17:45.000000000 -0500
+@@ -248,6 +248,24 @@ config IP_NF_MATCH_IPRANGE
+
+ To compile it as a module, choose M here. If unsure, say N.
+
++config IP_NF_MATCH_LAYER7
++ tristate "Layer 7 match support (EXPERIMENTAL)"
++ depends on IP_NF_IPTABLES && IP_NF_CT_ACCT && IP_NF_CONNTRACK && EXPERIMENTAL
++ help
++ Say Y if you want to be able to classify connections (and their
++ packets) based on regular expression matching of their application
++ layer data. This is one way to classify applications such as
++ peer-to-peer filesharing systems that do not always use the same
++ port.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
++config IP_NF_MATCH_LAYER7_DEBUG
++ bool "Layer 7 debugging output"
++ depends on IP_NF_MATCH_LAYER7
++ help
++ Say Y to get lots of debugging output.
++
+ config IP_NF_MATCH_TOS
+ tristate "TOS match support"
+ depends on IP_NF_IPTABLES
+--- linux-2.6.18/net/ipv4/netfilter/Makefile 2006-09-19 22:42:06.000000000 -0500
++++ linux-2.6.18-layer7/net/ipv4/netfilter/Makefile 2006-09-24 10:17:45.000000000 -0500
+@@ -64,6 +64,8 @@ obj-$(CONFIG_IP_NF_MATCH_AH) += ipt_ah.o
+ obj-$(CONFIG_IP_NF_MATCH_TTL) += ipt_ttl.o
+ obj-$(CONFIG_IP_NF_MATCH_ADDRTYPE) += ipt_addrtype.o
+
++obj-$(CONFIG_IP_NF_MATCH_LAYER7) += ipt_layer7.o
++
+ # targets
+ obj-$(CONFIG_IP_NF_TARGET_REJECT) += ipt_REJECT.o
+ obj-$(CONFIG_IP_NF_TARGET_TOS) += ipt_TOS.o
+--- linux-2.6.18/net/ipv4/netfilter/ip_conntrack_core.c 2006-09-19 22:42:06.000000000 -0500
++++ linux-2.6.18-layer7/net/ipv4/netfilter/ip_conntrack_core.c 2006-09-24 10:17:45.000000000 -0500
+@@ -338,6 +338,13 @@ destroy_conntrack(struct nf_conntrack *n
+ * too. */
+ ip_ct_remove_expectations(ct);
+
++ #if defined(CONFIG_IP_NF_MATCH_LAYER7) || defined(CONFIG_IP_NF_MATCH_LAYER7_MODULE)
++ if(ct->layer7.app_proto)
++ kfree(ct->layer7.app_proto);
++ if(ct->layer7.app_data)
++ kfree(ct->layer7.app_data);
++ #endif
++
+ /* We overload first tuple to link into unconfirmed list. */
+ if (!is_confirmed(ct)) {
+ BUG_ON(list_empty(&ct->tuplehash[IP_CT_DIR_ORIGINAL].list));
+--- linux-2.6.18/net/ipv4/netfilter/ip_conntrack_standalone.c 2006-09-19 22:42:06.000000000 -0500
++++ linux-2.6.18-layer7/net/ipv4/netfilter/ip_conntrack_standalone.c 2006-09-24 10:17:45.000000000 -0500
+@@ -193,6 +193,12 @@ static int ct_seq_show(struct seq_file *
+ return -ENOSPC;
+ #endif
+
++#if defined(CONFIG_IP_NF_MATCH_LAYER7) || defined(CONFIG_IP_NF_MATCH_LAYER7_MODULE)
++ if(conntrack->layer7.app_proto)
++ if (seq_printf(s, "l7proto=%s ",conntrack->layer7.app_proto))
++ return 1;
++#endif
++
+ if (seq_printf(s, "use=%u\n", atomic_read(&conntrack->ct_general.use)))
+ return -ENOSPC;
+
+--- linux-2.6.18/net/ipv4/netfilter/ipt_layer7.c 1969-12-31 18:00:00.000000000 -0600
++++ linux-2.6.18-layer7/net/ipv4/netfilter/ipt_layer7.c 2006-09-24 10:59:55.000000000 -0500
+@@ -0,0 +1,582 @@
++/*
++ Kernel module to match application layer (OSI layer 7)
++ data in connections.
++
++ http://l7-filter.sf.net
++
++ By Matthew Strait and Ethan Sommer, 2003-2005.
++
++ 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.
++ http://www.gnu.org/licenses/gpl.txt
++
++ Based on ipt_string.c (C) 2000 Emmanuel Roger <winfield@freegates.be>
++ and cls_layer7.c (C) 2003 Matthew Strait, Ethan Sommer, Justin Levandoski
++*/
++
++#include <linux/module.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter_ipv4/ip_conntrack.h>
++#include <linux/proc_fs.h>
++#include <linux/ctype.h>
++#include <net/ip.h>
++#include <net/tcp.h>
++#include <linux/spinlock.h>
++
++#include "regexp/regexp.c"
++
++#include <linux/netfilter_ipv4/ipt_layer7.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++
++MODULE_AUTHOR("Matthew Strait <quadong@users.sf.net>, Ethan Sommer <sommere@users.sf.net>");
++MODULE_LICENSE("GPL");
++MODULE_DESCRIPTION("iptables application layer match module");
++MODULE_VERSION("2.0");
++
++static int maxdatalen = 2048; // this is the default
++module_param(maxdatalen, int, 0444);
++MODULE_PARM_DESC(maxdatalen, "maximum bytes of data looked at by l7-filter");
++
++#ifdef CONFIG_IP_NF_MATCH_LAYER7_DEBUG
++ #define DPRINTK(format,args...) printk(format,##args)
++#else
++ #define DPRINTK(format,args...)
++#endif
++
++#define TOTAL_PACKETS master_conntrack->counters[IP_CT_DIR_ORIGINAL].packets + \
++ master_conntrack->counters[IP_CT_DIR_REPLY].packets
++
++/* Number of packets whose data we look at.
++This can be modified through /proc/net/layer7_numpackets */
++static int num_packets = 10;
++
++static struct pattern_cache {
++ char * regex_string;
++ regexp * pattern;
++ struct pattern_cache * next;
++} * first_pattern_cache = NULL;
++
++/* I'm new to locking. Here are my assumptions:
++
++- No one will write to /proc/net/layer7_numpackets over and over very fast;
++ if they did, nothing awful would happen.
++
++- This code will never be processing the same packet twice at the same time,
++ because iptables rules are traversed in order.
++
++- It doesn't matter if two packets from different connections are in here at
++ the same time, because they don't share any data.
++
++- It _does_ matter if two packets from the same connection (or one from a
++ master and one from its child) are here at the same time. In this case,
++ we have to protect the conntracks and the list of compiled patterns.
++*/
++DEFINE_RWLOCK(ct_lock);
++DEFINE_SPINLOCK(list_lock);
++
++#ifdef CONFIG_IP_NF_MATCH_LAYER7_DEBUG
++/* Converts an unfriendly string into a friendly one by
++replacing unprintables with periods and all whitespace with " ". */
++static char * friendly_print(unsigned char * s)
++{
++ char * f = kmalloc(strlen(s) + 1, GFP_ATOMIC);
++ int i;
++
++ if(!f) {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in friendly_print, bailing.\n");
++ return NULL;
++ }
++
++ for(i = 0; i < strlen(s); i++){
++ if(isprint(s[i]) && s[i] < 128) f[i] = s[i];
++ else if(isspace(s[i])) f[i] = ' ';
++ else f[i] = '.';
++ }
++ f[i] = '\0';
++ return f;
++}
++
++static char dec2hex(int i)
++{
++ switch (i) {
++ case 0 ... 9:
++ return (char)(i + '0');
++ break;
++ case 10 ... 15:
++ return (char)(i - 10 + 'a');
++ break;
++ default:
++ if (net_ratelimit())
++ printk("Problem in dec2hex\n");
++ return '\0';
++ }
++}
++
++static char * hex_print(unsigned char * s)
++{
++ char * g = kmalloc(strlen(s)*3 + 1, GFP_ATOMIC);
++ int i;
++
++ if(!g) {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in hex_print, bailing.\n");
++ return NULL;
++ }
++
++ for(i = 0; i < strlen(s); i++) {
++ g[i*3 ] = dec2hex(s[i]/16);
++ g[i*3 + 1] = dec2hex(s[i]%16);
++ g[i*3 + 2] = ' ';
++ }
++ g[i*3] = '\0';
++
++ return g;
++}
++#endif // DEBUG
++
++/* Use instead of regcomp. As we expect to be seeing the same regexps over and
++over again, it make sense to cache the results. */
++static regexp * compile_and_cache(char * regex_string, char * protocol)
++{
++ struct pattern_cache * node = first_pattern_cache;
++ struct pattern_cache * last_pattern_cache = first_pattern_cache;
++ struct pattern_cache * tmp;
++ unsigned int len;
++
++ while (node != NULL) {
++ if (!strcmp(node->regex_string, regex_string))
++ return node->pattern;
++
++ last_pattern_cache = node;/* points at the last non-NULL node */
++ node = node->next;
++ }
++
++ /* If we reach the end of the list, then we have not yet cached
++ the pattern for this regex. Let's do that now.
++ Be paranoid about running out of memory to avoid list corruption. */
++ tmp = kmalloc(sizeof(struct pattern_cache), GFP_ATOMIC);
++
++ if(!tmp) {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in compile_and_cache, bailing.\n");
++ return NULL;
++ }
++
++ tmp->regex_string = kmalloc(strlen(regex_string) + 1, GFP_ATOMIC);
++ tmp->pattern = kmalloc(sizeof(struct regexp), GFP_ATOMIC);
++ tmp->next = NULL;
++
++ if(!tmp->regex_string || !tmp->pattern) {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in compile_and_cache, bailing.\n");
++ kfree(tmp->regex_string);
++ kfree(tmp->pattern);
++ kfree(tmp);
++ return NULL;
++ }
++
++ /* Ok. The new node is all ready now. */
++ node = tmp;
++
++ if(first_pattern_cache == NULL) /* list is empty */
++ first_pattern_cache = node; /* make node the beginning */
++ else
++ last_pattern_cache->next = node; /* attach node to the end */
++
++ /* copy the string and compile the regex */
++ len = strlen(regex_string);
++ DPRINTK("About to compile this: \"%s\"\n", regex_string);
++ node->pattern = regcomp(regex_string, &len);
++ if ( !node->pattern ) {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: Error compiling regexp \"%s\" (%s)\n", regex_string, protocol);
++ /* pattern is now cached as NULL, so we won't try again. */
++ }
++
++ strcpy(node->regex_string, regex_string);
++ return node->pattern;
++}
++
++static int can_handle(const struct sk_buff *skb)
++{
++ if(!skb->nh.iph) /* not IP */
++ return 0;
++ if(skb->nh.iph->protocol != IPPROTO_TCP &&
++ skb->nh.iph->protocol != IPPROTO_UDP &&
++ skb->nh.iph->protocol != IPPROTO_ICMP)
++ return 0;
++ return 1;
++}
++
++/* Returns offset the into the skb->data that the application data starts */
++static int app_data_offset(const struct sk_buff *skb)
++{
++ /* In case we are ported somewhere (ebtables?) where skb->nh.iph
++ isn't set, this can be gotten from 4*(skb->data[0] & 0x0f) as well. */
++ int ip_hl = 4*skb->nh.iph->ihl;
++
++ if( skb->nh.iph->protocol == IPPROTO_TCP ) {
++ /* 12 == offset into TCP header for the header length field.
++ Can't get this with skb->h.th->doff because the tcphdr
++ struct doesn't get set when routing (this is confirmed to be
++ true in Netfilter as well as QoS.) */
++ int tcp_hl = 4*(skb->data[ip_hl + 12] >> 4);
++
++ return ip_hl + tcp_hl;
++ } else if( skb->nh.iph->protocol == IPPROTO_UDP ) {
++ return ip_hl + 8; /* UDP header is always 8 bytes */
++ } else if( skb->nh.iph->protocol == IPPROTO_ICMP ) {
++ return ip_hl + 8; /* ICMP header is 8 bytes */
++ } else {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: tried to handle unknown protocol!\n");
++ return ip_hl + 8; /* something reasonable */
++ }
++}
++
++/* handles whether there's a match when we aren't appending data anymore */
++static int match_no_append(struct ip_conntrack * conntrack, struct ip_conntrack * master_conntrack,
++ enum ip_conntrack_info ctinfo, enum ip_conntrack_info master_ctinfo,
++ struct ipt_layer7_info * info)
++{
++ /* If we're in here, throw the app data away */
++ write_lock(&ct_lock);
++ if(master_conntrack->layer7.app_data != NULL) {
++
++ #ifdef CONFIG_IP_NF_MATCH_LAYER7_DEBUG
++ if(!master_conntrack->layer7.app_proto) {
++ char * f = friendly_print(master_conntrack->layer7.app_data);
++ char * g = hex_print(master_conntrack->layer7.app_data);
++ DPRINTK("\nl7-filter gave up after %d bytes (%d packets):\n%s\n",
++ strlen(f), TOTAL_PACKETS, f);
++ kfree(f);
++ DPRINTK("In hex: %s\n", g);
++ kfree(g);
++ }
++ #endif
++
++ kfree(master_conntrack->layer7.app_data);
++ master_conntrack->layer7.app_data = NULL; /* don't free again */
++ }
++ write_unlock(&ct_lock);
++
++ if(master_conntrack->layer7.app_proto){
++ /* Here child connections set their .app_proto (for /proc/net/ip_conntrack) */
++ write_lock(&ct_lock);
++ if(!conntrack->layer7.app_proto) {
++ conntrack->layer7.app_proto = kmalloc(strlen(master_conntrack->layer7.app_proto)+1, GFP_ATOMIC);
++ if(!conntrack->layer7.app_proto){
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in match_no_append, bailing.\n");
++ write_unlock(&ct_lock);
++ return 1;
++ }
++ strcpy(conntrack->layer7.app_proto, master_conntrack->layer7.app_proto);
++ }
++ write_unlock(&ct_lock);
++
++ return (!strcmp(master_conntrack->layer7.app_proto, info->protocol));
++ }
++ else {
++ /* If not classified, set to "unknown" to distinguish from
++ connections that are still being tested. */
++ write_lock(&ct_lock);
++ master_conntrack->layer7.app_proto = kmalloc(strlen("unknown")+1, GFP_ATOMIC);
++ if(!master_conntrack->layer7.app_proto){
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in match_no_append, bailing.\n");
++ write_unlock(&ct_lock);
++ return 1;
++ }
++ strcpy(master_conntrack->layer7.app_proto, "unknown");
++ write_unlock(&ct_lock);
++ return 0;
++ }
++}
++
++/* add the new app data to the conntrack. Return number of bytes added. */
++static int add_data(struct ip_conntrack * master_conntrack,
++ char * app_data, int appdatalen)
++{
++ int length = 0, i;
++ int oldlength = master_conntrack->layer7.app_data_len;
++
++ // This is a fix for a race condition by Deti Fliegl. However, I'm not
++ // clear on whether the race condition exists or whether this really
++ // fixes it. I might just be being dense... Anyway, if it's not really
++ // a fix, all it does is waste a very small amount of time.
++ if(!master_conntrack->layer7.app_data) return 0;
++
++ /* Strip nulls. Make everything lower case (our regex lib doesn't
++ do case insensitivity). Add it to the end of the current data. */
++ for(i = 0; i < maxdatalen-oldlength-1 &&
++ i < appdatalen; i++) {
++ if(app_data[i] != '\0') {
++ master_conntrack->layer7.app_data[length+oldlength] =
++ /* the kernel version of tolower mungs 'upper ascii' */
++ isascii(app_data[i])? tolower(app_data[i]) : app_data[i];
++ length++;
++ }
++ }
++
++ master_conntrack->layer7.app_data[length+oldlength] = '\0';
++ master_conntrack->layer7.app_data_len = length + oldlength;
++
++ return length;
++}
++
++/* Returns true on match and false otherwise. */
++static int match(/* const */ struct sk_buff *skb,
++ const struct net_device *in, const struct net_device *out,
++ const struct xt_match *match, const void *matchinfo,
++ int offset, unsigned int protoff, int *hotdrop)
++{
++ struct ipt_layer7_info * info = (struct ipt_layer7_info *)matchinfo;
++ enum ip_conntrack_info master_ctinfo, ctinfo;
++ struct ip_conntrack *master_conntrack, *conntrack;
++ unsigned char * app_data;
++ unsigned int pattern_result, appdatalen;
++ regexp * comppattern;
++
++ if(!can_handle(skb)){
++ DPRINTK("layer7: This is some protocol I can't handle.\n");
++ return info->invert;
++ }
++
++ /* Treat parent & all its children together as one connection, except
++ for the purpose of setting conntrack->layer7.app_proto in the actual
++ connection. This makes /proc/net/ip_conntrack more satisfying. */
++ if(!(conntrack = ip_conntrack_get((struct sk_buff *)skb, &ctinfo)) ||
++ !(master_conntrack = ip_conntrack_get((struct sk_buff *)skb, &master_ctinfo))) {
++ //DPRINTK("layer7: packet is not from a known connection, giving up.\n");
++ return info->invert;
++ }
++
++ /* Try to get a master conntrack (and its master etc) for FTP, etc. */
++ while (master_ct(master_conntrack) != NULL)
++ master_conntrack = master_ct(master_conntrack);
++
++ /* if we've classified it or seen too many packets */
++ if(TOTAL_PACKETS > num_packets ||
++ master_conntrack->layer7.app_proto) {
++
++ pattern_result = match_no_append(conntrack, master_conntrack, ctinfo, master_ctinfo, info);
++
++ /* skb->cb[0] == seen. Avoid doing things twice if there are two l7
++ rules. I'm not sure that using cb for this purpose is correct, although
++ it says "put your private variables there". But it doesn't look like it
++ is being used for anything else in the skbs that make it here. How can
++ I write to cb without making the compiler angry? */
++ skb->cb[0] = 1; /* marking it seen here is probably irrelevant, but consistant */
++
++ return (pattern_result ^ info->invert);
++ }
++
++ if(skb_is_nonlinear(skb)){
++ if(skb_linearize(skb) != 0){
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: failed to linearize packet, bailing.\n");
++ return info->invert;
++ }
++ }
++
++ /* now that the skb is linearized, it's safe to set these. */
++ app_data = skb->data + app_data_offset(skb);
++ appdatalen = skb->tail - app_data;
++
++ spin_lock_bh(&list_lock);
++ /* the return value gets checked later, when we're ready to use it */
++ comppattern = compile_and_cache(info->pattern, info->protocol);
++ spin_unlock_bh(&list_lock);
++
++ /* On the first packet of a connection, allocate space for app data */
++ write_lock(&ct_lock);
++ if(TOTAL_PACKETS == 1 && !skb->cb[0] && !master_conntrack->layer7.app_data) {
++ master_conntrack->layer7.app_data = kmalloc(maxdatalen, GFP_ATOMIC);
++ if(!master_conntrack->layer7.app_data){
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in match, bailing.\n");
++ write_unlock(&ct_lock);
++ return info->invert;
++ }
++
++ master_conntrack->layer7.app_data[0] = '\0';
++ }
++ write_unlock(&ct_lock);
++
++ /* Can be here, but unallocated, if numpackets is increased near
++ the beginning of a connection */
++ if(master_conntrack->layer7.app_data == NULL)
++ return (info->invert); /* unmatched */
++
++ if(!skb->cb[0]){
++ int newbytes;
++ write_lock(&ct_lock);
++ newbytes = add_data(master_conntrack, app_data, appdatalen);
++ write_unlock(&ct_lock);
++
++ if(newbytes == 0) { /* didn't add any data */
++ skb->cb[0] = 1;
++ /* Didn't match before, not going to match now */
++ return info->invert;
++ }
++ }
++
++ /* If looking for "unknown", then never match. "Unknown" means that
++ we've given up; we're still trying with these packets. */
++ read_lock(&ct_lock);
++ if(!strcmp(info->protocol, "unknown")) {
++ pattern_result = 0;
++ /* If the regexp failed to compile, don't bother running it */
++ } else if(comppattern && regexec(comppattern, master_conntrack->layer7.app_data)) {
++ DPRINTK("layer7: matched %s\n", info->protocol);
++ pattern_result = 1;
++ } else pattern_result = 0;
++ read_unlock(&ct_lock);
++
++ if(pattern_result) {
++ write_lock(&ct_lock);
++ master_conntrack->layer7.app_proto = kmalloc(strlen(info->protocol)+1, GFP_ATOMIC);
++ if(!master_conntrack->layer7.app_proto){
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in match, bailing.\n");
++ write_unlock(&ct_lock);
++ return (pattern_result ^ info->invert);
++ }
++ strcpy(master_conntrack->layer7.app_proto, info->protocol);
++ write_unlock(&ct_lock);
++ }
++
++ /* mark the packet seen */
++ skb->cb[0] = 1;
++
++ return (pattern_result ^ info->invert);
++}
++
++static int checkentry(const char *tablename, const void *ip,
++ const struct xt_match *match, void *matchinfo, unsigned int matchsize,
++ unsigned int hook_mask)
++{
++// struct ipt_layer7_info * info = (struct ipt_layer7_info *)matchinfo;
++
++ if (matchsize != IPT_ALIGN(sizeof(struct ipt_layer7_info)))
++ return 0;
++
++ return 1;
++}
++
++static struct ipt_match layer7_match = {
++ .name = "layer7",
++ .match = &match,
++ .checkentry = &checkentry,
++ .matchsize = sizeof(struct ipt_layer7_info),
++ .me = THIS_MODULE
++};
++
++/* taken from drivers/video/modedb.c */
++static int my_atoi(const char *s)
++{
++ int val = 0;
++
++ for (;; s++) {
++ switch (*s) {
++ case '0'...'9':
++ val = 10*val+(*s-'0');
++ break;
++ default:
++ return val;
++ }
++ }
++}
++
++/* write out num_packets to userland. */
++static int layer7_read_proc(char* page, char ** start, off_t off, int count,
++ int* eof, void * data)
++{
++ if(num_packets > 99 && net_ratelimit())
++ printk(KERN_ERR "layer7: NOT REACHED. num_packets too big\n");
++
++ page[0] = num_packets/10 + '0';
++ page[1] = num_packets%10 + '0';
++ page[2] = '\n';
++ page[3] = '\0';
++
++ *eof=1;
++
++ return 3;
++}
++
++/* Read in num_packets from userland */
++static int layer7_write_proc(struct file* file, const char* buffer,
++ unsigned long count, void *data)
++{
++ char * foo = kmalloc(count, GFP_ATOMIC);
++
++ if(!foo){
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory, bailing. num_packets unchanged.\n");
++ return count;
++ }
++
++ if(copy_from_user(foo, buffer, count)) {
++ return -EFAULT;
++ }
++
++
++ num_packets = my_atoi(foo);
++ kfree (foo);
++
++ /* This has an arbitrary limit to make the math easier. I'm lazy.
++ But anyway, 99 is a LOT! If you want more, you're doing it wrong! */
++ if(num_packets > 99) {
++ printk(KERN_WARNING "layer7: num_packets can't be > 99.\n");
++ num_packets = 99;
++ } else if(num_packets < 1) {
++ printk(KERN_WARNING "layer7: num_packets can't be < 1.\n");
++ num_packets = 1;
++ }
++
++ return count;
++}
++
++/* register the proc file */
++static void layer7_init_proc(void)
++{
++ struct proc_dir_entry* entry;
++ entry = create_proc_entry("layer7_numpackets", 0644, proc_net);
++ entry->read_proc = layer7_read_proc;
++ entry->write_proc = layer7_write_proc;
++}
++
++static void layer7_cleanup_proc(void)
++{
++ remove_proc_entry("layer7_numpackets", proc_net);
++}
++
++static int __init ipt_layer7_init(void)
++{
++ layer7_init_proc();
++ if(maxdatalen < 1) {
++ printk(KERN_WARNING "layer7: maxdatalen can't be < 1, using 1\n");
++ maxdatalen = 1;
++ }
++ /* This is not a hard limit. It's just here to prevent people from
++ bringing their slow machines to a grinding halt. */
++ else if(maxdatalen > 65536) {
++ printk(KERN_WARNING "layer7: maxdatalen can't be > 65536, using 65536\n");
++ maxdatalen = 65536;
++ }
++ return ipt_register_match(&layer7_match);
++}
++
++static void __exit ipt_layer7_fini(void)
++{
++ layer7_cleanup_proc();
++ ipt_unregister_match(&layer7_match);
++}
++
++module_init(ipt_layer7_init);
++module_exit(ipt_layer7_fini);
+--- linux-2.6.18/net/ipv4/netfilter/regexp/regexp.c 1969-12-31 18:00:00.000000000 -0600
++++ linux-2.6.18-layer7/net/ipv4/netfilter/regexp/regexp.c 2006-09-24 10:17:45.000000000 -0500
+@@ -0,0 +1,1197 @@
++/*
++ * regcomp and regexec -- regsub and regerror are elsewhere
++ * @(#)regexp.c 1.3 of 18 April 87
++ *
++ * Copyright (c) 1986 by University of Toronto.
++ * Written by Henry Spencer. Not derived from licensed software.
++ *
++ * Permission is granted to anyone to use this software for any
++ * purpose on any computer system, and to redistribute it freely,
++ * subject to the following restrictions:
++ *
++ * 1. The author is not responsible for the consequences of use of
++ * this software, no matter how awful, even if they arise
++ * from defects in it.
++ *
++ * 2. The origin of this software must not be misrepresented, either
++ * by explicit claim or by omission.
++ *
++ * 3. Altered versions must be plainly marked as such, and must not
++ * be misrepresented as being the original software.
++ *
++ * Beware that some of this code is subtly aware of the way operator
++ * precedence is structured in regular expressions. Serious changes in
++ * regular-expression syntax might require a total rethink.
++ *
++ * This code was modified by Ethan Sommer to work within the kernel
++ * (it now uses kmalloc etc..)
++ *
++ * Modified slightly by Matthew Strait to use more modern C.
++ */
++
++#include "regexp.h"
++#include "regmagic.h"
++
++/* added by ethan and matt. Lets it work in both kernel and user space.
++(So iptables can use it, for instance.) Yea, it goes both ways... */
++#if __KERNEL__
++ #define malloc(foo) kmalloc(foo,GFP_ATOMIC)
++#else
++ #define printk(format,args...) printf(format,##args)
++#endif
++
++void regerror(char * s)
++{
++ printk("<3>Regexp: %s\n", s);
++ /* NOTREACHED */
++}
++
++/*
++ * The "internal use only" fields in regexp.h are present to pass info from
++ * compile to execute that permits the execute phase to run lots faster on
++ * simple cases. They are:
++ *
++ * regstart char that must begin a match; '\0' if none obvious
++ * reganch is the match anchored (at beginning-of-line only)?
++ * regmust string (pointer into program) that match must include, or NULL
++ * regmlen length of regmust string
++ *
++ * Regstart and reganch permit very fast decisions on suitable starting points
++ * for a match, cutting down the work a lot. Regmust permits fast rejection
++ * of lines that cannot possibly match. The regmust tests are costly enough
++ * that regcomp() supplies a regmust only if the r.e. contains something
++ * potentially expensive (at present, the only such thing detected is * or +
++ * at the start of the r.e., which can involve a lot of backup). Regmlen is
++ * supplied because the test in regexec() needs it and regcomp() is computing
++ * it anyway.
++ */
++
++/*
++ * Structure for regexp "program". This is essentially a linear encoding
++ * of a nondeterministic finite-state machine (aka syntax charts or
++ * "railroad normal form" in parsing technology). Each node is an opcode
++ * plus a "next" pointer, possibly plus an operand. "Next" pointers of
++ * all nodes except BRANCH implement concatenation; a "next" pointer with
++ * a BRANCH on both ends of it is connecting two alternatives. (Here we
++ * have one of the subtle syntax dependencies: an individual BRANCH (as
++ * opposed to a collection of them) is never concatenated with anything
++ * because of operator precedence.) The operand of some types of node is
++ * a literal string; for others, it is a node leading into a sub-FSM. In
++ * particular, the operand of a BRANCH node is the first node of the branch.
++ * (NB this is *not* a tree structure: the tail of the branch connects
++ * to the thing following the set of BRANCHes.) The opcodes are:
++ */
++
++/* definition number opnd? meaning */
++#define END 0 /* no End of program. */
++#define BOL 1 /* no Match "" at beginning of line. */
++#define EOL 2 /* no Match "" at end of line. */
++#define ANY 3 /* no Match any one character. */
++#define ANYOF 4 /* str Match any character in this string. */
++#define ANYBUT 5 /* str Match any character not in this string. */
++#define BRANCH 6 /* node Match this alternative, or the next... */
++#define BACK 7 /* no Match "", "next" ptr points backward. */
++#define EXACTLY 8 /* str Match this string. */
++#define NOTHING 9 /* no Match empty string. */
++#define STAR 10 /* node Match this (simple) thing 0 or more times. */
++#define PLUS 11 /* node Match this (simple) thing 1 or more times. */
++#define OPEN 20 /* no Mark this point in input as start of #n. */
++ /* OPEN+1 is number 1, etc. */
++#define CLOSE 30 /* no Analogous to OPEN. */
++
++/*
++ * Opcode notes:
++ *
++ * BRANCH The set of branches constituting a single choice are hooked
++ * together with their "next" pointers, since precedence prevents
++ * anything being concatenated to any individual branch. The
++ * "next" pointer of the last BRANCH in a choice points to the
++ * thing following the whole choice. This is also where the
++ * final "next" pointer of each individual branch points; each
++ * branch starts with the operand node of a BRANCH node.
++ *
++ * BACK Normal "next" pointers all implicitly point forward; BACK
++ * exists to make loop structures possible.
++ *
++ * STAR,PLUS '?', and complex '*' and '+', are implemented as circular
++ * BRANCH structures using BACK. Simple cases (one character
++ * per match) are implemented with STAR and PLUS for speed
++ * and to minimize recursive plunges.
++ *
++ * OPEN,CLOSE ...are numbered at compile time.
++ */
++
++/*
++ * A node is one char of opcode followed by two chars of "next" pointer.
++ * "Next" pointers are stored as two 8-bit pieces, high order first. The
++ * value is a positive offset from the opcode of the node containing it.
++ * An operand, if any, simply follows the node. (Note that much of the
++ * code generation knows about this implicit relationship.)
++ *
++ * Using two bytes for the "next" pointer is vast overkill for most things,
++ * but allows patterns to get big without disasters.
++ */
++#define OP(p) (*(p))
++#define NEXT(p) (((*((p)+1)&0377)<<8) + (*((p)+2)&0377))
++#define OPERAND(p) ((p) + 3)
++
++/*
++ * See regmagic.h for one further detail of program structure.
++ */
++
++
++/*
++ * Utility definitions.
++ */
++#ifndef CHARBITS
++#define UCHARAT(p) ((int)*(unsigned char *)(p))
++#else
++#define UCHARAT(p) ((int)*(p)&CHARBITS)
++#endif
++
++#define FAIL(m) { regerror(m); return(NULL); }
++#define ISMULT(c) ((c) == '*' || (c) == '+' || (c) == '?')
++#define META "^$.[()|?+*\\"
++
++/*
++ * Flags to be passed up and down.
++ */
++#define HASWIDTH 01 /* Known never to match null string. */
++#define SIMPLE 02 /* Simple enough to be STAR/PLUS operand. */
++#define SPSTART 04 /* Starts with * or +. */
++#define WORST 0 /* Worst case. */
++
++/*
++ * Global work variables for regcomp().
++ */
++struct match_globals {
++char *reginput; /* String-input pointer. */
++char *regbol; /* Beginning of input, for ^ check. */
++char **regstartp; /* Pointer to startp array. */
++char **regendp; /* Ditto for endp. */
++char *regparse; /* Input-scan pointer. */
++int regnpar; /* () count. */
++char regdummy;
++char *regcode; /* Code-emit pointer; &regdummy = don't. */
++long regsize; /* Code size. */
++};
++
++/*
++ * Forward declarations for regcomp()'s friends.
++ */
++#ifndef STATIC
++#define STATIC static
++#endif
++STATIC char *reg(struct match_globals *g, int paren,int *flagp);
++STATIC char *regbranch(struct match_globals *g, int *flagp);
++STATIC char *regpiece(struct match_globals *g, int *flagp);
++STATIC char *regatom(struct match_globals *g, int *flagp);
++STATIC char *regnode(struct match_globals *g, char op);
++STATIC char *regnext(struct match_globals *g, char *p);
++STATIC void regc(struct match_globals *g, char b);
++STATIC void reginsert(struct match_globals *g, char op, char *opnd);
++STATIC void regtail(struct match_globals *g, char *p, char *val);
++STATIC void regoptail(struct match_globals *g, char *p, char *val);
++
++
++__kernel_size_t my_strcspn(const char *s1,const char *s2)
++{
++ char *scan1;
++ char *scan2;
++ int count;
++
++ count = 0;
++ for (scan1 = (char *)s1; *scan1 != '\0'; scan1++) {
++ for (scan2 = (char *)s2; *scan2 != '\0';) /* ++ moved down. */
++ if (*scan1 == *scan2++)
++ return(count);
++ count++;
++ }
++ return(count);
++}
++
++/*
++ - regcomp - compile a regular expression into internal code
++ *
++ * We can't allocate space until we know how big the compiled form will be,
++ * but we can't compile it (and thus know how big it is) until we've got a
++ * place to put the code. So we cheat: we compile it twice, once with code
++ * generation turned off and size counting turned on, and once "for real".
++ * This also means that we don't allocate space until we are sure that the
++ * thing really will compile successfully, and we never have to move the
++ * code and thus invalidate pointers into it. (Note that it has to be in
++ * one piece because free() must be able to free it all.)
++ *
++ * Beware that the optimization-preparation code in here knows about some
++ * of the structure of the compiled regexp.
++ */
++regexp *
++regcomp(char *exp,int *patternsize)
++{
++ register regexp *r;
++ register char *scan;
++ register char *longest;
++ register int len;
++ int flags;
++ struct match_globals g;
++
++ /* commented out by ethan
++ extern char *malloc();
++ */
++
++ if (exp == NULL)
++ FAIL("NULL argument");
++
++ /* First pass: determine size, legality. */
++ g.regparse = exp;
++ g.regnpar = 1;
++ g.regsize = 0L;
++ g.regcode = &g.regdummy;
++ regc(&g, MAGIC);
++ if (reg(&g, 0, &flags) == NULL)
++ return(NULL);
++
++ /* Small enough for pointer-storage convention? */
++ if (g.regsize >= 32767L) /* Probably could be 65535L. */
++ FAIL("regexp too big");
++
++ /* Allocate space. */
++ *patternsize=sizeof(regexp) + (unsigned)g.regsize;
++ r = (regexp *)malloc(sizeof(regexp) + (unsigned)g.regsize);
++ if (r == NULL)
++ FAIL("out of space");
++
++ /* Second pass: emit code. */
++ g.regparse = exp;
++ g.regnpar = 1;
++ g.regcode = r->program;
++ regc(&g, MAGIC);
++ if (reg(&g, 0, &flags) == NULL)
++ return(NULL);
++
++ /* Dig out information for optimizations. */
++ r->regstart = '\0'; /* Worst-case defaults. */
++ r->reganch = 0;
++ r->regmust = NULL;
++ r->regmlen = 0;
++ scan = r->program+1; /* First BRANCH. */
++ if (OP(regnext(&g, scan)) == END) { /* Only one top-level choice. */
++ scan = OPERAND(scan);
++
++ /* Starting-point info. */
++ if (OP(scan) == EXACTLY)
++ r->regstart = *OPERAND(scan);
++ else if (OP(scan) == BOL)
++ r->reganch++;
++
++ /*
++ * If there's something expensive in the r.e., find the
++ * longest literal string that must appear and make it the
++ * regmust. Resolve ties in favor of later strings, since
++ * the regstart check works with the beginning of the r.e.
++ * and avoiding duplication strengthens checking. Not a
++ * strong reason, but sufficient in the absence of others.
++ */
++ if (flags&SPSTART) {
++ longest = NULL;
++ len = 0;
++ for (; scan != NULL; scan = regnext(&g, scan))
++ if (OP(scan) == EXACTLY && strlen(OPERAND(scan)) >= len) {
++ longest = OPERAND(scan);
++ len = strlen(OPERAND(scan));
++ }
++ r->regmust = longest;
++ r->regmlen = len;
++ }
++ }
++
++ return(r);
++}
++
++/*
++ - reg - regular expression, i.e. main body or parenthesized thing
++ *
++ * Caller must absorb opening parenthesis.
++ *
++ * Combining parenthesis handling with the base level of regular expression
++ * is a trifle forced, but the need to tie the tails of the branches to what
++ * follows makes it hard to avoid.
++ */
++static char *
++reg(struct match_globals *g, int paren, int *flagp /* Parenthesized? */ )
++{
++ register char *ret;
++ register char *br;
++ register char *ender;
++ register int parno = 0; /* 0 makes gcc happy */
++ int flags;
++
++ *flagp = HASWIDTH; /* Tentatively. */
++
++ /* Make an OPEN node, if parenthesized. */
++ if (paren) {
++ if (g->regnpar >= NSUBEXP)
++ FAIL("too many ()");
++ parno = g->regnpar;
++ g->regnpar++;
++ ret = regnode(g, OPEN+parno);
++ } else
++ ret = NULL;
++
++ /* Pick up the branches, linking them together. */
++ br = regbranch(g, &flags);
++ if (br == NULL)
++ return(NULL);
++ if (ret != NULL)
++ regtail(g, ret, br); /* OPEN -> first. */
++ else
++ ret = br;
++ if (!(flags&HASWIDTH))
++ *flagp &= ~HASWIDTH;
++ *flagp |= flags&SPSTART;
++ while (*g->regparse == '|') {
++ g->regparse++;
++ br = regbranch(g, &flags);
++ if (br == NULL)
++ return(NULL);
++ regtail(g, ret, br); /* BRANCH -> BRANCH. */
++ if (!(flags&HASWIDTH))
++ *flagp &= ~HASWIDTH;
++ *flagp |= flags&SPSTART;
++ }
++
++ /* Make a closing node, and hook it on the end. */
++ ender = regnode(g, (paren) ? CLOSE+parno : END);
++ regtail(g, ret, ender);
++
++ /* Hook the tails of the branches to the closing node. */
++ for (br = ret; br != NULL; br = regnext(g, br))
++ regoptail(g, br, ender);
++
++ /* Check for proper termination. */
++ if (paren && *g->regparse++ != ')') {
++ FAIL("unmatched ()");
++ } else if (!paren && *g->regparse != '\0') {
++ if (*g->regparse == ')') {
++ FAIL("unmatched ()");
++ } else
++ FAIL("junk on end"); /* "Can't happen". */
++ /* NOTREACHED */
++ }
++
++ return(ret);
++}
++
++/*
++ - regbranch - one alternative of an | operator
++ *
++ * Implements the concatenation operator.
++ */
++static char *
++regbranch(struct match_globals *g, int *flagp)
++{
++ register char *ret;
++ register char *chain;
++ register char *latest;
++ int flags;
++
++ *flagp = WORST; /* Tentatively. */
++
++ ret = regnode(g, BRANCH);
++ chain = NULL;
++ while (*g->regparse != '\0' && *g->regparse != '|' && *g->regparse != ')') {
++ latest = regpiece(g, &flags);
++ if (latest == NULL)
++ return(NULL);
++ *flagp |= flags&HASWIDTH;
++ if (chain == NULL) /* First piece. */
++ *flagp |= flags&SPSTART;
++ else
++ regtail(g, chain, latest);
++ chain = latest;
++ }
++ if (chain == NULL) /* Loop ran zero times. */
++ (void) regnode(g, NOTHING);
++
++ return(ret);
++}
++
++/*
++ - regpiece - something followed by possible [*+?]
++ *
++ * Note that the branching code sequences used for ? and the general cases
++ * of * and + are somewhat optimized: they use the same NOTHING node as
++ * both the endmarker for their branch list and the body of the last branch.
++ * It might seem that this node could be dispensed with entirely, but the
++ * endmarker role is not redundant.
++ */
++static char *
++regpiece(struct match_globals *g, int *flagp)
++{
++ register char *ret;
++ register char op;
++ register char *next;
++ int flags;
++
++ ret = regatom(g, &flags);
++ if (ret == NULL)
++ return(NULL);
++
++ op = *g->regparse;
++ if (!ISMULT(op)) {
++ *flagp = flags;
++ return(ret);
++ }
++
++ if (!(flags&HASWIDTH) && op != '?')
++ FAIL("*+ operand could be empty");
++ *flagp = (op != '+') ? (WORST|SPSTART) : (WORST|HASWIDTH);
++
++ if (op == '*' && (flags&SIMPLE))
++ reginsert(g, STAR, ret);
++ else if (op == '*') {
++ /* Emit x* as (x&|), where & means "self". */
++ reginsert(g, BRANCH, ret); /* Either x */
++ regoptail(g, ret, regnode(g, BACK)); /* and loop */
++ regoptail(g, ret, ret); /* back */
++ regtail(g, ret, regnode(g, BRANCH)); /* or */
++ regtail(g, ret, regnode(g, NOTHING)); /* null. */
++ } else if (op == '+' && (flags&SIMPLE))
++ reginsert(g, PLUS, ret);
++ else if (op == '+') {
++ /* Emit x+ as x(&|), where & means "self". */
++ next = regnode(g, BRANCH); /* Either */
++ regtail(g, ret, next);
++ regtail(g, regnode(g, BACK), ret); /* loop back */
++ regtail(g, next, regnode(g, BRANCH)); /* or */
++ regtail(g, ret, regnode(g, NOTHING)); /* null. */
++ } else if (op == '?') {
++ /* Emit x? as (x|) */
++ reginsert(g, BRANCH, ret); /* Either x */
++ regtail(g, ret, regnode(g, BRANCH)); /* or */
++ next = regnode(g, NOTHING); /* null. */
++ regtail(g, ret, next);
++ regoptail(g, ret, next);
++ }
++ g->regparse++;
++ if (ISMULT(*g->regparse))
++ FAIL("nested *?+");
++
++ return(ret);
++}
++
++/*
++ - regatom - the lowest level
++ *
++ * Optimization: gobbles an entire sequence of ordinary characters so that
++ * it can turn them into a single node, which is smaller to store and
++ * faster to run. Backslashed characters are exceptions, each becoming a
++ * separate node; the code is simpler that way and it's not worth fixing.
++ */
++static char *
++regatom(struct match_globals *g, int *flagp)
++{
++ register char *ret;
++ int flags;
++
++ *flagp = WORST; /* Tentatively. */
++
++ switch (*g->regparse++) {
++ case '^':
++ ret = regnode(g, BOL);
++ break;
++ case '$':
++ ret = regnode(g, EOL);
++ break;
++ case '.':
++ ret = regnode(g, ANY);
++ *flagp |= HASWIDTH|SIMPLE;
++ break;
++ case '[': {
++ register int class;
++ register int classend;
++
++ if (*g->regparse == '^') { /* Complement of range. */
++ ret = regnode(g, ANYBUT);
++ g->regparse++;
++ } else
++ ret = regnode(g, ANYOF);
++ if (*g->regparse == ']' || *g->regparse == '-')
++ regc(g, *g->regparse++);
++ while (*g->regparse != '\0' && *g->regparse != ']') {
++ if (*g->regparse == '-') {
++ g->regparse++;
++ if (*g->regparse == ']' || *g->regparse == '\0')
++ regc(g, '-');
++ else {
++ class = UCHARAT(g->regparse-2)+1;
++ classend = UCHARAT(g->regparse);
++ if (class > classend+1)
++ FAIL("invalid [] range");
++ for (; class <= classend; class++)
++ regc(g, class);
++ g->regparse++;
++ }
++ } else
++ regc(g, *g->regparse++);
++ }
++ regc(g, '\0');
++ if (*g->regparse != ']')
++ FAIL("unmatched []");
++ g->regparse++;
++ *flagp |= HASWIDTH|SIMPLE;
++ }
++ break;
++ case '(':
++ ret = reg(g, 1, &flags);
++ if (ret == NULL)
++ return(NULL);
++ *flagp |= flags&(HASWIDTH|SPSTART);
++ break;
++ case '\0':
++ case '|':
++ case ')':
++ FAIL("internal urp"); /* Supposed to be caught earlier. */
++ break;
++ case '?':
++ case '+':
++ case '*':
++ FAIL("?+* follows nothing");
++ break;
++ case '\\':
++ if (*g->regparse == '\0')
++ FAIL("trailing \\");
++ ret = regnode(g, EXACTLY);
++ regc(g, *g->regparse++);
++ regc(g, '\0');
++ *flagp |= HASWIDTH|SIMPLE;
++ break;
++ default: {
++ register int len;
++ register char ender;
++
++ g->regparse--;
++ len = my_strcspn((const char *)g->regparse, (const char *)META);
++ if (len <= 0)
++ FAIL("internal disaster");
++ ender = *(g->regparse+len);
++ if (len > 1 && ISMULT(ender))
++ len--; /* Back off clear of ?+* operand. */
++ *flagp |= HASWIDTH;
++ if (len == 1)
++ *flagp |= SIMPLE;
++ ret = regnode(g, EXACTLY);
++ while (len > 0) {
++ regc(g, *g->regparse++);
++ len--;
++ }
++ regc(g, '\0');
++ }
++ break;
++ }
++
++ return(ret);
++}
++
++/*
++ - regnode - emit a node
++ */
++static char * /* Location. */
++regnode(struct match_globals *g, char op)
++{
++ register char *ret;
++ register char *ptr;
++
++ ret = g->regcode;
++ if (ret == &g->regdummy) {
++ g->regsize += 3;
++ return(ret);
++ }
++
++ ptr = ret;
++ *ptr++ = op;
++ *ptr++ = '\0'; /* Null "next" pointer. */
++ *ptr++ = '\0';
++ g->regcode = ptr;
++
++ return(ret);
++}
++
++/*
++ - regc - emit (if appropriate) a byte of code
++ */
++static void
++regc(struct match_globals *g, char b)
++{
++ if (g->regcode != &g->regdummy)
++ *g->regcode++ = b;
++ else
++ g->regsize++;
++}
++
++/*
++ - reginsert - insert an operator in front of already-emitted operand
++ *
++ * Means relocating the operand.
++ */
++static void
++reginsert(struct match_globals *g, char op, char* opnd)
++{
++ register char *src;
++ register char *dst;
++ register char *place;
++
++ if (g->regcode == &g->regdummy) {
++ g->regsize += 3;
++ return;
++ }
++
++ src = g->regcode;
++ g->regcode += 3;
++ dst = g->regcode;
++ while (src > opnd)
++ *--dst = *--src;
++
++ place = opnd; /* Op node, where operand used to be. */
++ *place++ = op;
++ *place++ = '\0';
++ *place++ = '\0';
++}
++
++/*
++ - regtail - set the next-pointer at the end of a node chain
++ */
++static void
++regtail(struct match_globals *g, char *p, char *val)
++{
++ register char *scan;
++ register char *temp;
++ register int offset;
++
++ if (p == &g->regdummy)
++ return;
++
++ /* Find last node. */
++ scan = p;
++ for (;;) {
++ temp = regnext(g, scan);
++ if (temp == NULL)
++ break;
++ scan = temp;
++ }
++
++ if (OP(scan) == BACK)
++ offset = scan - val;
++ else
++ offset = val - scan;
++ *(scan+1) = (offset>>8)&0377;
++ *(scan+2) = offset&0377;
++}
++
++/*
++ - regoptail - regtail on operand of first argument; nop if operandless
++ */
++static void
++regoptail(struct match_globals *g, char *p, char *val)
++{
++ /* "Operandless" and "op != BRANCH" are synonymous in practice. */
++ if (p == NULL || p == &g->regdummy || OP(p) != BRANCH)
++ return;
++ regtail(g, OPERAND(p), val);
++}
++
++/*
++ * regexec and friends
++ */
++
++
++/*
++ * Forwards.
++ */
++STATIC int regtry(struct match_globals *g, regexp *prog, char *string);
++STATIC int regmatch(struct match_globals *g, char *prog);
++STATIC int regrepeat(struct match_globals *g, char *p);
++
++#ifdef DEBUG
++int regnarrate = 0;
++void regdump();
++STATIC char *regprop(char *op);
++#endif
++
++/*
++ - regexec - match a regexp against a string
++ */
++int
++regexec(regexp *prog, char *string)
++{
++ register char *s;
++ struct match_globals g;
++
++ /* Be paranoid... */
++ if (prog == NULL || string == NULL) {
++ printk("<3>Regexp: NULL parameter\n");
++ return(0);
++ }
++
++ /* Check validity of program. */
++ if (UCHARAT(prog->program) != MAGIC) {
++ printk("<3>Regexp: corrupted program\n");
++ return(0);
++ }
++
++ /* If there is a "must appear" string, look for it. */
++ if (prog->regmust != NULL) {
++ s = string;
++ while ((s = strchr(s, prog->regmust[0])) != NULL) {
++ if (strncmp(s, prog->regmust, prog->regmlen) == 0)
++ break; /* Found it. */
++ s++;
++ }
++ if (s == NULL) /* Not present. */
++ return(0);
++ }
++
++ /* Mark beginning of line for ^ . */
++ g.regbol = string;
++
++ /* Simplest case: anchored match need be tried only once. */
++ if (prog->reganch)
++ return(regtry(&g, prog, string));
++
++ /* Messy cases: unanchored match. */
++ s = string;
++ if (prog->regstart != '\0')
++ /* We know what char it must start with. */
++ while ((s = strchr(s, prog->regstart)) != NULL) {
++ if (regtry(&g, prog, s))
++ return(1);
++ s++;
++ }
++ else
++ /* We don't -- general case. */
++ do {
++ if (regtry(&g, prog, s))
++ return(1);
++ } while (*s++ != '\0');
++
++ /* Failure. */
++ return(0);
++}
++
++/*
++ - regtry - try match at specific point
++ */
++static int /* 0 failure, 1 success */
++regtry(struct match_globals *g, regexp *prog, char *string)
++{
++ register int i;
++ register char **sp;
++ register char **ep;
++
++ g->reginput = string;
++ g->regstartp = prog->startp;
++ g->regendp = prog->endp;
++
++ sp = prog->startp;
++ ep = prog->endp;
++ for (i = NSUBEXP; i > 0; i--) {
++ *sp++ = NULL;
++ *ep++ = NULL;
++ }
++ if (regmatch(g, prog->program + 1)) {
++ prog->startp[0] = string;
++ prog->endp[0] = g->reginput;
++ return(1);
++ } else
++ return(0);
++}
++
++/*
++ - regmatch - main matching routine
++ *
++ * Conceptually the strategy is simple: check to see whether the current
++ * node matches, call self recursively to see whether the rest matches,
++ * and then act accordingly. In practice we make some effort to avoid
++ * recursion, in particular by going through "ordinary" nodes (that don't
++ * need to know whether the rest of the match failed) by a loop instead of
++ * by recursion.
++ */
++static int /* 0 failure, 1 success */
++regmatch(struct match_globals *g, char *prog)
++{
++ register char *scan = prog; /* Current node. */
++ char *next; /* Next node. */
++
++#ifdef DEBUG
++ if (scan != NULL && regnarrate)
++ fprintf(stderr, "%s(\n", regprop(scan));
++#endif
++ while (scan != NULL) {
++#ifdef DEBUG
++ if (regnarrate)
++ fprintf(stderr, "%s...\n", regprop(scan));
++#endif
++ next = regnext(g, scan);
++
++ switch (OP(scan)) {
++ case BOL:
++ if (g->reginput != g->regbol)
++ return(0);
++ break;
++ case EOL:
++ if (*g->reginput != '\0')
++ return(0);
++ break;
++ case ANY:
++ if (*g->reginput == '\0')
++ return(0);
++ g->reginput++;
++ break;
++ case EXACTLY: {
++ register int len;
++ register char *opnd;
++
++ opnd = OPERAND(scan);
++ /* Inline the first character, for speed. */
++ if (*opnd != *g->reginput)
++ return(0);
++ len = strlen(opnd);
++ if (len > 1 && strncmp(opnd, g->reginput, len) != 0)
++ return(0);
++ g->reginput += len;
++ }
++ break;
++ case ANYOF:
++ if (*g->reginput == '\0' || strchr(OPERAND(scan), *g->reginput) == NULL)
++ return(0);
++ g->reginput++;
++ break;
++ case ANYBUT:
++ if (*g->reginput == '\0' || strchr(OPERAND(scan), *g->reginput) != NULL)
++ return(0);
++ g->reginput++;
++ break;
++ case NOTHING:
++ case BACK:
++ break;
++ case OPEN+1:
++ case OPEN+2:
++ case OPEN+3:
++ case OPEN+4:
++ case OPEN+5:
++ case OPEN+6:
++ case OPEN+7:
++ case OPEN+8:
++ case OPEN+9: {
++ register int no;
++ register char *save;
++
++ no = OP(scan) - OPEN;
++ save = g->reginput;
++
++ if (regmatch(g, next)) {
++ /*
++ * Don't set startp if some later
++ * invocation of the same parentheses
++ * already has.
++ */
++ if (g->regstartp[no] == NULL)
++ g->regstartp[no] = save;
++ return(1);
++ } else
++ return(0);
++ }
++ break;
++ case CLOSE+1:
++ case CLOSE+2:
++ case CLOSE+3:
++ case CLOSE+4:
++ case CLOSE+5:
++ case CLOSE+6:
++ case CLOSE+7:
++ case CLOSE+8:
++ case CLOSE+9:
++ {
++ register int no;
++ register char *save;
++
++ no = OP(scan) - CLOSE;
++ save = g->reginput;
++
++ if (regmatch(g, next)) {
++ /*
++ * Don't set endp if some later
++ * invocation of the same parentheses
++ * already has.
++ */
++ if (g->regendp[no] == NULL)
++ g->regendp[no] = save;
++ return(1);
++ } else
++ return(0);
++ }
++ break;
++ case BRANCH: {
++ register char *save;
++
++ if (OP(next) != BRANCH) /* No choice. */
++ next = OPERAND(scan); /* Avoid recursion. */
++ else {
++ do {
++ save = g->reginput;
++ if (regmatch(g, OPERAND(scan)))
++ return(1);
++ g->reginput = save;
++ scan = regnext(g, scan);
++ } while (scan != NULL && OP(scan) == BRANCH);
++ return(0);
++ /* NOTREACHED */
++ }
++ }
++ break;
++ case STAR:
++ case PLUS: {
++ register char nextch;
++ register int no;
++ register char *save;
++ register int min;
++
++ /*
++ * Lookahead to avoid useless match attempts
++ * when we know what character comes next.
++ */
++ nextch = '\0';
++ if (OP(next) == EXACTLY)
++ nextch = *OPERAND(next);
++ min = (OP(scan) == STAR) ? 0 : 1;
++ save = g->reginput;
++ no = regrepeat(g, OPERAND(scan));
++ while (no >= min) {
++ /* If it could work, try it. */
++ if (nextch == '\0' || *g->reginput == nextch)
++ if (regmatch(g, next))
++ return(1);
++ /* Couldn't or didn't -- back up. */
++ no--;
++ g->reginput = save + no;
++ }
++ return(0);
++ }
++ break;
++ case END:
++ return(1); /* Success! */
++ break;
++ default:
++ printk("<3>Regexp: memory corruption\n");
++ return(0);
++ break;
++ }
++
++ scan = next;
++ }
++
++ /*
++ * We get here only if there's trouble -- normally "case END" is
++ * the terminating point.
++ */
++ printk("<3>Regexp: corrupted pointers\n");
++ return(0);
++}
++
++/*
++ - regrepeat - repeatedly match something simple, report how many
++ */
++static int
++regrepeat(struct match_globals *g, char *p)
++{
++ register int count = 0;
++ register char *scan;
++ register char *opnd;
++
++ scan = g->reginput;
++ opnd = OPERAND(p);
++ switch (OP(p)) {
++ case ANY:
++ count = strlen(scan);
++ scan += count;
++ break;
++ case EXACTLY:
++ while (*opnd == *scan) {
++ count++;
++ scan++;
++ }
++ break;
++ case ANYOF:
++ while (*scan != '\0' && strchr(opnd, *scan) != NULL) {
++ count++;
++ scan++;
++ }
++ break;
++ case ANYBUT:
++ while (*scan != '\0' && strchr(opnd, *scan) == NULL) {
++ count++;
++ scan++;
++ }
++ break;
++ default: /* Oh dear. Called inappropriately. */
++ printk("<3>Regexp: internal foulup\n");
++ count = 0; /* Best compromise. */
++ break;
++ }
++ g->reginput = scan;
++
++ return(count);
++}
++
++/*
++ - regnext - dig the "next" pointer out of a node
++ */
++static char*
++regnext(struct match_globals *g, char *p)
++{
++ register int offset;
++
++ if (p == &g->regdummy)
++ return(NULL);
++
++ offset = NEXT(p);
++ if (offset == 0)
++ return(NULL);
++
++ if (OP(p) == BACK)
++ return(p-offset);
++ else
++ return(p+offset);
++}
++
++#ifdef DEBUG
++
++STATIC char *regprop();
++
++/*
++ - regdump - dump a regexp onto stdout in vaguely comprehensible form
++ */
++void
++regdump(regexp *r)
++{
++ register char *s;
++ register char op = EXACTLY; /* Arbitrary non-END op. */
++ register char *next;
++ /* extern char *strchr(); */
++
++
++ s = r->program + 1;
++ while (op != END) { /* While that wasn't END last time... */
++ op = OP(s);
++ printf("%2d%s", s-r->program, regprop(s)); /* Where, what. */
++ next = regnext(s);
++ if (next == NULL) /* Next ptr. */
++ printf("(0)");
++ else
++ printf("(%d)", (s-r->program)+(next-s));
++ s += 3;
++ if (op == ANYOF || op == ANYBUT || op == EXACTLY) {
++ /* Literal string, where present. */
++ while (*s != '\0') {
++ putchar(*s);
++ s++;
++ }
++ s++;
++ }
++ putchar('\n');
++ }
++
++ /* Header fields of interest. */
++ if (r->regstart != '\0')
++ printf("start `%c' ", r->regstart);
++ if (r->reganch)
++ printf("anchored ");
++ if (r->regmust != NULL)
++ printf("must have \"%s\"", r->regmust);
++ printf("\n");
++}
++
++/*
++ - regprop - printable representation of opcode
++ */
++static char *
++regprop(char *op)
++{
++#define BUFLEN 50
++ register char *p;
++ static char buf[BUFLEN];
++
++ strcpy(buf, ":");
++
++ switch (OP(op)) {
++ case BOL:
++ p = "BOL";
++ break;
++ case EOL:
++ p = "EOL";
++ break;
++ case ANY:
++ p = "ANY";
++ break;
++ case ANYOF:
++ p = "ANYOF";
++ break;
++ case ANYBUT:
++ p = "ANYBUT";
++ break;
++ case BRANCH:
++ p = "BRANCH";
++ break;
++ case EXACTLY:
++ p = "EXACTLY";
++ break;
++ case NOTHING:
++ p = "NOTHING";
++ break;
++ case BACK:
++ p = "BACK";
++ break;
++ case END:
++ p = "END";
++ break;
++ case OPEN+1:
++ case OPEN+2:
++ case OPEN+3:
++ case OPEN+4:
++ case OPEN+5:
++ case OPEN+6:
++ case OPEN+7:
++ case OPEN+8:
++ case OPEN+9:
++ snprintf(buf+strlen(buf),BUFLEN-strlen(buf), "OPEN%d", OP(op)-OPEN);
++ p = NULL;
++ break;
++ case CLOSE+1:
++ case CLOSE+2:
++ case CLOSE+3:
++ case CLOSE+4:
++ case CLOSE+5:
++ case CLOSE+6:
++ case CLOSE+7:
++ case CLOSE+8:
++ case CLOSE+9:
++ snprintf(buf+strlen(buf),BUFLEN-strlen(buf), "CLOSE%d", OP(op)-CLOSE);
++ p = NULL;
++ break;
++ case STAR:
++ p = "STAR";
++ break;
++ case PLUS:
++ p = "PLUS";
++ break;
++ default:
++ printk("<3>Regexp: corrupted opcode\n");
++ break;
++ }
++ if (p != NULL)
++ strncat(buf, p, BUFLEN-strlen(buf));
++ return(buf);
++}
++#endif
++
++
+--- linux-2.6.18/net/ipv4/netfilter/regexp/regexp.h 1969-12-31 18:00:00.000000000 -0600
++++ linux-2.6.18-layer7/net/ipv4/netfilter/regexp/regexp.h 2006-09-24 10:17:45.000000000 -0500
+@@ -0,0 +1,41 @@
++/*
++ * Definitions etc. for regexp(3) routines.
++ *
++ * Caveat: this is V8 regexp(3) [actually, a reimplementation thereof],
++ * not the System V one.
++ */
++
++#ifndef REGEXP_H
++#define REGEXP_H
++
++
++/*
++http://www.opensource.apple.com/darwinsource/10.3/expect-1/expect/expect.h ,
++which contains a version of this library, says:
++
++ *
++ * NSUBEXP must be at least 10, and no greater than 117 or the parser
++ * will not work properly.
++ *
++
++However, it looks rather like this library is limited to 10. If you think
++otherwise, let us know.
++*/
++
++#define NSUBEXP 10
++typedef struct regexp {
++ char *startp[NSUBEXP];
++ char *endp[NSUBEXP];
++ char regstart; /* Internal use only. */
++ char reganch; /* Internal use only. */
++ char *regmust; /* Internal use only. */
++ int regmlen; /* Internal use only. */
++ char program[1]; /* Unwarranted chumminess with compiler. */
++} regexp;
++
++regexp * regcomp(char *exp, int *patternsize);
++int regexec(regexp *prog, char *string);
++void regsub(regexp *prog, char *source, char *dest);
++void regerror(char *s);
++
++#endif
+--- linux-2.6.18/net/ipv4/netfilter/regexp/regmagic.h 1969-12-31 18:00:00.000000000 -0600
++++ linux-2.6.18-layer7/net/ipv4/netfilter/regexp/regmagic.h 2006-09-24 10:17:45.000000000 -0500
+@@ -0,0 +1,5 @@
++/*
++ * The first byte of the regexp internal "program" is actually this magic
++ * number; the start node begins in the second byte.
++ */
++#define MAGIC 0234
+--- linux-2.6.18/net/ipv4/netfilter/regexp/regsub.c 1969-12-31 18:00:00.000000000 -0600
++++ linux-2.6.18-layer7/net/ipv4/netfilter/regexp/regsub.c 2006-09-24 10:17:45.000000000 -0500
+@@ -0,0 +1,95 @@
++/*
++ * regsub
++ * @(#)regsub.c 1.3 of 2 April 86
++ *
++ * Copyright (c) 1986 by University of Toronto.
++ * Written by Henry Spencer. Not derived from licensed software.
++ *
++ * Permission is granted to anyone to use this software for any
++ * purpose on any computer system, and to redistribute it freely,
++ * subject to the following restrictions:
++ *
++ * 1. The author is not responsible for the consequences of use of
++ * this software, no matter how awful, even if they arise
++ * from defects in it.
++ *
++ * 2. The origin of this software must not be misrepresented, either
++ * by explicit claim or by omission.
++ *
++ * 3. Altered versions must be plainly marked as such, and must not
++ * be misrepresented as being the original software.
++ *
++ *
++ * This code was modified by Ethan Sommer to work within the kernel
++ * (it now uses kmalloc etc..)
++ *
++ */
++#include "regexp.h"
++#include "regmagic.h"
++#include <linux/string.h>
++
++
++#ifndef CHARBITS
++#define UCHARAT(p) ((int)*(unsigned char *)(p))
++#else
++#define UCHARAT(p) ((int)*(p)&CHARBITS)
++#endif
++
++#if 0
++//void regerror(char * s)
++//{
++// printk("regexp(3): %s", s);
++// /* NOTREACHED */
++//}
++#endif
++
++/*
++ - regsub - perform substitutions after a regexp match
++ */
++void
++regsub(regexp * prog, char * source, char * dest)
++{
++ register char *src;
++ register char *dst;
++ register char c;
++ register int no;
++ register int len;
++
++ /* Not necessary and gcc doesn't like it -MLS */
++ /*extern char *strncpy();*/
++
++ if (prog == NULL || source == NULL || dest == NULL) {
++ regerror("NULL parm to regsub");
++ return;
++ }
++ if (UCHARAT(prog->program) != MAGIC) {
++ regerror("damaged regexp fed to regsub");
++ return;
++ }
++
++ src = source;
++ dst = dest;
++ while ((c = *src++) != '\0') {
++ if (c == '&')
++ no = 0;
++ else if (c == '\\' && '0' <= *src && *src <= '9')
++ no = *src++ - '0';
++ else
++ no = -1;
++
++ if (no < 0) { /* Ordinary character. */
++ if (c == '\\' && (*src == '\\' || *src == '&'))
++ c = *src++;
++ *dst++ = c;
++ } else if (prog->startp[no] != NULL && prog->endp[no] != NULL) {
++ len = prog->endp[no] - prog->startp[no];
++ (void) strncpy(dst, prog->startp[no], len);
++ dst += len;
++ if (len != 0 && *(dst-1) == '\0') { /* strncpy hit NUL. */
++ regerror("damaged match string");
++ return;
++ }
++ }
++ }
++ *dst++ = '\0';
++}
diff --git a/packages/linux/linux-magicbox-2.6.18.6/magicbox2-ide-cf_2.6.18.patch b/packages/linux/linux-magicbox-2.6.18.6/magicbox2-ide-cf_2.6.18.patch
new file mode 100644
index 0000000000..113d5c4f85
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.18.6/magicbox2-ide-cf_2.6.18.patch
@@ -0,0 +1,221 @@
+diff -Nru linux-2.6.18/drivers/ide/Kconfig linux-2.6.18-magicbox2-cf-ide/drivers/ide/Kconfig
+--- linux-2.6.18/drivers/ide/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-magicbox2-cf-ide/drivers/ide/Kconfig 2006-12-28 19:33:33.000000000 +0100
+@@ -926,6 +926,24 @@
+
+ If unsure, say N.
+
++config BLK_DEV_MAGICBOX_IDE
++ bool "MagicBox 2.0 CF IDE support"
++ depends on 4xx && IDE=y && BLK_DEV_IDE=y
++ help
++ This option provides support for IDE on MagicBox 2.0 boards.
++
++ If unsure, say N.
++
++config BLK_DEV_MAGICBOX_PROTOTYPE
++ bool "Compile driver for prototype boards"
++ depends on BLK_DEV_MAGICBOX_IDE
++ help
++ Compile driver for first revision of MagicBox 2.0 boards
++ (wiring changes).
++
++ If unsure, say N.
++
++
+ choice
+ prompt "Type of MPC8xx IDE interface"
+ depends on BLK_DEV_MPC8xx_IDE
+diff -Nru linux-2.6.18/drivers/ide/Makefile linux-2.6.18-magicbox2-cf-ide/drivers/ide/Makefile
+--- linux-2.6.18/drivers/ide/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-magicbox2-cf-ide/drivers/ide/Makefile 2006-12-28 19:27:00.000000000 +0100
+@@ -36,6 +36,7 @@
+ # built-in only drivers from ppc/
+ ide-core-$(CONFIG_BLK_DEV_MPC8xx_IDE) += ppc/mpc8xx.o
+ ide-core-$(CONFIG_BLK_DEV_IDE_PMAC) += ppc/pmac.o
++ide-core-$(CONFIG_BLK_DEV_MAGICBOX_IDE) += ppc/magicbox_ide.o
+
+ # built-in only drivers from h8300/
+ ide-core-$(CONFIG_H8300) += h8300/ide-h8300.o
+diff -Nru linux-2.6.18/drivers/ide/ide.c linux-2.6.18-magicbox2-cf-ide/drivers/ide/ide.c
+--- linux-2.6.18/drivers/ide/ide.c 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-magicbox2-cf-ide/drivers/ide/ide.c 2006-12-28 19:27:00.000000000 +0100
+@@ -1836,6 +1836,13 @@
+ #ifdef CONFIG_H8300
+ h8300_ide_init();
+ #endif
++#ifdef CONFIG_BLK_DEV_MAGICBOX_IDE
++ {
++ extern void ide_magicbox_init();
++ ide_magicbox_init();
++ }
++#endif
++
+ }
+
+ void ide_register_subdriver(ide_drive_t *drive, ide_driver_t *driver)
+diff -Nru linux-2.6.18/drivers/ide/ppc/magicbox_ide.c linux-2.6.18-magicbox2-cf-ide/drivers/ide/ppc/magicbox_ide.c
+--- linux-2.6.18/drivers/ide/ppc/magicbox_ide.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-magicbox2-cf-ide/drivers/ide/ppc/magicbox_ide.c 2006-12-30 21:00:18.000000000 +0100
+@@ -0,0 +1,161 @@
++/* Driver for MagicBox 2.0 onboard CompactFlash adapter.
++ * Written by Wojtek Kaniewski <wojtekka@toxygen.net>
++ *
++ * GNU General Public License.
++ */
++
++#include <linux/types.h>
++#include <linux/mm.h>
++#include <linux/interrupt.h>
++#include <linux/blkdev.h>
++#include <linux/hdreg.h>
++#include <linux/ide.h>
++#include <linux/delay.h>
++
++
++#define UIC0_PR 0xc4
++#define UIC0_TR 0xc5
++#define IRQ 25
++
++static int ide_offsets[IDE_NR_PORTS] = {0, 2, 4, 6, 8, 10, 12, 14, -1, -1};
++
++static u8 magicbox_ide_inb (unsigned long port)
++{
++ return (u8) (readw((void __iomem *) port) >> 8) & 255;
++}
++
++static u16 magicbox_ide_inw (unsigned long port)
++{
++ return (u16) readw((void __iomem *) port);
++}
++
++static void magicbox_ide_insw (unsigned long port, void *addr, u32 count)
++{
++ u16 *ptr;
++
++ for (ptr = addr; count--; ptr++)
++ *ptr = readw((void __iomem *) port);
++}
++
++static u32 magicbox_ide_inl (unsigned long port)
++{
++ return (u32) readl((void __iomem *) port);
++}
++
++static void magicbox_ide_insl (unsigned long port, void *addr, u32 count)
++{
++ u32 *ptr;
++
++ for (ptr = addr; count--; ptr++)
++ *ptr = readl((void __iomem *) port);
++}
++
++static void magicbox_ide_outb (u8 value, unsigned long port)
++{
++ writew(value << 8, (void __iomem *) port);
++}
++
++static void magicbox_ide_outbsync (ide_drive_t *drive, u8 value, unsigned long port)
++{
++ writew(value << 8, (void __iomem *) port);
++}
++
++static void magicbox_ide_outw (u16 value, unsigned long port)
++{
++ writew(value, (void __iomem *) port);
++}
++
++static void magicbox_ide_outsw (unsigned long port, void *addr, u32 count)
++{
++ u16 *ptr;
++
++ for (ptr = addr; count--; ptr++)
++ writew(*ptr, (void __iomem *) port);
++}
++
++static void magicbox_ide_outl (u32 value, unsigned long port)
++{
++ writel(value, (void __iomem *) port);
++}
++
++static void magicbox_ide_outsl (unsigned long port, void *addr, u32 count)
++{
++ u32 *ptr;
++
++ for (ptr = addr; count--; ptr++)
++ writel(*ptr, (void __iomem *) port);
++}
++
++
++static void __init ide_magicbox_register(unsigned long addr,
++ unsigned long caddr, int irq)
++{
++ hw_regs_t hw;
++ ide_hwif_t *hwif;
++
++ memset(&hw, 0, sizeof(hw));
++ ide_setup_ports(&hw, addr, ide_offsets, caddr + 12, 0, NULL,irq);
++
++ if (ide_register_hw(&hw, &hwif) != -1)
++ {
++ printk(KERN_NOTICE "magicbox-ide: Registered IDE-CF driver\n");
++ hwif->mmio = 2;
++ hwif->drives[0].unmask = 1;
++ hwif->OUTB = magicbox_ide_outb;
++ hwif->OUTBSYNC = magicbox_ide_outbsync;
++ hwif->OUTW = magicbox_ide_outw;
++ hwif->OUTL = magicbox_ide_outl;
++ hwif->OUTSW = magicbox_ide_outsw;
++ hwif->OUTSL = magicbox_ide_outsl;
++ hwif->INB = magicbox_ide_inb;
++ hwif->INW = magicbox_ide_inw;
++ hwif->INL = magicbox_ide_inl;
++ hwif->INSW = magicbox_ide_insw;
++ hwif->INSL = magicbox_ide_insl;
++ }
++}
++
++void __init ide_magicbox_init(void)
++{
++ volatile u16 *addr;
++ volatile u16 *caddr;
++
++ /* Turn on PerWE instead of PCIsomething */
++ mtdcr(DCRN_CPC0_PCI_BASE, mfdcr(DCRN_CPC0_PCI_BASE) | (0x80000000L >> 27));
++
++#ifdef CONFIG_BLK_DEV_MAGICBOX_PROTOTYPE
++ /* PerCS2 (CF's CS0): base 0xff100000, 16-bit, rw */
++ mtdcr(DCRN_EBC_BASE, 2);
++ mtdcr(DCRN_EBC_BASE + 1, 0xff11a000);
++ mtdcr(DCRN_EBC_BASE, 0x12);
++ mtdcr(DCRN_EBC_BASE + 1, 0x080bd800);
++
++ /* PerCS1 (CF's CS1): base 0xff200000, 16-bit, rw */
++ mtdcr(DCRN_EBC_BASE, 1);
++ mtdcr(DCRN_EBC_BASE + 1, 0xff21a000);
++ mtdcr(DCRN_EBC_BASE, 0x11);
++ mtdcr(DCRN_EBC_BASE + 1, 0x080bd800);
++#else
++ /* PerCS1 (CF's CS0): base 0xff100000, 16-bit, rw */
++ mtdcr(DCRN_EBC_BASE, 1);
++ mtdcr(DCRN_EBC_BASE + 1, 0xff11a000);
++ mtdcr(DCRN_EBC_BASE, 0x11);
++ mtdcr(DCRN_EBC_BASE + 1, 0x080bd800);
++
++ /* PerCS2 (CF's CS1): base 0xff200000, 16-bit, rw */
++ mtdcr(DCRN_EBC_BASE, 2);
++ mtdcr(DCRN_EBC_BASE + 1, 0xff21a000);
++ mtdcr(DCRN_EBC_BASE, 0x12);
++ mtdcr(DCRN_EBC_BASE + 1, 0x080bd800);
++#endif
++
++ /* Remap physical address space */
++ addr = ioremap_nocache(0xff100000, 4096);
++ caddr = ioremap_nocache(0xff200000, 4096);
++
++ /* Set interrupt to low-to-high-edge-triggered */
++ mtdcr(UIC0_TR, mfdcr(UIC0_TR) & ~(0x80000000L >> IRQ));
++ mtdcr(UIC0_PR, mfdcr(UIC0_PR) | (0x80000000L >> IRQ));
++
++ ide_magicbox_register((unsigned long)addr, (unsigned long)caddr, IRQ);
++}
diff --git a/packages/linux/linux-magicbox-2.6.18.6/squashfs-lzma-support.patch b/packages/linux/linux-magicbox-2.6.18.6/squashfs-lzma-support.patch
new file mode 100644
index 0000000000..212386e7bc
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.18.6/squashfs-lzma-support.patch
@@ -0,0 +1,890 @@
+diff -Naur linux-2.6.18.orig/fs/squashfs/LzmaDecode.c linux-2.6.18/fs/squashfs/LzmaDecode.c
+--- linux-2.6.18.orig/fs/squashfs/LzmaDecode.c 1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.18/fs/squashfs/LzmaDecode.c 2006-10-14 03:56:43.000000000 -0700
+@@ -0,0 +1,663 @@
++/*
++ LzmaDecode.c
++ LZMA Decoder
++
++ LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25)
++ http://www.7-zip.org/
++
++ LZMA SDK is licensed under two licenses:
++ 1) GNU Lesser General Public License (GNU LGPL)
++ 2) Common Public License (CPL)
++ It means that you can select one of these two licenses and
++ follow rules of that license.
++
++ SPECIAL EXCEPTION:
++ Igor Pavlov, as the author of this code, expressly permits you to
++ statically or dynamically link your code (or bind by name) to the
++ interfaces of this file without subjecting your linked code to the
++ terms of the CPL or GNU LGPL. Any modifications or additions
++ to this file, however, are subject to the LGPL or CPL terms.
++*/
++
++#include "LzmaDecode.h"
++
++#ifndef Byte
++#define Byte unsigned char
++#endif
++
++#define kNumTopBits 24
++#define kTopValue ((UInt32)1 << kNumTopBits)
++
++#define kNumBitModelTotalBits 11
++#define kBitModelTotal (1 << kNumBitModelTotalBits)
++#define kNumMoveBits 5
++
++typedef struct _CRangeDecoder
++{
++ Byte *Buffer;
++ Byte *BufferLim;
++ UInt32 Range;
++ UInt32 Code;
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *InCallback;
++ int Result;
++ #endif
++ int ExtraBytes;
++} CRangeDecoder;
++
++Byte RangeDecoderReadByte(CRangeDecoder *rd)
++{
++ if (rd->Buffer == rd->BufferLim)
++ {
++ #ifdef _LZMA_IN_CB
++ UInt32 size;
++ rd->Result = rd->InCallback->Read(rd->InCallback, &rd->Buffer, &size);
++ rd->BufferLim = rd->Buffer + size;
++ if (size == 0)
++ #endif
++ {
++ rd->ExtraBytes = 1;
++ return 0xFF;
++ }
++ }
++ return (*rd->Buffer++);
++}
++
++/* #define ReadByte (*rd->Buffer++) */
++#define ReadByte (RangeDecoderReadByte(rd))
++
++void RangeDecoderInit(CRangeDecoder *rd,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback
++ #else
++ Byte *stream, UInt32 bufferSize
++ #endif
++ )
++{
++ int i;
++ #ifdef _LZMA_IN_CB
++ rd->InCallback = inCallback;
++ rd->Buffer = rd->BufferLim = 0;
++ #else
++ rd->Buffer = stream;
++ rd->BufferLim = stream + bufferSize;
++ #endif
++ rd->ExtraBytes = 0;
++ rd->Code = 0;
++ rd->Range = (0xFFFFFFFF);
++ for(i = 0; i < 5; i++)
++ rd->Code = (rd->Code << 8) | ReadByte;
++}
++
++#define RC_INIT_VAR UInt32 range = rd->Range; UInt32 code = rd->Code;
++#define RC_FLUSH_VAR rd->Range = range; rd->Code = code;
++#define RC_NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | ReadByte; }
++
++UInt32 RangeDecoderDecodeDirectBits(CRangeDecoder *rd, int numTotalBits)
++{
++ RC_INIT_VAR
++ UInt32 result = 0;
++ int i;
++ for (i = numTotalBits; i > 0; i--)
++ {
++ /* UInt32 t; */
++ range >>= 1;
++
++ result <<= 1;
++ if (code >= range)
++ {
++ code -= range;
++ result |= 1;
++ }
++ /*
++ t = (code - range) >> 31;
++ t &= 1;
++ code -= range & (t - 1);
++ result = (result + result) | (1 - t);
++ */
++ RC_NORMALIZE
++ }
++ RC_FLUSH_VAR
++ return result;
++}
++
++int RangeDecoderBitDecode(CProb *prob, CRangeDecoder *rd)
++{
++ UInt32 bound = (rd->Range >> kNumBitModelTotalBits) * *prob;
++ if (rd->Code < bound)
++ {
++ rd->Range = bound;
++ *prob += (kBitModelTotal - *prob) >> kNumMoveBits;
++ if (rd->Range < kTopValue)
++ {
++ rd->Code = (rd->Code << 8) | ReadByte;
++ rd->Range <<= 8;
++ }
++ return 0;
++ }
++ else
++ {
++ rd->Range -= bound;
++ rd->Code -= bound;
++ *prob -= (*prob) >> kNumMoveBits;
++ if (rd->Range < kTopValue)
++ {
++ rd->Code = (rd->Code << 8) | ReadByte;
++ rd->Range <<= 8;
++ }
++ return 1;
++ }
++}
++
++#define RC_GET_BIT2(prob, mi, A0, A1) \
++ UInt32 bound = (range >> kNumBitModelTotalBits) * *prob; \
++ if (code < bound) \
++ { A0; range = bound; *prob += (kBitModelTotal - *prob) >> kNumMoveBits; mi <<= 1; } \
++ else \
++ { A1; range -= bound; code -= bound; *prob -= (*prob) >> kNumMoveBits; mi = (mi + mi) + 1; } \
++ RC_NORMALIZE
++
++#define RC_GET_BIT(prob, mi) RC_GET_BIT2(prob, mi, ; , ;)
++
++int RangeDecoderBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd)
++{
++ int mi = 1;
++ int i;
++ #ifdef _LZMA_LOC_OPT
++ RC_INIT_VAR
++ #endif
++ for(i = numLevels; i > 0; i--)
++ {
++ #ifdef _LZMA_LOC_OPT
++ CProb *prob = probs + mi;
++ RC_GET_BIT(prob, mi)
++ #else
++ mi = (mi + mi) + RangeDecoderBitDecode(probs + mi, rd);
++ #endif
++ }
++ #ifdef _LZMA_LOC_OPT
++ RC_FLUSH_VAR
++ #endif
++ return mi - (1 << numLevels);
++}
++
++int RangeDecoderReverseBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd)
++{
++ int mi = 1;
++ int i;
++ int symbol = 0;
++ #ifdef _LZMA_LOC_OPT
++ RC_INIT_VAR
++ #endif
++ for(i = 0; i < numLevels; i++)
++ {
++ #ifdef _LZMA_LOC_OPT
++ CProb *prob = probs + mi;
++ RC_GET_BIT2(prob, mi, ; , symbol |= (1 << i))
++ #else
++ int bit = RangeDecoderBitDecode(probs + mi, rd);
++ mi = mi + mi + bit;
++ symbol |= (bit << i);
++ #endif
++ }
++ #ifdef _LZMA_LOC_OPT
++ RC_FLUSH_VAR
++ #endif
++ return symbol;
++}
++
++Byte LzmaLiteralDecode(CProb *probs, CRangeDecoder *rd)
++{
++ int symbol = 1;
++ #ifdef _LZMA_LOC_OPT
++ RC_INIT_VAR
++ #endif
++ do
++ {
++ #ifdef _LZMA_LOC_OPT
++ CProb *prob = probs + symbol;
++ RC_GET_BIT(prob, symbol)
++ #else
++ symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd);
++ #endif
++ }
++ while (symbol < 0x100);
++ #ifdef _LZMA_LOC_OPT
++ RC_FLUSH_VAR
++ #endif
++ return symbol;
++}
++
++Byte LzmaLiteralDecodeMatch(CProb *probs, CRangeDecoder *rd, Byte matchByte)
++{
++ int symbol = 1;
++ #ifdef _LZMA_LOC_OPT
++ RC_INIT_VAR
++ #endif
++ do
++ {
++ int bit;
++ int matchBit = (matchByte >> 7) & 1;
++ matchByte <<= 1;
++ #ifdef _LZMA_LOC_OPT
++ {
++ CProb *prob = probs + ((1 + matchBit) << 8) + symbol;
++ RC_GET_BIT2(prob, symbol, bit = 0, bit = 1)
++ }
++ #else
++ bit = RangeDecoderBitDecode(probs + ((1 + matchBit) << 8) + symbol, rd);
++ symbol = (symbol << 1) | bit;
++ #endif
++ if (matchBit != bit)
++ {
++ while (symbol < 0x100)
++ {
++ #ifdef _LZMA_LOC_OPT
++ CProb *prob = probs + symbol;
++ RC_GET_BIT(prob, symbol)
++ #else
++ symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd);
++ #endif
++ }
++ break;
++ }
++ }
++ while (symbol < 0x100);
++ #ifdef _LZMA_LOC_OPT
++ RC_FLUSH_VAR
++ #endif
++ return symbol;
++}
++
++#define kNumPosBitsMax 4
++#define kNumPosStatesMax (1 << kNumPosBitsMax)
++
++#define kLenNumLowBits 3
++#define kLenNumLowSymbols (1 << kLenNumLowBits)
++#define kLenNumMidBits 3
++#define kLenNumMidSymbols (1 << kLenNumMidBits)
++#define kLenNumHighBits 8
++#define kLenNumHighSymbols (1 << kLenNumHighBits)
++
++#define LenChoice 0
++#define LenChoice2 (LenChoice + 1)
++#define LenLow (LenChoice2 + 1)
++#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
++#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
++#define kNumLenProbs (LenHigh + kLenNumHighSymbols)
++
++int LzmaLenDecode(CProb *p, CRangeDecoder *rd, int posState)
++{
++ if(RangeDecoderBitDecode(p + LenChoice, rd) == 0)
++ return RangeDecoderBitTreeDecode(p + LenLow +
++ (posState << kLenNumLowBits), kLenNumLowBits, rd);
++ if(RangeDecoderBitDecode(p + LenChoice2, rd) == 0)
++ return kLenNumLowSymbols + RangeDecoderBitTreeDecode(p + LenMid +
++ (posState << kLenNumMidBits), kLenNumMidBits, rd);
++ return kLenNumLowSymbols + kLenNumMidSymbols +
++ RangeDecoderBitTreeDecode(p + LenHigh, kLenNumHighBits, rd);
++}
++
++#define kNumStates 12
++
++#define kStartPosModelIndex 4
++#define kEndPosModelIndex 14
++#define kNumFullDistances (1 << (kEndPosModelIndex >> 1))
++
++#define kNumPosSlotBits 6
++#define kNumLenToPosStates 4
++
++#define kNumAlignBits 4
++#define kAlignTableSize (1 << kNumAlignBits)
++
++#define kMatchMinLen 2
++
++#define IsMatch 0
++#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax))
++#define IsRepG0 (IsRep + kNumStates)
++#define IsRepG1 (IsRepG0 + kNumStates)
++#define IsRepG2 (IsRepG1 + kNumStates)
++#define IsRep0Long (IsRepG2 + kNumStates)
++#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax))
++#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
++#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex)
++#define LenCoder (Align + kAlignTableSize)
++#define RepLenCoder (LenCoder + kNumLenProbs)
++#define Literal (RepLenCoder + kNumLenProbs)
++
++#if Literal != LZMA_BASE_SIZE
++StopCompilingDueBUG
++#endif
++
++#ifdef _LZMA_OUT_READ
++
++typedef struct _LzmaVarState
++{
++ CRangeDecoder RangeDecoder;
++ Byte *Dictionary;
++ UInt32 DictionarySize;
++ UInt32 DictionaryPos;
++ UInt32 GlobalPos;
++ UInt32 Reps[4];
++ int lc;
++ int lp;
++ int pb;
++ int State;
++ int PreviousIsMatch;
++ int RemainLen;
++} LzmaVarState;
++
++int LzmaDecoderInit(
++ unsigned char *buffer, UInt32 bufferSize,
++ int lc, int lp, int pb,
++ unsigned char *dictionary, UInt32 dictionarySize,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback
++ #else
++ unsigned char *inStream, UInt32 inSize
++ #endif
++ )
++{
++ LzmaVarState *vs = (LzmaVarState *)buffer;
++ CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
++ UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
++ UInt32 i;
++ if (bufferSize < numProbs * sizeof(CProb) + sizeof(LzmaVarState))
++ return LZMA_RESULT_NOT_ENOUGH_MEM;
++ vs->Dictionary = dictionary;
++ vs->DictionarySize = dictionarySize;
++ vs->DictionaryPos = 0;
++ vs->GlobalPos = 0;
++ vs->Reps[0] = vs->Reps[1] = vs->Reps[2] = vs->Reps[3] = 1;
++ vs->lc = lc;
++ vs->lp = lp;
++ vs->pb = pb;
++ vs->State = 0;
++ vs->PreviousIsMatch = 0;
++ vs->RemainLen = 0;
++ dictionary[dictionarySize - 1] = 0;
++ for (i = 0; i < numProbs; i++)
++ p[i] = kBitModelTotal >> 1;
++ RangeDecoderInit(&vs->RangeDecoder,
++ #ifdef _LZMA_IN_CB
++ inCallback
++ #else
++ inStream, inSize
++ #endif
++ );
++ return LZMA_RESULT_OK;
++}
++
++int LzmaDecode(unsigned char *buffer,
++ unsigned char *outStream, UInt32 outSize,
++ UInt32 *outSizeProcessed)
++{
++ LzmaVarState *vs = (LzmaVarState *)buffer;
++ CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
++ CRangeDecoder rd = vs->RangeDecoder;
++ int state = vs->State;
++ int previousIsMatch = vs->PreviousIsMatch;
++ Byte previousByte;
++ UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3];
++ UInt32 nowPos = 0;
++ UInt32 posStateMask = (1 << (vs->pb)) - 1;
++ UInt32 literalPosMask = (1 << (vs->lp)) - 1;
++ int lc = vs->lc;
++ int len = vs->RemainLen;
++ UInt32 globalPos = vs->GlobalPos;
++
++ Byte *dictionary = vs->Dictionary;
++ UInt32 dictionarySize = vs->DictionarySize;
++ UInt32 dictionaryPos = vs->DictionaryPos;
++
++ if (len == -1)
++ {
++ *outSizeProcessed = 0;
++ return LZMA_RESULT_OK;
++ }
++
++ while(len > 0 && nowPos < outSize)
++ {
++ UInt32 pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos];
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ len--;
++ }
++ if (dictionaryPos == 0)
++ previousByte = dictionary[dictionarySize - 1];
++ else
++ previousByte = dictionary[dictionaryPos - 1];
++#else
++
++int LzmaDecode(
++ Byte *buffer, UInt32 bufferSize,
++ int lc, int lp, int pb,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback,
++ #else
++ unsigned char *inStream, UInt32 inSize,
++ #endif
++ unsigned char *outStream, UInt32 outSize,
++ UInt32 *outSizeProcessed)
++{
++ UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
++ CProb *p = (CProb *)buffer;
++ CRangeDecoder rd;
++ UInt32 i;
++ int state = 0;
++ int previousIsMatch = 0;
++ Byte previousByte = 0;
++ UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1;
++ UInt32 nowPos = 0;
++ UInt32 posStateMask = (1 << pb) - 1;
++ UInt32 literalPosMask = (1 << lp) - 1;
++ int len = 0;
++ if (bufferSize < numProbs * sizeof(CProb))
++ return LZMA_RESULT_NOT_ENOUGH_MEM;
++ for (i = 0; i < numProbs; i++)
++ p[i] = kBitModelTotal >> 1;
++ RangeDecoderInit(&rd,
++ #ifdef _LZMA_IN_CB
++ inCallback
++ #else
++ inStream, inSize
++ #endif
++ );
++#endif
++
++ *outSizeProcessed = 0;
++ while(nowPos < outSize)
++ {
++ int posState = (int)(
++ (nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ & posStateMask);
++ #ifdef _LZMA_IN_CB
++ if (rd.Result != LZMA_RESULT_OK)
++ return rd.Result;
++ #endif
++ if (rd.ExtraBytes != 0)
++ return LZMA_RESULT_DATA_ERROR;
++ if (RangeDecoderBitDecode(p + IsMatch + (state << kNumPosBitsMax) + posState, &rd) == 0)
++ {
++ CProb *probs = p + Literal + (LZMA_LIT_SIZE *
++ (((
++ (nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ & literalPosMask) << lc) + (previousByte >> (8 - lc))));
++
++ if (state < 4) state = 0;
++ else if (state < 10) state -= 3;
++ else state -= 6;
++ if (previousIsMatch)
++ {
++ Byte matchByte;
++ #ifdef _LZMA_OUT_READ
++ UInt32 pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ matchByte = dictionary[pos];
++ #else
++ matchByte = outStream[nowPos - rep0];
++ #endif
++ previousByte = LzmaLiteralDecodeMatch(probs, &rd, matchByte);
++ previousIsMatch = 0;
++ }
++ else
++ previousByte = LzmaLiteralDecode(probs, &rd);
++ outStream[nowPos++] = previousByte;
++ #ifdef _LZMA_OUT_READ
++ dictionary[dictionaryPos] = previousByte;
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ #endif
++ }
++ else
++ {
++ previousIsMatch = 1;
++ if (RangeDecoderBitDecode(p + IsRep + state, &rd) == 1)
++ {
++ if (RangeDecoderBitDecode(p + IsRepG0 + state, &rd) == 0)
++ {
++ if (RangeDecoderBitDecode(p + IsRep0Long + (state << kNumPosBitsMax) + posState, &rd) == 0)
++ {
++ #ifdef _LZMA_OUT_READ
++ UInt32 pos;
++ #endif
++ if (
++ (nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ == 0)
++ return LZMA_RESULT_DATA_ERROR;
++ state = state < 7 ? 9 : 11;
++ #ifdef _LZMA_OUT_READ
++ pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ previousByte = dictionary[pos];
++ dictionary[dictionaryPos] = previousByte;
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ #else
++ previousByte = outStream[nowPos - rep0];
++ #endif
++ outStream[nowPos++] = previousByte;
++ continue;
++ }
++ }
++ else
++ {
++ UInt32 distance;
++ if(RangeDecoderBitDecode(p + IsRepG1 + state, &rd) == 0)
++ distance = rep1;
++ else
++ {
++ if(RangeDecoderBitDecode(p + IsRepG2 + state, &rd) == 0)
++ distance = rep2;
++ else
++ {
++ distance = rep3;
++ rep3 = rep2;
++ }
++ rep2 = rep1;
++ }
++ rep1 = rep0;
++ rep0 = distance;
++ }
++ len = LzmaLenDecode(p + RepLenCoder, &rd, posState);
++ state = state < 7 ? 8 : 11;
++ }
++ else
++ {
++ int posSlot;
++ rep3 = rep2;
++ rep2 = rep1;
++ rep1 = rep0;
++ state = state < 7 ? 7 : 10;
++ len = LzmaLenDecode(p + LenCoder, &rd, posState);
++ posSlot = RangeDecoderBitTreeDecode(p + PosSlot +
++ ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) <<
++ kNumPosSlotBits), kNumPosSlotBits, &rd);
++ if (posSlot >= kStartPosModelIndex)
++ {
++ int numDirectBits = ((posSlot >> 1) - 1);
++ rep0 = ((2 | ((UInt32)posSlot & 1)) << numDirectBits);
++ if (posSlot < kEndPosModelIndex)
++ {
++ rep0 += RangeDecoderReverseBitTreeDecode(
++ p + SpecPos + rep0 - posSlot - 1, numDirectBits, &rd);
++ }
++ else
++ {
++ rep0 += RangeDecoderDecodeDirectBits(&rd,
++ numDirectBits - kNumAlignBits) << kNumAlignBits;
++ rep0 += RangeDecoderReverseBitTreeDecode(p + Align, kNumAlignBits, &rd);
++ }
++ }
++ else
++ rep0 = posSlot;
++ rep0++;
++ }
++ if (rep0 == (UInt32)(0))
++ {
++ /* it's for stream version */
++ len = -1;
++ break;
++ }
++ if (rep0 > nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ {
++ return LZMA_RESULT_DATA_ERROR;
++ }
++ len += kMatchMinLen;
++ do
++ {
++ #ifdef _LZMA_OUT_READ
++ UInt32 pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ previousByte = dictionary[pos];
++ dictionary[dictionaryPos] = previousByte;
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ #else
++ previousByte = outStream[nowPos - rep0];
++ #endif
++ outStream[nowPos++] = previousByte;
++ len--;
++ }
++ while(len > 0 && nowPos < outSize);
++ }
++ }
++
++ #ifdef _LZMA_OUT_READ
++ vs->RangeDecoder = rd;
++ vs->DictionaryPos = dictionaryPos;
++ vs->GlobalPos = globalPos + nowPos;
++ vs->Reps[0] = rep0;
++ vs->Reps[1] = rep1;
++ vs->Reps[2] = rep2;
++ vs->Reps[3] = rep3;
++ vs->State = state;
++ vs->PreviousIsMatch = previousIsMatch;
++ vs->RemainLen = len;
++ #endif
++
++ *outSizeProcessed = nowPos;
++ return LZMA_RESULT_OK;
++}
+diff -Naur linux-2.6.18.orig/fs/squashfs/LzmaDecode.h linux-2.6.18/fs/squashfs/LzmaDecode.h
+--- linux-2.6.18.orig/fs/squashfs/LzmaDecode.h 1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.18/fs/squashfs/LzmaDecode.h 2006-10-14 03:56:43.000000000 -0700
+@@ -0,0 +1,100 @@
++/*
++ LzmaDecode.h
++ LZMA Decoder interface
++
++ LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25)
++ http://www.7-zip.org/
++
++ LZMA SDK is licensed under two licenses:
++ 1) GNU Lesser General Public License (GNU LGPL)
++ 2) Common Public License (CPL)
++ It means that you can select one of these two licenses and
++ follow rules of that license.
++
++ SPECIAL EXCEPTION:
++ Igor Pavlov, as the author of this code, expressly permits you to
++ statically or dynamically link your code (or bind by name) to the
++ interfaces of this file without subjecting your linked code to the
++ terms of the CPL or GNU LGPL. Any modifications or additions
++ to this file, however, are subject to the LGPL or CPL terms.
++*/
++
++#ifndef __LZMADECODE_H
++#define __LZMADECODE_H
++
++/* #define _LZMA_IN_CB */
++/* Use callback for input data */
++
++/* #define _LZMA_OUT_READ */
++/* Use read function for output data */
++
++/* #define _LZMA_PROB32 */
++/* It can increase speed on some 32-bit CPUs,
++ but memory usage will be doubled in that case */
++
++/* #define _LZMA_LOC_OPT */
++/* Enable local speed optimizations inside code */
++
++#ifndef UInt32
++#ifdef _LZMA_UINT32_IS_ULONG
++#define UInt32 unsigned long
++#else
++#define UInt32 unsigned int
++#endif
++#endif
++
++#ifdef _LZMA_PROB32
++#define CProb UInt32
++#else
++#define CProb unsigned short
++#endif
++
++#define LZMA_RESULT_OK 0
++#define LZMA_RESULT_DATA_ERROR 1
++#define LZMA_RESULT_NOT_ENOUGH_MEM 2
++
++#ifdef _LZMA_IN_CB
++typedef struct _ILzmaInCallback
++{
++ int (*Read)(void *object, unsigned char **buffer, UInt32 *bufferSize);
++} ILzmaInCallback;
++#endif
++
++#define LZMA_BASE_SIZE 1846
++#define LZMA_LIT_SIZE 768
++
++/*
++bufferSize = (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)))* sizeof(CProb)
++bufferSize += 100 in case of _LZMA_OUT_READ
++by default CProb is unsigned short,
++but if specify _LZMA_PROB_32, CProb will be UInt32(unsigned int)
++*/
++
++#ifdef _LZMA_OUT_READ
++int LzmaDecoderInit(
++ unsigned char *buffer, UInt32 bufferSize,
++ int lc, int lp, int pb,
++ unsigned char *dictionary, UInt32 dictionarySize,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback
++ #else
++ unsigned char *inStream, UInt32 inSize
++ #endif
++);
++#endif
++
++int LzmaDecode(
++ unsigned char *buffer,
++ #ifndef _LZMA_OUT_READ
++ UInt32 bufferSize,
++ int lc, int lp, int pb,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback,
++ #else
++ unsigned char *inStream, UInt32 inSize,
++ #endif
++ #endif
++ unsigned char *outStream, UInt32 outSize,
++ UInt32 *outSizeProcessed);
++
++#endif
+diff -Naur linux-2.6.18.orig/fs/squashfs/inode.c linux-2.6.18/fs/squashfs/inode.c
+--- linux-2.6.18.orig/fs/squashfs/inode.c 2006-10-14 03:56:28.000000000 -0700
++++ linux-2.6.18/fs/squashfs/inode.c 2006-10-14 03:56:43.000000000 -0700
+@@ -4,6 +4,9 @@
+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
+ * Phillip Lougher <phillip@lougher.org.uk>
+ *
++ * LZMA decompressor support added by Oleg I. Vdovikin
++ * Copyright (c) 2005 Oleg I.Vdovikin <oleg@cs.msu.su>
++ *
+ * 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,
+@@ -21,6 +24,7 @@
+ * inode.c
+ */
+
++#define SQUASHFS_LZMA
+ #include <linux/types.h>
+ #include <linux/squashfs_fs.h>
+ #include <linux/module.h>
+@@ -44,6 +48,19 @@
+
+ #include "squashfs.h"
+
++#ifdef SQUASHFS_LZMA
++#include "LzmaDecode.h"
++
++/* default LZMA settings, should be in sync with mksquashfs */
++#define LZMA_LC 3
++#define LZMA_LP 0
++#define LZMA_PB 2
++
++#define LZMA_WORKSPACE_SIZE ((LZMA_BASE_SIZE + \
++ (LZMA_LIT_SIZE << (LZMA_LC + LZMA_LP))) * sizeof(CProb))
++
++#endif
++
+ static void squashfs_put_super(struct super_block *);
+ static int squashfs_statfs(struct dentry *, struct kstatfs *);
+ static int squashfs_symlink_readpage(struct file *file, struct page *page);
+@@ -63,6 +80,10 @@
+ static int squashfs_get_sb(struct file_system_type *, int, const char *, void *,
+ struct vfsmount *);
+
++#ifdef SQUASHFS_LZMA
++static unsigned char lzma_workspace[LZMA_WORKSPACE_SIZE];
++#endif
++
+ static struct file_system_type squashfs_fs_type = {
+ .owner = THIS_MODULE,
+ .name = "squashfs",
+@@ -246,6 +267,15 @@
+ if (compressed) {
+ int zlib_err;
+
++#ifdef SQUASHFS_LZMA
++ if ((zlib_err = LzmaDecode(lzma_workspace,
++ LZMA_WORKSPACE_SIZE, LZMA_LC, LZMA_LP, LZMA_PB,
++ c_buffer, c_byte, buffer, msblk->read_size, &bytes)) != LZMA_RESULT_OK)
++ {
++ ERROR("lzma returned unexpected result 0x%x\n", zlib_err);
++ bytes = 0;
++ }
++#else
+ msblk->stream.next_in = c_buffer;
+ msblk->stream.avail_in = c_byte;
+ msblk->stream.next_out = buffer;
+@@ -260,7 +290,7 @@
+ bytes = 0;
+ } else
+ bytes = msblk->stream.total_out;
+-
++#endif
+ up(&msblk->read_data_mutex);
+ }
+
+@@ -964,10 +994,12 @@
+ }
+ memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info));
+ msblk = s->s_fs_info;
++#ifndef SQUASHFS_LZMA
+ if (!(msblk->stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
+ ERROR("Failed to allocate zlib workspace\n");
+ goto failure;
+ }
++#endif
+ sblk = &msblk->sblk;
+
+ msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
+@@ -1140,7 +1172,9 @@
+ kfree(msblk->read_data);
+ kfree(msblk->block_cache);
+ kfree(msblk->fragment_index_2);
++#ifndef SQUASHFS_LZMA
+ vfree(msblk->stream.workspace);
++#endif
+ kfree(s->s_fs_info);
+ s->s_fs_info = NULL;
+ return -EINVAL;
+@@ -2060,7 +2094,9 @@
+ kfree(sbi->fragment_index);
+ kfree(sbi->fragment_index_2);
+ kfree(sbi->meta_index);
++#ifndef SQUASHFS_LZMA
+ vfree(sbi->stream.workspace);
++#endif
+ kfree(s->s_fs_info);
+ s->s_fs_info = NULL;
+ }
+
+diff -Naur linux-2.6.18.orig/fs/squashfs/Makefile linux-2.6.18/fs/squashfs/Makefile
+--- linux-2.6.18.orig/fs/squashfs/Makefile 2006-10-14 03:56:28.000000000 -0700
++++ linux-2.6.18/fs/squashfs/Makefile 2006-10-14 03:56:43.000000000 -0700
+@@ -5,3 +5,4 @@
+ obj-$(CONFIG_SQUASHFS) += squashfs.o
+ squashfs-y += inode.o
+ squashfs-y += squashfs2_0.o
++squashfs-y += LzmaDecode.o
diff --git a/packages/linux/linux-magicbox-2.6.18.6/squashfs3.1-patch b/packages/linux/linux-magicbox-2.6.18.6/squashfs3.1-patch
new file mode 100644
index 0000000000..9f24221335
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.18.6/squashfs3.1-patch
@@ -0,0 +1,4227 @@
+diff --new-file -urp linux-2.6.18/fs/Kconfig linux-2.6.18-squashfs3.1/fs/Kconfig
+--- linux-2.6.18/fs/Kconfig 2006-08-11 00:03:11.000000000 +0100
++++ linux-2.6.18-squashfs3.1/fs/Kconfig 2006-08-21 00:13:12.000000000 +0100
+@@ -1249,6 +1249,71 @@ config CRAMFS
+
+ If unsure, say N.
+
++config SQUASHFS
++ tristate "SquashFS 3.1 - Squashed file system support"
++ select ZLIB_INFLATE
++ help
++ Saying Y here includes support for SquashFS 3.1 (a Compressed Read-Only File
++ System). Squashfs is a highly compressed read-only filesystem for Linux.
++ It uses zlib compression to compress both files, inodes and directories.
++ Inodes in the system are very small and all blocks are packed to minimise
++ data overhead. Block sizes greater than 4K are supported up to a maximum of 64K.
++ SquashFS 3.1 supports 64 bit filesystems and files (larger than 4GB), full
++ uid/gid information, hard links and timestamps.
++
++ Squashfs is intended for general read-only filesystem use, for archival
++ use (i.e. in cases where a .tar.gz file may be used), and in embedded
++ systems where low overhead is needed. Further information and filesystem tools
++ are available from http://squashfs.sourceforge.net.
++
++ If you want to compile this as a module ( = code which can be
++ inserted in and removed from the running kernel whenever you want),
++ say M here and read <file:Documentation/modules.txt>. The module
++ will be called squashfs. Note that the root file system (the one
++ containing the directory /) cannot be compiled as a module.
++
++ If unsure, say N.
++
++config SQUASHFS_EMBEDDED
++
++ bool "Additional options for memory-constrained systems"
++ depends on SQUASHFS
++ default n
++ help
++ Saying Y here allows you to specify cache sizes and how Squashfs
++ allocates memory. This is only intended for memory constrained
++ systems.
++
++ If unsure, say N.
++
++config SQUASHFS_FRAGMENT_CACHE_SIZE
++ int "Number of fragments cached" if SQUASHFS_EMBEDDED
++ depends on SQUASHFS
++ default "3"
++ help
++ By default SquashFS caches the last 3 fragments read from
++ the filesystem. Increasing this amount may mean SquashFS
++ has to re-read fragments less often from disk, at the expense
++ of extra system memory. Decreasing this amount will mean
++ SquashFS uses less memory at the expense of extra reads from disk.
++
++ Note there must be at least one cached fragment. Anything
++ much more than three will probably not make much difference.
++
++config SQUASHFS_VMALLOC
++ bool "Use Vmalloc rather than Kmalloc" if SQUASHFS_EMBEDDED
++ depends on SQUASHFS
++ default n
++ help
++ By default SquashFS uses kmalloc to obtain fragment cache memory.
++ Kmalloc memory is the standard kernel allocator, but it can fail
++ on memory constrained systems. Because of the way Vmalloc works,
++ Vmalloc can succeed when kmalloc fails. Specifying this option
++ will make SquashFS always use Vmalloc to allocate the
++ fragment cache memory.
++
++ If unsure, say N.
++
+ config VXFS_FS
+ tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
+ help
+diff --new-file -urp linux-2.6.18/fs/Makefile linux-2.6.18-squashfs3.1/fs/Makefile
+--- linux-2.6.18/fs/Makefile 2006-08-11 00:03:12.000000000 +0100
++++ linux-2.6.18-squashfs3.1/fs/Makefile 2006-08-21 00:13:12.000000000 +0100
+@@ -57,6 +57,7 @@ obj-$(CONFIG_EXT3_FS) += ext3/ # Before
+ obj-$(CONFIG_JBD) += jbd/
+ obj-$(CONFIG_EXT2_FS) += ext2/
+ obj-$(CONFIG_CRAMFS) += cramfs/
++obj-$(CONFIG_SQUASHFS) += squashfs/
+ obj-$(CONFIG_RAMFS) += ramfs/
+ obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
+ obj-$(CONFIG_CODA_FS) += coda/
+diff --new-file -urp linux-2.6.18/fs/squashfs/inode.c linux-2.6.18-squashfs3.1/fs/squashfs/inode.c
+--- linux-2.6.18/fs/squashfs/inode.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-squashfs3.1/fs/squashfs/inode.c 2006-08-21 00:15:29.000000000 +0100
+@@ -0,0 +1,2156 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * inode.c
++ */
++
++#include <linux/types.h>
++#include <linux/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/errno.h>
++#include <linux/slab.h>
++#include <linux/zlib.h>
++#include <linux/fs.h>
++#include <linux/smp_lock.h>
++#include <linux/slab.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.h>
++#include <linux/buffer_head.h>
++#include <linux/vfs.h>
++#include <linux/init.h>
++#include <linux/dcache.h>
++#include <linux/wait.h>
++#include <linux/blkdev.h>
++#include <linux/vmalloc.h>
++#include <asm/uaccess.h>
++#include <asm/semaphore.h>
++
++#include "squashfs.h"
++
++static void squashfs_put_super(struct super_block *);
++static int squashfs_statfs(struct dentry *, struct kstatfs *);
++static int squashfs_symlink_readpage(struct file *file, struct page *page);
++static int squashfs_readpage(struct file *file, struct page *page);
++static int squashfs_readpage4K(struct file *file, struct page *page);
++static int squashfs_readdir(struct file *, void *, filldir_t);
++static struct inode *squashfs_alloc_inode(struct super_block *sb);
++static void squashfs_destroy_inode(struct inode *inode);
++static int init_inodecache(void);
++static void destroy_inodecache(void);
++static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
++ struct nameidata *);
++static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode);
++static long long read_blocklist(struct inode *inode, int index,
++ int readahead_blks, char *block_list,
++ unsigned short **block_p, unsigned int *bsize);
++static int squashfs_get_sb(struct file_system_type *, int, const char *, void *,
++ struct vfsmount *);
++
++static struct file_system_type squashfs_fs_type = {
++ .owner = THIS_MODULE,
++ .name = "squashfs",
++ .get_sb = squashfs_get_sb,
++ .kill_sb = kill_block_super,
++ .fs_flags = FS_REQUIRES_DEV
++};
++
++static unsigned char squashfs_filetype_table[] = {
++ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
++};
++
++static struct super_operations squashfs_ops = {
++ .alloc_inode = squashfs_alloc_inode,
++ .destroy_inode = squashfs_destroy_inode,
++ .statfs = squashfs_statfs,
++ .put_super = squashfs_put_super,
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_symlink_aops = {
++ .readpage = squashfs_symlink_readpage
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_aops = {
++ .readpage = squashfs_readpage
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_aops_4K = {
++ .readpage = squashfs_readpage4K
++};
++
++static struct file_operations squashfs_dir_ops = {
++ .read = generic_read_dir,
++ .readdir = squashfs_readdir
++};
++
++SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
++ .lookup = squashfs_lookup
++};
++
++
++static struct buffer_head *get_block_length(struct super_block *s,
++ int *cur_index, int *offset, int *c_byte)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ unsigned short temp;
++ struct buffer_head *bh;
++
++ if (!(bh = sb_bread(s, *cur_index)))
++ goto out;
++
++ if (msblk->devblksize - *offset == 1) {
++ if (msblk->swap)
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ (bh->b_data + *offset));
++ else
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ (bh->b_data + *offset));
++ brelse(bh);
++ if (!(bh = sb_bread(s, ++(*cur_index))))
++ goto out;
++ if (msblk->swap)
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ bh->b_data);
++ else
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ bh->b_data);
++ *c_byte = temp;
++ *offset = 1;
++ } else {
++ if (msblk->swap) {
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ (bh->b_data + *offset));
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ (bh->b_data + *offset + 1));
++ } else {
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ (bh->b_data + *offset));
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ (bh->b_data + *offset + 1));
++ }
++ *c_byte = temp;
++ *offset += 2;
++ }
++
++ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) {
++ if (*offset == msblk->devblksize) {
++ brelse(bh);
++ if (!(bh = sb_bread(s, ++(*cur_index))))
++ goto out;
++ *offset = 0;
++ }
++ if (*((unsigned char *) (bh->b_data + *offset)) !=
++ SQUASHFS_MARKER_BYTE) {
++ ERROR("Metadata block marker corrupt @ %x\n",
++ *cur_index);
++ brelse(bh);
++ goto out;
++ }
++ (*offset)++;
++ }
++ return bh;
++
++out:
++ return NULL;
++}
++
++
++SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer,
++ long long index, unsigned int length,
++ long long *next_index)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct buffer_head *bh[((SQUASHFS_FILE_MAX_SIZE - 1) >>
++ msblk->devblksize_log2) + 2];
++ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1);
++ unsigned int cur_index = index >> msblk->devblksize_log2;
++ int bytes, avail_bytes, b = 0, k;
++ char *c_buffer;
++ unsigned int compressed;
++ unsigned int c_byte = length;
++
++ if (c_byte) {
++ bytes = msblk->devblksize - offset;
++ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
++ c_buffer = compressed ? msblk->read_data : buffer;
++ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
++
++ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
++ ? "" : "un", (unsigned int) c_byte);
++
++ if (!(bh[0] = sb_getblk(s, cur_index)))
++ goto block_release;
++
++ for (b = 1; bytes < c_byte; b++) {
++ if (!(bh[b] = sb_getblk(s, ++cur_index)))
++ goto block_release;
++ bytes += msblk->devblksize;
++ }
++ ll_rw_block(READ, b, bh);
++ } else {
++ if (!(bh[0] = get_block_length(s, &cur_index, &offset,
++ &c_byte)))
++ goto read_failure;
++
++ bytes = msblk->devblksize - offset;
++ compressed = SQUASHFS_COMPRESSED(c_byte);
++ c_buffer = compressed ? msblk->read_data : buffer;
++ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
++
++ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
++ ? "" : "un", (unsigned int) c_byte);
++
++ for (b = 1; bytes < c_byte; b++) {
++ if (!(bh[b] = sb_getblk(s, ++cur_index)))
++ goto block_release;
++ bytes += msblk->devblksize;
++ }
++ ll_rw_block(READ, b - 1, bh + 1);
++ }
++
++ if (compressed)
++ down(&msblk->read_data_mutex);
++
++ for (bytes = 0, k = 0; k < b; k++) {
++ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
++ msblk->devblksize - offset :
++ c_byte - bytes;
++ wait_on_buffer(bh[k]);
++ if (!buffer_uptodate(bh[k]))
++ goto block_release;
++ memcpy(c_buffer + bytes, bh[k]->b_data + offset, avail_bytes);
++ bytes += avail_bytes;
++ offset = 0;
++ brelse(bh[k]);
++ }
++
++ /*
++ * uncompress block
++ */
++ if (compressed) {
++ int zlib_err;
++
++ msblk->stream.next_in = c_buffer;
++ msblk->stream.avail_in = c_byte;
++ msblk->stream.next_out = buffer;
++ msblk->stream.avail_out = msblk->read_size;
++
++ if (((zlib_err = zlib_inflateInit(&msblk->stream)) != Z_OK) ||
++ ((zlib_err = zlib_inflate(&msblk->stream, Z_FINISH))
++ != Z_STREAM_END) || ((zlib_err =
++ zlib_inflateEnd(&msblk->stream)) != Z_OK)) {
++ ERROR("zlib_fs returned unexpected result 0x%x\n",
++ zlib_err);
++ bytes = 0;
++ } else
++ bytes = msblk->stream.total_out;
++
++ up(&msblk->read_data_mutex);
++ }
++
++ if (next_index)
++ *next_index = index + c_byte + (length ? 0 :
++ (SQUASHFS_CHECK_DATA(msblk->sblk.flags)
++ ? 3 : 2));
++ return bytes;
++
++block_release:
++ while (--b >= 0)
++ brelse(bh[b]);
++
++read_failure:
++ ERROR("sb_bread failed reading block 0x%x\n", cur_index);
++ return 0;
++}
++
++
++SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, char *buffer,
++ long long block, unsigned int offset,
++ int length, long long *next_block,
++ unsigned int *next_offset)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ int n, i, bytes, return_length = length;
++ long long next_index;
++
++ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset);
++
++ while ( 1 ) {
++ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
++ if (msblk->block_cache[i].block == block)
++ break;
++
++ down(&msblk->block_cache_mutex);
++
++ if (i == SQUASHFS_CACHED_BLKS) {
++ /* read inode header block */
++ for (i = msblk->next_cache, n = SQUASHFS_CACHED_BLKS;
++ n ; n --, i = (i + 1) %
++ SQUASHFS_CACHED_BLKS)
++ if (msblk->block_cache[i].block !=
++ SQUASHFS_USED_BLK)
++ break;
++
++ if (n == 0) {
++ wait_queue_t wait;
++
++ init_waitqueue_entry(&wait, current);
++ add_wait_queue(&msblk->waitq, &wait);
++ set_current_state(TASK_UNINTERRUPTIBLE);
++ up(&msblk->block_cache_mutex);
++ schedule();
++ set_current_state(TASK_RUNNING);
++ remove_wait_queue(&msblk->waitq, &wait);
++ continue;
++ }
++ msblk->next_cache = (i + 1) % SQUASHFS_CACHED_BLKS;
++
++ if (msblk->block_cache[i].block ==
++ SQUASHFS_INVALID_BLK) {
++ if (!(msblk->block_cache[i].data =
++ kmalloc(SQUASHFS_METADATA_SIZE,
++ GFP_KERNEL))) {
++ ERROR("Failed to allocate cache"
++ "block\n");
++ up(&msblk->block_cache_mutex);
++ goto out;
++ }
++ }
++
++ msblk->block_cache[i].block = SQUASHFS_USED_BLK;
++ up(&msblk->block_cache_mutex);
++
++ if (!(msblk->block_cache[i].length =
++ squashfs_read_data(s,
++ msblk->block_cache[i].data,
++ block, 0, &next_index))) {
++ ERROR("Unable to read cache block [%llx:%x]\n",
++ block, offset);
++ goto out;
++ }
++
++ down(&msblk->block_cache_mutex);
++ wake_up(&msblk->waitq);
++ msblk->block_cache[i].block = block;
++ msblk->block_cache[i].next_index = next_index;
++ TRACE("Read cache block [%llx:%x]\n", block, offset);
++ }
++
++ if (msblk->block_cache[i].block != block) {
++ up(&msblk->block_cache_mutex);
++ continue;
++ }
++
++ if ((bytes = msblk->block_cache[i].length - offset) >= length) {
++ if (buffer)
++ memcpy(buffer, msblk->block_cache[i].data +
++ offset, length);
++ if (msblk->block_cache[i].length - offset == length) {
++ *next_block = msblk->block_cache[i].next_index;
++ *next_offset = 0;
++ } else {
++ *next_block = block;
++ *next_offset = offset + length;
++ }
++ up(&msblk->block_cache_mutex);
++ goto finish;
++ } else {
++ if (buffer) {
++ memcpy(buffer, msblk->block_cache[i].data +
++ offset, bytes);
++ buffer += bytes;
++ }
++ block = msblk->block_cache[i].next_index;
++ up(&msblk->block_cache_mutex);
++ length -= bytes;
++ offset = 0;
++ }
++ }
++
++finish:
++ return return_length;
++out:
++ return 0;
++}
++
++
++static int get_fragment_location(struct super_block *s, unsigned int fragment,
++ long long *fragment_start_block,
++ unsigned int *fragment_size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ long long start_block =
++ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)];
++ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment);
++ struct squashfs_fragment_entry fragment_entry;
++
++ if (msblk->swap) {
++ struct squashfs_fragment_entry sfragment_entry;
++
++ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
++ start_block, offset,
++ sizeof(sfragment_entry), &start_block,
++ &offset))
++ goto out;
++ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry);
++ } else
++ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
++ start_block, offset,
++ sizeof(fragment_entry), &start_block,
++ &offset))
++ goto out;
++
++ *fragment_start_block = fragment_entry.start_block;
++ *fragment_size = fragment_entry.size;
++
++ return 1;
++
++out:
++ return 0;
++}
++
++
++SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, struct
++ squashfs_fragment_cache *fragment)
++{
++ down(&msblk->fragment_mutex);
++ fragment->locked --;
++ wake_up(&msblk->fragment_wait_queue);
++ up(&msblk->fragment_mutex);
++}
++
++
++SQSH_EXTERN struct squashfs_fragment_cache *get_cached_fragment(struct super_block
++ *s, long long start_block,
++ int length)
++{
++ int i, n;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++
++ while ( 1 ) {
++ down(&msblk->fragment_mutex);
++
++ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS &&
++ msblk->fragment[i].block != start_block; i++);
++
++ if (i == SQUASHFS_CACHED_FRAGMENTS) {
++ for (i = msblk->next_fragment, n =
++ SQUASHFS_CACHED_FRAGMENTS; n &&
++ msblk->fragment[i].locked; n--, i = (i + 1) %
++ SQUASHFS_CACHED_FRAGMENTS);
++
++ if (n == 0) {
++ wait_queue_t wait;
++
++ init_waitqueue_entry(&wait, current);
++ add_wait_queue(&msblk->fragment_wait_queue,
++ &wait);
++ set_current_state(TASK_UNINTERRUPTIBLE);
++ up(&msblk->fragment_mutex);
++ schedule();
++ set_current_state(TASK_RUNNING);
++ remove_wait_queue(&msblk->fragment_wait_queue,
++ &wait);
++ continue;
++ }
++ msblk->next_fragment = (msblk->next_fragment + 1) %
++ SQUASHFS_CACHED_FRAGMENTS;
++
++ if (msblk->fragment[i].data == NULL)
++ if (!(msblk->fragment[i].data = SQUASHFS_ALLOC
++ (SQUASHFS_FILE_MAX_SIZE))) {
++ ERROR("Failed to allocate fragment "
++ "cache block\n");
++ up(&msblk->fragment_mutex);
++ goto out;
++ }
++
++ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
++ msblk->fragment[i].locked = 1;
++ up(&msblk->fragment_mutex);
++
++ if (!(msblk->fragment[i].length = squashfs_read_data(s,
++ msblk->fragment[i].data,
++ start_block, length, NULL))) {
++ ERROR("Unable to read fragment cache block "
++ "[%llx]\n", start_block);
++ msblk->fragment[i].locked = 0;
++ goto out;
++ }
++
++ msblk->fragment[i].block = start_block;
++ TRACE("New fragment %d, start block %lld, locked %d\n",
++ i, msblk->fragment[i].block,
++ msblk->fragment[i].locked);
++ break;
++ }
++
++ msblk->fragment[i].locked++;
++ up(&msblk->fragment_mutex);
++ TRACE("Got fragment %d, start block %lld, locked %d\n", i,
++ msblk->fragment[i].block,
++ msblk->fragment[i].locked);
++ break;
++ }
++
++ return &msblk->fragment[i];
++
++out:
++ return NULL;
++}
++
++
++static struct inode *squashfs_new_inode(struct super_block *s,
++ struct squashfs_base_inode_header *inodeb)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct inode *i = new_inode(s);
++
++ if (i) {
++ i->i_ino = inodeb->inode_number;
++ i->i_mtime.tv_sec = inodeb->mtime;
++ i->i_atime.tv_sec = inodeb->mtime;
++ i->i_ctime.tv_sec = inodeb->mtime;
++ i->i_uid = msblk->uid[inodeb->uid];
++ i->i_mode = inodeb->mode;
++ i->i_size = 0;
++ if (inodeb->guid == SQUASHFS_GUIDS)
++ i->i_gid = i->i_uid;
++ else
++ i->i_gid = msblk->guid[inodeb->guid];
++ }
++
++ return i;
++}
++
++
++static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode)
++{
++ struct inode *i;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long block = SQUASHFS_INODE_BLK(inode) +
++ sblk->inode_table_start;
++ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
++ long long next_block;
++ unsigned int next_offset;
++ union squashfs_inode_header id, sid;
++ struct squashfs_base_inode_header *inodeb = &id.base,
++ *sinodeb = &sid.base;
++
++ TRACE("Entered squashfs_iget\n");
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
++ offset, sizeof(*sinodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb,
++ sizeof(*sinodeb));
++ } else
++ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
++ offset, sizeof(*inodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ switch(inodeb->inode_type) {
++ case SQUASHFS_FILE_TYPE: {
++ unsigned int frag_size;
++ long long frag_blk;
++ struct squashfs_reg_inode_header *inodep = &id.reg;
++ struct squashfs_reg_inode_header *sinodep = &sid.reg;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ frag_blk = SQUASHFS_INVALID_BLK;
++ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
++ !get_fragment_location(s,
++ inodep->fragment, &frag_blk, &frag_size))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = 1;
++ i->i_size = inodep->file_size;
++ i->i_fop = &generic_ro_fops;
++ i->i_mode |= S_IFREG;
++ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++ i->i_blksize = PAGE_CACHE_SIZE;
++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++ if (sblk->block_size > 4096)
++ i->i_data.a_ops = &squashfs_aops;
++ else
++ i->i_data.a_ops = &squashfs_aops_4K;
++
++ TRACE("File inode %x:%x, start_block %llx, "
++ "block_list_start %llx, offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, next_block,
++ next_offset);
++ break;
++ }
++ case SQUASHFS_LREG_TYPE: {
++ unsigned int frag_size;
++ long long frag_blk;
++ struct squashfs_lreg_inode_header *inodep = &id.lreg;
++ struct squashfs_lreg_inode_header *sinodep = &sid.lreg;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ frag_blk = SQUASHFS_INVALID_BLK;
++ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
++ !get_fragment_location(s,
++ inodep->fragment, &frag_blk, &frag_size))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->file_size;
++ i->i_fop = &generic_ro_fops;
++ i->i_mode |= S_IFREG;
++ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++ i->i_blksize = PAGE_CACHE_SIZE;
++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++ if (sblk->block_size > 4096)
++ i->i_data.a_ops = &squashfs_aops;
++ else
++ i->i_data.a_ops = &squashfs_aops_4K;
++
++ TRACE("File inode %x:%x, start_block %llx, "
++ "block_list_start %llx, offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, next_block,
++ next_offset);
++ break;
++ }
++ case SQUASHFS_DIR_TYPE: {
++ struct squashfs_dir_inode_header *inodep = &id.dir;
++ struct squashfs_dir_inode_header *sinodep = &sid.dir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops;
++ i->i_fop = &squashfs_dir_ops;
++ i->i_mode |= S_IFDIR;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
++ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
++
++ TRACE("Directory inode %x:%x, start_block %x, offset "
++ "%x\n", SQUASHFS_INODE_BLK(inode),
++ offset, inodep->start_block,
++ inodep->offset);
++ break;
++ }
++ case SQUASHFS_LDIR_TYPE: {
++ struct squashfs_ldir_inode_header *inodep = &id.ldir;
++ struct squashfs_ldir_inode_header *sinodep = &sid.ldir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops;
++ i->i_fop = &squashfs_dir_ops;
++ i->i_mode |= S_IFDIR;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
++ SQUASHFS_I(i)->u.s2.directory_index_offset =
++ next_offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count =
++ inodep->i_count;
++ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
++
++ TRACE("Long directory inode %x:%x, start_block %x, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, inodep->offset);
++ break;
++ }
++ case SQUASHFS_SYMLINK_TYPE: {
++ struct squashfs_symlink_inode_header *inodep =
++ &id.symlink;
++ struct squashfs_symlink_inode_header *sinodep =
++ &sid.symlink;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->symlink_size;
++ i->i_op = &page_symlink_inode_operations;
++ i->i_data.a_ops = &squashfs_symlink_aops;
++ i->i_mode |= S_IFLNK;
++ SQUASHFS_I(i)->start_block = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++
++ TRACE("Symbolic link inode %x:%x, start_block %llx, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ next_block, next_offset);
++ break;
++ }
++ case SQUASHFS_BLKDEV_TYPE:
++ case SQUASHFS_CHRDEV_TYPE: {
++ struct squashfs_dev_inode_header *inodep = &id.dev;
++ struct squashfs_dev_inode_header *sinodep = &sid.dev;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_mode |= (inodeb->inode_type ==
++ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
++ S_IFBLK;
++ init_special_inode(i, i->i_mode,
++ old_decode_dev(inodep->rdev));
++
++ TRACE("Device inode %x:%x, rdev %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->rdev);
++ break;
++ }
++ case SQUASHFS_FIFO_TYPE:
++ case SQUASHFS_SOCKET_TYPE: {
++ struct squashfs_ipc_inode_header *inodep = &id.ipc;
++ struct squashfs_ipc_inode_header *sinodep = &sid.ipc;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
++ ? S_IFIFO : S_IFSOCK;
++ init_special_inode(i, i->i_mode, 0);
++ break;
++ }
++ default:
++ ERROR("Unknown inode type %d in squashfs_iget!\n",
++ inodeb->inode_type);
++ goto failed_read1;
++ }
++
++ insert_inode_hash(i);
++ return i;
++
++failed_read:
++ ERROR("Unable to read inode [%llx:%x]\n", block, offset);
++
++failed_read1:
++ return NULL;
++}
++
++
++static int read_fragment_index_table(struct super_block *s)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ /* Allocate fragment index table */
++ if (!(msblk->fragment_index = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES
++ (sblk->fragments), GFP_KERNEL))) {
++ ERROR("Failed to allocate uid/gid table\n");
++ return 0;
++ }
++
++ if (SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments) &&
++ !squashfs_read_data(s, (char *)
++ msblk->fragment_index,
++ sblk->fragment_table_start,
++ SQUASHFS_FRAGMENT_INDEX_BYTES
++ (sblk->fragments) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read fragment index table\n");
++ return 0;
++ }
++
++ if (msblk->swap) {
++ int i;
++ long long fragment;
++
++ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES(sblk->fragments);
++ i++) {
++ SQUASHFS_SWAP_FRAGMENT_INDEXES((&fragment),
++ &msblk->fragment_index[i], 1);
++ msblk->fragment_index[i] = fragment;
++ }
++ }
++
++ return 1;
++}
++
++
++static int supported_squashfs_filesystem(struct squashfs_sb_info *msblk, int silent)
++{
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ msblk->iget = squashfs_iget;
++ msblk->read_blocklist = read_blocklist;
++ msblk->read_fragment_index_table = read_fragment_index_table;
++
++ if (sblk->s_major == 1) {
++ if (!squashfs_1_0_supported(msblk)) {
++ SERROR("Major/Minor mismatch, Squashfs 1.0 filesystems "
++ "are unsupported\n");
++ SERROR("Please recompile with "
++ "Squashfs 1.0 support enabled\n");
++ return 0;
++ }
++ } else if (sblk->s_major == 2) {
++ if (!squashfs_2_0_supported(msblk)) {
++ SERROR("Major/Minor mismatch, Squashfs 2.0 filesystems "
++ "are unsupported\n");
++ SERROR("Please recompile with "
++ "Squashfs 2.0 support enabled\n");
++ return 0;
++ }
++ } else if(sblk->s_major != SQUASHFS_MAJOR || sblk->s_minor >
++ SQUASHFS_MINOR) {
++ SERROR("Major/Minor mismatch, trying to mount newer %d.%d "
++ "filesystem\n", sblk->s_major, sblk->s_minor);
++ SERROR("Please update your kernel\n");
++ return 0;
++ }
++
++ return 1;
++}
++
++
++static int squashfs_fill_super(struct super_block *s, void *data, int silent)
++{
++ struct squashfs_sb_info *msblk;
++ struct squashfs_super_block *sblk;
++ int i;
++ char b[BDEVNAME_SIZE];
++ struct inode *root;
++
++ TRACE("Entered squashfs_read_superblock\n");
++
++ if (!(s->s_fs_info = kmalloc(sizeof(struct squashfs_sb_info),
++ GFP_KERNEL))) {
++ ERROR("Failed to allocate superblock\n");
++ goto failure;
++ }
++ memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info));
++ msblk = s->s_fs_info;
++ if (!(msblk->stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
++ ERROR("Failed to allocate zlib workspace\n");
++ goto failure;
++ }
++ sblk = &msblk->sblk;
++
++ msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
++ msblk->devblksize_log2 = ffz(~msblk->devblksize);
++
++ init_MUTEX(&msblk->read_data_mutex);
++ init_MUTEX(&msblk->read_page_mutex);
++ init_MUTEX(&msblk->block_cache_mutex);
++ init_MUTEX(&msblk->fragment_mutex);
++ init_MUTEX(&msblk->meta_index_mutex);
++
++ init_waitqueue_head(&msblk->waitq);
++ init_waitqueue_head(&msblk->fragment_wait_queue);
++
++ if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
++ sizeof(struct squashfs_super_block) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ SERROR("unable to read superblock\n");
++ goto failed_mount;
++ }
++
++ /* Check it is a SQUASHFS superblock */
++ msblk->swap = 0;
++ if ((s->s_magic = sblk->s_magic) != SQUASHFS_MAGIC) {
++ if (sblk->s_magic == SQUASHFS_MAGIC_SWAP) {
++ struct squashfs_super_block ssblk;
++
++ WARNING("Mounting a different endian SQUASHFS "
++ "filesystem on %s\n", bdevname(s->s_bdev, b));
++
++ SQUASHFS_SWAP_SUPER_BLOCK(&ssblk, sblk);
++ memcpy(sblk, &ssblk, sizeof(struct squashfs_super_block));
++ msblk->swap = 1;
++ } else {
++ SERROR("Can't find a SQUASHFS superblock on %s\n",
++ bdevname(s->s_bdev, b));
++ goto failed_mount;
++ }
++ }
++
++ /* Check the MAJOR & MINOR versions */
++ if(!supported_squashfs_filesystem(msblk, silent))
++ goto failed_mount;
++
++ TRACE("Found valid superblock on %s\n", bdevname(s->s_bdev, b));
++ TRACE("Inodes are %scompressed\n",
++ SQUASHFS_UNCOMPRESSED_INODES
++ (sblk->flags) ? "un" : "");
++ TRACE("Data is %scompressed\n",
++ SQUASHFS_UNCOMPRESSED_DATA(sblk->flags)
++ ? "un" : "");
++ TRACE("Check data is %s present in the filesystem\n",
++ SQUASHFS_CHECK_DATA(sblk->flags) ?
++ "" : "not");
++ TRACE("Filesystem size %lld bytes\n", sblk->bytes_used);
++ TRACE("Block size %d\n", sblk->block_size);
++ TRACE("Number of inodes %d\n", sblk->inodes);
++ if (sblk->s_major > 1)
++ TRACE("Number of fragments %d\n", sblk->fragments);
++ TRACE("Number of uids %d\n", sblk->no_uids);
++ TRACE("Number of gids %d\n", sblk->no_guids);
++ TRACE("sblk->inode_table_start %llx\n", sblk->inode_table_start);
++ TRACE("sblk->directory_table_start %llx\n", sblk->directory_table_start);
++ if (sblk->s_major > 1)
++ TRACE("sblk->fragment_table_start %llx\n",
++ sblk->fragment_table_start);
++ TRACE("sblk->uid_start %llx\n", sblk->uid_start);
++
++ s->s_flags |= MS_RDONLY;
++ s->s_op = &squashfs_ops;
++
++ /* Init inode_table block pointer array */
++ if (!(msblk->block_cache = kmalloc(sizeof(struct squashfs_cache) *
++ SQUASHFS_CACHED_BLKS, GFP_KERNEL))) {
++ ERROR("Failed to allocate block cache\n");
++ goto failed_mount;
++ }
++
++ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
++ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
++
++ msblk->next_cache = 0;
++
++ /* Allocate read_data block */
++ msblk->read_size = (sblk->block_size < SQUASHFS_METADATA_SIZE) ?
++ SQUASHFS_METADATA_SIZE :
++ sblk->block_size;
++
++ if (!(msblk->read_data = kmalloc(msblk->read_size, GFP_KERNEL))) {
++ ERROR("Failed to allocate read_data block\n");
++ goto failed_mount;
++ }
++
++ /* Allocate read_page block */
++ if (!(msblk->read_page = kmalloc(sblk->block_size, GFP_KERNEL))) {
++ ERROR("Failed to allocate read_page block\n");
++ goto failed_mount;
++ }
++
++ /* Allocate uid and gid tables */
++ if (!(msblk->uid = kmalloc((sblk->no_uids + sblk->no_guids) *
++ sizeof(unsigned int), GFP_KERNEL))) {
++ ERROR("Failed to allocate uid/gid table\n");
++ goto failed_mount;
++ }
++ msblk->guid = msblk->uid + sblk->no_uids;
++
++ if (msblk->swap) {
++ unsigned int suid[sblk->no_uids + sblk->no_guids];
++
++ if (!squashfs_read_data(s, (char *) &suid, sblk->uid_start,
++ ((sblk->no_uids + sblk->no_guids) *
++ sizeof(unsigned int)) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read uid/gid table\n");
++ goto failed_mount;
++ }
++
++ SQUASHFS_SWAP_DATA(msblk->uid, suid, (sblk->no_uids +
++ sblk->no_guids), (sizeof(unsigned int) * 8));
++ } else
++ if (!squashfs_read_data(s, (char *) msblk->uid, sblk->uid_start,
++ ((sblk->no_uids + sblk->no_guids) *
++ sizeof(unsigned int)) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read uid/gid table\n");
++ goto failed_mount;
++ }
++
++
++ if (sblk->s_major == 1 && squashfs_1_0_supported(msblk))
++ goto allocate_root;
++
++ if (!(msblk->fragment = kmalloc(sizeof(struct squashfs_fragment_cache) *
++ SQUASHFS_CACHED_FRAGMENTS, GFP_KERNEL))) {
++ ERROR("Failed to allocate fragment block cache\n");
++ goto failed_mount;
++ }
++
++ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++) {
++ msblk->fragment[i].locked = 0;
++ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
++ msblk->fragment[i].data = NULL;
++ }
++
++ msblk->next_fragment = 0;
++
++ /* Allocate fragment index table */
++ if (msblk->read_fragment_index_table(s) == 0)
++ goto failed_mount;
++
++allocate_root:
++ if ((root = (msblk->iget)(s, sblk->root_inode)) == NULL)
++ goto failed_mount;
++
++ if ((s->s_root = d_alloc_root(root)) == NULL) {
++ ERROR("Root inode create failed\n");
++ iput(root);
++ goto failed_mount;
++ }
++
++ TRACE("Leaving squashfs_read_super\n");
++ return 0;
++
++failed_mount:
++ kfree(msblk->fragment_index);
++ kfree(msblk->fragment);
++ kfree(msblk->uid);
++ kfree(msblk->read_page);
++ kfree(msblk->read_data);
++ kfree(msblk->block_cache);
++ kfree(msblk->fragment_index_2);
++ vfree(msblk->stream.workspace);
++ kfree(s->s_fs_info);
++ s->s_fs_info = NULL;
++ return -EINVAL;
++
++failure:
++ return -ENOMEM;
++}
++
++
++static int squashfs_statfs(struct dentry *dentry, struct kstatfs *buf)
++{
++ struct squashfs_sb_info *msblk = dentry->d_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ TRACE("Entered squashfs_statfs\n");
++
++ buf->f_type = SQUASHFS_MAGIC;
++ buf->f_bsize = sblk->block_size;
++ buf->f_blocks = ((sblk->bytes_used - 1) >> sblk->block_log) + 1;
++ buf->f_bfree = buf->f_bavail = 0;
++ buf->f_files = sblk->inodes;
++ buf->f_ffree = 0;
++ buf->f_namelen = SQUASHFS_NAME_LEN;
++
++ return 0;
++}
++
++
++static int squashfs_symlink_readpage(struct file *file, struct page *page)
++{
++ struct inode *inode = page->mapping->host;
++ int index = page->index << PAGE_CACHE_SHIFT, length, bytes;
++ long long block = SQUASHFS_I(inode)->start_block;
++ int offset = SQUASHFS_I(inode)->offset;
++ void *pageaddr = kmap(page);
++
++ TRACE("Entered squashfs_symlink_readpage, page index %ld, start block "
++ "%llx, offset %x\n", page->index,
++ SQUASHFS_I(inode)->start_block,
++ SQUASHFS_I(inode)->offset);
++
++ for (length = 0; length < index; length += bytes) {
++ if (!(bytes = squashfs_get_cached_block(inode->i_sb, NULL,
++ block, offset, PAGE_CACHE_SIZE, &block,
++ &offset))) {
++ ERROR("Unable to read symbolic link [%llx:%x]\n", block,
++ offset);
++ goto skip_read;
++ }
++ }
++
++ if (length != index) {
++ ERROR("(squashfs_symlink_readpage) length != index\n");
++ bytes = 0;
++ goto skip_read;
++ }
++
++ bytes = (i_size_read(inode) - length) > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE :
++ i_size_read(inode) - length;
++
++ if (!(bytes = squashfs_get_cached_block(inode->i_sb, pageaddr, block,
++ offset, bytes, &block, &offset)))
++ ERROR("Unable to read symbolic link [%llx:%x]\n", block, offset);
++
++skip_read:
++ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
++ kunmap(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++
++ return 0;
++}
++
++
++struct meta_index *locate_meta_index(struct inode *inode, int index, int offset)
++{
++ struct meta_index *meta = NULL;
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ int i;
++
++ down(&msblk->meta_index_mutex);
++
++ TRACE("locate_meta_index: index %d, offset %d\n", index, offset);
++
++ if(msblk->meta_index == NULL)
++ goto not_allocated;
++
++ for (i = 0; i < SQUASHFS_META_NUMBER; i ++)
++ if (msblk->meta_index[i].inode_number == inode->i_ino &&
++ msblk->meta_index[i].offset >= offset &&
++ msblk->meta_index[i].offset <= index &&
++ msblk->meta_index[i].locked == 0) {
++ TRACE("locate_meta_index: entry %d, offset %d\n", i,
++ msblk->meta_index[i].offset);
++ meta = &msblk->meta_index[i];
++ offset = meta->offset;
++ }
++
++ if (meta)
++ meta->locked = 1;
++
++not_allocated:
++ up(&msblk->meta_index_mutex);
++
++ return meta;
++}
++
++
++struct meta_index *empty_meta_index(struct inode *inode, int offset, int skip)
++{
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct meta_index *meta = NULL;
++ int i;
++
++ down(&msblk->meta_index_mutex);
++
++ TRACE("empty_meta_index: offset %d, skip %d\n", offset, skip);
++
++ if(msblk->meta_index == NULL) {
++ if (!(msblk->meta_index = kmalloc(sizeof(struct meta_index) *
++ SQUASHFS_META_NUMBER, GFP_KERNEL))) {
++ ERROR("Failed to allocate meta_index\n");
++ goto failed;
++ }
++ for(i = 0; i < SQUASHFS_META_NUMBER; i++) {
++ msblk->meta_index[i].inode_number = 0;
++ msblk->meta_index[i].locked = 0;
++ }
++ msblk->next_meta_index = 0;
++ }
++
++ for(i = SQUASHFS_META_NUMBER; i &&
++ msblk->meta_index[msblk->next_meta_index].locked; i --)
++ msblk->next_meta_index = (msblk->next_meta_index + 1) %
++ SQUASHFS_META_NUMBER;
++
++ if(i == 0) {
++ TRACE("empty_meta_index: failed!\n");
++ goto failed;
++ }
++
++ TRACE("empty_meta_index: returned meta entry %d, %p\n",
++ msblk->next_meta_index,
++ &msblk->meta_index[msblk->next_meta_index]);
++
++ meta = &msblk->meta_index[msblk->next_meta_index];
++ msblk->next_meta_index = (msblk->next_meta_index + 1) %
++ SQUASHFS_META_NUMBER;
++
++ meta->inode_number = inode->i_ino;
++ meta->offset = offset;
++ meta->skip = skip;
++ meta->entries = 0;
++ meta->locked = 1;
++
++failed:
++ up(&msblk->meta_index_mutex);
++ return meta;
++}
++
++
++void release_meta_index(struct inode *inode, struct meta_index *meta)
++{
++ meta->locked = 0;
++}
++
++
++static int read_block_index(struct super_block *s, int blocks, char *block_list,
++ long long *start_block, int *offset)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ unsigned int *block_listp;
++ int block = 0;
++
++ if (msblk->swap) {
++ char sblock_list[blocks << 2];
++
++ if (!squashfs_get_cached_block(s, sblock_list, *start_block,
++ *offset, blocks << 2, start_block, offset)) {
++ ERROR("Unable to read block list [%llx:%x]\n",
++ *start_block, *offset);
++ goto failure;
++ }
++ SQUASHFS_SWAP_INTS(((unsigned int *)block_list),
++ ((unsigned int *)sblock_list), blocks);
++ } else
++ if (!squashfs_get_cached_block(s, block_list, *start_block,
++ *offset, blocks << 2, start_block, offset)) {
++ ERROR("Unable to read block list [%llx:%x]\n",
++ *start_block, *offset);
++ goto failure;
++ }
++
++ for (block_listp = (unsigned int *) block_list; blocks;
++ block_listp++, blocks --)
++ block += SQUASHFS_COMPRESSED_SIZE_BLOCK(*block_listp);
++
++ return block;
++
++failure:
++ return -1;
++}
++
++
++#define SIZE 256
++
++static inline int calculate_skip(int blocks) {
++ int skip = (blocks - 1) / ((SQUASHFS_SLOTS * SQUASHFS_META_ENTRIES + 1) * SQUASHFS_META_INDEXES);
++ return skip >= 7 ? 7 : skip + 1;
++}
++
++
++static int get_meta_index(struct inode *inode, int index,
++ long long *index_block, int *index_offset,
++ long long *data_block, char *block_list)
++{
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int skip = calculate_skip(i_size_read(inode) >> sblk->block_log);
++ int offset = 0;
++ struct meta_index *meta;
++ struct meta_entry *meta_entry;
++ long long cur_index_block = SQUASHFS_I(inode)->u.s1.block_list_start;
++ int cur_offset = SQUASHFS_I(inode)->offset;
++ long long cur_data_block = SQUASHFS_I(inode)->start_block;
++ int i;
++
++ index /= SQUASHFS_META_INDEXES * skip;
++
++ while ( offset < index ) {
++ meta = locate_meta_index(inode, index, offset + 1);
++
++ if (meta == NULL) {
++ if ((meta = empty_meta_index(inode, offset + 1,
++ skip)) == NULL)
++ goto all_done;
++ } else {
++ offset = index < meta->offset + meta->entries ? index :
++ meta->offset + meta->entries - 1;
++ meta_entry = &meta->meta_entry[offset - meta->offset];
++ cur_index_block = meta_entry->index_block + sblk->inode_table_start;
++ cur_offset = meta_entry->offset;
++ cur_data_block = meta_entry->data_block;
++ TRACE("get_meta_index: offset %d, meta->offset %d, "
++ "meta->entries %d\n", offset, meta->offset,
++ meta->entries);
++ TRACE("get_meta_index: index_block 0x%llx, offset 0x%x"
++ " data_block 0x%llx\n", cur_index_block,
++ cur_offset, cur_data_block);
++ }
++
++ for (i = meta->offset + meta->entries; i <= index &&
++ i < meta->offset + SQUASHFS_META_ENTRIES; i++) {
++ int blocks = skip * SQUASHFS_META_INDEXES;
++
++ while (blocks) {
++ int block = blocks > (SIZE >> 2) ? (SIZE >> 2) :
++ blocks;
++ int res = read_block_index(inode->i_sb, block,
++ block_list, &cur_index_block,
++ &cur_offset);
++
++ if (res == -1)
++ goto failed;
++
++ cur_data_block += res;
++ blocks -= block;
++ }
++
++ meta_entry = &meta->meta_entry[i - meta->offset];
++ meta_entry->index_block = cur_index_block - sblk->inode_table_start;
++ meta_entry->offset = cur_offset;
++ meta_entry->data_block = cur_data_block;
++ meta->entries ++;
++ offset ++;
++ }
++
++ TRACE("get_meta_index: meta->offset %d, meta->entries %d\n",
++ meta->offset, meta->entries);
++
++ release_meta_index(inode, meta);
++ }
++
++all_done:
++ *index_block = cur_index_block;
++ *index_offset = cur_offset;
++ *data_block = cur_data_block;
++
++ return offset * SQUASHFS_META_INDEXES * skip;
++
++failed:
++ release_meta_index(inode, meta);
++ return -1;
++}
++
++
++static long long read_blocklist(struct inode *inode, int index,
++ int readahead_blks, char *block_list,
++ unsigned short **block_p, unsigned int *bsize)
++{
++ long long block_ptr;
++ int offset;
++ long long block;
++ int res = get_meta_index(inode, index, &block_ptr, &offset, &block,
++ block_list);
++
++ TRACE("read_blocklist: res %d, index %d, block_ptr 0x%llx, offset"
++ " 0x%x, block 0x%llx\n", res, index, block_ptr, offset,
++ block);
++
++ if(res == -1)
++ goto failure;
++
++ index -= res;
++
++ while ( index ) {
++ int blocks = index > (SIZE >> 2) ? (SIZE >> 2) : index;
++ int res = read_block_index(inode->i_sb, blocks, block_list,
++ &block_ptr, &offset);
++ if (res == -1)
++ goto failure;
++ block += res;
++ index -= blocks;
++ }
++
++ if (read_block_index(inode->i_sb, 1, block_list,
++ &block_ptr, &offset) == -1)
++ goto failure;
++ *bsize = *((unsigned int *) block_list);
++
++ return block;
++
++failure:
++ return 0;
++}
++
++
++static int squashfs_readpage(struct file *file, struct page *page)
++{
++ struct inode *inode = page->mapping->host;
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ unsigned char *block_list;
++ long long block;
++ unsigned int bsize, i = 0, bytes = 0, byte_offset = 0;
++ int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT);
++ void *pageaddr;
++ struct squashfs_fragment_cache *fragment = NULL;
++ char *data_ptr = msblk->read_page;
++
++ int mask = (1 << (sblk->block_log - PAGE_CACHE_SHIFT)) - 1;
++ int start_index = page->index & ~mask;
++ int end_index = start_index | mask;
++
++ TRACE("Entered squashfs_readpage, page index %lx, start block %llx\n",
++ page->index,
++ SQUASHFS_I(inode)->start_block);
++
++ if (!(block_list = kmalloc(SIZE, GFP_KERNEL))) {
++ ERROR("Failed to allocate block_list\n");
++ goto skip_read;
++ }
++
++ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
++ PAGE_CACHE_SHIFT))
++ goto skip_read;
++
++ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++ || index < (i_size_read(inode) >>
++ sblk->block_log)) {
++ if ((block = (msblk->read_blocklist)(inode, index, 1,
++ block_list, NULL, &bsize)) == 0)
++ goto skip_read;
++
++ down(&msblk->read_page_mutex);
++
++ if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page,
++ block, bsize, NULL))) {
++ ERROR("Unable to read page, block %llx, size %x\n", block,
++ bsize);
++ up(&msblk->read_page_mutex);
++ goto skip_read;
++ }
++ } else {
++ if ((fragment = get_cached_fragment(inode->i_sb,
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block,
++ SQUASHFS_I(inode)->u.s1.fragment_size))
++ == NULL) {
++ ERROR("Unable to read page, block %llx, size %x\n",
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block,
++ (int) SQUASHFS_I(inode)->
++ u.s1.fragment_size);
++ goto skip_read;
++ }
++ bytes = SQUASHFS_I(inode)->u.s1.fragment_offset +
++ (i_size_read(inode) & (sblk->block_size
++ - 1));
++ byte_offset = SQUASHFS_I(inode)->u.s1.fragment_offset;
++ data_ptr = fragment->data;
++ }
++
++ for (i = start_index; i <= end_index && byte_offset < bytes;
++ i++, byte_offset += PAGE_CACHE_SIZE) {
++ struct page *push_page;
++ int available_bytes = (bytes - byte_offset) > PAGE_CACHE_SIZE ?
++ PAGE_CACHE_SIZE : bytes - byte_offset;
++
++ TRACE("bytes %d, i %d, byte_offset %d, available_bytes %d\n",
++ bytes, i, byte_offset, available_bytes);
++
++ if (i == page->index) {
++ pageaddr = kmap_atomic(page, KM_USER0);
++ memcpy(pageaddr, data_ptr + byte_offset,
++ available_bytes);
++ memset(pageaddr + available_bytes, 0,
++ PAGE_CACHE_SIZE - available_bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++ } else if ((push_page =
++ grab_cache_page_nowait(page->mapping, i))) {
++ pageaddr = kmap_atomic(push_page, KM_USER0);
++
++ memcpy(pageaddr, data_ptr + byte_offset,
++ available_bytes);
++ memset(pageaddr + available_bytes, 0,
++ PAGE_CACHE_SIZE - available_bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(push_page);
++ SetPageUptodate(push_page);
++ unlock_page(push_page);
++ page_cache_release(push_page);
++ }
++ }
++
++ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++ || index < (i_size_read(inode) >>
++ sblk->block_log))
++ up(&msblk->read_page_mutex);
++ else
++ release_cached_fragment(msblk, fragment);
++
++ kfree(block_list);
++ return 0;
++
++skip_read:
++ pageaddr = kmap_atomic(page, KM_USER0);
++ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++
++ kfree(block_list);
++ return 0;
++}
++
++
++static int squashfs_readpage4K(struct file *file, struct page *page)
++{
++ struct inode *inode = page->mapping->host;
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ unsigned char *block_list;
++ long long block;
++ unsigned int bsize, bytes = 0;
++ void *pageaddr;
++
++ TRACE("Entered squashfs_readpage4K, page index %lx, start block %llx\n",
++ page->index,
++ SQUASHFS_I(inode)->start_block);
++
++ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
++ PAGE_CACHE_SHIFT)) {
++ pageaddr = kmap_atomic(page, KM_USER0);
++ block_list = NULL;
++ goto skip_read;
++ }
++
++ if (!(block_list = kmalloc(SIZE, GFP_KERNEL))) {
++ ERROR("Failed to allocate block_list\n");
++ pageaddr = kmap_atomic(page, KM_USER0);
++ block_list = NULL;
++ goto skip_read;
++ }
++
++ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++ || page->index < (i_size_read(inode) >>
++ sblk->block_log)) {
++ block = (msblk->read_blocklist)(inode, page->index, 1,
++ block_list, NULL, &bsize);
++
++ down(&msblk->read_page_mutex);
++ bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
++ bsize, NULL);
++ pageaddr = kmap_atomic(page, KM_USER0);
++ if (bytes)
++ memcpy(pageaddr, msblk->read_page, bytes);
++ else
++ ERROR("Unable to read page, block %llx, size %x\n",
++ block, bsize);
++ up(&msblk->read_page_mutex);
++ } else {
++ struct squashfs_fragment_cache *fragment =
++ get_cached_fragment(inode->i_sb,
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block,
++ SQUASHFS_I(inode)-> u.s1.fragment_size);
++ pageaddr = kmap_atomic(page, KM_USER0);
++ if (fragment) {
++ bytes = i_size_read(inode) & (sblk->block_size - 1);
++ memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)->
++ u.s1.fragment_offset, bytes);
++ release_cached_fragment(msblk, fragment);
++ } else
++ ERROR("Unable to read page, block %llx, size %x\n",
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block, (int)
++ SQUASHFS_I(inode)-> u.s1.fragment_size);
++ }
++
++skip_read:
++ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++
++ kfree(block_list);
++ return 0;
++}
++
++
++static int get_dir_index_using_offset(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ long long f_pos)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ struct squashfs_dir_index index;
++
++ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
++ i_count, (unsigned int) f_pos);
++
++ f_pos =- 3;
++ if (f_pos == 0)
++ goto finish;
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX(&index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) &index,
++ index_start, index_offset,
++ sizeof(index), &index_start,
++ &index_offset);
++
++ if (index.index > f_pos)
++ break;
++
++ squashfs_get_cached_block(s, NULL, index_start, index_offset,
++ index.size + 1, &index_start,
++ &index_offset);
++
++ length = index.index;
++ *next_block = index.start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++
++finish:
++ return length + 3;
++}
++
++
++static int get_dir_index_using_name(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ const char *name, int size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ struct squashfs_dir_index *index;
++ char *str;
++
++ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
++
++ if (!(str = kmalloc(sizeof(struct squashfs_dir_index) +
++ (SQUASHFS_NAME_LEN + 1) * 2, GFP_KERNEL))) {
++ ERROR("Failed to allocate squashfs_dir_index\n");
++ goto failure;
++ }
++
++ index = (struct squashfs_dir_index *) (str + SQUASHFS_NAME_LEN + 1);
++ strncpy(str, name, size);
++ str[size] = '\0';
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX(index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) index,
++ index_start, index_offset,
++ sizeof(struct squashfs_dir_index),
++ &index_start, &index_offset);
++
++ squashfs_get_cached_block(s, index->name, index_start,
++ index_offset, index->size + 1,
++ &index_start, &index_offset);
++
++ index->name[index->size + 1] = '\0';
++
++ if (strcmp(index->name, str) > 0)
++ break;
++
++ length = index->index;
++ *next_block = index->start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++ kfree(str);
++failure:
++ return length + 3;
++}
++
++
++static int squashfs_readdir(struct file *file, void *dirent, filldir_t filldir)
++{
++ struct inode *i = file->f_dentry->d_inode;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0,
++ dir_count;
++ struct squashfs_dir_header dirh;
++ struct squashfs_dir_entry *dire;
++
++ TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset);
++
++ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
++ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
++ ERROR("Failed to allocate squashfs_dir_entry\n");
++ goto finish;
++ }
++
++ while(file->f_pos < 3) {
++ char *name;
++ int size, i_ino;
++
++ if(file->f_pos == 0) {
++ name = ".";
++ size = 1;
++ i_ino = i->i_ino;
++ } else {
++ name = "..";
++ size = 2;
++ i_ino = SQUASHFS_I(i)->u.s2.parent_inode;
++ }
++ TRACE("Calling filldir(%x, %s, %d, %d, %d, %d)\n",
++ (unsigned int) dirent, name, size, (int)
++ file->f_pos, i_ino,
++ squashfs_filetype_table[1]);
++
++ if (filldir(dirent, name, size,
++ file->f_pos, i_ino,
++ squashfs_filetype_table[1]) < 0) {
++ TRACE("Filldir returned less than 0\n");
++ goto finish;
++ }
++ file->f_pos += size;
++ }
++
++ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count,
++ file->f_pos);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header sdirh;
++
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block, next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block, next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset,
++ dire->size + 1, &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (file->f_pos >= length)
++ continue;
++
++ dire->name[dire->size + 1] = '\0';
++
++ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d, %d)\n",
++ (unsigned int) dirent, dire->name,
++ dire->size + 1, (int) file->f_pos,
++ dirh.start_block, dire->offset,
++ dirh.inode_number + dire->inode_number,
++ squashfs_filetype_table[dire->type]);
++
++ if (filldir(dirent, dire->name, dire->size + 1,
++ file->f_pos,
++ dirh.inode_number + dire->inode_number,
++ squashfs_filetype_table[dire->type])
++ < 0) {
++ TRACE("Filldir returned less than 0\n");
++ goto finish;
++ }
++ file->f_pos = length;
++ }
++ }
++
++finish:
++ kfree(dire);
++ return 0;
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ return 0;
++}
++
++
++static struct dentry *squashfs_lookup(struct inode *i, struct dentry *dentry,
++ struct nameidata *nd)
++{
++ const unsigned char *name = dentry->d_name.name;
++ int len = dentry->d_name.len;
++ struct inode *inode = NULL;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0,
++ dir_count;
++ struct squashfs_dir_header dirh;
++ struct squashfs_dir_entry *dire;
++
++ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
++
++ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
++ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
++ ERROR("Failed to allocate squashfs_dir_entry\n");
++ goto exit_loop;
++ }
++
++ if (len > SQUASHFS_NAME_LEN)
++ goto exit_loop;
++
++ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count, name,
++ len);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header sdirh;
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block,next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block,next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset, dire->size + 1,
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (name[0] < dire->name[0])
++ goto exit_loop;
++
++ if ((len == dire->size + 1) && !strncmp(name,
++ dire->name, len)) {
++ squashfs_inode_t ino =
++ SQUASHFS_MKINODE(dirh.start_block,
++ dire->offset);
++
++ TRACE("calling squashfs_iget for directory "
++ "entry %s, inode %x:%x, %d\n", name,
++ dirh.start_block, dire->offset,
++ dirh.inode_number + dire->inode_number);
++
++ inode = (msblk->iget)(i->i_sb, ino);
++
++ goto exit_loop;
++ }
++ }
++ }
++
++exit_loop:
++ kfree(dire);
++ d_add(dentry, inode);
++ return ERR_PTR(0);
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ goto exit_loop;
++}
++
++
++static void squashfs_put_super(struct super_block *s)
++{
++ int i;
++
++ if (s->s_fs_info) {
++ struct squashfs_sb_info *sbi = s->s_fs_info;
++ if (sbi->block_cache)
++ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
++ if (sbi->block_cache[i].block !=
++ SQUASHFS_INVALID_BLK)
++ kfree(sbi->block_cache[i].data);
++ if (sbi->fragment)
++ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++)
++ SQUASHFS_FREE(sbi->fragment[i].data);
++ kfree(sbi->fragment);
++ kfree(sbi->block_cache);
++ kfree(sbi->read_data);
++ kfree(sbi->read_page);
++ kfree(sbi->uid);
++ kfree(sbi->fragment_index);
++ kfree(sbi->fragment_index_2);
++ kfree(sbi->meta_index);
++ vfree(sbi->stream.workspace);
++ kfree(s->s_fs_info);
++ s->s_fs_info = NULL;
++ }
++}
++
++
++static int squashfs_get_sb(struct file_system_type *fs_type, int flags,
++ const char *dev_name, void *data,
++ struct vfsmount *mnt)
++{
++ return get_sb_bdev(fs_type, flags, dev_name, data, squashfs_fill_super,
++ mnt);
++}
++
++
++static int __init init_squashfs_fs(void)
++{
++ int err = init_inodecache();
++ if (err)
++ goto out;
++
++ printk(KERN_INFO "squashfs: version 3.1 (2006/08/19) "
++ "Phillip Lougher\n");
++
++ if ((err = register_filesystem(&squashfs_fs_type)))
++ destroy_inodecache();
++
++out:
++ return err;
++}
++
++
++static void __exit exit_squashfs_fs(void)
++{
++ unregister_filesystem(&squashfs_fs_type);
++ destroy_inodecache();
++}
++
++
++static kmem_cache_t * squashfs_inode_cachep;
++
++
++static struct inode *squashfs_alloc_inode(struct super_block *sb)
++{
++ struct squashfs_inode_info *ei;
++ ei = kmem_cache_alloc(squashfs_inode_cachep, SLAB_KERNEL);
++ if (!ei)
++ return NULL;
++ return &ei->vfs_inode;
++}
++
++
++static void squashfs_destroy_inode(struct inode *inode)
++{
++ kmem_cache_free(squashfs_inode_cachep, SQUASHFS_I(inode));
++}
++
++
++static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
++{
++ struct squashfs_inode_info *ei = foo;
++
++ if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
++ SLAB_CTOR_CONSTRUCTOR)
++ inode_init_once(&ei->vfs_inode);
++}
++
++
++static int __init init_inodecache(void)
++{
++ squashfs_inode_cachep = kmem_cache_create("squashfs_inode_cache",
++ sizeof(struct squashfs_inode_info),
++ 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
++ init_once, NULL);
++ if (squashfs_inode_cachep == NULL)
++ return -ENOMEM;
++ return 0;
++}
++
++
++static void destroy_inodecache(void)
++{
++ if (kmem_cache_destroy(squashfs_inode_cachep))
++ printk(KERN_INFO "squashfs_inode_cache: not all structures "
++ "were freed\n");
++}
++
++
++module_init(init_squashfs_fs);
++module_exit(exit_squashfs_fs);
++MODULE_DESCRIPTION("squashfs 3.1, a compressed read-only filesystem");
++MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
++MODULE_LICENSE("GPL");
+diff --new-file -urp linux-2.6.18/fs/squashfs/Makefile linux-2.6.18-squashfs3.1/fs/squashfs/Makefile
+--- linux-2.6.18/fs/squashfs/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-squashfs3.1/fs/squashfs/Makefile 2006-08-21 00:13:12.000000000 +0100
+@@ -0,0 +1,7 @@
++#
++# Makefile for the linux squashfs routines.
++#
++
++obj-$(CONFIG_SQUASHFS) += squashfs.o
++squashfs-y += inode.o
++squashfs-y += squashfs2_0.o
+diff --new-file -urp linux-2.6.18/fs/squashfs/squashfs2_0.c linux-2.6.18-squashfs3.1/fs/squashfs/squashfs2_0.c
+--- linux-2.6.18/fs/squashfs/squashfs2_0.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-squashfs3.1/fs/squashfs/squashfs2_0.c 2006-08-21 00:14:55.000000000 +0100
+@@ -0,0 +1,779 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs2_0.c
++ */
++
++#include <linux/types.h>
++#include <linux/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/errno.h>
++#include <linux/slab.h>
++#include <linux/zlib.h>
++#include <linux/fs.h>
++#include <linux/smp_lock.h>
++#include <linux/slab.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.h>
++#include <linux/buffer_head.h>
++#include <linux/vfs.h>
++#include <linux/init.h>
++#include <linux/dcache.h>
++#include <linux/wait.h>
++#include <linux/zlib.h>
++#include <linux/blkdev.h>
++#include <linux/vmalloc.h>
++#include <asm/uaccess.h>
++#include <asm/semaphore.h>
++
++#include "squashfs.h"
++static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir);
++static struct dentry *squashfs_lookup_2(struct inode *, struct dentry *,
++ struct nameidata *);
++
++static struct file_operations squashfs_dir_ops_2 = {
++ .read = generic_read_dir,
++ .readdir = squashfs_readdir_2
++};
++
++static struct inode_operations squashfs_dir_inode_ops_2 = {
++ .lookup = squashfs_lookup_2
++};
++
++static unsigned char squashfs_filetype_table[] = {
++ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
++};
++
++static int read_fragment_index_table_2(struct super_block *s)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ if (!(msblk->fragment_index_2 = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES_2
++ (sblk->fragments), GFP_KERNEL))) {
++ ERROR("Failed to allocate uid/gid table\n");
++ return 0;
++ }
++
++ if (SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments) &&
++ !squashfs_read_data(s, (char *)
++ msblk->fragment_index_2,
++ sblk->fragment_table_start,
++ SQUASHFS_FRAGMENT_INDEX_BYTES_2
++ (sblk->fragments) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read fragment index table\n");
++ return 0;
++ }
++
++ if (msblk->swap) {
++ int i;
++ unsigned int fragment;
++
++ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES_2(sblk->fragments);
++ i++) {
++ SQUASHFS_SWAP_FRAGMENT_INDEXES_2((&fragment),
++ &msblk->fragment_index_2[i], 1);
++ msblk->fragment_index_2[i] = fragment;
++ }
++ }
++
++ return 1;
++}
++
++
++static int get_fragment_location_2(struct super_block *s, unsigned int fragment,
++ long long *fragment_start_block,
++ unsigned int *fragment_size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ long long start_block =
++ msblk->fragment_index_2[SQUASHFS_FRAGMENT_INDEX_2(fragment)];
++ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET_2(fragment);
++ struct squashfs_fragment_entry_2 fragment_entry;
++
++ if (msblk->swap) {
++ struct squashfs_fragment_entry_2 sfragment_entry;
++
++ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
++ start_block, offset,
++ sizeof(sfragment_entry), &start_block,
++ &offset))
++ goto out;
++ SQUASHFS_SWAP_FRAGMENT_ENTRY_2(&fragment_entry, &sfragment_entry);
++ } else
++ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
++ start_block, offset,
++ sizeof(fragment_entry), &start_block,
++ &offset))
++ goto out;
++
++ *fragment_start_block = fragment_entry.start_block;
++ *fragment_size = fragment_entry.size;
++
++ return 1;
++
++out:
++ return 0;
++}
++
++
++static struct inode *squashfs_new_inode(struct super_block *s,
++ struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ struct inode *i = new_inode(s);
++
++ if (i) {
++ i->i_ino = ino;
++ i->i_mtime.tv_sec = sblk->mkfs_time;
++ i->i_atime.tv_sec = sblk->mkfs_time;
++ i->i_ctime.tv_sec = sblk->mkfs_time;
++ i->i_uid = msblk->uid[inodeb->uid];
++ i->i_mode = inodeb->mode;
++ i->i_nlink = 1;
++ i->i_size = 0;
++ if (inodeb->guid == SQUASHFS_GUIDS)
++ i->i_gid = i->i_uid;
++ else
++ i->i_gid = msblk->guid[inodeb->guid];
++ }
++
++ return i;
++}
++
++
++static struct inode *squashfs_iget_2(struct super_block *s, squashfs_inode_t inode)
++{
++ struct inode *i;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ unsigned int block = SQUASHFS_INODE_BLK(inode) +
++ sblk->inode_table_start;
++ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
++ unsigned int ino = SQUASHFS_MK_VFS_INODE(block
++ - sblk->inode_table_start, offset);
++ long long next_block;
++ unsigned int next_offset;
++ union squashfs_inode_header_2 id, sid;
++ struct squashfs_base_inode_header_2 *inodeb = &id.base,
++ *sinodeb = &sid.base;
++
++ TRACE("Entered squashfs_iget\n");
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
++ offset, sizeof(*sinodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_BASE_INODE_HEADER_2(inodeb, sinodeb,
++ sizeof(*sinodeb));
++ } else
++ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
++ offset, sizeof(*inodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ switch(inodeb->inode_type) {
++ case SQUASHFS_FILE_TYPE: {
++ struct squashfs_reg_inode_header_2 *inodep = &id.reg;
++ struct squashfs_reg_inode_header_2 *sinodep = &sid.reg;
++ long long frag_blk;
++ unsigned int frag_size;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_REG_INODE_HEADER_2(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ frag_blk = SQUASHFS_INVALID_BLK;
++ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
++ !get_fragment_location_2(s,
++ inodep->fragment, &frag_blk, &frag_size))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->file_size;
++ i->i_fop = &generic_ro_fops;
++ i->i_mode |= S_IFREG;
++ i->i_mtime.tv_sec = inodep->mtime;
++ i->i_atime.tv_sec = inodep->mtime;
++ i->i_ctime.tv_sec = inodep->mtime;
++ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++ i->i_blksize = PAGE_CACHE_SIZE;
++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++ if (sblk->block_size > 4096)
++ i->i_data.a_ops = &squashfs_aops;
++ else
++ i->i_data.a_ops = &squashfs_aops_4K;
++
++ TRACE("File inode %x:%x, start_block %x, "
++ "block_list_start %llx, offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, next_block,
++ next_offset);
++ break;
++ }
++ case SQUASHFS_DIR_TYPE: {
++ struct squashfs_dir_inode_header_2 *inodep = &id.dir;
++ struct squashfs_dir_inode_header_2 *sinodep = &sid.dir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DIR_INODE_HEADER_2(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops_2;
++ i->i_fop = &squashfs_dir_ops_2;
++ i->i_mode |= S_IFDIR;
++ i->i_mtime.tv_sec = inodep->mtime;
++ i->i_atime.tv_sec = inodep->mtime;
++ i->i_ctime.tv_sec = inodep->mtime;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
++ SQUASHFS_I(i)->u.s2.parent_inode = 0;
++
++ TRACE("Directory inode %x:%x, start_block %x, offset "
++ "%x\n", SQUASHFS_INODE_BLK(inode),
++ offset, inodep->start_block,
++ inodep->offset);
++ break;
++ }
++ case SQUASHFS_LDIR_TYPE: {
++ struct squashfs_ldir_inode_header_2 *inodep = &id.ldir;
++ struct squashfs_ldir_inode_header_2 *sinodep = &sid.ldir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_LDIR_INODE_HEADER_2(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops_2;
++ i->i_fop = &squashfs_dir_ops_2;
++ i->i_mode |= S_IFDIR;
++ i->i_mtime.tv_sec = inodep->mtime;
++ i->i_atime.tv_sec = inodep->mtime;
++ i->i_ctime.tv_sec = inodep->mtime;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
++ SQUASHFS_I(i)->u.s2.directory_index_offset =
++ next_offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count =
++ inodep->i_count;
++ SQUASHFS_I(i)->u.s2.parent_inode = 0;
++
++ TRACE("Long directory inode %x:%x, start_block %x, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, inodep->offset);
++ break;
++ }
++ case SQUASHFS_SYMLINK_TYPE: {
++ struct squashfs_symlink_inode_header_2 *inodep =
++ &id.symlink;
++ struct squashfs_symlink_inode_header_2 *sinodep =
++ &sid.symlink;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->symlink_size;
++ i->i_op = &page_symlink_inode_operations;
++ i->i_data.a_ops = &squashfs_symlink_aops;
++ i->i_mode |= S_IFLNK;
++ SQUASHFS_I(i)->start_block = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++
++ TRACE("Symbolic link inode %x:%x, start_block %llx, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ next_block, next_offset);
++ break;
++ }
++ case SQUASHFS_BLKDEV_TYPE:
++ case SQUASHFS_CHRDEV_TYPE: {
++ struct squashfs_dev_inode_header_2 *inodep = &id.dev;
++ struct squashfs_dev_inode_header_2 *sinodep = &sid.dev;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DEV_INODE_HEADER_2(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_mode |= (inodeb->inode_type ==
++ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
++ S_IFBLK;
++ init_special_inode(i, i->i_mode,
++ old_decode_dev(inodep->rdev));
++
++ TRACE("Device inode %x:%x, rdev %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->rdev);
++ break;
++ }
++ case SQUASHFS_FIFO_TYPE:
++ case SQUASHFS_SOCKET_TYPE: {
++ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
++ ? S_IFIFO : S_IFSOCK;
++ init_special_inode(i, i->i_mode, 0);
++ break;
++ }
++ default:
++ ERROR("Unknown inode type %d in squashfs_iget!\n",
++ inodeb->inode_type);
++ goto failed_read1;
++ }
++
++ insert_inode_hash(i);
++ return i;
++
++failed_read:
++ ERROR("Unable to read inode [%x:%x]\n", block, offset);
++
++failed_read1:
++ return NULL;
++}
++
++
++static int get_dir_index_using_offset(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ long long f_pos)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ struct squashfs_dir_index_2 index;
++
++ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
++ i_count, (unsigned int) f_pos);
++
++ if (f_pos == 0)
++ goto finish;
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index_2 sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX_2(&index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) &index,
++ index_start, index_offset,
++ sizeof(index), &index_start,
++ &index_offset);
++
++ if (index.index > f_pos)
++ break;
++
++ squashfs_get_cached_block(s, NULL, index_start, index_offset,
++ index.size + 1, &index_start,
++ &index_offset);
++
++ length = index.index;
++ *next_block = index.start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++
++finish:
++ return length;
++}
++
++
++static int get_dir_index_using_name(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ const char *name, int size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ struct squashfs_dir_index_2 *index;
++ char *str;
++
++ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
++
++ if (!(str = kmalloc(sizeof(struct squashfs_dir_index) +
++ (SQUASHFS_NAME_LEN + 1) * 2, GFP_KERNEL))) {
++ ERROR("Failed to allocate squashfs_dir_index\n");
++ goto failure;
++ }
++
++ index = (struct squashfs_dir_index_2 *) (str + SQUASHFS_NAME_LEN + 1);
++ strncpy(str, name, size);
++ str[size] = '\0';
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index_2 sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX_2(index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) index,
++ index_start, index_offset,
++ sizeof(struct squashfs_dir_index_2),
++ &index_start, &index_offset);
++
++ squashfs_get_cached_block(s, index->name, index_start,
++ index_offset, index->size + 1,
++ &index_start, &index_offset);
++
++ index->name[index->size + 1] = '\0';
++
++ if (strcmp(index->name, str) > 0)
++ break;
++
++ length = index->index;
++ *next_block = index->start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++ kfree(str);
++failure:
++ return length;
++}
++
++
++static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir)
++{
++ struct inode *i = file->f_dentry->d_inode;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0,
++ dir_count;
++ struct squashfs_dir_header_2 dirh;
++ struct squashfs_dir_entry_2 *dire;
++
++ TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset);
++
++ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
++ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
++ ERROR("Failed to allocate squashfs_dir_entry\n");
++ goto finish;
++ }
++
++ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count,
++ file->f_pos);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header_2 sdirh;
++
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry_2 sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block, next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block, next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset,
++ dire->size + 1, &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (file->f_pos >= length)
++ continue;
++
++ dire->name[dire->size + 1] = '\0';
++
++ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d)\n",
++ (unsigned int) dirent, dire->name,
++ dire->size + 1, (int) file->f_pos,
++ dirh.start_block, dire->offset,
++ squashfs_filetype_table[dire->type]);
++
++ if (filldir(dirent, dire->name, dire->size + 1,
++ file->f_pos, SQUASHFS_MK_VFS_INODE(
++ dirh.start_block, dire->offset),
++ squashfs_filetype_table[dire->type])
++ < 0) {
++ TRACE("Filldir returned less than 0\n");
++ goto finish;
++ }
++ file->f_pos = length;
++ }
++ }
++
++finish:
++ kfree(dire);
++ return 0;
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ kfree(dire);
++ return 0;
++}
++
++
++static struct dentry *squashfs_lookup_2(struct inode *i, struct dentry *dentry,
++ struct nameidata *nd)
++{
++ const unsigned char *name = dentry->d_name.name;
++ int len = dentry->d_name.len;
++ struct inode *inode = NULL;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0,
++ dir_count;
++ struct squashfs_dir_header_2 dirh;
++ struct squashfs_dir_entry_2 *dire;
++ int sorted = sblk->s_major == 2 && sblk->s_minor >= 1;
++
++ TRACE("Entered squashfs_lookup_2 [%llx:%x]\n", next_block, next_offset);
++
++ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
++ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
++ ERROR("Failed to allocate squashfs_dir_entry\n");
++ goto exit_loop;
++ }
++
++ if (len > SQUASHFS_NAME_LEN)
++ goto exit_loop;
++
++ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count, name,
++ len);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header_2 sdirh;
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry_2 sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block,next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block,next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset, dire->size + 1,
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (sorted && name[0] < dire->name[0])
++ goto exit_loop;
++
++ if ((len == dire->size + 1) && !strncmp(name,
++ dire->name, len)) {
++ squashfs_inode_t ino =
++ SQUASHFS_MKINODE(dirh.start_block,
++ dire->offset);
++
++ TRACE("calling squashfs_iget for directory "
++ "entry %s, inode %x:%x, %lld\n", name,
++ dirh.start_block, dire->offset, ino);
++
++ inode = (msblk->iget)(i->i_sb, ino);
++
++ goto exit_loop;
++ }
++ }
++ }
++
++exit_loop:
++ kfree(dire);
++ d_add(dentry, inode);
++ return ERR_PTR(0);
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ goto exit_loop;
++}
++
++
++int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
++{
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ msblk->iget = squashfs_iget_2;
++ msblk->read_fragment_index_table = read_fragment_index_table_2;
++
++ sblk->bytes_used = sblk->bytes_used_2;
++ sblk->uid_start = sblk->uid_start_2;
++ sblk->guid_start = sblk->guid_start_2;
++ sblk->inode_table_start = sblk->inode_table_start_2;
++ sblk->directory_table_start = sblk->directory_table_start_2;
++ sblk->fragment_table_start = sblk->fragment_table_start_2;
++
++ return 1;
++}
+diff --new-file -urp linux-2.6.18/fs/squashfs/squashfs.h linux-2.6.18-squashfs3.1/fs/squashfs/squashfs.h
+--- linux-2.6.18/fs/squashfs/squashfs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-squashfs3.1/fs/squashfs/squashfs.h 2006-08-21 00:13:12.000000000 +0100
+@@ -0,0 +1,86 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs.h
++ */
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++#endif
++
++#ifdef SQUASHFS_TRACE
++#define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args)
++#else
++#define TRACE(s, args...) {}
++#endif
++
++#define ERROR(s, args...) printk(KERN_ERR "SQUASHFS error: "s, ## args)
++
++#define SERROR(s, args...) do { \
++ if (!silent) \
++ printk(KERN_ERR "SQUASHFS error: "s, ## args);\
++ } while(0)
++
++#define WARNING(s, args...) printk(KERN_WARNING "SQUASHFS: "s, ## args)
++
++static inline struct squashfs_inode_info *SQUASHFS_I(struct inode *inode)
++{
++ return list_entry(inode, struct squashfs_inode_info, vfs_inode);
++}
++
++#if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY ) || defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY)
++#define SQSH_EXTERN
++extern unsigned int squashfs_read_data(struct super_block *s, char *buffer,
++ long long index, unsigned int length,
++ long long *next_index);
++extern int squashfs_get_cached_block(struct super_block *s, char *buffer,
++ long long block, unsigned int offset,
++ int length, long long *next_block,
++ unsigned int *next_offset);
++extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct
++ squashfs_fragment_cache *fragment);
++extern struct squashfs_fragment_cache *get_cached_fragment(struct super_block
++ *s, long long start_block,
++ int length);
++extern struct address_space_operations squashfs_symlink_aops;
++extern struct address_space_operations squashfs_aops;
++extern struct address_space_operations squashfs_aops_4K;
++extern struct inode_operations squashfs_dir_inode_ops;
++#else
++#define SQSH_EXTERN static
++#endif
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk);
++#else
++static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk)
++{
++ return 0;
++}
++#endif
++
++#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk);
++#else
++static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
++{
++ return 0;
++}
++#endif
+diff --new-file -urp linux-2.6.18/include/linux/squashfs_fs.h linux-2.6.18-squashfs3.1/include/linux/squashfs_fs.h
+--- linux-2.6.18/include/linux/squashfs_fs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-squashfs3.1/include/linux/squashfs_fs.h 2006-08-21 00:13:19.000000000 +0100
+@@ -0,0 +1,911 @@
++#ifndef SQUASHFS_FS
++#define SQUASHFS_FS
++
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs.h
++ */
++
++#ifndef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++#define CONFIG_SQUASHFS_2_0_COMPATIBILITY
++#endif
++
++#ifdef CONFIG_SQUASHFS_VMALLOC
++#define SQUASHFS_ALLOC(a) vmalloc(a)
++#define SQUASHFS_FREE(a) vfree(a)
++#else
++#define SQUASHFS_ALLOC(a) kmalloc(a, GFP_KERNEL)
++#define SQUASHFS_FREE(a) kfree(a)
++#endif
++#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
++#define SQUASHFS_MAJOR 3
++#define SQUASHFS_MINOR 0
++#define SQUASHFS_MAGIC 0x73717368
++#define SQUASHFS_MAGIC_SWAP 0x68737173
++#define SQUASHFS_START 0
++
++/* size of metadata (inode and directory) blocks */
++#define SQUASHFS_METADATA_SIZE 8192
++#define SQUASHFS_METADATA_LOG 13
++
++/* default size of data blocks */
++#define SQUASHFS_FILE_SIZE 65536
++#define SQUASHFS_FILE_LOG 16
++
++#define SQUASHFS_FILE_MAX_SIZE 65536
++
++/* Max number of uids and gids */
++#define SQUASHFS_UIDS 256
++#define SQUASHFS_GUIDS 255
++
++/* Max length of filename (not 255) */
++#define SQUASHFS_NAME_LEN 256
++
++#define SQUASHFS_INVALID ((long long) 0xffffffffffff)
++#define SQUASHFS_INVALID_FRAG ((unsigned int) 0xffffffff)
++#define SQUASHFS_INVALID_BLK ((long long) -1)
++#define SQUASHFS_USED_BLK ((long long) -2)
++
++/* Filesystem flags */
++#define SQUASHFS_NOI 0
++#define SQUASHFS_NOD 1
++#define SQUASHFS_CHECK 2
++#define SQUASHFS_NOF 3
++#define SQUASHFS_NO_FRAG 4
++#define SQUASHFS_ALWAYS_FRAG 5
++#define SQUASHFS_DUPLICATE 6
++
++#define SQUASHFS_BIT(flag, bit) ((flag >> bit) & 1)
++
++#define SQUASHFS_UNCOMPRESSED_INODES(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NOI)
++
++#define SQUASHFS_UNCOMPRESSED_DATA(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NOD)
++
++#define SQUASHFS_UNCOMPRESSED_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NOF)
++
++#define SQUASHFS_NO_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NO_FRAG)
++
++#define SQUASHFS_ALWAYS_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_ALWAYS_FRAG)
++
++#define SQUASHFS_DUPLICATES(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_DUPLICATE)
++
++#define SQUASHFS_CHECK_DATA(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_CHECK)
++
++#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
++ duplicate_checking) (noi | (nod << 1) | (check_data << 2) \
++ | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
++ (duplicate_checking << 6))
++
++/* Max number of types and file types */
++#define SQUASHFS_DIR_TYPE 1
++#define SQUASHFS_FILE_TYPE 2
++#define SQUASHFS_SYMLINK_TYPE 3
++#define SQUASHFS_BLKDEV_TYPE 4
++#define SQUASHFS_CHRDEV_TYPE 5
++#define SQUASHFS_FIFO_TYPE 6
++#define SQUASHFS_SOCKET_TYPE 7
++#define SQUASHFS_LDIR_TYPE 8
++#define SQUASHFS_LREG_TYPE 9
++
++/* 1.0 filesystem type definitions */
++#define SQUASHFS_TYPES 5
++#define SQUASHFS_IPC_TYPE 0
++
++/* Flag whether block is compressed or uncompressed, bit is set if block is
++ * uncompressed */
++#define SQUASHFS_COMPRESSED_BIT (1 << 15)
++
++#define SQUASHFS_COMPRESSED_SIZE(B) (((B) & ~SQUASHFS_COMPRESSED_BIT) ? \
++ (B) & ~SQUASHFS_COMPRESSED_BIT : SQUASHFS_COMPRESSED_BIT)
++
++#define SQUASHFS_COMPRESSED(B) (!((B) & SQUASHFS_COMPRESSED_BIT))
++
++#define SQUASHFS_COMPRESSED_BIT_BLOCK (1 << 24)
++
++#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B) (((B) & \
++ ~SQUASHFS_COMPRESSED_BIT_BLOCK) ? (B) & \
++ ~SQUASHFS_COMPRESSED_BIT_BLOCK : SQUASHFS_COMPRESSED_BIT_BLOCK)
++
++#define SQUASHFS_COMPRESSED_BLOCK(B) (!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
++
++/*
++ * Inode number ops. Inodes consist of a compressed block number, and an
++ * uncompressed offset within that block
++ */
++#define SQUASHFS_INODE_BLK(a) ((unsigned int) ((a) >> 16))
++
++#define SQUASHFS_INODE_OFFSET(a) ((unsigned int) ((a) & 0xffff))
++
++#define SQUASHFS_MKINODE(A, B) ((squashfs_inode_t)(((squashfs_inode_t) (A)\
++ << 16) + (B)))
++
++/* Compute 32 bit VFS inode number from squashfs inode number */
++#define SQUASHFS_MK_VFS_INODE(a, b) ((unsigned int) (((a) << 8) + \
++ ((b) >> 2) + 1))
++/* XXX */
++
++/* Translate between VFS mode and squashfs mode */
++#define SQUASHFS_MODE(a) ((a) & 0xfff)
++
++/* fragment and fragment table defines */
++#define SQUASHFS_FRAGMENT_BYTES(A) (A * sizeof(struct squashfs_fragment_entry))
++
++#define SQUASHFS_FRAGMENT_INDEX(A) (SQUASHFS_FRAGMENT_BYTES(A) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_OFFSET(A) (SQUASHFS_FRAGMENT_BYTES(A) % \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEXES(A) ((SQUASHFS_FRAGMENT_BYTES(A) + \
++ SQUASHFS_METADATA_SIZE - 1) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_BYTES(A) (SQUASHFS_FRAGMENT_INDEXES(A) *\
++ sizeof(long long))
++
++/* cached data constants for filesystem */
++#define SQUASHFS_CACHED_BLKS 8
++
++#define SQUASHFS_MAX_FILE_SIZE_LOG 64
++
++#define SQUASHFS_MAX_FILE_SIZE ((long long) 1 << \
++ (SQUASHFS_MAX_FILE_SIZE_LOG - 2))
++
++#define SQUASHFS_MARKER_BYTE 0xff
++
++/* meta index cache */
++#define SQUASHFS_META_INDEXES (SQUASHFS_METADATA_SIZE / sizeof(unsigned int))
++#define SQUASHFS_META_ENTRIES 31
++#define SQUASHFS_META_NUMBER 8
++#define SQUASHFS_SLOTS 4
++
++struct meta_entry {
++ long long data_block;
++ unsigned int index_block;
++ unsigned short offset;
++ unsigned short pad;
++};
++
++struct meta_index {
++ unsigned int inode_number;
++ unsigned int offset;
++ unsigned short entries;
++ unsigned short skip;
++ unsigned short locked;
++ unsigned short pad;
++ struct meta_entry meta_entry[SQUASHFS_META_ENTRIES];
++};
++
++
++/*
++ * definitions for structures on disk
++ */
++
++typedef long long squashfs_block_t;
++typedef long long squashfs_inode_t;
++
++struct squashfs_super_block {
++ unsigned int s_magic;
++ unsigned int inodes;
++ unsigned int bytes_used_2;
++ unsigned int uid_start_2;
++ unsigned int guid_start_2;
++ unsigned int inode_table_start_2;
++ unsigned int directory_table_start_2;
++ unsigned int s_major:16;
++ unsigned int s_minor:16;
++ unsigned int block_size_1:16;
++ unsigned int block_log:16;
++ unsigned int flags:8;
++ unsigned int no_uids:8;
++ unsigned int no_guids:8;
++ unsigned int mkfs_time /* time of filesystem creation */;
++ squashfs_inode_t root_inode;
++ unsigned int block_size;
++ unsigned int fragments;
++ unsigned int fragment_table_start_2;
++ long long bytes_used;
++ long long uid_start;
++ long long guid_start;
++ long long inode_table_start;
++ long long directory_table_start;
++ long long fragment_table_start;
++ long long unused;
++} __attribute__ ((packed));
++
++struct squashfs_dir_index {
++ unsigned int index;
++ unsigned int start_block;
++ unsigned char size;
++ unsigned char name[0];
++} __attribute__ ((packed));
++
++#define SQUASHFS_BASE_INODE_HEADER \
++ unsigned int inode_type:4; \
++ unsigned int mode:12; \
++ unsigned int uid:8; \
++ unsigned int guid:8; \
++ unsigned int mtime; \
++ unsigned int inode_number;
++
++struct squashfs_base_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned short rdev;
++} __attribute__ ((packed));
++
++struct squashfs_symlink_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned short symlink_size;
++ char symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ squashfs_block_t start_block;
++ unsigned int fragment;
++ unsigned int offset;
++ unsigned int file_size;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_lreg_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ squashfs_block_t start_block;
++ unsigned int fragment;
++ unsigned int offset;
++ long long file_size;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned int file_size:19;
++ unsigned int offset:13;
++ unsigned int start_block;
++ unsigned int parent_inode;
++} __attribute__ ((packed));
++
++struct squashfs_ldir_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned int file_size:27;
++ unsigned int offset:13;
++ unsigned int start_block;
++ unsigned int i_count:16;
++ unsigned int parent_inode;
++ struct squashfs_dir_index index[0];
++} __attribute__ ((packed));
++
++union squashfs_inode_header {
++ struct squashfs_base_inode_header base;
++ struct squashfs_dev_inode_header dev;
++ struct squashfs_symlink_inode_header symlink;
++ struct squashfs_reg_inode_header reg;
++ struct squashfs_lreg_inode_header lreg;
++ struct squashfs_dir_inode_header dir;
++ struct squashfs_ldir_inode_header ldir;
++ struct squashfs_ipc_inode_header ipc;
++};
++
++struct squashfs_dir_entry {
++ unsigned int offset:13;
++ unsigned int type:3;
++ unsigned int size:8;
++ int inode_number:16;
++ char name[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_header {
++ unsigned int count:8;
++ unsigned int start_block;
++ unsigned int inode_number;
++} __attribute__ ((packed));
++
++struct squashfs_fragment_entry {
++ long long start_block;
++ unsigned int size;
++ unsigned int unused;
++} __attribute__ ((packed));
++
++extern int squashfs_uncompress_block(void *d, int dstlen, void *s, int srclen);
++extern int squashfs_uncompress_init(void);
++extern int squashfs_uncompress_exit(void);
++
++/*
++ * macros to convert each packed bitfield structure from little endian to big
++ * endian and vice versa. These are needed when creating or using a filesystem
++ * on a machine with different byte ordering to the target architecture.
++ *
++ */
++
++#define SQUASHFS_SWAP_START \
++ int bits;\
++ int b_pos;\
++ unsigned long long val;\
++ unsigned char *s;\
++ unsigned char *d;
++
++#define SQUASHFS_SWAP_SUPER_BLOCK(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_super_block));\
++ SQUASHFS_SWAP((s)->s_magic, d, 0, 32);\
++ SQUASHFS_SWAP((s)->inodes, d, 32, 32);\
++ SQUASHFS_SWAP((s)->bytes_used_2, d, 64, 32);\
++ SQUASHFS_SWAP((s)->uid_start_2, d, 96, 32);\
++ SQUASHFS_SWAP((s)->guid_start_2, d, 128, 32);\
++ SQUASHFS_SWAP((s)->inode_table_start_2, d, 160, 32);\
++ SQUASHFS_SWAP((s)->directory_table_start_2, d, 192, 32);\
++ SQUASHFS_SWAP((s)->s_major, d, 224, 16);\
++ SQUASHFS_SWAP((s)->s_minor, d, 240, 16);\
++ SQUASHFS_SWAP((s)->block_size_1, d, 256, 16);\
++ SQUASHFS_SWAP((s)->block_log, d, 272, 16);\
++ SQUASHFS_SWAP((s)->flags, d, 288, 8);\
++ SQUASHFS_SWAP((s)->no_uids, d, 296, 8);\
++ SQUASHFS_SWAP((s)->no_guids, d, 304, 8);\
++ SQUASHFS_SWAP((s)->mkfs_time, d, 312, 32);\
++ SQUASHFS_SWAP((s)->root_inode, d, 344, 64);\
++ SQUASHFS_SWAP((s)->block_size, d, 408, 32);\
++ SQUASHFS_SWAP((s)->fragments, d, 440, 32);\
++ SQUASHFS_SWAP((s)->fragment_table_start_2, d, 472, 32);\
++ SQUASHFS_SWAP((s)->bytes_used, d, 504, 64);\
++ SQUASHFS_SWAP((s)->uid_start, d, 568, 64);\
++ SQUASHFS_SWAP((s)->guid_start, d, 632, 64);\
++ SQUASHFS_SWAP((s)->inode_table_start, d, 696, 64);\
++ SQUASHFS_SWAP((s)->directory_table_start, d, 760, 64);\
++ SQUASHFS_SWAP((s)->fragment_table_start, d, 824, 64);\
++ SQUASHFS_SWAP((s)->unused, d, 888, 64);\
++}
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
++ SQUASHFS_MEMSET(s, d, n);\
++ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
++ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
++ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
++ SQUASHFS_SWAP((s)->inode_number, d, 64, 32);
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER(s, d, n) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_ipc_inode_header))\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++}
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_dev_inode_header)); \
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->rdev, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_symlink_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->symlink_size, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_reg_inode_header));\
++ SQUASHFS_SWAP((s)->start_block, d, 96, 64);\
++ SQUASHFS_SWAP((s)->fragment, d, 160, 32);\
++ SQUASHFS_SWAP((s)->offset, d, 192, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 224, 32);\
++}
++
++#define SQUASHFS_SWAP_LREG_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_lreg_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 128, 64);\
++ SQUASHFS_SWAP((s)->fragment, d, 192, 32);\
++ SQUASHFS_SWAP((s)->offset, d, 224, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 256, 64);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_dir_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 128, 19);\
++ SQUASHFS_SWAP((s)->offset, d, 147, 13);\
++ SQUASHFS_SWAP((s)->start_block, d, 160, 32);\
++ SQUASHFS_SWAP((s)->parent_inode, d, 192, 32);\
++}
++
++#define SQUASHFS_SWAP_LDIR_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_ldir_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 128, 27);\
++ SQUASHFS_SWAP((s)->offset, d, 155, 13);\
++ SQUASHFS_SWAP((s)->start_block, d, 168, 32);\
++ SQUASHFS_SWAP((s)->i_count, d, 200, 16);\
++ SQUASHFS_SWAP((s)->parent_inode, d, 216, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INDEX(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index));\
++ SQUASHFS_SWAP((s)->index, d, 0, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 32, 32);\
++ SQUASHFS_SWAP((s)->size, d, 64, 8);\
++}
++
++#define SQUASHFS_SWAP_DIR_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header));\
++ SQUASHFS_SWAP((s)->count, d, 0, 8);\
++ SQUASHFS_SWAP((s)->start_block, d, 8, 32);\
++ SQUASHFS_SWAP((s)->inode_number, d, 40, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_ENTRY(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry));\
++ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
++ SQUASHFS_SWAP((s)->type, d, 13, 3);\
++ SQUASHFS_SWAP((s)->size, d, 16, 8);\
++ SQUASHFS_SWAP((s)->inode_number, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_ENTRY(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry));\
++ SQUASHFS_SWAP((s)->start_block, d, 0, 64);\
++ SQUASHFS_SWAP((s)->size, d, 64, 32);\
++}
++
++#define SQUASHFS_SWAP_SHORTS(s, d, n) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * 2);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ 16)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, 16);\
++}
++
++#define SQUASHFS_SWAP_INTS(s, d, n) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * 4);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ 32)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, 32);\
++}
++
++#define SQUASHFS_SWAP_LONG_LONGS(s, d, n) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * 8);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ 64)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, 64);\
++}
++
++#define SQUASHFS_SWAP_DATA(s, d, n, bits) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * bits / 8);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ bits)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, bits);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_INDEXES(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++
++struct squashfs_base_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned int type:4;
++ unsigned int offset:4;
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned short rdev;
++} __attribute__ ((packed));
++
++struct squashfs_symlink_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned short symlink_size;
++ char symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned int mtime;
++ unsigned int start_block;
++ unsigned int file_size:32;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned int file_size:19;
++ unsigned int offset:13;
++ unsigned int mtime;
++ unsigned int start_block:24;
++} __attribute__ ((packed));
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n) \
++ SQUASHFS_MEMSET(s, d, n);\
++ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++ SQUASHFS_SWAP((s)->uid, d, 16, 4);\
++ SQUASHFS_SWAP((s)->guid, d, 20, 4);
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER_1(s, d, n) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_ipc_inode_header_1));\
++ SQUASHFS_SWAP((s)->type, d, 24, 4);\
++ SQUASHFS_SWAP((s)->offset, d, 28, 4);\
++}
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_dev_inode_header_1));\
++ SQUASHFS_SWAP((s)->rdev, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_symlink_inode_header_1));\
++ SQUASHFS_SWAP((s)->symlink_size, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_reg_inode_header_1));\
++ SQUASHFS_SWAP((s)->mtime, d, 24, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 56, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 88, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_dir_inode_header_1));\
++ SQUASHFS_SWAP((s)->file_size, d, 24, 19);\
++ SQUASHFS_SWAP((s)->offset, d, 43, 13);\
++ SQUASHFS_SWAP((s)->mtime, d, 56, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 88, 24);\
++}
++
++#endif
++
++#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++
++struct squashfs_dir_index_2 {
++ unsigned int index:27;
++ unsigned int start_block:29;
++ unsigned char size;
++ unsigned char name[0];
++} __attribute__ ((packed));
++
++struct squashfs_base_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned short rdev;
++} __attribute__ ((packed));
++
++struct squashfs_symlink_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned short symlink_size;
++ char symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned int mtime;
++ unsigned int start_block;
++ unsigned int fragment;
++ unsigned int offset;
++ unsigned int file_size:32;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned int file_size:19;
++ unsigned int offset:13;
++ unsigned int mtime;
++ unsigned int start_block:24;
++} __attribute__ ((packed));
++
++struct squashfs_ldir_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned int file_size:27;
++ unsigned int offset:13;
++ unsigned int mtime;
++ unsigned int start_block:24;
++ unsigned int i_count:16;
++ struct squashfs_dir_index_2 index[0];
++} __attribute__ ((packed));
++
++union squashfs_inode_header_2 {
++ struct squashfs_base_inode_header_2 base;
++ struct squashfs_dev_inode_header_2 dev;
++ struct squashfs_symlink_inode_header_2 symlink;
++ struct squashfs_reg_inode_header_2 reg;
++ struct squashfs_dir_inode_header_2 dir;
++ struct squashfs_ldir_inode_header_2 ldir;
++ struct squashfs_ipc_inode_header_2 ipc;
++};
++
++struct squashfs_dir_header_2 {
++ unsigned int count:8;
++ unsigned int start_block:24;
++} __attribute__ ((packed));
++
++struct squashfs_dir_entry_2 {
++ unsigned int offset:13;
++ unsigned int type:3;
++ unsigned int size:8;
++ char name[0];
++} __attribute__ ((packed));
++
++struct squashfs_fragment_entry_2 {
++ unsigned int start_block;
++ unsigned int size;
++} __attribute__ ((packed));
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
++ SQUASHFS_MEMSET(s, d, n);\
++ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
++ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, n) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER_2(s, d) \
++ SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, sizeof(struct squashfs_ipc_inode_header_2))
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_dev_inode_header_2)); \
++ SQUASHFS_SWAP((s)->rdev, d, 32, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_symlink_inode_header_2));\
++ SQUASHFS_SWAP((s)->symlink_size, d, 32, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_reg_inode_header_2));\
++ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 64, 32);\
++ SQUASHFS_SWAP((s)->fragment, d, 96, 32);\
++ SQUASHFS_SWAP((s)->offset, d, 128, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 160, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_dir_inode_header_2));\
++ SQUASHFS_SWAP((s)->file_size, d, 32, 19);\
++ SQUASHFS_SWAP((s)->offset, d, 51, 13);\
++ SQUASHFS_SWAP((s)->mtime, d, 64, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 96, 24);\
++}
++
++#define SQUASHFS_SWAP_LDIR_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_ldir_inode_header_2));\
++ SQUASHFS_SWAP((s)->file_size, d, 32, 27);\
++ SQUASHFS_SWAP((s)->offset, d, 59, 13);\
++ SQUASHFS_SWAP((s)->mtime, d, 72, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 104, 24);\
++ SQUASHFS_SWAP((s)->i_count, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_DIR_INDEX_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index_2));\
++ SQUASHFS_SWAP((s)->index, d, 0, 27);\
++ SQUASHFS_SWAP((s)->start_block, d, 27, 29);\
++ SQUASHFS_SWAP((s)->size, d, 56, 8);\
++}
++#define SQUASHFS_SWAP_DIR_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header_2));\
++ SQUASHFS_SWAP((s)->count, d, 0, 8);\
++ SQUASHFS_SWAP((s)->start_block, d, 8, 24);\
++}
++
++#define SQUASHFS_SWAP_DIR_ENTRY_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry_2));\
++ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
++ SQUASHFS_SWAP((s)->type, d, 13, 3);\
++ SQUASHFS_SWAP((s)->size, d, 16, 8);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_ENTRY_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry_2));\
++ SQUASHFS_SWAP((s)->start_block, d, 0, 32);\
++ SQUASHFS_SWAP((s)->size, d, 32, 32);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_INDEXES_2(s, d, n) SQUASHFS_SWAP_INTS(s, d, n)
++
++/* fragment and fragment table defines */
++#define SQUASHFS_FRAGMENT_BYTES_2(A) (A * sizeof(struct squashfs_fragment_entry_2))
++
++#define SQUASHFS_FRAGMENT_INDEX_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_OFFSET_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) % \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEXES_2(A) ((SQUASHFS_FRAGMENT_BYTES_2(A) + \
++ SQUASHFS_METADATA_SIZE - 1) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_BYTES_2(A) (SQUASHFS_FRAGMENT_INDEXES_2(A) *\
++ sizeof(int))
++
++#endif
++
++#ifdef __KERNEL__
++
++/*
++ * macros used to swap each structure entry, taking into account
++ * bitfields and different bitfield placing conventions on differing
++ * architectures
++ */
++
++#include <asm/byteorder.h>
++
++#ifdef __BIG_ENDIAN
++ /* convert from little endian to big endian */
++#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
++ tbits, b_pos)
++#else
++ /* convert from big endian to little endian */
++#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
++ tbits, 64 - tbits - b_pos)
++#endif
++
++#define _SQUASHFS_SWAP(value, p, pos, tbits, SHIFT) {\
++ b_pos = pos % 8;\
++ val = 0;\
++ s = (unsigned char *)p + (pos / 8);\
++ d = ((unsigned char *) &val) + 7;\
++ for(bits = 0; bits < (tbits + b_pos); bits += 8) \
++ *d-- = *s++;\
++ value = (val >> (SHIFT))/* & ((1 << tbits) - 1)*/;\
++}
++
++#define SQUASHFS_MEMSET(s, d, n) memset(s, 0, n);
++
++#endif
++#endif
+diff --new-file -urp linux-2.6.18/include/linux/squashfs_fs_i.h linux-2.6.18-squashfs3.1/include/linux/squashfs_fs_i.h
+--- linux-2.6.18/include/linux/squashfs_fs_i.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-squashfs3.1/include/linux/squashfs_fs_i.h 2006-08-21 00:13:19.000000000 +0100
+@@ -0,0 +1,45 @@
++#ifndef SQUASHFS_FS_I
++#define SQUASHFS_FS_I
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs_i.h
++ */
++
++struct squashfs_inode_info {
++ long long start_block;
++ unsigned int offset;
++ union {
++ struct {
++ long long fragment_start_block;
++ unsigned int fragment_size;
++ unsigned int fragment_offset;
++ long long block_list_start;
++ } s1;
++ struct {
++ long long directory_index_start;
++ unsigned int directory_index_offset;
++ unsigned int directory_index_count;
++ unsigned int parent_inode;
++ } s2;
++ } u;
++ struct inode vfs_inode;
++};
++#endif
+diff --new-file -urp linux-2.6.18/include/linux/squashfs_fs_sb.h linux-2.6.18-squashfs3.1/include/linux/squashfs_fs_sb.h
+--- linux-2.6.18/include/linux/squashfs_fs_sb.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18-squashfs3.1/include/linux/squashfs_fs_sb.h 2006-08-21 00:16:48.000000000 +0100
+@@ -0,0 +1,75 @@
++#ifndef SQUASHFS_FS_SB
++#define SQUASHFS_FS_SB
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs_sb.h
++ */
++
++#include <linux/squashfs_fs.h>
++
++struct squashfs_cache {
++ long long block;
++ int length;
++ long long next_index;
++ char *data;
++};
++
++struct squashfs_fragment_cache {
++ long long block;
++ int length;
++ unsigned int locked;
++ char *data;
++};
++
++struct squashfs_sb_info {
++ struct squashfs_super_block sblk;
++ int devblksize;
++ int devblksize_log2;
++ int swap;
++ struct squashfs_cache *block_cache;
++ struct squashfs_fragment_cache *fragment;
++ int next_cache;
++ int next_fragment;
++ int next_meta_index;
++ unsigned int *uid;
++ unsigned int *guid;
++ long long *fragment_index;
++ unsigned int *fragment_index_2;
++ unsigned int read_size;
++ char *read_data;
++ char *read_page;
++ struct semaphore read_data_mutex;
++ struct semaphore read_page_mutex;
++ struct semaphore block_cache_mutex;
++ struct semaphore fragment_mutex;
++ struct semaphore meta_index_mutex;
++ wait_queue_head_t waitq;
++ wait_queue_head_t fragment_wait_queue;
++ struct meta_index *meta_index;
++ z_stream stream;
++ struct inode *(*iget)(struct super_block *s, squashfs_inode_t
++ inode);
++ long long (*read_blocklist)(struct inode *inode, int
++ index, int readahead_blks, char *block_list,
++ unsigned short **block_p, unsigned int *bsize);
++ int (*read_fragment_index_table)(struct super_block *s);
++};
++#endif
+diff --new-file -urp linux-2.6.18/init/do_mounts_rd.c linux-2.6.18-squashfs3.1/init/do_mounts_rd.c
+--- linux-2.6.18/init/do_mounts_rd.c 2006-08-11 00:03:15.000000000 +0100
++++ linux-2.6.18-squashfs3.1/init/do_mounts_rd.c 2006-08-21 00:13:19.000000000 +0100
+@@ -5,6 +5,7 @@
+ #include <linux/ext2_fs.h>
+ #include <linux/romfs_fs.h>
+ #include <linux/cramfs_fs.h>
++#include <linux/squashfs_fs.h>
+ #include <linux/initrd.h>
+ #include <linux/string.h>
+
+@@ -39,6 +40,7 @@ static int __init crd_load(int in_fd, in
+ * numbers could not be found.
+ *
+ * We currently check for the following magic numbers:
++ * squashfs
+ * minix
+ * ext2
+ * romfs
+@@ -53,6 +55,7 @@ identify_ramdisk_image(int fd, int start
+ struct ext2_super_block *ext2sb;
+ struct romfs_super_block *romfsb;
+ struct cramfs_super *cramfsb;
++ struct squashfs_super_block *squashfsb;
+ int nblocks = -1;
+ unsigned char *buf;
+
+@@ -64,6 +67,7 @@ identify_ramdisk_image(int fd, int start
+ ext2sb = (struct ext2_super_block *) buf;
+ romfsb = (struct romfs_super_block *) buf;
+ cramfsb = (struct cramfs_super *) buf;
++ squashfsb = (struct squashfs_super_block *) buf;
+ memset(buf, 0xe5, size);
+
+ /*
+@@ -101,6 +105,18 @@ identify_ramdisk_image(int fd, int start
+ goto done;
+ }
+
++ /* squashfs is at block zero too */
++ if (squashfsb->s_magic == SQUASHFS_MAGIC) {
++ printk(KERN_NOTICE
++ "RAMDISK: squashfs filesystem found at block %d\n",
++ start_block);
++ if (squashfsb->s_major < 3)
++ nblocks = (squashfsb->bytes_used_2+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
++ else
++ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
++ goto done;
++ }
++
+ /*
+ * Read block 1 to test for minix and ext2 superblock
+ */
diff --git a/packages/linux/linux-magicbox-2.6.19.2/.mtn2git_empty b/packages/linux/linux-magicbox-2.6.19.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/.mtn2git_empty
diff --git a/packages/linux/linux-magicbox-2.6.19.2/001-magicbox_support.patch b/packages/linux/linux-magicbox-2.6.19.2/001-magicbox_support.patch
new file mode 100644
index 0000000000..7c609e5d02
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/001-magicbox_support.patch
@@ -0,0 +1,372 @@
+diff -urN linux.old/arch/ppc/platforms/4xx/Kconfig linux.dev/arch/ppc/platforms/4xx/Kconfig
+--- linux.old/arch/ppc/platforms/4xx/Kconfig 2006-11-29 22:57:37.000000000 +0100
++++ linux.dev/arch/ppc/platforms/4xx/Kconfig 2006-12-14 08:49:18.000000000 +0100
+@@ -52,6 +52,12 @@
+ help
+ This option enables support for the IBM PPC405GP evaluation board.
+
++config MAGICBOX
++ bool "MagicBox"
++ select WANT_EARLY_SERIAL
++ help
++ This option enables support for the IBM PPC405EP evaluation board.
++
+ config XILINX_ML300
+ bool "Xilinx-ML300"
+ help
+@@ -173,7 +179,7 @@
+
+ config IBM_OCP
+ bool
+- depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT
++ depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT || MAGICBOX
+ default y
+
+ config IBM_EMAC4
+@@ -183,7 +189,7 @@
+
+ config BIOS_FIXUP
+ bool
+- depends on BUBINGA || EP405 || SYCAMORE || WALNUT || CPCI405
++ depends on BUBINGA || EP405 || SYCAMORE || WALNUT || CPCI405 || MAGICBOX
+ default y
+
+ # OAK doesn't exist but wanted to keep this around for any future 403GCX boards
+@@ -194,7 +200,7 @@
+
+ config 405EP
+ bool
+- depends on BUBINGA
++ depends on BUBINGA || MAGICBOX
+ default y
+
+ config 405GP
+diff -urN linux.old/arch/ppc/platforms/4xx/magicbox.c linux.dev/arch/ppc/platforms/4xx/magicbox.c
+--- linux.old/arch/ppc/platforms/4xx/magicbox.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/arch/ppc/platforms/4xx/magicbox.c 2006-12-14 08:48:56.000000000 +0100
+@@ -0,0 +1,249 @@
++/*
++ * Support for IBM PPC 405EP-based MagicBox board
++ * Copyright (C) 2006 Karol Lewandowski
++ *
++ * Heavily based on bubinga.c
++ *
++ * Author: SAW (IBM), derived from walnut.c.
++ * Maintained by MontaVista Software <source@mvista.com>
++ *
++ * 2003 (c) MontaVista Softare Inc. This file is licensed under the
++ * terms of the GNU General Public License version 2. This program is
++ * licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++
++#include <linux/autoconf.h>
++#include <linux/init.h>
++#include <linux/smp.h>
++#include <linux/threads.h>
++#include <linux/param.h>
++#include <linux/string.h>
++#include <linux/blkdev.h>
++#include <linux/pci.h>
++#include <linux/tty.h>
++#include <linux/serial.h>
++#include <linux/serial_core.h>
++
++#include <asm/system.h>
++#include <asm/pci-bridge.h>
++#include <asm/processor.h>
++#include <asm/machdep.h>
++#include <asm/page.h>
++#include <asm/time.h>
++#include <asm/io.h>
++#include <asm/kgdb.h>
++#include <asm/ocp.h>
++#include <asm/ibm_ocp_pci.h>
++
++#include <platforms/4xx/ibm405ep.h>
++
++#undef DEBUG
++
++#ifdef DEBUG
++#define DBG(x...) printk(x)
++#else
++#define DBG(x...)
++#endif
++
++extern bd_t __res;
++
++/* Some IRQs unique to board
++ * Used by the generic 405 PCI setup functions in ppc4xx_pci.c
++ */
++int __init
++ppc405_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
++{
++ static char pci_irq_table[][4] =
++ /*
++ * PCI IDSEL/INTPIN->INTLINE
++ * A B C D
++ */
++ {
++ {28, 28, 28, 28}, /* IDSEL 1 - PCI slot 1 */
++ {29, 29, 29, 29}, /* IDSEL 2 - PCI slot 2 */
++ {30, 30, 30, 30}, /* IDSEL 3 - PCI slot 3 */
++ {31, 31, 31, 31}, /* IDSEL 4 - PCI slot 4 */
++ };
++
++ const long min_idsel = 1, max_idsel = 4, irqs_per_slot = 4;
++ return PCI_IRQ_TABLE_LOOKUP;
++};
++
++
++/* The serial clock for the chip is an internal clock determined by
++ * different clock speeds/dividers.
++ * Calculate the proper input baud rate and setup the serial driver.
++ */
++static void __init
++magicbox_early_serial_map(void)
++{
++ u32 uart_div;
++ int uart_clock;
++ struct uart_port port;
++
++ /* Calculate the serial clock input frequency
++ *
++ * The base baud is the PLL OUTA (provided in the board info
++ * structure) divided by the external UART Divisor, divided
++ * by 16.
++ */
++ uart_div = (mfdcr(DCRN_CPC0_UCR_BASE) & DCRN_CPC0_UCR_U0DIV);
++ uart_clock = __res.bi_procfreq / uart_div;
++
++ /* Setup serial port access */
++ memset(&port, 0, sizeof(port));
++ port.membase = (void*)ACTING_UART0_IO_BASE;
++ port.irq = ACTING_UART0_INT;
++ port.uartclk = uart_clock;
++ port.regshift = 0;
++ port.iotype = SERIAL_IO_MEM;
++ port.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST;
++ port.line = 0;
++
++ if (early_serial_setup(&port) != 0) {
++ printk("Early serial init of port 0 failed\n");
++ }
++
++ port.membase = (void*)ACTING_UART1_IO_BASE;
++ port.irq = ACTING_UART1_INT;
++ port.line = 1;
++
++ if (early_serial_setup(&port) != 0) {
++ printk("Early serial init of port 1 failed\n");
++ }
++}
++
++void __init
++bios_fixup(struct pci_controller *hose, struct pcil0_regs *pcip)
++{
++ unsigned int bar_response, bar;
++ /*
++ * Expected PCI mapping:
++ *
++ * PLB addr PCI memory addr
++ * --------------------- ---------------------
++ * 0000'0000 - 7fff'ffff <--- 0000'0000 - 7fff'ffff
++ * 8000'0000 - Bfff'ffff ---> 8000'0000 - Bfff'ffff
++ *
++ * PLB addr PCI io addr
++ * --------------------- ---------------------
++ * e800'0000 - e800'ffff ---> 0000'0000 - 0001'0000
++ *
++ * The following code is simplified by assuming that the bootrom
++ * has been well behaved in following this mapping.
++ */
++
++#ifdef DEBUG
++ int i;
++
++ printk("ioremap PCLIO_BASE = 0x%x\n", pcip);
++ printk("PCI bridge regs before fixup \n");
++ for (i = 0; i <= 3; i++) {
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].ma)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].la)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].pcila)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].pciha)));
++ }
++ printk(" ptm1ms\t0x%x\n", in_le32(&(pcip->ptm1ms)));
++ printk(" ptm1la\t0x%x\n", in_le32(&(pcip->ptm1la)));
++ printk(" ptm2ms\t0x%x\n", in_le32(&(pcip->ptm2ms)));
++ printk(" ptm2la\t0x%x\n", in_le32(&(pcip->ptm2la)));
++
++#endif
++
++ /* added for IBM boot rom version 1.15 bios bar changes -AK */
++
++ /* Disable region first */
++ out_le32((void *) &(pcip->pmm[0].ma), 0x00000000);
++ /* PLB starting addr, PCI: 0x80000000 */
++ out_le32((void *) &(pcip->pmm[0].la), 0x80000000);
++ /* PCI start addr, 0x80000000 */
++ out_le32((void *) &(pcip->pmm[0].pcila), PPC405_PCI_MEM_BASE);
++ /* 512MB range of PLB to PCI */
++ out_le32((void *) &(pcip->pmm[0].pciha), 0x00000000);
++ /* Enable no pre-fetch, enable region */
++ out_le32((void *) &(pcip->pmm[0].ma), ((0xffffffff -
++ (PPC405_PCI_UPPER_MEM -
++ PPC405_PCI_MEM_BASE)) | 0x01));
++
++ /* Disable region one */
++ out_le32((void *) &(pcip->pmm[1].ma), 0x00000000);
++ out_le32((void *) &(pcip->pmm[1].la), 0x00000000);
++ out_le32((void *) &(pcip->pmm[1].pcila), 0x00000000);
++ out_le32((void *) &(pcip->pmm[1].pciha), 0x00000000);
++ out_le32((void *) &(pcip->pmm[1].ma), 0x00000000);
++ out_le32((void *) &(pcip->ptm1ms), 0x00000001);
++
++ /* Disable region two */
++ out_le32((void *) &(pcip->pmm[2].ma), 0x00000000);
++ out_le32((void *) &(pcip->pmm[2].la), 0x00000000);
++ out_le32((void *) &(pcip->pmm[2].pcila), 0x00000000);
++ out_le32((void *) &(pcip->pmm[2].pciha), 0x00000000);
++ out_le32((void *) &(pcip->pmm[2].ma), 0x00000000);
++ out_le32((void *) &(pcip->ptm2ms), 0x00000000);
++ out_le32((void *) &(pcip->ptm2la), 0x00000000);
++
++ /* Zero config bars */
++ for (bar = PCI_BASE_ADDRESS_1; bar <= PCI_BASE_ADDRESS_2; bar += 4) {
++ early_write_config_dword(hose, hose->first_busno,
++ PCI_FUNC(hose->first_busno), bar,
++ 0x00000000);
++ early_read_config_dword(hose, hose->first_busno,
++ PCI_FUNC(hose->first_busno), bar,
++ &bar_response);
++ DBG("BUS %d, device %d, Function %d bar 0x%8.8x is 0x%8.8x\n",
++ hose->first_busno, PCI_SLOT(hose->first_busno),
++ PCI_FUNC(hose->first_busno), bar, bar_response);
++ }
++ /* end work arround */
++
++#ifdef DEBUG
++ printk("PCI bridge regs after fixup \n");
++ for (i = 0; i <= 3; i++) {
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].ma)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].la)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].pcila)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].pciha)));
++ }
++ printk(" ptm1ms\t0x%x\n", in_le32(&(pcip->ptm1ms)));
++ printk(" ptm1la\t0x%x\n", in_le32(&(pcip->ptm1la)));
++ printk(" ptm2ms\t0x%x\n", in_le32(&(pcip->ptm2ms)));
++ printk(" ptm2la\t0x%x\n", in_le32(&(pcip->ptm2la)));
++
++#endif /* DEBUG */
++}
++
++void __init
++magicbox_setup_arch(void)
++{
++ ppc4xx_setup_arch();
++
++ ibm_ocp_set_emac(0, 1);
++
++ magicbox_early_serial_map();
++
++ /* Identify the system */
++ printk("MagicBox port (C) 2005 Karol Lewandowski <kl@jasmine.eu.org>\n");
++}
++
++void __init
++magicbox_map_io(void)
++{
++ ppc4xx_map_io();
++}
++
++void __init
++platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
++ unsigned long r6, unsigned long r7)
++{
++ ppc4xx_init(r3, r4, r5, r6, r7);
++
++ ppc_md.setup_arch = magicbox_setup_arch;
++ ppc_md.setup_io_mappings = magicbox_map_io;
++
++#ifdef CONFIG_KGDB
++ ppc_md.early_serial_map = bubinga_early_serial_map;
++#endif
++
++}
+diff -urN linux.old/arch/ppc/platforms/4xx/magicbox.h linux.dev/arch/ppc/platforms/4xx/magicbox.h
+--- linux.old/arch/ppc/platforms/4xx/magicbox.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/arch/ppc/platforms/4xx/magicbox.h 2006-12-14 08:48:56.000000000 +0100
+@@ -0,0 +1,47 @@
++/*
++ * Support for IBM PPC 405EP-based MagicBox board
++ *
++ * Heavily based on bubinga.h
++ *
++ *
++ * Author: SAW (IBM), derived from walnut.h.
++ * Maintained by MontaVista Software <source@mvista.com>
++ *
++ * 2003 (c) MontaVista Softare Inc. This file is licensed under the
++ * terms of the GNU General Public License version 2. This program is
++ * licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++
++#ifdef __KERNEL__
++#ifndef __MAGICBOX_H__
++#define __MAGICBOX_H__
++
++#include <linux/autoconf.h>
++#include <platforms/4xx/ibm405ep.h>
++#include <asm/ppcboot.h>
++
++/* Memory map for the "MagicBox" 405EP evaluation board -- generic 4xx. */
++
++/* The UART clock is based off an internal clock -
++ * define BASE_BAUD based on the internal clock and divider(s).
++ * Since BASE_BAUD must be a constant, we will initialize it
++ * using clock/divider values which OpenBIOS initializes
++ * for typical configurations at various CPU speeds.
++ * The base baud is calculated as (FWDA / EXT UART DIV / 16)
++ */
++#define BASE_BAUD 0
++
++/* Flash */
++#define PPC40x_FPGA_BASE 0xF0300000
++#define PPC40x_FPGA_REG_OFFS 1 /* offset to flash map reg */
++#define PPC40x_FLASH_ONBD_N(x) (x & 0x02)
++#define PPC40x_FLASH_SRAM_SEL(x) (x & 0x01)
++#define PPC40x_FLASH_LOW 0xFFF00000
++#define PPC40x_FLASH_HIGH 0xFFF80000
++#define PPC40x_FLASH_SIZE 0x80000
++
++#define PPC4xx_MACHINE_NAME "MagicBox"
++
++#endif /* __MAGICBOX_H__ */
++#endif /* __KERNEL__ */
+diff -urN linux.old/arch/ppc/platforms/4xx/Makefile linux.dev/arch/ppc/platforms/4xx/Makefile
+--- linux.old/arch/ppc/platforms/4xx/Makefile 2006-11-29 22:57:37.000000000 +0100
++++ linux.dev/arch/ppc/platforms/4xx/Makefile 2006-12-14 08:48:56.000000000 +0100
+@@ -13,6 +13,7 @@
+ obj-$(CONFIG_REDWOOD_6) += redwood6.o
+ obj-$(CONFIG_SYCAMORE) += sycamore.o
+ obj-$(CONFIG_WALNUT) += walnut.o
++obj-$(CONFIG_MAGICBOX) += magicbox.o
+ obj-$(CONFIG_XILINX_ML300) += xilinx_ml300.o
+ obj-$(CONFIG_XILINX_ML403) += xilinx_ml403.o
+
+diff -urN linux.old/include/asm-ppc/ibm4xx.h linux.dev/include/asm-ppc/ibm4xx.h
+--- linux.old/include/asm-ppc/ibm4xx.h 2006-11-29 22:57:37.000000000 +0100
++++ linux.dev/include/asm-ppc/ibm4xx.h 2006-12-14 08:48:56.000000000 +0100
+@@ -18,6 +18,10 @@
+
+ #ifdef CONFIG_40x
+
++#if defined(CONFIG_MAGICBOX)
++#include <platforms/4xx/magicbox.h>
++#endif
++
+ #if defined(CONFIG_BUBINGA)
+ #include <platforms/4xx/bubinga.h>
+ #endif
diff --git a/packages/linux/linux-magicbox-2.6.19.2/001-squashfs.patch b/packages/linux/linux-magicbox-2.6.19.2/001-squashfs.patch
new file mode 100644
index 0000000000..6881cd0bb1
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/001-squashfs.patch
@@ -0,0 +1,4170 @@
+diff -urN linux-2.6.19.old/fs/Kconfig linux-2.6.19.dev/fs/Kconfig
+--- linux-2.6.19.old/fs/Kconfig 2006-12-14 03:13:16.000000000 +0100
++++ linux-2.6.19.dev/fs/Kconfig 2006-12-14 03:13:16.000000000 +0100
+@@ -1457,6 +1457,71 @@
+
+ If unsure, say N.
+
++config SQUASHFS
++ tristate "SquashFS 3.0 - Squashed file system support"
++ select ZLIB_INFLATE
++ help
++ Saying Y here includes support for SquashFS 3.0 (a Compressed Read-Only File
++ System). Squashfs is a highly compressed read-only filesystem for Linux.
++ It uses zlib compression to compress both files, inodes and directories.
++ Inodes in the system are very small and all blocks are packed to minimise
++ data overhead. Block sizes greater than 4K are supported up to a maximum of 64K.
++ SquashFS 3.0 supports 64 bit filesystems and files (larger than 4GB), full
++ uid/gid information, hard links and timestamps.
++
++ Squashfs is intended for general read-only filesystem use, for archival
++ use (i.e. in cases where a .tar.gz file may be used), and in embedded
++ systems where low overhead is needed. Further information and filesystem tools
++ are available from http://squashfs.sourceforge.net.
++
++ If you want to compile this as a module ( = code which can be
++ inserted in and removed from the running kernel whenever you want),
++ say M here and read <file:Documentation/modules.txt>. The module
++ will be called squashfs. Note that the root file system (the one
++ containing the directory /) cannot be compiled as a module.
++
++ If unsure, say N.
++
++config SQUASHFS_EMBEDDED
++
++ bool "Additional options for memory-constrained systems"
++ depends on SQUASHFS
++ default n
++ help
++ Saying Y here allows you to specify cache sizes and how Squashfs
++ allocates memory. This is only intended for memory constrained
++ systems.
++
++ If unsure, say N.
++
++config SQUASHFS_FRAGMENT_CACHE_SIZE
++ int "Number of fragments cached" if SQUASHFS_EMBEDDED
++ depends on SQUASHFS
++ default "3"
++ help
++ By default SquashFS caches the last 3 fragments read from
++ the filesystem. Increasing this amount may mean SquashFS
++ has to re-read fragments less often from disk, at the expense
++ of extra system memory. Decreasing this amount will mean
++ SquashFS uses less memory at the expense of extra reads from disk.
++
++ Note there must be at least one cached fragment. Anything
++ much more than three will probably not make much difference.
++
++config SQUASHFS_VMALLOC
++ bool "Use Vmalloc rather than Kmalloc" if SQUASHFS_EMBEDDED
++ depends on SQUASHFS
++ default n
++ help
++ By default SquashFS uses kmalloc to obtain fragment cache memory.
++ Kmalloc memory is the standard kernel allocator, but it can fail
++ on memory constrained systems. Because of the way Vmalloc works,
++ Vmalloc can succeed when kmalloc fails. Specifying this option
++ will make SquashFS always use Vmalloc to allocate the
++ fragment cache memory.
++
++ If unsure, say N.
++
+ config VXFS_FS
+ tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
+ depends on BLOCK
+diff -urN linux-2.6.19.old/fs/Makefile linux-2.6.19.dev/fs/Makefile
+--- linux-2.6.19.old/fs/Makefile 2006-12-14 03:13:16.000000000 +0100
++++ linux-2.6.19.dev/fs/Makefile 2006-12-14 03:13:16.000000000 +0100
+@@ -67,6 +67,7 @@
+ obj-$(CONFIG_JBD2) += jbd2/
+ obj-$(CONFIG_EXT2_FS) += ext2/
+ obj-$(CONFIG_CRAMFS) += cramfs/
++obj-$(CONFIG_SQUASHFS) += squashfs/
+ obj-$(CONFIG_RAMFS) += ramfs/
+ obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
+ obj-$(CONFIG_CODA_FS) += coda/
+diff -urN linux-2.6.19.old/fs/squashfs/inode.c linux-2.6.19.dev/fs/squashfs/inode.c
+--- linux-2.6.19.old/fs/squashfs/inode.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/squashfs/inode.c 2006-12-14 03:13:16.000000000 +0100
+@@ -0,0 +1,2124 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * inode.c
++ */
++
++#include <linux/types.h>
++#include <linux/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/errno.h>
++#include <linux/slab.h>
++#include <linux/fs.h>
++#include <linux/smp_lock.h>
++#include <linux/slab.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.h>
++#include <linux/buffer_head.h>
++#include <linux/vfs.h>
++#include <linux/init.h>
++#include <linux/dcache.h>
++#include <linux/wait.h>
++#include <linux/zlib.h>
++#include <linux/blkdev.h>
++#include <linux/vmalloc.h>
++#include <asm/uaccess.h>
++#include <asm/semaphore.h>
++
++#include "squashfs.h"
++
++static void squashfs_put_super(struct super_block *);
++static int squashfs_statfs(struct dentry *, struct kstatfs *);
++static int squashfs_symlink_readpage(struct file *file, struct page *page);
++static int squashfs_readpage(struct file *file, struct page *page);
++static int squashfs_readpage4K(struct file *file, struct page *page);
++static int squashfs_readdir(struct file *, void *, filldir_t);
++static struct inode *squashfs_alloc_inode(struct super_block *sb);
++static void squashfs_destroy_inode(struct inode *inode);
++static int init_inodecache(void);
++static void destroy_inodecache(void);
++static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
++ struct nameidata *);
++static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode);
++static long long read_blocklist(struct inode *inode, int index,
++ int readahead_blks, char *block_list,
++ unsigned short **block_p, unsigned int *bsize);
++static int squashfs_get_sb(struct file_system_type *, int,
++ const char *, void *, struct vfsmount *);
++
++
++static z_stream stream;
++
++static struct file_system_type squashfs_fs_type = {
++ .owner = THIS_MODULE,
++ .name = "squashfs",
++ .get_sb = squashfs_get_sb,
++ .kill_sb = kill_block_super,
++ .fs_flags = FS_REQUIRES_DEV
++};
++
++static unsigned char squashfs_filetype_table[] = {
++ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
++};
++
++static struct super_operations squashfs_ops = {
++ .alloc_inode = squashfs_alloc_inode,
++ .destroy_inode = squashfs_destroy_inode,
++ .statfs = squashfs_statfs,
++ .put_super = squashfs_put_super,
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_symlink_aops = {
++ .readpage = squashfs_symlink_readpage
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_aops = {
++ .readpage = squashfs_readpage
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_aops_4K = {
++ .readpage = squashfs_readpage4K
++};
++
++static struct file_operations squashfs_dir_ops = {
++ .read = generic_read_dir,
++ .readdir = squashfs_readdir
++};
++
++SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
++ .lookup = squashfs_lookup
++};
++
++
++static struct buffer_head *get_block_length(struct super_block *s,
++ int *cur_index, int *offset, int *c_byte)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ unsigned short temp;
++ struct buffer_head *bh;
++
++ if (!(bh = sb_bread(s, *cur_index)))
++ goto out;
++
++ if (msblk->devblksize - *offset == 1) {
++ if (msblk->swap)
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ (bh->b_data + *offset));
++ else
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ (bh->b_data + *offset));
++ brelse(bh);
++ if (!(bh = sb_bread(s, ++(*cur_index))))
++ goto out;
++ if (msblk->swap)
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ bh->b_data);
++ else
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ bh->b_data);
++ *c_byte = temp;
++ *offset = 1;
++ } else {
++ if (msblk->swap) {
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ (bh->b_data + *offset));
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ (bh->b_data + *offset + 1));
++ } else {
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ (bh->b_data + *offset));
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ (bh->b_data + *offset + 1));
++ }
++ *c_byte = temp;
++ *offset += 2;
++ }
++
++ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) {
++ if (*offset == msblk->devblksize) {
++ brelse(bh);
++ if (!(bh = sb_bread(s, ++(*cur_index))))
++ goto out;
++ *offset = 0;
++ }
++ if (*((unsigned char *) (bh->b_data + *offset)) !=
++ SQUASHFS_MARKER_BYTE) {
++ ERROR("Metadata block marker corrupt @ %x\n",
++ *cur_index);
++ brelse(bh);
++ goto out;
++ }
++ (*offset)++;
++ }
++ return bh;
++
++out:
++ return NULL;
++}
++
++
++SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer,
++ long long index, unsigned int length,
++ long long *next_index)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct buffer_head *bh[((SQUASHFS_FILE_MAX_SIZE - 1) >>
++ msblk->devblksize_log2) + 2];
++ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1);
++ unsigned int cur_index = index >> msblk->devblksize_log2;
++ int bytes, avail_bytes, b = 0, k;
++ char *c_buffer;
++ unsigned int compressed;
++ unsigned int c_byte = length;
++
++ if (c_byte) {
++ bytes = msblk->devblksize - offset;
++ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
++ c_buffer = compressed ? msblk->read_data : buffer;
++ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
++
++ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
++ ? "" : "un", (unsigned int) c_byte);
++
++ if (!(bh[0] = sb_getblk(s, cur_index)))
++ goto block_release;
++
++ for (b = 1; bytes < c_byte; b++) {
++ if (!(bh[b] = sb_getblk(s, ++cur_index)))
++ goto block_release;
++ bytes += msblk->devblksize;
++ }
++ ll_rw_block(READ, b, bh);
++ } else {
++ if (!(bh[0] = get_block_length(s, &cur_index, &offset,
++ &c_byte)))
++ goto read_failure;
++
++ bytes = msblk->devblksize - offset;
++ compressed = SQUASHFS_COMPRESSED(c_byte);
++ c_buffer = compressed ? msblk->read_data : buffer;
++ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
++
++ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
++ ? "" : "un", (unsigned int) c_byte);
++
++ for (b = 1; bytes < c_byte; b++) {
++ if (!(bh[b] = sb_getblk(s, ++cur_index)))
++ goto block_release;
++ bytes += msblk->devblksize;
++ }
++ ll_rw_block(READ, b - 1, bh + 1);
++ }
++
++ if (compressed)
++ down(&msblk->read_data_mutex);
++
++ for (bytes = 0, k = 0; k < b; k++) {
++ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
++ msblk->devblksize - offset :
++ c_byte - bytes;
++ wait_on_buffer(bh[k]);
++ if (!buffer_uptodate(bh[k]))
++ goto block_release;
++ memcpy(c_buffer + bytes, bh[k]->b_data + offset, avail_bytes);
++ bytes += avail_bytes;
++ offset = 0;
++ brelse(bh[k]);
++ }
++
++ /*
++ * uncompress block
++ */
++ if (compressed) {
++ int zlib_err;
++
++ stream.next_in = c_buffer;
++ stream.avail_in = c_byte;
++ stream.next_out = buffer;
++ stream.avail_out = msblk->read_size;
++
++ if (((zlib_err = zlib_inflateInit(&stream)) != Z_OK) ||
++ ((zlib_err = zlib_inflate(&stream, Z_FINISH))
++ != Z_STREAM_END) || ((zlib_err =
++ zlib_inflateEnd(&stream)) != Z_OK)) {
++ ERROR("zlib_fs returned unexpected result 0x%x\n",
++ zlib_err);
++ bytes = 0;
++ } else
++ bytes = stream.total_out;
++
++ up(&msblk->read_data_mutex);
++ }
++
++ if (next_index)
++ *next_index = index + c_byte + (length ? 0 :
++ (SQUASHFS_CHECK_DATA(msblk->sblk.flags)
++ ? 3 : 2));
++ return bytes;
++
++block_release:
++ while (--b >= 0)
++ brelse(bh[b]);
++
++read_failure:
++ ERROR("sb_bread failed reading block 0x%x\n", cur_index);
++ return 0;
++}
++
++
++SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, char *buffer,
++ long long block, unsigned int offset,
++ int length, long long *next_block,
++ unsigned int *next_offset)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ int n, i, bytes, return_length = length;
++ long long next_index;
++
++ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset);
++
++ while ( 1 ) {
++ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
++ if (msblk->block_cache[i].block == block)
++ break;
++
++ down(&msblk->block_cache_mutex);
++
++ if (i == SQUASHFS_CACHED_BLKS) {
++ /* read inode header block */
++ for (i = msblk->next_cache, n = SQUASHFS_CACHED_BLKS;
++ n ; n --, i = (i + 1) %
++ SQUASHFS_CACHED_BLKS)
++ if (msblk->block_cache[i].block !=
++ SQUASHFS_USED_BLK)
++ break;
++
++ if (n == 0) {
++ wait_queue_t wait;
++
++ init_waitqueue_entry(&wait, current);
++ add_wait_queue(&msblk->waitq, &wait);
++ set_current_state(TASK_UNINTERRUPTIBLE);
++ up(&msblk->block_cache_mutex);
++ schedule();
++ set_current_state(TASK_RUNNING);
++ remove_wait_queue(&msblk->waitq, &wait);
++ continue;
++ }
++ msblk->next_cache = (i + 1) % SQUASHFS_CACHED_BLKS;
++
++ if (msblk->block_cache[i].block ==
++ SQUASHFS_INVALID_BLK) {
++ if (!(msblk->block_cache[i].data =
++ kmalloc(SQUASHFS_METADATA_SIZE,
++ GFP_KERNEL))) {
++ ERROR("Failed to allocate cache"
++ "block\n");
++ up(&msblk->block_cache_mutex);
++ goto out;
++ }
++ }
++
++ msblk->block_cache[i].block = SQUASHFS_USED_BLK;
++ up(&msblk->block_cache_mutex);
++
++ if (!(msblk->block_cache[i].length =
++ squashfs_read_data(s,
++ msblk->block_cache[i].data,
++ block, 0, &next_index))) {
++ ERROR("Unable to read cache block [%llx:%x]\n",
++ block, offset);
++ goto out;
++ }
++
++ down(&msblk->block_cache_mutex);
++ wake_up(&msblk->waitq);
++ msblk->block_cache[i].block = block;
++ msblk->block_cache[i].next_index = next_index;
++ TRACE("Read cache block [%llx:%x]\n", block, offset);
++ }
++
++ if (msblk->block_cache[i].block != block) {
++ up(&msblk->block_cache_mutex);
++ continue;
++ }
++
++ if ((bytes = msblk->block_cache[i].length - offset) >= length) {
++ if (buffer)
++ memcpy(buffer, msblk->block_cache[i].data +
++ offset, length);
++ if (msblk->block_cache[i].length - offset == length) {
++ *next_block = msblk->block_cache[i].next_index;
++ *next_offset = 0;
++ } else {
++ *next_block = block;
++ *next_offset = offset + length;
++ }
++ up(&msblk->block_cache_mutex);
++ goto finish;
++ } else {
++ if (buffer) {
++ memcpy(buffer, msblk->block_cache[i].data +
++ offset, bytes);
++ buffer += bytes;
++ }
++ block = msblk->block_cache[i].next_index;
++ up(&msblk->block_cache_mutex);
++ length -= bytes;
++ offset = 0;
++ }
++ }
++
++finish:
++ return return_length;
++out:
++ return 0;
++}
++
++
++static int get_fragment_location(struct super_block *s, unsigned int fragment,
++ long long *fragment_start_block,
++ unsigned int *fragment_size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ long long start_block =
++ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)];
++ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment);
++ struct squashfs_fragment_entry fragment_entry;
++
++ if (msblk->swap) {
++ struct squashfs_fragment_entry sfragment_entry;
++
++ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
++ start_block, offset,
++ sizeof(sfragment_entry), &start_block,
++ &offset))
++ goto out;
++ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry);
++ } else
++ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
++ start_block, offset,
++ sizeof(fragment_entry), &start_block,
++ &offset))
++ goto out;
++
++ *fragment_start_block = fragment_entry.start_block;
++ *fragment_size = fragment_entry.size;
++
++ return 1;
++
++out:
++ return 0;
++}
++
++
++SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, struct
++ squashfs_fragment_cache *fragment)
++{
++ down(&msblk->fragment_mutex);
++ fragment->locked --;
++ wake_up(&msblk->fragment_wait_queue);
++ up(&msblk->fragment_mutex);
++}
++
++
++SQSH_EXTERN struct squashfs_fragment_cache *get_cached_fragment(struct super_block
++ *s, long long start_block,
++ int length)
++{
++ int i, n;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++
++ while ( 1 ) {
++ down(&msblk->fragment_mutex);
++
++ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS &&
++ msblk->fragment[i].block != start_block; i++);
++
++ if (i == SQUASHFS_CACHED_FRAGMENTS) {
++ for (i = msblk->next_fragment, n =
++ SQUASHFS_CACHED_FRAGMENTS; n &&
++ msblk->fragment[i].locked; n--, i = (i + 1) %
++ SQUASHFS_CACHED_FRAGMENTS);
++
++ if (n == 0) {
++ wait_queue_t wait;
++
++ init_waitqueue_entry(&wait, current);
++ add_wait_queue(&msblk->fragment_wait_queue,
++ &wait);
++ set_current_state(TASK_UNINTERRUPTIBLE);
++ up(&msblk->fragment_mutex);
++ schedule();
++ set_current_state(TASK_RUNNING);
++ remove_wait_queue(&msblk->fragment_wait_queue,
++ &wait);
++ continue;
++ }
++ msblk->next_fragment = (msblk->next_fragment + 1) %
++ SQUASHFS_CACHED_FRAGMENTS;
++
++ if (msblk->fragment[i].data == NULL)
++ if (!(msblk->fragment[i].data = SQUASHFS_ALLOC
++ (SQUASHFS_FILE_MAX_SIZE))) {
++ ERROR("Failed to allocate fragment "
++ "cache block\n");
++ up(&msblk->fragment_mutex);
++ goto out;
++ }
++
++ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
++ msblk->fragment[i].locked = 1;
++ up(&msblk->fragment_mutex);
++
++ if (!(msblk->fragment[i].length = squashfs_read_data(s,
++ msblk->fragment[i].data,
++ start_block, length, NULL))) {
++ ERROR("Unable to read fragment cache block "
++ "[%llx]\n", start_block);
++ msblk->fragment[i].locked = 0;
++ goto out;
++ }
++
++ msblk->fragment[i].block = start_block;
++ TRACE("New fragment %d, start block %lld, locked %d\n",
++ i, msblk->fragment[i].block,
++ msblk->fragment[i].locked);
++ break;
++ }
++
++ msblk->fragment[i].locked++;
++ up(&msblk->fragment_mutex);
++ TRACE("Got fragment %d, start block %lld, locked %d\n", i,
++ msblk->fragment[i].block,
++ msblk->fragment[i].locked);
++ break;
++ }
++
++ return &msblk->fragment[i];
++
++out:
++ return NULL;
++}
++
++
++static struct inode *squashfs_new_inode(struct super_block *s,
++ struct squashfs_base_inode_header *inodeb)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct inode *i = new_inode(s);
++
++ if (i) {
++ i->i_ino = inodeb->inode_number;
++ i->i_mtime.tv_sec = inodeb->mtime;
++ i->i_atime.tv_sec = inodeb->mtime;
++ i->i_ctime.tv_sec = inodeb->mtime;
++ i->i_uid = msblk->uid[inodeb->uid];
++ i->i_mode = inodeb->mode;
++ i->i_size = 0;
++ if (inodeb->guid == SQUASHFS_GUIDS)
++ i->i_gid = i->i_uid;
++ else
++ i->i_gid = msblk->guid[inodeb->guid];
++ }
++
++ return i;
++}
++
++
++static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode)
++{
++ struct inode *i;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long block = SQUASHFS_INODE_BLK(inode) +
++ sblk->inode_table_start;
++ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
++ long long next_block;
++ unsigned int next_offset;
++ union squashfs_inode_header id, sid;
++ struct squashfs_base_inode_header *inodeb = &id.base,
++ *sinodeb = &sid.base;
++
++ TRACE("Entered squashfs_iget\n");
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
++ offset, sizeof(*sinodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb,
++ sizeof(*sinodeb));
++ } else
++ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
++ offset, sizeof(*inodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ switch(inodeb->inode_type) {
++ case SQUASHFS_FILE_TYPE: {
++ unsigned int frag_size;
++ long long frag_blk;
++ struct squashfs_reg_inode_header *inodep = &id.reg;
++ struct squashfs_reg_inode_header *sinodep = &sid.reg;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ frag_blk = SQUASHFS_INVALID_BLK;
++ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
++ !get_fragment_location(s,
++ inodep->fragment, &frag_blk, &frag_size))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = 1;
++ i->i_size = inodep->file_size;
++ i->i_fop = &generic_ro_fops;
++ i->i_mode |= S_IFREG;
++ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++ if (sblk->block_size > 4096)
++ i->i_data.a_ops = &squashfs_aops;
++ else
++ i->i_data.a_ops = &squashfs_aops_4K;
++
++ TRACE("File inode %x:%x, start_block %llx, "
++ "block_list_start %llx, offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, next_block,
++ next_offset);
++ break;
++ }
++ case SQUASHFS_LREG_TYPE: {
++ unsigned int frag_size;
++ long long frag_blk;
++ struct squashfs_lreg_inode_header *inodep = &id.lreg;
++ struct squashfs_lreg_inode_header *sinodep = &sid.lreg;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ frag_blk = SQUASHFS_INVALID_BLK;
++ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
++ !get_fragment_location(s,
++ inodep->fragment, &frag_blk, &frag_size))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->file_size;
++ i->i_fop = &generic_ro_fops;
++ i->i_mode |= S_IFREG;
++ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++ if (sblk->block_size > 4096)
++ i->i_data.a_ops = &squashfs_aops;
++ else
++ i->i_data.a_ops = &squashfs_aops_4K;
++
++ TRACE("File inode %x:%x, start_block %llx, "
++ "block_list_start %llx, offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, next_block,
++ next_offset);
++ break;
++ }
++ case SQUASHFS_DIR_TYPE: {
++ struct squashfs_dir_inode_header *inodep = &id.dir;
++ struct squashfs_dir_inode_header *sinodep = &sid.dir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops;
++ i->i_fop = &squashfs_dir_ops;
++ i->i_mode |= S_IFDIR;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
++ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
++
++ TRACE("Directory inode %x:%x, start_block %x, offset "
++ "%x\n", SQUASHFS_INODE_BLK(inode),
++ offset, inodep->start_block,
++ inodep->offset);
++ break;
++ }
++ case SQUASHFS_LDIR_TYPE: {
++ struct squashfs_ldir_inode_header *inodep = &id.ldir;
++ struct squashfs_ldir_inode_header *sinodep = &sid.ldir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops;
++ i->i_fop = &squashfs_dir_ops;
++ i->i_mode |= S_IFDIR;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
++ SQUASHFS_I(i)->u.s2.directory_index_offset =
++ next_offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count =
++ inodep->i_count;
++ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
++
++ TRACE("Long directory inode %x:%x, start_block %x, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, inodep->offset);
++ break;
++ }
++ case SQUASHFS_SYMLINK_TYPE: {
++ struct squashfs_symlink_inode_header *inodep =
++ &id.symlink;
++ struct squashfs_symlink_inode_header *sinodep =
++ &sid.symlink;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->symlink_size;
++ i->i_op = &page_symlink_inode_operations;
++ i->i_data.a_ops = &squashfs_symlink_aops;
++ i->i_mode |= S_IFLNK;
++ SQUASHFS_I(i)->start_block = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++
++ TRACE("Symbolic link inode %x:%x, start_block %llx, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ next_block, next_offset);
++ break;
++ }
++ case SQUASHFS_BLKDEV_TYPE:
++ case SQUASHFS_CHRDEV_TYPE: {
++ struct squashfs_dev_inode_header *inodep = &id.dev;
++ struct squashfs_dev_inode_header *sinodep = &sid.dev;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_mode |= (inodeb->inode_type ==
++ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
++ S_IFBLK;
++ init_special_inode(i, i->i_mode,
++ old_decode_dev(inodep->rdev));
++
++ TRACE("Device inode %x:%x, rdev %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->rdev);
++ break;
++ }
++ case SQUASHFS_FIFO_TYPE:
++ case SQUASHFS_SOCKET_TYPE: {
++ struct squashfs_ipc_inode_header *inodep = &id.ipc;
++ struct squashfs_ipc_inode_header *sinodep = &sid.ipc;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
++ ? S_IFIFO : S_IFSOCK;
++ init_special_inode(i, i->i_mode, 0);
++ break;
++ }
++ default:
++ ERROR("Unknown inode type %d in squashfs_iget!\n",
++ inodeb->inode_type);
++ goto failed_read1;
++ }
++
++ insert_inode_hash(i);
++ return i;
++
++failed_read:
++ ERROR("Unable to read inode [%llx:%x]\n", block, offset);
++
++failed_read1:
++ return NULL;
++}
++
++
++static int read_fragment_index_table(struct super_block *s)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ /* Allocate fragment index table */
++ if (!(msblk->fragment_index = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES
++ (sblk->fragments), GFP_KERNEL))) {
++ ERROR("Failed to allocate uid/gid table\n");
++ return 0;
++ }
++
++ if (SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments) &&
++ !squashfs_read_data(s, (char *)
++ msblk->fragment_index,
++ sblk->fragment_table_start,
++ SQUASHFS_FRAGMENT_INDEX_BYTES
++ (sblk->fragments) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read fragment index table\n");
++ return 0;
++ }
++
++ if (msblk->swap) {
++ int i;
++ long long fragment;
++
++ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES(sblk->fragments);
++ i++) {
++ SQUASHFS_SWAP_FRAGMENT_INDEXES((&fragment),
++ &msblk->fragment_index[i], 1);
++ msblk->fragment_index[i] = fragment;
++ }
++ }
++
++ return 1;
++}
++
++
++static int supported_squashfs_filesystem(struct squashfs_sb_info *msblk, int silent)
++{
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ msblk->iget = squashfs_iget;
++ msblk->read_blocklist = read_blocklist;
++ msblk->read_fragment_index_table = read_fragment_index_table;
++
++ if (sblk->s_major == 1) {
++ if (!squashfs_1_0_supported(msblk)) {
++ SERROR("Major/Minor mismatch, Squashfs 1.0 filesystems "
++ "are unsupported\n");
++ SERROR("Please recompile with "
++ "Squashfs 1.0 support enabled\n");
++ return 0;
++ }
++ } else if (sblk->s_major == 2) {
++ if (!squashfs_2_0_supported(msblk)) {
++ SERROR("Major/Minor mismatch, Squashfs 2.0 filesystems "
++ "are unsupported\n");
++ SERROR("Please recompile with "
++ "Squashfs 2.0 support enabled\n");
++ return 0;
++ }
++ } else if(sblk->s_major != SQUASHFS_MAJOR || sblk->s_minor >
++ SQUASHFS_MINOR) {
++ SERROR("Major/Minor mismatch, trying to mount newer %d.%d "
++ "filesystem\n", sblk->s_major, sblk->s_minor);
++ SERROR("Please update your kernel\n");
++ return 0;
++ }
++
++ return 1;
++}
++
++
++static int squashfs_fill_super(struct super_block *s, void *data, int silent)
++{
++ struct squashfs_sb_info *msblk;
++ struct squashfs_super_block *sblk;
++ int i;
++ char b[BDEVNAME_SIZE];
++ struct inode *root;
++
++ TRACE("Entered squashfs_read_superblock\n");
++
++ if (!(s->s_fs_info = kmalloc(sizeof(struct squashfs_sb_info),
++ GFP_KERNEL))) {
++ ERROR("Failed to allocate superblock\n");
++ goto failure;
++ }
++ memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info));
++ msblk = s->s_fs_info;
++ sblk = &msblk->sblk;
++
++ msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
++ msblk->devblksize_log2 = ffz(~msblk->devblksize);
++
++ init_MUTEX(&msblk->read_data_mutex);
++ init_MUTEX(&msblk->read_page_mutex);
++ init_MUTEX(&msblk->block_cache_mutex);
++ init_MUTEX(&msblk->fragment_mutex);
++ init_MUTEX(&msblk->meta_index_mutex);
++
++ init_waitqueue_head(&msblk->waitq);
++ init_waitqueue_head(&msblk->fragment_wait_queue);
++
++ if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
++ sizeof(struct squashfs_super_block) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ SERROR("unable to read superblock\n");
++ goto failed_mount;
++ }
++
++ /* Check it is a SQUASHFS superblock */
++ msblk->swap = 0;
++ if ((s->s_magic = sblk->s_magic) != SQUASHFS_MAGIC) {
++ if (sblk->s_magic == SQUASHFS_MAGIC_SWAP) {
++ struct squashfs_super_block ssblk;
++
++ WARNING("Mounting a different endian SQUASHFS "
++ "filesystem on %s\n", bdevname(s->s_bdev, b));
++
++ SQUASHFS_SWAP_SUPER_BLOCK(&ssblk, sblk);
++ memcpy(sblk, &ssblk, sizeof(struct squashfs_super_block));
++ msblk->swap = 1;
++ } else {
++ SERROR("Can't find a SQUASHFS superblock on %s\n",
++ bdevname(s->s_bdev, b));
++ goto failed_mount;
++ }
++ }
++
++ /* Check the MAJOR & MINOR versions */
++ if(!supported_squashfs_filesystem(msblk, silent))
++ goto failed_mount;
++
++ TRACE("Found valid superblock on %s\n", bdevname(s->s_bdev, b));
++ TRACE("Inodes are %scompressed\n",
++ SQUASHFS_UNCOMPRESSED_INODES
++ (sblk->flags) ? "un" : "");
++ TRACE("Data is %scompressed\n",
++ SQUASHFS_UNCOMPRESSED_DATA(sblk->flags)
++ ? "un" : "");
++ TRACE("Check data is %s present in the filesystem\n",
++ SQUASHFS_CHECK_DATA(sblk->flags) ?
++ "" : "not");
++ TRACE("Filesystem size %lld bytes\n", sblk->bytes_used);
++ TRACE("Block size %d\n", sblk->block_size);
++ TRACE("Number of inodes %d\n", sblk->inodes);
++ if (sblk->s_major > 1)
++ TRACE("Number of fragments %d\n", sblk->fragments);
++ TRACE("Number of uids %d\n", sblk->no_uids);
++ TRACE("Number of gids %d\n", sblk->no_guids);
++ TRACE("sblk->inode_table_start %llx\n", sblk->inode_table_start);
++ TRACE("sblk->directory_table_start %llx\n", sblk->directory_table_start);
++ if (sblk->s_major > 1)
++ TRACE("sblk->fragment_table_start %llx\n",
++ sblk->fragment_table_start);
++ TRACE("sblk->uid_start %llx\n", sblk->uid_start);
++
++ s->s_flags |= MS_RDONLY;
++ s->s_op = &squashfs_ops;
++
++ /* Init inode_table block pointer array */
++ if (!(msblk->block_cache = kmalloc(sizeof(struct squashfs_cache) *
++ SQUASHFS_CACHED_BLKS, GFP_KERNEL))) {
++ ERROR("Failed to allocate block cache\n");
++ goto failed_mount;
++ }
++
++ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
++ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
++
++ msblk->next_cache = 0;
++
++ /* Allocate read_data block */
++ msblk->read_size = (sblk->block_size < SQUASHFS_METADATA_SIZE) ?
++ SQUASHFS_METADATA_SIZE :
++ sblk->block_size;
++
++ if (!(msblk->read_data = kmalloc(msblk->read_size, GFP_KERNEL))) {
++ ERROR("Failed to allocate read_data block\n");
++ goto failed_mount;
++ }
++
++ /* Allocate read_page block */
++ if (!(msblk->read_page = kmalloc(sblk->block_size, GFP_KERNEL))) {
++ ERROR("Failed to allocate read_page block\n");
++ goto failed_mount;
++ }
++
++ /* Allocate uid and gid tables */
++ if (!(msblk->uid = kmalloc((sblk->no_uids + sblk->no_guids) *
++ sizeof(unsigned int), GFP_KERNEL))) {
++ ERROR("Failed to allocate uid/gid table\n");
++ goto failed_mount;
++ }
++ msblk->guid = msblk->uid + sblk->no_uids;
++
++ if (msblk->swap) {
++ unsigned int suid[sblk->no_uids + sblk->no_guids];
++
++ if (!squashfs_read_data(s, (char *) &suid, sblk->uid_start,
++ ((sblk->no_uids + sblk->no_guids) *
++ sizeof(unsigned int)) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read uid/gid table\n");
++ goto failed_mount;
++ }
++
++ SQUASHFS_SWAP_DATA(msblk->uid, suid, (sblk->no_uids +
++ sblk->no_guids), (sizeof(unsigned int) * 8));
++ } else
++ if (!squashfs_read_data(s, (char *) msblk->uid, sblk->uid_start,
++ ((sblk->no_uids + sblk->no_guids) *
++ sizeof(unsigned int)) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read uid/gid table\n");
++ goto failed_mount;
++ }
++
++
++ if (sblk->s_major == 1 && squashfs_1_0_supported(msblk))
++ goto allocate_root;
++
++ if (!(msblk->fragment = kmalloc(sizeof(struct squashfs_fragment_cache) *
++ SQUASHFS_CACHED_FRAGMENTS, GFP_KERNEL))) {
++ ERROR("Failed to allocate fragment block cache\n");
++ goto failed_mount;
++ }
++
++ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++) {
++ msblk->fragment[i].locked = 0;
++ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
++ msblk->fragment[i].data = NULL;
++ }
++
++ msblk->next_fragment = 0;
++
++ /* Allocate fragment index table */
++ if (msblk->read_fragment_index_table(s) == 0)
++ goto failed_mount;
++
++allocate_root:
++ if ((root = (msblk->iget)(s, sblk->root_inode)) == NULL)
++ goto failed_mount;
++
++ if ((s->s_root = d_alloc_root(root)) == NULL) {
++ ERROR("Root inode create failed\n");
++ iput(root);
++ goto failed_mount;
++ }
++
++ TRACE("Leaving squashfs_read_super\n");
++ return 0;
++
++failed_mount:
++ kfree(msblk->fragment_index);
++ kfree(msblk->fragment);
++ kfree(msblk->uid);
++ kfree(msblk->read_page);
++ kfree(msblk->read_data);
++ kfree(msblk->block_cache);
++ kfree(msblk->fragment_index_2);
++ kfree(s->s_fs_info);
++ s->s_fs_info = NULL;
++ return -EINVAL;
++
++failure:
++ return -ENOMEM;
++}
++
++
++static int squashfs_statfs(struct dentry *dentry, struct kstatfs *buf)
++{
++ struct squashfs_sb_info *msblk = dentry->d_inode->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ TRACE("Entered squashfs_statfs\n");
++
++ buf->f_type = SQUASHFS_MAGIC;
++ buf->f_bsize = sblk->block_size;
++ buf->f_blocks = ((sblk->bytes_used - 1) >> sblk->block_log) + 1;
++ buf->f_bfree = buf->f_bavail = 0;
++ buf->f_files = sblk->inodes;
++ buf->f_ffree = 0;
++ buf->f_namelen = SQUASHFS_NAME_LEN;
++
++ return 0;
++}
++
++
++static int squashfs_symlink_readpage(struct file *file, struct page *page)
++{
++ struct inode *inode = page->mapping->host;
++ int index = page->index << PAGE_CACHE_SHIFT, length, bytes;
++ long long block = SQUASHFS_I(inode)->start_block;
++ int offset = SQUASHFS_I(inode)->offset;
++ void *pageaddr = kmap(page);
++
++ TRACE("Entered squashfs_symlink_readpage, page index %ld, start block "
++ "%llx, offset %x\n", page->index,
++ SQUASHFS_I(inode)->start_block,
++ SQUASHFS_I(inode)->offset);
++
++ for (length = 0; length < index; length += bytes) {
++ if (!(bytes = squashfs_get_cached_block(inode->i_sb, NULL,
++ block, offset, PAGE_CACHE_SIZE, &block,
++ &offset))) {
++ ERROR("Unable to read symbolic link [%llx:%x]\n", block,
++ offset);
++ goto skip_read;
++ }
++ }
++
++ if (length != index) {
++ ERROR("(squashfs_symlink_readpage) length != index\n");
++ bytes = 0;
++ goto skip_read;
++ }
++
++ bytes = (i_size_read(inode) - length) > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE :
++ i_size_read(inode) - length;
++
++ if (!(bytes = squashfs_get_cached_block(inode->i_sb, pageaddr, block,
++ offset, bytes, &block, &offset)))
++ ERROR("Unable to read symbolic link [%llx:%x]\n", block, offset);
++
++skip_read:
++ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
++ kunmap(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++
++ return 0;
++}
++
++
++struct meta_index *locate_meta_index(struct inode *inode, int index, int offset)
++{
++ struct meta_index *meta = NULL;
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ int i;
++
++ down(&msblk->meta_index_mutex);
++
++ TRACE("locate_meta_index: index %d, offset %d\n", index, offset);
++
++ if(msblk->meta_index == NULL)
++ goto not_allocated;
++
++ for (i = 0; i < SQUASHFS_META_NUMBER; i ++)
++ if (msblk->meta_index[i].inode_number == inode->i_ino &&
++ msblk->meta_index[i].offset >= offset &&
++ msblk->meta_index[i].offset <= index &&
++ msblk->meta_index[i].locked == 0) {
++ TRACE("locate_meta_index: entry %d, offset %d\n", i,
++ msblk->meta_index[i].offset);
++ meta = &msblk->meta_index[i];
++ offset = meta->offset;
++ }
++
++ if (meta)
++ meta->locked = 1;
++
++not_allocated:
++ up(&msblk->meta_index_mutex);
++
++ return meta;
++}
++
++
++struct meta_index *empty_meta_index(struct inode *inode, int offset, int skip)
++{
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct meta_index *meta = NULL;
++ int i;
++
++ down(&msblk->meta_index_mutex);
++
++ TRACE("empty_meta_index: offset %d, skip %d\n", offset, skip);
++
++ if(msblk->meta_index == NULL) {
++ if (!(msblk->meta_index = kmalloc(sizeof(struct meta_index) *
++ SQUASHFS_META_NUMBER, GFP_KERNEL))) {
++ ERROR("Failed to allocate meta_index\n");
++ goto failed;
++ }
++ for(i = 0; i < SQUASHFS_META_NUMBER; i++) {
++ msblk->meta_index[i].inode_number = 0;
++ msblk->meta_index[i].locked = 0;
++ }
++ msblk->next_meta_index = 0;
++ }
++
++ for(i = SQUASHFS_META_NUMBER; i &&
++ msblk->meta_index[msblk->next_meta_index].locked; i --)
++ msblk->next_meta_index = (msblk->next_meta_index + 1) %
++ SQUASHFS_META_NUMBER;
++
++ if(i == 0) {
++ TRACE("empty_meta_index: failed!\n");
++ goto failed;
++ }
++
++ TRACE("empty_meta_index: returned meta entry %d, %p\n",
++ msblk->next_meta_index,
++ &msblk->meta_index[msblk->next_meta_index]);
++
++ meta = &msblk->meta_index[msblk->next_meta_index];
++ msblk->next_meta_index = (msblk->next_meta_index + 1) %
++ SQUASHFS_META_NUMBER;
++
++ meta->inode_number = inode->i_ino;
++ meta->offset = offset;
++ meta->skip = skip;
++ meta->entries = 0;
++ meta->locked = 1;
++
++failed:
++ up(&msblk->meta_index_mutex);
++ return meta;
++}
++
++
++void release_meta_index(struct inode *inode, struct meta_index *meta)
++{
++ meta->locked = 0;
++}
++
++
++static int read_block_index(struct super_block *s, int blocks, char *block_list,
++ long long *start_block, int *offset)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ unsigned int *block_listp;
++ int block = 0;
++
++ if (msblk->swap) {
++ char sblock_list[blocks << 2];
++
++ if (!squashfs_get_cached_block(s, sblock_list, *start_block,
++ *offset, blocks << 2, start_block, offset)) {
++ ERROR("Unable to read block list [%llx:%x]\n",
++ *start_block, *offset);
++ goto failure;
++ }
++ SQUASHFS_SWAP_INTS(((unsigned int *)block_list),
++ ((unsigned int *)sblock_list), blocks);
++ } else
++ if (!squashfs_get_cached_block(s, block_list, *start_block,
++ *offset, blocks << 2, start_block, offset)) {
++ ERROR("Unable to read block list [%llx:%x]\n",
++ *start_block, *offset);
++ goto failure;
++ }
++
++ for (block_listp = (unsigned int *) block_list; blocks;
++ block_listp++, blocks --)
++ block += SQUASHFS_COMPRESSED_SIZE_BLOCK(*block_listp);
++
++ return block;
++
++failure:
++ return -1;
++}
++
++
++#define SIZE 256
++
++static inline int calculate_skip(int blocks) {
++ int skip = (blocks - 1) / ((SQUASHFS_SLOTS * SQUASHFS_META_ENTRIES + 1) * SQUASHFS_META_INDEXES);
++ return skip >= 7 ? 7 : skip + 1;
++}
++
++
++static int get_meta_index(struct inode *inode, int index,
++ long long *index_block, int *index_offset,
++ long long *data_block, char *block_list)
++{
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int skip = calculate_skip(i_size_read(inode) >> sblk->block_log);
++ int offset = 0;
++ struct meta_index *meta;
++ struct meta_entry *meta_entry;
++ long long cur_index_block = SQUASHFS_I(inode)->u.s1.block_list_start;
++ int cur_offset = SQUASHFS_I(inode)->offset;
++ long long cur_data_block = SQUASHFS_I(inode)->start_block;
++ int i;
++
++ index /= SQUASHFS_META_INDEXES * skip;
++
++ while ( offset < index ) {
++ meta = locate_meta_index(inode, index, offset + 1);
++
++ if (meta == NULL) {
++ if ((meta = empty_meta_index(inode, offset + 1,
++ skip)) == NULL)
++ goto all_done;
++ } else {
++ offset = index < meta->offset + meta->entries ? index :
++ meta->offset + meta->entries - 1;
++ meta_entry = &meta->meta_entry[offset - meta->offset];
++ cur_index_block = meta_entry->index_block + sblk->inode_table_start;
++ cur_offset = meta_entry->offset;
++ cur_data_block = meta_entry->data_block;
++ TRACE("get_meta_index: offset %d, meta->offset %d, "
++ "meta->entries %d\n", offset, meta->offset,
++ meta->entries);
++ TRACE("get_meta_index: index_block 0x%llx, offset 0x%x"
++ " data_block 0x%llx\n", cur_index_block,
++ cur_offset, cur_data_block);
++ }
++
++ for (i = meta->offset + meta->entries; i <= index &&
++ i < meta->offset + SQUASHFS_META_ENTRIES; i++) {
++ int blocks = skip * SQUASHFS_META_INDEXES;
++
++ while (blocks) {
++ int block = blocks > (SIZE >> 2) ? (SIZE >> 2) :
++ blocks;
++ int res = read_block_index(inode->i_sb, block,
++ block_list, &cur_index_block,
++ &cur_offset);
++
++ if (res == -1)
++ goto failed;
++
++ cur_data_block += res;
++ blocks -= block;
++ }
++
++ meta_entry = &meta->meta_entry[i - meta->offset];
++ meta_entry->index_block = cur_index_block - sblk->inode_table_start;
++ meta_entry->offset = cur_offset;
++ meta_entry->data_block = cur_data_block;
++ meta->entries ++;
++ offset ++;
++ }
++
++ TRACE("get_meta_index: meta->offset %d, meta->entries %d\n",
++ meta->offset, meta->entries);
++
++ release_meta_index(inode, meta);
++ }
++
++all_done:
++ *index_block = cur_index_block;
++ *index_offset = cur_offset;
++ *data_block = cur_data_block;
++
++ return offset * SQUASHFS_META_INDEXES * skip;
++
++failed:
++ release_meta_index(inode, meta);
++ return -1;
++}
++
++
++static long long read_blocklist(struct inode *inode, int index,
++ int readahead_blks, char *block_list,
++ unsigned short **block_p, unsigned int *bsize)
++{
++ long long block_ptr;
++ int offset;
++ long long block;
++ int res = get_meta_index(inode, index, &block_ptr, &offset, &block,
++ block_list);
++
++ TRACE("read_blocklist: res %d, index %d, block_ptr 0x%llx, offset"
++ " 0x%x, block 0x%llx\n", res, index, block_ptr, offset,
++ block);
++
++ if(res == -1)
++ goto failure;
++
++ index -= res;
++
++ while ( index ) {
++ int blocks = index > (SIZE >> 2) ? (SIZE >> 2) : index;
++ int res = read_block_index(inode->i_sb, blocks, block_list,
++ &block_ptr, &offset);
++ if (res == -1)
++ goto failure;
++ block += res;
++ index -= blocks;
++ }
++
++ if (read_block_index(inode->i_sb, 1, block_list,
++ &block_ptr, &offset) == -1)
++ goto failure;
++ *bsize = *((unsigned int *) block_list);
++
++ return block;
++
++failure:
++ return 0;
++}
++
++
++static int squashfs_readpage(struct file *file, struct page *page)
++{
++ struct inode *inode = page->mapping->host;
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ unsigned char block_list[SIZE];
++ long long block;
++ unsigned int bsize, i = 0, bytes = 0, byte_offset = 0;
++ int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT);
++ void *pageaddr;
++ struct squashfs_fragment_cache *fragment = NULL;
++ char *data_ptr = msblk->read_page;
++
++ int mask = (1 << (sblk->block_log - PAGE_CACHE_SHIFT)) - 1;
++ int start_index = page->index & ~mask;
++ int end_index = start_index | mask;
++
++ TRACE("Entered squashfs_readpage, page index %lx, start block %llx\n",
++ page->index,
++ SQUASHFS_I(inode)->start_block);
++
++ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
++ PAGE_CACHE_SHIFT))
++ goto skip_read;
++
++ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++ || index < (i_size_read(inode) >>
++ sblk->block_log)) {
++ if ((block = (msblk->read_blocklist)(inode, index, 1,
++ block_list, NULL, &bsize)) == 0)
++ goto skip_read;
++
++ down(&msblk->read_page_mutex);
++
++ if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page,
++ block, bsize, NULL))) {
++ ERROR("Unable to read page, block %llx, size %x\n", block,
++ bsize);
++ up(&msblk->read_page_mutex);
++ goto skip_read;
++ }
++ } else {
++ if ((fragment = get_cached_fragment(inode->i_sb,
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block,
++ SQUASHFS_I(inode)->u.s1.fragment_size))
++ == NULL) {
++ ERROR("Unable to read page, block %llx, size %x\n",
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block,
++ (int) SQUASHFS_I(inode)->
++ u.s1.fragment_size);
++ goto skip_read;
++ }
++ bytes = SQUASHFS_I(inode)->u.s1.fragment_offset +
++ (i_size_read(inode) & (sblk->block_size
++ - 1));
++ byte_offset = SQUASHFS_I(inode)->u.s1.fragment_offset;
++ data_ptr = fragment->data;
++ }
++
++ for (i = start_index; i <= end_index && byte_offset < bytes;
++ i++, byte_offset += PAGE_CACHE_SIZE) {
++ struct page *push_page;
++ int available_bytes = (bytes - byte_offset) > PAGE_CACHE_SIZE ?
++ PAGE_CACHE_SIZE : bytes - byte_offset;
++
++ TRACE("bytes %d, i %d, byte_offset %d, available_bytes %d\n",
++ bytes, i, byte_offset, available_bytes);
++
++ if (i == page->index) {
++ pageaddr = kmap_atomic(page, KM_USER0);
++ memcpy(pageaddr, data_ptr + byte_offset,
++ available_bytes);
++ memset(pageaddr + available_bytes, 0,
++ PAGE_CACHE_SIZE - available_bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++ } else if ((push_page =
++ grab_cache_page_nowait(page->mapping, i))) {
++ pageaddr = kmap_atomic(push_page, KM_USER0);
++
++ memcpy(pageaddr, data_ptr + byte_offset,
++ available_bytes);
++ memset(pageaddr + available_bytes, 0,
++ PAGE_CACHE_SIZE - available_bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(push_page);
++ SetPageUptodate(push_page);
++ unlock_page(push_page);
++ page_cache_release(push_page);
++ }
++ }
++
++ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++ || index < (i_size_read(inode) >>
++ sblk->block_log))
++ up(&msblk->read_page_mutex);
++ else
++ release_cached_fragment(msblk, fragment);
++
++ return 0;
++
++skip_read:
++ pageaddr = kmap_atomic(page, KM_USER0);
++ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++
++ return 0;
++}
++
++
++static int squashfs_readpage4K(struct file *file, struct page *page)
++{
++ struct inode *inode = page->mapping->host;
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ unsigned char block_list[SIZE];
++ long long block;
++ unsigned int bsize, bytes = 0;
++ void *pageaddr;
++
++ TRACE("Entered squashfs_readpage4K, page index %lx, start block %llx\n",
++ page->index,
++ SQUASHFS_I(inode)->start_block);
++
++ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
++ PAGE_CACHE_SHIFT)) {
++ pageaddr = kmap_atomic(page, KM_USER0);
++ goto skip_read;
++ }
++
++ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++ || page->index < (i_size_read(inode) >>
++ sblk->block_log)) {
++ block = (msblk->read_blocklist)(inode, page->index, 1,
++ block_list, NULL, &bsize);
++
++ down(&msblk->read_page_mutex);
++ bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
++ bsize, NULL);
++ pageaddr = kmap_atomic(page, KM_USER0);
++ if (bytes)
++ memcpy(pageaddr, msblk->read_page, bytes);
++ else
++ ERROR("Unable to read page, block %llx, size %x\n",
++ block, bsize);
++ up(&msblk->read_page_mutex);
++ } else {
++ struct squashfs_fragment_cache *fragment =
++ get_cached_fragment(inode->i_sb,
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block,
++ SQUASHFS_I(inode)-> u.s1.fragment_size);
++ pageaddr = kmap_atomic(page, KM_USER0);
++ if (fragment) {
++ bytes = i_size_read(inode) & (sblk->block_size - 1);
++ memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)->
++ u.s1.fragment_offset, bytes);
++ release_cached_fragment(msblk, fragment);
++ } else
++ ERROR("Unable to read page, block %llx, size %x\n",
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block, (int)
++ SQUASHFS_I(inode)-> u.s1.fragment_size);
++ }
++
++skip_read:
++ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++
++ return 0;
++}
++
++
++static int get_dir_index_using_offset(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ long long f_pos)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ struct squashfs_dir_index index;
++
++ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
++ i_count, (unsigned int) f_pos);
++
++ f_pos =- 3;
++ if (f_pos == 0)
++ goto finish;
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX(&index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) &index,
++ index_start, index_offset,
++ sizeof(index), &index_start,
++ &index_offset);
++
++ if (index.index > f_pos)
++ break;
++
++ squashfs_get_cached_block(s, NULL, index_start, index_offset,
++ index.size + 1, &index_start,
++ &index_offset);
++
++ length = index.index;
++ *next_block = index.start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++
++finish:
++ return length + 3;
++}
++
++
++static int get_dir_index_using_name(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ const char *name, int size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ char buffer[sizeof(struct squashfs_dir_index) + SQUASHFS_NAME_LEN + 1];
++ struct squashfs_dir_index *index = (struct squashfs_dir_index *) buffer;
++ char str[SQUASHFS_NAME_LEN + 1];
++
++ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
++
++ strncpy(str, name, size);
++ str[size] = '\0';
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX(index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) index,
++ index_start, index_offset,
++ sizeof(struct squashfs_dir_index),
++ &index_start, &index_offset);
++
++ squashfs_get_cached_block(s, index->name, index_start,
++ index_offset, index->size + 1,
++ &index_start, &index_offset);
++
++ index->name[index->size + 1] = '\0';
++
++ if (strcmp(index->name, str) > 0)
++ break;
++
++ length = index->index;
++ *next_block = index->start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++ return length + 3;
++}
++
++
++static int squashfs_readdir(struct file *file, void *dirent, filldir_t filldir)
++{
++ struct inode *i = file->f_dentry->d_inode;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
++ dir_count;
++ struct squashfs_dir_header dirh;
++ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN + 1];
++ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
++
++ TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset);
++
++ while(file->f_pos < 3) {
++ char *name;
++ int size, i_ino;
++
++ if(file->f_pos == 0) {
++ name = ".";
++ size = 1;
++ i_ino = i->i_ino;
++ } else {
++ name = "..";
++ size = 2;
++ i_ino = SQUASHFS_I(i)->u.s2.parent_inode;
++ }
++ TRACE("Calling filldir(%x, %s, %d, %d, %d, %d)\n",
++ (unsigned int) dirent, name, size, (int)
++ file->f_pos, i_ino,
++ squashfs_filetype_table[1]);
++
++ if (filldir(dirent, name, size,
++ file->f_pos, i_ino,
++ squashfs_filetype_table[1]) < 0) {
++ TRACE("Filldir returned less than 0\n");
++ goto finish;
++ }
++ file->f_pos += size;
++ dirs_read++;
++ }
++
++ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count,
++ file->f_pos);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header sdirh;
++
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block, next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block, next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset,
++ dire->size + 1, &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (file->f_pos >= length)
++ continue;
++
++ dire->name[dire->size + 1] = '\0';
++
++ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d, %d)\n",
++ (unsigned int) dirent, dire->name,
++ dire->size + 1, (int) file->f_pos,
++ dirh.start_block, dire->offset,
++ dirh.inode_number + dire->inode_number,
++ squashfs_filetype_table[dire->type]);
++
++ if (filldir(dirent, dire->name, dire->size + 1,
++ file->f_pos,
++ dirh.inode_number + dire->inode_number,
++ squashfs_filetype_table[dire->type])
++ < 0) {
++ TRACE("Filldir returned less than 0\n");
++ goto finish;
++ }
++ file->f_pos = length;
++ dirs_read++;
++ }
++ }
++
++finish:
++ return dirs_read;
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ return 0;
++}
++
++
++static struct dentry *squashfs_lookup(struct inode *i, struct dentry *dentry,
++ struct nameidata *nd)
++{
++ const unsigned char *name = dentry->d_name.name;
++ int len = dentry->d_name.len;
++ struct inode *inode = NULL;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0,
++ dir_count;
++ struct squashfs_dir_header dirh;
++ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN];
++ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
++
++ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
++
++ if (len > SQUASHFS_NAME_LEN)
++ goto exit_loop;
++
++ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count, name,
++ len);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header sdirh;
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block,next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block,next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset, dire->size + 1,
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (name[0] < dire->name[0])
++ goto exit_loop;
++
++ if ((len == dire->size + 1) && !strncmp(name,
++ dire->name, len)) {
++ squashfs_inode_t ino =
++ SQUASHFS_MKINODE(dirh.start_block,
++ dire->offset);
++
++ TRACE("calling squashfs_iget for directory "
++ "entry %s, inode %x:%x, %d\n", name,
++ dirh.start_block, dire->offset,
++ dirh.inode_number + dire->inode_number);
++
++ inode = (msblk->iget)(i->i_sb, ino);
++
++ goto exit_loop;
++ }
++ }
++ }
++
++exit_loop:
++ d_add(dentry, inode);
++ return ERR_PTR(0);
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ goto exit_loop;
++}
++
++
++static void squashfs_put_super(struct super_block *s)
++{
++ int i;
++
++ if (s->s_fs_info) {
++ struct squashfs_sb_info *sbi = s->s_fs_info;
++ if (sbi->block_cache)
++ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
++ if (sbi->block_cache[i].block !=
++ SQUASHFS_INVALID_BLK)
++ kfree(sbi->block_cache[i].data);
++ if (sbi->fragment)
++ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++)
++ SQUASHFS_FREE(sbi->fragment[i].data);
++ kfree(sbi->fragment);
++ kfree(sbi->block_cache);
++ kfree(sbi->read_data);
++ kfree(sbi->read_page);
++ kfree(sbi->uid);
++ kfree(sbi->fragment_index);
++ kfree(sbi->fragment_index_2);
++ kfree(sbi->meta_index);
++ kfree(s->s_fs_info);
++ s->s_fs_info = NULL;
++ }
++}
++
++
++static int squashfs_get_sb(struct file_system_type *fs_type,
++ int flags, const char *dev_name, void *data,
++ struct vfsmount *mnt)
++{
++ return get_sb_bdev(fs_type, flags, dev_name, data, squashfs_fill_super, mnt);
++}
++
++
++static int __init init_squashfs_fs(void)
++{
++ int err = init_inodecache();
++ if (err)
++ goto out;
++
++ printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) "
++ "Phillip Lougher\n");
++
++ if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
++ ERROR("Failed to allocate zlib workspace\n");
++ destroy_inodecache();
++ err = -ENOMEM;
++ goto out;
++ }
++
++ if ((err = register_filesystem(&squashfs_fs_type))) {
++ vfree(stream.workspace);
++ destroy_inodecache();
++ }
++
++out:
++ return err;
++}
++
++
++static void __exit exit_squashfs_fs(void)
++{
++ vfree(stream.workspace);
++ unregister_filesystem(&squashfs_fs_type);
++ destroy_inodecache();
++}
++
++
++static kmem_cache_t * squashfs_inode_cachep;
++
++
++static struct inode *squashfs_alloc_inode(struct super_block *sb)
++{
++ struct squashfs_inode_info *ei;
++ ei = kmem_cache_alloc(squashfs_inode_cachep, SLAB_KERNEL);
++ if (!ei)
++ return NULL;
++ return &ei->vfs_inode;
++}
++
++
++static void squashfs_destroy_inode(struct inode *inode)
++{
++ kmem_cache_free(squashfs_inode_cachep, SQUASHFS_I(inode));
++}
++
++
++static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
++{
++ struct squashfs_inode_info *ei = foo;
++
++ if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
++ SLAB_CTOR_CONSTRUCTOR)
++ inode_init_once(&ei->vfs_inode);
++}
++
++
++static int __init init_inodecache(void)
++{
++ squashfs_inode_cachep = kmem_cache_create("squashfs_inode_cache",
++ sizeof(struct squashfs_inode_info),
++ 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
++ init_once, NULL);
++ if (squashfs_inode_cachep == NULL)
++ return -ENOMEM;
++ return 0;
++}
++
++
++static void destroy_inodecache(void)
++{
++ kmem_cache_destroy(squashfs_inode_cachep);
++}
++
++
++module_init(init_squashfs_fs);
++module_exit(exit_squashfs_fs);
++MODULE_DESCRIPTION("squashfs, a compressed read-only filesystem");
++MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
++MODULE_LICENSE("GPL");
+diff -urN linux-2.6.19.old/fs/squashfs/Makefile linux-2.6.19.dev/fs/squashfs/Makefile
+--- linux-2.6.19.old/fs/squashfs/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/squashfs/Makefile 2006-12-14 03:13:16.000000000 +0100
+@@ -0,0 +1,7 @@
++#
++# Makefile for the linux squashfs routines.
++#
++
++obj-$(CONFIG_SQUASHFS) += squashfs.o
++squashfs-y += inode.o
++squashfs-y += squashfs2_0.o
+diff -urN linux-2.6.19.old/fs/squashfs/squashfs2_0.c linux-2.6.19.dev/fs/squashfs/squashfs2_0.c
+--- linux-2.6.19.old/fs/squashfs/squashfs2_0.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/squashfs/squashfs2_0.c 2006-12-14 03:13:16.000000000 +0100
+@@ -0,0 +1,758 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs2_0.c
++ */
++
++#include <linux/types.h>
++#include <linux/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/errno.h>
++#include <linux/slab.h>
++#include <linux/fs.h>
++#include <linux/smp_lock.h>
++#include <linux/slab.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.h>
++#include <linux/buffer_head.h>
++#include <linux/vfs.h>
++#include <linux/init.h>
++#include <linux/dcache.h>
++#include <linux/wait.h>
++#include <linux/zlib.h>
++#include <linux/blkdev.h>
++#include <linux/vmalloc.h>
++#include <asm/uaccess.h>
++#include <asm/semaphore.h>
++
++#include "squashfs.h"
++static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir);
++static struct dentry *squashfs_lookup_2(struct inode *, struct dentry *,
++ struct nameidata *);
++
++static struct file_operations squashfs_dir_ops_2 = {
++ .read = generic_read_dir,
++ .readdir = squashfs_readdir_2
++};
++
++static struct inode_operations squashfs_dir_inode_ops_2 = {
++ .lookup = squashfs_lookup_2
++};
++
++static unsigned char squashfs_filetype_table[] = {
++ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
++};
++
++static int read_fragment_index_table_2(struct super_block *s)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ if (!(msblk->fragment_index_2 = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES_2
++ (sblk->fragments), GFP_KERNEL))) {
++ ERROR("Failed to allocate uid/gid table\n");
++ return 0;
++ }
++
++ if (SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments) &&
++ !squashfs_read_data(s, (char *)
++ msblk->fragment_index_2,
++ sblk->fragment_table_start,
++ SQUASHFS_FRAGMENT_INDEX_BYTES_2
++ (sblk->fragments) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read fragment index table\n");
++ return 0;
++ }
++
++ if (msblk->swap) {
++ int i;
++ unsigned int fragment;
++
++ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES_2(sblk->fragments);
++ i++) {
++ SQUASHFS_SWAP_FRAGMENT_INDEXES_2((&fragment),
++ &msblk->fragment_index_2[i], 1);
++ msblk->fragment_index_2[i] = fragment;
++ }
++ }
++
++ return 1;
++}
++
++
++static int get_fragment_location_2(struct super_block *s, unsigned int fragment,
++ long long *fragment_start_block,
++ unsigned int *fragment_size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ long long start_block =
++ msblk->fragment_index_2[SQUASHFS_FRAGMENT_INDEX_2(fragment)];
++ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET_2(fragment);
++ struct squashfs_fragment_entry_2 fragment_entry;
++
++ if (msblk->swap) {
++ struct squashfs_fragment_entry_2 sfragment_entry;
++
++ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
++ start_block, offset,
++ sizeof(sfragment_entry), &start_block,
++ &offset))
++ goto out;
++ SQUASHFS_SWAP_FRAGMENT_ENTRY_2(&fragment_entry, &sfragment_entry);
++ } else
++ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
++ start_block, offset,
++ sizeof(fragment_entry), &start_block,
++ &offset))
++ goto out;
++
++ *fragment_start_block = fragment_entry.start_block;
++ *fragment_size = fragment_entry.size;
++
++ return 1;
++
++out:
++ return 0;
++}
++
++
++static struct inode *squashfs_new_inode(struct super_block *s,
++ struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ struct inode *i = new_inode(s);
++
++ if (i) {
++ i->i_ino = ino;
++ i->i_mtime.tv_sec = sblk->mkfs_time;
++ i->i_atime.tv_sec = sblk->mkfs_time;
++ i->i_ctime.tv_sec = sblk->mkfs_time;
++ i->i_uid = msblk->uid[inodeb->uid];
++ i->i_mode = inodeb->mode;
++ i->i_nlink = 1;
++ i->i_size = 0;
++ if (inodeb->guid == SQUASHFS_GUIDS)
++ i->i_gid = i->i_uid;
++ else
++ i->i_gid = msblk->guid[inodeb->guid];
++ }
++
++ return i;
++}
++
++
++static struct inode *squashfs_iget_2(struct super_block *s, squashfs_inode_t inode)
++{
++ struct inode *i;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ unsigned int block = SQUASHFS_INODE_BLK(inode) +
++ sblk->inode_table_start;
++ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
++ unsigned int ino = SQUASHFS_MK_VFS_INODE(block
++ - sblk->inode_table_start, offset);
++ long long next_block;
++ unsigned int next_offset;
++ union squashfs_inode_header_2 id, sid;
++ struct squashfs_base_inode_header_2 *inodeb = &id.base,
++ *sinodeb = &sid.base;
++
++ TRACE("Entered squashfs_iget\n");
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
++ offset, sizeof(*sinodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_BASE_INODE_HEADER_2(inodeb, sinodeb,
++ sizeof(*sinodeb));
++ } else
++ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
++ offset, sizeof(*inodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ switch(inodeb->inode_type) {
++ case SQUASHFS_FILE_TYPE: {
++ struct squashfs_reg_inode_header_2 *inodep = &id.reg;
++ struct squashfs_reg_inode_header_2 *sinodep = &sid.reg;
++ long long frag_blk;
++ unsigned int frag_size;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_REG_INODE_HEADER_2(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ frag_blk = SQUASHFS_INVALID_BLK;
++ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
++ !get_fragment_location_2(s,
++ inodep->fragment, &frag_blk, &frag_size))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->file_size;
++ i->i_fop = &generic_ro_fops;
++ i->i_mode |= S_IFREG;
++ i->i_mtime.tv_sec = inodep->mtime;
++ i->i_atime.tv_sec = inodep->mtime;
++ i->i_ctime.tv_sec = inodep->mtime;
++ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++ i->i_blksize = PAGE_CACHE_SIZE;
++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++ if (sblk->block_size > 4096)
++ i->i_data.a_ops = &squashfs_aops;
++ else
++ i->i_data.a_ops = &squashfs_aops_4K;
++
++ TRACE("File inode %x:%x, start_block %x, "
++ "block_list_start %llx, offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, next_block,
++ next_offset);
++ break;
++ }
++ case SQUASHFS_DIR_TYPE: {
++ struct squashfs_dir_inode_header_2 *inodep = &id.dir;
++ struct squashfs_dir_inode_header_2 *sinodep = &sid.dir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DIR_INODE_HEADER_2(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops_2;
++ i->i_fop = &squashfs_dir_ops_2;
++ i->i_mode |= S_IFDIR;
++ i->i_mtime.tv_sec = inodep->mtime;
++ i->i_atime.tv_sec = inodep->mtime;
++ i->i_ctime.tv_sec = inodep->mtime;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
++ SQUASHFS_I(i)->u.s2.parent_inode = 0;
++
++ TRACE("Directory inode %x:%x, start_block %x, offset "
++ "%x\n", SQUASHFS_INODE_BLK(inode),
++ offset, inodep->start_block,
++ inodep->offset);
++ break;
++ }
++ case SQUASHFS_LDIR_TYPE: {
++ struct squashfs_ldir_inode_header_2 *inodep = &id.ldir;
++ struct squashfs_ldir_inode_header_2 *sinodep = &sid.ldir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_LDIR_INODE_HEADER_2(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops_2;
++ i->i_fop = &squashfs_dir_ops_2;
++ i->i_mode |= S_IFDIR;
++ i->i_mtime.tv_sec = inodep->mtime;
++ i->i_atime.tv_sec = inodep->mtime;
++ i->i_ctime.tv_sec = inodep->mtime;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
++ SQUASHFS_I(i)->u.s2.directory_index_offset =
++ next_offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count =
++ inodep->i_count;
++ SQUASHFS_I(i)->u.s2.parent_inode = 0;
++
++ TRACE("Long directory inode %x:%x, start_block %x, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, inodep->offset);
++ break;
++ }
++ case SQUASHFS_SYMLINK_TYPE: {
++ struct squashfs_symlink_inode_header_2 *inodep =
++ &id.symlink;
++ struct squashfs_symlink_inode_header_2 *sinodep =
++ &sid.symlink;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->symlink_size;
++ i->i_op = &page_symlink_inode_operations;
++ i->i_data.a_ops = &squashfs_symlink_aops;
++ i->i_mode |= S_IFLNK;
++ SQUASHFS_I(i)->start_block = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++
++ TRACE("Symbolic link inode %x:%x, start_block %llx, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ next_block, next_offset);
++ break;
++ }
++ case SQUASHFS_BLKDEV_TYPE:
++ case SQUASHFS_CHRDEV_TYPE: {
++ struct squashfs_dev_inode_header_2 *inodep = &id.dev;
++ struct squashfs_dev_inode_header_2 *sinodep = &sid.dev;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DEV_INODE_HEADER_2(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_mode |= (inodeb->inode_type ==
++ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
++ S_IFBLK;
++ init_special_inode(i, i->i_mode,
++ old_decode_dev(inodep->rdev));
++
++ TRACE("Device inode %x:%x, rdev %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->rdev);
++ break;
++ }
++ case SQUASHFS_FIFO_TYPE:
++ case SQUASHFS_SOCKET_TYPE: {
++ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
++ ? S_IFIFO : S_IFSOCK;
++ init_special_inode(i, i->i_mode, 0);
++ break;
++ }
++ default:
++ ERROR("Unknown inode type %d in squashfs_iget!\n",
++ inodeb->inode_type);
++ goto failed_read1;
++ }
++
++ insert_inode_hash(i);
++ return i;
++
++failed_read:
++ ERROR("Unable to read inode [%x:%x]\n", block, offset);
++
++failed_read1:
++ return NULL;
++}
++
++
++static int get_dir_index_using_offset(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ long long f_pos)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ struct squashfs_dir_index_2 index;
++
++ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
++ i_count, (unsigned int) f_pos);
++
++ if (f_pos == 0)
++ goto finish;
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index_2 sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX_2(&index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) &index,
++ index_start, index_offset,
++ sizeof(index), &index_start,
++ &index_offset);
++
++ if (index.index > f_pos)
++ break;
++
++ squashfs_get_cached_block(s, NULL, index_start, index_offset,
++ index.size + 1, &index_start,
++ &index_offset);
++
++ length = index.index;
++ *next_block = index.start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++
++finish:
++ return length;
++}
++
++
++static int get_dir_index_using_name(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ const char *name, int size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ char buffer[sizeof(struct squashfs_dir_index_2) + SQUASHFS_NAME_LEN + 1];
++ struct squashfs_dir_index_2 *index = (struct squashfs_dir_index_2 *) buffer;
++ char str[SQUASHFS_NAME_LEN + 1];
++
++ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
++
++ strncpy(str, name, size);
++ str[size] = '\0';
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index_2 sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX_2(index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) index,
++ index_start, index_offset,
++ sizeof(struct squashfs_dir_index_2),
++ &index_start, &index_offset);
++
++ squashfs_get_cached_block(s, index->name, index_start,
++ index_offset, index->size + 1,
++ &index_start, &index_offset);
++
++ index->name[index->size + 1] = '\0';
++
++ if (strcmp(index->name, str) > 0)
++ break;
++
++ length = index->index;
++ *next_block = index->start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++ return length;
++}
++
++
++static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir)
++{
++ struct inode *i = file->f_dentry->d_inode;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
++ dir_count;
++ struct squashfs_dir_header_2 dirh;
++ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN + 1];
++ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
++
++ TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset);
++
++ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count,
++ file->f_pos);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header_2 sdirh;
++
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry_2 sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block, next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block, next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset,
++ dire->size + 1, &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (file->f_pos >= length)
++ continue;
++
++ dire->name[dire->size + 1] = '\0';
++
++ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d)\n",
++ (unsigned int) dirent, dire->name,
++ dire->size + 1, (int) file->f_pos,
++ dirh.start_block, dire->offset,
++ squashfs_filetype_table[dire->type]);
++
++ if (filldir(dirent, dire->name, dire->size + 1,
++ file->f_pos, SQUASHFS_MK_VFS_INODE(
++ dirh.start_block, dire->offset),
++ squashfs_filetype_table[dire->type])
++ < 0) {
++ TRACE("Filldir returned less than 0\n");
++ goto finish;
++ }
++ file->f_pos = length;
++ dirs_read++;
++ }
++ }
++
++finish:
++ return dirs_read;
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ return 0;
++}
++
++
++static struct dentry *squashfs_lookup_2(struct inode *i, struct dentry *dentry,
++ struct nameidata *nd)
++{
++ const unsigned char *name = dentry->d_name.name;
++ int len = dentry->d_name.len;
++ struct inode *inode = NULL;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0,
++ dir_count;
++ struct squashfs_dir_header_2 dirh;
++ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN];
++ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
++ int sorted = sblk->s_major == 2 && sblk->s_minor >= 1;
++
++ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
++
++ if (len > SQUASHFS_NAME_LEN)
++ goto exit_loop;
++
++ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count, name,
++ len);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header_2 sdirh;
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry_2 sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block,next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block,next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset, dire->size + 1,
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (sorted && name[0] < dire->name[0])
++ goto exit_loop;
++
++ if ((len == dire->size + 1) && !strncmp(name,
++ dire->name, len)) {
++ squashfs_inode_t ino =
++ SQUASHFS_MKINODE(dirh.start_block,
++ dire->offset);
++
++ TRACE("calling squashfs_iget for directory "
++ "entry %s, inode %x:%x, %lld\n", name,
++ dirh.start_block, dire->offset, ino);
++
++ inode = (msblk->iget)(i->i_sb, ino);
++
++ goto exit_loop;
++ }
++ }
++ }
++
++exit_loop:
++ d_add(dentry, inode);
++ return ERR_PTR(0);
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ goto exit_loop;
++}
++
++
++int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
++{
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ msblk->iget = squashfs_iget_2;
++ msblk->read_fragment_index_table = read_fragment_index_table_2;
++
++ sblk->bytes_used = sblk->bytes_used_2;
++ sblk->uid_start = sblk->uid_start_2;
++ sblk->guid_start = sblk->guid_start_2;
++ sblk->inode_table_start = sblk->inode_table_start_2;
++ sblk->directory_table_start = sblk->directory_table_start_2;
++ sblk->fragment_table_start = sblk->fragment_table_start_2;
++
++ return 1;
++}
+diff -urN linux-2.6.19.old/fs/squashfs/squashfs.h linux-2.6.19.dev/fs/squashfs/squashfs.h
+--- linux-2.6.19.old/fs/squashfs/squashfs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/squashfs/squashfs.h 2006-12-14 03:13:16.000000000 +0100
+@@ -0,0 +1,86 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs.h
++ */
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++#endif
++
++#ifdef SQUASHFS_TRACE
++#define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args)
++#else
++#define TRACE(s, args...) {}
++#endif
++
++#define ERROR(s, args...) printk(KERN_ERR "SQUASHFS error: "s, ## args)
++
++#define SERROR(s, args...) do { \
++ if (!silent) \
++ printk(KERN_ERR "SQUASHFS error: "s, ## args);\
++ } while(0)
++
++#define WARNING(s, args...) printk(KERN_WARNING "SQUASHFS: "s, ## args)
++
++static inline struct squashfs_inode_info *SQUASHFS_I(struct inode *inode)
++{
++ return list_entry(inode, struct squashfs_inode_info, vfs_inode);
++}
++
++#if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY ) || defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY)
++#define SQSH_EXTERN
++extern unsigned int squashfs_read_data(struct super_block *s, char *buffer,
++ long long index, unsigned int length,
++ long long *next_index);
++extern int squashfs_get_cached_block(struct super_block *s, char *buffer,
++ long long block, unsigned int offset,
++ int length, long long *next_block,
++ unsigned int *next_offset);
++extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct
++ squashfs_fragment_cache *fragment);
++extern struct squashfs_fragment_cache *get_cached_fragment(struct super_block
++ *s, long long start_block,
++ int length);
++extern struct address_space_operations squashfs_symlink_aops;
++extern struct address_space_operations squashfs_aops;
++extern struct address_space_operations squashfs_aops_4K;
++extern struct inode_operations squashfs_dir_inode_ops;
++#else
++#define SQSH_EXTERN static
++#endif
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk);
++#else
++static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk)
++{
++ return 0;
++}
++#endif
++
++#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk);
++#else
++static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
++{
++ return 0;
++}
++#endif
+diff -urN linux-2.6.19.old/include/linux/squashfs_fs.h linux-2.6.19.dev/include/linux/squashfs_fs.h
+--- linux-2.6.19.old/include/linux/squashfs_fs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/squashfs_fs.h 2006-12-14 03:13:16.000000000 +0100
+@@ -0,0 +1,911 @@
++#ifndef SQUASHFS_FS
++#define SQUASHFS_FS
++
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs.h
++ */
++
++#ifndef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++#define CONFIG_SQUASHFS_2_0_COMPATIBILITY
++#endif
++
++#ifdef CONFIG_SQUASHFS_VMALLOC
++#define SQUASHFS_ALLOC(a) vmalloc(a)
++#define SQUASHFS_FREE(a) vfree(a)
++#else
++#define SQUASHFS_ALLOC(a) kmalloc(a, GFP_KERNEL)
++#define SQUASHFS_FREE(a) kfree(a)
++#endif
++#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
++#define SQUASHFS_MAJOR 3
++#define SQUASHFS_MINOR 0
++#define SQUASHFS_MAGIC 0x73717368
++#define SQUASHFS_MAGIC_SWAP 0x68737173
++#define SQUASHFS_START 0
++
++/* size of metadata (inode and directory) blocks */
++#define SQUASHFS_METADATA_SIZE 8192
++#define SQUASHFS_METADATA_LOG 13
++
++/* default size of data blocks */
++#define SQUASHFS_FILE_SIZE 65536
++#define SQUASHFS_FILE_LOG 16
++
++#define SQUASHFS_FILE_MAX_SIZE 65536
++
++/* Max number of uids and gids */
++#define SQUASHFS_UIDS 256
++#define SQUASHFS_GUIDS 255
++
++/* Max length of filename (not 255) */
++#define SQUASHFS_NAME_LEN 256
++
++#define SQUASHFS_INVALID ((long long) 0xffffffffffff)
++#define SQUASHFS_INVALID_FRAG ((unsigned int) 0xffffffff)
++#define SQUASHFS_INVALID_BLK ((long long) -1)
++#define SQUASHFS_USED_BLK ((long long) -2)
++
++/* Filesystem flags */
++#define SQUASHFS_NOI 0
++#define SQUASHFS_NOD 1
++#define SQUASHFS_CHECK 2
++#define SQUASHFS_NOF 3
++#define SQUASHFS_NO_FRAG 4
++#define SQUASHFS_ALWAYS_FRAG 5
++#define SQUASHFS_DUPLICATE 6
++
++#define SQUASHFS_BIT(flag, bit) ((flag >> bit) & 1)
++
++#define SQUASHFS_UNCOMPRESSED_INODES(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NOI)
++
++#define SQUASHFS_UNCOMPRESSED_DATA(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NOD)
++
++#define SQUASHFS_UNCOMPRESSED_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NOF)
++
++#define SQUASHFS_NO_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NO_FRAG)
++
++#define SQUASHFS_ALWAYS_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_ALWAYS_FRAG)
++
++#define SQUASHFS_DUPLICATES(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_DUPLICATE)
++
++#define SQUASHFS_CHECK_DATA(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_CHECK)
++
++#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
++ duplicate_checking) (noi | (nod << 1) | (check_data << 2) \
++ | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
++ (duplicate_checking << 6))
++
++/* Max number of types and file types */
++#define SQUASHFS_DIR_TYPE 1
++#define SQUASHFS_FILE_TYPE 2
++#define SQUASHFS_SYMLINK_TYPE 3
++#define SQUASHFS_BLKDEV_TYPE 4
++#define SQUASHFS_CHRDEV_TYPE 5
++#define SQUASHFS_FIFO_TYPE 6
++#define SQUASHFS_SOCKET_TYPE 7
++#define SQUASHFS_LDIR_TYPE 8
++#define SQUASHFS_LREG_TYPE 9
++
++/* 1.0 filesystem type definitions */
++#define SQUASHFS_TYPES 5
++#define SQUASHFS_IPC_TYPE 0
++
++/* Flag whether block is compressed or uncompressed, bit is set if block is
++ * uncompressed */
++#define SQUASHFS_COMPRESSED_BIT (1 << 15)
++
++#define SQUASHFS_COMPRESSED_SIZE(B) (((B) & ~SQUASHFS_COMPRESSED_BIT) ? \
++ (B) & ~SQUASHFS_COMPRESSED_BIT : SQUASHFS_COMPRESSED_BIT)
++
++#define SQUASHFS_COMPRESSED(B) (!((B) & SQUASHFS_COMPRESSED_BIT))
++
++#define SQUASHFS_COMPRESSED_BIT_BLOCK (1 << 24)
++
++#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B) (((B) & \
++ ~SQUASHFS_COMPRESSED_BIT_BLOCK) ? (B) & \
++ ~SQUASHFS_COMPRESSED_BIT_BLOCK : SQUASHFS_COMPRESSED_BIT_BLOCK)
++
++#define SQUASHFS_COMPRESSED_BLOCK(B) (!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
++
++/*
++ * Inode number ops. Inodes consist of a compressed block number, and an
++ * uncompressed offset within that block
++ */
++#define SQUASHFS_INODE_BLK(a) ((unsigned int) ((a) >> 16))
++
++#define SQUASHFS_INODE_OFFSET(a) ((unsigned int) ((a) & 0xffff))
++
++#define SQUASHFS_MKINODE(A, B) ((squashfs_inode_t)(((squashfs_inode_t) (A)\
++ << 16) + (B)))
++
++/* Compute 32 bit VFS inode number from squashfs inode number */
++#define SQUASHFS_MK_VFS_INODE(a, b) ((unsigned int) (((a) << 8) + \
++ ((b) >> 2) + 1))
++/* XXX */
++
++/* Translate between VFS mode and squashfs mode */
++#define SQUASHFS_MODE(a) ((a) & 0xfff)
++
++/* fragment and fragment table defines */
++#define SQUASHFS_FRAGMENT_BYTES(A) (A * sizeof(struct squashfs_fragment_entry))
++
++#define SQUASHFS_FRAGMENT_INDEX(A) (SQUASHFS_FRAGMENT_BYTES(A) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_OFFSET(A) (SQUASHFS_FRAGMENT_BYTES(A) % \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEXES(A) ((SQUASHFS_FRAGMENT_BYTES(A) + \
++ SQUASHFS_METADATA_SIZE - 1) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_BYTES(A) (SQUASHFS_FRAGMENT_INDEXES(A) *\
++ sizeof(long long))
++
++/* cached data constants for filesystem */
++#define SQUASHFS_CACHED_BLKS 8
++
++#define SQUASHFS_MAX_FILE_SIZE_LOG 64
++
++#define SQUASHFS_MAX_FILE_SIZE ((long long) 1 << \
++ (SQUASHFS_MAX_FILE_SIZE_LOG - 2))
++
++#define SQUASHFS_MARKER_BYTE 0xff
++
++/* meta index cache */
++#define SQUASHFS_META_INDEXES (SQUASHFS_METADATA_SIZE / sizeof(unsigned int))
++#define SQUASHFS_META_ENTRIES 31
++#define SQUASHFS_META_NUMBER 8
++#define SQUASHFS_SLOTS 4
++
++struct meta_entry {
++ long long data_block;
++ unsigned int index_block;
++ unsigned short offset;
++ unsigned short pad;
++};
++
++struct meta_index {
++ unsigned int inode_number;
++ unsigned int offset;
++ unsigned short entries;
++ unsigned short skip;
++ unsigned short locked;
++ unsigned short pad;
++ struct meta_entry meta_entry[SQUASHFS_META_ENTRIES];
++};
++
++
++/*
++ * definitions for structures on disk
++ */
++
++typedef long long squashfs_block_t;
++typedef long long squashfs_inode_t;
++
++struct squashfs_super_block {
++ unsigned int s_magic;
++ unsigned int inodes;
++ unsigned int bytes_used_2;
++ unsigned int uid_start_2;
++ unsigned int guid_start_2;
++ unsigned int inode_table_start_2;
++ unsigned int directory_table_start_2;
++ unsigned int s_major:16;
++ unsigned int s_minor:16;
++ unsigned int block_size_1:16;
++ unsigned int block_log:16;
++ unsigned int flags:8;
++ unsigned int no_uids:8;
++ unsigned int no_guids:8;
++ unsigned int mkfs_time /* time of filesystem creation */;
++ squashfs_inode_t root_inode;
++ unsigned int block_size;
++ unsigned int fragments;
++ unsigned int fragment_table_start_2;
++ long long bytes_used;
++ long long uid_start;
++ long long guid_start;
++ long long inode_table_start;
++ long long directory_table_start;
++ long long fragment_table_start;
++ long long unused;
++} __attribute__ ((packed));
++
++struct squashfs_dir_index {
++ unsigned int index;
++ unsigned int start_block;
++ unsigned char size;
++ unsigned char name[0];
++} __attribute__ ((packed));
++
++#define SQUASHFS_BASE_INODE_HEADER \
++ unsigned int inode_type:4; \
++ unsigned int mode:12; \
++ unsigned int uid:8; \
++ unsigned int guid:8; \
++ unsigned int mtime; \
++ unsigned int inode_number;
++
++struct squashfs_base_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned short rdev;
++} __attribute__ ((packed));
++
++struct squashfs_symlink_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned short symlink_size;
++ char symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ squashfs_block_t start_block;
++ unsigned int fragment;
++ unsigned int offset;
++ unsigned int file_size;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_lreg_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ squashfs_block_t start_block;
++ unsigned int fragment;
++ unsigned int offset;
++ long long file_size;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned int file_size:19;
++ unsigned int offset:13;
++ unsigned int start_block;
++ unsigned int parent_inode;
++} __attribute__ ((packed));
++
++struct squashfs_ldir_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned int file_size:27;
++ unsigned int offset:13;
++ unsigned int start_block;
++ unsigned int i_count:16;
++ unsigned int parent_inode;
++ struct squashfs_dir_index index[0];
++} __attribute__ ((packed));
++
++union squashfs_inode_header {
++ struct squashfs_base_inode_header base;
++ struct squashfs_dev_inode_header dev;
++ struct squashfs_symlink_inode_header symlink;
++ struct squashfs_reg_inode_header reg;
++ struct squashfs_lreg_inode_header lreg;
++ struct squashfs_dir_inode_header dir;
++ struct squashfs_ldir_inode_header ldir;
++ struct squashfs_ipc_inode_header ipc;
++};
++
++struct squashfs_dir_entry {
++ unsigned int offset:13;
++ unsigned int type:3;
++ unsigned int size:8;
++ int inode_number:16;
++ char name[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_header {
++ unsigned int count:8;
++ unsigned int start_block;
++ unsigned int inode_number;
++} __attribute__ ((packed));
++
++struct squashfs_fragment_entry {
++ long long start_block;
++ unsigned int size;
++ unsigned int unused;
++} __attribute__ ((packed));
++
++extern int squashfs_uncompress_block(void *d, int dstlen, void *s, int srclen);
++extern int squashfs_uncompress_init(void);
++extern int squashfs_uncompress_exit(void);
++
++/*
++ * macros to convert each packed bitfield structure from little endian to big
++ * endian and vice versa. These are needed when creating or using a filesystem
++ * on a machine with different byte ordering to the target architecture.
++ *
++ */
++
++#define SQUASHFS_SWAP_START \
++ int bits;\
++ int b_pos;\
++ unsigned long long val;\
++ unsigned char *s;\
++ unsigned char *d;
++
++#define SQUASHFS_SWAP_SUPER_BLOCK(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_super_block));\
++ SQUASHFS_SWAP((s)->s_magic, d, 0, 32);\
++ SQUASHFS_SWAP((s)->inodes, d, 32, 32);\
++ SQUASHFS_SWAP((s)->bytes_used_2, d, 64, 32);\
++ SQUASHFS_SWAP((s)->uid_start_2, d, 96, 32);\
++ SQUASHFS_SWAP((s)->guid_start_2, d, 128, 32);\
++ SQUASHFS_SWAP((s)->inode_table_start_2, d, 160, 32);\
++ SQUASHFS_SWAP((s)->directory_table_start_2, d, 192, 32);\
++ SQUASHFS_SWAP((s)->s_major, d, 224, 16);\
++ SQUASHFS_SWAP((s)->s_minor, d, 240, 16);\
++ SQUASHFS_SWAP((s)->block_size_1, d, 256, 16);\
++ SQUASHFS_SWAP((s)->block_log, d, 272, 16);\
++ SQUASHFS_SWAP((s)->flags, d, 288, 8);\
++ SQUASHFS_SWAP((s)->no_uids, d, 296, 8);\
++ SQUASHFS_SWAP((s)->no_guids, d, 304, 8);\
++ SQUASHFS_SWAP((s)->mkfs_time, d, 312, 32);\
++ SQUASHFS_SWAP((s)->root_inode, d, 344, 64);\
++ SQUASHFS_SWAP((s)->block_size, d, 408, 32);\
++ SQUASHFS_SWAP((s)->fragments, d, 440, 32);\
++ SQUASHFS_SWAP((s)->fragment_table_start_2, d, 472, 32);\
++ SQUASHFS_SWAP((s)->bytes_used, d, 504, 64);\
++ SQUASHFS_SWAP((s)->uid_start, d, 568, 64);\
++ SQUASHFS_SWAP((s)->guid_start, d, 632, 64);\
++ SQUASHFS_SWAP((s)->inode_table_start, d, 696, 64);\
++ SQUASHFS_SWAP((s)->directory_table_start, d, 760, 64);\
++ SQUASHFS_SWAP((s)->fragment_table_start, d, 824, 64);\
++ SQUASHFS_SWAP((s)->unused, d, 888, 64);\
++}
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
++ SQUASHFS_MEMSET(s, d, n);\
++ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
++ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
++ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
++ SQUASHFS_SWAP((s)->inode_number, d, 64, 32);
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER(s, d, n) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_ipc_inode_header))\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++}
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_dev_inode_header)); \
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->rdev, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_symlink_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->symlink_size, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_reg_inode_header));\
++ SQUASHFS_SWAP((s)->start_block, d, 96, 64);\
++ SQUASHFS_SWAP((s)->fragment, d, 160, 32);\
++ SQUASHFS_SWAP((s)->offset, d, 192, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 224, 32);\
++}
++
++#define SQUASHFS_SWAP_LREG_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_lreg_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 128, 64);\
++ SQUASHFS_SWAP((s)->fragment, d, 192, 32);\
++ SQUASHFS_SWAP((s)->offset, d, 224, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 256, 64);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_dir_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 128, 19);\
++ SQUASHFS_SWAP((s)->offset, d, 147, 13);\
++ SQUASHFS_SWAP((s)->start_block, d, 160, 32);\
++ SQUASHFS_SWAP((s)->parent_inode, d, 192, 32);\
++}
++
++#define SQUASHFS_SWAP_LDIR_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_ldir_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 128, 27);\
++ SQUASHFS_SWAP((s)->offset, d, 155, 13);\
++ SQUASHFS_SWAP((s)->start_block, d, 168, 32);\
++ SQUASHFS_SWAP((s)->i_count, d, 200, 16);\
++ SQUASHFS_SWAP((s)->parent_inode, d, 216, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INDEX(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index));\
++ SQUASHFS_SWAP((s)->index, d, 0, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 32, 32);\
++ SQUASHFS_SWAP((s)->size, d, 64, 8);\
++}
++
++#define SQUASHFS_SWAP_DIR_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header));\
++ SQUASHFS_SWAP((s)->count, d, 0, 8);\
++ SQUASHFS_SWAP((s)->start_block, d, 8, 32);\
++ SQUASHFS_SWAP((s)->inode_number, d, 40, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_ENTRY(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry));\
++ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
++ SQUASHFS_SWAP((s)->type, d, 13, 3);\
++ SQUASHFS_SWAP((s)->size, d, 16, 8);\
++ SQUASHFS_SWAP((s)->inode_number, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_ENTRY(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry));\
++ SQUASHFS_SWAP((s)->start_block, d, 0, 64);\
++ SQUASHFS_SWAP((s)->size, d, 64, 32);\
++}
++
++#define SQUASHFS_SWAP_SHORTS(s, d, n) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * 2);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ 16)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, 16);\
++}
++
++#define SQUASHFS_SWAP_INTS(s, d, n) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * 4);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ 32)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, 32);\
++}
++
++#define SQUASHFS_SWAP_LONG_LONGS(s, d, n) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * 8);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ 64)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, 64);\
++}
++
++#define SQUASHFS_SWAP_DATA(s, d, n, bits) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * bits / 8);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ bits)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, bits);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_INDEXES(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++
++struct squashfs_base_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned int type:4;
++ unsigned int offset:4;
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned short rdev;
++} __attribute__ ((packed));
++
++struct squashfs_symlink_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned short symlink_size;
++ char symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned int mtime;
++ unsigned int start_block;
++ unsigned int file_size:32;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned int file_size:19;
++ unsigned int offset:13;
++ unsigned int mtime;
++ unsigned int start_block:24;
++} __attribute__ ((packed));
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n) \
++ SQUASHFS_MEMSET(s, d, n);\
++ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++ SQUASHFS_SWAP((s)->uid, d, 16, 4);\
++ SQUASHFS_SWAP((s)->guid, d, 20, 4);
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER_1(s, d, n) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_ipc_inode_header_1));\
++ SQUASHFS_SWAP((s)->type, d, 24, 4);\
++ SQUASHFS_SWAP((s)->offset, d, 28, 4);\
++}
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_dev_inode_header_1));\
++ SQUASHFS_SWAP((s)->rdev, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_symlink_inode_header_1));\
++ SQUASHFS_SWAP((s)->symlink_size, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_reg_inode_header_1));\
++ SQUASHFS_SWAP((s)->mtime, d, 24, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 56, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 88, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_dir_inode_header_1));\
++ SQUASHFS_SWAP((s)->file_size, d, 24, 19);\
++ SQUASHFS_SWAP((s)->offset, d, 43, 13);\
++ SQUASHFS_SWAP((s)->mtime, d, 56, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 88, 24);\
++}
++
++#endif
++
++#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++
++struct squashfs_dir_index_2 {
++ unsigned int index:27;
++ unsigned int start_block:29;
++ unsigned char size;
++ unsigned char name[0];
++} __attribute__ ((packed));
++
++struct squashfs_base_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned short rdev;
++} __attribute__ ((packed));
++
++struct squashfs_symlink_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned short symlink_size;
++ char symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned int mtime;
++ unsigned int start_block;
++ unsigned int fragment;
++ unsigned int offset;
++ unsigned int file_size:32;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned int file_size:19;
++ unsigned int offset:13;
++ unsigned int mtime;
++ unsigned int start_block:24;
++} __attribute__ ((packed));
++
++struct squashfs_ldir_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned int file_size:27;
++ unsigned int offset:13;
++ unsigned int mtime;
++ unsigned int start_block:24;
++ unsigned int i_count:16;
++ struct squashfs_dir_index_2 index[0];
++} __attribute__ ((packed));
++
++union squashfs_inode_header_2 {
++ struct squashfs_base_inode_header_2 base;
++ struct squashfs_dev_inode_header_2 dev;
++ struct squashfs_symlink_inode_header_2 symlink;
++ struct squashfs_reg_inode_header_2 reg;
++ struct squashfs_dir_inode_header_2 dir;
++ struct squashfs_ldir_inode_header_2 ldir;
++ struct squashfs_ipc_inode_header_2 ipc;
++};
++
++struct squashfs_dir_header_2 {
++ unsigned int count:8;
++ unsigned int start_block:24;
++} __attribute__ ((packed));
++
++struct squashfs_dir_entry_2 {
++ unsigned int offset:13;
++ unsigned int type:3;
++ unsigned int size:8;
++ char name[0];
++} __attribute__ ((packed));
++
++struct squashfs_fragment_entry_2 {
++ unsigned int start_block;
++ unsigned int size;
++} __attribute__ ((packed));
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
++ SQUASHFS_MEMSET(s, d, n);\
++ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
++ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, n) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER_2(s, d) \
++ SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, sizeof(struct squashfs_ipc_inode_header_2))
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_dev_inode_header_2)); \
++ SQUASHFS_SWAP((s)->rdev, d, 32, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_symlink_inode_header_2));\
++ SQUASHFS_SWAP((s)->symlink_size, d, 32, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_reg_inode_header_2));\
++ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 64, 32);\
++ SQUASHFS_SWAP((s)->fragment, d, 96, 32);\
++ SQUASHFS_SWAP((s)->offset, d, 128, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 160, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_dir_inode_header_2));\
++ SQUASHFS_SWAP((s)->file_size, d, 32, 19);\
++ SQUASHFS_SWAP((s)->offset, d, 51, 13);\
++ SQUASHFS_SWAP((s)->mtime, d, 64, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 96, 24);\
++}
++
++#define SQUASHFS_SWAP_LDIR_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_ldir_inode_header_2));\
++ SQUASHFS_SWAP((s)->file_size, d, 32, 27);\
++ SQUASHFS_SWAP((s)->offset, d, 59, 13);\
++ SQUASHFS_SWAP((s)->mtime, d, 72, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 104, 24);\
++ SQUASHFS_SWAP((s)->i_count, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_DIR_INDEX_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index_2));\
++ SQUASHFS_SWAP((s)->index, d, 0, 27);\
++ SQUASHFS_SWAP((s)->start_block, d, 27, 29);\
++ SQUASHFS_SWAP((s)->size, d, 56, 8);\
++}
++#define SQUASHFS_SWAP_DIR_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header_2));\
++ SQUASHFS_SWAP((s)->count, d, 0, 8);\
++ SQUASHFS_SWAP((s)->start_block, d, 8, 24);\
++}
++
++#define SQUASHFS_SWAP_DIR_ENTRY_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry_2));\
++ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
++ SQUASHFS_SWAP((s)->type, d, 13, 3);\
++ SQUASHFS_SWAP((s)->size, d, 16, 8);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_ENTRY_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry_2));\
++ SQUASHFS_SWAP((s)->start_block, d, 0, 32);\
++ SQUASHFS_SWAP((s)->size, d, 32, 32);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_INDEXES_2(s, d, n) SQUASHFS_SWAP_INTS(s, d, n)
++
++/* fragment and fragment table defines */
++#define SQUASHFS_FRAGMENT_BYTES_2(A) (A * sizeof(struct squashfs_fragment_entry_2))
++
++#define SQUASHFS_FRAGMENT_INDEX_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_OFFSET_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) % \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEXES_2(A) ((SQUASHFS_FRAGMENT_BYTES_2(A) + \
++ SQUASHFS_METADATA_SIZE - 1) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_BYTES_2(A) (SQUASHFS_FRAGMENT_INDEXES_2(A) *\
++ sizeof(int))
++
++#endif
++
++#ifdef __KERNEL__
++
++/*
++ * macros used to swap each structure entry, taking into account
++ * bitfields and different bitfield placing conventions on differing
++ * architectures
++ */
++
++#include <asm/byteorder.h>
++
++#ifdef __BIG_ENDIAN
++ /* convert from little endian to big endian */
++#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
++ tbits, b_pos)
++#else
++ /* convert from big endian to little endian */
++#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
++ tbits, 64 - tbits - b_pos)
++#endif
++
++#define _SQUASHFS_SWAP(value, p, pos, tbits, SHIFT) {\
++ b_pos = pos % 8;\
++ val = 0;\
++ s = (unsigned char *)p + (pos / 8);\
++ d = ((unsigned char *) &val) + 7;\
++ for(bits = 0; bits < (tbits + b_pos); bits += 8) \
++ *d-- = *s++;\
++ value = (val >> (SHIFT))/* & ((1 << tbits) - 1)*/;\
++}
++
++#define SQUASHFS_MEMSET(s, d, n) memset(s, 0, n);
++
++#endif
++#endif
+diff -urN linux-2.6.19.old/include/linux/squashfs_fs_i.h linux-2.6.19.dev/include/linux/squashfs_fs_i.h
+--- linux-2.6.19.old/include/linux/squashfs_fs_i.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/squashfs_fs_i.h 2006-12-14 03:13:16.000000000 +0100
+@@ -0,0 +1,45 @@
++#ifndef SQUASHFS_FS_I
++#define SQUASHFS_FS_I
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs_i.h
++ */
++
++struct squashfs_inode_info {
++ long long start_block;
++ unsigned int offset;
++ union {
++ struct {
++ long long fragment_start_block;
++ unsigned int fragment_size;
++ unsigned int fragment_offset;
++ long long block_list_start;
++ } s1;
++ struct {
++ long long directory_index_start;
++ unsigned int directory_index_offset;
++ unsigned int directory_index_count;
++ unsigned int parent_inode;
++ } s2;
++ } u;
++ struct inode vfs_inode;
++};
++#endif
+diff -urN linux-2.6.19.old/include/linux/squashfs_fs_sb.h linux-2.6.19.dev/include/linux/squashfs_fs_sb.h
+--- linux-2.6.19.old/include/linux/squashfs_fs_sb.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/squashfs_fs_sb.h 2006-12-14 03:13:16.000000000 +0100
+@@ -0,0 +1,74 @@
++#ifndef SQUASHFS_FS_SB
++#define SQUASHFS_FS_SB
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs_sb.h
++ */
++
++#include <linux/squashfs_fs.h>
++
++struct squashfs_cache {
++ long long block;
++ int length;
++ long long next_index;
++ char *data;
++};
++
++struct squashfs_fragment_cache {
++ long long block;
++ int length;
++ unsigned int locked;
++ char *data;
++};
++
++struct squashfs_sb_info {
++ struct squashfs_super_block sblk;
++ int devblksize;
++ int devblksize_log2;
++ int swap;
++ struct squashfs_cache *block_cache;
++ struct squashfs_fragment_cache *fragment;
++ int next_cache;
++ int next_fragment;
++ int next_meta_index;
++ unsigned int *uid;
++ unsigned int *guid;
++ long long *fragment_index;
++ unsigned int *fragment_index_2;
++ unsigned int read_size;
++ char *read_data;
++ char *read_page;
++ struct semaphore read_data_mutex;
++ struct semaphore read_page_mutex;
++ struct semaphore block_cache_mutex;
++ struct semaphore fragment_mutex;
++ struct semaphore meta_index_mutex;
++ wait_queue_head_t waitq;
++ wait_queue_head_t fragment_wait_queue;
++ struct meta_index *meta_index;
++ struct inode *(*iget)(struct super_block *s, squashfs_inode_t \
++ inode);
++ long long (*read_blocklist)(struct inode *inode, int \
++ index, int readahead_blks, char *block_list, \
++ unsigned short **block_p, unsigned int *bsize);
++ int (*read_fragment_index_table)(struct super_block *s);
++};
++#endif
+diff -urN linux-2.6.19.old/init/do_mounts_rd.c linux-2.6.19.dev/init/do_mounts_rd.c
+--- linux-2.6.19.old/init/do_mounts_rd.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/init/do_mounts_rd.c 2006-12-14 03:13:16.000000000 +0100
+@@ -5,6 +5,7 @@
+ #include <linux/ext2_fs.h>
+ #include <linux/romfs_fs.h>
+ #include <linux/cramfs_fs.h>
++#include <linux/squashfs_fs.h>
+ #include <linux/initrd.h>
+ #include <linux/string.h>
+
+@@ -39,6 +40,7 @@
+ * numbers could not be found.
+ *
+ * We currently check for the following magic numbers:
++ * squashfs
+ * minix
+ * ext2
+ * romfs
+@@ -53,6 +55,7 @@
+ struct ext2_super_block *ext2sb;
+ struct romfs_super_block *romfsb;
+ struct cramfs_super *cramfsb;
++ struct squashfs_super_block *squashfsb;
+ int nblocks = -1;
+ unsigned char *buf;
+
+@@ -64,6 +67,7 @@
+ ext2sb = (struct ext2_super_block *) buf;
+ romfsb = (struct romfs_super_block *) buf;
+ cramfsb = (struct cramfs_super *) buf;
++ squashfsb = (struct squashfs_super_block *) buf;
+ memset(buf, 0xe5, size);
+
+ /*
+@@ -101,6 +105,15 @@
+ goto done;
+ }
+
++ /* squashfs is at block zero too */
++ if (squashfsb->s_magic == SQUASHFS_MAGIC) {
++ printk(KERN_NOTICE
++ "RAMDISK: squashfs filesystem found at block %d\n",
++ start_block);
++ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
++ goto done;
++ }
++
+ /*
+ * Read block 1 to test for minix and ext2 superblock
+ */
diff --git a/packages/linux/linux-magicbox-2.6.19.2/002-flash_map.patch b/packages/linux/linux-magicbox-2.6.19.2/002-flash_map.patch
new file mode 100644
index 0000000000..5d29a047d5
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/002-flash_map.patch
@@ -0,0 +1,147 @@
+diff -urN linux.old/drivers/mtd/maps/Kconfig linux.dev/drivers/mtd/maps/Kconfig
+--- linux.old/drivers/mtd/maps/Kconfig 2006-08-30 06:30:59.000000000 +0200
++++ linux.dev/drivers/mtd/maps/Kconfig 2006-08-30 06:11:51.000000000 +0200
+@@ -323,6 +323,15 @@
+ Walnut board. If you have one of these boards and would like to
+ use the flash chips on it, say 'Y'.
+
++config MTD_MAGICMAP
++ tristate "Flash device mapped on IBM 405EP MagicBox"
++ depends on MTD_CFI && MTD_PARTITIONS && 40x && MAGICBOX
++ help
++ This enables access routines for the flash chips on the IBM 405EP
++ MagicBox board. If you have one of these boards and would like to
++ use the flash chips on it, say 'Y'.
++
++
+ config MTD_EBONY
+ tristate "Flash devices mapped on IBM 440GP Ebony"
+ depends on MTD_JEDECPROBE && EBONY
+diff -urN linux.old/drivers/mtd/maps/magicmap.c linux.dev/drivers/mtd/maps/magicmap.c
+--- linux.old/drivers/mtd/maps/magicmap.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/drivers/mtd/maps/magicmap.c 2006-08-30 06:52:34.000000000 +0200
+@@ -0,0 +1,113 @@
++/*
++ * magicmap.c: Copyleft 2005 Karol Lewandowski
++ *
++ * Mapping for MagicBox flash.
++ * Based on walnut.c.
++ *
++ * Heikki Lindholm <holindho@infradead.org>
++ *
++ *
++ * 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 <linux/module.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/map.h>
++#include <linux/mtd/partitions.h>
++#include <linux/autoconf.h>
++#include <asm/io.h>
++
++static struct mtd_info *flash;
++
++static struct map_info magic_map = {
++ .name = "Magically mapped flash",
++ .phys = 0xffc00000,
++ .size = 0x400000,
++ .bankwidth = 2,
++};
++
++static struct mtd_partition magic_partitions[] = {
++ {
++ .name = "linux",
++ .offset = 0x0,
++ .size = 0x3c0000,
++ },
++ {
++ .name = "rootfs",
++ .offset = 0x100000,
++ .size = 0x2c0000,
++ },
++ {
++ .name = "bootloader",
++ .offset = 0x3c0000,
++ .size = 0x040000,
++ .mask_flags = MTD_WRITEABLE,
++ },
++};
++
++int __init init_magic(void)
++{
++ u32 size, len;
++
++ magic_map.virt =
++ (void __iomem *)ioremap(magic_map.phys, magic_map.size);
++
++ if (!magic_map.virt) {
++ printk("Failed to ioremap flash.\n");
++ return -EIO;
++ }
++
++ simple_map_init(&magic_map);
++
++ flash = do_map_probe("cfi_probe", &magic_map);
++ if (flash) {
++ flash->owner = THIS_MODULE;
++ if (flash->read(flash, 12, sizeof(u32), &len, (char *) &size) ||
++ len != 4)
++ return -ENXIO;
++ size += 0x40; /* header size of the uImage */
++ if (size < 0x400000) {
++ /* skip to next erase block */
++ if (size & (flash->erasesize - 1)) {
++ size |= (flash->erasesize - 1);
++ size += 1;
++ }
++ magic_partitions[1].offset = size;
++ magic_partitions[1].size = magic_partitions[2].offset - size;
++ }
++
++ add_mtd_partitions(flash, magic_partitions,
++ ARRAY_SIZE(magic_partitions));
++ } else {
++ printk("map probe failed for flash\n");
++ return -ENXIO;
++ }
++
++ return 0;
++}
++
++static void __exit cleanup_magic(void)
++{
++ if (flash) {
++ del_mtd_partitions(flash);
++ map_destroy(flash);
++ }
++
++ if (magic_map.virt) {
++ iounmap((void *)magic_map.virt);
++ magic_map.virt = NULL;
++ }
++}
++
++module_init(init_magic);
++module_exit(cleanup_magic);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Karol Lewandowski");
++MODULE_DESCRIPTION("MTD map and partitions for IBM 405EP MagicBox boards");
+diff -urN linux.old/drivers/mtd/maps/Makefile linux.dev/drivers/mtd/maps/Makefile
+--- linux.old/drivers/mtd/maps/Makefile 2006-08-30 06:30:59.000000000 +0200
++++ linux.dev/drivers/mtd/maps/Makefile 2006-08-30 06:11:51.000000000 +0200
+@@ -58,6 +58,7 @@
+ obj-$(CONFIG_MTD_BEECH) += beech-mtd.o
+ obj-$(CONFIG_MTD_ARCTIC) += arctic-mtd.o
+ obj-$(CONFIG_MTD_WALNUT) += walnut.o
++obj-$(CONFIG_MTD_MAGICMAP) += magicmap.o
+ obj-$(CONFIG_MTD_H720X) += h720x-flash.o
+ obj-$(CONFIG_MTD_SBC8240) += sbc8240.o
+ obj-$(CONFIG_MTD_NOR_TOTO) += omap-toto-flash.o
diff --git a/packages/linux/linux-magicbox-2.6.19.2/002-lzma_decompress.patch b/packages/linux/linux-magicbox-2.6.19.2/002-lzma_decompress.patch
new file mode 100644
index 0000000000..ca9767729c
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/002-lzma_decompress.patch
@@ -0,0 +1,780 @@
+--- linux-2.6.19.old/lib/Makefile 2007-04-18 17:41:22.679403384 +0200
++++ linux-2.6.19.dev/lib/Makefile 2007-04-18 17:41:43.303268080 +0200
+@@ -54,6 +54,7 @@
+ obj-$(CONFIG_AUDIT_GENERIC) += audit.o
+
+ obj-$(CONFIG_SWIOTLB) += swiotlb.o
++obj-y += LzmaDecode.o
+
+ hostprogs-y := gen_crc32table
+ clean-files := crc32table.h
+--- linux-2.6.19.old/lib/LzmaDecode.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/lib/LzmaDecode.c 2006-12-14 03:13:20.000000000 +0100
+@@ -0,0 +1,663 @@
++/*
++ LzmaDecode.c
++ LZMA Decoder
++
++ LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25)
++ http://www.7-zip.org/
++
++ LZMA SDK is licensed under two licenses:
++ 1) GNU Lesser General Public License (GNU LGPL)
++ 2) Common Public License (CPL)
++ It means that you can select one of these two licenses and
++ follow rules of that license.
++
++ SPECIAL EXCEPTION:
++ Igor Pavlov, as the author of this code, expressly permits you to
++ statically or dynamically link your code (or bind by name) to the
++ interfaces of this file without subjecting your linked code to the
++ terms of the CPL or GNU LGPL. Any modifications or additions
++ to this file, however, are subject to the LGPL or CPL terms.
++*/
++
++#include <linux/LzmaDecode.h>
++
++#ifndef Byte
++#define Byte unsigned char
++#endif
++
++#define kNumTopBits 24
++#define kTopValue ((UInt32)1 << kNumTopBits)
++
++#define kNumBitModelTotalBits 11
++#define kBitModelTotal (1 << kNumBitModelTotalBits)
++#define kNumMoveBits 5
++
++typedef struct _CRangeDecoder
++{
++ Byte *Buffer;
++ Byte *BufferLim;
++ UInt32 Range;
++ UInt32 Code;
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *InCallback;
++ int Result;
++ #endif
++ int ExtraBytes;
++} CRangeDecoder;
++
++Byte RangeDecoderReadByte(CRangeDecoder *rd)
++{
++ if (rd->Buffer == rd->BufferLim)
++ {
++ #ifdef _LZMA_IN_CB
++ UInt32 size;
++ rd->Result = rd->InCallback->Read(rd->InCallback, &rd->Buffer, &size);
++ rd->BufferLim = rd->Buffer + size;
++ if (size == 0)
++ #endif
++ {
++ rd->ExtraBytes = 1;
++ return 0xFF;
++ }
++ }
++ return (*rd->Buffer++);
++}
++
++/* #define ReadByte (*rd->Buffer++) */
++#define ReadByte (RangeDecoderReadByte(rd))
++
++void RangeDecoderInit(CRangeDecoder *rd,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback
++ #else
++ Byte *stream, UInt32 bufferSize
++ #endif
++ )
++{
++ int i;
++ #ifdef _LZMA_IN_CB
++ rd->InCallback = inCallback;
++ rd->Buffer = rd->BufferLim = 0;
++ #else
++ rd->Buffer = stream;
++ rd->BufferLim = stream + bufferSize;
++ #endif
++ rd->ExtraBytes = 0;
++ rd->Code = 0;
++ rd->Range = (0xFFFFFFFF);
++ for(i = 0; i < 5; i++)
++ rd->Code = (rd->Code << 8) | ReadByte;
++}
++
++#define RC_INIT_VAR UInt32 range = rd->Range; UInt32 code = rd->Code;
++#define RC_FLUSH_VAR rd->Range = range; rd->Code = code;
++#define RC_NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | ReadByte; }
++
++UInt32 RangeDecoderDecodeDirectBits(CRangeDecoder *rd, int numTotalBits)
++{
++ RC_INIT_VAR
++ UInt32 result = 0;
++ int i;
++ for (i = numTotalBits; i > 0; i--)
++ {
++ /* UInt32 t; */
++ range >>= 1;
++
++ result <<= 1;
++ if (code >= range)
++ {
++ code -= range;
++ result |= 1;
++ }
++ /*
++ t = (code - range) >> 31;
++ t &= 1;
++ code -= range & (t - 1);
++ result = (result + result) | (1 - t);
++ */
++ RC_NORMALIZE
++ }
++ RC_FLUSH_VAR
++ return result;
++}
++
++int RangeDecoderBitDecode(CProb *prob, CRangeDecoder *rd)
++{
++ UInt32 bound = (rd->Range >> kNumBitModelTotalBits) * *prob;
++ if (rd->Code < bound)
++ {
++ rd->Range = bound;
++ *prob += (kBitModelTotal - *prob) >> kNumMoveBits;
++ if (rd->Range < kTopValue)
++ {
++ rd->Code = (rd->Code << 8) | ReadByte;
++ rd->Range <<= 8;
++ }
++ return 0;
++ }
++ else
++ {
++ rd->Range -= bound;
++ rd->Code -= bound;
++ *prob -= (*prob) >> kNumMoveBits;
++ if (rd->Range < kTopValue)
++ {
++ rd->Code = (rd->Code << 8) | ReadByte;
++ rd->Range <<= 8;
++ }
++ return 1;
++ }
++}
++
++#define RC_GET_BIT2(prob, mi, A0, A1) \
++ UInt32 bound = (range >> kNumBitModelTotalBits) * *prob; \
++ if (code < bound) \
++ { A0; range = bound; *prob += (kBitModelTotal - *prob) >> kNumMoveBits; mi <<= 1; } \
++ else \
++ { A1; range -= bound; code -= bound; *prob -= (*prob) >> kNumMoveBits; mi = (mi + mi) + 1; } \
++ RC_NORMALIZE
++
++#define RC_GET_BIT(prob, mi) RC_GET_BIT2(prob, mi, ; , ;)
++
++int RangeDecoderBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd)
++{
++ int mi = 1;
++ int i;
++ #ifdef _LZMA_LOC_OPT
++ RC_INIT_VAR
++ #endif
++ for(i = numLevels; i > 0; i--)
++ {
++ #ifdef _LZMA_LOC_OPT
++ CProb *prob = probs + mi;
++ RC_GET_BIT(prob, mi)
++ #else
++ mi = (mi + mi) + RangeDecoderBitDecode(probs + mi, rd);
++ #endif
++ }
++ #ifdef _LZMA_LOC_OPT
++ RC_FLUSH_VAR
++ #endif
++ return mi - (1 << numLevels);
++}
++
++int RangeDecoderReverseBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd)
++{
++ int mi = 1;
++ int i;
++ int symbol = 0;
++ #ifdef _LZMA_LOC_OPT
++ RC_INIT_VAR
++ #endif
++ for(i = 0; i < numLevels; i++)
++ {
++ #ifdef _LZMA_LOC_OPT
++ CProb *prob = probs + mi;
++ RC_GET_BIT2(prob, mi, ; , symbol |= (1 << i))
++ #else
++ int bit = RangeDecoderBitDecode(probs + mi, rd);
++ mi = mi + mi + bit;
++ symbol |= (bit << i);
++ #endif
++ }
++ #ifdef _LZMA_LOC_OPT
++ RC_FLUSH_VAR
++ #endif
++ return symbol;
++}
++
++Byte LzmaLiteralDecode(CProb *probs, CRangeDecoder *rd)
++{
++ int symbol = 1;
++ #ifdef _LZMA_LOC_OPT
++ RC_INIT_VAR
++ #endif
++ do
++ {
++ #ifdef _LZMA_LOC_OPT
++ CProb *prob = probs + symbol;
++ RC_GET_BIT(prob, symbol)
++ #else
++ symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd);
++ #endif
++ }
++ while (symbol < 0x100);
++ #ifdef _LZMA_LOC_OPT
++ RC_FLUSH_VAR
++ #endif
++ return symbol;
++}
++
++Byte LzmaLiteralDecodeMatch(CProb *probs, CRangeDecoder *rd, Byte matchByte)
++{
++ int symbol = 1;
++ #ifdef _LZMA_LOC_OPT
++ RC_INIT_VAR
++ #endif
++ do
++ {
++ int bit;
++ int matchBit = (matchByte >> 7) & 1;
++ matchByte <<= 1;
++ #ifdef _LZMA_LOC_OPT
++ {
++ CProb *prob = probs + ((1 + matchBit) << 8) + symbol;
++ RC_GET_BIT2(prob, symbol, bit = 0, bit = 1)
++ }
++ #else
++ bit = RangeDecoderBitDecode(probs + ((1 + matchBit) << 8) + symbol, rd);
++ symbol = (symbol << 1) | bit;
++ #endif
++ if (matchBit != bit)
++ {
++ while (symbol < 0x100)
++ {
++ #ifdef _LZMA_LOC_OPT
++ CProb *prob = probs + symbol;
++ RC_GET_BIT(prob, symbol)
++ #else
++ symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd);
++ #endif
++ }
++ break;
++ }
++ }
++ while (symbol < 0x100);
++ #ifdef _LZMA_LOC_OPT
++ RC_FLUSH_VAR
++ #endif
++ return symbol;
++}
++
++#define kNumPosBitsMax 4
++#define kNumPosStatesMax (1 << kNumPosBitsMax)
++
++#define kLenNumLowBits 3
++#define kLenNumLowSymbols (1 << kLenNumLowBits)
++#define kLenNumMidBits 3
++#define kLenNumMidSymbols (1 << kLenNumMidBits)
++#define kLenNumHighBits 8
++#define kLenNumHighSymbols (1 << kLenNumHighBits)
++
++#define LenChoice 0
++#define LenChoice2 (LenChoice + 1)
++#define LenLow (LenChoice2 + 1)
++#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
++#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
++#define kNumLenProbs (LenHigh + kLenNumHighSymbols)
++
++int LzmaLenDecode(CProb *p, CRangeDecoder *rd, int posState)
++{
++ if(RangeDecoderBitDecode(p + LenChoice, rd) == 0)
++ return RangeDecoderBitTreeDecode(p + LenLow +
++ (posState << kLenNumLowBits), kLenNumLowBits, rd);
++ if(RangeDecoderBitDecode(p + LenChoice2, rd) == 0)
++ return kLenNumLowSymbols + RangeDecoderBitTreeDecode(p + LenMid +
++ (posState << kLenNumMidBits), kLenNumMidBits, rd);
++ return kLenNumLowSymbols + kLenNumMidSymbols +
++ RangeDecoderBitTreeDecode(p + LenHigh, kLenNumHighBits, rd);
++}
++
++#define kNumStates 12
++
++#define kStartPosModelIndex 4
++#define kEndPosModelIndex 14
++#define kNumFullDistances (1 << (kEndPosModelIndex >> 1))
++
++#define kNumPosSlotBits 6
++#define kNumLenToPosStates 4
++
++#define kNumAlignBits 4
++#define kAlignTableSize (1 << kNumAlignBits)
++
++#define kMatchMinLen 2
++
++#define IsMatch 0
++#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax))
++#define IsRepG0 (IsRep + kNumStates)
++#define IsRepG1 (IsRepG0 + kNumStates)
++#define IsRepG2 (IsRepG1 + kNumStates)
++#define IsRep0Long (IsRepG2 + kNumStates)
++#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax))
++#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
++#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex)
++#define LenCoder (Align + kAlignTableSize)
++#define RepLenCoder (LenCoder + kNumLenProbs)
++#define Literal (RepLenCoder + kNumLenProbs)
++
++#if Literal != LZMA_BASE_SIZE
++StopCompilingDueBUG
++#endif
++
++#ifdef _LZMA_OUT_READ
++
++typedef struct _LzmaVarState
++{
++ CRangeDecoder RangeDecoder;
++ Byte *Dictionary;
++ UInt32 DictionarySize;
++ UInt32 DictionaryPos;
++ UInt32 GlobalPos;
++ UInt32 Reps[4];
++ int lc;
++ int lp;
++ int pb;
++ int State;
++ int PreviousIsMatch;
++ int RemainLen;
++} LzmaVarState;
++
++int LzmaDecoderInit(
++ unsigned char *buffer, UInt32 bufferSize,
++ int lc, int lp, int pb,
++ unsigned char *dictionary, UInt32 dictionarySize,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback
++ #else
++ unsigned char *inStream, UInt32 inSize
++ #endif
++ )
++{
++ LzmaVarState *vs = (LzmaVarState *)buffer;
++ CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
++ UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
++ UInt32 i;
++ if (bufferSize < numProbs * sizeof(CProb) + sizeof(LzmaVarState))
++ return LZMA_RESULT_NOT_ENOUGH_MEM;
++ vs->Dictionary = dictionary;
++ vs->DictionarySize = dictionarySize;
++ vs->DictionaryPos = 0;
++ vs->GlobalPos = 0;
++ vs->Reps[0] = vs->Reps[1] = vs->Reps[2] = vs->Reps[3] = 1;
++ vs->lc = lc;
++ vs->lp = lp;
++ vs->pb = pb;
++ vs->State = 0;
++ vs->PreviousIsMatch = 0;
++ vs->RemainLen = 0;
++ dictionary[dictionarySize - 1] = 0;
++ for (i = 0; i < numProbs; i++)
++ p[i] = kBitModelTotal >> 1;
++ RangeDecoderInit(&vs->RangeDecoder,
++ #ifdef _LZMA_IN_CB
++ inCallback
++ #else
++ inStream, inSize
++ #endif
++ );
++ return LZMA_RESULT_OK;
++}
++
++int LzmaDecode(unsigned char *buffer,
++ unsigned char *outStream, UInt32 outSize,
++ UInt32 *outSizeProcessed)
++{
++ LzmaVarState *vs = (LzmaVarState *)buffer;
++ CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
++ CRangeDecoder rd = vs->RangeDecoder;
++ int state = vs->State;
++ int previousIsMatch = vs->PreviousIsMatch;
++ Byte previousByte;
++ UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3];
++ UInt32 nowPos = 0;
++ UInt32 posStateMask = (1 << (vs->pb)) - 1;
++ UInt32 literalPosMask = (1 << (vs->lp)) - 1;
++ int lc = vs->lc;
++ int len = vs->RemainLen;
++ UInt32 globalPos = vs->GlobalPos;
++
++ Byte *dictionary = vs->Dictionary;
++ UInt32 dictionarySize = vs->DictionarySize;
++ UInt32 dictionaryPos = vs->DictionaryPos;
++
++ if (len == -1)
++ {
++ *outSizeProcessed = 0;
++ return LZMA_RESULT_OK;
++ }
++
++ while(len > 0 && nowPos < outSize)
++ {
++ UInt32 pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos];
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ len--;
++ }
++ if (dictionaryPos == 0)
++ previousByte = dictionary[dictionarySize - 1];
++ else
++ previousByte = dictionary[dictionaryPos - 1];
++#else
++
++int LzmaDecode(
++ Byte *buffer, UInt32 bufferSize,
++ int lc, int lp, int pb,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback,
++ #else
++ unsigned char *inStream, UInt32 inSize,
++ #endif
++ unsigned char *outStream, UInt32 outSize,
++ UInt32 *outSizeProcessed)
++{
++ UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
++ CProb *p = (CProb *)buffer;
++ CRangeDecoder rd;
++ UInt32 i;
++ int state = 0;
++ int previousIsMatch = 0;
++ Byte previousByte = 0;
++ UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1;
++ UInt32 nowPos = 0;
++ UInt32 posStateMask = (1 << pb) - 1;
++ UInt32 literalPosMask = (1 << lp) - 1;
++ int len = 0;
++ if (bufferSize < numProbs * sizeof(CProb))
++ return LZMA_RESULT_NOT_ENOUGH_MEM;
++ for (i = 0; i < numProbs; i++)
++ p[i] = kBitModelTotal >> 1;
++ RangeDecoderInit(&rd,
++ #ifdef _LZMA_IN_CB
++ inCallback
++ #else
++ inStream, inSize
++ #endif
++ );
++#endif
++
++ *outSizeProcessed = 0;
++ while(nowPos < outSize)
++ {
++ int posState = (int)(
++ (nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ & posStateMask);
++ #ifdef _LZMA_IN_CB
++ if (rd.Result != LZMA_RESULT_OK)
++ return rd.Result;
++ #endif
++ if (rd.ExtraBytes != 0)
++ return LZMA_RESULT_DATA_ERROR;
++ if (RangeDecoderBitDecode(p + IsMatch + (state << kNumPosBitsMax) + posState, &rd) == 0)
++ {
++ CProb *probs = p + Literal + (LZMA_LIT_SIZE *
++ (((
++ (nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ & literalPosMask) << lc) + (previousByte >> (8 - lc))));
++
++ if (state < 4) state = 0;
++ else if (state < 10) state -= 3;
++ else state -= 6;
++ if (previousIsMatch)
++ {
++ Byte matchByte;
++ #ifdef _LZMA_OUT_READ
++ UInt32 pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ matchByte = dictionary[pos];
++ #else
++ matchByte = outStream[nowPos - rep0];
++ #endif
++ previousByte = LzmaLiteralDecodeMatch(probs, &rd, matchByte);
++ previousIsMatch = 0;
++ }
++ else
++ previousByte = LzmaLiteralDecode(probs, &rd);
++ outStream[nowPos++] = previousByte;
++ #ifdef _LZMA_OUT_READ
++ dictionary[dictionaryPos] = previousByte;
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ #endif
++ }
++ else
++ {
++ previousIsMatch = 1;
++ if (RangeDecoderBitDecode(p + IsRep + state, &rd) == 1)
++ {
++ if (RangeDecoderBitDecode(p + IsRepG0 + state, &rd) == 0)
++ {
++ if (RangeDecoderBitDecode(p + IsRep0Long + (state << kNumPosBitsMax) + posState, &rd) == 0)
++ {
++ #ifdef _LZMA_OUT_READ
++ UInt32 pos;
++ #endif
++ if (
++ (nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ == 0)
++ return LZMA_RESULT_DATA_ERROR;
++ state = state < 7 ? 9 : 11;
++ #ifdef _LZMA_OUT_READ
++ pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ previousByte = dictionary[pos];
++ dictionary[dictionaryPos] = previousByte;
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ #else
++ previousByte = outStream[nowPos - rep0];
++ #endif
++ outStream[nowPos++] = previousByte;
++ continue;
++ }
++ }
++ else
++ {
++ UInt32 distance;
++ if(RangeDecoderBitDecode(p + IsRepG1 + state, &rd) == 0)
++ distance = rep1;
++ else
++ {
++ if(RangeDecoderBitDecode(p + IsRepG2 + state, &rd) == 0)
++ distance = rep2;
++ else
++ {
++ distance = rep3;
++ rep3 = rep2;
++ }
++ rep2 = rep1;
++ }
++ rep1 = rep0;
++ rep0 = distance;
++ }
++ len = LzmaLenDecode(p + RepLenCoder, &rd, posState);
++ state = state < 7 ? 8 : 11;
++ }
++ else
++ {
++ int posSlot;
++ rep3 = rep2;
++ rep2 = rep1;
++ rep1 = rep0;
++ state = state < 7 ? 7 : 10;
++ len = LzmaLenDecode(p + LenCoder, &rd, posState);
++ posSlot = RangeDecoderBitTreeDecode(p + PosSlot +
++ ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) <<
++ kNumPosSlotBits), kNumPosSlotBits, &rd);
++ if (posSlot >= kStartPosModelIndex)
++ {
++ int numDirectBits = ((posSlot >> 1) - 1);
++ rep0 = ((2 | ((UInt32)posSlot & 1)) << numDirectBits);
++ if (posSlot < kEndPosModelIndex)
++ {
++ rep0 += RangeDecoderReverseBitTreeDecode(
++ p + SpecPos + rep0 - posSlot - 1, numDirectBits, &rd);
++ }
++ else
++ {
++ rep0 += RangeDecoderDecodeDirectBits(&rd,
++ numDirectBits - kNumAlignBits) << kNumAlignBits;
++ rep0 += RangeDecoderReverseBitTreeDecode(p + Align, kNumAlignBits, &rd);
++ }
++ }
++ else
++ rep0 = posSlot;
++ rep0++;
++ }
++ if (rep0 == (UInt32)(0))
++ {
++ /* it's for stream version */
++ len = -1;
++ break;
++ }
++ if (rep0 > nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ {
++ return LZMA_RESULT_DATA_ERROR;
++ }
++ len += kMatchMinLen;
++ do
++ {
++ #ifdef _LZMA_OUT_READ
++ UInt32 pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ previousByte = dictionary[pos];
++ dictionary[dictionaryPos] = previousByte;
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ #else
++ previousByte = outStream[nowPos - rep0];
++ #endif
++ outStream[nowPos++] = previousByte;
++ len--;
++ }
++ while(len > 0 && nowPos < outSize);
++ }
++ }
++
++ #ifdef _LZMA_OUT_READ
++ vs->RangeDecoder = rd;
++ vs->DictionaryPos = dictionaryPos;
++ vs->GlobalPos = globalPos + nowPos;
++ vs->Reps[0] = rep0;
++ vs->Reps[1] = rep1;
++ vs->Reps[2] = rep2;
++ vs->Reps[3] = rep3;
++ vs->State = state;
++ vs->PreviousIsMatch = previousIsMatch;
++ vs->RemainLen = len;
++ #endif
++
++ *outSizeProcessed = nowPos;
++ return LZMA_RESULT_OK;
++}
+--- linux-2.6.19.old/include/linux/LzmaDecode.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/LzmaDecode.h 2006-12-14 03:13:20.000000000 +0100
+@@ -0,0 +1,100 @@
++/*
++ LzmaDecode.h
++ LZMA Decoder interface
++
++ LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25)
++ http://www.7-zip.org/
++
++ LZMA SDK is licensed under two licenses:
++ 1) GNU Lesser General Public License (GNU LGPL)
++ 2) Common Public License (CPL)
++ It means that you can select one of these two licenses and
++ follow rules of that license.
++
++ SPECIAL EXCEPTION:
++ Igor Pavlov, as the author of this code, expressly permits you to
++ statically or dynamically link your code (or bind by name) to the
++ interfaces of this file without subjecting your linked code to the
++ terms of the CPL or GNU LGPL. Any modifications or additions
++ to this file, however, are subject to the LGPL or CPL terms.
++*/
++
++#ifndef __LZMADECODE_H
++#define __LZMADECODE_H
++
++/* #define _LZMA_IN_CB */
++/* Use callback for input data */
++
++/* #define _LZMA_OUT_READ */
++/* Use read function for output data */
++
++/* #define _LZMA_PROB32 */
++/* It can increase speed on some 32-bit CPUs,
++ but memory usage will be doubled in that case */
++
++/* #define _LZMA_LOC_OPT */
++/* Enable local speed optimizations inside code */
++
++#ifndef UInt32
++#ifdef _LZMA_UINT32_IS_ULONG
++#define UInt32 unsigned long
++#else
++#define UInt32 unsigned int
++#endif
++#endif
++
++#ifdef _LZMA_PROB32
++#define CProb UInt32
++#else
++#define CProb unsigned short
++#endif
++
++#define LZMA_RESULT_OK 0
++#define LZMA_RESULT_DATA_ERROR 1
++#define LZMA_RESULT_NOT_ENOUGH_MEM 2
++
++#ifdef _LZMA_IN_CB
++typedef struct _ILzmaInCallback
++{
++ int (*Read)(void *object, unsigned char **buffer, UInt32 *bufferSize);
++} ILzmaInCallback;
++#endif
++
++#define LZMA_BASE_SIZE 1846
++#define LZMA_LIT_SIZE 768
++
++/*
++bufferSize = (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)))* sizeof(CProb)
++bufferSize += 100 in case of _LZMA_OUT_READ
++by default CProb is unsigned short,
++but if specify _LZMA_PROB_32, CProb will be UInt32(unsigned int)
++*/
++
++#ifdef _LZMA_OUT_READ
++int LzmaDecoderInit(
++ unsigned char *buffer, UInt32 bufferSize,
++ int lc, int lp, int pb,
++ unsigned char *dictionary, UInt32 dictionarySize,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback
++ #else
++ unsigned char *inStream, UInt32 inSize
++ #endif
++);
++#endif
++
++int LzmaDecode(
++ unsigned char *buffer,
++ #ifndef _LZMA_OUT_READ
++ UInt32 bufferSize,
++ int lc, int lp, int pb,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback,
++ #else
++ unsigned char *inStream, UInt32 inSize,
++ #endif
++ #endif
++ unsigned char *outStream, UInt32 outSize,
++ UInt32 *outSizeProcessed);
++
++#endif
+
diff --git a/packages/linux/linux-magicbox-2.6.19.2/003-squashfs_lzma.patch b/packages/linux/linux-magicbox-2.6.19.2/003-squashfs_lzma.patch
new file mode 100644
index 0000000000..6a21227dcb
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/003-squashfs_lzma.patch
@@ -0,0 +1,109 @@
+diff -urN linux-2.6.19.old/fs/squashfs/inode.c linux-2.6.19.dev/fs/squashfs/inode.c
+--- linux-2.6.19.old/fs/squashfs/inode.c 2006-12-14 03:13:20.000000000 +0100
++++ linux-2.6.19.dev/fs/squashfs/inode.c 2006-12-14 03:13:20.000000000 +0100
+@@ -4,6 +4,9 @@
+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
+ * Phillip Lougher <phillip@lougher.org.uk>
+ *
++ * LZMA decompressor support added by Oleg I. Vdovikin
++ * Copyright (c) 2005 Oleg I.Vdovikin <oleg@cs.msu.su>
++ *
+ * 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,
+@@ -21,6 +24,7 @@
+ * inode.c
+ */
+
++#define SQUASHFS_LZMA
+ #include <linux/types.h>
+ #include <linux/squashfs_fs.h>
+ #include <linux/module.h>
+@@ -44,6 +48,19 @@
+
+ #include "squashfs.h"
+
++#ifdef SQUASHFS_LZMA
++#include <linux/LzmaDecode.h>
++
++/* default LZMA settings, should be in sync with mksquashfs */
++#define LZMA_LC 3
++#define LZMA_LP 0
++#define LZMA_PB 2
++
++#define LZMA_WORKSPACE_SIZE ((LZMA_BASE_SIZE + \
++ (LZMA_LIT_SIZE << (LZMA_LC + LZMA_LP))) * sizeof(CProb))
++
++#endif
++
+ static void squashfs_put_super(struct super_block *);
+ static int squashfs_statfs(struct dentry *, struct kstatfs *);
+ static int squashfs_symlink_readpage(struct file *file, struct page *page);
+@@ -64,7 +81,11 @@
+ const char *, void *, struct vfsmount *);
+
+
++#ifdef SQUASHFS_LZMA
++static unsigned char lzma_workspace[LZMA_WORKSPACE_SIZE];
++#else
+ static z_stream stream;
++#endif
+
+ static struct file_system_type squashfs_fs_type = {
+ .owner = THIS_MODULE,
+@@ -249,6 +270,15 @@
+ if (compressed) {
+ int zlib_err;
+
++#ifdef SQUASHFS_LZMA
++ if ((zlib_err = LzmaDecode(lzma_workspace,
++ LZMA_WORKSPACE_SIZE, LZMA_LC, LZMA_LP, LZMA_PB,
++ c_buffer, c_byte, buffer, msblk->read_size, &bytes)) != LZMA_RESULT_OK)
++ {
++ ERROR("lzma returned unexpected result 0x%x\n", zlib_err);
++ bytes = 0;
++ }
++#else
+ stream.next_in = c_buffer;
+ stream.avail_in = c_byte;
+ stream.next_out = buffer;
+@@ -263,7 +293,7 @@
+ bytes = 0;
+ } else
+ bytes = stream.total_out;
+-
++#endif
+ up(&msblk->read_data_mutex);
+ }
+
+@@ -2045,15 +2075,19 @@
+ printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) "
+ "Phillip Lougher\n");
+
++#ifndef SQUASHFS_LZMA
+ if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
+ ERROR("Failed to allocate zlib workspace\n");
+ destroy_inodecache();
+ err = -ENOMEM;
+ goto out;
+ }
++#endif
+
+ if ((err = register_filesystem(&squashfs_fs_type))) {
++#ifndef SQUASHFS_LZMA
+ vfree(stream.workspace);
++#endif
+ destroy_inodecache();
+ }
+
+@@ -2064,7 +2098,9 @@
+
+ static void __exit exit_squashfs_fs(void)
+ {
++#ifndef SQUASHFS_LZMA
+ vfree(stream.workspace);
++#endif
+ unregister_filesystem(&squashfs_fs_type);
+ destroy_inodecache();
+ }
+
diff --git a/packages/linux/linux-magicbox-2.6.19.2/004-extra_optimization.patch b/packages/linux/linux-magicbox-2.6.19.2/004-extra_optimization.patch
new file mode 100644
index 0000000000..3a8dfdcd00
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/004-extra_optimization.patch
@@ -0,0 +1,13 @@
+diff -urN linux-2.6.19.old/Makefile linux-2.6.19.dev/Makefile
+--- linux-2.6.19.old/Makefile 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/Makefile 2006-12-14 03:13:23.000000000 +0100
+@@ -513,6 +513,9 @@
+ NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
+ CHECKFLAGS += $(NOSTDINC_FLAGS)
+
++# improve gcc optimization
++CFLAGS += $(call cc-option,-funit-at-a-time,)
++
+ # warn about C99 declaration after statement
+ CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
+
diff --git a/packages/linux/linux-magicbox-2.6.19.2/006-gcc4_inline_fix.patch b/packages/linux/linux-magicbox-2.6.19.2/006-gcc4_inline_fix.patch
new file mode 100644
index 0000000000..32d0bc4713
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/006-gcc4_inline_fix.patch
@@ -0,0 +1,12 @@
+diff -urN linux-2.6.19.old/include/asm-mips/system.h linux-2.6.19.dev/include/asm-mips/system.h
+--- linux-2.6.19.old/include/asm-mips/system.h 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/include/asm-mips/system.h 2006-12-14 03:13:28.000000000 +0100
+@@ -311,7 +311,7 @@
+ if something tries to do an invalid xchg(). */
+ extern void __xchg_called_with_bad_pointer(void);
+
+-static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size)
++static __always_inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size)
+ {
+ switch (size) {
+ case 4:
diff --git a/packages/linux/linux-magicbox-2.6.19.2/007-samsung_flash.patch b/packages/linux/linux-magicbox-2.6.19.2/007-samsung_flash.patch
new file mode 100644
index 0000000000..e48fe04b0d
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/007-samsung_flash.patch
@@ -0,0 +1,37 @@
+diff -urN linux-2.6.19.old/drivers/mtd/chips/cfi_cmdset_0002.c linux-2.6.19.dev/drivers/mtd/chips/cfi_cmdset_0002.c
+--- linux-2.6.19.old/drivers/mtd/chips/cfi_cmdset_0002.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/drivers/mtd/chips/cfi_cmdset_0002.c 2006-12-14 03:13:30.000000000 +0100
+@@ -50,6 +50,7 @@
+ #define SST49LF004B 0x0060
+ #define SST49LF008A 0x005a
+ #define AT49BV6416 0x00d6
++#define MANUFACTURER_SAMSUNG 0x00ec
+
+ static int cfi_amdstd_read (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
+ static int cfi_amdstd_write_words(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
+@@ -293,12 +294,19 @@
+
+ if (extp->MajorVersion != '1' ||
+ (extp->MinorVersion < '0' || extp->MinorVersion > '4')) {
+- printk(KERN_ERR " Unknown Amd/Fujitsu Extended Query "
+- "version %c.%c.\n", extp->MajorVersion,
+- extp->MinorVersion);
+- kfree(extp);
+- kfree(mtd);
+- return NULL;
++ if (cfi->mfr == MANUFACTURER_SAMSUNG &&
++ (extp->MajorVersion == '3' && extp->MinorVersion == '3')) {
++ printk(KERN_NOTICE " Newer Samsung flash detected, "
++ "should be compatibile with Amd/Fujitsu.\n");
++ }
++ else {
++ printk(KERN_ERR " Unknown Amd/Fujitsu Extended Query "
++ "version %c.%c.\n", extp->MajorVersion,
++ extp->MinorVersion);
++ kfree(extp);
++ kfree(mtd);
++ return NULL;
++ }
+ }
+
+ /* Install our own private info structure */
diff --git a/packages/linux/linux-magicbox-2.6.19.2/009-revert_intel_flash_breakage.patch b/packages/linux/linux-magicbox-2.6.19.2/009-revert_intel_flash_breakage.patch
new file mode 100644
index 0000000000..ea06360c48
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/009-revert_intel_flash_breakage.patch
@@ -0,0 +1,169 @@
+--- linux.old/drivers/mtd/chips/cfi_cmdset_0001.c 2007-02-13 02:41:50.816650352 +0100
++++ linux.dev/drivers/mtd/chips/cfi_cmdset_0001.c 2007-02-13 02:42:13.782159064 +0100
+@@ -908,7 +908,7 @@
+
+ static int __xipram xip_wait_for_operation(
+ struct map_info *map, struct flchip *chip,
+- unsigned long adr, unsigned int chip_op_time )
++ unsigned long adr, int *chip_op_time )
+ {
+ struct cfi_private *cfi = map->fldrv_priv;
+ struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
+@@ -917,7 +917,7 @@
+ flstate_t oldstate, newstate;
+
+ start = xip_currtime();
+- usec = chip_op_time * 8;
++ usec = *chip_op_time * 8;
+ if (usec == 0)
+ usec = 500000;
+ done = 0;
+@@ -1027,8 +1027,8 @@
+ #define XIP_INVAL_CACHED_RANGE(map, from, size) \
+ INVALIDATE_CACHED_RANGE(map, from, size)
+
+-#define INVAL_CACHE_AND_WAIT(map, chip, cmd_adr, inval_adr, inval_len, usec) \
+- xip_wait_for_operation(map, chip, cmd_adr, usec)
++#define INVAL_CACHE_AND_WAIT(map, chip, cmd_adr, inval_adr, inval_len, p_usec) \
++ xip_wait_for_operation(map, chip, cmd_adr, p_usec)
+
+ #else
+
+@@ -1040,65 +1040,65 @@
+ static int inval_cache_and_wait_for_operation(
+ struct map_info *map, struct flchip *chip,
+ unsigned long cmd_adr, unsigned long inval_adr, int inval_len,
+- unsigned int chip_op_time)
++ int *chip_op_time )
+ {
+ struct cfi_private *cfi = map->fldrv_priv;
+ map_word status, status_OK = CMD(0x80);
+- int chip_state = chip->state;
+- unsigned int timeo, sleep_time;
++ int z, chip_state = chip->state;
++ unsigned long timeo;
+
+ spin_unlock(chip->mutex);
+ if (inval_len)
+ INVALIDATE_CACHED_RANGE(map, inval_adr, inval_len);
++ if (*chip_op_time)
++ cfi_udelay(*chip_op_time);
+ spin_lock(chip->mutex);
+
+- /* set our timeout to 8 times the expected delay */
+- timeo = chip_op_time * 8;
+- if (!timeo)
+- timeo = 500000;
+- sleep_time = chip_op_time / 2;
++ timeo = *chip_op_time * 8 * HZ / 1000000;
++ if (timeo < HZ/2)
++ timeo = HZ/2;
++ timeo += jiffies;
+
++ z = 0;
+ for (;;) {
++ if (chip->state != chip_state) {
++ /* Someone's suspended the operation: sleep */
++ DECLARE_WAITQUEUE(wait, current);
++
++ set_current_state(TASK_UNINTERRUPTIBLE);
++ add_wait_queue(&chip->wq, &wait);
++ spin_unlock(chip->mutex);
++ schedule();
++ remove_wait_queue(&chip->wq, &wait);
++ timeo = jiffies + (HZ / 2); /* FIXME */
++ spin_lock(chip->mutex);
++ continue;
++ }
++
+ status = map_read(map, cmd_adr);
+ if (map_word_andequal(map, status, status_OK, status_OK))
+ break;
+
+- if (!timeo) {
++ /* OK Still waiting */
++ if (time_after(jiffies, timeo)) {
+ map_write(map, CMD(0x70), cmd_adr);
+ chip->state = FL_STATUS;
+ return -ETIME;
+ }
+
+- /* OK Still waiting. Drop the lock, wait a while and retry. */
++ /* Latency issues. Drop the lock, wait a while and retry */
++ z++;
+ spin_unlock(chip->mutex);
+- if (sleep_time >= 1000000/HZ) {
+- /*
+- * Half of the normal delay still remaining
+- * can be performed with a sleeping delay instead
+- * of busy waiting.
+- */
+- msleep(sleep_time/1000);
+- timeo -= sleep_time;
+- sleep_time = 1000000/HZ;
+- } else {
+- udelay(1);
+- cond_resched();
+- timeo--;
+- }
++ cfi_udelay(1);
+ spin_lock(chip->mutex);
+-
+- while (chip->state != chip_state) {
+- /* Someone's suspended the operation: sleep */
+- DECLARE_WAITQUEUE(wait, current);
+- set_current_state(TASK_UNINTERRUPTIBLE);
+- add_wait_queue(&chip->wq, &wait);
+- spin_unlock(chip->mutex);
+- schedule();
+- remove_wait_queue(&chip->wq, &wait);
+- spin_lock(chip->mutex);
+- }
+ }
+
++ if (!z) {
++ if (!--(*chip_op_time))
++ *chip_op_time = 1;
++ } else if (z > 1)
++ ++(*chip_op_time);
++
+ /* Done and happy. */
+ chip->state = FL_STATUS;
+ return 0;
+@@ -1107,7 +1107,8 @@
+ #endif
+
+ #define WAIT_TIMEOUT(map, chip, adr, udelay) \
+- INVAL_CACHE_AND_WAIT(map, chip, adr, 0, 0, udelay);
++ ({ int __udelay = (udelay); \
++ INVAL_CACHE_AND_WAIT(map, chip, adr, 0, 0, &__udelay); })
+
+
+ static int do_point_onechip (struct map_info *map, struct flchip *chip, loff_t adr, size_t len)
+@@ -1331,7 +1332,7 @@
+
+ ret = INVAL_CACHE_AND_WAIT(map, chip, adr,
+ adr, map_bankwidth(map),
+- chip->word_write_time);
++ &chip->word_write_time);
+ if (ret) {
+ xip_enable(map, chip, adr);
+ printk(KERN_ERR "%s: word write error (status timeout)\n", map->name);
+@@ -1568,7 +1569,7 @@
+
+ ret = INVAL_CACHE_AND_WAIT(map, chip, cmd_adr,
+ adr, len,
+- chip->buffer_write_time);
++ &chip->buffer_write_time);
+ if (ret) {
+ map_write(map, CMD(0x70), cmd_adr);
+ chip->state = FL_STATUS;
+@@ -1703,7 +1704,7 @@
+
+ ret = INVAL_CACHE_AND_WAIT(map, chip, adr,
+ adr, len,
+- chip->erase_time);
++ &chip->erase_time);
+ if (ret) {
+ map_write(map, CMD(0x70), adr);
+ chip->state = FL_STATUS;
diff --git a/packages/linux/linux-magicbox-2.6.19.2/010-disable_old_squashfs_compatibility.patch b/packages/linux/linux-magicbox-2.6.19.2/010-disable_old_squashfs_compatibility.patch
new file mode 100644
index 0000000000..4d556a4133
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/010-disable_old_squashfs_compatibility.patch
@@ -0,0 +1,21 @@
+diff -urN linux-2.6.19.old/fs/squashfs/Makefile linux-2.6.19.dev/fs/squashfs/Makefile
+--- linux-2.6.19.old/fs/squashfs/Makefile 2006-12-14 03:13:22.000000000 +0100
++++ linux-2.6.19.dev/fs/squashfs/Makefile 2006-12-14 03:13:31.000000000 +0100
+@@ -4,4 +4,3 @@
+
+ obj-$(CONFIG_SQUASHFS) += squashfs.o
+ squashfs-y += inode.o
+-squashfs-y += squashfs2_0.o
+diff -urN linux-2.6.19.old/fs/squashfs/squashfs.h linux-2.6.19.dev/fs/squashfs/squashfs.h
+--- linux-2.6.19.old/fs/squashfs/squashfs.h 2006-12-14 03:13:20.000000000 +0100
++++ linux-2.6.19.dev/fs/squashfs/squashfs.h 2006-12-14 03:13:31.000000000 +0100
+@@ -24,6 +24,9 @@
+ #ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
+ #undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
+ #endif
++#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++#undef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++#endif
+
+ #ifdef SQUASHFS_TRACE
+ #define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args)
diff --git a/packages/linux/linux-magicbox-2.6.19.2/011-mips_boot.patch b/packages/linux/linux-magicbox-2.6.19.2/011-mips_boot.patch
new file mode 100644
index 0000000000..e97b6316a2
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/011-mips_boot.patch
@@ -0,0 +1,14 @@
+diff -urN linux-2.6.19.old/arch/mips/kernel/head.S linux-2.6.19.dev/arch/mips/kernel/head.S
+--- linux-2.6.19.old/arch/mips/kernel/head.S 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/arch/mips/kernel/head.S 2006-12-14 03:13:33.000000000 +0100
+@@ -129,6 +129,10 @@
+ #endif
+ .endm
+
++
++ j kernel_entry
++ nop
++
+ /*
+ * Reserved space for exception handlers.
+ * Necessary for machines which link their kernels at KSEG0.
diff --git a/packages/linux/linux-magicbox-2.6.19.2/012-mips_cpu_tlb.patch b/packages/linux/linux-magicbox-2.6.19.2/012-mips_cpu_tlb.patch
new file mode 100644
index 0000000000..90f2d9465f
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/012-mips_cpu_tlb.patch
@@ -0,0 +1,20 @@
+diff -Nur linux-2.6.17/arch/mips/mm/tlbex.c linux-2.6.17-owrt/arch/mips/mm/tlbex.c
+--- linux-2.6.17/arch/mips/mm/tlbex.c 2006-06-18 03:49:35.000000000 +0200
++++ linux-2.6.17-owrt/arch/mips/mm/tlbex.c 2006-06-18 12:48:27.000000000 +0200
+@@ -876,7 +876,6 @@
+ case CPU_R10000:
+ case CPU_R12000:
+ case CPU_R14000:
+- case CPU_4KC:
+ case CPU_SB1:
+ case CPU_SB1A:
+ case CPU_4KSC:
+@@ -904,6 +903,7 @@
+ tlbw(p);
+ break;
+
++ case CPU_4KC:
+ case CPU_4KEC:
+ case CPU_24K:
+ case CPU_34K:
+
diff --git a/packages/linux/linux-magicbox-2.6.19.2/050-mtdpart_redboot_partition_truncate.patch b/packages/linux/linux-magicbox-2.6.19.2/050-mtdpart_redboot_partition_truncate.patch
new file mode 100644
index 0000000000..2e2cde0f43
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/050-mtdpart_redboot_partition_truncate.patch
@@ -0,0 +1,61 @@
+Redboot supports storing the FIS directory and the RedBoot
+configuration information in the same block of flash memory. This is
+not the most common RedBoot configuration, but it is used on
+commercially available boards supported by the kernel.
+
+A recent patch to mtd/redboot.c (http://lkml.org/lkml/2006/3/20/410)
+which corrected the skipping of deleted table entries has exposed the
+latent problem of the kernel redboot parser running off the end of the
+FIS directory and interpreting the RedBoot configuration information
+as table entries.
+
+This patch terminates the table parsing when the first truly empty
+entry is found (table entry deletion only clears the first byte of the
+name, so two cleared bytes in a row indicates the end of the table),
+thereby supporting the combined redboot FIS directory and RedBoot
+configuration information flash layout scenario.
+
+Signed-off-by: Rod Whitby <rod@whitby.id.au>
+--
+
+Index: linux-2.6.19/drivers/mtd/redboot.c
+===================================================================
+--- linux-2.6.19.orig/drivers/mtd/redboot.c
++++ linux-2.6.19/drivers/mtd/redboot.c
+@@ -96,7 +96,19 @@ static int parse_redboot_partitions(stru
+ */
+ if (swab32(buf[i].size) == master->erasesize) {
+ int j;
+- for (j = 0; j < numslots && buf[j].name[0] != 0xff; ++j) {
++ for (j = 0; j < numslots; ++j) {
++
++ /* A single 0xff denotes a deleted entry.
++ * Two of them in a row is the end of the table.
++ */
++ if (buf[j].name[0] == 0xff) {
++ if (buf[j].name[1] == 0xff) {
++ break;
++ } else {
++ continue;
++ }
++ }
++
+ /* The unsigned long fields were written with the
+ * wrong byte sex, name and pad have no byte sex.
+ */
+@@ -123,8 +135,13 @@ static int parse_redboot_partitions(stru
+ for (i = 0; i < numslots; i++) {
+ struct fis_list *new_fl, **prev;
+
+- if (buf[i].name[0] == 0xff)
+- continue;
++ if (buf[i].name[0] == 0xff) {
++ if (buf[i].name[1] == 0xff) {
++ break;
++ } else {
++ continue;
++ }
++ }
+ if (!redboot_checksum(&buf[i]))
+ break;
+
diff --git a/packages/linux/linux-magicbox-2.6.19.2/060-rootfs_split.patch b/packages/linux/linux-magicbox-2.6.19.2/060-rootfs_split.patch
new file mode 100644
index 0000000000..b4a55256bf
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/060-rootfs_split.patch
@@ -0,0 +1,414 @@
+diff -ur linux.old/drivers/mtd/Kconfig linux.dev/drivers/mtd/Kconfig
+--- linux.old/drivers/mtd/Kconfig 2007-01-10 20:10:37.000000000 +0100
++++ linux.dev/drivers/mtd/Kconfig 2007-02-19 23:00:53.739457000 +0100
+@@ -49,6 +49,11 @@
+ devices. Partitioning on NFTL 'devices' is a different - that's the
+ 'normal' form of partitioning used on a block device.
+
++config MTD_SPLIT_ROOTFS
++ bool "Automatically split rootfs partition for squashfs"
++ depends on MTD_PARTITIONS
++ default y
++
+ config MTD_REDBOOT_PARTS
+ tristate "RedBoot partition table parsing"
+ depends on MTD_PARTITIONS
+diff -ur linux.old/drivers/mtd/mtdpart.c linux.dev/drivers/mtd/mtdpart.c
+--- linux.old/drivers/mtd/mtdpart.c 2007-01-10 20:10:37.000000000 +0100
++++ linux.dev/drivers/mtd/mtdpart.c 2007-02-20 00:01:38.587355896 +0100
+@@ -20,6 +20,8 @@
+ #include <linux/mtd/mtd.h>
+ #include <linux/mtd/partitions.h>
+ #include <linux/mtd/compatmac.h>
++#include <linux/squashfs_fs.h>
++#include <linux/root_dev.h>
+
+ /* Our partition linked list */
+ static LIST_HEAD(mtd_partitions);
+@@ -303,6 +305,173 @@
+ return 0;
+ }
+
++static u_int32_t cur_offset = 0;
++static int add_mtd_partition(struct mtd_info *master, const struct mtd_partition *part, int i)
++{
++ struct mtd_part *slave;
++
++ /* allocate the partition structure */
++ slave = kmalloc (sizeof(*slave), GFP_KERNEL);
++ if (!slave) {
++ printk ("memory allocation error while creating partitions for \"%s\"\n",
++ master->name);
++ del_mtd_partitions(master);
++ return -ENOMEM;
++ }
++ memset(slave, 0, sizeof(*slave));
++ list_add(&slave->list, &mtd_partitions);
++
++ /* set up the MTD object for this partition */
++ slave->mtd.type = master->type;
++ slave->mtd.flags = master->flags & ~part->mask_flags;
++ slave->mtd.size = part->size;
++ slave->mtd.writesize = master->writesize;
++ slave->mtd.oobsize = master->oobsize;
++ slave->mtd.ecctype = master->ecctype;
++ slave->mtd.eccsize = master->eccsize;
++
++ slave->mtd.name = part->name;
++ slave->mtd.bank_size = master->bank_size;
++ slave->mtd.owner = master->owner;
++
++ slave->mtd.read = part_read;
++ slave->mtd.write = part_write;
++
++ if(master->point && master->unpoint){
++ slave->mtd.point = part_point;
++ slave->mtd.unpoint = part_unpoint;
++ }
++
++ if (master->read_oob)
++ slave->mtd.read_oob = part_read_oob;
++ if (master->write_oob)
++ slave->mtd.write_oob = part_write_oob;
++ if(master->read_user_prot_reg)
++ slave->mtd.read_user_prot_reg = part_read_user_prot_reg;
++ if(master->read_fact_prot_reg)
++ slave->mtd.read_fact_prot_reg = part_read_fact_prot_reg;
++ if(master->write_user_prot_reg)
++ slave->mtd.write_user_prot_reg = part_write_user_prot_reg;
++ if(master->lock_user_prot_reg)
++ slave->mtd.lock_user_prot_reg = part_lock_user_prot_reg;
++ if(master->get_user_prot_info)
++ slave->mtd.get_user_prot_info = part_get_user_prot_info;
++ if(master->get_fact_prot_info)
++ slave->mtd.get_fact_prot_info = part_get_fact_prot_info;
++ if (master->sync)
++ slave->mtd.sync = part_sync;
++ if (!i && master->suspend && master->resume) {
++ slave->mtd.suspend = part_suspend;
++ slave->mtd.resume = part_resume;
++ }
++ if (master->writev)
++ slave->mtd.writev = part_writev;
++ if (master->lock)
++ slave->mtd.lock = part_lock;
++ if (master->unlock)
++ slave->mtd.unlock = part_unlock;
++ if (master->block_isbad)
++ slave->mtd.block_isbad = part_block_isbad;
++ if (master->block_markbad)
++ slave->mtd.block_markbad = part_block_markbad;
++ slave->mtd.erase = part_erase;
++ slave->master = master;
++ slave->offset = part->offset;
++ slave->index = i;
++
++ if (slave->offset == MTDPART_OFS_APPEND)
++ slave->offset = cur_offset;
++ if (slave->offset == MTDPART_OFS_NXTBLK) {
++ slave->offset = cur_offset;
++ if ((cur_offset % master->erasesize) != 0) {
++ /* Round up to next erasesize */
++ slave->offset = ((cur_offset / master->erasesize) + 1) * master->erasesize;
++ printk(KERN_NOTICE "Moving partition %d: "
++ "0x%08x -> 0x%08x\n", i,
++ cur_offset, slave->offset);
++ }
++ }
++ if (slave->mtd.size == MTDPART_SIZ_FULL)
++ slave->mtd.size = master->size - slave->offset;
++ cur_offset = slave->offset + slave->mtd.size;
++
++ printk (KERN_NOTICE "0x%08x-0x%08x : \"%s\"\n", slave->offset,
++ slave->offset + slave->mtd.size, slave->mtd.name);
++
++ /* let's do some sanity checks */
++ if (slave->offset >= master->size) {
++ /* let's register it anyway to preserve ordering */
++ slave->offset = 0;
++ slave->mtd.size = 0;
++ printk ("mtd: partition \"%s\" is out of reach -- disabled\n",
++ part->name);
++ }
++ if (slave->offset + slave->mtd.size > master->size) {
++ slave->mtd.size = master->size - slave->offset;
++ printk ("mtd: partition \"%s\" extends beyond the end of device \"%s\" -- size truncated to %#x\n",
++ part->name, master->name, slave->mtd.size);
++ }
++ if (master->numeraseregions>1) {
++ /* Deal with variable erase size stuff */
++ int i;
++ struct mtd_erase_region_info *regions = master->eraseregions;
++
++ /* Find the first erase regions which is part of this partition. */
++ for (i=0; i < master->numeraseregions && slave->offset >= regions[i].offset; i++)
++ ;
++
++ for (i--; i < master->numeraseregions && slave->offset + slave->mtd.size > regions[i].offset; i++) {
++ if (slave->mtd.erasesize < regions[i].erasesize) {
++ slave->mtd.erasesize = regions[i].erasesize;
++ }
++ }
++ } else {
++ /* Single erase size */
++ slave->mtd.erasesize = master->erasesize;
++ }
++
++ if ((slave->mtd.flags & MTD_WRITEABLE) &&
++ (slave->offset % slave->mtd.erasesize)) {
++ /* Doesn't start on a boundary of major erase size */
++ /* FIXME: Let it be writable if it is on a boundary of _minor_ erase size though */
++ slave->mtd.flags &= ~MTD_WRITEABLE;
++ printk ("mtd: partition \"%s\" doesn't start on an erase block boundary -- force read-only\n",
++ part->name);
++ }
++ if ((slave->mtd.flags & MTD_WRITEABLE) &&
++ (slave->mtd.size % slave->mtd.erasesize)) {
++ slave->mtd.flags &= ~MTD_WRITEABLE;
++ printk ("mtd: partition \"%s\" doesn't end on an erase block -- force read-only\n",
++ part->name);
++ }
++
++ slave->mtd.ecclayout = master->ecclayout;
++ if (master->block_isbad) {
++ uint32_t offs = 0;
++
++ while(offs < slave->mtd.size) {
++ if (master->block_isbad(master,
++ offs + slave->offset))
++ slave->mtd.ecc_stats.badblocks++;
++ offs += slave->mtd.erasesize;
++ }
++ }
++
++ if(part->mtdp)
++ { /* store the object pointer (caller may or may not register it */
++ *part->mtdp = &slave->mtd;
++ slave->registered = 0;
++ }
++ else
++ {
++ /* register our partition */
++ add_mtd_device(&slave->mtd);
++ slave->registered = 1;
++ }
++
++ return 0;
++}
++
+ /*
+ * This function, given a master MTD object and a partition table, creates
+ * and registers slave MTD objects which are bound to the master according to
+@@ -314,171 +483,53 @@
+ const struct mtd_partition *parts,
+ int nbparts)
+ {
+- struct mtd_part *slave;
+- u_int32_t cur_offset = 0;
+- int i;
++ struct mtd_partition *part;
++ int i, ret = 0;
+
+ printk (KERN_NOTICE "Creating %d MTD partitions on \"%s\":\n", nbparts, master->name);
+
+ for (i = 0; i < nbparts; i++) {
++ part = (struct mtd_partition *) &parts[i];
++ ret = add_mtd_partition(master, part, i);
++ if (ret)
++ return ret;
++ if (strcmp(part->name, "rootfs") == 0) {
++#ifdef CONFIG_MTD_SPLIT_ROOTFS
++ int len;
++ char buf[512];
++ struct squashfs_super_block *sb = (struct squashfs_super_block *) buf;
++#define ROOTFS_SPLIT_NAME "rootfs_data"
++ if ((master->read(master, part->offset, sizeof(struct squashfs_super_block), &len, buf) == 0) &&
++ (len == sizeof(struct squashfs_super_block)) &&
++ (*((u32 *) buf) == SQUASHFS_MAGIC) &&
++ (sb->bytes_used > 0)) {
++
++
++ part = kmalloc(sizeof(struct mtd_partition), GFP_KERNEL);
++ memcpy(part, &parts[i], sizeof(struct mtd_partition));
++
++ part->name = kmalloc(sizeof(ROOTFS_SPLIT_NAME) + 1, GFP_KERNEL);
++ strcpy(part->name, ROOTFS_SPLIT_NAME);
++
++ len = (u32) sb->bytes_used;
++ len += (part->offset & 0x000fffff);
++ len += (master->erasesize - 1);
++ len &= ~(master->erasesize - 1);
++ len -= (part->offset & 0x000fffff);
++ part->offset += len;
++ part->size -= len;
++
++ if (master->erasesize <= part->size)
++ ret = add_mtd_partition(master, part, i + 1);
++ else
++ kfree(part->name);
++ if (ret)
++ return ret;
+
+- /* allocate the partition structure */
+- slave = kmalloc (sizeof(*slave), GFP_KERNEL);
+- if (!slave) {
+- printk ("memory allocation error while creating partitions for \"%s\"\n",
+- master->name);
+- del_mtd_partitions(master);
+- return -ENOMEM;
+- }
+- memset(slave, 0, sizeof(*slave));
+- list_add(&slave->list, &mtd_partitions);
+-
+- /* set up the MTD object for this partition */
+- slave->mtd.type = master->type;
+- slave->mtd.flags = master->flags & ~parts[i].mask_flags;
+- slave->mtd.size = parts[i].size;
+- slave->mtd.writesize = master->writesize;
+- slave->mtd.oobsize = master->oobsize;
+- slave->mtd.ecctype = master->ecctype;
+- slave->mtd.eccsize = master->eccsize;
+-
+- slave->mtd.name = parts[i].name;
+- slave->mtd.bank_size = master->bank_size;
+- slave->mtd.owner = master->owner;
+-
+- slave->mtd.read = part_read;
+- slave->mtd.write = part_write;
+-
+- if(master->point && master->unpoint){
+- slave->mtd.point = part_point;
+- slave->mtd.unpoint = part_unpoint;
+- }
+-
+- if (master->read_oob)
+- slave->mtd.read_oob = part_read_oob;
+- if (master->write_oob)
+- slave->mtd.write_oob = part_write_oob;
+- if(master->read_user_prot_reg)
+- slave->mtd.read_user_prot_reg = part_read_user_prot_reg;
+- if(master->read_fact_prot_reg)
+- slave->mtd.read_fact_prot_reg = part_read_fact_prot_reg;
+- if(master->write_user_prot_reg)
+- slave->mtd.write_user_prot_reg = part_write_user_prot_reg;
+- if(master->lock_user_prot_reg)
+- slave->mtd.lock_user_prot_reg = part_lock_user_prot_reg;
+- if(master->get_user_prot_info)
+- slave->mtd.get_user_prot_info = part_get_user_prot_info;
+- if(master->get_fact_prot_info)
+- slave->mtd.get_fact_prot_info = part_get_fact_prot_info;
+- if (master->sync)
+- slave->mtd.sync = part_sync;
+- if (!i && master->suspend && master->resume) {
+- slave->mtd.suspend = part_suspend;
+- slave->mtd.resume = part_resume;
+- }
+- if (master->writev)
+- slave->mtd.writev = part_writev;
+- if (master->lock)
+- slave->mtd.lock = part_lock;
+- if (master->unlock)
+- slave->mtd.unlock = part_unlock;
+- if (master->block_isbad)
+- slave->mtd.block_isbad = part_block_isbad;
+- if (master->block_markbad)
+- slave->mtd.block_markbad = part_block_markbad;
+- slave->mtd.erase = part_erase;
+- slave->master = master;
+- slave->offset = parts[i].offset;
+- slave->index = i;
+-
+- if (slave->offset == MTDPART_OFS_APPEND)
+- slave->offset = cur_offset;
+- if (slave->offset == MTDPART_OFS_NXTBLK) {
+- slave->offset = cur_offset;
+- if ((cur_offset % master->erasesize) != 0) {
+- /* Round up to next erasesize */
+- slave->offset = ((cur_offset / master->erasesize) + 1) * master->erasesize;
+- printk(KERN_NOTICE "Moving partition %d: "
+- "0x%08x -> 0x%08x\n", i,
+- cur_offset, slave->offset);
++ kfree(part);
+ }
+- }
+- if (slave->mtd.size == MTDPART_SIZ_FULL)
+- slave->mtd.size = master->size - slave->offset;
+- cur_offset = slave->offset + slave->mtd.size;
+-
+- printk (KERN_NOTICE "0x%08x-0x%08x : \"%s\"\n", slave->offset,
+- slave->offset + slave->mtd.size, slave->mtd.name);
+-
+- /* let's do some sanity checks */
+- if (slave->offset >= master->size) {
+- /* let's register it anyway to preserve ordering */
+- slave->offset = 0;
+- slave->mtd.size = 0;
+- printk ("mtd: partition \"%s\" is out of reach -- disabled\n",
+- parts[i].name);
+- }
+- if (slave->offset + slave->mtd.size > master->size) {
+- slave->mtd.size = master->size - slave->offset;
+- printk ("mtd: partition \"%s\" extends beyond the end of device \"%s\" -- size truncated to %#x\n",
+- parts[i].name, master->name, slave->mtd.size);
+- }
+- if (master->numeraseregions>1) {
+- /* Deal with variable erase size stuff */
+- int i;
+- struct mtd_erase_region_info *regions = master->eraseregions;
+-
+- /* Find the first erase regions which is part of this partition. */
+- for (i=0; i < master->numeraseregions && slave->offset >= regions[i].offset; i++)
+- ;
+-
+- for (i--; i < master->numeraseregions && slave->offset + slave->mtd.size > regions[i].offset; i++) {
+- if (slave->mtd.erasesize < regions[i].erasesize) {
+- slave->mtd.erasesize = regions[i].erasesize;
+- }
+- }
+- } else {
+- /* Single erase size */
+- slave->mtd.erasesize = master->erasesize;
+- }
+-
+- if ((slave->mtd.flags & MTD_WRITEABLE) &&
+- (slave->offset % slave->mtd.erasesize)) {
+- /* Doesn't start on a boundary of major erase size */
+- /* FIXME: Let it be writable if it is on a boundary of _minor_ erase size though */
+- slave->mtd.flags &= ~MTD_WRITEABLE;
+- printk ("mtd: partition \"%s\" doesn't start on an erase block boundary -- force read-only\n",
+- parts[i].name);
+- }
+- if ((slave->mtd.flags & MTD_WRITEABLE) &&
+- (slave->mtd.size % slave->mtd.erasesize)) {
+- slave->mtd.flags &= ~MTD_WRITEABLE;
+- printk ("mtd: partition \"%s\" doesn't end on an erase block -- force read-only\n",
+- parts[i].name);
+- }
+-
+- slave->mtd.ecclayout = master->ecclayout;
+- if (master->block_isbad) {
+- uint32_t offs = 0;
+-
+- while(offs < slave->mtd.size) {
+- if (master->block_isbad(master,
+- offs + slave->offset))
+- slave->mtd.ecc_stats.badblocks++;
+- offs += slave->mtd.erasesize;
+- }
+- }
+-
+- if(parts[i].mtdp)
+- { /* store the object pointer (caller may or may not register it */
+- *parts[i].mtdp = &slave->mtd;
+- slave->registered = 0;
+- }
+- else
+- {
+- /* register our partition */
+- add_mtd_device(&slave->mtd);
+- slave->registered = 1;
++#endif /* CONFIG_MTD_SPLIT_ROOTFS */
++ ROOT_DEV = MKDEV(MTD_BLOCK_MAJOR, i);
+ }
+ }
+
diff --git a/packages/linux/linux-magicbox-2.6.19.2/065-block2mtd_init.patch b/packages/linux/linux-magicbox-2.6.19.2/065-block2mtd_init.patch
new file mode 100644
index 0000000000..ef483bedd1
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/065-block2mtd_init.patch
@@ -0,0 +1,112 @@
+--- linux.old/drivers/mtd/devices/block2mtd.c 2007-03-02 01:00:13.866987272 +0100
++++ linux.dev/drivers/mtd/devices/block2mtd.c 2007-03-02 02:03:45.558522080 +0100
+@@ -16,6 +16,7 @@
+ #include <linux/list.h>
+ #include <linux/init.h>
+ #include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
+ #include <linux/buffer_head.h>
+ #include <linux/mutex.h>
+ #include <linux/mount.h>
+@@ -287,10 +288,11 @@
+
+
+ /* FIXME: ensure that mtd->size % erase_size == 0 */
+-static struct block2mtd_dev *add_device(char *devname, int erase_size)
++static struct block2mtd_dev *add_device(char *devname, int erase_size, char *mtdname)
+ {
+ struct block_device *bdev;
+ struct block2mtd_dev *dev;
++ struct mtd_partition *part;
+
+ if (!devname)
+ return NULL;
+@@ -330,14 +332,18 @@
+
+ /* Setup the MTD structure */
+ /* make the name contain the block device in */
+- dev->mtd.name = kmalloc(sizeof("block2mtd: ") + strlen(devname),
+- GFP_KERNEL);
++
++ if (!mtdname)
++ mtdname = devname;
++
++ dev->mtd.name = kmalloc(strlen(mtdname), GFP_KERNEL);
++
+ if (!dev->mtd.name)
+ goto devinit_err;
++
++ strcpy(dev->mtd.name, mtdname);
+
+- sprintf(dev->mtd.name, "block2mtd: %s", devname);
+-
+- dev->mtd.size = dev->blkdev->bd_inode->i_size & PAGE_MASK;
++ dev->mtd.size = dev->blkdev->bd_inode->i_size & PAGE_MASK & ~(erase_size - 1);
+ dev->mtd.erasesize = erase_size;
+ dev->mtd.writesize = 1;
+ dev->mtd.type = MTD_RAM;
+@@ -349,15 +355,18 @@
+ dev->mtd.read = block2mtd_read;
+ dev->mtd.priv = dev;
+ dev->mtd.owner = THIS_MODULE;
+-
+- if (add_mtd_device(&dev->mtd)) {
++
++ part = kzalloc(sizeof(struct mtd_partition), GFP_KERNEL);
++ part->name = dev->mtd.name;
++ part->offset = 0;
++ part->size = dev->mtd.size;
++ if (add_mtd_partitions(&dev->mtd, part, 1)) {
+ /* Device didnt get added, so free the entry */
+ goto devinit_err;
+ }
+ list_add(&dev->list, &blkmtd_device_list);
+ INFO("mtd%d: [%s] erase_size = %dKiB [%d]", dev->mtd.index,
+- dev->mtd.name + strlen("blkmtd: "),
+- dev->mtd.erasesize >> 10, dev->mtd.erasesize);
++ mtdname, dev->mtd.erasesize >> 10, dev->mtd.erasesize);
+ return dev;
+
+ devinit_err:
+@@ -430,9 +439,9 @@
+
+ static int block2mtd_setup2(const char *val)
+ {
+- char buf[80 + 12]; /* 80 for device, 12 for erase size */
++ char buf[80 + 12 + 80]; /* 80 for device, 12 for erase size, 80 for name */
+ char *str = buf;
+- char *token[2];
++ char *token[3];
+ char *name;
+ size_t erase_size = PAGE_SIZE;
+ int i, ret;
+@@ -443,7 +452,7 @@
+ strcpy(str, val);
+ kill_final_newline(str);
+
+- for (i = 0; i < 2; i++)
++ for (i = 0; i < 3; i++)
+ token[i] = strsep(&str, ",");
+
+ if (str)
+@@ -463,8 +472,10 @@
+ parse_err("illegal erase size");
+ }
+ }
++ if (token[2] && (strlen(token[2]) + 1 > 80))
++ parse_err("mtd device name too long");
+
+- add_device(name, erase_size);
++ add_device(name, erase_size, token[2]);
+
+ return 0;
+ }
+@@ -498,7 +509,7 @@
+
+
+ module_param_call(block2mtd, block2mtd_setup, NULL, NULL, 0200);
+-MODULE_PARM_DESC(block2mtd, "Device to use. \"block2mtd=<dev>[,<erasesize>]\"");
++MODULE_PARM_DESC(block2mtd, "Device to use. \"block2mtd=<dev>[,<erasesize>[,<name>]]\"");
+
+ static int __init block2mtd_init(void)
+ {
diff --git a/packages/linux/linux-magicbox-2.6.19.2/100-cf_slot.patch b/packages/linux/linux-magicbox-2.6.19.2/100-cf_slot.patch
new file mode 100644
index 0000000000..b5e12438f2
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/100-cf_slot.patch
@@ -0,0 +1,2306 @@
+diff -purN linux.old/drivers/ide/ide.c linux.dev/drivers/ide/ide.c
+--- linux.old/drivers/ide/ide.c 2007-01-10 20:10:37.000000000 +0100
++++ linux.dev/drivers/ide/ide.c 2007-04-09 01:25:30.866800288 +0200
+@@ -1783,6 +1783,7 @@ done:
+
+ extern void pnpide_init(void);
+ extern void h8300_ide_init(void);
++extern void ide_magicbox_init(void);
+
+ /*
+ * probe_for_hwifs() finds/initializes "known" IDE interfaces
+@@ -1847,6 +1848,9 @@ static void __init probe_for_hwifs (void
+ #ifdef CONFIG_H8300
+ h8300_ide_init();
+ #endif
++#ifdef CONFIG_BLK_DEV_MAGICBOX_IDE
++ ide_magicbox_init();
++#endif
+ }
+
+ void ide_register_subdriver(ide_drive_t *drive, ide_driver_t *driver)
+diff -purN linux.old/drivers/ide/ide.c.orig linux.dev/drivers/ide/ide.c.orig
+--- linux.old/drivers/ide/ide.c.orig 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/drivers/ide/ide.c.orig 2007-01-10 20:10:37.000000000 +0100
+@@ -0,0 +1,2099 @@
++/*
++ * linux/drivers/ide/ide.c Version 7.00beta2 Mar 05 2003
++ *
++ * Copyright (C) 1994-1998 Linus Torvalds & authors (see below)
++ */
++
++/*
++ * Mostly written by Mark Lord <mlord@pobox.com>
++ * and Gadi Oxman <gadio@netvision.net.il>
++ * and Andre Hedrick <andre@linux-ide.org>
++ *
++ * See linux/MAINTAINERS for address of current maintainer.
++ *
++ * This is the multiple IDE interface driver, as evolved from hd.c.
++ * It supports up to MAX_HWIFS IDE interfaces, on one or more IRQs
++ * (usually 14 & 15).
++ * There can be up to two drives per interface, as per the ATA-2 spec.
++ *
++ * Primary: ide0, port 0x1f0; major=3; hda is minor=0; hdb is minor=64
++ * Secondary: ide1, port 0x170; major=22; hdc is minor=0; hdd is minor=64
++ * Tertiary: ide2, port 0x???; major=33; hde is minor=0; hdf is minor=64
++ * Quaternary: ide3, port 0x???; major=34; hdg is minor=0; hdh is minor=64
++ * ...
++ *
++ * From hd.c:
++ * |
++ * | It traverses the request-list, using interrupts to jump between functions.
++ * | As nearly all functions can be called within interrupts, we may not sleep.
++ * | Special care is recommended. Have Fun!
++ * |
++ * | modified by Drew Eckhardt to check nr of hd's from the CMOS.
++ * |
++ * | Thanks to Branko Lankester, lankeste@fwi.uva.nl, who found a bug
++ * | in the early extended-partition checks and added DM partitions.
++ * |
++ * | Early work on error handling by Mika Liljeberg (liljeber@cs.Helsinki.FI).
++ * |
++ * | IRQ-unmask, drive-id, multiple-mode, support for ">16 heads",
++ * | and general streamlining by Mark Lord (mlord@pobox.com).
++ *
++ * October, 1994 -- Complete line-by-line overhaul for linux 1.1.x, by:
++ *
++ * Mark Lord (mlord@pobox.com) (IDE Perf.Pkg)
++ * Delman Lee (delman@ieee.org) ("Mr. atdisk2")
++ * Scott Snyder (snyder@fnald0.fnal.gov) (ATAPI IDE cd-rom)
++ *
++ * This was a rewrite of just about everything from hd.c, though some original
++ * code is still sprinkled about. Think of it as a major evolution, with
++ * inspiration from lots of linux users, esp. hamish@zot.apana.org.au
++ *
++ * Version 1.0 ALPHA initial code, primary i/f working okay
++ * Version 1.3 BETA dual i/f on shared irq tested & working!
++ * Version 1.4 BETA added auto probing for irq(s)
++ * Version 1.5 BETA added ALPHA (untested) support for IDE cd-roms,
++ * ...
++ * Version 5.50 allow values as small as 20 for idebus=
++ * Version 5.51 force non io_32bit in drive_cmd_intr()
++ * change delay_10ms() to delay_50ms() to fix problems
++ * Version 5.52 fix incorrect invalidation of removable devices
++ * add "hdx=slow" command line option
++ * Version 5.60 start to modularize the driver; the disk and ATAPI
++ * drivers can be compiled as loadable modules.
++ * move IDE probe code to ide-probe.c
++ * move IDE disk code to ide-disk.c
++ * add support for generic IDE device subdrivers
++ * add m68k code from Geert Uytterhoeven
++ * probe all interfaces by default
++ * add ioctl to (re)probe an interface
++ * Version 6.00 use per device request queues
++ * attempt to optimize shared hwgroup performance
++ * add ioctl to manually adjust bandwidth algorithms
++ * add kerneld support for the probe module
++ * fix bug in ide_error()
++ * fix bug in the first ide_get_lock() call for Atari
++ * don't flush leftover data for ATAPI devices
++ * Version 6.01 clear hwgroup->active while the hwgroup sleeps
++ * support HDIO_GETGEO for floppies
++ * Version 6.02 fix ide_ack_intr() call
++ * check partition table on floppies
++ * Version 6.03 handle bad status bit sequencing in ide_wait_stat()
++ * Version 6.10 deleted old entries from this list of updates
++ * replaced triton.c with ide-dma.c generic PCI DMA
++ * added support for BIOS-enabled UltraDMA
++ * rename all "promise" things to "pdc4030"
++ * fix EZ-DRIVE handling on small disks
++ * Version 6.11 fix probe error in ide_scan_devices()
++ * fix ancient "jiffies" polling bugs
++ * mask all hwgroup interrupts on each irq entry
++ * Version 6.12 integrate ioctl and proc interfaces
++ * fix parsing of "idex=" command line parameter
++ * Version 6.13 add support for ide4/ide5 courtesy rjones@orchestream.com
++ * Version 6.14 fixed IRQ sharing among PCI devices
++ * Version 6.15 added SMP awareness to IDE drivers
++ * Version 6.16 fixed various bugs; even more SMP friendly
++ * Version 6.17 fix for newest EZ-Drive problem
++ * Version 6.18 default unpartitioned-disk translation now "BIOS LBA"
++ * Version 6.19 Re-design for a UNIFORM driver for all platforms,
++ * model based on suggestions from Russell King and
++ * Geert Uytterhoeven
++ * Promise DC4030VL now supported.
++ * add support for ide6/ide7
++ * delay_50ms() changed to ide_delay_50ms() and exported.
++ * Version 6.20 Added/Fixed Generic ATA-66 support and hwif detection.
++ * Added hdx=flash to allow for second flash disk
++ * detection w/o the hang loop.
++ * Added support for ide8/ide9
++ * Added idex=ata66 for the quirky chipsets that are
++ * ATA-66 compliant, but have yet to determine a method
++ * of verification of the 80c cable presence.
++ * Specifically Promise's PDC20262 chipset.
++ * Version 6.21 Fixing/Fixed SMP spinlock issue with insight from an old
++ * hat that clarified original low level driver design.
++ * Version 6.30 Added SMP support; fixed multmode issues. -ml
++ * Version 6.31 Debug Share INTR's and request queue streaming
++ * Native ATA-100 support
++ * Prep for Cascades Project
++ * Version 7.00alpha First named revision of ide rearrange
++ *
++ * Some additional driver compile-time options are in ./include/linux/ide.h
++ *
++ * To do, in likely order of completion:
++ * - modify kernel to obtain BIOS geometry for drives on 2nd/3rd/4th i/f
++ *
++ */
++
++#define REVISION "Revision: 7.00alpha2"
++#define VERSION "Id: ide.c 7.00a2 20020906"
++
++#undef REALLY_SLOW_IO /* most systems can safely undef this */
++
++#define _IDE_C /* Tell ide.h it's really us */
++
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/string.h>
++#include <linux/kernel.h>
++#include <linux/timer.h>
++#include <linux/mm.h>
++#include <linux/interrupt.h>
++#include <linux/major.h>
++#include <linux/errno.h>
++#include <linux/genhd.h>
++#include <linux/blkpg.h>
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/pci.h>
++#include <linux/delay.h>
++#include <linux/ide.h>
++#include <linux/completion.h>
++#include <linux/reboot.h>
++#include <linux/cdrom.h>
++#include <linux/seq_file.h>
++#include <linux/device.h>
++#include <linux/bitops.h>
++
++#include <asm/byteorder.h>
++#include <asm/irq.h>
++#include <asm/uaccess.h>
++#include <asm/io.h>
++
++
++/* default maximum number of failures */
++#define IDE_DEFAULT_MAX_FAILURES 1
++
++static const u8 ide_hwif_to_major[] = { IDE0_MAJOR, IDE1_MAJOR,
++ IDE2_MAJOR, IDE3_MAJOR,
++ IDE4_MAJOR, IDE5_MAJOR,
++ IDE6_MAJOR, IDE7_MAJOR,
++ IDE8_MAJOR, IDE9_MAJOR };
++
++static int idebus_parameter; /* holds the "idebus=" parameter */
++static int system_bus_speed; /* holds what we think is VESA/PCI bus speed */
++static int initializing; /* set while initializing built-in drivers */
++
++DECLARE_MUTEX(ide_cfg_sem);
++ __cacheline_aligned_in_smp DEFINE_SPINLOCK(ide_lock);
++
++#ifdef CONFIG_BLK_DEV_IDEPCI
++static int ide_scan_direction; /* THIS was formerly 2.2.x pci=reverse */
++#endif
++
++#ifdef CONFIG_IDEDMA_AUTO
++int noautodma = 0;
++#else
++int noautodma = 1;
++#endif
++
++EXPORT_SYMBOL(noautodma);
++
++/*
++ * This is declared extern in ide.h, for access by other IDE modules:
++ */
++ide_hwif_t ide_hwifs[MAX_HWIFS]; /* master data repository */
++
++EXPORT_SYMBOL(ide_hwifs);
++
++/*
++ * Do not even *think* about calling this!
++ */
++static void init_hwif_data(ide_hwif_t *hwif, unsigned int index)
++{
++ unsigned int unit;
++
++ /* bulk initialize hwif & drive info with zeros */
++ memset(hwif, 0, sizeof(ide_hwif_t));
++
++ /* fill in any non-zero initial values */
++ hwif->index = index;
++ hwif->major = ide_hwif_to_major[index];
++
++ hwif->name[0] = 'i';
++ hwif->name[1] = 'd';
++ hwif->name[2] = 'e';
++ hwif->name[3] = '0' + index;
++
++ hwif->bus_state = BUSSTATE_ON;
++
++ hwif->atapi_dma = 0; /* disable all atapi dma */
++ hwif->ultra_mask = 0x80; /* disable all ultra */
++ hwif->mwdma_mask = 0x80; /* disable all mwdma */
++ hwif->swdma_mask = 0x80; /* disable all swdma */
++
++ init_completion(&hwif->gendev_rel_comp);
++
++ default_hwif_iops(hwif);
++ default_hwif_transport(hwif);
++ for (unit = 0; unit < MAX_DRIVES; ++unit) {
++ ide_drive_t *drive = &hwif->drives[unit];
++
++ drive->media = ide_disk;
++ drive->select.all = (unit<<4)|0xa0;
++ drive->hwif = hwif;
++ drive->ctl = 0x08;
++ drive->ready_stat = READY_STAT;
++ drive->bad_wstat = BAD_W_STAT;
++ drive->special.b.recalibrate = 1;
++ drive->special.b.set_geometry = 1;
++ drive->name[0] = 'h';
++ drive->name[1] = 'd';
++ drive->name[2] = 'a' + (index * MAX_DRIVES) + unit;
++ drive->max_failures = IDE_DEFAULT_MAX_FAILURES;
++ drive->using_dma = 0;
++ drive->vdma = 0;
++ INIT_LIST_HEAD(&drive->list);
++ init_completion(&drive->gendev_rel_comp);
++ }
++}
++
++static void init_hwif_default(ide_hwif_t *hwif, unsigned int index)
++{
++ hw_regs_t hw;
++
++ memset(&hw, 0, sizeof(hw_regs_t));
++
++ ide_init_hwif_ports(&hw, ide_default_io_base(index), 0, &hwif->irq);
++
++ memcpy(&hwif->hw, &hw, sizeof(hw));
++ memcpy(hwif->io_ports, hw.io_ports, sizeof(hw.io_ports));
++
++ hwif->noprobe = !hwif->io_ports[IDE_DATA_OFFSET];
++#ifdef CONFIG_BLK_DEV_HD
++ if (hwif->io_ports[IDE_DATA_OFFSET] == HD_DATA)
++ hwif->noprobe = 1; /* may be overridden by ide_setup() */
++#endif
++}
++
++extern void ide_arm_init(void);
++
++/*
++ * init_ide_data() sets reasonable default values into all fields
++ * of all instances of the hwifs and drives, but only on the first call.
++ * Subsequent calls have no effect (they don't wipe out anything).
++ *
++ * This routine is normally called at driver initialization time,
++ * but may also be called MUCH earlier during kernel "command-line"
++ * parameter processing. As such, we cannot depend on any other parts
++ * of the kernel (such as memory allocation) to be functioning yet.
++ *
++ * This is too bad, as otherwise we could dynamically allocate the
++ * ide_drive_t structs as needed, rather than always consuming memory
++ * for the max possible number (MAX_HWIFS * MAX_DRIVES) of them.
++ *
++ * FIXME: We should stuff the setup data into __init and copy the
++ * relevant hwifs/allocate them properly during boot.
++ */
++#define MAGIC_COOKIE 0x12345678
++static void __init init_ide_data (void)
++{
++ ide_hwif_t *hwif;
++ unsigned int index;
++ static unsigned long magic_cookie = MAGIC_COOKIE;
++
++ if (magic_cookie != MAGIC_COOKIE)
++ return; /* already initialized */
++ magic_cookie = 0;
++
++ /* Initialise all interface structures */
++ for (index = 0; index < MAX_HWIFS; ++index) {
++ hwif = &ide_hwifs[index];
++ init_hwif_data(hwif, index);
++ init_hwif_default(hwif, index);
++#if !defined(CONFIG_PPC32) || !defined(CONFIG_PCI)
++ hwif->irq = hwif->hw.irq =
++ ide_init_default_irq(hwif->io_ports[IDE_DATA_OFFSET]);
++#endif
++ }
++#ifdef CONFIG_IDE_ARM
++ initializing = 1;
++ ide_arm_init();
++ initializing = 0;
++#endif
++}
++
++/**
++ * ide_system_bus_speed - guess bus speed
++ *
++ * ide_system_bus_speed() returns what we think is the system VESA/PCI
++ * bus speed (in MHz). This is used for calculating interface PIO timings.
++ * The default is 40 for known PCI systems, 50 otherwise.
++ * The "idebus=xx" parameter can be used to override this value.
++ * The actual value to be used is computed/displayed the first time
++ * through. Drivers should only use this as a last resort.
++ *
++ * Returns a guessed speed in MHz.
++ */
++
++static int ide_system_bus_speed(void)
++{
++#ifdef CONFIG_PCI
++ static struct pci_device_id pci_default[] = {
++ { PCI_DEVICE(PCI_ANY_ID, PCI_ANY_ID) },
++ { }
++ };
++#else
++#define pci_default 0
++#endif /* CONFIG_PCI */
++
++ if (!system_bus_speed) {
++ if (idebus_parameter) {
++ /* user supplied value */
++ system_bus_speed = idebus_parameter;
++ } else if (pci_dev_present(pci_default)) {
++ /* safe default value for PCI */
++ system_bus_speed = 33;
++ } else {
++ /* safe default value for VESA and PCI */
++ system_bus_speed = 50;
++ }
++ printk(KERN_INFO "ide: Assuming %dMHz system bus speed "
++ "for PIO modes%s\n", system_bus_speed,
++ idebus_parameter ? "" : "; override with idebus=xx");
++ }
++ return system_bus_speed;
++}
++
++#ifdef CONFIG_PROC_FS
++struct proc_dir_entry *proc_ide_root;
++#endif
++
++static struct resource* hwif_request_region(ide_hwif_t *hwif,
++ unsigned long addr, int num)
++{
++ struct resource *res = request_region(addr, num, hwif->name);
++
++ if (!res)
++ printk(KERN_ERR "%s: I/O resource 0x%lX-0x%lX not free.\n",
++ hwif->name, addr, addr+num-1);
++ return res;
++}
++
++/**
++ * ide_hwif_request_regions - request resources for IDE
++ * @hwif: interface to use
++ *
++ * Requests all the needed resources for an interface.
++ * Right now core IDE code does this work which is deeply wrong.
++ * MMIO leaves it to the controller driver,
++ * PIO will migrate this way over time.
++ */
++
++int ide_hwif_request_regions(ide_hwif_t *hwif)
++{
++ unsigned long addr;
++ unsigned int i;
++
++ if (hwif->mmio == 2)
++ return 0;
++ BUG_ON(hwif->mmio == 1);
++ addr = hwif->io_ports[IDE_CONTROL_OFFSET];
++ if (addr && !hwif_request_region(hwif, addr, 1))
++ goto control_region_busy;
++ hwif->straight8 = 0;
++ addr = hwif->io_ports[IDE_DATA_OFFSET];
++ if ((addr | 7) == hwif->io_ports[IDE_STATUS_OFFSET]) {
++ if (!hwif_request_region(hwif, addr, 8))
++ goto data_region_busy;
++ hwif->straight8 = 1;
++ return 0;
++ }
++ for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
++ addr = hwif->io_ports[i];
++ if (!hwif_request_region(hwif, addr, 1)) {
++ while (--i)
++ release_region(addr, 1);
++ goto data_region_busy;
++ }
++ }
++ return 0;
++
++data_region_busy:
++ addr = hwif->io_ports[IDE_CONTROL_OFFSET];
++ if (addr)
++ release_region(addr, 1);
++control_region_busy:
++ /* If any errors are return, we drop the hwif interface. */
++ return -EBUSY;
++}
++
++/**
++ * ide_hwif_release_regions - free IDE resources
++ *
++ * Note that we only release the standard ports,
++ * and do not even try to handle any extra ports
++ * allocated for weird IDE interface chipsets.
++ *
++ * Note also that we don't yet handle mmio resources here. More
++ * importantly our caller should be doing this so we need to
++ * restructure this as a helper function for drivers.
++ */
++
++void ide_hwif_release_regions(ide_hwif_t *hwif)
++{
++ u32 i = 0;
++
++ if (hwif->mmio == 2)
++ return;
++ if (hwif->io_ports[IDE_CONTROL_OFFSET])
++ release_region(hwif->io_ports[IDE_CONTROL_OFFSET], 1);
++ if (hwif->straight8) {
++ release_region(hwif->io_ports[IDE_DATA_OFFSET], 8);
++ return;
++ }
++ for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++)
++ if (hwif->io_ports[i])
++ release_region(hwif->io_ports[i], 1);
++}
++
++/**
++ * ide_hwif_restore - restore hwif to template
++ * @hwif: hwif to update
++ * @tmp_hwif: template
++ *
++ * Restore hwif to a previous state by copying most settings
++ * from the template.
++ */
++
++static void ide_hwif_restore(ide_hwif_t *hwif, ide_hwif_t *tmp_hwif)
++{
++ hwif->hwgroup = tmp_hwif->hwgroup;
++
++ hwif->gendev.parent = tmp_hwif->gendev.parent;
++
++ hwif->proc = tmp_hwif->proc;
++
++ hwif->major = tmp_hwif->major;
++ hwif->straight8 = tmp_hwif->straight8;
++ hwif->bus_state = tmp_hwif->bus_state;
++
++ hwif->atapi_dma = tmp_hwif->atapi_dma;
++ hwif->ultra_mask = tmp_hwif->ultra_mask;
++ hwif->mwdma_mask = tmp_hwif->mwdma_mask;
++ hwif->swdma_mask = tmp_hwif->swdma_mask;
++
++ hwif->chipset = tmp_hwif->chipset;
++ hwif->hold = tmp_hwif->hold;
++
++#ifdef CONFIG_BLK_DEV_IDEPCI
++ hwif->pci_dev = tmp_hwif->pci_dev;
++ hwif->cds = tmp_hwif->cds;
++#endif
++
++ hwif->tuneproc = tmp_hwif->tuneproc;
++ hwif->speedproc = tmp_hwif->speedproc;
++ hwif->selectproc = tmp_hwif->selectproc;
++ hwif->reset_poll = tmp_hwif->reset_poll;
++ hwif->pre_reset = tmp_hwif->pre_reset;
++ hwif->resetproc = tmp_hwif->resetproc;
++ hwif->intrproc = tmp_hwif->intrproc;
++ hwif->maskproc = tmp_hwif->maskproc;
++ hwif->quirkproc = tmp_hwif->quirkproc;
++ hwif->busproc = tmp_hwif->busproc;
++
++ hwif->ata_input_data = tmp_hwif->ata_input_data;
++ hwif->ata_output_data = tmp_hwif->ata_output_data;
++ hwif->atapi_input_bytes = tmp_hwif->atapi_input_bytes;
++ hwif->atapi_output_bytes = tmp_hwif->atapi_output_bytes;
++
++ hwif->dma_setup = tmp_hwif->dma_setup;
++ hwif->dma_exec_cmd = tmp_hwif->dma_exec_cmd;
++ hwif->dma_start = tmp_hwif->dma_start;
++ hwif->ide_dma_end = tmp_hwif->ide_dma_end;
++ hwif->ide_dma_check = tmp_hwif->ide_dma_check;
++ hwif->ide_dma_on = tmp_hwif->ide_dma_on;
++ hwif->ide_dma_off_quietly = tmp_hwif->ide_dma_off_quietly;
++ hwif->ide_dma_test_irq = tmp_hwif->ide_dma_test_irq;
++ hwif->ide_dma_host_on = tmp_hwif->ide_dma_host_on;
++ hwif->ide_dma_host_off = tmp_hwif->ide_dma_host_off;
++ hwif->ide_dma_lostirq = tmp_hwif->ide_dma_lostirq;
++ hwif->ide_dma_timeout = tmp_hwif->ide_dma_timeout;
++
++ hwif->OUTB = tmp_hwif->OUTB;
++ hwif->OUTBSYNC = tmp_hwif->OUTBSYNC;
++ hwif->OUTW = tmp_hwif->OUTW;
++ hwif->OUTL = tmp_hwif->OUTL;
++ hwif->OUTSW = tmp_hwif->OUTSW;
++ hwif->OUTSL = tmp_hwif->OUTSL;
++
++ hwif->INB = tmp_hwif->INB;
++ hwif->INW = tmp_hwif->INW;
++ hwif->INL = tmp_hwif->INL;
++ hwif->INSW = tmp_hwif->INSW;
++ hwif->INSL = tmp_hwif->INSL;
++
++ hwif->sg_max_nents = tmp_hwif->sg_max_nents;
++
++ hwif->mmio = tmp_hwif->mmio;
++ hwif->rqsize = tmp_hwif->rqsize;
++ hwif->no_lba48 = tmp_hwif->no_lba48;
++
++#ifndef CONFIG_BLK_DEV_IDECS
++ hwif->irq = tmp_hwif->irq;
++#endif
++
++ hwif->dma_base = tmp_hwif->dma_base;
++ hwif->dma_master = tmp_hwif->dma_master;
++ hwif->dma_command = tmp_hwif->dma_command;
++ hwif->dma_vendor1 = tmp_hwif->dma_vendor1;
++ hwif->dma_status = tmp_hwif->dma_status;
++ hwif->dma_vendor3 = tmp_hwif->dma_vendor3;
++ hwif->dma_prdtable = tmp_hwif->dma_prdtable;
++
++ hwif->config_data = tmp_hwif->config_data;
++ hwif->select_data = tmp_hwif->select_data;
++ hwif->extra_base = tmp_hwif->extra_base;
++ hwif->extra_ports = tmp_hwif->extra_ports;
++ hwif->autodma = tmp_hwif->autodma;
++ hwif->udma_four = tmp_hwif->udma_four;
++ hwif->no_dsc = tmp_hwif->no_dsc;
++
++ hwif->hwif_data = tmp_hwif->hwif_data;
++}
++
++/**
++ * ide_unregister - free an IDE interface
++ * @index: index of interface (will change soon to a pointer)
++ *
++ * Perform the final unregister of an IDE interface. At the moment
++ * we don't refcount interfaces so this will also get split up.
++ *
++ * Locking:
++ * The caller must not hold the IDE locks
++ * The drive present/vanishing is not yet properly locked
++ * Take care with the callbacks. These have been split to avoid
++ * deadlocking the IDE layer. The shutdown callback is called
++ * before we take the lock and free resources. It is up to the
++ * caller to be sure there is no pending I/O here, and that
++ * the interface will not be reopened (present/vanishing locking
++ * isn't yet done BTW). After we commit to the final kill we
++ * call the cleanup callback with the ide locks held.
++ *
++ * Unregister restores the hwif structures to the default state.
++ * This is raving bonkers.
++ */
++
++void ide_unregister(unsigned int index)
++{
++ ide_drive_t *drive;
++ ide_hwif_t *hwif, *g;
++ static ide_hwif_t tmp_hwif; /* protected by ide_cfg_sem */
++ ide_hwgroup_t *hwgroup;
++ int irq_count = 0, unit;
++
++ BUG_ON(index >= MAX_HWIFS);
++
++ BUG_ON(in_interrupt());
++ BUG_ON(irqs_disabled());
++ down(&ide_cfg_sem);
++ spin_lock_irq(&ide_lock);
++ hwif = &ide_hwifs[index];
++ if (!hwif->present)
++ goto abort;
++ for (unit = 0; unit < MAX_DRIVES; ++unit) {
++ drive = &hwif->drives[unit];
++ if (!drive->present)
++ continue;
++ spin_unlock_irq(&ide_lock);
++ device_unregister(&drive->gendev);
++ wait_for_completion(&drive->gendev_rel_comp);
++ spin_lock_irq(&ide_lock);
++ }
++ hwif->present = 0;
++
++ spin_unlock_irq(&ide_lock);
++
++ destroy_proc_ide_interface(hwif);
++
++ hwgroup = hwif->hwgroup;
++ /*
++ * free the irq if we were the only hwif using it
++ */
++ g = hwgroup->hwif;
++ do {
++ if (g->irq == hwif->irq)
++ ++irq_count;
++ g = g->next;
++ } while (g != hwgroup->hwif);
++ if (irq_count == 1)
++ free_irq(hwif->irq, hwgroup);
++
++ spin_lock_irq(&ide_lock);
++ /*
++ * Note that we only release the standard ports,
++ * and do not even try to handle any extra ports
++ * allocated for weird IDE interface chipsets.
++ */
++ ide_hwif_release_regions(hwif);
++
++ /*
++ * Remove us from the hwgroup, and free
++ * the hwgroup if we were the only member
++ */
++ if (hwif->next == hwif) {
++ BUG_ON(hwgroup->hwif != hwif);
++ kfree(hwgroup);
++ } else {
++ /* There is another interface in hwgroup.
++ * Unlink us, and set hwgroup->drive and ->hwif to
++ * something sane.
++ */
++ g = hwgroup->hwif;
++ while (g->next != hwif)
++ g = g->next;
++ g->next = hwif->next;
++ if (hwgroup->hwif == hwif) {
++ /* Chose a random hwif for hwgroup->hwif.
++ * It's guaranteed that there are no drives
++ * left in the hwgroup.
++ */
++ BUG_ON(hwgroup->drive != NULL);
++ hwgroup->hwif = g;
++ }
++ BUG_ON(hwgroup->hwif == hwif);
++ }
++
++ /* More messed up locking ... */
++ spin_unlock_irq(&ide_lock);
++ device_unregister(&hwif->gendev);
++ wait_for_completion(&hwif->gendev_rel_comp);
++
++ /*
++ * Remove us from the kernel's knowledge
++ */
++ blk_unregister_region(MKDEV(hwif->major, 0), MAX_DRIVES<<PARTN_BITS);
++ kfree(hwif->sg_table);
++ unregister_blkdev(hwif->major, hwif->name);
++ spin_lock_irq(&ide_lock);
++
++ if (hwif->dma_base) {
++ (void) ide_release_dma(hwif);
++
++ hwif->dma_base = 0;
++ hwif->dma_master = 0;
++ hwif->dma_command = 0;
++ hwif->dma_vendor1 = 0;
++ hwif->dma_status = 0;
++ hwif->dma_vendor3 = 0;
++ hwif->dma_prdtable = 0;
++
++ hwif->extra_base = 0;
++ hwif->extra_ports = 0;
++ }
++
++ /* copy original settings */
++ tmp_hwif = *hwif;
++
++ /* restore hwif data to pristine status */
++ init_hwif_data(hwif, index);
++ init_hwif_default(hwif, index);
++
++ ide_hwif_restore(hwif, &tmp_hwif);
++
++abort:
++ spin_unlock_irq(&ide_lock);
++ up(&ide_cfg_sem);
++}
++
++EXPORT_SYMBOL(ide_unregister);
++
++
++/**
++ * ide_setup_ports - set up IDE interface ports
++ * @hw: register descriptions
++ * @base: base register
++ * @offsets: table of register offsets
++ * @ctrl: control register
++ * @ack_irq: IRQ ack
++ * @irq: interrupt lie
++ *
++ * Setup hw_regs_t structure described by parameters. You
++ * may set up the hw structure yourself OR use this routine to
++ * do it for you. This is basically a helper
++ *
++ */
++
++void ide_setup_ports ( hw_regs_t *hw,
++ unsigned long base, int *offsets,
++ unsigned long ctrl, unsigned long intr,
++ ide_ack_intr_t *ack_intr,
++/*
++ * ide_io_ops_t *iops,
++ */
++ int irq)
++{
++ int i;
++
++ memset(hw, 0, sizeof(hw_regs_t));
++ for (i = 0; i < IDE_NR_PORTS; i++) {
++ if (offsets[i] == -1) {
++ switch(i) {
++ case IDE_CONTROL_OFFSET:
++ hw->io_ports[i] = ctrl;
++ break;
++#if defined(CONFIG_AMIGA) || defined(CONFIG_MAC)
++ case IDE_IRQ_OFFSET:
++ hw->io_ports[i] = intr;
++ break;
++#endif /* (CONFIG_AMIGA) || (CONFIG_MAC) */
++ default:
++ hw->io_ports[i] = 0;
++ break;
++ }
++ } else {
++ hw->io_ports[i] = base + offsets[i];
++ }
++ }
++ hw->irq = irq;
++ hw->dma = NO_DMA;
++ hw->ack_intr = ack_intr;
++/*
++ * hw->iops = iops;
++ */
++}
++
++/**
++ * ide_register_hw_with_fixup - register IDE interface
++ * @hw: hardware registers
++ * @hwifp: pointer to returned hwif
++ * @fixup: fixup function
++ *
++ * Register an IDE interface, specifying exactly the registers etc.
++ * Set init=1 iff calling before probes have taken place.
++ *
++ * Returns -1 on error.
++ */
++
++int ide_register_hw_with_fixup(hw_regs_t *hw, ide_hwif_t **hwifp, void(*fixup)(ide_hwif_t *hwif))
++{
++ int index, retry = 1;
++ ide_hwif_t *hwif;
++
++ do {
++ for (index = 0; index < MAX_HWIFS; ++index) {
++ hwif = &ide_hwifs[index];
++ if (hwif->hw.io_ports[IDE_DATA_OFFSET] == hw->io_ports[IDE_DATA_OFFSET])
++ goto found;
++ }
++ for (index = 0; index < MAX_HWIFS; ++index) {
++ hwif = &ide_hwifs[index];
++ if (hwif->hold)
++ continue;
++ if ((!hwif->present && !hwif->mate && !initializing) ||
++ (!hwif->hw.io_ports[IDE_DATA_OFFSET] && initializing))
++ goto found;
++ }
++ for (index = 0; index < MAX_HWIFS; index++)
++ ide_unregister(index);
++ } while (retry--);
++ return -1;
++found:
++ if (hwif->present)
++ ide_unregister(index);
++ else if (!hwif->hold) {
++ init_hwif_data(hwif, index);
++ init_hwif_default(hwif, index);
++ }
++ if (hwif->present)
++ return -1;
++ memcpy(&hwif->hw, hw, sizeof(*hw));
++ memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->hw.io_ports));
++ hwif->irq = hw->irq;
++ hwif->noprobe = 0;
++ hwif->chipset = hw->chipset;
++ hwif->gendev.parent = hw->dev;
++
++ if (!initializing) {
++ probe_hwif_init_with_fixup(hwif, fixup);
++ create_proc_ide_interfaces();
++ }
++
++ if (hwifp)
++ *hwifp = hwif;
++
++ return (initializing || hwif->present) ? index : -1;
++}
++
++EXPORT_SYMBOL(ide_register_hw_with_fixup);
++
++int ide_register_hw(hw_regs_t *hw, ide_hwif_t **hwifp)
++{
++ return ide_register_hw_with_fixup(hw, hwifp, NULL);
++}
++
++EXPORT_SYMBOL(ide_register_hw);
++
++/*
++ * Locks for IDE setting functionality
++ */
++
++DECLARE_MUTEX(ide_setting_sem);
++
++/**
++ * __ide_add_setting - add an ide setting option
++ * @drive: drive to use
++ * @name: setting name
++ * @rw: true if the function is read write
++ * @read_ioctl: function to call on read
++ * @write_ioctl: function to call on write
++ * @data_type: type of data
++ * @min: range minimum
++ * @max: range maximum
++ * @mul_factor: multiplication scale
++ * @div_factor: divison scale
++ * @data: private data field
++ * @set: setting
++ * @auto_remove: setting auto removal flag
++ *
++ * Removes the setting named from the device if it is present.
++ * The function takes the settings_lock to protect against
++ * parallel changes. This function must not be called from IRQ
++ * context. Returns 0 on success or -1 on failure.
++ *
++ * BUGS: This code is seriously over-engineered. There is also
++ * magic about how the driver specific features are setup. If
++ * a driver is attached we assume the driver settings are auto
++ * remove.
++ */
++
++static int __ide_add_setting(ide_drive_t *drive, const char *name, int rw, int read_ioctl, int write_ioctl, int data_type, int min, int max, int mul_factor, int div_factor, void *data, ide_procset_t *set, int auto_remove)
++{
++ ide_settings_t **p = (ide_settings_t **) &drive->settings, *setting = NULL;
++
++ down(&ide_setting_sem);
++ while ((*p) && strcmp((*p)->name, name) < 0)
++ p = &((*p)->next);
++ if ((setting = kzalloc(sizeof(*setting), GFP_KERNEL)) == NULL)
++ goto abort;
++ if ((setting->name = kmalloc(strlen(name) + 1, GFP_KERNEL)) == NULL)
++ goto abort;
++ strcpy(setting->name, name);
++ setting->rw = rw;
++ setting->read_ioctl = read_ioctl;
++ setting->write_ioctl = write_ioctl;
++ setting->data_type = data_type;
++ setting->min = min;
++ setting->max = max;
++ setting->mul_factor = mul_factor;
++ setting->div_factor = div_factor;
++ setting->data = data;
++ setting->set = set;
++
++ setting->next = *p;
++ if (auto_remove)
++ setting->auto_remove = 1;
++ *p = setting;
++ up(&ide_setting_sem);
++ return 0;
++abort:
++ up(&ide_setting_sem);
++ kfree(setting);
++ return -1;
++}
++
++int ide_add_setting(ide_drive_t *drive, const char *name, int rw, int read_ioctl, int write_ioctl, int data_type, int min, int max, int mul_factor, int div_factor, void *data, ide_procset_t *set)
++{
++ return __ide_add_setting(drive, name, rw, read_ioctl, write_ioctl, data_type, min, max, mul_factor, div_factor, data, set, 1);
++}
++
++EXPORT_SYMBOL(ide_add_setting);
++
++/**
++ * __ide_remove_setting - remove an ide setting option
++ * @drive: drive to use
++ * @name: setting name
++ *
++ * Removes the setting named from the device if it is present.
++ * The caller must hold the setting semaphore.
++ */
++
++static void __ide_remove_setting (ide_drive_t *drive, char *name)
++{
++ ide_settings_t **p, *setting;
++
++ p = (ide_settings_t **) &drive->settings;
++
++ while ((*p) && strcmp((*p)->name, name))
++ p = &((*p)->next);
++ if ((setting = (*p)) == NULL)
++ return;
++
++ (*p) = setting->next;
++
++ kfree(setting->name);
++ kfree(setting);
++}
++
++/**
++ * ide_find_setting_by_ioctl - find a drive specific ioctl
++ * @drive: drive to scan
++ * @cmd: ioctl command to handle
++ *
++ * Scan's the device setting table for a matching entry and returns
++ * this or NULL if no entry is found. The caller must hold the
++ * setting semaphore
++ */
++
++static ide_settings_t *ide_find_setting_by_ioctl (ide_drive_t *drive, int cmd)
++{
++ ide_settings_t *setting = drive->settings;
++
++ while (setting) {
++ if (setting->read_ioctl == cmd || setting->write_ioctl == cmd)
++ break;
++ setting = setting->next;
++ }
++
++ return setting;
++}
++
++/**
++ * ide_find_setting_by_name - find a drive specific setting
++ * @drive: drive to scan
++ * @name: setting name
++ *
++ * Scan's the device setting table for a matching entry and returns
++ * this or NULL if no entry is found. The caller must hold the
++ * setting semaphore
++ */
++
++ide_settings_t *ide_find_setting_by_name (ide_drive_t *drive, char *name)
++{
++ ide_settings_t *setting = drive->settings;
++
++ while (setting) {
++ if (strcmp(setting->name, name) == 0)
++ break;
++ setting = setting->next;
++ }
++ return setting;
++}
++
++/**
++ * auto_remove_settings - remove driver specific settings
++ * @drive: drive
++ *
++ * Automatically remove all the driver specific settings for this
++ * drive. This function may sleep and must not be called from IRQ
++ * context. The caller must hold ide_setting_sem.
++ */
++
++static void auto_remove_settings (ide_drive_t *drive)
++{
++ ide_settings_t *setting;
++repeat:
++ setting = drive->settings;
++ while (setting) {
++ if (setting->auto_remove) {
++ __ide_remove_setting(drive, setting->name);
++ goto repeat;
++ }
++ setting = setting->next;
++ }
++}
++
++/**
++ * ide_read_setting - read an IDE setting
++ * @drive: drive to read from
++ * @setting: drive setting
++ *
++ * Read a drive setting and return the value. The caller
++ * must hold the ide_setting_sem when making this call.
++ *
++ * BUGS: the data return and error are the same return value
++ * so an error -EINVAL and true return of the same value cannot
++ * be told apart
++ */
++
++int ide_read_setting (ide_drive_t *drive, ide_settings_t *setting)
++{
++ int val = -EINVAL;
++ unsigned long flags;
++
++ if ((setting->rw & SETTING_READ)) {
++ spin_lock_irqsave(&ide_lock, flags);
++ switch(setting->data_type) {
++ case TYPE_BYTE:
++ val = *((u8 *) setting->data);
++ break;
++ case TYPE_SHORT:
++ val = *((u16 *) setting->data);
++ break;
++ case TYPE_INT:
++ case TYPE_INTA:
++ val = *((u32 *) setting->data);
++ break;
++ }
++ spin_unlock_irqrestore(&ide_lock, flags);
++ }
++ return val;
++}
++
++/**
++ * ide_spin_wait_hwgroup - wait for group
++ * @drive: drive in the group
++ *
++ * Wait for an IDE device group to go non busy and then return
++ * holding the ide_lock which guards the hwgroup->busy status
++ * and right to use it.
++ */
++
++int ide_spin_wait_hwgroup (ide_drive_t *drive)
++{
++ ide_hwgroup_t *hwgroup = HWGROUP(drive);
++ unsigned long timeout = jiffies + (3 * HZ);
++
++ spin_lock_irq(&ide_lock);
++
++ while (hwgroup->busy) {
++ unsigned long lflags;
++ spin_unlock_irq(&ide_lock);
++ local_irq_set(lflags);
++ if (time_after(jiffies, timeout)) {
++ local_irq_restore(lflags);
++ printk(KERN_ERR "%s: channel busy\n", drive->name);
++ return -EBUSY;
++ }
++ local_irq_restore(lflags);
++ spin_lock_irq(&ide_lock);
++ }
++ return 0;
++}
++
++EXPORT_SYMBOL(ide_spin_wait_hwgroup);
++
++/**
++ * ide_write_setting - read an IDE setting
++ * @drive: drive to read from
++ * @setting: drive setting
++ * @val: value
++ *
++ * Write a drive setting if it is possible. The caller
++ * must hold the ide_setting_sem when making this call.
++ *
++ * BUGS: the data return and error are the same return value
++ * so an error -EINVAL and true return of the same value cannot
++ * be told apart
++ *
++ * FIXME: This should be changed to enqueue a special request
++ * to the driver to change settings, and then wait on a sema for completion.
++ * The current scheme of polling is kludgy, though safe enough.
++ */
++
++int ide_write_setting (ide_drive_t *drive, ide_settings_t *setting, int val)
++{
++ int i;
++ u32 *p;
++
++ if (!capable(CAP_SYS_ADMIN))
++ return -EACCES;
++ if (!(setting->rw & SETTING_WRITE))
++ return -EPERM;
++ if (val < setting->min || val > setting->max)
++ return -EINVAL;
++ if (setting->set)
++ return setting->set(drive, val);
++ if (ide_spin_wait_hwgroup(drive))
++ return -EBUSY;
++ switch (setting->data_type) {
++ case TYPE_BYTE:
++ *((u8 *) setting->data) = val;
++ break;
++ case TYPE_SHORT:
++ *((u16 *) setting->data) = val;
++ break;
++ case TYPE_INT:
++ *((u32 *) setting->data) = val;
++ break;
++ case TYPE_INTA:
++ p = (u32 *) setting->data;
++ for (i = 0; i < 1 << PARTN_BITS; i++, p++)
++ *p = val;
++ break;
++ }
++ spin_unlock_irq(&ide_lock);
++ return 0;
++}
++
++static int set_io_32bit(ide_drive_t *drive, int arg)
++{
++ drive->io_32bit = arg;
++#ifdef CONFIG_BLK_DEV_DTC2278
++ if (HWIF(drive)->chipset == ide_dtc2278)
++ HWIF(drive)->drives[!drive->select.b.unit].io_32bit = arg;
++#endif /* CONFIG_BLK_DEV_DTC2278 */
++ return 0;
++}
++
++static int set_using_dma (ide_drive_t *drive, int arg)
++{
++#ifdef CONFIG_BLK_DEV_IDEDMA
++ if (!drive->id || !(drive->id->capability & 1))
++ return -EPERM;
++ if (HWIF(drive)->ide_dma_check == NULL)
++ return -EPERM;
++ if (arg) {
++ if (HWIF(drive)->ide_dma_check(drive)) return -EIO;
++ if (HWIF(drive)->ide_dma_on(drive)) return -EIO;
++ } else {
++ if (__ide_dma_off(drive))
++ return -EIO;
++ }
++ return 0;
++#else
++ return -EPERM;
++#endif
++}
++
++static int set_pio_mode (ide_drive_t *drive, int arg)
++{
++ struct request rq;
++
++ if (!HWIF(drive)->tuneproc)
++ return -ENOSYS;
++ if (drive->special.b.set_tune)
++ return -EBUSY;
++ ide_init_drive_cmd(&rq);
++ drive->tune_req = (u8) arg;
++ drive->special.b.set_tune = 1;
++ (void) ide_do_drive_cmd(drive, &rq, ide_wait);
++ return 0;
++}
++
++static int set_xfer_rate (ide_drive_t *drive, int arg)
++{
++ int err = ide_wait_cmd(drive,
++ WIN_SETFEATURES, (u8) arg,
++ SETFEATURES_XFER, 0, NULL);
++
++ if (!err && arg) {
++ ide_set_xfer_rate(drive, (u8) arg);
++ ide_driveid_update(drive);
++ }
++ return err;
++}
++
++/**
++ * ide_add_generic_settings - generic ide settings
++ * @drive: drive being configured
++ *
++ * Add the generic parts of the system settings to the /proc files and
++ * ioctls for this IDE device. The caller must not be holding the
++ * ide_setting_sem.
++ */
++
++void ide_add_generic_settings (ide_drive_t *drive)
++{
++/*
++ * drive setting name read/write access read ioctl write ioctl data type min max mul_factor div_factor data pointer set function
++ */
++ __ide_add_setting(drive, "io_32bit", drive->no_io_32bit ? SETTING_READ : SETTING_RW, HDIO_GET_32BIT, HDIO_SET_32BIT, TYPE_BYTE, 0, 1 + (SUPPORT_VLB_SYNC << 1), 1, 1, &drive->io_32bit, set_io_32bit, 0);
++ __ide_add_setting(drive, "keepsettings", SETTING_RW, HDIO_GET_KEEPSETTINGS, HDIO_SET_KEEPSETTINGS, TYPE_BYTE, 0, 1, 1, 1, &drive->keep_settings, NULL, 0);
++ __ide_add_setting(drive, "nice1", SETTING_RW, -1, -1, TYPE_BYTE, 0, 1, 1, 1, &drive->nice1, NULL, 0);
++ __ide_add_setting(drive, "pio_mode", SETTING_WRITE, -1, HDIO_SET_PIO_MODE, TYPE_BYTE, 0, 255, 1, 1, NULL, set_pio_mode, 0);
++ __ide_add_setting(drive, "unmaskirq", drive->no_unmask ? SETTING_READ : SETTING_RW, HDIO_GET_UNMASKINTR, HDIO_SET_UNMASKINTR, TYPE_BYTE, 0, 1, 1, 1, &drive->unmask, NULL, 0);
++ __ide_add_setting(drive, "using_dma", SETTING_RW, HDIO_GET_DMA, HDIO_SET_DMA, TYPE_BYTE, 0, 1, 1, 1, &drive->using_dma, set_using_dma, 0);
++ __ide_add_setting(drive, "init_speed", SETTING_RW, -1, -1, TYPE_BYTE, 0, 70, 1, 1, &drive->init_speed, NULL, 0);
++ __ide_add_setting(drive, "current_speed", SETTING_RW, -1, -1, TYPE_BYTE, 0, 70, 1, 1, &drive->current_speed, set_xfer_rate, 0);
++ __ide_add_setting(drive, "number", SETTING_RW, -1, -1, TYPE_BYTE, 0, 3, 1, 1, &drive->dn, NULL, 0);
++}
++
++/**
++ * system_bus_clock - clock guess
++ *
++ * External version of the bus clock guess used by very old IDE drivers
++ * for things like VLB timings. Should not be used.
++ */
++
++int system_bus_clock (void)
++{
++ return((int) ((!system_bus_speed) ? ide_system_bus_speed() : system_bus_speed ));
++}
++
++EXPORT_SYMBOL(system_bus_clock);
++
++static int generic_ide_suspend(struct device *dev, pm_message_t mesg)
++{
++ ide_drive_t *drive = dev->driver_data;
++ struct request rq;
++ struct request_pm_state rqpm;
++ ide_task_t args;
++
++ memset(&rq, 0, sizeof(rq));
++ memset(&rqpm, 0, sizeof(rqpm));
++ memset(&args, 0, sizeof(args));
++ rq.cmd_type = REQ_TYPE_PM_SUSPEND;
++ rq.special = &args;
++ rq.data = &rqpm;
++ rqpm.pm_step = ide_pm_state_start_suspend;
++ if (mesg.event == PM_EVENT_PRETHAW)
++ mesg.event = PM_EVENT_FREEZE;
++ rqpm.pm_state = mesg.event;
++
++ return ide_do_drive_cmd(drive, &rq, ide_wait);
++}
++
++static int generic_ide_resume(struct device *dev)
++{
++ ide_drive_t *drive = dev->driver_data;
++ struct request rq;
++ struct request_pm_state rqpm;
++ ide_task_t args;
++
++ memset(&rq, 0, sizeof(rq));
++ memset(&rqpm, 0, sizeof(rqpm));
++ memset(&args, 0, sizeof(args));
++ rq.cmd_type = REQ_TYPE_PM_RESUME;
++ rq.special = &args;
++ rq.data = &rqpm;
++ rqpm.pm_step = ide_pm_state_start_resume;
++ rqpm.pm_state = PM_EVENT_ON;
++
++ return ide_do_drive_cmd(drive, &rq, ide_head_wait);
++}
++
++int generic_ide_ioctl(ide_drive_t *drive, struct file *file, struct block_device *bdev,
++ unsigned int cmd, unsigned long arg)
++{
++ ide_settings_t *setting;
++ ide_driver_t *drv;
++ int err = 0;
++ void __user *p = (void __user *)arg;
++
++ down(&ide_setting_sem);
++ if ((setting = ide_find_setting_by_ioctl(drive, cmd)) != NULL) {
++ if (cmd == setting->read_ioctl) {
++ err = ide_read_setting(drive, setting);
++ up(&ide_setting_sem);
++ return err >= 0 ? put_user(err, (long __user *)arg) : err;
++ } else {
++ if (bdev != bdev->bd_contains)
++ err = -EINVAL;
++ else
++ err = ide_write_setting(drive, setting, arg);
++ up(&ide_setting_sem);
++ return err;
++ }
++ }
++ up(&ide_setting_sem);
++
++ switch (cmd) {
++ case HDIO_OBSOLETE_IDENTITY:
++ case HDIO_GET_IDENTITY:
++ if (bdev != bdev->bd_contains)
++ return -EINVAL;
++ if (drive->id_read == 0)
++ return -ENOMSG;
++ if (copy_to_user(p, drive->id, (cmd == HDIO_GET_IDENTITY) ? sizeof(*drive->id) : 142))
++ return -EFAULT;
++ return 0;
++
++ case HDIO_GET_NICE:
++ return put_user(drive->dsc_overlap << IDE_NICE_DSC_OVERLAP |
++ drive->atapi_overlap << IDE_NICE_ATAPI_OVERLAP |
++ drive->nice0 << IDE_NICE_0 |
++ drive->nice1 << IDE_NICE_1 |
++ drive->nice2 << IDE_NICE_2,
++ (long __user *) arg);
++
++#ifdef CONFIG_IDE_TASK_IOCTL
++ case HDIO_DRIVE_TASKFILE:
++ if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO))
++ return -EACCES;
++ switch(drive->media) {
++ case ide_disk:
++ return ide_taskfile_ioctl(drive, cmd, arg);
++ default:
++ return -ENOMSG;
++ }
++#endif /* CONFIG_IDE_TASK_IOCTL */
++
++ case HDIO_DRIVE_CMD:
++ if (!capable(CAP_SYS_RAWIO))
++ return -EACCES;
++ return ide_cmd_ioctl(drive, cmd, arg);
++
++ case HDIO_DRIVE_TASK:
++ if (!capable(CAP_SYS_RAWIO))
++ return -EACCES;
++ return ide_task_ioctl(drive, cmd, arg);
++
++ case HDIO_SCAN_HWIF:
++ {
++ hw_regs_t hw;
++ int args[3];
++ if (!capable(CAP_SYS_RAWIO)) return -EACCES;
++ if (copy_from_user(args, p, 3 * sizeof(int)))
++ return -EFAULT;
++ memset(&hw, 0, sizeof(hw));
++ ide_init_hwif_ports(&hw, (unsigned long) args[0],
++ (unsigned long) args[1], NULL);
++ hw.irq = args[2];
++ if (ide_register_hw(&hw, NULL) == -1)
++ return -EIO;
++ return 0;
++ }
++ case HDIO_UNREGISTER_HWIF:
++ if (!capable(CAP_SYS_RAWIO)) return -EACCES;
++ /* (arg > MAX_HWIFS) checked in function */
++ ide_unregister(arg);
++ return 0;
++ case HDIO_SET_NICE:
++ if (!capable(CAP_SYS_ADMIN)) return -EACCES;
++ if (arg != (arg & ((1 << IDE_NICE_DSC_OVERLAP) | (1 << IDE_NICE_1))))
++ return -EPERM;
++ drive->dsc_overlap = (arg >> IDE_NICE_DSC_OVERLAP) & 1;
++ drv = *(ide_driver_t **)bdev->bd_disk->private_data;
++ if (drive->dsc_overlap && !drv->supports_dsc_overlap) {
++ drive->dsc_overlap = 0;
++ return -EPERM;
++ }
++ drive->nice1 = (arg >> IDE_NICE_1) & 1;
++ return 0;
++ case HDIO_DRIVE_RESET:
++ {
++ unsigned long flags;
++ if (!capable(CAP_SYS_ADMIN)) return -EACCES;
++
++ /*
++ * Abort the current command on the
++ * group if there is one, taking
++ * care not to allow anything else
++ * to be queued and to die on the
++ * spot if we miss one somehow
++ */
++
++ spin_lock_irqsave(&ide_lock, flags);
++
++ if (HWGROUP(drive)->resetting) {
++ spin_unlock_irqrestore(&ide_lock, flags);
++ return -EBUSY;
++ }
++
++ ide_abort(drive, "drive reset");
++
++ BUG_ON(HWGROUP(drive)->handler);
++
++ /* Ensure nothing gets queued after we
++ drop the lock. Reset will clear the busy */
++
++ HWGROUP(drive)->busy = 1;
++ spin_unlock_irqrestore(&ide_lock, flags);
++ (void) ide_do_reset(drive);
++
++ return 0;
++ }
++
++ case CDROMEJECT:
++ case CDROMCLOSETRAY:
++ return scsi_cmd_ioctl(file, bdev->bd_disk, cmd, p);
++
++ case HDIO_GET_BUSSTATE:
++ if (!capable(CAP_SYS_ADMIN))
++ return -EACCES;
++ if (put_user(HWIF(drive)->bus_state, (long __user *)arg))
++ return -EFAULT;
++ return 0;
++
++ case HDIO_SET_BUSSTATE:
++ if (!capable(CAP_SYS_ADMIN))
++ return -EACCES;
++ if (HWIF(drive)->busproc)
++ return HWIF(drive)->busproc(drive, (int)arg);
++ return -EOPNOTSUPP;
++ default:
++ return -EINVAL;
++ }
++}
++
++EXPORT_SYMBOL(generic_ide_ioctl);
++
++/*
++ * stridx() returns the offset of c within s,
++ * or -1 if c is '\0' or not found within s.
++ */
++static int __init stridx (const char *s, char c)
++{
++ char *i = strchr(s, c);
++ return (i && c) ? i - s : -1;
++}
++
++/*
++ * match_parm() does parsing for ide_setup():
++ *
++ * 1. the first char of s must be '='.
++ * 2. if the remainder matches one of the supplied keywords,
++ * the index (1 based) of the keyword is negated and returned.
++ * 3. if the remainder is a series of no more than max_vals numbers
++ * separated by commas, the numbers are saved in vals[] and a
++ * count of how many were saved is returned. Base10 is assumed,
++ * and base16 is allowed when prefixed with "0x".
++ * 4. otherwise, zero is returned.
++ */
++static int __init match_parm (char *s, const char *keywords[], int vals[], int max_vals)
++{
++ static const char *decimal = "0123456789";
++ static const char *hex = "0123456789abcdef";
++ int i, n;
++
++ if (*s++ == '=') {
++ /*
++ * Try matching against the supplied keywords,
++ * and return -(index+1) if we match one
++ */
++ if (keywords != NULL) {
++ for (i = 0; *keywords != NULL; ++i) {
++ if (!strcmp(s, *keywords++))
++ return -(i+1);
++ }
++ }
++ /*
++ * Look for a series of no more than "max_vals"
++ * numeric values separated by commas, in base10,
++ * or base16 when prefixed with "0x".
++ * Return a count of how many were found.
++ */
++ for (n = 0; (i = stridx(decimal, *s)) >= 0;) {
++ vals[n] = i;
++ while ((i = stridx(decimal, *++s)) >= 0)
++ vals[n] = (vals[n] * 10) + i;
++ if (*s == 'x' && !vals[n]) {
++ while ((i = stridx(hex, *++s)) >= 0)
++ vals[n] = (vals[n] * 0x10) + i;
++ }
++ if (++n == max_vals)
++ break;
++ if (*s == ',' || *s == ';')
++ ++s;
++ }
++ if (!*s)
++ return n;
++ }
++ return 0; /* zero = nothing matched */
++}
++
++#ifdef CONFIG_BLK_DEV_ALI14XX
++static int __initdata probe_ali14xx;
++extern int ali14xx_init(void);
++#endif
++#ifdef CONFIG_BLK_DEV_UMC8672
++static int __initdata probe_umc8672;
++extern int umc8672_init(void);
++#endif
++#ifdef CONFIG_BLK_DEV_DTC2278
++static int __initdata probe_dtc2278;
++extern int dtc2278_init(void);
++#endif
++#ifdef CONFIG_BLK_DEV_HT6560B
++static int __initdata probe_ht6560b;
++extern int ht6560b_init(void);
++#endif
++#ifdef CONFIG_BLK_DEV_QD65XX
++static int __initdata probe_qd65xx;
++extern int qd65xx_init(void);
++#endif
++
++static int __initdata is_chipset_set[MAX_HWIFS];
++
++/*
++ * ide_setup() gets called VERY EARLY during initialization,
++ * to handle kernel "command line" strings beginning with "hdx=" or "ide".
++ *
++ * Remember to update Documentation/ide.txt if you change something here.
++ */
++static int __init ide_setup(char *s)
++{
++ int i, vals[3];
++ ide_hwif_t *hwif;
++ ide_drive_t *drive;
++ unsigned int hw, unit;
++ const char max_drive = 'a' + ((MAX_HWIFS * MAX_DRIVES) - 1);
++ const char max_hwif = '0' + (MAX_HWIFS - 1);
++
++
++ if (strncmp(s,"hd",2) == 0 && s[2] == '=') /* hd= is for hd.c */
++ return 0; /* driver and not us */
++
++ if (strncmp(s,"ide",3) && strncmp(s,"idebus",6) && strncmp(s,"hd",2))
++ return 0;
++
++ printk(KERN_INFO "ide_setup: %s", s);
++ init_ide_data ();
++
++#ifdef CONFIG_BLK_DEV_IDEDOUBLER
++ if (!strcmp(s, "ide=doubler")) {
++ extern int ide_doubler;
++
++ printk(" : Enabled support for IDE doublers\n");
++ ide_doubler = 1;
++ return 1;
++ }
++#endif /* CONFIG_BLK_DEV_IDEDOUBLER */
++
++ if (!strcmp(s, "ide=nodma")) {
++ printk(" : Prevented DMA\n");
++ noautodma = 1;
++ return 1;
++ }
++
++#ifdef CONFIG_BLK_DEV_IDEPCI
++ if (!strcmp(s, "ide=reverse")) {
++ ide_scan_direction = 1;
++ printk(" : Enabled support for IDE inverse scan order.\n");
++ return 1;
++ }
++#endif /* CONFIG_BLK_DEV_IDEPCI */
++
++ /*
++ * Look for drive options: "hdx="
++ */
++ if (s[0] == 'h' && s[1] == 'd' && s[2] >= 'a' && s[2] <= max_drive) {
++ const char *hd_words[] = {
++ "none", "noprobe", "nowerr", "cdrom", "serialize",
++ "autotune", "noautotune", "minus8", "swapdata", "bswap",
++ "noflush", "remap", "remap63", "scsi", NULL };
++ unit = s[2] - 'a';
++ hw = unit / MAX_DRIVES;
++ unit = unit % MAX_DRIVES;
++ hwif = &ide_hwifs[hw];
++ drive = &hwif->drives[unit];
++ if (strncmp(s + 4, "ide-", 4) == 0) {
++ strlcpy(drive->driver_req, s + 4, sizeof(drive->driver_req));
++ goto done;
++ }
++ switch (match_parm(&s[3], hd_words, vals, 3)) {
++ case -1: /* "none" */
++ case -2: /* "noprobe" */
++ drive->noprobe = 1;
++ goto done;
++ case -3: /* "nowerr" */
++ drive->bad_wstat = BAD_R_STAT;
++ hwif->noprobe = 0;
++ goto done;
++ case -4: /* "cdrom" */
++ drive->present = 1;
++ drive->media = ide_cdrom;
++ /* an ATAPI device ignores DRDY */
++ drive->ready_stat = 0;
++ hwif->noprobe = 0;
++ goto done;
++ case -5: /* "serialize" */
++ printk(" -- USE \"ide%d=serialize\" INSTEAD", hw);
++ goto do_serialize;
++ case -6: /* "autotune" */
++ drive->autotune = IDE_TUNE_AUTO;
++ goto obsolete_option;
++ case -7: /* "noautotune" */
++ drive->autotune = IDE_TUNE_NOAUTO;
++ goto obsolete_option;
++ case -9: /* "swapdata" */
++ case -10: /* "bswap" */
++ drive->bswap = 1;
++ goto done;
++ case -11: /* noflush */
++ drive->noflush = 1;
++ goto done;
++ case -12: /* "remap" */
++ drive->remap_0_to_1 = 1;
++ goto done;
++ case -13: /* "remap63" */
++ drive->sect0 = 63;
++ goto done;
++ case -14: /* "scsi" */
++ drive->scsi = 1;
++ goto done;
++ case 3: /* cyl,head,sect */
++ drive->media = ide_disk;
++ drive->ready_stat = READY_STAT;
++ drive->cyl = drive->bios_cyl = vals[0];
++ drive->head = drive->bios_head = vals[1];
++ drive->sect = drive->bios_sect = vals[2];
++ drive->present = 1;
++ drive->forced_geom = 1;
++ hwif->noprobe = 0;
++ goto done;
++ default:
++ goto bad_option;
++ }
++ }
++
++ if (s[0] != 'i' || s[1] != 'd' || s[2] != 'e')
++ goto bad_option;
++ /*
++ * Look for bus speed option: "idebus="
++ */
++ if (s[3] == 'b' && s[4] == 'u' && s[5] == 's') {
++ if (match_parm(&s[6], NULL, vals, 1) != 1)
++ goto bad_option;
++ if (vals[0] >= 20 && vals[0] <= 66) {
++ idebus_parameter = vals[0];
++ } else
++ printk(" -- BAD BUS SPEED! Expected value from 20 to 66");
++ goto done;
++ }
++ /*
++ * Look for interface options: "idex="
++ */
++ if (s[3] >= '0' && s[3] <= max_hwif) {
++ /*
++ * Be VERY CAREFUL changing this: note hardcoded indexes below
++ * (-8, -9, -10) are reserved to ease the hardcoding.
++ */
++ static const char *ide_words[] = {
++ "noprobe", "serialize", "autotune", "noautotune",
++ "reset", "dma", "ata66", "minus8", "minus9",
++ "minus10", "four", "qd65xx", "ht6560b", "cmd640_vlb",
++ "dtc2278", "umc8672", "ali14xx", NULL };
++ hw = s[3] - '0';
++ hwif = &ide_hwifs[hw];
++ i = match_parm(&s[4], ide_words, vals, 3);
++
++ /*
++ * Cryptic check to ensure chipset not already set for hwif.
++ * Note: we can't depend on hwif->chipset here.
++ */
++ if ((i >= -18 && i <= -11) || (i > 0 && i <= 3)) {
++ /* chipset already specified */
++ if (is_chipset_set[hw])
++ goto bad_option;
++ if (i > -18 && i <= -11) {
++ /* these drivers are for "ide0=" only */
++ if (hw != 0)
++ goto bad_hwif;
++ /* chipset already specified for 2nd port */
++ if (is_chipset_set[hw+1])
++ goto bad_option;
++ }
++ is_chipset_set[hw] = 1;
++ printk("\n");
++ }
++
++ switch (i) {
++#ifdef CONFIG_BLK_DEV_ALI14XX
++ case -17: /* "ali14xx" */
++ probe_ali14xx = 1;
++ goto done;
++#endif
++#ifdef CONFIG_BLK_DEV_UMC8672
++ case -16: /* "umc8672" */
++ probe_umc8672 = 1;
++ goto done;
++#endif
++#ifdef CONFIG_BLK_DEV_DTC2278
++ case -15: /* "dtc2278" */
++ probe_dtc2278 = 1;
++ goto done;
++#endif
++#ifdef CONFIG_BLK_DEV_CMD640
++ case -14: /* "cmd640_vlb" */
++ {
++ extern int cmd640_vlb; /* flag for cmd640.c */
++ cmd640_vlb = 1;
++ goto done;
++ }
++#endif
++#ifdef CONFIG_BLK_DEV_HT6560B
++ case -13: /* "ht6560b" */
++ probe_ht6560b = 1;
++ goto done;
++#endif
++#ifdef CONFIG_BLK_DEV_QD65XX
++ case -12: /* "qd65xx" */
++ probe_qd65xx = 1;
++ goto done;
++#endif
++#ifdef CONFIG_BLK_DEV_4DRIVES
++ case -11: /* "four" drives on one set of ports */
++ {
++ ide_hwif_t *mate = &ide_hwifs[hw^1];
++ mate->drives[0].select.all ^= 0x20;
++ mate->drives[1].select.all ^= 0x20;
++ hwif->chipset = mate->chipset = ide_4drives;
++ mate->irq = hwif->irq;
++ memcpy(mate->io_ports, hwif->io_ports, sizeof(hwif->io_ports));
++ goto do_serialize;
++ }
++#endif /* CONFIG_BLK_DEV_4DRIVES */
++ case -10: /* minus10 */
++ case -9: /* minus9 */
++ case -8: /* minus8 */
++ goto bad_option;
++ case -7: /* ata66 */
++#ifdef CONFIG_BLK_DEV_IDEPCI
++ hwif->udma_four = 1;
++ goto obsolete_option;
++#else
++ goto bad_hwif;
++#endif
++ case -6: /* dma */
++ hwif->autodma = 1;
++ goto obsolete_option;
++ case -5: /* "reset" */
++ hwif->reset = 1;
++ goto obsolete_option;
++ case -4: /* "noautotune" */
++ hwif->drives[0].autotune = IDE_TUNE_NOAUTO;
++ hwif->drives[1].autotune = IDE_TUNE_NOAUTO;
++ goto obsolete_option;
++ case -3: /* "autotune" */
++ hwif->drives[0].autotune = IDE_TUNE_AUTO;
++ hwif->drives[1].autotune = IDE_TUNE_AUTO;
++ goto obsolete_option;
++ case -2: /* "serialize" */
++ do_serialize:
++ hwif->mate = &ide_hwifs[hw^1];
++ hwif->mate->mate = hwif;
++ hwif->serialized = hwif->mate->serialized = 1;
++ goto obsolete_option;
++
++ case -1: /* "noprobe" */
++ hwif->noprobe = 1;
++ goto done;
++
++ case 1: /* base */
++ vals[1] = vals[0] + 0x206; /* default ctl */
++ case 2: /* base,ctl */
++ vals[2] = 0; /* default irq = probe for it */
++ case 3: /* base,ctl,irq */
++ hwif->hw.irq = vals[2];
++ ide_init_hwif_ports(&hwif->hw, (unsigned long) vals[0], (unsigned long) vals[1], &hwif->irq);
++ memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->io_ports));
++ hwif->irq = vals[2];
++ hwif->noprobe = 0;
++ hwif->chipset = ide_forced;
++ goto obsolete_option;
++
++ case 0: goto bad_option;
++ default:
++ printk(" -- SUPPORT NOT CONFIGURED IN THIS KERNEL\n");
++ return 1;
++ }
++ }
++bad_option:
++ printk(" -- BAD OPTION\n");
++ return 1;
++obsolete_option:
++ printk(" -- OBSOLETE OPTION, WILL BE REMOVED SOON!\n");
++ return 1;
++bad_hwif:
++ printk("-- NOT SUPPORTED ON ide%d", hw);
++done:
++ printk("\n");
++ return 1;
++}
++
++extern void pnpide_init(void);
++extern void h8300_ide_init(void);
++
++/*
++ * probe_for_hwifs() finds/initializes "known" IDE interfaces
++ */
++static void __init probe_for_hwifs (void)
++{
++#ifdef CONFIG_BLK_DEV_IDEPCI
++ ide_scan_pcibus(ide_scan_direction);
++#endif /* CONFIG_BLK_DEV_IDEPCI */
++
++#ifdef CONFIG_ETRAX_IDE
++ {
++ extern void init_e100_ide(void);
++ init_e100_ide();
++ }
++#endif /* CONFIG_ETRAX_IDE */
++#ifdef CONFIG_BLK_DEV_CMD640
++ {
++ extern void ide_probe_for_cmd640x(void);
++ ide_probe_for_cmd640x();
++ }
++#endif /* CONFIG_BLK_DEV_CMD640 */
++#ifdef CONFIG_BLK_DEV_IDE_PMAC
++ {
++ extern void pmac_ide_probe(void);
++ pmac_ide_probe();
++ }
++#endif /* CONFIG_BLK_DEV_IDE_PMAC */
++#ifdef CONFIG_BLK_DEV_GAYLE
++ {
++ extern void gayle_init(void);
++ gayle_init();
++ }
++#endif /* CONFIG_BLK_DEV_GAYLE */
++#ifdef CONFIG_BLK_DEV_FALCON_IDE
++ {
++ extern void falconide_init(void);
++ falconide_init();
++ }
++#endif /* CONFIG_BLK_DEV_FALCON_IDE */
++#ifdef CONFIG_BLK_DEV_MAC_IDE
++ {
++ extern void macide_init(void);
++ macide_init();
++ }
++#endif /* CONFIG_BLK_DEV_MAC_IDE */
++#ifdef CONFIG_BLK_DEV_Q40IDE
++ {
++ extern void q40ide_init(void);
++ q40ide_init();
++ }
++#endif /* CONFIG_BLK_DEV_Q40IDE */
++#ifdef CONFIG_BLK_DEV_BUDDHA
++ {
++ extern void buddha_init(void);
++ buddha_init();
++ }
++#endif /* CONFIG_BLK_DEV_BUDDHA */
++#ifdef CONFIG_BLK_DEV_IDEPNP
++ pnpide_init();
++#endif
++#ifdef CONFIG_H8300
++ h8300_ide_init();
++#endif
++}
++
++void ide_register_subdriver(ide_drive_t *drive, ide_driver_t *driver)
++{
++#ifdef CONFIG_PROC_FS
++ ide_add_proc_entries(drive->proc, driver->proc, drive);
++#endif
++}
++
++EXPORT_SYMBOL(ide_register_subdriver);
++
++/**
++ * ide_unregister_subdriver - disconnect drive from driver
++ * @drive: drive to unplug
++ * @driver: driver
++ *
++ * Disconnect a drive from the driver it was attached to and then
++ * clean up the various proc files and other objects attached to it.
++ *
++ * Takes ide_setting_sem and ide_lock.
++ * Caller must hold none of the locks.
++ */
++
++void ide_unregister_subdriver(ide_drive_t *drive, ide_driver_t *driver)
++{
++ unsigned long flags;
++
++ down(&ide_setting_sem);
++ spin_lock_irqsave(&ide_lock, flags);
++#ifdef CONFIG_PROC_FS
++ ide_remove_proc_entries(drive->proc, driver->proc);
++#endif
++ auto_remove_settings(drive);
++ spin_unlock_irqrestore(&ide_lock, flags);
++ up(&ide_setting_sem);
++}
++
++EXPORT_SYMBOL(ide_unregister_subdriver);
++
++/*
++ * Probe module
++ */
++
++EXPORT_SYMBOL(ide_lock);
++
++static int ide_bus_match(struct device *dev, struct device_driver *drv)
++{
++ return 1;
++}
++
++static char *media_string(ide_drive_t *drive)
++{
++ switch (drive->media) {
++ case ide_disk:
++ return "disk";
++ case ide_cdrom:
++ return "cdrom";
++ case ide_tape:
++ return "tape";
++ case ide_floppy:
++ return "floppy";
++ default:
++ return "UNKNOWN";
++ }
++}
++
++static ssize_t media_show(struct device *dev, struct device_attribute *attr, char *buf)
++{
++ ide_drive_t *drive = to_ide_device(dev);
++ return sprintf(buf, "%s\n", media_string(drive));
++}
++
++static ssize_t drivename_show(struct device *dev, struct device_attribute *attr, char *buf)
++{
++ ide_drive_t *drive = to_ide_device(dev);
++ return sprintf(buf, "%s\n", drive->name);
++}
++
++static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, char *buf)
++{
++ ide_drive_t *drive = to_ide_device(dev);
++ return sprintf(buf, "ide:m-%s\n", media_string(drive));
++}
++
++static struct device_attribute ide_dev_attrs[] = {
++ __ATTR_RO(media),
++ __ATTR_RO(drivename),
++ __ATTR_RO(modalias),
++ __ATTR_NULL
++};
++
++static int ide_uevent(struct device *dev, char **envp, int num_envp,
++ char *buffer, int buffer_size)
++{
++ ide_drive_t *drive = to_ide_device(dev);
++ int i = 0;
++ int length = 0;
++
++ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length,
++ "MEDIA=%s", media_string(drive));
++ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length,
++ "DRIVENAME=%s", drive->name);
++ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length,
++ "MODALIAS=ide:m-%s", media_string(drive));
++ envp[i] = NULL;
++ return 0;
++}
++
++static int generic_ide_probe(struct device *dev)
++{
++ ide_drive_t *drive = to_ide_device(dev);
++ ide_driver_t *drv = to_ide_driver(dev->driver);
++
++ return drv->probe ? drv->probe(drive) : -ENODEV;
++}
++
++static int generic_ide_remove(struct device *dev)
++{
++ ide_drive_t *drive = to_ide_device(dev);
++ ide_driver_t *drv = to_ide_driver(dev->driver);
++
++ if (drv->remove)
++ drv->remove(drive);
++
++ return 0;
++}
++
++static void generic_ide_shutdown(struct device *dev)
++{
++ ide_drive_t *drive = to_ide_device(dev);
++ ide_driver_t *drv = to_ide_driver(dev->driver);
++
++ if (dev->driver && drv->shutdown)
++ drv->shutdown(drive);
++}
++
++struct bus_type ide_bus_type = {
++ .name = "ide",
++ .match = ide_bus_match,
++ .uevent = ide_uevent,
++ .probe = generic_ide_probe,
++ .remove = generic_ide_remove,
++ .shutdown = generic_ide_shutdown,
++ .dev_attrs = ide_dev_attrs,
++ .suspend = generic_ide_suspend,
++ .resume = generic_ide_resume,
++};
++
++EXPORT_SYMBOL_GPL(ide_bus_type);
++
++/*
++ * This is gets invoked once during initialization, to set *everything* up
++ */
++static int __init ide_init(void)
++{
++ int ret;
++
++ printk(KERN_INFO "Uniform Multi-Platform E-IDE driver " REVISION "\n");
++ system_bus_speed = ide_system_bus_speed();
++
++ ret = bus_register(&ide_bus_type);
++ if (ret < 0) {
++ printk(KERN_WARNING "IDE: bus_register error: %d\n", ret);
++ return ret;
++ }
++
++ init_ide_data();
++
++#ifdef CONFIG_PROC_FS
++ proc_ide_root = proc_mkdir("ide", NULL);
++#endif
++
++#ifdef CONFIG_BLK_DEV_ALI14XX
++ if (probe_ali14xx)
++ (void)ali14xx_init();
++#endif
++#ifdef CONFIG_BLK_DEV_UMC8672
++ if (probe_umc8672)
++ (void)umc8672_init();
++#endif
++#ifdef CONFIG_BLK_DEV_DTC2278
++ if (probe_dtc2278)
++ (void)dtc2278_init();
++#endif
++#ifdef CONFIG_BLK_DEV_HT6560B
++ if (probe_ht6560b)
++ (void)ht6560b_init();
++#endif
++#ifdef CONFIG_BLK_DEV_QD65XX
++ if (probe_qd65xx)
++ (void)qd65xx_init();
++#endif
++
++ initializing = 1;
++ /* Probe for special PCI and other "known" interface chipsets. */
++ probe_for_hwifs();
++ initializing = 0;
++
++#ifdef CONFIG_PROC_FS
++ proc_ide_create();
++#endif
++ return 0;
++}
++
++#ifdef MODULE
++static char *options = NULL;
++module_param(options, charp, 0);
++MODULE_LICENSE("GPL");
++
++static void __init parse_options (char *line)
++{
++ char *next = line;
++
++ if (line == NULL || !*line)
++ return;
++ while ((line = next) != NULL) {
++ if ((next = strchr(line,' ')) != NULL)
++ *next++ = 0;
++ if (!ide_setup(line))
++ printk (KERN_INFO "Unknown option '%s'\n", line);
++ }
++}
++
++int __init init_module (void)
++{
++ parse_options(options);
++ return ide_init();
++}
++
++void cleanup_module (void)
++{
++ int index;
++
++ for (index = 0; index < MAX_HWIFS; ++index)
++ ide_unregister(index);
++
++#ifdef CONFIG_PROC_FS
++ proc_ide_destroy();
++#endif
++
++ bus_unregister(&ide_bus_type);
++}
++
++#else /* !MODULE */
++
++__setup("", ide_setup);
++
++module_init(ide_init);
++
++#endif /* MODULE */
+diff -purN linux.old/drivers/ide/Kconfig linux.dev/drivers/ide/Kconfig
+--- linux.old/drivers/ide/Kconfig 2007-01-10 20:10:37.000000000 +0100
++++ linux.dev/drivers/ide/Kconfig 2007-04-09 01:15:27.570515264 +0200
+@@ -925,6 +925,14 @@ config BLK_DEV_MPC8xx_IDE
+
+ If unsure, say N.
+
++config BLK_DEV_MAGICBOX_IDE
++ bool "MagicBox 2.0 CF IDE support"
++ depends on 4xx && IDE
++ help
++ This option provides support for IDE on MagicBox 2.0 boards.
++
++ If unsure, say N.
++
+ choice
+ prompt "Type of MPC8xx IDE interface"
+ depends on BLK_DEV_MPC8xx_IDE
+diff -purN linux.old/drivers/ide/Makefile linux.dev/drivers/ide/Makefile
+--- linux.old/drivers/ide/Makefile 2007-01-10 20:10:37.000000000 +0100
++++ linux.dev/drivers/ide/Makefile 2007-04-09 00:23:29.332559488 +0200
+@@ -36,6 +36,7 @@ ide-core-$(CONFIG_BLK_DEV_Q40IDE) += leg
+ # built-in only drivers from ppc/
+ ide-core-$(CONFIG_BLK_DEV_MPC8xx_IDE) += ppc/mpc8xx.o
+ ide-core-$(CONFIG_BLK_DEV_IDE_PMAC) += ppc/pmac.o
++ide-core-$(CONFIG_BLK_DEV_MAGICBOX_IDE) += ppc/magicbox_ide.o
+
+ # built-in only drivers from h8300/
+ ide-core-$(CONFIG_H8300) += h8300/ide-h8300.o
+diff -purN linux.old/drivers/ide/ppc/magicbox_ide.c linux.dev/drivers/ide/ppc/magicbox_ide.c
+--- linux.old/drivers/ide/ppc/magicbox_ide.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/drivers/ide/ppc/magicbox_ide.c 2007-04-09 01:25:39.119545680 +0200
+@@ -0,0 +1,149 @@
++/* Driver for MagicBox 2.0 onboard CompactFlash adapter.
++ * Written by Wojtek Kaniewski <wojtekka@toxygen.net>
++ *
++ * GNU General Public License.
++ */
++
++#include <linux/types.h>
++#include <linux/mm.h>
++#include <linux/interrupt.h>
++#include <linux/blkdev.h>
++#include <linux/hdreg.h>
++#include <linux/ide.h>
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++
++
++#define UIC0_PR 0xc4
++#define UIC0_TR 0xc5
++#define IRQ 25
++
++static int ide_offsets[IDE_NR_PORTS] = {0, 2, 4, 6, 8, 10, 12, 14, -1, -1};
++
++static u8 magicbox_ide_inb (unsigned long port)
++{
++ return (u8) (readw((void __iomem *) port) >> 8) & 255;
++}
++
++static u16 magicbox_ide_inw (unsigned long port)
++{
++ return (u16) readw((void __iomem *) port);
++}
++
++static void magicbox_ide_insw (unsigned long port, void *addr, u32 count)
++{
++ u16 *ptr;
++
++ for (ptr = addr; count--; ptr++)
++ *ptr = readw((void __iomem *) port);
++}
++
++static u32 magicbox_ide_inl (unsigned long port)
++{
++ return (u32) readl((void __iomem *) port);
++}
++
++static void magicbox_ide_insl (unsigned long port, void *addr, u32 count)
++{
++ u32 *ptr;
++
++ for (ptr = addr; count--; ptr++)
++ *ptr = readl((void __iomem *) port);
++}
++
++static void magicbox_ide_outb (u8 value, unsigned long port)
++{
++ writew(value << 8, (void __iomem *) port);
++}
++
++static void magicbox_ide_outbsync (ide_drive_t *drive, u8 value, unsigned long port)
++{
++ writew(value << 8, (void __iomem *) port);
++}
++
++static void magicbox_ide_outw (u16 value, unsigned long port)
++{
++ writew(value, (void __iomem *) port);
++}
++
++static void magicbox_ide_outsw (unsigned long port, void *addr, u32 count)
++{
++ u16 *ptr;
++
++ for (ptr = addr; count--; ptr++)
++ writew(*ptr, (void __iomem *) port);
++}
++
++static void magicbox_ide_outl (u32 value, unsigned long port)
++{
++ writel(value, (void __iomem *) port);
++}
++
++static void magicbox_ide_outsl (unsigned long port, void *addr, u32 count)
++{
++ u32 *ptr;
++
++ for (ptr = addr; count--; ptr++)
++ writel(*ptr, (void __iomem *) port);
++}
++
++
++static void __init ide_magicbox_register(unsigned long addr,
++ unsigned long caddr, int irq)
++{
++ hw_regs_t hw;
++ ide_hwif_t *hwif;
++
++ memset(&hw, 0, sizeof(hw));
++ ide_setup_ports(&hw, addr, ide_offsets, caddr + 12, 0, NULL,irq);
++
++ if (ide_register_hw(&hw, &hwif) != -1)
++ {
++ printk(KERN_NOTICE "magicbox-ide: Registered IDE-CF driver\n");
++ hwif->mmio = 2;
++ hwif->drives[0].unmask = 1;
++ hwif->OUTB = magicbox_ide_outb;
++ hwif->OUTBSYNC = magicbox_ide_outbsync;
++ hwif->OUTW = magicbox_ide_outw;
++ hwif->OUTL = magicbox_ide_outl;
++ hwif->OUTSW = magicbox_ide_outsw;
++ hwif->OUTSL = magicbox_ide_outsl;
++ hwif->INB = magicbox_ide_inb;
++ hwif->INW = magicbox_ide_inw;
++ hwif->INL = magicbox_ide_inl;
++ hwif->INSW = magicbox_ide_insw;
++ hwif->INSL = magicbox_ide_insl;
++ }
++}
++
++void __init ide_magicbox_init(void)
++{
++ volatile u16 *addr;
++ volatile u16 *caddr;
++
++ /* Turn on PerWE instead of PCIsomething */
++ mtdcr(DCRN_CPC0_PCI_BASE, mfdcr(DCRN_CPC0_PCI_BASE) | (0x80000000L >> 27));
++
++ /* PerCS1 (CF's CS0): base 0xff100000, 16-bit, rw */
++ mtdcr(DCRN_EBC_BASE, 1);
++ mtdcr(DCRN_EBC_BASE + 1, 0xff11a000);
++ mtdcr(DCRN_EBC_BASE, 0x11);
++ mtdcr(DCRN_EBC_BASE + 1, 0x080bd800);
++
++ /* PerCS2 (CF's CS1): base 0xff200000, 16-bit, rw */
++ mtdcr(DCRN_EBC_BASE, 2);
++ mtdcr(DCRN_EBC_BASE + 1, 0xff21a000);
++ mtdcr(DCRN_EBC_BASE, 0x12);
++ mtdcr(DCRN_EBC_BASE + 1, 0x080bd800);
++
++ /* Remap physical address space */
++ addr = ioremap_nocache(0xff100000, 4096);
++ caddr = ioremap_nocache(0xff200000, 4096);
++
++ /* Set interrupt to low-to-high-edge-triggered */
++ mtdcr(UIC0_TR, mfdcr(UIC0_TR) & ~(0x80000000L >> IRQ));
++ mtdcr(UIC0_PR, mfdcr(UIC0_PR) | (0x80000000L >> IRQ));
++
++ ide_magicbox_register((unsigned long)addr, (unsigned long)caddr, IRQ);
++}
++
diff --git a/packages/linux/linux-magicbox-2.6.19.2/100-netfilter_layer7_2.8.patch b/packages/linux/linux-magicbox-2.6.19.2/100-netfilter_layer7_2.8.patch
new file mode 100644
index 0000000000..876423cac7
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/100-netfilter_layer7_2.8.patch
@@ -0,0 +1,2053 @@
+diff -urN linux.old/include/linux/netfilter_ipv4/ip_conntrack.h linux.dev/include/linux/netfilter_ipv4/ip_conntrack.h
+--- linux.old/include/linux/netfilter_ipv4/ip_conntrack.h 2007-01-01 05:17:07.000000000 +0100
++++ linux.dev/include/linux/netfilter_ipv4/ip_conntrack.h 2007-01-01 05:18:48.000000000 +0100
+@@ -127,6 +127,15 @@
+ /* Traversed often, so hopefully in different cacheline to top */
+ /* These are my tuples; original and reply */
+ struct ip_conntrack_tuple_hash tuplehash[IP_CT_DIR_MAX];
++
++#if defined(CONFIG_IP_NF_MATCH_LAYER7) || defined(CONFIG_IP_NF_MATCH_LAYER7_MODULE)
++ struct {
++ char * app_proto; /* e.g. "http". NULL before decision. "unknown" after decision if no match */
++ char * app_data; /* application layer data so far. NULL after match decision */
++ unsigned int app_data_len;
++ } layer7;
++#endif
++
+ };
+
+ struct ip_conntrack_expect
+diff -urN linux.old/include/linux/netfilter_ipv4/ipt_layer7.h linux.dev/include/linux/netfilter_ipv4/ipt_layer7.h
+--- linux.old/include/linux/netfilter_ipv4/ipt_layer7.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/include/linux/netfilter_ipv4/ipt_layer7.h 2007-01-01 05:18:48.000000000 +0100
+@@ -0,0 +1,26 @@
++/*
++ By Matthew Strait <quadong@users.sf.net>, Dec 2003.
++ http://l7-filter.sf.net
++
++ 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.
++ http://www.gnu.org/licenses/gpl.txt
++*/
++
++#ifndef _IPT_LAYER7_H
++#define _IPT_LAYER7_H
++
++#define MAX_PATTERN_LEN 8192
++#define MAX_PROTOCOL_LEN 256
++
++typedef char *(*proc_ipt_search) (char *, char, char *);
++
++struct ipt_layer7_info {
++ char protocol[MAX_PROTOCOL_LEN];
++ char invert:1;
++ char pattern[MAX_PATTERN_LEN];
++};
++
++#endif /* _IPT_LAYER7_H */
+diff -urN linux.old/net/ipv4/netfilter/ip_conntrack_core.c linux.dev/net/ipv4/netfilter/ip_conntrack_core.c
+--- linux.old/net/ipv4/netfilter/ip_conntrack_core.c 2007-01-01 05:17:07.000000000 +0100
++++ linux.dev/net/ipv4/netfilter/ip_conntrack_core.c 2007-01-01 05:18:48.000000000 +0100
+@@ -337,6 +337,13 @@
+ * too. */
+ ip_ct_remove_expectations(ct);
+
++ #if defined(CONFIG_IP_NF_MATCH_LAYER7) || defined(CONFIG_IP_NF_MATCH_LAYER7_MODULE)
++ if(ct->layer7.app_proto)
++ kfree(ct->layer7.app_proto);
++ if(ct->layer7.app_data)
++ kfree(ct->layer7.app_data);
++ #endif
++
+ /* We overload first tuple to link into unconfirmed list. */
+ if (!is_confirmed(ct)) {
+ BUG_ON(list_empty(&ct->tuplehash[IP_CT_DIR_ORIGINAL].list));
+diff -urN linux.old/net/ipv4/netfilter/ip_conntrack_standalone.c linux.dev/net/ipv4/netfilter/ip_conntrack_standalone.c
+--- linux.old/net/ipv4/netfilter/ip_conntrack_standalone.c 2007-01-01 05:17:07.000000000 +0100
++++ linux.dev/net/ipv4/netfilter/ip_conntrack_standalone.c 2007-01-01 05:18:48.000000000 +0100
+@@ -192,6 +192,12 @@
+ return -ENOSPC;
+ #endif
+
++#if defined(CONFIG_IP_NF_MATCH_LAYER7) || defined(CONFIG_IP_NF_MATCH_LAYER7_MODULE)
++ if(conntrack->layer7.app_proto)
++ if (seq_printf(s, "l7proto=%s ",conntrack->layer7.app_proto))
++ return 1;
++#endif
++
+ if (seq_printf(s, "use=%u\n", atomic_read(&conntrack->ct_general.use)))
+ return -ENOSPC;
+
+diff -urN linux.old/net/ipv4/netfilter/ipt_layer7.c linux.dev/net/ipv4/netfilter/ipt_layer7.c
+--- linux.old/net/ipv4/netfilter/ipt_layer7.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/net/ipv4/netfilter/ipt_layer7.c 2007-01-01 05:18:48.000000000 +0100
+@@ -0,0 +1,573 @@
++/*
++ Kernel module to match application layer (OSI layer 7) data in connections.
++
++ http://l7-filter.sf.net
++
++ By Matthew Strait and Ethan Sommer, 2003-2006.
++
++ 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.
++ http://www.gnu.org/licenses/gpl.txt
++
++ Based on ipt_string.c (C) 2000 Emmanuel Roger <winfield@freegates.be>
++ and cls_layer7.c (C) 2003 Matthew Strait, Ethan Sommer, Justin Levandoski
++*/
++
++#include <linux/module.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter_ipv4/ip_conntrack.h>
++#include <linux/proc_fs.h>
++#include <linux/ctype.h>
++#include <net/ip.h>
++#include <net/tcp.h>
++#include <linux/spinlock.h>
++
++#include "regexp/regexp.c"
++
++#include <linux/netfilter_ipv4/ipt_layer7.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++
++MODULE_AUTHOR("Matthew Strait <quadong@users.sf.net>, Ethan Sommer <sommere@users.sf.net>");
++MODULE_LICENSE("GPL");
++MODULE_DESCRIPTION("iptables application layer match module");
++MODULE_VERSION("2.0");
++
++static int maxdatalen = 2048; // this is the default
++module_param(maxdatalen, int, 0444);
++MODULE_PARM_DESC(maxdatalen, "maximum bytes of data looked at by l7-filter");
++
++#ifdef CONFIG_IP_NF_MATCH_LAYER7_DEBUG
++ #define DPRINTK(format,args...) printk(format,##args)
++#else
++ #define DPRINTK(format,args...)
++#endif
++
++#define TOTAL_PACKETS master_conntrack->counters[IP_CT_DIR_ORIGINAL].packets + \
++ master_conntrack->counters[IP_CT_DIR_REPLY].packets
++
++/* Number of packets whose data we look at.
++This can be modified through /proc/net/layer7_numpackets */
++static int num_packets = 10;
++
++static struct pattern_cache {
++ char * regex_string;
++ regexp * pattern;
++ struct pattern_cache * next;
++} * first_pattern_cache = NULL;
++
++/* I'm new to locking. Here are my assumptions:
++
++- No one will write to /proc/net/layer7_numpackets over and over very fast;
++ if they did, nothing awful would happen.
++
++- This code will never be processing the same packet twice at the same time,
++ because iptables rules are traversed in order.
++
++- It doesn't matter if two packets from different connections are in here at
++ the same time, because they don't share any data.
++
++- It _does_ matter if two packets from the same connection (or one from a
++ master and one from its child) are here at the same time. In this case,
++ we have to protect the conntracks and the list of compiled patterns.
++*/
++DEFINE_RWLOCK(ct_lock);
++DEFINE_SPINLOCK(list_lock);
++
++#ifdef CONFIG_IP_NF_MATCH_LAYER7_DEBUG
++/* Converts an unfriendly string into a friendly one by
++replacing unprintables with periods and all whitespace with " ". */
++static char * friendly_print(unsigned char * s)
++{
++ char * f = kmalloc(strlen(s) + 1, GFP_ATOMIC);
++ int i;
++
++ if(!f) {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in friendly_print, bailing.\n");
++ return NULL;
++ }
++
++ for(i = 0; i < strlen(s); i++){
++ if(isprint(s[i]) && s[i] < 128) f[i] = s[i];
++ else if(isspace(s[i])) f[i] = ' ';
++ else f[i] = '.';
++ }
++ f[i] = '\0';
++ return f;
++}
++
++static char dec2hex(int i)
++{
++ switch (i) {
++ case 0 ... 9:
++ return (char)(i + '0');
++ break;
++ case 10 ... 15:
++ return (char)(i - 10 + 'a');
++ break;
++ default:
++ if (net_ratelimit())
++ printk("Problem in dec2hex\n");
++ return '\0';
++ }
++}
++
++static char * hex_print(unsigned char * s)
++{
++ char * g = kmalloc(strlen(s)*3 + 1, GFP_ATOMIC);
++ int i;
++
++ if(!g) {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in hex_print, bailing.\n");
++ return NULL;
++ }
++
++ for(i = 0; i < strlen(s); i++) {
++ g[i*3 ] = dec2hex(s[i]/16);
++ g[i*3 + 1] = dec2hex(s[i]%16);
++ g[i*3 + 2] = ' ';
++ }
++ g[i*3] = '\0';
++
++ return g;
++}
++#endif // DEBUG
++
++/* Use instead of regcomp. As we expect to be seeing the same regexps over and
++over again, it make sense to cache the results. */
++static regexp * compile_and_cache(char * regex_string, char * protocol)
++{
++ struct pattern_cache * node = first_pattern_cache;
++ struct pattern_cache * last_pattern_cache = first_pattern_cache;
++ struct pattern_cache * tmp;
++ unsigned int len;
++
++ while (node != NULL) {
++ if (!strcmp(node->regex_string, regex_string))
++ return node->pattern;
++
++ last_pattern_cache = node;/* points at the last non-NULL node */
++ node = node->next;
++ }
++
++ /* If we reach the end of the list, then we have not yet cached
++ the pattern for this regex. Let's do that now.
++ Be paranoid about running out of memory to avoid list corruption. */
++ tmp = kmalloc(sizeof(struct pattern_cache), GFP_ATOMIC);
++
++ if(!tmp) {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in compile_and_cache, bailing.\n");
++ return NULL;
++ }
++
++ tmp->regex_string = kmalloc(strlen(regex_string) + 1, GFP_ATOMIC);
++ tmp->pattern = kmalloc(sizeof(struct regexp), GFP_ATOMIC);
++ tmp->next = NULL;
++
++ if(!tmp->regex_string || !tmp->pattern) {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in compile_and_cache, bailing.\n");
++ kfree(tmp->regex_string);
++ kfree(tmp->pattern);
++ kfree(tmp);
++ return NULL;
++ }
++
++ /* Ok. The new node is all ready now. */
++ node = tmp;
++
++ if(first_pattern_cache == NULL) /* list is empty */
++ first_pattern_cache = node; /* make node the beginning */
++ else
++ last_pattern_cache->next = node; /* attach node to the end */
++
++ /* copy the string and compile the regex */
++ len = strlen(regex_string);
++ DPRINTK("About to compile this: \"%s\"\n", regex_string);
++ node->pattern = regcomp(regex_string, &len);
++ if ( !node->pattern ) {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: Error compiling regexp \"%s\" (%s)\n", regex_string, protocol);
++ /* pattern is now cached as NULL, so we won't try again. */
++ }
++
++ strcpy(node->regex_string, regex_string);
++ return node->pattern;
++}
++
++static int can_handle(const struct sk_buff *skb)
++{
++ if(!skb->nh.iph) /* not IP */
++ return 0;
++ if(skb->nh.iph->protocol != IPPROTO_TCP &&
++ skb->nh.iph->protocol != IPPROTO_UDP &&
++ skb->nh.iph->protocol != IPPROTO_ICMP)
++ return 0;
++ return 1;
++}
++
++/* Returns offset the into the skb->data that the application data starts */
++static int app_data_offset(const struct sk_buff *skb)
++{
++ /* In case we are ported somewhere (ebtables?) where skb->nh.iph
++ isn't set, this can be gotten from 4*(skb->data[0] & 0x0f) as well. */
++ int ip_hl = 4*skb->nh.iph->ihl;
++
++ if( skb->nh.iph->protocol == IPPROTO_TCP ) {
++ /* 12 == offset into TCP header for the header length field.
++ Can't get this with skb->h.th->doff because the tcphdr
++ struct doesn't get set when routing (this is confirmed to be
++ true in Netfilter as well as QoS.) */
++ int tcp_hl = 4*(skb->data[ip_hl + 12] >> 4);
++
++ return ip_hl + tcp_hl;
++ } else if( skb->nh.iph->protocol == IPPROTO_UDP ) {
++ return ip_hl + 8; /* UDP header is always 8 bytes */
++ } else if( skb->nh.iph->protocol == IPPROTO_ICMP ) {
++ return ip_hl + 8; /* ICMP header is 8 bytes */
++ } else {
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: tried to handle unknown protocol!\n");
++ return ip_hl + 8; /* something reasonable */
++ }
++}
++
++/* handles whether there's a match when we aren't appending data anymore */
++static int match_no_append(struct ip_conntrack * conntrack, struct ip_conntrack * master_conntrack,
++ enum ip_conntrack_info ctinfo, enum ip_conntrack_info master_ctinfo,
++ struct ipt_layer7_info * info)
++{
++ /* If we're in here, throw the app data away */
++ write_lock(&ct_lock);
++ if(master_conntrack->layer7.app_data != NULL) {
++
++ #ifdef CONFIG_IP_NF_MATCH_LAYER7_DEBUG
++ if(!master_conntrack->layer7.app_proto) {
++ char * f = friendly_print(master_conntrack->layer7.app_data);
++ char * g = hex_print(master_conntrack->layer7.app_data);
++ DPRINTK("\nl7-filter gave up after %d bytes (%d packets):\n%s\n",
++ strlen(f), TOTAL_PACKETS, f);
++ kfree(f);
++ DPRINTK("In hex: %s\n", g);
++ kfree(g);
++ }
++ #endif
++
++ kfree(master_conntrack->layer7.app_data);
++ master_conntrack->layer7.app_data = NULL; /* don't free again */
++ }
++ write_unlock(&ct_lock);
++
++ if(master_conntrack->layer7.app_proto){
++ /* Here child connections set their .app_proto (for /proc/net/ip_conntrack) */
++ write_lock(&ct_lock);
++ if(!conntrack->layer7.app_proto) {
++ conntrack->layer7.app_proto = kmalloc(strlen(master_conntrack->layer7.app_proto)+1, GFP_ATOMIC);
++ if(!conntrack->layer7.app_proto){
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in match_no_append, bailing.\n");
++ write_unlock(&ct_lock);
++ return 1;
++ }
++ strcpy(conntrack->layer7.app_proto, master_conntrack->layer7.app_proto);
++ }
++ write_unlock(&ct_lock);
++
++ return (!strcmp(master_conntrack->layer7.app_proto, info->protocol));
++ }
++ else {
++ /* If not classified, set to "unknown" to distinguish from
++ connections that are still being tested. */
++ write_lock(&ct_lock);
++ master_conntrack->layer7.app_proto = kmalloc(strlen("unknown")+1, GFP_ATOMIC);
++ if(!master_conntrack->layer7.app_proto){
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in match_no_append, bailing.\n");
++ write_unlock(&ct_lock);
++ return 1;
++ }
++ strcpy(master_conntrack->layer7.app_proto, "unknown");
++ write_unlock(&ct_lock);
++ return 0;
++ }
++}
++
++/* add the new app data to the conntrack. Return number of bytes added. */
++static int add_data(struct ip_conntrack * master_conntrack,
++ char * app_data, int appdatalen)
++{
++ int length = 0, i;
++ int oldlength = master_conntrack->layer7.app_data_len;
++
++ // This is a fix for a race condition by Deti Fliegl. However, I'm not
++ // clear on whether the race condition exists or whether this really
++ // fixes it. I might just be being dense... Anyway, if it's not really
++ // a fix, all it does is waste a very small amount of time.
++ if(!master_conntrack->layer7.app_data) return 0;
++
++ /* Strip nulls. Make everything lower case (our regex lib doesn't
++ do case insensitivity). Add it to the end of the current data. */
++ for(i = 0; i < maxdatalen-oldlength-1 &&
++ i < appdatalen; i++) {
++ if(app_data[i] != '\0') {
++ master_conntrack->layer7.app_data[length+oldlength] =
++ /* the kernel version of tolower mungs 'upper ascii' */
++ isascii(app_data[i])? tolower(app_data[i]) : app_data[i];
++ length++;
++ }
++ }
++
++ master_conntrack->layer7.app_data[length+oldlength] = '\0';
++ master_conntrack->layer7.app_data_len = length + oldlength;
++
++ return length;
++}
++
++/* Returns true on match and false otherwise. */
++static int match(const struct sk_buff *skbin,
++ const struct net_device *in, const struct net_device *out,
++ const struct xt_match *match, const void *matchinfo,
++ int offset, unsigned int protoff, int *hotdrop)
++{
++ /* sidestep const without getting a compiler warning... */
++ struct sk_buff * skb = (struct sk_buff *)skbin;
++
++ struct ipt_layer7_info * info = (struct ipt_layer7_info *)matchinfo;
++ enum ip_conntrack_info master_ctinfo, ctinfo;
++ struct ip_conntrack *master_conntrack, *conntrack;
++ unsigned char * app_data;
++ unsigned int pattern_result, appdatalen;
++ regexp * comppattern;
++
++ if(!can_handle(skb)){
++ DPRINTK("layer7: This is some protocol I can't handle.\n");
++ return info->invert;
++ }
++
++ /* Treat parent & all its children together as one connection, except
++ for the purpose of setting conntrack->layer7.app_proto in the actual
++ connection. This makes /proc/net/ip_conntrack more satisfying. */
++ if(!(conntrack = ip_conntrack_get((struct sk_buff *)skb, &ctinfo)) ||
++ !(master_conntrack = ip_conntrack_get((struct sk_buff *)skb, &master_ctinfo))) {
++ //DPRINTK("layer7: packet is not from a known connection, giving up.\n");
++ return info->invert;
++ }
++
++ /* Try to get a master conntrack (and its master etc) for FTP, etc. */
++ while (master_ct(master_conntrack) != NULL)
++ master_conntrack = master_ct(master_conntrack);
++
++ /* if we've classified it or seen too many packets */
++ if(TOTAL_PACKETS > num_packets ||
++ master_conntrack->layer7.app_proto) {
++
++ pattern_result = match_no_append(conntrack, master_conntrack, ctinfo, master_ctinfo, info);
++
++ /* skb->cb[0] == seen. Avoid doing things twice if there are two l7
++ rules. I'm not sure that using cb for this purpose is correct, although
++ it says "put your private variables there". But it doesn't look like it
++ is being used for anything else in the skbs that make it here. How can
++ I write to cb without making the compiler angry? */
++ skb->cb[0] = 1; /* marking it seen here is probably irrelevant, but consistant */
++
++ return (pattern_result ^ info->invert);
++ }
++
++ if(skb_is_nonlinear(skb)){
++ if(skb_linearize(skb) != 0){
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: failed to linearize packet, bailing.\n");
++ return info->invert;
++ }
++ }
++
++ /* now that the skb is linearized, it's safe to set these. */
++ app_data = skb->data + app_data_offset(skb);
++ appdatalen = skb->tail - app_data;
++
++ spin_lock_bh(&list_lock);
++ /* the return value gets checked later, when we're ready to use it */
++ comppattern = compile_and_cache(info->pattern, info->protocol);
++ spin_unlock_bh(&list_lock);
++
++ /* On the first packet of a connection, allocate space for app data */
++ write_lock(&ct_lock);
++ if(TOTAL_PACKETS == 1 && !skb->cb[0] && !master_conntrack->layer7.app_data) {
++ master_conntrack->layer7.app_data = kmalloc(maxdatalen, GFP_ATOMIC);
++ if(!master_conntrack->layer7.app_data){
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in match, bailing.\n");
++ write_unlock(&ct_lock);
++ return info->invert;
++ }
++
++ master_conntrack->layer7.app_data[0] = '\0';
++ }
++ write_unlock(&ct_lock);
++
++ /* Can be here, but unallocated, if numpackets is increased near
++ the beginning of a connection */
++ if(master_conntrack->layer7.app_data == NULL)
++ return (info->invert); /* unmatched */
++
++ if(!skb->cb[0]){
++ int newbytes;
++ write_lock(&ct_lock);
++ newbytes = add_data(master_conntrack, app_data, appdatalen);
++ write_unlock(&ct_lock);
++
++ if(newbytes == 0) { /* didn't add any data */
++ skb->cb[0] = 1;
++ /* Didn't match before, not going to match now */
++ return info->invert;
++ }
++ }
++
++ /* If looking for "unknown", then never match. "Unknown" means that
++ we've given up; we're still trying with these packets. */
++ read_lock(&ct_lock);
++ if(!strcmp(info->protocol, "unknown")) {
++ pattern_result = 0;
++ /* If the regexp failed to compile, don't bother running it */
++ } else if(comppattern && regexec(comppattern, master_conntrack->layer7.app_data)) {
++ DPRINTK("layer7: matched %s\n", info->protocol);
++ pattern_result = 1;
++ } else pattern_result = 0;
++ read_unlock(&ct_lock);
++
++ if(pattern_result) {
++ write_lock(&ct_lock);
++ master_conntrack->layer7.app_proto = kmalloc(strlen(info->protocol)+1, GFP_ATOMIC);
++ if(!master_conntrack->layer7.app_proto){
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in match, bailing.\n");
++ write_unlock(&ct_lock);
++ return (pattern_result ^ info->invert);
++ }
++ strcpy(master_conntrack->layer7.app_proto, info->protocol);
++ write_unlock(&ct_lock);
++ }
++
++ /* mark the packet seen */
++ skb->cb[0] = 1;
++
++ return (pattern_result ^ info->invert);
++}
++
++static struct ipt_match layer7_match = {
++ .name = "layer7",
++ .match = &match,
++ .matchsize = sizeof(struct ipt_layer7_info),
++ .me = THIS_MODULE
++};
++
++/* taken from drivers/video/modedb.c */
++static int my_atoi(const char *s)
++{
++ int val = 0;
++
++ for (;; s++) {
++ switch (*s) {
++ case '0'...'9':
++ val = 10*val+(*s-'0');
++ break;
++ default:
++ return val;
++ }
++ }
++}
++
++/* write out num_packets to userland. */
++static int layer7_read_proc(char* page, char ** start, off_t off, int count,
++ int* eof, void * data)
++{
++ if(num_packets > 99 && net_ratelimit())
++ printk(KERN_ERR "layer7: NOT REACHED. num_packets too big\n");
++
++ page[0] = num_packets/10 + '0';
++ page[1] = num_packets%10 + '0';
++ page[2] = '\n';
++ page[3] = '\0';
++
++ *eof=1;
++
++ return 3;
++}
++
++/* Read in num_packets from userland */
++static int layer7_write_proc(struct file* file, const char* buffer,
++ unsigned long count, void *data)
++{
++ char * foo = kmalloc(count, GFP_ATOMIC);
++
++ if(!foo){
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory, bailing. num_packets unchanged.\n");
++ return count;
++ }
++
++ if(copy_from_user(foo, buffer, count)) {
++ return -EFAULT;
++ }
++
++
++ num_packets = my_atoi(foo);
++ kfree (foo);
++
++ /* This has an arbitrary limit to make the math easier. I'm lazy.
++ But anyway, 99 is a LOT! If you want more, you're doing it wrong! */
++ if(num_packets > 99) {
++ printk(KERN_WARNING "layer7: num_packets can't be > 99.\n");
++ num_packets = 99;
++ } else if(num_packets < 1) {
++ printk(KERN_WARNING "layer7: num_packets can't be < 1.\n");
++ num_packets = 1;
++ }
++
++ return count;
++}
++
++/* register the proc file */
++static void layer7_init_proc(void)
++{
++ struct proc_dir_entry* entry;
++ entry = create_proc_entry("layer7_numpackets", 0644, proc_net);
++ entry->read_proc = layer7_read_proc;
++ entry->write_proc = layer7_write_proc;
++}
++
++static void layer7_cleanup_proc(void)
++{
++ remove_proc_entry("layer7_numpackets", proc_net);
++}
++
++static int __init ipt_layer7_init(void)
++{
++ need_conntrack();
++
++ layer7_init_proc();
++ if(maxdatalen < 1) {
++ printk(KERN_WARNING "layer7: maxdatalen can't be < 1, using 1\n");
++ maxdatalen = 1;
++ }
++ /* This is not a hard limit. It's just here to prevent people from
++ bringing their slow machines to a grinding halt. */
++ else if(maxdatalen > 65536) {
++ printk(KERN_WARNING "layer7: maxdatalen can't be > 65536, using 65536\n");
++ maxdatalen = 65536;
++ }
++ return ipt_register_match(&layer7_match);
++}
++
++static void __exit ipt_layer7_fini(void)
++{
++ layer7_cleanup_proc();
++ ipt_unregister_match(&layer7_match);
++}
++
++module_init(ipt_layer7_init);
++module_exit(ipt_layer7_fini);
+diff -urN linux.old/net/ipv4/netfilter/Kconfig linux.dev/net/ipv4/netfilter/Kconfig
+--- linux.old/net/ipv4/netfilter/Kconfig 2007-01-01 05:17:07.000000000 +0100
++++ linux.dev/net/ipv4/netfilter/Kconfig 2007-01-01 05:18:48.000000000 +0100
+@@ -248,6 +248,24 @@
+
+ To compile it as a module, choose M here. If unsure, say N.
+
++config IP_NF_MATCH_LAYER7
++ tristate "Layer 7 match support (EXPERIMENTAL)"
++ depends on IP_NF_IPTABLES && IP_NF_CT_ACCT && IP_NF_CONNTRACK && EXPERIMENTAL
++ help
++ Say Y if you want to be able to classify connections (and their
++ packets) based on regular expression matching of their application
++ layer data. This is one way to classify applications such as
++ peer-to-peer filesharing systems that do not always use the same
++ port.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
++config IP_NF_MATCH_LAYER7_DEBUG
++ bool "Layer 7 debugging output"
++ depends on IP_NF_MATCH_LAYER7
++ help
++ Say Y to get lots of debugging output.
++
+ config IP_NF_MATCH_TOS
+ tristate "TOS match support"
+ depends on IP_NF_IPTABLES
+diff -urN linux.old/net/ipv4/netfilter/Makefile linux.dev/net/ipv4/netfilter/Makefile
+--- linux.old/net/ipv4/netfilter/Makefile 2007-01-01 05:17:07.000000000 +0100
++++ linux.dev/net/ipv4/netfilter/Makefile 2007-01-01 05:18:48.000000000 +0100
+@@ -63,6 +63,8 @@
+ obj-$(CONFIG_IP_NF_MATCH_TTL) += ipt_ttl.o
+ obj-$(CONFIG_IP_NF_MATCH_ADDRTYPE) += ipt_addrtype.o
+
++obj-$(CONFIG_IP_NF_MATCH_LAYER7) += ipt_layer7.o
++
+ # targets
+ obj-$(CONFIG_IP_NF_TARGET_REJECT) += ipt_REJECT.o
+ obj-$(CONFIG_IP_NF_TARGET_TOS) += ipt_TOS.o
+diff -urN linux.old/net/ipv4/netfilter/regexp/regexp.c linux.dev/net/ipv4/netfilter/regexp/regexp.c
+--- linux.old/net/ipv4/netfilter/regexp/regexp.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/net/ipv4/netfilter/regexp/regexp.c 2007-01-01 05:18:48.000000000 +0100
+@@ -0,0 +1,1197 @@
++/*
++ * regcomp and regexec -- regsub and regerror are elsewhere
++ * @(#)regexp.c 1.3 of 18 April 87
++ *
++ * Copyright (c) 1986 by University of Toronto.
++ * Written by Henry Spencer. Not derived from licensed software.
++ *
++ * Permission is granted to anyone to use this software for any
++ * purpose on any computer system, and to redistribute it freely,
++ * subject to the following restrictions:
++ *
++ * 1. The author is not responsible for the consequences of use of
++ * this software, no matter how awful, even if they arise
++ * from defects in it.
++ *
++ * 2. The origin of this software must not be misrepresented, either
++ * by explicit claim or by omission.
++ *
++ * 3. Altered versions must be plainly marked as such, and must not
++ * be misrepresented as being the original software.
++ *
++ * Beware that some of this code is subtly aware of the way operator
++ * precedence is structured in regular expressions. Serious changes in
++ * regular-expression syntax might require a total rethink.
++ *
++ * This code was modified by Ethan Sommer to work within the kernel
++ * (it now uses kmalloc etc..)
++ *
++ * Modified slightly by Matthew Strait to use more modern C.
++ */
++
++#include "regexp.h"
++#include "regmagic.h"
++
++/* added by ethan and matt. Lets it work in both kernel and user space.
++(So iptables can use it, for instance.) Yea, it goes both ways... */
++#if __KERNEL__
++ #define malloc(foo) kmalloc(foo,GFP_ATOMIC)
++#else
++ #define printk(format,args...) printf(format,##args)
++#endif
++
++void regerror(char * s)
++{
++ printk("<3>Regexp: %s\n", s);
++ /* NOTREACHED */
++}
++
++/*
++ * The "internal use only" fields in regexp.h are present to pass info from
++ * compile to execute that permits the execute phase to run lots faster on
++ * simple cases. They are:
++ *
++ * regstart char that must begin a match; '\0' if none obvious
++ * reganch is the match anchored (at beginning-of-line only)?
++ * regmust string (pointer into program) that match must include, or NULL
++ * regmlen length of regmust string
++ *
++ * Regstart and reganch permit very fast decisions on suitable starting points
++ * for a match, cutting down the work a lot. Regmust permits fast rejection
++ * of lines that cannot possibly match. The regmust tests are costly enough
++ * that regcomp() supplies a regmust only if the r.e. contains something
++ * potentially expensive (at present, the only such thing detected is * or +
++ * at the start of the r.e., which can involve a lot of backup). Regmlen is
++ * supplied because the test in regexec() needs it and regcomp() is computing
++ * it anyway.
++ */
++
++/*
++ * Structure for regexp "program". This is essentially a linear encoding
++ * of a nondeterministic finite-state machine (aka syntax charts or
++ * "railroad normal form" in parsing technology). Each node is an opcode
++ * plus a "next" pointer, possibly plus an operand. "Next" pointers of
++ * all nodes except BRANCH implement concatenation; a "next" pointer with
++ * a BRANCH on both ends of it is connecting two alternatives. (Here we
++ * have one of the subtle syntax dependencies: an individual BRANCH (as
++ * opposed to a collection of them) is never concatenated with anything
++ * because of operator precedence.) The operand of some types of node is
++ * a literal string; for others, it is a node leading into a sub-FSM. In
++ * particular, the operand of a BRANCH node is the first node of the branch.
++ * (NB this is *not* a tree structure: the tail of the branch connects
++ * to the thing following the set of BRANCHes.) The opcodes are:
++ */
++
++/* definition number opnd? meaning */
++#define END 0 /* no End of program. */
++#define BOL 1 /* no Match "" at beginning of line. */
++#define EOL 2 /* no Match "" at end of line. */
++#define ANY 3 /* no Match any one character. */
++#define ANYOF 4 /* str Match any character in this string. */
++#define ANYBUT 5 /* str Match any character not in this string. */
++#define BRANCH 6 /* node Match this alternative, or the next... */
++#define BACK 7 /* no Match "", "next" ptr points backward. */
++#define EXACTLY 8 /* str Match this string. */
++#define NOTHING 9 /* no Match empty string. */
++#define STAR 10 /* node Match this (simple) thing 0 or more times. */
++#define PLUS 11 /* node Match this (simple) thing 1 or more times. */
++#define OPEN 20 /* no Mark this point in input as start of #n. */
++ /* OPEN+1 is number 1, etc. */
++#define CLOSE 30 /* no Analogous to OPEN. */
++
++/*
++ * Opcode notes:
++ *
++ * BRANCH The set of branches constituting a single choice are hooked
++ * together with their "next" pointers, since precedence prevents
++ * anything being concatenated to any individual branch. The
++ * "next" pointer of the last BRANCH in a choice points to the
++ * thing following the whole choice. This is also where the
++ * final "next" pointer of each individual branch points; each
++ * branch starts with the operand node of a BRANCH node.
++ *
++ * BACK Normal "next" pointers all implicitly point forward; BACK
++ * exists to make loop structures possible.
++ *
++ * STAR,PLUS '?', and complex '*' and '+', are implemented as circular
++ * BRANCH structures using BACK. Simple cases (one character
++ * per match) are implemented with STAR and PLUS for speed
++ * and to minimize recursive plunges.
++ *
++ * OPEN,CLOSE ...are numbered at compile time.
++ */
++
++/*
++ * A node is one char of opcode followed by two chars of "next" pointer.
++ * "Next" pointers are stored as two 8-bit pieces, high order first. The
++ * value is a positive offset from the opcode of the node containing it.
++ * An operand, if any, simply follows the node. (Note that much of the
++ * code generation knows about this implicit relationship.)
++ *
++ * Using two bytes for the "next" pointer is vast overkill for most things,
++ * but allows patterns to get big without disasters.
++ */
++#define OP(p) (*(p))
++#define NEXT(p) (((*((p)+1)&0377)<<8) + (*((p)+2)&0377))
++#define OPERAND(p) ((p) + 3)
++
++/*
++ * See regmagic.h for one further detail of program structure.
++ */
++
++
++/*
++ * Utility definitions.
++ */
++#ifndef CHARBITS
++#define UCHARAT(p) ((int)*(unsigned char *)(p))
++#else
++#define UCHARAT(p) ((int)*(p)&CHARBITS)
++#endif
++
++#define FAIL(m) { regerror(m); return(NULL); }
++#define ISMULT(c) ((c) == '*' || (c) == '+' || (c) == '?')
++#define META "^$.[()|?+*\\"
++
++/*
++ * Flags to be passed up and down.
++ */
++#define HASWIDTH 01 /* Known never to match null string. */
++#define SIMPLE 02 /* Simple enough to be STAR/PLUS operand. */
++#define SPSTART 04 /* Starts with * or +. */
++#define WORST 0 /* Worst case. */
++
++/*
++ * Global work variables for regcomp().
++ */
++struct match_globals {
++char *reginput; /* String-input pointer. */
++char *regbol; /* Beginning of input, for ^ check. */
++char **regstartp; /* Pointer to startp array. */
++char **regendp; /* Ditto for endp. */
++char *regparse; /* Input-scan pointer. */
++int regnpar; /* () count. */
++char regdummy;
++char *regcode; /* Code-emit pointer; &regdummy = don't. */
++long regsize; /* Code size. */
++};
++
++/*
++ * Forward declarations for regcomp()'s friends.
++ */
++#ifndef STATIC
++#define STATIC static
++#endif
++STATIC char *reg(struct match_globals *g, int paren,int *flagp);
++STATIC char *regbranch(struct match_globals *g, int *flagp);
++STATIC char *regpiece(struct match_globals *g, int *flagp);
++STATIC char *regatom(struct match_globals *g, int *flagp);
++STATIC char *regnode(struct match_globals *g, char op);
++STATIC char *regnext(struct match_globals *g, char *p);
++STATIC void regc(struct match_globals *g, char b);
++STATIC void reginsert(struct match_globals *g, char op, char *opnd);
++STATIC void regtail(struct match_globals *g, char *p, char *val);
++STATIC void regoptail(struct match_globals *g, char *p, char *val);
++
++
++__kernel_size_t my_strcspn(const char *s1,const char *s2)
++{
++ char *scan1;
++ char *scan2;
++ int count;
++
++ count = 0;
++ for (scan1 = (char *)s1; *scan1 != '\0'; scan1++) {
++ for (scan2 = (char *)s2; *scan2 != '\0';) /* ++ moved down. */
++ if (*scan1 == *scan2++)
++ return(count);
++ count++;
++ }
++ return(count);
++}
++
++/*
++ - regcomp - compile a regular expression into internal code
++ *
++ * We can't allocate space until we know how big the compiled form will be,
++ * but we can't compile it (and thus know how big it is) until we've got a
++ * place to put the code. So we cheat: we compile it twice, once with code
++ * generation turned off and size counting turned on, and once "for real".
++ * This also means that we don't allocate space until we are sure that the
++ * thing really will compile successfully, and we never have to move the
++ * code and thus invalidate pointers into it. (Note that it has to be in
++ * one piece because free() must be able to free it all.)
++ *
++ * Beware that the optimization-preparation code in here knows about some
++ * of the structure of the compiled regexp.
++ */
++regexp *
++regcomp(char *exp,int *patternsize)
++{
++ register regexp *r;
++ register char *scan;
++ register char *longest;
++ register int len;
++ int flags;
++ struct match_globals g;
++
++ /* commented out by ethan
++ extern char *malloc();
++ */
++
++ if (exp == NULL)
++ FAIL("NULL argument");
++
++ /* First pass: determine size, legality. */
++ g.regparse = exp;
++ g.regnpar = 1;
++ g.regsize = 0L;
++ g.regcode = &g.regdummy;
++ regc(&g, MAGIC);
++ if (reg(&g, 0, &flags) == NULL)
++ return(NULL);
++
++ /* Small enough for pointer-storage convention? */
++ if (g.regsize >= 32767L) /* Probably could be 65535L. */
++ FAIL("regexp too big");
++
++ /* Allocate space. */
++ *patternsize=sizeof(regexp) + (unsigned)g.regsize;
++ r = (regexp *)malloc(sizeof(regexp) + (unsigned)g.regsize);
++ if (r == NULL)
++ FAIL("out of space");
++
++ /* Second pass: emit code. */
++ g.regparse = exp;
++ g.regnpar = 1;
++ g.regcode = r->program;
++ regc(&g, MAGIC);
++ if (reg(&g, 0, &flags) == NULL)
++ return(NULL);
++
++ /* Dig out information for optimizations. */
++ r->regstart = '\0'; /* Worst-case defaults. */
++ r->reganch = 0;
++ r->regmust = NULL;
++ r->regmlen = 0;
++ scan = r->program+1; /* First BRANCH. */
++ if (OP(regnext(&g, scan)) == END) { /* Only one top-level choice. */
++ scan = OPERAND(scan);
++
++ /* Starting-point info. */
++ if (OP(scan) == EXACTLY)
++ r->regstart = *OPERAND(scan);
++ else if (OP(scan) == BOL)
++ r->reganch++;
++
++ /*
++ * If there's something expensive in the r.e., find the
++ * longest literal string that must appear and make it the
++ * regmust. Resolve ties in favor of later strings, since
++ * the regstart check works with the beginning of the r.e.
++ * and avoiding duplication strengthens checking. Not a
++ * strong reason, but sufficient in the absence of others.
++ */
++ if (flags&SPSTART) {
++ longest = NULL;
++ len = 0;
++ for (; scan != NULL; scan = regnext(&g, scan))
++ if (OP(scan) == EXACTLY && strlen(OPERAND(scan)) >= len) {
++ longest = OPERAND(scan);
++ len = strlen(OPERAND(scan));
++ }
++ r->regmust = longest;
++ r->regmlen = len;
++ }
++ }
++
++ return(r);
++}
++
++/*
++ - reg - regular expression, i.e. main body or parenthesized thing
++ *
++ * Caller must absorb opening parenthesis.
++ *
++ * Combining parenthesis handling with the base level of regular expression
++ * is a trifle forced, but the need to tie the tails of the branches to what
++ * follows makes it hard to avoid.
++ */
++static char *
++reg(struct match_globals *g, int paren, int *flagp /* Parenthesized? */ )
++{
++ register char *ret;
++ register char *br;
++ register char *ender;
++ register int parno = 0; /* 0 makes gcc happy */
++ int flags;
++
++ *flagp = HASWIDTH; /* Tentatively. */
++
++ /* Make an OPEN node, if parenthesized. */
++ if (paren) {
++ if (g->regnpar >= NSUBEXP)
++ FAIL("too many ()");
++ parno = g->regnpar;
++ g->regnpar++;
++ ret = regnode(g, OPEN+parno);
++ } else
++ ret = NULL;
++
++ /* Pick up the branches, linking them together. */
++ br = regbranch(g, &flags);
++ if (br == NULL)
++ return(NULL);
++ if (ret != NULL)
++ regtail(g, ret, br); /* OPEN -> first. */
++ else
++ ret = br;
++ if (!(flags&HASWIDTH))
++ *flagp &= ~HASWIDTH;
++ *flagp |= flags&SPSTART;
++ while (*g->regparse == '|') {
++ g->regparse++;
++ br = regbranch(g, &flags);
++ if (br == NULL)
++ return(NULL);
++ regtail(g, ret, br); /* BRANCH -> BRANCH. */
++ if (!(flags&HASWIDTH))
++ *flagp &= ~HASWIDTH;
++ *flagp |= flags&SPSTART;
++ }
++
++ /* Make a closing node, and hook it on the end. */
++ ender = regnode(g, (paren) ? CLOSE+parno : END);
++ regtail(g, ret, ender);
++
++ /* Hook the tails of the branches to the closing node. */
++ for (br = ret; br != NULL; br = regnext(g, br))
++ regoptail(g, br, ender);
++
++ /* Check for proper termination. */
++ if (paren && *g->regparse++ != ')') {
++ FAIL("unmatched ()");
++ } else if (!paren && *g->regparse != '\0') {
++ if (*g->regparse == ')') {
++ FAIL("unmatched ()");
++ } else
++ FAIL("junk on end"); /* "Can't happen". */
++ /* NOTREACHED */
++ }
++
++ return(ret);
++}
++
++/*
++ - regbranch - one alternative of an | operator
++ *
++ * Implements the concatenation operator.
++ */
++static char *
++regbranch(struct match_globals *g, int *flagp)
++{
++ register char *ret;
++ register char *chain;
++ register char *latest;
++ int flags;
++
++ *flagp = WORST; /* Tentatively. */
++
++ ret = regnode(g, BRANCH);
++ chain = NULL;
++ while (*g->regparse != '\0' && *g->regparse != '|' && *g->regparse != ')') {
++ latest = regpiece(g, &flags);
++ if (latest == NULL)
++ return(NULL);
++ *flagp |= flags&HASWIDTH;
++ if (chain == NULL) /* First piece. */
++ *flagp |= flags&SPSTART;
++ else
++ regtail(g, chain, latest);
++ chain = latest;
++ }
++ if (chain == NULL) /* Loop ran zero times. */
++ (void) regnode(g, NOTHING);
++
++ return(ret);
++}
++
++/*
++ - regpiece - something followed by possible [*+?]
++ *
++ * Note that the branching code sequences used for ? and the general cases
++ * of * and + are somewhat optimized: they use the same NOTHING node as
++ * both the endmarker for their branch list and the body of the last branch.
++ * It might seem that this node could be dispensed with entirely, but the
++ * endmarker role is not redundant.
++ */
++static char *
++regpiece(struct match_globals *g, int *flagp)
++{
++ register char *ret;
++ register char op;
++ register char *next;
++ int flags;
++
++ ret = regatom(g, &flags);
++ if (ret == NULL)
++ return(NULL);
++
++ op = *g->regparse;
++ if (!ISMULT(op)) {
++ *flagp = flags;
++ return(ret);
++ }
++
++ if (!(flags&HASWIDTH) && op != '?')
++ FAIL("*+ operand could be empty");
++ *flagp = (op != '+') ? (WORST|SPSTART) : (WORST|HASWIDTH);
++
++ if (op == '*' && (flags&SIMPLE))
++ reginsert(g, STAR, ret);
++ else if (op == '*') {
++ /* Emit x* as (x&|), where & means "self". */
++ reginsert(g, BRANCH, ret); /* Either x */
++ regoptail(g, ret, regnode(g, BACK)); /* and loop */
++ regoptail(g, ret, ret); /* back */
++ regtail(g, ret, regnode(g, BRANCH)); /* or */
++ regtail(g, ret, regnode(g, NOTHING)); /* null. */
++ } else if (op == '+' && (flags&SIMPLE))
++ reginsert(g, PLUS, ret);
++ else if (op == '+') {
++ /* Emit x+ as x(&|), where & means "self". */
++ next = regnode(g, BRANCH); /* Either */
++ regtail(g, ret, next);
++ regtail(g, regnode(g, BACK), ret); /* loop back */
++ regtail(g, next, regnode(g, BRANCH)); /* or */
++ regtail(g, ret, regnode(g, NOTHING)); /* null. */
++ } else if (op == '?') {
++ /* Emit x? as (x|) */
++ reginsert(g, BRANCH, ret); /* Either x */
++ regtail(g, ret, regnode(g, BRANCH)); /* or */
++ next = regnode(g, NOTHING); /* null. */
++ regtail(g, ret, next);
++ regoptail(g, ret, next);
++ }
++ g->regparse++;
++ if (ISMULT(*g->regparse))
++ FAIL("nested *?+");
++
++ return(ret);
++}
++
++/*
++ - regatom - the lowest level
++ *
++ * Optimization: gobbles an entire sequence of ordinary characters so that
++ * it can turn them into a single node, which is smaller to store and
++ * faster to run. Backslashed characters are exceptions, each becoming a
++ * separate node; the code is simpler that way and it's not worth fixing.
++ */
++static char *
++regatom(struct match_globals *g, int *flagp)
++{
++ register char *ret;
++ int flags;
++
++ *flagp = WORST; /* Tentatively. */
++
++ switch (*g->regparse++) {
++ case '^':
++ ret = regnode(g, BOL);
++ break;
++ case '$':
++ ret = regnode(g, EOL);
++ break;
++ case '.':
++ ret = regnode(g, ANY);
++ *flagp |= HASWIDTH|SIMPLE;
++ break;
++ case '[': {
++ register int class;
++ register int classend;
++
++ if (*g->regparse == '^') { /* Complement of range. */
++ ret = regnode(g, ANYBUT);
++ g->regparse++;
++ } else
++ ret = regnode(g, ANYOF);
++ if (*g->regparse == ']' || *g->regparse == '-')
++ regc(g, *g->regparse++);
++ while (*g->regparse != '\0' && *g->regparse != ']') {
++ if (*g->regparse == '-') {
++ g->regparse++;
++ if (*g->regparse == ']' || *g->regparse == '\0')
++ regc(g, '-');
++ else {
++ class = UCHARAT(g->regparse-2)+1;
++ classend = UCHARAT(g->regparse);
++ if (class > classend+1)
++ FAIL("invalid [] range");
++ for (; class <= classend; class++)
++ regc(g, class);
++ g->regparse++;
++ }
++ } else
++ regc(g, *g->regparse++);
++ }
++ regc(g, '\0');
++ if (*g->regparse != ']')
++ FAIL("unmatched []");
++ g->regparse++;
++ *flagp |= HASWIDTH|SIMPLE;
++ }
++ break;
++ case '(':
++ ret = reg(g, 1, &flags);
++ if (ret == NULL)
++ return(NULL);
++ *flagp |= flags&(HASWIDTH|SPSTART);
++ break;
++ case '\0':
++ case '|':
++ case ')':
++ FAIL("internal urp"); /* Supposed to be caught earlier. */
++ break;
++ case '?':
++ case '+':
++ case '*':
++ FAIL("?+* follows nothing");
++ break;
++ case '\\':
++ if (*g->regparse == '\0')
++ FAIL("trailing \\");
++ ret = regnode(g, EXACTLY);
++ regc(g, *g->regparse++);
++ regc(g, '\0');
++ *flagp |= HASWIDTH|SIMPLE;
++ break;
++ default: {
++ register int len;
++ register char ender;
++
++ g->regparse--;
++ len = my_strcspn((const char *)g->regparse, (const char *)META);
++ if (len <= 0)
++ FAIL("internal disaster");
++ ender = *(g->regparse+len);
++ if (len > 1 && ISMULT(ender))
++ len--; /* Back off clear of ?+* operand. */
++ *flagp |= HASWIDTH;
++ if (len == 1)
++ *flagp |= SIMPLE;
++ ret = regnode(g, EXACTLY);
++ while (len > 0) {
++ regc(g, *g->regparse++);
++ len--;
++ }
++ regc(g, '\0');
++ }
++ break;
++ }
++
++ return(ret);
++}
++
++/*
++ - regnode - emit a node
++ */
++static char * /* Location. */
++regnode(struct match_globals *g, char op)
++{
++ register char *ret;
++ register char *ptr;
++
++ ret = g->regcode;
++ if (ret == &g->regdummy) {
++ g->regsize += 3;
++ return(ret);
++ }
++
++ ptr = ret;
++ *ptr++ = op;
++ *ptr++ = '\0'; /* Null "next" pointer. */
++ *ptr++ = '\0';
++ g->regcode = ptr;
++
++ return(ret);
++}
++
++/*
++ - regc - emit (if appropriate) a byte of code
++ */
++static void
++regc(struct match_globals *g, char b)
++{
++ if (g->regcode != &g->regdummy)
++ *g->regcode++ = b;
++ else
++ g->regsize++;
++}
++
++/*
++ - reginsert - insert an operator in front of already-emitted operand
++ *
++ * Means relocating the operand.
++ */
++static void
++reginsert(struct match_globals *g, char op, char* opnd)
++{
++ register char *src;
++ register char *dst;
++ register char *place;
++
++ if (g->regcode == &g->regdummy) {
++ g->regsize += 3;
++ return;
++ }
++
++ src = g->regcode;
++ g->regcode += 3;
++ dst = g->regcode;
++ while (src > opnd)
++ *--dst = *--src;
++
++ place = opnd; /* Op node, where operand used to be. */
++ *place++ = op;
++ *place++ = '\0';
++ *place++ = '\0';
++}
++
++/*
++ - regtail - set the next-pointer at the end of a node chain
++ */
++static void
++regtail(struct match_globals *g, char *p, char *val)
++{
++ register char *scan;
++ register char *temp;
++ register int offset;
++
++ if (p == &g->regdummy)
++ return;
++
++ /* Find last node. */
++ scan = p;
++ for (;;) {
++ temp = regnext(g, scan);
++ if (temp == NULL)
++ break;
++ scan = temp;
++ }
++
++ if (OP(scan) == BACK)
++ offset = scan - val;
++ else
++ offset = val - scan;
++ *(scan+1) = (offset>>8)&0377;
++ *(scan+2) = offset&0377;
++}
++
++/*
++ - regoptail - regtail on operand of first argument; nop if operandless
++ */
++static void
++regoptail(struct match_globals *g, char *p, char *val)
++{
++ /* "Operandless" and "op != BRANCH" are synonymous in practice. */
++ if (p == NULL || p == &g->regdummy || OP(p) != BRANCH)
++ return;
++ regtail(g, OPERAND(p), val);
++}
++
++/*
++ * regexec and friends
++ */
++
++
++/*
++ * Forwards.
++ */
++STATIC int regtry(struct match_globals *g, regexp *prog, char *string);
++STATIC int regmatch(struct match_globals *g, char *prog);
++STATIC int regrepeat(struct match_globals *g, char *p);
++
++#ifdef DEBUG
++int regnarrate = 0;
++void regdump();
++STATIC char *regprop(char *op);
++#endif
++
++/*
++ - regexec - match a regexp against a string
++ */
++int
++regexec(regexp *prog, char *string)
++{
++ register char *s;
++ struct match_globals g;
++
++ /* Be paranoid... */
++ if (prog == NULL || string == NULL) {
++ printk("<3>Regexp: NULL parameter\n");
++ return(0);
++ }
++
++ /* Check validity of program. */
++ if (UCHARAT(prog->program) != MAGIC) {
++ printk("<3>Regexp: corrupted program\n");
++ return(0);
++ }
++
++ /* If there is a "must appear" string, look for it. */
++ if (prog->regmust != NULL) {
++ s = string;
++ while ((s = strchr(s, prog->regmust[0])) != NULL) {
++ if (strncmp(s, prog->regmust, prog->regmlen) == 0)
++ break; /* Found it. */
++ s++;
++ }
++ if (s == NULL) /* Not present. */
++ return(0);
++ }
++
++ /* Mark beginning of line for ^ . */
++ g.regbol = string;
++
++ /* Simplest case: anchored match need be tried only once. */
++ if (prog->reganch)
++ return(regtry(&g, prog, string));
++
++ /* Messy cases: unanchored match. */
++ s = string;
++ if (prog->regstart != '\0')
++ /* We know what char it must start with. */
++ while ((s = strchr(s, prog->regstart)) != NULL) {
++ if (regtry(&g, prog, s))
++ return(1);
++ s++;
++ }
++ else
++ /* We don't -- general case. */
++ do {
++ if (regtry(&g, prog, s))
++ return(1);
++ } while (*s++ != '\0');
++
++ /* Failure. */
++ return(0);
++}
++
++/*
++ - regtry - try match at specific point
++ */
++static int /* 0 failure, 1 success */
++regtry(struct match_globals *g, regexp *prog, char *string)
++{
++ register int i;
++ register char **sp;
++ register char **ep;
++
++ g->reginput = string;
++ g->regstartp = prog->startp;
++ g->regendp = prog->endp;
++
++ sp = prog->startp;
++ ep = prog->endp;
++ for (i = NSUBEXP; i > 0; i--) {
++ *sp++ = NULL;
++ *ep++ = NULL;
++ }
++ if (regmatch(g, prog->program + 1)) {
++ prog->startp[0] = string;
++ prog->endp[0] = g->reginput;
++ return(1);
++ } else
++ return(0);
++}
++
++/*
++ - regmatch - main matching routine
++ *
++ * Conceptually the strategy is simple: check to see whether the current
++ * node matches, call self recursively to see whether the rest matches,
++ * and then act accordingly. In practice we make some effort to avoid
++ * recursion, in particular by going through "ordinary" nodes (that don't
++ * need to know whether the rest of the match failed) by a loop instead of
++ * by recursion.
++ */
++static int /* 0 failure, 1 success */
++regmatch(struct match_globals *g, char *prog)
++{
++ register char *scan = prog; /* Current node. */
++ char *next; /* Next node. */
++
++#ifdef DEBUG
++ if (scan != NULL && regnarrate)
++ fprintf(stderr, "%s(\n", regprop(scan));
++#endif
++ while (scan != NULL) {
++#ifdef DEBUG
++ if (regnarrate)
++ fprintf(stderr, "%s...\n", regprop(scan));
++#endif
++ next = regnext(g, scan);
++
++ switch (OP(scan)) {
++ case BOL:
++ if (g->reginput != g->regbol)
++ return(0);
++ break;
++ case EOL:
++ if (*g->reginput != '\0')
++ return(0);
++ break;
++ case ANY:
++ if (*g->reginput == '\0')
++ return(0);
++ g->reginput++;
++ break;
++ case EXACTLY: {
++ register int len;
++ register char *opnd;
++
++ opnd = OPERAND(scan);
++ /* Inline the first character, for speed. */
++ if (*opnd != *g->reginput)
++ return(0);
++ len = strlen(opnd);
++ if (len > 1 && strncmp(opnd, g->reginput, len) != 0)
++ return(0);
++ g->reginput += len;
++ }
++ break;
++ case ANYOF:
++ if (*g->reginput == '\0' || strchr(OPERAND(scan), *g->reginput) == NULL)
++ return(0);
++ g->reginput++;
++ break;
++ case ANYBUT:
++ if (*g->reginput == '\0' || strchr(OPERAND(scan), *g->reginput) != NULL)
++ return(0);
++ g->reginput++;
++ break;
++ case NOTHING:
++ case BACK:
++ break;
++ case OPEN+1:
++ case OPEN+2:
++ case OPEN+3:
++ case OPEN+4:
++ case OPEN+5:
++ case OPEN+6:
++ case OPEN+7:
++ case OPEN+8:
++ case OPEN+9: {
++ register int no;
++ register char *save;
++
++ no = OP(scan) - OPEN;
++ save = g->reginput;
++
++ if (regmatch(g, next)) {
++ /*
++ * Don't set startp if some later
++ * invocation of the same parentheses
++ * already has.
++ */
++ if (g->regstartp[no] == NULL)
++ g->regstartp[no] = save;
++ return(1);
++ } else
++ return(0);
++ }
++ break;
++ case CLOSE+1:
++ case CLOSE+2:
++ case CLOSE+3:
++ case CLOSE+4:
++ case CLOSE+5:
++ case CLOSE+6:
++ case CLOSE+7:
++ case CLOSE+8:
++ case CLOSE+9:
++ {
++ register int no;
++ register char *save;
++
++ no = OP(scan) - CLOSE;
++ save = g->reginput;
++
++ if (regmatch(g, next)) {
++ /*
++ * Don't set endp if some later
++ * invocation of the same parentheses
++ * already has.
++ */
++ if (g->regendp[no] == NULL)
++ g->regendp[no] = save;
++ return(1);
++ } else
++ return(0);
++ }
++ break;
++ case BRANCH: {
++ register char *save;
++
++ if (OP(next) != BRANCH) /* No choice. */
++ next = OPERAND(scan); /* Avoid recursion. */
++ else {
++ do {
++ save = g->reginput;
++ if (regmatch(g, OPERAND(scan)))
++ return(1);
++ g->reginput = save;
++ scan = regnext(g, scan);
++ } while (scan != NULL && OP(scan) == BRANCH);
++ return(0);
++ /* NOTREACHED */
++ }
++ }
++ break;
++ case STAR:
++ case PLUS: {
++ register char nextch;
++ register int no;
++ register char *save;
++ register int min;
++
++ /*
++ * Lookahead to avoid useless match attempts
++ * when we know what character comes next.
++ */
++ nextch = '\0';
++ if (OP(next) == EXACTLY)
++ nextch = *OPERAND(next);
++ min = (OP(scan) == STAR) ? 0 : 1;
++ save = g->reginput;
++ no = regrepeat(g, OPERAND(scan));
++ while (no >= min) {
++ /* If it could work, try it. */
++ if (nextch == '\0' || *g->reginput == nextch)
++ if (regmatch(g, next))
++ return(1);
++ /* Couldn't or didn't -- back up. */
++ no--;
++ g->reginput = save + no;
++ }
++ return(0);
++ }
++ break;
++ case END:
++ return(1); /* Success! */
++ break;
++ default:
++ printk("<3>Regexp: memory corruption\n");
++ return(0);
++ break;
++ }
++
++ scan = next;
++ }
++
++ /*
++ * We get here only if there's trouble -- normally "case END" is
++ * the terminating point.
++ */
++ printk("<3>Regexp: corrupted pointers\n");
++ return(0);
++}
++
++/*
++ - regrepeat - repeatedly match something simple, report how many
++ */
++static int
++regrepeat(struct match_globals *g, char *p)
++{
++ register int count = 0;
++ register char *scan;
++ register char *opnd;
++
++ scan = g->reginput;
++ opnd = OPERAND(p);
++ switch (OP(p)) {
++ case ANY:
++ count = strlen(scan);
++ scan += count;
++ break;
++ case EXACTLY:
++ while (*opnd == *scan) {
++ count++;
++ scan++;
++ }
++ break;
++ case ANYOF:
++ while (*scan != '\0' && strchr(opnd, *scan) != NULL) {
++ count++;
++ scan++;
++ }
++ break;
++ case ANYBUT:
++ while (*scan != '\0' && strchr(opnd, *scan) == NULL) {
++ count++;
++ scan++;
++ }
++ break;
++ default: /* Oh dear. Called inappropriately. */
++ printk("<3>Regexp: internal foulup\n");
++ count = 0; /* Best compromise. */
++ break;
++ }
++ g->reginput = scan;
++
++ return(count);
++}
++
++/*
++ - regnext - dig the "next" pointer out of a node
++ */
++static char*
++regnext(struct match_globals *g, char *p)
++{
++ register int offset;
++
++ if (p == &g->regdummy)
++ return(NULL);
++
++ offset = NEXT(p);
++ if (offset == 0)
++ return(NULL);
++
++ if (OP(p) == BACK)
++ return(p-offset);
++ else
++ return(p+offset);
++}
++
++#ifdef DEBUG
++
++STATIC char *regprop();
++
++/*
++ - regdump - dump a regexp onto stdout in vaguely comprehensible form
++ */
++void
++regdump(regexp *r)
++{
++ register char *s;
++ register char op = EXACTLY; /* Arbitrary non-END op. */
++ register char *next;
++ /* extern char *strchr(); */
++
++
++ s = r->program + 1;
++ while (op != END) { /* While that wasn't END last time... */
++ op = OP(s);
++ printf("%2d%s", s-r->program, regprop(s)); /* Where, what. */
++ next = regnext(s);
++ if (next == NULL) /* Next ptr. */
++ printf("(0)");
++ else
++ printf("(%d)", (s-r->program)+(next-s));
++ s += 3;
++ if (op == ANYOF || op == ANYBUT || op == EXACTLY) {
++ /* Literal string, where present. */
++ while (*s != '\0') {
++ putchar(*s);
++ s++;
++ }
++ s++;
++ }
++ putchar('\n');
++ }
++
++ /* Header fields of interest. */
++ if (r->regstart != '\0')
++ printf("start `%c' ", r->regstart);
++ if (r->reganch)
++ printf("anchored ");
++ if (r->regmust != NULL)
++ printf("must have \"%s\"", r->regmust);
++ printf("\n");
++}
++
++/*
++ - regprop - printable representation of opcode
++ */
++static char *
++regprop(char *op)
++{
++#define BUFLEN 50
++ register char *p;
++ static char buf[BUFLEN];
++
++ strcpy(buf, ":");
++
++ switch (OP(op)) {
++ case BOL:
++ p = "BOL";
++ break;
++ case EOL:
++ p = "EOL";
++ break;
++ case ANY:
++ p = "ANY";
++ break;
++ case ANYOF:
++ p = "ANYOF";
++ break;
++ case ANYBUT:
++ p = "ANYBUT";
++ break;
++ case BRANCH:
++ p = "BRANCH";
++ break;
++ case EXACTLY:
++ p = "EXACTLY";
++ break;
++ case NOTHING:
++ p = "NOTHING";
++ break;
++ case BACK:
++ p = "BACK";
++ break;
++ case END:
++ p = "END";
++ break;
++ case OPEN+1:
++ case OPEN+2:
++ case OPEN+3:
++ case OPEN+4:
++ case OPEN+5:
++ case OPEN+6:
++ case OPEN+7:
++ case OPEN+8:
++ case OPEN+9:
++ snprintf(buf+strlen(buf),BUFLEN-strlen(buf), "OPEN%d", OP(op)-OPEN);
++ p = NULL;
++ break;
++ case CLOSE+1:
++ case CLOSE+2:
++ case CLOSE+3:
++ case CLOSE+4:
++ case CLOSE+5:
++ case CLOSE+6:
++ case CLOSE+7:
++ case CLOSE+8:
++ case CLOSE+9:
++ snprintf(buf+strlen(buf),BUFLEN-strlen(buf), "CLOSE%d", OP(op)-CLOSE);
++ p = NULL;
++ break;
++ case STAR:
++ p = "STAR";
++ break;
++ case PLUS:
++ p = "PLUS";
++ break;
++ default:
++ printk("<3>Regexp: corrupted opcode\n");
++ break;
++ }
++ if (p != NULL)
++ strncat(buf, p, BUFLEN-strlen(buf));
++ return(buf);
++}
++#endif
++
++
+diff -urN linux.old/net/ipv4/netfilter/regexp/regexp.h linux.dev/net/ipv4/netfilter/regexp/regexp.h
+--- linux.old/net/ipv4/netfilter/regexp/regexp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/net/ipv4/netfilter/regexp/regexp.h 2007-01-01 05:18:48.000000000 +0100
+@@ -0,0 +1,41 @@
++/*
++ * Definitions etc. for regexp(3) routines.
++ *
++ * Caveat: this is V8 regexp(3) [actually, a reimplementation thereof],
++ * not the System V one.
++ */
++
++#ifndef REGEXP_H
++#define REGEXP_H
++
++
++/*
++http://www.opensource.apple.com/darwinsource/10.3/expect-1/expect/expect.h ,
++which contains a version of this library, says:
++
++ *
++ * NSUBEXP must be at least 10, and no greater than 117 or the parser
++ * will not work properly.
++ *
++
++However, it looks rather like this library is limited to 10. If you think
++otherwise, let us know.
++*/
++
++#define NSUBEXP 10
++typedef struct regexp {
++ char *startp[NSUBEXP];
++ char *endp[NSUBEXP];
++ char regstart; /* Internal use only. */
++ char reganch; /* Internal use only. */
++ char *regmust; /* Internal use only. */
++ int regmlen; /* Internal use only. */
++ char program[1]; /* Unwarranted chumminess with compiler. */
++} regexp;
++
++regexp * regcomp(char *exp, int *patternsize);
++int regexec(regexp *prog, char *string);
++void regsub(regexp *prog, char *source, char *dest);
++void regerror(char *s);
++
++#endif
+diff -urN linux.old/net/ipv4/netfilter/regexp/regmagic.h linux.dev/net/ipv4/netfilter/regexp/regmagic.h
+--- linux.old/net/ipv4/netfilter/regexp/regmagic.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/net/ipv4/netfilter/regexp/regmagic.h 2007-01-01 05:18:48.000000000 +0100
+@@ -0,0 +1,5 @@
++/*
++ * The first byte of the regexp internal "program" is actually this magic
++ * number; the start node begins in the second byte.
++ */
++#define MAGIC 0234
+diff -urN linux.old/net/ipv4/netfilter/regexp/regsub.c linux.dev/net/ipv4/netfilter/regexp/regsub.c
+--- linux.old/net/ipv4/netfilter/regexp/regsub.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/net/ipv4/netfilter/regexp/regsub.c 2007-01-01 05:18:48.000000000 +0100
+@@ -0,0 +1,95 @@
++/*
++ * regsub
++ * @(#)regsub.c 1.3 of 2 April 86
++ *
++ * Copyright (c) 1986 by University of Toronto.
++ * Written by Henry Spencer. Not derived from licensed software.
++ *
++ * Permission is granted to anyone to use this software for any
++ * purpose on any computer system, and to redistribute it freely,
++ * subject to the following restrictions:
++ *
++ * 1. The author is not responsible for the consequences of use of
++ * this software, no matter how awful, even if they arise
++ * from defects in it.
++ *
++ * 2. The origin of this software must not be misrepresented, either
++ * by explicit claim or by omission.
++ *
++ * 3. Altered versions must be plainly marked as such, and must not
++ * be misrepresented as being the original software.
++ *
++ *
++ * This code was modified by Ethan Sommer to work within the kernel
++ * (it now uses kmalloc etc..)
++ *
++ */
++#include "regexp.h"
++#include "regmagic.h"
++#include <linux/string.h>
++
++
++#ifndef CHARBITS
++#define UCHARAT(p) ((int)*(unsigned char *)(p))
++#else
++#define UCHARAT(p) ((int)*(p)&CHARBITS)
++#endif
++
++#if 0
++//void regerror(char * s)
++//{
++// printk("regexp(3): %s", s);
++// /* NOTREACHED */
++//}
++#endif
++
++/*
++ - regsub - perform substitutions after a regexp match
++ */
++void
++regsub(regexp * prog, char * source, char * dest)
++{
++ register char *src;
++ register char *dst;
++ register char c;
++ register int no;
++ register int len;
++
++ /* Not necessary and gcc doesn't like it -MLS */
++ /*extern char *strncpy();*/
++
++ if (prog == NULL || source == NULL || dest == NULL) {
++ regerror("NULL parm to regsub");
++ return;
++ }
++ if (UCHARAT(prog->program) != MAGIC) {
++ regerror("damaged regexp fed to regsub");
++ return;
++ }
++
++ src = source;
++ dst = dest;
++ while ((c = *src++) != '\0') {
++ if (c == '&')
++ no = 0;
++ else if (c == '\\' && '0' <= *src && *src <= '9')
++ no = *src++ - '0';
++ else
++ no = -1;
++
++ if (no < 0) { /* Ordinary character. */
++ if (c == '\\' && (*src == '\\' || *src == '&'))
++ c = *src++;
++ *dst++ = c;
++ } else if (prog->startp[no] != NULL && prog->endp[no] != NULL) {
++ len = prog->endp[no] - prog->startp[no];
++ (void) strncpy(dst, prog->startp[no], len);
++ dst += len;
++ if (len != 0 && *(dst-1) == '\0') { /* strncpy hit NUL. */
++ regerror("damaged match string");
++ return;
++ }
++ }
++ }
++ *dst++ = '\0';
++}
diff --git a/packages/linux/linux-magicbox-2.6.19.2/101-netfilter_layer7_pktmatch.patch b/packages/linux/linux-magicbox-2.6.19.2/101-netfilter_layer7_pktmatch.patch
new file mode 100644
index 0000000000..3d1e4819d6
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/101-netfilter_layer7_pktmatch.patch
@@ -0,0 +1,108 @@
+diff -ur linux.dev/include/linux/netfilter_ipv4/ipt_layer7.h linux.dev2/include/linux/netfilter_ipv4/ipt_layer7.h
+--- linux.dev/include/linux/netfilter_ipv4/ipt_layer7.h 2007-01-01 05:18:48.000000000 +0100
++++ linux.dev2/include/linux/netfilter_ipv4/ipt_layer7.h 2007-01-01 05:30:46.000000000 +0100
+@@ -21,6 +21,7 @@
+ char protocol[MAX_PROTOCOL_LEN];
+ char invert:1;
+ char pattern[MAX_PATTERN_LEN];
++ char pkt;
+ };
+
+ #endif /* _IPT_LAYER7_H */
+diff -ur linux.dev/net/ipv4/netfilter/ipt_layer7.c linux.dev2/net/ipv4/netfilter/ipt_layer7.c
+--- linux.dev/net/ipv4/netfilter/ipt_layer7.c 2007-01-01 05:18:48.000000000 +0100
++++ linux.dev2/net/ipv4/netfilter/ipt_layer7.c 2007-01-01 05:30:46.000000000 +0100
+@@ -296,33 +296,34 @@
+ }
+ }
+
+-/* add the new app data to the conntrack. Return number of bytes added. */
+-static int add_data(struct ip_conntrack * master_conntrack,
+- char * app_data, int appdatalen)
++static int add_datastr(char *target, int offset, char *app_data, int len)
+ {
+ int length = 0, i;
+- int oldlength = master_conntrack->layer7.app_data_len;
+-
+- // This is a fix for a race condition by Deti Fliegl. However, I'm not
+- // clear on whether the race condition exists or whether this really
+- // fixes it. I might just be being dense... Anyway, if it's not really
+- // a fix, all it does is waste a very small amount of time.
+- if(!master_conntrack->layer7.app_data) return 0;
++ if(!target) return 0;
+
+ /* Strip nulls. Make everything lower case (our regex lib doesn't
+ do case insensitivity). Add it to the end of the current data. */
+- for(i = 0; i < maxdatalen-oldlength-1 &&
+- i < appdatalen; i++) {
++ for(i = 0; i < maxdatalen-offset-1 && i < len; i++) {
+ if(app_data[i] != '\0') {
+- master_conntrack->layer7.app_data[length+oldlength] =
++ target[length+offset] =
+ /* the kernel version of tolower mungs 'upper ascii' */
+ isascii(app_data[i])? tolower(app_data[i]) : app_data[i];
+ length++;
+ }
+ }
++ target[length+offset] = '\0';
+
+- master_conntrack->layer7.app_data[length+oldlength] = '\0';
+- master_conntrack->layer7.app_data_len = length + oldlength;
++ return length;
++}
++
++/* add the new app data to the conntrack. Return number of bytes added. */
++static int add_data(struct ip_conntrack * master_conntrack,
++ char * app_data, int appdatalen)
++{
++ int length;
++
++ length = add_datastr(master_conntrack->layer7.app_data, master_conntrack->layer7.app_data_len, app_data, appdatalen);
++ master_conntrack->layer7.app_data_len += length;
+
+ return length;
+ }
+@@ -339,7 +340,7 @@
+ struct ipt_layer7_info * info = (struct ipt_layer7_info *)matchinfo;
+ enum ip_conntrack_info master_ctinfo, ctinfo;
+ struct ip_conntrack *master_conntrack, *conntrack;
+- unsigned char * app_data;
++ unsigned char *app_data, *tmp_data;
+ unsigned int pattern_result, appdatalen;
+ regexp * comppattern;
+
+@@ -362,8 +363,8 @@
+ master_conntrack = master_ct(master_conntrack);
+
+ /* if we've classified it or seen too many packets */
+- if(TOTAL_PACKETS > num_packets ||
+- master_conntrack->layer7.app_proto) {
++ if(!info->pkt && (TOTAL_PACKETS > num_packets ||
++ master_conntrack->layer7.app_proto)) {
+
+ pattern_result = match_no_append(conntrack, master_conntrack, ctinfo, master_ctinfo, info);
+
+@@ -394,6 +395,23 @@
+ comppattern = compile_and_cache(info->pattern, info->protocol);
+ spin_unlock_bh(&list_lock);
+
++ if (info->pkt) {
++ tmp_data = kmalloc(maxdatalen, GFP_ATOMIC);
++ if(!tmp_data){
++ if (net_ratelimit())
++ printk(KERN_ERR "layer7: out of memory in match, bailing.\n");
++ return info->invert;
++ }
++
++ tmp_data[0] = '\0';
++ add_datastr(tmp_data, 0, app_data, appdatalen);
++ pattern_result = ((comppattern && regexec(comppattern, tmp_data)) ? 1 : 0);
++ kfree(tmp_data);
++ tmp_data = NULL;
++
++ return (pattern_result ^ info->invert);
++ }
++
+ /* On the first packet of a connection, allocate space for app data */
+ write_lock(&ct_lock);
+ if(TOTAL_PACKETS == 1 && !skb->cb[0] && !master_conntrack->layer7.app_data) {
diff --git a/packages/linux/linux-magicbox-2.6.19.2/110-ipp2p_0.8.1rc1.patch b/packages/linux/linux-magicbox-2.6.19.2/110-ipp2p_0.8.1rc1.patch
new file mode 100644
index 0000000000..e03f4d5676
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/110-ipp2p_0.8.1rc1.patch
@@ -0,0 +1,948 @@
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ipt_ipp2p.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ipt_ipp2p.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ipt_ipp2p.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ipt_ipp2p.h 2006-12-14 03:13:39.000000000 +0100
+@@ -0,0 +1,31 @@
++#ifndef __IPT_IPP2P_H
++#define __IPT_IPP2P_H
++#define IPP2P_VERSION "0.8.1_rc1"
++
++struct ipt_p2p_info {
++ int cmd;
++ int debug;
++};
++
++#endif //__IPT_IPP2P_H
++
++#define SHORT_HAND_IPP2P 1 /* --ipp2p switch*/
++//#define SHORT_HAND_DATA 4 /* --ipp2p-data switch*/
++#define SHORT_HAND_NONE 5 /* no short hand*/
++
++#define IPP2P_EDK (1 << 1)
++#define IPP2P_DATA_KAZAA (1 << 2)
++#define IPP2P_DATA_EDK (1 << 3)
++#define IPP2P_DATA_DC (1 << 4)
++#define IPP2P_DC (1 << 5)
++#define IPP2P_DATA_GNU (1 << 6)
++#define IPP2P_GNU (1 << 7)
++#define IPP2P_KAZAA (1 << 8)
++#define IPP2P_BIT (1 << 9)
++#define IPP2P_APPLE (1 << 10)
++#define IPP2P_SOUL (1 << 11)
++#define IPP2P_WINMX (1 << 12)
++#define IPP2P_ARES (1 << 13)
++#define IPP2P_MUTE (1 << 14)
++#define IPP2P_WASTE (1 << 15)
++#define IPP2P_XDCC (1 << 16)
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ipt_ipp2p.c linux-2.6.19.dev/net/ipv4/netfilter/ipt_ipp2p.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ipt_ipp2p.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ipt_ipp2p.c 2006-12-14 03:13:39.000000000 +0100
+@@ -0,0 +1,881 @@
++#if defined(MODVERSIONS)
++#include <linux/modversions.h>
++#endif
++#include <linux/module.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++#include <linux/version.h>
++#include <linux/netfilter_ipv4/ipt_ipp2p.h>
++#include <net/tcp.h>
++#include <net/udp.h>
++
++#define get_u8(X,O) (*(__u8 *)(X + O))
++#define get_u16(X,O) (*(__u16 *)(X + O))
++#define get_u32(X,O) (*(__u32 *)(X + O))
++
++MODULE_AUTHOR("Eicke Friedrich/Klaus Degner <ipp2p@ipp2p.org>");
++MODULE_DESCRIPTION("An extension to iptables to identify P2P traffic.");
++MODULE_LICENSE("GPL");
++
++
++/*Search for UDP eDonkey/eMule/Kad commands*/
++int
++udp_search_edk (unsigned char *haystack, int packet_len)
++{
++ unsigned char *t = haystack;
++ t += 8;
++
++ switch (t[0]) {
++ case 0xe3:
++ { /*edonkey*/
++ switch (t[1])
++ {
++ /* client -> server status request */
++ case 0x96:
++ if (packet_len == 14) return ((IPP2P_EDK * 100) + 50);
++ break;
++ /* server -> client status request */
++ case 0x97: if (packet_len == 42) return ((IPP2P_EDK * 100) + 51);
++ break;
++ /* server description request */
++ /* e3 2a ff f0 .. | size == 6 */
++ case 0xa2: if ( (packet_len == 14) && ( get_u16(t,2) == __constant_htons(0xfff0) ) ) return ((IPP2P_EDK * 100) + 52);
++ break;
++ /* server description response */
++ /* e3 a3 ff f0 .. | size > 40 && size < 200 */
++ //case 0xa3: return ((IPP2P_EDK * 100) + 53);
++ // break;
++ case 0x9a: if (packet_len==26) return ((IPP2P_EDK * 100) + 54);
++ break;
++
++ case 0x92: if (packet_len==18) return ((IPP2P_EDK * 100) + 55);
++ break;
++ }
++ break;
++ }
++ case 0xe4:
++ {
++ switch (t[1])
++ {
++ /* e4 20 .. | size == 43 */
++ case 0x20: if ((packet_len == 43) && (t[2] != 0x00) && (t[34] != 0x00)) return ((IPP2P_EDK * 100) + 60);
++ break;
++ /* e4 00 .. 00 | size == 35 ? */
++ case 0x00: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 61);
++ break;
++ /* e4 10 .. 00 | size == 35 ? */
++ case 0x10: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 62);
++ break;
++ /* e4 18 .. 00 | size == 35 ? */
++ case 0x18: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 63);
++ break;
++ /* e4 52 .. | size = 44 */
++ case 0x52: if (packet_len == 44 ) return ((IPP2P_EDK * 100) + 64);
++ break;
++ /* e4 58 .. | size == 6 */
++ case 0x58: if (packet_len == 14 ) return ((IPP2P_EDK * 100) + 65);
++ break;
++ /* e4 59 .. | size == 2 */
++ case 0x59: if (packet_len == 10 )return ((IPP2P_EDK * 100) + 66);
++ break;
++ /* e4 28 .. | packet_len == 52,77,102,127... */
++ case 0x28: if (((packet_len-52) % 25) == 0) return ((IPP2P_EDK * 100) + 67);
++ break;
++ /* e4 50 xx xx | size == 4 */
++ case 0x50: if (packet_len == 12) return ((IPP2P_EDK * 100) + 68);
++ break;
++ /* e4 40 xx xx | size == 48 */
++ case 0x40: if (packet_len == 56) return ((IPP2P_EDK * 100) + 69);
++ break;
++ }
++ break;
++ }
++ } /* end of switch (t[0]) */
++ return 0;
++}/*udp_search_edk*/
++
++
++/*Search for UDP Gnutella commands*/
++int
++udp_search_gnu (unsigned char *haystack, int packet_len)
++{
++ unsigned char *t = haystack;
++ t += 8;
++
++ if (memcmp(t, "GND", 3) == 0) return ((IPP2P_GNU * 100) + 51);
++ if (memcmp(t, "GNUTELLA ", 9) == 0) return ((IPP2P_GNU * 100) + 52);
++ return 0;
++}/*udp_search_gnu*/
++
++
++/*Search for UDP KaZaA commands*/
++int
++udp_search_kazaa (unsigned char *haystack, int packet_len)
++{
++ unsigned char *t = haystack;
++
++ if (t[packet_len-1] == 0x00){
++ t += (packet_len - 6);
++ if (memcmp(t, "KaZaA", 5) == 0) return (IPP2P_KAZAA * 100 +50);
++ }
++
++ return 0;
++}/*udp_search_kazaa*/
++
++/*Search for UDP DirectConnect commands*/
++int
++udp_search_directconnect (unsigned char *haystack, int packet_len)
++{
++ unsigned char *t = haystack;
++ if ((*(t + 8) == 0x24) && (*(t + packet_len - 1) == 0x7c)) {
++ t+=8;
++ if (memcmp(t, "SR ", 3) == 0) return ((IPP2P_DC * 100) + 60);
++ if (memcmp(t, "Ping ", 5) == 0) return ((IPP2P_DC * 100) + 61);
++ }
++ return 0;
++}/*udp_search_directconnect*/
++
++
++
++/*Search for UDP BitTorrent commands*/
++int
++udp_search_bit (unsigned char *haystack, int packet_len)
++{
++ switch(packet_len)
++ {
++ case 24:
++ /* ^ 00 00 04 17 27 10 19 80 */
++ if ((ntohl(get_u32(haystack, 8)) == 0x00000417) && (ntohl(get_u32(haystack, 12)) == 0x27101980))
++ return (IPP2P_BIT * 100 + 50);
++ break;
++ case 44:
++ if (get_u32(haystack, 16) == __constant_htonl(0x00000400) && get_u32(haystack, 36) == __constant_htonl(0x00000104))
++ return (IPP2P_BIT * 100 + 51);
++ if (get_u32(haystack, 16) == __constant_htonl(0x00000400))
++ return (IPP2P_BIT * 100 + 61);
++ break;
++ case 65:
++ if (get_u32(haystack, 16) == __constant_htonl(0x00000404) && get_u32(haystack, 36) == __constant_htonl(0x00000104))
++ return (IPP2P_BIT * 100 + 52);
++ if (get_u32(haystack, 16) == __constant_htonl(0x00000404))
++ return (IPP2P_BIT * 100 + 62);
++ break;
++ case 67:
++ if (get_u32(haystack, 16) == __constant_htonl(0x00000406) && get_u32(haystack, 36) == __constant_htonl(0x00000104))
++ return (IPP2P_BIT * 100 + 53);
++ if (get_u32(haystack, 16) == __constant_htonl(0x00000406))
++ return (IPP2P_BIT * 100 + 63);
++ break;
++ case 211:
++ if (get_u32(haystack, 8) == __constant_htonl(0x00000405))
++ return (IPP2P_BIT * 100 + 54);
++ break;
++ case 29:
++ if ((get_u32(haystack, 8) == __constant_htonl(0x00000401)))
++ return (IPP2P_BIT * 100 + 55);
++ break;
++ case 52:
++ if (get_u32(haystack,8) == __constant_htonl(0x00000827) &&
++ get_u32(haystack,12) == __constant_htonl(0x37502950))
++ return (IPP2P_BIT * 100 + 80);
++ break;
++ default:
++ /* this packet does not have a constant size */
++ if (packet_len >= 40 && get_u32(haystack, 16) == __constant_htonl(0x00000402) && get_u32(haystack, 36) == __constant_htonl(0x00000104))
++ return (IPP2P_BIT * 100 + 56);
++ break;
++ }
++
++ /* some extra-bitcomet rules:
++ * "d1:" [a|r] "d2:id20:"
++ */
++ if (packet_len > 30 && get_u8(haystack, 8) == 'd' && get_u8(haystack, 9) == '1' && get_u8(haystack, 10) == ':' )
++ {
++ if (get_u8(haystack, 11) == 'a' || get_u8(haystack, 11) == 'r')
++ {
++ if (memcmp(haystack+12,"d2:id20:",8)==0)
++ return (IPP2P_BIT * 100 + 57);
++ }
++ }
++
++#if 0
++ /* bitlord rules */
++ /* packetlen must be bigger than 40 */
++ /* first 4 bytes are zero */
++ if (packet_len > 40 && get_u32(haystack, 8) == 0x00000000)
++ {
++ /* first rule: 00 00 00 00 01 00 00 xx xx xx xx 00 00 00 00*/
++ if (get_u32(haystack, 12) == 0x00000000 &&
++ get_u32(haystack, 16) == 0x00010000 &&
++ get_u32(haystack, 24) == 0x00000000 )
++ return (IPP2P_BIT * 100 + 71);
++
++ /* 00 01 00 00 0d 00 00 xx xx xx xx 00 00 00 00*/
++ if (get_u32(haystack, 12) == 0x00000001 &&
++ get_u32(haystack, 16) == 0x000d0000 &&
++ get_u32(haystack, 24) == 0x00000000 )
++ return (IPP2P_BIT * 100 + 71);
++
++
++ }
++#endif
++
++ return 0;
++}/*udp_search_bit*/
++
++
++
++/*Search for Ares commands*/
++//#define IPP2P_DEBUG_ARES
++int
++search_ares (const unsigned char *payload, const u16 plen)
++//int search_ares (unsigned char *haystack, int packet_len, int head_len)
++{
++// const unsigned char *t = haystack + head_len;
++
++ /* all ares packets start with */
++ if (payload[1] == 0 && (plen - payload[0]) == 3)
++ {
++ switch (payload[2])
++ {
++ case 0x5a:
++ /* ares connect */
++ if ( plen == 6 && payload[5] == 0x05 ) return ((IPP2P_ARES * 100) + 1);
++ break;
++ case 0x09:
++ /* ares search, min 3 chars --> 14 bytes
++ * lets define a search can be up to 30 chars --> max 34 bytes
++ */
++ if ( plen >= 14 && plen <= 34 ) return ((IPP2P_ARES * 100) + 1);
++ break;
++#ifdef IPP2P_DEBUG_ARES
++ default:
++ printk(KERN_DEBUG "Unknown Ares command %x recognized, len: %u \n", (unsigned int) payload[2],plen);
++#endif /* IPP2P_DEBUG_ARES */
++ }
++ }
++
++#if 0
++ /* found connect packet: 03 00 5a 04 03 05 */
++ /* new version ares 1.8: 03 00 5a xx xx 05 */
++ if ((plen) == 6){ /* possible connect command*/
++ if ((payload[0] == 0x03) && (payload[1] == 0x00) && (payload[2] == 0x5a) && (payload[5] == 0x05))
++ return ((IPP2P_ARES * 100) + 1);
++ }
++ if ((plen) == 60){ /* possible download command*/
++ if ((payload[59] == 0x0a) && (payload[58] == 0x0a)){
++ if (memcmp(t, "PUSH SHA1:", 10) == 0) /* found download command */
++ return ((IPP2P_ARES * 100) + 2);
++ }
++ }
++#endif
++
++ return 0;
++} /*search_ares*/
++
++/*Search for SoulSeek commands*/
++int
++search_soul (const unsigned char *payload, const u16 plen)
++{
++//#define IPP2P_DEBUG_SOUL
++ /* match: xx xx xx xx | xx = sizeof(payload) - 4 */
++ if (get_u32(payload, 0) == (plen - 4)){
++ const __u32 m=get_u32(payload, 4);
++ /* match 00 yy yy 00, yy can be everything */
++ if ( get_u8(payload, 4) == 0x00 && get_u8(payload, 7) == 0x00 )
++ {
++#ifdef IPP2P_DEBUG_SOUL
++ printk(KERN_DEBUG "0: Soulseek command 0x%x recognized\n",get_u32(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++ return ((IPP2P_SOUL * 100) + 1);
++ }
++
++ /* next match: 01 yy 00 00 | yy can be everything */
++ if ( get_u8(payload, 4) == 0x01 && get_u16(payload, 6) == 0x0000 )
++ {
++#ifdef IPP2P_DEBUG_SOUL
++ printk(KERN_DEBUG "1: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++ return ((IPP2P_SOUL * 100) + 2);
++ }
++
++ /* other soulseek commandos are: 1-5,7,9,13-18,22,23,26,28,35-37,40-46,50,51,60,62-69,91,92,1001 */
++ /* try to do this in an intelligent way */
++ /* get all small commandos */
++ switch(m)
++ {
++ case 7:
++ case 9:
++ case 22:
++ case 23:
++ case 26:
++ case 28:
++ case 50:
++ case 51:
++ case 60:
++ case 91:
++ case 92:
++ case 1001:
++#ifdef IPP2P_DEBUG_SOUL
++ printk(KERN_DEBUG "2: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++ return ((IPP2P_SOUL * 100) + 3);
++ }
++
++ if (m > 0 && m < 6 )
++ {
++#ifdef IPP2P_DEBUG_SOUL
++ printk(KERN_DEBUG "3: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++ return ((IPP2P_SOUL * 100) + 4);
++ }
++ if (m > 12 && m < 19 )
++ {
++#ifdef IPP2P_DEBUG_SOUL
++ printk(KERN_DEBUG "4: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++ return ((IPP2P_SOUL * 100) + 5);
++ }
++
++ if (m > 34 && m < 38 )
++ {
++#ifdef IPP2P_DEBUG_SOUL
++ printk(KERN_DEBUG "5: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++ return ((IPP2P_SOUL * 100) + 6);
++ }
++
++ if (m > 39 && m < 47 )
++ {
++#ifdef IPP2P_DEBUG_SOUL
++ printk(KERN_DEBUG "6: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++ return ((IPP2P_SOUL * 100) + 7);
++ }
++
++ if (m > 61 && m < 70 )
++ {
++#ifdef IPP2P_DEBUG_SOUL
++ printk(KERN_DEBUG "7: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++ return ((IPP2P_SOUL * 100) + 8);
++ }
++
++#ifdef IPP2P_DEBUG_SOUL
++ printk(KERN_DEBUG "unknown SOULSEEK command: 0x%x, first 16 bit: 0x%x, first 8 bit: 0x%x ,soulseek ???\n",get_u32(payload, 4),get_u16(payload, 4) >> 16,get_u8(payload, 4) >> 24);
++#endif /* IPP2P_DEBUG_SOUL */
++ }
++
++ /* match 14 00 00 00 01 yy 00 00 00 STRING(YY) 01 00 00 00 00 46|50 00 00 00 00 */
++ /* without size at the beginning !!! */
++ if ( get_u32(payload, 0) == 0x14 && get_u8(payload, 4) == 0x01 )
++ {
++ __u32 y=get_u32(payload, 5);
++ /* we need 19 chars + string */
++ if ( (y + 19) <= (plen) )
++ {
++ const unsigned char *w=payload+9+y;
++ if (get_u32(w, 0) == 0x01 && ( get_u16(w, 4) == 0x4600 || get_u16(w, 4) == 0x5000) && get_u32(w, 6) == 0x00);
++#ifdef IPP2P_DEBUG_SOUL
++ printk(KERN_DEBUG "Soulssek special client command recognized\n");
++#endif /* IPP2P_DEBUG_SOUL */
++ return ((IPP2P_SOUL * 100) + 9);
++ }
++ }
++ return 0;
++}
++
++
++/*Search for WinMX commands*/
++int
++search_winmx (const unsigned char *payload, const u16 plen)
++{
++//#define IPP2P_DEBUG_WINMX
++ if (((plen) == 4) && (memcmp(payload, "SEND", 4) == 0)) return ((IPP2P_WINMX * 100) + 1);
++ if (((plen) == 3) && (memcmp(payload, "GET", 3) == 0)) return ((IPP2P_WINMX * 100) + 2);
++ //if (packet_len < (head_len + 10)) return 0;
++ if (plen < 10) return 0;
++
++ if ((memcmp(payload, "SEND", 4) == 0) || (memcmp(payload, "GET", 3) == 0)){
++ u16 c=4;
++ const u16 end=plen-2;
++ u8 count=0;
++ while (c < end)
++ {
++ if (payload[c]== 0x20 && payload[c+1] == 0x22)
++ {
++ c++;
++ count++;
++ if (count>=2) return ((IPP2P_WINMX * 100) + 3);
++ }
++ c++;
++ }
++ }
++
++ if ( plen == 149 && payload[0] == '8' )
++ {
++#ifdef IPP2P_DEBUG_WINMX
++ printk(KERN_INFO "maybe WinMX\n");
++#endif
++ if (get_u32(payload,17) == 0 && get_u32(payload,21) == 0 && get_u32(payload,25) == 0 &&
++// get_u32(payload,33) == __constant_htonl(0x71182b1a) && get_u32(payload,37) == __constant_htonl(0x05050000) &&
++// get_u32(payload,133) == __constant_htonl(0x31097edf) && get_u32(payload,145) == __constant_htonl(0xdcb8f792))
++ get_u16(payload,39) == 0 && get_u16(payload,135) == __constant_htons(0x7edf) && get_u16(payload,147) == __constant_htons(0xf792))
++
++ {
++#ifdef IPP2P_DEBUG_WINMX
++ printk(KERN_INFO "got WinMX\n");
++#endif
++ return ((IPP2P_WINMX * 100) + 4);
++ }
++ }
++ return 0;
++} /*search_winmx*/
++
++
++/*Search for appleJuice commands*/
++int
++search_apple (const unsigned char *payload, const u16 plen)
++{
++ if ( (plen > 7) && (payload[6] == 0x0d) && (payload[7] == 0x0a) && (memcmp(payload, "ajprot", 6) == 0)) return (IPP2P_APPLE * 100);
++
++ return 0;
++}
++
++
++/*Search for BitTorrent commands*/
++int
++search_bittorrent (const unsigned char *payload, const u16 plen)
++{
++ if (plen > 20)
++ {
++ /* test for match 0x13+"BitTorrent protocol" */
++ if (payload[0] == 0x13)
++ {
++ if (memcmp(payload+1, "BitTorrent protocol", 19) == 0) return (IPP2P_BIT * 100);
++ }
++
++ /* get tracker commandos, all starts with GET /
++ * then it can follow: scrape| announce
++ * and then ?hash_info=
++ */
++ if (memcmp(payload,"GET /",5) == 0)
++ {
++ /* message scrape */
++ if ( memcmp(payload+5,"scrape?info_hash=",17)==0 ) return (IPP2P_BIT * 100 + 1);
++ /* message announce */
++ if ( memcmp(payload+5,"announce?info_hash=",19)==0 ) return (IPP2P_BIT * 100 + 2);
++ }
++ }
++ else
++ {
++ /* bitcomet encryptes the first packet, so we have to detect another
++ * one later in the flow */
++ /* first try failed, too many missdetections */
++ //if ( size == 5 && get_u32(t,0) == __constant_htonl(1) && t[4] < 3) return (IPP2P_BIT * 100 + 3);
++
++ /* second try: block request packets */
++ if ( plen == 17 && get_u32(payload,0) == __constant_htonl(0x0d) && payload[4] == 0x06 && get_u32(payload,13) == __constant_htonl(0x4000) ) return (IPP2P_BIT * 100 + 3);
++ }
++
++ return 0;
++}
++
++
++
++/*check for Kazaa get command*/
++int
++search_kazaa (const unsigned char *payload, const u16 plen)
++
++{
++ if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a) && memcmp(payload, "GET /.hash=", 11) == 0)
++ return (IPP2P_DATA_KAZAA * 100);
++
++ return 0;
++}
++
++
++/*check for gnutella get command*/
++int
++search_gnu (const unsigned char *payload, const u16 plen)
++{
++ if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
++ {
++ if (memcmp(payload, "GET /get/", 9) == 0) return ((IPP2P_DATA_GNU * 100) + 1);
++ if (memcmp(payload, "GET /uri-res/", 13) == 0) return ((IPP2P_DATA_GNU * 100) + 2);
++ }
++ return 0;
++}
++
++
++/*check for gnutella get commands and other typical data*/
++int
++search_all_gnu (const unsigned char *payload, const u16 plen)
++{
++
++ if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
++ {
++
++ if (memcmp(payload, "GNUTELLA CONNECT/", 17) == 0) return ((IPP2P_GNU * 100) + 1);
++ if (memcmp(payload, "GNUTELLA/", 9) == 0) return ((IPP2P_GNU * 100) + 2);
++
++
++ if ((memcmp(payload, "GET /get/", 9) == 0) || (memcmp(payload, "GET /uri-res/", 13) == 0))
++ {
++ u16 c=8;
++ const u16 end=plen-22;
++ while (c < end) {
++ if ( payload[c] == 0x0a && payload[c+1] == 0x0d && ((memcmp(&payload[c+2], "X-Gnutella-", 11) == 0) || (memcmp(&payload[c+2], "X-Queue:", 8) == 0)))
++ return ((IPP2P_GNU * 100) + 3);
++ c++;
++ }
++ }
++ }
++ return 0;
++}
++
++
++/*check for KaZaA download commands and other typical data*/
++int
++search_all_kazaa (const unsigned char *payload, const u16 plen)
++{
++ if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
++ {
++
++ if (memcmp(payload, "GIVE ", 5) == 0) return ((IPP2P_KAZAA * 100) + 1);
++
++ if (memcmp(payload, "GET /", 5) == 0) {
++ u16 c = 8;
++ const u16 end=plen-22;
++ while (c < end) {
++ if ( payload[c] == 0x0a && payload[c+1] == 0x0d && ((memcmp(&payload[c+2], "X-Kazaa-Username: ", 18) == 0) || (memcmp(&payload[c+2], "User-Agent: PeerEnabler/", 24) == 0)))
++ return ((IPP2P_KAZAA * 100) + 2);
++ c++;
++ }
++ }
++ }
++ return 0;
++}
++
++/*fast check for edonkey file segment transfer command*/
++int
++search_edk (const unsigned char *payload, const u16 plen)
++{
++ if (payload[0] != 0xe3)
++ return 0;
++ else {
++ if (payload[5] == 0x47)
++ return (IPP2P_DATA_EDK * 100);
++ else
++ return 0;
++ }
++}
++
++
++
++/*intensive but slower search for some edonkey packets including size-check*/
++int
++search_all_edk (const unsigned char *payload, const u16 plen)
++{
++ if (payload[0] != 0xe3)
++ return 0;
++ else {
++ //t += head_len;
++ const u16 cmd = get_u16(payload, 1);
++ if (cmd == (plen - 5)) {
++ switch (payload[5]) {
++ case 0x01: return ((IPP2P_EDK * 100) + 1); /*Client: hello or Server:hello*/
++ case 0x4c: return ((IPP2P_EDK * 100) + 9); /*Client: Hello-Answer*/
++ }
++ }
++ return 0;
++ }
++}
++
++
++/*fast check for Direct Connect send command*/
++int
++search_dc (const unsigned char *payload, const u16 plen)
++{
++
++ if (payload[0] != 0x24 )
++ return 0;
++ else {
++ if (memcmp(&payload[1], "Send|", 5) == 0)
++ return (IPP2P_DATA_DC * 100);
++ else
++ return 0;
++ }
++
++}
++
++
++/*intensive but slower check for all direct connect packets*/
++int
++search_all_dc (const unsigned char *payload, const u16 plen)
++{
++// unsigned char *t = haystack;
++
++ if (payload[0] == 0x24 && payload[plen-1] == 0x7c)
++ {
++ const unsigned char *t=&payload[1];
++ /* Client-Hub-Protocol */
++ if (memcmp(t, "Lock ", 5) == 0) return ((IPP2P_DC * 100) + 1);
++ /* Client-Client-Protocol, some are already recognized by client-hub (like lock) */
++ if (memcmp(t, "MyNick ", 7) == 0) return ((IPP2P_DC * 100) + 38);
++ }
++ return 0;
++}
++
++/*check for mute*/
++int
++search_mute (const unsigned char *payload, const u16 plen)
++{
++ if ( plen == 209 || plen == 345 || plen == 473 || plen == 609 || plen == 1121 )
++ {
++ //printk(KERN_DEBUG "size hit: %u",size);
++ if (memcmp(payload,"PublicKey: ",11) == 0 )
++ {
++ return ((IPP2P_MUTE * 100) + 0);
++
++/* if (memcmp(t+size-14,"\x0aEndPublicKey\x0a",14) == 0)
++ {
++ printk(KERN_DEBUG "end pubic key hit: %u",size);
++
++ }*/
++ }
++ }
++ return 0;
++}
++
++
++/* check for xdcc */
++int
++search_xdcc (const unsigned char *payload, const u16 plen)
++{
++ /* search in small packets only */
++ if (plen > 20 && plen < 200 && payload[plen-1] == 0x0a && payload[plen-2] == 0x0d && memcmp(payload,"PRIVMSG ",8) == 0)
++ {
++
++ u16 x=10;
++ const u16 end=plen - 13;
++
++ /* is seems to be a irc private massage, chedck for xdcc command */
++ while (x < end)
++ {
++ if (payload[x] == ':')
++ {
++ if ( memcmp(&payload[x+1],"xdcc send #",11) == 0 )
++ return ((IPP2P_XDCC * 100) + 0);
++ }
++ x++;
++ }
++ }
++ return 0;
++}
++
++/* search for waste */
++int search_waste(const unsigned char *payload, const u16 plen)
++{
++ if ( plen >= 8 && memcmp(payload,"GET.sha1:",9) == 0)
++ return ((IPP2P_WASTE * 100) + 0);
++
++ return 0;
++}
++
++
++static struct {
++ int command;
++ __u8 short_hand; /*for fucntions included in short hands*/
++ int packet_len;
++ int (*function_name) (const unsigned char *, const u16);
++} matchlist[] = {
++ {IPP2P_EDK,SHORT_HAND_IPP2P,20, &search_all_edk},
++// {IPP2P_DATA_KAZAA,SHORT_HAND_DATA,200, &search_kazaa},
++// {IPP2P_DATA_EDK,SHORT_HAND_DATA,60, &search_edk},
++// {IPP2P_DATA_DC,SHORT_HAND_DATA,26, &search_dc},
++ {IPP2P_DC,SHORT_HAND_IPP2P,5, search_all_dc},
++// {IPP2P_DATA_GNU,SHORT_HAND_DATA,40, &search_gnu},
++ {IPP2P_GNU,SHORT_HAND_IPP2P,5, &search_all_gnu},
++ {IPP2P_KAZAA,SHORT_HAND_IPP2P,5, &search_all_kazaa},
++ {IPP2P_BIT,SHORT_HAND_IPP2P,20, &search_bittorrent},
++ {IPP2P_APPLE,SHORT_HAND_IPP2P,5, &search_apple},
++ {IPP2P_SOUL,SHORT_HAND_IPP2P,5, &search_soul},
++ {IPP2P_WINMX,SHORT_HAND_IPP2P,2, &search_winmx},
++ {IPP2P_ARES,SHORT_HAND_IPP2P,5, &search_ares},
++ {IPP2P_MUTE,SHORT_HAND_NONE,200, &search_mute},
++ {IPP2P_WASTE,SHORT_HAND_NONE,5, &search_waste},
++ {IPP2P_XDCC,SHORT_HAND_NONE,5, &search_xdcc},
++ {0,0,0,NULL}
++};
++
++
++static struct {
++ int command;
++ __u8 short_hand; /*for fucntions included in short hands*/
++ int packet_len;
++ int (*function_name) (unsigned char *, int);
++} udp_list[] = {
++ {IPP2P_KAZAA,SHORT_HAND_IPP2P,14, &udp_search_kazaa},
++ {IPP2P_BIT,SHORT_HAND_IPP2P,23, &udp_search_bit},
++ {IPP2P_GNU,SHORT_HAND_IPP2P,11, &udp_search_gnu},
++ {IPP2P_EDK,SHORT_HAND_IPP2P,9, &udp_search_edk},
++ {IPP2P_DC,SHORT_HAND_IPP2P,12, &udp_search_directconnect},
++ {0,0,0,NULL}
++};
++
++
++static int
++match(const struct sk_buff *skb,
++ const struct net_device *in,
++ const struct net_device *out,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++ const struct xt_match *match,
++#endif
++ const void *matchinfo,
++ int offset,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++ unsigned int protoff,
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++ const void *hdr,
++ u_int16_t datalen,
++#endif
++ int *hotdrop)
++{
++ const struct ipt_p2p_info *info = matchinfo;
++ unsigned char *haystack;
++ struct iphdr *ip = skb->nh.iph;
++ int p2p_result = 0, i = 0;
++// int head_len;
++ int hlen = ntohs(ip->tot_len)-(ip->ihl*4); /*hlen = packet-data length*/
++
++ /*must not be a fragment*/
++ if (offset) {
++ if (info->debug) printk("IPP2P.match: offset found %i \n",offset);
++ return 0;
++ }
++
++ /*make sure that skb is linear*/
++ if(skb_is_nonlinear(skb)){
++ if (info->debug) printk("IPP2P.match: nonlinear skb found\n");
++ return 0;
++ }
++
++
++ haystack=(char *)ip+(ip->ihl*4); /*haystack = packet data*/
++
++ switch (ip->protocol){
++ case IPPROTO_TCP: /*what to do with a TCP packet*/
++ {
++ struct tcphdr *tcph = (void *) ip + ip->ihl * 4;
++
++ if (tcph->fin) return 0; /*if FIN bit is set bail out*/
++ if (tcph->syn) return 0; /*if SYN bit is set bail out*/
++ if (tcph->rst) return 0; /*if RST bit is set bail out*/
++
++ haystack += tcph->doff * 4; /*get TCP-Header-Size*/
++ hlen -= tcph->doff * 4;
++ while (matchlist[i].command) {
++ if ((((info->cmd & matchlist[i].command) == matchlist[i].command) ||
++ ((info->cmd & matchlist[i].short_hand) == matchlist[i].short_hand)) &&
++ (hlen > matchlist[i].packet_len)) {
++ p2p_result = matchlist[i].function_name(haystack, hlen);
++ if (p2p_result)
++ {
++ if (info->debug) printk("IPP2P.debug:TCP-match: %i from: %u.%u.%u.%u:%i to: %u.%u.%u.%u:%i Length: %i\n",
++ p2p_result, NIPQUAD(ip->saddr),ntohs(tcph->source), NIPQUAD(ip->daddr),ntohs(tcph->dest),hlen);
++ return p2p_result;
++ }
++ }
++ i++;
++ }
++ return p2p_result;
++ }
++
++ case IPPROTO_UDP: /*what to do with an UDP packet*/
++ {
++ struct udphdr *udph = (void *) ip + ip->ihl * 4;
++
++ while (udp_list[i].command){
++ if ((((info->cmd & udp_list[i].command) == udp_list[i].command) ||
++ ((info->cmd & udp_list[i].short_hand) == udp_list[i].short_hand)) &&
++ (hlen > udp_list[i].packet_len)) {
++ p2p_result = udp_list[i].function_name(haystack, hlen);
++ if (p2p_result){
++ if (info->debug) printk("IPP2P.debug:UDP-match: %i from: %u.%u.%u.%u:%i to: %u.%u.%u.%u:%i Length: %i\n",
++ p2p_result, NIPQUAD(ip->saddr),ntohs(udph->source), NIPQUAD(ip->daddr),ntohs(udph->dest),hlen);
++ return p2p_result;
++ }
++ }
++ i++;
++ }
++ return p2p_result;
++ }
++
++ default: return 0;
++ }
++}
++
++
++
++static int
++checkentry(const char *tablename,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++ const void *ip,
++ const struct xt_match *match,
++#else
++ const struct ipt_ip *ip,
++#endif
++ void *matchinfo,
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
++ unsigned int matchsize,
++#endif
++ unsigned int hook_mask)
++{
++ /* Must specify -p tcp */
++/* if (ip->proto != IPPROTO_TCP || (ip->invflags & IPT_INV_PROTO)) {
++ * printk("ipp2p: Only works on TCP packets, use -p tcp\n");
++ * return 0;
++ * }*/
++ return 1;
++}
++
++
++
++
++static struct ipt_match ipp2p_match = {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++ { NULL, NULL },
++ "ipp2p",
++ &match,
++ &checkentry,
++ NULL,
++ THIS_MODULE
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ .name = "ipp2p",
++ .match = &match,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++ .matchsize = sizeof(struct ipt_p2p_info),
++#endif
++ .checkentry = &checkentry,
++ .me = THIS_MODULE,
++#endif
++};
++
++
++static int __init init(void)
++{
++ printk(KERN_INFO "IPP2P v%s loading\n", IPP2P_VERSION);
++ return ipt_register_match(&ipp2p_match);
++}
++
++static void __exit fini(void)
++{
++ ipt_unregister_match(&ipp2p_match);
++ printk(KERN_INFO "IPP2P v%s unloaded\n", IPP2P_VERSION);
++}
++
++module_init(init);
++module_exit(fini);
++
++
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/Kconfig linux-2.6.19.dev/net/ipv4/netfilter/Kconfig
+--- linux-2.6.19.old/net/ipv4/netfilter/Kconfig 2006-12-14 03:13:39.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/Kconfig 2006-12-14 03:13:39.000000000 +0100
+@@ -248,6 +248,12 @@
+
+ To compile it as a module, choose M here. If unsure, say N.
+
++config IP_NF_MATCH_IPP2P
++ tristate "IPP2P"
++ depends on IP_NF_IPTABLES
++ help
++ Module for matching traffic of various Peer-to-Peer applications
++
+ config IP_NF_MATCH_TOS
+ tristate "TOS match support"
+ depends on IP_NF_IPTABLES
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/Makefile linux-2.6.19.dev/net/ipv4/netfilter/Makefile
+--- linux-2.6.19.old/net/ipv4/netfilter/Makefile 2006-12-14 03:13:39.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/Makefile 2006-12-14 03:13:39.000000000 +0100
+@@ -62,7 +62,7 @@
+ obj-$(CONFIG_IP_NF_MATCH_AH) += ipt_ah.o
+ obj-$(CONFIG_IP_NF_MATCH_TTL) += ipt_ttl.o
+ obj-$(CONFIG_IP_NF_MATCH_ADDRTYPE) += ipt_addrtype.o
+-
++obj-$(CONFIG_IP_NF_MATCH_IPP2P) += ipt_ipp2p.o
+ obj-$(CONFIG_IP_NF_MATCH_LAYER7) += ipt_layer7.o
+
+ # targets
diff --git a/packages/linux/linux-magicbox-2.6.19.2/120-openswan-2.4.0.kernel-2.6-natt.patch b/packages/linux/linux-magicbox-2.6.19.2/120-openswan-2.4.0.kernel-2.6-natt.patch
new file mode 100644
index 0000000000..2b4238c688
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/120-openswan-2.4.0.kernel-2.6-natt.patch
@@ -0,0 +1,171 @@
+diff -urN linux-2.6.19.old/include/net/xfrmudp.h linux-2.6.19.dev/include/net/xfrmudp.h
+--- linux-2.6.19.old/include/net/xfrmudp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/net/xfrmudp.h 2006-12-14 03:13:41.000000000 +0100
+@@ -0,0 +1,10 @@
++/*
++ * pointer to function for type that xfrm4_input wants, to permit
++ * decoupling of XFRM from udp.c
++ */
++#define HAVE_XFRM4_UDP_REGISTER
++
++typedef int (*xfrm4_rcv_encap_t)(struct sk_buff *skb, __u16 encap_type);
++extern int udp4_register_esp_rcvencap(xfrm4_rcv_encap_t func
++ , xfrm4_rcv_encap_t *oldfunc);
++extern int udp4_unregister_esp_rcvencap(xfrm4_rcv_encap_t func);
+diff -urN linux-2.6.19.old/net/ipv4/Kconfig linux-2.6.19.dev/net/ipv4/Kconfig
+--- linux-2.6.19.old/net/ipv4/Kconfig 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/Kconfig 2006-12-14 03:13:41.000000000 +0100
+@@ -273,6 +273,12 @@
+ Network), but can be distributed all over the Internet. If you want
+ to do that, say Y here and to "IP multicast routing" below.
+
++config IPSEC_NAT_TRAVERSAL
++ bool "IPSEC NAT-Traversal (KLIPS compatible)"
++ depends on INET
++ ---help---
++ Includes support for RFC3947/RFC3948 NAT-Traversal of ESP over UDP.
++
+ config IP_MROUTE
+ bool "IP: multicast routing"
+ depends on IP_MULTICAST
+diff -urN linux-2.6.19.old/net/ipv4/udp.c linux-2.6.19.dev/net/ipv4/udp.c
+--- linux-2.6.19.old/net/ipv4/udp.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/udp.c 2006-12-14 03:13:41.000000000 +0100
+@@ -108,11 +108,14 @@
+ #include <net/inet_common.h>
+ #include <net/checksum.h>
+ #include <net/xfrm.h>
++#include <net/xfrmudp.h>
+
+ /*
+ * Snmp MIB for the UDP layer
+ */
+
++static xfrm4_rcv_encap_t xfrm4_rcv_encap_func;
++
+ DEFINE_SNMP_STAT(struct udp_mib, udp_statistics) __read_mostly;
+
+ struct hlist_head udp_hash[UDP_HTABLE_SIZE];
+@@ -917,6 +920,42 @@
+ sk_common_release(sk);
+ }
+
++#if defined(CONFIG_XFRM) || defined(CONFIG_IPSEC_NAT_TRAVERSAL)
++
++/* if XFRM isn't a module, then register it directly. */
++#if 0 && !defined(CONFIG_XFRM_MODULE) && !defined(CONFIG_IPSEC_NAT_TRAVERSAL)
++static xfrm4_rcv_encap_t xfrm4_rcv_encap_func = xfrm4_rcv_encap;
++#else
++static xfrm4_rcv_encap_t xfrm4_rcv_encap_func = NULL;
++#endif
++
++int udp4_register_esp_rcvencap(xfrm4_rcv_encap_t func
++ , xfrm4_rcv_encap_t *oldfunc)
++{
++ if(oldfunc != NULL) {
++ *oldfunc = xfrm4_rcv_encap_func;
++ }
++
++#if 0
++ if(xfrm4_rcv_encap_func != NULL)
++ return -1;
++#endif
++
++ xfrm4_rcv_encap_func = func;
++ return 0;
++}
++
++int udp4_unregister_esp_rcvencap(xfrm4_rcv_encap_t func)
++{
++ if(xfrm4_rcv_encap_func != func)
++ return -1;
++
++ xfrm4_rcv_encap_func = NULL;
++ return 0;
++}
++#endif /* CONFIG_XFRM_MODULE || CONFIG_IPSEC_NAT_TRAVERSAL */
++
++
+ /* return:
+ * 1 if the the UDP system should process it
+ * 0 if we should drop this packet
+@@ -924,9 +963,9 @@
+ */
+ static int udp_encap_rcv(struct sock * sk, struct sk_buff *skb)
+ {
+-#ifndef CONFIG_XFRM
++#if !defined(CONFIG_XFRM) && !defined(CONFIG_IPSEC_NAT_TRAVERSAL)
+ return 1;
+-#else
++#else /* either CONFIG_XFRM or CONFIG_IPSEC_NAT_TRAVERSAL */
+ struct udp_sock *up = udp_sk(sk);
+ struct udphdr *uh;
+ struct iphdr *iph;
+@@ -939,11 +978,11 @@
+ /* if we're overly short, let UDP handle it */
+ len = skb->len - sizeof(struct udphdr);
+ if (len <= 0)
+- return 1;
++ return 2;
+
+ /* if this is not encapsulated socket, then just return now */
+ if (!encap_type)
+- return 1;
++ return 3;
+
+ /* If this is a paged skb, make sure we pull up
+ * whatever data we need to look at. */
+@@ -966,7 +1005,7 @@
+ len = sizeof(struct udphdr);
+ } else
+ /* Must be an IKE packet.. pass it through */
+- return 1;
++ return 4;
+ break;
+ case UDP_ENCAP_ESPINUDP_NON_IKE:
+ /* Check if this is a keepalive packet. If so, eat it. */
+@@ -979,7 +1018,7 @@
+ len = sizeof(struct udphdr) + 2 * sizeof(u32);
+ } else
+ /* Must be an IKE packet.. pass it through */
+- return 1;
++ return 5;
+ break;
+ }
+
+@@ -990,6 +1029,8 @@
+ */
+ if (skb_cloned(skb) && pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
+ return 0;
++ if (skb_cloned(skb) && pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
++ return 0;
+
+ /* Now we can update and verify the packet length... */
+ iph = skb->nh.iph;
+@@ -1055,9 +1096,13 @@
+ return 0;
+ }
+ if (ret < 0) {
+- /* process the ESP packet */
+- ret = xfrm4_rcv_encap(skb, up->encap_type);
+- UDP_INC_STATS_BH(UDP_MIB_INDATAGRAMS);
++ if(xfrm4_rcv_encap_func != NULL) {
++ ret = (*xfrm4_rcv_encap_func)(skb, up->encap_type);
++ UDP_INC_STATS_BH(UDP_MIB_INDATAGRAMS);
++ } else {
++ UDP_INC_STATS_BH(UDP_MIB_INERRORS);
++ ret = 1;
++ }
+ return -ret;
+ }
+ /* FALLTHROUGH -- it's a UDP Packet */
+@@ -1639,3 +1684,9 @@
+ EXPORT_SYMBOL(udp_proc_register);
+ EXPORT_SYMBOL(udp_proc_unregister);
+ #endif
++
++#if defined(CONFIG_IPSEC_NAT_TRAVERSAL)
++EXPORT_SYMBOL(udp4_register_esp_rcvencap);
++EXPORT_SYMBOL(udp4_unregister_esp_rcvencap);
++#endif
++
diff --git a/packages/linux/linux-magicbox-2.6.19.2/130-netfilter-ipset.patch b/packages/linux/linux-magicbox-2.6.19.2/130-netfilter-ipset.patch
new file mode 100644
index 0000000000..8a35d8a6b4
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/130-netfilter-ipset.patch
@@ -0,0 +1,5851 @@
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set.h 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,489 @@
++#ifndef _IP_SET_H
++#define _IP_SET_H
++
++/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
++ * Patrick Schaaf <bof@bof.de>
++ * Martin Josefsson <gandalf@wlug.westbo.se>
++ * Copyright (C) 2003-2004 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
++ *
++ * 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.
++ */
++
++/*
++ * A sockopt of such quality has hardly ever been seen before on the open
++ * market! This little beauty, hardly ever used: above 64, so it's
++ * traditionally used for firewalling, not touched (even once!) by the
++ * 2.0, 2.2 and 2.4 kernels!
++ *
++ * Comes with its own certificate of authenticity, valid anywhere in the
++ * Free world!
++ *
++ * Rusty, 19.4.2000
++ */
++#define SO_IP_SET 83
++
++/*
++ * Heavily modify by Joakim Axelsson 08.03.2002
++ * - Made it more modulebased
++ *
++ * Additional heavy modifications by Jozsef Kadlecsik 22.02.2004
++ * - bindings added
++ * - in order to "deal with" backward compatibility, renamed to ipset
++ */
++
++/*
++ * Used so that the kernel module and ipset-binary can match their versions
++ */
++#define IP_SET_PROTOCOL_VERSION 2
++
++#define IP_SET_MAXNAMELEN 32 /* set names and set typenames */
++
++/* Lets work with our own typedef for representing an IP address.
++ * We hope to make the code more portable, possibly to IPv6...
++ *
++ * The representation works in HOST byte order, because most set types
++ * will perform arithmetic operations and compare operations.
++ *
++ * For now the type is an uint32_t.
++ *
++ * Make sure to ONLY use the functions when translating and parsing
++ * in order to keep the host byte order and make it more portable:
++ * parse_ip()
++ * parse_mask()
++ * parse_ipandmask()
++ * ip_tostring()
++ * (Joakim: where are they???)
++ */
++
++typedef uint32_t ip_set_ip_t;
++
++/* Sets are identified by an id in kernel space. Tweak with ip_set_id_t
++ * and IP_SET_INVALID_ID if you want to increase the max number of sets.
++ */
++typedef uint16_t ip_set_id_t;
++
++#define IP_SET_INVALID_ID 65535
++
++/* How deep we follow bindings */
++#define IP_SET_MAX_BINDINGS 6
++
++/*
++ * Option flags for kernel operations (ipt_set_info)
++ */
++#define IPSET_SRC 0x01 /* Source match/add */
++#define IPSET_DST 0x02 /* Destination match/add */
++#define IPSET_MATCH_INV 0x04 /* Inverse matching */
++
++/*
++ * Set types (flavours)
++ */
++#define IPSET_TYPE_IP 0 /* IP address type of set */
++#define IPSET_TYPE_PORT 1 /* Port type of set */
++
++/* Reserved keywords */
++#define IPSET_TOKEN_DEFAULT ":default:"
++#define IPSET_TOKEN_ALL ":all:"
++
++/* SO_IP_SET operation constants, and their request struct types.
++ *
++ * Operation ids:
++ * 0-99: commands with version checking
++ * 100-199: add/del/test/bind/unbind
++ * 200-299: list, save, restore
++ */
++
++/* Single shot operations:
++ * version, create, destroy, flush, rename and swap
++ *
++ * Sets are identified by name.
++ */
++
++#define IP_SET_REQ_STD \
++ unsigned op; \
++ unsigned version; \
++ char name[IP_SET_MAXNAMELEN]
++
++#define IP_SET_OP_CREATE 0x00000001 /* Create a new (empty) set */
++struct ip_set_req_create {
++ IP_SET_REQ_STD;
++ char typename[IP_SET_MAXNAMELEN];
++};
++
++#define IP_SET_OP_DESTROY 0x00000002 /* Remove a (empty) set */
++struct ip_set_req_std {
++ IP_SET_REQ_STD;
++};
++
++#define IP_SET_OP_FLUSH 0x00000003 /* Remove all IPs in a set */
++/* Uses ip_set_req_std */
++
++#define IP_SET_OP_RENAME 0x00000004 /* Rename a set */
++/* Uses ip_set_req_create */
++
++#define IP_SET_OP_SWAP 0x00000005 /* Swap two sets */
++/* Uses ip_set_req_create */
++
++union ip_set_name_index {
++ char name[IP_SET_MAXNAMELEN];
++ ip_set_id_t index;
++};
++
++#define IP_SET_OP_GET_BYNAME 0x00000006 /* Get set index by name */
++struct ip_set_req_get_set {
++ unsigned op;
++ unsigned version;
++ union ip_set_name_index set;
++};
++
++#define IP_SET_OP_GET_BYINDEX 0x00000007 /* Get set name by index */
++/* Uses ip_set_req_get_set */
++
++#define IP_SET_OP_VERSION 0x00000100 /* Ask kernel version */
++struct ip_set_req_version {
++ unsigned op;
++ unsigned version;
++};
++
++/* Double shots operations:
++ * add, del, test, bind and unbind.
++ *
++ * First we query the kernel to get the index and type of the target set,
++ * then issue the command. Validity of IP is checked in kernel in order
++ * to minimalize sockopt operations.
++ */
++
++/* Get minimal set data for add/del/test/bind/unbind IP */
++#define IP_SET_OP_ADT_GET 0x00000010 /* Get set and type */
++struct ip_set_req_adt_get {
++ unsigned op;
++ unsigned version;
++ union ip_set_name_index set;
++ char typename[IP_SET_MAXNAMELEN];
++};
++
++#define IP_SET_REQ_BYINDEX \
++ unsigned op; \
++ ip_set_id_t index;
++
++struct ip_set_req_adt {
++ IP_SET_REQ_BYINDEX;
++};
++
++#define IP_SET_OP_ADD_IP 0x00000101 /* Add an IP to a set */
++/* Uses ip_set_req_adt, with type specific addage */
++
++#define IP_SET_OP_DEL_IP 0x00000102 /* Remove an IP from a set */
++/* Uses ip_set_req_adt, with type specific addage */
++
++#define IP_SET_OP_TEST_IP 0x00000103 /* Test an IP in a set */
++/* Uses ip_set_req_adt, with type specific addage */
++
++#define IP_SET_OP_BIND_SET 0x00000104 /* Bind an IP to a set */
++/* Uses ip_set_req_bind, with type specific addage */
++struct ip_set_req_bind {
++ IP_SET_REQ_BYINDEX;
++ char binding[IP_SET_MAXNAMELEN];
++};
++
++#define IP_SET_OP_UNBIND_SET 0x00000105 /* Unbind an IP from a set */
++/* Uses ip_set_req_bind, with type speficic addage
++ * index = 0 means unbinding for all sets */
++
++#define IP_SET_OP_TEST_BIND_SET 0x00000106 /* Test binding an IP to a set */
++/* Uses ip_set_req_bind, with type specific addage */
++
++/* Multiple shots operations: list, save, restore.
++ *
++ * - check kernel version and query the max number of sets
++ * - get the basic information on all sets
++ * and size required for the next step
++ * - get actual set data: header, data, bindings
++ */
++
++/* Get max_sets and the index of a queried set
++ */
++#define IP_SET_OP_MAX_SETS 0x00000020
++struct ip_set_req_max_sets {
++ unsigned op;
++ unsigned version;
++ ip_set_id_t max_sets; /* max_sets */
++ ip_set_id_t sets; /* real number of sets */
++ union ip_set_name_index set; /* index of set if name used */
++};
++
++/* Get the id and name of the sets plus size for next step */
++#define IP_SET_OP_LIST_SIZE 0x00000201
++#define IP_SET_OP_SAVE_SIZE 0x00000202
++struct ip_set_req_setnames {
++ unsigned op;
++ ip_set_id_t index; /* set to list/save */
++ size_t size; /* size to get setdata/bindings */
++ /* followed by sets number of struct ip_set_name_list */
++};
++
++struct ip_set_name_list {
++ char name[IP_SET_MAXNAMELEN];
++ char typename[IP_SET_MAXNAMELEN];
++ ip_set_id_t index;
++ ip_set_id_t id;
++};
++
++/* The actual list operation */
++#define IP_SET_OP_LIST 0x00000203
++struct ip_set_req_list {
++ IP_SET_REQ_BYINDEX;
++ /* sets number of struct ip_set_list in reply */
++};
++
++struct ip_set_list {
++ ip_set_id_t index;
++ ip_set_id_t binding;
++ u_int32_t ref;
++ size_t header_size; /* Set header data of header_size */
++ size_t members_size; /* Set members data of members_size */
++ size_t bindings_size; /* Set bindings data of bindings_size */
++};
++
++struct ip_set_hash_list {
++ ip_set_ip_t ip;
++ ip_set_id_t binding;
++};
++
++/* The save operation */
++#define IP_SET_OP_SAVE 0x00000204
++/* Uses ip_set_req_list, in the reply replaced by
++ * sets number of struct ip_set_save plus a marker
++ * ip_set_save followed by ip_set_hash_save structures.
++ */
++struct ip_set_save {
++ ip_set_id_t index;
++ ip_set_id_t binding;
++ size_t header_size; /* Set header data of header_size */
++ size_t members_size; /* Set members data of members_size */
++};
++
++/* At restoring, ip == 0 means default binding for the given set: */
++struct ip_set_hash_save {
++ ip_set_ip_t ip;
++ ip_set_id_t id;
++ ip_set_id_t binding;
++};
++
++/* The restore operation */
++#define IP_SET_OP_RESTORE 0x00000205
++/* Uses ip_set_req_setnames followed by ip_set_restore structures
++ * plus a marker ip_set_restore, followed by ip_set_hash_save
++ * structures.
++ */
++struct ip_set_restore {
++ char name[IP_SET_MAXNAMELEN];
++ char typename[IP_SET_MAXNAMELEN];
++ ip_set_id_t index;
++ size_t header_size; /* Create data of header_size */
++ size_t members_size; /* Set members data of members_size */
++};
++
++static inline int bitmap_bytes(ip_set_ip_t a, ip_set_ip_t b)
++{
++ return 4 * ((((b - a + 8) / 8) + 3) / 4);
++}
++
++#ifdef __KERNEL__
++
++#define ip_set_printk(format, args...) \
++ do { \
++ printk("%s: %s: ", __FILE__, __FUNCTION__); \
++ printk(format "\n" , ## args); \
++ } while (0)
++
++#if defined(IP_SET_DEBUG)
++#define DP(format, args...) \
++ do { \
++ printk("%s: %s (DBG): ", __FILE__, __FUNCTION__);\
++ printk(format "\n" , ## args); \
++ } while (0)
++#define IP_SET_ASSERT(x) \
++ do { \
++ if (!(x)) \
++ printk("IP_SET_ASSERT: %s:%i(%s)\n", \
++ __FILE__, __LINE__, __FUNCTION__); \
++ } while (0)
++#else
++#define DP(format, args...)
++#define IP_SET_ASSERT(x)
++#endif
++
++struct ip_set;
++
++/*
++ * The ip_set_type definition - one per set type, e.g. "ipmap".
++ *
++ * Each individual set has a pointer, set->type, going to one
++ * of these structures. Function pointers inside the structure implement
++ * the real behaviour of the sets.
++ *
++ * If not mentioned differently, the implementation behind the function
++ * pointers of a set_type, is expected to return 0 if ok, and a negative
++ * errno (e.g. -EINVAL) on error.
++ */
++struct ip_set_type {
++ struct list_head list; /* next in list of set types */
++
++ /* test for IP in set (kernel: iptables -m set src|dst)
++ * return 0 if not in set, 1 if in set.
++ */
++ int (*testip_kernel) (struct ip_set *set,
++ const struct sk_buff * skb,
++ u_int32_t flags,
++ ip_set_ip_t *ip);
++
++ /* test for IP in set (userspace: ipset -T set IP)
++ * return 0 if not in set, 1 if in set.
++ */
++ int (*testip) (struct ip_set *set,
++ const void *data, size_t size,
++ ip_set_ip_t *ip);
++
++ /*
++ * Size of the data structure passed by when
++ * adding/deletin/testing an entry.
++ */
++ size_t reqsize;
++
++ /* Add IP into set (userspace: ipset -A set IP)
++ * Return -EEXIST if the address is already in the set,
++ * and -ERANGE if the address lies outside the set bounds.
++ * If the address was not already in the set, 0 is returned.
++ */
++ int (*addip) (struct ip_set *set,
++ const void *data, size_t size,
++ ip_set_ip_t *ip);
++
++ /* Add IP into set (kernel: iptables ... -j SET set src|dst)
++ * Return -EEXIST if the address is already in the set,
++ * and -ERANGE if the address lies outside the set bounds.
++ * If the address was not already in the set, 0 is returned.
++ */
++ int (*addip_kernel) (struct ip_set *set,
++ const struct sk_buff * skb,
++ u_int32_t flags,
++ ip_set_ip_t *ip);
++
++ /* remove IP from set (userspace: ipset -D set --entry x)
++ * Return -EEXIST if the address is NOT in the set,
++ * and -ERANGE if the address lies outside the set bounds.
++ * If the address really was in the set, 0 is returned.
++ */
++ int (*delip) (struct ip_set *set,
++ const void *data, size_t size,
++ ip_set_ip_t *ip);
++
++ /* remove IP from set (kernel: iptables ... -j SET --entry x)
++ * Return -EEXIST if the address is NOT in the set,
++ * and -ERANGE if the address lies outside the set bounds.
++ * If the address really was in the set, 0 is returned.
++ */
++ int (*delip_kernel) (struct ip_set *set,
++ const struct sk_buff * skb,
++ u_int32_t flags,
++ ip_set_ip_t *ip);
++
++ /* new set creation - allocated type specific items
++ */
++ int (*create) (struct ip_set *set,
++ const void *data, size_t size);
++
++ /* retry the operation after successfully tweaking the set
++ */
++ int (*retry) (struct ip_set *set);
++
++ /* set destruction - free type specific items
++ * There is no return value.
++ * Can be called only when child sets are destroyed.
++ */
++ void (*destroy) (struct ip_set *set);
++
++ /* set flushing - reset all bits in the set, or something similar.
++ * There is no return value.
++ */
++ void (*flush) (struct ip_set *set);
++
++ /* Listing: size needed for header
++ */
++ size_t header_size;
++
++ /* Listing: Get the header
++ *
++ * Fill in the information in "data".
++ * This function is always run after list_header_size() under a
++ * writelock on the set. Therefor is the length of "data" always
++ * correct.
++ */
++ void (*list_header) (const struct ip_set *set,
++ void *data);
++
++ /* Listing: Get the size for the set members
++ */
++ int (*list_members_size) (const struct ip_set *set);
++
++ /* Listing: Get the set members
++ *
++ * Fill in the information in "data".
++ * This function is always run after list_member_size() under a
++ * writelock on the set. Therefor is the length of "data" always
++ * correct.
++ */
++ void (*list_members) (const struct ip_set *set,
++ void *data);
++
++ char typename[IP_SET_MAXNAMELEN];
++ char typecode;
++ int protocol_version;
++
++ /* Set this to THIS_MODULE if you are a module, otherwise NULL */
++ struct module *me;
++};
++
++extern int ip_set_register_set_type(struct ip_set_type *set_type);
++extern void ip_set_unregister_set_type(struct ip_set_type *set_type);
++
++/* A generic ipset */
++struct ip_set {
++ char name[IP_SET_MAXNAMELEN]; /* the name of the set */
++ rwlock_t lock; /* lock for concurrency control */
++ ip_set_id_t id; /* set id for swapping */
++ ip_set_id_t binding; /* default binding for the set */
++ atomic_t ref; /* in kernel and in hash references */
++ struct ip_set_type *type; /* the set types */
++ void *data; /* pooltype specific data */
++};
++
++/* Structure to bind set elements to sets */
++struct ip_set_hash {
++ struct list_head list; /* list of clashing entries in hash */
++ ip_set_ip_t ip; /* ip from set */
++ ip_set_id_t id; /* set id */
++ ip_set_id_t binding; /* set we bind the element to */
++};
++
++/* register and unregister set references */
++extern ip_set_id_t ip_set_get_byname(const char name[IP_SET_MAXNAMELEN]);
++extern ip_set_id_t ip_set_get_byindex(ip_set_id_t id);
++extern void ip_set_put(ip_set_id_t id);
++
++/* API for iptables set match, and SET target */
++extern void ip_set_addip_kernel(ip_set_id_t id,
++ const struct sk_buff *skb,
++ const u_int32_t *flags);
++extern void ip_set_delip_kernel(ip_set_id_t id,
++ const struct sk_buff *skb,
++ const u_int32_t *flags);
++extern int ip_set_testip_kernel(ip_set_id_t id,
++ const struct sk_buff *skb,
++ const u_int32_t *flags);
++
++#endif /* __KERNEL__ */
++
++#endif /*_IP_SET_H*/
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_iphash.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_iphash.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_iphash.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_iphash.h 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,30 @@
++#ifndef __IP_SET_IPHASH_H
++#define __IP_SET_IPHASH_H
++
++#include <linux/netfilter_ipv4/ip_set.h>
++
++#define SETTYPE_NAME "iphash"
++#define MAX_RANGE 0x0000FFFF
++
++struct ip_set_iphash {
++ ip_set_ip_t *members; /* the iphash proper */
++ uint32_t initval; /* initval for jhash_1word */
++ uint32_t prime; /* prime for double hashing */
++ uint32_t hashsize; /* hash size */
++ uint16_t probes; /* max number of probes */
++ uint16_t resize; /* resize factor in percent */
++ ip_set_ip_t netmask; /* netmask */
++};
++
++struct ip_set_req_iphash_create {
++ uint32_t hashsize;
++ uint16_t probes;
++ uint16_t resize;
++ ip_set_ip_t netmask;
++};
++
++struct ip_set_req_iphash {
++ ip_set_ip_t ip;
++};
++
++#endif /* __IP_SET_IPHASH_H */
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_ipmap.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_ipmap.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_ipmap.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_ipmap.h 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,56 @@
++#ifndef __IP_SET_IPMAP_H
++#define __IP_SET_IPMAP_H
++
++#include <linux/netfilter_ipv4/ip_set.h>
++
++#define SETTYPE_NAME "ipmap"
++#define MAX_RANGE 0x0000FFFF
++
++struct ip_set_ipmap {
++ void *members; /* the ipmap proper */
++ ip_set_ip_t first_ip; /* host byte order, included in range */
++ ip_set_ip_t last_ip; /* host byte order, included in range */
++ ip_set_ip_t netmask; /* subnet netmask */
++ ip_set_ip_t sizeid; /* size of set in IPs */
++ u_int16_t hosts; /* number of hosts in a subnet */
++};
++
++struct ip_set_req_ipmap_create {
++ ip_set_ip_t from;
++ ip_set_ip_t to;
++ ip_set_ip_t netmask;
++};
++
++struct ip_set_req_ipmap {
++ ip_set_ip_t ip;
++};
++
++unsigned int
++mask_to_bits(ip_set_ip_t mask)
++{
++ unsigned int bits = 32;
++ ip_set_ip_t maskaddr;
++
++ if (mask == 0xFFFFFFFF)
++ return bits;
++
++ maskaddr = 0xFFFFFFFE;
++ while (--bits >= 0 && maskaddr != mask)
++ maskaddr <<= 1;
++
++ return bits;
++}
++
++ip_set_ip_t
++range_to_mask(ip_set_ip_t from, ip_set_ip_t to, unsigned int *bits)
++{
++ ip_set_ip_t mask = 0xFFFFFFFE;
++
++ *bits = 32;
++ while (--(*bits) >= 0 && mask && (to & mask) != from)
++ mask <<= 1;
++
++ return mask;
++}
++
++#endif /* __IP_SET_IPMAP_H */
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_iptree.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_iptree.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_iptree.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_iptree.h 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,39 @@
++#ifndef __IP_SET_IPTREE_H
++#define __IP_SET_IPTREE_H
++
++#include <linux/netfilter_ipv4/ip_set.h>
++
++#define SETTYPE_NAME "iptree"
++#define MAX_RANGE 0x0000FFFF
++
++struct ip_set_iptreed {
++ unsigned long expires[255]; /* x.x.x.ADDR */
++};
++
++struct ip_set_iptreec {
++ struct ip_set_iptreed *tree[255]; /* x.x.ADDR.* */
++};
++
++struct ip_set_iptreeb {
++ struct ip_set_iptreec *tree[255]; /* x.ADDR.*.* */
++};
++
++struct ip_set_iptree {
++ unsigned int timeout;
++ unsigned int gc_interval;
++#ifdef __KERNEL__
++ struct timer_list gc;
++ struct ip_set_iptreeb *tree[255]; /* ADDR.*.*.* */
++#endif
++};
++
++struct ip_set_req_iptree_create {
++ unsigned int timeout;
++};
++
++struct ip_set_req_iptree {
++ ip_set_ip_t ip;
++ unsigned int timeout;
++};
++
++#endif /* __IP_SET_IPTREE_H */
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_jhash.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_jhash.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_jhash.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_jhash.h 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,148 @@
++#ifndef _LINUX_IPSET_JHASH_H
++#define _LINUX_IPSET_JHASH_H
++
++/* This is a copy of linux/jhash.h but the types u32/u8 are changed
++ * to __u32/__u8 so that the header file can be included into
++ * userspace code as well. Jozsef Kadlecsik (kadlec@blackhole.kfki.hu)
++ */
++
++/* jhash.h: Jenkins hash support.
++ *
++ * Copyright (C) 1996 Bob Jenkins (bob_jenkins@burtleburtle.net)
++ *
++ * http://burtleburtle.net/bob/hash/
++ *
++ * These are the credits from Bob's sources:
++ *
++ * lookup2.c, by Bob Jenkins, December 1996, Public Domain.
++ * hash(), hash2(), hash3, and mix() are externally useful functions.
++ * Routines to test the hash are included if SELF_TEST is defined.
++ * You can use this free for any purpose. It has no warranty.
++ *
++ * Copyright (C) 2003 David S. Miller (davem@redhat.com)
++ *
++ * I've modified Bob's hash to be useful in the Linux kernel, and
++ * any bugs present are surely my fault. -DaveM
++ */
++
++/* NOTE: Arguments are modified. */
++#define __jhash_mix(a, b, c) \
++{ \
++ a -= b; a -= c; a ^= (c>>13); \
++ b -= c; b -= a; b ^= (a<<8); \
++ c -= a; c -= b; c ^= (b>>13); \
++ a -= b; a -= c; a ^= (c>>12); \
++ b -= c; b -= a; b ^= (a<<16); \
++ c -= a; c -= b; c ^= (b>>5); \
++ a -= b; a -= c; a ^= (c>>3); \
++ b -= c; b -= a; b ^= (a<<10); \
++ c -= a; c -= b; c ^= (b>>15); \
++}
++
++/* The golden ration: an arbitrary value */
++#define JHASH_GOLDEN_RATIO 0x9e3779b9
++
++/* The most generic version, hashes an arbitrary sequence
++ * of bytes. No alignment or length assumptions are made about
++ * the input key.
++ */
++static inline __u32 jhash(void *key, __u32 length, __u32 initval)
++{
++ __u32 a, b, c, len;
++ __u8 *k = key;
++
++ len = length;
++ a = b = JHASH_GOLDEN_RATIO;
++ c = initval;
++
++ while (len >= 12) {
++ a += (k[0] +((__u32)k[1]<<8) +((__u32)k[2]<<16) +((__u32)k[3]<<24));
++ b += (k[4] +((__u32)k[5]<<8) +((__u32)k[6]<<16) +((__u32)k[7]<<24));
++ c += (k[8] +((__u32)k[9]<<8) +((__u32)k[10]<<16)+((__u32)k[11]<<24));
++
++ __jhash_mix(a,b,c);
++
++ k += 12;
++ len -= 12;
++ }
++
++ c += length;
++ switch (len) {
++ case 11: c += ((__u32)k[10]<<24);
++ case 10: c += ((__u32)k[9]<<16);
++ case 9 : c += ((__u32)k[8]<<8);
++ case 8 : b += ((__u32)k[7]<<24);
++ case 7 : b += ((__u32)k[6]<<16);
++ case 6 : b += ((__u32)k[5]<<8);
++ case 5 : b += k[4];
++ case 4 : a += ((__u32)k[3]<<24);
++ case 3 : a += ((__u32)k[2]<<16);
++ case 2 : a += ((__u32)k[1]<<8);
++ case 1 : a += k[0];
++ };
++
++ __jhash_mix(a,b,c);
++
++ return c;
++}
++
++/* A special optimized version that handles 1 or more of __u32s.
++ * The length parameter here is the number of __u32s in the key.
++ */
++static inline __u32 jhash2(__u32 *k, __u32 length, __u32 initval)
++{
++ __u32 a, b, c, len;
++
++ a = b = JHASH_GOLDEN_RATIO;
++ c = initval;
++ len = length;
++
++ while (len >= 3) {
++ a += k[0];
++ b += k[1];
++ c += k[2];
++ __jhash_mix(a, b, c);
++ k += 3; len -= 3;
++ }
++
++ c += length * 4;
++
++ switch (len) {
++ case 2 : b += k[1];
++ case 1 : a += k[0];
++ };
++
++ __jhash_mix(a,b,c);
++
++ return c;
++}
++
++
++/* A special ultra-optimized versions that knows they are hashing exactly
++ * 3, 2 or 1 word(s).
++ *
++ * NOTE: In partilar the "c += length; __jhash_mix(a,b,c);" normally
++ * done at the end is not done here.
++ */
++static inline __u32 jhash_3words(__u32 a, __u32 b, __u32 c, __u32 initval)
++{
++ a += JHASH_GOLDEN_RATIO;
++ b += JHASH_GOLDEN_RATIO;
++ c += initval;
++
++ __jhash_mix(a, b, c);
++
++ return c;
++}
++
++static inline __u32 jhash_2words(__u32 a, __u32 b, __u32 initval)
++{
++ return jhash_3words(a, b, 0, initval);
++}
++
++static inline __u32 jhash_1word(__u32 a, __u32 initval)
++{
++ return jhash_3words(a, 0, 0, initval);
++}
++
++#endif /* _LINUX_IPSET_JHASH_H */
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_macipmap.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_macipmap.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_macipmap.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_macipmap.h 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,38 @@
++#ifndef __IP_SET_MACIPMAP_H
++#define __IP_SET_MACIPMAP_H
++
++#include <linux/netfilter_ipv4/ip_set.h>
++
++#define SETTYPE_NAME "macipmap"
++#define MAX_RANGE 0x0000FFFF
++
++/* general flags */
++#define IPSET_MACIP_MATCHUNSET 1
++
++/* per ip flags */
++#define IPSET_MACIP_ISSET 1
++
++struct ip_set_macipmap {
++ void *members; /* the macipmap proper */
++ ip_set_ip_t first_ip; /* host byte order, included in range */
++ ip_set_ip_t last_ip; /* host byte order, included in range */
++ u_int32_t flags;
++};
++
++struct ip_set_req_macipmap_create {
++ ip_set_ip_t from;
++ ip_set_ip_t to;
++ u_int32_t flags;
++};
++
++struct ip_set_req_macipmap {
++ ip_set_ip_t ip;
++ unsigned char ethernet[ETH_ALEN];
++};
++
++struct ip_set_macip {
++ unsigned short flags;
++ unsigned char ethernet[ETH_ALEN];
++};
++
++#endif /* __IP_SET_MACIPMAP_H */
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_malloc.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_malloc.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_malloc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_malloc.h 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,42 @@
++#ifndef _IP_SET_MALLOC_H
++#define _IP_SET_MALLOC_H
++
++#ifdef __KERNEL__
++
++/* Memory allocation and deallocation */
++static size_t max_malloc_size = 0;
++
++static inline void init_max_malloc_size(void)
++{
++#define CACHE(x) max_malloc_size = x;
++#include <linux/kmalloc_sizes.h>
++#undef CACHE
++}
++
++static inline void * ip_set_malloc_atomic(size_t bytes)
++{
++ if (bytes > max_malloc_size)
++ return __vmalloc(bytes, GFP_ATOMIC, PAGE_KERNEL);
++ else
++ return kmalloc(bytes, GFP_ATOMIC);
++}
++
++static inline void * ip_set_malloc(size_t bytes)
++{
++ if (bytes > max_malloc_size)
++ return vmalloc(bytes);
++ else
++ return kmalloc(bytes, GFP_KERNEL);
++}
++
++static inline void ip_set_free(void * data, size_t bytes)
++{
++ if (bytes > max_malloc_size)
++ vfree(data);
++ else
++ kfree(data);
++}
++
++#endif /* __KERNEL__ */
++
++#endif /*_IP_SET_MALLOC_H*/
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_nethash.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_nethash.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_nethash.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_nethash.h 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,55 @@
++#ifndef __IP_SET_NETHASH_H
++#define __IP_SET_NETHASH_H
++
++#include <linux/netfilter_ipv4/ip_set.h>
++
++#define SETTYPE_NAME "nethash"
++#define MAX_RANGE 0x0000FFFF
++
++struct ip_set_nethash {
++ ip_set_ip_t *members; /* the nethash proper */
++ uint32_t initval; /* initval for jhash_1word */
++ uint32_t prime; /* prime for double hashing */
++ uint32_t hashsize; /* hash size */
++ uint16_t probes; /* max number of probes */
++ uint16_t resize; /* resize factor in percent */
++ unsigned char cidr[30]; /* CIDR sizes */
++};
++
++struct ip_set_req_nethash_create {
++ uint32_t hashsize;
++ uint16_t probes;
++ uint16_t resize;
++};
++
++struct ip_set_req_nethash {
++ ip_set_ip_t ip;
++ unsigned char cidr;
++};
++
++static unsigned char shifts[] = {255, 253, 249, 241, 225, 193, 129, 1};
++
++static inline ip_set_ip_t
++pack(ip_set_ip_t ip, unsigned char cidr)
++{
++ ip_set_ip_t addr, *paddr = &addr;
++ unsigned char n, t, *a;
++
++ addr = htonl(ip & (0xFFFFFFFF << (32 - (cidr))));
++#ifdef __KERNEL__
++ DP("ip:%u.%u.%u.%u/%u", NIPQUAD(addr), cidr);
++#endif
++ n = cidr / 8;
++ t = cidr % 8;
++ a = &((unsigned char *)paddr)[n];
++ *a = *a /(1 << (8 - t)) + shifts[t];
++#ifdef __KERNEL__
++ DP("n: %u, t: %u, a: %u", n, t, *a);
++ DP("ip:%u.%u.%u.%u/%u, %u.%u.%u.%u",
++ HIPQUAD(ip), cidr, NIPQUAD(addr));
++#endif
++
++ return ntohl(addr);
++}
++
++#endif /* __IP_SET_NETHASH_H */
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_portmap.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_portmap.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_portmap.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_portmap.h 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,25 @@
++#ifndef __IP_SET_PORTMAP_H
++#define __IP_SET_PORTMAP_H
++
++#include <linux/netfilter_ipv4/ip_set.h>
++
++#define SETTYPE_NAME "portmap"
++#define MAX_RANGE 0x0000FFFF
++#define INVALID_PORT (MAX_RANGE + 1)
++
++struct ip_set_portmap {
++ void *members; /* the portmap proper */
++ ip_set_ip_t first_port; /* host byte order, included in range */
++ ip_set_ip_t last_port; /* host byte order, included in range */
++};
++
++struct ip_set_req_portmap_create {
++ ip_set_ip_t from;
++ ip_set_ip_t to;
++};
++
++struct ip_set_req_portmap {
++ ip_set_ip_t port;
++};
++
++#endif /* __IP_SET_PORTMAP_H */
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_prime.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_prime.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ip_set_prime.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_set_prime.h 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,34 @@
++#ifndef __IP_SET_PRIME_H
++#define __IP_SET_PRIME_H
++
++static inline unsigned make_prime_bound(unsigned nr)
++{
++ unsigned long long nr64 = nr;
++ unsigned long long x = 1;
++ nr = 1;
++ while (x <= nr64) { x <<= 2; nr <<= 1; }
++ return nr;
++}
++
++static inline int make_prime_check(unsigned nr)
++{
++ unsigned x = 3;
++ unsigned b = make_prime_bound(nr);
++ while (x <= b) {
++ if (0 == (nr % x)) return 0;
++ x += 2;
++ }
++ return 1;
++}
++
++static unsigned make_prime(unsigned nr)
++{
++ if (0 == (nr & 1)) nr--;
++ while (nr > 1) {
++ if (make_prime_check(nr)) return nr;
++ nr -= 2;
++ }
++ return 2;
++}
++
++#endif /* __IP_SET_PRIME_H */
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ipt_set.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ipt_set.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ipt_set.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ipt_set.h 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,21 @@
++#ifndef _IPT_SET_H
++#define _IPT_SET_H
++
++#include <linux/netfilter_ipv4/ip_set.h>
++
++struct ipt_set_info {
++ ip_set_id_t index;
++ u_int32_t flags[IP_SET_MAX_BINDINGS + 1];
++};
++
++/* match info */
++struct ipt_set_info_match {
++ struct ipt_set_info match_set;
++};
++
++struct ipt_set_info_target {
++ struct ipt_set_info add_set;
++ struct ipt_set_info del_set;
++};
++
++#endif /*_IPT_SET_H*/
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/listhelp.h linux-2.6.19.dev/include/linux/netfilter_ipv4/listhelp.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/listhelp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/listhelp.h 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,123 @@
++#ifndef _LISTHELP_H
++#define _LISTHELP_H
++#include <linux/list.h>
++
++/* Header to do more comprehensive job than linux/list.h; assume list
++ is first entry in structure. */
++
++/* Return pointer to first true entry, if any, or NULL. A macro
++ required to allow inlining of cmpfn. */
++#define LIST_FIND(head, cmpfn, type, args...) \
++({ \
++ const struct list_head *__i, *__j = NULL; \
++ \
++ ASSERT_READ_LOCK(head); \
++ list_for_each(__i, (head)) \
++ if (cmpfn((const type)__i , ## args)) { \
++ __j = __i; \
++ break; \
++ } \
++ (type)__j; \
++})
++
++#define LIST_FIND_W(head, cmpfn, type, args...) \
++({ \
++ const struct list_head *__i, *__j = NULL; \
++ \
++ ASSERT_WRITE_LOCK(head); \
++ list_for_each(__i, (head)) \
++ if (cmpfn((type)__i , ## args)) { \
++ __j = __i; \
++ break; \
++ } \
++ (type)__j; \
++})
++
++/* Just like LIST_FIND but we search backwards */
++#define LIST_FIND_B(head, cmpfn, type, args...) \
++({ \
++ const struct list_head *__i, *__j = NULL; \
++ \
++ ASSERT_READ_LOCK(head); \
++ list_for_each_prev(__i, (head)) \
++ if (cmpfn((const type)__i , ## args)) { \
++ __j = __i; \
++ break; \
++ } \
++ (type)__j; \
++})
++
++static inline int
++__list_cmp_same(const void *p1, const void *p2) { return p1 == p2; }
++
++/* Is this entry in the list? */
++static inline int
++list_inlist(struct list_head *head, const void *entry)
++{
++ return LIST_FIND(head, __list_cmp_same, void *, entry) != NULL;
++}
++
++/* Delete from list. */
++#ifdef CONFIG_NETFILTER_DEBUG
++#define LIST_DELETE(head, oldentry) \
++do { \
++ ASSERT_WRITE_LOCK(head); \
++ if (!list_inlist(head, oldentry)) \
++ printk("LIST_DELETE: %s:%u `%s'(%p) not in %s.\n", \
++ __FILE__, __LINE__, #oldentry, oldentry, #head); \
++ else list_del((struct list_head *)oldentry); \
++} while(0)
++#else
++#define LIST_DELETE(head, oldentry) list_del((struct list_head *)oldentry)
++#endif
++
++/* Append. */
++static inline void
++list_append(struct list_head *head, void *new)
++{
++ ASSERT_WRITE_LOCK(head);
++ list_add((new), (head)->prev);
++}
++
++/* Prepend. */
++static inline void
++list_prepend(struct list_head *head, void *new)
++{
++ ASSERT_WRITE_LOCK(head);
++ list_add(new, head);
++}
++
++/* Insert according to ordering function; insert before first true. */
++#define LIST_INSERT(head, new, cmpfn) \
++do { \
++ struct list_head *__i; \
++ ASSERT_WRITE_LOCK(head); \
++ list_for_each(__i, (head)) \
++ if ((new), (typeof (new))__i) \
++ break; \
++ list_add((struct list_head *)(new), __i->prev); \
++} while(0)
++
++/* If the field after the list_head is a nul-terminated string, you
++ can use these functions. */
++static inline int __list_cmp_name(const void *i, const char *name)
++{
++ return strcmp(name, i+sizeof(struct list_head)) == 0;
++}
++
++/* Returns false if same name already in list, otherwise does insert. */
++static inline int
++list_named_insert(struct list_head *head, void *new)
++{
++ if (LIST_FIND(head, __list_cmp_name, void *,
++ new + sizeof(struct list_head)))
++ return 0;
++ list_prepend(head, new);
++ return 1;
++}
++
++/* Find this named element in the list. */
++#define list_named_find(head, name) \
++LIST_FIND(head, __list_cmp_name, void *, name)
++
++#endif /*_LISTHELP_H*/
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ip_set.c linux-2.6.19.dev/net/ipv4/netfilter/ip_set.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ip_set.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ip_set.c 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,1989 @@
++/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
++ * Patrick Schaaf <bof@bof.de>
++ * Copyright (C) 2003-2004 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
++ *
++ * 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.
++ */
++
++/* Kernel module for IP set management */
++
++#include <linux/autoconf.h>
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/kmod.h>
++#include <linux/ip.h>
++#include <linux/skbuff.h>
++#include <linux/random.h>
++#include <linux/jhash.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++#include <linux/errno.h>
++#include <asm/uaccess.h>
++#include <asm/bitops.h>
++#include <asm/semaphore.h>
++#include <linux/spinlock.h>
++#include <linux/vmalloc.h>
++
++#define ASSERT_READ_LOCK(x) /* dont use that */
++#define ASSERT_WRITE_LOCK(x)
++#include <linux/netfilter_ipv4/listhelp.h>
++#include <linux/netfilter_ipv4/ip_set.h>
++
++static struct list_head set_type_list; /* all registered sets */
++static struct ip_set **ip_set_list; /* all individual sets */
++static DEFINE_RWLOCK(ip_set_lock); /* protects the lists and the hash */
++static DECLARE_MUTEX(ip_set_app_mutex); /* serializes user access */
++static ip_set_id_t ip_set_max = CONFIG_IP_NF_SET_MAX;
++static ip_set_id_t ip_set_bindings_hash_size = CONFIG_IP_NF_SET_HASHSIZE;
++static struct list_head *ip_set_hash; /* hash of bindings */
++static unsigned int ip_set_hash_random; /* random seed */
++
++/*
++ * Sets are identified either by the index in ip_set_list or by id.
++ * The id never changes and is used to find a key in the hash.
++ * The index may change by swapping and used at all other places
++ * (set/SET netfilter modules, binding value, etc.)
++ *
++ * Userspace requests are serialized by ip_set_mutex and sets can
++ * be deleted only from userspace. Therefore ip_set_list locking
++ * must obey the following rules:
++ *
++ * - kernel requests: read and write locking mandatory
++ * - user requests: read locking optional, write locking mandatory
++ */
++
++static inline void
++__ip_set_get(ip_set_id_t index)
++{
++ atomic_inc(&ip_set_list[index]->ref);
++}
++
++static inline void
++__ip_set_put(ip_set_id_t index)
++{
++ atomic_dec(&ip_set_list[index]->ref);
++}
++
++/*
++ * Binding routines
++ */
++
++static inline int
++ip_hash_cmp(const struct ip_set_hash *set_hash,
++ ip_set_id_t id, ip_set_ip_t ip)
++{
++ return set_hash->id == id && set_hash->ip == ip;
++}
++
++static ip_set_id_t
++ip_set_find_in_hash(ip_set_id_t id, ip_set_ip_t ip)
++{
++ u_int32_t key = jhash_2words(id, ip, ip_set_hash_random)
++ % ip_set_bindings_hash_size;
++ struct ip_set_hash *set_hash;
++
++ ASSERT_READ_LOCK(&ip_set_lock);
++ IP_SET_ASSERT(ip_set_list[id]);
++ DP("set: %s, ip: %u.%u.%u.%u", ip_set_list[id]->name, HIPQUAD(ip));
++
++ set_hash = LIST_FIND(&ip_set_hash[key], ip_hash_cmp,
++ struct ip_set_hash *, id, ip);
++
++ DP("set: %s, ip: %u.%u.%u.%u, binding: %s", ip_set_list[id]->name,
++ HIPQUAD(ip),
++ set_hash != NULL ? ip_set_list[set_hash->binding]->name : "");
++
++ return (set_hash != NULL ? set_hash->binding : IP_SET_INVALID_ID);
++}
++
++static inline void
++__set_hash_del(struct ip_set_hash *set_hash)
++{
++ ASSERT_WRITE_LOCK(&ip_set_lock);
++ IP_SET_ASSERT(ip_set_list[set_hash->binding]);
++
++ __ip_set_put(set_hash->binding);
++ list_del(&set_hash->list);
++ kfree(set_hash);
++}
++
++static int
++ip_set_hash_del(ip_set_id_t id, ip_set_ip_t ip)
++{
++ u_int32_t key = jhash_2words(id, ip, ip_set_hash_random)
++ % ip_set_bindings_hash_size;
++ struct ip_set_hash *set_hash;
++
++ IP_SET_ASSERT(ip_set_list[id]);
++ DP("set: %s, ip: %u.%u.%u.%u", ip_set_list[id]->name, HIPQUAD(ip));
++ write_lock_bh(&ip_set_lock);
++ set_hash = LIST_FIND(&ip_set_hash[key], ip_hash_cmp,
++ struct ip_set_hash *, id, ip);
++ DP("set: %s, ip: %u.%u.%u.%u, binding: %s", ip_set_list[id]->name,
++ HIPQUAD(ip),
++ set_hash != NULL ? ip_set_list[set_hash->binding]->name : "");
++
++ if (set_hash != NULL)
++ __set_hash_del(set_hash);
++ write_unlock_bh(&ip_set_lock);
++ return 0;
++}
++
++static int
++ip_set_hash_add(ip_set_id_t id, ip_set_ip_t ip, ip_set_id_t binding)
++{
++ u_int32_t key = jhash_2words(id, ip, ip_set_hash_random)
++ % ip_set_bindings_hash_size;
++ struct ip_set_hash *set_hash;
++ int ret = 0;
++
++ IP_SET_ASSERT(ip_set_list[id]);
++ IP_SET_ASSERT(ip_set_list[binding]);
++ DP("set: %s, ip: %u.%u.%u.%u, binding: %s", ip_set_list[id]->name,
++ HIPQUAD(ip), ip_set_list[binding]->name);
++ write_lock_bh(&ip_set_lock);
++ set_hash = LIST_FIND(&ip_set_hash[key], ip_hash_cmp,
++ struct ip_set_hash *, id, ip);
++ if (!set_hash) {
++ set_hash = kmalloc(sizeof(struct ip_set_hash), GFP_KERNEL);
++ if (!set_hash) {
++ ret = -ENOMEM;
++ goto unlock;
++ }
++ INIT_LIST_HEAD(&set_hash->list);
++ set_hash->id = id;
++ set_hash->ip = ip;
++ list_add(&ip_set_hash[key], &set_hash->list);
++ } else {
++ IP_SET_ASSERT(ip_set_list[set_hash->binding]);
++ DP("overwrite binding: %s",
++ ip_set_list[set_hash->binding]->name);
++ __ip_set_put(set_hash->binding);
++ }
++ set_hash->binding = binding;
++ __ip_set_get(set_hash->binding);
++ unlock:
++ write_unlock_bh(&ip_set_lock);
++ return ret;
++}
++
++#define FOREACH_HASH_DO(fn, args...) \
++({ \
++ ip_set_id_t __key; \
++ struct ip_set_hash *__set_hash; \
++ \
++ for (__key = 0; __key < ip_set_bindings_hash_size; __key++) { \
++ list_for_each_entry(__set_hash, &ip_set_hash[__key], list) \
++ fn(__set_hash , ## args); \
++ } \
++})
++
++#define FOREACH_HASH_RW_DO(fn, args...) \
++({ \
++ ip_set_id_t __key; \
++ struct ip_set_hash *__set_hash, *__n; \
++ \
++ ASSERT_WRITE_LOCK(&ip_set_lock); \
++ for (__key = 0; __key < ip_set_bindings_hash_size; __key++) { \
++ list_for_each_entry_safe(__set_hash, __n, &ip_set_hash[__key], list)\
++ fn(__set_hash , ## args); \
++ } \
++})
++
++/* Add, del and test set entries from kernel */
++
++#define follow_bindings(index, set, ip) \
++((index = ip_set_find_in_hash((set)->id, ip)) != IP_SET_INVALID_ID \
++ || (index = (set)->binding) != IP_SET_INVALID_ID)
++
++int
++ip_set_testip_kernel(ip_set_id_t index,
++ const struct sk_buff *skb,
++ const u_int32_t *flags)
++{
++ struct ip_set *set;
++ ip_set_ip_t ip;
++ int res, i = 0;
++
++ IP_SET_ASSERT(flags[i]);
++ read_lock_bh(&ip_set_lock);
++ do {
++ set = ip_set_list[index];
++ IP_SET_ASSERT(set);
++ DP("set %s, index %u", set->name, index);
++ read_lock_bh(&set->lock);
++ res = set->type->testip_kernel(set, skb, flags[i], &ip);
++ read_unlock_bh(&set->lock);
++ } while (res > 0
++ && flags[++i]
++ && follow_bindings(index, set, ip));
++ read_unlock_bh(&ip_set_lock);
++
++ return res;
++}
++
++void
++ip_set_addip_kernel(ip_set_id_t index,
++ const struct sk_buff *skb,
++ const u_int32_t *flags)
++{
++ struct ip_set *set;
++ ip_set_ip_t ip;
++ int res, i= 0;
++
++ IP_SET_ASSERT(flags[i]);
++ retry:
++ read_lock_bh(&ip_set_lock);
++ do {
++ set = ip_set_list[index];
++ IP_SET_ASSERT(set);
++ DP("set %s, index %u", set->name, index);
++ write_lock_bh(&set->lock);
++ res = set->type->addip_kernel(set, skb, flags[i], &ip);
++ write_unlock_bh(&set->lock);
++ } while ((res == 0 || res == -EEXIST)
++ && flags[++i]
++ && follow_bindings(index, set, ip));
++ read_unlock_bh(&ip_set_lock);
++
++ if (res == -EAGAIN
++ && set->type->retry
++ && (res = set->type->retry(set)) == 0)
++ goto retry;
++}
++
++void
++ip_set_delip_kernel(ip_set_id_t index,
++ const struct sk_buff *skb,
++ const u_int32_t *flags)
++{
++ struct ip_set *set;
++ ip_set_ip_t ip;
++ int res, i = 0;
++
++ IP_SET_ASSERT(flags[i]);
++ read_lock_bh(&ip_set_lock);
++ do {
++ set = ip_set_list[index];
++ IP_SET_ASSERT(set);
++ DP("set %s, index %u", set->name, index);
++ write_lock_bh(&set->lock);
++ res = set->type->delip_kernel(set, skb, flags[i], &ip);
++ write_unlock_bh(&set->lock);
++ } while ((res == 0 || res == -EEXIST)
++ && flags[++i]
++ && follow_bindings(index, set, ip));
++ read_unlock_bh(&ip_set_lock);
++}
++
++/* Register and deregister settype */
++
++static inline int
++set_type_equal(const struct ip_set_type *set_type, const char *str2)
++{
++ return !strncmp(set_type->typename, str2, IP_SET_MAXNAMELEN - 1);
++}
++
++static inline struct ip_set_type *
++find_set_type(const char *name)
++{
++ return LIST_FIND(&set_type_list,
++ set_type_equal,
++ struct ip_set_type *,
++ name);
++}
++
++int
++ip_set_register_set_type(struct ip_set_type *set_type)
++{
++ int ret = 0;
++
++ if (set_type->protocol_version != IP_SET_PROTOCOL_VERSION) {
++ ip_set_printk("'%s' uses wrong protocol version %u (want %u)",
++ set_type->typename,
++ set_type->protocol_version,
++ IP_SET_PROTOCOL_VERSION);
++ return -EINVAL;
++ }
++
++ write_lock_bh(&ip_set_lock);
++ if (find_set_type(set_type->typename)) {
++ /* Duplicate! */
++ ip_set_printk("'%s' already registered!",
++ set_type->typename);
++ ret = -EINVAL;
++ goto unlock;
++ }
++ if (!try_module_get(THIS_MODULE)) {
++ ret = -EFAULT;
++ goto unlock;
++ }
++ list_append(&set_type_list, set_type);
++ DP("'%s' registered.", set_type->typename);
++ unlock:
++ write_unlock_bh(&ip_set_lock);
++ return ret;
++}
++
++void
++ip_set_unregister_set_type(struct ip_set_type *set_type)
++{
++ write_lock_bh(&ip_set_lock);
++ if (!find_set_type(set_type->typename)) {
++ ip_set_printk("'%s' not registered?",
++ set_type->typename);
++ goto unlock;
++ }
++ LIST_DELETE(&set_type_list, set_type);
++ module_put(THIS_MODULE);
++ DP("'%s' unregistered.", set_type->typename);
++ unlock:
++ write_unlock_bh(&ip_set_lock);
++
++}
++
++/*
++ * Userspace routines
++ */
++
++/*
++ * Find set by name, reference it once. The reference makes sure the
++ * thing pointed to, does not go away under our feet. Drop the reference
++ * later, using ip_set_put().
++ */
++ip_set_id_t
++ip_set_get_byname(const char *name)
++{
++ ip_set_id_t i, index = IP_SET_INVALID_ID;
++
++ down(&ip_set_app_mutex);
++ for (i = 0; i < ip_set_max; i++) {
++ if (ip_set_list[i] != NULL
++ && strcmp(ip_set_list[i]->name, name) == 0) {
++ __ip_set_get(i);
++ index = i;
++ break;
++ }
++ }
++ up(&ip_set_app_mutex);
++ return index;
++}
++
++/*
++ * Find set by index, reference it once. The reference makes sure the
++ * thing pointed to, does not go away under our feet. Drop the reference
++ * later, using ip_set_put().
++ */
++ip_set_id_t
++ip_set_get_byindex(ip_set_id_t index)
++{
++ down(&ip_set_app_mutex);
++
++ if (index >= ip_set_max)
++ return IP_SET_INVALID_ID;
++
++ if (ip_set_list[index])
++ __ip_set_get(index);
++ else
++ index = IP_SET_INVALID_ID;
++
++ up(&ip_set_app_mutex);
++ return index;
++}
++
++/*
++ * If the given set pointer points to a valid set, decrement
++ * reference count by 1. The caller shall not assume the index
++ * to be valid, after calling this function.
++ */
++void ip_set_put(ip_set_id_t index)
++{
++ down(&ip_set_app_mutex);
++ if (ip_set_list[index])
++ __ip_set_put(index);
++ up(&ip_set_app_mutex);
++}
++
++/* Find a set by name or index */
++static ip_set_id_t
++ip_set_find_byname(const char *name)
++{
++ ip_set_id_t i, index = IP_SET_INVALID_ID;
++
++ for (i = 0; i < ip_set_max; i++) {
++ if (ip_set_list[i] != NULL
++ && strcmp(ip_set_list[i]->name, name) == 0) {
++ index = i;
++ break;
++ }
++ }
++ return index;
++}
++
++static ip_set_id_t
++ip_set_find_byindex(ip_set_id_t index)
++{
++ if (index >= ip_set_max || ip_set_list[index] == NULL)
++ index = IP_SET_INVALID_ID;
++
++ return index;
++}
++
++/*
++ * Add, del, test, bind and unbind
++ */
++
++static inline int
++__ip_set_testip(struct ip_set *set,
++ const void *data,
++ size_t size,
++ ip_set_ip_t *ip)
++{
++ int res;
++
++ read_lock_bh(&set->lock);
++ res = set->type->testip(set, data, size, ip);
++ read_unlock_bh(&set->lock);
++
++ return res;
++}
++
++static int
++__ip_set_addip(ip_set_id_t index,
++ const void *data,
++ size_t size)
++{
++ struct ip_set *set = ip_set_list[index];
++ ip_set_ip_t ip;
++ int res;
++
++ IP_SET_ASSERT(set);
++ do {
++ write_lock_bh(&set->lock);
++ res = set->type->addip(set, data, size, &ip);
++ write_unlock_bh(&set->lock);
++ } while (res == -EAGAIN
++ && set->type->retry
++ && (res = set->type->retry(set)) == 0);
++
++ return res;
++}
++
++static int
++ip_set_addip(ip_set_id_t index,
++ const void *data,
++ size_t size)
++{
++
++ return __ip_set_addip(index,
++ data + sizeof(struct ip_set_req_adt),
++ size - sizeof(struct ip_set_req_adt));
++}
++
++static int
++ip_set_delip(ip_set_id_t index,
++ const void *data,
++ size_t size)
++{
++ struct ip_set *set = ip_set_list[index];
++ ip_set_ip_t ip;
++ int res;
++
++ IP_SET_ASSERT(set);
++ write_lock_bh(&set->lock);
++ res = set->type->delip(set,
++ data + sizeof(struct ip_set_req_adt),
++ size - sizeof(struct ip_set_req_adt),
++ &ip);
++ write_unlock_bh(&set->lock);
++
++ return res;
++}
++
++static int
++ip_set_testip(ip_set_id_t index,
++ const void *data,
++ size_t size)
++{
++ struct ip_set *set = ip_set_list[index];
++ ip_set_ip_t ip;
++ int res;
++
++ IP_SET_ASSERT(set);
++ res = __ip_set_testip(set,
++ data + sizeof(struct ip_set_req_adt),
++ size - sizeof(struct ip_set_req_adt),
++ &ip);
++
++ return (res > 0 ? -EEXIST : res);
++}
++
++static int
++ip_set_bindip(ip_set_id_t index,
++ const void *data,
++ size_t size)
++{
++ struct ip_set *set = ip_set_list[index];
++ struct ip_set_req_bind *req_bind;
++ ip_set_id_t binding;
++ ip_set_ip_t ip;
++ int res;
++
++ IP_SET_ASSERT(set);
++ if (size < sizeof(struct ip_set_req_bind))
++ return -EINVAL;
++
++ req_bind = (struct ip_set_req_bind *) data;
++ req_bind->binding[IP_SET_MAXNAMELEN - 1] = '\0';
++
++ if (strcmp(req_bind->binding, IPSET_TOKEN_DEFAULT) == 0) {
++ /* Default binding of a set */
++ char *binding_name;
++
++ if (size != sizeof(struct ip_set_req_bind) + IP_SET_MAXNAMELEN)
++ return -EINVAL;
++
++ binding_name = (char *)(data + sizeof(struct ip_set_req_bind));
++ binding_name[IP_SET_MAXNAMELEN - 1] = '\0';
++
++ binding = ip_set_find_byname(binding_name);
++ if (binding == IP_SET_INVALID_ID)
++ return -ENOENT;
++
++ write_lock_bh(&ip_set_lock);
++ /* Sets as binding values are referenced */
++ if (set->binding != IP_SET_INVALID_ID)
++ __ip_set_put(set->binding);
++ set->binding = binding;
++ __ip_set_get(set->binding);
++ write_unlock_bh(&ip_set_lock);
++
++ return 0;
++ }
++ binding = ip_set_find_byname(req_bind->binding);
++ if (binding == IP_SET_INVALID_ID)
++ return -ENOENT;
++
++ res = __ip_set_testip(set,
++ data + sizeof(struct ip_set_req_bind),
++ size - sizeof(struct ip_set_req_bind),
++ &ip);
++ DP("set %s, ip: %u.%u.%u.%u, binding %s",
++ set->name, HIPQUAD(ip), ip_set_list[binding]->name);
++
++ if (res >= 0)
++ res = ip_set_hash_add(set->id, ip, binding);
++
++ return res;
++}
++
++#define FOREACH_SET_DO(fn, args...) \
++({ \
++ ip_set_id_t __i; \
++ struct ip_set *__set; \
++ \
++ for (__i = 0; __i < ip_set_max; __i++) { \
++ __set = ip_set_list[__i]; \
++ if (__set != NULL) \
++ fn(__set , ##args); \
++ } \
++})
++
++static inline void
++__set_hash_del_byid(struct ip_set_hash *set_hash, ip_set_id_t id)
++{
++ if (set_hash->id == id)
++ __set_hash_del(set_hash);
++}
++
++static inline void
++__unbind_default(struct ip_set *set)
++{
++ if (set->binding != IP_SET_INVALID_ID) {
++ /* Sets as binding values are referenced */
++ __ip_set_put(set->binding);
++ set->binding = IP_SET_INVALID_ID;
++ }
++}
++
++static int
++ip_set_unbindip(ip_set_id_t index,
++ const void *data,
++ size_t size)
++{
++ struct ip_set *set;
++ struct ip_set_req_bind *req_bind;
++ ip_set_ip_t ip;
++ int res;
++
++ DP("");
++ if (size < sizeof(struct ip_set_req_bind))
++ return -EINVAL;
++
++ req_bind = (struct ip_set_req_bind *) data;
++ req_bind->binding[IP_SET_MAXNAMELEN - 1] = '\0';
++
++ DP("%u %s", index, req_bind->binding);
++ if (index == IP_SET_INVALID_ID) {
++ /* unbind :all: */
++ if (strcmp(req_bind->binding, IPSET_TOKEN_DEFAULT) == 0) {
++ /* Default binding of sets */
++ write_lock_bh(&ip_set_lock);
++ FOREACH_SET_DO(__unbind_default);
++ write_unlock_bh(&ip_set_lock);
++ return 0;
++ } else if (strcmp(req_bind->binding, IPSET_TOKEN_ALL) == 0) {
++ /* Flush all bindings of all sets*/
++ write_lock_bh(&ip_set_lock);
++ FOREACH_HASH_RW_DO(__set_hash_del);
++ write_unlock_bh(&ip_set_lock);
++ return 0;
++ }
++ DP("unreachable reached!");
++ return -EINVAL;
++ }
++
++ set = ip_set_list[index];
++ IP_SET_ASSERT(set);
++ if (strcmp(req_bind->binding, IPSET_TOKEN_DEFAULT) == 0) {
++ /* Default binding of set */
++ ip_set_id_t binding = ip_set_find_byindex(set->binding);
++
++ if (binding == IP_SET_INVALID_ID)
++ return -ENOENT;
++
++ write_lock_bh(&ip_set_lock);
++ /* Sets in hash values are referenced */
++ __ip_set_put(set->binding);
++ set->binding = IP_SET_INVALID_ID;
++ write_unlock_bh(&ip_set_lock);
++
++ return 0;
++ } else if (strcmp(req_bind->binding, IPSET_TOKEN_ALL) == 0) {
++ /* Flush all bindings */
++
++ write_lock_bh(&ip_set_lock);
++ FOREACH_HASH_RW_DO(__set_hash_del_byid, set->id);
++ write_unlock_bh(&ip_set_lock);
++ return 0;
++ }
++
++ res = __ip_set_testip(set,
++ data + sizeof(struct ip_set_req_bind),
++ size - sizeof(struct ip_set_req_bind),
++ &ip);
++
++ DP("set %s, ip: %u.%u.%u.%u", set->name, HIPQUAD(ip));
++ if (res >= 0)
++ res = ip_set_hash_del(set->id, ip);
++
++ return res;
++}
++
++static int
++ip_set_testbind(ip_set_id_t index,
++ const void *data,
++ size_t size)
++{
++ struct ip_set *set = ip_set_list[index];
++ struct ip_set_req_bind *req_bind;
++ ip_set_id_t binding;
++ ip_set_ip_t ip;
++ int res;
++
++ IP_SET_ASSERT(set);
++ if (size < sizeof(struct ip_set_req_bind))
++ return -EINVAL;
++
++ req_bind = (struct ip_set_req_bind *) data;
++ req_bind->binding[IP_SET_MAXNAMELEN - 1] = '\0';
++
++ if (strcmp(req_bind->binding, IPSET_TOKEN_DEFAULT) == 0) {
++ /* Default binding of set */
++ char *binding_name;
++
++ if (size != sizeof(struct ip_set_req_bind) + IP_SET_MAXNAMELEN)
++ return -EINVAL;
++
++ binding_name = (char *)(data + sizeof(struct ip_set_req_bind));
++ binding_name[IP_SET_MAXNAMELEN - 1] = '\0';
++
++ binding = ip_set_find_byname(binding_name);
++ if (binding == IP_SET_INVALID_ID)
++ return -ENOENT;
++
++ res = (set->binding == binding) ? -EEXIST : 0;
++
++ return res;
++ }
++ binding = ip_set_find_byname(req_bind->binding);
++ if (binding == IP_SET_INVALID_ID)
++ return -ENOENT;
++
++
++ res = __ip_set_testip(set,
++ data + sizeof(struct ip_set_req_bind),
++ size - sizeof(struct ip_set_req_bind),
++ &ip);
++ DP("set %s, ip: %u.%u.%u.%u, binding %s",
++ set->name, HIPQUAD(ip), ip_set_list[binding]->name);
++
++ if (res >= 0)
++ res = (ip_set_find_in_hash(set->id, ip) == binding)
++ ? -EEXIST : 0;
++
++ return res;
++}
++
++static struct ip_set_type *
++find_set_type_rlock(const char *typename)
++{
++ struct ip_set_type *type;
++
++ read_lock_bh(&ip_set_lock);
++ type = find_set_type(typename);
++ if (type == NULL)
++ read_unlock_bh(&ip_set_lock);
++
++ return type;
++}
++
++static int
++find_free_id(const char *name,
++ ip_set_id_t *index,
++ ip_set_id_t *id)
++{
++ ip_set_id_t i;
++
++ *id = IP_SET_INVALID_ID;
++ for (i = 0; i < ip_set_max; i++) {
++ if (ip_set_list[i] == NULL) {
++ if (*id == IP_SET_INVALID_ID)
++ *id = *index = i;
++ } else if (strcmp(name, ip_set_list[i]->name) == 0)
++ /* Name clash */
++ return -EEXIST;
++ }
++ if (*id == IP_SET_INVALID_ID)
++ /* No free slot remained */
++ return -ERANGE;
++ /* Check that index is usable as id (swapping) */
++ check:
++ for (i = 0; i < ip_set_max; i++) {
++ if (ip_set_list[i] != NULL
++ && ip_set_list[i]->id == *id) {
++ *id = i;
++ goto check;
++ }
++ }
++ return 0;
++}
++
++/*
++ * Create a set
++ */
++static int
++ip_set_create(const char *name,
++ const char *typename,
++ ip_set_id_t restore,
++ const void *data,
++ size_t size)
++{
++ struct ip_set *set;
++ ip_set_id_t index, id;
++ int res = 0;
++
++ DP("setname: %s, typename: %s, id: %u", name, typename, restore);
++ /*
++ * First, and without any locks, allocate and initialize
++ * a normal base set structure.
++ */
++ set = kmalloc(sizeof(struct ip_set), GFP_KERNEL);
++ if (!set)
++ return -ENOMEM;
++ set->lock = RW_LOCK_UNLOCKED;
++ strncpy(set->name, name, IP_SET_MAXNAMELEN);
++ set->binding = IP_SET_INVALID_ID;
++ atomic_set(&set->ref, 0);
++
++ /*
++ * Next, take the &ip_set_lock, check that we know the type,
++ * and take a reference on the type, to make sure it
++ * stays available while constructing our new set.
++ *
++ * After referencing the type, we drop the &ip_set_lock,
++ * and let the new set construction run without locks.
++ */
++ set->type = find_set_type_rlock(typename);
++ if (set->type == NULL) {
++ /* Try loading the module */
++ char modulename[IP_SET_MAXNAMELEN + strlen("ip_set_") + 1];
++ strcpy(modulename, "ip_set_");
++ strcat(modulename, typename);
++ DP("try to load %s", modulename);
++ request_module(modulename);
++ set->type = find_set_type_rlock(typename);
++ }
++ if (set->type == NULL) {
++ ip_set_printk("no set type '%s', set '%s' not created",
++ typename, name);
++ res = -ENOENT;
++ goto out;
++ }
++ if (!try_module_get(set->type->me)) {
++ read_unlock_bh(&ip_set_lock);
++ res = -EFAULT;
++ goto out;
++ }
++ read_unlock_bh(&ip_set_lock);
++
++ /*
++ * Without holding any locks, create private part.
++ */
++ res = set->type->create(set, data, size);
++ if (res != 0)
++ goto put_out;
++
++ /* BTW, res==0 here. */
++
++ /*
++ * Here, we have a valid, constructed set. &ip_set_lock again,
++ * find free id/index and check that it is not already in
++ * ip_set_list.
++ */
++ write_lock_bh(&ip_set_lock);
++ if ((res = find_free_id(set->name, &index, &id)) != 0) {
++ DP("no free id!");
++ goto cleanup;
++ }
++
++ /* Make sure restore gets the same index */
++ if (restore != IP_SET_INVALID_ID && index != restore) {
++ DP("Can't restore, sets are screwed up");
++ res = -ERANGE;
++ goto cleanup;
++ }
++
++ /*
++ * Finally! Add our shiny new set to the list, and be done.
++ */
++ DP("create: '%s' created with index %u, id %u!", set->name, index, id);
++ set->id = id;
++ ip_set_list[index] = set;
++ write_unlock_bh(&ip_set_lock);
++ return res;
++
++ cleanup:
++ write_unlock_bh(&ip_set_lock);
++ set->type->destroy(set);
++ put_out:
++ module_put(set->type->me);
++ out:
++ kfree(set);
++ return res;
++}
++
++/*
++ * Destroy a given existing set
++ */
++static void
++ip_set_destroy_set(ip_set_id_t index)
++{
++ struct ip_set *set = ip_set_list[index];
++
++ IP_SET_ASSERT(set);
++ DP("set: %s", set->name);
++ write_lock_bh(&ip_set_lock);
++ FOREACH_HASH_RW_DO(__set_hash_del_byid, set->id);
++ if (set->binding != IP_SET_INVALID_ID)
++ __ip_set_put(set->binding);
++ ip_set_list[index] = NULL;
++ write_unlock_bh(&ip_set_lock);
++
++ /* Must call it without holding any lock */
++ set->type->destroy(set);
++ module_put(set->type->me);
++ kfree(set);
++}
++
++/*
++ * Destroy a set - or all sets
++ * Sets must not be referenced/used.
++ */
++static int
++ip_set_destroy(ip_set_id_t index)
++{
++ ip_set_id_t i;
++
++ /* ref modification always protected by the mutex */
++ if (index != IP_SET_INVALID_ID) {
++ if (atomic_read(&ip_set_list[index]->ref))
++ return -EBUSY;
++ ip_set_destroy_set(index);
++ } else {
++ for (i = 0; i < ip_set_max; i++) {
++ if (ip_set_list[i] != NULL
++ && (atomic_read(&ip_set_list[i]->ref)))
++ return -EBUSY;
++ }
++
++ for (i = 0; i < ip_set_max; i++) {
++ if (ip_set_list[i] != NULL)
++ ip_set_destroy_set(i);
++ }
++ }
++ return 0;
++}
++
++static void
++ip_set_flush_set(struct ip_set *set)
++{
++ DP("set: %s %u", set->name, set->id);
++
++ write_lock_bh(&set->lock);
++ set->type->flush(set);
++ write_unlock_bh(&set->lock);
++}
++
++/*
++ * Flush data in a set - or in all sets
++ */
++static int
++ip_set_flush(ip_set_id_t index)
++{
++ if (index != IP_SET_INVALID_ID) {
++ IP_SET_ASSERT(ip_set_list[index]);
++ ip_set_flush_set(ip_set_list[index]);
++ } else
++ FOREACH_SET_DO(ip_set_flush_set);
++
++ return 0;
++}
++
++/* Rename a set */
++static int
++ip_set_rename(ip_set_id_t index, const char *name)
++{
++ struct ip_set *set = ip_set_list[index];
++ ip_set_id_t i;
++ int res = 0;
++
++ DP("set: %s to %s", set->name, name);
++ write_lock_bh(&ip_set_lock);
++ for (i = 0; i < ip_set_max; i++) {
++ if (ip_set_list[i] != NULL
++ && strncmp(ip_set_list[i]->name,
++ name,
++ IP_SET_MAXNAMELEN - 1) == 0) {
++ res = -EEXIST;
++ goto unlock;
++ }
++ }
++ strncpy(set->name, name, IP_SET_MAXNAMELEN);
++ unlock:
++ write_unlock_bh(&ip_set_lock);
++ return res;
++}
++
++/*
++ * Swap two sets so that name/index points to the other.
++ * References are also swapped.
++ */
++static int
++ip_set_swap(ip_set_id_t from_index, ip_set_id_t to_index)
++{
++ struct ip_set *from = ip_set_list[from_index];
++ struct ip_set *to = ip_set_list[to_index];
++ char from_name[IP_SET_MAXNAMELEN];
++ u_int32_t from_ref;
++
++ DP("set: %s to %s", from->name, to->name);
++ /* Type can't be changed. Artifical restriction. */
++ if (from->type->typecode != to->type->typecode)
++ return -ENOEXEC;
++
++ /* No magic here: ref munging protected by the mutex */
++ write_lock_bh(&ip_set_lock);
++ strncpy(from_name, from->name, IP_SET_MAXNAMELEN);
++ from_ref = atomic_read(&from->ref);
++
++ strncpy(from->name, to->name, IP_SET_MAXNAMELEN);
++ atomic_set(&from->ref, atomic_read(&to->ref));
++ strncpy(to->name, from_name, IP_SET_MAXNAMELEN);
++ atomic_set(&to->ref, from_ref);
++
++ ip_set_list[from_index] = to;
++ ip_set_list[to_index] = from;
++
++ write_unlock_bh(&ip_set_lock);
++ return 0;
++}
++
++/*
++ * List set data
++ */
++
++static inline void
++__set_hash_bindings_size_list(struct ip_set_hash *set_hash,
++ ip_set_id_t id, size_t *size)
++{
++ if (set_hash->id == id)
++ *size += sizeof(struct ip_set_hash_list);
++}
++
++static inline void
++__set_hash_bindings_size_save(struct ip_set_hash *set_hash,
++ ip_set_id_t id, size_t *size)
++{
++ if (set_hash->id == id)
++ *size += sizeof(struct ip_set_hash_save);
++}
++
++static inline void
++__set_hash_bindings(struct ip_set_hash *set_hash,
++ ip_set_id_t id, void *data, int *used)
++{
++ if (set_hash->id == id) {
++ struct ip_set_hash_list *hash_list =
++ (struct ip_set_hash_list *)(data + *used);
++
++ hash_list->ip = set_hash->ip;
++ hash_list->binding = set_hash->binding;
++ *used += sizeof(struct ip_set_hash_list);
++ }
++}
++
++static int ip_set_list_set(ip_set_id_t index,
++ void *data,
++ int *used,
++ int len)
++{
++ struct ip_set *set = ip_set_list[index];
++ struct ip_set_list *set_list;
++
++ /* Pointer to our header */
++ set_list = (struct ip_set_list *) (data + *used);
++
++ DP("set: %s, used: %d %p %p", set->name, *used, data, data + *used);
++
++ /* Get and ensure header size */
++ if (*used + sizeof(struct ip_set_list) > len)
++ goto not_enough_mem;
++ *used += sizeof(struct ip_set_list);
++
++ read_lock_bh(&set->lock);
++ /* Get and ensure set specific header size */
++ set_list->header_size = set->type->header_size;
++ if (*used + set_list->header_size > len)
++ goto unlock_set;
++
++ /* Fill in the header */
++ set_list->index = index;
++ set_list->binding = set->binding;
++ set_list->ref = atomic_read(&set->ref);
++
++ /* Fill in set spefific header data */
++ set->type->list_header(set, data + *used);
++ *used += set_list->header_size;
++
++ /* Get and ensure set specific members size */
++ set_list->members_size = set->type->list_members_size(set);
++ if (*used + set_list->members_size > len)
++ goto unlock_set;
++
++ /* Fill in set spefific members data */
++ set->type->list_members(set, data + *used);
++ *used += set_list->members_size;
++ read_unlock_bh(&set->lock);
++
++ /* Bindings */
++
++ /* Get and ensure set specific bindings size */
++ set_list->bindings_size = 0;
++ FOREACH_HASH_DO(__set_hash_bindings_size_list,
++ set->id, &set_list->bindings_size);
++ if (*used + set_list->bindings_size > len)
++ goto not_enough_mem;
++
++ /* Fill in set spefific bindings data */
++ FOREACH_HASH_DO(__set_hash_bindings, set->id, data, used);
++
++ return 0;
++
++ unlock_set:
++ read_unlock_bh(&set->lock);
++ not_enough_mem:
++ DP("not enough mem, try again");
++ return -EAGAIN;
++}
++
++/*
++ * Save sets
++ */
++static int ip_set_save_set(ip_set_id_t index,
++ void *data,
++ int *used,
++ int len)
++{
++ struct ip_set *set;
++ struct ip_set_save *set_save;
++
++ /* Pointer to our header */
++ set_save = (struct ip_set_save *) (data + *used);
++
++ /* Get and ensure header size */
++ if (*used + sizeof(struct ip_set_save) > len)
++ goto not_enough_mem;
++ *used += sizeof(struct ip_set_save);
++
++ set = ip_set_list[index];
++ DP("set: %s, used: %u(%u) %p %p", set->name, *used, len,
++ data, data + *used);
++
++ read_lock_bh(&set->lock);
++ /* Get and ensure set specific header size */
++ set_save->header_size = set->type->header_size;
++ if (*used + set_save->header_size > len)
++ goto unlock_set;
++
++ /* Fill in the header */
++ set_save->index = index;
++ set_save->binding = set->binding;
++
++ /* Fill in set spefific header data */
++ set->type->list_header(set, data + *used);
++ *used += set_save->header_size;
++
++ DP("set header filled: %s, used: %u %p %p", set->name, *used,
++ data, data + *used);
++ /* Get and ensure set specific members size */
++ set_save->members_size = set->type->list_members_size(set);
++ if (*used + set_save->members_size > len)
++ goto unlock_set;
++
++ /* Fill in set spefific members data */
++ set->type->list_members(set, data + *used);
++ *used += set_save->members_size;
++ read_unlock_bh(&set->lock);
++ DP("set members filled: %s, used: %u %p %p", set->name, *used,
++ data, data + *used);
++ return 0;
++
++ unlock_set:
++ read_unlock_bh(&set->lock);
++ not_enough_mem:
++ DP("not enough mem, try again");
++ return -EAGAIN;
++}
++
++static inline void
++__set_hash_save_bindings(struct ip_set_hash *set_hash,
++ ip_set_id_t id,
++ void *data,
++ int *used,
++ int len,
++ int *res)
++{
++ if (*res == 0
++ && (id == IP_SET_INVALID_ID || set_hash->id == id)) {
++ struct ip_set_hash_save *hash_save =
++ (struct ip_set_hash_save *)(data + *used);
++ /* Ensure bindings size */
++ if (*used + sizeof(struct ip_set_hash_save) > len) {
++ *res = -ENOMEM;
++ return;
++ }
++ hash_save->id = set_hash->id;
++ hash_save->ip = set_hash->ip;
++ hash_save->binding = set_hash->binding;
++ *used += sizeof(struct ip_set_hash_save);
++ }
++}
++
++static int ip_set_save_bindings(ip_set_id_t index,
++ void *data,
++ int *used,
++ int len)
++{
++ int res = 0;
++ struct ip_set_save *set_save;
++
++ DP("used %u, len %u", *used, len);
++ /* Get and ensure header size */
++ if (*used + sizeof(struct ip_set_save) > len)
++ return -ENOMEM;
++
++ /* Marker */
++ set_save = (struct ip_set_save *) (data + *used);
++ set_save->index = IP_SET_INVALID_ID;
++ *used += sizeof(struct ip_set_save);
++
++ DP("marker added used %u, len %u", *used, len);
++ /* Fill in bindings data */
++ if (index != IP_SET_INVALID_ID)
++ /* Sets are identified by id in hash */
++ index = ip_set_list[index]->id;
++ FOREACH_HASH_DO(__set_hash_save_bindings, index, data, used, len, &res);
++
++ return res;
++}
++
++/*
++ * Restore sets
++ */
++static int ip_set_restore(void *data,
++ int len)
++{
++ int res = 0;
++ int line = 0, used = 0, members_size;
++ struct ip_set *set;
++ struct ip_set_hash_save *hash_save;
++ struct ip_set_restore *set_restore;
++ ip_set_id_t index;
++
++ /* Loop to restore sets */
++ while (1) {
++ line++;
++
++ DP("%u %u %u", used, sizeof(struct ip_set_restore), len);
++ /* Get and ensure header size */
++ if (used + sizeof(struct ip_set_restore) > len)
++ return line;
++ set_restore = (struct ip_set_restore *) (data + used);
++ used += sizeof(struct ip_set_restore);
++
++ /* Ensure data size */
++ if (used
++ + set_restore->header_size
++ + set_restore->members_size > len)
++ return line;
++
++ /* Check marker */
++ if (set_restore->index == IP_SET_INVALID_ID) {
++ line--;
++ goto bindings;
++ }
++
++ /* Try to create the set */
++ DP("restore %s %s", set_restore->name, set_restore->typename);
++ res = ip_set_create(set_restore->name,
++ set_restore->typename,
++ set_restore->index,
++ data + used,
++ set_restore->header_size);
++
++ if (res != 0)
++ return line;
++ used += set_restore->header_size;
++
++ index = ip_set_find_byindex(set_restore->index);
++ DP("index %u, restore_index %u", index, set_restore->index);
++ if (index != set_restore->index)
++ return line;
++ /* Try to restore members data */
++ set = ip_set_list[index];
++ members_size = 0;
++ DP("members_size %u reqsize %u",
++ set_restore->members_size, set->type->reqsize);
++ while (members_size + set->type->reqsize <=
++ set_restore->members_size) {
++ line++;
++ DP("members: %u, line %u", members_size, line);
++ res = __ip_set_addip(index,
++ data + used + members_size,
++ set->type->reqsize);
++ if (!(res == 0 || res == -EEXIST))
++ return line;
++ members_size += set->type->reqsize;
++ }
++
++ DP("members_size %u %u",
++ set_restore->members_size, members_size);
++ if (members_size != set_restore->members_size)
++ return line++;
++ used += set_restore->members_size;
++ }
++
++ bindings:
++ /* Loop to restore bindings */
++ while (used < len) {
++ line++;
++
++ DP("restore binding, line %u", line);
++ /* Get and ensure size */
++ if (used + sizeof(struct ip_set_hash_save) > len)
++ return line;
++ hash_save = (struct ip_set_hash_save *) (data + used);
++ used += sizeof(struct ip_set_hash_save);
++
++ /* hash_save->id is used to store the index */
++ index = ip_set_find_byindex(hash_save->id);
++ DP("restore binding index %u, id %u, %u -> %u",
++ index, hash_save->id, hash_save->ip, hash_save->binding);
++ if (index != hash_save->id)
++ return line;
++
++ set = ip_set_list[hash_save->id];
++ /* Null valued IP means default binding */
++ if (hash_save->ip)
++ res = ip_set_hash_add(set->id,
++ hash_save->ip,
++ hash_save->binding);
++ else {
++ IP_SET_ASSERT(set->binding == IP_SET_INVALID_ID);
++ write_lock_bh(&ip_set_lock);
++ set->binding = hash_save->binding;
++ __ip_set_get(set->binding);
++ write_unlock_bh(&ip_set_lock);
++ DP("default binding: %u", set->binding);
++ }
++ if (res != 0)
++ return line;
++ }
++ if (used != len)
++ return line;
++
++ return 0;
++}
++
++static int
++ip_set_sockfn_set(struct sock *sk, int optval, void *user, unsigned int len)
++{
++ void *data;
++ int res = 0; /* Assume OK */
++ unsigned *op;
++ struct ip_set_req_adt *req_adt;
++ ip_set_id_t index = IP_SET_INVALID_ID;
++ int (*adtfn)(ip_set_id_t index,
++ const void *data, size_t size);
++ struct fn_table {
++ int (*fn)(ip_set_id_t index,
++ const void *data, size_t size);
++ } adtfn_table[] =
++ { { ip_set_addip }, { ip_set_delip }, { ip_set_testip},
++ { ip_set_bindip}, { ip_set_unbindip }, { ip_set_testbind },
++ };
++
++ DP("optval=%d, user=%p, len=%d", optval, user, len);
++ if (!capable(CAP_NET_ADMIN))
++ return -EPERM;
++ if (optval != SO_IP_SET)
++ return -EBADF;
++ if (len <= sizeof(unsigned)) {
++ ip_set_printk("short userdata (want >%zu, got %u)",
++ sizeof(unsigned), len);
++ return -EINVAL;
++ }
++ data = vmalloc(len);
++ if (!data) {
++ DP("out of mem for %u bytes", len);
++ return -ENOMEM;
++ }
++ if (copy_from_user(data, user, len) != 0) {
++ res = -EFAULT;
++ goto done;
++ }
++ if (down_interruptible(&ip_set_app_mutex)) {
++ res = -EINTR;
++ goto done;
++ }
++
++ op = (unsigned *)data;
++ DP("op=%x", *op);
++
++ if (*op < IP_SET_OP_VERSION) {
++ /* Check the version at the beginning of operations */
++ struct ip_set_req_version *req_version =
++ (struct ip_set_req_version *) data;
++ if (req_version->version != IP_SET_PROTOCOL_VERSION) {
++ res = -EPROTO;
++ goto done;
++ }
++ }
++
++ switch (*op) {
++ case IP_SET_OP_CREATE:{
++ struct ip_set_req_create *req_create
++ = (struct ip_set_req_create *) data;
++
++ if (len <= sizeof(struct ip_set_req_create)) {
++ ip_set_printk("short CREATE data (want >%zu, got %u)",
++ sizeof(struct ip_set_req_create), len);
++ res = -EINVAL;
++ goto done;
++ }
++ req_create->name[IP_SET_MAXNAMELEN - 1] = '\0';
++ req_create->typename[IP_SET_MAXNAMELEN - 1] = '\0';
++ res = ip_set_create(req_create->name,
++ req_create->typename,
++ IP_SET_INVALID_ID,
++ data + sizeof(struct ip_set_req_create),
++ len - sizeof(struct ip_set_req_create));
++ goto done;
++ }
++ case IP_SET_OP_DESTROY:{
++ struct ip_set_req_std *req_destroy
++ = (struct ip_set_req_std *) data;
++
++ if (len != sizeof(struct ip_set_req_std)) {
++ ip_set_printk("invalid DESTROY data (want %zu, got %u)",
++ sizeof(struct ip_set_req_std), len);
++ res = -EINVAL;
++ goto done;
++ }
++ if (strcmp(req_destroy->name, IPSET_TOKEN_ALL) == 0) {
++ /* Destroy all sets */
++ index = IP_SET_INVALID_ID;
++ } else {
++ req_destroy->name[IP_SET_MAXNAMELEN - 1] = '\0';
++ index = ip_set_find_byname(req_destroy->name);
++
++ if (index == IP_SET_INVALID_ID) {
++ res = -ENOENT;
++ goto done;
++ }
++ }
++
++ res = ip_set_destroy(index);
++ goto done;
++ }
++ case IP_SET_OP_FLUSH:{
++ struct ip_set_req_std *req_flush =
++ (struct ip_set_req_std *) data;
++
++ if (len != sizeof(struct ip_set_req_std)) {
++ ip_set_printk("invalid FLUSH data (want %zu, got %u)",
++ sizeof(struct ip_set_req_std), len);
++ res = -EINVAL;
++ goto done;
++ }
++ if (strcmp(req_flush->name, IPSET_TOKEN_ALL) == 0) {
++ /* Flush all sets */
++ index = IP_SET_INVALID_ID;
++ } else {
++ req_flush->name[IP_SET_MAXNAMELEN - 1] = '\0';
++ index = ip_set_find_byname(req_flush->name);
++
++ if (index == IP_SET_INVALID_ID) {
++ res = -ENOENT;
++ goto done;
++ }
++ }
++ res = ip_set_flush(index);
++ goto done;
++ }
++ case IP_SET_OP_RENAME:{
++ struct ip_set_req_create *req_rename
++ = (struct ip_set_req_create *) data;
++
++ if (len != sizeof(struct ip_set_req_create)) {
++ ip_set_printk("invalid RENAME data (want %zu, got %u)",
++ sizeof(struct ip_set_req_create), len);
++ res = -EINVAL;
++ goto done;
++ }
++
++ req_rename->name[IP_SET_MAXNAMELEN - 1] = '\0';
++ req_rename->typename[IP_SET_MAXNAMELEN - 1] = '\0';
++
++ index = ip_set_find_byname(req_rename->name);
++ if (index == IP_SET_INVALID_ID) {
++ res = -ENOENT;
++ goto done;
++ }
++ res = ip_set_rename(index, req_rename->typename);
++ goto done;
++ }
++ case IP_SET_OP_SWAP:{
++ struct ip_set_req_create *req_swap
++ = (struct ip_set_req_create *) data;
++ ip_set_id_t to_index;
++
++ if (len != sizeof(struct ip_set_req_create)) {
++ ip_set_printk("invalid SWAP data (want %zu, got %u)",
++ sizeof(struct ip_set_req_create), len);
++ res = -EINVAL;
++ goto done;
++ }
++
++ req_swap->name[IP_SET_MAXNAMELEN - 1] = '\0';
++ req_swap->typename[IP_SET_MAXNAMELEN - 1] = '\0';
++
++ index = ip_set_find_byname(req_swap->name);
++ if (index == IP_SET_INVALID_ID) {
++ res = -ENOENT;
++ goto done;
++ }
++ to_index = ip_set_find_byname(req_swap->typename);
++ if (to_index == IP_SET_INVALID_ID) {
++ res = -ENOENT;
++ goto done;
++ }
++ res = ip_set_swap(index, to_index);
++ goto done;
++ }
++ default:
++ break; /* Set identified by id */
++ }
++
++ /* There we may have add/del/test/bind/unbind/test_bind operations */
++ if (*op < IP_SET_OP_ADD_IP || *op > IP_SET_OP_TEST_BIND_SET) {
++ res = -EBADMSG;
++ goto done;
++ }
++ adtfn = adtfn_table[*op - IP_SET_OP_ADD_IP].fn;
++
++ if (len < sizeof(struct ip_set_req_adt)) {
++ ip_set_printk("short data in adt request (want >=%zu, got %u)",
++ sizeof(struct ip_set_req_adt), len);
++ res = -EINVAL;
++ goto done;
++ }
++ req_adt = (struct ip_set_req_adt *) data;
++
++ /* -U :all: :all:|:default: uses IP_SET_INVALID_ID */
++ if (!(*op == IP_SET_OP_UNBIND_SET
++ && req_adt->index == IP_SET_INVALID_ID)) {
++ index = ip_set_find_byindex(req_adt->index);
++ if (index == IP_SET_INVALID_ID) {
++ res = -ENOENT;
++ goto done;
++ }
++ }
++ res = adtfn(index, data, len);
++
++ done:
++ up(&ip_set_app_mutex);
++ vfree(data);
++ if (res > 0)
++ res = 0;
++ DP("final result %d", res);
++ return res;
++}
++
++static int
++ip_set_sockfn_get(struct sock *sk, int optval, void *user, int *len)
++{
++ int res = 0;
++ unsigned *op;
++ ip_set_id_t index = IP_SET_INVALID_ID;
++ void *data;
++ int copylen = *len;
++
++ DP("optval=%d, user=%p, len=%d", optval, user, *len);
++ if (!capable(CAP_NET_ADMIN))
++ return -EPERM;
++ if (optval != SO_IP_SET)
++ return -EBADF;
++ if (*len < sizeof(unsigned)) {
++ ip_set_printk("short userdata (want >=%zu, got %d)",
++ sizeof(unsigned), *len);
++ return -EINVAL;
++ }
++ data = vmalloc(*len);
++ if (!data) {
++ DP("out of mem for %d bytes", *len);
++ return -ENOMEM;
++ }
++ if (copy_from_user(data, user, *len) != 0) {
++ res = -EFAULT;
++ goto done;
++ }
++ if (down_interruptible(&ip_set_app_mutex)) {
++ res = -EINTR;
++ goto done;
++ }
++
++ op = (unsigned *) data;
++ DP("op=%x", *op);
++
++ if (*op < IP_SET_OP_VERSION) {
++ /* Check the version at the beginning of operations */
++ struct ip_set_req_version *req_version =
++ (struct ip_set_req_version *) data;
++ if (req_version->version != IP_SET_PROTOCOL_VERSION) {
++ res = -EPROTO;
++ goto done;
++ }
++ }
++
++ switch (*op) {
++ case IP_SET_OP_VERSION: {
++ struct ip_set_req_version *req_version =
++ (struct ip_set_req_version *) data;
++
++ if (*len != sizeof(struct ip_set_req_version)) {
++ ip_set_printk("invalid VERSION (want %zu, got %d)",
++ sizeof(struct ip_set_req_version),
++ *len);
++ res = -EINVAL;
++ goto done;
++ }
++
++ req_version->version = IP_SET_PROTOCOL_VERSION;
++ res = copy_to_user(user, req_version,
++ sizeof(struct ip_set_req_version));
++ goto done;
++ }
++ case IP_SET_OP_GET_BYNAME: {
++ struct ip_set_req_get_set *req_get
++ = (struct ip_set_req_get_set *) data;
++
++ if (*len != sizeof(struct ip_set_req_get_set)) {
++ ip_set_printk("invalid GET_BYNAME (want %zu, got %d)",
++ sizeof(struct ip_set_req_get_set), *len);
++ res = -EINVAL;
++ goto done;
++ }
++ req_get->set.name[IP_SET_MAXNAMELEN - 1] = '\0';
++ index = ip_set_find_byname(req_get->set.name);
++ req_get->set.index = index;
++ goto copy;
++ }
++ case IP_SET_OP_GET_BYINDEX: {
++ struct ip_set_req_get_set *req_get
++ = (struct ip_set_req_get_set *) data;
++
++ if (*len != sizeof(struct ip_set_req_get_set)) {
++ ip_set_printk("invalid GET_BYINDEX (want %zu, got %d)",
++ sizeof(struct ip_set_req_get_set), *len);
++ res = -EINVAL;
++ goto done;
++ }
++ req_get->set.name[IP_SET_MAXNAMELEN - 1] = '\0';
++ index = ip_set_find_byindex(req_get->set.index);
++ strncpy(req_get->set.name,
++ index == IP_SET_INVALID_ID ? ""
++ : ip_set_list[index]->name, IP_SET_MAXNAMELEN);
++ goto copy;
++ }
++ case IP_SET_OP_ADT_GET: {
++ struct ip_set_req_adt_get *req_get
++ = (struct ip_set_req_adt_get *) data;
++
++ if (*len != sizeof(struct ip_set_req_adt_get)) {
++ ip_set_printk("invalid ADT_GET (want %zu, got %d)",
++ sizeof(struct ip_set_req_adt_get), *len);
++ res = -EINVAL;
++ goto done;
++ }
++ req_get->set.name[IP_SET_MAXNAMELEN - 1] = '\0';
++ index = ip_set_find_byname(req_get->set.name);
++ if (index != IP_SET_INVALID_ID) {
++ req_get->set.index = index;
++ strncpy(req_get->typename,
++ ip_set_list[index]->type->typename,
++ IP_SET_MAXNAMELEN - 1);
++ } else {
++ res = -ENOENT;
++ goto done;
++ }
++ goto copy;
++ }
++ case IP_SET_OP_MAX_SETS: {
++ struct ip_set_req_max_sets *req_max_sets
++ = (struct ip_set_req_max_sets *) data;
++ ip_set_id_t i;
++
++ if (*len != sizeof(struct ip_set_req_max_sets)) {
++ ip_set_printk("invalid MAX_SETS (want %zu, got %d)",
++ sizeof(struct ip_set_req_max_sets), *len);
++ res = -EINVAL;
++ goto done;
++ }
++
++ if (strcmp(req_max_sets->set.name, IPSET_TOKEN_ALL) == 0) {
++ req_max_sets->set.index = IP_SET_INVALID_ID;
++ } else {
++ req_max_sets->set.name[IP_SET_MAXNAMELEN - 1] = '\0';
++ req_max_sets->set.index =
++ ip_set_find_byname(req_max_sets->set.name);
++ if (req_max_sets->set.index == IP_SET_INVALID_ID) {
++ res = -ENOENT;
++ goto done;
++ }
++ }
++ req_max_sets->max_sets = ip_set_max;
++ req_max_sets->sets = 0;
++ for (i = 0; i < ip_set_max; i++) {
++ if (ip_set_list[i] != NULL)
++ req_max_sets->sets++;
++ }
++ goto copy;
++ }
++ case IP_SET_OP_LIST_SIZE:
++ case IP_SET_OP_SAVE_SIZE: {
++ struct ip_set_req_setnames *req_setnames
++ = (struct ip_set_req_setnames *) data;
++ struct ip_set_name_list *name_list;
++ struct ip_set *set;
++ ip_set_id_t i;
++ int used;
++
++ if (*len < sizeof(struct ip_set_req_setnames)) {
++ ip_set_printk("short LIST_SIZE (want >=%zu, got %d)",
++ sizeof(struct ip_set_req_setnames), *len);
++ res = -EINVAL;
++ goto done;
++ }
++
++ req_setnames->size = 0;
++ used = sizeof(struct ip_set_req_setnames);
++ for (i = 0; i < ip_set_max; i++) {
++ if (ip_set_list[i] == NULL)
++ continue;
++ name_list = (struct ip_set_name_list *)
++ (data + used);
++ used += sizeof(struct ip_set_name_list);
++ if (used > copylen) {
++ res = -EAGAIN;
++ goto done;
++ }
++ set = ip_set_list[i];
++ /* Fill in index, name, etc. */
++ name_list->index = i;
++ name_list->id = set->id;
++ strncpy(name_list->name,
++ set->name,
++ IP_SET_MAXNAMELEN - 1);
++ strncpy(name_list->typename,
++ set->type->typename,
++ IP_SET_MAXNAMELEN - 1);
++ DP("filled %s of type %s, index %u\n",
++ name_list->name, name_list->typename,
++ name_list->index);
++ if (!(req_setnames->index == IP_SET_INVALID_ID
++ || req_setnames->index == i))
++ continue;
++ /* Update size */
++ switch (*op) {
++ case IP_SET_OP_LIST_SIZE: {
++ req_setnames->size += sizeof(struct ip_set_list)
++ + set->type->header_size
++ + set->type->list_members_size(set);
++ FOREACH_HASH_DO(__set_hash_bindings_size_list,
++ i, &req_setnames->size);
++ break;
++ }
++ case IP_SET_OP_SAVE_SIZE: {
++ req_setnames->size += sizeof(struct ip_set_save)
++ + set->type->header_size
++ + set->type->list_members_size(set);
++ FOREACH_HASH_DO(__set_hash_bindings_size_save,
++ i, &req_setnames->size);
++ break;
++ }
++ default:
++ break;
++ }
++ }
++ if (copylen != used) {
++ res = -EAGAIN;
++ goto done;
++ }
++ goto copy;
++ }
++ case IP_SET_OP_LIST: {
++ struct ip_set_req_list *req_list
++ = (struct ip_set_req_list *) data;
++ ip_set_id_t i;
++ int used;
++
++ if (*len < sizeof(struct ip_set_req_list)) {
++ ip_set_printk("short LIST (want >=%zu, got %d)",
++ sizeof(struct ip_set_req_list), *len);
++ res = -EINVAL;
++ goto done;
++ }
++ index = req_list->index;
++ if (index != IP_SET_INVALID_ID
++ && ip_set_find_byindex(index) != index) {
++ res = -ENOENT;
++ goto done;
++ }
++ used = 0;
++ if (index == IP_SET_INVALID_ID) {
++ /* List all sets */
++ for (i = 0; i < ip_set_max && res == 0; i++) {
++ if (ip_set_list[i] != NULL)
++ res = ip_set_list_set(i, data, &used, *len);
++ }
++ } else {
++ /* List an individual set */
++ res = ip_set_list_set(index, data, &used, *len);
++ }
++ if (res != 0)
++ goto done;
++ else if (copylen != used) {
++ res = -EAGAIN;
++ goto done;
++ }
++ goto copy;
++ }
++ case IP_SET_OP_SAVE: {
++ struct ip_set_req_list *req_save
++ = (struct ip_set_req_list *) data;
++ ip_set_id_t i;
++ int used;
++
++ if (*len < sizeof(struct ip_set_req_list)) {
++ ip_set_printk("short SAVE (want >=%zu, got %d)",
++ sizeof(struct ip_set_req_list), *len);
++ res = -EINVAL;
++ goto done;
++ }
++ index = req_save->index;
++ if (index != IP_SET_INVALID_ID
++ && ip_set_find_byindex(index) != index) {
++ res = -ENOENT;
++ goto done;
++ }
++ used = 0;
++ if (index == IP_SET_INVALID_ID) {
++ /* Save all sets */
++ for (i = 0; i < ip_set_max && res == 0; i++) {
++ if (ip_set_list[i] != NULL)
++ res = ip_set_save_set(i, data, &used, *len);
++ }
++ } else {
++ /* Save an individual set */
++ res = ip_set_save_set(index, data, &used, *len);
++ }
++ if (res == 0)
++ res = ip_set_save_bindings(index, data, &used, *len);
++
++ if (res != 0)
++ goto done;
++ else if (copylen != used) {
++ res = -EAGAIN;
++ goto done;
++ }
++ goto copy;
++ }
++ case IP_SET_OP_RESTORE: {
++ struct ip_set_req_setnames *req_restore
++ = (struct ip_set_req_setnames *) data;
++ int line;
++
++ if (*len < sizeof(struct ip_set_req_setnames)
++ || *len != req_restore->size) {
++ ip_set_printk("invalid RESTORE (want =%zu, got %d)",
++ req_restore->size, *len);
++ res = -EINVAL;
++ goto done;
++ }
++ line = ip_set_restore(data + sizeof(struct ip_set_req_setnames),
++ req_restore->size - sizeof(struct ip_set_req_setnames));
++ DP("ip_set_restore: %u", line);
++ if (line != 0) {
++ res = -EAGAIN;
++ req_restore->size = line;
++ copylen = sizeof(struct ip_set_req_setnames);
++ goto copy;
++ }
++ goto done;
++ }
++ default:
++ res = -EBADMSG;
++ goto done;
++ } /* end of switch(op) */
++
++ copy:
++ DP("set %s, copylen %u", index != IP_SET_INVALID_ID
++ && ip_set_list[index]
++ ? ip_set_list[index]->name
++ : ":all:", copylen);
++ if (res == 0)
++ res = copy_to_user(user, data, copylen);
++ else
++ copy_to_user(user, data, copylen);
++
++ done:
++ up(&ip_set_app_mutex);
++ vfree(data);
++ if (res > 0)
++ res = 0;
++ DP("final result %d", res);
++ return res;
++}
++
++static struct nf_sockopt_ops so_set = {
++ .pf = PF_INET,
++ .set_optmin = SO_IP_SET,
++ .set_optmax = SO_IP_SET + 1,
++ .set = &ip_set_sockfn_set,
++ .get_optmin = SO_IP_SET,
++ .get_optmax = SO_IP_SET + 1,
++ .get = &ip_set_sockfn_get,
++ .use = 0
++};
++
++static int max_sets, hash_size;
++module_param(max_sets, int, 0600);
++MODULE_PARM_DESC(max_sets, "maximal number of sets");
++module_param(hash_size, int, 0600);
++MODULE_PARM_DESC(hash_size, "hash size for bindings");
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>");
++MODULE_DESCRIPTION("module implementing core IP set support");
++
++static int __init init(void)
++{
++ int res;
++ ip_set_id_t i;
++
++ get_random_bytes(&ip_set_hash_random, 4);
++ if (max_sets)
++ ip_set_max = max_sets;
++ ip_set_list = vmalloc(sizeof(struct ip_set *) * ip_set_max);
++ if (!ip_set_list) {
++ printk(KERN_ERR "Unable to create ip_set_list\n");
++ return -ENOMEM;
++ }
++ memset(ip_set_list, 0, sizeof(struct ip_set *) * ip_set_max);
++ if (hash_size)
++ ip_set_bindings_hash_size = hash_size;
++ ip_set_hash = vmalloc(sizeof(struct list_head) * ip_set_bindings_hash_size);
++ if (!ip_set_hash) {
++ printk(KERN_ERR "Unable to create ip_set_hash\n");
++ vfree(ip_set_list);
++ return -ENOMEM;
++ }
++ for (i = 0; i < ip_set_bindings_hash_size; i++)
++ INIT_LIST_HEAD(&ip_set_hash[i]);
++
++ INIT_LIST_HEAD(&set_type_list);
++
++ res = nf_register_sockopt(&so_set);
++ if (res != 0) {
++ ip_set_printk("SO_SET registry failed: %d", res);
++ vfree(ip_set_list);
++ vfree(ip_set_hash);
++ return res;
++ }
++ return 0;
++}
++
++static void __exit fini(void)
++{
++ /* There can't be any existing set or binding */
++ nf_unregister_sockopt(&so_set);
++ vfree(ip_set_list);
++ vfree(ip_set_hash);
++ DP("these are the famous last words");
++}
++
++EXPORT_SYMBOL(ip_set_register_set_type);
++EXPORT_SYMBOL(ip_set_unregister_set_type);
++
++EXPORT_SYMBOL(ip_set_get_byname);
++EXPORT_SYMBOL(ip_set_get_byindex);
++EXPORT_SYMBOL(ip_set_put);
++
++EXPORT_SYMBOL(ip_set_addip_kernel);
++EXPORT_SYMBOL(ip_set_delip_kernel);
++EXPORT_SYMBOL(ip_set_testip_kernel);
++
++module_init(init);
++module_exit(fini);
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ip_set_iphash.c linux-2.6.19.dev/net/ipv4/netfilter/ip_set_iphash.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ip_set_iphash.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ip_set_iphash.c 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,379 @@
++/* Copyright (C) 2003-2004 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
++ *
++ * 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.
++ */
++
++/* Kernel module implementing an ip hash set */
++
++#include <linux/module.h>
++#include <linux/ip.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++#include <linux/netfilter_ipv4/ip_set.h>
++#include <linux/errno.h>
++#include <asm/uaccess.h>
++#include <asm/bitops.h>
++#include <linux/spinlock.h>
++#include <linux/vmalloc.h>
++#include <linux/random.h>
++
++#include <net/ip.h>
++
++#include <linux/netfilter_ipv4/ip_set_malloc.h>
++#include <linux/netfilter_ipv4/ip_set_iphash.h>
++#include <linux/netfilter_ipv4/ip_set_jhash.h>
++#include <linux/netfilter_ipv4/ip_set_prime.h>
++
++static inline __u32
++jhash_ip(const struct ip_set_iphash *map, ip_set_ip_t ip)
++{
++ return jhash_1word(ip, map->initval);
++}
++
++static inline __u32
++randhash_ip(const struct ip_set_iphash *map, ip_set_ip_t ip)
++{
++ return (1 + ip % map->prime);
++}
++
++static inline __u32
++hash_id(struct ip_set *set, ip_set_ip_t ip, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_iphash *map = (struct ip_set_iphash *) set->data;
++ __u32 jhash, randhash, id;
++ u_int16_t i;
++
++ *hash_ip = ip & map->netmask;
++ jhash = jhash_ip(map, *hash_ip);
++ randhash = randhash_ip(map, *hash_ip);
++ DP("set: %s, ip:%u.%u.%u.%u, %u.%u.%u.%u, %u.%u.%u.%u",
++ set->name, HIPQUAD(ip), HIPQUAD(*hash_ip), HIPQUAD(map->netmask));
++
++ for (i = 0; i < map->probes; i++) {
++ id = (jhash + i * randhash) % map->hashsize;
++ DP("hash key: %u", id);
++ if (map->members[id] == *hash_ip)
++ return id;
++ /* No shortcut at testing - there can be deleted
++ * entries. */
++ }
++ return UINT_MAX;
++}
++
++static inline int
++__testip(struct ip_set *set, ip_set_ip_t ip, ip_set_ip_t *hash_ip)
++{
++ return (hash_id(set, ip, hash_ip) != UINT_MAX);
++}
++
++static int
++testip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_req_iphash *req =
++ (struct ip_set_req_iphash *) data;
++
++ if (size != sizeof(struct ip_set_req_iphash)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_iphash),
++ size);
++ return -EINVAL;
++ }
++ return __testip(set, req->ip, hash_ip);
++}
++
++static int
++testip_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_ip)
++{
++ return __testip(set,
++ ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr),
++ hash_ip);
++}
++
++static inline int
++__addip(struct ip_set_iphash *map, ip_set_ip_t ip, ip_set_ip_t *hash_ip)
++{
++ __u32 jhash, randhash, probe;
++ u_int16_t i;
++
++ *hash_ip = ip & map->netmask;
++ jhash = jhash_ip(map, *hash_ip);
++ randhash = randhash_ip(map, *hash_ip);
++
++ for (i = 0; i < map->probes; i++) {
++ probe = (jhash + i * randhash) % map->hashsize;
++ if (map->members[probe] == *hash_ip)
++ return -EEXIST;
++ if (!map->members[probe]) {
++ map->members[probe] = *hash_ip;
++ return 0;
++ }
++ }
++ /* Trigger rehashing */
++ return -EAGAIN;
++}
++
++static int
++addip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_req_iphash *req =
++ (struct ip_set_req_iphash *) data;
++
++ if (size != sizeof(struct ip_set_req_iphash)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_iphash),
++ size);
++ return -EINVAL;
++ }
++ return __addip((struct ip_set_iphash *) set->data, req->ip, hash_ip);
++}
++
++static int
++addip_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_ip)
++{
++ return __addip((struct ip_set_iphash *) set->data,
++ ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr),
++ hash_ip);
++}
++
++static int retry(struct ip_set *set)
++{
++ struct ip_set_iphash *map = (struct ip_set_iphash *) set->data;
++ ip_set_ip_t hash_ip, *members;
++ u_int32_t i, hashsize;
++ unsigned newbytes;
++ int res;
++ struct ip_set_iphash tmp = {
++ .hashsize = map->hashsize,
++ .probes = map->probes,
++ .resize = map->resize,
++ .netmask = map->netmask,
++ };
++
++ if (map->resize == 0)
++ return -ERANGE;
++
++ again:
++ res = 0;
++
++ /* Calculate new parameters */
++ get_random_bytes(&tmp.initval, 4);
++ hashsize = tmp.hashsize + (tmp.hashsize * map->resize)/100;
++ if (hashsize == tmp.hashsize)
++ hashsize++;
++ tmp.prime = make_prime(hashsize);
++
++ ip_set_printk("rehashing of set %s triggered: "
++ "hashsize grows from %u to %u",
++ set->name, tmp.hashsize, hashsize);
++ tmp.hashsize = hashsize;
++
++ newbytes = hashsize * sizeof(ip_set_ip_t);
++ tmp.members = ip_set_malloc_atomic(newbytes);
++ if (!tmp.members) {
++ DP("out of memory for %d bytes", newbytes);
++ return -ENOMEM;
++ }
++ memset(tmp.members, 0, newbytes);
++
++ write_lock_bh(&set->lock);
++ map = (struct ip_set_iphash *) set->data; /* Play safe */
++ for (i = 0; i < map->hashsize && res == 0; i++) {
++ if (map->members[i])
++ res = __addip(&tmp, map->members[i], &hash_ip);
++ }
++ if (res) {
++ /* Failure, try again */
++ write_unlock_bh(&set->lock);
++ ip_set_free(tmp.members, newbytes);
++ goto again;
++ }
++
++ /* Success at resizing! */
++ members = map->members;
++ hashsize = map->hashsize;
++
++ map->initval = tmp.initval;
++ map->prime = tmp.prime;
++ map->hashsize = tmp.hashsize;
++ map->members = tmp.members;
++ write_unlock_bh(&set->lock);
++
++ ip_set_free(members, hashsize * sizeof(ip_set_ip_t));
++
++ return 0;
++}
++
++static inline int
++__delip(struct ip_set *set, ip_set_ip_t ip, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_iphash *map = (struct ip_set_iphash *) set->data;
++ ip_set_ip_t id = hash_id(set, ip, hash_ip);
++
++ if (id == UINT_MAX)
++ return -EEXIST;
++
++ map->members[id] = 0;
++ return 0;
++}
++
++static int
++delip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_req_iphash *req =
++ (struct ip_set_req_iphash *) data;
++
++ if (size != sizeof(struct ip_set_req_iphash)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_iphash),
++ size);
++ return -EINVAL;
++ }
++ return __delip(set, req->ip, hash_ip);
++}
++
++static int
++delip_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_ip)
++{
++ return __delip(set,
++ ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr),
++ hash_ip);
++}
++
++static int create(struct ip_set *set, const void *data, size_t size)
++{
++ unsigned newbytes;
++ struct ip_set_req_iphash_create *req =
++ (struct ip_set_req_iphash_create *) data;
++ struct ip_set_iphash *map;
++
++ if (size != sizeof(struct ip_set_req_iphash_create)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_iphash_create),
++ size);
++ return -EINVAL;
++ }
++
++ if (req->hashsize < 1) {
++ ip_set_printk("hashsize too small");
++ return -ENOEXEC;
++ }
++
++ map = kmalloc(sizeof(struct ip_set_iphash), GFP_KERNEL);
++ if (!map) {
++ DP("out of memory for %d bytes",
++ sizeof(struct ip_set_iphash));
++ return -ENOMEM;
++ }
++ get_random_bytes(&map->initval, 4);
++ map->prime = make_prime(req->hashsize);
++ map->hashsize = req->hashsize;
++ map->probes = req->probes;
++ map->resize = req->resize;
++ map->netmask = req->netmask;
++ newbytes = map->hashsize * sizeof(ip_set_ip_t);
++ map->members = ip_set_malloc(newbytes);
++ if (!map->members) {
++ DP("out of memory for %d bytes", newbytes);
++ kfree(map);
++ return -ENOMEM;
++ }
++ memset(map->members, 0, newbytes);
++
++ set->data = map;
++ return 0;
++}
++
++static void destroy(struct ip_set *set)
++{
++ struct ip_set_iphash *map = (struct ip_set_iphash *) set->data;
++
++ ip_set_free(map->members, map->hashsize * sizeof(ip_set_ip_t));
++ kfree(map);
++
++ set->data = NULL;
++}
++
++static void flush(struct ip_set *set)
++{
++ struct ip_set_iphash *map = (struct ip_set_iphash *) set->data;
++ memset(map->members, 0, map->hashsize * sizeof(ip_set_ip_t));
++}
++
++static void list_header(const struct ip_set *set, void *data)
++{
++ struct ip_set_iphash *map = (struct ip_set_iphash *) set->data;
++ struct ip_set_req_iphash_create *header =
++ (struct ip_set_req_iphash_create *) data;
++
++ header->hashsize = map->hashsize;
++ header->probes = map->probes;
++ header->resize = map->resize;
++ header->netmask = map->netmask;
++}
++
++static int list_members_size(const struct ip_set *set)
++{
++ struct ip_set_iphash *map = (struct ip_set_iphash *) set->data;
++
++ return (map->hashsize * sizeof(ip_set_ip_t));
++}
++
++static void list_members(const struct ip_set *set, void *data)
++{
++ struct ip_set_iphash *map = (struct ip_set_iphash *) set->data;
++ int bytes = map->hashsize * sizeof(ip_set_ip_t);
++
++ memcpy(data, map->members, bytes);
++}
++
++static struct ip_set_type ip_set_iphash = {
++ .typename = SETTYPE_NAME,
++ .typecode = IPSET_TYPE_IP,
++ .protocol_version = IP_SET_PROTOCOL_VERSION,
++ .create = &create,
++ .destroy = &destroy,
++ .flush = &flush,
++ .reqsize = sizeof(struct ip_set_req_iphash),
++ .addip = &addip,
++ .addip_kernel = &addip_kernel,
++ .retry = &retry,
++ .delip = &delip,
++ .delip_kernel = &delip_kernel,
++ .testip = &testip,
++ .testip_kernel = &testip_kernel,
++ .header_size = sizeof(struct ip_set_req_iphash_create),
++ .list_header = &list_header,
++ .list_members_size = &list_members_size,
++ .list_members = &list_members,
++ .me = THIS_MODULE,
++};
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>");
++MODULE_DESCRIPTION("iphash type of IP sets");
++
++static int __init init(void)
++{
++ init_max_malloc_size();
++ return ip_set_register_set_type(&ip_set_iphash);
++}
++
++static void __exit fini(void)
++{
++ /* FIXME: possible race with ip_set_create() */
++ ip_set_unregister_set_type(&ip_set_iphash);
++}
++
++module_init(init);
++module_exit(fini);
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ip_set_ipmap.c linux-2.6.19.dev/net/ipv4/netfilter/ip_set_ipmap.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ip_set_ipmap.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ip_set_ipmap.c 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,313 @@
++/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
++ * Patrick Schaaf <bof@bof.de>
++ * Copyright (C) 2003-2004 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
++ *
++ * 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.
++ */
++
++/* Kernel module implementing an IP set type: the single bitmap type */
++
++#include <linux/module.h>
++#include <linux/ip.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++#include <linux/netfilter_ipv4/ip_set.h>
++#include <linux/errno.h>
++#include <asm/uaccess.h>
++#include <asm/bitops.h>
++#include <linux/spinlock.h>
++
++#include <linux/netfilter_ipv4/ip_set_ipmap.h>
++
++static inline ip_set_ip_t
++ip_to_id(const struct ip_set_ipmap *map, ip_set_ip_t ip)
++{
++ return (ip - map->first_ip)/map->hosts;
++}
++
++static inline int
++__testip(struct ip_set *set, ip_set_ip_t ip, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_ipmap *map = (struct ip_set_ipmap *) set->data;
++
++ if (ip < map->first_ip || ip > map->last_ip)
++ return -ERANGE;
++
++ *hash_ip = ip & map->netmask;
++ DP("set: %s, ip:%u.%u.%u.%u, %u.%u.%u.%u",
++ set->name, HIPQUAD(ip), HIPQUAD(*hash_ip));
++ return !!test_bit(ip_to_id(map, *hash_ip), map->members);
++}
++
++static int
++testip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_req_ipmap *req =
++ (struct ip_set_req_ipmap *) data;
++
++ if (size != sizeof(struct ip_set_req_ipmap)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_ipmap),
++ size);
++ return -EINVAL;
++ }
++ return __testip(set, req->ip, hash_ip);
++}
++
++static int
++testip_kernel(struct ip_set *set,
++ const struct sk_buff *skb,
++ u_int32_t flags,
++ ip_set_ip_t *hash_ip)
++{
++ int res;
++
++ DP("flag: %s src: %u.%u.%u.%u dst: %u.%u.%u.%u",
++ flags & IPSET_SRC ? "SRC" : "DST",
++ NIPQUAD(skb->nh.iph->saddr),
++ NIPQUAD(skb->nh.iph->daddr));
++
++ res = __testip(set,
++ ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr),
++ hash_ip);
++ return (res < 0 ? 0 : res);
++}
++
++static inline int
++__addip(struct ip_set *set, ip_set_ip_t ip, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_ipmap *map = (struct ip_set_ipmap *) set->data;
++
++ if (ip < map->first_ip || ip > map->last_ip)
++ return -ERANGE;
++
++ *hash_ip = ip & map->netmask;
++ DP("%u.%u.%u.%u, %u.%u.%u.%u", HIPQUAD(ip), HIPQUAD(*hash_ip));
++ if (test_and_set_bit(ip_to_id(map, *hash_ip), map->members))
++ return -EEXIST;
++
++ return 0;
++}
++
++static int
++addip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_req_ipmap *req =
++ (struct ip_set_req_ipmap *) data;
++
++ if (size != sizeof(struct ip_set_req_ipmap)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_ipmap),
++ size);
++ return -EINVAL;
++ }
++ DP("%u.%u.%u.%u", HIPQUAD(req->ip));
++ return __addip(set, req->ip, hash_ip);
++}
++
++static int
++addip_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_ip)
++{
++ return __addip(set,
++ ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr),
++ hash_ip);
++}
++
++static inline int
++__delip(struct ip_set *set, ip_set_ip_t ip, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_ipmap *map = (struct ip_set_ipmap *) set->data;
++
++ if (ip < map->first_ip || ip > map->last_ip)
++ return -ERANGE;
++
++ *hash_ip = ip & map->netmask;
++ DP("%u.%u.%u.%u, %u.%u.%u.%u", HIPQUAD(ip), HIPQUAD(*hash_ip));
++ if (!test_and_clear_bit(ip_to_id(map, *hash_ip), map->members))
++ return -EEXIST;
++
++ return 0;
++}
++
++static int
++delip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_req_ipmap *req =
++ (struct ip_set_req_ipmap *) data;
++
++ if (size != sizeof(struct ip_set_req_ipmap)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_ipmap),
++ size);
++ return -EINVAL;
++ }
++ return __delip(set, req->ip, hash_ip);
++}
++
++static int
++delip_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_ip)
++{
++ return __delip(set,
++ ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr),
++ hash_ip);
++}
++
++static int create(struct ip_set *set, const void *data, size_t size)
++{
++ int newbytes;
++ struct ip_set_req_ipmap_create *req =
++ (struct ip_set_req_ipmap_create *) data;
++ struct ip_set_ipmap *map;
++
++ if (size != sizeof(struct ip_set_req_ipmap_create)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_ipmap_create),
++ size);
++ return -EINVAL;
++ }
++
++ DP("from %u.%u.%u.%u to %u.%u.%u.%u",
++ HIPQUAD(req->from), HIPQUAD(req->to));
++
++ if (req->from > req->to) {
++ DP("bad ip range");
++ return -ENOEXEC;
++ }
++
++ if (req->to - req->from > MAX_RANGE) {
++ ip_set_printk("range too big (max %d addresses)",
++ MAX_RANGE);
++ return -ENOEXEC;
++ }
++
++ map = kmalloc(sizeof(struct ip_set_ipmap), GFP_KERNEL);
++ if (!map) {
++ DP("out of memory for %d bytes",
++ sizeof(struct ip_set_ipmap));
++ return -ENOMEM;
++ }
++ map->first_ip = req->from;
++ map->last_ip = req->to;
++ map->netmask = req->netmask;
++
++ if (req->netmask == 0xFFFFFFFF) {
++ map->hosts = 1;
++ map->sizeid = map->last_ip - map->first_ip + 1;
++ } else {
++ unsigned int mask_bits, netmask_bits;
++ ip_set_ip_t mask;
++
++ map->first_ip &= map->netmask; /* Should we better bark? */
++
++ mask = range_to_mask(map->first_ip, map->last_ip, &mask_bits);
++ netmask_bits = mask_to_bits(map->netmask);
++
++ if (!mask || netmask_bits <= mask_bits)
++ return -ENOEXEC;
++
++ map->hosts = 2 << (32 - netmask_bits - 1);
++ map->sizeid = 2 << (netmask_bits - mask_bits - 1);
++ }
++ newbytes = bitmap_bytes(0, map->sizeid - 1);
++ map->members = kmalloc(newbytes, GFP_KERNEL);
++ if (!map->members) {
++ DP("out of memory for %d bytes", newbytes);
++ kfree(map);
++ return -ENOMEM;
++ }
++ memset(map->members, 0, newbytes);
++
++ set->data = map;
++ return 0;
++}
++
++static void destroy(struct ip_set *set)
++{
++ struct ip_set_ipmap *map = (struct ip_set_ipmap *) set->data;
++
++ kfree(map->members);
++ kfree(map);
++
++ set->data = NULL;
++}
++
++static void flush(struct ip_set *set)
++{
++ struct ip_set_ipmap *map = (struct ip_set_ipmap *) set->data;
++ memset(map->members, 0, bitmap_bytes(0, map->sizeid - 1));
++}
++
++static void list_header(const struct ip_set *set, void *data)
++{
++ struct ip_set_ipmap *map = (struct ip_set_ipmap *) set->data;
++ struct ip_set_req_ipmap_create *header =
++ (struct ip_set_req_ipmap_create *) data;
++
++ header->from = map->first_ip;
++ header->to = map->last_ip;
++ header->netmask = map->netmask;
++}
++
++static int list_members_size(const struct ip_set *set)
++{
++ struct ip_set_ipmap *map = (struct ip_set_ipmap *) set->data;
++
++ return bitmap_bytes(0, map->sizeid - 1);
++}
++
++static void list_members(const struct ip_set *set, void *data)
++{
++ struct ip_set_ipmap *map = (struct ip_set_ipmap *) set->data;
++ int bytes = bitmap_bytes(0, map->sizeid - 1);
++
++ memcpy(data, map->members, bytes);
++}
++
++static struct ip_set_type ip_set_ipmap = {
++ .typename = SETTYPE_NAME,
++ .typecode = IPSET_TYPE_IP,
++ .protocol_version = IP_SET_PROTOCOL_VERSION,
++ .create = &create,
++ .destroy = &destroy,
++ .flush = &flush,
++ .reqsize = sizeof(struct ip_set_req_ipmap),
++ .addip = &addip,
++ .addip_kernel = &addip_kernel,
++ .delip = &delip,
++ .delip_kernel = &delip_kernel,
++ .testip = &testip,
++ .testip_kernel = &testip_kernel,
++ .header_size = sizeof(struct ip_set_req_ipmap_create),
++ .list_header = &list_header,
++ .list_members_size = &list_members_size,
++ .list_members = &list_members,
++ .me = THIS_MODULE,
++};
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>");
++MODULE_DESCRIPTION("ipmap type of IP sets");
++
++static int __init init(void)
++{
++ return ip_set_register_set_type(&ip_set_ipmap);
++}
++
++static void __exit fini(void)
++{
++ /* FIXME: possible race with ip_set_create() */
++ ip_set_unregister_set_type(&ip_set_ipmap);
++}
++
++module_init(init);
++module_exit(fini);
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ip_set_iptree.c linux-2.6.19.dev/net/ipv4/netfilter/ip_set_iptree.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ip_set_iptree.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ip_set_iptree.c 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,510 @@
++/* Copyright (C) 2005 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
++ *
++ * 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.
++ */
++
++/* Kernel module implementing an IP set type: the iptree type */
++
++#include <linux/module.h>
++#include <linux/ip.h>
++#include <linux/skbuff.h>
++#include <linux/slab.h>
++#include <linux/delay.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++#include <linux/netfilter_ipv4/ip_set.h>
++#include <linux/errno.h>
++#include <asm/uaccess.h>
++#include <asm/bitops.h>
++#include <linux/spinlock.h>
++
++#include <linux/netfilter_ipv4/ip_set_iptree.h>
++
++/* Garbage collection interval in seconds: */
++#define IPTREE_GC_TIME 5*60
++/* Sleep so many milliseconds before trying again
++ * to delete the gc timer at destroying a set */
++#define IPTREE_DESTROY_SLEEP 100
++
++static kmem_cache_t *branch_cachep;
++static kmem_cache_t *leaf_cachep;
++
++#define ABCD(a,b,c,d,addrp) do { \
++ a = ((unsigned char *)addrp)[3]; \
++ b = ((unsigned char *)addrp)[2]; \
++ c = ((unsigned char *)addrp)[1]; \
++ d = ((unsigned char *)addrp)[0]; \
++} while (0)
++
++#define TESTIP_WALK(map, elem, branch) do { \
++ if ((map)->tree[elem]) { \
++ branch = (map)->tree[elem]; \
++ } else \
++ return 0; \
++} while (0)
++
++static inline int
++__testip(struct ip_set *set, ip_set_ip_t ip, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_iptree *map = (struct ip_set_iptree *) set->data;
++ struct ip_set_iptreeb *btree;
++ struct ip_set_iptreec *ctree;
++ struct ip_set_iptreed *dtree;
++ unsigned char a,b,c,d;
++
++ *hash_ip = ip;
++ ABCD(a, b, c, d, hash_ip);
++ DP("%u %u %u %u timeout %u", a, b, c, d, map->timeout);
++ TESTIP_WALK(map, a, btree);
++ TESTIP_WALK(btree, b, ctree);
++ TESTIP_WALK(ctree, c, dtree);
++ DP("%lu %lu", dtree->expires[d], jiffies);
++ return !!(map->timeout ? (time_after(dtree->expires[d], jiffies))
++ : dtree->expires[d]);
++}
++
++static int
++testip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_req_iptree *req =
++ (struct ip_set_req_iptree *) data;
++
++ if (size != sizeof(struct ip_set_req_iptree)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_iptree),
++ size);
++ return -EINVAL;
++ }
++ return __testip(set, req->ip, hash_ip);
++}
++
++static int
++testip_kernel(struct ip_set *set,
++ const struct sk_buff *skb,
++ u_int32_t flags,
++ ip_set_ip_t *hash_ip)
++{
++ int res;
++
++ DP("flag: %s src: %u.%u.%u.%u dst: %u.%u.%u.%u",
++ flags & IPSET_SRC ? "SRC" : "DST",
++ NIPQUAD(skb->nh.iph->saddr),
++ NIPQUAD(skb->nh.iph->daddr));
++
++ res = __testip(set,
++ ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr),
++ hash_ip);
++ return (res < 0 ? 0 : res);
++}
++
++#define ADDIP_WALK(map, elem, branch, type, cachep) do { \
++ if ((map)->tree[elem]) { \
++ DP("found %u", elem); \
++ branch = (map)->tree[elem]; \
++ } else { \
++ branch = (type *) \
++ kmem_cache_alloc(cachep, GFP_KERNEL); \
++ if (branch == NULL) \
++ return -ENOMEM; \
++ memset(branch, 0, sizeof(*branch)); \
++ (map)->tree[elem] = branch; \
++ DP("alloc %u", elem); \
++ } \
++} while (0)
++
++static inline int
++__addip(struct ip_set *set, ip_set_ip_t ip, unsigned int timeout,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_iptree *map = (struct ip_set_iptree *) set->data;
++ struct ip_set_iptreeb *btree;
++ struct ip_set_iptreec *ctree;
++ struct ip_set_iptreed *dtree;
++ unsigned char a,b,c,d;
++ int ret = 0;
++
++ *hash_ip = ip;
++ ABCD(a, b, c, d, hash_ip);
++ DP("%u %u %u %u timeout %u", a, b, c, d, timeout);
++ ADDIP_WALK(map, a, btree, struct ip_set_iptreeb, branch_cachep);
++ ADDIP_WALK(btree, b, ctree, struct ip_set_iptreec, branch_cachep);
++ ADDIP_WALK(ctree, c, dtree, struct ip_set_iptreed, leaf_cachep);
++ if (dtree->expires[d]
++ && (!map->timeout || time_after(dtree->expires[d], jiffies)))
++ ret = -EEXIST;
++ dtree->expires[d] = map->timeout ? (timeout * HZ + jiffies) : 1;
++ DP("%u %lu", d, dtree->expires[d]);
++ return ret;
++}
++
++static int
++addip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_iptree *map = (struct ip_set_iptree *) set->data;
++ struct ip_set_req_iptree *req =
++ (struct ip_set_req_iptree *) data;
++
++ if (size != sizeof(struct ip_set_req_iptree)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_iptree),
++ size);
++ return -EINVAL;
++ }
++ DP("%u.%u.%u.%u %u", HIPQUAD(req->ip), req->timeout);
++ return __addip(set, req->ip,
++ req->timeout ? req->timeout : map->timeout,
++ hash_ip);
++}
++
++static int
++addip_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_iptree *map = (struct ip_set_iptree *) set->data;
++
++ return __addip(set,
++ ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr),
++ map->timeout,
++ hash_ip);
++}
++
++#define DELIP_WALK(map, elem, branch) do { \
++ if ((map)->tree[elem]) { \
++ branch = (map)->tree[elem]; \
++ } else \
++ return -EEXIST; \
++} while (0)
++
++static inline int
++__delip(struct ip_set *set, ip_set_ip_t ip, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_iptree *map = (struct ip_set_iptree *) set->data;
++ struct ip_set_iptreeb *btree;
++ struct ip_set_iptreec *ctree;
++ struct ip_set_iptreed *dtree;
++ unsigned char a,b,c,d;
++
++ *hash_ip = ip;
++ ABCD(a, b, c, d, hash_ip);
++ DELIP_WALK(map, a, btree);
++ DELIP_WALK(btree, b, ctree);
++ DELIP_WALK(ctree, c, dtree);
++
++ if (dtree->expires[d]) {
++ dtree->expires[d] = 0;
++ return 0;
++ }
++ return -EEXIST;
++}
++
++static int
++delip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_req_iptree *req =
++ (struct ip_set_req_iptree *) data;
++
++ if (size != sizeof(struct ip_set_req_iptree)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_iptree),
++ size);
++ return -EINVAL;
++ }
++ return __delip(set, req->ip, hash_ip);
++}
++
++static int
++delip_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_ip)
++{
++ return __delip(set,
++ ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr),
++ hash_ip);
++}
++
++#define LOOP_WALK_BEGIN(map, i, branch) \
++ for (i = 0; i < 255; i++) { \
++ if (!(map)->tree[i]) \
++ continue; \
++ branch = (map)->tree[i]
++
++#define LOOP_WALK_END }
++
++static void ip_tree_gc(unsigned long ul_set)
++{
++ struct ip_set *set = (void *) ul_set;
++ struct ip_set_iptree *map = (struct ip_set_iptree *) set->data;
++ struct ip_set_iptreeb *btree;
++ struct ip_set_iptreec *ctree;
++ struct ip_set_iptreed *dtree;
++ unsigned char a,b,c,d;
++ unsigned char i,j,k;
++
++ i = j = k = 0;
++ DP("gc: %s", set->name);
++ write_lock_bh(&set->lock);
++ LOOP_WALK_BEGIN(map, a, btree);
++ LOOP_WALK_BEGIN(btree, b, ctree);
++ LOOP_WALK_BEGIN(ctree, c, dtree);
++ for (d = 0; d < 255; d++) {
++ if (dtree->expires[d]) {
++ DP("gc: %u %u %u %u: expires %lu jiffies %lu",
++ a, b, c, d,
++ dtree->expires[d], jiffies);
++ if (map->timeout
++ && time_before(dtree->expires[d], jiffies))
++ dtree->expires[d] = 0;
++ else
++ k = 1;
++ }
++ }
++ if (k == 0) {
++ DP("gc: %s: leaf %u %u %u empty",
++ set->name, a, b, c);
++ kmem_cache_free(leaf_cachep, dtree);
++ ctree->tree[c] = NULL;
++ } else {
++ DP("gc: %s: leaf %u %u %u not empty",
++ set->name, a, b, c);
++ j = 1;
++ k = 0;
++ }
++ LOOP_WALK_END;
++ if (j == 0) {
++ DP("gc: %s: branch %u %u empty",
++ set->name, a, b);
++ kmem_cache_free(branch_cachep, ctree);
++ btree->tree[b] = NULL;
++ } else {
++ DP("gc: %s: branch %u %u not empty",
++ set->name, a, b);
++ i = 1;
++ j = k = 0;
++ }
++ LOOP_WALK_END;
++ if (i == 0) {
++ DP("gc: %s: branch %u empty",
++ set->name, a);
++ kmem_cache_free(branch_cachep, btree);
++ map->tree[a] = NULL;
++ } else {
++ DP("gc: %s: branch %u not empty",
++ set->name, a);
++ i = j = k = 0;
++ }
++ LOOP_WALK_END;
++ write_unlock_bh(&set->lock);
++
++ map->gc.expires = jiffies + map->gc_interval * HZ;
++ add_timer(&map->gc);
++}
++
++static int create(struct ip_set *set, const void *data, size_t size)
++{
++ struct ip_set_req_iptree_create *req =
++ (struct ip_set_req_iptree_create *) data;
++ struct ip_set_iptree *map;
++
++ if (size != sizeof(struct ip_set_req_iptree_create)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_iptree_create),
++ size);
++ return -EINVAL;
++ }
++
++ map = kmalloc(sizeof(struct ip_set_iptree), GFP_KERNEL);
++ if (!map) {
++ DP("out of memory for %d bytes",
++ sizeof(struct ip_set_iptree));
++ return -ENOMEM;
++ }
++ memset(map, 0, sizeof(*map));
++ map->timeout = req->timeout;
++ set->data = map;
++
++ /* If there is no timeout for the entries,
++ * we still have to call gc because delete
++ * do not clean up empty branches */
++ map->gc_interval = IPTREE_GC_TIME;
++ init_timer(&map->gc);
++ map->gc.data = (unsigned long) set;
++ map->gc.function = ip_tree_gc;
++ map->gc.expires = jiffies + map->gc_interval * HZ;
++ add_timer(&map->gc);
++
++ return 0;
++}
++
++static void __flush(struct ip_set_iptree *map)
++{
++ struct ip_set_iptreeb *btree;
++ struct ip_set_iptreec *ctree;
++ struct ip_set_iptreed *dtree;
++ unsigned int a,b,c;
++
++ LOOP_WALK_BEGIN(map, a, btree);
++ LOOP_WALK_BEGIN(btree, b, ctree);
++ LOOP_WALK_BEGIN(ctree, c, dtree);
++ kmem_cache_free(leaf_cachep, dtree);
++ LOOP_WALK_END;
++ kmem_cache_free(branch_cachep, ctree);
++ LOOP_WALK_END;
++ kmem_cache_free(branch_cachep, btree);
++ LOOP_WALK_END;
++}
++
++static void destroy(struct ip_set *set)
++{
++ struct ip_set_iptree *map = (struct ip_set_iptree *) set->data;
++
++ while (!del_timer(&map->gc))
++ msleep(IPTREE_DESTROY_SLEEP);
++ __flush(map);
++ kfree(map);
++ set->data = NULL;
++}
++
++static void flush(struct ip_set *set)
++{
++ struct ip_set_iptree *map = (struct ip_set_iptree *) set->data;
++ unsigned int timeout = map->timeout;
++
++ __flush(map);
++ memset(map, 0, sizeof(*map));
++ map->timeout = timeout;
++}
++
++static void list_header(const struct ip_set *set, void *data)
++{
++ struct ip_set_iptree *map = (struct ip_set_iptree *) set->data;
++ struct ip_set_req_iptree_create *header =
++ (struct ip_set_req_iptree_create *) data;
++
++ header->timeout = map->timeout;
++}
++
++static int list_members_size(const struct ip_set *set)
++{
++ struct ip_set_iptree *map = (struct ip_set_iptree *) set->data;
++ struct ip_set_iptreeb *btree;
++ struct ip_set_iptreec *ctree;
++ struct ip_set_iptreed *dtree;
++ unsigned char a,b,c,d;
++ unsigned int count = 0;
++
++ LOOP_WALK_BEGIN(map, a, btree);
++ LOOP_WALK_BEGIN(btree, b, ctree);
++ LOOP_WALK_BEGIN(ctree, c, dtree);
++ for (d = 0; d < 255; d++) {
++ if (dtree->expires[d]
++ && (!map->timeout || time_after(dtree->expires[d], jiffies)))
++ count++;
++ }
++ LOOP_WALK_END;
++ LOOP_WALK_END;
++ LOOP_WALK_END;
++
++ DP("members %u", count);
++ return (count * sizeof(struct ip_set_req_iptree));
++}
++
++static void list_members(const struct ip_set *set, void *data)
++{
++ struct ip_set_iptree *map = (struct ip_set_iptree *) set->data;
++ struct ip_set_iptreeb *btree;
++ struct ip_set_iptreec *ctree;
++ struct ip_set_iptreed *dtree;
++ unsigned char a,b,c,d;
++ size_t offset = 0;
++ struct ip_set_req_iptree *entry;
++
++ LOOP_WALK_BEGIN(map, a, btree);
++ LOOP_WALK_BEGIN(btree, b, ctree);
++ LOOP_WALK_BEGIN(ctree, c, dtree);
++ for (d = 0; d < 255; d++) {
++ if (dtree->expires[d]
++ && (!map->timeout || time_after(dtree->expires[d], jiffies))) {
++ entry = (struct ip_set_req_iptree *)(data + offset);
++ entry->ip = ((a << 24) | (b << 16) | (c << 8) | d);
++ entry->timeout = !map->timeout ? 0
++ : (dtree->expires[d] - jiffies)/HZ;
++ offset += sizeof(struct ip_set_req_iptree);
++ }
++ }
++ LOOP_WALK_END;
++ LOOP_WALK_END;
++ LOOP_WALK_END;
++}
++
++static struct ip_set_type ip_set_iptree = {
++ .typename = SETTYPE_NAME,
++ .typecode = IPSET_TYPE_IP,
++ .protocol_version = IP_SET_PROTOCOL_VERSION,
++ .create = &create,
++ .destroy = &destroy,
++ .flush = &flush,
++ .reqsize = sizeof(struct ip_set_req_iptree),
++ .addip = &addip,
++ .addip_kernel = &addip_kernel,
++ .delip = &delip,
++ .delip_kernel = &delip_kernel,
++ .testip = &testip,
++ .testip_kernel = &testip_kernel,
++ .header_size = sizeof(struct ip_set_req_iptree_create),
++ .list_header = &list_header,
++ .list_members_size = &list_members_size,
++ .list_members = &list_members,
++ .me = THIS_MODULE,
++};
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>");
++MODULE_DESCRIPTION("iptree type of IP sets");
++
++static int __init init(void)
++{
++ int ret;
++
++ branch_cachep = kmem_cache_create("ip_set_iptreeb",
++ sizeof(struct ip_set_iptreeb),
++ 0, 0, NULL, NULL);
++ if (!branch_cachep) {
++ printk(KERN_ERR "Unable to create ip_set_iptreeb slab cache\n");
++ ret = -ENOMEM;
++ goto out;
++ }
++ leaf_cachep = kmem_cache_create("ip_set_iptreed",
++ sizeof(struct ip_set_iptreed),
++ 0, 0, NULL, NULL);
++ if (!leaf_cachep) {
++ printk(KERN_ERR "Unable to create ip_set_iptreed slab cache\n");
++ ret = -ENOMEM;
++ goto free_branch;
++ }
++ ret = ip_set_register_set_type(&ip_set_iptree);
++ if (ret == 0)
++ goto out;
++
++ kmem_cache_destroy(leaf_cachep);
++ free_branch:
++ kmem_cache_destroy(branch_cachep);
++ out:
++ return ret;
++}
++
++static void __exit fini(void)
++{
++ /* FIXME: possible race with ip_set_create() */
++ ip_set_unregister_set_type(&ip_set_iptree);
++ kmem_cache_destroy(leaf_cachep);
++ kmem_cache_destroy(branch_cachep);
++}
++
++module_init(init);
++module_exit(fini);
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ip_set_macipmap.c linux-2.6.19.dev/net/ipv4/netfilter/ip_set_macipmap.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ip_set_macipmap.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ip_set_macipmap.c 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,338 @@
++/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
++ * Patrick Schaaf <bof@bof.de>
++ * Martin Josefsson <gandalf@wlug.westbo.se>
++ * Copyright (C) 2003-2004 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
++ *
++ * 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.
++ */
++
++/* Kernel module implementing an IP set type: the macipmap type */
++
++#include <linux/module.h>
++#include <linux/ip.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++#include <linux/netfilter_ipv4/ip_set.h>
++#include <linux/errno.h>
++#include <asm/uaccess.h>
++#include <asm/bitops.h>
++#include <linux/spinlock.h>
++#include <linux/if_ether.h>
++#include <linux/vmalloc.h>
++
++#include <linux/netfilter_ipv4/ip_set_malloc.h>
++#include <linux/netfilter_ipv4/ip_set_macipmap.h>
++
++static int
++testip(struct ip_set *set, const void *data, size_t size, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_macipmap *map = (struct ip_set_macipmap *) set->data;
++ struct ip_set_macip *table = (struct ip_set_macip *) map->members;
++ struct ip_set_req_macipmap *req = (struct ip_set_req_macipmap *) data;
++
++ if (size != sizeof(struct ip_set_req_macipmap)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_macipmap),
++ size);
++ return -EINVAL;
++ }
++
++ if (req->ip < map->first_ip || req->ip > map->last_ip)
++ return -ERANGE;
++
++ *hash_ip = req->ip;
++ DP("set: %s, ip:%u.%u.%u.%u, %u.%u.%u.%u",
++ set->name, HIPQUAD(req->ip), HIPQUAD(*hash_ip));
++ if (test_bit(IPSET_MACIP_ISSET,
++ (void *) &table[req->ip - map->first_ip].flags)) {
++ return (memcmp(req->ethernet,
++ &table[req->ip - map->first_ip].ethernet,
++ ETH_ALEN) == 0);
++ } else {
++ return (map->flags & IPSET_MACIP_MATCHUNSET ? 1 : 0);
++ }
++}
++
++static int
++testip_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_macipmap *map =
++ (struct ip_set_macipmap *) set->data;
++ struct ip_set_macip *table =
++ (struct ip_set_macip *) map->members;
++ ip_set_ip_t ip;
++
++ ip = ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr);
++ DP("flag: %s src: %u.%u.%u.%u dst: %u.%u.%u.%u",
++ flags & IPSET_SRC ? "SRC" : "DST",
++ NIPQUAD(skb->nh.iph->saddr),
++ NIPQUAD(skb->nh.iph->daddr));
++
++ if (ip < map->first_ip || ip > map->last_ip)
++ return 0;
++
++ *hash_ip = ip;
++ DP("set: %s, ip:%u.%u.%u.%u, %u.%u.%u.%u",
++ set->name, HIPQUAD(ip), HIPQUAD(*hash_ip));
++ if (test_bit(IPSET_MACIP_ISSET,
++ (void *) &table[ip - map->first_ip].flags)) {
++ /* Is mac pointer valid?
++ * If so, compare... */
++ return (skb->mac.raw >= skb->head
++ && (skb->mac.raw + ETH_HLEN) <= skb->data
++ && (memcmp(eth_hdr(skb)->h_source,
++ &table[ip - map->first_ip].ethernet,
++ ETH_ALEN) == 0));
++ } else {
++ return (map->flags & IPSET_MACIP_MATCHUNSET ? 1 : 0);
++ }
++}
++
++/* returns 0 on success */
++static inline int
++__addip(struct ip_set *set,
++ ip_set_ip_t ip, unsigned char *ethernet, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_macipmap *map =
++ (struct ip_set_macipmap *) set->data;
++ struct ip_set_macip *table =
++ (struct ip_set_macip *) map->members;
++
++ if (ip < map->first_ip || ip > map->last_ip)
++ return -ERANGE;
++ if (test_and_set_bit(IPSET_MACIP_ISSET,
++ (void *) &table[ip - map->first_ip].flags))
++ return -EEXIST;
++
++ *hash_ip = ip;
++ DP("%u.%u.%u.%u, %u.%u.%u.%u", HIPQUAD(ip), HIPQUAD(*hash_ip));
++ memcpy(&table[ip - map->first_ip].ethernet, ethernet, ETH_ALEN);
++ return 0;
++}
++
++static int
++addip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_req_macipmap *req =
++ (struct ip_set_req_macipmap *) data;
++
++ if (size != sizeof(struct ip_set_req_macipmap)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_macipmap),
++ size);
++ return -EINVAL;
++ }
++ return __addip(set, req->ip, req->ethernet, hash_ip);
++}
++
++static int
++addip_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_ip)
++{
++ ip_set_ip_t ip;
++
++ ip = ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr);
++
++ if (!(skb->mac.raw >= skb->head
++ && (skb->mac.raw + ETH_HLEN) <= skb->data))
++ return -EINVAL;
++
++ return __addip(set, ip, eth_hdr(skb)->h_source, hash_ip);
++}
++
++static inline int
++__delip(struct ip_set *set, ip_set_ip_t ip, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_macipmap *map =
++ (struct ip_set_macipmap *) set->data;
++ struct ip_set_macip *table =
++ (struct ip_set_macip *) map->members;
++
++ if (ip < map->first_ip || ip > map->last_ip)
++ return -ERANGE;
++ if (!test_and_clear_bit(IPSET_MACIP_ISSET,
++ (void *)&table[ip - map->first_ip].flags))
++ return -EEXIST;
++
++ *hash_ip = ip;
++ DP("%u.%u.%u.%u, %u.%u.%u.%u", HIPQUAD(ip), HIPQUAD(*hash_ip));
++ return 0;
++}
++
++static int
++delip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_req_macipmap *req =
++ (struct ip_set_req_macipmap *) data;
++
++ if (size != sizeof(struct ip_set_req_macipmap)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_macipmap),
++ size);
++ return -EINVAL;
++ }
++ return __delip(set, req->ip, hash_ip);
++}
++
++static int
++delip_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_ip)
++{
++ return __delip(set,
++ ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr),
++ hash_ip);
++}
++
++static inline size_t members_size(ip_set_id_t from, ip_set_id_t to)
++{
++ return (size_t)((to - from + 1) * sizeof(struct ip_set_macip));
++}
++
++static int create(struct ip_set *set, const void *data, size_t size)
++{
++ int newbytes;
++ struct ip_set_req_macipmap_create *req =
++ (struct ip_set_req_macipmap_create *) data;
++ struct ip_set_macipmap *map;
++
++ if (size != sizeof(struct ip_set_req_macipmap_create)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_macipmap_create),
++ size);
++ return -EINVAL;
++ }
++
++ DP("from %u.%u.%u.%u to %u.%u.%u.%u",
++ HIPQUAD(req->from), HIPQUAD(req->to));
++
++ if (req->from > req->to) {
++ DP("bad ip range");
++ return -ENOEXEC;
++ }
++
++ if (req->to - req->from > MAX_RANGE) {
++ ip_set_printk("range too big (max %d addresses)",
++ MAX_RANGE);
++ return -ENOEXEC;
++ }
++
++ map = kmalloc(sizeof(struct ip_set_macipmap), GFP_KERNEL);
++ if (!map) {
++ DP("out of memory for %d bytes",
++ sizeof(struct ip_set_macipmap));
++ return -ENOMEM;
++ }
++ map->flags = req->flags;
++ map->first_ip = req->from;
++ map->last_ip = req->to;
++ newbytes = members_size(map->first_ip, map->last_ip);
++ map->members = ip_set_malloc(newbytes);
++ if (!map->members) {
++ DP("out of memory for %d bytes", newbytes);
++ kfree(map);
++ return -ENOMEM;
++ }
++ memset(map->members, 0, newbytes);
++
++ set->data = map;
++ return 0;
++}
++
++static void destroy(struct ip_set *set)
++{
++ struct ip_set_macipmap *map =
++ (struct ip_set_macipmap *) set->data;
++
++ ip_set_free(map->members, members_size(map->first_ip, map->last_ip));
++ kfree(map);
++
++ set->data = NULL;
++}
++
++static void flush(struct ip_set *set)
++{
++ struct ip_set_macipmap *map =
++ (struct ip_set_macipmap *) set->data;
++ memset(map->members, 0, members_size(map->first_ip, map->last_ip));
++}
++
++static void list_header(const struct ip_set *set, void *data)
++{
++ struct ip_set_macipmap *map =
++ (struct ip_set_macipmap *) set->data;
++ struct ip_set_req_macipmap_create *header =
++ (struct ip_set_req_macipmap_create *) data;
++
++ DP("list_header %x %x %u", map->first_ip, map->last_ip,
++ map->flags);
++
++ header->from = map->first_ip;
++ header->to = map->last_ip;
++ header->flags = map->flags;
++}
++
++static int list_members_size(const struct ip_set *set)
++{
++ struct ip_set_macipmap *map =
++ (struct ip_set_macipmap *) set->data;
++
++ return members_size(map->first_ip, map->last_ip);
++}
++
++static void list_members(const struct ip_set *set, void *data)
++{
++ struct ip_set_macipmap *map =
++ (struct ip_set_macipmap *) set->data;
++
++ int bytes = members_size(map->first_ip, map->last_ip);
++
++ memcpy(data, map->members, bytes);
++}
++
++static struct ip_set_type ip_set_macipmap = {
++ .typename = SETTYPE_NAME,
++ .typecode = IPSET_TYPE_IP,
++ .protocol_version = IP_SET_PROTOCOL_VERSION,
++ .create = &create,
++ .destroy = &destroy,
++ .flush = &flush,
++ .reqsize = sizeof(struct ip_set_req_macipmap),
++ .addip = &addip,
++ .addip_kernel = &addip_kernel,
++ .delip = &delip,
++ .delip_kernel = &delip_kernel,
++ .testip = &testip,
++ .testip_kernel = &testip_kernel,
++ .header_size = sizeof(struct ip_set_req_macipmap_create),
++ .list_header = &list_header,
++ .list_members_size = &list_members_size,
++ .list_members = &list_members,
++ .me = THIS_MODULE,
++};
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>");
++MODULE_DESCRIPTION("macipmap type of IP sets");
++
++static int __init init(void)
++{
++ init_max_malloc_size();
++ return ip_set_register_set_type(&ip_set_macipmap);
++}
++
++static void __exit fini(void)
++{
++ /* FIXME: possible race with ip_set_create() */
++ ip_set_unregister_set_type(&ip_set_macipmap);
++}
++
++module_init(init);
++module_exit(fini);
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ip_set_nethash.c linux-2.6.19.dev/net/ipv4/netfilter/ip_set_nethash.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ip_set_nethash.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ip_set_nethash.c 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,449 @@
++/* Copyright (C) 2003-2004 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
++ *
++ * 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.
++ */
++
++/* Kernel module implementing a cidr nethash set */
++
++#include <linux/module.h>
++#include <linux/ip.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++#include <linux/netfilter_ipv4/ip_set.h>
++#include <linux/errno.h>
++#include <asm/uaccess.h>
++#include <asm/bitops.h>
++#include <linux/spinlock.h>
++#include <linux/vmalloc.h>
++#include <linux/random.h>
++
++#include <net/ip.h>
++
++#include <linux/netfilter_ipv4/ip_set_malloc.h>
++#include <linux/netfilter_ipv4/ip_set_nethash.h>
++#include <linux/netfilter_ipv4/ip_set_jhash.h>
++#include <linux/netfilter_ipv4/ip_set_prime.h>
++
++static inline __u32
++jhash_ip(const struct ip_set_nethash *map, ip_set_ip_t ip)
++{
++ return jhash_1word(ip, map->initval);
++}
++
++static inline __u32
++randhash_ip(const struct ip_set_nethash *map, ip_set_ip_t ip)
++{
++ return (1 + ip % map->prime);
++}
++
++static inline __u32
++hash_id_cidr(struct ip_set_nethash *map,
++ ip_set_ip_t ip,
++ unsigned char cidr,
++ ip_set_ip_t *hash_ip)
++{
++ __u32 jhash, randhash, id;
++ u_int16_t i;
++
++ *hash_ip = pack(ip, cidr);
++ jhash = jhash_ip(map, *hash_ip);
++ randhash = randhash_ip(map, *hash_ip);
++
++ for (i = 0; i < map->probes; i++) {
++ id = (jhash + i * randhash) % map->hashsize;
++ DP("hash key: %u", id);
++ if (map->members[id] == *hash_ip)
++ return id;
++ }
++ return UINT_MAX;
++}
++
++static inline __u32
++hash_id(struct ip_set *set, ip_set_ip_t ip, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_nethash *map = (struct ip_set_nethash *) set->data;
++ __u32 id = UINT_MAX;
++ int i;
++
++ for (i = 0; i < 30 && map->cidr[i]; i++) {
++ id = hash_id_cidr(map, ip, map->cidr[i], hash_ip);
++ if (id != UINT_MAX)
++ break;
++ }
++ return id;
++}
++
++static inline int
++__testip_cidr(struct ip_set *set, ip_set_ip_t ip, unsigned char cidr,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_nethash *map = (struct ip_set_nethash *) set->data;
++
++ return (hash_id_cidr(map, ip, cidr, hash_ip) != UINT_MAX);
++}
++
++static inline int
++__testip(struct ip_set *set, ip_set_ip_t ip, ip_set_ip_t *hash_ip)
++{
++ return (hash_id(set, ip, hash_ip) != UINT_MAX);
++}
++
++static int
++testip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_req_nethash *req =
++ (struct ip_set_req_nethash *) data;
++
++ if (size != sizeof(struct ip_set_req_nethash)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_nethash),
++ size);
++ return -EINVAL;
++ }
++ return (req->cidr == 32 ? __testip(set, req->ip, hash_ip)
++ : __testip_cidr(set, req->ip, req->cidr, hash_ip));
++}
++
++static int
++testip_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_ip)
++{
++ return __testip(set,
++ ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr),
++ hash_ip);
++}
++
++static inline int
++__addip_base(struct ip_set_nethash *map, ip_set_ip_t ip)
++{
++ __u32 jhash, randhash, probe;
++ u_int16_t i;
++
++ jhash = jhash_ip(map, ip);
++ randhash = randhash_ip(map, ip);
++
++ for (i = 0; i < map->probes; i++) {
++ probe = (jhash + i * randhash) % map->hashsize;
++ if (map->members[probe] == ip)
++ return -EEXIST;
++ if (!map->members[probe]) {
++ map->members[probe] = ip;
++ return 0;
++ }
++ }
++ /* Trigger rehashing */
++ return -EAGAIN;
++}
++
++static inline int
++__addip(struct ip_set_nethash *map, ip_set_ip_t ip, unsigned char cidr,
++ ip_set_ip_t *hash_ip)
++{
++ *hash_ip = pack(ip, cidr);
++ DP("%u.%u.%u.%u/%u, %u.%u.%u.%u", HIPQUAD(ip), cidr, HIPQUAD(*hash_ip));
++
++ return __addip_base(map, *hash_ip);
++}
++
++static void
++update_cidr_sizes(struct ip_set_nethash *map, unsigned char cidr)
++{
++ unsigned char next;
++ int i;
++
++ for (i = 0; i < 30 && map->cidr[i]; i++) {
++ if (map->cidr[i] == cidr) {
++ return;
++ } else if (map->cidr[i] < cidr) {
++ next = map->cidr[i];
++ map->cidr[i] = cidr;
++ cidr = next;
++ }
++ }
++ if (i < 30)
++ map->cidr[i] = cidr;
++}
++
++static int
++addip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_req_nethash *req =
++ (struct ip_set_req_nethash *) data;
++ int ret;
++
++ if (size != sizeof(struct ip_set_req_nethash)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_nethash),
++ size);
++ return -EINVAL;
++ }
++ ret = __addip((struct ip_set_nethash *) set->data,
++ req->ip, req->cidr, hash_ip);
++
++ if (ret == 0)
++ update_cidr_sizes((struct ip_set_nethash *) set->data,
++ req->cidr);
++
++ return ret;
++}
++
++static int
++addip_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_nethash *map = (struct ip_set_nethash *) set->data;
++ int ret = -ERANGE;
++ ip_set_ip_t ip = ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr);
++
++ if (map->cidr[0])
++ ret = __addip(map, ip, map->cidr[0], hash_ip);
++
++ return ret;
++}
++
++static int retry(struct ip_set *set)
++{
++ struct ip_set_nethash *map = (struct ip_set_nethash *) set->data;
++ ip_set_ip_t *members;
++ u_int32_t i, hashsize;
++ unsigned newbytes;
++ int res;
++ struct ip_set_nethash tmp = {
++ .hashsize = map->hashsize,
++ .probes = map->probes,
++ .resize = map->resize
++ };
++
++ if (map->resize == 0)
++ return -ERANGE;
++
++ memcpy(tmp.cidr, map->cidr, 30 * sizeof(unsigned char));
++ again:
++ res = 0;
++
++ /* Calculate new parameters */
++ get_random_bytes(&tmp.initval, 4);
++ hashsize = tmp.hashsize + (tmp.hashsize * map->resize)/100;
++ if (hashsize == tmp.hashsize)
++ hashsize++;
++ tmp.prime = make_prime(hashsize);
++
++ ip_set_printk("rehashing of set %s triggered: "
++ "hashsize grows from %u to %u",
++ set->name, tmp.hashsize, hashsize);
++ tmp.hashsize = hashsize;
++
++ newbytes = hashsize * sizeof(ip_set_ip_t);
++ tmp.members = ip_set_malloc_atomic(newbytes);
++ if (!tmp.members) {
++ DP("out of memory for %d bytes", newbytes);
++ return -ENOMEM;
++ }
++ memset(tmp.members, 0, newbytes);
++
++ write_lock_bh(&set->lock);
++ map = (struct ip_set_nethash *) set->data; /* Play safe */
++ for (i = 0; i < map->hashsize && res == 0; i++) {
++ if (map->members[i])
++ res = __addip_base(&tmp, map->members[i]);
++ }
++ if (res) {
++ /* Failure, try again */
++ write_unlock_bh(&set->lock);
++ ip_set_free(tmp.members, newbytes);
++ goto again;
++ }
++
++ /* Success at resizing! */
++ members = map->members;
++ hashsize = map->hashsize;
++
++ map->initval = tmp.initval;
++ map->prime = tmp.prime;
++ map->hashsize = tmp.hashsize;
++ map->members = tmp.members;
++ write_unlock_bh(&set->lock);
++
++ ip_set_free(members, hashsize * sizeof(ip_set_ip_t));
++
++ return 0;
++}
++
++static inline int
++__delip(struct ip_set_nethash *map, ip_set_ip_t ip, unsigned char cidr,
++ ip_set_ip_t *hash_ip)
++{
++ ip_set_ip_t id = hash_id_cidr(map, ip, cidr, hash_ip);
++
++ if (id == UINT_MAX)
++ return -EEXIST;
++
++ map->members[id] = 0;
++ return 0;
++}
++
++static int
++delip(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_ip)
++{
++ struct ip_set_req_nethash *req =
++ (struct ip_set_req_nethash *) data;
++
++ if (size != sizeof(struct ip_set_req_nethash)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_nethash),
++ size);
++ return -EINVAL;
++ }
++ /* TODO: no garbage collection in map->cidr */
++ return __delip((struct ip_set_nethash *) set->data,
++ req->ip, req->cidr, hash_ip);
++}
++
++static int
++delip_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_ip)
++{
++ struct ip_set_nethash *map = (struct ip_set_nethash *) set->data;
++ int ret = -ERANGE;
++ ip_set_ip_t ip = ntohl(flags & IPSET_SRC ? skb->nh.iph->saddr
++ : skb->nh.iph->daddr);
++
++ if (map->cidr[0])
++ ret = __delip(map, ip, map->cidr[0], hash_ip);
++
++ return ret;
++}
++
++static int create(struct ip_set *set, const void *data, size_t size)
++{
++ unsigned newbytes;
++ struct ip_set_req_nethash_create *req =
++ (struct ip_set_req_nethash_create *) data;
++ struct ip_set_nethash *map;
++
++ if (size != sizeof(struct ip_set_req_nethash_create)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_nethash_create),
++ size);
++ return -EINVAL;
++ }
++
++ if (req->hashsize < 1) {
++ ip_set_printk("hashsize too small");
++ return -ENOEXEC;
++ }
++
++ map = kmalloc(sizeof(struct ip_set_nethash), GFP_KERNEL);
++ if (!map) {
++ DP("out of memory for %d bytes",
++ sizeof(struct ip_set_nethash));
++ return -ENOMEM;
++ }
++ get_random_bytes(&map->initval, 4);
++ map->prime = make_prime(req->hashsize);
++ map->hashsize = req->hashsize;
++ map->probes = req->probes;
++ map->resize = req->resize;
++ memset(map->cidr, 0, 30 * sizeof(unsigned char));
++ newbytes = map->hashsize * sizeof(ip_set_ip_t);
++ map->members = ip_set_malloc(newbytes);
++ if (!map->members) {
++ DP("out of memory for %d bytes", newbytes);
++ kfree(map);
++ return -ENOMEM;
++ }
++ memset(map->members, 0, newbytes);
++
++ set->data = map;
++ return 0;
++}
++
++static void destroy(struct ip_set *set)
++{
++ struct ip_set_nethash *map = (struct ip_set_nethash *) set->data;
++
++ ip_set_free(map->members, map->hashsize * sizeof(ip_set_ip_t));
++ kfree(map);
++
++ set->data = NULL;
++}
++
++static void flush(struct ip_set *set)
++{
++ struct ip_set_nethash *map = (struct ip_set_nethash *) set->data;
++ memset(map->members, 0, map->hashsize * sizeof(ip_set_ip_t));
++ memset(map->cidr, 0, 30 * sizeof(unsigned char));
++}
++
++static void list_header(const struct ip_set *set, void *data)
++{
++ struct ip_set_nethash *map = (struct ip_set_nethash *) set->data;
++ struct ip_set_req_nethash_create *header =
++ (struct ip_set_req_nethash_create *) data;
++
++ header->hashsize = map->hashsize;
++ header->probes = map->probes;
++ header->resize = map->resize;
++}
++
++static int list_members_size(const struct ip_set *set)
++{
++ struct ip_set_nethash *map = (struct ip_set_nethash *) set->data;
++
++ return (map->hashsize * sizeof(ip_set_ip_t));
++}
++
++static void list_members(const struct ip_set *set, void *data)
++{
++ struct ip_set_nethash *map = (struct ip_set_nethash *) set->data;
++ int bytes = map->hashsize * sizeof(ip_set_ip_t);
++
++ memcpy(data, map->members, bytes);
++}
++
++static struct ip_set_type ip_set_nethash = {
++ .typename = SETTYPE_NAME,
++ .typecode = IPSET_TYPE_IP,
++ .protocol_version = IP_SET_PROTOCOL_VERSION,
++ .create = &create,
++ .destroy = &destroy,
++ .flush = &flush,
++ .reqsize = sizeof(struct ip_set_req_nethash),
++ .addip = &addip,
++ .addip_kernel = &addip_kernel,
++ .retry = &retry,
++ .delip = &delip,
++ .delip_kernel = &delip_kernel,
++ .testip = &testip,
++ .testip_kernel = &testip_kernel,
++ .header_size = sizeof(struct ip_set_req_nethash_create),
++ .list_header = &list_header,
++ .list_members_size = &list_members_size,
++ .list_members = &list_members,
++ .me = THIS_MODULE,
++};
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>");
++MODULE_DESCRIPTION("nethash type of IP sets");
++
++static int __init init(void)
++{
++ return ip_set_register_set_type(&ip_set_nethash);
++}
++
++static void __exit fini(void)
++{
++ /* FIXME: possible race with ip_set_create() */
++ ip_set_unregister_set_type(&ip_set_nethash);
++}
++
++module_init(init);
++module_exit(fini);
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ip_set_portmap.c linux-2.6.19.dev/net/ipv4/netfilter/ip_set_portmap.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ip_set_portmap.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ip_set_portmap.c 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,325 @@
++/* Copyright (C) 2003-2004 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
++ *
++ * 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.
++ */
++
++/* Kernel module implementing a port set type as a bitmap */
++
++#include <linux/module.h>
++#include <linux/ip.h>
++#include <linux/tcp.h>
++#include <linux/udp.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++#include <linux/netfilter_ipv4/ip_set.h>
++#include <linux/errno.h>
++#include <asm/uaccess.h>
++#include <asm/bitops.h>
++#include <linux/spinlock.h>
++
++#include <net/ip.h>
++
++#include <linux/netfilter_ipv4/ip_set_portmap.h>
++
++/* We must handle non-linear skbs */
++static inline ip_set_ip_t
++get_port(const struct sk_buff *skb, u_int32_t flags)
++{
++ struct iphdr *iph = skb->nh.iph;
++ u_int16_t offset = ntohs(iph->frag_off) & IP_OFFSET;
++
++ switch (iph->protocol) {
++ case IPPROTO_TCP: {
++ struct tcphdr tcph;
++
++ /* See comments at tcp_match in ip_tables.c */
++ if (offset)
++ return INVALID_PORT;
++
++ if (skb_copy_bits(skb, skb->nh.iph->ihl*4, &tcph, sizeof(tcph)) < 0)
++ /* No choice either */
++ return INVALID_PORT;
++
++ return ntohs(flags & IPSET_SRC ?
++ tcph.source : tcph.dest);
++ }
++ case IPPROTO_UDP: {
++ struct udphdr udph;
++
++ if (offset)
++ return INVALID_PORT;
++
++ if (skb_copy_bits(skb, skb->nh.iph->ihl*4, &udph, sizeof(udph)) < 0)
++ /* No choice either */
++ return INVALID_PORT;
++
++ return ntohs(flags & IPSET_SRC ?
++ udph.source : udph.dest);
++ }
++ default:
++ return INVALID_PORT;
++ }
++}
++
++static inline int
++__testport(struct ip_set *set, ip_set_ip_t port, ip_set_ip_t *hash_port)
++{
++ struct ip_set_portmap *map = (struct ip_set_portmap *) set->data;
++
++ if (port < map->first_port || port > map->last_port)
++ return -ERANGE;
++
++ *hash_port = port;
++ DP("set: %s, port:%u, %u", set->name, port, *hash_port);
++ return !!test_bit(port - map->first_port, map->members);
++}
++
++static int
++testport(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_port)
++{
++ struct ip_set_req_portmap *req =
++ (struct ip_set_req_portmap *) data;
++
++ if (size != sizeof(struct ip_set_req_portmap)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_portmap),
++ size);
++ return -EINVAL;
++ }
++ return __testport(set, req->port, hash_port);
++}
++
++static int
++testport_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_port)
++{
++ int res;
++ ip_set_ip_t port = get_port(skb, flags);
++
++ DP("flag %s port %u", flags & IPSET_SRC ? "SRC" : "DST", port);
++ if (port == INVALID_PORT)
++ return 0;
++
++ res = __testport(set, port, hash_port);
++
++ return (res < 0 ? 0 : res);
++}
++
++static inline int
++__addport(struct ip_set *set, ip_set_ip_t port, ip_set_ip_t *hash_port)
++{
++ struct ip_set_portmap *map = (struct ip_set_portmap *) set->data;
++
++ if (port < map->first_port || port > map->last_port)
++ return -ERANGE;
++ if (test_and_set_bit(port - map->first_port, map->members))
++ return -EEXIST;
++
++ *hash_port = port;
++ DP("port %u", port);
++ return 0;
++}
++
++static int
++addport(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_port)
++{
++ struct ip_set_req_portmap *req =
++ (struct ip_set_req_portmap *) data;
++
++ if (size != sizeof(struct ip_set_req_portmap)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_portmap),
++ size);
++ return -EINVAL;
++ }
++ return __addport(set, req->port, hash_port);
++}
++
++static int
++addport_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_port)
++{
++ ip_set_ip_t port = get_port(skb, flags);
++
++ if (port == INVALID_PORT)
++ return -EINVAL;
++
++ return __addport(set, port, hash_port);
++}
++
++static inline int
++__delport(struct ip_set *set, ip_set_ip_t port, ip_set_ip_t *hash_port)
++{
++ struct ip_set_portmap *map = (struct ip_set_portmap *) set->data;
++
++ if (port < map->first_port || port > map->last_port)
++ return -ERANGE;
++ if (!test_and_clear_bit(port - map->first_port, map->members))
++ return -EEXIST;
++
++ *hash_port = port;
++ DP("port %u", port);
++ return 0;
++}
++
++static int
++delport(struct ip_set *set, const void *data, size_t size,
++ ip_set_ip_t *hash_port)
++{
++ struct ip_set_req_portmap *req =
++ (struct ip_set_req_portmap *) data;
++
++ if (size != sizeof(struct ip_set_req_portmap)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_portmap),
++ size);
++ return -EINVAL;
++ }
++ return __delport(set, req->port, hash_port);
++}
++
++static int
++delport_kernel(struct ip_set *set, const struct sk_buff *skb,
++ u_int32_t flags, ip_set_ip_t *hash_port)
++{
++ ip_set_ip_t port = get_port(skb, flags);
++
++ if (port == INVALID_PORT)
++ return -EINVAL;
++
++ return __delport(set, port, hash_port);
++}
++
++static int create(struct ip_set *set, const void *data, size_t size)
++{
++ int newbytes;
++ struct ip_set_req_portmap_create *req =
++ (struct ip_set_req_portmap_create *) data;
++ struct ip_set_portmap *map;
++
++ if (size != sizeof(struct ip_set_req_portmap_create)) {
++ ip_set_printk("data length wrong (want %zu, have %zu)",
++ sizeof(struct ip_set_req_portmap_create),
++ size);
++ return -EINVAL;
++ }
++
++ DP("from %u to %u", req->from, req->to);
++
++ if (req->from > req->to) {
++ DP("bad port range");
++ return -ENOEXEC;
++ }
++
++ if (req->to - req->from > MAX_RANGE) {
++ ip_set_printk("range too big (max %d ports)",
++ MAX_RANGE);
++ return -ENOEXEC;
++ }
++
++ map = kmalloc(sizeof(struct ip_set_portmap), GFP_KERNEL);
++ if (!map) {
++ DP("out of memory for %d bytes",
++ sizeof(struct ip_set_portmap));
++ return -ENOMEM;
++ }
++ map->first_port = req->from;
++ map->last_port = req->to;
++ newbytes = bitmap_bytes(req->from, req->to);
++ map->members = kmalloc(newbytes, GFP_KERNEL);
++ if (!map->members) {
++ DP("out of memory for %d bytes", newbytes);
++ kfree(map);
++ return -ENOMEM;
++ }
++ memset(map->members, 0, newbytes);
++
++ set->data = map;
++ return 0;
++}
++
++static void destroy(struct ip_set *set)
++{
++ struct ip_set_portmap *map = (struct ip_set_portmap *) set->data;
++
++ kfree(map->members);
++ kfree(map);
++
++ set->data = NULL;
++}
++
++static void flush(struct ip_set *set)
++{
++ struct ip_set_portmap *map = (struct ip_set_portmap *) set->data;
++ memset(map->members, 0, bitmap_bytes(map->first_port, map->last_port));
++}
++
++static void list_header(const struct ip_set *set, void *data)
++{
++ struct ip_set_portmap *map = (struct ip_set_portmap *) set->data;
++ struct ip_set_req_portmap_create *header =
++ (struct ip_set_req_portmap_create *) data;
++
++ DP("list_header %u %u", map->first_port, map->last_port);
++
++ header->from = map->first_port;
++ header->to = map->last_port;
++}
++
++static int list_members_size(const struct ip_set *set)
++{
++ struct ip_set_portmap *map = (struct ip_set_portmap *) set->data;
++
++ return bitmap_bytes(map->first_port, map->last_port);
++}
++
++static void list_members(const struct ip_set *set, void *data)
++{
++ struct ip_set_portmap *map = (struct ip_set_portmap *) set->data;
++ int bytes = bitmap_bytes(map->first_port, map->last_port);
++
++ memcpy(data, map->members, bytes);
++}
++
++static struct ip_set_type ip_set_portmap = {
++ .typename = SETTYPE_NAME,
++ .typecode = IPSET_TYPE_PORT,
++ .protocol_version = IP_SET_PROTOCOL_VERSION,
++ .create = &create,
++ .destroy = &destroy,
++ .flush = &flush,
++ .reqsize = sizeof(struct ip_set_req_portmap),
++ .addip = &addport,
++ .addip_kernel = &addport_kernel,
++ .delip = &delport,
++ .delip_kernel = &delport_kernel,
++ .testip = &testport,
++ .testip_kernel = &testport_kernel,
++ .header_size = sizeof(struct ip_set_req_portmap_create),
++ .list_header = &list_header,
++ .list_members_size = &list_members_size,
++ .list_members = &list_members,
++ .me = THIS_MODULE,
++};
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>");
++MODULE_DESCRIPTION("portmap type of IP sets");
++
++static int __init init(void)
++{
++ return ip_set_register_set_type(&ip_set_portmap);
++}
++
++static void __exit fini(void)
++{
++ /* FIXME: possible race with ip_set_create() */
++ ip_set_unregister_set_type(&ip_set_portmap);
++}
++
++module_init(init);
++module_exit(fini);
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ipt_set.c linux-2.6.19.dev/net/ipv4/netfilter/ipt_set.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ipt_set.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ipt_set.c 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,105 @@
++/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
++ * Patrick Schaaf <bof@bof.de>
++ * Martin Josefsson <gandalf@wlug.westbo.se>
++ * Copyright (C) 2003-2004 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
++ *
++ * 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.
++ */
++
++/* Kernel module to match an IP set. */
++
++#include <linux/module.h>
++#include <linux/ip.h>
++#include <linux/skbuff.h>
++
++#include <linux/netfilter_ipv4/ip_tables.h>
++#include <linux/netfilter_ipv4/ip_set.h>
++#include <linux/netfilter_ipv4/ipt_set.h>
++
++static inline int
++match_set(const struct ipt_set_info *info,
++ const struct sk_buff *skb,
++ int inv)
++{
++ if (ip_set_testip_kernel(info->index, skb, info->flags))
++ inv = !inv;
++ return inv;
++}
++
++static int
++match(const struct sk_buff *skb,
++ const struct net_device *in,
++ const struct net_device *out,
++ const struct xt_match *match,
++ const void *matchinfo,
++ int offset,
++ unsigned int protoff,
++ int *hotdrop)
++{
++ const struct ipt_set_info_match *info = matchinfo;
++
++ return match_set(&info->match_set,
++ skb,
++ info->match_set.flags[0] & IPSET_MATCH_INV);
++}
++
++static int
++checkentry(const char *tablename,
++ const void *ip,
++ const struct xt_match *match,
++ void *matchinfo,
++ unsigned int hook_mask)
++{
++ struct ipt_set_info_match *info =
++ (struct ipt_set_info_match *) matchinfo;
++ ip_set_id_t index;
++
++ index = ip_set_get_byindex(info->match_set.index);
++
++ if (index == IP_SET_INVALID_ID) {
++ ip_set_printk("Cannot find set indentified by id %u to match",
++ info->match_set.index);
++ return 0; /* error */
++ }
++ if (info->match_set.flags[IP_SET_MAX_BINDINGS] != 0) {
++ ip_set_printk("That's nasty!");
++ return 0; /* error */
++ }
++
++ return 1;
++}
++
++static void destroy(const struct xt_match *match, void *matchinfo)
++{
++ struct ipt_set_info_match *info = matchinfo;
++
++ ip_set_put(info->match_set.index);
++}
++
++static struct ipt_match set_match = {
++ .name = "set",
++ .match = &match,
++ .matchsize = sizeof(struct ipt_set_info_match),
++ .checkentry = &checkentry,
++ .destroy = &destroy,
++ .me = THIS_MODULE
++};
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>");
++MODULE_DESCRIPTION("iptables IP set match module");
++
++static int __init init(void)
++{
++ return ipt_register_match(&set_match);
++}
++
++static void __exit fini(void)
++{
++ ipt_unregister_match(&set_match);
++}
++
++module_init(init);
++module_exit(fini);
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ipt_SET.c linux-2.6.19.dev/net/ipv4/netfilter/ipt_SET.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ipt_SET.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ipt_SET.c 2006-12-14 03:13:43.000000000 +0100
+@@ -0,0 +1,120 @@
++/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
++ * Patrick Schaaf <bof@bof.de>
++ * Martin Josefsson <gandalf@wlug.westbo.se>
++ * Copyright (C) 2003-2004 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
++ *
++ * 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.
++ */
++
++/* ipt_SET.c - netfilter target to manipulate IP sets */
++
++#include <linux/types.h>
++#include <linux/ip.h>
++#include <linux/timer.h>
++#include <linux/module.h>
++#include <linux/netfilter.h>
++#include <linux/netdevice.h>
++#include <linux/if.h>
++#include <linux/inetdevice.h>
++#include <net/protocol.h>
++#include <net/checksum.h>
++#include <linux/netfilter_ipv4.h>
++#include <linux/netfilter_ipv4/ip_nat_rule.h>
++#include <linux/netfilter_ipv4/ipt_set.h>
++
++static unsigned int
++target(struct sk_buff **pskb,
++ const struct net_device *in,
++ const struct net_device *out,
++ unsigned int hooknum,
++ const struct xt_target *target,
++ const void *targinfo)
++{
++ const struct ipt_set_info_target *info = targinfo;
++
++ if (info->add_set.index != IP_SET_INVALID_ID)
++ ip_set_addip_kernel(info->add_set.index,
++ *pskb,
++ info->add_set.flags);
++ if (info->del_set.index != IP_SET_INVALID_ID)
++ ip_set_delip_kernel(info->del_set.index,
++ *pskb,
++ info->del_set.flags);
++
++ return IPT_CONTINUE;
++}
++
++static int
++checkentry(const char *tablename,
++ const void *e,
++ const struct xt_target *target,
++ void *targinfo,
++ unsigned int hook_mask)
++{
++ struct ipt_set_info_target *info =
++ (struct ipt_set_info_target *) targinfo;
++ ip_set_id_t index;
++
++ if (info->add_set.index != IP_SET_INVALID_ID) {
++ index = ip_set_get_byindex(info->add_set.index);
++ if (index == IP_SET_INVALID_ID) {
++ ip_set_printk("cannot find add_set index %u as target",
++ info->add_set.index);
++ return 0; /* error */
++ }
++ }
++
++ if (info->del_set.index != IP_SET_INVALID_ID) {
++ index = ip_set_get_byindex(info->del_set.index);
++ if (index == IP_SET_INVALID_ID) {
++ ip_set_printk("cannot find del_set index %u as target",
++ info->del_set.index);
++ return 0; /* error */
++ }
++ }
++ if (info->add_set.flags[IP_SET_MAX_BINDINGS] != 0
++ || info->del_set.flags[IP_SET_MAX_BINDINGS] != 0) {
++ ip_set_printk("That's nasty!");
++ return 0; /* error */
++ }
++
++ return 1;
++}
++
++static void destroy(const struct xt_target *target, void *targetinfo)
++{
++ struct ipt_set_info_target *info = targetinfo;
++
++ if (info->add_set.index != IP_SET_INVALID_ID)
++ ip_set_put(info->add_set.index);
++ if (info->del_set.index != IP_SET_INVALID_ID)
++ ip_set_put(info->del_set.index);
++}
++
++static struct ipt_target SET_target = {
++ .name = "SET",
++ .target = target,
++ .targetsize = sizeof(struct ipt_set_info_target),
++ .checkentry = checkentry,
++ .destroy = destroy,
++ .me = THIS_MODULE
++};
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>");
++MODULE_DESCRIPTION("iptables IP set target module");
++
++static int __init init(void)
++{
++ return ipt_register_target(&SET_target);
++}
++
++static void __exit fini(void)
++{
++ ipt_unregister_target(&SET_target);
++}
++
++module_init(init);
++module_exit(fini);
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/Kconfig linux-2.6.19.dev/net/ipv4/netfilter/Kconfig
+--- linux-2.6.19.old/net/ipv4/netfilter/Kconfig 2006-12-14 03:13:41.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/Kconfig 2006-12-14 03:13:43.000000000 +0100
+@@ -647,5 +647,106 @@
+ Allows altering the ARP packet payload: source and destination
+ hardware and network addresses.
+
++config IP_NF_SET
++ tristate "IP set support"
++ depends on INET && NETFILTER
++ help
++ This option adds IP set support to the kernel.
++ In order to define and use sets, you need the userspace utility
++ ipset(8).
++
++ To compile it as a module, choose M here. If unsure, say N.
++
++config IP_NF_SET_MAX
++ int "Maximum number of IP sets"
++ default 256
++ range 2 65534
++ depends on IP_NF_SET
++ help
++ You can define here default value of the maximum number
++ of IP sets for the kernel.
++
++ The value can be overriden by the 'max_sets' module
++ parameter of the 'ip_set' module.
++
++config IP_NF_SET_HASHSIZE
++ int "Hash size for bindings of IP sets"
++ default 1024
++ depends on IP_NF_SET
++ help
++ You can define here default value of the hash size for
++ bindings of IP sets.
++
++ The value can be overriden by the 'hash_size' module
++ parameter of the 'ip_set' module.
++
++config IP_NF_SET_IPMAP
++ tristate "ipmap set support"
++ depends on IP_NF_SET
++ help
++ This option adds the ipmap set type support.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
++config IP_NF_SET_MACIPMAP
++ tristate "macipmap set support"
++ depends on IP_NF_SET
++ help
++ This option adds the macipmap set type support.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
++config IP_NF_SET_PORTMAP
++ tristate "portmap set support"
++ depends on IP_NF_SET
++ help
++ This option adds the portmap set type support.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
++config IP_NF_SET_IPHASH
++ tristate "iphash set support"
++ depends on IP_NF_SET
++ help
++ This option adds the iphash set type support.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
++config IP_NF_SET_NETHASH
++ tristate "nethash set support"
++ depends on IP_NF_SET
++ help
++ This option adds the nethash set type support.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
++config IP_NF_SET_IPTREE
++ tristate "iptree set support"
++ depends on IP_NF_SET
++ help
++ This option adds the iptree set type support.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
++config IP_NF_MATCH_SET
++ tristate "set match support"
++ depends on IP_NF_SET
++ help
++ Set matching matches against given IP sets.
++ You need the ipset utility to create and set up the sets.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
++config IP_NF_TARGET_SET
++ tristate "SET target support"
++ depends on IP_NF_SET
++ help
++ The SET target makes possible to add/delete entries
++ in IP sets.
++ You need the ipset utility to create and set up the sets.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
++
+ endmenu
+
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/Makefile linux-2.6.19.dev/net/ipv4/netfilter/Makefile
+--- linux-2.6.19.old/net/ipv4/netfilter/Makefile 2006-12-14 03:13:41.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/Makefile 2006-12-14 03:13:43.000000000 +0100
+@@ -54,6 +54,7 @@
+
+ # matches
+ obj-$(CONFIG_IP_NF_MATCH_HASHLIMIT) += ipt_hashlimit.o
++obj-$(CONFIG_IP_NF_MATCH_SET) += ipt_set.o
+ obj-$(CONFIG_IP_NF_MATCH_IPRANGE) += ipt_iprange.o
+ obj-$(CONFIG_IP_NF_MATCH_OWNER) += ipt_owner.o
+ obj-$(CONFIG_IP_NF_MATCH_TOS) += ipt_tos.o
+@@ -77,6 +78,17 @@
+ obj-$(CONFIG_IP_NF_TARGET_LOG) += ipt_LOG.o
+ obj-$(CONFIG_IP_NF_TARGET_ULOG) += ipt_ULOG.o
+ obj-$(CONFIG_IP_NF_TARGET_TCPMSS) += ipt_TCPMSS.o
++obj-$(CONFIG_IP_NF_TARGET_SET) += ipt_SET.o
++
++# sets
++obj-$(CONFIG_IP_NF_SET) += ip_set.o
++obj-$(CONFIG_IP_NF_SET_IPMAP) += ip_set_ipmap.o
++obj-$(CONFIG_IP_NF_SET_PORTMAP) += ip_set_portmap.o
++obj-$(CONFIG_IP_NF_SET_MACIPMAP) += ip_set_macipmap.o
++obj-$(CONFIG_IP_NF_SET_IPHASH) += ip_set_iphash.o
++obj-$(CONFIG_IP_NF_SET_NETHASH) += ip_set_nethash.o
++obj-$(CONFIG_IP_NF_SET_IPTREE) += ip_set_iptree.o
++
+ obj-$(CONFIG_IP_NF_TARGET_CLUSTERIP) += ipt_CLUSTERIP.o
+ obj-$(CONFIG_IP_NF_TARGET_TTL) += ipt_TTL.o
+
diff --git a/packages/linux/linux-magicbox-2.6.19.2/140-netfilter_time.patch b/packages/linux/linux-magicbox-2.6.19.2/140-netfilter_time.patch
new file mode 100644
index 0000000000..d217157d78
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/140-netfilter_time.patch
@@ -0,0 +1,241 @@
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ipt_time.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ipt_time.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ipt_time.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ipt_time.h 2006-12-14 03:13:45.000000000 +0100
+@@ -0,0 +1,18 @@
++#ifndef __ipt_time_h_included__
++#define __ipt_time_h_included__
++
++
++struct ipt_time_info {
++ u_int8_t days_match; /* 1 bit per day. -SMTWTFS */
++ u_int16_t time_start; /* 0 < time_start < 23*60+59 = 1439 */
++ u_int16_t time_stop; /* 0:0 < time_stat < 23:59 */
++
++ /* FIXME: Keep this one for userspace iptables binary compability: */
++ u_int8_t kerneltime; /* ignore skb time (and use kerneltime) or not. */
++
++ time_t date_start;
++ time_t date_stop;
++};
++
++
++#endif /* __ipt_time_h_included__ */
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ipt_time.c linux-2.6.19.dev/net/ipv4/netfilter/ipt_time.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ipt_time.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ipt_time.c 2006-12-14 03:13:45.000000000 +0100
+@@ -0,0 +1,178 @@
++/*
++ This is a module which is used for time matching
++ It is using some modified code from dietlibc (localtime() function)
++ that you can find at http://www.fefe.de/dietlibc/
++ This file is distributed under the terms of the GNU General Public
++ License (GPL). Copies of the GPL can be obtained from: ftp://prep.ai.mit.edu/pub/gnu/GPL
++ 2001-05-04 Fabrice MARIE <fabrice@netfilter.org> : initial development.
++ 2001-21-05 Fabrice MARIE <fabrice@netfilter.org> : bug fix in the match code,
++ thanks to "Zeng Yu" <zengy@capitel.com.cn> for bug report.
++ 2001-26-09 Fabrice MARIE <fabrice@netfilter.org> : force the match to be in LOCAL_IN or PRE_ROUTING only.
++ 2001-30-11 Fabrice : added the possibility to use the match in FORWARD/OUTPUT with a little hack,
++ added Nguyen Dang Phuoc Dong <dongnd@tlnet.com.vn> patch to support timezones.
++ 2004-05-02 Fabrice : added support for date matching, from an idea of Fabien COELHO.
++*/
++
++#include <linux/module.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++#include <linux/netfilter_ipv4/ipt_time.h>
++#include <linux/time.h>
++
++MODULE_AUTHOR("Fabrice MARIE <fabrice@netfilter.org>");
++MODULE_DESCRIPTION("Match arrival timestamp/date");
++MODULE_LICENSE("GPL");
++
++struct tm
++{
++ int tm_sec; /* Seconds. [0-60] (1 leap second) */
++ int tm_min; /* Minutes. [0-59] */
++ int tm_hour; /* Hours. [0-23] */
++ int tm_mday; /* Day. [1-31] */
++ int tm_mon; /* Month. [0-11] */
++ int tm_year; /* Year - 1900. */
++ int tm_wday; /* Day of week. [0-6] */
++ int tm_yday; /* Days in year.[0-365] */
++ int tm_isdst; /* DST. [-1/0/1]*/
++
++ long int tm_gmtoff; /* we don't care, we count from GMT */
++ const char *tm_zone; /* we don't care, we count from GMT */
++};
++
++void
++localtime(const u32 time, struct tm *r);
++
++static int
++match(const struct sk_buff *skb,
++ const struct net_device *in,
++ const struct net_device *out,
++ const struct xt_match *match,
++ const void *matchinfo,
++ int offset,
++ unsigned int protoff,
++ int *hotdrop)
++{
++ const struct ipt_time_info *info = matchinfo; /* match info for rule */
++ struct tm currenttime; /* time human readable */
++ u_int8_t days_of_week[7] = {64, 32, 16, 8, 4, 2, 1};
++ u_int16_t packet_time;
++
++ /* We might not have a timestamp, get one */
++ if (skb->tstamp.off_sec == 0)
++ __net_timestamp((struct sk_buff *)skb);
++
++ /* First we make sure we are in the date start-stop boundaries */
++ if ((skb->tstamp.off_sec < info->date_start) || (skb->tstamp.off_sec > info->date_stop))
++ return 0; /* We are outside the date boundaries */
++
++ /* Transform the timestamp of the packet, in a human readable form */
++ localtime(skb->tstamp.off_sec, &currenttime);
++
++ /* check if we match this timestamp, we start by the days... */
++ if ((days_of_week[currenttime.tm_wday] & info->days_match) != days_of_week[currenttime.tm_wday])
++ return 0; /* the day doesn't match */
++
++ /* ... check the time now */
++ packet_time = (currenttime.tm_hour * 60) + currenttime.tm_min;
++ if ((packet_time < info->time_start) || (packet_time > info->time_stop))
++ return 0;
++
++ /* here we match ! */
++ return 1;
++}
++
++static int
++checkentry(const char *tablename,
++ const void *ip,
++ const struct xt_match *match,
++ void *matchinfo,
++ unsigned int hook_mask)
++{
++ struct ipt_time_info *info = matchinfo; /* match info for rule */
++
++ /* First, check that we are in the correct hooks */
++ if (hook_mask
++ & ~((1 << NF_IP_PRE_ROUTING) | (1 << NF_IP_LOCAL_IN) | (1 << NF_IP_FORWARD) | (1 << NF_IP_LOCAL_OUT)))
++ {
++ printk("ipt_time: error, only valid for PRE_ROUTING, LOCAL_IN, FORWARD and OUTPUT)\n");
++ return 0;
++ }
++
++ /* Now check the coherence of the data ... */
++ if ((info->time_start > 1439) || /* 23*60+59 = 1439*/
++ (info->time_stop > 1439))
++ {
++ printk(KERN_WARNING "ipt_time: invalid argument\n");
++ return 0;
++ }
++
++ return 1;
++}
++
++static struct ipt_match time_match = {
++ .name = "time",
++ .match = &match,
++ .matchsize = sizeof(struct ipt_time_info),
++ .checkentry = &checkentry,
++ .me = THIS_MODULE
++};
++
++static int __init init(void)
++{
++ printk("ipt_time loading\n");
++ return ipt_register_match(&time_match);
++}
++
++static void __exit fini(void)
++{
++ ipt_unregister_match(&time_match);
++ printk("ipt_time unloaded\n");
++}
++
++module_init(init);
++module_exit(fini);
++
++
++/* The part below is borowed and modified from dietlibc */
++
++/* seconds per day */
++#define SPD 24*60*60
++
++void
++localtime(const u32 time, struct tm *r) {
++ u32 i, timep;
++ extern struct timezone sys_tz;
++ const unsigned int __spm[12] =
++ { 0,
++ (31),
++ (31+28),
++ (31+28+31),
++ (31+28+31+30),
++ (31+28+31+30+31),
++ (31+28+31+30+31+30),
++ (31+28+31+30+31+30+31),
++ (31+28+31+30+31+30+31+31),
++ (31+28+31+30+31+30+31+31+30),
++ (31+28+31+30+31+30+31+31+30+31),
++ (31+28+31+30+31+30+31+31+30+31+30),
++ };
++ register u32 work;
++
++ timep = time - (sys_tz.tz_minuteswest * 60);
++ work=timep%(SPD);
++ r->tm_sec=work%60; work/=60;
++ r->tm_min=work%60; r->tm_hour=work/60;
++ work=timep/(SPD);
++ r->tm_wday=(4+work)%7;
++ for (i=1970; ; ++i) {
++ register time_t k= (!(i%4) && ((i%100) || !(i%400)))?366:365;
++ if (work>k)
++ work-=k;
++ else
++ break;
++ }
++ r->tm_year=i-1900;
++ for (i=11; i && __spm[i]>work; --i) ;
++ r->tm_mon=i;
++ r->tm_mday=work-__spm[i]+1;
++}
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/Kconfig linux-2.6.19.dev/net/ipv4/netfilter/Kconfig
+--- linux-2.6.19.old/net/ipv4/netfilter/Kconfig 2006-12-14 03:13:45.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/Kconfig 2006-12-14 03:13:45.000000000 +0100
+@@ -263,6 +263,22 @@
+
+ To compile it as a module, choose M here. If unsure, say N.
+
++
++config IP_NF_MATCH_TIME
++ tristate 'TIME match support'
++ depends on IP_NF_IPTABLES
++ help
++ This option adds a `time' match, which allows you
++ to match based on the packet arrival time/date
++ (arrival time/date at the machine which netfilter is running on) or
++ departure time/date (for locally generated packets).
++
++ If you say Y here, try iptables -m time --help for more information.
++ If you want to compile it as a module, say M here and read
++
++ Documentation/modules.txt. If unsure, say `N'.
++
++
+ config IP_NF_MATCH_RECENT
+ tristate "recent match support"
+ depends on IP_NF_IPTABLES
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/Makefile linux-2.6.19.dev/net/ipv4/netfilter/Makefile
+--- linux-2.6.19.old/net/ipv4/netfilter/Makefile 2006-12-14 03:13:45.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/Makefile 2006-12-14 03:13:45.000000000 +0100
+@@ -58,6 +58,7 @@
+ obj-$(CONFIG_IP_NF_MATCH_IPRANGE) += ipt_iprange.o
+ obj-$(CONFIG_IP_NF_MATCH_OWNER) += ipt_owner.o
+ obj-$(CONFIG_IP_NF_MATCH_TOS) += ipt_tos.o
++obj-$(CONFIG_IP_NF_MATCH_TIME) += ipt_time.o
+ obj-$(CONFIG_IP_NF_MATCH_RECENT) += ipt_recent.o
+ obj-$(CONFIG_IP_NF_MATCH_ECN) += ipt_ecn.o
+ obj-$(CONFIG_IP_NF_MATCH_AH) += ipt_ah.o
diff --git a/packages/linux/linux-magicbox-2.6.19.2/150-netfilter_imq.patch b/packages/linux/linux-magicbox-2.6.19.2/150-netfilter_imq.patch
new file mode 100644
index 0000000000..54324022a9
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/150-netfilter_imq.patch
@@ -0,0 +1,892 @@
+diff -urN linux-2.6.19/drivers/net/imq.c linux-2.6.19+imq/drivers/net/imq.c
+--- linux-2.6.19/drivers/net/imq.c 1970-01-01 09:30:00.000000000 +0930
++++ linux-2.6.19+imq/drivers/net/imq.c 2006-12-05 23:01:02.000000000 +1030
+@@ -0,0 +1,402 @@
++/*
++ * Pseudo-driver for the intermediate queue device.
++ *
++ * 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.
++ *
++ * Authors: Patrick McHardy, <kaber@trash.net>
++ *
++ * The first version was written by Martin Devera, <devik@cdi.cz>
++ *
++ * Credits: Jan Rafaj <imq2t@cedric.vabo.cz>
++ * - Update patch to 2.4.21
++ * Sebastian Strollo <sstrollo@nortelnetworks.com>
++ * - Fix "Dead-loop on netdevice imq"-issue
++ * Marcel Sebek <sebek64@post.cz>
++ * - Update to 2.6.2-rc1
++ *
++ * After some time of inactivity there is a group taking care
++ * of IMQ again: http://www.linuximq.net
++ *
++ *
++ * 2004/06/30 - New version of IMQ patch to kernels <=2.6.7 including
++ * the following changes:
++ *
++ * - Correction of ipv6 support "+"s issue (Hasso Tepper)
++ * - Correction of imq_init_devs() issue that resulted in
++ * kernel OOPS unloading IMQ as module (Norbert Buchmuller)
++ * - Addition of functionality to choose number of IMQ devices
++ * during kernel config (Andre Correa)
++ * - Addition of functionality to choose how IMQ hooks on
++ * PRE and POSTROUTING (after or before NAT) (Andre Correa)
++ * - Cosmetic corrections (Norbert Buchmuller) (Andre Correa)
++ *
++ *
++ * 2005/12/16 - IMQ versions between 2.6.7 and 2.6.13 were
++ * released with almost no problems. 2.6.14-x was released
++ * with some important changes: nfcache was removed; After
++ * some weeks of trouble we figured out that some IMQ fields
++ * in skb were missing in skbuff.c - skb_clone and copy_skb_header.
++ * These functions are correctly patched by this new patch version.
++ *
++ * Thanks for all who helped to figure out all the problems with
++ * 2.6.14.x: Patrick McHardy, Rune Kock, VeNoMouS, Max CtRiX,
++ * Kevin Shanahan, Richard Lucassen, Valery Dachev (hopefully
++ * I didn't forget anybody). I apologize again for my lack of time.
++ *
++ * More info at: http://www.linuximq.net/ (Andre Correa)
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/moduleparam.h>
++#include <linux/skbuff.h>
++#include <linux/netdevice.h>
++#include <linux/rtnetlink.h>
++#include <linux/if_arp.h>
++#include <linux/netfilter.h>
++#include <linux/netfilter_ipv4.h>
++#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
++ #include <linux/netfilter_ipv6.h>
++#endif
++#include <linux/imq.h>
++#include <net/pkt_sched.h>
++
++extern int qdisc_restart1(struct net_device *dev);
++
++static nf_hookfn imq_nf_hook;
++
++static struct nf_hook_ops imq_ingress_ipv4 = {
++ .hook = imq_nf_hook,
++ .owner = THIS_MODULE,
++ .pf = PF_INET,
++ .hooknum = NF_IP_PRE_ROUTING,
++#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++ .priority = NF_IP_PRI_MANGLE + 1
++#else
++ .priority = NF_IP_PRI_NAT_DST + 1
++#endif
++};
++
++static struct nf_hook_ops imq_egress_ipv4 = {
++ .hook = imq_nf_hook,
++ .owner = THIS_MODULE,
++ .pf = PF_INET,
++ .hooknum = NF_IP_POST_ROUTING,
++#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA)
++ .priority = NF_IP_PRI_LAST
++#else
++ .priority = NF_IP_PRI_NAT_SRC - 1
++#endif
++};
++
++#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
++static struct nf_hook_ops imq_ingress_ipv6 = {
++ .hook = imq_nf_hook,
++ .owner = THIS_MODULE,
++ .pf = PF_INET6,
++ .hooknum = NF_IP6_PRE_ROUTING,
++#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++ .priority = NF_IP6_PRI_MANGLE + 1
++#else
++ .priority = NF_IP6_PRI_NAT_DST + 1
++#endif
++};
++
++static struct nf_hook_ops imq_egress_ipv6 = {
++ .hook = imq_nf_hook,
++ .owner = THIS_MODULE,
++ .pf = PF_INET6,
++ .hooknum = NF_IP6_POST_ROUTING,
++#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA)
++ .priority = NF_IP6_PRI_LAST
++#else
++ .priority = NF_IP6_PRI_NAT_SRC - 1
++#endif
++};
++#endif
++
++#if defined(CONFIG_IMQ_NUM_DEVS)
++static unsigned int numdevs = CONFIG_IMQ_NUM_DEVS;
++#else
++static unsigned int numdevs = 2;
++#endif
++
++static struct net_device *imq_devs;
++
++static struct net_device_stats *imq_get_stats(struct net_device *dev)
++{
++ return (struct net_device_stats *)dev->priv;
++}
++
++/* called for packets kfree'd in qdiscs at places other than enqueue */
++static void imq_skb_destructor(struct sk_buff *skb)
++{
++ struct nf_info *info = skb->nf_info;
++
++ if (info) {
++ if (info->indev)
++ dev_put(info->indev);
++ if (info->outdev)
++ dev_put(info->outdev);
++ kfree(info);
++ }
++}
++
++static int imq_dev_xmit(struct sk_buff *skb, struct net_device *dev)
++{
++ struct net_device_stats *stats = (struct net_device_stats*) dev->priv;
++
++ stats->tx_bytes += skb->len;
++ stats->tx_packets++;
++
++ skb->imq_flags = 0;
++ skb->destructor = NULL;
++
++ dev->trans_start = jiffies;
++ nf_reinject(skb, skb->nf_info, NF_ACCEPT);
++ return 0;
++}
++
++static int imq_nf_queue(struct sk_buff *skb, struct nf_info *info, unsigned queue_num, void *data)
++{
++ struct net_device *dev;
++ struct net_device_stats *stats;
++ struct sk_buff *skb2 = NULL;
++ struct Qdisc *q;
++ unsigned int index = skb->imq_flags&IMQ_F_IFMASK;
++ int ret = -1;
++
++ if (index > numdevs)
++ return -1;
++
++ dev = imq_devs + index;
++ if (!(dev->flags & IFF_UP)) {
++ skb->imq_flags = 0;
++ nf_reinject(skb, info, NF_ACCEPT);
++ return 0;
++ }
++ dev->last_rx = jiffies;
++
++ if (skb->destructor) {
++ skb2 = skb;
++ skb = skb_clone(skb, GFP_ATOMIC);
++ if (!skb)
++ return -1;
++ }
++ skb->nf_info = info;
++
++ stats = (struct net_device_stats *)dev->priv;
++ stats->rx_bytes+= skb->len;
++ stats->rx_packets++;
++
++ spin_lock_bh(&dev->queue_lock);
++ q = dev->qdisc;
++ if (q->enqueue) {
++ q->enqueue(skb_get(skb), q);
++ if (skb_shared(skb)) {
++ skb->destructor = imq_skb_destructor;
++ kfree_skb(skb);
++ ret = 0;
++ }
++ }
++ if (spin_is_locked(&dev->_xmit_lock))
++ netif_schedule(dev);
++ else
++ while (!netif_queue_stopped(dev) && qdisc_restart1(dev) < 0)
++ /* NOTHING */;
++
++ spin_unlock_bh(&dev->queue_lock);
++
++ if (skb2)
++ kfree_skb(ret ? skb : skb2);
++
++ return ret;
++}
++
++static struct nf_queue_handler nfqh = {
++ .name = "imq",
++ .outfn = imq_nf_queue,
++};
++
++static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff **pskb,
++ const struct net_device *indev,
++ const struct net_device *outdev,
++ int (*okfn)(struct sk_buff *))
++{
++ if ((*pskb)->imq_flags & IMQ_F_ENQUEUE)
++ return NF_QUEUE;
++
++ return NF_ACCEPT;
++}
++
++
++static int __init imq_init_hooks(void)
++{
++ int err;
++
++ err = nf_register_queue_handler(PF_INET, &nfqh);
++ if (err > 0)
++ goto err1;
++ if ((err = nf_register_hook(&imq_ingress_ipv4)))
++ goto err2;
++ if ((err = nf_register_hook(&imq_egress_ipv4)))
++ goto err3;
++#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
++ if ((err = nf_register_queue_handler(PF_INET6, &nfqh)))
++ goto err4;
++ if ((err = nf_register_hook(&imq_ingress_ipv6)))
++ goto err5;
++ if ((err = nf_register_hook(&imq_egress_ipv6)))
++ goto err6;
++#endif
++
++ return 0;
++
++#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
++err6:
++ nf_unregister_hook(&imq_ingress_ipv6);
++err5:
++ nf_unregister_queue_handler(PF_INET6);
++err4:
++ nf_unregister_hook(&imq_egress_ipv6);
++#endif
++err3:
++ nf_unregister_hook(&imq_ingress_ipv4);
++err2:
++ nf_unregister_queue_handler(PF_INET);
++err1:
++ return err;
++}
++
++static void __exit imq_unhook(void)
++{
++ nf_unregister_hook(&imq_ingress_ipv4);
++ nf_unregister_hook(&imq_egress_ipv4);
++ nf_unregister_queue_handler(PF_INET);
++#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
++ nf_unregister_hook(&imq_ingress_ipv6);
++ nf_unregister_hook(&imq_egress_ipv6);
++ nf_unregister_queue_handler(PF_INET6);
++#endif
++}
++
++static int __init imq_dev_init(struct net_device *dev)
++{
++ dev->hard_start_xmit = imq_dev_xmit;
++ dev->type = ARPHRD_VOID;
++ dev->mtu = 1500;
++ dev->tx_queue_len = 30;
++ dev->flags = IFF_NOARP;
++ dev->priv = kmalloc(sizeof(struct net_device_stats), GFP_KERNEL);
++ if (dev->priv == NULL)
++ return -ENOMEM;
++ memset(dev->priv, 0, sizeof(struct net_device_stats));
++ dev->get_stats = imq_get_stats;
++
++ return 0;
++}
++
++static void imq_dev_uninit(struct net_device *dev)
++{
++ kfree(dev->priv);
++}
++
++static int __init imq_init_devs(void)
++{
++ struct net_device *dev;
++ int i,j;
++ j = numdevs;
++
++ if (!numdevs || numdevs > IMQ_MAX_DEVS) {
++ printk(KERN_ERR "IMQ: numdevs has to be betweed 1 and %u\n",
++ IMQ_MAX_DEVS);
++ return -EINVAL;
++ }
++
++ imq_devs = kmalloc(sizeof(struct net_device) * numdevs, GFP_KERNEL);
++ if (!imq_devs)
++ return -ENOMEM;
++ memset(imq_devs, 0, sizeof(struct net_device) * numdevs);
++
++ /* we start counting at zero */
++ numdevs--;
++
++ for (i = 0, dev = imq_devs; i <= numdevs; i++, dev++) {
++ SET_MODULE_OWNER(dev);
++ strcpy(dev->name, "imq%d");
++ dev->init = imq_dev_init;
++ dev->uninit = imq_dev_uninit;
++
++ if (register_netdev(dev) < 0)
++ goto err_register;
++ }
++ printk(KERN_INFO "IMQ starting with %u devices...\n", j);
++ return 0;
++
++err_register:
++ for (; i; i--)
++ unregister_netdev(--dev);
++ kfree(imq_devs);
++ return -EIO;
++}
++
++static void imq_cleanup_devs(void)
++{
++ int i;
++ struct net_device *dev = imq_devs;
++
++ for (i = 0; i <= numdevs; i++)
++ unregister_netdev(dev++);
++
++ kfree(imq_devs);
++}
++
++static int __init imq_init_module(void)
++{
++ int err;
++
++ if ((err = imq_init_devs())) {
++ printk(KERN_ERR "IMQ: Error trying imq_init_devs()\n");
++ return err;
++ }
++ if ((err = imq_init_hooks())) {
++ printk(KERN_ERR "IMQ: Error trying imq_init_hooks()\n");
++ imq_cleanup_devs();
++ return err;
++ }
++
++ printk(KERN_INFO "IMQ driver loaded successfully.\n");
++
++#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++ printk(KERN_INFO "\tHooking IMQ before NAT on PREROUTING.\n");
++#else
++ printk(KERN_INFO "\tHooking IMQ after NAT on PREROUTING.\n");
++#endif
++#if defined(CONFIG_IMQ_BEHAVIOR_AB) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++ printk(KERN_INFO "\tHooking IMQ before NAT on POSTROUTING.\n");
++#else
++ printk(KERN_INFO "\tHooking IMQ after NAT on POSTROUTING.\n");
++#endif
++
++ return 0;
++}
++
++static void __exit imq_cleanup_module(void)
++{
++ imq_unhook();
++ imq_cleanup_devs();
++ printk(KERN_INFO "IMQ driver unloaded successfully.\n");
++}
++
++
++module_init(imq_init_module);
++module_exit(imq_cleanup_module);
++
++module_param(numdevs, int, 0);
++MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will be created)");
++MODULE_AUTHOR("http://www.linuximq.net");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
++MODULE_LICENSE("GPL");
+diff -urN linux-2.6.19/drivers/net/Kconfig linux-2.6.19+imq/drivers/net/Kconfig
+--- linux-2.6.19/drivers/net/Kconfig 2006-12-01 14:05:30.000000000 +1030
++++ linux-2.6.19+imq/drivers/net/Kconfig 2006-12-05 23:03:52.000000000 +1030
+@@ -96,6 +96,129 @@
+ To compile this driver as a module, choose M here: the module
+ will be called eql. If unsure, say N.
+
++config IMQ
++ tristate "IMQ (intermediate queueing device) support"
++ depends on NETDEVICES && NETFILTER
++ ---help---
++ The IMQ device(s) is used as placeholder for QoS queueing
++ disciplines. Every packet entering/leaving the IP stack can be
++ directed through the IMQ device where it's enqueued/dequeued to the
++ attached qdisc. This allows you to treat network devices as classes
++ and distribute bandwidth among them. Iptables is used to specify
++ through which IMQ device, if any, packets travel.
++
++ More information at: http://www.linuximq.net/
++
++ To compile this driver as a module, choose M here: the module
++ will be called imq. If unsure, say N.
++
++choice
++ prompt "IMQ behavior (PRE/POSTROUTING)"
++ depends on IMQ
++ default IMQ_BEHAVIOR_BA
++ help
++
++ This settings defines how IMQ behaves in respect to its
++ hooking in PREROUTING and POSTROUTING.
++
++ IMQ can work in any of the following ways:
++
++ PREROUTING | POSTROUTING
++ -----------------|-------------------
++ #1 After NAT | After NAT
++ #2 After NAT | Before NAT
++ #3 Before NAT | After NAT
++ #4 Before NAT | Before NAT
++
++ The default behavior is to hook before NAT on PREROUTING
++ and after NAT on POSTROUTING (#3).
++
++ This settings are specially usefull when trying to use IMQ
++ to shape NATed clients.
++
++ More information can be found at: www.linuximq.net
++
++ If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_AA
++ bool "IMQ AA"
++ help
++ This settings defines how IMQ behaves in respect to its
++ hooking in PREROUTING and POSTROUTING.
++
++ Choosing this option will make IMQ hook like this:
++
++ PREROUTING: After NAT
++ POSTROUTING: After NAT
++
++ More information can be found at: www.linuximq.net
++
++ If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_AB
++ bool "IMQ AB"
++ help
++ This settings defines how IMQ behaves in respect to its
++ hooking in PREROUTING and POSTROUTING.
++
++ Choosing this option will make IMQ hook like this:
++
++ PREROUTING: After NAT
++ POSTROUTING: Before NAT
++
++ More information can be found at: www.linuximq.net
++
++ If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_BA
++ bool "IMQ BA"
++ help
++ This settings defines how IMQ behaves in respect to its
++ hooking in PREROUTING and POSTROUTING.
++
++ Choosing this option will make IMQ hook like this:
++
++ PREROUTING: Before NAT
++ POSTROUTING: After NAT
++
++ More information can be found at: www.linuximq.net
++
++ If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_BB
++ bool "IMQ BB"
++ help
++ This settings defines how IMQ behaves in respect to its
++ hooking in PREROUTING and POSTROUTING.
++
++ Choosing this option will make IMQ hook like this:
++
++ PREROUTING: Before NAT
++ POSTROUTING: Before NAT
++
++ More information can be found at: www.linuximq.net
++
++ If not sure leave the default settings alone.
++
++endchoice
++
++config IMQ_NUM_DEVS
++
++ int "Number of IMQ devices"
++ range 2 8
++ depends on IMQ
++ default "2"
++ help
++
++ This settings defines how many IMQ devices will be
++ created.
++
++ The default value is 2.
++
++ More information can be found at: www.linuximq.net
++
++ If not sure leave the default settings alone.
++
+ config TUN
+ tristate "Universal TUN/TAP device driver support"
+ select CRC32
+diff -urN linux-2.6.19/drivers/net/Makefile linux-2.6.19+imq/drivers/net/Makefile
+--- linux-2.6.19/drivers/net/Makefile 2006-12-01 14:05:30.000000000 +1030
++++ linux-2.6.19+imq/drivers/net/Makefile 2006-12-04 12:41:01.000000000 +1030
+@@ -124,6 +124,7 @@
+ obj-$(CONFIG_SLHC) += slhc.o
+
+ obj-$(CONFIG_DUMMY) += dummy.o
++obj-$(CONFIG_IMQ) += imq.o
+ obj-$(CONFIG_IFB) += ifb.o
+ obj-$(CONFIG_DE600) += de600.o
+ obj-$(CONFIG_DE620) += de620.o
+diff -urN linux-2.6.19/include/linux/imq.h linux-2.6.19+imq/include/linux/imq.h
+--- linux-2.6.19/include/linux/imq.h 1970-01-01 09:30:00.000000000 +0930
++++ linux-2.6.19+imq/include/linux/imq.h 2006-12-04 12:41:01.000000000 +1030
+@@ -0,0 +1,9 @@
++#ifndef _IMQ_H
++#define _IMQ_H
++
++#define IMQ_MAX_DEVS 16
++
++#define IMQ_F_IFMASK 0x7f
++#define IMQ_F_ENQUEUE 0x80
++
++#endif /* _IMQ_H */
+diff -urN linux-2.6.19/include/linux/netfilter_ipv4/ipt_IMQ.h linux-2.6.19+imq/include/linux/netfilter_ipv4/ipt_IMQ.h
+--- linux-2.6.19/include/linux/netfilter_ipv4/ipt_IMQ.h 1970-01-01 09:30:00.000000000 +0930
++++ linux-2.6.19+imq/include/linux/netfilter_ipv4/ipt_IMQ.h 2006-12-05 23:04:22.000000000 +1030
+@@ -0,0 +1,8 @@
++#ifndef _IPT_IMQ_H
++#define _IPT_IMQ_H
++
++struct ipt_imq_info {
++ unsigned int todev; /* target imq device */
++};
++
++#endif /* _IPT_IMQ_H */
+diff -urN linux-2.6.19/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-2.6.19+imq/include/linux/netfilter_ipv6/ip6t_IMQ.h
+--- linux-2.6.19/include/linux/netfilter_ipv6/ip6t_IMQ.h 1970-01-01 09:30:00.000000000 +0930
++++ linux-2.6.19+imq/include/linux/netfilter_ipv6/ip6t_IMQ.h 2006-12-05 23:04:32.000000000 +1030
+@@ -0,0 +1,8 @@
++#ifndef _IP6T_IMQ_H
++#define _IP6T_IMQ_H
++
++struct ip6t_imq_info {
++ unsigned int todev; /* target imq device */
++};
++
++#endif /* _IP6T_IMQ_H */
+diff -urN linux-2.6.19/include/linux/skbuff.h linux-2.6.19+imq/include/linux/skbuff.h
+--- linux-2.6.19/include/linux/skbuff.h 2006-12-01 14:05:44.000000000 +1030
++++ linux-2.6.19+imq/include/linux/skbuff.h 2006-12-05 23:05:06.000000000 +1030
+@@ -292,6 +292,10 @@
+ #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
+ struct sk_buff *nfct_reasm;
+ #endif
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++ unsigned char imq_flags;
++ struct nf_info *nf_info;
++#endif
+ #ifdef CONFIG_BRIDGE_NETFILTER
+ struct nf_bridge_info *nf_bridge;
+ #endif
+diff -urN linux-2.6.19/net/core/dev.c linux-2.6.19+imq/net/core/dev.c
+--- linux-2.6.19/net/core/dev.c 2006-12-01 14:05:45.000000000 +1030
++++ linux-2.6.19+imq/net/core/dev.c 2006-12-05 23:05:40.000000000 +1030
+@@ -94,6 +94,9 @@
+ #include <linux/skbuff.h>
+ #include <net/sock.h>
+ #include <linux/rtnetlink.h>
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++#include <linux/imq.h>
++#endif
+ #include <linux/proc_fs.h>
+ #include <linux/seq_file.h>
+ #include <linux/stat.h>
+@@ -1344,7 +1347,11 @@
+ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
+ {
+ if (likely(!skb->next)) {
+- if (netdev_nit)
++ if (netdev_nit
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++ && !(skb->imq_flags & IMQ_F_ENQUEUE)
++#endif
++ )
+ dev_queue_xmit_nit(skb, dev);
+
+ if (netif_needs_gso(dev, skb)) {
+diff -urN linux-2.6.19/net/core/skbuff.c linux-2.6.19+imq/net/core/skbuff.c
+--- linux-2.6.19/net/core/skbuff.c 2006-12-01 14:05:45.000000000 +1030
++++ linux-2.6.19+imq/net/core/skbuff.c 2006-12-04 12:41:01.000000000 +1030
+@@ -482,6 +482,10 @@
+ C(nfct_reasm);
+ nf_conntrack_get_reasm(skb->nfct_reasm);
+ #endif
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++ C(imq_flags);
++ C(nf_info);
++#endif /*CONFIG_IMQ*/
+ #ifdef CONFIG_BRIDGE_NETFILTER
+ C(nf_bridge);
+ nf_bridge_get(skb->nf_bridge);
+@@ -546,6 +550,10 @@
+ #if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE)
+ new->ipvs_property = old->ipvs_property;
+ #endif
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++ new->imq_flags = old->imq_flags;
++ new->nf_info = old->nf_info;
++#endif /*CONFIG_IMQ*/
+ #ifdef CONFIG_BRIDGE_NETFILTER
+ new->nf_bridge = old->nf_bridge;
+ nf_bridge_get(old->nf_bridge);
+diff -urN linux-2.6.19/net/ipv4/netfilter/ipt_IMQ.c linux-2.6.19+imq/net/ipv4/netfilter/ipt_IMQ.c
+--- linux-2.6.19/net/ipv4/netfilter/ipt_IMQ.c 1970-01-01 09:30:00.000000000 +0930
++++ linux-2.6.19.2/net/ipv4/netfilter/ipt_IMQ.c 2007-01-25 09:59:34.000000000 +0100
+@@ -0,0 +1,71 @@
++/*
++ * This target marks packets to be enqueued to an imq device
++ */
++#include <linux/module.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++#include <linux/netfilter_ipv4/ipt_IMQ.h>
++#include <linux/imq.h>
++
++static unsigned int imq_target(struct sk_buff **pskb,
++ const struct net_device *in,
++ const struct net_device *out,
++ unsigned int hooknum,
++ const struct xt_target *target,
++ const void *targinfo)
++{
++ struct ipt_imq_info *mr = (struct ipt_imq_info*)targinfo;
++
++ (*pskb)->imq_flags = mr->todev | IMQ_F_ENQUEUE;
++
++ return IPT_CONTINUE;
++}
++
++static int imq_checkentry(const char *tablename,
++ const void *e,
++ const struct xt_target *target,
++ void *targinfo,
++ unsigned int hook_mask)
++{
++ struct ipt_imq_info *mr;
++
++ mr = (struct ipt_imq_info*)targinfo;
++
++ if (mr->todev > IMQ_MAX_DEVS) {
++ printk(KERN_WARNING
++ "IMQ: invalid device specified, highest is %u\n",
++ IMQ_MAX_DEVS);
++ return 0;
++ }
++
++ return 1;
++}
++
++static struct ipt_target ipt_imq_reg = {
++ .name = "IMQ",
++ .target = imq_target,
++ .targetsize = sizeof(struct ipt_imq_info),
++ .checkentry = imq_checkentry,
++ .me = THIS_MODULE,
++ .table = "mangle"
++};
++
++static int __init init(void)
++{
++ if (ipt_register_target(&ipt_imq_reg))
++ return -EINVAL;
++
++ return 0;
++}
++
++static void __exit fini(void)
++{
++ ipt_unregister_target(&ipt_imq_reg);
++}
++
++module_init(init);
++module_exit(fini);
++
++MODULE_AUTHOR("http://www.linuximq.net");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
++MODULE_LICENSE("GPL");
+diff -urN linux-2.6.19/net/ipv4/netfilter/Kconfig linux-2.6.19+imq/net/ipv4/netfilter/Kconfig
+--- linux-2.6.19/net/ipv4/netfilter/Kconfig 2006-12-01 14:05:45.000000000 +1030
++++ linux-2.6.19+imq/net/ipv4/netfilter/Kconfig 2006-12-04 12:41:01.000000000 +1030
+@@ -533,6 +533,17 @@
+
+ To compile it as a module, choose M here. If unsure, say N.
+
++config IP_NF_TARGET_IMQ
++ tristate "IMQ target support"
++ depends on IP_NF_MANGLE
++ help
++ This option adds a `IMQ' target which is used to specify if and
++ to which IMQ device packets should get enqueued/dequeued.
++
++ For more information visit: http://www.linuximq.net/
++
++ To compile it as a module, choose M here. If unsure, say N.
++
+ config IP_NF_TARGET_TOS
+ tristate "TOS target support"
+ depends on IP_NF_MANGLE
+diff -urN linux-2.6.19/net/ipv4/netfilter/Makefile linux-2.6.19+imq/net/ipv4/netfilter/Makefile
+--- linux-2.6.19/net/ipv4/netfilter/Makefile 2006-12-01 14:05:45.000000000 +1030
++++ linux-2.6.19+imq/net/ipv4/netfilter/Makefile 2006-12-04 12:41:01.000000000 +1030
+@@ -67,6 +67,7 @@
+ obj-$(CONFIG_IP_NF_TARGET_REJECT) += ipt_REJECT.o
+ obj-$(CONFIG_IP_NF_TARGET_TOS) += ipt_TOS.o
+ obj-$(CONFIG_IP_NF_TARGET_ECN) += ipt_ECN.o
++obj-$(CONFIG_IP_NF_TARGET_IMQ) += ipt_IMQ.o
+ obj-$(CONFIG_IP_NF_TARGET_MASQUERADE) += ipt_MASQUERADE.o
+ obj-$(CONFIG_IP_NF_TARGET_REDIRECT) += ipt_REDIRECT.o
+ obj-$(CONFIG_IP_NF_TARGET_NETMAP) += ipt_NETMAP.o
+diff -urN linux-2.6.19/net/ipv6/netfilter/ip6t_IMQ.c linux-2.6.19+imq/net/ipv6/netfilter/ip6t_IMQ.c
+--- linux-2.6.19/net/ipv6/netfilter/ip6t_IMQ.c 1970-01-01 09:30:00.000000000 +0930
++++ linux-2.6.19.2/net/ipv6/netfilter/ip6t_IMQ.c 2007-01-25 10:06:41.000000000 +0100
+@@ -0,0 +1,71 @@
++/*
++ * This target marks packets to be enqueued to an imq device
++ */
++#include <linux/module.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter_ipv6/ip6_tables.h>
++#include <linux/netfilter_ipv6/ip6t_IMQ.h>
++#include <linux/imq.h>
++
++static unsigned int imq_target(struct sk_buff **pskb,
++ const struct net_device *in,
++ const struct net_device *out,
++ unsigned int hooknum,
++ const struct xt_target *target,
++ const void *targinfo)
++{
++ struct ip6t_imq_info *mr = (struct ip6t_imq_info*)targinfo;
++
++ (*pskb)->imq_flags = mr->todev | IMQ_F_ENQUEUE;
++
++ return IP6T_CONTINUE;
++}
++
++static int imq_checkentry(const char *tablename,
++ const void *entry,
++ const struct xt_target *target,
++ void *targinfo,
++ unsigned int hook_mask)
++{
++ struct ip6t_imq_info *mr;
++
++ mr = (struct ip6t_imq_info*)targinfo;
++
++ if (mr->todev > IMQ_MAX_DEVS) {
++ printk(KERN_WARNING
++ "IMQ: invalid device specified, highest is %u\n",
++ IMQ_MAX_DEVS);
++ return 0;
++ }
++
++ return 1;
++}
++
++static struct ip6t_target ip6t_imq_reg = {
++ .name = "IMQ",
++ .target = imq_target,
++ .targetsize = sizeof(struct ip6t_imq_info),
++ .table = "mangle",
++ .checkentry = imq_checkentry,
++ .me = THIS_MODULE
++};
++
++static int __init init(void)
++{
++ if (ip6t_register_target(&ip6t_imq_reg))
++ return -EINVAL;
++
++ return 0;
++}
++
++static void __exit fini(void)
++{
++ ip6t_unregister_target(&ip6t_imq_reg);
++}
++
++module_init(init);
++module_exit(fini);
++
++MODULE_AUTHOR("http://www.linuximq.net");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
++MODULE_LICENSE("GPL");
+diff -urN linux-2.6.19/net/ipv6/netfilter/Kconfig linux-2.6.19+imq/net/ipv6/netfilter/Kconfig
+--- linux-2.6.19/net/ipv6/netfilter/Kconfig 2006-12-01 14:05:46.000000000 +1030
++++ linux-2.6.19+imq/net/ipv6/netfilter/Kconfig 2006-12-04 12:41:01.000000000 +1030
+@@ -163,6 +163,15 @@
+
+ To compile it as a module, choose M here. If unsure, say N.
+
++config IP6_NF_TARGET_IMQ
++ tristate "IMQ target support"
++ depends on IP6_NF_MANGLE
++ help
++ This option adds a `IMQ' target which is used to specify if and
++ to which imq device packets should get enqueued/dequeued.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
+ config IP6_NF_TARGET_HL
+ tristate 'HL (hoplimit) target support'
+ depends on IP6_NF_MANGLE
+diff -urN linux-2.6.19/net/ipv6/netfilter/Makefile linux-2.6.19+imq/net/ipv6/netfilter/Makefile
+--- linux-2.6.19/net/ipv6/netfilter/Makefile 2006-12-01 14:05:46.000000000 +1030
++++ linux-2.6.19+imq/net/ipv6/netfilter/Makefile 2006-12-04 12:41:01.000000000 +1030
+@@ -13,6 +13,7 @@
+ obj-$(CONFIG_IP6_NF_MATCH_OWNER) += ip6t_owner.o
+ obj-$(CONFIG_IP6_NF_FILTER) += ip6table_filter.o
+ obj-$(CONFIG_IP6_NF_MANGLE) += ip6table_mangle.o
++obj-$(CONFIG_IP6_NF_TARGET_IMQ) += ip6t_IMQ.o
+ obj-$(CONFIG_IP6_NF_TARGET_HL) += ip6t_HL.o
+ obj-$(CONFIG_IP6_NF_QUEUE) += ip6_queue.o
+ obj-$(CONFIG_IP6_NF_TARGET_LOG) += ip6t_LOG.o
+diff -urN linux-2.6.19/net/sched/sch_generic.c linux-2.6.19+imq/net/sched/sch_generic.c
+--- linux-2.6.19/net/sched/sch_generic.c 2006-12-01 14:05:46.000000000 +1030
++++ linux-2.6.19+imq/net/sched/sch_generic.c 2006-12-05 23:08:54.000000000 +1030
+@@ -87,7 +87,6 @@
+
+ NOTE: Called under dev->queue_lock with locally disabled BH.
+ */
+-
+ static inline int qdisc_restart(struct net_device *dev)
+ {
+ struct Qdisc *q = dev->qdisc;
+@@ -181,6 +180,11 @@
+ return q->q.qlen;
+ }
+
++int qdisc_restart1(struct net_device *dev)
++{
++ return qdisc_restart(dev);
++}
++
+ void __qdisc_run(struct net_device *dev)
+ {
+ if (unlikely(dev->qdisc == &noop_qdisc))
+@@ -617,3 +621,4 @@
+ EXPORT_SYMBOL(qdisc_reset);
+ EXPORT_SYMBOL(qdisc_lock_tree);
+ EXPORT_SYMBOL(qdisc_unlock_tree);
++EXPORT_SYMBOL(qdisc_restart1);
diff --git a/packages/linux/linux-magicbox-2.6.19.2/160-netfilter_route.patch b/packages/linux/linux-magicbox-2.6.19.2/160-netfilter_route.patch
new file mode 100644
index 0000000000..7e8491c3e3
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/160-netfilter_route.patch
@@ -0,0 +1,902 @@
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ipt_ROUTE.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ipt_ROUTE.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ipt_ROUTE.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ipt_ROUTE.h 2006-12-14 03:13:49.000000000 +0100
+@@ -0,0 +1,23 @@
++/* Header file for iptables ipt_ROUTE target
++ *
++ * (C) 2002 by Cédric de Launois <delaunois@info.ucl.ac.be>
++ *
++ * This software is distributed under GNU GPL v2, 1991
++ */
++#ifndef _IPT_ROUTE_H_target
++#define _IPT_ROUTE_H_target
++
++#define IPT_ROUTE_IFNAMSIZ 16
++
++struct ipt_route_target_info {
++ char oif[IPT_ROUTE_IFNAMSIZ]; /* Output Interface Name */
++ char iif[IPT_ROUTE_IFNAMSIZ]; /* Input Interface Name */
++ u_int32_t gw; /* IP address of gateway */
++ u_int8_t flags;
++};
++
++/* Values for "flags" field */
++#define IPT_ROUTE_CONTINUE 0x01
++#define IPT_ROUTE_TEE 0x02
++
++#endif /*_IPT_ROUTE_H_target*/
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv6/ip6t_ROUTE.h linux-2.6.19.dev/include/linux/netfilter_ipv6/ip6t_ROUTE.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv6/ip6t_ROUTE.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv6/ip6t_ROUTE.h 2006-12-14 03:13:49.000000000 +0100
+@@ -0,0 +1,23 @@
++/* Header file for iptables ip6t_ROUTE target
++ *
++ * (C) 2003 by Cédric de Launois <delaunois@info.ucl.ac.be>
++ *
++ * This software is distributed under GNU GPL v2, 1991
++ */
++#ifndef _IPT_ROUTE_H_target
++#define _IPT_ROUTE_H_target
++
++#define IP6T_ROUTE_IFNAMSIZ 16
++
++struct ip6t_route_target_info {
++ char oif[IP6T_ROUTE_IFNAMSIZ]; /* Output Interface Name */
++ char iif[IP6T_ROUTE_IFNAMSIZ]; /* Input Interface Name */
++ u_int32_t gw[4]; /* IPv6 address of gateway */
++ u_int8_t flags;
++};
++
++/* Values for "flags" field */
++#define IP6T_ROUTE_CONTINUE 0x01
++#define IP6T_ROUTE_TEE 0x02
++
++#endif /*_IP6T_ROUTE_H_target*/
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ipt_ROUTE.c linux-2.6.19.dev/net/ipv4/netfilter/ipt_ROUTE.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ipt_ROUTE.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ipt_ROUTE.c 2006-12-14 03:13:49.000000000 +0100
+@@ -0,0 +1,455 @@
++/*
++ * This implements the ROUTE target, which enables you to setup unusual
++ * routes not supported by the standard kernel routing table.
++ *
++ * Copyright (C) 2002 Cedric de Launois <delaunois@info.ucl.ac.be>
++ *
++ * v 1.11 2004/11/23
++ *
++ * This software is distributed under GNU GPL v2, 1991
++ */
++
++#include <linux/module.h>
++#include <linux/skbuff.h>
++#include <linux/ip.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++#include <linux/netfilter_ipv4/ip_conntrack.h>
++#include <linux/netfilter_ipv4/ipt_ROUTE.h>
++#include <linux/netdevice.h>
++#include <linux/route.h>
++#include <linux/if_arp.h>
++#include <net/ip.h>
++#include <net/route.h>
++#include <net/icmp.h>
++#include <net/checksum.h>
++
++#if 0
++#define DEBUGP printk
++#else
++#define DEBUGP(format, args...)
++#endif
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Cedric de Launois <delaunois@info.ucl.ac.be>");
++MODULE_DESCRIPTION("iptables ROUTE target module");
++
++/* Try to route the packet according to the routing keys specified in
++ * route_info. Keys are :
++ * - ifindex :
++ * 0 if no oif preferred,
++ * otherwise set to the index of the desired oif
++ * - route_info->gw :
++ * 0 if no gateway specified,
++ * otherwise set to the next host to which the pkt must be routed
++ * If success, skb->dev is the output device to which the packet must
++ * be sent and skb->dst is not NULL
++ *
++ * RETURN: -1 if an error occured
++ * 1 if the packet was succesfully routed to the
++ * destination desired
++ * 0 if the kernel routing table could not route the packet
++ * according to the keys specified
++ */
++static int route(struct sk_buff *skb,
++ unsigned int ifindex,
++ const struct ipt_route_target_info *route_info)
++{
++ int err;
++ struct rtable *rt;
++ struct iphdr *iph = skb->nh.iph;
++ struct flowi fl = {
++ .oif = ifindex,
++ .nl_u = {
++ .ip4_u = {
++ .daddr = iph->daddr,
++ .saddr = 0,
++ .tos = RT_TOS(iph->tos),
++ .scope = RT_SCOPE_UNIVERSE,
++ }
++ }
++ };
++
++ /* The destination address may be overloaded by the target */
++ if (route_info->gw)
++ fl.fl4_dst = route_info->gw;
++
++ /* Trying to route the packet using the standard routing table. */
++ if ((err = ip_route_output_key(&rt, &fl))) {
++ if (net_ratelimit())
++ DEBUGP("ipt_ROUTE: couldn't route pkt (err: %i)",err);
++ return -1;
++ }
++
++ /* Drop old route. */
++ dst_release(skb->dst);
++ skb->dst = NULL;
++
++ /* Success if no oif specified or if the oif correspond to the
++ * one desired */
++ if (!ifindex || rt->u.dst.dev->ifindex == ifindex) {
++ skb->dst = &rt->u.dst;
++ skb->dev = skb->dst->dev;
++ skb->protocol = htons(ETH_P_IP);
++ return 1;
++ }
++
++ /* The interface selected by the routing table is not the one
++ * specified by the user. This may happen because the dst address
++ * is one of our own addresses.
++ */
++ if (net_ratelimit())
++ DEBUGP("ipt_ROUTE: failed to route as desired gw=%u.%u.%u.%u oif=%i (got oif=%i)\n",
++ NIPQUAD(route_info->gw), ifindex, rt->u.dst.dev->ifindex);
++
++ return 0;
++}
++
++
++/* Stolen from ip_finish_output2
++ * PRE : skb->dev is set to the device we are leaving by
++ * skb->dst is not NULL
++ * POST: the packet is sent with the link layer header pushed
++ * the packet is destroyed
++ */
++static void ip_direct_send(struct sk_buff *skb)
++{
++ struct dst_entry *dst = skb->dst;
++ struct hh_cache *hh = dst->hh;
++ struct net_device *dev = dst->dev;
++ int hh_len = LL_RESERVED_SPACE(dev);
++
++ /* Be paranoid, rather than too clever. */
++ if (unlikely(skb_headroom(skb) < hh_len && dev->hard_header)) {
++ struct sk_buff *skb2;
++
++ skb2 = skb_realloc_headroom(skb, LL_RESERVED_SPACE(dev));
++ if (skb2 == NULL) {
++ kfree_skb(skb);
++ return;
++ }
++ if (skb->sk)
++ skb_set_owner_w(skb2, skb->sk);
++ kfree_skb(skb);
++ skb = skb2;
++ }
++
++ if (hh) {
++ int hh_alen;
++
++ read_lock_bh(&hh->hh_lock);
++ hh_alen = HH_DATA_ALIGN(hh->hh_len);
++ memcpy(skb->data - hh_alen, hh->hh_data, hh_alen);
++ read_unlock_bh(&hh->hh_lock);
++ skb_push(skb, hh->hh_len);
++ hh->hh_output(skb);
++ } else if (dst->neighbour)
++ dst->neighbour->output(skb);
++ else {
++ if (net_ratelimit())
++ DEBUGP(KERN_DEBUG "ipt_ROUTE: no hdr & no neighbour cache!\n");
++ kfree_skb(skb);
++ }
++}
++
++
++/* PRE : skb->dev is set to the device we are leaving by
++ * POST: - the packet is directly sent to the skb->dev device, without
++ * pushing the link layer header.
++ * - the packet is destroyed
++ */
++static inline int dev_direct_send(struct sk_buff *skb)
++{
++ return dev_queue_xmit(skb);
++}
++
++
++static unsigned int route_oif(const struct ipt_route_target_info *route_info,
++ struct sk_buff *skb)
++{
++ unsigned int ifindex = 0;
++ struct net_device *dev_out = NULL;
++
++ /* The user set the interface name to use.
++ * Getting the current interface index.
++ */
++ if ((dev_out = dev_get_by_name(route_info->oif))) {
++ ifindex = dev_out->ifindex;
++ } else {
++ /* Unknown interface name : packet dropped */
++ if (net_ratelimit())
++ DEBUGP("ipt_ROUTE: oif interface %s not found\n", route_info->oif);
++ return NF_DROP;
++ }
++
++ /* Trying the standard way of routing packets */
++ switch (route(skb, ifindex, route_info)) {
++ case 1:
++ dev_put(dev_out);
++ if (route_info->flags & IPT_ROUTE_CONTINUE)
++ return IPT_CONTINUE;
++
++ ip_direct_send(skb);
++ return NF_STOLEN;
++
++ case 0:
++ /* Failed to send to oif. Trying the hard way */
++ if (route_info->flags & IPT_ROUTE_CONTINUE)
++ return NF_DROP;
++
++ if (net_ratelimit())
++ DEBUGP("ipt_ROUTE: forcing the use of %i\n",
++ ifindex);
++
++ /* We have to force the use of an interface.
++ * This interface must be a tunnel interface since
++ * otherwise we can't guess the hw address for
++ * the packet. For a tunnel interface, no hw address
++ * is needed.
++ */
++ if ((dev_out->type != ARPHRD_TUNNEL)
++ && (dev_out->type != ARPHRD_IPGRE)) {
++ if (net_ratelimit())
++ DEBUGP("ipt_ROUTE: can't guess the hw addr !\n");
++ dev_put(dev_out);
++ return NF_DROP;
++ }
++
++ /* Send the packet. This will also free skb
++ * Do not go through the POST_ROUTING hook because
++ * skb->dst is not set and because it will probably
++ * get confused by the destination IP address.
++ */
++ skb->dev = dev_out;
++ dev_direct_send(skb);
++ dev_put(dev_out);
++ return NF_STOLEN;
++
++ default:
++ /* Unexpected error */
++ dev_put(dev_out);
++ return NF_DROP;
++ }
++}
++
++
++static unsigned int route_iif(const struct ipt_route_target_info *route_info,
++ struct sk_buff *skb)
++{
++ struct net_device *dev_in = NULL;
++
++ /* Getting the current interface index. */
++ if (!(dev_in = dev_get_by_name(route_info->iif))) {
++ if (net_ratelimit())
++ DEBUGP("ipt_ROUTE: iif interface %s not found\n", route_info->iif);
++ return NF_DROP;
++ }
++
++ skb->dev = dev_in;
++ dst_release(skb->dst);
++ skb->dst = NULL;
++
++ netif_rx(skb);
++ dev_put(dev_in);
++ return NF_STOLEN;
++}
++
++
++static unsigned int route_gw(const struct ipt_route_target_info *route_info,
++ struct sk_buff *skb)
++{
++ if (route(skb, 0, route_info)!=1)
++ return NF_DROP;
++
++ if (route_info->flags & IPT_ROUTE_CONTINUE)
++ return IPT_CONTINUE;
++
++ ip_direct_send(skb);
++ return NF_STOLEN;
++}
++
++
++/* To detect and deter routed packet loopback when using the --tee option,
++ * we take a page out of the raw.patch book: on the copied skb, we set up
++ * a fake ->nfct entry, pointing to the local &route_tee_track. We skip
++ * routing packets when we see they already have that ->nfct.
++ */
++
++static struct ip_conntrack route_tee_track;
++
++static unsigned int ipt_route_target(struct sk_buff **pskb,
++ const struct net_device *in,
++ const struct net_device *out,
++ unsigned int hooknum,
++ const struct xt_target *target,
++ const void *targinfo)
++{
++ const struct ipt_route_target_info *route_info = targinfo;
++ struct sk_buff *skb = *pskb;
++ unsigned int res;
++
++ if (skb->nfct == &route_tee_track.ct_general) {
++ /* Loopback - a packet we already routed, is to be
++ * routed another time. Avoid that, now.
++ */
++ if (net_ratelimit())
++ DEBUGP(KERN_DEBUG "ipt_ROUTE: loopback - DROP!\n");
++ return NF_DROP;
++ }
++
++ /* If we are at PREROUTING or INPUT hook
++ * the TTL isn't decreased by the IP stack
++ */
++ if (hooknum == NF_IP_PRE_ROUTING ||
++ hooknum == NF_IP_LOCAL_IN) {
++
++ struct iphdr *iph = skb->nh.iph;
++
++ if (iph->ttl <= 1) {
++ struct rtable *rt;
++ struct flowi fl = {
++ .oif = 0,
++ .nl_u = {
++ .ip4_u = {
++ .daddr = iph->daddr,
++ .saddr = iph->saddr,
++ .tos = RT_TOS(iph->tos),
++ .scope = ((iph->tos & RTO_ONLINK) ?
++ RT_SCOPE_LINK :
++ RT_SCOPE_UNIVERSE)
++ }
++ }
++ };
++
++ if (ip_route_output_key(&rt, &fl)) {
++ return NF_DROP;
++ }
++
++ if (skb->dev == rt->u.dst.dev) {
++ /* Drop old route. */
++ dst_release(skb->dst);
++ skb->dst = &rt->u.dst;
++
++ /* this will traverse normal stack, and
++ * thus call conntrack on the icmp packet */
++ icmp_send(skb, ICMP_TIME_EXCEEDED,
++ ICMP_EXC_TTL, 0);
++ }
++
++ return NF_DROP;
++ }
++
++ /*
++ * If we are at INPUT the checksum must be recalculated since
++ * the length could change as the result of a defragmentation.
++ */
++ if(hooknum == NF_IP_LOCAL_IN) {
++ iph->ttl = iph->ttl - 1;
++ iph->check = 0;
++ iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl);
++ } else {
++ ip_decrease_ttl(iph);
++ }
++ }
++
++ if ((route_info->flags & IPT_ROUTE_TEE)) {
++ /*
++ * Copy the *pskb, and route the copy. Will later return
++ * IPT_CONTINUE for the original skb, which should continue
++ * on its way as if nothing happened. The copy should be
++ * independantly delivered to the ROUTE --gw.
++ */
++ skb = skb_copy(*pskb, GFP_ATOMIC);
++ if (!skb) {
++ if (net_ratelimit())
++ DEBUGP(KERN_DEBUG "ipt_ROUTE: copy failed!\n");
++ return IPT_CONTINUE;
++ }
++ }
++
++ /* Tell conntrack to forget this packet since it may get confused
++ * when a packet is leaving with dst address == our address.
++ * Good idea ? Dunno. Need advice.
++ *
++ * NEW: mark the skb with our &route_tee_track, so we avoid looping
++ * on any already routed packet.
++ */
++ if (!(route_info->flags & IPT_ROUTE_CONTINUE)) {
++ nf_conntrack_put(skb->nfct);
++ skb->nfct = &route_tee_track.ct_general;
++ skb->nfctinfo = IP_CT_NEW;
++ nf_conntrack_get(skb->nfct);
++ }
++
++ if (route_info->oif[0] != '\0') {
++ res = route_oif(route_info, skb);
++ } else if (route_info->iif[0] != '\0') {
++ res = route_iif(route_info, skb);
++ } else if (route_info->gw) {
++ res = route_gw(route_info, skb);
++ } else {
++ if (net_ratelimit())
++ DEBUGP(KERN_DEBUG "ipt_ROUTE: no parameter !\n");
++ res = IPT_CONTINUE;
++ }
++
++ if ((route_info->flags & IPT_ROUTE_TEE))
++ res = IPT_CONTINUE;
++
++ return res;
++}
++
++
++static int ipt_route_checkentry(const char *tablename,
++ const void *e,
++ const struct xt_target *target,
++ void *targinfo,
++ unsigned int hook_mask)
++{
++ if (strcmp(tablename, "mangle") != 0) {
++ printk("ipt_ROUTE: bad table `%s', use the `mangle' table.\n",
++ tablename);
++ return 0;
++ }
++
++ if (hook_mask & ~( (1 << NF_IP_PRE_ROUTING)
++ | (1 << NF_IP_LOCAL_IN)
++ | (1 << NF_IP_FORWARD)
++ | (1 << NF_IP_LOCAL_OUT)
++ | (1 << NF_IP_POST_ROUTING))) {
++ printk("ipt_ROUTE: bad hook\n");
++ return 0;
++ }
++
++ return 1;
++}
++
++
++static struct ipt_target ipt_route_reg = {
++ .name = "ROUTE",
++ .target = ipt_route_target,
++ .targetsize = sizeof(struct ipt_route_target_info),
++ .checkentry = ipt_route_checkentry,
++ .me = THIS_MODULE,
++};
++
++static int __init init(void)
++{
++ /* Set up fake conntrack (stolen from raw.patch):
++ - to never be deleted, not in any hashes */
++ atomic_set(&route_tee_track.ct_general.use, 1);
++ /* - and look it like as a confirmed connection */
++ set_bit(IPS_CONFIRMED_BIT, &route_tee_track.status);
++ /* Initialize fake conntrack so that NAT will skip it */
++ route_tee_track.status |= IPS_NAT_DONE_MASK;
++
++ return ipt_register_target(&ipt_route_reg);
++}
++
++
++static void __exit fini(void)
++{
++ ipt_unregister_target(&ipt_route_reg);
++}
++
++module_init(init);
++module_exit(fini);
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/Kconfig linux-2.6.19.dev/net/ipv4/netfilter/Kconfig
+--- linux-2.6.19.old/net/ipv4/netfilter/Kconfig 2006-12-14 03:13:49.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/Kconfig 2006-12-14 03:13:49.000000000 +0100
+@@ -494,6 +494,23 @@
+
+ To compile it as a module, choose M here. If unsure, say N.
+
++config IP_NF_TARGET_ROUTE
++ tristate 'ROUTE target support'
++ depends on IP_NF_MANGLE
++ help
++ This option adds a `ROUTE' target, which enables you to setup unusual
++ routes. For example, the ROUTE lets you route a received packet through
++ an interface or towards a host, even if the regular destination of the
++ packet is the router itself. The ROUTE target is also able to change the
++ incoming interface of a packet.
++
++ The target can be or not a final target. It has to be used inside the
++ mangle table.
++
++ If you want to compile it as a module, say M here and read
++ Documentation/modules.txt. The module will be called ipt_ROUTE.o.
++ If unsure, say `N'.
++
+ config IP_NF_TARGET_NETMAP
+ tristate "NETMAP target support"
+ depends on IP_NF_NAT
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/Makefile linux-2.6.19.dev/net/ipv4/netfilter/Makefile
+--- linux-2.6.19.old/net/ipv4/netfilter/Makefile 2006-12-14 03:13:49.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/Makefile 2006-12-14 03:13:49.000000000 +0100
+@@ -74,6 +74,7 @@
+ obj-$(CONFIG_IP_NF_TARGET_IMQ) += ipt_IMQ.o
+ obj-$(CONFIG_IP_NF_TARGET_MASQUERADE) += ipt_MASQUERADE.o
+ obj-$(CONFIG_IP_NF_TARGET_REDIRECT) += ipt_REDIRECT.o
++obj-$(CONFIG_IP_NF_TARGET_ROUTE) += ipt_ROUTE.o
+ obj-$(CONFIG_IP_NF_TARGET_NETMAP) += ipt_NETMAP.o
+ obj-$(CONFIG_IP_NF_TARGET_SAME) += ipt_SAME.o
+ obj-$(CONFIG_IP_NF_NAT_SNMP_BASIC) += ip_nat_snmp_basic.o
+diff -urN linux-2.6.19.old/net/ipv6/ipv6_syms.c linux-2.6.19.dev/net/ipv6/ipv6_syms.c
+--- linux-2.6.19.old/net/ipv6/ipv6_syms.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/ipv6/ipv6_syms.c 2006-12-14 03:13:49.000000000 +0100
+@@ -11,6 +11,7 @@
+ EXPORT_SYMBOL(icmpv6_statistics);
+ EXPORT_SYMBOL(icmpv6_err_convert);
+ EXPORT_SYMBOL(ndisc_mc_map);
++EXPORT_SYMBOL(nd_tbl);
+ EXPORT_SYMBOL(register_inet6addr_notifier);
+ EXPORT_SYMBOL(unregister_inet6addr_notifier);
+ EXPORT_SYMBOL(ip6_route_output);
+diff -urN linux-2.6.19.old/net/ipv6/netfilter/ip6t_ROUTE.c linux-2.6.19.dev/net/ipv6/netfilter/ip6t_ROUTE.c
+--- linux-2.6.19.old/net/ipv6/netfilter/ip6t_ROUTE.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/ipv6/netfilter/ip6t_ROUTE.c 2006-12-14 03:13:49.000000000 +0100
+@@ -0,0 +1,302 @@
++/*
++ * This implements the ROUTE v6 target, which enables you to setup unusual
++ * routes not supported by the standard kernel routing table.
++ *
++ * Copyright (C) 2003 Cedric de Launois <delaunois@info.ucl.ac.be>
++ *
++ * v 1.1 2004/11/23
++ *
++ * This software is distributed under GNU GPL v2, 1991
++ */
++
++#include <linux/module.h>
++#include <linux/skbuff.h>
++#include <linux/ipv6.h>
++#include <linux/netfilter_ipv6/ip6_tables.h>
++#include <linux/netfilter_ipv6/ip6t_ROUTE.h>
++#include <linux/netdevice.h>
++#include <net/ipv6.h>
++#include <net/ndisc.h>
++#include <net/ip6_route.h>
++#include <linux/icmpv6.h>
++
++#if 1
++#define DEBUGP printk
++#else
++#define DEBUGP(format, args...)
++#endif
++
++#define NIP6(addr) \
++ ntohs((addr).s6_addr16[0]), \
++ ntohs((addr).s6_addr16[1]), \
++ ntohs((addr).s6_addr16[2]), \
++ ntohs((addr).s6_addr16[3]), \
++ ntohs((addr).s6_addr16[4]), \
++ ntohs((addr).s6_addr16[5]), \
++ ntohs((addr).s6_addr16[6]), \
++ ntohs((addr).s6_addr16[7])
++
++/* Route the packet according to the routing keys specified in
++ * route_info. Keys are :
++ * - ifindex :
++ * 0 if no oif preferred,
++ * otherwise set to the index of the desired oif
++ * - route_info->gw :
++ * 0 if no gateway specified,
++ * otherwise set to the next host to which the pkt must be routed
++ * If success, skb->dev is the output device to which the packet must
++ * be sent and skb->dst is not NULL
++ *
++ * RETURN: 1 if the packet was succesfully routed to the
++ * destination desired
++ * 0 if the kernel routing table could not route the packet
++ * according to the keys specified
++ */
++static int
++route6(struct sk_buff *skb,
++ unsigned int ifindex,
++ const struct ip6t_route_target_info *route_info)
++{
++ struct rt6_info *rt = NULL;
++ struct ipv6hdr *ipv6h = skb->nh.ipv6h;
++ struct in6_addr *gw = (struct in6_addr*)&route_info->gw;
++
++ DEBUGP("ip6t_ROUTE: called with: ");
++ DEBUGP("DST=%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x ", NIP6(ipv6h->daddr));
++ DEBUGP("GATEWAY=%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x ", NIP6(*gw));
++ DEBUGP("OUT=%s\n", route_info->oif);
++
++ if (ipv6_addr_any(gw))
++ rt = rt6_lookup(&ipv6h->daddr, &ipv6h->saddr, ifindex, 1);
++ else
++ rt = rt6_lookup(gw, &ipv6h->saddr, ifindex, 1);
++
++ if (!rt)
++ goto no_route;
++
++ DEBUGP("ip6t_ROUTE: routing gives: ");
++ DEBUGP("DST=%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x ", NIP6(rt->rt6i_dst.addr));
++ DEBUGP("GATEWAY=%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x ", NIP6(rt->rt6i_gateway));
++ DEBUGP("OUT=%s\n", rt->rt6i_dev->name);
++
++ if (ifindex && rt->rt6i_dev->ifindex!=ifindex)
++ goto wrong_route;
++
++ if (!rt->rt6i_nexthop) {
++ DEBUGP("ip6t_ROUTE: discovering neighbour\n");
++ rt->rt6i_nexthop = ndisc_get_neigh(rt->rt6i_dev, &rt->rt6i_dst.addr);
++ }
++
++ /* Drop old route. */
++ dst_release(skb->dst);
++ skb->dst = &rt->u.dst;
++ skb->dev = rt->rt6i_dev;
++ return 1;
++
++ wrong_route:
++ dst_release(&rt->u.dst);
++ no_route:
++ if (!net_ratelimit())
++ return 0;
++
++ printk("ip6t_ROUTE: no explicit route found ");
++ if (ifindex)
++ printk("via interface %s ", route_info->oif);
++ if (!ipv6_addr_any(gw))
++ printk("via gateway %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x", NIP6(*gw));
++ printk("\n");
++ return 0;
++}
++
++
++/* Stolen from ip6_output_finish
++ * PRE : skb->dev is set to the device we are leaving by
++ * skb->dst is not NULL
++ * POST: the packet is sent with the link layer header pushed
++ * the packet is destroyed
++ */
++static void ip_direct_send(struct sk_buff *skb)
++{
++ struct dst_entry *dst = skb->dst;
++ struct hh_cache *hh = dst->hh;
++
++ if (hh) {
++ read_lock_bh(&hh->hh_lock);
++ memcpy(skb->data - 16, hh->hh_data, 16);
++ read_unlock_bh(&hh->hh_lock);
++ skb_push(skb, hh->hh_len);
++ hh->hh_output(skb);
++ } else if (dst->neighbour)
++ dst->neighbour->output(skb);
++ else {
++ if (net_ratelimit())
++ DEBUGP(KERN_DEBUG "ip6t_ROUTE: no hdr & no neighbour cache!\n");
++ kfree_skb(skb);
++ }
++}
++
++
++static unsigned int
++route6_oif(const struct ip6t_route_target_info *route_info,
++ struct sk_buff *skb)
++{
++ unsigned int ifindex = 0;
++ struct net_device *dev_out = NULL;
++
++ /* The user set the interface name to use.
++ * Getting the current interface index.
++ */
++ if ((dev_out = dev_get_by_name(route_info->oif))) {
++ ifindex = dev_out->ifindex;
++ } else {
++ /* Unknown interface name : packet dropped */
++ if (net_ratelimit())
++ DEBUGP("ip6t_ROUTE: oif interface %s not found\n", route_info->oif);
++
++ if (route_info->flags & IP6T_ROUTE_CONTINUE)
++ return IP6T_CONTINUE;
++ else
++ return NF_DROP;
++ }
++
++ /* Trying the standard way of routing packets */
++ if (route6(skb, ifindex, route_info)) {
++ dev_put(dev_out);
++ if (route_info->flags & IP6T_ROUTE_CONTINUE)
++ return IP6T_CONTINUE;
++
++ ip_direct_send(skb);
++ return NF_STOLEN;
++ } else
++ return NF_DROP;
++}
++
++
++static unsigned int
++route6_gw(const struct ip6t_route_target_info *route_info,
++ struct sk_buff *skb)
++{
++ if (route6(skb, 0, route_info)) {
++ if (route_info->flags & IP6T_ROUTE_CONTINUE)
++ return IP6T_CONTINUE;
++
++ ip_direct_send(skb);
++ return NF_STOLEN;
++ } else
++ return NF_DROP;
++}
++
++
++static unsigned int
++ip6t_route_target(struct sk_buff **pskb,
++ const struct net_device *in,
++ const struct net_device *out,
++ unsigned int hooknum,
++ const struct xt_target *target,
++ const void *targinfo)
++{
++ const struct ip6t_route_target_info *route_info = targinfo;
++ struct sk_buff *skb = *pskb;
++ struct in6_addr *gw = (struct in6_addr*)&route_info->gw;
++ unsigned int res;
++
++ if (route_info->flags & IP6T_ROUTE_CONTINUE)
++ goto do_it;
++
++ /* If we are at PREROUTING or INPUT hook
++ * the TTL isn't decreased by the IP stack
++ */
++ if (hooknum == NF_IP6_PRE_ROUTING ||
++ hooknum == NF_IP6_LOCAL_IN) {
++
++ struct ipv6hdr *ipv6h = skb->nh.ipv6h;
++
++ if (ipv6h->hop_limit <= 1) {
++ /* Force OUTPUT device used as source address */
++ skb->dev = skb->dst->dev;
++
++ icmpv6_send(skb, ICMPV6_TIME_EXCEED,
++ ICMPV6_EXC_HOPLIMIT, 0, skb->dev);
++
++ return NF_DROP;
++ }
++
++ ipv6h->hop_limit--;
++ }
++
++ if ((route_info->flags & IP6T_ROUTE_TEE)) {
++ /*
++ * Copy the *pskb, and route the copy. Will later return
++ * IP6T_CONTINUE for the original skb, which should continue
++ * on its way as if nothing happened. The copy should be
++ * independantly delivered to the ROUTE --gw.
++ */
++ skb = skb_copy(*pskb, GFP_ATOMIC);
++ if (!skb) {
++ if (net_ratelimit())
++ DEBUGP(KERN_DEBUG "ip6t_ROUTE: copy failed!\n");
++ return IP6T_CONTINUE;
++ }
++ }
++
++do_it:
++ if (route_info->oif[0]) {
++ res = route6_oif(route_info, skb);
++ } else if (!ipv6_addr_any(gw)) {
++ res = route6_gw(route_info, skb);
++ } else {
++ if (net_ratelimit())
++ DEBUGP(KERN_DEBUG "ip6t_ROUTE: no parameter !\n");
++ res = IP6T_CONTINUE;
++ }
++
++ if ((route_info->flags & IP6T_ROUTE_TEE))
++ res = IP6T_CONTINUE;
++
++ return res;
++}
++
++
++static int
++ip6t_route_checkentry(const char *tablename,
++ const void *e,
++ const struct xt_target *target,
++ void *targinfo,
++ unsigned int hook_mask)
++{
++ if (strcmp(tablename, "mangle") != 0) {
++ printk("ip6t_ROUTE: can only be called from \"mangle\" table.\n");
++ return 0;
++ }
++
++ return 1;
++}
++
++
++static struct ip6t_target ip6t_route_reg = {
++ .name = "ROUTE",
++ .target = ip6t_route_target,
++ .targetsize = sizeof(struct ip6t_route_target_info),
++ .checkentry = ip6t_route_checkentry,
++ .me = THIS_MODULE
++};
++
++
++static int __init init(void)
++{
++ printk(KERN_DEBUG "registering ipv6 ROUTE target\n");
++ if (ip6t_register_target(&ip6t_route_reg))
++ return -EINVAL;
++
++ return 0;
++}
++
++
++static void __exit fini(void)
++{
++ ip6t_unregister_target(&ip6t_route_reg);
++}
++
++module_init(init);
++module_exit(fini);
++MODULE_LICENSE("GPL");
+diff -urN linux-2.6.19.old/net/ipv6/netfilter/Kconfig linux-2.6.19.dev/net/ipv6/netfilter/Kconfig
+--- linux-2.6.19.old/net/ipv6/netfilter/Kconfig 2006-12-14 03:13:49.000000000 +0100
++++ linux-2.6.19.dev/net/ipv6/netfilter/Kconfig 2006-12-14 03:13:49.000000000 +0100
+@@ -162,6 +162,19 @@
+
+ To compile it as a module, choose M here. If unsure, say N.
+
++config IP6_NF_TARGET_ROUTE
++ tristate "ROUTE target support"
++ depends on IP6_NF_MANGLE
++ help
++ This option adds a `ROUTE' target, which enables you to setup unusual
++ routes. The ROUTE target is also able to change the incoming interface
++ of a packet.
++
++ The target can be or not a final target. It has to be used inside the
++ mangle table.
++
++ Not working as a module.
++
+ config IP6_NF_MANGLE
+ tristate "Packet mangling"
+ depends on IP6_NF_IPTABLES
+diff -urN linux-2.6.19.old/net/ipv6/netfilter/Makefile linux-2.6.19.dev/net/ipv6/netfilter/Makefile
+--- linux-2.6.19.old/net/ipv6/netfilter/Makefile 2006-12-14 03:13:49.000000000 +0100
++++ linux-2.6.19.dev/net/ipv6/netfilter/Makefile 2006-12-14 03:13:49.000000000 +0100
+@@ -20,6 +20,7 @@
+ obj-$(CONFIG_IP6_NF_RAW) += ip6table_raw.o
+ obj-$(CONFIG_IP6_NF_MATCH_HL) += ip6t_hl.o
+ obj-$(CONFIG_IP6_NF_TARGET_REJECT) += ip6t_REJECT.o
++obj-$(CONFIG_IP6_NF_TARGET_ROUTE) += ip6t_ROUTE.o
+
+ # objects for l3 independent conntrack
+ nf_conntrack_ipv6-objs := nf_conntrack_l3proto_ipv6.o nf_conntrack_proto_icmpv6.o nf_conntrack_reasm.o
diff --git a/packages/linux/linux-magicbox-2.6.19.2/170-netfilter_chaostables.patch b/packages/linux/linux-magicbox-2.6.19.2/170-netfilter_chaostables.patch
new file mode 100644
index 0000000000..46d48a5d08
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/170-netfilter_chaostables.patch
@@ -0,0 +1,880 @@
+diff -ruN linux-2.6.19.1.orig/include/linux/netfilter/xt_CHAOS.h linux-2.6.19.1/include/linux/netfilter/xt_CHAOS.h
+--- linux-2.6.19.1.orig/include/linux/netfilter/xt_CHAOS.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.1/include/linux/netfilter/xt_CHAOS.h 2007-01-11 13:28:07.656144799 +0100
+@@ -0,0 +1,14 @@
++#ifndef _LINUX_XT_CHAOS_H
++#define _LINUX_XT_CHAOS_H 1
++
++enum xt_chaos_variant {
++ XTCHAOS_NORMAL,
++ XTCHAOS_TARPIT,
++ XTCHAOS_DELUDE,
++};
++
++struct xt_chaos_info {
++ enum xt_chaos_variant variant;
++};
++
++#endif /* _LINUX_XT_CHAOS_H */
+diff -ruN linux-2.6.19.1.orig/include/linux/netfilter/xt_portscan.h linux-2.6.19.1/include/linux/netfilter/xt_portscan.h
+--- linux-2.6.19.1.orig/include/linux/netfilter/xt_portscan.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.1/include/linux/netfilter/xt_portscan.h 2007-01-11 13:28:07.656144799 +0100
+@@ -0,0 +1,8 @@
++#ifndef _LINUX_XT_PORTSCAN_H
++#define _LINUX_XT_PORTSCAN_H 1
++
++struct xt_portscan_info {
++ unsigned int match_stealth, match_syn, match_cn, match_gr;
++};
++
++#endif /* _LINUX_XT_PORTSCAN_H */
+diff -ruN linux-2.6.19.1.orig/net/netfilter/find_match.c linux-2.6.19.1/net/netfilter/find_match.c
+--- linux-2.6.19.1.orig/net/netfilter/find_match.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.1/net/netfilter/find_match.c 2007-01-11 13:28:12.191994379 +0100
+@@ -0,0 +1,37 @@
++/*
++ xt_request_find_match
++ by Jan Engelhardt <jengelh [at] gmx de>, 2006 - 2007
++
++ Based upon linux-2.6.18.5/net/netfilter/x_tables.c:
++ Copyright (C) 2006-2006 Harald Welte <laforge@netfilter.org>
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License version 2 as
++ published by the Free Software Foundation.
++*/
++
++#include <linux/err.h>
++#include <linux/netfilter_arp.h>
++#include <linux/socket.h>
++#include <linux/netfilter/x_tables.h>
++
++/*
++ * Yeah this code is sub-optimal, but the function is missing in
++ * mainline so far. -jengelh
++ */
++static struct xt_match *xt_request_find_match(int af, const char *name,
++ u8 revision)
++{
++ static const char *const xt_prefix[] = {
++ [AF_INET] = "ip",
++ [AF_INET6] = "ip6",
++ [NF_ARP] = "arp",
++ };
++ struct xt_match *match;
++
++ match = try_then_request_module(xt_find_match(af, name, revision),
++ "%st_%s", xt_prefix[af], name);
++ if(IS_ERR(match) || match == NULL)
++ return NULL;
++
++ return match;
++}
+diff -ruN linux-2.6.19.1.orig/net/netfilter/Kconfig linux-2.6.19.1/net/netfilter/Kconfig
+--- linux-2.6.19.1.orig/net/netfilter/Kconfig 2007-01-11 13:27:24.445577700 +0100
++++ linux-2.6.19.1/net/netfilter/Kconfig 2007-01-11 13:28:09.092097179 +0100
+@@ -122,6 +122,14 @@
+
+ # alphabetically ordered list of targets
+
++config NETFILTER_XT_TARGET_CHAOS
++ tristate '"CHAOS" target support'
++ depends on NETFILTER_XTABLES
++ help
++ This option adds a `CHAOS' target.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
+ config NETFILTER_XT_TARGET_CLASSIFY
+ tristate '"CLASSIFY" target support'
+ depends on NETFILTER_XTABLES
+@@ -148,6 +156,14 @@
+ <file:Documentation/modules.txt>. The module will be called
+ ipt_CONNMARK.o. If unsure, say `N'.
+
++config NETFILTER_XT_TARGET_DELUDE
++ tristate '"DELUDE" target support'
++ depends on NETFILTER_XTABLES
++ help
++ This option adds a `DELUDE' target.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
+ config NETFILTER_XT_TARGET_DSCP
+ tristate '"DSCP" target support'
+ depends on NETFILTER_XTABLES
+@@ -355,6 +371,14 @@
+
+ To compile it as a module, choose M here. If unsure, say N.
+
++config NETFILTER_XT_MATCH_PORTSCAN
++ tristate '"portscan" match support'
++ depends on NETFILTER_XTABLES
++ help
++ This option adds a 'portscan' match support.
++
++ To compile it as a module, choose M here. If unsure, say N.
++
+ config NETFILTER_XT_MATCH_MULTIPORT
+ tristate "Multiple port match support"
+ depends on NETFILTER_XTABLES
+diff -ruN linux-2.6.19.1.orig/net/netfilter/Makefile linux-2.6.19.1/net/netfilter/Makefile
+--- linux-2.6.19.1.orig/net/netfilter/Makefile 2007-01-11 13:27:24.445577700 +0100
++++ linux-2.6.19.1/net/netfilter/Makefile 2007-01-11 13:28:07.656144799 +0100
+@@ -23,8 +23,10 @@
+ obj-$(CONFIG_NETFILTER_XTABLES) += x_tables.o xt_tcpudp.o
+
+ # targets
++obj-$(CONFIG_NETFILTER_XT_TARGET_CHAOS) += xt_CHAOS.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIFY) += xt_CLASSIFY.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_CONNMARK) += xt_CONNMARK.o
++obj-$(CONFIG_NETFILTER_XT_TARGET_DELUDE) += xt_DELUDE.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_MARK) += xt_MARK.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_NFQUEUE) += xt_NFQUEUE.o
+@@ -47,6 +49,7 @@
+ obj-$(CONFIG_NETFILTER_XT_MATCH_MARK) += xt_mark.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_MULTIPORT) += xt_multiport.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_POLICY) += xt_policy.o
++obj-$(CONFIG_NETFILTER_XT_MATCH_PORTSCAN) += xt_portscan.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_PKTTYPE) += xt_pkttype.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_QUOTA) += xt_quota.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_REALM) += xt_realm.o
+diff -ruN linux-2.6.19.1.orig/net/netfilter/xt_CHAOS.c linux-2.6.19.1/net/netfilter/xt_CHAOS.c
+--- linux-2.6.19.1.orig/net/netfilter/xt_CHAOS.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.1/net/netfilter/xt_CHAOS.c 2007-01-11 13:28:14.407920893 +0100
+@@ -0,0 +1,180 @@
++/*
++ CHAOS target for netfilter
++
++ Copyright © Jan Engelhardt <jengelh [at] gmx de>, 2006 - 2007
++ released under the terms of the GNU General Public
++ License version 2.x and only versions 2.x.
++*/
++#include <linux/icmp.h>
++#include <linux/in.h>
++#include <linux/ip.h>
++#include <linux/module.h>
++#include <linux/skbuff.h>
++#include <linux/stat.h>
++#include <linux/netfilter/x_tables.h>
++#include <linux/netfilter/xt_tcpudp.h>
++#include <linux/netfilter_ipv4/ipt_REJECT.h>
++#include <net/ip.h>
++#include <linux/netfilter/xt_CHAOS.h>
++#include "find_match.c"
++#define PFX KBUILD_MODNAME ": "
++
++/* Out of tree workarounds */
++#include <linux/version.h>
++#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 18)
++# define HAVE_TARGUSERINFO 1
++#endif
++
++/* Module parameters */
++static unsigned int reject_percentage = ~0U * .01;
++static unsigned int delude_percentage = ~0U * .0101;
++module_param(reject_percentage, uint, S_IRUGO | S_IWUSR);
++module_param(delude_percentage, uint, S_IRUGO | S_IWUSR);
++
++/* References to other matches/targets */
++static struct xt_match *xm_tcp;
++static struct xt_target *xt_delude, *xt_reject, *xt_tarpit;
++
++/* Static data for other matches/targets */
++static const struct ipt_reject_info reject_params = {
++ .with = ICMP_HOST_UNREACH,
++};
++
++static const struct xt_tcp tcp_params = {
++ .spts = {0, ~0},
++ .dpts = {0, ~0},
++};
++
++/* CHAOS functions */
++static void xt_chaos_total(const struct xt_chaos_info *info,
++ struct sk_buff **pskb, const struct net_device *in,
++ const struct net_device *out, unsigned int hooknum)
++{
++ const int protoff = 4 * (*pskb)->nh.iph->ihl;
++ const int offset = ntohs((*pskb)->nh.iph->frag_off) & IP_OFFSET;
++ const struct xt_target *destiny;
++ int hotdrop = 0, ret;
++
++ ret = xm_tcp->match(*pskb, in, out, xm_tcp, &tcp_params,
++ offset, protoff, &hotdrop);
++ if(!ret || hotdrop || (unsigned int)net_random() > delude_percentage)
++ return;
++
++ destiny = (info->variant == XTCHAOS_TARPIT) ? xt_tarpit : xt_delude;
++#ifdef HAVE_TARGUSERINFO
++ destiny->target(pskb, in, out, hooknum, destiny, NULL, NULL);
++#else
++ destiny->target(pskb, in, out, hooknum, destiny, NULL);
++#endif
++ return;
++}
++
++static unsigned int xt_chaos_target(struct sk_buff **pskb,
++ const struct net_device *in, const struct net_device *out,
++ unsigned int hooknum, const struct xt_target *target, const void *targinfo
++#ifdef HAVE_TARGUSERINFO
++ ,
++ void *userinfo
++#endif
++ )
++{
++ /* Equivalent to:
++ * -A chaos -m statistic --mode random --probability \
++ * $reject_percentage -j REJECT --reject-with host-unreach;
++ * -A chaos -m statistic --mode random --probability \
++ * $delude_percentage -j DELUDE;
++ * -A chaos -j DROP;
++ */
++ const struct xt_chaos_info *info = targinfo;
++
++ if((unsigned int)net_random() <= reject_percentage)
++#ifdef HAVE_TARGUSERINFO
++ return xt_reject->target(pskb, in, out, hooknum, target,
++ &reject_params, userinfo);
++#else
++ return xt_reject->target(pskb, in, out, hooknum, target,
++ &reject_params);
++#endif
++
++ /* TARPIT/DELUDE may not be called from the OUTPUT chain */
++ if((*pskb)->nh.iph->protocol == IPPROTO_TCP &&
++ info->variant != XTCHAOS_NORMAL && hooknum != NF_IP_LOCAL_OUT)
++ xt_chaos_total(info, pskb, in, out, hooknum);
++
++ return NF_DROP;
++}
++
++static struct xt_target xt_chaos_info = {
++ .name = "CHAOS",
++ .target = xt_chaos_target,
++ .table = "filter",
++ .targetsize = sizeof(struct xt_chaos_info),
++ .hooks = (1 << NF_IP_LOCAL_IN) | (1 << NF_IP_FORWARD) |
++ (1 << NF_IP_LOCAL_OUT),
++ .family = AF_INET,
++ .me = THIS_MODULE,
++};
++
++static int __init xt_chaos_init(void)
++{
++ int ret = -EINVAL;
++
++ xm_tcp = xt_request_find_match(AF_INET, "tcp", 0);
++ if(xm_tcp == NULL) {
++ printk(KERN_WARNING PFX "Could not find \"tcp\" match\n");
++ return -EINVAL;
++ }
++
++ xt_reject = xt_request_find_target(AF_INET, "REJECT", 0);
++ if(xt_reject == NULL) {
++ printk(KERN_WARNING PFX "Could not find \"REJECT\" target\n");
++ goto out2;
++ }
++
++ xt_tarpit = xt_request_find_target(AF_INET, "TARPIT", 0);
++ if(xt_tarpit == NULL) {
++ printk(KERN_WARNING PFX "Could not find \"TARPIT\" target\n");
++ goto out3;
++ }
++
++ xt_delude = xt_request_find_target(AF_INET, "DELUDE", 0);
++ if(xt_delude == NULL) {
++ printk(KERN_WARNING PFX "Could not find \"DELUDE\" target\n");
++ goto out4;
++ }
++
++ if((ret = xt_register_target(&xt_chaos_info)) != 0) {
++ printk(KERN_WARNING PFX "xt_register_target returned "
++ "error %d\n", ret);
++ goto out5;
++ }
++
++ return 0;
++
++ out5:
++ module_put(xt_delude->me);
++ out4:
++ module_put(xt_tarpit->me);
++ out3:
++ module_put(xt_reject->me);
++ out2:
++ module_put(xm_tcp->me);
++ return ret;
++}
++
++static void __exit xt_chaos_exit(void)
++{
++ xt_unregister_target(&xt_chaos_info);
++ module_put(xm_tcp->me);
++ module_put(xt_reject->me);
++ module_put(xt_delude->me);
++ module_put(xt_tarpit->me);
++ return;
++}
++
++module_init(xt_chaos_init);
++module_exit(xt_chaos_exit);
++MODULE_AUTHOR("Jan Engelhardt <jengelh@gmx.de>");
++MODULE_DESCRIPTION("netfilter CHAOS target");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS("ipt_CHAOS");
+diff -ruN linux-2.6.19.1.orig/net/netfilter/xt_DELUDE.c linux-2.6.19.1/net/netfilter/xt_DELUDE.c
+--- linux-2.6.19.1.orig/net/netfilter/xt_DELUDE.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.1/net/netfilter/xt_DELUDE.c 2007-01-11 13:28:07.656144799 +0100
+@@ -0,0 +1,265 @@
++/*
++ DELUDE target
++ Copyright © Jan Engelhardt <jengelh [at] gmx de>, 2007
++
++ Based upon linux-2.6.18.5/net/ipv4/netfilter/ipt_REJECT.c:
++ (C) 1999-2001 Paul `Rusty' Russell
++ (C) 2002-2004 Netfilter Core Team <coreteam@netfilter.org>
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License version 2 as
++ published by the Free Software Foundation.
++*/
++
++#include <linux/module.h>
++#include <linux/skbuff.h>
++#include <linux/ip.h>
++#include <linux/tcp.h>
++#include <linux/udp.h>
++#include <linux/icmp.h>
++#include <net/icmp.h>
++#include <net/ip.h>
++#include <net/tcp.h>
++#include <net/route.h>
++#include <net/dst.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++#ifdef CONFIG_BRIDGE_NETFILTER
++#include <linux/netfilter_bridge.h>
++#endif
++#define PFX KBUILD_MODNAME ": "
++
++/* Out of tree workarounds */
++#include <linux/version.h>
++#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 18)
++# define HAVE_TARGINFOSIZE 1
++# define HAVE_TARGUSERINFO 1
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20)
++# define nfmark mark
++#endif
++
++static inline struct rtable *route_reverse(struct sk_buff *skb,
++ struct tcphdr *tcph, int hook)
++{
++ struct iphdr *iph = skb->nh.iph;
++ struct dst_entry *odst;
++ struct flowi fl = {};
++ struct rtable *rt;
++
++ /* We don't require ip forwarding to be enabled to be able to
++ * send a RST reply for bridged traffic. */
++ if (hook != NF_IP_FORWARD
++#ifdef CONFIG_BRIDGE_NETFILTER
++ || (skb->nf_bridge && skb->nf_bridge->mask & BRNF_BRIDGED)
++#endif
++ ) {
++ fl.nl_u.ip4_u.daddr = iph->saddr;
++ if (hook == NF_IP_LOCAL_IN)
++ fl.nl_u.ip4_u.saddr = iph->daddr;
++ fl.nl_u.ip4_u.tos = RT_TOS(iph->tos);
++
++ if (ip_route_output_key(&rt, &fl) != 0)
++ return NULL;
++ } else {
++ /* non-local src, find valid iif to satisfy
++ * rp-filter when calling ip_route_input. */
++ fl.nl_u.ip4_u.daddr = iph->daddr;
++ if (ip_route_output_key(&rt, &fl) != 0)
++ return NULL;
++
++ odst = skb->dst;
++ if (ip_route_input(skb, iph->saddr, iph->daddr,
++ RT_TOS(iph->tos), rt->u.dst.dev) != 0) {
++ dst_release(&rt->u.dst);
++ return NULL;
++ }
++ dst_release(&rt->u.dst);
++ rt = (struct rtable *)skb->dst;
++ skb->dst = odst;
++
++ fl.nl_u.ip4_u.daddr = iph->saddr;
++ fl.nl_u.ip4_u.saddr = iph->daddr;
++ fl.nl_u.ip4_u.tos = RT_TOS(iph->tos);
++ }
++
++ if (rt->u.dst.error) {
++ dst_release(&rt->u.dst);
++ return NULL;
++ }
++
++ fl.proto = IPPROTO_TCP;
++ fl.fl_ip_sport = tcph->dest;
++ fl.fl_ip_dport = tcph->source;
++
++ xfrm_lookup((struct dst_entry **)&rt, &fl, NULL, 0);
++
++ return rt;
++}
++
++static void send_reset(struct sk_buff *oldskb, int hook)
++{
++ struct sk_buff *nskb;
++ struct iphdr *iph = oldskb->nh.iph;
++ struct tcphdr _otcph, *oth, *tcph;
++ struct rtable *rt;
++ u_int16_t tmp_port;
++ u_int32_t tmp_addr;
++ int hh_len;
++
++ /* IP header checks: fragment. */
++ if (oldskb->nh.iph->frag_off & htons(IP_OFFSET))
++ return;
++
++ oth = skb_header_pointer(oldskb, oldskb->nh.iph->ihl * 4,
++ sizeof(_otcph), &_otcph);
++ if (oth == NULL)
++ return;
++
++ /* DELUDE only answers SYN. */
++ if(!oth->syn || oth->ack || oth->fin || oth->rst)
++ return;
++
++ /* Check checksum */
++ if (nf_ip_checksum(oldskb, hook, iph->ihl * 4, IPPROTO_TCP))
++ return;
++
++ if ((rt = route_reverse(oldskb, oth, hook)) == NULL)
++ return;
++
++ hh_len = LL_RESERVED_SPACE(rt->u.dst.dev);
++
++ /* We need a linear, writeable skb. We also need to expand
++ headroom in case hh_len of incoming interface < hh_len of
++ outgoing interface */
++ nskb = skb_copy_expand(oldskb, hh_len, skb_tailroom(oldskb),
++ GFP_ATOMIC);
++ if (!nskb) {
++ dst_release(&rt->u.dst);
++ return;
++ }
++
++ dst_release(nskb->dst);
++ nskb->dst = &rt->u.dst;
++
++ /* This packet will not be the same as the other: clear nf fields */
++ nf_reset(nskb);
++ nskb->nfmark = 0;
++ skb_init_secmark(nskb);
++
++ tcph = (struct tcphdr *)((u_int32_t*)nskb->nh.iph + nskb->nh.iph->ihl);
++
++ /* Swap source and dest */
++ tmp_addr = nskb->nh.iph->saddr;
++ nskb->nh.iph->saddr = nskb->nh.iph->daddr;
++ nskb->nh.iph->daddr = tmp_addr;
++ tmp_port = tcph->source;
++ tcph->source = tcph->dest;
++ tcph->dest = tmp_port;
++
++ /* Truncate to length (no data) */
++ tcph->doff = sizeof(struct tcphdr)/4;
++ skb_trim(nskb, nskb->nh.iph->ihl*4 + sizeof(struct tcphdr));
++ nskb->nh.iph->tot_len = htons(nskb->len);
++
++ tcph->seq = oth->ack_seq;
++ tcph->ack_seq = 0;
++
++ /* Reset flags */
++ ((u_int8_t *)tcph)[13] = 0;
++ tcph->syn = tcph->ack = 1;
++
++ tcph->window = 0;
++ tcph->urg_ptr = 0;
++
++ /* Adjust TCP checksum */
++ tcph->check = 0;
++ tcph->check = tcp_v4_check(tcph, sizeof(struct tcphdr),
++ nskb->nh.iph->saddr,
++ nskb->nh.iph->daddr,
++ csum_partial((char *)tcph,
++ sizeof(struct tcphdr), 0));
++
++ /* Adjust IP TTL, DF */
++ nskb->nh.iph->ttl = dst_metric(nskb->dst, RTAX_HOPLIMIT);
++ /* Set DF, id = 0 */
++ nskb->nh.iph->frag_off = htons(IP_DF);
++ nskb->nh.iph->id = 0;
++
++ /* Adjust IP checksum */
++ nskb->nh.iph->check = 0;
++ nskb->nh.iph->check = ip_fast_csum((unsigned char *)nskb->nh.iph,
++ nskb->nh.iph->ihl);
++
++ /* "Never happens" */
++ if (nskb->len > dst_mtu(nskb->dst))
++ goto free_nskb;
++
++ nf_ct_attach(nskb, oldskb);
++
++ NF_HOOK(PF_INET, NF_IP_LOCAL_OUT, nskb, NULL, nskb->dst->dev,
++ dst_output);
++ return;
++
++ free_nskb:
++ kfree_skb(nskb);
++ return;
++}
++
++static unsigned int xt_delude_target(struct sk_buff **pskb,
++ const struct net_device *in, const struct net_device *out,
++ unsigned int hooknum, const struct xt_target *target, const void *targinfo
++#ifdef HAVE_TARGUSERINFO
++ ,
++ void *userinfo
++#endif
++ )
++{
++ /* WARNING: This code causes reentry within iptables.
++ This means that the iptables jump stack is now crap. We
++ must return an absolute verdict. --RR */
++ send_reset(*pskb, hooknum);
++ return NF_DROP;
++}
++
++static int xt_delude_check(const char *tablename, const void *e_void,
++ const struct xt_target *target, void *targinfo,
++#ifdef HAVE_TARGINFOSIZE
++ unsigned int targinfosize,
++#endif
++ unsigned int hook_mask)
++{
++ if(hook_mask & ~((1 << NF_IP_LOCAL_IN) | (1 << NF_IP_FORWARD))) {
++ printk(KERN_WARNING PFX "DELUDE may not be used in chains "
++ "other than INPUT and FORWARD\n");
++ return 0;
++ }
++ return 1;
++}
++
++static struct xt_target xt_delude_info = {
++ .name = "DELUDE",
++ .target = xt_delude_target,
++ .checkentry = xt_delude_check,
++ .table = "filter",
++ .hooks = (1 << NF_IP_LOCAL_IN) | (1 << NF_IP_FORWARD) |
++ (1 << NF_IP_LOCAL_OUT),
++ .proto = IPPROTO_TCP,
++ .family = AF_INET,
++ .me = THIS_MODULE,
++};
++
++static int __init xt_delude_init(void)
++{
++ return xt_register_target(&xt_delude_info);
++}
++
++static void __exit xt_delude_exit(void)
++{
++ xt_unregister_target(&xt_delude_info);
++}
++
++module_init(xt_delude_init);
++module_exit(xt_delude_exit);
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Jan Engelhardt <jengelh@gmx.de>");
++MODULE_DESCRIPTION("netfilter DELUDE target");
+diff -ruN linux-2.6.19.1.orig/net/netfilter/xt_portscan.c linux-2.6.19.1/net/netfilter/xt_portscan.c
+--- linux-2.6.19.1.orig/net/netfilter/xt_portscan.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.1/net/netfilter/xt_portscan.c 2007-01-11 13:28:14.407920893 +0100
+@@ -0,0 +1,282 @@
++/*
++ portscan match for netfilter
++
++ Written by Jan Engelhardt, 2006 - 2007
++ released under the terms of the GNU General Public
++ License version 2.x and only versions 2.x.
++*/
++#include <linux/in.h>
++#include <linux/ip.h>
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/skbuff.h>
++#include <linux/stat.h>
++#include <linux/tcp.h>
++#include <linux/types.h>
++#include <linux/version.h>
++#include <linux/netfilter/x_tables.h>
++#include <linux/netfilter/xt_tcpudp.h>
++#if defined(CONFIG_IP_NF_CONNTRACK) || defined(CONFIG_IP_NF_CONNTRACK_MODULE)
++# include <linux/netfilter_ipv4/ip_conntrack.h>
++#else /* linux-2.6.20+ */
++# include <net/netfilter/nf_nat_rule.h>
++#endif
++#include <linux/netfilter/xt_portscan.h>
++#define PFX KBUILD_MODNAME ": "
++
++/* Out of tree workarounds */
++#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 18)
++# define HAVE_MATCHINFOSIZE 1
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20)
++# define nfmark mark
++#endif
++
++enum {
++ TCP_FLAGS_ALL3 = TCP_FLAG_FIN | TCP_FLAG_RST | TCP_FLAG_SYN,
++ TCP_FLAGS_ALL4 = TCP_FLAGS_ALL3 | TCP_FLAG_ACK,
++ TCP_FLAGS_ALL6 = TCP_FLAGS_ALL4 | TCP_FLAG_PSH | TCP_FLAG_URG,
++};
++
++/* Module parameters */
++static unsigned int
++ connmark_mask = ~0,
++ packet_mask = ~0,
++ mark_seen = 0x9,
++ mark_synrcv = 0x1,
++ mark_closed = 0x2,
++ mark_synscan = 0x3,
++ mark_estab1 = 0x4,
++ mark_estab2 = 0x5,
++ mark_cnscan = 0x6,
++ mark_grscan = 0x7,
++ mark_valid = 0x8;
++
++module_param(connmark_mask, uint, S_IRUGO | S_IWUSR);
++module_param(packet_mask, uint, S_IRUGO | S_IWUSR);
++module_param(mark_seen, uint, S_IRUGO | S_IWUSR);
++module_param(mark_synrcv, uint, S_IRUGO | S_IWUSR);
++module_param(mark_closed, uint, S_IRUGO | S_IWUSR);
++module_param(mark_synscan, uint, S_IRUGO | S_IWUSR);
++module_param(mark_estab1, uint, S_IRUGO | S_IWUSR);
++module_param(mark_estab2, uint, S_IRUGO | S_IWUSR);
++module_param(mark_cnscan, uint, S_IRUGO | S_IWUSR);
++module_param(mark_grscan, uint, S_IRUGO | S_IWUSR);
++module_param(mark_valid, uint, S_IRUGO | S_IWUSR);
++MODULE_PARM_DESC(connmark_mask, "only set specified bits in connection mark");
++MODULE_PARM_DESC(packet_mask, "only set specified bits in packet mark");
++MODULE_PARM_DESC(mark_seen, "nfmark value for packet-seen state");
++MODULE_PARM_DESC(mark_synrcv, "connmark value for SYN Received state");
++MODULE_PARM_DESC(mark_closed, "connmark value for closed state");
++MODULE_PARM_DESC(mark_synscan, "connmark value for SYN Scan state");
++MODULE_PARM_DESC(mark_estab1, "connmark value for Established-1 state");
++MODULE_PARM_DESC(mark_estab2, "connmark value for Established-2 state");
++MODULE_PARM_DESC(mark_cnscan, "connmark value for Connect Scan state");
++MODULE_PARM_DESC(mark_grscan, "connmark value for Grab Scan state");
++MODULE_PARM_DESC(mark_valid, "connmark value for Valid state");
++
++/* TCP flag functions */
++static inline int tflg_ack4(const struct tcphdr *th)
++{
++ return (tcp_flag_word(th) & TCP_FLAGS_ALL4) == TCP_FLAG_ACK;
++}
++
++static inline int tflg_ack6(const struct tcphdr *th)
++{
++ return (tcp_flag_word(th) & TCP_FLAGS_ALL6) == TCP_FLAG_ACK;
++}
++
++static inline int tflg_fin(const struct tcphdr *th)
++{
++ return (tcp_flag_word(th) & TCP_FLAGS_ALL3) == TCP_FLAG_FIN;
++}
++
++static inline int tflg_rst(const struct tcphdr *th)
++{
++ return (tcp_flag_word(th) & TCP_FLAGS_ALL3) == TCP_FLAG_RST;
++}
++
++static inline int tflg_rstack(const struct tcphdr *th)
++{
++ return (tcp_flag_word(th) & TCP_FLAGS_ALL4) ==
++ (TCP_FLAG_ACK | TCP_FLAG_RST);
++}
++
++static inline int tflg_syn(const struct tcphdr *th)
++{
++ return (tcp_flag_word(th) & TCP_FLAGS_ALL4) == TCP_FLAG_SYN;
++}
++
++static inline int tflg_synack(const struct tcphdr *th)
++{
++ return (tcp_flag_word(th) & TCP_FLAGS_ALL4) ==
++ (TCP_FLAG_SYN | TCP_FLAG_ACK);
++}
++
++/* portscan functions */
++static inline int xt_portscan_stealth(const struct tcphdr *th)
++{
++ /*
++ * "Connection refused" replies to our own probes must not be matched.
++ */
++ if(tflg_rstack(th))
++ return 0;
++
++ if(tflg_rst(th) && printk_ratelimit()) {
++ printk(KERN_WARNING PFX "Warning: Pure RST received\n");
++ return 0;
++ }
++
++ /*
++ * -p tcp ! --syn -m conntrack --ctstate INVALID: Looking for non-start
++ * packets that are not associated with any connection -- this will
++ * match most scan types (NULL, XMAS, FIN) and ridiculous flag
++ * combinations (SYN-RST, SYN-FIN, SYN-FIN-RST, FIN-RST, etc.).
++ */
++ return !tflg_syn(th);
++}
++
++static inline int xt_portscan_full(int mark, enum ip_conntrack_info ctstate,
++ int loopback, const struct tcphdr *tcph, int payload_len)
++{
++ if(mark == mark_estab2) {
++ /*
++ * -m connmark --mark $ESTAB2
++ */
++ if(tflg_ack4(tcph) && payload_len == 0)
++ return mark; /* keep mark */
++ else if(tflg_rst(tcph) || tflg_fin(tcph))
++ return mark_grscan;
++ else
++ return mark_valid;
++ } else if(mark == mark_estab1) {
++ /*
++ * -m connmark --mark $ESTAB1
++ */
++ if(tflg_rst(tcph) || tflg_fin(tcph))
++ return mark_cnscan;
++ else if(!loopback && tflg_ack4(tcph) && payload_len == 0)
++ return mark_estab2;
++ else
++ return mark_valid;
++ } else if(mark == mark_synrcv) {
++ /*
++ * -m connmark --mark $SYN
++ */
++ if(loopback && tflg_synack(tcph))
++ return mark; /* keep mark */
++ else if(loopback && tflg_rstack(tcph))
++ return mark_closed;
++ else if(tflg_ack6(tcph))
++ return mark_estab1;
++ else
++ return mark_synscan;
++ } else if(ctstate == IP_CT_NEW && tflg_syn(tcph)) {
++ /*
++ * -p tcp --syn --ctstate NEW
++ */
++ return mark_synrcv;
++ }
++ return mark;
++}
++
++static int xt_portscan_match(const struct sk_buff *skb,
++ const struct net_device *in, const struct net_device *out,
++ const struct xt_match *match, const void *matchinfo, int offset,
++ unsigned int protoff, int *hotdrop)
++{
++ const struct xt_portscan_info *info = matchinfo;
++ enum ip_conntrack_info ctstate;
++ struct ip_conntrack *ctdata;
++ const struct tcphdr *tcph;
++ struct tcphdr tcph_buf;
++
++ tcph = skb_header_pointer(skb, protoff, sizeof(tcph_buf), &tcph_buf);
++ if(tcph == NULL)
++ return 0;
++
++ /* Check for invalid packets: -m conntrack --ctstate INVALID */
++ if((ctdata = ip_conntrack_get(skb, &ctstate)) == NULL) {
++ if(info->match_stealth)
++ return xt_portscan_stealth(tcph);
++ /*
++ * If @ctdata is NULL, we cannot match the other scan
++ * types, return.
++ */
++ return 0;
++ }
++
++ /*
++ * If -m portscan was previously applied to this packet, the rules we
++ * simulate must not be run through again. And for speedup, do not call
++ * it either when the connection is already VALID.
++ */
++ if((ctdata->mark & connmark_mask) == mark_valid ||
++ (skb->nfmark & packet_mask) != mark_seen)
++ {
++ unsigned int n;
++ n = xt_portscan_full(ctdata->mark & connmark_mask, ctstate,
++ in == &loopback_dev, tcph,
++ skb->len - protoff - 4 * tcph->doff);
++
++ ctdata->mark = (ctdata->mark & ~connmark_mask) | n;
++ ((struct sk_buff *)skb)->nfmark =
++ (skb->nfmark & ~packet_mask) | mark_seen;
++ }
++
++ return (info->match_syn && ctdata->mark == mark_synscan) ||
++ (info->match_cn && ctdata->mark == mark_cnscan) ||
++ (info->match_gr && ctdata->mark == mark_grscan);
++}
++
++static int xt_portscan_checkentry(const char *tablename, const void *entry,
++ const struct xt_match *match, void *matchinfo,
++#ifdef HAVE_MATCHINFOSIZE
++ unsigned int matchinfosize,
++#endif
++ unsigned int hook_mask)
++{
++ const struct xt_portscan_info *info = matchinfo;
++#ifdef HAVE_MATCHINFOSIZE
++ if(matchinfosize != XT_ALIGN(sizeof(struct xt_portscan_info))) {
++ printk(KERN_WARNING PFX "matchinfosize %u != %Zu\n",
++ matchinfosize,
++ XT_ALIGN(sizeof(struct xt_portscan_info)));
++ return 0;
++ }
++#endif
++ if((info->match_stealth & ~1) || (info->match_syn & ~1) ||
++ (info->match_cn & ~1) || (info->match_gr & ~1)) {
++ printk(KERN_WARNING PFX "Invalid flags\n");
++ return 0;
++ }
++ return 1;
++}
++
++static struct xt_match xt_portscan = {
++ .name = "portscan",
++ .match = xt_portscan_match,
++ .checkentry = xt_portscan_checkentry,
++ .matchsize = sizeof(struct xt_portscan_info),
++ .proto = IPPROTO_TCP,
++ .family = AF_INET,
++ .me = THIS_MODULE,
++};
++
++static int __init xt_portscan_init(void)
++{
++ return xt_register_match(&xt_portscan);
++}
++
++static void __exit xt_portscan_exit(void)
++{
++ xt_unregister_match(&xt_portscan);
++ return;
++}
++
++module_init(xt_portscan_init);
++module_exit(xt_portscan_exit);
++MODULE_AUTHOR("Jan Engelhardt <jengelh@gmx.de>");
++MODULE_DESCRIPTION("netfilter portscan match module");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS("ipt_portscan");
diff --git a/packages/linux/linux-magicbox-2.6.19.2/200-sched_esfq.patch b/packages/linux/linux-magicbox-2.6.19.2/200-sched_esfq.patch
new file mode 100644
index 0000000000..6830b833ad
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/200-sched_esfq.patch
@@ -0,0 +1,730 @@
+diff -urN linux-2.6.19.old/include/linux/pkt_sched.h linux-2.6.19.dev/include/linux/pkt_sched.h
+--- linux-2.6.19.old/include/linux/pkt_sched.h 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/include/linux/pkt_sched.h 2006-12-14 03:13:51.000000000 +0100
+@@ -146,8 +146,35 @@
+ *
+ * The only reason for this is efficiency, it is possible
+ * to change these parameters in compile time.
++ *
++ * If you need to play with these values use esfq instead.
+ */
+
++/* ESFQ section */
++
++enum
++{
++ /* traditional */
++ TCA_SFQ_HASH_CLASSIC,
++ TCA_SFQ_HASH_DST,
++ TCA_SFQ_HASH_SRC,
++ TCA_SFQ_HASH_FWMARK,
++ /* direct */
++ TCA_SFQ_HASH_DSTDIR,
++ TCA_SFQ_HASH_SRCDIR,
++ TCA_SFQ_HASH_FWMARKDIR,
++};
++
++struct tc_esfq_qopt
++{
++ unsigned quantum; /* Bytes per round allocated to flow */
++ int perturb_period; /* Period of hash perturbation */
++ __u32 limit; /* Maximal packets in queue */
++ unsigned divisor; /* Hash divisor */
++ unsigned flows; /* Maximal number of flows */
++ unsigned hash_kind; /* Hash function to use for flow identification */
++};
++
+ /* RED section */
+
+ enum
+diff -urN linux-2.6.19.old/net/sched/Kconfig linux-2.6.19.dev/net/sched/Kconfig
+--- linux-2.6.19.old/net/sched/Kconfig 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/sched/Kconfig 2006-12-14 03:13:51.000000000 +0100
+@@ -185,6 +185,28 @@
+ To compile this code as a module, choose M here: the
+ module will be called sch_sfq.
+
++config NET_SCH_ESFQ
++ tristate "ESFQ queue"
++ depends on NET_SCHED
++ ---help---
++ Say Y here if you want to use the Enhanced Stochastic Fairness
++ Queueing (ESFQ) packet scheduling algorithm for some of your network
++ devices or as a leaf discipline for a classful qdisc such as HTB or
++ CBQ (see the top of <file:net/sched/sch_esfq.c> for details and
++ references to the SFQ algorithm).
++
++ This is an enchanced SFQ version which allows you to control some
++ hardcoded values in the SFQ scheduler: queue depth, hash table size,
++ and queues limit.
++
++ ESFQ also adds control to the hash function used to identify packet
++ flows. The original SFQ hashes by individual flow (TCP session or UDP
++ stream); ESFQ can hash by src or dst IP as well, which can be more
++ fair to users in some networking situations.
++
++ To compile this code as a module, choose M here: the
++ module will be called sch_esfq.
++
+ config NET_SCH_TEQL
+ tristate "True Link Equalizer (TEQL)"
+ ---help---
+diff -urN linux-2.6.19.old/net/sched/Makefile linux-2.6.19.dev/net/sched/Makefile
+--- linux-2.6.19.old/net/sched/Makefile 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/sched/Makefile 2006-12-14 03:13:51.000000000 +0100
+@@ -23,6 +23,7 @@
+ obj-$(CONFIG_NET_SCH_INGRESS) += sch_ingress.o
+ obj-$(CONFIG_NET_SCH_DSMARK) += sch_dsmark.o
+ obj-$(CONFIG_NET_SCH_SFQ) += sch_sfq.o
++obj-$(CONFIG_NET_SCH_ESFQ) += sch_esfq.o
+ obj-$(CONFIG_NET_SCH_TBF) += sch_tbf.o
+ obj-$(CONFIG_NET_SCH_TEQL) += sch_teql.o
+ obj-$(CONFIG_NET_SCH_PRIO) += sch_prio.o
+diff -urN linux-2.6.19.old/net/sched/sch_esfq.c linux-2.6.19.dev/net/sched/sch_esfq.c
+--- linux-2.6.19.old/net/sched/sch_esfq.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/net/sched/sch_esfq.c 2006-12-14 03:13:51.000000000 +0100
+@@ -0,0 +1,644 @@
++/*
++ * net/sched/sch_esfq.c Extended Stochastic Fairness Queueing discipline.
++ *
++ * 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.
++ *
++ * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
++ *
++ * Changes: Alexander Atanasov, <alex@ssi.bg>
++ * Added dynamic depth,limit,divisor,hash_kind options.
++ * Added dst and src hashes.
++ *
++ * Alexander Clouter, <alex@digriz.org.uk>
++ * Ported ESFQ to Linux 2.6.
++ *
++ * Corey Hickey, <bugfood-c@fatooh.org>
++ * Maintenance of the Linux 2.6 port.
++ * Added fwmark hash (thanks to Robert Kurjata)
++ * Added direct hashing for src, dst, and fwmark.
++ *
++ */
++
++#include <linux/autoconf.h>
++#include <linux/module.h>
++#include <asm/uaccess.h>
++#include <asm/system.h>
++#include <linux/bitops.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <linux/jiffies.h>
++#include <linux/string.h>
++#include <linux/mm.h>
++#include <linux/socket.h>
++#include <linux/sockios.h>
++#include <linux/in.h>
++#include <linux/errno.h>
++#include <linux/interrupt.h>
++#include <linux/if_ether.h>
++#include <linux/inet.h>
++#include <linux/netdevice.h>
++#include <linux/etherdevice.h>
++#include <linux/notifier.h>
++#include <linux/init.h>
++#include <net/ip.h>
++#include <linux/ipv6.h>
++#include <net/route.h>
++#include <linux/skbuff.h>
++#include <net/sock.h>
++#include <net/pkt_sched.h>
++
++
++/* Stochastic Fairness Queuing algorithm.
++ For more comments look at sch_sfq.c.
++ The difference is that you can change limit, depth,
++ hash table size and choose 7 hash types.
++
++ classic: same as in sch_sfq.c
++ dst: destination IP address
++ src: source IP address
++ fwmark: netfilter mark value
++ dst_direct:
++ src_direct:
++ fwmark_direct: direct hashing of the above sources
++
++ TODO:
++ make sfq_change work.
++*/
++
++
++/* This type should contain at least SFQ_DEPTH*2 values */
++typedef unsigned int esfq_index;
++
++struct esfq_head
++{
++ esfq_index next;
++ esfq_index prev;
++};
++
++struct esfq_sched_data
++{
++/* Parameters */
++ int perturb_period;
++ unsigned quantum; /* Allotment per round: MUST BE >= MTU */
++ int limit;
++ unsigned depth;
++ unsigned hash_divisor;
++ unsigned hash_kind;
++/* Variables */
++ struct timer_list perturb_timer;
++ int perturbation;
++ esfq_index tail; /* Index of current slot in round */
++ esfq_index max_depth; /* Maximal depth */
++
++ esfq_index *ht; /* Hash table */
++ esfq_index *next; /* Active slots link */
++ short *allot; /* Current allotment per slot */
++ unsigned short *hash; /* Hash value indexed by slots */
++ struct sk_buff_head *qs; /* Slot queue */
++ struct esfq_head *dep; /* Linked list of slots, indexed by depth */
++ unsigned dyn_min; /* For dynamic divisor adjustment; minimum value seen */
++ unsigned dyn_max; /* maximum value seen */
++ unsigned dyn_range; /* saved range */
++};
++
++static __inline__ unsigned esfq_hash_u32(struct esfq_sched_data *q,u32 h)
++{
++ int pert = q->perturbation;
++
++ if (pert)
++ h = (h<<pert) ^ (h>>(0x1F - pert));
++
++ h = ntohl(h) * 2654435761UL;
++ return h & (q->hash_divisor-1);
++}
++
++/* Hash input values directly into the "nearest" slot, taking into account the
++ * range of input values seen. This is most useful when the hash table is at
++ * least as large as the range of possible values. */
++static __inline__ unsigned esfq_hash_direct(struct esfq_sched_data *q, u32 h)
++{
++ /* adjust minimum and maximum */
++ if (h < q->dyn_min || h > q->dyn_max) {
++ q->dyn_min = h < q->dyn_min ? h : q->dyn_min;
++ q->dyn_max = h > q->dyn_max ? h : q->dyn_max;
++
++ /* find new range */
++ if ((q->dyn_range = q->dyn_max - q->dyn_min) >= q->hash_divisor)
++ printk(KERN_WARNING "ESFQ: (direct hash) Input range %u is larger than hash "
++ "table. See ESFQ README for details.\n", q->dyn_range);
++ }
++
++ /* hash input values into slot numbers */
++ if (q->dyn_min == q->dyn_max)
++ return 0; /* only one value seen; avoid division by 0 */
++ else
++ return (h - q->dyn_min) * (q->hash_divisor - 1) / q->dyn_range;
++}
++
++static __inline__ unsigned esfq_fold_hash_classic(struct esfq_sched_data *q, u32 h, u32 h1)
++{
++ int pert = q->perturbation;
++
++ /* Have we any rotation primitives? If not, WHY? */
++ h ^= (h1<<pert) ^ (h1>>(0x1F - pert));
++ h ^= h>>10;
++ return h & (q->hash_divisor-1);
++}
++
++static unsigned esfq_hash(struct esfq_sched_data *q, struct sk_buff *skb)
++{
++ u32 h, h2;
++ u32 hs;
++ u32 nfm;
++
++ switch (skb->protocol) {
++ case __constant_htons(ETH_P_IP):
++ {
++ struct iphdr *iph = skb->nh.iph;
++ h = iph->daddr;
++ hs = iph->saddr;
++ nfm = skb->nfmark;
++ h2 = hs^iph->protocol;
++ if (!(iph->frag_off&htons(IP_MF|IP_OFFSET)) &&
++ (iph->protocol == IPPROTO_TCP ||
++ iph->protocol == IPPROTO_UDP ||
++ iph->protocol == IPPROTO_SCTP ||
++ iph->protocol == IPPROTO_DCCP ||
++ iph->protocol == IPPROTO_ESP))
++ h2 ^= *(((u32*)iph) + iph->ihl);
++ break;
++ }
++ case __constant_htons(ETH_P_IPV6):
++ {
++ struct ipv6hdr *iph = skb->nh.ipv6h;
++ h = iph->daddr.s6_addr32[3];
++ hs = iph->saddr.s6_addr32[3];
++ nfm = skb->nfmark;
++ h2 = hs^iph->nexthdr;
++ if (iph->nexthdr == IPPROTO_TCP ||
++ iph->nexthdr == IPPROTO_UDP ||
++ iph->nexthdr == IPPROTO_SCTP ||
++ iph->nexthdr == IPPROTO_DCCP ||
++ iph->nexthdr == IPPROTO_ESP)
++ h2 ^= *(u32*)&iph[1];
++ break;
++ }
++ default:
++ h = (u32)(unsigned long)skb->dst;
++ hs = (u32)(unsigned long)skb->sk;
++ nfm = skb->nfmark;
++ h2 = hs^skb->protocol;
++ }
++ switch(q->hash_kind)
++ {
++ case TCA_SFQ_HASH_CLASSIC:
++ return esfq_fold_hash_classic(q, h, h2);
++ case TCA_SFQ_HASH_DST:
++ return esfq_hash_u32(q,h);
++ case TCA_SFQ_HASH_DSTDIR:
++ return esfq_hash_direct(q, ntohl(h));
++ case TCA_SFQ_HASH_SRC:
++ return esfq_hash_u32(q,hs);
++ case TCA_SFQ_HASH_SRCDIR:
++ return esfq_hash_direct(q, ntohl(hs));
++#ifdef CONFIG_NETFILTER
++ case TCA_SFQ_HASH_FWMARK:
++ return esfq_hash_u32(q,nfm);
++ case TCA_SFQ_HASH_FWMARKDIR:
++ return esfq_hash_direct(q,nfm);
++#endif
++ default:
++ if (net_ratelimit())
++ printk(KERN_WARNING "ESFQ: Unknown hash method. Falling back to classic.\n");
++ }
++ return esfq_fold_hash_classic(q, h, h2);
++}
++
++static inline void esfq_link(struct esfq_sched_data *q, esfq_index x)
++{
++ esfq_index p, n;
++ int d = q->qs[x].qlen + q->depth;
++
++ p = d;
++ n = q->dep[d].next;
++ q->dep[x].next = n;
++ q->dep[x].prev = p;
++ q->dep[p].next = q->dep[n].prev = x;
++}
++
++static inline void esfq_dec(struct esfq_sched_data *q, esfq_index x)
++{
++ esfq_index p, n;
++
++ n = q->dep[x].next;
++ p = q->dep[x].prev;
++ q->dep[p].next = n;
++ q->dep[n].prev = p;
++
++ if (n == p && q->max_depth == q->qs[x].qlen + 1)
++ q->max_depth--;
++
++ esfq_link(q, x);
++}
++
++static inline void esfq_inc(struct esfq_sched_data *q, esfq_index x)
++{
++ esfq_index p, n;
++ int d;
++
++ n = q->dep[x].next;
++ p = q->dep[x].prev;
++ q->dep[p].next = n;
++ q->dep[n].prev = p;
++ d = q->qs[x].qlen;
++ if (q->max_depth < d)
++ q->max_depth = d;
++
++ esfq_link(q, x);
++}
++
++static unsigned int esfq_drop(struct Qdisc *sch)
++{
++ struct esfq_sched_data *q = qdisc_priv(sch);
++ esfq_index d = q->max_depth;
++ struct sk_buff *skb;
++ unsigned int len;
++
++ /* Queue is full! Find the longest slot and
++ drop a packet from it */
++
++ if (d > 1) {
++ esfq_index x = q->dep[d+q->depth].next;
++ skb = q->qs[x].prev;
++ len = skb->len;
++ __skb_unlink(skb, &q->qs[x]);
++ kfree_skb(skb);
++ esfq_dec(q, x);
++ sch->q.qlen--;
++ sch->qstats.drops++;
++ return len;
++ }
++
++ if (d == 1) {
++ /* It is difficult to believe, but ALL THE SLOTS HAVE LENGTH 1. */
++ d = q->next[q->tail];
++ q->next[q->tail] = q->next[d];
++ q->allot[q->next[d]] += q->quantum;
++ skb = q->qs[d].prev;
++ len = skb->len;
++ __skb_unlink(skb, &q->qs[d]);
++ kfree_skb(skb);
++ esfq_dec(q, d);
++ sch->q.qlen--;
++ q->ht[q->hash[d]] = q->depth;
++ sch->qstats.drops++;
++ return len;
++ }
++
++ return 0;
++}
++
++static int
++esfq_enqueue(struct sk_buff *skb, struct Qdisc* sch)
++{
++ struct esfq_sched_data *q = qdisc_priv(sch);
++ unsigned hash = esfq_hash(q, skb);
++ unsigned depth = q->depth;
++ esfq_index x;
++
++ x = q->ht[hash];
++ if (x == depth) {
++ q->ht[hash] = x = q->dep[depth].next;
++ q->hash[x] = hash;
++ }
++ __skb_queue_tail(&q->qs[x], skb);
++ esfq_inc(q, x);
++ if (q->qs[x].qlen == 1) { /* The flow is new */
++ if (q->tail == depth) { /* It is the first flow */
++ q->tail = x;
++ q->next[x] = x;
++ q->allot[x] = q->quantum;
++ } else {
++ q->next[x] = q->next[q->tail];
++ q->next[q->tail] = x;
++ q->tail = x;
++ }
++ }
++ if (++sch->q.qlen < q->limit-1) {
++ sch->bstats.bytes += skb->len;
++ sch->bstats.packets++;
++ return 0;
++ }
++
++ esfq_drop(sch);
++ return NET_XMIT_CN;
++}
++
++static int
++esfq_requeue(struct sk_buff *skb, struct Qdisc* sch)
++{
++ struct esfq_sched_data *q = qdisc_priv(sch);
++ unsigned hash = esfq_hash(q, skb);
++ unsigned depth = q->depth;
++ esfq_index x;
++
++ x = q->ht[hash];
++ if (x == depth) {
++ q->ht[hash] = x = q->dep[depth].next;
++ q->hash[x] = hash;
++ }
++ __skb_queue_head(&q->qs[x], skb);
++ esfq_inc(q, x);
++ if (q->qs[x].qlen == 1) { /* The flow is new */
++ if (q->tail == depth) { /* It is the first flow */
++ q->tail = x;
++ q->next[x] = x;
++ q->allot[x] = q->quantum;
++ } else {
++ q->next[x] = q->next[q->tail];
++ q->next[q->tail] = x;
++ q->tail = x;
++ }
++ }
++ if (++sch->q.qlen < q->limit - 1) {
++ sch->qstats.requeues++;
++ return 0;
++ }
++
++ sch->qstats.drops++;
++ esfq_drop(sch);
++ return NET_XMIT_CN;
++}
++
++
++
++
++static struct sk_buff *
++esfq_dequeue(struct Qdisc* sch)
++{
++ struct esfq_sched_data *q = qdisc_priv(sch);
++ struct sk_buff *skb;
++ unsigned depth = q->depth;
++ esfq_index a, old_a;
++
++ /* No active slots */
++ if (q->tail == depth)
++ return NULL;
++
++ a = old_a = q->next[q->tail];
++
++ /* Grab packet */
++ skb = __skb_dequeue(&q->qs[a]);
++ esfq_dec(q, a);
++ sch->q.qlen--;
++
++ /* Is the slot empty? */
++ if (q->qs[a].qlen == 0) {
++ q->ht[q->hash[a]] = depth;
++ a = q->next[a];
++ if (a == old_a) {
++ q->tail = depth;
++ return skb;
++ }
++ q->next[q->tail] = a;
++ q->allot[a] += q->quantum;
++ } else if ((q->allot[a] -= skb->len) <= 0) {
++ q->tail = a;
++ a = q->next[a];
++ q->allot[a] += q->quantum;
++ }
++
++ return skb;
++}
++
++static void
++esfq_reset(struct Qdisc* sch)
++{
++ struct sk_buff *skb;
++
++ while ((skb = esfq_dequeue(sch)) != NULL)
++ kfree_skb(skb);
++}
++
++static void esfq_perturbation(unsigned long arg)
++{
++ struct Qdisc *sch = (struct Qdisc*)arg;
++ struct esfq_sched_data *q = qdisc_priv(sch);
++
++ q->perturbation = net_random()&0x1F;
++
++ if (q->perturb_period) {
++ q->perturb_timer.expires = jiffies + q->perturb_period;
++ add_timer(&q->perturb_timer);
++ }
++}
++
++static int esfq_change(struct Qdisc *sch, struct rtattr *opt)
++{
++ struct esfq_sched_data *q = qdisc_priv(sch);
++ struct tc_esfq_qopt *ctl = RTA_DATA(opt);
++ int old_perturb = q->perturb_period;
++
++ if (opt->rta_len < RTA_LENGTH(sizeof(*ctl)))
++ return -EINVAL;
++
++ sch_tree_lock(sch);
++ q->quantum = ctl->quantum ? : psched_mtu(sch->dev);
++ q->perturb_period = ctl->perturb_period*HZ;
++// q->hash_divisor = ctl->divisor;
++// q->tail = q->limit = q->depth = ctl->flows;
++
++ if (ctl->limit)
++ q->limit = min_t(u32, ctl->limit, q->depth);
++
++ if (ctl->hash_kind) {
++ q->hash_kind = ctl->hash_kind;
++ if (q->hash_kind != TCA_SFQ_HASH_CLASSIC)
++ q->perturb_period = 0;
++ }
++
++ // is sch_tree_lock enough to do this ?
++ while (sch->q.qlen >= q->limit-1)
++ esfq_drop(sch);
++
++ if (old_perturb)
++ del_timer(&q->perturb_timer);
++ if (q->perturb_period) {
++ q->perturb_timer.expires = jiffies + q->perturb_period;
++ add_timer(&q->perturb_timer);
++ } else {
++ q->perturbation = 0;
++ }
++ sch_tree_unlock(sch);
++ return 0;
++}
++
++static int esfq_init(struct Qdisc *sch, struct rtattr *opt)
++{
++ struct esfq_sched_data *q = qdisc_priv(sch);
++ struct tc_esfq_qopt *ctl;
++ esfq_index p = ~0UL/2;
++ int i;
++
++ if (opt && opt->rta_len < RTA_LENGTH(sizeof(*ctl)))
++ return -EINVAL;
++
++ init_timer(&q->perturb_timer);
++ q->perturb_timer.data = (unsigned long)sch;
++ q->perturb_timer.function = esfq_perturbation;
++ q->perturbation = 0;
++ q->hash_kind = TCA_SFQ_HASH_CLASSIC;
++ q->max_depth = 0;
++ q->dyn_min = ~0U; /* maximum value for this type */
++ q->dyn_max = 0; /* dyn_min/dyn_max will be set properly upon first packet */
++ if (opt == NULL) {
++ q->quantum = psched_mtu(sch->dev);
++ q->perturb_period = 0;
++ q->hash_divisor = 1024;
++ q->tail = q->limit = q->depth = 128;
++
++ } else {
++ ctl = RTA_DATA(opt);
++ q->quantum = ctl->quantum ? : psched_mtu(sch->dev);
++ q->perturb_period = ctl->perturb_period*HZ;
++ q->hash_divisor = ctl->divisor ? : 1024;
++ q->tail = q->limit = q->depth = ctl->flows ? : 128;
++
++ if ( q->depth > p - 1 )
++ return -EINVAL;
++
++ if (ctl->limit)
++ q->limit = min_t(u32, ctl->limit, q->depth);
++
++ if (ctl->hash_kind) {
++ q->hash_kind = ctl->hash_kind;
++ }
++
++ if (q->perturb_period) {
++ q->perturb_timer.expires = jiffies + q->perturb_period;
++ add_timer(&q->perturb_timer);
++ }
++ }
++
++ q->ht = kmalloc(q->hash_divisor*sizeof(esfq_index), GFP_KERNEL);
++ if (!q->ht)
++ goto err_case;
++
++ q->dep = kmalloc((1+q->depth*2)*sizeof(struct esfq_head), GFP_KERNEL);
++ if (!q->dep)
++ goto err_case;
++ q->next = kmalloc(q->depth*sizeof(esfq_index), GFP_KERNEL);
++ if (!q->next)
++ goto err_case;
++
++ q->allot = kmalloc(q->depth*sizeof(short), GFP_KERNEL);
++ if (!q->allot)
++ goto err_case;
++ q->hash = kmalloc(q->depth*sizeof(unsigned short), GFP_KERNEL);
++ if (!q->hash)
++ goto err_case;
++ q->qs = kmalloc(q->depth*sizeof(struct sk_buff_head), GFP_KERNEL);
++ if (!q->qs)
++ goto err_case;
++
++ for (i=0; i< q->hash_divisor; i++)
++ q->ht[i] = q->depth;
++ for (i=0; i<q->depth; i++) {
++ skb_queue_head_init(&q->qs[i]);
++ q->dep[i+q->depth].next = i+q->depth;
++ q->dep[i+q->depth].prev = i+q->depth;
++ }
++
++ for (i=0; i<q->depth; i++)
++ esfq_link(q, i);
++ return 0;
++err_case:
++ del_timer(&q->perturb_timer);
++ if (q->ht)
++ kfree(q->ht);
++ if (q->dep)
++ kfree(q->dep);
++ if (q->next)
++ kfree(q->next);
++ if (q->allot)
++ kfree(q->allot);
++ if (q->hash)
++ kfree(q->hash);
++ if (q->qs)
++ kfree(q->qs);
++ return -ENOBUFS;
++}
++
++static void esfq_destroy(struct Qdisc *sch)
++{
++ struct esfq_sched_data *q = qdisc_priv(sch);
++ del_timer(&q->perturb_timer);
++ if(q->ht)
++ kfree(q->ht);
++ if(q->dep)
++ kfree(q->dep);
++ if(q->next)
++ kfree(q->next);
++ if(q->allot)
++ kfree(q->allot);
++ if(q->hash)
++ kfree(q->hash);
++ if(q->qs)
++ kfree(q->qs);
++}
++
++static int esfq_dump(struct Qdisc *sch, struct sk_buff *skb)
++{
++ struct esfq_sched_data *q = qdisc_priv(sch);
++ unsigned char *b = skb->tail;
++ struct tc_esfq_qopt opt;
++
++ opt.quantum = q->quantum;
++ opt.perturb_period = q->perturb_period/HZ;
++
++ opt.limit = q->limit;
++ opt.divisor = q->hash_divisor;
++ opt.flows = q->depth;
++ opt.hash_kind = q->hash_kind;
++
++ RTA_PUT(skb, TCA_OPTIONS, sizeof(opt), &opt);
++
++ return skb->len;
++
++rtattr_failure:
++ skb_trim(skb, b - skb->data);
++ return -1;
++}
++
++static struct Qdisc_ops esfq_qdisc_ops =
++{
++ .next = NULL,
++ .cl_ops = NULL,
++ .id = "esfq",
++ .priv_size = sizeof(struct esfq_sched_data),
++ .enqueue = esfq_enqueue,
++ .dequeue = esfq_dequeue,
++ .requeue = esfq_requeue,
++ .drop = esfq_drop,
++ .init = esfq_init,
++ .reset = esfq_reset,
++ .destroy = esfq_destroy,
++ .change = NULL, /* esfq_change - needs more work */
++ .dump = esfq_dump,
++ .owner = THIS_MODULE,
++};
++
++static int __init esfq_module_init(void)
++{
++ return register_qdisc(&esfq_qdisc_ops);
++}
++static void __exit esfq_module_exit(void)
++{
++ unregister_qdisc(&esfq_qdisc_ops);
++}
++module_init(esfq_module_init)
++module_exit(esfq_module_exit)
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-magicbox-2.6.19.2/201-multiple_default_gateways.patch b/packages/linux/linux-magicbox-2.6.19.2/201-multiple_default_gateways.patch
new file mode 100644
index 0000000000..4a3e327288
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/201-multiple_default_gateways.patch
@@ -0,0 +1,1243 @@
+diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ip_nat.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_nat.h
+--- linux-2.6.19.old/include/linux/netfilter_ipv4/ip_nat.h 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ip_nat.h 2006-12-14 03:13:53.000000000 +0100
+@@ -63,6 +63,13 @@
+
+ struct ip_conntrack;
+
++/* Call input routing for SNAT-ed traffic */
++extern unsigned int ip_nat_route_input(unsigned int hooknum,
++ struct sk_buff **pskb,
++ const struct net_device *in,
++ const struct net_device *out,
++ int (*okfn)(struct sk_buff *));
++
+ /* Set up the info structure to map into this range. */
+ extern unsigned int ip_nat_setup_info(struct ip_conntrack *conntrack,
+ const struct ip_nat_range *range,
+diff -urN linux-2.6.19.old/include/linux/rtnetlink.h linux-2.6.19.dev/include/linux/rtnetlink.h
+--- linux-2.6.19.old/include/linux/rtnetlink.h 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/include/linux/rtnetlink.h 2006-12-14 03:13:53.000000000 +0100
+@@ -293,6 +293,8 @@
+ #define RTNH_F_DEAD 1 /* Nexthop is dead (used by multipath) */
+ #define RTNH_F_PERVASIVE 2 /* Do recursive gateway lookup */
+ #define RTNH_F_ONLINK 4 /* Gateway is forced on link */
++#define RTNH_F_SUSPECT 8 /* We don't know the real state */
++#define RTNH_F_BADSTATE (RTNH_F_DEAD | RTNH_F_SUSPECT)
+
+ /* Macros to handle hexthops */
+
+diff -urN linux-2.6.19.old/include/net/flow.h linux-2.6.19.dev/include/net/flow.h
+--- linux-2.6.19.old/include/net/flow.h 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/include/net/flow.h 2006-12-14 03:13:53.000000000 +0100
+@@ -19,6 +19,8 @@
+ __be32 daddr;
+ __be32 saddr;
+ __u32 fwmark;
++ __u32 lsrc;
++ __u32 gw;
+ __u8 tos;
+ __u8 scope;
+ } ip4_u;
+@@ -48,6 +50,8 @@
+ #define fl4_dst nl_u.ip4_u.daddr
+ #define fl4_src nl_u.ip4_u.saddr
+ #define fl4_fwmark nl_u.ip4_u.fwmark
++#define fl4_lsrc nl_u.ip4_u.lsrc
++#define fl4_gw nl_u.ip4_u.gw
+ #define fl4_tos nl_u.ip4_u.tos
+ #define fl4_scope nl_u.ip4_u.scope
+
+diff -urN linux-2.6.19.old/include/net/ip_fib.h linux-2.6.19.dev/include/net/ip_fib.h
+--- linux-2.6.19.old/include/net/ip_fib.h 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/include/net/ip_fib.h 2006-12-14 03:13:53.000000000 +0100
+@@ -196,7 +196,8 @@
+
+ static inline void fib_select_default(const struct flowi *flp, struct fib_result *res)
+ {
+- if (FIB_RES_GW(*res) && FIB_RES_NH(*res).nh_scope == RT_SCOPE_LINK)
++ if ((FIB_RES_GW(*res) && FIB_RES_NH(*res).nh_scope == RT_SCOPE_LINK) ||
++ FIB_RES_NH(*res).nh_scope == RT_SCOPE_HOST)
+ ip_fib_main_table->tb_select_default(ip_fib_main_table, flp, res);
+ }
+
+@@ -212,6 +213,8 @@
+
+ #endif /* CONFIG_IP_MULTIPLE_TABLES */
+
++extern int fib_result_table(struct fib_result *res);
++
+ /* Exported by fib_frontend.c */
+ extern struct nla_policy rtm_ipv4_policy[];
+ extern void ip_fib_init(void);
+@@ -284,4 +287,6 @@
+ extern void fib_proc_exit(void);
+ #endif
+
++extern rwlock_t fib_nhflags_lock;
++
+ #endif /* _NET_FIB_H */
+diff -urN linux-2.6.19.old/include/net/route.h linux-2.6.19.dev/include/net/route.h
+--- linux-2.6.19.old/include/net/route.h 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/include/net/route.h 2006-12-14 03:13:53.000000000 +0100
+@@ -117,6 +117,7 @@
+ extern int ip_route_output_key(struct rtable **, struct flowi *flp);
+ extern int ip_route_output_flow(struct rtable **rp, struct flowi *flp, struct sock *sk, int flags);
+ extern int ip_route_input(struct sk_buff*, __be32 dst, __be32 src, u8 tos, struct net_device *devin);
++extern int ip_route_input_lookup(struct sk_buff*, u32 dst, u32 src, u8 tos, struct net_device *devin, u32 lsrc);
+ extern unsigned short ip_rt_frag_needed(struct iphdr *iph, unsigned short new_mtu);
+ extern void ip_rt_send_redirect(struct sk_buff *skb);
+
+diff -urN linux-2.6.19.old/net/ipv4/fib_frontend.c linux-2.6.19.dev/net/ipv4/fib_frontend.c
+--- linux-2.6.19.old/net/ipv4/fib_frontend.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/fib_frontend.c 2006-12-14 03:13:53.000000000 +0100
+@@ -58,6 +58,8 @@
+ #define FIB_TABLE_HASHSZ 1
+ static struct hlist_head fib_table_hash[FIB_TABLE_HASHSZ];
+
++#define FIB_RES_TABLE(r) (RT_TABLE_MAIN)
++
+ #else
+
+ #define FIB_TABLE_HASHSZ 256
+@@ -100,6 +102,9 @@
+ rcu_read_unlock();
+ return NULL;
+ }
++
++#define FIB_RES_TABLE(r) (fib_result_table(r))
++
+ #endif /* CONFIG_IP_MULTIPLE_TABLES */
+
+ static void fib_flush(void)
+@@ -190,6 +195,9 @@
+ .tos = tos } },
+ .iif = oif };
+ struct fib_result res;
++ int table;
++ unsigned char prefixlen;
++ unsigned char scope;
+ int no_addr, rpf;
+ int ret;
+
+@@ -211,31 +219,35 @@
+ goto e_inval_res;
+ *spec_dst = FIB_RES_PREFSRC(res);
+ fib_combine_itag(itag, &res);
+-#ifdef CONFIG_IP_ROUTE_MULTIPATH
+- if (FIB_RES_DEV(res) == dev || res.fi->fib_nhs > 1)
+-#else
+ if (FIB_RES_DEV(res) == dev)
+-#endif
+ {
+ ret = FIB_RES_NH(res).nh_scope >= RT_SCOPE_HOST;
+ fib_res_put(&res);
+ return ret;
+ }
++ table = FIB_RES_TABLE(&res);
++ prefixlen = res.prefixlen;
++ scope = res.scope;
+ fib_res_put(&res);
+ if (no_addr)
+ goto last_resort;
+- if (rpf)
+- goto e_inval;
+ fl.oif = dev->ifindex;
+
+ ret = 0;
+ if (fib_lookup(&fl, &res) == 0) {
+- if (res.type == RTN_UNICAST) {
++ if (res.type == RTN_UNICAST &&
++ ((table == FIB_RES_TABLE(&res) &&
++ res.prefixlen >= prefixlen && res.scope >= scope) ||
++ !rpf)) {
+ *spec_dst = FIB_RES_PREFSRC(res);
+ ret = FIB_RES_NH(res).nh_scope >= RT_SCOPE_HOST;
++ fib_res_put(&res);
++ return ret;
+ }
+ fib_res_put(&res);
+ }
++ if (rpf)
++ goto e_inval;
+ return ret;
+
+ last_resort:
+@@ -836,9 +848,7 @@
+ switch (event) {
+ case NETDEV_UP:
+ fib_add_ifaddr(ifa);
+-#ifdef CONFIG_IP_ROUTE_MULTIPATH
+ fib_sync_up(ifa->ifa_dev->dev);
+-#endif
+ rt_cache_flush(-1);
+ break;
+ case NETDEV_DOWN:
+@@ -874,9 +884,7 @@
+ for_ifa(in_dev) {
+ fib_add_ifaddr(ifa);
+ } endfor_ifa(in_dev);
+-#ifdef CONFIG_IP_ROUTE_MULTIPATH
+ fib_sync_up(dev);
+-#endif
+ rt_cache_flush(-1);
+ break;
+ case NETDEV_DOWN:
+diff -urN linux-2.6.19.old/net/ipv4/fib_hash.c linux-2.6.19.dev/net/ipv4/fib_hash.c
+--- linux-2.6.19.old/net/ipv4/fib_hash.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/fib_hash.c 2006-12-14 03:13:53.000000000 +0100
+@@ -275,30 +275,38 @@
+ return err;
+ }
+
+-static int fn_hash_last_dflt=-1;
+-
+ static void
+ fn_hash_select_default(struct fib_table *tb, const struct flowi *flp, struct fib_result *res)
+ {
+- int order, last_idx;
++ int order, last_idx, last_dflt, last_nhsel;
++ struct fib_alias *first_fa = NULL;
++ struct hlist_head *head;
+ struct hlist_node *node;
+ struct fib_node *f;
+ struct fib_info *fi = NULL;
+ struct fib_info *last_resort;
+ struct fn_hash *t = (struct fn_hash*)tb->tb_data;
+- struct fn_zone *fz = t->fn_zones[0];
++ struct fn_zone *fz = t->fn_zones[res->prefixlen];
++ u32 k;
+
+ if (fz == NULL)
+ return;
+
++ k = fz_key(flp->fl4_dst, fz);
++ last_dflt = -2;
++ last_nhsel = 0;
+ last_idx = -1;
+ last_resort = NULL;
+ order = -1;
+
+ read_lock(&fib_hash_lock);
+- hlist_for_each_entry(f, node, &fz->fz_hash[0], fn_hash) {
++ head = &fz->fz_hash[fn_hash(k, fz)];
++ hlist_for_each_entry(f, node, head, fn_hash) {
+ struct fib_alias *fa;
+
++ if (f->fn_key != k)
++ continue;
++
+ list_for_each_entry(fa, &f->fn_alias, fa_list) {
+ struct fib_info *next_fi = fa->fa_info;
+
+@@ -306,41 +314,52 @@
+ fa->fa_type != RTN_UNICAST)
+ continue;
+
++ if (fa->fa_tos &&
++ fa->fa_tos != flp->fl4_tos)
++ continue;
+ if (next_fi->fib_priority > res->fi->fib_priority)
+ break;
+- if (!next_fi->fib_nh[0].nh_gw ||
+- next_fi->fib_nh[0].nh_scope != RT_SCOPE_LINK)
+- continue;
+ fa->fa_state |= FA_S_ACCESSED;
+
+- if (fi == NULL) {
+- if (next_fi != res->fi)
+- break;
+- } else if (!fib_detect_death(fi, order, &last_resort,
+- &last_idx, &fn_hash_last_dflt)) {
++ if (!first_fa) {
++ last_dflt = fa->fa_last_dflt;
++ first_fa = fa;
++ }
++ if (fi && !fib_detect_death(fi, order, &last_resort,
++ &last_idx, &last_dflt, &last_nhsel, flp)) {
+ if (res->fi)
+ fib_info_put(res->fi);
+ res->fi = fi;
+ atomic_inc(&fi->fib_clntref);
+- fn_hash_last_dflt = order;
++ first_fa->fa_last_dflt = order;
+ goto out;
+ }
+ fi = next_fi;
+ order++;
+ }
++ break;
+ }
+
+ if (order <= 0 || fi == NULL) {
+- fn_hash_last_dflt = -1;
++ if (fi && fi->fib_nhs > 1 &&
++ fib_detect_death(fi, order, &last_resort, &last_idx,
++ &last_dflt, &last_nhsel, flp) &&
++ last_resort == fi) {
++ read_lock_bh(&fib_nhflags_lock);
++ fi->fib_nh[last_nhsel].nh_flags &= ~RTNH_F_SUSPECT;
++ read_unlock_bh(&fib_nhflags_lock);
++ }
++ if (first_fa) first_fa->fa_last_dflt = -1;
+ goto out;
+ }
+
+- if (!fib_detect_death(fi, order, &last_resort, &last_idx, &fn_hash_last_dflt)) {
++ if (!fib_detect_death(fi, order, &last_resort, &last_idx,
++ &last_dflt, &last_nhsel, flp)) {
+ if (res->fi)
+ fib_info_put(res->fi);
+ res->fi = fi;
+ atomic_inc(&fi->fib_clntref);
+- fn_hash_last_dflt = order;
++ first_fa->fa_last_dflt = order;
+ goto out;
+ }
+
+@@ -350,8 +369,11 @@
+ res->fi = last_resort;
+ if (last_resort)
+ atomic_inc(&last_resort->fib_clntref);
++ read_lock_bh(&fib_nhflags_lock);
++ last_resort->fib_nh[last_nhsel].nh_flags &= ~RTNH_F_SUSPECT;
++ read_unlock_bh(&fib_nhflags_lock);
++ first_fa->fa_last_dflt = last_idx;
+ }
+- fn_hash_last_dflt = last_idx;
+ out:
+ read_unlock(&fib_hash_lock);
+ }
+@@ -447,6 +469,7 @@
+ write_lock_bh(&fib_hash_lock);
+ fi_drop = fa->fa_info;
+ fa->fa_info = fi;
++ fa->fa_last_dflt = -1;
+ fa->fa_type = cfg->fc_type;
+ fa->fa_scope = cfg->fc_scope;
+ state = fa->fa_state;
+@@ -506,6 +529,7 @@
+ new_fa->fa_type = cfg->fc_type;
+ new_fa->fa_scope = cfg->fc_scope;
+ new_fa->fa_state = 0;
++ new_fa->fa_last_dflt = -1;
+
+ /*
+ * Insert new entry to the list.
+diff -urN linux-2.6.19.old/net/ipv4/fib_lookup.h linux-2.6.19.dev/net/ipv4/fib_lookup.h
+--- linux-2.6.19.old/net/ipv4/fib_lookup.h 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/fib_lookup.h 2006-12-14 03:13:53.000000000 +0100
+@@ -9,6 +9,7 @@
+ struct list_head fa_list;
+ struct rcu_head rcu;
+ struct fib_info *fa_info;
++ int fa_last_dflt;
+ u8 fa_tos;
+ u8 fa_type;
+ u8 fa_scope;
+@@ -35,6 +36,7 @@
+ u8 tos, u32 prio);
+ extern int fib_detect_death(struct fib_info *fi, int order,
+ struct fib_info **last_resort,
+- int *last_idx, int *dflt);
++ int *last_idx, int *dflt, int *last_nhsel,
++ const struct flowi *flp);
+
+ #endif /* _FIB_LOOKUP_H */
+diff -urN linux-2.6.19.old/net/ipv4/fib_rules.c linux-2.6.19.dev/net/ipv4/fib_rules.c
+--- linux-2.6.19.old/net/ipv4/fib_rules.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/fib_rules.c 2006-12-14 03:13:53.000000000 +0100
+@@ -89,6 +89,11 @@
+ }
+ #endif
+
++int fib_result_table(struct fib_result *res)
++{
++ return res->r->table;
++}
++
+ int fib_lookup(struct flowi *flp, struct fib_result *res)
+ {
+ struct fib_lookup_arg arg = {
+@@ -140,7 +145,8 @@
+ void fib_select_default(const struct flowi *flp, struct fib_result *res)
+ {
+ if (res->r && res->r->action == FR_ACT_TO_TBL &&
+- FIB_RES_GW(*res) && FIB_RES_NH(*res).nh_scope == RT_SCOPE_LINK) {
++ ((FIB_RES_GW(*res) && FIB_RES_NH(*res).nh_scope == RT_SCOPE_LINK) ||
++ FIB_RES_NH(*res).nh_scope == RT_SCOPE_HOST)) {
+ struct fib_table *tb;
+ if ((tb = fib_get_table(res->r->table)) != NULL)
+ tb->tb_select_default(tb, flp, res);
+diff -urN linux-2.6.19.old/net/ipv4/fib_semantics.c linux-2.6.19.dev/net/ipv4/fib_semantics.c
+--- linux-2.6.19.old/net/ipv4/fib_semantics.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/fib_semantics.c 2006-12-14 03:13:53.000000000 +0100
+@@ -55,6 +55,7 @@
+ static struct hlist_head *fib_info_laddrhash;
+ static unsigned int fib_hash_size;
+ static unsigned int fib_info_cnt;
++rwlock_t fib_nhflags_lock = RW_LOCK_UNLOCKED;
+
+ #define DEVINDEX_HASHBITS 8
+ #define DEVINDEX_HASHSIZE (1U << DEVINDEX_HASHBITS)
+@@ -190,7 +191,7 @@
+ #ifdef CONFIG_NET_CLS_ROUTE
+ nh->nh_tclassid != onh->nh_tclassid ||
+ #endif
+- ((nh->nh_flags^onh->nh_flags)&~RTNH_F_DEAD))
++ ((nh->nh_flags^onh->nh_flags)&~RTNH_F_BADSTATE))
+ return -1;
+ onh++;
+ } endfor_nexthops(fi);
+@@ -227,7 +228,7 @@
+ nfi->fib_priority == fi->fib_priority &&
+ memcmp(nfi->fib_metrics, fi->fib_metrics,
+ sizeof(fi->fib_metrics)) == 0 &&
+- ((nfi->fib_flags^fi->fib_flags)&~RTNH_F_DEAD) == 0 &&
++ ((nfi->fib_flags^fi->fib_flags)&~RTNH_F_BADSTATE) == 0 &&
+ (nfi->fib_nhs == 0 || nh_comp(fi, nfi) == 0))
+ return fi;
+ }
+@@ -319,26 +320,70 @@
+ }
+
+ int fib_detect_death(struct fib_info *fi, int order,
+- struct fib_info **last_resort, int *last_idx, int *dflt)
++ struct fib_info **last_resort, int *last_idx, int *dflt,
++ int *last_nhsel, const struct flowi *flp)
+ {
+ struct neighbour *n;
+- int state = NUD_NONE;
++ int nhsel;
++ int state;
++ struct fib_nh * nh;
++ u32 dst;
++ int flag, dead = 1;
++
++ /* change_nexthops(fi) { */
++ for (nhsel = 0, nh = fi->fib_nh; nhsel < fi->fib_nhs; nh++, nhsel++) {
++ if (flp->oif && flp->oif != nh->nh_oif)
++ continue;
++ if (flp->fl4_gw && flp->fl4_gw != nh->nh_gw && nh->nh_gw &&
++ nh->nh_scope == RT_SCOPE_LINK)
++ continue;
++ if (nh->nh_flags & RTNH_F_DEAD)
++ continue;
+
+- n = neigh_lookup(&arp_tbl, &fi->fib_nh[0].nh_gw, fi->fib_dev);
+- if (n) {
+- state = n->nud_state;
+- neigh_release(n);
+- }
+- if (state==NUD_REACHABLE)
+- return 0;
+- if ((state&NUD_VALID) && order != *dflt)
+- return 0;
+- if ((state&NUD_VALID) ||
+- (*last_idx<0 && order > *dflt)) {
+- *last_resort = fi;
+- *last_idx = order;
++ flag = 0;
++ if (nh->nh_dev->flags & IFF_NOARP) {
++ dead = 0;
++ goto setfl;
++ }
++
++ dst = nh->nh_gw;
++ if (!nh->nh_gw || nh->nh_scope != RT_SCOPE_LINK)
++ dst = flp->fl4_dst;
++
++ state = NUD_NONE;
++ n = neigh_lookup(&arp_tbl, &dst, nh->nh_dev);
++ if (n) {
++ state = n->nud_state;
++ neigh_release(n);
++ }
++ if (state==NUD_REACHABLE ||
++ ((state&NUD_VALID) && order != *dflt)) {
++ dead = 0;
++ goto setfl;
++ }
++ if (!(state&NUD_VALID))
++ flag = 1;
++ if (!dead)
++ goto setfl;
++ if ((state&NUD_VALID) ||
++ (*last_idx<0 && order >= *dflt)) {
++ *last_resort = fi;
++ *last_idx = order;
++ *last_nhsel = nhsel;
++ }
++
++ setfl:
++
++ read_lock_bh(&fib_nhflags_lock);
++ if (flag)
++ nh->nh_flags |= RTNH_F_SUSPECT;
++ else
++ nh->nh_flags &= ~RTNH_F_SUSPECT;
++ read_unlock_bh(&fib_nhflags_lock);
+ }
+- return 1;
++ /* } endfor_nexthops(fi) */
++
++ return dead;
+ }
+
+ #ifdef CONFIG_IP_ROUTE_MULTIPATH
+@@ -508,8 +553,11 @@
+ return -EINVAL;
+ if ((dev = __dev_get_by_index(nh->nh_oif)) == NULL)
+ return -ENODEV;
+- if (!(dev->flags&IFF_UP))
+- return -ENETDOWN;
++ if (!(dev->flags&IFF_UP)) {
++ if (fi->fib_protocol != RTPROT_STATIC)
++ return -ENETDOWN;
++ nh->nh_flags |= RTNH_F_DEAD;
++ }
+ nh->nh_dev = dev;
+ dev_hold(dev);
+ nh->nh_scope = RT_SCOPE_LINK;
+@@ -529,24 +577,48 @@
+ /* It is not necessary, but requires a bit of thinking */
+ if (fl.fl4_scope < RT_SCOPE_LINK)
+ fl.fl4_scope = RT_SCOPE_LINK;
+- if ((err = fib_lookup(&fl, &res)) != 0)
+- return err;
++ err = fib_lookup(&fl, &res);
+ }
+- err = -EINVAL;
+- if (res.type != RTN_UNICAST && res.type != RTN_LOCAL)
+- goto out;
+- nh->nh_scope = res.scope;
+- nh->nh_oif = FIB_RES_OIF(res);
+- if ((nh->nh_dev = FIB_RES_DEV(res)) == NULL)
+- goto out;
+- dev_hold(nh->nh_dev);
+- err = -ENETDOWN;
+- if (!(nh->nh_dev->flags & IFF_UP))
+- goto out;
+- err = 0;
++ if (err) {
++ struct in_device *in_dev;
++
++ if (err != -ENETUNREACH ||
++ fi->fib_protocol != RTPROT_STATIC)
++ return err;
++
++ in_dev = inetdev_by_index(nh->nh_oif);
++ if (in_dev == NULL ||
++ in_dev->dev->flags & IFF_UP) {
++ if (in_dev)
++ in_dev_put(in_dev);
++ return err;
++ }
++ nh->nh_flags |= RTNH_F_DEAD;
++ nh->nh_scope = RT_SCOPE_LINK;
++ nh->nh_dev = in_dev->dev;
++ dev_hold(nh->nh_dev);
++ in_dev_put(in_dev);
++ } else {
++ err = -EINVAL;
++ if (res.type != RTN_UNICAST && res.type != RTN_LOCAL)
++ goto out;
++ nh->nh_scope = res.scope;
++ nh->nh_oif = FIB_RES_OIF(res);
++ if ((nh->nh_dev = FIB_RES_DEV(res)) == NULL)
++ goto out;
++ dev_hold(nh->nh_dev);
++ if (!(nh->nh_dev->flags & IFF_UP)) {
++ if (fi->fib_protocol != RTPROT_STATIC) {
++ err = -ENETDOWN;
++ goto out;
++ }
++ nh->nh_flags |= RTNH_F_DEAD;
++ }
++ err = 0;
+ out:
+- fib_res_put(&res);
+- return err;
++ fib_res_put(&res);
++ return err;
++ }
+ } else {
+ struct in_device *in_dev;
+
+@@ -557,8 +629,11 @@
+ if (in_dev == NULL)
+ return -ENODEV;
+ if (!(in_dev->dev->flags&IFF_UP)) {
+- in_dev_put(in_dev);
+- return -ENETDOWN;
++ if (fi->fib_protocol != RTPROT_STATIC) {
++ in_dev_put(in_dev);
++ return -ENETDOWN;
++ }
++ nh->nh_flags |= RTNH_F_DEAD;
+ }
+ nh->nh_dev = in_dev->dev;
+ dev_hold(nh->nh_dev);
+@@ -881,8 +956,12 @@
+ for_nexthops(fi) {
+ if (nh->nh_flags&RTNH_F_DEAD)
+ continue;
+- if (!flp->oif || flp->oif == nh->nh_oif)
+- break;
++ if (flp->oif && flp->oif != nh->nh_oif)
++ continue;
++ if (flp->fl4_gw && flp->fl4_gw != nh->nh_gw &&
++ nh->nh_gw && nh->nh_scope == RT_SCOPE_LINK)
++ continue;
++ break;
+ }
+ #ifdef CONFIG_IP_ROUTE_MULTIPATH
+ if (nhsel < fi->fib_nhs) {
+@@ -1056,18 +1135,29 @@
+ prev_fi = fi;
+ dead = 0;
+ change_nexthops(fi) {
+- if (nh->nh_flags&RTNH_F_DEAD)
+- dead++;
+- else if (nh->nh_dev == dev &&
+- nh->nh_scope != scope) {
+- nh->nh_flags |= RTNH_F_DEAD;
++ if (nh->nh_flags&RTNH_F_DEAD) {
++ if (fi->fib_protocol!=RTPROT_STATIC ||
++ nh->nh_dev == NULL ||
++ __in_dev_get_rtnl(nh->nh_dev) == NULL ||
++ nh->nh_dev->flags&IFF_UP)
++ dead++;
++ } else if (nh->nh_dev == dev &&
++ nh->nh_scope != scope) {
++ write_lock_bh(&fib_nhflags_lock);
+ #ifdef CONFIG_IP_ROUTE_MULTIPATH
+- spin_lock_bh(&fib_multipath_lock);
++ spin_lock(&fib_multipath_lock);
++ nh->nh_flags |= RTNH_F_DEAD;
+ fi->fib_power -= nh->nh_power;
+ nh->nh_power = 0;
+- spin_unlock_bh(&fib_multipath_lock);
++ spin_unlock(&fib_multipath_lock);
++#else
++ nh->nh_flags |= RTNH_F_DEAD;
+ #endif
+- dead++;
++ write_unlock_bh(&fib_nhflags_lock);
++ if (fi->fib_protocol!=RTPROT_STATIC ||
++ force ||
++ __in_dev_get_rtnl(dev) == NULL)
++ dead++;
+ }
+ #ifdef CONFIG_IP_ROUTE_MULTIPATH
+ if (force > 1 && nh->nh_dev == dev) {
+@@ -1086,11 +1176,8 @@
+ return ret;
+ }
+
+-#ifdef CONFIG_IP_ROUTE_MULTIPATH
+-
+ /*
+- Dead device goes up. We wake up dead nexthops.
+- It takes sense only on multipath routes.
++ Dead device goes up or new address is added. We wake up dead nexthops.
+ */
+
+ int fib_sync_up(struct net_device *dev)
+@@ -1100,8 +1187,10 @@
+ struct hlist_head *head;
+ struct hlist_node *node;
+ struct fib_nh *nh;
+- int ret;
++ struct fib_result res;
++ int ret, rep;
+
++repeat:
+ if (!(dev->flags&IFF_UP))
+ return 0;
+
+@@ -1109,6 +1198,7 @@
+ hash = fib_devindex_hashfn(dev->ifindex);
+ head = &fib_info_devhash[hash];
+ ret = 0;
++ rep = 0;
+
+ hlist_for_each_entry(nh, node, head, nh_hash) {
+ struct fib_info *fi = nh->nh_parent;
+@@ -1121,19 +1211,37 @@
+ prev_fi = fi;
+ alive = 0;
+ change_nexthops(fi) {
+- if (!(nh->nh_flags&RTNH_F_DEAD)) {
+- alive++;
++ if (!(nh->nh_flags&RTNH_F_DEAD))
+ continue;
+- }
+ if (nh->nh_dev == NULL || !(nh->nh_dev->flags&IFF_UP))
+ continue;
+ if (nh->nh_dev != dev || !__in_dev_get_rtnl(dev))
+ continue;
++ if (nh->nh_gw && fi->fib_protocol == RTPROT_STATIC) {
++ struct flowi fl = {
++ .nl_u = { .ip4_u =
++ { .daddr = nh->nh_gw,
++ .scope = nh->nh_scope } },
++ .oif = nh->nh_oif,
++ };
++ if (fib_lookup(&fl, &res) != 0)
++ continue;
++ if (res.type != RTN_UNICAST &&
++ res.type != RTN_LOCAL) {
++ fib_res_put(&res);
++ continue;
++ }
++ nh->nh_scope = res.scope;
++ fib_res_put(&res);
++ rep = 1;
++ }
+ alive++;
++#ifdef CONFIG_IP_ROUTE_MULTIPATH
+ spin_lock_bh(&fib_multipath_lock);
+ nh->nh_power = 0;
+ nh->nh_flags &= ~RTNH_F_DEAD;
+ spin_unlock_bh(&fib_multipath_lock);
++#endif
+ } endfor_nexthops(fi)
+
+ if (alive > 0) {
+@@ -1141,10 +1249,14 @@
+ ret++;
+ }
+ }
++ if (rep)
++ goto repeat;
+
+ return ret;
+ }
+
++#ifdef CONFIG_IP_ROUTE_MULTIPATH
++
+ /*
+ The algorithm is suboptimal, but it provides really
+ fair weighted route distribution.
+@@ -1153,24 +1265,45 @@
+ void fib_select_multipath(const struct flowi *flp, struct fib_result *res)
+ {
+ struct fib_info *fi = res->fi;
+- int w;
++ int w, alive;
+
+ spin_lock_bh(&fib_multipath_lock);
++ if (flp->oif) {
++ int sel = -1;
++ w = -1;
++ change_nexthops(fi) {
++ if (flp->oif != nh->nh_oif)
++ continue;
++ if (flp->fl4_gw && flp->fl4_gw != nh->nh_gw &&
++ nh->nh_gw && nh->nh_scope == RT_SCOPE_LINK)
++ continue;
++ if (!(nh->nh_flags&RTNH_F_BADSTATE)) {
++ if (nh->nh_power > w) {
++ w = nh->nh_power;
++ sel = nhsel;
++ }
++ }
++ } endfor_nexthops(fi);
++ if (sel >= 0) {
++ spin_unlock_bh(&fib_multipath_lock);
++ res->nh_sel = sel;
++ return;
++ }
++ goto last_resort;
++ }
++
++repeat:
+ if (fi->fib_power <= 0) {
+ int power = 0;
+ change_nexthops(fi) {
+- if (!(nh->nh_flags&RTNH_F_DEAD)) {
++ if (!(nh->nh_flags&RTNH_F_BADSTATE)) {
+ power += nh->nh_weight;
+ nh->nh_power = nh->nh_weight;
+ }
+ } endfor_nexthops(fi);
+ fi->fib_power = power;
+- if (power <= 0) {
+- spin_unlock_bh(&fib_multipath_lock);
+- /* Race condition: route has just become dead. */
+- res->nh_sel = 0;
+- return;
+- }
++ if (power <= 0)
++ goto last_resort;
+ }
+
+
+@@ -1180,20 +1313,40 @@
+
+ w = jiffies % fi->fib_power;
+
++ alive = 0;
+ change_nexthops(fi) {
+- if (!(nh->nh_flags&RTNH_F_DEAD) && nh->nh_power) {
++ if (!(nh->nh_flags&RTNH_F_BADSTATE) && nh->nh_power) {
+ if ((w -= nh->nh_power) <= 0) {
+ nh->nh_power--;
+ fi->fib_power--;
+- res->nh_sel = nhsel;
+ spin_unlock_bh(&fib_multipath_lock);
++ res->nh_sel = nhsel;
+ return;
+ }
++ alive = 1;
++ }
++ } endfor_nexthops(fi);
++ if (alive) {
++ fi->fib_power = 0;
++ goto repeat;
++ }
++
++last_resort:
++
++ for_nexthops(fi) {
++ if (!(nh->nh_flags&RTNH_F_DEAD)) {
++ if (flp->oif && flp->oif != nh->nh_oif)
++ continue;
++ if (flp->fl4_gw && flp->fl4_gw != nh->nh_gw &&
++ nh->nh_gw && nh->nh_scope == RT_SCOPE_LINK)
++ continue;
++ spin_unlock_bh(&fib_multipath_lock);
++ res->nh_sel = nhsel;
++ return;
+ }
+ } endfor_nexthops(fi);
+
+ /* Race condition: route has just become dead. */
+- res->nh_sel = 0;
+ spin_unlock_bh(&fib_multipath_lock);
+ }
+ #endif
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ip_nat_core.c linux-2.6.19.dev/net/ipv4/netfilter/ip_nat_core.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ip_nat_core.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ip_nat_core.c 2006-12-14 03:13:53.000000000 +0100
+@@ -573,6 +573,53 @@
+ EXPORT_SYMBOL_GPL(ip_nat_port_range_to_nfattr);
+ #endif
+
++unsigned int
++ip_nat_route_input(unsigned int hooknum,
++ struct sk_buff **pskb,
++ const struct net_device *in,
++ const struct net_device *out,
++ int (*okfn)(struct sk_buff *))
++{
++ struct sk_buff *skb = *pskb;
++ struct iphdr *iph;
++ struct ip_conntrack *conn;
++ enum ip_conntrack_info ctinfo;
++ enum ip_conntrack_dir dir;
++ unsigned long statusbit;
++ u32 saddr;
++
++ if (!(conn = ip_conntrack_get(skb, &ctinfo)))
++ return NF_ACCEPT;
++
++ if (!(conn->status & IPS_NAT_DONE_MASK))
++ return NF_ACCEPT;
++ dir = CTINFO2DIR(ctinfo);
++ statusbit = IPS_SRC_NAT;
++ if (dir == IP_CT_DIR_REPLY)
++ statusbit ^= IPS_NAT_MASK;
++ if (!(conn->status & statusbit))
++ return NF_ACCEPT;
++
++ if (skb->dst)
++ return NF_ACCEPT;
++
++ if (skb->len < sizeof(struct iphdr))
++ return NF_ACCEPT;
++
++ /* use daddr in other direction as masquerade address (lsrc) */
++ iph = skb->nh.iph;
++ saddr = conn->tuplehash[!dir].tuple.dst.ip;
++ if (saddr == iph->saddr)
++ return NF_ACCEPT;
++
++ if (ip_route_input_lookup(skb, iph->daddr, iph->saddr, iph->tos,
++ skb->dev, saddr))
++ return NF_DROP;
++
++ return NF_ACCEPT;
++}
++EXPORT_SYMBOL_GPL(ip_nat_route_input);
++
+ static int __init ip_nat_init(void)
+ {
+ size_t i;
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ip_nat_standalone.c linux-2.6.19.dev/net/ipv4/netfilter/ip_nat_standalone.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ip_nat_standalone.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ip_nat_standalone.c 2006-12-14 03:13:53.000000000 +0100
+@@ -325,6 +325,14 @@
+ .hooknum = NF_IP_LOCAL_OUT,
+ .priority = NF_IP_PRI_NAT_DST,
+ },
++ /* Before routing, route before mangling */
++ {
++ .hook = ip_nat_route_input,
++ .owner = THIS_MODULE,
++ .pf = PF_INET,
++ .hooknum = NF_IP_PRE_ROUTING,
++ .priority = NF_IP_PRI_LAST-1,
++ },
+ /* After packet filtering, change source */
+ {
+ .hook = ip_nat_fn,
+diff -urN linux-2.6.19.old/net/ipv4/netfilter/ipt_MASQUERADE.c linux-2.6.19.dev/net/ipv4/netfilter/ipt_MASQUERADE.c
+--- linux-2.6.19.old/net/ipv4/netfilter/ipt_MASQUERADE.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/netfilter/ipt_MASQUERADE.c 2006-12-14 03:13:53.000000000 +0100
+@@ -85,13 +85,31 @@
+ return NF_ACCEPT;
+
+ mr = targinfo;
+- rt = (struct rtable *)(*pskb)->dst;
+- newsrc = inet_select_addr(out, rt->rt_gateway, RT_SCOPE_UNIVERSE);
+- if (!newsrc) {
+- printk("MASQUERADE: %s ate my IP address\n", out->name);
+- return NF_DROP;
++
++ {
++ struct flowi fl = { .nl_u = { .ip4_u =
++ { .daddr = (*pskb)->nh.iph->daddr,
++ .tos = (RT_TOS((*pskb)->nh.iph->tos) |
++ RTO_CONN),
++ .gw = ((struct rtable *) (*pskb)->dst)->rt_gateway,
++#ifdef CONFIG_IP_ROUTE_FWMARK
++ .fwmark = (*pskb)->nfmark
++#endif
++ } },
++ .oif = out->ifindex };
++ if (ip_route_output_key(&rt, &fl) != 0) {
++ /* Funky routing can do this. */
++ if (net_ratelimit())
++ printk("MASQUERADE:"
++ " No route: Rusty's brain broke!\n");
++ return NF_DROP;
++ }
+ }
+
++ newsrc = rt->rt_src;
++ DEBUGP("newsrc = %u.%u.%u.%u\n", NIPQUAD(newsrc));
++ ip_rt_put(rt);
++
+ write_lock_bh(&masq_lock);
+ ct->nat.masq_index = out->ifindex;
+ write_unlock_bh(&masq_lock);
+diff -urN linux-2.6.19.old/net/ipv4/route.c linux-2.6.19.dev/net/ipv4/route.c
+--- linux-2.6.19.old/net/ipv4/route.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/net/ipv4/route.c 2006-12-14 03:13:53.000000000 +0100
+@@ -1211,6 +1211,7 @@
+
+ /* Gateway is different ... */
+ rt->rt_gateway = new_gw;
++ if (rt->fl.fl4_gw) rt->fl.fl4_gw = new_gw;
+
+ /* Redirect received -> path was valid */
+ dst_confirm(&rth->u.dst);
+@@ -1647,6 +1648,7 @@
+ rth->fl.fl4_fwmark= skb->nfmark;
+ #endif
+ rth->fl.fl4_src = saddr;
++ rth->fl.fl4_lsrc = 0;
+ rth->rt_src = saddr;
+ #ifdef CONFIG_NET_CLS_ROUTE
+ rth->u.dst.tclassid = itag;
+@@ -1657,6 +1659,7 @@
+ dev_hold(rth->u.dst.dev);
+ rth->idev = in_dev_get(rth->u.dst.dev);
+ rth->fl.oif = 0;
++ rth->fl.fl4_gw = 0;
+ rth->rt_gateway = daddr;
+ rth->rt_spec_dst= spec_dst;
+ rth->rt_type = RTN_MULTICAST;
+@@ -1721,7 +1724,7 @@
+ struct fib_result* res,
+ struct in_device *in_dev,
+ __be32 daddr, __be32 saddr, u32 tos,
+- struct rtable **result)
++ u32 lsrc, struct rtable **result)
+ {
+
+ struct rtable *rth;
+@@ -1755,6 +1758,7 @@
+ flags |= RTCF_DIRECTSRC;
+
+ if (out_dev == in_dev && err && !(flags & (RTCF_NAT | RTCF_MASQ)) &&
++ !lsrc &&
+ (IN_DEV_SHARED_MEDIA(out_dev) ||
+ inet_addr_onlink(out_dev, saddr, FIB_RES_GW(*res))))
+ flags |= RTCF_DOREDIRECT;
+@@ -1794,6 +1798,7 @@
+ #endif
+ rth->fl.fl4_src = saddr;
+ rth->rt_src = saddr;
++ rth->fl.fl4_lsrc = lsrc;
+ rth->rt_gateway = daddr;
+ rth->rt_iif =
+ rth->fl.iif = in_dev->dev->ifindex;
+@@ -1801,6 +1806,7 @@
+ dev_hold(rth->u.dst.dev);
+ rth->idev = in_dev_get(rth->u.dst.dev);
+ rth->fl.oif = 0;
++ rth->fl.fl4_gw = 0;
+ rth->rt_spec_dst= spec_dst;
+
+ rth->u.dst.input = ip_forward;
+@@ -1822,19 +1828,21 @@
+ struct fib_result* res,
+ const struct flowi *fl,
+ struct in_device *in_dev,
+- __be32 daddr, __be32 saddr, u32 tos)
++ __be32 daddr, __be32 saddr, u32 tos,
++ u32 lsrc)
+ {
+ struct rtable* rth = NULL;
+ int err;
+ unsigned hash;
+
++ fib_select_default(fl, res);
+ #ifdef CONFIG_IP_ROUTE_MULTIPATH
+- if (res->fi && res->fi->fib_nhs > 1 && fl->oif == 0)
++ if (res->fi && res->fi->fib_nhs > 1)
+ fib_select_multipath(fl, res);
+ #endif
+
+ /* create a routing cache entry */
+- err = __mkroute_input(skb, res, in_dev, daddr, saddr, tos, &rth);
++ err = __mkroute_input(skb, res, in_dev, daddr, saddr, tos, lsrc, &rth);
+ if (err)
+ return err;
+
+@@ -1847,7 +1855,8 @@
+ struct fib_result* res,
+ const struct flowi *fl,
+ struct in_device *in_dev,
+- __be32 daddr, __be32 saddr, u32 tos)
++ __be32 daddr, __be32 saddr, u32 tos,
++ u32 lsrc)
+ {
+ #ifdef CONFIG_IP_ROUTE_MULTIPATH_CACHED
+ struct rtable* rth = NULL, *rtres;
+@@ -1863,7 +1872,7 @@
+ /* distinguish between multipath and singlepath */
+ if (hopcount < 2)
+ return ip_mkroute_input_def(skb, res, fl, in_dev, daddr,
+- saddr, tos);
++ saddr, tos, 0);
+
+ /* add all alternatives to the routing cache */
+ for (hop = 0; hop < hopcount; hop++) {
+@@ -1875,7 +1884,7 @@
+
+ /* create a routing cache entry */
+ err = __mkroute_input(skb, res, in_dev, daddr, saddr, tos,
+- &rth);
++ 0, &rth);
+ if (err)
+ return err;
+
+@@ -1895,7 +1904,7 @@
+ skb->dst = &rtres->u.dst;
+ return err;
+ #else /* CONFIG_IP_ROUTE_MULTIPATH_CACHED */
+- return ip_mkroute_input_def(skb, res, fl, in_dev, daddr, saddr, tos);
++ return ip_mkroute_input_def(skb, res, fl, in_dev, daddr, saddr, tos, lsrc);
+ #endif /* CONFIG_IP_ROUTE_MULTIPATH_CACHED */
+ }
+
+@@ -1911,20 +1920,20 @@
+ */
+
+ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
+- u8 tos, struct net_device *dev)
++ u8 tos, struct net_device *dev, u32 lsrc)
+ {
+ struct fib_result res;
+ struct in_device *in_dev = in_dev_get(dev);
+ struct flowi fl = { .nl_u = { .ip4_u =
+ { .daddr = daddr,
+- .saddr = saddr,
++ .saddr = lsrc? : saddr,
+ .tos = tos,
+ .scope = RT_SCOPE_UNIVERSE,
+ #ifdef CONFIG_IP_ROUTE_FWMARK
+ .fwmark = skb->nfmark
+ #endif
+ } },
+- .iif = dev->ifindex };
++ .iif = lsrc? loopback_dev.ifindex : dev->ifindex };
+ unsigned flags = 0;
+ u32 itag = 0;
+ struct rtable * rth;
+@@ -1957,6 +1966,12 @@
+ if (BADCLASS(daddr) || ZERONET(daddr) || LOOPBACK(daddr))
+ goto martian_destination;
+
++ if (lsrc) {
++ if (MULTICAST(lsrc) || BADCLASS(lsrc) ||
++ ZERONET(lsrc) || LOOPBACK(lsrc))
++ goto e_inval;
++ }
++
+ /*
+ * Now we are ready to route packet.
+ */
+@@ -1966,6 +1981,10 @@
+ goto no_route;
+ }
+ free_res = 1;
++ if (lsrc && res.type != RTN_UNICAST && res.type != RTN_NAT)
++ goto e_inval;
++ fl.iif = dev->ifindex;
++ fl.fl4_src = saddr;
+
+ RT_CACHE_STAT_INC(in_slow_tot);
+
+@@ -1990,7 +2009,7 @@
+ if (res.type != RTN_UNICAST)
+ goto martian_destination;
+
+- err = ip_mkroute_input(skb, &res, &fl, in_dev, daddr, saddr, tos);
++ err = ip_mkroute_input(skb, &res, &fl, in_dev, daddr, saddr, tos, lsrc);
+ if (err == -ENOBUFS)
+ goto e_nobufs;
+ if (err == -EINVAL)
+@@ -2005,6 +2024,8 @@
+ brd_input:
+ if (skb->protocol != htons(ETH_P_IP))
+ goto e_inval;
++ if (lsrc)
++ goto e_inval;
+
+ if (ZERONET(saddr))
+ spec_dst = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+@@ -2047,6 +2068,7 @@
+ rth->u.dst.dev = &loopback_dev;
+ dev_hold(rth->u.dst.dev);
+ rth->idev = in_dev_get(rth->u.dst.dev);
++ rth->fl.fl4_gw = 0;
+ rth->rt_gateway = daddr;
+ rth->rt_spec_dst= spec_dst;
+ rth->u.dst.input= ip_local_deliver;
+@@ -2096,8 +2118,9 @@
+ goto e_inval;
+ }
+
+-int ip_route_input(struct sk_buff *skb, __be32 daddr, __be32 saddr,
+- u8 tos, struct net_device *dev)
++static inline int
++ip_route_input_cached(struct sk_buff *skb, __be32 daddr, __be32 saddr,
++ u8 tos, struct net_device *dev, u32 lsrc)
+ {
+ struct rtable * rth;
+ unsigned hash;
+@@ -2112,6 +2135,7 @@
+ if (rth->fl.fl4_dst == daddr &&
+ rth->fl.fl4_src == saddr &&
+ rth->fl.iif == iif &&
++ rth->fl.fl4_lsrc == lsrc &&
+ rth->fl.oif == 0 &&
+ #ifdef CONFIG_IP_ROUTE_FWMARK
+ rth->fl.fl4_fwmark == skb->nfmark &&
+@@ -2160,7 +2184,19 @@
+ rcu_read_unlock();
+ return -EINVAL;
+ }
+- return ip_route_input_slow(skb, daddr, saddr, tos, dev);
++ return ip_route_input_slow(skb, daddr, saddr, tos, dev, lsrc);
++}
++
++int ip_route_input(struct sk_buff *skb, u32 daddr, u32 saddr,
++ u8 tos, struct net_device *dev)
++{
++ return ip_route_input_cached(skb, daddr, saddr, tos, dev, 0);
++}
++
++int ip_route_input_lookup(struct sk_buff *skb, u32 daddr, u32 saddr,
++ u8 tos, struct net_device *dev, u32 lsrc)
++{
++ return ip_route_input_cached(skb, daddr, saddr, tos, dev, lsrc);
+ }
+
+ static inline int __mkroute_output(struct rtable **result,
+@@ -2239,6 +2275,7 @@
+ rth->fl.fl4_tos = tos;
+ rth->fl.fl4_src = oldflp->fl4_src;
+ rth->fl.oif = oldflp->oif;
++ rth->fl.fl4_gw = oldflp->fl4_gw;
+ #ifdef CONFIG_IP_ROUTE_FWMARK
+ rth->fl.fl4_fwmark= oldflp->fl4_fwmark;
+ #endif
+@@ -2381,6 +2418,7 @@
+ struct flowi fl = { .nl_u = { .ip4_u =
+ { .daddr = oldflp->fl4_dst,
+ .saddr = oldflp->fl4_src,
++ .gw = oldflp->fl4_gw,
+ .tos = tos & IPTOS_RT_MASK,
+ .scope = ((tos & RTO_ONLINK) ?
+ RT_SCOPE_LINK :
+@@ -2486,6 +2524,7 @@
+ dev_out = &loopback_dev;
+ dev_hold(dev_out);
+ fl.oif = loopback_dev.ifindex;
++ fl.fl4_gw = 0;
+ res.type = RTN_LOCAL;
+ flags |= RTCF_LOCAL;
+ goto make_route;
+@@ -2493,7 +2532,7 @@
+
+ if (fib_lookup(&fl, &res)) {
+ res.fi = NULL;
+- if (oldflp->oif) {
++ if (oldflp->oif && dev_out->flags & IFF_UP) {
+ /* Apparently, routing tables are wrong. Assume,
+ that the destination is on link.
+
+@@ -2533,6 +2572,7 @@
+ dev_out = &loopback_dev;
+ dev_hold(dev_out);
+ fl.oif = dev_out->ifindex;
++ fl.fl4_gw = 0;
+ if (res.fi)
+ fib_info_put(res.fi);
+ res.fi = NULL;
+@@ -2540,13 +2580,12 @@
+ goto make_route;
+ }
+
++ if (res.type == RTN_UNICAST)
++ fib_select_default(&fl, &res);
+ #ifdef CONFIG_IP_ROUTE_MULTIPATH
+- if (res.fi->fib_nhs > 1 && fl.oif == 0)
++ if (res.fi->fib_nhs > 1)
+ fib_select_multipath(&fl, &res);
+- else
+ #endif
+- if (!res.prefixlen && res.type == RTN_UNICAST && !fl.oif)
+- fib_select_default(&fl, &res);
+
+ if (!fl.fl4_src)
+ fl.fl4_src = FIB_RES_PREFSRC(res);
+@@ -2583,6 +2622,7 @@
+ rth->fl.fl4_src == flp->fl4_src &&
+ rth->fl.iif == 0 &&
+ rth->fl.oif == flp->oif &&
++ rth->fl.fl4_gw == flp->fl4_gw &&
+ #ifdef CONFIG_IP_ROUTE_FWMARK
+ rth->fl.fl4_fwmark == flp->fl4_fwmark &&
+ #endif
+@@ -3221,3 +3261,4 @@
+ EXPORT_SYMBOL(__ip_select_ident);
+ EXPORT_SYMBOL(ip_route_input);
+ EXPORT_SYMBOL(ip_route_output_key);
++EXPORT_SYMBOL(ip_route_input_lookup);
diff --git a/packages/linux/linux-magicbox-2.6.19.2/202-mips-freestanding.patch b/packages/linux/linux-magicbox-2.6.19.2/202-mips-freestanding.patch
new file mode 100644
index 0000000000..38fd5795d0
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/202-mips-freestanding.patch
@@ -0,0 +1,13 @@
+diff -urN linux-2.6.19.old/arch/mips/Makefile linux-2.6.19.dev/arch/mips/Makefile
+--- linux-2.6.19.old/arch/mips/Makefile 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/arch/mips/Makefile 2006-12-14 03:13:55.000000000 +0100
+@@ -600,6 +600,9 @@
+ core-$(CONFIG_TOSHIBA_RBTX4938) += arch/mips/tx4938/common/
+ load-$(CONFIG_TOSHIBA_RBTX4938) += 0xffffffff80100000
+
++# temporary until string.h is fixed
++cflags-y += -ffreestanding
++
+ cflags-y += -Iinclude/asm-mips/mach-generic
+ drivers-$(CONFIG_PCI) += arch/mips/pci/
+
diff --git a/packages/linux/linux-magicbox-2.6.19.2/204-jffs2_eofdetect.patch b/packages/linux/linux-magicbox-2.6.19.2/204-jffs2_eofdetect.patch
new file mode 100644
index 0000000000..8037dd0671
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/204-jffs2_eofdetect.patch
@@ -0,0 +1,58 @@
+diff -urN linux-2.6.19.old/fs/jffs2/build.c linux-2.6.19.dev/fs/jffs2/build.c
+--- linux-2.6.19.old/fs/jffs2/build.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/fs/jffs2/build.c 2006-12-14 03:13:57.000000000 +0100
+@@ -107,6 +107,17 @@
+ dbg_fsbuild("scanned flash completely\n");
+ jffs2_dbg_dump_block_lists_nolock(c);
+
++ if (c->flags & (1 << 7)) {
++ printk("%s(): unlocking the mtd device... ", __func__);
++ if (c->mtd->unlock)
++ c->mtd->unlock(c->mtd, 0, c->mtd->size);
++ printk("done.\n");
++
++ printk("%s(): erasing all blocks after the end marker... ", __func__);
++ jffs2_erase_pending_blocks(c, -1);
++ printk("done.\n");
++ }
++
+ dbg_fsbuild("pass 1 starting\n");
+ c->flags |= JFFS2_SB_FLAG_BUILDING;
+ /* Now scan the directory tree, increasing nlink according to every dirent found. */
+diff -urN linux-2.6.19.old/fs/jffs2/scan.c linux-2.6.19.dev/fs/jffs2/scan.c
+--- linux-2.6.19.old/fs/jffs2/scan.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/fs/jffs2/scan.c 2006-12-14 03:13:57.000000000 +0100
+@@ -141,9 +141,12 @@
+
+ /* reset summary info for next eraseblock scan */
+ jffs2_sum_reset_collected(s);
+-
+- ret = jffs2_scan_eraseblock(c, jeb, buf_size?flashbuf:(flashbuf+jeb->offset),
+- buf_size, s);
++
++ if (c->flags & (1 << 7))
++ ret = BLK_STATE_ALLFF;
++ else
++ ret = jffs2_scan_eraseblock(c, jeb, buf_size?flashbuf:(flashbuf+jeb->offset),
++ buf_size, s);
+
+ if (ret < 0)
+ goto out;
+@@ -540,6 +543,17 @@
+ return err;
+ }
+
++ if ((buf[0] == 0xde) &&
++ (buf[1] == 0xad) &&
++ (buf[2] == 0xc0) &&
++ (buf[3] == 0xde)) {
++ /* end of filesystem. erase everything after this point */
++ printk("%s(): End of filesystem marker found at 0x%x\n", __func__, jeb->offset);
++ c->flags |= (1 << 7);
++
++ return BLK_STATE_ALLFF;
++ }
++
+ /* We temporarily use 'ofs' as a pointer into the buffer/jeb */
+ ofs = 0;
+
diff --git a/packages/linux/linux-magicbox-2.6.19.2/207-powerpc_asm_segment_h.patch b/packages/linux/linux-magicbox-2.6.19.2/207-powerpc_asm_segment_h.patch
new file mode 100644
index 0000000000..c9859e2f29
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/207-powerpc_asm_segment_h.patch
@@ -0,0 +1,10 @@
+diff -urN linux-2.6.19.old/include/asm-powerpc/segment.h linux-2.6.19.dev/include/asm-powerpc/segment.h
+--- linux-2.6.19.old/include/asm-powerpc/segment.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/include/asm-powerpc/segment.h 2006-12-14 03:13:59.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef _ASM_SEGMENT_H
++#define _ASM_SEGMENT_H
++
++/* Only here because we have some old header files that expect it.. */
++
++#endif /* _ASM_SEGMENT_H */
diff --git a/packages/linux/linux-magicbox-2.6.19.2/208-rtl8110sb_fix.patch b/packages/linux/linux-magicbox-2.6.19.2/208-rtl8110sb_fix.patch
new file mode 100644
index 0000000000..620a9daab9
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/208-rtl8110sb_fix.patch
@@ -0,0 +1,25 @@
+diff -urN linux-2.6.19.old/drivers/net/r8169.c linux-2.6.19.dev/drivers/net/r8169.c
+--- linux-2.6.19.old/drivers/net/r8169.c 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/drivers/net/r8169.c 2006-12-14 03:14:01.000000000 +0100
+@@ -491,7 +491,7 @@
+ #endif
+
+ static const u16 rtl8169_intr_mask =
+- SYSErr | LinkChg | RxOverflow | RxFIFOOver | TxErr | TxOK | RxErr | RxOK;
++ LinkChg | RxOverflow | RxFIFOOver | TxErr | TxOK | RxErr | RxOK;
+ static const u16 rtl8169_napi_event =
+ RxOK | RxOverflow | RxFIFOOver | TxOK | TxErr;
+ static const unsigned int rtl8169_rx_config =
+@@ -2584,10 +2584,12 @@
+ if (!(status & rtl8169_intr_mask))
+ break;
+
++#if 0
+ if (unlikely(status & SYSErr)) {
+ rtl8169_pcierr_interrupt(dev);
+ break;
+ }
++#endif
+
+ if (status & LinkChg)
+ rtl8169_check_link_status(dev, tp, ioaddr);
diff --git a/packages/linux/linux-magicbox-2.6.19.2/209-mini_fo.patch b/packages/linux/linux-magicbox-2.6.19.2/209-mini_fo.patch
new file mode 100644
index 0000000000..a8e6d88d63
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/209-mini_fo.patch
@@ -0,0 +1,7807 @@
+diff -urN linux-2.6.19.old/fs/Kconfig linux-2.6.19.dev/fs/Kconfig
+--- linux-2.6.19.old/fs/Kconfig 2006-12-14 03:13:20.000000000 +0100
++++ linux-2.6.19.dev/fs/Kconfig 2006-12-14 03:14:03.000000000 +0100
+@@ -468,6 +468,9 @@
+ This option will enlarge your kernel, but it allows debugging of
+ ocfs2 filesystem issues.
+
++config MINI_FO
++ tristate "Mini fanout overlay filesystem"
++
+ config MINIX_FS
+ tristate "Minix fs support"
+ help
+diff -urN linux-2.6.19.old/fs/Makefile linux-2.6.19.dev/fs/Makefile
+--- linux-2.6.19.old/fs/Makefile 2006-12-14 03:13:20.000000000 +0100
++++ linux-2.6.19.dev/fs/Makefile 2006-12-14 03:14:03.000000000 +0100
+@@ -71,6 +71,7 @@
+ obj-$(CONFIG_RAMFS) += ramfs/
+ obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
+ obj-$(CONFIG_CODA_FS) += coda/
++obj-$(CONFIG_MINI_FO) += mini_fo/
+ obj-$(CONFIG_MINIX_FS) += minix/
+ obj-$(CONFIG_FAT_FS) += fat/
+ obj-$(CONFIG_MSDOS_FS) += msdos/
+diff -urN linux-2.6.19.old/fs/mini_fo/aux.c linux-2.6.19.dev/fs/mini_fo/aux.c
+--- linux-2.6.19.old/fs/mini_fo/aux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/aux.c 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,580 @@
++/*
++ * Copyright (c) 1997-2003 Erez Zadok
++ * Copyright (c) 2001-2003 Stony Brook University
++ *
++ * For specific licensing information, see the COPYING file distributed with
++ * this package, or get one from ftp://ftp.filesystems.org/pub/fist/COPYING.
++ *
++ * This Copyright notice must be kept intact and distributed with all
++ * fistgen sources INCLUDING sources generated by fistgen.
++ */
++/*
++ * Copyright (C) 2004, 2005 Markus Klotzbuecher <mk@creamnet.de>
++ *
++ * 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.
++ */
++/*
++ * $Id$
++ */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include "fist.h"
++#include "mini_fo.h"
++
++/* check if file exists in storage */
++int exists_in_storage(dentry_t *dentry)
++{
++ check_mini_fo_dentry(dentry);
++ if(dtost(dentry) == MODIFIED || dtost(dentry) == CREATED || dtost(dentry) == DEL_REWRITTEN)
++ return 1;
++ return 0;
++}
++
++/* check if dentry is in an existing state */
++int is_mini_fo_existant(dentry_t *dentry)
++{
++ check_mini_fo_dentry(dentry);
++
++ if(dtost(dentry) == DELETED || dtost(dentry) == NON_EXISTANT)
++ return 0;
++ else
++ return 1;
++}
++
++/*
++ * This function will create a negative storage dentry for
++ * dentry, what is required for many create like options.
++ * It will create the storage structure if necessary.
++ */
++int get_neg_sto_dentry(dentry_t *dentry)
++{
++ int err = 0;
++ unsigned int len;
++ const unsigned char *name;
++
++ if(!dentry ||
++ !dtopd(dentry) ||
++ !(dtost(dentry) == UNMODIFIED ||
++ dtost(dentry) == NON_EXISTANT ||
++ dtost(dentry) == DELETED)) {
++ printk(KERN_CRIT "mini_fo: get_neg_sto_dentry: invalid dentry passed.\n");
++ err = -1;
++ goto out;
++ }
++ /* Have we got a neg. dentry already? */
++ if(dtohd2(dentry)) {
++ err = 0;
++ goto out;
++ }
++ if(dtost(dentry->d_parent) == UNMODIFIED) {
++ /* build sto struct */
++ err = build_sto_structure(dentry->d_parent->d_parent, dentry->d_parent);
++ if(err ||
++ dtost(dentry->d_parent) != MODIFIED) {
++ printk(KERN_CRIT "mini_fo: get_neg_sto_dentry: ERROR building sto structure.\n");
++ err = -1;
++ goto out;
++ }
++ }
++
++ len = dentry->d_name.len;
++ name = dentry->d_name.name;
++
++ dtohd2(dentry) =
++ lookup_one_len(name, dtohd2(dentry->d_parent), len);
++
++ out:
++ return err;
++}
++
++int check_mini_fo_dentry(dentry_t *dentry)
++{
++ ASSERT(dentry != NULL);
++ ASSERT(dtopd(dentry) != NULL);
++ ASSERT((dtohd(dentry) != NULL) || (dtohd2(dentry) != NULL));
++
++/* if(dtost(dentry) == MODIFIED) { */
++/* ASSERT(dentry->d_inode != NULL); */
++/* ASSERT(dtohd(dentry) != NULL); */
++/* ASSERT(dtohd(dentry)->d_inode != NULL); */
++/* ASSERT(dtohd2(dentry) != NULL); */
++/* ASSERT(dtohd2(dentry)->d_inode != NULL); */
++/* } */
++/* else if(dtost(dentry) == UNMODIFIED) { */
++/* ASSERT(dentry->d_inode != NULL); */
++/* ASSERT( */
++/* } */
++ return 0;
++}
++
++int check_mini_fo_file(file_t *file)
++{
++ ASSERT(file != NULL);
++ ASSERT(ftopd(file) != NULL);
++ ASSERT(file->f_dentry != NULL);
++
++ /* violent checking, check depending of state and type
++ * if(S_ISDIR(file->f_dentry->d_inode->i_mode)) {}
++ */
++ ASSERT((ftohf(file) != NULL) || (ftohf2(file) != NULL));
++ return 0;
++}
++
++int check_mini_fo_inode(inode_t *inode)
++{
++ ASSERT(inode != NULL);
++ ASSERT(itopd(inode) != NULL);
++ ASSERT((itohi(inode) != NULL) || (itohi2(inode) != NULL));
++ return 0;
++}
++
++/*
++ * will walk a base path as provided by get_mini_fo_bpath and return
++ * the (hopefully ;-) ) positive dentry of the renamed base dir.
++ *
++ * This does some work of path_init.
++ */
++dentry_t *bpath_walk(super_block_t *sb, char *bpath)
++{
++ int err;
++ struct nameidata nd;
++
++ /* be paranoid */
++ if(!bpath || bpath[0] != '/') {
++ printk(KERN_CRIT "mini_fo: bpath_walk: Invalid string.\n");
++ return NULL;
++ }
++ if(!sb || !stopd(sb)) {
++ printk(KERN_CRIT "mini_fo: bpath_walk: Invalid sb.\n");
++ return NULL;
++ }
++
++ /* setup nd as path_init does */
++ nd.last_type = LAST_ROOT; /* if there are only slashes... */
++ nd.flags = LOOKUP_FOLLOW;
++ /* fix this: how do I reach this lock?
++ * read_lock(&current->fs->lock); */
++ nd.mnt = mntget(stopd(sb)->hidden_mnt);
++ nd.dentry = dget(stopd(sb)->base_dir_dentry);
++ /* read_unlock(&current->fs->lock); */
++
++ err = path_walk(bpath+1, &nd);
++
++ /* validate */
++ if (err || !nd.dentry || !nd.dentry->d_inode) {
++ printk(KERN_CRIT "mini_fo: bpath_walk: path_walk failed.\n");
++ return NULL;
++ }
++ return nd.dentry;
++}
++
++
++/* returns the full path of the basefile incl. its name */
++int get_mini_fo_bpath(dentry_t *dentry, char **bpath, int *bpath_len)
++{
++ char *buf_walker;
++ int len = 0;
++ dentry_t *sky_walker;
++
++ if(!dentry || !dtohd(dentry)) {
++ printk(KERN_CRIT "mini_fo: get_mini_fo_bpath: invalid dentry passed.\n");
++ return -1;
++ }
++ sky_walker = dtohd(dentry);
++
++ do {
++ len += sky_walker->d_name.len + 1 ; /* 1 for '/' */
++ sky_walker = sky_walker->d_parent;
++ } while(sky_walker != stopd(dentry->d_inode->i_sb)->base_dir_dentry);
++
++ /* 1 to oil the loop */
++ *bpath = (char*) kmalloc(len + 1, GFP_KERNEL);
++ if(!*bpath) {
++ printk(KERN_CRIT "mini_fo: get_mini_fo_bpath: out of mem.\n");
++ return -1;
++ }
++ buf_walker = *bpath+len; /* put it on last char */
++ *buf_walker = '\n';
++ sky_walker = dtohd(dentry);
++
++ do {
++ buf_walker -= sky_walker->d_name.len;
++ strncpy(buf_walker,
++ sky_walker->d_name.name,
++ sky_walker->d_name.len);
++ *(--buf_walker) = '/';
++ sky_walker = sky_walker->d_parent;
++ } while(sky_walker != stopd(dentry->d_inode->i_sb)->base_dir_dentry);
++
++ /* bpath_len doesn't count newline! */
++ *bpath_len = len;
++ return 0;
++}
++
++int mini_fo_cp_cont(dentry_t *tgt_dentry, struct vfsmount *tgt_mnt,
++ dentry_t *src_dentry, struct vfsmount *src_mnt)
++{
++ void *buf;
++ mm_segment_t old_fs;
++ file_t *tgt_file;
++ file_t *src_file;
++ int bytes, len, tmp, err;
++ err = 0;
++
++ if(!(tgt_dentry->d_inode && src_dentry->d_inode)) {
++ printk(KERN_CRIT "mini_fo_cp_cont: ERROR, neg. dentry passed.\n");
++ err = -EINVAL;
++ goto out;
++ }
++
++ dget(tgt_dentry);
++ dget(src_dentry);
++ mntget(tgt_mnt);
++ mntget(src_mnt);
++
++ /* open file write only */
++ tgt_file = dentry_open(tgt_dentry, tgt_mnt, 0x1);
++ if(!tgt_file || IS_ERR(tgt_file)) {
++ printk(KERN_CRIT "mini_fo_cp_cont: ERROR opening target file.\n");
++ err = PTR_ERR(tgt_file);
++ goto out_err;
++ }
++
++ /* open file read only */
++ src_file = dentry_open(src_dentry, src_mnt, 0x0);
++ if(!src_file || IS_ERR(src_file)) {
++ printk(KERN_CRIT "mini_fo_cp_cont: ERROR opening source file.\n");
++ err = PTR_ERR(src_file);
++
++ /* close target file */
++ fput(tgt_file);
++ goto out_err;
++ }
++
++ /* check if the filesystem(s) support read respective write */
++ if(!src_file->f_op->read || !tgt_file->f_op->write) {
++ printk(KERN_CRIT "mini_fo_cp_cont: ERROR, no fs read or write support.\n");
++ err = -EPERM;
++ goto out_close;
++ }
++
++ /* allocate a page for transfering the data */
++ buf = (void *) __get_free_page(GFP_KERNEL);
++ if(!buf) {
++ printk(KERN_CRIT "mini_fo_cp_cont: ERROR, out of kernel mem.\n");
++ goto out_err;
++ }
++
++ tgt_file->f_pos = 0;
++ src_file->f_pos = 0;
++
++ old_fs = get_fs();
++ set_fs(KERNEL_DS);
++
++ /* Doing this I assume that a read operation will return a full
++ * buffer while there is still data to read, and a less than
++ * full buffer when all data has been read.
++ */
++ bytes = len = PAGE_SIZE;
++ while(bytes == len) {
++ bytes = src_file->f_op->read(src_file, buf, len,
++ &src_file->f_pos);
++ tmp = tgt_file->f_op->write(tgt_file, buf, bytes,
++ &tgt_file->f_pos);
++ if(tmp != bytes) {
++ printk(KERN_CRIT "mini_fo_cp_cont: ERROR writing.\n");
++ goto out_close_unset;
++ }
++ }
++
++ free_page((unsigned long) buf);
++ set_fs(old_fs);
++ fput(tgt_file);
++ fput(src_file);
++ goto out;
++
++ out_close_unset:
++ free_page((unsigned long) buf);
++ set_fs(old_fs);
++
++ out_close:
++ fput(tgt_file);
++ fput(src_file);
++
++ out_err:
++ dput(tgt_dentry);
++ dput(src_dentry);
++
++ /* mk: not sure if this need to be done */
++ mntput(tgt_mnt);
++ mntput(src_mnt);
++
++ out:
++ return err;
++}
++
++/* mk:
++ * ndl (no-duplicate list) stuff
++ * This is used in mini_fo_readdir, to save the storage directory contents
++ * and later when reading base, match them against the list in order
++ * to avoid duplicates.
++ */
++
++/* add a file specified by name and len to the ndl
++ * Return values: 0 on success, <0 on failure.
++ */
++int ndl_add_entry(struct readdir_data *rd, const char *name, int len)
++{
++ struct ndl_entry *tmp_entry;
++
++ tmp_entry = (struct ndl_entry *)
++ kmalloc(sizeof(struct ndl_entry), GFP_KERNEL);
++ if(!tmp_entry) {
++ printk(KERN_CRIT "mini_fo: ndl_add_entry: out of mem.\n");
++ return -ENOMEM;
++ }
++ tmp_entry->name = (char*) kmalloc(len, GFP_KERNEL);
++ if(!tmp_entry->name) {
++ printk(KERN_CRIT "mini_fo: ndl_add_entry: out of mem.\n");
++ return -ENOMEM;
++ }
++ strncpy(tmp_entry->name, name, len);
++ tmp_entry->len = len;
++
++ list_add(&tmp_entry->list, &rd->ndl_list);
++ rd->ndl_size++;
++ return 0;
++}
++
++/* delete all list entries and free memory */
++void ndl_put_list(struct readdir_data *rd)
++{
++ struct list_head *tmp;
++ struct ndl_entry *tmp_entry;
++
++ if(rd->ndl_size <= 0)
++ return;
++ while(!list_empty(&rd->ndl_list)) {
++ tmp = rd->ndl_list.next;
++ list_del(tmp);
++ tmp_entry = list_entry(tmp, struct ndl_entry, list);
++ kfree(tmp_entry->name);
++ kfree(tmp_entry);
++ }
++ rd->ndl_size = 0;
++}
++
++/* Check if a file specified by name and len is in the ndl
++ * Return value: 0 if not in list, 1 if file is found in ndl.
++ */
++int ndl_check_entry(struct readdir_data *rd, const char *name, int len)
++{
++ struct list_head *tmp;
++ struct ndl_entry *tmp_entry;
++
++ if(rd->ndl_size <= 0)
++ return 0;
++
++ list_for_each(tmp, &rd->ndl_list) {
++ tmp_entry = list_entry(tmp, struct ndl_entry, list);
++ if(tmp_entry->len != len)
++ continue;
++ if(!strncmp(tmp_entry->name, name, len))
++ return 1;
++ }
++ return 0;
++}
++
++/* mk:
++ * Recursive function to create corresponding directorys in the storage fs.
++ * The function will build the storage directorys up to dentry.
++ */
++int build_sto_structure(dentry_t *dir, dentry_t *dentry)
++{
++ int err;
++ dentry_t *hidden_sto_dentry;
++ dentry_t *hidden_sto_dir_dentry;
++
++ if(dentry->d_parent != dir) {
++ printk(KERN_CRIT "mini_fo: build_sto_structure: invalid parameter or meta data corruption [1].\n");
++ return 1;
++ }
++
++ if(dtost(dir) != MODIFIED) {
++ err = build_sto_structure(dir->d_parent, dentry->d_parent);
++ if(err)
++ return err;
++ }
++
++ /* ok, coming back again. */
++ check_mini_fo_dentry(dentry);
++ hidden_sto_dentry = dtohd2(dentry);
++
++ if(!hidden_sto_dentry) {
++ /*
++ * This is the case after creating the first
++ * hidden_sto_dentry.
++ * After one negative storage_dentry, all pointers to
++ * hidden_storage dentries are set to NULL. We need to
++ * create the negative dentry before we create the storage
++ * file.
++ */
++ unsigned int len;
++ const unsigned char *name;
++ len = dtohd(dentry)->d_name.len;
++ name = dtohd(dentry)->d_name.name;
++ hidden_sto_dentry = lookup_one_len(name, dtohd2(dir), len);
++ dtohd2(dentry) = hidden_sto_dentry;
++ }
++
++ /* was: hidden_sto_dir_dentry = lock_parent(hidden_sto_dentry); */
++ hidden_sto_dir_dentry = dget(hidden_sto_dentry->d_parent);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++ /* lets be safe */
++ if(dtohd2(dir) != hidden_sto_dir_dentry) {
++ printk(KERN_CRIT "mini_fo: build_sto_structure: invalid parameter or meta data corruption [2].\n");
++ return 1;
++ }
++
++ /* check for errors in lock_parent */
++ err = PTR_ERR(hidden_sto_dir_dentry);
++ if(IS_ERR(hidden_sto_dir_dentry)) {
++ printk(KERN_CRIT "mini_fo: build_sto_structure: lock_parent failed.\n");
++ return err;
++ }
++
++ err = vfs_mkdir(hidden_sto_dir_dentry->d_inode,
++ hidden_sto_dentry,
++ dir->d_inode->i_mode);
++
++ if(err) {
++ printk(KERN_CRIT "mini_fo: build_sto_structure: failed to create storage dir [1].\n");
++ /* was: unlock_dir(dir); */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&dir->d_inode->i_mutex);
++#else
++ up(&dir->d_inode->i_sem);
++#endif
++ dput(dir);
++ return err;
++ }
++
++ /* everything ok! */
++ if(!dtohd2(dentry)->d_inode) {
++ printk(KERN_CRIT "mini_fo: build_sto_structure: failed to create storage dir [2].\n");
++ /* was: unlock_dir(dir); */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&dir->d_inode->i_mutex);
++#else
++ up(&dir->d_inode->i_sem);
++#endif
++ dput(dir);
++ return 1;
++ }
++
++ /* interpose the new inode and set new state */
++ itohi2(dentry->d_inode) = igrab(dtohd2(dentry)->d_inode);
++ dtopd(dentry)->state = MODIFIED;
++
++ /* initalize the wol list */
++ itopd(dentry->d_inode)->deleted_list_size = -1;
++ itopd(dentry->d_inode)->renamed_list_size = -1;
++ meta_build_lists(dentry);
++
++ fist_copy_attr_all(dentry->d_inode, itohi2(dentry->d_inode));
++ fist_copy_attr_timesizes(dir->d_inode,
++ hidden_sto_dir_dentry->d_inode);
++ dir->d_inode->i_nlink++;
++ /* was: unlock_dir(hidden_sto_dir_dentry); */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++ dput(hidden_sto_dir_dentry);
++ return 0;
++}
++
++
++#if 0 /* unused */
++
++/*
++ * Read "len" bytes from "filename" into "buf".
++ * "buf" is in kernel space.
++ */
++int
++mini_fo_read_file(const char *filename, void *buf, int len)
++{
++ file_t *filp;
++ mm_segment_t oldfs;
++ int bytes;
++ /* Chroot? Maybe NULL isn't right here */
++ filp = filp_open(filename, O_RDONLY, 0);
++ if (!filp || IS_ERR(filp)) {
++ printk("mini_fo_read_file err %d\n", (int) PTR_ERR(filp));
++ return -1; /* or do something else */
++ }
++
++ if (!filp->f_op->read)
++ return -2; /* file(system) doesn't allow reads */
++
++ /* now read len bytes from offset 0 */
++ filp->f_pos = 0; /* start offset */
++ oldfs = get_fs();
++ set_fs(KERNEL_DS);
++ bytes = filp->f_op->read(filp, buf, len, &filp->f_pos);
++ set_fs(oldfs);
++
++ /* close the file */
++ fput(filp);
++
++ return bytes;
++}
++
++
++
++/*
++ * Write "len" bytes from "buf" to "filename"
++ * "buf" is in kernel space.
++ */
++int
++mini_fo_write_file(const char *filename, void *buf, int len)
++{
++ file_t *filp;
++ mm_segment_t oldfs;
++ int bytes;
++ /* Chroot? Maybe NULL isn't right here */
++ filp = filp_open(filename, O_RDWR|O_CREAT, 0640);
++ if (!filp || IS_ERR(filp)) {
++ printk("mini_fo_write_file err %d\n", (int) PTR_ERR(filp));
++ return -1; /* or do something else */
++ }
++
++ if (!filp->f_op->write)
++ return -2; /* file(system) doesn't allow writes */
++
++ /* now write len bytes from offset 0 */
++ filp->f_pos = 0; /* start offset */
++ oldfs = get_fs();
++ set_fs(KERNEL_DS);
++ bytes = filp->f_op->write(filp, buf, len, &filp->f_pos);
++ set_fs(oldfs);
++
++ /* close the file */
++ fput(filp);
++
++ return bytes;
++}
++
++#endif /* unused */
++
+diff -urN linux-2.6.19.old/fs/mini_fo/ChangeLog linux-2.6.19.dev/fs/mini_fo/ChangeLog
+--- linux-2.6.19.old/fs/mini_fo/ChangeLog 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/ChangeLog 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,281 @@
++2006-01-24 Markus Klotzbuecher <mk@mary.denx.de>
++
++ * Add tons of ugly ifdefs to Ed L. Cashin's mutex patch to
++ retain backwards compatibility.
++
++2006-01-24 Ed L. Cashin <ecashin@coraid.com>
++
++ * Support for the new mutex infrastructure
++ (7892f2f48d165a34b0b8130c8a195dfd807b8cb6)
++
++2005-10-15 Markus Klotzbuecher <mk@localhost.localdomain>
++
++ * Bugfix for a serious memory leak in mini_fo_follow_link.
++
++2005-09-21 Markus Klotzbuecher <mk@mary>
++
++ * new release 0.6.1
++
++ * fix of a compiler warning due to changes in 2.6.13
++
++2005-09-21 Klaus Wenninger <klaus.wenninger@siemens.com>
++
++ * file.c: readdir: fix for a bug that caused directory entries
++ to show up twice when using storage filesystems such as
++ minixfs or pramfs.
++
++2005-06-30 Eric Lammerts <eric@lammerts.org>
++
++ * fix for an oops when overwriting a binary thats beeing
++ executed.
++
++2005-06-09 <mk@mary>
++
++ * Renamed overlay to mini_fo-overlay.
++
++ * Added mini_fo-merge script to allow merging of storage and base
++ after making modifications.
++
++2005-05-22 root <mk@mary>
++
++ * Added overlay script that allows to easily mount mini_fo ontop
++ of a given base directory
++
++2005-05-10 <mk@mary>
++
++ * inode.c: xattr functions return -EOPNOSUPP instead of
++ -ENOSUPP, what confuses "ls -l"
++
++ * Changed license from LGPL to GPL.
++
++2005-05-08 root <mk@mary>
++
++ * Makefile: clean it up and added make install and make
++ uninstall.
++
++2005-05-06 <mk@mary>
++
++ * merged devel branch back to main. [v0-6-0-pre3]
++
++ * removed unused files print.c and fist_ioctl. [devel-0-0-18]
++
++ * ioctl: removed fist_ioctl stuff, that is not needed for
++ now.
++
++2005-05-03 <mk@mary>
++
++ * file.c: simplified mini_fo_open and mini_fo_setattr using
++ new state changing functions. [devel-0-0-17]
++
++ * inode.c: Fixed getattr state bug (see below) in 2.4 function
++ mini_fo_inode revalidate.
++
++ * inode.c: found an other bug in mini_fo_getattr. States are not
++ reliable in this function, as a file can be opened, unlinked and
++ the getattr function called. This results in a deleted dentry
++ with an inode. Fix is to ignore states and simply use the inode
++ available.
++
++2005-04-29 <mk@mary>
++
++ * file.c: Bugfix and cleanup in fasync and fsync. [devel-0-0-16]
++
++ * file.c: do not use mini_fo_lock so the generic version is
++ used (I guess).
++
++ * inode.c: getattr, never call getattr on lower files, as this
++ will cause the inum to change.
++
++ * inode.c: rename_reg_file renamed to rename_nondir, as it
++ doesn't matter as long it't not a dir. Removed all
++ rename_dev_file etc.
++
++ * tagged as devel-0-0-15
++
++ * inode.c: added support for chosing support for extended
++ attrs at compile time by XATTR define in mini_fo.h .
++
++ * inode.c: fixed mini_fo_getattr to use mini_fo inode and not
++ lower again, what avoids inode number changes that confused
++ rm again. This is the proper solution.
++
++2005-04-24 <mk@mary>
++
++ * all files: updated Copyright notive to 2005. [devel-0-0-14]
++
++ * inode.c: fixed mini_fo_getattr to not change the inode
++ number, even if lower files change.
++
++ * super.c: fixed a bug that caused deleted base file to show
++ up suddenly after some time, or after creating a special
++ file. The problem was that after some time or after special
++ file creating sync_sb_inodes is called by the vfs, that
++ called our mini_fo_put_inode. There was (wrongly) called
++ __meta_put_lists, that nuked the lists, although the inode
++ was going to continue its life. Moving __meta_put_lists to
++ mini_fo_clear_inode, where an inode is really destroyed,
++ solved the problem.
++
++
++2005-04-23 <mk@mary>
++
++ * state.c, aux.c: more cleaning up and
++ simplifications. [devel-0-0-13]
++
++ * inode.c: implemented mini_fo_getattr, that was required for
++ 2.6 because inode_revalidate has been remove there, and the
++ old "du" bug returned.
++
++
++2005-04-20 <mk@mary>
++
++ * aux.c: get_neg_sto_dentry(): allow to be called for dentries
++ in state UNMODIFIED, NON_EXISTANT _and_ DELETED.
++
++2005-04-19 <mk@mary>
++
++ * Fixed a bug under 2.6 that caused files deleted via mini_fo
++ not to be deleted properly and therefore the fs filled up
++ untill no memory was left. [devel-0-0-12]
++
++ * Added basic hard link support. This means that creating
++ hardlinks will work, but existing ones will be treated as
++ individual files. [devel-0-0-11]
++
++2005-04-17 <mk@mary>
++
++ * Bugfixes
++
++2005-04-13 root <mk@mary>
++
++ * Added file state.c for the state transition
++ functions. Doesn't work very well yet, though...
++
++2005-04-12 <mk@mary>
++
++ * Porting to 2.6 started, which is easier than expected, also
++ due to Olivier previous work.
++
++2005-04-08 <mk@mary>
++
++ * Fixed the bug that caused du to return invalid sizes of
++ directory trees. The problem was that
++ mini_fo_inode_revalidate didn't always copy the attributes
++ from the base inode properly.
++
++2005-04-01 Markus Klotzbuecher <mk@chasey>
++
++ * Merged devel branch back to main trunk and updated the
++ RELEASE notes. This will be 0-6-0-pre1.
++
++2005-03-31 Markus Klotzbuecher <mk@chasey>
++
++ * Fixed some bugs in rename_reg_file, that only showed up in
++ the kernel compile test. Kernel compiles cleanly ontop of
++ mini_fo, now also make mrproper etc. work. Seems pretty stable.
++
++2005-03-28 Markus Klotzbuecher <mk@chasey>
++
++ * Many, many directory renaming bugfixes and a lot of other
++ cleanup. Dir renaming seems to work relatively stable.
++
++2005-03-22 Markus Klotzbuecher <mk@chasey>
++
++ * Finished implementing lightweight directory renaming. Some
++ basic testing indicates it works fine.
++ Next is to implement testcases for the testsuite and confirm
++ everything is really working ok.
++
++2005-03-18 Markus Klotzbuecher <mk@chasey>
++
++ * Finished implementing meta.c stuff required for directory
++ renaming.
++
++2005-03-17 Markus Klotzbuecher <mk@chasey>
++
++ * Fixed all compile warnings + an extremly old bug that
++ somehow crept in while reworking the wol stuff to the META
++ system. Turning on -Werror again... :-)
++
++ * Fixed some bugs in the new rename_reg_file function.
++
++ * Rewrote mini_fo rename and split it into several
++ subfunctions, that handle the different types
++ seperately. Rewrote the regular file function aswell, as it
++ was implemented somewhat inefficient.
++
++2005-03-16 Markus Klotzbuecher <mk@chasey>
++
++ * Implemented new META subsystem, removed old WOL stuff in favor
++ if it.
++
++ * After some basic testing everything seems ok...
++
++2005-03-11 Markus Klotzbuecher <mk@chasey>
++
++ * Renaming a non regular file caused trouble because I always
++ tried to copy the contents. Now I only do this for regular
++ files. mini_fo_rename still isn't implemented properly, renaming
++ of device files, symlinks etc. results in a empty regular file
++ instead of the proper type.
++
++ * Directory renaming suddenly works! What a surprise! I guess
++ this is because renaming is implemented as making a copy and
++ removing the original. Still this might not work
++ everywhere...
++
++2005-03-09 Markus Klotzbuecher <mk@chasey>
++
++ * Bugfix, when a mini_fo directory that exists in storage
++ (state: MODIFIED, CREATED and DEL_REWRITTEN) is deleted, a
++ possibly existing WOL file contained in it needs to be
++ deleted too.
++
++ * Starting cleanup: defined state names in order to get rid of
++ the state numbers.
++
++2005-03-08 Markus Klotzbuecher <mk@chasey>
++
++ * Makefile fix, fist_ioctl was built against wrong sources if ARCH=um
++
++ * Fixed a bug in dentry.c, mini_fo_d_hash. In state 4 =
++ DEL_REWRITTEN the hash was calculated from the base dentry,
++ which was wrong and and caused assertions in
++ __mini_fo_hidden_dentry to fail.
++
++2005-02-21 <mk@mary>
++
++ * Implemented directory deleting (inode.c)
++
++ * main.c: made mini_fo_parse_options a little more robust.
++
++2004-12-22 <mk@mary>
++
++ * Makefile cleanup and uml stuff, removed unneccessary files
++
++ * Created a new and hopefully more informative README
++
++ * CHANGELOG: created a new CHANGELOG and added old entries reversely
++
++
++2004-10-24 Gleb Natapov <gleb@nbase.co.il>
++
++ * Fix: owner and group where not correctly copied from base to
++ storage.
++
++
++2004-10-05 Gleb Natapov <gleb@nbase.co.il>
++
++ * Implementation of fsync, fasync and lock mini_fo functions.
++
++
++2004-09-29 Bob Lee <bob@pantasys.com>
++
++ * Fix of a serious pointer bug
++
++
++2004-09-28 Gleb Natapov <gleb@nbase.co.il>
++
++ * Implementation of mini_fo_mknod and mini_fo_rename, support
++ for device files.
++
+diff -urN linux-2.6.19.old/fs/mini_fo/dentry.c linux-2.6.19.dev/fs/mini_fo/dentry.c
+--- linux-2.6.19.old/fs/mini_fo/dentry.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/dentry.c 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,244 @@
++/*
++ * Copyright (c) 1997-2003 Erez Zadok
++ * Copyright (c) 2001-2003 Stony Brook University
++ *
++ * For specific licensing information, see the COPYING file distributed with
++ * this package, or get one from ftp://ftp.filesystems.org/pub/fist/COPYING.
++ *
++ * This Copyright notice must be kept intact and distributed with all
++ * fistgen sources INCLUDING sources generated by fistgen.
++ */
++/*
++ * Copyright (C) 2004, 2005 Markus Klotzbuecher <mk@creamnet.de>
++ *
++ * 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.
++ */
++
++/*
++ * $Id$
++ */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include "fist.h"
++#include "mini_fo.h"
++
++/*
++ * THIS IS A BOOLEAN FUNCTION: returns 1 if valid, 0 otherwise.
++ */
++STATIC int
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++mini_fo_d_revalidate(dentry_t *dentry, struct nameidata *nd)
++#else
++mini_fo_d_revalidate(dentry_t *dentry, int flags)
++#endif
++{
++ int err1 = 1; /* valid = 1, invalid = 0 */
++ int err2 = 1;
++ dentry_t *hidden_dentry;
++ dentry_t *hidden_sto_dentry;
++
++
++ check_mini_fo_dentry(dentry);
++
++ hidden_dentry = dtohd(dentry);
++ hidden_sto_dentry = dtohd2(dentry);
++
++ if(hidden_dentry &&
++ hidden_dentry->d_op &&
++ hidden_dentry->d_op->d_revalidate) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ err1 = hidden_dentry->d_op->d_revalidate(hidden_dentry, nd);
++#else
++ err1 = hidden_dentry->d_op->d_revalidate(hidden_dentry, flags);
++#endif
++ }
++ if(hidden_sto_dentry &&
++ hidden_sto_dentry->d_op &&
++ hidden_sto_dentry->d_op->d_revalidate) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ err2 = hidden_sto_dentry->d_op->d_revalidate(hidden_sto_dentry,
++ nd);
++#else
++ err2 = hidden_sto_dentry->d_op->d_revalidate(hidden_sto_dentry,
++ flags);
++#endif
++ }
++
++ /* mk: if one of the lower level dentries are valid,
++ * the mini_fo dentry is too.
++ */
++ return (err1 || err2);
++}
++
++
++STATIC int
++mini_fo_d_hash(dentry_t *dentry, qstr_t *name)
++{
++ int err = 0;
++ dentry_t *hidden_dentry;
++ dentry_t *hidden_sto_dentry;
++
++ /* hidden_dentry = mini_fo_hidden_dentry(dentry);
++ * hidden_sto_dentry = mini_fo_hidden_sto_dentry(dentry); */
++
++ /* state 1, 3, 4, 5: build the hash for the storage dentry */
++ if((dtopd(dentry)->state == MODIFIED) ||
++ (dtopd(dentry)->state == CREATED) ||
++ (dtopd(dentry)->state == DEL_REWRITTEN) ||
++ (dtopd(dentry)->state == DELETED)) {
++ hidden_sto_dentry = dtohd2(dentry);
++ if(hidden_sto_dentry &&
++ hidden_sto_dentry->d_op &&
++ hidden_sto_dentry->d_op->d_hash) {
++ err = hidden_sto_dentry->d_op->d_hash(hidden_sto_dentry, name);
++ }
++ goto out;
++ }
++ /* state 2: build the hash for the base dentry */
++ if(dtopd(dentry)->state == UNMODIFIED) {
++ hidden_dentry = dtohd(dentry);
++ if(hidden_dentry &&
++ hidden_dentry->d_op &&
++ hidden_dentry->d_op->d_hash) {
++ err = hidden_dentry->d_op->d_hash(hidden_dentry, name);
++ }
++ goto out;
++ }
++ /* state 6: build hash for the dentry that exists */
++ if(dtopd(dentry)->state == NON_EXISTANT) {
++ hidden_sto_dentry = dtohd2(dentry);
++ if(hidden_sto_dentry &&
++ hidden_sto_dentry->d_op &&
++ hidden_sto_dentry->d_op->d_hash) {
++ err = hidden_sto_dentry->d_op->d_hash(hidden_sto_dentry, name);
++ goto out;
++ }
++ hidden_dentry = dtohd(dentry);
++ if(hidden_dentry &&
++ hidden_dentry->d_op &&
++ hidden_dentry->d_op->d_hash) {
++ err = hidden_dentry->d_op->d_hash(hidden_dentry, name);
++ goto out;
++ }
++ }
++
++ printk(KERN_CRIT "mini_fo: d_hash: invalid state detected.\n");
++
++ out:
++ return err;
++}
++
++
++STATIC int
++mini_fo_d_compare(dentry_t *dentry, qstr_t *a, qstr_t *b)
++{
++ int err;
++ dentry_t *hidden_dentry=NULL;
++
++ /* hidden_dentry = mini_fo_hidden_dentry(dentry); */
++ if(dtohd2(dentry))
++ hidden_dentry = dtohd2(dentry);
++ else if(dtohd(dentry))
++ hidden_dentry = dtohd(dentry);
++
++ if (hidden_dentry && hidden_dentry->d_op && hidden_dentry->d_op->d_compare) {
++ err = hidden_dentry->d_op->d_compare(hidden_dentry, a, b);
++ } else {
++ err = ((a->len != b->len) || memcmp(a->name, b->name, b->len));
++ }
++
++ return err;
++}
++
++
++int
++mini_fo_d_delete(dentry_t *dentry)
++{
++ dentry_t *hidden_dentry;
++ dentry_t *hidden_sto_dentry;
++ int err = 0;
++
++ /* this could be a negative dentry, so check first */
++ if (!dtopd(dentry)) {
++ printk(KERN_CRIT "mini_fo_d_delete: negative dentry passed.\n");
++ goto out;
++ }
++ hidden_dentry = dtohd(dentry);
++ hidden_sto_dentry = dtohd2(dentry);
++
++ if(hidden_dentry) {
++ if(hidden_dentry->d_op &&
++ hidden_dentry->d_op->d_delete) {
++ err = hidden_dentry->d_op->d_delete(hidden_dentry);
++ }
++ }
++ if(hidden_sto_dentry) {
++ if(hidden_sto_dentry->d_op &&
++ hidden_sto_dentry->d_op->d_delete) {
++ err = hidden_sto_dentry->d_op->d_delete(hidden_sto_dentry);
++ }
++ }
++
++ out:
++ return err;
++}
++
++
++void
++mini_fo_d_release(dentry_t *dentry)
++{
++ dentry_t *hidden_dentry;
++ dentry_t *hidden_sto_dentry;
++
++
++ /* this could be a negative dentry, so check first */
++ if (!dtopd(dentry)) {
++ printk(KERN_CRIT "mini_fo_d_release: no private data.\n");
++ goto out;
++ }
++ hidden_dentry = dtohd(dentry);
++ hidden_sto_dentry = dtohd2(dentry);
++
++ if(hidden_dentry) {
++ /* decrement hidden dentry's counter and free its inode */
++ dput(hidden_dentry);
++ }
++ if(hidden_sto_dentry) {
++ /* decrement hidden dentry's counter and free its inode */
++ dput(hidden_sto_dentry);
++ }
++
++ /* free private data (mini_fo_dentry_info) here */
++ kfree(dtopd(dentry));
++ __dtopd(dentry) = NULL; /* just to be safe */
++ out:
++ return;
++}
++
++
++/*
++ * we don't really need mini_fo_d_iput, because dentry_iput will call iput() if
++ * mini_fo_d_iput is not defined. We left this implemented for ease of
++ * tracing/debugging.
++ */
++void
++mini_fo_d_iput(dentry_t *dentry, inode_t *inode)
++{
++ iput(inode);
++}
++
++
++struct dentry_operations mini_fo_dops = {
++ d_revalidate: mini_fo_d_revalidate,
++ d_hash: mini_fo_d_hash,
++ d_compare: mini_fo_d_compare,
++ d_release: mini_fo_d_release,
++ d_delete: mini_fo_d_delete,
++ d_iput: mini_fo_d_iput,
++};
+diff -urN linux-2.6.19.old/fs/mini_fo/file.c linux-2.6.19.dev/fs/mini_fo/file.c
+--- linux-2.6.19.old/fs/mini_fo/file.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/file.c 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,713 @@
++/*
++ * Copyright (c) 1997-2003 Erez Zadok
++ * Copyright (c) 2001-2003 Stony Brook University
++ *
++ * For specific licensing information, see the COPYING file distributed with
++ * this package, or get one from ftp://ftp.filesystems.org/pub/fist/COPYING.
++ *
++ * This Copyright notice must be kept intact and distributed with all
++ * fistgen sources INCLUDING sources generated by fistgen.
++ */
++/*
++ * Copyright (C) 2004, 2005 Markus Klotzbuecher <mk@creamnet.de>
++ *
++ * 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.
++ */
++
++/*
++ * $Id$
++ */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include "fist.h"
++#include "mini_fo.h"
++#define ROUND_UP(x) (((x)+sizeof(long)-1) & ~(sizeof(long)-1))
++
++/*******************
++ * File Operations *
++ *******************/
++
++STATIC loff_t
++mini_fo_llseek(file_t *file, loff_t offset, int origin)
++{
++ loff_t err;
++ file_t *hidden_file = NULL;
++
++ if(S_ISDIR(file->f_dentry->d_inode->i_mode)) {
++ /* Check if trying to llseek from a directory */
++ err = -EISDIR;
++ goto out;
++ }
++ if (ftopd(file) != NULL) {
++ if(ftohf2(file)) {
++ hidden_file = ftohf2(file);
++ } else {
++ hidden_file = ftohf(file);
++ }
++ }
++
++ /* always set hidden position to this one */
++ hidden_file->f_pos = file->f_pos;
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ memcpy(&(hidden_file->f_ra),
++ &(file->f_ra),
++ sizeof(struct file_ra_state));
++#else
++ if (file->f_reada) { /* update readahead information if needed */
++ hidden_file->f_reada = file->f_reada;
++ hidden_file->f_ramax = file->f_ramax;
++ hidden_file->f_raend = file->f_raend;
++ hidden_file->f_ralen = file->f_ralen;
++ hidden_file->f_rawin = file->f_rawin;
++ }
++#endif
++ if (hidden_file->f_op && hidden_file->f_op->llseek)
++ err = hidden_file->f_op->llseek(hidden_file, offset, origin);
++ else
++ err = generic_file_llseek(hidden_file, offset, origin);
++
++ if (err < 0)
++ goto out;
++
++ if (err != file->f_pos) {
++ file->f_pos = err;
++ // ION maybe this?
++ // file->f_pos = hidden_file->f_pos;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++ file->f_reada = 0;
++#endif
++ file->f_version++;
++ }
++
++ out:
++ return err;
++}
++
++
++/* mk: fanout capable */
++STATIC ssize_t
++mini_fo_read(file_t *file, char *buf, size_t count, loff_t *ppos)
++{
++ int err = -EINVAL;
++ file_t *hidden_file = NULL;
++ loff_t pos = *ppos;
++
++ if(S_ISDIR(file->f_dentry->d_inode->i_mode)) {
++ /* Check if trying to read from a directory */
++ /* printk(KERN_CRIT "mini_fo_read: ERROR: trying to read data from a directory.\n"); */
++ err = -EISDIR;
++ goto out;
++ }
++
++ if (ftopd(file) != NULL) {
++ if(ftohf2(file)) {
++ hidden_file = ftohf2(file);
++ } else {
++ hidden_file = ftohf(file);
++ }
++ }
++
++ if (!hidden_file->f_op || !hidden_file->f_op->read)
++ goto out;
++
++ err = hidden_file->f_op->read(hidden_file, buf, count, &pos);
++ *ppos = pos;
++
++ if (err >= 0) {
++ /* atime should also be updated for reads of size zero or more */
++ fist_copy_attr_atime(file->f_dentry->d_inode,
++ hidden_file->f_dentry->d_inode);
++ }
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++ /*
++ * MAJOR HACK
++ * because pread() does not have any way to tell us that it is
++ * our caller, then we don't know for sure if we have to update
++ * the file positions. This hack relies on read() having passed us
++ * the "real" pointer of its struct file's f_pos field.
++ */
++ if (ppos == &file->f_pos)
++ hidden_file->f_pos = *ppos = pos;
++ if (hidden_file->f_reada) { /* update readahead information if needed */
++ file->f_reada = hidden_file->f_reada;
++ file->f_ramax = hidden_file->f_ramax;
++ file->f_raend = hidden_file->f_raend;
++ file->f_ralen = hidden_file->f_ralen;
++ file->f_rawin = hidden_file->f_rawin;
++ }
++#else
++ memcpy(&(file->f_ra),&(hidden_file->f_ra),sizeof(struct file_ra_state));
++#endif
++
++ out:
++ return err;
++}
++
++
++/* this mini_fo_write() does not modify data pages! */
++STATIC ssize_t
++mini_fo_write(file_t *file, const char *buf, size_t count, loff_t *ppos)
++{
++ int err = -EINVAL;
++ file_t *hidden_file = NULL;
++ inode_t *inode;
++ inode_t *hidden_inode;
++ loff_t pos = *ppos;
++
++ /* mk: fan out: */
++ if (ftopd(file) != NULL) {
++ if(ftohf2(file)) {
++ hidden_file = ftohf2(file);
++ } else {
++ /* This is bad! We have no storage file to write to. This
++ * should never happen because if a file is opened for
++ * writing, a copy should have been made earlier.
++ */
++ printk(KERN_CRIT "mini_fo: write : ERROR, no storage file to write.\n");
++ err = -EINVAL;
++ goto out;
++ }
++ }
++
++ inode = file->f_dentry->d_inode;
++ hidden_inode = itohi2(inode);
++ if(!hidden_inode) {
++ printk(KERN_CRIT "mini_fo: write: no sto inode found, not good.\n");
++ goto out;
++ }
++
++ if (!hidden_file->f_op || !hidden_file->f_op->write)
++ goto out;
++
++ /* adjust for append -- seek to the end of the file */
++ if (file->f_flags & O_APPEND)
++ pos = inode->i_size;
++
++ err = hidden_file->f_op->write(hidden_file, buf, count, &pos);
++
++ /*
++ * copy ctime and mtime from lower layer attributes
++ * atime is unchanged for both layers
++ */
++ if (err >= 0)
++ fist_copy_attr_times(inode, hidden_inode);
++
++ *ppos = pos;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++ /*
++ * XXX: MAJOR HACK
++ *
++ * because pwrite() does not have any way to tell us that it is
++ * our caller, then we don't know for sure if we have to update
++ * the file positions. This hack relies on write() having passed us
++ * the "real" pointer of its struct file's f_pos field.
++ */
++ if (ppos == &file->f_pos)
++ hidden_file->f_pos = *ppos = pos;
++#endif
++ /* update this inode's size */
++ if (pos > inode->i_size)
++ inode->i_size = pos;
++
++ out:
++ return err;
++}
++
++/* Global variable to hold a file_t pointer.
++ * This serves to allow mini_fo_filldir function to know which file is
++ * beeing read, which is required for two reasons:
++ *
++ * - be able to call wol functions in order to avoid listing deleted
++ * base files.
++ * - if we're reading a directory which is in state 1, we need to
++ * maintain a list (in mini_fo_filldir) of which files allready
++ * have been copied to userspace,to detect files existing in base
++ * and storage and not list them twice.
++ */
++filldir_t mini_fo_filldir_orig;
++file_t *mini_fo_filldir_file;
++
++/* mainly copied from fs/readdir.c */
++STATIC int
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++mini_fo_filldir(void * __buf, const char * name, int namlen, loff_t offset,
++ u64 ino, unsigned int d_type)
++#else
++mini_fo_filldir(void * __buf, const char * name, int namlen, loff_t offset,
++ ino_t ino, unsigned int d_type)
++#endif
++{
++ struct getdents_callback * buf = (struct getdents_callback *) __buf;
++ file_t* file = mini_fo_filldir_file;
++
++ /* In theses states we filter meta files in storage (WOL) */
++ if(file && (dtopd(file->f_dentry)->state == MODIFIED ||
++ dtopd(file->f_dentry)->state == CREATED ||
++ dtopd(file->f_dentry)->state == DEL_REWRITTEN)) {
++
++ int tmp = strlen(META_FILENAME);
++ if(tmp == namlen) {
++ if(!strncmp(name, META_FILENAME, namlen))
++ return 0;
++ }
++ }
++
++ /* check if we are merging the contents of storage and base */
++ if(file && dtopd(file->f_dentry)->state == MODIFIED) {
++ /* check if we are still reading storage contents, if
++ * yes, we just save the name of the file for duplicate
++ * checking later. */
++
++ if(!ftopd(file)->rd.sto_done) {
++ /* put file into ndl list */
++ if(ndl_add_entry(&ftopd(file)->rd, name, namlen))
++ printk(KERN_CRIT "mini_fo_filldir: Error adding to ndl.\n");
++ } else {
++ /* check if file has been deleted */
++ if(meta_check_d_entry(file->f_dentry, name, namlen))
++ return 0;
++
++ /* do duplicate checking */
++ if(ndl_check_entry(&ftopd(file)->rd, name, namlen))
++ return 0;
++ }
++ }
++
++ return mini_fo_filldir_orig(buf, name, namlen, offset, ino, d_type);
++}
++
++
++STATIC int
++mini_fo_readdir(file_t *file, void *dirent, filldir_t filldir)
++{
++ int err = 0;/* mk: ??? -ENOTDIR; */
++ file_t *hidden_file = NULL;
++ file_t *hidden_sto_file = NULL;
++ inode_t *inode;
++ struct getdents_callback *buf;
++ int oldcount;
++
++#if defined(FIST_FILTER_NAME) || defined(FIST_FILTER_SCA)
++ struct mini_fo_getdents_callback buf;
++#endif /* FIST_FILTER_NAME || FIST_FILTER_SCA */
++
++ buf = (struct getdents_callback *) dirent;
++ oldcount = buf->count;
++ inode = file->f_dentry->d_inode;
++ mini_fo_filldir_file = file;
++ mini_fo_filldir_orig = filldir;
++
++ ftopd(file)->rd.sto_done = 0;
++ do {
++ if (ftopd(file) != NULL) {
++ if(ftohf2(file)) {
++ hidden_sto_file = ftohf2(file);
++ err = vfs_readdir(hidden_sto_file, mini_fo_filldir, dirent);
++ file->f_pos = hidden_sto_file->f_pos;
++ if (err > 0)
++ fist_copy_attr_atime(inode, hidden_sto_file->f_dentry->d_inode);
++ /* not finshed yet, we'll be called again */
++ if (buf->count != oldcount)
++ break;
++ }
++
++ ftopd(file)->rd.sto_done = 1;
++
++ if(ftohf(file)) {
++ hidden_file = ftohf(file);
++ err = vfs_readdir(hidden_file, mini_fo_filldir, dirent);
++ file->f_pos = hidden_file->f_pos;
++ if (err > 0)
++ fist_copy_attr_atime(inode, hidden_file->f_dentry->d_inode);
++ }
++
++ }
++ } while (0);
++
++ /* mk:
++ * we need to check if all the directory data has been copied to userspace,
++ * or if we will be called again by userspace to complete the operation.
++ */
++ if(buf->count == oldcount) {
++ ndl_put_list(&ftopd(file)->rd);
++ }
++
++ /* unset this, safe */
++ mini_fo_filldir_file = NULL;
++ return err;
++}
++
++
++STATIC unsigned int
++mini_fo_poll(file_t *file, poll_table *wait)
++{
++ unsigned int mask = DEFAULT_POLLMASK;
++ file_t *hidden_file = NULL;
++
++ if (ftopd(file) != NULL) {
++ if(ftohf2(file)) {
++ hidden_file = ftohf2(file);
++ } else {
++ hidden_file = ftohf(file);
++ }
++ }
++
++ if (!hidden_file->f_op || !hidden_file->f_op->poll)
++ goto out;
++
++ mask = hidden_file->f_op->poll(hidden_file, wait);
++
++ out:
++ return mask;
++}
++
++/* FIST-LITE special version of mmap */
++STATIC int
++mini_fo_mmap(file_t *file, vm_area_t *vma)
++{
++ int err = 0;
++ file_t *hidden_file = NULL;
++
++ /* fanout capability */
++ if (ftopd(file) != NULL) {
++ if(ftohf2(file)) {
++ hidden_file = ftohf2(file);
++ } else {
++ hidden_file = ftohf(file);
++ }
++ }
++
++ ASSERT(hidden_file != NULL);
++ ASSERT(hidden_file->f_op != NULL);
++ ASSERT(hidden_file->f_op->mmap != NULL);
++
++ vma->vm_file = hidden_file;
++ err = hidden_file->f_op->mmap(hidden_file, vma);
++ get_file(hidden_file); /* make sure it doesn't get freed on us */
++ fput(file); /* no need to keep extra ref on ours */
++
++ return err;
++}
++
++
++
++STATIC int
++mini_fo_open(inode_t *inode, file_t *file)
++{
++ int err = 0;
++ int hidden_flags;
++ file_t *hidden_file = NULL;
++ dentry_t *hidden_dentry = NULL;
++
++ /* fanout stuff */
++ file_t *hidden_sto_file = NULL;
++ dentry_t *hidden_sto_dentry = NULL;
++
++ __ftopd(file) =
++ kmalloc(sizeof(struct mini_fo_file_info), GFP_KERNEL);
++ if (!ftopd(file)) {
++ err = -ENOMEM;
++ goto out;
++ }
++
++ /* init the readdir_helper structure */
++ INIT_LIST_HEAD(&ftopd(file)->rd.ndl_list);
++ ftopd(file)->rd.ndl_size = 0;
++
++ /* In certain paths this could stay uninitalized and cause trouble */
++ ftohf(file) = NULL;
++ ftohf2(file) = NULL;
++ hidden_flags = file->f_flags;
++
++ /* create storage files? */
++ if(dtost(file->f_dentry) == UNMODIFIED) {
++ if(!IS_WRITE_FLAG(file->f_flags)) {
++ hidden_dentry = dtohd(file->f_dentry);
++ dget(hidden_dentry);
++ /* dentry_open will decrement mnt refcnt if err.
++ * otherwise fput() will do an mntput() for us upon file close. */
++ mntget(stopd(inode->i_sb)->hidden_mnt);
++ hidden_file = dentry_open(hidden_dentry,
++ stopd(inode->i_sb)->hidden_mnt,
++ hidden_flags);
++ if (IS_ERR(hidden_file)) {
++ err = PTR_ERR(hidden_file);
++ dput(hidden_dentry);
++ goto out;
++ }
++ ftohf(file) = hidden_file; /* link two files */
++ goto out;
++ }
++ else {
++ if(S_ISDIR(file->f_dentry->d_inode->i_mode)) {
++ err = dir_unmod_to_mod(file->f_dentry);
++ } else
++ err = nondir_unmod_to_mod(file->f_dentry, 1);
++
++ if (err) {
++ printk("mini_fo_open: ERROR creating storage file.\n");
++ goto out;
++ }
++ }
++ }
++ hidden_sto_dentry = dtohd2(file->f_dentry);
++ dget(hidden_sto_dentry);
++
++ if(dtopd(file->f_dentry)->state == MODIFIED) {
++ /* Directorys are special, interpose on both lower level files */
++ if(S_ISDIR(itohi(inode)->i_mode)) {
++ /* check for invalid file types of lower level files */
++ if(!(S_ISDIR(itohi(inode)->i_mode) && S_ISDIR(itohi2(inode)->i_mode))) {
++ printk(KERN_CRIT "mini_fo_open: meta data corruption detected.\n");
++ dput(hidden_sto_dentry);
++ err = -EINVAL;
++ goto out;
++ }
++
++ /* lower level directorys are ok, open the base file */
++ hidden_dentry = dtohd(file->f_dentry);
++ dget(hidden_dentry);
++
++ mntget(stopd(inode->i_sb)->hidden_mnt);
++ hidden_file = dentry_open(hidden_dentry,
++ stopd(inode->i_sb)->hidden_mnt,
++ hidden_flags);
++ if (IS_ERR(hidden_file)) {
++ err = PTR_ERR(hidden_file);
++ dput(hidden_dentry);
++ dput(hidden_sto_dentry);
++ goto out;
++ }
++ ftohf(file) = hidden_file; /* link the two files */
++ }
++ }
++
++ if(!exists_in_storage(file->f_dentry)) {
++ printk(KERN_CRIT "mini_fo_open: invalid file state detected.\n");
++ err = -EINVAL;
++ dput(hidden_sto_dentry);
++
++ /* If the base file has been opened, we need to close it here */
++ if(ftohf(file)) {
++ if (hidden_file->f_op && hidden_file->f_op->flush)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++ hidden_file->f_op->flush(hidden_file, NULL);
++#else
++ hidden_file->f_op->flush(hidden_file);
++#endif
++ dput(hidden_dentry);
++ }
++ goto out;
++ }
++
++ /* ok, now we can safely open the storage file */
++ mntget(stopd(inode->i_sb)->hidden_mnt2);
++ hidden_sto_file = dentry_open(hidden_sto_dentry,
++ stopd(inode->i_sb)->hidden_mnt2,
++ hidden_flags);
++
++ /* dentry_open dputs the dentry if it fails */
++ if (IS_ERR(hidden_sto_file)) {
++ err = PTR_ERR(hidden_sto_file);
++ /* close base file if open */
++ if(ftohf(file)) {
++ if (hidden_file->f_op && hidden_file->f_op->flush)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++ hidden_file->f_op->flush(hidden_file, NULL);
++#else
++ hidden_file->f_op->flush(hidden_file);
++#endif
++ dput(hidden_dentry);
++ }
++ goto out;
++ }
++ ftohf2(file) = hidden_sto_file; /* link storage file */
++
++ out:
++ if (err < 0 && ftopd(file)) {
++ kfree(ftopd(file));
++ }
++ return err;
++}
++
++STATIC int
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++mini_fo_flush(file_t *file, fl_owner_t id)
++#else
++mini_fo_flush(file_t *file)
++#endif
++{
++ int err1 = 0; /* assume ok (see open.c:close_fp) */
++ int err2 = 0;
++ file_t *hidden_file = NULL;
++
++ check_mini_fo_file(file);
++
++ /* mk: we don't do any state checking here, as its not worth the time.
++ * Just flush the lower level files if they exist.
++ */
++ if(ftopd(file) != NULL) {
++ if(ftohf(file) != NULL) {
++ hidden_file = ftohf(file);
++ if (hidden_file->f_op && hidden_file->f_op->flush)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++ err1 = hidden_file->f_op->flush(hidden_file, id);
++#else
++ err1 = hidden_file->f_op->flush(hidden_file);
++#endif
++ }
++ if(ftohf2(file) != NULL) {
++ hidden_file = ftohf2(file);
++ if (hidden_file->f_op && hidden_file->f_op->flush)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++ err2 = hidden_file->f_op->flush(hidden_file, id);
++#else
++ err2 = hidden_file->f_op->flush(hidden_file);
++#endif
++ }
++ }
++ return (err1 | err2);
++}
++
++
++STATIC int
++mini_fo_release(inode_t *inode, file_t *file)
++{
++ int err = 0;
++ file_t *hidden_file = NULL;
++
++ if (ftopd(file) != NULL) {
++ if(ftohf(file)) {
++ hidden_file = ftohf(file);
++ fput(hidden_file);
++ }
++ if(ftohf2(file)) {
++ hidden_file = ftohf2(file);
++ fput(hidden_file);
++ }
++ kfree(ftopd(file));
++ }
++ return err;
++}
++
++STATIC int
++mini_fo_fsync(file_t *file, dentry_t *dentry, int datasync)
++{
++ int err1 = 0;
++ int err2 = 0;
++ file_t *hidden_file = NULL;
++ dentry_t *hidden_dentry;
++
++ check_mini_fo_file(file);
++
++ if ((hidden_file = ftohf(file)) != NULL) {
++ hidden_dentry = dtohd(dentry);
++ if (hidden_file->f_op && hidden_file->f_op->fsync) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_dentry->d_inode->i_sem);
++#endif
++ err1 = hidden_file->f_op->fsync(hidden_file, hidden_dentry, datasync);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_dentry->d_inode->i_sem);
++#endif
++ }
++ }
++
++ if ((hidden_file = ftohf2(file)) != NULL) {
++ hidden_dentry = dtohd2(dentry);
++ if (hidden_file->f_op && hidden_file->f_op->fsync) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_dentry->d_inode->i_sem);
++#endif
++ err2 = hidden_file->f_op->fsync(hidden_file, hidden_dentry, datasync);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_dentry->d_inode->i_sem);
++#endif
++ }
++ }
++ else
++ goto err;
++
++err:
++ return (err1 || err2);
++}
++
++
++STATIC int
++mini_fo_fasync(int fd, file_t *file, int flag)
++{
++ int err1 = 0;
++ int err2 = 0;
++
++ file_t *hidden_file = NULL;
++
++ check_mini_fo_file(file);
++
++ if((hidden_file = ftohf(file)) != NULL) {
++ err1 = hidden_file->f_op->fasync(fd, hidden_file, flag);
++ }
++ if((hidden_file = ftohf2(file)) != NULL) {
++ err2 = hidden_file->f_op->fasync(fd, hidden_file, flag);
++ }
++
++ return (err1 || err2);
++}
++
++
++
++struct file_operations mini_fo_dir_fops =
++ {
++ read: generic_read_dir,
++ write: mini_fo_write,
++ readdir: mini_fo_readdir,
++ poll: mini_fo_poll,
++ /* ioctl: mini_fo_ioctl, */
++ mmap: mini_fo_mmap,
++ open: mini_fo_open,
++ flush: mini_fo_flush,
++ release: mini_fo_release,
++ fsync: mini_fo_fsync,
++ fasync: mini_fo_fasync,
++ /* not needed lock: mini_fo_lock, */
++ /* not needed: readv */
++ /* not needed: writev */
++ /* not implemented: sendpage */
++ /* not implemented: get_unmapped_area */
++ };
++
++struct file_operations mini_fo_main_fops =
++ {
++ llseek: mini_fo_llseek,
++ read: mini_fo_read,
++ write: mini_fo_write,
++ readdir: mini_fo_readdir,
++ poll: mini_fo_poll,
++ /* ioctl: mini_fo_ioctl, */
++ mmap: mini_fo_mmap,
++ open: mini_fo_open,
++ flush: mini_fo_flush,
++ release: mini_fo_release,
++ fsync: mini_fo_fsync,
++ fasync: mini_fo_fasync,
++ /* not needed: lock: mini_fo_lock, */
++ /* not needed: readv */
++ /* not needed: writev */
++ /* not implemented: sendpage */
++ /* not implemented: get_unmapped_area */
++ };
+diff -urN linux-2.6.19.old/fs/mini_fo/fist.h linux-2.6.19.dev/fs/mini_fo/fist.h
+--- linux-2.6.19.old/fs/mini_fo/fist.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/fist.h 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,252 @@
++/*
++ * Copyright (c) 1997-2003 Erez Zadok
++ * Copyright (c) 2001-2003 Stony Brook University
++ *
++ * For specific licensing information, see the COPYING file distributed with
++ * this package, or get one from ftp://ftp.filesystems.org/pub/fist/COPYING.
++ *
++ * This Copyright notice must be kept intact and distributed with all
++ * fistgen sources INCLUDING sources generated by fistgen.
++ */
++/*
++ * Copyright (C) 2004, 2005 Markus Klotzbuecher <mk@creamnet.de>
++ *
++ * 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.
++ */
++
++
++/*
++ * $Id$
++ */
++
++#ifndef __FIST_H_
++#define __FIST_H_
++
++/*
++ * KERNEL ONLY CODE:
++ */
++#ifdef __KERNEL__
++#include <linux/version.h>
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)
++#include <linux/autoconf.h>
++#else
++#include <linux/config.h>
++#endif
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++#ifdef CONFIG_MODVERSIONS
++# define MODVERSIONS
++# include <linux/modversions.h>
++#endif /* CONFIG_MODVERSIONS */
++#endif /* KERNEL_VERSION < 2.6.0 */
++#include <linux/sched.h>
++#include <linux/kernel.h>
++#include <linux/mm.h>
++#include <linux/string.h>
++#include <linux/stat.h>
++#include <linux/errno.h>
++#include <linux/wait.h>
++#include <linux/limits.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++#include <linux/locks.h>
++#else
++#include <linux/buffer_head.h>
++#include <linux/pagemap.h>
++#include <linux/namei.h>
++#include <linux/module.h>
++#include <linux/mount.h>
++#include <linux/page-flags.h>
++#include <linux/writeback.h>
++#include <linux/statfs.h>
++#endif
++#include <linux/smp.h>
++#include <linux/smp_lock.h>
++#include <linux/file.h>
++#include <linux/slab.h>
++#include <linux/vmalloc.h>
++#include <linux/poll.h>
++#include <linux/list.h>
++#include <linux/init.h>
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20)
++#include <linux/xattr.h>
++#endif
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++#include <linux/security.h>
++#endif
++
++#include <linux/swap.h>
++
++#include <asm/system.h>
++#include <asm/segment.h>
++#include <asm/mman.h>
++#include <linux/seq_file.h>
++
++/*
++ * MACROS:
++ */
++
++/* those mapped to ATTR_* were copied from linux/fs.h */
++#define FA_MODE ATTR_MODE
++#define FA_UID ATTR_UID
++#define FA_GID ATTR_GID
++#define FA_SIZE ATTR_SIZE
++#define FA_ATIME ATTR_ATIME
++#define FA_MTIME ATTR_MTIME
++#define FA_CTIME ATTR_CTIME
++#define FA_ATIME_SET ATTR_ATIME_SET
++#define FA_MTIME_SET ATTR_MTIME_SET
++#define FA_FORCE ATTR_FORCE
++#define FA_ATTR_FLAGS ATTR_ATTR_FLAG
++
++/* must be greater than all other ATTR_* flags! */
++#define FA_NLINK 2048
++#define FA_BLKSIZE 4096
++#define FA_BLOCKS 8192
++#define FA_TIMES (FA_ATIME|FA_MTIME|FA_CTIME)
++#define FA_ALL 0
++
++/* macros to manage changes between kernels */
++#define INODE_DATA(i) (&(i)->i_data)
++
++#define MIN(x,y) ((x < y) ? (x) : (y))
++#define MAX(x,y) ((x > y) ? (x) : (y))
++#define MAXPATHLEN PATH_MAX
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,5)
++# define lookup_one_len(a,b,c) lookup_one(a,b)
++#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,4,5) */
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,8)
++# define generic_file_llseek default_llseek
++#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,4,8) */
++
++#ifndef SEEK_SET
++# define SEEK_SET 0
++#endif /* not SEEK_SET */
++
++#ifndef SEEK_CUR
++# define SEEK_CUR 1
++#endif /* not SEEK_CUR */
++
++#ifndef SEEK_END
++# define SEEK_END 2
++#endif /* not SEEK_END */
++
++#ifndef DEFAULT_POLLMASK
++# define DEFAULT_POLLMASK (POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM)
++#endif /* not DEFAULT_POLLMASK */
++
++/* XXX: fix this so fistgen generates kfree() code directly */
++#define kfree_s(a,b) kfree(a)
++
++/*
++ * TYPEDEFS:
++ */
++typedef struct dentry dentry_t;
++typedef struct file file_t;
++typedef struct inode inode_t;
++typedef inode_t vnode_t;
++typedef struct page page_t;
++typedef struct qstr qstr_t;
++typedef struct super_block super_block_t;
++typedef super_block_t vfs_t;
++typedef struct vm_area_struct vm_area_t;
++
++
++/*
++ * EXTERNALS:
++ */
++
++#define FPPF(str,page) printk("PPF %s 0x%x/%d: Lck:%d Err:%d Ref:%d Upd:%d Other::%d:%d:%d:%d:\n", \
++ str, \
++ (int) page, \
++ (int) page->index, \
++ (PageLocked(page) ? 1 : 0), \
++ (PageError(page) ? 1 : 0), \
++ (PageReferenced(page) ? 1 : 0), \
++ (Page_Uptodate(page) ? 1 : 0), \
++ (PageDecrAfter(page) ? 1 : 0), \
++ (PageSlab(page) ? 1 : 0), \
++ (PageSwapCache(page) ? 1 : 0), \
++ (PageReserved(page) ? 1 : 0) \
++ )
++#define EZKDBG printk("EZK %s:%d:%s\n",__FILE__,__LINE__,__FUNCTION__)
++#if 0
++# define EZKDBG1 printk("EZK %s:%d\n",__FILE__,__LINE__)
++#else
++# define EZKDBG1
++#endif
++
++extern int fist_get_debug_value(void);
++extern int fist_set_debug_value(int val);
++#if 0 /* mini_fo doesn't need these */
++extern void fist_dprint_internal(int level, char *str,...);
++extern void fist_print_dentry(char *str, const dentry_t *dentry);
++extern void fist_print_inode(char *str, const inode_t *inode);
++extern void fist_print_file(char *str, const file_t *file);
++extern void fist_print_buffer_flags(char *str, struct buffer_head *buffer);
++extern void fist_print_page_flags(char *str, page_t *page);
++extern void fist_print_page_bytes(char *str, page_t *page);
++extern void fist_print_pte_flags(char *str, const page_t *page);
++extern void fist_checkinode(inode_t *inode, char *msg);
++extern void fist_print_sb(char *str, const super_block_t *sb);
++
++/* §$% by mk: special debug functions */
++extern void fist_mk_print_dentry(char *str, const dentry_t *dentry);
++extern void fist_mk_print_inode(char *str, const inode_t *inode);
++
++extern char *add_indent(void);
++extern char *del_indent(void);
++#endif/* mini_fo doesn't need these */
++
++
++#define STATIC
++#define ASSERT(EX) \
++do { \
++ if (!(EX)) { \
++ printk(KERN_CRIT "ASSERTION FAILED: %s at %s:%d (%s)\n", #EX, \
++ __FILE__, __LINE__, __FUNCTION__); \
++ (*((char *)0))=0; \
++ } \
++} while (0)
++/* same ASSERT, but tell me who was the caller of the function */
++#define ASSERT2(EX) \
++do { \
++ if (!(EX)) { \
++ printk(KERN_CRIT "ASSERTION FAILED (caller): %s at %s:%d (%s)\n", #EX, \
++ file, line, func); \
++ (*((char *)0))=0; \
++ } \
++} while (0)
++
++#if 0 /* mini_fo doesn't need these */
++#define dprintk(format, args...) printk(KERN_DEBUG format, ##args)
++#define fist_dprint(level, str, args...) fist_dprint_internal(level, KERN_DEBUG str, ## args)
++#define print_entry_location() fist_dprint(4, "%sIN: %s %s:%d\n", add_indent(), __FUNCTION__, __FILE__, __LINE__)
++#define print_exit_location() fist_dprint(4, "%s OUT: %s %s:%d\n", del_indent(), __FUNCTION__, __FILE__, __LINE__)
++#define print_exit_status(status) fist_dprint(4, "%s OUT: %s %s:%d, STATUS: %d\n", del_indent(), __FUNCTION__, __FILE__, __LINE__, status)
++#define print_exit_pointer(status) \
++do { \
++ if (IS_ERR(status)) \
++ fist_dprint(4, "%s OUT: %s %s:%d, RESULT: %ld\n", del_indent(), __FUNCTION__, __FILE__, __LINE__, PTR_ERR(status)); \
++ else \
++ fist_dprint(4, "%s OUT: %s %s:%d, RESULT: 0x%x\n", del_indent(), __FUNCTION__, __FILE__, __LINE__, PTR_ERR(status)); \
++} while (0)
++#endif/* mini_fo doesn't need these */
++
++#endif /* __KERNEL__ */
++
++
++/*
++ * DEFINITIONS FOR USER AND KERNEL CODE:
++ * (Note: ioctl numbers 1--9 are reserved for fistgen, the rest
++ * are auto-generated automatically based on the user's .fist file.)
++ */
++# define FIST_IOCTL_GET_DEBUG_VALUE _IOR(0x15, 1, int)
++# define FIST_IOCTL_SET_DEBUG_VALUE _IOW(0x15, 2, int)
++
++#endif /* not __FIST_H_ */
+diff -urN linux-2.6.19.old/fs/mini_fo/inode.c linux-2.6.19.dev/fs/mini_fo/inode.c
+--- linux-2.6.19.old/fs/mini_fo/inode.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/inode.c 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,1573 @@
++/*
++ * Copyright (c) 1997-2003 Erez Zadok
++ * Copyright (c) 2001-2003 Stony Brook University
++ *
++ * For specific licensing information, see the COPYING file distributed with
++ * this package, or get one from ftp://ftp.filesystems.org/pub/fist/COPYING.
++ *
++ * This Copyright notice must be kept intact and distributed with all
++ * fistgen sources INCLUDING sources generated by fistgen.
++ */
++/*
++ * Copyright (C) 2004, 2005 Markus Klotzbuecher <mk@creamnet.de>
++ *
++ * 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.
++ */
++
++/*
++ * $Id$
++ */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include "fist.h"
++#include "mini_fo.h"
++
++STATIC int
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++mini_fo_create(inode_t *dir, dentry_t *dentry, int mode, struct nameidata *nd)
++#else
++mini_fo_create(inode_t *dir, dentry_t *dentry, int mode)
++#endif
++{
++ int err = 0;
++
++ check_mini_fo_dentry(dentry);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ err = create_sto_reg_file(dentry, mode, nd);
++#else
++ err = create_sto_reg_file(dentry, mode);
++#endif
++ check_mini_fo_dentry(dentry);
++ return err;
++}
++
++
++STATIC dentry_t *
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++mini_fo_lookup(inode_t *dir, dentry_t *dentry, struct nameidata* nd)
++#else
++mini_fo_lookup(inode_t *dir, dentry_t *dentry)
++#endif
++{
++ int err = 0;
++ dentry_t *hidden_dir_dentry;
++ dentry_t *hidden_dentry = NULL;
++
++ dentry_t *hidden_sto_dir_dentry;
++ dentry_t *hidden_sto_dentry = NULL;
++
++ /* whiteout flag */
++ int del_flag = 0;
++ char *bpath = NULL;
++
++ const char *name;
++ unsigned int namelen;
++
++ /* Don't allow lookups of META-files */
++ namelen = strlen(META_FILENAME);
++ if(namelen == dentry->d_name.len) {
++ if(!strncmp(dentry->d_name.name, META_FILENAME, namelen)) {
++ err = -ENOENT;
++ goto out;
++ }
++ }
++
++ hidden_dir_dentry = dtohd(dentry->d_parent);
++ hidden_sto_dir_dentry = dtohd2(dentry->d_parent);
++
++ name = dentry->d_name.name;
++ namelen = dentry->d_name.len;
++
++ /* must initialize dentry operations */
++ dentry->d_op = &mini_fo_dops;
++
++ /* setup the del_flag */
++ del_flag = __meta_check_d_entry(dir, name, namelen);
++ bpath = __meta_check_r_entry(dir, name, namelen);
++
++ /* perform the lookups of base and storage files:
++ *
++ * This caused some serious trouble, as a lookup_one_len passing
++ * a negative dentry oopses. Solution is to only do the lookup
++ * if the dentry is positive, else we set it to NULL
++ * More trouble, who said a *_dir_dentry can't be NULL?
++ */
++ if(bpath) {
++ /* Cross-Interposing (C), yeah! */
++ hidden_dentry = bpath_walk(dir->i_sb, bpath);
++ if(!hidden_dentry || !hidden_dentry->d_inode) {
++ printk(KERN_CRIT "mini_fo_lookup: bpath_walk failed.\n");
++ err= -EINVAL;
++ goto out;
++ }
++
++ /* this can be set up safely without fear of spaghetti
++ * interposing as it is only used for copying times */
++ hidden_dir_dentry = hidden_dentry->d_parent;
++ kfree(bpath);
++ }
++ else if(hidden_dir_dentry && hidden_dir_dentry->d_inode)
++ hidden_dentry =
++ lookup_one_len(name, hidden_dir_dentry, namelen);
++ else
++ hidden_dentry = NULL;
++
++ if(hidden_sto_dir_dentry && hidden_sto_dir_dentry->d_inode)
++ hidden_sto_dentry =
++ lookup_one_len(name, hidden_sto_dir_dentry, namelen);
++ else
++ hidden_sto_dentry = NULL;
++
++ /* catch error in lookup */
++ if (IS_ERR(hidden_dentry) || IS_ERR(hidden_sto_dentry)) {
++ /* mk: we need to call dput on the dentry, whose
++ * lookup_one_len operation failed, in order to avoid
++ * unmount trouble.
++ */
++ if(IS_ERR(hidden_dentry)) {
++ printk(KERN_CRIT "mini_fo_lookup: ERR from base dentry, lookup failed.\n");
++ err = PTR_ERR(hidden_dentry);
++ } else {
++ dput(hidden_dentry);
++ }
++ if(IS_ERR(hidden_sto_dentry)) {
++ printk(KERN_CRIT "mini_fo_lookup: ERR from storage dentry, lookup failed.\n");
++ err = PTR_ERR(hidden_sto_dentry);
++ } else {
++ dput(hidden_sto_dentry);
++ }
++ goto out;
++ }
++
++ /* allocate dentry private data */
++ __dtopd(dentry) = (struct mini_fo_dentry_info *)
++ kmalloc(sizeof(struct mini_fo_dentry_info), GFP_KERNEL);
++
++ if (!dtopd(dentry)) {
++ err = -ENOMEM;
++ goto out_dput;
++ }
++
++ /* check for different states of the mini_fo file to be looked up. */
++
++ /* state 1, file has been modified */
++ if(hidden_dentry && hidden_sto_dentry &&
++ hidden_dentry->d_inode && hidden_sto_dentry->d_inode && !del_flag) {
++
++ /* update parent directory's atime */
++ fist_copy_attr_atime(dir, hidden_sto_dir_dentry->d_inode);
++
++ dtopd(dentry)->state = MODIFIED;
++ dtohd(dentry) = hidden_dentry;
++ dtohd2(dentry) = hidden_sto_dentry;
++
++ err = mini_fo_tri_interpose(hidden_dentry,
++ hidden_sto_dentry,
++ dentry, dir->i_sb, 1);
++ if (err) {
++ printk(KERN_CRIT "mini_fo_lookup: error interposing (state1).\n");
++ goto out_free;
++ }
++ goto out;
++ }
++ /* state 2, file is unmodified */
++ if(hidden_dentry && hidden_dentry->d_inode && !del_flag) {
++
++ fist_copy_attr_atime(dir, hidden_dir_dentry->d_inode);
++
++ dtopd(dentry)->state = UNMODIFIED;
++ dtohd(dentry) = hidden_dentry;
++ dtohd2(dentry) = hidden_sto_dentry; /* could be negative */
++
++ err = mini_fo_tri_interpose(hidden_dentry,
++ hidden_sto_dentry,
++ dentry, dir->i_sb, 1);
++ if (err) {
++ printk(KERN_CRIT "mini_fo_lookup: error interposing (state2).\n");
++ goto out_free;
++ }
++ goto out;
++ }
++ /* state 3, file has been newly created */
++ if(hidden_sto_dentry && hidden_sto_dentry->d_inode && !del_flag) {
++
++ fist_copy_attr_atime(dir, hidden_sto_dir_dentry->d_inode);
++ dtopd(dentry)->state = CREATED;
++ dtohd(dentry) = hidden_dentry; /* could be negative */
++ dtohd2(dentry) = hidden_sto_dentry;
++
++ err = mini_fo_tri_interpose(hidden_dentry,
++ hidden_sto_dentry,
++ dentry, dir->i_sb, 1);
++ if (err) {
++ printk(KERN_CRIT "mini_fo_lookup: error interposing (state3).\n");
++ goto out_free;
++ }
++ goto out;
++ }
++
++ /* state 4, file has deleted and created again. */
++ if(hidden_dentry && hidden_sto_dentry &&
++ hidden_dentry->d_inode &&
++ hidden_sto_dentry->d_inode && del_flag) {
++
++ fist_copy_attr_atime(dir, hidden_sto_dir_dentry->d_inode);
++ dtopd(dentry)->state = DEL_REWRITTEN;
++ dtohd(dentry) = NULL;
++ dtohd2(dentry) = hidden_sto_dentry;
++
++ err = mini_fo_tri_interpose(NULL,
++ hidden_sto_dentry,
++ dentry, dir->i_sb, 1);
++ if (err) {
++ printk(KERN_CRIT "mini_fo_lookup: error interposing (state4).\n");
++ goto out_free;
++ }
++ /* We will never need this dentry again, as the file has been
++ * deleted from base */
++ dput(hidden_dentry);
++ goto out;
++ }
++ /* state 5, file has been deleted in base */
++ if(hidden_dentry && hidden_sto_dentry &&
++ hidden_dentry->d_inode &&
++ !hidden_sto_dentry->d_inode && del_flag) {
++
++ /* check which parents atime we need for updating */
++ if(hidden_sto_dir_dentry->d_inode)
++ fist_copy_attr_atime(dir,
++ hidden_sto_dir_dentry->d_inode);
++ else
++ fist_copy_attr_atime(dir,
++ hidden_dir_dentry->d_inode);
++
++ dtopd(dentry)->state = DELETED;
++ dtohd(dentry) = NULL;
++ dtohd2(dentry) = hidden_sto_dentry;
++
++ /* add negative dentry to dcache to speed up lookups */
++ d_add(dentry, NULL);
++ dput(hidden_dentry);
++ goto out;
++ }
++ /* state 6, file does not exist */
++ if(((hidden_dentry && !hidden_dentry->d_inode) ||
++ (hidden_sto_dentry && !hidden_sto_dentry->d_inode)) && !del_flag)
++ {
++ /* check which parents atime we need for updating */
++ if(hidden_sto_dir_dentry && hidden_sto_dir_dentry->d_inode)
++ fist_copy_attr_atime(dir, hidden_sto_dir_dentry->d_inode);
++ else
++ fist_copy_attr_atime(dir, hidden_dir_dentry->d_inode);
++
++ dtopd(dentry)->state = NON_EXISTANT;
++ dtohd(dentry) = hidden_dentry;
++ dtohd2(dentry) = hidden_sto_dentry;
++ d_add(dentry, NULL);
++ goto out;
++ }
++
++ /* if we get to here, were in an invalid state. bad. */
++ printk(KERN_CRIT "mini_fo_lookup: ERROR, meta data corruption detected.\n");
++
++ /* end state checking */
++ out_free:
++ d_drop(dentry); /* so that our bad dentry will get destroyed */
++ kfree(dtopd(dentry));
++ __dtopd(dentry) = NULL; /* be safe */
++
++ out_dput:
++ if(hidden_dentry)
++ dput(hidden_dentry);
++ if(hidden_sto_dentry)
++ dput(hidden_sto_dentry); /* drops usage count and marks for release */
++
++ out:
++ /* initalize wol if file exists and is directory */
++ if(dentry->d_inode) {
++ if(S_ISDIR(dentry->d_inode->i_mode)) {
++ itopd(dentry->d_inode)->deleted_list_size = -1;
++ itopd(dentry->d_inode)->renamed_list_size = -1;
++ meta_build_lists(dentry);
++ }
++ }
++ return ERR_PTR(err);
++}
++
++
++STATIC int
++mini_fo_link(dentry_t *old_dentry, inode_t *dir, dentry_t *new_dentry)
++{
++ int err;
++ dentry_t *hidden_old_dentry;
++ dentry_t *hidden_new_dentry;
++ dentry_t *hidden_dir_dentry;
++
++
++ check_mini_fo_dentry(old_dentry);
++ check_mini_fo_dentry(new_dentry);
++ check_mini_fo_inode(dir);
++
++ /* no links to directorys and existing targets target allowed */
++ if(S_ISDIR(old_dentry->d_inode->i_mode) ||
++ is_mini_fo_existant(new_dentry)) {
++ err = -EPERM;
++ goto out;
++ }
++
++ /* bring it directly from unmod to del_rew */
++ if(dtost(old_dentry) == UNMODIFIED) {
++ err = nondir_unmod_to_mod(old_dentry, 1);
++ if(err) {
++ err = -EINVAL;
++ goto out;
++ }
++ err = meta_add_d_entry(old_dentry->d_parent,
++ old_dentry->d_name.name,
++ old_dentry->d_name.len);
++ if(err) {
++ err = -EINVAL;
++ goto out;
++ }
++ dput(dtohd(old_dentry));
++ dtohd(old_dentry) = NULL;
++ dtost(old_dentry) = DEL_REWRITTEN;
++ }
++
++ err = get_neg_sto_dentry(new_dentry);
++ if(err) {
++ err = -EINVAL;
++ goto out;
++ }
++
++ hidden_old_dentry = dtohd2(old_dentry);
++ hidden_new_dentry = dtohd2(new_dentry);
++
++ dget(hidden_old_dentry);
++ dget(hidden_new_dentry);
++
++ /* was: hidden_dir_dentry = lock_parent(hidden_new_dentry); */
++ hidden_dir_dentry = dget(hidden_new_dentry->d_parent);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_dir_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_dir_dentry->d_inode->i_sem);
++#endif
++
++ err = vfs_link(hidden_old_dentry,
++ hidden_dir_dentry->d_inode,
++ hidden_new_dentry);
++ if (err || !hidden_new_dentry->d_inode)
++ goto out_lock;
++
++ dtost(new_dentry) = CREATED;
++ err = mini_fo_tri_interpose(NULL, hidden_new_dentry, new_dentry, dir->i_sb, 0);
++ if (err)
++ goto out_lock;
++
++ fist_copy_attr_timesizes(dir, hidden_new_dentry->d_inode);
++ /* propagate number of hard-links */
++ old_dentry->d_inode->i_nlink = itohi2(old_dentry->d_inode)->i_nlink;
++
++ out_lock:
++ /* was: unlock_dir(hidden_dir_dentry); */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_dir_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_dir_dentry->d_inode->i_sem);
++#endif
++ dput(hidden_dir_dentry);
++
++ dput(hidden_new_dentry);
++ dput(hidden_old_dentry);
++ if (!new_dentry->d_inode)
++ d_drop(new_dentry);
++
++ out:
++ return err;
++}
++
++
++STATIC int
++mini_fo_unlink(inode_t *dir, dentry_t *dentry)
++{
++ int err = 0;
++
++ dget(dentry);
++ if(dtopd(dentry)->state == MODIFIED) {
++ err = nondir_mod_to_del(dentry);
++ goto out;
++ }
++ else if(dtopd(dentry)->state == UNMODIFIED) {
++ err = nondir_unmod_to_del(dentry);
++ goto out;
++ }
++ else if(dtopd(dentry)->state == CREATED) {
++ err = nondir_creat_to_del(dentry);
++ goto out;
++ }
++ else if(dtopd(dentry)->state == DEL_REWRITTEN) {
++ err = nondir_del_rew_to_del(dentry);
++ goto out;
++ }
++
++ printk(KERN_CRIT "mini_fo_unlink: ERROR, invalid state detected.\n");
++
++ out:
++ fist_copy_attr_times(dir, itohi2(dentry->d_parent->d_inode));
++
++ if(!err) {
++ /* is this causing my pain? d_delete(dentry); */
++ d_drop(dentry);
++ }
++
++ dput(dentry);
++ return err;
++}
++
++
++STATIC int
++mini_fo_symlink(inode_t *dir, dentry_t *dentry, const char *symname)
++{
++ int err=0;
++ dentry_t *hidden_sto_dentry;
++ dentry_t *hidden_sto_dir_dentry;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ umode_t mode;
++#endif
++
++ /* Fail if the symlink file exists */
++ if(!(dtost(dentry) == DELETED ||
++ dtost(dentry) == NON_EXISTANT)) {
++ err = -EEXIST;
++ goto out;
++ }
++
++ err = get_neg_sto_dentry(dentry);
++ if(err) {
++ err = -EINVAL;
++ goto out;
++ }
++ hidden_sto_dentry = dtohd2(dentry);
++
++ dget(hidden_sto_dentry);
++ /* was: hidden_sto_dir_dentry = lock_parent(hidden_sto_dentry); */
++ hidden_sto_dir_dentry = dget(hidden_sto_dentry->d_parent);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ mode = S_IALLUGO;
++ err = vfs_symlink(hidden_sto_dir_dentry->d_inode,
++ hidden_sto_dentry, symname, mode);
++#else
++ err = vfs_symlink(hidden_sto_dir_dentry->d_inode,
++ hidden_sto_dentry,
++ symname);
++#endif
++ if (err || !hidden_sto_dentry->d_inode)
++ goto out_lock;
++
++ if(dtost(dentry) == DELETED) {
++ dtost(dentry) = DEL_REWRITTEN;
++ err = mini_fo_tri_interpose(NULL, hidden_sto_dentry, dentry, dir->i_sb, 0);
++ if(err)
++ goto out_lock;
++ } else if(dtost(dentry) == NON_EXISTANT) {
++ dtost(dentry) = CREATED;
++ err = mini_fo_tri_interpose(dtohd(dentry), hidden_sto_dentry, dentry, dir->i_sb, 0);
++ if(err)
++ goto out_lock;
++ }
++ fist_copy_attr_timesizes(dir, hidden_sto_dir_dentry->d_inode);
++
++ out_lock:
++ /* was: unlock_dir(hidden_sto_dir_dentry); */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++ dput(hidden_sto_dir_dentry);
++
++ dput(hidden_sto_dentry);
++ if (!dentry->d_inode)
++ d_drop(dentry);
++ out:
++ return err;
++}
++
++STATIC int
++mini_fo_mkdir(inode_t *dir, dentry_t *dentry, int mode)
++{
++ int err;
++
++ err = create_sto_dir(dentry, mode);
++
++ check_mini_fo_dentry(dentry);
++
++ return err;
++}
++
++
++STATIC int
++mini_fo_rmdir(inode_t *dir, dentry_t *dentry)
++{
++ int err = 0;
++
++ dentry_t *hidden_sto_dentry;
++ dentry_t *hidden_sto_dir_dentry;
++ dentry_t *meta_dentry;
++ inode_t *hidden_sto_dir = NULL;
++
++ check_mini_fo_dentry(dentry);
++ check_mini_fo_inode(dir);
++
++ dget(dentry);
++ if(dtopd(dentry)->state == MODIFIED) {
++ /* XXX: disabled, because it does not bother to check files on
++ * the original filesystem - just a hack, but better than simply
++ * removing it without testing */
++ err = -EINVAL;
++ goto out;
++
++ hidden_sto_dir = itohi2(dir);
++ hidden_sto_dentry = dtohd2(dentry);
++
++ /* was:hidden_sto_dir_dentry = lock_parent(hidden_sto_dentry); */
++ hidden_sto_dir_dentry = dget(hidden_sto_dentry->d_parent);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++
++ /* avoid destroying the hidden inode if the file is in use */
++ dget(hidden_sto_dentry);
++
++ /* Delete an old WOL file contained in the storage dir */
++ meta_dentry = lookup_one_len(META_FILENAME,
++ hidden_sto_dentry,
++ strlen(META_FILENAME));
++ if(meta_dentry->d_inode) {
++ err = vfs_unlink(hidden_sto_dentry->d_inode, meta_dentry);
++ dput(meta_dentry);
++ if(!err)
++ d_delete(meta_dentry);
++ }
++
++ err = vfs_rmdir(hidden_sto_dir, hidden_sto_dentry);
++ dput(hidden_sto_dentry);
++ if(!err)
++ d_delete(hidden_sto_dentry);
++
++ /* propagate number of hard-links */
++ dentry->d_inode->i_nlink = itohi2(dentry->d_inode)->i_nlink;
++
++ dput(dtohd(dentry));
++
++ dtohd(dentry) = NULL;
++ dtopd(dentry)->state = DELETED;
++
++ /* carefull with R files */
++ if( __meta_is_r_entry(dir,
++ dentry->d_name.name,
++ dentry->d_name.len) == 1) {
++ err = meta_remove_r_entry(dentry->d_parent,
++ dentry->d_name.name,
++ dentry->d_name.len);
++ if(err) {
++ printk(KERN_CRIT "mini_fo: rmdir: meta_remove_r_entry failed.\n");
++ goto out;
++ }
++ }
++ else {
++ /* ok, add deleted file to META */
++ meta_add_d_entry(dentry->d_parent,
++ dentry->d_name.name,
++ dentry->d_name.len);
++ }
++ /* was: unlock_dir(hidden_sto_dir_dentry); */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++ dput(hidden_sto_dir_dentry);
++ goto out;
++ }
++ else if(dtopd(dentry)->state == UNMODIFIED) {
++ /* XXX: simply adding it to the delete list here is fscking dangerous!
++ * as a temporary hack, i will disable rmdir on unmodified directories
++ * for now.
++ */
++ err = -EINVAL;
++ goto out;
++
++ err = get_neg_sto_dentry(dentry);
++ if(err) {
++ err = -EINVAL;
++ goto out;
++ }
++
++ /* dput base dentry, this will relase the inode and free the
++ * dentry, as we will never need it again. */
++ dput(dtohd(dentry));
++ dtohd(dentry) = NULL;
++ dtopd(dentry)->state = DELETED;
++
++ /* add deleted file to META-file */
++ meta_add_d_entry(dentry->d_parent,
++ dentry->d_name.name,
++ dentry->d_name.len);
++ goto out;
++ }
++ else if(dtopd(dentry)->state == CREATED) {
++ hidden_sto_dir = itohi2(dir);
++ hidden_sto_dentry = dtohd2(dentry);
++
++ /* was: hidden_sto_dir_dentry = lock_parent(hidden_sto_dentry);*/
++ hidden_sto_dir_dentry = dget(hidden_sto_dentry->d_parent);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++
++ /* avoid destroying the hidden inode if the file is in use */
++ dget(hidden_sto_dentry);
++
++ /* Delete an old WOL file contained in the storage dir */
++ meta_dentry = lookup_one_len(META_FILENAME,
++ hidden_sto_dentry,
++ strlen(META_FILENAME));
++ if(meta_dentry->d_inode) {
++ /* is this necessary? dget(meta_dentry); */
++ err = vfs_unlink(hidden_sto_dentry->d_inode,
++ meta_dentry);
++ dput(meta_dentry);
++ if(!err)
++ d_delete(meta_dentry);
++ }
++
++ err = vfs_rmdir(hidden_sto_dir, hidden_sto_dentry);
++ dput(hidden_sto_dentry);
++ if(!err)
++ d_delete(hidden_sto_dentry);
++
++ /* propagate number of hard-links */
++ dentry->d_inode->i_nlink = itohi2(dentry->d_inode)->i_nlink;
++ dtopd(dentry)->state = NON_EXISTANT;
++
++ /* was: unlock_dir(hidden_sto_dir_dentry); */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++ dput(hidden_sto_dir_dentry);
++
++ goto out;
++ }
++ else if(dtopd(dentry)->state == DEL_REWRITTEN) {
++ hidden_sto_dir = itohi2(dir);
++ hidden_sto_dentry = dtohd2(dentry);
++
++ /* was: hidden_sto_dir_dentry = lock_parent(hidden_sto_dentry);*/
++ hidden_sto_dir_dentry = dget(hidden_sto_dentry->d_parent);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++
++ /* avoid destroying the hidden inode if the file is in use */
++ dget(hidden_sto_dentry);
++
++ /* Delete an old WOL file contained in the storage dir */
++ meta_dentry = lookup_one_len(META_FILENAME,
++ hidden_sto_dentry,
++ strlen(META_FILENAME));
++ if(meta_dentry->d_inode) {
++ /* is this necessary? dget(meta_dentry); */
++ err = vfs_unlink(hidden_sto_dentry->d_inode,
++ meta_dentry);
++ dput(meta_dentry);
++ if(!err)
++ d_delete(meta_dentry);
++ }
++
++ err = vfs_rmdir(hidden_sto_dir, hidden_sto_dentry);
++ dput(hidden_sto_dentry);
++ if(!err)
++ d_delete(hidden_sto_dentry);
++
++ /* propagate number of hard-links */
++ dentry->d_inode->i_nlink = itohi2(dentry->d_inode)->i_nlink;
++ dtopd(dentry)->state = DELETED;
++ /* was: unlock_dir(hidden_sto_dir_dentry); */
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++ dput(hidden_sto_dir_dentry);
++ goto out;
++ }
++
++ printk(KERN_CRIT "mini_fo_rmdir: ERROR, invalid state detected.\n");
++
++ out:
++ if(!err) {
++ d_drop(dentry);
++ }
++
++ fist_copy_attr_times(dir, itohi2(dentry->d_parent->d_inode));
++ dput(dentry);
++
++ return err;
++}
++
++
++STATIC int
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++mini_fo_mknod(inode_t *dir, dentry_t *dentry, int mode, dev_t dev)
++#else
++mini_fo_mknod(inode_t *dir, dentry_t *dentry, int mode, int dev)
++#endif
++{
++ int err = 0;
++
++ check_mini_fo_dentry(dentry);
++
++ err = create_sto_nod(dentry, mode, dev);
++ if(err) {
++ printk(KERN_CRIT "mini_fo_mknod: creating sto nod failed.\n");
++ err = -EINVAL;
++ }
++
++ check_mini_fo_dentry(dentry);
++ return err;
++}
++
++
++STATIC int
++mini_fo_rename(inode_t *old_dir, dentry_t *old_dentry,
++ inode_t *new_dir, dentry_t *new_dentry)
++{
++ /* dispatch */
++ if(S_ISDIR(old_dentry->d_inode->i_mode))
++ return rename_directory(old_dir, old_dentry, new_dir, new_dentry);
++ return rename_nondir(old_dir, old_dentry, new_dir, new_dentry);
++
++}
++
++int rename_directory(inode_t *old_dir, dentry_t *old_dentry,
++ inode_t *new_dir, dentry_t *new_dentry)
++{
++ int err, bpath_len;
++ char *bpath;
++
++ dentry_t *hidden_old_dentry;
++ dentry_t *hidden_new_dentry;
++ dentry_t *hidden_old_dir_dentry;
++ dentry_t *hidden_new_dir_dentry;
++
++ err = 0;
++ bpath = NULL;
++ bpath_len = 0;
++
++ /* this is a test, chuck out if it works */
++ if(!(dtopd(new_dentry)->state == DELETED ||
++ dtopd(new_dentry)->state == NON_EXISTANT)) {
++ printk(KERN_CRIT "mini_fo: rename_directory: \
++ uh, ah, new_dentry not negative.\n");
++ /* return -1; */
++ }
++
++ /* state = UNMODIFIED */
++ if(dtopd(old_dentry)->state == UNMODIFIED) {
++ err = dir_unmod_to_mod(old_dentry);
++ if (err)
++ goto out;
++ }
++
++ /* state = MODIFIED */
++ if(dtopd(old_dentry)->state == MODIFIED) {
++ bpath = meta_check_r_entry(old_dentry->d_parent,
++ old_dentry->d_name.name,
++ old_dentry->d_name.len);
++ if(bpath) {
++ err = meta_remove_r_entry(old_dentry->d_parent,
++ old_dentry->d_name.name,
++ old_dentry->d_name.len);
++ if(err) {
++ printk(KERN_CRIT "mini_fo: rename_directory:\
++ meta_remove_r_entry \
++ failed.\n");
++ goto out;
++ }
++ err = meta_add_r_entry(new_dentry->d_parent,
++ bpath,
++ strlen(bpath),
++ new_dentry->d_name.name,
++ new_dentry->d_name.len);
++ kfree(bpath);
++ }
++ else {/* wol it */
++ err = meta_add_d_entry(old_dentry->d_parent,
++ old_dentry->d_name.name,
++ old_dentry->d_name.len);
++ if (err)
++ goto out;
++ /* put it on rename list */
++ err = get_mini_fo_bpath(old_dentry,
++ &bpath,
++ &bpath_len);
++ if (err)
++ goto out;
++ err = meta_add_r_entry(new_dentry->d_parent,
++ bpath, bpath_len,
++ new_dentry->d_name.name,
++ new_dentry->d_name.len);
++ if (err)
++ goto out;
++ }
++ /* no state change, MODIFIED stays MODIFIED */
++ }
++ /* state = CREATED */
++ if(dtopd(old_dentry)->state == CREATED ||
++ dtopd(old_dentry)->state == DEL_REWRITTEN) {
++ if(dtohd(old_dentry))
++ dput(dtohd(old_dentry));
++
++ if(dtopd(new_dentry)->state == DELETED) {
++ dtopd(old_dentry)->state = DEL_REWRITTEN;
++ dtohd(old_dentry) = NULL;
++ }
++ else if(dtopd(new_dentry)->state == NON_EXISTANT) {
++ dtopd(old_dentry)->state = CREATED;
++ /* steal new dentry's neg. base dentry */
++ dtohd(old_dentry) = dtohd(new_dentry);
++ dtohd(new_dentry) = NULL;
++ }
++ }
++ if(dtopd(new_dentry)->state == UNMODIFIED ||
++ dtopd(new_dentry)->state == NON_EXISTANT) {
++ err = get_neg_sto_dentry(new_dentry);
++ if(err)
++ goto out;
++ }
++
++ /* now move sto file */
++ hidden_old_dentry = dtohd2(old_dentry);
++ hidden_new_dentry = dtohd2(new_dentry);
++
++ dget(hidden_old_dentry);
++ dget(hidden_new_dentry);
++
++ hidden_old_dir_dentry = dget(hidden_old_dentry->d_parent);
++ hidden_new_dir_dentry = dget(hidden_new_dentry->d_parent);
++ double_lock(hidden_old_dir_dentry, hidden_new_dir_dentry);
++
++ err = vfs_rename(hidden_old_dir_dentry->d_inode, hidden_old_dentry,
++ hidden_new_dir_dentry->d_inode, hidden_new_dentry);
++ if(err)
++ goto out_lock;
++
++ fist_copy_attr_all(new_dir, hidden_new_dir_dentry->d_inode);
++ if (new_dir != old_dir)
++ fist_copy_attr_all(old_dir,
++ hidden_old_dir_dentry->d_inode);
++
++ out_lock:
++ /* double_unlock will dput the new/old parent dentries
++ * whose refcnts were incremented via get_parent above. */
++ double_unlock(hidden_old_dir_dentry, hidden_new_dir_dentry);
++ dput(hidden_new_dentry);
++ dput(hidden_old_dentry);
++
++ out:
++ return err;
++}
++
++int rename_nondir(inode_t *old_dir, dentry_t *old_dentry,
++ inode_t *new_dir, dentry_t *new_dentry)
++{
++ int err=0;
++
++ check_mini_fo_dentry(old_dentry);
++ check_mini_fo_dentry(new_dentry);
++ check_mini_fo_inode(old_dir);
++ check_mini_fo_inode(new_dir);
++
++ /* state: UNMODIFIED */
++ if(dtost(old_dentry) == UNMODIFIED) {
++ err = nondir_unmod_to_mod(old_dentry, 1);
++ if(err) {
++ err = -EINVAL;
++ goto out;
++ }
++ }
++
++ /* the easy states */
++ if(exists_in_storage(old_dentry)) {
++
++ dentry_t *hidden_old_dentry;
++ dentry_t *hidden_new_dentry;
++ dentry_t *hidden_old_dir_dentry;
++ dentry_t *hidden_new_dir_dentry;
++
++ /* if old file is MODIFIED, add it to the deleted_list */
++ if(dtopd(old_dentry)->state == MODIFIED) {
++ meta_add_d_entry(old_dentry->d_parent,
++ old_dentry->d_name.name,
++ old_dentry->d_name.len);
++
++ dput(dtohd(old_dentry));
++ }
++ /* if old file is CREATED, we only release the base dentry */
++ if(dtopd(old_dentry)->state == CREATED) {
++ if(dtohd(old_dentry))
++ dput(dtohd(old_dentry));
++ }
++
++ /* now setup the new states (depends on new_dentry state) */
++ /* new dentry state = MODIFIED */
++ if(dtopd(new_dentry)->state == MODIFIED) {
++ meta_add_d_entry(new_dentry->d_parent,
++ new_dentry->d_name.name,
++ new_dentry->d_name.len);
++
++ /* new dentry will be d_put'ed later by the vfs
++ * so don't do it here
++ * dput(dtohd(new_dentry));
++ */
++ dtohd(old_dentry) = NULL;
++ dtopd(old_dentry)->state = DEL_REWRITTEN;
++ }
++ /* new dentry state = UNMODIFIED */
++ else if(dtopd(new_dentry)->state == UNMODIFIED) {
++ if(get_neg_sto_dentry(new_dentry))
++ return -EINVAL;
++
++ meta_add_d_entry(new_dentry->d_parent,
++ new_dentry->d_name.name,
++ new_dentry->d_name.len);
++
++ /* is this right??? */
++ /*dput(dtohd(new_dentry));*/
++ dtohd(old_dentry) = NULL;
++ dtopd(old_dentry)->state = DEL_REWRITTEN;
++ }
++ /* new dentry state = CREATED */
++ else if(dtopd(new_dentry)->state == CREATED) {
++ /* we keep the neg. base dentry (if exists) */
++ dtohd(old_dentry) = dtohd(new_dentry);
++ /* ...and set it to Null, or we'll get
++ * dcache.c:345 if it gets dput twice... */
++ dtohd(new_dentry) = NULL;
++ dtopd(old_dentry)->state = CREATED;
++ }
++ /* new dentry state = NON_EXISTANT */
++ else if(dtopd(new_dentry)->state == NON_EXISTANT) {
++ if(get_neg_sto_dentry(new_dentry))
++ return -EINVAL;
++
++ /* we keep the neg. base dentry (if exists) */
++ dtohd(old_dentry) = dtohd(new_dentry);
++ /* ...and set it to Null, or we'll get
++ * Dr. dcache.c:345 if it gets dput twice... */
++ dtohd(new_dentry) = NULL;
++ dtopd(old_dentry)->state = CREATED;
++ }
++ /* new dentry state = DEL_REWRITTEN or DELETED */
++ else if(dtopd(new_dentry)->state == DEL_REWRITTEN ||
++ dtopd(new_dentry)->state == DELETED) {
++ dtohd(old_dentry) = NULL;
++ dtopd(old_dentry)->state = DEL_REWRITTEN;
++ }
++ else { /* not possible, uhh, ahh */
++ printk(KERN_CRIT
++ "mini_fo: rename_reg_file: invalid state detected [1].\n");
++ return -1;
++ }
++
++ /* now we definitely have a sto file */
++ hidden_old_dentry = dtohd2(old_dentry);
++ hidden_new_dentry = dtohd2(new_dentry);
++
++ dget(hidden_old_dentry);
++ dget(hidden_new_dentry);
++
++ hidden_old_dir_dentry = dget(hidden_old_dentry->d_parent);
++ hidden_new_dir_dentry = dget(hidden_new_dentry->d_parent);
++ double_lock(hidden_old_dir_dentry, hidden_new_dir_dentry);
++
++ err = vfs_rename(hidden_old_dir_dentry->d_inode,
++ hidden_old_dentry,
++ hidden_new_dir_dentry->d_inode,
++ hidden_new_dentry);
++ if(err)
++ goto out_lock;
++
++ fist_copy_attr_all(new_dir, hidden_new_dir_dentry->d_inode);
++ if (new_dir != old_dir)
++ fist_copy_attr_all(old_dir, hidden_old_dir_dentry->d_inode);
++
++ out_lock:
++ /* double_unlock will dput the new/old parent dentries
++ * whose refcnts were incremented via get_parent above.
++ */
++ double_unlock(hidden_old_dir_dentry, hidden_new_dir_dentry);
++ dput(hidden_new_dentry);
++ dput(hidden_old_dentry);
++ out:
++ return err;
++ }
++ else { /* invalid state */
++ printk(KERN_CRIT "mini_fo: rename_reg_file: ERROR: invalid state detected [2].\n");
++ return -1;
++ }
++}
++
++
++STATIC int
++mini_fo_readlink(dentry_t *dentry, char *buf, int bufsiz)
++{
++ int err=0;
++ dentry_t *hidden_dentry = NULL;
++
++ if(dtohd2(dentry) && dtohd2(dentry)->d_inode) {
++ hidden_dentry = dtohd2(dentry);
++ } else if(dtohd(dentry) && dtohd(dentry)->d_inode) {
++ hidden_dentry = dtohd(dentry);
++ } else {
++ goto out;
++ }
++
++ if (!hidden_dentry->d_inode->i_op ||
++ !hidden_dentry->d_inode->i_op->readlink) {
++ err = -EINVAL; goto out;
++ }
++
++ err = hidden_dentry->d_inode->i_op->readlink(hidden_dentry,
++ buf,
++ bufsiz);
++ if (err > 0)
++ fist_copy_attr_atime(dentry->d_inode, hidden_dentry->d_inode);
++
++ out:
++ return err;
++}
++
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
++static int mini_fo_follow_link(dentry_t *dentry, struct nameidata *nd)
++#else
++static void* mini_fo_follow_link(dentry_t *dentry, struct nameidata *nd)
++#endif
++{
++ char *buf;
++ int len = PAGE_SIZE, err;
++ mm_segment_t old_fs;
++
++ /* in 2.6 this is freed by mini_fo_put_link called by __do_follow_link */
++ buf = kmalloc(len, GFP_KERNEL);
++ if (!buf) {
++ err = -ENOMEM;
++ goto out;
++ }
++
++ /* read the symlink, and then we will follow it */
++ old_fs = get_fs();
++ set_fs(KERNEL_DS);
++ err = dentry->d_inode->i_op->readlink(dentry, buf, len);
++ set_fs(old_fs);
++ if (err < 0) {
++ kfree(buf);
++ buf = NULL;
++ goto out;
++ }
++ buf[err] = 0;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ nd_set_link(nd, buf);
++ err = 0;
++#else
++ err = vfs_follow_link(nd, buf);
++#endif
++
++ out:
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++ kfree(buf);
++#endif
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
++ return err;
++#else
++ return ERR_PTR(err);
++#endif
++}
++
++STATIC
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
++void mini_fo_put_link(struct dentry *dentry, struct nameidata *nd)
++#else
++void mini_fo_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
++#endif
++{
++ char *link;
++ link = nd_get_link(nd);
++ kfree(link);
++}
++#endif
++
++STATIC int
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++mini_fo_permission(inode_t *inode, int mask, struct nameidata *nd)
++#else
++mini_fo_permission(inode_t *inode, int mask)
++#endif
++{
++ inode_t *hidden_inode;
++ int mode;
++ int err;
++
++ if(itohi2(inode)) {
++ hidden_inode = itohi2(inode);
++ } else {
++ hidden_inode = itohi(inode);
++ }
++ mode = inode->i_mode;
++
++ /* not really needed, as permission handles everything:
++ * err = vfs_permission(inode, mask);
++ * if (err)
++ * goto out;
++ */
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ err = permission(hidden_inode, mask, nd);
++#else
++ err = permission(hidden_inode, mask);
++#endif
++
++ /* out: */
++ return err;
++}
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++STATIC int
++mini_fo_inode_revalidate(dentry_t *dentry)
++{
++ int err = 0;
++ dentry_t *hidden_dentry;
++ inode_t *hidden_inode;
++
++ ASSERT(dentry->d_inode);
++ ASSERT(itopd(dentry->d_inode));
++
++ if(itohi2(dentry->d_inode)) {
++ hidden_dentry = dtohd2(dentry);
++ hidden_inode = hidden_dentry->d_inode;
++ } else if(itohi(dentry->d_inode)) {
++ hidden_dentry = dtohd(dentry);
++ hidden_inode = hidden_dentry->d_inode;
++ } else {
++ printk(KERN_CRIT "mini_fo_inode_revalidate: ERROR, invalid state detected.\n");
++ err = -ENOENT;
++ goto out;
++ }
++ if (hidden_inode && hidden_inode->i_op && hidden_inode->i_op->revalidate){
++ err = hidden_inode->i_op->revalidate(hidden_dentry);
++ if (err)
++ goto out;
++ }
++ fist_copy_attr_all(dentry->d_inode, hidden_inode);
++ out:
++ return err;
++}
++#endif
++
++STATIC int
++mini_fo_setattr(dentry_t *dentry, struct iattr *ia)
++{
++ int err = 0;
++
++ check_mini_fo_dentry(dentry);
++
++ if(!is_mini_fo_existant(dentry)) {
++ printk(KERN_CRIT "mini_fo_setattr: ERROR, invalid state detected [1].\n");
++ goto out;
++ }
++
++ if(dtost(dentry) == UNMODIFIED) {
++ if(!IS_COPY_FLAG(ia->ia_valid))
++ goto out; /* we ignore these changes to base */
++
++ if(S_ISDIR(dentry->d_inode->i_mode)) {
++ err = dir_unmod_to_mod(dentry);
++ } else {
++ /* we copy contents if file is not beeing truncated */
++ if(S_ISREG(dentry->d_inode->i_mode) &&
++ !(ia->ia_size == 0 && (ia->ia_valid & ATTR_SIZE))) {
++ err = nondir_unmod_to_mod(dentry, 1);
++ } else
++ err = nondir_unmod_to_mod(dentry, 0);
++ }
++ if(err) {
++ err = -EINVAL;
++ printk(KERN_CRIT "mini_fo_setattr: ERROR changing states.\n");
++ goto out;
++ }
++ }
++ if(!exists_in_storage(dentry)) {
++ printk(KERN_CRIT "mini_fo_setattr: ERROR, invalid state detected [2].\n");
++ err = -EINVAL;
++ goto out;
++ }
++ ASSERT(dentry->d_inode);
++ ASSERT(dtohd2(dentry));
++ ASSERT(itopd(dentry->d_inode));
++ ASSERT(itohi2(dentry->d_inode));
++
++ err = notify_change(dtohd2(dentry), ia);
++ fist_copy_attr_all(dentry->d_inode, itohi2(dentry->d_inode));
++ out:
++ return err;
++}
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++STATIC int
++mini_fo_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
++{
++ int err = 0;
++ dentry_t *hidden_dentry;
++
++ ASSERT(dentry->d_inode);
++ ASSERT(itopd(dentry->d_inode));
++
++ if(itohi2(dentry->d_inode)) {
++ hidden_dentry = dtohd2(dentry);
++ } else if(itohi(dentry->d_inode)) {
++ hidden_dentry = dtohd(dentry);
++ } else {
++ printk(KERN_CRIT "mini_fo_getattr: ERROR, invalid state detected.\n");
++ err = -ENOENT;
++ goto out;
++ }
++ fist_copy_attr_all(dentry->d_inode, hidden_dentry->d_inode);
++
++ ASSERT(hidden_dentry);
++ ASSERT(hidden_dentry->d_inode);
++ ASSERT(hidden_dentry->d_inode->i_op);
++
++ generic_fillattr(dentry->d_inode, stat);
++ if (!stat->blksize) {
++ struct super_block *s = hidden_dentry->d_inode->i_sb;
++ unsigned blocks;
++ blocks = (stat->size+s->s_blocksize-1) >> s->s_blocksize_bits;
++ stat->blocks = (s->s_blocksize / 512) * blocks;
++ stat->blksize = s->s_blocksize;
++ }
++ out:
++ return err;
++}
++#endif
++
++#if defined(XATTR) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20))
++#if 0 /* no xattr_alloc() and xattr_free() */
++/* This is lifted from fs/xattr.c */
++static void *
++xattr_alloc(size_t size, size_t limit)
++{
++ void *ptr;
++
++ if (size > limit)
++ return ERR_PTR(-E2BIG);
++
++ if (!size) /* size request, no buffer is needed */
++ return NULL;
++ else if (size <= PAGE_SIZE)
++ ptr = kmalloc((unsigned long) size, GFP_KERNEL);
++ else
++ ptr = vmalloc((unsigned long) size);
++ if (!ptr)
++ return ERR_PTR(-ENOMEM);
++ return ptr;
++}
++
++static void
++xattr_free(void *ptr, size_t size)
++{
++ if (!size) /* size request, no buffer was needed */
++ return;
++ else if (size <= PAGE_SIZE)
++ kfree(ptr);
++ else
++ vfree(ptr);
++}
++#endif /* no xattr_alloc() and xattr_free() */
++
++/* BKL held by caller.
++ * dentry->d_inode->i_sem down
++ */
++STATIC int
++mini_fo_getxattr(struct dentry *dentry, const char *name, void *value, size_t size) {
++ struct dentry *hidden_dentry = NULL;
++ int err = -EOPNOTSUPP;
++ /* Define these anyway so we don't need as much ifdef'ed code. */
++ char *encoded_name = NULL;
++ char *encoded_value = NULL;
++
++ check_mini_fo_dentry(dentry);
++
++ if(exists_in_storage(dentry))
++ hidden_dentry = dtohd2(dentry);
++ else
++ hidden_dentry = dtohd(dentry);
++
++ ASSERT(hidden_dentry);
++ ASSERT(hidden_dentry->d_inode);
++ ASSERT(hidden_dentry->d_inode->i_op);
++
++ if (hidden_dentry->d_inode->i_op->getxattr) {
++ encoded_name = (char *)name;
++ encoded_value = (char *)value;
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_dentry->d_inode->i_sem);
++#endif
++ /* lock_kernel() already done by caller. */
++ err = hidden_dentry->d_inode->i_op->getxattr(hidden_dentry, encoded_name, encoded_value, size);
++ /* unlock_kernel() will be done by caller. */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_dentry->d_inode->i_sem);
++#endif
++ }
++ return err;
++}
++
++/* BKL held by caller.
++ * dentry->d_inode->i_sem down
++ */
++STATIC int
++#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,21) \
++ && LINUX_VERSION_CODE <= KERNEL_VERSION(2,4,23)) \
++ || LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
++mini_fo_setxattr(struct dentry *dentry, const char *name,
++ const void *value, size_t size, int flags)
++#else
++mini_fo_setxattr(struct dentry *dentry, const char *name,
++ void *value, size_t size, int flags)
++#endif
++
++{
++ struct dentry *hidden_dentry = NULL;
++ int err = -EOPNOTSUPP;
++
++ /* Define these anyway, so we don't have as much ifdef'ed code. */
++ char *encoded_value = NULL;
++ char *encoded_name = NULL;
++
++ check_mini_fo_dentry(dentry);
++
++ if(exists_in_storage(dentry))
++ hidden_dentry = dtohd2(dentry);
++ else
++ hidden_dentry = dtohd(dentry);
++
++ ASSERT(hidden_dentry);
++ ASSERT(hidden_dentry->d_inode);
++ ASSERT(hidden_dentry->d_inode->i_op);
++
++ if (hidden_dentry->d_inode->i_op->setxattr) {
++ encoded_name = (char *)name;
++ encoded_value = (char *)value;
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_dentry->d_inode->i_sem);
++#endif
++ /* lock_kernel() already done by caller. */
++ err = hidden_dentry->d_inode->i_op->setxattr(hidden_dentry, encoded_name, encoded_value, size, flags);
++ /* unlock_kernel() will be done by caller. */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_dentry->d_inode->i_sem);
++#endif
++ }
++ return err;
++}
++
++/* BKL held by caller.
++ * dentry->d_inode->i_sem down
++ */
++STATIC int
++mini_fo_removexattr(struct dentry *dentry, const char *name) {
++ struct dentry *hidden_dentry = NULL;
++ int err = -EOPNOTSUPP;
++ char *encoded_name;
++
++ check_mini_fo_dentry(dentry);
++
++ if(exists_in_storage(dentry))
++ hidden_dentry = dtohd2(dentry);
++ else
++ hidden_dentry = dtohd(dentry);
++
++ ASSERT(hidden_dentry);
++ ASSERT(hidden_dentry->d_inode);
++ ASSERT(hidden_dentry->d_inode->i_op);
++
++ if (hidden_dentry->d_inode->i_op->removexattr) {
++ encoded_name = (char *)name;
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_dentry->d_inode->i_sem);
++#endif
++ /* lock_kernel() already done by caller. */
++ err = hidden_dentry->d_inode->i_op->removexattr(hidden_dentry, encoded_name);
++ /* unlock_kernel() will be done by caller. */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_dentry->d_inode->i_sem);
++#endif
++ }
++ return err;
++}
++
++/* BKL held by caller.
++ * dentry->d_inode->i_sem down
++ */
++STATIC int
++mini_fo_listxattr(struct dentry *dentry, char *list, size_t size) {
++ struct dentry *hidden_dentry = NULL;
++ int err = -EOPNOTSUPP;
++ char *encoded_list = NULL;
++
++ check_mini_fo_dentry(dentry);
++
++ if(exists_in_storage(dentry))
++ hidden_dentry = dtohd2(dentry);
++ else
++ hidden_dentry = dtohd(dentry);
++
++ ASSERT(hidden_dentry);
++ ASSERT(hidden_dentry->d_inode);
++ ASSERT(hidden_dentry->d_inode->i_op);
++
++ if (hidden_dentry->d_inode->i_op->listxattr) {
++ encoded_list = list;
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_dentry->d_inode->i_sem);
++#endif
++ /* lock_kernel() already done by caller. */
++ err = hidden_dentry->d_inode->i_op->listxattr(hidden_dentry, encoded_list, size);
++ /* unlock_kernel() will be done by caller. */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_dentry->d_inode->i_sem);
++#endif
++ }
++ return err;
++}
++# endif /* defined(XATTR) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20)) */
++
++struct inode_operations mini_fo_symlink_iops =
++ {
++ readlink: mini_fo_readlink,
++ follow_link: mini_fo_follow_link,
++ /* mk: permission: mini_fo_permission, */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++ revalidate: mini_fo_inode_revalidate,
++#endif
++ setattr: mini_fo_setattr,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ getattr: mini_fo_getattr,
++ put_link: mini_fo_put_link,
++#endif
++
++#if defined(XATTR) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20))
++ setxattr: mini_fo_setxattr,
++ getxattr: mini_fo_getxattr,
++ listxattr: mini_fo_listxattr,
++ removexattr: mini_fo_removexattr
++# endif /* defined(XATTR) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20)) */
++ };
++
++struct inode_operations mini_fo_dir_iops =
++ {
++ create: mini_fo_create,
++ lookup: mini_fo_lookup,
++ link: mini_fo_link,
++ unlink: mini_fo_unlink,
++ symlink: mini_fo_symlink,
++ mkdir: mini_fo_mkdir,
++ rmdir: mini_fo_rmdir,
++ mknod: mini_fo_mknod,
++ rename: mini_fo_rename,
++ /* no readlink/follow_link for non-symlinks */
++ // off because we have setattr
++ // truncate: mini_fo_truncate,
++ /* mk:permission: mini_fo_permission, */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++ revalidate: mini_fo_inode_revalidate,
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ getattr: mini_fo_getattr,
++#endif
++ setattr: mini_fo_setattr,
++#if defined(XATTR) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20))
++ setxattr: mini_fo_setxattr,
++ getxattr: mini_fo_getxattr,
++ listxattr: mini_fo_listxattr,
++ removexattr: mini_fo_removexattr
++# endif /* XATTR && LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20) */
++ };
++
++struct inode_operations mini_fo_main_iops =
++ {
++ /* permission: mini_fo_permission, */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++ revalidate: mini_fo_inode_revalidate,
++#endif
++ setattr: mini_fo_setattr,
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ getattr: mini_fo_getattr,
++#endif
++#if defined(XATTR) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20))
++ setxattr: mini_fo_setxattr,
++ getxattr: mini_fo_getxattr,
++ listxattr: mini_fo_listxattr,
++ removexattr: mini_fo_removexattr
++# endif /* XATTR && LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20) */
++ };
+diff -urN linux-2.6.19.old/fs/mini_fo/main.c linux-2.6.19.dev/fs/mini_fo/main.c
+--- linux-2.6.19.old/fs/mini_fo/main.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/main.c 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,423 @@
++/*
++ * Copyright (c) 1997-2003 Erez Zadok
++ * Copyright (c) 2001-2003 Stony Brook University
++ *
++ * For specific licensing information, see the COPYING file distributed with
++ * this package, or get one from ftp://ftp.filesystems.org/pub/fist/COPYING.
++ *
++ * This Copyright notice must be kept intact and distributed with all
++ * fistgen sources INCLUDING sources generated by fistgen.
++ */
++/*
++ * Copyright (C) 2004, 2005 Markus Klotzbuecher <mk@creamnet.de>
++ *
++ * 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.
++ */
++
++/*
++ * $Id$
++ */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include "fist.h"
++#include "mini_fo.h"
++#include <linux/module.h>
++
++/* This definition must only appear after we include <linux/module.h> */
++#ifndef MODULE_LICENSE
++# define MODULE_LICENSE(bison)
++#endif /* not MODULE_LICENSE */
++
++/*
++ * This is the mini_fo tri interpose function, which extends the
++ * functionality of the regular interpose by interposing a higher
++ * level inode on top of two lower level ones: the base filesystem
++ * inode and the storage filesystem inode.
++ *
++ * sb we pass is mini_fo's super_block
++ */
++int
++mini_fo_tri_interpose(dentry_t *hidden_dentry,
++ dentry_t *hidden_sto_dentry,
++ dentry_t *dentry, super_block_t *sb, int flag)
++{
++ inode_t *hidden_inode = NULL;
++ inode_t *hidden_sto_inode = NULL; /* store corresponding storage inode */
++ int err = 0;
++ inode_t *inode;
++
++ /* Pointer to hidden_sto_inode if exists, else to hidden_inode.
++ * This is used to copy the attributes of the correct inode. */
++ inode_t *master_inode;
++
++ if(hidden_dentry)
++ hidden_inode = hidden_dentry->d_inode;
++ if(hidden_sto_dentry)
++ hidden_sto_inode = hidden_sto_dentry->d_inode;
++
++ ASSERT(dentry->d_inode == NULL);
++
++ /* mk: One of the inodes associated with the dentrys is likely to
++ * be NULL, so carefull:
++ */
++ ASSERT((hidden_inode != NULL) || (hidden_sto_inode != NULL));
++
++ if(hidden_sto_inode)
++ master_inode = hidden_sto_inode;
++ else
++ master_inode = hidden_inode;
++
++ /*
++ * We allocate our new inode below, by calling iget.
++ * iget will call our read_inode which will initialize some
++ * of the new inode's fields
++ */
++
++ /*
++ * original: inode = iget(sb, hidden_inode->i_ino);
++ */
++ inode = iget(sb, iunique(sb, 25));
++ if (!inode) {
++ err = -EACCES; /* should be impossible??? */
++ goto out;
++ }
++
++ /*
++ * interpose the inode if not already interposed
++ * this is possible if the inode is being reused
++ * XXX: what happens if we get_empty_inode() but there's another already?
++ * for now, ASSERT() that this can't happen; fix later.
++ */
++ if (itohi(inode) != NULL) {
++ printk(KERN_CRIT "mini_fo_tri_interpose: itohi(inode) != NULL.\n");
++ }
++ if (itohi2(inode) != NULL) {
++ printk(KERN_CRIT "mini_fo_tri_interpose: itohi2(inode) != NULL.\n");
++ }
++
++ /* mk: Carefull, igrab can't handle NULL inodes (ok, why should it?), so
++ * we need to check here:
++ */
++ if(hidden_inode)
++ itohi(inode) = igrab(hidden_inode);
++ else
++ itohi(inode) = NULL;
++
++ if(hidden_sto_inode)
++ itohi2(inode) = igrab(hidden_sto_inode);
++ else
++ itohi2(inode) = NULL;
++
++
++ /* Use different set of inode ops for symlinks & directories*/
++ if (S_ISLNK(master_inode->i_mode))
++ inode->i_op = &mini_fo_symlink_iops;
++ else if (S_ISDIR(master_inode->i_mode))
++ inode->i_op = &mini_fo_dir_iops;
++
++ /* Use different set of file ops for directories */
++ if (S_ISDIR(master_inode->i_mode))
++ inode->i_fop = &mini_fo_dir_fops;
++
++ /* properly initialize special inodes */
++ if (S_ISBLK(master_inode->i_mode) || S_ISCHR(master_inode->i_mode) ||
++ S_ISFIFO(master_inode->i_mode) || S_ISSOCK(master_inode->i_mode)) {
++ init_special_inode(inode, master_inode->i_mode, master_inode->i_rdev);
++ }
++
++ /* Fix our inode's address operations to that of the lower inode */
++ if (inode->i_mapping->a_ops != master_inode->i_mapping->a_ops) {
++ inode->i_mapping->a_ops = master_inode->i_mapping->a_ops;
++ }
++
++ /* only (our) lookup wants to do a d_add */
++ if (flag)
++ d_add(dentry, inode);
++ else
++ d_instantiate(dentry, inode);
++
++ ASSERT(dtopd(dentry) != NULL);
++
++ /* all well, copy inode attributes */
++ fist_copy_attr_all(inode, master_inode);
++
++ out:
++ return err;
++}
++
++/* parse mount options "base=" and "sto=" */
++dentry_t *
++mini_fo_parse_options(super_block_t *sb, char *options)
++{
++ dentry_t *hidden_root = ERR_PTR(-EINVAL);
++ dentry_t *hidden_root2 = ERR_PTR(-EINVAL);
++ struct nameidata nd, nd2;
++ char *name, *tmp, *end;
++ int err = 0;
++
++ /* We don't want to go off the end of our arguments later on. */
++ for (end = options; *end; end++);
++
++ while (options < end) {
++ tmp = options;
++ while (*tmp && *tmp != ',')
++ tmp++;
++ *tmp = '\0';
++ if (!strncmp("base=", options, 5)) {
++ name = options + 5;
++ printk(KERN_INFO "mini_fo: using base directory: %s\n", name);
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++ if (path_init(name, LOOKUP_FOLLOW, &nd))
++ err = path_walk(name, &nd);
++#else
++ err = path_lookup(name, LOOKUP_FOLLOW, &nd);
++#endif
++ if (err) {
++ printk(KERN_CRIT "mini_fo: error accessing hidden directory '%s'\n", name);
++ hidden_root = ERR_PTR(err);
++ goto out;
++ }
++ hidden_root = nd.dentry;
++ stopd(sb)->base_dir_dentry = nd.dentry;
++ stopd(sb)->hidden_mnt = nd.mnt;
++
++ } else if(!strncmp("sto=", options, 4)) {
++ /* parse the storage dir */
++ name = options + 4;
++ printk(KERN_INFO "mini_fo: using storage directory: %s\n", name);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++ if(path_init(name, LOOKUP_FOLLOW, &nd2))
++ err = path_walk(name, &nd2);
++#else
++ err = path_lookup(name, LOOKUP_FOLLOW, &nd2);
++#endif
++ if(err) {
++ printk(KERN_CRIT "mini_fo: error accessing hidden storage directory '%s'\n", name);
++
++ hidden_root2 = ERR_PTR(err);
++ goto out;
++ }
++ hidden_root2 = nd2.dentry;
++ stopd(sb)->storage_dir_dentry = nd2.dentry;
++ stopd(sb)->hidden_mnt2 = nd2.mnt;
++ stohs2(sb) = hidden_root2->d_sb;
++
++ /* validate storage dir, this is done in
++ * mini_fo_read_super for the base directory.
++ */
++ if (IS_ERR(hidden_root2)) {
++ printk(KERN_WARNING "mini_fo_parse_options: storage dentry lookup failed (err = %ld)\n", PTR_ERR(hidden_root2));
++ goto out;
++ }
++ if (!hidden_root2->d_inode) {
++ printk(KERN_WARNING "mini_fo_parse_options: no storage dir to interpose on.\n");
++ goto out;
++ }
++ stohs2(sb) = hidden_root2->d_sb;
++ } else {
++ printk(KERN_WARNING "mini_fo: unrecognized option '%s'\n", options);
++ hidden_root = ERR_PTR(-EINVAL);
++ goto out;
++ }
++ options = tmp + 1;
++ }
++
++ out:
++ if(IS_ERR(hidden_root2))
++ return hidden_root2;
++ return hidden_root;
++}
++
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++static int
++#else
++super_block_t *
++#endif
++mini_fo_read_super(super_block_t *sb, void *raw_data, int silent)
++{
++ dentry_t *hidden_root;
++ int err = 0;
++
++ if (!raw_data) {
++ printk(KERN_WARNING "mini_fo_read_super: missing argument\n");
++ err = -EINVAL;
++ goto out;
++ }
++ /*
++ * Allocate superblock private data
++ */
++ __stopd(sb) = kmalloc(sizeof(struct mini_fo_sb_info), GFP_KERNEL);
++ if (!stopd(sb)) {
++ printk(KERN_WARNING "%s: out of memory\n", __FUNCTION__);
++ err = -ENOMEM;
++ goto out;
++ }
++ stohs(sb) = NULL;
++
++ hidden_root = mini_fo_parse_options(sb, raw_data);
++ if (IS_ERR(hidden_root)) {
++ printk(KERN_WARNING "mini_fo_read_super: lookup_dentry failed (err = %ld)\n", PTR_ERR(hidden_root));
++ err = PTR_ERR(hidden_root);
++ goto out_free;
++ }
++ if (!hidden_root->d_inode) {
++ printk(KERN_WARNING "mini_fo_read_super: no directory to interpose on\n");
++ goto out_free;
++ }
++ stohs(sb) = hidden_root->d_sb;
++
++ /*
++ * Linux 2.4.2-ac3 and beyond has code in
++ * mm/filemap.c:generic_file_write() that requires sb->s_maxbytes
++ * to be populated. If not set, all write()s under that sb will
++ * return 0.
++ *
++ * Linux 2.4.4+ automatically sets s_maxbytes to MAX_NON_LFS;
++ * the filesystem should override it only if it supports LFS.
++ */
++ /* non-SCA code is good to go with LFS */
++ sb->s_maxbytes = hidden_root->d_sb->s_maxbytes;
++
++ sb->s_op = &mini_fo_sops;
++ /*
++ * we can't use d_alloc_root if we want to use
++ * our own interpose function unchanged,
++ * so we simply replicate *most* of the code in d_alloc_root here
++ */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++ sb->s_root = d_alloc(NULL, &(const struct qstr) { "/", 1, 0 });
++#else
++ sb->s_root = d_alloc(NULL, &(const struct qstr){hash: 0, name: "/", len : 1});
++#endif
++ if (IS_ERR(sb->s_root)) {
++ printk(KERN_WARNING "mini_fo_read_super: d_alloc failed\n");
++ err = -ENOMEM;
++ goto out_dput;
++ }
++
++ sb->s_root->d_op = &mini_fo_dops;
++ sb->s_root->d_sb = sb;
++ sb->s_root->d_parent = sb->s_root;
++
++ /* link the upper and lower dentries */
++ __dtopd(sb->s_root) = (struct mini_fo_dentry_info *)
++ kmalloc(sizeof(struct mini_fo_dentry_info), GFP_KERNEL);
++ if (!dtopd(sb->s_root)) {
++ err = -ENOMEM;
++ goto out_dput2;
++ }
++ dtopd(sb->s_root)->state = MODIFIED;
++ dtohd(sb->s_root) = hidden_root;
++
++ /* fanout relevant, interpose on storage root dentry too */
++ dtohd2(sb->s_root) = stopd(sb)->storage_dir_dentry;
++
++ /* ...and call tri-interpose to interpose root dir inodes
++ * if (mini_fo_interpose(hidden_root, sb->s_root, sb, 0))
++ */
++ if(mini_fo_tri_interpose(hidden_root, dtohd2(sb->s_root), sb->s_root, sb, 0))
++ goto out_dput2;
++
++ /* initalize the wol list */
++ itopd(sb->s_root->d_inode)->deleted_list_size = -1;
++ itopd(sb->s_root->d_inode)->renamed_list_size = -1;
++ meta_build_lists(sb->s_root);
++
++ goto out;
++
++ out_dput2:
++ dput(sb->s_root);
++ out_dput:
++ dput(hidden_root);
++ dput(dtohd2(sb->s_root)); /* release the hidden_sto_dentry too */
++ out_free:
++ kfree(stopd(sb));
++ __stopd(sb) = NULL;
++ out:
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ return err;
++#else
++ if (err) {
++ return ERR_PTR(err);
++ } else {
++ return sb;
++ }
++#endif
++}
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++static int mini_fo_get_sb(struct file_system_type *fs_type,
++ int flags, const char *dev_name,
++ void *raw_data, struct vfsmount *mnt)
++{
++ return get_sb_nodev(fs_type, flags, raw_data, mini_fo_read_super, mnt);
++}
++#else
++static struct super_block *mini_fo_get_sb(struct file_system_type *fs_type,
++ int flags, const char *dev_name,
++ void *raw_data)
++{
++ return get_sb_nodev(fs_type, flags, raw_data, mini_fo_read_super);
++}
++#endif
++
++void mini_fo_kill_block_super(struct super_block *sb)
++{
++ generic_shutdown_super(sb);
++ /*
++ * XXX: BUG: Halcrow: Things get unstable sometime after this point:
++ * lib/rwsem-spinlock.c:127: spin_is_locked on uninitialized
++ * fs/fs-writeback.c:402: spin_lock(fs/super.c:a0381828) already
++ * locked by fs/fs-writeback.c/402
++ *
++ * Apparently, someone's not releasing a lock on sb_lock...
++ */
++}
++
++static struct file_system_type mini_fo_fs_type = {
++ .owner = THIS_MODULE,
++ .name = "mini_fo",
++ .get_sb = mini_fo_get_sb,
++ .kill_sb = mini_fo_kill_block_super,
++ .fs_flags = 0,
++};
++
++
++#else
++static DECLARE_FSTYPE(mini_fo_fs_type, "mini_fo", mini_fo_read_super, 0);
++#endif
++
++static int __init init_mini_fo_fs(void)
++{
++ printk("Registering mini_fo version $Id$\n");
++ return register_filesystem(&mini_fo_fs_type);
++}
++static void __exit exit_mini_fo_fs(void)
++{
++ printk("Unregistering mini_fo version $Id$\n");
++ unregister_filesystem(&mini_fo_fs_type);
++}
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++EXPORT_NO_SYMBOLS;
++#endif
++
++MODULE_AUTHOR("Erez Zadok <ezk@cs.sunysb.edu>");
++MODULE_DESCRIPTION("FiST-generated mini_fo filesystem");
++MODULE_LICENSE("GPL");
++
++/* MODULE_PARM(fist_debug_var, "i"); */
++/* MODULE_PARM_DESC(fist_debug_var, "Debug level"); */
++
++module_init(init_mini_fo_fs)
++module_exit(exit_mini_fo_fs)
+diff -urN linux-2.6.19.old/fs/mini_fo/Makefile linux-2.6.19.dev/fs/mini_fo/Makefile
+--- linux-2.6.19.old/fs/mini_fo/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/Makefile 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,17 @@
++#
++# Makefile for mini_fo 2.4 and 2.6 Linux kernels
++#
++# Copyright (C) 2004, 2005 Markus Klotzbuecher <mk@creamnet.de>
++#
++# 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.
++#
++
++obj-$(CONFIG_MINI_FO) := mini_fo.o
++mini_fo-objs := meta.o dentry.o file.o inode.o main.o super.o state.o aux.o
++
++# dependencies
++${mini_fo-objs}: mini_fo.h fist.h
++
+diff -urN linux-2.6.19.old/fs/mini_fo/meta.c linux-2.6.19.dev/fs/mini_fo/meta.c
+--- linux-2.6.19.old/fs/mini_fo/meta.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/meta.c 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,1000 @@
++/*
++ * Copyright (C) 2004, 2005 Markus Klotzbuecher <mk@creamnet.de>
++ *
++ * 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.
++ */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif /* HAVE_CONFIG_H */
++#include "fist.h"
++#include "mini_fo.h"
++
++int meta_build_lists(dentry_t *dentry)
++{
++ struct mini_fo_inode_info *inode_info;
++
++ dentry_t *meta_dentry = 0;
++ file_t *meta_file = 0;
++ mm_segment_t old_fs;
++ void *buf;
++
++ int bytes, len;
++ struct vfsmount *meta_mnt;
++ char *entry;
++
++ inode_info = itopd(dentry->d_inode);
++ if(!(inode_info->deleted_list_size == -1 &&
++ inode_info->renamed_list_size == -1)) {
++ printk(KERN_CRIT "mini_fo: meta_build_lists: \
++ Error, list(s) not virgin.\n");
++ return -1;
++ }
++
++ /* init our meta lists */
++ INIT_LIST_HEAD(&inode_info->deleted_list);
++ inode_info->deleted_list_size = 0;
++
++ INIT_LIST_HEAD(&inode_info->renamed_list);
++ inode_info->renamed_list_size = 0;
++
++ /* might there be a META-file? */
++ if(dtohd2(dentry) && dtohd2(dentry)->d_inode) {
++ meta_dentry = lookup_one_len(META_FILENAME,
++ dtohd2(dentry),
++ strlen(META_FILENAME));
++ if(!meta_dentry->d_inode) {
++ dput(meta_dentry);
++ goto out_ok;
++ }
++ /* $%& err, is this correct? */
++ meta_mnt = stopd(dentry->d_inode->i_sb)->hidden_mnt2;
++ mntget(meta_mnt);
++
++
++ /* open META-file for reading */
++ meta_file = dentry_open(meta_dentry, meta_mnt, 0x0);
++ if(!meta_file || IS_ERR(meta_file)) {
++ printk(KERN_CRIT "mini_fo: meta_build_lists: \
++ ERROR opening META file.\n");
++ goto out_err;
++ }
++
++ /* check if fs supports reading */
++ if(!meta_file->f_op->read) {
++ printk(KERN_CRIT "mini_fo: meta_build_lists: \
++ ERROR, fs does not support reading.\n");
++ goto out_err_close;
++ }
++
++ /* allocate a page for transfering the data */
++ buf = (void *) __get_free_page(GFP_KERNEL);
++ if(!buf) {
++ printk(KERN_CRIT "mini_fo: meta_build_lists: \
++ ERROR, out of mem.\n");
++ goto out_err_close;
++ }
++ meta_file->f_pos = 0;
++ old_fs = get_fs();
++ set_fs(KERNEL_DS);
++ do {
++ char *c;
++ bytes = meta_file->f_op->read(meta_file, buf, PAGE_SIZE, &meta_file->f_pos);
++ if(bytes == PAGE_SIZE) {
++ /* trim a cut off filename and adjust f_pos to get it next time */
++ for(c = (char*) buf+PAGE_SIZE;
++ *c != '\n';
++ c--, bytes--, meta_file->f_pos--);
++ }
++ entry = (char *) buf;
++ while(entry < (char *) buf+bytes) {
++
++ char *old_path;
++ char *dir_name;
++ int old_len, new_len;
++
++ /* len without '\n'*/
++ len = (int) (strchr(entry, '\n') - entry);
++ switch (*entry) {
++ case 'D':
++ /* format: "D filename" */
++ meta_list_add_d_entry(dentry,
++ entry+2,
++ len-2);
++ break;
++ case 'R':
++ /* format: "R path/xy/dir newDir" */
++ old_path = entry+2;
++ dir_name = strchr(old_path, ' ') + 1;
++ old_len = dir_name - old_path - 1;
++ new_len = ((int) entry) + len - ((int ) dir_name);
++ meta_list_add_r_entry(dentry,
++ old_path,
++ old_len,
++ dir_name,
++ new_len);
++ break;
++ default:
++ /* unknown entry type detected */
++ break;
++ }
++ entry += len+1;
++ }
++
++ } while(meta_file->f_pos < meta_dentry->d_inode->i_size);
++
++ free_page((unsigned long) buf);
++ set_fs(old_fs);
++ fput(meta_file);
++ }
++ goto out_ok;
++
++ out_err_close:
++ fput(meta_file);
++ out_err:
++ mntput(meta_mnt);
++ dput(meta_dentry);
++ return -1;
++ out_ok:
++ return 1; /* check this!!! inode_info->wol_size; */
++}
++
++/* cleanups up all lists and free's the mem by dentry */
++int meta_put_lists(dentry_t *dentry)
++{
++ if(!dentry || !dentry->d_inode) {
++ printk("mini_fo: meta_put_lists: invalid dentry passed.\n");
++ return -1;
++ }
++ return __meta_put_lists(dentry->d_inode);
++}
++
++/* cleanups up all lists and free's the mem by inode */
++int __meta_put_lists(inode_t *inode)
++{
++ int err = 0;
++ if(!inode || !itopd(inode)) {
++ printk("mini_fo: __meta_put_lists: invalid inode passed.\n");
++ return -1;
++ }
++ err = __meta_put_d_list(inode);
++ err |= __meta_put_r_list(inode);
++ return err;
++}
++
++int meta_sync_lists(dentry_t *dentry)
++{
++ int err = 0;
++ if(!dentry || !dentry->d_inode) {
++ printk("mini_fo: meta_sync_lists: \
++ invalid dentry passed.\n");
++ return -1;
++ }
++ err = meta_sync_d_list(dentry, 0);
++ err |= meta_sync_r_list(dentry, 1);
++ return err;
++}
++
++
++/* remove all D entries from the renamed list and free the mem */
++int __meta_put_d_list(inode_t *inode)
++{
++ struct list_head *tmp;
++ struct deleted_entry *del_entry;
++ struct mini_fo_inode_info *inode_info;
++
++ if(!inode || !itopd(inode)) {
++ printk(KERN_CRIT "mini_fo: __meta_put_d_list: \
++ invalid inode passed.\n");
++ return -1;
++ }
++ inode_info = itopd(inode);
++
++ /* nuke the DELETED-list */
++ if(inode_info->deleted_list_size <= 0)
++ return 0;
++
++ while(!list_empty(&inode_info->deleted_list)) {
++ tmp = inode_info->deleted_list.next;
++ list_del(tmp);
++ del_entry = list_entry(tmp, struct deleted_entry, list);
++ kfree(del_entry->name);
++ kfree(del_entry);
++ }
++ inode_info->deleted_list_size = 0;
++
++ return 0;
++}
++
++/* remove all R entries from the renamed list and free the mem */
++int __meta_put_r_list(inode_t *inode)
++{
++ struct list_head *tmp;
++ struct renamed_entry *ren_entry;
++ struct mini_fo_inode_info *inode_info;
++
++ if(!inode || !itopd(inode)) {
++ printk(KERN_CRIT "mini_fo: meta_put_r_list: invalid inode.\n");
++ return -1;
++ }
++ inode_info = itopd(inode);
++
++ /* nuke the RENAMED-list */
++ if(inode_info->renamed_list_size <= 0)
++ return 0;
++
++ while(!list_empty(&inode_info->renamed_list)) {
++ tmp = inode_info->renamed_list.next;
++ list_del(tmp);
++ ren_entry = list_entry(tmp, struct renamed_entry, list);
++ kfree(ren_entry->new_name);
++ kfree(ren_entry->old_name);
++ kfree(ren_entry);
++ }
++ inode_info->renamed_list_size = 0;
++
++ return 0;
++}
++
++int meta_add_d_entry(dentry_t *dentry, const char *name, int len)
++{
++ int err = 0;
++ err = meta_list_add_d_entry(dentry, name, len);
++ err |= meta_write_d_entry(dentry,name,len);
++ return err;
++}
++
++/* add a D entry to the deleted list */
++int meta_list_add_d_entry(dentry_t *dentry, const char *name, int len)
++{
++ struct deleted_entry *del_entry;
++ struct mini_fo_inode_info *inode_info;
++
++ if(!dentry || !dentry->d_inode) {
++ printk(KERN_CRIT "mini_fo: meta_list_add_d_entry: \
++ invalid dentry passed.\n");
++ return -1;
++ }
++ inode_info = itopd(dentry->d_inode);
++
++ if(inode_info->deleted_list_size < 0)
++ return -1;
++
++ del_entry = (struct deleted_entry *)
++ kmalloc(sizeof(struct deleted_entry), GFP_KERNEL);
++ del_entry->name = (char*) kmalloc(len, GFP_KERNEL);
++ if(!del_entry || !del_entry->name) {
++ printk(KERN_CRIT "mini_fo: meta_list_add_d_entry: \
++ out of mem.\n");
++ kfree(del_entry->name);
++ kfree(del_entry);
++ return -ENOMEM;
++ }
++
++ strncpy(del_entry->name, name, len);
++ del_entry->len = len;
++
++ list_add(&del_entry->list, &inode_info->deleted_list);
++ inode_info->deleted_list_size++;
++ return 0;
++}
++
++int meta_add_r_entry(dentry_t *dentry,
++ const char *old_name, int old_len,
++ const char *new_name, int new_len)
++{
++ int err = 0;
++ err = meta_list_add_r_entry(dentry,
++ old_name, old_len,
++ new_name, new_len);
++ err |= meta_write_r_entry(dentry,
++ old_name, old_len,
++ new_name, new_len);
++ return err;
++}
++
++/* add a R entry to the renamed list */
++int meta_list_add_r_entry(dentry_t *dentry,
++ const char *old_name, int old_len,
++ const char *new_name, int new_len)
++{
++ struct renamed_entry *ren_entry;
++ struct mini_fo_inode_info *inode_info;
++
++ if(!dentry || !dentry->d_inode) {
++ printk(KERN_CRIT "mini_fo: meta_list_add_r_entry: \
++ invalid dentry passed.\n");
++ return -1;
++ }
++ inode_info = itopd(dentry->d_inode);
++
++ if(inode_info->renamed_list_size < 0)
++ return -1;
++
++ ren_entry = (struct renamed_entry *)
++ kmalloc(sizeof(struct renamed_entry), GFP_KERNEL);
++ ren_entry->old_name = (char*) kmalloc(old_len, GFP_KERNEL);
++ ren_entry->new_name = (char*) kmalloc(new_len, GFP_KERNEL);
++
++ if(!ren_entry || !ren_entry->old_name || !ren_entry->new_name) {
++ printk(KERN_CRIT "mini_fo: meta_list_add_r_entry: \
++ out of mem.\n");
++ kfree(ren_entry->new_name);
++ kfree(ren_entry->old_name);
++ kfree(ren_entry);
++ return -ENOMEM;
++ }
++
++ strncpy(ren_entry->old_name, old_name, old_len);
++ ren_entry->old_len = old_len;
++ strncpy(ren_entry->new_name, new_name, new_len);
++ ren_entry->new_len = new_len;
++
++ list_add(&ren_entry->list, &inode_info->renamed_list);
++ inode_info->renamed_list_size++;
++ return 0;
++}
++
++
++int meta_remove_r_entry(dentry_t *dentry, const char *name, int len)
++{
++ int err = 0;
++ if(!dentry || !dentry->d_inode) {
++ printk(KERN_CRIT
++ "mini_fo: meta_remove_r_entry: \
++ invalid dentry passed.\n");
++ return -1;
++ }
++
++ err = meta_list_remove_r_entry(dentry, name, len);
++ err |= meta_sync_lists(dentry);
++ return err;
++}
++
++int meta_list_remove_r_entry(dentry_t *dentry, const char *name, int len)
++{
++ if(!dentry || !dentry->d_inode) {
++ printk(KERN_CRIT
++ "mini_fo: meta_list_remove_r_entry: \
++ invalid dentry passed.\n");
++ return -1;
++ }
++ return __meta_list_remove_r_entry(dentry->d_inode, name, len);
++}
++
++int __meta_list_remove_r_entry(inode_t *inode, const char *name, int len)
++{
++ struct list_head *tmp;
++ struct renamed_entry *ren_entry;
++ struct mini_fo_inode_info *inode_info;
++
++ if(!inode || !itopd(inode))
++ printk(KERN_CRIT
++ "mini_fo: __meta_list_remove_r_entry: \
++ invalid inode passed.\n");
++ inode_info = itopd(inode);
++
++ if(inode_info->renamed_list_size < 0)
++ return -1;
++ if(inode_info->renamed_list_size == 0)
++ return 1;
++
++ list_for_each(tmp, &inode_info->renamed_list) {
++ ren_entry = list_entry(tmp, struct renamed_entry, list);
++ if(ren_entry->new_len != len)
++ continue;
++
++ if(!strncmp(ren_entry->new_name, name, len)) {
++ list_del(tmp);
++ kfree(ren_entry->new_name);
++ kfree(ren_entry->old_name);
++ kfree(ren_entry);
++ inode_info->renamed_list_size--;
++ return 0;
++ }
++ }
++ return 1;
++}
++
++
++/* append a single D entry to the meta file */
++int meta_write_d_entry(dentry_t *dentry, const char *name, int len)
++{
++ dentry_t *meta_dentry = 0;
++ file_t *meta_file = 0;
++ mm_segment_t old_fs;
++
++ int bytes, err;
++ struct vfsmount *meta_mnt = 0;
++ char *buf;
++
++ err = 0;
++
++ if(itopd(dentry->d_inode)->deleted_list_size < 0) {
++ err = -1;
++ goto out;
++ }
++
++ if(dtopd(dentry)->state == UNMODIFIED) {
++ err = build_sto_structure(dentry->d_parent, dentry);
++ if(err) {
++ printk(KERN_CRIT "mini_fo: meta_write_d_entry: \
++ build_sto_structure failed.\n");
++ goto out;
++ }
++ }
++ meta_dentry = lookup_one_len(META_FILENAME,
++ dtohd2(dentry), strlen (META_FILENAME));
++
++ /* We need to create a META-file */
++ if(!meta_dentry->d_inode) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ vfs_create(dtohd2(dentry)->d_inode,
++ meta_dentry,
++ S_IRUSR | S_IWUSR,
++ NULL);
++#else
++ vfs_create(dtohd2(dentry)->d_inode,
++ meta_dentry,
++ S_IRUSR | S_IWUSR);
++#endif
++ }
++ /* open META-file for writing */
++ meta_file = dentry_open(meta_dentry, meta_mnt, 0x1);
++ if(!meta_file || IS_ERR(meta_file)) {
++ printk(KERN_CRIT "mini_fo: meta_write_d_entry: \
++ ERROR opening meta file.\n");
++ mntput(meta_mnt); /* $%& is this necessary? */
++ dput(meta_dentry);
++ err = -1;
++ goto out;
++ }
++
++ /* check if fs supports writing */
++ if(!meta_file->f_op->write) {
++ printk(KERN_CRIT "mini_fo: meta_write_d_entry: \
++ ERROR, fs does not support writing.\n");
++ goto out_err_close;
++ }
++
++ meta_file->f_pos = meta_dentry->d_inode->i_size; /* append */
++ old_fs = get_fs();
++ set_fs(KERNEL_DS);
++
++ /* size: len for name, 1 for \n and 2 for "D " */
++ buf = (char *) kmalloc(len+3, GFP_KERNEL);
++ if (!buf) {
++ printk(KERN_CRIT "mini_fo: meta_write_d_entry: \
++ out of mem.\n");
++ return -ENOMEM;
++ }
++
++ buf[0] = 'D';
++ buf[1] = ' ';
++ strncpy(buf+2, name, len);
++ buf[len+2] = '\n';
++ bytes = meta_file->f_op->write(meta_file, buf, len+3,
++ &meta_file->f_pos);
++ if(bytes != len+3) {
++ printk(KERN_CRIT "mini_fo: meta_write_d_entry: \
++ ERROR writing.\n");
++ err = -1;
++ }
++ kfree(buf);
++ set_fs(old_fs);
++
++ out_err_close:
++ fput(meta_file);
++ out:
++ return err;
++}
++
++/* append a single R entry to the meta file */
++int meta_write_r_entry(dentry_t *dentry,
++ const char *old_name, int old_len,
++ const char *new_name, int new_len)
++{
++ dentry_t *meta_dentry = 0;
++ file_t *meta_file = 0;
++ mm_segment_t old_fs;
++
++ int bytes, err, buf_len;
++ struct vfsmount *meta_mnt = 0;
++ char *buf;
++
++
++ err = 0;
++
++ if(itopd(dentry->d_inode)->renamed_list_size < 0) {
++ err = -1;
++ goto out;
++ }
++
++ /* build the storage structure? */
++ if(dtopd(dentry)->state == UNMODIFIED) {
++ err = build_sto_structure(dentry->d_parent, dentry);
++ if(err) {
++ printk(KERN_CRIT "mini_fo: meta_write_r_entry: \
++ build_sto_structure failed.\n");
++ goto out;
++ }
++ }
++ meta_dentry = lookup_one_len(META_FILENAME,
++ dtohd2(dentry),
++ strlen (META_FILENAME));
++ if(!meta_dentry->d_inode) {
++ /* We need to create a META-file */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ vfs_create(dtohd2(dentry)->d_inode,
++ meta_dentry, S_IRUSR | S_IWUSR, NULL);
++#else
++ vfs_create(dtohd2(dentry)->d_inode,
++ meta_dentry, S_IRUSR | S_IWUSR);
++#endif
++ }
++ /* open META-file for writing */
++ meta_file = dentry_open(meta_dentry, meta_mnt, 0x1);
++ if(!meta_file || IS_ERR(meta_file)) {
++ printk(KERN_CRIT "mini_fo: meta_write_r_entry: \
++ ERROR opening meta file.\n");
++ mntput(meta_mnt);
++ dput(meta_dentry);
++ err = -1;
++ goto out;
++ }
++
++ /* check if fs supports writing */
++ if(!meta_file->f_op->write) {
++ printk(KERN_CRIT "mini_fo: meta_write_r_entry: \
++ ERROR, fs does not support writing.\n");
++ goto out_err_close;
++ }
++
++ meta_file->f_pos = meta_dentry->d_inode->i_size; /* append */
++ old_fs = get_fs();
++ set_fs(KERNEL_DS);
++
++ /* size: 2 for "R ", old_len+new_len for names, 1 blank+1 \n */
++ buf_len = old_len + new_len + 4;
++ buf = (char *) kmalloc(buf_len, GFP_KERNEL);
++ if (!buf) {
++ printk(KERN_CRIT "mini_fo: meta_write_r_entry: out of mem.\n");
++ return -ENOMEM;
++ }
++
++ buf[0] = 'R';
++ buf[1] = ' ';
++ strncpy(buf + 2, old_name, old_len);
++ buf[old_len + 2] = ' ';
++ strncpy(buf + old_len + 3, new_name, new_len);
++ buf[buf_len -1] = '\n';
++ bytes = meta_file->f_op->write(meta_file, buf, buf_len, &meta_file->f_pos);
++ if(bytes != buf_len) {
++ printk(KERN_CRIT "mini_fo: meta_write_r_entry: ERROR writing.\n");
++ err = -1;
++ }
++
++ kfree(buf);
++ set_fs(old_fs);
++
++ out_err_close:
++ fput(meta_file);
++ out:
++ return err;
++}
++
++/* sync D list to disk, append data if app_flag is 1 */
++/* check the meta_mnt, which seems not to be used (properly) */
++
++int meta_sync_d_list(dentry_t *dentry, int app_flag)
++{
++ dentry_t *meta_dentry;
++ file_t *meta_file;
++ mm_segment_t old_fs;
++
++ int bytes, err;
++ struct vfsmount *meta_mnt;
++ char *buf;
++
++ struct list_head *tmp;
++ struct deleted_entry *del_entry;
++ struct mini_fo_inode_info *inode_info;
++
++ err = 0;
++ meta_file=0;
++ meta_mnt=0;
++
++ if(!dentry || !dentry->d_inode) {
++ printk(KERN_CRIT "mini_fo: meta_sync_d_list: \
++ invalid inode passed.\n");
++ err = -1;
++ goto out;
++ }
++ inode_info = itopd(dentry->d_inode);
++
++ if(inode_info->deleted_list_size < 0) {
++ err = -1;
++ goto out;
++ }
++
++ /* ok, there is something to sync */
++
++ /* build the storage structure? */
++ if(!dtohd2(dentry) && !itohi2(dentry->d_inode)) {
++ err = build_sto_structure(dentry->d_parent, dentry);
++ if(err) {
++ printk(KERN_CRIT "mini_fo: meta_sync_d_list: \
++ build_sto_structure failed.\n");
++ goto out;
++ }
++ }
++ meta_dentry = lookup_one_len(META_FILENAME,
++ dtohd2(dentry),
++ strlen(META_FILENAME));
++ if(!meta_dentry->d_inode) {
++ /* We need to create a META-file */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ vfs_create(dtohd2(dentry)->d_inode,
++ meta_dentry, S_IRUSR | S_IWUSR, NULL);
++#else
++ vfs_create(dtohd2(dentry)->d_inode,
++ meta_dentry, S_IRUSR | S_IWUSR);
++#endif
++ app_flag = 0;
++ }
++ /* need we truncate the meta file? */
++ if(!app_flag) {
++ struct iattr newattrs;
++ newattrs.ia_size = 0;
++ newattrs.ia_valid = ATTR_SIZE | ATTR_CTIME;
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&meta_dentry->d_inode->i_mutex);
++#else
++ down(&meta_dentry->d_inode->i_sem);
++#endif
++ err = notify_change(meta_dentry, &newattrs);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&meta_dentry->d_inode->i_mutex);
++#else
++ up(&meta_dentry->d_inode->i_sem);
++#endif
++
++ if(err || meta_dentry->d_inode->i_size != 0) {
++ printk(KERN_CRIT "mini_fo: meta_sync_d_list: \
++ ERROR truncating meta file.\n");
++ goto out_err_close;
++ }
++ }
++
++ /* open META-file for writing */
++ meta_file = dentry_open(meta_dentry, meta_mnt, 0x1);
++ if(!meta_file || IS_ERR(meta_file)) {
++ printk(KERN_CRIT "mini_fo: meta_sync_d_list: \
++ ERROR opening meta file.\n");
++ /* we don't mntget so we dont't mntput (for now)
++ * mntput(meta_mnt);
++ */
++ dput(meta_dentry);
++ err = -1;
++ goto out;
++ }
++
++ /* check if fs supports writing */
++ if(!meta_file->f_op->write) {
++ printk(KERN_CRIT "mini_fo: meta_sync_d_list: \
++ ERROR, fs does not support writing.\n");
++ goto out_err_close;
++ }
++
++ meta_file->f_pos = meta_dentry->d_inode->i_size; /* append */
++ old_fs = get_fs();
++ set_fs(KERNEL_DS);
++
++ /* here we go... */
++ list_for_each(tmp, &inode_info->deleted_list) {
++ del_entry = list_entry(tmp, struct deleted_entry, list);
++
++ /* size: len for name, 1 for \n and 2 for "D " */
++ buf = (char *) kmalloc(del_entry->len+3, GFP_KERNEL);
++ if (!buf) {
++ printk(KERN_CRIT "mini_fo: meta_sync_d_list: \
++ out of mem.\n");
++ return -ENOMEM;
++ }
++
++ buf[0] = 'D';
++ buf[1] = ' ';
++ strncpy(buf+2, del_entry->name, del_entry->len);
++ buf[del_entry->len+2] = '\n';
++ bytes = meta_file->f_op->write(meta_file, buf,
++ del_entry->len+3,
++ &meta_file->f_pos);
++ if(bytes != del_entry->len+3) {
++ printk(KERN_CRIT "mini_fo: meta_sync_d_list: \
++ ERROR writing.\n");
++ err |= -1;
++ }
++ kfree(buf);
++ }
++ set_fs(old_fs);
++
++ out_err_close:
++ fput(meta_file);
++ out:
++ return err;
++
++}
++
++int meta_sync_r_list(dentry_t *dentry, int app_flag)
++{
++ dentry_t *meta_dentry;
++ file_t *meta_file;
++ mm_segment_t old_fs;
++
++ int bytes, err, buf_len;
++ struct vfsmount *meta_mnt;
++ char *buf;
++
++ struct list_head *tmp;
++ struct renamed_entry *ren_entry;
++ struct mini_fo_inode_info *inode_info;
++
++ err = 0;
++ meta_file=0;
++ meta_mnt=0;
++
++ if(!dentry || !dentry->d_inode) {
++ printk(KERN_CRIT "mini_fo: meta_sync_r_list: \
++ invalid dentry passed.\n");
++ err = -1;
++ goto out;
++ }
++ inode_info = itopd(dentry->d_inode);
++
++ if(inode_info->deleted_list_size < 0) {
++ err = -1;
++ goto out;
++ }
++
++ /* ok, there is something to sync */
++
++ /* build the storage structure? */
++ if(!dtohd2(dentry) && !itohi2(dentry->d_inode)) {
++ err = build_sto_structure(dentry->d_parent, dentry);
++ if(err) {
++ printk(KERN_CRIT "mini_fo: meta_sync_r_list: \
++ build_sto_structure failed.\n");
++ goto out;
++ }
++ }
++ meta_dentry = lookup_one_len(META_FILENAME,
++ dtohd2(dentry),
++ strlen(META_FILENAME));
++ if(!meta_dentry->d_inode) {
++ /* We need to create a META-file */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ vfs_create(dtohd2(dentry)->d_inode,
++ meta_dentry, S_IRUSR | S_IWUSR, NULL);
++#else
++ vfs_create(dtohd2(dentry)->d_inode,
++ meta_dentry, S_IRUSR | S_IWUSR);
++#endif
++ app_flag = 0;
++ }
++ /* need we truncate the meta file? */
++ if(!app_flag) {
++ struct iattr newattrs;
++ newattrs.ia_size = 0;
++ newattrs.ia_valid = ATTR_SIZE | ATTR_CTIME;
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&meta_dentry->d_inode->i_mutex);
++#else
++ down(&meta_dentry->d_inode->i_sem);
++#endif
++ err = notify_change(meta_dentry, &newattrs);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&meta_dentry->d_inode->i_mutex);
++#else
++ up(&meta_dentry->d_inode->i_sem);
++#endif
++ if(err || meta_dentry->d_inode->i_size != 0) {
++ printk(KERN_CRIT "mini_fo: meta_sync_r_list: \
++ ERROR truncating meta file.\n");
++ goto out_err_close;
++ }
++ }
++
++ /* open META-file for writing */
++ meta_file = dentry_open(meta_dentry, meta_mnt, 0x1);
++ if(!meta_file || IS_ERR(meta_file)) {
++ printk(KERN_CRIT "mini_fo: meta_sync_r_list: \
++ ERROR opening meta file.\n");
++ /* we don't mntget so we dont't mntput (for now)
++ * mntput(meta_mnt);
++ */
++ dput(meta_dentry);
++ err = -1;
++ goto out;
++ }
++
++ /* check if fs supports writing */
++ if(!meta_file->f_op->write) {
++ printk(KERN_CRIT "mini_fo: meta_sync_r_list: \
++ ERROR, fs does not support writing.\n");
++ goto out_err_close;
++ }
++
++ meta_file->f_pos = meta_dentry->d_inode->i_size; /* append */
++ old_fs = get_fs();
++ set_fs(KERNEL_DS);
++
++ /* here we go... */
++ list_for_each(tmp, &inode_info->renamed_list) {
++ ren_entry = list_entry(tmp, struct renamed_entry, list);
++ /* size:
++ * 2 for "R ", old_len+new_len for names, 1 blank+1 \n */
++ buf_len = ren_entry->old_len + ren_entry->new_len + 4;
++ buf = (char *) kmalloc(buf_len, GFP_KERNEL);
++ if (!buf) {
++ printk(KERN_CRIT "mini_fo: meta_sync_r_list: \
++ out of mem.\n");
++ return -ENOMEM;
++ }
++ buf[0] = 'R';
++ buf[1] = ' ';
++ strncpy(buf + 2, ren_entry->old_name, ren_entry->old_len);
++ buf[ren_entry->old_len + 2] = ' ';
++ strncpy(buf + ren_entry->old_len + 3,
++ ren_entry->new_name, ren_entry->new_len);
++ buf[buf_len - 1] = '\n';
++ bytes = meta_file->f_op->write(meta_file, buf,
++ buf_len, &meta_file->f_pos);
++ if(bytes != buf_len) {
++ printk(KERN_CRIT "mini_fo: meta_sync_r_list: \
++ ERROR writing.\n");
++ err |= -1;
++ }
++ kfree(buf);
++ }
++ set_fs(old_fs);
++
++ out_err_close:
++ fput(meta_file);
++ out:
++ return err;
++}
++
++int meta_check_d_entry(dentry_t *dentry, const char *name, int len)
++{
++ if(!dentry || !dentry->d_inode)
++ printk(KERN_CRIT "mini_fo: meta_check_d_dentry: \
++ invalid dentry passed.\n");
++ return __meta_check_d_entry(dentry->d_inode, name, len);
++}
++
++int __meta_check_d_entry(inode_t *inode, const char *name, int len)
++{
++ struct list_head *tmp;
++ struct deleted_entry *del_entry;
++ struct mini_fo_inode_info *inode_info;
++
++ if(!inode || !itopd(inode))
++ printk(KERN_CRIT "mini_fo: __meta_check_d_dentry: \
++ invalid inode passed.\n");
++
++ inode_info = itopd(inode);
++
++ if(inode_info->deleted_list_size <= 0)
++ return 0;
++
++ list_for_each(tmp, &inode_info->deleted_list) {
++ del_entry = list_entry(tmp, struct deleted_entry, list);
++ if(del_entry->len != len)
++ continue;
++
++ if(!strncmp(del_entry->name, name, len))
++ return 1;
++ }
++ return 0;
++}
++
++/*
++ * check if file has been renamed and return path to orig. base dir.
++ * Implements no error return values so far, what of course sucks.
++ * String is null terminated.'
++ */
++char* meta_check_r_entry(dentry_t *dentry, const char *name, int len)
++{
++ if(!dentry || !dentry->d_inode) {
++ printk(KERN_CRIT "mini_fo: meta_check_r_dentry: \
++ invalid dentry passed.\n");
++ return NULL;
++ }
++ return __meta_check_r_entry(dentry->d_inode, name, len);
++}
++
++char* __meta_check_r_entry(inode_t *inode, const char *name, int len)
++{
++ struct list_head *tmp;
++ struct renamed_entry *ren_entry;
++ struct mini_fo_inode_info *inode_info;
++ char *old_path;
++
++ if(!inode || !itopd(inode)) {
++ printk(KERN_CRIT "mini_fo: meta_check_r_dentry: \
++ invalid inode passed.\n");
++ return NULL;
++ }
++ inode_info = itopd(inode);
++
++ if(inode_info->renamed_list_size <= 0)
++ return NULL;
++
++ list_for_each(tmp, &inode_info->renamed_list) {
++ ren_entry = list_entry(tmp, struct renamed_entry, list);
++ if(ren_entry->new_len != len)
++ continue;
++
++ if(!strncmp(ren_entry->new_name, name, len)) {
++ old_path = (char *)
++ kmalloc(ren_entry->old_len+1, GFP_KERNEL);
++ strncpy(old_path,
++ ren_entry->old_name,
++ ren_entry->old_len);
++ old_path[ren_entry->old_len]='\0';
++ return old_path;
++ }
++ }
++ return NULL;
++}
++
++/*
++ * This version only checks if entry exists and return:
++ * 1 if exists,
++ * 0 if not,
++ * -1 if error.
++ */
++int meta_is_r_entry(dentry_t *dentry, const char *name, int len)
++{
++ if(!dentry || !dentry->d_inode) {
++ printk(KERN_CRIT "mini_fo: meta_check_r_dentry [2]: \
++ invalid dentry passed.\n");
++ return -1;
++ }
++ return __meta_is_r_entry(dentry->d_inode, name, len);
++}
++
++int __meta_is_r_entry(inode_t *inode, const char *name, int len)
++{
++ struct list_head *tmp;
++ struct renamed_entry *ren_entry;
++ struct mini_fo_inode_info *inode_info;
++
++ if(!inode || !itopd(inode)) {
++ printk(KERN_CRIT "mini_fo: meta_check_r_dentry [2]: \
++ invalid inode passed.\n");
++ return -1;
++ }
++ inode_info = itopd(inode);
++
++ if(inode_info->renamed_list_size <= 0)
++ return -1;
++
++ list_for_each(tmp, &inode_info->renamed_list) {
++ ren_entry = list_entry(tmp, struct renamed_entry, list);
++ if(ren_entry->new_len != len)
++ continue;
++
++ if(!strncmp(ren_entry->new_name, name, len))
++ return 1;
++ }
++ return 0;
++}
++
+diff -urN linux-2.6.19.old/fs/mini_fo/mini_fo.h linux-2.6.19.dev/fs/mini_fo/mini_fo.h
+--- linux-2.6.19.old/fs/mini_fo/mini_fo.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/mini_fo.h 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,510 @@
++/*
++ * Copyright (c) 1997-2003 Erez Zadok
++ * Copyright (c) 2001-2003 Stony Brook University
++ *
++ * For specific licensing information, see the COPYING file distributed with
++ * this package, or get one from ftp://ftp.filesystems.org/pub/fist/COPYING.
++ *
++ * This Copyright notice must be kept intact and distributed with all
++ * fistgen sources INCLUDING sources generated by fistgen.
++ */
++/*
++ * Copyright (C) 2004, 2005 Markus Klotzbuecher <mk@creamnet.de>
++ *
++ * 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.
++ */
++
++/*
++ * $Id$
++ */
++
++#ifndef __MINI_FO_H_
++#define __MINI_FO_H_
++
++#ifdef __KERNEL__
++
++/* META stuff */
++#define META_FILENAME "META_dAfFgHE39ktF3HD2sr"
++
++/* use xattrs? */
++#define XATTR
++
++/* File attributes that when changed, result in a file beeing copied to storage */
++#define COPY_FLAGS ATTR_MODE | ATTR_UID | ATTR_GID | ATTR_SIZE
++
++/*
++ * mini_fo filestates
++ */
++#define MODIFIED 1
++#define UNMODIFIED 2
++#define CREATED 3
++#define DEL_REWRITTEN 4
++#define DELETED 5
++#define NON_EXISTANT 6
++
++/* fist file systems superblock magic */
++# define MINI_FO_SUPER_MAGIC 0xf15f
++
++/*
++ * STRUCTURES:
++ */
++
++/* mini_fo inode data in memory */
++struct mini_fo_inode_info {
++ inode_t *wii_inode;
++ inode_t *wii_inode2; /* pointer to storage inode */
++
++ /* META-data lists */
++ /* deleted list, ex wol */
++ struct list_head deleted_list;
++ int deleted_list_size;
++
++ /* renamed list */
++ struct list_head renamed_list;
++ int renamed_list_size;
++
++ /* add other lists here ... */
++};
++
++/* mini_fo dentry data in memory */
++struct mini_fo_dentry_info {
++ dentry_t *wdi_dentry;
++ dentry_t *wdi_dentry2; /* pointer to storage dentry */
++ unsigned int state; /* state of the mini_fo dentry */
++};
++
++
++/* mini_fo super-block data in memory */
++struct mini_fo_sb_info {
++ super_block_t *wsi_sb, *wsi_sb2; /* mk: might point to the same sb */
++ struct vfsmount *hidden_mnt, *hidden_mnt2;
++ dentry_t *base_dir_dentry;
++ dentry_t *storage_dir_dentry;
++ ;
++};
++
++/* readdir_data, readdir helper struct */
++struct readdir_data {
++ struct list_head ndl_list; /* linked list head ptr */
++ int ndl_size; /* list size */
++ int sto_done; /* flag to show that the storage dir entries have
++ * all been read an now follow base entries */
++};
++
++/* file private data. */
++struct mini_fo_file_info {
++ struct file *wfi_file;
++ struct file *wfi_file2; /* pointer to storage file */
++ struct readdir_data rd;
++};
++
++/* struct ndl_entry */
++struct ndl_entry {
++ struct list_head list;
++ char *name;
++ int len;
++};
++
++/********************************
++ * META-data structures
++ ********************************/
++
++/* deleted entry */
++struct deleted_entry {
++ struct list_head list;
++ char *name;
++ int len;
++};
++
++/* renamed entry */
++struct renamed_entry {
++ struct list_head list;
++ char *old_name; /* old directory with full path */
++ int old_len; /* length of above string */
++ char *new_name; /* new directory name */
++ int new_len; /* length of above string */
++};
++
++/* attr_change entry */
++struct attr_change_entry {
++ struct list_head list;
++ char *name;
++ int len;
++};
++
++/* link entry */
++struct link_entry {
++ struct list_head list;
++ int links_moved;
++ int inum_base;
++ int inum_sto;
++ char *weird_name;
++ int weird_name_len;
++};
++
++
++/* Some other stuff required for mini_fo_filldir64, copied from
++ * fs/readdir.c
++ */
++
++#define ROUND_UP64(x) (((x)+sizeof(u64)-1) & ~(sizeof(u64)-1))
++#define NAME_OFFSET(de) ((int) ((de)->d_name - (char *) (de)))
++
++
++struct linux_dirent64 {
++ u64 d_ino;
++ s64 d_off;
++ unsigned short d_reclen;
++ unsigned char d_type;
++ char d_name[0];
++};
++
++
++struct getdents_callback64 {
++ struct linux_dirent64 * current_dir;
++ struct linux_dirent64 * previous;
++ int count;
++ int error;
++};
++
++struct linux_dirent {
++ unsigned long d_ino;
++ unsigned long d_off;
++ unsigned short d_reclen;
++ char d_name[1];
++};
++
++struct getdents_callback {
++ struct linux_dirent * current_dir;
++ struct linux_dirent * previous;
++ int count;
++ int error;
++};
++
++
++/*
++ * MACROS:
++ */
++
++/* file TO private_data */
++# define ftopd(file) ((struct mini_fo_file_info *)((file)->private_data))
++# define __ftopd(file) ((file)->private_data)
++/* file TO hidden_file */
++# define ftohf(file) ((ftopd(file))->wfi_file)
++# define ftohf2(file) ((ftopd(file))->wfi_file2)
++
++/* inode TO private_data */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++# define itopd(ino) ((struct mini_fo_inode_info *)(ino)->i_private)
++# define __itopd(ino) ((ino)->i_private)
++#else
++# define itopd(ino) ((struct mini_fo_inode_info *)(ino)->u.generic_ip)
++# define __itopd(ino) ((ino)->u.generic_ip)
++#endif
++/* inode TO hidden_inode */
++# define itohi(ino) (itopd(ino)->wii_inode)
++# define itohi2(ino) (itopd(ino)->wii_inode2)
++
++/* superblock TO private_data */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++# define stopd(super) ((struct mini_fo_sb_info *)(super)->s_fs_info)
++# define __stopd(super) ((super)->s_fs_info)
++#else
++# define stopd(super) ((struct mini_fo_sb_info *)(super)->u.generic_sbp)
++# define __stopd(super) ((super)->u.generic_sbp)
++#endif
++
++/* unused? # define vfs2priv stopd */
++/* superblock TO hidden_superblock */
++
++# define stohs(super) (stopd(super)->wsi_sb)
++# define stohs2(super) (stopd(super)->wsi_sb2)
++
++/* dentry TO private_data */
++# define dtopd(dentry) ((struct mini_fo_dentry_info *)(dentry)->d_fsdata)
++# define __dtopd(dentry) ((dentry)->d_fsdata)
++/* dentry TO hidden_dentry */
++# define dtohd(dent) (dtopd(dent)->wdi_dentry)
++# define dtohd2(dent) (dtopd(dent)->wdi_dentry2)
++
++/* dentry to state */
++# define dtost(dent) (dtopd(dent)->state)
++# define sbt(sb) ((sb)->s_type->name)
++
++#define IS_WRITE_FLAG(flag) (flag & (O_RDWR | O_WRONLY | O_APPEND))
++#define IS_COPY_FLAG(flag) (flag & (COPY_FLAGS))
++
++/* macros to simplify non-SCA code */
++# define MALLOC_PAGE_POINTERS(hidden_pages, num_hidden_pages)
++# define MALLOC_PAGEDATA_POINTERS(hidden_pages_data, num_hidden_pages)
++# define FREE_PAGE_POINTERS(hidden_pages, num)
++# define FREE_PAGEDATA_POINTERS(hidden_pages_data, num)
++# define FOR_EACH_PAGE
++# define CURRENT_HIDDEN_PAGE hidden_page
++# define CURRENT_HIDDEN_PAGEDATA hidden_page_data
++# define CURRENT_HIDDEN_PAGEINDEX page->index
++
++/*
++ * EXTERNALS:
++ */
++extern struct file_operations mini_fo_main_fops;
++extern struct file_operations mini_fo_dir_fops;
++extern struct inode_operations mini_fo_main_iops;
++extern struct inode_operations mini_fo_dir_iops;
++extern struct inode_operations mini_fo_symlink_iops;
++extern struct super_operations mini_fo_sops;
++extern struct dentry_operations mini_fo_dops;
++extern struct vm_operations_struct mini_fo_shared_vmops;
++extern struct vm_operations_struct mini_fo_private_vmops;
++extern struct address_space_operations mini_fo_aops;
++
++#if 0 /* unused by mini_fo */
++extern int mini_fo_interpose(dentry_t *hidden_dentry, dentry_t *this_dentry, super_block_t *sb, int flag);
++#if defined(FIST_FILTER_DATA) || defined(FIST_FILTER_SCA)
++extern page_t *mini_fo_get1page(file_t *file, int index);
++extern int mini_fo_fill_zeros(file_t *file, page_t *page, unsigned from);
++# endif /* FIST_FILTER_DATA || FIST_FILTER_SCA */
++
++
++# define mini_fo_hidden_dentry(d) __mini_fo_hidden_dentry(__FILE__,__FUNCTION__,__LINE__,(d))
++# define mini_fo_hidden_sto_dentry(d) __mini_fo_hidden_sto_dentry(__FILE__,__FUNCTION__,__LINE__,(d))
++
++extern dentry_t *__mini_fo_hidden_dentry(char *file, char *func, int line, dentry_t *this_dentry);
++extern dentry_t *__mini_fo_hidden_sto_dentry(char *file, char *func, int line, dentry_t *this_dentry);
++
++extern int mini_fo_read_file(const char *filename, void *buf, int len);
++extern int mini_fo_write_file(const char *filename, void *buf, int len);
++extern dentry_t *fist_lookup(dentry_t *dir, const char *name, vnode_t **out, uid_t uid, gid_t gid);
++#endif /* unused by mini_fo */
++
++/* state transition functions */
++extern int nondir_unmod_to_mod(dentry_t *dentry, int cp_flag);
++extern int nondir_del_rew_to_del(dentry_t *dentry);
++extern int nondir_creat_to_del(dentry_t *dentry);
++extern int nondir_mod_to_del(dentry_t *dentry);
++extern int nondir_unmod_to_del(dentry_t *dentry);
++
++extern int dir_unmod_to_mod(dentry_t *dentry);
++
++/* rename specials */
++extern int rename_directory(inode_t *old_dir, dentry_t *old_dentry, inode_t *new_dir, dentry_t *new_dentry);
++extern int rename_nondir(inode_t *old_dir, dentry_t *old_dentry, inode_t *new_dir, dentry_t *new_dentry);
++
++/* misc stuff */
++extern int mini_fo_tri_interpose(dentry_t *hidden_dentry,
++ dentry_t *hidden_sto_dentry,
++ dentry_t *dentry,
++ super_block_t *sb, int flag);
++
++extern int mini_fo_cp_cont(dentry_t *tgt_dentry, struct vfsmount *tgt_mnt,
++ dentry_t *src_dentry, struct vfsmount *src_mnt);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++extern int mini_fo_create(inode_t *dir, dentry_t *dentry, int mode, struct nameidata *nd);
++
++extern int create_sto_nod(dentry_t *dentry, int mode, dev_t dev);
++extern int create_sto_reg_file(dentry_t *dentry, int mode, struct nameidata *nd);
++#else
++extern int mini_fo_create(inode_t *dir, dentry_t *dentry, int mode);
++
++extern int create_sto_nod(dentry_t *dentry, int mode, int dev);
++extern int create_sto_reg_file(dentry_t *dentry, int mode);
++#endif
++
++extern int create_sto_dir(dentry_t *dentry, int mode);
++
++extern int exists_in_storage(dentry_t *dentry);
++extern int is_mini_fo_existant(dentry_t *dentry);
++extern int get_neg_sto_dentry(dentry_t *dentry);
++extern int build_sto_structure(dentry_t *dir, dentry_t *dentry);
++extern int get_mini_fo_bpath(dentry_t *dentry, char **bpath, int *bpath_len);
++extern dentry_t *bpath_walk(super_block_t *sb, char *bpath);
++extern int bpath_put(dentry_t *dentry);
++
++/* check_mini_fo types functions */
++extern int check_mini_fo_dentry(dentry_t *dentry);
++extern int check_mini_fo_file(file_t *file);
++extern int check_mini_fo_inode(inode_t *inode);
++
++/* General meta functions, can be called from outside of meta.c */
++extern int meta_build_lists(dentry_t *dentry);
++extern int meta_put_lists(dentry_t *dentry);
++extern int __meta_put_lists(inode_t *inode);
++
++extern int meta_add_d_entry(dentry_t *dentry, const char *name, int len);
++extern int meta_add_r_entry(dentry_t *dentry,
++ const char *old_name, int old_len,
++ const char *new_name, int new_len);
++
++extern int meta_remove_r_entry(dentry_t *dentry, const char *name, int len);
++
++extern int meta_check_d_entry(dentry_t *dentry, const char *name, int len);
++extern int __meta_check_d_entry(inode_t *inode, const char *name, int len);
++
++extern char* meta_check_r_entry(dentry_t *dentry, const char *name, int len);
++extern char* __meta_check_r_entry(inode_t *inode, const char *name, int len);
++extern int meta_is_r_entry(dentry_t *dentry, const char *name, int len);
++extern int __meta_is_r_entry(inode_t *inode, const char *name, int len);
++
++/* Specific meta functions, should be called only inside meta.c */
++extern int __meta_put_d_list(inode_t *inode);
++extern int __meta_put_r_list(inode_t *inode);
++
++extern int meta_list_add_d_entry(dentry_t *dentry,
++ const char *name, int len);
++extern int meta_list_add_r_entry(dentry_t *dentry,
++ const char *old_name, int old_len,
++ const char *new_name, int new_len);
++
++extern int meta_list_remove_r_entry(dentry_t *dentry,
++ const char *name, int len);
++
++extern int __meta_list_remove_r_entry(inode_t *inode,
++ const char *name, int len);
++
++extern int meta_write_d_entry(dentry_t *dentry, const char *name, int len);
++extern int meta_write_r_entry(dentry_t *dentry,
++ const char *old_name, int old_len,
++ const char *new_name, int new_len);
++
++extern int meta_sync_lists(dentry_t *dentry);
++extern int meta_sync_d_list(dentry_t *dentry, int app_flag);
++extern int meta_sync_r_list(dentry_t *dentry, int app_flag);
++
++/* ndl stuff */
++extern int ndl_add_entry(struct readdir_data *rd, const char *name, int len);
++extern void ndl_put_list(struct readdir_data *rd);
++extern int ndl_check_entry(struct readdir_data *rd,
++ const char *name, int len);
++
++
++# define copy_inode_size(dst, src) \
++ dst->i_size = src->i_size; \
++ dst->i_blocks = src->i_blocks;
++
++static inline void
++fist_copy_attr_atime(inode_t *dest, const inode_t *src)
++{
++ ASSERT(dest != NULL);
++ ASSERT(src != NULL);
++ dest->i_atime = src->i_atime;
++}
++static inline void
++fist_copy_attr_times(inode_t *dest, const inode_t *src)
++{
++ ASSERT(dest != NULL);
++ ASSERT(src != NULL);
++ dest->i_atime = src->i_atime;
++ dest->i_mtime = src->i_mtime;
++ dest->i_ctime = src->i_ctime;
++}
++static inline void
++fist_copy_attr_timesizes(inode_t *dest, const inode_t *src)
++{
++ ASSERT(dest != NULL);
++ ASSERT(src != NULL);
++ dest->i_atime = src->i_atime;
++ dest->i_mtime = src->i_mtime;
++ dest->i_ctime = src->i_ctime;
++ copy_inode_size(dest, src);
++}
++static inline void
++fist_copy_attr_all(inode_t *dest, const inode_t *src)
++{
++ ASSERT(dest != NULL);
++ ASSERT(src != NULL);
++ dest->i_mode = src->i_mode;
++ dest->i_nlink = src->i_nlink;
++ dest->i_uid = src->i_uid;
++ dest->i_gid = src->i_gid;
++ dest->i_rdev = src->i_rdev;
++ dest->i_atime = src->i_atime;
++ dest->i_mtime = src->i_mtime;
++ dest->i_ctime = src->i_ctime;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
++ dest->i_blksize = src->i_blksize;
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,12)
++ dest->i_blkbits = src->i_blkbits;
++# endif /* linux 2.4.12 and newer */
++ copy_inode_size(dest, src);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++ dest->i_attr_flags = src->i_attr_flags;
++#else
++ dest->i_flags = src->i_flags;
++#endif
++}
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++/* copied from linux/fs.h */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++static inline void double_lock(struct dentry *d1, struct dentry *d2)
++{
++ struct mutex *m1 = &d1->d_inode->i_mutex;
++ struct mutex *m2 = &d2->d_inode->i_mutex;
++ if (m1 != m2) {
++ if ((unsigned long) m1 < (unsigned long) m2) {
++ struct mutex *tmp = m2;
++ m2 = m1; m1 = tmp;
++ }
++ mutex_lock(m1);
++ }
++ mutex_lock(m2);
++}
++
++static inline void double_unlock(struct dentry *d1, struct dentry *d2)
++{
++ struct mutex *m1 = &d1->d_inode->i_mutex;
++ struct mutex *m2 = &d2->d_inode->i_mutex;
++ mutex_unlock(m1);
++ if (m1 != m2)
++ mutex_unlock(m2);
++ dput(d1);
++ dput(d2);
++}
++
++#else
++static inline void double_down(struct semaphore *s1, struct semaphore *s2)
++{
++ if (s1 != s2) {
++ if ((unsigned long) s1 < (unsigned long) s2) {
++ struct semaphore *tmp = s2;
++ s2 = s1; s1 = tmp;
++ }
++ down(s1);
++ }
++ down(s2);
++}
++
++static inline void double_up(struct semaphore *s1, struct semaphore *s2)
++{
++ up(s1);
++ if (s1 != s2)
++ up(s2);
++}
++
++static inline void double_lock(struct dentry *d1, struct dentry *d2)
++{
++ double_down(&d1->d_inode->i_sem, &d2->d_inode->i_sem);
++}
++
++static inline void double_unlock(struct dentry *d1, struct dentry *d2)
++{
++ double_up(&d1->d_inode->i_sem,&d2->d_inode->i_sem);
++ dput(d1);
++ dput(d2);
++}
++#endif /* if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) */
++#endif /* if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) */
++#endif /* __KERNEL__ */
++
++/*
++ * Definitions for user and kernel code
++ */
++
++/* ioctls */
++
++#endif /* not __MINI_FO_H_ */
+diff -urN linux-2.6.19.old/fs/mini_fo/mini_fo-merge linux-2.6.19.dev/fs/mini_fo/mini_fo-merge
+--- linux-2.6.19.old/fs/mini_fo/mini_fo-merge 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/mini_fo-merge 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,180 @@
++#!/bin/bash
++#
++# Copyright (C) 2005 Markus Klotzbuecher <mk@creamnet.de>
++# 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.
++#
++
++BASE=
++STO=
++HELP=
++DRYRUN=
++VERBOSE=
++TMP="/tmp/"
++META_NAME="META_dAfFgHE39ktF3HD2sr"
++SKIP_DEL_LIST="skip-delete-list.mini_fo-merge"
++
++COMMAND=
++exec_command()
++{
++ if [ x$DRYRUN == "xset" ]; then
++ echo " would run: $COMMAND"
++ elif ! [ x$DRYRUN == "xset" ]; then
++ if [ x$VERBOSE == "xset" ]; then
++ echo " running: $COMMAND"
++ fi
++ eval $COMMAND
++ fi
++}
++
++usage()
++{
++cat <<EOF
++
++USAGE: $0 -b <base dir> -s <storage dir>
++Version 0.1
++
++This script merges the contents of a mini_fo storage file system back
++to the base file system.
++
++!!! Warning: This will modify the base filesystem and can destroy data
++ if used wrongly.
++
++Options:
++ -b <base dir>
++ the directory of the base file system.
++
++ -s <storage dir>
++ the directory of the storage file system.
++
++ -d dry run, will not change anything and print the commands that
++ would be executed.
++
++ -t tmp dir for storing temporary file. default: $TMP
++
++ -v show what operations are performed.
++
++ -h displays this message.
++
++EOF
++}
++
++# parse parameters
++while getopts hdvt:b:s: OPTS
++ do
++ case $OPTS in
++ h) HELP="set";;
++ d) DRYRUN="set";;
++ v) VERBOSE="set";;
++ b) BASE="$OPTARG";;
++ s) STO="$OPTARG";;
++ t) TMP="$OPTARG";;
++ ?) usage
++ exit 1;;
++ esac
++done
++
++if [ "x$HELP" == "xset" ]; then
++ usage
++ exit -1
++fi
++
++if ! [ -d "$BASE" ] || ! [ -d "$STO" ]; then
++ echo -e "$0:\n Error, -s and/or -b argument missing. type $0 -h for help."
++ exit -1;
++fi
++
++# get full paths
++pushd $STO; STO=`pwd`; popd
++pushd $BASE; BASE=`pwd`; popd
++TMP=${TMP%/}
++
++
++cat<<EOF
++###############################################################################
++# mini_fo-merge
++#
++# base dir: $BASE
++# storage dir: $STO
++# meta filename: $META_NAME
++# dry run: $DRYRUN
++# verbose: $VERBOSE
++# tmp files: $TMP
++###############################################################################
++
++EOF
++
++rm $TMP/$SKIP_DEL_LIST
++
++# first process all renamed dirs
++echo "Merging renamed directories..."
++pushd $STO &> /dev/null
++find . -name $META_NAME -type f -print0 | xargs -0 -e grep -e '^R ' | tr -s ':R' ' ' | while read ENTRY; do
++ echo "entry: $ENTRY"
++ META_FILE=`echo $ENTRY | cut -d ' ' -f 1`
++ OLD_B_DIR=`echo $ENTRY | cut -d ' ' -f 2 | sed -e 's/\///'`
++ NEW_NAME=`echo $ENTRY | cut -d ' ' -f 3`
++ NEW_B_DIR=`echo $META_FILE | sed -e "s/$META_NAME/$NEW_NAME/" | sed -e 's/^\.\///'`
++ echo "META_FILE: $META_FILE"
++ echo "OLD_B_DIR: $OLD_B_DIR"
++ echo "NEW_NAME: $NEW_NAME"
++ echo "NEW_B_DIR: $NEW_B_DIR"
++
++ pushd $BASE &> /dev/null
++ # remove an existing dir in storage
++ COMMAND="rm -rf $NEW_B_DIR"; exec_command
++ COMMAND="cp -R $OLD_B_DIR $NEW_B_DIR"; exec_command
++ echo ""
++ popd &> /dev/null
++
++ # remember this dir to exclude it from deleting later
++ echo $NEW_B_DIR >> $TMP/$SKIP_DEL_LIST
++done
++
++# delete all whiteouted files from base
++echo -e "\nDeleting whiteout'ed files from base file system..."
++find . -name $META_NAME -type f -print0 | xargs -0 -e grep -e '^D ' | sed -e 's/:D//' | while read ENTRY; do
++ META_FILE=`echo $ENTRY | cut -d ' ' -f 1`
++ DEL_NAME=`echo $ENTRY | cut -d ' ' -f 2`
++ DEL_FILE=`echo $META_FILE | sed -e "s/$META_NAME/$DEL_NAME/" | sed -e 's/^\.\///'`
++ grep -x $DEL_FILE $TMP/$SKIP_DEL_LIST &> /dev/null
++ if [ $? -ne 0 ]; then
++ pushd $BASE &> /dev/null
++ COMMAND="rm -rf $DEL_FILE"; exec_command
++ popd &> /dev/null
++ else
++ echo " excluding: $DEL_FILE as in skip-del-list."
++ fi
++done
++
++# create all dirs and update permissions
++echo -e "\nSetting up directory structures in base file system..."
++find . -type d | sed -e 's/^\.\///' | while read DIR; do
++ PERMS=`stat -c %a $DIR`
++ DIR_UID=`stat -c %u $DIR`
++ DIR_GID=`stat -c %g $DIR`
++ pushd $BASE &> /dev/null
++ if ! [ -d $DIR ]; then
++ COMMAND="mkdir -p $DIR"; exec_command
++ fi
++ COMMAND="chmod $PERMS $DIR"; exec_command
++ COMMAND="chown $DIR_UID:$DIR_GID $DIR"; exec_command
++ popd &> /dev/null
++done
++
++# merge all non-directory files
++echo -e "\nMerging all non-directory files...."
++for i in b c p f l s; do
++ find . -type $i | sed -e 's/^\.\///' | grep -v "$META_NAME" | while read FILE; do
++ pushd $BASE #&> /dev/null
++ COMMAND="cp -df $STO/$FILE $BASE/$FILE"; exec_command
++ popd &> /dev/null
++ done
++done
++popd &> /dev/null
++
++#rm $TMP/$SKIP_DEL_LIST
++
++echo "Done!"
+diff -urN linux-2.6.19.old/fs/mini_fo/mini_fo-overlay linux-2.6.19.dev/fs/mini_fo/mini_fo-overlay
+--- linux-2.6.19.old/fs/mini_fo/mini_fo-overlay 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/mini_fo-overlay 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,130 @@
++#!/bin/bash
++#
++# Copyright (C) 2005 Markus Klotzbuecher <mk@creamnet.de>
++# 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.
++#
++
++HELP=
++SUFF=
++MNTP=
++MNT_DIR="/mnt"
++STO=
++STO_DIR="/tmp"
++BASE=
++
++usage()
++{
++cat <<EOF
++
++Usage: $0 [-s suffix] [-d sto_dir_dir] [-m mount point] base_dir
++Version 0.1
++
++This script overlays the given base directory using the mini_fo file
++system. If only the base directory base_dir is given, $0
++will use a storage directory called "sto-<base_dir_name>" in $STO_DIR,
++and mount point "mini_fo-<base_dir_dir>" in $MNT_DIR.
++
++Options:
++ -s <suffix>
++ add given suffix to storage directory and the mount
++ point. This is usefull for overlaying one base directory
++ several times and avoiding conflicts with storage directory
++ names and mount points.
++
++ -d <sto_dir_dir>
++ change the directory in which the storage directory will be
++ created (default is currently "$STO_DIR".
++
++ -m <mount point>
++ use an alternative directory to create the mini_fo
++ mountpoint (default is currently "$MNT_DIR".
++
++ -h displays this message.
++
++EOF
++exit 1;
++}
++
++while getopts hm:s:d: OPTS
++ do
++ case $OPTS in
++ s) SUFF="$OPTARG";;
++ d) STO_DIR="$OPTARG";;
++ m) MNT_DIR="$OPTARG";;
++ h) HELP="set";;
++ ?) usage
++ exit 1;;
++ esac
++done
++shift $(($OPTIND - 1))
++
++BASE="$1"
++
++if [ "x$HELP" == "xset" ]; then
++ usage
++ exit -1
++fi
++
++# fix suffix
++if [ "x$SUFF" != "x" ]; then
++ SUFF="-$SUFF"
++fi
++
++# kill trailing slashes
++MNT_DIR=${MNT_DIR%/}
++STO_DIR=${STO_DIR%/}
++BASE=${BASE%/}
++
++
++if ! [ -d "$BASE" ]; then
++ echo "invalid base dir $BASE, run $0 -h for help."
++ exit -1
++fi
++
++# check opts
++if ! [ -d "$MNT_DIR" ]; then
++ echo "invalid mount dir $MNT_DIR, run $0 -h for help."
++ exit -1
++fi
++
++if ! [ -d "$STO_DIR" ]; then
++ echo "invalid sto_dir_dir $STO_DIR, run $0 -h for help."
++ exit -1
++fi
++
++MNTP="$MNT_DIR/mini_fo-`basename $BASE`$SUFF"
++STO="$STO_DIR/sto-`basename $BASE`$SUFF"
++
++# create the mount point if it doesn't exist
++mkdir -p $MNTP
++if [ $? -ne 0 ]; then
++ echo "Error, failed to create mount point $MNTP"
++fi
++
++mkdir -p $STO
++if [ $? -ne 0 ]; then
++ echo "Error, failed to create storage dir $STO"
++fi
++
++# check if fs is already mounted
++mount | grep mini_fo | grep $MNTP &> /dev/null
++if [ $? -eq 0 ]; then
++ echo "Error, existing mini_fo mount at $MNTP."
++ exit -1
++fi
++
++mount | grep mini_fo | grep $STO &> /dev/null
++if [ $? -eq 0 ]; then
++ echo "Error, $STO seems to be used already."
++ exit -1
++fi
++
++# mount
++mount -t mini_fo -o base=$BASE,sto=$STO $BASE $MNTP
++
++if [ $? -ne 0 ]; then
++ echo "Error, mounting failed, maybe no permisson to mount?"
++fi
+diff -urN linux-2.6.19.old/fs/mini_fo/mmap.c linux-2.6.19.dev/fs/mini_fo/mmap.c
+--- linux-2.6.19.old/fs/mini_fo/mmap.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/mmap.c 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,637 @@
++/*
++ * Copyright (c) 1997-2003 Erez Zadok
++ * Copyright (c) 2001-2003 Stony Brook University
++ *
++ * For specific licensing information, see the COPYING file distributed with
++ * this package, or get one from ftp://ftp.filesystems.org/pub/fist/COPYING.
++ *
++ * This Copyright notice must be kept intact and distributed with all
++ * fistgen sources INCLUDING sources generated by fistgen.
++ */
++/*
++ * Copyright (C) 2004, 2005 Markus Klotzbuecher <mk@creamnet.de>
++ *
++ * 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.
++ */
++
++/*
++ * $Id$
++ */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif /* HAVE_CONFIG_H */
++
++#include "fist.h"
++#include "mini_fo.h"
++
++
++#ifdef FIST_COUNT_WRITES
++/* for counting writes in the middle vs. regular writes */
++unsigned long count_writes = 0, count_writes_middle = 0;
++#endif /* FIST_COUNT_WRITES */
++
++/* forward declaration of commit write and prepare write */
++STATIC int mini_fo_commit_write(file_t *file, page_t *page, unsigned from, unsigned to);
++STATIC int mini_fo_prepare_write(file_t *file, page_t *page, unsigned from, unsigned to);
++
++
++/*
++ * Function for handling creation of holes when lseek-ing past the
++ * end of the file and then writing some data.
++ */
++int
++mini_fo_fill_zeros(file_t* file, page_t *page, unsigned from)
++{
++ int err = 0;
++ dentry_t *dentry = file->f_dentry;
++ inode_t *inode = dentry->d_inode;
++ page_t *tmp_page;
++ int index;
++
++ print_entry_location();
++
++ for (index = inode->i_size >> PAGE_CACHE_SHIFT; index < page->index; index++) {
++ tmp_page = mini_fo_get1page(file, index);
++ if (IS_ERR(tmp_page)) {
++ err = PTR_ERR(tmp_page);
++ goto out;
++ }
++
++ /*
++ * zero out rest of the contents of the page between the appropriate
++ * offsets.
++ */
++ memset((char*)page_address(tmp_page) + (inode->i_size & ~PAGE_CACHE_MASK), 0, PAGE_CACHE_SIZE - (inode->i_size & ~PAGE_CACHE_MASK));
++
++ if (! (err = mini_fo_prepare_write(file, tmp_page, 0, PAGE_CACHE_SIZE)))
++ err = mini_fo_commit_write(file, tmp_page, 0, PAGE_CACHE_SIZE);
++
++ page_cache_release(tmp_page);
++ if (err < 0)
++ goto out;
++ if (current->need_resched)
++ schedule();
++ }
++
++ /* zero out appropriate parts of last page */
++
++ /*
++ * if the encoding type is block, then adjust the 'from' (where the
++ * zeroing will start) offset appropriately
++ */
++ from = from & (~(FIST_ENCODING_BLOCKSIZE - 1));
++
++ if ((from - (inode->i_size & ~PAGE_CACHE_MASK)) > 0) {
++
++ memset((char*)page_address(page) + (inode->i_size & ~PAGE_CACHE_MASK), 0, from - (inode->i_size & ~PAGE_CACHE_MASK));
++ if (! (err = mini_fo_prepare_write(file, page, 0, PAGE_CACHE_SIZE)))
++ err = mini_fo_commit_write(file, page, 0, PAGE_CACHE_SIZE);
++
++ if (err < 0)
++ goto out;
++ if (current->need_resched)
++ schedule();
++ }
++
++ out:
++ print_exit_status(err);
++ return err;
++}
++
++
++
++STATIC int
++mini_fo_writepage(page_t *page)
++{
++ int err = -EIO;
++ inode_t *inode;
++ inode_t *hidden_inode;
++ page_t *hidden_page;
++ char *kaddr, *hidden_kaddr;
++
++ print_entry_location();
++
++ inode = page->mapping->host;
++ hidden_inode = itohi(inode);
++
++ /*
++ * writepage is called when shared mmap'ed files need to write
++ * their pages, while prepare/commit_write are called from the
++ * non-paged write() interface. (However, in 2.3 the two interfaces
++ * share the same cache, while in 2.2 they didn't.)
++ *
++ * So we pretty much have to duplicate much of what commit_write does.
++ */
++
++ /* find lower page (returns a locked page) */
++ hidden_page = grab_cache_page(hidden_inode->i_mapping, page->index);
++ if (!hidden_page)
++ goto out;
++
++ /* get page address, and encode it */
++ kaddr = (char *) kmap(page);
++ hidden_kaddr = (char*) kmap(hidden_page);
++ mini_fo_encode_block(kaddr, hidden_kaddr, PAGE_CACHE_SIZE, inode, inode->i_sb, page->index);
++ /* if encode_block could fail, then return error */
++ kunmap(page);
++ kunmap(hidden_page);
++
++ /* call lower writepage (expects locked page) */
++ err = hidden_inode->i_mapping->a_ops->writepage(hidden_page);
++
++ /*
++ * update mtime and ctime of lower level file system
++ * mini_fo' mtime and ctime are updated by generic_file_write
++ */
++ hidden_inode->i_mtime = hidden_inode->i_ctime = CURRENT_TIME;
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,1)
++ UnlockPage(hidden_page); /* b/c grab_cache_page locked it */
++# endif /* kernel older than 2.4.1 */
++ page_cache_release(hidden_page); /* b/c grab_cache_page increased refcnt */
++
++ if (err)
++ ClearPageUptodate(page);
++ else
++ SetPageUptodate(page);
++ out:
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,1)
++ UnlockPage(page);
++# endif /* kernel 2.4.1 and newer */
++ print_exit_status(err);
++ return err;
++}
++
++
++/*
++ * get one page from cache or lower f/s, return error otherwise.
++ * returns unlocked, up-to-date page (if ok), with increased refcnt.
++ */
++page_t *
++mini_fo_get1page(file_t *file, int index)
++{
++ page_t *page;
++ dentry_t *dentry;
++ inode_t *inode;
++ struct address_space *mapping;
++ int err;
++
++ print_entry_location();
++
++ dentry = file->f_dentry; /* CPW: Moved below print_entry_location */
++ inode = dentry->d_inode;
++ mapping = inode->i_mapping;
++
++ fist_dprint(8, "%s: read page index %d pid %d\n", __FUNCTION__, index, current->pid);
++ if (index < 0) {
++ printk("%s BUG: index=%d\n", __FUNCTION__, index);
++ page = ERR_PTR(-EIO);
++ goto out;
++ }
++ page = read_cache_page(mapping,
++ index,
++ (filler_t *) mapping->a_ops->readpage,
++ (void *) file);
++ if (IS_ERR(page))
++ goto out;
++ wait_on_page(page);
++ if (!Page_Uptodate(page)) {
++ lock_page(page);
++ err = mapping->a_ops->readpage(file, page);
++ if (err) {
++ page = ERR_PTR(err);
++ goto out;
++ }
++ wait_on_page(page);
++ if (!Page_Uptodate(page)) {
++ page = ERR_PTR(-EIO);
++ goto out;
++ }
++ }
++
++ out:
++ print_exit_pointer(page);
++ return page;
++}
++
++
++/*
++ * get one page from cache or lower f/s, return error otherwise.
++ * similar to get1page, but doesn't guarantee that it will return
++ * an unlocked page.
++ */
++page_t *
++mini_fo_get1page_cached(file_t *file, int index)
++{
++ page_t *page;
++ dentry_t *dentry;
++ inode_t *inode;
++ struct address_space *mapping;
++ int err;
++
++ print_entry_location();
++
++ dentry = file->f_dentry; /* CPW: Moved below print_entry_location */
++ inode = dentry->d_inode;
++ mapping = inode->i_mapping;
++
++ fist_dprint(8, "%s: read page index %d pid %d\n", __FUNCTION__, index, current->pid);
++ if (index < 0) {
++ printk("%s BUG: index=%d\n", __FUNCTION__, index);
++ page = ERR_PTR(-EIO);
++ goto out;
++ }
++ page = read_cache_page(mapping,
++ index,
++ (filler_t *) mapping->a_ops->readpage,
++ (void *) file);
++ if (IS_ERR(page))
++ goto out;
++
++ out:
++ print_exit_pointer(page);
++ return page;
++}
++
++
++/*
++ * readpage is called from generic_page_read and the fault handler.
++ * If your file system uses generic_page_read for the read op, it
++ * must implement readpage.
++ *
++ * Readpage expects a locked page, and must unlock it.
++ */
++STATIC int
++mini_fo_do_readpage(file_t *file, page_t *page)
++{
++ int err = -EIO;
++ dentry_t *dentry;
++ file_t *hidden_file = NULL;
++ dentry_t *hidden_dentry;
++ inode_t *inode;
++ inode_t *hidden_inode;
++ char *page_data;
++ page_t *hidden_page;
++ char *hidden_page_data;
++ int real_size;
++
++ print_entry_location();
++
++ dentry = file->f_dentry; /* CPW: Moved below print_entry_location */
++ if (ftopd(file) != NULL)
++ hidden_file = ftohf(file);
++ hidden_dentry = dtohd(dentry);
++ inode = dentry->d_inode;
++ hidden_inode = itohi(inode);
++
++ fist_dprint(7, "%s: requesting page %d from file %s\n", __FUNCTION__, page->index, dentry->d_name.name);
++
++ MALLOC_PAGE_POINTERS(hidden_pages, num_hidden_pages);
++ MALLOC_PAGEDATA_POINTERS(hidden_pages_data, num_hidden_pages);
++ FOR_EACH_PAGE
++ CURRENT_HIDDEN_PAGE = NULL;
++
++ /* find lower page (returns a locked page) */
++ FOR_EACH_PAGE {
++ fist_dprint(8, "%s: Current page index = %d\n", __FUNCTION__, CURRENT_HIDDEN_PAGEINDEX);
++ CURRENT_HIDDEN_PAGE = read_cache_page(hidden_inode->i_mapping,
++ CURRENT_HIDDEN_PAGEINDEX,
++ (filler_t *) hidden_inode->i_mapping->a_ops->readpage,
++ (void *) hidden_file);
++ if (IS_ERR(CURRENT_HIDDEN_PAGE)) {
++ err = PTR_ERR(CURRENT_HIDDEN_PAGE);
++ CURRENT_HIDDEN_PAGE = NULL;
++ goto out_release;
++ }
++ }
++
++ /*
++ * wait for the page data to show up
++ * (signaled by readpage as unlocking the page)
++ */
++ FOR_EACH_PAGE {
++ wait_on_page(CURRENT_HIDDEN_PAGE);
++ if (!Page_Uptodate(CURRENT_HIDDEN_PAGE)) {
++ /*
++ * call readpage() again if we returned from wait_on_page with a
++ * page that's not up-to-date; that can happen when a partial
++ * page has a few buffers which are ok, but not the whole
++ * page.
++ */
++ lock_page(CURRENT_HIDDEN_PAGE);
++ err = hidden_inode->i_mapping->a_ops->readpage(hidden_file,
++ CURRENT_HIDDEN_PAGE);
++ if (err) {
++ CURRENT_HIDDEN_PAGE = NULL;
++ goto out_release;
++ }
++ wait_on_page(CURRENT_HIDDEN_PAGE);
++ if (!Page_Uptodate(CURRENT_HIDDEN_PAGE)) {
++ err = -EIO;
++ goto out_release;
++ }
++ }
++ }
++
++ /* map pages, get their addresses */
++ page_data = (char *) kmap(page);
++ FOR_EACH_PAGE
++ CURRENT_HIDDEN_PAGEDATA = (char *) kmap(CURRENT_HIDDEN_PAGE);
++
++ /* if decode_block could fail, then return error */
++ err = 0;
++ real_size = hidden_inode->i_size - (page->index << PAGE_CACHE_SHIFT);
++ if (real_size <= 0)
++ memset(page_data, 0, PAGE_CACHE_SIZE);
++ else if (real_size < PAGE_CACHE_SIZE) {
++ mini_fo_decode_block(hidden_page_data, page_data, real_size, inode, inode->i_sb, page->index);
++ memset(page_data + real_size, 0, PAGE_CACHE_SIZE - real_size);
++ } else
++ mini_fo_decode_block(hidden_page_data, page_data, PAGE_CACHE_SIZE, inode, inode->i_sb, page->index);
++
++ FOR_EACH_PAGE
++ kunmap(CURRENT_HIDDEN_PAGE);
++ kunmap(page);
++
++ out_release:
++ FOR_EACH_PAGE
++ if (CURRENT_HIDDEN_PAGE)
++ page_cache_release(CURRENT_HIDDEN_PAGE); /* undo read_cache_page */
++
++ FREE_PAGE_POINTERS(hidden_pages, num_hidden_pages);
++ FREE_PAGEDATA_POINTERS(hidden_pages_data, num_hidden_pages);
++
++ out:
++ if (err == 0)
++ SetPageUptodate(page);
++ else
++ ClearPageUptodate(page);
++
++ print_exit_status(err);
++ return err;
++}
++
++
++STATIC int
++mini_fo_readpage(file_t *file, page_t *page)
++{
++ int err;
++ print_entry_location();
++
++ err = mini_fo_do_readpage(file, page);
++
++ /*
++ * we have to unlock our page, b/c we _might_ have gotten a locked page.
++ * but we no longer have to wakeup on our page here, b/c UnlockPage does
++ * it
++ */
++ UnlockPage(page);
++
++ print_exit_status(err);
++ return err;
++}
++
++
++STATIC int
++mini_fo_prepare_write(file_t *file, page_t *page, unsigned from, unsigned to)
++{
++ int err = 0;
++
++ print_entry_location();
++
++ /*
++ * we call kmap(page) only here, and do the kunmap
++ * and the actual downcalls, including unlockpage and uncache
++ * in commit_write.
++ */
++ kmap(page);
++
++ /* fast path for whole page writes */
++ if (from == 0 && to == PAGE_CACHE_SIZE)
++ goto out;
++ /* read the page to "revalidate" our data */
++ /* call the helper function which doesn't unlock the page */
++ if (!Page_Uptodate(page))
++ err = mini_fo_do_readpage(file, page);
++
++ out:
++ print_exit_status(err);
++ return err;
++}
++
++
++
++STATIC int
++mini_fo_commit_write(file_t *file, page_t *page, unsigned from, unsigned to)
++{
++ int err = -ENOMEM;
++ inode_t *inode;
++ inode_t *hidden_inode;
++ page_t *hidden_page;
++ file_t *hidden_file = NULL;
++ loff_t pos;
++ unsigned bytes = to - from;
++ unsigned hidden_from, hidden_to, hidden_bytes;
++
++ print_entry_location();
++
++ inode = page->mapping->host; /* CPW: Moved below print_entry_location */
++ hidden_inode = itohi(inode);
++
++ ASSERT(file != NULL);
++ /*
++ * here we have a kmapped page, with data from the user copied
++ * into it. we need to encode_block it, and then call the lower
++ * commit_write. We also need to simulate same behavior of
++ * generic_file_write, and call prepare_write on the lower f/s first.
++ */
++#ifdef FIST_COUNT_WRITES
++ count_writes++;
++# endif /* FIST_COUNT_WRITES */
++
++ /* this is append and/or extend -- we can't have holes so fill them in */
++ if (page->index > (hidden_inode->i_size >> PAGE_CACHE_SHIFT)) {
++ page_t *tmp_page;
++ int index;
++ for (index = hidden_inode->i_size >> PAGE_CACHE_SHIFT; index < page->index; index++) {
++ tmp_page = mini_fo_get1page(file, index);
++ if (IS_ERR(tmp_page)) {
++ err = PTR_ERR(tmp_page);
++ goto out;
++ }
++ /* zero out the contents of the page at the appropriate offsets */
++ memset((char*)page_address(tmp_page) + (inode->i_size & ~PAGE_CACHE_MASK), 0, PAGE_CACHE_SIZE - (inode->i_size & ~PAGE_CACHE_MASK));
++ if (!(err = mini_fo_prepare_write(file, tmp_page, 0, PAGE_CACHE_SIZE)))
++ err = mini_fo_commit_write(file, tmp_page, 0, PAGE_CACHE_SIZE);
++ page_cache_release(tmp_page);
++ if (err < 0)
++ goto out;
++ if (current->need_resched)
++ schedule();
++ }
++ }
++
++ if (ftopd(file) != NULL)
++ hidden_file = ftohf(file);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_inode->i_mutex);
++#else
++ down(&hidden_inode->i_sem);
++#endif
++ /* find lower page (returns a locked page) */
++ hidden_page = grab_cache_page(hidden_inode->i_mapping, page->index);
++ if (!hidden_page)
++ goto out;
++
++#if FIST_ENCODING_BLOCKSIZE > 1
++# error encoding_blocksize greater than 1 is not yet supported
++# endif /* FIST_ENCODING_BLOCKSIZE > 1 */
++
++ hidden_from = from & (~(FIST_ENCODING_BLOCKSIZE - 1));
++ hidden_to = ((to + FIST_ENCODING_BLOCKSIZE - 1) & (~(FIST_ENCODING_BLOCKSIZE - 1)));
++ if ((page->index << PAGE_CACHE_SHIFT) + to > hidden_inode->i_size) {
++
++ /*
++ * if this call to commit_write had introduced holes and the code
++ * for handling holes was invoked, then the beginning of this page
++ * must be zeroed out
++ * zero out bytes from 'size_of_file%pagesize' to 'from'.
++ */
++ if ((hidden_from - (inode->i_size & ~PAGE_CACHE_MASK)) > 0)
++ memset((char*)page_address(page) + (inode->i_size & ~PAGE_CACHE_MASK), 0, hidden_from - (inode->i_size & ~PAGE_CACHE_MASK));
++
++ }
++ hidden_bytes = hidden_to - hidden_from;
++
++ /* call lower prepare_write */
++ err = -EINVAL;
++ if (hidden_inode->i_mapping &&
++ hidden_inode->i_mapping->a_ops &&
++ hidden_inode->i_mapping->a_ops->prepare_write)
++ err = hidden_inode->i_mapping->a_ops->prepare_write(hidden_file,
++ hidden_page,
++ hidden_from,
++ hidden_to);
++ if (err)
++ /* don't leave locked pages behind, esp. on an ENOSPC */
++ goto out_unlock;
++
++ fist_dprint(8, "%s: encoding %d bytes\n", __FUNCTION__, hidden_bytes);
++ mini_fo_encode_block((char *) page_address(page) + hidden_from, (char*) page_address(hidden_page) + hidden_from, hidden_bytes, inode, inode->i_sb, page->index);
++ /* if encode_block could fail, then goto unlock and return error */
++
++ /* call lower commit_write */
++ err = hidden_inode->i_mapping->a_ops->commit_write(hidden_file,
++ hidden_page,
++ hidden_from,
++ hidden_to);
++
++ if (err < 0)
++ goto out_unlock;
++
++ err = bytes; /* convert error to no. of bytes */
++
++ inode->i_blocks = hidden_inode->i_blocks;
++ /* we may have to update i_size */
++ pos = (page->index << PAGE_CACHE_SHIFT) + to;
++ if (pos > inode->i_size)
++ inode->i_size = pos;
++
++ /*
++ * update mtime and ctime of lower level file system
++ * mini_fo' mtime and ctime are updated by generic_file_write
++ */
++ hidden_inode->i_mtime = hidden_inode->i_ctime = CURRENT_TIME;
++
++ mark_inode_dirty_sync(inode);
++
++ out_unlock:
++ UnlockPage(hidden_page);
++ page_cache_release(hidden_page);
++ kunmap(page); /* kmap was done in prepare_write */
++ out:
++ /* we must set our page as up-to-date */
++ if (err < 0)
++ ClearPageUptodate(page);
++ else
++ SetPageUptodate(page);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_inode->i_mutex);
++#else
++ up(&hidden_inode->i_sem);
++#endif
++ print_exit_status(err);
++ return err; /* assume all is ok */
++}
++
++
++STATIC int
++mini_fo_bmap(struct address_space *mapping, long block)
++{
++ int err = 0;
++ inode_t *inode;
++ inode_t *hidden_inode;
++
++ print_entry_location();
++
++ inode = (inode_t *) mapping->host;
++ hidden_inode = itohi(inode);
++
++ if (hidden_inode->i_mapping->a_ops->bmap)
++ err = hidden_inode->i_mapping->a_ops->bmap(hidden_inode->i_mapping, block);
++ print_exit_location();
++ return err;
++}
++
++
++/*
++ * This function is copied verbatim from mm/filemap.c.
++ * XXX: It should be simply moved to some header file instead -- bug Al about it!
++ */
++static inline int sync_page(struct page *page)
++{
++ struct address_space *mapping = page->mapping;
++
++ if (mapping && mapping->a_ops && mapping->a_ops->sync_page)
++ return mapping->a_ops->sync_page(page);
++ return 0;
++}
++
++
++/*
++ * XXX: we may not need this function if not FIST_FILTER_DATA.
++ * FIXME: for FIST_FILTER_SCA, get all lower pages and sync them each.
++ */
++STATIC int
++mini_fo_sync_page(page_t *page)
++{
++ int err = 0;
++ inode_t *inode;
++ inode_t *hidden_inode;
++ page_t *hidden_page;
++
++ print_entry_location();
++
++ inode = page->mapping->host; /* CPW: Moved below print_entry_location */
++ hidden_inode = itohi(inode);
++
++ /* find lower page (returns a locked page) */
++ hidden_page = grab_cache_page(hidden_inode->i_mapping, page->index);
++ if (!hidden_page)
++ goto out;
++
++ err = sync_page(hidden_page);
++
++ UnlockPage(hidden_page); /* b/c grab_cache_page locked it */
++ page_cache_release(hidden_page); /* b/c grab_cache_page increased refcnt */
++
++ out:
++ print_exit_status(err);
++ return err;
++}
+diff -urN linux-2.6.19.old/fs/mini_fo/README linux-2.6.19.dev/fs/mini_fo/README
+--- linux-2.6.19.old/fs/mini_fo/README 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/README 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,163 @@
++README for the mini_fo overlay file system
++=========================================
++
++
++WHAT IS MINI_FO?
++----------------
++
++mini_fo is a virtual kernel file system that can make read-only
++file systems writable. This is done by redirecting modifying operations
++to a writeable location called "storage directory", and leaving the
++original data in the "base directory" untouched. When reading, the
++file system merges the modifed and original data so that only the
++newest versions will appear. This occurs transparently to the user,
++who can access the data like on any other read-write file system.
++
++Base and storage directories may be located on the same or on
++different partitions and may be of different file system types. While
++the storage directory obviously needs to be writable, the base may or
++may not be writable, what doesn't matter as it will no be modified
++anyway.
++
++
++WHAT IS GOOD FOR?
++-----------------
++
++The primary purpose of the mini_fo file system is to allow easy
++software updates to embedded systems, that often store their root
++file system in a read-only flash file system, but there are many
++more as for example sandboxing, or for allowing live-cds to
++permanently store information.
++
++
++BUILDING
++--------
++This should be simple. Adjust the Makefile to point to the correct
++kernel headers you want to build the module for. Then:
++
++ # make
++
++should build "mini_fo.o" for a 2.4 kernel or "mini_fo.ko" for a 2.6
++kernel.
++
++If you are building the module for you current kernel, you can install
++the module (as root):
++
++ # make install
++
++or uninstall with
++
++ # make uninstall
++
++
++USING THE FILE SYSTEM
++--------------------
++
++the general mount syntax is:
++
++ mount -t mini_fo -o base=<base directory>,sto=<storage directory>\
++ <base directory> <mount point>
++
++Example:
++
++You have mounted a cdrom to /mnt/cdrom and want to modifiy some files
++on it:
++
++load the module (as root)
++
++ # insmod mini_fo.o for a 2.4 kernel or
++
++ # insmod mini_fo.ko for a 2.6 kernel
++
++
++create a storage dir in tmp and a mountpoint for mini_fo:
++
++ # mkdir /tmp/sto
++ # mkdir /mnt/mini_fo
++
++and mount the mini_fo file system:
++
++ # mount -t mini_fo -o base=/mnt/cdrom,sto=/tmp/sto /mnt/cdrom /mnt/mini_fo
++
++
++Now the data stored on the cd can be accessed via the mini_fo
++mountpoint just like any read-write file system, files can be modified
++and deleted, new ones can be created and so on. When done unmount the
++file system:
++
++ # unmount /mnt/mini_fo
++
++Note that if the file system is mounted again using the same storage
++file system, of course it will appear in the modified state again. If
++you remount it using an new empty storage directory, it will be
++unmodified. Therefore by executing:
++
++ # cd /tmp/sto
++ # rm -rf *
++
++you can nuke all the changes you made to the original file system. But
++ remember NEVER do this while the mini_fo file system is mounted!
++
++
++Alternatively you can use the mini_fo-overlay bash script, that
++simplifies managing mini_fo mounts. See TOOLS Section.
++
++
++TOOLS
++-----
++
++mini_fo-merge (experimental):
++
++This is a bash script that will merge changes contained in the storage
++directory back to the base directory. This allows mini_fo to function
++as a cache file system by overlaying a slow (network, ...) file system
++and using a fast (ramdisk, ...) as storage. When done, changes can be
++merged back to the (slow) base with mini_fo-merge. See "mini_fo-merge
++-h" for details.
++
++It can be usefull for merging changes back after a successfull test
++(patches, software updates...)
++
++
++mini_fo-overlay:
++
++This bash script simplifies managing one or more mini_fo mounts. For
++overlaying a directory called "basedir1", you can just call:
++
++ # mini_fo-overlay basedir1
++
++This will mount mini_fo with "basedir1" as base, "/tmp/sto-basedir1/"
++as storage to "/mnt/mini_fo-basedir1/". It has more options though,
++type "mini_fo-overlay -h" for details.
++
++
++DOCUMENTATION, REPORTING BUGS, GETTING HELP
++-------------------------------------------
++
++Please visit the mini_fo project page at:
++
++http://www.denx.de/twiki/bin/view/Know/MiniFOHome
++
++
++WARNINGS
++--------
++
++Never modify the base or the storage directorys while the mini_fo
++file system is mounted, or you might crash you system. Simply accessing
++and reading should not cause any trouble.
++
++Exporting a mini_fo mount point via NFS has not been tested, and may
++or may not work.
++
++Check the RELEASE_NOTES for details on bugs and features.
++
++
++
++Copyright (C) 2004, 2005 Markus Klotzbuecher <mk@creamnet.de>
++
++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.
++
++
+diff -urN linux-2.6.19.old/fs/mini_fo/RELEASE_NOTES linux-2.6.19.dev/fs/mini_fo/RELEASE_NOTES
+--- linux-2.6.19.old/fs/mini_fo/RELEASE_NOTES 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/RELEASE_NOTES 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,111 @@
++Release: mini_fo-0.6.1 (v0-6-1)
++Date: 21.09.2005
++
++
++Changes:
++--------
++v0-6-1:
++
++- bugfixes (see ChangeLog)
++
++- two helper scripts "mini_fo_merge" and "mini_fo_overlay" (see
++ README for details).
++
++v0-6-0:
++
++- Support for 2.4 and 2.6 (see Makefile)
++
++- Partial hard link support (creating works as expected, but already
++ existing links in the base file system will be treated as if they
++ were individual files).
++
++- Various bugfixes and cleanups.
++
++
++v0-6-0-pre1:
++
++- This is mini_fo-0-6-0-pre1! This release is a complete rewrite of
++ many vital mini_fo parts such as the old whiteout list code which
++ has been replaced by the new META subsystem.
++
++- Light weight directory renaming implemented. This means if a
++ directory is renamed via the mini_fo filesystem this will no longer
++ result in a complete copy in storage, instead only one empty
++ directory will be created. All base filed contained in the original
++ directory stay there until modified.
++
++- Special files (creating, renaming, deleting etc.) now working.
++
++- Many bugfixes and cleanup, mini_fo is now a lot more stable.
++
++
++v0-5-10:
++
++- Final release of the 0-5-* versions. Next will be a complete rewrite
++ of many features. This release contains several bugfixes related to
++ directory renaming.
++
++
++v0-5-10-pre6:
++
++- Lots of cleanup and several bugfixes related to directory deleting
++
++- Directory renaming suddenly works, what is most likely due to the
++ fact tha that "mv" is smart: if the classic rename doesn't work it
++ will assume that source and target file are on different fs and will
++ copy the directory and try to remove the source directory. Until
++ directory removing wasn't implemented, it would fail to do this and
++ rollback.
++ So, directory renaming works for now, but it doesn't yet do what you
++ would expect from a overlay fs, so use with care.
++
++
++v0-5-10-pre5:
++
++- implemented directory deleting
++- made parsing of mount options more stable
++- New format of mount options! (See README)
++- I can't reproduce the unknown panic with 2.4.25 anymore, so I'll
++ happily assume it never existed!
++
++
++Implemented features:
++---------------------
++
++- creating hard links (see BUGS on already existing hard links)
++- lightweight directory renaming
++- renaming device files, pipes, sockets, etc.
++- creating, renaming, deleting of special files
++- deleting directorys
++- general directory reading (simple "ls" )
++- creating files in existing directorys
++- creating directorys
++- renaming files.
++- reading and writing files (involves opening)
++- appending to files (creates copy in storage)
++- deleting files
++- llseek works too, what allows editors to work
++- persistency (a deleted file stay deleted over remounts)
++- use of symbolic links
++- creating of device files
++
++
++Not (yet) implemented features:
++-------------------------------
++
++- full hard link support.
++
++
++
++BUGS:
++-----
++
++Hard links in the base file system will be treated as individual
++files, not as links to one inode.
++
++The main problem with hard links isn't allowing to create them, but
++their pure existence. If you modify a base hard link, the changes made
++will only show up on this link, the other link will remain in the
++original state. I hope to fix this someday. Please note that this does
++not effect the special hard links '.' and '..', that are handled
++seperately by the lower fs.
+diff -urN linux-2.6.19.old/fs/mini_fo/state.c linux-2.6.19.dev/fs/mini_fo/state.c
+--- linux-2.6.19.old/fs/mini_fo/state.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/state.c 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,620 @@
++/*
++ * Copyright (C) 2005 Markus Klotzbuecher <mk@creamnet.de>
++ *
++ * 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.
++ */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif /* HAVE_CONFIG_H */
++
++#include "fist.h"
++#include "mini_fo.h"
++
++
++/* create the storage file, setup new states */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++int create_sto_reg_file(dentry_t *dentry, int mode, struct nameidata *nd)
++#else
++int create_sto_reg_file(dentry_t *dentry, int mode)
++#endif
++{
++ int err = 0;
++ inode_t *dir;
++ dentry_t *hidden_sto_dentry;
++ dentry_t *hidden_sto_dir_dentry;
++
++ if(exists_in_storage(dentry)) {
++ printk(KERN_CRIT "mini_fo: create_sto_file: wrong type or state.\n");
++ err = -EINVAL;
++ goto out;
++ }
++ err = get_neg_sto_dentry(dentry);
++
++ if (err) {
++ printk(KERN_CRIT "mini_fo: create_sto_file: ERROR getting neg. sto dentry.\n");
++ goto out;
++ }
++
++ dir = dentry->d_parent->d_inode;
++ hidden_sto_dentry = dtohd2(dentry);
++
++ /* lock parent */
++ hidden_sto_dir_dentry = dget(hidden_sto_dentry->d_parent);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++
++ err = PTR_ERR(hidden_sto_dir_dentry);
++ if (IS_ERR(hidden_sto_dir_dentry))
++ goto out;
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ err = vfs_create(hidden_sto_dir_dentry->d_inode,
++ hidden_sto_dentry,
++ mode, nd);
++#else
++ err = vfs_create(hidden_sto_dir_dentry->d_inode,
++ hidden_sto_dentry,
++ mode);
++#endif
++ if(err) {
++ printk(KERN_CRIT "mini_fo: create_sto_file: ERROR creating sto file.\n");
++ goto out_lock;
++ }
++
++ if(!dtohd2(dentry)->d_inode) {
++ printk(KERN_CRIT "mini_fo: create_sto_file: ERROR creating sto file [2].\n");
++ err = -EINVAL;
++ goto out_lock;
++ }
++
++ /* interpose the new inode */
++ if(dtost(dentry) == DELETED) {
++ dtost(dentry) = DEL_REWRITTEN;
++ err = mini_fo_tri_interpose(NULL, hidden_sto_dentry, dentry, dir->i_sb, 0);
++ if(err)
++ goto out_lock;
++ }
++ else if(dtost(dentry) == NON_EXISTANT) {
++ dtost(dentry) = CREATED;
++ err = mini_fo_tri_interpose(dtohd(dentry), hidden_sto_dentry, dentry, dir->i_sb, 0);
++ if(err)
++ goto out_lock;
++ }
++ else if(dtost(dentry) == UNMODIFIED) {
++ dtost(dentry) = MODIFIED;
++ /* interpose on new inode */
++ if(itohi2(dentry->d_inode) != NULL) {
++ printk(KERN_CRIT "mini_fo: create_sto_file: invalid inode detected.\n");
++ err = -EINVAL;
++ goto out_lock;
++ }
++ itohi2(dentry->d_inode) = igrab(dtohd2(dentry)->d_inode);
++ }
++ fist_copy_attr_timesizes(dentry->d_parent->d_inode,
++ hidden_sto_dir_dentry->d_inode);
++
++ out_lock:
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++ dput(hidden_sto_dir_dentry);
++ out:
++ return err;
++}
++
++/* create the sto dir, setup states */
++int create_sto_dir(dentry_t *dentry, int mode)
++{
++ int err = 0;
++ inode_t *dir;
++ dentry_t *hidden_sto_dentry;
++ dentry_t *hidden_sto_dir_dentry;
++
++ /* had to take the "!S_ISDIR(mode))" check out, because it failed */
++ if(exists_in_storage(dentry)) {
++ printk(KERN_CRIT "mini_fo: create_sto_dir: wrong type or state.\\
++n");
++ err = -EINVAL;
++ goto out;
++ }
++
++ err = get_neg_sto_dentry(dentry);
++ if(err) {
++ err = -EINVAL;
++ goto out;
++ }
++
++ dir = dentry->d_parent->d_inode;
++ hidden_sto_dentry = dtohd2(dentry);
++
++ /* was: hidden_sto_dir_dentry = lock_parent(hidden_sto_dentry); */
++ hidden_sto_dir_dentry = dget(hidden_sto_dentry->d_parent);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++
++ err = PTR_ERR(hidden_sto_dir_dentry);
++ if (IS_ERR(hidden_sto_dir_dentry))
++ goto out;
++
++ err = vfs_mkdir(hidden_sto_dir_dentry->d_inode,
++ hidden_sto_dentry,
++ mode);
++ if(err) {
++ printk(KERN_CRIT "mini_fo: create_sto_dir: ERROR creating sto dir.\n");
++ goto out_lock;
++ }
++
++ if(!dtohd2(dentry)->d_inode) {
++ printk(KERN_CRIT "mini_fo: create_sto_dir: ERROR creating sto dir [2].\n");
++ err = -EINVAL;
++ goto out_lock;
++ }
++
++ /* interpose the new inode */
++ if(dtost(dentry) == DELETED) {
++ dtost(dentry) = DEL_REWRITTEN;
++ err = mini_fo_tri_interpose(NULL, hidden_sto_dentry, dentry, dir->i_sb, 0);
++ if(err)
++ goto out_lock;
++ }
++ else if(dtopd(dentry)->state == NON_EXISTANT) {
++ dtopd(dentry)->state = CREATED;
++ err = mini_fo_tri_interpose(dtohd(dentry), hidden_sto_dentry, dentry, dir->i_sb, 0);
++ if(err)
++ goto out_lock;
++ }
++ else if(dtopd(dentry)->state == UNMODIFIED) {
++ dtopd(dentry)->state = MODIFIED;
++ /* interpose on new inode */
++ if(itohi2(dentry->d_inode) != NULL) {
++ printk(KERN_CRIT "mini_fo: create_sto_dir: ERROR, invalid inode detected.\n");
++ err = -EINVAL;
++ goto out_lock;
++ }
++ itohi2(dentry->d_inode) = igrab(dtohd2(dentry)->d_inode);
++ }
++
++ fist_copy_attr_timesizes(dir, hidden_sto_dir_dentry->d_inode);
++
++ /* initalize the wol list */
++ itopd(dentry->d_inode)->deleted_list_size = -1;
++ itopd(dentry->d_inode)->renamed_list_size = -1;
++ meta_build_lists(dentry);
++
++
++ out_lock:
++ /* was: unlock_dir(hidden_sto_dir_dentry); */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++ dput(hidden_sto_dir_dentry);
++ out:
++ return err;
++}
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++int create_sto_nod(dentry_t *dentry, int mode, dev_t dev)
++#else
++int create_sto_nod(dentry_t *dentry, int mode, int dev)
++#endif
++{
++ int err = 0;
++ inode_t *dir;
++ dentry_t *hidden_sto_dentry;
++ dentry_t *hidden_sto_dir_dentry;
++
++ if(exists_in_storage(dentry)) {
++ err = -EEXIST;
++ goto out;
++ }
++ err = get_neg_sto_dentry(dentry);
++
++ if (err) {
++ printk(KERN_CRIT "mini_fo: create_sto_nod: ERROR getting neg. sto dentry.\n");
++ goto out;
++ }
++
++ dir = dentry->d_parent->d_inode;
++ hidden_sto_dentry = dtohd2(dentry);
++
++ /* lock parent */
++ hidden_sto_dir_dentry = dget(hidden_sto_dentry->d_parent);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++
++ err = PTR_ERR(hidden_sto_dir_dentry);
++ if (IS_ERR(hidden_sto_dir_dentry))
++ goto out;
++
++ err = vfs_mknod(hidden_sto_dir_dentry->d_inode, hidden_sto_dentry, mode, dev);
++ if(err)
++ goto out_lock;
++
++ if(!dtohd2(dentry)->d_inode) {
++ printk(KERN_CRIT "mini_fo: create_sto_nod: creating storage inode failed [1].\n");
++ err = -EINVAL; /* return something indicating failure */
++ goto out_lock;
++ }
++
++ /* interpose the new inode */
++ if(dtost(dentry) == DELETED) {
++ dtost(dentry) = DEL_REWRITTEN;
++ err = mini_fo_tri_interpose(NULL, hidden_sto_dentry, dentry, dir->i_sb, 0);
++ if(err)
++ goto out_lock;
++ }
++ else if(dtost(dentry) == NON_EXISTANT) {
++ dtost(dentry) = CREATED;
++ err = mini_fo_tri_interpose(dtohd(dentry), hidden_sto_dentry, dentry, dir->i_sb, 0);
++ if(err)
++ goto out_lock;
++ }
++ else if(dtost(dentry) == UNMODIFIED) {
++ dtost(dentry) = MODIFIED;
++ /* interpose on new inode */
++ if(itohi2(dentry->d_inode) != NULL) {
++ printk(KERN_CRIT "mini_fo: create_sto_nod: error, invalid inode detected.\n");
++ err = -EINVAL;
++ goto out_lock;
++ }
++ itohi2(dentry->d_inode) = igrab(dtohd2(dentry)->d_inode);
++ }
++
++ fist_copy_attr_timesizes(dir, hidden_sto_dir_dentry->d_inode);
++
++ out_lock:
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++ dput(hidden_sto_dir_dentry);
++ out:
++ return err;
++}
++
++
++/* unimplemented (and possibly not usefull):
++
++ nondir-del_to_del_rew
++ nondir-non_exist_to_creat
++
++ dir-unmod_to_del
++ dir-mod_to_del
++ dir-creat_to_del
++ dir-del_rew_to_del
++ dir-del_to_del_rew
++ dir-non_exist_to_creat
++*/
++
++
++/* bring a file of any type from state UNMODIFIED to MODIFIED */
++int nondir_unmod_to_mod(dentry_t *dentry, int cp_flag)
++{
++ int err = 0;
++ struct vfsmount *tgt_mnt;
++ struct vfsmount *src_mnt;
++ dentry_t *tgt_dentry;
++ dentry_t *src_dentry;
++ dentry_t *hidden_sto_dentry;
++ dentry_t *hidden_sto_dir_dentry;
++
++ check_mini_fo_dentry(dentry);
++
++ if((dtost(dentry) != UNMODIFIED) ||
++ S_ISDIR(dentry->d_inode->i_mode)) {
++ printk(KERN_CRIT "mini_fo: nondir_unmod_to_mod: \
++ wrong type or state.\n");
++ err = -1;
++ goto out;
++ }
++ err = get_neg_sto_dentry(dentry);
++
++ if (err) {
++ printk(KERN_CRIT "mini_fo: nondir_unmod_to_mod: \
++ ERROR getting neg. sto dentry.\n");
++ goto out;
++ }
++
++ /* create sto file */
++ hidden_sto_dentry = dtohd2(dentry);
++
++ /* lock parent */
++ hidden_sto_dir_dentry = dget(hidden_sto_dentry->d_parent);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++
++ err = PTR_ERR(hidden_sto_dir_dentry);
++ if (IS_ERR(hidden_sto_dir_dentry))
++ goto out;
++
++ /* handle different types of nondirs */
++ if(S_ISCHR(dentry->d_inode->i_mode) ||
++ S_ISBLK(dentry->d_inode->i_mode)) {
++ err = vfs_mknod(hidden_sto_dir_dentry->d_inode,
++ hidden_sto_dentry,
++ dtohd(dentry)->d_inode->i_mode,
++ dtohd(dentry)->d_inode->i_rdev);
++ }
++
++ else if(S_ISREG(dentry->d_inode->i_mode)) {
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ err = vfs_create(hidden_sto_dir_dentry->d_inode,
++ hidden_sto_dentry,
++ dtohd(dentry)->d_inode->i_mode, NULL);
++#else
++ err = vfs_create(hidden_sto_dir_dentry->d_inode,
++ hidden_sto_dentry,
++ dtohd(dentry)->d_inode->i_mode);
++#endif
++ }
++ if(err) {
++ printk(KERN_CRIT "mini_fo: nondir_unmod_to_mod: \
++ ERROR creating sto file.\n");
++ goto out_lock;
++ }
++
++ /* interpose on new inode */
++ if(itohi2(dentry->d_inode) != NULL) {
++ printk(KERN_CRIT "mini_fo: nondir_unmod_to_mod: \
++ ERROR, invalid inode detected.\n");
++ err = -EINVAL;
++ goto out_lock;
++ }
++
++ itohi2(dentry->d_inode) = igrab(dtohd2(dentry)->d_inode);
++
++ fist_copy_attr_timesizes(dentry->d_parent->d_inode,
++ hidden_sto_dir_dentry->d_inode);
++ dtost(dentry) = MODIFIED;
++
++ /* copy contents if regular file and cp_flag = 1 */
++ if((cp_flag == 1) && S_ISREG(dentry->d_inode->i_mode)) {
++
++ /* unlock first */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++
++ dput(hidden_sto_dir_dentry);
++
++ tgt_dentry = dtohd2(dentry);
++ tgt_mnt = stopd(dentry->d_inode->i_sb)->hidden_mnt2;
++ src_dentry = dtohd(dentry);
++ src_mnt = stopd(dentry->d_inode->i_sb)->hidden_mnt;
++
++ err = mini_fo_cp_cont(tgt_dentry, tgt_mnt,
++ src_dentry, src_mnt);
++ if(err) {
++ printk(KERN_CRIT "mini_fo: nondir_unmod_to_mod: \
++ ERROR copying contents.\n");
++ }
++ goto out;
++ }
++
++ out_lock:
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++ dput(hidden_sto_dir_dentry);
++ out:
++ return err;
++}
++
++/* this function is currently identical to nondir_creat_to_del */
++int nondir_del_rew_to_del(dentry_t *dentry)
++{
++ return nondir_creat_to_del(dentry);
++}
++
++int nondir_creat_to_del(dentry_t *dentry)
++{
++ int err = 0;
++
++ inode_t *hidden_sto_dir_inode;
++ dentry_t *hidden_sto_dir_dentry;
++ dentry_t *hidden_sto_dentry;
++
++ check_mini_fo_dentry(dentry);
++
++ /* for now this function serves for both state DEL_REWRITTEN and
++ * CREATED */
++ if(!(dtost(dentry) == CREATED || (dtost(dentry) == DEL_REWRITTEN)) ||
++ S_ISDIR(dentry->d_inode->i_mode)) {
++ printk(KERN_CRIT "mini_fo: nondir_mod_to_del/del_rew_to_del: \
++ wrong type or state.\n");
++ err = -1;
++ goto out;
++ }
++
++ hidden_sto_dir_inode = itohi2(dentry->d_parent->d_inode);
++ hidden_sto_dentry = dtohd2(dentry);
++
++ /* was: hidden_sto_dir_dentry = lock_parent(hidden_sto_dentry);*/
++ hidden_sto_dir_dentry = dget(hidden_sto_dentry->d_parent);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++
++ /* avoid destroying the hidden inode if the file is in use */
++ dget(hidden_sto_dentry);
++ err = vfs_unlink(hidden_sto_dir_inode, hidden_sto_dentry);
++ dput(hidden_sto_dentry);
++ if(!err)
++ d_delete(hidden_sto_dentry);
++
++ /* propagate number of hard-links */
++ dentry->d_inode->i_nlink = itohi2(dentry->d_inode)->i_nlink;
++
++ dtost(dentry) = NON_EXISTANT;
++
++ /* was: unlock_dir(hidden_sto_dir_dentry); */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++ dput(hidden_sto_dir_dentry);
++
++ out:
++ return err;
++}
++
++int nondir_mod_to_del(dentry_t *dentry)
++{
++ int err;
++ dentry_t *hidden_sto_dentry;
++ inode_t *hidden_sto_dir_inode;
++ dentry_t *hidden_sto_dir_dentry;
++
++ check_mini_fo_dentry(dentry);
++
++ if(dtost(dentry) != MODIFIED ||
++ S_ISDIR(dentry->d_inode->i_mode)) {
++ printk(KERN_CRIT "mini_fo: nondir_mod_to_del: \
++ wrong type or state.\n");
++ err = -1;
++ goto out;
++ }
++
++ hidden_sto_dir_inode = itohi2(dentry->d_parent->d_inode);
++ hidden_sto_dentry = dtohd2(dentry);
++
++ /* was hidden_sto_dir_dentry = lock_parent(hidden_sto_dentry); */
++ hidden_sto_dir_dentry = dget(hidden_sto_dentry->d_parent);
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_lock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ down(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++
++ /* avoid destroying the hidden inode if the file is in use */
++ dget(hidden_sto_dentry);
++ err = vfs_unlink(hidden_sto_dir_inode, hidden_sto_dentry);
++ dput(hidden_sto_dentry);
++ if(!err)
++ d_delete(hidden_sto_dentry);
++
++ /* propagate number of hard-links */
++ dentry->d_inode->i_nlink = itohi2(dentry->d_inode)->i_nlink;
++
++ /* dput base dentry, this will relase the inode and free the
++ * dentry, as we will never need it again. */
++ dput(dtohd(dentry));
++ dtohd(dentry) = NULL;
++ dtost(dentry) = DELETED;
++
++ /* add deleted file to META-file */
++ meta_add_d_entry(dentry->d_parent,
++ dentry->d_name.name,
++ dentry->d_name.len);
++
++ /* was: unlock_dir(hidden_sto_dir_dentry); */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
++ mutex_unlock(&hidden_sto_dir_dentry->d_inode->i_mutex);
++#else
++ up(&hidden_sto_dir_dentry->d_inode->i_sem);
++#endif
++ dput(hidden_sto_dir_dentry);
++
++ out:
++ return err;
++}
++
++int nondir_unmod_to_del(dentry_t *dentry)
++{
++ int err = 0;
++
++ check_mini_fo_dentry(dentry);
++
++ if(dtost(dentry) != UNMODIFIED ||
++ S_ISDIR(dentry->d_inode->i_mode)) {
++ printk(KERN_CRIT "mini_fo: nondir_unmod_to_del: \
++ wrong type or state.\n");
++ err = -1;
++ goto out;
++ }
++
++ /* next we have to get a negative dentry for the storage file */
++ err = get_neg_sto_dentry(dentry);
++
++ if(err)
++ goto out;
++
++ /* add deleted file to META lists */
++ err = meta_add_d_entry(dentry->d_parent,
++ dentry->d_name.name,
++ dentry->d_name.len);
++
++ if(err)
++ goto out;
++
++ /* dput base dentry, this will relase the inode and free the
++ * dentry, as we will never need it again. */
++ dput(dtohd(dentry));
++ dtohd(dentry) = NULL;
++ dtost(dentry) = DELETED;
++
++ out:
++ return err;
++}
++
++/* bring a dir from state UNMODIFIED to MODIFIED */
++int dir_unmod_to_mod(dentry_t *dentry)
++{
++ int err;
++
++ check_mini_fo_dentry(dentry);
++
++ if(dtost(dentry) != UNMODIFIED ||
++ !S_ISDIR(dentry->d_inode->i_mode)) {
++ printk(KERN_CRIT "mini_fo: dir_unmod_to_mod: \
++ wrong type or state.\n");
++ err = -1;
++ goto out;
++ }
++
++ /* this creates our dir incl. sto. structure */
++ err = build_sto_structure(dentry->d_parent, dentry);
++ if(err) {
++ printk(KERN_CRIT "mini_fo: dir_unmod_to_mod: \
++ build_sto_structure failed.\n");
++ goto out;
++ }
++ out:
++ return err;
++}
++
+diff -urN linux-2.6.19.old/fs/mini_fo/super.c linux-2.6.19.dev/fs/mini_fo/super.c
+--- linux-2.6.19.old/fs/mini_fo/super.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/mini_fo/super.c 2006-12-14 03:14:03.000000000 +0100
+@@ -0,0 +1,281 @@
++/*
++ * Copyright (c) 1997-2003 Erez Zadok
++ * Copyright (c) 2001-2003 Stony Brook University
++ *
++ * For specific licensing information, see the COPYING file distributed with
++ * this package, or get one from ftp://ftp.filesystems.org/pub/fist/COPYING.
++ *
++ * This Copyright notice must be kept intact and distributed with all
++ * fistgen sources INCLUDING sources generated by fistgen.
++ */
++/*
++ * Copyright (C) 2004, 2005 Markus Klotzbuecher <mk@creamnet.de>
++ *
++ * 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.
++ */
++
++/*
++ * $Id$
++ */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include "fist.h"
++#include "mini_fo.h"
++
++
++STATIC void
++mini_fo_read_inode(inode_t *inode)
++{
++ static struct address_space_operations mini_fo_empty_aops;
++
++ __itopd(inode) = kmalloc(sizeof(struct mini_fo_inode_info), GFP_KERNEL);
++ if (!itopd(inode)) {
++ printk("<0>%s:%s:%d: No kernel memory!\n", __FILE__, __FUNCTION__, __LINE__);
++ ASSERT(NULL);
++ }
++ itohi(inode) = NULL;
++ itohi2(inode) = NULL;
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++ inode->i_version++;
++#else
++ inode->i_version = ++event; /* increment inode version */
++#endif
++ inode->i_op = &mini_fo_main_iops;
++ inode->i_fop = &mini_fo_main_fops;
++#if 0
++ /*
++ * XXX: To export a file system via NFS, it has to have the
++ * FS_REQUIRES_DEV flag, so turn it on. But should we inherit it from
++ * the lower file system, or can we allow our file system to be exported
++ * even if the lower one cannot be natively exported.
++ */
++ inode->i_sb->s_type->fs_flags |= FS_REQUIRES_DEV;
++ /*
++ * OK, the above was a hack, which is now turned off because it may
++ * cause a panic/oops on some systems. The correct way to export a
++ * "nodev" filesystem is via using nfs-utils > 1.0 and the "fsid=" export
++ * parameter, which requires 2.4.20 or later.
++ */
++#endif
++ /* I don't think ->a_ops is ever allowed to be NULL */
++ inode->i_mapping->a_ops = &mini_fo_empty_aops;
++}
++
++
++#if defined(FIST_DEBUG) || defined(FIST_FILTER_SCA)
++/*
++ * No need to call write_inode() on the lower inode, as it
++ * will have been marked 'dirty' anyway. But we might need
++ * to write some of our own stuff to disk.
++ */
++STATIC void
++mini_fo_write_inode(inode_t *inode, int sync)
++{
++ print_entry_location();
++ print_exit_location();
++}
++#endif /* defined(FIST_DEBUG) || defined(FIST_FILTER_SCA) */
++
++
++STATIC void
++mini_fo_put_inode(inode_t *inode)
++{
++ /*
++ * This is really funky stuff:
++ * Basically, if i_count == 1, iput will then decrement it and this inode will be destroyed.
++ * It is currently holding a reference to the hidden inode.
++ * Therefore, it needs to release that reference by calling iput on the hidden inode.
++ * iput() _will_ do it for us (by calling our clear_inode), but _only_ if i_nlink == 0.
++ * The problem is, NFS keeps i_nlink == 1 for silly_rename'd files.
++ * So we must for our i_nlink to 0 here to trick iput() into calling our clear_inode.
++ */
++ if (atomic_read(&inode->i_count) == 1)
++ inode->i_nlink = 0;
++}
++
++
++#if defined(FIST_DEBUG) || defined(FIST_FILTER_SCA)
++/*
++ * we now define delete_inode, because there are two VFS paths that may
++ * destroy an inode: one of them calls clear inode before doing everything
++ * else that's needed, and the other is fine. This way we truncate the inode
++ * size (and its pages) and then clear our own inode, which will do an iput
++ * on our and the lower inode.
++ */
++STATIC void
++mini_fo_delete_inode(inode_t *inode)
++{
++ print_entry_location();
++
++ fist_checkinode(inode, "mini_fo_delete_inode IN");
++ inode->i_size = 0; /* every f/s seems to do that */
++ clear_inode(inode);
++
++ print_exit_location();
++}
++#endif /* defined(FIST_DEBUG) || defined(FIST_FILTER_SCA) */
++
++
++/* final actions when unmounting a file system */
++STATIC void
++mini_fo_put_super(super_block_t *sb)
++{
++ if (stopd(sb)) {
++ mntput(stopd(sb)->hidden_mnt);
++ mntput(stopd(sb)->hidden_mnt2);
++
++ /* mk: no! dput(stopd(sb)->base_dir_dentry);
++ dput(stopd(sb)->storage_dir_dentry); */
++
++ kfree(stopd(sb));
++ __stopd(sb) = NULL;
++ }
++}
++
++
++#ifdef NOT_NEEDED
++/*
++ * This is called in do_umount before put_super.
++ * The superblock lock is not held yet.
++ * We probably do not need to define this or call write_super
++ * on the hidden_sb, because sync_supers() will get to hidden_sb
++ * sooner or later. But it is also called from file_fsync()...
++ */
++STATIC void
++mini_fo_write_super(super_block_t *sb)
++{
++ return;
++}
++#endif /* NOT_NEEDED */
++
++
++STATIC int
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++mini_fo_statfs(struct dentry *d, struct kstatfs *buf)
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++mini_fo_statfs(super_block_t *sb, struct kstatfs *buf)
++#else
++mini_fo_statfs(super_block_t *sb, struct statfs *buf)
++#endif
++{
++ int err = 0;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++ struct dentry *hidden_d;
++
++ hidden_d = dtohd(d);
++ err = vfs_statfs(hidden_d, buf);
++#else
++ super_block_t *hidden_sb;
++
++ hidden_sb = stohs(sb);
++ err = vfs_statfs(hidden_sb, buf);
++#endif
++
++ return err;
++}
++
++
++/*
++ * XXX: not implemented. This is not allowed yet.
++ * Should we call this on the hidden_sb? Probably not.
++ */
++STATIC int
++mini_fo_remount_fs(super_block_t *sb, int *flags, char *data)
++{
++ //printk(KERN_CRIT "mini_fo_remount_fs: WARNING, this function is umimplemented.\n");
++ return -ENOSYS;
++}
++
++
++/*
++ * Called by iput() when the inode reference count reached zero
++ * and the inode is not hashed anywhere. Used to clear anything
++ * that needs to be, before the inode is completely destroyed and put
++ * on the inode free list.
++ */
++STATIC void
++mini_fo_clear_inode(inode_t *inode)
++{
++ /*
++ * Decrement a reference to a hidden_inode, which was incremented
++ * by our read_inode when it was created initially.
++ */
++
++ /* release the wol_list */
++ if(S_ISDIR(inode->i_mode)) {
++ __meta_put_lists(inode);
++ }
++
++ /* mk: fan out fun */
++ if(itohi(inode))
++ iput(itohi(inode));
++ if(itohi2(inode))
++ iput(itohi2(inode));
++
++ // XXX: why this assertion fails?
++ // because it doesn't like us
++ // ASSERT((inode->i_state & I_DIRTY) == 0);
++ kfree(itopd(inode));
++ __itopd(inode) = NULL;
++}
++
++
++/*
++ * Called in do_umount() if the MNT_FORCE flag was used and this
++ * function is defined. See comment in linux/fs/super.c:do_umount().
++ * Used only in nfs, to kill any pending RPC tasks, so that subsequent
++ * code can actually succeed and won't leave tasks that need handling.
++ *
++ * PS. I wonder if this is somehow useful to undo damage that was
++ * left in the kernel after a user level file server (such as amd)
++ * dies.
++ */
++STATIC void
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++mini_fo_umount_begin(struct vfsmount *mnt, int flags)
++{
++ struct vfsmount *hidden_mnt;
++
++ hidden_mnt = stopd(mnt->mnt_sb)->hidden_mnt;
++
++ if (hidden_mnt->mnt_sb->s_op->umount_begin)
++ hidden_mnt->mnt_sb->s_op->umount_begin(hidden_mnt, flags);
++
++}
++#else
++mini_fo_umount_begin(super_block_t *sb)
++{
++ super_block_t *hidden_sb;
++
++ hidden_sb = stohs(sb);
++
++ if (hidden_sb->s_op->umount_begin)
++ hidden_sb->s_op->umount_begin(hidden_sb);
++
++}
++#endif
++
++
++struct super_operations mini_fo_sops =
++{
++ read_inode: mini_fo_read_inode,
++#if defined(FIST_DEBUG) || defined(FIST_FILTER_SCA)
++ write_inode: mini_fo_write_inode,
++#endif /* defined(FIST_DEBUG) || defined(FIST_FILTER_SCA) */
++ put_inode: mini_fo_put_inode,
++#if defined(FIST_DEBUG) || defined(FIST_FILTER_SCA)
++ delete_inode: mini_fo_delete_inode,
++#endif /* defined(FIST_DEBUG) || defined(FIST_FILTER_SCA) */
++ put_super: mini_fo_put_super,
++ statfs: mini_fo_statfs,
++ remount_fs: mini_fo_remount_fs,
++ clear_inode: mini_fo_clear_inode,
++ umount_begin: mini_fo_umount_begin,
++};
diff --git a/packages/linux/linux-magicbox-2.6.19.2/210-d80211_compat.patch b/packages/linux/linux-magicbox-2.6.19.2/210-d80211_compat.patch
new file mode 100644
index 0000000000..555151ba7f
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/210-d80211_compat.patch
@@ -0,0 +1,11 @@
+--- linux.old/include/linux/netdevice.h 2006-12-30 18:49:37.916951328 +0100
++++ linux.dev/include/linux/netdevice.h 2006-12-30 18:49:49.573179312 +0100
+@@ -526,6 +526,8 @@
+ struct class_device class_dev;
+ /* space for optional statistics and wireless sysfs groups */
+ struct attribute_group *sysfs_groups[3];
++
++ void *ieee80211_ptr;
+ };
+
+ #define NETDEV_ALIGN 32
diff --git a/packages/linux/linux-magicbox-2.6.19.2/211-no_block2mtd_readahead.patch b/packages/linux/linux-magicbox-2.6.19.2/211-no_block2mtd_readahead.patch
new file mode 100644
index 0000000000..719fb37ff9
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/211-no_block2mtd_readahead.patch
@@ -0,0 +1,11 @@
+--- linux.old/drivers/mtd/devices/block2mtd.c 2007-02-01 20:13:47.147274772 +0100
++++ linux/drivers/mtd/devices/block2mtd.c 2007-02-01 20:19:59.753034993 +0100
+@@ -40,7 +40,7 @@
+ static LIST_HEAD(blkmtd_device_list);
+
+
+-#define PAGE_READAHEAD 64
++#define PAGE_READAHEAD 0
+ static void cache_readahead(struct address_space *mapping, int index)
+ {
+ filler_t *filler = (filler_t*)mapping->a_ops->readpage;
diff --git a/packages/linux/linux-magicbox-2.6.19.2/212-block2mtd_erase_scan.patch b/packages/linux/linux-magicbox-2.6.19.2/212-block2mtd_erase_scan.patch
new file mode 100644
index 0000000000..76b4f5d4c9
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/212-block2mtd_erase_scan.patch
@@ -0,0 +1,11 @@
+--- linux.dev/drivers/mtd/devices/block2mtd.c.old 2007-02-18 14:08:59.519952312 +0100
++++ linux.dev/drivers/mtd/devices/block2mtd.c 2007-02-18 14:09:04.219237912 +0100
+@@ -111,7 +111,7 @@
+ if (IS_ERR(page))
+ return PTR_ERR(page);
+
+- max = (u_long*)page_address(page) + PAGE_SIZE;
++ max = (u_long*) ((u8 *) page_address(page) + PAGE_SIZE);
+ for (p=(u_long*)page_address(page); p<max; p++)
+ if (*p != -1UL) {
+ lock_page(page);
diff --git a/packages/linux/linux-magicbox-2.6.19.2/510-Yaffs.patch b/packages/linux/linux-magicbox-2.6.19.2/510-Yaffs.patch
new file mode 100644
index 0000000000..d7b9c976b4
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/510-Yaffs.patch
@@ -0,0 +1,13085 @@
+diff -urN linux.old/fs/Kconfig linux.dev/fs/Kconfig
+--- linux.old/fs/Kconfig 2006-11-29 22:57:37.000000000 +0100
++++ linux.dev/fs/Kconfig 2006-12-14 04:21:47.000000000 +0100
+@@ -1202,6 +1202,8 @@
+ To compile the EFS file system support as a module, choose M here: the
+ module will be called efs.
+
++source "fs/yaffs2/Kconfig"
++
+ config JFFS_FS
+ tristate "Journalling Flash File System (JFFS) support"
+ depends on MTD && BLOCK
+diff -urN linux.old/fs/Makefile linux.dev/fs/Makefile
+--- linux.old/fs/Makefile 2006-11-29 22:57:37.000000000 +0100
++++ linux.dev/fs/Makefile 2006-12-14 04:21:47.000000000 +0100
+@@ -114,3 +114,4 @@
+ obj-$(CONFIG_DEBUG_FS) += debugfs/
+ obj-$(CONFIG_OCFS2_FS) += ocfs2/
+ obj-$(CONFIG_GFS2_FS) += gfs2/
++obj-$(CONFIG_YAFFS_FS) += yaffs2/
+diff -urN linux.old/fs/yaffs2/devextras.h linux.dev/fs/yaffs2/devextras.h
+--- linux.old/fs/yaffs2/devextras.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/devextras.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,265 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ * devextras.h
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU Lesser General Public License version 2.1 as
++ * published by the Free Software Foundation.
++ *
++ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
++ *
++ * This file is just holds extra declarations used during development.
++ * Most of these are from kernel includes placed here so we can use them in
++ * applications.
++ *
++ * $Id: devextras.h,v 1.2 2005/08/11 02:37:49 marty Exp $
++ *
++ */
++
++#ifndef __EXTRAS_H__
++#define __EXTRAS_H__
++
++#if defined WIN32
++#define __inline__ __inline
++#define new newHack
++#endif
++
++#if !(defined __KERNEL__) || (defined WIN32)
++
++/* User space defines */
++
++typedef unsigned char __u8;
++typedef unsigned short __u16;
++typedef unsigned __u32;
++
++/*
++ * Simple doubly linked list implementation.
++ *
++ * Some of the internal functions ("__xxx") are useful when
++ * manipulating whole lists rather than single entries, as
++ * sometimes we already know the next/prev entries and we can
++ * generate better code by using them directly rather than
++ * using the generic single-entry routines.
++ */
++
++#define prefetch(x) 1
++
++struct list_head {
++ struct list_head *next, *prev;
++};
++
++#define LIST_HEAD_INIT(name) { &(name), &(name) }
++
++#define LIST_HEAD(name) \
++ struct list_head name = LIST_HEAD_INIT(name)
++
++#define INIT_LIST_HEAD(ptr) do { \
++ (ptr)->next = (ptr); (ptr)->prev = (ptr); \
++} while (0)
++
++/*
++ * Insert a new entry between two known consecutive entries.
++ *
++ * This is only for internal list manipulation where we know
++ * the prev/next entries already!
++ */
++static __inline__ void __list_add(struct list_head *new,
++ struct list_head *prev,
++ struct list_head *next)
++{
++ next->prev = new;
++ new->next = next;
++ new->prev = prev;
++ prev->next = new;
++}
++
++/**
++ * list_add - add a new entry
++ * @new: new entry to be added
++ * @head: list head to add it after
++ *
++ * Insert a new entry after the specified head.
++ * This is good for implementing stacks.
++ */
++static __inline__ void list_add(struct list_head *new, struct list_head *head)
++{
++ __list_add(new, head, head->next);
++}
++
++/**
++ * list_add_tail - add a new entry
++ * @new: new entry to be added
++ * @head: list head to add it before
++ *
++ * Insert a new entry before the specified head.
++ * This is useful for implementing queues.
++ */
++static __inline__ void list_add_tail(struct list_head *new,
++ struct list_head *head)
++{
++ __list_add(new, head->prev, head);
++}
++
++/*
++ * Delete a list entry by making the prev/next entries
++ * point to each other.
++ *
++ * This is only for internal list manipulation where we know
++ * the prev/next entries already!
++ */
++static __inline__ void __list_del(struct list_head *prev,
++ struct list_head *next)
++{
++ next->prev = prev;
++ prev->next = next;
++}
++
++/**
++ * list_del - deletes entry from list.
++ * @entry: the element to delete from the list.
++ * Note: list_empty on entry does not return true after this, the entry is
++ * in an undefined state.
++ */
++static __inline__ void list_del(struct list_head *entry)
++{
++ __list_del(entry->prev, entry->next);
++}
++
++/**
++ * list_del_init - deletes entry from list and reinitialize it.
++ * @entry: the element to delete from the list.
++ */
++static __inline__ void list_del_init(struct list_head *entry)
++{
++ __list_del(entry->prev, entry->next);
++ INIT_LIST_HEAD(entry);
++}
++
++/**
++ * list_empty - tests whether a list is empty
++ * @head: the list to test.
++ */
++static __inline__ int list_empty(struct list_head *head)
++{
++ return head->next == head;
++}
++
++/**
++ * list_splice - join two lists
++ * @list: the new list to add.
++ * @head: the place to add it in the first list.
++ */
++static __inline__ void list_splice(struct list_head *list,
++ struct list_head *head)
++{
++ struct list_head *first = list->next;
++
++ if (first != list) {
++ struct list_head *last = list->prev;
++ struct list_head *at = head->next;
++
++ first->prev = head;
++ head->next = first;
++
++ last->next = at;
++ at->prev = last;
++ }
++}
++
++/**
++ * list_entry - get the struct for this entry
++ * @ptr: the &struct list_head pointer.
++ * @type: the type of the struct this is embedded in.
++ * @member: the name of the list_struct within the struct.
++ */
++#define list_entry(ptr, type, member) \
++ ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
++
++/**
++ * list_for_each - iterate over a list
++ * @pos: the &struct list_head to use as a loop counter.
++ * @head: the head for your list.
++ */
++#define list_for_each(pos, head) \
++ for (pos = (head)->next, prefetch(pos->next); pos != (head); \
++ pos = pos->next, prefetch(pos->next))
++
++/**
++ * list_for_each_safe - iterate over a list safe against removal
++ * of list entry
++ * @pos: the &struct list_head to use as a loop counter.
++ * @n: another &struct list_head to use as temporary storage
++ * @head: the head for your list.
++ */
++#define list_for_each_safe(pos, n, head) \
++ for (pos = (head)->next, n = pos->next; pos != (head); \
++ pos = n, n = pos->next)
++
++/*
++ * File types
++ */
++#define DT_UNKNOWN 0
++#define DT_FIFO 1
++#define DT_CHR 2
++#define DT_DIR 4
++#define DT_BLK 6
++#define DT_REG 8
++#define DT_LNK 10
++#define DT_SOCK 12
++#define DT_WHT 14
++
++#ifndef WIN32
++#include <sys/stat.h>
++#endif
++
++/*
++ * Attribute flags. These should be or-ed together to figure out what
++ * has been changed!
++ */
++#define ATTR_MODE 1
++#define ATTR_UID 2
++#define ATTR_GID 4
++#define ATTR_SIZE 8
++#define ATTR_ATIME 16
++#define ATTR_MTIME 32
++#define ATTR_CTIME 64
++#define ATTR_ATIME_SET 128
++#define ATTR_MTIME_SET 256
++#define ATTR_FORCE 512 /* Not a change, but a change it */
++#define ATTR_ATTR_FLAG 1024
++
++struct iattr {
++ unsigned int ia_valid;
++ unsigned ia_mode;
++ unsigned ia_uid;
++ unsigned ia_gid;
++ unsigned ia_size;
++ unsigned ia_atime;
++ unsigned ia_mtime;
++ unsigned ia_ctime;
++ unsigned int ia_attr_flags;
++};
++
++#define KERN_DEBUG
++
++#else
++
++#ifndef WIN32
++#include <linux/types.h>
++#include <linux/list.h>
++#include <linux/fs.h>
++#include <linux/stat.h>
++#endif
++
++#endif
++
++#if defined WIN32
++#undef new
++#endif
++
++#endif
+diff -urN linux.old/fs/yaffs2/Kconfig linux.dev/fs/yaffs2/Kconfig
+--- linux.old/fs/yaffs2/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/Kconfig 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,135 @@
++#
++# YAFFS file system configurations
++#
++
++config YAFFS_FS
++ tristate "YAFFS2 file system support"
++ default n
++ depends on MTD
++ select YAFFS_YAFFS1
++ select YAFFS_YAFFS2
++ help
++ YAFFS2, or Yet Another Flash Filing System, is a filing system
++ optimised for NAND Flash chips.
++
++ To compile the YAFFS2 file system support as a module, choose M here:
++ the module will be called yaffs2.
++
++ If unsure, say N.
++
++ Further information on YAFFS2 is available at
++ <http://www.aleph1.co.uk/yaffs/>.
++
++config YAFFS_YAFFS1
++ bool "512 byte / page devices"
++ depends on YAFFS_FS
++ default y
++ help
++ Enable YAFFS1 support -- yaffs for 512 byte / page devices
++
++ If unsure, say Y.
++
++config YAFFS_DOES_ECC
++ bool "Lets Yaffs do its own ECC"
++ depends on YAFFS_FS && YAFFS_YAFFS1
++ default n
++ help
++ This enables Yaffs to use its own ECC functions instead of using
++ the ones from the generic MTD-NAND driver.
++
++ If unsure, say N.
++
++config YAFFS_ECC_WRONG_ORDER
++ bool "Use the same ecc byte order as Steven Hill's nand_ecc.c"
++ depends on YAFFS_FS && YAFFS_DOES_ECC
++ default n
++ help
++ This makes yaffs_ecc.c use the same ecc byte order as
++ Steven Hill's nand_ecc.c. If not set, then you get the
++ same ecc byte order as SmartMedia.
++
++ If unsure, say N.
++
++config YAFFS_YAFFS2
++ bool "2048 byte (or larger) / page devices"
++ depends on YAFFS_FS
++ default y
++ help
++ Enable YAFFS2 support -- yaffs for >= 2048 byte / page larger devices
++
++ If unsure, say Y.
++
++config YAFFS_AUTO_YAFFS2
++ bool "Autoselect yaffs2 format"
++ depends on YAFFS_YAFFS2
++ default y
++ help
++ Without this, you need to explicitely use yaffs2 as the file
++ system type. With this, you can say "yaffs" and yaffs or yaffs2
++ will be used depending on the device page size.
++
++ If unsure, say Y.
++
++config YAFFS_DISABLE_LAZY_LOAD
++ bool "Disable lazy loading"
++ depends on YAFFS_YAFFS2
++ default n
++ help
++ "Lazy loading" defers loading file details until they are
++ required. This saves mount time, but makes the first look-up
++ a bit longer.
++
++ Lazy loading will only happen if enabled by this option being 'n'
++ and if the appropriate tags are available, else yaffs2 will
++ automatically fall back to immediate loading and do the right
++ thing.
++
++ Lazy laoding will be required by checkpointing.
++
++ Setting this to 'y' will disable lazy loading.
++
++ If unsure, say N.
++
++config YAFFS_DISABLE_WIDE_TNODES
++ bool "Turn off wide tnodes"
++ depends on YAFFS_FS
++ default n
++ help
++ Wide tnodes are only used for large NAND arrays (>=32MB for
++ 512-byte page devices and >=128MB for 2k page devices). They use
++ slightly more RAM but are faster since they eliminate chunk group
++ searching.
++
++ Setting this to 'y' will force tnode width to 16 bits and make
++ large arrays slower.
++
++ If unsure, say N.
++
++config YAFFS_ALWAYS_CHECK_CHUNK_ERASED
++ bool "Force chunk erase check"
++ depends on YAFFS_FS
++ default n
++ help
++ Normally YAFFS only checks chunks before writing until an erased
++ chunk is found. This helps to detect any partially written chunks
++ that might have happened due to power loss.
++
++ Enabling this forces on the test that chunks are erased in flash
++ before writing to them. This takes more time but is potentially a
++ bit more secure.
++
++ Suggest setting Y during development and ironing out driver issues
++ etc. Suggest setting to N if you want faster writing.
++
++ If unsure, say Y.
++
++config YAFFS_SHORT_NAMES_IN_RAM
++ bool "Cache short names in RAM"
++ depends on YAFFS_FS
++ default y
++ help
++ If this config is set, then short names are stored with the
++ yaffs_Object. This costs an extra 16 bytes of RAM per object,
++ but makes look-ups faster.
++
++ If unsure, say Y.
+diff -urN linux.old/fs/yaffs2/Makefile linux.dev/fs/yaffs2/Makefile
+--- linux.old/fs/yaffs2/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/Makefile 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,10 @@
++#
++# Makefile for the linux YAFFS filesystem routines.
++#
++
++obj-$(CONFIG_YAFFS_FS) += yaffs.o
++
++yaffs-y := yaffs_ecc.o yaffs_fs.o yaffs_guts.o yaffs_checkptrw.o
++yaffs-y += yaffs_packedtags2.o yaffs_nand.o yaffs_qsort.o
++yaffs-y += yaffs_tagscompat.o yaffs_tagsvalidity.o
++yaffs-y += yaffs_mtdif.o yaffs_mtdif2.o
+diff -urN linux.old/fs/yaffs2/moduleconfig.h linux.dev/fs/yaffs2/moduleconfig.h
+--- linux.old/fs/yaffs2/moduleconfig.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/moduleconfig.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,32 @@
++#ifndef __YAFFS_CONFIG_H__
++#define __YAFFS_CONFIG_H__
++
++#ifdef YAFFS_OUT_OF_TREE
++
++/* DO NOT UNSET THESE THREE. YAFFS2 will not compile if you do. */
++#define CONFIG_YAFFS_FS
++#define CONFIG_YAFFS_YAFFS1
++#define CONFIG_YAFFS_YAFFS2
++
++/* These options are independent of each other. Select those that matter. */
++
++/* Default: Not selected */
++/* Meaning: Yaffs does its own ECC, rather than using MTD ECC */
++//#define CONFIG_YAFFS_DOES_ECC
++
++/* Default: Not selected */
++/* Meaning: ECC byte order is 'wrong'. Only meaningful if */
++/* CONFIG_YAFFS_DOES_ECC is set */
++//#define CONFIG_YAFFS_ECC_WRONG_ORDER
++
++/* Default: Selected */
++/* Meaning: Disables testing whether chunks are erased before writing to them*/
++#define CONFIG_YAFFS_DISABLE_CHUNK_ERASED_CHECK
++
++/* Default: Selected */
++/* Meaning: Cache short names, taking more RAM, but faster look-ups */
++#define CONFIG_YAFFS_SHORT_NAMES_IN_RAM
++
++#endif /* YAFFS_OUT_OF_TREE */
++
++#endif /* __YAFFS_CONFIG_H__ */
+diff -urN linux.old/fs/yaffs2/yaffs_checkptrw.c linux.dev/fs/yaffs2/yaffs_checkptrw.c
+--- linux.old/fs/yaffs2/yaffs_checkptrw.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_checkptrw.c 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,384 @@
++/* YAFFS: Yet another FFS. A NAND-flash specific file system.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * 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.
++ *
++ */
++
++const char *yaffs_checkptrw_c_version =
++ "$Id: yaffs_checkptrw.c,v 1.11 2006/11/11 23:27:04 charles Exp $";
++
++
++#include "yaffs_checkptrw.h"
++
++
++static int yaffs_CheckpointSpaceOk(yaffs_Device *dev)
++{
++
++ int blocksAvailable = dev->nErasedBlocks - dev->nReservedBlocks;
++
++ T(YAFFS_TRACE_CHECKPOINT,
++ (TSTR("checkpt blocks available = %d" TENDSTR),
++ blocksAvailable));
++
++
++ return (blocksAvailable <= 0) ? 0 : 1;
++}
++
++
++
++static int yaffs_CheckpointErase(yaffs_Device *dev)
++{
++
++ int i;
++
++
++ if(!dev->eraseBlockInNAND)
++ return 0;
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("checking blocks %d to %d"TENDSTR),
++ dev->internalStartBlock,dev->internalEndBlock));
++
++ for(i = dev->internalStartBlock; i <= dev->internalEndBlock; i++) {
++ yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,i);
++ if(bi->blockState == YAFFS_BLOCK_STATE_CHECKPOINT){
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("erasing checkpt block %d"TENDSTR),i));
++ if(dev->eraseBlockInNAND(dev,i- dev->blockOffset /* realign */)){
++ bi->blockState = YAFFS_BLOCK_STATE_EMPTY;
++ dev->nErasedBlocks++;
++ dev->nFreeChunks += dev->nChunksPerBlock;
++ }
++ else {
++ dev->markNANDBlockBad(dev,i);
++ bi->blockState = YAFFS_BLOCK_STATE_DEAD;
++ }
++ }
++ }
++
++ dev->blocksInCheckpoint = 0;
++
++ return 1;
++}
++
++
++static void yaffs_CheckpointFindNextErasedBlock(yaffs_Device *dev)
++{
++ int i;
++ int blocksAvailable = dev->nErasedBlocks - dev->nReservedBlocks;
++ T(YAFFS_TRACE_CHECKPOINT,
++ (TSTR("allocating checkpt block: erased %d reserved %d avail %d next %d "TENDSTR),
++ dev->nErasedBlocks,dev->nReservedBlocks,blocksAvailable,dev->checkpointNextBlock));
++
++ if(dev->checkpointNextBlock >= 0 &&
++ dev->checkpointNextBlock <= dev->internalEndBlock &&
++ blocksAvailable > 0){
++
++ for(i = dev->checkpointNextBlock; i <= dev->internalEndBlock; i++){
++ yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,i);
++ if(bi->blockState == YAFFS_BLOCK_STATE_EMPTY){
++ dev->checkpointNextBlock = i + 1;
++ dev->checkpointCurrentBlock = i;
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("allocating checkpt block %d"TENDSTR),i));
++ return;
++ }
++ }
++ }
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("out of checkpt blocks"TENDSTR)));
++
++ dev->checkpointNextBlock = -1;
++ dev->checkpointCurrentBlock = -1;
++}
++
++static void yaffs_CheckpointFindNextCheckpointBlock(yaffs_Device *dev)
++{
++ int i;
++ yaffs_ExtendedTags tags;
++
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("find next checkpt block: start: blocks %d next %d" TENDSTR),
++ dev->blocksInCheckpoint, dev->checkpointNextBlock));
++
++ if(dev->blocksInCheckpoint < dev->checkpointMaxBlocks)
++ for(i = dev->checkpointNextBlock; i <= dev->internalEndBlock; i++){
++ int chunk = i * dev->nChunksPerBlock;
++ int realignedChunk = chunk - dev->chunkOffset;
++
++ dev->readChunkWithTagsFromNAND(dev,realignedChunk,NULL,&tags);
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("find next checkpt block: search: block %d oid %d seq %d eccr %d" TENDSTR),
++ i, tags.objectId,tags.sequenceNumber,tags.eccResult));
++
++ if(tags.sequenceNumber == YAFFS_SEQUENCE_CHECKPOINT_DATA){
++ /* Right kind of block */
++ dev->checkpointNextBlock = tags.objectId;
++ dev->checkpointCurrentBlock = i;
++ dev->checkpointBlockList[dev->blocksInCheckpoint] = i;
++ dev->blocksInCheckpoint++;
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("found checkpt block %d"TENDSTR),i));
++ return;
++ }
++ }
++
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("found no more checkpt blocks"TENDSTR)));
++
++ dev->checkpointNextBlock = -1;
++ dev->checkpointCurrentBlock = -1;
++}
++
++
++int yaffs_CheckpointOpen(yaffs_Device *dev, int forWriting)
++{
++
++ /* Got the functions we need? */
++ if (!dev->writeChunkWithTagsToNAND ||
++ !dev->readChunkWithTagsFromNAND ||
++ !dev->eraseBlockInNAND ||
++ !dev->markNANDBlockBad)
++ return 0;
++
++ if(forWriting && !yaffs_CheckpointSpaceOk(dev))
++ return 0;
++
++ if(!dev->checkpointBuffer)
++ dev->checkpointBuffer = YMALLOC_DMA(dev->nDataBytesPerChunk);
++ if(!dev->checkpointBuffer)
++ return 0;
++
++
++ dev->checkpointPageSequence = 0;
++
++ dev->checkpointOpenForWrite = forWriting;
++
++ dev->checkpointByteCount = 0;
++ dev->checkpointCurrentBlock = -1;
++ dev->checkpointCurrentChunk = -1;
++ dev->checkpointNextBlock = dev->internalStartBlock;
++
++ /* Erase all the blocks in the checkpoint area */
++ if(forWriting){
++ memset(dev->checkpointBuffer,0,dev->nDataBytesPerChunk);
++ dev->checkpointByteOffset = 0;
++ return yaffs_CheckpointErase(dev);
++
++
++ } else {
++ int i;
++ /* Set to a value that will kick off a read */
++ dev->checkpointByteOffset = dev->nDataBytesPerChunk;
++ /* A checkpoint block list of 1 checkpoint block per 16 block is (hopefully)
++ * going to be way more than we need */
++ dev->blocksInCheckpoint = 0;
++ dev->checkpointMaxBlocks = (dev->internalEndBlock - dev->internalStartBlock)/16 + 2;
++ dev->checkpointBlockList = YMALLOC(sizeof(int) * dev->checkpointMaxBlocks);
++ for(i = 0; i < dev->checkpointMaxBlocks; i++)
++ dev->checkpointBlockList[i] = -1;
++ }
++
++ return 1;
++}
++
++static int yaffs_CheckpointFlushBuffer(yaffs_Device *dev)
++{
++
++ int chunk;
++ int realignedChunk;
++
++ yaffs_ExtendedTags tags;
++
++ if(dev->checkpointCurrentBlock < 0){
++ yaffs_CheckpointFindNextErasedBlock(dev);
++ dev->checkpointCurrentChunk = 0;
++ }
++
++ if(dev->checkpointCurrentBlock < 0)
++ return 0;
++
++ tags.chunkDeleted = 0;
++ tags.objectId = dev->checkpointNextBlock; /* Hint to next place to look */
++ tags.chunkId = dev->checkpointPageSequence + 1;
++ tags.sequenceNumber = YAFFS_SEQUENCE_CHECKPOINT_DATA;
++ tags.byteCount = dev->nDataBytesPerChunk;
++ if(dev->checkpointCurrentChunk == 0){
++ /* First chunk we write for the block? Set block state to
++ checkpoint */
++ yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,dev->checkpointCurrentBlock);
++ bi->blockState = YAFFS_BLOCK_STATE_CHECKPOINT;
++ dev->blocksInCheckpoint++;
++ }
++
++ chunk = dev->checkpointCurrentBlock * dev->nChunksPerBlock + dev->checkpointCurrentChunk;
++
++
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("checkpoint wite buffer nand %d(%d:%d) objid %d chId %d" TENDSTR),
++ chunk, dev->checkpointCurrentBlock, dev->checkpointCurrentChunk,tags.objectId,tags.chunkId));
++
++ realignedChunk = chunk - dev->chunkOffset;
++
++ dev->writeChunkWithTagsToNAND(dev,realignedChunk,dev->checkpointBuffer,&tags);
++ dev->checkpointByteOffset = 0;
++ dev->checkpointPageSequence++;
++ dev->checkpointCurrentChunk++;
++ if(dev->checkpointCurrentChunk >= dev->nChunksPerBlock){
++ dev->checkpointCurrentChunk = 0;
++ dev->checkpointCurrentBlock = -1;
++ }
++ memset(dev->checkpointBuffer,0,dev->nDataBytesPerChunk);
++
++ return 1;
++}
++
++
++int yaffs_CheckpointWrite(yaffs_Device *dev,const void *data, int nBytes)
++{
++ int i=0;
++ int ok = 1;
++
++
++ __u8 * dataBytes = (__u8 *)data;
++
++
++
++ if(!dev->checkpointBuffer)
++ return 0;
++
++ while(i < nBytes && ok) {
++
++
++
++ dev->checkpointBuffer[dev->checkpointByteOffset] = *dataBytes ;
++ dev->checkpointByteOffset++;
++ i++;
++ dataBytes++;
++ dev->checkpointByteCount++;
++
++
++ if(dev->checkpointByteOffset < 0 ||
++ dev->checkpointByteOffset >= dev->nDataBytesPerChunk)
++ ok = yaffs_CheckpointFlushBuffer(dev);
++
++ }
++
++ return i;
++}
++
++int yaffs_CheckpointRead(yaffs_Device *dev, void *data, int nBytes)
++{
++ int i=0;
++ int ok = 1;
++ yaffs_ExtendedTags tags;
++
++
++ int chunk;
++ int realignedChunk;
++
++ __u8 *dataBytes = (__u8 *)data;
++
++ if(!dev->checkpointBuffer)
++ return 0;
++
++ while(i < nBytes && ok) {
++
++
++ if(dev->checkpointByteOffset < 0 ||
++ dev->checkpointByteOffset >= dev->nDataBytesPerChunk) {
++
++ if(dev->checkpointCurrentBlock < 0){
++ yaffs_CheckpointFindNextCheckpointBlock(dev);
++ dev->checkpointCurrentChunk = 0;
++ }
++
++ if(dev->checkpointCurrentBlock < 0)
++ ok = 0;
++ else {
++
++ chunk = dev->checkpointCurrentBlock * dev->nChunksPerBlock +
++ dev->checkpointCurrentChunk;
++
++ realignedChunk = chunk - dev->chunkOffset;
++
++ /* read in the next chunk */
++ /* printf("read checkpoint page %d\n",dev->checkpointPage); */
++ dev->readChunkWithTagsFromNAND(dev, realignedChunk,
++ dev->checkpointBuffer,
++ &tags);
++
++ if(tags.chunkId != (dev->checkpointPageSequence + 1) ||
++ tags.sequenceNumber != YAFFS_SEQUENCE_CHECKPOINT_DATA)
++ ok = 0;
++
++ dev->checkpointByteOffset = 0;
++ dev->checkpointPageSequence++;
++ dev->checkpointCurrentChunk++;
++
++ if(dev->checkpointCurrentChunk >= dev->nChunksPerBlock)
++ dev->checkpointCurrentBlock = -1;
++ }
++ }
++
++ if(ok){
++ *dataBytes = dev->checkpointBuffer[dev->checkpointByteOffset];
++ dev->checkpointByteOffset++;
++ i++;
++ dataBytes++;
++ dev->checkpointByteCount++;
++ }
++ }
++
++ return i;
++}
++
++int yaffs_CheckpointClose(yaffs_Device *dev)
++{
++
++ if(dev->checkpointOpenForWrite){
++ if(dev->checkpointByteOffset != 0)
++ yaffs_CheckpointFlushBuffer(dev);
++ } else {
++ int i;
++ for(i = 0; i < dev->blocksInCheckpoint && dev->checkpointBlockList[i] >= 0; i++){
++ yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,dev->checkpointBlockList[i]);
++ if(bi->blockState == YAFFS_BLOCK_STATE_EMPTY)
++ bi->blockState = YAFFS_BLOCK_STATE_CHECKPOINT;
++ else {
++ // Todo this looks odd...
++ }
++ }
++ YFREE(dev->checkpointBlockList);
++ dev->checkpointBlockList = NULL;
++ }
++
++ dev->nFreeChunks -= dev->blocksInCheckpoint * dev->nChunksPerBlock;
++ dev->nErasedBlocks -= dev->blocksInCheckpoint;
++
++
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("checkpoint byte count %d" TENDSTR),
++ dev->checkpointByteCount));
++
++ if(dev->checkpointBuffer){
++ /* free the buffer */
++ YFREE(dev->checkpointBuffer);
++ dev->checkpointBuffer = NULL;
++ return 1;
++ }
++ else
++ return 0;
++
++}
++
++int yaffs_CheckpointInvalidateStream(yaffs_Device *dev)
++{
++ /* Erase the first checksum block */
++
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("checkpoint invalidate"TENDSTR)));
++
++ if(!yaffs_CheckpointSpaceOk(dev))
++ return 0;
++
++ return yaffs_CheckpointErase(dev);
++}
++
++
++
+diff -urN linux.old/fs/yaffs2/yaffs_checkptrw.h linux.dev/fs/yaffs2/yaffs_checkptrw.h
+--- linux.old/fs/yaffs2/yaffs_checkptrw.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_checkptrw.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,18 @@
++#ifndef __YAFFS_CHECKPTRW_H__
++#define __YAFFS_CHECKPTRW_H__
++
++#include "yaffs_guts.h"
++
++int yaffs_CheckpointOpen(yaffs_Device *dev, int forWriting);
++
++int yaffs_CheckpointWrite(yaffs_Device *dev,const void *data, int nBytes);
++
++int yaffs_CheckpointRead(yaffs_Device *dev,void *data, int nBytes);
++
++int yaffs_CheckpointClose(yaffs_Device *dev);
++
++int yaffs_CheckpointInvalidateStream(yaffs_Device *dev);
++
++
++#endif
++
+diff -urN linux.old/fs/yaffs2/yaffs_ecc.c linux.dev/fs/yaffs2/yaffs_ecc.c
+--- linux.old/fs/yaffs2/yaffs_ecc.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_ecc.c 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,333 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ *
++ * yaffs_ecc.c: ECC generation/correction algorithms.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public License
++ * version 2.1 as published by the Free Software Foundation.
++ */
++
++ /*
++ * This code implements the ECC algorithm used in SmartMedia.
++ *
++ * The ECC comprises 22 bits of parity information and is stuffed into 3 bytes.
++ * The two unused bit are set to 1.
++ * The ECC can correct single bit errors in a 256-byte page of data. Thus, two such ECC
++ * blocks are used on a 512-byte NAND page.
++ *
++ */
++
++/* Table generated by gen-ecc.c
++ * Using a table means we do not have to calculate p1..p4 and p1'..p4'
++ * for each byte of data. These are instead provided in a table in bits7..2.
++ * Bit 0 of each entry indicates whether the entry has an odd or even parity, and therefore
++ * this bytes influence on the line parity.
++ */
++
++const char *yaffs_ecc_c_version =
++ "$Id: yaffs_ecc.c,v 1.7 2006/09/14 22:02:46 charles Exp $";
++
++#include "yportenv.h"
++
++#include "yaffs_ecc.h"
++
++static const unsigned char column_parity_table[] = {
++ 0x00, 0x55, 0x59, 0x0c, 0x65, 0x30, 0x3c, 0x69,
++ 0x69, 0x3c, 0x30, 0x65, 0x0c, 0x59, 0x55, 0x00,
++ 0x95, 0xc0, 0xcc, 0x99, 0xf0, 0xa5, 0xa9, 0xfc,
++ 0xfc, 0xa9, 0xa5, 0xf0, 0x99, 0xcc, 0xc0, 0x95,
++ 0x99, 0xcc, 0xc0, 0x95, 0xfc, 0xa9, 0xa5, 0xf0,
++ 0xf0, 0xa5, 0xa9, 0xfc, 0x95, 0xc0, 0xcc, 0x99,
++ 0x0c, 0x59, 0x55, 0x00, 0x69, 0x3c, 0x30, 0x65,
++ 0x65, 0x30, 0x3c, 0x69, 0x00, 0x55, 0x59, 0x0c,
++ 0xa5, 0xf0, 0xfc, 0xa9, 0xc0, 0x95, 0x99, 0xcc,
++ 0xcc, 0x99, 0x95, 0xc0, 0xa9, 0xfc, 0xf0, 0xa5,
++ 0x30, 0x65, 0x69, 0x3c, 0x55, 0x00, 0x0c, 0x59,
++ 0x59, 0x0c, 0x00, 0x55, 0x3c, 0x69, 0x65, 0x30,
++ 0x3c, 0x69, 0x65, 0x30, 0x59, 0x0c, 0x00, 0x55,
++ 0x55, 0x00, 0x0c, 0x59, 0x30, 0x65, 0x69, 0x3c,
++ 0xa9, 0xfc, 0xf0, 0xa5, 0xcc, 0x99, 0x95, 0xc0,
++ 0xc0, 0x95, 0x99, 0xcc, 0xa5, 0xf0, 0xfc, 0xa9,
++ 0xa9, 0xfc, 0xf0, 0xa5, 0xcc, 0x99, 0x95, 0xc0,
++ 0xc0, 0x95, 0x99, 0xcc, 0xa5, 0xf0, 0xfc, 0xa9,
++ 0x3c, 0x69, 0x65, 0x30, 0x59, 0x0c, 0x00, 0x55,
++ 0x55, 0x00, 0x0c, 0x59, 0x30, 0x65, 0x69, 0x3c,
++ 0x30, 0x65, 0x69, 0x3c, 0x55, 0x00, 0x0c, 0x59,
++ 0x59, 0x0c, 0x00, 0x55, 0x3c, 0x69, 0x65, 0x30,
++ 0xa5, 0xf0, 0xfc, 0xa9, 0xc0, 0x95, 0x99, 0xcc,
++ 0xcc, 0x99, 0x95, 0xc0, 0xa9, 0xfc, 0xf0, 0xa5,
++ 0x0c, 0x59, 0x55, 0x00, 0x69, 0x3c, 0x30, 0x65,
++ 0x65, 0x30, 0x3c, 0x69, 0x00, 0x55, 0x59, 0x0c,
++ 0x99, 0xcc, 0xc0, 0x95, 0xfc, 0xa9, 0xa5, 0xf0,
++ 0xf0, 0xa5, 0xa9, 0xfc, 0x95, 0xc0, 0xcc, 0x99,
++ 0x95, 0xc0, 0xcc, 0x99, 0xf0, 0xa5, 0xa9, 0xfc,
++ 0xfc, 0xa9, 0xa5, 0xf0, 0x99, 0xcc, 0xc0, 0x95,
++ 0x00, 0x55, 0x59, 0x0c, 0x65, 0x30, 0x3c, 0x69,
++ 0x69, 0x3c, 0x30, 0x65, 0x0c, 0x59, 0x55, 0x00,
++};
++
++/* Count the bits in an unsigned char or a U32 */
++
++static int yaffs_CountBits(unsigned char x)
++{
++ int r = 0;
++ while (x) {
++ if (x & 1)
++ r++;
++ x >>= 1;
++ }
++ return r;
++}
++
++static int yaffs_CountBits32(unsigned x)
++{
++ int r = 0;
++ while (x) {
++ if (x & 1)
++ r++;
++ x >>= 1;
++ }
++ return r;
++}
++
++/* Calculate the ECC for a 256-byte block of data */
++void yaffs_ECCCalculate(const unsigned char *data, unsigned char *ecc)
++{
++ unsigned int i;
++
++ unsigned char col_parity = 0;
++ unsigned char line_parity = 0;
++ unsigned char line_parity_prime = 0;
++ unsigned char t;
++ unsigned char b;
++
++ for (i = 0; i < 256; i++) {
++ b = column_parity_table[*data++];
++ col_parity ^= b;
++
++ if (b & 0x01) // odd number of bits in the byte
++ {
++ line_parity ^= i;
++ line_parity_prime ^= ~i;
++ }
++
++ }
++
++ ecc[2] = (~col_parity) | 0x03;
++
++ t = 0;
++ if (line_parity & 0x80)
++ t |= 0x80;
++ if (line_parity_prime & 0x80)
++ t |= 0x40;
++ if (line_parity & 0x40)
++ t |= 0x20;
++ if (line_parity_prime & 0x40)
++ t |= 0x10;
++ if (line_parity & 0x20)
++ t |= 0x08;
++ if (line_parity_prime & 0x20)
++ t |= 0x04;
++ if (line_parity & 0x10)
++ t |= 0x02;
++ if (line_parity_prime & 0x10)
++ t |= 0x01;
++ ecc[1] = ~t;
++
++ t = 0;
++ if (line_parity & 0x08)
++ t |= 0x80;
++ if (line_parity_prime & 0x08)
++ t |= 0x40;
++ if (line_parity & 0x04)
++ t |= 0x20;
++ if (line_parity_prime & 0x04)
++ t |= 0x10;
++ if (line_parity & 0x02)
++ t |= 0x08;
++ if (line_parity_prime & 0x02)
++ t |= 0x04;
++ if (line_parity & 0x01)
++ t |= 0x02;
++ if (line_parity_prime & 0x01)
++ t |= 0x01;
++ ecc[0] = ~t;
++
++#ifdef CONFIG_YAFFS_ECC_WRONG_ORDER
++ // Swap the bytes into the wrong order
++ t = ecc[0];
++ ecc[0] = ecc[1];
++ ecc[1] = t;
++#endif
++}
++
++
++/* Correct the ECC on a 256 byte block of data */
++
++int yaffs_ECCCorrect(unsigned char *data, unsigned char *read_ecc,
++ const unsigned char *test_ecc)
++{
++ unsigned char d0, d1, d2; /* deltas */
++
++ d0 = read_ecc[0] ^ test_ecc[0];
++ d1 = read_ecc[1] ^ test_ecc[1];
++ d2 = read_ecc[2] ^ test_ecc[2];
++
++ if ((d0 | d1 | d2) == 0)
++ return 0; /* no error */
++
++ if (((d0 ^ (d0 >> 1)) & 0x55) == 0x55 &&
++ ((d1 ^ (d1 >> 1)) & 0x55) == 0x55 &&
++ ((d2 ^ (d2 >> 1)) & 0x54) == 0x54) {
++ /* Single bit (recoverable) error in data */
++
++ unsigned byte;
++ unsigned bit;
++
++#ifdef CONFIG_YAFFS_ECC_WRONG_ORDER
++ // swap the bytes to correct for the wrong order
++ unsigned char t;
++
++ t = d0;
++ d0 = d1;
++ d1 = t;
++#endif
++
++ bit = byte = 0;
++
++ if (d1 & 0x80)
++ byte |= 0x80;
++ if (d1 & 0x20)
++ byte |= 0x40;
++ if (d1 & 0x08)
++ byte |= 0x20;
++ if (d1 & 0x02)
++ byte |= 0x10;
++ if (d0 & 0x80)
++ byte |= 0x08;
++ if (d0 & 0x20)
++ byte |= 0x04;
++ if (d0 & 0x08)
++ byte |= 0x02;
++ if (d0 & 0x02)
++ byte |= 0x01;
++
++ if (d2 & 0x80)
++ bit |= 0x04;
++ if (d2 & 0x20)
++ bit |= 0x02;
++ if (d2 & 0x08)
++ bit |= 0x01;
++
++ data[byte] ^= (1 << bit);
++
++ return 1; /* Corrected the error */
++ }
++
++ if ((yaffs_CountBits(d0) +
++ yaffs_CountBits(d1) +
++ yaffs_CountBits(d2)) == 1) {
++ /* Reccoverable error in ecc */
++
++ read_ecc[0] = test_ecc[0];
++ read_ecc[1] = test_ecc[1];
++ read_ecc[2] = test_ecc[2];
++
++ return 1; /* Corrected the error */
++ }
++
++ /* Unrecoverable error */
++
++ return -1;
++
++}
++
++
++/*
++ * ECCxxxOther does ECC calcs on arbitrary n bytes of data
++ */
++void yaffs_ECCCalculateOther(const unsigned char *data, unsigned nBytes,
++ yaffs_ECCOther * eccOther)
++{
++ unsigned int i;
++
++ unsigned char col_parity = 0;
++ unsigned line_parity = 0;
++ unsigned line_parity_prime = 0;
++ unsigned char b;
++
++ for (i = 0; i < nBytes; i++) {
++ b = column_parity_table[*data++];
++ col_parity ^= b;
++
++ if (b & 0x01) {
++ /* odd number of bits in the byte */
++ line_parity ^= i;
++ line_parity_prime ^= ~i;
++ }
++
++ }
++
++ eccOther->colParity = (col_parity >> 2) & 0x3f;
++ eccOther->lineParity = line_parity;
++ eccOther->lineParityPrime = line_parity_prime;
++}
++
++int yaffs_ECCCorrectOther(unsigned char *data, unsigned nBytes,
++ yaffs_ECCOther * read_ecc,
++ const yaffs_ECCOther * test_ecc)
++{
++ unsigned char cDelta; /* column parity delta */
++ unsigned lDelta; /* line parity delta */
++ unsigned lDeltaPrime; /* line parity delta */
++ unsigned bit;
++
++ cDelta = read_ecc->colParity ^ test_ecc->colParity;
++ lDelta = read_ecc->lineParity ^ test_ecc->lineParity;
++ lDeltaPrime = read_ecc->lineParityPrime ^ test_ecc->lineParityPrime;
++
++ if ((cDelta | lDelta | lDeltaPrime) == 0)
++ return 0; /* no error */
++
++ if (lDelta == ~lDeltaPrime &&
++ (((cDelta ^ (cDelta >> 1)) & 0x15) == 0x15))
++ {
++ /* Single bit (recoverable) error in data */
++
++ bit = 0;
++
++ if (cDelta & 0x20)
++ bit |= 0x04;
++ if (cDelta & 0x08)
++ bit |= 0x02;
++ if (cDelta & 0x02)
++ bit |= 0x01;
++
++ if(lDelta >= nBytes)
++ return -1;
++
++ data[lDelta] ^= (1 << bit);
++
++ return 1; /* corrected */
++ }
++
++ if ((yaffs_CountBits32(lDelta) + yaffs_CountBits32(lDeltaPrime) +
++ yaffs_CountBits(cDelta)) == 1) {
++ /* Reccoverable error in ecc */
++
++ *read_ecc = *test_ecc;
++ return 1; /* corrected */
++ }
++
++ /* Unrecoverable error */
++
++ return -1;
++
++}
++
+diff -urN linux.old/fs/yaffs2/yaffs_ecc.h linux.dev/fs/yaffs2/yaffs_ecc.h
+--- linux.old/fs/yaffs2/yaffs_ecc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_ecc.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,44 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ *
++ * yaffs_ecc.c: ECC generation/correction algorithms.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++ /*
++ * This code implements the ECC algorithm used in SmartMedia.
++ *
++ * The ECC comprises 22 bits of parity information and is stuffed into 3 bytes.
++ * The two unused bit are set to 1.
++ * The ECC can correct single bit errors in a 256-byte page of data. Thus, two such ECC
++ * blocks are used on a 512-byte NAND page.
++ *
++ */
++
++#ifndef __YAFFS_ECC_H__
++#define __YAFFS_ECC_H__
++
++typedef struct {
++ unsigned char colParity;
++ unsigned lineParity;
++ unsigned lineParityPrime;
++} yaffs_ECCOther;
++
++void yaffs_ECCCalculate(const unsigned char *data, unsigned char *ecc);
++int yaffs_ECCCorrect(unsigned char *data, unsigned char *read_ecc,
++ const unsigned char *test_ecc);
++
++void yaffs_ECCCalculateOther(const unsigned char *data, unsigned nBytes,
++ yaffs_ECCOther * ecc);
++int yaffs_ECCCorrectOther(unsigned char *data, unsigned nBytes,
++ yaffs_ECCOther * read_ecc,
++ const yaffs_ECCOther * test_ecc);
++#endif
+diff -urN linux.old/fs/yaffs2/yaffs_fs.c linux.dev/fs/yaffs2/yaffs_fs.c
+--- linux.old/fs/yaffs2/yaffs_fs.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_fs.c 2006-12-14 04:33:02.000000000 +0100
+@@ -0,0 +1,2136 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ * yaffs_fs.c
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * This is the file system front-end to YAFFS that hooks it up to
++ * the VFS.
++ *
++ * Special notes:
++ * >> 2.4: sb->u.generic_sbp points to the yaffs_Device associated with
++ * this superblock
++ * >> 2.6: sb->s_fs_info points to the yaffs_Device associated with this
++ * superblock
++ * >> inode->u.generic_ip points to the associated yaffs_Object.
++ *
++ * Acknowledgements:
++ * * Luc van OostenRyck for numerous patches.
++ * * Nick Bane for numerous patches.
++ * * Nick Bane for 2.5/2.6 integration.
++ * * Andras Toth for mknod rdev issue.
++ * * Michael Fischer for finding the problem with inode inconsistency.
++ * * Some code bodily lifted from JFFS2.
++ */
++
++const char *yaffs_fs_c_version =
++ "$Id: yaffs_fs.c,v 1.54 2006/10/24 18:09:15 charles Exp $";
++extern const char *yaffs_guts_c_version;
++
++#include <linux/autoconf.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/version.h>
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/list.h>
++#include <linux/fs.h>
++#include <linux/proc_fs.h>
++#include <linux/smp_lock.h>
++#include <linux/pagemap.h>
++#include <linux/mtd/mtd.h>
++#include <linux/interrupt.h>
++#include <linux/string.h>
++#include <linux/ctype.h>
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++
++#include <linux/statfs.h> /* Added NCB 15-8-2003 */
++#include <asm/statfs.h>
++#define UnlockPage(p) unlock_page(p)
++#define Page_Uptodate(page) test_bit(PG_uptodate, &(page)->flags)
++
++/* FIXME: use sb->s_id instead ? */
++#define yaffs_devname(sb, buf) bdevname(sb->s_bdev, buf)
++
++#else
++
++#include <linux/locks.h>
++#define BDEVNAME_SIZE 0
++#define yaffs_devname(sb, buf) kdevname(sb->s_dev)
++
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
++/* added NCB 26/5/2006 for 2.4.25-vrs2-tcl1 kernel */
++#define __user
++#endif
++
++#endif
++
++#include <asm/uaccess.h>
++
++#include "yportenv.h"
++#include "yaffs_guts.h"
++
++unsigned yaffs_traceMask = YAFFS_TRACE_ALWAYS |
++ YAFFS_TRACE_BAD_BLOCKS
++ /* | 0xFFFFFFFF */;
++
++#include <linux/mtd/mtd.h>
++#include "yaffs_mtdif.h"
++#include "yaffs_mtdif2.h"
++
++/*#define T(x) printk x */
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18))
++#define yaffs_InodeToObject(iptr) ((yaffs_Object *)((iptr)->i_private))
++#else
++#define yaffs_InodeToObject(iptr) ((yaffs_Object *)((iptr)->u.generic_ip))
++#endif
++#define yaffs_DentryToObject(dptr) yaffs_InodeToObject((dptr)->d_inode)
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++#define yaffs_SuperToDevice(sb) ((yaffs_Device *)sb->s_fs_info)
++#else
++#define yaffs_SuperToDevice(sb) ((yaffs_Device *)sb->u.generic_sbp)
++#endif
++
++static void yaffs_put_super(struct super_block *sb);
++
++static ssize_t yaffs_file_write(struct file *f, const char *buf, size_t n,
++ loff_t * pos);
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++static int yaffs_file_flush(struct file *file, fl_owner_t id);
++#else
++static int yaffs_file_flush(struct file *file);
++#endif
++
++static int yaffs_sync_object(struct file *file, struct dentry *dentry,
++ int datasync);
++
++static int yaffs_readdir(struct file *f, void *dirent, filldir_t filldir);
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++static int yaffs_create(struct inode *dir, struct dentry *dentry, int mode,
++ struct nameidata *n);
++static struct dentry *yaffs_lookup(struct inode *dir, struct dentry *dentry,
++ struct nameidata *n);
++#else
++static int yaffs_create(struct inode *dir, struct dentry *dentry, int mode);
++static struct dentry *yaffs_lookup(struct inode *dir, struct dentry *dentry);
++#endif
++static int yaffs_link(struct dentry *old_dentry, struct inode *dir,
++ struct dentry *dentry);
++static int yaffs_unlink(struct inode *dir, struct dentry *dentry);
++static int yaffs_symlink(struct inode *dir, struct dentry *dentry,
++ const char *symname);
++static int yaffs_mkdir(struct inode *dir, struct dentry *dentry, int mode);
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++static int yaffs_mknod(struct inode *dir, struct dentry *dentry, int mode,
++ dev_t dev);
++#else
++static int yaffs_mknod(struct inode *dir, struct dentry *dentry, int mode,
++ int dev);
++#endif
++static int yaffs_rename(struct inode *old_dir, struct dentry *old_dentry,
++ struct inode *new_dir, struct dentry *new_dentry);
++static int yaffs_setattr(struct dentry *dentry, struct iattr *attr);
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++static int yaffs_sync_fs(struct super_block *sb, int wait);
++static void yaffs_write_super(struct super_block *sb);
++#else
++static int yaffs_sync_fs(struct super_block *sb);
++static int yaffs_write_super(struct super_block *sb);
++#endif
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++static int yaffs_statfs(struct dentry *dentry, struct kstatfs *buf);
++#elif (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++static int yaffs_statfs(struct super_block *sb, struct kstatfs *buf);
++#else
++static int yaffs_statfs(struct super_block *sb, struct statfs *buf);
++#endif
++static void yaffs_read_inode(struct inode *inode);
++
++static void yaffs_put_inode(struct inode *inode);
++static void yaffs_delete_inode(struct inode *);
++static void yaffs_clear_inode(struct inode *);
++
++static int yaffs_readpage(struct file *file, struct page *page);
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++static int yaffs_writepage(struct page *page, struct writeback_control *wbc);
++#else
++static int yaffs_writepage(struct page *page);
++#endif
++static int yaffs_prepare_write(struct file *f, struct page *pg,
++ unsigned offset, unsigned to);
++static int yaffs_commit_write(struct file *f, struct page *pg, unsigned offset,
++ unsigned to);
++
++static int yaffs_readlink(struct dentry *dentry, char __user * buffer,
++ int buflen);
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,13))
++static void *yaffs_follow_link(struct dentry *dentry, struct nameidata *nd);
++#else
++static int yaffs_follow_link(struct dentry *dentry, struct nameidata *nd);
++#endif
++
++static struct address_space_operations yaffs_file_address_operations = {
++ .readpage = yaffs_readpage,
++ .writepage = yaffs_writepage,
++ .prepare_write = yaffs_prepare_write,
++ .commit_write = yaffs_commit_write,
++};
++
++static struct file_operations yaffs_file_operations = {
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18))
++ .read = do_sync_read,
++ .write = do_sync_write,
++ .aio_read = generic_file_aio_read,
++ .aio_write = generic_file_aio_write,
++#else
++ .read = generic_file_read,
++ .write = generic_file_write,
++#endif
++ .mmap = generic_file_mmap,
++ .flush = yaffs_file_flush,
++ .fsync = yaffs_sync_object,
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++ .sendfile = generic_file_sendfile,
++#endif
++
++};
++
++static struct inode_operations yaffs_file_inode_operations = {
++ .setattr = yaffs_setattr,
++};
++
++static struct inode_operations yaffs_symlink_inode_operations = {
++ .readlink = yaffs_readlink,
++ .follow_link = yaffs_follow_link,
++ .setattr = yaffs_setattr,
++};
++
++static struct inode_operations yaffs_dir_inode_operations = {
++ .create = yaffs_create,
++ .lookup = yaffs_lookup,
++ .link = yaffs_link,
++ .unlink = yaffs_unlink,
++ .symlink = yaffs_symlink,
++ .mkdir = yaffs_mkdir,
++ .rmdir = yaffs_unlink,
++ .mknod = yaffs_mknod,
++ .rename = yaffs_rename,
++ .setattr = yaffs_setattr,
++};
++
++static struct file_operations yaffs_dir_operations = {
++ .read = generic_read_dir,
++ .readdir = yaffs_readdir,
++ .fsync = yaffs_sync_object,
++};
++
++static struct super_operations yaffs_super_ops = {
++ .statfs = yaffs_statfs,
++ .read_inode = yaffs_read_inode,
++ .put_inode = yaffs_put_inode,
++ .put_super = yaffs_put_super,
++ .delete_inode = yaffs_delete_inode,
++ .clear_inode = yaffs_clear_inode,
++ .sync_fs = yaffs_sync_fs,
++ .write_super = yaffs_write_super,
++};
++
++static void yaffs_GrossLock(yaffs_Device * dev)
++{
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs locking\n"));
++
++ down(&dev->grossLock);
++}
++
++static void yaffs_GrossUnlock(yaffs_Device * dev)
++{
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs unlocking\n"));
++ up(&dev->grossLock);
++
++}
++
++static int yaffs_readlink(struct dentry *dentry, char __user * buffer,
++ int buflen)
++{
++ unsigned char *alias;
++ int ret;
++
++ yaffs_Device *dev = yaffs_DentryToObject(dentry)->myDev;
++
++ yaffs_GrossLock(dev);
++
++ alias = yaffs_GetSymlinkAlias(yaffs_DentryToObject(dentry));
++
++ yaffs_GrossUnlock(dev);
++
++ if (!alias)
++ return -ENOMEM;
++
++ ret = vfs_readlink(dentry, buffer, buflen, alias);
++ kfree(alias);
++ return ret;
++}
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,13))
++static void *yaffs_follow_link(struct dentry *dentry, struct nameidata *nd)
++#else
++static int yaffs_follow_link(struct dentry *dentry, struct nameidata *nd)
++#endif
++{
++ unsigned char *alias;
++ int ret;
++ yaffs_Device *dev = yaffs_DentryToObject(dentry)->myDev;
++
++ yaffs_GrossLock(dev);
++
++ alias = yaffs_GetSymlinkAlias(yaffs_DentryToObject(dentry));
++
++ yaffs_GrossUnlock(dev);
++
++ if (!alias)
++ {
++ ret = -ENOMEM;
++ goto out;
++ }
++
++ ret = vfs_follow_link(nd, alias);
++ kfree(alias);
++out:
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,13))
++ return ERR_PTR (ret);
++#else
++ return ret;
++#endif
++}
++
++struct inode *yaffs_get_inode(struct super_block *sb, int mode, int dev,
++ yaffs_Object * obj);
++
++/*
++ * Lookup is used to find objects in the fs
++ */
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++
++static struct dentry *yaffs_lookup(struct inode *dir, struct dentry *dentry,
++ struct nameidata *n)
++#else
++static struct dentry *yaffs_lookup(struct inode *dir, struct dentry *dentry)
++#endif
++{
++ yaffs_Object *obj;
++ struct inode *inode = NULL; /* NCB 2.5/2.6 needs NULL here */
++
++ yaffs_Device *dev = yaffs_InodeToObject(dir)->myDev;
++
++ yaffs_GrossLock(dev);
++
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_lookup for %d:%s\n",
++ yaffs_InodeToObject(dir)->objectId, dentry->d_name.name));
++
++ obj =
++ yaffs_FindObjectByName(yaffs_InodeToObject(dir),
++ dentry->d_name.name);
++
++ obj = yaffs_GetEquivalentObject(obj); /* in case it was a hardlink */
++
++ /* Can't hold gross lock when calling yaffs_get_inode() */
++ yaffs_GrossUnlock(dev);
++
++ if (obj) {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_lookup found %d\n", obj->objectId));
++
++ inode = yaffs_get_inode(dir->i_sb, obj->yst_mode, 0, obj);
++
++ if (inode) {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_loookup dentry \n"));
++/* #if 0 asserted by NCB for 2.5/6 compatability - falls through to
++ * d_add even if NULL inode */
++#if 0
++ /*dget(dentry); // try to solve directory bug */
++ d_add(dentry, inode);
++
++ /* return dentry; */
++ return NULL;
++#endif
++ }
++
++ } else {
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_lookup not found\n"));
++
++ }
++
++/* added NCB for 2.5/6 compatability - forces add even if inode is
++ * NULL which creates dentry hash */
++ d_add(dentry, inode);
++
++ return NULL;
++ /* return (ERR_PTR(-EIO)); */
++
++}
++
++/* For now put inode is just for debugging
++ * Put inode is called when the inode **structure** is put.
++ */
++static void yaffs_put_inode(struct inode *inode)
++{
++ T(YAFFS_TRACE_OS,
++ ("yaffs_put_inode: ino %d, count %d\n", (int)inode->i_ino,
++ atomic_read(&inode->i_count)));
++
++}
++
++/* clear is called to tell the fs to release any per-inode data it holds */
++static void yaffs_clear_inode(struct inode *inode)
++{
++ yaffs_Object *obj;
++ yaffs_Device *dev;
++
++ obj = yaffs_InodeToObject(inode);
++
++ T(YAFFS_TRACE_OS,
++ ("yaffs_clear_inode: ino %d, count %d %s\n", (int)inode->i_ino,
++ atomic_read(&inode->i_count),
++ obj ? "object exists" : "null object"));
++
++ if (obj) {
++ dev = obj->myDev;
++ yaffs_GrossLock(dev);
++
++ /* Clear the association between the inode and
++ * the yaffs_Object.
++ */
++ obj->myInode = NULL;
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18))
++ inode->i_private = NULL;
++#else
++ inode->u.generic_ip = NULL;
++#endif
++
++ /* If the object freeing was deferred, then the real
++ * free happens now.
++ * This should fix the inode inconsistency problem.
++ */
++
++ yaffs_HandleDeferedFree(obj);
++
++ yaffs_GrossUnlock(dev);
++ }
++
++}
++
++/* delete is called when the link count is zero and the inode
++ * is put (ie. nobody wants to know about it anymore, time to
++ * delete the file).
++ * NB Must call clear_inode()
++ */
++static void yaffs_delete_inode(struct inode *inode)
++{
++ yaffs_Object *obj = yaffs_InodeToObject(inode);
++ yaffs_Device *dev;
++
++ T(YAFFS_TRACE_OS,
++ ("yaffs_delete_inode: ino %d, count %d %s\n", (int)inode->i_ino,
++ atomic_read(&inode->i_count),
++ obj ? "object exists" : "null object"));
++
++ if (obj) {
++ dev = obj->myDev;
++ yaffs_GrossLock(dev);
++ yaffs_DeleteFile(obj);
++ yaffs_GrossUnlock(dev);
++ }
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,13))
++ truncate_inode_pages (&inode->i_data, 0);
++#endif
++ clear_inode(inode);
++}
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++static int yaffs_file_flush(struct file *file, fl_owner_t id)
++#else
++static int yaffs_file_flush(struct file *file)
++#endif
++{
++ yaffs_Object *obj = yaffs_DentryToObject(file->f_dentry);
++
++ yaffs_Device *dev = obj->myDev;
++
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_file_flush object %d (%s)\n", obj->objectId,
++ obj->dirty ? "dirty" : "clean"));
++
++ yaffs_GrossLock(dev);
++
++ yaffs_FlushFile(obj, 1);
++
++ yaffs_GrossUnlock(dev);
++
++ return 0;
++}
++
++static int yaffs_readpage_nolock(struct file *f, struct page *pg)
++{
++ /* Lifted from jffs2 */
++
++ yaffs_Object *obj;
++ unsigned char *pg_buf;
++ int ret;
++
++ yaffs_Device *dev;
++
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_readpage at %08x, size %08x\n",
++ (unsigned)(pg->index << PAGE_CACHE_SHIFT),
++ (unsigned)PAGE_CACHE_SIZE));
++
++ obj = yaffs_DentryToObject(f->f_dentry);
++
++ dev = obj->myDev;
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++ BUG_ON(!PageLocked(pg));
++#else
++ if (!PageLocked(pg))
++ PAGE_BUG(pg);
++#endif
++
++ pg_buf = kmap(pg);
++ /* FIXME: Can kmap fail? */
++
++ yaffs_GrossLock(dev);
++
++ ret =
++ yaffs_ReadDataFromFile(obj, pg_buf, pg->index << PAGE_CACHE_SHIFT,
++ PAGE_CACHE_SIZE);
++
++ yaffs_GrossUnlock(dev);
++
++ if (ret >= 0)
++ ret = 0;
++
++ if (ret) {
++ ClearPageUptodate(pg);
++ SetPageError(pg);
++ } else {
++ SetPageUptodate(pg);
++ ClearPageError(pg);
++ }
++
++ flush_dcache_page(pg);
++ kunmap(pg);
++
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_readpage done\n"));
++ return ret;
++}
++
++static int yaffs_readpage_unlock(struct file *f, struct page *pg)
++{
++ int ret = yaffs_readpage_nolock(f, pg);
++ UnlockPage(pg);
++ return ret;
++}
++
++static int yaffs_readpage(struct file *f, struct page *pg)
++{
++ return yaffs_readpage_unlock(f, pg);
++}
++
++/* writepage inspired by/stolen from smbfs */
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++static int yaffs_writepage(struct page *page, struct writeback_control *wbc)
++#else
++static int yaffs_writepage(struct page *page)
++#endif
++{
++ struct address_space *mapping = page->mapping;
++ loff_t offset = (loff_t) page->index << PAGE_CACHE_SHIFT;
++ struct inode *inode;
++ unsigned long end_index;
++ char *buffer;
++ yaffs_Object *obj;
++ int nWritten = 0;
++ unsigned nBytes;
++
++ if (!mapping)
++ BUG();
++ inode = mapping->host;
++ if (!inode)
++ BUG();
++
++ if (offset > inode->i_size) {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG
++ "yaffs_writepage at %08x, inode size = %08x!!!\n",
++ (unsigned)(page->index << PAGE_CACHE_SHIFT),
++ (unsigned)inode->i_size));
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG " -> don't care!!\n"));
++ unlock_page(page);
++ return 0;
++ }
++
++ end_index = inode->i_size >> PAGE_CACHE_SHIFT;
++
++ /* easy case */
++ if (page->index < end_index) {
++ nBytes = PAGE_CACHE_SIZE;
++ } else {
++ nBytes = inode->i_size & (PAGE_CACHE_SIZE - 1);
++ }
++
++ get_page(page);
++
++ buffer = kmap(page);
++
++ obj = yaffs_InodeToObject(inode);
++ yaffs_GrossLock(obj->myDev);
++
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_writepage at %08x, size %08x\n",
++ (unsigned)(page->index << PAGE_CACHE_SHIFT), nBytes));
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "writepag0: obj = %05x, ino = %05x\n",
++ (int)obj->variant.fileVariant.fileSize, (int)inode->i_size));
++
++ nWritten =
++ yaffs_WriteDataToFile(obj, buffer, page->index << PAGE_CACHE_SHIFT,
++ nBytes, 0);
++
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "writepag1: obj = %05x, ino = %05x\n",
++ (int)obj->variant.fileVariant.fileSize, (int)inode->i_size));
++
++ yaffs_GrossUnlock(obj->myDev);
++
++ kunmap(page);
++ SetPageUptodate(page);
++ UnlockPage(page);
++ put_page(page);
++
++ return (nWritten == nBytes) ? 0 : -ENOSPC;
++}
++
++static int yaffs_prepare_write(struct file *f, struct page *pg,
++ unsigned offset, unsigned to)
++{
++
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_prepair_write\n"));
++ if (!Page_Uptodate(pg) && (offset || to < PAGE_CACHE_SIZE))
++ return yaffs_readpage_nolock(f, pg);
++
++ return 0;
++
++}
++
++static int yaffs_commit_write(struct file *f, struct page *pg, unsigned offset,
++ unsigned to)
++{
++
++ void *addr = page_address(pg) + offset;
++ loff_t pos = (((loff_t) pg->index) << PAGE_CACHE_SHIFT) + offset;
++ int nBytes = to - offset;
++ int nWritten;
++
++ unsigned spos = pos;
++ unsigned saddr = (unsigned)addr;
++
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_commit_write addr %x pos %x nBytes %d\n", saddr,
++ spos, nBytes));
++
++ nWritten = yaffs_file_write(f, addr, nBytes, &pos);
++
++ if (nWritten != nBytes) {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG
++ "yaffs_commit_write not same size nWritten %d nBytes %d\n",
++ nWritten, nBytes));
++ SetPageError(pg);
++ ClearPageUptodate(pg);
++ } else {
++ SetPageUptodate(pg);
++ }
++
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_commit_write returning %d\n",
++ nWritten == nBytes ? 0 : nWritten));
++
++ return nWritten == nBytes ? 0 : nWritten;
++
++}
++
++static void yaffs_FillInodeFromObject(struct inode *inode, yaffs_Object * obj)
++{
++ if (inode && obj) {
++
++
++ /* Check mode against the variant type and attempt to repair if broken. */
++ __u32 mode = obj->yst_mode;
++ switch( obj->variantType ){
++ case YAFFS_OBJECT_TYPE_FILE :
++ if( ! S_ISREG(mode) ){
++ obj->yst_mode &= ~S_IFMT;
++ obj->yst_mode |= S_IFREG;
++ }
++
++ break;
++ case YAFFS_OBJECT_TYPE_SYMLINK :
++ if( ! S_ISLNK(mode) ){
++ obj->yst_mode &= ~S_IFMT;
++ obj->yst_mode |= S_IFLNK;
++ }
++
++ break;
++ case YAFFS_OBJECT_TYPE_DIRECTORY :
++ if( ! S_ISDIR(mode) ){
++ obj->yst_mode &= ~S_IFMT;
++ obj->yst_mode |= S_IFDIR;
++ }
++
++ break;
++ case YAFFS_OBJECT_TYPE_UNKNOWN :
++ case YAFFS_OBJECT_TYPE_HARDLINK :
++ case YAFFS_OBJECT_TYPE_SPECIAL :
++ default:
++ /* TODO? */
++ break;
++ }
++
++ inode->i_ino = obj->objectId;
++ inode->i_mode = obj->yst_mode;
++ inode->i_uid = obj->yst_uid;
++ inode->i_gid = obj->yst_gid;
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19))
++ inode->i_blksize = inode->i_sb->s_blocksize;
++#endif
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++
++ inode->i_rdev = old_decode_dev(obj->yst_rdev);
++ inode->i_atime.tv_sec = (time_t) (obj->yst_atime);
++ inode->i_atime.tv_nsec = 0;
++ inode->i_mtime.tv_sec = (time_t) obj->yst_mtime;
++ inode->i_mtime.tv_nsec = 0;
++ inode->i_ctime.tv_sec = (time_t) obj->yst_ctime;
++ inode->i_ctime.tv_nsec = 0;
++#else
++ inode->i_rdev = obj->yst_rdev;
++ inode->i_atime = obj->yst_atime;
++ inode->i_mtime = obj->yst_mtime;
++ inode->i_ctime = obj->yst_ctime;
++#endif
++ inode->i_size = yaffs_GetObjectFileLength(obj);
++ inode->i_blocks = (inode->i_size + 511) >> 9;
++
++ inode->i_nlink = yaffs_GetObjectLinkCount(obj);
++
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG
++ "yaffs_FillInode mode %x uid %d gid %d size %d count %d\n",
++ inode->i_mode, inode->i_uid, inode->i_gid,
++ (int)inode->i_size, atomic_read(&inode->i_count)));
++
++ switch (obj->yst_mode & S_IFMT) {
++ default: /* fifo, device or socket */
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++ init_special_inode(inode, obj->yst_mode,
++ old_decode_dev(obj->yst_rdev));
++#else
++ init_special_inode(inode, obj->yst_mode,
++ (dev_t) (obj->yst_rdev));
++#endif
++ break;
++ case S_IFREG: /* file */
++ inode->i_op = &yaffs_file_inode_operations;
++ inode->i_fop = &yaffs_file_operations;
++ inode->i_mapping->a_ops =
++ &yaffs_file_address_operations;
++ break;
++ case S_IFDIR: /* directory */
++ inode->i_op = &yaffs_dir_inode_operations;
++ inode->i_fop = &yaffs_dir_operations;
++ break;
++ case S_IFLNK: /* symlink */
++ inode->i_op = &yaffs_symlink_inode_operations;
++ break;
++ }
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18))
++ inode->i_private = obj;
++#else
++ inode->u.generic_ip = obj;
++#endif
++ obj->myInode = inode;
++
++ } else {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_FileInode invalid parameters\n"));
++ }
++
++}
++
++struct inode *yaffs_get_inode(struct super_block *sb, int mode, int dev,
++ yaffs_Object * obj)
++{
++ struct inode *inode;
++
++ if (!sb) {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_get_inode for NULL super_block!!\n"));
++ return NULL;
++
++ }
++
++ if (!obj) {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_get_inode for NULL object!!\n"));
++ return NULL;
++
++ }
++
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_get_inode for object %d\n", obj->objectId));
++
++ inode = iget(sb, obj->objectId);
++
++ /* NB Side effect: iget calls back to yaffs_read_inode(). */
++ /* iget also increments the inode's i_count */
++ /* NB You can't be holding grossLock or deadlock will happen! */
++
++ return inode;
++}
++
++static ssize_t yaffs_file_write(struct file *f, const char *buf, size_t n,
++ loff_t * pos)
++{
++ yaffs_Object *obj;
++ int nWritten, ipos;
++ struct inode *inode;
++ yaffs_Device *dev;
++
++ obj = yaffs_DentryToObject(f->f_dentry);
++
++ dev = obj->myDev;
++
++ yaffs_GrossLock(dev);
++
++ inode = f->f_dentry->d_inode;
++
++ if (!S_ISBLK(inode->i_mode) && f->f_flags & O_APPEND) {
++ ipos = inode->i_size;
++ } else {
++ ipos = *pos;
++ }
++
++ if (!obj) {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_file_write: hey obj is null!\n"));
++ } else {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG
++ "yaffs_file_write about to write writing %d bytes"
++ "to object %d at %d\n",
++ n, obj->objectId, ipos));
++ }
++
++ nWritten = yaffs_WriteDataToFile(obj, buf, ipos, n, 0);
++
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_file_write writing %d bytes, %d written at %d\n",
++ n, nWritten, ipos));
++ if (nWritten > 0) {
++ ipos += nWritten;
++ *pos = ipos;
++ if (ipos > inode->i_size) {
++ inode->i_size = ipos;
++ inode->i_blocks = (ipos + 511) >> 9;
++
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG
++ "yaffs_file_write size updated to %d bytes, "
++ "%d blocks\n",
++ ipos, (int)(inode->i_blocks)));
++ }
++
++ }
++ yaffs_GrossUnlock(dev);
++ return nWritten == 0 ? -ENOSPC : nWritten;
++}
++
++static int yaffs_readdir(struct file *f, void *dirent, filldir_t filldir)
++{
++ yaffs_Object *obj;
++ yaffs_Device *dev;
++ struct inode *inode = f->f_dentry->d_inode;
++ unsigned long offset, curoffs;
++ struct list_head *i;
++ yaffs_Object *l;
++
++ char name[YAFFS_MAX_NAME_LENGTH + 1];
++
++ obj = yaffs_DentryToObject(f->f_dentry);
++ dev = obj->myDev;
++
++ yaffs_GrossLock(dev);
++
++ offset = f->f_pos;
++
++ T(YAFFS_TRACE_OS, ("yaffs_readdir: starting at %d\n", (int)offset));
++
++ if (offset == 0) {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_readdir: entry . ino %d \n",
++ (int)inode->i_ino));
++ if (filldir(dirent, ".", 1, offset, inode->i_ino, DT_DIR)
++ < 0) {
++ goto out;
++ }
++ offset++;
++ f->f_pos++;
++ }
++ if (offset == 1) {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_readdir: entry .. ino %d \n",
++ (int)f->f_dentry->d_parent->d_inode->i_ino));
++ if (filldir
++ (dirent, "..", 2, offset,
++ f->f_dentry->d_parent->d_inode->i_ino, DT_DIR) < 0) {
++ goto out;
++ }
++ offset++;
++ f->f_pos++;
++ }
++
++ curoffs = 1;
++
++ /* If the directory has changed since the open or last call to
++ readdir, rewind to after the 2 canned entries. */
++
++ if (f->f_version != inode->i_version) {
++ offset = 2;
++ f->f_pos = offset;
++ f->f_version = inode->i_version;
++ }
++
++ list_for_each(i, &obj->variant.directoryVariant.children) {
++ curoffs++;
++ if (curoffs >= offset) {
++ l = list_entry(i, yaffs_Object, siblings);
++
++ yaffs_GetObjectName(l, name,
++ YAFFS_MAX_NAME_LENGTH + 1);
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_readdir: %s inode %d\n", name,
++ yaffs_GetObjectInode(l)));
++
++ if (filldir(dirent,
++ name,
++ strlen(name),
++ offset,
++ yaffs_GetObjectInode(l),
++ yaffs_GetObjectType(l))
++ < 0) {
++ goto up_and_out;
++ }
++
++ offset++;
++ f->f_pos++;
++ }
++ }
++
++ up_and_out:
++ out:
++
++ yaffs_GrossUnlock(dev);
++
++ return 0;
++}
++
++/*
++ * File creation. Allocate an inode, and we're done..
++ */
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++static int yaffs_mknod(struct inode *dir, struct dentry *dentry, int mode,
++ dev_t rdev)
++#else
++static int yaffs_mknod(struct inode *dir, struct dentry *dentry, int mode,
++ int rdev)
++#endif
++{
++ struct inode *inode;
++
++ yaffs_Object *obj = NULL;
++ yaffs_Device *dev;
++
++ yaffs_Object *parent = yaffs_InodeToObject(dir);
++
++ int error = -ENOSPC;
++ uid_t uid = current->fsuid;
++ gid_t gid = (dir->i_mode & S_ISGID) ? dir->i_gid : current->fsgid;
++
++ if((dir->i_mode & S_ISGID) && S_ISDIR(mode))
++ mode |= S_ISGID;
++
++ if (parent) {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_mknod: parent object %d type %d\n",
++ parent->objectId, parent->variantType));
++ } else {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_mknod: could not get parent object\n"));
++ return -EPERM;
++ }
++
++ T(YAFFS_TRACE_OS, ("yaffs_mknod: making oject for %s, "
++ "mode %x dev %x\n",
++ dentry->d_name.name, mode, rdev));
++
++ dev = parent->myDev;
++
++ yaffs_GrossLock(dev);
++
++ switch (mode & S_IFMT) {
++ default:
++ /* Special (socket, fifo, device...) */
++ T(YAFFS_TRACE_OS, (KERN_DEBUG
++ "yaffs_mknod: making special\n"));
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++ obj =
++ yaffs_MknodSpecial(parent, dentry->d_name.name, mode, uid,
++ gid, old_encode_dev(rdev));
++#else
++ obj =
++ yaffs_MknodSpecial(parent, dentry->d_name.name, mode, uid,
++ gid, rdev);
++#endif
++ break;
++ case S_IFREG: /* file */
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_mknod: making file\n"));
++ obj =
++ yaffs_MknodFile(parent, dentry->d_name.name, mode, uid,
++ gid);
++ break;
++ case S_IFDIR: /* directory */
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_mknod: making directory\n"));
++ obj =
++ yaffs_MknodDirectory(parent, dentry->d_name.name, mode,
++ uid, gid);
++ break;
++ case S_IFLNK: /* symlink */
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_mknod: making file\n"));
++ obj = NULL; /* Do we ever get here? */
++ break;
++ }
++
++ /* Can not call yaffs_get_inode() with gross lock held */
++ yaffs_GrossUnlock(dev);
++
++ if (obj) {
++ inode = yaffs_get_inode(dir->i_sb, mode, rdev, obj);
++ d_instantiate(dentry, inode);
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_mknod created object %d count = %d\n",
++ obj->objectId, atomic_read(&inode->i_count)));
++ error = 0;
++ } else {
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_mknod failed making object\n"));
++ error = -ENOMEM;
++ }
++
++ return error;
++}
++
++static int yaffs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
++{
++ int retVal;
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_mkdir\n"));
++ retVal = yaffs_mknod(dir, dentry, mode | S_IFDIR, 0);
++#if 0
++ /* attempt to fix dir bug - didn't work */
++ if (!retVal) {
++ dget(dentry);
++ }
++#endif
++ return retVal;
++}
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++static int yaffs_create(struct inode *dir, struct dentry *dentry, int mode,
++ struct nameidata *n)
++#else
++static int yaffs_create(struct inode *dir, struct dentry *dentry, int mode)
++#endif
++{
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_create\n"));
++ return yaffs_mknod(dir, dentry, mode | S_IFREG, 0);
++}
++
++static int yaffs_unlink(struct inode *dir, struct dentry *dentry)
++{
++ int retVal;
++
++ yaffs_Device *dev;
++
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_unlink %d:%s\n", (int)(dir->i_ino),
++ dentry->d_name.name));
++
++ dev = yaffs_InodeToObject(dir)->myDev;
++
++ yaffs_GrossLock(dev);
++
++ retVal = yaffs_Unlink(yaffs_InodeToObject(dir), dentry->d_name.name);
++
++ if (retVal == YAFFS_OK) {
++ dentry->d_inode->i_nlink--;
++ dir->i_version++;
++ yaffs_GrossUnlock(dev);
++ mark_inode_dirty(dentry->d_inode);
++ return 0;
++ }
++ yaffs_GrossUnlock(dev);
++ return -ENOTEMPTY;
++}
++
++/*
++ * Create a link...
++ */
++static int yaffs_link(struct dentry *old_dentry, struct inode *dir,
++ struct dentry *dentry)
++{
++ struct inode *inode = old_dentry->d_inode;
++ yaffs_Object *obj = NULL;
++ yaffs_Object *link = NULL;
++ yaffs_Device *dev;
++
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_link\n"));
++
++ obj = yaffs_InodeToObject(inode);
++ dev = obj->myDev;
++
++ yaffs_GrossLock(dev);
++
++ if (!S_ISDIR(inode->i_mode)) /* Don't link directories */
++ {
++ link =
++ yaffs_Link(yaffs_InodeToObject(dir), dentry->d_name.name,
++ obj);
++ }
++
++ if (link) {
++ old_dentry->d_inode->i_nlink = yaffs_GetObjectLinkCount(obj);
++ d_instantiate(dentry, old_dentry->d_inode);
++ atomic_inc(&old_dentry->d_inode->i_count);
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_link link count %d i_count %d\n",
++ old_dentry->d_inode->i_nlink,
++ atomic_read(&old_dentry->d_inode->i_count)));
++
++ }
++
++ yaffs_GrossUnlock(dev);
++
++ if (link) {
++
++ return 0;
++ }
++
++ return -EPERM;
++}
++
++static int yaffs_symlink(struct inode *dir, struct dentry *dentry,
++ const char *symname)
++{
++ yaffs_Object *obj;
++ yaffs_Device *dev;
++ uid_t uid = current->fsuid;
++ gid_t gid = (dir->i_mode & S_ISGID) ? dir->i_gid : current->fsgid;
++
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_symlink\n"));
++
++ dev = yaffs_InodeToObject(dir)->myDev;
++ yaffs_GrossLock(dev);
++ obj = yaffs_MknodSymLink(yaffs_InodeToObject(dir), dentry->d_name.name,
++ S_IFLNK | S_IRWXUGO, uid, gid, symname);
++ yaffs_GrossUnlock(dev);
++
++ if (obj) {
++
++ struct inode *inode;
++
++ inode = yaffs_get_inode(dir->i_sb, obj->yst_mode, 0, obj);
++ d_instantiate(dentry, inode);
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "symlink created OK\n"));
++ return 0;
++ } else {
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "symlink not created\n"));
++
++ }
++
++ return -ENOMEM;
++}
++
++static int yaffs_sync_object(struct file *file, struct dentry *dentry,
++ int datasync)
++{
++
++ yaffs_Object *obj;
++ yaffs_Device *dev;
++
++ obj = yaffs_DentryToObject(dentry);
++
++ dev = obj->myDev;
++
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_sync_object\n"));
++ yaffs_GrossLock(dev);
++ yaffs_FlushFile(obj, 1);
++ yaffs_GrossUnlock(dev);
++ return 0;
++}
++
++/*
++ * The VFS layer already does all the dentry stuff for rename.
++ *
++ * NB: POSIX says you can rename an object over an old object of the same name
++ */
++static int yaffs_rename(struct inode *old_dir, struct dentry *old_dentry,
++ struct inode *new_dir, struct dentry *new_dentry)
++{
++ yaffs_Device *dev;
++ int retVal = YAFFS_FAIL;
++ yaffs_Object *target;
++
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_rename\n"));
++ dev = yaffs_InodeToObject(old_dir)->myDev;
++
++ yaffs_GrossLock(dev);
++
++ /* Check if the target is an existing directory that is not empty. */
++ target =
++ yaffs_FindObjectByName(yaffs_InodeToObject(new_dir),
++ new_dentry->d_name.name);
++
++
++
++ if (target &&
++ target->variantType == YAFFS_OBJECT_TYPE_DIRECTORY &&
++ !list_empty(&target->variant.directoryVariant.children)) {
++
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "target is non-empty dir\n"));
++
++ retVal = YAFFS_FAIL;
++ } else {
++
++ /* Now does unlinking internally using shadowing mechanism */
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "calling yaffs_RenameObject\n"));
++
++ retVal =
++ yaffs_RenameObject(yaffs_InodeToObject(old_dir),
++ old_dentry->d_name.name,
++ yaffs_InodeToObject(new_dir),
++ new_dentry->d_name.name);
++
++ }
++ yaffs_GrossUnlock(dev);
++
++ if (retVal == YAFFS_OK) {
++ if(target) {
++ new_dentry->d_inode->i_nlink--;
++ mark_inode_dirty(new_dentry->d_inode);
++ }
++
++ return 0;
++ } else {
++ return -ENOTEMPTY;
++ }
++
++}
++
++static int yaffs_setattr(struct dentry *dentry, struct iattr *attr)
++{
++ struct inode *inode = dentry->d_inode;
++ int error;
++ yaffs_Device *dev;
++
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_setattr of object %d\n",
++ yaffs_InodeToObject(inode)->objectId));
++
++ if ((error = inode_change_ok(inode, attr)) == 0) {
++
++ dev = yaffs_InodeToObject(inode)->myDev;
++ yaffs_GrossLock(dev);
++ if (yaffs_SetAttributes(yaffs_InodeToObject(inode), attr) ==
++ YAFFS_OK) {
++ error = 0;
++ } else {
++ error = -EPERM;
++ }
++ yaffs_GrossUnlock(dev);
++ if (!error)
++ error = inode_setattr(inode, attr);
++ }
++ return error;
++}
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++static int yaffs_statfs(struct dentry *dentry, struct kstatfs *buf)
++{
++ yaffs_Device *dev = yaffs_DentryToObject(dentry)->myDev;
++ struct super_block *sb = dentry->d_sb;
++#elif (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++static int yaffs_statfs(struct super_block *sb, struct kstatfs *buf)
++{
++ yaffs_Device *dev = yaffs_SuperToDevice(sb);
++#else
++static int yaffs_statfs(struct super_block *sb, struct statfs *buf)
++{
++ yaffs_Device *dev = yaffs_SuperToDevice(sb);
++#endif
++
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_statfs\n"));
++
++ yaffs_GrossLock(dev);
++
++ buf->f_type = YAFFS_MAGIC;
++ buf->f_bsize = sb->s_blocksize;
++ buf->f_namelen = 255;
++ if (sb->s_blocksize > dev->nDataBytesPerChunk) {
++
++ buf->f_blocks =
++ (dev->endBlock - dev->startBlock +
++ 1) * dev->nChunksPerBlock / (sb->s_blocksize /
++ dev->nDataBytesPerChunk);
++ buf->f_bfree =
++ yaffs_GetNumberOfFreeChunks(dev) / (sb->s_blocksize /
++ dev->nDataBytesPerChunk);
++ } else {
++
++ buf->f_blocks =
++ (dev->endBlock - dev->startBlock +
++ 1) * dev->nChunksPerBlock * (dev->nDataBytesPerChunk /
++ sb->s_blocksize);
++ buf->f_bfree =
++ yaffs_GetNumberOfFreeChunks(dev) * (dev->nDataBytesPerChunk /
++ sb->s_blocksize);
++ }
++ buf->f_files = 0;
++ buf->f_ffree = 0;
++ buf->f_bavail = buf->f_bfree;
++
++ yaffs_GrossUnlock(dev);
++ return 0;
++}
++
++
++
++static int yaffs_do_sync_fs(struct super_block *sb)
++{
++
++ yaffs_Device *dev = yaffs_SuperToDevice(sb);
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_do_sync_fs\n"));
++
++ if(sb->s_dirt) {
++ yaffs_GrossLock(dev);
++
++ if(dev)
++ yaffs_CheckpointSave(dev);
++
++ yaffs_GrossUnlock(dev);
++
++ sb->s_dirt = 0;
++ }
++ return 0;
++}
++
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++static void yaffs_write_super(struct super_block *sb)
++#else
++static int yaffs_write_super(struct super_block *sb)
++#endif
++{
++
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_write_super\n"));
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18))
++ return 0; /* yaffs_do_sync_fs(sb);*/
++#endif
++}
++
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++static int yaffs_sync_fs(struct super_block *sb, int wait)
++#else
++static int yaffs_sync_fs(struct super_block *sb)
++#endif
++{
++
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_sync_fs\n"));
++
++ return 0; /* yaffs_do_sync_fs(sb);*/
++
++}
++
++
++static void yaffs_read_inode(struct inode *inode)
++{
++ /* NB This is called as a side effect of other functions, but
++ * we had to release the lock to prevent deadlocks, so
++ * need to lock again.
++ */
++
++ yaffs_Object *obj;
++ yaffs_Device *dev = yaffs_SuperToDevice(inode->i_sb);
++
++ T(YAFFS_TRACE_OS,
++ (KERN_DEBUG "yaffs_read_inode for %d\n", (int)inode->i_ino));
++
++ yaffs_GrossLock(dev);
++
++ obj = yaffs_FindObjectByNumber(dev, inode->i_ino);
++
++ yaffs_FillInodeFromObject(inode, obj);
++
++ yaffs_GrossUnlock(dev);
++}
++
++static LIST_HEAD(yaffs_dev_list);
++
++static void yaffs_put_super(struct super_block *sb)
++{
++ yaffs_Device *dev = yaffs_SuperToDevice(sb);
++
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_put_super\n"));
++
++ yaffs_GrossLock(dev);
++
++ yaffs_FlushEntireDeviceCache(dev);
++
++ if (dev->putSuperFunc) {
++ dev->putSuperFunc(sb);
++ }
++
++ yaffs_CheckpointSave(dev);
++ yaffs_Deinitialise(dev);
++
++ yaffs_GrossUnlock(dev);
++
++ /* we assume this is protected by lock_kernel() in mount/umount */
++ list_del(&dev->devList);
++
++ if(dev->spareBuffer){
++ YFREE(dev->spareBuffer);
++ dev->spareBuffer = NULL;
++ }
++
++ kfree(dev);
++}
++
++
++static void yaffs_MTDPutSuper(struct super_block *sb)
++{
++
++ struct mtd_info *mtd = yaffs_SuperToDevice(sb)->genericDevice;
++
++ if (mtd->sync) {
++ mtd->sync(mtd);
++ }
++
++ put_mtd_device(mtd);
++}
++
++
++static void yaffs_MarkSuperBlockDirty(void *vsb)
++{
++ struct super_block *sb = (struct super_block *)vsb;
++
++ T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_MarkSuperBlockDirty() sb = %p\n",sb));
++// if(sb)
++// sb->s_dirt = 1;
++}
++
++static struct super_block *yaffs_internal_read_super(int yaffsVersion,
++ struct super_block *sb,
++ void *data, int silent)
++{
++ int nBlocks;
++ struct inode *inode = NULL;
++ struct dentry *root;
++ yaffs_Device *dev = 0;
++ char devname_buf[BDEVNAME_SIZE + 1];
++ struct mtd_info *mtd;
++ int err;
++
++ sb->s_magic = YAFFS_MAGIC;
++ sb->s_op = &yaffs_super_ops;
++
++ if (!sb)
++ printk(KERN_INFO "yaffs: sb is NULL\n");
++ else if (!sb->s_dev)
++ printk(KERN_INFO "yaffs: sb->s_dev is NULL\n");
++ else if (!yaffs_devname(sb, devname_buf))
++ printk(KERN_INFO "yaffs: devname is NULL\n");
++ else
++ printk(KERN_INFO "yaffs: dev is %d name is \"%s\"\n",
++ sb->s_dev,
++ yaffs_devname(sb, devname_buf));
++
++ sb->s_blocksize = PAGE_CACHE_SIZE;
++ sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
++ T(YAFFS_TRACE_OS, ("yaffs_read_super: Using yaffs%d\n", yaffsVersion));
++ T(YAFFS_TRACE_OS,
++ ("yaffs_read_super: block size %d\n", (int)(sb->s_blocksize)));
++
++#ifdef CONFIG_YAFFS_DISABLE_WRITE_VERIFY
++ T(YAFFS_TRACE_OS,
++ ("yaffs: Write verification disabled. All guarantees "
++ "null and void\n"));
++#endif
++
++ T(YAFFS_TRACE_ALWAYS, ("yaffs: Attempting MTD mount on %u.%u, "
++ "\"%s\"\n",
++ MAJOR(sb->s_dev), MINOR(sb->s_dev),
++ yaffs_devname(sb, devname_buf)));
++
++ /* Check it's an mtd device..... */
++ if (MAJOR(sb->s_dev) != MTD_BLOCK_MAJOR) {
++ return NULL; /* This isn't an mtd device */
++ }
++ /* Get the device */
++ mtd = get_mtd_device(NULL, MINOR(sb->s_dev));
++ if (!mtd) {
++ T(YAFFS_TRACE_ALWAYS,
++ ("yaffs: MTD device #%u doesn't appear to exist\n",
++ MINOR(sb->s_dev)));
++ return NULL;
++ }
++ /* Check it's NAND */
++ if (mtd->type != MTD_NANDFLASH) {
++ T(YAFFS_TRACE_ALWAYS,
++ ("yaffs: MTD device is not NAND it's type %d\n", mtd->type));
++ return NULL;
++ }
++
++ T(YAFFS_TRACE_OS, (" erase %p\n", mtd->erase));
++ T(YAFFS_TRACE_OS, (" read %p\n", mtd->read));
++ T(YAFFS_TRACE_OS, (" write %p\n", mtd->write));
++ T(YAFFS_TRACE_OS, (" readoob %p\n", mtd->read_oob));
++ T(YAFFS_TRACE_OS, (" writeoob %p\n", mtd->write_oob));
++ T(YAFFS_TRACE_OS, (" block_isbad %p\n", mtd->block_isbad));
++ T(YAFFS_TRACE_OS, (" block_markbad %p\n", mtd->block_markbad));
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ T(YAFFS_TRACE_OS, (" writesize %d\n", mtd->writesize));
++#else
++ T(YAFFS_TRACE_OS, (" oobblock %d\n", mtd->oobblock));
++#endif
++ T(YAFFS_TRACE_OS, (" oobsize %d\n", mtd->oobsize));
++ T(YAFFS_TRACE_OS, (" erasesize %d\n", mtd->erasesize));
++ T(YAFFS_TRACE_OS, (" size %d\n", mtd->size));
++
++#ifdef CONFIG_YAFFS_AUTO_YAFFS2
++
++ if (yaffsVersion == 1 &&
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ mtd->writesize >= 2048) {
++#else
++ mtd->oobblock >= 2048) {
++#endif
++ T(YAFFS_TRACE_ALWAYS,("yaffs: auto selecting yaffs2\n"));
++ yaffsVersion = 2;
++ }
++
++ /* Added NCB 26/5/2006 for completeness */
++ if (yaffsVersion == 2 &&
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ mtd->writesize == 512) {
++#else
++ mtd->oobblock == 512) {
++#endif
++ T(YAFFS_TRACE_ALWAYS,("yaffs: auto selecting yaffs1\n"));
++ yaffsVersion = 1;
++ }
++
++#endif
++
++ if (yaffsVersion == 2) {
++ /* Check for version 2 style functions */
++ if (!mtd->erase ||
++ !mtd->block_isbad ||
++ !mtd->block_markbad ||
++ !mtd->read ||
++ !mtd->write ||
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ !mtd->read_oob || !mtd->write_oob) {
++#else
++ !mtd->write_ecc ||
++ !mtd->read_ecc || !mtd->read_oob || !mtd->write_oob) {
++#endif
++ T(YAFFS_TRACE_ALWAYS,
++ ("yaffs: MTD device does not support required "
++ "functions\n"));;
++ return NULL;
++ }
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ if (mtd->writesize < YAFFS_MIN_YAFFS2_CHUNK_SIZE ||
++#else
++ if (mtd->oobblock < YAFFS_MIN_YAFFS2_CHUNK_SIZE ||
++#endif
++ mtd->oobsize < YAFFS_MIN_YAFFS2_SPARE_SIZE) {
++ T(YAFFS_TRACE_ALWAYS,
++ ("yaffs: MTD device does not have the "
++ "right page sizes\n"));
++ return NULL;
++ }
++ } else {
++ /* Check for V1 style functions */
++ if (!mtd->erase ||
++ !mtd->read ||
++ !mtd->write ||
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ !mtd->read_oob || !mtd->write_oob) {
++#else
++ !mtd->write_ecc ||
++ !mtd->read_ecc || !mtd->read_oob || !mtd->write_oob) {
++#endif
++ T(YAFFS_TRACE_ALWAYS,
++ ("yaffs: MTD device does not support required "
++ "functions\n"));;
++ return NULL;
++ }
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ if (mtd->writesize < YAFFS_BYTES_PER_CHUNK ||
++#else
++ if (mtd->oobblock < YAFFS_BYTES_PER_CHUNK ||
++#endif
++ mtd->oobsize != YAFFS_BYTES_PER_SPARE) {
++ T(YAFFS_TRACE_ALWAYS,
++ ("yaffs: MTD device does not support have the "
++ "right page sizes\n"));
++ return NULL;
++ }
++ }
++
++ /* OK, so if we got here, we have an MTD that's NAND and looks
++ * like it has the right capabilities
++ * Set the yaffs_Device up for mtd
++ */
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++ sb->s_fs_info = dev = kmalloc(sizeof(yaffs_Device), GFP_KERNEL);
++#else
++ sb->u.generic_sbp = dev = kmalloc(sizeof(yaffs_Device), GFP_KERNEL);
++#endif
++ if (!dev) {
++ /* Deep shit could not allocate device structure */
++ T(YAFFS_TRACE_ALWAYS,
++ ("yaffs_read_super: Failed trying to allocate "
++ "yaffs_Device. \n"));
++ return NULL;
++ }
++
++ memset(dev, 0, sizeof(yaffs_Device));
++ dev->genericDevice = mtd;
++ dev->name = mtd->name;
++
++ /* Set up the memory size parameters.... */
++
++ nBlocks = mtd->size / (YAFFS_CHUNKS_PER_BLOCK * YAFFS_BYTES_PER_CHUNK);
++ dev->startBlock = 0;
++ dev->endBlock = nBlocks - 1;
++ dev->nChunksPerBlock = YAFFS_CHUNKS_PER_BLOCK;
++ dev->nDataBytesPerChunk = YAFFS_BYTES_PER_CHUNK;
++ dev->nReservedBlocks = 5;
++ dev->nShortOpCaches = 10; /* Enable short op caching */
++
++ /* ... and the functions. */
++ if (yaffsVersion == 2) {
++ dev->writeChunkWithTagsToNAND =
++ nandmtd2_WriteChunkWithTagsToNAND;
++ dev->readChunkWithTagsFromNAND =
++ nandmtd2_ReadChunkWithTagsFromNAND;
++ dev->markNANDBlockBad = nandmtd2_MarkNANDBlockBad;
++ dev->queryNANDBlock = nandmtd2_QueryNANDBlock;
++ dev->spareBuffer = YMALLOC(mtd->oobsize);
++ dev->isYaffs2 = 1;
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ dev->nDataBytesPerChunk = mtd->writesize;
++ dev->nChunksPerBlock = mtd->erasesize / mtd->writesize;
++#else
++ dev->nDataBytesPerChunk = mtd->oobblock;
++ dev->nChunksPerBlock = mtd->erasesize / mtd->oobblock;
++#endif
++ nBlocks = mtd->size / mtd->erasesize;
++
++ dev->nCheckpointReservedBlocks = 0;
++ dev->startBlock = 0;
++ dev->endBlock = nBlocks - 1;
++ } else {
++ dev->writeChunkToNAND = nandmtd_WriteChunkToNAND;
++ dev->readChunkFromNAND = nandmtd_ReadChunkFromNAND;
++ dev->isYaffs2 = 0;
++ }
++ /* ... and common functions */
++ dev->eraseBlockInNAND = nandmtd_EraseBlockInNAND;
++ dev->initialiseNAND = nandmtd_InitialiseNAND;
++
++ dev->putSuperFunc = yaffs_MTDPutSuper;
++
++ dev->superBlock = (void *)sb;
++ dev->markSuperBlockDirty = yaffs_MarkSuperBlockDirty;
++
++
++#ifndef CONFIG_YAFFS_DOES_ECC
++ dev->useNANDECC = 1;
++#endif
++
++#ifdef CONFIG_YAFFS_DISABLE_WIDE_TNODES
++ dev->wideTnodesDisabled = 1;
++#endif
++
++ /* we assume this is protected by lock_kernel() in mount/umount */
++ list_add_tail(&dev->devList, &yaffs_dev_list);
++
++ init_MUTEX(&dev->grossLock);
++
++ yaffs_GrossLock(dev);
++
++ err = yaffs_GutsInitialise(dev);
++
++ T(YAFFS_TRACE_OS,
++ ("yaffs_read_super: guts initialised %s\n",
++ (err == YAFFS_OK) ? "OK" : "FAILED"));
++
++ /* Release lock before yaffs_get_inode() */
++ yaffs_GrossUnlock(dev);
++
++ /* Create root inode */
++ if (err == YAFFS_OK)
++ inode = yaffs_get_inode(sb, S_IFDIR | 0755, 0,
++ yaffs_Root(dev));
++
++ if (!inode)
++ return NULL;
++
++ inode->i_op = &yaffs_dir_inode_operations;
++ inode->i_fop = &yaffs_dir_operations;
++
++ T(YAFFS_TRACE_OS, ("yaffs_read_super: got root inode\n"));
++
++ root = d_alloc_root(inode);
++
++ T(YAFFS_TRACE_OS, ("yaffs_read_super: d_alloc_root done\n"));
++
++ if (!root) {
++ iput(inode);
++ return NULL;
++ }
++ sb->s_root = root;
++
++ T(YAFFS_TRACE_OS, ("yaffs_read_super: done\n"));
++ return sb;
++}
++
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++static int yaffs_internal_read_super_mtd(struct super_block *sb, void *data,
++ int silent)
++{
++ return yaffs_internal_read_super(1, sb, data, silent) ? 0 : -EINVAL;
++}
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++static int yaffs_read_super(struct file_system_type *fs,
++ int flags, const char *dev_name,
++ void *data, struct vfsmount *mnt)
++{
++
++ return get_sb_bdev(fs, flags, dev_name, data,
++ yaffs_internal_read_super_mtd, mnt);
++}
++#else
++static struct super_block *yaffs_read_super(struct file_system_type *fs,
++ int flags, const char *dev_name,
++ void *data)
++{
++
++ return get_sb_bdev(fs, flags, dev_name, data,
++ yaffs_internal_read_super_mtd);
++}
++#endif
++
++static struct file_system_type yaffs_fs_type = {
++ .owner = THIS_MODULE,
++ .name = "yaffs",
++ .get_sb = yaffs_read_super,
++ .kill_sb = kill_block_super,
++ .fs_flags = FS_REQUIRES_DEV,
++};
++#else
++static struct super_block *yaffs_read_super(struct super_block *sb, void *data,
++ int silent)
++{
++ return yaffs_internal_read_super(1, sb, data, silent);
++}
++
++static DECLARE_FSTYPE(yaffs_fs_type, "yaffs", yaffs_read_super,
++ FS_REQUIRES_DEV);
++#endif
++
++
++#ifdef CONFIG_YAFFS_YAFFS2
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++static int yaffs2_internal_read_super_mtd(struct super_block *sb, void *data,
++ int silent)
++{
++ return yaffs_internal_read_super(2, sb, data, silent) ? 0 : -EINVAL;
++}
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++static int yaffs2_read_super(struct file_system_type *fs,
++ int flags, const char *dev_name, void *data,
++ struct vfsmount *mnt)
++{
++ return get_sb_bdev(fs, flags, dev_name, data,
++ yaffs2_internal_read_super_mtd, mnt);
++}
++#else
++static struct super_block *yaffs2_read_super(struct file_system_type *fs,
++ int flags, const char *dev_name,
++ void *data)
++{
++
++ return get_sb_bdev(fs, flags, dev_name, data,
++ yaffs2_internal_read_super_mtd);
++}
++#endif
++
++static struct file_system_type yaffs2_fs_type = {
++ .owner = THIS_MODULE,
++ .name = "yaffs2",
++ .get_sb = yaffs2_read_super,
++ .kill_sb = kill_block_super,
++ .fs_flags = FS_REQUIRES_DEV,
++};
++#else
++static struct super_block *yaffs2_read_super(struct super_block *sb,
++ void *data, int silent)
++{
++ return yaffs_internal_read_super(2, sb, data, silent);
++}
++
++static DECLARE_FSTYPE(yaffs2_fs_type, "yaffs2", yaffs2_read_super,
++ FS_REQUIRES_DEV);
++#endif
++
++#endif /* CONFIG_YAFFS_YAFFS2 */
++
++static struct proc_dir_entry *my_proc_entry;
++
++static char *yaffs_dump_dev(char *buf, yaffs_Device * dev)
++{
++ buf += sprintf(buf, "startBlock......... %d\n", dev->startBlock);
++ buf += sprintf(buf, "endBlock........... %d\n", dev->endBlock);
++ buf += sprintf(buf, "chunkGroupBits..... %d\n", dev->chunkGroupBits);
++ buf += sprintf(buf, "chunkGroupSize..... %d\n", dev->chunkGroupSize);
++ buf += sprintf(buf, "nErasedBlocks...... %d\n", dev->nErasedBlocks);
++ buf += sprintf(buf, "nTnodesCreated..... %d\n", dev->nTnodesCreated);
++ buf += sprintf(buf, "nFreeTnodes........ %d\n", dev->nFreeTnodes);
++ buf += sprintf(buf, "nObjectsCreated.... %d\n", dev->nObjectsCreated);
++ buf += sprintf(buf, "nFreeObjects....... %d\n", dev->nFreeObjects);
++ buf += sprintf(buf, "nFreeChunks........ %d\n", dev->nFreeChunks);
++ buf += sprintf(buf, "nPageWrites........ %d\n", dev->nPageWrites);
++ buf += sprintf(buf, "nPageReads......... %d\n", dev->nPageReads);
++ buf += sprintf(buf, "nBlockErasures..... %d\n", dev->nBlockErasures);
++ buf += sprintf(buf, "nGCCopies.......... %d\n", dev->nGCCopies);
++ buf +=
++ sprintf(buf, "garbageCollections. %d\n", dev->garbageCollections);
++ buf +=
++ sprintf(buf, "passiveGCs......... %d\n",
++ dev->passiveGarbageCollections);
++ buf += sprintf(buf, "nRetriedWrites..... %d\n", dev->nRetriedWrites);
++ buf += sprintf(buf, "nRetireBlocks...... %d\n", dev->nRetiredBlocks);
++ buf += sprintf(buf, "eccFixed........... %d\n", dev->eccFixed);
++ buf += sprintf(buf, "eccUnfixed......... %d\n", dev->eccUnfixed);
++ buf += sprintf(buf, "tagsEccFixed....... %d\n", dev->tagsEccFixed);
++ buf += sprintf(buf, "tagsEccUnfixed..... %d\n", dev->tagsEccUnfixed);
++ buf += sprintf(buf, "cacheHits.......... %d\n", dev->cacheHits);
++ buf += sprintf(buf, "nDeletedFiles...... %d\n", dev->nDeletedFiles);
++ buf += sprintf(buf, "nUnlinkedFiles..... %d\n", dev->nUnlinkedFiles);
++ buf +=
++ sprintf(buf, "nBackgroudDeletions %d\n", dev->nBackgroundDeletions);
++ buf += sprintf(buf, "useNANDECC......... %d\n", dev->useNANDECC);
++ buf += sprintf(buf, "isYaffs2........... %d\n", dev->isYaffs2);
++
++ return buf;
++}
++
++static int yaffs_proc_read(char *page,
++ char **start,
++ off_t offset, int count, int *eof, void *data)
++{
++ struct list_head *item;
++ char *buf = page;
++ int step = offset;
++ int n = 0;
++
++ /* Get proc_file_read() to step 'offset' by one on each sucessive call.
++ * We use 'offset' (*ppos) to indicate where we are in devList.
++ * This also assumes the user has posted a read buffer large
++ * enough to hold the complete output; but that's life in /proc.
++ */
++
++ *(int *)start = 1;
++
++ /* Print header first */
++ if (step == 0) {
++ buf += sprintf(buf, "YAFFS built:" __DATE__ " " __TIME__
++ "\n%s\n%s\n", yaffs_fs_c_version,
++ yaffs_guts_c_version);
++ }
++
++ /* hold lock_kernel while traversing yaffs_dev_list */
++ lock_kernel();
++
++ /* Locate and print the Nth entry. Order N-squared but N is small. */
++ list_for_each(item, &yaffs_dev_list) {
++ yaffs_Device *dev = list_entry(item, yaffs_Device, devList);
++ if (n < step) {
++ n++;
++ continue;
++ }
++ buf += sprintf(buf, "\nDevice %d \"%s\"\n", n, dev->name);
++ buf = yaffs_dump_dev(buf, dev);
++ break;
++ }
++ unlock_kernel();
++
++ return buf - page < count ? buf - page : count;
++}
++
++/**
++ * Set the verbosity of the warnings and error messages.
++ *
++ */
++
++static struct {
++ char *mask_name;
++ unsigned mask_bitfield;
++} mask_flags[] = {
++ {"allocate", YAFFS_TRACE_ALLOCATE},
++ {"always", YAFFS_TRACE_ALWAYS},
++ {"bad_blocks", YAFFS_TRACE_BAD_BLOCKS},
++ {"buffers", YAFFS_TRACE_BUFFERS},
++ {"bug", YAFFS_TRACE_BUG},
++ {"deletion", YAFFS_TRACE_DELETION},
++ {"erase", YAFFS_TRACE_ERASE},
++ {"error", YAFFS_TRACE_ERROR},
++ {"gc_detail", YAFFS_TRACE_GC_DETAIL},
++ {"gc", YAFFS_TRACE_GC},
++ {"mtd", YAFFS_TRACE_MTD},
++ {"nandaccess", YAFFS_TRACE_NANDACCESS},
++ {"os", YAFFS_TRACE_OS},
++ {"scan_debug", YAFFS_TRACE_SCAN_DEBUG},
++ {"scan", YAFFS_TRACE_SCAN},
++ {"tracing", YAFFS_TRACE_TRACING},
++ {"write", YAFFS_TRACE_WRITE},
++ {"all", 0xffffffff},
++ {"none", 0},
++ {NULL, 0},
++};
++
++static int yaffs_proc_write(struct file *file, const char *buf,
++ unsigned long count, void *data)
++{
++ unsigned rg = 0, mask_bitfield;
++ char *end, *mask_name;
++ int i;
++ int done = 0;
++ int add, len;
++ int pos = 0;
++
++ rg = yaffs_traceMask;
++
++ while (!done && (pos < count)) {
++ done = 1;
++ while ((pos < count) && isspace(buf[pos])) {
++ pos++;
++ }
++
++ switch (buf[pos]) {
++ case '+':
++ case '-':
++ case '=':
++ add = buf[pos];
++ pos++;
++ break;
++
++ default:
++ add = ' ';
++ break;
++ }
++ mask_name = NULL;
++ mask_bitfield = simple_strtoul(buf + pos, &end, 0);
++ if (end > buf + pos) {
++ mask_name = "numeral";
++ len = end - (buf + pos);
++ done = 0;
++ } else {
++
++ for (i = 0; mask_flags[i].mask_name != NULL; i++) {
++ len = strlen(mask_flags[i].mask_name);
++ if (strncmp(buf + pos, mask_flags[i].mask_name, len) == 0) {
++ mask_name = mask_flags[i].mask_name;
++ mask_bitfield = mask_flags[i].mask_bitfield;
++ done = 0;
++ break;
++ }
++ }
++ }
++
++ if (mask_name != NULL) {
++ pos += len;
++ done = 0;
++ switch(add) {
++ case '-':
++ rg &= ~mask_bitfield;
++ break;
++ case '+':
++ rg |= mask_bitfield;
++ break;
++ case '=':
++ rg = mask_bitfield;
++ break;
++ default:
++ rg |= mask_bitfield;
++ break;
++ }
++ }
++ }
++
++ yaffs_traceMask = rg;
++ if (rg & YAFFS_TRACE_ALWAYS) {
++ for (i = 0; mask_flags[i].mask_name != NULL; i++) {
++ char flag;
++ flag = ((rg & mask_flags[i].mask_bitfield) == mask_flags[i].mask_bitfield) ? '+' : '-';
++ printk("%c%s\n", flag, mask_flags[i].mask_name);
++ }
++ }
++
++ return count;
++}
++
++/* Stuff to handle installation of file systems */
++struct file_system_to_install {
++ struct file_system_type *fst;
++ int installed;
++};
++
++static struct file_system_to_install fs_to_install[] = {
++//#ifdef CONFIG_YAFFS_YAFFS1
++ {&yaffs_fs_type, 0},
++//#endif
++//#ifdef CONFIG_YAFFS_YAFFS2
++ {&yaffs2_fs_type, 0},
++//#endif
++ {NULL, 0}
++};
++
++static int __init init_yaffs_fs(void)
++{
++ int error = 0;
++ struct file_system_to_install *fsinst;
++
++ T(YAFFS_TRACE_ALWAYS,
++ ("yaffs " __DATE__ " " __TIME__ " Installing. \n"));
++
++ /* Install the proc_fs entry */
++ my_proc_entry = create_proc_entry("yaffs",
++ S_IRUGO | S_IFREG,
++ &proc_root);
++
++ if (my_proc_entry) {
++ my_proc_entry->write_proc = yaffs_proc_write;
++ my_proc_entry->read_proc = yaffs_proc_read;
++ my_proc_entry->data = NULL;
++ } else {
++ return -ENOMEM;
++ }
++
++ /* Now add the file system entries */
++
++ fsinst = fs_to_install;
++
++ while (fsinst->fst && !error) {
++ error = register_filesystem(fsinst->fst);
++ if (!error) {
++ fsinst->installed = 1;
++ }
++ fsinst++;
++ }
++
++ /* Any errors? uninstall */
++ if (error) {
++ fsinst = fs_to_install;
++
++ while (fsinst->fst) {
++ if (fsinst->installed) {
++ unregister_filesystem(fsinst->fst);
++ fsinst->installed = 0;
++ }
++ fsinst++;
++ }
++ }
++
++ return error;
++}
++
++static void __exit exit_yaffs_fs(void)
++{
++
++ struct file_system_to_install *fsinst;
++
++ T(YAFFS_TRACE_ALWAYS, ("yaffs " __DATE__ " " __TIME__
++ " removing. \n"));
++
++ remove_proc_entry("yaffs", &proc_root);
++
++ fsinst = fs_to_install;
++
++ while (fsinst->fst) {
++ if (fsinst->installed) {
++ unregister_filesystem(fsinst->fst);
++ fsinst->installed = 0;
++ }
++ fsinst++;
++ }
++
++}
++
++module_init(init_yaffs_fs)
++module_exit(exit_yaffs_fs)
++
++MODULE_DESCRIPTION("YAFFS2 - a NAND specific flash file system");
++MODULE_AUTHOR("Charles Manning, Aleph One Ltd., 2002-2006");
++MODULE_LICENSE("GPL");
+diff -urN linux.old/fs/yaffs2/yaffs_guts.c linux.dev/fs/yaffs2/yaffs_guts.c
+--- linux.old/fs/yaffs2/yaffs_guts.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_guts.c 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,6675 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * 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.
++ *
++ */
++
++const char *yaffs_guts_c_version =
++ "$Id: yaffs_guts.c,v 1.45 2006/11/14 03:07:17 charles Exp $";
++
++#include "yportenv.h"
++
++#include "yaffsinterface.h"
++#include "yaffs_guts.h"
++#include "yaffs_tagsvalidity.h"
++
++#include "yaffs_tagscompat.h"
++#ifndef CONFIG_YAFFS_OWN_SORT
++#include "yaffs_qsort.h"
++#endif
++#include "yaffs_nand.h"
++
++#include "yaffs_checkptrw.h"
++
++#include "yaffs_nand.h"
++#include "yaffs_packedtags2.h"
++
++
++#ifdef CONFIG_YAFFS_WINCE
++void yfsd_LockYAFFS(BOOL fsLockOnly);
++void yfsd_UnlockYAFFS(BOOL fsLockOnly);
++#endif
++
++#define YAFFS_PASSIVE_GC_CHUNKS 2
++
++#include "yaffs_ecc.h"
++
++
++/* Robustification (if it ever comes about...) */
++static void yaffs_RetireBlock(yaffs_Device * dev, int blockInNAND);
++static void yaffs_HandleWriteChunkError(yaffs_Device * dev, int chunkInNAND, int erasedOk);
++static void yaffs_HandleWriteChunkOk(yaffs_Device * dev, int chunkInNAND,
++ const __u8 * data,
++ const yaffs_ExtendedTags * tags);
++static void yaffs_HandleUpdateChunk(yaffs_Device * dev, int chunkInNAND,
++ const yaffs_ExtendedTags * tags);
++
++/* Other local prototypes */
++static int yaffs_UnlinkObject( yaffs_Object *obj);
++static int yaffs_ObjectHasCachedWriteData(yaffs_Object *obj);
++
++static void yaffs_HardlinkFixup(yaffs_Device *dev, yaffs_Object *hardList);
++
++static int yaffs_WriteNewChunkWithTagsToNAND(yaffs_Device * dev,
++ const __u8 * buffer,
++ yaffs_ExtendedTags * tags,
++ int useReserve);
++static int yaffs_PutChunkIntoFile(yaffs_Object * in, int chunkInInode,
++ int chunkInNAND, int inScan);
++
++static yaffs_Object *yaffs_CreateNewObject(yaffs_Device * dev, int number,
++ yaffs_ObjectType type);
++static void yaffs_AddObjectToDirectory(yaffs_Object * directory,
++ yaffs_Object * obj);
++static int yaffs_UpdateObjectHeader(yaffs_Object * in, const YCHAR * name,
++ int force, int isShrink, int shadows);
++static void yaffs_RemoveObjectFromDirectory(yaffs_Object * obj);
++static int yaffs_CheckStructures(void);
++static int yaffs_DeleteWorker(yaffs_Object * in, yaffs_Tnode * tn, __u32 level,
++ int chunkOffset, int *limit);
++static int yaffs_DoGenericObjectDeletion(yaffs_Object * in);
++
++static yaffs_BlockInfo *yaffs_GetBlockInfo(yaffs_Device * dev, int blockNo);
++
++static __u8 *yaffs_GetTempBuffer(yaffs_Device * dev, int lineNo);
++static void yaffs_ReleaseTempBuffer(yaffs_Device * dev, __u8 * buffer,
++ int lineNo);
++
++static int yaffs_CheckChunkErased(struct yaffs_DeviceStruct *dev,
++ int chunkInNAND);
++
++static int yaffs_UnlinkWorker(yaffs_Object * obj);
++static void yaffs_DestroyObject(yaffs_Object * obj);
++
++static int yaffs_TagsMatch(const yaffs_ExtendedTags * tags, int objectId,
++ int chunkInObject);
++
++loff_t yaffs_GetFileSize(yaffs_Object * obj);
++
++static int yaffs_AllocateChunk(yaffs_Device * dev, int useReserve, yaffs_BlockInfo **blockUsedPtr);
++
++static void yaffs_VerifyFreeChunks(yaffs_Device * dev);
++
++#ifdef YAFFS_PARANOID
++static int yaffs_CheckFileSanity(yaffs_Object * in);
++#else
++#define yaffs_CheckFileSanity(in)
++#endif
++
++static void yaffs_InvalidateWholeChunkCache(yaffs_Object * in);
++static void yaffs_InvalidateChunkCache(yaffs_Object * object, int chunkId);
++
++static void yaffs_InvalidateCheckpoint(yaffs_Device *dev);
++
++
++
++/* Function to calculate chunk and offset */
++
++static void yaffs_AddrToChunk(yaffs_Device *dev, loff_t addr, __u32 *chunk, __u32 *offset)
++{
++ if(dev->chunkShift){
++ /* Easy-peasy power of 2 case */
++ *chunk = (__u32)(addr >> dev->chunkShift);
++ *offset = (__u32)(addr & dev->chunkMask);
++ }
++ else if(dev->crumbsPerChunk)
++ {
++ /* Case where we're using "crumbs" */
++ *offset = (__u32)(addr & dev->crumbMask);
++ addr >>= dev->crumbShift;
++ *chunk = ((__u32)addr)/dev->crumbsPerChunk;
++ *offset += ((addr - (*chunk * dev->crumbsPerChunk)) << dev->crumbShift);
++ }
++ else
++ YBUG();
++}
++
++/* Function to return the number of shifts for a power of 2 greater than or equal
++ * to the given number
++ * Note we don't try to cater for all possible numbers and this does not have to
++ * be hellishly efficient.
++ */
++
++static __u32 ShiftsGE(__u32 x)
++{
++ int extraBits;
++ int nShifts;
++
++ nShifts = extraBits = 0;
++
++ while(x>1){
++ if(x & 1) extraBits++;
++ x>>=1;
++ nShifts++;
++ }
++
++ if(extraBits)
++ nShifts++;
++
++ return nShifts;
++}
++
++/* Function to return the number of shifts to get a 1 in bit 0
++ */
++
++static __u32 ShiftDiv(__u32 x)
++{
++ int nShifts;
++
++ nShifts = 0;
++
++ if(!x) return 0;
++
++ while( !(x&1)){
++ x>>=1;
++ nShifts++;
++ }
++
++ return nShifts;
++}
++
++
++
++/*
++ * Temporary buffer manipulations.
++ */
++
++static __u8 *yaffs_GetTempBuffer(yaffs_Device * dev, int lineNo)
++{
++ int i, j;
++ for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
++ if (dev->tempBuffer[i].line == 0) {
++ dev->tempBuffer[i].line = lineNo;
++ if ((i + 1) > dev->maxTemp) {
++ dev->maxTemp = i + 1;
++ for (j = 0; j <= i; j++)
++ dev->tempBuffer[j].maxLine =
++ dev->tempBuffer[j].line;
++ }
++
++ return dev->tempBuffer[i].buffer;
++ }
++ }
++
++ T(YAFFS_TRACE_BUFFERS,
++ (TSTR("Out of temp buffers at line %d, other held by lines:"),
++ lineNo));
++ for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
++ T(YAFFS_TRACE_BUFFERS, (TSTR(" %d "), dev->tempBuffer[i].line));
++ }
++ T(YAFFS_TRACE_BUFFERS, (TSTR(" " TENDSTR)));
++
++ /*
++ * If we got here then we have to allocate an unmanaged one
++ * This is not good.
++ */
++
++ dev->unmanagedTempAllocations++;
++ return YMALLOC(dev->nDataBytesPerChunk);
++
++}
++
++static void yaffs_ReleaseTempBuffer(yaffs_Device * dev, __u8 * buffer,
++ int lineNo)
++{
++ int i;
++ for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
++ if (dev->tempBuffer[i].buffer == buffer) {
++ dev->tempBuffer[i].line = 0;
++ return;
++ }
++ }
++
++ if (buffer) {
++ /* assume it is an unmanaged one. */
++ T(YAFFS_TRACE_BUFFERS,
++ (TSTR("Releasing unmanaged temp buffer in line %d" TENDSTR),
++ lineNo));
++ YFREE(buffer);
++ dev->unmanagedTempDeallocations++;
++ }
++
++}
++
++/*
++ * Determine if we have a managed buffer.
++ */
++int yaffs_IsManagedTempBuffer(yaffs_Device * dev, const __u8 * buffer)
++{
++ int i;
++ for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
++ if (dev->tempBuffer[i].buffer == buffer)
++ return 1;
++
++ }
++
++ for (i = 0; i < dev->nShortOpCaches; i++) {
++ if( dev->srCache[i].data == buffer )
++ return 1;
++
++ }
++
++ if (buffer == dev->checkpointBuffer)
++ return 1;
++
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR("yaffs: unmaged buffer detected.\n" TENDSTR)));
++ return 0;
++}
++
++/*
++ * Chunk bitmap manipulations
++ */
++
++static Y_INLINE __u8 *yaffs_BlockBits(yaffs_Device * dev, int blk)
++{
++ if (blk < dev->internalStartBlock || blk > dev->internalEndBlock) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR("**>> yaffs: BlockBits block %d is not valid" TENDSTR),
++ blk));
++ YBUG();
++ }
++ return dev->chunkBits +
++ (dev->chunkBitmapStride * (blk - dev->internalStartBlock));
++}
++
++static Y_INLINE void yaffs_ClearChunkBits(yaffs_Device * dev, int blk)
++{
++ __u8 *blkBits = yaffs_BlockBits(dev, blk);
++
++ memset(blkBits, 0, dev->chunkBitmapStride);
++}
++
++static Y_INLINE void yaffs_ClearChunkBit(yaffs_Device * dev, int blk, int chunk)
++{
++ __u8 *blkBits = yaffs_BlockBits(dev, blk);
++
++ blkBits[chunk / 8] &= ~(1 << (chunk & 7));
++}
++
++static Y_INLINE void yaffs_SetChunkBit(yaffs_Device * dev, int blk, int chunk)
++{
++ __u8 *blkBits = yaffs_BlockBits(dev, blk);
++
++ blkBits[chunk / 8] |= (1 << (chunk & 7));
++}
++
++static Y_INLINE int yaffs_CheckChunkBit(yaffs_Device * dev, int blk, int chunk)
++{
++ __u8 *blkBits = yaffs_BlockBits(dev, blk);
++ return (blkBits[chunk / 8] & (1 << (chunk & 7))) ? 1 : 0;
++}
++
++static Y_INLINE int yaffs_StillSomeChunkBits(yaffs_Device * dev, int blk)
++{
++ __u8 *blkBits = yaffs_BlockBits(dev, blk);
++ int i;
++ for (i = 0; i < dev->chunkBitmapStride; i++) {
++ if (*blkBits)
++ return 1;
++ blkBits++;
++ }
++ return 0;
++}
++
++/*
++ * Simple hash function. Needs to have a reasonable spread
++ */
++
++static Y_INLINE int yaffs_HashFunction(int n)
++{
++ n = abs(n);
++ return (n % YAFFS_NOBJECT_BUCKETS);
++}
++
++/*
++ * Access functions to useful fake objects
++ */
++
++yaffs_Object *yaffs_Root(yaffs_Device * dev)
++{
++ return dev->rootDir;
++}
++
++yaffs_Object *yaffs_LostNFound(yaffs_Device * dev)
++{
++ return dev->lostNFoundDir;
++}
++
++
++/*
++ * Erased NAND checking functions
++ */
++
++int yaffs_CheckFF(__u8 * buffer, int nBytes)
++{
++ /* Horrible, slow implementation */
++ while (nBytes--) {
++ if (*buffer != 0xFF)
++ return 0;
++ buffer++;
++ }
++ return 1;
++}
++
++static int yaffs_CheckChunkErased(struct yaffs_DeviceStruct *dev,
++ int chunkInNAND)
++{
++
++ int retval = YAFFS_OK;
++ __u8 *data = yaffs_GetTempBuffer(dev, __LINE__);
++ yaffs_ExtendedTags tags;
++ int result;
++
++ result = yaffs_ReadChunkWithTagsFromNAND(dev, chunkInNAND, data, &tags);
++
++ if(tags.eccResult > YAFFS_ECC_RESULT_NO_ERROR)
++ retval = YAFFS_FAIL;
++
++
++ if (!yaffs_CheckFF(data, dev->nDataBytesPerChunk) || tags.chunkUsed) {
++ T(YAFFS_TRACE_NANDACCESS,
++ (TSTR("Chunk %d not erased" TENDSTR), chunkInNAND));
++ retval = YAFFS_FAIL;
++ }
++
++ yaffs_ReleaseTempBuffer(dev, data, __LINE__);
++
++ return retval;
++
++}
++
++static int yaffs_WriteNewChunkWithTagsToNAND(struct yaffs_DeviceStruct *dev,
++ const __u8 * data,
++ yaffs_ExtendedTags * tags,
++ int useReserve)
++{
++ int chunk;
++
++ int writeOk = 0;
++ int erasedOk = 1;
++ int attempts = 0;
++ yaffs_BlockInfo *bi;
++
++ yaffs_InvalidateCheckpoint(dev);
++
++ do {
++ chunk = yaffs_AllocateChunk(dev, useReserve,&bi);
++
++ if (chunk >= 0) {
++ /* First check this chunk is erased, if it needs checking.
++ * The checking policy (unless forced always on) is as follows:
++ * Check the first page we try to write in a block.
++ * - If the check passes then we don't need to check any more.
++ * - If the check fails, we check again...
++ * If the block has been erased, we don't need to check.
++ *
++ * However, if the block has been prioritised for gc, then
++ * we think there might be something odd about this block
++ * and stop using it.
++ *
++ * Rationale:
++ * We should only ever see chunks that have not been erased
++ * if there was a partially written chunk due to power loss
++ * This checking policy should catch that case with very
++ * few checks and thus save a lot of checks that are most likely not
++ * needed.
++ */
++
++ if(bi->gcPrioritise){
++ yaffs_DeleteChunk(dev, chunk, 1, __LINE__);
++ } else {
++#ifdef CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED
++
++ bi->skipErasedCheck = 0;
++
++#endif
++ if(!bi->skipErasedCheck){
++ erasedOk = yaffs_CheckChunkErased(dev, chunk);
++ if(erasedOk && !bi->gcPrioritise)
++ bi->skipErasedCheck = 1;
++ }
++
++ if (!erasedOk) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("**>> yaffs chunk %d was not erased"
++ TENDSTR), chunk));
++ } else {
++ writeOk =
++ yaffs_WriteChunkWithTagsToNAND(dev, chunk,
++ data, tags);
++ }
++
++ attempts++;
++
++ if (writeOk) {
++ /*
++ * Copy the data into the robustification buffer.
++ * NB We do this at the end to prevent duplicates in the case of a write error.
++ * Todo
++ */
++ yaffs_HandleWriteChunkOk(dev, chunk, data, tags);
++
++ } else {
++ /* The erased check or write failed */
++ yaffs_HandleWriteChunkError(dev, chunk, erasedOk);
++ }
++ }
++ }
++
++ } while (chunk >= 0 && !writeOk);
++
++ if (attempts > 1) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR("**>> yaffs write required %d attempts" TENDSTR),
++ attempts));
++ dev->nRetriedWrites += (attempts - 1);
++ }
++
++ return chunk;
++}
++
++/*
++ * Block retiring for handling a broken block.
++ */
++
++static void yaffs_RetireBlock(yaffs_Device * dev, int blockInNAND)
++{
++ yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, blockInNAND);
++
++ yaffs_InvalidateCheckpoint(dev);
++
++ yaffs_MarkBlockBad(dev, blockInNAND);
++
++ bi->blockState = YAFFS_BLOCK_STATE_DEAD;
++ bi->gcPrioritise = 0;
++ bi->needsRetiring = 0;
++
++ dev->nRetiredBlocks++;
++}
++
++/*
++ * Functions for robustisizing TODO
++ *
++ */
++
++static void yaffs_HandleWriteChunkOk(yaffs_Device * dev, int chunkInNAND,
++ const __u8 * data,
++ const yaffs_ExtendedTags * tags)
++{
++}
++
++static void yaffs_HandleUpdateChunk(yaffs_Device * dev, int chunkInNAND,
++ const yaffs_ExtendedTags * tags)
++{
++}
++
++void yaffs_HandleChunkError(yaffs_Device *dev, yaffs_BlockInfo *bi)
++{
++ if(!bi->gcPrioritise){
++ bi->gcPrioritise = 1;
++ dev->hasPendingPrioritisedGCs = 1;
++ bi->chunkErrorStrikes ++;
++
++ if(bi->chunkErrorStrikes > 3){
++ bi->needsRetiring = 1; /* Too many stikes, so retire this */
++ T(YAFFS_TRACE_ALWAYS, (TSTR("yaffs: Block struck out" TENDSTR)));
++
++ }
++
++ }
++}
++
++static void yaffs_ReportOddballBlocks(yaffs_Device *dev)
++{
++ int i;
++
++ for(i = dev->internalStartBlock; i <= dev->internalEndBlock && (yaffs_traceMask & YAFFS_TRACE_BAD_BLOCKS); i++){
++ yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,i);
++ if(bi->needsRetiring || bi->gcPrioritise)
++ T(YAFFS_TRACE_BAD_BLOCKS,(TSTR("yaffs block %d%s%s" TENDSTR),
++ i,
++ bi->needsRetiring ? " needs retiring" : "",
++ bi->gcPrioritise ? " gc prioritised" : ""));
++
++ }
++}
++
++static void yaffs_HandleWriteChunkError(yaffs_Device * dev, int chunkInNAND, int erasedOk)
++{
++
++ int blockInNAND = chunkInNAND / dev->nChunksPerBlock;
++ yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, blockInNAND);
++
++ yaffs_HandleChunkError(dev,bi);
++
++
++ if(erasedOk ) {
++ /* Was an actual write failure, so mark the block for retirement */
++ bi->needsRetiring = 1;
++ T(YAFFS_TRACE_ERROR | YAFFS_TRACE_BAD_BLOCKS,
++ (TSTR("**>> Block %d needs retiring" TENDSTR), blockInNAND));
++
++
++ }
++
++ /* Delete the chunk */
++ yaffs_DeleteChunk(dev, chunkInNAND, 1, __LINE__);
++}
++
++
++/*---------------- Name handling functions ------------*/
++
++static __u16 yaffs_CalcNameSum(const YCHAR * name)
++{
++ __u16 sum = 0;
++ __u16 i = 1;
++
++ YUCHAR *bname = (YUCHAR *) name;
++ if (bname) {
++ while ((*bname) && (i <= YAFFS_MAX_NAME_LENGTH)) {
++
++#ifdef CONFIG_YAFFS_CASE_INSENSITIVE
++ sum += yaffs_toupper(*bname) * i;
++#else
++ sum += (*bname) * i;
++#endif
++ i++;
++ bname++;
++ }
++ }
++ return sum;
++}
++
++static void yaffs_SetObjectName(yaffs_Object * obj, const YCHAR * name)
++{
++#ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM
++ if (name && yaffs_strlen(name) <= YAFFS_SHORT_NAME_LENGTH) {
++ yaffs_strcpy(obj->shortName, name);
++ } else {
++ obj->shortName[0] = _Y('\0');
++ }
++#endif
++ obj->sum = yaffs_CalcNameSum(name);
++}
++
++/*-------------------- TNODES -------------------
++
++ * List of spare tnodes
++ * The list is hooked together using the first pointer
++ * in the tnode.
++ */
++
++/* yaffs_CreateTnodes creates a bunch more tnodes and
++ * adds them to the tnode free list.
++ * Don't use this function directly
++ */
++
++static int yaffs_CreateTnodes(yaffs_Device * dev, int nTnodes)
++{
++ int i;
++ int tnodeSize;
++ yaffs_Tnode *newTnodes;
++ __u8 *mem;
++ yaffs_Tnode *curr;
++ yaffs_Tnode *next;
++ yaffs_TnodeList *tnl;
++
++ if (nTnodes < 1)
++ return YAFFS_OK;
++
++ /* Calculate the tnode size in bytes for variable width tnode support.
++ * Must be a multiple of 32-bits */
++ tnodeSize = (dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8;
++
++ /* make these things */
++
++ newTnodes = YMALLOC(nTnodes * tnodeSize);
++ mem = (__u8 *)newTnodes;
++
++ if (!newTnodes) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR("yaffs: Could not allocate Tnodes" TENDSTR)));
++ return YAFFS_FAIL;
++ }
++
++ /* Hook them into the free list */
++#if 0
++ for (i = 0; i < nTnodes - 1; i++) {
++ newTnodes[i].internal[0] = &newTnodes[i + 1];
++#ifdef CONFIG_YAFFS_TNODE_LIST_DEBUG
++ newTnodes[i].internal[YAFFS_NTNODES_INTERNAL] = (void *)1;
++#endif
++ }
++
++ newTnodes[nTnodes - 1].internal[0] = dev->freeTnodes;
++#ifdef CONFIG_YAFFS_TNODE_LIST_DEBUG
++ newTnodes[nTnodes - 1].internal[YAFFS_NTNODES_INTERNAL] = (void *)1;
++#endif
++ dev->freeTnodes = newTnodes;
++#else
++ /* New hookup for wide tnodes */
++ for(i = 0; i < nTnodes -1; i++) {
++ curr = (yaffs_Tnode *) &mem[i * tnodeSize];
++ next = (yaffs_Tnode *) &mem[(i+1) * tnodeSize];
++ curr->internal[0] = next;
++ }
++
++ curr = (yaffs_Tnode *) &mem[(nTnodes - 1) * tnodeSize];
++ curr->internal[0] = dev->freeTnodes;
++ dev->freeTnodes = (yaffs_Tnode *)mem;
++
++#endif
++
++
++ dev->nFreeTnodes += nTnodes;
++ dev->nTnodesCreated += nTnodes;
++
++ /* Now add this bunch of tnodes to a list for freeing up.
++ * NB If we can't add this to the management list it isn't fatal
++ * but it just means we can't free this bunch of tnodes later.
++ */
++
++ tnl = YMALLOC(sizeof(yaffs_TnodeList));
++ if (!tnl) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("yaffs: Could not add tnodes to management list" TENDSTR)));
++
++ } else {
++ tnl->tnodes = newTnodes;
++ tnl->next = dev->allocatedTnodeList;
++ dev->allocatedTnodeList = tnl;
++ }
++
++ T(YAFFS_TRACE_ALLOCATE, (TSTR("yaffs: Tnodes added" TENDSTR)));
++
++ return YAFFS_OK;
++}
++
++/* GetTnode gets us a clean tnode. Tries to make allocate more if we run out */
++
++static yaffs_Tnode *yaffs_GetTnodeRaw(yaffs_Device * dev)
++{
++ yaffs_Tnode *tn = NULL;
++
++ /* If there are none left make more */
++ if (!dev->freeTnodes) {
++ yaffs_CreateTnodes(dev, YAFFS_ALLOCATION_NTNODES);
++ }
++
++ if (dev->freeTnodes) {
++ tn = dev->freeTnodes;
++#ifdef CONFIG_YAFFS_TNODE_LIST_DEBUG
++ if (tn->internal[YAFFS_NTNODES_INTERNAL] != (void *)1) {
++ /* Hoosterman, this thing looks like it isn't in the list */
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR("yaffs: Tnode list bug 1" TENDSTR)));
++ }
++#endif
++ dev->freeTnodes = dev->freeTnodes->internal[0];
++ dev->nFreeTnodes--;
++ }
++
++ return tn;
++}
++
++static yaffs_Tnode *yaffs_GetTnode(yaffs_Device * dev)
++{
++ yaffs_Tnode *tn = yaffs_GetTnodeRaw(dev);
++
++ if(tn)
++ memset(tn, 0, (dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8);
++
++ return tn;
++}
++
++/* FreeTnode frees up a tnode and puts it back on the free list */
++static void yaffs_FreeTnode(yaffs_Device * dev, yaffs_Tnode * tn)
++{
++ if (tn) {
++#ifdef CONFIG_YAFFS_TNODE_LIST_DEBUG
++ if (tn->internal[YAFFS_NTNODES_INTERNAL] != 0) {
++ /* Hoosterman, this thing looks like it is already in the list */
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR("yaffs: Tnode list bug 2" TENDSTR)));
++ }
++ tn->internal[YAFFS_NTNODES_INTERNAL] = (void *)1;
++#endif
++ tn->internal[0] = dev->freeTnodes;
++ dev->freeTnodes = tn;
++ dev->nFreeTnodes++;
++ }
++}
++
++static void yaffs_DeinitialiseTnodes(yaffs_Device * dev)
++{
++ /* Free the list of allocated tnodes */
++ yaffs_TnodeList *tmp;
++
++ while (dev->allocatedTnodeList) {
++ tmp = dev->allocatedTnodeList->next;
++
++ YFREE(dev->allocatedTnodeList->tnodes);
++ YFREE(dev->allocatedTnodeList);
++ dev->allocatedTnodeList = tmp;
++
++ }
++
++ dev->freeTnodes = NULL;
++ dev->nFreeTnodes = 0;
++}
++
++static void yaffs_InitialiseTnodes(yaffs_Device * dev)
++{
++ dev->allocatedTnodeList = NULL;
++ dev->freeTnodes = NULL;
++ dev->nFreeTnodes = 0;
++ dev->nTnodesCreated = 0;
++
++}
++
++
++void yaffs_PutLevel0Tnode(yaffs_Device *dev, yaffs_Tnode *tn, unsigned pos, unsigned val)
++{
++ __u32 *map = (__u32 *)tn;
++ __u32 bitInMap;
++ __u32 bitInWord;
++ __u32 wordInMap;
++ __u32 mask;
++
++ pos &= YAFFS_TNODES_LEVEL0_MASK;
++ val >>= dev->chunkGroupBits;
++
++ bitInMap = pos * dev->tnodeWidth;
++ wordInMap = bitInMap /32;
++ bitInWord = bitInMap & (32 -1);
++
++ mask = dev->tnodeMask << bitInWord;
++
++ map[wordInMap] &= ~mask;
++ map[wordInMap] |= (mask & (val << bitInWord));
++
++ if(dev->tnodeWidth > (32-bitInWord)) {
++ bitInWord = (32 - bitInWord);
++ wordInMap++;;
++ mask = dev->tnodeMask >> (/*dev->tnodeWidth -*/ bitInWord);
++ map[wordInMap] &= ~mask;
++ map[wordInMap] |= (mask & (val >> bitInWord));
++ }
++}
++
++__u32 yaffs_GetChunkGroupBase(yaffs_Device *dev, yaffs_Tnode *tn, unsigned pos)
++{
++ __u32 *map = (__u32 *)tn;
++ __u32 bitInMap;
++ __u32 bitInWord;
++ __u32 wordInMap;
++ __u32 val;
++
++ pos &= YAFFS_TNODES_LEVEL0_MASK;
++
++ bitInMap = pos * dev->tnodeWidth;
++ wordInMap = bitInMap /32;
++ bitInWord = bitInMap & (32 -1);
++
++ val = map[wordInMap] >> bitInWord;
++
++ if(dev->tnodeWidth > (32-bitInWord)) {
++ bitInWord = (32 - bitInWord);
++ wordInMap++;;
++ val |= (map[wordInMap] << bitInWord);
++ }
++
++ val &= dev->tnodeMask;
++ val <<= dev->chunkGroupBits;
++
++ return val;
++}
++
++/* ------------------- End of individual tnode manipulation -----------------*/
++
++/* ---------Functions to manipulate the look-up tree (made up of tnodes) ------
++ * The look up tree is represented by the top tnode and the number of topLevel
++ * in the tree. 0 means only the level 0 tnode is in the tree.
++ */
++
++/* FindLevel0Tnode finds the level 0 tnode, if one exists. */
++static yaffs_Tnode *yaffs_FindLevel0Tnode(yaffs_Device * dev,
++ yaffs_FileStructure * fStruct,
++ __u32 chunkId)
++{
++
++ yaffs_Tnode *tn = fStruct->top;
++ __u32 i;
++ int requiredTallness;
++ int level = fStruct->topLevel;
++
++ /* Check sane level and chunk Id */
++ if (level < 0 || level > YAFFS_TNODES_MAX_LEVEL) {
++ return NULL;
++ }
++
++ if (chunkId > YAFFS_MAX_CHUNK_ID) {
++ return NULL;
++ }
++
++ /* First check we're tall enough (ie enough topLevel) */
++
++ i = chunkId >> YAFFS_TNODES_LEVEL0_BITS;
++ requiredTallness = 0;
++ while (i) {
++ i >>= YAFFS_TNODES_INTERNAL_BITS;
++ requiredTallness++;
++ }
++
++ if (requiredTallness > fStruct->topLevel) {
++ /* Not tall enough, so we can't find it, return NULL. */
++ return NULL;
++ }
++
++ /* Traverse down to level 0 */
++ while (level > 0 && tn) {
++ tn = tn->
++ internal[(chunkId >>
++ ( YAFFS_TNODES_LEVEL0_BITS +
++ (level - 1) *
++ YAFFS_TNODES_INTERNAL_BITS)
++ ) &
++ YAFFS_TNODES_INTERNAL_MASK];
++ level--;
++
++ }
++
++ return tn;
++}
++
++/* AddOrFindLevel0Tnode finds the level 0 tnode if it exists, otherwise first expands the tree.
++ * This happens in two steps:
++ * 1. If the tree isn't tall enough, then make it taller.
++ * 2. Scan down the tree towards the level 0 tnode adding tnodes if required.
++ *
++ * Used when modifying the tree.
++ *
++ * If the tn argument is NULL, then a fresh tnode will be added otherwise the specified tn will
++ * be plugged into the ttree.
++ */
++
++static yaffs_Tnode *yaffs_AddOrFindLevel0Tnode(yaffs_Device * dev,
++ yaffs_FileStructure * fStruct,
++ __u32 chunkId,
++ yaffs_Tnode *passedTn)
++{
++
++ int requiredTallness;
++ int i;
++ int l;
++ yaffs_Tnode *tn;
++
++ __u32 x;
++
++
++ /* Check sane level and page Id */
++ if (fStruct->topLevel < 0 || fStruct->topLevel > YAFFS_TNODES_MAX_LEVEL) {
++ return NULL;
++ }
++
++ if (chunkId > YAFFS_MAX_CHUNK_ID) {
++ return NULL;
++ }
++
++ /* First check we're tall enough (ie enough topLevel) */
++
++ x = chunkId >> YAFFS_TNODES_LEVEL0_BITS;
++ requiredTallness = 0;
++ while (x) {
++ x >>= YAFFS_TNODES_INTERNAL_BITS;
++ requiredTallness++;
++ }
++
++
++ if (requiredTallness > fStruct->topLevel) {
++ /* Not tall enough,gotta make the tree taller */
++ for (i = fStruct->topLevel; i < requiredTallness; i++) {
++
++ tn = yaffs_GetTnode(dev);
++
++ if (tn) {
++ tn->internal[0] = fStruct->top;
++ fStruct->top = tn;
++ } else {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR("yaffs: no more tnodes" TENDSTR)));
++ }
++ }
++
++ fStruct->topLevel = requiredTallness;
++ }
++
++ /* Traverse down to level 0, adding anything we need */
++
++ l = fStruct->topLevel;
++ tn = fStruct->top;
++
++ if(l > 0) {
++ while (l > 0 && tn) {
++ x = (chunkId >>
++ ( YAFFS_TNODES_LEVEL0_BITS +
++ (l - 1) * YAFFS_TNODES_INTERNAL_BITS)) &
++ YAFFS_TNODES_INTERNAL_MASK;
++
++
++ if((l>1) && !tn->internal[x]){
++ /* Add missing non-level-zero tnode */
++ tn->internal[x] = yaffs_GetTnode(dev);
++
++ } else if(l == 1) {
++ /* Looking from level 1 at level 0 */
++ if (passedTn) {
++ /* If we already have one, then release it.*/
++ if(tn->internal[x])
++ yaffs_FreeTnode(dev,tn->internal[x]);
++ tn->internal[x] = passedTn;
++
++ } else if(!tn->internal[x]) {
++ /* Don't have one, none passed in */
++ tn->internal[x] = yaffs_GetTnode(dev);
++ }
++ }
++
++ tn = tn->internal[x];
++ l--;
++ }
++ } else {
++ /* top is level 0 */
++ if(passedTn) {
++ memcpy(tn,passedTn,(dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8);
++ yaffs_FreeTnode(dev,passedTn);
++ }
++ }
++
++ return tn;
++}
++
++static int yaffs_FindChunkInGroup(yaffs_Device * dev, int theChunk,
++ yaffs_ExtendedTags * tags, int objectId,
++ int chunkInInode)
++{
++ int j;
++
++ for (j = 0; theChunk && j < dev->chunkGroupSize; j++) {
++ if (yaffs_CheckChunkBit
++ (dev, theChunk / dev->nChunksPerBlock,
++ theChunk % dev->nChunksPerBlock)) {
++ yaffs_ReadChunkWithTagsFromNAND(dev, theChunk, NULL,
++ tags);
++ if (yaffs_TagsMatch(tags, objectId, chunkInInode)) {
++ /* found it; */
++ return theChunk;
++
++ }
++ }
++ theChunk++;
++ }
++ return -1;
++}
++
++
++/* DeleteWorker scans backwards through the tnode tree and deletes all the
++ * chunks and tnodes in the file
++ * Returns 1 if the tree was deleted.
++ * Returns 0 if it stopped early due to hitting the limit and the delete is incomplete.
++ */
++
++static int yaffs_DeleteWorker(yaffs_Object * in, yaffs_Tnode * tn, __u32 level,
++ int chunkOffset, int *limit)
++{
++ int i;
++ int chunkInInode;
++ int theChunk;
++ yaffs_ExtendedTags tags;
++ int foundChunk;
++ yaffs_Device *dev = in->myDev;
++
++ int allDone = 1;
++
++ if (tn) {
++ if (level > 0) {
++
++ for (i = YAFFS_NTNODES_INTERNAL - 1; allDone && i >= 0;
++ i--) {
++ if (tn->internal[i]) {
++ if (limit && (*limit) < 0) {
++ allDone = 0;
++ } else {
++ allDone =
++ yaffs_DeleteWorker(in,
++ tn->
++ internal
++ [i],
++ level -
++ 1,
++ (chunkOffset
++ <<
++ YAFFS_TNODES_INTERNAL_BITS)
++ + i,
++ limit);
++ }
++ if (allDone) {
++ yaffs_FreeTnode(dev,
++ tn->
++ internal[i]);
++ tn->internal[i] = NULL;
++ }
++ }
++
++ }
++ return (allDone) ? 1 : 0;
++ } else if (level == 0) {
++ int hitLimit = 0;
++
++ for (i = YAFFS_NTNODES_LEVEL0 - 1; i >= 0 && !hitLimit;
++ i--) {
++ theChunk = yaffs_GetChunkGroupBase(dev,tn,i);
++ if (theChunk) {
++
++ chunkInInode =
++ (chunkOffset <<
++ YAFFS_TNODES_LEVEL0_BITS) + i;
++
++ foundChunk =
++ yaffs_FindChunkInGroup(dev,
++ theChunk,
++ &tags,
++ in->objectId,
++ chunkInInode);
++
++ if (foundChunk > 0) {
++ yaffs_DeleteChunk(dev,
++ foundChunk, 1,
++ __LINE__);
++ in->nDataChunks--;
++ if (limit) {
++ *limit = *limit - 1;
++ if (*limit <= 0) {
++ hitLimit = 1;
++ }
++ }
++
++ }
++
++ yaffs_PutLevel0Tnode(dev,tn,i,0);
++ }
++
++ }
++ return (i < 0) ? 1 : 0;
++
++ }
++
++ }
++
++ return 1;
++
++}
++
++static void yaffs_SoftDeleteChunk(yaffs_Device * dev, int chunk)
++{
++
++ yaffs_BlockInfo *theBlock;
++
++ T(YAFFS_TRACE_DELETION, (TSTR("soft delete chunk %d" TENDSTR), chunk));
++
++ theBlock = yaffs_GetBlockInfo(dev, chunk / dev->nChunksPerBlock);
++ if (theBlock) {
++ theBlock->softDeletions++;
++ dev->nFreeChunks++;
++ }
++}
++
++/* SoftDeleteWorker scans backwards through the tnode tree and soft deletes all the chunks in the file.
++ * All soft deleting does is increment the block's softdelete count and pulls the chunk out
++ * of the tnode.
++ * Thus, essentially this is the same as DeleteWorker except that the chunks are soft deleted.
++ */
++
++static int yaffs_SoftDeleteWorker(yaffs_Object * in, yaffs_Tnode * tn,
++ __u32 level, int chunkOffset)
++{
++ int i;
++ int theChunk;
++ int allDone = 1;
++ yaffs_Device *dev = in->myDev;
++
++ if (tn) {
++ if (level > 0) {
++
++ for (i = YAFFS_NTNODES_INTERNAL - 1; allDone && i >= 0;
++ i--) {
++ if (tn->internal[i]) {
++ allDone =
++ yaffs_SoftDeleteWorker(in,
++ tn->
++ internal[i],
++ level - 1,
++ (chunkOffset
++ <<
++ YAFFS_TNODES_INTERNAL_BITS)
++ + i);
++ if (allDone) {
++ yaffs_FreeTnode(dev,
++ tn->
++ internal[i]);
++ tn->internal[i] = NULL;
++ } else {
++ /* Hoosterman... how could this happen? */
++ }
++ }
++ }
++ return (allDone) ? 1 : 0;
++ } else if (level == 0) {
++
++ for (i = YAFFS_NTNODES_LEVEL0 - 1; i >= 0; i--) {
++ theChunk = yaffs_GetChunkGroupBase(dev,tn,i);
++ if (theChunk) {
++ /* Note this does not find the real chunk, only the chunk group.
++ * We make an assumption that a chunk group is not larger than
++ * a block.
++ */
++ yaffs_SoftDeleteChunk(dev, theChunk);
++ yaffs_PutLevel0Tnode(dev,tn,i,0);
++ }
++
++ }
++ return 1;
++
++ }
++
++ }
++
++ return 1;
++
++}
++
++static void yaffs_SoftDeleteFile(yaffs_Object * obj)
++{
++ if (obj->deleted &&
++ obj->variantType == YAFFS_OBJECT_TYPE_FILE && !obj->softDeleted) {
++ if (obj->nDataChunks <= 0) {
++ /* Empty file with no duplicate object headers, just delete it immediately */
++ yaffs_FreeTnode(obj->myDev,
++ obj->variant.fileVariant.top);
++ obj->variant.fileVariant.top = NULL;
++ T(YAFFS_TRACE_TRACING,
++ (TSTR("yaffs: Deleting empty file %d" TENDSTR),
++ obj->objectId));
++ yaffs_DoGenericObjectDeletion(obj);
++ } else {
++ yaffs_SoftDeleteWorker(obj,
++ obj->variant.fileVariant.top,
++ obj->variant.fileVariant.
++ topLevel, 0);
++ obj->softDeleted = 1;
++ }
++ }
++}
++
++/* Pruning removes any part of the file structure tree that is beyond the
++ * bounds of the file (ie that does not point to chunks).
++ *
++ * A file should only get pruned when its size is reduced.
++ *
++ * Before pruning, the chunks must be pulled from the tree and the
++ * level 0 tnode entries must be zeroed out.
++ * Could also use this for file deletion, but that's probably better handled
++ * by a special case.
++ */
++
++static yaffs_Tnode *yaffs_PruneWorker(yaffs_Device * dev, yaffs_Tnode * tn,
++ __u32 level, int del0)
++{
++ int i;
++ int hasData;
++
++ if (tn) {
++ hasData = 0;
++
++ for (i = 0; i < YAFFS_NTNODES_INTERNAL; i++) {
++ if (tn->internal[i] && level > 0) {
++ tn->internal[i] =
++ yaffs_PruneWorker(dev, tn->internal[i],
++ level - 1,
++ (i == 0) ? del0 : 1);
++ }
++
++ if (tn->internal[i]) {
++ hasData++;
++ }
++ }
++
++ if (hasData == 0 && del0) {
++ /* Free and return NULL */
++
++ yaffs_FreeTnode(dev, tn);
++ tn = NULL;
++ }
++
++ }
++
++ return tn;
++
++}
++
++static int yaffs_PruneFileStructure(yaffs_Device * dev,
++ yaffs_FileStructure * fStruct)
++{
++ int i;
++ int hasData;
++ int done = 0;
++ yaffs_Tnode *tn;
++
++ if (fStruct->topLevel > 0) {
++ fStruct->top =
++ yaffs_PruneWorker(dev, fStruct->top, fStruct->topLevel, 0);
++
++ /* Now we have a tree with all the non-zero branches NULL but the height
++ * is the same as it was.
++ * Let's see if we can trim internal tnodes to shorten the tree.
++ * We can do this if only the 0th element in the tnode is in use
++ * (ie all the non-zero are NULL)
++ */
++
++ while (fStruct->topLevel && !done) {
++ tn = fStruct->top;
++
++ hasData = 0;
++ for (i = 1; i < YAFFS_NTNODES_INTERNAL; i++) {
++ if (tn->internal[i]) {
++ hasData++;
++ }
++ }
++
++ if (!hasData) {
++ fStruct->top = tn->internal[0];
++ fStruct->topLevel--;
++ yaffs_FreeTnode(dev, tn);
++ } else {
++ done = 1;
++ }
++ }
++ }
++
++ return YAFFS_OK;
++}
++
++/*-------------------- End of File Structure functions.-------------------*/
++
++/* yaffs_CreateFreeObjects creates a bunch more objects and
++ * adds them to the object free list.
++ */
++static int yaffs_CreateFreeObjects(yaffs_Device * dev, int nObjects)
++{
++ int i;
++ yaffs_Object *newObjects;
++ yaffs_ObjectList *list;
++
++ if (nObjects < 1)
++ return YAFFS_OK;
++
++ /* make these things */
++ newObjects = YMALLOC(nObjects * sizeof(yaffs_Object));
++
++ if (!newObjects) {
++ T(YAFFS_TRACE_ALLOCATE,
++ (TSTR("yaffs: Could not allocate more objects" TENDSTR)));
++ return YAFFS_FAIL;
++ }
++
++ /* Hook them into the free list */
++ for (i = 0; i < nObjects - 1; i++) {
++ newObjects[i].siblings.next =
++ (struct list_head *)(&newObjects[i + 1]);
++ }
++
++ newObjects[nObjects - 1].siblings.next = (void *)dev->freeObjects;
++ dev->freeObjects = newObjects;
++ dev->nFreeObjects += nObjects;
++ dev->nObjectsCreated += nObjects;
++
++ /* Now add this bunch of Objects to a list for freeing up. */
++
++ list = YMALLOC(sizeof(yaffs_ObjectList));
++ if (!list) {
++ T(YAFFS_TRACE_ALLOCATE,
++ (TSTR("Could not add objects to management list" TENDSTR)));
++ } else {
++ list->objects = newObjects;
++ list->next = dev->allocatedObjectList;
++ dev->allocatedObjectList = list;
++ }
++
++ return YAFFS_OK;
++}
++
++
++/* AllocateEmptyObject gets us a clean Object. Tries to make allocate more if we run out */
++static yaffs_Object *yaffs_AllocateEmptyObject(yaffs_Device * dev)
++{
++ yaffs_Object *tn = NULL;
++
++ /* If there are none left make more */
++ if (!dev->freeObjects) {
++ yaffs_CreateFreeObjects(dev, YAFFS_ALLOCATION_NOBJECTS);
++ }
++
++ if (dev->freeObjects) {
++ tn = dev->freeObjects;
++ dev->freeObjects =
++ (yaffs_Object *) (dev->freeObjects->siblings.next);
++ dev->nFreeObjects--;
++
++ /* Now sweeten it up... */
++
++ memset(tn, 0, sizeof(yaffs_Object));
++ tn->myDev = dev;
++ tn->chunkId = -1;
++ tn->variantType = YAFFS_OBJECT_TYPE_UNKNOWN;
++ INIT_LIST_HEAD(&(tn->hardLinks));
++ INIT_LIST_HEAD(&(tn->hashLink));
++ INIT_LIST_HEAD(&tn->siblings);
++
++ /* Add it to the lost and found directory.
++ * NB Can't put root or lostNFound in lostNFound so
++ * check if lostNFound exists first
++ */
++ if (dev->lostNFoundDir) {
++ yaffs_AddObjectToDirectory(dev->lostNFoundDir, tn);
++ }
++ }
++
++ return tn;
++}
++
++static yaffs_Object *yaffs_CreateFakeDirectory(yaffs_Device * dev, int number,
++ __u32 mode)
++{
++
++ yaffs_Object *obj =
++ yaffs_CreateNewObject(dev, number, YAFFS_OBJECT_TYPE_DIRECTORY);
++ if (obj) {
++ obj->fake = 1; /* it is fake so it has no NAND presence... */
++ obj->renameAllowed = 0; /* ... and we're not allowed to rename it... */
++ obj->unlinkAllowed = 0; /* ... or unlink it */
++ obj->deleted = 0;
++ obj->unlinked = 0;
++ obj->yst_mode = mode;
++ obj->myDev = dev;
++ obj->chunkId = 0; /* Not a valid chunk. */
++ }
++
++ return obj;
++
++}
++
++static void yaffs_UnhashObject(yaffs_Object * tn)
++{
++ int bucket;
++ yaffs_Device *dev = tn->myDev;
++
++ /* If it is still linked into the bucket list, free from the list */
++ if (!list_empty(&tn->hashLink)) {
++ list_del_init(&tn->hashLink);
++ bucket = yaffs_HashFunction(tn->objectId);
++ dev->objectBucket[bucket].count--;
++ }
++
++}
++
++/* FreeObject frees up a Object and puts it back on the free list */
++static void yaffs_FreeObject(yaffs_Object * tn)
++{
++
++ yaffs_Device *dev = tn->myDev;
++
++#ifdef __KERNEL__
++ if (tn->myInode) {
++ /* We're still hooked up to a cached inode.
++ * Don't delete now, but mark for later deletion
++ */
++ tn->deferedFree = 1;
++ return;
++ }
++#endif
++
++ yaffs_UnhashObject(tn);
++
++ /* Link into the free list. */
++ tn->siblings.next = (struct list_head *)(dev->freeObjects);
++ dev->freeObjects = tn;
++ dev->nFreeObjects++;
++}
++
++#ifdef __KERNEL__
++
++void yaffs_HandleDeferedFree(yaffs_Object * obj)
++{
++ if (obj->deferedFree) {
++ yaffs_FreeObject(obj);
++ }
++}
++
++#endif
++
++static void yaffs_DeinitialiseObjects(yaffs_Device * dev)
++{
++ /* Free the list of allocated Objects */
++
++ yaffs_ObjectList *tmp;
++
++ while (dev->allocatedObjectList) {
++ tmp = dev->allocatedObjectList->next;
++ YFREE(dev->allocatedObjectList->objects);
++ YFREE(dev->allocatedObjectList);
++
++ dev->allocatedObjectList = tmp;
++ }
++
++ dev->freeObjects = NULL;
++ dev->nFreeObjects = 0;
++}
++
++static void yaffs_InitialiseObjects(yaffs_Device * dev)
++{
++ int i;
++
++ dev->allocatedObjectList = NULL;
++ dev->freeObjects = NULL;
++ dev->nFreeObjects = 0;
++
++ for (i = 0; i < YAFFS_NOBJECT_BUCKETS; i++) {
++ INIT_LIST_HEAD(&dev->objectBucket[i].list);
++ dev->objectBucket[i].count = 0;
++ }
++
++}
++
++static int yaffs_FindNiceObjectBucket(yaffs_Device * dev)
++{
++ static int x = 0;
++ int i;
++ int l = 999;
++ int lowest = 999999;
++
++ /* First let's see if we can find one that's empty. */
++
++ for (i = 0; i < 10 && lowest > 0; i++) {
++ x++;
++ x %= YAFFS_NOBJECT_BUCKETS;
++ if (dev->objectBucket[x].count < lowest) {
++ lowest = dev->objectBucket[x].count;
++ l = x;
++ }
++
++ }
++
++ /* If we didn't find an empty list, then try
++ * looking a bit further for a short one
++ */
++
++ for (i = 0; i < 10 && lowest > 3; i++) {
++ x++;
++ x %= YAFFS_NOBJECT_BUCKETS;
++ if (dev->objectBucket[x].count < lowest) {
++ lowest = dev->objectBucket[x].count;
++ l = x;
++ }
++
++ }
++
++ return l;
++}
++
++static int yaffs_CreateNewObjectNumber(yaffs_Device * dev)
++{
++ int bucket = yaffs_FindNiceObjectBucket(dev);
++
++ /* Now find an object value that has not already been taken
++ * by scanning the list.
++ */
++
++ int found = 0;
++ struct list_head *i;
++
++ __u32 n = (__u32) bucket;
++
++ /* yaffs_CheckObjectHashSanity(); */
++
++ while (!found) {
++ found = 1;
++ n += YAFFS_NOBJECT_BUCKETS;
++ if (1 || dev->objectBucket[bucket].count > 0) {
++ list_for_each(i, &dev->objectBucket[bucket].list) {
++ /* If there is already one in the list */
++ if (i
++ && list_entry(i, yaffs_Object,
++ hashLink)->objectId == n) {
++ found = 0;
++ }
++ }
++ }
++ }
++
++
++ return n;
++}
++
++static void yaffs_HashObject(yaffs_Object * in)
++{
++ int bucket = yaffs_HashFunction(in->objectId);
++ yaffs_Device *dev = in->myDev;
++
++ list_add(&in->hashLink, &dev->objectBucket[bucket].list);
++ dev->objectBucket[bucket].count++;
++
++}
++
++yaffs_Object *yaffs_FindObjectByNumber(yaffs_Device * dev, __u32 number)
++{
++ int bucket = yaffs_HashFunction(number);
++ struct list_head *i;
++ yaffs_Object *in;
++
++ list_for_each(i, &dev->objectBucket[bucket].list) {
++ /* Look if it is in the list */
++ if (i) {
++ in = list_entry(i, yaffs_Object, hashLink);
++ if (in->objectId == number) {
++#ifdef __KERNEL__
++ /* Don't tell the VFS about this one if it is defered free */
++ if (in->deferedFree)
++ return NULL;
++#endif
++
++ return in;
++ }
++ }
++ }
++
++ return NULL;
++}
++
++yaffs_Object *yaffs_CreateNewObject(yaffs_Device * dev, int number,
++ yaffs_ObjectType type)
++{
++
++ yaffs_Object *theObject;
++
++ if (number < 0) {
++ number = yaffs_CreateNewObjectNumber(dev);
++ }
++
++ theObject = yaffs_AllocateEmptyObject(dev);
++
++ if (theObject) {
++ theObject->fake = 0;
++ theObject->renameAllowed = 1;
++ theObject->unlinkAllowed = 1;
++ theObject->objectId = number;
++ yaffs_HashObject(theObject);
++ theObject->variantType = type;
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_WinFileTimeNow(theObject->win_atime);
++ theObject->win_ctime[0] = theObject->win_mtime[0] =
++ theObject->win_atime[0];
++ theObject->win_ctime[1] = theObject->win_mtime[1] =
++ theObject->win_atime[1];
++
++#else
++
++ theObject->yst_atime = theObject->yst_mtime =
++ theObject->yst_ctime = Y_CURRENT_TIME;
++#endif
++ switch (type) {
++ case YAFFS_OBJECT_TYPE_FILE:
++ theObject->variant.fileVariant.fileSize = 0;
++ theObject->variant.fileVariant.scannedFileSize = 0;
++ theObject->variant.fileVariant.shrinkSize = 0xFFFFFFFF; /* max __u32 */
++ theObject->variant.fileVariant.topLevel = 0;
++ theObject->variant.fileVariant.top =
++ yaffs_GetTnode(dev);
++ break;
++ case YAFFS_OBJECT_TYPE_DIRECTORY:
++ INIT_LIST_HEAD(&theObject->variant.directoryVariant.
++ children);
++ break;
++ case YAFFS_OBJECT_TYPE_SYMLINK:
++ case YAFFS_OBJECT_TYPE_HARDLINK:
++ case YAFFS_OBJECT_TYPE_SPECIAL:
++ /* No action required */
++ break;
++ case YAFFS_OBJECT_TYPE_UNKNOWN:
++ /* todo this should not happen */
++ break;
++ }
++ }
++
++ return theObject;
++}
++
++static yaffs_Object *yaffs_FindOrCreateObjectByNumber(yaffs_Device * dev,
++ int number,
++ yaffs_ObjectType type)
++{
++ yaffs_Object *theObject = NULL;
++
++ if (number > 0) {
++ theObject = yaffs_FindObjectByNumber(dev, number);
++ }
++
++ if (!theObject) {
++ theObject = yaffs_CreateNewObject(dev, number, type);
++ }
++
++ return theObject;
++
++}
++
++
++static YCHAR *yaffs_CloneString(const YCHAR * str)
++{
++ YCHAR *newStr = NULL;
++
++ if (str && *str) {
++ newStr = YMALLOC((yaffs_strlen(str) + 1) * sizeof(YCHAR));
++ yaffs_strcpy(newStr, str);
++ }
++
++ return newStr;
++
++}
++
++/*
++ * Mknod (create) a new object.
++ * equivalentObject only has meaning for a hard link;
++ * aliasString only has meaning for a sumlink.
++ * rdev only has meaning for devices (a subset of special objects)
++ */
++
++static yaffs_Object *yaffs_MknodObject(yaffs_ObjectType type,
++ yaffs_Object * parent,
++ const YCHAR * name,
++ __u32 mode,
++ __u32 uid,
++ __u32 gid,
++ yaffs_Object * equivalentObject,
++ const YCHAR * aliasString, __u32 rdev)
++{
++ yaffs_Object *in;
++
++ yaffs_Device *dev = parent->myDev;
++
++ /* Check if the entry exists. If it does then fail the call since we don't want a dup.*/
++ if (yaffs_FindObjectByName(parent, name)) {
++ return NULL;
++ }
++
++ in = yaffs_CreateNewObject(dev, -1, type);
++
++ if (in) {
++ in->chunkId = -1;
++ in->valid = 1;
++ in->variantType = type;
++
++ in->yst_mode = mode;
++
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_WinFileTimeNow(in->win_atime);
++ in->win_ctime[0] = in->win_mtime[0] = in->win_atime[0];
++ in->win_ctime[1] = in->win_mtime[1] = in->win_atime[1];
++
++#else
++ in->yst_atime = in->yst_mtime = in->yst_ctime = Y_CURRENT_TIME;
++
++ in->yst_rdev = rdev;
++ in->yst_uid = uid;
++ in->yst_gid = gid;
++#endif
++ in->nDataChunks = 0;
++
++ yaffs_SetObjectName(in, name);
++ in->dirty = 1;
++
++ yaffs_AddObjectToDirectory(parent, in);
++
++ in->myDev = parent->myDev;
++
++ switch (type) {
++ case YAFFS_OBJECT_TYPE_SYMLINK:
++ in->variant.symLinkVariant.alias =
++ yaffs_CloneString(aliasString);
++ break;
++ case YAFFS_OBJECT_TYPE_HARDLINK:
++ in->variant.hardLinkVariant.equivalentObject =
++ equivalentObject;
++ in->variant.hardLinkVariant.equivalentObjectId =
++ equivalentObject->objectId;
++ list_add(&in->hardLinks, &equivalentObject->hardLinks);
++ break;
++ case YAFFS_OBJECT_TYPE_FILE:
++ case YAFFS_OBJECT_TYPE_DIRECTORY:
++ case YAFFS_OBJECT_TYPE_SPECIAL:
++ case YAFFS_OBJECT_TYPE_UNKNOWN:
++ /* do nothing */
++ break;
++ }
++
++ if (yaffs_UpdateObjectHeader(in, name, 0, 0, 0) < 0) {
++ /* Could not create the object header, fail the creation */
++ yaffs_DestroyObject(in);
++ in = NULL;
++ }
++
++ }
++
++ return in;
++}
++
++yaffs_Object *yaffs_MknodFile(yaffs_Object * parent, const YCHAR * name,
++ __u32 mode, __u32 uid, __u32 gid)
++{
++ return yaffs_MknodObject(YAFFS_OBJECT_TYPE_FILE, parent, name, mode,
++ uid, gid, NULL, NULL, 0);
++}
++
++yaffs_Object *yaffs_MknodDirectory(yaffs_Object * parent, const YCHAR * name,
++ __u32 mode, __u32 uid, __u32 gid)
++{
++ return yaffs_MknodObject(YAFFS_OBJECT_TYPE_DIRECTORY, parent, name,
++ mode, uid, gid, NULL, NULL, 0);
++}
++
++yaffs_Object *yaffs_MknodSpecial(yaffs_Object * parent, const YCHAR * name,
++ __u32 mode, __u32 uid, __u32 gid, __u32 rdev)
++{
++ return yaffs_MknodObject(YAFFS_OBJECT_TYPE_SPECIAL, parent, name, mode,
++ uid, gid, NULL, NULL, rdev);
++}
++
++yaffs_Object *yaffs_MknodSymLink(yaffs_Object * parent, const YCHAR * name,
++ __u32 mode, __u32 uid, __u32 gid,
++ const YCHAR * alias)
++{
++ return yaffs_MknodObject(YAFFS_OBJECT_TYPE_SYMLINK, parent, name, mode,
++ uid, gid, NULL, alias, 0);
++}
++
++/* yaffs_Link returns the object id of the equivalent object.*/
++yaffs_Object *yaffs_Link(yaffs_Object * parent, const YCHAR * name,
++ yaffs_Object * equivalentObject)
++{
++ /* Get the real object in case we were fed a hard link as an equivalent object */
++ equivalentObject = yaffs_GetEquivalentObject(equivalentObject);
++
++ if (yaffs_MknodObject
++ (YAFFS_OBJECT_TYPE_HARDLINK, parent, name, 0, 0, 0,
++ equivalentObject, NULL, 0)) {
++ return equivalentObject;
++ } else {
++ return NULL;
++ }
++
++}
++
++static int yaffs_ChangeObjectName(yaffs_Object * obj, yaffs_Object * newDir,
++ const YCHAR * newName, int force, int shadows)
++{
++ int unlinkOp;
++ int deleteOp;
++
++ yaffs_Object *existingTarget;
++
++ if (newDir == NULL) {
++ newDir = obj->parent; /* use the old directory */
++ }
++
++ if (newDir->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR
++ ("tragendy: yaffs_ChangeObjectName: newDir is not a directory"
++ TENDSTR)));
++ YBUG();
++ }
++
++ /* TODO: Do we need this different handling for YAFFS2 and YAFFS1?? */
++ if (obj->myDev->isYaffs2) {
++ unlinkOp = (newDir == obj->myDev->unlinkedDir);
++ } else {
++ unlinkOp = (newDir == obj->myDev->unlinkedDir
++ && obj->variantType == YAFFS_OBJECT_TYPE_FILE);
++ }
++
++ deleteOp = (newDir == obj->myDev->deletedDir);
++
++ existingTarget = yaffs_FindObjectByName(newDir, newName);
++
++ /* If the object is a file going into the unlinked directory,
++ * then it is OK to just stuff it in since duplicate names are allowed.
++ * else only proceed if the new name does not exist and if we're putting
++ * it into a directory.
++ */
++ if ((unlinkOp ||
++ deleteOp ||
++ force ||
++ (shadows > 0) ||
++ !existingTarget) &&
++ newDir->variantType == YAFFS_OBJECT_TYPE_DIRECTORY) {
++ yaffs_SetObjectName(obj, newName);
++ obj->dirty = 1;
++
++ yaffs_AddObjectToDirectory(newDir, obj);
++
++ if (unlinkOp)
++ obj->unlinked = 1;
++
++ /* If it is a deletion then we mark it as a shrink for gc purposes. */
++ if (yaffs_UpdateObjectHeader(obj, newName, 0, deleteOp, shadows)>= 0)
++ return YAFFS_OK;
++ }
++
++ return YAFFS_FAIL;
++}
++
++int yaffs_RenameObject(yaffs_Object * oldDir, const YCHAR * oldName,
++ yaffs_Object * newDir, const YCHAR * newName)
++{
++ yaffs_Object *obj;
++ yaffs_Object *existingTarget;
++ int force = 0;
++
++#ifdef CONFIG_YAFFS_CASE_INSENSITIVE
++ /* Special case for case insemsitive systems (eg. WinCE).
++ * While look-up is case insensitive, the name isn't.
++ * Therefore we might want to change x.txt to X.txt
++ */
++ if (oldDir == newDir && yaffs_strcmp(oldName, newName) == 0) {
++ force = 1;
++ }
++#endif
++
++ obj = yaffs_FindObjectByName(oldDir, oldName);
++ /* Check new name to long. */
++ if (obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK &&
++ yaffs_strlen(newName) > YAFFS_MAX_ALIAS_LENGTH)
++ /* ENAMETOOLONG */
++ return YAFFS_FAIL;
++ else if (obj->variantType != YAFFS_OBJECT_TYPE_SYMLINK &&
++ yaffs_strlen(newName) > YAFFS_MAX_NAME_LENGTH)
++ /* ENAMETOOLONG */
++ return YAFFS_FAIL;
++
++ if (obj && obj->renameAllowed) {
++
++ /* Now do the handling for an existing target, if there is one */
++
++ existingTarget = yaffs_FindObjectByName(newDir, newName);
++ if (existingTarget &&
++ existingTarget->variantType == YAFFS_OBJECT_TYPE_DIRECTORY &&
++ !list_empty(&existingTarget->variant.directoryVariant.children)) {
++ /* There is a target that is a non-empty directory, so we fail */
++ return YAFFS_FAIL; /* EEXIST or ENOTEMPTY */
++ } else if (existingTarget && existingTarget != obj) {
++ /* Nuke the target first, using shadowing,
++ * but only if it isn't the same object
++ */
++ yaffs_ChangeObjectName(obj, newDir, newName, force,
++ existingTarget->objectId);
++ yaffs_UnlinkObject(existingTarget);
++ }
++
++ return yaffs_ChangeObjectName(obj, newDir, newName, 1, 0);
++ }
++ return YAFFS_FAIL;
++}
++
++/*------------------------- Block Management and Page Allocation ----------------*/
++
++static int yaffs_InitialiseBlocks(yaffs_Device * dev)
++{
++ int nBlocks = dev->internalEndBlock - dev->internalStartBlock + 1;
++
++ dev->allocationBlock = -1; /* force it to get a new one */
++
++ /* Todo we're assuming the malloc will pass. */
++ dev->blockInfo = YMALLOC(nBlocks * sizeof(yaffs_BlockInfo));
++ if(!dev->blockInfo){
++ dev->blockInfo = YMALLOC_ALT(nBlocks * sizeof(yaffs_BlockInfo));
++ dev->blockInfoAlt = 1;
++ }
++ else
++ dev->blockInfoAlt = 0;
++
++ /* Set up dynamic blockinfo stuff. */
++ dev->chunkBitmapStride = (dev->nChunksPerBlock + 7) / 8; /* round up bytes */
++ dev->chunkBits = YMALLOC(dev->chunkBitmapStride * nBlocks);
++ if(!dev->chunkBits){
++ dev->chunkBits = YMALLOC_ALT(dev->chunkBitmapStride * nBlocks);
++ dev->chunkBitsAlt = 1;
++ }
++ else
++ dev->chunkBitsAlt = 0;
++
++ if (dev->blockInfo && dev->chunkBits) {
++ memset(dev->blockInfo, 0, nBlocks * sizeof(yaffs_BlockInfo));
++ memset(dev->chunkBits, 0, dev->chunkBitmapStride * nBlocks);
++ return YAFFS_OK;
++ }
++
++ return YAFFS_FAIL;
++
++}
++
++static void yaffs_DeinitialiseBlocks(yaffs_Device * dev)
++{
++ if(dev->blockInfoAlt)
++ YFREE_ALT(dev->blockInfo);
++ else
++ YFREE(dev->blockInfo);
++ dev->blockInfoAlt = 0;
++
++ dev->blockInfo = NULL;
++
++ if(dev->chunkBitsAlt)
++ YFREE_ALT(dev->chunkBits);
++ else
++ YFREE(dev->chunkBits);
++ dev->chunkBitsAlt = 0;
++ dev->chunkBits = NULL;
++}
++
++static int yaffs_BlockNotDisqualifiedFromGC(yaffs_Device * dev,
++ yaffs_BlockInfo * bi)
++{
++ int i;
++ __u32 seq;
++ yaffs_BlockInfo *b;
++
++ if (!dev->isYaffs2)
++ return 1; /* disqualification only applies to yaffs2. */
++
++ if (!bi->hasShrinkHeader)
++ return 1; /* can gc */
++
++ /* Find the oldest dirty sequence number if we don't know it and save it
++ * so we don't have to keep recomputing it.
++ */
++ if (!dev->oldestDirtySequence) {
++ seq = dev->sequenceNumber;
++
++ for (i = dev->internalStartBlock; i <= dev->internalEndBlock;
++ i++) {
++ b = yaffs_GetBlockInfo(dev, i);
++ if (b->blockState == YAFFS_BLOCK_STATE_FULL &&
++ (b->pagesInUse - b->softDeletions) <
++ dev->nChunksPerBlock && b->sequenceNumber < seq) {
++ seq = b->sequenceNumber;
++ }
++ }
++ dev->oldestDirtySequence = seq;
++ }
++
++ /* Can't do gc of this block if there are any blocks older than this one that have
++ * discarded pages.
++ */
++ return (bi->sequenceNumber <= dev->oldestDirtySequence);
++
++}
++
++/* FindDiretiestBlock is used to select the dirtiest block (or close enough)
++ * for garbage collection.
++ */
++
++static int yaffs_FindBlockForGarbageCollection(yaffs_Device * dev,
++ int aggressive)
++{
++
++ int b = dev->currentDirtyChecker;
++
++ int i;
++ int iterations;
++ int dirtiest = -1;
++ int pagesInUse;
++ int prioritised=0;
++ yaffs_BlockInfo *bi;
++ static int nonAggressiveSkip = 0;
++ int pendingPrioritisedExist = 0;
++
++ /* First let's see if we need to grab a prioritised block */
++ if(dev->hasPendingPrioritisedGCs){
++ for(i = dev->internalStartBlock; i < dev->internalEndBlock && !prioritised; i++){
++
++ bi = yaffs_GetBlockInfo(dev, i);
++ if(bi->gcPrioritise) {
++ pendingPrioritisedExist = 1;
++ if(bi->blockState == YAFFS_BLOCK_STATE_FULL &&
++ yaffs_BlockNotDisqualifiedFromGC(dev, bi)){
++ pagesInUse = (bi->pagesInUse - bi->softDeletions);
++ dirtiest = i;
++ prioritised = 1;
++ aggressive = 1; /* Fool the non-aggressive skip logiv below */
++ }
++ }
++ }
++
++ if(!pendingPrioritisedExist) /* None found, so we can clear this */
++ dev->hasPendingPrioritisedGCs = 0;
++ }
++
++ /* If we're doing aggressive GC then we are happy to take a less-dirty block, and
++ * search harder.
++ * else (we're doing a leasurely gc), then we only bother to do this if the
++ * block has only a few pages in use.
++ */
++
++ nonAggressiveSkip--;
++
++ if (!aggressive && (nonAggressiveSkip > 0)) {
++ return -1;
++ }
++
++ if(!prioritised)
++ pagesInUse =
++ (aggressive) ? dev->nChunksPerBlock : YAFFS_PASSIVE_GC_CHUNKS + 1;
++
++ if (aggressive) {
++ iterations =
++ dev->internalEndBlock - dev->internalStartBlock + 1;
++ } else {
++ iterations =
++ dev->internalEndBlock - dev->internalStartBlock + 1;
++ iterations = iterations / 16;
++ if (iterations > 200) {
++ iterations = 200;
++ }
++ }
++
++ for (i = 0; i <= iterations && pagesInUse > 0 && !prioritised; i++) {
++ b++;
++ if (b < dev->internalStartBlock || b > dev->internalEndBlock) {
++ b = dev->internalStartBlock;
++ }
++
++ if (b < dev->internalStartBlock || b > dev->internalEndBlock) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR("**>> Block %d is not valid" TENDSTR), b));
++ YBUG();
++ }
++
++ bi = yaffs_GetBlockInfo(dev, b);
++
++#if 0
++ if (bi->blockState == YAFFS_BLOCK_STATE_CHECKPOINT) {
++ dirtiest = b;
++ pagesInUse = 0;
++ }
++ else
++#endif
++
++ if (bi->blockState == YAFFS_BLOCK_STATE_FULL &&
++ (bi->pagesInUse - bi->softDeletions) < pagesInUse &&
++ yaffs_BlockNotDisqualifiedFromGC(dev, bi)) {
++ dirtiest = b;
++ pagesInUse = (bi->pagesInUse - bi->softDeletions);
++ }
++ }
++
++ dev->currentDirtyChecker = b;
++
++ if (dirtiest > 0) {
++ T(YAFFS_TRACE_GC,
++ (TSTR("GC Selected block %d with %d free, prioritised:%d" TENDSTR), dirtiest,
++ dev->nChunksPerBlock - pagesInUse,prioritised));
++ }
++
++ dev->oldestDirtySequence = 0;
++
++ if (dirtiest > 0) {
++ nonAggressiveSkip = 4;
++ }
++
++ return dirtiest;
++}
++
++static void yaffs_BlockBecameDirty(yaffs_Device * dev, int blockNo)
++{
++ yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, blockNo);
++
++ int erasedOk = 0;
++
++ /* If the block is still healthy erase it and mark as clean.
++ * If the block has had a data failure, then retire it.
++ */
++
++ T(YAFFS_TRACE_GC | YAFFS_TRACE_ERASE,
++ (TSTR("yaffs_BlockBecameDirty block %d state %d %s"TENDSTR),
++ blockNo, bi->blockState, (bi->needsRetiring) ? "needs retiring" : ""));
++
++ bi->blockState = YAFFS_BLOCK_STATE_DIRTY;
++
++ if (!bi->needsRetiring) {
++ yaffs_InvalidateCheckpoint(dev);
++ erasedOk = yaffs_EraseBlockInNAND(dev, blockNo);
++ if (!erasedOk) {
++ dev->nErasureFailures++;
++ T(YAFFS_TRACE_ERROR | YAFFS_TRACE_BAD_BLOCKS,
++ (TSTR("**>> Erasure failed %d" TENDSTR), blockNo));
++ }
++ }
++
++ if (erasedOk && (yaffs_traceMask & YAFFS_TRACE_ERASE)) {
++ int i;
++ for (i = 0; i < dev->nChunksPerBlock; i++) {
++ if (!yaffs_CheckChunkErased
++ (dev, blockNo * dev->nChunksPerBlock + i)) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ (">>Block %d erasure supposedly OK, but chunk %d not erased"
++ TENDSTR), blockNo, i));
++ }
++ }
++ }
++
++ if (erasedOk) {
++ /* Clean it up... */
++ bi->blockState = YAFFS_BLOCK_STATE_EMPTY;
++ dev->nErasedBlocks++;
++ bi->pagesInUse = 0;
++ bi->softDeletions = 0;
++ bi->hasShrinkHeader = 0;
++ bi->skipErasedCheck = 1; /* This is clean, so no need to check */
++ bi->gcPrioritise = 0;
++ yaffs_ClearChunkBits(dev, blockNo);
++
++ T(YAFFS_TRACE_ERASE,
++ (TSTR("Erased block %d" TENDSTR), blockNo));
++ } else {
++ dev->nFreeChunks -= dev->nChunksPerBlock; /* We lost a block of free space */
++
++ yaffs_RetireBlock(dev, blockNo);
++ T(YAFFS_TRACE_ERROR | YAFFS_TRACE_BAD_BLOCKS,
++ (TSTR("**>> Block %d retired" TENDSTR), blockNo));
++ }
++}
++
++static int yaffs_FindBlockForAllocation(yaffs_Device * dev)
++{
++ int i;
++
++ yaffs_BlockInfo *bi;
++
++ if (dev->nErasedBlocks < 1) {
++ /* Hoosterman we've got a problem.
++ * Can't get space to gc
++ */
++ T(YAFFS_TRACE_ERROR,
++ (TSTR("yaffs tragedy: no more eraased blocks" TENDSTR)));
++
++ return -1;
++ }
++
++ /* Find an empty block. */
++
++ for (i = dev->internalStartBlock; i <= dev->internalEndBlock; i++) {
++ dev->allocationBlockFinder++;
++ if (dev->allocationBlockFinder < dev->internalStartBlock
++ || dev->allocationBlockFinder > dev->internalEndBlock) {
++ dev->allocationBlockFinder = dev->internalStartBlock;
++ }
++
++ bi = yaffs_GetBlockInfo(dev, dev->allocationBlockFinder);
++
++ if (bi->blockState == YAFFS_BLOCK_STATE_EMPTY) {
++ bi->blockState = YAFFS_BLOCK_STATE_ALLOCATING;
++ dev->sequenceNumber++;
++ bi->sequenceNumber = dev->sequenceNumber;
++ dev->nErasedBlocks--;
++ T(YAFFS_TRACE_ALLOCATE,
++ (TSTR("Allocated block %d, seq %d, %d left" TENDSTR),
++ dev->allocationBlockFinder, dev->sequenceNumber,
++ dev->nErasedBlocks));
++ return dev->allocationBlockFinder;
++ }
++ }
++
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR
++ ("yaffs tragedy: no more eraased blocks, but there should have been %d"
++ TENDSTR), dev->nErasedBlocks));
++
++ return -1;
++}
++
++
++// Check if there's space to allocate...
++// Thinks.... do we need top make this ths same as yaffs_GetFreeChunks()?
++static int yaffs_CheckSpaceForAllocation(yaffs_Device * dev)
++{
++ int reservedChunks;
++ int reservedBlocks = dev->nReservedBlocks;
++ int checkpointBlocks;
++
++ checkpointBlocks = dev->nCheckpointReservedBlocks - dev->blocksInCheckpoint;
++ if(checkpointBlocks < 0)
++ checkpointBlocks = 0;
++
++ reservedChunks = ((reservedBlocks + checkpointBlocks) * dev->nChunksPerBlock);
++
++ return (dev->nFreeChunks > reservedChunks);
++}
++
++static int yaffs_AllocateChunk(yaffs_Device * dev, int useReserve, yaffs_BlockInfo **blockUsedPtr)
++{
++ int retVal;
++ yaffs_BlockInfo *bi;
++
++ if (dev->allocationBlock < 0) {
++ /* Get next block to allocate off */
++ dev->allocationBlock = yaffs_FindBlockForAllocation(dev);
++ dev->allocationPage = 0;
++ }
++
++ if (!useReserve && !yaffs_CheckSpaceForAllocation(dev)) {
++ /* Not enough space to allocate unless we're allowed to use the reserve. */
++ return -1;
++ }
++
++ if (dev->nErasedBlocks < dev->nReservedBlocks
++ && dev->allocationPage == 0) {
++ T(YAFFS_TRACE_ALLOCATE, (TSTR("Allocating reserve" TENDSTR)));
++ }
++
++ /* Next page please.... */
++ if (dev->allocationBlock >= 0) {
++ bi = yaffs_GetBlockInfo(dev, dev->allocationBlock);
++
++ retVal = (dev->allocationBlock * dev->nChunksPerBlock) +
++ dev->allocationPage;
++ bi->pagesInUse++;
++ yaffs_SetChunkBit(dev, dev->allocationBlock,
++ dev->allocationPage);
++
++ dev->allocationPage++;
++
++ dev->nFreeChunks--;
++
++ /* If the block is full set the state to full */
++ if (dev->allocationPage >= dev->nChunksPerBlock) {
++ bi->blockState = YAFFS_BLOCK_STATE_FULL;
++ dev->allocationBlock = -1;
++ }
++
++ if(blockUsedPtr)
++ *blockUsedPtr = bi;
++
++ return retVal;
++ }
++
++ T(YAFFS_TRACE_ERROR,
++ (TSTR("!!!!!!!!! Allocator out !!!!!!!!!!!!!!!!!" TENDSTR)));
++
++ return -1;
++}
++
++static int yaffs_GetErasedChunks(yaffs_Device * dev)
++{
++ int n;
++
++ n = dev->nErasedBlocks * dev->nChunksPerBlock;
++
++ if (dev->allocationBlock > 0) {
++ n += (dev->nChunksPerBlock - dev->allocationPage);
++ }
++
++ return n;
++
++}
++
++static int yaffs_GarbageCollectBlock(yaffs_Device * dev, int block)
++{
++ int oldChunk;
++ int newChunk;
++ int chunkInBlock;
++ int markNAND;
++ int retVal = YAFFS_OK;
++ int cleanups = 0;
++ int i;
++ int isCheckpointBlock;
++
++ int chunksBefore = yaffs_GetErasedChunks(dev);
++ int chunksAfter;
++
++ yaffs_ExtendedTags tags;
++
++ yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, block);
++
++ yaffs_Object *object;
++
++ isCheckpointBlock = (bi->blockState == YAFFS_BLOCK_STATE_CHECKPOINT);
++
++ bi->blockState = YAFFS_BLOCK_STATE_COLLECTING;
++
++ T(YAFFS_TRACE_TRACING,
++ (TSTR("Collecting block %d, in use %d, shrink %d, " TENDSTR), block,
++ bi->pagesInUse, bi->hasShrinkHeader));
++
++ /*yaffs_VerifyFreeChunks(dev); */
++
++ bi->hasShrinkHeader = 0; /* clear the flag so that the block can erase */
++
++ /* Take off the number of soft deleted entries because
++ * they're going to get really deleted during GC.
++ */
++ dev->nFreeChunks -= bi->softDeletions;
++
++ dev->isDoingGC = 1;
++
++ if (isCheckpointBlock ||
++ !yaffs_StillSomeChunkBits(dev, block)) {
++ T(YAFFS_TRACE_TRACING,
++ (TSTR
++ ("Collecting block %d that has no chunks in use" TENDSTR),
++ block));
++ yaffs_BlockBecameDirty(dev, block);
++ } else {
++
++ __u8 *buffer = yaffs_GetTempBuffer(dev, __LINE__);
++
++ for (chunkInBlock = 0, oldChunk = block * dev->nChunksPerBlock;
++ chunkInBlock < dev->nChunksPerBlock
++ && yaffs_StillSomeChunkBits(dev, block);
++ chunkInBlock++, oldChunk++) {
++ if (yaffs_CheckChunkBit(dev, block, chunkInBlock)) {
++
++ /* This page is in use and might need to be copied off */
++
++ markNAND = 1;
++
++ yaffs_InitialiseTags(&tags);
++
++ yaffs_ReadChunkWithTagsFromNAND(dev, oldChunk,
++ buffer, &tags);
++
++ object =
++ yaffs_FindObjectByNumber(dev,
++ tags.objectId);
++
++ T(YAFFS_TRACE_GC_DETAIL,
++ (TSTR
++ ("Collecting page %d, %d %d %d " TENDSTR),
++ chunkInBlock, tags.objectId, tags.chunkId,
++ tags.byteCount));
++
++ if (!object) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("page %d in gc has no object "
++ TENDSTR), oldChunk));
++ }
++
++ if (object && object->deleted
++ && tags.chunkId != 0) {
++ /* Data chunk in a deleted file, throw it away
++ * It's a soft deleted data chunk,
++ * No need to copy this, just forget about it and
++ * fix up the object.
++ */
++
++ object->nDataChunks--;
++
++ if (object->nDataChunks <= 0) {
++ /* remeber to clean up the object */
++ dev->gcCleanupList[cleanups] =
++ tags.objectId;
++ cleanups++;
++ }
++ markNAND = 0;
++ } else if (0
++ /* Todo object && object->deleted && object->nDataChunks == 0 */
++ ) {
++ /* Deleted object header with no data chunks.
++ * Can be discarded and the file deleted.
++ */
++ object->chunkId = 0;
++ yaffs_FreeTnode(object->myDev,
++ object->variant.
++ fileVariant.top);
++ object->variant.fileVariant.top = NULL;
++ yaffs_DoGenericObjectDeletion(object);
++
++ } else if (object) {
++ /* It's either a data chunk in a live file or
++ * an ObjectHeader, so we're interested in it.
++ * NB Need to keep the ObjectHeaders of deleted files
++ * until the whole file has been deleted off
++ */
++ tags.serialNumber++;
++
++ dev->nGCCopies++;
++
++ if (tags.chunkId == 0) {
++ /* It is an object Id,
++ * We need to nuke the shrinkheader flags first
++ * We no longer want the shrinkHeader flag since its work is done
++ * and if it is left in place it will mess up scanning.
++ * Also, clear out any shadowing stuff
++ */
++
++ yaffs_ObjectHeader *oh;
++ oh = (yaffs_ObjectHeader *)buffer;
++ oh->isShrink = 0;
++ oh->shadowsObject = -1;
++ tags.extraShadows = 0;
++ tags.extraIsShrinkHeader = 0;
++ }
++
++ newChunk =
++ yaffs_WriteNewChunkWithTagsToNAND(dev, buffer, &tags, 1);
++
++ if (newChunk < 0) {
++ retVal = YAFFS_FAIL;
++ } else {
++
++ /* Ok, now fix up the Tnodes etc. */
++
++ if (tags.chunkId == 0) {
++ /* It's a header */
++ object->chunkId = newChunk;
++ object->serial = tags.serialNumber;
++ } else {
++ /* It's a data chunk */
++ yaffs_PutChunkIntoFile
++ (object,
++ tags.chunkId,
++ newChunk, 0);
++ }
++ }
++ }
++
++ yaffs_DeleteChunk(dev, oldChunk, markNAND, __LINE__);
++
++ }
++ }
++
++ yaffs_ReleaseTempBuffer(dev, buffer, __LINE__);
++
++
++ /* Do any required cleanups */
++ for (i = 0; i < cleanups; i++) {
++ /* Time to delete the file too */
++ object =
++ yaffs_FindObjectByNumber(dev,
++ dev->gcCleanupList[i]);
++ if (object) {
++ yaffs_FreeTnode(dev,
++ object->variant.fileVariant.
++ top);
++ object->variant.fileVariant.top = NULL;
++ T(YAFFS_TRACE_GC,
++ (TSTR
++ ("yaffs: About to finally delete object %d"
++ TENDSTR), object->objectId));
++ yaffs_DoGenericObjectDeletion(object);
++ object->myDev->nDeletedFiles--;
++ }
++
++ }
++
++ }
++
++ if (chunksBefore >= (chunksAfter = yaffs_GetErasedChunks(dev))) {
++ T(YAFFS_TRACE_GC,
++ (TSTR
++ ("gc did not increase free chunks before %d after %d"
++ TENDSTR), chunksBefore, chunksAfter));
++ }
++
++ dev->isDoingGC = 0;
++
++ return YAFFS_OK;
++}
++
++/* New garbage collector
++ * If we're very low on erased blocks then we do aggressive garbage collection
++ * otherwise we do "leasurely" garbage collection.
++ * Aggressive gc looks further (whole array) and will accept less dirty blocks.
++ * Passive gc only inspects smaller areas and will only accept more dirty blocks.
++ *
++ * The idea is to help clear out space in a more spread-out manner.
++ * Dunno if it really does anything useful.
++ */
++static int yaffs_CheckGarbageCollection(yaffs_Device * dev)
++{
++ int block;
++ int aggressive;
++ int gcOk = YAFFS_OK;
++ int maxTries = 0;
++
++ int checkpointBlockAdjust;
++
++ if (dev->isDoingGC) {
++ /* Bail out so we don't get recursive gc */
++ return YAFFS_OK;
++ }
++
++ /* This loop should pass the first time.
++ * We'll only see looping here if the erase of the collected block fails.
++ */
++
++ do {
++ maxTries++;
++
++ checkpointBlockAdjust = (dev->nCheckpointReservedBlocks - dev->blocksInCheckpoint);
++ if(checkpointBlockAdjust < 0)
++ checkpointBlockAdjust = 0;
++
++ if (dev->nErasedBlocks < (dev->nReservedBlocks + checkpointBlockAdjust)) {
++ /* We need a block soon...*/
++ aggressive = 1;
++ } else {
++ /* We're in no hurry */
++ aggressive = 0;
++ }
++
++ block = yaffs_FindBlockForGarbageCollection(dev, aggressive);
++
++ if (block > 0) {
++ dev->garbageCollections++;
++ if (!aggressive) {
++ dev->passiveGarbageCollections++;
++ }
++
++ T(YAFFS_TRACE_GC,
++ (TSTR
++ ("yaffs: GC erasedBlocks %d aggressive %d" TENDSTR),
++ dev->nErasedBlocks, aggressive));
++
++ gcOk = yaffs_GarbageCollectBlock(dev, block);
++ }
++
++ if (dev->nErasedBlocks < (dev->nReservedBlocks) && block > 0) {
++ T(YAFFS_TRACE_GC,
++ (TSTR
++ ("yaffs: GC !!!no reclaim!!! erasedBlocks %d after try %d block %d"
++ TENDSTR), dev->nErasedBlocks, maxTries, block));
++ }
++ } while ((dev->nErasedBlocks < dev->nReservedBlocks) && (block > 0)
++ && (maxTries < 2));
++
++ return aggressive ? gcOk : YAFFS_OK;
++}
++
++/*------------------------- TAGS --------------------------------*/
++
++static int yaffs_TagsMatch(const yaffs_ExtendedTags * tags, int objectId,
++ int chunkInObject)
++{
++ return (tags->chunkId == chunkInObject &&
++ tags->objectId == objectId && !tags->chunkDeleted) ? 1 : 0;
++
++}
++
++
++/*-------------------- Data file manipulation -----------------*/
++
++static int yaffs_FindChunkInFile(yaffs_Object * in, int chunkInInode,
++ yaffs_ExtendedTags * tags)
++{
++ /*Get the Tnode, then get the level 0 offset chunk offset */
++ yaffs_Tnode *tn;
++ int theChunk = -1;
++ yaffs_ExtendedTags localTags;
++ int retVal = -1;
++
++ yaffs_Device *dev = in->myDev;
++
++ if (!tags) {
++ /* Passed a NULL, so use our own tags space */
++ tags = &localTags;
++ }
++
++ tn = yaffs_FindLevel0Tnode(dev, &in->variant.fileVariant, chunkInInode);
++
++ if (tn) {
++ theChunk = yaffs_GetChunkGroupBase(dev,tn,chunkInInode);
++
++ retVal =
++ yaffs_FindChunkInGroup(dev, theChunk, tags, in->objectId,
++ chunkInInode);
++ }
++ return retVal;
++}
++
++static int yaffs_FindAndDeleteChunkInFile(yaffs_Object * in, int chunkInInode,
++ yaffs_ExtendedTags * tags)
++{
++ /* Get the Tnode, then get the level 0 offset chunk offset */
++ yaffs_Tnode *tn;
++ int theChunk = -1;
++ yaffs_ExtendedTags localTags;
++
++ yaffs_Device *dev = in->myDev;
++ int retVal = -1;
++
++ if (!tags) {
++ /* Passed a NULL, so use our own tags space */
++ tags = &localTags;
++ }
++
++ tn = yaffs_FindLevel0Tnode(dev, &in->variant.fileVariant, chunkInInode);
++
++ if (tn) {
++
++ theChunk = yaffs_GetChunkGroupBase(dev,tn,chunkInInode);
++
++ retVal =
++ yaffs_FindChunkInGroup(dev, theChunk, tags, in->objectId,
++ chunkInInode);
++
++ /* Delete the entry in the filestructure (if found) */
++ if (retVal != -1) {
++ yaffs_PutLevel0Tnode(dev,tn,chunkInInode,0);
++ }
++ } else {
++ /*T(("No level 0 found for %d\n", chunkInInode)); */
++ }
++
++ if (retVal == -1) {
++ /* T(("Could not find %d to delete\n",chunkInInode)); */
++ }
++ return retVal;
++}
++
++#ifdef YAFFS_PARANOID
++
++static int yaffs_CheckFileSanity(yaffs_Object * in)
++{
++ int chunk;
++ int nChunks;
++ int fSize;
++ int failed = 0;
++ int objId;
++ yaffs_Tnode *tn;
++ yaffs_Tags localTags;
++ yaffs_Tags *tags = &localTags;
++ int theChunk;
++ int chunkDeleted;
++
++ if (in->variantType != YAFFS_OBJECT_TYPE_FILE) {
++ /* T(("Object not a file\n")); */
++ return YAFFS_FAIL;
++ }
++
++ objId = in->objectId;
++ fSize = in->variant.fileVariant.fileSize;
++ nChunks =
++ (fSize + in->myDev->nDataBytesPerChunk - 1) / in->myDev->nDataBytesPerChunk;
++
++ for (chunk = 1; chunk <= nChunks; chunk++) {
++ tn = yaffs_FindLevel0Tnode(in->myDev, &in->variant.fileVariant,
++ chunk);
++
++ if (tn) {
++
++ theChunk = yaffs_GetChunkGroupBase(dev,tn,chunk);
++
++ if (yaffs_CheckChunkBits
++ (dev, theChunk / dev->nChunksPerBlock,
++ theChunk % dev->nChunksPerBlock)) {
++
++ yaffs_ReadChunkTagsFromNAND(in->myDev, theChunk,
++ tags,
++ &chunkDeleted);
++ if (yaffs_TagsMatch
++ (tags, in->objectId, chunk, chunkDeleted)) {
++ /* found it; */
++
++ }
++ } else {
++
++ failed = 1;
++ }
++
++ } else {
++ /* T(("No level 0 found for %d\n", chunk)); */
++ }
++ }
++
++ return failed ? YAFFS_FAIL : YAFFS_OK;
++}
++
++#endif
++
++static int yaffs_PutChunkIntoFile(yaffs_Object * in, int chunkInInode,
++ int chunkInNAND, int inScan)
++{
++ /* NB inScan is zero unless scanning.
++ * For forward scanning, inScan is > 0;
++ * for backward scanning inScan is < 0
++ */
++
++ yaffs_Tnode *tn;
++ yaffs_Device *dev = in->myDev;
++ int existingChunk;
++ yaffs_ExtendedTags existingTags;
++ yaffs_ExtendedTags newTags;
++ unsigned existingSerial, newSerial;
++
++ if (in->variantType != YAFFS_OBJECT_TYPE_FILE) {
++ /* Just ignore an attempt at putting a chunk into a non-file during scanning
++ * If it is not during Scanning then something went wrong!
++ */
++ if (!inScan) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("yaffs tragedy:attempt to put data chunk into a non-file"
++ TENDSTR)));
++ YBUG();
++ }
++
++ yaffs_DeleteChunk(dev, chunkInNAND, 1, __LINE__);
++ return YAFFS_OK;
++ }
++
++ tn = yaffs_AddOrFindLevel0Tnode(dev,
++ &in->variant.fileVariant,
++ chunkInInode,
++ NULL);
++ if (!tn) {
++ return YAFFS_FAIL;
++ }
++
++ existingChunk = yaffs_GetChunkGroupBase(dev,tn,chunkInInode);
++
++ if (inScan != 0) {
++ /* If we're scanning then we need to test for duplicates
++ * NB This does not need to be efficient since it should only ever
++ * happen when the power fails during a write, then only one
++ * chunk should ever be affected.
++ *
++ * Correction for YAFFS2: This could happen quite a lot and we need to think about efficiency! TODO
++ * Update: For backward scanning we don't need to re-read tags so this is quite cheap.
++ */
++
++ if (existingChunk != 0) {
++ /* NB Right now existing chunk will not be real chunkId if the device >= 32MB
++ * thus we have to do a FindChunkInFile to get the real chunk id.
++ *
++ * We have a duplicate now we need to decide which one to use:
++ *
++ * Backwards scanning YAFFS2: The old one is what we use, dump the new one.
++ * Forward scanning YAFFS2: The new one is what we use, dump the old one.
++ * YAFFS1: Get both sets of tags and compare serial numbers.
++ */
++
++ if (inScan > 0) {
++ /* Only do this for forward scanning */
++ yaffs_ReadChunkWithTagsFromNAND(dev,
++ chunkInNAND,
++ NULL, &newTags);
++
++ /* Do a proper find */
++ existingChunk =
++ yaffs_FindChunkInFile(in, chunkInInode,
++ &existingTags);
++ }
++
++ if (existingChunk <= 0) {
++ /*Hoosterman - how did this happen? */
++
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("yaffs tragedy: existing chunk < 0 in scan"
++ TENDSTR)));
++
++ }
++
++ /* NB The deleted flags should be false, otherwise the chunks will
++ * not be loaded during a scan
++ */
++
++ newSerial = newTags.serialNumber;
++ existingSerial = existingTags.serialNumber;
++
++ if ((inScan > 0) &&
++ (in->myDev->isYaffs2 ||
++ existingChunk <= 0 ||
++ ((existingSerial + 1) & 3) == newSerial)) {
++ /* Forward scanning.
++ * Use new
++ * Delete the old one and drop through to update the tnode
++ */
++ yaffs_DeleteChunk(dev, existingChunk, 1,
++ __LINE__);
++ } else {
++ /* Backward scanning or we want to use the existing one
++ * Use existing.
++ * Delete the new one and return early so that the tnode isn't changed
++ */
++ yaffs_DeleteChunk(dev, chunkInNAND, 1,
++ __LINE__);
++ return YAFFS_OK;
++ }
++ }
++
++ }
++
++ if (existingChunk == 0) {
++ in->nDataChunks++;
++ }
++
++ yaffs_PutLevel0Tnode(dev,tn,chunkInInode,chunkInNAND);
++
++ return YAFFS_OK;
++}
++
++static int yaffs_ReadChunkDataFromObject(yaffs_Object * in, int chunkInInode,
++ __u8 * buffer)
++{
++ int chunkInNAND = yaffs_FindChunkInFile(in, chunkInInode, NULL);
++
++ if (chunkInNAND >= 0) {
++ return yaffs_ReadChunkWithTagsFromNAND(in->myDev, chunkInNAND,
++ buffer,NULL);
++ } else {
++ T(YAFFS_TRACE_NANDACCESS,
++ (TSTR("Chunk %d not found zero instead" TENDSTR),
++ chunkInNAND));
++ /* get sane (zero) data if you read a hole */
++ memset(buffer, 0, in->myDev->nDataBytesPerChunk);
++ return 0;
++ }
++
++}
++
++void yaffs_DeleteChunk(yaffs_Device * dev, int chunkId, int markNAND, int lyn)
++{
++ int block;
++ int page;
++ yaffs_ExtendedTags tags;
++ yaffs_BlockInfo *bi;
++
++ if (chunkId <= 0)
++ return;
++
++ dev->nDeletions++;
++ block = chunkId / dev->nChunksPerBlock;
++ page = chunkId % dev->nChunksPerBlock;
++
++ bi = yaffs_GetBlockInfo(dev, block);
++
++ T(YAFFS_TRACE_DELETION,
++ (TSTR("line %d delete of chunk %d" TENDSTR), lyn, chunkId));
++
++ if (markNAND &&
++ bi->blockState != YAFFS_BLOCK_STATE_COLLECTING && !dev->isYaffs2) {
++
++ yaffs_InitialiseTags(&tags);
++
++ tags.chunkDeleted = 1;
++
++ yaffs_WriteChunkWithTagsToNAND(dev, chunkId, NULL, &tags);
++ yaffs_HandleUpdateChunk(dev, chunkId, &tags);
++ } else {
++ dev->nUnmarkedDeletions++;
++ }
++
++ /* Pull out of the management area.
++ * If the whole block became dirty, this will kick off an erasure.
++ */
++ if (bi->blockState == YAFFS_BLOCK_STATE_ALLOCATING ||
++ bi->blockState == YAFFS_BLOCK_STATE_FULL ||
++ bi->blockState == YAFFS_BLOCK_STATE_NEEDS_SCANNING ||
++ bi->blockState == YAFFS_BLOCK_STATE_COLLECTING) {
++ dev->nFreeChunks++;
++
++ yaffs_ClearChunkBit(dev, block, page);
++
++ bi->pagesInUse--;
++
++ if (bi->pagesInUse == 0 &&
++ !bi->hasShrinkHeader &&
++ bi->blockState != YAFFS_BLOCK_STATE_ALLOCATING &&
++ bi->blockState != YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
++ yaffs_BlockBecameDirty(dev, block);
++ }
++
++ } else {
++ /* T(("Bad news deleting chunk %d\n",chunkId)); */
++ }
++
++}
++
++static int yaffs_WriteChunkDataToObject(yaffs_Object * in, int chunkInInode,
++ const __u8 * buffer, int nBytes,
++ int useReserve)
++{
++ /* Find old chunk Need to do this to get serial number
++ * Write new one and patch into tree.
++ * Invalidate old tags.
++ */
++
++ int prevChunkId;
++ yaffs_ExtendedTags prevTags;
++
++ int newChunkId;
++ yaffs_ExtendedTags newTags;
++
++ yaffs_Device *dev = in->myDev;
++
++ yaffs_CheckGarbageCollection(dev);
++
++ /* Get the previous chunk at this location in the file if it exists */
++ prevChunkId = yaffs_FindChunkInFile(in, chunkInInode, &prevTags);
++
++ /* Set up new tags */
++ yaffs_InitialiseTags(&newTags);
++
++ newTags.chunkId = chunkInInode;
++ newTags.objectId = in->objectId;
++ newTags.serialNumber =
++ (prevChunkId >= 0) ? prevTags.serialNumber + 1 : 1;
++ newTags.byteCount = nBytes;
++
++ newChunkId =
++ yaffs_WriteNewChunkWithTagsToNAND(dev, buffer, &newTags,
++ useReserve);
++
++ if (newChunkId >= 0) {
++ yaffs_PutChunkIntoFile(in, chunkInInode, newChunkId, 0);
++
++ if (prevChunkId >= 0) {
++ yaffs_DeleteChunk(dev, prevChunkId, 1, __LINE__);
++
++ }
++
++ yaffs_CheckFileSanity(in);
++ }
++ return newChunkId;
++
++}
++
++/* UpdateObjectHeader updates the header on NAND for an object.
++ * If name is not NULL, then that new name is used.
++ */
++int yaffs_UpdateObjectHeader(yaffs_Object * in, const YCHAR * name, int force,
++ int isShrink, int shadows)
++{
++
++ yaffs_BlockInfo *bi;
++
++ yaffs_Device *dev = in->myDev;
++
++ int prevChunkId;
++ int retVal = 0;
++ int result = 0;
++
++ int newChunkId;
++ yaffs_ExtendedTags newTags;
++
++ __u8 *buffer = NULL;
++ YCHAR oldName[YAFFS_MAX_NAME_LENGTH + 1];
++
++ yaffs_ObjectHeader *oh = NULL;
++
++ if (!in->fake || force) {
++
++ yaffs_CheckGarbageCollection(dev);
++
++ buffer = yaffs_GetTempBuffer(in->myDev, __LINE__);
++ oh = (yaffs_ObjectHeader *) buffer;
++
++ prevChunkId = in->chunkId;
++
++ if (prevChunkId >= 0) {
++ result = yaffs_ReadChunkWithTagsFromNAND(dev, prevChunkId,
++ buffer, NULL);
++ memcpy(oldName, oh->name, sizeof(oh->name));
++ }
++
++ memset(buffer, 0xFF, dev->nDataBytesPerChunk);
++
++ oh->type = in->variantType;
++ oh->yst_mode = in->yst_mode;
++ oh->shadowsObject = shadows;
++
++#ifdef CONFIG_YAFFS_WINCE
++ oh->win_atime[0] = in->win_atime[0];
++ oh->win_ctime[0] = in->win_ctime[0];
++ oh->win_mtime[0] = in->win_mtime[0];
++ oh->win_atime[1] = in->win_atime[1];
++ oh->win_ctime[1] = in->win_ctime[1];
++ oh->win_mtime[1] = in->win_mtime[1];
++#else
++ oh->yst_uid = in->yst_uid;
++ oh->yst_gid = in->yst_gid;
++ oh->yst_atime = in->yst_atime;
++ oh->yst_mtime = in->yst_mtime;
++ oh->yst_ctime = in->yst_ctime;
++ oh->yst_rdev = in->yst_rdev;
++#endif
++ if (in->parent) {
++ oh->parentObjectId = in->parent->objectId;
++ } else {
++ oh->parentObjectId = 0;
++ }
++
++ if (name && *name) {
++ memset(oh->name, 0, sizeof(oh->name));
++ yaffs_strncpy(oh->name, name, YAFFS_MAX_NAME_LENGTH);
++ } else if (prevChunkId) {
++ memcpy(oh->name, oldName, sizeof(oh->name));
++ } else {
++ memset(oh->name, 0, sizeof(oh->name));
++ }
++
++ oh->isShrink = isShrink;
++
++ switch (in->variantType) {
++ case YAFFS_OBJECT_TYPE_UNKNOWN:
++ /* Should not happen */
++ break;
++ case YAFFS_OBJECT_TYPE_FILE:
++ oh->fileSize =
++ (oh->parentObjectId == YAFFS_OBJECTID_DELETED
++ || oh->parentObjectId ==
++ YAFFS_OBJECTID_UNLINKED) ? 0 : in->variant.
++ fileVariant.fileSize;
++ break;
++ case YAFFS_OBJECT_TYPE_HARDLINK:
++ oh->equivalentObjectId =
++ in->variant.hardLinkVariant.equivalentObjectId;
++ break;
++ case YAFFS_OBJECT_TYPE_SPECIAL:
++ /* Do nothing */
++ break;
++ case YAFFS_OBJECT_TYPE_DIRECTORY:
++ /* Do nothing */
++ break;
++ case YAFFS_OBJECT_TYPE_SYMLINK:
++ yaffs_strncpy(oh->alias,
++ in->variant.symLinkVariant.alias,
++ YAFFS_MAX_ALIAS_LENGTH);
++ oh->alias[YAFFS_MAX_ALIAS_LENGTH] = 0;
++ break;
++ }
++
++ /* Tags */
++ yaffs_InitialiseTags(&newTags);
++ in->serial++;
++ newTags.chunkId = 0;
++ newTags.objectId = in->objectId;
++ newTags.serialNumber = in->serial;
++
++ /* Add extra info for file header */
++
++ newTags.extraHeaderInfoAvailable = 1;
++ newTags.extraParentObjectId = oh->parentObjectId;
++ newTags.extraFileLength = oh->fileSize;
++ newTags.extraIsShrinkHeader = oh->isShrink;
++ newTags.extraEquivalentObjectId = oh->equivalentObjectId;
++ newTags.extraShadows = (oh->shadowsObject > 0) ? 1 : 0;
++ newTags.extraObjectType = in->variantType;
++
++ /* Create new chunk in NAND */
++ newChunkId =
++ yaffs_WriteNewChunkWithTagsToNAND(dev, buffer, &newTags,
++ (prevChunkId >= 0) ? 1 : 0);
++
++ if (newChunkId >= 0) {
++
++ in->chunkId = newChunkId;
++
++ if (prevChunkId >= 0) {
++ yaffs_DeleteChunk(dev, prevChunkId, 1,
++ __LINE__);
++ }
++
++ if(!yaffs_ObjectHasCachedWriteData(in))
++ in->dirty = 0;
++
++ /* If this was a shrink, then mark the block that the chunk lives on */
++ if (isShrink) {
++ bi = yaffs_GetBlockInfo(in->myDev,
++ newChunkId /in->myDev-> nChunksPerBlock);
++ bi->hasShrinkHeader = 1;
++ }
++
++ }
++
++ retVal = newChunkId;
++
++ }
++
++ if (buffer)
++ yaffs_ReleaseTempBuffer(dev, buffer, __LINE__);
++
++ return retVal;
++}
++
++/*------------------------ Short Operations Cache ----------------------------------------
++ * In many situations where there is no high level buffering (eg WinCE) a lot of
++ * reads might be short sequential reads, and a lot of writes may be short
++ * sequential writes. eg. scanning/writing a jpeg file.
++ * In these cases, a short read/write cache can provide a huge perfomance benefit
++ * with dumb-as-a-rock code.
++ * In Linux, the page cache provides read buffering aand the short op cache provides write
++ * buffering.
++ *
++ * There are a limited number (~10) of cache chunks per device so that we don't
++ * need a very intelligent search.
++ */
++
++static int yaffs_ObjectHasCachedWriteData(yaffs_Object *obj)
++{
++ yaffs_Device *dev = obj->myDev;
++ int i;
++ yaffs_ChunkCache *cache;
++ int nCaches = obj->myDev->nShortOpCaches;
++
++ for(i = 0; i < nCaches; i++){
++ cache = &dev->srCache[i];
++ if (cache->object == obj &&
++ cache->dirty)
++ return 1;
++ }
++
++ return 0;
++}
++
++
++static void yaffs_FlushFilesChunkCache(yaffs_Object * obj)
++{
++ yaffs_Device *dev = obj->myDev;
++ int lowest = -99; /* Stop compiler whining. */
++ int i;
++ yaffs_ChunkCache *cache;
++ int chunkWritten = 0;
++ int nCaches = obj->myDev->nShortOpCaches;
++
++ if (nCaches > 0) {
++ do {
++ cache = NULL;
++
++ /* Find the dirty cache for this object with the lowest chunk id. */
++ for (i = 0; i < nCaches; i++) {
++ if (dev->srCache[i].object == obj &&
++ dev->srCache[i].dirty) {
++ if (!cache
++ || dev->srCache[i].chunkId <
++ lowest) {
++ cache = &dev->srCache[i];
++ lowest = cache->chunkId;
++ }
++ }
++ }
++
++ if (cache && !cache->locked) {
++ /* Write it out and free it up */
++
++ chunkWritten =
++ yaffs_WriteChunkDataToObject(cache->object,
++ cache->chunkId,
++ cache->data,
++ cache->nBytes,
++ 1);
++ cache->dirty = 0;
++ cache->object = NULL;
++ }
++
++ } while (cache && chunkWritten > 0);
++
++ if (cache) {
++ /* Hoosterman, disk full while writing cache out. */
++ T(YAFFS_TRACE_ERROR,
++ (TSTR("yaffs tragedy: no space during cache write" TENDSTR)));
++
++ }
++ }
++
++}
++
++/*yaffs_FlushEntireDeviceCache(dev)
++ *
++ *
++ */
++
++void yaffs_FlushEntireDeviceCache(yaffs_Device *dev)
++{
++ yaffs_Object *obj;
++ int nCaches = dev->nShortOpCaches;
++ int i;
++
++ /* Find a dirty object in the cache and flush it...
++ * until there are no further dirty objects.
++ */
++ do {
++ obj = NULL;
++ for( i = 0; i < nCaches && !obj; i++) {
++ if (dev->srCache[i].object &&
++ dev->srCache[i].dirty)
++ obj = dev->srCache[i].object;
++
++ }
++ if(obj)
++ yaffs_FlushFilesChunkCache(obj);
++
++ } while(obj);
++
++}
++
++
++/* Grab us a cache chunk for use.
++ * First look for an empty one.
++ * Then look for the least recently used non-dirty one.
++ * Then look for the least recently used dirty one...., flush and look again.
++ */
++static yaffs_ChunkCache *yaffs_GrabChunkCacheWorker(yaffs_Device * dev)
++{
++ int i;
++ int usage;
++ int theOne;
++
++ if (dev->nShortOpCaches > 0) {
++ for (i = 0; i < dev->nShortOpCaches; i++) {
++ if (!dev->srCache[i].object)
++ return &dev->srCache[i];
++ }
++
++ return NULL;
++
++ theOne = -1;
++ usage = 0; /* just to stop the compiler grizzling */
++
++ for (i = 0; i < dev->nShortOpCaches; i++) {
++ if (!dev->srCache[i].dirty &&
++ ((dev->srCache[i].lastUse < usage && theOne >= 0) ||
++ theOne < 0)) {
++ usage = dev->srCache[i].lastUse;
++ theOne = i;
++ }
++ }
++
++
++ return theOne >= 0 ? &dev->srCache[theOne] : NULL;
++ } else {
++ return NULL;
++ }
++
++}
++
++static yaffs_ChunkCache *yaffs_GrabChunkCache(yaffs_Device * dev)
++{
++ yaffs_ChunkCache *cache;
++ yaffs_Object *theObj;
++ int usage;
++ int i;
++ int pushout;
++
++ if (dev->nShortOpCaches > 0) {
++ /* Try find a non-dirty one... */
++
++ cache = yaffs_GrabChunkCacheWorker(dev);
++
++ if (!cache) {
++ /* They were all dirty, find the last recently used object and flush
++ * its cache, then find again.
++ * NB what's here is not very accurate, we actually flush the object
++ * the last recently used page.
++ */
++
++ /* With locking we can't assume we can use entry zero */
++
++ theObj = NULL;
++ usage = -1;
++ cache = NULL;
++ pushout = -1;
++
++ for (i = 0; i < dev->nShortOpCaches; i++) {
++ if (dev->srCache[i].object &&
++ !dev->srCache[i].locked &&
++ (dev->srCache[i].lastUse < usage || !cache))
++ {
++ usage = dev->srCache[i].lastUse;
++ theObj = dev->srCache[i].object;
++ cache = &dev->srCache[i];
++ pushout = i;
++ }
++ }
++
++ if (!cache || cache->dirty) {
++ /* Flush and try again */
++ yaffs_FlushFilesChunkCache(theObj);
++ cache = yaffs_GrabChunkCacheWorker(dev);
++ }
++
++ }
++ return cache;
++ } else
++ return NULL;
++
++}
++
++/* Find a cached chunk */
++static yaffs_ChunkCache *yaffs_FindChunkCache(const yaffs_Object * obj,
++ int chunkId)
++{
++ yaffs_Device *dev = obj->myDev;
++ int i;
++ if (dev->nShortOpCaches > 0) {
++ for (i = 0; i < dev->nShortOpCaches; i++) {
++ if (dev->srCache[i].object == obj &&
++ dev->srCache[i].chunkId == chunkId) {
++ dev->cacheHits++;
++
++ return &dev->srCache[i];
++ }
++ }
++ }
++ return NULL;
++}
++
++/* Mark the chunk for the least recently used algorithym */
++static void yaffs_UseChunkCache(yaffs_Device * dev, yaffs_ChunkCache * cache,
++ int isAWrite)
++{
++
++ if (dev->nShortOpCaches > 0) {
++ if (dev->srLastUse < 0 || dev->srLastUse > 100000000) {
++ /* Reset the cache usages */
++ int i;
++ for (i = 1; i < dev->nShortOpCaches; i++) {
++ dev->srCache[i].lastUse = 0;
++ }
++ dev->srLastUse = 0;
++ }
++
++ dev->srLastUse++;
++
++ cache->lastUse = dev->srLastUse;
++
++ if (isAWrite) {
++ cache->dirty = 1;
++ }
++ }
++}
++
++/* Invalidate a single cache page.
++ * Do this when a whole page gets written,
++ * ie the short cache for this page is no longer valid.
++ */
++static void yaffs_InvalidateChunkCache(yaffs_Object * object, int chunkId)
++{
++ if (object->myDev->nShortOpCaches > 0) {
++ yaffs_ChunkCache *cache = yaffs_FindChunkCache(object, chunkId);
++
++ if (cache) {
++ cache->object = NULL;
++ }
++ }
++}
++
++/* Invalidate all the cache pages associated with this object
++ * Do this whenever ther file is deleted or resized.
++ */
++static void yaffs_InvalidateWholeChunkCache(yaffs_Object * in)
++{
++ int i;
++ yaffs_Device *dev = in->myDev;
++
++ if (dev->nShortOpCaches > 0) {
++ /* Invalidate it. */
++ for (i = 0; i < dev->nShortOpCaches; i++) {
++ if (dev->srCache[i].object == in) {
++ dev->srCache[i].object = NULL;
++ }
++ }
++ }
++}
++
++/*--------------------- Checkpointing --------------------*/
++
++
++static int yaffs_WriteCheckpointValidityMarker(yaffs_Device *dev,int head)
++{
++ yaffs_CheckpointValidity cp;
++ cp.structType = sizeof(cp);
++ cp.magic = YAFFS_MAGIC;
++ cp.version = YAFFS_CHECKPOINT_VERSION;
++ cp.head = (head) ? 1 : 0;
++
++ return (yaffs_CheckpointWrite(dev,&cp,sizeof(cp)) == sizeof(cp))?
++ 1 : 0;
++}
++
++static int yaffs_ReadCheckpointValidityMarker(yaffs_Device *dev, int head)
++{
++ yaffs_CheckpointValidity cp;
++ int ok;
++
++ ok = (yaffs_CheckpointRead(dev,&cp,sizeof(cp)) == sizeof(cp));
++
++ if(ok)
++ ok = (cp.structType == sizeof(cp)) &&
++ (cp.magic == YAFFS_MAGIC) &&
++ (cp.version == YAFFS_CHECKPOINT_VERSION) &&
++ (cp.head == ((head) ? 1 : 0));
++ return ok ? 1 : 0;
++}
++
++static void yaffs_DeviceToCheckpointDevice(yaffs_CheckpointDevice *cp,
++ yaffs_Device *dev)
++{
++ cp->nErasedBlocks = dev->nErasedBlocks;
++ cp->allocationBlock = dev->allocationBlock;
++ cp->allocationPage = dev->allocationPage;
++ cp->nFreeChunks = dev->nFreeChunks;
++
++ cp->nDeletedFiles = dev->nDeletedFiles;
++ cp->nUnlinkedFiles = dev->nUnlinkedFiles;
++ cp->nBackgroundDeletions = dev->nBackgroundDeletions;
++ cp->sequenceNumber = dev->sequenceNumber;
++ cp->oldestDirtySequence = dev->oldestDirtySequence;
++
++}
++
++static void yaffs_CheckpointDeviceToDevice(yaffs_Device *dev,
++ yaffs_CheckpointDevice *cp)
++{
++ dev->nErasedBlocks = cp->nErasedBlocks;
++ dev->allocationBlock = cp->allocationBlock;
++ dev->allocationPage = cp->allocationPage;
++ dev->nFreeChunks = cp->nFreeChunks;
++
++ dev->nDeletedFiles = cp->nDeletedFiles;
++ dev->nUnlinkedFiles = cp->nUnlinkedFiles;
++ dev->nBackgroundDeletions = cp->nBackgroundDeletions;
++ dev->sequenceNumber = cp->sequenceNumber;
++ dev->oldestDirtySequence = cp->oldestDirtySequence;
++}
++
++
++static int yaffs_WriteCheckpointDevice(yaffs_Device *dev)
++{
++ yaffs_CheckpointDevice cp;
++ __u32 nBytes;
++ __u32 nBlocks = (dev->internalEndBlock - dev->internalStartBlock + 1);
++
++ int ok;
++
++ /* Write device runtime values*/
++ yaffs_DeviceToCheckpointDevice(&cp,dev);
++ cp.structType = sizeof(cp);
++
++ ok = (yaffs_CheckpointWrite(dev,&cp,sizeof(cp)) == sizeof(cp));
++
++ /* Write block info */
++ if(ok) {
++ nBytes = nBlocks * sizeof(yaffs_BlockInfo);
++ ok = (yaffs_CheckpointWrite(dev,dev->blockInfo,nBytes) == nBytes);
++ }
++
++ /* Write chunk bits */
++ if(ok) {
++ nBytes = nBlocks * dev->chunkBitmapStride;
++ ok = (yaffs_CheckpointWrite(dev,dev->chunkBits,nBytes) == nBytes);
++ }
++ return ok ? 1 : 0;
++
++}
++
++static int yaffs_ReadCheckpointDevice(yaffs_Device *dev)
++{
++ yaffs_CheckpointDevice cp;
++ __u32 nBytes;
++ __u32 nBlocks = (dev->internalEndBlock - dev->internalStartBlock + 1);
++
++ int ok;
++
++ ok = (yaffs_CheckpointRead(dev,&cp,sizeof(cp)) == sizeof(cp));
++ if(!ok)
++ return 0;
++
++ if(cp.structType != sizeof(cp))
++ return 0;
++
++
++ yaffs_CheckpointDeviceToDevice(dev,&cp);
++
++ nBytes = nBlocks * sizeof(yaffs_BlockInfo);
++
++ ok = (yaffs_CheckpointRead(dev,dev->blockInfo,nBytes) == nBytes);
++
++ if(!ok)
++ return 0;
++ nBytes = nBlocks * dev->chunkBitmapStride;
++
++ ok = (yaffs_CheckpointRead(dev,dev->chunkBits,nBytes) == nBytes);
++
++ return ok ? 1 : 0;
++}
++
++static void yaffs_ObjectToCheckpointObject(yaffs_CheckpointObject *cp,
++ yaffs_Object *obj)
++{
++
++ cp->objectId = obj->objectId;
++ cp->parentId = (obj->parent) ? obj->parent->objectId : 0;
++ cp->chunkId = obj->chunkId;
++ cp->variantType = obj->variantType;
++ cp->deleted = obj->deleted;
++ cp->softDeleted = obj->softDeleted;
++ cp->unlinked = obj->unlinked;
++ cp->fake = obj->fake;
++ cp->renameAllowed = obj->renameAllowed;
++ cp->unlinkAllowed = obj->unlinkAllowed;
++ cp->serial = obj->serial;
++ cp->nDataChunks = obj->nDataChunks;
++
++ if(obj->variantType == YAFFS_OBJECT_TYPE_FILE)
++ cp->fileSizeOrEquivalentObjectId = obj->variant.fileVariant.fileSize;
++ else if(obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK)
++ cp->fileSizeOrEquivalentObjectId = obj->variant.hardLinkVariant.equivalentObjectId;
++}
++
++static void yaffs_CheckpointObjectToObject( yaffs_Object *obj,yaffs_CheckpointObject *cp)
++{
++
++ yaffs_Object *parent;
++
++ obj->objectId = cp->objectId;
++
++ if(cp->parentId)
++ parent = yaffs_FindOrCreateObjectByNumber(
++ obj->myDev,
++ cp->parentId,
++ YAFFS_OBJECT_TYPE_DIRECTORY);
++ else
++ parent = NULL;
++
++ if(parent)
++ yaffs_AddObjectToDirectory(parent, obj);
++
++ obj->chunkId = cp->chunkId;
++ obj->variantType = cp->variantType;
++ obj->deleted = cp->deleted;
++ obj->softDeleted = cp->softDeleted;
++ obj->unlinked = cp->unlinked;
++ obj->fake = cp->fake;
++ obj->renameAllowed = cp->renameAllowed;
++ obj->unlinkAllowed = cp->unlinkAllowed;
++ obj->serial = cp->serial;
++ obj->nDataChunks = cp->nDataChunks;
++
++ if(obj->variantType == YAFFS_OBJECT_TYPE_FILE)
++ obj->variant.fileVariant.fileSize = cp->fileSizeOrEquivalentObjectId;
++ else if(obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK)
++ obj->variant.hardLinkVariant.equivalentObjectId = cp->fileSizeOrEquivalentObjectId;
++
++ if(obj->objectId >= YAFFS_NOBJECT_BUCKETS)
++ obj->lazyLoaded = 1;
++}
++
++
++
++static int yaffs_CheckpointTnodeWorker(yaffs_Object * in, yaffs_Tnode * tn,
++ __u32 level, int chunkOffset)
++{
++ int i;
++ yaffs_Device *dev = in->myDev;
++ int ok = 1;
++ int nTnodeBytes = (dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8;
++
++ if (tn) {
++ if (level > 0) {
++
++ for (i = 0; i < YAFFS_NTNODES_INTERNAL && ok; i++){
++ if (tn->internal[i]) {
++ ok = yaffs_CheckpointTnodeWorker(in,
++ tn->internal[i],
++ level - 1,
++ (chunkOffset<<YAFFS_TNODES_INTERNAL_BITS) + i);
++ }
++ }
++ } else if (level == 0) {
++ __u32 baseOffset = chunkOffset << YAFFS_TNODES_LEVEL0_BITS;
++ /* printf("write tnode at %d\n",baseOffset); */
++ ok = (yaffs_CheckpointWrite(dev,&baseOffset,sizeof(baseOffset)) == sizeof(baseOffset));
++ if(ok)
++ ok = (yaffs_CheckpointWrite(dev,tn,nTnodeBytes) == nTnodeBytes);
++ }
++ }
++
++ return ok;
++
++}
++
++static int yaffs_WriteCheckpointTnodes(yaffs_Object *obj)
++{
++ __u32 endMarker = ~0;
++ int ok = 1;
++
++ if(obj->variantType == YAFFS_OBJECT_TYPE_FILE){
++ ok = yaffs_CheckpointTnodeWorker(obj,
++ obj->variant.fileVariant.top,
++ obj->variant.fileVariant.topLevel,
++ 0);
++ if(ok)
++ ok = (yaffs_CheckpointWrite(obj->myDev,&endMarker,sizeof(endMarker)) ==
++ sizeof(endMarker));
++ }
++
++ return ok ? 1 : 0;
++}
++
++static int yaffs_ReadCheckpointTnodes(yaffs_Object *obj)
++{
++ __u32 baseChunk;
++ int ok = 1;
++ yaffs_Device *dev = obj->myDev;
++ yaffs_FileStructure *fileStructPtr = &obj->variant.fileVariant;
++ yaffs_Tnode *tn;
++
++ ok = (yaffs_CheckpointRead(dev,&baseChunk,sizeof(baseChunk)) == sizeof(baseChunk));
++
++ while(ok && (~baseChunk)){
++ /* Read level 0 tnode */
++
++ /* printf("read tnode at %d\n",baseChunk); */
++ tn = yaffs_GetTnodeRaw(dev);
++ if(tn)
++ ok = (yaffs_CheckpointRead(dev,tn,(dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8) ==
++ (dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8);
++ else
++ ok = 0;
++
++ if(tn && ok){
++ ok = yaffs_AddOrFindLevel0Tnode(dev,
++ fileStructPtr,
++ baseChunk,
++ tn) ? 1 : 0;
++ }
++
++ if(ok)
++ ok = (yaffs_CheckpointRead(dev,&baseChunk,sizeof(baseChunk)) == sizeof(baseChunk));
++
++ }
++
++ return ok ? 1 : 0;
++}
++
++
++static int yaffs_WriteCheckpointObjects(yaffs_Device *dev)
++{
++ yaffs_Object *obj;
++ yaffs_CheckpointObject cp;
++ int i;
++ int ok = 1;
++ struct list_head *lh;
++
++
++ /* Iterate through the objects in each hash entry,
++ * dumping them to the checkpointing stream.
++ */
++
++ for(i = 0; ok && i < YAFFS_NOBJECT_BUCKETS; i++){
++ list_for_each(lh, &dev->objectBucket[i].list) {
++ if (lh) {
++ obj = list_entry(lh, yaffs_Object, hashLink);
++ if (!obj->deferedFree) {
++ yaffs_ObjectToCheckpointObject(&cp,obj);
++ cp.structType = sizeof(cp);
++
++ T(YAFFS_TRACE_CHECKPOINT,(
++ TSTR("Checkpoint write object %d parent %d type %d chunk %d obj addr %x" TENDSTR),
++ cp.objectId,cp.parentId,cp.variantType,cp.chunkId,(unsigned) obj));
++
++ ok = (yaffs_CheckpointWrite(dev,&cp,sizeof(cp)) == sizeof(cp));
++
++ if(ok && obj->variantType == YAFFS_OBJECT_TYPE_FILE){
++ ok = yaffs_WriteCheckpointTnodes(obj);
++ }
++ }
++ }
++ }
++ }
++
++ /* Dump end of list */
++ memset(&cp,0xFF,sizeof(yaffs_CheckpointObject));
++ cp.structType = sizeof(cp);
++
++ if(ok)
++ ok = (yaffs_CheckpointWrite(dev,&cp,sizeof(cp)) == sizeof(cp));
++
++ return ok ? 1 : 0;
++}
++
++static int yaffs_ReadCheckpointObjects(yaffs_Device *dev)
++{
++ yaffs_Object *obj;
++ yaffs_CheckpointObject cp;
++ int ok = 1;
++ int done = 0;
++ yaffs_Object *hardList = NULL;
++
++ while(ok && !done) {
++ ok = (yaffs_CheckpointRead(dev,&cp,sizeof(cp)) == sizeof(cp));
++ if(cp.structType != sizeof(cp)) {
++ /* printf("structure parsing failed\n"); */
++ ok = 0;
++ }
++
++ if(ok && cp.objectId == ~0)
++ done = 1;
++ else if(ok){
++ obj = yaffs_FindOrCreateObjectByNumber(dev,cp.objectId, cp.variantType);
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("Checkpoint read object %d parent %d type %d chunk %d obj addr %x" TENDSTR),
++ cp.objectId,cp.parentId,cp.variantType,cp.chunkId,(unsigned) obj));
++ if(obj) {
++ yaffs_CheckpointObjectToObject(obj,&cp);
++ if(obj->variantType == YAFFS_OBJECT_TYPE_FILE) {
++ ok = yaffs_ReadCheckpointTnodes(obj);
++ } else if(obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK) {
++ obj->hardLinks.next =
++ (struct list_head *)
++ hardList;
++ hardList = obj;
++ }
++
++ }
++ }
++ }
++
++ if(ok)
++ yaffs_HardlinkFixup(dev,hardList);
++
++ return ok ? 1 : 0;
++}
++
++static int yaffs_WriteCheckpointData(yaffs_Device *dev)
++{
++
++ int ok;
++
++ ok = yaffs_CheckpointOpen(dev,1);
++
++ if(ok)
++ ok = yaffs_WriteCheckpointValidityMarker(dev,1);
++ if(ok)
++ ok = yaffs_WriteCheckpointDevice(dev);
++ if(ok)
++ ok = yaffs_WriteCheckpointObjects(dev);
++ if(ok)
++ ok = yaffs_WriteCheckpointValidityMarker(dev,0);
++
++ if(!yaffs_CheckpointClose(dev))
++ ok = 0;
++
++ if(ok)
++ dev->isCheckpointed = 1;
++ else
++ dev->isCheckpointed = 0;
++
++ return dev->isCheckpointed;
++}
++
++static int yaffs_ReadCheckpointData(yaffs_Device *dev)
++{
++ int ok;
++
++ ok = yaffs_CheckpointOpen(dev,0); /* open for read */
++
++ if(ok)
++ ok = yaffs_ReadCheckpointValidityMarker(dev,1);
++ if(ok)
++ ok = yaffs_ReadCheckpointDevice(dev);
++ if(ok)
++ ok = yaffs_ReadCheckpointObjects(dev);
++ if(ok)
++ ok = yaffs_ReadCheckpointValidityMarker(dev,0);
++
++
++
++ if(!yaffs_CheckpointClose(dev))
++ ok = 0;
++
++ if(ok)
++ dev->isCheckpointed = 1;
++ else
++ dev->isCheckpointed = 0;
++
++ return ok ? 1 : 0;
++
++}
++
++static void yaffs_InvalidateCheckpoint(yaffs_Device *dev)
++{
++ if(dev->isCheckpointed ||
++ dev->blocksInCheckpoint > 0){
++ dev->isCheckpointed = 0;
++ yaffs_CheckpointInvalidateStream(dev);
++ if(dev->superBlock && dev->markSuperBlockDirty)
++ dev->markSuperBlockDirty(dev->superBlock);
++ }
++}
++
++
++int yaffs_CheckpointSave(yaffs_Device *dev)
++{
++ yaffs_ReportOddballBlocks(dev);
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("save entry: isCheckpointed %d"TENDSTR),dev->isCheckpointed));
++
++ if(!dev->isCheckpointed)
++ yaffs_WriteCheckpointData(dev);
++
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("save exit: isCheckpointed %d"TENDSTR),dev->isCheckpointed));
++
++ return dev->isCheckpointed;
++}
++
++int yaffs_CheckpointRestore(yaffs_Device *dev)
++{
++ int retval;
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("restore entry: isCheckpointed %d"TENDSTR),dev->isCheckpointed));
++
++ retval = yaffs_ReadCheckpointData(dev);
++
++ T(YAFFS_TRACE_CHECKPOINT,(TSTR("restore exit: isCheckpointed %d"TENDSTR),dev->isCheckpointed));
++
++ yaffs_ReportOddballBlocks(dev);
++
++ return retval;
++}
++
++/*--------------------- File read/write ------------------------
++ * Read and write have very similar structures.
++ * In general the read/write has three parts to it
++ * An incomplete chunk to start with (if the read/write is not chunk-aligned)
++ * Some complete chunks
++ * An incomplete chunk to end off with
++ *
++ * Curve-balls: the first chunk might also be the last chunk.
++ */
++
++int yaffs_ReadDataFromFile(yaffs_Object * in, __u8 * buffer, loff_t offset,
++ int nBytes)
++{
++
++ int chunk;
++ int start;
++ int nToCopy;
++ int n = nBytes;
++ int nDone = 0;
++ yaffs_ChunkCache *cache;
++
++ yaffs_Device *dev;
++
++ dev = in->myDev;
++
++ while (n > 0) {
++ //chunk = offset / dev->nDataBytesPerChunk + 1;
++ //start = offset % dev->nDataBytesPerChunk;
++ yaffs_AddrToChunk(dev,offset,&chunk,&start);
++ chunk++;
++
++ /* OK now check for the curveball where the start and end are in
++ * the same chunk.
++ */
++ if ((start + n) < dev->nDataBytesPerChunk) {
++ nToCopy = n;
++ } else {
++ nToCopy = dev->nDataBytesPerChunk - start;
++ }
++
++ cache = yaffs_FindChunkCache(in, chunk);
++
++ /* If the chunk is already in the cache or it is less than a whole chunk
++ * then use the cache (if there is caching)
++ * else bypass the cache.
++ */
++ if (cache || nToCopy != dev->nDataBytesPerChunk) {
++ if (dev->nShortOpCaches > 0) {
++
++ /* If we can't find the data in the cache, then load it up. */
++
++ if (!cache) {
++ cache = yaffs_GrabChunkCache(in->myDev);
++ cache->object = in;
++ cache->chunkId = chunk;
++ cache->dirty = 0;
++ cache->locked = 0;
++ yaffs_ReadChunkDataFromObject(in, chunk,
++ cache->
++ data);
++ cache->nBytes = 0;
++ }
++
++ yaffs_UseChunkCache(dev, cache, 0);
++
++ cache->locked = 1;
++
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_UnlockYAFFS(TRUE);
++#endif
++ memcpy(buffer, &cache->data[start], nToCopy);
++
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_LockYAFFS(TRUE);
++#endif
++ cache->locked = 0;
++ } else {
++ /* Read into the local buffer then copy..*/
++
++ __u8 *localBuffer =
++ yaffs_GetTempBuffer(dev, __LINE__);
++ yaffs_ReadChunkDataFromObject(in, chunk,
++ localBuffer);
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_UnlockYAFFS(TRUE);
++#endif
++ memcpy(buffer, &localBuffer[start], nToCopy);
++
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_LockYAFFS(TRUE);
++#endif
++ yaffs_ReleaseTempBuffer(dev, localBuffer,
++ __LINE__);
++ }
++
++ } else {
++#ifdef CONFIG_YAFFS_WINCE
++ __u8 *localBuffer = yaffs_GetTempBuffer(dev, __LINE__);
++
++ /* Under WinCE can't do direct transfer. Need to use a local buffer.
++ * This is because we otherwise screw up WinCE's memory mapper
++ */
++ yaffs_ReadChunkDataFromObject(in, chunk, localBuffer);
++
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_UnlockYAFFS(TRUE);
++#endif
++ memcpy(buffer, localBuffer, dev->nDataBytesPerChunk);
++
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_LockYAFFS(TRUE);
++ yaffs_ReleaseTempBuffer(dev, localBuffer, __LINE__);
++#endif
++
++#else
++ /* A full chunk. Read directly into the supplied buffer. */
++ yaffs_ReadChunkDataFromObject(in, chunk, buffer);
++#endif
++ }
++
++ n -= nToCopy;
++ offset += nToCopy;
++ buffer += nToCopy;
++ nDone += nToCopy;
++
++ }
++
++ return nDone;
++}
++
++int yaffs_WriteDataToFile(yaffs_Object * in, const __u8 * buffer, loff_t offset,
++ int nBytes, int writeThrough)
++{
++
++ int chunk;
++ int start;
++ int nToCopy;
++ int n = nBytes;
++ int nDone = 0;
++ int nToWriteBack;
++ int startOfWrite = offset;
++ int chunkWritten = 0;
++ int nBytesRead;
++
++ yaffs_Device *dev;
++
++ dev = in->myDev;
++
++ while (n > 0 && chunkWritten >= 0) {
++ //chunk = offset / dev->nDataBytesPerChunk + 1;
++ //start = offset % dev->nDataBytesPerChunk;
++ yaffs_AddrToChunk(dev,offset,&chunk,&start);
++ chunk++;
++
++ /* OK now check for the curveball where the start and end are in
++ * the same chunk.
++ */
++
++ if ((start + n) < dev->nDataBytesPerChunk) {
++ nToCopy = n;
++
++ /* Now folks, to calculate how many bytes to write back....
++ * If we're overwriting and not writing to then end of file then
++ * we need to write back as much as was there before.
++ */
++
++ nBytesRead =
++ in->variant.fileVariant.fileSize -
++ ((chunk - 1) * dev->nDataBytesPerChunk);
++
++ if (nBytesRead > dev->nDataBytesPerChunk) {
++ nBytesRead = dev->nDataBytesPerChunk;
++ }
++
++ nToWriteBack =
++ (nBytesRead >
++ (start + n)) ? nBytesRead : (start + n);
++
++ } else {
++ nToCopy = dev->nDataBytesPerChunk - start;
++ nToWriteBack = dev->nDataBytesPerChunk;
++ }
++
++ if (nToCopy != dev->nDataBytesPerChunk) {
++ /* An incomplete start or end chunk (or maybe both start and end chunk) */
++ if (dev->nShortOpCaches > 0) {
++ yaffs_ChunkCache *cache;
++ /* If we can't find the data in the cache, then load the cache */
++ cache = yaffs_FindChunkCache(in, chunk);
++
++ if (!cache
++ && yaffs_CheckSpaceForAllocation(in->
++ myDev)) {
++ cache = yaffs_GrabChunkCache(in->myDev);
++ cache->object = in;
++ cache->chunkId = chunk;
++ cache->dirty = 0;
++ cache->locked = 0;
++ yaffs_ReadChunkDataFromObject(in, chunk,
++ cache->
++ data);
++ }
++ else if(cache &&
++ !cache->dirty &&
++ !yaffs_CheckSpaceForAllocation(in->myDev)){
++ /* Drop the cache if it was a read cache item and
++ * no space check has been made for it.
++ */
++ cache = NULL;
++ }
++
++ if (cache) {
++ yaffs_UseChunkCache(dev, cache, 1);
++ cache->locked = 1;
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_UnlockYAFFS(TRUE);
++#endif
++
++ memcpy(&cache->data[start], buffer,
++ nToCopy);
++
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_LockYAFFS(TRUE);
++#endif
++ cache->locked = 0;
++ cache->nBytes = nToWriteBack;
++
++ if (writeThrough) {
++ chunkWritten =
++ yaffs_WriteChunkDataToObject
++ (cache->object,
++ cache->chunkId,
++ cache->data, cache->nBytes,
++ 1);
++ cache->dirty = 0;
++ }
++
++ } else {
++ chunkWritten = -1; /* fail the write */
++ }
++ } else {
++ /* An incomplete start or end chunk (or maybe both start and end chunk)
++ * Read into the local buffer then copy, then copy over and write back.
++ */
++
++ __u8 *localBuffer =
++ yaffs_GetTempBuffer(dev, __LINE__);
++
++ yaffs_ReadChunkDataFromObject(in, chunk,
++ localBuffer);
++
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_UnlockYAFFS(TRUE);
++#endif
++
++ memcpy(&localBuffer[start], buffer, nToCopy);
++
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_LockYAFFS(TRUE);
++#endif
++ chunkWritten =
++ yaffs_WriteChunkDataToObject(in, chunk,
++ localBuffer,
++ nToWriteBack,
++ 0);
++
++ yaffs_ReleaseTempBuffer(dev, localBuffer,
++ __LINE__);
++
++ }
++
++ } else {
++
++#ifdef CONFIG_YAFFS_WINCE
++ /* Under WinCE can't do direct transfer. Need to use a local buffer.
++ * This is because we otherwise screw up WinCE's memory mapper
++ */
++ __u8 *localBuffer = yaffs_GetTempBuffer(dev, __LINE__);
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_UnlockYAFFS(TRUE);
++#endif
++ memcpy(localBuffer, buffer, dev->nDataBytesPerChunk);
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_LockYAFFS(TRUE);
++#endif
++ chunkWritten =
++ yaffs_WriteChunkDataToObject(in, chunk, localBuffer,
++ dev->nDataBytesPerChunk,
++ 0);
++ yaffs_ReleaseTempBuffer(dev, localBuffer, __LINE__);
++#else
++ /* A full chunk. Write directly from the supplied buffer. */
++ chunkWritten =
++ yaffs_WriteChunkDataToObject(in, chunk, buffer,
++ dev->nDataBytesPerChunk,
++ 0);
++#endif
++ /* Since we've overwritten the cached data, we better invalidate it. */
++ yaffs_InvalidateChunkCache(in, chunk);
++ }
++
++ if (chunkWritten >= 0) {
++ n -= nToCopy;
++ offset += nToCopy;
++ buffer += nToCopy;
++ nDone += nToCopy;
++ }
++
++ }
++
++ /* Update file object */
++
++ if ((startOfWrite + nDone) > in->variant.fileVariant.fileSize) {
++ in->variant.fileVariant.fileSize = (startOfWrite + nDone);
++ }
++
++ in->dirty = 1;
++
++ return nDone;
++}
++
++
++/* ---------------------- File resizing stuff ------------------ */
++
++static void yaffs_PruneResizedChunks(yaffs_Object * in, int newSize)
++{
++
++ yaffs_Device *dev = in->myDev;
++ int oldFileSize = in->variant.fileVariant.fileSize;
++
++ int lastDel = 1 + (oldFileSize - 1) / dev->nDataBytesPerChunk;
++
++ int startDel = 1 + (newSize + dev->nDataBytesPerChunk - 1) /
++ dev->nDataBytesPerChunk;
++ int i;
++ int chunkId;
++
++ /* Delete backwards so that we don't end up with holes if
++ * power is lost part-way through the operation.
++ */
++ for (i = lastDel; i >= startDel; i--) {
++ /* NB this could be optimised somewhat,
++ * eg. could retrieve the tags and write them without
++ * using yaffs_DeleteChunk
++ */
++
++ chunkId = yaffs_FindAndDeleteChunkInFile(in, i, NULL);
++ if (chunkId > 0) {
++ if (chunkId <
++ (dev->internalStartBlock * dev->nChunksPerBlock)
++ || chunkId >=
++ ((dev->internalEndBlock +
++ 1) * dev->nChunksPerBlock)) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR("Found daft chunkId %d for %d" TENDSTR),
++ chunkId, i));
++ } else {
++ in->nDataChunks--;
++ yaffs_DeleteChunk(dev, chunkId, 1, __LINE__);
++ }
++ }
++ }
++
++}
++
++int yaffs_ResizeFile(yaffs_Object * in, loff_t newSize)
++{
++
++ int oldFileSize = in->variant.fileVariant.fileSize;
++ int newSizeOfPartialChunk;
++ int newFullChunks;
++
++ yaffs_Device *dev = in->myDev;
++
++ yaffs_AddrToChunk(dev, newSize, &newFullChunks, &newSizeOfPartialChunk);
++
++ yaffs_FlushFilesChunkCache(in);
++ yaffs_InvalidateWholeChunkCache(in);
++
++ yaffs_CheckGarbageCollection(dev);
++
++ if (in->variantType != YAFFS_OBJECT_TYPE_FILE) {
++ return yaffs_GetFileSize(in);
++ }
++
++ if (newSize == oldFileSize) {
++ return oldFileSize;
++ }
++
++ if (newSize < oldFileSize) {
++
++ yaffs_PruneResizedChunks(in, newSize);
++
++ if (newSizeOfPartialChunk != 0) {
++ int lastChunk = 1 + newFullChunks;
++
++ __u8 *localBuffer = yaffs_GetTempBuffer(dev, __LINE__);
++
++ /* Got to read and rewrite the last chunk with its new size and zero pad */
++ yaffs_ReadChunkDataFromObject(in, lastChunk,
++ localBuffer);
++
++ memset(localBuffer + newSizeOfPartialChunk, 0,
++ dev->nDataBytesPerChunk - newSizeOfPartialChunk);
++
++ yaffs_WriteChunkDataToObject(in, lastChunk, localBuffer,
++ newSizeOfPartialChunk, 1);
++
++ yaffs_ReleaseTempBuffer(dev, localBuffer, __LINE__);
++ }
++
++ in->variant.fileVariant.fileSize = newSize;
++
++ yaffs_PruneFileStructure(dev, &in->variant.fileVariant);
++ }
++ /* Write a new object header.
++ * show we've shrunk the file, if need be
++ * Do this only if the file is not in the deleted directories.
++ */
++ if (in->parent->objectId != YAFFS_OBJECTID_UNLINKED &&
++ in->parent->objectId != YAFFS_OBJECTID_DELETED) {
++ yaffs_UpdateObjectHeader(in, NULL, 0,
++ (newSize < oldFileSize) ? 1 : 0, 0);
++ }
++
++ return newSize;
++}
++
++loff_t yaffs_GetFileSize(yaffs_Object * obj)
++{
++ obj = yaffs_GetEquivalentObject(obj);
++
++ switch (obj->variantType) {
++ case YAFFS_OBJECT_TYPE_FILE:
++ return obj->variant.fileVariant.fileSize;
++ case YAFFS_OBJECT_TYPE_SYMLINK:
++ return yaffs_strlen(obj->variant.symLinkVariant.alias);
++ default:
++ return 0;
++ }
++}
++
++
++
++int yaffs_FlushFile(yaffs_Object * in, int updateTime)
++{
++ int retVal;
++ if (in->dirty) {
++ yaffs_FlushFilesChunkCache(in);
++ if (updateTime) {
++#ifdef CONFIG_YAFFS_WINCE
++ yfsd_WinFileTimeNow(in->win_mtime);
++#else
++
++ in->yst_mtime = Y_CURRENT_TIME;
++
++#endif
++ }
++
++ retVal =
++ (yaffs_UpdateObjectHeader(in, NULL, 0, 0, 0) >=
++ 0) ? YAFFS_OK : YAFFS_FAIL;
++ } else {
++ retVal = YAFFS_OK;
++ }
++
++ return retVal;
++
++}
++
++static int yaffs_DoGenericObjectDeletion(yaffs_Object * in)
++{
++
++ /* First off, invalidate the file's data in the cache, without flushing. */
++ yaffs_InvalidateWholeChunkCache(in);
++
++ if (in->myDev->isYaffs2 && (in->parent != in->myDev->deletedDir)) {
++ /* Move to the unlinked directory so we have a record that it was deleted. */
++ yaffs_ChangeObjectName(in, in->myDev->deletedDir, NULL, 0, 0);
++
++ }
++
++ yaffs_RemoveObjectFromDirectory(in);
++ yaffs_DeleteChunk(in->myDev, in->chunkId, 1, __LINE__);
++ in->chunkId = -1;
++
++ yaffs_FreeObject(in);
++ return YAFFS_OK;
++
++}
++
++/* yaffs_DeleteFile deletes the whole file data
++ * and the inode associated with the file.
++ * It does not delete the links associated with the file.
++ */
++static int yaffs_UnlinkFile(yaffs_Object * in)
++{
++
++ int retVal;
++ int immediateDeletion = 0;
++
++ if (1) {
++#ifdef __KERNEL__
++ if (!in->myInode) {
++ immediateDeletion = 1;
++
++ }
++#else
++ if (in->inUse <= 0) {
++ immediateDeletion = 1;
++
++ }
++#endif
++ if (immediateDeletion) {
++ retVal =
++ yaffs_ChangeObjectName(in, in->myDev->deletedDir,
++ NULL, 0, 0);
++ T(YAFFS_TRACE_TRACING,
++ (TSTR("yaffs: immediate deletion of file %d" TENDSTR),
++ in->objectId));
++ in->deleted = 1;
++ in->myDev->nDeletedFiles++;
++ if (0 && in->myDev->isYaffs2) {
++ yaffs_ResizeFile(in, 0);
++ }
++ yaffs_SoftDeleteFile(in);
++ } else {
++ retVal =
++ yaffs_ChangeObjectName(in, in->myDev->unlinkedDir,
++ NULL, 0, 0);
++ }
++
++ }
++ return retVal;
++}
++
++int yaffs_DeleteFile(yaffs_Object * in)
++{
++ int retVal = YAFFS_OK;
++
++ if (in->nDataChunks > 0) {
++ /* Use soft deletion if there is data in the file */
++ if (!in->unlinked) {
++ retVal = yaffs_UnlinkFile(in);
++ }
++ if (retVal == YAFFS_OK && in->unlinked && !in->deleted) {
++ in->deleted = 1;
++ in->myDev->nDeletedFiles++;
++ yaffs_SoftDeleteFile(in);
++ }
++ return in->deleted ? YAFFS_OK : YAFFS_FAIL;
++ } else {
++ /* The file has no data chunks so we toss it immediately */
++ yaffs_FreeTnode(in->myDev, in->variant.fileVariant.top);
++ in->variant.fileVariant.top = NULL;
++ yaffs_DoGenericObjectDeletion(in);
++
++ return YAFFS_OK;
++ }
++}
++
++static int yaffs_DeleteDirectory(yaffs_Object * in)
++{
++ /* First check that the directory is empty. */
++ if (list_empty(&in->variant.directoryVariant.children)) {
++ return yaffs_DoGenericObjectDeletion(in);
++ }
++
++ return YAFFS_FAIL;
++
++}
++
++static int yaffs_DeleteSymLink(yaffs_Object * in)
++{
++ YFREE(in->variant.symLinkVariant.alias);
++
++ return yaffs_DoGenericObjectDeletion(in);
++}
++
++static int yaffs_DeleteHardLink(yaffs_Object * in)
++{
++ /* remove this hardlink from the list assocaited with the equivalent
++ * object
++ */
++ list_del(&in->hardLinks);
++ return yaffs_DoGenericObjectDeletion(in);
++}
++
++static void yaffs_DestroyObject(yaffs_Object * obj)
++{
++ switch (obj->variantType) {
++ case YAFFS_OBJECT_TYPE_FILE:
++ yaffs_DeleteFile(obj);
++ break;
++ case YAFFS_OBJECT_TYPE_DIRECTORY:
++ yaffs_DeleteDirectory(obj);
++ break;
++ case YAFFS_OBJECT_TYPE_SYMLINK:
++ yaffs_DeleteSymLink(obj);
++ break;
++ case YAFFS_OBJECT_TYPE_HARDLINK:
++ yaffs_DeleteHardLink(obj);
++ break;
++ case YAFFS_OBJECT_TYPE_SPECIAL:
++ yaffs_DoGenericObjectDeletion(obj);
++ break;
++ case YAFFS_OBJECT_TYPE_UNKNOWN:
++ break; /* should not happen. */
++ }
++}
++
++static int yaffs_UnlinkWorker(yaffs_Object * obj)
++{
++
++ if (obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK) {
++ return yaffs_DeleteHardLink(obj);
++ } else if (!list_empty(&obj->hardLinks)) {
++ /* Curve ball: We're unlinking an object that has a hardlink.
++ *
++ * This problem arises because we are not strictly following
++ * The Linux link/inode model.
++ *
++ * We can't really delete the object.
++ * Instead, we do the following:
++ * - Select a hardlink.
++ * - Unhook it from the hard links
++ * - Unhook it from its parent directory (so that the rename can work)
++ * - Rename the object to the hardlink's name.
++ * - Delete the hardlink
++ */
++
++ yaffs_Object *hl;
++ int retVal;
++ YCHAR name[YAFFS_MAX_NAME_LENGTH + 1];
++
++ hl = list_entry(obj->hardLinks.next, yaffs_Object, hardLinks);
++
++ list_del_init(&hl->hardLinks);
++ list_del_init(&hl->siblings);
++
++ yaffs_GetObjectName(hl, name, YAFFS_MAX_NAME_LENGTH + 1);
++
++ retVal = yaffs_ChangeObjectName(obj, hl->parent, name, 0, 0);
++
++ if (retVal == YAFFS_OK) {
++ retVal = yaffs_DoGenericObjectDeletion(hl);
++ }
++ return retVal;
++
++ } else {
++ switch (obj->variantType) {
++ case YAFFS_OBJECT_TYPE_FILE:
++ return yaffs_UnlinkFile(obj);
++ break;
++ case YAFFS_OBJECT_TYPE_DIRECTORY:
++ return yaffs_DeleteDirectory(obj);
++ break;
++ case YAFFS_OBJECT_TYPE_SYMLINK:
++ return yaffs_DeleteSymLink(obj);
++ break;
++ case YAFFS_OBJECT_TYPE_SPECIAL:
++ return yaffs_DoGenericObjectDeletion(obj);
++ break;
++ case YAFFS_OBJECT_TYPE_HARDLINK:
++ case YAFFS_OBJECT_TYPE_UNKNOWN:
++ default:
++ return YAFFS_FAIL;
++ }
++ }
++}
++
++
++static int yaffs_UnlinkObject( yaffs_Object *obj)
++{
++
++ if (obj && obj->unlinkAllowed) {
++ return yaffs_UnlinkWorker(obj);
++ }
++
++ return YAFFS_FAIL;
++
++}
++int yaffs_Unlink(yaffs_Object * dir, const YCHAR * name)
++{
++ yaffs_Object *obj;
++
++ obj = yaffs_FindObjectByName(dir, name);
++ return yaffs_UnlinkObject(obj);
++}
++
++/*----------------------- Initialisation Scanning ---------------------- */
++
++static void yaffs_HandleShadowedObject(yaffs_Device * dev, int objId,
++ int backwardScanning)
++{
++ yaffs_Object *obj;
++
++ if (!backwardScanning) {
++ /* Handle YAFFS1 forward scanning case
++ * For YAFFS1 we always do the deletion
++ */
++
++ } else {
++ /* Handle YAFFS2 case (backward scanning)
++ * If the shadowed object exists then ignore.
++ */
++ if (yaffs_FindObjectByNumber(dev, objId)) {
++ return;
++ }
++ }
++
++ /* Let's create it (if it does not exist) assuming it is a file so that it can do shrinking etc.
++ * We put it in unlinked dir to be cleaned up after the scanning
++ */
++ obj =
++ yaffs_FindOrCreateObjectByNumber(dev, objId,
++ YAFFS_OBJECT_TYPE_FILE);
++ yaffs_AddObjectToDirectory(dev->unlinkedDir, obj);
++ obj->variant.fileVariant.shrinkSize = 0;
++ obj->valid = 1; /* So that we don't read any other info for this file */
++
++}
++
++typedef struct {
++ int seq;
++ int block;
++} yaffs_BlockIndex;
++
++
++static void yaffs_HardlinkFixup(yaffs_Device *dev, yaffs_Object *hardList)
++{
++ yaffs_Object *hl;
++ yaffs_Object *in;
++
++ while (hardList) {
++ hl = hardList;
++ hardList = (yaffs_Object *) (hardList->hardLinks.next);
++
++ in = yaffs_FindObjectByNumber(dev,
++ hl->variant.hardLinkVariant.
++ equivalentObjectId);
++
++ if (in) {
++ /* Add the hardlink pointers */
++ hl->variant.hardLinkVariant.equivalentObject = in;
++ list_add(&hl->hardLinks, &in->hardLinks);
++ } else {
++ /* Todo Need to report/handle this better.
++ * Got a problem... hardlink to a non-existant object
++ */
++ hl->variant.hardLinkVariant.equivalentObject = NULL;
++ INIT_LIST_HEAD(&hl->hardLinks);
++
++ }
++
++ }
++
++}
++
++
++
++
++
++static int ybicmp(const void *a, const void *b){
++ register int aseq = ((yaffs_BlockIndex *)a)->seq;
++ register int bseq = ((yaffs_BlockIndex *)b)->seq;
++ register int ablock = ((yaffs_BlockIndex *)a)->block;
++ register int bblock = ((yaffs_BlockIndex *)b)->block;
++ if( aseq == bseq )
++ return ablock - bblock;
++ else
++ return aseq - bseq;
++
++}
++
++static int yaffs_Scan(yaffs_Device * dev)
++{
++ yaffs_ExtendedTags tags;
++ int blk;
++ int blockIterator;
++ int startIterator;
++ int endIterator;
++ int nBlocksToScan = 0;
++ int result;
++
++ int chunk;
++ int c;
++ int deleted;
++ yaffs_BlockState state;
++ yaffs_Object *hardList = NULL;
++ yaffs_Object *hl;
++ yaffs_BlockInfo *bi;
++ int sequenceNumber;
++ yaffs_ObjectHeader *oh;
++ yaffs_Object *in;
++ yaffs_Object *parent;
++ int nBlocks = dev->internalEndBlock - dev->internalStartBlock + 1;
++
++ __u8 *chunkData;
++
++ yaffs_BlockIndex *blockIndex = NULL;
++
++ if (dev->isYaffs2) {
++ T(YAFFS_TRACE_SCAN,
++ (TSTR("yaffs_Scan is not for YAFFS2!" TENDSTR)));
++ return YAFFS_FAIL;
++ }
++
++ //TODO Throw all the yaffs2 stuuf out of yaffs_Scan since it is only for yaffs1 format.
++
++ T(YAFFS_TRACE_SCAN,
++ (TSTR("yaffs_Scan starts intstartblk %d intendblk %d..." TENDSTR),
++ dev->internalStartBlock, dev->internalEndBlock));
++
++ chunkData = yaffs_GetTempBuffer(dev, __LINE__);
++
++ dev->sequenceNumber = YAFFS_LOWEST_SEQUENCE_NUMBER;
++
++ if (dev->isYaffs2) {
++ blockIndex = YMALLOC(nBlocks * sizeof(yaffs_BlockIndex));
++ }
++
++ /* Scan all the blocks to determine their state */
++ for (blk = dev->internalStartBlock; blk <= dev->internalEndBlock; blk++) {
++ bi = yaffs_GetBlockInfo(dev, blk);
++ yaffs_ClearChunkBits(dev, blk);
++ bi->pagesInUse = 0;
++ bi->softDeletions = 0;
++
++ yaffs_QueryInitialBlockState(dev, blk, &state, &sequenceNumber);
++
++ bi->blockState = state;
++ bi->sequenceNumber = sequenceNumber;
++
++ T(YAFFS_TRACE_SCAN_DEBUG,
++ (TSTR("Block scanning block %d state %d seq %d" TENDSTR), blk,
++ state, sequenceNumber));
++
++ if (state == YAFFS_BLOCK_STATE_DEAD) {
++ T(YAFFS_TRACE_BAD_BLOCKS,
++ (TSTR("block %d is bad" TENDSTR), blk));
++ } else if (state == YAFFS_BLOCK_STATE_EMPTY) {
++ T(YAFFS_TRACE_SCAN_DEBUG,
++ (TSTR("Block empty " TENDSTR)));
++ dev->nErasedBlocks++;
++ dev->nFreeChunks += dev->nChunksPerBlock;
++ } else if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
++
++ /* Determine the highest sequence number */
++ if (dev->isYaffs2 &&
++ sequenceNumber >= YAFFS_LOWEST_SEQUENCE_NUMBER &&
++ sequenceNumber < YAFFS_HIGHEST_SEQUENCE_NUMBER) {
++
++ blockIndex[nBlocksToScan].seq = sequenceNumber;
++ blockIndex[nBlocksToScan].block = blk;
++
++ nBlocksToScan++;
++
++ if (sequenceNumber >= dev->sequenceNumber) {
++ dev->sequenceNumber = sequenceNumber;
++ }
++ } else if (dev->isYaffs2) {
++ /* TODO: Nasty sequence number! */
++ T(YAFFS_TRACE_SCAN,
++ (TSTR
++ ("Block scanning block %d has bad sequence number %d"
++ TENDSTR), blk, sequenceNumber));
++
++ }
++ }
++ }
++
++ /* Sort the blocks
++ * Dungy old bubble sort for now...
++ */
++ if (dev->isYaffs2) {
++ yaffs_BlockIndex temp;
++ int i;
++ int j;
++
++ for (i = 0; i < nBlocksToScan; i++)
++ for (j = i + 1; j < nBlocksToScan; j++)
++ if (blockIndex[i].seq > blockIndex[j].seq) {
++ temp = blockIndex[j];
++ blockIndex[j] = blockIndex[i];
++ blockIndex[i] = temp;
++ }
++ }
++
++ /* Now scan the blocks looking at the data. */
++ if (dev->isYaffs2) {
++ startIterator = 0;
++ endIterator = nBlocksToScan - 1;
++ T(YAFFS_TRACE_SCAN_DEBUG,
++ (TSTR("%d blocks to be scanned" TENDSTR), nBlocksToScan));
++ } else {
++ startIterator = dev->internalStartBlock;
++ endIterator = dev->internalEndBlock;
++ }
++
++ /* For each block.... */
++ for (blockIterator = startIterator; blockIterator <= endIterator;
++ blockIterator++) {
++
++ if (dev->isYaffs2) {
++ /* get the block to scan in the correct order */
++ blk = blockIndex[blockIterator].block;
++ } else {
++ blk = blockIterator;
++ }
++
++ bi = yaffs_GetBlockInfo(dev, blk);
++ state = bi->blockState;
++
++ deleted = 0;
++
++ /* For each chunk in each block that needs scanning....*/
++ for (c = 0; c < dev->nChunksPerBlock &&
++ state == YAFFS_BLOCK_STATE_NEEDS_SCANNING; c++) {
++ /* Read the tags and decide what to do */
++ chunk = blk * dev->nChunksPerBlock + c;
++
++ result = yaffs_ReadChunkWithTagsFromNAND(dev, chunk, NULL,
++ &tags);
++
++ /* Let's have a good look at this chunk... */
++
++ if (!dev->isYaffs2 && tags.chunkDeleted) {
++ /* YAFFS1 only...
++ * A deleted chunk
++ */
++ deleted++;
++ dev->nFreeChunks++;
++ /*T((" %d %d deleted\n",blk,c)); */
++ } else if (!tags.chunkUsed) {
++ /* An unassigned chunk in the block
++ * This means that either the block is empty or
++ * this is the one being allocated from
++ */
++
++ if (c == 0) {
++ /* We're looking at the first chunk in the block so the block is unused */
++ state = YAFFS_BLOCK_STATE_EMPTY;
++ dev->nErasedBlocks++;
++ } else {
++ /* this is the block being allocated from */
++ T(YAFFS_TRACE_SCAN,
++ (TSTR
++ (" Allocating from %d %d" TENDSTR),
++ blk, c));
++ state = YAFFS_BLOCK_STATE_ALLOCATING;
++ dev->allocationBlock = blk;
++ dev->allocationPage = c;
++ dev->allocationBlockFinder = blk;
++ /* Set it to here to encourage the allocator to go forth from here. */
++
++ /* Yaffs2 sanity check:
++ * This should be the one with the highest sequence number
++ */
++ if (dev->isYaffs2
++ && (dev->sequenceNumber !=
++ bi->sequenceNumber)) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR
++ ("yaffs: Allocation block %d was not highest sequence id:"
++ " block seq = %d, dev seq = %d"
++ TENDSTR), blk,bi->sequenceNumber,dev->sequenceNumber));
++ }
++ }
++
++ dev->nFreeChunks += (dev->nChunksPerBlock - c);
++ } else if (tags.chunkId > 0) {
++ /* chunkId > 0 so it is a data chunk... */
++ unsigned int endpos;
++
++ yaffs_SetChunkBit(dev, blk, c);
++ bi->pagesInUse++;
++
++ in = yaffs_FindOrCreateObjectByNumber(dev,
++ tags.
++ objectId,
++ YAFFS_OBJECT_TYPE_FILE);
++ /* PutChunkIntoFile checks for a clash (two data chunks with
++ * the same chunkId).
++ */
++ yaffs_PutChunkIntoFile(in, tags.chunkId, chunk,
++ 1);
++ endpos =
++ (tags.chunkId - 1) * dev->nDataBytesPerChunk +
++ tags.byteCount;
++ if (in->variantType == YAFFS_OBJECT_TYPE_FILE
++ && in->variant.fileVariant.scannedFileSize <
++ endpos) {
++ in->variant.fileVariant.
++ scannedFileSize = endpos;
++ if (!dev->useHeaderFileSize) {
++ in->variant.fileVariant.
++ fileSize =
++ in->variant.fileVariant.
++ scannedFileSize;
++ }
++
++ }
++ /* T((" %d %d data %d %d\n",blk,c,tags.objectId,tags.chunkId)); */
++ } else {
++ /* chunkId == 0, so it is an ObjectHeader.
++ * Thus, we read in the object header and make the object
++ */
++ yaffs_SetChunkBit(dev, blk, c);
++ bi->pagesInUse++;
++
++ result = yaffs_ReadChunkWithTagsFromNAND(dev, chunk,
++ chunkData,
++ NULL);
++
++ oh = (yaffs_ObjectHeader *) chunkData;
++
++ in = yaffs_FindObjectByNumber(dev,
++ tags.objectId);
++ if (in && in->variantType != oh->type) {
++ /* This should not happen, but somehow
++ * Wev'e ended up with an objectId that has been reused but not yet
++ * deleted, and worse still it has changed type. Delete the old object.
++ */
++
++ yaffs_DestroyObject(in);
++
++ in = 0;
++ }
++
++ in = yaffs_FindOrCreateObjectByNumber(dev,
++ tags.
++ objectId,
++ oh->type);
++
++ if (oh->shadowsObject > 0) {
++ yaffs_HandleShadowedObject(dev,
++ oh->
++ shadowsObject,
++ 0);
++ }
++
++ if (in->valid) {
++ /* We have already filled this one. We have a duplicate and need to resolve it. */
++
++ unsigned existingSerial = in->serial;
++ unsigned newSerial = tags.serialNumber;
++
++ if (dev->isYaffs2 ||
++ ((existingSerial + 1) & 3) ==
++ newSerial) {
++ /* Use new one - destroy the exisiting one */
++ yaffs_DeleteChunk(dev,
++ in->chunkId,
++ 1, __LINE__);
++ in->valid = 0;
++ } else {
++ /* Use existing - destroy this one. */
++ yaffs_DeleteChunk(dev, chunk, 1,
++ __LINE__);
++ }
++ }
++
++ if (!in->valid &&
++ (tags.objectId == YAFFS_OBJECTID_ROOT ||
++ tags.objectId == YAFFS_OBJECTID_LOSTNFOUND)) {
++ /* We only load some info, don't fiddle with directory structure */
++ in->valid = 1;
++ in->variantType = oh->type;
++
++ in->yst_mode = oh->yst_mode;
++#ifdef CONFIG_YAFFS_WINCE
++ in->win_atime[0] = oh->win_atime[0];
++ in->win_ctime[0] = oh->win_ctime[0];
++ in->win_mtime[0] = oh->win_mtime[0];
++ in->win_atime[1] = oh->win_atime[1];
++ in->win_ctime[1] = oh->win_ctime[1];
++ in->win_mtime[1] = oh->win_mtime[1];
++#else
++ in->yst_uid = oh->yst_uid;
++ in->yst_gid = oh->yst_gid;
++ in->yst_atime = oh->yst_atime;
++ in->yst_mtime = oh->yst_mtime;
++ in->yst_ctime = oh->yst_ctime;
++ in->yst_rdev = oh->yst_rdev;
++#endif
++ in->chunkId = chunk;
++
++ } else if (!in->valid) {
++ /* we need to load this info */
++
++ in->valid = 1;
++ in->variantType = oh->type;
++
++ in->yst_mode = oh->yst_mode;
++#ifdef CONFIG_YAFFS_WINCE
++ in->win_atime[0] = oh->win_atime[0];
++ in->win_ctime[0] = oh->win_ctime[0];
++ in->win_mtime[0] = oh->win_mtime[0];
++ in->win_atime[1] = oh->win_atime[1];
++ in->win_ctime[1] = oh->win_ctime[1];
++ in->win_mtime[1] = oh->win_mtime[1];
++#else
++ in->yst_uid = oh->yst_uid;
++ in->yst_gid = oh->yst_gid;
++ in->yst_atime = oh->yst_atime;
++ in->yst_mtime = oh->yst_mtime;
++ in->yst_ctime = oh->yst_ctime;
++ in->yst_rdev = oh->yst_rdev;
++#endif
++ in->chunkId = chunk;
++
++ yaffs_SetObjectName(in, oh->name);
++ in->dirty = 0;
++
++ /* directory stuff...
++ * hook up to parent
++ */
++
++ parent =
++ yaffs_FindOrCreateObjectByNumber
++ (dev, oh->parentObjectId,
++ YAFFS_OBJECT_TYPE_DIRECTORY);
++ if (parent->variantType ==
++ YAFFS_OBJECT_TYPE_UNKNOWN) {
++ /* Set up as a directory */
++ parent->variantType =
++ YAFFS_OBJECT_TYPE_DIRECTORY;
++ INIT_LIST_HEAD(&parent->variant.
++ directoryVariant.
++ children);
++ } else if (parent->variantType !=
++ YAFFS_OBJECT_TYPE_DIRECTORY)
++ {
++ /* Hoosterman, another problem....
++ * We're trying to use a non-directory as a directory
++ */
++
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("yaffs tragedy: attempting to use non-directory as"
++ " a directory in scan. Put in lost+found."
++ TENDSTR)));
++ parent = dev->lostNFoundDir;
++ }
++
++ yaffs_AddObjectToDirectory(parent, in);
++
++ if (0 && (parent == dev->deletedDir ||
++ parent == dev->unlinkedDir)) {
++ in->deleted = 1; /* If it is unlinked at start up then it wants deleting */
++ dev->nDeletedFiles++;
++ }
++ /* Note re hardlinks.
++ * Since we might scan a hardlink before its equivalent object is scanned
++ * we put them all in a list.
++ * After scanning is complete, we should have all the objects, so we run through this
++ * list and fix up all the chains.
++ */
++
++ switch (in->variantType) {
++ case YAFFS_OBJECT_TYPE_UNKNOWN:
++ /* Todo got a problem */
++ break;
++ case YAFFS_OBJECT_TYPE_FILE:
++ if (dev->isYaffs2
++ && oh->isShrink) {
++ /* Prune back the shrunken chunks */
++ yaffs_PruneResizedChunks
++ (in, oh->fileSize);
++ /* Mark the block as having a shrinkHeader */
++ bi->hasShrinkHeader = 1;
++ }
++
++ if (dev->useHeaderFileSize)
++
++ in->variant.fileVariant.
++ fileSize =
++ oh->fileSize;
++
++ break;
++ case YAFFS_OBJECT_TYPE_HARDLINK:
++ in->variant.hardLinkVariant.
++ equivalentObjectId =
++ oh->equivalentObjectId;
++ in->hardLinks.next =
++ (struct list_head *)
++ hardList;
++ hardList = in;
++ break;
++ case YAFFS_OBJECT_TYPE_DIRECTORY:
++ /* Do nothing */
++ break;
++ case YAFFS_OBJECT_TYPE_SPECIAL:
++ /* Do nothing */
++ break;
++ case YAFFS_OBJECT_TYPE_SYMLINK:
++ in->variant.symLinkVariant.
++ alias =
++ yaffs_CloneString(oh->alias);
++ break;
++ }
++
++ if (parent == dev->deletedDir) {
++ yaffs_DestroyObject(in);
++ bi->hasShrinkHeader = 1;
++ }
++ }
++ }
++ }
++
++ if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
++ /* If we got this far while scanning, then the block is fully allocated.*/
++ state = YAFFS_BLOCK_STATE_FULL;
++ }
++
++ bi->blockState = state;
++
++ /* Now let's see if it was dirty */
++ if (bi->pagesInUse == 0 &&
++ !bi->hasShrinkHeader &&
++ bi->blockState == YAFFS_BLOCK_STATE_FULL) {
++ yaffs_BlockBecameDirty(dev, blk);
++ }
++
++ }
++
++ if (blockIndex) {
++ YFREE(blockIndex);
++ }
++
++
++ /* Ok, we've done all the scanning.
++ * Fix up the hard link chains.
++ * We should now have scanned all the objects, now it's time to add these
++ * hardlinks.
++ */
++
++ yaffs_HardlinkFixup(dev,hardList);
++
++ /* Handle the unlinked files. Since they were left in an unlinked state we should
++ * just delete them.
++ */
++ {
++ struct list_head *i;
++ struct list_head *n;
++
++ yaffs_Object *l;
++ /* Soft delete all the unlinked files */
++ list_for_each_safe(i, n,
++ &dev->unlinkedDir->variant.directoryVariant.
++ children) {
++ if (i) {
++ l = list_entry(i, yaffs_Object, siblings);
++ yaffs_DestroyObject(l);
++ }
++ }
++ }
++
++ yaffs_ReleaseTempBuffer(dev, chunkData, __LINE__);
++
++ T(YAFFS_TRACE_SCAN, (TSTR("yaffs_Scan ends" TENDSTR)));
++
++ return YAFFS_OK;
++}
++
++static void yaffs_CheckObjectDetailsLoaded(yaffs_Object *in)
++{
++ __u8 *chunkData;
++ yaffs_ObjectHeader *oh;
++ yaffs_Device *dev = in->myDev;
++ yaffs_ExtendedTags tags;
++ int result;
++
++#if 0
++ T(YAFFS_TRACE_SCAN,(TSTR("details for object %d %s loaded" TENDSTR),
++ in->objectId,
++ in->lazyLoaded ? "not yet" : "already"));
++#endif
++
++ if(in->lazyLoaded){
++ in->lazyLoaded = 0;
++ chunkData = yaffs_GetTempBuffer(dev, __LINE__);
++
++ result = yaffs_ReadChunkWithTagsFromNAND(dev,in->chunkId,chunkData,&tags);
++ oh = (yaffs_ObjectHeader *) chunkData;
++
++ in->yst_mode = oh->yst_mode;
++#ifdef CONFIG_YAFFS_WINCE
++ in->win_atime[0] = oh->win_atime[0];
++ in->win_ctime[0] = oh->win_ctime[0];
++ in->win_mtime[0] = oh->win_mtime[0];
++ in->win_atime[1] = oh->win_atime[1];
++ in->win_ctime[1] = oh->win_ctime[1];
++ in->win_mtime[1] = oh->win_mtime[1];
++#else
++ in->yst_uid = oh->yst_uid;
++ in->yst_gid = oh->yst_gid;
++ in->yst_atime = oh->yst_atime;
++ in->yst_mtime = oh->yst_mtime;
++ in->yst_ctime = oh->yst_ctime;
++ in->yst_rdev = oh->yst_rdev;
++
++#endif
++ yaffs_SetObjectName(in, oh->name);
++
++ if(in->variantType == YAFFS_OBJECT_TYPE_SYMLINK)
++ in->variant.symLinkVariant.alias =
++ yaffs_CloneString(oh->alias);
++
++ yaffs_ReleaseTempBuffer(dev,chunkData, __LINE__);
++ }
++}
++
++static int yaffs_ScanBackwards(yaffs_Device * dev)
++{
++ yaffs_ExtendedTags tags;
++ int blk;
++ int blockIterator;
++ int startIterator;
++ int endIterator;
++ int nBlocksToScan = 0;
++
++ int chunk;
++ int result;
++ int c;
++ int deleted;
++ yaffs_BlockState state;
++ yaffs_Object *hardList = NULL;
++ yaffs_BlockInfo *bi;
++ int sequenceNumber;
++ yaffs_ObjectHeader *oh;
++ yaffs_Object *in;
++ yaffs_Object *parent;
++ int nBlocks = dev->internalEndBlock - dev->internalStartBlock + 1;
++ int itsUnlinked;
++ __u8 *chunkData;
++
++ int fileSize;
++ int isShrink;
++ int foundChunksInBlock;
++ int equivalentObjectId;
++
++
++ yaffs_BlockIndex *blockIndex = NULL;
++ int altBlockIndex = 0;
++
++ if (!dev->isYaffs2) {
++ T(YAFFS_TRACE_SCAN,
++ (TSTR("yaffs_ScanBackwards is only for YAFFS2!" TENDSTR)));
++ return YAFFS_FAIL;
++ }
++
++ T(YAFFS_TRACE_SCAN,
++ (TSTR
++ ("yaffs_ScanBackwards starts intstartblk %d intendblk %d..."
++ TENDSTR), dev->internalStartBlock, dev->internalEndBlock));
++
++
++ dev->sequenceNumber = YAFFS_LOWEST_SEQUENCE_NUMBER;
++
++ blockIndex = YMALLOC(nBlocks * sizeof(yaffs_BlockIndex));
++
++ if(!blockIndex) {
++ blockIndex = YMALLOC_ALT(nBlocks * sizeof(yaffs_BlockIndex));
++ altBlockIndex = 1;
++ }
++
++ if(!blockIndex) {
++ T(YAFFS_TRACE_SCAN,
++ (TSTR("yaffs_Scan() could not allocate block index!" TENDSTR)));
++ return YAFFS_FAIL;
++ }
++
++ chunkData = yaffs_GetTempBuffer(dev, __LINE__);
++
++ /* Scan all the blocks to determine their state */
++ for (blk = dev->internalStartBlock; blk <= dev->internalEndBlock; blk++) {
++ bi = yaffs_GetBlockInfo(dev, blk);
++ yaffs_ClearChunkBits(dev, blk);
++ bi->pagesInUse = 0;
++ bi->softDeletions = 0;
++
++ yaffs_QueryInitialBlockState(dev, blk, &state, &sequenceNumber);
++
++ bi->blockState = state;
++ bi->sequenceNumber = sequenceNumber;
++
++ if(bi->sequenceNumber == YAFFS_SEQUENCE_CHECKPOINT_DATA)
++ bi->blockState = state = YAFFS_BLOCK_STATE_CHECKPOINT;
++
++ T(YAFFS_TRACE_SCAN_DEBUG,
++ (TSTR("Block scanning block %d state %d seq %d" TENDSTR), blk,
++ state, sequenceNumber));
++
++
++ if(state == YAFFS_BLOCK_STATE_CHECKPOINT){
++ /* todo .. fix free space ? */
++
++ } else if (state == YAFFS_BLOCK_STATE_DEAD) {
++ T(YAFFS_TRACE_BAD_BLOCKS,
++ (TSTR("block %d is bad" TENDSTR), blk));
++ } else if (state == YAFFS_BLOCK_STATE_EMPTY) {
++ T(YAFFS_TRACE_SCAN_DEBUG,
++ (TSTR("Block empty " TENDSTR)));
++ dev->nErasedBlocks++;
++ dev->nFreeChunks += dev->nChunksPerBlock;
++ } else if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
++
++ /* Determine the highest sequence number */
++ if (dev->isYaffs2 &&
++ sequenceNumber >= YAFFS_LOWEST_SEQUENCE_NUMBER &&
++ sequenceNumber < YAFFS_HIGHEST_SEQUENCE_NUMBER) {
++
++ blockIndex[nBlocksToScan].seq = sequenceNumber;
++ blockIndex[nBlocksToScan].block = blk;
++
++ nBlocksToScan++;
++
++ if (sequenceNumber >= dev->sequenceNumber) {
++ dev->sequenceNumber = sequenceNumber;
++ }
++ } else if (dev->isYaffs2) {
++ /* TODO: Nasty sequence number! */
++ T(YAFFS_TRACE_SCAN,
++ (TSTR
++ ("Block scanning block %d has bad sequence number %d"
++ TENDSTR), blk, sequenceNumber));
++
++ }
++ }
++ }
++
++ T(YAFFS_TRACE_SCAN,
++ (TSTR("%d blocks to be sorted..." TENDSTR), nBlocksToScan));
++
++
++
++ YYIELD();
++
++ /* Sort the blocks */
++#ifndef CONFIG_YAFFS_USE_OWN_SORT
++ {
++ /* Use qsort now. */
++ qsort(blockIndex, nBlocksToScan, sizeof(yaffs_BlockIndex), ybicmp);
++ }
++#else
++ {
++ /* Dungy old bubble sort... */
++
++ yaffs_BlockIndex temp;
++ int i;
++ int j;
++
++ for (i = 0; i < nBlocksToScan; i++)
++ for (j = i + 1; j < nBlocksToScan; j++)
++ if (blockIndex[i].seq > blockIndex[j].seq) {
++ temp = blockIndex[j];
++ blockIndex[j] = blockIndex[i];
++ blockIndex[i] = temp;
++ }
++ }
++#endif
++
++ YYIELD();
++
++ T(YAFFS_TRACE_SCAN, (TSTR("...done" TENDSTR)));
++
++ /* Now scan the blocks looking at the data. */
++ startIterator = 0;
++ endIterator = nBlocksToScan - 1;
++ T(YAFFS_TRACE_SCAN_DEBUG,
++ (TSTR("%d blocks to be scanned" TENDSTR), nBlocksToScan));
++
++ /* For each block.... backwards */
++ for (blockIterator = endIterator; blockIterator >= startIterator;
++ blockIterator--) {
++ /* Cooperative multitasking! This loop can run for so
++ long that watchdog timers expire. */
++ YYIELD();
++
++ /* get the block to scan in the correct order */
++ blk = blockIndex[blockIterator].block;
++
++ bi = yaffs_GetBlockInfo(dev, blk);
++ state = bi->blockState;
++
++ deleted = 0;
++
++ /* For each chunk in each block that needs scanning.... */
++ foundChunksInBlock = 0;
++ for (c = dev->nChunksPerBlock - 1; c >= 0 &&
++ (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING ||
++ state == YAFFS_BLOCK_STATE_ALLOCATING); c--) {
++ /* Scan backwards...
++ * Read the tags and decide what to do
++ */
++ chunk = blk * dev->nChunksPerBlock + c;
++
++ result = yaffs_ReadChunkWithTagsFromNAND(dev, chunk, NULL,
++ &tags);
++
++ /* Let's have a good look at this chunk... */
++
++ if (!tags.chunkUsed) {
++ /* An unassigned chunk in the block.
++ * If there are used chunks after this one, then
++ * it is a chunk that was skipped due to failing the erased
++ * check. Just skip it so that it can be deleted.
++ * But, more typically, We get here when this is an unallocated
++ * chunk and his means that either the block is empty or
++ * this is the one being allocated from
++ */
++
++ if(foundChunksInBlock)
++ {
++ /* This is a chunk that was skipped due to failing the erased check */
++
++ } else if (c == 0) {
++ /* We're looking at the first chunk in the block so the block is unused */
++ state = YAFFS_BLOCK_STATE_EMPTY;
++ dev->nErasedBlocks++;
++ } else {
++ if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING ||
++ state == YAFFS_BLOCK_STATE_ALLOCATING) {
++ if(dev->sequenceNumber == bi->sequenceNumber) {
++ /* this is the block being allocated from */
++
++ T(YAFFS_TRACE_SCAN,
++ (TSTR
++ (" Allocating from %d %d"
++ TENDSTR), blk, c));
++
++ state = YAFFS_BLOCK_STATE_ALLOCATING;
++ dev->allocationBlock = blk;
++ dev->allocationPage = c;
++ dev->allocationBlockFinder = blk;
++ }
++ else {
++ /* This is a partially written block that is not
++ * the current allocation block. This block must have
++ * had a write failure, so set up for retirement.
++ */
++
++ bi->needsRetiring = 1;
++ bi->gcPrioritise = 1;
++
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR("Partially written block %d being set for retirement" TENDSTR),
++ blk));
++ }
++
++ }
++
++ }
++
++ dev->nFreeChunks++;
++
++ } else if (tags.chunkId > 0) {
++ /* chunkId > 0 so it is a data chunk... */
++ unsigned int endpos;
++ __u32 chunkBase =
++ (tags.chunkId - 1) * dev->nDataBytesPerChunk;
++
++ foundChunksInBlock = 1;
++
++
++ yaffs_SetChunkBit(dev, blk, c);
++ bi->pagesInUse++;
++
++ in = yaffs_FindOrCreateObjectByNumber(dev,
++ tags.
++ objectId,
++ YAFFS_OBJECT_TYPE_FILE);
++ if (in->variantType == YAFFS_OBJECT_TYPE_FILE
++ && chunkBase <
++ in->variant.fileVariant.shrinkSize) {
++ /* This has not been invalidated by a resize */
++ yaffs_PutChunkIntoFile(in, tags.chunkId,
++ chunk, -1);
++
++ /* File size is calculated by looking at the data chunks if we have not
++ * seen an object header yet. Stop this practice once we find an object header.
++ */
++ endpos =
++ (tags.chunkId -
++ 1) * dev->nDataBytesPerChunk +
++ tags.byteCount;
++
++ if (!in->valid && /* have not got an object header yet */
++ in->variant.fileVariant.
++ scannedFileSize < endpos) {
++ in->variant.fileVariant.
++ scannedFileSize = endpos;
++ in->variant.fileVariant.
++ fileSize =
++ in->variant.fileVariant.
++ scannedFileSize;
++ }
++
++ } else {
++ /* This chunk has been invalidated by a resize, so delete */
++ yaffs_DeleteChunk(dev, chunk, 1, __LINE__);
++
++ }
++ } else {
++ /* chunkId == 0, so it is an ObjectHeader.
++ * Thus, we read in the object header and make the object
++ */
++ foundChunksInBlock = 1;
++
++ yaffs_SetChunkBit(dev, blk, c);
++ bi->pagesInUse++;
++
++ oh = NULL;
++ in = NULL;
++
++ if (tags.extraHeaderInfoAvailable) {
++ in = yaffs_FindOrCreateObjectByNumber
++ (dev, tags.objectId,
++ tags.extraObjectType);
++ }
++
++ if (!in ||
++#ifdef CONFIG_YAFFS_DISABLE_LAZY_LOAD
++ !in->valid ||
++#endif
++ tags.extraShadows ||
++ (!in->valid &&
++ (tags.objectId == YAFFS_OBJECTID_ROOT ||
++ tags.objectId == YAFFS_OBJECTID_LOSTNFOUND))
++ ) {
++
++ /* If we don't have valid info then we need to read the chunk
++ * TODO In future we can probably defer reading the chunk and
++ * living with invalid data until needed.
++ */
++
++ result = yaffs_ReadChunkWithTagsFromNAND(dev,
++ chunk,
++ chunkData,
++ NULL);
++
++ oh = (yaffs_ObjectHeader *) chunkData;
++
++ if (!in)
++ in = yaffs_FindOrCreateObjectByNumber(dev, tags.objectId, oh->type);
++
++ }
++
++ if (!in) {
++ /* TODO Hoosterman we have a problem! */
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("yaffs tragedy: Could not make object for object %d "
++ "at chunk %d during scan"
++ TENDSTR), tags.objectId, chunk));
++
++ }
++
++ if (in->valid) {
++ /* We have already filled this one.
++ * We have a duplicate that will be discarded, but
++ * we first have to suck out resize info if it is a file.
++ */
++
++ if ((in->variantType == YAFFS_OBJECT_TYPE_FILE) &&
++ ((oh &&
++ oh-> type == YAFFS_OBJECT_TYPE_FILE)||
++ (tags.extraHeaderInfoAvailable &&
++ tags.extraObjectType == YAFFS_OBJECT_TYPE_FILE))
++ ) {
++ __u32 thisSize =
++ (oh) ? oh->fileSize : tags.
++ extraFileLength;
++ __u32 parentObjectId =
++ (oh) ? oh->
++ parentObjectId : tags.
++ extraParentObjectId;
++ unsigned isShrink =
++ (oh) ? oh->isShrink : tags.
++ extraIsShrinkHeader;
++
++ /* If it is deleted (unlinked at start also means deleted)
++ * we treat the file size as being zeroed at this point.
++ */
++ if (parentObjectId ==
++ YAFFS_OBJECTID_DELETED
++ || parentObjectId ==
++ YAFFS_OBJECTID_UNLINKED) {
++ thisSize = 0;
++ isShrink = 1;
++ }
++
++ if (isShrink &&
++ in->variant.fileVariant.
++ shrinkSize > thisSize) {
++ in->variant.fileVariant.
++ shrinkSize =
++ thisSize;
++ }
++
++ if (isShrink) {
++ bi->hasShrinkHeader = 1;
++ }
++
++ }
++ /* Use existing - destroy this one. */
++ yaffs_DeleteChunk(dev, chunk, 1, __LINE__);
++
++ }
++
++ if (!in->valid &&
++ (tags.objectId == YAFFS_OBJECTID_ROOT ||
++ tags.objectId ==
++ YAFFS_OBJECTID_LOSTNFOUND)) {
++ /* We only load some info, don't fiddle with directory structure */
++ in->valid = 1;
++
++ if(oh) {
++ in->variantType = oh->type;
++
++ in->yst_mode = oh->yst_mode;
++#ifdef CONFIG_YAFFS_WINCE
++ in->win_atime[0] = oh->win_atime[0];
++ in->win_ctime[0] = oh->win_ctime[0];
++ in->win_mtime[0] = oh->win_mtime[0];
++ in->win_atime[1] = oh->win_atime[1];
++ in->win_ctime[1] = oh->win_ctime[1];
++ in->win_mtime[1] = oh->win_mtime[1];
++#else
++ in->yst_uid = oh->yst_uid;
++ in->yst_gid = oh->yst_gid;
++ in->yst_atime = oh->yst_atime;
++ in->yst_mtime = oh->yst_mtime;
++ in->yst_ctime = oh->yst_ctime;
++ in->yst_rdev = oh->yst_rdev;
++
++#endif
++ } else {
++ in->variantType = tags.extraObjectType;
++ in->lazyLoaded = 1;
++ }
++
++ in->chunkId = chunk;
++
++ } else if (!in->valid) {
++ /* we need to load this info */
++
++ in->valid = 1;
++ in->chunkId = chunk;
++
++ if(oh) {
++ in->variantType = oh->type;
++
++ in->yst_mode = oh->yst_mode;
++#ifdef CONFIG_YAFFS_WINCE
++ in->win_atime[0] = oh->win_atime[0];
++ in->win_ctime[0] = oh->win_ctime[0];
++ in->win_mtime[0] = oh->win_mtime[0];
++ in->win_atime[1] = oh->win_atime[1];
++ in->win_ctime[1] = oh->win_ctime[1];
++ in->win_mtime[1] = oh->win_mtime[1];
++#else
++ in->yst_uid = oh->yst_uid;
++ in->yst_gid = oh->yst_gid;
++ in->yst_atime = oh->yst_atime;
++ in->yst_mtime = oh->yst_mtime;
++ in->yst_ctime = oh->yst_ctime;
++ in->yst_rdev = oh->yst_rdev;
++#endif
++
++ if (oh->shadowsObject > 0)
++ yaffs_HandleShadowedObject(dev,
++ oh->
++ shadowsObject,
++ 1);
++
++
++ yaffs_SetObjectName(in, oh->name);
++ parent =
++ yaffs_FindOrCreateObjectByNumber
++ (dev, oh->parentObjectId,
++ YAFFS_OBJECT_TYPE_DIRECTORY);
++
++ fileSize = oh->fileSize;
++ isShrink = oh->isShrink;
++ equivalentObjectId = oh->equivalentObjectId;
++
++ }
++ else {
++ in->variantType = tags.extraObjectType;
++ parent =
++ yaffs_FindOrCreateObjectByNumber
++ (dev, tags.extraParentObjectId,
++ YAFFS_OBJECT_TYPE_DIRECTORY);
++ fileSize = tags.extraFileLength;
++ isShrink = tags.extraIsShrinkHeader;
++ equivalentObjectId = tags.extraEquivalentObjectId;
++ in->lazyLoaded = 1;
++
++ }
++ in->dirty = 0;
++
++ /* directory stuff...
++ * hook up to parent
++ */
++
++ if (parent->variantType ==
++ YAFFS_OBJECT_TYPE_UNKNOWN) {
++ /* Set up as a directory */
++ parent->variantType =
++ YAFFS_OBJECT_TYPE_DIRECTORY;
++ INIT_LIST_HEAD(&parent->variant.
++ directoryVariant.
++ children);
++ } else if (parent->variantType !=
++ YAFFS_OBJECT_TYPE_DIRECTORY)
++ {
++ /* Hoosterman, another problem....
++ * We're trying to use a non-directory as a directory
++ */
++
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("yaffs tragedy: attempting to use non-directory as"
++ " a directory in scan. Put in lost+found."
++ TENDSTR)));
++ parent = dev->lostNFoundDir;
++ }
++
++ yaffs_AddObjectToDirectory(parent, in);
++
++ itsUnlinked = (parent == dev->deletedDir) ||
++ (parent == dev->unlinkedDir);
++
++ if (isShrink) {
++ /* Mark the block as having a shrinkHeader */
++ bi->hasShrinkHeader = 1;
++ }
++
++ /* Note re hardlinks.
++ * Since we might scan a hardlink before its equivalent object is scanned
++ * we put them all in a list.
++ * After scanning is complete, we should have all the objects, so we run
++ * through this list and fix up all the chains.
++ */
++
++ switch (in->variantType) {
++ case YAFFS_OBJECT_TYPE_UNKNOWN:
++ /* Todo got a problem */
++ break;
++ case YAFFS_OBJECT_TYPE_FILE:
++
++ if (in->variant.fileVariant.
++ scannedFileSize < fileSize) {
++ /* This covers the case where the file size is greater
++ * than where the data is
++ * This will happen if the file is resized to be larger
++ * than its current data extents.
++ */
++ in->variant.fileVariant.fileSize = fileSize;
++ in->variant.fileVariant.scannedFileSize =
++ in->variant.fileVariant.fileSize;
++ }
++
++ if (isShrink &&
++ in->variant.fileVariant.shrinkSize > fileSize) {
++ in->variant.fileVariant.shrinkSize = fileSize;
++ }
++
++ break;
++ case YAFFS_OBJECT_TYPE_HARDLINK:
++ if(!itsUnlinked) {
++ in->variant.hardLinkVariant.equivalentObjectId =
++ equivalentObjectId;
++ in->hardLinks.next =
++ (struct list_head *) hardList;
++ hardList = in;
++ }
++ break;
++ case YAFFS_OBJECT_TYPE_DIRECTORY:
++ /* Do nothing */
++ break;
++ case YAFFS_OBJECT_TYPE_SPECIAL:
++ /* Do nothing */
++ break;
++ case YAFFS_OBJECT_TYPE_SYMLINK:
++ if(oh)
++ in->variant.symLinkVariant.alias =
++ yaffs_CloneString(oh->
++ alias);
++ break;
++ }
++
++ }
++ }
++ }
++
++ if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
++ /* If we got this far while scanning, then the block is fully allocated. */
++ state = YAFFS_BLOCK_STATE_FULL;
++ }
++
++ bi->blockState = state;
++
++ /* Now let's see if it was dirty */
++ if (bi->pagesInUse == 0 &&
++ !bi->hasShrinkHeader &&
++ bi->blockState == YAFFS_BLOCK_STATE_FULL) {
++ yaffs_BlockBecameDirty(dev, blk);
++ }
++
++ }
++
++ if (altBlockIndex)
++ YFREE_ALT(blockIndex);
++ else
++ YFREE(blockIndex);
++
++ /* Ok, we've done all the scanning.
++ * Fix up the hard link chains.
++ * We should now have scanned all the objects, now it's time to add these
++ * hardlinks.
++ */
++ yaffs_HardlinkFixup(dev,hardList);
++
++
++ /*
++ * Sort out state of unlinked and deleted objects.
++ */
++ {
++ struct list_head *i;
++ struct list_head *n;
++
++ yaffs_Object *l;
++
++ /* Soft delete all the unlinked files */
++ list_for_each_safe(i, n,
++ &dev->unlinkedDir->variant.directoryVariant.
++ children) {
++ if (i) {
++ l = list_entry(i, yaffs_Object, siblings);
++ yaffs_DestroyObject(l);
++ }
++ }
++
++ /* Soft delete all the deletedDir files */
++ list_for_each_safe(i, n,
++ &dev->deletedDir->variant.directoryVariant.
++ children) {
++ if (i) {
++ l = list_entry(i, yaffs_Object, siblings);
++ yaffs_DestroyObject(l);
++
++ }
++ }
++ }
++
++ yaffs_ReleaseTempBuffer(dev, chunkData, __LINE__);
++
++ T(YAFFS_TRACE_SCAN, (TSTR("yaffs_ScanBackwards ends" TENDSTR)));
++
++ return YAFFS_OK;
++}
++
++/*------------------------------ Directory Functions ----------------------------- */
++
++static void yaffs_RemoveObjectFromDirectory(yaffs_Object * obj)
++{
++ yaffs_Device *dev = obj->myDev;
++
++ if(dev && dev->removeObjectCallback)
++ dev->removeObjectCallback(obj);
++
++ list_del_init(&obj->siblings);
++ obj->parent = NULL;
++}
++
++
++static void yaffs_AddObjectToDirectory(yaffs_Object * directory,
++ yaffs_Object * obj)
++{
++
++ if (!directory) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR
++ ("tragedy: Trying to add an object to a null pointer directory"
++ TENDSTR)));
++ YBUG();
++ }
++ if (directory->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR
++ ("tragedy: Trying to add an object to a non-directory"
++ TENDSTR)));
++ YBUG();
++ }
++
++ if (obj->siblings.prev == NULL) {
++ /* Not initialised */
++ INIT_LIST_HEAD(&obj->siblings);
++
++ } else if (!list_empty(&obj->siblings)) {
++ /* If it is holed up somewhere else, un hook it */
++ yaffs_RemoveObjectFromDirectory(obj);
++ }
++ /* Now add it */
++ list_add(&obj->siblings, &directory->variant.directoryVariant.children);
++ obj->parent = directory;
++
++ if (directory == obj->myDev->unlinkedDir
++ || directory == obj->myDev->deletedDir) {
++ obj->unlinked = 1;
++ obj->myDev->nUnlinkedFiles++;
++ obj->renameAllowed = 0;
++ }
++}
++
++yaffs_Object *yaffs_FindObjectByName(yaffs_Object * directory,
++ const YCHAR * name)
++{
++ int sum;
++
++ struct list_head *i;
++ YCHAR buffer[YAFFS_MAX_NAME_LENGTH + 1];
++
++ yaffs_Object *l;
++
++ if (!name) {
++ return NULL;
++ }
++
++ if (!directory) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR
++ ("tragedy: yaffs_FindObjectByName: null pointer directory"
++ TENDSTR)));
++ YBUG();
++ }
++ if (directory->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR
++ ("tragedy: yaffs_FindObjectByName: non-directory" TENDSTR)));
++ YBUG();
++ }
++
++ sum = yaffs_CalcNameSum(name);
++
++ list_for_each(i, &directory->variant.directoryVariant.children) {
++ if (i) {
++ l = list_entry(i, yaffs_Object, siblings);
++
++ yaffs_CheckObjectDetailsLoaded(l);
++
++ /* Special case for lost-n-found */
++ if (l->objectId == YAFFS_OBJECTID_LOSTNFOUND) {
++ if (yaffs_strcmp(name, YAFFS_LOSTNFOUND_NAME) == 0) {
++ return l;
++ }
++ } else if (yaffs_SumCompare(l->sum, sum) || l->chunkId <= 0)
++ {
++ /* LostnFound cunk called Objxxx
++ * Do a real check
++ */
++ yaffs_GetObjectName(l, buffer,
++ YAFFS_MAX_NAME_LENGTH);
++ if (yaffs_strcmp(name, buffer) == 0) {
++ return l;
++ }
++
++ }
++ }
++ }
++
++ return NULL;
++}
++
++
++#if 0
++int yaffs_ApplyToDirectoryChildren(yaffs_Object * theDir,
++ int (*fn) (yaffs_Object *))
++{
++ struct list_head *i;
++ yaffs_Object *l;
++
++ if (!theDir) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR
++ ("tragedy: yaffs_FindObjectByName: null pointer directory"
++ TENDSTR)));
++ YBUG();
++ }
++ if (theDir->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR
++ ("tragedy: yaffs_FindObjectByName: non-directory" TENDSTR)));
++ YBUG();
++ }
++
++ list_for_each(i, &theDir->variant.directoryVariant.children) {
++ if (i) {
++ l = list_entry(i, yaffs_Object, siblings);
++ if (l && !fn(l)) {
++ return YAFFS_FAIL;
++ }
++ }
++ }
++
++ return YAFFS_OK;
++
++}
++#endif
++
++/* GetEquivalentObject dereferences any hard links to get to the
++ * actual object.
++ */
++
++yaffs_Object *yaffs_GetEquivalentObject(yaffs_Object * obj)
++{
++ if (obj && obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK) {
++ /* We want the object id of the equivalent object, not this one */
++ obj = obj->variant.hardLinkVariant.equivalentObject;
++ }
++ return obj;
++
++}
++
++int yaffs_GetObjectName(yaffs_Object * obj, YCHAR * name, int buffSize)
++{
++ memset(name, 0, buffSize * sizeof(YCHAR));
++
++ yaffs_CheckObjectDetailsLoaded(obj);
++
++ if (obj->objectId == YAFFS_OBJECTID_LOSTNFOUND) {
++ yaffs_strncpy(name, YAFFS_LOSTNFOUND_NAME, buffSize - 1);
++ } else if (obj->chunkId <= 0) {
++ YCHAR locName[20];
++ /* make up a name */
++ yaffs_sprintf(locName, _Y("%s%d"), YAFFS_LOSTNFOUND_PREFIX,
++ obj->objectId);
++ yaffs_strncpy(name, locName, buffSize - 1);
++
++ }
++#ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM
++ else if (obj->shortName[0]) {
++ yaffs_strcpy(name, obj->shortName);
++ }
++#endif
++ else {
++ int result;
++ __u8 *buffer = yaffs_GetTempBuffer(obj->myDev, __LINE__);
++
++ yaffs_ObjectHeader *oh = (yaffs_ObjectHeader *) buffer;
++
++ memset(buffer, 0, obj->myDev->nDataBytesPerChunk);
++
++ if (obj->chunkId >= 0) {
++ result = yaffs_ReadChunkWithTagsFromNAND(obj->myDev,
++ obj->chunkId, buffer,
++ NULL);
++ }
++ yaffs_strncpy(name, oh->name, buffSize - 1);
++
++ yaffs_ReleaseTempBuffer(obj->myDev, buffer, __LINE__);
++ }
++
++ return yaffs_strlen(name);
++}
++
++int yaffs_GetObjectFileLength(yaffs_Object * obj)
++{
++
++ /* Dereference any hard linking */
++ obj = yaffs_GetEquivalentObject(obj);
++
++ if (obj->variantType == YAFFS_OBJECT_TYPE_FILE) {
++ return obj->variant.fileVariant.fileSize;
++ }
++ if (obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK) {
++ return yaffs_strlen(obj->variant.symLinkVariant.alias);
++ } else {
++ /* Only a directory should drop through to here */
++ return obj->myDev->nDataBytesPerChunk;
++ }
++}
++
++int yaffs_GetObjectLinkCount(yaffs_Object * obj)
++{
++ int count = 0;
++ struct list_head *i;
++
++ if (!obj->unlinked) {
++ count++; /* the object itself */
++ }
++ list_for_each(i, &obj->hardLinks) {
++ count++; /* add the hard links; */
++ }
++ return count;
++
++}
++
++int yaffs_GetObjectInode(yaffs_Object * obj)
++{
++ obj = yaffs_GetEquivalentObject(obj);
++
++ return obj->objectId;
++}
++
++unsigned yaffs_GetObjectType(yaffs_Object * obj)
++{
++ obj = yaffs_GetEquivalentObject(obj);
++
++ switch (obj->variantType) {
++ case YAFFS_OBJECT_TYPE_FILE:
++ return DT_REG;
++ break;
++ case YAFFS_OBJECT_TYPE_DIRECTORY:
++ return DT_DIR;
++ break;
++ case YAFFS_OBJECT_TYPE_SYMLINK:
++ return DT_LNK;
++ break;
++ case YAFFS_OBJECT_TYPE_HARDLINK:
++ return DT_REG;
++ break;
++ case YAFFS_OBJECT_TYPE_SPECIAL:
++ if (S_ISFIFO(obj->yst_mode))
++ return DT_FIFO;
++ if (S_ISCHR(obj->yst_mode))
++ return DT_CHR;
++ if (S_ISBLK(obj->yst_mode))
++ return DT_BLK;
++ if (S_ISSOCK(obj->yst_mode))
++ return DT_SOCK;
++ default:
++ return DT_REG;
++ break;
++ }
++}
++
++YCHAR *yaffs_GetSymlinkAlias(yaffs_Object * obj)
++{
++ obj = yaffs_GetEquivalentObject(obj);
++ if (obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK) {
++ return yaffs_CloneString(obj->variant.symLinkVariant.alias);
++ } else {
++ return yaffs_CloneString(_Y(""));
++ }
++}
++
++#ifndef CONFIG_YAFFS_WINCE
++
++int yaffs_SetAttributes(yaffs_Object * obj, struct iattr *attr)
++{
++ unsigned int valid = attr->ia_valid;
++
++ if (valid & ATTR_MODE)
++ obj->yst_mode = attr->ia_mode;
++ if (valid & ATTR_UID)
++ obj->yst_uid = attr->ia_uid;
++ if (valid & ATTR_GID)
++ obj->yst_gid = attr->ia_gid;
++
++ if (valid & ATTR_ATIME)
++ obj->yst_atime = Y_TIME_CONVERT(attr->ia_atime);
++ if (valid & ATTR_CTIME)
++ obj->yst_ctime = Y_TIME_CONVERT(attr->ia_ctime);
++ if (valid & ATTR_MTIME)
++ obj->yst_mtime = Y_TIME_CONVERT(attr->ia_mtime);
++
++ if (valid & ATTR_SIZE)
++ yaffs_ResizeFile(obj, attr->ia_size);
++
++ yaffs_UpdateObjectHeader(obj, NULL, 1, 0, 0);
++
++ return YAFFS_OK;
++
++}
++int yaffs_GetAttributes(yaffs_Object * obj, struct iattr *attr)
++{
++ unsigned int valid = 0;
++
++ attr->ia_mode = obj->yst_mode;
++ valid |= ATTR_MODE;
++ attr->ia_uid = obj->yst_uid;
++ valid |= ATTR_UID;
++ attr->ia_gid = obj->yst_gid;
++ valid |= ATTR_GID;
++
++ Y_TIME_CONVERT(attr->ia_atime) = obj->yst_atime;
++ valid |= ATTR_ATIME;
++ Y_TIME_CONVERT(attr->ia_ctime) = obj->yst_ctime;
++ valid |= ATTR_CTIME;
++ Y_TIME_CONVERT(attr->ia_mtime) = obj->yst_mtime;
++ valid |= ATTR_MTIME;
++
++ attr->ia_size = yaffs_GetFileSize(obj);
++ valid |= ATTR_SIZE;
++
++ attr->ia_valid = valid;
++
++ return YAFFS_OK;
++
++}
++
++#endif
++
++#if 0
++int yaffs_DumpObject(yaffs_Object * obj)
++{
++ YCHAR name[257];
++
++ yaffs_GetObjectName(obj, name, 256);
++
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR
++ ("Object %d, inode %d \"%s\"\n dirty %d valid %d serial %d sum %d"
++ " chunk %d type %d size %d\n"
++ TENDSTR), obj->objectId, yaffs_GetObjectInode(obj), name,
++ obj->dirty, obj->valid, obj->serial, obj->sum, obj->chunkId,
++ yaffs_GetObjectType(obj), yaffs_GetObjectFileLength(obj)));
++
++ return YAFFS_OK;
++}
++#endif
++
++/*---------------------------- Initialisation code -------------------------------------- */
++
++static int yaffs_CheckDevFunctions(const yaffs_Device * dev)
++{
++
++ /* Common functions, gotta have */
++ if (!dev->eraseBlockInNAND || !dev->initialiseNAND)
++ return 0;
++
++#ifdef CONFIG_YAFFS_YAFFS2
++
++ /* Can use the "with tags" style interface for yaffs1 or yaffs2 */
++ if (dev->writeChunkWithTagsToNAND &&
++ dev->readChunkWithTagsFromNAND &&
++ !dev->writeChunkToNAND &&
++ !dev->readChunkFromNAND &&
++ dev->markNANDBlockBad && dev->queryNANDBlock)
++ return 1;
++#endif
++
++ /* Can use the "spare" style interface for yaffs1 */
++ if (!dev->isYaffs2 &&
++ !dev->writeChunkWithTagsToNAND &&
++ !dev->readChunkWithTagsFromNAND &&
++ dev->writeChunkToNAND &&
++ dev->readChunkFromNAND &&
++ !dev->markNANDBlockBad && !dev->queryNANDBlock)
++ return 1;
++
++ return 0; /* bad */
++}
++
++
++static void yaffs_CreateInitialDirectories(yaffs_Device *dev)
++{
++ /* Initialise the unlinked, deleted, root and lost and found directories */
++
++ dev->lostNFoundDir = dev->rootDir = NULL;
++ dev->unlinkedDir = dev->deletedDir = NULL;
++
++ dev->unlinkedDir =
++ yaffs_CreateFakeDirectory(dev, YAFFS_OBJECTID_UNLINKED, S_IFDIR);
++ dev->deletedDir =
++ yaffs_CreateFakeDirectory(dev, YAFFS_OBJECTID_DELETED, S_IFDIR);
++
++ dev->rootDir =
++ yaffs_CreateFakeDirectory(dev, YAFFS_OBJECTID_ROOT,
++ YAFFS_ROOT_MODE | S_IFDIR);
++ dev->lostNFoundDir =
++ yaffs_CreateFakeDirectory(dev, YAFFS_OBJECTID_LOSTNFOUND,
++ YAFFS_LOSTNFOUND_MODE | S_IFDIR);
++ yaffs_AddObjectToDirectory(dev->rootDir, dev->lostNFoundDir);
++}
++
++int yaffs_GutsInitialise(yaffs_Device * dev)
++{
++ unsigned x;
++ int bits;
++
++ T(YAFFS_TRACE_TRACING, (TSTR("yaffs: yaffs_GutsInitialise()" TENDSTR)));
++
++ /* Check stuff that must be set */
++
++ if (!dev) {
++ T(YAFFS_TRACE_ALWAYS, (TSTR("yaffs: Need a device" TENDSTR)));
++ return YAFFS_FAIL;
++ }
++
++ dev->internalStartBlock = dev->startBlock;
++ dev->internalEndBlock = dev->endBlock;
++ dev->blockOffset = 0;
++ dev->chunkOffset = 0;
++ dev->nFreeChunks = 0;
++
++ if (dev->startBlock == 0) {
++ dev->internalStartBlock = dev->startBlock + 1;
++ dev->internalEndBlock = dev->endBlock + 1;
++ dev->blockOffset = 1;
++ dev->chunkOffset = dev->nChunksPerBlock;
++ }
++
++ /* Check geometry parameters. */
++
++ if ((dev->isYaffs2 && dev->nDataBytesPerChunk < 1024) ||
++ (!dev->isYaffs2 && dev->nDataBytesPerChunk != 512) ||
++ dev->nChunksPerBlock < 2 ||
++ dev->nReservedBlocks < 2 ||
++ dev->internalStartBlock <= 0 ||
++ dev->internalEndBlock <= 0 ||
++ dev->internalEndBlock <= (dev->internalStartBlock + dev->nReservedBlocks + 2) // otherwise it is too small
++ ) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR
++ ("yaffs: NAND geometry problems: chunk size %d, type is yaffs%s "
++ TENDSTR), dev->nDataBytesPerChunk, dev->isYaffs2 ? "2" : ""));
++ return YAFFS_FAIL;
++ }
++
++ if (yaffs_InitialiseNAND(dev) != YAFFS_OK) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR("yaffs: InitialiseNAND failed" TENDSTR)));
++ return YAFFS_FAIL;
++ }
++
++ /* Got the right mix of functions? */
++ if (!yaffs_CheckDevFunctions(dev)) {
++ /* Function missing */
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR
++ ("yaffs: device function(s) missing or wrong\n" TENDSTR)));
++
++ return YAFFS_FAIL;
++ }
++
++ /* This is really a compilation check. */
++ if (!yaffs_CheckStructures()) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR("yaffs_CheckStructures failed\n" TENDSTR)));
++ return YAFFS_FAIL;
++ }
++
++ if (dev->isMounted) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR("yaffs: device already mounted\n" TENDSTR)));
++ return YAFFS_FAIL;
++ }
++
++ /* Finished with most checks. One or two more checks happen later on too. */
++
++ dev->isMounted = 1;
++
++
++
++ /* OK now calculate a few things for the device */
++
++ /*
++ * Calculate all the chunk size manipulation numbers:
++ */
++ /* Start off assuming it is a power of 2 */
++ dev->chunkShift = ShiftDiv(dev->nDataBytesPerChunk);
++ dev->chunkMask = (1<<dev->chunkShift) - 1;
++
++ if(dev->nDataBytesPerChunk == (dev->chunkMask + 1)){
++ /* Yes it is a power of 2, disable crumbs */
++ dev->crumbMask = 0;
++ dev->crumbShift = 0;
++ dev->crumbsPerChunk = 0;
++ } else {
++ /* Not a power of 2, use crumbs instead */
++ dev->crumbShift = ShiftDiv(sizeof(yaffs_PackedTags2TagsPart));
++ dev->crumbMask = (1<<dev->crumbShift)-1;
++ dev->crumbsPerChunk = dev->nDataBytesPerChunk/(1 << dev->crumbShift);
++ dev->chunkShift = 0;
++ dev->chunkMask = 0;
++ }
++
++
++ /*
++ * Calculate chunkGroupBits.
++ * We need to find the next power of 2 > than internalEndBlock
++ */
++
++ x = dev->nChunksPerBlock * (dev->internalEndBlock + 1);
++
++ bits = ShiftsGE(x);
++
++ /* Set up tnode width if wide tnodes are enabled. */
++ if(!dev->wideTnodesDisabled){
++ /* bits must be even so that we end up with 32-bit words */
++ if(bits & 1)
++ bits++;
++ if(bits < 16)
++ dev->tnodeWidth = 16;
++ else
++ dev->tnodeWidth = bits;
++ }
++ else
++ dev->tnodeWidth = 16;
++
++ dev->tnodeMask = (1<<dev->tnodeWidth)-1;
++
++ /* Level0 Tnodes are 16 bits or wider (if wide tnodes are enabled),
++ * so if the bitwidth of the
++ * chunk range we're using is greater than 16 we need
++ * to figure out chunk shift and chunkGroupSize
++ */
++
++ if (bits <= dev->tnodeWidth)
++ dev->chunkGroupBits = 0;
++ else
++ dev->chunkGroupBits = bits - dev->tnodeWidth;
++
++
++ dev->chunkGroupSize = 1 << dev->chunkGroupBits;
++
++ if (dev->nChunksPerBlock < dev->chunkGroupSize) {
++ /* We have a problem because the soft delete won't work if
++ * the chunk group size > chunks per block.
++ * This can be remedied by using larger "virtual blocks".
++ */
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR("yaffs: chunk group too large\n" TENDSTR)));
++
++ return YAFFS_FAIL;
++ }
++
++ /* OK, we've finished verifying the device, lets continue with initialisation */
++
++ /* More device initialisation */
++ dev->garbageCollections = 0;
++ dev->passiveGarbageCollections = 0;
++ dev->currentDirtyChecker = 0;
++ dev->bufferedBlock = -1;
++ dev->doingBufferedBlockRewrite = 0;
++ dev->nDeletedFiles = 0;
++ dev->nBackgroundDeletions = 0;
++ dev->nUnlinkedFiles = 0;
++ dev->eccFixed = 0;
++ dev->eccUnfixed = 0;
++ dev->tagsEccFixed = 0;
++ dev->tagsEccUnfixed = 0;
++ dev->nErasureFailures = 0;
++ dev->nErasedBlocks = 0;
++ dev->isDoingGC = 0;
++ dev->hasPendingPrioritisedGCs = 1; /* Assume the worst for now, will get fixed on first GC */
++
++ /* Initialise temporary buffers and caches. */
++ {
++ int i;
++ for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
++ dev->tempBuffer[i].line = 0; /* not in use */
++ dev->tempBuffer[i].buffer =
++ YMALLOC_DMA(dev->nDataBytesPerChunk);
++ }
++ }
++
++ if (dev->nShortOpCaches > 0) {
++ int i;
++
++ if (dev->nShortOpCaches > YAFFS_MAX_SHORT_OP_CACHES) {
++ dev->nShortOpCaches = YAFFS_MAX_SHORT_OP_CACHES;
++ }
++
++ dev->srCache =
++ YMALLOC(dev->nShortOpCaches * sizeof(yaffs_ChunkCache));
++
++ for (i = 0; i < dev->nShortOpCaches; i++) {
++ dev->srCache[i].object = NULL;
++ dev->srCache[i].lastUse = 0;
++ dev->srCache[i].dirty = 0;
++ dev->srCache[i].data = YMALLOC_DMA(dev->nDataBytesPerChunk);
++ }
++ dev->srLastUse = 0;
++ }
++
++ dev->cacheHits = 0;
++
++ dev->gcCleanupList = YMALLOC(dev->nChunksPerBlock * sizeof(__u32));
++
++ if (dev->isYaffs2) {
++ dev->useHeaderFileSize = 1;
++ }
++
++ yaffs_InitialiseBlocks(dev);
++ yaffs_InitialiseTnodes(dev);
++ yaffs_InitialiseObjects(dev);
++
++ yaffs_CreateInitialDirectories(dev);
++
++
++ /* Now scan the flash. */
++ if (dev->isYaffs2) {
++ if(yaffs_CheckpointRestore(dev)) {
++ T(YAFFS_TRACE_CHECKPOINT,
++ (TSTR("yaffs: restored from checkpoint" TENDSTR)));
++ } else {
++
++ /* Clean up the mess caused by an aborted checkpoint load
++ * and scan backwards.
++ */
++ yaffs_DeinitialiseBlocks(dev);
++ yaffs_DeinitialiseTnodes(dev);
++ yaffs_DeinitialiseObjects(dev);
++ yaffs_InitialiseBlocks(dev);
++ yaffs_InitialiseTnodes(dev);
++ yaffs_InitialiseObjects(dev);
++ yaffs_CreateInitialDirectories(dev);
++
++ yaffs_ScanBackwards(dev);
++ }
++ }else
++ yaffs_Scan(dev);
++
++ /* Zero out stats */
++ dev->nPageReads = 0;
++ dev->nPageWrites = 0;
++ dev->nBlockErasures = 0;
++ dev->nGCCopies = 0;
++ dev->nRetriedWrites = 0;
++
++ dev->nRetiredBlocks = 0;
++
++ yaffs_VerifyFreeChunks(dev);
++
++ T(YAFFS_TRACE_TRACING,
++ (TSTR("yaffs: yaffs_GutsInitialise() done.\n" TENDSTR)));
++ return YAFFS_OK;
++
++}
++
++void yaffs_Deinitialise(yaffs_Device * dev)
++{
++ if (dev->isMounted) {
++ int i;
++
++ yaffs_DeinitialiseBlocks(dev);
++ yaffs_DeinitialiseTnodes(dev);
++ yaffs_DeinitialiseObjects(dev);
++ if (dev->nShortOpCaches > 0) {
++
++ for (i = 0; i < dev->nShortOpCaches; i++) {
++ YFREE(dev->srCache[i].data);
++ }
++
++ YFREE(dev->srCache);
++ }
++
++ YFREE(dev->gcCleanupList);
++
++ for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
++ YFREE(dev->tempBuffer[i].buffer);
++ }
++
++ dev->isMounted = 0;
++ }
++
++}
++
++static int yaffs_CountFreeChunks(yaffs_Device * dev)
++{
++ int nFree;
++ int b;
++
++ yaffs_BlockInfo *blk;
++
++ for (nFree = 0, b = dev->internalStartBlock; b <= dev->internalEndBlock;
++ b++) {
++ blk = yaffs_GetBlockInfo(dev, b);
++
++ switch (blk->blockState) {
++ case YAFFS_BLOCK_STATE_EMPTY:
++ case YAFFS_BLOCK_STATE_ALLOCATING:
++ case YAFFS_BLOCK_STATE_COLLECTING:
++ case YAFFS_BLOCK_STATE_FULL:
++ nFree +=
++ (dev->nChunksPerBlock - blk->pagesInUse +
++ blk->softDeletions);
++ break;
++ default:
++ break;
++ }
++
++ }
++
++ return nFree;
++}
++
++int yaffs_GetNumberOfFreeChunks(yaffs_Device * dev)
++{
++ /* This is what we report to the outside world */
++
++ int nFree;
++ int nDirtyCacheChunks;
++ int blocksForCheckpoint;
++
++#if 1
++ nFree = dev->nFreeChunks;
++#else
++ nFree = yaffs_CountFreeChunks(dev);
++#endif
++
++ nFree += dev->nDeletedFiles;
++
++ /* Now count the number of dirty chunks in the cache and subtract those */
++
++ {
++ int i;
++ for (nDirtyCacheChunks = 0, i = 0; i < dev->nShortOpCaches; i++) {
++ if (dev->srCache[i].dirty)
++ nDirtyCacheChunks++;
++ }
++ }
++
++ nFree -= nDirtyCacheChunks;
++
++ nFree -= ((dev->nReservedBlocks + 1) * dev->nChunksPerBlock);
++
++ /* Now we figure out how much to reserve for the checkpoint and report that... */
++ blocksForCheckpoint = dev->nCheckpointReservedBlocks - dev->blocksInCheckpoint;
++ if(blocksForCheckpoint < 0)
++ blocksForCheckpoint = 0;
++
++ nFree -= (blocksForCheckpoint * dev->nChunksPerBlock);
++
++ if (nFree < 0)
++ nFree = 0;
++
++ return nFree;
++
++}
++
++static int yaffs_freeVerificationFailures;
++
++static void yaffs_VerifyFreeChunks(yaffs_Device * dev)
++{
++ int counted = yaffs_CountFreeChunks(dev);
++
++ int difference = dev->nFreeChunks - counted;
++
++ if (difference) {
++ T(YAFFS_TRACE_ALWAYS,
++ (TSTR("Freechunks verification failure %d %d %d" TENDSTR),
++ dev->nFreeChunks, counted, difference));
++ yaffs_freeVerificationFailures++;
++ }
++}
++
++/*---------------------------------------- YAFFS test code ----------------------*/
++
++#define yaffs_CheckStruct(structure,syze, name) \
++ if(sizeof(structure) != syze) \
++ { \
++ T(YAFFS_TRACE_ALWAYS,(TSTR("%s should be %d but is %d\n" TENDSTR),\
++ name,syze,sizeof(structure))); \
++ return YAFFS_FAIL; \
++ }
++
++static int yaffs_CheckStructures(void)
++{
++/* yaffs_CheckStruct(yaffs_Tags,8,"yaffs_Tags") */
++/* yaffs_CheckStruct(yaffs_TagsUnion,8,"yaffs_TagsUnion") */
++/* yaffs_CheckStruct(yaffs_Spare,16,"yaffs_Spare") */
++#ifndef CONFIG_YAFFS_TNODE_LIST_DEBUG
++ yaffs_CheckStruct(yaffs_Tnode, 2 * YAFFS_NTNODES_LEVEL0, "yaffs_Tnode")
++#endif
++ yaffs_CheckStruct(yaffs_ObjectHeader, 512, "yaffs_ObjectHeader")
++
++ return YAFFS_OK;
++}
+diff -urN linux.old/fs/yaffs2/yaffs_guts.h linux.dev/fs/yaffs2/yaffs_guts.h
+--- linux.old/fs/yaffs2/yaffs_guts.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_guts.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,893 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ * yaffs_guts.h: Configuration etc for yaffs_guts
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU Lesser General Public License version 2.1 as
++ * published by the Free Software Foundation.
++ *
++ *
++ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
++ *
++ * $Id: yaffs_guts.h,v 1.25 2006/10/13 08:52:49 charles Exp $
++ */
++
++#ifndef __YAFFS_GUTS_H__
++#define __YAFFS_GUTS_H__
++
++#include "devextras.h"
++#include "yportenv.h"
++
++#define YAFFS_OK 1
++#define YAFFS_FAIL 0
++
++/* Give us a Y=0x59,
++ * Give us an A=0x41,
++ * Give us an FF=0xFF
++ * Give us an S=0x53
++ * And what have we got...
++ */
++#define YAFFS_MAGIC 0x5941FF53
++
++#define YAFFS_NTNODES_LEVEL0 16
++#define YAFFS_TNODES_LEVEL0_BITS 4
++#define YAFFS_TNODES_LEVEL0_MASK 0xf
++
++#define YAFFS_NTNODES_INTERNAL (YAFFS_NTNODES_LEVEL0 / 2)
++#define YAFFS_TNODES_INTERNAL_BITS (YAFFS_TNODES_LEVEL0_BITS - 1)
++#define YAFFS_TNODES_INTERNAL_MASK 0x7
++#define YAFFS_TNODES_MAX_LEVEL 6
++
++#ifndef CONFIG_YAFFS_NO_YAFFS1
++#define YAFFS_BYTES_PER_SPARE 16
++#define YAFFS_BYTES_PER_CHUNK 512
++#define YAFFS_CHUNK_SIZE_SHIFT 9
++#define YAFFS_CHUNKS_PER_BLOCK 32
++#define YAFFS_BYTES_PER_BLOCK (YAFFS_CHUNKS_PER_BLOCK*YAFFS_BYTES_PER_CHUNK)
++#endif
++
++#define YAFFS_MIN_YAFFS2_CHUNK_SIZE 1024
++#define YAFFS_MIN_YAFFS2_SPARE_SIZE 32
++
++#define YAFFS_MAX_CHUNK_ID 0x000FFFFF
++
++#define YAFFS_UNUSED_OBJECT_ID 0x0003FFFF
++
++#define YAFFS_ALLOCATION_NOBJECTS 100
++#define YAFFS_ALLOCATION_NTNODES 100
++#define YAFFS_ALLOCATION_NLINKS 100
++
++#define YAFFS_NOBJECT_BUCKETS 256
++
++
++#define YAFFS_OBJECT_SPACE 0x40000
++
++#define YAFFS_NCHECKPOINT_OBJECTS 5000
++
++#define YAFFS_CHECKPOINT_VERSION 2
++
++#ifdef CONFIG_YAFFS_UNICODE
++#define YAFFS_MAX_NAME_LENGTH 127
++#define YAFFS_MAX_ALIAS_LENGTH 79
++#else
++#define YAFFS_MAX_NAME_LENGTH 255
++#define YAFFS_MAX_ALIAS_LENGTH 159
++#endif
++
++#define YAFFS_SHORT_NAME_LENGTH 15
++
++/* Some special object ids for pseudo objects */
++#define YAFFS_OBJECTID_ROOT 1
++#define YAFFS_OBJECTID_LOSTNFOUND 2
++#define YAFFS_OBJECTID_UNLINKED 3
++#define YAFFS_OBJECTID_DELETED 4
++
++/* Sseudo object ids for checkpointing */
++#define YAFFS_OBJECTID_SB_HEADER 0x10
++#define YAFFS_OBJECTID_CHECKPOINT_DATA 0x20
++#define YAFFS_SEQUENCE_CHECKPOINT_DATA 0x21
++
++/* */
++
++#define YAFFS_MAX_SHORT_OP_CACHES 20
++
++#define YAFFS_N_TEMP_BUFFERS 4
++
++/* Sequence numbers are used in YAFFS2 to determine block allocation order.
++ * The range is limited slightly to help distinguish bad numbers from good.
++ * This also allows us to perhaps in the future use special numbers for
++ * special purposes.
++ * EFFFFF00 allows the allocation of 8 blocks per second (~1Mbytes) for 15 years,
++ * and is a larger number than the lifetime of a 2GB device.
++ */
++#define YAFFS_LOWEST_SEQUENCE_NUMBER 0x00001000
++#define YAFFS_HIGHEST_SEQUENCE_NUMBER 0xEFFFFF00
++
++/* ChunkCache is used for short read/write operations.*/
++typedef struct {
++ struct yaffs_ObjectStruct *object;
++ int chunkId;
++ int lastUse;
++ int dirty;
++ int nBytes; /* Only valid if the cache is dirty */
++ int locked; /* Can't push out or flush while locked. */
++#ifdef CONFIG_YAFFS_YAFFS2
++ __u8 *data;
++#else
++ __u8 data[YAFFS_BYTES_PER_CHUNK];
++#endif
++} yaffs_ChunkCache;
++
++
++
++/* Tags structures in RAM
++ * NB This uses bitfield. Bitfields should not straddle a u32 boundary otherwise
++ * the structure size will get blown out.
++ */
++
++#ifndef CONFIG_YAFFS_NO_YAFFS1
++typedef struct {
++ unsigned chunkId:20;
++ unsigned serialNumber:2;
++ unsigned byteCount:10;
++ unsigned objectId:18;
++ unsigned ecc:12;
++ unsigned unusedStuff:2;
++
++} yaffs_Tags;
++
++typedef union {
++ yaffs_Tags asTags;
++ __u8 asBytes[8];
++} yaffs_TagsUnion;
++
++#endif
++
++/* Stuff used for extended tags in YAFFS2 */
++
++typedef enum {
++ YAFFS_ECC_RESULT_UNKNOWN,
++ YAFFS_ECC_RESULT_NO_ERROR,
++ YAFFS_ECC_RESULT_FIXED,
++ YAFFS_ECC_RESULT_UNFIXED
++} yaffs_ECCResult;
++
++typedef enum {
++ YAFFS_OBJECT_TYPE_UNKNOWN,
++ YAFFS_OBJECT_TYPE_FILE,
++ YAFFS_OBJECT_TYPE_SYMLINK,
++ YAFFS_OBJECT_TYPE_DIRECTORY,
++ YAFFS_OBJECT_TYPE_HARDLINK,
++ YAFFS_OBJECT_TYPE_SPECIAL
++} yaffs_ObjectType;
++
++typedef struct {
++
++ unsigned validMarker0;
++ unsigned chunkUsed; /* Status of the chunk: used or unused */
++ unsigned objectId; /* If 0 then this is not part of an object (unused) */
++ unsigned chunkId; /* If 0 then this is a header, else a data chunk */
++ unsigned byteCount; /* Only valid for data chunks */
++
++ /* The following stuff only has meaning when we read */
++ yaffs_ECCResult eccResult;
++ unsigned blockBad;
++
++ /* YAFFS 1 stuff */
++ unsigned chunkDeleted; /* The chunk is marked deleted */
++ unsigned serialNumber; /* Yaffs1 2-bit serial number */
++
++ /* YAFFS2 stuff */
++ unsigned sequenceNumber; /* The sequence number of this block */
++
++ /* Extra info if this is an object header (YAFFS2 only) */
++
++ unsigned extraHeaderInfoAvailable; /* There is extra info available if this is not zero */
++ unsigned extraParentObjectId; /* The parent object */
++ unsigned extraIsShrinkHeader; /* Is it a shrink header? */
++ unsigned extraShadows; /* Does this shadow another object? */
++
++ yaffs_ObjectType extraObjectType; /* What object type? */
++
++ unsigned extraFileLength; /* Length if it is a file */
++ unsigned extraEquivalentObjectId; /* Equivalent object Id if it is a hard link */
++
++ unsigned validMarker1;
++
++} yaffs_ExtendedTags;
++
++/* Spare structure for YAFFS1 */
++typedef struct {
++ __u8 tagByte0;
++ __u8 tagByte1;
++ __u8 tagByte2;
++ __u8 tagByte3;
++ __u8 pageStatus; /* set to 0 to delete the chunk */
++ __u8 blockStatus;
++ __u8 tagByte4;
++ __u8 tagByte5;
++ __u8 ecc1[3];
++ __u8 tagByte6;
++ __u8 tagByte7;
++ __u8 ecc2[3];
++} yaffs_Spare;
++
++/*Special structure for passing through to mtd */
++struct yaffs_NANDSpare {
++ yaffs_Spare spare;
++ int eccres1;
++ int eccres2;
++};
++
++/* Block data in RAM */
++
++typedef enum {
++ YAFFS_BLOCK_STATE_UNKNOWN = 0,
++
++ YAFFS_BLOCK_STATE_SCANNING,
++ YAFFS_BLOCK_STATE_NEEDS_SCANNING,
++ /* The block might have something on it (ie it is allocating or full, perhaps empty)
++ * but it needs to be scanned to determine its true state.
++ * This state is only valid during yaffs_Scan.
++ * NB We tolerate empty because the pre-scanner might be incapable of deciding
++ * However, if this state is returned on a YAFFS2 device, then we expect a sequence number
++ */
++
++ YAFFS_BLOCK_STATE_EMPTY,
++ /* This block is empty */
++
++ YAFFS_BLOCK_STATE_ALLOCATING,
++ /* This block is partially allocated.
++ * At least one page holds valid data.
++ * This is the one currently being used for page
++ * allocation. Should never be more than one of these
++ */
++
++ YAFFS_BLOCK_STATE_FULL,
++ /* All the pages in this block have been allocated.
++ */
++
++ YAFFS_BLOCK_STATE_DIRTY,
++ /* All pages have been allocated and deleted.
++ * Erase me, reuse me.
++ */
++
++ YAFFS_BLOCK_STATE_CHECKPOINT,
++ /* This block is assigned to holding checkpoint data.
++ */
++
++ YAFFS_BLOCK_STATE_COLLECTING,
++ /* This block is being garbage collected */
++
++ YAFFS_BLOCK_STATE_DEAD
++ /* This block has failed and is not in use */
++} yaffs_BlockState;
++
++typedef struct {
++
++ int softDeletions:10; /* number of soft deleted pages */
++ int pagesInUse:10; /* number of pages in use */
++ yaffs_BlockState blockState:4; /* One of the above block states */
++ __u32 needsRetiring:1; /* Data has failed on this block, need to get valid data off */
++ /* and retire the block. */
++ __u32 skipErasedCheck: 1; /* If this is set we can skip the erased check on this block */
++ __u32 gcPrioritise: 1; /* An ECC check or bank check has failed on this block.
++ It should be prioritised for GC */
++ __u32 chunkErrorStrikes:3; /* How many times we've had ecc etc failures on this block and tried to reuse it */
++
++#ifdef CONFIG_YAFFS_YAFFS2
++ __u32 hasShrinkHeader:1; /* This block has at least one shrink object header */
++ __u32 sequenceNumber; /* block sequence number for yaffs2 */
++#endif
++
++} yaffs_BlockInfo;
++
++/* -------------------------- Object structure -------------------------------*/
++/* This is the object structure as stored on NAND */
++
++typedef struct {
++ yaffs_ObjectType type;
++
++ /* Apply to everything */
++ int parentObjectId;
++ __u16 sum__NoLongerUsed; /* checksum of name. No longer used */
++ YCHAR name[YAFFS_MAX_NAME_LENGTH + 1];
++
++ /* Thes following apply to directories, files, symlinks - not hard links */
++ __u32 yst_mode; /* protection */
++
++#ifdef CONFIG_YAFFS_WINCE
++ __u32 notForWinCE[5];
++#else
++ __u32 yst_uid;
++ __u32 yst_gid;
++ __u32 yst_atime;
++ __u32 yst_mtime;
++ __u32 yst_ctime;
++#endif
++
++ /* File size applies to files only */
++ int fileSize;
++
++ /* Equivalent object id applies to hard links only. */
++ int equivalentObjectId;
++
++ /* Alias is for symlinks only. */
++ YCHAR alias[YAFFS_MAX_ALIAS_LENGTH + 1];
++
++ __u32 yst_rdev; /* device stuff for block and char devices (major/min) */
++
++#ifdef CONFIG_YAFFS_WINCE
++ __u32 win_ctime[2];
++ __u32 win_atime[2];
++ __u32 win_mtime[2];
++ __u32 roomToGrow[4];
++#else
++ __u32 roomToGrow[10];
++#endif
++
++ int shadowsObject; /* This object header shadows the specified object if > 0 */
++
++ /* isShrink applies to object headers written when we shrink the file (ie resize) */
++ __u32 isShrink;
++
++} yaffs_ObjectHeader;
++
++/*--------------------------- Tnode -------------------------- */
++
++union yaffs_Tnode_union {
++#ifdef CONFIG_YAFFS_TNODE_LIST_DEBUG
++ union yaffs_Tnode_union *internal[YAFFS_NTNODES_INTERNAL + 1];
++#else
++ union yaffs_Tnode_union *internal[YAFFS_NTNODES_INTERNAL];
++#endif
++/* __u16 level0[YAFFS_NTNODES_LEVEL0]; */
++
++};
++
++typedef union yaffs_Tnode_union yaffs_Tnode;
++
++struct yaffs_TnodeList_struct {
++ struct yaffs_TnodeList_struct *next;
++ yaffs_Tnode *tnodes;
++};
++
++typedef struct yaffs_TnodeList_struct yaffs_TnodeList;
++
++/*------------------------ Object -----------------------------*/
++/* An object can be one of:
++ * - a directory (no data, has children links
++ * - a regular file (data.... not prunes :->).
++ * - a symlink [symbolic link] (the alias).
++ * - a hard link
++ */
++
++typedef struct {
++ __u32 fileSize;
++ __u32 scannedFileSize;
++ __u32 shrinkSize;
++ int topLevel;
++ yaffs_Tnode *top;
++} yaffs_FileStructure;
++
++typedef struct {
++ struct list_head children; /* list of child links */
++} yaffs_DirectoryStructure;
++
++typedef struct {
++ YCHAR *alias;
++} yaffs_SymLinkStructure;
++
++typedef struct {
++ struct yaffs_ObjectStruct *equivalentObject;
++ __u32 equivalentObjectId;
++} yaffs_HardLinkStructure;
++
++typedef union {
++ yaffs_FileStructure fileVariant;
++ yaffs_DirectoryStructure directoryVariant;
++ yaffs_SymLinkStructure symLinkVariant;
++ yaffs_HardLinkStructure hardLinkVariant;
++} yaffs_ObjectVariant;
++
++struct yaffs_ObjectStruct {
++ __u8 deleted:1; /* This should only apply to unlinked files. */
++ __u8 softDeleted:1; /* it has also been soft deleted */
++ __u8 unlinked:1; /* An unlinked file. The file should be in the unlinked directory.*/
++ __u8 fake:1; /* A fake object has no presence on NAND. */
++ __u8 renameAllowed:1; /* Some objects are not allowed to be renamed. */
++ __u8 unlinkAllowed:1;
++ __u8 dirty:1; /* the object needs to be written to flash */
++ __u8 valid:1; /* When the file system is being loaded up, this
++ * object might be created before the data
++ * is available (ie. file data records appear before the header).
++ */
++ __u8 lazyLoaded:1; /* This object has been lazy loaded and is missing some detail */
++
++ __u8 deferedFree:1; /* For Linux kernel. Object is removed from NAND, but is
++ * still in the inode cache. Free of object is defered.
++ * until the inode is released.
++ */
++
++ __u8 serial; /* serial number of chunk in NAND. Cached here */
++ __u16 sum; /* sum of the name to speed searching */
++
++ struct yaffs_DeviceStruct *myDev; /* The device I'm on */
++
++ struct list_head hashLink; /* list of objects in this hash bucket */
++
++ struct list_head hardLinks; /* all the equivalent hard linked objects */
++
++ /* directory structure stuff */
++ /* also used for linking up the free list */
++ struct yaffs_ObjectStruct *parent;
++ struct list_head siblings;
++
++ /* Where's my object header in NAND? */
++ int chunkId;
++
++ int nDataChunks; /* Number of data chunks attached to the file. */
++
++ __u32 objectId; /* the object id value */
++
++ __u32 yst_mode;
++
++#ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM
++ YCHAR shortName[YAFFS_SHORT_NAME_LENGTH + 1];
++#endif
++
++#ifndef __KERNEL__
++ __u32 inUse;
++#endif
++
++#ifdef CONFIG_YAFFS_WINCE
++ __u32 win_ctime[2];
++ __u32 win_mtime[2];
++ __u32 win_atime[2];
++#else
++ __u32 yst_uid;
++ __u32 yst_gid;
++ __u32 yst_atime;
++ __u32 yst_mtime;
++ __u32 yst_ctime;
++#endif
++
++ __u32 yst_rdev;
++
++#ifdef __KERNEL__
++ struct inode *myInode;
++
++#endif
++
++ yaffs_ObjectType variantType;
++
++ yaffs_ObjectVariant variant;
++
++};
++
++typedef struct yaffs_ObjectStruct yaffs_Object;
++
++struct yaffs_ObjectList_struct {
++ yaffs_Object *objects;
++ struct yaffs_ObjectList_struct *next;
++};
++
++typedef struct yaffs_ObjectList_struct yaffs_ObjectList;
++
++typedef struct {
++ struct list_head list;
++ int count;
++} yaffs_ObjectBucket;
++
++
++/* yaffs_CheckpointObject holds the definition of an object as dumped
++ * by checkpointing.
++ */
++
++typedef struct {
++ int structType;
++ __u32 objectId;
++ __u32 parentId;
++ int chunkId;
++
++ yaffs_ObjectType variantType:3;
++ __u8 deleted:1;
++ __u8 softDeleted:1;
++ __u8 unlinked:1;
++ __u8 fake:1;
++ __u8 renameAllowed:1;
++ __u8 unlinkAllowed:1;
++ __u8 serial;
++
++ int nDataChunks;
++ __u32 fileSizeOrEquivalentObjectId;
++
++}yaffs_CheckpointObject;
++
++/*--------------------- Temporary buffers ----------------
++ *
++ * These are chunk-sized working buffers. Each device has a few
++ */
++
++typedef struct {
++ __u8 *buffer;
++ int line; /* track from whence this buffer was allocated */
++ int maxLine;
++} yaffs_TempBuffer;
++
++/*----------------- Device ---------------------------------*/
++
++struct yaffs_DeviceStruct {
++ struct list_head devList;
++ const char *name;
++
++ /* Entry parameters set up way early. Yaffs sets up the rest.*/
++ int nDataBytesPerChunk; /* Should be a power of 2 >= 512 */
++ int nChunksPerBlock; /* does not need to be a power of 2 */
++ int nBytesPerSpare; /* spare area size */
++ int startBlock; /* Start block we're allowed to use */
++ int endBlock; /* End block we're allowed to use */
++ int nReservedBlocks; /* We want this tuneable so that we can reduce */
++ /* reserved blocks on NOR and RAM. */
++
++ /* Stuff used by the partitioned checkpointing mechanism */
++ int checkpointStartBlock;
++ int checkpointEndBlock;
++
++ /* Stuff used by the shared space checkpointing mechanism */
++ /* If this value is zero, then this mechanism is disabled */
++
++ int nCheckpointReservedBlocks; /* Blocks to reserve for checkpoint data */
++
++
++
++
++ int nShortOpCaches; /* If <= 0, then short op caching is disabled, else
++ * the number of short op caches (don't use too many)
++ */
++
++ int useHeaderFileSize; /* Flag to determine if we should use file sizes from the header */
++
++ int useNANDECC; /* Flag to decide whether or not to use NANDECC */
++
++ void *genericDevice; /* Pointer to device context
++ * On an mtd this holds the mtd pointer.
++ */
++ void *superBlock;
++
++ /* NAND access functions (Must be set before calling YAFFS)*/
++
++ int (*writeChunkToNAND) (struct yaffs_DeviceStruct * dev,
++ int chunkInNAND, const __u8 * data,
++ const yaffs_Spare * spare);
++ int (*readChunkFromNAND) (struct yaffs_DeviceStruct * dev,
++ int chunkInNAND, __u8 * data,
++ yaffs_Spare * spare);
++ int (*eraseBlockInNAND) (struct yaffs_DeviceStruct * dev,
++ int blockInNAND);
++ int (*initialiseNAND) (struct yaffs_DeviceStruct * dev);
++
++#ifdef CONFIG_YAFFS_YAFFS2
++ int (*writeChunkWithTagsToNAND) (struct yaffs_DeviceStruct * dev,
++ int chunkInNAND, const __u8 * data,
++ const yaffs_ExtendedTags * tags);
++ int (*readChunkWithTagsFromNAND) (struct yaffs_DeviceStruct * dev,
++ int chunkInNAND, __u8 * data,
++ yaffs_ExtendedTags * tags);
++ int (*markNANDBlockBad) (struct yaffs_DeviceStruct * dev, int blockNo);
++ int (*queryNANDBlock) (struct yaffs_DeviceStruct * dev, int blockNo,
++ yaffs_BlockState * state, int *sequenceNumber);
++#endif
++
++ int isYaffs2;
++
++ /* The removeObjectCallback function must be supplied by OS flavours that
++ * need it. The Linux kernel does not use this, but yaffs direct does use
++ * it to implement the faster readdir
++ */
++ void (*removeObjectCallback)(struct yaffs_ObjectStruct *obj);
++
++ /* Callback to mark the superblock dirsty */
++ void (*markSuperBlockDirty)(void * superblock);
++
++ int wideTnodesDisabled; /* Set to disable wide tnodes */
++
++
++ /* End of stuff that must be set before initialisation. */
++
++ /* Runtime parameters. Set up by YAFFS. */
++
++ __u16 chunkGroupBits; /* 0 for devices <= 32MB. else log2(nchunks) - 16 */
++ __u16 chunkGroupSize; /* == 2^^chunkGroupBits */
++
++ /* Stuff to support wide tnodes */
++ __u32 tnodeWidth;
++ __u32 tnodeMask;
++
++ /* Stuff to support various file offses to chunk/offset translations */
++ /* "Crumbs" for nDataBytesPerChunk not being a power of 2 */
++ __u32 crumbMask;
++ __u32 crumbShift;
++ __u32 crumbsPerChunk;
++
++ /* Straight shifting for nDataBytesPerChunk being a power of 2 */
++ __u32 chunkShift;
++ __u32 chunkMask;
++
++
++#ifdef __KERNEL__
++
++ struct semaphore sem; /* Semaphore for waiting on erasure.*/
++ struct semaphore grossLock; /* Gross locking semaphore */
++ __u8 *spareBuffer; /* For mtdif2 use. Don't know the size of the buffer
++ * at compile time so we have to allocate it.
++ */
++ void (*putSuperFunc) (struct super_block * sb);
++#endif
++
++ int isMounted;
++
++ int isCheckpointed;
++
++
++ /* Stuff to support block offsetting to support start block zero */
++ int internalStartBlock;
++ int internalEndBlock;
++ int blockOffset;
++ int chunkOffset;
++
++
++ /* Runtime checkpointing stuff */
++ int checkpointPageSequence; /* running sequence number of checkpoint pages */
++ int checkpointByteCount;
++ int checkpointByteOffset;
++ __u8 *checkpointBuffer;
++ int checkpointOpenForWrite;
++ int blocksInCheckpoint;
++ int checkpointCurrentChunk;
++ int checkpointCurrentBlock;
++ int checkpointNextBlock;
++ int *checkpointBlockList;
++ int checkpointMaxBlocks;
++
++ /* Block Info */
++ yaffs_BlockInfo *blockInfo;
++ __u8 *chunkBits; /* bitmap of chunks in use */
++ unsigned blockInfoAlt:1; /* was allocated using alternative strategy */
++ unsigned chunkBitsAlt:1; /* was allocated using alternative strategy */
++ int chunkBitmapStride; /* Number of bytes of chunkBits per block.
++ * Must be consistent with nChunksPerBlock.
++ */
++
++ int nErasedBlocks;
++ int allocationBlock; /* Current block being allocated off */
++ __u32 allocationPage;
++ int allocationBlockFinder; /* Used to search for next allocation block */
++
++ /* Runtime state */
++ int nTnodesCreated;
++ yaffs_Tnode *freeTnodes;
++ int nFreeTnodes;
++ yaffs_TnodeList *allocatedTnodeList;
++
++ int isDoingGC;
++
++ int nObjectsCreated;
++ yaffs_Object *freeObjects;
++ int nFreeObjects;
++
++ yaffs_ObjectList *allocatedObjectList;
++
++ yaffs_ObjectBucket objectBucket[YAFFS_NOBJECT_BUCKETS];
++
++ int nFreeChunks;
++
++ int currentDirtyChecker; /* Used to find current dirtiest block */
++
++ __u32 *gcCleanupList; /* objects to delete at the end of a GC. */
++
++ /* Statistcs */
++ int nPageWrites;
++ int nPageReads;
++ int nBlockErasures;
++ int nErasureFailures;
++ int nGCCopies;
++ int garbageCollections;
++ int passiveGarbageCollections;
++ int nRetriedWrites;
++ int nRetiredBlocks;
++ int eccFixed;
++ int eccUnfixed;
++ int tagsEccFixed;
++ int tagsEccUnfixed;
++ int nDeletions;
++ int nUnmarkedDeletions;
++
++ int hasPendingPrioritisedGCs; /* We think this device might have pending prioritised gcs */
++
++ /* Special directories */
++ yaffs_Object *rootDir;
++ yaffs_Object *lostNFoundDir;
++
++ /* Buffer areas for storing data to recover from write failures TODO
++ * __u8 bufferedData[YAFFS_CHUNKS_PER_BLOCK][YAFFS_BYTES_PER_CHUNK];
++ * yaffs_Spare bufferedSpare[YAFFS_CHUNKS_PER_BLOCK];
++ */
++
++ int bufferedBlock; /* Which block is buffered here? */
++ int doingBufferedBlockRewrite;
++
++ yaffs_ChunkCache *srCache;
++ int srLastUse;
++
++ int cacheHits;
++
++ /* Stuff for background deletion and unlinked files.*/
++ yaffs_Object *unlinkedDir; /* Directory where unlinked and deleted files live. */
++ yaffs_Object *deletedDir; /* Directory where deleted objects are sent to disappear. */
++ yaffs_Object *unlinkedDeletion; /* Current file being background deleted.*/
++ int nDeletedFiles; /* Count of files awaiting deletion;*/
++ int nUnlinkedFiles; /* Count of unlinked files. */
++ int nBackgroundDeletions; /* Count of background deletions. */
++
++
++ yaffs_TempBuffer tempBuffer[YAFFS_N_TEMP_BUFFERS];
++ int maxTemp;
++ int unmanagedTempAllocations;
++ int unmanagedTempDeallocations;
++
++ /* yaffs2 runtime stuff */
++ unsigned sequenceNumber; /* Sequence number of currently allocating block */
++ unsigned oldestDirtySequence;
++
++};
++
++typedef struct yaffs_DeviceStruct yaffs_Device;
++
++/* The static layout of bllock usage etc is stored in the super block header */
++typedef struct {
++ int StructType;
++ int version;
++ int checkpointStartBlock;
++ int checkpointEndBlock;
++ int startBlock;
++ int endBlock;
++ int rfu[100];
++} yaffs_SuperBlockHeader;
++
++/* The CheckpointDevice structure holds the device information that changes at runtime and
++ * must be preserved over unmount/mount cycles.
++ */
++typedef struct {
++ int structType;
++ int nErasedBlocks;
++ int allocationBlock; /* Current block being allocated off */
++ __u32 allocationPage;
++ int nFreeChunks;
++
++ int nDeletedFiles; /* Count of files awaiting deletion;*/
++ int nUnlinkedFiles; /* Count of unlinked files. */
++ int nBackgroundDeletions; /* Count of background deletions. */
++
++ /* yaffs2 runtime stuff */
++ unsigned sequenceNumber; /* Sequence number of currently allocating block */
++ unsigned oldestDirtySequence;
++
++} yaffs_CheckpointDevice;
++
++
++typedef struct {
++ int structType;
++ __u32 magic;
++ __u32 version;
++ __u32 head;
++} yaffs_CheckpointValidity;
++
++/* Function to manipulate block info */
++static Y_INLINE yaffs_BlockInfo *yaffs_GetBlockInfo(yaffs_Device * dev, int blk)
++{
++ if (blk < dev->internalStartBlock || blk > dev->internalEndBlock) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("**>> yaffs: getBlockInfo block %d is not valid" TENDSTR),
++ blk));
++ YBUG();
++ }
++ return &dev->blockInfo[blk - dev->internalStartBlock];
++}
++
++/*----------------------- YAFFS Functions -----------------------*/
++
++int yaffs_GutsInitialise(yaffs_Device * dev);
++void yaffs_Deinitialise(yaffs_Device * dev);
++
++int yaffs_GetNumberOfFreeChunks(yaffs_Device * dev);
++
++int yaffs_RenameObject(yaffs_Object * oldDir, const YCHAR * oldName,
++ yaffs_Object * newDir, const YCHAR * newName);
++
++int yaffs_Unlink(yaffs_Object * dir, const YCHAR * name);
++int yaffs_DeleteFile(yaffs_Object * obj);
++
++int yaffs_GetObjectName(yaffs_Object * obj, YCHAR * name, int buffSize);
++int yaffs_GetObjectFileLength(yaffs_Object * obj);
++int yaffs_GetObjectInode(yaffs_Object * obj);
++unsigned yaffs_GetObjectType(yaffs_Object * obj);
++int yaffs_GetObjectLinkCount(yaffs_Object * obj);
++
++int yaffs_SetAttributes(yaffs_Object * obj, struct iattr *attr);
++int yaffs_GetAttributes(yaffs_Object * obj, struct iattr *attr);
++
++/* File operations */
++int yaffs_ReadDataFromFile(yaffs_Object * obj, __u8 * buffer, loff_t offset,
++ int nBytes);
++int yaffs_WriteDataToFile(yaffs_Object * obj, const __u8 * buffer, loff_t offset,
++ int nBytes, int writeThrough);
++int yaffs_ResizeFile(yaffs_Object * obj, loff_t newSize);
++
++yaffs_Object *yaffs_MknodFile(yaffs_Object * parent, const YCHAR * name,
++ __u32 mode, __u32 uid, __u32 gid);
++int yaffs_FlushFile(yaffs_Object * obj, int updateTime);
++
++/* Flushing and checkpointing */
++void yaffs_FlushEntireDeviceCache(yaffs_Device *dev);
++
++int yaffs_CheckpointSave(yaffs_Device *dev);
++int yaffs_CheckpointRestore(yaffs_Device *dev);
++
++/* Directory operations */
++yaffs_Object *yaffs_MknodDirectory(yaffs_Object * parent, const YCHAR * name,
++ __u32 mode, __u32 uid, __u32 gid);
++yaffs_Object *yaffs_FindObjectByName(yaffs_Object * theDir, const YCHAR * name);
++int yaffs_ApplyToDirectoryChildren(yaffs_Object * theDir,
++ int (*fn) (yaffs_Object *));
++
++yaffs_Object *yaffs_FindObjectByNumber(yaffs_Device * dev, __u32 number);
++
++/* Link operations */
++yaffs_Object *yaffs_Link(yaffs_Object * parent, const YCHAR * name,
++ yaffs_Object * equivalentObject);
++
++yaffs_Object *yaffs_GetEquivalentObject(yaffs_Object * obj);
++
++/* Symlink operations */
++yaffs_Object *yaffs_MknodSymLink(yaffs_Object * parent, const YCHAR * name,
++ __u32 mode, __u32 uid, __u32 gid,
++ const YCHAR * alias);
++YCHAR *yaffs_GetSymlinkAlias(yaffs_Object * obj);
++
++/* Special inodes (fifos, sockets and devices) */
++yaffs_Object *yaffs_MknodSpecial(yaffs_Object * parent, const YCHAR * name,
++ __u32 mode, __u32 uid, __u32 gid, __u32 rdev);
++
++/* Special directories */
++yaffs_Object *yaffs_Root(yaffs_Device * dev);
++yaffs_Object *yaffs_LostNFound(yaffs_Device * dev);
++
++#ifdef CONFIG_YAFFS_WINCE
++/* CONFIG_YAFFS_WINCE special stuff */
++void yfsd_WinFileTimeNow(__u32 target[2]);
++#endif
++
++#ifdef __KERNEL__
++
++void yaffs_HandleDeferedFree(yaffs_Object * obj);
++#endif
++
++/* Debug dump */
++int yaffs_DumpObject(yaffs_Object * obj);
++
++void yaffs_GutsTest(yaffs_Device * dev);
++
++/* A few useful functions */
++void yaffs_InitialiseTags(yaffs_ExtendedTags * tags);
++void yaffs_DeleteChunk(yaffs_Device * dev, int chunkId, int markNAND, int lyn);
++int yaffs_CheckFF(__u8 * buffer, int nBytes);
++void yaffs_HandleChunkError(yaffs_Device *dev, yaffs_BlockInfo *bi);
++
++#endif
+diff -urN linux.old/fs/yaffs2/yaffsinterface.h linux.dev/fs/yaffs2/yaffsinterface.h
+--- linux.old/fs/yaffs2/yaffsinterface.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffsinterface.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,23 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ * yaffsinterface.h: Interface to the guts of yaffs.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU Lesser General Public License version 2.1 as
++ * published by the Free Software Foundation.
++ *
++ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
++ *
++ */
++
++#ifndef __YAFFSINTERFACE_H__
++#define __YAFFSINTERFACE_H__
++
++int yaffs_Initialise(unsigned nBlocks);
++
++#endif
+diff -urN linux.old/fs/yaffs2/yaffs_mtdif2.c linux.dev/fs/yaffs2/yaffs_mtdif2.c
+--- linux.old/fs/yaffs2/yaffs_mtdif2.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_mtdif2.c 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,234 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ * yaffs_mtdif.c NAND mtd wrapper functions.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * 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.
++ *
++ */
++
++/* mtd interface for YAFFS2 */
++
++const char *yaffs_mtdif2_c_version =
++ "$Id: yaffs_mtdif2.c,v 1.15 2006/11/08 06:24:34 charles Exp $";
++
++#include "yportenv.h"
++
++
++#include "yaffs_mtdif2.h"
++
++#include "linux/mtd/mtd.h"
++#include "linux/types.h"
++#include "linux/time.h"
++
++#include "yaffs_packedtags2.h"
++
++int nandmtd2_WriteChunkWithTagsToNAND(yaffs_Device * dev, int chunkInNAND,
++ const __u8 * data,
++ const yaffs_ExtendedTags * tags)
++{
++ struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ struct mtd_oob_ops ops;
++#else
++ size_t dummy;
++#endif
++ int retval = 0;
++
++ loff_t addr = ((loff_t) chunkInNAND) * dev->nDataBytesPerChunk;
++
++ yaffs_PackedTags2 pt;
++
++ T(YAFFS_TRACE_MTD,
++ (TSTR
++ ("nandmtd2_WriteChunkWithTagsToNAND chunk %d data %p tags %p"
++ TENDSTR), chunkInNAND, data, tags));
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ if (tags)
++ yaffs_PackTags2(&pt, tags);
++ else
++ BUG(); /* both tags and data should always be present */
++
++ if (data) {
++ ops.mode = MTD_OOB_AUTO;
++ ops.ooblen = sizeof(pt);
++ ops.len = dev->nDataBytesPerChunk;
++ ops.ooboffs = 0;
++ ops.datbuf = (__u8 *)data;
++ ops.oobbuf = (void *)&pt;
++ retval = mtd->write_oob(mtd, addr, &ops);
++ } else
++ BUG(); /* both tags and data should always be present */
++#else
++ if (tags) {
++ yaffs_PackTags2(&pt, tags);
++ }
++
++ if (data && tags) {
++ if (dev->useNANDECC)
++ retval =
++ mtd->write_ecc(mtd, addr, dev->nDataBytesPerChunk,
++ &dummy, data, (__u8 *) & pt, NULL);
++ else
++ retval =
++ mtd->write_ecc(mtd, addr, dev->nDataBytesPerChunk,
++ &dummy, data, (__u8 *) & pt, NULL);
++ } else {
++ if (data)
++ retval =
++ mtd->write(mtd, addr, dev->nDataBytesPerChunk, &dummy,
++ data);
++ if (tags)
++ retval =
++ mtd->write_oob(mtd, addr, mtd->oobsize, &dummy,
++ (__u8 *) & pt);
++
++ }
++#endif
++
++ if (retval == 0)
++ return YAFFS_OK;
++ else
++ return YAFFS_FAIL;
++}
++
++int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device * dev, int chunkInNAND,
++ __u8 * data, yaffs_ExtendedTags * tags)
++{
++ struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ struct mtd_oob_ops ops;
++#endif
++ size_t dummy;
++ int retval = 0;
++
++ loff_t addr = ((loff_t) chunkInNAND) * dev->nDataBytesPerChunk;
++
++ yaffs_PackedTags2 pt;
++
++ T(YAFFS_TRACE_MTD,
++ (TSTR
++ ("nandmtd2_ReadChunkWithTagsFromNAND chunk %d data %p tags %p"
++ TENDSTR), chunkInNAND, data, tags));
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ if (data && !tags)
++ retval = mtd->read(mtd, addr, dev->nDataBytesPerChunk,
++ &dummy, data);
++ else if (tags) {
++ ops.mode = MTD_OOB_AUTO;
++ ops.ooblen = sizeof(pt);
++ ops.len = data ? dev->nDataBytesPerChunk : sizeof(pt);
++ ops.ooboffs = 0;
++ ops.datbuf = data;
++ ops.oobbuf = dev->spareBuffer;
++ retval = mtd->read_oob(mtd, addr, &ops);
++ }
++#else
++ if (data && tags) {
++ if (dev->useNANDECC) {
++ retval =
++ mtd->read_ecc(mtd, addr, dev->nDataBytesPerChunk,
++ &dummy, data, dev->spareBuffer,
++ NULL);
++ } else {
++ retval =
++ mtd->read_ecc(mtd, addr, dev->nDataBytesPerChunk,
++ &dummy, data, dev->spareBuffer,
++ NULL);
++ }
++ } else {
++ if (data)
++ retval =
++ mtd->read(mtd, addr, dev->nDataBytesPerChunk, &dummy,
++ data);
++ if (tags)
++ retval =
++ mtd->read_oob(mtd, addr, mtd->oobsize, &dummy,
++ dev->spareBuffer);
++ }
++#endif
++
++ memcpy(&pt, dev->spareBuffer, sizeof(pt));
++
++ if (tags)
++ yaffs_UnpackTags2(tags, &pt);
++
++ if(tags && retval == -EBADMSG && tags->eccResult == YAFFS_ECC_RESULT_NO_ERROR)
++ tags->eccResult = YAFFS_ECC_RESULT_UNFIXED;
++
++ if (retval == 0)
++ return YAFFS_OK;
++ else
++ return YAFFS_FAIL;
++}
++
++int nandmtd2_MarkNANDBlockBad(struct yaffs_DeviceStruct *dev, int blockNo)
++{
++ struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
++ int retval;
++ T(YAFFS_TRACE_MTD,
++ (TSTR("nandmtd2_MarkNANDBlockBad %d" TENDSTR), blockNo));
++
++ retval =
++ mtd->block_markbad(mtd,
++ blockNo * dev->nChunksPerBlock *
++ dev->nDataBytesPerChunk);
++
++ if (retval == 0)
++ return YAFFS_OK;
++ else
++ return YAFFS_FAIL;
++
++}
++
++int nandmtd2_QueryNANDBlock(struct yaffs_DeviceStruct *dev, int blockNo,
++ yaffs_BlockState * state, int *sequenceNumber)
++{
++ struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
++ int retval;
++
++ T(YAFFS_TRACE_MTD,
++ (TSTR("nandmtd2_QueryNANDBlock %d" TENDSTR), blockNo));
++ retval =
++ mtd->block_isbad(mtd,
++ blockNo * dev->nChunksPerBlock *
++ dev->nDataBytesPerChunk);
++
++ if (retval) {
++ T(YAFFS_TRACE_MTD, (TSTR("block is bad" TENDSTR)));
++
++ *state = YAFFS_BLOCK_STATE_DEAD;
++ *sequenceNumber = 0;
++ } else {
++ yaffs_ExtendedTags t;
++ nandmtd2_ReadChunkWithTagsFromNAND(dev,
++ blockNo *
++ dev->nChunksPerBlock, NULL,
++ &t);
++
++ if (t.chunkUsed) {
++ *sequenceNumber = t.sequenceNumber;
++ *state = YAFFS_BLOCK_STATE_NEEDS_SCANNING;
++ } else {
++ *sequenceNumber = 0;
++ *state = YAFFS_BLOCK_STATE_EMPTY;
++ }
++ }
++ T(YAFFS_TRACE_MTD,
++ (TSTR("block is bad seq %d state %d" TENDSTR), *sequenceNumber,
++ *state));
++
++ if (retval == 0)
++ return YAFFS_OK;
++ else
++ return YAFFS_FAIL;
++}
++
+diff -urN linux.old/fs/yaffs2/yaffs_mtdif2.h linux.dev/fs/yaffs2/yaffs_mtdif2.h
+--- linux.old/fs/yaffs2/yaffs_mtdif2.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_mtdif2.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,29 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ * yaffs_mtdif.c NAND mtd wrapper functions.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * 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.
++ *
++ */
++
++#ifndef __YAFFS_MTDIF2_H__
++#define __YAFFS_MTDIF2_H__
++
++#include "yaffs_guts.h"
++int nandmtd2_WriteChunkWithTagsToNAND(yaffs_Device * dev, int chunkInNAND,
++ const __u8 * data,
++ const yaffs_ExtendedTags * tags);
++int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device * dev, int chunkInNAND,
++ __u8 * data, yaffs_ExtendedTags * tags);
++int nandmtd2_MarkNANDBlockBad(struct yaffs_DeviceStruct *dev, int blockNo);
++int nandmtd2_QueryNANDBlock(struct yaffs_DeviceStruct *dev, int blockNo,
++ yaffs_BlockState * state, int *sequenceNumber);
++
++#endif
+diff -urN linux.old/fs/yaffs2/yaffs_mtdif.c linux.dev/fs/yaffs2/yaffs_mtdif.c
+--- linux.old/fs/yaffs2/yaffs_mtdif.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_mtdif.c 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,243 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ * yaffs_mtdif.c NAND mtd wrapper functions.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * 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.
++ *
++ */
++
++const char *yaffs_mtdif_c_version =
++ "$Id: yaffs_mtdif.c,v 1.17 2006/11/29 20:21:12 charles Exp $";
++
++#include "yportenv.h"
++
++
++#include "yaffs_mtdif.h"
++
++#include "linux/mtd/mtd.h"
++#include "linux/types.h"
++#include "linux/time.h"
++#include "linux/mtd/nand.h"
++
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18))
++static struct nand_oobinfo yaffs_oobinfo = {
++ .useecc = 1,
++ .eccbytes = 6,
++ .eccpos = {8, 9, 10, 13, 14, 15}
++};
++
++static struct nand_oobinfo yaffs_noeccinfo = {
++ .useecc = 0,
++};
++#endif
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++static inline void translate_spare2oob(const yaffs_Spare *spare, __u8 *oob)
++{
++ oob[0] = spare->tagByte0;
++ oob[1] = spare->tagByte1;
++ oob[2] = spare->tagByte2;
++ oob[3] = spare->tagByte3;
++ oob[4] = spare->tagByte4;
++ oob[5] = spare->tagByte5 & 0x3f;
++ oob[5] |= spare->blockStatus == 'Y' ? 0: 0x80;
++ oob[5] |= spare->pageStatus == 0 ? 0: 0x40;
++ oob[6] = spare->tagByte6;
++ oob[7] = spare->tagByte7;
++}
++
++static inline void translate_oob2spare(yaffs_Spare *spare, __u8 *oob)
++{
++ struct yaffs_NANDSpare *nspare = (struct yaffs_NANDSpare *)spare;
++ spare->tagByte0 = oob[0];
++ spare->tagByte1 = oob[1];
++ spare->tagByte2 = oob[2];
++ spare->tagByte3 = oob[3];
++ spare->tagByte4 = oob[4];
++ spare->tagByte5 = oob[5] == 0xff ? 0xff : oob[5] & 0x3f;
++ spare->blockStatus = oob[5] & 0x80 ? 0xff : 'Y';
++ spare->pageStatus = oob[5] & 0x40 ? 0xff : 0;
++ spare->ecc1[0] = spare->ecc1[1] = spare->ecc1[2] = 0xff;
++ spare->tagByte6 = oob[6];
++ spare->tagByte7 = oob[7];
++ spare->ecc2[0] = spare->ecc2[1] = spare->ecc2[2] = 0xff;
++
++ nspare->eccres1 = nspare->eccres2 = 0; /* FIXME */
++}
++#endif
++
++int nandmtd_WriteChunkToNAND(yaffs_Device * dev, int chunkInNAND,
++ const __u8 * data, const yaffs_Spare * spare)
++{
++ struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ struct mtd_oob_ops ops;
++#endif
++ size_t dummy;
++ int retval = 0;
++
++ loff_t addr = ((loff_t) chunkInNAND) * dev->nDataBytesPerChunk;
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ __u8 spareAsBytes[8]; /* OOB */
++
++ if (data && !spare)
++ retval = mtd->write(mtd, addr, dev->nDataBytesPerChunk,
++ &dummy, data);
++ else if (spare) {
++ if (dev->useNANDECC) {
++ translate_spare2oob(spare, spareAsBytes);
++ ops.mode = MTD_OOB_AUTO;
++ ops.ooblen = 8; /* temp hack */
++ } else {
++ ops.mode = MTD_OOB_RAW;
++ ops.ooblen = YAFFS_BYTES_PER_SPARE;
++ }
++ ops.len = data ? dev->nDataBytesPerChunk : ops.ooblen;
++ ops.datbuf = (u8 *)data;
++ ops.ooboffs = 0;
++ ops.oobbuf = spareAsBytes;
++ retval = mtd->write_oob(mtd, addr, &ops);
++ }
++#else
++ __u8 *spareAsBytes = (__u8 *) spare;
++
++ if (data && spare) {
++ if (dev->useNANDECC)
++ retval =
++ mtd->write_ecc(mtd, addr, dev->nDataBytesPerChunk,
++ &dummy, data, spareAsBytes,
++ &yaffs_oobinfo);
++ else
++ retval =
++ mtd->write_ecc(mtd, addr, dev->nDataBytesPerChunk,
++ &dummy, data, spareAsBytes,
++ &yaffs_noeccinfo);
++ } else {
++ if (data)
++ retval =
++ mtd->write(mtd, addr, dev->nDataBytesPerChunk, &dummy,
++ data);
++ if (spare)
++ retval =
++ mtd->write_oob(mtd, addr, YAFFS_BYTES_PER_SPARE,
++ &dummy, spareAsBytes);
++ }
++#endif
++
++ if (retval == 0)
++ return YAFFS_OK;
++ else
++ return YAFFS_FAIL;
++}
++
++int nandmtd_ReadChunkFromNAND(yaffs_Device * dev, int chunkInNAND, __u8 * data,
++ yaffs_Spare * spare)
++{
++ struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ struct mtd_oob_ops ops;
++#endif
++ size_t dummy;
++ int retval = 0;
++
++ loff_t addr = ((loff_t) chunkInNAND) * dev->nDataBytesPerChunk;
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
++ __u8 spareAsBytes[8]; /* OOB */
++
++ if (data && !spare)
++ retval = mtd->read(mtd, addr, dev->nDataBytesPerChunk,
++ &dummy, data);
++ else if (spare) {
++ if (dev->useNANDECC) {
++ ops.mode = MTD_OOB_AUTO;
++ ops.ooblen = 8; /* temp hack */
++ } else {
++ ops.mode = MTD_OOB_RAW;
++ ops.ooblen = YAFFS_BYTES_PER_SPARE;
++ }
++ ops.len = data ? dev->nDataBytesPerChunk : ops.ooblen;
++ ops.datbuf = data;
++ ops.ooboffs = 0;
++ ops.oobbuf = spareAsBytes;
++ retval = mtd->read_oob(mtd, addr, &ops);
++ if (dev->useNANDECC)
++ translate_oob2spare(spare, spareAsBytes);
++ }
++#else
++ __u8 *spareAsBytes = (__u8 *) spare;
++
++ if (data && spare) {
++ if (dev->useNANDECC) {
++ /* Careful, this call adds 2 ints */
++ /* to the end of the spare data. Calling function */
++ /* should allocate enough memory for spare, */
++ /* i.e. [YAFFS_BYTES_PER_SPARE+2*sizeof(int)]. */
++ retval =
++ mtd->read_ecc(mtd, addr, dev->nDataBytesPerChunk,
++ &dummy, data, spareAsBytes,
++ &yaffs_oobinfo);
++ } else {
++ retval =
++ mtd->read_ecc(mtd, addr, dev->nDataBytesPerChunk,
++ &dummy, data, spareAsBytes,
++ &yaffs_noeccinfo);
++ }
++ } else {
++ if (data)
++ retval =
++ mtd->read(mtd, addr, dev->nDataBytesPerChunk, &dummy,
++ data);
++ if (spare)
++ retval =
++ mtd->read_oob(mtd, addr, YAFFS_BYTES_PER_SPARE,
++ &dummy, spareAsBytes);
++ }
++#endif
++
++ if (retval == 0)
++ return YAFFS_OK;
++ else
++ return YAFFS_FAIL;
++}
++
++int nandmtd_EraseBlockInNAND(yaffs_Device * dev, int blockNumber)
++{
++ struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
++ __u32 addr =
++ ((loff_t) blockNumber) * dev->nDataBytesPerChunk
++ * dev->nChunksPerBlock;
++ struct erase_info ei;
++ int retval = 0;
++
++ ei.mtd = mtd;
++ ei.addr = addr;
++ ei.len = dev->nDataBytesPerChunk * dev->nChunksPerBlock;
++ ei.time = 1000;
++ ei.retries = 2;
++ ei.callback = NULL;
++ ei.priv = (u_long) dev;
++
++ /* Todo finish off the ei if required */
++
++ sema_init(&dev->sem, 0);
++
++ retval = mtd->erase(mtd, &ei);
++
++ if (retval == 0)
++ return YAFFS_OK;
++ else
++ return YAFFS_FAIL;
++}
++
++int nandmtd_InitialiseNAND(yaffs_Device * dev)
++{
++ return YAFFS_OK;
++}
++
+diff -urN linux.old/fs/yaffs2/yaffs_mtdif.h linux.dev/fs/yaffs2/yaffs_mtdif.h
+--- linux.old/fs/yaffs2/yaffs_mtdif.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_mtdif.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,31 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ * yaffs_mtdif.h NAND mtd interface wrappers
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU Lesser General Public License version 2.1 as
++ * published by the Free Software Foundation.
++ *
++ *
++ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
++ *
++ * $Id: yaffs_mtdif.h,v 1.3 2005/08/11 01:07:43 marty Exp $
++ */
++
++#ifndef __YAFFS_MTDIF_H__
++#define __YAFFS_MTDIF_H__
++
++#include "yaffs_guts.h"
++
++int nandmtd_WriteChunkToNAND(yaffs_Device * dev, int chunkInNAND,
++ const __u8 * data, const yaffs_Spare * spare);
++int nandmtd_ReadChunkFromNAND(yaffs_Device * dev, int chunkInNAND, __u8 * data,
++ yaffs_Spare * spare);
++int nandmtd_EraseBlockInNAND(yaffs_Device * dev, int blockNumber);
++int nandmtd_InitialiseNAND(yaffs_Device * dev);
++#endif
+diff -urN linux.old/fs/yaffs2/yaffs_nand.c linux.dev/fs/yaffs2/yaffs_nand.c
+--- linux.old/fs/yaffs2/yaffs_nand.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_nand.c 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,135 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * 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.
++ *
++ */
++
++const char *yaffs_nand_c_version =
++ "$Id: yaffs_nand.c,v 1.5 2006/11/08 09:52:12 charles Exp $";
++
++#include "yaffs_nand.h"
++#include "yaffs_tagscompat.h"
++#include "yaffs_tagsvalidity.h"
++
++
++int yaffs_ReadChunkWithTagsFromNAND(yaffs_Device * dev, int chunkInNAND,
++ __u8 * buffer,
++ yaffs_ExtendedTags * tags)
++{
++ int result;
++ yaffs_ExtendedTags localTags;
++
++ int realignedChunkInNAND = chunkInNAND - dev->chunkOffset;
++
++ /* If there are no tags provided, use local tags to get prioritised gc working */
++ if(!tags)
++ tags = &localTags;
++
++ if (dev->readChunkWithTagsFromNAND)
++ result = dev->readChunkWithTagsFromNAND(dev, realignedChunkInNAND, buffer,
++ tags);
++ else
++ result = yaffs_TagsCompatabilityReadChunkWithTagsFromNAND(dev,
++ realignedChunkInNAND,
++ buffer,
++ tags);
++ if(tags &&
++ tags->eccResult > YAFFS_ECC_RESULT_NO_ERROR){
++
++ yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, chunkInNAND/dev->nChunksPerBlock);
++ yaffs_HandleChunkError(dev,bi);
++ }
++
++ return result;
++}
++
++int yaffs_WriteChunkWithTagsToNAND(yaffs_Device * dev,
++ int chunkInNAND,
++ const __u8 * buffer,
++ yaffs_ExtendedTags * tags)
++{
++ chunkInNAND -= dev->chunkOffset;
++
++
++ if (tags) {
++ tags->sequenceNumber = dev->sequenceNumber;
++ tags->chunkUsed = 1;
++ if (!yaffs_ValidateTags(tags)) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR("Writing uninitialised tags" TENDSTR)));
++ YBUG();
++ }
++ T(YAFFS_TRACE_WRITE,
++ (TSTR("Writing chunk %d tags %d %d" TENDSTR), chunkInNAND,
++ tags->objectId, tags->chunkId));
++ } else {
++ T(YAFFS_TRACE_ERROR, (TSTR("Writing with no tags" TENDSTR)));
++ YBUG();
++ }
++
++ if (dev->writeChunkWithTagsToNAND)
++ return dev->writeChunkWithTagsToNAND(dev, chunkInNAND, buffer,
++ tags);
++ else
++ return yaffs_TagsCompatabilityWriteChunkWithTagsToNAND(dev,
++ chunkInNAND,
++ buffer,
++ tags);
++}
++
++int yaffs_MarkBlockBad(yaffs_Device * dev, int blockNo)
++{
++ blockNo -= dev->blockOffset;
++
++;
++ if (dev->markNANDBlockBad)
++ return dev->markNANDBlockBad(dev, blockNo);
++ else
++ return yaffs_TagsCompatabilityMarkNANDBlockBad(dev, blockNo);
++}
++
++int yaffs_QueryInitialBlockState(yaffs_Device * dev,
++ int blockNo,
++ yaffs_BlockState * state,
++ unsigned *sequenceNumber)
++{
++ blockNo -= dev->blockOffset;
++
++ if (dev->queryNANDBlock)
++ return dev->queryNANDBlock(dev, blockNo, state, sequenceNumber);
++ else
++ return yaffs_TagsCompatabilityQueryNANDBlock(dev, blockNo,
++ state,
++ sequenceNumber);
++}
++
++
++int yaffs_EraseBlockInNAND(struct yaffs_DeviceStruct *dev,
++ int blockInNAND)
++{
++ int result;
++
++ blockInNAND -= dev->blockOffset;
++
++
++ dev->nBlockErasures++;
++ result = dev->eraseBlockInNAND(dev, blockInNAND);
++
++ return result;
++}
++
++int yaffs_InitialiseNAND(struct yaffs_DeviceStruct *dev)
++{
++ return dev->initialiseNAND(dev);
++}
++
++
++
+diff -urN linux.old/fs/yaffs2/yaffs_nandemul2k.h linux.dev/fs/yaffs2/yaffs_nandemul2k.h
+--- linux.old/fs/yaffs2/yaffs_nandemul2k.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_nandemul2k.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,42 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU Lesser General Public License version 2.1 as
++ * published by the Free Software Foundation.
++ *
++ *
++ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
++ *
++ * yaffs_nandemul2k.h: Interface to emulated NAND functions (2k page size)
++ *
++ * $Id: yaffs_nandemul2k.h,v 1.2 2005/08/11 02:37:49 marty Exp $
++ */
++
++#ifndef __YAFFS_NANDEMUL2K_H__
++#define __YAFFS_NANDEMUL2K_H__
++
++#include "yaffs_guts.h"
++
++int nandemul2k_WriteChunkWithTagsToNAND(struct yaffs_DeviceStruct *dev,
++ int chunkInNAND, const __u8 * data,
++ yaffs_ExtendedTags * tags);
++int nandemul2k_ReadChunkWithTagsFromNAND(struct yaffs_DeviceStruct *dev,
++ int chunkInNAND, __u8 * data,
++ yaffs_ExtendedTags * tags);
++int nandemul2k_MarkNANDBlockBad(struct yaffs_DeviceStruct *dev, int blockNo);
++int nandemul2k_QueryNANDBlock(struct yaffs_DeviceStruct *dev, int blockNo,
++ yaffs_BlockState * state, int *sequenceNumber);
++int nandemul2k_EraseBlockInNAND(struct yaffs_DeviceStruct *dev,
++ int blockInNAND);
++int nandemul2k_InitialiseNAND(struct yaffs_DeviceStruct *dev);
++int nandemul2k_GetBytesPerChunk(void);
++int nandemul2k_GetChunksPerBlock(void);
++int nandemul2k_GetNumberOfBlocks(void);
++
++#endif
+diff -urN linux.old/fs/yaffs2/yaffs_nand.h linux.dev/fs/yaffs2/yaffs_nand.h
+--- linux.old/fs/yaffs2/yaffs_nand.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_nand.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,43 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * 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.
++ *
++ */
++
++#ifndef __YAFFS_NAND_H__
++#define __YAFFS_NAND_H__
++#include "yaffs_guts.h"
++
++
++
++int yaffs_ReadChunkWithTagsFromNAND(yaffs_Device * dev, int chunkInNAND,
++ __u8 * buffer,
++ yaffs_ExtendedTags * tags);
++
++int yaffs_WriteChunkWithTagsToNAND(yaffs_Device * dev,
++ int chunkInNAND,
++ const __u8 * buffer,
++ yaffs_ExtendedTags * tags);
++
++int yaffs_MarkBlockBad(yaffs_Device * dev, int blockNo);
++
++int yaffs_QueryInitialBlockState(yaffs_Device * dev,
++ int blockNo,
++ yaffs_BlockState * state,
++ unsigned *sequenceNumber);
++
++int yaffs_EraseBlockInNAND(struct yaffs_DeviceStruct *dev,
++ int blockInNAND);
++
++int yaffs_InitialiseNAND(struct yaffs_DeviceStruct *dev);
++
++#endif
++
+diff -urN linux.old/fs/yaffs2/yaffs_packedtags1.c linux.dev/fs/yaffs2/yaffs_packedtags1.c
+--- linux.old/fs/yaffs2/yaffs_packedtags1.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_packedtags1.c 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,39 @@
++#include "yaffs_packedtags1.h"
++#include "yportenv.h"
++
++void yaffs_PackTags1(yaffs_PackedTags1 * pt, const yaffs_ExtendedTags * t)
++{
++ pt->chunkId = t->chunkId;
++ pt->serialNumber = t->serialNumber;
++ pt->byteCount = t->byteCount;
++ pt->objectId = t->objectId;
++ pt->ecc = 0;
++ pt->deleted = (t->chunkDeleted) ? 0 : 1;
++ pt->unusedStuff = 0;
++ pt->shouldBeFF = 0xFFFFFFFF;
++
++}
++
++void yaffs_UnpackTags1(yaffs_ExtendedTags * t, const yaffs_PackedTags1 * pt)
++{
++ static const __u8 allFF[] =
++ { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
++0xff };
++
++ if (memcmp(allFF, pt, sizeof(yaffs_PackedTags1))) {
++ t->blockBad = 0;
++ if (pt->shouldBeFF != 0xFFFFFFFF) {
++ t->blockBad = 1;
++ }
++ t->chunkUsed = 1;
++ t->objectId = pt->objectId;
++ t->chunkId = pt->chunkId;
++ t->byteCount = pt->byteCount;
++ t->eccResult = YAFFS_ECC_RESULT_NO_ERROR;
++ t->chunkDeleted = (pt->deleted) ? 0 : 1;
++ t->serialNumber = pt->serialNumber;
++ } else {
++ memset(t, 0, sizeof(yaffs_ExtendedTags));
++
++ }
++}
+diff -urN linux.old/fs/yaffs2/yaffs_packedtags1.h linux.dev/fs/yaffs2/yaffs_packedtags1.h
+--- linux.old/fs/yaffs2/yaffs_packedtags1.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_packedtags1.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,22 @@
++// This is used to pack YAFFS1 tags, not YAFFS2 tags.
++
++#ifndef __YAFFS_PACKEDTAGS1_H__
++#define __YAFFS_PACKEDTAGS1_H__
++
++#include "yaffs_guts.h"
++
++typedef struct {
++ unsigned chunkId:20;
++ unsigned serialNumber:2;
++ unsigned byteCount:10;
++ unsigned objectId:18;
++ unsigned ecc:12;
++ unsigned deleted:1;
++ unsigned unusedStuff:1;
++ unsigned shouldBeFF;
++
++} yaffs_PackedTags1;
++
++void yaffs_PackTags1(yaffs_PackedTags1 * pt, const yaffs_ExtendedTags * t);
++void yaffs_UnpackTags1(yaffs_ExtendedTags * t, const yaffs_PackedTags1 * pt);
++#endif
+diff -urN linux.old/fs/yaffs2/yaffs_packedtags2.c linux.dev/fs/yaffs2/yaffs_packedtags2.c
+--- linux.old/fs/yaffs2/yaffs_packedtags2.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_packedtags2.c 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,184 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ *
++ * yaffs_packedtags2.c: Tags packing for YAFFS2
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public License
++ * version 2.1 as published by the Free Software Foundation.
++ */
++
++#include "yaffs_packedtags2.h"
++#include "yportenv.h"
++#include "yaffs_tagsvalidity.h"
++
++/* This code packs a set of extended tags into a binary structure for
++ * NAND storage
++ */
++
++/* Some of the information is "extra" struff which can be packed in to
++ * speed scanning
++ * This is defined by having the EXTRA_HEADER_INFO_FLAG set.
++ */
++
++/* Extra flags applied to chunkId */
++
++#define EXTRA_HEADER_INFO_FLAG 0x80000000
++#define EXTRA_SHRINK_FLAG 0x40000000
++#define EXTRA_SHADOWS_FLAG 0x20000000
++#define EXTRA_SPARE_FLAGS 0x10000000
++
++#define ALL_EXTRA_FLAGS 0xF0000000
++
++/* Also, the top 4 bits of the object Id are set to the object type. */
++#define EXTRA_OBJECT_TYPE_SHIFT (28)
++#define EXTRA_OBJECT_TYPE_MASK ((0x0F) << EXTRA_OBJECT_TYPE_SHIFT)
++
++static void yaffs_DumpPackedTags2(const yaffs_PackedTags2 * pt)
++{
++ T(YAFFS_TRACE_MTD,
++ (TSTR("packed tags obj %d chunk %d byte %d seq %d" TENDSTR),
++ pt->t.objectId, pt->t.chunkId, pt->t.byteCount,
++ pt->t.sequenceNumber));
++}
++
++static void yaffs_DumpTags2(const yaffs_ExtendedTags * t)
++{
++ T(YAFFS_TRACE_MTD,
++ (TSTR
++ ("ext.tags eccres %d blkbad %d chused %d obj %d chunk%d byte "
++ "%d del %d ser %d seq %d"
++ TENDSTR), t->eccResult, t->blockBad, t->chunkUsed, t->objectId,
++ t->chunkId, t->byteCount, t->chunkDeleted, t->serialNumber,
++ t->sequenceNumber));
++
++}
++
++void yaffs_PackTags2(yaffs_PackedTags2 * pt, const yaffs_ExtendedTags * t)
++{
++ pt->t.chunkId = t->chunkId;
++ pt->t.sequenceNumber = t->sequenceNumber;
++ pt->t.byteCount = t->byteCount;
++ pt->t.objectId = t->objectId;
++
++ if (t->chunkId == 0 && t->extraHeaderInfoAvailable) {
++ /* Store the extra header info instead */
++ /* We save the parent object in the chunkId */
++ pt->t.chunkId = EXTRA_HEADER_INFO_FLAG
++ | t->extraParentObjectId;
++ if (t->extraIsShrinkHeader) {
++ pt->t.chunkId |= EXTRA_SHRINK_FLAG;
++ }
++ if (t->extraShadows) {
++ pt->t.chunkId |= EXTRA_SHADOWS_FLAG;
++ }
++
++ pt->t.objectId &= ~EXTRA_OBJECT_TYPE_MASK;
++ pt->t.objectId |=
++ (t->extraObjectType << EXTRA_OBJECT_TYPE_SHIFT);
++
++ if (t->extraObjectType == YAFFS_OBJECT_TYPE_HARDLINK) {
++ pt->t.byteCount = t->extraEquivalentObjectId;
++ } else if (t->extraObjectType == YAFFS_OBJECT_TYPE_FILE) {
++ pt->t.byteCount = t->extraFileLength;
++ } else {
++ pt->t.byteCount = 0;
++ }
++ }
++
++ yaffs_DumpPackedTags2(pt);
++ yaffs_DumpTags2(t);
++
++#ifndef YAFFS_IGNORE_TAGS_ECC
++ {
++ yaffs_ECCCalculateOther((unsigned char *)&pt->t,
++ sizeof(yaffs_PackedTags2TagsPart),
++ &pt->ecc);
++ }
++#endif
++}
++
++void yaffs_UnpackTags2(yaffs_ExtendedTags * t, yaffs_PackedTags2 * pt)
++{
++
++ memset(t, 0, sizeof(yaffs_ExtendedTags));
++
++ yaffs_InitialiseTags(t);
++
++ if (pt->t.sequenceNumber != 0xFFFFFFFF) {
++ /* Page is in use */
++#ifdef YAFFS_IGNORE_TAGS_ECC
++ {
++ t->eccResult = YAFFS_ECC_RESULT_NO_ERROR;
++ }
++#else
++ {
++ yaffs_ECCOther ecc;
++ int result;
++ yaffs_ECCCalculateOther((unsigned char *)&pt->t,
++ sizeof
++ (yaffs_PackedTags2TagsPart),
++ &ecc);
++ result =
++ yaffs_ECCCorrectOther((unsigned char *)&pt->t,
++ sizeof
++ (yaffs_PackedTags2TagsPart),
++ &pt->ecc, &ecc);
++ switch(result){
++ case 0:
++ t->eccResult = YAFFS_ECC_RESULT_NO_ERROR;
++ break;
++ case 1:
++ t->eccResult = YAFFS_ECC_RESULT_FIXED;
++ break;
++ case -1:
++ t->eccResult = YAFFS_ECC_RESULT_UNFIXED;
++ break;
++ default:
++ t->eccResult = YAFFS_ECC_RESULT_UNKNOWN;
++ }
++ }
++#endif
++ t->blockBad = 0;
++ t->chunkUsed = 1;
++ t->objectId = pt->t.objectId;
++ t->chunkId = pt->t.chunkId;
++ t->byteCount = pt->t.byteCount;
++ t->chunkDeleted = 0;
++ t->serialNumber = 0;
++ t->sequenceNumber = pt->t.sequenceNumber;
++
++ /* Do extra header info stuff */
++
++ if (pt->t.chunkId & EXTRA_HEADER_INFO_FLAG) {
++ t->chunkId = 0;
++ t->byteCount = 0;
++
++ t->extraHeaderInfoAvailable = 1;
++ t->extraParentObjectId =
++ pt->t.chunkId & (~(ALL_EXTRA_FLAGS));
++ t->extraIsShrinkHeader =
++ (pt->t.chunkId & EXTRA_SHRINK_FLAG) ? 1 : 0;
++ t->extraShadows =
++ (pt->t.chunkId & EXTRA_SHADOWS_FLAG) ? 1 : 0;
++ t->extraObjectType =
++ pt->t.objectId >> EXTRA_OBJECT_TYPE_SHIFT;
++ t->objectId &= ~EXTRA_OBJECT_TYPE_MASK;
++
++ if (t->extraObjectType == YAFFS_OBJECT_TYPE_HARDLINK) {
++ t->extraEquivalentObjectId = pt->t.byteCount;
++ } else {
++ t->extraFileLength = pt->t.byteCount;
++ }
++ }
++ }
++
++ yaffs_DumpPackedTags2(pt);
++ yaffs_DumpTags2(t);
++
++}
+diff -urN linux.old/fs/yaffs2/yaffs_packedtags2.h linux.dev/fs/yaffs2/yaffs_packedtags2.h
+--- linux.old/fs/yaffs2/yaffs_packedtags2.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_packedtags2.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,23 @@
++/* This is used to pack YAFFS2 tags, not YAFFS1tags. */
++
++#ifndef __YAFFS_PACKEDTAGS2_H__
++#define __YAFFS_PACKEDTAGS2_H__
++
++#include "yaffs_guts.h"
++#include "yaffs_ecc.h"
++
++typedef struct {
++ unsigned sequenceNumber;
++ unsigned objectId;
++ unsigned chunkId;
++ unsigned byteCount;
++} yaffs_PackedTags2TagsPart;
++
++typedef struct {
++ yaffs_PackedTags2TagsPart t;
++ yaffs_ECCOther ecc;
++} yaffs_PackedTags2;
++
++void yaffs_PackTags2(yaffs_PackedTags2 * pt, const yaffs_ExtendedTags * t);
++void yaffs_UnpackTags2(yaffs_ExtendedTags * t, yaffs_PackedTags2 * pt);
++#endif
+diff -urN linux.old/fs/yaffs2/yaffs_qsort.c linux.dev/fs/yaffs2/yaffs_qsort.c
+--- linux.old/fs/yaffs2/yaffs_qsort.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_qsort.c 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,156 @@
++/*
++ * Copyright (c) 1992, 1993
++ * The Regents of the University of California. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ * 3. Neither the name of the University nor the names of its contributors
++ * may be used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++#include "yportenv.h"
++//#include <linux/string.h>
++
++/*
++ * Qsort routine from Bentley & McIlroy's "Engineering a Sort Function".
++ */
++#define swapcode(TYPE, parmi, parmj, n) { \
++ long i = (n) / sizeof (TYPE); \
++ register TYPE *pi = (TYPE *) (parmi); \
++ register TYPE *pj = (TYPE *) (parmj); \
++ do { \
++ register TYPE t = *pi; \
++ *pi++ = *pj; \
++ *pj++ = t; \
++ } while (--i > 0); \
++}
++
++#define SWAPINIT(a, es) swaptype = ((char *)a - (char *)0) % sizeof(long) || \
++ es % sizeof(long) ? 2 : es == sizeof(long)? 0 : 1;
++
++static __inline void
++swapfunc(char *a, char *b, int n, int swaptype)
++{
++ if (swaptype <= 1)
++ swapcode(long, a, b, n)
++ else
++ swapcode(char, a, b, n)
++}
++
++#define swap(a, b) \
++ if (swaptype == 0) { \
++ long t = *(long *)(a); \
++ *(long *)(a) = *(long *)(b); \
++ *(long *)(b) = t; \
++ } else \
++ swapfunc(a, b, es, swaptype)
++
++#define vecswap(a, b, n) if ((n) > 0) swapfunc(a, b, n, swaptype)
++
++static __inline char *
++med3(char *a, char *b, char *c, int (*cmp)(const void *, const void *))
++{
++ return cmp(a, b) < 0 ?
++ (cmp(b, c) < 0 ? b : (cmp(a, c) < 0 ? c : a ))
++ :(cmp(b, c) > 0 ? b : (cmp(a, c) < 0 ? a : c ));
++}
++
++#define min(a,b) (((a) < (b)) ? (a) : (b))
++void
++qsort(void *aa, size_t n, size_t es, int (*cmp)(const void *, const void *))
++{
++ char *pa, *pb, *pc, *pd, *pl, *pm, *pn;
++ int d, r, swaptype, swap_cnt;
++ register char *a = aa;
++
++loop: SWAPINIT(a, es);
++ swap_cnt = 0;
++ if (n < 7) {
++ for (pm = (char *)a + es; pm < (char *) a + n * es; pm += es)
++ for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0;
++ pl -= es)
++ swap(pl, pl - es);
++ return;
++ }
++ pm = (char *)a + (n / 2) * es;
++ if (n > 7) {
++ pl = (char *)a;
++ pn = (char *)a + (n - 1) * es;
++ if (n > 40) {
++ d = (n / 8) * es;
++ pl = med3(pl, pl + d, pl + 2 * d, cmp);
++ pm = med3(pm - d, pm, pm + d, cmp);
++ pn = med3(pn - 2 * d, pn - d, pn, cmp);
++ }
++ pm = med3(pl, pm, pn, cmp);
++ }
++ swap(a, pm);
++ pa = pb = (char *)a + es;
++
++ pc = pd = (char *)a + (n - 1) * es;
++ for (;;) {
++ while (pb <= pc && (r = cmp(pb, a)) <= 0) {
++ if (r == 0) {
++ swap_cnt = 1;
++ swap(pa, pb);
++ pa += es;
++ }
++ pb += es;
++ }
++ while (pb <= pc && (r = cmp(pc, a)) >= 0) {
++ if (r == 0) {
++ swap_cnt = 1;
++ swap(pc, pd);
++ pd -= es;
++ }
++ pc -= es;
++ }
++ if (pb > pc)
++ break;
++ swap(pb, pc);
++ swap_cnt = 1;
++ pb += es;
++ pc -= es;
++ }
++ if (swap_cnt == 0) { /* Switch to insertion sort */
++ for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es)
++ for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0;
++ pl -= es)
++ swap(pl, pl - es);
++ return;
++ }
++
++ pn = (char *)a + n * es;
++ r = min(pa - (char *)a, pb - pa);
++ vecswap(a, pb - r, r);
++ r = min((long)(pd - pc), (long)(pn - pd - es));
++ vecswap(pb, pn - r, r);
++ if ((r = pb - pa) > es)
++ qsort(a, r / es, es, cmp);
++ if ((r = pd - pc) > es) {
++ /* Iterate rather than recurse to save stack space */
++ a = pn - r;
++ n = r / es;
++ goto loop;
++ }
++/* qsort(pn - r, r / es, es, cmp);*/
++}
+diff -urN linux.old/fs/yaffs2/yaffs_qsort.h linux.dev/fs/yaffs2/yaffs_qsort.h
+--- linux.old/fs/yaffs2/yaffs_qsort.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_qsort.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,23 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ * yaffs_qsort.h: Interface to BSD-licensed qsort routine.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU Lesser General Public License version 2.1 as
++ * published by the Free Software Foundation.
++ *
++ * $Id: yaffs_qsort.h,v 1.2 2006/11/07 23:20:09 charles Exp $
++ */
++
++#ifndef __YAFFS_QSORT_H__
++#define __YAFFS_QSORT_H__
++
++extern void qsort (void *const base, size_t total_elems, size_t size,
++ int (*cmp)(const void *, const void *));
++
++#endif
+diff -urN linux.old/fs/yaffs2/yaffs_tagscompat.c linux.dev/fs/yaffs2/yaffs_tagscompat.c
+--- linux.old/fs/yaffs2/yaffs_tagscompat.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_tagscompat.c 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,532 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ * yaffs_tagscompat.h: Tags compatability layer to use YAFFS1 formatted NAND.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * 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.
++ *
++ * $Id: yaffs_tagscompat.c,v 1.8 2005/11/29 20:54:32 marty Exp $
++ */
++
++#include "yaffs_guts.h"
++#include "yaffs_tagscompat.h"
++#include "yaffs_ecc.h"
++
++static void yaffs_HandleReadDataError(yaffs_Device * dev, int chunkInNAND);
++#ifdef NOTYET
++static void yaffs_CheckWrittenBlock(yaffs_Device * dev, int chunkInNAND);
++static void yaffs_HandleWriteChunkOk(yaffs_Device * dev, int chunkInNAND,
++ const __u8 * data,
++ const yaffs_Spare * spare);
++static void yaffs_HandleUpdateChunk(yaffs_Device * dev, int chunkInNAND,
++ const yaffs_Spare * spare);
++static void yaffs_HandleWriteChunkError(yaffs_Device * dev, int chunkInNAND);
++#endif
++
++static const char yaffs_countBitsTable[256] = {
++ 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4,
++ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
++ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
++ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
++ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
++ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
++ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
++ 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
++ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
++ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
++ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
++ 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
++ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
++ 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
++ 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
++ 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8
++};
++
++static int yaffs_CountBits(__u8 x)
++{
++ int retVal;
++ retVal = yaffs_countBitsTable[x];
++ return retVal;
++}
++
++/********** Tags ECC calculations *********/
++
++void yaffs_CalcECC(const __u8 * data, yaffs_Spare * spare)
++{
++ yaffs_ECCCalculate(data, spare->ecc1);
++ yaffs_ECCCalculate(&data[256], spare->ecc2);
++}
++
++void yaffs_CalcTagsECC(yaffs_Tags * tags)
++{
++ /* Calculate an ecc */
++
++ unsigned char *b = ((yaffs_TagsUnion *) tags)->asBytes;
++ unsigned i, j;
++ unsigned ecc = 0;
++ unsigned bit = 0;
++
++ tags->ecc = 0;
++
++ for (i = 0; i < 8; i++) {
++ for (j = 1; j & 0xff; j <<= 1) {
++ bit++;
++ if (b[i] & j) {
++ ecc ^= bit;
++ }
++ }
++ }
++
++ tags->ecc = ecc;
++
++}
++
++int yaffs_CheckECCOnTags(yaffs_Tags * tags)
++{
++ unsigned ecc = tags->ecc;
++
++ yaffs_CalcTagsECC(tags);
++
++ ecc ^= tags->ecc;
++
++ if (ecc && ecc <= 64) {
++ /* TODO: Handle the failure better. Retire? */
++ unsigned char *b = ((yaffs_TagsUnion *) tags)->asBytes;
++
++ ecc--;
++
++ b[ecc / 8] ^= (1 << (ecc & 7));
++
++ /* Now recvalc the ecc */
++ yaffs_CalcTagsECC(tags);
++
++ return 1; /* recovered error */
++ } else if (ecc) {
++ /* Wierd ecc failure value */
++ /* TODO Need to do somethiong here */
++ return -1; /* unrecovered error */
++ }
++
++ return 0;
++}
++
++/********** Tags **********/
++
++static void yaffs_LoadTagsIntoSpare(yaffs_Spare * sparePtr,
++ yaffs_Tags * tagsPtr)
++{
++ yaffs_TagsUnion *tu = (yaffs_TagsUnion *) tagsPtr;
++
++ yaffs_CalcTagsECC(tagsPtr);
++
++ sparePtr->tagByte0 = tu->asBytes[0];
++ sparePtr->tagByte1 = tu->asBytes[1];
++ sparePtr->tagByte2 = tu->asBytes[2];
++ sparePtr->tagByte3 = tu->asBytes[3];
++ sparePtr->tagByte4 = tu->asBytes[4];
++ sparePtr->tagByte5 = tu->asBytes[5];
++ sparePtr->tagByte6 = tu->asBytes[6];
++ sparePtr->tagByte7 = tu->asBytes[7];
++}
++
++static void yaffs_GetTagsFromSpare(yaffs_Device * dev, yaffs_Spare * sparePtr,
++ yaffs_Tags * tagsPtr)
++{
++ yaffs_TagsUnion *tu = (yaffs_TagsUnion *) tagsPtr;
++ int result;
++
++ tu->asBytes[0] = sparePtr->tagByte0;
++ tu->asBytes[1] = sparePtr->tagByte1;
++ tu->asBytes[2] = sparePtr->tagByte2;
++ tu->asBytes[3] = sparePtr->tagByte3;
++ tu->asBytes[4] = sparePtr->tagByte4;
++ tu->asBytes[5] = sparePtr->tagByte5;
++ tu->asBytes[6] = sparePtr->tagByte6;
++ tu->asBytes[7] = sparePtr->tagByte7;
++
++ result = yaffs_CheckECCOnTags(tagsPtr);
++ if (result > 0) {
++ dev->tagsEccFixed++;
++ } else if (result < 0) {
++ dev->tagsEccUnfixed++;
++ }
++}
++
++static void yaffs_SpareInitialise(yaffs_Spare * spare)
++{
++ memset(spare, 0xFF, sizeof(yaffs_Spare));
++}
++
++static int yaffs_WriteChunkToNAND(struct yaffs_DeviceStruct *dev,
++ int chunkInNAND, const __u8 * data,
++ yaffs_Spare * spare)
++{
++ if (chunkInNAND < dev->startBlock * dev->nChunksPerBlock) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR("**>> yaffs chunk %d is not valid" TENDSTR),
++ chunkInNAND));
++ return YAFFS_FAIL;
++ }
++
++ dev->nPageWrites++;
++ return dev->writeChunkToNAND(dev, chunkInNAND, data, spare);
++}
++
++static int yaffs_ReadChunkFromNAND(struct yaffs_DeviceStruct *dev,
++ int chunkInNAND,
++ __u8 * data,
++ yaffs_Spare * spare,
++ yaffs_ECCResult * eccResult,
++ int doErrorCorrection)
++{
++ int retVal;
++ yaffs_Spare localSpare;
++
++ dev->nPageReads++;
++
++ if (!spare && data) {
++ /* If we don't have a real spare, then we use a local one. */
++ /* Need this for the calculation of the ecc */
++ spare = &localSpare;
++ }
++
++ if (!dev->useNANDECC) {
++ retVal = dev->readChunkFromNAND(dev, chunkInNAND, data, spare);
++ if (data && doErrorCorrection) {
++ /* Do ECC correction */
++ /* Todo handle any errors */
++ int eccResult1, eccResult2;
++ __u8 calcEcc[3];
++
++ yaffs_ECCCalculate(data, calcEcc);
++ eccResult1 =
++ yaffs_ECCCorrect(data, spare->ecc1, calcEcc);
++ yaffs_ECCCalculate(&data[256], calcEcc);
++ eccResult2 =
++ yaffs_ECCCorrect(&data[256], spare->ecc2, calcEcc);
++
++ if (eccResult1 > 0) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("**>>yaffs ecc error fix performed on chunk %d:0"
++ TENDSTR), chunkInNAND));
++ dev->eccFixed++;
++ } else if (eccResult1 < 0) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("**>>yaffs ecc error unfixed on chunk %d:0"
++ TENDSTR), chunkInNAND));
++ dev->eccUnfixed++;
++ }
++
++ if (eccResult2 > 0) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("**>>yaffs ecc error fix performed on chunk %d:1"
++ TENDSTR), chunkInNAND));
++ dev->eccFixed++;
++ } else if (eccResult2 < 0) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("**>>yaffs ecc error unfixed on chunk %d:1"
++ TENDSTR), chunkInNAND));
++ dev->eccUnfixed++;
++ }
++
++ if (eccResult1 || eccResult2) {
++ /* We had a data problem on this page */
++ yaffs_HandleReadDataError(dev, chunkInNAND);
++ }
++
++ if (eccResult1 < 0 || eccResult2 < 0)
++ *eccResult = YAFFS_ECC_RESULT_UNFIXED;
++ else if (eccResult1 > 0 || eccResult2 > 0)
++ *eccResult = YAFFS_ECC_RESULT_FIXED;
++ else
++ *eccResult = YAFFS_ECC_RESULT_NO_ERROR;
++ }
++ } else {
++ /* Must allocate enough memory for spare+2*sizeof(int) */
++ /* for ecc results from device. */
++ struct yaffs_NANDSpare nspare;
++ retVal =
++ dev->readChunkFromNAND(dev, chunkInNAND, data,
++ (yaffs_Spare *) & nspare);
++ memcpy(spare, &nspare, sizeof(yaffs_Spare));
++ if (data && doErrorCorrection) {
++ if (nspare.eccres1 > 0) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("**>>mtd ecc error fix performed on chunk %d:0"
++ TENDSTR), chunkInNAND));
++ } else if (nspare.eccres1 < 0) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("**>>mtd ecc error unfixed on chunk %d:0"
++ TENDSTR), chunkInNAND));
++ }
++
++ if (nspare.eccres2 > 0) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("**>>mtd ecc error fix performed on chunk %d:1"
++ TENDSTR), chunkInNAND));
++ } else if (nspare.eccres2 < 0) {
++ T(YAFFS_TRACE_ERROR,
++ (TSTR
++ ("**>>mtd ecc error unfixed on chunk %d:1"
++ TENDSTR), chunkInNAND));
++ }
++
++ if (nspare.eccres1 || nspare.eccres2) {
++ /* We had a data problem on this page */
++ yaffs_HandleReadDataError(dev, chunkInNAND);
++ }
++
++ if (nspare.eccres1 < 0 || nspare.eccres2 < 0)
++ *eccResult = YAFFS_ECC_RESULT_UNFIXED;
++ else if (nspare.eccres1 > 0 || nspare.eccres2 > 0)
++ *eccResult = YAFFS_ECC_RESULT_FIXED;
++ else
++ *eccResult = YAFFS_ECC_RESULT_NO_ERROR;
++
++ }
++ }
++ return retVal;
++}
++
++#ifdef NOTYET
++static int yaffs_CheckChunkErased(struct yaffs_DeviceStruct *dev,
++ int chunkInNAND)
++{
++
++ static int init = 0;
++ static __u8 cmpbuf[YAFFS_BYTES_PER_CHUNK];
++ static __u8 data[YAFFS_BYTES_PER_CHUNK];
++ /* Might as well always allocate the larger size for */
++ /* dev->useNANDECC == true; */
++ static __u8 spare[sizeof(struct yaffs_NANDSpare)];
++
++ dev->readChunkFromNAND(dev, chunkInNAND, data, (yaffs_Spare *) spare);
++
++ if (!init) {
++ memset(cmpbuf, 0xff, YAFFS_BYTES_PER_CHUNK);
++ init = 1;
++ }
++
++ if (memcmp(cmpbuf, data, YAFFS_BYTES_PER_CHUNK))
++ return YAFFS_FAIL;
++ if (memcmp(cmpbuf, spare, 16))
++ return YAFFS_FAIL;
++
++ return YAFFS_OK;
++
++}
++#endif
++
++/*
++ * Functions for robustisizing
++ */
++
++static void yaffs_HandleReadDataError(yaffs_Device * dev, int chunkInNAND)
++{
++ int blockInNAND = chunkInNAND / dev->nChunksPerBlock;
++
++ /* Mark the block for retirement */
++ yaffs_GetBlockInfo(dev, blockInNAND)->needsRetiring = 1;
++ T(YAFFS_TRACE_ERROR | YAFFS_TRACE_BAD_BLOCKS,
++ (TSTR("**>>Block %d marked for retirement" TENDSTR), blockInNAND));
++
++ /* TODO:
++ * Just do a garbage collection on the affected block
++ * then retire the block
++ * NB recursion
++ */
++}
++
++#ifdef NOTYET
++static void yaffs_CheckWrittenBlock(yaffs_Device * dev, int chunkInNAND)
++{
++}
++
++static void yaffs_HandleWriteChunkOk(yaffs_Device * dev, int chunkInNAND,
++ const __u8 * data,
++ const yaffs_Spare * spare)
++{
++}
++
++static void yaffs_HandleUpdateChunk(yaffs_Device * dev, int chunkInNAND,
++ const yaffs_Spare * spare)
++{
++}
++
++static void yaffs_HandleWriteChunkError(yaffs_Device * dev, int chunkInNAND)
++{
++ int blockInNAND = chunkInNAND / dev->nChunksPerBlock;
++
++ /* Mark the block for retirement */
++ yaffs_GetBlockInfo(dev, blockInNAND)->needsRetiring = 1;
++ /* Delete the chunk */
++ yaffs_DeleteChunk(dev, chunkInNAND, 1, __LINE__);
++}
++
++static int yaffs_VerifyCompare(const __u8 * d0, const __u8 * d1,
++ const yaffs_Spare * s0, const yaffs_Spare * s1)
++{
++
++ if (memcmp(d0, d1, YAFFS_BYTES_PER_CHUNK) != 0 ||
++ s0->tagByte0 != s1->tagByte0 ||
++ s0->tagByte1 != s1->tagByte1 ||
++ s0->tagByte2 != s1->tagByte2 ||
++ s0->tagByte3 != s1->tagByte3 ||
++ s0->tagByte4 != s1->tagByte4 ||
++ s0->tagByte5 != s1->tagByte5 ||
++ s0->tagByte6 != s1->tagByte6 ||
++ s0->tagByte7 != s1->tagByte7 ||
++ s0->ecc1[0] != s1->ecc1[0] ||
++ s0->ecc1[1] != s1->ecc1[1] ||
++ s0->ecc1[2] != s1->ecc1[2] ||
++ s0->ecc2[0] != s1->ecc2[0] ||
++ s0->ecc2[1] != s1->ecc2[1] || s0->ecc2[2] != s1->ecc2[2]) {
++ return 0;
++ }
++
++ return 1;
++}
++#endif /* NOTYET */
++
++int yaffs_TagsCompatabilityWriteChunkWithTagsToNAND(yaffs_Device * dev,
++ int chunkInNAND,
++ const __u8 * data,
++ const yaffs_ExtendedTags *
++ eTags)
++{
++ yaffs_Spare spare;
++ yaffs_Tags tags;
++
++ yaffs_SpareInitialise(&spare);
++
++ if (eTags->chunkDeleted) {
++ spare.pageStatus = 0;
++ } else {
++ tags.objectId = eTags->objectId;
++ tags.chunkId = eTags->chunkId;
++ tags.byteCount = eTags->byteCount;
++ tags.serialNumber = eTags->serialNumber;
++
++ if (!dev->useNANDECC && data) {
++ yaffs_CalcECC(data, &spare);
++ }
++ yaffs_LoadTagsIntoSpare(&spare, &tags);
++
++ }
++
++ return yaffs_WriteChunkToNAND(dev, chunkInNAND, data, &spare);
++}
++
++int yaffs_TagsCompatabilityReadChunkWithTagsFromNAND(yaffs_Device * dev,
++ int chunkInNAND,
++ __u8 * data,
++ yaffs_ExtendedTags * eTags)
++{
++
++ yaffs_Spare spare;
++ yaffs_Tags tags;
++ yaffs_ECCResult eccResult;
++
++ static yaffs_Spare spareFF;
++ static int init;
++
++ if (!init) {
++ memset(&spareFF, 0xFF, sizeof(spareFF));
++ init = 1;
++ }
++
++ if (yaffs_ReadChunkFromNAND
++ (dev, chunkInNAND, data, &spare, &eccResult, 1)) {
++ /* eTags may be NULL */
++ if (eTags) {
++
++ int deleted =
++ (yaffs_CountBits(spare.pageStatus) < 7) ? 1 : 0;
++
++ eTags->chunkDeleted = deleted;
++ eTags->eccResult = eccResult;
++ eTags->blockBad = 0; /* We're reading it */
++ /* therefore it is not a bad block */
++ eTags->chunkUsed =
++ (memcmp(&spareFF, &spare, sizeof(spareFF)) !=
++ 0) ? 1 : 0;
++
++ if (eTags->chunkUsed) {
++ yaffs_GetTagsFromSpare(dev, &spare, &tags);
++
++ eTags->objectId = tags.objectId;
++ eTags->chunkId = tags.chunkId;
++ eTags->byteCount = tags.byteCount;
++ eTags->serialNumber = tags.serialNumber;
++ }
++ }
++
++ return YAFFS_OK;
++ } else {
++ return YAFFS_FAIL;
++ }
++}
++
++int yaffs_TagsCompatabilityMarkNANDBlockBad(struct yaffs_DeviceStruct *dev,
++ int blockInNAND)
++{
++
++ yaffs_Spare spare;
++
++ memset(&spare, 0xff, sizeof(yaffs_Spare));
++
++ spare.blockStatus = 'Y';
++
++ yaffs_WriteChunkToNAND(dev, blockInNAND * dev->nChunksPerBlock, NULL,
++ &spare);
++ yaffs_WriteChunkToNAND(dev, blockInNAND * dev->nChunksPerBlock + 1,
++ NULL, &spare);
++
++ return YAFFS_OK;
++
++}
++
++int yaffs_TagsCompatabilityQueryNANDBlock(struct yaffs_DeviceStruct *dev,
++ int blockNo, yaffs_BlockState *
++ state,
++ int *sequenceNumber)
++{
++
++ yaffs_Spare spare0, spare1;
++ static yaffs_Spare spareFF;
++ static int init;
++ yaffs_ECCResult dummy;
++
++ if (!init) {
++ memset(&spareFF, 0xFF, sizeof(spareFF));
++ init = 1;
++ }
++
++ *sequenceNumber = 0;
++
++ yaffs_ReadChunkFromNAND(dev, blockNo * dev->nChunksPerBlock, NULL,
++ &spare0, &dummy, 1);
++ yaffs_ReadChunkFromNAND(dev, blockNo * dev->nChunksPerBlock + 1, NULL,
++ &spare1, &dummy, 1);
++
++ if (yaffs_CountBits(spare0.blockStatus & spare1.blockStatus) < 7)
++ *state = YAFFS_BLOCK_STATE_DEAD;
++ else if (memcmp(&spareFF, &spare0, sizeof(spareFF)) == 0)
++ *state = YAFFS_BLOCK_STATE_EMPTY;
++ else
++ *state = YAFFS_BLOCK_STATE_NEEDS_SCANNING;
++
++ return YAFFS_OK;
++}
+diff -urN linux.old/fs/yaffs2/yaffs_tagscompat.h linux.dev/fs/yaffs2/yaffs_tagscompat.h
+--- linux.old/fs/yaffs2/yaffs_tagscompat.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_tagscompat.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,40 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ * yaffs_ramdisk.h: yaffs ram disk component
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * 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.
++ *
++ * $Id: yaffs_tagscompat.h,v 1.2 2005/08/11 02:33:03 marty Exp $
++ */
++
++/* This provides a ram disk under yaffs.
++ * NB this is not intended for NAND emulation.
++ * Use this with dev->useNANDECC enabled, then ECC overheads are not required.
++ */
++#ifndef __YAFFS_TAGSCOMPAT_H__
++#define __YAFFS_TAGSCOMPAT_H__
++
++#include "yaffs_guts.h"
++int yaffs_TagsCompatabilityWriteChunkWithTagsToNAND(yaffs_Device * dev,
++ int chunkInNAND,
++ const __u8 * data,
++ const yaffs_ExtendedTags *
++ tags);
++int yaffs_TagsCompatabilityReadChunkWithTagsFromNAND(yaffs_Device * dev,
++ int chunkInNAND,
++ __u8 * data,
++ yaffs_ExtendedTags *
++ tags);
++int yaffs_TagsCompatabilityMarkNANDBlockBad(struct yaffs_DeviceStruct *dev,
++ int blockNo);
++int yaffs_TagsCompatabilityQueryNANDBlock(struct yaffs_DeviceStruct *dev,
++ int blockNo, yaffs_BlockState *
++ state, int *sequenceNumber);
++
++#endif
+diff -urN linux.old/fs/yaffs2/yaffs_tagsvalidity.c linux.dev/fs/yaffs2/yaffs_tagsvalidity.c
+--- linux.old/fs/yaffs2/yaffs_tagsvalidity.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_tagsvalidity.c 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,31 @@
++
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * 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.
++ *
++ * $Id: yaffs_tagsvalidity.c,v 1.2 2005/08/11 02:33:03 marty Exp $
++ */
++
++#include "yaffs_tagsvalidity.h"
++
++void yaffs_InitialiseTags(yaffs_ExtendedTags * tags)
++{
++ memset(tags, 0, sizeof(yaffs_ExtendedTags));
++ tags->validMarker0 = 0xAAAAAAAA;
++ tags->validMarker1 = 0x55555555;
++}
++
++int yaffs_ValidateTags(yaffs_ExtendedTags * tags)
++{
++ return (tags->validMarker0 == 0xAAAAAAAA &&
++ tags->validMarker1 == 0x55555555);
++
++}
+diff -urN linux.old/fs/yaffs2/yaffs_tagsvalidity.h linux.dev/fs/yaffs2/yaffs_tagsvalidity.h
+--- linux.old/fs/yaffs2/yaffs_tagsvalidity.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yaffs_tagsvalidity.h 2006-12-14 04:21:47.000000000 +0100
+@@ -0,0 +1,25 @@
++
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * 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.
++ *
++ * $Id: yaffs_tagsvalidity.h,v 1.2 2005/08/11 02:33:03 marty Exp $
++ */
++//yaffs_tagsvalidity.h
++
++#ifndef __YAFFS_TAGS_VALIDITY_H__
++#define __YAFFS_TAGS_VALIDITY_H__
++
++#include "yaffs_guts.h"
++
++void yaffs_InitialiseTags(yaffs_ExtendedTags * tags);
++int yaffs_ValidateTags(yaffs_ExtendedTags * tags);
++#endif
+diff -urN linux.old/fs/yaffs2/yportenv.h linux.dev/fs/yaffs2/yportenv.h
+--- linux.old/fs/yaffs2/yportenv.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/fs/yaffs2/yportenv.h 2006-12-14 04:26:06.000000000 +0100
+@@ -0,0 +1,165 @@
++/*
++ * YAFFS: Yet another FFS. A NAND-flash specific file system.
++ * yportenv.h: Portable services used by yaffs. This is done to allow
++ * simple migration from kernel space into app space for testing.
++ *
++ * Copyright (C) 2002 Aleph One Ltd.
++ * for Toby Churchill Ltd and Brightstar Engineering
++ *
++ * Created by Charles Manning <charles@aleph1.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU Lesser General Public License version 2.1 as
++ * published by the Free Software Foundation.
++ *
++ *
++ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
++ *
++ * $Id: yportenv.h,v 1.11 2006/05/21 09:39:12 charles Exp $
++ *
++ */
++
++#ifndef __YPORTENV_H__
++#define __YPORTENV_H__
++
++#if defined CONFIG_YAFFS_WINCE
++
++#include "ywinceenv.h"
++
++#elif defined __KERNEL__
++
++#include "moduleconfig.h"
++
++/* Linux kernel */
++#include <linux/autoconf.h>
++#include <linux/kernel.h>
++#include <linux/version.h>
++#include <linux/mm.h>
++#include <linux/string.h>
++#include <linux/slab.h>
++#include <linux/vmalloc.h>
++
++#define YCHAR char
++#define YUCHAR unsigned char
++#define _Y(x) x
++#define yaffs_strcpy(a,b) strcpy(a,b)
++#define yaffs_strncpy(a,b,c) strncpy(a,b,c)
++#define yaffs_strlen(s) strlen(s)
++#define yaffs_sprintf sprintf
++#define yaffs_toupper(a) toupper(a)
++
++#define Y_INLINE inline
++
++#define YAFFS_LOSTNFOUND_NAME "lost+found"
++#define YAFFS_LOSTNFOUND_PREFIX "obj"
++
++/* #define YPRINTF(x) printk x */
++#define YMALLOC(x) kmalloc(x,GFP_KERNEL)
++#define YFREE(x) kfree(x)
++#define YMALLOC_ALT(x) vmalloc(x)
++#define YFREE_ALT(x) vfree(x)
++#define YMALLOC_DMA(x) YMALLOC(x)
++
++// KR - added for use in scan so processes aren't blocked indefinitely.
++#define YYIELD() schedule()
++
++#define YAFFS_ROOT_MODE 0666
++#define YAFFS_LOSTNFOUND_MODE 0666
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
++#define Y_CURRENT_TIME CURRENT_TIME.tv_sec
++#define Y_TIME_CONVERT(x) (x).tv_sec
++#else
++#define Y_CURRENT_TIME CURRENT_TIME
++#define Y_TIME_CONVERT(x) (x)
++#endif
++
++#define yaffs_SumCompare(x,y) ((x) == (y))
++#define yaffs_strcmp(a,b) strcmp(a,b)
++
++#define TENDSTR "\n"
++#define TSTR(x) KERN_WARNING x
++#define TOUT(p) printk p
++
++#elif defined CONFIG_YAFFS_DIRECT
++
++/* Direct interface */
++#include "ydirectenv.h"
++
++#elif defined CONFIG_YAFFS_UTIL
++
++/* Stuff for YAFFS utilities */
++
++#include "stdlib.h"
++#include "stdio.h"
++#include "string.h"
++
++#include "devextras.h"
++
++#define YMALLOC(x) malloc(x)
++#define YFREE(x) free(x)
++#define YMALLOC_ALT(x) malloc(x)
++#define YFREE_ALT(x) free(x)
++
++#define YCHAR char
++#define YUCHAR unsigned char
++#define _Y(x) x
++#define yaffs_strcpy(a,b) strcpy(a,b)
++#define yaffs_strncpy(a,b,c) strncpy(a,b,c)
++#define yaffs_strlen(s) strlen(s)
++#define yaffs_sprintf sprintf
++#define yaffs_toupper(a) toupper(a)
++
++#define Y_INLINE inline
++
++/* #define YINFO(s) YPRINTF(( __FILE__ " %d %s\n",__LINE__,s)) */
++/* #define YALERT(s) YINFO(s) */
++
++#define TENDSTR "\n"
++#define TSTR(x) x
++#define TOUT(p) printf p
++
++#define YAFFS_LOSTNFOUND_NAME "lost+found"
++#define YAFFS_LOSTNFOUND_PREFIX "obj"
++/* #define YPRINTF(x) printf x */
++
++#define YAFFS_ROOT_MODE 0666
++#define YAFFS_LOSTNFOUND_MODE 0666
++
++#define yaffs_SumCompare(x,y) ((x) == (y))
++#define yaffs_strcmp(a,b) strcmp(a,b)
++
++#else
++/* Should have specified a configuration type */
++#error Unknown configuration
++
++#endif
++
++extern unsigned yaffs_traceMask;
++
++#define YAFFS_TRACE_ERROR 0x00000001
++#define YAFFS_TRACE_OS 0x00000002
++#define YAFFS_TRACE_ALLOCATE 0x00000004
++#define YAFFS_TRACE_SCAN 0x00000008
++#define YAFFS_TRACE_BAD_BLOCKS 0x00000010
++#define YAFFS_TRACE_ERASE 0x00000020
++#define YAFFS_TRACE_GC 0x00000040
++#define YAFFS_TRACE_WRITE 0x00000080
++#define YAFFS_TRACE_TRACING 0x00000100
++#define YAFFS_TRACE_DELETION 0x00000200
++#define YAFFS_TRACE_BUFFERS 0x00000400
++#define YAFFS_TRACE_NANDACCESS 0x00000800
++#define YAFFS_TRACE_GC_DETAIL 0x00001000
++#define YAFFS_TRACE_SCAN_DEBUG 0x00002000
++#define YAFFS_TRACE_MTD 0x00004000
++#define YAFFS_TRACE_CHECKPOINT 0x00008000
++#define YAFFS_TRACE_ALWAYS 0x40000000
++#define YAFFS_TRACE_BUG 0x80000000
++
++#define T(mask,p) do{ if((mask) & (yaffs_traceMask | YAFFS_TRACE_ERROR)) TOUT(p);} while(0)
++
++#ifndef CONFIG_YAFFS_WINCE
++#define YBUG() T(YAFFS_TRACE_BUG,(TSTR("==>> yaffs bug: " __FILE__ " %d" TENDSTR),__LINE__))
++#endif
++
++#endif
diff --git a/packages/linux/linux-magicbox-2.6.19.2/600-x86_lzma.patch b/packages/linux/linux-magicbox-2.6.19.2/600-x86_lzma.patch
new file mode 100644
index 0000000000..1a948839b0
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/600-x86_lzma.patch
@@ -0,0 +1,1167 @@
+diff -Naur linux-old/arch/i386/boot/compressed/LzmaDecode.c linux-lzma/arch/i386/boot/compressed/LzmaDecode.c
+--- linux-old/arch/i386/boot/compressed/LzmaDecode.c 1969-12-31 19:00:00.000000000 -0500
++++ linux-lzma/arch/i386/boot/compressed/LzmaDecode.c 2005-06-05 00:07:38.000000000 -0400
+@@ -0,0 +1,586 @@
++/*
++ LzmaDecode.c
++ LZMA Decoder (optimized for Speed version)
++
++ LZMA SDK 4.17 Copyright (c) 1999-2005 Igor Pavlov (2005-04-05)
++ http://www.7-zip.org/
++
++ LZMA SDK is licensed under two licenses:
++ 1) GNU Lesser General Public License (GNU LGPL)
++ 2) Common Public License (CPL)
++ It means that you can select one of these two licenses and
++ follow rules of that license.
++
++ SPECIAL EXCEPTION:
++ Igor Pavlov, as the author of this Code, expressly permits you to
++ statically or dynamically link your Code (or bind by name) to the
++ interfaces of this file without subjecting your linked Code to the
++ terms of the CPL or GNU LGPL. Any modifications or additions
++ to this file, however, are subject to the LGPL or CPL terms.
++*/
++
++#include "LzmaDecode.h"
++
++#ifndef Byte
++#define Byte unsigned char
++#endif
++
++#define kNumTopBits 24
++#define kTopValue ((UInt32)1 << kNumTopBits)
++
++#define kNumBitModelTotalBits 11
++#define kBitModelTotal (1 << kNumBitModelTotalBits)
++#define kNumMoveBits 5
++
++#define RC_READ_BYTE (*Buffer++)
++
++#define RC_INIT2 Code = 0; Range = 0xFFFFFFFF; \
++ { int i; for(i = 0; i < 5; i++) { RC_TEST; Code = (Code << 8) | RC_READ_BYTE; }}
++
++#ifdef _LZMA_IN_CB
++
++#define RC_TEST { if (Buffer == BufferLim) \
++ { UInt32 size; int result = InCallback->Read(InCallback, &Buffer, &size); if (result != LZMA_RESULT_OK) return result; \
++ BufferLim = Buffer + size; if (size == 0) return LZMA_RESULT_DATA_ERROR; }}
++
++#define RC_INIT Buffer = BufferLim = 0; RC_INIT2
++
++#else
++
++#define RC_TEST { if (Buffer == BufferLim) return LZMA_RESULT_DATA_ERROR; }
++
++#define RC_INIT(buffer, bufferSize) Buffer = buffer; BufferLim = buffer + bufferSize; RC_INIT2
++
++#endif
++
++#define RC_NORMALIZE if (Range < kTopValue) { RC_TEST; Range <<= 8; Code = (Code << 8) | RC_READ_BYTE; }
++
++#define IfBit0(p) RC_NORMALIZE; bound = (Range >> kNumBitModelTotalBits) * *(p); if (Code < bound)
++#define UpdateBit0(p) Range = bound; *(p) += (kBitModelTotal - *(p)) >> kNumMoveBits;
++#define UpdateBit1(p) Range -= bound; Code -= bound; *(p) -= (*(p)) >> kNumMoveBits;
++
++#define RC_GET_BIT2(p, mi, A0, A1) IfBit0(p) \
++ { UpdateBit0(p); mi <<= 1; A0; } else \
++ { UpdateBit1(p); mi = (mi + mi) + 1; A1; }
++
++#define RC_GET_BIT(p, mi) RC_GET_BIT2(p, mi, ; , ;)
++
++#define RangeDecoderBitTreeDecode(probs, numLevels, res) \
++ { int i = numLevels; res = 1; \
++ do { CProb *p = probs + res; RC_GET_BIT(p, res) } while(--i != 0); \
++ res -= (1 << numLevels); }
++
++
++#define kNumPosBitsMax 4
++#define kNumPosStatesMax (1 << kNumPosBitsMax)
++
++#define kLenNumLowBits 3
++#define kLenNumLowSymbols (1 << kLenNumLowBits)
++#define kLenNumMidBits 3
++#define kLenNumMidSymbols (1 << kLenNumMidBits)
++#define kLenNumHighBits 8
++#define kLenNumHighSymbols (1 << kLenNumHighBits)
++
++#define LenChoice 0
++#define LenChoice2 (LenChoice + 1)
++#define LenLow (LenChoice2 + 1)
++#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
++#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
++#define kNumLenProbs (LenHigh + kLenNumHighSymbols)
++
++
++#define kNumStates 12
++#define kNumLitStates 7
++
++#define kStartPosModelIndex 4
++#define kEndPosModelIndex 14
++#define kNumFullDistances (1 << (kEndPosModelIndex >> 1))
++
++#define kNumPosSlotBits 6
++#define kNumLenToPosStates 4
++
++#define kNumAlignBits 4
++#define kAlignTableSize (1 << kNumAlignBits)
++
++#define kMatchMinLen 2
++
++#define IsMatch 0
++#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax))
++#define IsRepG0 (IsRep + kNumStates)
++#define IsRepG1 (IsRepG0 + kNumStates)
++#define IsRepG2 (IsRepG1 + kNumStates)
++#define IsRep0Long (IsRepG2 + kNumStates)
++#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax))
++#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
++#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex)
++#define LenCoder (Align + kAlignTableSize)
++#define RepLenCoder (LenCoder + kNumLenProbs)
++#define Literal (RepLenCoder + kNumLenProbs)
++
++#if Literal != LZMA_BASE_SIZE
++StopCompilingDueBUG
++#endif
++
++#ifdef _LZMA_OUT_READ
++
++typedef struct _LzmaVarState
++{
++ Byte *Buffer;
++ Byte *BufferLim;
++ UInt32 Range;
++ UInt32 Code;
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *InCallback;
++ #endif
++ Byte *Dictionary;
++ UInt32 DictionarySize;
++ UInt32 DictionaryPos;
++ UInt32 GlobalPos;
++ UInt32 Reps[4];
++ int lc;
++ int lp;
++ int pb;
++ int State;
++ int RemainLen;
++ Byte TempDictionary[4];
++} LzmaVarState;
++
++int LzmaDecoderInit(
++ unsigned char *buffer, UInt32 bufferSize,
++ int lc, int lp, int pb,
++ unsigned char *dictionary, UInt32 dictionarySize,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *InCallback
++ #else
++ unsigned char *inStream, UInt32 inSize
++ #endif
++ )
++{
++ Byte *Buffer;
++ Byte *BufferLim;
++ UInt32 Range;
++ UInt32 Code;
++ LzmaVarState *vs = (LzmaVarState *)buffer;
++ CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
++ UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
++ UInt32 i;
++ if (bufferSize < numProbs * sizeof(CProb) + sizeof(LzmaVarState))
++ return LZMA_RESULT_NOT_ENOUGH_MEM;
++ vs->Dictionary = dictionary;
++ vs->DictionarySize = dictionarySize;
++ vs->DictionaryPos = 0;
++ vs->GlobalPos = 0;
++ vs->Reps[0] = vs->Reps[1] = vs->Reps[2] = vs->Reps[3] = 1;
++ vs->lc = lc;
++ vs->lp = lp;
++ vs->pb = pb;
++ vs->State = 0;
++ vs->RemainLen = 0;
++ dictionary[dictionarySize - 1] = 0;
++ for (i = 0; i < numProbs; i++)
++ p[i] = kBitModelTotal >> 1;
++
++ #ifdef _LZMA_IN_CB
++ RC_INIT;
++ #else
++ RC_INIT(inStream, inSize);
++ #endif
++ vs->Buffer = Buffer;
++ vs->BufferLim = BufferLim;
++ vs->Range = Range;
++ vs->Code = Code;
++ #ifdef _LZMA_IN_CB
++ vs->InCallback = InCallback;
++ #endif
++
++ return LZMA_RESULT_OK;
++}
++
++int LzmaDecode(unsigned char *buffer,
++ unsigned char *outStream, UInt32 outSize,
++ UInt32 *outSizeProcessed)
++{
++ LzmaVarState *vs = (LzmaVarState *)buffer;
++ Byte *Buffer = vs->Buffer;
++ Byte *BufferLim = vs->BufferLim;
++ UInt32 Range = vs->Range;
++ UInt32 Code = vs->Code;
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *InCallback = vs->InCallback;
++ #endif
++ CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
++ int state = vs->State;
++ Byte previousByte;
++ UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3];
++ UInt32 nowPos = 0;
++ UInt32 posStateMask = (1 << (vs->pb)) - 1;
++ UInt32 literalPosMask = (1 << (vs->lp)) - 1;
++ int lc = vs->lc;
++ int len = vs->RemainLen;
++ UInt32 globalPos = vs->GlobalPos;
++
++ Byte *dictionary = vs->Dictionary;
++ UInt32 dictionarySize = vs->DictionarySize;
++ UInt32 dictionaryPos = vs->DictionaryPos;
++
++ Byte tempDictionary[4];
++ if (dictionarySize == 0)
++ {
++ dictionary = tempDictionary;
++ dictionarySize = 1;
++ tempDictionary[0] = vs->TempDictionary[0];
++ }
++
++ if (len == -1)
++ {
++ *outSizeProcessed = 0;
++ return LZMA_RESULT_OK;
++ }
++
++ while(len != 0 && nowPos < outSize)
++ {
++ UInt32 pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos];
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ len--;
++ }
++ if (dictionaryPos == 0)
++ previousByte = dictionary[dictionarySize - 1];
++ else
++ previousByte = dictionary[dictionaryPos - 1];
++#else
++
++int LzmaDecode(
++ Byte *buffer, UInt32 bufferSize,
++ int lc, int lp, int pb,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *InCallback,
++ #else
++ unsigned char *inStream, UInt32 inSize,
++ #endif
++ unsigned char *outStream, UInt32 outSize,
++ UInt32 *outSizeProcessed)
++{
++ UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
++ CProb *p = (CProb *)buffer;
++
++ UInt32 i;
++ int state = 0;
++ Byte previousByte = 0;
++ UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1;
++ UInt32 nowPos = 0;
++ UInt32 posStateMask = (1 << pb) - 1;
++ UInt32 literalPosMask = (1 << lp) - 1;
++ int len = 0;
++
++ Byte *Buffer;
++ Byte *BufferLim;
++ UInt32 Range;
++ UInt32 Code;
++
++ if (bufferSize < numProbs * sizeof(CProb))
++ return LZMA_RESULT_NOT_ENOUGH_MEM;
++ for (i = 0; i < numProbs; i++)
++ p[i] = kBitModelTotal >> 1;
++
++
++ #ifdef _LZMA_IN_CB
++ RC_INIT;
++ #else
++ RC_INIT(inStream, inSize);
++ #endif
++#endif
++
++ *outSizeProcessed = 0;
++ while(nowPos < outSize)
++ {
++ CProb *prob;
++ UInt32 bound;
++ int posState = (int)(
++ (nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ & posStateMask);
++
++ prob = p + IsMatch + (state << kNumPosBitsMax) + posState;
++ IfBit0(prob)
++ {
++ int symbol = 1;
++ UpdateBit0(prob)
++ prob = p + Literal + (LZMA_LIT_SIZE *
++ (((
++ (nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ & literalPosMask) << lc) + (previousByte >> (8 - lc))));
++
++ if (state >= kNumLitStates)
++ {
++ int matchByte;
++ #ifdef _LZMA_OUT_READ
++ UInt32 pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ matchByte = dictionary[pos];
++ #else
++ matchByte = outStream[nowPos - rep0];
++ #endif
++ do
++ {
++ int bit;
++ CProb *probLit;
++ matchByte <<= 1;
++ bit = (matchByte & 0x100);
++ probLit = prob + 0x100 + bit + symbol;
++ RC_GET_BIT2(probLit, symbol, if (bit != 0) break, if (bit == 0) break)
++ }
++ while (symbol < 0x100);
++ }
++ while (symbol < 0x100)
++ {
++ CProb *probLit = prob + symbol;
++ RC_GET_BIT(probLit, symbol)
++ }
++ previousByte = (Byte)symbol;
++
++ outStream[nowPos++] = previousByte;
++ #ifdef _LZMA_OUT_READ
++ dictionary[dictionaryPos] = previousByte;
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ #endif
++ if (state < 4) state = 0;
++ else if (state < 10) state -= 3;
++ else state -= 6;
++ }
++ else
++ {
++ UpdateBit1(prob);
++ prob = p + IsRep + state;
++ IfBit0(prob)
++ {
++ UpdateBit0(prob);
++ rep3 = rep2;
++ rep2 = rep1;
++ rep1 = rep0;
++ state = state < kNumLitStates ? 0 : 3;
++ prob = p + LenCoder;
++ }
++ else
++ {
++ UpdateBit1(prob);
++ prob = p + IsRepG0 + state;
++ IfBit0(prob)
++ {
++ UpdateBit0(prob);
++ prob = p + IsRep0Long + (state << kNumPosBitsMax) + posState;
++ IfBit0(prob)
++ {
++ #ifdef _LZMA_OUT_READ
++ UInt32 pos;
++ #endif
++ UpdateBit0(prob);
++ if (nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ == 0)
++ return LZMA_RESULT_DATA_ERROR;
++ state = state < kNumLitStates ? 9 : 11;
++ #ifdef _LZMA_OUT_READ
++ pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ previousByte = dictionary[pos];
++ dictionary[dictionaryPos] = previousByte;
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ #else
++ previousByte = outStream[nowPos - rep0];
++ #endif
++ outStream[nowPos++] = previousByte;
++ continue;
++ }
++ else
++ {
++ UpdateBit1(prob);
++ }
++ }
++ else
++ {
++ UInt32 distance;
++ UpdateBit1(prob);
++ prob = p + IsRepG1 + state;
++ IfBit0(prob)
++ {
++ UpdateBit0(prob);
++ distance = rep1;
++ }
++ else
++ {
++ UpdateBit1(prob);
++ prob = p + IsRepG2 + state;
++ IfBit0(prob)
++ {
++ UpdateBit0(prob);
++ distance = rep2;
++ }
++ else
++ {
++ UpdateBit1(prob);
++ distance = rep3;
++ rep3 = rep2;
++ }
++ rep2 = rep1;
++ }
++ rep1 = rep0;
++ rep0 = distance;
++ }
++ state = state < kNumLitStates ? 8 : 11;
++ prob = p + RepLenCoder;
++ }
++ {
++ int numBits, offset;
++ CProb *probLen = prob + LenChoice;
++ IfBit0(probLen)
++ {
++ UpdateBit0(probLen);
++ probLen = prob + LenLow + (posState << kLenNumLowBits);
++ offset = 0;
++ numBits = kLenNumLowBits;
++ }
++ else
++ {
++ UpdateBit1(probLen);
++ probLen = prob + LenChoice2;
++ IfBit0(probLen)
++ {
++ UpdateBit0(probLen);
++ probLen = prob + LenMid + (posState << kLenNumMidBits);
++ offset = kLenNumLowSymbols;
++ numBits = kLenNumMidBits;
++ }
++ else
++ {
++ UpdateBit1(probLen);
++ probLen = prob + LenHigh;
++ offset = kLenNumLowSymbols + kLenNumMidSymbols;
++ numBits = kLenNumHighBits;
++ }
++ }
++ RangeDecoderBitTreeDecode(probLen, numBits, len);
++ len += offset;
++ }
++
++ if (state < 4)
++ {
++ int posSlot;
++ state += kNumLitStates;
++ prob = p + PosSlot +
++ ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) <<
++ kNumPosSlotBits);
++ RangeDecoderBitTreeDecode(prob, kNumPosSlotBits, posSlot);
++ if (posSlot >= kStartPosModelIndex)
++ {
++ int numDirectBits = ((posSlot >> 1) - 1);
++ rep0 = (2 | ((UInt32)posSlot & 1));
++ if (posSlot < kEndPosModelIndex)
++ {
++ rep0 <<= numDirectBits;
++ prob = p + SpecPos + rep0 - posSlot - 1;
++ }
++ else
++ {
++ numDirectBits -= kNumAlignBits;
++ do
++ {
++ RC_NORMALIZE
++ Range >>= 1;
++ rep0 <<= 1;
++ if (Code >= Range)
++ {
++ Code -= Range;
++ rep0 |= 1;
++ }
++ }
++ while (--numDirectBits != 0);
++ prob = p + Align;
++ rep0 <<= kNumAlignBits;
++ numDirectBits = kNumAlignBits;
++ }
++ {
++ int i = 1;
++ int mi = 1;
++ do
++ {
++ CProb *prob3 = prob + mi;
++ RC_GET_BIT2(prob3, mi, ; , rep0 |= i);
++ i <<= 1;
++ }
++ while(--numDirectBits != 0);
++ }
++ }
++ else
++ rep0 = posSlot;
++ if (++rep0 == (UInt32)(0))
++ {
++ /* it's for stream version */
++ len = -1;
++ break;
++ }
++ }
++
++ len += kMatchMinLen;
++ if (rep0 > nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos || rep0 > dictionarySize
++ #endif
++ )
++ return LZMA_RESULT_DATA_ERROR;
++ do
++ {
++ #ifdef _LZMA_OUT_READ
++ UInt32 pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ previousByte = dictionary[pos];
++ dictionary[dictionaryPos] = previousByte;
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ #else
++ previousByte = outStream[nowPos - rep0];
++ #endif
++ len--;
++ outStream[nowPos++] = previousByte;
++ }
++ while(len != 0 && nowPos < outSize);
++ }
++ }
++ RC_NORMALIZE;
++
++ #ifdef _LZMA_OUT_READ
++ vs->Buffer = Buffer;
++ vs->BufferLim = BufferLim;
++ vs->Range = Range;
++ vs->Code = Code;
++ vs->DictionaryPos = dictionaryPos;
++ vs->GlobalPos = globalPos + nowPos;
++ vs->Reps[0] = rep0;
++ vs->Reps[1] = rep1;
++ vs->Reps[2] = rep2;
++ vs->Reps[3] = rep3;
++ vs->State = state;
++ vs->RemainLen = len;
++ vs->TempDictionary[0] = tempDictionary[0];
++ #endif
++
++ *outSizeProcessed = nowPos;
++ return LZMA_RESULT_OK;
++}
+diff -Naur linux-old/arch/i386/boot/compressed/LzmaDecode.h linux-lzma/arch/i386/boot/compressed/LzmaDecode.h
+--- linux-old/arch/i386/boot/compressed/LzmaDecode.h 1969-12-31 19:00:00.000000000 -0500
++++ linux-lzma/arch/i386/boot/compressed/LzmaDecode.h 2005-06-05 00:07:39.000000000 -0400
+@@ -0,0 +1,100 @@
++/*
++ LzmaDecode.h
++ LZMA Decoder interface
++
++ LZMA SDK 4.16 Copyright (c) 1999-2005 Igor Pavlov (2005-03-18)
++ http://www.7-zip.org/
++
++ LZMA SDK is licensed under two licenses:
++ 1) GNU Lesser General Public License (GNU LGPL)
++ 2) Common Public License (CPL)
++ It means that you can select one of these two licenses and
++ follow rules of that license.
++
++ SPECIAL EXCEPTION:
++ Igor Pavlov, as the author of this code, expressly permits you to
++ statically or dynamically link your code (or bind by name) to the
++ interfaces of this file without subjecting your linked code to the
++ terms of the CPL or GNU LGPL. Any modifications or additions
++ to this file, however, are subject to the LGPL or CPL terms.
++*/
++
++#ifndef __LZMADECODE_H
++#define __LZMADECODE_H
++
++/* #define _LZMA_IN_CB */
++/* Use callback for input data */
++
++/* #define _LZMA_OUT_READ */
++/* Use read function for output data */
++
++/* #define _LZMA_PROB32 */
++/* It can increase speed on some 32-bit CPUs,
++ but memory usage will be doubled in that case */
++
++/* #define _LZMA_LOC_OPT */
++/* Enable local speed optimizations inside code */
++
++#ifndef UInt32
++#ifdef _LZMA_UINT32_IS_ULONG
++#define UInt32 unsigned long
++#else
++#define UInt32 unsigned int
++#endif
++#endif
++
++#ifdef _LZMA_PROB32
++#define CProb UInt32
++#else
++#define CProb unsigned short
++#endif
++
++#define LZMA_RESULT_OK 0
++#define LZMA_RESULT_DATA_ERROR 1
++#define LZMA_RESULT_NOT_ENOUGH_MEM 2
++
++#ifdef _LZMA_IN_CB
++typedef struct _ILzmaInCallback
++{
++ int (*Read)(void *object, unsigned char **buffer, UInt32 *bufferSize);
++} ILzmaInCallback;
++#endif
++
++#define LZMA_BASE_SIZE 1846
++#define LZMA_LIT_SIZE 768
++
++/*
++bufferSize = (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)))* sizeof(CProb)
++bufferSize += 100 in case of _LZMA_OUT_READ
++by default CProb is unsigned short,
++but if specify _LZMA_PROB_32, CProb will be UInt32(unsigned int)
++*/
++
++#ifdef _LZMA_OUT_READ
++int LzmaDecoderInit(
++ unsigned char *buffer, UInt32 bufferSize,
++ int lc, int lp, int pb,
++ unsigned char *dictionary, UInt32 dictionarySize,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback
++ #else
++ unsigned char *inStream, UInt32 inSize
++ #endif
++);
++#endif
++
++int LzmaDecode(
++ unsigned char *buffer,
++ #ifndef _LZMA_OUT_READ
++ UInt32 bufferSize,
++ int lc, int lp, int pb,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback,
++ #else
++ unsigned char *inStream, UInt32 inSize,
++ #endif
++ #endif
++ unsigned char *outStream, UInt32 outSize,
++ UInt32 *outSizeProcessed);
++
++#endif
+diff -Naur linux-old/arch/i386/boot/compressed/Makefile linux-lzma/arch/i386/boot/compressed/Makefile
+--- linux-old/arch/i386/boot/compressed/Makefile 2005-06-04 21:53:40.000000000 -0400
++++ linux-lzma/arch/i386/boot/compressed/Makefile 2005-06-05 00:25:23.000000000 -0400
+@@ -2,24 +2,33 @@
+ # linux/arch/i386/boot/compressed/Makefile
+ #
+ # create a compressed vmlinux image from the original vmlinux
++# patched by Ming-Ching Tiew <mctiew@yahoo.com> for kernel 2.6
++# requires program 'lzma' from LZMA SDK ( http://www.7-zip.org/ ) to work
++# $ mkdir lzma
++# $ cd lzma
++# $ tar tvjf ../lzma417.tar.bz2
++# $ cd SRC/7zip/Compress/LZMA_Alone
++# $ dos2unix makefile
++# $ make
++# $ su
++# # cp lzma /usr/bin
+ #
+-
+-targets := vmlinux vmlinux.bin vmlinux.bin.gz head.o misc.o piggy.o
++targets := vmlinux vmlinux.bin vmlinux.bin.lzma head.o lzma_misc.o piggy.o
+ EXTRA_AFLAGS := -traditional
+
+ LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -e startup_32
+
+-$(obj)/vmlinux: $(obj)/head.o $(obj)/misc.o $(obj)/piggy.o FORCE
++$(obj)/vmlinux: $(obj)/head.o $(obj)/lzma_misc.o $(obj)/piggy.o FORCE
+ $(call if_changed,ld)
+ @:
+
+ $(obj)/vmlinux.bin: vmlinux FORCE
+ $(call if_changed,objcopy)
+
+-$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
+- $(call if_changed,gzip)
++$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE
++ $(call if_changed,lzma)
+
+ LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T
+
+-$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.gz FORCE
++$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.lzma FORCE
+ $(call if_changed,ld)
+diff -Naur linux-old/arch/i386/boot/compressed/lzma_misc.c linux-lzma/arch/i386/boot/compressed/lzma_misc.c
+--- linux-old/arch/i386/boot/compressed/lzma_misc.c 1969-12-31 19:00:00.000000000 -0500
++++ linux-lzma/arch/i386/boot/compressed/lzma_misc.c 2005-06-04 21:33:48.000000000 -0400
+@@ -0,0 +1,412 @@
++/*
++ * lzma_misc.c
++ *
++ * Decompress LZMA compressed vmlinuz
++ * Version 0.9 Copyright (c) Ming-Ching Tiew mctiew@yahoo.com
++ * Program adapted from misc.c for 2.6 kernel
++ * Date: 3 June 2005
++ * Source released under GPL
++ */
++
++#include <linux/linkage.h>
++#include <linux/vmalloc.h>
++#include <linux/tty.h>
++#include <linux/screen_info.h>
++#include <asm/io.h>
++
++#define OF(args) args
++#define STATIC static
++
++#undef memset
++#undef memcpy
++
++/*
++ * Why do we do this? Don't ask me..
++ *
++ * Incomprehensible are the ways of bootloaders.
++ */
++static void* memcpy(void *, __const void *, size_t);
++
++typedef unsigned char uch;
++typedef unsigned short ush;
++typedef unsigned long ulg;
++
++#define WSIZE 0x8000 /* Window size must be at least 32k, */
++ /* and a power of two */
++
++static uch *inbuf; /* input buffer */
++
++static unsigned insize = 0; /* valid bytes in inbuf */
++static unsigned inptr = 0; /* index of next byte to be processed in inbuf */
++
++#define get_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf())
++
++/* Diagnostic functions */
++#ifdef DEBUG
++# define Assert(cond,msg) {if(!(cond)) error(msg);}
++# define Trace(x) fprintf x
++# define Tracev(x) {if (verbose) fprintf x ;}
++# define Tracevv(x) {if (verbose>1) fprintf x ;}
++# define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
++# define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
++#else
++# define Assert(cond,msg)
++# define Trace(x)
++# define Tracev(x)
++# define Tracevv(x)
++# define Tracec(c,x)
++# define Tracecv(c,x)
++#endif
++
++static int fill_inbuf(void);
++static void error(char *m);
++
++/*
++ * This is set up by the setup-routine at boot-time
++ */
++static unsigned char *real_mode; /* Pointer to real-mode data */
++
++#define RM_EXT_MEM_K (*(unsigned short *)(real_mode + 0x2))
++#ifndef STANDARD_MEMORY_BIOS_CALL
++#define RM_ALT_MEM_K (*(unsigned long *)(real_mode + 0x1e0))
++#endif
++#define RM_SCREEN_INFO (*(struct screen_info *)(real_mode+0))
++
++extern char input_data[];
++extern int input_len;
++
++static long bytes_out = 0;
++static uch *output_data;
++
++static void putstr(const char *);
++
++extern int end;
++static long free_mem_ptr = (long)&end;
++static long free_mem_end_ptr;
++
++#define INPLACE_MOVE_ROUTINE 0x1000
++#define LOW_BUFFER_START 0x2000
++#define LOW_BUFFER_MAX 0x90000
++#define HEAP_SIZE 0x3000
++static unsigned int low_buffer_end, low_buffer_size;
++static int high_loaded =0;
++static uch *high_buffer_start /* = (uch *)(((ulg)&end) + HEAP_SIZE)*/;
++
++static char *vidmem = (char *)0xb8000;
++static int vidport;
++static int lines, cols;
++
++static void scroll(void)
++{
++ int i;
++
++ memcpy ( vidmem, vidmem + cols * 2, ( lines - 1 ) * cols * 2 );
++ for ( i = ( lines - 1 ) * cols * 2; i < lines * cols * 2; i += 2 )
++ vidmem[i] = ' ';
++}
++
++static void putstr(const char *s)
++{
++ int x,y,pos;
++ char c;
++
++ x = RM_SCREEN_INFO.orig_x;
++ y = RM_SCREEN_INFO.orig_y;
++
++ while ( ( c = *s++ ) != '\0' ) {
++ if ( c == '\n' ) {
++ x = 0;
++ if ( ++y >= lines ) {
++ scroll();
++ y--;
++ }
++ } else {
++ vidmem [ ( x + cols * y ) * 2 ] = c;
++ if ( ++x >= cols ) {
++ x = 0;
++ if ( ++y >= lines ) {
++ scroll();
++ y--;
++ }
++ }
++ }
++ }
++
++ RM_SCREEN_INFO.orig_x = x;
++ RM_SCREEN_INFO.orig_y = y;
++
++ pos = (x + cols * y) * 2; /* Update cursor position */
++ outb_p(14, vidport);
++ outb_p(0xff & (pos >> 9), vidport+1);
++ outb_p(15, vidport);
++ outb_p(0xff & (pos >> 1), vidport+1);
++}
++
++static void* memcpy(void* __dest, __const void* __src,
++ size_t __n)
++{
++ int i;
++ char *d = (char *)__dest, *s = (char *)__src;
++
++ for (i=0;i<__n;i++) d[i] = s[i];
++ return __dest;
++}
++
++/* ===========================================================================
++ * Fill the input buffer. This is called only when the buffer is empty
++ * and at least one byte is really needed.
++ */
++static int fill_inbuf(void)
++{
++ if (insize != 0) {
++ error("ran out of input data");
++ }
++
++ inbuf = input_data;
++ insize = input_len;
++ inptr = 1;
++ return inbuf[0];
++}
++
++static void error(char *x)
++{
++ putstr("\n\n");
++ putstr(x);
++ putstr("\n\n -- System halted");
++
++ while(1); /* Halt */
++}
++
++#define STACK_SIZE (4096)
++
++long user_stack [STACK_SIZE];
++
++struct {
++ long * a;
++ short b;
++ } stack_start = { & user_stack [STACK_SIZE] , __BOOT_DS };
++
++static void setup_normal_output_buffer(void)
++{
++#ifdef STANDARD_MEMORY_BIOS_CALL
++ if (RM_EXT_MEM_K < 1024) error("Less than 2MB of memory");
++#else
++ if ((RM_ALT_MEM_K > RM_EXT_MEM_K ? RM_ALT_MEM_K : RM_EXT_MEM_K) < 1024) error("Less than 2MB of memory");
++#endif
++ output_data = (char *)0x100000; /* Points to 1M */
++ free_mem_end_ptr = (long)real_mode;
++}
++
++struct moveparams {
++ uch *low_buffer_start; int lcount;
++ uch *high_buffer_start; int hcount;
++};
++
++static void setup_output_buffer_if_we_run_high(struct moveparams *mv)
++{
++ high_buffer_start = (uch *)(((ulg)&end) + HEAP_SIZE);
++#ifdef STANDARD_MEMORY_BIOS_CALL
++ if (RM_EXT_MEM_K < (3*1024)) error("Less than 4MB of memory");
++#else
++ if ((RM_ALT_MEM_K > RM_EXT_MEM_K ? RM_ALT_MEM_K : RM_EXT_MEM_K) <
++ (3*1024))
++ error("Less than 4MB of memory");
++#endif
++ mv->low_buffer_start = output_data = (char *)LOW_BUFFER_START;
++ low_buffer_end = ((unsigned int)real_mode > LOW_BUFFER_MAX
++ ? LOW_BUFFER_MAX : (unsigned int)real_mode) & ~0xfff;
++ low_buffer_size = low_buffer_end - LOW_BUFFER_START;
++ high_loaded = 1;
++ free_mem_end_ptr = (long)high_buffer_start;
++ if ( (0x100000 + low_buffer_size) > ((ulg)high_buffer_start)) {
++ high_buffer_start = (uch *)(0x100000 + low_buffer_size);
++ mv->hcount = 0; /* say: we need not to move high_buffer */
++ }
++ else mv->hcount = -1;
++ mv->high_buffer_start = high_buffer_start;
++}
++
++static void close_output_buffer_if_we_run_high(struct moveparams *mv)
++{
++ if (bytes_out > low_buffer_size) {
++ mv->lcount = low_buffer_size;
++ if (mv->hcount)
++ mv->hcount = bytes_out - low_buffer_size;
++ } else {
++ mv->lcount = bytes_out;
++ mv->hcount = 0;
++ }
++}
++
++// When using LZMA in callback, the compressed length is not needed.
++// Otherwise you need a special version of lzma compression program
++// which will pad the compressed length in the header.
++#define _LZMA_IN_CB
++#include "LzmaDecode.h"
++#include "LzmaDecode.c"
++
++#ifdef _LZMA_IN_CB
++static int read_byte(void *object, unsigned char **buffer, UInt32 *bufferSize);
++#endif
++
++
++/*
++ * Do the lzma decompression
++ * When using LZMA in callback, the end of input stream is automatically determined
++ */
++static int lzma_unzip(void)
++{
++
++ unsigned int i; /* temp value */
++ unsigned int lc; /* literal context bits */
++ unsigned int lp; /* literal pos state bits */
++ unsigned int pb; /* pos state bits */
++ unsigned char* workspace;
++ unsigned int uncompressedSize = 0;
++ unsigned char* p;
++
++#ifdef _LZMA_IN_CB
++ ILzmaInCallback callback;
++ callback.Read = read_byte;
++#else
++ unsigned char* inputbuf;
++ unsigned int lzma_workspace_size;
++ unsigned int compressedSize = 0;
++#endif
++
++ /* lzma args */
++ i = get_byte();
++ lc = i % 9, i = i / 9;
++ lp = i % 5, pb = i / 5;
++
++ /* skip dictionary size */
++ for (i = 0; i < 4; i++)
++ get_byte();
++ // get uncompressedSize
++ p= (char*)&uncompressedSize;
++ for (i = 0; i < 4; i++)
++ *p++ = get_byte();
++
++ //get compressedSize
++#ifdef _LZMA_IN_CB
++ for (i = 0; i < 4; i++)
++ get_byte();
++#else
++ p= (char*)&compressedSize;
++ for (i = 0; i < 4; i++)
++ *p++ = get_byte();
++#endif
++
++#if 0
++ if ( (lc == 5 ) && (lp == 0 ) && ( pb == 0 ))
++ {
++ putstr("got prop!\n");
++ }
++
++#ifndef _LZMA_IN_CB
++ if( compressedSize == 496722 )
++ {
++ putstr( "got the right sizes\n");
++ }
++ else if ( compressedSize > 496722 )
++ {
++ putstr( "greater !\n");
++ }
++ else if ( compressedSize < 496722 )
++ putstr( "smaller!\n");
++
++#endif
++ if ( uncompressedSize == 1187168 )
++ {
++ putstr( "got the right uncompressed size \n");
++ }else if ( uncompressedSize > 1187168 )
++ {
++ putstr( "uncompressedSize greater!\n");
++ }else
++ putstr( "uncompressedSize smaller!|n");
++#endif
++
++ // point it beyond uncompresedSize
++ workspace = high_buffer_start + uncompressedSize;
++ //
++#ifndef _LZMA_IN_CB
++ lzma_workspace_size = (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp))) * sizeof(CProb);
++ inputbuf = high_buffer_start + uncompressedSize + lzma_workspace_size;
++ // read the compressed data
++ for( i=0; i < compressedSize; i++)
++ {
++ if ( i % ( 1024 * 10 ) == 0 )
++ putstr(".");
++ *inputbuf++ = get_byte();
++ }
++#endif
++
++ /* decompress kernel */
++#ifdef _LZMA_IN_CB
++ if (LzmaDecode(workspace, ~0, lc, lp, pb,
++ &callback,
++#else
++ if (LzmaDecode(workspace, lzma_workspace_size, lc, lp, pb,
++ inputbuf - compressedSize, compressedSize,
++#endif
++ (unsigned char*)high_buffer_start, uncompressedSize, &i) == LZMA_RESULT_OK)
++ {
++ if ( i != uncompressedSize )
++ error( "kernel corrupted!\n");
++ //copy it back to low_buffer
++ if( uncompressedSize > low_buffer_size )
++ {
++ memcpy((char*)LOW_BUFFER_START, high_buffer_start, low_buffer_size);
++ memcpy(high_buffer_start, high_buffer_start+low_buffer_size,
++ uncompressedSize-low_buffer_size);
++ }
++ else
++ memcpy((char*)LOW_BUFFER_START, high_buffer_start, uncompressedSize );
++ bytes_out = i;
++ return 0;
++ }
++ return 1;
++}
++
++
++#ifdef _LZMA_IN_CB
++static int read_byte(void *object, unsigned char **buffer, UInt32 *bufferSize)
++{
++ static unsigned int i = 0;
++ static unsigned char val;
++ *bufferSize = 1;
++ val = get_byte();
++ *buffer = &val;
++ if ( i++ % ( 1024 * 50 ) == 0 )
++ putstr(".");
++ return LZMA_RESULT_OK;
++}
++#endif
++
++asmlinkage int decompress_kernel(struct moveparams *mv, void *rmode)
++{
++ real_mode = rmode;
++
++ if (RM_SCREEN_INFO.orig_video_mode == 7) {
++ vidmem = (char *) 0xb0000;
++ vidport = 0x3b4;
++ } else {
++ vidmem = (char *) 0xb8000;
++ vidport = 0x3d4;
++ }
++
++ lines = RM_SCREEN_INFO.orig_video_lines;
++ cols = RM_SCREEN_INFO.orig_video_cols;
++
++ if (free_mem_ptr < 0x100000) setup_normal_output_buffer();
++ else setup_output_buffer_if_we_run_high(mv);
++
++ putstr("LZMA vmlinuz: Ming-Ching Tiew <mctiew@yahoo.com> ...");
++ if( lzma_unzip() != 0 )
++ {
++ error("inflate error\n");
++ }
++ putstr("Ok, booting the kernel.\n");
++ if (high_loaded) close_output_buffer_if_we_run_high(mv);
++ return high_loaded;
++}
+diff -urN linux-2.6.19.2/scripts/Makefile.lib linux-2.6.19.2.new/scripts/Makefile.lib
+--- linux-2.6.19.2/scripts/Makefile.lib 2007-01-10 20:10:37.000000000 +0100
++++ linux-2.6.19.2.new/scripts/Makefile.lib 2007-04-15 23:51:54.000000000 +0200
+@@ -162,4 +162,9 @@
+ quiet_cmd_gzip = GZIP $@
+ cmd_gzip = gzip -f -9 < $< > $@
+
+-
++# LZMA
++#
++quiet_cmd_lzma = LZMA $@
++cmd_lzma = lzma e $< $@ -lc7 -lp0 -pb0
++# to use lzmacomp,
++# cmd_lzma = lzmacomp $< 700 > $@
diff --git a/packages/linux/linux-magicbox-2.6.19.2/700-airprime.patch b/packages/linux/linux-magicbox-2.6.19.2/700-airprime.patch
new file mode 100644
index 0000000000..5eafe1da27
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/700-airprime.patch
@@ -0,0 +1,12 @@
+diff -urN linux-2.6.19.2-old/drivers/usb/serial/airprime.c linux-2.6.19.2-dev/drivers/usb/serial/airprime.c
+--- linux-2.6.19.2-old/drivers/usb/serial/airprime.c 2007-05-01 14:11:28.000000000 -0700
++++ linux-2.6.19.2-dev/drivers/usb/serial/airprime.c 2007-05-01 14:12:03.000000000 -0700
+@@ -20,6 +20,8 @@
+ { USB_DEVICE(0x0c88, 0x17da) }, /* Kyocera Wireless KPC650/Passport */
+ { USB_DEVICE(0x1410, 0x1110) }, /* Novatel Wireless Merlin CDMA */
+ { USB_DEVICE(0x1410, 0x1100) }, /* ExpressCard34 Qualcomm 3G CDMA */
++ { USB_DEVICE(0x1410, 0x1130) }, /* Novatel Wireless S720 CDMA/EV-DO */
++ { USB_DEVICE(0x1410, 0x2110) }, /* Novatel Wireless U720 CDMA/EV-DO */
+ { },
+ };
+ MODULE_DEVICE_TABLE(usb, id_table);
diff --git a/packages/linux/linux-magicbox-2.6.19.2/900-headers_type_and_time.patch b/packages/linux/linux-magicbox-2.6.19.2/900-headers_type_and_time.patch
new file mode 100644
index 0000000000..2ed6f39e6b
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/900-headers_type_and_time.patch
@@ -0,0 +1,48 @@
+diff -urN linux-2.6.19.old/include/linux/time.h linux-2.6.19.dev/include/linux/time.h
+--- linux-2.6.19.old/include/linux/time.h 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/include/linux/time.h 2006-12-14 03:14:05.000000000 +0100
+@@ -1,6 +1,10 @@
+ #ifndef _LINUX_TIME_H
+ #define _LINUX_TIME_H
+
++#ifndef __KERNEL__
++#include <time.h>
++#else
++
+ #include <linux/types.h>
+
+ #ifdef __KERNEL__
+@@ -223,4 +227,6 @@
+ */
+ #define TIMER_ABSTIME 0x01
+
++#endif /* __KERNEL__ DEBIAN */
++
+ #endif
+diff -urN linux-2.6.19.old/include/linux/types.h linux-2.6.19.dev/include/linux/types.h
+--- linux-2.6.19.old/include/linux/types.h 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/include/linux/types.h 2006-12-14 03:14:05.000000000 +0100
+@@ -1,6 +1,14 @@
+ #ifndef _LINUX_TYPES_H
+ #define _LINUX_TYPES_H
+
++/* Debian: Use userland types instead. */
++#ifndef __KERNEL__
++# include <sys/types.h>
++/* For other kernel headers. */
++# include <linux/posix_types.h>
++# include <asm/types.h>
++#else
++
+ #ifdef __KERNEL__
+
+ #define BITS_TO_LONGS(bits) \
+@@ -156,6 +164,8 @@
+
+ #endif /* __KERNEL_STRICT_NAMES */
+
++#endif /* __KERNEL__ DEBIAN */
++
+ /*
+ * Below are truly Linux-specific types that should never collide with
+ * any application/library that wants linux/types.h.
diff --git a/packages/linux/linux-magicbox-2.6.19.2/901-asm_bitops_include.patch b/packages/linux/linux-magicbox-2.6.19.2/901-asm_bitops_include.patch
new file mode 100644
index 0000000000..ec18e9b102
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/901-asm_bitops_include.patch
@@ -0,0 +1,11 @@
+diff -urN linux-2.6.19.old/include/asm-mips/bitops.h linux-2.6.19.dev/include/asm-mips/bitops.h
+--- linux-2.6.19.old/include/asm-mips/bitops.h 2006-11-29 22:57:37.000000000 +0100
++++ linux-2.6.19.dev/include/asm-mips/bitops.h 2006-12-14 03:14:07.000000000 +0100
+@@ -11,6 +11,7 @@
+
+ #include <linux/compiler.h>
+ #include <linux/types.h>
++#include <asm/war.h>
+ #include <asm/bug.h>
+ #include <asm/byteorder.h> /* sigh ... */
+ #include <asm/cpu-features.h>
diff --git a/packages/linux/linux-magicbox-2.6.19.2/902-darwin_scripts_include.patch b/packages/linux/linux-magicbox-2.6.19.2/902-darwin_scripts_include.patch
new file mode 100644
index 0000000000..f5f187e9b7
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/902-darwin_scripts_include.patch
@@ -0,0 +1,145 @@
+diff -urN linux-2.6.19.1/scripts/mod/file2alias.c linux-2.6.19.1.new/scripts/mod/file2alias.c
+--- linux-2.6.19.1/scripts/mod/file2alias.c 2006-12-11 20:32:53.000000000 +0100
++++ linux-2.6.19.1.new/scripts/mod/file2alias.c 2007-01-02 15:28:47.000000000 +0100
+@@ -37,7 +37,21 @@
+ * even potentially has different endianness and word sizes, since
+ * we handle those differences explicitly below */
+ #include "../../include/linux/mod_devicetable.h"
++#ifndef __APPLE__
+ #include "../../include/linux/input.h"
++#else
++#define EV_MAX 0x1f
++#define KEY_MUTE 113
++#define KEY_MIN_INTERESTING KEY_MUTE
++#define KEY_MAX 0x1ff
++#define REL_MAX 0x0f
++#define ABS_MAX 0x3f
++#define MSC_MAX 0x07
++#define LED_MAX 0x0f
++#define SND_MAX 0x07
++#define FF_MAX 0x7f
++#define SW_MAX 0x0f
++#endif
+
+ #define ADD(str, sep, cond, field) \
+ do { \
+diff -urN linux-2.6.19.1/scripts/mod/mk_elfconfig.c linux-2.6.19.1.new/scripts/mod/mk_elfconfig.c
+--- linux-2.6.19.1/scripts/mod/mk_elfconfig.c 2006-12-11 20:32:53.000000000 +0100
++++ linux-2.6.19.1.new/scripts/mod/mk_elfconfig.c 2007-01-02 15:43:57.000000000 +0100
+@@ -1,7 +1,11 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#ifndef __APPLE__
+ #include <elf.h>
++#else
++#include "../../../../../tools/sstrip/include/elf.h"
++#endif
+
+ int
+ main(int argc, char **argv)
+diff -urN linux-2.6.19.1/scripts/mod/modpost.h linux-2.6.19.1.new/scripts/mod/modpost.h
+--- linux-2.6.19.1/scripts/mod/modpost.h 2006-12-11 20:32:53.000000000 +0100
++++ linux-2.6.19.1.new/scripts/mod/modpost.h 2007-01-02 15:40:55.000000000 +0100
+@@ -7,7 +7,11 @@
+ #include <sys/mman.h>
+ #include <fcntl.h>
+ #include <unistd.h>
++#ifndef __APPLE__
+ #include <elf.h>
++#else
++#include "../../../../../tools/sstrip/include/elf.h"
++#endif
+
+ #include "elfconfig.h"
+
+diff -urN linux-2.6.19.1/scripts/mod/sumversion.c linux-2.6.19.1.new/scripts/mod/sumversion.c
+--- linux-2.6.19.1/scripts/mod/sumversion.c 2006-12-11 20:32:53.000000000 +0100
++++ linux-2.6.19.1.new/scripts/mod/sumversion.c 2007-01-02 15:30:23.000000000 +0100
+@@ -8,6 +8,9 @@
+ #include <errno.h>
+ #include <string.h>
+ #include "modpost.h"
++#ifdef __APPLE__
++#include <limits.h>
++#endif
+
+ /*
+ * Stolen form Cryptographic API.
+diff -urN linux-2.6.19.1/scripts/kconfig linux-2.6.19.1.new/scripts/kconfig/Makefile
+--- linux-2.6.19.1/scripts/kconfig/Makefile 2007-01-04 17:49:35.000000000 +0100
++++ linux-2.6.19.1.new/scripts/kconfig/Makefile 2007-01-04 17:50:37.000000000 +0100
+@@ -87,6 +87,9 @@
+ # we really need to do so. (Do not call gcc as part of make mrproper)
+ HOST_EXTRACFLAGS = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags)
+ HOST_LOADLIBES = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
++ifeq ($(shell uname -s),Darwin)
++HOST_LOADLIBES += -lncurses
++endif
+
+ HOST_EXTRACFLAGS += -DLOCALE
+
+diff -urN linux-2.6.19.1/scripts/genksyms/parse.y linux-2.6.19.1.new/scripts/genksyms/parse.y
+--- linux-2.6.19.1/scripts/genksyms/parse.y 2006-12-11 20:32:53.000000000 +0100
++++ linux-2.6.19.1.new/scripts/genksyms/parse.y 2007-01-04 19:20:55.000000000 +0100
+@@ -24,7 +24,9 @@
+ %{
+
+ #include <assert.h>
++#ifndef __APPLE__
+ #include <malloc.h>
++#endif
+ #include "genksyms.h"
+
+ static int is_typedef;
+diff -urN linux-2.6.19.1/scripts/genksyms/parse.c_shipped linux-2.6.19.1.new/scripts/genksyms/parse.c_shipped
+--- linux-2.6.19.1/scripts/genksyms/parse.c_shipped 2007-01-04 19:34:09.000000000 +0100
++++ linux-2.6.19.1.new/scripts/genksyms/parse.c_shipped 2007-01-04 19:34:02.000000000 +0100
+@@ -144,7 +144,9 @@
+
+
+ #include <assert.h>
++#ifndef __APPLE__
+ #include <malloc.h>
++#endif
+ #include "genksyms.h"
+
+ static int is_typedef;
+--- linux-2.6.19.1/scripts/kallsyms.c 2006-12-11 20:32:53.000000000 +0100
++++ linux-2.6.19.1.new/scripts/kallsyms.c 2007-01-04 19:46:38.000000000 +0100
+@@ -30,6 +30,35 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <ctype.h>
++#ifdef __APPLE__
++/* Darwin has no memmem implementation, this one is ripped of the uClibc-0.9.28 source */
++void *memmem (const void *haystack, size_t haystack_len,
++ const void *needle, size_t needle_len)
++{
++ const char *begin;
++ const char *const last_possible
++ = (const char *) haystack + haystack_len - needle_len;
++
++ if (needle_len == 0)
++ /* The first occurrence of the empty string is deemed to occur at
++ the beginning of the string. */
++ return (void *) haystack;
++
++ /* Sanity check, otherwise the loop might search through the whole
++ memory. */
++ if (__builtin_expect (haystack_len < needle_len, 0))
++ return NULL;
++
++ for (begin = (const char *) haystack; begin <= last_possible; ++begin)
++ if (begin[0] == ((const char *) needle)[0] &&
++ !memcmp ((const void *) &begin[1],
++ (const void *) ((const char *) needle + 1),
++ needle_len - 1))
++ return (void *) begin;
++
++ return NULL;
++}
++#endif
+
+ #define KSYM_NAME_LEN 127
+
diff --git a/packages/linux/linux-magicbox-2.6.19.2/903-stddef_include.patch b/packages/linux/linux-magicbox-2.6.19.2/903-stddef_include.patch
new file mode 100644
index 0000000000..6ce8558c34
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/903-stddef_include.patch
@@ -0,0 +1,17 @@
+--- linux-2.6.19.2/include/linux/stddef.h.old 2007-02-14 03:34:54.861805424 +0100
++++ linux-2.6.19.2/include/linux/stddef.h 2007-02-14 03:35:06.331061832 +0100
+@@ -16,6 +16,7 @@
+ false = 0,
+ true = 1
+ };
++#endif /* __KERNEL__ */
+
+ #undef offsetof
+ #ifdef __compiler_offsetof
+@@ -23,6 +24,5 @@
+ #else
+ #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+ #endif
+-#endif /* __KERNEL__ */
+
+ #endif
diff --git a/packages/linux/linux-magicbox-2.6.19.2/904-ls_time_locale.patch b/packages/linux/linux-magicbox-2.6.19.2/904-ls_time_locale.patch
new file mode 100644
index 0000000000..cc4a392b8f
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/904-ls_time_locale.patch
@@ -0,0 +1,24 @@
+diff -urN linux-2.6.19.2/scripts/gen_initramfs_list.sh linux-2.6.19.2.new/scripts/gen_initramfs_list.sh
+--- linux-2.6.19.2/scripts/gen_initramfs_list.sh 2007-01-10 20:10:37.000000000 +0100
++++ linux-2.6.19.2.new/scripts/gen_initramfs_list.sh 2007-05-03 16:25:06.000000000 +0200
+@@ -120,9 +120,9 @@
+ ;;
+ "nod")
+ local dev_type=
+- local maj=$(LC_ALL=C ls -l "${location}" | \
++ local maj=$(LC_ALL=C ls --time-style=locale -l "${location}" | \
+ gawk '{sub(/,/, "", $5); print $5}')
+- local min=$(LC_ALL=C ls -l "${location}" | \
++ local min=$(LC_ALL=C ls --time-style=locale -l "${location}" | \
+ gawk '{print $6}')
+
+ if [ -b "${location}" ]; then
+@@ -133,7 +133,7 @@
+ str="${ftype} ${name} ${str} ${dev_type} ${maj} ${min}"
+ ;;
+ "slink")
+- local target=$(LC_ALL=C ls -l "${location}" | \
++ local target=$(LC_ALL=C ls --time-style=locale -l "${location}" | \
+ gawk '{print $11}')
+ str="${ftype} ${name} ${target} ${str}"
+ ;;
diff --git a/packages/linux/linux-magicbox-2.6.19.2/config-magicbox2 b/packages/linux/linux-magicbox-2.6.19.2/config-magicbox2
new file mode 100644
index 0000000000..04815104f4
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/config-magicbox2
@@ -0,0 +1,1619 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19.2
+# Fri May 4 19:41:19 2007
+#
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_PPC=y
+CONFIG_PPC32=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# 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_IPC_NS is not set
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+# CONFIG_RELAY is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL_SYSCALL=y
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+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 is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# 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"
+
+#
+# Processor
+#
+# CONFIG_6xx is not set
+CONFIG_40x=y
+# CONFIG_44x is not set
+# CONFIG_8xx is not set
+# CONFIG_E200 is not set
+# CONFIG_E500 is not set
+CONFIG_MATH_EMULATION=y
+# CONFIG_KEXEC is not set
+# CONFIG_CPU_FREQ is not set
+CONFIG_4xx=y
+CONFIG_WANT_EARLY_SERIAL=y
+
+#
+# IBM 4xx options
+#
+# CONFIG_BUBINGA is not set
+# CONFIG_CPCI405 is not set
+# CONFIG_EP405 is not set
+# CONFIG_REDWOOD_5 is not set
+# CONFIG_REDWOOD_6 is not set
+# CONFIG_SYCAMORE is not set
+# CONFIG_WALNUT is not set
+CONFIG_MAGICBOX=y
+# CONFIG_XILINX_ML300 is not set
+# CONFIG_XILINX_ML403 is not set
+CONFIG_IBM_OCP=y
+CONFIG_BIOS_FIXUP=y
+CONFIG_405EP=y
+CONFIG_PPC4xx_DMA=y
+CONFIG_PPC4xx_EDMA=y
+CONFIG_PPC_GEN550=y
+CONFIG_UART0_TTYS0=y
+# CONFIG_UART0_TTYS1 is not set
+CONFIG_NOT_COHERENT_CACHE=y
+
+#
+# Platform options
+#
+# CONFIG_PC_KEYBOARD is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_HZ_100=y
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=100
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT 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=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=ttyS0,115200 init=/etc/preinit"
+# CONFIG_PM is not set
+# CONFIG_SECCOMP is not set
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+# CONFIG_PPC_I8259 is not set
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+# CONFIG_PCMCIA is not set
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=m
+# CONFIG_YENTA_O2 is not set
+# CONFIG_YENTA_RICOH is not set
+# CONFIG_YENTA_TI is not set
+# CONFIG_YENTA_TOSHIBA is not set
+CONFIG_PCCARD_NONSTATIC=m
+
+#
+# Advanced setup
+#
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Default settings for advanced configuration options are used
+#
+CONFIG_HIGHMEM_START=0xfe000000
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_TASK_SIZE=0x80000000
+CONFIG_CONSISTENT_START=0xff100000
+CONFIG_CONSISTENT_SIZE=0x00200000
+CONFIG_BOOT_LOAD=0x00400000
+
+#
+# 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=m
+# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_NET_KEY=m
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+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_FWMARK=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_MULTIPATH_CACHED=y
+CONFIG_IP_ROUTE_MULTIPATH_RR=m
+CONFIG_IP_ROUTE_MULTIPATH_RANDOM=m
+CONFIG_IP_ROUTE_MULTIPATH_WRANDOM=m
+CONFIG_IP_ROUTE_MULTIPATH_DRR=m
+CONFIG_IP_ROUTE_VERBOSE=y
+# CONFIG_IP_PNP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IPSEC_NAT_TRAVERSAL=y
+# CONFIG_IP_MROUTE is not set
+CONFIG_ARPD=y
+CONFIG_SYN_COOKIES=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=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+CONFIG_TCP_CONG_ADVANCED=y
+CONFIG_TCP_CONG_BIC=m
+CONFIG_TCP_CONG_CUBIC=m
+CONFIG_TCP_CONG_WESTWOOD=m
+CONFIG_TCP_CONG_HTCP=m
+CONFIG_TCP_CONG_HSTCP=m
+CONFIG_TCP_CONG_HYBLA=m
+CONFIG_TCP_CONG_VEGAS=y
+CONFIG_TCP_CONG_SCALABLE=m
+CONFIG_TCP_CONG_LP=m
+CONFIG_TCP_CONG_VENO=m
+# CONFIG_DEFAULT_BIC is not set
+# CONFIG_DEFAULT_CUBIC is not set
+# CONFIG_DEFAULT_HTCP is not set
+CONFIG_DEFAULT_VEGAS=y
+# CONFIG_DEFAULT_WESTWOOD is not set
+# CONFIG_DEFAULT_RENO is not set
+CONFIG_DEFAULT_TCP_CONG="vegas"
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+CONFIG_IPV6_ROUTER_PREF=y
+# CONFIG_IPV6_ROUTE_INFO 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 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
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+CONFIG_NETFILTER_XTABLES=y
+CONFIG_NETFILTER_XT_TARGET_CHAOS=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DELUDE=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=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_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
+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=y
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_PORTSCAN=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y
+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=y
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=y
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=y
+CONFIG_IP_NF_CT_ACCT=y
+CONFIG_IP_NF_CONNTRACK_MARK=y
+# 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=m
+CONFIG_IP_NF_H323=m
+CONFIG_IP_NF_SIP=m
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=y
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_LAYER7=m
+# CONFIG_IP_NF_MATCH_LAYER7_DEBUG is not set
+CONFIG_IP_NF_MATCH_IPP2P=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_TIME=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=y
+CONFIG_IP_NF_TARGET_REJECT=y
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_TARGET_TCPMSS=y
+CONFIG_IP_NF_NAT=y
+CONFIG_IP_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=y
+CONFIG_IP_NF_TARGET_REDIRECT=y
+CONFIG_IP_NF_TARGET_ROUTE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
+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_PPTP=m
+CONFIG_IP_NF_NAT_H323=m
+CONFIG_IP_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=y
+CONFIG_IP_NF_TARGET_IMQ=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+CONFIG_IP_NF_SET=m
+CONFIG_IP_NF_SET_MAX=256
+CONFIG_IP_NF_SET_HASHSIZE=1024
+CONFIG_IP_NF_SET_IPMAP=m
+CONFIG_IP_NF_SET_MACIPMAP=m
+CONFIG_IP_NF_SET_PORTMAP=m
+CONFIG_IP_NF_SET_IPHASH=m
+CONFIG_IP_NF_SET_NETHASH=m
+CONFIG_IP_NF_SET_IPTREE=m
+CONFIG_IP_NF_MATCH_SET=m
+CONFIG_IP_NF_TARGET_SET=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+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_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_TARGET_ROUTE=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_IMQ=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=m
+CONFIG_INET_DCCP_DIAG=m
+CONFIG_IP_DCCP_ACKVEC=y
+
+#
+# DCCP CCIDs Configuration (EXPERIMENTAL)
+#
+CONFIG_IP_DCCP_CCID2=m
+# CONFIG_IP_DCCP_CCID2_DEBUG is not set
+CONFIG_IP_DCCP_CCID3=m
+CONFIG_IP_DCCP_TFRC_LIB=m
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+CONFIG_ATM_CLIP_NO_ICMP=y
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+CONFIG_ATM_BR2684_IPFILTER=y
+CONFIG_BRIDGE=y
+CONFIG_VLAN_8021Q=y
+# CONFIG_DECNET is not set
+CONFIG_LLC=y
+CONFIG_LLC2=m
+# 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=y
+CONFIG_NET_SCH_CLK_JIFFIES=y
+# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# 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_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_ESFQ=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 is not set
+CONFIG_NET_CLS_IND=y
+CONFIG_NET_ESTIMATOR=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+CONFIG_HAMRADIO=y
+
+#
+# Packet Radio protocols
+#
+CONFIG_AX25=m
+# CONFIG_AX25_DAMA_SLAVE is not set
+# CONFIG_NETROM is not set
+# CONFIG_ROSE is not set
+
+#
+# AX.25 network device drivers
+#
+CONFIG_MKISS=m
+# CONFIG_6PACK is not set
+# CONFIG_BPQETHER is not set
+# CONFIG_BAYCOM_SER_FDX is not set
+# CONFIG_BAYCOM_SER_HDX is not set
+# CONFIG_YAM is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT 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
+CONFIG_FIB_RULES=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 is not set
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_SPLIT_ROOTFS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_GEOMETRY 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_OTP 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
+# 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_MAGICMAP=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_DEV_FD 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=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# Misc devices
+#
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=m
+CONFIG_IDE_MAX_HWIFS=4
+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_IDECD is not set
+# 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=m
+# CONFIG_BLK_DEV_IDEPCI is not set
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_MAGICBOX_IDE=y
+# 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=m
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS 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_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD 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
+
+#
+# Macintosh device drivers
+#
+# CONFIG_WINDFARM is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_IFB=m
+# CONFIG_DUMMY is not set
+CONFIG_BONDING=m
+# CONFIG_EQUALIZER is not set
+CONFIG_IMQ=m
+# CONFIG_IMQ_BEHAVIOR_AA is not set
+# CONFIG_IMQ_BEHAVIOR_AB is not set
+CONFIG_IMQ_BEHAVIOR_BA=y
+# CONFIG_IMQ_BEHAVIOR_BB is not set
+CONFIG_IMQ_NUM_DEVS=2
+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_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+
+#
+# Tulip family network device support
+#
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+CONFIG_IBM_EMAC=y
+CONFIG_IBM_EMAC_RXB=64
+CONFIG_IBM_EMAC_TXB=8
+CONFIG_IBM_EMAC_POLL_WEIGHT=32
+CONFIG_IBM_EMAC_RX_COPY_THRESHOLD=256
+CONFIG_IBM_EMAC_RX_SKB_HEADROOM=0
+# CONFIG_IBM_EMAC_PHY_RX_CLK_FIX is not set
+# CONFIG_IBM_EMAC_DEBUG 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=m
+# 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
+# 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=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+# CONFIG_IPW2200_RADIOTAP is not set
+# CONFIG_IPW2200_PROMISCUOUS is not set
+# CONFIG_IPW2200_QOS is not set
+# CONFIG_IPW2200_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
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+CONFIG_PRISM54=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_NET_WIRELESS=y
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# ATM drivers
+#
+CONFIG_ATM_DUMMY=m
+CONFIG_ATM_TCP=m
+# 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=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_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
+
+#
+# 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 is not set
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
+CONFIG_ISDN_CAPI_CAPIFS=m
+
+#
+# CAPI hardware drivers
+#
+
+#
+# Active AVM cards
+#
+# CONFIG_CAPI_AVM is not set
+
+#
+# Active Eicon DIVA Server cards
+#
+# CONFIG_CAPI_EICON is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+# CONFIG_INPUT 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 is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+# CONFIG_SERIAL_8250_PCI is not set
+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_BOOKE_WDT is not set
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_GEN_RTC 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_AGP 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 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 is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+# CONFIG_VIDEO_V4L1 is not set
+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 is not set
+
+#
+# Encoders/decoders and other helper chips
+#
+
+#
+# Audio decoders
+#
+
+#
+# Video decoders
+#
+
+#
+# Video and audio decoders
+#
+
+#
+# MPEG video encoders
+#
+# CONFIG_VIDEO_CX2341X is not set
+
+#
+# Video encoders
+#
+
+#
+# Video improvement chips
+#
+# CONFIG_VIDEO_VIVI is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB 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 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 is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_REISERFS_FS_XATTR is not set
+CONFIG_JFS_FS=m
+# CONFIG_JFS_POSIX_ACL is not set
+# CONFIG_JFS_SECURITY is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_FS_POSIX_ACL=y
+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_MINI_FO=y
+CONFIG_MINIX_FS=m
+CONFIG_ROMFS_FS=m
+# CONFIG_INOTIFY is not set
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=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=y
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_YAFFS_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=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_CRAMFS is not set
+CONFIG_SQUASHFS=y
+# 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 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=y
+# CONFIG_CIFS_STATS2 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
+# 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=y
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=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_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="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=m
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+CONFIG_NLS_CODEPAGE_1250=m
+# 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=m
+CONFIG_NLS_KOI8_R=m
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+
+#
+# IBM 40x options
+#
+
+#
+# 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
+# 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_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_SERIAL_TEXT_DEBUG is not set
+CONFIG_PPC_OCP=y
+
+#
+# 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=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=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_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
+#
+CONFIG_INITRAMFS_SOURCE=""
diff --git a/packages/linux/linux-magicbox_2.6.18.6.bb b/packages/linux/linux-magicbox_2.6.18.6.bb
new file mode 100644
index 0000000000..fde955ce9a
--- /dev/null
+++ b/packages/linux/linux-magicbox_2.6.18.6.bb
@@ -0,0 +1,79 @@
+SECTION = "kernel"
+DESCRIPTION = "Linux kernel for Magicbox ver 1.1 and 2.0 router boards"
+LICENSE = "GPL"
+PR = "r2"
+DEPENDS = "u-boot"
+
+COMPATIBLE_MACHINE = "magicbox"
+
+KERNEL_CCSUFFIX = "-3.4.4"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://000-fix-makefile.patch;patch=1 \
+ file://001-magicbox-board-2.6.18.patch;patch=1 \
+ file://002-magicbox-mtd-map-2.6.18.patch;patch=1 \
+ file://010-load-ramdisk-even-if-rootdev-equals-ramdisk.patch;patch=1 \
+ file://magicbox2-ide-cf_2.6.18.patch;patch=1 \
+ file://squashfs3.1-patch;patch=1 \
+ file://squashfs-lzma-support.patch;patch=1 \
+ file://kernel-2.6.18-layer7-2.6.patch;patch=1 \
+ file://config-2.6.18-magicbox2\
+"
+
+
+S = "${WORKDIR}/linux-${PV}"
+
+inherit kernel
+
+
+FILES_kernel-image = "/boot/zImage.elf"
+
+export OS = "Linux"
+ARCH = "ppc"
+KERNEL_IMAGETYPE = "zImage"
+KERNEL_OUTPUT = "arch/ppc/boot/images/zImage.elf"
+
+
+
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/config-2.6.18-magicbox2 ${S}/.config
+}
+
+
+do_stage_append () {
+#need ppc platforms includes + friends in order for external kernel modules to compile as headers as still split
+
+ install -d ${STAGING_KERNEL_DIR}/arch/
+ cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+
+ cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+}
+
+
+
+do_install_append () {
+ install -d ${DEPLOY_DIR}/images
+ install -m 0755 arch/ppc/boot/images/zImage.elf ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.elf
+ install -m 0755 vmlinux ${DEPLOY_DIR}/images/
+ powerpc-${TARGET_OS}-objcopy -O binary -R .note -R .comment -S ${DEPLOY_DIR}/images/vmlinux ${DEPLOY_DIR}/images/linux.bin
+ gzip -f -9 ${DEPLOY_DIR}/images/linux.bin
+ mkimage -A ppc -O linux -T kernel -C gzip -a 0 -e 0 -n "ppc405"+${PV} -d ${DEPLOY_DIR}/images/linux.bin.gz ${DEPLOY_DIR}/images/uImage-${PV}-${MACHINE}-${DATETIME}.bin
+ rm ${DEPLOY_DIR}/images/vmlinux
+ rm ${DEPLOY_DIR}/images/linux.bin.gz
+
+
+}
+
+
+pkg_postinst_kernel () {
+ true
+}
+
+pkg_postrm_kernel () {
+ true
+}
+
+
diff --git a/packages/linux/linux-magicbox_2.6.19.2.bb b/packages/linux/linux-magicbox_2.6.19.2.bb
new file mode 100644
index 0000000000..bbec2801b9
--- /dev/null
+++ b/packages/linux/linux-magicbox_2.6.19.2.bb
@@ -0,0 +1,114 @@
+SECTION = "kernel"
+DESCRIPTION = "Linux kernel for Magicbox ver 1.1 and 2.0 router boards"
+LICENSE = "GPL"
+PR = "r0"
+DEPENDS = "u-boot"
+
+COMPATIBLE_MACHINE = "magicbox"
+
+#KERNEL_CCSUFFIX = "-3.4.4"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://001-squashfs.patch;patch=1 \
+ file://002-lzma_decompress.patch;patch=1 \
+ file://003-squashfs_lzma.patch;patch=1 \
+ file://004-extra_optimization.patch;patch=1 \
+ file://006-gcc4_inline_fix.patch;patch=1 \
+ file://007-samsung_flash.patch;patch=1 \
+ file://009-revert_intel_flash_breakage.patch;patch=1 \
+ file://010-disable_old_squashfs_compatibility.patch;patch=1 \
+ file://011-mips_boot.patch;patch=1 \
+ file://012-mips_cpu_tlb.patch;patch=1 \
+ file://050-mtdpart_redboot_partition_truncate.patch;patch=1 \
+ file://060-rootfs_split.patch;patch=1 \
+ file://100-netfilter_layer7_2.8.patch;patch=1 \
+ file://101-netfilter_layer7_pktmatch.patch;patch=1 \
+ file://110-ipp2p_0.8.1rc1.patch;patch=1 \
+ file://120-openswan-2.4.0.kernel-2.6-natt.patch;patch=1 \
+ file://130-netfilter-ipset.patch;patch=1 \
+ file://140-netfilter_time.patch;patch=1 \
+ file://150-netfilter_imq.patch;patch=1 \
+ file://160-netfilter_route.patch;patch=1 \
+ file://170-netfilter_chaostables.patch;patch=1 \
+ file://200-sched_esfq.patch;patch=1 \
+ file://201-multiple_default_gateways.patch;patch=1 \
+ file://202-mips-freestanding.patch;patch=1 \
+ file://204-jffs2_eofdetect.patch;patch=1 \
+ file://207-powerpc_asm_segment_h.patch;patch=1 \
+ file://210-d80211_compat.patch;patch=1 \
+ file://211-no_block2mtd_readahead.patch;patch=1 \
+ file://212-block2mtd_erase_scan.patch;patch=1 \
+ file://510-Yaffs.patch;patch=1 \
+ file://600-x86_lzma.patch;patch=1 \
+ file://700-airprime.patch;patch=1 \
+ file://900-headers_type_and_time.patch;patch=1 \
+ file://901-asm_bitops_include.patch;patch=1 \
+ file://902-darwin_scripts_include.patch;patch=1 \
+ file://903-stddef_include.patch;patch=1 \
+ file://904-ls_time_locale.patch;patch=1 \
+ file://001-magicbox_support.patch;patch=1 \
+ file://002-flash_map.patch;patch=1 \
+ file://100-cf_slot.patch;patch=1 \
+
+ file://config-magicbox2\
+"
+
+
+S = "${WORKDIR}/linux-${PV}"
+
+inherit kernel
+
+
+FILES_kernel-image = "/boot/zImage.elf"
+
+export OS = "Linux"
+ARCH = "ppc"
+KERNEL_IMAGETYPE = "zImage"
+KERNEL_OUTPUT = "arch/ppc/boot/images/zImage.elf"
+
+
+
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/config-magicbox2 ${S}/.config
+}
+
+
+do_stage_append () {
+#need ppc platforms includes + friends in order for external kernel modules to compile as headers as still split
+
+ install -d ${STAGING_KERNEL_DIR}/arch/
+ cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+
+ cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+}
+
+
+
+do_install_append () {
+ install -d ${DEPLOY_DIR}/images
+ install -m 0755 arch/ppc/boot/images/zImage.elf ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.elf
+ install -m 0755 vmlinux ${DEPLOY_DIR}/images/
+ powerpc-${TARGET_OS}-objcopy -O binary -R .note -R .comment -S ${DEPLOY_DIR}/images/vmlinux ${DEPLOY_DIR}/images/linux.bin
+ gzip -f -9 ${DEPLOY_DIR}/images/linux.bin
+ cp -a ${DEPLOY_DIR}/images/linux.bin.gz ${DEPLOY_DIR}/images/linux-${PV}-${MACHINE}-${DATETIME}.bin.gz
+ mkimage -A ppc -O linux -T kernel -C gzip -a 00000000 -e 00000000 -n "magicbox"-${PV} \
+ -d ${DEPLOY_DIR}/images/linux.bin.gz ${DEPLOY_DIR}/images/uImage-${PV}-${MACHINE}-${DATETIME}.bin
+ rm ${DEPLOY_DIR}/images/vmlinux
+ rm ${DEPLOY_DIR}/images/linux.bin.gz
+
+
+}
+
+
+pkg_postinst_kernel () {
+ true
+}
+
+pkg_postrm_kernel () {
+ true
+}
+
+
diff --git a/packages/linux/linux-mtx-1-2.4.27/48-pptp.patch b/packages/linux/linux-mtx-1-2.4.27/48-pptp.patch
new file mode 100644
index 0000000000..5896f90370
--- /dev/null
+++ b/packages/linux/linux-mtx-1-2.4.27/48-pptp.patch
@@ -0,0 +1,5092 @@
+diff -uNr linux_org/Documentation/Configure.help linux/Documentation/Configure.help
+--- linux_org/Documentation/Configure.help 2006-10-27 14:08:20.000000000 +0200
++++ linux/Documentation/Configure.help 2006-10-27 14:11:52.000000000 +0200
+@@ -2848,6 +2848,31 @@
+ If you want to compile it as a module, say M here and read
+ <file:Documentation/modules.txt>. If unsure, say `Y'.
+
++PPTP conntrack and NAT support
++CONFIG_IP_NF_PPTP
++ This module adds support for PPTP (Point to Point Tunnelling Protocol,
++ RFC2637) conncection tracking and NAT.
++
++ If you are running PPTP sessions over a stateful firewall or NAT box,
++ you may want to enable this feature.
++
++ Please note that not all PPTP modes of operation are supported yet.
++ For more info, read top of the file net/ipv4/netfilter/ip_conntrack_pptp.c
++
++ If you want to compile it as a module, say M here and read
++ Documentation/modules.txt. If unsure, say `N'.
++
++GRE protocol conntrack and NAT support
++CONFIG_IP_NF_CT_PROTO_GRE
++ This module adds generic support for connection tracking and NAT of the
++ GRE protocol (RFC1701, RFC2784). Please note that this will only work
++ with GRE connections using the key field of the GRE header.
++
++ You will need GRE support to enable PPTP support.
++
++ If you want to compile it as a module, say `M' here and read
++ Documentation/modules.txt. If unsire, say `N'.
++
+ User space queueing via NETLINK
+ CONFIG_IP_NF_QUEUE
+ Netfilter has the ability to queue packets to user space: the
+diff -uNr linux_org/include/linux/netfilter_ipv4/ip_conntrack.h linux/include/linux/netfilter_ipv4/ip_conntrack.h
+--- linux_org/include/linux/netfilter_ipv4/ip_conntrack.h 2004-11-24 12:13:57.000000000 +0100
++++ linux/include/linux/netfilter_ipv4/ip_conntrack.h 2006-10-27 14:11:52.000000000 +0200
+@@ -50,19 +50,23 @@
+
+ #include <linux/netfilter_ipv4/ip_conntrack_tcp.h>
+ #include <linux/netfilter_ipv4/ip_conntrack_icmp.h>
++#include <linux/netfilter_ipv4/ip_conntrack_proto_gre.h>
+
+ /* per conntrack: protocol private data */
+ union ip_conntrack_proto {
+ /* insert conntrack proto private data here */
++ struct ip_ct_gre gre;
+ struct ip_ct_tcp tcp;
+ struct ip_ct_icmp icmp;
+ };
+
+ union ip_conntrack_expect_proto {
+ /* insert expect proto private data here */
++ struct ip_ct_gre_expect gre;
+ };
+
+ /* Add protocol helper include file here */
++#include <linux/netfilter_ipv4/ip_conntrack_pptp.h>
+ #include <linux/netfilter_ipv4/ip_conntrack_amanda.h>
+
+ #include <linux/netfilter_ipv4/ip_conntrack_ftp.h>
+@@ -71,6 +75,7 @@
+ /* per expectation: application helper private data */
+ union ip_conntrack_expect_help {
+ /* insert conntrack helper private data (expect) here */
++ struct ip_ct_pptp_expect exp_pptp_info;
+ struct ip_ct_amanda_expect exp_amanda_info;
+ struct ip_ct_ftp_expect exp_ftp_info;
+ struct ip_ct_irc_expect exp_irc_info;
+@@ -85,16 +90,19 @@
+ /* per conntrack: application helper private data */
+ union ip_conntrack_help {
+ /* insert conntrack helper private data (master) here */
++ struct ip_ct_pptp_master ct_pptp_info;
+ struct ip_ct_ftp_master ct_ftp_info;
+ struct ip_ct_irc_master ct_irc_info;
+ };
+
+ #ifdef CONFIG_IP_NF_NAT_NEEDED
+ #include <linux/netfilter_ipv4/ip_nat.h>
++#include <linux/netfilter_ipv4/ip_nat_pptp.h>
+
+ /* per conntrack: nat application helper private data */
+ union ip_conntrack_nat_help {
+ /* insert nat helper private data here */
++ struct ip_nat_pptp nat_pptp_info;
+ };
+ #endif
+
+diff -uNr linux_org/include/linux/netfilter_ipv4/ip_conntrack_pptp.h linux/include/linux/netfilter_ipv4/ip_conntrack_pptp.h
+--- linux_org/include/linux/netfilter_ipv4/ip_conntrack_pptp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux/include/linux/netfilter_ipv4/ip_conntrack_pptp.h 2006-10-27 14:11:52.000000000 +0200
+@@ -0,0 +1,313 @@
++/* PPTP constants and structs */
++#ifndef _CONNTRACK_PPTP_H
++#define _CONNTRACK_PPTP_H
++
++/* state of the control session */
++enum pptp_ctrlsess_state {
++ PPTP_SESSION_NONE, /* no session present */
++ PPTP_SESSION_ERROR, /* some session error */
++ PPTP_SESSION_STOPREQ, /* stop_sess request seen */
++ PPTP_SESSION_REQUESTED, /* start_sess request seen */
++ PPTP_SESSION_CONFIRMED, /* session established */
++};
++
++/* state of the call inside the control session */
++enum pptp_ctrlcall_state {
++ PPTP_CALL_NONE,
++ PPTP_CALL_ERROR,
++ PPTP_CALL_OUT_REQ,
++ PPTP_CALL_OUT_CONF,
++ PPTP_CALL_IN_REQ,
++ PPTP_CALL_IN_REP,
++ PPTP_CALL_IN_CONF,
++ PPTP_CALL_CLEAR_REQ,
++};
++
++
++/* conntrack private data */
++struct ip_ct_pptp_master {
++ enum pptp_ctrlsess_state sstate; /* session state */
++
++ /* everything below is going to be per-expectation in newnat,
++ * since there could be more than one call within one session */
++ enum pptp_ctrlcall_state cstate; /* call state */
++ u_int16_t pac_call_id; /* call id of PAC, host byte order */
++ u_int16_t pns_call_id; /* call id of PNS, host byte order */
++};
++
++/* conntrack_expect private member */
++struct ip_ct_pptp_expect {
++ enum pptp_ctrlcall_state cstate; /* call state */
++ u_int16_t pac_call_id; /* call id of PAC */
++ u_int16_t pns_call_id; /* call id of PNS */
++};
++
++
++#ifdef __KERNEL__
++
++#include <linux/netfilter_ipv4/lockhelp.h>
++DECLARE_LOCK_EXTERN(ip_pptp_lock);
++
++#define IP_CONNTR_PPTP PPTP_CONTROL_PORT
++
++union pptp_ctrl_union {
++ void *rawreq;
++ struct PptpStartSessionRequest *sreq;
++ struct PptpStartSessionReply *srep;
++ struct PptpStopSessionReqest *streq;
++ struct PptpStopSessionReply *strep;
++ struct PptpOutCallRequest *ocreq;
++ struct PptpOutCallReply *ocack;
++ struct PptpInCallRequest *icreq;
++ struct PptpInCallReply *icack;
++ struct PptpInCallConnected *iccon;
++ struct PptpClearCallRequest *clrreq;
++ struct PptpCallDisconnectNotify *disc;
++ struct PptpWanErrorNotify *wanerr;
++ struct PptpSetLinkInfo *setlink;
++};
++
++
++
++#define PPTP_CONTROL_PORT 1723
++
++#define PPTP_PACKET_CONTROL 1
++#define PPTP_PACKET_MGMT 2
++
++#define PPTP_MAGIC_COOKIE 0x1a2b3c4d
++
++struct pptp_pkt_hdr {
++ __u16 packetLength;
++ __u16 packetType;
++ __u32 magicCookie;
++};
++
++/* PptpControlMessageType values */
++#define PPTP_START_SESSION_REQUEST 1
++#define PPTP_START_SESSION_REPLY 2
++#define PPTP_STOP_SESSION_REQUEST 3
++#define PPTP_STOP_SESSION_REPLY 4
++#define PPTP_ECHO_REQUEST 5
++#define PPTP_ECHO_REPLY 6
++#define PPTP_OUT_CALL_REQUEST 7
++#define PPTP_OUT_CALL_REPLY 8
++#define PPTP_IN_CALL_REQUEST 9
++#define PPTP_IN_CALL_REPLY 10
++#define PPTP_IN_CALL_CONNECT 11
++#define PPTP_CALL_CLEAR_REQUEST 12
++#define PPTP_CALL_DISCONNECT_NOTIFY 13
++#define PPTP_WAN_ERROR_NOTIFY 14
++#define PPTP_SET_LINK_INFO 15
++
++#define PPTP_MSG_MAX 15
++
++/* PptpGeneralError values */
++#define PPTP_ERROR_CODE_NONE 0
++#define PPTP_NOT_CONNECTED 1
++#define PPTP_BAD_FORMAT 2
++#define PPTP_BAD_VALUE 3
++#define PPTP_NO_RESOURCE 4
++#define PPTP_BAD_CALLID 5
++#define PPTP_REMOVE_DEVICE_ERROR 6
++
++struct PptpControlHeader {
++ __u16 messageType;
++ __u16 reserved;
++};
++
++/* FramingCapability Bitmap Values */
++#define PPTP_FRAME_CAP_ASYNC 0x1
++#define PPTP_FRAME_CAP_SYNC 0x2
++
++/* BearerCapability Bitmap Values */
++#define PPTP_BEARER_CAP_ANALOG 0x1
++#define PPTP_BEARER_CAP_DIGITAL 0x2
++
++struct PptpStartSessionRequest {
++ __u16 protocolVersion;
++ __u8 reserved1;
++ __u8 reserved2;
++ __u32 framingCapability;
++ __u32 bearerCapability;
++ __u16 maxChannels;
++ __u16 firmwareRevision;
++ __u8 hostName[64];
++ __u8 vendorString[64];
++};
++
++/* PptpStartSessionResultCode Values */
++#define PPTP_START_OK 1
++#define PPTP_START_GENERAL_ERROR 2
++#define PPTP_START_ALREADY_CONNECTED 3
++#define PPTP_START_NOT_AUTHORIZED 4
++#define PPTP_START_UNKNOWN_PROTOCOL 5
++
++struct PptpStartSessionReply {
++ __u16 protocolVersion;
++ __u8 resultCode;
++ __u8 generalErrorCode;
++ __u32 framingCapability;
++ __u32 bearerCapability;
++ __u16 maxChannels;
++ __u16 firmwareRevision;
++ __u8 hostName[64];
++ __u8 vendorString[64];
++};
++
++/* PptpStopReasons */
++#define PPTP_STOP_NONE 1
++#define PPTP_STOP_PROTOCOL 2
++#define PPTP_STOP_LOCAL_SHUTDOWN 3
++
++struct PptpStopSessionRequest {
++ __u8 reason;
++};
++
++/* PptpStopSessionResultCode */
++#define PPTP_STOP_OK 1
++#define PPTP_STOP_GENERAL_ERROR 2
++
++struct PptpStopSessionReply {
++ __u8 resultCode;
++ __u8 generalErrorCode;
++};
++
++struct PptpEchoRequest {
++ __u32 identNumber;
++};
++
++/* PptpEchoReplyResultCode */
++#define PPTP_ECHO_OK 1
++#define PPTP_ECHO_GENERAL_ERROR 2
++
++struct PptpEchoReply {
++ __u32 identNumber;
++ __u8 resultCode;
++ __u8 generalErrorCode;
++ __u16 reserved;
++};
++
++/* PptpFramingType */
++#define PPTP_ASYNC_FRAMING 1
++#define PPTP_SYNC_FRAMING 2
++#define PPTP_DONT_CARE_FRAMING 3
++
++/* PptpCallBearerType */
++#define PPTP_ANALOG_TYPE 1
++#define PPTP_DIGITAL_TYPE 2
++#define PPTP_DONT_CARE_BEARER_TYPE 3
++
++struct PptpOutCallRequest {
++ __u16 callID;
++ __u16 callSerialNumber;
++ __u32 minBPS;
++ __u32 maxBPS;
++ __u32 bearerType;
++ __u32 framingType;
++ __u16 packetWindow;
++ __u16 packetProcDelay;
++ __u16 reserved1;
++ __u16 phoneNumberLength;
++ __u16 reserved2;
++ __u8 phoneNumber[64];
++ __u8 subAddress[64];
++};
++
++/* PptpCallResultCode */
++#define PPTP_OUTCALL_CONNECT 1
++#define PPTP_OUTCALL_GENERAL_ERROR 2
++#define PPTP_OUTCALL_NO_CARRIER 3
++#define PPTP_OUTCALL_BUSY 4
++#define PPTP_OUTCALL_NO_DIAL_TONE 5
++#define PPTP_OUTCALL_TIMEOUT 6
++#define PPTP_OUTCALL_DONT_ACCEPT 7
++
++struct PptpOutCallReply {
++ __u16 callID;
++ __u16 peersCallID;
++ __u8 resultCode;
++ __u8 generalErrorCode;
++ __u16 causeCode;
++ __u32 connectSpeed;
++ __u16 packetWindow;
++ __u16 packetProcDelay;
++ __u32 physChannelID;
++};
++
++struct PptpInCallRequest {
++ __u16 callID;
++ __u16 callSerialNumber;
++ __u32 callBearerType;
++ __u32 physChannelID;
++ __u16 dialedNumberLength;
++ __u16 dialingNumberLength;
++ __u8 dialedNumber[64];
++ __u8 dialingNumber[64];
++ __u8 subAddress[64];
++};
++
++/* PptpInCallResultCode */
++#define PPTP_INCALL_ACCEPT 1
++#define PPTP_INCALL_GENERAL_ERROR 2
++#define PPTP_INCALL_DONT_ACCEPT 3
++
++struct PptpInCallReply {
++ __u16 callID;
++ __u16 peersCallID;
++ __u8 resultCode;
++ __u8 generalErrorCode;
++ __u16 packetWindow;
++ __u16 packetProcDelay;
++ __u16 reserved;
++};
++
++struct PptpInCallConnected {
++ __u16 peersCallID;
++ __u16 reserved;
++ __u32 connectSpeed;
++ __u16 packetWindow;
++ __u16 packetProcDelay;
++ __u32 callFramingType;
++};
++
++struct PptpClearCallRequest {
++ __u16 callID;
++ __u16 reserved;
++};
++
++struct PptpCallDisconnectNotify {
++ __u16 callID;
++ __u8 resultCode;
++ __u8 generalErrorCode;
++ __u16 causeCode;
++ __u16 reserved;
++ __u8 callStatistics[128];
++};
++
++struct PptpWanErrorNotify {
++ __u16 peersCallID;
++ __u16 reserved;
++ __u32 crcErrors;
++ __u32 framingErrors;
++ __u32 hardwareOverRuns;
++ __u32 bufferOverRuns;
++ __u32 timeoutErrors;
++ __u32 alignmentErrors;
++};
++
++struct PptpSetLinkInfo {
++ __u16 peersCallID;
++ __u16 reserved;
++ __u32 sendAccm;
++ __u32 recvAccm;
++};
++
++
++struct pptp_priv_data {
++ __u16 call_id;
++ __u16 mcall_id;
++ __u16 pcall_id;
++};
++
++#endif /* __KERNEL__ */
++#endif /* _CONNTRACK_PPTP_H */
+diff -uNr linux_org/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h linux/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h
+--- linux_org/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h 1970-01-01 01:00:00.000000000 +0100
++++ linux/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h 2006-10-27 14:11:52.000000000 +0200
+@@ -0,0 +1,123 @@
++#ifndef _CONNTRACK_PROTO_GRE_H
++#define _CONNTRACK_PROTO_GRE_H
++#include <asm/byteorder.h>
++
++/* GRE PROTOCOL HEADER */
++
++/* GRE Version field */
++#define GRE_VERSION_1701 0x0
++#define GRE_VERSION_PPTP 0x1
++
++/* GRE Protocol field */
++#define GRE_PROTOCOL_PPTP 0x880B
++
++/* GRE Flags */
++#define GRE_FLAG_C 0x80
++#define GRE_FLAG_R 0x40
++#define GRE_FLAG_K 0x20
++#define GRE_FLAG_S 0x10
++#define GRE_FLAG_A 0x80
++
++#define GRE_IS_C(f) ((f)&GRE_FLAG_C)
++#define GRE_IS_R(f) ((f)&GRE_FLAG_R)
++#define GRE_IS_K(f) ((f)&GRE_FLAG_K)
++#define GRE_IS_S(f) ((f)&GRE_FLAG_S)
++#define GRE_IS_A(f) ((f)&GRE_FLAG_A)
++
++/* GRE is a mess: Four different standards */
++struct gre_hdr {
++#if defined(__LITTLE_ENDIAN_BITFIELD)
++ __u16 rec:3,
++ srr:1,
++ seq:1,
++ key:1,
++ routing:1,
++ csum:1,
++ version:3,
++ reserved:4,
++ ack:1;
++#elif defined(__BIG_ENDIAN_BITFIELD)
++ __u16 csum:1,
++ routing:1,
++ key:1,
++ seq:1,
++ srr:1,
++ rec:3,
++ ack:1,
++ reserved:4,
++ version:3;
++#else
++#error "Adjust your <asm/byteorder.h> defines"
++#endif
++ __u16 protocol;
++};
++
++/* modified GRE header for PPTP */
++struct gre_hdr_pptp {
++ __u8 flags; /* bitfield */
++ __u8 version; /* should be GRE_VERSION_PPTP */
++ __u16 protocol; /* should be GRE_PROTOCOL_PPTP */
++ __u16 payload_len; /* size of ppp payload, not inc. gre header */
++ __u16 call_id; /* peer's call_id for this session */
++ __u32 seq; /* sequence number. Present if S==1 */
++ __u32 ack; /* seq number of highest packet recieved by */
++ /* sender in this session */
++};
++
++
++/* this is part of ip_conntrack */
++struct ip_ct_gre {
++ unsigned int stream_timeout;
++ unsigned int timeout;
++};
++
++/* this is part of ip_conntrack_expect */
++struct ip_ct_gre_expect {
++ struct ip_ct_gre_keymap *keymap_orig, *keymap_reply;
++};
++
++#ifdef __KERNEL__
++struct ip_conntrack_expect;
++
++/* structure for original <-> reply keymap */
++struct ip_ct_gre_keymap {
++ struct list_head list;
++
++ struct ip_conntrack_tuple tuple;
++};
++
++
++/* add new tuple->key_reply pair to keymap */
++int ip_ct_gre_keymap_add(struct ip_conntrack_expect *exp,
++ struct ip_conntrack_tuple *t,
++ int reply);
++
++/* change an existing keymap entry */
++void ip_ct_gre_keymap_change(struct ip_ct_gre_keymap *km,
++ struct ip_conntrack_tuple *t);
++
++/* delete keymap entries */
++void ip_ct_gre_keymap_destroy(struct ip_conntrack_expect *exp);
++
++
++/* get pointer to gre key, if present */
++static inline u_int32_t *gre_key(struct gre_hdr *greh)
++{
++ if (!greh->key)
++ return NULL;
++ if (greh->csum || greh->routing)
++ return (u_int32_t *) (greh+sizeof(*greh)+4);
++ return (u_int32_t *) (greh+sizeof(*greh));
++}
++
++/* get pointer ot gre csum, if present */
++static inline u_int16_t *gre_csum(struct gre_hdr *greh)
++{
++ if (!greh->csum)
++ return NULL;
++ return (u_int16_t *) (greh+sizeof(*greh));
++}
++
++#endif /* __KERNEL__ */
++
++#endif /* _CONNTRACK_PROTO_GRE_H */
+diff -uNr linux_org/include/linux/netfilter_ipv4/ip_conntrack_tuple.h linux/include/linux/netfilter_ipv4/ip_conntrack_tuple.h
+--- linux_org/include/linux/netfilter_ipv4/ip_conntrack_tuple.h 2003-11-17 02:07:46.000000000 +0100
++++ linux/include/linux/netfilter_ipv4/ip_conntrack_tuple.h 2006-10-27 14:11:52.000000000 +0200
+@@ -14,7 +14,7 @@
+ union ip_conntrack_manip_proto
+ {
+ /* Add other protocols here. */
+- u_int16_t all;
++ u_int32_t all;
+
+ struct {
+ u_int16_t port;
+@@ -25,6 +25,9 @@
+ struct {
+ u_int16_t id;
+ } icmp;
++ struct {
++ u_int32_t key;
++ } gre;
+ };
+
+ /* The manipulable part of the tuple. */
+@@ -44,7 +47,7 @@
+ u_int32_t ip;
+ union {
+ /* Add other protocols here. */
+- u_int16_t all;
++ u_int64_t all;
+
+ struct {
+ u_int16_t port;
+@@ -55,6 +58,11 @@
+ struct {
+ u_int8_t type, code;
+ } icmp;
++ struct {
++ u_int16_t protocol;
++ u_int8_t version;
++ u_int32_t key;
++ } gre;
+ } u;
+
+ /* The protocol. */
+@@ -80,10 +88,16 @@
+ #ifdef __KERNEL__
+
+ #define DUMP_TUPLE(tp) \
+-DEBUGP("tuple %p: %u %u.%u.%u.%u:%hu -> %u.%u.%u.%u:%hu\n", \
++DEBUGP("tuple %p: %u %u.%u.%u.%u:%u -> %u.%u.%u.%u:%u\n", \
+ (tp), (tp)->dst.protonum, \
+- NIPQUAD((tp)->src.ip), ntohs((tp)->src.u.all), \
+- NIPQUAD((tp)->dst.ip), ntohs((tp)->dst.u.all))
++ NIPQUAD((tp)->src.ip), ntohl((tp)->src.u.all), \
++ NIPQUAD((tp)->dst.ip), ntohl((tp)->dst.u.all))
++
++#define DUMP_TUPLE_RAW(x) \
++ DEBUGP("tuple %p: %u %u.%u.%u.%u:0x%08x -> %u.%u.%u.%u:0x%08x\n",\
++ (x), (x)->dst.protonum, \
++ NIPQUAD((x)->src.ip), ntohl((x)->src.u.all), \
++ NIPQUAD((x)->dst.ip), ntohl((x)->dst.u.all))
+
+ #define CTINFO2DIR(ctinfo) ((ctinfo) >= IP_CT_IS_REPLY ? IP_CT_DIR_REPLY : IP_CT_DIR_ORIGINAL)
+
+diff -uNr linux_org/include/linux/netfilter_ipv4/ip_conntrack_tuple.h.orig linux/include/linux/netfilter_ipv4/ip_conntrack_tuple.h.orig
+--- linux_org/include/linux/netfilter_ipv4/ip_conntrack_tuple.h.orig 1970-01-01 01:00:00.000000000 +0100
++++ linux/include/linux/netfilter_ipv4/ip_conntrack_tuple.h.orig 2003-11-17 02:07:46.000000000 +0100
+@@ -0,0 +1,139 @@
++#ifndef _IP_CONNTRACK_TUPLE_H
++#define _IP_CONNTRACK_TUPLE_H
++
++/* A `tuple' is a structure containing the information to uniquely
++ identify a connection. ie. if two packets have the same tuple, they
++ are in the same connection; if not, they are not.
++
++ We divide the structure along "manipulatable" and
++ "non-manipulatable" lines, for the benefit of the NAT code.
++*/
++
++/* The protocol-specific manipulable parts of the tuple: always in
++ network order! */
++union ip_conntrack_manip_proto
++{
++ /* Add other protocols here. */
++ u_int16_t all;
++
++ struct {
++ u_int16_t port;
++ } tcp;
++ struct {
++ u_int16_t port;
++ } udp;
++ struct {
++ u_int16_t id;
++ } icmp;
++};
++
++/* The manipulable part of the tuple. */
++struct ip_conntrack_manip
++{
++ u_int32_t ip;
++ union ip_conntrack_manip_proto u;
++};
++
++/* This contains the information to distinguish a connection. */
++struct ip_conntrack_tuple
++{
++ struct ip_conntrack_manip src;
++
++ /* These are the parts of the tuple which are fixed. */
++ struct {
++ u_int32_t ip;
++ union {
++ /* Add other protocols here. */
++ u_int16_t all;
++
++ struct {
++ u_int16_t port;
++ } tcp;
++ struct {
++ u_int16_t port;
++ } udp;
++ struct {
++ u_int8_t type, code;
++ } icmp;
++ } u;
++
++ /* The protocol. */
++ u_int16_t protonum;
++ } dst;
++};
++
++/* This is optimized opposed to a memset of the whole structure. Everything we
++ * really care about is the source/destination unions */
++#define IP_CT_TUPLE_U_BLANK(tuple) \
++ do { \
++ (tuple)->src.u.all = 0; \
++ (tuple)->dst.u.all = 0; \
++ } while (0)
++
++enum ip_conntrack_dir
++{
++ IP_CT_DIR_ORIGINAL,
++ IP_CT_DIR_REPLY,
++ IP_CT_DIR_MAX
++};
++
++#ifdef __KERNEL__
++
++#define DUMP_TUPLE(tp) \
++DEBUGP("tuple %p: %u %u.%u.%u.%u:%hu -> %u.%u.%u.%u:%hu\n", \
++ (tp), (tp)->dst.protonum, \
++ NIPQUAD((tp)->src.ip), ntohs((tp)->src.u.all), \
++ NIPQUAD((tp)->dst.ip), ntohs((tp)->dst.u.all))
++
++#define CTINFO2DIR(ctinfo) ((ctinfo) >= IP_CT_IS_REPLY ? IP_CT_DIR_REPLY : IP_CT_DIR_ORIGINAL)
++
++/* If we're the first tuple, it's the original dir. */
++#define DIRECTION(h) ((enum ip_conntrack_dir)(&(h)->ctrack->tuplehash[1] == (h)))
++
++/* Connections have two entries in the hash table: one for each way */
++struct ip_conntrack_tuple_hash
++{
++ struct list_head list;
++
++ struct ip_conntrack_tuple tuple;
++
++ /* this == &ctrack->tuplehash[DIRECTION(this)]. */
++ struct ip_conntrack *ctrack;
++};
++
++#endif /* __KERNEL__ */
++
++static inline int ip_ct_tuple_src_equal(const struct ip_conntrack_tuple *t1,
++ const struct ip_conntrack_tuple *t2)
++{
++ return t1->src.ip == t2->src.ip
++ && t1->src.u.all == t2->src.u.all;
++}
++
++static inline int ip_ct_tuple_dst_equal(const struct ip_conntrack_tuple *t1,
++ const struct ip_conntrack_tuple *t2)
++{
++ return t1->dst.ip == t2->dst.ip
++ && t1->dst.u.all == t2->dst.u.all
++ && t1->dst.protonum == t2->dst.protonum;
++}
++
++static inline int ip_ct_tuple_equal(const struct ip_conntrack_tuple *t1,
++ const struct ip_conntrack_tuple *t2)
++{
++ return ip_ct_tuple_src_equal(t1, t2) && ip_ct_tuple_dst_equal(t1, t2);
++}
++
++static inline int ip_ct_tuple_mask_cmp(const struct ip_conntrack_tuple *t,
++ const struct ip_conntrack_tuple *tuple,
++ const struct ip_conntrack_tuple *mask)
++{
++ return !(((t->src.ip ^ tuple->src.ip) & mask->src.ip)
++ || ((t->dst.ip ^ tuple->dst.ip) & mask->dst.ip)
++ || ((t->src.u.all ^ tuple->src.u.all) & mask->src.u.all)
++ || ((t->dst.u.all ^ tuple->dst.u.all) & mask->dst.u.all)
++ || ((t->dst.protonum ^ tuple->dst.protonum)
++ & mask->dst.protonum));
++}
++
++#endif /* _IP_CONNTRACK_TUPLE_H */
+diff -uNr linux_org/include/linux/netfilter_ipv4/ip_nat_pptp.h linux/include/linux/netfilter_ipv4/ip_nat_pptp.h
+--- linux_org/include/linux/netfilter_ipv4/ip_nat_pptp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux/include/linux/netfilter_ipv4/ip_nat_pptp.h 2006-10-27 14:11:52.000000000 +0200
+@@ -0,0 +1,11 @@
++/* PPTP constants and structs */
++#ifndef _NAT_PPTP_H
++#define _NAT_PPTP_H
++
++/* conntrack private data */
++struct ip_nat_pptp {
++ u_int16_t pns_call_id; /* NAT'ed PNS call id */
++ u_int16_t pac_call_id; /* NAT'ed PAC call id */
++};
++
++#endif /* _NAT_PPTP_H */
+diff -uNr linux_org/net/ipv4/netfilter/Config.in linux/net/ipv4/netfilter/Config.in
+--- linux_org/net/ipv4/netfilter/Config.in 2003-08-13 19:19:30.000000000 +0200
++++ linux/net/ipv4/netfilter/Config.in 2006-10-27 14:11:52.000000000 +0200
+@@ -7,6 +7,11 @@
+ tristate 'Connection tracking (required for masq/NAT)' CONFIG_IP_NF_CONNTRACK
+ if [ "$CONFIG_IP_NF_CONNTRACK" != "n" ]; then
+ dep_tristate ' FTP protocol support' CONFIG_IP_NF_FTP $CONFIG_IP_NF_CONNTRACK
++ dep_tristate ' GRE protocol support' CONFIG_IP_NF_CT_PROTO_GRE $CONFIG_IP_NF_CONNTRACK
++ dep_tristate ' PPTP protocol support' CONFIG_IP_NF_PPTP $CONFIG_IP_NF_CONNTRACK
++ if [ "$CONFIG_IP_NF_PPTP" != "n" ]; then
++ bool ' PPTP verbose debug' CONFIG_IP_NF_PPTP_DEBUG
++ fi
+ dep_tristate ' Amanda protocol support' CONFIG_IP_NF_AMANDA $CONFIG_IP_NF_CONNTRACK
+ dep_tristate ' TFTP protocol support' CONFIG_IP_NF_TFTP $CONFIG_IP_NF_CONNTRACK
+ dep_tristate ' IRC protocol support' CONFIG_IP_NF_IRC $CONFIG_IP_NF_CONNTRACK
+@@ -67,6 +72,20 @@
+ fi
+ fi
+ bool ' NAT of local connections (READ HELP)' CONFIG_IP_NF_NAT_LOCAL
++ if [ "$CONFIG_IP_NF_PPTP" = "m" ]; then
++ define_tristate CONFIG_IP_NF_NAT_PPTP m
++ else
++ if [ "$CONFIG_IP_NF_PPTP" = "y" ]; then
++ define_tristate CONFIG_IP_NF_NAT_PPTP $CONFIG_IP_NF_NAT
++ fi
++ fi
++ if [ "$CONFIG_IP_NF_CT_PROTO_GRE" = "m" ]; then
++ define_tristate CONFIG_IP_NF_NAT_PROTO_GRE m
++ else
++ if [ "$CONFIG_IP_NF_CT_PROTO_GRE" = "y" ]; then
++ define_tristate CONFIG_IP_NF_NAT_PROTO_GRE $CONFIG_IP_NF_NAT
++ fi
++ fi
+ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
+ dep_tristate ' Basic SNMP-ALG support (EXPERIMENTAL)' CONFIG_IP_NF_NAT_SNMP_BASIC $CONFIG_IP_NF_NAT
+ fi
+diff -uNr linux_org/net/ipv4/netfilter/Makefile linux/net/ipv4/netfilter/Makefile
+--- linux_org/net/ipv4/netfilter/Makefile 2003-08-13 19:19:30.000000000 +0200
++++ linux/net/ipv4/netfilter/Makefile 2006-10-27 14:11:52.000000000 +0200
+@@ -30,8 +30,21 @@
+
+ # connection tracking
+ obj-$(CONFIG_IP_NF_CONNTRACK) += ip_conntrack.o
++
++# connection tracking protocol helpers
++obj-$(CONFIG_IP_NF_CT_PROTO_GRE) += ip_conntrack_proto_gre.o
++ifdef CONFIG_IP_NF_CT_PROTO_GRE
++ export-objs += ip_conntrack_proto_gre.o
++endif
++
++# NAT protocol helpers
++obj-$(CONFIG_IP_NF_NAT_PROTO_GRE) += ip_nat_proto_gre.o
+
+ # connection tracking helpers
++obj-$(CONFIG_IP_NF_PPTP) += ip_conntrack_pptp.o
++ifdef CONFIG_IP_NF_NAT_PPTP
++ export-objs += ip_conntrack_pptp.o
++endif
+ obj-$(CONFIG_IP_NF_AMANDA) += ip_conntrack_amanda.o
+ ifdef CONFIG_IP_NF_AMANDA
+ export-objs += ip_conntrack_amanda.o
+@@ -49,6 +62,7 @@
+ endif
+
+ # NAT helpers
++obj-$(CONFIG_IP_NF_NAT_PPTP) += ip_nat_pptp.o
+ obj-$(CONFIG_IP_NF_NAT_AMANDA) += ip_nat_amanda.o
+ obj-$(CONFIG_IP_NF_NAT_TFTP) += ip_nat_tftp.o
+ obj-$(CONFIG_IP_NF_NAT_FTP) += ip_nat_ftp.o
+diff -uNr linux_org/net/ipv4/netfilter/ip_conntrack_core.c linux/net/ipv4/netfilter/ip_conntrack_core.c
+--- linux_org/net/ipv4/netfilter/ip_conntrack_core.c 2004-11-24 12:14:04.000000000 +0100
++++ linux/net/ipv4/netfilter/ip_conntrack_core.c 2006-10-27 14:11:52.000000000 +0200
+@@ -142,6 +142,8 @@
+ tuple->dst.ip = iph->daddr;
+ tuple->dst.protonum = iph->protocol;
+
++ tuple->src.u.all = tuple->dst.u.all = 0;
++
+ ret = protocol->pkt_to_tuple((u_int32_t *)iph + iph->ihl,
+ len - 4*iph->ihl,
+ tuple);
+@@ -157,6 +159,8 @@
+ inverse->dst.ip = orig->src.ip;
+ inverse->dst.protonum = orig->dst.protonum;
+
++ inverse->src.u.all = inverse->dst.u.all = 0;
++
+ return protocol->invert_tuple(inverse, orig);
+ }
+
+@@ -945,8 +949,8 @@
+ * so there is no need to use the tuple lock too */
+
+ DEBUGP("ip_conntrack_expect_related %p\n", related_to);
+- DEBUGP("tuple: "); DUMP_TUPLE(&expect->tuple);
+- DEBUGP("mask: "); DUMP_TUPLE(&expect->mask);
++ DEBUGP("tuple: "); DUMP_TUPLE_RAW(&expect->tuple);
++ DEBUGP("mask: "); DUMP_TUPLE_RAW(&expect->mask);
+
+ old = LIST_FIND(&ip_conntrack_expect_list, resent_expect,
+ struct ip_conntrack_expect *, &expect->tuple,
+@@ -1063,15 +1067,14 @@
+
+ MUST_BE_READ_LOCKED(&ip_conntrack_lock);
+ WRITE_LOCK(&ip_conntrack_expect_tuple_lock);
+-
+ DEBUGP("change_expect:\n");
+- DEBUGP("exp tuple: "); DUMP_TUPLE(&expect->tuple);
+- DEBUGP("exp mask: "); DUMP_TUPLE(&expect->mask);
+- DEBUGP("newtuple: "); DUMP_TUPLE(newtuple);
++ DEBUGP("exp tuple: "); DUMP_TUPLE_RAW(&expect->tuple);
++ DEBUGP("exp mask: "); DUMP_TUPLE_RAW(&expect->mask);
++ DEBUGP("newtuple: "); DUMP_TUPLE_RAW(newtuple);
+ if (expect->ct_tuple.dst.protonum == 0) {
+ /* Never seen before */
+ DEBUGP("change expect: never seen before\n");
+- if (!ip_ct_tuple_equal(&expect->tuple, newtuple)
++ if (!ip_ct_tuple_mask_cmp(&expect->tuple, newtuple, &expect->mask)
+ && LIST_FIND(&ip_conntrack_expect_list, expect_clash,
+ struct ip_conntrack_expect *, newtuple, &expect->mask)) {
+ /* Force NAT to find an unused tuple */
+diff -uNr linux_org/net/ipv4/netfilter/ip_conntrack_core.c.orig linux/net/ipv4/netfilter/ip_conntrack_core.c.orig
+--- linux_org/net/ipv4/netfilter/ip_conntrack_core.c.orig 1970-01-01 01:00:00.000000000 +0100
++++ linux/net/ipv4/netfilter/ip_conntrack_core.c.orig 2004-11-24 12:14:04.000000000 +0100
+@@ -0,0 +1,1446 @@
++/* Connection state tracking for netfilter. This is separated from,
++ but required by, the NAT layer; it can also be used by an iptables
++ extension. */
++
++/* (c) 1999 Paul `Rusty' Russell. Licenced under the GNU General
++ * Public Licence.
++ *
++ * 23 Apr 2001: Harald Welte <laforge@gnumonks.org>
++ * - new API and handling of conntrack/nat helpers
++ * - now capable of multiple expectations for one master
++ * 16 Jul 2002: Harald Welte <laforge@gnumonks.org>
++ * - add usage/reference counts to ip_conntrack_expect
++ * - export ip_conntrack[_expect]_{find_get,put} functions
++ * */
++
++#include <linux/version.h>
++#include <linux/config.h>
++#include <linux/types.h>
++#include <linux/ip.h>
++#include <linux/netfilter.h>
++#include <linux/netfilter_ipv4.h>
++#include <linux/module.h>
++#include <linux/skbuff.h>
++#include <linux/proc_fs.h>
++#include <linux/vmalloc.h>
++#include <linux/brlock.h>
++#include <net/checksum.h>
++#include <linux/stddef.h>
++#include <linux/sysctl.h>
++#include <linux/slab.h>
++#include <linux/random.h>
++#include <linux/jhash.h>
++/* For ERR_PTR(). Yeah, I know... --RR */
++#include <linux/fs.h>
++
++/* This rwlock protects the main hash table, protocol/helper/expected
++ registrations, conntrack timers*/
++#define ASSERT_READ_LOCK(x) MUST_BE_READ_LOCKED(&ip_conntrack_lock)
++#define ASSERT_WRITE_LOCK(x) MUST_BE_WRITE_LOCKED(&ip_conntrack_lock)
++
++#include <linux/netfilter_ipv4/ip_conntrack.h>
++#include <linux/netfilter_ipv4/ip_conntrack_protocol.h>
++#include <linux/netfilter_ipv4/ip_conntrack_helper.h>
++#include <linux/netfilter_ipv4/ip_conntrack_core.h>
++#include <linux/netfilter_ipv4/listhelp.h>
++
++#define IP_CONNTRACK_VERSION "2.1"
++
++#if 0
++#define DEBUGP printk
++#else
++#define DEBUGP(format, args...)
++#endif
++
++DECLARE_RWLOCK(ip_conntrack_lock);
++DECLARE_RWLOCK(ip_conntrack_expect_tuple_lock);
++
++void (*ip_conntrack_destroyed)(struct ip_conntrack *conntrack) = NULL;
++LIST_HEAD(ip_conntrack_expect_list);
++LIST_HEAD(protocol_list);
++static LIST_HEAD(helpers);
++unsigned int ip_conntrack_htable_size = 0;
++int ip_conntrack_max = 0;
++static atomic_t ip_conntrack_count = ATOMIC_INIT(0);
++struct list_head *ip_conntrack_hash;
++static kmem_cache_t *ip_conntrack_cachep;
++
++extern struct ip_conntrack_protocol ip_conntrack_generic_protocol;
++
++static inline int proto_cmpfn(const struct ip_conntrack_protocol *curr,
++ u_int8_t protocol)
++{
++ return protocol == curr->proto;
++}
++
++struct ip_conntrack_protocol *__ip_ct_find_proto(u_int8_t protocol)
++{
++ struct ip_conntrack_protocol *p;
++
++ MUST_BE_READ_LOCKED(&ip_conntrack_lock);
++ p = LIST_FIND(&protocol_list, proto_cmpfn,
++ struct ip_conntrack_protocol *, protocol);
++ if (!p)
++ p = &ip_conntrack_generic_protocol;
++
++ return p;
++}
++
++struct ip_conntrack_protocol *ip_ct_find_proto(u_int8_t protocol)
++{
++ struct ip_conntrack_protocol *p;
++
++ READ_LOCK(&ip_conntrack_lock);
++ p = __ip_ct_find_proto(protocol);
++ READ_UNLOCK(&ip_conntrack_lock);
++ return p;
++}
++
++inline void
++ip_conntrack_put(struct ip_conntrack *ct)
++{
++ IP_NF_ASSERT(ct);
++ IP_NF_ASSERT(ct->infos[0].master);
++ /* nf_conntrack_put wants to go via an info struct, so feed it
++ one at random. */
++ nf_conntrack_put(&ct->infos[0]);
++}
++
++static int ip_conntrack_hash_rnd_initted;
++static unsigned int ip_conntrack_hash_rnd;
++
++static u_int32_t
++hash_conntrack(const struct ip_conntrack_tuple *tuple)
++{
++#if 0
++ dump_tuple(tuple);
++#endif
++ return (jhash_3words(tuple->src.ip,
++ (tuple->dst.ip ^ tuple->dst.protonum),
++ (tuple->src.u.all | (tuple->dst.u.all << 16)),
++ ip_conntrack_hash_rnd) % ip_conntrack_htable_size);
++}
++
++inline int
++get_tuple(const struct iphdr *iph, size_t len,
++ struct ip_conntrack_tuple *tuple,
++ struct ip_conntrack_protocol *protocol)
++{
++ int ret;
++
++ /* Never happen */
++ if (iph->frag_off & htons(IP_OFFSET)) {
++ printk("ip_conntrack_core: Frag of proto %u.\n",
++ iph->protocol);
++ return 0;
++ }
++ /* Guarantee 8 protocol bytes: if more wanted, use len param */
++ else if (iph->ihl * 4 + 8 > len)
++ return 0;
++
++ tuple->src.ip = iph->saddr;
++ tuple->dst.ip = iph->daddr;
++ tuple->dst.protonum = iph->protocol;
++
++ ret = protocol->pkt_to_tuple((u_int32_t *)iph + iph->ihl,
++ len - 4*iph->ihl,
++ tuple);
++ return ret;
++}
++
++static int
++invert_tuple(struct ip_conntrack_tuple *inverse,
++ const struct ip_conntrack_tuple *orig,
++ const struct ip_conntrack_protocol *protocol)
++{
++ inverse->src.ip = orig->dst.ip;
++ inverse->dst.ip = orig->src.ip;
++ inverse->dst.protonum = orig->dst.protonum;
++
++ return protocol->invert_tuple(inverse, orig);
++}
++
++
++/* ip_conntrack_expect helper functions */
++
++/* Compare tuple parts depending on mask. */
++static inline int expect_cmp(const struct ip_conntrack_expect *i,
++ const struct ip_conntrack_tuple *tuple)
++{
++ MUST_BE_READ_LOCKED(&ip_conntrack_expect_tuple_lock);
++ return ip_ct_tuple_mask_cmp(tuple, &i->tuple, &i->mask);
++}
++
++static void
++destroy_expect(struct ip_conntrack_expect *exp)
++{
++ DEBUGP("destroy_expect(%p) use=%d\n", exp, atomic_read(&exp->use));
++ IP_NF_ASSERT(atomic_read(&exp->use) == 0);
++ IP_NF_ASSERT(!timer_pending(&exp->timeout));
++
++ kfree(exp);
++}
++
++inline void ip_conntrack_expect_put(struct ip_conntrack_expect *exp)
++{
++ IP_NF_ASSERT(exp);
++
++ if (atomic_dec_and_test(&exp->use)) {
++ /* usage count dropped to zero */
++ destroy_expect(exp);
++ }
++}
++
++static inline struct ip_conntrack_expect *
++__ip_ct_expect_find(const struct ip_conntrack_tuple *tuple)
++{
++ MUST_BE_READ_LOCKED(&ip_conntrack_lock);
++ MUST_BE_READ_LOCKED(&ip_conntrack_expect_tuple_lock);
++ return LIST_FIND(&ip_conntrack_expect_list, expect_cmp,
++ struct ip_conntrack_expect *, tuple);
++}
++
++/* Find a expectation corresponding to a tuple. */
++struct ip_conntrack_expect *
++ip_conntrack_expect_find_get(const struct ip_conntrack_tuple *tuple)
++{
++ struct ip_conntrack_expect *exp;
++
++ READ_LOCK(&ip_conntrack_lock);
++ READ_LOCK(&ip_conntrack_expect_tuple_lock);
++ exp = __ip_ct_expect_find(tuple);
++ if (exp)
++ atomic_inc(&exp->use);
++ READ_UNLOCK(&ip_conntrack_expect_tuple_lock);
++ READ_UNLOCK(&ip_conntrack_lock);
++
++ return exp;
++}
++
++/* remove one specific expectation from all lists and drop refcount,
++ * does _NOT_ delete the timer. */
++static void __unexpect_related(struct ip_conntrack_expect *expect)
++{
++ DEBUGP("unexpect_related(%p)\n", expect);
++ MUST_BE_WRITE_LOCKED(&ip_conntrack_lock);
++
++ /* we're not allowed to unexpect a confirmed expectation! */
++ IP_NF_ASSERT(!expect->sibling);
++
++ /* delete from global and local lists */
++ list_del(&expect->list);
++ list_del(&expect->expected_list);
++
++ /* decrement expect-count of master conntrack */
++ if (expect->expectant)
++ expect->expectant->expecting--;
++
++ ip_conntrack_expect_put(expect);
++}
++
++/* remove one specific expecatation from all lists, drop refcount
++ * and expire timer.
++ * This function can _NOT_ be called for confirmed expects! */
++static void unexpect_related(struct ip_conntrack_expect *expect)
++{
++ IP_NF_ASSERT(expect->expectant);
++ IP_NF_ASSERT(expect->expectant->helper);
++ /* if we are supposed to have a timer, but we can't delete
++ * it: race condition. __unexpect_related will
++ * be calledd by timeout function */
++ if (expect->expectant->helper->timeout
++ && !del_timer(&expect->timeout))
++ return;
++
++ __unexpect_related(expect);
++}
++
++/* delete all unconfirmed expectations for this conntrack */
++static void remove_expectations(struct ip_conntrack *ct, int drop_refcount)
++{
++ struct list_head *exp_entry, *next;
++ struct ip_conntrack_expect *exp;
++
++ DEBUGP("remove_expectations(%p)\n", ct);
++
++ list_for_each_safe(exp_entry, next, &ct->sibling_list) {
++ exp = list_entry(exp_entry, struct ip_conntrack_expect,
++ expected_list);
++
++ /* we skip established expectations, as we want to delete
++ * the un-established ones only */
++ if (exp->sibling) {
++ DEBUGP("remove_expectations: skipping established %p of %p\n", exp->sibling, ct);
++ if (drop_refcount) {
++ /* Indicate that this expectations parent is dead */
++ ip_conntrack_put(exp->expectant);
++ exp->expectant = NULL;
++ }
++ continue;
++ }
++
++ IP_NF_ASSERT(list_inlist(&ip_conntrack_expect_list, exp));
++ IP_NF_ASSERT(exp->expectant == ct);
++
++ /* delete expectation from global and private lists */
++ unexpect_related(exp);
++ }
++}
++
++static void
++clean_from_lists(struct ip_conntrack *ct)
++{
++ unsigned int ho, hr;
++
++ DEBUGP("clean_from_lists(%p)\n", ct);
++ MUST_BE_WRITE_LOCKED(&ip_conntrack_lock);
++
++ ho = hash_conntrack(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
++ hr = hash_conntrack(&ct->tuplehash[IP_CT_DIR_REPLY].tuple);
++ LIST_DELETE(&ip_conntrack_hash[ho], &ct->tuplehash[IP_CT_DIR_ORIGINAL]);
++ LIST_DELETE(&ip_conntrack_hash[hr], &ct->tuplehash[IP_CT_DIR_REPLY]);
++
++ /* Destroy all un-established, pending expectations */
++ remove_expectations(ct, 1);
++}
++
++static void
++destroy_conntrack(struct nf_conntrack *nfct)
++{
++ struct ip_conntrack *ct = (struct ip_conntrack *)nfct, *master = NULL;
++ struct ip_conntrack_protocol *proto;
++
++ DEBUGP("destroy_conntrack(%p)\n", ct);
++ IP_NF_ASSERT(atomic_read(&nfct->use) == 0);
++ IP_NF_ASSERT(!timer_pending(&ct->timeout));
++
++ /* To make sure we don't get any weird locking issues here:
++ * destroy_conntrack() MUST NOT be called with a write lock
++ * to ip_conntrack_lock!!! -HW */
++ proto = ip_ct_find_proto(ct->tuplehash[IP_CT_DIR_REPLY].tuple.dst.protonum);
++ if (proto && proto->destroy)
++ proto->destroy(ct);
++
++ if (ip_conntrack_destroyed)
++ ip_conntrack_destroyed(ct);
++
++ WRITE_LOCK(&ip_conntrack_lock);
++ /* Make sure don't leave any orphaned expectations lying around */
++ if (ct->expecting)
++ remove_expectations(ct, 1);
++
++ /* Delete our master expectation */
++ if (ct->master) {
++ if (ct->master->expectant) {
++ /* can't call __unexpect_related here,
++ * since it would screw up expect_list */
++ list_del(&ct->master->expected_list);
++ master = ct->master->expectant;
++ }
++ kfree(ct->master);
++ }
++ WRITE_UNLOCK(&ip_conntrack_lock);
++
++ if (master)
++ ip_conntrack_put(master);
++
++ DEBUGP("destroy_conntrack: returning ct=%p to slab\n", ct);
++ kmem_cache_free(ip_conntrack_cachep, ct);
++ atomic_dec(&ip_conntrack_count);
++}
++
++static void death_by_timeout(unsigned long ul_conntrack)
++{
++ struct ip_conntrack *ct = (void *)ul_conntrack;
++
++ WRITE_LOCK(&ip_conntrack_lock);
++ clean_from_lists(ct);
++ WRITE_UNLOCK(&ip_conntrack_lock);
++ ip_conntrack_put(ct);
++}
++
++static inline int
++conntrack_tuple_cmp(const struct ip_conntrack_tuple_hash *i,
++ const struct ip_conntrack_tuple *tuple,
++ const struct ip_conntrack *ignored_conntrack)
++{
++ MUST_BE_READ_LOCKED(&ip_conntrack_lock);
++ return i->ctrack != ignored_conntrack
++ && ip_ct_tuple_equal(tuple, &i->tuple);
++}
++
++static struct ip_conntrack_tuple_hash *
++__ip_conntrack_find(const struct ip_conntrack_tuple *tuple,
++ const struct ip_conntrack *ignored_conntrack)
++{
++ struct ip_conntrack_tuple_hash *h;
++ unsigned int hash = hash_conntrack(tuple);
++
++ MUST_BE_READ_LOCKED(&ip_conntrack_lock);
++ h = LIST_FIND(&ip_conntrack_hash[hash],
++ conntrack_tuple_cmp,
++ struct ip_conntrack_tuple_hash *,
++ tuple, ignored_conntrack);
++ return h;
++}
++
++/* Find a connection corresponding to a tuple. */
++struct ip_conntrack_tuple_hash *
++ip_conntrack_find_get(const struct ip_conntrack_tuple *tuple,
++ const struct ip_conntrack *ignored_conntrack)
++{
++ struct ip_conntrack_tuple_hash *h;
++
++ READ_LOCK(&ip_conntrack_lock);
++ h = __ip_conntrack_find(tuple, ignored_conntrack);
++ if (h)
++ atomic_inc(&h->ctrack->ct_general.use);
++ READ_UNLOCK(&ip_conntrack_lock);
++
++ return h;
++}
++
++static inline struct ip_conntrack *
++__ip_conntrack_get(struct nf_ct_info *nfct, enum ip_conntrack_info *ctinfo)
++{
++ struct ip_conntrack *ct
++ = (struct ip_conntrack *)nfct->master;
++
++ /* ctinfo is the index of the nfct inside the conntrack */
++ *ctinfo = nfct - ct->infos;
++ IP_NF_ASSERT(*ctinfo >= 0 && *ctinfo < IP_CT_NUMBER);
++ return ct;
++}
++
++/* Return conntrack and conntrack_info given skb->nfct->master */
++struct ip_conntrack *
++ip_conntrack_get(struct sk_buff *skb, enum ip_conntrack_info *ctinfo)
++{
++ if (skb->nfct)
++ return __ip_conntrack_get(skb->nfct, ctinfo);
++ return NULL;
++}
++
++/* Confirm a connection given skb->nfct; places it in hash table */
++int
++__ip_conntrack_confirm(struct nf_ct_info *nfct)
++{
++ unsigned int hash, repl_hash;
++ struct ip_conntrack *ct;
++ enum ip_conntrack_info ctinfo;
++
++ ct = __ip_conntrack_get(nfct, &ctinfo);
++
++ /* ipt_REJECT uses ip_conntrack_attach to attach related
++ ICMP/TCP RST packets in other direction. Actual packet
++ which created connection will be IP_CT_NEW or for an
++ expected connection, IP_CT_RELATED. */
++ if (CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL)
++ return NF_ACCEPT;
++
++ hash = hash_conntrack(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
++ repl_hash = hash_conntrack(&ct->tuplehash[IP_CT_DIR_REPLY].tuple);
++
++ /* We're not in hash table, and we refuse to set up related
++ connections for unconfirmed conns. But packet copies and
++ REJECT will give spurious warnings here. */
++ /* IP_NF_ASSERT(atomic_read(&ct->ct_general.use) == 1); */
++
++ /* No external references means noone else could have
++ confirmed us. */
++ IP_NF_ASSERT(!is_confirmed(ct));
++ DEBUGP("Confirming conntrack %p\n", ct);
++
++ WRITE_LOCK(&ip_conntrack_lock);
++ /* See if there's one in the list already, including reverse:
++ NAT could have grabbed it without realizing, since we're
++ not in the hash. If there is, we lost race. */
++ if (!LIST_FIND(&ip_conntrack_hash[hash],
++ conntrack_tuple_cmp,
++ struct ip_conntrack_tuple_hash *,
++ &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple, NULL)
++ && !LIST_FIND(&ip_conntrack_hash[repl_hash],
++ conntrack_tuple_cmp,
++ struct ip_conntrack_tuple_hash *,
++ &ct->tuplehash[IP_CT_DIR_REPLY].tuple, NULL)) {
++ list_prepend(&ip_conntrack_hash[hash],
++ &ct->tuplehash[IP_CT_DIR_ORIGINAL]);
++ list_prepend(&ip_conntrack_hash[repl_hash],
++ &ct->tuplehash[IP_CT_DIR_REPLY]);
++ /* Timer relative to confirmation time, not original
++ setting time, otherwise we'd get timer wrap in
++ weird delay cases. */
++ ct->timeout.expires += jiffies;
++ add_timer(&ct->timeout);
++ atomic_inc(&ct->ct_general.use);
++ set_bit(IPS_CONFIRMED_BIT, &ct->status);
++ WRITE_UNLOCK(&ip_conntrack_lock);
++ return NF_ACCEPT;
++ }
++
++ WRITE_UNLOCK(&ip_conntrack_lock);
++ return NF_DROP;
++}
++
++/* Returns true if a connection correspondings to the tuple (required
++ for NAT). */
++int
++ip_conntrack_tuple_taken(const struct ip_conntrack_tuple *tuple,
++ const struct ip_conntrack *ignored_conntrack)
++{
++ struct ip_conntrack_tuple_hash *h;
++
++ READ_LOCK(&ip_conntrack_lock);
++ h = __ip_conntrack_find(tuple, ignored_conntrack);
++ READ_UNLOCK(&ip_conntrack_lock);
++
++ return h != NULL;
++}
++
++/* Returns conntrack if it dealt with ICMP, and filled in skb fields */
++struct ip_conntrack *
++icmp_error_track(struct sk_buff *skb,
++ enum ip_conntrack_info *ctinfo,
++ unsigned int hooknum)
++{
++ const struct iphdr *iph = skb->nh.iph;
++ struct icmphdr *hdr;
++ struct ip_conntrack_tuple innertuple, origtuple;
++ struct iphdr *inner;
++ size_t datalen;
++ struct ip_conntrack_protocol *innerproto;
++ struct ip_conntrack_tuple_hash *h;
++
++ IP_NF_ASSERT(iph->protocol == IPPROTO_ICMP);
++ IP_NF_ASSERT(skb->nfct == NULL);
++
++ hdr = (struct icmphdr *)((u_int32_t *)iph + iph->ihl);
++ inner = (struct iphdr *)(hdr + 1);
++ datalen = skb->len - iph->ihl*4 - sizeof(*hdr);
++
++ if (skb->len < iph->ihl * 4 + sizeof(*hdr) + sizeof(*iph)) {
++ DEBUGP("icmp_error_track: too short\n");
++ return NULL;
++ }
++
++ if (hdr->type != ICMP_DEST_UNREACH
++ && hdr->type != ICMP_SOURCE_QUENCH
++ && hdr->type != ICMP_TIME_EXCEEDED
++ && hdr->type != ICMP_PARAMETERPROB
++ && hdr->type != ICMP_REDIRECT)
++ return NULL;
++
++ /* Ignore ICMP's containing fragments (shouldn't happen) */
++ if (inner->frag_off & htons(IP_OFFSET)) {
++ DEBUGP("icmp_error_track: fragment of proto %u\n",
++ inner->protocol);
++ return NULL;
++ }
++
++ /* Ignore it if the checksum's bogus. */
++ if (ip_compute_csum((unsigned char *)hdr, sizeof(*hdr) + datalen)) {
++ DEBUGP("icmp_error_track: bad csum\n");
++ return NULL;
++ }
++
++ innerproto = ip_ct_find_proto(inner->protocol);
++ /* Are they talking about one of our connections? */
++ if (inner->ihl * 4 + 8 > datalen
++ || !get_tuple(inner, datalen, &origtuple, innerproto)) {
++ DEBUGP("icmp_error: ! get_tuple p=%u (%u*4+%u dlen=%u)\n",
++ inner->protocol, inner->ihl, 8,
++ datalen);
++ return NULL;
++ }
++
++ /* Ordinarily, we'd expect the inverted tupleproto, but it's
++ been preserved inside the ICMP. */
++ if (!invert_tuple(&innertuple, &origtuple, innerproto)) {
++ DEBUGP("icmp_error_track: Can't invert tuple\n");
++ return NULL;
++ }
++
++ *ctinfo = IP_CT_RELATED;
++
++ h = ip_conntrack_find_get(&innertuple, NULL);
++ if (!h) {
++ /* Locally generated ICMPs will match inverted if they
++ haven't been SNAT'ed yet */
++ /* FIXME: NAT code has to handle half-done double NAT --RR */
++ if (hooknum == NF_IP_LOCAL_OUT)
++ h = ip_conntrack_find_get(&origtuple, NULL);
++
++ if (!h) {
++ DEBUGP("icmp_error_track: no match\n");
++ return NULL;
++ }
++ /* Reverse direction from that found */
++ if (DIRECTION(h) != IP_CT_DIR_REPLY)
++ *ctinfo += IP_CT_IS_REPLY;
++ } else {
++ if (DIRECTION(h) == IP_CT_DIR_REPLY)
++ *ctinfo += IP_CT_IS_REPLY;
++ }
++
++ /* Update skb to refer to this connection */
++ skb->nfct = &h->ctrack->infos[*ctinfo];
++ return h->ctrack;
++}
++
++/* There's a small race here where we may free a just-assured
++ connection. Too bad: we're in trouble anyway. */
++static inline int unreplied(const struct ip_conntrack_tuple_hash *i)
++{
++ return !(test_bit(IPS_ASSURED_BIT, &i->ctrack->status));
++}
++
++static int early_drop(struct list_head *chain)
++{
++ /* Traverse backwards: gives us oldest, which is roughly LRU */
++ struct ip_conntrack_tuple_hash *h;
++ int dropped = 0;
++
++ READ_LOCK(&ip_conntrack_lock);
++ h = LIST_FIND_B(chain, unreplied, struct ip_conntrack_tuple_hash *);
++ if (h)
++ atomic_inc(&h->ctrack->ct_general.use);
++ READ_UNLOCK(&ip_conntrack_lock);
++
++ if (!h)
++ return dropped;
++
++ if (del_timer(&h->ctrack->timeout)) {
++ death_by_timeout((unsigned long)h->ctrack);
++ dropped = 1;
++ }
++ ip_conntrack_put(h->ctrack);
++ return dropped;
++}
++
++static inline int helper_cmp(const struct ip_conntrack_helper *i,
++ const struct ip_conntrack_tuple *rtuple)
++{
++ return ip_ct_tuple_mask_cmp(rtuple, &i->tuple, &i->mask);
++}
++
++struct ip_conntrack_helper *ip_ct_find_helper(const struct ip_conntrack_tuple *tuple)
++{
++ return LIST_FIND(&helpers, helper_cmp,
++ struct ip_conntrack_helper *,
++ tuple);
++}
++
++/* Allocate a new conntrack: we return -ENOMEM if classification
++ failed due to stress. Otherwise it really is unclassifiable. */
++static struct ip_conntrack_tuple_hash *
++init_conntrack(const struct ip_conntrack_tuple *tuple,
++ struct ip_conntrack_protocol *protocol,
++ struct sk_buff *skb)
++{
++ struct ip_conntrack *conntrack;
++ struct ip_conntrack_tuple repl_tuple;
++ size_t hash;
++ struct ip_conntrack_expect *expected;
++ int i;
++ static unsigned int drop_next = 0;
++
++ if (!ip_conntrack_hash_rnd_initted) {
++ get_random_bytes(&ip_conntrack_hash_rnd, 4);
++ ip_conntrack_hash_rnd_initted = 1;
++ }
++
++ hash = hash_conntrack(tuple);
++
++ if (ip_conntrack_max &&
++ atomic_read(&ip_conntrack_count) >= ip_conntrack_max) {
++ /* Try dropping from random chain, or else from the
++ chain about to put into (in case they're trying to
++ bomb one hash chain). */
++ unsigned int next = (drop_next++)%ip_conntrack_htable_size;
++
++ if (!early_drop(&ip_conntrack_hash[next])
++ && !early_drop(&ip_conntrack_hash[hash])) {
++ if (net_ratelimit())
++ printk(KERN_WARNING
++ "ip_conntrack: table full, dropping"
++ " packet.\n");
++ return ERR_PTR(-ENOMEM);
++ }
++ }
++
++ if (!invert_tuple(&repl_tuple, tuple, protocol)) {
++ DEBUGP("Can't invert tuple.\n");
++ return NULL;
++ }
++
++ conntrack = kmem_cache_alloc(ip_conntrack_cachep, GFP_ATOMIC);
++ if (!conntrack) {
++ DEBUGP("Can't allocate conntrack.\n");
++ return ERR_PTR(-ENOMEM);
++ }
++
++ memset(conntrack, 0, sizeof(*conntrack));
++ atomic_set(&conntrack->ct_general.use, 1);
++ conntrack->ct_general.destroy = destroy_conntrack;
++ conntrack->tuplehash[IP_CT_DIR_ORIGINAL].tuple = *tuple;
++ conntrack->tuplehash[IP_CT_DIR_ORIGINAL].ctrack = conntrack;
++ conntrack->tuplehash[IP_CT_DIR_REPLY].tuple = repl_tuple;
++ conntrack->tuplehash[IP_CT_DIR_REPLY].ctrack = conntrack;
++ for (i=0; i < IP_CT_NUMBER; i++)
++ conntrack->infos[i].master = &conntrack->ct_general;
++
++ if (!protocol->new(conntrack, skb->nh.iph, skb->len)) {
++ kmem_cache_free(ip_conntrack_cachep, conntrack);
++ return NULL;
++ }
++ /* Don't set timer yet: wait for confirmation */
++ init_timer(&conntrack->timeout);
++ conntrack->timeout.data = (unsigned long)conntrack;
++ conntrack->timeout.function = death_by_timeout;
++
++ INIT_LIST_HEAD(&conntrack->sibling_list);
++
++ WRITE_LOCK(&ip_conntrack_lock);
++ /* Need finding and deleting of expected ONLY if we win race */
++ READ_LOCK(&ip_conntrack_expect_tuple_lock);
++ expected = LIST_FIND(&ip_conntrack_expect_list, expect_cmp,
++ struct ip_conntrack_expect *, tuple);
++ READ_UNLOCK(&ip_conntrack_expect_tuple_lock);
++
++ /* If master is not in hash table yet (ie. packet hasn't left
++ this machine yet), how can other end know about expected?
++ Hence these are not the droids you are looking for (if
++ master ct never got confirmed, we'd hold a reference to it
++ and weird things would happen to future packets). */
++ if (expected && !is_confirmed(expected->expectant))
++ expected = NULL;
++
++ /* Look up the conntrack helper for master connections only */
++ if (!expected)
++ conntrack->helper = ip_ct_find_helper(&repl_tuple);
++
++ /* If the expectation is dying, then this is a looser. */
++ if (expected
++ && expected->expectant->helper->timeout
++ && ! del_timer(&expected->timeout))
++ expected = NULL;
++
++ if (expected) {
++ DEBUGP("conntrack: expectation arrives ct=%p exp=%p\n",
++ conntrack, expected);
++ /* Welcome, Mr. Bond. We've been expecting you... */
++ __set_bit(IPS_EXPECTED_BIT, &conntrack->status);
++ conntrack->master = expected;
++ expected->sibling = conntrack;
++ LIST_DELETE(&ip_conntrack_expect_list, expected);
++ expected->expectant->expecting--;
++ nf_conntrack_get(&master_ct(conntrack)->infos[0]);
++ }
++ atomic_inc(&ip_conntrack_count);
++ WRITE_UNLOCK(&ip_conntrack_lock);
++
++ if (expected && expected->expectfn)
++ expected->expectfn(conntrack);
++ return &conntrack->tuplehash[IP_CT_DIR_ORIGINAL];
++}
++
++/* On success, returns conntrack ptr, sets skb->nfct and ctinfo */
++static inline struct ip_conntrack *
++resolve_normal_ct(struct sk_buff *skb,
++ struct ip_conntrack_protocol *proto,
++ int *set_reply,
++ unsigned int hooknum,
++ enum ip_conntrack_info *ctinfo)
++{
++ struct ip_conntrack_tuple tuple;
++ struct ip_conntrack_tuple_hash *h;
++
++ IP_NF_ASSERT((skb->nh.iph->frag_off & htons(IP_OFFSET)) == 0);
++
++ if (!get_tuple(skb->nh.iph, skb->len, &tuple, proto))
++ return NULL;
++
++ /* look for tuple match */
++ h = ip_conntrack_find_get(&tuple, NULL);
++ if (!h) {
++ h = init_conntrack(&tuple, proto, skb);
++ if (!h)
++ return NULL;
++ if (IS_ERR(h))
++ return (void *)h;
++ }
++
++ /* It exists; we have (non-exclusive) reference. */
++ if (DIRECTION(h) == IP_CT_DIR_REPLY) {
++ *ctinfo = IP_CT_ESTABLISHED + IP_CT_IS_REPLY;
++ /* Please set reply bit if this packet OK */
++ *set_reply = 1;
++ } else {
++ /* Once we've had two way comms, always ESTABLISHED. */
++ if (test_bit(IPS_SEEN_REPLY_BIT, &h->ctrack->status)) {
++ DEBUGP("ip_conntrack_in: normal packet for %p\n",
++ h->ctrack);
++ *ctinfo = IP_CT_ESTABLISHED;
++ } else if (test_bit(IPS_EXPECTED_BIT, &h->ctrack->status)) {
++ DEBUGP("ip_conntrack_in: related packet for %p\n",
++ h->ctrack);
++ *ctinfo = IP_CT_RELATED;
++ } else {
++ DEBUGP("ip_conntrack_in: new packet for %p\n",
++ h->ctrack);
++ *ctinfo = IP_CT_NEW;
++ }
++ *set_reply = 0;
++ }
++ skb->nfct = &h->ctrack->infos[*ctinfo];
++ return h->ctrack;
++}
++
++/* Netfilter hook itself. */
++unsigned int ip_conntrack_in(unsigned int hooknum,
++ struct sk_buff **pskb,
++ const struct net_device *in,
++ const struct net_device *out,
++ int (*okfn)(struct sk_buff *))
++{
++ struct ip_conntrack *ct;
++ enum ip_conntrack_info ctinfo;
++ struct ip_conntrack_protocol *proto;
++ int set_reply;
++ int ret;
++
++ /* FIXME: Do this right please. --RR */
++ (*pskb)->nfcache |= NFC_UNKNOWN;
++
++/* Doesn't cover locally-generated broadcast, so not worth it. */
++#if 0
++ /* Ignore broadcast: no `connection'. */
++ if ((*pskb)->pkt_type == PACKET_BROADCAST) {
++ printk("Broadcast packet!\n");
++ return NF_ACCEPT;
++ } else if (((*pskb)->nh.iph->daddr & htonl(0x000000FF))
++ == htonl(0x000000FF)) {
++ printk("Should bcast: %u.%u.%u.%u->%u.%u.%u.%u (sk=%p, ptype=%u)\n",
++ NIPQUAD((*pskb)->nh.iph->saddr),
++ NIPQUAD((*pskb)->nh.iph->daddr),
++ (*pskb)->sk, (*pskb)->pkt_type);
++ }
++#endif
++
++ /* Previously seen (loopback)? Ignore. Do this before
++ fragment check. */
++ if ((*pskb)->nfct)
++ return NF_ACCEPT;
++
++ /* Gather fragments. */
++ if ((*pskb)->nh.iph->frag_off & htons(IP_MF|IP_OFFSET)) {
++ *pskb = ip_ct_gather_frags(*pskb);
++ if (!*pskb)
++ return NF_STOLEN;
++ }
++
++ proto = ip_ct_find_proto((*pskb)->nh.iph->protocol);
++
++ /* It may be an icmp error... */
++ if ((*pskb)->nh.iph->protocol == IPPROTO_ICMP
++ && icmp_error_track(*pskb, &ctinfo, hooknum))
++ return NF_ACCEPT;
++
++ if (!(ct = resolve_normal_ct(*pskb, proto,&set_reply,hooknum,&ctinfo)))
++ /* Not valid part of a connection */
++ return NF_ACCEPT;
++
++ if (IS_ERR(ct))
++ /* Too stressed to deal. */
++ return NF_DROP;
++
++ IP_NF_ASSERT((*pskb)->nfct);
++
++ ret = proto->packet(ct, (*pskb)->nh.iph, (*pskb)->len, ctinfo);
++ if (ret == -1) {
++ /* Invalid */
++ nf_conntrack_put((*pskb)->nfct);
++ (*pskb)->nfct = NULL;
++ return NF_ACCEPT;
++ }
++
++ if (ret != NF_DROP && ct->helper) {
++ ret = ct->helper->help((*pskb)->nh.iph, (*pskb)->len,
++ ct, ctinfo);
++ if (ret == -1) {
++ /* Invalid */
++ nf_conntrack_put((*pskb)->nfct);
++ (*pskb)->nfct = NULL;
++ return NF_ACCEPT;
++ }
++ }
++ if (set_reply)
++ set_bit(IPS_SEEN_REPLY_BIT, &ct->status);
++
++ return ret;
++}
++
++int invert_tuplepr(struct ip_conntrack_tuple *inverse,
++ const struct ip_conntrack_tuple *orig)
++{
++ return invert_tuple(inverse, orig, ip_ct_find_proto(orig->dst.protonum));
++}
++
++static inline int resent_expect(const struct ip_conntrack_expect *i,
++ const struct ip_conntrack_tuple *tuple,
++ const struct ip_conntrack_tuple *mask)
++{
++ DEBUGP("resent_expect\n");
++ DEBUGP(" tuple: "); DUMP_TUPLE(&i->tuple);
++ DEBUGP("ct_tuple: "); DUMP_TUPLE(&i->ct_tuple);
++ DEBUGP("test tuple: "); DUMP_TUPLE(tuple);
++ return (((i->ct_tuple.dst.protonum == 0 && ip_ct_tuple_equal(&i->tuple, tuple))
++ || (i->ct_tuple.dst.protonum && ip_ct_tuple_equal(&i->ct_tuple, tuple)))
++ && ip_ct_tuple_equal(&i->mask, mask));
++}
++
++/* Would two expected things clash? */
++static inline int expect_clash(const struct ip_conntrack_expect *i,
++ const struct ip_conntrack_tuple *tuple,
++ const struct ip_conntrack_tuple *mask)
++{
++ /* Part covered by intersection of masks must be unequal,
++ otherwise they clash */
++ struct ip_conntrack_tuple intersect_mask
++ = { { i->mask.src.ip & mask->src.ip,
++ { i->mask.src.u.all & mask->src.u.all } },
++ { i->mask.dst.ip & mask->dst.ip,
++ { i->mask.dst.u.all & mask->dst.u.all },
++ i->mask.dst.protonum & mask->dst.protonum } };
++
++ return ip_ct_tuple_mask_cmp(&i->tuple, tuple, &intersect_mask);
++}
++
++inline void ip_conntrack_unexpect_related(struct ip_conntrack_expect *expect)
++{
++ WRITE_LOCK(&ip_conntrack_lock);
++ unexpect_related(expect);
++ WRITE_UNLOCK(&ip_conntrack_lock);
++}
++
++static void expectation_timed_out(unsigned long ul_expect)
++{
++ struct ip_conntrack_expect *expect = (void *) ul_expect;
++
++ DEBUGP("expectation %p timed out\n", expect);
++ WRITE_LOCK(&ip_conntrack_lock);
++ __unexpect_related(expect);
++ WRITE_UNLOCK(&ip_conntrack_lock);
++}
++
++/* Add a related connection. */
++int ip_conntrack_expect_related(struct ip_conntrack *related_to,
++ struct ip_conntrack_expect *expect)
++{
++ struct ip_conntrack_expect *old, *new;
++ int ret = 0;
++
++ WRITE_LOCK(&ip_conntrack_lock);
++ /* Because of the write lock, no reader can walk the lists,
++ * so there is no need to use the tuple lock too */
++
++ DEBUGP("ip_conntrack_expect_related %p\n", related_to);
++ DEBUGP("tuple: "); DUMP_TUPLE(&expect->tuple);
++ DEBUGP("mask: "); DUMP_TUPLE(&expect->mask);
++
++ old = LIST_FIND(&ip_conntrack_expect_list, resent_expect,
++ struct ip_conntrack_expect *, &expect->tuple,
++ &expect->mask);
++ if (old) {
++ /* Helper private data may contain offsets but no pointers
++ pointing into the payload - otherwise we should have to copy
++ the data filled out by the helper over the old one */
++ DEBUGP("expect_related: resent packet\n");
++ if (related_to->helper->timeout) {
++ if (!del_timer(&old->timeout)) {
++ /* expectation is dying. Fall through */
++ old = NULL;
++ } else {
++ old->timeout.expires = jiffies +
++ related_to->helper->timeout * HZ;
++ add_timer(&old->timeout);
++ }
++ }
++
++ if (old) {
++ WRITE_UNLOCK(&ip_conntrack_lock);
++ return -EEXIST;
++ }
++ } else if (related_to->helper->max_expected &&
++ related_to->expecting >= related_to->helper->max_expected) {
++ /* old == NULL */
++ if (!(related_to->helper->flags &
++ IP_CT_HELPER_F_REUSE_EXPECT)) {
++ WRITE_UNLOCK(&ip_conntrack_lock);
++ if (net_ratelimit())
++ printk(KERN_WARNING
++ "ip_conntrack: max number of expected "
++ "connections %i of %s reached for "
++ "%u.%u.%u.%u->%u.%u.%u.%u\n",
++ related_to->helper->max_expected,
++ related_to->helper->name,
++ NIPQUAD(related_to->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.ip),
++ NIPQUAD(related_to->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.ip));
++ return -EPERM;
++ }
++ DEBUGP("ip_conntrack: max number of expected "
++ "connections %i of %s reached for "
++ "%u.%u.%u.%u->%u.%u.%u.%u, reusing\n",
++ related_to->helper->max_expected,
++ related_to->helper->name,
++ NIPQUAD(related_to->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.ip),
++ NIPQUAD(related_to->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.ip));
++
++ /* choose the the oldest expectation to evict */
++ list_for_each_entry(old, &related_to->sibling_list,
++ expected_list)
++ if (old->sibling == NULL)
++ break;
++
++ /* We cannot fail since related_to->expecting is the number
++ * of unconfirmed expectations */
++ IP_NF_ASSERT(old && old->sibling == NULL);
++
++ /* newnat14 does not reuse the real allocated memory
++ * structures but rather unexpects the old and
++ * allocates a new. unexpect_related will decrement
++ * related_to->expecting.
++ */
++ unexpect_related(old);
++ ret = -EPERM;
++ } else if (LIST_FIND(&ip_conntrack_expect_list, expect_clash,
++ struct ip_conntrack_expect *, &expect->tuple,
++ &expect->mask)) {
++ WRITE_UNLOCK(&ip_conntrack_lock);
++ DEBUGP("expect_related: busy!\n");
++ return -EBUSY;
++ }
++
++ new = (struct ip_conntrack_expect *)
++ kmalloc(sizeof(struct ip_conntrack_expect), GFP_ATOMIC);
++ if (!new) {
++ WRITE_UNLOCK(&ip_conntrack_lock);
++ DEBUGP("expect_relaed: OOM allocating expect\n");
++ return -ENOMEM;
++ }
++
++ DEBUGP("new expectation %p of conntrack %p\n", new, related_to);
++ memcpy(new, expect, sizeof(*expect));
++ new->expectant = related_to;
++ new->sibling = NULL;
++ atomic_set(&new->use, 1);
++
++ /* add to expected list for this connection */
++ list_add_tail(&new->expected_list, &related_to->sibling_list);
++ /* add to global list of expectations */
++ list_prepend(&ip_conntrack_expect_list, &new->list);
++ /* add and start timer if required */
++ if (related_to->helper->timeout) {
++ init_timer(&new->timeout);
++ new->timeout.data = (unsigned long)new;
++ new->timeout.function = expectation_timed_out;
++ new->timeout.expires = jiffies +
++ related_to->helper->timeout * HZ;
++ add_timer(&new->timeout);
++ }
++ related_to->expecting++;
++
++ WRITE_UNLOCK(&ip_conntrack_lock);
++
++ return ret;
++}
++
++/* Change tuple in an existing expectation */
++int ip_conntrack_change_expect(struct ip_conntrack_expect *expect,
++ struct ip_conntrack_tuple *newtuple)
++{
++ int ret;
++
++ MUST_BE_READ_LOCKED(&ip_conntrack_lock);
++ WRITE_LOCK(&ip_conntrack_expect_tuple_lock);
++
++ DEBUGP("change_expect:\n");
++ DEBUGP("exp tuple: "); DUMP_TUPLE(&expect->tuple);
++ DEBUGP("exp mask: "); DUMP_TUPLE(&expect->mask);
++ DEBUGP("newtuple: "); DUMP_TUPLE(newtuple);
++ if (expect->ct_tuple.dst.protonum == 0) {
++ /* Never seen before */
++ DEBUGP("change expect: never seen before\n");
++ if (!ip_ct_tuple_equal(&expect->tuple, newtuple)
++ && LIST_FIND(&ip_conntrack_expect_list, expect_clash,
++ struct ip_conntrack_expect *, newtuple, &expect->mask)) {
++ /* Force NAT to find an unused tuple */
++ ret = -1;
++ } else {
++ memcpy(&expect->ct_tuple, &expect->tuple, sizeof(expect->tuple));
++ memcpy(&expect->tuple, newtuple, sizeof(expect->tuple));
++ ret = 0;
++ }
++ } else {
++ /* Resent packet */
++ DEBUGP("change expect: resent packet\n");
++ if (ip_ct_tuple_equal(&expect->tuple, newtuple)) {
++ ret = 0;
++ } else {
++ /* Force NAT to choose again the same port */
++ ret = -1;
++ }
++ }
++ WRITE_UNLOCK(&ip_conntrack_expect_tuple_lock);
++
++ return ret;
++}
++
++/* Alter reply tuple (maybe alter helper). If it's already taken,
++ return 0 and don't do alteration. */
++int ip_conntrack_alter_reply(struct ip_conntrack *conntrack,
++ const struct ip_conntrack_tuple *newreply)
++{
++ WRITE_LOCK(&ip_conntrack_lock);
++ if (__ip_conntrack_find(newreply, conntrack)) {
++ WRITE_UNLOCK(&ip_conntrack_lock);
++ return 0;
++ }
++ /* Should be unconfirmed, so not in hash table yet */
++ IP_NF_ASSERT(!is_confirmed(conntrack));
++
++ DEBUGP("Altering reply tuple of %p to ", conntrack);
++ DUMP_TUPLE(newreply);
++
++ conntrack->tuplehash[IP_CT_DIR_REPLY].tuple = *newreply;
++ if (!conntrack->master && list_empty(&conntrack->sibling_list))
++ conntrack->helper = ip_ct_find_helper(newreply);
++ WRITE_UNLOCK(&ip_conntrack_lock);
++
++ return 1;
++}
++
++int ip_conntrack_helper_register(struct ip_conntrack_helper *me)
++{
++ MOD_INC_USE_COUNT;
++
++ WRITE_LOCK(&ip_conntrack_lock);
++ list_prepend(&helpers, me);
++ WRITE_UNLOCK(&ip_conntrack_lock);
++
++ return 0;
++}
++
++static inline int unhelp(struct ip_conntrack_tuple_hash *i,
++ const struct ip_conntrack_helper *me)
++{
++ if (i->ctrack->helper == me) {
++ /* Get rid of any expected. */
++ remove_expectations(i->ctrack, 0);
++ /* And *then* set helper to NULL */
++ i->ctrack->helper = NULL;
++ }
++ return 0;
++}
++
++void ip_conntrack_helper_unregister(struct ip_conntrack_helper *me)
++{
++ unsigned int i;
++
++ /* Need write lock here, to delete helper. */
++ WRITE_LOCK(&ip_conntrack_lock);
++ LIST_DELETE(&helpers, me);
++
++ /* Get rid of expecteds, set helpers to NULL. */
++ for (i = 0; i < ip_conntrack_htable_size; i++)
++ LIST_FIND_W(&ip_conntrack_hash[i], unhelp,
++ struct ip_conntrack_tuple_hash *, me);
++ WRITE_UNLOCK(&ip_conntrack_lock);
++
++ /* Someone could be still looking at the helper in a bh. */
++ br_write_lock_bh(BR_NETPROTO_LOCK);
++ br_write_unlock_bh(BR_NETPROTO_LOCK);
++
++ MOD_DEC_USE_COUNT;
++}
++
++/* Refresh conntrack for this many jiffies. */
++void ip_ct_refresh(struct ip_conntrack *ct, unsigned long extra_jiffies)
++{
++ IP_NF_ASSERT(ct->timeout.data == (unsigned long)ct);
++
++ WRITE_LOCK(&ip_conntrack_lock);
++ /* If not in hash table, timer will not be active yet */
++ if (!is_confirmed(ct))
++ ct->timeout.expires = extra_jiffies;
++ else {
++ /* Need del_timer for race avoidance (may already be dying). */
++ if (del_timer(&ct->timeout)) {
++ ct->timeout.expires = jiffies + extra_jiffies;
++ add_timer(&ct->timeout);
++ }
++ }
++ WRITE_UNLOCK(&ip_conntrack_lock);
++}
++
++/* Returns new sk_buff, or NULL */
++struct sk_buff *
++ip_ct_gather_frags(struct sk_buff *skb)
++{
++ struct sock *sk = skb->sk;
++#ifdef CONFIG_NETFILTER_DEBUG
++ unsigned int olddebug = skb->nf_debug;
++#endif
++ if (sk) {
++ sock_hold(sk);
++ skb_orphan(skb);
++ }
++
++ local_bh_disable();
++ skb = ip_defrag(skb);
++ local_bh_enable();
++
++ if (!skb) {
++ if (sk) sock_put(sk);
++ return skb;
++ } else if (skb_is_nonlinear(skb) && skb_linearize(skb, GFP_ATOMIC) != 0) {
++ kfree_skb(skb);
++ if (sk) sock_put(sk);
++ return NULL;
++ }
++
++ if (sk) {
++ skb_set_owner_w(skb, sk);
++ sock_put(sk);
++ }
++
++ ip_send_check(skb->nh.iph);
++ skb->nfcache |= NFC_ALTERED;
++#ifdef CONFIG_NETFILTER_DEBUG
++ /* Packet path as if nothing had happened. */
++ skb->nf_debug = olddebug;
++#endif
++ return skb;
++}
++
++/* Used by ipt_REJECT. */
++static void ip_conntrack_attach(struct sk_buff *nskb, struct nf_ct_info *nfct)
++{
++ struct ip_conntrack *ct;
++ enum ip_conntrack_info ctinfo;
++
++ ct = __ip_conntrack_get(nfct, &ctinfo);
++
++ /* This ICMP is in reverse direction to the packet which
++ caused it */
++ if (CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL)
++ ctinfo = IP_CT_RELATED + IP_CT_IS_REPLY;
++ else
++ ctinfo = IP_CT_RELATED;
++
++ /* Attach new skbuff, and increment count */
++ nskb->nfct = &ct->infos[ctinfo];
++ atomic_inc(&ct->ct_general.use);
++}
++
++static inline int
++do_kill(const struct ip_conntrack_tuple_hash *i,
++ int (*kill)(const struct ip_conntrack *i, void *data),
++ void *data)
++{
++ return kill(i->ctrack, data);
++}
++
++/* Bring out ya dead! */
++static struct ip_conntrack_tuple_hash *
++get_next_corpse(int (*kill)(const struct ip_conntrack *i, void *data),
++ void *data, unsigned int *bucket)
++{
++ struct ip_conntrack_tuple_hash *h = NULL;
++
++ READ_LOCK(&ip_conntrack_lock);
++ for (; !h && *bucket < ip_conntrack_htable_size; (*bucket)++) {
++ h = LIST_FIND(&ip_conntrack_hash[*bucket], do_kill,
++ struct ip_conntrack_tuple_hash *, kill, data);
++ }
++ if (h)
++ atomic_inc(&h->ctrack->ct_general.use);
++ READ_UNLOCK(&ip_conntrack_lock);
++
++ return h;
++}
++
++void
++ip_ct_selective_cleanup(int (*kill)(const struct ip_conntrack *i, void *data),
++ void *data)
++{
++ struct ip_conntrack_tuple_hash *h;
++ unsigned int bucket = 0;
++
++ while ((h = get_next_corpse(kill, data, &bucket)) != NULL) {
++ /* Time to push up daises... */
++ if (del_timer(&h->ctrack->timeout))
++ death_by_timeout((unsigned long)h->ctrack);
++ /* ... else the timer will get him soon. */
++
++ ip_conntrack_put(h->ctrack);
++ }
++}
++
++/* Fast function for those who don't want to parse /proc (and I don't
++ blame them). */
++/* Reversing the socket's dst/src point of view gives us the reply
++ mapping. */
++static int
++getorigdst(struct sock *sk, int optval, void *user, int *len)
++{
++ struct ip_conntrack_tuple_hash *h;
++ struct ip_conntrack_tuple tuple;
++
++ IP_CT_TUPLE_U_BLANK(&tuple);
++ tuple.src.ip = sk->rcv_saddr;
++ tuple.src.u.tcp.port = sk->sport;
++ tuple.dst.ip = sk->daddr;
++ tuple.dst.u.tcp.port = sk->dport;
++ tuple.dst.protonum = IPPROTO_TCP;
++
++ /* We only do TCP at the moment: is there a better way? */
++ if (strcmp(sk->prot->name, "TCP") != 0) {
++ DEBUGP("SO_ORIGINAL_DST: Not a TCP socket\n");
++ return -ENOPROTOOPT;
++ }
++
++ if ((unsigned int) *len < sizeof(struct sockaddr_in)) {
++ DEBUGP("SO_ORIGINAL_DST: len %u not %u\n",
++ *len, sizeof(struct sockaddr_in));
++ return -EINVAL;
++ }
++
++ h = ip_conntrack_find_get(&tuple, NULL);
++ if (h) {
++ struct sockaddr_in sin;
++
++ sin.sin_family = AF_INET;
++ sin.sin_port = h->ctrack->tuplehash[IP_CT_DIR_ORIGINAL]
++ .tuple.dst.u.tcp.port;
++ sin.sin_addr.s_addr = h->ctrack->tuplehash[IP_CT_DIR_ORIGINAL]
++ .tuple.dst.ip;
++
++ DEBUGP("SO_ORIGINAL_DST: %u.%u.%u.%u %u\n",
++ NIPQUAD(sin.sin_addr.s_addr), ntohs(sin.sin_port));
++ ip_conntrack_put(h->ctrack);
++ if (copy_to_user(user, &sin, sizeof(sin)) != 0)
++ return -EFAULT;
++ else
++ return 0;
++ }
++ DEBUGP("SO_ORIGINAL_DST: Can't find %u.%u.%u.%u/%u-%u.%u.%u.%u/%u.\n",
++ NIPQUAD(tuple.src.ip), ntohs(tuple.src.u.tcp.port),
++ NIPQUAD(tuple.dst.ip), ntohs(tuple.dst.u.tcp.port));
++ return -ENOENT;
++}
++
++static struct nf_sockopt_ops so_getorigdst
++= { { NULL, NULL }, PF_INET,
++ 0, 0, NULL, /* Setsockopts */
++ SO_ORIGINAL_DST, SO_ORIGINAL_DST+1, &getorigdst,
++ 0, NULL };
++
++static int kill_all(const struct ip_conntrack *i, void *data)
++{
++ return 1;
++}
++
++/* Mishearing the voices in his head, our hero wonders how he's
++ supposed to kill the mall. */
++void ip_conntrack_cleanup(void)
++{
++ ip_ct_attach = NULL;
++ /* This makes sure all current packets have passed through
++ netfilter framework. Roll on, two-stage module
++ delete... */
++ br_write_lock_bh(BR_NETPROTO_LOCK);
++ br_write_unlock_bh(BR_NETPROTO_LOCK);
++
++ i_see_dead_people:
++ ip_ct_selective_cleanup(kill_all, NULL);
++ if (atomic_read(&ip_conntrack_count) != 0) {
++ schedule();
++ goto i_see_dead_people;
++ }
++
++ kmem_cache_destroy(ip_conntrack_cachep);
++ vfree(ip_conntrack_hash);
++ nf_unregister_sockopt(&so_getorigdst);
++}
++
++static int hashsize = 0;
++MODULE_PARM(hashsize, "i");
++
++int __init ip_conntrack_init(void)
++{
++ unsigned int i;
++ int ret;
++
++ /* Idea from tcp.c: use 1/16384 of memory. On i386: 32MB
++ * machine has 256 buckets. >= 1GB machines have 8192 buckets. */
++ if (hashsize) {
++ ip_conntrack_htable_size = hashsize;
++ } else {
++ ip_conntrack_htable_size
++ = (((num_physpages << PAGE_SHIFT) / 16384)
++ / sizeof(struct list_head));
++ if (num_physpages > (1024 * 1024 * 1024 / PAGE_SIZE))
++ ip_conntrack_htable_size = 8192;
++ if (ip_conntrack_htable_size < 16)
++ ip_conntrack_htable_size = 16;
++ }
++ ip_conntrack_max = 8 * ip_conntrack_htable_size;
++
++ printk("ip_conntrack version %s (%u buckets, %d max)"
++ " - %Zd bytes per conntrack\n", IP_CONNTRACK_VERSION,
++ ip_conntrack_htable_size, ip_conntrack_max,
++ sizeof(struct ip_conntrack));
++
++ ret = nf_register_sockopt(&so_getorigdst);
++ if (ret != 0) {
++ printk(KERN_ERR "Unable to register netfilter socket option\n");
++ return ret;
++ }
++
++ ip_conntrack_hash = vmalloc(sizeof(struct list_head)
++ * ip_conntrack_htable_size);
++ if (!ip_conntrack_hash) {
++ printk(KERN_ERR "Unable to create ip_conntrack_hash\n");
++ goto err_unreg_sockopt;
++ }
++
++ ip_conntrack_cachep = kmem_cache_create("ip_conntrack",
++ sizeof(struct ip_conntrack), 0,
++ SLAB_HWCACHE_ALIGN, NULL, NULL);
++ if (!ip_conntrack_cachep) {
++ printk(KERN_ERR "Unable to create ip_conntrack slab cache\n");
++ goto err_free_hash;
++ }
++ /* Don't NEED lock here, but good form anyway. */
++ WRITE_LOCK(&ip_conntrack_lock);
++ /* Sew in builtin protocols. */
++ list_append(&protocol_list, &ip_conntrack_protocol_tcp);
++ list_append(&protocol_list, &ip_conntrack_protocol_udp);
++ list_append(&protocol_list, &ip_conntrack_protocol_icmp);
++ WRITE_UNLOCK(&ip_conntrack_lock);
++
++ for (i = 0; i < ip_conntrack_htable_size; i++)
++ INIT_LIST_HEAD(&ip_conntrack_hash[i]);
++
++ /* For use by ipt_REJECT */
++ ip_ct_attach = ip_conntrack_attach;
++ return ret;
++
++err_free_hash:
++ vfree(ip_conntrack_hash);
++err_unreg_sockopt:
++ nf_unregister_sockopt(&so_getorigdst);
++
++ return -ENOMEM;
++}
+diff -uNr linux_org/net/ipv4/netfilter/ip_conntrack_pptp.c linux/net/ipv4/netfilter/ip_conntrack_pptp.c
+--- linux_org/net/ipv4/netfilter/ip_conntrack_pptp.c 1970-01-01 01:00:00.000000000 +0100
++++ linux/net/ipv4/netfilter/ip_conntrack_pptp.c 2006-10-27 14:11:52.000000000 +0200
+@@ -0,0 +1,637 @@
++/*
++ * ip_conntrack_pptp.c - Version 1.9
++ *
++ * Connection tracking support for PPTP (Point to Point Tunneling Protocol).
++ * PPTP is a a protocol for creating virtual private networks.
++ * It is a specification defined by Microsoft and some vendors
++ * working with Microsoft. PPTP is built on top of a modified
++ * version of the Internet Generic Routing Encapsulation Protocol.
++ * GRE is defined in RFC 1701 and RFC 1702. Documentation of
++ * PPTP can be found in RFC 2637
++ *
++ * (C) 2000-2003 by Harald Welte <laforge@gnumonks.org>
++ *
++ * Development of this code funded by Astaro AG (http://www.astaro.com/)
++ *
++ * Limitations:
++ * - We blindly assume that control connections are always
++ * established in PNS->PAC direction. This is a violation
++ * of RFFC2673
++ *
++ * TODO: - finish support for multiple calls within one session
++ * (needs expect reservations in newnat)
++ * - testing of incoming PPTP calls
++ *
++ * Changes:
++ * 2002-02-05 - Version 1.3
++ * - Call ip_conntrack_unexpect_related() from
++ * pptp_timeout_related() to destroy expectations in case
++ * CALL_DISCONNECT_NOTIFY or tcp fin packet was seen
++ * (Philip Craig <philipc@snapgear.com>)
++ * - Add Version information at module loadtime
++ * 2002-02-10 - Version 1.6
++ * - move to C99 style initializers
++ * - remove second expectation if first arrives
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/netfilter.h>
++#include <linux/ip.h>
++#include <net/checksum.h>
++#include <net/tcp.h>
++
++#include <linux/netfilter_ipv4/lockhelp.h>
++#include <linux/netfilter_ipv4/ip_conntrack_helper.h>
++#include <linux/netfilter_ipv4/ip_conntrack_proto_gre.h>
++#include <linux/netfilter_ipv4/ip_conntrack_pptp.h>
++
++#define IP_CT_PPTP_VERSION "1.9"
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>");
++MODULE_DESCRIPTION("Netfilter connection tracking helper module for PPTP");
++
++DECLARE_LOCK(ip_pptp_lock);
++
++#if 0
++#include "ip_conntrack_pptp_priv.h"
++#define DEBUGP(format, args...) printk(KERN_DEBUG __FILE__ ":" __FUNCTION__ \
++ ": " format, ## args)
++#else
++#define DEBUGP(format, args...)
++#endif
++
++#define SECS *HZ
++#define MINS * 60 SECS
++#define HOURS * 60 MINS
++#define DAYS * 24 HOURS
++
++#define PPTP_GRE_TIMEOUT (10 MINS)
++#define PPTP_GRE_STREAM_TIMEOUT (5 DAYS)
++
++static int pptp_expectfn(struct ip_conntrack *ct)
++{
++ struct ip_conntrack *master;
++ struct ip_conntrack_expect *exp;
++
++ DEBUGP("increasing timeouts\n");
++ /* increase timeout of GRE data channel conntrack entry */
++ ct->proto.gre.timeout = PPTP_GRE_TIMEOUT;
++ ct->proto.gre.stream_timeout = PPTP_GRE_STREAM_TIMEOUT;
++
++ master = master_ct(ct);
++ if (!master) {
++ DEBUGP(" no master!!!\n");
++ return 0;
++ }
++
++ exp = ct->master;
++ if (!exp) {
++ DEBUGP("no expectation!!\n");
++ return 0;
++ }
++
++ DEBUGP("completing tuples with ct info\n");
++ /* we can do this, since we're unconfirmed */
++ if (ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u.gre.key ==
++ htonl(master->help.ct_pptp_info.pac_call_id)) {
++ /* assume PNS->PAC */
++ ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u.gre.key =
++ htonl(master->help.ct_pptp_info.pns_call_id);
++ ct->tuplehash[IP_CT_DIR_REPLY].tuple.dst.u.gre.key =
++ htonl(master->help.ct_pptp_info.pns_call_id);
++ } else {
++ /* assume PAC->PNS */
++ ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u.gre.key =
++ htonl(master->help.ct_pptp_info.pac_call_id);
++ ct->tuplehash[IP_CT_DIR_REPLY].tuple.dst.u.gre.key =
++ htonl(master->help.ct_pptp_info.pac_call_id);
++ }
++
++ /* delete other expectation */
++ if (exp->expected_list.next != &exp->expected_list) {
++ struct ip_conntrack_expect *other_exp;
++ struct list_head *cur_item, *next;
++
++ for (cur_item = master->sibling_list.next;
++ cur_item != &master->sibling_list; cur_item = next) {
++ next = cur_item->next;
++ other_exp = list_entry(cur_item,
++ struct ip_conntrack_expect,
++ expected_list);
++ /* remove only if occurred at same sequence number */
++ if (other_exp != exp && other_exp->seq == exp->seq) {
++ DEBUGP("unexpecting other direction\n");
++ ip_ct_gre_keymap_destroy(other_exp);
++ ip_conntrack_unexpect_related(other_exp);
++ }
++ }
++ }
++
++ return 0;
++}
++
++/* timeout GRE data connections */
++static int pptp_timeout_related(struct ip_conntrack *ct)
++{
++ struct list_head *cur_item, *next;
++ struct ip_conntrack_expect *exp;
++
++ /* FIXME: do we have to lock something ? */
++ for (cur_item = ct->sibling_list.next;
++ cur_item != &ct->sibling_list; cur_item = next) {
++ next = cur_item->next;
++ exp = list_entry(cur_item, struct ip_conntrack_expect,
++ expected_list);
++
++ ip_ct_gre_keymap_destroy(exp);
++ if (!exp->sibling) {
++ ip_conntrack_unexpect_related(exp);
++ continue;
++ }
++
++ DEBUGP("setting timeout of conntrack %p to 0\n",
++ exp->sibling);
++ exp->sibling->proto.gre.timeout = 0;
++ exp->sibling->proto.gre.stream_timeout = 0;
++ ip_ct_refresh(exp->sibling, 0);
++ }
++
++ return 0;
++}
++
++/* expect GRE connections (PNS->PAC and PAC->PNS direction) */
++static inline int
++exp_gre(struct ip_conntrack *master,
++ u_int32_t seq,
++ u_int16_t callid,
++ u_int16_t peer_callid)
++{
++ struct ip_conntrack_expect exp;
++ struct ip_conntrack_tuple inv_tuple;
++
++ memset(&exp, 0, sizeof(exp));
++ /* tuple in original direction, PNS->PAC */
++ exp.tuple.src.ip = master->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.ip;
++ exp.tuple.src.u.gre.key = htonl(ntohs(peer_callid));
++ exp.tuple.dst.ip = master->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.ip;
++ exp.tuple.dst.u.gre.key = htonl(ntohs(callid));
++ exp.tuple.dst.u.gre.protocol = __constant_htons(GRE_PROTOCOL_PPTP);
++ exp.tuple.dst.u.gre.version = GRE_VERSION_PPTP;
++ exp.tuple.dst.protonum = IPPROTO_GRE;
++
++ exp.mask.src.ip = 0xffffffff;
++ exp.mask.src.u.all = 0;
++ exp.mask.dst.u.all = 0;
++ exp.mask.dst.u.gre.key = 0xffffffff;
++ exp.mask.dst.u.gre.version = 0xff;
++ exp.mask.dst.u.gre.protocol = 0xffff;
++ exp.mask.dst.ip = 0xffffffff;
++ exp.mask.dst.protonum = 0xffff;
++
++ exp.seq = seq;
++ exp.expectfn = pptp_expectfn;
++
++ exp.help.exp_pptp_info.pac_call_id = ntohs(callid);
++ exp.help.exp_pptp_info.pns_call_id = ntohs(peer_callid);
++
++ DEBUGP("calling expect_related ");
++ DUMP_TUPLE_RAW(&exp.tuple);
++
++ /* Add GRE keymap entries */
++ if (ip_ct_gre_keymap_add(&exp, &exp.tuple, 0) != 0)
++ return 1;
++
++ invert_tuplepr(&inv_tuple, &exp.tuple);
++ if (ip_ct_gre_keymap_add(&exp, &inv_tuple, 1) != 0) {
++ ip_ct_gre_keymap_destroy(&exp);
++ return 1;
++ }
++
++ if (ip_conntrack_expect_related(master, &exp) != 0) {
++ ip_ct_gre_keymap_destroy(&exp);
++ DEBUGP("cannot expect_related()\n");
++ return 1;
++ }
++
++ /* tuple in reply direction, PAC->PNS */
++ exp.tuple.src.ip = master->tuplehash[IP_CT_DIR_REPLY].tuple.src.ip;
++ exp.tuple.src.u.gre.key = htonl(ntohs(callid));
++ exp.tuple.dst.ip = master->tuplehash[IP_CT_DIR_REPLY].tuple.dst.ip;
++ exp.tuple.dst.u.gre.key = htonl(ntohs(peer_callid));
++
++ DEBUGP("calling expect_related ");
++ DUMP_TUPLE_RAW(&exp.tuple);
++
++ /* Add GRE keymap entries */
++ ip_ct_gre_keymap_add(&exp, &exp.tuple, 0);
++ invert_tuplepr(&inv_tuple, &exp.tuple);
++ ip_ct_gre_keymap_add(&exp, &inv_tuple, 1);
++ /* FIXME: cannot handle error correctly, since we need to free
++ * the above keymap :( */
++
++ if (ip_conntrack_expect_related(master, &exp) != 0) {
++ /* free the second pair of keypmaps */
++ ip_ct_gre_keymap_destroy(&exp);
++ DEBUGP("cannot expect_related():\n");
++ return 1;
++ }
++
++ return 0;
++}
++
++static inline int
++pptp_inbound_pkt(struct tcphdr *tcph,
++ struct pptp_pkt_hdr *pptph,
++ size_t datalen,
++ struct ip_conntrack *ct,
++ enum ip_conntrack_info ctinfo)
++{
++ struct PptpControlHeader *ctlh;
++ union pptp_ctrl_union pptpReq;
++
++ struct ip_ct_pptp_master *info = &ct->help.ct_pptp_info;
++ u_int16_t msg, *cid, *pcid;
++ u_int32_t seq;
++
++ ctlh = (struct PptpControlHeader *)
++ ((char *) pptph + sizeof(struct pptp_pkt_hdr));
++ pptpReq.rawreq = (void *)
++ ((char *) ctlh + sizeof(struct PptpControlHeader));
++
++ msg = ntohs(ctlh->messageType);
++ DEBUGP("inbound control message %s\n", strMName[msg]);
++
++ switch (msg) {
++ case PPTP_START_SESSION_REPLY:
++ /* server confirms new control session */
++ if (info->sstate < PPTP_SESSION_REQUESTED) {
++ DEBUGP("%s without START_SESS_REQUEST\n",
++ strMName[msg]);
++ break;
++ }
++ if (pptpReq.srep->resultCode == PPTP_START_OK)
++ info->sstate = PPTP_SESSION_CONFIRMED;
++ else
++ info->sstate = PPTP_SESSION_ERROR;
++ break;
++
++ case PPTP_STOP_SESSION_REPLY:
++ /* server confirms end of control session */
++ if (info->sstate > PPTP_SESSION_STOPREQ) {
++ DEBUGP("%s without STOP_SESS_REQUEST\n",
++ strMName[msg]);
++ break;
++ }
++ if (pptpReq.strep->resultCode == PPTP_STOP_OK)
++ info->sstate = PPTP_SESSION_NONE;
++ else
++ info->sstate = PPTP_SESSION_ERROR;
++ break;
++
++ case PPTP_OUT_CALL_REPLY:
++ /* server accepted call, we now expect GRE frames */
++ if (info->sstate != PPTP_SESSION_CONFIRMED) {
++ DEBUGP("%s but no session\n", strMName[msg]);
++ break;
++ }
++ if (info->cstate != PPTP_CALL_OUT_REQ &&
++ info->cstate != PPTP_CALL_OUT_CONF) {
++ DEBUGP("%s without OUTCALL_REQ\n", strMName[msg]);
++ break;
++ }
++ if (pptpReq.ocack->resultCode != PPTP_OUTCALL_CONNECT) {
++ info->cstate = PPTP_CALL_NONE;
++ break;
++ }
++
++ cid = &pptpReq.ocack->callID;
++ pcid = &pptpReq.ocack->peersCallID;
++
++ info->pac_call_id = ntohs(*cid);
++
++ if (htons(info->pns_call_id) != *pcid) {
++ DEBUGP("%s for unknown callid %u\n",
++ strMName[msg], ntohs(*pcid));
++ break;
++ }
++
++ DEBUGP("%s, CID=%X, PCID=%X\n", strMName[msg],
++ ntohs(*cid), ntohs(*pcid));
++
++ info->cstate = PPTP_CALL_OUT_CONF;
++
++ seq = ntohl(tcph->seq) + ((void *)pcid - (void *)pptph);
++ if (exp_gre(ct, seq, *cid, *pcid) != 0)
++ printk("ip_conntrack_pptp: error during exp_gre\n");
++ break;
++
++ case PPTP_IN_CALL_REQUEST:
++ /* server tells us about incoming call request */
++ if (info->sstate != PPTP_SESSION_CONFIRMED) {
++ DEBUGP("%s but no session\n", strMName[msg]);
++ break;
++ }
++ pcid = &pptpReq.icack->peersCallID;
++ DEBUGP("%s, PCID=%X\n", strMName[msg], ntohs(*pcid));
++ info->cstate = PPTP_CALL_IN_REQ;
++ info->pac_call_id= ntohs(*pcid);
++ break;
++
++ case PPTP_IN_CALL_CONNECT:
++ /* server tells us about incoming call established */
++ if (info->sstate != PPTP_SESSION_CONFIRMED) {
++ DEBUGP("%s but no session\n", strMName[msg]);
++ break;
++ }
++ if (info->sstate != PPTP_CALL_IN_REP
++ && info->sstate != PPTP_CALL_IN_CONF) {
++ DEBUGP("%s but never sent IN_CALL_REPLY\n",
++ strMName[msg]);
++ break;
++ }
++
++ pcid = &pptpReq.iccon->peersCallID;
++ cid = &info->pac_call_id;
++
++ if (info->pns_call_id != ntohs(*pcid)) {
++ DEBUGP("%s for unknown CallID %u\n",
++ strMName[msg], ntohs(*cid));
++ break;
++ }
++
++ DEBUGP("%s, PCID=%X\n", strMName[msg], ntohs(*pcid));
++ info->cstate = PPTP_CALL_IN_CONF;
++
++ /* we expect a GRE connection from PAC to PNS */
++ seq = ntohl(tcph->seq) + ((void *)pcid - (void *)pptph);
++ if (exp_gre(ct, seq, *cid, *pcid) != 0)
++ printk("ip_conntrack_pptp: error during exp_gre\n");
++
++ break;
++
++ case PPTP_CALL_DISCONNECT_NOTIFY:
++ /* server confirms disconnect */
++ cid = &pptpReq.disc->callID;
++ DEBUGP("%s, CID=%X\n", strMName[msg], ntohs(*cid));
++ info->cstate = PPTP_CALL_NONE;
++
++ /* untrack this call id, unexpect GRE packets */
++ pptp_timeout_related(ct);
++ break;
++
++ case PPTP_WAN_ERROR_NOTIFY:
++ break;
++
++ case PPTP_ECHO_REQUEST:
++ case PPTP_ECHO_REPLY:
++ /* I don't have to explain these ;) */
++ break;
++ default:
++ DEBUGP("invalid %s (TY=%d)\n", (msg <= PPTP_MSG_MAX)
++ ? strMName[msg]:strMName[0], msg);
++ break;
++ }
++
++ return NF_ACCEPT;
++
++}
++
++static inline int
++pptp_outbound_pkt(struct tcphdr *tcph,
++ struct pptp_pkt_hdr *pptph,
++ size_t datalen,
++ struct ip_conntrack *ct,
++ enum ip_conntrack_info ctinfo)
++{
++ struct PptpControlHeader *ctlh;
++ union pptp_ctrl_union pptpReq;
++ struct ip_ct_pptp_master *info = &ct->help.ct_pptp_info;
++ u_int16_t msg, *cid, *pcid;
++
++ ctlh = (struct PptpControlHeader *) ((void *) pptph + sizeof(*pptph));
++ pptpReq.rawreq = (void *) ((void *) ctlh + sizeof(*ctlh));
++
++ msg = ntohs(ctlh->messageType);
++ DEBUGP("outbound control message %s\n", strMName[msg]);
++
++ switch (msg) {
++ case PPTP_START_SESSION_REQUEST:
++ /* client requests for new control session */
++ if (info->sstate != PPTP_SESSION_NONE) {
++ DEBUGP("%s but we already have one",
++ strMName[msg]);
++ }
++ info->sstate = PPTP_SESSION_REQUESTED;
++ break;
++ case PPTP_STOP_SESSION_REQUEST:
++ /* client requests end of control session */
++ info->sstate = PPTP_SESSION_STOPREQ;
++ break;
++
++ case PPTP_OUT_CALL_REQUEST:
++ /* client initiating connection to server */
++ if (info->sstate != PPTP_SESSION_CONFIRMED) {
++ DEBUGP("%s but no session\n",
++ strMName[msg]);
++ break;
++ }
++ info->cstate = PPTP_CALL_OUT_REQ;
++ /* track PNS call id */
++ cid = &pptpReq.ocreq->callID;
++ DEBUGP("%s, CID=%X\n", strMName[msg], ntohs(*cid));
++ info->pns_call_id = ntohs(*cid);
++ break;
++ case PPTP_IN_CALL_REPLY:
++ /* client answers incoming call */
++ if (info->cstate != PPTP_CALL_IN_REQ
++ && info->cstate != PPTP_CALL_IN_REP) {
++ DEBUGP("%s without incall_req\n",
++ strMName[msg]);
++ break;
++ }
++ if (pptpReq.icack->resultCode != PPTP_INCALL_ACCEPT) {
++ info->cstate = PPTP_CALL_NONE;
++ break;
++ }
++ pcid = &pptpReq.icack->peersCallID;
++ if (info->pac_call_id != ntohs(*pcid)) {
++ DEBUGP("%s for unknown call %u\n",
++ strMName[msg], ntohs(*pcid));
++ break;
++ }
++ DEBUGP("%s, CID=%X\n", strMName[msg], ntohs(*pcid));
++ /* part two of the three-way handshake */
++ info->cstate = PPTP_CALL_IN_REP;
++ info->pns_call_id = ntohs(pptpReq.icack->callID);
++ break;
++
++ case PPTP_CALL_CLEAR_REQUEST:
++ /* client requests hangup of call */
++ if (info->sstate != PPTP_SESSION_CONFIRMED) {
++ DEBUGP("CLEAR_CALL but no session\n");
++ break;
++ }
++ /* FUTURE: iterate over all calls and check if
++ * call ID is valid. We don't do this without newnat,
++ * because we only know about last call */
++ info->cstate = PPTP_CALL_CLEAR_REQ;
++ break;
++ case PPTP_SET_LINK_INFO:
++ break;
++ case PPTP_ECHO_REQUEST:
++ case PPTP_ECHO_REPLY:
++ /* I don't have to explain these ;) */
++ break;
++ default:
++ DEBUGP("invalid %s (TY=%d)\n", (msg <= PPTP_MSG_MAX)?
++ strMName[msg]:strMName[0], msg);
++ /* unknown: no need to create GRE masq table entry */
++ break;
++ }
++
++ return NF_ACCEPT;
++}
++
++
++/* track caller id inside control connection, call expect_related */
++static int
++conntrack_pptp_help(const struct iphdr *iph, size_t len,
++ struct ip_conntrack *ct, enum ip_conntrack_info ctinfo)
++
++{
++ struct pptp_pkt_hdr *pptph;
++
++ struct tcphdr *tcph = (void *) iph + iph->ihl * 4;
++ u_int32_t tcplen = len - iph->ihl * 4;
++ u_int32_t datalen = tcplen - tcph->doff * 4;
++ void *datalimit;
++ int dir = CTINFO2DIR(ctinfo);
++ struct ip_ct_pptp_master *info = &ct->help.ct_pptp_info;
++
++ int oldsstate, oldcstate;
++ int ret;
++
++ /* don't do any tracking before tcp handshake complete */
++ if (ctinfo != IP_CT_ESTABLISHED
++ && ctinfo != IP_CT_ESTABLISHED+IP_CT_IS_REPLY) {
++ DEBUGP("ctinfo = %u, skipping\n", ctinfo);
++ return NF_ACCEPT;
++ }
++
++ /* not a complete TCP header? */
++ if (tcplen < sizeof(struct tcphdr) || tcplen < tcph->doff * 4) {
++ DEBUGP("tcplen = %u\n", tcplen);
++ return NF_ACCEPT;
++ }
++
++ /* checksum invalid? */
++ if (tcp_v4_check(tcph, tcplen, iph->saddr, iph->daddr,
++ csum_partial((char *) tcph, tcplen, 0))) {
++ printk(KERN_NOTICE __FILE__ ": bad csum\n");
++ /* W2K PPTP server sends TCP packets with wrong checksum :(( */
++ //return NF_ACCEPT;
++ }
++
++ if (tcph->fin || tcph->rst) {
++ DEBUGP("RST/FIN received, timeouting GRE\n");
++ /* can't do this after real newnat */
++ info->cstate = PPTP_CALL_NONE;
++
++ /* untrack this call id, unexpect GRE packets */
++ pptp_timeout_related(ct);
++ }
++
++
++ pptph = (struct pptp_pkt_hdr *) ((void *) tcph + tcph->doff * 4);
++ datalimit = (void *) pptph + datalen;
++
++ /* not a full pptp packet header? */
++ if ((void *) pptph+sizeof(*pptph) >= datalimit) {
++ DEBUGP("no full PPTP header, can't track\n");
++ return NF_ACCEPT;
++ }
++
++ /* if it's not a control message we can't do anything with it */
++ if (ntohs(pptph->packetType) != PPTP_PACKET_CONTROL ||
++ ntohl(pptph->magicCookie) != PPTP_MAGIC_COOKIE) {
++ DEBUGP("not a control packet\n");
++ return NF_ACCEPT;
++ }
++
++ oldsstate = info->sstate;
++ oldcstate = info->cstate;
++
++ LOCK_BH(&ip_pptp_lock);
++
++ /* FIXME: We just blindly assume that the control connection is always
++ * established from PNS->PAC. However, RFC makes no guarantee */
++ if (dir == IP_CT_DIR_ORIGINAL)
++ /* client -> server (PNS -> PAC) */
++ ret = pptp_outbound_pkt(tcph, pptph, datalen, ct, ctinfo);
++ else
++ /* server -> client (PAC -> PNS) */
++ ret = pptp_inbound_pkt(tcph, pptph, datalen, ct, ctinfo);
++ DEBUGP("sstate: %d->%d, cstate: %d->%d\n",
++ oldsstate, info->sstate, oldcstate, info->cstate);
++ UNLOCK_BH(&ip_pptp_lock);
++
++ return ret;
++}
++
++/* control protocol helper */
++static struct ip_conntrack_helper pptp = {
++ .list = { NULL, NULL },
++ .name = "pptp",
++ .flags = IP_CT_HELPER_F_REUSE_EXPECT,
++ .me = THIS_MODULE,
++ .max_expected = 2,
++ .timeout = 0,
++ .tuple = { .src = { .ip = 0,
++ .u = { .tcp = { .port =
++ __constant_htons(PPTP_CONTROL_PORT) } }
++ },
++ .dst = { .ip = 0,
++ .u = { .all = 0 },
++ .protonum = IPPROTO_TCP
++ }
++ },
++ .mask = { .src = { .ip = 0,
++ .u = { .tcp = { .port = 0xffff } }
++ },
++ .dst = { .ip = 0,
++ .u = { .all = 0 },
++ .protonum = 0xffff
++ }
++ },
++ .help = conntrack_pptp_help
++};
++
++/* ip_conntrack_pptp initialization */
++static int __init init(void)
++{
++ int retcode;
++
++ DEBUGP(__FILE__ ": registering helper\n");
++ if ((retcode = ip_conntrack_helper_register(&pptp))) {
++ printk(KERN_ERR "Unable to register conntrack application "
++ "helper for pptp: %d\n", retcode);
++ return -EIO;
++ }
++
++ printk("ip_conntrack_pptp version %s loaded\n", IP_CT_PPTP_VERSION);
++ return 0;
++}
++
++static void __exit fini(void)
++{
++ ip_conntrack_helper_unregister(&pptp);
++ printk("ip_conntrack_pptp version %s unloaded\n", IP_CT_PPTP_VERSION);
++}
++
++module_init(init);
++module_exit(fini);
++
++EXPORT_SYMBOL(ip_pptp_lock);
+diff -uNr linux_org/net/ipv4/netfilter/ip_conntrack_pptp_priv.h linux/net/ipv4/netfilter/ip_conntrack_pptp_priv.h
+--- linux_org/net/ipv4/netfilter/ip_conntrack_pptp_priv.h 1970-01-01 01:00:00.000000000 +0100
++++ linux/net/ipv4/netfilter/ip_conntrack_pptp_priv.h 2006-10-27 14:11:52.000000000 +0200
+@@ -0,0 +1,24 @@
++#ifndef _IP_CT_PPTP_PRIV_H
++#define _IP_CT_PPTP_PRIV_H
++
++/* PptpControlMessageType names */
++static const char *strMName[] = {
++ "UNKNOWN_MESSAGE",
++ "START_SESSION_REQUEST",
++ "START_SESSION_REPLY",
++ "STOP_SESSION_REQUEST",
++ "STOP_SESSION_REPLY",
++ "ECHO_REQUEST",
++ "ECHO_REPLY",
++ "OUT_CALL_REQUEST",
++ "OUT_CALL_REPLY",
++ "IN_CALL_REQUEST",
++ "IN_CALL_REPLY",
++ "IN_CALL_CONNECT",
++ "CALL_CLEAR_REQUEST",
++ "CALL_DISCONNECT_NOTIFY",
++ "WAN_ERROR_NOTIFY",
++ "SET_LINK_INFO"
++};
++
++#endif
+diff -uNr linux_org/net/ipv4/netfilter/ip_conntrack_proto_gre.c linux/net/ipv4/netfilter/ip_conntrack_proto_gre.c
+--- linux_org/net/ipv4/netfilter/ip_conntrack_proto_gre.c 1970-01-01 01:00:00.000000000 +0100
++++ linux/net/ipv4/netfilter/ip_conntrack_proto_gre.c 2006-10-27 14:11:52.000000000 +0200
+@@ -0,0 +1,343 @@
++/*
++ * ip_conntrack_proto_gre.c - Version 1.2
++ *
++ * Connection tracking protocol helper module for GRE.
++ *
++ * GRE is a generic encapsulation protocol, which is generally not very
++ * suited for NAT, as it has no protocol-specific part as port numbers.
++ *
++ * It has an optional key field, which may help us distinguishing two
++ * connections between the same two hosts.
++ *
++ * GRE is defined in RFC 1701 and RFC 1702, as well as RFC 2784
++ *
++ * PPTP is built on top of a modified version of GRE, and has a mandatory
++ * field called "CallID", which serves us for the same purpose as the key
++ * field in plain GRE.
++ *
++ * Documentation about PPTP can be found in RFC 2637
++ *
++ * (C) 2000-2003 by Harald Welte <laforge@gnumonks.org>
++ *
++ * Development of this code funded by Astaro AG (http://www.astaro.com/)
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/timer.h>
++#include <linux/netfilter.h>
++#include <linux/ip.h>
++#include <linux/in.h>
++#include <linux/list.h>
++
++#include <linux/netfilter_ipv4/lockhelp.h>
++
++DECLARE_RWLOCK(ip_ct_gre_lock);
++#define ASSERT_READ_LOCK(x) MUST_BE_READ_LOCKED(&ip_ct_gre_lock)
++#define ASSERT_WRITE_LOCK(x) MUST_BE_WRITE_LOCKED(&ip_ct_gre_lock)
++
++#include <linux/netfilter_ipv4/listhelp.h>
++#include <linux/netfilter_ipv4/ip_conntrack_protocol.h>
++#include <linux/netfilter_ipv4/ip_conntrack_helper.h>
++#include <linux/netfilter_ipv4/ip_conntrack_core.h>
++
++#include <linux/netfilter_ipv4/ip_conntrack_proto_gre.h>
++#include <linux/netfilter_ipv4/ip_conntrack_pptp.h>
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>");
++MODULE_DESCRIPTION("netfilter connection tracking protocol helper for GRE");
++
++/* shamelessly stolen from ip_conntrack_proto_udp.c */
++#define GRE_TIMEOUT (30*HZ)
++#define GRE_STREAM_TIMEOUT (180*HZ)
++
++#if 0
++#define DEBUGP(format, args...) printk(KERN_DEBUG __FILE__ ":" __FUNCTION__ \
++ ": " format, ## args)
++#define DUMP_TUPLE_GRE(x) printk("%u.%u.%u.%u:0x%x -> %u.%u.%u.%u:0x%x:%u:0x%x\n", \
++ NIPQUAD((x)->src.ip), ntohl((x)->src.u.gre.key), \
++ NIPQUAD((x)->dst.ip), ntohl((x)->dst.u.gre.key), \
++ (x)->dst.u.gre.version, \
++ ntohs((x)->dst.u.gre.protocol))
++#else
++#define DEBUGP(x, args...)
++#define DUMP_TUPLE_GRE(x)
++#endif
++
++/* GRE KEYMAP HANDLING FUNCTIONS */
++static LIST_HEAD(gre_keymap_list);
++
++static inline int gre_key_cmpfn(const struct ip_ct_gre_keymap *km,
++ const struct ip_conntrack_tuple *t)
++{
++ return ((km->tuple.src.ip == t->src.ip) &&
++ (km->tuple.dst.ip == t->dst.ip) &&
++ (km->tuple.dst.protonum == t->dst.protonum) &&
++ (km->tuple.dst.u.all == t->dst.u.all));
++}
++
++/* look up the source key for a given tuple */
++static u_int32_t gre_keymap_lookup(struct ip_conntrack_tuple *t)
++{
++ struct ip_ct_gre_keymap *km;
++ u_int32_t key;
++
++ READ_LOCK(&ip_ct_gre_lock);
++ km = LIST_FIND(&gre_keymap_list, gre_key_cmpfn,
++ struct ip_ct_gre_keymap *, t);
++ if (!km) {
++ READ_UNLOCK(&ip_ct_gre_lock);
++ return 0;
++ }
++
++ key = km->tuple.src.u.gre.key;
++ READ_UNLOCK(&ip_ct_gre_lock);
++
++ return key;
++}
++
++/* add a single keymap entry, associate with specified expect */
++int ip_ct_gre_keymap_add(struct ip_conntrack_expect *exp,
++ struct ip_conntrack_tuple *t, int reply)
++{
++ struct ip_ct_gre_keymap *km;
++
++ km = kmalloc(sizeof(*km), GFP_ATOMIC);
++ if (!km)
++ return -1;
++
++ /* initializing list head should be sufficient */
++ memset(km, 0, sizeof(*km));
++
++ memcpy(&km->tuple, t, sizeof(*t));
++
++ if (!reply)
++ exp->proto.gre.keymap_orig = km;
++ else
++ exp->proto.gre.keymap_reply = km;
++
++ DEBUGP("adding new entry %p: ", km);
++ DUMP_TUPLE_GRE(&km->tuple);
++
++ WRITE_LOCK(&ip_ct_gre_lock);
++ list_append(&gre_keymap_list, km);
++ WRITE_UNLOCK(&ip_ct_gre_lock);
++
++ return 0;
++}
++
++/* change the tuple of a keymap entry (used by nat helper) */
++void ip_ct_gre_keymap_change(struct ip_ct_gre_keymap *km,
++ struct ip_conntrack_tuple *t)
++{
++ DEBUGP("changing entry %p to: ", km);
++ DUMP_TUPLE_GRE(t);
++
++ WRITE_LOCK(&ip_ct_gre_lock);
++ memcpy(&km->tuple, t, sizeof(km->tuple));
++ WRITE_UNLOCK(&ip_ct_gre_lock);
++}
++
++/* destroy the keymap entries associated with specified expect */
++void ip_ct_gre_keymap_destroy(struct ip_conntrack_expect *exp)
++{
++ DEBUGP("entering for exp %p\n", exp);
++ WRITE_LOCK(&ip_ct_gre_lock);
++ if (exp->proto.gre.keymap_orig) {
++ DEBUGP("removing %p from list\n", exp->proto.gre.keymap_orig);
++ list_del(&exp->proto.gre.keymap_orig->list);
++ kfree(exp->proto.gre.keymap_orig);
++ exp->proto.gre.keymap_orig = NULL;
++ }
++ if (exp->proto.gre.keymap_reply) {
++ DEBUGP("removing %p from list\n", exp->proto.gre.keymap_reply);
++ list_del(&exp->proto.gre.keymap_reply->list);
++ kfree(exp->proto.gre.keymap_reply);
++ exp->proto.gre.keymap_reply = NULL;
++ }
++ WRITE_UNLOCK(&ip_ct_gre_lock);
++}
++
++
++/* PUBLIC CONNTRACK PROTO HELPER FUNCTIONS */
++
++/* invert gre part of tuple */
++static int gre_invert_tuple(struct ip_conntrack_tuple *tuple,
++ const struct ip_conntrack_tuple *orig)
++{
++ tuple->dst.u.gre.protocol = orig->dst.u.gre.protocol;
++ tuple->dst.u.gre.version = orig->dst.u.gre.version;
++
++ tuple->dst.u.gre.key = orig->src.u.gre.key;
++ tuple->src.u.gre.key = orig->dst.u.gre.key;
++
++ return 1;
++}
++
++/* gre hdr info to tuple */
++static int gre_pkt_to_tuple(const void *datah, size_t datalen,
++ struct ip_conntrack_tuple *tuple)
++{
++ struct gre_hdr *grehdr = (struct gre_hdr *) datah;
++ struct gre_hdr_pptp *pgrehdr = (struct gre_hdr_pptp *) datah;
++ u_int32_t srckey;
++
++ /* core guarantees 8 protocol bytes, no need for size check */
++
++ tuple->dst.u.gre.version = grehdr->version;
++ tuple->dst.u.gre.protocol = grehdr->protocol;
++
++ switch (grehdr->version) {
++ case GRE_VERSION_1701:
++ if (!grehdr->key) {
++ DEBUGP("Can't track GRE without key\n");
++ return 0;
++ }
++ tuple->dst.u.gre.key = *(gre_key(grehdr));
++ break;
++
++ case GRE_VERSION_PPTP:
++ if (ntohs(grehdr->protocol) != GRE_PROTOCOL_PPTP) {
++ DEBUGP("GRE_VERSION_PPTP but unknown proto\n");
++ return 0;
++ }
++ tuple->dst.u.gre.key = htonl(ntohs(pgrehdr->call_id));
++ break;
++
++ default:
++ printk(KERN_WARNING "unknown GRE version %hu\n",
++ tuple->dst.u.gre.version);
++ return 0;
++ }
++
++ srckey = gre_keymap_lookup(tuple);
++
++#if 0
++ DEBUGP("found src key %x for tuple ", ntohl(srckey));
++ DUMP_TUPLE_GRE(tuple);
++#endif
++ tuple->src.u.gre.key = srckey;
++
++ return 1;
++}
++
++/* print gre part of tuple */
++static unsigned int gre_print_tuple(char *buffer,
++ const struct ip_conntrack_tuple *tuple)
++{
++ return sprintf(buffer, "version=%d protocol=0x%04x srckey=0x%x dstkey=0x%x ",
++ tuple->dst.u.gre.version,
++ ntohs(tuple->dst.u.gre.protocol),
++ ntohl(tuple->src.u.gre.key),
++ ntohl(tuple->dst.u.gre.key));
++}
++
++/* print private data for conntrack */
++static unsigned int gre_print_conntrack(char *buffer,
++ const struct ip_conntrack *ct)
++{
++ return sprintf(buffer, "timeout=%u, stream_timeout=%u ",
++ (ct->proto.gre.timeout / HZ),
++ (ct->proto.gre.stream_timeout / HZ));
++}
++
++/* Returns verdict for packet, and may modify conntrack */
++static int gre_packet(struct ip_conntrack *ct,
++ struct iphdr *iph, size_t len,
++ enum ip_conntrack_info conntrackinfo)
++{
++ /* If we've seen traffic both ways, this is a GRE connection.
++ * Extend timeout. */
++ if (ct->status & IPS_SEEN_REPLY) {
++ ip_ct_refresh(ct, ct->proto.gre.stream_timeout);
++ /* Also, more likely to be important, and not a probe. */
++ set_bit(IPS_ASSURED_BIT, &ct->status);
++ } else
++ ip_ct_refresh(ct, ct->proto.gre.timeout);
++
++ return NF_ACCEPT;
++}
++
++/* Called when a new connection for this protocol found. */
++static int gre_new(struct ip_conntrack *ct,
++ struct iphdr *iph, size_t len)
++{
++ DEBUGP(": ");
++ DUMP_TUPLE_GRE(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
++
++ /* initialize to sane value. Ideally a conntrack helper
++ * (e.g. in case of pptp) is increasing them */
++ ct->proto.gre.stream_timeout = GRE_STREAM_TIMEOUT;
++ ct->proto.gre.timeout = GRE_TIMEOUT;
++
++ return 1;
++}
++
++/* Called when a conntrack entry has already been removed from the hashes
++ * and is about to be deleted from memory */
++static void gre_destroy(struct ip_conntrack *ct)
++{
++ struct ip_conntrack_expect *master = ct->master;
++
++ DEBUGP(" entering\n");
++
++ if (!master) {
++ DEBUGP("no master exp for ct %p\n", ct);
++ return;
++ }
++
++ ip_ct_gre_keymap_destroy(master);
++}
++
++/* protocol helper struct */
++static struct ip_conntrack_protocol gre = { { NULL, NULL }, IPPROTO_GRE,
++ "gre",
++ gre_pkt_to_tuple,
++ gre_invert_tuple,
++ gre_print_tuple,
++ gre_print_conntrack,
++ gre_packet,
++ gre_new,
++ gre_destroy,
++ NULL,
++ THIS_MODULE };
++
++/* ip_conntrack_proto_gre initialization */
++static int __init init(void)
++{
++ int retcode;
++
++ if ((retcode = ip_conntrack_protocol_register(&gre))) {
++ printk(KERN_ERR "Unable to register conntrack protocol "
++ "helper for gre: %d\n", retcode);
++ return -EIO;
++ }
++
++ return 0;
++}
++
++static void __exit fini(void)
++{
++ struct list_head *pos, *n;
++
++ /* delete all keymap entries */
++ WRITE_LOCK(&ip_ct_gre_lock);
++ list_for_each_safe(pos, n, &gre_keymap_list) {
++ DEBUGP("deleting keymap %p at module unload time\n", pos);
++ list_del(pos);
++ kfree(pos);
++ }
++ WRITE_UNLOCK(&ip_ct_gre_lock);
++
++ ip_conntrack_protocol_unregister(&gre);
++}
++
++EXPORT_SYMBOL(ip_ct_gre_keymap_add);
++EXPORT_SYMBOL(ip_ct_gre_keymap_change);
++EXPORT_SYMBOL(ip_ct_gre_keymap_destroy);
++
++module_init(init);
++module_exit(fini);
+diff -uNr linux_org/net/ipv4/netfilter/ip_nat_core.c linux/net/ipv4/netfilter/ip_nat_core.c
+--- linux_org/net/ipv4/netfilter/ip_nat_core.c 2004-11-24 12:14:04.000000000 +0100
++++ linux/net/ipv4/netfilter/ip_nat_core.c 2006-10-27 14:11:52.000000000 +0200
+@@ -430,7 +430,7 @@
+ *tuple = *orig_tuple;
+ while ((rptr = find_best_ips_proto_fast(tuple, mr, conntrack, hooknum))
+ != NULL) {
+- DEBUGP("Found best for "); DUMP_TUPLE(tuple);
++ DEBUGP("Found best for "); DUMP_TUPLE_RAW(tuple);
+ /* 3) The per-protocol part of the manip is made to
+ map into the range to make a unique tuple. */
+
+@@ -572,9 +572,9 @@
+ HOOK2MANIP(hooknum)==IP_NAT_MANIP_SRC ? "SRC" : "DST",
+ conntrack);
+ DEBUGP("Original: ");
+- DUMP_TUPLE(&orig_tp);
++ DUMP_TUPLE_RAW(&orig_tp);
+ DEBUGP("New: ");
+- DUMP_TUPLE(&new_tuple);
++ DUMP_TUPLE_RAW(&new_tuple);
+ #endif
+
+ /* We now have two tuples (SRCIP/SRCPT/DSTIP/DSTPT):
+diff -uNr linux_org/net/ipv4/netfilter/ip_nat_core.c.orig linux/net/ipv4/netfilter/ip_nat_core.c.orig
+--- linux_org/net/ipv4/netfilter/ip_nat_core.c.orig 1970-01-01 01:00:00.000000000 +0100
++++ linux/net/ipv4/netfilter/ip_nat_core.c.orig 2004-11-24 12:14:04.000000000 +0100
+@@ -0,0 +1,1014 @@
++/* NAT for netfilter; shared with compatibility layer. */
++
++/* (c) 1999 Paul `Rusty' Russell. Licenced under the GNU General
++ Public Licence. */
++#include <linux/version.h>
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/timer.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter_ipv4.h>
++#include <linux/brlock.h>
++#include <linux/vmalloc.h>
++#include <net/checksum.h>
++#include <net/icmp.h>
++#include <net/ip.h>
++#include <net/tcp.h> /* For tcp_prot in getorigdst */
++
++#define ASSERT_READ_LOCK(x) MUST_BE_READ_LOCKED(&ip_nat_lock)
++#define ASSERT_WRITE_LOCK(x) MUST_BE_WRITE_LOCKED(&ip_nat_lock)
++
++#include <linux/netfilter_ipv4/ip_conntrack.h>
++#include <linux/netfilter_ipv4/ip_conntrack_core.h>
++#include <linux/netfilter_ipv4/ip_conntrack_protocol.h>
++#include <linux/netfilter_ipv4/ip_nat.h>
++#include <linux/netfilter_ipv4/ip_nat_protocol.h>
++#include <linux/netfilter_ipv4/ip_nat_core.h>
++#include <linux/netfilter_ipv4/ip_nat_helper.h>
++#include <linux/netfilter_ipv4/ip_conntrack_helper.h>
++#include <linux/netfilter_ipv4/listhelp.h>
++
++#if 0
++#define DEBUGP printk
++#else
++#define DEBUGP(format, args...)
++#endif
++
++DECLARE_RWLOCK(ip_nat_lock);
++DECLARE_RWLOCK_EXTERN(ip_conntrack_lock);
++
++/* Calculated at init based on memory size */
++static unsigned int ip_nat_htable_size;
++
++static struct list_head *bysource;
++static struct list_head *byipsproto;
++LIST_HEAD(protos);
++LIST_HEAD(helpers);
++
++extern struct ip_nat_protocol unknown_nat_protocol;
++
++/* We keep extra hashes for each conntrack, for fast searching. */
++static inline size_t
++hash_by_ipsproto(u_int32_t src, u_int32_t dst, u_int16_t proto)
++{
++ /* Modified src and dst, to ensure we don't create two
++ identical streams. */
++ return (src + dst + proto) % ip_nat_htable_size;
++}
++
++static inline size_t
++hash_by_src(const struct ip_conntrack_manip *manip, u_int16_t proto)
++{
++ /* Original src, to ensure we map it consistently if poss. */
++ return (manip->ip + manip->u.all + proto) % ip_nat_htable_size;
++}
++
++/* Noone using conntrack by the time this called. */
++static void ip_nat_cleanup_conntrack(struct ip_conntrack *conn)
++{
++ struct ip_nat_info *info = &conn->nat.info;
++ unsigned int hs, hp;
++
++ if (!info->initialized)
++ return;
++
++ IP_NF_ASSERT(info->bysource.conntrack);
++ IP_NF_ASSERT(info->byipsproto.conntrack);
++
++ hs = hash_by_src(&conn->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src,
++ conn->tuplehash[IP_CT_DIR_ORIGINAL]
++ .tuple.dst.protonum);
++
++ hp = hash_by_ipsproto(conn->tuplehash[IP_CT_DIR_REPLY].tuple.src.ip,
++ conn->tuplehash[IP_CT_DIR_REPLY].tuple.dst.ip,
++ conn->tuplehash[IP_CT_DIR_REPLY]
++ .tuple.dst.protonum);
++
++ WRITE_LOCK(&ip_nat_lock);
++ LIST_DELETE(&bysource[hs], &info->bysource);
++ LIST_DELETE(&byipsproto[hp], &info->byipsproto);
++ WRITE_UNLOCK(&ip_nat_lock);
++}
++
++/* We do checksum mangling, so if they were wrong before they're still
++ * wrong. Also works for incomplete packets (eg. ICMP dest
++ * unreachables.) */
++u_int16_t
++ip_nat_cheat_check(u_int32_t oldvalinv, u_int32_t newval, u_int16_t oldcheck)
++{
++ u_int32_t diffs[] = { oldvalinv, newval };
++ return csum_fold(csum_partial((char *)diffs, sizeof(diffs),
++ oldcheck^0xFFFF));
++}
++
++static inline int cmp_proto(const struct ip_nat_protocol *i, int proto)
++{
++ return i->protonum == proto;
++}
++
++struct ip_nat_protocol *
++find_nat_proto(u_int16_t protonum)
++{
++ struct ip_nat_protocol *i;
++
++ MUST_BE_READ_LOCKED(&ip_nat_lock);
++ i = LIST_FIND(&protos, cmp_proto, struct ip_nat_protocol *, protonum);
++ if (!i)
++ i = &unknown_nat_protocol;
++ return i;
++}
++
++/* Is this tuple already taken? (not by us) */
++int
++ip_nat_used_tuple(const struct ip_conntrack_tuple *tuple,
++ const struct ip_conntrack *ignored_conntrack)
++{
++ /* Conntrack tracking doesn't keep track of outgoing tuples; only
++ incoming ones. NAT means they don't have a fixed mapping,
++ so we invert the tuple and look for the incoming reply.
++
++ We could keep a separate hash if this proves too slow. */
++ struct ip_conntrack_tuple reply;
++
++ invert_tuplepr(&reply, tuple);
++ return ip_conntrack_tuple_taken(&reply, ignored_conntrack);
++}
++
++/* Does tuple + the source manip come within the range mr */
++static int
++in_range(const struct ip_conntrack_tuple *tuple,
++ const struct ip_conntrack_manip *manip,
++ const struct ip_nat_multi_range *mr)
++{
++ struct ip_nat_protocol *proto = find_nat_proto(tuple->dst.protonum);
++ unsigned int i;
++ struct ip_conntrack_tuple newtuple = { *manip, tuple->dst };
++
++ for (i = 0; i < mr->rangesize; i++) {
++ /* If we are allowed to map IPs, then we must be in the
++ range specified, otherwise we must be unchanged. */
++ if (mr->range[i].flags & IP_NAT_RANGE_MAP_IPS) {
++ if (ntohl(newtuple.src.ip) < ntohl(mr->range[i].min_ip)
++ || (ntohl(newtuple.src.ip)
++ > ntohl(mr->range[i].max_ip)))
++ continue;
++ } else {
++ if (newtuple.src.ip != tuple->src.ip)
++ continue;
++ }
++
++ if ((mr->range[i].flags & IP_NAT_RANGE_PROTO_SPECIFIED)
++ && proto->in_range(&newtuple, IP_NAT_MANIP_SRC,
++ &mr->range[i].min, &mr->range[i].max))
++ return 1;
++ }
++ return 0;
++}
++
++static inline int
++src_cmp(const struct ip_nat_hash *i,
++ const struct ip_conntrack_tuple *tuple,
++ const struct ip_nat_multi_range *mr)
++{
++ return (i->conntrack->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum
++ == tuple->dst.protonum
++ && i->conntrack->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.ip
++ == tuple->src.ip
++ && i->conntrack->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u.all
++ == tuple->src.u.all
++ && in_range(tuple,
++ &i->conntrack->tuplehash[IP_CT_DIR_ORIGINAL]
++ .tuple.src,
++ mr));
++}
++
++/* Only called for SRC manip */
++static struct ip_conntrack_manip *
++find_appropriate_src(const struct ip_conntrack_tuple *tuple,
++ const struct ip_nat_multi_range *mr)
++{
++ unsigned int h = hash_by_src(&tuple->src, tuple->dst.protonum);
++ struct ip_nat_hash *i;
++
++ MUST_BE_READ_LOCKED(&ip_nat_lock);
++ i = LIST_FIND(&bysource[h], src_cmp, struct ip_nat_hash *, tuple, mr);
++ if (i)
++ return &i->conntrack->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src;
++ else
++ return NULL;
++}
++
++#ifdef CONFIG_IP_NF_NAT_LOCAL
++/* If it's really a local destination manip, it may need to do a
++ source manip too. */
++static int
++do_extra_mangle(u_int32_t var_ip, u_int32_t *other_ipp)
++{
++ struct rtable *rt;
++
++ /* FIXME: IPTOS_TOS(iph->tos) --RR */
++ if (ip_route_output(&rt, var_ip, 0, 0, 0) != 0) {
++ DEBUGP("do_extra_mangle: Can't get route to %u.%u.%u.%u\n",
++ NIPQUAD(var_ip));
++ return 0;
++ }
++
++ *other_ipp = rt->rt_src;
++ ip_rt_put(rt);
++ return 1;
++}
++#endif
++
++/* Simple way to iterate through all. */
++static inline int fake_cmp(const struct ip_nat_hash *i,
++ u_int32_t src, u_int32_t dst, u_int16_t protonum,
++ unsigned int *score,
++ const struct ip_conntrack *conntrack)
++{
++ /* Compare backwards: we're dealing with OUTGOING tuples, and
++ inside the conntrack is the REPLY tuple. Don't count this
++ conntrack. */
++ if (i->conntrack != conntrack
++ && i->conntrack->tuplehash[IP_CT_DIR_REPLY].tuple.src.ip == dst
++ && i->conntrack->tuplehash[IP_CT_DIR_REPLY].tuple.dst.ip == src
++ && (i->conntrack->tuplehash[IP_CT_DIR_REPLY].tuple.dst.protonum
++ == protonum))
++ (*score)++;
++ return 0;
++}
++
++static inline unsigned int
++count_maps(u_int32_t src, u_int32_t dst, u_int16_t protonum,
++ const struct ip_conntrack *conntrack)
++{
++ unsigned int score = 0;
++ unsigned int h;
++
++ MUST_BE_READ_LOCKED(&ip_nat_lock);
++ h = hash_by_ipsproto(src, dst, protonum);
++ LIST_FIND(&byipsproto[h], fake_cmp, struct ip_nat_hash *,
++ src, dst, protonum, &score, conntrack);
++
++ return score;
++}
++
++/* For [FUTURE] fragmentation handling, we want the least-used
++ src-ip/dst-ip/proto triple. Fairness doesn't come into it. Thus
++ if the range specifies 1.2.3.4 ports 10000-10005 and 1.2.3.5 ports
++ 1-65535, we don't do pro-rata allocation based on ports; we choose
++ the ip with the lowest src-ip/dst-ip/proto usage.
++
++ If an allocation then fails (eg. all 6 ports used in the 1.2.3.4
++ range), we eliminate that and try again. This is not the most
++ efficient approach, but if you're worried about that, don't hand us
++ ranges you don't really have. */
++static struct ip_nat_range *
++find_best_ips_proto(struct ip_conntrack_tuple *tuple,
++ const struct ip_nat_multi_range *mr,
++ const struct ip_conntrack *conntrack,
++ unsigned int hooknum)
++{
++ unsigned int i;
++ struct {
++ const struct ip_nat_range *range;
++ unsigned int score;
++ struct ip_conntrack_tuple tuple;
++ } best = { NULL, 0xFFFFFFFF };
++ u_int32_t *var_ipp, *other_ipp, saved_ip, orig_dstip;
++ static unsigned int randomness = 0;
++
++ if (HOOK2MANIP(hooknum) == IP_NAT_MANIP_SRC) {
++ var_ipp = &tuple->src.ip;
++ saved_ip = tuple->dst.ip;
++ other_ipp = &tuple->dst.ip;
++ } else {
++ var_ipp = &tuple->dst.ip;
++ saved_ip = tuple->src.ip;
++ other_ipp = &tuple->src.ip;
++ }
++ /* Don't do do_extra_mangle unless neccessary (overrides
++ explicit socket bindings, for example) */
++ orig_dstip = tuple->dst.ip;
++
++ IP_NF_ASSERT(mr->rangesize >= 1);
++ for (i = 0; i < mr->rangesize; i++) {
++ /* Host order */
++ u_int32_t minip, maxip, j;
++
++ /* Don't do ranges which are already eliminated. */
++ if (mr->range[i].flags & IP_NAT_RANGE_FULL) {
++ continue;
++ }
++
++ if (mr->range[i].flags & IP_NAT_RANGE_MAP_IPS) {
++ minip = ntohl(mr->range[i].min_ip);
++ maxip = ntohl(mr->range[i].max_ip);
++ } else
++ minip = maxip = ntohl(*var_ipp);
++
++ randomness++;
++ for (j = 0; j < maxip - minip + 1; j++) {
++ unsigned int score;
++
++ *var_ipp = htonl(minip + (randomness + j)
++ % (maxip - minip + 1));
++
++ /* Reset the other ip in case it was mangled by
++ * do_extra_mangle last time. */
++ *other_ipp = saved_ip;
++
++#ifdef CONFIG_IP_NF_NAT_LOCAL
++ if (hooknum == NF_IP_LOCAL_OUT
++ && *var_ipp != orig_dstip
++ && !do_extra_mangle(*var_ipp, other_ipp)) {
++ DEBUGP("Range %u %u.%u.%u.%u rt failed!\n",
++ i, NIPQUAD(*var_ipp));
++ /* Can't route? This whole range part is
++ * probably screwed, but keep trying
++ * anyway. */
++ continue;
++ }
++#endif
++
++ /* Count how many others map onto this. */
++ score = count_maps(tuple->src.ip, tuple->dst.ip,
++ tuple->dst.protonum, conntrack);
++ if (score < best.score) {
++ /* Optimization: doesn't get any better than
++ this. */
++ if (score == 0)
++ return (struct ip_nat_range *)
++ &mr->range[i];
++
++ best.score = score;
++ best.tuple = *tuple;
++ best.range = &mr->range[i];
++ }
++ }
++ }
++ *tuple = best.tuple;
++
++ /* Discard const. */
++ return (struct ip_nat_range *)best.range;
++}
++
++/* Fast version doesn't iterate through hash chains, but only handles
++ common case of single IP address (null NAT, masquerade) */
++static struct ip_nat_range *
++find_best_ips_proto_fast(struct ip_conntrack_tuple *tuple,
++ const struct ip_nat_multi_range *mr,
++ const struct ip_conntrack *conntrack,
++ unsigned int hooknum)
++{
++ if (mr->rangesize != 1
++ || (mr->range[0].flags & IP_NAT_RANGE_FULL)
++ || ((mr->range[0].flags & IP_NAT_RANGE_MAP_IPS)
++ && mr->range[0].min_ip != mr->range[0].max_ip))
++ return find_best_ips_proto(tuple, mr, conntrack, hooknum);
++
++ if (mr->range[0].flags & IP_NAT_RANGE_MAP_IPS) {
++ if (HOOK2MANIP(hooknum) == IP_NAT_MANIP_SRC)
++ tuple->src.ip = mr->range[0].min_ip;
++ else {
++ /* Only do extra mangle when required (breaks
++ socket binding) */
++#ifdef CONFIG_IP_NF_NAT_LOCAL
++ if (tuple->dst.ip != mr->range[0].min_ip
++ && hooknum == NF_IP_LOCAL_OUT
++ && !do_extra_mangle(mr->range[0].min_ip,
++ &tuple->src.ip))
++ return NULL;
++#endif
++ tuple->dst.ip = mr->range[0].min_ip;
++ }
++ }
++
++ /* Discard const. */
++ return (struct ip_nat_range *)&mr->range[0];
++}
++
++static int
++get_unique_tuple(struct ip_conntrack_tuple *tuple,
++ const struct ip_conntrack_tuple *orig_tuple,
++ const struct ip_nat_multi_range *mrr,
++ struct ip_conntrack *conntrack,
++ unsigned int hooknum)
++{
++ struct ip_nat_protocol *proto
++ = find_nat_proto(orig_tuple->dst.protonum);
++ struct ip_nat_range *rptr;
++ unsigned int i;
++ int ret;
++
++ /* We temporarily use flags for marking full parts, but we
++ always clean up afterwards */
++ struct ip_nat_multi_range *mr = (void *)mrr;
++
++ /* 1) If this srcip/proto/src-proto-part is currently mapped,
++ and that same mapping gives a unique tuple within the given
++ range, use that.
++
++ This is only required for source (ie. NAT/masq) mappings.
++ So far, we don't do local source mappings, so multiple
++ manips not an issue. */
++ if (hooknum == NF_IP_POST_ROUTING) {
++ struct ip_conntrack_manip *manip;
++
++ manip = find_appropriate_src(orig_tuple, mr);
++ if (manip) {
++ /* Apply same source manipulation. */
++ *tuple = ((struct ip_conntrack_tuple)
++ { *manip, orig_tuple->dst });
++ DEBUGP("get_unique_tuple: Found current src map\n");
++ return 1;
++ }
++ }
++
++ /* 2) Select the least-used IP/proto combination in the given
++ range.
++ */
++ *tuple = *orig_tuple;
++ while ((rptr = find_best_ips_proto_fast(tuple, mr, conntrack, hooknum))
++ != NULL) {
++ DEBUGP("Found best for "); DUMP_TUPLE(tuple);
++ /* 3) The per-protocol part of the manip is made to
++ map into the range to make a unique tuple. */
++
++ /* Only bother mapping if it's not already in range
++ and unique */
++ if ((!(rptr->flags & IP_NAT_RANGE_PROTO_SPECIFIED)
++ || proto->in_range(tuple, HOOK2MANIP(hooknum),
++ &rptr->min, &rptr->max))
++ && !ip_nat_used_tuple(tuple, conntrack)) {
++ ret = 1;
++ goto clear_fulls;
++ } else {
++ if (proto->unique_tuple(tuple, rptr,
++ HOOK2MANIP(hooknum),
++ conntrack)) {
++ /* Must be unique. */
++ IP_NF_ASSERT(!ip_nat_used_tuple(tuple,
++ conntrack));
++ ret = 1;
++ goto clear_fulls;
++ } else if (HOOK2MANIP(hooknum) == IP_NAT_MANIP_DST) {
++ /* Try implicit source NAT; protocol
++ may be able to play with ports to
++ make it unique. */
++ struct ip_nat_range r
++ = { IP_NAT_RANGE_MAP_IPS,
++ tuple->src.ip, tuple->src.ip,
++ { 0 }, { 0 } };
++ DEBUGP("Trying implicit mapping\n");
++ if (proto->unique_tuple(tuple, &r,
++ IP_NAT_MANIP_SRC,
++ conntrack)) {
++ /* Must be unique. */
++ IP_NF_ASSERT(!ip_nat_used_tuple
++ (tuple, conntrack));
++ ret = 1;
++ goto clear_fulls;
++ }
++ }
++ DEBUGP("Protocol can't get unique tuple %u.\n",
++ hooknum);
++ }
++
++ /* Eliminate that from range, and try again. */
++ rptr->flags |= IP_NAT_RANGE_FULL;
++ *tuple = *orig_tuple;
++ }
++
++ ret = 0;
++
++ clear_fulls:
++ /* Clear full flags. */
++ IP_NF_ASSERT(mr->rangesize >= 1);
++ for (i = 0; i < mr->rangesize; i++)
++ mr->range[i].flags &= ~IP_NAT_RANGE_FULL;
++
++ return ret;
++}
++
++static inline int
++helper_cmp(const struct ip_nat_helper *helper,
++ const struct ip_conntrack_tuple *tuple)
++{
++ return ip_ct_tuple_mask_cmp(tuple, &helper->tuple, &helper->mask);
++}
++
++/* Where to manip the reply packets (will be reverse manip). */
++static unsigned int opposite_hook[NF_IP_NUMHOOKS]
++= { [NF_IP_PRE_ROUTING] = NF_IP_POST_ROUTING,
++ [NF_IP_POST_ROUTING] = NF_IP_PRE_ROUTING,
++#ifdef CONFIG_IP_NF_NAT_LOCAL
++ [NF_IP_LOCAL_OUT] = NF_IP_LOCAL_IN,
++ [NF_IP_LOCAL_IN] = NF_IP_LOCAL_OUT,
++#endif
++};
++
++unsigned int
++ip_nat_setup_info(struct ip_conntrack *conntrack,
++ const struct ip_nat_multi_range *mr,
++ unsigned int hooknum)
++{
++ struct ip_conntrack_tuple new_tuple, inv_tuple, reply;
++ struct ip_conntrack_tuple orig_tp;
++ struct ip_nat_info *info = &conntrack->nat.info;
++ int in_hashes = info->initialized;
++
++ MUST_BE_WRITE_LOCKED(&ip_nat_lock);
++ IP_NF_ASSERT(hooknum == NF_IP_PRE_ROUTING
++ || hooknum == NF_IP_POST_ROUTING
++ || hooknum == NF_IP_LOCAL_IN
++ || hooknum == NF_IP_LOCAL_OUT);
++ IP_NF_ASSERT(info->num_manips < IP_NAT_MAX_MANIPS);
++ IP_NF_ASSERT(!(info->initialized & (1 << HOOK2MANIP(hooknum))));
++
++ /* What we've got will look like inverse of reply. Normally
++ this is what is in the conntrack, except for prior
++ manipulations (future optimization: if num_manips == 0,
++ orig_tp =
++ conntrack->tuplehash[IP_CT_DIR_ORIGINAL].tuple) */
++ invert_tuplepr(&orig_tp,
++ &conntrack->tuplehash[IP_CT_DIR_REPLY].tuple);
++
++#if 0
++ {
++ unsigned int i;
++
++ DEBUGP("Hook %u (%s), ", hooknum,
++ HOOK2MANIP(hooknum)==IP_NAT_MANIP_SRC ? "SRC" : "DST");
++ DUMP_TUPLE(&orig_tp);
++ DEBUGP("Range %p: ", mr);
++ for (i = 0; i < mr->rangesize; i++) {
++ DEBUGP("%u:%s%s%s %u.%u.%u.%u - %u.%u.%u.%u %u - %u\n",
++ i,
++ (mr->range[i].flags & IP_NAT_RANGE_MAP_IPS)
++ ? " MAP_IPS" : "",
++ (mr->range[i].flags
++ & IP_NAT_RANGE_PROTO_SPECIFIED)
++ ? " PROTO_SPECIFIED" : "",
++ (mr->range[i].flags & IP_NAT_RANGE_FULL)
++ ? " FULL" : "",
++ NIPQUAD(mr->range[i].min_ip),
++ NIPQUAD(mr->range[i].max_ip),
++ mr->range[i].min.all,
++ mr->range[i].max.all);
++ }
++ }
++#endif
++
++ do {
++ if (!get_unique_tuple(&new_tuple, &orig_tp, mr, conntrack,
++ hooknum)) {
++ DEBUGP("ip_nat_setup_info: Can't get unique for %p.\n",
++ conntrack);
++ return NF_DROP;
++ }
++
++#if 0
++ DEBUGP("Hook %u (%s) %p\n", hooknum,
++ HOOK2MANIP(hooknum)==IP_NAT_MANIP_SRC ? "SRC" : "DST",
++ conntrack);
++ DEBUGP("Original: ");
++ DUMP_TUPLE(&orig_tp);
++ DEBUGP("New: ");
++ DUMP_TUPLE(&new_tuple);
++#endif
++
++ /* We now have two tuples (SRCIP/SRCPT/DSTIP/DSTPT):
++ the original (A/B/C/D') and the mangled one (E/F/G/H').
++
++ We're only allowed to work with the SRC per-proto
++ part, so we create inverses of both to start, then
++ derive the other fields we need. */
++
++ /* Reply connection: simply invert the new tuple
++ (G/H/E/F') */
++ invert_tuplepr(&reply, &new_tuple);
++
++ /* Alter conntrack table so it recognizes replies.
++ If fail this race (reply tuple now used), repeat. */
++ } while (!ip_conntrack_alter_reply(conntrack, &reply));
++
++ /* FIXME: We can simply used existing conntrack reply tuple
++ here --RR */
++ /* Create inverse of original: C/D/A/B' */
++ invert_tuplepr(&inv_tuple, &orig_tp);
++
++ /* Has source changed?. */
++ if (!ip_ct_tuple_src_equal(&new_tuple, &orig_tp)) {
++ /* In this direction, a source manip. */
++ info->manips[info->num_manips++] =
++ ((struct ip_nat_info_manip)
++ { IP_CT_DIR_ORIGINAL, hooknum,
++ IP_NAT_MANIP_SRC, new_tuple.src });
++
++ IP_NF_ASSERT(info->num_manips < IP_NAT_MAX_MANIPS);
++
++ /* In the reverse direction, a destination manip. */
++ info->manips[info->num_manips++] =
++ ((struct ip_nat_info_manip)
++ { IP_CT_DIR_REPLY, opposite_hook[hooknum],
++ IP_NAT_MANIP_DST, orig_tp.src });
++ IP_NF_ASSERT(info->num_manips <= IP_NAT_MAX_MANIPS);
++ }
++
++ /* Has destination changed? */
++ if (!ip_ct_tuple_dst_equal(&new_tuple, &orig_tp)) {
++ /* In this direction, a destination manip */
++ info->manips[info->num_manips++] =
++ ((struct ip_nat_info_manip)
++ { IP_CT_DIR_ORIGINAL, hooknum,
++ IP_NAT_MANIP_DST, reply.src });
++
++ IP_NF_ASSERT(info->num_manips < IP_NAT_MAX_MANIPS);
++
++ /* In the reverse direction, a source manip. */
++ info->manips[info->num_manips++] =
++ ((struct ip_nat_info_manip)
++ { IP_CT_DIR_REPLY, opposite_hook[hooknum],
++ IP_NAT_MANIP_SRC, inv_tuple.src });
++ IP_NF_ASSERT(info->num_manips <= IP_NAT_MAX_MANIPS);
++ }
++
++ /* If there's a helper, assign it; based on new tuple. */
++ if (!conntrack->master)
++ info->helper = LIST_FIND(&helpers, helper_cmp, struct ip_nat_helper *,
++ &reply);
++
++ /* It's done. */
++ info->initialized |= (1 << HOOK2MANIP(hooknum));
++
++ if (in_hashes) {
++ IP_NF_ASSERT(info->bysource.conntrack);
++ replace_in_hashes(conntrack, info);
++ } else {
++ place_in_hashes(conntrack, info);
++ }
++
++ return NF_ACCEPT;
++}
++
++void replace_in_hashes(struct ip_conntrack *conntrack,
++ struct ip_nat_info *info)
++{
++ /* Source has changed, so replace in hashes. */
++ unsigned int srchash
++ = hash_by_src(&conntrack->tuplehash[IP_CT_DIR_ORIGINAL]
++ .tuple.src,
++ conntrack->tuplehash[IP_CT_DIR_ORIGINAL]
++ .tuple.dst.protonum);
++ /* We place packet as seen OUTGOUNG in byips_proto hash
++ (ie. reverse dst and src of reply packet. */
++ unsigned int ipsprotohash
++ = hash_by_ipsproto(conntrack->tuplehash[IP_CT_DIR_REPLY]
++ .tuple.dst.ip,
++ conntrack->tuplehash[IP_CT_DIR_REPLY]
++ .tuple.src.ip,
++ conntrack->tuplehash[IP_CT_DIR_REPLY]
++ .tuple.dst.protonum);
++
++ IP_NF_ASSERT(info->bysource.conntrack == conntrack);
++ MUST_BE_WRITE_LOCKED(&ip_nat_lock);
++
++ list_del(&info->bysource.list);
++ list_del(&info->byipsproto.list);
++
++ list_prepend(&bysource[srchash], &info->bysource);
++ list_prepend(&byipsproto[ipsprotohash], &info->byipsproto);
++}
++
++void place_in_hashes(struct ip_conntrack *conntrack,
++ struct ip_nat_info *info)
++{
++ unsigned int srchash
++ = hash_by_src(&conntrack->tuplehash[IP_CT_DIR_ORIGINAL]
++ .tuple.src,
++ conntrack->tuplehash[IP_CT_DIR_ORIGINAL]
++ .tuple.dst.protonum);
++ /* We place packet as seen OUTGOUNG in byips_proto hash
++ (ie. reverse dst and src of reply packet. */
++ unsigned int ipsprotohash
++ = hash_by_ipsproto(conntrack->tuplehash[IP_CT_DIR_REPLY]
++ .tuple.dst.ip,
++ conntrack->tuplehash[IP_CT_DIR_REPLY]
++ .tuple.src.ip,
++ conntrack->tuplehash[IP_CT_DIR_REPLY]
++ .tuple.dst.protonum);
++
++ IP_NF_ASSERT(!info->bysource.conntrack);
++
++ MUST_BE_WRITE_LOCKED(&ip_nat_lock);
++ info->byipsproto.conntrack = conntrack;
++ info->bysource.conntrack = conntrack;
++
++ list_prepend(&bysource[srchash], &info->bysource);
++ list_prepend(&byipsproto[ipsprotohash], &info->byipsproto);
++}
++
++static void
++manip_pkt(u_int16_t proto, struct iphdr *iph, size_t len,
++ const struct ip_conntrack_manip *manip,
++ enum ip_nat_manip_type maniptype,
++ __u32 *nfcache)
++{
++ *nfcache |= NFC_ALTERED;
++ find_nat_proto(proto)->manip_pkt(iph, len, manip, maniptype);
++
++ if (maniptype == IP_NAT_MANIP_SRC) {
++ iph->check = ip_nat_cheat_check(~iph->saddr, manip->ip,
++ iph->check);
++ iph->saddr = manip->ip;
++ } else {
++ iph->check = ip_nat_cheat_check(~iph->daddr, manip->ip,
++ iph->check);
++ iph->daddr = manip->ip;
++ }
++#if 0
++ if (ip_fast_csum((u8 *)iph, iph->ihl) != 0)
++ DEBUGP("IP: checksum on packet bad.\n");
++
++ if (proto == IPPROTO_TCP) {
++ void *th = (u_int32_t *)iph + iph->ihl;
++ if (tcp_v4_check(th, len - 4*iph->ihl, iph->saddr, iph->daddr,
++ csum_partial((char *)th, len-4*iph->ihl, 0)))
++ DEBUGP("TCP: checksum on packet bad\n");
++ }
++#endif
++}
++
++static inline int exp_for_packet(struct ip_conntrack_expect *exp,
++ struct sk_buff **pskb)
++{
++ struct ip_conntrack_protocol *proto;
++ int ret = 1;
++
++ MUST_BE_READ_LOCKED(&ip_conntrack_lock);
++ proto = __ip_ct_find_proto((*pskb)->nh.iph->protocol);
++ if (proto->exp_matches_pkt)
++ ret = proto->exp_matches_pkt(exp, pskb);
++
++ return ret;
++}
++
++/* Do packet manipulations according to binding. */
++unsigned int
++do_bindings(struct ip_conntrack *ct,
++ enum ip_conntrack_info ctinfo,
++ struct ip_nat_info *info,
++ unsigned int hooknum,
++ struct sk_buff **pskb)
++{
++ unsigned int i;
++ struct ip_nat_helper *helper;
++ enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
++ int is_tcp = (*pskb)->nh.iph->protocol == IPPROTO_TCP;
++
++ /* Need nat lock to protect against modification, but neither
++ conntrack (referenced) and helper (deleted with
++ synchronize_bh()) can vanish. */
++ READ_LOCK(&ip_nat_lock);
++ for (i = 0; i < info->num_manips; i++) {
++ /* raw socket (tcpdump) may have clone of incoming
++ skb: don't disturb it --RR */
++ if (skb_cloned(*pskb) && !(*pskb)->sk) {
++ struct sk_buff *nskb = skb_copy(*pskb, GFP_ATOMIC);
++ if (!nskb) {
++ READ_UNLOCK(&ip_nat_lock);
++ return NF_DROP;
++ }
++ kfree_skb(*pskb);
++ *pskb = nskb;
++ }
++
++ if (info->manips[i].direction == dir
++ && info->manips[i].hooknum == hooknum) {
++ DEBUGP("Mangling %p: %s to %u.%u.%u.%u %u\n",
++ *pskb,
++ info->manips[i].maniptype == IP_NAT_MANIP_SRC
++ ? "SRC" : "DST",
++ NIPQUAD(info->manips[i].manip.ip),
++ htons(info->manips[i].manip.u.all));
++ manip_pkt((*pskb)->nh.iph->protocol,
++ (*pskb)->nh.iph,
++ (*pskb)->len,
++ &info->manips[i].manip,
++ info->manips[i].maniptype,
++ &(*pskb)->nfcache);
++ }
++ }
++ helper = info->helper;
++ READ_UNLOCK(&ip_nat_lock);
++
++ if (helper) {
++ struct ip_conntrack_expect *exp = NULL;
++ struct list_head *cur_item;
++ int ret = NF_ACCEPT;
++ int helper_called = 0;
++
++ DEBUGP("do_bindings: helper existing for (%p)\n", ct);
++
++ /* Always defragged for helpers */
++ IP_NF_ASSERT(!((*pskb)->nh.iph->frag_off
++ & htons(IP_MF|IP_OFFSET)));
++
++ /* Have to grab read lock before sibling_list traversal */
++ READ_LOCK(&ip_conntrack_lock);
++ list_for_each_prev(cur_item, &ct->sibling_list) {
++ exp = list_entry(cur_item, struct ip_conntrack_expect,
++ expected_list);
++
++ /* if this expectation is already established, skip */
++ if (exp->sibling)
++ continue;
++
++ if (exp_for_packet(exp, pskb)) {
++ /* FIXME: May be true multiple times in the
++ * case of UDP!! */
++ DEBUGP("calling nat helper (exp=%p) for packet\n", exp);
++ ret = helper->help(ct, exp, info, ctinfo,
++ hooknum, pskb);
++ if (ret != NF_ACCEPT) {
++ READ_UNLOCK(&ip_conntrack_lock);
++ return ret;
++ }
++ helper_called = 1;
++ }
++ }
++ /* Helper might want to manip the packet even when there is no
++ * matching expectation for this packet */
++ if (!helper_called && helper->flags & IP_NAT_HELPER_F_ALWAYS) {
++ DEBUGP("calling nat helper for packet without expectation\n");
++ ret = helper->help(ct, NULL, info, ctinfo,
++ hooknum, pskb);
++ if (ret != NF_ACCEPT) {
++ READ_UNLOCK(&ip_conntrack_lock);
++ return ret;
++ }
++ }
++ READ_UNLOCK(&ip_conntrack_lock);
++
++ /* Adjust sequence number only once per packet
++ * (helper is called at all hooks) */
++ if (is_tcp && (hooknum == NF_IP_POST_ROUTING
++ || hooknum == NF_IP_LOCAL_IN)) {
++ DEBUGP("ip_nat_core: adjusting sequence number\n");
++ /* future: put this in a l4-proto specific function,
++ * and call this function here. */
++ ip_nat_seq_adjust(*pskb, ct, ctinfo);
++ }
++
++ return ret;
++
++ } else
++ return NF_ACCEPT;
++
++ /* not reached */
++}
++
++unsigned int
++icmp_reply_translation(struct sk_buff *skb,
++ struct ip_conntrack *conntrack,
++ unsigned int hooknum,
++ int dir)
++{
++ struct iphdr *iph = skb->nh.iph;
++ struct icmphdr *hdr = (struct icmphdr *)((u_int32_t *)iph + iph->ihl);
++ struct iphdr *inner = (struct iphdr *)(hdr + 1);
++ size_t datalen = skb->len - ((void *)inner - (void *)iph);
++ unsigned int i;
++ struct ip_nat_info *info = &conntrack->nat.info;
++
++ IP_NF_ASSERT(skb->len >= iph->ihl*4 + sizeof(struct icmphdr));
++ /* Must be RELATED */
++ IP_NF_ASSERT(skb->nfct
++ - ((struct ip_conntrack *)skb->nfct->master)->infos
++ == IP_CT_RELATED
++ || skb->nfct
++ - ((struct ip_conntrack *)skb->nfct->master)->infos
++ == IP_CT_RELATED+IP_CT_IS_REPLY);
++
++ /* Redirects on non-null nats must be dropped, else they'll
++ start talking to each other without our translation, and be
++ confused... --RR */
++ if (hdr->type == ICMP_REDIRECT) {
++ /* Don't care about races here. */
++ if (info->initialized
++ != ((1 << IP_NAT_MANIP_SRC) | (1 << IP_NAT_MANIP_DST))
++ || info->num_manips != 0)
++ return NF_DROP;
++ }
++
++ DEBUGP("icmp_reply_translation: translating error %p hook %u dir %s\n",
++ skb, hooknum, dir == IP_CT_DIR_ORIGINAL ? "ORIG" : "REPLY");
++ /* Note: May not be from a NAT'd host, but probably safest to
++ do translation always as if it came from the host itself
++ (even though a "host unreachable" coming from the host
++ itself is a bit weird).
++
++ More explanation: some people use NAT for anonymizing.
++ Also, CERT recommends dropping all packets from private IP
++ addresses (although ICMP errors from internal links with
++ such addresses are not too uncommon, as Alan Cox points
++ out) */
++
++ READ_LOCK(&ip_nat_lock);
++ for (i = 0; i < info->num_manips; i++) {
++ DEBUGP("icmp_reply: manip %u dir %s hook %u\n",
++ i, info->manips[i].direction == IP_CT_DIR_ORIGINAL ?
++ "ORIG" : "REPLY", info->manips[i].hooknum);
++
++ if (info->manips[i].direction != dir)
++ continue;
++
++ /* Mapping the inner packet is just like a normal
++ packet, except it was never src/dst reversed, so
++ where we would normally apply a dst manip, we apply
++ a src, and vice versa. */
++ if (info->manips[i].hooknum == hooknum) {
++ DEBUGP("icmp_reply: inner %s -> %u.%u.%u.%u %u\n",
++ info->manips[i].maniptype == IP_NAT_MANIP_SRC
++ ? "DST" : "SRC",
++ NIPQUAD(info->manips[i].manip.ip),
++ ntohs(info->manips[i].manip.u.udp.port));
++ manip_pkt(inner->protocol, inner,
++ skb->len - ((void *)inner - (void *)iph),
++ &info->manips[i].manip,
++ !info->manips[i].maniptype,
++ &skb->nfcache);
++ /* Outer packet needs to have IP header NATed like
++ it's a reply. */
++
++ /* Use mapping to map outer packet: 0 give no
++ per-proto mapping */
++ DEBUGP("icmp_reply: outer %s -> %u.%u.%u.%u\n",
++ info->manips[i].maniptype == IP_NAT_MANIP_SRC
++ ? "SRC" : "DST",
++ NIPQUAD(info->manips[i].manip.ip));
++ manip_pkt(0, iph, skb->len,
++ &info->manips[i].manip,
++ info->manips[i].maniptype,
++ &skb->nfcache);
++ }
++ }
++ READ_UNLOCK(&ip_nat_lock);
++
++ /* Since we mangled inside ICMP packet, recalculate its
++ checksum from scratch. (Hence the handling of incorrect
++ checksums in conntrack, so we don't accidentally fix one.) */
++ hdr->checksum = 0;
++ hdr->checksum = ip_compute_csum((unsigned char *)hdr,
++ sizeof(*hdr) + datalen);
++
++ return NF_ACCEPT;
++}
++
++int __init ip_nat_init(void)
++{
++ size_t i;
++
++ /* Leave them the same for the moment. */
++ ip_nat_htable_size = ip_conntrack_htable_size;
++
++ /* One vmalloc for both hash tables */
++ bysource = vmalloc(sizeof(struct list_head) * ip_nat_htable_size*2);
++ if (!bysource) {
++ return -ENOMEM;
++ }
++ byipsproto = bysource + ip_nat_htable_size;
++
++ /* Sew in builtin protocols. */
++ WRITE_LOCK(&ip_nat_lock);
++ list_append(&protos, &ip_nat_protocol_tcp);
++ list_append(&protos, &ip_nat_protocol_udp);
++ list_append(&protos, &ip_nat_protocol_icmp);
++ WRITE_UNLOCK(&ip_nat_lock);
++
++ for (i = 0; i < ip_nat_htable_size; i++) {
++ INIT_LIST_HEAD(&bysource[i]);
++ INIT_LIST_HEAD(&byipsproto[i]);
++ }
++
++ /* FIXME: Man, this is a hack. <SIGH> */
++ IP_NF_ASSERT(ip_conntrack_destroyed == NULL);
++ ip_conntrack_destroyed = &ip_nat_cleanup_conntrack;
++
++ return 0;
++}
++
++/* Clear NAT section of all conntracks, in case we're loaded again. */
++static int clean_nat(const struct ip_conntrack *i, void *data)
++{
++ memset((void *)&i->nat, 0, sizeof(i->nat));
++ return 0;
++}
++
++/* Not __exit: called from ip_nat_standalone.c:init_or_cleanup() --RR */
++void ip_nat_cleanup(void)
++{
++ ip_ct_selective_cleanup(&clean_nat, NULL);
++ ip_conntrack_destroyed = NULL;
++ vfree(bysource);
++}
+diff -uNr linux_org/net/ipv4/netfilter/ip_nat_pptp.c linux/net/ipv4/netfilter/ip_nat_pptp.c
+--- linux_org/net/ipv4/netfilter/ip_nat_pptp.c 1970-01-01 01:00:00.000000000 +0100
++++ linux/net/ipv4/netfilter/ip_nat_pptp.c 2006-10-27 14:11:52.000000000 +0200
+@@ -0,0 +1,475 @@
++/*
++ * ip_nat_pptp.c - Version 1.5
++ *
++ * NAT support for PPTP (Point to Point Tunneling Protocol).
++ * PPTP is a a protocol for creating virtual private networks.
++ * It is a specification defined by Microsoft and some vendors
++ * working with Microsoft. PPTP is built on top of a modified
++ * version of the Internet Generic Routing Encapsulation Protocol.
++ * GRE is defined in RFC 1701 and RFC 1702. Documentation of
++ * PPTP can be found in RFC 2637
++ *
++ * (C) 2000-2003 by Harald Welte <laforge@gnumonks.org>
++ *
++ * Development of this code funded by Astaro AG (http://www.astaro.com/)
++ *
++ * TODO: - Support for multiple calls within one session
++ * (needs netfilter newnat code)
++ * - NAT to a unique tuple, not to TCP source port
++ * (needs netfilter tuple reservation)
++ *
++ * Changes:
++ * 2002-02-10 - Version 1.3
++ * - Use ip_nat_mangle_tcp_packet() because of cloned skb's
++ * in local connections (Philip Craig <philipc@snapgear.com>)
++ * - add checks for magicCookie and pptp version
++ * - make argument list of pptp_{out,in}bound_packet() shorter
++ * - move to C99 style initializers
++ * - print version number at module loadtime
++ * 2003-09-22 - Version 1.5
++ * - use SNATed tcp sourceport as callid, since we get called before
++ * TCP header is mangled (Philip Craig <philipc@snapgear.com>)
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/ip.h>
++#include <linux/tcp.h>
++#include <net/tcp.h>
++#include <linux/netfilter_ipv4/ip_nat.h>
++#include <linux/netfilter_ipv4/ip_nat_rule.h>
++#include <linux/netfilter_ipv4/ip_nat_helper.h>
++#include <linux/netfilter_ipv4/ip_nat_pptp.h>
++#include <linux/netfilter_ipv4/ip_conntrack_helper.h>
++#include <linux/netfilter_ipv4/ip_conntrack_proto_gre.h>
++#include <linux/netfilter_ipv4/ip_conntrack_pptp.h>
++
++#define IP_NAT_PPTP_VERSION "1.5"
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>");
++MODULE_DESCRIPTION("Netfilter NAT helper module for PPTP");
++
++
++#if 0
++#include "ip_conntrack_pptp_priv.h"
++#define DEBUGP(format, args...) printk(KERN_DEBUG __FILE__ ":" __FUNCTION__ \
++ ": " format, ## args)
++#else
++#define DEBUGP(format, args...)
++#endif
++
++static unsigned int
++pptp_nat_expected(struct sk_buff **pskb,
++ unsigned int hooknum,
++ struct ip_conntrack *ct,
++ struct ip_nat_info *info)
++{
++ struct ip_conntrack *master = master_ct(ct);
++ struct ip_nat_multi_range mr;
++ struct ip_ct_pptp_master *ct_pptp_info;
++ struct ip_nat_pptp *nat_pptp_info;
++ u_int32_t newip, newcid;
++ int ret;
++
++ IP_NF_ASSERT(info);
++ IP_NF_ASSERT(master);
++ IP_NF_ASSERT(!(info->initialized & (1 << HOOK2MANIP(hooknum))));
++
++ DEBUGP("we have a connection!\n");
++
++ LOCK_BH(&ip_pptp_lock);
++ ct_pptp_info = &master->help.ct_pptp_info;
++ nat_pptp_info = &master->nat.help.nat_pptp_info;
++
++ /* need to alter GRE tuple because conntrack expectfn() used 'wrong'
++ * (unmanipulated) values */
++ if (HOOK2MANIP(hooknum) == IP_NAT_MANIP_DST) {
++ DEBUGP("completing tuples with NAT info \n");
++ /* we can do this, since we're unconfirmed */
++ if (ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u.gre.key ==
++ htonl(ct_pptp_info->pac_call_id)) {
++ /* assume PNS->PAC */
++ ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u.gre.key =
++ htonl(nat_pptp_info->pns_call_id);
++ ct->tuplehash[IP_CT_DIR_REPLY].tuple.dst.u.gre.key =
++ htonl(nat_pptp_info->pns_call_id);
++ newip = master->tuplehash[IP_CT_DIR_REPLY].tuple.src.ip;
++ newcid = htonl(nat_pptp_info->pac_call_id);
++ } else {
++ /* assume PAC->PNS */
++ ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u.gre.key =
++ htonl(nat_pptp_info->pac_call_id);
++ ct->tuplehash[IP_CT_DIR_REPLY].tuple.dst.u.gre.key =
++ htonl(nat_pptp_info->pac_call_id);
++ newip = master->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.ip;
++ newcid = htonl(nat_pptp_info->pns_call_id);
++ }
++ } else {
++ if (ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u.gre.key ==
++ htonl(ct_pptp_info->pac_call_id)) {
++ /* assume PNS->PAC */
++ newip = master->tuplehash[IP_CT_DIR_REPLY].tuple.dst.ip;
++ newcid = htonl(ct_pptp_info->pns_call_id);
++ }
++ else {
++ /* assume PAC->PNS */
++ newip = master->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.ip;
++ newcid = htonl(ct_pptp_info->pac_call_id);
++ }
++ }
++
++ mr.rangesize = 1;
++ mr.range[0].flags = IP_NAT_RANGE_MAP_IPS | IP_NAT_RANGE_PROTO_SPECIFIED;
++ mr.range[0].min_ip = mr.range[0].max_ip = newip;
++ mr.range[0].min = mr.range[0].max =
++ ((union ip_conntrack_manip_proto ) { newcid });
++ DEBUGP("change ip to %u.%u.%u.%u\n",
++ NIPQUAD(newip));
++ DEBUGP("change key to 0x%x\n", ntohl(newcid));
++ ret = ip_nat_setup_info(ct, &mr, hooknum);
++
++ UNLOCK_BH(&ip_pptp_lock);
++
++ return ret;
++
++}
++
++/* outbound packets == from PNS to PAC */
++static inline unsigned int
++pptp_outbound_pkt(struct sk_buff **pskb,
++ struct ip_conntrack *ct,
++ enum ip_conntrack_info ctinfo,
++ struct ip_conntrack_expect *exp)
++
++{
++ struct iphdr *iph = (*pskb)->nh.iph;
++ struct tcphdr *tcph = (void *) iph + iph->ihl*4;
++ struct pptp_pkt_hdr *pptph = (struct pptp_pkt_hdr *)
++ ((void *)tcph + tcph->doff*4);
++
++ struct PptpControlHeader *ctlh;
++ union pptp_ctrl_union pptpReq;
++ struct ip_ct_pptp_master *ct_pptp_info = &ct->help.ct_pptp_info;
++ struct ip_nat_pptp *nat_pptp_info = &ct->nat.help.nat_pptp_info;
++
++ u_int16_t msg, *cid = NULL, new_callid;
++
++ /* FIXME: size checks !!! */
++ ctlh = (struct PptpControlHeader *) ((void *) pptph + sizeof(*pptph));
++ pptpReq.rawreq = (void *) ((void *) ctlh + sizeof(*ctlh));
++
++ new_callid = htons(ct_pptp_info->pns_call_id);
++
++ switch (msg = ntohs(ctlh->messageType)) {
++ case PPTP_OUT_CALL_REQUEST:
++ cid = &pptpReq.ocreq->callID;
++ /* FIXME: ideally we would want to reserve a call ID
++ * here. current netfilter NAT core is not able to do
++ * this :( For now we use TCP source port. This breaks
++ * multiple calls within one control session */
++
++ /* save original call ID in nat_info */
++ nat_pptp_info->pns_call_id = ct_pptp_info->pns_call_id;
++
++ /* don't use tcph->source since we are at a DSTmanip
++ * hook (e.g. PREROUTING) and pkt is not mangled yet */
++ new_callid = ct->tuplehash[IP_CT_DIR_REPLY].tuple.dst.u.tcp.port;
++
++ /* save new call ID in ct info */
++ ct_pptp_info->pns_call_id = ntohs(new_callid);
++ break;
++ case PPTP_IN_CALL_REPLY:
++ cid = &pptpReq.icreq->callID;
++ break;
++ case PPTP_CALL_CLEAR_REQUEST:
++ cid = &pptpReq.clrreq->callID;
++ break;
++ default:
++ DEBUGP("unknown outbound packet 0x%04x:%s\n", msg,
++ (msg <= PPTP_MSG_MAX)? strMName[msg]:strMName[0]);
++ /* fall through */
++
++ case PPTP_SET_LINK_INFO:
++ /* only need to NAT in case PAC is behind NAT box */
++ case PPTP_START_SESSION_REQUEST:
++ case PPTP_START_SESSION_REPLY:
++ case PPTP_STOP_SESSION_REQUEST:
++ case PPTP_STOP_SESSION_REPLY:
++ case PPTP_ECHO_REQUEST:
++ case PPTP_ECHO_REPLY:
++ /* no need to alter packet */
++ return NF_ACCEPT;
++ }
++
++ IP_NF_ASSERT(cid);
++
++ DEBUGP("altering call id from 0x%04x to 0x%04x\n",
++ ntohs(*cid), ntohs(new_callid));
++
++ /* mangle packet */
++ ip_nat_mangle_tcp_packet(pskb, ct, ctinfo, (void *)cid - (void *)pptph,
++ sizeof(new_callid), (char *)&new_callid,
++ sizeof(new_callid));
++
++ return NF_ACCEPT;
++}
++
++/* inbound packets == from PAC to PNS */
++static inline unsigned int
++pptp_inbound_pkt(struct sk_buff **pskb,
++ struct ip_conntrack *ct,
++ enum ip_conntrack_info ctinfo,
++ struct ip_conntrack_expect *oldexp)
++{
++ struct iphdr *iph = (*pskb)->nh.iph;
++ struct tcphdr *tcph = (void *) iph + iph->ihl*4;
++ struct pptp_pkt_hdr *pptph = (struct pptp_pkt_hdr *)
++ ((void *)tcph + tcph->doff*4);
++
++ struct PptpControlHeader *ctlh;
++ union pptp_ctrl_union pptpReq;
++ struct ip_ct_pptp_master *ct_pptp_info = &ct->help.ct_pptp_info;
++ struct ip_nat_pptp *nat_pptp_info = &ct->nat.help.nat_pptp_info;
++
++ u_int16_t msg, new_cid = 0, new_pcid, *pcid = NULL, *cid = NULL;
++ u_int32_t old_dst_ip;
++
++ struct ip_conntrack_tuple t, inv_t;
++ struct ip_conntrack_tuple *orig_t, *reply_t;
++
++ /* FIXME: size checks !!! */
++ ctlh = (struct PptpControlHeader *) ((void *) pptph + sizeof(*pptph));
++ pptpReq.rawreq = (void *) ((void *) ctlh + sizeof(*ctlh));
++
++ new_pcid = htons(nat_pptp_info->pns_call_id);
++
++ switch (msg = ntohs(ctlh->messageType)) {
++ case PPTP_OUT_CALL_REPLY:
++ pcid = &pptpReq.ocack->peersCallID;
++ cid = &pptpReq.ocack->callID;
++ if (!oldexp) {
++ DEBUGP("outcall but no expectation\n");
++ break;
++ }
++ old_dst_ip = oldexp->tuple.dst.ip;
++ t = oldexp->tuple;
++ invert_tuplepr(&inv_t, &t);
++
++ /* save original PAC call ID in nat_info */
++ nat_pptp_info->pac_call_id = ct_pptp_info->pac_call_id;
++
++ /* alter expectation */
++ orig_t = &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
++ reply_t = &ct->tuplehash[IP_CT_DIR_REPLY].tuple;
++ if (t.src.ip == orig_t->src.ip && t.dst.ip == orig_t->dst.ip) {
++ /* expectation for PNS->PAC direction */
++ t.src.u.gre.key = htonl(nat_pptp_info->pns_call_id);
++ t.dst.u.gre.key = htonl(ct_pptp_info->pac_call_id);
++ inv_t.src.ip = reply_t->src.ip;
++ inv_t.dst.ip = reply_t->dst.ip;
++ inv_t.src.u.gre.key = htonl(nat_pptp_info->pac_call_id);
++ inv_t.dst.u.gre.key = htonl(ct_pptp_info->pns_call_id);
++ } else {
++ /* expectation for PAC->PNS direction */
++ t.src.u.gre.key = htonl(nat_pptp_info->pac_call_id);
++ t.dst.u.gre.key = htonl(ct_pptp_info->pns_call_id);
++ inv_t.src.ip = orig_t->src.ip;
++ inv_t.dst.ip = orig_t->dst.ip;
++ inv_t.src.u.gre.key = htonl(nat_pptp_info->pns_call_id);
++ inv_t.dst.u.gre.key = htonl(ct_pptp_info->pac_call_id);
++ }
++
++ if (!ip_conntrack_change_expect(oldexp, &t)) {
++ DEBUGP("successfully changed expect\n");
++ } else {
++ DEBUGP("can't change expect\n");
++ }
++ ip_ct_gre_keymap_change(oldexp->proto.gre.keymap_orig, &t);
++ ip_ct_gre_keymap_change(oldexp->proto.gre.keymap_reply, &inv_t);
++ break;
++ case PPTP_IN_CALL_CONNECT:
++ pcid = &pptpReq.iccon->peersCallID;
++ if (!oldexp)
++ break;
++ old_dst_ip = oldexp->tuple.dst.ip;
++ t = oldexp->tuple;
++
++ /* alter expectation, no need for callID */
++ if (t.dst.ip == ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.ip) {
++ /* expectation for PNS->PAC direction */
++ t.src.ip = ct->tuplehash[IP_CT_DIR_REPLY].tuple.dst.ip;
++ } else {
++ /* expectation for PAC->PNS direction */
++ t.dst.ip = ct->tuplehash[IP_CT_DIR_REPLY].tuple.dst.ip;
++ }
++
++ if (!ip_conntrack_change_expect(oldexp, &t)) {
++ DEBUGP("successfully changed expect\n");
++ } else {
++ DEBUGP("can't change expect\n");
++ }
++ break;
++ case PPTP_IN_CALL_REQUEST:
++ /* only need to nat in case PAC is behind NAT box */
++ break;
++ case PPTP_WAN_ERROR_NOTIFY:
++ pcid = &pptpReq.wanerr->peersCallID;
++ break;
++ case PPTP_CALL_DISCONNECT_NOTIFY:
++ pcid = &pptpReq.disc->callID;
++ break;
++
++ default:
++ DEBUGP("unknown inbound packet %s\n",
++ (msg <= PPTP_MSG_MAX)? strMName[msg]:strMName[0]);
++ /* fall through */
++
++ case PPTP_START_SESSION_REQUEST:
++ case PPTP_START_SESSION_REPLY:
++ case PPTP_STOP_SESSION_REQUEST:
++ case PPTP_STOP_SESSION_REPLY:
++ case PPTP_ECHO_REQUEST:
++ case PPTP_ECHO_REPLY:
++ /* no need to alter packet */
++ return NF_ACCEPT;
++ }
++
++ /* mangle packet */
++ IP_NF_ASSERT(pcid);
++ DEBUGP("altering peer call id from 0x%04x to 0x%04x\n",
++ ntohs(*pcid), ntohs(new_pcid));
++ ip_nat_mangle_tcp_packet(pskb, ct, ctinfo, (void *)pcid - (void *)pptph,
++ sizeof(new_pcid), (char *)&new_pcid,
++ sizeof(new_pcid));
++
++ if (new_cid) {
++ IP_NF_ASSERT(cid);
++ DEBUGP("altering call id from 0x%04x to 0x%04x\n",
++ ntohs(*cid), ntohs(new_cid));
++ ip_nat_mangle_tcp_packet(pskb, ct, ctinfo,
++ (void *)cid - (void *)pptph,
++ sizeof(new_cid), (char *)&new_cid,
++ sizeof(new_cid));
++ }
++
++ /* great, at least we don't need to resize packets */
++ return NF_ACCEPT;
++}
++
++
++static unsigned int tcp_help(struct ip_conntrack *ct,
++ struct ip_conntrack_expect *exp,
++ struct ip_nat_info *info,
++ enum ip_conntrack_info ctinfo,
++ unsigned int hooknum, struct sk_buff **pskb)
++{
++ struct iphdr *iph = (*pskb)->nh.iph;
++ struct tcphdr *tcph = (void *) iph + iph->ihl*4;
++ unsigned int datalen = (*pskb)->len - iph->ihl*4 - tcph->doff*4;
++ struct pptp_pkt_hdr *pptph;
++
++ int dir;
++
++ DEBUGP("entering\n");
++
++ /* Only mangle things once: DST for original direction
++ and SRC for reply direction. */
++ dir = CTINFO2DIR(ctinfo);
++ if (!((HOOK2MANIP(hooknum) == IP_NAT_MANIP_SRC
++ && dir == IP_CT_DIR_ORIGINAL)
++ || (HOOK2MANIP(hooknum) == IP_NAT_MANIP_DST
++ && dir == IP_CT_DIR_REPLY))) {
++ DEBUGP("Not touching dir %s at hook %s\n",
++ dir == IP_CT_DIR_ORIGINAL ? "ORIG" : "REPLY",
++ hooknum == NF_IP_POST_ROUTING ? "POSTROUTING"
++ : hooknum == NF_IP_PRE_ROUTING ? "PREROUTING"
++ : hooknum == NF_IP_LOCAL_OUT ? "OUTPUT"
++ : hooknum == NF_IP_LOCAL_IN ? "INPUT" : "???");
++ return NF_ACCEPT;
++ }
++
++ /* if packet is too small, just skip it */
++ if (datalen < sizeof(struct pptp_pkt_hdr)+
++ sizeof(struct PptpControlHeader)) {
++ DEBUGP("pptp packet too short\n");
++ return NF_ACCEPT;
++ }
++
++ pptph = (struct pptp_pkt_hdr *) ((void *)tcph + tcph->doff*4);
++
++ /* if it's not a control message, we can't handle it */
++ if (ntohs(pptph->packetType) != PPTP_PACKET_CONTROL ||
++ ntohl(pptph->magicCookie) != PPTP_MAGIC_COOKIE) {
++ DEBUGP("not a pptp control packet\n");
++ return NF_ACCEPT;
++ }
++
++ LOCK_BH(&ip_pptp_lock);
++
++ if (dir == IP_CT_DIR_ORIGINAL) {
++ /* reuqests sent by client to server (PNS->PAC) */
++ pptp_outbound_pkt(pskb, ct, ctinfo, exp);
++ } else {
++ /* response from the server to the client (PAC->PNS) */
++ pptp_inbound_pkt(pskb, ct, ctinfo, exp);
++ }
++
++ UNLOCK_BH(&ip_pptp_lock);
++
++ return NF_ACCEPT;
++}
++
++/* nat helper struct for control connection */
++static struct ip_nat_helper pptp_tcp_helper = {
++ .list = { NULL, NULL },
++ .name = "pptp",
++ .flags = IP_NAT_HELPER_F_ALWAYS,
++ .me = THIS_MODULE,
++ .tuple = { .src = { .ip = 0,
++ .u = { .tcp = { .port =
++ __constant_htons(PPTP_CONTROL_PORT) }
++ }
++ },
++ .dst = { .ip = 0,
++ .u = { .all = 0 },
++ .protonum = IPPROTO_TCP
++ }
++ },
++
++ .mask = { .src = { .ip = 0,
++ .u = { .tcp = { .port = 0xFFFF } }
++ },
++ .dst = { .ip = 0,
++ .u = { .all = 0 },
++ .protonum = 0xFFFF
++ }
++ },
++ .help = tcp_help,
++ .expect = pptp_nat_expected
++};
++
++
++static int __init init(void)
++{
++ DEBUGP("%s: registering NAT helper\n", __FILE__);
++ if (ip_nat_helper_register(&pptp_tcp_helper)) {
++ printk(KERN_ERR "Unable to register NAT application helper "
++ "for pptp\n");
++ return -EIO;
++ }
++
++ printk("ip_nat_pptp version %s loaded\n", IP_NAT_PPTP_VERSION);
++ return 0;
++}
++
++static void __exit fini(void)
++{
++ DEBUGP("cleanup_module\n" );
++ ip_nat_helper_unregister(&pptp_tcp_helper);
++ printk("ip_nat_pptp version %s unloaded\n", IP_NAT_PPTP_VERSION);
++}
++
++module_init(init);
++module_exit(fini);
+diff -uNr linux_org/net/ipv4/netfilter/ip_nat_proto_gre.c linux/net/ipv4/netfilter/ip_nat_proto_gre.c
+--- linux_org/net/ipv4/netfilter/ip_nat_proto_gre.c 1970-01-01 01:00:00.000000000 +0100
++++ linux/net/ipv4/netfilter/ip_nat_proto_gre.c 2006-10-27 14:11:52.000000000 +0200
+@@ -0,0 +1,225 @@
++/*
++ * ip_nat_proto_gre.c - Version 1.2
++ *
++ * NAT protocol helper module for GRE.
++ *
++ * GRE is a generic encapsulation protocol, which is generally not very
++ * suited for NAT, as it has no protocol-specific part as port numbers.
++ *
++ * It has an optional key field, which may help us distinguishing two
++ * connections between the same two hosts.
++ *
++ * GRE is defined in RFC 1701 and RFC 1702, as well as RFC 2784
++ *
++ * PPTP is built on top of a modified version of GRE, and has a mandatory
++ * field called "CallID", which serves us for the same purpose as the key
++ * field in plain GRE.
++ *
++ * Documentation about PPTP can be found in RFC 2637
++ *
++ * (C) 2000-2003 by Harald Welte <laforge@gnumonks.org>
++ *
++ * Development of this code funded by Astaro AG (http://www.astaro.com/)
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/ip.h>
++#include <linux/netfilter_ipv4/ip_nat.h>
++#include <linux/netfilter_ipv4/ip_nat_rule.h>
++#include <linux/netfilter_ipv4/ip_nat_protocol.h>
++#include <linux/netfilter_ipv4/ip_conntrack_proto_gre.h>
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>");
++MODULE_DESCRIPTION("Netfilter NAT protocol helper module for GRE");
++
++#if 0
++#define DEBUGP(format, args...) printk(KERN_DEBUG __FILE__ ":" __FUNCTION__ \
++ ": " format, ## args)
++#else
++#define DEBUGP(x, args...)
++#endif
++
++/* is key in given range between min and max */
++static int
++gre_in_range(const struct ip_conntrack_tuple *tuple,
++ enum ip_nat_manip_type maniptype,
++ const union ip_conntrack_manip_proto *min,
++ const union ip_conntrack_manip_proto *max)
++{
++ u_int32_t key;
++
++ if (maniptype == IP_NAT_MANIP_SRC)
++ key = tuple->src.u.gre.key;
++ else
++ key = tuple->dst.u.gre.key;
++
++ return ntohl(key) >= ntohl(min->gre.key)
++ && ntohl(key) <= ntohl(max->gre.key);
++}
++
++/* generate unique tuple ... */
++static int
++gre_unique_tuple(struct ip_conntrack_tuple *tuple,
++ const struct ip_nat_range *range,
++ enum ip_nat_manip_type maniptype,
++ const struct ip_conntrack *conntrack)
++{
++ u_int32_t min, i, range_size;
++ u_int32_t key = 0, *keyptr;
++
++ if (maniptype == IP_NAT_MANIP_SRC)
++ keyptr = &tuple->src.u.gre.key;
++ else
++ keyptr = &tuple->dst.u.gre.key;
++
++ if (!(range->flags & IP_NAT_RANGE_PROTO_SPECIFIED)) {
++
++ switch (tuple->dst.u.gre.version) {
++ case 0:
++ DEBUGP("NATing GRE version 0 (ct=%p)\n",
++ conntrack);
++ min = 1;
++ range_size = 0xffffffff;
++ break;
++ case GRE_VERSION_PPTP:
++ DEBUGP("%p: NATing GRE PPTP\n",
++ conntrack);
++ min = 1;
++ range_size = 0xffff;
++ break;
++ default:
++ printk(KERN_WARNING "nat_gre: unknown GRE version\n");
++ return 0;
++ break;
++ }
++
++ } else {
++ min = ntohl(range->min.gre.key);
++ range_size = ntohl(range->max.gre.key) - min + 1;
++ }
++
++ DEBUGP("min = %u, range_size = %u\n", min, range_size);
++
++ for (i = 0; i < range_size; i++, key++) {
++ *keyptr = htonl(min + key % range_size);
++ if (!ip_nat_used_tuple(tuple, conntrack))
++ return 1;
++ }
++
++ DEBUGP("%p: no NAT mapping\n", conntrack);
++
++ return 0;
++}
++
++/* manipulate a GRE packet according to maniptype */
++static void
++gre_manip_pkt(struct iphdr *iph, size_t len,
++ const struct ip_conntrack_manip *manip,
++ enum ip_nat_manip_type maniptype)
++{
++ struct gre_hdr *greh = (struct gre_hdr *)((u_int32_t *)iph+iph->ihl);
++ struct gre_hdr_pptp *pgreh = (struct gre_hdr_pptp *) greh;
++
++ /* we only have destination manip of a packet, since 'source key'
++ * is not present in the packet itself */
++ if (maniptype == IP_NAT_MANIP_DST) {
++ /* key manipulation is always dest */
++ switch (greh->version) {
++ case 0:
++ if (!greh->key) {
++ DEBUGP("can't nat GRE w/o key\n");
++ break;
++ }
++ if (greh->csum) {
++ /* FIXME: Never tested this code... */
++ *(gre_csum(greh)) =
++ ip_nat_cheat_check(~*(gre_key(greh)),
++ manip->u.gre.key,
++ *(gre_csum(greh)));
++ }
++ *(gre_key(greh)) = manip->u.gre.key;
++ break;
++ case GRE_VERSION_PPTP:
++ DEBUGP("call_id -> 0x%04x\n",
++ ntohl(manip->u.gre.key));
++ pgreh->call_id = htons(ntohl(manip->u.gre.key));
++ break;
++ default:
++ DEBUGP("can't nat unknown GRE version\n");
++ break;
++ }
++ }
++}
++
++/* print out a nat tuple */
++static unsigned int
++gre_print(char *buffer,
++ const struct ip_conntrack_tuple *match,
++ const struct ip_conntrack_tuple *mask)
++{
++ unsigned int len = 0;
++
++ if (mask->dst.u.gre.version)
++ len += sprintf(buffer + len, "version=%d ",
++ ntohs(match->dst.u.gre.version));
++
++ if (mask->dst.u.gre.protocol)
++ len += sprintf(buffer + len, "protocol=0x%x ",
++ ntohs(match->dst.u.gre.protocol));
++
++ if (mask->src.u.gre.key)
++ len += sprintf(buffer + len, "srckey=0x%x ",
++ ntohl(match->src.u.gre.key));
++
++ if (mask->dst.u.gre.key)
++ len += sprintf(buffer + len, "dstkey=0x%x ",
++ ntohl(match->src.u.gre.key));
++
++ return len;
++}
++
++/* print a range of keys */
++static unsigned int
++gre_print_range(char *buffer, const struct ip_nat_range *range)
++{
++ if (range->min.gre.key != 0
++ || range->max.gre.key != 0xFFFF) {
++ if (range->min.gre.key == range->max.gre.key)
++ return sprintf(buffer, "key 0x%x ",
++ ntohl(range->min.gre.key));
++ else
++ return sprintf(buffer, "keys 0x%u-0x%u ",
++ ntohl(range->min.gre.key),
++ ntohl(range->max.gre.key));
++ } else
++ return 0;
++}
++
++/* nat helper struct */
++static struct ip_nat_protocol gre =
++ { { NULL, NULL }, "GRE", IPPROTO_GRE,
++ gre_manip_pkt,
++ gre_in_range,
++ gre_unique_tuple,
++ gre_print,
++ gre_print_range
++ };
++
++static int __init init(void)
++{
++ if (ip_nat_protocol_register(&gre))
++ return -EIO;
++
++ return 0;
++}
++
++static void __exit fini(void)
++{
++ ip_nat_protocol_unregister(&gre);
++}
++
++module_init(init);
++module_exit(fini);
diff --git a/packages/linux/linux-mtx-1_2.4.27.bb b/packages/linux/linux-mtx-1_2.4.27.bb
index e46c3c723d..09916c9022 100644
--- a/packages/linux/linux-mtx-1_2.4.27.bb
+++ b/packages/linux/linux-mtx-1_2.4.27.bb
@@ -36,6 +36,7 @@ SRC_URI = "cvs://cvs:cvs@ftp.linux-mips.org/home/cvs;module=linux;tag=linux_2_4_
file://27-usbd-amd-pb1x00-kit-23may2003-usbd.diff;patch=1 \
file://29-au1000-pci-config-clear-errors.diff;patch=1 \
file://42-usb-ohci-fixes.patch;patch=1 \
+ file://48-pptp.patch;patch=1 \
file://defconfig-mtx-1"
S = "${WORKDIR}/linux"
diff --git a/packages/linux/linux-mtx-2-2.4.27/45-acm-tty-and-sb2.patch b/packages/linux/linux-mtx-2-2.4.27/45-acm-tty-and-sb2.patch
new file mode 100644
index 0000000000..4561facb73
--- /dev/null
+++ b/packages/linux/linux-mtx-2-2.4.27/45-acm-tty-and-sb2.patch
@@ -0,0 +1,721 @@
+--- linux/drivers/usb/acm.c-orig 2007-04-13 18:32:16.352672105 +0200
++++ linux/drivers/usb/acm.c 2007-04-13 18:33:21.063526545 +0200
+@@ -124,6 +124,9 @@
+ #define ACM_CTRL_PARITY 0x20
+ #define ACM_CTRL_OVERRUN 0x40
+
++// some devices don't have one comm and one data interface, but only one interface with endpoints for comm and data
++#define SINGLE_IF_ACM 0x01
++
+ /*
+ * Line speed and caracter encoding.
+ */
+@@ -139,6 +142,8 @@
+ * Internal driver structures.
+ */
+
++#define TD_SIZE 16384
++
+ struct acm {
+ struct usb_device *dev; /* the coresponding usb device */
+ struct usb_interface *iface; /* the interfaces - +0 control +1 data */
+@@ -153,12 +158,23 @@
+ unsigned int minor; /* acm minor number */
+ unsigned char throttle; /* throttled by tty layer */
+ unsigned char clocal; /* termios CLOCAL */
++ unsigned long throttle_start;
++ unsigned char resubmit_to_unthrottle; /* Leftover data from last operation */
++ unsigned char *throttle_data;
++ int td_len;
++ int td_busy;
++ unsigned char used_interfaces;
++ struct semaphore mutex;
+ };
+
++#define mutex_lock(x) down(x)
++#define mutex_unlock(x) up(x)
++
+ /* global params controlling max sizes for read, write, control */
+ static int maxszr = 0;
+ static int maxszw = 0;
+ static int maxszc = 0;
++static int nonlegacy = 0;
+
+ static struct usb_driver acm_driver;
+ static struct tty_driver acm_tty_driver;
+@@ -167,6 +183,95 @@
+ #define ACM_READY(acm) (acm && acm->dev && acm->used)
+
+ /*
++ * Helper functions to optimize throttleing
++ */
++static int
++acm_fill_tty(struct urb *urb, struct tty_struct *tty, unsigned char *data, int length)
++{
++ struct acm *acm = urb->context;
++ int n = 0;
++ /*printk("acm_fill_tty: %d bytes\n", length);*/
++ if (!urb->status && !acm->throttle) {
++ for (n = 0; n < length && !acm->throttle; n++) {
++ /* if we insert more than TTY_FLIPBUF_SIZE characters,
++ * we drop them. */
++ if (tty->flip.count >= TTY_FLIPBUF_SIZE) {
++ tty_flip_buffer_push(tty);
++ }
++ tty_insert_flip_char(tty, data[n], 0);
++ }
++ tty_flip_buffer_push(tty);
++ }
++ /*printk("copied %d bytes.\n", n);*/
++ return n;
++}
++
++static int
++acm_shift_if_throttle(unsigned char *data, int *length, int shift_by)
++{
++ if (shift_by < *length) {
++ dbg("need to shift uncopied %d bytes to front.", *length - shift_by);
++ memmove(data, data + shift_by, *length - shift_by);
++ *length -= shift_by;
++ return 1;
++ }
++ return 0;
++}
++
++static int
++acm_buffer_if_thottle(struct acm *acm, unsigned char *data, int start, int *length)
++{
++ int copied = *length;
++ if (start < *length) {
++ int space = TD_SIZE - acm->td_len;
++ int needed = *length - start;
++ copied = (space < needed)? space: needed;
++ dbg("need to push %d to throttle buffer, can copy %d.",
++ needed, copied);
++ memcpy(acm->throttle_data + acm->td_len, data, copied);
++ acm->td_len += copied;
++ *length -= copied;
++ }
++ return copied;
++}
++
++static int
++acm_empty_throttle(struct urb *urb, struct tty_struct *tty)
++{
++ unsigned long flags;
++ struct acm *acm = urb->context;
++
++ save_flags(flags);
++ cli();
++
++ if (acm->td_busy) {
++ restore_flags(flags);
++ return 0;
++ }
++ acm->td_busy = 1;
++ restore_flags(flags);
++
++ if (acm->td_len > 0) {
++
++ dbg("acm_empty_throttle: trying to empty throttle buffer: %d bytes.",
++ acm->td_len);
++
++ /* if there has been something left from previous operations
++ * we try to complete this before looking at the urb */
++ int copied = acm_fill_tty(urb, tty, acm->throttle_data, acm->td_len);
++ if (acm_shift_if_throttle(acm->throttle_data, &acm->td_len, copied)) {
++ /* we were unable to empty the throttle data, so we can't
++ * copy anything more now */
++ acm->td_busy = 0;
++ return 0;
++ }
++ acm->td_len = 0;
++ }
++ acm->td_busy = 0;
++ return 1;
++}
++
++/*
+ * Functions for ACM control messages.
+ */
+
+@@ -174,7 +279,10 @@
+ {
+ int retval = usb_control_msg(acm->dev, usb_sndctrlpipe(acm->dev, 0),
+ request, USB_RT_ACM, value, acm->iface[0].altsetting[0].bInterfaceNumber, buf, len, HZ * 5);
+- dbg("acm_control_msg: rq: 0x%02x val: %#x len: %#x result: %d", request, value, len, retval);
++ if (retval < 0)
++ err("acm_control_msg: rq: 0x%02x val: %#x len: %#x result: %d", request, value, len, retval);
++ else
++ dbg("acm_control_msg: rq: 0x%02x val: %#x len: %#x result: %d", request, value, len, retval);
+ return retval < 0 ? retval : 0;
+ }
+
+@@ -191,10 +299,12 @@
+ struct acm *acm = urb->context;
+ struct usb_ctrlrequest *dr = urb->transfer_buffer;
+ unsigned char *data = (unsigned char *)(dr + 1);
+- int newctrl;
++ int newctrl, s1, s2;
+
+ if (!ACM_READY(acm)) return;
+
++ //err("acm_ctrl_irq %p %i", urb, dr->bRequestType);
++
+ if (urb->status < 0) {
+ dbg("nonzero ctrl irq status received: %d", urb->status);
+ return;
+@@ -226,8 +336,15 @@
+
+ return;
+
++ case 0x2a:
++ s1 = le32_to_cpup((__u32 *) data);
++ s2 = le32_to_cpup((__u32 *) (data+4));
++
++ dbg("acm.c: ctrl 0x2a: idx %i len %i speed %i %i", dr->wIndex, dr->wLength, s1, s2);
++ return;
++
+ default:
+- dbg("unknown control event received: request %d index %d len %d data0 %d data1 %d",
++ err("unknown control event received: request %d index %d len %d data0 %d data1 %d",
+ dr->bRequest, dr->wIndex, dr->wLength, data[0], data[1]);
+ return;
+ }
+@@ -238,36 +355,39 @@
+ struct acm *acm = urb->context;
+ struct tty_struct *tty = acm->tty;
+ unsigned char *data = urb->transfer_buffer;
+- int i = 0;
++ int copied = 0;
++ int buffered = 0;
+
+ if (!ACM_READY(acm)) return;
+
+- if (urb->status)
+- dbg("nonzero read bulk status received: %d", urb->status);
++ if (urb->status) {
++ err("nonzero read bulk status received: %d", urb->status);
++ }
+
+- if (!urb->status && !acm->throttle) {
+- for (i = 0; i < urb->actual_length && !acm->throttle; i++) {
+- /* if we insert more than TTY_FLIPBUF_SIZE characters,
+- * we drop them. */
+- if (tty->flip.count >= TTY_FLIPBUF_SIZE) {
+- tty_flip_buffer_push(tty);
+- }
+- tty_insert_flip_char(tty, data[i], 0);
+- }
+- tty_flip_buffer_push(tty);
++ if (!acm_empty_throttle(urb, tty)) {
++ dbg("could not empty throttle buffer, entering throttle state, acm->td_busy: %d.", acm->td_busy);
+ }
+
++ /* got here, either there was nothing in the throttle data or it could
++ * all be copied without throttleing again */
++ copied = acm_fill_tty(urb, tty, data, urb->actual_length);
+ if (acm->throttle) {
+- memmove(data, data + i, urb->actual_length - i);
+- urb->actual_length -= i;
+- return;
++ int length = urb->actual_length;
++ buffered = acm_buffer_if_thottle(acm, data, copied, &urb->actual_length);
++ if (buffered < length - copied
++ && acm_shift_if_throttle(data, &urb->actual_length, copied + buffered)) {
++ dbg("need to resubmit to unthrottle\n");
++ acm->resubmit_to_unthrottle = 1;
++ return;
++ }
+ }
+
+ urb->actual_length = 0;
+ urb->dev = acm->dev;
+
+- if (usb_submit_urb(urb))
++ if (usb_submit_urb(urb)) {
+ dbg("failed resubmitting read urb");
++ }
+ }
+
+ static void acm_write_bulk(struct urb *urb)
+@@ -283,6 +403,9 @@
+ mark_bh(IMMEDIATE_BH);
+ }
+
++static int unlinking_in_progress=0;
++static int closing=0;
++
+ static void acm_softint(void *private)
+ {
+ struct acm *acm = private;
+@@ -306,34 +429,57 @@
+
+ if (!acm || !acm->dev) return -EINVAL;
+
++ mutex_lock (&acm->mutex);
++
+ tty->driver_data = acm;
+ acm->tty = tty;
+
+ MOD_INC_USE_COUNT;
+
+- lock_kernel();
++ if ( closing )
++ err("acm_tty_open: potential possibility of race condition detected");
++
++ if ( unlinking_in_progress ) {
++ err("acm_tty_open: cannot open because unlinking_in_progress %i", acm->used);
++ mutex_unlock (&acm->mutex);
++ return -1;
++ }
+
+- if (acm->used++) {
+- unlock_kernel();
+- return 0;
+- }
++ if (acm->used) {
++ acm->used++;
++ mutex_unlock (&acm->mutex);
++ return 0;
++ }
+
+- unlock_kernel();
++ unlinking_in_progress=1;
++ err("acm_tty_open: %i %p !!", acm->used, tty);
++
++ acm->resubmit_to_unthrottle = 0;
++ acm->td_len = 0;
++ acm->td_busy = 0;
+
+ acm->ctrlurb.dev = acm->dev;
+ if (usb_submit_urb(&acm->ctrlurb))
+- dbg("usb_submit_urb(ctrl irq) failed");
++ dbg("acm open: usb_submit_urb(ctrl irq) failed");
++ else
++ dbg("acm open: ctrlurb %p submitted", &acm->ctrlurb);
++
++ acm->used++;
++ acm_set_control(acm, acm->ctrlout = ACM_CTRL_DTR | ACM_CTRL_RTS);
+
+ acm->readurb.dev = acm->dev;
+ if (usb_submit_urb(&acm->readurb))
+- dbg("usb_submit_urb(read bulk) failed");
+-
+- acm_set_control(acm, acm->ctrlout = ACM_CTRL_DTR | ACM_CTRL_RTS);
++ dbg("acm open: usb_submit_urb(read bulk) failed");
++ else
++ dbg("acm open: readurb %p submitted", &acm->readurb);
+
+- /* force low_latency on so that our tty_push actually forces the data through,
++ /* force low_latency on so that our tty_push actually forces the data through,
+ otherwise it is scheduled, and with high data rates data can get lost. */
+ tty->low_latency = 1;
+
++ unlinking_in_progress=0;
++ mutex_unlock (&acm->mutex);
++
+ return 0;
+ }
+
+@@ -343,19 +489,35 @@
+
+ if (!acm || !acm->used) return;
+
+- if (!--acm->used) {
+- if (acm->dev) {
+- acm_set_control(acm, acm->ctrlout = 0);
+- usb_unlink_urb(&acm->ctrlurb);
+- usb_unlink_urb(&acm->writeurb);
+- usb_unlink_urb(&acm->readurb);
+- } else {
+- tty_unregister_devfs(&acm_tty_driver, acm->minor);
+- acm_table[acm->minor] = NULL;
+- kfree(acm);
+- }
++ mutex_lock (&acm->mutex);
++
++ closing = 1;
++ if (--acm->used) {
++ closing=0;
++ MOD_DEC_USE_COUNT;
++ mutex_unlock (&acm->mutex);
++ return;
++ }
++ unlinking_in_progress = 1;
++
++ err("acm_tty_close: %i %p", acm->used, tty);
++
++ if (acm->dev) {
++ acm_set_control(acm, acm->ctrlout = 0);
++ usb_unlink_urb(&acm->ctrlurb);
++ usb_unlink_urb(&acm->writeurb);
++ usb_unlink_urb(&acm->readurb);
++ } else {
++ tty_unregister_devfs(&acm_tty_driver, acm->minor);
++ acm_table[acm->minor] = NULL;
++ kfree(acm->throttle_data);
++ kfree(acm);
+ }
++
++ closing=0;
++ unlinking_in_progress = 0;
+ MOD_DEC_USE_COUNT;
++ mutex_unlock (&acm->mutex);
+ }
+
+ static int acm_tty_write(struct tty_struct *tty, int from_user, const unsigned char *buf, int count)
+@@ -363,8 +525,16 @@
+ struct acm *acm = tty->driver_data;
+
+ if (!ACM_READY(acm)) return -EINVAL;
+- if (acm->writeurb.status == -EINPROGRESS) return 0;
+- if (!count) return 0;
++
++ if (acm->writeurb.status == -EINPROGRESS) {
++ dbg("tty_write in progress");
++ return 0;
++ }
++
++ if (!count) {
++ dbg("tty_write: nothing to write");
++ return 0;
++ }
+
+ count = (count > acm->writesize) ? acm->writesize : count;
+
+@@ -401,22 +571,44 @@
+ {
+ struct acm *acm = tty->driver_data;
+ if (!ACM_READY(acm)) return;
++ dbg("acm_tty_throttle ON %ld ---> %ld", jiffies-acm->throttle_start, jiffies);
+ acm->throttle = 1;
++ acm->throttle_start = jiffies;
+ }
+
+ static void acm_tty_unthrottle(struct tty_struct *tty)
+ {
+ struct acm *acm = tty->driver_data;
+ if (!ACM_READY(acm)) return;
++ dbg("acm_tty_throttle OFF %ld ---> %ld", jiffies, jiffies-acm->throttle_start);
+ acm->throttle = 0;
+- if (acm->readurb.status != -EINPROGRESS)
++
++ if (!acm_empty_throttle(&acm->readurb, tty)) {
++ if (acm->td_busy) {
++ printk("***** pending acm_empty_throttle!\n");
++ } else {
++ dbg("throttle not emptied.\n");
++ }
++ }
++
++ if (acm->resubmit_to_unthrottle != 0) {
++ dbg("resubmit_to_unthrottle: acm_read_bulk");
++ acm->resubmit_to_unthrottle = 0;
+ acm_read_bulk(&acm->readurb);
++ }
+ }
+
+ static void acm_tty_break_ctl(struct tty_struct *tty, int state)
+ {
+ struct acm *acm = tty->driver_data;
++
+ if (!ACM_READY(acm)) return;
++
++ if (nonlegacy) {
++ err("non-legacy port, skipping acm_tty_break_ctl");
++ return;
++ }
++
+ if (acm_send_break(acm, state ? 0xffff : 0))
+ dbg("send break failed");
+ }
+@@ -455,7 +647,19 @@
+ case TIOCMBIC: newctrl &= ~mask; break;
+ }
+
+- if (acm->ctrlout == newctrl) return 0;
++ if (acm->ctrlout == newctrl) {
++ dbg("acm_tty_ioctl: set old state %x", newctrl);
++ return 0;
++ }
++
++ err("acm_tty_ioctl: %s%s%s -> dtr%s rts%s (%lx)",
++ cmd==TIOCMBIC?"Clear":(cmd==TIOCMBIS?"Set":"SET"),
++ mask & ACM_CTRL_DTR ? " DTR":"",
++ mask & ACM_CTRL_RTS ? " RTS":"",
++ newctrl & ACM_CTRL_DTR ? "+":"-",
++ newctrl & ACM_CTRL_RTS ? "+":"-",
++ arg);
++
+ return acm_set_control(acm, acm->ctrlout = newctrl);
+ }
+
+@@ -483,6 +687,12 @@
+
+ if (!ACM_READY(acm)) return;
+
++ if (nonlegacy) {
++ acm->clocal = ((termios->c_cflag & CLOCAL) != 0);
++ dbg("non-legacy port, skipping acm_tty_set_termios");
++ return;
++ }
++
+ newline.speed = cpu_to_le32p(acm_tty_speed +
+ (termios->c_cflag & CBAUD & ~CBAUDEX) + (termios->c_cflag & CBAUDEX ? 15 : 0));
+ newline.stopbits = termios->c_cflag & CSTOPB ? 2 : 0;
+@@ -518,34 +727,64 @@
+ struct usb_config_descriptor *cfacm;
+ struct usb_interface_descriptor *ifcom, *ifdata;
+ struct usb_endpoint_descriptor *epctrl, *epread, *epwrite;
+- int readsize, ctrlsize, minor, i, j;
++ int readsize, ctrlsize, minor, i;
+ unsigned char *buf;
++ unsigned char used_interfaces=2;
+
+ for (i = 0; i < dev->descriptor.bNumConfigurations; i++) {
+
+ cfacm = dev->config + i;
+
+- dbg("probing config %d", cfacm->bConfigurationValue);
++ ifcom = cfacm->interface[ifnum].altsetting + 0;
++
++ if (id->driver_info == SINGLE_IF_ACM) {
++ printk("using single_if_acm\n");
++ struct usb_endpoint_descriptor *ep=ifcom->endpoint;
++ int k;
++
++ if (ifcom->bNumEndpoints != 3) {
++ continue;
++ }
++
++ epctrl = epread = epwrite = NULL;
++ for (k=0; k<3; ++k, ++ep) {
++ if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT &&
++ (ep->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++ epctrl = ep;
++ } else if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK &&
++ (ep->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++ epread = ep;
++ } else if ( (ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK) {
++ epwrite = ep;
++ }
++ }
+
+- for (j = 0; j < cfacm->bNumInterfaces - 1; j++) {
++ if ( !epctrl || !epread || !epwrite ) {
++ dbg("SINGLE_IF_ACM acm_probe inv eps epctrl %s epread %s epwrite %s", epctrl?"ok":"missing",
++ epread?"ok":"missing", epwrite?"ok":"missing");
++ dbg("SINGLE_IF_ACM Invalid enpoint configuration");
++ continue;
++ }
+
+- if (usb_interface_claimed(cfacm->interface + j) ||
+- usb_interface_claimed(cfacm->interface + j + 1))
++ used_interfaces = 1;
++ } else {
++ if ((ifnum+1)>=cfacm->bNumInterfaces || usb_interface_claimed(cfacm->interface + ifnum + 1)) {
++ // no data interface available
+ continue;
++ }
+
+- ifcom = cfacm->interface[j].altsetting + 0;
+- ifdata = cfacm->interface[j + 1].altsetting + 0;
++ ifdata = cfacm->interface[ifnum + 1].altsetting + 0;
+
+ if (ifdata->bInterfaceClass != 10 || ifdata->bNumEndpoints < 2) {
+- ifcom = cfacm->interface[j + 1].altsetting + 0;
+- ifdata = cfacm->interface[j].altsetting + 0;
++ ifcom = cfacm->interface[ifnum + 1].altsetting + 0;
++ ifdata = cfacm->interface[ifnum].altsetting + 0;
+ if (ifdata->bInterfaceClass != 10 || ifdata->bNumEndpoints < 2)
+ continue;
+ }
+
+ if (ifcom->bInterfaceClass != 2 || ifcom->bInterfaceSubClass != 2 ||
+- ifcom->bInterfaceProtocol < 1 || ifcom->bInterfaceProtocol > 6 ||
+- ifcom->bNumEndpoints < 1)
++ ifcom->bInterfaceProtocol < 1 || ifcom->bInterfaceProtocol > 6 ||
++ ifcom->bNumEndpoints < 1)
+ continue;
+
+ epctrl = ifcom->endpoint + 0;
+@@ -553,76 +792,86 @@
+ epwrite = ifdata->endpoint + 1;
+
+ if ((epctrl->bEndpointAddress & 0x80) != 0x80 || (epctrl->bmAttributes & 3) != 3 ||
+- (epread->bmAttributes & 3) != 2 || (epwrite->bmAttributes & 3) != 2 ||
+- ((epread->bEndpointAddress & 0x80) ^ (epwrite->bEndpointAddress & 0x80)) != 0x80)
++ (epread->bmAttributes & 3) != 2 || (epwrite->bmAttributes & 3) != 2 ||
++ ((epread->bEndpointAddress & 0x80) ^ (epwrite->bEndpointAddress & 0x80)) != 0x80)
+ continue;
+
+- dbg("using interface %d\n", j);
+-
+ if ((epread->bEndpointAddress & 0x80) != 0x80) {
+ epread = ifdata->endpoint + 1;
+ epwrite = ifdata->endpoint + 0;
+ }
++ }
+
+- usb_set_configuration(dev, cfacm->bConfigurationValue);
++ usb_set_configuration(dev, cfacm->bConfigurationValue);
+
+- for (minor = 0; minor < ACM_TTY_MINORS && acm_table[minor]; minor++);
+- if (acm_table[minor]) {
+- err("no more free acm devices");
+- return NULL;
+- }
++ for (minor = 0; minor < ACM_TTY_MINORS && acm_table[minor]; minor++);
++ if (acm_table[minor]) {
++ err("no more free acm devices");
++ return NULL;
++ }
+
+- if (!(acm = kmalloc(sizeof(struct acm), GFP_KERNEL))) {
+- err("out of memory");
+- return NULL;
+- }
+- memset(acm, 0, sizeof(struct acm));
++ if (!(acm = kmalloc(sizeof(struct acm), GFP_KERNEL))) {
++ err("out of memory");
++ return NULL;
++ }
++ memset(acm, 0, sizeof(struct acm));
+
+- ctrlsize = (epctrl->wMaxPacketSize > maxszc)?
+- epctrl->wMaxPacketSize: maxszc;
+- readsize = (epread->wMaxPacketSize > maxszr)?
+- epread->wMaxPacketSize: maxszr;
+- acm->writesize = (epwrite->wMaxPacketSize > maxszw)?
+- epwrite->wMaxPacketSize: maxszw;
+-
+- acm->iface = cfacm->interface + j;
+- acm->minor = minor;
+- acm->dev = dev;
+-
+- acm->tqueue.routine = acm_softint;
+- acm->tqueue.data = acm;
+-
+- if (!(buf = kmalloc(ctrlsize + readsize + acm->writesize, GFP_KERNEL))) {
+- err("out of memory");
+- kfree(acm);
+- return NULL;
+- }
++ ctrlsize = (epctrl->wMaxPacketSize > maxszc)?
++ epctrl->wMaxPacketSize: maxszc;
++ readsize = (epread->wMaxPacketSize > maxszr)?
++ epread->wMaxPacketSize: maxszr;
++ acm->writesize = (epwrite->wMaxPacketSize > maxszw)?
++ epwrite->wMaxPacketSize: maxszw;
++
++ init_MUTEX (&acm->mutex);
++ if (!(acm->throttle_data = kmalloc(TD_SIZE * sizeof (*acm->throttle_data), GFP_KERNEL))) {
++ err("out of memory (throttle_data)");
++ kfree(acm);
++ return NULL;
++ }
++ acm->iface = cfacm->interface + ifnum;
++ acm->minor = minor;
++ acm->dev = dev;
+
+- FILL_INT_URB(&acm->ctrlurb, dev, usb_rcvintpipe(dev, epctrl->bEndpointAddress),
+- buf, ctrlsize, acm_ctrl_irq, acm, epctrl->bInterval);
++ acm->used_interfaces = used_interfaces;
+
+- FILL_BULK_URB(&acm->readurb, dev, usb_rcvbulkpipe(dev, epread->bEndpointAddress),
+- buf += ctrlsize, readsize, acm_read_bulk, acm);
+- acm->readurb.transfer_flags |= USB_NO_FSBR;
++ acm->tqueue.routine = acm_softint;
++ acm->tqueue.data = acm;
+
+- FILL_BULK_URB(&acm->writeurb, dev, usb_sndbulkpipe(dev, epwrite->bEndpointAddress),
+- buf += readsize, acm->writesize, acm_write_bulk, acm);
+- acm->writeurb.transfer_flags |= USB_NO_FSBR;
++ if (!(buf = kmalloc(ctrlsize + readsize + acm->writesize, GFP_KERNEL))) {
++ err("out of memory (urb buf)");
++ kfree(acm);
++ return NULL;
++ }
+
+- printk(KERN_INFO "ttyACM%d: USB ACM device\n", minor);
++ FILL_INT_URB(&acm->ctrlurb, dev, usb_rcvintpipe(dev, epctrl->bEndpointAddress),
++ buf, ctrlsize, acm_ctrl_irq, acm, epctrl->bInterval);
+
+- acm_set_control(acm, acm->ctrlout);
++ FILL_BULK_URB(&acm->readurb, dev, usb_rcvbulkpipe(dev, epread->bEndpointAddress),
++ buf += ctrlsize, readsize, acm_read_bulk, acm);
++ acm->readurb.transfer_flags |= USB_NO_FSBR;
+
+- acm->line.speed = cpu_to_le32(9600);
+- acm->line.databits = 8;
+- acm_set_line(acm, &acm->line);
++ FILL_BULK_URB(&acm->writeurb, dev, usb_sndbulkpipe(dev, epwrite->bEndpointAddress),
++ buf += readsize, acm->writesize, acm_write_bulk, acm);
++ acm->writeurb.transfer_flags |= USB_NO_FSBR;
+
+- usb_driver_claim_interface(&acm_driver, acm->iface + 0, acm);
+- usb_driver_claim_interface(&acm_driver, acm->iface + 1, acm);
++ printk(KERN_INFO "ttyACM%d: USB ACM device C %p W %p R %p %x\n", minor, &acm->ctrlurb,
++ &acm->writeurb, &acm->readurb, acm->ctrlout);
++
++ acm_set_control(acm, acm->ctrlout);
+
+- tty_register_devfs(&acm_tty_driver, 0, minor);
+- return acm_table[minor] = acm;
++ acm->line.speed = cpu_to_le32(9600);
++ acm->line.databits = 8;
++ acm_set_line(acm, &acm->line);
++
++ if ( acm->used_interfaces == 2 ) {
++ // only just checked interface is claimed automatically, so claim data interface too
++ usb_driver_claim_interface(&acm_driver, acm->iface + 1, acm);
+ }
++
++ tty_register_devfs(&acm_tty_driver, 0, minor);
++
++ return acm_table[minor] = acm;
+ }
+
+ return NULL;
+@@ -646,7 +895,9 @@
+ kfree(acm->ctrlurb.transfer_buffer);
+
+ usb_driver_release_interface(&acm_driver, acm->iface + 0);
+- usb_driver_release_interface(&acm_driver, acm->iface + 1);
++ if ( acm->used_interfaces == 2 ) {
++ usb_driver_release_interface(&acm_driver, acm->iface + 1);
++ }
+
+ if (!acm->used) {
+ tty_unregister_devfs(&acm_tty_driver, acm->minor);
+@@ -665,6 +916,9 @@
+
+ static struct usb_device_id acm_ids[] = {
+ { USB_DEVICE(0x22B8, 0x1005) }, /* Motorola TimePort 280 */
++ { USB_DEVICE(0x05C6, 0x7001), driver_info: SINGLE_IF_ACM }, /* Siemens HC15/HC25 */
++ { USB_DEVICE(0x0681, 0x003e), driver_info: SINGLE_IF_ACM }, /* Siemens HC15/HC25 */
++ { USB_DEVICE(0x22B8, 0x1006) },
+ { USB_DEVICE_INFO(USB_CLASS_COMM, 0, 0) },
+ { USB_DEVICE_INFO(USB_CLASS_COMM, 2, 0) },
+ { }
+@@ -735,7 +989,7 @@
+ return -1;
+ }
+
+- info(DRIVER_VERSION ":" DRIVER_DESC);
++ info(DRIVER_VERSION ":" DRIVER_DESC "(non-legacy %d)", nonlegacy);
+
+ return 0;
+ }
+@@ -759,7 +1013,9 @@
+ MODULE_PARM(maxszc, "i");
+ MODULE_PARM_DESC(maxszc, "User specified USB endpoint control size");
+
++MODULE_PARM(nonlegacy, "i");
++MODULE_PARM_DESC(nonlegacy, "Set this to 1 to for use with non-legacy device");
++
+ MODULE_AUTHOR( DRIVER_AUTHOR );
+ MODULE_DESCRIPTION( DRIVER_DESC );
+ MODULE_LICENSE("GPL");
+-
diff --git a/packages/linux/linux-mtx-2-2.4.27/45-acm-tty.patch b/packages/linux/linux-mtx-2-2.4.27/45-acm-tty.patch
deleted file mode 100644
index 028d10ad9a..0000000000
--- a/packages/linux/linux-mtx-2-2.4.27/45-acm-tty.patch
+++ /dev/null
@@ -1,252 +0,0 @@
---- linux/drivers/usb/acm.c~45-acm-tty.patch 2006-06-07 11:21:21.648422000 +0200
-+++ linux/drivers/usb/acm.c 2006-06-09 17:20:51.735793750 +0200
-@@ -139,6 +139,8 @@
- * Internal driver structures.
- */
-
-+#define TD_SIZE 16384
-+
- struct acm {
- struct usb_device *dev; /* the coresponding usb device */
- struct usb_interface *iface; /* the interfaces - +0 control +1 data */
-@@ -153,6 +155,11 @@
- unsigned int minor; /* acm minor number */
- unsigned char throttle; /* throttled by tty layer */
- unsigned char clocal; /* termios CLOCAL */
-+ unsigned long throttle_start;
-+ unsigned char resubmit_to_unthrottle; /* Leftover data from last operation */
-+ unsigned char *throttle_data;
-+ int td_len;
-+ int td_busy;
- };
-
- /* global params controlling max sizes for read, write, control */
-@@ -166,6 +173,96 @@
-
- #define ACM_READY(acm) (acm && acm->dev && acm->used)
-
-+
-+/*
-+ * Helper functions to optimize throttleing
-+ */
-+static int
-+acm_fill_tty(struct urb *urb, struct tty_struct *tty, unsigned char *data, int length)
-+{
-+ struct acm *acm = urb->context;
-+ int n = 0;
-+ /*printk("acm_fill_tty: %d bytes\n", length);*/
-+ if (!urb->status && !acm->throttle) {
-+ for (n = 0; n < length && !acm->throttle; n++) {
-+ /* if we insert more than TTY_FLIPBUF_SIZE characters,
-+ * we drop them. */
-+ if (tty->flip.count >= TTY_FLIPBUF_SIZE) {
-+ tty_flip_buffer_push(tty);
-+ }
-+ tty_insert_flip_char(tty, data[n], 0);
-+ }
-+ tty_flip_buffer_push(tty);
-+ }
-+ /*printk("copied %d bytes.\n", n);*/
-+ return n;
-+}
-+
-+static int
-+acm_shift_if_throttle(unsigned char *data, int *length, int shift_by)
-+{
-+ if (shift_by < *length) {
-+ dbg("need to shift uncopied %d bytes to front.", *length - shift_by);
-+ memmove(data, data + shift_by, *length - shift_by);
-+ *length -= shift_by;
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+static int
-+acm_buffer_if_thottle(struct acm *acm, unsigned char *data, int start, int *length)
-+{
-+ int copied = *length;
-+ if (start < *length) {
-+ int space = TD_SIZE - acm->td_len;
-+ int needed = *length - start;
-+ copied = (space < needed)? space: needed;
-+ dbg("need to push %d to throttle buffer, can copy %d.",
-+ needed, copied);
-+ memcpy(acm->throttle_data + acm->td_len, data, copied);
-+ acm->td_len += copied;
-+ *length -= copied;
-+ }
-+ return copied;
-+}
-+
-+static int
-+acm_empty_throttle(struct urb *urb, struct tty_struct *tty)
-+{
-+ unsigned long flags;
-+ struct acm *acm = urb->context;
-+
-+ save_flags(flags);
-+ cli();
-+
-+ if (acm->td_busy) {
-+ restore_flags(flags);
-+ return 0;
-+ }
-+ acm->td_busy = 1;
-+ restore_flags(flags);
-+
-+ if (acm->td_len > 0) {
-+
-+ dbg("acm_empty_throttle: trying to empty throttle buffer: %d bytes.",
-+ acm->td_len);
-+
-+ /* if there has been something left from previous operations
-+ * we try to complete this before looking at the urb */
-+ int copied = acm_fill_tty(urb, tty, acm->throttle_data, acm->td_len);
-+ if (acm_shift_if_throttle(acm->throttle_data, &acm->td_len, copied)) {
-+ /* we were unable to empty the throttle data, so we can't
-+ * copy anything more now */
-+ acm->td_busy = 0;
-+ return 0;
-+ }
-+ acm->td_len = 0;
-+ }
-+ acm->td_busy = 0;
-+ return 1;
-+}
-+
- /*
- * Functions for ACM control messages.
- */
-@@ -238,36 +335,40 @@
- struct acm *acm = urb->context;
- struct tty_struct *tty = acm->tty;
- unsigned char *data = urb->transfer_buffer;
-- int i = 0;
-+ int copied = 0;
-+ int buffered = 0;
-
- if (!ACM_READY(acm)) return;
-
-- if (urb->status)
-+ if (urb->status) {
- dbg("nonzero read bulk status received: %d", urb->status);
-+ }
-
-- if (!urb->status && !acm->throttle) {
-- for (i = 0; i < urb->actual_length && !acm->throttle; i++) {
-- /* if we insert more than TTY_FLIPBUF_SIZE characters,
-- * we drop them. */
-- if (tty->flip.count >= TTY_FLIPBUF_SIZE) {
-- tty_flip_buffer_push(tty);
-- }
-- tty_insert_flip_char(tty, data[i], 0);
-- }
-- tty_flip_buffer_push(tty);
-+ dbg("acm_read_bulk, calling acm_empty_throttle()");
-+ if (!acm_empty_throttle(urb, tty)) {
-+ dbg("could not empty throttle buffer, entering throttle state, acm->td_busy: %d.", acm->td_busy);
- }
-
-+ /* got here, either there was nothing in the throttle data or it could
-+ * all be copied without throttleing again */
-+ copied = acm_fill_tty(urb, tty, data, urb->actual_length);
- if (acm->throttle) {
-- memmove(data, data + i, urb->actual_length - i);
-- urb->actual_length -= i;
-- return;
-+ int length = urb->actual_length;
-+ buffered = acm_buffer_if_thottle(acm, data, copied, &urb->actual_length);
-+ if (buffered < length - copied
-+ && acm_shift_if_throttle(data, &urb->actual_length, copied + buffered)) {
-+ printk("need to resubmit to unthrottle\n");
-+ acm->resubmit_to_unthrottle = 1;
-+ return;
-+ }
- }
-
- urb->actual_length = 0;
- urb->dev = acm->dev;
-
-- if (usb_submit_urb(urb))
-+ if (usb_submit_urb(urb)) {
- dbg("failed resubmitting read urb");
-+ }
- }
-
- static void acm_write_bulk(struct urb *urb)
-@@ -330,7 +431,12 @@
-
- acm_set_control(acm, acm->ctrlout = ACM_CTRL_DTR | ACM_CTRL_RTS);
-
-- /* force low_latency on so that our tty_push actually forces the data through,
-+ acm->resubmit_to_unthrottle = 0;
-+ acm->td_len = 0;
-+ acm->td_busy = 0;
-+ acm->throttle_data = kmalloc(TD_SIZE * sizeof (*acm->throttle_data), GFP_KERNEL);
-+
-+ /* force low_latency on so that our tty_push actually forces the data through,
- otherwise it is scheduled, and with high data rates data can get lost. */
- tty->low_latency = 1;
-
-@@ -352,6 +458,7 @@
- } else {
- tty_unregister_devfs(&acm_tty_driver, acm->minor);
- acm_table[acm->minor] = NULL;
-+ kfree(acm->throttle_data);
- kfree(acm);
- }
- }
-@@ -363,8 +470,16 @@
- struct acm *acm = tty->driver_data;
-
- if (!ACM_READY(acm)) return -EINVAL;
-- if (acm->writeurb.status == -EINPROGRESS) return 0;
-- if (!count) return 0;
-+
-+ if (acm->writeurb.status == -EINPROGRESS) {
-+ dbg("tty_write in progress");
-+ return 0;
-+ }
-+
-+ if (!count) {
-+ dbg("tty_write: nothing to write");
-+ return 0;
-+ }
-
- count = (count > acm->writesize) ? acm->writesize : count;
-
-@@ -401,16 +516,32 @@
- {
- struct acm *acm = tty->driver_data;
- if (!ACM_READY(acm)) return;
-+ dbg("acm_tty_throttle ON %ld ---> %ld", jiffies-acm->throttle_start, jiffies);
- acm->throttle = 1;
-+ acm->throttle_start = jiffies;
- }
-
- static void acm_tty_unthrottle(struct tty_struct *tty)
- {
- struct acm *acm = tty->driver_data;
- if (!ACM_READY(acm)) return;
-+ dbg("acm_tty_throttle OFF %ld ---> %ld", jiffies, jiffies-acm->throttle_start);
- acm->throttle = 0;
-- if (acm->readurb.status != -EINPROGRESS)
-+
-+ dbg("acm_tty_unthrottle, calling acm_empty_throttle()");
-+ if (!acm_empty_throttle(&acm->readurb, tty)) {
-+ if (acm->td_busy) {
-+ printk("***** pending acm_empty_throttle!\n");
-+ } else {
-+ dbg("throttle not emptied.\n");
-+ }
-+ }
-+
-+ if (acm->resubmit_to_unthrottle != 0) {
-+ dbg("resubmit_to_unthrottle: acm_read_bulk");
-+ acm->resubmit_to_unthrottle = 0;
- acm_read_bulk(&acm->readurb);
-+ }
- }
-
- static void acm_tty_break_ctl(struct tty_struct *tty, int state)
diff --git a/packages/linux/linux-mtx-2_2.4.27.bb b/packages/linux/linux-mtx-2_2.4.27.bb
index 83769faf95..9a64ebb492 100644
--- a/packages/linux/linux-mtx-2_2.4.27.bb
+++ b/packages/linux/linux-mtx-2_2.4.27.bb
@@ -39,7 +39,7 @@ SRC_URI += "cvs://cvs:cvs@ftp.linux-mips.org/home/cvs;module=linux;tag=linux_2_4
file://42-usb-ohci-fixes.patch;patch=1 \
file://43-usbserial-27-32-backport.diff;patch=1 \
file://44-dbdma-and-au1550_psc.diff;patch=1 \
- file://45-acm-tty.patch;patch=1 \
+ file://45-acm-tty-and-sb2.patch;patch=1 \
file://46-otg.patch;patch=1 \
file://47-au1000_eth.patch;patch=1 \
file://48-pptp.patch;patch=1 \
diff --git a/packages/linux/linux-mtx-3_2.6.15.4.bb b/packages/linux/linux-mtx-3_2.6.15.4.bb
index 034f6d93d1..fe523c879c 100644
--- a/packages/linux/linux-mtx-3_2.6.15.4.bb
+++ b/packages/linux/linux-mtx-3_2.6.15.4.bb
@@ -9,7 +9,7 @@ inherit kernel
# therefore
# PROVIDES = "virtual/kernel"
-DEPENDS = "uboot"
+DEPENDS = "u-boot"
RDEPENDS = "mtd-utils"
SRC_URI += "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${KV}.tar.bz2 \
diff --git a/packages/linux/linux-netvista-2.4.27/netvista_defconfig b/packages/linux/linux-netvista-2.4.27/netvista_defconfig
deleted file mode 100644
index 1e7e5c25ba..0000000000
--- a/packages/linux/linux-netvista-2.4.27/netvista_defconfig
+++ /dev/null
@@ -1,1309 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-CONFIG_X86=y
-# CONFIG_SBUS is not set
-CONFIG_UID16=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# Processor type and features
-#
-# 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_MPENTIUMIII is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MELAN is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_XADD=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_X86_L1_CACHE_SHIFT=5
-CONFIG_X86_USE_STRING_486=y
-CONFIG_X86_ALIGNMENT_16=y
-CONFIG_X86_PPRO_FENCE=y
-# CONFIG_X86_F00F_WORKS_OK is not set
-CONFIG_X86_MCE=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_I8K is not set
-CONFIG_MICROCODE=m
-CONFIG_X86_MSR=m
-# CONFIG_X86_CPUID is not set
-# CONFIG_EDD is not set
-CONFIG_NOHIGHMEM=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-# CONFIG_HIGHMEM is not set
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MTRR=y
-# CONFIG_SMP is not set
-CONFIG_X86_UP_APIC=y
-CONFIG_X86_UP_IOAPIC=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-# CONFIG_X86_TSC_DISABLE is not set
-
-#
-# General setup
-#
-CONFIG_NET=y
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_ISA=y
-CONFIG_PCI_NAMES=y
-# CONFIG_EISA is not set
-# CONFIG_MCA is not set
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-# CONFIG_PCMCIA is not set
-
-#
-# PCI Hotplug Support
-#
-# CONFIG_HOTPLUG_PCI is not set
-# CONFIG_HOTPLUG_PCI_COMPAQ is not set
-# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
-# CONFIG_HOTPLUG_PCI_IBM is not set
-# CONFIG_HOTPLUG_PCI_ACPI is not set
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=m
-CONFIG_OOM_KILLER=y
-CONFIG_PM=y
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-CONFIG_APM_DO_ENABLE=y
-CONFIG_APM_CPU_IDLE=y
-# CONFIG_APM_DISPLAY_BLANK is not set
-CONFIG_APM_RTC_IS_GMT=y
-# CONFIG_APM_ALLOW_INTS is not set
-# CONFIG_APM_REAL_MODE_POWER_OFF is not set
-
-#
-# ACPI Support
-#
-CONFIG_ACPI=y
-CONFIG_ACPI_BOOT=y
-CONFIG_ACPI_BUS=y
-CONFIG_ACPI_INTERPRETER=y
-CONFIG_ACPI_EC=y
-CONFIG_ACPI_POWER=y
-CONFIG_ACPI_PCI=y
-CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_SYSTEM=y
-CONFIG_ACPI_AC=y
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BUTTON=y
-CONFIG_ACPI_FAN=y
-CONFIG_ACPI_PROCESSOR=y
-CONFIG_ACPI_THERMAL=y
-CONFIG_ACPI_ASUS=y
-# CONFIG_ACPI_TOSHIBA is not set
-CONFIG_ACPI_DEBUG=y
-# CONFIG_ACPI_RELAXED_AML is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=m
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_BLOCK_RO=m
-CONFIG_FTL=m
-# CONFIG_NFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=m
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_CFI_INTELEXT=m
-CONFIG_MTD_CFI_AMDSTD=m
-# CONFIG_MTD_CFI_STAA is not set
-# 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
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_PNC2000 is not set
-# CONFIG_MTD_SC520CDP is not set
-# CONFIG_MTD_NETSC520 is not set
-# CONFIG_MTD_SBC_GXX is not set
-# CONFIG_MTD_ELAN_104NC is not set
-# CONFIG_MTD_DILNETPC is not set
-# CONFIG_MTD_MIXMEM is not set
-# CONFIG_MTD_OCTAGON is not set
-# CONFIG_MTD_VMAX is not set
-# CONFIG_MTD_SCx200_DOCFLASH is not set
-# CONFIG_MTD_L440GX is not set
-# CONFIG_MTD_AMD76XROM is not set
-# CONFIG_MTD_ICH2ROM is not set
-# CONFIG_MTD_NETtel is not set
-# CONFIG_MTD_SCB2_FLASH is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-CONFIG_MTD_BLKMTD=m
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-CONFIG_MTD_NAND_IDS=m
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-CONFIG_PARPORT_PC_CML1=m
-CONFIG_PARPORT_SERIAL=m
-CONFIG_PARPORT_PC_FIFO=y
-CONFIG_PARPORT_PC_SUPERIO=y
-# CONFIG_PARPORT_PC_PCMCIA is not set
-# CONFIG_PARPORT_AMIGA is not set
-# CONFIG_PARPORT_MFC3 is not set
-# CONFIG_PARPORT_ATARI is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_SUNBPP is not set
-# CONFIG_PARPORT_IP22 is not set
-# CONFIG_PARPORT_OTHER is not set
-CONFIG_PARPORT_1284=y
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-CONFIG_BLK_DEV_FD=m
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_CISS_MONITOR_THREAD is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_LOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_BLK_STATS=y
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# 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_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_TFTP is not set
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_UNCLEAN=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_MIRROR=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_NAT_LOCAL=y
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=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_MARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-# CONFIG_IP_NF_ARP_MANGLE is not set
-CONFIG_IP_NF_COMPAT_IPCHAINS=m
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_COMPAT_IPFWADM=m
-CONFIG_IP_NF_NAT_NEEDED=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_MARK=m
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_AHESP is not set
-CONFIG_IP6_NF_MATCH_LENGTH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-# CONFIG_KHTTPD is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-# CONFIG_ATALK is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
-CONFIG_BRIDGE=m
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-
-#
-# Telephony Support
-#
-# CONFIG_PHONE is not set
-# CONFIG_PHONE_IXJ is not set
-# CONFIG_PHONE_IXJ_PCMCIA is not set
-
-#
-# ATA/IDE/MFM/RLL support
-#
-CONFIG_IDE=y
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=y
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_IDEDISK_MULTI_MODE=y
-# CONFIG_IDEDISK_STROKE is not set
-# CONFIG_BLK_DEV_IDECS is not set
-CONFIG_BLK_DEV_IDECD=m
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-CONFIG_BLK_DEV_IDESCSI=m
-# CONFIG_IDE_TASK_IOCTL is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-CONFIG_BLK_DEV_IDEPCI=y
-# CONFIG_BLK_DEV_GENERIC is not set
-CONFIG_IDEPCI_SHARE_IRQ=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
-CONFIG_IDEDMA_PCI_AUTO=y
-# CONFIG_IDEDMA_ONLYDISK is not set
-CONFIG_BLK_DEV_IDEDMA=y
-# CONFIG_IDEDMA_PCI_WIP is not set
-# CONFIG_BLK_DEV_ADMA100 is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_WDC_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_AMD74XX_OVERRIDE is not set
-# CONFIG_BLK_DEV_ATIIXP is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-# CONFIG_BLK_DEV_HPT34X is not set
-# CONFIG_HPT34X_AUTODMA is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-CONFIG_BLK_DEV_PIIX=y
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_OPTI621 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_PDC202XX_BURST is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_RZ1000 is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SIS5513 is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_IDE_CHIPSETS is not set
-CONFIG_IDEDMA_AUTO=y
-# CONFIG_IDEDMA_IVB is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-# CONFIG_BLK_DEV_ATARAID_MEDLEY is not set
-# CONFIG_BLK_DEV_ATARAID_SII is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_SD_EXTRA_DEVS=40
-CONFIG_CHR_DEV_ST=m
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_SR_EXTRA_DEVS=2
-CONFIG_CHR_DEV_SG=m
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_BLK_DEV_3W_XXXX_RAID 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_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID is not set
-# CONFIG_SCSI_MEGARAID2 is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_CPQFCTS is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO 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_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_NCR53C8XX is not set
-# CONFIG_SCSI_SYM53C8XX is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_ISP is not set
-# CONFIG_SCSI_QLOGIC_FC is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_SEAGATE is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 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
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_BOOT is not set
-# CONFIG_FUSION_ISENSE is not set
-# CONFIG_FUSION_CTL is not set
-# CONFIG_FUSION_LAN is not set
-
-#
-# IEEE 1394 (FireWire) support (EXPERIMENTAL)
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_PCI is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-CONFIG_DUMMY=m
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_SUNLANCE is not set
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM 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
-# 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 is not set
-# 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_CS89x0 is not set
-# CONFIG_TULIP is not set
-# CONFIG_DE4X5 is not set
-# CONFIG_DGRS is not set
-# CONFIG_DM9102 is not set
-# CONFIG_EEPRO100 is not set
-# CONFIG_EEPRO100_PIO is not set
-# CONFIG_E100 is not set
-# CONFIG_LNE390 is not set
-# CONFIG_FEALNX is not set
-CONFIG_NATSEMI=y
-# CONFIG_NE2K_PCI is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_NE3210 is not set
-# CONFIG_ES3210 is not set
-# CONFIG_8139CP is not set
-CONFIG_8139TOO=m
-# CONFIG_8139TOO_PIO is not set
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_SUNDANCE_MMIO is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_VIA_RHINE_MMIO is not set
-# CONFIG_WINBOND_840 is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPPOE=m
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-CONFIG_STRIP=m
-CONFIG_WAVELAN=m
-CONFIG_ARLAN=m
-CONFIG_AIRONET4500=m
-CONFIG_AIRONET4500_NONCS=m
-# CONFIG_AIRONET4500_PNP is not set
-# CONFIG_AIRONET4500_PCI is not set
-# CONFIG_AIRONET4500_ISA is not set
-# CONFIG_AIRONET4500_I365 is not set
-CONFIG_AIRONET4500_PROC=m
-CONFIG_AIRO=m
-CONFIG_HERMES=m
-CONFIG_PLX_HERMES=m
-# CONFIG_TMD_HERMES is not set
-CONFIG_PCI_HERMES=m
-CONFIG_NET_WIRELESS=y
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=m
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-CONFIG_IRDA_DEBUG=y
-
-#
-# Infrared-port device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-# CONFIG_IRPORT_SIR is not set
-# CONFIG_DONGLE is not set
-# CONFIG_USB_IRDA is not set
-CONFIG_NSC_FIR=m
-CONFIG_WINBOND_FIR=m
-# CONFIG_TOSHIBA_OLD is not set
-CONFIG_TOSHIBA_FIR=m
-CONFIG_SMC_IRCC_FIR=m
-CONFIG_ALI_FIR=m
-CONFIG_VLSI_FIR=m
-# CONFIG_VIA_IRCC_FIR is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Old CD-ROM drivers (not SCSI, not IDE)
-#
-# CONFIG_CD_NO_IDESCSI is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_KEYBDEV=y
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=800
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=600
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-CONFIG_SERIAL_EXTENDED=y
-# CONFIG_SERIAL_MANY_PORTS is not set
-CONFIG_SERIAL_SHARE_IRQ=y
-# CONFIG_SERIAL_DETECT_IRQ is not set
-# CONFIG_SERIAL_MULTIPORT is not set
-# CONFIG_HUB6 is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-CONFIG_PPDEV=m
-# CONFIG_TIPAR is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=y
-CONFIG_PSMOUSE=y
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_MK712_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-# CONFIG_INPUT_SERIO is not set
-# CONFIG_INPUT_SERPORT is not set
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_IPMI_PANIC_EVENT is not set
-# CONFIG_IPMI_DEVICE_INTERFACE is not set
-# CONFIG_IPMI_KCS is not set
-# CONFIG_IPMI_WATCHDOG is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_SCx200 is not set
-# CONFIG_SCx200_GPIO is not set
-# CONFIG_AMD_RNG is not set
-# CONFIG_INTEL_RNG is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_AMD_PM768 is not set
-CONFIG_NVRAM=m
-CONFIG_RTC=m
-# 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
-
-#
-# Direct Rendering Manager (XFree86 DRI support)
-#
-CONFIG_DRM=y
-# CONFIG_DRM_OLD is not set
-CONFIG_DRM_NEW=y
-# CONFIG_DRM_TDFX is not set
-# CONFIG_DRM_GAMMA is not set
-# CONFIG_DRM_R128 is not set
-CONFIG_DRM_RADEON=m
-# CONFIG_DRM_I810 is not set
-# CONFIG_DRM_I810_XFREE_41 is not set
-# CONFIG_DRM_I830 is not set
-# CONFIG_DRM_MGA is not set
-# CONFIG_DRM_SIS is not set
-# CONFIG_MWAVE is not set
-# CONFIG_OBMOUSE is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-CONFIG_VIDEO_PROC_FS=y
-# CONFIG_I2C_PARPORT is not set
-# CONFIG_VIDEO_BT848 is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_W9966 is not set
-CONFIG_VIDEO_CPIA=m
-# CONFIG_VIDEO_CPIA_PP is not set
-CONFIG_VIDEO_CPIA_USB=m
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_ZORAN_BUZ is not set
-# CONFIG_VIDEO_ZORAN_DC10 is not set
-# CONFIG_VIDEO_ZORAN_LML33 is not set
-# CONFIG_VIDEO_ZR36120 is not set
-# CONFIG_VIDEO_MEYE is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_MIROPCM20 is not set
-# CONFIG_RADIO_MIROPCM20_RDS is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_QFMT_V2 is not set
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW 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_BEFS_DEBUG is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=y
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=m
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_CRAMFS=m
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-# CONFIG_JFS_FS is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVFS_FS=y
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-CONFIG_ROMFS_FS=m
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_XFS_QUOTA is not set
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_TRACE is not set
-# CONFIG_XFS_DEBUG is not set
-
-#
-# Network File Systems
-#
-CONFIG_CODA_FS=m
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_ROOT_NFS is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-CONFIG_NFSD_TCP=y
-CONFIG_SUNRPC=m
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-# CONFIG_SMB_UNIX is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-CONFIG_ZISOFS_FS=m
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-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=m
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_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=m
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Console drivers
-#
-CONFIG_VGA_CONSOLE=y
-CONFIG_VIDEO_SELECT=y
-# CONFIG_MDA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_CLGEN is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_PM3 is not set
-# CONFIG_FB_CYBER2000 is not set
-CONFIG_FB_VESA=y
-# CONFIG_FB_VGA16 is not set
-# CONFIG_FB_HGA is not set
-CONFIG_VIDEO_SELECT=y
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_INTEL is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_IT8181 is not set
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FBCON_ADVANCED is not set
-CONFIG_FBCON_CFB8=y
-CONFIG_FBCON_CFB16=y
-CONFIG_FBCON_CFB24=y
-CONFIG_FBCON_CFB32=y
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-# CONFIG_FBCON_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-# CONFIG_SOUND_ALI5455 is not set
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_FORTE is not set
-CONFIG_SOUND_ICH=m
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_TVMIXER is not set
-# CONFIG_SOUND_AD1980 is not set
-# CONFIG_SOUND_WM97XX is not set
-
-#
-# USB support
-#
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_EHCI_HCD is not set
-CONFIG_USB_UHCI=m
-# CONFIG_USB_UHCI_ALT is not set
-CONFIG_USB_OHCI=y
-# CONFIG_USB_SL811HS_ALT is not set
-# CONFIG_USB_SL811HS is not set
-CONFIG_USB_AUDIO=m
-# CONFIG_USB_EMI26 is not set
-CONFIG_USB_MIDI=m
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_DPCM=y
-CONFIG_USB_STORAGE_HP8200e=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_HID=y
-CONFIG_USB_HIDINPUT=y
-CONFIG_USB_HIDDEV=y
-CONFIG_USB_AIPTEK=m
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-CONFIG_USB_SCANNER=m
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-CONFIG_USB_IBMCAM=m
-# CONFIG_USB_KONICAWC is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_PWC=m
-CONFIG_USB_SE401=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_W9968CF is not set
-CONFIG_USB_VICAM=m
-CONFIG_USB_DSBR=m
-# CONFIG_USB_DABUSB is not set
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_CATC=m
-CONFIG_USB_CDCETHER=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_USS720=m
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-CONFIG_USB_SERIAL_IPAQ=m
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_KOBIL_SCT is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-CONFIG_USB_RIO500=m
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_TIGL is not set
-# CONFIG_USB_BRLVGER is not set
-CONFIG_USB_LCD=m
-
-#
-# Support for USB gadgets
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-# CONFIG_BLUEZ_RFCOMM is not set
-CONFIG_BLUEZ_BNEP=m
-# CONFIG_BLUEZ_BNEP_MC_FILTER is not set
-# CONFIG_BLUEZ_BNEP_PROTO_FILTER is not set
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BLUEZ_HCIUSB=m
-CONFIG_BLUEZ_HCIUSB_SCO=y
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-# CONFIG_BLUEZ_HCIUART_BCSP is not set
-# CONFIG_BLUEZ_HCIUART_BCSP_TXCRC is not set
-# CONFIG_BLUEZ_HCIBFUSB is not set
-# CONFIG_BLUEZ_HCIDTL1 is not set
-# CONFIG_BLUEZ_HCIBT3C is not set
-# CONFIG_BLUEZ_HCIBLUECARD is not set
-# CONFIG_BLUEZ_HCIBTUART is not set
-CONFIG_BLUEZ_HCIVHCI=m
-
-#
-# Kernel hacking
-#
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=0
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=y
-CONFIG_CRYPTO_MD4=y
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256=y
-CONFIG_CRYPTO_SHA512=y
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_BLOWFISH=y
-CONFIG_CRYPTO_TWOFISH=y
-CONFIG_CRYPTO_SERPENT=y
-CONFIG_CRYPTO_AES=y
-CONFIG_CRYPTO_CAST5=y
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_ARC4 is not set
-CONFIG_CRYPTO_DEFLATE=y
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Library routines
-#
-# CONFIG_CRC32 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-# CONFIG_FW_LOADER is not set
diff --git a/packages/linux/linux-netvista_2.4.27.bb b/packages/linux/linux-netvista_2.4.27.bb
deleted file mode 100644
index 2b2721c7c4..0000000000
--- a/packages/linux/linux-netvista_2.4.27.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-DESCRIPTION = "Linux kernel x86 for IBM Netvista"
-LICENSE = "GPL"
-PR = "r4"
-
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.4/linux-${PV}.tar.bz2 \
- file://netvista_defconfig"
-S = "${WORKDIR}/linux-${PV}"
-
-COMPATIBLE_HOST='i.86.*-linux'
-
-inherit kernel
-
-KERNEL_CCSUFFIX = "-3.3.4"
-ARCH = "i386"
-KERNEL_IMAGETYPE = "bzImage"
-
-# Avoid getting the kernel in the rootfs
-FILES_kernel = ""
-ALLOW_EMPTY_kernel = "1"
-PACKAGES += "kernel-image"
-FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/netvista_defconfig ${S}/.config
-}
diff --git a/packages/linux/linux-nokia770_2.6.16-osso26.bb b/packages/linux/linux-nokia770_2.6.16-osso26.bb
index ea0f2d5b41..6370643f98 100644
--- a/packages/linux/linux-nokia770_2.6.16-osso26.bb
+++ b/packages/linux/linux-nokia770_2.6.16-osso26.bb
@@ -22,7 +22,7 @@ do_configure_prepend() {
rm -f ${S}/.config || true
- if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
+ if [ "${TARGET_OS}" = "linux-gnueabi" -o "${TARGET_OS}" = "linux-uclibcgnueabi" ]; then
echo "CONFIG_AEABI=y" >> ${S}/.config
echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
else
diff --git a/packages/linux/linux-nokia800-2.6.18-osso29/.mtn2git_empty b/packages/linux/linux-nokia800-2.6.18-osso29/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-nokia800-2.6.18-osso29/.mtn2git_empty
diff --git a/packages/linux/linux-nokia800-2.6.18-osso29/nokia770/.mtn2git_empty b/packages/linux/linux-nokia800-2.6.18-osso29/nokia770/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-nokia800-2.6.18-osso29/nokia770/.mtn2git_empty
diff --git a/packages/linux/linux-nokia800-2.6.18-osso29/nokia800/.mtn2git_empty b/packages/linux/linux-nokia800-2.6.18-osso29/nokia800/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-nokia800-2.6.18-osso29/nokia800/.mtn2git_empty
diff --git a/packages/linux/linux-nokia800.inc b/packages/linux/linux-nokia800.inc
new file mode 100644
index 0000000000..48a88320e2
--- /dev/null
+++ b/packages/linux/linux-nokia800.inc
@@ -0,0 +1,40 @@
+SECTION = "kernel"
+DESCRIPTION = "Linux kernel for Nokia 770/800"
+LICENSE = "GPL"
+
+KERNEL_OUTPUT = "arch/${ARCH}/boot/compressed/${KERNEL_IMAGETYPE}"
+
+inherit kernel
+
+RPROVIDES_kernel-image = "hostap-modules"
+
+COMPATIBLE_MACHINE = "nokia770|nokia800"
+
+do_configure_prepend() {
+
+ rm -f ${S}/.config || true
+
+ if [ "${TARGET_OS}" = "linux-gnueabi" -o "${TARGET_OS}" = "linux-uclibcgnueabi" ]; then
+ echo "CONFIG_AEABI=y" >> ${S}/.config
+ echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
+ else
+ echo "# CONFIG_AEABI is not set" >> ${S}/.config
+ echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
+ fi
+
+ sed -e '/CONFIG_AEABI/d' \
+ -e '/CONFIG_OABI_COMPAT=/d' \
+ '${WORKDIR}/defconfig' >>'${S}/.config'
+
+ yes '' | oe_runmake oldconfig
+
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
diff --git a/packages/linux/linux-nokia800_2.6.18-osso29.bb b/packages/linux/linux-nokia800_2.6.18-osso29.bb
new file mode 100644
index 0000000000..617c6dfad2
--- /dev/null
+++ b/packages/linux/linux-nokia800_2.6.18-osso29.bb
@@ -0,0 +1,9 @@
+require linux-nokia800.inc
+
+PR = "r2"
+SRC_URI = "http://repository.maemo.org/pool/maemo3.0/free/source/kernel-source-rx-34_2.6.18.orig.tar.gz \
+ http://repository.maemo.org/pool/maemo3.0/free/source/kernel-source-rx-34_2.6.18-osso29.diff.gz;patch=1 \
+ file://defconfig"
+
+S = "${WORKDIR}/linux-g"
+
diff --git a/packages/linux/linux-omap1-2.6.18-omap1/defconfig b/packages/linux/linux-omap1-2.6.18-omap1/defconfig
index 7906b901ea..3efaf468f6 100644
--- a/packages/linux/linux-omap1-2.6.18-omap1/defconfig
+++ b/packages/linux/linux-omap1-2.6.18-omap1/defconfig
@@ -915,6 +915,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
#
CONFIG_SND_OMAP_AIC23=y
# CONFIG_SND_OMAP_TSC2101 is not set
+# CONFIG_SND_OMAP_TSC2102 is not set
#
# USB devices
diff --git a/packages/linux/linux-omap1-2.6.19-omap1/i2c-fix.patch b/packages/linux/linux-omap1-2.6.19-omap1/i2c-fix.patch
new file mode 100644
index 0000000000..3b35ce23a2
--- /dev/null
+++ b/packages/linux/linux-omap1-2.6.19-omap1/i2c-fix.patch
@@ -0,0 +1,56 @@
+Hack to add I2C zero length transfers and SMBus quick mode
+necessary for AIC23 sound again.
+
+Signed-off-by: Dirk Behme <dirk.behme_at_gmail.com>
+
+
+-------------- next part --------------
+Index: linux-osk/drivers/i2c/busses/i2c-omap.c
+===================================================================
+--- linux-osk.orig/drivers/i2c/busses/i2c-omap.c
++++ linux-osk/drivers/i2c/busses/i2c-omap.c
+@@ -285,20 +285,29 @@ static int omap_i2c_xfer_msg(struct i2c_
+ struct i2c_msg *msg, int stop)
+ {
+ struct omap_i2c_dev *dev = i2c_get_adapdata(adap);
++ u8 zero_byte = 0;
+ int r;
+ u16 w;
+
+ dev_dbg(dev->dev, "addr: 0x%04x, len: %d, flags: 0x%x, stop: %d\n",
+ msg->addr, msg->len, msg->flags, stop);
+
+- if (msg->len == 0)
+- return -EINVAL;
+-
+ omap_i2c_write_reg(dev, OMAP_I2C_SA_REG, msg->addr);
+
+- /* REVISIT: Could the STB bit of I2C_CON be used with probing? */
+- dev->buf = msg->buf;
+- dev->buf_len = msg->len;
++ /* Sigh, seems we can't do zero length transactions. Thus, we
++ * can't probe for devices w/o actually sending/receiving at least
++ * a single byte. So we'll set count to 1 for the zero length
++ * transaction case and hope we don't cause grief for some
++ * arbitrary device due to random byte write/read during
++ * probes.
++ */
++ if (msg->len == 0) {
++ dev->buf = &zero_byte;
++ dev->buf_len = 1;
++ } else {
++ dev->buf = msg->buf;
++ dev->buf_len = msg->len;
++ }
+
+ omap_i2c_write_reg(dev, OMAP_I2C_CNT_REG, dev->buf_len);
+
+@@ -383,7 +392,7 @@ out:
+ static u32
+ omap_i2c_func(struct i2c_adapter *adap)
+ {
+- return I2C_FUNC_I2C | (I2C_FUNC_SMBUS_EMUL & ~I2C_FUNC_SMBUS_QUICK);
++ return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
+ }
+
+ static inline void
diff --git a/packages/linux/linux-omap1-2.6.20-omap1/.mtn2git_empty b/packages/linux/linux-omap1-2.6.20-omap1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-omap1-2.6.20-omap1/.mtn2git_empty
diff --git a/packages/linux/linux-omap1-2.6.20-omap1/defconfig b/packages/linux/linux-omap1-2.6.20-omap1/defconfig
new file mode 100644
index 0000000000..93e8bea7d5
--- /dev/null
+++ b/packages/linux/linux-omap1-2.6.20-omap1/defconfig
@@ -0,0 +1,1301 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19-omap1
+# Fri Dec 29 08:12:35 2006
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+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 is not set
+# CONFIG_RELAY is not set
+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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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 is not set
+# 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=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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+
+#
+# TI OMAP Implementations
+#
+CONFIG_ARCH_OMAP_OTG=y
+CONFIG_ARCH_OMAP1=y
+# CONFIG_ARCH_OMAP2 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_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=y
+# CONFIG_OMAP_DSP_MBCMD_VERBOSE is not set
+# CONFIG_OMAP_DSP_TASK_MULTIOPEN is not set
+# CONFIG_OMAP_DSP_FBEXPORT 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 is not set
+# 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
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=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
+
+#
+# Bus support
+#
+
+#
+# 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_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=128
+# 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_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
+
+#
+# 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=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED 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 is not set
+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=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_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
+
+#
+# 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_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
+# 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 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_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
+# CONFIG_MTD_OBSOLETE_CHIPS 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
+
+#
+# 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_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_UB 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_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+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
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_IDE_GENERIC is not set
+# CONFIG_IDE_ARM 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 is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# 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_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
+
+#
+# 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=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_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# 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_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
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_OMAP=y
+# CONFIG_OMAP_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_OMAP_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=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_OCORES is not set
+CONFIG_I2C_OMAP=y
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 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=y
+# CONFIG_GPIOEXPANDER_OMAP 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 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# 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_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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_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_TIFM_CORE is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB=y
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT 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
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FB_OMAP=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
+# CONFIG_FB_OMAP_LCD_MIPID 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
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_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 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
+
+#
+# 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=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+# CONFIG_SND_MIXER_OSS is not set
+# CONFIG_SND_PCM_OSS is not set
+# 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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_OMAP_AIC23=y
+# CONFIG_SND_OMAP_TSC2101 is not set
+# CONFIG_SND_SX1 is not set
+# CONFIG_SND_OMAP_TSC2102 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# 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 is not set
+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_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# 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_SL811_HCD is not set
+
+#
+# Enable Host or Gadget support to see Inventra options
+#
+# CONFIG_USB_MUSB_HDRC 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_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# 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 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
+
+#
+# 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_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_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_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 is not set
+
+#
+# Synchronous Serial Interfaces (SSI)
+#
+CONFIG_OMAP_UWIRE=y
+CONFIG_OMAP_TSC2101=y
+
+#
+# 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_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_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_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
+# CONFIG_9P_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
+
+#
+# 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=y
+# 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 is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-omap1-2.6.20-omap1/defconfig.eabi b/packages/linux/linux-omap1-2.6.20-omap1/defconfig.eabi
new file mode 100644
index 0000000000..a47a7b004d
--- /dev/null
+++ b/packages/linux/linux-omap1-2.6.20-omap1/defconfig.eabi
@@ -0,0 +1,1320 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20-omap1
+# Thu Mar 1 14:34:27 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_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=y
+# 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 is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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 is not set
+# 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=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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+
+#
+# TI OMAP Implementations
+#
+CONFIG_ARCH_OMAP_OTG=y
+CONFIG_ARCH_OMAP1=y
+# CONFIG_ARCH_OMAP2 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_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=y
+# CONFIG_OMAP_DSP_MBCMD_VERBOSE is not set
+# CONFIG_OMAP_DSP_TASK_MULTIOPEN is not set
+# CONFIG_OMAP_DSP_FBEXPORT 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 is not set
+# 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
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=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
+
+#
+# Bus support
+#
+
+#
+# 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_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=y
+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_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
+
+#
+# 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=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED 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 is not set
+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=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
+
+#
+# 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_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
+# 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 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
+# CONFIG_MTD_OBSOLETE_CHIPS 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
+
+#
+# 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_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_UB 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_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+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
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_IDE_GENERIC is not set
+# CONFIG_IDE_ARM 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 is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# 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_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
+
+#
+# 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=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_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# 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_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=16
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_OMAP=y
+CONFIG_OMAP_RNG=y
+# CONFIG_NVRAM is not set
+CONFIG_OMAP_RTC=y
+# CONFIG_DTLK 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=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_OCORES is not set
+CONFIG_I2C_OMAP=y
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 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=y
+# CONFIG_GPIOEXPANDER_OMAP 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 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# 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_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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
+
+#
+# Misc devices
+#
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB=y
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT 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
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FB_OMAP=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
+# CONFIG_FB_OMAP_LCD_MIPID 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
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_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 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
+
+#
+# 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=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+# CONFIG_SND_MIXER_OSS is not set
+# CONFIG_SND_PCM_OSS is not set
+# 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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_OMAP_AIC23=y
+# CONFIG_SND_OMAP_TSC2101 is not set
+# CONFIG_SND_SX1 is not set
+# CONFIG_SND_OMAP_TSC2102 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# 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_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_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_SL811_HCD is not set
+
+#
+# Enable Host or Gadget support to see Inventra options
+#
+# CONFIG_USB_MUSB_HDRC 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_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# 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 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
+
+#
+# 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_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_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_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 is not set
+
+#
+# Synchronous Serial Interfaces (SSI)
+#
+CONFIG_OMAP_UWIRE=y
+CONFIG_OMAP_TSC2101=y
+
+#
+# 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_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
+# CONFIG_9P_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_LOG_BUF_SHIFT=14
+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
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-omap1.inc b/packages/linux/linux-omap1.inc
index 8e64156d4c..ac7d398122 100644
--- a/packages/linux/linux-omap1.inc
+++ b/packages/linux/linux-omap1.inc
@@ -10,6 +10,8 @@ inherit kernel
KERNEL_IMAGETYPE = "vmlinux"
KERNEL_OUTPUT = "${KERNEL_IMAGETYPE}"
+module_autoload_ohci-hcd_omap5912osk = "ohci-hcd"
+
do_configure_prepend() {
if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
@@ -26,7 +28,7 @@ do_deploy() {
install -d ${DEPLOY_DIR_IMAGE}
${OBJCOPY} -O binary -R .note -R .comment -S ${KERNEL_OUTPUT} ${S}/linux.bin
gzip -f -9 ${S}/linux.bin
- mkimage -A arm -O linux -T kernel -C gzip -a 0x10008000 -e 0x10008000 -n "OE" -d ${S}/linux.bin.gz ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${KERNEL_RELEASE}-${MACHINE}-${DATETIME}.bin
+ mkimage -A arm -O linux -T kernel -C gzip -a 0x10008000 -e 0x10008000 -n "OE" -d ${S}/linux.bin.gz ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}-${MACHINE}-${DATETIME}.bin
rm ${S}/linux.bin.gz
fi
}
diff --git a/packages/linux/linux-omap1_2.6.12-rc2.bb b/packages/linux/linux-omap1_2.6.12-rc2.bb
index 74d6822ff4..1b9a1b6de0 100644
--- a/packages/linux/linux-omap1_2.6.12-rc2.bb
+++ b/packages/linux/linux-omap1_2.6.12-rc2.bb
@@ -7,5 +7,3 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/testing/linux-2.6.12-rc2.ta
file://defconfig"
S = "${WORKDIR}/linux-2.6.12-rc2"
-
-KERNEL_RELEASE = "2.6.12-rc2-omap1"
diff --git a/packages/linux/linux-omap1_2.6.18+git.bb b/packages/linux/linux-omap1_2.6.18+git.bb
index b4f368bf66..a097caa113 100644
--- a/packages/linux/linux-omap1_2.6.18+git.bb
+++ b/packages/linux/linux-omap1_2.6.18+git.bb
@@ -7,5 +7,3 @@ SRC_URI = "git://source.mvista.com/git/linux-omap-2.6.git;protocol=http;tag=c605
file://defconfig"
S = "${WORKDIR}/git"
-
-KERNEL_RELEASE = "2.6.18-omap1"
diff --git a/packages/linux/linux-omap1_2.6.18-omap1.bb b/packages/linux/linux-omap1_2.6.18-omap1.bb
index bc1510b4a7..7c087e8cba 100644
--- a/packages/linux/linux-omap1_2.6.18-omap1.bb
+++ b/packages/linux/linux-omap1_2.6.18-omap1.bb
@@ -7,5 +7,3 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2 \
file://defconfig.eabi"
S = "${WORKDIR}/linux-2.6.18"
-
-KERNEL_RELEASE = "${PV}"
diff --git a/packages/linux/linux-omap1_2.6.19-omap1.bb b/packages/linux/linux-omap1_2.6.19-omap1.bb
index ca43d567c0..1734149180 100644
--- a/packages/linux/linux-omap1_2.6.19-omap1.bb
+++ b/packages/linux/linux-omap1_2.6.19-omap1.bb
@@ -1,13 +1,10 @@
require linux-omap1.inc
-DEFAULT_PREFERENCE = "-1"
-
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz2 \
http://www.muru.com/linux/omap/patches/patch-2.6.19-omap1.bz2;patch=1 \
file://another-ide-cs-ids.patch;patch=1 \
+ file://i2c-fix.patch;patch=1 \
file://defconfig \
file://defconfig.eabi"
S = "${WORKDIR}/linux-2.6.19"
-
-KERNEL_RELEASE = "${PV}"
diff --git a/packages/linux/linux-omap1_2.6.20-omap1.bb b/packages/linux/linux-omap1_2.6.20-omap1.bb
new file mode 100644
index 0000000000..770883fbb6
--- /dev/null
+++ b/packages/linux/linux-omap1_2.6.20-omap1.bb
@@ -0,0 +1,8 @@
+require linux-omap1.inc
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2 \
+ http://www.muru.com/linux/omap/patches/patch-2.6.20-omap1.bz2;patch=1 \
+ file://defconfig.eabi \
+ file://defconfig"
+
+S = "${WORKDIR}/linux-2.6.20"
diff --git a/packages/linux/linux-omap1_2.6.x+git.bb b/packages/linux/linux-omap1_2.6.x+git.bb
index dc039b98b2..fbc0ee2ce7 100644
--- a/packages/linux/linux-omap1_2.6.x+git.bb
+++ b/packages/linux/linux-omap1_2.6.x+git.bb
@@ -8,5 +8,3 @@ SRC_URI = "git://source.mvista.com/git/linux-omap-2.6.git;protocol=http \
file://defconfig"
S = "${WORKDIR}/git"
-
-KERNEL_RELEASE = "2.6.18-omap1"
diff --git a/packages/linux/linux-rp-2.6.18/add-oz-release-string.patch b/packages/linux/linux-rp-2.6.18/add-oz-release-string.patch
deleted file mode 100644
index 44b33c2e56..0000000000
--- a/packages/linux/linux-rp-2.6.18/add-oz-release-string.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Index: git/init/version.c
-===================================================================
---- git.orig/init/version.c 2006-07-04 21:49:14.000000000 +0100
-+++ git/init/version.c 2006-07-05 10:02:57.000000000 +0100
-@@ -30,5 +30,5 @@
- EXPORT_SYMBOL(system_utsname);
-
- const char linux_banner[] =
-- "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
-+ "Linux version " UTS_RELEASE OPENZAURUS_RELEASE " (" LINUX_COMPILE_BY "@"
- LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
-Index: git/Makefile
-===================================================================
---- git.orig/Makefile 2006-07-04 21:48:58.000000000 +0100
-+++ git/Makefile 2006-07-05 10:05:03.000000000 +0100
-@@ -859,6 +859,7 @@
- define filechk_version.h
- (echo \#define LINUX_VERSION_CODE $(shell \
- expr $(VERSION) \* 65536 + $(PATCHLEVEL) \* 256 + $(SUBLEVEL)); \
-+ echo \#define OPENZAURUS_RELEASE \"$(OPENZAURUS_RELEASE)\"; \
- echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';)
- endef
-
diff --git a/packages/linux/linux-rp-2.6.18/collie-mcp-r1.patch b/packages/linux/linux-rp-2.6.18/collie-mcp-r1.patch
deleted file mode 100644
index a7b2342fd0..0000000000
--- a/packages/linux/linux-rp-2.6.18/collie-mcp-r1.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Index: linux-2.6.18/arch/arm/mach-sa1100/collie.c
-===================================================================
---- linux-2.6.18.orig/arch/arm/mach-sa1100/collie.c 2006-09-20 16:23:37.000000000 +0200
-+++ linux-2.6.18/arch/arm/mach-sa1100/collie.c 2006-09-20 16:23:38.000000000 +0200
-@@ -259,6 +259,11 @@
- GAFR |= GPIO_MCP_CLK;
- GPDR &= ~GPIO_MCP_CLK;
-
-+ // Reset Codec
-+ GAFR &= ~COLLIE_GPIO_UCB1x00_RESET;
-+ GPDR |= COLLIE_GPIO_UCB1x00_RESET;
-+ GPSR |= COLLIE_GPIO_UCB1x00_RESET;
-+
- #ifdef CONFIG_PCMCIA_SA1100
- platform_scoop_config = &collie_pcmcia_config;
- #endif
diff --git a/packages/linux/linux-rp-2.6.18/defconfig-akita b/packages/linux/linux-rp-2.6.18/defconfig-akita
deleted file mode 100644
index c56e81b602..0000000000
--- a/packages/linux/linux-rp-2.6.18/defconfig-akita
+++ /dev/null
@@ -1,1565 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Thu Mar 23 22:11:12 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# 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=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-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_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_PXA_SHARPSL_25x is not set
-CONFIG_PXA_SHARPSL_27x=y
-CONFIG_MACH_AKITA=y
-CONFIG_MACH_SPITZ=y
-CONFIG_MACH_BORZOI=y
-CONFIG_PXA27x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_IWMMXT=y
-CONFIG_PXA_SHARP_Cxx00=y
-CONFIG_PXA_SSP=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# 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_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# 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_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL 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
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# 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_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=y
-# 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=m
-CONFIG_INET_TCP_DIAG=m
-# 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_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# 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_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE 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=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-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 is not set
-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_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=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
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER 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 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_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# 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_SHARP_SL=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_BLKMTD 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=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM 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_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_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_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# 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_IDE_ARM 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=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=m
-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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# 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_CORGI is not set
-CONFIG_KEYBOARD_SPITZ=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# 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_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-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_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# 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_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB 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 is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# 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 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_SPITZ=y
-# CONFIG_LEDS_TOSA is not set
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# 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_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_W100 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_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-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 is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
-# 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
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-CONFIG_SND_PXA2xx_SOC_I2S=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-CONFIG_SND_PXA2xx_SOC_SPITZ=m
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8731 is not set
-CONFIG_SND_SOC_WM8750=m
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# 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=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_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# 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_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-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_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=m
-CONFIG_USB_HIDINPUT=y
-# 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=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# 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=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# 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_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# 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_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-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_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 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=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_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=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD 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_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-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
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST 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=m
-# CONFIG_EXT3_FS_XATTR is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG 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_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# 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 is not set
-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_SYSFS=y
-CONFIG_TMPFS=y
-# 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_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-# 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 is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-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=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR 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=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-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=y
-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=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL 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=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 is not set
-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=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.18/defconfig-c7x0 b/packages/linux/linux-rp-2.6.18/defconfig-c7x0
deleted file mode 100644
index 0cf0d20513..0000000000
--- a/packages/linux/linux-rp-2.6.18/defconfig-c7x0
+++ /dev/null
@@ -1,1598 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Thu Mar 23 22:03:05 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# 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=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-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_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-# CONFIG_MACH_POODLE is not set
-CONFIG_MACH_CORGI=y
-CONFIG_MACH_SHEPHERD=y
-CONFIG_MACH_HUSKY=y
-# CONFIG_MACH_TOSA is not set
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_PXA_SHARP_C7xx=y
-CONFIG_PXA_SSP=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# 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_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# 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_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-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=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_PXA25x=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=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# 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=m
-# 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=y
-# 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=m
-CONFIG_INET_TCP_DIAG=m
-# 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_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# 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_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE 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=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-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 is not set
-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_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=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
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER 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 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_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# 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_SHARP_SL=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_BLKMTD 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=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM 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_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_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_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# 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_IDE_ARM 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=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=m
-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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# 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_CORGI=y
-# CONFIG_KEYBOARD_SPITZ is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# 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_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-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_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB 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 is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# 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 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_CORGI=y
-# CONFIG_LEDS_TOSA is not set
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO 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_S1D13XXX is not set
-# CONFIG_FB_PXA is not set
-CONFIG_FB_W100=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_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-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 is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
-# 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
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-CONFIG_SND_PXA2xx_SOC_I2S=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-CONFIG_SND_PXA2xx_SOC_CORGI=m
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-CONFIG_SND_SOC_WM8731=m
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-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_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-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_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=m
-CONFIG_USB_HIDINPUT=y
-# 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=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# 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=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_DSBR=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_PWC 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_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# 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_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-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_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 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=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_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X 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_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-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
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST 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_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 is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# 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 is not set
-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_SYSFS=y
-CONFIG_TMPFS=y
-# 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_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-# 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 is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-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=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR 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=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-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=y
-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=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL 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=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 is not set
-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=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.18/defconfig-collie b/packages/linux/linux-rp-2.6.18/defconfig-collie
deleted file mode 100644
index d31322c4da..0000000000
--- a/packages/linux/linux-rp-2.6.18/defconfig-collie
+++ /dev/null
@@ -1,1302 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.18
-# Thu Sep 21 09:44:10 2006
-#
-CONFIG_ARM=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_ARCH_MTD_XIP=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=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# 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_ALL is not set
-# 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_SLAB=y
-CONFIG_VM_EVENT_COUNTERS=y
-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=y
-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=m
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-# CONFIG_DEFAULT_AS is not set
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-CONFIG_DEFAULT_NOOP=y
-CONFIG_DEFAULT_IOSCHED="noop"
-
-#
-# 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 is not set
-# 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=y
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_SA1100_CERF is not set
-CONFIG_SA1100_COLLIE=y
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SSP is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_SA1100=y
-CONFIG_CPU_32v4=y
-CONFIG_CPU_ABRT_EV4=y
-CONFIG_CPU_CACHE_V4WB=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WB=y
-
-#
-# Processor Features
-#
-CONFIG_SHARP_LOCOMO=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-CONFIG_ISA=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=m
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-CONFIG_PCMCIA_SA1100=m
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-# CONFIG_AEABI is not set
-CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
-CONFIG_NODES_SHIFT=2
-CONFIG_SELECT_MEMORY_MODEL=y
-# CONFIG_FLATMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM_MANUAL=y
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_NEED_MULTIPLE_NODES=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=32M fbcon=rotate:1 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ 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
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# 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_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=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 is not set
-# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# 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 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 is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-# CONFIG_IP_NF_CONNTRACK is not set
-# CONFIG_IP_NF_QUEUE is not set
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE 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_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=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_SA1100_FIR 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_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=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 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_DEBUG_DRIVER is not set
-# 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 is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-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
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_OBSOLETE_CHIPS=y
-CONFIG_MTD_SHARP=y
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_SA1100 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
-
-#
-# 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_PNP is not set
-
-#
-# Block devices
-#
-# 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=1024
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_CDROM_PKTCDVD 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 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# 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_NET_VENDOR_3COM is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_NET_VENDOR_RACAL 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 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# 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
-# CONFIG_ARLAN is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-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=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# 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_LOCOMO=y
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON 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_UINPUT=m
-
-#
-# 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 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=m
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=m
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_ELEKTOR is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB 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 is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# 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 is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP_SA11X0 is not set
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=m
-
-#
-# LED drivers
-#
-CONFIG_LEDS_LOCOMO=m
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-
-#
-# 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 is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-
-#
-# Encoders and Decoders
-#
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_TLV320AIC23B is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_CX2341X is not set
-# CONFIG_VIDEO_CX25840 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FIRMWARE_EDID=y
-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_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-CONFIG_FB_SA1100=y
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-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
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_LOCOMO=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-# CONFIG_USB is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# USB Gadget Support
-#
-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 is not set
-# CONFIG_USB_GADGET_PXA27X 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_AT91 is not set
-CONFIG_USB_GADGET_SA1100=y
-CONFIG_USB_SA1100=m
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-# CONFIG_USB_ETH is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=m
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=m
-CONFIG_RTC_INTF_PROC=m
-CONFIG_RTC_INTF_DEV=m
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=m
-# 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 is not set
-CONFIG_FS_MBCACHE=m
-# CONFIG_REISERFS_FS is not set
-# 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 is not set
-# 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_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=y
-# 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 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 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=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=y
-CONFIG_NLS_DEFAULT="cp437"
-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=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS 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_RWSEMS is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL 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=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 is not set
-CONFIG_CRYPTO_DES=m
-# 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 is not set
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-# CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_PLIST=y
diff --git a/packages/linux/linux-rp-2.6.18/defconfig-hx2000 b/packages/linux/linux-rp-2.6.18/defconfig-hx2000
deleted file mode 100644
index 91ba05fb6b..0000000000
--- a/packages/linux/linux-rp-2.6.18/defconfig-hx2000
+++ /dev/null
@@ -1,1025 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.15-rc1-git7
-# Sat Nov 19 23:13:51 2005
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_CLEAN_COMPILE is not set
-CONFIG_BROKEN=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 is not set
-# CONFIG_SYSVIPC is not set
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=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_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_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-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_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_PXA_SHARPSL is not set
-CONFIG_MACH_HX2750=y
-CONFIG_PXA27x=y
-CONFIG_PXA_KEYS=y
-CONFIG_PXA_SSP=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-
-#
-# Bus support
-#
-CONFIG_ISA_DMA_API=y
-
-#
-# 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_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=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_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL 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
-
-#
-# 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=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-# 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=y
-# 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=m
-CONFIG_INET_TCP_DIAG=m
-# 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
-# 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=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-# CONFIG_IEEE80211_CRYPT_CCMP is not set
-# CONFIG_IEEE80211_CRYPT_TKIP is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER 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 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_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# 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=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-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_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
-# CONFIG_MTD_XIP 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_SHARP_SL 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_BLKMTD 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_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_INITRD=y
-# 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_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# 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
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM 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 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# CONFIG_AIRO is not set
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# 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
-# CONFIG_INPUT_POWER 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=y
-# 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_TSC2101=y
-# 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-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_NVRAM is not set
-# CONFIG_SA1100_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Hardware Monitoring support
-#
-CONFIG_HWMON is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-CONFIG_MFD_TSC2101=y
-
-#
-# 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_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS 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_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_HX2750=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-# CONFIG_MMC_WBSD is not set
-
-#
-# Real Time Clock
-#
-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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST 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_JBD 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_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# 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 is not set
-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_SYSFS=y
-# CONFIG_TMPFS is not set
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_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_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_SUMMARY=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 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=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_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-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=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_MAGIC_SYSRQ is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_PREEMPT=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-CONFIG_DEBUG_LL=y
-# CONFIG_DEBUG_ICEDCC is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-# 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_DES 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=m
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_DEFLATE=y
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-CONFIG_CRYPTO_CRC32C=y
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-
diff --git a/packages/linux/linux-rp-2.6.18/defconfig-poodle b/packages/linux/linux-rp-2.6.18/defconfig-poodle
deleted file mode 100644
index deacd170f2..0000000000
--- a/packages/linux/linux-rp-2.6.18/defconfig-poodle
+++ /dev/null
@@ -1,1655 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Mon Jul 10 23:38:56 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-
-#
-# 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=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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_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=y
-# CONFIG_MODVERSIONS is not set
-# 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=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-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_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_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-CONFIG_MACH_POODLE=y
-# CONFIG_MACH_CORGI is not set
-# CONFIG_MACH_SHEPHERD is not set
-# CONFIG_MACH_HUSKY is not set
-# CONFIG_MACH_TOSA is not set
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_PXA_SSP=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_LOCOMO=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# 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_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-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_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-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=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_PXA25x=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=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# 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_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=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_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# 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_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# 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 is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE 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=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-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 is not set
-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_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=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 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_DEBUG_DRIVER 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 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_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# 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_SHARP_SL=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
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM 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_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_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# 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_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# 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_IDE_ARM 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=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=m
-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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# 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
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# 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_LOCOMO=y
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_CORGI is not set
-# CONFIG_KEYBOARD_SPITZ is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# 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_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-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_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB 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 is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# 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 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_LOCOMO=y
-# CONFIG_LEDS_TOSA is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=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 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_VIDEO_OVCAMCHIP is not set
-
-#
-# Encoders and Decoders
-#
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_CX25840 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# V4L USB devices
-#
-# CONFIG_VIDEO_EM28XX is not set
-CONFIG_USB_DSBR=m
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_USB_DABUSB=m
-
-#
-# 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_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_W100 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_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# 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=y
-# 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=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_OHAND_CLUT224 is not set
-CONFIG_LOGO_OZ240_CLUT224=y
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_LCD_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-CONFIG_BACKLIGHT_LOCOMO=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=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
-
-#
-# ALSA ARM devices
-#
-# CONFIG_SND_PXA2XX_AC97 is not set
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8731 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8974 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_MAINSTONE_BASEBAND is not set
-# CONFIG_SND_MAINSTONE_BLUETOOTH is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-CONFIG_SND_PXA2xx_SOC_POODLE=m
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-CONFIG_SND_SOC_WM8731=m
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM8974 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-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_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_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# 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_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=m
-CONFIG_USB_HIDINPUT=y
-# 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=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# 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=m
-CONFIG_USB_MICROTEK=m
-
-#
-# 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_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# 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_ANYDATA is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-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 is not set
-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 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_NAVMAN is not set
-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_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X 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_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-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
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# 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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST 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_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 is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# 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 is not set
-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_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=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-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 is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-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=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR 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=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-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=y
-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=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL 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=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 is not set
-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=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.18/defconfig-qemuarm b/packages/linux/linux-rp-2.6.18/defconfig-qemuarm
deleted file mode 100644
index badf692a96..0000000000
--- a/packages/linux/linux-rp-2.6.18/defconfig-qemuarm
+++ /dev/null
@@ -1,1193 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Sat Aug 26 22:45:02 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_VECTORS_BASE=0xffff0000
-
-#
-# 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 is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-# CONFIG_EMBEDDED is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-CONFIG_OBSOLETE_INTERMODULE=y
-
-#
-# Loadable module support
-#
-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
-
-#
-# Block layer
-#
-# CONFIG_BLK_DEV_IO_TRACE 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"
-
-#
-# System Type
-#
-# 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_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 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_VERSATILE=y
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Versatile platform type
-#
-CONFIG_ARCH_VERSATILE_PB=y
-# CONFIG_MACH_VERSATILE_AB is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_ARM926T=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5TJ=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_COPY_V4WB=y
-CONFIG_CPU_TLB_V4WBI=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_KEXEC is not set
-CONFIG_ARM_VIC=y
-CONFIG_ICST307=y
-
-#
-# Bus support
-#
-CONFIG_ARM_AMBA=y
-CONFIG_PCI=y
-# CONFIG_PCI_DEBUG is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_PREEMPT is not set
-# 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_LEDS=y
-CONFIG_LEDS_TIMER=y
-CONFIG_LEDS_CPU=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
-# 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
-CONFIG_VFP=y
-
-#
-# 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=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG 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_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_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL 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 is not set
-# CONFIG_DEBUG_DRIVER 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 is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_AFS_PARTS=y
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=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
-
-#
-# 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=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_GEOMETRY 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_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 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_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=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=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH 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 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_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 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=y
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
-# 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_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# 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_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-CONFIG_SMC91X=y
-# CONFIG_DM9000 is not set
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_PCI 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_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
-
-#
-# 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
-# CONFIG_INPUT_POWER 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_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_UINPUT is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-# CONFIG_SERIO_SERPORT is not set
-CONFIG_SERIO_AMBAKMI=y
-# 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 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_AMBA_PL011=y
-CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
-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 is not set
-# 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 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_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-# CONFIG_LEDS_CLASS is not set
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-# CONFIG_LEDS_TRIGGERS is not set
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB 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_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-CONFIG_FB_ARMCLCD=y
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_MATROX 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_TRIDENT is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-# 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_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# 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 is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_HCD is not set
-# 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 is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-# CONFIG_USB_HID is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# 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 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 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=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_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_LD 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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_TEST 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_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 is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# 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_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_NTFS_FS is not set
-
-#
-# 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_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-# CONFIG_SQUASHFS 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=y
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-# CONFIG_NFSD_TCP is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=y
-# 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
-# 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=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# 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 is not set
-# 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
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_INFO=y
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-CONFIG_FORCED_INLINING=y
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# 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 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.18/defconfig-qemux86 b/packages/linux/linux-rp-2.6.18/defconfig-qemux86
deleted file mode 100644
index 92ad5eca2d..0000000000
--- a/packages/linux/linux-rp-2.6.18/defconfig-qemux86
+++ /dev/null
@@ -1,1563 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Wed Aug 23 11:24:17 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_GENERIC_HWEIGHT=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_DMI=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=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=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-# CONFIG_IKCONFIG is not set
-# CONFIG_CPUSETS is not set
-# CONFIG_RELAY is not set
-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_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 is not set
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_LBD=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF 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_SMP=y
-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=y
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# 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_L1_CACHE_SHIFT=7
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_F00F_BUG=y
-CONFIG_X86_INTEL_USERCOPY=y
-# CONFIG_HPET_TIMER is not set
-CONFIG_NR_CPUS=8
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_PREEMPT_BKL=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_NONFATAL=y
-CONFIG_X86_MCE_P4THERMAL=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_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_IRQBALANCE=y
-# CONFIG_REGPARM is not set
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
-# CONFIG_KEXEC is not set
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_HOTPLUG_CPU is not set
-
-#
-# Power management options (ACPI, APM)
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-
-#
-# ACPI (Advanced Configuration and Power Interface) Support
-#
-CONFIG_ACPI=y
-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=m
-# CONFIG_ACPI_IBM_DOCK 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_MSI is not set
-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=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_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 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=y
-# 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 is not set
-# CONFIG_IP_NF_FTP is not set
-# CONFIG_IP_NF_IRC is not set
-# CONFIG_IP_NF_NETBIOS_NS is not set
-# CONFIG_IP_NF_TFTP is not set
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_PPTP is not set
-# CONFIG_IP_NF_H323 is not set
-CONFIG_IP_NF_QUEUE=y
-
-#
-# 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=m
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-# CONFIG_MTD is not set
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=y
-CONFIG_PARPORT_PC=y
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_1284 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=y
-
-#
-# Block devices
-#
-CONFIG_BLK_DEV_FD=y
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE 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 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_INITRD is not set
-# 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=y
-CONFIG_IDEDISK_MULTI_MODE=y
-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=y
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_IDEPNP is not set
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_SHARE_IRQ=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_RZ1000=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
-CONFIG_IDEDMA_PCI_AUTO=y
-# CONFIG_IDEDMA_ONLYDISK is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_ATIIXP is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-# CONFIG_BLK_DEV_CS5535 is not set
-# CONFIG_BLK_DEV_HPT34X is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-CONFIG_BLK_DEV_PIIX=y
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SIS5513 is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_IDE_CHIPSETS is not set
-CONFIG_BLK_DEV_IDEDMA=y
-# CONFIG_IDEDMA_IVB is not set
-CONFIG_IDEDMA_AUTO=y
-# 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 is not set
-CONFIG_CHR_DEV_SG=y
-# 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 is not set
-# 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=m
-# CONFIG_SCSI_ADVANSYS 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=y
-# CONFIG_SCSI_SATA_AHCI is not set
-# CONFIG_SCSI_SATA_SVW is not set
-CONFIG_SCSI_ATA_PIIX=y
-# CONFIG_SCSI_SATA_MV is not set
-# CONFIG_SCSI_SATA_NV is not set
-# CONFIG_SCSI_PDC_ADMA is not set
-# CONFIG_SCSI_SATA_QSTOR is not set
-# CONFIG_SCSI_SATA_PROMISE is not set
-CONFIG_SCSI_SATA_SX4=m
-# CONFIG_SCSI_SATA_SIL is not set
-# CONFIG_SCSI_SATA_SIL24 is not set
-CONFIG_SCSI_SATA_SIS=m
-# CONFIG_SCSI_SATA_ULI is not set
-# CONFIG_SCSI_SATA_VIA is not set
-# CONFIG_SCSI_SATA_VITESSE is not set
-CONFIG_SCSI_SATA_INTEL_COMBINED=y
-# 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_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-CONFIG_SCSI_IPR=m
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP 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_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=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# 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=y
-
-#
-# Subsystem Options
-#
-# CONFIG_IEEE1394_VERBOSEDEBUG is not set
-# CONFIG_IEEE1394_OUI_DB is not set
-# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set
-# CONFIG_IEEE1394_EXPORT_FULL_API is not set
-
-#
-# Device Drivers
-#
-
-#
-# Texas Instruments PCILynx requires I2C
-#
-CONFIG_IEEE1394_OHCI1394=y
-
-#
-# Protocol Drivers
-#
-# CONFIG_IEEE1394_VIDEO1394 is not set
-# CONFIG_IEEE1394_SBP2 is not set
-# CONFIG_IEEE1394_ETH1394 is not set
-# CONFIG_IEEE1394_DV1394 is not set
-CONFIG_IEEE1394_RAWIO=y
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=m
-# 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=y
-# CONFIG_E2100 is not set
-# CONFIG_EWRK3 is not set
-# CONFIG_EEXPRESS is not set
-# CONFIG_EEXPRESS_PRO is not set
-# CONFIG_HPLAN_PLUS is not set
-# CONFIG_HPLAN is not set
-# CONFIG_LP486E is not set
-# CONFIG_ETH16I is not set
-CONFIG_NE2000=y
-# CONFIG_ZNET is not set
-# CONFIG_SEEQ8005 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_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=y
-# CONFIG_8139CP is not set
-CONFIG_8139TOO=y
-CONFIG_8139TOO_PIO=y
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET 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_NET_POCKET 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=m
-# CONFIG_S2IO_NAPI 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_PLIP 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
-# CONFIG_INPUT_POWER 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_PARKBD 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_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-CONFIG_PRINTER=y
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-# CONFIG_TIPAR is not set
-
-#
-# 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_AGP=y
-# CONFIG_AGP_ALI is not set
-# CONFIG_AGP_ATI is not set
-# CONFIG_AGP_AMD is not set
-# CONFIG_AGP_AMD64 is not set
-CONFIG_AGP_INTEL=y
-# CONFIG_AGP_NVIDIA is not set
-# CONFIG_AGP_SIS is not set
-# CONFIG_AGP_SWORKS is not set
-# CONFIG_AGP_VIA is not set
-# CONFIG_AGP_EFFICEON is not set
-CONFIG_DRM=y
-# CONFIG_DRM_TDFX is not set
-# CONFIG_DRM_R128 is not set
-# CONFIG_DRM_RADEON is not set
-# CONFIG_DRM_I810 is not set
-# CONFIG_DRM_I830 is not set
-# CONFIG_DRM_I915 is not set
-# CONFIG_DRM_MGA is not set
-# CONFIG_DRM_SIS is not set
-# CONFIG_DRM_VIA is not set
-# CONFIG_DRM_SAVAGE 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
-
-#
-# Multi-Function Devices
-#
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB 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_FIRMWARE_EDID=y
-# 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 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_VGACON_SOFT_SCROLLBACK is not set
-# 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 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_SEQUENCER=y
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=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_AC97_CODEC=y
-CONFIG_SND_AC97_BUS=y
-# 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
-
-#
-# ISA devices
-#
-# CONFIG_SND_ADLIB is not set
-# CONFIG_SND_AD1816A is not set
-# CONFIG_SND_AD1848 is not set
-# CONFIG_SND_ALS100 is not set
-# CONFIG_SND_AZT2320 is not set
-# CONFIG_SND_CMI8330 is not set
-# CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4232 is not set
-# CONFIG_SND_CS4236 is not set
-# CONFIG_SND_DT019X is not set
-# CONFIG_SND_ES968 is not set
-# CONFIG_SND_ES1688 is not set
-# CONFIG_SND_ES18XX is not set
-# CONFIG_SND_GUSCLASSIC is not set
-# CONFIG_SND_GUSEXTREME is not set
-# CONFIG_SND_GUSMAX is not set
-# CONFIG_SND_INTERWAVE is not set
-# CONFIG_SND_INTERWAVE_STB is not set
-# CONFIG_SND_OPL3SA2 is not set
-# CONFIG_SND_OPTI92X_AD1848 is not set
-# CONFIG_SND_OPTI92X_CS4231 is not set
-# CONFIG_SND_OPTI93X is not set
-# CONFIG_SND_MIRO is not set
-# CONFIG_SND_SB8 is not set
-# CONFIG_SND_SB16 is not set
-# CONFIG_SND_SBAWE is not set
-# CONFIG_SND_SGALAXY is not set
-# CONFIG_SND_SSCAPE is not set
-# CONFIG_SND_WAVEFRONT is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 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_CS5535AUDIO 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=y
-# 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
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_USX2Y is not set
-
-#
-# SoC audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# 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_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=y
-
-#
-# 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_TOUCHSCREEN 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 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=y
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# 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=m
-# CONFIG_USB_PHIDGETKIT is not set
-CONFIG_USB_PHIDGETSERVO=m
-# 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
-
-#
-# LED devices
-#
-# CONFIG_NEW_LEDS is not set
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-
-#
-# InfiniBand support
-#
-# CONFIG_INFINIBAND is not set
-
-#
-# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
-#
-# CONFIG_EDAC is not set
-
-#
-# Real Time Clock
-#
-# CONFIG_RTC_CLASS 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 is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=y
-# CONFIG_FUSE_FS is not set
-
-#
-# 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_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 is not set
-# CONFIG_SQUASHFS 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 is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=y
-# CONFIG_NFSD_V3 is not set
-CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# 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
-# 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=y
-CONFIG_OPROFILE=y
-# 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=15
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_FS is not set
-# CONFIG_UNWIND_INFO is not set
-CONFIG_EARLY_PRINTK=y
-CONFIG_STACK_BACKTRACE_COLS=2
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_DOUBLEFAULT=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_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-CONFIG_KTIME_SCALAR=y
diff --git a/packages/linux/linux-rp-2.6.18/defconfig-spitz b/packages/linux/linux-rp-2.6.18/defconfig-spitz
deleted file mode 100644
index f425956323..0000000000
--- a/packages/linux/linux-rp-2.6.18/defconfig-spitz
+++ /dev/null
@@ -1,1565 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Thu Mar 23 22:11:12 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# 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=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-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_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_PXA_SHARPSL_25x is not set
-CONFIG_PXA_SHARPSL_27x=y
-CONFIG_MACH_AKITA=y
-CONFIG_MACH_SPITZ=y
-CONFIG_MACH_BORZOI=y
-CONFIG_PXA27x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_IWMMXT=y
-CONFIG_PXA_SHARP_Cxx00=y
-CONFIG_PXA_SSP=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# 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_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# 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_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL 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
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# 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_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=y
-# 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=m
-CONFIG_INET_TCP_DIAG=m
-# 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_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# 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_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE 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=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-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 is not set
-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_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=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
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER 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 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_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# 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_SHARP_SL=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_BLKMTD 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=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM 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_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_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_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# 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_IDE_ARM 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=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=m
-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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# 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_CORGI is not set
-CONFIG_KEYBOARD_SPITZ=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# 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_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-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_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# 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_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB 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 is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# 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 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_SPITZ=y
-# CONFIG_LEDS_TOSA is not set
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# 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_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_W100 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_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-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 is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
-# 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
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-CONFIG_SND_PXA2xx_SOC_I2S=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-CONFIG_SND_PXA2xx_SOC_SPITZ=m
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8731 is not set
-CONFIG_SND_SOC_WM8750=m
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# 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=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_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# 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_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-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_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=m
-CONFIG_USB_HIDINPUT=y
-# 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=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# 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=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# 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_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# 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_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-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_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 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=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_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=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD 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_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-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
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST 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 is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG 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_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# 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 is not set
-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_SYSFS=y
-CONFIG_TMPFS=y
-# 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_JFFS_FS is not set
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-# 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 is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-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=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR 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=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-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=y
-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=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL 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=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 is not set
-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=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.18/defconfig-tosa b/packages/linux/linux-rp-2.6.18/defconfig-tosa
deleted file mode 100644
index e3ca24eae9..0000000000
--- a/packages/linux/linux-rp-2.6.18/defconfig-tosa
+++ /dev/null
@@ -1,1598 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc5-git5
-# Tue Mar 14 09:05:26 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# 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=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-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_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-# CONFIG_MACH_POODLE is not set
-# CONFIG_MACH_CORGI is not set
-# CONFIG_MACH_SHEPHERD is not set
-# CONFIG_MACH_HUSKY is not set
-CONFIG_MACH_TOSA=y
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS 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_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-CONFIG_TOSHIBA_TC6393XB=y
-
-#
-# Bus support
-#
-
-#
-# 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_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# 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_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-# CONFIG_CPU_FREQ_DEBUG is not set
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=m
-CONFIG_CPU_FREQ_GOV_USERSPACE=m
-CONFIG_CPU_FREQ_GOV_ONDEMAND=m
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
-CONFIG_CPU_FREQ_PXA25x=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=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# 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=m
-# 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=y
-# 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=m
-CONFIG_INET_TCP_DIAG=m
-# 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_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# 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_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE 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=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-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 is not set
-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_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=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
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER 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 is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=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
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_SHARP_SL=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_BLKMTD 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=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_TMIO=y
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_SHARPSL is not set
-# CONFIG_MTD_NAND_NANDSIM 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_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 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_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# 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 is not set
-# CONFIG_IDE_ARM 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=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=m
-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 is not set
-# 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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# 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_CORGI is not set
-# CONFIG_KEYBOARD_SPITZ is not set
-CONFIG_KEYBOARD_TOSA=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_CORGI 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_WM97XX=y
-# CONFIG_TOUCHSCREEN_WM9705 is not set
-CONFIG_TOUCHSCREEN_WM9712=y
-# CONFIG_TOUCHSCREEN_WM9713 is not set
-# CONFIG_TOUCHSCREEN_WM97XX_PXA 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-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_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# 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_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB 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 is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# 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
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TOSA=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO 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_S1D13XXX is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_W100 is not set
-CONFIG_FB_TMIO=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_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
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-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_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_BUS=y
-CONFIG_SND_DUMMY=m
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-# CONFIG_SND_PXA2XX_AC97 is not set
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=y
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=y
-CONFIG_SND_PXA2xx_SOC_AC97=y
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-CONFIG_SND_PXA2xx_SOC_TOSA=y
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8731 is not set
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-CONFIG_SND_SOC_WM9712=y
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# 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=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_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# 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_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-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_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=m
-CONFIG_USB_HIDINPUT=y
-# 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=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# 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=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_DSBR=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_PWC 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=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-# CONFIG_USB_NET_ZAURUS is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# 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_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-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_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 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=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_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=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X 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_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-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
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST 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_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 is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-CONFIG_FUSE_FS=m
-
-#
-# 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_SYSFS=y
-CONFIG_TMPFS=y
-# 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_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-# 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 is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-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=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR 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=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-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=y
-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=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL 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=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 is not set
-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 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_GENERIC_ALLOCATOR=y
diff --git a/packages/linux/linux-rp-2.6.18/hrw-pcmcia-ids-r5.patch b/packages/linux/linux-rp-2.6.18/hrw-pcmcia-ids-r5.patch
deleted file mode 100644
index b09acacadd..0000000000
--- a/packages/linux/linux-rp-2.6.18/hrw-pcmcia-ids-r5.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
-Few cards informations submitted by OpenZaurus users.
-
-Seagate 8GB microdrive:
- product info: "SEAGATE", "ST1"
- manfid 0x0111, 0x0000
-
-One CF card:
- product info: "SAMSUNG", "04/05/06", "", ""
- manfid : 0x0000, 0x0000
-
-Ridata 8GB Pro 150X Compact Flash Card:
- product info: "SMI VENDOR", "SMI PRODUCT", ""
- manfid: 0x000a, 0x0000
-
- product info: "M-Systems", "CF500", ""
- manfid: 0x000a, 0x0000
-
- product info: "TRANSCEND", "TS4GCF120", ""
- manfid: 0x000a, 0x0000
-
-Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
- drivers/ide/legacy/ide-cs.c | 5 +++++
- drivers/net/pcmcia/pcnet_cs.c | 2 ++
- 2 files changed, 7 insertions(+)
-
-Index: linux-2.6.18/drivers/ide/legacy/ide-cs.c
-===================================================================
---- linux-2.6.18.orig/drivers/ide/legacy/ide-cs.c 2006-12-06 00:55:51.000000000 +0000
-+++ linux-2.6.18/drivers/ide/legacy/ide-cs.c 2006-12-06 00:55:55.000000000 +0000
-@@ -398,12 +398,17 @@ static struct pcmcia_device_id ide_ids[]
- PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149),
- PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674),
- PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b),
-+ PCMCIA_DEVICE_PROD_ID12("M-Systems", "CF500", 0x7ed2ad87, 0x7a13045c),
- PCMCIA_DEVICE_PROD_ID2("NinjaATA-", 0xebe0bd79),
- PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591),
- PCMCIA_DEVICE_PROD_ID12("PCMCIA", "PnPIDE", 0x281f1c5d, 0x0c694728),
- PCMCIA_DEVICE_PROD_ID12("SHUTTLE TECHNOLOGY LTD.", "PCCARD-IDE/ATAPI Adapter", 0x4a3f0ba0, 0x322560e1),
-+ PCMCIA_DEVICE_PROD_ID12("SEAGATE", "ST1", 0x87c1b330, 0xe1f30883),
-+ PCMCIA_DEVICE_PROD_ID12("SAMSUNG", "04/05/06", 0x43d74cb4, 0x6a22777d),
-+ PCMCIA_DEVICE_PROD_ID12("SMI VENDOR", "SMI PRODUCT", 0x30896c92, 0x703cc5f6),
- PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "MK2001MPL", 0xb4585a1a, 0x3489e003),
- PCMCIA_DEVICE_PROD_ID1("TRANSCEND 512M ", 0xd0909443),
-+ PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS4GCF120", 0x709b1bf1, 0xf54a91c8),
- PCMCIA_DEVICE_PROD_ID12("WIT", "IDE16", 0x244e5994, 0x3e232852),
- PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
- PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e),
-Index: linux-2.6.18/drivers/net/pcmcia/pcnet_cs.c
-===================================================================
---- linux-2.6.18.orig/drivers/net/pcmcia/pcnet_cs.c 2006-09-20 04:42:06.000000000 +0100
-+++ linux-2.6.18/drivers/net/pcmcia/pcnet_cs.c 2006-12-06 00:57:27.000000000 +0000
-@@ -1770,6 +1770,8 @@ static struct pcmcia_device_id pcnet_ids
- PCMCIA_DEVICE_CIS_PROD_ID12("TAMARACK", "Ethernet", 0xcf434fba, 0x00b2e941, "tamarack.cis"),
- PCMCIA_DEVICE_PROD_ID123("Fast Ethernet", "CF Size PC Card", "1.0",
- 0xb4be14e3, 0x43ac239b, 0x0877b627),
-+ PCMCIA_DEVICE_PROD_ID123("Ethernet", "CF Size PC Card", "1.0",
-+ 0x00b2e941, 0x43ac239b, 0x0877b627),
- PCMCIA_DEVICE_NULL
- };
- MODULE_DEVICE_TABLE(pcmcia, pcnet_ids);
diff --git a/packages/linux/linux-rp-2.6.18/pxa-serial-hack.patch b/packages/linux/linux-rp-2.6.18/pxa-serial-hack.patch
deleted file mode 100644
index 5d1b76d5e1..0000000000
--- a/packages/linux/linux-rp-2.6.18/pxa-serial-hack.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-Index: git/drivers/serial/8250.c
-===================================================================
---- git.orig/drivers/serial/8250.c 2006-07-05 10:06:08.000000000 +0100
-+++ git/drivers/serial/8250.c 2006-07-05 10:06:20.000000000 +0100
-@@ -2401,7 +2401,12 @@
- .driver_name = "serial",
- .dev_name = "ttyS",
- .major = TTY_MAJOR,
-+#ifdef CONFIG_SERIAL_PXA
-+ .minor = 64 + 3,
-+ .name_base = 3,
-+#else
- .minor = 64,
-+#endif
- .nr = UART_NR,
- .cons = SERIAL8250_CONSOLE,
- };
-Index: git/drivers/serial/serial_core.c
-===================================================================
---- git.orig/drivers/serial/serial_core.c 2006-07-04 21:49:08.000000000 +0100
-+++ git/drivers/serial/serial_core.c 2006-07-05 10:06:20.000000000 +0100
-@@ -2162,6 +2162,7 @@
- normal->owner = drv->owner;
- normal->driver_name = drv->driver_name;
- normal->name = drv->dev_name;
-+ normal->name_base = drv->name_base;
- normal->major = drv->major;
- normal->minor_start = drv->minor;
- normal->type = TTY_DRIVER_TYPE_SERIAL;
-Index: git/include/linux/serial_core.h
-===================================================================
---- git.orig/include/linux/serial_core.h 2006-07-04 21:49:14.000000000 +0100
-+++ git/include/linux/serial_core.h 2006-07-05 10:07:10.000000000 +0100
-@@ -337,6 +337,7 @@
- struct module *owner;
- const char *driver_name;
- const char *dev_name;
-+ int name_base;
- int major;
- int minor;
- int nr;
-Index: git/drivers/serial/serial_cs.c
-===================================================================
---- git.orig/drivers/serial/serial_cs.c 2006-07-04 21:49:08.000000000 +0100
-+++ git/drivers/serial/serial_cs.c 2006-07-05 10:06:20.000000000 +0100
-@@ -268,7 +268,7 @@
- kio_addr_t iobase, int irq)
- {
- struct uart_port port;
-- int line;
-+ int line, linestart;
-
- memset(&port, 0, sizeof (struct uart_port));
- port.iobase = iobase;
-@@ -285,10 +285,16 @@
- return -EINVAL;
- }
-
-+#if CONFIG_SERIAL_PXA
-+ linestart = 3;
-+#else
-+ linestart = 0;
-+#endif
-+
- info->line[info->ndev] = line;
-- sprintf(info->node[info->ndev].dev_name, "ttyS%d", line);
-+ sprintf(info->node[info->ndev].dev_name, "ttyS%d", line+linestart);
- info->node[info->ndev].major = TTY_MAJOR;
-- info->node[info->ndev].minor = 0x40 + line;
-+ info->node[info->ndev].minor = 0x40 + line + linestart;
- if (info->ndev > 0)
- info->node[info->ndev - 1].next = &info->node[info->ndev];
- info->ndev++;
diff --git a/packages/linux/linux-rp-2.6.18/squashfs3.0-2.6.15.patch b/packages/linux/linux-rp-2.6.18/squashfs3.0-2.6.15.patch
deleted file mode 100644
index 2a1665a383..0000000000
--- a/packages/linux/linux-rp-2.6.18/squashfs3.0-2.6.15.patch
+++ /dev/null
@@ -1,4195 +0,0 @@
- fs/Kconfig | 65 +
- fs/Makefile | 1
- fs/squashfs/Makefile | 7
- fs/squashfs/inode.c | 2127 +++++++++++++++++++++++++++++++++++++++++
- fs/squashfs/squashfs.h | 86 +
- fs/squashfs/squashfs2_0.c | 758 ++++++++++++++
- include/linux/squashfs_fs.h | 911 +++++++++++++++++
- include/linux/squashfs_fs_i.h | 45
- include/linux/squashfs_fs_sb.h | 74 +
- init/do_mounts_rd.c | 13
- 10 files changed, 4087 insertions(+)
-
-Index: linux-2.6.18/fs/Kconfig
-===================================================================
---- linux-2.6.18.orig/fs/Kconfig 2006-09-20 04:42:06.000000000 +0100
-+++ linux-2.6.18/fs/Kconfig 2006-09-20 15:45:15.000000000 +0100
-@@ -1249,6 +1249,71 @@ config CRAMFS
-
- If unsure, say N.
-
-+config SQUASHFS
-+ tristate "SquashFS 3.0 - Squashed file system support"
-+ select ZLIB_INFLATE
-+ help
-+ Saying Y here includes support for SquashFS 3.0 (a Compressed Read-Only File
-+ System). Squashfs is a highly compressed read-only filesystem for Linux.
-+ It uses zlib compression to compress both files, inodes and directories.
-+ Inodes in the system are very small and all blocks are packed to minimise
-+ data overhead. Block sizes greater than 4K are supported up to a maximum of 64K.
-+ SquashFS 3.0 supports 64 bit filesystems and files (larger than 4GB), full
-+ uid/gid information, hard links and timestamps.
-+
-+ Squashfs is intended for general read-only filesystem use, for archival
-+ use (i.e. in cases where a .tar.gz file may be used), and in embedded
-+ systems where low overhead is needed. Further information and filesystem tools
-+ are available from http://squashfs.sourceforge.net.
-+
-+ If you want to compile this as a module ( = code which can be
-+ inserted in and removed from the running kernel whenever you want),
-+ say M here and read <file:Documentation/modules.txt>. The module
-+ will be called squashfs. Note that the root file system (the one
-+ containing the directory /) cannot be compiled as a module.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_EMBEDDED
-+
-+ bool "Additional options for memory-constrained systems"
-+ depends on SQUASHFS
-+ default n
-+ help
-+ Saying Y here allows you to specify cache sizes and how Squashfs
-+ allocates memory. This is only intended for memory constrained
-+ systems.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_FRAGMENT_CACHE_SIZE
-+ int "Number of fragments cached" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default "3"
-+ help
-+ By default SquashFS caches the last 3 fragments read from
-+ the filesystem. Increasing this amount may mean SquashFS
-+ has to re-read fragments less often from disk, at the expense
-+ of extra system memory. Decreasing this amount will mean
-+ SquashFS uses less memory at the expense of extra reads from disk.
-+
-+ Note there must be at least one cached fragment. Anything
-+ much more than three will probably not make much difference.
-+
-+config SQUASHFS_VMALLOC
-+ bool "Use Vmalloc rather than Kmalloc" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default n
-+ help
-+ By default SquashFS uses kmalloc to obtain fragment cache memory.
-+ Kmalloc memory is the standard kernel allocator, but it can fail
-+ on memory constrained systems. Because of the way Vmalloc works,
-+ Vmalloc can succeed when kmalloc fails. Specifying this option
-+ will make SquashFS always use Vmalloc to allocate the
-+ fragment cache memory.
-+
-+ If unsure, say N.
-+
- config VXFS_FS
- tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
- help
-Index: linux-2.6.18/fs/Makefile
-===================================================================
---- linux-2.6.18.orig/fs/Makefile 2006-09-20 04:42:06.000000000 +0100
-+++ linux-2.6.18/fs/Makefile 2006-09-20 15:45:15.000000000 +0100
-@@ -57,6 +57,7 @@ obj-$(CONFIG_EXT3_FS) += ext3/ # Before
- obj-$(CONFIG_JBD) += jbd/
- obj-$(CONFIG_EXT2_FS) += ext2/
- obj-$(CONFIG_CRAMFS) += cramfs/
-+obj-$(CONFIG_SQUASHFS) += squashfs/
- obj-$(CONFIG_RAMFS) += ramfs/
- obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
- obj-$(CONFIG_CODA_FS) += coda/
-Index: linux-2.6.18/fs/squashfs/inode.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.18/fs/squashfs/inode.c 2006-09-20 16:15:58.000000000 +0100
-@@ -0,0 +1,2127 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * inode.c
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/smp_lock.h>
-+#include <linux/slab.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+#include <linux/buffer_head.h>
-+#include <linux/vfs.h>
-+#include <linux/init.h>
-+#include <linux/dcache.h>
-+#include <linux/wait.h>
-+#include <linux/zlib.h>
-+#include <linux/blkdev.h>
-+#include <linux/vmalloc.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.h>
-+
-+#include "squashfs.h"
-+
-+static void squashfs_put_super(struct super_block *);
-+static int squashfs_statfs(struct super_block *, struct kstatfs *);
-+static int squashfs_symlink_readpage(struct file *file, struct page *page);
-+static int squashfs_readpage(struct file *file, struct page *page);
-+static int squashfs_readpage4K(struct file *file, struct page *page);
-+static int squashfs_readdir(struct file *, void *, filldir_t);
-+static struct inode *squashfs_alloc_inode(struct super_block *sb);
-+static void squashfs_destroy_inode(struct inode *inode);
-+static int init_inodecache(void);
-+static void destroy_inodecache(void);
-+static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
-+ struct nameidata *);
-+static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode);
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize);
-+static struct super_block *squashfs_get_sb(struct file_system_type *, int,
-+ const char *, void *, struct vfsmount *);
-+
-+
-+static z_stream stream;
-+
-+static struct file_system_type squashfs_fs_type = {
-+ .owner = THIS_MODULE,
-+ .name = "squashfs",
-+ .get_sb = squashfs_get_sb,
-+ .kill_sb = kill_block_super,
-+ .fs_flags = FS_REQUIRES_DEV
-+};
-+
-+static unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static struct super_operations squashfs_ops = {
-+ .alloc_inode = squashfs_alloc_inode,
-+ .destroy_inode = squashfs_destroy_inode,
-+ .statfs = squashfs_statfs,
-+ .put_super = squashfs_put_super,
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_symlink_aops = {
-+ .readpage = squashfs_symlink_readpage
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_aops = {
-+ .readpage = squashfs_readpage
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_aops_4K = {
-+ .readpage = squashfs_readpage4K
-+};
-+
-+static struct file_operations squashfs_dir_ops = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir
-+};
-+
-+SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
-+ .lookup = squashfs_lookup
-+};
-+
-+
-+static struct buffer_head *get_block_length(struct super_block *s,
-+ int *cur_index, int *offset, int *c_byte)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned short temp;
-+ struct buffer_head *bh;
-+
-+ if (!(bh = sb_bread(s, *cur_index)))
-+ goto out;
-+
-+ if (msblk->devblksize - *offset == 1) {
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ else
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ bh->b_data);
-+ else
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ bh->b_data);
-+ *c_byte = temp;
-+ *offset = 1;
-+ } else {
-+ if (msblk->swap) {
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ } else {
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ }
-+ *c_byte = temp;
-+ *offset += 2;
-+ }
-+
-+ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) {
-+ if (*offset == msblk->devblksize) {
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ *offset = 0;
-+ }
-+ if (*((unsigned char *) (bh->b_data + *offset)) !=
-+ SQUASHFS_MARKER_BYTE) {
-+ ERROR("Metadata block marker corrupt @ %x\n",
-+ *cur_index);
-+ brelse(bh);
-+ goto out;
-+ }
-+ (*offset)++;
-+ }
-+ return bh;
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct buffer_head *bh[((SQUASHFS_FILE_MAX_SIZE - 1) >>
-+ msblk->devblksize_log2) + 2];
-+ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1);
-+ unsigned int cur_index = index >> msblk->devblksize_log2;
-+ int bytes, avail_bytes, b = 0, k;
-+ char *c_buffer;
-+ unsigned int compressed;
-+ unsigned int c_byte = length;
-+
-+ if (c_byte) {
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
-+ c_buffer = compressed ? msblk->read_data : buffer;
-+ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ if (!(bh[0] = sb_getblk(s, cur_index)))
-+ goto block_release;
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b, bh);
-+ } else {
-+ if (!(bh[0] = get_block_length(s, &cur_index, &offset,
-+ &c_byte)))
-+ goto read_failure;
-+
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED(c_byte);
-+ c_buffer = compressed ? msblk->read_data : buffer;
-+ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b - 1, bh + 1);
-+ }
-+
-+ if (compressed)
-+ down(&msblk->read_data_mutex);
-+
-+ for (bytes = 0, k = 0; k < b; k++) {
-+ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
-+ msblk->devblksize - offset :
-+ c_byte - bytes;
-+ wait_on_buffer(bh[k]);
-+ if (!buffer_uptodate(bh[k]))
-+ goto block_release;
-+ memcpy(c_buffer + bytes, bh[k]->b_data + offset, avail_bytes);
-+ bytes += avail_bytes;
-+ offset = 0;
-+ brelse(bh[k]);
-+ }
-+
-+ /*
-+ * uncompress block
-+ */
-+ if (compressed) {
-+ int zlib_err;
-+
-+ stream.next_in = c_buffer;
-+ stream.avail_in = c_byte;
-+ stream.next_out = buffer;
-+ stream.avail_out = msblk->read_size;
-+
-+ if (((zlib_err = zlib_inflateInit(&stream)) != Z_OK) ||
-+ ((zlib_err = zlib_inflate(&stream, Z_FINISH))
-+ != Z_STREAM_END) || ((zlib_err =
-+ zlib_inflateEnd(&stream)) != Z_OK)) {
-+ ERROR("zlib_fs returned unexpected result 0x%x\n",
-+ zlib_err);
-+ bytes = 0;
-+ } else
-+ bytes = stream.total_out;
-+
-+ up(&msblk->read_data_mutex);
-+ }
-+
-+ if (next_index)
-+ *next_index = index + c_byte + (length ? 0 :
-+ (SQUASHFS_CHECK_DATA(msblk->sblk.flags)
-+ ? 3 : 2));
-+ return bytes;
-+
-+block_release:
-+ while (--b >= 0)
-+ brelse(bh[b]);
-+
-+read_failure:
-+ ERROR("sb_bread failed reading block 0x%x\n", cur_index);
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ int n, i, bytes, return_length = length;
-+ long long next_index;
-+
-+ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset);
-+
-+ while ( 1 ) {
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (msblk->block_cache[i].block == block)
-+ break;
-+
-+ down(&msblk->block_cache_mutex);
-+
-+ if (i == SQUASHFS_CACHED_BLKS) {
-+ /* read inode header block */
-+ for (i = msblk->next_cache, n = SQUASHFS_CACHED_BLKS;
-+ n ; n --, i = (i + 1) %
-+ SQUASHFS_CACHED_BLKS)
-+ if (msblk->block_cache[i].block !=
-+ SQUASHFS_USED_BLK)
-+ break;
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->waitq, &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ up(&msblk->block_cache_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->waitq, &wait);
-+ continue;
-+ }
-+ msblk->next_cache = (i + 1) % SQUASHFS_CACHED_BLKS;
-+
-+ if (msblk->block_cache[i].block ==
-+ SQUASHFS_INVALID_BLK) {
-+ if (!(msblk->block_cache[i].data =
-+ kmalloc(SQUASHFS_METADATA_SIZE,
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate cache"
-+ "block\n");
-+ up(&msblk->block_cache_mutex);
-+ goto out;
-+ }
-+ }
-+
-+ msblk->block_cache[i].block = SQUASHFS_USED_BLK;
-+ up(&msblk->block_cache_mutex);
-+
-+ if (!(msblk->block_cache[i].length =
-+ squashfs_read_data(s,
-+ msblk->block_cache[i].data,
-+ block, 0, &next_index))) {
-+ ERROR("Unable to read cache block [%llx:%x]\n",
-+ block, offset);
-+ goto out;
-+ }
-+
-+ down(&msblk->block_cache_mutex);
-+ wake_up(&msblk->waitq);
-+ msblk->block_cache[i].block = block;
-+ msblk->block_cache[i].next_index = next_index;
-+ TRACE("Read cache block [%llx:%x]\n", block, offset);
-+ }
-+
-+ if (msblk->block_cache[i].block != block) {
-+ up(&msblk->block_cache_mutex);
-+ continue;
-+ }
-+
-+ if ((bytes = msblk->block_cache[i].length - offset) >= length) {
-+ if (buffer)
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, length);
-+ if (msblk->block_cache[i].length - offset == length) {
-+ *next_block = msblk->block_cache[i].next_index;
-+ *next_offset = 0;
-+ } else {
-+ *next_block = block;
-+ *next_offset = offset + length;
-+ }
-+ up(&msblk->block_cache_mutex);
-+ goto finish;
-+ } else {
-+ if (buffer) {
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, bytes);
-+ buffer += bytes;
-+ }
-+ block = msblk->block_cache[i].next_index;
-+ up(&msblk->block_cache_mutex);
-+ length -= bytes;
-+ offset = 0;
-+ }
-+ }
-+
-+finish:
-+ return return_length;
-+out:
-+ return 0;
-+}
-+
-+
-+static int get_fragment_location(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment);
-+ struct squashfs_fragment_entry fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment)
-+{
-+ down(&msblk->fragment_mutex);
-+ fragment->locked --;
-+ wake_up(&msblk->fragment_wait_queue);
-+ up(&msblk->fragment_mutex);
-+}
-+
-+
-+SQSH_EXTERN struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length)
-+{
-+ int i, n, nf;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+
-+ while ( 1 ) {
-+ down(&msblk->fragment_mutex);
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS &&
-+ msblk->fragment[i].block != start_block; i++);
-+
-+ if (i == SQUASHFS_CACHED_FRAGMENTS) {
-+ nf = (msblk->next_fragment + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS;
-+ for (i = msblk->next_fragment, n =
-+ SQUASHFS_CACHED_FRAGMENTS; n &&
-+ msblk->fragment[i].locked; n--, i = (i + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS);
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ up(&msblk->fragment_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ continue;
-+ }
-+ msblk->next_fragment = nf;
-+
-+ if (msblk->fragment[i].data == NULL)
-+ if (!(msblk->fragment[i].data = SQUASHFS_ALLOC
-+ (SQUASHFS_FILE_MAX_SIZE))) {
-+ ERROR("Failed to allocate fragment "
-+ "cache block\n");
-+ up(&msblk->fragment_mutex);
-+ goto out;
-+ }
-+
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].locked = 1;
-+ up(&msblk->fragment_mutex);
-+
-+ if (!(msblk->fragment[i].length = squashfs_read_data(s,
-+ msblk->fragment[i].data,
-+ start_block, length, NULL))) {
-+ ERROR("Unable to read fragment cache block "
-+ "[%llx]\n", start_block);
-+ msblk->fragment[i].locked = 0;
-+ goto out;
-+ }
-+
-+ msblk->fragment[i].block = start_block;
-+ TRACE("New fragment %d, start block %lld, locked %d\n",
-+ i, msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ break;
-+ }
-+
-+ msblk->fragment[i].locked++;
-+ up(&msblk->fragment_mutex);
-+ TRACE("Got fragment %d, start block %lld, locked %d\n", i,
-+ msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ break;
-+ }
-+
-+ return &msblk->fragment[i];
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+static struct inode *squashfs_new_inode(struct super_block *s,
-+ struct squashfs_base_inode_header *inodeb)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct inode *i = new_inode(s);
-+
-+ if (i) {
-+ i->i_ino = inodeb->inode_number;
-+ i->i_mtime.tv_sec = inodeb->mtime;
-+ i->i_atime.tv_sec = inodeb->mtime;
-+ i->i_ctime.tv_sec = inodeb->mtime;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+ }
-+
-+ return i;
-+}
-+
-+
-+static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode)
-+{
-+ struct inode *i;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header id, sid;
-+ struct squashfs_base_inode_header *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_reg_inode_header *inodep = &id.reg;
-+ struct squashfs_reg_inode_header *sinodep = &sid.reg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = 1;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ i->i_blksize = PAGE_CACHE_SIZE;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_LREG_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_lreg_inode_header *inodep = &id.lreg;
-+ struct squashfs_lreg_inode_header *sinodep = &sid.lreg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ i->i_blksize = PAGE_CACHE_SIZE;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header *inodep = &id.dir;
-+ struct squashfs_dir_inode_header *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header *inodep = &id.dev;
-+ struct squashfs_dev_inode_header *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+ struct squashfs_ipc_inode_header *inodep = &id.ipc;
-+ struct squashfs_ipc_inode_header *sinodep = &sid.ipc;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ insert_inode_hash(i);
-+ return i;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%llx:%x]\n", block, offset);
-+
-+failed_read1:
-+ return NULL;
-+}
-+
-+
-+static int read_fragment_index_table(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ /* Allocate fragment index table */
-+ if (!(msblk->fragment_index = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES
-+ (sblk->fragments), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ return 0;
-+ }
-+
-+ if (SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments) &&
-+ !squashfs_read_data(s, (char *)
-+ msblk->fragment_index,
-+ sblk->fragment_table_start,
-+ SQUASHFS_FRAGMENT_INDEX_BYTES
-+ (sblk->fragments) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ long long fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES(sblk->fragments);
-+ i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES((&fragment),
-+ &msblk->fragment_index[i], 1);
-+ msblk->fragment_index[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int supported_squashfs_filesystem(struct squashfs_sb_info *msblk, int silent)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->iget = squashfs_iget;
-+ msblk->read_blocklist = read_blocklist;
-+ msblk->read_fragment_index_table = read_fragment_index_table;
-+
-+ if (sblk->s_major == 1) {
-+ if (!squashfs_1_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 1.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 1.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if (sblk->s_major == 2) {
-+ if (!squashfs_2_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 2.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 2.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if(sblk->s_major != SQUASHFS_MAJOR || sblk->s_minor >
-+ SQUASHFS_MINOR) {
-+ SERROR("Major/Minor mismatch, trying to mount newer %d.%d "
-+ "filesystem\n", sblk->s_major, sblk->s_minor);
-+ SERROR("Please update your kernel\n");
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int squashfs_fill_super(struct super_block *s, void *data, int silent)
-+{
-+ struct squashfs_sb_info *msblk;
-+ struct squashfs_super_block *sblk;
-+ int i;
-+ char b[BDEVNAME_SIZE];
-+ struct inode *root;
-+
-+ TRACE("Entered squashfs_read_superblock\n");
-+
-+ if (!(s->s_fs_info = kmalloc(sizeof(struct squashfs_sb_info),
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate superblock\n");
-+ goto failure;
-+ }
-+ memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info));
-+ msblk = s->s_fs_info;
-+ sblk = &msblk->sblk;
-+
-+ msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
-+ msblk->devblksize_log2 = ffz(~msblk->devblksize);
-+
-+ init_MUTEX(&msblk->read_data_mutex);
-+ init_MUTEX(&msblk->read_page_mutex);
-+ init_MUTEX(&msblk->block_cache_mutex);
-+ init_MUTEX(&msblk->fragment_mutex);
-+ init_MUTEX(&msblk->meta_index_mutex);
-+
-+ init_waitqueue_head(&msblk->waitq);
-+ init_waitqueue_head(&msblk->fragment_wait_queue);
-+
-+ if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
-+ sizeof(struct squashfs_super_block) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ SERROR("unable to read superblock\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Check it is a SQUASHFS superblock */
-+ msblk->swap = 0;
-+ if ((s->s_magic = sblk->s_magic) != SQUASHFS_MAGIC) {
-+ if (sblk->s_magic == SQUASHFS_MAGIC_SWAP) {
-+ struct squashfs_super_block ssblk;
-+
-+ WARNING("Mounting a different endian SQUASHFS "
-+ "filesystem on %s\n", bdevname(s->s_bdev, b));
-+
-+ SQUASHFS_SWAP_SUPER_BLOCK(&ssblk, sblk);
-+ memcpy(sblk, &ssblk, sizeof(struct squashfs_super_block));
-+ msblk->swap = 1;
-+ } else {
-+ SERROR("Can't find a SQUASHFS superblock on %s\n",
-+ bdevname(s->s_bdev, b));
-+ goto failed_mount;
-+ }
-+ }
-+
-+ /* Check the MAJOR & MINOR versions */
-+ if(!supported_squashfs_filesystem(msblk, silent))
-+ goto failed_mount;
-+
-+ TRACE("Found valid superblock on %s\n", bdevname(s->s_bdev, b));
-+ TRACE("Inodes are %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_INODES
-+ (sblk->flags) ? "un" : "");
-+ TRACE("Data is %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_DATA(sblk->flags)
-+ ? "un" : "");
-+ TRACE("Check data is %s present in the filesystem\n",
-+ SQUASHFS_CHECK_DATA(sblk->flags) ?
-+ "" : "not");
-+ TRACE("Filesystem size %lld bytes\n", sblk->bytes_used);
-+ TRACE("Block size %d\n", sblk->block_size);
-+ TRACE("Number of inodes %d\n", sblk->inodes);
-+ if (sblk->s_major > 1)
-+ TRACE("Number of fragments %d\n", sblk->fragments);
-+ TRACE("Number of uids %d\n", sblk->no_uids);
-+ TRACE("Number of gids %d\n", sblk->no_guids);
-+ TRACE("sblk->inode_table_start %llx\n", sblk->inode_table_start);
-+ TRACE("sblk->directory_table_start %llx\n", sblk->directory_table_start);
-+ if (sblk->s_major > 1)
-+ TRACE("sblk->fragment_table_start %llx\n",
-+ sblk->fragment_table_start);
-+ TRACE("sblk->uid_start %llx\n", sblk->uid_start);
-+
-+ s->s_flags |= MS_RDONLY;
-+ s->s_op = &squashfs_ops;
-+
-+ /* Init inode_table block pointer array */
-+ if (!(msblk->block_cache = kmalloc(sizeof(struct squashfs_cache) *
-+ SQUASHFS_CACHED_BLKS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
-+
-+ msblk->next_cache = 0;
-+
-+ /* Allocate read_data block */
-+ msblk->read_size = (sblk->block_size < SQUASHFS_METADATA_SIZE) ?
-+ SQUASHFS_METADATA_SIZE :
-+ sblk->block_size;
-+
-+ if (!(msblk->read_data = kmalloc(msblk->read_size, GFP_KERNEL))) {
-+ ERROR("Failed to allocate read_data block\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Allocate read_page block */
-+ if (!(msblk->read_page = kmalloc(sblk->block_size, GFP_KERNEL))) {
-+ ERROR("Failed to allocate read_page block\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Allocate uid and gid tables */
-+ if (!(msblk->uid = kmalloc((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ goto failed_mount;
-+ }
-+ msblk->guid = msblk->uid + sblk->no_uids;
-+
-+ if (msblk->swap) {
-+ unsigned int suid[sblk->no_uids + sblk->no_guids];
-+
-+ if (!squashfs_read_data(s, (char *) &suid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+ SQUASHFS_SWAP_DATA(msblk->uid, suid, (sblk->no_uids +
-+ sblk->no_guids), (sizeof(unsigned int) * 8));
-+ } else
-+ if (!squashfs_read_data(s, (char *) msblk->uid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+
-+ if (sblk->s_major == 1 && squashfs_1_0_supported(msblk))
-+ goto allocate_root;
-+
-+ if (!(msblk->fragment = kmalloc(sizeof(struct squashfs_fragment_cache) *
-+ SQUASHFS_CACHED_FRAGMENTS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate fragment block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++) {
-+ msblk->fragment[i].locked = 0;
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].data = NULL;
-+ }
-+
-+ msblk->next_fragment = 0;
-+
-+ /* Allocate fragment index table */
-+ if (msblk->read_fragment_index_table(s) == 0)
-+ goto failed_mount;
-+
-+allocate_root:
-+ if ((root = (msblk->iget)(s, sblk->root_inode)) == NULL)
-+ goto failed_mount;
-+
-+ if ((s->s_root = d_alloc_root(root)) == NULL) {
-+ ERROR("Root inode create failed\n");
-+ iput(root);
-+ goto failed_mount;
-+ }
-+
-+ TRACE("Leaving squashfs_read_super\n");
-+ return 0;
-+
-+failed_mount:
-+ kfree(msblk->fragment_index);
-+ kfree(msblk->fragment);
-+ kfree(msblk->uid);
-+ kfree(msblk->read_page);
-+ kfree(msblk->read_data);
-+ kfree(msblk->block_cache);
-+ kfree(msblk->fragment_index_2);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ return -EINVAL;
-+
-+failure:
-+ return -ENOMEM;
-+}
-+
-+
-+static int squashfs_statfs(struct super_block *s, struct kstatfs *buf)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ TRACE("Entered squashfs_statfs\n");
-+
-+ buf->f_type = SQUASHFS_MAGIC;
-+ buf->f_bsize = sblk->block_size;
-+ buf->f_blocks = ((sblk->bytes_used - 1) >> sblk->block_log) + 1;
-+ buf->f_bfree = buf->f_bavail = 0;
-+ buf->f_files = sblk->inodes;
-+ buf->f_ffree = 0;
-+ buf->f_namelen = SQUASHFS_NAME_LEN;
-+
-+ return 0;
-+}
-+
-+
-+static int squashfs_symlink_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ int index = page->index << PAGE_CACHE_SHIFT, length, bytes;
-+ long long block = SQUASHFS_I(inode)->start_block;
-+ int offset = SQUASHFS_I(inode)->offset;
-+ void *pageaddr = kmap(page);
-+
-+ TRACE("Entered squashfs_symlink_readpage, page index %ld, start block "
-+ "%llx, offset %x\n", page->index,
-+ SQUASHFS_I(inode)->start_block,
-+ SQUASHFS_I(inode)->offset);
-+
-+ for (length = 0; length < index; length += bytes) {
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, NULL,
-+ block, offset, PAGE_CACHE_SIZE, &block,
-+ &offset))) {
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block,
-+ offset);
-+ goto skip_read;
-+ }
-+ }
-+
-+ if (length != index) {
-+ ERROR("(squashfs_symlink_readpage) length != index\n");
-+ bytes = 0;
-+ goto skip_read;
-+ }
-+
-+ bytes = (i_size_read(inode) - length) > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE :
-+ i_size_read(inode) - length;
-+
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, pageaddr, block,
-+ offset, bytes, &block, &offset)))
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block, offset);
-+
-+skip_read:
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+struct meta_index *locate_meta_index(struct inode *inode, int index, int offset)
-+{
-+ struct meta_index *meta = NULL;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ int i;
-+
-+ down(&msblk->meta_index_mutex);
-+
-+ TRACE("locate_meta_index: index %d, offset %d\n", index, offset);
-+
-+ if(msblk->meta_index == NULL)
-+ goto not_allocated;
-+
-+ for (i = 0; i < SQUASHFS_META_NUMBER; i ++)
-+ if (msblk->meta_index[i].inode_number == inode->i_ino &&
-+ msblk->meta_index[i].offset >= offset &&
-+ msblk->meta_index[i].offset <= index &&
-+ msblk->meta_index[i].locked == 0) {
-+ TRACE("locate_meta_index: entry %d, offset %d\n", i,
-+ msblk->meta_index[i].offset);
-+ meta = &msblk->meta_index[i];
-+ offset = meta->offset;
-+ }
-+
-+ if (meta)
-+ meta->locked = 1;
-+
-+not_allocated:
-+ up(&msblk->meta_index_mutex);
-+
-+ return meta;
-+}
-+
-+
-+struct meta_index *empty_meta_index(struct inode *inode, int offset, int skip)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct meta_index *meta = NULL;
-+ int i;
-+
-+ down(&msblk->meta_index_mutex);
-+
-+ TRACE("empty_meta_index: offset %d, skip %d\n", offset, skip);
-+
-+ if(msblk->meta_index == NULL) {
-+ if (!(msblk->meta_index = kmalloc(sizeof(struct meta_index) *
-+ SQUASHFS_META_NUMBER, GFP_KERNEL))) {
-+ ERROR("Failed to allocate meta_index\n");
-+ goto failed;
-+ }
-+ for(i = 0; i < SQUASHFS_META_NUMBER; i++) {
-+ msblk->meta_index[i].inode_number = 0;
-+ msblk->meta_index[i].locked = 0;
-+ }
-+ msblk->next_meta_index = 0;
-+ }
-+
-+ for(i = SQUASHFS_META_NUMBER; i &&
-+ msblk->meta_index[msblk->next_meta_index].locked; i --)
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ if(i == 0) {
-+ TRACE("empty_meta_index: failed!\n");
-+ goto failed;
-+ }
-+
-+ TRACE("empty_meta_index: returned meta entry %d, %p\n",
-+ msblk->next_meta_index,
-+ &msblk->meta_index[msblk->next_meta_index]);
-+
-+ meta = &msblk->meta_index[msblk->next_meta_index];
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ meta->inode_number = inode->i_ino;
-+ meta->offset = offset;
-+ meta->skip = skip;
-+ meta->entries = 0;
-+ meta->locked = 1;
-+
-+failed:
-+ up(&msblk->meta_index_mutex);
-+ return meta;
-+}
-+
-+
-+void release_meta_index(struct inode *inode, struct meta_index *meta)
-+{
-+ meta->locked = 0;
-+}
-+
-+
-+static int read_block_index(struct super_block *s, int blocks, char *block_list,
-+ long long *start_block, int *offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned int *block_listp;
-+ int block = 0;
-+
-+ if (msblk->swap) {
-+ char sblock_list[blocks << 2];
-+
-+ if (!squashfs_get_cached_block(s, sblock_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+ SQUASHFS_SWAP_INTS(((unsigned int *)block_list),
-+ ((unsigned int *)sblock_list), blocks);
-+ } else
-+ if (!squashfs_get_cached_block(s, block_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+
-+ for (block_listp = (unsigned int *) block_list; blocks;
-+ block_listp++, blocks --)
-+ block += SQUASHFS_COMPRESSED_SIZE_BLOCK(*block_listp);
-+
-+ return block;
-+
-+failure:
-+ return -1;
-+}
-+
-+
-+#define SIZE 256
-+
-+static inline int calculate_skip(int blocks) {
-+ int skip = (blocks - 1) / ((SQUASHFS_SLOTS * SQUASHFS_META_ENTRIES + 1) * SQUASHFS_META_INDEXES);
-+ return skip >= 7 ? 7 : skip + 1;
-+}
-+
-+
-+static int get_meta_index(struct inode *inode, int index,
-+ long long *index_block, int *index_offset,
-+ long long *data_block, char *block_list)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int skip = calculate_skip(i_size_read(inode) >> sblk->block_log);
-+ int offset = 0;
-+ struct meta_index *meta;
-+ struct meta_entry *meta_entry;
-+ long long cur_index_block = SQUASHFS_I(inode)->u.s1.block_list_start;
-+ int cur_offset = SQUASHFS_I(inode)->offset;
-+ long long cur_data_block = SQUASHFS_I(inode)->start_block;
-+ int i;
-+
-+ index /= SQUASHFS_META_INDEXES * skip;
-+
-+ while ( offset < index ) {
-+ meta = locate_meta_index(inode, index, offset + 1);
-+
-+ if (meta == NULL) {
-+ if ((meta = empty_meta_index(inode, offset + 1,
-+ skip)) == NULL)
-+ goto all_done;
-+ } else {
-+ offset = index < meta->offset + meta->entries ? index :
-+ meta->offset + meta->entries - 1;
-+ meta_entry = &meta->meta_entry[offset - meta->offset];
-+ cur_index_block = meta_entry->index_block + sblk->inode_table_start;
-+ cur_offset = meta_entry->offset;
-+ cur_data_block = meta_entry->data_block;
-+ TRACE("get_meta_index: offset %d, meta->offset %d, "
-+ "meta->entries %d\n", offset, meta->offset,
-+ meta->entries);
-+ TRACE("get_meta_index: index_block 0x%llx, offset 0x%x"
-+ " data_block 0x%llx\n", cur_index_block,
-+ cur_offset, cur_data_block);
-+ }
-+
-+ for (i = meta->offset + meta->entries; i <= index &&
-+ i < meta->offset + SQUASHFS_META_ENTRIES; i++) {
-+ int blocks = skip * SQUASHFS_META_INDEXES;
-+
-+ while (blocks) {
-+ int block = blocks > (SIZE >> 2) ? (SIZE >> 2) :
-+ blocks;
-+ int res = read_block_index(inode->i_sb, block,
-+ block_list, &cur_index_block,
-+ &cur_offset);
-+
-+ if (res == -1)
-+ goto failed;
-+
-+ cur_data_block += res;
-+ blocks -= block;
-+ }
-+
-+ meta_entry = &meta->meta_entry[i - meta->offset];
-+ meta_entry->index_block = cur_index_block - sblk->inode_table_start;
-+ meta_entry->offset = cur_offset;
-+ meta_entry->data_block = cur_data_block;
-+ meta->entries ++;
-+ offset ++;
-+ }
-+
-+ TRACE("get_meta_index: meta->offset %d, meta->entries %d\n",
-+ meta->offset, meta->entries);
-+
-+ release_meta_index(inode, meta);
-+ }
-+
-+all_done:
-+ *index_block = cur_index_block;
-+ *index_offset = cur_offset;
-+ *data_block = cur_data_block;
-+
-+ return offset * SQUASHFS_META_INDEXES * skip;
-+
-+failed:
-+ release_meta_index(inode, meta);
-+ return -1;
-+}
-+
-+
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize)
-+{
-+ long long block_ptr;
-+ int offset;
-+ long long block;
-+ int res = get_meta_index(inode, index, &block_ptr, &offset, &block,
-+ block_list);
-+
-+ TRACE("read_blocklist: res %d, index %d, block_ptr 0x%llx, offset"
-+ " 0x%x, block 0x%llx\n", res, index, block_ptr, offset,
-+ block);
-+
-+ if(res == -1)
-+ goto failure;
-+
-+ index -= res;
-+
-+ while ( index ) {
-+ int blocks = index > (SIZE >> 2) ? (SIZE >> 2) : index;
-+ int res = read_block_index(inode->i_sb, blocks, block_list,
-+ &block_ptr, &offset);
-+ if (res == -1)
-+ goto failure;
-+ block += res;
-+ index -= blocks;
-+ }
-+
-+ if (read_block_index(inode->i_sb, 1, block_list,
-+ &block_ptr, &offset) == -1)
-+ goto failure;
-+ *bsize = *((unsigned int *) block_list);
-+
-+ return block;
-+
-+failure:
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char block_list[SIZE];
-+ long long block;
-+ unsigned int bsize, i = 0, bytes = 0, byte_offset = 0;
-+ int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT);
-+ void *pageaddr;
-+ struct squashfs_fragment_cache *fragment = NULL;
-+ char *data_ptr = msblk->read_page;
-+
-+ int mask = (1 << (sblk->block_log - PAGE_CACHE_SHIFT)) - 1;
-+ int start_index = page->index & ~mask;
-+ int end_index = start_index | mask;
-+
-+ TRACE("Entered squashfs_readpage, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT))
-+ goto skip_read;
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ if ((block = (msblk->read_blocklist)(inode, index, 1,
-+ block_list, NULL, &bsize)) == 0)
-+ goto skip_read;
-+
-+ down(&msblk->read_page_mutex);
-+
-+ if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page,
-+ block, bsize, NULL))) {
-+ ERROR("Unable to read page, block %llx, size %x\n", block,
-+ bsize);
-+ up(&msblk->read_page_mutex);
-+ goto skip_read;
-+ }
-+ } else {
-+ if ((fragment = get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)->u.s1.fragment_size))
-+ == NULL) {
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ (int) SQUASHFS_I(inode)->
-+ u.s1.fragment_size);
-+ goto skip_read;
-+ }
-+ bytes = SQUASHFS_I(inode)->u.s1.fragment_offset +
-+ (i_size_read(inode) & (sblk->block_size
-+ - 1));
-+ byte_offset = SQUASHFS_I(inode)->u.s1.fragment_offset;
-+ data_ptr = fragment->data;
-+ }
-+
-+ for (i = start_index; i <= end_index && byte_offset < bytes;
-+ i++, byte_offset += PAGE_CACHE_SIZE) {
-+ struct page *push_page;
-+ int available_bytes = (bytes - byte_offset) > PAGE_CACHE_SIZE ?
-+ PAGE_CACHE_SIZE : bytes - byte_offset;
-+
-+ TRACE("bytes %d, i %d, byte_offset %d, available_bytes %d\n",
-+ bytes, i, byte_offset, available_bytes);
-+
-+ if (i == page->index) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memcpy(pageaddr, data_ptr + byte_offset,
-+ available_bytes);
-+ memset(pageaddr + available_bytes, 0,
-+ PAGE_CACHE_SIZE - available_bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+ } else if ((push_page =
-+ grab_cache_page_nowait(page->mapping, i))) {
-+ pageaddr = kmap_atomic(push_page, KM_USER0);
-+
-+ memcpy(pageaddr, data_ptr + byte_offset,
-+ available_bytes);
-+ memset(pageaddr + available_bytes, 0,
-+ PAGE_CACHE_SIZE - available_bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(push_page);
-+ SetPageUptodate(push_page);
-+ unlock_page(push_page);
-+ page_cache_release(push_page);
-+ }
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log))
-+ up(&msblk->read_page_mutex);
-+ else
-+ release_cached_fragment(msblk, fragment);
-+
-+ return 0;
-+
-+skip_read:
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage4K(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char block_list[SIZE];
-+ long long block;
-+ unsigned int bsize, bytes = 0;
-+ void *pageaddr;
-+
-+ TRACE("Entered squashfs_readpage4K, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT)) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ goto skip_read;
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || page->index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ block = (msblk->read_blocklist)(inode, page->index, 1,
-+ block_list, NULL, &bsize);
-+
-+ down(&msblk->read_page_mutex);
-+ bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
-+ bsize, NULL);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ if (bytes)
-+ memcpy(pageaddr, msblk->read_page, bytes);
-+ else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ block, bsize);
-+ up(&msblk->read_page_mutex);
-+ } else {
-+ struct squashfs_fragment_cache *fragment =
-+ get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ if (fragment) {
-+ bytes = i_size_read(inode) & (sblk->block_size - 1);
-+ memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)->
-+ u.s1.fragment_offset, bytes);
-+ release_cached_fragment(msblk, fragment);
-+ } else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block, (int)
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ }
-+
-+skip_read:
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ f_pos =- 3;
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length + 3;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ char buffer[sizeof(struct squashfs_dir_index) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_index *index = (struct squashfs_dir_index *) buffer;
-+ char str[SQUASHFS_NAME_LEN + 1];
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ return length + 3;
-+}
-+
-+
-+static int squashfs_readdir(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
-+
-+ TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset);
-+
-+ while(file->f_pos < 3) {
-+ char *name;
-+ int size, i_ino;
-+
-+ if(file->f_pos == 0) {
-+ name = ".";
-+ size = 1;
-+ i_ino = i->i_ino;
-+ } else {
-+ name = "..";
-+ size = 2;
-+ i_ino = SQUASHFS_I(i)->u.s2.parent_inode;
-+ }
-+ TRACE("Calling filldir(%x, %s, %d, %d, %d, %d)\n",
-+ (unsigned int) dirent, name, size, (int)
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]);
-+
-+ if (filldir(dirent, name, size,
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]) < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos += size;
-+ dirs_read++;
-+ }
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ dirs_read++;
-+ }
-+ }
-+
-+finish:
-+ return dirs_read;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN];
-+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_loop;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (name[0] < dire->name[0])
-+ goto exit_loop;
-+
-+ if ((len == dire->size + 1) && !strncmp(name,
-+ dire->name, len)) {
-+ squashfs_inode_t ino =
-+ SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %d\n", name,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number);
-+
-+ inode = (msblk->iget)(i->i_sb, ino);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_loop;
-+}
-+
-+
-+static void squashfs_put_super(struct super_block *s)
-+{
-+ int i;
-+
-+ if (s->s_fs_info) {
-+ struct squashfs_sb_info *sbi = s->s_fs_info;
-+ if (sbi->block_cache)
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (sbi->block_cache[i].block !=
-+ SQUASHFS_INVALID_BLK)
-+ kfree(sbi->block_cache[i].data);
-+ if (sbi->fragment)
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++)
-+ SQUASHFS_FREE(sbi->fragment[i].data);
-+ kfree(sbi->fragment);
-+ kfree(sbi->block_cache);
-+ kfree(sbi->read_data);
-+ kfree(sbi->read_page);
-+ kfree(sbi->uid);
-+ kfree(sbi->fragment_index);
-+ kfree(sbi->fragment_index_2);
-+ kfree(sbi->meta_index);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ }
-+}
-+
-+
-+static struct super_block *squashfs_get_sb(struct file_system_type *fs_type,
-+ int flags, const char *dev_name, void *data, struct vfsmount *mnt)
-+{
-+ return get_sb_bdev(fs_type, flags, dev_name, data, squashfs_fill_super, mnt);
-+}
-+
-+
-+static int __init init_squashfs_fs(void)
-+{
-+ int err = init_inodecache();
-+ if (err)
-+ goto out;
-+
-+ printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) "
-+ "Phillip Lougher\n");
-+
-+ if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
-+ ERROR("Failed to allocate zlib workspace\n");
-+ destroy_inodecache();
-+ err = -ENOMEM;
-+ goto out;
-+ }
-+
-+ if ((err = register_filesystem(&squashfs_fs_type))) {
-+ vfree(stream.workspace);
-+ destroy_inodecache();
-+ }
-+
-+out:
-+ return err;
-+}
-+
-+
-+static void __exit exit_squashfs_fs(void)
-+{
-+ vfree(stream.workspace);
-+ unregister_filesystem(&squashfs_fs_type);
-+ destroy_inodecache();
-+}
-+
-+
-+static kmem_cache_t * squashfs_inode_cachep;
-+
-+
-+static struct inode *squashfs_alloc_inode(struct super_block *sb)
-+{
-+ struct squashfs_inode_info *ei;
-+ ei = kmem_cache_alloc(squashfs_inode_cachep, SLAB_KERNEL);
-+ if (!ei)
-+ return NULL;
-+ return &ei->vfs_inode;
-+}
-+
-+
-+static void squashfs_destroy_inode(struct inode *inode)
-+{
-+ kmem_cache_free(squashfs_inode_cachep, SQUASHFS_I(inode));
-+}
-+
-+
-+static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
-+{
-+ struct squashfs_inode_info *ei = foo;
-+
-+ if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
-+ SLAB_CTOR_CONSTRUCTOR)
-+ inode_init_once(&ei->vfs_inode);
-+}
-+
-+
-+static int __init init_inodecache(void)
-+{
-+ squashfs_inode_cachep = kmem_cache_create("squashfs_inode_cache",
-+ sizeof(struct squashfs_inode_info),
-+ 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
-+ init_once, NULL);
-+ if (squashfs_inode_cachep == NULL)
-+ return -ENOMEM;
-+ return 0;
-+}
-+
-+
-+static void destroy_inodecache(void)
-+{
-+ if (kmem_cache_destroy(squashfs_inode_cachep))
-+ printk(KERN_INFO "squashfs_inode_cache: not all structures "
-+ "were freed\n");
-+}
-+
-+
-+module_init(init_squashfs_fs);
-+module_exit(exit_squashfs_fs);
-+MODULE_DESCRIPTION("squashfs, a compressed read-only filesystem");
-+MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
-Index: linux-2.6.18/fs/squashfs/Makefile
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.18/fs/squashfs/Makefile 2006-09-20 15:45:15.000000000 +0100
-@@ -0,0 +1,7 @@
-+#
-+# Makefile for the linux squashfs routines.
-+#
-+
-+obj-$(CONFIG_SQUASHFS) += squashfs.o
-+squashfs-y += inode.o
-+squashfs-y += squashfs2_0.o
-Index: linux-2.6.18/fs/squashfs/squashfs2_0.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.18/fs/squashfs/squashfs2_0.c 2006-09-20 15:45:15.000000000 +0100
-@@ -0,0 +1,758 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs2_0.c
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/smp_lock.h>
-+#include <linux/slab.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+#include <linux/buffer_head.h>
-+#include <linux/vfs.h>
-+#include <linux/init.h>
-+#include <linux/dcache.h>
-+#include <linux/wait.h>
-+#include <linux/zlib.h>
-+#include <linux/blkdev.h>
-+#include <linux/vmalloc.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.h>
-+
-+#include "squashfs.h"
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir);
-+static struct dentry *squashfs_lookup_2(struct inode *, struct dentry *,
-+ struct nameidata *);
-+
-+static struct file_operations squashfs_dir_ops_2 = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir_2
-+};
-+
-+static struct inode_operations squashfs_dir_inode_ops_2 = {
-+ .lookup = squashfs_lookup_2
-+};
-+
-+static unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static int read_fragment_index_table_2(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ if (!(msblk->fragment_index_2 = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ return 0;
-+ }
-+
-+ if (SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments) &&
-+ !squashfs_read_data(s, (char *)
-+ msblk->fragment_index_2,
-+ sblk->fragment_table_start,
-+ SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ unsigned int fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES_2(sblk->fragments);
-+ i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES_2((&fragment),
-+ &msblk->fragment_index_2[i], 1);
-+ msblk->fragment_index_2[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int get_fragment_location_2(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index_2[SQUASHFS_FRAGMENT_INDEX_2(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET_2(fragment);
-+ struct squashfs_fragment_entry_2 fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry_2 sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY_2(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+static struct inode *squashfs_new_inode(struct super_block *s,
-+ struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ struct inode *i = new_inode(s);
-+
-+ if (i) {
-+ i->i_ino = ino;
-+ i->i_mtime.tv_sec = sblk->mkfs_time;
-+ i->i_atime.tv_sec = sblk->mkfs_time;
-+ i->i_ctime.tv_sec = sblk->mkfs_time;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_nlink = 1;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+ }
-+
-+ return i;
-+}
-+
-+
-+static struct inode *squashfs_iget_2(struct super_block *s, squashfs_inode_t inode)
-+{
-+ struct inode *i;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned int block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ unsigned int ino = SQUASHFS_MK_VFS_INODE(block
-+ - sblk->inode_table_start, offset);
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header_2 id, sid;
-+ struct squashfs_base_inode_header_2 *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ struct squashfs_reg_inode_header_2 *inodep = &id.reg;
-+ struct squashfs_reg_inode_header_2 *sinodep = &sid.reg;
-+ long long frag_blk;
-+ unsigned int frag_size;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location_2(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ i->i_blksize = PAGE_CACHE_SIZE;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %x, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header_2 *inodep = &id.dir;
-+ struct squashfs_dir_inode_header_2 *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header_2 *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header_2 *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header_2 *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header_2 *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header_2 *inodep = &id.dev;
-+ struct squashfs_dev_inode_header_2 *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ insert_inode_hash(i);
-+ return i;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%x:%x]\n", block, offset);
-+
-+failed_read1:
-+ return NULL;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index_2 index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ char buffer[sizeof(struct squashfs_dir_index_2) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_index_2 *index = (struct squashfs_dir_index_2 *) buffer;
-+ char str[SQUASHFS_NAME_LEN + 1];
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index_2),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ return length;
-+}
-+
-+
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
-+
-+ TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset);
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos, SQUASHFS_MK_VFS_INODE(
-+ dirh.start_block, dire->offset),
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ dirs_read++;
-+ }
-+ }
-+
-+finish:
-+ return dirs_read;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup_2(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN];
-+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
-+ int sorted = sblk->s_major == 2 && sblk->s_minor >= 1;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_loop;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (sorted && name[0] < dire->name[0])
-+ goto exit_loop;
-+
-+ if ((len == dire->size + 1) && !strncmp(name,
-+ dire->name, len)) {
-+ squashfs_inode_t ino =
-+ SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %lld\n", name,
-+ dirh.start_block, dire->offset, ino);
-+
-+ inode = (msblk->iget)(i->i_sb, ino);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_loop;
-+}
-+
-+
-+int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->iget = squashfs_iget_2;
-+ msblk->read_fragment_index_table = read_fragment_index_table_2;
-+
-+ sblk->bytes_used = sblk->bytes_used_2;
-+ sblk->uid_start = sblk->uid_start_2;
-+ sblk->guid_start = sblk->guid_start_2;
-+ sblk->inode_table_start = sblk->inode_table_start_2;
-+ sblk->directory_table_start = sblk->directory_table_start_2;
-+ sblk->fragment_table_start = sblk->fragment_table_start_2;
-+
-+ return 1;
-+}
-Index: linux-2.6.18/fs/squashfs/squashfs.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.18/fs/squashfs/squashfs.h 2006-09-20 15:45:15.000000000 +0100
-@@ -0,0 +1,86 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs.h
-+ */
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#endif
-+
-+#ifdef SQUASHFS_TRACE
-+#define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args)
-+#else
-+#define TRACE(s, args...) {}
-+#endif
-+
-+#define ERROR(s, args...) printk(KERN_ERR "SQUASHFS error: "s, ## args)
-+
-+#define SERROR(s, args...) do { \
-+ if (!silent) \
-+ printk(KERN_ERR "SQUASHFS error: "s, ## args);\
-+ } while(0)
-+
-+#define WARNING(s, args...) printk(KERN_WARNING "SQUASHFS: "s, ## args)
-+
-+static inline struct squashfs_inode_info *SQUASHFS_I(struct inode *inode)
-+{
-+ return list_entry(inode, struct squashfs_inode_info, vfs_inode);
-+}
-+
-+#if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY ) || defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY)
-+#define SQSH_EXTERN
-+extern unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index);
-+extern int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset);
-+extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment);
-+extern struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length);
-+extern struct address_space_operations squashfs_symlink_aops;
-+extern struct address_space_operations squashfs_aops;
-+extern struct address_space_operations squashfs_aops_4K;
-+extern struct inode_operations squashfs_dir_inode_ops;
-+#else
-+#define SQSH_EXTERN static
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-Index: linux-2.6.18/include/linux/squashfs_fs.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.18/include/linux/squashfs_fs.h 2006-09-20 15:45:15.000000000 +0100
-@@ -0,0 +1,911 @@
-+#ifndef SQUASHFS_FS
-+#define SQUASHFS_FS
-+
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs.h
-+ */
-+
-+#ifndef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#define CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_VMALLOC
-+#define SQUASHFS_ALLOC(a) vmalloc(a)
-+#define SQUASHFS_FREE(a) vfree(a)
-+#else
-+#define SQUASHFS_ALLOC(a) kmalloc(a, GFP_KERNEL)
-+#define SQUASHFS_FREE(a) kfree(a)
-+#endif
-+#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
-+#define SQUASHFS_MAJOR 3
-+#define SQUASHFS_MINOR 0
-+#define SQUASHFS_MAGIC 0x73717368
-+#define SQUASHFS_MAGIC_SWAP 0x68737173
-+#define SQUASHFS_START 0
-+
-+/* size of metadata (inode and directory) blocks */
-+#define SQUASHFS_METADATA_SIZE 8192
-+#define SQUASHFS_METADATA_LOG 13
-+
-+/* default size of data blocks */
-+#define SQUASHFS_FILE_SIZE 65536
-+#define SQUASHFS_FILE_LOG 16
-+
-+#define SQUASHFS_FILE_MAX_SIZE 65536
-+
-+/* Max number of uids and gids */
-+#define SQUASHFS_UIDS 256
-+#define SQUASHFS_GUIDS 255
-+
-+/* Max length of filename (not 255) */
-+#define SQUASHFS_NAME_LEN 256
-+
-+#define SQUASHFS_INVALID ((long long) 0xffffffffffff)
-+#define SQUASHFS_INVALID_FRAG ((unsigned int) 0xffffffff)
-+#define SQUASHFS_INVALID_BLK ((long long) -1)
-+#define SQUASHFS_USED_BLK ((long long) -2)
-+
-+/* Filesystem flags */
-+#define SQUASHFS_NOI 0
-+#define SQUASHFS_NOD 1
-+#define SQUASHFS_CHECK 2
-+#define SQUASHFS_NOF 3
-+#define SQUASHFS_NO_FRAG 4
-+#define SQUASHFS_ALWAYS_FRAG 5
-+#define SQUASHFS_DUPLICATE 6
-+
-+#define SQUASHFS_BIT(flag, bit) ((flag >> bit) & 1)
-+
-+#define SQUASHFS_UNCOMPRESSED_INODES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOI)
-+
-+#define SQUASHFS_UNCOMPRESSED_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOD)
-+
-+#define SQUASHFS_UNCOMPRESSED_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOF)
-+
-+#define SQUASHFS_NO_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NO_FRAG)
-+
-+#define SQUASHFS_ALWAYS_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_ALWAYS_FRAG)
-+
-+#define SQUASHFS_DUPLICATES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_DUPLICATE)
-+
-+#define SQUASHFS_CHECK_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_CHECK)
-+
-+#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
-+ duplicate_checking) (noi | (nod << 1) | (check_data << 2) \
-+ | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
-+ (duplicate_checking << 6))
-+
-+/* Max number of types and file types */
-+#define SQUASHFS_DIR_TYPE 1
-+#define SQUASHFS_FILE_TYPE 2
-+#define SQUASHFS_SYMLINK_TYPE 3
-+#define SQUASHFS_BLKDEV_TYPE 4
-+#define SQUASHFS_CHRDEV_TYPE 5
-+#define SQUASHFS_FIFO_TYPE 6
-+#define SQUASHFS_SOCKET_TYPE 7
-+#define SQUASHFS_LDIR_TYPE 8
-+#define SQUASHFS_LREG_TYPE 9
-+
-+/* 1.0 filesystem type definitions */
-+#define SQUASHFS_TYPES 5
-+#define SQUASHFS_IPC_TYPE 0
-+
-+/* Flag whether block is compressed or uncompressed, bit is set if block is
-+ * uncompressed */
-+#define SQUASHFS_COMPRESSED_BIT (1 << 15)
-+
-+#define SQUASHFS_COMPRESSED_SIZE(B) (((B) & ~SQUASHFS_COMPRESSED_BIT) ? \
-+ (B) & ~SQUASHFS_COMPRESSED_BIT : SQUASHFS_COMPRESSED_BIT)
-+
-+#define SQUASHFS_COMPRESSED(B) (!((B) & SQUASHFS_COMPRESSED_BIT))
-+
-+#define SQUASHFS_COMPRESSED_BIT_BLOCK (1 << 24)
-+
-+#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B) (((B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK) ? (B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK : SQUASHFS_COMPRESSED_BIT_BLOCK)
-+
-+#define SQUASHFS_COMPRESSED_BLOCK(B) (!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
-+
-+/*
-+ * Inode number ops. Inodes consist of a compressed block number, and an
-+ * uncompressed offset within that block
-+ */
-+#define SQUASHFS_INODE_BLK(a) ((unsigned int) ((a) >> 16))
-+
-+#define SQUASHFS_INODE_OFFSET(a) ((unsigned int) ((a) & 0xffff))
-+
-+#define SQUASHFS_MKINODE(A, B) ((squashfs_inode_t)(((squashfs_inode_t) (A)\
-+ << 16) + (B)))
-+
-+/* Compute 32 bit VFS inode number from squashfs inode number */
-+#define SQUASHFS_MK_VFS_INODE(a, b) ((unsigned int) (((a) << 8) + \
-+ ((b) >> 2) + 1))
-+/* XXX */
-+
-+/* Translate between VFS mode and squashfs mode */
-+#define SQUASHFS_MODE(a) ((a) & 0xfff)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES(A) (A * sizeof(struct squashfs_fragment_entry))
-+
-+#define SQUASHFS_FRAGMENT_INDEX(A) (SQUASHFS_FRAGMENT_BYTES(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET(A) (SQUASHFS_FRAGMENT_BYTES(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES(A) ((SQUASHFS_FRAGMENT_BYTES(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES(A) (SQUASHFS_FRAGMENT_INDEXES(A) *\
-+ sizeof(long long))
-+
-+/* cached data constants for filesystem */
-+#define SQUASHFS_CACHED_BLKS 8
-+
-+#define SQUASHFS_MAX_FILE_SIZE_LOG 64
-+
-+#define SQUASHFS_MAX_FILE_SIZE ((long long) 1 << \
-+ (SQUASHFS_MAX_FILE_SIZE_LOG - 2))
-+
-+#define SQUASHFS_MARKER_BYTE 0xff
-+
-+/* meta index cache */
-+#define SQUASHFS_META_INDEXES (SQUASHFS_METADATA_SIZE / sizeof(unsigned int))
-+#define SQUASHFS_META_ENTRIES 31
-+#define SQUASHFS_META_NUMBER 8
-+#define SQUASHFS_SLOTS 4
-+
-+struct meta_entry {
-+ long long data_block;
-+ unsigned int index_block;
-+ unsigned short offset;
-+ unsigned short pad;
-+};
-+
-+struct meta_index {
-+ unsigned int inode_number;
-+ unsigned int offset;
-+ unsigned short entries;
-+ unsigned short skip;
-+ unsigned short locked;
-+ unsigned short pad;
-+ struct meta_entry meta_entry[SQUASHFS_META_ENTRIES];
-+};
-+
-+
-+/*
-+ * definitions for structures on disk
-+ */
-+
-+typedef long long squashfs_block_t;
-+typedef long long squashfs_inode_t;
-+
-+struct squashfs_super_block {
-+ unsigned int s_magic;
-+ unsigned int inodes;
-+ unsigned int bytes_used_2;
-+ unsigned int uid_start_2;
-+ unsigned int guid_start_2;
-+ unsigned int inode_table_start_2;
-+ unsigned int directory_table_start_2;
-+ unsigned int s_major:16;
-+ unsigned int s_minor:16;
-+ unsigned int block_size_1:16;
-+ unsigned int block_log:16;
-+ unsigned int flags:8;
-+ unsigned int no_uids:8;
-+ unsigned int no_guids:8;
-+ unsigned int mkfs_time /* time of filesystem creation */;
-+ squashfs_inode_t root_inode;
-+ unsigned int block_size;
-+ unsigned int fragments;
-+ unsigned int fragment_table_start_2;
-+ long long bytes_used;
-+ long long uid_start;
-+ long long guid_start;
-+ long long inode_table_start;
-+ long long directory_table_start;
-+ long long fragment_table_start;
-+ long long unused;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_index {
-+ unsigned int index;
-+ unsigned int start_block;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_BASE_INODE_HEADER \
-+ unsigned int inode_type:4; \
-+ unsigned int mode:12; \
-+ unsigned int uid:8; \
-+ unsigned int guid:8; \
-+ unsigned int mtime; \
-+ unsigned int inode_number;
-+
-+struct squashfs_base_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_lreg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ long long file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int parent_inode;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int i_count:16;
-+ unsigned int parent_inode;
-+ struct squashfs_dir_index index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header {
-+ struct squashfs_base_inode_header base;
-+ struct squashfs_dev_inode_header dev;
-+ struct squashfs_symlink_inode_header symlink;
-+ struct squashfs_reg_inode_header reg;
-+ struct squashfs_lreg_inode_header lreg;
-+ struct squashfs_dir_inode_header dir;
-+ struct squashfs_ldir_inode_header ldir;
-+ struct squashfs_ipc_inode_header ipc;
-+};
-+
-+struct squashfs_dir_entry {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ int inode_number:16;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_header {
-+ unsigned int count:8;
-+ unsigned int start_block;
-+ unsigned int inode_number;
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry {
-+ long long start_block;
-+ unsigned int size;
-+ unsigned int unused;
-+} __attribute__ ((packed));
-+
-+extern int squashfs_uncompress_block(void *d, int dstlen, void *s, int srclen);
-+extern int squashfs_uncompress_init(void);
-+extern int squashfs_uncompress_exit(void);
-+
-+/*
-+ * macros to convert each packed bitfield structure from little endian to big
-+ * endian and vice versa. These are needed when creating or using a filesystem
-+ * on a machine with different byte ordering to the target architecture.
-+ *
-+ */
-+
-+#define SQUASHFS_SWAP_START \
-+ int bits;\
-+ int b_pos;\
-+ unsigned long long val;\
-+ unsigned char *s;\
-+ unsigned char *d;
-+
-+#define SQUASHFS_SWAP_SUPER_BLOCK(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_super_block));\
-+ SQUASHFS_SWAP((s)->s_magic, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->inodes, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used_2, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->uid_start_2, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->guid_start_2, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->inode_table_start_2, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->directory_table_start_2, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->s_major, d, 224, 16);\
-+ SQUASHFS_SWAP((s)->s_minor, d, 240, 16);\
-+ SQUASHFS_SWAP((s)->block_size_1, d, 256, 16);\
-+ SQUASHFS_SWAP((s)->block_log, d, 272, 16);\
-+ SQUASHFS_SWAP((s)->flags, d, 288, 8);\
-+ SQUASHFS_SWAP((s)->no_uids, d, 296, 8);\
-+ SQUASHFS_SWAP((s)->no_guids, d, 304, 8);\
-+ SQUASHFS_SWAP((s)->mkfs_time, d, 312, 32);\
-+ SQUASHFS_SWAP((s)->root_inode, d, 344, 64);\
-+ SQUASHFS_SWAP((s)->block_size, d, 408, 32);\
-+ SQUASHFS_SWAP((s)->fragments, d, 440, 32);\
-+ SQUASHFS_SWAP((s)->fragment_table_start_2, d, 472, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used, d, 504, 64);\
-+ SQUASHFS_SWAP((s)->uid_start, d, 568, 64);\
-+ SQUASHFS_SWAP((s)->guid_start, d, 632, 64);\
-+ SQUASHFS_SWAP((s)->inode_table_start, d, 696, 64);\
-+ SQUASHFS_SWAP((s)->directory_table_start, d, 760, 64);\
-+ SQUASHFS_SWAP((s)->fragment_table_start, d, 824, 64);\
-+ SQUASHFS_SWAP((s)->unused, d, 888, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 64, 32);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header))\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dev_inode_header)); \
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->rdev, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_reg_inode_header));\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 224, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LREG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_lreg_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 128, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 224, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 256, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 147, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 192, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 155, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 168, 32);\
-+ SQUASHFS_SWAP((s)->i_count, d, 200, 16);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 216, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 40, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 64);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_SHORTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 2);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 16)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_INTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 4);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 32)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LONG_LONGS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 64)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DATA(s, d, n, bits) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * bits / 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ bits)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, bits);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+
-+struct squashfs_base_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int type:4;
-+ unsigned int offset:4;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n) \
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 4);\
-+ SQUASHFS_SWAP((s)->guid, d, 20, 4);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_1(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header_1));\
-+ SQUASHFS_SWAP((s)->type, d, 24, 4);\
-+ SQUASHFS_SWAP((s)->offset, d, 28, 4);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_1));\
-+ SQUASHFS_SWAP((s)->rdev, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_1));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_1));\
-+ SQUASHFS_SWAP((s)->mtime, d, 24, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 88, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_1));\
-+ SQUASHFS_SWAP((s)->file_size, d, 24, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 43, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 88, 24);\
-+}
-+
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+
-+struct squashfs_dir_index_2 {
-+ unsigned int index:27;
-+ unsigned int start_block:29;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_base_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+ unsigned int i_count:16;
-+ struct squashfs_dir_index_2 index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header_2 {
-+ struct squashfs_base_inode_header_2 base;
-+ struct squashfs_dev_inode_header_2 dev;
-+ struct squashfs_symlink_inode_header_2 symlink;
-+ struct squashfs_reg_inode_header_2 reg;
-+ struct squashfs_dir_inode_header_2 dir;
-+ struct squashfs_ldir_inode_header_2 ldir;
-+ struct squashfs_ipc_inode_header_2 ipc;
-+};
-+
-+struct squashfs_dir_header_2 {
-+ unsigned int count:8;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_entry_2 {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry_2 {
-+ unsigned int start_block;
-+ unsigned int size;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_2(s, d) \
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, sizeof(struct squashfs_ipc_inode_header_2))
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_2)); \
-+ SQUASHFS_SWAP((s)->rdev, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_2));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_2));\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->fragment, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 160, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 51, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 59, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 72, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 104, 24);\
-+ SQUASHFS_SWAP((s)->i_count, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index_2));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 27);\
-+ SQUASHFS_SWAP((s)->start_block, d, 27, 29);\
-+ SQUASHFS_SWAP((s)->size, d, 56, 8);\
-+}
-+#define SQUASHFS_SWAP_DIR_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header_2));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry_2));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry_2));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 32, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES_2(s, d, n) SQUASHFS_SWAP_INTS(s, d, n)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES_2(A) (A * sizeof(struct squashfs_fragment_entry_2))
-+
-+#define SQUASHFS_FRAGMENT_INDEX_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES_2(A) ((SQUASHFS_FRAGMENT_BYTES_2(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES_2(A) (SQUASHFS_FRAGMENT_INDEXES_2(A) *\
-+ sizeof(int))
-+
-+#endif
-+
-+#ifdef __KERNEL__
-+
-+/*
-+ * macros used to swap each structure entry, taking into account
-+ * bitfields and different bitfield placing conventions on differing
-+ * architectures
-+ */
-+
-+#include <asm/byteorder.h>
-+
-+#ifdef __BIG_ENDIAN
-+ /* convert from little endian to big endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, b_pos)
-+#else
-+ /* convert from big endian to little endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, 64 - tbits - b_pos)
-+#endif
-+
-+#define _SQUASHFS_SWAP(value, p, pos, tbits, SHIFT) {\
-+ b_pos = pos % 8;\
-+ val = 0;\
-+ s = (unsigned char *)p + (pos / 8);\
-+ d = ((unsigned char *) &val) + 7;\
-+ for(bits = 0; bits < (tbits + b_pos); bits += 8) \
-+ *d-- = *s++;\
-+ value = (val >> (SHIFT))/* & ((1 << tbits) - 1)*/;\
-+}
-+
-+#define SQUASHFS_MEMSET(s, d, n) memset(s, 0, n);
-+
-+#endif
-+#endif
-Index: linux-2.6.18/include/linux/squashfs_fs_i.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.18/include/linux/squashfs_fs_i.h 2006-09-20 15:45:15.000000000 +0100
-@@ -0,0 +1,45 @@
-+#ifndef SQUASHFS_FS_I
-+#define SQUASHFS_FS_I
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_i.h
-+ */
-+
-+struct squashfs_inode_info {
-+ long long start_block;
-+ unsigned int offset;
-+ union {
-+ struct {
-+ long long fragment_start_block;
-+ unsigned int fragment_size;
-+ unsigned int fragment_offset;
-+ long long block_list_start;
-+ } s1;
-+ struct {
-+ long long directory_index_start;
-+ unsigned int directory_index_offset;
-+ unsigned int directory_index_count;
-+ unsigned int parent_inode;
-+ } s2;
-+ } u;
-+ struct inode vfs_inode;
-+};
-+#endif
-Index: linux-2.6.18/include/linux/squashfs_fs_sb.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.18/include/linux/squashfs_fs_sb.h 2006-09-20 15:45:15.000000000 +0100
-@@ -0,0 +1,74 @@
-+#ifndef SQUASHFS_FS_SB
-+#define SQUASHFS_FS_SB
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_sb.h
-+ */
-+
-+#include <linux/squashfs_fs.h>
-+
-+struct squashfs_cache {
-+ long long block;
-+ int length;
-+ long long next_index;
-+ char *data;
-+};
-+
-+struct squashfs_fragment_cache {
-+ long long block;
-+ int length;
-+ unsigned int locked;
-+ char *data;
-+};
-+
-+struct squashfs_sb_info {
-+ struct squashfs_super_block sblk;
-+ int devblksize;
-+ int devblksize_log2;
-+ int swap;
-+ struct squashfs_cache *block_cache;
-+ struct squashfs_fragment_cache *fragment;
-+ int next_cache;
-+ int next_fragment;
-+ int next_meta_index;
-+ unsigned int *uid;
-+ unsigned int *guid;
-+ long long *fragment_index;
-+ unsigned int *fragment_index_2;
-+ unsigned int read_size;
-+ char *read_data;
-+ char *read_page;
-+ struct semaphore read_data_mutex;
-+ struct semaphore read_page_mutex;
-+ struct semaphore block_cache_mutex;
-+ struct semaphore fragment_mutex;
-+ struct semaphore meta_index_mutex;
-+ wait_queue_head_t waitq;
-+ wait_queue_head_t fragment_wait_queue;
-+ struct meta_index *meta_index;
-+ struct inode *(*iget)(struct super_block *s, squashfs_inode_t \
-+ inode);
-+ long long (*read_blocklist)(struct inode *inode, int \
-+ index, int readahead_blks, char *block_list, \
-+ unsigned short **block_p, unsigned int *bsize);
-+ int (*read_fragment_index_table)(struct super_block *s);
-+};
-+#endif
-Index: linux-2.6.18/init/do_mounts_rd.c
-===================================================================
---- linux-2.6.18.orig/init/do_mounts_rd.c 2006-09-20 04:42:06.000000000 +0100
-+++ linux-2.6.18/init/do_mounts_rd.c 2006-09-20 15:45:15.000000000 +0100
-@@ -5,6 +5,7 @@
- #include <linux/ext2_fs.h>
- #include <linux/romfs_fs.h>
- #include <linux/cramfs_fs.h>
-+#include <linux/squashfs_fs.h>
- #include <linux/initrd.h>
- #include <linux/string.h>
-
-@@ -39,6 +40,7 @@ static int __init crd_load(int in_fd, in
- * numbers could not be found.
- *
- * We currently check for the following magic numbers:
-+ * squashfs
- * minix
- * ext2
- * romfs
-@@ -53,6 +55,7 @@ identify_ramdisk_image(int fd, int start
- struct ext2_super_block *ext2sb;
- struct romfs_super_block *romfsb;
- struct cramfs_super *cramfsb;
-+ struct squashfs_super_block *squashfsb;
- int nblocks = -1;
- unsigned char *buf;
-
-@@ -64,6 +67,7 @@ identify_ramdisk_image(int fd, int start
- ext2sb = (struct ext2_super_block *) buf;
- romfsb = (struct romfs_super_block *) buf;
- cramfsb = (struct cramfs_super *) buf;
-+ squashfsb = (struct squashfs_super_block *) buf;
- memset(buf, 0xe5, size);
-
- /*
-@@ -101,6 +105,15 @@ identify_ramdisk_image(int fd, int start
- goto done;
- }
-
-+ /* squashfs is at block zero too */
-+ if (squashfsb->s_magic == SQUASHFS_MAGIC) {
-+ printk(KERN_NOTICE
-+ "RAMDISK: squashfs filesystem found at block %d\n",
-+ start_block);
-+ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
-+ goto done;
-+ }
-+
- /*
- * Read block 1 to test for minix and ext2 superblock
- */
diff --git a/packages/linux/linux-rp-2.6.18/tmio-nand-r6.patch b/packages/linux/linux-rp-2.6.18/tmio-nand-r6.patch
deleted file mode 100644
index 0fa803b874..0000000000
--- a/packages/linux/linux-rp-2.6.18/tmio-nand-r6.patch
+++ /dev/null
@@ -1,577 +0,0 @@
-Index: linux-2.6.18/drivers/mtd/nand/tmio.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.18/drivers/mtd/nand/tmio.c 2006-09-20 17:01:43.000000000 +0200
-@@ -0,0 +1,543 @@
-+/*
-+ * A device driver for NAND flash connected to a Toshiba Mobile IO
-+ * controller. This is known to work with the following variants:
-+ * TC6393XB revision 3
-+ *
-+ * Maintainer: Chris Humbert <mahadri+mtd@drigon.com>
-+ *
-+ * Copyright (C) 2005 Chris Humbert
-+ * Copyright (C) 2005 Dirk Opfer
-+ * Copyright (C) 2004 SHARP
-+ * Copyright (C) 2002 Lineo Japan, Inc.
-+ * Copyright (C) Ian Molton and Sebastian Carlier
-+ *
-+ * Based on Sharp's NAND driver, sharp_sl_tc6393.c
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/delay.h>
-+#include <linux/wait.h>
-+#include <linux/ioport.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/hardware/tmio.h>
-+
-+#include <linux/interrupt.h>
-+
-+#define mtd_printk(level, mtd, format, arg...) \
-+ printk (level "%s: " format, mtd->name, ## arg)
-+#define mtd_warn(mtd, format, arg...) \
-+ mtd_printk (KERN_WARNING, mtd, format, ## arg)
-+
-+/*--------------------------------------------------------------------------*/
-+
-+/* tmio_nfcr.mode Register Command List */
-+#define FCR_MODE_DATA 0x94 // Data Data_Mode
-+#define FCR_MODE_COMMAND 0x95 // Data Command_Mode
-+#define FCR_MODE_ADDRESS 0x96 // Data Address_Mode
-+
-+#define FCR_MODE_HWECC_CALC 0xB4 // HW-ECC Data
-+#define FCR_MODE_HWECC_RESULT 0xD4 // HW-ECC Calculation Result Read_Mode
-+#define FCR_MODE_HWECC_RESET 0xF4 // HW-ECC Reset
-+
-+#define FCR_MODE_POWER_ON 0x0C // Power Supply ON to SSFDC card
-+#define FCR_MODE_POWER_OFF 0x08 // Power Supply OFF to SSFDC card
-+
-+#define FCR_MODE_LED_OFF 0x00 // LED OFF
-+#define FCR_MODE_LED_ON 0x04 // LED ON
-+
-+#define FCR_MODE_EJECT_ON 0x68 // Ejection Demand from Penguin is Advanced
-+#define FCR_MODE_EJECT_OFF 0x08 // Ejection Demand from Penguin is Not Advanced
-+
-+#define FCR_MODE_LOCK 0x6C // Operates By Lock_Mode. Ejection Switch is Invalid
-+#define FCR_MODE_UNLOCK 0x0C // Operates By UnLock_Mode.Ejection Switch is Effective
-+
-+#define FCR_MODE_CONTROLLER_ID 0x40 // Controller ID Read
-+#define FCR_MODE_STANDBY 0x00 // SSFDC card Changes Standby State
-+
-+#define FCR_MODE_WE 0x80
-+#define FCR_MODE_ECC1 0x40
-+#define FCR_MODE_ECC0 0x20
-+#define FCR_MODE_CE 0x10
-+#define FCR_MODE_PCNT1 0x08
-+#define FCR_MODE_PCNT0 0x04
-+#define FCR_MODE_ALE 0x02
-+#define FCR_MODE_CLE 0x01
-+
-+#define FCR_STATUS_BUSY 0x80
-+
-+/*
-+ * NAND Flash Host Controller Configuration Register
-+ */
-+struct tmio_nfhccr {
-+ u8 x00[4];
-+ u16 command; /* 0x04 Command */
-+ u8 x01[0x0a];
-+ u16 base[2]; /* 0x10 NAND Flash Control Reg Base Addr*/
-+ u8 x02[0x29];
-+ u8 intp; /* 0x3d Interrupt Pin */
-+ u8 x03[0x0a];
-+ u8 inte; /* 0x48 Interrupt Enable */
-+ u8 x04;
-+ u8 ec; /* 0x4a Event Control */
-+ u8 x05;
-+ u8 icc; /* 0x4c Internal Clock Control */
-+ u8 x06[0x0e];
-+ u8 eccc; /* 0x5b ECC Control */
-+ u8 x07[4];
-+ u8 nftc; /* 0x60 NAND Flash Transaction Control */
-+ u8 nfm; /* 0x61 NAND Flash Monitor */
-+ u8 nfpsc; /* 0x62 NAND Flash Power Supply Control */
-+ u8 nfdc; /* 0x63 NAND Flash Detect Control */
-+ u8 x08[0x9c];
-+} __attribute__ ((packed));
-+
-+/*
-+ * NAND Flash Control Register
-+ */
-+struct tmio_nfcr {
-+union {
-+ u8 u8; /* 0x00 Data Register */
-+ u16 u16;
-+ u32 u32;
-+} __attribute__ ((packed));
-+ u8 mode; /* 0x04 Mode Register */
-+ u8 status; /* 0x05 Status Register */
-+ u8 isr; /* 0x06 Interrupt Status Register */
-+ u8 imr; /* 0x07 Interrupt Mask Register */
-+} __attribute__ ((packed));
-+
-+struct tmio_nand {
-+ struct mtd_info mtd;
-+ struct nand_chip chip;
-+
-+ struct tmio_nfhccr __iomem * ccr;
-+ struct tmio_nfcr __iomem * fcr;
-+
-+ unsigned int irq;
-+
-+ /* for tmio_nand_read_byte */
-+ u8 read;
-+ unsigned read_good:1;
-+};
-+
-+#define mtd_to_tmio(m) container_of(m, struct tmio_nand, mtd)
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static void tmio_nand_hwcontrol (struct mtd_info *mtd, int cmd)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ u8 mode = ioread8 (&fcr->mode);
-+
-+ switch (cmd) {
-+ case NAND_CTL_SETCLE: mode |= FCR_MODE_CLE; break;
-+ case NAND_CTL_CLRCLE: mode &= ~FCR_MODE_CLE; break;
-+
-+ case NAND_CTL_SETALE: mode |= FCR_MODE_ALE; break;
-+ case NAND_CTL_CLRALE: mode &= ~FCR_MODE_ALE; break;
-+
-+ case NAND_CTL_SETNCE: mode = FCR_MODE_DATA; break;
-+ case NAND_CTL_CLRNCE: mode = FCR_MODE_STANDBY; break;
-+ }
-+
-+ iowrite8 (mode, &fcr->mode);
-+ tmio->read_good = 0;
-+}
-+
-+static int tmio_nand_dev_ready (struct mtd_info* mtd)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ return !(ioread8 (&fcr->status) & FCR_STATUS_BUSY);
-+}
-+
-+static irqreturn_t tmio_irq (int irq, void *__tmio, struct pt_regs * r)
-+{
-+ struct tmio_nand* tmio = __tmio;
-+ struct nand_chip* this = &tmio->chip;
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ /* disable RDYREQ interrupt */
-+ iowrite8 (0x00, &fcr->imr);
-+
-+ if (unlikely (!waitqueue_active (&this->wq)))
-+ printk (KERN_WARNING TMIO_NAME_NAND ": spurious interrupt\n");
-+
-+ wake_up (&this->wq);
-+ return IRQ_HANDLED;
-+}
-+
-+/*
-+ * The TMIO core has a RDYREQ interrupt on the posedge of #SMRB.
-+ * This interrupt is normally disabled, but for long operations like
-+ * erase and write, we enable it to wake us up. The irq handler
-+ * disables the interrupt.
-+ */
-+static int
-+tmio_nand_wait (struct mtd_info *mtd, struct nand_chip *this, int state)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ long timeout;
-+
-+ /* enable RDYREQ interrupt */
-+ iowrite8 (0x0f, &fcr->isr);
-+ iowrite8 (0x81, &fcr->imr);
-+
-+ timeout = wait_event_timeout (this->wq,
-+ this->state != state || tmio_nand_dev_ready (mtd),
-+ msecs_to_jiffies (state == FL_ERASING ? 400 : 20));
-+
-+ if (this->state != state)
-+ return 0;
-+
-+ if (unlikely (!tmio_nand_dev_ready (mtd))) {
-+ iowrite8 (0x00, &fcr->imr);
-+ mtd_warn (mtd, "still busy with %s after %d ms\n",
-+ state == FL_ERASING ? "erase" : "program",
-+ state == FL_ERASING ? 400 : 20);
-+
-+ } else if (unlikely (!timeout)) {
-+ iowrite8 (0x00, &fcr->imr);
-+ mtd_warn (mtd, "timeout waiting for interrupt\n");
-+ }
-+
-+ this->cmdfunc (mtd, NAND_CMD_STATUS, -1, -1);
-+ return this->read_byte (mtd);
-+}
-+
-+/*
-+ * The TMIO controller combines two 8-bit data bytes into one 16-bit
-+ * word. This function separates them so nand_base.c works as expected,
-+ * especially its NAND_CMD_READID routines.
-+ *
-+ * To prevent stale data from being read, tmio_nand_hwcontrol() clears
-+ * tmio->read_good.
-+ */
-+static u_char tmio_nand_read_byte (struct mtd_info *mtd)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ unsigned int data;
-+
-+ if (tmio->read_good--)
-+ return tmio->read;
-+
-+ data = ioread16 (&fcr->u16);
-+ tmio->read = data >> 8;
-+ return data;
-+}
-+
-+/*
-+ * The TMIO controller converts an 8-bit NAND interface to a 16-bit
-+ * bus interface, so all data reads and writes must be 16-bit wide.
-+ * Thus, we implement 16-bit versions of the read, write, and verify
-+ * buffer functions.
-+ */
-+static void
-+tmio_nand_write_buf (struct mtd_info *mtd, const u_char *buf, int len)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ iowrite16_rep (&fcr->u16, buf, len >> 1);
-+}
-+
-+static void tmio_nand_read_buf (struct mtd_info *mtd, u_char *buf, int len)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ ioread16_rep (&fcr->u16, buf, len >> 1);
-+}
-+
-+static int
-+tmio_nand_verify_buf (struct mtd_info *mtd, const u_char *buf, int len)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ u16* p = (u16*) buf;
-+
-+ for (len >>= 1; len; len--)
-+ if (*(p++) != ioread16 (&fcr->u16))
-+ return -EFAULT;
-+ return 0;
-+}
-+
-+static void tmio_nand_enable_hwecc (struct mtd_info* mtd, int mode)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ iowrite8 (FCR_MODE_HWECC_RESET, &fcr->mode);
-+ ioread8 (&fcr->u8); /* dummy read */
-+ iowrite8 (FCR_MODE_HWECC_CALC, &fcr->mode);
-+}
-+
-+static int tmio_nand_calculate_ecc (struct mtd_info* mtd, const u_char* dat,
-+ u_char* ecc_code)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ unsigned int ecc;
-+
-+ iowrite8 (FCR_MODE_HWECC_RESULT, &fcr->mode);
-+
-+ ecc = ioread16 (&fcr->u16);
-+ ecc_code[1] = ecc; // 000-255 LP7-0
-+ ecc_code[0] = ecc >> 8; // 000-255 LP15-8
-+ ecc = ioread16 (&fcr->u16);
-+ ecc_code[2] = ecc; // 000-255 CP5-0,11b
-+ ecc_code[4] = ecc >> 8; // 256-511 LP7-0
-+ ecc = ioread16 (&fcr->u16);
-+ ecc_code[3] = ecc; // 256-511 LP15-8
-+ ecc_code[5] = ecc >> 8; // 256-511 CP5-0,11b
-+
-+ iowrite8 (FCR_MODE_DATA, &fcr->mode);
-+ return 0;
-+}
-+
-+static void tmio_hw_init (struct device *dev, struct tmio_nand *tmio)
-+{
-+ struct resource* nfcr = tmio_resource_control (dev);
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ struct tmio_nfhccr __iomem * ccr = tmio->ccr;
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ unsigned long base;
-+
-+ /* (89h) SMD Buffer ON By TC6393XB SystemConfig gpibfc1 */
-+ tdev->ops->clock (dev, 1);
-+ tdev->ops->function (dev, 1);
-+
-+ /* (4Ch) CLKRUN Enable 1st spcrunc */
-+ iowrite8 (0x81, &ccr->icc);
-+
-+ /* (10h)BaseAddress 0x1000 spba.spba2 */
-+ base = nfcr->start - tdev->iomem->start;
-+ iowrite16 (base, ccr->base + 0);
-+ iowrite16 (base >> 16, ccr->base + 1);
-+
-+ /* (04h)Command Register I/O spcmd */
-+ iowrite8 (0x02, &ccr->command);
-+
-+ /* (62h) Power Supply Control ssmpwc */
-+ /* HardPowerOFF - SuspendOFF - PowerSupplyWait_4MS */
-+ iowrite8 (0x02, &ccr->nfpsc);
-+
-+ /* (63h) Detect Control ssmdtc */
-+ iowrite8 (0x02, &ccr->nfdc);
-+
-+ /* Interrupt status register clear sintst */
-+ iowrite8 (0x0f, &fcr->isr);
-+
-+ /* After power supply, Media are reset smode */
-+ iowrite8 (FCR_MODE_POWER_ON, &fcr->mode);
-+ iowrite8 (FCR_MODE_COMMAND, &fcr->mode);
-+ iowrite8 (NAND_CMD_RESET, &fcr->u8);
-+
-+ /* Standby Mode smode */
-+ iowrite8 (FCR_MODE_STANDBY, &fcr->mode);
-+
-+ mdelay (5);
-+}
-+
-+static void tmio_hw_stop (struct device *dev, struct tmio_nand *tmio)
-+{
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ iowrite8 (FCR_MODE_POWER_OFF, &fcr->mode);
-+ tdev->ops->function (dev, 0);
-+ tdev->ops->clock (dev, 0);
-+}
-+
-+/*--------------------------------------------------------------------------*/
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+static const char *part_probes[] = { "cmdlinepart", NULL };
-+#endif
-+
-+static int tmio_probe (struct device *dev)
-+{
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ struct tmio_nand_platform_data* tnpd = dev->platform_data;
-+ struct resource* ccr = tmio_resource_config (dev);
-+ struct resource* fcr = tmio_resource_control (dev);
-+ struct resource* irq = tmio_resource_irq (dev);
-+ struct tmio_nand* tmio;
-+ struct mtd_info* mtd;
-+ struct nand_chip* this;
-+ struct mtd_partition* parts;
-+ int nbparts = 0;
-+ int retval;
-+
-+ if (!tnpd)
-+ return -EINVAL;
-+
-+ retval = request_resource (tdev->iomem, ccr);
-+ if (retval)
-+ goto err_request_ccr;
-+
-+ retval = request_resource (tdev->iomem, fcr);
-+ if (retval)
-+ goto err_request_fcr;
-+
-+ tmio = kzalloc (sizeof *tmio, GFP_KERNEL);
-+ if (!tmio) {
-+ retval = -ENOMEM;
-+ goto err_kzalloc;
-+ }
-+
-+ dev_set_drvdata (dev, tmio);
-+ mtd = &tmio->mtd;
-+ this = &tmio->chip;
-+ mtd->priv = this;
-+ mtd->name = TMIO_NAME_NAND;
-+
-+ tmio->ccr = ioremap (ccr->start, ccr->end - ccr->start + 1);
-+ if (!tmio->ccr) {
-+ retval = -EIO;
-+ goto err_iomap_ccr;
-+ }
-+
-+ tmio->fcr = ioremap (fcr->start, fcr->end - fcr->start + 1);
-+ if (!tmio->fcr) {
-+ retval = -EIO;
-+ goto err_iomap_fcr;
-+ }
-+
-+ tmio_hw_init (dev, tmio);
-+
-+ /* Set address of NAND IO lines */
-+ this->IO_ADDR_R = tmio->fcr;
-+ this->IO_ADDR_W = tmio->fcr;
-+
-+ /* Set address of hardware control function */
-+ this->hwcontrol = tmio_nand_hwcontrol;
-+ this->dev_ready = tmio_nand_dev_ready;
-+ this->read_byte = tmio_nand_read_byte;
-+ this->write_buf = tmio_nand_write_buf;
-+ this->read_buf = tmio_nand_read_buf;
-+ this->verify_buf = tmio_nand_verify_buf;
-+
-+ /* set eccmode using hardware ECC */
-+ this->eccmode = NAND_ECC_HW6_512;
-+ this->enable_hwecc = tmio_nand_enable_hwecc;
-+ this->calculate_ecc = tmio_nand_calculate_ecc;
-+ this->correct_data = nand_correct_data;
-+ this->badblock_pattern = tnpd->badblock_pattern;
-+
-+ /* 15 us command delay time */
-+ this->chip_delay = 15;
-+
-+ if (irq->start) {
-+ retval = request_irq (irq->start, &tmio_irq,
-+ SA_INTERRUPT, irq->name, tmio);
-+ if (!retval) {
-+ tmio->irq = irq->start;
-+ this->waitfunc = tmio_nand_wait;
-+ } else
-+ mtd_warn (mtd, "request_irq error %d\n", retval);
-+ }
-+
-+ /* Scan to find existence of the device */
-+ if (nand_scan (mtd, 1)) {
-+ retval = -ENODEV;
-+ goto err_scan;
-+ }
-+
-+ /* Register the partitions */
-+#ifdef CONFIG_MTD_PARTITIONS
-+ nbparts = parse_mtd_partitions (mtd, part_probes, &parts, 0);
-+#endif
-+ if (nbparts <= 0) {
-+ parts = tnpd->partition;
-+ nbparts = tnpd->num_partitions;
-+ }
-+
-+ add_mtd_partitions (mtd, parts, nbparts);
-+ return 0;
-+
-+err_scan:
-+ if (tmio->irq)
-+ free_irq (tmio->irq, tmio);
-+ tmio_hw_stop (dev, tmio);
-+ iounmap (tmio->fcr);
-+err_iomap_fcr:
-+ iounmap (tmio->ccr);
-+err_iomap_ccr:
-+ kfree (tmio);
-+err_kzalloc:
-+ release_resource (fcr);
-+err_request_fcr:
-+ release_resource (ccr);
-+err_request_ccr:
-+ return retval;
-+}
-+
-+static int tmio_remove (struct device *dev)
-+{
-+ struct tmio_nand* tmio = dev_get_drvdata (dev);
-+
-+ nand_release (&tmio->mtd);
-+ if (tmio->irq)
-+ free_irq (tmio->irq, tmio);
-+ tmio_hw_stop (dev, tmio);
-+ iounmap (tmio->fcr);
-+ iounmap (tmio->ccr);
-+ kfree (tmio);
-+ release_resource (tmio_resource_control (dev));
-+ release_resource (tmio_resource_config (dev));
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+static int tmio_suspend (struct device *dev, pm_message_t state)
-+{
-+ tmio_hw_stop (dev, dev_get_drvdata (dev));
-+ return 0;
-+}
-+
-+static int tmio_resume (struct device *dev)
-+{
-+ tmio_hw_init (dev, dev_get_drvdata (dev));
-+ return 0;
-+}
-+#endif
-+
-+static struct device_driver tmio_driver = {
-+ .name = TMIO_NAME_NAND,
-+ .bus = &tmio_bus_type,
-+ .probe = tmio_probe,
-+ .remove = tmio_remove,
-+#ifdef CONFIG_PM
-+ .suspend = tmio_suspend,
-+ .resume = tmio_resume,
-+#endif
-+};
-+
-+static int __init tmio_init (void) {
-+ return driver_register (&tmio_driver);
-+}
-+
-+static void __exit tmio_exit (void) {
-+ driver_unregister (&tmio_driver);
-+}
-+
-+module_init (tmio_init);
-+module_exit (tmio_exit);
-+
-+MODULE_LICENSE ("GPL");
-+MODULE_AUTHOR ("Dirk Opfer, Chris Humbert");
-+MODULE_DESCRIPTION ("NAND flash driver on Toshiba Mobile IO controller");
-Index: linux-2.6.18/drivers/mtd/nand/Kconfig
-===================================================================
---- linux-2.6.18.orig/drivers/mtd/nand/Kconfig 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18/drivers/mtd/nand/Kconfig 2006-09-20 17:01:43.000000000 +0200
-@@ -63,6 +63,13 @@
- help
- Support for NAND flash on Amstrad E3 (Delta).
-
-+config MTD_NAND_TMIO
-+ tristate "NAND Flash device on Toshiba Mobile IO Controller"
-+ depends on MTD_NAND && TOSHIBA_TC6393XB
-+ help
-+ Support for NAND flash connected to a Toshiba Mobile IO
-+ Controller in some PDAs, including the Sharp SL6000x.
-+
- config MTD_NAND_TOTO
- tristate "NAND Flash device on TOTO board"
- depends on ARCH_OMAP && MTD_NAND && BROKEN
-Index: linux-2.6.18/drivers/mtd/nand/Makefile
-===================================================================
---- linux-2.6.18.orig/drivers/mtd/nand/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18/drivers/mtd/nand/Makefile 2006-09-20 17:03:43.000000000 +0200
-@@ -22,5 +22,6 @@
- obj-$(CONFIG_MTD_NAND_NANDSIM) += nandsim.o
- obj-$(CONFIG_MTD_NAND_CS553X) += cs553x_nand.o
- obj-$(CONFIG_MTD_NAND_NDFC) += ndfc.o
-+obj-$(CONFIG_MTD_NAND_TMIO) += tmio.o
-
- nand-objs = nand_base.o nand_bbt.o
diff --git a/packages/linux/linux-rp-2.6.18/tmio-nand-r7.patch b/packages/linux/linux-rp-2.6.18/tmio-nand-r7.patch
deleted file mode 100644
index b6ce56eea4..0000000000
--- a/packages/linux/linux-rp-2.6.18/tmio-nand-r7.patch
+++ /dev/null
@@ -1,593 +0,0 @@
- drivers/mtd/nand/Kconfig | 7
- drivers/mtd/nand/Makefile | 1
- drivers/mtd/nand/tmio.c | 554 ++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 562 insertions(+)
-
-Index: git/drivers/mtd/nand/tmio.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/drivers/mtd/nand/tmio.c 2006-11-07 23:31:12.000000000 +0000
-@@ -0,0 +1,554 @@
-+/*
-+ * A device driver for NAND flash connected to a Toshiba Mobile IO
-+ * controller. This is known to work with the following variants:
-+ * TC6393XB revision 3
-+ *
-+ * Maintainer: Chris Humbert <mahadri+mtd@drigon.com>
-+ *
-+ * Copyright (C) 2005 Chris Humbert
-+ * Copyright (C) 2005 Dirk Opfer
-+ * Copyright (C) 2004 SHARP
-+ * Copyright (C) 2002 Lineo Japan, Inc.
-+ * Copyright (C) Ian Molton and Sebastian Carlier
-+ *
-+ * Based on Sharp's NAND driver, sharp_sl_tc6393.c
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/delay.h>
-+#include <linux/wait.h>
-+#include <linux/ioport.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/hardware/tmio.h>
-+
-+#include <linux/interrupt.h>
-+
-+#define mtd_printk(level, mtd, format, arg...) \
-+ printk (level "%s: " format, mtd->name, ## arg)
-+#define mtd_warn(mtd, format, arg...) \
-+ mtd_printk (KERN_WARNING, mtd, format, ## arg)
-+
-+/*--------------------------------------------------------------------------*/
-+
-+/* tmio_nfcr.mode Register Command List */
-+#define FCR_MODE_DATA 0x94 // Data Data_Mode
-+#define FCR_MODE_COMMAND 0x95 // Data Command_Mode
-+#define FCR_MODE_ADDRESS 0x96 // Data Address_Mode
-+
-+#define FCR_MODE_HWECC_CALC 0xB4 // HW-ECC Data
-+#define FCR_MODE_HWECC_RESULT 0xD4 // HW-ECC Calculation Result Read_Mode
-+#define FCR_MODE_HWECC_RESET 0xF4 // HW-ECC Reset
-+
-+#define FCR_MODE_POWER_ON 0x0C // Power Supply ON to SSFDC card
-+#define FCR_MODE_POWER_OFF 0x08 // Power Supply OFF to SSFDC card
-+
-+#define FCR_MODE_LED_OFF 0x00 // LED OFF
-+#define FCR_MODE_LED_ON 0x04 // LED ON
-+
-+#define FCR_MODE_EJECT_ON 0x68 // Ejection Demand from Penguin is Advanced
-+#define FCR_MODE_EJECT_OFF 0x08 // Ejection Demand from Penguin is Not Advanced
-+
-+#define FCR_MODE_LOCK 0x6C // Operates By Lock_Mode. Ejection Switch is Invalid
-+#define FCR_MODE_UNLOCK 0x0C // Operates By UnLock_Mode.Ejection Switch is Effective
-+
-+#define FCR_MODE_CONTROLLER_ID 0x40 // Controller ID Read
-+#define FCR_MODE_STANDBY 0x00 // SSFDC card Changes Standby State
-+
-+#define FCR_MODE_WE 0x80
-+#define FCR_MODE_ECC1 0x40
-+#define FCR_MODE_ECC0 0x20
-+#define FCR_MODE_CE 0x10
-+#define FCR_MODE_PCNT1 0x08
-+#define FCR_MODE_PCNT0 0x04
-+#define FCR_MODE_ALE 0x02
-+#define FCR_MODE_CLE 0x01
-+
-+#define FCR_STATUS_BUSY 0x80
-+
-+/*
-+ * NAND Flash Host Controller Configuration Register
-+ */
-+struct tmio_nfhccr {
-+ u8 x00[4];
-+ u16 command; /* 0x04 Command */
-+ u8 x01[0x0a];
-+ u16 base[2]; /* 0x10 NAND Flash Control Reg Base Addr*/
-+ u8 x02[0x29];
-+ u8 intp; /* 0x3d Interrupt Pin */
-+ u8 x03[0x0a];
-+ u8 inte; /* 0x48 Interrupt Enable */
-+ u8 x04;
-+ u8 ec; /* 0x4a Event Control */
-+ u8 x05;
-+ u8 icc; /* 0x4c Internal Clock Control */
-+ u8 x06[0x0e];
-+ u8 eccc; /* 0x5b ECC Control */
-+ u8 x07[4];
-+ u8 nftc; /* 0x60 NAND Flash Transaction Control */
-+ u8 nfm; /* 0x61 NAND Flash Monitor */
-+ u8 nfpsc; /* 0x62 NAND Flash Power Supply Control */
-+ u8 nfdc; /* 0x63 NAND Flash Detect Control */
-+ u8 x08[0x9c];
-+} __attribute__ ((packed));
-+
-+/*
-+ * NAND Flash Control Register
-+ */
-+struct tmio_nfcr {
-+union {
-+ u8 u8; /* 0x00 Data Register */
-+ u16 u16;
-+ u32 u32;
-+} __attribute__ ((packed));
-+ u8 mode; /* 0x04 Mode Register */
-+ u8 status; /* 0x05 Status Register */
-+ u8 isr; /* 0x06 Interrupt Status Register */
-+ u8 imr; /* 0x07 Interrupt Mask Register */
-+} __attribute__ ((packed));
-+
-+struct tmio_nand {
-+ struct mtd_info mtd;
-+ struct nand_chip chip;
-+
-+ struct tmio_nfhccr __iomem * ccr;
-+ struct tmio_nfcr __iomem * fcr;
-+
-+ unsigned int irq;
-+
-+ /* for tmio_nand_read_byte */
-+ u8 read;
-+ unsigned read_good:1;
-+};
-+
-+#define mtd_to_tmio(m) container_of(m, struct tmio_nand, mtd)
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static void tmio_nand_hwcontrol(struct mtd_info *mtd, int cmd,
-+ unsigned int ctrl)
-+{
-+ struct tmio_nand *tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem *fcr = tmio->fcr;
-+ struct nand_chip *chip = mtd->priv;
-+
-+ if (ctrl & NAND_CTRL_CHANGE) {
-+ u8 mode;
-+
-+ if (ctrl & NAND_NCE) {
-+ mode = FCR_MODE_DATA;
-+
-+ if (ctrl & NAND_CLE)
-+ mode |= FCR_MODE_CLE;
-+ else
-+ mode &= ~FCR_MODE_CLE;
-+
-+ if (ctrl & NAND_ALE)
-+ mode |= FCR_MODE_ALE;
-+ else
-+ mode &= ~FCR_MODE_ALE;
-+ } else {
-+ mode = FCR_MODE_STANDBY;
-+ }
-+
-+ iowrite8 (mode, &fcr->mode);
-+ tmio->read_good = 0;
-+ }
-+
-+ if (cmd != NAND_CMD_NONE)
-+ writeb(cmd, chip->IO_ADDR_W);
-+}
-+
-+static int tmio_nand_dev_ready (struct mtd_info* mtd)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ return !(ioread8 (&fcr->status) & FCR_STATUS_BUSY);
-+}
-+
-+static irqreturn_t tmio_irq (int irq, void *__tmio)
-+{
-+ struct tmio_nand* tmio = __tmio;
-+ struct nand_chip* this = &tmio->chip;
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ /* disable RDYREQ interrupt */
-+ iowrite8 (0x00, &fcr->imr);
-+
-+ if (unlikely (!waitqueue_active (&this->controller->wq)))
-+ printk (KERN_WARNING TMIO_NAME_NAND ": spurious interrupt\n");
-+
-+ wake_up (&this->controller->wq);
-+ return IRQ_HANDLED;
-+}
-+
-+/*
-+ * The TMIO core has a RDYREQ interrupt on the posedge of #SMRB.
-+ * This interrupt is normally disabled, but for long operations like
-+ * erase and write, we enable it to wake us up. The irq handler
-+ * disables the interrupt.
-+ */
-+static int
-+tmio_nand_wait (struct mtd_info *mtd, struct nand_chip *this)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ long timeout;
-+
-+ /* enable RDYREQ interrupt */
-+ iowrite8 (0x0f, &fcr->isr);
-+ iowrite8 (0x81, &fcr->imr);
-+
-+ timeout = wait_event_timeout (this->controller->wq, tmio_nand_dev_ready (mtd),
-+ msecs_to_jiffies (this->state == FL_ERASING ? 400 : 20));
-+
-+ if (unlikely (!tmio_nand_dev_ready (mtd))) {
-+ iowrite8 (0x00, &fcr->imr);
-+ mtd_warn (mtd, "still busy with %s after %d ms\n",
-+ this->state == FL_ERASING ? "erase" : "program",
-+ this->state == FL_ERASING ? 400 : 20);
-+
-+ } else if (unlikely (!timeout)) {
-+ iowrite8 (0x00, &fcr->imr);
-+ mtd_warn (mtd, "timeout waiting for interrupt\n");
-+ }
-+
-+ this->cmdfunc (mtd, NAND_CMD_STATUS, -1, -1);
-+ return this->read_byte (mtd);
-+}
-+
-+/*
-+ * The TMIO controller combines two 8-bit data bytes into one 16-bit
-+ * word. This function separates them so nand_base.c works as expected,
-+ * especially its NAND_CMD_READID routines.
-+ *
-+ * To prevent stale data from being read, tmio_nand_hwcontrol() clears
-+ * tmio->read_good.
-+ */
-+static u_char tmio_nand_read_byte (struct mtd_info *mtd)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ unsigned int data;
-+
-+ if (tmio->read_good--)
-+ return tmio->read;
-+
-+ data = ioread16 (&fcr->u16);
-+ tmio->read = data >> 8;
-+ return data;
-+}
-+
-+/*
-+ * The TMIO controller converts an 8-bit NAND interface to a 16-bit
-+ * bus interface, so all data reads and writes must be 16-bit wide.
-+ * Thus, we implement 16-bit versions of the read, write, and verify
-+ * buffer functions.
-+ */
-+static void
-+tmio_nand_write_buf (struct mtd_info *mtd, const u_char *buf, int len)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ iowrite16_rep (&fcr->u16, buf, len >> 1);
-+}
-+
-+static void tmio_nand_read_buf (struct mtd_info *mtd, u_char *buf, int len)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ ioread16_rep (&fcr->u16, buf, len >> 1);
-+}
-+
-+static int
-+tmio_nand_verify_buf (struct mtd_info *mtd, const u_char *buf, int len)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ u16* p = (u16*) buf;
-+
-+ for (len >>= 1; len; len--)
-+ if (*(p++) != ioread16 (&fcr->u16))
-+ return -EFAULT;
-+ return 0;
-+}
-+
-+static void tmio_nand_enable_hwecc (struct mtd_info* mtd, int mode)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ iowrite8 (FCR_MODE_HWECC_RESET, &fcr->mode);
-+ ioread8 (&fcr->u8); /* dummy read */
-+ iowrite8 (FCR_MODE_HWECC_CALC, &fcr->mode);
-+}
-+
-+static int tmio_nand_calculate_ecc (struct mtd_info* mtd, const u_char* dat,
-+ u_char* ecc_code)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ unsigned int ecc;
-+
-+ iowrite8 (FCR_MODE_HWECC_RESULT, &fcr->mode);
-+
-+ ecc = ioread16 (&fcr->u16);
-+ ecc_code[1] = ecc; // 000-255 LP7-0
-+ ecc_code[0] = ecc >> 8; // 000-255 LP15-8
-+ ecc = ioread16 (&fcr->u16);
-+ ecc_code[2] = ecc; // 000-255 CP5-0,11b
-+ ecc_code[4] = ecc >> 8; // 256-511 LP7-0
-+ ecc = ioread16 (&fcr->u16);
-+ ecc_code[3] = ecc; // 256-511 LP15-8
-+ ecc_code[5] = ecc >> 8; // 256-511 CP5-0,11b
-+
-+ iowrite8 (FCR_MODE_DATA, &fcr->mode);
-+ return 0;
-+}
-+
-+static void tmio_hw_init (struct device *dev, struct tmio_nand *tmio)
-+{
-+ struct resource* nfcr = tmio_resource_control (dev);
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ struct tmio_nfhccr __iomem * ccr = tmio->ccr;
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ unsigned long base;
-+
-+ /* (89h) SMD Buffer ON By TC6393XB SystemConfig gpibfc1 */
-+ tdev->ops->clock (dev, 1);
-+ tdev->ops->function (dev, 1);
-+
-+ /* (4Ch) CLKRUN Enable 1st spcrunc */
-+ iowrite8 (0x81, &ccr->icc);
-+
-+ /* (10h)BaseAddress 0x1000 spba.spba2 */
-+ base = nfcr->start - tdev->iomem->start;
-+ iowrite16 (base, ccr->base + 0);
-+ iowrite16 (base >> 16, ccr->base + 1);
-+
-+ /* (04h)Command Register I/O spcmd */
-+ iowrite8 (0x02, &ccr->command);
-+
-+ /* (62h) Power Supply Control ssmpwc */
-+ /* HardPowerOFF - SuspendOFF - PowerSupplyWait_4MS */
-+ iowrite8 (0x02, &ccr->nfpsc);
-+
-+ /* (63h) Detect Control ssmdtc */
-+ iowrite8 (0x02, &ccr->nfdc);
-+
-+ /* Interrupt status register clear sintst */
-+ iowrite8 (0x0f, &fcr->isr);
-+
-+ /* After power supply, Media are reset smode */
-+ iowrite8 (FCR_MODE_POWER_ON, &fcr->mode);
-+ iowrite8 (FCR_MODE_COMMAND, &fcr->mode);
-+ iowrite8 (NAND_CMD_RESET, &fcr->u8);
-+
-+ /* Standby Mode smode */
-+ iowrite8 (FCR_MODE_STANDBY, &fcr->mode);
-+
-+ mdelay (5);
-+}
-+
-+static void tmio_hw_stop (struct device *dev, struct tmio_nand *tmio)
-+{
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ iowrite8 (FCR_MODE_POWER_OFF, &fcr->mode);
-+ tdev->ops->function (dev, 0);
-+ tdev->ops->clock (dev, 0);
-+}
-+
-+/*--------------------------------------------------------------------------*/
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+static const char *part_probes[] = { "cmdlinepart", NULL };
-+#endif
-+
-+static int tmio_probe (struct device *dev)
-+{
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ struct tmio_nand_platform_data* tnpd = dev->platform_data;
-+ struct resource* ccr = tmio_resource_config (dev);
-+ struct resource* fcr = tmio_resource_control (dev);
-+ struct resource* irq = tmio_resource_irq (dev);
-+ struct tmio_nand* tmio;
-+ struct mtd_info* mtd;
-+ struct nand_chip* this;
-+ struct mtd_partition* parts;
-+ int nbparts = 0;
-+ int retval;
-+
-+ if (!tnpd)
-+ return -EINVAL;
-+
-+ retval = request_resource (tdev->iomem, ccr);
-+ if (retval)
-+ goto err_request_ccr;
-+
-+ retval = request_resource (tdev->iomem, fcr);
-+ if (retval)
-+ goto err_request_fcr;
-+
-+ tmio = kzalloc (sizeof *tmio, GFP_KERNEL);
-+ if (!tmio) {
-+ retval = -ENOMEM;
-+ goto err_kzalloc;
-+ }
-+
-+ dev_set_drvdata (dev, tmio);
-+ mtd = &tmio->mtd;
-+ this = &tmio->chip;
-+ mtd->priv = this;
-+ mtd->name = TMIO_NAME_NAND;
-+
-+ tmio->ccr = ioremap (ccr->start, ccr->end - ccr->start + 1);
-+ if (!tmio->ccr) {
-+ retval = -EIO;
-+ goto err_iomap_ccr;
-+ }
-+
-+ tmio->fcr = ioremap (fcr->start, fcr->end - fcr->start + 1);
-+ if (!tmio->fcr) {
-+ retval = -EIO;
-+ goto err_iomap_fcr;
-+ }
-+
-+ tmio_hw_init (dev, tmio);
-+
-+ /* Set address of NAND IO lines */
-+ this->IO_ADDR_R = tmio->fcr;
-+ this->IO_ADDR_W = tmio->fcr;
-+
-+ /* Set address of hardware control function */
-+ this->cmd_ctrl = tmio_nand_hwcontrol;
-+ this->dev_ready = tmio_nand_dev_ready;
-+ this->read_byte = tmio_nand_read_byte;
-+ this->write_buf = tmio_nand_write_buf;
-+ this->read_buf = tmio_nand_read_buf;
-+ this->verify_buf = tmio_nand_verify_buf;
-+
-+ /* set eccmode using hardware ECC */
-+ this->ecc.mode = NAND_ECC_HW;
-+ this->ecc.size = 512;
-+ this->ecc.bytes = 6;
-+ this->ecc.hwctl = tmio_nand_enable_hwecc;
-+ this->ecc.calculate = tmio_nand_calculate_ecc;
-+ this->ecc.correct = nand_correct_data;
-+ this->badblock_pattern = tnpd->badblock_pattern;
-+
-+ /* 15 us command delay time */
-+ this->chip_delay = 15;
-+
-+ if (irq->start) {
-+ retval = request_irq (irq->start, &tmio_irq,
-+ SA_INTERRUPT, irq->name, tmio);
-+ if (!retval) {
-+ tmio->irq = irq->start;
-+ this->waitfunc = tmio_nand_wait;
-+ } else
-+ mtd_warn (mtd, "request_irq error %d\n", retval);
-+ }
-+
-+ /* Scan to find existence of the device */
-+ if (nand_scan (mtd, 1)) {
-+ retval = -ENODEV;
-+ goto err_scan;
-+ }
-+
-+ /* Register the partitions */
-+#ifdef CONFIG_MTD_PARTITIONS
-+ nbparts = parse_mtd_partitions (mtd, part_probes, &parts, 0);
-+#endif
-+ if (nbparts <= 0) {
-+ parts = tnpd->partition;
-+ nbparts = tnpd->num_partitions;
-+ }
-+
-+ add_mtd_partitions (mtd, parts, nbparts);
-+ return 0;
-+
-+err_scan:
-+ if (tmio->irq)
-+ free_irq (tmio->irq, tmio);
-+ tmio_hw_stop (dev, tmio);
-+ iounmap (tmio->fcr);
-+err_iomap_fcr:
-+ iounmap (tmio->ccr);
-+err_iomap_ccr:
-+ kfree (tmio);
-+err_kzalloc:
-+ release_resource (fcr);
-+err_request_fcr:
-+ release_resource (ccr);
-+err_request_ccr:
-+ return retval;
-+}
-+
-+static int tmio_remove (struct device *dev)
-+{
-+ struct tmio_nand* tmio = dev_get_drvdata (dev);
-+
-+ nand_release (&tmio->mtd);
-+ if (tmio->irq)
-+ free_irq (tmio->irq, tmio);
-+ tmio_hw_stop (dev, tmio);
-+ iounmap (tmio->fcr);
-+ iounmap (tmio->ccr);
-+ kfree (tmio);
-+ release_resource (tmio_resource_control (dev));
-+ release_resource (tmio_resource_config (dev));
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+static int tmio_suspend (struct device *dev, pm_message_t state)
-+{
-+ tmio_hw_stop (dev, dev_get_drvdata (dev));
-+ return 0;
-+}
-+
-+static int tmio_resume (struct device *dev)
-+{
-+ tmio_hw_init (dev, dev_get_drvdata (dev));
-+ return 0;
-+}
-+#endif
-+
-+static struct device_driver tmio_driver = {
-+ .name = TMIO_NAME_NAND,
-+ .bus = &tmio_bus_type,
-+ .probe = tmio_probe,
-+ .remove = tmio_remove,
-+#ifdef CONFIG_PM
-+ .suspend = tmio_suspend,
-+ .resume = tmio_resume,
-+#endif
-+};
-+
-+static int __init tmio_init (void) {
-+ return driver_register (&tmio_driver);
-+}
-+
-+static void __exit tmio_exit (void) {
-+ driver_unregister (&tmio_driver);
-+}
-+
-+module_init (tmio_init);
-+module_exit (tmio_exit);
-+
-+MODULE_LICENSE ("GPL");
-+MODULE_AUTHOR ("Dirk Opfer, Chris Humbert");
-+MODULE_DESCRIPTION ("NAND flash driver on Toshiba Mobile IO controller");
-Index: git/drivers/mtd/nand/Kconfig
-===================================================================
---- git.orig/drivers/mtd/nand/Kconfig 2006-10-31 16:09:03.000000000 +0000
-+++ git/drivers/mtd/nand/Kconfig 2006-11-07 22:13:09.000000000 +0000
-@@ -63,6 +63,13 @@ config MTD_NAND_AMS_DELTA
- help
- Support for NAND flash on Amstrad E3 (Delta).
-
-+config MTD_NAND_TMIO
-+ tristate "NAND Flash device on Toshiba Mobile IO Controller"
-+ depends on MTD_NAND && TOSHIBA_TC6393XB
-+ help
-+ Support for NAND flash connected to a Toshiba Mobile IO
-+ Controller in some PDAs, including the Sharp SL6000x.
-+
- config MTD_NAND_TOTO
- tristate "NAND Flash device on TOTO board"
- depends on ARCH_OMAP && MTD_NAND && BROKEN
-Index: git/drivers/mtd/nand/Makefile
-===================================================================
---- git.orig/drivers/mtd/nand/Makefile 2006-10-31 16:09:03.000000000 +0000
-+++ git/drivers/mtd/nand/Makefile 2006-11-07 22:13:09.000000000 +0000
-@@ -22,5 +22,6 @@ obj-$(CONFIG_MTD_NAND_TS7250) += ts7250
- obj-$(CONFIG_MTD_NAND_NANDSIM) += nandsim.o
- obj-$(CONFIG_MTD_NAND_CS553X) += cs553x_nand.o
- obj-$(CONFIG_MTD_NAND_NDFC) += ndfc.o
-+obj-$(CONFIG_MTD_NAND_TMIO) += tmio.o
-
- nand-objs = nand_base.o nand_bbt.o
diff --git a/packages/linux/linux-rp-2.6.18/tmio-ohci-r5.patch b/packages/linux/linux-rp-2.6.18/tmio-ohci-r5.patch
deleted file mode 100644
index a87469afb3..0000000000
--- a/packages/linux/linux-rp-2.6.18/tmio-ohci-r5.patch
+++ /dev/null
@@ -1,923 +0,0 @@
-Index: linux-2.6.18/drivers/usb/host/ohci-tmio.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.18/drivers/usb/host/ohci-tmio.c 2006-09-20 16:18:08.000000000 +0200
-@@ -0,0 +1,894 @@
-+/*
-+ * 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/dma-mapping.h> /* for consistent_sync() */
-+#include <asm/hardware/tmio.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_dma_pool {
-+ struct device* dev;
-+ unsigned int size;
-+};
-+
-+struct tmio_hcd {
-+ struct gen_pool* poolp;
-+ struct usb_operations ops;
-+ struct tmio_dma_pool td_pool;
-+ struct tmio_dma_pool ed_pool;
-+
-+ struct tmio_uhccr __iomem *ccr;
-+ void __iomem * sram;
-+ size_t sram_len;
-+};
-+
-+#define hcd_to_tmio(hcd) ((struct tmio_hcd*)(hcd_to_ohci (hcd) + 1))
-+
-+struct tmio_td {
-+ void* data; /* td's data buffer */
-+ void __iomem * bounce; /* dma bounce buffer */
-+ dma_addr_t dma; /* bounce buffer dma address */
-+ size_t len; /* bounce buffer length */
-+ u32 info; /* parameter for td_fill */
-+};
-+
-+struct tmio_urb {
-+ int td_add; /* next index to be added */
-+ int td_queue; /* next index to be HC enqueued */
-+
-+ struct tmio_td td [0]; /* private td data */
-+};
-+
-+static inline struct tmio_urb *urb_to_turb (struct urb *urb)
-+{
-+ urb_priv_t* urb_priv = urb->hcpriv;
-+ return (struct tmio_urb*)(urb_priv->td + urb_priv->length);
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/* gen_pool_alloc page allocator callback */
-+static unsigned long tmio_pool_callback(struct gen_pool *poolp)
-+{
-+ return 0;
-+}
-+
-+static inline void tmio_pool_destroy(struct tmio_hcd *tmio)
-+{
-+ struct gen_pool *poolp = tmio->poolp;
-+
-+ if (!poolp)
-+ return;
-+ if (poolp->h)
-+ kfree(poolp->h);
-+ kfree(poolp);
-+ tmio->poolp = NULL;
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+#define BOUNDED_XYL(x,y,ylen) (((y) <= (x)) && ((x) < ((y)+(ylen))))
-+#define BOUNDED_XYY(x,y1,y2) (((y1) <= (x)) && ((x) < (y2)))
-+
-+static inline dma_addr_t tmio_virt_to_dma (struct usb_hcd *hcd, void *vaddr)
-+{
-+ struct resource* sram = tmio_resource_mem (hcd->self.controller);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+
-+ return BOUNDED_XYL (vaddr, tmio->sram, tmio->sram_len)
-+ ? sram->start + (vaddr - tmio->sram)
-+ : ~0;
-+}
-+
-+static inline void* tmio_dma_to_virt (struct usb_hcd *hcd, dma_addr_t handle)
-+{
-+ struct resource* sram = tmio_resource_mem (hcd->self.controller);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+
-+ return BOUNDED_XYY (handle, sram->start, sram->end + 1)
-+ ? tmio->sram + handle - sram->start
-+ : NULL;
-+}
-+
-+/*
-+ * allocate dma-able memory in the device's internal sram
-+ *
-+ * The generic pool allocator's minimum chunk size is 32 bytes,
-+ * which is the cache line size on the PXA255, so we don't need
-+ * to do anything special for smaller requests.
-+ */
-+static inline void *tmio_dma_alloc (struct device *dev, size_t size,
-+ dma_addr_t *handle, gfp_t mem_flags)
-+{
-+ struct usb_hcd* hcd = dev_get_drvdata (dev);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+ void* virt = (void*) gen_pool_alloc (tmio->poolp, size);
-+
-+ return (*handle = tmio_virt_to_dma (hcd, virt)) == ~0 ? NULL : virt;
-+}
-+
-+static inline void tmio_dma_free (struct device *dev, size_t size,
-+ void *cpu_addr, dma_addr_t handle)
-+{
-+ struct usb_hcd* hcd = dev_get_drvdata (dev);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+ dma_addr_t dma = tmio_virt_to_dma (hcd, cpu_addr);
-+
-+ if (unlikely (dma == ~0)) {
-+ dev_err (dev, "trying to free bad address 0x%p\n", cpu_addr);
-+ return;
-+ }
-+
-+ if (unlikely (handle != dma))
-+ dev_err (dev, "dma address mismatch for 0x%p: %08x != %08x\n",
-+ cpu_addr, handle, dma);
-+
-+ gen_pool_free (tmio->poolp, (unsigned long) cpu_addr, size);
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static void *tmio_dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags,
-+ dma_addr_t *handle)
-+{
-+ struct tmio_dma_pool *tdp = (struct tmio_dma_pool*) pool;
-+ return tmio_dma_alloc (tdp->dev, tdp->size, handle, mem_flags);
-+}
-+
-+static void
-+tmio_dma_pool_free (struct dma_pool *pool, void *vaddr, dma_addr_t addr)
-+{
-+ struct tmio_dma_pool *tdp = (struct tmio_dma_pool*) pool;
-+ return tmio_dma_free (tdp->dev, tdp->size, vaddr, addr);
-+}
-+
-+static void *tmio_buffer_alloc (struct usb_bus *bus, size_t size,
-+ gfp_t mem_flags, dma_addr_t *dma)
-+{
-+ return tmio_dma_alloc (bus->controller, size, dma, mem_flags);
-+}
-+
-+static void tmio_buffer_free (struct usb_bus *bus, size_t size,
-+ void *addr, dma_addr_t dma)
-+{
-+ tmio_dma_free (bus->controller, size, addr, dma);
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static void tmio_hc_stop (struct usb_hcd *hcd)
-+{
-+ struct device* dev = hcd->self.controller;
-+ struct tmio_device* tdev = dev_to_tdev (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_hc_start (struct usb_hcd *hcd)
-+{
-+ struct device* dev = hcd->self.controller;
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+ struct tmio_uhccr __iomem* ccr = tmio->ccr;
-+ union tmio_uhccr_pm pm = {0};
-+
-+ 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(hcd->rsrc_start, &ccr->basel);
-+ iowrite16(hcd->rsrc_start >> 16, &ccr->baseh);
-+ iowrite8 (1, &ccr->ilme);
-+ iowrite8 (2, &ccr->intc);
-+
-+ consistent_sync (tmio->sram, tmio->sram_len, DMA_BIDIRECTIONAL);
-+
-+ dev_info (dev, "revision %d @ 0x%08llx, irq %d\n",
-+ ioread8 (&ccr->revid), hcd->rsrc_start, hcd->irq);
-+}
-+
-+static void tmio_stop (struct usb_hcd *hcd)
-+{
-+ struct ohci_hcd* ohci = hcd_to_ohci (hcd);
-+
-+ /* NULL these so ohci_stop() doesn't try to free them */
-+ ohci->hcca = NULL;
-+ ohci->td_cache = NULL;
-+ ohci->ed_cache = NULL;
-+
-+ ohci_stop (hcd);
-+ tmio_hc_stop (hcd);
-+ tmio_pool_destroy (hcd_to_tmio (hcd));
-+
-+ /* We don't free the hcca because tmio_hc_stop() turns off
-+ * the sram and the memory allocation data is destroyed. */
-+}
-+
-+static int tmio_start (struct usb_hcd *hcd)
-+{
-+ struct device* dev = hcd->self.controller;
-+ struct ohci_hcd* ohci = hcd_to_ohci (hcd);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+ int retval;
-+
-+ tmio_hc_start (hcd);
-+
-+ tmio->poolp = gen_pool_create(0, fls(tmio->sram_len) - 1,
-+ tmio_pool_callback, 0);
-+ if (!tmio->poolp) {
-+ retval = -ENOMEM;
-+ goto err_gen_pool_create;
-+ }
-+
-+ gen_pool_free (tmio->poolp, (unsigned long)(tmio->sram),
-+ tmio->sram_len);
-+
-+ ohci->hcca = tmio_dma_alloc (dev, sizeof *ohci->hcca,
-+ &ohci->hcca_dma, GFP_KERNEL);
-+ if (!ohci->hcca) {
-+ retval = -ENOMEM;
-+ goto err_hcca_alloc;
-+ }
-+
-+ /* for our dma_pool_alloc/free hooks */
-+ ohci->td_cache = (struct dma_pool*) &tmio->td_pool;
-+ ohci->ed_cache = (struct dma_pool*) &tmio->ed_pool;
-+
-+ if ((retval = ohci_init (ohci)) < 0)
-+ goto err_ohci_init;
-+
-+ if ((retval = ohci_run (ohci)) < 0)
-+ goto err_ohci_run;
-+
-+ return 0;
-+
-+err_ohci_run:
-+ err ("can't start %s", hcd->self.bus_name);
-+err_ohci_init:
-+err_hcca_alloc:
-+err_gen_pool_create:
-+ tmio_stop (hcd);
-+ return retval;
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static inline void *tmio_urb_dma_to_virt(struct urb *urb, dma_addr_t dma)
-+{
-+ if (BOUNDED_XYL(dma, urb->transfer_dma, urb->transfer_buffer_length))
-+ return urb->transfer_buffer + dma - urb->transfer_dma;
-+
-+ if (BOUNDED_XYL(dma, urb->setup_dma, sizeof (struct usb_ctrlrequest)))
-+ return urb->setup_packet + dma - urb->setup_dma;
-+
-+ return NULL;
-+}
-+
-+static struct tmio_td* tmio_td_find (struct td *td, int *index)
-+{
-+ struct urb* urb = td->urb;
-+ urb_priv_t* urb_priv = urb->hcpriv;
-+ struct tmio_urb* turb = urb_to_turb (urb);
-+ int i;
-+
-+ for (i=0; i < urb_priv->length; i++)
-+ if (urb_priv->td[i] == td) {
-+ *index = i;
-+ return turb->td + i;
-+ }
-+
-+ return NULL;
-+}
-+
-+/*
-+ * map the td's data to dma-able memory
-+ *
-+ * if this td transfers data,
-+ * sets tmtd->data to the urb's data buffer
-+ * sets tmtd->dma to dma-able memory
-+ * sets tmtd->bounce to non-NULL if a bounce buffer is allocated
-+ * copies the urb's data buffer to the bounce buffer if necessary
-+ */
-+static int tmio_td_dma_map (struct ohci_hcd *ohci, struct urb *urb,
-+ struct tmio_td *tmtd, int idx)
-+{
-+ struct usb_hcd* hcd = ohci_to_hcd (ohci);
-+ struct device* dev = hcd->self.controller;
-+ dma_addr_t dma;
-+
-+ if (!tmtd->len)
-+ return 0;
-+
-+ if (tmio_dma_to_virt (hcd, tmtd->dma))
-+ return 0;
-+
-+ tmtd->data = tmio_urb_dma_to_virt (urb, tmtd->dma);
-+ if (unlikely (!tmtd->data)) {
-+ dev_err (dev, "TD has bad dma address 0x%08x\n", tmtd->dma);
-+ return 0;
-+ }
-+
-+ tmtd->bounce = tmio_dma_alloc (dev, tmtd->len, &dma, GFP_ATOMIC);
-+ if (!tmtd->bounce)
-+ return -ENOMEM;
-+
-+ if ((usb_pipecontrol (urb->pipe) && !idx) || usb_pipeout (urb->pipe)) {
-+ consistent_sync (tmtd->bounce, tmtd->len, DMA_TO_DEVICE);
-+ memcpy (tmtd->bounce, tmtd->data, tmtd->len);
-+ } else
-+ consistent_sync (tmtd->bounce, tmtd->len, DMA_FROM_DEVICE);
-+
-+ tmtd->dma = dma;
-+ return 0;
-+}
-+
-+/*
-+ * unmaps the td's data from dma-able memory
-+ *
-+ * if a bounce buffer has been allocated,
-+ * copy the bounce buffer to the urb's data buffer if necessary
-+ * free the bounce buffer
-+ */
-+static void tmio_td_dma_unmap (struct ohci_hcd *ohci, struct td *td)
-+{
-+ struct device* dev = (ohci_to_hcd (ohci))->self.controller;
-+ struct urb* urb = td->urb;
-+ int idx;
-+ struct tmio_td* tmtd = tmio_td_find (td, &idx);
-+
-+ if (!tmtd->bounce)
-+ return;
-+
-+ if (usb_pipein (urb->pipe) && (usb_pipecontrol (urb->pipe) ? idx : 1)) {
-+ memcpy (tmtd->data, tmtd->bounce, tmtd->len);
-+ consistent_sync (tmtd->data, tmtd->len, DMA_TO_DEVICE);
-+ }
-+
-+ tmio_dma_free (dev, tmtd->len, tmtd->bounce, tmtd->dma);
-+}
-+
-+static int tmio_urb_runqueue (struct ohci_hcd *ohci, struct urb *urb)
-+{
-+ struct tmio_urb* turb = urb_to_turb (urb);
-+ urb_priv_t* urb_priv= urb->hcpriv;
-+ int start = turb->td_queue;
-+ int retval = 0;
-+ int i;
-+
-+ for (i = start; i < turb->td_add; i = ++turb->td_queue) {
-+ struct tmio_td *tmtd = turb->td + i;
-+
-+ if ((retval = tmio_td_dma_map (ohci, urb, tmtd, i)))
-+ break;
-+
-+ td_fill (ohci, tmtd->info, tmtd->dma, tmtd->len, urb, i);
-+ }
-+
-+ if (i <= start)
-+ return retval;
-+
-+ /* kickstart the appropriate list */
-+ wmb ();
-+ switch (urb_priv->ed->type) {
-+ case PIPE_BULK:
-+ ohci_writel (ohci, OHCI_BLF, &ohci->regs->cmdstatus);
-+ break;
-+ case PIPE_CONTROL:
-+ ohci_writel (ohci, OHCI_CLF, &ohci->regs->cmdstatus);
-+ break;
-+ }
-+
-+ return retval;
-+}
-+
-+/*
-+ * This needs to be called with ohci->lock held so the pending urb list
-+ * isn't modified.
-+ */
-+static int tmio_ohci_runqueue (struct ohci_hcd *ohci)
-+{
-+ urb_priv_t* priv;
-+ int retval = 0;
-+
-+ list_for_each_entry_reverse (priv, &ohci->pending, pending)
-+ if ((retval = tmio_urb_runqueue (ohci, priv->td[0]->urb)))
-+ return retval;
-+
-+ return retval;
-+}
-+
-+static void tmio_td_fill (struct ohci_hcd *ohci, u32 info,
-+ dma_addr_t data, int len, struct urb *urb, int index)
-+{
-+ struct tmio_urb* turb = urb_to_turb (urb);
-+ struct tmio_td* tmtd = turb->td + index;
-+
-+ tmtd->data = NULL;
-+ tmtd->bounce = NULL;
-+ tmtd->dma = data;
-+ tmtd->len = len;
-+ tmtd->info = info;
-+ turb->td_add = index + 1;
-+}
-+
-+static void
-+tmio_td_done (struct ohci_hcd *ohci, struct urb *urb, struct td *td)
-+{
-+ tmio_td_dma_unmap (ohci, td);
-+ td_done (ohci, urb, td);
-+}
-+
-+const static struct ohci_ops tmio_ops = {
-+ .dma_pool_alloc = tmio_dma_pool_alloc,
-+ .dma_pool_free = tmio_dma_pool_free,
-+ .td_fill = tmio_td_fill,
-+ .td_done = tmio_td_done,
-+};
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static irqreturn_t tmio_irq (struct usb_hcd *hcd, struct pt_regs *ptregs)
-+{
-+ irqreturn_t retval = ohci_irq (hcd, ptregs);
-+
-+ if (retval == IRQ_HANDLED) {
-+ struct ohci_hcd *ohci = hcd_to_ohci (hcd);
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&ohci->lock, flags);
-+ tmio_ohci_runqueue (ohci);
-+ spin_unlock_irqrestore (&ohci->lock, flags);
-+ }
-+
-+ return retval;
-+}
-+
-+/*
-+ * This is ohci_urb_enqueue with:
-+ * dma address sanitization for tmio_urb_dma_to_virt()
-+ * allocate extra space in urb_priv for our private data
-+ * initialize urb_priv->td[0]->urb for tmio_ohci_runqueue()
-+ * call tmio_ohci_runqueue() after submitting TDs
-+ */
-+static int tmio_urb_enqueue (
-+ struct usb_hcd *hcd,
-+ struct usb_host_endpoint *ep,
-+ struct urb *urb,
-+ gfp_t mem_flags
-+) {
-+ struct ohci_hcd *ohci = hcd_to_ohci (hcd);
-+ struct ed *ed;
-+ urb_priv_t *urb_priv;
-+ unsigned int pipe = urb->pipe;
-+ int i, size = 0;
-+ unsigned long flags;
-+ int retval = 0;
-+
-+#ifdef OHCI_VERBOSE_DEBUG
-+ urb_print (urb, "SUB", usb_pipein (pipe));
-+#endif
-+
-+ /* make sure we can convert dma offsets back to virtual addresses */
-+ if (!tmio_dma_to_virt (hcd, urb->setup_dma))
-+ urb->setup_dma = 0;
-+
-+ if (!tmio_dma_to_virt (hcd, urb->transfer_dma))
-+ urb->transfer_dma = sizeof (struct usb_ctrlrequest);
-+
-+ /* every endpoint has a ed, locate and maybe (re)initialize it */
-+ if (! (ed = ed_get (ohci, ep, urb->dev, pipe, urb->interval)))
-+ return -ENOMEM;
-+
-+ /* for the private part of the URB we need the number of TDs (size) */
-+ switch (ed->type) {
-+ case PIPE_CONTROL:
-+ /* td_submit_urb() doesn't yet handle these */
-+ if (urb->transfer_buffer_length > 4096)
-+ return -EMSGSIZE;
-+
-+ /* 1 TD for setup, 1 for ACK, plus ... */
-+ size = 2;
-+ /* FALLTHROUGH */
-+ // case PIPE_INTERRUPT:
-+ // case PIPE_BULK:
-+ default:
-+ /* one TD for every 4096 Bytes (can be upto 8K) */
-+ size += urb->transfer_buffer_length / 4096;
-+ /* ... and for any remaining bytes ... */
-+ if ((urb->transfer_buffer_length % 4096) != 0)
-+ size++;
-+ /* ... and maybe a zero length packet to wrap it up */
-+ if (size == 0)
-+ size++;
-+ else if ((urb->transfer_flags & URB_ZERO_PACKET) != 0
-+ && (urb->transfer_buffer_length
-+ % usb_maxpacket (urb->dev, pipe,
-+ usb_pipeout (pipe))) == 0)
-+ size++;
-+ break;
-+ case PIPE_ISOCHRONOUS: /* number of packets from URB */
-+ size = urb->number_of_packets;
-+ break;
-+ }
-+
-+ /* allocate the private part of the URB */
-+ urb_priv = kzalloc (sizeof (urb_priv_t)
-+ + size * sizeof (struct td*)
-+ + sizeof (struct tmio_urb)
-+ + size * sizeof (struct tmio_td),
-+ mem_flags);
-+ if (!urb_priv)
-+ return -ENOMEM;
-+ INIT_LIST_HEAD (&urb_priv->pending);
-+ urb_priv->length = size;
-+ urb_priv->ed = ed;
-+
-+ /* allocate the TDs (deferring hash chain updates) */
-+ for (i = 0; i < size; i++) {
-+ urb_priv->td [i] = td_alloc (ohci, mem_flags);
-+ if (!urb_priv->td [i]) {
-+ urb_priv->length = i;
-+ urb_free_priv (ohci, urb_priv);
-+ return -ENOMEM;
-+ }
-+ urb_priv->td [i]->urb = urb;
-+ }
-+
-+ spin_lock_irqsave (&ohci->lock, flags);
-+
-+ /* don't submit to a dead HC */
-+ if (!HC_IS_RUNNING(hcd->state)) {
-+ retval = -ENODEV;
-+ goto fail;
-+ }
-+
-+ /* in case of unlink-during-submit */
-+ spin_lock (&urb->lock);
-+ if (urb->status != -EINPROGRESS) {
-+ spin_unlock (&urb->lock);
-+ urb->hcpriv = urb_priv;
-+ finish_urb (ohci, urb, NULL);
-+ retval = 0;
-+ goto fail;
-+ }
-+
-+ /* schedule the ed if needed */
-+ if (ed->state == ED_IDLE) {
-+ retval = ed_schedule (ohci, ed);
-+ if (retval < 0)
-+ goto fail0;
-+ if (ed->type == PIPE_ISOCHRONOUS) {
-+ u16 frame = ohci_frame_no(ohci);
-+
-+ /* delay a few frames before the first TD */
-+ frame += max_t (u16, 8, ed->interval);
-+ frame &= ~(ed->interval - 1);
-+ frame |= ed->branch;
-+ urb->start_frame = frame;
-+
-+ /* yes, only URB_ISO_ASAP is supported, and
-+ * urb->start_frame is never used as input.
-+ */
-+ }
-+ } else if (ed->type == PIPE_ISOCHRONOUS)
-+ urb->start_frame = ed->last_iso + ed->interval;
-+
-+ /* fill the TDs and link them to the ed; and
-+ * enable that part of the schedule, if needed
-+ * and update count of queued periodic urbs
-+ */
-+ urb->hcpriv = urb_priv;
-+ td_submit_urb (ohci, urb);
-+ tmio_ohci_runqueue (ohci);
-+
-+fail0:
-+ spin_unlock (&urb->lock);
-+fail:
-+ if (retval)
-+ urb_free_priv (ohci, urb_priv);
-+ spin_unlock_irqrestore (&ohci->lock, flags);
-+ return retval;
-+}
-+
-+static const struct hc_driver 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 = tmio_irq,
-+ .flags = HCD_USB11 | HCD_MEMORY,
-+
-+ /* basic lifecycle operations */
-+ .start = tmio_start,
-+ .stop = tmio_stop,
-+
-+ /* managing i/o requests and associated device resources */
-+ .urb_enqueue = tmio_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,
-+#ifdef CONFIG_PM
-+ .bus_suspend = ohci_bus_suspend,
-+ .bus_resume = ohci_bus_resume,
-+#endif
-+ .start_port_reset = ohci_start_port_reset,
-+};
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/* configure so an HC device and id are always provided */
-+/* always called with process context; sleeping is OK */
-+
-+/**
-+ * tmio_probe - initialize TMIO-based HCDs
-+ * Context: !in_interrupt()
-+ *
-+ * Allocates basic resources for this USB host controller, and
-+ * then invokes the start() method for the HCD associated with it
-+ * through the hotplug entry's driver_data.
-+ */
-+static int tmio_probe (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 usb_operations* ops;
-+ struct tmio_hcd* tmio;
-+ struct ohci_hcd* ohci;
-+ struct usb_hcd* hcd;
-+ int retval;
-+
-+ if (usb_disabled ())
-+ return -ENODEV;
-+
-+ if (dev->dma_mask || dev->coherent_dma_mask) {
-+ dev_err (dev, "DMA not supported\n");
-+ return -ENODEV;
-+ }
-+
-+ hcd = usb_create_hcd (&tmio_hc_driver, dev, dev->bus_id);
-+ if (!hcd) {
-+ retval = -ENOMEM;
-+ goto err_create_hcd;
-+ }
-+
-+ tmio = hcd_to_tmio (hcd);
-+ tmio->td_pool.dev = dev;
-+ tmio->ed_pool.dev = dev;
-+ tmio->td_pool.size = sizeof (struct td);
-+ tmio->ed_pool.size = sizeof (struct ed);
-+ ohci = hcd_to_ohci (hcd);
-+ ohci_hcd_init (ohci);
-+ ohci->ops = &tmio_ops;
-+
-+ 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->sram_len = sram->end - sram->start + 1;
-+
-+ 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;
-+ }
-+
-+ tmio->sram = ioremap (sram->start, tmio->sram_len);
-+ if (!tmio->sram) {
-+ retval = -ENOMEM;
-+ goto err_ioremap_sram;
-+ }
-+
-+ /* drivers should use our coherent buffer allocator */
-+ ops = &tmio->ops;
-+ memcpy (ops, hcd->self.op, sizeof *ops);
-+ ops->buffer_alloc = tmio_buffer_alloc;
-+ ops->buffer_free = tmio_buffer_free;
-+ hcd->self.op = ops;
-+
-+ retval = usb_add_hcd (hcd, irq->start, SA_INTERRUPT);
-+ if (retval)
-+ goto err_usb_add_hcd;
-+
-+ return 0;
-+
-+err_usb_add_hcd:
-+ iounmap (tmio->sram);
-+err_ioremap_sram:
-+ 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_create_hcd:
-+ return retval;
-+}
-+
-+/* may be called without controller electrically present */
-+/* may be called with controller, bus, and devices active */
-+
-+/**
-+ * tmio_remove - shutdown processing for TMIO-based HCDs
-+ * @dev: USB Host Controller being removed
-+ * Context: !in_interrupt()
-+ *
-+ * Reverses the effect of tmio_probe(), first invoking
-+ * the HCD's stop() method. It is always called from a thread
-+ * context, normally "rmmod", "apmd", or something similar.
-+ */
-+static int tmio_remove (struct device *dev)
-+{
-+ struct usb_hcd* hcd = dev_get_drvdata (dev);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+
-+ usb_remove_hcd (hcd);
-+ iounmap (tmio->sram);
-+ 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);
-+ return 0;
-+}
-+
-+static struct device_driver tmio_ohci = {
-+ .name = TMIO_NAME_OHCI,
-+ .bus = &tmio_bus_type,
-+ .probe = tmio_probe,
-+ .remove = tmio_remove,
-+};
-+
-+static int __init tmio_init (void)
-+{
-+ dbg (DRIVER_INFO " (%s)", TMIO_SOC_NAME);
-+ dbg ("block sizes: ed %d td %d",
-+ sizeof (struct ed), sizeof (struct td));
-+
-+ return driver_register (&tmio_ohci);
-+}
-+
-+static void __exit tmio_exit (void)
-+{
-+ driver_unregister (&tmio_ohci);
-+}
-+
-+module_init (tmio_init);
-+module_exit (tmio_exit);
-Index: linux-2.6.18/drivers/usb/host/Kconfig
-===================================================================
---- linux-2.6.18.orig/drivers/usb/host/Kconfig 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18/drivers/usb/host/Kconfig 2006-09-20 16:18:08.000000000 +0200
-@@ -83,6 +83,7 @@
- tristate "OHCI HCD support"
- depends on USB && USB_ARCH_HAS_OHCI
- select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3
-+ 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.18/drivers/usb/host/ohci-hcd.c
-===================================================================
---- linux-2.6.18.orig/drivers/usb/host/ohci-hcd.c 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18/drivers/usb/host/ohci-hcd.c 2006-09-20 16:18:54.000000000 +0200
-@@ -923,6 +923,7 @@
- || defined(CONFIG_ARCH_OMAP) \
- || defined (CONFIG_ARCH_LH7A404) \
- || defined (CONFIG_PXA27x) \
-+ || defined (CONFIG_TOSHIBA_TC6393XB) \
- || defined (CONFIG_ARCH_EP93XX) \
- || defined (CONFIG_SOC_AU1X00) \
- || defined (CONFIG_USB_OHCI_HCD_PPC_SOC) \
diff --git a/packages/linux/linux-rp-2.6.18/tmio-tc6393-r7.patch b/packages/linux/linux-rp-2.6.18/tmio-tc6393-r7.patch
deleted file mode 100644
index 844e3757a1..0000000000
--- a/packages/linux/linux-rp-2.6.18/tmio-tc6393-r7.patch
+++ /dev/null
@@ -1,793 +0,0 @@
-Index: linux-2.6.18/arch/arm/common/tc6393xb.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.18/arch/arm/common/tc6393xb.c 2006-09-20 16:17:02.000000000 +0200
-@@ -0,0 +1,669 @@
-+/*
-+ * Toshiba TC6393XB SoC support
-+ *
-+ * Maintainer: Chris Humbert <mahadri-kernel@drigon.com>
-+ *
-+ * Copyright (c) 2005-2006 Chris Humbert
-+ * Copyright (c) 2005 Dirk Opfer
-+ *
-+ * Based on code written by Sharp/Lineo for 2.4 kernels
-+ * Based on locomo.c
-+ *
-+ * 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/config.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/delay.h>
-+#include <linux/errno.h>
-+#include <linux/ioport.h>
-+#include <linux/device.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+#include <linux/spinlock.h>
-+#include <linux/fb.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/mach-types.h>
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+#include <asm/mach/irq.h>
-+#include <asm/arch/irqs.h>
-+#include <asm/hardware/tmio.h>
-+
-+#ifndef TMIO_SOC_TC6393XB
-+#error "TC6393XB SoC not configured"
-+#endif
-+
-+/*--------------------------------------------------------------------------*/
-+
-+/* cell ids must be 0-based because they are used as array indexes. */
-+#define TC6393_CELL_NAND 0
-+#define TC6393_CELL_SD 1
-+#define TC6393_CELL_OHCI 2
-+#define TC6393_CELL_SERIAL 3
-+#define TC6393_CELL_LCD 4
-+#define TC6393_NUM_CELLS 5
-+
-+#define TC6393_RESOURCE(_name, _start, _end, _flags) \
-+ { \
-+ .name = _name, \
-+ .start = _start, \
-+ .end = _end, \
-+ .flags = _flags, \
-+ }
-+
-+#define TC6393_MEM(name, start, size) \
-+ TC6393_RESOURCE(name, start, (start) + (size) - 1, IORESOURCE_MEM)
-+
-+#define TC6393_IRQ(name, irq) \
-+ TC6393_RESOURCE(name, irq, irq, IORESOURCE_IRQ)
-+
-+const static struct resource tc6393_NAND_resource[] = {
-+ TC6393_MEM (TMIO_NAME_NAND, 0x000100, 0x100),
-+ TC6393_MEM (TMIO_NAME_NAND, 0x001000, 0x008),
-+ TC6393_MEM (TMIO_NAME_NAND, 0, 0),
-+ TC6393_IRQ (TMIO_NAME_NAND, IRQ_TC6393_NAND),
-+};
-+
-+const static struct resource tc6393_SD_resource[] = {
-+ TC6393_MEM (TMIO_NAME_SD, 0x000200, 0x100),
-+ TC6393_MEM (TMIO_NAME_SD, 0x002000, 0x200),
-+ TC6393_MEM (TMIO_NAME_SD, 0, 0),
-+ TC6393_IRQ (TMIO_NAME_SD, IRQ_TC6393_SD),
-+};
-+
-+const static struct resource tc6393_OHCI_resource[] = {
-+ TC6393_MEM (TMIO_NAME_OHCI, 0x000300, 0x100),
-+ TC6393_MEM (TMIO_NAME_OHCI, 0x003000, 0x100),
-+ TC6393_MEM (TMIO_NAME_OHCI, 0x010000, 32 * 1024),
-+ TC6393_IRQ (TMIO_NAME_OHCI, IRQ_TC6393_OHCI),
-+};
-+
-+const static struct resource tc6393_SERIAL_resource[] = {
-+ TC6393_MEM (TMIO_NAME_SERIAL, 0x000400, 0x100),
-+ TC6393_MEM (TMIO_NAME_SERIAL, 0x004000, 0x100),
-+ TC6393_MEM (TMIO_NAME_SERIAL, 0, 0),
-+ TC6393_IRQ (TMIO_NAME_SERIAL, IRQ_TC6393_SERIAL),
-+};
-+
-+const static struct resource tc6393_LCD_resource[] = {
-+ TC6393_MEM (TMIO_NAME_LCD, 0x000500, 0x100),
-+ TC6393_MEM (TMIO_NAME_LCD, 0x005000, 0x200),
-+ TC6393_MEM (TMIO_NAME_LCD, 0x100000, 1024 * 1024),
-+ TC6393_IRQ (TMIO_NAME_LCD, IRQ_TC6393_LCD),
-+};
-+
-+#define TC6393_CELL(_NAME) \
-+ [TC6393_CELL_##_NAME] = { \
-+ .name = TMIO_NAME_##_NAME, \
-+ .id = TC6393_CELL_##_NAME, \
-+ .resource = tc6393_##_NAME##_resource, \
-+ .num_resources = ARRAY_SIZE (tc6393_##_NAME##_resource), \
-+ }
-+
-+struct tc6393_cell {
-+ const char* name;
-+ unsigned int id;
-+ const struct resource* resource;
-+ unsigned int num_resources;
-+};
-+
-+const static struct tc6393_cell tc6393_cell [TC6393_NUM_CELLS] = {
-+ TC6393_CELL (NAND ),
-+ TC6393_CELL (SD ),
-+ TC6393_CELL (OHCI ),
-+ TC6393_CELL (SERIAL ),
-+ TC6393_CELL (LCD ),
-+};
-+
-+/*--------------------------------------------------------------------------*/
-+
-+/*
-+ * TC6393 System Configuration Register
-+ */
-+struct tc6393_scr {
-+ u8 x00[8];
-+ u8 revid; /* 0x08 Revision ID */
-+ u8 x01[0x47];
-+ u8 isr; /* 0x50 Interrupt Status */
-+ u8 x02;
-+ u8 imr; /* 0x52 Interrupt Mask */
-+ u8 x03;
-+ u8 irr; /* 0x54 Interrupt Routing */
-+ u8 x04[0x0b];
-+ u16 gper; /* 0x60 GP Enable */
-+ u8 x05[2];
-+ u16 gpi_sr[2]; /* 0x64 GPI Status */
-+ u16 gpi_imr[2]; /* 0x68 GPI INT Mask */
-+ u16 gpi_eder[2]; /* 0x6c GPI Edge Detect Enable */
-+ u16 gpi_lir[4]; /* 0x70 GPI Level Invert */
-+ u16 gpo_dsr[2]; /* 0x78 GPO Data Set */
-+ u16 gpo_doecr[2]; /* 0x7c GPO Data OE Control */
-+ u16 gp_iarcr[2]; /* 0x80 GP Internal Active Reg Control */
-+ u16 gp_iarlcr[2]; /* 0x84 GP Internal Active Reg Level Con*/
-+ u8 gpi_bcr[4]; /* 0x88 GPI Buffer Control */
-+ u16 gpa_iarcr; /* 0x8c GPa Internal Active Reg Control */
-+ u8 x06[2];
-+ u16 gpa_iarlcr; /* 0x90 GPa Internal Active Reg Level Co*/
-+ u8 x07[2];
-+ u16 gpa_bcr; /* 0x94 GPa Buffer Control */
-+ u8 x08[2];
-+ u16 ccr; /* 0x98 Clock Control */
-+ u16 pll2cr; /* 0x9a PLL2 Control */
-+ u16 pll1cr[2]; /* 0x9c PLL1 Control */
-+ u8 diarcr; /* 0xa0 Device Internal Active Reg Contr*/
-+ u8 dbocr; /* 0xa1 Device Buffer Off Control */
-+ u8 x09[0x3e];
-+ u8 fer; /* 0xe0 Function Enable */
-+ u8 x10[3];
-+ u16 mcr; /* 0xe4 Mode Control */
-+ u8 x11[0x14];
-+ u8 config; /* 0xfc Configuration Control */
-+ u8 x12[2];
-+ u8 debug; /* 0xff Debug */
-+} __attribute__ ((packed));
-+
-+union tc6393_scr_fer {
-+ u8 raw;
-+struct {
-+ unsigned usben:1; /* D0 USB enable */
-+ unsigned lcdcven:1; /* D1 polysylicon TFT enable */
-+ unsigned slcden:1; /* D2 SLCD enable */
-+} __attribute__ ((packed));
-+} __attribute__ ((packed));
-+
-+union tc6393_scr_ccr {
-+ u16 raw;
-+struct {
-+ unsigned ck32ken:1; /* D0 SD host clock enable */
-+ unsigned usbcken:1; /* D1 USB host clock enable */
-+ unsigned x00:2;
-+ unsigned sharp:1; /* D4 ??? set in Sharp's code */
-+ unsigned x01:3;
-+ enum { disable = 0,
-+ m12MHz = 1,
-+ m24MHz = 2,
-+ m48MHz = 3,
-+ } mclksel:3; /* D10-D8 LCD controller clock */
-+ unsigned x02:1;
-+ enum { h24MHz = 0,
-+ h48MHz = 1,
-+ } hclksel:2; /* D13-D12 host bus clock */
-+ unsigned x03:2;
-+} __attribute__ ((packed));
-+} __attribute__ ((packed));
-+
-+/*--------------------------------------------------------------------------*/
-+
-+struct tc6393 {
-+ spinlock_t lock; /* read-modify-write lock */
-+ struct device* dev; /* TC6393 device */
-+ struct tc6393_scr __iomem *scr; /* system configuration reg */
-+
-+ struct resource rscr; /* system config reg resource */
-+ struct resource* iomem; /* entire TC6393 iomem resource */
-+ unsigned int irq; /* hardware cascade irq */
-+
-+ struct tmio_device tdev [TC6393_NUM_CELLS];
-+};
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static u32 tc6393_ioread32 (const void __iomem *addr)
-+{
-+ return ((u32) ioread16 (addr)) | (((u32) ioread16 (addr + 2)) << 16);
-+}
-+
-+static u32 tc6393_iowrite32 (u32 val, const void __iomem *addr)
-+{
-+ iowrite16 (val, addr);
-+ iowrite16 (val >> 16, addr + 2);
-+ return val;
-+}
-+
-+u32 get_tc6393_gpio (struct device *dev)
-+{
-+ struct tc6393* tc6393 = dev_get_drvdata (dev);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+
-+ return tc6393_ioread32 (scr->gpo_dsr);
-+}
-+EXPORT_SYMBOL (get_tc6393_gpio);
-+
-+u32 set_tc6393_gpio (struct device *dev, u32 bits)
-+{
-+ struct tc6393* tc6393 = dev_get_drvdata (dev);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ unsigned long flags;
-+ u32 dsr;
-+
-+ spin_lock_irqsave (&tc6393->lock, flags);
-+ dsr = tc6393_ioread32 (scr->gpo_dsr) | bits;
-+ tc6393_iowrite32 (dsr, scr->gpo_dsr);
-+ spin_unlock_irqrestore (&tc6393->lock, flags);
-+
-+ return dsr;
-+}
-+EXPORT_SYMBOL (set_tc6393_gpio);
-+
-+u32 reset_tc6393_gpio (struct device *dev, u32 bits)
-+{
-+ struct tc6393* tc6393 = dev_get_drvdata (dev);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ unsigned long flags;
-+ u32 dsr;
-+
-+ spin_lock_irqsave (&tc6393->lock, flags);
-+ dsr = tc6393_ioread32 (scr->gpo_dsr) & ~bits;
-+ tc6393_iowrite32 (dsr, scr->gpo_dsr);
-+ spin_unlock_irqrestore (&tc6393->lock, flags);
-+
-+ return dsr;
-+}
-+EXPORT_SYMBOL (reset_tc6393_gpio);
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static void
-+tc6393_irq (unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
-+{
-+ struct tc6393* tc6393 = get_irq_chipdata (irq);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ unsigned int isr;
-+ unsigned int bit;
-+ unsigned int i;
-+
-+ desc->chip->ack (irq);
-+
-+ while ((isr = ioread8(&scr->isr) & ~ioread8(&scr->imr)))
-+ for (bit = 1, i = IRQ_TC6393_START; i <= IRQ_TC6393_LCD;
-+ bit <<= 1, i++)
-+ if (isr & bit)
-+ desc_handle_irq (i, irq_desc + i, regs);
-+}
-+
-+static void tc6393_irq_ack (unsigned int irq)
-+{
-+}
-+
-+static void tc6393_irq_mask (unsigned int irq)
-+{
-+ struct tc6393* tc6393 = get_irq_chipdata (irq);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave (&tc6393->lock, flags);
-+ iowrite8 (ioread8 (&scr->imr) | (1 << (irq - IRQ_TC6393_START)),
-+ &scr->imr);
-+ spin_unlock_irqrestore (&tc6393->lock, flags);
-+}
-+
-+static void tc6393_irq_unmask (unsigned int irq)
-+{
-+ struct tc6393* tc6393 = get_irq_chipdata (irq);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave (&tc6393->lock, flags);
-+ iowrite8 (ioread8 (&scr->imr) & ~(1 << (irq - IRQ_TC6393_START)),
-+ &scr->imr);
-+ spin_unlock_irqrestore (&tc6393->lock, flags);
-+}
-+
-+static struct irqchip tc6393_chip = {
-+ .ack = tc6393_irq_ack,
-+ .mask = tc6393_irq_mask,
-+ .unmask = tc6393_irq_unmask,
-+};
-+
-+static void tc6393_attach_irq (struct tc6393 *tc6393)
-+{
-+ unsigned int irq;
-+
-+ for (irq = IRQ_TC6393_START; irq <= IRQ_TC6393_LCD; irq++) {
-+ set_irq_chip (irq, &tc6393_chip);
-+ set_irq_chipdata(irq, tc6393);
-+ set_irq_handler (irq, do_edge_IRQ);
-+ set_irq_flags (irq, IRQF_VALID | IRQF_PROBE);
-+ }
-+
-+ set_irq_type (tc6393->irq, IRQT_FALLING);
-+ set_irq_chipdata (tc6393->irq, tc6393);
-+ set_irq_chained_handler (tc6393->irq, tc6393_irq);
-+}
-+
-+static void tc6393_detach_irq (struct tc6393 *tc6393)
-+{
-+ unsigned int irq;
-+
-+ set_irq_chained_handler (tc6393->irq, NULL);
-+ set_irq_chipdata (tc6393->irq, NULL);
-+
-+ for (irq = IRQ_TC6393_START; irq <= IRQ_TC6393_LCD; irq++) {
-+ set_irq_flags (irq, 0);
-+ set_irq_chip (irq, NULL);
-+ set_irq_chipdata(irq, NULL);
-+ }
-+}
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static int tc6393_bus_match (struct device *dev, struct device_driver *drv)
-+{
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ const struct tc6393_cell* cell = tdev->soc_data;
-+
-+ return !strcmp (cell->name, drv->name);
-+}
-+
-+static int tc6393_bus_suspend (struct device *dev, pm_message_t state)
-+{
-+ struct device_driver* drv = dev->driver;
-+ return drv && drv->suspend ? drv->suspend (dev, state) : 0;
-+}
-+
-+static int tc6393_bus_resume (struct device *dev)
-+{
-+ struct device_driver* drv = dev->driver;
-+ return drv && drv->resume ? drv->resume (dev) : 0;
-+}
-+
-+struct bus_type tc6393_bus_type = {
-+ .name = TMIO_NAME_BUS,
-+ .match = tc6393_bus_match,
-+ .suspend = tc6393_bus_suspend,
-+ .resume = tc6393_bus_resume,
-+};
-+EXPORT_SYMBOL (tc6393_bus_type);
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static void tc6393_cell_clock (struct device *dev, int enable)
-+{
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ const struct tc6393_cell* cell = tdev->soc_data;
-+ struct tc6393* tc6393 = dev_get_drvdata (dev->parent);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ union tc6393_scr_ccr ccr;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave (&tc6393->lock, flags);
-+ ccr.raw = ioread16 (&scr->ccr);
-+
-+ switch (cell->id) {
-+ case TC6393_CELL_SD: ccr.ck32ken = enable; break;
-+ case TC6393_CELL_OHCI: ccr.usbcken = enable; break;
-+ case TC6393_CELL_LCD:
-+ ccr.mclksel = enable ? m48MHz : disable;
-+ break;
-+ }
-+
-+ printk (KERN_DEBUG TMIO_NAME_CORE ": scr->ccr = %04x\n", ccr.raw);
-+
-+ iowrite16(ccr.raw, &scr->ccr);
-+ spin_unlock_irqrestore (&tc6393->lock, flags);
-+}
-+
-+static void tc6393_cell_function (struct device *dev, int enable)
-+{
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ const struct tc6393_cell* cell = tdev->soc_data;
-+ struct tc6393* tc6393 = dev_get_drvdata (dev->parent);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ union tc6393_scr_fer fer;
-+ unsigned long flags;
-+
-+ if (cell->id == TC6393_CELL_NAND) {
-+ if (enable) {
-+ /* SMD buffer on */
-+ printk (KERN_DEBUG TMIO_NAME_CORE ": SMD buffer on\n");
-+ iowrite8 (0xff, scr->gpi_bcr + 1);
-+ }
-+ return;
-+ }
-+
-+ spin_lock_irqsave (&tc6393->lock, flags);
-+ fer.raw = ioread16 (&scr->fer);
-+
-+ switch (cell->id) {
-+ case TC6393_CELL_OHCI: fer.usben = enable; break;
-+ case TC6393_CELL_LCD: fer.slcden = enable; break;
-+ }
-+
-+ printk (KERN_DEBUG TMIO_NAME_CORE ": scr->fer = %02x\n", fer.raw);
-+
-+ iowrite8 (fer.raw, &scr->fer);
-+ spin_unlock_irqrestore (&tc6393->lock, flags);
-+}
-+
-+static void
-+tc6393_lcd_mode (struct device *dev, const struct fb_videomode *mode)
-+{
-+ struct tc6393* tc6393 = dev_get_drvdata (dev->parent);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+
-+ iowrite16 (mode->pixclock, scr->pll1cr + 0);
-+ iowrite16 (mode->pixclock >> 16, scr->pll1cr + 1);
-+}
-+
-+static struct tmio_cell_ops tc6393_cell_ops = {
-+ .clock = tc6393_cell_clock,
-+ .function = tc6393_cell_function,
-+ .lcd_mode = tc6393_lcd_mode,
-+};
-+
-+static void tc6393_device_release (struct device *dev)
-+{
-+}
-+
-+static int
-+tc6393_device_register (struct tc6393 *tc6393, struct tmio_cell *tcell)
-+{
-+ const struct tc6393_cell* cell;
-+ struct tmio_device* tdev;
-+ struct device* dev;
-+ int i;
-+
-+ for (i = 0; strcmp (tcell->name, tc6393_cell [i].name); )
-+ if (++i >= ARRAY_SIZE(tc6393_cell))
-+ return -EINVAL;
-+
-+ cell = tc6393_cell + i;
-+ tdev = tc6393->tdev + i;
-+ dev = &tdev->dev;
-+
-+ tdev->ops = &tc6393_cell_ops;
-+ tdev->iomem = tc6393->iomem;
-+ tdev->soc_data = (void*) cell;
-+
-+ dev->parent = tc6393->dev;
-+ strncpy (dev->bus_id, cell->name, sizeof dev->bus_id);
-+ dev->bus = &tc6393_bus_type;
-+ dev->dma_mask = tc6393->dev->dma_mask;
-+ dev->coherent_dma_mask = tc6393->dev->coherent_dma_mask;
-+ dev->release = tc6393_device_release;
-+ dev->platform_data = tcell->platform_data;
-+
-+ for (i=0; i < cell->num_resources; i++) {
-+ const struct resource* cr = cell->resource + i;
-+ struct resource* dr = tdev->resource + i;
-+
-+ dr->name = cr->name;
-+ dr->start = cr->start;
-+ dr->end = cr->end;
-+ dr->flags = cr->flags;
-+
-+ /* convert memory offsets to absolutes */
-+ if (cr->flags & IORESOURCE_MEM) {
-+ dr->start += tc6393->iomem->start;
-+ dr->end += tc6393->iomem->start;
-+ }
-+ }
-+
-+ return device_register (dev);
-+}
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static void tc6393_hw_init (struct tc6393 *tc6393)
-+{
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ struct tc6393_platform_data* tcpd = tc6393->dev->platform_data;
-+
-+ tcpd->enable (tc6393->dev);
-+
-+ iowrite8 (0, &scr->fer);
-+ iowrite16(tcpd->scr_pll2cr, &scr->pll2cr);
-+ iowrite16(tcpd->scr_ccr, &scr->ccr);
-+ iowrite16(tcpd->scr_mcr, &scr->mcr);
-+ iowrite16(tcpd->scr_gper, &scr->gper);
-+ iowrite8 (0, &scr->irr);
-+ iowrite8 (0xbf, &scr->imr);
-+ iowrite16(tcpd->scr_gpo_dsr, scr->gpo_dsr + 0);
-+ iowrite16(tcpd->scr_gpo_dsr >> 16, scr->gpo_dsr + 1);
-+ iowrite16(tcpd->scr_gpo_doecr, scr->gpo_doecr + 0);
-+ iowrite16(tcpd->scr_gpo_doecr >> 16, scr->gpo_doecr + 1);
-+}
-+
-+static int tc6393_probe (struct device *dev)
-+{
-+ struct platform_device* pdev = to_platform_device (dev);
-+ struct tc6393_platform_data* tcpd = dev->platform_data;
-+ struct tc6393* tc6393;
-+ struct resource* iomem;
-+ struct resource* rscr;
-+ int retval;
-+ int i;
-+
-+ iomem = platform_get_resource (pdev, IORESOURCE_MEM, 0);
-+ if (!iomem)
-+ return -EINVAL;
-+
-+ tc6393 = kzalloc (sizeof *tc6393, GFP_KERNEL);
-+ if (!tc6393) {
-+ retval = -ENOMEM;
-+ goto err_kzalloc;
-+ }
-+
-+ dev_set_drvdata (dev, tc6393);
-+ spin_lock_init (&tc6393->lock);
-+ tc6393->dev = dev;
-+ tc6393->iomem = iomem;
-+ tc6393->irq = platform_get_irq (pdev, 0);
-+
-+ rscr = &tc6393->rscr;
-+ rscr->name = TMIO_NAME_CORE;
-+ rscr->start = iomem->start;
-+ rscr->end = iomem->start + 0xff;
-+ rscr->flags = IORESOURCE_MEM;
-+
-+ retval = request_resource (iomem, rscr);
-+ if (retval)
-+ goto err_request_scr;
-+
-+ tc6393->scr = ioremap (rscr->start, rscr->end - rscr->start + 1);
-+ if (!tc6393->scr) {
-+ retval = -ENOMEM;
-+ goto err_ioremap;
-+ }
-+
-+ tc6393_hw_init (tc6393);
-+
-+ printk (KERN_INFO "Toshiba %s revision %d at 0x%08lx, irq %d\n",
-+ TMIO_SOC_NAME, ioread8 (&tc6393->scr->revid),
-+ iomem->start, tc6393->irq);
-+
-+ if (tc6393->irq)
-+ tc6393_attach_irq (tc6393);
-+
-+ for (i = 0; i < tcpd->num_cells; i++)
-+ tc6393_device_register (tc6393, tcpd->cell + i);
-+
-+ return 0;
-+
-+err_ioremap:
-+ release_resource (rscr);
-+err_request_scr:
-+ kfree(tc6393);
-+err_kzalloc:
-+ release_resource (iomem);
-+ return retval;
-+}
-+
-+static int tc6393_dev_remove (struct device *dev, void *data)
-+{
-+ device_unregister (dev);
-+ return 0;
-+}
-+
-+static int tc6393_remove (struct device *dev)
-+{
-+ struct tc6393* tc6393 = dev_get_drvdata (dev);
-+
-+ device_for_each_child (dev, tc6393, tc6393_dev_remove);
-+
-+ if (tc6393->irq)
-+ tc6393_detach_irq (tc6393);
-+
-+ iounmap (tc6393->scr);
-+ release_resource (&tc6393->rscr);
-+ release_resource (tc6393->iomem);
-+ kfree (tc6393);
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+static int tc6393_suspend (struct device *dev, pm_message_t state)
-+{
-+ struct tc6393_platform_data* tcpd = dev->platform_data;
-+ tcpd->disable (dev);
-+ return 0;
-+}
-+
-+static int tc6393_resume (struct device *dev)
-+{
-+ struct tc6393* tc6393 = dev_get_drvdata (dev);
-+ tc6393_hw_init (tc6393);
-+ return 0;
-+}
-+#endif
-+
-+static struct device_driver tc6393_device_driver = {
-+ .name = TMIO_SOC_NAME,
-+ .bus = &platform_bus_type,
-+ .probe = tc6393_probe,
-+ .remove = tc6393_remove,
-+#ifdef CONFIG_PM
-+ .suspend = tc6393_suspend,
-+ .resume = tc6393_resume,
-+#endif
-+};
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static int __init tc6393_init (void)
-+{
-+ int retval = bus_register (&tc6393_bus_type);
-+ if (retval)
-+ return retval;
-+
-+ return driver_register (&tc6393_device_driver);
-+}
-+
-+static void __exit tc6393_exit (void)
-+{
-+ driver_unregister (&tc6393_device_driver);
-+ bus_unregister (&tc6393_bus_type);
-+}
-+
-+module_init (tc6393_init);
-+module_exit (tc6393_exit);
-+
-+MODULE_DESCRIPTION ("TC6393 SoC bus driver");
-+MODULE_AUTHOR ("Chris Humbert, Dirk Opfer");
-+MODULE_LICENSE ("GPL");
-Index: linux-2.6.18/arch/arm/common/Kconfig
-===================================================================
---- linux-2.6.18.orig/arch/arm/common/Kconfig 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18/arch/arm/common/Kconfig 2006-09-20 16:17:02.000000000 +0200
-@@ -31,3 +31,6 @@
-
- config SHARP_SCOOP
- bool
-+
-+config TOSHIBA_TC6393XB
-+ bool
-Index: linux-2.6.18/arch/arm/mach-pxa/Kconfig
-===================================================================
---- linux-2.6.18.orig/arch/arm/mach-pxa/Kconfig 2006-09-20 16:16:58.000000000 +0200
-+++ linux-2.6.18/arch/arm/mach-pxa/Kconfig 2006-09-20 16:17:02.000000000 +0200
-@@ -128,6 +128,7 @@
- config MACH_TOSA
- bool "Enable Sharp SL-6000x (Tosa) Support"
- depends PXA_SHARPSL_25x
-+ select TOSHIBA_TC6393XB
-
- config PXA25x
- bool
-Index: linux-2.6.18/arch/arm/common/Makefile
-===================================================================
---- linux-2.6.18.orig/arch/arm/common/Makefile 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18/arch/arm/common/Makefile 2006-09-20 16:17:35.000000000 +0200
-@@ -17,3 +17,4 @@
- obj-$(CONFIG_SHARP_SCOOP) += scoop.o
- obj-$(CONFIG_ARCH_IXP2000) += uengine.o
- obj-$(CONFIG_ARCH_IXP23XX) += uengine.o
-+obj-$(CONFIG_TOSHIBA_TC6393XB) += tc6393xb.o
-Index: linux-2.6.18/include/asm-arm/hardware/tmio.h
-===================================================================
---- linux-2.6.18.orig/include/asm-arm/hardware/tmio.h 2006-09-20 16:17:02.000000000 +0200
-+++ linux-2.6.18/include/asm-arm/hardware/tmio.h 2006-09-20 16:17:02.000000000 +0200
-@@ -91,6 +91,50 @@
-
- /*--------------------------------------------------------------------------*/
-
-+/*
-+ * TC6393XB SoC
-+ */
-+#ifdef CONFIG_TOSHIBA_TC6393XB
-+#define TMIO_SOC_TC6393XB
-+#define TMIO_SOC_NAME "TC6393XB"
-+#define TMIO_NAME_BUS "tc6393-bus"
-+#define TMIO_NAME_CORE "tc6393-core"
-+#define TMIO_NAME_NAND "tc6393-nand"
-+#define TMIO_NAME_SD "tc6393-sd"
-+#define TMIO_NAME_OHCI "tc6393-ohci"
-+#define TMIO_NAME_SERIAL "tc6393-serial"
-+#define TMIO_NAME_LCD "tc6393-lcd"
-+#define tmio_bus_type tc6393_bus_type
-+
-+#define TC6393_GPIO(x) (1 << (x))
-+
-+extern struct bus_type tc6393_bus_type;
-+
-+struct tc6393_platform_data {
-+ u16 scr_pll2cr; /* PLL2 Control */
-+ u16 scr_ccr; /* Clock Control */
-+ u16 scr_mcr; /* Mode Control */
-+ u16 scr_gper; /* GP Enable */
-+ u32 scr_gpo_doecr; /* GPO Data OE Control */
-+ u32 scr_gpo_dsr; /* GPO Data Set */
-+
-+ /* cells to register as devices */
-+ struct tmio_cell* cell;
-+ unsigned int num_cells;
-+
-+ /* callbacks to enable and disable the TC6393XB's power and clock */
-+ void (*enable) (struct device *dev);
-+ void (*disable) (struct device *dev);
-+};
-+
-+u32 get_tc6393_gpio (struct device *dev);
-+u32 set_tc6393_gpio (struct device *dev, u32 bits);
-+u32 reset_tc6393_gpio (struct device *dev, u32 bits);
-+
-+/*--------------------------------------------------------------------------*/
-+
-+#else
- #error "no TMIO SoC configured"
-+#endif
-
- #endif
-Index: linux-2.6.18/include/asm-arm/arch-pxa/irqs.h
-===================================================================
---- linux-2.6.18.orig/include/asm-arm/arch-pxa/irqs.h 2006-09-20 05:42:06.000000000 +0200
-+++ linux-2.6.18/include/asm-arm/arch-pxa/irqs.h 2006-09-20 16:17:02.000000000 +0200
-@@ -163,17 +163,27 @@
- #define IRQ_LOCOMO_SPI_OVRN (IRQ_BOARD_END + 20)
- #define IRQ_LOCOMO_SPI_TEND (IRQ_BOARD_END + 21)
-
-+#define IRQ_TC6393_START (IRQ_BOARD_END)
-+#define IRQ_TC6393_NAND (IRQ_BOARD_END + 0)
-+#define IRQ_TC6393_SD (IRQ_BOARD_END + 1)
-+#define IRQ_TC6393_OHCI (IRQ_BOARD_END + 2)
-+#define IRQ_TC6393_SERIAL (IRQ_BOARD_END + 3)
-+#define IRQ_TC6393_LCD (IRQ_BOARD_END + 4)
-+
- /*
- * Figure out the MAX IRQ number.
- *
- * If we have an SA1111, the max IRQ is S1_BVD1_STSCHG+1.
- * If we have an LoCoMo, the max IRQ is IRQ_LOCOMO_SPI_TEND+1
-+ * If we have an TC6393XB, the max IRQ is IRQ_TC6393_LCD+1
- * Otherwise, we have the standard IRQs only.
- */
- #ifdef CONFIG_SA1111
- #define NR_IRQS (IRQ_S1_BVD1_STSCHG + 1)
- #elif defined(CONFIG_SHARP_LOCOMO)
- #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1)
-+#elif defined(CONFIG_TOSHIBA_TC6393XB)
-+#define NR_IRQS (IRQ_TC6393_LCD + 1)
- #elif defined(CONFIG_ARCH_LUBBOCK) || \
- defined(CONFIG_MACH_LOGICPD_PXA270) || \
- defined(CONFIG_MACH_MAINSTONE)
diff --git a/packages/linux/linux-rp-2.6.18/tosa-lcdnoise-r1.patch b/packages/linux/linux-rp-2.6.18/tosa-lcdnoise-r1.patch
deleted file mode 100644
index 624098bc64..0000000000
--- a/packages/linux/linux-rp-2.6.18/tosa-lcdnoise-r1.patch
+++ /dev/null
@@ -1,157 +0,0 @@
-Index: linux-2.6.18/arch/arm/mach-pxa/tosa.c
-===================================================================
---- linux-2.6.18.orig/arch/arm/mach-pxa/tosa.c 2006-09-20 17:14:14.000000000 +0200
-+++ linux-2.6.18/arch/arm/mach-pxa/tosa.c 2006-09-20 17:14:43.000000000 +0200
-@@ -2,6 +2,7 @@
- * Support for Sharp SL-C6000x PDAs
- * Model: (Tosa)
- *
-+ * Copyright (c) 2006 Wolfson Microelectronics PLC.
- * Copyright (c) 2005 Dirk Opfer
- *
- * Based on code written by Sharp/Lineo for 2.4 kernels
-@@ -47,6 +48,8 @@
- #include <asm/hardware/tmio.h>
- #include <asm/mach/sharpsl_param.h>
-
-+#include <linux/wm97xx.h>
-+
- #include "generic.h"
-
- /*
-@@ -429,6 +432,16 @@
- },
- };
-
-+
-+/*
-+ * Tosa Touchscreen device
-+ */
-+
-+static struct wm97xx_machinfo tosa_ts_machinfo = {
-+ .get_hsync_time = tosa_get_hsync_time,
-+ .wait_hsync = tosa_wait_hsync,
-+};
-+
- /*
- * Tosa Blueooth
- */
-@@ -458,6 +471,7 @@
- GPSR(TOSA_GPIO_ON_RESET) = GPIO_bit(TOSA_GPIO_ON_RESET);
-
- mdelay(1000);
-+ wm97xx_unset_machinfo();
- arm_machine_restart('h');
- }
-
-@@ -503,6 +517,8 @@
- platform_scoop_config = &tosa_pcmcia_config;
-
- platform_add_devices(devices, ARRAY_SIZE(devices));
-+
-+ wm97xx_set_machinfo(&tosa_ts_machinfo);
- }
-
- static void __init fixup_tosa(struct machine_desc *desc,
-Index: linux-2.6.18/arch/arm/mach-pxa/tosa_lcd.c
-===================================================================
---- linux-2.6.18.orig/arch/arm/mach-pxa/tosa_lcd.c 2006-09-20 17:14:14.000000000 +0200
-+++ linux-2.6.18/arch/arm/mach-pxa/tosa_lcd.c 2006-09-20 17:14:15.000000000 +0200
-@@ -1,6 +1,7 @@
- /*
- * LCD / Backlight control code for Sharp SL-6000x (tosa)
- *
-+ * Copyright (c) 2006 Wolfson Microelectronics PLC.
- * Copyright (c) 2005 Dirk Opfer
- *
- * This program is free software; you can redistribute it and/or modify
-@@ -59,6 +60,8 @@
- static struct ssp_dev tosa_nssp_dev;
- static struct ssp_state tosa_nssp_state;
- static spinlock_t tosa_nssp_lock;
-+static int blanked;
-+static unsigned long hsync_time;
-
- static unsigned short normal_i2c[] = {
- DAC_BASE,
-@@ -130,6 +133,17 @@
- pxa_nssp_output(TG_GPOSR,0x02); /* GPOS0=powercontrol, GPOS1=GPIO, GPOS2=TCTL */
- }
-
-+static unsigned long calc_hsync_time(const struct fb_videomode *mode) {
-+ /* The 25 and 44 'magic numbers' are from Sharp's 2.4 patches */
-+ if (mode->yres == 640) {
-+ return 25;
-+ }
-+ if (mode->yres == 320) {
-+ return 44;
-+ }
-+ return 0;
-+}
-+
- static void tosa_lcd_tg_on(struct device *dev, const struct fb_videomode *mode)
- {
- const int value = TG_REG0_COLOR | TG_REG0_UD | TG_REG0_LR;
-@@ -154,6 +168,8 @@
- /* set common voltage */
- i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH1, comadj);
-
-+ blanked = 0;
-+ hsync_time = calc_hsync_time(mode);
- }
-
- static void tosa_lcd_tg_off(struct device *dev)
-@@ -172,6 +188,8 @@
-
- /* L3V Off */
- reset_scoop_gpio( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC3693_L3V_ON);
-+
-+ blanked = 1;
- }
-
- static int tosa_detect_client(struct i2c_adapter* adapter, int address, int kind) {
-@@ -238,6 +256,23 @@
- return 0;
- }
-
-+unsigned long tosa_get_hsync_time(void)
-+{
-+/* This method should eventually contain the correct algorithm for calculating
-+ the hsync_time */
-+ if (blanked)
-+ return 0;
-+ else
-+ return hsync_time;
-+}
-+
-+void tosa_wait_hsync(void)
-+{
-+ /* Waits for a rising edge on the VGA line */
-+ while((GPLR(TOSA_GPIO_VGA_LINE) & GPIO_bit(TOSA_GPIO_VGA_LINE)) == 0);
-+ while((GPLR(TOSA_GPIO_VGA_LINE) & GPIO_bit(TOSA_GPIO_VGA_LINE)) != 0);
-+}
-+
- static struct i2c_driver tosa_driver={
- .id = TOSA_LCD_I2C_DEVICEID,
- .attach_adapter = tosa_attach_adapter,
-Index: linux-2.6.18/include/asm-arm/arch-pxa/tosa.h
-===================================================================
---- linux-2.6.18.orig/include/asm-arm/arch-pxa/tosa.h 2006-09-20 17:14:13.000000000 +0200
-+++ linux-2.6.18/include/asm-arm/arch-pxa/tosa.h 2006-09-20 17:14:15.000000000 +0200
-@@ -1,6 +1,7 @@
- /*
- * Hardware specific definitions for Sharp SL-C6000x series of PDAs
- *
-+ * Copyright (c) 2006 Wolfson Microelectronics PLC.
- * Copyright (c) 2005 Dirk Opfer
- *
- * Based on Sharp's 2.4 kernel patches
-@@ -187,4 +188,8 @@
- extern struct platform_device tosascoop_jc_device;
- extern struct platform_device tosascoop_device;
- extern struct platform_device tc6393_device;
-+
-+unsigned long tosa_get_hsync_time(void);
-+void tosa_wait_hsync(void);
-+
- #endif /* _ASM_ARCH_TOSA_H_ */
diff --git a/packages/linux/linux-rp-2.6.18/tosa-tmio-lcd-r10.patch b/packages/linux/linux-rp-2.6.18/tosa-tmio-lcd-r10.patch
deleted file mode 100644
index aef3a047c1..0000000000
--- a/packages/linux/linux-rp-2.6.18/tosa-tmio-lcd-r10.patch
+++ /dev/null
@@ -1,472 +0,0 @@
- arch/arm/mach-pxa/Kconfig | 5
- arch/arm/mach-pxa/Makefile | 2
- arch/arm/mach-pxa/tosa.c | 49 +++++-
- arch/arm/mach-pxa/tosa_lcd.c | 344 +++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 396 insertions(+), 4 deletions(-)
-
-Index: git/arch/arm/mach-pxa/Makefile
-===================================================================
---- git.orig/arch/arm/mach-pxa/Makefile 2006-11-07 22:13:10.000000000 +0000
-+++ git/arch/arm/mach-pxa/Makefile 2006-11-07 23:29:38.000000000 +0000
-@@ -17,7 +17,7 @@ obj-$(CONFIG_PXA_SHARP_C7xx) += corgi.o
- obj-$(CONFIG_PXA_SHARP_Cxx00) += spitz.o corgi_ssp.o corgi_lcd.o sharpsl_pm.o spitz_pm.o
- obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
- obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o sharpsl_pm.o poodle_pm.o
--obj-$(CONFIG_MACH_TOSA) += tosa.o sharpsl_pm.o tosa_pm.o
-+obj-$(CONFIG_MACH_TOSA) += tosa.o sharpsl_pm.o tosa_pm.o tosa_lcd.o
- obj-$(CONFIG_MACH_HX2750) += hx2750.o hx2750_test.o
-
- # Support for blinky lights
-Index: git/arch/arm/mach-pxa/tosa_lcd.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/arch/arm/mach-pxa/tosa_lcd.c 2006-11-07 23:29:25.000000000 +0000
-@@ -0,0 +1,344 @@
-+/*
-+ * LCD / Backlight control code for Sharp SL-6000x (tosa)
-+ *
-+ * Copyright (c) 2005 Dirk Opfer
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/delay.h>
-+#include <linux/platform_device.h>
-+#include <linux/i2c.h>
-+#include <linux/fb.h>
-+
-+#include <asm/mach/sharpsl_param.h>
-+#include <asm/hardware.h>
-+#include <asm/hardware/scoop.h>
-+#include <asm/hardware/tmio.h>
-+#include <asm/arch/ssp.h>
-+#include <asm/arch/sharpsl.h>
-+#include <asm/arch/tosa.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+#define DAC_BASE 0x4e
-+#define DAC_CH1 0
-+#define DAC_CH2 1
-+
-+#define TG_REG0_VQV 0x0001
-+#define TG_REG0_COLOR 0x0002
-+#define TG_REG0_UD 0x0004
-+#define TG_REG0_LR 0x0008
-+#define COMADJ_DEFAULT 97
-+#define TOSA_LCD_I2C_DEVICEID 0x4711 // Fixme: new value
-+
-+static void tosa_lcd_tg_init(struct device *dev);
-+static void tosa_lcd_tg_on(struct device *dev, const struct fb_videomode *mode);
-+static void tosa_lcd_tg_off(struct device *dev);
-+static void tosa_set_backlight(int intensity);
-+
-+const static struct tmio_lcd_ops tosa_tc6393_lcd_ops = {
-+ .init = tosa_lcd_tg_init,
-+ .tg_on = tosa_lcd_tg_on,
-+ .tg_off = tosa_lcd_tg_off,
-+};
-+
-+static struct platform_device *tosabl_device;
-+static struct i2c_driver tosa_driver;
-+static struct i2c_client* tosa_i2c_dac;
-+static int initialised;
-+static int comadj;
-+static int bl_intensity;
-+static struct ssp_dev tosa_nssp_dev;
-+static struct ssp_state tosa_nssp_state;
-+static spinlock_t tosa_nssp_lock;
-+
-+static unsigned short normal_i2c[] = {
-+ DAC_BASE,
-+ I2C_CLIENT_END
-+};
-+I2C_CLIENT_INSMOD;
-+
-+static struct corgibl_machinfo tosa_bl_machinfo = {
-+ .max_intensity = 255,
-+ .default_intensity = 68,
-+ .limit_mask = 0x0b,
-+ .set_bl_intensity = tosa_set_backlight,
-+};
-+
-+int tosa_bl_intensity(void)
-+{
-+ return bl_intensity;
-+}
-+
-+static void pxa_nssp_output(unsigned char reg, unsigned char data)
-+{
-+ unsigned long flag, dummy;
-+ u32 dat = ( ((reg << 5) & 0xe0) | (data & 0x1f) );
-+ spin_lock_irqsave(&tosa_nssp_lock, flag);
-+
-+ ssp_config(&tosa_nssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), 0, 0, SSCR0_SerClkDiv(128));
-+ ssp_enable(&tosa_nssp_dev);
-+
-+ ssp_write_word(&tosa_nssp_dev,dat);
-+
-+ /* Read null data back from device to prevent SSP overflow */
-+ ssp_read_word(&tosa_nssp_dev, &dummy);
-+ ssp_disable(&tosa_nssp_dev);
-+ spin_unlock_irqrestore(&tosa_nssp_lock, flag);
-+
-+}
-+
-+static void tosa_set_backlight(int intensity)
-+{
-+ if (!tosa_i2c_dac)
-+ return;
-+
-+ bl_intensity = intensity;
-+ /* SetBacklightDuty */
-+ i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH2, (unsigned char)intensity);
-+
-+ /* SetBacklightVR */
-+ if (intensity)
-+ set_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_BL_C20MA);
-+ else
-+ reset_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_BL_C20MA);
-+
-+ /* bl_enable GP04=1 otherwise GP04=0*/
-+ pxa_nssp_output(TG_GPODR2, intensity ? 0x01 : 0x00);
-+}
-+
-+static void tosa_lcd_tg_init(struct device *dev)
-+{
-+ /* L3V On */
-+ set_scoop_gpio( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC3693_L3V_ON);
-+ mdelay(60);
-+
-+ /* TG On */
-+ reset_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_TG_ON);
-+ mdelay(60);
-+
-+ pxa_nssp_output(TG_TPOSCTL,0x00); /* delayed 0clk TCTL signal for VGA */
-+ pxa_nssp_output(TG_GPOSR,0x02); /* GPOS0=powercontrol, GPOS1=GPIO, GPOS2=TCTL */
-+}
-+
-+static void tosa_lcd_tg_on(struct device *dev, const struct fb_videomode *mode)
-+{
-+ const int value = TG_REG0_COLOR | TG_REG0_UD | TG_REG0_LR;
-+ pxa_nssp_output(TG_PNLCTL, value | (mode->yres == 320 ? 0 : TG_REG0_VQV));
-+
-+ /* TG LCD pannel power up */
-+ pxa_nssp_output(TG_PINICTL,0x4);
-+ mdelay(50);
-+
-+ /* TG LCD GVSS */
-+ pxa_nssp_output(TG_PINICTL,0x0);
-+
-+ if (!initialised)
-+ {
-+ /* after the pannel is powered up the first time, we can access the i2c bus */
-+ /* so probe for the DAC */
-+ i2c_add_driver(&tosa_driver);
-+ initialised = 1;
-+ mdelay(50);
-+ }
-+ if (tosa_i2c_dac)
-+ /* set common voltage */
-+ i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH1, comadj);
-+
-+}
-+
-+static void tosa_lcd_tg_off(struct device *dev)
-+{
-+ /* TG LCD VHSA off */
-+ pxa_nssp_output(TG_PINICTL,0x4);
-+ mdelay(50);
-+
-+ /* TG LCD signal off */
-+ pxa_nssp_output(TG_PINICTL,0x6);
-+ mdelay(50);
-+
-+ /* TG Off */
-+ set_tc6393_gpio(&tc6393_device.dev, TOSA_TC6393_TG_ON);
-+ mdelay(100);
-+
-+ /* L3V Off */
-+ reset_scoop_gpio( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC3693_L3V_ON);
-+}
-+
-+static int tosa_detect_client(struct i2c_adapter* adapter, int address, int kind) {
-+ int err = 0;
-+
-+ printk("Tosa-LCD: DAC detected address:0x%2.2x\n",address);
-+ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA ))
-+ goto ERROR0;
-+
-+ if (!(tosa_i2c_dac = (struct i2c_client*)kzalloc(sizeof(*tosa_i2c_dac), GFP_KERNEL))) {
-+ err = -ENOMEM;
-+ goto ERROR0;
-+ }
-+
-+ //i2c_set_clientdata(tosa_i2c_dac, data);
-+ tosa_i2c_dac->addr = address;
-+ tosa_i2c_dac->adapter = adapter;
-+ tosa_i2c_dac->driver = &tosa_driver;
-+ tosa_i2c_dac->dev.parent = &tc6393_device.dev;
-+ strcpy(tosa_i2c_dac->name, "tosa lcd");
-+ if ((err = i2c_attach_client(tosa_i2c_dac)))
-+ goto ERROR3;
-+
-+ /* Now i2c is ready, allocate the backlight device*/
-+ tosabl_device = platform_device_alloc("corgi-bl", -1);
-+ if (!tosabl_device) {
-+ err = -ENOMEM;
-+ goto ERROR4;
-+ }
-+
-+ /* set parent device */
-+ tosabl_device->dev.parent = &tosa_i2c_dac->dev;
-+ tosabl_device->dev.platform_data = &tosa_bl_machinfo;
-+
-+ err = platform_device_add(tosabl_device);
-+
-+ if (err)
-+ platform_device_put(tosabl_device);
-+
-+ /* set common voltage */
-+ i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH1, comadj);
-+
-+ return 0;
-+ERROR4:
-+ i2c_detach_client(tosa_i2c_dac);
-+ERROR3:
-+ kfree(tosa_i2c_dac);
-+ERROR0:
-+ return err;
-+}
-+
-+static int tosa_attach_adapter(struct i2c_adapter* adapter) {
-+ return i2c_probe(adapter, &addr_data, &tosa_detect_client);
-+}
-+
-+static int tosa_detach_client(struct i2c_client* client) {
-+ int err;
-+
-+ if ((err = i2c_detach_client(client))) {
-+ printk(KERN_ERR "tosa: Cannot deregister client\n");
-+ return err;
-+ }
-+ kfree(client);
-+ return 0;
-+}
-+
-+static struct i2c_driver tosa_driver={
-+ .id = TOSA_LCD_I2C_DEVICEID,
-+ .attach_adapter = tosa_attach_adapter,
-+ .detach_client = tosa_detach_client,
-+};
-+
-+static int __init tosa_lcd_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ spin_lock_init(&tosa_nssp_lock);
-+
-+ if (!pdev->dev.platform_data)
-+ return -EINVAL;
-+
-+ /* Set Common Voltage */
-+ comadj = sharpsl_param.comadj == -1 ? COMADJ_DEFAULT : sharpsl_param.comadj;
-+
-+ ret=ssp_init(&tosa_nssp_dev,2,0);
-+
-+ /* initialize SSP */
-+ pxa_gpio_mode(GPIO83_NSSP_TX);
-+ pxa_gpio_mode(GPIO81_NSSP_CLK_OUT);
-+ pxa_gpio_mode(GPIO82_NSSP_FRM_OUT);
-+
-+ if (ret)
-+ printk(KERN_ERR "Unable to register NSSP handler!\n");
-+ else {
-+ struct tmio_lcd_ops* *tmio_ops = pdev->dev.platform_data;
-+ ssp_disable(&tosa_nssp_dev);
-+ initialised = 0;
-+
-+ /* Set the lcd functions */
-+ *tmio_ops = (struct tmio_lcd_ops*) &tosa_tc6393_lcd_ops;
-+ }
-+
-+ return ret;
-+}
-+
-+static int tosa_lcd_remove(struct platform_device *pdev)
-+{
-+ /* delete the lcd functions */
-+ struct tmio_lcd_ops* *tmio_ops = pdev->dev.platform_data;
-+ *tmio_ops = NULL;
-+
-+ ssp_exit(&tosa_nssp_dev);
-+
-+ if (tosa_i2c_dac) {
-+ i2c_detach_client(tosa_i2c_dac);
-+ kfree(tosa_i2c_dac);
-+ }
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+
-+static int tosa_lcd_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ ssp_flush(&tosa_nssp_dev);
-+ ssp_save_state(&tosa_nssp_dev,&tosa_nssp_state);
-+ return 0;
-+}
-+
-+static int tosa_lcd_resume(struct platform_device *pdev)
-+{
-+ printk("tosa_lcd_resume\n");
-+ ssp_restore_state(&tosa_nssp_dev,&tosa_nssp_state);
-+ ssp_enable(&tosa_nssp_dev);
-+ printk("tosa_lcd_resume ok\n");
-+ return 0;
-+}
-+#else
-+
-+#define tosa_lcd_suspend NULL
-+#define tosa_lcd_resume NULL
-+
-+#endif
-+
-+
-+static struct platform_driver tosalcd_driver = {
-+ .probe = tosa_lcd_probe,
-+ .remove = tosa_lcd_remove,
-+ .suspend = tosa_lcd_suspend,
-+ .resume = tosa_lcd_resume,
-+ .driver = {
-+ .name = "tosa-lcd",
-+ },
-+};
-+
-+static int __init tosa_lcd_init(void)
-+{
-+ return platform_driver_register(&tosalcd_driver);
-+}
-+
-+static void __exit tosa_lcd_cleanup (void)
-+{
-+ platform_driver_unregister (&tosalcd_driver);
-+}
-+
-+device_initcall(tosa_lcd_init);
-+module_exit (tosa_lcd_cleanup);
-+
-+MODULE_DESCRIPTION ("Tosa LCD device");
-+MODULE_AUTHOR ("Dirk Opfer");
-+MODULE_LICENSE ("GPL v2");
-Index: git/arch/arm/mach-pxa/tosa.c
-===================================================================
---- git.orig/arch/arm/mach-pxa/tosa.c 2006-11-07 22:13:10.000000000 +0000
-+++ git/arch/arm/mach-pxa/tosa.c 2006-11-07 23:29:38.000000000 +0000
-@@ -24,6 +24,7 @@
- #include <linux/mtd/partitions.h>
- #include <linux/pm.h>
- #include <linux/delay.h>
-+#include <linux/fb.h>
-
- #include <asm/setup.h>
- #include <asm/memory.h>
-@@ -48,7 +49,6 @@
-
- #include "generic.h"
-
--
- /*
- * SCOOP Device
- */
-@@ -345,7 +345,38 @@ static struct tmio_nand_platform_data to
- .badblock_pattern = &tosa_tc6393_nand_bbt,
- };
-
--extern struct tmio_lcd_platform_data tosa_tc6393_lcd_platform_data;
-+static struct fb_videomode tosa_tc6393_lcd_mode[] = {
-+ {
-+ .xres = 480,
-+ .yres = 640,
-+ .pixclock = 0x002cdf00,/* PLL divisor */
-+ .left_margin = 0x004c,
-+ .right_margin = 0x005b,
-+ .upper_margin = 0x0001,
-+ .lower_margin = 0x000d,
-+ .hsync_len = 0x0002,
-+ .vsync_len = 0x0001,
-+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+ },{
-+ .xres = 240,
-+ .yres = 320,
-+ .pixclock = 0x00e7f203,/* PLL divisor */
-+ .left_margin = 0x0024,
-+ .right_margin = 0x002f,
-+ .upper_margin = 0x0001,
-+ .lower_margin = 0x000d,
-+ .hsync_len = 0x0002,
-+ .vsync_len = 0x0001,
-+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+}};
-+
-+struct tmio_lcd_platform_data tosa_tc6393_lcd_platform_data = {
-+ .ops = NULL,
-+ .modelist = tosa_tc6393_lcd_mode,
-+ .num_modes = ARRAY_SIZE(tosa_tc6393_lcd_mode),
-+};
-
- static struct tmio_cell tosa_tc6393_cells[] = {
- {
-@@ -384,6 +415,19 @@ struct platform_device tc6393_device = {
- .num_resources = ARRAY_SIZE(tc6393_resources),
- .resource = tc6393_resources,
- };
-+EXPORT_SYMBOL (tc6393_device);
-+
-+/*
-+ * Tosa LCD / Backlight stuff
-+ */
-+static struct platform_device tosalcd_device = {
-+ .name = "tosa-lcd",
-+ .id = -1,
-+ .dev = {
-+ .parent = &tc6393_device.dev,
-+ .platform_data = &tosa_tc6393_lcd_platform_data.ops,
-+ },
-+};
-
- static struct platform_device *devices[] __initdata = {
- &tosascoop_device,
-@@ -391,6 +435,7 @@ static struct platform_device *devices[]
- &tosakbd_device,
- &tosaled_device,
- &tc6393_device,
-+ &tosalcd_device,
- };
-
- static void tosa_poweroff(void)
-Index: git/arch/arm/mach-pxa/Kconfig
-===================================================================
---- git.orig/arch/arm/mach-pxa/Kconfig 2006-11-07 22:13:10.000000000 +0000
-+++ git/arch/arm/mach-pxa/Kconfig 2006-11-07 22:13:10.000000000 +0000
-@@ -129,7 +129,10 @@ config MACH_TOSA
- bool "Enable Sharp SL-6000x (Tosa) Support"
- depends PXA_SHARPSL_25x
- select TOSHIBA_TC6393XB
-- select SHARPSL_PM
-+ select I2C
-+ select I2C_PXA
-+ select SHARPSL_PM
-+ select PXA_SSP
-
- config PXA25x
- bool
diff --git a/packages/linux/linux-rp-2.6.18/tosa-tmio-lcd-r9.patch b/packages/linux/linux-rp-2.6.18/tosa-tmio-lcd-r9.patch
deleted file mode 100644
index 5887822074..0000000000
--- a/packages/linux/linux-rp-2.6.18/tosa-tmio-lcd-r9.patch
+++ /dev/null
@@ -1,467 +0,0 @@
-Index: linux-2.6.18/arch/arm/mach-pxa/Makefile
-===================================================================
---- linux-2.6.18.orig/arch/arm/mach-pxa/Makefile 2006-09-20 16:19:03.000000000 +0200
-+++ linux-2.6.18/arch/arm/mach-pxa/Makefile 2006-09-20 16:19:03.000000000 +0200
-@@ -17,7 +17,7 @@
- obj-$(CONFIG_PXA_SHARP_Cxx00) += spitz.o corgi_ssp.o corgi_lcd.o sharpsl_pm.o spitz_pm.o
- obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
- obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o sharpsl_pm.o poodle_pm.o
--obj-$(CONFIG_MACH_TOSA) += tosa.o sharpsl_pm.o tosa_pm.o
-+obj-$(CONFIG_MACH_TOSA) += tosa.o sharpsl_pm.o tosa_pm.o tosa_lcd.o
- obj-$(CONFIG_MACH_HX2750) += hx2750.o hx2750_test.o
-
- # Support for blinky lights
-Index: linux-2.6.18/arch/arm/mach-pxa/tosa_lcd.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.18/arch/arm/mach-pxa/tosa_lcd.c 2006-09-20 16:19:03.000000000 +0200
-@@ -0,0 +1,345 @@
-+/*
-+ * LCD / Backlight control code for Sharp SL-6000x (tosa)
-+ *
-+ * Copyright (c) 2005 Dirk Opfer
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/delay.h>
-+#include <linux/platform_device.h>
-+#include <linux/i2c.h>
-+#include <linux/fb.h>
-+
-+#include <asm/mach/sharpsl_param.h>
-+#include <asm/hardware.h>
-+#include <asm/hardware/scoop.h>
-+#include <asm/hardware/tmio.h>
-+#include <asm/arch/ssp.h>
-+#include <asm/arch/sharpsl.h>
-+#include <asm/arch/tosa.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+#define DAC_BASE 0x4e
-+#define DAC_CH1 0
-+#define DAC_CH2 1
-+
-+#define TG_REG0_VQV 0x0001
-+#define TG_REG0_COLOR 0x0002
-+#define TG_REG0_UD 0x0004
-+#define TG_REG0_LR 0x0008
-+#define COMADJ_DEFAULT 97
-+#define TOSA_LCD_I2C_DEVICEID 0x4711 // Fixme: new value
-+
-+static void tosa_lcd_tg_init(struct device *dev);
-+static void tosa_lcd_tg_on(struct device *dev, const struct fb_videomode *mode);
-+static void tosa_lcd_tg_off(struct device *dev);
-+static void tosa_set_backlight(int intensity);
-+
-+const static struct tmio_lcd_ops tosa_tc6393_lcd_ops = {
-+ .init = tosa_lcd_tg_init,
-+ .tg_on = tosa_lcd_tg_on,
-+ .tg_off = tosa_lcd_tg_off,
-+};
-+
-+static struct platform_device *tosabl_device;
-+static struct i2c_driver tosa_driver;
-+static struct i2c_client* tosa_i2c_dac;
-+static int initialised;
-+static int comadj;
-+static int bl_intensity;
-+static struct ssp_dev tosa_nssp_dev;
-+static struct ssp_state tosa_nssp_state;
-+static spinlock_t tosa_nssp_lock;
-+
-+static unsigned short normal_i2c[] = {
-+ DAC_BASE,
-+ I2C_CLIENT_END
-+};
-+I2C_CLIENT_INSMOD;
-+
-+static struct corgibl_machinfo tosa_bl_machinfo = {
-+ .max_intensity = 255,
-+ .default_intensity = 68,
-+ .limit_mask = 0x0b,
-+ .set_bl_intensity = tosa_set_backlight,
-+};
-+
-+int tosa_bl_intensity(void)
-+{
-+ return bl_intensity;
-+}
-+
-+static void pxa_nssp_output(unsigned char reg, unsigned char data)
-+{
-+
-+ unsigned long flag;
-+ u32 dat = ( ((reg << 5) & 0xe0) | (data & 0x1f) );
-+ spin_lock_irqsave(&tosa_nssp_lock, flag);
-+
-+ ssp_config(&tosa_nssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), 0, 0, SSCR0_SerClkDiv(128));
-+ ssp_enable(&tosa_nssp_dev);
-+
-+ ssp_write_word(&tosa_nssp_dev,dat);
-+
-+ /* Read null data back from device to prevent SSP overflow */
-+ ssp_read_word(&tosa_nssp_dev);
-+ ssp_disable(&tosa_nssp_dev);
-+ spin_unlock_irqrestore(&tosa_nssp_lock, flag);
-+
-+}
-+
-+static void tosa_set_backlight(int intensity)
-+{
-+ if (!tosa_i2c_dac)
-+ return;
-+
-+ bl_intensity = intensity;
-+ /* SetBacklightDuty */
-+ i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH2, (unsigned char)intensity);
-+
-+ /* SetBacklightVR */
-+ if (intensity)
-+ set_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_BL_C20MA);
-+ else
-+ reset_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_BL_C20MA);
-+
-+ /* bl_enable GP04=1 otherwise GP04=0*/
-+ pxa_nssp_output(TG_GPODR2, intensity ? 0x01 : 0x00);
-+}
-+
-+static void tosa_lcd_tg_init(struct device *dev)
-+{
-+ /* L3V On */
-+ set_scoop_gpio( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC3693_L3V_ON);
-+ mdelay(60);
-+
-+ /* TG On */
-+ reset_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_TG_ON);
-+ mdelay(60);
-+
-+ pxa_nssp_output(TG_TPOSCTL,0x00); /* delayed 0clk TCTL signal for VGA */
-+ pxa_nssp_output(TG_GPOSR,0x02); /* GPOS0=powercontrol, GPOS1=GPIO, GPOS2=TCTL */
-+}
-+
-+static void tosa_lcd_tg_on(struct device *dev, const struct fb_videomode *mode)
-+{
-+ const int value = TG_REG0_COLOR | TG_REG0_UD | TG_REG0_LR;
-+ pxa_nssp_output(TG_PNLCTL, value | (mode->yres == 320 ? 0 : TG_REG0_VQV));
-+
-+ /* TG LCD pannel power up */
-+ pxa_nssp_output(TG_PINICTL,0x4);
-+ mdelay(50);
-+
-+ /* TG LCD GVSS */
-+ pxa_nssp_output(TG_PINICTL,0x0);
-+
-+ if (!initialised)
-+ {
-+ /* after the pannel is powered up the first time, we can access the i2c bus */
-+ /* so probe for the DAC */
-+ i2c_add_driver(&tosa_driver);
-+ initialised = 1;
-+ mdelay(50);
-+ }
-+ if (tosa_i2c_dac)
-+ /* set common voltage */
-+ i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH1, comadj);
-+
-+}
-+
-+static void tosa_lcd_tg_off(struct device *dev)
-+{
-+ /* TG LCD VHSA off */
-+ pxa_nssp_output(TG_PINICTL,0x4);
-+ mdelay(50);
-+
-+ /* TG LCD signal off */
-+ pxa_nssp_output(TG_PINICTL,0x6);
-+ mdelay(50);
-+
-+ /* TG Off */
-+ set_tc6393_gpio(&tc6393_device.dev, TOSA_TC6393_TG_ON);
-+ mdelay(100);
-+
-+ /* L3V Off */
-+ reset_scoop_gpio( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC3693_L3V_ON);
-+}
-+
-+static int tosa_detect_client(struct i2c_adapter* adapter, int address, int kind) {
-+ int err = 0;
-+
-+ printk("Tosa-LCD: DAC detected address:0x%2.2x\n",address);
-+ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA ))
-+ goto ERROR0;
-+
-+ if (!(tosa_i2c_dac = (struct i2c_client*)kzalloc(sizeof(*tosa_i2c_dac), GFP_KERNEL))) {
-+ err = -ENOMEM;
-+ goto ERROR0;
-+ }
-+
-+ //i2c_set_clientdata(tosa_i2c_dac, data);
-+ tosa_i2c_dac->addr = address;
-+ tosa_i2c_dac->adapter = adapter;
-+ tosa_i2c_dac->driver = &tosa_driver;
-+ tosa_i2c_dac->dev.parent = &tc6393_device.dev;
-+ strcpy(tosa_i2c_dac->name, "tosa lcd");
-+ if ((err = i2c_attach_client(tosa_i2c_dac)))
-+ goto ERROR3;
-+
-+ /* Now i2c is ready, allocate the backlight device*/
-+ tosabl_device = platform_device_alloc("corgi-bl", -1);
-+ if (!tosabl_device) {
-+ err = -ENOMEM;
-+ goto ERROR4;
-+ }
-+
-+ /* set parent device */
-+ tosabl_device->dev.parent = &tosa_i2c_dac->dev;
-+ tosabl_device->dev.platform_data = &tosa_bl_machinfo;
-+
-+ err = platform_device_add(tosabl_device);
-+
-+ if (err)
-+ platform_device_put(tosabl_device);
-+
-+ /* set common voltage */
-+ i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH1, comadj);
-+
-+ return 0;
-+ERROR4:
-+ i2c_detach_client(tosa_i2c_dac);
-+ERROR3:
-+ kfree(tosa_i2c_dac);
-+ERROR0:
-+ return err;
-+}
-+
-+static int tosa_attach_adapter(struct i2c_adapter* adapter) {
-+ return i2c_probe(adapter, &addr_data, &tosa_detect_client);
-+}
-+
-+static int tosa_detach_client(struct i2c_client* client) {
-+ int err;
-+
-+ if ((err = i2c_detach_client(client))) {
-+ printk(KERN_ERR "tosa: Cannot deregister client\n");
-+ return err;
-+ }
-+ kfree(client);
-+ return 0;
-+}
-+
-+static struct i2c_driver tosa_driver={
-+ .id = TOSA_LCD_I2C_DEVICEID,
-+ .attach_adapter = tosa_attach_adapter,
-+ .detach_client = tosa_detach_client,
-+};
-+
-+static int __init tosa_lcd_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ spin_lock_init(&tosa_nssp_lock);
-+
-+ if (!pdev->dev.platform_data)
-+ return -EINVAL;
-+
-+ /* Set Common Voltage */
-+ comadj = sharpsl_param.comadj == -1 ? COMADJ_DEFAULT : sharpsl_param.comadj;
-+
-+ ret=ssp_init(&tosa_nssp_dev,2,0);
-+
-+ /* initialize SSP */
-+ pxa_gpio_mode(GPIO83_NSSP_TX);
-+ pxa_gpio_mode(GPIO81_NSSP_CLK_OUT);
-+ pxa_gpio_mode(GPIO82_NSSP_FRM_OUT);
-+
-+ if (ret)
-+ printk(KERN_ERR "Unable to register NSSP handler!\n");
-+ else {
-+ struct tmio_lcd_ops* *tmio_ops = pdev->dev.platform_data;
-+ ssp_disable(&tosa_nssp_dev);
-+ initialised = 0;
-+
-+ /* Set the lcd functions */
-+ *tmio_ops = (struct tmio_lcd_ops*) &tosa_tc6393_lcd_ops;
-+ }
-+
-+ return ret;
-+}
-+
-+static int tosa_lcd_remove(struct platform_device *pdev)
-+{
-+ /* delete the lcd functions */
-+ struct tmio_lcd_ops* *tmio_ops = pdev->dev.platform_data;
-+ *tmio_ops = NULL;
-+
-+ ssp_exit(&tosa_nssp_dev);
-+
-+ if (tosa_i2c_dac) {
-+ i2c_detach_client(tosa_i2c_dac);
-+ kfree(tosa_i2c_dac);
-+ }
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+
-+static int tosa_lcd_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ ssp_flush(&tosa_nssp_dev);
-+ ssp_save_state(&tosa_nssp_dev,&tosa_nssp_state);
-+ return 0;
-+}
-+
-+static int tosa_lcd_resume(struct platform_device *pdev)
-+{
-+ printk("tosa_lcd_resume\n");
-+ ssp_restore_state(&tosa_nssp_dev,&tosa_nssp_state);
-+ ssp_enable(&tosa_nssp_dev);
-+ printk("tosa_lcd_resume ok\n");
-+ return 0;
-+}
-+#else
-+
-+#define tosa_lcd_suspend NULL
-+#define tosa_lcd_resume NULL
-+
-+#endif
-+
-+
-+static struct platform_driver tosalcd_driver = {
-+ .probe = tosa_lcd_probe,
-+ .remove = tosa_lcd_remove,
-+ .suspend = tosa_lcd_suspend,
-+ .resume = tosa_lcd_resume,
-+ .driver = {
-+ .name = "tosa-lcd",
-+ },
-+};
-+
-+static int __init tosa_lcd_init(void)
-+{
-+ return platform_driver_register(&tosalcd_driver);
-+}
-+
-+static void __exit tosa_lcd_cleanup (void)
-+{
-+ platform_driver_unregister (&tosalcd_driver);
-+}
-+
-+device_initcall(tosa_lcd_init);
-+module_exit (tosa_lcd_cleanup);
-+
-+MODULE_DESCRIPTION ("Tosa LCD device");
-+MODULE_AUTHOR ("Dirk Opfer");
-+MODULE_LICENSE ("GPL v2");
-Index: linux-2.6.18/arch/arm/mach-pxa/tosa.c
-===================================================================
---- linux-2.6.18.orig/arch/arm/mach-pxa/tosa.c 2006-09-20 16:19:03.000000000 +0200
-+++ linux-2.6.18/arch/arm/mach-pxa/tosa.c 2006-09-20 16:19:31.000000000 +0200
-@@ -24,6 +24,7 @@
- #include <linux/mtd/partitions.h>
- #include <linux/pm.h>
- #include <linux/delay.h>
-+#include <linux/fb.h>
-
- #include <asm/setup.h>
- #include <asm/memory.h>
-@@ -48,7 +49,6 @@
-
- #include "generic.h"
-
--
- /*
- * SCOOP Device
- */
-@@ -345,7 +345,38 @@
- .badblock_pattern = &tosa_tc6393_nand_bbt,
- };
-
--extern struct tmio_lcd_platform_data tosa_tc6393_lcd_platform_data;
-+static struct fb_videomode tosa_tc6393_lcd_mode[] = {
-+ {
-+ .xres = 480,
-+ .yres = 640,
-+ .pixclock = 0x002cdf00,/* PLL divisor */
-+ .left_margin = 0x004c,
-+ .right_margin = 0x005b,
-+ .upper_margin = 0x0001,
-+ .lower_margin = 0x000d,
-+ .hsync_len = 0x0002,
-+ .vsync_len = 0x0001,
-+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+ },{
-+ .xres = 240,
-+ .yres = 320,
-+ .pixclock = 0x00e7f203,/* PLL divisor */
-+ .left_margin = 0x0024,
-+ .right_margin = 0x002f,
-+ .upper_margin = 0x0001,
-+ .lower_margin = 0x000d,
-+ .hsync_len = 0x0002,
-+ .vsync_len = 0x0001,
-+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+}};
-+
-+struct tmio_lcd_platform_data tosa_tc6393_lcd_platform_data = {
-+ .ops = NULL,
-+ .modelist = tosa_tc6393_lcd_mode,
-+ .num_modes = ARRAY_SIZE(tosa_tc6393_lcd_mode),
-+};
-
- static struct tmio_cell tosa_tc6393_cells[] = {
- {
-@@ -384,6 +415,19 @@
- .num_resources = ARRAY_SIZE(tc6393_resources),
- .resource = tc6393_resources,
- };
-+EXPORT_SYMBOL (tc6393_device);
-+
-+/*
-+ * Tosa LCD / Backlight stuff
-+ */
-+static struct platform_device tosalcd_device = {
-+ .name = "tosa-lcd",
-+ .id = -1,
-+ .dev = {
-+ .parent = &tc6393_device.dev,
-+ .platform_data = &tosa_tc6393_lcd_platform_data.ops,
-+ },
-+};
-
- static struct platform_device *devices[] __initdata = {
- &tosascoop_device,
-@@ -391,6 +435,7 @@
- &tosakbd_device,
- &tosaled_device,
- &tc6393_device,
-+ &tosalcd_device,
- };
-
- static void tosa_poweroff(void)
-Index: linux-2.6.18/arch/arm/mach-pxa/Kconfig
-===================================================================
---- linux-2.6.18.orig/arch/arm/mach-pxa/Kconfig 2006-09-20 16:19:03.000000000 +0200
-+++ linux-2.6.18/arch/arm/mach-pxa/Kconfig 2006-09-20 16:19:03.000000000 +0200
-@@ -129,7 +129,10 @@
- bool "Enable Sharp SL-6000x (Tosa) Support"
- depends PXA_SHARPSL_25x
- select TOSHIBA_TC6393XB
-- select SHARPSL_PM
-+ select I2C
-+ select I2C_PXA
-+ select SHARPSL_PM
-+ select PXA_SSP
-
- config PXA25x
- bool
diff --git a/packages/linux/linux-rp-2.6.18/wm9712-reset-loop-r2.patch b/packages/linux/linux-rp-2.6.18/wm9712-reset-loop-r2.patch
deleted file mode 100644
index 96919b6b02..0000000000
--- a/packages/linux/linux-rp-2.6.18/wm9712-reset-loop-r2.patch
+++ /dev/null
@@ -1,44 +0,0 @@
- sound/soc/codecs/wm9712.c | 28 ++++++++++++++++++----------
- 1 file changed, 18 insertions(+), 10 deletions(-)
-
-Index: linux-2.6.18/sound/soc/codecs/wm9712.c
-===================================================================
---- linux-2.6.18.orig/sound/soc/codecs/wm9712.c 2006-12-05 23:25:33.000000000 +0000
-+++ linux-2.6.18/sound/soc/codecs/wm9712.c 2006-12-05 23:27:20.000000000 +0000
-@@ -618,18 +618,26 @@ static int wm9712_dapm_event(struct snd_
-
- static int wm9712_reset(struct snd_soc_codec *codec, int try_warm)
- {
-- if (try_warm && soc_ac97_ops.warm_reset) {
-- soc_ac97_ops.warm_reset(codec->ac97);
-- if (!(ac97_read(codec, 0) & 0x8000))
-- return 1;
-- }
-+ int retry = 3;
-+
-+ while (retry--)
-+ {
-+ if(try_warm && soc_ac97_ops.warm_reset) {
-+ soc_ac97_ops.warm_reset(codec->ac97);
-+ if(ac97_read(codec, 0) & 0x8000)
-+ continue;
-+ else
-+ return 1;
-+ }
-
-- soc_ac97_ops.reset(codec->ac97);
-- if (ac97_read(codec, 0) & 0x8000)
-- goto err;
-- return 0;
-+ soc_ac97_ops.reset(codec->ac97);
-+ if(ac97_read(codec, 0) & 0x8000)
-+ continue;
-+ else
-+ return 0;
-+
-+ }
-
--err:
- printk(KERN_ERR "WM9712 AC97 reset failed\n");
- return -EIO;
- }
diff --git a/packages/linux/linux-rp-2.6.18/wm9712-suspend-cold-res-r2.patch b/packages/linux/linux-rp-2.6.18/wm9712-suspend-cold-res-r2.patch
deleted file mode 100644
index e91e54f963..0000000000
--- a/packages/linux/linux-rp-2.6.18/wm9712-suspend-cold-res-r2.patch
+++ /dev/null
@@ -1,16 +0,0 @@
- sound/soc/codecs/wm9712.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: linux-2.6.18/sound/soc/codecs/wm9712.c
-===================================================================
---- linux-2.6.18.orig/sound/soc/codecs/wm9712.c 2006-12-05 23:19:53.000000000 +0000
-+++ linux-2.6.18/sound/soc/codecs/wm9712.c 2006-12-05 23:22:04.000000000 +0000
-@@ -651,7 +651,7 @@ static int wm9712_soc_resume(struct plat
- int i, ret;
- u16 *cache = codec->reg_cache;
-
-- ret = wm9712_reset(codec, 1);
-+ ret = wm9712_reset(codec, 0);
- if (ret < 0){
- printk(KERN_ERR "could not reset AC97 codec\n");
- return ret;
diff --git a/packages/linux/linux-rp-2.6.19+git/defconfig-hx2000 b/packages/linux/linux-rp-2.6.19+git/defconfig-hx2000
index ea56989b75..296c462641 100644
--- a/packages/linux/linux-rp-2.6.19+git/defconfig-hx2000
+++ b/packages/linux/linux-rp-2.6.19+git/defconfig-hx2000
@@ -1,20 +1,28 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.15-rc1-git7
-# Sat Nov 19 23:13:51 2005
+# Linux kernel version: 2.6.20-rc2
+# Mon Jan 1 01:49:04 2007
#
CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
CONFIG_MMU=y
-CONFIG_UID16=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_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
-# CONFIG_CLEAN_COMPILE is not set
-CONFIG_BROKEN=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
@@ -25,32 +33,39 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
# CONFIG_SWAP is not set
-# CONFIG_SYSVIPC is not set
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
# CONFIG_IKCONFIG is not set
+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=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# 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_CC_OPTIMIZE_FOR_SIZE=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_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
#
# Loadable module support
@@ -58,7 +73,6 @@ CONFIG_BASE_SMALL=0
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 is not set
@@ -66,6 +80,10 @@ CONFIG_OBSOLETE_MODPARM=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
@@ -83,17 +101,28 @@ 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_CAMELOT is not set
+# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX 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 is not set
# 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=y
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
@@ -101,23 +130,20 @@ CONFIG_ARCH_PXA=y
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
#
# Intel PXA2xx Implementations
#
# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
# CONFIG_MACH_MAINSTONE is not set
# CONFIG_ARCH_PXA_IDP is not set
# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
CONFIG_MACH_HX2750=y
CONFIG_PXA27x=y
-CONFIG_PXA_KEYS=y
CONFIG_PXA_SSP=y
+CONFIG_PXA_KEYS=y
#
# Processor Type
@@ -128,17 +154,20 @@ 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_DCACHE_DISABLE is not set
+CONFIG_IWMMXT=y
CONFIG_XSCALE_PMU=y
#
# Bus support
#
-CONFIG_ISA_DMA_API=y
#
# PCCARD (PCMCIA/CardBus) support
@@ -159,6 +188,9 @@ CONFIG_PCMCIA_PXA2XX=y
#
CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=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
@@ -168,6 +200,7 @@ 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
#
@@ -175,7 +208,9 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
#
# CPU Frequency scaling
@@ -199,14 +234,15 @@ 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
#
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
+CONFIG_PM_DEBUG=y
+# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
CONFIG_APM=y
#
@@ -217,9 +253,13 @@ 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
@@ -233,12 +273,21 @@ 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_DIAG=m
CONFIG_INET_TCP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
+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
#
@@ -250,6 +299,11 @@ CONFIG_TCP_CONG_BIC=y
# 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
@@ -259,7 +313,6 @@ CONFIG_TCP_CONG_BIC=y
# 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
@@ -280,6 +333,8 @@ CONFIG_IEEE80211=m
CONFIG_IEEE80211_CRYPT_WEP=m
# CONFIG_IEEE80211_CRYPT_CCMP is not set
# CONFIG_IEEE80211_CRYPT_TKIP is not set
+# CONFIG_IEEE80211_SOFTMAC is not set
+CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -292,6 +347,7 @@ CONFIG_STANDALONE=y
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
#
# Connector - unified userspace <-> kernelspace linker
@@ -318,6 +374,7 @@ CONFIG_MTD_BLOCK=y
# 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
@@ -366,7 +423,6 @@ CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
# CONFIG_MTD_BLOCK2MTD is not set
#
@@ -405,6 +461,7 @@ CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -413,6 +470,7 @@ CONFIG_BLK_DEV_INITRD=y
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
CONFIG_BLK_DEV_IDE=y
#
@@ -441,18 +499,17 @@ CONFIG_IDE_GENERIC=y
#
# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
#
# Multi-device support (RAID and LVM)
#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
+# CONFIG_MD is not set
#
# Fusion MPT device support
@@ -462,7 +519,6 @@ CONFIG_DM_MULTIPATH_EMC=m
#
# IEEE 1394 (FireWire) support
#
-# CONFIG_IEEE1394 is not set
#
# I2O device support
@@ -489,6 +545,7 @@ CONFIG_NET_ETHERNET=y
CONFIG_MII=m
# CONFIG_SMC91X is not set
# CONFIG_DM9000 is not set
+# CONFIG_SMC911X is not set
#
# Ethernet (1000 Mbit)
@@ -506,6 +563,7 @@ CONFIG_MII=m
# Wireless LAN (non-hamradio)
#
CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
#
# Obsolete Wireless cards support (pre-802.11)
@@ -522,7 +580,6 @@ CONFIG_NET_RADIO=y
#
# Wireless 802.11b ISA/PCI cards support
#
-# CONFIG_AIRO is not set
CONFIG_HERMES=m
# CONFIG_ATMEL is not set
@@ -535,6 +592,7 @@ CONFIG_PCMCIA_SPECTRUM=m
# CONFIG_PCMCIA_WL3501 is not set
CONFIG_HOSTAP=m
CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
CONFIG_HOSTAP_CS=m
CONFIG_NET_WIRELESS=y
@@ -565,6 +623,7 @@ CONFIG_PPP_BSDCOMP=m
# CONFIG_PPP_MPPE is not set
# CONFIG_PPPOE is not set
# CONFIG_SLIP is not set
+CONFIG_SLHC=m
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
@@ -579,11 +638,12 @@ CONFIG_PPP_BSDCOMP=m
# Input device support
#
CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
#
# Userland interfaces
#
-CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV=m
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
@@ -591,7 +651,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER is not set
+CONFIG_INPUT_POWER=y
#
# Input Device Drivers
@@ -604,6 +664,10 @@ CONFIG_INPUT_TOUCHSCREEN=y
# 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_TSC2101=y
# CONFIG_INPUT_MISC is not set
@@ -619,6 +683,7 @@ CONFIG_TOUCHSCREEN_TSC2101=y
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
#
@@ -645,16 +710,12 @@ CONFIG_UNIX98_PTYS=y
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
# CONFIG_NVRAM is not set
-# CONFIG_SA1100_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
#
-# Ftape, the floppy tape device driver
-#
-
-#
# PCMCIA character devices
#
# CONFIG_SYNCLINK_CS is not set
@@ -666,7 +727,6 @@ CONFIG_UNIX98_PTYS=y
# TPM devices
#
# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
#
# I2C support
@@ -674,22 +734,44 @@ CONFIG_UNIX98_PTYS=y
# 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 is not set
+# CONFIG_HWMON_VID is not set
#
# Misc devices
#
+# CONFIG_TIFM_CORE is not set
#
-# Multimedia Capabilities Port drivers
+# Multi-Function Devices
#
+CONFIG_MFD_TSC2101=y
#
-# Multi-Function Devices
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
#
-CONFIG_MFD_TSC2101=y
#
# Multimedia devices
@@ -704,16 +786,22 @@ CONFIG_MFD_TSC2101=y
#
# Graphics support
#
+CONFIG_FIRMWARE_EDID=y
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_BACKLIGHT is not set
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+# CONFIG_FB_PXA_OVERLAY is not set
# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
# CONFIG_FB_VIRTUAL is not set
#
@@ -730,7 +818,14 @@ CONFIG_FONT_8x16=y
#
# Logo configuration
#
-# CONFIG_LOGO is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+# CONFIG_LOGO_OZ240_CLUT224 is not set
+# CONFIG_LOGO_OZ480_CLUT224 is not set
+# CONFIG_LOGO_OZ640_CLUT224 is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_DEVICE=y
@@ -744,10 +839,16 @@ CONFIG_BACKLIGHT_HX2750=y
# CONFIG_SOUND is not set
#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
# USB support
#
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
#
@@ -766,14 +867,16 @@ CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=y
CONFIG_MMC_PXA=y
-# CONFIG_MMC_WBSD is not set
+# CONFIG_MMC_TIFM_SD 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
@@ -781,15 +884,17 @@ CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
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 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 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_SA1100=y
# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
#
# File systems
@@ -798,14 +903,17 @@ 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_JBD 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 is not set
@@ -832,12 +940,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# Pseudo filesystems
#
CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
-# CONFIG_HUGETLBFS is not set
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL 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
@@ -849,15 +958,14 @@ CONFIG_RAMFS=y
# 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_SUMMARY=y
# CONFIG_JFFS2_RUBIN is not set
CONFIG_CRAMFS=y
CONFIG_SQUASHFS=m
@@ -900,6 +1008,7 @@ CONFIG_MSDOS_PARTITION=y
# 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
#
@@ -947,6 +1056,11 @@ CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_UTF8=y
#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
# Profiling support
#
# CONFIG_PROFILING is not set
@@ -955,24 +1069,33 @@ CONFIG_NLS_UTF8=y
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
-CONFIG_DEBUG_KERNEL=y
+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_LOG_BUF_SHIFT=14
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
+# 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_RWSEMS is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_LL=y
# CONFIG_DEBUG_ICEDCC is not set
@@ -987,7 +1110,11 @@ CONFIG_DEBUG_LL=y
# Cryptographic options
#
CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_MANAGER=m
# 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_MD5 is not set
@@ -996,6 +1123,10 @@ CONFIG_CRYPTO=y
# 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=m
+# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_DES is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
@@ -1019,10 +1150,12 @@ CONFIG_CRYPTO_CRC32C=y
#
# Library routines
#
+CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=m
# CONFIG_CRC16 is not set
CONFIG_CRC32=y
CONFIG_LIBCRC32C=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
-
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-rp-2.6.19/connectplus-remove-ide-HACK.patch b/packages/linux/linux-rp-2.6.19/connectplus-remove-ide-HACK.patch
deleted file mode 100644
index 4414b21191..0000000000
--- a/packages/linux/linux-rp-2.6.19/connectplus-remove-ide-HACK.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: linux-2.6.13/drivers/ide/legacy/ide-cs.c
-===================================================================
---- linux-2.6.13.orig/drivers/ide/legacy/ide-cs.c 2005-09-01 22:43:46.000000000 +0100
-+++ linux-2.6.13/drivers/ide/legacy/ide-cs.c 2005-09-01 22:45:46.000000000 +0100
-@@ -488,7 +488,6 @@
- PCMCIA_DEVICE_PROD_ID123("KODAK Picture Card ", "KODAK ", "V100K", 0x94a0d8f3, 0xe4fc3ea0, 0xe5e7eed4),
- PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
- PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e),
-- PCMCIA_MFC_DEVICE_PROD_ID12(1, "SanDisk", "ConnectPlus", 0x7a954bd9, 0x74be00c6),
- PCMCIA_DEVICE_NULL,
- };
- MODULE_DEVICE_TABLE(pcmcia, ide_ids);
diff --git a/packages/linux/linux-rp-2.6.19/defconfig-akita b/packages/linux/linux-rp-2.6.19/defconfig-akita
deleted file mode 100644
index 249466ac87..0000000000
--- a/packages/linux/linux-rp-2.6.19/defconfig-akita
+++ /dev/null
@@ -1,1572 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Thu Mar 23 22:11:12 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# 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=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-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_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_PXA_SHARPSL_25x is not set
-CONFIG_PXA_SHARPSL_27x=y
-CONFIG_MACH_AKITA=y
-CONFIG_MACH_SPITZ=y
-CONFIG_MACH_BORZOI=y
-CONFIG_PXA27x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_IWMMXT=y
-CONFIG_PXA_SHARP_Cxx00=y
-CONFIG_PXA_SSP=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# 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_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# 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_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL 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
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# 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_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=y
-# 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=m
-CONFIG_INET_TCP_DIAG=m
-# 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_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# 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_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE 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=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-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 is not set
-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_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=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
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER 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 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_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# 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_SHARP_SL=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_BLKMTD 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=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM 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_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_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_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# 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_IDE_ARM 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=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=m
-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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# 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_CORGI is not set
-CONFIG_KEYBOARD_SPITZ=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# 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_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-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_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# 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_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB 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 is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# 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 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_SPITZ=y
-# CONFIG_LEDS_TOSA is not set
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# 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_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_W100 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_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-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 is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
-# 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
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-CONFIG_SND_PXA2xx_SOC_I2S=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-CONFIG_SND_PXA2xx_SOC_SPITZ=m
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8731 is not set
-CONFIG_SND_SOC_WM8750=m
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# 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=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_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# 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_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-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_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=m
-CONFIG_USB_HIDINPUT=y
-# 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=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# 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=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# 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_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# 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_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-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_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 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=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_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=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD 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_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-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
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST 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=m
-# CONFIG_EXT3_FS_XATTR is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG 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_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# 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 is not set
-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_SYSFS=y
-CONFIG_TMPFS=y
-# 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_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-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 is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-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=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR 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=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-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=y
-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=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL 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=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 is not set
-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=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.19/defconfig-c7x0 b/packages/linux/linux-rp-2.6.19/defconfig-c7x0
deleted file mode 100644
index 1d702f60c0..0000000000
--- a/packages/linux/linux-rp-2.6.19/defconfig-c7x0
+++ /dev/null
@@ -1,1608 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Mon May 22 09:00:01 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# 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=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-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_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-# CONFIG_MACH_POODLE is not set
-CONFIG_MACH_CORGI=y
-CONFIG_MACH_SHEPHERD=y
-CONFIG_MACH_HUSKY=y
-# CONFIG_MACH_TOSA is not set
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_PXA_SHARP_C7xx=y
-CONFIG_PXA_SSP=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# 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_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# 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_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-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=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_PXA25x=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=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# 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=m
-# 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=y
-# 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=m
-CONFIG_INET_TCP_DIAG=m
-# 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_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# 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_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE 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=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-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 is not set
-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_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=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
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER 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 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_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# 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_SHARP_SL=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_BLKMTD 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=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM 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_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_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_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# 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_IDE_ARM 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=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=m
-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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# 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_CORGI=y
-# CONFIG_KEYBOARD_SPITZ is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# 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_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-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_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB 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 is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# 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 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_CORGI=y
-# CONFIG_LEDS_TOSA is not set
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO 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_S1D13XXX is not set
-# CONFIG_FB_PXA is not set
-CONFIG_FB_W100=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_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-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=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
-# 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
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-CONFIG_SND_PXA2xx_SOC_I2S=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-CONFIG_SND_PXA2xx_SOC_CORGI=m
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-CONFIG_SND_SOC_WM8731=m
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-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_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-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_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=m
-CONFIG_USB_HIDINPUT=y
-# 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=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# 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=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_DSBR=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_PWC 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_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# 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_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-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_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 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=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_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X 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_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-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
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST 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_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 is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# 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 is not set
-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_SYSFS=y
-CONFIG_TMPFS=y
-# 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_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-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 is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-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=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR 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=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-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=y
-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=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL 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=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 is not set
-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=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.19/defconfig-collie b/packages/linux/linux-rp-2.6.19/defconfig-collie
deleted file mode 100644
index f488d42d93..0000000000
--- a/packages/linux/linux-rp-2.6.19/defconfig-collie
+++ /dev/null
@@ -1,1641 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Tue Jul 4 16:35:35 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-
-#
-# 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=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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_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=y
-# CONFIG_MODVERSIONS is not set
-# 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=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-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_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_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-CONFIG_ARCH_SA1100=y
-# 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_SA1100_CERF is not set
-CONFIG_SA1100_COLLIE=y
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SSP is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_SA1100=y
-CONFIG_CPU_32v4=y
-CONFIG_CPU_ABRT_EV4=y
-CONFIG_CPU_CACHE_V4WB=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WB=y
-
-#
-# Processor Features
-#
-CONFIG_KEXEC=y
-CONFIG_SHARP_LOCOMO=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-CONFIG_ISA=y
-
-#
-# 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_I82365 is not set
-# CONFIG_TCIC is not set
-CONFIG_PCMCIA_SA1100=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-# CONFIG_AEABI is not set
-CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
-CONFIG_NODES_SHIFT=2
-CONFIG_SELECT_MEMORY_MODEL=y
-# CONFIG_FLATMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM_MANUAL=y
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_NEED_MULTIPLE_NODES=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=32M fbcon=rotate:1 dyntick=enable quiet"
-# CONFIG_XIP_KERNEL 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
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# 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=m
-# 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=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_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# 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_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# 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 is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE 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=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_SA1100_FIR=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BT_HCIUSB is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIBCM203X is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=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 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_DEBUG_DRIVER 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 is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=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
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_OBSOLETE_CHIPS=y
-CONFIG_MTD_SHARP=y
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_SA1100=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
-
-#
-# 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_PNP is not set
-
-#
-# Block devices
-#
-# 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 is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# 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=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_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_IDE_GENERIC 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=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=m
-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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# 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_NET_VENDOR_3COM is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_NET_VENDOR_RACAL 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 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# 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
-# CONFIG_ARLAN is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# 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_LOCOMO=y
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_INPUT_MOUSE 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 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=m
-CONFIG_SERIAL_8250_CS=m
-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_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=m
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# 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_ELEKTOR is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB 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 is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# 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 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-CONFIG_MCP=y
-CONFIG_MCP_SA11X0=y
-CONFIG_MCP_UCB1200=y
-# CONFIG_MCP_UCB1200_AUDIO is not set
-CONFIG_MCP_UCB1200_TS=m
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_LOCOMO is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
-
-#
-# 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 is not set
-# CONFIG_VIDEO_PMS 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_VIDEO_OVCAMCHIP is not set
-
-#
-# Encoders and Decoders
-#
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_CX25840 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# V4L USB devices
-#
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_ET61X251 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_W9968CF is not set
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB 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_FIRMWARE_EDID is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-CONFIG_FB_SA1100=y
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-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
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_OHAND_CLUT224 is not set
-CONFIG_LOGO_OZ240_CLUT224=y
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_LOCOMO=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=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=m
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# SoC audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-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_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_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# 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_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=m
-CONFIG_USB_HIDINPUT=y
-# 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_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 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 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=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=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_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRPRIME=m
-CONFIG_USB_SERIAL_ANYDATA=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 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_NAVMAN is not set
-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_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OMNINET is not set
-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_CYTHERM is not set
-# CONFIG_USB_PHIDGETKIT is not set
-# CONFIG_USB_PHIDGETSERVO is not set
-# CONFIG_USB_IDMOUSE 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=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_PXA27X 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_AT91 is not set
-CONFIG_USB_GADGET_SA1100=y
-CONFIG_USB_SA1100=y
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-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=y
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-
-#
-# 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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST 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_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 is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-CONFIG_FUSE_FS=m
-
-#
-# 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_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_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=m
-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 is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-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=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR 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=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-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=y
-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=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL 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=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 is not set
-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 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.19/defconfig-hx2000 b/packages/linux/linux-rp-2.6.19/defconfig-hx2000
deleted file mode 100644
index ea56989b75..0000000000
--- a/packages/linux/linux-rp-2.6.19/defconfig-hx2000
+++ /dev/null
@@ -1,1028 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.15-rc1-git7
-# Sat Nov 19 23:13:51 2005
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_CLEAN_COMPILE is not set
-CONFIG_BROKEN=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 is not set
-# CONFIG_SYSVIPC is not set
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=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_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_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-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_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_PXA_SHARPSL is not set
-CONFIG_MACH_HX2750=y
-CONFIG_PXA27x=y
-CONFIG_PXA_KEYS=y
-CONFIG_PXA_SSP=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-
-#
-# Bus support
-#
-CONFIG_ISA_DMA_API=y
-
-#
-# 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_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=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_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL 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
-
-#
-# 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=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-# 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=y
-# 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=m
-CONFIG_INET_TCP_DIAG=m
-# 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
-# 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=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-# CONFIG_IEEE80211_CRYPT_CCMP is not set
-# CONFIG_IEEE80211_CRYPT_TKIP is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER 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 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_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# 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=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-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_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
-# CONFIG_MTD_XIP 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_SHARP_SL 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_BLKMTD 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_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_INITRD=y
-# 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_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# 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
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM 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 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# CONFIG_AIRO is not set
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER 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=y
-# 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_TSC2101=y
-# 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_SA1100_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-CONFIG_MFD_TSC2101=y
-
-#
-# 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_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS 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_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_HX2750=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-# CONFIG_MMC_WBSD is not set
-
-#
-# Real Time Clock
-#
-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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST 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_JBD 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_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# 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 is not set
-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_SYSFS=y
-# CONFIG_TMPFS is not set
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_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_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-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 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=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_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-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=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_MAGIC_SYSRQ is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_PREEMPT=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-CONFIG_DEBUG_LL=y
-# CONFIG_DEBUG_ICEDCC is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-# 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_DES 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=m
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_DEFLATE=y
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-CONFIG_CRYPTO_CRC32C=y
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-
diff --git a/packages/linux/linux-rp-2.6.19/defconfig-poodle b/packages/linux/linux-rp-2.6.19/defconfig-poodle
deleted file mode 100644
index deacd170f2..0000000000
--- a/packages/linux/linux-rp-2.6.19/defconfig-poodle
+++ /dev/null
@@ -1,1655 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Mon Jul 10 23:38:56 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-
-#
-# 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=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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_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=y
-# CONFIG_MODVERSIONS is not set
-# 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=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-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_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_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-CONFIG_MACH_POODLE=y
-# CONFIG_MACH_CORGI is not set
-# CONFIG_MACH_SHEPHERD is not set
-# CONFIG_MACH_HUSKY is not set
-# CONFIG_MACH_TOSA is not set
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_PXA_SSP=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_LOCOMO=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# 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_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-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_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-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=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_PXA25x=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=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# 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_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=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_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# 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_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# 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 is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE 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=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-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 is not set
-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_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=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 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_DEBUG_DRIVER 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 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_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# 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_SHARP_SL=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
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM 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_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_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# 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_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# 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_IDE_ARM 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=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=m
-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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# 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
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# 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_LOCOMO=y
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_CORGI is not set
-# CONFIG_KEYBOARD_SPITZ is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# 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_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-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_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB 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 is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# 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 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_LOCOMO=y
-# CONFIG_LEDS_TOSA is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=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 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_VIDEO_OVCAMCHIP is not set
-
-#
-# Encoders and Decoders
-#
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_CX25840 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# V4L USB devices
-#
-# CONFIG_VIDEO_EM28XX is not set
-CONFIG_USB_DSBR=m
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_USB_DABUSB=m
-
-#
-# 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_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_W100 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_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# 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=y
-# 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=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_OHAND_CLUT224 is not set
-CONFIG_LOGO_OZ240_CLUT224=y
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_LCD_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-CONFIG_BACKLIGHT_LOCOMO=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=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
-
-#
-# ALSA ARM devices
-#
-# CONFIG_SND_PXA2XX_AC97 is not set
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8731 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8974 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_MAINSTONE_BASEBAND is not set
-# CONFIG_SND_MAINSTONE_BLUETOOTH is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-CONFIG_SND_PXA2xx_SOC_POODLE=m
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-CONFIG_SND_SOC_WM8731=m
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM8974 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-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_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_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# 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_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=m
-CONFIG_USB_HIDINPUT=y
-# 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=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# 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=m
-CONFIG_USB_MICROTEK=m
-
-#
-# 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_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# 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_ANYDATA is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-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 is not set
-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 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_NAVMAN is not set
-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_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X 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_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-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
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# 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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST 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_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 is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# 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 is not set
-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_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=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-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 is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-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=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR 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=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-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=y
-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=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL 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=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 is not set
-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=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.19/defconfig-qemuarm b/packages/linux/linux-rp-2.6.19/defconfig-qemuarm
deleted file mode 100644
index abb6726556..0000000000
--- a/packages/linux/linux-rp-2.6.19/defconfig-qemuarm
+++ /dev/null
@@ -1,1193 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Sat Aug 26 22:45:02 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_VECTORS_BASE=0xffff0000
-
-#
-# 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 is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-# CONFIG_EMBEDDED is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-CONFIG_OBSOLETE_INTERMODULE=y
-
-#
-# Loadable module support
-#
-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
-
-#
-# Block layer
-#
-# CONFIG_BLK_DEV_IO_TRACE 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"
-
-#
-# System Type
-#
-# 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_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 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_VERSATILE=y
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Versatile platform type
-#
-CONFIG_ARCH_VERSATILE_PB=y
-# CONFIG_MACH_VERSATILE_AB is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_ARM926T=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5TJ=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_COPY_V4WB=y
-CONFIG_CPU_TLB_V4WBI=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_KEXEC is not set
-CONFIG_ARM_VIC=y
-CONFIG_ICST307=y
-
-#
-# Bus support
-#
-CONFIG_ARM_AMBA=y
-CONFIG_PCI=y
-# CONFIG_PCI_DEBUG is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_PREEMPT is not set
-# 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_LEDS=y
-CONFIG_LEDS_TIMER=y
-CONFIG_LEDS_CPU=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
-# 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
-CONFIG_VFP=y
-
-#
-# 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=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG 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_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_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL 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 is not set
-# CONFIG_DEBUG_DRIVER 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 is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_AFS_PARTS=y
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=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
-
-#
-# 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=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_GEOMETRY 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_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 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_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=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=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH 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 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_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 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=y
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
-# 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_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# 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_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-CONFIG_SMC91X=y
-# CONFIG_DM9000 is not set
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_PCI 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_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
-
-#
-# 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=y
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER 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_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_UINPUT is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-# CONFIG_SERIO_SERPORT is not set
-CONFIG_SERIO_AMBAKMI=y
-# 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 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_AMBA_PL011=y
-CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
-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 is not set
-# 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 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_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-# CONFIG_LEDS_CLASS is not set
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-# CONFIG_LEDS_TRIGGERS is not set
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB 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_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-CONFIG_FB_ARMCLCD=y
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_MATROX 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_TRIDENT is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-# 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_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# 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 is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_HCD is not set
-# 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 is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_AIPTEK is not set
-CONFIG_USB_WACOM=y
-# 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 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 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=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_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_LD 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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_TEST 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_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 is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# 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_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_NTFS_FS is not set
-
-#
-# 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_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-# CONFIG_SQUASHFS 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=y
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-# CONFIG_NFSD_TCP is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=y
-# 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
-# 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=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# 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 is not set
-# 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
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_INFO=y
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-CONFIG_FORCED_INLINING=y
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# 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 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.19/defconfig-qemux86 b/packages/linux/linux-rp-2.6.19/defconfig-qemux86
deleted file mode 100644
index fb66874b90..0000000000
--- a/packages/linux/linux-rp-2.6.19/defconfig-qemux86
+++ /dev/null
@@ -1,1566 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Mon Oct 16 19:42:42 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_GENERIC_HWEIGHT=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_DMI=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=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=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-# CONFIG_IKCONFIG is not set
-# CONFIG_CPUSETS is not set
-# CONFIG_RELAY is not set
-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_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 is not set
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_LBD=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF 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_SMP=y
-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=y
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# 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_L1_CACHE_SHIFT=7
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_F00F_BUG=y
-CONFIG_X86_INTEL_USERCOPY=y
-# CONFIG_HPET_TIMER is not set
-CONFIG_NR_CPUS=8
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_PREEMPT_BKL=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_NONFATAL=y
-CONFIG_X86_MCE_P4THERMAL=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_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_IRQBALANCE=y
-# CONFIG_REGPARM is not set
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
-# CONFIG_KEXEC is not set
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_HOTPLUG_CPU is not set
-
-#
-# Power management options (ACPI, APM)
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-
-#
-# ACPI (Advanced Configuration and Power Interface) Support
-#
-CONFIG_ACPI=y
-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=m
-# CONFIG_ACPI_IBM_DOCK 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_MSI is not set
-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=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_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 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=y
-# 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 is not set
-# CONFIG_IP_NF_FTP is not set
-# CONFIG_IP_NF_IRC is not set
-# CONFIG_IP_NF_NETBIOS_NS is not set
-# CONFIG_IP_NF_TFTP is not set
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_PPTP is not set
-# CONFIG_IP_NF_H323 is not set
-CONFIG_IP_NF_QUEUE=y
-
-#
-# 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=m
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-# CONFIG_MTD is not set
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=y
-CONFIG_PARPORT_PC=y
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_1284 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=y
-
-#
-# Block devices
-#
-CONFIG_BLK_DEV_FD=y
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE 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 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_INITRD is not set
-# 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=y
-CONFIG_IDEDISK_MULTI_MODE=y
-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=y
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_IDEPNP is not set
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_SHARE_IRQ=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_RZ1000=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
-CONFIG_IDEDMA_PCI_AUTO=y
-# CONFIG_IDEDMA_ONLYDISK is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_ATIIXP is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-# CONFIG_BLK_DEV_CS5535 is not set
-# CONFIG_BLK_DEV_HPT34X is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-CONFIG_BLK_DEV_PIIX=y
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SIS5513 is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_IDE_CHIPSETS is not set
-CONFIG_BLK_DEV_IDEDMA=y
-# CONFIG_IDEDMA_IVB is not set
-CONFIG_IDEDMA_AUTO=y
-# 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 is not set
-CONFIG_CHR_DEV_SG=y
-# 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 is not set
-# 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=m
-# CONFIG_SCSI_ADVANSYS 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=y
-# CONFIG_SCSI_SATA_AHCI is not set
-# CONFIG_SCSI_SATA_SVW is not set
-CONFIG_SCSI_ATA_PIIX=y
-# CONFIG_SCSI_SATA_MV is not set
-# CONFIG_SCSI_SATA_NV is not set
-# CONFIG_SCSI_PDC_ADMA is not set
-# CONFIG_SCSI_SATA_QSTOR is not set
-# CONFIG_SCSI_SATA_PROMISE is not set
-CONFIG_SCSI_SATA_SX4=m
-# CONFIG_SCSI_SATA_SIL is not set
-# CONFIG_SCSI_SATA_SIL24 is not set
-CONFIG_SCSI_SATA_SIS=m
-# CONFIG_SCSI_SATA_ULI is not set
-# CONFIG_SCSI_SATA_VIA is not set
-# CONFIG_SCSI_SATA_VITESSE is not set
-CONFIG_SCSI_SATA_INTEL_COMBINED=y
-# 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_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-CONFIG_SCSI_IPR=m
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP 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_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=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# 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=y
-
-#
-# Subsystem Options
-#
-# CONFIG_IEEE1394_VERBOSEDEBUG is not set
-# CONFIG_IEEE1394_OUI_DB is not set
-# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set
-# CONFIG_IEEE1394_EXPORT_FULL_API is not set
-
-#
-# Device Drivers
-#
-
-#
-# Texas Instruments PCILynx requires I2C
-#
-CONFIG_IEEE1394_OHCI1394=y
-
-#
-# Protocol Drivers
-#
-# CONFIG_IEEE1394_VIDEO1394 is not set
-# CONFIG_IEEE1394_SBP2 is not set
-# CONFIG_IEEE1394_ETH1394 is not set
-# CONFIG_IEEE1394_DV1394 is not set
-CONFIG_IEEE1394_RAWIO=y
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=m
-# 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=y
-# CONFIG_E2100 is not set
-# CONFIG_EWRK3 is not set
-# CONFIG_EEXPRESS is not set
-# CONFIG_EEXPRESS_PRO is not set
-# CONFIG_HPLAN_PLUS is not set
-# CONFIG_HPLAN is not set
-# CONFIG_LP486E is not set
-# CONFIG_ETH16I is not set
-CONFIG_NE2000=y
-# CONFIG_ZNET is not set
-# CONFIG_SEEQ8005 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_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=y
-# CONFIG_8139CP is not set
-CONFIG_8139TOO=y
-CONFIG_8139TOO_PIO=y
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET 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_NET_POCKET 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=m
-# CONFIG_S2IO_NAPI 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_PLIP 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
-# CONFIG_INPUT_POWER 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_PARKBD 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_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-CONFIG_PRINTER=y
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-# CONFIG_TIPAR is not set
-
-#
-# 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_AGP=y
-# CONFIG_AGP_ALI is not set
-# CONFIG_AGP_ATI is not set
-# CONFIG_AGP_AMD is not set
-# CONFIG_AGP_AMD64 is not set
-CONFIG_AGP_INTEL=y
-# CONFIG_AGP_NVIDIA is not set
-# CONFIG_AGP_SIS is not set
-# CONFIG_AGP_SWORKS is not set
-# CONFIG_AGP_VIA is not set
-# CONFIG_AGP_EFFICEON is not set
-CONFIG_DRM=y
-# CONFIG_DRM_TDFX is not set
-# CONFIG_DRM_R128 is not set
-# CONFIG_DRM_RADEON is not set
-# CONFIG_DRM_I810 is not set
-# CONFIG_DRM_I830 is not set
-# CONFIG_DRM_I915 is not set
-# CONFIG_DRM_MGA is not set
-# CONFIG_DRM_SIS is not set
-# CONFIG_DRM_VIA is not set
-# CONFIG_DRM_SAVAGE 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
-
-#
-# Multi-Function Devices
-#
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB 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_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-# 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_FB_VESA_STD is not set
-CONFIG_FB_VESA_TNG=y
-CONFIG_FB_VESA_DEFAULT_MODE="640x480-32@60"
-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 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_VGACON_SOFT_SCROLLBACK is not set
-# 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 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_SEQUENCER=y
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=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_AC97_CODEC=y
-CONFIG_SND_AC97_BUS=y
-# 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
-
-#
-# ISA devices
-#
-# CONFIG_SND_ADLIB is not set
-# CONFIG_SND_AD1816A is not set
-# CONFIG_SND_AD1848 is not set
-# CONFIG_SND_ALS100 is not set
-# CONFIG_SND_AZT2320 is not set
-# CONFIG_SND_CMI8330 is not set
-# CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4232 is not set
-# CONFIG_SND_CS4236 is not set
-# CONFIG_SND_DT019X is not set
-# CONFIG_SND_ES968 is not set
-# CONFIG_SND_ES1688 is not set
-# CONFIG_SND_ES18XX is not set
-# CONFIG_SND_GUSCLASSIC is not set
-# CONFIG_SND_GUSEXTREME is not set
-# CONFIG_SND_GUSMAX is not set
-# CONFIG_SND_INTERWAVE is not set
-# CONFIG_SND_INTERWAVE_STB is not set
-# CONFIG_SND_OPL3SA2 is not set
-# CONFIG_SND_OPTI92X_AD1848 is not set
-# CONFIG_SND_OPTI92X_CS4231 is not set
-# CONFIG_SND_OPTI93X is not set
-# CONFIG_SND_MIRO is not set
-# CONFIG_SND_SB8 is not set
-# CONFIG_SND_SB16 is not set
-# CONFIG_SND_SBAWE is not set
-# CONFIG_SND_SGALAXY is not set
-# CONFIG_SND_SSCAPE is not set
-# CONFIG_SND_WAVEFRONT is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 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_CS5535AUDIO 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=y
-# 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
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_USX2Y is not set
-
-#
-# SoC audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# 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_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=y
-
-#
-# 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_TOUCHSCREEN 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 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=y
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# 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=m
-# CONFIG_USB_PHIDGETKIT is not set
-CONFIG_USB_PHIDGETSERVO=m
-# 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
-
-#
-# LED devices
-#
-# CONFIG_NEW_LEDS is not set
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-
-#
-# InfiniBand support
-#
-# CONFIG_INFINIBAND is not set
-
-#
-# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
-#
-# CONFIG_EDAC is not set
-
-#
-# Real Time Clock
-#
-# CONFIG_RTC_CLASS 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 is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=y
-# CONFIG_FUSE_FS is not set
-
-#
-# 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_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 is not set
-# CONFIG_SQUASHFS 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 is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=y
-# CONFIG_NFSD_V3 is not set
-CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# 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
-# 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=y
-CONFIG_OPROFILE=y
-# 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=15
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_FS is not set
-# CONFIG_UNWIND_INFO is not set
-CONFIG_EARLY_PRINTK=y
-CONFIG_STACK_BACKTRACE_COLS=2
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_DOUBLEFAULT=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_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-CONFIG_KTIME_SCALAR=y
diff --git a/packages/linux/linux-rp-2.6.19/defconfig-spitz b/packages/linux/linux-rp-2.6.19/defconfig-spitz
deleted file mode 100644
index 824fd57aaa..0000000000
--- a/packages/linux/linux-rp-2.6.19/defconfig-spitz
+++ /dev/null
@@ -1,1603 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Sun Sep 3 23:29:17 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-
-#
-# 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=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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_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=y
-# CONFIG_MODVERSIONS is not set
-# 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=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-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_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_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_PXA_SHARPSL_25x is not set
-CONFIG_PXA_SHARPSL_27x=y
-CONFIG_MACH_AKITA=y
-CONFIG_MACH_SPITZ=y
-CONFIG_MACH_BORZOI=y
-CONFIG_PXA27x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_IWMMXT=y
-CONFIG_PXA_SHARP_Cxx00=y
-CONFIG_PXA_SSP=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# 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_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-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_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/hda1 rootfstype=ext3 rw fbcon=rotate:1 dyntick=enable debug"
-# CONFIG_XIP_KERNEL 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
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# 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_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=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_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# 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_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# 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 is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE 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=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-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 is not set
-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_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=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 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_DEBUG_DRIVER 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 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_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# 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_SHARP_SL=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
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM 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_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_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# 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_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# 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_IDE_ARM 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=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=m
-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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# 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
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# 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_CORGI is not set
-CONFIG_KEYBOARD_SPITZ=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# 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_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-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_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# 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_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB 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 is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# 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 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_SPITZ=y
-# CONFIG_LEDS_TOSA is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_USB_DABUSB=m
-
-#
-# 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_FIRMWARE_EDID=y
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_LCD_QVGA=y
-# CONFIG_FB_PXA_LCD_VGA is not set
-CONFIG_FB_PXA_OVERLAY=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_W100 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_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-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=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_OHAND_CLUT224 is not set
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-CONFIG_LOGO_OZ640_CLUT224=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-
-#
-# 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 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_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=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-# CONFIG_SND_PCM_XRUN_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
-# 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
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-CONFIG_SND_PXA2xx_SOC_I2S=m
-CONFIG_SND_PXA2xx_SOC_SPITZ=m
-
-#
-# SoC Audio for the Atmel AT91
-#
-
-#
-# SoC Audio for the Freescale i.MX
-#
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8731 is not set
-CONFIG_SND_SOC_WM8750=m
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM8974 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# 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 is not set
-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_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# 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_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# 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_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=m
-CONFIG_USB_HIDINPUT=y
-# 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=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# 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=m
-CONFIG_USB_MICROTEK=m
-
-#
-# 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_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# 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_ANYDATA is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-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 is not set
-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 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_NAVMAN is not set
-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_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=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD 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_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-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
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# 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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST 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 is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG 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_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# 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 is not set
-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_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=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-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 is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-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=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR 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=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-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=y
-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=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL 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=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 is not set
-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=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
diff --git a/packages/linux/linux-rp-2.6.19/defconfig-tosa b/packages/linux/linux-rp-2.6.19/defconfig-tosa
deleted file mode 100644
index 4144e5cf38..0000000000
--- a/packages/linux/linux-rp-2.6.19/defconfig-tosa
+++ /dev/null
@@ -1,1608 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc5-git5
-# Tue Mar 14 09:05:26 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# 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=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-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_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-# CONFIG_MACH_POODLE is not set
-# CONFIG_MACH_CORGI is not set
-# CONFIG_MACH_SHEPHERD is not set
-# CONFIG_MACH_HUSKY is not set
-CONFIG_MACH_TOSA=y
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS 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_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-CONFIG_TOSHIBA_TC6393XB=y
-
-#
-# Bus support
-#
-
-#
-# 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_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# 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_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-# CONFIG_CPU_FREQ_DEBUG is not set
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=m
-CONFIG_CPU_FREQ_GOV_USERSPACE=m
-CONFIG_CPU_FREQ_GOV_ONDEMAND=m
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
-CONFIG_CPU_FREQ_PXA25x=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=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# 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=m
-# 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=y
-# 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=m
-CONFIG_INET_TCP_DIAG=m
-# 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_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# 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_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE 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=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-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 is not set
-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_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=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
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER 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 is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=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
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_SHARP_SL=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_BLKMTD 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=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_TMIO=y
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_SHARPSL is not set
-# CONFIG_MTD_NAND_NANDSIM 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_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 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_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# 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 is not set
-# CONFIG_IDE_ARM 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=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=m
-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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# 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_CORGI is not set
-# CONFIG_KEYBOARD_SPITZ is not set
-CONFIG_KEYBOARD_TOSA=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_CORGI 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_WM97XX=y
-# CONFIG_TOUCHSCREEN_WM9705 is not set
-CONFIG_TOUCHSCREEN_WM9712=y
-# CONFIG_TOUCHSCREEN_WM9713 is not set
-# CONFIG_TOUCHSCREEN_WM97XX_PXA 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-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_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# 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
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# 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_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB 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 is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# 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
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TOSA=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO 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_S1D13XXX is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_W100 is not set
-CONFIG_FB_TMIO=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_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
-
-#
-# 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=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-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_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_BUS=y
-CONFIG_SND_DUMMY=m
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-# CONFIG_SND_PXA2XX_AC97 is not set
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=y
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=y
-CONFIG_SND_PXA2xx_SOC_AC97=y
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-CONFIG_SND_PXA2xx_SOC_TOSA=y
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8731 is not set
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-CONFIG_SND_SOC_WM9712=y
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# 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=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_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# 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_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-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_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=m
-CONFIG_USB_HIDINPUT=y
-# 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=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# 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=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_DSBR=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_PWC 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=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-# CONFIG_USB_NET_ZAURUS is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# 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_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-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_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 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=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_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=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X 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_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-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
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-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
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST 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_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 is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-CONFIG_FUSE_FS=m
-
-#
-# 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_SYSFS=y
-CONFIG_TMPFS=y
-# 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_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-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 is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-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=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR 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=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-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=y
-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=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL 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=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 is not set
-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 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_GENERIC_ALLOCATOR=y
diff --git a/packages/linux/linux-rp-2.6.19/hrw-pcmcia-ids-r5.patch b/packages/linux/linux-rp-2.6.19/hrw-pcmcia-ids-r5.patch
deleted file mode 100644
index b09acacadd..0000000000
--- a/packages/linux/linux-rp-2.6.19/hrw-pcmcia-ids-r5.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
-Few cards informations submitted by OpenZaurus users.
-
-Seagate 8GB microdrive:
- product info: "SEAGATE", "ST1"
- manfid 0x0111, 0x0000
-
-One CF card:
- product info: "SAMSUNG", "04/05/06", "", ""
- manfid : 0x0000, 0x0000
-
-Ridata 8GB Pro 150X Compact Flash Card:
- product info: "SMI VENDOR", "SMI PRODUCT", ""
- manfid: 0x000a, 0x0000
-
- product info: "M-Systems", "CF500", ""
- manfid: 0x000a, 0x0000
-
- product info: "TRANSCEND", "TS4GCF120", ""
- manfid: 0x000a, 0x0000
-
-Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
- drivers/ide/legacy/ide-cs.c | 5 +++++
- drivers/net/pcmcia/pcnet_cs.c | 2 ++
- 2 files changed, 7 insertions(+)
-
-Index: linux-2.6.18/drivers/ide/legacy/ide-cs.c
-===================================================================
---- linux-2.6.18.orig/drivers/ide/legacy/ide-cs.c 2006-12-06 00:55:51.000000000 +0000
-+++ linux-2.6.18/drivers/ide/legacy/ide-cs.c 2006-12-06 00:55:55.000000000 +0000
-@@ -398,12 +398,17 @@ static struct pcmcia_device_id ide_ids[]
- PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149),
- PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674),
- PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b),
-+ PCMCIA_DEVICE_PROD_ID12("M-Systems", "CF500", 0x7ed2ad87, 0x7a13045c),
- PCMCIA_DEVICE_PROD_ID2("NinjaATA-", 0xebe0bd79),
- PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591),
- PCMCIA_DEVICE_PROD_ID12("PCMCIA", "PnPIDE", 0x281f1c5d, 0x0c694728),
- PCMCIA_DEVICE_PROD_ID12("SHUTTLE TECHNOLOGY LTD.", "PCCARD-IDE/ATAPI Adapter", 0x4a3f0ba0, 0x322560e1),
-+ PCMCIA_DEVICE_PROD_ID12("SEAGATE", "ST1", 0x87c1b330, 0xe1f30883),
-+ PCMCIA_DEVICE_PROD_ID12("SAMSUNG", "04/05/06", 0x43d74cb4, 0x6a22777d),
-+ PCMCIA_DEVICE_PROD_ID12("SMI VENDOR", "SMI PRODUCT", 0x30896c92, 0x703cc5f6),
- PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "MK2001MPL", 0xb4585a1a, 0x3489e003),
- PCMCIA_DEVICE_PROD_ID1("TRANSCEND 512M ", 0xd0909443),
-+ PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS4GCF120", 0x709b1bf1, 0xf54a91c8),
- PCMCIA_DEVICE_PROD_ID12("WIT", "IDE16", 0x244e5994, 0x3e232852),
- PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
- PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e),
-Index: linux-2.6.18/drivers/net/pcmcia/pcnet_cs.c
-===================================================================
---- linux-2.6.18.orig/drivers/net/pcmcia/pcnet_cs.c 2006-09-20 04:42:06.000000000 +0100
-+++ linux-2.6.18/drivers/net/pcmcia/pcnet_cs.c 2006-12-06 00:57:27.000000000 +0000
-@@ -1770,6 +1770,8 @@ static struct pcmcia_device_id pcnet_ids
- PCMCIA_DEVICE_CIS_PROD_ID12("TAMARACK", "Ethernet", 0xcf434fba, 0x00b2e941, "tamarack.cis"),
- PCMCIA_DEVICE_PROD_ID123("Fast Ethernet", "CF Size PC Card", "1.0",
- 0xb4be14e3, 0x43ac239b, 0x0877b627),
-+ PCMCIA_DEVICE_PROD_ID123("Ethernet", "CF Size PC Card", "1.0",
-+ 0x00b2e941, 0x43ac239b, 0x0877b627),
- PCMCIA_DEVICE_NULL
- };
- MODULE_DEVICE_TABLE(pcmcia, pcnet_ids);
diff --git a/packages/linux/linux-rp-2.6.19/pxa-serial-hack.patch b/packages/linux/linux-rp-2.6.19/pxa-serial-hack.patch
deleted file mode 100644
index 9ece71331a..0000000000
--- a/packages/linux/linux-rp-2.6.19/pxa-serial-hack.patch
+++ /dev/null
@@ -1,80 +0,0 @@
----
- drivers/serial/8250.c | 5 +++++
- drivers/serial/serial_core.c | 1 +
- drivers/serial/serial_cs.c | 12 +++++++++---
- include/linux/serial_core.h | 1 +
- 4 files changed, 16 insertions(+), 3 deletions(-)
-
-Index: git/drivers/serial/8250.c
-===================================================================
---- git.orig/drivers/serial/8250.c 2006-10-31 16:29:50.000000000 +0000
-+++ git/drivers/serial/8250.c 2006-10-31 16:29:53.000000000 +0000
-@@ -2429,7 +2429,12 @@ static struct uart_driver serial8250_reg
- .driver_name = "serial",
- .dev_name = "ttyS",
- .major = TTY_MAJOR,
-+#ifdef CONFIG_SERIAL_PXA
-+ .minor = 64 + 3,
-+ .name_base = 3,
-+#else
- .minor = 64,
-+#endif
- .nr = UART_NR,
- .cons = SERIAL8250_CONSOLE,
- };
-Index: git/drivers/serial/serial_core.c
-===================================================================
---- git.orig/drivers/serial/serial_core.c 2006-10-31 16:09:17.000000000 +0000
-+++ git/drivers/serial/serial_core.c 2006-10-31 16:29:53.000000000 +0000
-@@ -2183,6 +2183,7 @@ int uart_register_driver(struct uart_dri
- normal->owner = drv->owner;
- normal->driver_name = drv->driver_name;
- normal->name = drv->dev_name;
-+ normal->name_base = drv->name_base;
- normal->major = drv->major;
- normal->minor_start = drv->minor;
- normal->type = TTY_DRIVER_TYPE_SERIAL;
-Index: git/include/linux/serial_core.h
-===================================================================
---- git.orig/include/linux/serial_core.h 2006-10-31 16:09:45.000000000 +0000
-+++ git/include/linux/serial_core.h 2006-10-31 16:30:36.000000000 +0000
-@@ -339,6 +339,7 @@ struct uart_driver {
- struct module *owner;
- const char *driver_name;
- const char *dev_name;
-+ int name_base;
- int major;
- int minor;
- int nr;
-Index: git/drivers/serial/serial_cs.c
-===================================================================
---- git.orig/drivers/serial/serial_cs.c 2006-10-31 16:09:17.000000000 +0000
-+++ git/drivers/serial/serial_cs.c 2006-10-31 16:29:53.000000000 +0000
-@@ -390,7 +390,7 @@ static int setup_serial(struct pcmcia_de
- kio_addr_t iobase, int irq)
- {
- struct uart_port port;
-- int line;
-+ int line, linestart;
-
- memset(&port, 0, sizeof (struct uart_port));
- port.iobase = iobase;
-@@ -411,10 +411,16 @@ static int setup_serial(struct pcmcia_de
- return -EINVAL;
- }
-
-+#if CONFIG_SERIAL_PXA
-+ linestart = 3;
-+#else
-+ linestart = 0;
-+#endif
-+
- info->line[info->ndev] = line;
-- sprintf(info->node[info->ndev].dev_name, "ttyS%d", line);
-+ sprintf(info->node[info->ndev].dev_name, "ttyS%d", line+linestart);
- info->node[info->ndev].major = TTY_MAJOR;
-- info->node[info->ndev].minor = 0x40 + line;
-+ info->node[info->ndev].minor = 0x40 + line + linestart;
- if (info->ndev > 0)
- info->node[info->ndev - 1].next = &info->node[info->ndev];
- info->ndev++;
diff --git a/packages/linux/linux-rp-2.6.19/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch b/packages/linux/linux-rp-2.6.19/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
deleted file mode 100644
index 18bf4268fc..0000000000
--- a/packages/linux/linux-rp-2.6.19/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-
-From: Petr Vandrovec <vandrove@vc.cvut.cz>
-
-Patch below adds support for using different prescaler than 16 for 16c950
-chips. This is needed for using Fujitsu-Siemens Connect2Air compact-flash
-card, which comes (apparently) with 806kHz clocks, and so you have to
-program prescaler for division by 7, and DLAB to 1, to get 115200Bd.
-
-To get card properly running you also have to add lines below to
-/etc/pcmcia/serial.opts so kernel knows that base speed is not 115200 but
-50400 (50400 * 16 = 806400; 806400 / 7 = 115200). As I've found no code
-specifying baud_rate in serial_cs, I assume that specifying it in
-serial.opts is right way to do this type of things.
-
-Patch also fixes problem that for UPF_MAGIC_MULTIPLIER maximum possible
-baud rate passed to uart code was uartclk / 16 while correct value for
-these devices (and for 16c950) is uartclk / 4.
-
-Patch also fixes problem that for UPF_MAGIC_MULTIPLIER devices with
-baud_rate 19200 or 9600 spd_cust did not work correctly. Not that such
-devices exist, but we should not ignore spd_cust, user probably knows why
-he asked for spd_cust.
-
-serial.opts:
-
-case "$MANFID-$FUNCID-$PRODID_1-$PRODID_2-$PRODID_3-$PRODID_4" in
-'0279,950b-2-GPRS Modem---')
- SERIAL_OPTS="baud_base 50400"
- ;;
-esac
-
-Cc: David Woodhouse <dwmw2@infradead.org>
-Signed-off-by: Andrew Morton <akpm@osdl.org>
----
-
- drivers/serial/8250.c | 82 +++++++++++++++++++++++++++++++++++++++-----------
- 1 files changed, 64 insertions(+), 18 deletions(-)
-
-diff -puN drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver drivers/serial/8250.c
---- devel/drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver 2005-09-12 03:34:57.000000000 -0700
-+++ devel-akpm/drivers/serial/8250.c 2005-09-12 03:34:57.000000000 -0700
-@@ -1653,24 +1653,58 @@ static void serial8250_shutdown(struct u
- serial_unlink_irq_chain(up);
- }
-
--static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud)
-+static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud,
-+ unsigned int *prescaler)
- {
-- unsigned int quot;
--
-- /*
-- * Handle magic divisors for baud rates above baud_base on
-- * SMSC SuperIO chips.
-+ /*
-+ * Use special handling only if user did not supply its own divider.
-+ * spd_cust is defined in terms of baud_base, so always use default
-+ * prescaler when spd_cust is requested.
- */
-- if ((port->flags & UPF_MAGIC_MULTIPLIER) &&
-- baud == (port->uartclk/4))
-- quot = 0x8001;
-- else if ((port->flags & UPF_MAGIC_MULTIPLIER) &&
-- baud == (port->uartclk/8))
-- quot = 0x8002;
-- else
-- quot = uart_get_divisor(port, baud);
-
-- return quot;
-+ *prescaler = 16;
-+ if (baud != 38400 || (port->flags & UPF_SPD_MASK) != UPF_SPD_CUST) {
-+ unsigned int quot = port->uartclk / baud;
-+
-+ /*
-+ * Handle magic divisors for baud rates above baud_base on
-+ * SMSC SuperIO chips.
-+ */
-+ if (port->flags & UPF_MAGIC_MULTIPLIER) {
-+ if (quot == 4) {
-+ return 0x8001;
-+ } else if (quot == 8) {
-+ return 0x8002;
-+ }
-+ }
-+ if (port->type == PORT_16C950) {
-+ /*
-+ * This computes TCR value (4 to 16), not CPR value (which can
-+ * be between 1.000 and 31.875) - chip I have uses XTAL of
-+ * 806400Hz, and so a division by 7 is required to get 115200Bd.
-+ * I'm leaving CPR disabled for now, until someone will
-+ * hit even more exotic XTAL (it is needed to get 500kbps
-+ * or 1000kbps from 18.432MHz XTAL, but I have no device
-+ * which would benefit from doing that).
-+ *
-+ * If we can use divide by 16, use it. Otherwise look for
-+ * better prescaler, from 15 to 4. If quotient cannot
-+ * be divided by any integer value between 4 and 15, use 4.
-+ */
-+ if (quot & 0x0F) {
-+ unsigned int div;
-+
-+ for (div = 15; div > 4; div--) {
-+ if (quot % div == 0) {
-+ break;
-+ }
-+ }
-+ *prescaler = div;
-+ return quot / div;
-+ }
-+ }
-+ }
-+ return uart_get_divisor(port, baud);
- }
-
- static void
-@@ -1680,7 +1714,7 @@ serial8250_set_termios(struct uart_port
- struct uart_8250_port *up = (struct uart_8250_port *)port;
- unsigned char cval, fcr = 0;
- unsigned long flags;
-- unsigned int baud, quot;
-+ unsigned int baud, quot, prescaler;
-
- switch (termios->c_cflag & CSIZE) {
- case CS5:
-@@ -1712,8 +1746,13 @@ serial8250_set_termios(struct uart_port
- /*
- * Ask the core to calculate the divisor for us.
- */
-- baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
-- quot = serial8250_get_divisor(port, baud);
-+
-+ if (port->type == PORT_16C950 || (port->flags & UPF_MAGIC_MULTIPLIER)) {
-+ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/4);
-+ } else {
-+ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
-+ }
-+ quot = serial8250_get_divisor(port, baud, &prescaler);
-
- /*
- * Oxford Semi 952 rev B workaround
-@@ -1817,6 +1856,13 @@ serial8250_set_termios(struct uart_port
- serial_outp(up, UART_DLM, quot >> 8); /* MS of divisor */
-
- /*
-+ * Program prescaler for 16C950 chips.
-+ */
-+ if (up->port.type == PORT_16C950) {
-+ serial_icr_write(up, UART_TCR, prescaler == 16 ? 0 : prescaler);
-+ }
-+
-+ /*
- * LCR DLAB must be set to enable 64-byte FIFO mode. If the FCR
- * is written without DLAB set, this mode will be disabled.
- */
-_
diff --git a/packages/linux/linux-rp-2.6.19/sharpsl-pm-postresume-r1.patch b/packages/linux/linux-rp-2.6.19/sharpsl-pm-postresume-r1.patch
deleted file mode 100644
index 409daf03e6..0000000000
--- a/packages/linux/linux-rp-2.6.19/sharpsl-pm-postresume-r1.patch
+++ /dev/null
@@ -1,30 +0,0 @@
- arch/arm/common/sharpsl_pm.c | 3 +++
- include/asm-arm/hardware/sharpsl_pm.h | 1 +
- 2 files changed, 4 insertions(+)
-
-Index: git/include/asm-arm/hardware/sharpsl_pm.h
-===================================================================
---- git.orig/include/asm-arm/hardware/sharpsl_pm.h 2006-10-31 16:09:33.000000000 +0000
-+++ git/include/asm-arm/hardware/sharpsl_pm.h 2006-11-07 22:08:41.000000000 +0000
-@@ -26,6 +26,7 @@ struct sharpsl_charger_machinfo {
- void (*presuspend)(void);
- void (*postsuspend)(void);
- void (*earlyresume)(void);
-+ void (*postresume)(void);
- unsigned long (*read_devdata)(int);
- #define SHARPSL_BATT_VOLT 1
- #define SHARPSL_BATT_TEMP 2
-Index: git/arch/arm/common/sharpsl_pm.c
-===================================================================
---- git.orig/arch/arm/common/sharpsl_pm.c 2006-11-07 22:03:48.000000000 +0000
-+++ git/arch/arm/common/sharpsl_pm.c 2006-11-07 22:04:20.000000000 +0000
-@@ -584,6 +584,9 @@ static int corgi_pxa_pm_enter(suspend_st
- if (sharpsl_pm.machinfo->earlyresume)
- sharpsl_pm.machinfo->earlyresume();
-
-+ if (sharpsl_pm.machinfo->postresume)
-+ sharpsl_pm.machinfo->postresume();
-+
- dev_dbg(sharpsl_pm.dev, "SharpSL resuming...\n");
-
- return 0;
diff --git a/packages/linux/linux-rp-2.6.19/squashfs3.0-2.6.15.patch b/packages/linux/linux-rp-2.6.19/squashfs3.0-2.6.15.patch
deleted file mode 100644
index 097659abad..0000000000
--- a/packages/linux/linux-rp-2.6.19/squashfs3.0-2.6.15.patch
+++ /dev/null
@@ -1,4191 +0,0 @@
- fs/Kconfig | 65 +
- fs/Makefile | 1
- fs/squashfs/Makefile | 7
- fs/squashfs/inode.c | 2124 +++++++++++++++++++++++++++++++++++++++++
- fs/squashfs/squashfs.h | 86 +
- fs/squashfs/squashfs2_0.c | 757 ++++++++++++++
- include/linux/squashfs_fs.h | 911 +++++++++++++++++
- include/linux/squashfs_fs_i.h | 45
- include/linux/squashfs_fs_sb.h | 74 +
- init/do_mounts_rd.c | 13
- 10 files changed, 4083 insertions(+)
-
-Index: git/fs/Kconfig
-===================================================================
---- git.orig/fs/Kconfig 2006-10-31 16:09:22.000000000 +0000
-+++ git/fs/Kconfig 2006-10-31 21:26:45.000000000 +0000
-@@ -1407,6 +1407,71 @@ config CRAMFS
-
- If unsure, say N.
-
-+config SQUASHFS
-+ tristate "SquashFS 3.0 - Squashed file system support"
-+ select ZLIB_INFLATE
-+ help
-+ Saying Y here includes support for SquashFS 3.0 (a Compressed Read-Only File
-+ System). Squashfs is a highly compressed read-only filesystem for Linux.
-+ It uses zlib compression to compress both files, inodes and directories.
-+ Inodes in the system are very small and all blocks are packed to minimise
-+ data overhead. Block sizes greater than 4K are supported up to a maximum of 64K.
-+ SquashFS 3.0 supports 64 bit filesystems and files (larger than 4GB), full
-+ uid/gid information, hard links and timestamps.
-+
-+ Squashfs is intended for general read-only filesystem use, for archival
-+ use (i.e. in cases where a .tar.gz file may be used), and in embedded
-+ systems where low overhead is needed. Further information and filesystem tools
-+ are available from http://squashfs.sourceforge.net.
-+
-+ If you want to compile this as a module ( = code which can be
-+ inserted in and removed from the running kernel whenever you want),
-+ say M here and read <file:Documentation/modules.txt>. The module
-+ will be called squashfs. Note that the root file system (the one
-+ containing the directory /) cannot be compiled as a module.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_EMBEDDED
-+
-+ bool "Additional options for memory-constrained systems"
-+ depends on SQUASHFS
-+ default n
-+ help
-+ Saying Y here allows you to specify cache sizes and how Squashfs
-+ allocates memory. This is only intended for memory constrained
-+ systems.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_FRAGMENT_CACHE_SIZE
-+ int "Number of fragments cached" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default "3"
-+ help
-+ By default SquashFS caches the last 3 fragments read from
-+ the filesystem. Increasing this amount may mean SquashFS
-+ has to re-read fragments less often from disk, at the expense
-+ of extra system memory. Decreasing this amount will mean
-+ SquashFS uses less memory at the expense of extra reads from disk.
-+
-+ Note there must be at least one cached fragment. Anything
-+ much more than three will probably not make much difference.
-+
-+config SQUASHFS_VMALLOC
-+ bool "Use Vmalloc rather than Kmalloc" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default n
-+ help
-+ By default SquashFS uses kmalloc to obtain fragment cache memory.
-+ Kmalloc memory is the standard kernel allocator, but it can fail
-+ on memory constrained systems. Because of the way Vmalloc works,
-+ Vmalloc can succeed when kmalloc fails. Specifying this option
-+ will make SquashFS always use Vmalloc to allocate the
-+ fragment cache memory.
-+
-+ If unsure, say N.
-+
- config VXFS_FS
- tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
- depends on BLOCK
-Index: git/fs/Makefile
-===================================================================
---- git.orig/fs/Makefile 2006-10-31 16:09:22.000000000 +0000
-+++ git/fs/Makefile 2006-10-31 21:26:45.000000000 +0000
-@@ -67,6 +67,7 @@ obj-$(CONFIG_JBD) += jbd/
- obj-$(CONFIG_JBD2) += jbd2/
- obj-$(CONFIG_EXT2_FS) += ext2/
- obj-$(CONFIG_CRAMFS) += cramfs/
-+obj-$(CONFIG_SQUASHFS) += squashfs/
- obj-$(CONFIG_RAMFS) += ramfs/
- obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
- obj-$(CONFIG_CODA_FS) += coda/
-Index: git/fs/squashfs/inode.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/fs/squashfs/inode.c 2006-11-01 18:01:32.000000000 +0000
-@@ -0,0 +1,2124 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * inode.c
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/smp_lock.h>
-+#include <linux/slab.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+#include <linux/buffer_head.h>
-+#include <linux/vfs.h>
-+#include <linux/init.h>
-+#include <linux/dcache.h>
-+#include <linux/wait.h>
-+#include <linux/zlib.h>
-+#include <linux/blkdev.h>
-+#include <linux/vmalloc.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.h>
-+
-+#include "squashfs.h"
-+
-+static void squashfs_put_super(struct super_block *);
-+static int squashfs_statfs(struct dentry *, struct kstatfs *);
-+static int squashfs_symlink_readpage(struct file *file, struct page *page);
-+static int squashfs_readpage(struct file *file, struct page *page);
-+static int squashfs_readpage4K(struct file *file, struct page *page);
-+static int squashfs_readdir(struct file *, void *, filldir_t);
-+static struct inode *squashfs_alloc_inode(struct super_block *sb);
-+static void squashfs_destroy_inode(struct inode *inode);
-+static int init_inodecache(void);
-+static void destroy_inodecache(void);
-+static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
-+ struct nameidata *);
-+static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode);
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize);
-+static int squashfs_get_sb(struct file_system_type *, int,
-+ const char *, void *, struct vfsmount *);
-+
-+
-+static z_stream stream;
-+
-+static struct file_system_type squashfs_fs_type = {
-+ .owner = THIS_MODULE,
-+ .name = "squashfs",
-+ .get_sb = squashfs_get_sb,
-+ .kill_sb = kill_block_super,
-+ .fs_flags = FS_REQUIRES_DEV
-+};
-+
-+static unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static struct super_operations squashfs_ops = {
-+ .alloc_inode = squashfs_alloc_inode,
-+ .destroy_inode = squashfs_destroy_inode,
-+ .statfs = squashfs_statfs,
-+ .put_super = squashfs_put_super,
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_symlink_aops = {
-+ .readpage = squashfs_symlink_readpage
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_aops = {
-+ .readpage = squashfs_readpage
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_aops_4K = {
-+ .readpage = squashfs_readpage4K
-+};
-+
-+static struct file_operations squashfs_dir_ops = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir
-+};
-+
-+SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
-+ .lookup = squashfs_lookup
-+};
-+
-+
-+static struct buffer_head *get_block_length(struct super_block *s,
-+ int *cur_index, int *offset, int *c_byte)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned short temp;
-+ struct buffer_head *bh;
-+
-+ if (!(bh = sb_bread(s, *cur_index)))
-+ goto out;
-+
-+ if (msblk->devblksize - *offset == 1) {
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ else
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ bh->b_data);
-+ else
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ bh->b_data);
-+ *c_byte = temp;
-+ *offset = 1;
-+ } else {
-+ if (msblk->swap) {
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ } else {
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ }
-+ *c_byte = temp;
-+ *offset += 2;
-+ }
-+
-+ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) {
-+ if (*offset == msblk->devblksize) {
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ *offset = 0;
-+ }
-+ if (*((unsigned char *) (bh->b_data + *offset)) !=
-+ SQUASHFS_MARKER_BYTE) {
-+ ERROR("Metadata block marker corrupt @ %x\n",
-+ *cur_index);
-+ brelse(bh);
-+ goto out;
-+ }
-+ (*offset)++;
-+ }
-+ return bh;
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct buffer_head *bh[((SQUASHFS_FILE_MAX_SIZE - 1) >>
-+ msblk->devblksize_log2) + 2];
-+ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1);
-+ unsigned int cur_index = index >> msblk->devblksize_log2;
-+ int bytes, avail_bytes, b = 0, k;
-+ char *c_buffer;
-+ unsigned int compressed;
-+ unsigned int c_byte = length;
-+
-+ if (c_byte) {
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
-+ c_buffer = compressed ? msblk->read_data : buffer;
-+ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ if (!(bh[0] = sb_getblk(s, cur_index)))
-+ goto block_release;
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b, bh);
-+ } else {
-+ if (!(bh[0] = get_block_length(s, &cur_index, &offset,
-+ &c_byte)))
-+ goto read_failure;
-+
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED(c_byte);
-+ c_buffer = compressed ? msblk->read_data : buffer;
-+ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b - 1, bh + 1);
-+ }
-+
-+ if (compressed)
-+ down(&msblk->read_data_mutex);
-+
-+ for (bytes = 0, k = 0; k < b; k++) {
-+ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
-+ msblk->devblksize - offset :
-+ c_byte - bytes;
-+ wait_on_buffer(bh[k]);
-+ if (!buffer_uptodate(bh[k]))
-+ goto block_release;
-+ memcpy(c_buffer + bytes, bh[k]->b_data + offset, avail_bytes);
-+ bytes += avail_bytes;
-+ offset = 0;
-+ brelse(bh[k]);
-+ }
-+
-+ /*
-+ * uncompress block
-+ */
-+ if (compressed) {
-+ int zlib_err;
-+
-+ stream.next_in = c_buffer;
-+ stream.avail_in = c_byte;
-+ stream.next_out = buffer;
-+ stream.avail_out = msblk->read_size;
-+
-+ if (((zlib_err = zlib_inflateInit(&stream)) != Z_OK) ||
-+ ((zlib_err = zlib_inflate(&stream, Z_FINISH))
-+ != Z_STREAM_END) || ((zlib_err =
-+ zlib_inflateEnd(&stream)) != Z_OK)) {
-+ ERROR("zlib_fs returned unexpected result 0x%x\n",
-+ zlib_err);
-+ bytes = 0;
-+ } else
-+ bytes = stream.total_out;
-+
-+ up(&msblk->read_data_mutex);
-+ }
-+
-+ if (next_index)
-+ *next_index = index + c_byte + (length ? 0 :
-+ (SQUASHFS_CHECK_DATA(msblk->sblk.flags)
-+ ? 3 : 2));
-+ return bytes;
-+
-+block_release:
-+ while (--b >= 0)
-+ brelse(bh[b]);
-+
-+read_failure:
-+ ERROR("sb_bread failed reading block 0x%x\n", cur_index);
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ int n, i, bytes, return_length = length;
-+ long long next_index;
-+
-+ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset);
-+
-+ while ( 1 ) {
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (msblk->block_cache[i].block == block)
-+ break;
-+
-+ down(&msblk->block_cache_mutex);
-+
-+ if (i == SQUASHFS_CACHED_BLKS) {
-+ /* read inode header block */
-+ for (i = msblk->next_cache, n = SQUASHFS_CACHED_BLKS;
-+ n ; n --, i = (i + 1) %
-+ SQUASHFS_CACHED_BLKS)
-+ if (msblk->block_cache[i].block !=
-+ SQUASHFS_USED_BLK)
-+ break;
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->waitq, &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ up(&msblk->block_cache_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->waitq, &wait);
-+ continue;
-+ }
-+ msblk->next_cache = (i + 1) % SQUASHFS_CACHED_BLKS;
-+
-+ if (msblk->block_cache[i].block ==
-+ SQUASHFS_INVALID_BLK) {
-+ if (!(msblk->block_cache[i].data =
-+ kmalloc(SQUASHFS_METADATA_SIZE,
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate cache"
-+ "block\n");
-+ up(&msblk->block_cache_mutex);
-+ goto out;
-+ }
-+ }
-+
-+ msblk->block_cache[i].block = SQUASHFS_USED_BLK;
-+ up(&msblk->block_cache_mutex);
-+
-+ if (!(msblk->block_cache[i].length =
-+ squashfs_read_data(s,
-+ msblk->block_cache[i].data,
-+ block, 0, &next_index))) {
-+ ERROR("Unable to read cache block [%llx:%x]\n",
-+ block, offset);
-+ goto out;
-+ }
-+
-+ down(&msblk->block_cache_mutex);
-+ wake_up(&msblk->waitq);
-+ msblk->block_cache[i].block = block;
-+ msblk->block_cache[i].next_index = next_index;
-+ TRACE("Read cache block [%llx:%x]\n", block, offset);
-+ }
-+
-+ if (msblk->block_cache[i].block != block) {
-+ up(&msblk->block_cache_mutex);
-+ continue;
-+ }
-+
-+ if ((bytes = msblk->block_cache[i].length - offset) >= length) {
-+ if (buffer)
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, length);
-+ if (msblk->block_cache[i].length - offset == length) {
-+ *next_block = msblk->block_cache[i].next_index;
-+ *next_offset = 0;
-+ } else {
-+ *next_block = block;
-+ *next_offset = offset + length;
-+ }
-+ up(&msblk->block_cache_mutex);
-+ goto finish;
-+ } else {
-+ if (buffer) {
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, bytes);
-+ buffer += bytes;
-+ }
-+ block = msblk->block_cache[i].next_index;
-+ up(&msblk->block_cache_mutex);
-+ length -= bytes;
-+ offset = 0;
-+ }
-+ }
-+
-+finish:
-+ return return_length;
-+out:
-+ return 0;
-+}
-+
-+
-+static int get_fragment_location(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment);
-+ struct squashfs_fragment_entry fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment)
-+{
-+ down(&msblk->fragment_mutex);
-+ fragment->locked --;
-+ wake_up(&msblk->fragment_wait_queue);
-+ up(&msblk->fragment_mutex);
-+}
-+
-+
-+SQSH_EXTERN struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length)
-+{
-+ int i, n, nf;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+
-+ while ( 1 ) {
-+ down(&msblk->fragment_mutex);
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS &&
-+ msblk->fragment[i].block != start_block; i++);
-+
-+ if (i == SQUASHFS_CACHED_FRAGMENTS) {
-+ nf = (msblk->next_fragment + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS;
-+ for (i = msblk->next_fragment, n =
-+ SQUASHFS_CACHED_FRAGMENTS; n &&
-+ msblk->fragment[i].locked; n--, i = (i + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS);
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ up(&msblk->fragment_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ continue;
-+ }
-+ msblk->next_fragment = nf;
-+
-+ if (msblk->fragment[i].data == NULL)
-+ if (!(msblk->fragment[i].data = SQUASHFS_ALLOC
-+ (SQUASHFS_FILE_MAX_SIZE))) {
-+ ERROR("Failed to allocate fragment "
-+ "cache block\n");
-+ up(&msblk->fragment_mutex);
-+ goto out;
-+ }
-+
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].locked = 1;
-+ up(&msblk->fragment_mutex);
-+
-+ if (!(msblk->fragment[i].length = squashfs_read_data(s,
-+ msblk->fragment[i].data,
-+ start_block, length, NULL))) {
-+ ERROR("Unable to read fragment cache block "
-+ "[%llx]\n", start_block);
-+ msblk->fragment[i].locked = 0;
-+ goto out;
-+ }
-+
-+ msblk->fragment[i].block = start_block;
-+ TRACE("New fragment %d, start block %lld, locked %d\n",
-+ i, msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ break;
-+ }
-+
-+ msblk->fragment[i].locked++;
-+ up(&msblk->fragment_mutex);
-+ TRACE("Got fragment %d, start block %lld, locked %d\n", i,
-+ msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ break;
-+ }
-+
-+ return &msblk->fragment[i];
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+static struct inode *squashfs_new_inode(struct super_block *s,
-+ struct squashfs_base_inode_header *inodeb)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct inode *i = new_inode(s);
-+
-+ if (i) {
-+ i->i_ino = inodeb->inode_number;
-+ i->i_mtime.tv_sec = inodeb->mtime;
-+ i->i_atime.tv_sec = inodeb->mtime;
-+ i->i_ctime.tv_sec = inodeb->mtime;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+ }
-+
-+ return i;
-+}
-+
-+
-+static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode)
-+{
-+ struct inode *i;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header id, sid;
-+ struct squashfs_base_inode_header *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_reg_inode_header *inodep = &id.reg;
-+ struct squashfs_reg_inode_header *sinodep = &sid.reg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = 1;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_LREG_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_lreg_inode_header *inodep = &id.lreg;
-+ struct squashfs_lreg_inode_header *sinodep = &sid.lreg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header *inodep = &id.dir;
-+ struct squashfs_dir_inode_header *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header *inodep = &id.dev;
-+ struct squashfs_dev_inode_header *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+ struct squashfs_ipc_inode_header *inodep = &id.ipc;
-+ struct squashfs_ipc_inode_header *sinodep = &sid.ipc;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ insert_inode_hash(i);
-+ return i;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%llx:%x]\n", block, offset);
-+
-+failed_read1:
-+ return NULL;
-+}
-+
-+
-+static int read_fragment_index_table(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ /* Allocate fragment index table */
-+ if (!(msblk->fragment_index = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES
-+ (sblk->fragments), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ return 0;
-+ }
-+
-+ if (SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments) &&
-+ !squashfs_read_data(s, (char *)
-+ msblk->fragment_index,
-+ sblk->fragment_table_start,
-+ SQUASHFS_FRAGMENT_INDEX_BYTES
-+ (sblk->fragments) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ long long fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES(sblk->fragments);
-+ i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES((&fragment),
-+ &msblk->fragment_index[i], 1);
-+ msblk->fragment_index[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int supported_squashfs_filesystem(struct squashfs_sb_info *msblk, int silent)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->iget = squashfs_iget;
-+ msblk->read_blocklist = read_blocklist;
-+ msblk->read_fragment_index_table = read_fragment_index_table;
-+
-+ if (sblk->s_major == 1) {
-+ if (!squashfs_1_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 1.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 1.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if (sblk->s_major == 2) {
-+ if (!squashfs_2_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 2.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 2.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if(sblk->s_major != SQUASHFS_MAJOR || sblk->s_minor >
-+ SQUASHFS_MINOR) {
-+ SERROR("Major/Minor mismatch, trying to mount newer %d.%d "
-+ "filesystem\n", sblk->s_major, sblk->s_minor);
-+ SERROR("Please update your kernel\n");
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int squashfs_fill_super(struct super_block *s, void *data, int silent)
-+{
-+ struct squashfs_sb_info *msblk;
-+ struct squashfs_super_block *sblk;
-+ int i;
-+ char b[BDEVNAME_SIZE];
-+ struct inode *root;
-+
-+ TRACE("Entered squashfs_read_superblock\n");
-+
-+ if (!(s->s_fs_info = kmalloc(sizeof(struct squashfs_sb_info),
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate superblock\n");
-+ goto failure;
-+ }
-+ memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info));
-+ msblk = s->s_fs_info;
-+ sblk = &msblk->sblk;
-+
-+ msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
-+ msblk->devblksize_log2 = ffz(~msblk->devblksize);
-+
-+ init_MUTEX(&msblk->read_data_mutex);
-+ init_MUTEX(&msblk->read_page_mutex);
-+ init_MUTEX(&msblk->block_cache_mutex);
-+ init_MUTEX(&msblk->fragment_mutex);
-+ init_MUTEX(&msblk->meta_index_mutex);
-+
-+ init_waitqueue_head(&msblk->waitq);
-+ init_waitqueue_head(&msblk->fragment_wait_queue);
-+
-+ if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
-+ sizeof(struct squashfs_super_block) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ SERROR("unable to read superblock\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Check it is a SQUASHFS superblock */
-+ msblk->swap = 0;
-+ if ((s->s_magic = sblk->s_magic) != SQUASHFS_MAGIC) {
-+ if (sblk->s_magic == SQUASHFS_MAGIC_SWAP) {
-+ struct squashfs_super_block ssblk;
-+
-+ WARNING("Mounting a different endian SQUASHFS "
-+ "filesystem on %s\n", bdevname(s->s_bdev, b));
-+
-+ SQUASHFS_SWAP_SUPER_BLOCK(&ssblk, sblk);
-+ memcpy(sblk, &ssblk, sizeof(struct squashfs_super_block));
-+ msblk->swap = 1;
-+ } else {
-+ SERROR("Can't find a SQUASHFS superblock on %s\n",
-+ bdevname(s->s_bdev, b));
-+ goto failed_mount;
-+ }
-+ }
-+
-+ /* Check the MAJOR & MINOR versions */
-+ if(!supported_squashfs_filesystem(msblk, silent))
-+ goto failed_mount;
-+
-+ TRACE("Found valid superblock on %s\n", bdevname(s->s_bdev, b));
-+ TRACE("Inodes are %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_INODES
-+ (sblk->flags) ? "un" : "");
-+ TRACE("Data is %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_DATA(sblk->flags)
-+ ? "un" : "");
-+ TRACE("Check data is %s present in the filesystem\n",
-+ SQUASHFS_CHECK_DATA(sblk->flags) ?
-+ "" : "not");
-+ TRACE("Filesystem size %lld bytes\n", sblk->bytes_used);
-+ TRACE("Block size %d\n", sblk->block_size);
-+ TRACE("Number of inodes %d\n", sblk->inodes);
-+ if (sblk->s_major > 1)
-+ TRACE("Number of fragments %d\n", sblk->fragments);
-+ TRACE("Number of uids %d\n", sblk->no_uids);
-+ TRACE("Number of gids %d\n", sblk->no_guids);
-+ TRACE("sblk->inode_table_start %llx\n", sblk->inode_table_start);
-+ TRACE("sblk->directory_table_start %llx\n", sblk->directory_table_start);
-+ if (sblk->s_major > 1)
-+ TRACE("sblk->fragment_table_start %llx\n",
-+ sblk->fragment_table_start);
-+ TRACE("sblk->uid_start %llx\n", sblk->uid_start);
-+
-+ s->s_flags |= MS_RDONLY;
-+ s->s_op = &squashfs_ops;
-+
-+ /* Init inode_table block pointer array */
-+ if (!(msblk->block_cache = kmalloc(sizeof(struct squashfs_cache) *
-+ SQUASHFS_CACHED_BLKS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
-+
-+ msblk->next_cache = 0;
-+
-+ /* Allocate read_data block */
-+ msblk->read_size = (sblk->block_size < SQUASHFS_METADATA_SIZE) ?
-+ SQUASHFS_METADATA_SIZE :
-+ sblk->block_size;
-+
-+ if (!(msblk->read_data = kmalloc(msblk->read_size, GFP_KERNEL))) {
-+ ERROR("Failed to allocate read_data block\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Allocate read_page block */
-+ if (!(msblk->read_page = kmalloc(sblk->block_size, GFP_KERNEL))) {
-+ ERROR("Failed to allocate read_page block\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Allocate uid and gid tables */
-+ if (!(msblk->uid = kmalloc((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ goto failed_mount;
-+ }
-+ msblk->guid = msblk->uid + sblk->no_uids;
-+
-+ if (msblk->swap) {
-+ unsigned int suid[sblk->no_uids + sblk->no_guids];
-+
-+ if (!squashfs_read_data(s, (char *) &suid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+ SQUASHFS_SWAP_DATA(msblk->uid, suid, (sblk->no_uids +
-+ sblk->no_guids), (sizeof(unsigned int) * 8));
-+ } else
-+ if (!squashfs_read_data(s, (char *) msblk->uid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+
-+ if (sblk->s_major == 1 && squashfs_1_0_supported(msblk))
-+ goto allocate_root;
-+
-+ if (!(msblk->fragment = kmalloc(sizeof(struct squashfs_fragment_cache) *
-+ SQUASHFS_CACHED_FRAGMENTS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate fragment block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++) {
-+ msblk->fragment[i].locked = 0;
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].data = NULL;
-+ }
-+
-+ msblk->next_fragment = 0;
-+
-+ /* Allocate fragment index table */
-+ if (msblk->read_fragment_index_table(s) == 0)
-+ goto failed_mount;
-+
-+allocate_root:
-+ if ((root = (msblk->iget)(s, sblk->root_inode)) == NULL)
-+ goto failed_mount;
-+
-+ if ((s->s_root = d_alloc_root(root)) == NULL) {
-+ ERROR("Root inode create failed\n");
-+ iput(root);
-+ goto failed_mount;
-+ }
-+
-+ TRACE("Leaving squashfs_read_super\n");
-+ return 0;
-+
-+failed_mount:
-+ kfree(msblk->fragment_index);
-+ kfree(msblk->fragment);
-+ kfree(msblk->uid);
-+ kfree(msblk->read_page);
-+ kfree(msblk->read_data);
-+ kfree(msblk->block_cache);
-+ kfree(msblk->fragment_index_2);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ return -EINVAL;
-+
-+failure:
-+ return -ENOMEM;
-+}
-+
-+
-+static int squashfs_statfs(struct dentry *dentry, struct kstatfs *buf)
-+{
-+ struct super_block *s = dentry->d_sb;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ TRACE("Entered squashfs_statfs\n");
-+
-+ buf->f_type = SQUASHFS_MAGIC;
-+ buf->f_bsize = sblk->block_size;
-+ buf->f_blocks = ((sblk->bytes_used - 1) >> sblk->block_log) + 1;
-+ buf->f_bfree = buf->f_bavail = 0;
-+ buf->f_files = sblk->inodes;
-+ buf->f_ffree = 0;
-+ buf->f_namelen = SQUASHFS_NAME_LEN;
-+
-+ return 0;
-+}
-+
-+
-+static int squashfs_symlink_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ int index = page->index << PAGE_CACHE_SHIFT, length, bytes;
-+ long long block = SQUASHFS_I(inode)->start_block;
-+ int offset = SQUASHFS_I(inode)->offset;
-+ void *pageaddr = kmap(page);
-+
-+ TRACE("Entered squashfs_symlink_readpage, page index %ld, start block "
-+ "%llx, offset %x\n", page->index,
-+ SQUASHFS_I(inode)->start_block,
-+ SQUASHFS_I(inode)->offset);
-+
-+ for (length = 0; length < index; length += bytes) {
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, NULL,
-+ block, offset, PAGE_CACHE_SIZE, &block,
-+ &offset))) {
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block,
-+ offset);
-+ goto skip_read;
-+ }
-+ }
-+
-+ if (length != index) {
-+ ERROR("(squashfs_symlink_readpage) length != index\n");
-+ bytes = 0;
-+ goto skip_read;
-+ }
-+
-+ bytes = (i_size_read(inode) - length) > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE :
-+ i_size_read(inode) - length;
-+
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, pageaddr, block,
-+ offset, bytes, &block, &offset)))
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block, offset);
-+
-+skip_read:
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+struct meta_index *locate_meta_index(struct inode *inode, int index, int offset)
-+{
-+ struct meta_index *meta = NULL;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ int i;
-+
-+ down(&msblk->meta_index_mutex);
-+
-+ TRACE("locate_meta_index: index %d, offset %d\n", index, offset);
-+
-+ if(msblk->meta_index == NULL)
-+ goto not_allocated;
-+
-+ for (i = 0; i < SQUASHFS_META_NUMBER; i ++)
-+ if (msblk->meta_index[i].inode_number == inode->i_ino &&
-+ msblk->meta_index[i].offset >= offset &&
-+ msblk->meta_index[i].offset <= index &&
-+ msblk->meta_index[i].locked == 0) {
-+ TRACE("locate_meta_index: entry %d, offset %d\n", i,
-+ msblk->meta_index[i].offset);
-+ meta = &msblk->meta_index[i];
-+ offset = meta->offset;
-+ }
-+
-+ if (meta)
-+ meta->locked = 1;
-+
-+not_allocated:
-+ up(&msblk->meta_index_mutex);
-+
-+ return meta;
-+}
-+
-+
-+struct meta_index *empty_meta_index(struct inode *inode, int offset, int skip)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct meta_index *meta = NULL;
-+ int i;
-+
-+ down(&msblk->meta_index_mutex);
-+
-+ TRACE("empty_meta_index: offset %d, skip %d\n", offset, skip);
-+
-+ if(msblk->meta_index == NULL) {
-+ if (!(msblk->meta_index = kmalloc(sizeof(struct meta_index) *
-+ SQUASHFS_META_NUMBER, GFP_KERNEL))) {
-+ ERROR("Failed to allocate meta_index\n");
-+ goto failed;
-+ }
-+ for(i = 0; i < SQUASHFS_META_NUMBER; i++) {
-+ msblk->meta_index[i].inode_number = 0;
-+ msblk->meta_index[i].locked = 0;
-+ }
-+ msblk->next_meta_index = 0;
-+ }
-+
-+ for(i = SQUASHFS_META_NUMBER; i &&
-+ msblk->meta_index[msblk->next_meta_index].locked; i --)
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ if(i == 0) {
-+ TRACE("empty_meta_index: failed!\n");
-+ goto failed;
-+ }
-+
-+ TRACE("empty_meta_index: returned meta entry %d, %p\n",
-+ msblk->next_meta_index,
-+ &msblk->meta_index[msblk->next_meta_index]);
-+
-+ meta = &msblk->meta_index[msblk->next_meta_index];
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ meta->inode_number = inode->i_ino;
-+ meta->offset = offset;
-+ meta->skip = skip;
-+ meta->entries = 0;
-+ meta->locked = 1;
-+
-+failed:
-+ up(&msblk->meta_index_mutex);
-+ return meta;
-+}
-+
-+
-+void release_meta_index(struct inode *inode, struct meta_index *meta)
-+{
-+ meta->locked = 0;
-+}
-+
-+
-+static int read_block_index(struct super_block *s, int blocks, char *block_list,
-+ long long *start_block, int *offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned int *block_listp;
-+ int block = 0;
-+
-+ if (msblk->swap) {
-+ char sblock_list[blocks << 2];
-+
-+ if (!squashfs_get_cached_block(s, sblock_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+ SQUASHFS_SWAP_INTS(((unsigned int *)block_list),
-+ ((unsigned int *)sblock_list), blocks);
-+ } else
-+ if (!squashfs_get_cached_block(s, block_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+
-+ for (block_listp = (unsigned int *) block_list; blocks;
-+ block_listp++, blocks --)
-+ block += SQUASHFS_COMPRESSED_SIZE_BLOCK(*block_listp);
-+
-+ return block;
-+
-+failure:
-+ return -1;
-+}
-+
-+
-+#define SIZE 256
-+
-+static inline int calculate_skip(int blocks) {
-+ int skip = (blocks - 1) / ((SQUASHFS_SLOTS * SQUASHFS_META_ENTRIES + 1) * SQUASHFS_META_INDEXES);
-+ return skip >= 7 ? 7 : skip + 1;
-+}
-+
-+
-+static int get_meta_index(struct inode *inode, int index,
-+ long long *index_block, int *index_offset,
-+ long long *data_block, char *block_list)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int skip = calculate_skip(i_size_read(inode) >> sblk->block_log);
-+ int offset = 0;
-+ struct meta_index *meta;
-+ struct meta_entry *meta_entry;
-+ long long cur_index_block = SQUASHFS_I(inode)->u.s1.block_list_start;
-+ int cur_offset = SQUASHFS_I(inode)->offset;
-+ long long cur_data_block = SQUASHFS_I(inode)->start_block;
-+ int i;
-+
-+ index /= SQUASHFS_META_INDEXES * skip;
-+
-+ while ( offset < index ) {
-+ meta = locate_meta_index(inode, index, offset + 1);
-+
-+ if (meta == NULL) {
-+ if ((meta = empty_meta_index(inode, offset + 1,
-+ skip)) == NULL)
-+ goto all_done;
-+ } else {
-+ offset = index < meta->offset + meta->entries ? index :
-+ meta->offset + meta->entries - 1;
-+ meta_entry = &meta->meta_entry[offset - meta->offset];
-+ cur_index_block = meta_entry->index_block + sblk->inode_table_start;
-+ cur_offset = meta_entry->offset;
-+ cur_data_block = meta_entry->data_block;
-+ TRACE("get_meta_index: offset %d, meta->offset %d, "
-+ "meta->entries %d\n", offset, meta->offset,
-+ meta->entries);
-+ TRACE("get_meta_index: index_block 0x%llx, offset 0x%x"
-+ " data_block 0x%llx\n", cur_index_block,
-+ cur_offset, cur_data_block);
-+ }
-+
-+ for (i = meta->offset + meta->entries; i <= index &&
-+ i < meta->offset + SQUASHFS_META_ENTRIES; i++) {
-+ int blocks = skip * SQUASHFS_META_INDEXES;
-+
-+ while (blocks) {
-+ int block = blocks > (SIZE >> 2) ? (SIZE >> 2) :
-+ blocks;
-+ int res = read_block_index(inode->i_sb, block,
-+ block_list, &cur_index_block,
-+ &cur_offset);
-+
-+ if (res == -1)
-+ goto failed;
-+
-+ cur_data_block += res;
-+ blocks -= block;
-+ }
-+
-+ meta_entry = &meta->meta_entry[i - meta->offset];
-+ meta_entry->index_block = cur_index_block - sblk->inode_table_start;
-+ meta_entry->offset = cur_offset;
-+ meta_entry->data_block = cur_data_block;
-+ meta->entries ++;
-+ offset ++;
-+ }
-+
-+ TRACE("get_meta_index: meta->offset %d, meta->entries %d\n",
-+ meta->offset, meta->entries);
-+
-+ release_meta_index(inode, meta);
-+ }
-+
-+all_done:
-+ *index_block = cur_index_block;
-+ *index_offset = cur_offset;
-+ *data_block = cur_data_block;
-+
-+ return offset * SQUASHFS_META_INDEXES * skip;
-+
-+failed:
-+ release_meta_index(inode, meta);
-+ return -1;
-+}
-+
-+
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize)
-+{
-+ long long block_ptr;
-+ int offset;
-+ long long block;
-+ int res = get_meta_index(inode, index, &block_ptr, &offset, &block,
-+ block_list);
-+
-+ TRACE("read_blocklist: res %d, index %d, block_ptr 0x%llx, offset"
-+ " 0x%x, block 0x%llx\n", res, index, block_ptr, offset,
-+ block);
-+
-+ if(res == -1)
-+ goto failure;
-+
-+ index -= res;
-+
-+ while ( index ) {
-+ int blocks = index > (SIZE >> 2) ? (SIZE >> 2) : index;
-+ int res = read_block_index(inode->i_sb, blocks, block_list,
-+ &block_ptr, &offset);
-+ if (res == -1)
-+ goto failure;
-+ block += res;
-+ index -= blocks;
-+ }
-+
-+ if (read_block_index(inode->i_sb, 1, block_list,
-+ &block_ptr, &offset) == -1)
-+ goto failure;
-+ *bsize = *((unsigned int *) block_list);
-+
-+ return block;
-+
-+failure:
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char block_list[SIZE];
-+ long long block;
-+ unsigned int bsize, i = 0, bytes = 0, byte_offset = 0;
-+ int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT);
-+ void *pageaddr;
-+ struct squashfs_fragment_cache *fragment = NULL;
-+ char *data_ptr = msblk->read_page;
-+
-+ int mask = (1 << (sblk->block_log - PAGE_CACHE_SHIFT)) - 1;
-+ int start_index = page->index & ~mask;
-+ int end_index = start_index | mask;
-+
-+ TRACE("Entered squashfs_readpage, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT))
-+ goto skip_read;
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ if ((block = (msblk->read_blocklist)(inode, index, 1,
-+ block_list, NULL, &bsize)) == 0)
-+ goto skip_read;
-+
-+ down(&msblk->read_page_mutex);
-+
-+ if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page,
-+ block, bsize, NULL))) {
-+ ERROR("Unable to read page, block %llx, size %x\n", block,
-+ bsize);
-+ up(&msblk->read_page_mutex);
-+ goto skip_read;
-+ }
-+ } else {
-+ if ((fragment = get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)->u.s1.fragment_size))
-+ == NULL) {
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ (int) SQUASHFS_I(inode)->
-+ u.s1.fragment_size);
-+ goto skip_read;
-+ }
-+ bytes = SQUASHFS_I(inode)->u.s1.fragment_offset +
-+ (i_size_read(inode) & (sblk->block_size
-+ - 1));
-+ byte_offset = SQUASHFS_I(inode)->u.s1.fragment_offset;
-+ data_ptr = fragment->data;
-+ }
-+
-+ for (i = start_index; i <= end_index && byte_offset < bytes;
-+ i++, byte_offset += PAGE_CACHE_SIZE) {
-+ struct page *push_page;
-+ int available_bytes = (bytes - byte_offset) > PAGE_CACHE_SIZE ?
-+ PAGE_CACHE_SIZE : bytes - byte_offset;
-+
-+ TRACE("bytes %d, i %d, byte_offset %d, available_bytes %d\n",
-+ bytes, i, byte_offset, available_bytes);
-+
-+ if (i == page->index) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memcpy(pageaddr, data_ptr + byte_offset,
-+ available_bytes);
-+ memset(pageaddr + available_bytes, 0,
-+ PAGE_CACHE_SIZE - available_bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+ } else if ((push_page =
-+ grab_cache_page_nowait(page->mapping, i))) {
-+ pageaddr = kmap_atomic(push_page, KM_USER0);
-+
-+ memcpy(pageaddr, data_ptr + byte_offset,
-+ available_bytes);
-+ memset(pageaddr + available_bytes, 0,
-+ PAGE_CACHE_SIZE - available_bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(push_page);
-+ SetPageUptodate(push_page);
-+ unlock_page(push_page);
-+ page_cache_release(push_page);
-+ }
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log))
-+ up(&msblk->read_page_mutex);
-+ else
-+ release_cached_fragment(msblk, fragment);
-+
-+ return 0;
-+
-+skip_read:
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage4K(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char block_list[SIZE];
-+ long long block;
-+ unsigned int bsize, bytes = 0;
-+ void *pageaddr;
-+
-+ TRACE("Entered squashfs_readpage4K, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT)) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ goto skip_read;
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || page->index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ block = (msblk->read_blocklist)(inode, page->index, 1,
-+ block_list, NULL, &bsize);
-+
-+ down(&msblk->read_page_mutex);
-+ bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
-+ bsize, NULL);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ if (bytes)
-+ memcpy(pageaddr, msblk->read_page, bytes);
-+ else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ block, bsize);
-+ up(&msblk->read_page_mutex);
-+ } else {
-+ struct squashfs_fragment_cache *fragment =
-+ get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ if (fragment) {
-+ bytes = i_size_read(inode) & (sblk->block_size - 1);
-+ memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)->
-+ u.s1.fragment_offset, bytes);
-+ release_cached_fragment(msblk, fragment);
-+ } else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block, (int)
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ }
-+
-+skip_read:
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ f_pos =- 3;
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length + 3;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ char buffer[sizeof(struct squashfs_dir_index) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_index *index = (struct squashfs_dir_index *) buffer;
-+ char str[SQUASHFS_NAME_LEN + 1];
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ return length + 3;
-+}
-+
-+
-+static int squashfs_readdir(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
-+
-+ TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset);
-+
-+ while(file->f_pos < 3) {
-+ char *name;
-+ int size, i_ino;
-+
-+ if(file->f_pos == 0) {
-+ name = ".";
-+ size = 1;
-+ i_ino = i->i_ino;
-+ } else {
-+ name = "..";
-+ size = 2;
-+ i_ino = SQUASHFS_I(i)->u.s2.parent_inode;
-+ }
-+ TRACE("Calling filldir(%x, %s, %d, %d, %d, %d)\n",
-+ (unsigned int) dirent, name, size, (int)
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]);
-+
-+ if (filldir(dirent, name, size,
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]) < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos += size;
-+ dirs_read++;
-+ }
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ dirs_read++;
-+ }
-+ }
-+
-+finish:
-+ return dirs_read;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN];
-+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_loop;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (name[0] < dire->name[0])
-+ goto exit_loop;
-+
-+ if ((len == dire->size + 1) && !strncmp(name,
-+ dire->name, len)) {
-+ squashfs_inode_t ino =
-+ SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %d\n", name,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number);
-+
-+ inode = (msblk->iget)(i->i_sb, ino);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_loop;
-+}
-+
-+
-+static void squashfs_put_super(struct super_block *s)
-+{
-+ int i;
-+
-+ if (s->s_fs_info) {
-+ struct squashfs_sb_info *sbi = s->s_fs_info;
-+ if (sbi->block_cache)
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (sbi->block_cache[i].block !=
-+ SQUASHFS_INVALID_BLK)
-+ kfree(sbi->block_cache[i].data);
-+ if (sbi->fragment)
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++)
-+ SQUASHFS_FREE(sbi->fragment[i].data);
-+ kfree(sbi->fragment);
-+ kfree(sbi->block_cache);
-+ kfree(sbi->read_data);
-+ kfree(sbi->read_page);
-+ kfree(sbi->uid);
-+ kfree(sbi->fragment_index);
-+ kfree(sbi->fragment_index_2);
-+ kfree(sbi->meta_index);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ }
-+}
-+
-+
-+static int squashfs_get_sb(struct file_system_type *fs_type,
-+ int flags, const char *dev_name, void *data, struct vfsmount *mnt)
-+{
-+ return get_sb_bdev(fs_type, flags, dev_name, data, squashfs_fill_super, mnt);
-+}
-+
-+
-+static int __init init_squashfs_fs(void)
-+{
-+ int err = init_inodecache();
-+ if (err)
-+ goto out;
-+
-+ printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) "
-+ "Phillip Lougher\n");
-+
-+ if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
-+ ERROR("Failed to allocate zlib workspace\n");
-+ destroy_inodecache();
-+ err = -ENOMEM;
-+ goto out;
-+ }
-+
-+ if ((err = register_filesystem(&squashfs_fs_type))) {
-+ vfree(stream.workspace);
-+ destroy_inodecache();
-+ }
-+
-+out:
-+ return err;
-+}
-+
-+
-+static void __exit exit_squashfs_fs(void)
-+{
-+ vfree(stream.workspace);
-+ unregister_filesystem(&squashfs_fs_type);
-+ destroy_inodecache();
-+}
-+
-+
-+static kmem_cache_t * squashfs_inode_cachep;
-+
-+
-+static struct inode *squashfs_alloc_inode(struct super_block *sb)
-+{
-+ struct squashfs_inode_info *ei;
-+ ei = kmem_cache_alloc(squashfs_inode_cachep, SLAB_KERNEL);
-+ if (!ei)
-+ return NULL;
-+ return &ei->vfs_inode;
-+}
-+
-+
-+static void squashfs_destroy_inode(struct inode *inode)
-+{
-+ kmem_cache_free(squashfs_inode_cachep, SQUASHFS_I(inode));
-+}
-+
-+
-+static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
-+{
-+ struct squashfs_inode_info *ei = foo;
-+
-+ if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
-+ SLAB_CTOR_CONSTRUCTOR)
-+ inode_init_once(&ei->vfs_inode);
-+}
-+
-+
-+static int __init init_inodecache(void)
-+{
-+ squashfs_inode_cachep = kmem_cache_create("squashfs_inode_cache",
-+ sizeof(struct squashfs_inode_info),
-+ 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
-+ init_once, NULL);
-+ if (squashfs_inode_cachep == NULL)
-+ return -ENOMEM;
-+ return 0;
-+}
-+
-+
-+static void destroy_inodecache(void)
-+{
-+ kmem_cache_destroy(squashfs_inode_cachep);
-+}
-+
-+
-+module_init(init_squashfs_fs);
-+module_exit(exit_squashfs_fs);
-+MODULE_DESCRIPTION("squashfs, a compressed read-only filesystem");
-+MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
-Index: git/fs/squashfs/Makefile
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/fs/squashfs/Makefile 2006-10-31 21:26:45.000000000 +0000
-@@ -0,0 +1,7 @@
-+#
-+# Makefile for the linux squashfs routines.
-+#
-+
-+obj-$(CONFIG_SQUASHFS) += squashfs.o
-+squashfs-y += inode.o
-+squashfs-y += squashfs2_0.o
-Index: git/fs/squashfs/squashfs2_0.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/fs/squashfs/squashfs2_0.c 2006-11-01 18:01:49.000000000 +0000
-@@ -0,0 +1,757 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs2_0.c
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/smp_lock.h>
-+#include <linux/slab.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+#include <linux/buffer_head.h>
-+#include <linux/vfs.h>
-+#include <linux/init.h>
-+#include <linux/dcache.h>
-+#include <linux/wait.h>
-+#include <linux/zlib.h>
-+#include <linux/blkdev.h>
-+#include <linux/vmalloc.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.h>
-+
-+#include "squashfs.h"
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir);
-+static struct dentry *squashfs_lookup_2(struct inode *, struct dentry *,
-+ struct nameidata *);
-+
-+static struct file_operations squashfs_dir_ops_2 = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir_2
-+};
-+
-+static struct inode_operations squashfs_dir_inode_ops_2 = {
-+ .lookup = squashfs_lookup_2
-+};
-+
-+static unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static int read_fragment_index_table_2(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ if (!(msblk->fragment_index_2 = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ return 0;
-+ }
-+
-+ if (SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments) &&
-+ !squashfs_read_data(s, (char *)
-+ msblk->fragment_index_2,
-+ sblk->fragment_table_start,
-+ SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ unsigned int fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES_2(sblk->fragments);
-+ i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES_2((&fragment),
-+ &msblk->fragment_index_2[i], 1);
-+ msblk->fragment_index_2[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int get_fragment_location_2(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index_2[SQUASHFS_FRAGMENT_INDEX_2(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET_2(fragment);
-+ struct squashfs_fragment_entry_2 fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry_2 sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY_2(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+static struct inode *squashfs_new_inode(struct super_block *s,
-+ struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ struct inode *i = new_inode(s);
-+
-+ if (i) {
-+ i->i_ino = ino;
-+ i->i_mtime.tv_sec = sblk->mkfs_time;
-+ i->i_atime.tv_sec = sblk->mkfs_time;
-+ i->i_ctime.tv_sec = sblk->mkfs_time;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_nlink = 1;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+ }
-+
-+ return i;
-+}
-+
-+
-+static struct inode *squashfs_iget_2(struct super_block *s, squashfs_inode_t inode)
-+{
-+ struct inode *i;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned int block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ unsigned int ino = SQUASHFS_MK_VFS_INODE(block
-+ - sblk->inode_table_start, offset);
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header_2 id, sid;
-+ struct squashfs_base_inode_header_2 *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ struct squashfs_reg_inode_header_2 *inodep = &id.reg;
-+ struct squashfs_reg_inode_header_2 *sinodep = &sid.reg;
-+ long long frag_blk;
-+ unsigned int frag_size;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location_2(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %x, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header_2 *inodep = &id.dir;
-+ struct squashfs_dir_inode_header_2 *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header_2 *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header_2 *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header_2 *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header_2 *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header_2 *inodep = &id.dev;
-+ struct squashfs_dev_inode_header_2 *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ insert_inode_hash(i);
-+ return i;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%x:%x]\n", block, offset);
-+
-+failed_read1:
-+ return NULL;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index_2 index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ char buffer[sizeof(struct squashfs_dir_index_2) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_index_2 *index = (struct squashfs_dir_index_2 *) buffer;
-+ char str[SQUASHFS_NAME_LEN + 1];
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index_2),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ return length;
-+}
-+
-+
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
-+
-+ TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset);
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos, SQUASHFS_MK_VFS_INODE(
-+ dirh.start_block, dire->offset),
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ dirs_read++;
-+ }
-+ }
-+
-+finish:
-+ return dirs_read;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup_2(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN];
-+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
-+ int sorted = sblk->s_major == 2 && sblk->s_minor >= 1;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_loop;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (sorted && name[0] < dire->name[0])
-+ goto exit_loop;
-+
-+ if ((len == dire->size + 1) && !strncmp(name,
-+ dire->name, len)) {
-+ squashfs_inode_t ino =
-+ SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %lld\n", name,
-+ dirh.start_block, dire->offset, ino);
-+
-+ inode = (msblk->iget)(i->i_sb, ino);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_loop;
-+}
-+
-+
-+int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->iget = squashfs_iget_2;
-+ msblk->read_fragment_index_table = read_fragment_index_table_2;
-+
-+ sblk->bytes_used = sblk->bytes_used_2;
-+ sblk->uid_start = sblk->uid_start_2;
-+ sblk->guid_start = sblk->guid_start_2;
-+ sblk->inode_table_start = sblk->inode_table_start_2;
-+ sblk->directory_table_start = sblk->directory_table_start_2;
-+ sblk->fragment_table_start = sblk->fragment_table_start_2;
-+
-+ return 1;
-+}
-Index: git/fs/squashfs/squashfs.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/fs/squashfs/squashfs.h 2006-10-31 21:26:45.000000000 +0000
-@@ -0,0 +1,86 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs.h
-+ */
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#endif
-+
-+#ifdef SQUASHFS_TRACE
-+#define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args)
-+#else
-+#define TRACE(s, args...) {}
-+#endif
-+
-+#define ERROR(s, args...) printk(KERN_ERR "SQUASHFS error: "s, ## args)
-+
-+#define SERROR(s, args...) do { \
-+ if (!silent) \
-+ printk(KERN_ERR "SQUASHFS error: "s, ## args);\
-+ } while(0)
-+
-+#define WARNING(s, args...) printk(KERN_WARNING "SQUASHFS: "s, ## args)
-+
-+static inline struct squashfs_inode_info *SQUASHFS_I(struct inode *inode)
-+{
-+ return list_entry(inode, struct squashfs_inode_info, vfs_inode);
-+}
-+
-+#if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY ) || defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY)
-+#define SQSH_EXTERN
-+extern unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index);
-+extern int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset);
-+extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment);
-+extern struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length);
-+extern struct address_space_operations squashfs_symlink_aops;
-+extern struct address_space_operations squashfs_aops;
-+extern struct address_space_operations squashfs_aops_4K;
-+extern struct inode_operations squashfs_dir_inode_ops;
-+#else
-+#define SQSH_EXTERN static
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-Index: git/include/linux/squashfs_fs.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/include/linux/squashfs_fs.h 2006-10-31 21:26:45.000000000 +0000
-@@ -0,0 +1,911 @@
-+#ifndef SQUASHFS_FS
-+#define SQUASHFS_FS
-+
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs.h
-+ */
-+
-+#ifndef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#define CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_VMALLOC
-+#define SQUASHFS_ALLOC(a) vmalloc(a)
-+#define SQUASHFS_FREE(a) vfree(a)
-+#else
-+#define SQUASHFS_ALLOC(a) kmalloc(a, GFP_KERNEL)
-+#define SQUASHFS_FREE(a) kfree(a)
-+#endif
-+#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
-+#define SQUASHFS_MAJOR 3
-+#define SQUASHFS_MINOR 0
-+#define SQUASHFS_MAGIC 0x73717368
-+#define SQUASHFS_MAGIC_SWAP 0x68737173
-+#define SQUASHFS_START 0
-+
-+/* size of metadata (inode and directory) blocks */
-+#define SQUASHFS_METADATA_SIZE 8192
-+#define SQUASHFS_METADATA_LOG 13
-+
-+/* default size of data blocks */
-+#define SQUASHFS_FILE_SIZE 65536
-+#define SQUASHFS_FILE_LOG 16
-+
-+#define SQUASHFS_FILE_MAX_SIZE 65536
-+
-+/* Max number of uids and gids */
-+#define SQUASHFS_UIDS 256
-+#define SQUASHFS_GUIDS 255
-+
-+/* Max length of filename (not 255) */
-+#define SQUASHFS_NAME_LEN 256
-+
-+#define SQUASHFS_INVALID ((long long) 0xffffffffffff)
-+#define SQUASHFS_INVALID_FRAG ((unsigned int) 0xffffffff)
-+#define SQUASHFS_INVALID_BLK ((long long) -1)
-+#define SQUASHFS_USED_BLK ((long long) -2)
-+
-+/* Filesystem flags */
-+#define SQUASHFS_NOI 0
-+#define SQUASHFS_NOD 1
-+#define SQUASHFS_CHECK 2
-+#define SQUASHFS_NOF 3
-+#define SQUASHFS_NO_FRAG 4
-+#define SQUASHFS_ALWAYS_FRAG 5
-+#define SQUASHFS_DUPLICATE 6
-+
-+#define SQUASHFS_BIT(flag, bit) ((flag >> bit) & 1)
-+
-+#define SQUASHFS_UNCOMPRESSED_INODES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOI)
-+
-+#define SQUASHFS_UNCOMPRESSED_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOD)
-+
-+#define SQUASHFS_UNCOMPRESSED_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOF)
-+
-+#define SQUASHFS_NO_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NO_FRAG)
-+
-+#define SQUASHFS_ALWAYS_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_ALWAYS_FRAG)
-+
-+#define SQUASHFS_DUPLICATES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_DUPLICATE)
-+
-+#define SQUASHFS_CHECK_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_CHECK)
-+
-+#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
-+ duplicate_checking) (noi | (nod << 1) | (check_data << 2) \
-+ | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
-+ (duplicate_checking << 6))
-+
-+/* Max number of types and file types */
-+#define SQUASHFS_DIR_TYPE 1
-+#define SQUASHFS_FILE_TYPE 2
-+#define SQUASHFS_SYMLINK_TYPE 3
-+#define SQUASHFS_BLKDEV_TYPE 4
-+#define SQUASHFS_CHRDEV_TYPE 5
-+#define SQUASHFS_FIFO_TYPE 6
-+#define SQUASHFS_SOCKET_TYPE 7
-+#define SQUASHFS_LDIR_TYPE 8
-+#define SQUASHFS_LREG_TYPE 9
-+
-+/* 1.0 filesystem type definitions */
-+#define SQUASHFS_TYPES 5
-+#define SQUASHFS_IPC_TYPE 0
-+
-+/* Flag whether block is compressed or uncompressed, bit is set if block is
-+ * uncompressed */
-+#define SQUASHFS_COMPRESSED_BIT (1 << 15)
-+
-+#define SQUASHFS_COMPRESSED_SIZE(B) (((B) & ~SQUASHFS_COMPRESSED_BIT) ? \
-+ (B) & ~SQUASHFS_COMPRESSED_BIT : SQUASHFS_COMPRESSED_BIT)
-+
-+#define SQUASHFS_COMPRESSED(B) (!((B) & SQUASHFS_COMPRESSED_BIT))
-+
-+#define SQUASHFS_COMPRESSED_BIT_BLOCK (1 << 24)
-+
-+#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B) (((B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK) ? (B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK : SQUASHFS_COMPRESSED_BIT_BLOCK)
-+
-+#define SQUASHFS_COMPRESSED_BLOCK(B) (!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
-+
-+/*
-+ * Inode number ops. Inodes consist of a compressed block number, and an
-+ * uncompressed offset within that block
-+ */
-+#define SQUASHFS_INODE_BLK(a) ((unsigned int) ((a) >> 16))
-+
-+#define SQUASHFS_INODE_OFFSET(a) ((unsigned int) ((a) & 0xffff))
-+
-+#define SQUASHFS_MKINODE(A, B) ((squashfs_inode_t)(((squashfs_inode_t) (A)\
-+ << 16) + (B)))
-+
-+/* Compute 32 bit VFS inode number from squashfs inode number */
-+#define SQUASHFS_MK_VFS_INODE(a, b) ((unsigned int) (((a) << 8) + \
-+ ((b) >> 2) + 1))
-+/* XXX */
-+
-+/* Translate between VFS mode and squashfs mode */
-+#define SQUASHFS_MODE(a) ((a) & 0xfff)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES(A) (A * sizeof(struct squashfs_fragment_entry))
-+
-+#define SQUASHFS_FRAGMENT_INDEX(A) (SQUASHFS_FRAGMENT_BYTES(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET(A) (SQUASHFS_FRAGMENT_BYTES(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES(A) ((SQUASHFS_FRAGMENT_BYTES(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES(A) (SQUASHFS_FRAGMENT_INDEXES(A) *\
-+ sizeof(long long))
-+
-+/* cached data constants for filesystem */
-+#define SQUASHFS_CACHED_BLKS 8
-+
-+#define SQUASHFS_MAX_FILE_SIZE_LOG 64
-+
-+#define SQUASHFS_MAX_FILE_SIZE ((long long) 1 << \
-+ (SQUASHFS_MAX_FILE_SIZE_LOG - 2))
-+
-+#define SQUASHFS_MARKER_BYTE 0xff
-+
-+/* meta index cache */
-+#define SQUASHFS_META_INDEXES (SQUASHFS_METADATA_SIZE / sizeof(unsigned int))
-+#define SQUASHFS_META_ENTRIES 31
-+#define SQUASHFS_META_NUMBER 8
-+#define SQUASHFS_SLOTS 4
-+
-+struct meta_entry {
-+ long long data_block;
-+ unsigned int index_block;
-+ unsigned short offset;
-+ unsigned short pad;
-+};
-+
-+struct meta_index {
-+ unsigned int inode_number;
-+ unsigned int offset;
-+ unsigned short entries;
-+ unsigned short skip;
-+ unsigned short locked;
-+ unsigned short pad;
-+ struct meta_entry meta_entry[SQUASHFS_META_ENTRIES];
-+};
-+
-+
-+/*
-+ * definitions for structures on disk
-+ */
-+
-+typedef long long squashfs_block_t;
-+typedef long long squashfs_inode_t;
-+
-+struct squashfs_super_block {
-+ unsigned int s_magic;
-+ unsigned int inodes;
-+ unsigned int bytes_used_2;
-+ unsigned int uid_start_2;
-+ unsigned int guid_start_2;
-+ unsigned int inode_table_start_2;
-+ unsigned int directory_table_start_2;
-+ unsigned int s_major:16;
-+ unsigned int s_minor:16;
-+ unsigned int block_size_1:16;
-+ unsigned int block_log:16;
-+ unsigned int flags:8;
-+ unsigned int no_uids:8;
-+ unsigned int no_guids:8;
-+ unsigned int mkfs_time /* time of filesystem creation */;
-+ squashfs_inode_t root_inode;
-+ unsigned int block_size;
-+ unsigned int fragments;
-+ unsigned int fragment_table_start_2;
-+ long long bytes_used;
-+ long long uid_start;
-+ long long guid_start;
-+ long long inode_table_start;
-+ long long directory_table_start;
-+ long long fragment_table_start;
-+ long long unused;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_index {
-+ unsigned int index;
-+ unsigned int start_block;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_BASE_INODE_HEADER \
-+ unsigned int inode_type:4; \
-+ unsigned int mode:12; \
-+ unsigned int uid:8; \
-+ unsigned int guid:8; \
-+ unsigned int mtime; \
-+ unsigned int inode_number;
-+
-+struct squashfs_base_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_lreg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ long long file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int parent_inode;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int i_count:16;
-+ unsigned int parent_inode;
-+ struct squashfs_dir_index index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header {
-+ struct squashfs_base_inode_header base;
-+ struct squashfs_dev_inode_header dev;
-+ struct squashfs_symlink_inode_header symlink;
-+ struct squashfs_reg_inode_header reg;
-+ struct squashfs_lreg_inode_header lreg;
-+ struct squashfs_dir_inode_header dir;
-+ struct squashfs_ldir_inode_header ldir;
-+ struct squashfs_ipc_inode_header ipc;
-+};
-+
-+struct squashfs_dir_entry {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ int inode_number:16;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_header {
-+ unsigned int count:8;
-+ unsigned int start_block;
-+ unsigned int inode_number;
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry {
-+ long long start_block;
-+ unsigned int size;
-+ unsigned int unused;
-+} __attribute__ ((packed));
-+
-+extern int squashfs_uncompress_block(void *d, int dstlen, void *s, int srclen);
-+extern int squashfs_uncompress_init(void);
-+extern int squashfs_uncompress_exit(void);
-+
-+/*
-+ * macros to convert each packed bitfield structure from little endian to big
-+ * endian and vice versa. These are needed when creating or using a filesystem
-+ * on a machine with different byte ordering to the target architecture.
-+ *
-+ */
-+
-+#define SQUASHFS_SWAP_START \
-+ int bits;\
-+ int b_pos;\
-+ unsigned long long val;\
-+ unsigned char *s;\
-+ unsigned char *d;
-+
-+#define SQUASHFS_SWAP_SUPER_BLOCK(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_super_block));\
-+ SQUASHFS_SWAP((s)->s_magic, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->inodes, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used_2, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->uid_start_2, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->guid_start_2, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->inode_table_start_2, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->directory_table_start_2, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->s_major, d, 224, 16);\
-+ SQUASHFS_SWAP((s)->s_minor, d, 240, 16);\
-+ SQUASHFS_SWAP((s)->block_size_1, d, 256, 16);\
-+ SQUASHFS_SWAP((s)->block_log, d, 272, 16);\
-+ SQUASHFS_SWAP((s)->flags, d, 288, 8);\
-+ SQUASHFS_SWAP((s)->no_uids, d, 296, 8);\
-+ SQUASHFS_SWAP((s)->no_guids, d, 304, 8);\
-+ SQUASHFS_SWAP((s)->mkfs_time, d, 312, 32);\
-+ SQUASHFS_SWAP((s)->root_inode, d, 344, 64);\
-+ SQUASHFS_SWAP((s)->block_size, d, 408, 32);\
-+ SQUASHFS_SWAP((s)->fragments, d, 440, 32);\
-+ SQUASHFS_SWAP((s)->fragment_table_start_2, d, 472, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used, d, 504, 64);\
-+ SQUASHFS_SWAP((s)->uid_start, d, 568, 64);\
-+ SQUASHFS_SWAP((s)->guid_start, d, 632, 64);\
-+ SQUASHFS_SWAP((s)->inode_table_start, d, 696, 64);\
-+ SQUASHFS_SWAP((s)->directory_table_start, d, 760, 64);\
-+ SQUASHFS_SWAP((s)->fragment_table_start, d, 824, 64);\
-+ SQUASHFS_SWAP((s)->unused, d, 888, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 64, 32);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header))\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dev_inode_header)); \
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->rdev, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_reg_inode_header));\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 224, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LREG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_lreg_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 128, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 224, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 256, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 147, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 192, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 155, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 168, 32);\
-+ SQUASHFS_SWAP((s)->i_count, d, 200, 16);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 216, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 40, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 64);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_SHORTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 2);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 16)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_INTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 4);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 32)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LONG_LONGS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 64)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DATA(s, d, n, bits) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * bits / 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ bits)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, bits);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+
-+struct squashfs_base_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int type:4;
-+ unsigned int offset:4;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n) \
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 4);\
-+ SQUASHFS_SWAP((s)->guid, d, 20, 4);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_1(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header_1));\
-+ SQUASHFS_SWAP((s)->type, d, 24, 4);\
-+ SQUASHFS_SWAP((s)->offset, d, 28, 4);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_1));\
-+ SQUASHFS_SWAP((s)->rdev, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_1));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_1));\
-+ SQUASHFS_SWAP((s)->mtime, d, 24, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 88, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_1));\
-+ SQUASHFS_SWAP((s)->file_size, d, 24, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 43, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 88, 24);\
-+}
-+
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+
-+struct squashfs_dir_index_2 {
-+ unsigned int index:27;
-+ unsigned int start_block:29;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_base_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+ unsigned int i_count:16;
-+ struct squashfs_dir_index_2 index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header_2 {
-+ struct squashfs_base_inode_header_2 base;
-+ struct squashfs_dev_inode_header_2 dev;
-+ struct squashfs_symlink_inode_header_2 symlink;
-+ struct squashfs_reg_inode_header_2 reg;
-+ struct squashfs_dir_inode_header_2 dir;
-+ struct squashfs_ldir_inode_header_2 ldir;
-+ struct squashfs_ipc_inode_header_2 ipc;
-+};
-+
-+struct squashfs_dir_header_2 {
-+ unsigned int count:8;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_entry_2 {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry_2 {
-+ unsigned int start_block;
-+ unsigned int size;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_2(s, d) \
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, sizeof(struct squashfs_ipc_inode_header_2))
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_2)); \
-+ SQUASHFS_SWAP((s)->rdev, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_2));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_2));\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->fragment, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 160, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 51, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 59, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 72, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 104, 24);\
-+ SQUASHFS_SWAP((s)->i_count, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index_2));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 27);\
-+ SQUASHFS_SWAP((s)->start_block, d, 27, 29);\
-+ SQUASHFS_SWAP((s)->size, d, 56, 8);\
-+}
-+#define SQUASHFS_SWAP_DIR_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header_2));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry_2));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry_2));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 32, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES_2(s, d, n) SQUASHFS_SWAP_INTS(s, d, n)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES_2(A) (A * sizeof(struct squashfs_fragment_entry_2))
-+
-+#define SQUASHFS_FRAGMENT_INDEX_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES_2(A) ((SQUASHFS_FRAGMENT_BYTES_2(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES_2(A) (SQUASHFS_FRAGMENT_INDEXES_2(A) *\
-+ sizeof(int))
-+
-+#endif
-+
-+#ifdef __KERNEL__
-+
-+/*
-+ * macros used to swap each structure entry, taking into account
-+ * bitfields and different bitfield placing conventions on differing
-+ * architectures
-+ */
-+
-+#include <asm/byteorder.h>
-+
-+#ifdef __BIG_ENDIAN
-+ /* convert from little endian to big endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, b_pos)
-+#else
-+ /* convert from big endian to little endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, 64 - tbits - b_pos)
-+#endif
-+
-+#define _SQUASHFS_SWAP(value, p, pos, tbits, SHIFT) {\
-+ b_pos = pos % 8;\
-+ val = 0;\
-+ s = (unsigned char *)p + (pos / 8);\
-+ d = ((unsigned char *) &val) + 7;\
-+ for(bits = 0; bits < (tbits + b_pos); bits += 8) \
-+ *d-- = *s++;\
-+ value = (val >> (SHIFT))/* & ((1 << tbits) - 1)*/;\
-+}
-+
-+#define SQUASHFS_MEMSET(s, d, n) memset(s, 0, n);
-+
-+#endif
-+#endif
-Index: git/include/linux/squashfs_fs_i.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/include/linux/squashfs_fs_i.h 2006-10-31 21:26:45.000000000 +0000
-@@ -0,0 +1,45 @@
-+#ifndef SQUASHFS_FS_I
-+#define SQUASHFS_FS_I
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_i.h
-+ */
-+
-+struct squashfs_inode_info {
-+ long long start_block;
-+ unsigned int offset;
-+ union {
-+ struct {
-+ long long fragment_start_block;
-+ unsigned int fragment_size;
-+ unsigned int fragment_offset;
-+ long long block_list_start;
-+ } s1;
-+ struct {
-+ long long directory_index_start;
-+ unsigned int directory_index_offset;
-+ unsigned int directory_index_count;
-+ unsigned int parent_inode;
-+ } s2;
-+ } u;
-+ struct inode vfs_inode;
-+};
-+#endif
-Index: git/include/linux/squashfs_fs_sb.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/include/linux/squashfs_fs_sb.h 2006-10-31 21:26:45.000000000 +0000
-@@ -0,0 +1,74 @@
-+#ifndef SQUASHFS_FS_SB
-+#define SQUASHFS_FS_SB
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_sb.h
-+ */
-+
-+#include <linux/squashfs_fs.h>
-+
-+struct squashfs_cache {
-+ long long block;
-+ int length;
-+ long long next_index;
-+ char *data;
-+};
-+
-+struct squashfs_fragment_cache {
-+ long long block;
-+ int length;
-+ unsigned int locked;
-+ char *data;
-+};
-+
-+struct squashfs_sb_info {
-+ struct squashfs_super_block sblk;
-+ int devblksize;
-+ int devblksize_log2;
-+ int swap;
-+ struct squashfs_cache *block_cache;
-+ struct squashfs_fragment_cache *fragment;
-+ int next_cache;
-+ int next_fragment;
-+ int next_meta_index;
-+ unsigned int *uid;
-+ unsigned int *guid;
-+ long long *fragment_index;
-+ unsigned int *fragment_index_2;
-+ unsigned int read_size;
-+ char *read_data;
-+ char *read_page;
-+ struct semaphore read_data_mutex;
-+ struct semaphore read_page_mutex;
-+ struct semaphore block_cache_mutex;
-+ struct semaphore fragment_mutex;
-+ struct semaphore meta_index_mutex;
-+ wait_queue_head_t waitq;
-+ wait_queue_head_t fragment_wait_queue;
-+ struct meta_index *meta_index;
-+ struct inode *(*iget)(struct super_block *s, squashfs_inode_t \
-+ inode);
-+ long long (*read_blocklist)(struct inode *inode, int \
-+ index, int readahead_blks, char *block_list, \
-+ unsigned short **block_p, unsigned int *bsize);
-+ int (*read_fragment_index_table)(struct super_block *s);
-+};
-+#endif
-Index: git/init/do_mounts_rd.c
-===================================================================
---- git.orig/init/do_mounts_rd.c 2006-10-31 16:09:47.000000000 +0000
-+++ git/init/do_mounts_rd.c 2006-10-31 21:26:45.000000000 +0000
-@@ -5,6 +5,7 @@
- #include <linux/ext2_fs.h>
- #include <linux/romfs_fs.h>
- #include <linux/cramfs_fs.h>
-+#include <linux/squashfs_fs.h>
- #include <linux/initrd.h>
- #include <linux/string.h>
-
-@@ -39,6 +40,7 @@ static int __init crd_load(int in_fd, in
- * numbers could not be found.
- *
- * We currently check for the following magic numbers:
-+ * squashfs
- * minix
- * ext2
- * romfs
-@@ -53,6 +55,7 @@ identify_ramdisk_image(int fd, int start
- struct ext2_super_block *ext2sb;
- struct romfs_super_block *romfsb;
- struct cramfs_super *cramfsb;
-+ struct squashfs_super_block *squashfsb;
- int nblocks = -1;
- unsigned char *buf;
-
-@@ -64,6 +67,7 @@ identify_ramdisk_image(int fd, int start
- ext2sb = (struct ext2_super_block *) buf;
- romfsb = (struct romfs_super_block *) buf;
- cramfsb = (struct cramfs_super *) buf;
-+ squashfsb = (struct squashfs_super_block *) buf;
- memset(buf, 0xe5, size);
-
- /*
-@@ -101,6 +105,15 @@ identify_ramdisk_image(int fd, int start
- goto done;
- }
-
-+ /* squashfs is at block zero too */
-+ if (squashfsb->s_magic == SQUASHFS_MAGIC) {
-+ printk(KERN_NOTICE
-+ "RAMDISK: squashfs filesystem found at block %d\n",
-+ start_block);
-+ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
-+ goto done;
-+ }
-+
- /*
- * Read block 1 to test for minix and ext2 superblock
- */
diff --git a/packages/linux/linux-rp-2.6.19/tmio-nand-r7.patch b/packages/linux/linux-rp-2.6.19/tmio-nand-r7.patch
deleted file mode 100644
index b6ce56eea4..0000000000
--- a/packages/linux/linux-rp-2.6.19/tmio-nand-r7.patch
+++ /dev/null
@@ -1,593 +0,0 @@
- drivers/mtd/nand/Kconfig | 7
- drivers/mtd/nand/Makefile | 1
- drivers/mtd/nand/tmio.c | 554 ++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 562 insertions(+)
-
-Index: git/drivers/mtd/nand/tmio.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/drivers/mtd/nand/tmio.c 2006-11-07 23:31:12.000000000 +0000
-@@ -0,0 +1,554 @@
-+/*
-+ * A device driver for NAND flash connected to a Toshiba Mobile IO
-+ * controller. This is known to work with the following variants:
-+ * TC6393XB revision 3
-+ *
-+ * Maintainer: Chris Humbert <mahadri+mtd@drigon.com>
-+ *
-+ * Copyright (C) 2005 Chris Humbert
-+ * Copyright (C) 2005 Dirk Opfer
-+ * Copyright (C) 2004 SHARP
-+ * Copyright (C) 2002 Lineo Japan, Inc.
-+ * Copyright (C) Ian Molton and Sebastian Carlier
-+ *
-+ * Based on Sharp's NAND driver, sharp_sl_tc6393.c
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/delay.h>
-+#include <linux/wait.h>
-+#include <linux/ioport.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/hardware/tmio.h>
-+
-+#include <linux/interrupt.h>
-+
-+#define mtd_printk(level, mtd, format, arg...) \
-+ printk (level "%s: " format, mtd->name, ## arg)
-+#define mtd_warn(mtd, format, arg...) \
-+ mtd_printk (KERN_WARNING, mtd, format, ## arg)
-+
-+/*--------------------------------------------------------------------------*/
-+
-+/* tmio_nfcr.mode Register Command List */
-+#define FCR_MODE_DATA 0x94 // Data Data_Mode
-+#define FCR_MODE_COMMAND 0x95 // Data Command_Mode
-+#define FCR_MODE_ADDRESS 0x96 // Data Address_Mode
-+
-+#define FCR_MODE_HWECC_CALC 0xB4 // HW-ECC Data
-+#define FCR_MODE_HWECC_RESULT 0xD4 // HW-ECC Calculation Result Read_Mode
-+#define FCR_MODE_HWECC_RESET 0xF4 // HW-ECC Reset
-+
-+#define FCR_MODE_POWER_ON 0x0C // Power Supply ON to SSFDC card
-+#define FCR_MODE_POWER_OFF 0x08 // Power Supply OFF to SSFDC card
-+
-+#define FCR_MODE_LED_OFF 0x00 // LED OFF
-+#define FCR_MODE_LED_ON 0x04 // LED ON
-+
-+#define FCR_MODE_EJECT_ON 0x68 // Ejection Demand from Penguin is Advanced
-+#define FCR_MODE_EJECT_OFF 0x08 // Ejection Demand from Penguin is Not Advanced
-+
-+#define FCR_MODE_LOCK 0x6C // Operates By Lock_Mode. Ejection Switch is Invalid
-+#define FCR_MODE_UNLOCK 0x0C // Operates By UnLock_Mode.Ejection Switch is Effective
-+
-+#define FCR_MODE_CONTROLLER_ID 0x40 // Controller ID Read
-+#define FCR_MODE_STANDBY 0x00 // SSFDC card Changes Standby State
-+
-+#define FCR_MODE_WE 0x80
-+#define FCR_MODE_ECC1 0x40
-+#define FCR_MODE_ECC0 0x20
-+#define FCR_MODE_CE 0x10
-+#define FCR_MODE_PCNT1 0x08
-+#define FCR_MODE_PCNT0 0x04
-+#define FCR_MODE_ALE 0x02
-+#define FCR_MODE_CLE 0x01
-+
-+#define FCR_STATUS_BUSY 0x80
-+
-+/*
-+ * NAND Flash Host Controller Configuration Register
-+ */
-+struct tmio_nfhccr {
-+ u8 x00[4];
-+ u16 command; /* 0x04 Command */
-+ u8 x01[0x0a];
-+ u16 base[2]; /* 0x10 NAND Flash Control Reg Base Addr*/
-+ u8 x02[0x29];
-+ u8 intp; /* 0x3d Interrupt Pin */
-+ u8 x03[0x0a];
-+ u8 inte; /* 0x48 Interrupt Enable */
-+ u8 x04;
-+ u8 ec; /* 0x4a Event Control */
-+ u8 x05;
-+ u8 icc; /* 0x4c Internal Clock Control */
-+ u8 x06[0x0e];
-+ u8 eccc; /* 0x5b ECC Control */
-+ u8 x07[4];
-+ u8 nftc; /* 0x60 NAND Flash Transaction Control */
-+ u8 nfm; /* 0x61 NAND Flash Monitor */
-+ u8 nfpsc; /* 0x62 NAND Flash Power Supply Control */
-+ u8 nfdc; /* 0x63 NAND Flash Detect Control */
-+ u8 x08[0x9c];
-+} __attribute__ ((packed));
-+
-+/*
-+ * NAND Flash Control Register
-+ */
-+struct tmio_nfcr {
-+union {
-+ u8 u8; /* 0x00 Data Register */
-+ u16 u16;
-+ u32 u32;
-+} __attribute__ ((packed));
-+ u8 mode; /* 0x04 Mode Register */
-+ u8 status; /* 0x05 Status Register */
-+ u8 isr; /* 0x06 Interrupt Status Register */
-+ u8 imr; /* 0x07 Interrupt Mask Register */
-+} __attribute__ ((packed));
-+
-+struct tmio_nand {
-+ struct mtd_info mtd;
-+ struct nand_chip chip;
-+
-+ struct tmio_nfhccr __iomem * ccr;
-+ struct tmio_nfcr __iomem * fcr;
-+
-+ unsigned int irq;
-+
-+ /* for tmio_nand_read_byte */
-+ u8 read;
-+ unsigned read_good:1;
-+};
-+
-+#define mtd_to_tmio(m) container_of(m, struct tmio_nand, mtd)
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static void tmio_nand_hwcontrol(struct mtd_info *mtd, int cmd,
-+ unsigned int ctrl)
-+{
-+ struct tmio_nand *tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem *fcr = tmio->fcr;
-+ struct nand_chip *chip = mtd->priv;
-+
-+ if (ctrl & NAND_CTRL_CHANGE) {
-+ u8 mode;
-+
-+ if (ctrl & NAND_NCE) {
-+ mode = FCR_MODE_DATA;
-+
-+ if (ctrl & NAND_CLE)
-+ mode |= FCR_MODE_CLE;
-+ else
-+ mode &= ~FCR_MODE_CLE;
-+
-+ if (ctrl & NAND_ALE)
-+ mode |= FCR_MODE_ALE;
-+ else
-+ mode &= ~FCR_MODE_ALE;
-+ } else {
-+ mode = FCR_MODE_STANDBY;
-+ }
-+
-+ iowrite8 (mode, &fcr->mode);
-+ tmio->read_good = 0;
-+ }
-+
-+ if (cmd != NAND_CMD_NONE)
-+ writeb(cmd, chip->IO_ADDR_W);
-+}
-+
-+static int tmio_nand_dev_ready (struct mtd_info* mtd)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ return !(ioread8 (&fcr->status) & FCR_STATUS_BUSY);
-+}
-+
-+static irqreturn_t tmio_irq (int irq, void *__tmio)
-+{
-+ struct tmio_nand* tmio = __tmio;
-+ struct nand_chip* this = &tmio->chip;
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ /* disable RDYREQ interrupt */
-+ iowrite8 (0x00, &fcr->imr);
-+
-+ if (unlikely (!waitqueue_active (&this->controller->wq)))
-+ printk (KERN_WARNING TMIO_NAME_NAND ": spurious interrupt\n");
-+
-+ wake_up (&this->controller->wq);
-+ return IRQ_HANDLED;
-+}
-+
-+/*
-+ * The TMIO core has a RDYREQ interrupt on the posedge of #SMRB.
-+ * This interrupt is normally disabled, but for long operations like
-+ * erase and write, we enable it to wake us up. The irq handler
-+ * disables the interrupt.
-+ */
-+static int
-+tmio_nand_wait (struct mtd_info *mtd, struct nand_chip *this)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ long timeout;
-+
-+ /* enable RDYREQ interrupt */
-+ iowrite8 (0x0f, &fcr->isr);
-+ iowrite8 (0x81, &fcr->imr);
-+
-+ timeout = wait_event_timeout (this->controller->wq, tmio_nand_dev_ready (mtd),
-+ msecs_to_jiffies (this->state == FL_ERASING ? 400 : 20));
-+
-+ if (unlikely (!tmio_nand_dev_ready (mtd))) {
-+ iowrite8 (0x00, &fcr->imr);
-+ mtd_warn (mtd, "still busy with %s after %d ms\n",
-+ this->state == FL_ERASING ? "erase" : "program",
-+ this->state == FL_ERASING ? 400 : 20);
-+
-+ } else if (unlikely (!timeout)) {
-+ iowrite8 (0x00, &fcr->imr);
-+ mtd_warn (mtd, "timeout waiting for interrupt\n");
-+ }
-+
-+ this->cmdfunc (mtd, NAND_CMD_STATUS, -1, -1);
-+ return this->read_byte (mtd);
-+}
-+
-+/*
-+ * The TMIO controller combines two 8-bit data bytes into one 16-bit
-+ * word. This function separates them so nand_base.c works as expected,
-+ * especially its NAND_CMD_READID routines.
-+ *
-+ * To prevent stale data from being read, tmio_nand_hwcontrol() clears
-+ * tmio->read_good.
-+ */
-+static u_char tmio_nand_read_byte (struct mtd_info *mtd)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ unsigned int data;
-+
-+ if (tmio->read_good--)
-+ return tmio->read;
-+
-+ data = ioread16 (&fcr->u16);
-+ tmio->read = data >> 8;
-+ return data;
-+}
-+
-+/*
-+ * The TMIO controller converts an 8-bit NAND interface to a 16-bit
-+ * bus interface, so all data reads and writes must be 16-bit wide.
-+ * Thus, we implement 16-bit versions of the read, write, and verify
-+ * buffer functions.
-+ */
-+static void
-+tmio_nand_write_buf (struct mtd_info *mtd, const u_char *buf, int len)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ iowrite16_rep (&fcr->u16, buf, len >> 1);
-+}
-+
-+static void tmio_nand_read_buf (struct mtd_info *mtd, u_char *buf, int len)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ ioread16_rep (&fcr->u16, buf, len >> 1);
-+}
-+
-+static int
-+tmio_nand_verify_buf (struct mtd_info *mtd, const u_char *buf, int len)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ u16* p = (u16*) buf;
-+
-+ for (len >>= 1; len; len--)
-+ if (*(p++) != ioread16 (&fcr->u16))
-+ return -EFAULT;
-+ return 0;
-+}
-+
-+static void tmio_nand_enable_hwecc (struct mtd_info* mtd, int mode)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ iowrite8 (FCR_MODE_HWECC_RESET, &fcr->mode);
-+ ioread8 (&fcr->u8); /* dummy read */
-+ iowrite8 (FCR_MODE_HWECC_CALC, &fcr->mode);
-+}
-+
-+static int tmio_nand_calculate_ecc (struct mtd_info* mtd, const u_char* dat,
-+ u_char* ecc_code)
-+{
-+ struct tmio_nand* tmio = mtd_to_tmio (mtd);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ unsigned int ecc;
-+
-+ iowrite8 (FCR_MODE_HWECC_RESULT, &fcr->mode);
-+
-+ ecc = ioread16 (&fcr->u16);
-+ ecc_code[1] = ecc; // 000-255 LP7-0
-+ ecc_code[0] = ecc >> 8; // 000-255 LP15-8
-+ ecc = ioread16 (&fcr->u16);
-+ ecc_code[2] = ecc; // 000-255 CP5-0,11b
-+ ecc_code[4] = ecc >> 8; // 256-511 LP7-0
-+ ecc = ioread16 (&fcr->u16);
-+ ecc_code[3] = ecc; // 256-511 LP15-8
-+ ecc_code[5] = ecc >> 8; // 256-511 CP5-0,11b
-+
-+ iowrite8 (FCR_MODE_DATA, &fcr->mode);
-+ return 0;
-+}
-+
-+static void tmio_hw_init (struct device *dev, struct tmio_nand *tmio)
-+{
-+ struct resource* nfcr = tmio_resource_control (dev);
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ struct tmio_nfhccr __iomem * ccr = tmio->ccr;
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+ unsigned long base;
-+
-+ /* (89h) SMD Buffer ON By TC6393XB SystemConfig gpibfc1 */
-+ tdev->ops->clock (dev, 1);
-+ tdev->ops->function (dev, 1);
-+
-+ /* (4Ch) CLKRUN Enable 1st spcrunc */
-+ iowrite8 (0x81, &ccr->icc);
-+
-+ /* (10h)BaseAddress 0x1000 spba.spba2 */
-+ base = nfcr->start - tdev->iomem->start;
-+ iowrite16 (base, ccr->base + 0);
-+ iowrite16 (base >> 16, ccr->base + 1);
-+
-+ /* (04h)Command Register I/O spcmd */
-+ iowrite8 (0x02, &ccr->command);
-+
-+ /* (62h) Power Supply Control ssmpwc */
-+ /* HardPowerOFF - SuspendOFF - PowerSupplyWait_4MS */
-+ iowrite8 (0x02, &ccr->nfpsc);
-+
-+ /* (63h) Detect Control ssmdtc */
-+ iowrite8 (0x02, &ccr->nfdc);
-+
-+ /* Interrupt status register clear sintst */
-+ iowrite8 (0x0f, &fcr->isr);
-+
-+ /* After power supply, Media are reset smode */
-+ iowrite8 (FCR_MODE_POWER_ON, &fcr->mode);
-+ iowrite8 (FCR_MODE_COMMAND, &fcr->mode);
-+ iowrite8 (NAND_CMD_RESET, &fcr->u8);
-+
-+ /* Standby Mode smode */
-+ iowrite8 (FCR_MODE_STANDBY, &fcr->mode);
-+
-+ mdelay (5);
-+}
-+
-+static void tmio_hw_stop (struct device *dev, struct tmio_nand *tmio)
-+{
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ struct tmio_nfcr __iomem * fcr = tmio->fcr;
-+
-+ iowrite8 (FCR_MODE_POWER_OFF, &fcr->mode);
-+ tdev->ops->function (dev, 0);
-+ tdev->ops->clock (dev, 0);
-+}
-+
-+/*--------------------------------------------------------------------------*/
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+static const char *part_probes[] = { "cmdlinepart", NULL };
-+#endif
-+
-+static int tmio_probe (struct device *dev)
-+{
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ struct tmio_nand_platform_data* tnpd = dev->platform_data;
-+ struct resource* ccr = tmio_resource_config (dev);
-+ struct resource* fcr = tmio_resource_control (dev);
-+ struct resource* irq = tmio_resource_irq (dev);
-+ struct tmio_nand* tmio;
-+ struct mtd_info* mtd;
-+ struct nand_chip* this;
-+ struct mtd_partition* parts;
-+ int nbparts = 0;
-+ int retval;
-+
-+ if (!tnpd)
-+ return -EINVAL;
-+
-+ retval = request_resource (tdev->iomem, ccr);
-+ if (retval)
-+ goto err_request_ccr;
-+
-+ retval = request_resource (tdev->iomem, fcr);
-+ if (retval)
-+ goto err_request_fcr;
-+
-+ tmio = kzalloc (sizeof *tmio, GFP_KERNEL);
-+ if (!tmio) {
-+ retval = -ENOMEM;
-+ goto err_kzalloc;
-+ }
-+
-+ dev_set_drvdata (dev, tmio);
-+ mtd = &tmio->mtd;
-+ this = &tmio->chip;
-+ mtd->priv = this;
-+ mtd->name = TMIO_NAME_NAND;
-+
-+ tmio->ccr = ioremap (ccr->start, ccr->end - ccr->start + 1);
-+ if (!tmio->ccr) {
-+ retval = -EIO;
-+ goto err_iomap_ccr;
-+ }
-+
-+ tmio->fcr = ioremap (fcr->start, fcr->end - fcr->start + 1);
-+ if (!tmio->fcr) {
-+ retval = -EIO;
-+ goto err_iomap_fcr;
-+ }
-+
-+ tmio_hw_init (dev, tmio);
-+
-+ /* Set address of NAND IO lines */
-+ this->IO_ADDR_R = tmio->fcr;
-+ this->IO_ADDR_W = tmio->fcr;
-+
-+ /* Set address of hardware control function */
-+ this->cmd_ctrl = tmio_nand_hwcontrol;
-+ this->dev_ready = tmio_nand_dev_ready;
-+ this->read_byte = tmio_nand_read_byte;
-+ this->write_buf = tmio_nand_write_buf;
-+ this->read_buf = tmio_nand_read_buf;
-+ this->verify_buf = tmio_nand_verify_buf;
-+
-+ /* set eccmode using hardware ECC */
-+ this->ecc.mode = NAND_ECC_HW;
-+ this->ecc.size = 512;
-+ this->ecc.bytes = 6;
-+ this->ecc.hwctl = tmio_nand_enable_hwecc;
-+ this->ecc.calculate = tmio_nand_calculate_ecc;
-+ this->ecc.correct = nand_correct_data;
-+ this->badblock_pattern = tnpd->badblock_pattern;
-+
-+ /* 15 us command delay time */
-+ this->chip_delay = 15;
-+
-+ if (irq->start) {
-+ retval = request_irq (irq->start, &tmio_irq,
-+ SA_INTERRUPT, irq->name, tmio);
-+ if (!retval) {
-+ tmio->irq = irq->start;
-+ this->waitfunc = tmio_nand_wait;
-+ } else
-+ mtd_warn (mtd, "request_irq error %d\n", retval);
-+ }
-+
-+ /* Scan to find existence of the device */
-+ if (nand_scan (mtd, 1)) {
-+ retval = -ENODEV;
-+ goto err_scan;
-+ }
-+
-+ /* Register the partitions */
-+#ifdef CONFIG_MTD_PARTITIONS
-+ nbparts = parse_mtd_partitions (mtd, part_probes, &parts, 0);
-+#endif
-+ if (nbparts <= 0) {
-+ parts = tnpd->partition;
-+ nbparts = tnpd->num_partitions;
-+ }
-+
-+ add_mtd_partitions (mtd, parts, nbparts);
-+ return 0;
-+
-+err_scan:
-+ if (tmio->irq)
-+ free_irq (tmio->irq, tmio);
-+ tmio_hw_stop (dev, tmio);
-+ iounmap (tmio->fcr);
-+err_iomap_fcr:
-+ iounmap (tmio->ccr);
-+err_iomap_ccr:
-+ kfree (tmio);
-+err_kzalloc:
-+ release_resource (fcr);
-+err_request_fcr:
-+ release_resource (ccr);
-+err_request_ccr:
-+ return retval;
-+}
-+
-+static int tmio_remove (struct device *dev)
-+{
-+ struct tmio_nand* tmio = dev_get_drvdata (dev);
-+
-+ nand_release (&tmio->mtd);
-+ if (tmio->irq)
-+ free_irq (tmio->irq, tmio);
-+ tmio_hw_stop (dev, tmio);
-+ iounmap (tmio->fcr);
-+ iounmap (tmio->ccr);
-+ kfree (tmio);
-+ release_resource (tmio_resource_control (dev));
-+ release_resource (tmio_resource_config (dev));
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+static int tmio_suspend (struct device *dev, pm_message_t state)
-+{
-+ tmio_hw_stop (dev, dev_get_drvdata (dev));
-+ return 0;
-+}
-+
-+static int tmio_resume (struct device *dev)
-+{
-+ tmio_hw_init (dev, dev_get_drvdata (dev));
-+ return 0;
-+}
-+#endif
-+
-+static struct device_driver tmio_driver = {
-+ .name = TMIO_NAME_NAND,
-+ .bus = &tmio_bus_type,
-+ .probe = tmio_probe,
-+ .remove = tmio_remove,
-+#ifdef CONFIG_PM
-+ .suspend = tmio_suspend,
-+ .resume = tmio_resume,
-+#endif
-+};
-+
-+static int __init tmio_init (void) {
-+ return driver_register (&tmio_driver);
-+}
-+
-+static void __exit tmio_exit (void) {
-+ driver_unregister (&tmio_driver);
-+}
-+
-+module_init (tmio_init);
-+module_exit (tmio_exit);
-+
-+MODULE_LICENSE ("GPL");
-+MODULE_AUTHOR ("Dirk Opfer, Chris Humbert");
-+MODULE_DESCRIPTION ("NAND flash driver on Toshiba Mobile IO controller");
-Index: git/drivers/mtd/nand/Kconfig
-===================================================================
---- git.orig/drivers/mtd/nand/Kconfig 2006-10-31 16:09:03.000000000 +0000
-+++ git/drivers/mtd/nand/Kconfig 2006-11-07 22:13:09.000000000 +0000
-@@ -63,6 +63,13 @@ config MTD_NAND_AMS_DELTA
- help
- Support for NAND flash on Amstrad E3 (Delta).
-
-+config MTD_NAND_TMIO
-+ tristate "NAND Flash device on Toshiba Mobile IO Controller"
-+ depends on MTD_NAND && TOSHIBA_TC6393XB
-+ help
-+ Support for NAND flash connected to a Toshiba Mobile IO
-+ Controller in some PDAs, including the Sharp SL6000x.
-+
- config MTD_NAND_TOTO
- tristate "NAND Flash device on TOTO board"
- depends on ARCH_OMAP && MTD_NAND && BROKEN
-Index: git/drivers/mtd/nand/Makefile
-===================================================================
---- git.orig/drivers/mtd/nand/Makefile 2006-10-31 16:09:03.000000000 +0000
-+++ git/drivers/mtd/nand/Makefile 2006-11-07 22:13:09.000000000 +0000
-@@ -22,5 +22,6 @@ obj-$(CONFIG_MTD_NAND_TS7250) += ts7250
- obj-$(CONFIG_MTD_NAND_NANDSIM) += nandsim.o
- obj-$(CONFIG_MTD_NAND_CS553X) += cs553x_nand.o
- obj-$(CONFIG_MTD_NAND_NDFC) += ndfc.o
-+obj-$(CONFIG_MTD_NAND_TMIO) += tmio.o
-
- nand-objs = nand_base.o nand_bbt.o
diff --git a/packages/linux/linux-rp-2.6.19/tmio-ohci-r6.patch b/packages/linux/linux-rp-2.6.19/tmio-ohci-r6.patch
deleted file mode 100644
index 9fdd2962c9..0000000000
--- a/packages/linux/linux-rp-2.6.19/tmio-ohci-r6.patch
+++ /dev/null
@@ -1,929 +0,0 @@
-
- drivers/usb/host/Kconfig | 1
- drivers/usb/host/ohci-hcd.c | 1
- drivers/usb/host/ohci-tmio.c | 894 +++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 896 insertions(+)
-
-Index: git/drivers/usb/host/ohci-tmio.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/drivers/usb/host/ohci-tmio.c 2006-11-07 21:48:33.000000000 +0000
-@@ -0,0 +1,894 @@
-+/*
-+ * 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/dma-mapping.h> /* for consistent_sync() */
-+#include <asm/hardware/tmio.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_dma_pool {
-+ struct device* dev;
-+ unsigned int size;
-+};
-+
-+struct tmio_hcd {
-+ struct gen_pool* poolp;
-+ struct usb_operations ops;
-+ struct tmio_dma_pool td_pool;
-+ struct tmio_dma_pool ed_pool;
-+
-+ struct tmio_uhccr __iomem *ccr;
-+ void __iomem * sram;
-+ size_t sram_len;
-+};
-+
-+#define hcd_to_tmio(hcd) ((struct tmio_hcd*)(hcd_to_ohci (hcd) + 1))
-+
-+struct tmio_td {
-+ void* data; /* td's data buffer */
-+ void __iomem * bounce; /* dma bounce buffer */
-+ dma_addr_t dma; /* bounce buffer dma address */
-+ size_t len; /* bounce buffer length */
-+ u32 info; /* parameter for td_fill */
-+};
-+
-+struct tmio_urb {
-+ int td_add; /* next index to be added */
-+ int td_queue; /* next index to be HC enqueued */
-+
-+ struct tmio_td td [0]; /* private td data */
-+};
-+
-+static inline struct tmio_urb *urb_to_turb (struct urb *urb)
-+{
-+ urb_priv_t* urb_priv = urb->hcpriv;
-+ return (struct tmio_urb*)(urb_priv->td + urb_priv->length);
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/* gen_pool_alloc page allocator callback */
-+static unsigned long tmio_pool_callback(struct gen_pool *poolp)
-+{
-+ return 0;
-+}
-+
-+static inline void tmio_pool_destroy(struct tmio_hcd *tmio)
-+{
-+ struct gen_pool *poolp = tmio->poolp;
-+
-+ if (!poolp)
-+ return;
-+ if (poolp->h)
-+ kfree(poolp->h);
-+ kfree(poolp);
-+ tmio->poolp = NULL;
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+#define BOUNDED_XYL(x,y,ylen) (((y) <= (x)) && ((x) < ((y)+(ylen))))
-+#define BOUNDED_XYY(x,y1,y2) (((y1) <= (x)) && ((x) < (y2)))
-+
-+static inline dma_addr_t tmio_virt_to_dma (struct usb_hcd *hcd, void *vaddr)
-+{
-+ struct resource* sram = tmio_resource_mem (hcd->self.controller);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+
-+ return BOUNDED_XYL (vaddr, tmio->sram, tmio->sram_len)
-+ ? sram->start + (vaddr - tmio->sram)
-+ : ~0;
-+}
-+
-+static inline void* tmio_dma_to_virt (struct usb_hcd *hcd, dma_addr_t handle)
-+{
-+ struct resource* sram = tmio_resource_mem (hcd->self.controller);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+
-+ return BOUNDED_XYY (handle, sram->start, sram->end + 1)
-+ ? tmio->sram + handle - sram->start
-+ : NULL;
-+}
-+
-+/*
-+ * allocate dma-able memory in the device's internal sram
-+ *
-+ * The generic pool allocator's minimum chunk size is 32 bytes,
-+ * which is the cache line size on the PXA255, so we don't need
-+ * to do anything special for smaller requests.
-+ */
-+static inline void *tmio_dma_alloc (struct device *dev, size_t size,
-+ dma_addr_t *handle, gfp_t mem_flags)
-+{
-+ struct usb_hcd* hcd = dev_get_drvdata (dev);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+ void* virt = (void*) gen_pool_alloc (tmio->poolp, size);
-+
-+ return (*handle = tmio_virt_to_dma (hcd, virt)) == ~0 ? NULL : virt;
-+}
-+
-+static inline void tmio_dma_free (struct device *dev, size_t size,
-+ void *cpu_addr, dma_addr_t handle)
-+{
-+ struct usb_hcd* hcd = dev_get_drvdata (dev);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+ dma_addr_t dma = tmio_virt_to_dma (hcd, cpu_addr);
-+
-+ if (unlikely (dma == ~0)) {
-+ dev_err (dev, "trying to free bad address 0x%p\n", cpu_addr);
-+ return;
-+ }
-+
-+ if (unlikely (handle != dma))
-+ dev_err (dev, "dma address mismatch for 0x%p: %08x != %08x\n",
-+ cpu_addr, handle, dma);
-+
-+ gen_pool_free (tmio->poolp, (unsigned long) cpu_addr, size);
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static void *tmio_dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags,
-+ dma_addr_t *handle)
-+{
-+ struct tmio_dma_pool *tdp = (struct tmio_dma_pool*) pool;
-+ return tmio_dma_alloc (tdp->dev, tdp->size, handle, mem_flags);
-+}
-+
-+static void
-+tmio_dma_pool_free (struct dma_pool *pool, void *vaddr, dma_addr_t addr)
-+{
-+ struct tmio_dma_pool *tdp = (struct tmio_dma_pool*) pool;
-+ return tmio_dma_free (tdp->dev, tdp->size, vaddr, addr);
-+}
-+
-+static void *tmio_buffer_alloc (struct usb_bus *bus, size_t size,
-+ gfp_t mem_flags, dma_addr_t *dma)
-+{
-+ return tmio_dma_alloc (bus->controller, size, dma, mem_flags);
-+}
-+
-+static void tmio_buffer_free (struct usb_bus *bus, size_t size,
-+ void *addr, dma_addr_t dma)
-+{
-+ tmio_dma_free (bus->controller, size, addr, dma);
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static void tmio_hc_stop (struct usb_hcd *hcd)
-+{
-+ struct device* dev = hcd->self.controller;
-+ struct tmio_device* tdev = dev_to_tdev (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_hc_start (struct usb_hcd *hcd)
-+{
-+ struct device* dev = hcd->self.controller;
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+ struct tmio_uhccr __iomem* ccr = tmio->ccr;
-+ union tmio_uhccr_pm pm = {0};
-+
-+ 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(hcd->rsrc_start, &ccr->basel);
-+ iowrite16(hcd->rsrc_start >> 16, &ccr->baseh);
-+ iowrite8 (1, &ccr->ilme);
-+ iowrite8 (2, &ccr->intc);
-+
-+ consistent_sync (tmio->sram, tmio->sram_len, DMA_BIDIRECTIONAL);
-+
-+ dev_info (dev, "revision %d @ 0x%08llx, irq %d\n",
-+ ioread8 (&ccr->revid), hcd->rsrc_start, hcd->irq);
-+}
-+
-+static void tmio_stop (struct usb_hcd *hcd)
-+{
-+ struct ohci_hcd* ohci = hcd_to_ohci (hcd);
-+
-+ /* NULL these so ohci_stop() doesn't try to free them */
-+ ohci->hcca = NULL;
-+ ohci->td_cache = NULL;
-+ ohci->ed_cache = NULL;
-+
-+ ohci_stop (hcd);
-+ tmio_hc_stop (hcd);
-+ tmio_pool_destroy (hcd_to_tmio (hcd));
-+
-+ /* We don't free the hcca because tmio_hc_stop() turns off
-+ * the sram and the memory allocation data is destroyed. */
-+}
-+
-+static int tmio_start (struct usb_hcd *hcd)
-+{
-+ struct device* dev = hcd->self.controller;
-+ struct ohci_hcd* ohci = hcd_to_ohci (hcd);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+ int retval;
-+
-+ tmio_hc_start (hcd);
-+
-+ tmio->poolp = gen_pool_create(0, fls(tmio->sram_len) - 1,
-+ tmio_pool_callback, 0);
-+ if (!tmio->poolp) {
-+ retval = -ENOMEM;
-+ goto err_gen_pool_create;
-+ }
-+
-+ gen_pool_free (tmio->poolp, (unsigned long)(tmio->sram),
-+ tmio->sram_len);
-+
-+ ohci->hcca = tmio_dma_alloc (dev, sizeof *ohci->hcca,
-+ &ohci->hcca_dma, GFP_KERNEL);
-+ if (!ohci->hcca) {
-+ retval = -ENOMEM;
-+ goto err_hcca_alloc;
-+ }
-+
-+ /* for our dma_pool_alloc/free hooks */
-+ ohci->td_cache = (struct dma_pool*) &tmio->td_pool;
-+ ohci->ed_cache = (struct dma_pool*) &tmio->ed_pool;
-+
-+ if ((retval = ohci_init (ohci)) < 0)
-+ goto err_ohci_init;
-+
-+ if ((retval = ohci_run (ohci)) < 0)
-+ goto err_ohci_run;
-+
-+ return 0;
-+
-+err_ohci_run:
-+ err ("can't start %s", hcd->self.bus_name);
-+err_ohci_init:
-+err_hcca_alloc:
-+err_gen_pool_create:
-+ tmio_stop (hcd);
-+ return retval;
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static inline void *tmio_urb_dma_to_virt(struct urb *urb, dma_addr_t dma)
-+{
-+ if (BOUNDED_XYL(dma, urb->transfer_dma, urb->transfer_buffer_length))
-+ return urb->transfer_buffer + dma - urb->transfer_dma;
-+
-+ if (BOUNDED_XYL(dma, urb->setup_dma, sizeof (struct usb_ctrlrequest)))
-+ return urb->setup_packet + dma - urb->setup_dma;
-+
-+ return NULL;
-+}
-+
-+static struct tmio_td* tmio_td_find (struct td *td, int *index)
-+{
-+ struct urb* urb = td->urb;
-+ urb_priv_t* urb_priv = urb->hcpriv;
-+ struct tmio_urb* turb = urb_to_turb (urb);
-+ int i;
-+
-+ for (i=0; i < urb_priv->length; i++)
-+ if (urb_priv->td[i] == td) {
-+ *index = i;
-+ return turb->td + i;
-+ }
-+
-+ return NULL;
-+}
-+
-+/*
-+ * map the td's data to dma-able memory
-+ *
-+ * if this td transfers data,
-+ * sets tmtd->data to the urb's data buffer
-+ * sets tmtd->dma to dma-able memory
-+ * sets tmtd->bounce to non-NULL if a bounce buffer is allocated
-+ * copies the urb's data buffer to the bounce buffer if necessary
-+ */
-+static int tmio_td_dma_map (struct ohci_hcd *ohci, struct urb *urb,
-+ struct tmio_td *tmtd, int idx)
-+{
-+ struct usb_hcd* hcd = ohci_to_hcd (ohci);
-+ struct device* dev = hcd->self.controller;
-+ dma_addr_t dma;
-+
-+ if (!tmtd->len)
-+ return 0;
-+
-+ if (tmio_dma_to_virt (hcd, tmtd->dma))
-+ return 0;
-+
-+ tmtd->data = tmio_urb_dma_to_virt (urb, tmtd->dma);
-+ if (unlikely (!tmtd->data)) {
-+ dev_err (dev, "TD has bad dma address 0x%08x\n", tmtd->dma);
-+ return 0;
-+ }
-+
-+ tmtd->bounce = tmio_dma_alloc (dev, tmtd->len, &dma, GFP_ATOMIC);
-+ if (!tmtd->bounce)
-+ return -ENOMEM;
-+
-+ if ((usb_pipecontrol (urb->pipe) && !idx) || usb_pipeout (urb->pipe)) {
-+ consistent_sync (tmtd->bounce, tmtd->len, DMA_TO_DEVICE);
-+ memcpy (tmtd->bounce, tmtd->data, tmtd->len);
-+ } else
-+ consistent_sync (tmtd->bounce, tmtd->len, DMA_FROM_DEVICE);
-+
-+ tmtd->dma = dma;
-+ return 0;
-+}
-+
-+/*
-+ * unmaps the td's data from dma-able memory
-+ *
-+ * if a bounce buffer has been allocated,
-+ * copy the bounce buffer to the urb's data buffer if necessary
-+ * free the bounce buffer
-+ */
-+static void tmio_td_dma_unmap (struct ohci_hcd *ohci, struct td *td)
-+{
-+ struct device* dev = (ohci_to_hcd (ohci))->self.controller;
-+ struct urb* urb = td->urb;
-+ int idx;
-+ struct tmio_td* tmtd = tmio_td_find (td, &idx);
-+
-+ if (!tmtd->bounce)
-+ return;
-+
-+ if (usb_pipein (urb->pipe) && (usb_pipecontrol (urb->pipe) ? idx : 1)) {
-+ memcpy (tmtd->data, tmtd->bounce, tmtd->len);
-+ consistent_sync (tmtd->data, tmtd->len, DMA_TO_DEVICE);
-+ }
-+
-+ tmio_dma_free (dev, tmtd->len, tmtd->bounce, tmtd->dma);
-+}
-+
-+static int tmio_urb_runqueue (struct ohci_hcd *ohci, struct urb *urb)
-+{
-+ struct tmio_urb* turb = urb_to_turb (urb);
-+ urb_priv_t* urb_priv= urb->hcpriv;
-+ int start = turb->td_queue;
-+ int retval = 0;
-+ int i;
-+
-+ for (i = start; i < turb->td_add; i = ++turb->td_queue) {
-+ struct tmio_td *tmtd = turb->td + i;
-+
-+ if ((retval = tmio_td_dma_map (ohci, urb, tmtd, i)))
-+ break;
-+
-+ td_fill (ohci, tmtd->info, tmtd->dma, tmtd->len, urb, i);
-+ }
-+
-+ if (i <= start)
-+ return retval;
-+
-+ /* kickstart the appropriate list */
-+ wmb ();
-+ switch (urb_priv->ed->type) {
-+ case PIPE_BULK:
-+ ohci_writel (ohci, OHCI_BLF, &ohci->regs->cmdstatus);
-+ break;
-+ case PIPE_CONTROL:
-+ ohci_writel (ohci, OHCI_CLF, &ohci->regs->cmdstatus);
-+ break;
-+ }
-+
-+ return retval;
-+}
-+
-+/*
-+ * This needs to be called with ohci->lock held so the pending urb list
-+ * isn't modified.
-+ */
-+static int tmio_ohci_runqueue (struct ohci_hcd *ohci)
-+{
-+ urb_priv_t* priv;
-+ int retval = 0;
-+
-+ list_for_each_entry_reverse (priv, &ohci->pending, pending)
-+ if ((retval = tmio_urb_runqueue (ohci, priv->td[0]->urb)))
-+ return retval;
-+
-+ return retval;
-+}
-+
-+static void tmio_td_fill (struct ohci_hcd *ohci, u32 info,
-+ dma_addr_t data, int len, struct urb *urb, int index)
-+{
-+ struct tmio_urb* turb = urb_to_turb (urb);
-+ struct tmio_td* tmtd = turb->td + index;
-+
-+ tmtd->data = NULL;
-+ tmtd->bounce = NULL;
-+ tmtd->dma = data;
-+ tmtd->len = len;
-+ tmtd->info = info;
-+ turb->td_add = index + 1;
-+}
-+
-+static void
-+tmio_td_done (struct ohci_hcd *ohci, struct urb *urb, struct td *td)
-+{
-+ tmio_td_dma_unmap (ohci, td);
-+ td_done (ohci, urb, td);
-+}
-+
-+const static struct ohci_ops tmio_ops = {
-+ .dma_pool_alloc = tmio_dma_pool_alloc,
-+ .dma_pool_free = tmio_dma_pool_free,
-+ .td_fill = tmio_td_fill,
-+ .td_done = tmio_td_done,
-+};
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static irqreturn_t tmio_irq (struct usb_hcd *hcd, struct pt_regs *ptregs)
-+{
-+ irqreturn_t retval = ohci_irq (hcd, ptregs);
-+
-+ if (retval == IRQ_HANDLED) {
-+ struct ohci_hcd *ohci = hcd_to_ohci (hcd);
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&ohci->lock, flags);
-+ tmio_ohci_runqueue (ohci);
-+ spin_unlock_irqrestore (&ohci->lock, flags);
-+ }
-+
-+ return retval;
-+}
-+
-+/*
-+ * This is ohci_urb_enqueue with:
-+ * dma address sanitization for tmio_urb_dma_to_virt()
-+ * allocate extra space in urb_priv for our private data
-+ * initialize urb_priv->td[0]->urb for tmio_ohci_runqueue()
-+ * call tmio_ohci_runqueue() after submitting TDs
-+ */
-+static int tmio_urb_enqueue (
-+ struct usb_hcd *hcd,
-+ struct usb_host_endpoint *ep,
-+ struct urb *urb,
-+ gfp_t mem_flags
-+) {
-+ struct ohci_hcd *ohci = hcd_to_ohci (hcd);
-+ struct ed *ed;
-+ urb_priv_t *urb_priv;
-+ unsigned int pipe = urb->pipe;
-+ int i, size = 0;
-+ unsigned long flags;
-+ int retval = 0;
-+
-+#ifdef OHCI_VERBOSE_DEBUG
-+ urb_print (urb, "SUB", usb_pipein (pipe));
-+#endif
-+
-+ /* make sure we can convert dma offsets back to virtual addresses */
-+ if (!tmio_dma_to_virt (hcd, urb->setup_dma))
-+ urb->setup_dma = 0;
-+
-+ if (!tmio_dma_to_virt (hcd, urb->transfer_dma))
-+ urb->transfer_dma = sizeof (struct usb_ctrlrequest);
-+
-+ /* every endpoint has a ed, locate and maybe (re)initialize it */
-+ if (! (ed = ed_get (ohci, ep, urb->dev, pipe, urb->interval)))
-+ return -ENOMEM;
-+
-+ /* for the private part of the URB we need the number of TDs (size) */
-+ switch (ed->type) {
-+ case PIPE_CONTROL:
-+ /* td_submit_urb() doesn't yet handle these */
-+ if (urb->transfer_buffer_length > 4096)
-+ return -EMSGSIZE;
-+
-+ /* 1 TD for setup, 1 for ACK, plus ... */
-+ size = 2;
-+ /* FALLTHROUGH */
-+ // case PIPE_INTERRUPT:
-+ // case PIPE_BULK:
-+ default:
-+ /* one TD for every 4096 Bytes (can be upto 8K) */
-+ size += urb->transfer_buffer_length / 4096;
-+ /* ... and for any remaining bytes ... */
-+ if ((urb->transfer_buffer_length % 4096) != 0)
-+ size++;
-+ /* ... and maybe a zero length packet to wrap it up */
-+ if (size == 0)
-+ size++;
-+ else if ((urb->transfer_flags & URB_ZERO_PACKET) != 0
-+ && (urb->transfer_buffer_length
-+ % usb_maxpacket (urb->dev, pipe,
-+ usb_pipeout (pipe))) == 0)
-+ size++;
-+ break;
-+ case PIPE_ISOCHRONOUS: /* number of packets from URB */
-+ size = urb->number_of_packets;
-+ break;
-+ }
-+
-+ /* allocate the private part of the URB */
-+ urb_priv = kzalloc (sizeof (urb_priv_t)
-+ + size * sizeof (struct td*)
-+ + sizeof (struct tmio_urb)
-+ + size * sizeof (struct tmio_td),
-+ mem_flags);
-+ if (!urb_priv)
-+ return -ENOMEM;
-+ INIT_LIST_HEAD (&urb_priv->pending);
-+ urb_priv->length = size;
-+ urb_priv->ed = ed;
-+
-+ /* allocate the TDs (deferring hash chain updates) */
-+ for (i = 0; i < size; i++) {
-+ urb_priv->td [i] = td_alloc (ohci, mem_flags);
-+ if (!urb_priv->td [i]) {
-+ urb_priv->length = i;
-+ urb_free_priv (ohci, urb_priv);
-+ return -ENOMEM;
-+ }
-+ urb_priv->td [i]->urb = urb;
-+ }
-+
-+ spin_lock_irqsave (&ohci->lock, flags);
-+
-+ /* don't submit to a dead HC */
-+ if (!HC_IS_RUNNING(hcd->state)) {
-+ retval = -ENODEV;
-+ goto fail;
-+ }
-+
-+ /* in case of unlink-during-submit */
-+ spin_lock (&urb->lock);
-+ if (urb->status != -EINPROGRESS) {
-+ spin_unlock (&urb->lock);
-+ urb->hcpriv = urb_priv;
-+ finish_urb (ohci, urb, NULL);
-+ retval = 0;
-+ goto fail;
-+ }
-+
-+ /* schedule the ed if needed */
-+ if (ed->state == ED_IDLE) {
-+ retval = ed_schedule (ohci, ed);
-+ if (retval < 0)
-+ goto fail0;
-+ if (ed->type == PIPE_ISOCHRONOUS) {
-+ u16 frame = ohci_frame_no(ohci);
-+
-+ /* delay a few frames before the first TD */
-+ frame += max_t (u16, 8, ed->interval);
-+ frame &= ~(ed->interval - 1);
-+ frame |= ed->branch;
-+ urb->start_frame = frame;
-+
-+ /* yes, only URB_ISO_ASAP is supported, and
-+ * urb->start_frame is never used as input.
-+ */
-+ }
-+ } else if (ed->type == PIPE_ISOCHRONOUS)
-+ urb->start_frame = ed->last_iso + ed->interval;
-+
-+ /* fill the TDs and link them to the ed; and
-+ * enable that part of the schedule, if needed
-+ * and update count of queued periodic urbs
-+ */
-+ urb->hcpriv = urb_priv;
-+ td_submit_urb (ohci, urb);
-+ tmio_ohci_runqueue (ohci);
-+
-+fail0:
-+ spin_unlock (&urb->lock);
-+fail:
-+ if (retval)
-+ urb_free_priv (ohci, urb_priv);
-+ spin_unlock_irqrestore (&ohci->lock, flags);
-+ return retval;
-+}
-+
-+static const struct hc_driver 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 = tmio_irq,
-+ .flags = HCD_USB11 | HCD_MEMORY,
-+
-+ /* basic lifecycle operations */
-+ .start = tmio_start,
-+ .stop = tmio_stop,
-+
-+ /* managing i/o requests and associated device resources */
-+ .urb_enqueue = tmio_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,
-+#ifdef CONFIG_PM
-+ .bus_suspend = ohci_bus_suspend,
-+ .bus_resume = ohci_bus_resume,
-+#endif
-+ .start_port_reset = ohci_start_port_reset,
-+};
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/* configure so an HC device and id are always provided */
-+/* always called with process context; sleeping is OK */
-+
-+/**
-+ * tmio_probe - initialize TMIO-based HCDs
-+ * Context: !in_interrupt()
-+ *
-+ * Allocates basic resources for this USB host controller, and
-+ * then invokes the start() method for the HCD associated with it
-+ * through the hotplug entry's driver_data.
-+ */
-+static int tmio_probe (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 usb_operations* ops;
-+ struct tmio_hcd* tmio;
-+ struct ohci_hcd* ohci;
-+ struct usb_hcd* hcd;
-+ int retval;
-+
-+ if (usb_disabled ())
-+ return -ENODEV;
-+
-+ if (dev->dma_mask || dev->coherent_dma_mask) {
-+ dev_err (dev, "DMA not supported\n");
-+ return -ENODEV;
-+ }
-+
-+ hcd = usb_create_hcd (&tmio_hc_driver, dev, dev->bus_id);
-+ if (!hcd) {
-+ retval = -ENOMEM;
-+ goto err_create_hcd;
-+ }
-+
-+ tmio = hcd_to_tmio (hcd);
-+ tmio->td_pool.dev = dev;
-+ tmio->ed_pool.dev = dev;
-+ tmio->td_pool.size = sizeof (struct td);
-+ tmio->ed_pool.size = sizeof (struct ed);
-+ ohci = hcd_to_ohci (hcd);
-+ ohci_hcd_init (ohci);
-+ ohci->ops = &tmio_ops;
-+
-+ 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->sram_len = sram->end - sram->start + 1;
-+
-+ 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;
-+ }
-+
-+ tmio->sram = ioremap (sram->start, tmio->sram_len);
-+ if (!tmio->sram) {
-+ retval = -ENOMEM;
-+ goto err_ioremap_sram;
-+ }
-+
-+ /* drivers should use our coherent buffer allocator */
-+ ops = &tmio->ops;
-+ memcpy (ops, hcd->self.op, sizeof *ops);
-+ ops->buffer_alloc = tmio_buffer_alloc;
-+ ops->buffer_free = tmio_buffer_free;
-+ hcd->self.op = ops;
-+
-+ retval = usb_add_hcd (hcd, irq->start, SA_INTERRUPT);
-+ if (retval)
-+ goto err_usb_add_hcd;
-+
-+ return 0;
-+
-+err_usb_add_hcd:
-+ iounmap (tmio->sram);
-+err_ioremap_sram:
-+ 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_create_hcd:
-+ return retval;
-+}
-+
-+/* may be called without controller electrically present */
-+/* may be called with controller, bus, and devices active */
-+
-+/**
-+ * tmio_remove - shutdown processing for TMIO-based HCDs
-+ * @dev: USB Host Controller being removed
-+ * Context: !in_interrupt()
-+ *
-+ * Reverses the effect of tmio_probe(), first invoking
-+ * the HCD's stop() method. It is always called from a thread
-+ * context, normally "rmmod", "apmd", or something similar.
-+ */
-+static int tmio_remove (struct device *dev)
-+{
-+ struct usb_hcd* hcd = dev_get_drvdata (dev);
-+ struct tmio_hcd* tmio = hcd_to_tmio (hcd);
-+
-+ usb_remove_hcd (hcd);
-+ iounmap (tmio->sram);
-+ 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);
-+ return 0;
-+}
-+
-+static struct device_driver tmio_ohci = {
-+ .name = TMIO_NAME_OHCI,
-+ .bus = &tmio_bus_type,
-+ .probe = tmio_probe,
-+ .remove = tmio_remove,
-+};
-+
-+static int __init tmio_init (void)
-+{
-+ dbg (DRIVER_INFO " (%s)", TMIO_SOC_NAME);
-+ dbg ("block sizes: ed %d td %d",
-+ sizeof (struct ed), sizeof (struct td));
-+
-+ return driver_register (&tmio_ohci);
-+}
-+
-+static void __exit tmio_exit (void)
-+{
-+ driver_unregister (&tmio_ohci);
-+}
-+
-+module_init (tmio_init);
-+module_exit (tmio_exit);
-Index: git/drivers/usb/host/Kconfig
-===================================================================
---- git.orig/drivers/usb/host/Kconfig 2006-11-07 21:46:32.000000000 +0000
-+++ git/drivers/usb/host/Kconfig 2006-11-07 21:48:38.000000000 +0000
-@@ -84,6 +84,7 @@ config USB_OHCI_HCD
- 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: git/drivers/usb/host/ohci-hcd.c
-===================================================================
---- git.orig/drivers/usb/host/ohci-hcd.c 2006-11-07 21:46:32.000000000 +0000
-+++ git/drivers/usb/host/ohci-hcd.c 2006-11-07 21:48:33.000000000 +0000
-@@ -944,6 +944,7 @@ MODULE_LICENSE ("GPL");
- || defined(CONFIG_ARCH_OMAP) \
- || defined (CONFIG_ARCH_LH7A404) \
- || defined (CONFIG_PXA27x) \
-+ || defined (CONFIG_TOSHIBA_TC6393XB) \
- || defined (CONFIG_ARCH_EP93XX) \
- || defined (CONFIG_SOC_AU1X00) \
- || defined (CONFIG_USB_OHCI_HCD_PPC_SOC) \
diff --git a/packages/linux/linux-rp-2.6.19/tmio-tc6393-r8.patch b/packages/linux/linux-rp-2.6.19/tmio-tc6393-r8.patch
deleted file mode 100644
index 2f1b47d783..0000000000
--- a/packages/linux/linux-rp-2.6.19/tmio-tc6393-r8.patch
+++ /dev/null
@@ -1,800 +0,0 @@
- arch/arm/common/Kconfig | 3
- arch/arm/common/Makefile | 1
- arch/arm/common/tc6393xb.c | 668 ++++++++++++++++++++++++++++++++++++++++
- arch/arm/mach-pxa/Kconfig | 1
- include/asm-arm/arch-pxa/irqs.h | 10
- include/asm-arm/hardware/tmio.h | 44 ++
- 6 files changed, 727 insertions(+)
-
-Index: git/arch/arm/common/tc6393xb.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/arch/arm/common/tc6393xb.c 2006-11-07 22:14:49.000000000 +0000
-@@ -0,0 +1,668 @@
-+/*
-+ * Toshiba TC6393XB SoC support
-+ *
-+ * Maintainer: Chris Humbert <mahadri-kernel@drigon.com>
-+ *
-+ * Copyright (c) 2005-2006 Chris Humbert
-+ * Copyright (c) 2005 Dirk Opfer
-+ *
-+ * Based on code written by Sharp/Lineo for 2.4 kernels
-+ * Based on locomo.c
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/delay.h>
-+#include <linux/errno.h>
-+#include <linux/ioport.h>
-+#include <linux/device.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+#include <linux/spinlock.h>
-+#include <linux/fb.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/mach-types.h>
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+#include <asm/mach/irq.h>
-+#include <asm/arch/irqs.h>
-+#include <asm/hardware/tmio.h>
-+
-+#ifndef TMIO_SOC_TC6393XB
-+#error "TC6393XB SoC not configured"
-+#endif
-+
-+/*--------------------------------------------------------------------------*/
-+
-+/* cell ids must be 0-based because they are used as array indexes. */
-+#define TC6393_CELL_NAND 0
-+#define TC6393_CELL_SD 1
-+#define TC6393_CELL_OHCI 2
-+#define TC6393_CELL_SERIAL 3
-+#define TC6393_CELL_LCD 4
-+#define TC6393_NUM_CELLS 5
-+
-+#define TC6393_RESOURCE(_name, _start, _end, _flags) \
-+ { \
-+ .name = _name, \
-+ .start = _start, \
-+ .end = _end, \
-+ .flags = _flags, \
-+ }
-+
-+#define TC6393_MEM(name, start, size) \
-+ TC6393_RESOURCE(name, start, (start) + (size) - 1, IORESOURCE_MEM)
-+
-+#define TC6393_IRQ(name, irq) \
-+ TC6393_RESOURCE(name, irq, irq, IORESOURCE_IRQ)
-+
-+const static struct resource tc6393_NAND_resource[] = {
-+ TC6393_MEM (TMIO_NAME_NAND, 0x000100, 0x100),
-+ TC6393_MEM (TMIO_NAME_NAND, 0x001000, 0x008),
-+ TC6393_MEM (TMIO_NAME_NAND, 0, 0),
-+ TC6393_IRQ (TMIO_NAME_NAND, IRQ_TC6393_NAND),
-+};
-+
-+const static struct resource tc6393_SD_resource[] = {
-+ TC6393_MEM (TMIO_NAME_SD, 0x000200, 0x100),
-+ TC6393_MEM (TMIO_NAME_SD, 0x002000, 0x200),
-+ TC6393_MEM (TMIO_NAME_SD, 0, 0),
-+ TC6393_IRQ (TMIO_NAME_SD, IRQ_TC6393_SD),
-+};
-+
-+const static struct resource tc6393_OHCI_resource[] = {
-+ TC6393_MEM (TMIO_NAME_OHCI, 0x000300, 0x100),
-+ TC6393_MEM (TMIO_NAME_OHCI, 0x003000, 0x100),
-+ TC6393_MEM (TMIO_NAME_OHCI, 0x010000, 32 * 1024),
-+ TC6393_IRQ (TMIO_NAME_OHCI, IRQ_TC6393_OHCI),
-+};
-+
-+const static struct resource tc6393_SERIAL_resource[] = {
-+ TC6393_MEM (TMIO_NAME_SERIAL, 0x000400, 0x100),
-+ TC6393_MEM (TMIO_NAME_SERIAL, 0x004000, 0x100),
-+ TC6393_MEM (TMIO_NAME_SERIAL, 0, 0),
-+ TC6393_IRQ (TMIO_NAME_SERIAL, IRQ_TC6393_SERIAL),
-+};
-+
-+const static struct resource tc6393_LCD_resource[] = {
-+ TC6393_MEM (TMIO_NAME_LCD, 0x000500, 0x100),
-+ TC6393_MEM (TMIO_NAME_LCD, 0x005000, 0x200),
-+ TC6393_MEM (TMIO_NAME_LCD, 0x100000, 1024 * 1024),
-+ TC6393_IRQ (TMIO_NAME_LCD, IRQ_TC6393_LCD),
-+};
-+
-+#define TC6393_CELL(_NAME) \
-+ [TC6393_CELL_##_NAME] = { \
-+ .name = TMIO_NAME_##_NAME, \
-+ .id = TC6393_CELL_##_NAME, \
-+ .resource = tc6393_##_NAME##_resource, \
-+ .num_resources = ARRAY_SIZE (tc6393_##_NAME##_resource), \
-+ }
-+
-+struct tc6393_cell {
-+ const char* name;
-+ unsigned int id;
-+ const struct resource* resource;
-+ unsigned int num_resources;
-+};
-+
-+const static struct tc6393_cell tc6393_cell [TC6393_NUM_CELLS] = {
-+ TC6393_CELL (NAND ),
-+ TC6393_CELL (SD ),
-+ TC6393_CELL (OHCI ),
-+ TC6393_CELL (SERIAL ),
-+ TC6393_CELL (LCD ),
-+};
-+
-+/*--------------------------------------------------------------------------*/
-+
-+/*
-+ * TC6393 System Configuration Register
-+ */
-+struct tc6393_scr {
-+ u8 x00[8];
-+ u8 revid; /* 0x08 Revision ID */
-+ u8 x01[0x47];
-+ u8 isr; /* 0x50 Interrupt Status */
-+ u8 x02;
-+ u8 imr; /* 0x52 Interrupt Mask */
-+ u8 x03;
-+ u8 irr; /* 0x54 Interrupt Routing */
-+ u8 x04[0x0b];
-+ u16 gper; /* 0x60 GP Enable */
-+ u8 x05[2];
-+ u16 gpi_sr[2]; /* 0x64 GPI Status */
-+ u16 gpi_imr[2]; /* 0x68 GPI INT Mask */
-+ u16 gpi_eder[2]; /* 0x6c GPI Edge Detect Enable */
-+ u16 gpi_lir[4]; /* 0x70 GPI Level Invert */
-+ u16 gpo_dsr[2]; /* 0x78 GPO Data Set */
-+ u16 gpo_doecr[2]; /* 0x7c GPO Data OE Control */
-+ u16 gp_iarcr[2]; /* 0x80 GP Internal Active Reg Control */
-+ u16 gp_iarlcr[2]; /* 0x84 GP Internal Active Reg Level Con*/
-+ u8 gpi_bcr[4]; /* 0x88 GPI Buffer Control */
-+ u16 gpa_iarcr; /* 0x8c GPa Internal Active Reg Control */
-+ u8 x06[2];
-+ u16 gpa_iarlcr; /* 0x90 GPa Internal Active Reg Level Co*/
-+ u8 x07[2];
-+ u16 gpa_bcr; /* 0x94 GPa Buffer Control */
-+ u8 x08[2];
-+ u16 ccr; /* 0x98 Clock Control */
-+ u16 pll2cr; /* 0x9a PLL2 Control */
-+ u16 pll1cr[2]; /* 0x9c PLL1 Control */
-+ u8 diarcr; /* 0xa0 Device Internal Active Reg Contr*/
-+ u8 dbocr; /* 0xa1 Device Buffer Off Control */
-+ u8 x09[0x3e];
-+ u8 fer; /* 0xe0 Function Enable */
-+ u8 x10[3];
-+ u16 mcr; /* 0xe4 Mode Control */
-+ u8 x11[0x14];
-+ u8 config; /* 0xfc Configuration Control */
-+ u8 x12[2];
-+ u8 debug; /* 0xff Debug */
-+} __attribute__ ((packed));
-+
-+union tc6393_scr_fer {
-+ u8 raw;
-+struct {
-+ unsigned usben:1; /* D0 USB enable */
-+ unsigned lcdcven:1; /* D1 polysylicon TFT enable */
-+ unsigned slcden:1; /* D2 SLCD enable */
-+} __attribute__ ((packed));
-+} __attribute__ ((packed));
-+
-+union tc6393_scr_ccr {
-+ u16 raw;
-+struct {
-+ unsigned ck32ken:1; /* D0 SD host clock enable */
-+ unsigned usbcken:1; /* D1 USB host clock enable */
-+ unsigned x00:2;
-+ unsigned sharp:1; /* D4 ??? set in Sharp's code */
-+ unsigned x01:3;
-+ enum { disable = 0,
-+ m12MHz = 1,
-+ m24MHz = 2,
-+ m48MHz = 3,
-+ } mclksel:3; /* D10-D8 LCD controller clock */
-+ unsigned x02:1;
-+ enum { h24MHz = 0,
-+ h48MHz = 1,
-+ } hclksel:2; /* D13-D12 host bus clock */
-+ unsigned x03:2;
-+} __attribute__ ((packed));
-+} __attribute__ ((packed));
-+
-+/*--------------------------------------------------------------------------*/
-+
-+struct tc6393 {
-+ spinlock_t lock; /* read-modify-write lock */
-+ struct device* dev; /* TC6393 device */
-+ struct tc6393_scr __iomem *scr; /* system configuration reg */
-+
-+ struct resource rscr; /* system config reg resource */
-+ struct resource* iomem; /* entire TC6393 iomem resource */
-+ unsigned int irq; /* hardware cascade irq */
-+
-+ struct tmio_device tdev [TC6393_NUM_CELLS];
-+};
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static u32 tc6393_ioread32 (const void __iomem *addr)
-+{
-+ return ((u32) ioread16 (addr)) | (((u32) ioread16 (addr + 2)) << 16);
-+}
-+
-+static u32 tc6393_iowrite32 (u32 val, const void __iomem *addr)
-+{
-+ iowrite16 (val, addr);
-+ iowrite16 (val >> 16, addr + 2);
-+ return val;
-+}
-+
-+u32 get_tc6393_gpio (struct device *dev)
-+{
-+ struct tc6393* tc6393 = dev_get_drvdata (dev);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+
-+ return tc6393_ioread32 (scr->gpo_dsr);
-+}
-+EXPORT_SYMBOL (get_tc6393_gpio);
-+
-+u32 set_tc6393_gpio (struct device *dev, u32 bits)
-+{
-+ struct tc6393* tc6393 = dev_get_drvdata (dev);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ unsigned long flags;
-+ u32 dsr;
-+
-+ spin_lock_irqsave (&tc6393->lock, flags);
-+ dsr = tc6393_ioread32 (scr->gpo_dsr) | bits;
-+ tc6393_iowrite32 (dsr, scr->gpo_dsr);
-+ spin_unlock_irqrestore (&tc6393->lock, flags);
-+
-+ return dsr;
-+}
-+EXPORT_SYMBOL (set_tc6393_gpio);
-+
-+u32 reset_tc6393_gpio (struct device *dev, u32 bits)
-+{
-+ struct tc6393* tc6393 = dev_get_drvdata (dev);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ unsigned long flags;
-+ u32 dsr;
-+
-+ spin_lock_irqsave (&tc6393->lock, flags);
-+ dsr = tc6393_ioread32 (scr->gpo_dsr) & ~bits;
-+ tc6393_iowrite32 (dsr, scr->gpo_dsr);
-+ spin_unlock_irqrestore (&tc6393->lock, flags);
-+
-+ return dsr;
-+}
-+EXPORT_SYMBOL (reset_tc6393_gpio);
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static void
-+tc6393_irq (unsigned int irq, struct irqdesc *desc)
-+{
-+ struct tc6393* tc6393 = get_irq_chipdata (irq);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ unsigned int isr;
-+ unsigned int bit;
-+ unsigned int i;
-+
-+ desc->chip->ack (irq);
-+
-+ while ((isr = ioread8(&scr->isr) & ~ioread8(&scr->imr)))
-+ for (bit = 1, i = IRQ_TC6393_START; i <= IRQ_TC6393_LCD;
-+ bit <<= 1, i++)
-+ if (isr & bit)
-+ desc_handle_irq (i, irq_desc + i);
-+}
-+
-+static void tc6393_irq_ack (unsigned int irq)
-+{
-+}
-+
-+static void tc6393_irq_mask (unsigned int irq)
-+{
-+ struct tc6393* tc6393 = get_irq_chipdata (irq);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave (&tc6393->lock, flags);
-+ iowrite8 (ioread8 (&scr->imr) | (1 << (irq - IRQ_TC6393_START)),
-+ &scr->imr);
-+ spin_unlock_irqrestore (&tc6393->lock, flags);
-+}
-+
-+static void tc6393_irq_unmask (unsigned int irq)
-+{
-+ struct tc6393* tc6393 = get_irq_chipdata (irq);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave (&tc6393->lock, flags);
-+ iowrite8 (ioread8 (&scr->imr) & ~(1 << (irq - IRQ_TC6393_START)),
-+ &scr->imr);
-+ spin_unlock_irqrestore (&tc6393->lock, flags);
-+}
-+
-+static struct irqchip tc6393_chip = {
-+ .ack = tc6393_irq_ack,
-+ .mask = tc6393_irq_mask,
-+ .unmask = tc6393_irq_unmask,
-+};
-+
-+static void tc6393_attach_irq (struct tc6393 *tc6393)
-+{
-+ unsigned int irq;
-+
-+ for (irq = IRQ_TC6393_START; irq <= IRQ_TC6393_LCD; irq++) {
-+ set_irq_chip (irq, &tc6393_chip);
-+ set_irq_chipdata(irq, tc6393);
-+ set_irq_handler (irq, do_edge_IRQ);
-+ set_irq_flags (irq, IRQF_VALID | IRQF_PROBE);
-+ }
-+
-+ set_irq_type (tc6393->irq, IRQT_FALLING);
-+ set_irq_chipdata (tc6393->irq, tc6393);
-+ set_irq_chained_handler (tc6393->irq, tc6393_irq);
-+}
-+
-+static void tc6393_detach_irq (struct tc6393 *tc6393)
-+{
-+ unsigned int irq;
-+
-+ set_irq_chained_handler (tc6393->irq, NULL);
-+ set_irq_chipdata (tc6393->irq, NULL);
-+
-+ for (irq = IRQ_TC6393_START; irq <= IRQ_TC6393_LCD; irq++) {
-+ set_irq_flags (irq, 0);
-+ set_irq_chip (irq, NULL);
-+ set_irq_chipdata(irq, NULL);
-+ }
-+}
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static int tc6393_bus_match (struct device *dev, struct device_driver *drv)
-+{
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ const struct tc6393_cell* cell = tdev->soc_data;
-+
-+ return !strcmp (cell->name, drv->name);
-+}
-+
-+static int tc6393_bus_suspend (struct device *dev, pm_message_t state)
-+{
-+ struct device_driver* drv = dev->driver;
-+ return drv && drv->suspend ? drv->suspend (dev, state) : 0;
-+}
-+
-+static int tc6393_bus_resume (struct device *dev)
-+{
-+ struct device_driver* drv = dev->driver;
-+ return drv && drv->resume ? drv->resume (dev) : 0;
-+}
-+
-+struct bus_type tc6393_bus_type = {
-+ .name = TMIO_NAME_BUS,
-+ .match = tc6393_bus_match,
-+ .suspend = tc6393_bus_suspend,
-+ .resume = tc6393_bus_resume,
-+};
-+EXPORT_SYMBOL (tc6393_bus_type);
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static void tc6393_cell_clock (struct device *dev, int enable)
-+{
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ const struct tc6393_cell* cell = tdev->soc_data;
-+ struct tc6393* tc6393 = dev_get_drvdata (dev->parent);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ union tc6393_scr_ccr ccr;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave (&tc6393->lock, flags);
-+ ccr.raw = ioread16 (&scr->ccr);
-+
-+ switch (cell->id) {
-+ case TC6393_CELL_SD: ccr.ck32ken = enable; break;
-+ case TC6393_CELL_OHCI: ccr.usbcken = enable; break;
-+ case TC6393_CELL_LCD:
-+ ccr.mclksel = enable ? m48MHz : disable;
-+ break;
-+ }
-+
-+ printk (KERN_DEBUG TMIO_NAME_CORE ": scr->ccr = %04x\n", ccr.raw);
-+
-+ iowrite16(ccr.raw, &scr->ccr);
-+ spin_unlock_irqrestore (&tc6393->lock, flags);
-+}
-+
-+static void tc6393_cell_function (struct device *dev, int enable)
-+{
-+ struct tmio_device* tdev = dev_to_tdev (dev);
-+ const struct tc6393_cell* cell = tdev->soc_data;
-+ struct tc6393* tc6393 = dev_get_drvdata (dev->parent);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ union tc6393_scr_fer fer;
-+ unsigned long flags;
-+
-+ if (cell->id == TC6393_CELL_NAND) {
-+ if (enable) {
-+ /* SMD buffer on */
-+ printk (KERN_DEBUG TMIO_NAME_CORE ": SMD buffer on\n");
-+ iowrite8 (0xff, scr->gpi_bcr + 1);
-+ }
-+ return;
-+ }
-+
-+ spin_lock_irqsave (&tc6393->lock, flags);
-+ fer.raw = ioread16 (&scr->fer);
-+
-+ switch (cell->id) {
-+ case TC6393_CELL_OHCI: fer.usben = enable; break;
-+ case TC6393_CELL_LCD: fer.slcden = enable; break;
-+ }
-+
-+ printk (KERN_DEBUG TMIO_NAME_CORE ": scr->fer = %02x\n", fer.raw);
-+
-+ iowrite8 (fer.raw, &scr->fer);
-+ spin_unlock_irqrestore (&tc6393->lock, flags);
-+}
-+
-+static void
-+tc6393_lcd_mode (struct device *dev, const struct fb_videomode *mode)
-+{
-+ struct tc6393* tc6393 = dev_get_drvdata (dev->parent);
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+
-+ iowrite16 (mode->pixclock, scr->pll1cr + 0);
-+ iowrite16 (mode->pixclock >> 16, scr->pll1cr + 1);
-+}
-+
-+static struct tmio_cell_ops tc6393_cell_ops = {
-+ .clock = tc6393_cell_clock,
-+ .function = tc6393_cell_function,
-+ .lcd_mode = tc6393_lcd_mode,
-+};
-+
-+static void tc6393_device_release (struct device *dev)
-+{
-+}
-+
-+static int
-+tc6393_device_register (struct tc6393 *tc6393, struct tmio_cell *tcell)
-+{
-+ const struct tc6393_cell* cell;
-+ struct tmio_device* tdev;
-+ struct device* dev;
-+ int i;
-+
-+ for (i = 0; strcmp (tcell->name, tc6393_cell [i].name); )
-+ if (++i >= ARRAY_SIZE(tc6393_cell))
-+ return -EINVAL;
-+
-+ cell = tc6393_cell + i;
-+ tdev = tc6393->tdev + i;
-+ dev = &tdev->dev;
-+
-+ tdev->ops = &tc6393_cell_ops;
-+ tdev->iomem = tc6393->iomem;
-+ tdev->soc_data = (void*) cell;
-+
-+ dev->parent = tc6393->dev;
-+ strncpy (dev->bus_id, cell->name, sizeof dev->bus_id);
-+ dev->bus = &tc6393_bus_type;
-+ dev->dma_mask = tc6393->dev->dma_mask;
-+ dev->coherent_dma_mask = tc6393->dev->coherent_dma_mask;
-+ dev->release = tc6393_device_release;
-+ dev->platform_data = tcell->platform_data;
-+
-+ for (i=0; i < cell->num_resources; i++) {
-+ const struct resource* cr = cell->resource + i;
-+ struct resource* dr = tdev->resource + i;
-+
-+ dr->name = cr->name;
-+ dr->start = cr->start;
-+ dr->end = cr->end;
-+ dr->flags = cr->flags;
-+
-+ /* convert memory offsets to absolutes */
-+ if (cr->flags & IORESOURCE_MEM) {
-+ dr->start += tc6393->iomem->start;
-+ dr->end += tc6393->iomem->start;
-+ }
-+ }
-+
-+ return device_register (dev);
-+}
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static void tc6393_hw_init (struct tc6393 *tc6393)
-+{
-+ struct tc6393_scr __iomem * scr = tc6393->scr;
-+ struct tc6393_platform_data* tcpd = tc6393->dev->platform_data;
-+
-+ tcpd->enable (tc6393->dev);
-+
-+ iowrite8 (0, &scr->fer);
-+ iowrite16(tcpd->scr_pll2cr, &scr->pll2cr);
-+ iowrite16(tcpd->scr_ccr, &scr->ccr);
-+ iowrite16(tcpd->scr_mcr, &scr->mcr);
-+ iowrite16(tcpd->scr_gper, &scr->gper);
-+ iowrite8 (0, &scr->irr);
-+ iowrite8 (0xbf, &scr->imr);
-+ iowrite16(tcpd->scr_gpo_dsr, scr->gpo_dsr + 0);
-+ iowrite16(tcpd->scr_gpo_dsr >> 16, scr->gpo_dsr + 1);
-+ iowrite16(tcpd->scr_gpo_doecr, scr->gpo_doecr + 0);
-+ iowrite16(tcpd->scr_gpo_doecr >> 16, scr->gpo_doecr + 1);
-+}
-+
-+static int tc6393_probe (struct device *dev)
-+{
-+ struct platform_device* pdev = to_platform_device (dev);
-+ struct tc6393_platform_data* tcpd = dev->platform_data;
-+ struct tc6393* tc6393;
-+ struct resource* iomem;
-+ struct resource* rscr;
-+ int retval;
-+ int i;
-+
-+ iomem = platform_get_resource (pdev, IORESOURCE_MEM, 0);
-+ if (!iomem)
-+ return -EINVAL;
-+
-+ tc6393 = kzalloc (sizeof *tc6393, GFP_KERNEL);
-+ if (!tc6393) {
-+ retval = -ENOMEM;
-+ goto err_kzalloc;
-+ }
-+
-+ dev_set_drvdata (dev, tc6393);
-+ spin_lock_init (&tc6393->lock);
-+ tc6393->dev = dev;
-+ tc6393->iomem = iomem;
-+ tc6393->irq = platform_get_irq (pdev, 0);
-+
-+ rscr = &tc6393->rscr;
-+ rscr->name = TMIO_NAME_CORE;
-+ rscr->start = iomem->start;
-+ rscr->end = iomem->start + 0xff;
-+ rscr->flags = IORESOURCE_MEM;
-+
-+ retval = request_resource (iomem, rscr);
-+ if (retval)
-+ goto err_request_scr;
-+
-+ tc6393->scr = ioremap (rscr->start, rscr->end - rscr->start + 1);
-+ if (!tc6393->scr) {
-+ retval = -ENOMEM;
-+ goto err_ioremap;
-+ }
-+
-+ tc6393_hw_init (tc6393);
-+
-+ printk (KERN_INFO "Toshiba %s revision %d at 0x%08lx, irq %d\n",
-+ TMIO_SOC_NAME, ioread8 (&tc6393->scr->revid),
-+ iomem->start, tc6393->irq);
-+
-+ if (tc6393->irq)
-+ tc6393_attach_irq (tc6393);
-+
-+ for (i = 0; i < tcpd->num_cells; i++)
-+ tc6393_device_register (tc6393, tcpd->cell + i);
-+
-+ return 0;
-+
-+err_ioremap:
-+ release_resource (rscr);
-+err_request_scr:
-+ kfree(tc6393);
-+err_kzalloc:
-+ release_resource (iomem);
-+ return retval;
-+}
-+
-+static int tc6393_dev_remove (struct device *dev, void *data)
-+{
-+ device_unregister (dev);
-+ return 0;
-+}
-+
-+static int tc6393_remove (struct device *dev)
-+{
-+ struct tc6393* tc6393 = dev_get_drvdata (dev);
-+
-+ device_for_each_child (dev, tc6393, tc6393_dev_remove);
-+
-+ if (tc6393->irq)
-+ tc6393_detach_irq (tc6393);
-+
-+ iounmap (tc6393->scr);
-+ release_resource (&tc6393->rscr);
-+ release_resource (tc6393->iomem);
-+ kfree (tc6393);
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+static int tc6393_suspend (struct device *dev, pm_message_t state)
-+{
-+ struct tc6393_platform_data* tcpd = dev->platform_data;
-+ tcpd->disable (dev);
-+ return 0;
-+}
-+
-+static int tc6393_resume (struct device *dev)
-+{
-+ struct tc6393* tc6393 = dev_get_drvdata (dev);
-+ tc6393_hw_init (tc6393);
-+ return 0;
-+}
-+#endif
-+
-+static struct device_driver tc6393_device_driver = {
-+ .name = TMIO_SOC_NAME,
-+ .bus = &platform_bus_type,
-+ .probe = tc6393_probe,
-+ .remove = tc6393_remove,
-+#ifdef CONFIG_PM
-+ .suspend = tc6393_suspend,
-+ .resume = tc6393_resume,
-+#endif
-+};
-+
-+/*--------------------------------------------------------------------------*/
-+
-+static int __init tc6393_init (void)
-+{
-+ int retval = bus_register (&tc6393_bus_type);
-+ if (retval)
-+ return retval;
-+
-+ return driver_register (&tc6393_device_driver);
-+}
-+
-+static void __exit tc6393_exit (void)
-+{
-+ driver_unregister (&tc6393_device_driver);
-+ bus_unregister (&tc6393_bus_type);
-+}
-+
-+module_init (tc6393_init);
-+module_exit (tc6393_exit);
-+
-+MODULE_DESCRIPTION ("TC6393 SoC bus driver");
-+MODULE_AUTHOR ("Chris Humbert, Dirk Opfer");
-+MODULE_LICENSE ("GPL");
-Index: git/arch/arm/common/Kconfig
-===================================================================
---- git.orig/arch/arm/common/Kconfig 2006-10-31 16:08:28.000000000 +0000
-+++ git/arch/arm/common/Kconfig 2006-11-07 22:13:09.000000000 +0000
-@@ -31,3 +31,6 @@ config SHARPSL_PM
-
- config SHARP_SCOOP
- bool
-+
-+config TOSHIBA_TC6393XB
-+ bool
-Index: git/arch/arm/mach-pxa/Kconfig
-===================================================================
---- git.orig/arch/arm/mach-pxa/Kconfig 2006-11-07 22:13:06.000000000 +0000
-+++ git/arch/arm/mach-pxa/Kconfig 2006-11-07 23:30:34.000000000 +0000
-@@ -128,6 +128,7 @@ config MACH_BORZOI
- config MACH_TOSA
- bool "Enable Sharp SL-6000x (Tosa) Support"
- depends PXA_SHARPSL_25x
-+ select TOSHIBA_TC6393XB
-
- config PXA25x
- bool
-Index: git/arch/arm/common/Makefile
-===================================================================
---- git.orig/arch/arm/common/Makefile 2006-10-31 16:08:28.000000000 +0000
-+++ git/arch/arm/common/Makefile 2006-11-07 22:13:09.000000000 +0000
-@@ -17,3 +17,4 @@ obj-$(CONFIG_SHARPSL_PM) += sharpsl_pm.o
- obj-$(CONFIG_SHARP_SCOOP) += scoop.o
- obj-$(CONFIG_ARCH_IXP2000) += uengine.o
- obj-$(CONFIG_ARCH_IXP23XX) += uengine.o
-+obj-$(CONFIG_TOSHIBA_TC6393XB) += tc6393xb.o
-Index: git/include/asm-arm/hardware/tmio.h
-===================================================================
---- git.orig/include/asm-arm/hardware/tmio.h 2006-11-07 22:13:09.000000000 +0000
-+++ git/include/asm-arm/hardware/tmio.h 2006-11-07 22:13:09.000000000 +0000
-@@ -91,6 +91,50 @@ struct tmio_device {
-
- /*--------------------------------------------------------------------------*/
-
-+/*
-+ * TC6393XB SoC
-+ */
-+#ifdef CONFIG_TOSHIBA_TC6393XB
-+#define TMIO_SOC_TC6393XB
-+#define TMIO_SOC_NAME "TC6393XB"
-+#define TMIO_NAME_BUS "tc6393-bus"
-+#define TMIO_NAME_CORE "tc6393-core"
-+#define TMIO_NAME_NAND "tc6393-nand"
-+#define TMIO_NAME_SD "tc6393-sd"
-+#define TMIO_NAME_OHCI "tc6393-ohci"
-+#define TMIO_NAME_SERIAL "tc6393-serial"
-+#define TMIO_NAME_LCD "tc6393-lcd"
-+#define tmio_bus_type tc6393_bus_type
-+
-+#define TC6393_GPIO(x) (1 << (x))
-+
-+extern struct bus_type tc6393_bus_type;
-+
-+struct tc6393_platform_data {
-+ u16 scr_pll2cr; /* PLL2 Control */
-+ u16 scr_ccr; /* Clock Control */
-+ u16 scr_mcr; /* Mode Control */
-+ u16 scr_gper; /* GP Enable */
-+ u32 scr_gpo_doecr; /* GPO Data OE Control */
-+ u32 scr_gpo_dsr; /* GPO Data Set */
-+
-+ /* cells to register as devices */
-+ struct tmio_cell* cell;
-+ unsigned int num_cells;
-+
-+ /* callbacks to enable and disable the TC6393XB's power and clock */
-+ void (*enable) (struct device *dev);
-+ void (*disable) (struct device *dev);
-+};
-+
-+u32 get_tc6393_gpio (struct device *dev);
-+u32 set_tc6393_gpio (struct device *dev, u32 bits);
-+u32 reset_tc6393_gpio (struct device *dev, u32 bits);
-+
-+/*--------------------------------------------------------------------------*/
-+
-+#else
- #error "no TMIO SoC configured"
-+#endif
-
- #endif
-Index: git/include/asm-arm/arch-pxa/irqs.h
-===================================================================
---- git.orig/include/asm-arm/arch-pxa/irqs.h 2006-10-31 16:09:33.000000000 +0000
-+++ git/include/asm-arm/arch-pxa/irqs.h 2006-11-07 22:13:09.000000000 +0000
-@@ -163,17 +163,27 @@
- #define IRQ_LOCOMO_SPI_OVRN (IRQ_BOARD_END + 20)
- #define IRQ_LOCOMO_SPI_TEND (IRQ_BOARD_END + 21)
-
-+#define IRQ_TC6393_START (IRQ_BOARD_END)
-+#define IRQ_TC6393_NAND (IRQ_BOARD_END + 0)
-+#define IRQ_TC6393_SD (IRQ_BOARD_END + 1)
-+#define IRQ_TC6393_OHCI (IRQ_BOARD_END + 2)
-+#define IRQ_TC6393_SERIAL (IRQ_BOARD_END + 3)
-+#define IRQ_TC6393_LCD (IRQ_BOARD_END + 4)
-+
- /*
- * Figure out the MAX IRQ number.
- *
- * If we have an SA1111, the max IRQ is S1_BVD1_STSCHG+1.
- * If we have an LoCoMo, the max IRQ is IRQ_LOCOMO_SPI_TEND+1
-+ * If we have an TC6393XB, the max IRQ is IRQ_TC6393_LCD+1
- * Otherwise, we have the standard IRQs only.
- */
- #ifdef CONFIG_SA1111
- #define NR_IRQS (IRQ_S1_BVD1_STSCHG + 1)
- #elif defined(CONFIG_SHARP_LOCOMO)
- #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1)
-+#elif defined(CONFIG_TOSHIBA_TC6393XB)
-+#define NR_IRQS (IRQ_TC6393_LCD + 1)
- #elif defined(CONFIG_ARCH_LUBBOCK) || \
- defined(CONFIG_MACH_LOGICPD_PXA270) || \
- defined(CONFIG_MACH_MAINSTONE)
diff --git a/packages/linux/linux-rp-2.6.19/tosa-keyboard-r18.patch b/packages/linux/linux-rp-2.6.19/tosa-keyboard-r18.patch
deleted file mode 100644
index 00bac40db5..0000000000
--- a/packages/linux/linux-rp-2.6.19/tosa-keyboard-r18.patch
+++ /dev/null
@@ -1,515 +0,0 @@
- drivers/input/keyboard/Kconfig | 12 -
- drivers/input/keyboard/Makefile | 1
- drivers/input/keyboard/tosakbd.c | 467 +++++++++++++++++++++++++++++++++++++++
- 3 files changed, 479 insertions(+), 1 deletion(-)
-
-Index: git/drivers/input/keyboard/Kconfig
-===================================================================
---- git.orig/drivers/input/keyboard/Kconfig 2006-10-31 16:08:57.000000000 +0000
-+++ git/drivers/input/keyboard/Kconfig 2006-11-07 22:13:10.000000000 +0000
-@@ -148,12 +148,22 @@ config KEYBOARD_SPITZ
- depends on PXA_SHARPSL
- default y
- help
-- Say Y here to enable the keyboard on the Sharp Zaurus SL-C1000,
-+ Say Y here to enable the keyboard on the Sharp Zaurus SL-C1000,
- SL-C3000 and Sl-C3100 series of PDAs.
-
- To compile this driver as a module, choose M here: the
- module will be called spitzkbd.
-
-+config KEYBOARD_TOSA
-+ tristate "Tosa keyboard"
-+ depends on PXA_SHARPSL
-+ default y
-+ help
-+ Say Y here to enable the keyboard on the Sharp Zaurus SL-6000x (Tosa)
-+
-+ To compile this driver as a module, choose M here: the
-+ module will be called tosakbd.
-+
- config KEYBOARD_AMIGA
- tristate "Amiga keyboard"
- depends on AMIGA
-Index: git/drivers/input/keyboard/Makefile
-===================================================================
---- git.orig/drivers/input/keyboard/Makefile 2006-10-31 16:08:57.000000000 +0000
-+++ git/drivers/input/keyboard/Makefile 2006-11-07 22:13:10.000000000 +0000
-@@ -17,4 +17,5 @@ obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkb
- obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o
- obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
- obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
-+obj-$(CONFIG_KEYBOARD_TOSA) += tosakbd.o
-
-Index: git/drivers/input/keyboard/tosakbd.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/drivers/input/keyboard/tosakbd.c 2006-11-07 23:27:19.000000000 +0000
-@@ -0,0 +1,467 @@
-+/*
-+ * Keyboard driver for Sharp Tosa models (SL-6000x)
-+ *
-+ * Copyright (c) 2005 Dirk Opfer
-+ *
-+ * Based on xtkbd.c/locomkbd.c/corgikbd.c
-+ *
-+ * 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/delay.h>
-+#include <linux/platform_device.h>
-+#include <linux/init.h>
-+#include <linux/input.h>
-+#include <linux/interrupt.h>
-+#include <linux/jiffies.h>
-+#include <linux/module.h>
-+#include <linux/slab.h>
-+
-+#include <asm/arch/tosa.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+
-+#define TOSA_KEY_STROBE_NUM (11)
-+#define TOSA_KEY_SENSE_NUM (7)
-+
-+#define KEYMASK_ON (0x1<<0)
-+#define KEYMASK_REC (0x1<<1)
-+#define KEYMASK_SYNC (0x1<<2)
-+
-+#define KB_ROWS 7
-+#define KB_COLS 11
-+#define KB_ROWMASK(r) (1 << (r))
-+#define SCANCODE(r,c) ( ((r)<<4) + (c) + 1 )
-+#define NR_SCANCODES (SCANCODE(KB_ROWS-1,KB_COLS)+1+1)
-+
-+#define SCAN_INTERVAL (HZ/10)
-+#define HP_SCAN_INTERVAL (150) /* ms */
-+#define HP_STABLE_COUNT 2
-+
-+#define TOSA_KEY_CALENDER KEY_F1
-+#define TOSA_KEY_ADDRESS KEY_F2
-+#define TOSA_KEY_FN KEY_F3
-+#define TOSA_KEY_CANCEL KEY_F4
-+#define TOSA_KEY_OFF KEY_SUSPEND
-+#define TOSA_KEY_CENTER KEY_F5
-+#define TOSA_KEY_REC KEY_F6
-+#define TOSA_KEY_LIGHT KEY_F7
-+#define TOSA_KEY_RECORD KEY_F8
-+#define TOSA_KEY_HOME KEY_F9
-+#define TOSA_KEY_MAIL KEY_F10
-+#define TOSA_KEY_OK KEY_F11
-+#define TOSA_KEY_MENU KEY_F12
-+#define TOSA_KEY_SYNC KEY_F13
-+
-+#define GET_ROWS_STATUS(c) ((GPLR2 & TOSA_GPIO_ALL_SENSE_BIT) >> TOSA_GPIO_ALL_SENSE_RSHIFT)
-+#define KB_DISCHARGE_DELAY 10
-+#define KB_ACTIVATE_DELAY 10
-+
-+
-+static unsigned char tosakbd_keycode[NR_SCANCODES] = {
-+ 0, /* 0 */
-+ 0, KEY_W, 0, 0, 0, KEY_K, KEY_BACKSPACE, KEY_P, 0, 0, 0, TOSA_KEY_OFF, 0, 0, 0, 0, /*1 - 16*/
-+ KEY_Q, KEY_E, KEY_T, KEY_Y, 0, KEY_O, KEY_I, KEY_COMMA, 0, 0, 0, TOSA_KEY_RECORD, 0, 0, 0, 0, /*17 - 32*/
-+ KEY_A, KEY_D, KEY_G, KEY_U, 0, KEY_L, KEY_ENTER, KEY_DOT, 0, 0, 0, TOSA_KEY_SYNC, 0, 0, 0, 0, /*33 - 48*/
-+ KEY_Z, KEY_C, KEY_V, KEY_J, TOSA_KEY_ADDRESS, TOSA_KEY_CANCEL, TOSA_KEY_CENTER, TOSA_KEY_OK, KEY_LEFTSHIFT, 0 , 0,0 , 0, 0, 0, 0, /*49 - 64*/
-+ KEY_S, KEY_R, KEY_B, KEY_N, TOSA_KEY_CALENDER, TOSA_KEY_HOME, TOSA_KEY_REC, TOSA_KEY_LIGHT, 0, KEY_RIGHTSHIFT, 0, 0, 0, 0, 0, 0, /*65 - 80*/
-+ KEY_TAB, KEY_SLASH, KEY_H, KEY_M, TOSA_KEY_MENU, 0, KEY_UP, 0, 0, 0, TOSA_KEY_FN, 0, 0, 0, 0, 0, /*81 - 96*/
-+ KEY_X, KEY_F, KEY_SPACE, KEY_APOSTROPHE, TOSA_KEY_MAIL, KEY_LEFT, KEY_DOWN, KEY_RIGHT, 0, 0, 0, 0, 0, /*97 - 109*/
-+};
-+
-+struct tosakbd {
-+ unsigned char keycode[ARRAY_SIZE(tosakbd_keycode)];
-+ struct input_dev *input;
-+
-+ spinlock_t lock;
-+ struct timer_list timer;
-+ struct timer_list hptimer;
-+
-+ int hp_state;
-+ int hp_count;
-+
-+ unsigned int suspended;
-+ unsigned long suspend_jiffies;
-+};
-+
-+/* Helper functions for reading the keyboard matrix
-+ * Note: We should really be using pxa_gpio_mode to alter GPDR but it
-+ * requires a function call per GPIO bit which is excessive
-+ * when we need to access 12 bits at once, multiple times.
-+ * These functions must be called within local_irq_save()/local_irq_restore()
-+ * or similar.
-+ */
-+static inline void tosakbd_discharge_all(void)
-+{
-+ /* STROBE All HiZ */
-+ GPCR1 = TOSA_GPIO_HIGH_STROBE_BIT;
-+ GPDR1 &= ~TOSA_GPIO_HIGH_STROBE_BIT;
-+ GPCR2 = TOSA_GPIO_LOW_STROBE_BIT;
-+ GPDR2 &= ~TOSA_GPIO_LOW_STROBE_BIT;
-+}
-+
-+static inline void tosakbd_activate_all(void)
-+{
-+ /* STROBE ALL -> High */
-+ GPSR1 = TOSA_GPIO_HIGH_STROBE_BIT;
-+ GPDR1 |= TOSA_GPIO_HIGH_STROBE_BIT;
-+ GPSR2 = TOSA_GPIO_LOW_STROBE_BIT;
-+ GPDR2 |= TOSA_GPIO_LOW_STROBE_BIT;
-+
-+ udelay(KB_DISCHARGE_DELAY);
-+
-+ /* STATE CLEAR */
-+ GEDR2 |= TOSA_GPIO_ALL_SENSE_BIT;
-+}
-+
-+static inline void tosakbd_activate_col(int col)
-+{
-+ if (col<=5) {
-+ /* STROBE col -> High, not col -> HiZ */
-+ GPSR1 = TOSA_GPIO_STROBE_BIT(col);
-+ GPDR1 = (GPDR1 & ~TOSA_GPIO_HIGH_STROBE_BIT) | TOSA_GPIO_STROBE_BIT(col);
-+ } else {
-+ /* STROBE col -> High, not col -> HiZ */
-+ GPSR2 = TOSA_GPIO_STROBE_BIT(col);
-+ GPDR2 = (GPDR2 & ~TOSA_GPIO_LOW_STROBE_BIT) | TOSA_GPIO_STROBE_BIT(col);
-+ }
-+}
-+
-+static inline void tosakbd_reset_col(int col)
-+{
-+ if (col<=5) {
-+ /* STROBE col -> Low */
-+ GPCR1 = TOSA_GPIO_STROBE_BIT(col);
-+ /* STROBE col -> out, not col -> HiZ */
-+ GPDR1 = (GPDR1 & ~TOSA_GPIO_HIGH_STROBE_BIT) | TOSA_GPIO_STROBE_BIT(col);
-+ } else {
-+ /* STROBE col -> Low */
-+ GPCR2 = TOSA_GPIO_STROBE_BIT(col);
-+ /* STROBE col -> out, not col -> HiZ */
-+ GPDR2 = (GPDR2 & ~TOSA_GPIO_LOW_STROBE_BIT) | TOSA_GPIO_STROBE_BIT(col);
-+ }
-+}
-+
-+/*
-+ * Read the GPIOs for POWER, RECORD and SYNC
-+ */
-+static int read_port_key_status_raw(void)
-+{
-+ int val=0;
-+
-+ /* Power key */
-+ if ((GPLR0 & GPIO_bit(TOSA_GPIO_ON_KEY))==0)
-+ val |= KEYMASK_ON;
-+ /* Record key */
-+ if ((GPLR0 & GPIO_bit(TOSA_GPIO_RECORD_BTN))==0)
-+ val |= KEYMASK_REC;
-+ /* Sync key */
-+ if ((GPLR0 & GPIO_bit(TOSA_GPIO_SYNC))==0)
-+ val |= KEYMASK_SYNC;
-+ return val;
-+}
-+
-+
-+/*
-+ * The tosa keyboard only generates interrupts when a key is pressed.
-+ * So when a key is pressed, we enable a timer. This timer scans the
-+ * keyboard, and this is how we detect when the key is released.
-+ */
-+
-+/* Scan the hardware keyboard and push any changes up through the input layer */
-+static void tosakbd_scankeyboard(struct tosakbd *tosakbd_data)
-+{
-+ unsigned int row, col, rowd;
-+ unsigned long flags;
-+ unsigned int num_pressed = 0;
-+
-+ if (tosakbd_data->suspended)
-+ return;
-+
-+ spin_lock_irqsave(&tosakbd_data->lock, flags);
-+
-+ for (col = 0; col < KB_COLS; col++) {
-+ /*
-+ * Discharge the output driver capacitatance
-+ * in the keyboard matrix. (Yes it is significant..)
-+ */
-+ tosakbd_discharge_all();
-+ udelay(KB_DISCHARGE_DELAY);
-+
-+ tosakbd_activate_col( col);
-+ udelay(KB_ACTIVATE_DELAY);
-+
-+ rowd = GET_ROWS_STATUS(col);
-+
-+ for (row = 0; row < KB_ROWS; row++) {
-+ unsigned int scancode, pressed;
-+ scancode = SCANCODE(row, col);
-+ pressed = rowd & KB_ROWMASK(row);
-+ input_report_key(tosakbd_data->input, tosakbd_data->keycode[scancode], pressed);
-+ if (pressed)
-+ num_pressed++;
-+ }
-+
-+ tosakbd_reset_col(col);
-+ }
-+
-+ tosakbd_activate_all();
-+
-+ rowd = read_port_key_status_raw();
-+
-+ for (row = 0; row < 3; row++ ) {
-+ unsigned int scancode, pressed;
-+ scancode = SCANCODE(row, KB_COLS);
-+ pressed = rowd & KB_ROWMASK(row);
-+ input_report_key(tosakbd_data->input, tosakbd_data->keycode[scancode], pressed);
-+ if (pressed)
-+ num_pressed++;
-+
-+ if (pressed && (tosakbd_data->keycode[scancode] == TOSA_KEY_OFF)
-+ && time_after(jiffies, tosakbd_data->suspend_jiffies + msecs_to_jiffies(1000))) {
-+ input_event(tosakbd_data->input, EV_PWR, TOSA_KEY_OFF, 1);
-+ tosakbd_data->suspend_jiffies = jiffies;
-+ }
-+ }
-+
-+ input_sync(tosakbd_data->input);
-+
-+ /* if any keys are pressed, enable the timer */
-+ if (num_pressed)
-+ mod_timer(&tosakbd_data->timer, jiffies + SCAN_INTERVAL);
-+
-+ spin_unlock_irqrestore(&tosakbd_data->lock, flags);
-+}
-+
-+/*
-+ * tosa keyboard interrupt handler.
-+ */
-+static irqreturn_t tosakbd_interrupt(int irq, void *dev_id)
-+{
-+ struct tosakbd *tosakbd_data = dev_id;
-+
-+ if (!timer_pending(&tosakbd_data->timer))
-+ {
-+ /** wait chattering delay **/
-+ udelay(20);
-+ tosakbd_scankeyboard(tosakbd_data);
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+/*
-+ * tosa timer checking for released keys
-+ */
-+static void tosakbd_timer_callback(unsigned long data)
-+{
-+ struct tosakbd *tosakbd_data = (struct tosakbd *) data;
-+ tosakbd_scankeyboard(tosakbd_data);
-+}
-+
-+/*
-+ * The headphone generates an interrupt.
-+ * We debounce the switche and pass them to the input system.
-+ */
-+
-+static irqreturn_t tosakbd_hp_isr(int irq, void *dev_id)
-+{
-+ struct tosakbd *tosakbd_data = dev_id;
-+
-+ if (!timer_pending(&tosakbd_data->hptimer))
-+ mod_timer(&tosakbd_data->hptimer, jiffies + msecs_to_jiffies(HP_SCAN_INTERVAL));
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void tosakbd_hp_timer(unsigned long data)
-+{
-+ struct tosakbd *tosakbd_data = (struct tosakbd *) data;
-+ unsigned long state;
-+ unsigned long flags;
-+
-+ state = (GPLR(TOSA_GPIO_EAR_IN) & GPIO_bit(TOSA_GPIO_EAR_IN));
-+ if (state != tosakbd_data->hp_state) {
-+ tosakbd_data->hp_count = 0;
-+ tosakbd_data->hp_state = state;
-+ } else if (tosakbd_data->hp_count < HP_STABLE_COUNT) {
-+ tosakbd_data->hp_count++;
-+ }
-+
-+ if (tosakbd_data->hp_count >= HP_STABLE_COUNT) {
-+ spin_lock_irqsave(&tosakbd_data->lock, flags);
-+
-+ input_report_switch(tosakbd_data->input, SW_HEADPHONE_INSERT, ((GPLR(TOSA_GPIO_EAR_IN) & GPIO_bit(TOSA_GPIO_EAR_IN)) == 0));
-+ input_sync(tosakbd_data->input);
-+
-+ spin_unlock_irqrestore(&tosakbd_data->lock, flags);
-+ } else {
-+ mod_timer(&tosakbd_data->hptimer, jiffies + msecs_to_jiffies(HP_SCAN_INTERVAL));
-+ }
-+}
-+
-+#ifdef CONFIG_PM
-+static int tosakbd_suspend(struct platform_device *dev, pm_message_t state)
-+{
-+ struct tosakbd *tosakbd = platform_get_drvdata(dev);
-+
-+ tosakbd->suspended = 1;
-+
-+ return 0;
-+}
-+
-+static int tosakbd_resume(struct platform_device *dev)
-+{
-+ struct tosakbd *tosakbd = platform_get_drvdata(dev);
-+
-+ /* Upon resume, ignore the suspend key for a short while */
-+ tosakbd->suspend_jiffies = jiffies;
-+ tosakbd->suspended = 0;
-+
-+ return 0;
-+}
-+#else
-+#define tosakbd_suspend NULL
-+#define tosakbd_resume NULL
-+#endif
-+
-+static int __init tosakbd_probe(struct platform_device *pdev) {
-+
-+ int i;
-+ struct tosakbd *tosakbd;
-+ struct input_dev *input_dev;
-+
-+ tosakbd = kzalloc(sizeof(struct tosakbd), GFP_KERNEL);
-+ if (!tosakbd)
-+ return -ENOMEM;
-+
-+ input_dev = input_allocate_device();
-+ if (!input_dev) {
-+ kfree(tosakbd);
-+ return -ENOMEM;
-+ }
-+
-+ platform_set_drvdata(pdev,tosakbd);
-+
-+ spin_lock_init(&tosakbd->lock);
-+
-+ /* Init Keyboard rescan timer */
-+ init_timer(&tosakbd->timer);
-+ tosakbd->timer.function = tosakbd_timer_callback;
-+ tosakbd->timer.data = (unsigned long) tosakbd;
-+
-+ /* Init Headphone Timer */
-+ init_timer(&tosakbd->hptimer);
-+ tosakbd->hptimer.function = tosakbd_hp_timer;
-+ tosakbd->hptimer.data = (unsigned long) tosakbd;
-+
-+ tosakbd->suspend_jiffies = jiffies;
-+
-+ tosakbd->input = input_dev;
-+
-+ input_dev->private = tosakbd;
-+ input_dev->name = "Tosa Keyboard";
-+ input_dev->phys = "tosakbd/input0";
-+ input_dev->cdev.dev = &pdev->dev;
-+
-+ input_dev->id.bustype = BUS_HOST;
-+ input_dev->id.vendor = 0x0001;
-+ input_dev->id.product = 0x0001;
-+ input_dev->id.version = 0x0100;
-+
-+ input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP) | BIT(EV_PWR) | BIT(EV_SW);
-+ input_dev->keycode = tosakbd->keycode;
-+ input_dev->keycodesize = sizeof(unsigned char);
-+ input_dev->keycodemax = ARRAY_SIZE(tosakbd_keycode);
-+
-+ memcpy(tosakbd->keycode, tosakbd_keycode, sizeof(tosakbd->keycode));
-+ for (i = 0; i < ARRAY_SIZE(tosakbd_keycode); i++)
-+ set_bit(tosakbd->keycode[i], input_dev->keybit);
-+ clear_bit(0, input_dev->keybit);
-+ set_bit(SW_HEADPHONE_INSERT, input_dev->swbit);
-+
-+ input_register_device(tosakbd->input);
-+
-+ /* Setup sense interrupts - RisingEdge Detect, sense lines as inputs */
-+ for (i = 0; i < TOSA_KEY_SENSE_NUM; i++) {
-+ pxa_gpio_mode( TOSA_GPIO_KEY_SENSE(i) | GPIO_IN);
-+ if (request_irq(TOSA_IRQ_GPIO_KEY_SENSE(i), tosakbd_interrupt,
-+ SA_INTERRUPT | SA_TRIGGER_RISING, "tosakbd", tosakbd)) {
-+ printk("tosakbd: Can't get IRQ: %d !\n", i);
-+ }
-+ }
-+
-+ /* Set Strobe lines as outputs - set high */
-+ for (i = 0; i < TOSA_KEY_STROBE_NUM; i++) {
-+ pxa_gpio_mode( TOSA_GPIO_KEY_STROBE(i) | GPIO_OUT | GPIO_DFLT_HIGH);
-+ }
-+
-+ // Power&Rec Button
-+ pxa_gpio_mode( TOSA_GPIO_ON_KEY | GPIO_IN);
-+ pxa_gpio_mode( TOSA_GPIO_RECORD_BTN | GPIO_IN);
-+ pxa_gpio_mode( TOSA_GPIO_SYNC | GPIO_IN);
-+ pxa_gpio_mode( TOSA_GPIO_EAR_IN | GPIO_IN);
-+
-+ if (request_irq(TOSA_IRQ_GPIO_ON_KEY, tosakbd_interrupt, SA_INTERRUPT | SA_TRIGGER_FALLING, "On key", tosakbd) ||
-+ request_irq(TOSA_IRQ_GPIO_RECORD_BTN, tosakbd_interrupt, SA_INTERRUPT | SA_TRIGGER_FALLING, "Record key", tosakbd) ||
-+ request_irq(TOSA_IRQ_GPIO_SYNC, tosakbd_interrupt, SA_INTERRUPT | SA_TRIGGER_FALLING, "Sync key", tosakbd) ||
-+ request_irq(TOSA_IRQ_GPIO_EAR_IN, tosakbd_hp_isr, SA_INTERRUPT | SA_TRIGGER_FALLING, "HP in", tosakbd)) {
-+ printk("Could not allocate KEYBD IRQ!\n");
-+ }
-+
-+ printk(KERN_INFO "input: Tosa Keyboard Registered\n");
-+
-+ return 0;
-+}
-+
-+static int tosakbd_remove(struct platform_device *dev) {
-+
-+ int i;
-+ struct tosakbd *tosakbd = platform_get_drvdata(dev);
-+
-+ for (i = 0; i < TOSA_KEY_SENSE_NUM; i++)
-+ free_irq(TOSA_IRQ_GPIO_KEY_SENSE(i),tosakbd);
-+
-+ free_irq(TOSA_IRQ_GPIO_ON_KEY,tosakbd);
-+ free_irq(TOSA_IRQ_GPIO_RECORD_BTN,tosakbd);
-+ free_irq(TOSA_IRQ_GPIO_SYNC,tosakbd);
-+
-+ del_timer_sync(&tosakbd->timer);
-+
-+ input_unregister_device(tosakbd->input);
-+
-+ kfree(tosakbd);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver tosakbd_driver = {
-+ .probe = tosakbd_probe,
-+ .remove = tosakbd_remove,
-+ .suspend = tosakbd_suspend,
-+ .resume = tosakbd_resume,
-+ .driver = {
-+ .name = "tosa-keyboard",
-+ },
-+};
-+
-+static int __devinit tosakbd_init(void)
-+{
-+ return platform_driver_register(&tosakbd_driver);
-+}
-+
-+static void __exit tosakbd_exit(void)
-+{
-+ platform_driver_unregister(&tosakbd_driver);
-+}
-+
-+module_init(tosakbd_init);
-+module_exit(tosakbd_exit);
-+
-+MODULE_AUTHOR("Dirk Opfer <Dirk@Opfer-Online.de>");
-+MODULE_DESCRIPTION("Tosa Keyboard Driver");
-+MODULE_LICENSE("GPLv2");
diff --git a/packages/linux/linux-rp-2.6.19/tosa-lcdnoise-r1.patch b/packages/linux/linux-rp-2.6.19/tosa-lcdnoise-r1.patch
deleted file mode 100644
index 624098bc64..0000000000
--- a/packages/linux/linux-rp-2.6.19/tosa-lcdnoise-r1.patch
+++ /dev/null
@@ -1,157 +0,0 @@
-Index: linux-2.6.18/arch/arm/mach-pxa/tosa.c
-===================================================================
---- linux-2.6.18.orig/arch/arm/mach-pxa/tosa.c 2006-09-20 17:14:14.000000000 +0200
-+++ linux-2.6.18/arch/arm/mach-pxa/tosa.c 2006-09-20 17:14:43.000000000 +0200
-@@ -2,6 +2,7 @@
- * Support for Sharp SL-C6000x PDAs
- * Model: (Tosa)
- *
-+ * Copyright (c) 2006 Wolfson Microelectronics PLC.
- * Copyright (c) 2005 Dirk Opfer
- *
- * Based on code written by Sharp/Lineo for 2.4 kernels
-@@ -47,6 +48,8 @@
- #include <asm/hardware/tmio.h>
- #include <asm/mach/sharpsl_param.h>
-
-+#include <linux/wm97xx.h>
-+
- #include "generic.h"
-
- /*
-@@ -429,6 +432,16 @@
- },
- };
-
-+
-+/*
-+ * Tosa Touchscreen device
-+ */
-+
-+static struct wm97xx_machinfo tosa_ts_machinfo = {
-+ .get_hsync_time = tosa_get_hsync_time,
-+ .wait_hsync = tosa_wait_hsync,
-+};
-+
- /*
- * Tosa Blueooth
- */
-@@ -458,6 +471,7 @@
- GPSR(TOSA_GPIO_ON_RESET) = GPIO_bit(TOSA_GPIO_ON_RESET);
-
- mdelay(1000);
-+ wm97xx_unset_machinfo();
- arm_machine_restart('h');
- }
-
-@@ -503,6 +517,8 @@
- platform_scoop_config = &tosa_pcmcia_config;
-
- platform_add_devices(devices, ARRAY_SIZE(devices));
-+
-+ wm97xx_set_machinfo(&tosa_ts_machinfo);
- }
-
- static void __init fixup_tosa(struct machine_desc *desc,
-Index: linux-2.6.18/arch/arm/mach-pxa/tosa_lcd.c
-===================================================================
---- linux-2.6.18.orig/arch/arm/mach-pxa/tosa_lcd.c 2006-09-20 17:14:14.000000000 +0200
-+++ linux-2.6.18/arch/arm/mach-pxa/tosa_lcd.c 2006-09-20 17:14:15.000000000 +0200
-@@ -1,6 +1,7 @@
- /*
- * LCD / Backlight control code for Sharp SL-6000x (tosa)
- *
-+ * Copyright (c) 2006 Wolfson Microelectronics PLC.
- * Copyright (c) 2005 Dirk Opfer
- *
- * This program is free software; you can redistribute it and/or modify
-@@ -59,6 +60,8 @@
- static struct ssp_dev tosa_nssp_dev;
- static struct ssp_state tosa_nssp_state;
- static spinlock_t tosa_nssp_lock;
-+static int blanked;
-+static unsigned long hsync_time;
-
- static unsigned short normal_i2c[] = {
- DAC_BASE,
-@@ -130,6 +133,17 @@
- pxa_nssp_output(TG_GPOSR,0x02); /* GPOS0=powercontrol, GPOS1=GPIO, GPOS2=TCTL */
- }
-
-+static unsigned long calc_hsync_time(const struct fb_videomode *mode) {
-+ /* The 25 and 44 'magic numbers' are from Sharp's 2.4 patches */
-+ if (mode->yres == 640) {
-+ return 25;
-+ }
-+ if (mode->yres == 320) {
-+ return 44;
-+ }
-+ return 0;
-+}
-+
- static void tosa_lcd_tg_on(struct device *dev, const struct fb_videomode *mode)
- {
- const int value = TG_REG0_COLOR | TG_REG0_UD | TG_REG0_LR;
-@@ -154,6 +168,8 @@
- /* set common voltage */
- i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH1, comadj);
-
-+ blanked = 0;
-+ hsync_time = calc_hsync_time(mode);
- }
-
- static void tosa_lcd_tg_off(struct device *dev)
-@@ -172,6 +188,8 @@
-
- /* L3V Off */
- reset_scoop_gpio( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC3693_L3V_ON);
-+
-+ blanked = 1;
- }
-
- static int tosa_detect_client(struct i2c_adapter* adapter, int address, int kind) {
-@@ -238,6 +256,23 @@
- return 0;
- }
-
-+unsigned long tosa_get_hsync_time(void)
-+{
-+/* This method should eventually contain the correct algorithm for calculating
-+ the hsync_time */
-+ if (blanked)
-+ return 0;
-+ else
-+ return hsync_time;
-+}
-+
-+void tosa_wait_hsync(void)
-+{
-+ /* Waits for a rising edge on the VGA line */
-+ while((GPLR(TOSA_GPIO_VGA_LINE) & GPIO_bit(TOSA_GPIO_VGA_LINE)) == 0);
-+ while((GPLR(TOSA_GPIO_VGA_LINE) & GPIO_bit(TOSA_GPIO_VGA_LINE)) != 0);
-+}
-+
- static struct i2c_driver tosa_driver={
- .id = TOSA_LCD_I2C_DEVICEID,
- .attach_adapter = tosa_attach_adapter,
-Index: linux-2.6.18/include/asm-arm/arch-pxa/tosa.h
-===================================================================
---- linux-2.6.18.orig/include/asm-arm/arch-pxa/tosa.h 2006-09-20 17:14:13.000000000 +0200
-+++ linux-2.6.18/include/asm-arm/arch-pxa/tosa.h 2006-09-20 17:14:15.000000000 +0200
-@@ -1,6 +1,7 @@
- /*
- * Hardware specific definitions for Sharp SL-C6000x series of PDAs
- *
-+ * Copyright (c) 2006 Wolfson Microelectronics PLC.
- * Copyright (c) 2005 Dirk Opfer
- *
- * Based on Sharp's 2.4 kernel patches
-@@ -187,4 +188,8 @@
- extern struct platform_device tosascoop_jc_device;
- extern struct platform_device tosascoop_device;
- extern struct platform_device tc6393_device;
-+
-+unsigned long tosa_get_hsync_time(void);
-+void tosa_wait_hsync(void);
-+
- #endif /* _ASM_ARCH_TOSA_H_ */
diff --git a/packages/linux/linux-rp-2.6.19/tosa-tmio-lcd-r10.patch b/packages/linux/linux-rp-2.6.19/tosa-tmio-lcd-r10.patch
deleted file mode 100644
index aef3a047c1..0000000000
--- a/packages/linux/linux-rp-2.6.19/tosa-tmio-lcd-r10.patch
+++ /dev/null
@@ -1,472 +0,0 @@
- arch/arm/mach-pxa/Kconfig | 5
- arch/arm/mach-pxa/Makefile | 2
- arch/arm/mach-pxa/tosa.c | 49 +++++-
- arch/arm/mach-pxa/tosa_lcd.c | 344 +++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 396 insertions(+), 4 deletions(-)
-
-Index: git/arch/arm/mach-pxa/Makefile
-===================================================================
---- git.orig/arch/arm/mach-pxa/Makefile 2006-11-07 22:13:10.000000000 +0000
-+++ git/arch/arm/mach-pxa/Makefile 2006-11-07 23:29:38.000000000 +0000
-@@ -17,7 +17,7 @@ obj-$(CONFIG_PXA_SHARP_C7xx) += corgi.o
- obj-$(CONFIG_PXA_SHARP_Cxx00) += spitz.o corgi_ssp.o corgi_lcd.o sharpsl_pm.o spitz_pm.o
- obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
- obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o sharpsl_pm.o poodle_pm.o
--obj-$(CONFIG_MACH_TOSA) += tosa.o sharpsl_pm.o tosa_pm.o
-+obj-$(CONFIG_MACH_TOSA) += tosa.o sharpsl_pm.o tosa_pm.o tosa_lcd.o
- obj-$(CONFIG_MACH_HX2750) += hx2750.o hx2750_test.o
-
- # Support for blinky lights
-Index: git/arch/arm/mach-pxa/tosa_lcd.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/arch/arm/mach-pxa/tosa_lcd.c 2006-11-07 23:29:25.000000000 +0000
-@@ -0,0 +1,344 @@
-+/*
-+ * LCD / Backlight control code for Sharp SL-6000x (tosa)
-+ *
-+ * Copyright (c) 2005 Dirk Opfer
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/delay.h>
-+#include <linux/platform_device.h>
-+#include <linux/i2c.h>
-+#include <linux/fb.h>
-+
-+#include <asm/mach/sharpsl_param.h>
-+#include <asm/hardware.h>
-+#include <asm/hardware/scoop.h>
-+#include <asm/hardware/tmio.h>
-+#include <asm/arch/ssp.h>
-+#include <asm/arch/sharpsl.h>
-+#include <asm/arch/tosa.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+#define DAC_BASE 0x4e
-+#define DAC_CH1 0
-+#define DAC_CH2 1
-+
-+#define TG_REG0_VQV 0x0001
-+#define TG_REG0_COLOR 0x0002
-+#define TG_REG0_UD 0x0004
-+#define TG_REG0_LR 0x0008
-+#define COMADJ_DEFAULT 97
-+#define TOSA_LCD_I2C_DEVICEID 0x4711 // Fixme: new value
-+
-+static void tosa_lcd_tg_init(struct device *dev);
-+static void tosa_lcd_tg_on(struct device *dev, const struct fb_videomode *mode);
-+static void tosa_lcd_tg_off(struct device *dev);
-+static void tosa_set_backlight(int intensity);
-+
-+const static struct tmio_lcd_ops tosa_tc6393_lcd_ops = {
-+ .init = tosa_lcd_tg_init,
-+ .tg_on = tosa_lcd_tg_on,
-+ .tg_off = tosa_lcd_tg_off,
-+};
-+
-+static struct platform_device *tosabl_device;
-+static struct i2c_driver tosa_driver;
-+static struct i2c_client* tosa_i2c_dac;
-+static int initialised;
-+static int comadj;
-+static int bl_intensity;
-+static struct ssp_dev tosa_nssp_dev;
-+static struct ssp_state tosa_nssp_state;
-+static spinlock_t tosa_nssp_lock;
-+
-+static unsigned short normal_i2c[] = {
-+ DAC_BASE,
-+ I2C_CLIENT_END
-+};
-+I2C_CLIENT_INSMOD;
-+
-+static struct corgibl_machinfo tosa_bl_machinfo = {
-+ .max_intensity = 255,
-+ .default_intensity = 68,
-+ .limit_mask = 0x0b,
-+ .set_bl_intensity = tosa_set_backlight,
-+};
-+
-+int tosa_bl_intensity(void)
-+{
-+ return bl_intensity;
-+}
-+
-+static void pxa_nssp_output(unsigned char reg, unsigned char data)
-+{
-+ unsigned long flag, dummy;
-+ u32 dat = ( ((reg << 5) & 0xe0) | (data & 0x1f) );
-+ spin_lock_irqsave(&tosa_nssp_lock, flag);
-+
-+ ssp_config(&tosa_nssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), 0, 0, SSCR0_SerClkDiv(128));
-+ ssp_enable(&tosa_nssp_dev);
-+
-+ ssp_write_word(&tosa_nssp_dev,dat);
-+
-+ /* Read null data back from device to prevent SSP overflow */
-+ ssp_read_word(&tosa_nssp_dev, &dummy);
-+ ssp_disable(&tosa_nssp_dev);
-+ spin_unlock_irqrestore(&tosa_nssp_lock, flag);
-+
-+}
-+
-+static void tosa_set_backlight(int intensity)
-+{
-+ if (!tosa_i2c_dac)
-+ return;
-+
-+ bl_intensity = intensity;
-+ /* SetBacklightDuty */
-+ i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH2, (unsigned char)intensity);
-+
-+ /* SetBacklightVR */
-+ if (intensity)
-+ set_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_BL_C20MA);
-+ else
-+ reset_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_BL_C20MA);
-+
-+ /* bl_enable GP04=1 otherwise GP04=0*/
-+ pxa_nssp_output(TG_GPODR2, intensity ? 0x01 : 0x00);
-+}
-+
-+static void tosa_lcd_tg_init(struct device *dev)
-+{
-+ /* L3V On */
-+ set_scoop_gpio( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC3693_L3V_ON);
-+ mdelay(60);
-+
-+ /* TG On */
-+ reset_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_TG_ON);
-+ mdelay(60);
-+
-+ pxa_nssp_output(TG_TPOSCTL,0x00); /* delayed 0clk TCTL signal for VGA */
-+ pxa_nssp_output(TG_GPOSR,0x02); /* GPOS0=powercontrol, GPOS1=GPIO, GPOS2=TCTL */
-+}
-+
-+static void tosa_lcd_tg_on(struct device *dev, const struct fb_videomode *mode)
-+{
-+ const int value = TG_REG0_COLOR | TG_REG0_UD | TG_REG0_LR;
-+ pxa_nssp_output(TG_PNLCTL, value | (mode->yres == 320 ? 0 : TG_REG0_VQV));
-+
-+ /* TG LCD pannel power up */
-+ pxa_nssp_output(TG_PINICTL,0x4);
-+ mdelay(50);
-+
-+ /* TG LCD GVSS */
-+ pxa_nssp_output(TG_PINICTL,0x0);
-+
-+ if (!initialised)
-+ {
-+ /* after the pannel is powered up the first time, we can access the i2c bus */
-+ /* so probe for the DAC */
-+ i2c_add_driver(&tosa_driver);
-+ initialised = 1;
-+ mdelay(50);
-+ }
-+ if (tosa_i2c_dac)
-+ /* set common voltage */
-+ i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH1, comadj);
-+
-+}
-+
-+static void tosa_lcd_tg_off(struct device *dev)
-+{
-+ /* TG LCD VHSA off */
-+ pxa_nssp_output(TG_PINICTL,0x4);
-+ mdelay(50);
-+
-+ /* TG LCD signal off */
-+ pxa_nssp_output(TG_PINICTL,0x6);
-+ mdelay(50);
-+
-+ /* TG Off */
-+ set_tc6393_gpio(&tc6393_device.dev, TOSA_TC6393_TG_ON);
-+ mdelay(100);
-+
-+ /* L3V Off */
-+ reset_scoop_gpio( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC3693_L3V_ON);
-+}
-+
-+static int tosa_detect_client(struct i2c_adapter* adapter, int address, int kind) {
-+ int err = 0;
-+
-+ printk("Tosa-LCD: DAC detected address:0x%2.2x\n",address);
-+ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA ))
-+ goto ERROR0;
-+
-+ if (!(tosa_i2c_dac = (struct i2c_client*)kzalloc(sizeof(*tosa_i2c_dac), GFP_KERNEL))) {
-+ err = -ENOMEM;
-+ goto ERROR0;
-+ }
-+
-+ //i2c_set_clientdata(tosa_i2c_dac, data);
-+ tosa_i2c_dac->addr = address;
-+ tosa_i2c_dac->adapter = adapter;
-+ tosa_i2c_dac->driver = &tosa_driver;
-+ tosa_i2c_dac->dev.parent = &tc6393_device.dev;
-+ strcpy(tosa_i2c_dac->name, "tosa lcd");
-+ if ((err = i2c_attach_client(tosa_i2c_dac)))
-+ goto ERROR3;
-+
-+ /* Now i2c is ready, allocate the backlight device*/
-+ tosabl_device = platform_device_alloc("corgi-bl", -1);
-+ if (!tosabl_device) {
-+ err = -ENOMEM;
-+ goto ERROR4;
-+ }
-+
-+ /* set parent device */
-+ tosabl_device->dev.parent = &tosa_i2c_dac->dev;
-+ tosabl_device->dev.platform_data = &tosa_bl_machinfo;
-+
-+ err = platform_device_add(tosabl_device);
-+
-+ if (err)
-+ platform_device_put(tosabl_device);
-+
-+ /* set common voltage */
-+ i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH1, comadj);
-+
-+ return 0;
-+ERROR4:
-+ i2c_detach_client(tosa_i2c_dac);
-+ERROR3:
-+ kfree(tosa_i2c_dac);
-+ERROR0:
-+ return err;
-+}
-+
-+static int tosa_attach_adapter(struct i2c_adapter* adapter) {
-+ return i2c_probe(adapter, &addr_data, &tosa_detect_client);
-+}
-+
-+static int tosa_detach_client(struct i2c_client* client) {
-+ int err;
-+
-+ if ((err = i2c_detach_client(client))) {
-+ printk(KERN_ERR "tosa: Cannot deregister client\n");
-+ return err;
-+ }
-+ kfree(client);
-+ return 0;
-+}
-+
-+static struct i2c_driver tosa_driver={
-+ .id = TOSA_LCD_I2C_DEVICEID,
-+ .attach_adapter = tosa_attach_adapter,
-+ .detach_client = tosa_detach_client,
-+};
-+
-+static int __init tosa_lcd_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ spin_lock_init(&tosa_nssp_lock);
-+
-+ if (!pdev->dev.platform_data)
-+ return -EINVAL;
-+
-+ /* Set Common Voltage */
-+ comadj = sharpsl_param.comadj == -1 ? COMADJ_DEFAULT : sharpsl_param.comadj;
-+
-+ ret=ssp_init(&tosa_nssp_dev,2,0);
-+
-+ /* initialize SSP */
-+ pxa_gpio_mode(GPIO83_NSSP_TX);
-+ pxa_gpio_mode(GPIO81_NSSP_CLK_OUT);
-+ pxa_gpio_mode(GPIO82_NSSP_FRM_OUT);
-+
-+ if (ret)
-+ printk(KERN_ERR "Unable to register NSSP handler!\n");
-+ else {
-+ struct tmio_lcd_ops* *tmio_ops = pdev->dev.platform_data;
-+ ssp_disable(&tosa_nssp_dev);
-+ initialised = 0;
-+
-+ /* Set the lcd functions */
-+ *tmio_ops = (struct tmio_lcd_ops*) &tosa_tc6393_lcd_ops;
-+ }
-+
-+ return ret;
-+}
-+
-+static int tosa_lcd_remove(struct platform_device *pdev)
-+{
-+ /* delete the lcd functions */
-+ struct tmio_lcd_ops* *tmio_ops = pdev->dev.platform_data;
-+ *tmio_ops = NULL;
-+
-+ ssp_exit(&tosa_nssp_dev);
-+
-+ if (tosa_i2c_dac) {
-+ i2c_detach_client(tosa_i2c_dac);
-+ kfree(tosa_i2c_dac);
-+ }
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+
-+static int tosa_lcd_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ ssp_flush(&tosa_nssp_dev);
-+ ssp_save_state(&tosa_nssp_dev,&tosa_nssp_state);
-+ return 0;
-+}
-+
-+static int tosa_lcd_resume(struct platform_device *pdev)
-+{
-+ printk("tosa_lcd_resume\n");
-+ ssp_restore_state(&tosa_nssp_dev,&tosa_nssp_state);
-+ ssp_enable(&tosa_nssp_dev);
-+ printk("tosa_lcd_resume ok\n");
-+ return 0;
-+}
-+#else
-+
-+#define tosa_lcd_suspend NULL
-+#define tosa_lcd_resume NULL
-+
-+#endif
-+
-+
-+static struct platform_driver tosalcd_driver = {
-+ .probe = tosa_lcd_probe,
-+ .remove = tosa_lcd_remove,
-+ .suspend = tosa_lcd_suspend,
-+ .resume = tosa_lcd_resume,
-+ .driver = {
-+ .name = "tosa-lcd",
-+ },
-+};
-+
-+static int __init tosa_lcd_init(void)
-+{
-+ return platform_driver_register(&tosalcd_driver);
-+}
-+
-+static void __exit tosa_lcd_cleanup (void)
-+{
-+ platform_driver_unregister (&tosalcd_driver);
-+}
-+
-+device_initcall(tosa_lcd_init);
-+module_exit (tosa_lcd_cleanup);
-+
-+MODULE_DESCRIPTION ("Tosa LCD device");
-+MODULE_AUTHOR ("Dirk Opfer");
-+MODULE_LICENSE ("GPL v2");
-Index: git/arch/arm/mach-pxa/tosa.c
-===================================================================
---- git.orig/arch/arm/mach-pxa/tosa.c 2006-11-07 22:13:10.000000000 +0000
-+++ git/arch/arm/mach-pxa/tosa.c 2006-11-07 23:29:38.000000000 +0000
-@@ -24,6 +24,7 @@
- #include <linux/mtd/partitions.h>
- #include <linux/pm.h>
- #include <linux/delay.h>
-+#include <linux/fb.h>
-
- #include <asm/setup.h>
- #include <asm/memory.h>
-@@ -48,7 +49,6 @@
-
- #include "generic.h"
-
--
- /*
- * SCOOP Device
- */
-@@ -345,7 +345,38 @@ static struct tmio_nand_platform_data to
- .badblock_pattern = &tosa_tc6393_nand_bbt,
- };
-
--extern struct tmio_lcd_platform_data tosa_tc6393_lcd_platform_data;
-+static struct fb_videomode tosa_tc6393_lcd_mode[] = {
-+ {
-+ .xres = 480,
-+ .yres = 640,
-+ .pixclock = 0x002cdf00,/* PLL divisor */
-+ .left_margin = 0x004c,
-+ .right_margin = 0x005b,
-+ .upper_margin = 0x0001,
-+ .lower_margin = 0x000d,
-+ .hsync_len = 0x0002,
-+ .vsync_len = 0x0001,
-+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+ },{
-+ .xres = 240,
-+ .yres = 320,
-+ .pixclock = 0x00e7f203,/* PLL divisor */
-+ .left_margin = 0x0024,
-+ .right_margin = 0x002f,
-+ .upper_margin = 0x0001,
-+ .lower_margin = 0x000d,
-+ .hsync_len = 0x0002,
-+ .vsync_len = 0x0001,
-+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+}};
-+
-+struct tmio_lcd_platform_data tosa_tc6393_lcd_platform_data = {
-+ .ops = NULL,
-+ .modelist = tosa_tc6393_lcd_mode,
-+ .num_modes = ARRAY_SIZE(tosa_tc6393_lcd_mode),
-+};
-
- static struct tmio_cell tosa_tc6393_cells[] = {
- {
-@@ -384,6 +415,19 @@ struct platform_device tc6393_device = {
- .num_resources = ARRAY_SIZE(tc6393_resources),
- .resource = tc6393_resources,
- };
-+EXPORT_SYMBOL (tc6393_device);
-+
-+/*
-+ * Tosa LCD / Backlight stuff
-+ */
-+static struct platform_device tosalcd_device = {
-+ .name = "tosa-lcd",
-+ .id = -1,
-+ .dev = {
-+ .parent = &tc6393_device.dev,
-+ .platform_data = &tosa_tc6393_lcd_platform_data.ops,
-+ },
-+};
-
- static struct platform_device *devices[] __initdata = {
- &tosascoop_device,
-@@ -391,6 +435,7 @@ static struct platform_device *devices[]
- &tosakbd_device,
- &tosaled_device,
- &tc6393_device,
-+ &tosalcd_device,
- };
-
- static void tosa_poweroff(void)
-Index: git/arch/arm/mach-pxa/Kconfig
-===================================================================
---- git.orig/arch/arm/mach-pxa/Kconfig 2006-11-07 22:13:10.000000000 +0000
-+++ git/arch/arm/mach-pxa/Kconfig 2006-11-07 22:13:10.000000000 +0000
-@@ -129,7 +129,10 @@ config MACH_TOSA
- bool "Enable Sharp SL-6000x (Tosa) Support"
- depends PXA_SHARPSL_25x
- select TOSHIBA_TC6393XB
-- select SHARPSL_PM
-+ select I2C
-+ select I2C_PXA
-+ select SHARPSL_PM
-+ select PXA_SSP
-
- config PXA25x
- bool
diff --git a/packages/linux/linux-rp-2.6.19/wm9712-reset-loop-r2.patch b/packages/linux/linux-rp-2.6.19/wm9712-reset-loop-r2.patch
deleted file mode 100644
index 78e81ea83a..0000000000
--- a/packages/linux/linux-rp-2.6.19/wm9712-reset-loop-r2.patch
+++ /dev/null
@@ -1,44 +0,0 @@
- sound/soc/codecs/wm9712.c | 28 ++++++++++++++++++----------
- 1 file changed, 18 insertions(+), 10 deletions(-)
-
-Index: git/sound/soc/codecs/wm9712.c
-===================================================================
---- git.orig/sound/soc/codecs/wm9712.c 2006-11-07 22:10:01.000000000 +0000
-+++ git/sound/soc/codecs/wm9712.c 2006-11-07 22:11:50.000000000 +0000
-@@ -618,18 +618,26 @@ static int wm9712_dapm_event(struct snd_
-
- static int wm9712_reset(struct snd_soc_codec *codec, int try_warm)
- {
-- if (try_warm && soc_ac97_ops.warm_reset) {
-- soc_ac97_ops.warm_reset(codec->ac97);
-- if (!(ac97_read(codec, 0) & 0x8000))
-- return 1;
-- }
-+ int retry = 3;
-
-- soc_ac97_ops.reset(codec->ac97);
-- if (ac97_read(codec, 0) & 0x8000)
-- goto err;
-- return 0;
-+ while (retry--)
-+ {
-+ if(try_warm && soc_ac97_ops.warm_reset) {
-+ soc_ac97_ops.warm_reset(codec->ac97);
-+ if(ac97_read(codec, 0) & 0x8000)
-+ continue;
-+ else
-+ return 1;
-+ }
-+
-+ soc_ac97_ops.reset(codec->ac97);
-+ if(ac97_read(codec, 0) & 0x8000)
-+ continue;
-+ else
-+ return 0;
-+
-+ }
-
--err:
- printk(KERN_ERR "WM9712 AC97 reset failed\n");
- return -EIO;
- }
diff --git a/packages/linux/linux-rp-2.6.19/wm9712-suspend-cold-res-r2.patch b/packages/linux/linux-rp-2.6.19/wm9712-suspend-cold-res-r2.patch
deleted file mode 100644
index 5179b47cc4..0000000000
--- a/packages/linux/linux-rp-2.6.19/wm9712-suspend-cold-res-r2.patch
+++ /dev/null
@@ -1,16 +0,0 @@
- sound/soc/codecs/wm9712.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: git/sound/soc/codecs/wm9712.c
-===================================================================
---- git.orig/sound/soc/codecs/wm9712.c 2006-11-07 21:57:34.000000000 +0000
-+++ git/sound/soc/codecs/wm9712.c 2006-11-07 21:59:30.000000000 +0000
-@@ -651,7 +651,7 @@ static int wm9712_soc_resume(struct plat
- int i, ret;
- u16 *cache = codec->reg_cache;
-
-- ret = wm9712_reset(codec, 1);
-+ ret = wm9712_reset(codec, 0);
- if (ret < 0){
- printk(KERN_ERR "could not reset AC97 codec\n");
- return ret;
diff --git a/packages/linux/linux-rp-2.6.19/wm97xx-lcdnoise-r0.patch b/packages/linux/linux-rp-2.6.19/wm97xx-lcdnoise-r0.patch
deleted file mode 100644
index 191de3af22..0000000000
--- a/packages/linux/linux-rp-2.6.19/wm97xx-lcdnoise-r0.patch
+++ /dev/null
@@ -1,208 +0,0 @@
-Index: linux-tosa/drivers/input/touchscreen/wm9712.c
-===================================================================
---- linux-tosa.orig/drivers/input/touchscreen/wm9712.c 2006-08-29 16:52:36.008543280 +0100
-+++ linux-tosa/drivers/input/touchscreen/wm9712.c 2006-08-29 16:52:50.923275896 +0100
-@@ -1,7 +1,7 @@
- /*
- * wm9712.c -- Codec driver for Wolfson WM9712 AC97 Codecs.
- *
-- * Copyright 2003, 2004, 2005 Wolfson Microelectronics PLC.
-+ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC.
- * Author: Liam Girdwood
- * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
- * Parts Copyright : Ian Molton <spyro@f2s.com>
-@@ -13,6 +13,12 @@
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
-+ * Revision history
-+ * 4th Jul 2005 Initial version.
-+ * 29th Aug 2006 Mike Arthur <mike@mikearthur.co.uk>
-+ * Added fixes for Sharp SL-6000 (Tosa) LCD noise causing
-+ * touchscreen interference.
-+ *
- */
-
- #include <linux/module.h>
-@@ -28,6 +34,10 @@
- #define WM9705_VERSION "0.60"
- #define DEFAULT_PRESSURE 0xb0c0
-
-+#define CCNT(a) asm volatile ("mrc p14, 0, %0, C1, C1, 0" : "=r"(a))
-+#define CCNT_ON() asm("mcr p14, 0, %0, C0, C0, 0" : : "r"(1))
-+#define CCNT_OFF() asm("mcr p14, 0, %0, C0, C0, 0" : : "r"(1))
-+
- /*
- * Debug
- */
-@@ -243,6 +253,36 @@
- return wm->dig[2] & WM9712_PDEN;
- }
-
-+
-+#ifdef CONFIG_MACH_TOSA
-+/* On the Sharp SL-6000 (Tosa), due to a noisy LCD, we need to perform a wait
-+ * before sampling the Y axis of the touchscreen */
-+static inline void wm9712_lcd_sync_on(struct wm97xx* wm, int adcsel) {
-+ unsigned long timer1 = 0, timer2 = 0, wait_time = 0;
-+ if (adcsel == WM97XX_ADCSEL_Y) {
-+ wait_time = wm97xx_calc_lcd_waittime(wm);
-+
-+ CCNT_ON();
-+
-+ if (wait_time) {
-+ /* wait for LCD rising edge */
-+ wm_machinfo->wait_hsync();
-+ /* get clock */
-+ CCNT(timer1);
-+ CCNT(timer2);
-+
-+ while ((timer2 - timer1) < wait_time) {
-+ CCNT(timer2);
-+ }
-+ }
-+ }
-+}
-+
-+static inline void wm9712_lcd_sync_off(void) {
-+ CCNT_OFF();
-+}
-+#endif
-+
- /*
- * Read a sample from the WM9712 adc in polling mode.
- */
-@@ -260,6 +300,9 @@
- /* set up digitiser */
- if (adcsel & 0x8000)
- adcsel = ((adcsel & 0x7fff) + 3) << 12;
-+ #ifdef CONFIG_MACH_TOSA
-+ wm9712_lcd_sync_on(wm, adcsel);
-+ #endif
- wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, adcsel | WM97XX_POLL | WM97XX_DELAY(delay));
-
- /* wait 3 AC97 time slots + delay for conversion */
-@@ -282,6 +325,10 @@
-
- *sample = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD);
-
-+ #ifdef CONFIG_MACH_TOSA
-+ wm9712_lcd_sync_off();
-+ #endif
-+
- /* check we have correct sample */
- if ((*sample & WM97XX_ADCSEL_MASK) != adcsel) {
- dbg ("adc wrong sample, read %x got %x", adcsel,
-@@ -303,11 +350,12 @@
- static int wm9712_poll_touch(struct wm97xx* wm, struct wm97xx_data *data)
- {
- int rc;
--
- if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_X, &data->x)) != RC_VALID)
- return rc;
-+
- if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_Y, &data->y)) != RC_VALID)
- return rc;
-+
- if (pil && !five_wire) {
- if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_PRES, &data->p)) != RC_VALID)
- return rc;
-Index: linux-tosa/drivers/input/touchscreen/wm97xx-core.c
-===================================================================
---- linux-tosa.orig/drivers/input/touchscreen/wm97xx-core.c 2006-08-29 16:52:36.008543280 +0100
-+++ linux-tosa/drivers/input/touchscreen/wm97xx-core.c 2006-08-29 16:52:50.924275744 +0100
-@@ -2,7 +2,7 @@
- * wm97xx-core.c -- Touch screen driver core for Wolfson WM9705, WM9712
- * and WM9713 AC97 Codecs.
- *
-- * Copyright 2003, 2004, 2005 Wolfson Microelectronics PLC.
-+ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC.
- * Author: Liam Girdwood
- * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
- * Parts Copyright : Ian Molton <spyro@f2s.com>
-@@ -67,6 +67,9 @@
- * GPIOs) and 2.6 power management.
- * 29th Nov 2004 Added WM9713 support.
- * 4th Jul 2005 Moved codec specific code out to seperate files.
-+ * 29th Aug 2006 Mike Arthur <mike@mikearthur.co.uk>
-+ * Added fixes for Sharp SL-6000 (Tosa) LCD noise causing
-+ * touchscreen interference.
- */
-
- #include <linux/module.h>
-@@ -94,6 +97,7 @@
- static DECLARE_MUTEX(gpio_sem);
- static LIST_HEAD(wm97xx_misc_list);
- static struct wm97xx* wm_codec = NULL;
-+struct wm97xx_machinfo *wm_machinfo;
-
- /*
- * WM97xx - enable/disable AUX ADC sysfs
-@@ -832,6 +836,23 @@
- mdev->remove(wm_codec);
- }
-
-+#ifdef CONFIG_MACH_TOSA
-+/* On the Sharp SL-6000 (Tosa), due to a noisy LCD, we need to perform a wait
-+ * before sampling the Y axis of the touchscreen */
-+unsigned long wm97xx_calc_lcd_waittime(struct wm97xx *wm) {
-+ unsigned long hsync_time = wm_machinfo->get_hsync_time();
-+ return hsync_time;
-+}
-+
-+void wm97xx_set_machinfo(struct wm97xx_machinfo *machinfo) {
-+ wm_machinfo = machinfo;
-+}
-+
-+void wm97xx_unset_machinfo() {
-+ wm_machinfo = NULL;
-+}
-+#endif
-+
- static struct device_driver wm97xx_driver = {
- .name = "ac97",
- .bus = &ac97_bus_type,
-@@ -861,6 +882,9 @@
- EXPORT_SYMBOL_GPL(wm97xx_reg_write);
- EXPORT_SYMBOL_GPL(wm97xx_register_misc_dev);
- EXPORT_SYMBOL_GPL(wm97xx_unregister_misc_dev);
-+EXPORT_SYMBOL_GPL(wm97xx_calc_lcd_waittime);
-+EXPORT_SYMBOL_GPL(wm97xx_set_machinfo);
-+EXPORT_SYMBOL_GPL(wm97xx_unset_machinfo);
-
- module_init(wm97xx_init);
- module_exit(wm97xx_exit);
-Index: linux-tosa/include/linux/wm97xx.h
-===================================================================
---- linux-tosa.orig/include/linux/wm97xx.h 2006-08-29 16:52:36.008543280 +0100
-+++ linux-tosa/include/linux/wm97xx.h 2006-08-29 16:52:50.924275744 +0100
-@@ -207,6 +207,7 @@
-
- struct wm97xx;
- extern struct wm97xx_codec_drv wm97xx_codec;
-+extern struct wm97xx_machinfo *wm_machinfo;
-
- /*
- * Codec driver interface - allows mapping to WM9705/12/13 and newer codecs
-@@ -253,6 +254,11 @@
- struct list_head list;
- };
-
-+struct wm97xx_machinfo {
-+ unsigned long (*get_hsync_time)(void);
-+ void (*wait_hsync)(void);
-+};
-+
- int wm97xx_register_misc_dev(struct wm97xx_misc_dev* mdev);
- void wm97xx_unregister_misc_dev(struct wm97xx_misc_dev* mdev);
-
-@@ -281,4 +287,9 @@
- int wm97xx_acc_startup(struct wm97xx* wm);
- void wm97xx_acc_shutdown(struct wm97xx* wm);
-
-+
-+unsigned long wm97xx_calc_lcd_waittime(struct wm97xx *wm);
-+void wm97xx_set_machinfo(struct wm97xx_machinfo *machinfo);
-+void wm97xx_unset_machinfo(void);
-+
- #endif
diff --git a/packages/linux/linux-rp-2.6.20/.mtn2git_empty b/packages/linux/linux-rp-2.6.20/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/.mtn2git_empty
diff --git a/packages/linux/linux-rp-2.6.19/add-oz-release-string.patch b/packages/linux/linux-rp-2.6.20/add-oz-release-string.patch
index a80a1d5528..a80a1d5528 100644
--- a/packages/linux/linux-rp-2.6.19/add-oz-release-string.patch
+++ b/packages/linux/linux-rp-2.6.20/add-oz-release-string.patch
diff --git a/packages/linux/linux-rp-2.6.18/connectplus-remove-ide-HACK.patch b/packages/linux/linux-rp-2.6.20/connectplus-remove-ide-HACK.patch
index 4414b21191..4414b21191 100644
--- a/packages/linux/linux-rp-2.6.18/connectplus-remove-ide-HACK.patch
+++ b/packages/linux/linux-rp-2.6.20/connectplus-remove-ide-HACK.patch
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-akita b/packages/linux/linux-rp-2.6.20/defconfig-akita
new file mode 100644
index 0000000000..cdaf06f7bc
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/defconfig-akita
@@ -0,0 +1,1573 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.16
+# Thu Mar 23 22:11:12 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+
+#
+# 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=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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=y
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+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_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# 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_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+CONFIG_PXA_SHARPSL=y
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_PXA_SHARPSL_25x is not set
+CONFIG_PXA_SHARPSL_27x=y
+CONFIG_MACH_AKITA=y
+CONFIG_MACH_SPITZ=y
+CONFIG_MACH_BORZOI=y
+CONFIG_PXA27x=y
+# CONFIG_PXA_KEYS is not set
+CONFIG_IWMMXT=y
+CONFIG_PXA_SHARP_Cxx00=y
+CONFIG_PXA_SSP=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
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_XSCALE_PMU=y
+CONFIG_KEXEC=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+
+#
+# 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_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+# 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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_XIP_KERNEL 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
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# 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_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=y
+# 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=m
+CONFIG_INET_TCP_DIAG=m
+# 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_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_IPV6_TUNNEL=m
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# 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_QUEUE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE 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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+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 is not set
+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_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=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
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER 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 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_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# 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_SHARP_SL=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_BLKMTD 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=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_SHARPSL=y
+# CONFIG_MTD_NAND_NANDSIM 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_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_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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# 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_IDE_ARM 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=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=m
+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 is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# 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 is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
+
+#
+# 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_CORGI is not set
+CONFIG_KEYBOARD_SPITZ=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_CORGI=y
+# 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_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+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_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# 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_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# 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 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multi-Function Devices
+#
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_SPITZ=y
+# CONFIG_LEDS_TOSA is not set
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+
+#
+# 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_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_W100 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_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+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 is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+# CONFIG_BACKLIGHT_HP680 is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+# CONFIG_SND_SEQUENCER_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+# CONFIG_SND_DEBUG_DETECT is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_AC97_BUS=m
+# 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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# PCMCIA devices
+#
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=m
+
+#
+# Soc Platforms
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2xx_SOC=m
+CONFIG_SND_PXA2xx_SOC_I2S=m
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
+# CONFIG_SND_PXA2xx_SOC_CORGI is not set
+CONFIG_SND_PXA2xx_SOC_SPITZ=m
+# CONFIG_SND_PXA2xx_SOC_TOSA is not set
+
+#
+# Soc Codecs
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_WM8731 is not set
+CONFIG_SND_SOC_WM8750=m
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+# CONFIG_SND_SOC_WM9712 is not set
+# CONFIG_SND_SOC_UDA1380 is not set
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# 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=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_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# 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_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+
+#
+# USB Device Class drivers
+#
+# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
+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_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=m
+CONFIG_USB_HIDINPUT=y
+# 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=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+# CONFIG_USB_ACECAD is not set
+CONFIG_USB_KBTAB=m
+CONFIG_USB_POWERMATE=m
+CONFIG_USB_MTOUCH=m
+# CONFIG_USB_ITMTOUCH is not set
+CONFIG_USB_EGALAX=m
+# CONFIG_USB_YEALINK is not set
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+# 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=m
+CONFIG_USB_MICROTEK=m
+
+#
+# USB Multimedia devices
+#
+CONFIG_USB_DABUSB=m
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# 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_ZD1201 is not set
+CONFIG_USB_MON=y
+
+#
+# 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_ANYDATA is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+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_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 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=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_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=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_LD 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_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=m
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+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
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+
+#
+# Real Time Clock
+#
+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
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST 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=m
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG 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_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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 is not set
+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_SYSFS=y
+CONFIG_TMPFS=y
+# 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_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+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 is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+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=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_XATTR 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=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+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=y
+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=y
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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=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 is not set
+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=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_SHARPSL_RC=n
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-c7x0 b/packages/linux/linux-rp-2.6.20/defconfig-c7x0
new file mode 100644
index 0000000000..ad7fca8861
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/defconfig-c7x0
@@ -0,0 +1,1609 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.16
+# Mon May 22 09:00:01 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+
+#
+# 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=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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=y
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+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_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# 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_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+CONFIG_PXA_SHARPSL=y
+# CONFIG_MACH_HX2750 is not set
+CONFIG_PXA_SHARPSL_25x=y
+# CONFIG_PXA_SHARPSL_27x is not set
+# CONFIG_MACH_POODLE is not set
+CONFIG_MACH_CORGI=y
+CONFIG_MACH_SHEPHERD=y
+CONFIG_MACH_HUSKY=y
+# CONFIG_MACH_TOSA is not set
+CONFIG_PXA25x=y
+# CONFIG_PXA_KEYS is not set
+CONFIG_PXA_SHARP_C7xx=y
+CONFIG_PXA_SSP=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
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_XSCALE_PMU=y
+CONFIG_KEXEC=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+
+#
+# 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_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+# 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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+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=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_PXA25x=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=m
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# 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=m
+# 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=y
+# 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=m
+CONFIG_INET_TCP_DIAG=m
+# 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_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_IPV6_TUNNEL=m
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# 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_QUEUE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE 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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+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 is not set
+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_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=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
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER 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 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_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# 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_SHARP_SL=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_BLKMTD 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=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_SHARPSL=y
+# CONFIG_MTD_NAND_NANDSIM 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_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_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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# 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_IDE_ARM 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=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=m
+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 is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# 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 is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
+
+#
+# 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_CORGI=y
+# CONFIG_KEYBOARD_SPITZ is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_CORGI=y
+# 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_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+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_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# 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 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multi-Function Devices
+#
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_CORGI=y
+# CONFIG_LEDS_TOSA is not set
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+
+#
+# Video For Linux
+#
+
+#
+# Video Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_VIDEO_AUDIO_DECODER is not set
+# CONFIG_VIDEO_DECODER is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_MAESTRO 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_S1D13XXX is not set
+# CONFIG_FB_PXA is not set
+CONFIG_FB_W100=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_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CORGI=y
+# CONFIG_BACKLIGHT_HP680 is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+# CONFIG_SND_SEQUENCER_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+# CONFIG_SND_DEBUG_DETECT is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_AC97_BUS=m
+# 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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# PCMCIA devices
+#
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=m
+
+#
+# Soc Platforms
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2xx_SOC=m
+CONFIG_SND_PXA2xx_SOC_I2S=m
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
+CONFIG_SND_PXA2xx_SOC_CORGI=m
+# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
+# CONFIG_SND_PXA2xx_SOC_TOSA is not set
+
+#
+# Soc Codecs
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+CONFIG_SND_SOC_WM8731=m
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+# CONFIG_SND_SOC_WM9712 is not set
+# CONFIG_SND_SOC_UDA1380 is not set
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+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_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+
+#
+# USB Device Class drivers
+#
+# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
+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_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=m
+CONFIG_USB_HIDINPUT=y
+# 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=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+# CONFIG_USB_ACECAD is not set
+CONFIG_USB_KBTAB=m
+CONFIG_USB_POWERMATE=m
+CONFIG_USB_MTOUCH=m
+# CONFIG_USB_ITMTOUCH is not set
+CONFIG_USB_EGALAX=m
+# CONFIG_USB_YEALINK is not set
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+# 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=m
+CONFIG_USB_MICROTEK=m
+
+#
+# USB Multimedia devices
+#
+CONFIG_USB_DABUSB=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_DSBR=m
+# CONFIG_USB_ET61X251 is not set
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_PWC 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_ZD1201 is not set
+CONFIG_USB_MON=y
+
+#
+# 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_ANYDATA is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+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_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 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=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_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X 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_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+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
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+
+#
+# Real Time Clock
+#
+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
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST 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_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 is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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 is not set
+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_SYSFS=y
+CONFIG_TMPFS=y
+# 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_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+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 is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+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=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_XATTR 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=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+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=y
+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=y
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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=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 is not set
+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=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_SHARPSL_RC=m
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-collie b/packages/linux/linux-rp-2.6.20/defconfig-collie
new file mode 100644
index 0000000000..945f2fb39c
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/defconfig-collie
@@ -0,0 +1,1738 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20.4
+# Fri Apr 6 23:20:59 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_IPC_NS is not set
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# 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=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_SA1100_CERF is not set
+CONFIG_SA1100_COLLIE=y
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+# CONFIG_SA1100_BADGE4 is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HACKKIT is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHANNON is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_SSP is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_SA1100=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4=y
+CONFIG_CPU_CACHE_V4WB=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WB=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+CONFIG_SHARP_LOCOMO=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+CONFIG_ISA=y
+
+#
+# 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_I82365 is not set
+# CONFIG_TCIC is not set
+CONFIG_PCMCIA_SA1100=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+# CONFIG_AEABI is not set
+CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
+CONFIG_NODES_SHIFT=2
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM_MANUAL=y
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_NEED_MULTIPLE_NODES=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# 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
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM=m
+
+#
+# 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=m
+# 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=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_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
+
+#
+# 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=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE 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_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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_SA1100_FIR=m
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=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 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_DEBUG_DRIVER is not set
+# 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+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 is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_OBSOLETE_CHIPS=y
+CONFIG_MTD_SHARP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_SA1100=y
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD 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_PNP is not set
+
+#
+# Block devices
+#
+# 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 is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=m
+CONFIG_IDE_MAX_HWIFS=4
+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_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_IDE_GENERIC 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=m
+# 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=m
+CONFIG_CHR_DEV_OSST=m
+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 is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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_NET_VENDOR_3COM is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_NET_VENDOR_RACAL 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 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# 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
+# CONFIG_ARLAN is not set
+# CONFIG_WAVELAN is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# 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 is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
+
+#
+# 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_LOCOMO=y
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_INPUT_MOUSE 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 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=m
+CONFIG_SERIAL_8250_CS=m
+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_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# 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_ELEKTOR is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# 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=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_LOCOMO=m
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+# CONFIG_TIFM_CORE is not set
+
+#
+# Multimedia Capabilities Port drivers
+#
+CONFIG_MCP=y
+CONFIG_MCP_SA11X0=y
+CONFIG_MCP_UCB1200=y
+CONFIG_MCP_UCB1200_TS=m
+
+#
+# Multi-Function Devices
+#
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+CONFIG_LEDS_LOCOMO=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+
+#
+# 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_VIVI is not set
+# CONFIG_VIDEO_PMS 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
+
+#
+# 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 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
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_CADET is not set
+# CONFIG_RADIO_RTRACK is not set
+# CONFIG_RADIO_RTRACK2 is not set
+# CONFIG_RADIO_AZTECH is not set
+# CONFIG_RADIO_GEMTEK is not set
+# CONFIG_RADIO_SF16FMI is not set
+# CONFIG_RADIO_SF16FMR2 is not set
+# CONFIG_RADIO_TERRATEC is not set
+# CONFIG_RADIO_TRUST is not set
+# CONFIG_RADIO_TYPHOON is not set
+# CONFIG_RADIO_ZOLTRIX is not set
+# CONFIG_USB_DSBR is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+CONFIG_FB_SA1100=y
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+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
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_LOCOMO=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# 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 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_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_ISP116X_HCD is not set
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+
+#
+# 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_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# 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 is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# 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 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 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=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 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+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=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+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 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+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 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 is not set
+# 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 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_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_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_PXA27X 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_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=m
+CONFIG_MMC_DEBUG=y
+CONFIG_MMC_BLOCK=m
+# CONFIG_MMC_TIFM_SD is not set
+CONFIG_MMC_SPI=m
+
+#
+# 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS 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 is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# 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_LZO=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=m
+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 is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+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=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+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
+# 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=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+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=y
+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=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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 is not set
+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 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=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_LZO is not set
+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=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_LZO=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-hx2000 b/packages/linux/linux-rp-2.6.20/defconfig-hx2000
new file mode 100644
index 0000000000..e0df2ae453
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/defconfig-hx2000
@@ -0,0 +1,1162 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20-rc2
+# Mon Jan 1 01:49:04 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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 is not set
+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 is not set
+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=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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 is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# 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=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_MACH_HX2750=y
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+CONFIG_PXA_KEYS=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_DCACHE_DISABLE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+
+#
+# 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_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
+# 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
+
+#
+# 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=y
+# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM=y
+
+#
+# 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=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_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 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
+
+#
+# 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_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=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+# CONFIG_IEEE80211_CRYPT_CCMP is not set
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+# CONFIG_IEEE80211_SOFTMAC is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+# 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 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_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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+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_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
+# CONFIG_MTD_XIP 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_SHARP_SL 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
+
+#
+# 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_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_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# 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
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_IDE_ARM 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 is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_SMC911X is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# 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
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# 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 is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# 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_TSC2101=y
+# 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM 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 is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+# CONFIG_TIFM_CORE is not set
+
+#
+# Multi-Function Devices
+#
+CONFIG_MFD_TSC2101=y
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+# CONFIG_FB_PXA_OVERLAY is not set
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX 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_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+# CONFIG_LOGO_OZ240_CLUT224 is not set
+# CONFIG_LOGO_OZ480_CLUT224 is not set
+# CONFIG_LOGO_OZ640_CLUT224 is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_HX2750=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+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
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_TIFM_SD 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_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 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 is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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 is not set
+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_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 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=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=y
+CONFIG_NLS_DEFAULT="cp437"
+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=y
+
+#
+# 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=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# 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_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC 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_MANAGER=m
+# 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_MD5 is not set
+# 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=m
+CONFIG_CRYPTO_CBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_DES 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=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
+CONFIG_SHARPSL_RC=n
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-ipaq-pxa270 b/packages/linux/linux-rp-2.6.20/defconfig-ipaq-pxa270
new file mode 100644
index 0000000000..b31a1e4071
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/defconfig-ipaq-pxa270
@@ -0,0 +1,1021 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.15-rc1-git7
+# Sat Nov 19 23:13:51 2005
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_CLEAN_COMPILE is not set
+CONFIG_BROKEN=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 is not set
+# CONFIG_SYSVIPC is not set
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_HOTPLUG=y
+CONFIG_KOBJECT_UEVENT=y
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=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_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_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+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_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_CAMELOT is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# 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_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+CONFIG_MACH_HX2750=y
+CONFIG_PXA27x=y
+CONFIG_PXA_KEYS=y
+CONFIG_PXA_SSP=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
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_ISA_DMA_API=y
+
+#
+# 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_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_XIP_KERNEL 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
+
+#
+# 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=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# 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=y
+# 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=m
+CONFIG_INET_TCP_DIAG=m
+# 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
+# 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=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+# CONFIG_IEEE80211_CRYPT_CCMP is not set
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER 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 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_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# 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=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+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_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
+# CONFIG_MTD_XIP 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_SHARP_SL 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_BLKMTD 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_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_INITRD=y
+# 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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# 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
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_IDE_ARM 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 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_AIRO is not set
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# 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 is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+# CONFIG_INPUT_POWER 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=y
+# 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_TSC2101=y
+# 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multi-Function Devices
+#
+CONFIG_MFD_TSC2101=y
+
+#
+# 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_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS 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_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_HX2750=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_WBSD is not set
+
+#
+# Real Time Clock
+#
+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
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST 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_JBD 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_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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 is not set
+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_SYSFS=y
+# CONFIG_TMPFS is not set
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_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_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
+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 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=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_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+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=y
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# 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_DES 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=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_SHARPSL_RC=n
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-poodle b/packages/linux/linux-rp-2.6.20/defconfig-poodle
new file mode 100644
index 0000000000..f332c72d56
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/defconfig-poodle
@@ -0,0 +1,1656 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.17
+# Mon Jul 10 23:38:56 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+
+#
+# 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=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+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_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_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# 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_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+CONFIG_PXA_SHARPSL=y
+# CONFIG_MACH_HX2750 is not set
+CONFIG_PXA_SHARPSL_25x=y
+# CONFIG_PXA_SHARPSL_27x is not set
+CONFIG_MACH_POODLE=y
+# CONFIG_MACH_CORGI is not set
+# CONFIG_MACH_SHEPHERD is not set
+# CONFIG_MACH_HUSKY is not set
+# CONFIG_MACH_TOSA is not set
+CONFIG_PXA25x=y
+# CONFIG_PXA_KEYS is not set
+CONFIG_PXA_SSP=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
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_XSCALE_PMU=y
+CONFIG_KEXEC=y
+CONFIG_SHARP_LOCOMO=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+
+#
+# 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_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1 dyntick=enable debug"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+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=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_PXA25x=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=m
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# 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_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=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_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# 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_IPV6_TUNNEL=m
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# 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 is not set
+CONFIG_IP_NF_QUEUE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE 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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+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 is not set
+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_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=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 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_DEBUG_DRIVER 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 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_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# 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_SHARP_SL=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
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_SHARPSL=y
+# CONFIG_MTD_NAND_NANDSIM 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_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_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# 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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# 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_IDE_ARM 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=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=m
+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 is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# 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
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# 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 is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
+
+#
+# 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_LOCOMO=y
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_CORGI is not set
+# CONFIG_KEYBOARD_SPITZ is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_CORGI=y
+# 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_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+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_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# 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 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multi-Function Devices
+#
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_LOCOMO=y
+# CONFIG_LEDS_TOSA is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=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 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_VIDEO_OVCAMCHIP is not set
+
+#
+# Encoders and Decoders
+#
+# CONFIG_VIDEO_MSP3400 is not set
+# CONFIG_VIDEO_CS53L32A is not set
+# CONFIG_VIDEO_WM8775 is not set
+# CONFIG_VIDEO_WM8739 is not set
+# CONFIG_VIDEO_CX25840 is not set
+# CONFIG_VIDEO_SAA711X is not set
+# CONFIG_VIDEO_SAA7127 is not set
+# CONFIG_VIDEO_UPD64031A is not set
+# CONFIG_VIDEO_UPD64083 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_EM28XX is not set
+CONFIG_USB_DSBR=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+# CONFIG_USB_ET61X251 is not set
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_MAESTRO is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+CONFIG_USB_DABUSB=m
+
+#
+# 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_FIRMWARE_EDID=y
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_W100 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_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# 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=y
+# 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=y
+CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+# CONFIG_LOGO_OHAND_CLUT224 is not set
+CONFIG_LOGO_OZ240_CLUT224=y
+# CONFIG_LOGO_OZ480_CLUT224 is not set
+# CONFIG_LOGO_OZ640_CLUT224 is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_LCD_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_LOCOMO=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=m
+
+#
+# Soc Platforms
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2xx_SOC=m
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8731 is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8974 is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
+# CONFIG_SND_MAINSTONE_BASEBAND is not set
+# CONFIG_SND_MAINSTONE_BLUETOOTH is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
+# CONFIG_SND_PXA2xx_SOC_CORGI is not set
+# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
+CONFIG_SND_PXA2xx_SOC_POODLE=m
+# CONFIG_SND_PXA2xx_SOC_TOSA is not set
+
+#
+# Soc Codecs
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+CONFIG_SND_SOC_WM8731=m
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+# CONFIG_SND_SOC_WM9712 is not set
+# CONFIG_SND_SOC_UDA1380 is not set
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+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_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_ISP116X_HCD is not set
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+
+#
+# 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_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=m
+CONFIG_USB_HIDINPUT=y
+# 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=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+# CONFIG_USB_ACECAD is not set
+CONFIG_USB_KBTAB=m
+CONFIG_USB_POWERMATE=m
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+# 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=m
+CONFIG_USB_MICROTEK=m
+
+#
+# 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_ZD1201 is not set
+CONFIG_USB_MON=y
+
+#
+# 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_ANYDATA is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+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 is not set
+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 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_NAVMAN is not set
+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_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X 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_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+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
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+
+#
+# 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
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST 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_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 is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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 is not set
+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_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=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+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 is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+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=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_XATTR 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=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+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=y
+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=y
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_UNWIND_INFO is not set
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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=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 is not set
+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=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_SHARPSL_RC=n
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-qemuarm b/packages/linux/linux-rp-2.6.20/defconfig-qemuarm
new file mode 100644
index 0000000000..ed8f122cb0
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/defconfig-qemuarm
@@ -0,0 +1,1191 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.17
+# Sat Aug 26 22:45:02 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_VECTORS_BASE=0xffff0000
+
+#
+# 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 is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_EMBEDDED is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_SLAB=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+CONFIG_OBSOLETE_INTERMODULE=y
+
+#
+# Loadable module support
+#
+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
+
+#
+# Block layer
+#
+# CONFIG_BLK_DEV_IO_TRACE 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"
+
+#
+# System Type
+#
+# 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_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 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_VERSATILE=y
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Versatile platform type
+#
+CONFIG_ARCH_VERSATILE_PB=y
+# CONFIG_MACH_VERSATILE_AB is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=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_KEXEC is not set
+CONFIG_ARM_VIC=y
+CONFIG_ICST307=y
+
+#
+# Bus support
+#
+CONFIG_ARM_AMBA=y
+CONFIG_PCI=y
+# CONFIG_PCI_DEBUG is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# 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_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
+# 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
+CONFIG_VFP=y
+
+#
+# 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=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG 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_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_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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 is not set
+# CONFIG_DEBUG_DRIVER 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_AFS_PARTS=y
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=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
+
+#
+# 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=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_GEOMETRY 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_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 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_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=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=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH 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 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_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 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=y
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+# 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_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+
+#
+# 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_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
+
+#
+# Tulip family network device support
+#
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_PCI 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_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
+
+#
+# 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
+# CONFIG_INPUT_POWER 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_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_UINPUT is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+CONFIG_SERIO_AMBAKMI=y
+# 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+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 is not set
+# 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 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_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# Multi-Function Devices
+#
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+# CONFIG_LEDS_CLASS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+# CONFIG_LEDS_TRIGGERS is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_V4L2=y
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB 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_FIRMWARE_EDID=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+CONFIG_FB_ARMCLCD=y
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_MATROX 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_TRIDENT is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+# CONFIG_LOGO_OZ240_CLUT224 is not set
+# CONFIG_LOGO_OZ480_CLUT224 is not set
+# CONFIG_LOGO_OZ640_CLUT224 is not set
+# 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_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# 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 is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_HCD is not set
+# 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 is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+CONFIG_USB_WACOM=y
+# 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 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 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=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_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_LD 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
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST 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_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 is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# 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_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
+# CONFIG_SQUASHFS 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=y
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+# CONFIG_NFSD_V4 is not set
+# CONFIG_NFSD_TCP is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=y
+# 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
+# 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=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# 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 is not set
+# 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
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_UNWIND_INFO is not set
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# 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 is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_SHARPSL_RC=n
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-qemux86 b/packages/linux/linux-rp-2.6.20/defconfig-qemux86
new file mode 100644
index 0000000000..39ca9ffea7
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/defconfig-qemux86
@@ -0,0 +1,1563 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.17
+# Mon Oct 16 19:42:42 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_GENERIC_HWEIGHT=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_DMI=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=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=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+# CONFIG_IKCONFIG is not set
+# CONFIG_CPUSETS is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_VM86=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_EMBEDDED=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_EPOLL=y
+CONFIG_SHMEM=y
+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 is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_LBD=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF 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_SMP=y
+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=y
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# 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_L1_CACHE_SHIFT=7
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_X86_PPRO_FENCE=y
+CONFIG_X86_F00F_BUG=y
+CONFIG_X86_INTEL_USERCOPY=y
+# CONFIG_HPET_TIMER is not set
+CONFIG_NR_CPUS=8
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_PREEMPT_BKL=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_MCE=y
+CONFIG_X86_MCE_NONFATAL=y
+CONFIG_X86_MCE_P4THERMAL=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_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_IRQBALANCE=y
+# CONFIG_REGPARM is not set
+CONFIG_SECCOMP=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+# CONFIG_KEXEC is not set
+CONFIG_PHYSICAL_START=0x100000
+# CONFIG_HOTPLUG_CPU is not set
+
+#
+# Power management options (ACPI, APM)
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+
+#
+# ACPI (Advanced Configuration and Power Interface) Support
+#
+CONFIG_ACPI=y
+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=m
+# CONFIG_ACPI_IBM_DOCK 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_MSI is not set
+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=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_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 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=y
+# 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 is not set
+# CONFIG_IP_NF_FTP is not set
+# CONFIG_IP_NF_IRC is not set
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_H323 is not set
+CONFIG_IP_NF_QUEUE=y
+
+#
+# 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=m
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=y
+CONFIG_PARPORT_PC=y
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_1284 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=y
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=y
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE 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 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_INITRD is not set
+# 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=y
+CONFIG_IDEDISK_MULTI_MODE=y
+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=y
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_IDEPNP is not set
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_RZ1000=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+# CONFIG_IDEDMA_ONLYDISK is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_ATIIXP is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_CS5535 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+CONFIG_BLK_DEV_PIIX=y
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SIS5513 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_IDE_CHIPSETS is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+CONFIG_IDEDMA_AUTO=y
+# 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 is not set
+CONFIG_CHR_DEV_SG=y
+# 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 is not set
+# 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=m
+# CONFIG_SCSI_ADVANSYS 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=y
+# CONFIG_SCSI_SATA_AHCI is not set
+# CONFIG_SCSI_SATA_SVW is not set
+CONFIG_SCSI_ATA_PIIX=y
+# CONFIG_SCSI_SATA_MV is not set
+# CONFIG_SCSI_SATA_NV is not set
+# CONFIG_SCSI_PDC_ADMA is not set
+# CONFIG_SCSI_SATA_QSTOR is not set
+# CONFIG_SCSI_SATA_PROMISE is not set
+CONFIG_SCSI_SATA_SX4=m
+# CONFIG_SCSI_SATA_SIL is not set
+# CONFIG_SCSI_SATA_SIL24 is not set
+CONFIG_SCSI_SATA_SIS=m
+# CONFIG_SCSI_SATA_ULI is not set
+# CONFIG_SCSI_SATA_VIA is not set
+# CONFIG_SCSI_SATA_VITESSE is not set
+CONFIG_SCSI_SATA_INTEL_COMBINED=y
+# 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_PPA is not set
+# CONFIG_SCSI_IMM is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+CONFIG_SCSI_IPR=m
+# CONFIG_SCSI_IPR_TRACE is not set
+# CONFIG_SCSI_IPR_DUMP 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_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=y
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+
+#
+# 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=y
+
+#
+# Subsystem Options
+#
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+# CONFIG_IEEE1394_OUI_DB is not set
+# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set
+# CONFIG_IEEE1394_EXPORT_FULL_API is not set
+
+#
+# Device Drivers
+#
+
+#
+# Texas Instruments PCILynx requires I2C
+#
+CONFIG_IEEE1394_OHCI1394=y
+
+#
+# Protocol Drivers
+#
+# CONFIG_IEEE1394_VIDEO1394 is not set
+# CONFIG_IEEE1394_SBP2 is not set
+# CONFIG_IEEE1394_ETH1394 is not set
+# CONFIG_IEEE1394_DV1394 is not set
+CONFIG_IEEE1394_RAWIO=y
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=m
+# 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=y
+# CONFIG_E2100 is not set
+# CONFIG_EWRK3 is not set
+# CONFIG_EEXPRESS is not set
+# CONFIG_EEXPRESS_PRO is not set
+# CONFIG_HPLAN_PLUS is not set
+# CONFIG_HPLAN is not set
+# CONFIG_LP486E is not set
+# CONFIG_ETH16I is not set
+CONFIG_NE2000=y
+# CONFIG_ZNET is not set
+# CONFIG_SEEQ8005 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_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=y
+# CONFIG_8139CP is not set
+CONFIG_8139TOO=y
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET 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_NET_POCKET 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=m
+# CONFIG_S2IO_NAPI 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_PLIP 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 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
+# CONFIG_INPUT_POWER 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 is not set
+# CONFIG_MOUSE_PS2 is not set
+# 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_PARKBD 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_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_PRINTER=y
+# CONFIG_LP_CONSOLE is not set
+# CONFIG_PPDEV is not set
+# CONFIG_TIPAR is not set
+
+#
+# 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_AGP=y
+# CONFIG_AGP_ALI is not set
+# CONFIG_AGP_ATI is not set
+# CONFIG_AGP_AMD is not set
+# CONFIG_AGP_AMD64 is not set
+CONFIG_AGP_INTEL=y
+# CONFIG_AGP_NVIDIA is not set
+# CONFIG_AGP_SIS is not set
+# CONFIG_AGP_SWORKS is not set
+# CONFIG_AGP_VIA is not set
+# CONFIG_AGP_EFFICEON is not set
+CONFIG_DRM=y
+# CONFIG_DRM_TDFX is not set
+# CONFIG_DRM_R128 is not set
+# CONFIG_DRM_RADEON is not set
+# CONFIG_DRM_I810 is not set
+# CONFIG_DRM_I830 is not set
+# CONFIG_DRM_I915 is not set
+# CONFIG_DRM_MGA is not set
+# CONFIG_DRM_SIS is not set
+# CONFIG_DRM_VIA is not set
+# CONFIG_DRM_SAVAGE 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
+
+#
+# Multi-Function Devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_V4L2=y
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB 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_FIRMWARE_EDID=y
+CONFIG_FB_MODE_HELPERS=y
+# 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_FB_VESA_STD is not set
+CONFIG_FB_VESA_TNG=y
+CONFIG_FB_VESA_DEFAULT_MODE="640x480-32@60"
+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 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_VGACON_SOFT_SCROLLBACK is not set
+# 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 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+# CONFIG_LOGO_OZ240_CLUT224 is not set
+# CONFIG_LOGO_OZ480_CLUT224 is not set
+# CONFIG_LOGO_OZ640_CLUT224 is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=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_AC97_CODEC=y
+CONFIG_SND_AC97_BUS=y
+# 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
+
+#
+# ISA devices
+#
+# CONFIG_SND_ADLIB is not set
+# CONFIG_SND_AD1816A is not set
+# CONFIG_SND_AD1848 is not set
+# CONFIG_SND_ALS100 is not set
+# CONFIG_SND_AZT2320 is not set
+# CONFIG_SND_CMI8330 is not set
+# CONFIG_SND_CS4231 is not set
+# CONFIG_SND_CS4232 is not set
+# CONFIG_SND_CS4236 is not set
+# CONFIG_SND_DT019X is not set
+# CONFIG_SND_ES968 is not set
+# CONFIG_SND_ES1688 is not set
+# CONFIG_SND_ES18XX is not set
+# CONFIG_SND_GUSCLASSIC is not set
+# CONFIG_SND_GUSEXTREME is not set
+# CONFIG_SND_GUSMAX is not set
+# CONFIG_SND_INTERWAVE is not set
+# CONFIG_SND_INTERWAVE_STB is not set
+# CONFIG_SND_OPL3SA2 is not set
+# CONFIG_SND_OPTI92X_AD1848 is not set
+# CONFIG_SND_OPTI92X_CS4231 is not set
+# CONFIG_SND_OPTI93X is not set
+# CONFIG_SND_MIRO is not set
+# CONFIG_SND_SB8 is not set
+# CONFIG_SND_SB16 is not set
+# CONFIG_SND_SBAWE is not set
+# CONFIG_SND_SGALAXY is not set
+# CONFIG_SND_SSCAPE is not set
+# CONFIG_SND_WAVEFRONT is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALS4000 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_CS5535AUDIO 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=y
+# 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
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_USX2Y is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# 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_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=y
+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=y
+
+#
+# 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=y
+# 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 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 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=y
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# 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=m
+# CONFIG_USB_PHIDGETKIT is not set
+CONFIG_USB_PHIDGETSERVO=m
+# 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
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+# CONFIG_EDAC is not set
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS 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 is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# 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_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 is not set
+# CONFIG_SQUASHFS 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 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=y
+# CONFIG_NFSD_V3 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# 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
+# 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=y
+CONFIG_OPROFILE=y
+# 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=15
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_FS is not set
+# CONFIG_UNWIND_INFO is not set
+CONFIG_EARLY_PRINTK=y
+CONFIG_STACK_BACKTRACE_COLS=2
+CONFIG_X86_FIND_SMP_CONFIG=y
+CONFIG_X86_MPPARSE=y
+CONFIG_DOUBLEFAULT=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_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_X86_SMP=y
+CONFIG_X86_HT=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_X86_TRAMPOLINE=y
+CONFIG_KTIME_SCALAR=y
+CONFIG_SHARPSL_RC=n
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-spitz b/packages/linux/linux-rp-2.6.20/defconfig-spitz
new file mode 100644
index 0000000000..572f212544
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/defconfig-spitz
@@ -0,0 +1,1604 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.17
+# Sun Sep 3 23:29:17 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+
+#
+# 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=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_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=y
+# CONFIG_MODVERSIONS is not set
+# 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=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+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_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_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# 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_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+CONFIG_PXA_SHARPSL=y
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_PXA_SHARPSL_25x is not set
+CONFIG_PXA_SHARPSL_27x=y
+CONFIG_MACH_AKITA=y
+CONFIG_MACH_SPITZ=y
+CONFIG_MACH_BORZOI=y
+CONFIG_PXA27x=y
+# CONFIG_PXA_KEYS is not set
+CONFIG_IWMMXT=y
+CONFIG_PXA_SHARP_Cxx00=y
+CONFIG_PXA_SSP=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
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_XSCALE_PMU=y
+CONFIG_KEXEC=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+
+#
+# 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_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/hda1 rootfstype=ext3 rw fbcon=rotate:1 dyntick=enable debug"
+# CONFIG_XIP_KERNEL 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
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# 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_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=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_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# 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_IPV6_TUNNEL=m
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# 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 is not set
+CONFIG_IP_NF_QUEUE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE 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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+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 is not set
+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_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=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 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_DEBUG_DRIVER 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 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_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# 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_SHARP_SL=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
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_SHARPSL=y
+# CONFIG_MTD_NAND_NANDSIM 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_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_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# 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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# 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_IDE_ARM 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=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=m
+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 is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# 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
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# 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 is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
+
+#
+# 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_CORGI is not set
+CONFIG_KEYBOARD_SPITZ=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_CORGI=y
+# 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_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+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_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# 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_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# 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 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multi-Function Devices
+#
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_SPITZ=y
+# CONFIG_LEDS_TOSA is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_V4L2=y
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+CONFIG_USB_DABUSB=m
+
+#
+# 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_FIRMWARE_EDID=y
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_W100 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_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+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=y
+CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+# CONFIG_LOGO_OHAND_CLUT224 is not set
+# CONFIG_LOGO_OZ240_CLUT224 is not set
+# CONFIG_LOGO_OZ480_CLUT224 is not set
+CONFIG_LOGO_OZ640_CLUT224=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# 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 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_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=y
+CONFIG_SND_DEBUG=y
+# CONFIG_SND_DEBUG_DETECT is not set
+# CONFIG_SND_PCM_XRUN_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_AC97_BUS=m
+# 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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=m
+
+#
+# Soc Platforms
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2xx_SOC=m
+CONFIG_SND_PXA2xx_SOC_I2S=m
+CONFIG_SND_PXA2xx_SOC_SPITZ=m
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Freescale i.MX
+#
+
+#
+# Soc Codecs
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_WM8731 is not set
+CONFIG_SND_SOC_WM8750=m
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+# CONFIG_SND_SOC_WM9712 is not set
+# CONFIG_SND_SOC_UDA1380 is not set
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# 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 is not set
+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_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# 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_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+
+#
+# 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_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=m
+CONFIG_USB_HIDINPUT=y
+# 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=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+# CONFIG_USB_ACECAD is not set
+CONFIG_USB_KBTAB=m
+CONFIG_USB_POWERMATE=m
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+# 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=m
+CONFIG_USB_MICROTEK=m
+
+#
+# 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_ZD1201 is not set
+CONFIG_USB_MON=y
+
+#
+# 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_ANYDATA is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+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 is not set
+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 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_NAVMAN is not set
+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_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=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_LD 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_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=m
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+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
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+
+#
+# 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
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST 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 is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG 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_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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 is not set
+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_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=m
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+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 is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+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=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_XATTR 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=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+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=y
+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=y
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_UNWIND_INFO is not set
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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=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 is not set
+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=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_SHARPSL_RC=m
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-tosa b/packages/linux/linux-rp-2.6.20/defconfig-tosa
new file mode 100644
index 0000000000..476f07cabe
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/defconfig-tosa
@@ -0,0 +1,1609 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.16-rc5-git5
+# Tue Mar 14 09:05:26 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+
+#
+# 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=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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=y
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+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_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# 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_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+CONFIG_PXA_SHARPSL=y
+# CONFIG_MACH_HX2750 is not set
+CONFIG_PXA_SHARPSL_25x=y
+# CONFIG_PXA_SHARPSL_27x is not set
+# CONFIG_MACH_POODLE is not set
+# CONFIG_MACH_CORGI is not set
+# CONFIG_MACH_SHEPHERD is not set
+# CONFIG_MACH_HUSKY is not set
+CONFIG_MACH_TOSA=y
+CONFIG_PXA25x=y
+# CONFIG_PXA_KEYS 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_XSCALE_PMU=y
+CONFIG_KEXEC=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
+CONFIG_TOSHIBA_TC6393XB=y
+
+#
+# Bus support
+#
+
+#
+# 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_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+# 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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+CONFIG_CPU_FREQ_PXA25x=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=m
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# 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=m
+# 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=y
+# 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=m
+CONFIG_INET_TCP_DIAG=m
+# 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_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_IPV6_TUNNEL=m
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# 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_QUEUE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE 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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+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 is not set
+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_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=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
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=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
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_SHARP_SL=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_BLKMTD 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=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_TMIO=y
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_SHARPSL is not set
+# CONFIG_MTD_NAND_NANDSIM 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_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 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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# 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 is not set
+# CONFIG_IDE_ARM 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=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=m
+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 is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# 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 is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
+
+#
+# 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_CORGI is not set
+# CONFIG_KEYBOARD_SPITZ is not set
+CONFIG_KEYBOARD_TOSA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_CORGI 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_WM97XX=y
+# CONFIG_TOUCHSCREEN_WM9705 is not set
+CONFIG_TOUCHSCREEN_WM9712=y
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_WM97XX_PXA 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+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_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# 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_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# 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
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multi-Function Devices
+#
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TOSA=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+
+#
+# Video For Linux
+#
+
+#
+# Video Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_VIDEO_AUDIO_DECODER is not set
+# CONFIG_VIDEO_DECODER is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_MAESTRO 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_S1D13XXX is not set
+# CONFIG_FB_PXA is not set
+# CONFIG_FB_W100 is not set
+CONFIG_FB_TMIO=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_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
+
+#
+# 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=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CORGI=y
+# CONFIG_BACKLIGHT_HP680 is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+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_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_BUS=y
+CONFIG_SND_DUMMY=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# PCMCIA devices
+#
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=y
+
+#
+# Soc Platforms
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2xx_SOC=y
+CONFIG_SND_PXA2xx_SOC_AC97=y
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
+# CONFIG_SND_PXA2xx_SOC_CORGI is not set
+# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
+CONFIG_SND_PXA2xx_SOC_TOSA=y
+
+#
+# Soc Codecs
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_WM8731 is not set
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+CONFIG_SND_SOC_WM9712=y
+# CONFIG_SND_SOC_UDA1380 is not set
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# 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=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_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# 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_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+
+#
+# USB Device Class drivers
+#
+# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
+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_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=m
+CONFIG_USB_HIDINPUT=y
+# 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=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+# CONFIG_USB_ACECAD is not set
+CONFIG_USB_KBTAB=m
+CONFIG_USB_POWERMATE=m
+CONFIG_USB_MTOUCH=m
+# CONFIG_USB_ITMTOUCH is not set
+CONFIG_USB_EGALAX=m
+# CONFIG_USB_YEALINK is not set
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+# 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=m
+CONFIG_USB_MICROTEK=m
+
+#
+# USB Multimedia devices
+#
+CONFIG_USB_DABUSB=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_DSBR=m
+# CONFIG_USB_ET61X251 is not set
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_PWC 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=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+# CONFIG_USB_NET_ZAURUS is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_USB_MON=y
+
+#
+# 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_ANYDATA is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+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_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 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=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_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=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X 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_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+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
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+
+#
+# Real Time Clock
+#
+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
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST 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_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 is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# 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_SYSFS=y
+CONFIG_TMPFS=y
+# 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_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+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 is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+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=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_XATTR 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=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+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=y
+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=y
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL 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=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 is not set
+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 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_SHARPSL_RC=n
diff --git a/packages/linux/linux-rp-2.6.20/hostap-monitor-mode.patch b/packages/linux/linux-rp-2.6.20/hostap-monitor-mode.patch
new file mode 100644
index 0000000000..641fd19e50
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/hostap-monitor-mode.patch
@@ -0,0 +1,209 @@
+This is a patch that I've been maintaining for a few years, and I'd
+really like to see it added to the mainstream zaurus kernel so I can
+finally stop distributing my own.
+
+This patch only effects the card while in monitor mode, and does not
+cause any known stability issues.
+
+http://patches.aircrack-ng.org/hostap-kernel-2.6.18.patch
+
+Rick Farina (Zero_Chaos)
+
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_80211_tx.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_80211_tx.c
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_80211_tx.c 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_80211_tx.c 2006-09-21 01:30:18.000000000 -0400
+@@ -69,6 +69,9 @@
+ iface = netdev_priv(dev);
+ local = iface->local;
+
++ if (local->iw_mode == IW_MODE_MONITOR)
++ goto xmit;
++
+ if (skb->len < ETH_HLEN) {
+ printk(KERN_DEBUG "%s: hostap_data_start_xmit: short skb "
+ "(len=%d)\n", dev->name, skb->len);
+@@ -234,6 +237,7 @@
+ memcpy(skb_put(skb, ETH_ALEN), &hdr.addr4, ETH_ALEN);
+ }
+
++xmit:
+ iface->stats.tx_packets++;
+ iface->stats.tx_bytes += skb->len;
+
+@@ -404,8 +408,6 @@
+ }
+
+ if (skb->len < 24) {
+- printk(KERN_DEBUG "%s: hostap_master_start_xmit: short skb "
+- "(len=%d)\n", dev->name, skb->len);
+ ret = 0;
+ iface->stats.tx_dropped++;
+ goto fail;
+Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_cs.c.orig
+Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_cs.c.rej
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_hw.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_hw.c
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_hw.c 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_hw.c 2006-09-21 01:30:18.000000000 -0400
+@@ -1005,6 +1005,35 @@
+ return fid;
+ }
+
++static int prism2_monitor_enable(struct net_device *dev)
++{
++ if (hostap_set_word(dev, HFA384X_RID_CNFPORTTYPE, 5)) {
++ printk(KERN_DEBUG "Port type setting for monitor mode "
++ "failed\n");
++ return -EOPNOTSUPP;
++ }
++
++ if (hfa384x_cmd(dev, HFA384X_CMDCODE_TEST | (0x0a << 8),
++ 0, NULL, NULL)) {
++ printk(KERN_DEBUG "Could not enter testmode 0x0a\n");
++ return -EOPNOTSUPP;
++ }
++
++ if (hostap_set_word(dev, HFA384X_RID_CNFWEPFLAGS,
++ HFA384X_WEPFLAGS_PRIVACYINVOKED |
++ HFA384X_WEPFLAGS_HOSTENCRYPT |
++ HFA384X_WEPFLAGS_HOSTDECRYPT)) {
++ printk(KERN_DEBUG "WEP flags setting failed\n");
++ return -EOPNOTSUPP;
++ }
++
++ if (hostap_set_word(dev, HFA384X_RID_PROMISCUOUSMODE, 1)) {
++ printk(KERN_DEBUG "Could not set promiscuous mode\n");
++ return -EOPNOTSUPP;
++ }
++
++ return 0;
++}
+
+ static int prism2_reset_port(struct net_device *dev)
+ {
+@@ -1031,6 +1060,10 @@
+ "port\n", dev->name);
+ }
+
++ if (local->iw_mode == IW_MODE_MONITOR)
++ /* force mode 0x0a after port 0 reset */
++ return prism2_monitor_enable(dev);
++
+ /* It looks like at least some STA firmware versions reset
+ * fragmentation threshold back to 2346 after enable command. Restore
+ * the configured value, if it differs from this default. */
+@@ -1466,6 +1499,10 @@
+ return 1;
+ }
+
++ if (local->iw_mode == IW_MODE_MONITOR)
++ /* force mode 0x0a after port 0 reset */
++ prism2_monitor_enable(dev);
++
+ local->hw_ready = 1;
+ local->hw_reset_tries = 0;
+ local->hw_resetting = 0;
+@@ -3156,6 +3193,7 @@
+ local->func->hw_config = prism2_hw_config;
+ local->func->hw_reset = prism2_hw_reset;
+ local->func->hw_shutdown = prism2_hw_shutdown;
++ local->func->monitor_enable = prism2_monitor_enable;
+ local->func->reset_port = prism2_reset_port;
+ local->func->schedule_reset = prism2_schedule_reset;
+ #ifdef PRISM2_DOWNLOAD_SUPPORT
+Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_hw.c.orig
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_ioctl.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_ioctl.c
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_ioctl.c 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_ioctl.c 2006-09-21 01:30:18.000000000 -0400
+@@ -1104,33 +1104,7 @@
+
+ printk(KERN_DEBUG "Enabling monitor mode\n");
+ hostap_monitor_set_type(local);
+-
+- if (hostap_set_word(dev, HFA384X_RID_CNFPORTTYPE,
+- HFA384X_PORTTYPE_PSEUDO_IBSS)) {
+- printk(KERN_DEBUG "Port type setting for monitor mode "
+- "failed\n");
+- return -EOPNOTSUPP;
+- }
+-
+- /* Host decrypt is needed to get the IV and ICV fields;
+- * however, monitor mode seems to remove WEP flag from frame
+- * control field */
+- if (hostap_set_word(dev, HFA384X_RID_CNFWEPFLAGS,
+- HFA384X_WEPFLAGS_HOSTENCRYPT |
+- HFA384X_WEPFLAGS_HOSTDECRYPT)) {
+- printk(KERN_DEBUG "WEP flags setting failed\n");
+- return -EOPNOTSUPP;
+- }
+-
+- if (local->func->reset_port(dev) ||
+- local->func->cmd(dev, HFA384X_CMDCODE_TEST |
+- (HFA384X_TEST_MONITOR << 8),
+- 0, NULL, NULL)) {
+- printk(KERN_DEBUG "Setting monitor mode failed\n");
+- return -EOPNOTSUPP;
+- }
+-
+- return 0;
++ return local->func->reset_port(dev);
+ }
+
+
+@@ -1199,7 +1173,7 @@
+ local->iw_mode = *mode;
+
+ if (local->iw_mode == IW_MODE_MONITOR)
+- hostap_monitor_mode_enable(local);
++ return hostap_monitor_mode_enable(local);
+ else if (local->iw_mode == IW_MODE_MASTER && !local->host_encrypt &&
+ !local->fw_encrypt_ok) {
+ printk(KERN_DEBUG "%s: defaulting to host-based encryption as "
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_main.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_main.c
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_main.c 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_main.c 2006-09-21 01:30:18.000000000 -0400
+@@ -331,7 +331,7 @@
+ if (local->iw_mode == IW_MODE_REPEAT)
+ return HFA384X_PORTTYPE_WDS;
+ if (local->iw_mode == IW_MODE_MONITOR)
+- return HFA384X_PORTTYPE_PSEUDO_IBSS;
++ return 5; /*HFA384X_PORTTYPE_PSEUDO_IBSS;*/
+ return HFA384X_PORTTYPE_HOSTAP;
+ }
+
+Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_main.c.orig
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_pci.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_pci.c
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_pci.c 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_pci.c 2006-09-21 01:30:18.000000000 -0400
+@@ -48,6 +48,8 @@
+ { 0x1260, 0x3873, PCI_ANY_ID, PCI_ANY_ID },
+ /* Samsung MagicLAN SWL-2210P */
+ { 0x167d, 0xa000, PCI_ANY_ID, PCI_ANY_ID },
++ /* NETGEAR MA311 */
++ { 0x1385, 0x3872, PCI_ANY_ID, PCI_ANY_ID },
+ { 0 }
+ };
+
+Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_pci.c.orig
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_plx.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_plx.c
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_plx.c 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_plx.c 2006-09-21 01:30:18.000000000 -0400
+@@ -101,6 +101,7 @@
+ { 0xc250, 0x0002 } /* EMTAC A2424i */,
+ { 0xd601, 0x0002 } /* Z-Com XI300 */,
+ { 0xd601, 0x0005 } /* Zcomax XI-325H 200mW */,
++ { 0xd601, 0x0010 } /* Zcomax XI-325H 100mW */,
+ { 0, 0}
+ };
+
+Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_plx.c.orig
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_wlan.h linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_wlan.h
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_wlan.h 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_wlan.h 2006-09-21 01:30:18.000000000 -0400
+@@ -575,6 +575,7 @@
+ int (*hw_config)(struct net_device *dev, int initial);
+ void (*hw_reset)(struct net_device *dev);
+ void (*hw_shutdown)(struct net_device *dev, int no_disable);
++ int (*monitor_enable)(struct net_device *dev);
+ int (*reset_port)(struct net_device *dev);
+ void (*schedule_reset)(local_info_t *local);
+ int (*download)(local_info_t *local,
diff --git a/packages/linux/linux-rp-2.6.18/orinoco-remove-all-which-are-in-hostap-HACK.patch b/packages/linux/linux-rp-2.6.20/orinoco-remove-all-which-are-in-hostap-HACK.patch
index 380349f809..380349f809 100644
--- a/packages/linux/linux-rp-2.6.18/orinoco-remove-all-which-are-in-hostap-HACK.patch
+++ b/packages/linux/linux-rp-2.6.20/orinoco-remove-all-which-are-in-hostap-HACK.patch
diff --git a/packages/linux/linux-rp-2.6.20/pxa-serial-hack.patch b/packages/linux/linux-rp-2.6.20/pxa-serial-hack.patch
new file mode 100644
index 0000000000..bf20f46a05
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/pxa-serial-hack.patch
@@ -0,0 +1,90 @@
+---
+ drivers/serial/8250.c | 5 +++++
+ drivers/serial/serial_core.c | 1 +
+ drivers/serial/serial_cs.c | 12 +++++++++---
+ include/linux/serial_core.h | 1 +
+ 4 files changed, 16 insertions(+), 3 deletions(-)
+
+Index: linux-2.6.20/drivers/serial/8250.c
+===================================================================
+--- linux-2.6.20.orig/drivers/serial/8250.c 2007-04-27 13:37:26.000000000 +0100
++++ linux-2.6.20/drivers/serial/8250.c 2007-04-27 13:38:16.000000000 +0100
+@@ -2429,7 +2429,12 @@
+ .driver_name = "serial",
+ .dev_name = "ttyS",
+ .major = TTY_MAJOR,
++#ifdef CONFIG_SERIAL_PXA
++ .minor = 64 + 4,
++ .name_base = 4,
++#else
+ .minor = 64,
++#endif
+ .nr = UART_NR,
+ .cons = SERIAL8250_CONSOLE,
+ };
+Index: linux-2.6.20/drivers/serial/serial_core.c
+===================================================================
+--- linux-2.6.20.orig/drivers/serial/serial_core.c 2007-02-04 18:44:54.000000000 +0000
++++ linux-2.6.20/drivers/serial/serial_core.c 2007-04-27 13:39:39.000000000 +0100
+@@ -2068,7 +2068,8 @@
+ printk(KERN_INFO "%s%s%s%d at %s (irq = %d) is a %s\n",
+ port->dev ? port->dev->bus_id : "",
+ port->dev ? ": " : "",
+- drv->dev_name, port->line, address, port->irq, uart_type(port));
++ drv->dev_name, port->line + drv->name_base, address, port->irq,
++ uart_type(port));
+ }
+
+ static void
+@@ -2183,6 +2184,7 @@
+ normal->owner = drv->owner;
+ normal->driver_name = drv->driver_name;
+ normal->name = drv->dev_name;
++ normal->name_base = drv->name_base;
+ normal->major = drv->major;
+ normal->minor_start = drv->minor;
+ normal->type = TTY_DRIVER_TYPE_SERIAL;
+Index: linux-2.6.20/include/linux/serial_core.h
+===================================================================
+--- linux-2.6.20.orig/include/linux/serial_core.h 2007-02-04 18:44:54.000000000 +0000
++++ linux-2.6.20/include/linux/serial_core.h 2007-04-27 13:37:27.000000000 +0100
+@@ -341,6 +341,7 @@
+ struct module *owner;
+ const char *driver_name;
+ const char *dev_name;
++ int name_base;
+ int major;
+ int minor;
+ int nr;
+Index: linux-2.6.20/drivers/serial/serial_cs.c
+===================================================================
+--- linux-2.6.20.orig/drivers/serial/serial_cs.c 2007-02-04 18:44:54.000000000 +0000
++++ linux-2.6.20/drivers/serial/serial_cs.c 2007-04-27 13:40:34.000000000 +0100
+@@ -390,7 +390,7 @@
+ kio_addr_t iobase, int irq)
+ {
+ struct uart_port port;
+- int line;
++ int line, linestart;
+
+ memset(&port, 0, sizeof (struct uart_port));
+ port.iobase = iobase;
+@@ -411,10 +411,16 @@
+ return -EINVAL;
+ }
+
++#if CONFIG_SERIAL_PXA
++ linestart = 4;
++#else
++ linestart = 0;
++#endif
++
+ info->line[info->ndev] = line;
+- sprintf(info->node[info->ndev].dev_name, "ttyS%d", line);
++ sprintf(info->node[info->ndev].dev_name, "ttyS%d", line+linestart);
+ info->node[info->ndev].major = TTY_MAJOR;
+- info->node[info->ndev].minor = 0x40 + line;
++ info->node[info->ndev].minor = 0x40 + line + linestart;
+ if (info->ndev > 0)
+ info->node[info->ndev - 1].next = &info->node[info->ndev];
+ info->ndev++;
diff --git a/packages/linux/linux-rp-2.6.18/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch b/packages/linux/linux-rp-2.6.20/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
index 18bf4268fc..18bf4268fc 100644
--- a/packages/linux/linux-rp-2.6.18/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
+++ b/packages/linux/linux-rp-2.6.20/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
diff --git a/packages/linux/linux-rp-2.6.20/sharpsl-rc-r1.patch b/packages/linux/linux-rp-2.6.20/sharpsl-rc-r1.patch
new file mode 100644
index 0000000000..8230d53392
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/sharpsl-rc-r1.patch
@@ -0,0 +1,519 @@
+Index: linux-2.6.20/arch/arm/mach-pxa/spitz.c
+===================================================================
+--- linux-2.6.20.orig/arch/arm/mach-pxa/spitz.c
++++ linux-2.6.20/arch/arm/mach-pxa/spitz.c
+@@ -244,6 +244,13 @@ static struct platform_device spitzkbd_d
+ .id = -1,
+ };
+
++/*
++ * Spitz Remote Control Device
++ */
++static struct platform_device sharpsl_rc_device = {
++ .name = "sharpsl-remote-control",
++ .id = -1,
++};
+
+ /*
+ * Spitz LEDs
+@@ -476,6 +483,7 @@ static struct platform_device *devices[]
+ &spitzscoop_device,
+ &spitzssp_device,
+ &spitzkbd_device,
++ &sharpsl_rc_device,
+ &spitzts_device,
+ &spitzbl_device,
+ &spitzled_device,
+Index: linux-2.6.20/drivers/input/keyboard/Kconfig
+===================================================================
+--- linux-2.6.20.orig/drivers/input/keyboard/Kconfig
++++ linux-2.6.20/drivers/input/keyboard/Kconfig
+@@ -154,6 +154,17 @@ config KEYBOARD_SPITZ
+ To compile this driver as a module, choose M here: the
+ module will be called spitzkbd.
+
++config SHARPSL_RC
++ tristate "Sharp SL-Cxx00 Remote Control"
++ depends on PXA_SHARPSL
++ default y
++ help
++ Say Y here to enable the remote on the Sharp Zaurus SL-Cxx00,
++ SL-C1000, SL-C3000 and Sl-C3100 series of PDAs.
++
++ To compile this driver as a module, choose M here: the
++ module will be called sharpsl_rc.
++
+ config KEYBOARD_AMIGA
+ tristate "Amiga keyboard"
+ depends on AMIGA
+Index: linux-2.6.20/drivers/input/keyboard/Makefile
+===================================================================
+--- linux-2.6.20.orig/drivers/input/keyboard/Makefile
++++ linux-2.6.20/drivers/input/keyboard/Makefile
+@@ -14,6 +14,7 @@ obj-$(CONFIG_KEYBOARD_NEWTON) += newton
+ obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o
+ obj-$(CONFIG_KEYBOARD_CORGI) += corgikbd.o
+ obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o
++obj-$(CONFIG_SHARPSL_RC) += sharpsl_rc.o
+ obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o
+ obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
+ obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
+Index: linux-2.6.20/drivers/input/keyboard/sharpsl_rc.c
+===================================================================
+--- /dev/null
++++ linux-2.6.20/drivers/input/keyboard/sharpsl_rc.c
+@@ -0,0 +1,291 @@
++/*
++ * Keyboard driver for Sharp Clamshell Models (SL-Cxx00)
++ *
++ * Copyright (c) 2004-2005 Richard Purdie
++ *
++ * Based on corgikbd.c and Sharp's RC driver
++ *
++ * 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.
++ *
++ */
++
++#define DEBUG 1
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++#include <linux/init.h>
++#include <linux/input.h>
++#include <linux/interrupt.h>
++#include <linux/jiffies.h>
++#include <linux/module.h>
++#include <linux/slab.h>
++
++#ifdef CONFIG_MACH_SPITZ
++#include <asm/arch/spitz.h>
++#endif
++#ifdef CONFIG_MACH_CORGI
++#include <asm/arch/corgi.h>
++#endif
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/hardware/scoop.h>
++#include <asm/arch/sharpsl.h>
++#include <asm/hardware/sharpsl_pm.h>
++
++#define DPRINTK(fmt, args...) dev_dbg(data->dev, fmt "\n", ##args)
++
++struct remote_control_key {
++ unsigned char min;
++ unsigned char max;
++ unsigned char key;
++};
++
++#ifdef CONFIG_MACH_SPITZ
++#define REMOTE_AKIN_PULLUP SPITZ_SCP2_AKIN_PULLUP
++#define REMOTE_SCOOP_DEVICE spitzscoop2_device
++#define REMOTE_GPIO_INT SPITZ_GPIO_AK_INT
++#define REMOTE_IRQ_INT SPITZ_IRQ_GPIO_AK_INT
++static struct remote_control_key remote_keys[] = {
++ { 25, 35, KEY_STOPCD},
++ { 55, 65, KEY_PLAYPAUSE},
++ { 85, 95, KEY_NEXTSONG},
++ { 115, 125, KEY_VOLUMEUP},
++ { 145, 155, KEY_PREVIOUSSONG},
++ { 180, 190, KEY_MUTE},
++ { 215, 225, KEY_VOLUMEDOWN},
++};
++#endif
++#ifdef CONFIG_MACH_CORGI
++#define REMOTE_AKIN_PULLUP CORGI_SCP_AKIN_PULLUP
++#define REMOTE_SCOOP_DEVICE corgiscoop_device
++#define REMOTE_GPIO_INT CORGI_GPIO_AK_INT
++#define REMOTE_IRQ_INT CORGI_IRQ_GPIO_AK_INT
++static struct remote_control_key remote_keys[] = {
++ //These need to be fixed for the CE-RH1's values
++ { 25, 35, KEY_STOPCD},
++ { 55, 65, KEY_PLAYPAUSE},
++ { 85, 95, KEY_NEXTSONG},
++ { 115, 125, KEY_VOLUMEUP},
++ { 145, 155, KEY_PREVIOUSSONG},
++ { 180, 190, KEY_MUTE},
++ { 215, 225, KEY_VOLUMEDOWN},
++};
++#endif
++
++#define RELEASE_HI 230
++#define MAX_EARPHONE 6
++#define RC_POLL_MS 10
++#define RC_FINISH_MS 500
++#define WAIT_STATE 3
++#define NOISE_THRESHOLD 100
++
++struct sharpsl_rc {
++ struct input_dev *input;
++ struct device *dev;
++
++ spinlock_t lock;
++ struct timer_list rctimer;
++ struct timer_list rctimer_finish;
++
++ unsigned int handling_press;
++ unsigned int noise;
++ unsigned int state;
++ unsigned int last_key;
++};
++
++static int get_remocon_raw(void)
++{
++ int i, val;
++
++ val = sharpsl_pm_pxa_read_max1111(MAX1111_REMCOM);
++ for (i = 0; i < ARRAY_SIZE(remote_keys); ++i) {
++ if (val >= remote_keys[i].min
++ && val <= remote_keys[i].max) {
++ printk("get_remocon_raw: VAL=%i, KEY=%i\n", val, remote_keys[i].key);
++ return remote_keys[i].key;
++ }
++ }
++ return 0;
++}
++
++static irqreturn_t sharpsl_rc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct sharpsl_rc *data = dev_id;
++ DPRINTK("sharpsl_rc_interrupt %d\n", irq);
++ if (!data->handling_press) {
++ DPRINTK("handling interrupt");
++ data->handling_press = 1;
++ data->noise = 0;
++ data->state = 0;
++ data->last_key = 0;
++
++ reset_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
++
++ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
++ }
++ return IRQ_HANDLED;
++}
++
++static void sharpsl_rc_timer_callback(unsigned long dataPtr)
++{
++ struct sharpsl_rc *data = (struct sharpsl_rc *) dataPtr;
++ int timer = 1;
++ int key = get_remocon_raw();
++ DPRINTK("timer callback, key: %d", key);
++
++ //wait for value to stabilize
++ if (data->state < WAIT_STATE) {
++ if (data->last_key != key) {
++ ++data->noise;
++ if (data->noise > NOISE_THRESHOLD) {
++ DPRINTK("too much noise, bailing");
++ timer = 0;
++ }
++ data->state = 0;
++ } else {
++ ++data->state;
++ }
++ data->last_key = key;
++
++ //stable value, send event
++ } else if (data->state == WAIT_STATE) {
++ data->noise = 0;
++ //non-key returned, skip the rest of the states and bail now
++ if (data->last_key == 0) {
++ DPRINTK("non-key detected %d, noise: %d", data->last_key, data->noise);
++ timer = 0;
++ //send button press
++ } else {
++ DPRINTK("key press detected %d, noise %d", data->last_key, data->noise);
++ input_report_key(data->input, data->last_key, 1);
++ }
++ ++data->state;
++
++ //wait until key is released
++ } else if (data->state < WAIT_STATE * 2) {
++ if (key == data->last_key
++ && data->noise < NOISE_THRESHOLD) {
++ data->state = WAIT_STATE + 1;
++ ++data->noise;
++ } else {
++ ++data->state;
++ }
++ //key is released, send event
++ } else {
++ //send button release
++ DPRINTK("release key %d", data->last_key);
++ input_report_key(data->input, data->last_key, 0);
++ timer = 0;
++ }
++ if (timer) {
++ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
++ } else {
++ set_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
++ data->handling_press = 0;
++ }
++}
++
++static int __init sharpsl_rc_probe(struct platform_device *pdev)
++{
++ struct sharpsl_rc *sharpsl_rc;
++ struct input_dev *input_dev;
++ int i, ret;
++
++ dev_dbg(&pdev->dev, "sharpsl_rc_probe\n");
++
++ sharpsl_rc = kzalloc(sizeof(struct sharpsl_rc), GFP_KERNEL);
++ input_dev = input_allocate_device();
++ if (!sharpsl_rc || !input_dev) {
++ kfree(sharpsl_rc);
++ input_free_device(input_dev);
++ return -ENOMEM;
++ }
++
++ platform_set_drvdata(pdev, sharpsl_rc);
++
++ sharpsl_rc->dev = &pdev->dev;
++ sharpsl_rc->input = input_dev;
++ spin_lock_init(&sharpsl_rc->lock);
++
++ /* Init Remote Control Timer */
++ init_timer(&sharpsl_rc->rctimer);
++ sharpsl_rc->rctimer.function = sharpsl_rc_timer_callback;
++ sharpsl_rc->rctimer.data = (unsigned long) sharpsl_rc;
++
++ input_dev->name = "Sharp Remote Control CE-RHX";
++ input_dev->phys = "sharpsl_rc/input0";
++ input_dev->id.bustype = BUS_HOST;
++ input_dev->id.vendor = 0x0001;
++ input_dev->id.product = 0x0001;
++ input_dev->id.version = 0x0100;
++ input_dev->cdev.dev = &pdev->dev;
++ input_dev->private = sharpsl_rc;
++
++ input_dev->evbit[0] = BIT(EV_KEY);
++
++ for (i = 0; i <= ARRAY_SIZE(remote_keys); i++)
++ set_bit(remote_keys[i].key, input_dev->keybit);
++
++ input_register_device(sharpsl_rc->input);
++
++ pxa_gpio_mode(REMOTE_GPIO_INT | GPIO_IN);
++ ret = request_irq(REMOTE_IRQ_INT,
++ sharpsl_rc_interrupt,
++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_SHARED,
++ "sharpsl_rc",
++ sharpsl_rc);
++ if (ret < 0) {
++ dev_dbg(&pdev->dev, "Can't get IRQ: %d!\n", i);
++ kfree(sharpsl_rc);
++ input_free_device(input_dev);
++ return ret;
++ }
++
++ return 0;
++}
++
++static int sharpsl_rc_remove(struct platform_device *pdev)
++{
++ struct sharpsl_rc *sharpsl_rc = platform_get_drvdata(pdev);
++
++ dev_dbg(&pdev->dev, "sharpsl_rc_remove\n");
++
++ free_irq(REMOTE_IRQ_INT, sharpsl_rc);
++ del_timer_sync(&sharpsl_rc->rctimer);
++ input_unregister_device(sharpsl_rc->input);
++ kfree(sharpsl_rc);
++
++ return 0;
++}
++
++static struct platform_driver sharpsl_rc_driver = {
++ .probe = sharpsl_rc_probe,
++ .remove = sharpsl_rc_remove,
++ .suspend = NULL,
++ .resume = NULL,
++ .driver = {
++ .name = "sharpsl-remote-control",
++ },
++};
++
++static int __devinit sharpsl_rc_init(void)
++{
++ printk("sharpsl_rc_init\n");
++ return platform_driver_register(&sharpsl_rc_driver);
++}
++
++static void __exit sharpsl_rc_exit(void)
++{
++ printk("sharpsl_rc_exit\n");
++ platform_driver_unregister(&sharpsl_rc_driver);
++}
++
++module_init(sharpsl_rc_init);
++module_exit(sharpsl_rc_exit);
++
++MODULE_AUTHOR("Justin Patrin <papercrane@reversefold.com>");
++MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>");
++MODULE_DESCRIPTION("SharpSL Remote Control Driver");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.20/drivers/input/keyboard/spitzkbd.c
+===================================================================
+--- linux-2.6.20.orig/drivers/input/keyboard/spitzkbd.c
++++ linux-2.6.20/drivers/input/keyboard/spitzkbd.c
+@@ -19,6 +19,7 @@
+ #include <linux/jiffies.h>
+ #include <linux/module.h>
+ #include <linux/slab.h>
++#include <linux/kmod.h>
+
+ #include <asm/arch/spitz.h>
+ #include <asm/arch/hardware.h>
+@@ -279,13 +280,21 @@ static irqreturn_t spitzkbd_hinge_isr(in
+ static int sharpsl_hinge_state;
+ static int hinge_count;
+
++void spitzkbd_handle_sharpsl_rc(void *arg) {
++ request_module("sharpsl_rc");
++}
++
++DECLARE_WORK(spitzkbd_work, spitzkbd_handle_sharpsl_rc);
++
+ static void spitzkbd_hinge_timer(unsigned long data)
+ {
+ struct spitzkbd *spitzkbd_data = (struct spitzkbd *) data;
+ unsigned long state;
+ unsigned long flags;
++ unsigned int headphone, remote;
+
+ state = GPLR(SPITZ_GPIO_SWA) & (GPIO_bit(SPITZ_GPIO_SWA)|GPIO_bit(SPITZ_GPIO_SWB));
++ state |= (GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN));
+ state |= (GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT));
+ if (state != sharpsl_hinge_state) {
+ hinge_count = 0;
+@@ -299,9 +308,18 @@ static void spitzkbd_hinge_timer(unsigne
+
+ input_report_switch(spitzkbd_data->input, SW_LID, ((GPLR(SPITZ_GPIO_SWA) & GPIO_bit(SPITZ_GPIO_SWA)) != 0));
+ input_report_switch(spitzkbd_data->input, SW_TABLET_MODE, ((GPLR(SPITZ_GPIO_SWB) & GPIO_bit(SPITZ_GPIO_SWB)) != 0));
+- input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) != 0));
++
++ headphone = ((GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN)) != 0);
++ input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, headphone);
++
++ remote = headphone && ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) == 0);
++ input_report_switch(spitzkbd_data->input, SW_REMOTE_INSERT, remote);
+ input_sync(spitzkbd_data->input);
+
++ if (remote) {
++ schedule_work(&spitzkbd_work);
++ }
++
+ spin_unlock_irqrestore(&spitzkbd_data->lock, flags);
+ } else {
+ mod_timer(&spitzkbd_data->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
+@@ -394,6 +412,7 @@ static int __init spitzkbd_probe(struct
+ set_bit(SW_LID, input_dev->swbit);
+ set_bit(SW_TABLET_MODE, input_dev->swbit);
+ set_bit(SW_HEADPHONE_INSERT, input_dev->swbit);
++ set_bit(SW_REMOTE_INSERT, input_dev->swbit);
+
+ err = input_register_device(input_dev);
+ if (err)
+@@ -431,9 +450,12 @@ static int __init spitzkbd_probe(struct
+ request_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd_hinge_isr,
+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
+ "Spitzkbd SWB", spitzkbd);
+- request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
++ request_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd_hinge_isr,
+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
+ "Spitzkbd HP", spitzkbd);
++ request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
++ "Spitzkbd HP Type", spitzkbd);
+
+ return 0;
+
+@@ -454,6 +476,7 @@ static int spitzkbd_remove(struct platfo
+ free_irq(SPITZ_IRQ_GPIO_ON_KEY, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_SWA, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd);
++ free_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd);
+
+ del_timer_sync(&spitzkbd->htimer);
+Index: linux-2.6.20/arch/arm/mach-pxa/sharpsl.h
+===================================================================
+--- linux-2.6.20.orig/arch/arm/mach-pxa/sharpsl.h
++++ linux-2.6.20/arch/arm/mach-pxa/sharpsl.h
+@@ -50,15 +50,10 @@ void spitz_wait_hsync(void);
+
+ #define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x))
+
+-/* MAX1111 Channel Definitions */
+-#define MAX1111_BATT_VOLT 4u
+-#define MAX1111_BATT_TEMP 2u
+-#define MAX1111_ACIN_VOLT 6u
+-
+ extern struct battery_thresh spitz_battery_levels_acin[];
+ extern struct battery_thresh spitz_battery_levels_noac[];
+ void sharpsl_pm_pxa_init(void);
+ void sharpsl_pm_pxa_remove(void);
+-int sharpsl_pm_pxa_read_max1111(int channel);
++
+
+
+Index: linux-2.6.20/arch/arm/mach-pxa/sharpsl_pm.c
+===================================================================
+--- linux-2.6.20.orig/arch/arm/mach-pxa/sharpsl_pm.c
++++ linux-2.6.20/arch/arm/mach-pxa/sharpsl_pm.c
+@@ -135,6 +135,8 @@ int sharpsl_pm_pxa_read_max1111(int chan
+ | MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR);
+ }
+
++EXPORT_SYMBOL(sharpsl_pm_pxa_read_max1111);
++
+ void sharpsl_pm_pxa_init(void)
+ {
+ pxa_gpio_mode(sharpsl_pm.machinfo->gpio_acin | GPIO_IN);
+Index: linux-2.6.20/include/asm-arm/hardware/sharpsl_pm.h
+===================================================================
+--- linux-2.6.20.orig/include/asm-arm/hardware/sharpsl_pm.h
++++ linux-2.6.20/include/asm-arm/hardware/sharpsl_pm.h
+@@ -104,3 +104,10 @@ irqreturn_t sharpsl_ac_isr(int irq, void
+ irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id);
+ irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id);
+
++/* MAX1111 Channel Definitions */
++#define MAX1111_REMCOM 0u
++#define MAX1111_BATT_VOLT 4u
++#define MAX1111_BATT_TEMP 2u
++#define MAX1111_ACIN_VOLT 6u
++
++int sharpsl_pm_pxa_read_max1111(int channel);
+Index: linux-2.6.20/include/linux/input.h
+===================================================================
+--- linux-2.6.20.orig/include/linux/input.h
++++ linux-2.6.20/include/linux/input.h
+@@ -602,6 +602,7 @@ struct input_absinfo {
+ #define SW_LID 0x00 /* set = lid shut */
+ #define SW_TABLET_MODE 0x01 /* set = tablet mode */
+ #define SW_HEADPHONE_INSERT 0x02 /* set = inserted */
++#define SW_REMOTE_INSERT 0x04 /* set = remote */
+ #define SW_MAX 0x0f
+
+ /*
+Index: linux-2.6.20/arch/arm/mach-pxa/spitz_pm.c
+===================================================================
+--- linux-2.6.20.orig/arch/arm/mach-pxa/spitz_pm.c
++++ linux-2.6.20/arch/arm/mach-pxa/spitz_pm.c
+@@ -161,6 +161,13 @@ static int spitz_should_wakeup(unsigned
+ if (resume_on_alarm && (PEDR & PWER_RTC))
+ is_resume |= PWER_RTC;
+
++ printk("wakeup: PEDR: %x, PKSR: %x, HP_IN: %x, AK_INT: %x\n", PEDR, PKSR, GPIO_bit(SPITZ_GPIO_HP_IN), GPIO_bit(SPITZ_GPIO_AK_INT));
++
++ //remote/headphone interrupt, wakeup
++ if (PEDR == 0 && (PKSR & 0xc0d01) != 0) {
++ is_resume |= PWER_RTC;
++ }
++
+ dev_dbg(sharpsl_pm.dev, "is_resume: %x\n",is_resume);
+ return is_resume;
+ }
diff --git a/packages/linux/linux-rp-2.6.20/squashfs3.0-2.6.15.patch b/packages/linux/linux-rp-2.6.20/squashfs3.0-2.6.15.patch
new file mode 100644
index 0000000000..405d4ec124
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/squashfs3.0-2.6.15.patch
@@ -0,0 +1,4191 @@
+ fs/Kconfig | 65 +
+ fs/Makefile | 1
+ fs/squashfs/Makefile | 7
+ fs/squashfs/inode.c | 2124 +++++++++++++++++++++++++++++++++++++++++
+ fs/squashfs/squashfs.h | 86 +
+ fs/squashfs/squashfs2_0.c | 757 ++++++++++++++
+ include/linux/squashfs_fs.h | 911 +++++++++++++++++
+ include/linux/squashfs_fs_i.h | 45
+ include/linux/squashfs_fs_sb.h | 74 +
+ init/do_mounts_rd.c | 13
+ 10 files changed, 4083 insertions(+)
+
+Index: git/fs/Kconfig
+===================================================================
+--- git.orig/fs/Kconfig 2006-10-31 16:09:22.000000000 +0000
++++ git/fs/Kconfig 2006-10-31 21:26:45.000000000 +0000
+@@ -1407,6 +1407,71 @@ config CRAMFS
+
+ If unsure, say N.
+
++config SQUASHFS
++ tristate "SquashFS 3.0 - Squashed file system support"
++ select ZLIB_INFLATE
++ help
++ Saying Y here includes support for SquashFS 3.0 (a Compressed Read-Only File
++ System). Squashfs is a highly compressed read-only filesystem for Linux.
++ It uses zlib compression to compress both files, inodes and directories.
++ Inodes in the system are very small and all blocks are packed to minimise
++ data overhead. Block sizes greater than 4K are supported up to a maximum of 64K.
++ SquashFS 3.0 supports 64 bit filesystems and files (larger than 4GB), full
++ uid/gid information, hard links and timestamps.
++
++ Squashfs is intended for general read-only filesystem use, for archival
++ use (i.e. in cases where a .tar.gz file may be used), and in embedded
++ systems where low overhead is needed. Further information and filesystem tools
++ are available from http://squashfs.sourceforge.net.
++
++ If you want to compile this as a module ( = code which can be
++ inserted in and removed from the running kernel whenever you want),
++ say M here and read <file:Documentation/modules.txt>. The module
++ will be called squashfs. Note that the root file system (the one
++ containing the directory /) cannot be compiled as a module.
++
++ If unsure, say N.
++
++config SQUASHFS_EMBEDDED
++
++ bool "Additional options for memory-constrained systems"
++ depends on SQUASHFS
++ default n
++ help
++ Saying Y here allows you to specify cache sizes and how Squashfs
++ allocates memory. This is only intended for memory constrained
++ systems.
++
++ If unsure, say N.
++
++config SQUASHFS_FRAGMENT_CACHE_SIZE
++ int "Number of fragments cached" if SQUASHFS_EMBEDDED
++ depends on SQUASHFS
++ default "3"
++ help
++ By default SquashFS caches the last 3 fragments read from
++ the filesystem. Increasing this amount may mean SquashFS
++ has to re-read fragments less often from disk, at the expense
++ of extra system memory. Decreasing this amount will mean
++ SquashFS uses less memory at the expense of extra reads from disk.
++
++ Note there must be at least one cached fragment. Anything
++ much more than three will probably not make much difference.
++
++config SQUASHFS_VMALLOC
++ bool "Use Vmalloc rather than Kmalloc" if SQUASHFS_EMBEDDED
++ depends on SQUASHFS
++ default n
++ help
++ By default SquashFS uses kmalloc to obtain fragment cache memory.
++ Kmalloc memory is the standard kernel allocator, but it can fail
++ on memory constrained systems. Because of the way Vmalloc works,
++ Vmalloc can succeed when kmalloc fails. Specifying this option
++ will make SquashFS always use Vmalloc to allocate the
++ fragment cache memory.
++
++ If unsure, say N.
++
+ config VXFS_FS
+ tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
+ depends on BLOCK
+Index: git/fs/Makefile
+===================================================================
+--- git.orig/fs/Makefile 2006-10-31 16:09:22.000000000 +0000
++++ git/fs/Makefile 2006-10-31 21:26:45.000000000 +0000
+@@ -67,6 +67,7 @@ obj-$(CONFIG_JBD) += jbd/
+ obj-$(CONFIG_JBD2) += jbd2/
+ obj-$(CONFIG_EXT2_FS) += ext2/
+ obj-$(CONFIG_CRAMFS) += cramfs/
++obj-$(CONFIG_SQUASHFS) += squashfs/
+ obj-$(CONFIG_RAMFS) += ramfs/
+ obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
+ obj-$(CONFIG_CODA_FS) += coda/
+Index: git/fs/squashfs/inode.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/fs/squashfs/inode.c 2006-11-01 18:01:32.000000000 +0000
+@@ -0,0 +1,2124 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * inode.c
++ */
++
++#include <linux/types.h>
++#include <linux/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/errno.h>
++#include <linux/slab.h>
++#include <linux/fs.h>
++#include <linux/smp_lock.h>
++#include <linux/slab.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.h>
++#include <linux/buffer_head.h>
++#include <linux/vfs.h>
++#include <linux/init.h>
++#include <linux/dcache.h>
++#include <linux/wait.h>
++#include <linux/zlib.h>
++#include <linux/blkdev.h>
++#include <linux/vmalloc.h>
++#include <asm/uaccess.h>
++#include <asm/semaphore.h>
++
++#include "squashfs.h"
++
++static void squashfs_put_super(struct super_block *);
++static int squashfs_statfs(struct dentry *, struct kstatfs *);
++static int squashfs_symlink_readpage(struct file *file, struct page *page);
++static int squashfs_readpage(struct file *file, struct page *page);
++static int squashfs_readpage4K(struct file *file, struct page *page);
++static int squashfs_readdir(struct file *, void *, filldir_t);
++static struct inode *squashfs_alloc_inode(struct super_block *sb);
++static void squashfs_destroy_inode(struct inode *inode);
++static int init_inodecache(void);
++static void destroy_inodecache(void);
++static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
++ struct nameidata *);
++static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode);
++static long long read_blocklist(struct inode *inode, int index,
++ int readahead_blks, char *block_list,
++ unsigned short **block_p, unsigned int *bsize);
++static int squashfs_get_sb(struct file_system_type *, int,
++ const char *, void *, struct vfsmount *);
++
++
++static z_stream stream;
++
++static struct file_system_type squashfs_fs_type = {
++ .owner = THIS_MODULE,
++ .name = "squashfs",
++ .get_sb = squashfs_get_sb,
++ .kill_sb = kill_block_super,
++ .fs_flags = FS_REQUIRES_DEV
++};
++
++static unsigned char squashfs_filetype_table[] = {
++ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
++};
++
++static struct super_operations squashfs_ops = {
++ .alloc_inode = squashfs_alloc_inode,
++ .destroy_inode = squashfs_destroy_inode,
++ .statfs = squashfs_statfs,
++ .put_super = squashfs_put_super,
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_symlink_aops = {
++ .readpage = squashfs_symlink_readpage
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_aops = {
++ .readpage = squashfs_readpage
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_aops_4K = {
++ .readpage = squashfs_readpage4K
++};
++
++static struct file_operations squashfs_dir_ops = {
++ .read = generic_read_dir,
++ .readdir = squashfs_readdir
++};
++
++SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
++ .lookup = squashfs_lookup
++};
++
++
++static struct buffer_head *get_block_length(struct super_block *s,
++ int *cur_index, int *offset, int *c_byte)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ unsigned short temp;
++ struct buffer_head *bh;
++
++ if (!(bh = sb_bread(s, *cur_index)))
++ goto out;
++
++ if (msblk->devblksize - *offset == 1) {
++ if (msblk->swap)
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ (bh->b_data + *offset));
++ else
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ (bh->b_data + *offset));
++ brelse(bh);
++ if (!(bh = sb_bread(s, ++(*cur_index))))
++ goto out;
++ if (msblk->swap)
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ bh->b_data);
++ else
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ bh->b_data);
++ *c_byte = temp;
++ *offset = 1;
++ } else {
++ if (msblk->swap) {
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ (bh->b_data + *offset));
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ (bh->b_data + *offset + 1));
++ } else {
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ (bh->b_data + *offset));
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ (bh->b_data + *offset + 1));
++ }
++ *c_byte = temp;
++ *offset += 2;
++ }
++
++ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) {
++ if (*offset == msblk->devblksize) {
++ brelse(bh);
++ if (!(bh = sb_bread(s, ++(*cur_index))))
++ goto out;
++ *offset = 0;
++ }
++ if (*((unsigned char *) (bh->b_data + *offset)) !=
++ SQUASHFS_MARKER_BYTE) {
++ ERROR("Metadata block marker corrupt @ %x\n",
++ *cur_index);
++ brelse(bh);
++ goto out;
++ }
++ (*offset)++;
++ }
++ return bh;
++
++out:
++ return NULL;
++}
++
++
++SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer,
++ long long index, unsigned int length,
++ long long *next_index)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct buffer_head *bh[((SQUASHFS_FILE_MAX_SIZE - 1) >>
++ msblk->devblksize_log2) + 2];
++ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1);
++ unsigned int cur_index = index >> msblk->devblksize_log2;
++ int bytes, avail_bytes, b = 0, k;
++ char *c_buffer;
++ unsigned int compressed;
++ unsigned int c_byte = length;
++
++ if (c_byte) {
++ bytes = msblk->devblksize - offset;
++ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
++ c_buffer = compressed ? msblk->read_data : buffer;
++ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
++
++ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
++ ? "" : "un", (unsigned int) c_byte);
++
++ if (!(bh[0] = sb_getblk(s, cur_index)))
++ goto block_release;
++
++ for (b = 1; bytes < c_byte; b++) {
++ if (!(bh[b] = sb_getblk(s, ++cur_index)))
++ goto block_release;
++ bytes += msblk->devblksize;
++ }
++ ll_rw_block(READ, b, bh);
++ } else {
++ if (!(bh[0] = get_block_length(s, &cur_index, &offset,
++ &c_byte)))
++ goto read_failure;
++
++ bytes = msblk->devblksize - offset;
++ compressed = SQUASHFS_COMPRESSED(c_byte);
++ c_buffer = compressed ? msblk->read_data : buffer;
++ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
++
++ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
++ ? "" : "un", (unsigned int) c_byte);
++
++ for (b = 1; bytes < c_byte; b++) {
++ if (!(bh[b] = sb_getblk(s, ++cur_index)))
++ goto block_release;
++ bytes += msblk->devblksize;
++ }
++ ll_rw_block(READ, b - 1, bh + 1);
++ }
++
++ if (compressed)
++ down(&msblk->read_data_mutex);
++
++ for (bytes = 0, k = 0; k < b; k++) {
++ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
++ msblk->devblksize - offset :
++ c_byte - bytes;
++ wait_on_buffer(bh[k]);
++ if (!buffer_uptodate(bh[k]))
++ goto block_release;
++ memcpy(c_buffer + bytes, bh[k]->b_data + offset, avail_bytes);
++ bytes += avail_bytes;
++ offset = 0;
++ brelse(bh[k]);
++ }
++
++ /*
++ * uncompress block
++ */
++ if (compressed) {
++ int zlib_err;
++
++ stream.next_in = c_buffer;
++ stream.avail_in = c_byte;
++ stream.next_out = buffer;
++ stream.avail_out = msblk->read_size;
++
++ if (((zlib_err = zlib_inflateInit(&stream)) != Z_OK) ||
++ ((zlib_err = zlib_inflate(&stream, Z_FINISH))
++ != Z_STREAM_END) || ((zlib_err =
++ zlib_inflateEnd(&stream)) != Z_OK)) {
++ ERROR("zlib_fs returned unexpected result 0x%x\n",
++ zlib_err);
++ bytes = 0;
++ } else
++ bytes = stream.total_out;
++
++ up(&msblk->read_data_mutex);
++ }
++
++ if (next_index)
++ *next_index = index + c_byte + (length ? 0 :
++ (SQUASHFS_CHECK_DATA(msblk->sblk.flags)
++ ? 3 : 2));
++ return bytes;
++
++block_release:
++ while (--b >= 0)
++ brelse(bh[b]);
++
++read_failure:
++ ERROR("sb_bread failed reading block 0x%x\n", cur_index);
++ return 0;
++}
++
++
++SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, char *buffer,
++ long long block, unsigned int offset,
++ int length, long long *next_block,
++ unsigned int *next_offset)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ int n, i, bytes, return_length = length;
++ long long next_index;
++
++ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset);
++
++ while ( 1 ) {
++ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
++ if (msblk->block_cache[i].block == block)
++ break;
++
++ down(&msblk->block_cache_mutex);
++
++ if (i == SQUASHFS_CACHED_BLKS) {
++ /* read inode header block */
++ for (i = msblk->next_cache, n = SQUASHFS_CACHED_BLKS;
++ n ; n --, i = (i + 1) %
++ SQUASHFS_CACHED_BLKS)
++ if (msblk->block_cache[i].block !=
++ SQUASHFS_USED_BLK)
++ break;
++
++ if (n == 0) {
++ wait_queue_t wait;
++
++ init_waitqueue_entry(&wait, current);
++ add_wait_queue(&msblk->waitq, &wait);
++ set_current_state(TASK_UNINTERRUPTIBLE);
++ up(&msblk->block_cache_mutex);
++ schedule();
++ set_current_state(TASK_RUNNING);
++ remove_wait_queue(&msblk->waitq, &wait);
++ continue;
++ }
++ msblk->next_cache = (i + 1) % SQUASHFS_CACHED_BLKS;
++
++ if (msblk->block_cache[i].block ==
++ SQUASHFS_INVALID_BLK) {
++ if (!(msblk->block_cache[i].data =
++ kmalloc(SQUASHFS_METADATA_SIZE,
++ GFP_KERNEL))) {
++ ERROR("Failed to allocate cache"
++ "block\n");
++ up(&msblk->block_cache_mutex);
++ goto out;
++ }
++ }
++
++ msblk->block_cache[i].block = SQUASHFS_USED_BLK;
++ up(&msblk->block_cache_mutex);
++
++ if (!(msblk->block_cache[i].length =
++ squashfs_read_data(s,
++ msblk->block_cache[i].data,
++ block, 0, &next_index))) {
++ ERROR("Unable to read cache block [%llx:%x]\n",
++ block, offset);
++ goto out;
++ }
++
++ down(&msblk->block_cache_mutex);
++ wake_up(&msblk->waitq);
++ msblk->block_cache[i].block = block;
++ msblk->block_cache[i].next_index = next_index;
++ TRACE("Read cache block [%llx:%x]\n", block, offset);
++ }
++
++ if (msblk->block_cache[i].block != block) {
++ up(&msblk->block_cache_mutex);
++ continue;
++ }
++
++ if ((bytes = msblk->block_cache[i].length - offset) >= length) {
++ if (buffer)
++ memcpy(buffer, msblk->block_cache[i].data +
++ offset, length);
++ if (msblk->block_cache[i].length - offset == length) {
++ *next_block = msblk->block_cache[i].next_index;
++ *next_offset = 0;
++ } else {
++ *next_block = block;
++ *next_offset = offset + length;
++ }
++ up(&msblk->block_cache_mutex);
++ goto finish;
++ } else {
++ if (buffer) {
++ memcpy(buffer, msblk->block_cache[i].data +
++ offset, bytes);
++ buffer += bytes;
++ }
++ block = msblk->block_cache[i].next_index;
++ up(&msblk->block_cache_mutex);
++ length -= bytes;
++ offset = 0;
++ }
++ }
++
++finish:
++ return return_length;
++out:
++ return 0;
++}
++
++
++static int get_fragment_location(struct super_block *s, unsigned int fragment,
++ long long *fragment_start_block,
++ unsigned int *fragment_size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ long long start_block =
++ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)];
++ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment);
++ struct squashfs_fragment_entry fragment_entry;
++
++ if (msblk->swap) {
++ struct squashfs_fragment_entry sfragment_entry;
++
++ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
++ start_block, offset,
++ sizeof(sfragment_entry), &start_block,
++ &offset))
++ goto out;
++ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry);
++ } else
++ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
++ start_block, offset,
++ sizeof(fragment_entry), &start_block,
++ &offset))
++ goto out;
++
++ *fragment_start_block = fragment_entry.start_block;
++ *fragment_size = fragment_entry.size;
++
++ return 1;
++
++out:
++ return 0;
++}
++
++
++SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, struct
++ squashfs_fragment_cache *fragment)
++{
++ down(&msblk->fragment_mutex);
++ fragment->locked --;
++ wake_up(&msblk->fragment_wait_queue);
++ up(&msblk->fragment_mutex);
++}
++
++
++SQSH_EXTERN struct squashfs_fragment_cache *get_cached_fragment(struct super_block
++ *s, long long start_block,
++ int length)
++{
++ int i, n, nf;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++
++ while ( 1 ) {
++ down(&msblk->fragment_mutex);
++
++ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS &&
++ msblk->fragment[i].block != start_block; i++);
++
++ if (i == SQUASHFS_CACHED_FRAGMENTS) {
++ nf = (msblk->next_fragment + 1) %
++ SQUASHFS_CACHED_FRAGMENTS;
++ for (i = msblk->next_fragment, n =
++ SQUASHFS_CACHED_FRAGMENTS; n &&
++ msblk->fragment[i].locked; n--, i = (i + 1) %
++ SQUASHFS_CACHED_FRAGMENTS);
++
++ if (n == 0) {
++ wait_queue_t wait;
++
++ init_waitqueue_entry(&wait, current);
++ add_wait_queue(&msblk->fragment_wait_queue,
++ &wait);
++ set_current_state(TASK_UNINTERRUPTIBLE);
++ up(&msblk->fragment_mutex);
++ schedule();
++ set_current_state(TASK_RUNNING);
++ remove_wait_queue(&msblk->fragment_wait_queue,
++ &wait);
++ continue;
++ }
++ msblk->next_fragment = nf;
++
++ if (msblk->fragment[i].data == NULL)
++ if (!(msblk->fragment[i].data = SQUASHFS_ALLOC
++ (SQUASHFS_FILE_MAX_SIZE))) {
++ ERROR("Failed to allocate fragment "
++ "cache block\n");
++ up(&msblk->fragment_mutex);
++ goto out;
++ }
++
++ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
++ msblk->fragment[i].locked = 1;
++ up(&msblk->fragment_mutex);
++
++ if (!(msblk->fragment[i].length = squashfs_read_data(s,
++ msblk->fragment[i].data,
++ start_block, length, NULL))) {
++ ERROR("Unable to read fragment cache block "
++ "[%llx]\n", start_block);
++ msblk->fragment[i].locked = 0;
++ goto out;
++ }
++
++ msblk->fragment[i].block = start_block;
++ TRACE("New fragment %d, start block %lld, locked %d\n",
++ i, msblk->fragment[i].block,
++ msblk->fragment[i].locked);
++ break;
++ }
++
++ msblk->fragment[i].locked++;
++ up(&msblk->fragment_mutex);
++ TRACE("Got fragment %d, start block %lld, locked %d\n", i,
++ msblk->fragment[i].block,
++ msblk->fragment[i].locked);
++ break;
++ }
++
++ return &msblk->fragment[i];
++
++out:
++ return NULL;
++}
++
++
++static struct inode *squashfs_new_inode(struct super_block *s,
++ struct squashfs_base_inode_header *inodeb)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct inode *i = new_inode(s);
++
++ if (i) {
++ i->i_ino = inodeb->inode_number;
++ i->i_mtime.tv_sec = inodeb->mtime;
++ i->i_atime.tv_sec = inodeb->mtime;
++ i->i_ctime.tv_sec = inodeb->mtime;
++ i->i_uid = msblk->uid[inodeb->uid];
++ i->i_mode = inodeb->mode;
++ i->i_size = 0;
++ if (inodeb->guid == SQUASHFS_GUIDS)
++ i->i_gid = i->i_uid;
++ else
++ i->i_gid = msblk->guid[inodeb->guid];
++ }
++
++ return i;
++}
++
++
++static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode)
++{
++ struct inode *i;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long block = SQUASHFS_INODE_BLK(inode) +
++ sblk->inode_table_start;
++ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
++ long long next_block;
++ unsigned int next_offset;
++ union squashfs_inode_header id, sid;
++ struct squashfs_base_inode_header *inodeb = &id.base,
++ *sinodeb = &sid.base;
++
++ TRACE("Entered squashfs_iget\n");
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
++ offset, sizeof(*sinodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb,
++ sizeof(*sinodeb));
++ } else
++ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
++ offset, sizeof(*inodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ switch(inodeb->inode_type) {
++ case SQUASHFS_FILE_TYPE: {
++ unsigned int frag_size;
++ long long frag_blk;
++ struct squashfs_reg_inode_header *inodep = &id.reg;
++ struct squashfs_reg_inode_header *sinodep = &sid.reg;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ frag_blk = SQUASHFS_INVALID_BLK;
++ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
++ !get_fragment_location(s,
++ inodep->fragment, &frag_blk, &frag_size))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = 1;
++ i->i_size = inodep->file_size;
++ i->i_fop = &generic_ro_fops;
++ i->i_mode |= S_IFREG;
++ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++ if (sblk->block_size > 4096)
++ i->i_data.a_ops = &squashfs_aops;
++ else
++ i->i_data.a_ops = &squashfs_aops_4K;
++
++ TRACE("File inode %x:%x, start_block %llx, "
++ "block_list_start %llx, offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, next_block,
++ next_offset);
++ break;
++ }
++ case SQUASHFS_LREG_TYPE: {
++ unsigned int frag_size;
++ long long frag_blk;
++ struct squashfs_lreg_inode_header *inodep = &id.lreg;
++ struct squashfs_lreg_inode_header *sinodep = &sid.lreg;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ frag_blk = SQUASHFS_INVALID_BLK;
++ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
++ !get_fragment_location(s,
++ inodep->fragment, &frag_blk, &frag_size))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->file_size;
++ i->i_fop = &generic_ro_fops;
++ i->i_mode |= S_IFREG;
++ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++ if (sblk->block_size > 4096)
++ i->i_data.a_ops = &squashfs_aops;
++ else
++ i->i_data.a_ops = &squashfs_aops_4K;
++
++ TRACE("File inode %x:%x, start_block %llx, "
++ "block_list_start %llx, offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, next_block,
++ next_offset);
++ break;
++ }
++ case SQUASHFS_DIR_TYPE: {
++ struct squashfs_dir_inode_header *inodep = &id.dir;
++ struct squashfs_dir_inode_header *sinodep = &sid.dir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops;
++ i->i_fop = &squashfs_dir_ops;
++ i->i_mode |= S_IFDIR;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
++ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
++
++ TRACE("Directory inode %x:%x, start_block %x, offset "
++ "%x\n", SQUASHFS_INODE_BLK(inode),
++ offset, inodep->start_block,
++ inodep->offset);
++ break;
++ }
++ case SQUASHFS_LDIR_TYPE: {
++ struct squashfs_ldir_inode_header *inodep = &id.ldir;
++ struct squashfs_ldir_inode_header *sinodep = &sid.ldir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops;
++ i->i_fop = &squashfs_dir_ops;
++ i->i_mode |= S_IFDIR;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
++ SQUASHFS_I(i)->u.s2.directory_index_offset =
++ next_offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count =
++ inodep->i_count;
++ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
++
++ TRACE("Long directory inode %x:%x, start_block %x, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, inodep->offset);
++ break;
++ }
++ case SQUASHFS_SYMLINK_TYPE: {
++ struct squashfs_symlink_inode_header *inodep =
++ &id.symlink;
++ struct squashfs_symlink_inode_header *sinodep =
++ &sid.symlink;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->symlink_size;
++ i->i_op = &page_symlink_inode_operations;
++ i->i_data.a_ops = &squashfs_symlink_aops;
++ i->i_mode |= S_IFLNK;
++ SQUASHFS_I(i)->start_block = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++
++ TRACE("Symbolic link inode %x:%x, start_block %llx, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ next_block, next_offset);
++ break;
++ }
++ case SQUASHFS_BLKDEV_TYPE:
++ case SQUASHFS_CHRDEV_TYPE: {
++ struct squashfs_dev_inode_header *inodep = &id.dev;
++ struct squashfs_dev_inode_header *sinodep = &sid.dev;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_mode |= (inodeb->inode_type ==
++ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
++ S_IFBLK;
++ init_special_inode(i, i->i_mode,
++ old_decode_dev(inodep->rdev));
++
++ TRACE("Device inode %x:%x, rdev %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->rdev);
++ break;
++ }
++ case SQUASHFS_FIFO_TYPE:
++ case SQUASHFS_SOCKET_TYPE: {
++ struct squashfs_ipc_inode_header *inodep = &id.ipc;
++ struct squashfs_ipc_inode_header *sinodep = &sid.ipc;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
++ ? S_IFIFO : S_IFSOCK;
++ init_special_inode(i, i->i_mode, 0);
++ break;
++ }
++ default:
++ ERROR("Unknown inode type %d in squashfs_iget!\n",
++ inodeb->inode_type);
++ goto failed_read1;
++ }
++
++ insert_inode_hash(i);
++ return i;
++
++failed_read:
++ ERROR("Unable to read inode [%llx:%x]\n", block, offset);
++
++failed_read1:
++ return NULL;
++}
++
++
++static int read_fragment_index_table(struct super_block *s)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ /* Allocate fragment index table */
++ if (!(msblk->fragment_index = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES
++ (sblk->fragments), GFP_KERNEL))) {
++ ERROR("Failed to allocate uid/gid table\n");
++ return 0;
++ }
++
++ if (SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments) &&
++ !squashfs_read_data(s, (char *)
++ msblk->fragment_index,
++ sblk->fragment_table_start,
++ SQUASHFS_FRAGMENT_INDEX_BYTES
++ (sblk->fragments) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read fragment index table\n");
++ return 0;
++ }
++
++ if (msblk->swap) {
++ int i;
++ long long fragment;
++
++ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES(sblk->fragments);
++ i++) {
++ SQUASHFS_SWAP_FRAGMENT_INDEXES((&fragment),
++ &msblk->fragment_index[i], 1);
++ msblk->fragment_index[i] = fragment;
++ }
++ }
++
++ return 1;
++}
++
++
++static int supported_squashfs_filesystem(struct squashfs_sb_info *msblk, int silent)
++{
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ msblk->iget = squashfs_iget;
++ msblk->read_blocklist = read_blocklist;
++ msblk->read_fragment_index_table = read_fragment_index_table;
++
++ if (sblk->s_major == 1) {
++ if (!squashfs_1_0_supported(msblk)) {
++ SERROR("Major/Minor mismatch, Squashfs 1.0 filesystems "
++ "are unsupported\n");
++ SERROR("Please recompile with "
++ "Squashfs 1.0 support enabled\n");
++ return 0;
++ }
++ } else if (sblk->s_major == 2) {
++ if (!squashfs_2_0_supported(msblk)) {
++ SERROR("Major/Minor mismatch, Squashfs 2.0 filesystems "
++ "are unsupported\n");
++ SERROR("Please recompile with "
++ "Squashfs 2.0 support enabled\n");
++ return 0;
++ }
++ } else if(sblk->s_major != SQUASHFS_MAJOR || sblk->s_minor >
++ SQUASHFS_MINOR) {
++ SERROR("Major/Minor mismatch, trying to mount newer %d.%d "
++ "filesystem\n", sblk->s_major, sblk->s_minor);
++ SERROR("Please update your kernel\n");
++ return 0;
++ }
++
++ return 1;
++}
++
++
++static int squashfs_fill_super(struct super_block *s, void *data, int silent)
++{
++ struct squashfs_sb_info *msblk;
++ struct squashfs_super_block *sblk;
++ int i;
++ char b[BDEVNAME_SIZE];
++ struct inode *root;
++
++ TRACE("Entered squashfs_read_superblock\n");
++
++ if (!(s->s_fs_info = kmalloc(sizeof(struct squashfs_sb_info),
++ GFP_KERNEL))) {
++ ERROR("Failed to allocate superblock\n");
++ goto failure;
++ }
++ memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info));
++ msblk = s->s_fs_info;
++ sblk = &msblk->sblk;
++
++ msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
++ msblk->devblksize_log2 = ffz(~msblk->devblksize);
++
++ init_MUTEX(&msblk->read_data_mutex);
++ init_MUTEX(&msblk->read_page_mutex);
++ init_MUTEX(&msblk->block_cache_mutex);
++ init_MUTEX(&msblk->fragment_mutex);
++ init_MUTEX(&msblk->meta_index_mutex);
++
++ init_waitqueue_head(&msblk->waitq);
++ init_waitqueue_head(&msblk->fragment_wait_queue);
++
++ if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
++ sizeof(struct squashfs_super_block) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ SERROR("unable to read superblock\n");
++ goto failed_mount;
++ }
++
++ /* Check it is a SQUASHFS superblock */
++ msblk->swap = 0;
++ if ((s->s_magic = sblk->s_magic) != SQUASHFS_MAGIC) {
++ if (sblk->s_magic == SQUASHFS_MAGIC_SWAP) {
++ struct squashfs_super_block ssblk;
++
++ WARNING("Mounting a different endian SQUASHFS "
++ "filesystem on %s\n", bdevname(s->s_bdev, b));
++
++ SQUASHFS_SWAP_SUPER_BLOCK(&ssblk, sblk);
++ memcpy(sblk, &ssblk, sizeof(struct squashfs_super_block));
++ msblk->swap = 1;
++ } else {
++ SERROR("Can't find a SQUASHFS superblock on %s\n",
++ bdevname(s->s_bdev, b));
++ goto failed_mount;
++ }
++ }
++
++ /* Check the MAJOR & MINOR versions */
++ if(!supported_squashfs_filesystem(msblk, silent))
++ goto failed_mount;
++
++ TRACE("Found valid superblock on %s\n", bdevname(s->s_bdev, b));
++ TRACE("Inodes are %scompressed\n",
++ SQUASHFS_UNCOMPRESSED_INODES
++ (sblk->flags) ? "un" : "");
++ TRACE("Data is %scompressed\n",
++ SQUASHFS_UNCOMPRESSED_DATA(sblk->flags)
++ ? "un" : "");
++ TRACE("Check data is %s present in the filesystem\n",
++ SQUASHFS_CHECK_DATA(sblk->flags) ?
++ "" : "not");
++ TRACE("Filesystem size %lld bytes\n", sblk->bytes_used);
++ TRACE("Block size %d\n", sblk->block_size);
++ TRACE("Number of inodes %d\n", sblk->inodes);
++ if (sblk->s_major > 1)
++ TRACE("Number of fragments %d\n", sblk->fragments);
++ TRACE("Number of uids %d\n", sblk->no_uids);
++ TRACE("Number of gids %d\n", sblk->no_guids);
++ TRACE("sblk->inode_table_start %llx\n", sblk->inode_table_start);
++ TRACE("sblk->directory_table_start %llx\n", sblk->directory_table_start);
++ if (sblk->s_major > 1)
++ TRACE("sblk->fragment_table_start %llx\n",
++ sblk->fragment_table_start);
++ TRACE("sblk->uid_start %llx\n", sblk->uid_start);
++
++ s->s_flags |= MS_RDONLY;
++ s->s_op = &squashfs_ops;
++
++ /* Init inode_table block pointer array */
++ if (!(msblk->block_cache = kmalloc(sizeof(struct squashfs_cache) *
++ SQUASHFS_CACHED_BLKS, GFP_KERNEL))) {
++ ERROR("Failed to allocate block cache\n");
++ goto failed_mount;
++ }
++
++ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
++ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
++
++ msblk->next_cache = 0;
++
++ /* Allocate read_data block */
++ msblk->read_size = (sblk->block_size < SQUASHFS_METADATA_SIZE) ?
++ SQUASHFS_METADATA_SIZE :
++ sblk->block_size;
++
++ if (!(msblk->read_data = kmalloc(msblk->read_size, GFP_KERNEL))) {
++ ERROR("Failed to allocate read_data block\n");
++ goto failed_mount;
++ }
++
++ /* Allocate read_page block */
++ if (!(msblk->read_page = kmalloc(sblk->block_size, GFP_KERNEL))) {
++ ERROR("Failed to allocate read_page block\n");
++ goto failed_mount;
++ }
++
++ /* Allocate uid and gid tables */
++ if (!(msblk->uid = kmalloc((sblk->no_uids + sblk->no_guids) *
++ sizeof(unsigned int), GFP_KERNEL))) {
++ ERROR("Failed to allocate uid/gid table\n");
++ goto failed_mount;
++ }
++ msblk->guid = msblk->uid + sblk->no_uids;
++
++ if (msblk->swap) {
++ unsigned int suid[sblk->no_uids + sblk->no_guids];
++
++ if (!squashfs_read_data(s, (char *) &suid, sblk->uid_start,
++ ((sblk->no_uids + sblk->no_guids) *
++ sizeof(unsigned int)) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read uid/gid table\n");
++ goto failed_mount;
++ }
++
++ SQUASHFS_SWAP_DATA(msblk->uid, suid, (sblk->no_uids +
++ sblk->no_guids), (sizeof(unsigned int) * 8));
++ } else
++ if (!squashfs_read_data(s, (char *) msblk->uid, sblk->uid_start,
++ ((sblk->no_uids + sblk->no_guids) *
++ sizeof(unsigned int)) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read uid/gid table\n");
++ goto failed_mount;
++ }
++
++
++ if (sblk->s_major == 1 && squashfs_1_0_supported(msblk))
++ goto allocate_root;
++
++ if (!(msblk->fragment = kmalloc(sizeof(struct squashfs_fragment_cache) *
++ SQUASHFS_CACHED_FRAGMENTS, GFP_KERNEL))) {
++ ERROR("Failed to allocate fragment block cache\n");
++ goto failed_mount;
++ }
++
++ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++) {
++ msblk->fragment[i].locked = 0;
++ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
++ msblk->fragment[i].data = NULL;
++ }
++
++ msblk->next_fragment = 0;
++
++ /* Allocate fragment index table */
++ if (msblk->read_fragment_index_table(s) == 0)
++ goto failed_mount;
++
++allocate_root:
++ if ((root = (msblk->iget)(s, sblk->root_inode)) == NULL)
++ goto failed_mount;
++
++ if ((s->s_root = d_alloc_root(root)) == NULL) {
++ ERROR("Root inode create failed\n");
++ iput(root);
++ goto failed_mount;
++ }
++
++ TRACE("Leaving squashfs_read_super\n");
++ return 0;
++
++failed_mount:
++ kfree(msblk->fragment_index);
++ kfree(msblk->fragment);
++ kfree(msblk->uid);
++ kfree(msblk->read_page);
++ kfree(msblk->read_data);
++ kfree(msblk->block_cache);
++ kfree(msblk->fragment_index_2);
++ kfree(s->s_fs_info);
++ s->s_fs_info = NULL;
++ return -EINVAL;
++
++failure:
++ return -ENOMEM;
++}
++
++
++static int squashfs_statfs(struct dentry *dentry, struct kstatfs *buf)
++{
++ struct super_block *s = dentry->d_sb;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ TRACE("Entered squashfs_statfs\n");
++
++ buf->f_type = SQUASHFS_MAGIC;
++ buf->f_bsize = sblk->block_size;
++ buf->f_blocks = ((sblk->bytes_used - 1) >> sblk->block_log) + 1;
++ buf->f_bfree = buf->f_bavail = 0;
++ buf->f_files = sblk->inodes;
++ buf->f_ffree = 0;
++ buf->f_namelen = SQUASHFS_NAME_LEN;
++
++ return 0;
++}
++
++
++static int squashfs_symlink_readpage(struct file *file, struct page *page)
++{
++ struct inode *inode = page->mapping->host;
++ int index = page->index << PAGE_CACHE_SHIFT, length, bytes;
++ long long block = SQUASHFS_I(inode)->start_block;
++ int offset = SQUASHFS_I(inode)->offset;
++ void *pageaddr = kmap(page);
++
++ TRACE("Entered squashfs_symlink_readpage, page index %ld, start block "
++ "%llx, offset %x\n", page->index,
++ SQUASHFS_I(inode)->start_block,
++ SQUASHFS_I(inode)->offset);
++
++ for (length = 0; length < index; length += bytes) {
++ if (!(bytes = squashfs_get_cached_block(inode->i_sb, NULL,
++ block, offset, PAGE_CACHE_SIZE, &block,
++ &offset))) {
++ ERROR("Unable to read symbolic link [%llx:%x]\n", block,
++ offset);
++ goto skip_read;
++ }
++ }
++
++ if (length != index) {
++ ERROR("(squashfs_symlink_readpage) length != index\n");
++ bytes = 0;
++ goto skip_read;
++ }
++
++ bytes = (i_size_read(inode) - length) > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE :
++ i_size_read(inode) - length;
++
++ if (!(bytes = squashfs_get_cached_block(inode->i_sb, pageaddr, block,
++ offset, bytes, &block, &offset)))
++ ERROR("Unable to read symbolic link [%llx:%x]\n", block, offset);
++
++skip_read:
++ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
++ kunmap(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++
++ return 0;
++}
++
++
++struct meta_index *locate_meta_index(struct inode *inode, int index, int offset)
++{
++ struct meta_index *meta = NULL;
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ int i;
++
++ down(&msblk->meta_index_mutex);
++
++ TRACE("locate_meta_index: index %d, offset %d\n", index, offset);
++
++ if(msblk->meta_index == NULL)
++ goto not_allocated;
++
++ for (i = 0; i < SQUASHFS_META_NUMBER; i ++)
++ if (msblk->meta_index[i].inode_number == inode->i_ino &&
++ msblk->meta_index[i].offset >= offset &&
++ msblk->meta_index[i].offset <= index &&
++ msblk->meta_index[i].locked == 0) {
++ TRACE("locate_meta_index: entry %d, offset %d\n", i,
++ msblk->meta_index[i].offset);
++ meta = &msblk->meta_index[i];
++ offset = meta->offset;
++ }
++
++ if (meta)
++ meta->locked = 1;
++
++not_allocated:
++ up(&msblk->meta_index_mutex);
++
++ return meta;
++}
++
++
++struct meta_index *empty_meta_index(struct inode *inode, int offset, int skip)
++{
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct meta_index *meta = NULL;
++ int i;
++
++ down(&msblk->meta_index_mutex);
++
++ TRACE("empty_meta_index: offset %d, skip %d\n", offset, skip);
++
++ if(msblk->meta_index == NULL) {
++ if (!(msblk->meta_index = kmalloc(sizeof(struct meta_index) *
++ SQUASHFS_META_NUMBER, GFP_KERNEL))) {
++ ERROR("Failed to allocate meta_index\n");
++ goto failed;
++ }
++ for(i = 0; i < SQUASHFS_META_NUMBER; i++) {
++ msblk->meta_index[i].inode_number = 0;
++ msblk->meta_index[i].locked = 0;
++ }
++ msblk->next_meta_index = 0;
++ }
++
++ for(i = SQUASHFS_META_NUMBER; i &&
++ msblk->meta_index[msblk->next_meta_index].locked; i --)
++ msblk->next_meta_index = (msblk->next_meta_index + 1) %
++ SQUASHFS_META_NUMBER;
++
++ if(i == 0) {
++ TRACE("empty_meta_index: failed!\n");
++ goto failed;
++ }
++
++ TRACE("empty_meta_index: returned meta entry %d, %p\n",
++ msblk->next_meta_index,
++ &msblk->meta_index[msblk->next_meta_index]);
++
++ meta = &msblk->meta_index[msblk->next_meta_index];
++ msblk->next_meta_index = (msblk->next_meta_index + 1) %
++ SQUASHFS_META_NUMBER;
++
++ meta->inode_number = inode->i_ino;
++ meta->offset = offset;
++ meta->skip = skip;
++ meta->entries = 0;
++ meta->locked = 1;
++
++failed:
++ up(&msblk->meta_index_mutex);
++ return meta;
++}
++
++
++void release_meta_index(struct inode *inode, struct meta_index *meta)
++{
++ meta->locked = 0;
++}
++
++
++static int read_block_index(struct super_block *s, int blocks, char *block_list,
++ long long *start_block, int *offset)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ unsigned int *block_listp;
++ int block = 0;
++
++ if (msblk->swap) {
++ char sblock_list[blocks << 2];
++
++ if (!squashfs_get_cached_block(s, sblock_list, *start_block,
++ *offset, blocks << 2, start_block, offset)) {
++ ERROR("Unable to read block list [%llx:%x]\n",
++ *start_block, *offset);
++ goto failure;
++ }
++ SQUASHFS_SWAP_INTS(((unsigned int *)block_list),
++ ((unsigned int *)sblock_list), blocks);
++ } else
++ if (!squashfs_get_cached_block(s, block_list, *start_block,
++ *offset, blocks << 2, start_block, offset)) {
++ ERROR("Unable to read block list [%llx:%x]\n",
++ *start_block, *offset);
++ goto failure;
++ }
++
++ for (block_listp = (unsigned int *) block_list; blocks;
++ block_listp++, blocks --)
++ block += SQUASHFS_COMPRESSED_SIZE_BLOCK(*block_listp);
++
++ return block;
++
++failure:
++ return -1;
++}
++
++
++#define SIZE 256
++
++static inline int calculate_skip(int blocks) {
++ int skip = (blocks - 1) / ((SQUASHFS_SLOTS * SQUASHFS_META_ENTRIES + 1) * SQUASHFS_META_INDEXES);
++ return skip >= 7 ? 7 : skip + 1;
++}
++
++
++static int get_meta_index(struct inode *inode, int index,
++ long long *index_block, int *index_offset,
++ long long *data_block, char *block_list)
++{
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int skip = calculate_skip(i_size_read(inode) >> sblk->block_log);
++ int offset = 0;
++ struct meta_index *meta;
++ struct meta_entry *meta_entry;
++ long long cur_index_block = SQUASHFS_I(inode)->u.s1.block_list_start;
++ int cur_offset = SQUASHFS_I(inode)->offset;
++ long long cur_data_block = SQUASHFS_I(inode)->start_block;
++ int i;
++
++ index /= SQUASHFS_META_INDEXES * skip;
++
++ while ( offset < index ) {
++ meta = locate_meta_index(inode, index, offset + 1);
++
++ if (meta == NULL) {
++ if ((meta = empty_meta_index(inode, offset + 1,
++ skip)) == NULL)
++ goto all_done;
++ } else {
++ offset = index < meta->offset + meta->entries ? index :
++ meta->offset + meta->entries - 1;
++ meta_entry = &meta->meta_entry[offset - meta->offset];
++ cur_index_block = meta_entry->index_block + sblk->inode_table_start;
++ cur_offset = meta_entry->offset;
++ cur_data_block = meta_entry->data_block;
++ TRACE("get_meta_index: offset %d, meta->offset %d, "
++ "meta->entries %d\n", offset, meta->offset,
++ meta->entries);
++ TRACE("get_meta_index: index_block 0x%llx, offset 0x%x"
++ " data_block 0x%llx\n", cur_index_block,
++ cur_offset, cur_data_block);
++ }
++
++ for (i = meta->offset + meta->entries; i <= index &&
++ i < meta->offset + SQUASHFS_META_ENTRIES; i++) {
++ int blocks = skip * SQUASHFS_META_INDEXES;
++
++ while (blocks) {
++ int block = blocks > (SIZE >> 2) ? (SIZE >> 2) :
++ blocks;
++ int res = read_block_index(inode->i_sb, block,
++ block_list, &cur_index_block,
++ &cur_offset);
++
++ if (res == -1)
++ goto failed;
++
++ cur_data_block += res;
++ blocks -= block;
++ }
++
++ meta_entry = &meta->meta_entry[i - meta->offset];
++ meta_entry->index_block = cur_index_block - sblk->inode_table_start;
++ meta_entry->offset = cur_offset;
++ meta_entry->data_block = cur_data_block;
++ meta->entries ++;
++ offset ++;
++ }
++
++ TRACE("get_meta_index: meta->offset %d, meta->entries %d\n",
++ meta->offset, meta->entries);
++
++ release_meta_index(inode, meta);
++ }
++
++all_done:
++ *index_block = cur_index_block;
++ *index_offset = cur_offset;
++ *data_block = cur_data_block;
++
++ return offset * SQUASHFS_META_INDEXES * skip;
++
++failed:
++ release_meta_index(inode, meta);
++ return -1;
++}
++
++
++static long long read_blocklist(struct inode *inode, int index,
++ int readahead_blks, char *block_list,
++ unsigned short **block_p, unsigned int *bsize)
++{
++ long long block_ptr;
++ int offset;
++ long long block;
++ int res = get_meta_index(inode, index, &block_ptr, &offset, &block,
++ block_list);
++
++ TRACE("read_blocklist: res %d, index %d, block_ptr 0x%llx, offset"
++ " 0x%x, block 0x%llx\n", res, index, block_ptr, offset,
++ block);
++
++ if(res == -1)
++ goto failure;
++
++ index -= res;
++
++ while ( index ) {
++ int blocks = index > (SIZE >> 2) ? (SIZE >> 2) : index;
++ int res = read_block_index(inode->i_sb, blocks, block_list,
++ &block_ptr, &offset);
++ if (res == -1)
++ goto failure;
++ block += res;
++ index -= blocks;
++ }
++
++ if (read_block_index(inode->i_sb, 1, block_list,
++ &block_ptr, &offset) == -1)
++ goto failure;
++ *bsize = *((unsigned int *) block_list);
++
++ return block;
++
++failure:
++ return 0;
++}
++
++
++static int squashfs_readpage(struct file *file, struct page *page)
++{
++ struct inode *inode = page->mapping->host;
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ unsigned char block_list[SIZE];
++ long long block;
++ unsigned int bsize, i = 0, bytes = 0, byte_offset = 0;
++ int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT);
++ void *pageaddr;
++ struct squashfs_fragment_cache *fragment = NULL;
++ char *data_ptr = msblk->read_page;
++
++ int mask = (1 << (sblk->block_log - PAGE_CACHE_SHIFT)) - 1;
++ int start_index = page->index & ~mask;
++ int end_index = start_index | mask;
++
++ TRACE("Entered squashfs_readpage, page index %lx, start block %llx\n",
++ page->index,
++ SQUASHFS_I(inode)->start_block);
++
++ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
++ PAGE_CACHE_SHIFT))
++ goto skip_read;
++
++ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++ || index < (i_size_read(inode) >>
++ sblk->block_log)) {
++ if ((block = (msblk->read_blocklist)(inode, index, 1,
++ block_list, NULL, &bsize)) == 0)
++ goto skip_read;
++
++ down(&msblk->read_page_mutex);
++
++ if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page,
++ block, bsize, NULL))) {
++ ERROR("Unable to read page, block %llx, size %x\n", block,
++ bsize);
++ up(&msblk->read_page_mutex);
++ goto skip_read;
++ }
++ } else {
++ if ((fragment = get_cached_fragment(inode->i_sb,
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block,
++ SQUASHFS_I(inode)->u.s1.fragment_size))
++ == NULL) {
++ ERROR("Unable to read page, block %llx, size %x\n",
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block,
++ (int) SQUASHFS_I(inode)->
++ u.s1.fragment_size);
++ goto skip_read;
++ }
++ bytes = SQUASHFS_I(inode)->u.s1.fragment_offset +
++ (i_size_read(inode) & (sblk->block_size
++ - 1));
++ byte_offset = SQUASHFS_I(inode)->u.s1.fragment_offset;
++ data_ptr = fragment->data;
++ }
++
++ for (i = start_index; i <= end_index && byte_offset < bytes;
++ i++, byte_offset += PAGE_CACHE_SIZE) {
++ struct page *push_page;
++ int available_bytes = (bytes - byte_offset) > PAGE_CACHE_SIZE ?
++ PAGE_CACHE_SIZE : bytes - byte_offset;
++
++ TRACE("bytes %d, i %d, byte_offset %d, available_bytes %d\n",
++ bytes, i, byte_offset, available_bytes);
++
++ if (i == page->index) {
++ pageaddr = kmap_atomic(page, KM_USER0);
++ memcpy(pageaddr, data_ptr + byte_offset,
++ available_bytes);
++ memset(pageaddr + available_bytes, 0,
++ PAGE_CACHE_SIZE - available_bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++ } else if ((push_page =
++ grab_cache_page_nowait(page->mapping, i))) {
++ pageaddr = kmap_atomic(push_page, KM_USER0);
++
++ memcpy(pageaddr, data_ptr + byte_offset,
++ available_bytes);
++ memset(pageaddr + available_bytes, 0,
++ PAGE_CACHE_SIZE - available_bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(push_page);
++ SetPageUptodate(push_page);
++ unlock_page(push_page);
++ page_cache_release(push_page);
++ }
++ }
++
++ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++ || index < (i_size_read(inode) >>
++ sblk->block_log))
++ up(&msblk->read_page_mutex);
++ else
++ release_cached_fragment(msblk, fragment);
++
++ return 0;
++
++skip_read:
++ pageaddr = kmap_atomic(page, KM_USER0);
++ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++
++ return 0;
++}
++
++
++static int squashfs_readpage4K(struct file *file, struct page *page)
++{
++ struct inode *inode = page->mapping->host;
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ unsigned char block_list[SIZE];
++ long long block;
++ unsigned int bsize, bytes = 0;
++ void *pageaddr;
++
++ TRACE("Entered squashfs_readpage4K, page index %lx, start block %llx\n",
++ page->index,
++ SQUASHFS_I(inode)->start_block);
++
++ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
++ PAGE_CACHE_SHIFT)) {
++ pageaddr = kmap_atomic(page, KM_USER0);
++ goto skip_read;
++ }
++
++ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++ || page->index < (i_size_read(inode) >>
++ sblk->block_log)) {
++ block = (msblk->read_blocklist)(inode, page->index, 1,
++ block_list, NULL, &bsize);
++
++ down(&msblk->read_page_mutex);
++ bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
++ bsize, NULL);
++ pageaddr = kmap_atomic(page, KM_USER0);
++ if (bytes)
++ memcpy(pageaddr, msblk->read_page, bytes);
++ else
++ ERROR("Unable to read page, block %llx, size %x\n",
++ block, bsize);
++ up(&msblk->read_page_mutex);
++ } else {
++ struct squashfs_fragment_cache *fragment =
++ get_cached_fragment(inode->i_sb,
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block,
++ SQUASHFS_I(inode)-> u.s1.fragment_size);
++ pageaddr = kmap_atomic(page, KM_USER0);
++ if (fragment) {
++ bytes = i_size_read(inode) & (sblk->block_size - 1);
++ memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)->
++ u.s1.fragment_offset, bytes);
++ release_cached_fragment(msblk, fragment);
++ } else
++ ERROR("Unable to read page, block %llx, size %x\n",
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block, (int)
++ SQUASHFS_I(inode)-> u.s1.fragment_size);
++ }
++
++skip_read:
++ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++
++ return 0;
++}
++
++
++static int get_dir_index_using_offset(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ long long f_pos)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ struct squashfs_dir_index index;
++
++ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
++ i_count, (unsigned int) f_pos);
++
++ f_pos =- 3;
++ if (f_pos == 0)
++ goto finish;
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX(&index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) &index,
++ index_start, index_offset,
++ sizeof(index), &index_start,
++ &index_offset);
++
++ if (index.index > f_pos)
++ break;
++
++ squashfs_get_cached_block(s, NULL, index_start, index_offset,
++ index.size + 1, &index_start,
++ &index_offset);
++
++ length = index.index;
++ *next_block = index.start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++
++finish:
++ return length + 3;
++}
++
++
++static int get_dir_index_using_name(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ const char *name, int size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ char buffer[sizeof(struct squashfs_dir_index) + SQUASHFS_NAME_LEN + 1];
++ struct squashfs_dir_index *index = (struct squashfs_dir_index *) buffer;
++ char str[SQUASHFS_NAME_LEN + 1];
++
++ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
++
++ strncpy(str, name, size);
++ str[size] = '\0';
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX(index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) index,
++ index_start, index_offset,
++ sizeof(struct squashfs_dir_index),
++ &index_start, &index_offset);
++
++ squashfs_get_cached_block(s, index->name, index_start,
++ index_offset, index->size + 1,
++ &index_start, &index_offset);
++
++ index->name[index->size + 1] = '\0';
++
++ if (strcmp(index->name, str) > 0)
++ break;
++
++ length = index->index;
++ *next_block = index->start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++ return length + 3;
++}
++
++
++static int squashfs_readdir(struct file *file, void *dirent, filldir_t filldir)
++{
++ struct inode *i = file->f_dentry->d_inode;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
++ dir_count;
++ struct squashfs_dir_header dirh;
++ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN + 1];
++ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
++
++ TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset);
++
++ while(file->f_pos < 3) {
++ char *name;
++ int size, i_ino;
++
++ if(file->f_pos == 0) {
++ name = ".";
++ size = 1;
++ i_ino = i->i_ino;
++ } else {
++ name = "..";
++ size = 2;
++ i_ino = SQUASHFS_I(i)->u.s2.parent_inode;
++ }
++ TRACE("Calling filldir(%x, %s, %d, %d, %d, %d)\n",
++ (unsigned int) dirent, name, size, (int)
++ file->f_pos, i_ino,
++ squashfs_filetype_table[1]);
++
++ if (filldir(dirent, name, size,
++ file->f_pos, i_ino,
++ squashfs_filetype_table[1]) < 0) {
++ TRACE("Filldir returned less than 0\n");
++ goto finish;
++ }
++ file->f_pos += size;
++ dirs_read++;
++ }
++
++ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count,
++ file->f_pos);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header sdirh;
++
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block, next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block, next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset,
++ dire->size + 1, &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (file->f_pos >= length)
++ continue;
++
++ dire->name[dire->size + 1] = '\0';
++
++ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d, %d)\n",
++ (unsigned int) dirent, dire->name,
++ dire->size + 1, (int) file->f_pos,
++ dirh.start_block, dire->offset,
++ dirh.inode_number + dire->inode_number,
++ squashfs_filetype_table[dire->type]);
++
++ if (filldir(dirent, dire->name, dire->size + 1,
++ file->f_pos,
++ dirh.inode_number + dire->inode_number,
++ squashfs_filetype_table[dire->type])
++ < 0) {
++ TRACE("Filldir returned less than 0\n");
++ goto finish;
++ }
++ file->f_pos = length;
++ dirs_read++;
++ }
++ }
++
++finish:
++ return dirs_read;
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ return 0;
++}
++
++
++static struct dentry *squashfs_lookup(struct inode *i, struct dentry *dentry,
++ struct nameidata *nd)
++{
++ const unsigned char *name = dentry->d_name.name;
++ int len = dentry->d_name.len;
++ struct inode *inode = NULL;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0,
++ dir_count;
++ struct squashfs_dir_header dirh;
++ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN];
++ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
++
++ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
++
++ if (len > SQUASHFS_NAME_LEN)
++ goto exit_loop;
++
++ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count, name,
++ len);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header sdirh;
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block,next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block,next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset, dire->size + 1,
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (name[0] < dire->name[0])
++ goto exit_loop;
++
++ if ((len == dire->size + 1) && !strncmp(name,
++ dire->name, len)) {
++ squashfs_inode_t ino =
++ SQUASHFS_MKINODE(dirh.start_block,
++ dire->offset);
++
++ TRACE("calling squashfs_iget for directory "
++ "entry %s, inode %x:%x, %d\n", name,
++ dirh.start_block, dire->offset,
++ dirh.inode_number + dire->inode_number);
++
++ inode = (msblk->iget)(i->i_sb, ino);
++
++ goto exit_loop;
++ }
++ }
++ }
++
++exit_loop:
++ d_add(dentry, inode);
++ return ERR_PTR(0);
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ goto exit_loop;
++}
++
++
++static void squashfs_put_super(struct super_block *s)
++{
++ int i;
++
++ if (s->s_fs_info) {
++ struct squashfs_sb_info *sbi = s->s_fs_info;
++ if (sbi->block_cache)
++ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
++ if (sbi->block_cache[i].block !=
++ SQUASHFS_INVALID_BLK)
++ kfree(sbi->block_cache[i].data);
++ if (sbi->fragment)
++ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++)
++ SQUASHFS_FREE(sbi->fragment[i].data);
++ kfree(sbi->fragment);
++ kfree(sbi->block_cache);
++ kfree(sbi->read_data);
++ kfree(sbi->read_page);
++ kfree(sbi->uid);
++ kfree(sbi->fragment_index);
++ kfree(sbi->fragment_index_2);
++ kfree(sbi->meta_index);
++ kfree(s->s_fs_info);
++ s->s_fs_info = NULL;
++ }
++}
++
++
++static int squashfs_get_sb(struct file_system_type *fs_type,
++ int flags, const char *dev_name, void *data, struct vfsmount *mnt)
++{
++ return get_sb_bdev(fs_type, flags, dev_name, data, squashfs_fill_super, mnt);
++}
++
++
++static int __init init_squashfs_fs(void)
++{
++ int err = init_inodecache();
++ if (err)
++ goto out;
++
++ printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) "
++ "Phillip Lougher\n");
++
++ if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
++ ERROR("Failed to allocate zlib workspace\n");
++ destroy_inodecache();
++ err = -ENOMEM;
++ goto out;
++ }
++
++ if ((err = register_filesystem(&squashfs_fs_type))) {
++ vfree(stream.workspace);
++ destroy_inodecache();
++ }
++
++out:
++ return err;
++}
++
++
++static void __exit exit_squashfs_fs(void)
++{
++ vfree(stream.workspace);
++ unregister_filesystem(&squashfs_fs_type);
++ destroy_inodecache();
++}
++
++
++static kmem_cache_t * squashfs_inode_cachep;
++
++
++static struct inode *squashfs_alloc_inode(struct super_block *sb)
++{
++ struct squashfs_inode_info *ei;
++ ei = kmem_cache_alloc(squashfs_inode_cachep, GFP_KERNEL);
++ if (!ei)
++ return NULL;
++ return &ei->vfs_inode;
++}
++
++
++static void squashfs_destroy_inode(struct inode *inode)
++{
++ kmem_cache_free(squashfs_inode_cachep, SQUASHFS_I(inode));
++}
++
++
++static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
++{
++ struct squashfs_inode_info *ei = foo;
++
++ if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
++ SLAB_CTOR_CONSTRUCTOR)
++ inode_init_once(&ei->vfs_inode);
++}
++
++
++static int __init init_inodecache(void)
++{
++ squashfs_inode_cachep = kmem_cache_create("squashfs_inode_cache",
++ sizeof(struct squashfs_inode_info),
++ 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
++ init_once, NULL);
++ if (squashfs_inode_cachep == NULL)
++ return -ENOMEM;
++ return 0;
++}
++
++
++static void destroy_inodecache(void)
++{
++ kmem_cache_destroy(squashfs_inode_cachep);
++}
++
++
++module_init(init_squashfs_fs);
++module_exit(exit_squashfs_fs);
++MODULE_DESCRIPTION("squashfs, a compressed read-only filesystem");
++MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
+Index: git/fs/squashfs/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/fs/squashfs/Makefile 2006-10-31 21:26:45.000000000 +0000
+@@ -0,0 +1,7 @@
++#
++# Makefile for the linux squashfs routines.
++#
++
++obj-$(CONFIG_SQUASHFS) += squashfs.o
++squashfs-y += inode.o
++squashfs-y += squashfs2_0.o
+Index: git/fs/squashfs/squashfs2_0.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/fs/squashfs/squashfs2_0.c 2006-11-01 18:01:49.000000000 +0000
+@@ -0,0 +1,757 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs2_0.c
++ */
++
++#include <linux/types.h>
++#include <linux/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/errno.h>
++#include <linux/slab.h>
++#include <linux/fs.h>
++#include <linux/smp_lock.h>
++#include <linux/slab.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.h>
++#include <linux/buffer_head.h>
++#include <linux/vfs.h>
++#include <linux/init.h>
++#include <linux/dcache.h>
++#include <linux/wait.h>
++#include <linux/zlib.h>
++#include <linux/blkdev.h>
++#include <linux/vmalloc.h>
++#include <asm/uaccess.h>
++#include <asm/semaphore.h>
++
++#include "squashfs.h"
++static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir);
++static struct dentry *squashfs_lookup_2(struct inode *, struct dentry *,
++ struct nameidata *);
++
++static struct file_operations squashfs_dir_ops_2 = {
++ .read = generic_read_dir,
++ .readdir = squashfs_readdir_2
++};
++
++static struct inode_operations squashfs_dir_inode_ops_2 = {
++ .lookup = squashfs_lookup_2
++};
++
++static unsigned char squashfs_filetype_table[] = {
++ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
++};
++
++static int read_fragment_index_table_2(struct super_block *s)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ if (!(msblk->fragment_index_2 = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES_2
++ (sblk->fragments), GFP_KERNEL))) {
++ ERROR("Failed to allocate uid/gid table\n");
++ return 0;
++ }
++
++ if (SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments) &&
++ !squashfs_read_data(s, (char *)
++ msblk->fragment_index_2,
++ sblk->fragment_table_start,
++ SQUASHFS_FRAGMENT_INDEX_BYTES_2
++ (sblk->fragments) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read fragment index table\n");
++ return 0;
++ }
++
++ if (msblk->swap) {
++ int i;
++ unsigned int fragment;
++
++ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES_2(sblk->fragments);
++ i++) {
++ SQUASHFS_SWAP_FRAGMENT_INDEXES_2((&fragment),
++ &msblk->fragment_index_2[i], 1);
++ msblk->fragment_index_2[i] = fragment;
++ }
++ }
++
++ return 1;
++}
++
++
++static int get_fragment_location_2(struct super_block *s, unsigned int fragment,
++ long long *fragment_start_block,
++ unsigned int *fragment_size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ long long start_block =
++ msblk->fragment_index_2[SQUASHFS_FRAGMENT_INDEX_2(fragment)];
++ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET_2(fragment);
++ struct squashfs_fragment_entry_2 fragment_entry;
++
++ if (msblk->swap) {
++ struct squashfs_fragment_entry_2 sfragment_entry;
++
++ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
++ start_block, offset,
++ sizeof(sfragment_entry), &start_block,
++ &offset))
++ goto out;
++ SQUASHFS_SWAP_FRAGMENT_ENTRY_2(&fragment_entry, &sfragment_entry);
++ } else
++ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
++ start_block, offset,
++ sizeof(fragment_entry), &start_block,
++ &offset))
++ goto out;
++
++ *fragment_start_block = fragment_entry.start_block;
++ *fragment_size = fragment_entry.size;
++
++ return 1;
++
++out:
++ return 0;
++}
++
++
++static struct inode *squashfs_new_inode(struct super_block *s,
++ struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ struct inode *i = new_inode(s);
++
++ if (i) {
++ i->i_ino = ino;
++ i->i_mtime.tv_sec = sblk->mkfs_time;
++ i->i_atime.tv_sec = sblk->mkfs_time;
++ i->i_ctime.tv_sec = sblk->mkfs_time;
++ i->i_uid = msblk->uid[inodeb->uid];
++ i->i_mode = inodeb->mode;
++ i->i_nlink = 1;
++ i->i_size = 0;
++ if (inodeb->guid == SQUASHFS_GUIDS)
++ i->i_gid = i->i_uid;
++ else
++ i->i_gid = msblk->guid[inodeb->guid];
++ }
++
++ return i;
++}
++
++
++static struct inode *squashfs_iget_2(struct super_block *s, squashfs_inode_t inode)
++{
++ struct inode *i;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ unsigned int block = SQUASHFS_INODE_BLK(inode) +
++ sblk->inode_table_start;
++ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
++ unsigned int ino = SQUASHFS_MK_VFS_INODE(block
++ - sblk->inode_table_start, offset);
++ long long next_block;
++ unsigned int next_offset;
++ union squashfs_inode_header_2 id, sid;
++ struct squashfs_base_inode_header_2 *inodeb = &id.base,
++ *sinodeb = &sid.base;
++
++ TRACE("Entered squashfs_iget\n");
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
++ offset, sizeof(*sinodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_BASE_INODE_HEADER_2(inodeb, sinodeb,
++ sizeof(*sinodeb));
++ } else
++ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
++ offset, sizeof(*inodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ switch(inodeb->inode_type) {
++ case SQUASHFS_FILE_TYPE: {
++ struct squashfs_reg_inode_header_2 *inodep = &id.reg;
++ struct squashfs_reg_inode_header_2 *sinodep = &sid.reg;
++ long long frag_blk;
++ unsigned int frag_size;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_REG_INODE_HEADER_2(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ frag_blk = SQUASHFS_INVALID_BLK;
++ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
++ !get_fragment_location_2(s,
++ inodep->fragment, &frag_blk, &frag_size))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->file_size;
++ i->i_fop = &generic_ro_fops;
++ i->i_mode |= S_IFREG;
++ i->i_mtime.tv_sec = inodep->mtime;
++ i->i_atime.tv_sec = inodep->mtime;
++ i->i_ctime.tv_sec = inodep->mtime;
++ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++ if (sblk->block_size > 4096)
++ i->i_data.a_ops = &squashfs_aops;
++ else
++ i->i_data.a_ops = &squashfs_aops_4K;
++
++ TRACE("File inode %x:%x, start_block %x, "
++ "block_list_start %llx, offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, next_block,
++ next_offset);
++ break;
++ }
++ case SQUASHFS_DIR_TYPE: {
++ struct squashfs_dir_inode_header_2 *inodep = &id.dir;
++ struct squashfs_dir_inode_header_2 *sinodep = &sid.dir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DIR_INODE_HEADER_2(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops_2;
++ i->i_fop = &squashfs_dir_ops_2;
++ i->i_mode |= S_IFDIR;
++ i->i_mtime.tv_sec = inodep->mtime;
++ i->i_atime.tv_sec = inodep->mtime;
++ i->i_ctime.tv_sec = inodep->mtime;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
++ SQUASHFS_I(i)->u.s2.parent_inode = 0;
++
++ TRACE("Directory inode %x:%x, start_block %x, offset "
++ "%x\n", SQUASHFS_INODE_BLK(inode),
++ offset, inodep->start_block,
++ inodep->offset);
++ break;
++ }
++ case SQUASHFS_LDIR_TYPE: {
++ struct squashfs_ldir_inode_header_2 *inodep = &id.ldir;
++ struct squashfs_ldir_inode_header_2 *sinodep = &sid.ldir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_LDIR_INODE_HEADER_2(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops_2;
++ i->i_fop = &squashfs_dir_ops_2;
++ i->i_mode |= S_IFDIR;
++ i->i_mtime.tv_sec = inodep->mtime;
++ i->i_atime.tv_sec = inodep->mtime;
++ i->i_ctime.tv_sec = inodep->mtime;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
++ SQUASHFS_I(i)->u.s2.directory_index_offset =
++ next_offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count =
++ inodep->i_count;
++ SQUASHFS_I(i)->u.s2.parent_inode = 0;
++
++ TRACE("Long directory inode %x:%x, start_block %x, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, inodep->offset);
++ break;
++ }
++ case SQUASHFS_SYMLINK_TYPE: {
++ struct squashfs_symlink_inode_header_2 *inodep =
++ &id.symlink;
++ struct squashfs_symlink_inode_header_2 *sinodep =
++ &sid.symlink;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->symlink_size;
++ i->i_op = &page_symlink_inode_operations;
++ i->i_data.a_ops = &squashfs_symlink_aops;
++ i->i_mode |= S_IFLNK;
++ SQUASHFS_I(i)->start_block = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++
++ TRACE("Symbolic link inode %x:%x, start_block %llx, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ next_block, next_offset);
++ break;
++ }
++ case SQUASHFS_BLKDEV_TYPE:
++ case SQUASHFS_CHRDEV_TYPE: {
++ struct squashfs_dev_inode_header_2 *inodep = &id.dev;
++ struct squashfs_dev_inode_header_2 *sinodep = &sid.dev;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DEV_INODE_HEADER_2(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_mode |= (inodeb->inode_type ==
++ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
++ S_IFBLK;
++ init_special_inode(i, i->i_mode,
++ old_decode_dev(inodep->rdev));
++
++ TRACE("Device inode %x:%x, rdev %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->rdev);
++ break;
++ }
++ case SQUASHFS_FIFO_TYPE:
++ case SQUASHFS_SOCKET_TYPE: {
++ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
++ ? S_IFIFO : S_IFSOCK;
++ init_special_inode(i, i->i_mode, 0);
++ break;
++ }
++ default:
++ ERROR("Unknown inode type %d in squashfs_iget!\n",
++ inodeb->inode_type);
++ goto failed_read1;
++ }
++
++ insert_inode_hash(i);
++ return i;
++
++failed_read:
++ ERROR("Unable to read inode [%x:%x]\n", block, offset);
++
++failed_read1:
++ return NULL;
++}
++
++
++static int get_dir_index_using_offset(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ long long f_pos)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ struct squashfs_dir_index_2 index;
++
++ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
++ i_count, (unsigned int) f_pos);
++
++ if (f_pos == 0)
++ goto finish;
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index_2 sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX_2(&index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) &index,
++ index_start, index_offset,
++ sizeof(index), &index_start,
++ &index_offset);
++
++ if (index.index > f_pos)
++ break;
++
++ squashfs_get_cached_block(s, NULL, index_start, index_offset,
++ index.size + 1, &index_start,
++ &index_offset);
++
++ length = index.index;
++ *next_block = index.start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++
++finish:
++ return length;
++}
++
++
++static int get_dir_index_using_name(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ const char *name, int size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ char buffer[sizeof(struct squashfs_dir_index_2) + SQUASHFS_NAME_LEN + 1];
++ struct squashfs_dir_index_2 *index = (struct squashfs_dir_index_2 *) buffer;
++ char str[SQUASHFS_NAME_LEN + 1];
++
++ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
++
++ strncpy(str, name, size);
++ str[size] = '\0';
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index_2 sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX_2(index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) index,
++ index_start, index_offset,
++ sizeof(struct squashfs_dir_index_2),
++ &index_start, &index_offset);
++
++ squashfs_get_cached_block(s, index->name, index_start,
++ index_offset, index->size + 1,
++ &index_start, &index_offset);
++
++ index->name[index->size + 1] = '\0';
++
++ if (strcmp(index->name, str) > 0)
++ break;
++
++ length = index->index;
++ *next_block = index->start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++ return length;
++}
++
++
++static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir)
++{
++ struct inode *i = file->f_dentry->d_inode;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
++ dir_count;
++ struct squashfs_dir_header_2 dirh;
++ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN + 1];
++ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
++
++ TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset);
++
++ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count,
++ file->f_pos);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header_2 sdirh;
++
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry_2 sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block, next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block, next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset,
++ dire->size + 1, &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (file->f_pos >= length)
++ continue;
++
++ dire->name[dire->size + 1] = '\0';
++
++ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d)\n",
++ (unsigned int) dirent, dire->name,
++ dire->size + 1, (int) file->f_pos,
++ dirh.start_block, dire->offset,
++ squashfs_filetype_table[dire->type]);
++
++ if (filldir(dirent, dire->name, dire->size + 1,
++ file->f_pos, SQUASHFS_MK_VFS_INODE(
++ dirh.start_block, dire->offset),
++ squashfs_filetype_table[dire->type])
++ < 0) {
++ TRACE("Filldir returned less than 0\n");
++ goto finish;
++ }
++ file->f_pos = length;
++ dirs_read++;
++ }
++ }
++
++finish:
++ return dirs_read;
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ return 0;
++}
++
++
++static struct dentry *squashfs_lookup_2(struct inode *i, struct dentry *dentry,
++ struct nameidata *nd)
++{
++ const unsigned char *name = dentry->d_name.name;
++ int len = dentry->d_name.len;
++ struct inode *inode = NULL;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0,
++ dir_count;
++ struct squashfs_dir_header_2 dirh;
++ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN];
++ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
++ int sorted = sblk->s_major == 2 && sblk->s_minor >= 1;
++
++ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
++
++ if (len > SQUASHFS_NAME_LEN)
++ goto exit_loop;
++
++ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count, name,
++ len);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header_2 sdirh;
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry_2 sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block,next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block,next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset, dire->size + 1,
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (sorted && name[0] < dire->name[0])
++ goto exit_loop;
++
++ if ((len == dire->size + 1) && !strncmp(name,
++ dire->name, len)) {
++ squashfs_inode_t ino =
++ SQUASHFS_MKINODE(dirh.start_block,
++ dire->offset);
++
++ TRACE("calling squashfs_iget for directory "
++ "entry %s, inode %x:%x, %lld\n", name,
++ dirh.start_block, dire->offset, ino);
++
++ inode = (msblk->iget)(i->i_sb, ino);
++
++ goto exit_loop;
++ }
++ }
++ }
++
++exit_loop:
++ d_add(dentry, inode);
++ return ERR_PTR(0);
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ goto exit_loop;
++}
++
++
++int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
++{
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ msblk->iget = squashfs_iget_2;
++ msblk->read_fragment_index_table = read_fragment_index_table_2;
++
++ sblk->bytes_used = sblk->bytes_used_2;
++ sblk->uid_start = sblk->uid_start_2;
++ sblk->guid_start = sblk->guid_start_2;
++ sblk->inode_table_start = sblk->inode_table_start_2;
++ sblk->directory_table_start = sblk->directory_table_start_2;
++ sblk->fragment_table_start = sblk->fragment_table_start_2;
++
++ return 1;
++}
+Index: git/fs/squashfs/squashfs.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/fs/squashfs/squashfs.h 2006-10-31 21:26:45.000000000 +0000
+@@ -0,0 +1,86 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs.h
++ */
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++#endif
++
++#ifdef SQUASHFS_TRACE
++#define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args)
++#else
++#define TRACE(s, args...) {}
++#endif
++
++#define ERROR(s, args...) printk(KERN_ERR "SQUASHFS error: "s, ## args)
++
++#define SERROR(s, args...) do { \
++ if (!silent) \
++ printk(KERN_ERR "SQUASHFS error: "s, ## args);\
++ } while(0)
++
++#define WARNING(s, args...) printk(KERN_WARNING "SQUASHFS: "s, ## args)
++
++static inline struct squashfs_inode_info *SQUASHFS_I(struct inode *inode)
++{
++ return list_entry(inode, struct squashfs_inode_info, vfs_inode);
++}
++
++#if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY ) || defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY)
++#define SQSH_EXTERN
++extern unsigned int squashfs_read_data(struct super_block *s, char *buffer,
++ long long index, unsigned int length,
++ long long *next_index);
++extern int squashfs_get_cached_block(struct super_block *s, char *buffer,
++ long long block, unsigned int offset,
++ int length, long long *next_block,
++ unsigned int *next_offset);
++extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct
++ squashfs_fragment_cache *fragment);
++extern struct squashfs_fragment_cache *get_cached_fragment(struct super_block
++ *s, long long start_block,
++ int length);
++extern struct address_space_operations squashfs_symlink_aops;
++extern struct address_space_operations squashfs_aops;
++extern struct address_space_operations squashfs_aops_4K;
++extern struct inode_operations squashfs_dir_inode_ops;
++#else
++#define SQSH_EXTERN static
++#endif
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk);
++#else
++static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk)
++{
++ return 0;
++}
++#endif
++
++#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk);
++#else
++static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
++{
++ return 0;
++}
++#endif
+Index: git/include/linux/squashfs_fs.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/include/linux/squashfs_fs.h 2006-10-31 21:26:45.000000000 +0000
+@@ -0,0 +1,911 @@
++#ifndef SQUASHFS_FS
++#define SQUASHFS_FS
++
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs.h
++ */
++
++#ifndef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++#define CONFIG_SQUASHFS_2_0_COMPATIBILITY
++#endif
++
++#ifdef CONFIG_SQUASHFS_VMALLOC
++#define SQUASHFS_ALLOC(a) vmalloc(a)
++#define SQUASHFS_FREE(a) vfree(a)
++#else
++#define SQUASHFS_ALLOC(a) kmalloc(a, GFP_KERNEL)
++#define SQUASHFS_FREE(a) kfree(a)
++#endif
++#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
++#define SQUASHFS_MAJOR 3
++#define SQUASHFS_MINOR 0
++#define SQUASHFS_MAGIC 0x73717368
++#define SQUASHFS_MAGIC_SWAP 0x68737173
++#define SQUASHFS_START 0
++
++/* size of metadata (inode and directory) blocks */
++#define SQUASHFS_METADATA_SIZE 8192
++#define SQUASHFS_METADATA_LOG 13
++
++/* default size of data blocks */
++#define SQUASHFS_FILE_SIZE 65536
++#define SQUASHFS_FILE_LOG 16
++
++#define SQUASHFS_FILE_MAX_SIZE 65536
++
++/* Max number of uids and gids */
++#define SQUASHFS_UIDS 256
++#define SQUASHFS_GUIDS 255
++
++/* Max length of filename (not 255) */
++#define SQUASHFS_NAME_LEN 256
++
++#define SQUASHFS_INVALID ((long long) 0xffffffffffff)
++#define SQUASHFS_INVALID_FRAG ((unsigned int) 0xffffffff)
++#define SQUASHFS_INVALID_BLK ((long long) -1)
++#define SQUASHFS_USED_BLK ((long long) -2)
++
++/* Filesystem flags */
++#define SQUASHFS_NOI 0
++#define SQUASHFS_NOD 1
++#define SQUASHFS_CHECK 2
++#define SQUASHFS_NOF 3
++#define SQUASHFS_NO_FRAG 4
++#define SQUASHFS_ALWAYS_FRAG 5
++#define SQUASHFS_DUPLICATE 6
++
++#define SQUASHFS_BIT(flag, bit) ((flag >> bit) & 1)
++
++#define SQUASHFS_UNCOMPRESSED_INODES(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NOI)
++
++#define SQUASHFS_UNCOMPRESSED_DATA(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NOD)
++
++#define SQUASHFS_UNCOMPRESSED_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NOF)
++
++#define SQUASHFS_NO_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NO_FRAG)
++
++#define SQUASHFS_ALWAYS_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_ALWAYS_FRAG)
++
++#define SQUASHFS_DUPLICATES(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_DUPLICATE)
++
++#define SQUASHFS_CHECK_DATA(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_CHECK)
++
++#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
++ duplicate_checking) (noi | (nod << 1) | (check_data << 2) \
++ | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
++ (duplicate_checking << 6))
++
++/* Max number of types and file types */
++#define SQUASHFS_DIR_TYPE 1
++#define SQUASHFS_FILE_TYPE 2
++#define SQUASHFS_SYMLINK_TYPE 3
++#define SQUASHFS_BLKDEV_TYPE 4
++#define SQUASHFS_CHRDEV_TYPE 5
++#define SQUASHFS_FIFO_TYPE 6
++#define SQUASHFS_SOCKET_TYPE 7
++#define SQUASHFS_LDIR_TYPE 8
++#define SQUASHFS_LREG_TYPE 9
++
++/* 1.0 filesystem type definitions */
++#define SQUASHFS_TYPES 5
++#define SQUASHFS_IPC_TYPE 0
++
++/* Flag whether block is compressed or uncompressed, bit is set if block is
++ * uncompressed */
++#define SQUASHFS_COMPRESSED_BIT (1 << 15)
++
++#define SQUASHFS_COMPRESSED_SIZE(B) (((B) & ~SQUASHFS_COMPRESSED_BIT) ? \
++ (B) & ~SQUASHFS_COMPRESSED_BIT : SQUASHFS_COMPRESSED_BIT)
++
++#define SQUASHFS_COMPRESSED(B) (!((B) & SQUASHFS_COMPRESSED_BIT))
++
++#define SQUASHFS_COMPRESSED_BIT_BLOCK (1 << 24)
++
++#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B) (((B) & \
++ ~SQUASHFS_COMPRESSED_BIT_BLOCK) ? (B) & \
++ ~SQUASHFS_COMPRESSED_BIT_BLOCK : SQUASHFS_COMPRESSED_BIT_BLOCK)
++
++#define SQUASHFS_COMPRESSED_BLOCK(B) (!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
++
++/*
++ * Inode number ops. Inodes consist of a compressed block number, and an
++ * uncompressed offset within that block
++ */
++#define SQUASHFS_INODE_BLK(a) ((unsigned int) ((a) >> 16))
++
++#define SQUASHFS_INODE_OFFSET(a) ((unsigned int) ((a) & 0xffff))
++
++#define SQUASHFS_MKINODE(A, B) ((squashfs_inode_t)(((squashfs_inode_t) (A)\
++ << 16) + (B)))
++
++/* Compute 32 bit VFS inode number from squashfs inode number */
++#define SQUASHFS_MK_VFS_INODE(a, b) ((unsigned int) (((a) << 8) + \
++ ((b) >> 2) + 1))
++/* XXX */
++
++/* Translate between VFS mode and squashfs mode */
++#define SQUASHFS_MODE(a) ((a) & 0xfff)
++
++/* fragment and fragment table defines */
++#define SQUASHFS_FRAGMENT_BYTES(A) (A * sizeof(struct squashfs_fragment_entry))
++
++#define SQUASHFS_FRAGMENT_INDEX(A) (SQUASHFS_FRAGMENT_BYTES(A) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_OFFSET(A) (SQUASHFS_FRAGMENT_BYTES(A) % \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEXES(A) ((SQUASHFS_FRAGMENT_BYTES(A) + \
++ SQUASHFS_METADATA_SIZE - 1) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_BYTES(A) (SQUASHFS_FRAGMENT_INDEXES(A) *\
++ sizeof(long long))
++
++/* cached data constants for filesystem */
++#define SQUASHFS_CACHED_BLKS 8
++
++#define SQUASHFS_MAX_FILE_SIZE_LOG 64
++
++#define SQUASHFS_MAX_FILE_SIZE ((long long) 1 << \
++ (SQUASHFS_MAX_FILE_SIZE_LOG - 2))
++
++#define SQUASHFS_MARKER_BYTE 0xff
++
++/* meta index cache */
++#define SQUASHFS_META_INDEXES (SQUASHFS_METADATA_SIZE / sizeof(unsigned int))
++#define SQUASHFS_META_ENTRIES 31
++#define SQUASHFS_META_NUMBER 8
++#define SQUASHFS_SLOTS 4
++
++struct meta_entry {
++ long long data_block;
++ unsigned int index_block;
++ unsigned short offset;
++ unsigned short pad;
++};
++
++struct meta_index {
++ unsigned int inode_number;
++ unsigned int offset;
++ unsigned short entries;
++ unsigned short skip;
++ unsigned short locked;
++ unsigned short pad;
++ struct meta_entry meta_entry[SQUASHFS_META_ENTRIES];
++};
++
++
++/*
++ * definitions for structures on disk
++ */
++
++typedef long long squashfs_block_t;
++typedef long long squashfs_inode_t;
++
++struct squashfs_super_block {
++ unsigned int s_magic;
++ unsigned int inodes;
++ unsigned int bytes_used_2;
++ unsigned int uid_start_2;
++ unsigned int guid_start_2;
++ unsigned int inode_table_start_2;
++ unsigned int directory_table_start_2;
++ unsigned int s_major:16;
++ unsigned int s_minor:16;
++ unsigned int block_size_1:16;
++ unsigned int block_log:16;
++ unsigned int flags:8;
++ unsigned int no_uids:8;
++ unsigned int no_guids:8;
++ unsigned int mkfs_time /* time of filesystem creation */;
++ squashfs_inode_t root_inode;
++ unsigned int block_size;
++ unsigned int fragments;
++ unsigned int fragment_table_start_2;
++ long long bytes_used;
++ long long uid_start;
++ long long guid_start;
++ long long inode_table_start;
++ long long directory_table_start;
++ long long fragment_table_start;
++ long long unused;
++} __attribute__ ((packed));
++
++struct squashfs_dir_index {
++ unsigned int index;
++ unsigned int start_block;
++ unsigned char size;
++ unsigned char name[0];
++} __attribute__ ((packed));
++
++#define SQUASHFS_BASE_INODE_HEADER \
++ unsigned int inode_type:4; \
++ unsigned int mode:12; \
++ unsigned int uid:8; \
++ unsigned int guid:8; \
++ unsigned int mtime; \
++ unsigned int inode_number;
++
++struct squashfs_base_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned short rdev;
++} __attribute__ ((packed));
++
++struct squashfs_symlink_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned short symlink_size;
++ char symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ squashfs_block_t start_block;
++ unsigned int fragment;
++ unsigned int offset;
++ unsigned int file_size;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_lreg_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ squashfs_block_t start_block;
++ unsigned int fragment;
++ unsigned int offset;
++ long long file_size;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned int file_size:19;
++ unsigned int offset:13;
++ unsigned int start_block;
++ unsigned int parent_inode;
++} __attribute__ ((packed));
++
++struct squashfs_ldir_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned int file_size:27;
++ unsigned int offset:13;
++ unsigned int start_block;
++ unsigned int i_count:16;
++ unsigned int parent_inode;
++ struct squashfs_dir_index index[0];
++} __attribute__ ((packed));
++
++union squashfs_inode_header {
++ struct squashfs_base_inode_header base;
++ struct squashfs_dev_inode_header dev;
++ struct squashfs_symlink_inode_header symlink;
++ struct squashfs_reg_inode_header reg;
++ struct squashfs_lreg_inode_header lreg;
++ struct squashfs_dir_inode_header dir;
++ struct squashfs_ldir_inode_header ldir;
++ struct squashfs_ipc_inode_header ipc;
++};
++
++struct squashfs_dir_entry {
++ unsigned int offset:13;
++ unsigned int type:3;
++ unsigned int size:8;
++ int inode_number:16;
++ char name[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_header {
++ unsigned int count:8;
++ unsigned int start_block;
++ unsigned int inode_number;
++} __attribute__ ((packed));
++
++struct squashfs_fragment_entry {
++ long long start_block;
++ unsigned int size;
++ unsigned int unused;
++} __attribute__ ((packed));
++
++extern int squashfs_uncompress_block(void *d, int dstlen, void *s, int srclen);
++extern int squashfs_uncompress_init(void);
++extern int squashfs_uncompress_exit(void);
++
++/*
++ * macros to convert each packed bitfield structure from little endian to big
++ * endian and vice versa. These are needed when creating or using a filesystem
++ * on a machine with different byte ordering to the target architecture.
++ *
++ */
++
++#define SQUASHFS_SWAP_START \
++ int bits;\
++ int b_pos;\
++ unsigned long long val;\
++ unsigned char *s;\
++ unsigned char *d;
++
++#define SQUASHFS_SWAP_SUPER_BLOCK(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_super_block));\
++ SQUASHFS_SWAP((s)->s_magic, d, 0, 32);\
++ SQUASHFS_SWAP((s)->inodes, d, 32, 32);\
++ SQUASHFS_SWAP((s)->bytes_used_2, d, 64, 32);\
++ SQUASHFS_SWAP((s)->uid_start_2, d, 96, 32);\
++ SQUASHFS_SWAP((s)->guid_start_2, d, 128, 32);\
++ SQUASHFS_SWAP((s)->inode_table_start_2, d, 160, 32);\
++ SQUASHFS_SWAP((s)->directory_table_start_2, d, 192, 32);\
++ SQUASHFS_SWAP((s)->s_major, d, 224, 16);\
++ SQUASHFS_SWAP((s)->s_minor, d, 240, 16);\
++ SQUASHFS_SWAP((s)->block_size_1, d, 256, 16);\
++ SQUASHFS_SWAP((s)->block_log, d, 272, 16);\
++ SQUASHFS_SWAP((s)->flags, d, 288, 8);\
++ SQUASHFS_SWAP((s)->no_uids, d, 296, 8);\
++ SQUASHFS_SWAP((s)->no_guids, d, 304, 8);\
++ SQUASHFS_SWAP((s)->mkfs_time, d, 312, 32);\
++ SQUASHFS_SWAP((s)->root_inode, d, 344, 64);\
++ SQUASHFS_SWAP((s)->block_size, d, 408, 32);\
++ SQUASHFS_SWAP((s)->fragments, d, 440, 32);\
++ SQUASHFS_SWAP((s)->fragment_table_start_2, d, 472, 32);\
++ SQUASHFS_SWAP((s)->bytes_used, d, 504, 64);\
++ SQUASHFS_SWAP((s)->uid_start, d, 568, 64);\
++ SQUASHFS_SWAP((s)->guid_start, d, 632, 64);\
++ SQUASHFS_SWAP((s)->inode_table_start, d, 696, 64);\
++ SQUASHFS_SWAP((s)->directory_table_start, d, 760, 64);\
++ SQUASHFS_SWAP((s)->fragment_table_start, d, 824, 64);\
++ SQUASHFS_SWAP((s)->unused, d, 888, 64);\
++}
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
++ SQUASHFS_MEMSET(s, d, n);\
++ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
++ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
++ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
++ SQUASHFS_SWAP((s)->inode_number, d, 64, 32);
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER(s, d, n) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_ipc_inode_header))\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++}
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_dev_inode_header)); \
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->rdev, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_symlink_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->symlink_size, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_reg_inode_header));\
++ SQUASHFS_SWAP((s)->start_block, d, 96, 64);\
++ SQUASHFS_SWAP((s)->fragment, d, 160, 32);\
++ SQUASHFS_SWAP((s)->offset, d, 192, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 224, 32);\
++}
++
++#define SQUASHFS_SWAP_LREG_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_lreg_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 128, 64);\
++ SQUASHFS_SWAP((s)->fragment, d, 192, 32);\
++ SQUASHFS_SWAP((s)->offset, d, 224, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 256, 64);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_dir_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 128, 19);\
++ SQUASHFS_SWAP((s)->offset, d, 147, 13);\
++ SQUASHFS_SWAP((s)->start_block, d, 160, 32);\
++ SQUASHFS_SWAP((s)->parent_inode, d, 192, 32);\
++}
++
++#define SQUASHFS_SWAP_LDIR_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_ldir_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 128, 27);\
++ SQUASHFS_SWAP((s)->offset, d, 155, 13);\
++ SQUASHFS_SWAP((s)->start_block, d, 168, 32);\
++ SQUASHFS_SWAP((s)->i_count, d, 200, 16);\
++ SQUASHFS_SWAP((s)->parent_inode, d, 216, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INDEX(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index));\
++ SQUASHFS_SWAP((s)->index, d, 0, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 32, 32);\
++ SQUASHFS_SWAP((s)->size, d, 64, 8);\
++}
++
++#define SQUASHFS_SWAP_DIR_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header));\
++ SQUASHFS_SWAP((s)->count, d, 0, 8);\
++ SQUASHFS_SWAP((s)->start_block, d, 8, 32);\
++ SQUASHFS_SWAP((s)->inode_number, d, 40, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_ENTRY(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry));\
++ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
++ SQUASHFS_SWAP((s)->type, d, 13, 3);\
++ SQUASHFS_SWAP((s)->size, d, 16, 8);\
++ SQUASHFS_SWAP((s)->inode_number, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_ENTRY(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry));\
++ SQUASHFS_SWAP((s)->start_block, d, 0, 64);\
++ SQUASHFS_SWAP((s)->size, d, 64, 32);\
++}
++
++#define SQUASHFS_SWAP_SHORTS(s, d, n) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * 2);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ 16)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, 16);\
++}
++
++#define SQUASHFS_SWAP_INTS(s, d, n) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * 4);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ 32)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, 32);\
++}
++
++#define SQUASHFS_SWAP_LONG_LONGS(s, d, n) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * 8);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ 64)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, 64);\
++}
++
++#define SQUASHFS_SWAP_DATA(s, d, n, bits) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * bits / 8);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ bits)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, bits);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_INDEXES(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++
++struct squashfs_base_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned int type:4;
++ unsigned int offset:4;
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned short rdev;
++} __attribute__ ((packed));
++
++struct squashfs_symlink_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned short symlink_size;
++ char symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned int mtime;
++ unsigned int start_block;
++ unsigned int file_size:32;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned int file_size:19;
++ unsigned int offset:13;
++ unsigned int mtime;
++ unsigned int start_block:24;
++} __attribute__ ((packed));
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n) \
++ SQUASHFS_MEMSET(s, d, n);\
++ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++ SQUASHFS_SWAP((s)->uid, d, 16, 4);\
++ SQUASHFS_SWAP((s)->guid, d, 20, 4);
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER_1(s, d, n) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_ipc_inode_header_1));\
++ SQUASHFS_SWAP((s)->type, d, 24, 4);\
++ SQUASHFS_SWAP((s)->offset, d, 28, 4);\
++}
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_dev_inode_header_1));\
++ SQUASHFS_SWAP((s)->rdev, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_symlink_inode_header_1));\
++ SQUASHFS_SWAP((s)->symlink_size, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_reg_inode_header_1));\
++ SQUASHFS_SWAP((s)->mtime, d, 24, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 56, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 88, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_dir_inode_header_1));\
++ SQUASHFS_SWAP((s)->file_size, d, 24, 19);\
++ SQUASHFS_SWAP((s)->offset, d, 43, 13);\
++ SQUASHFS_SWAP((s)->mtime, d, 56, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 88, 24);\
++}
++
++#endif
++
++#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++
++struct squashfs_dir_index_2 {
++ unsigned int index:27;
++ unsigned int start_block:29;
++ unsigned char size;
++ unsigned char name[0];
++} __attribute__ ((packed));
++
++struct squashfs_base_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned short rdev;
++} __attribute__ ((packed));
++
++struct squashfs_symlink_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned short symlink_size;
++ char symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned int mtime;
++ unsigned int start_block;
++ unsigned int fragment;
++ unsigned int offset;
++ unsigned int file_size:32;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned int file_size:19;
++ unsigned int offset:13;
++ unsigned int mtime;
++ unsigned int start_block:24;
++} __attribute__ ((packed));
++
++struct squashfs_ldir_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned int file_size:27;
++ unsigned int offset:13;
++ unsigned int mtime;
++ unsigned int start_block:24;
++ unsigned int i_count:16;
++ struct squashfs_dir_index_2 index[0];
++} __attribute__ ((packed));
++
++union squashfs_inode_header_2 {
++ struct squashfs_base_inode_header_2 base;
++ struct squashfs_dev_inode_header_2 dev;
++ struct squashfs_symlink_inode_header_2 symlink;
++ struct squashfs_reg_inode_header_2 reg;
++ struct squashfs_dir_inode_header_2 dir;
++ struct squashfs_ldir_inode_header_2 ldir;
++ struct squashfs_ipc_inode_header_2 ipc;
++};
++
++struct squashfs_dir_header_2 {
++ unsigned int count:8;
++ unsigned int start_block:24;
++} __attribute__ ((packed));
++
++struct squashfs_dir_entry_2 {
++ unsigned int offset:13;
++ unsigned int type:3;
++ unsigned int size:8;
++ char name[0];
++} __attribute__ ((packed));
++
++struct squashfs_fragment_entry_2 {
++ unsigned int start_block;
++ unsigned int size;
++} __attribute__ ((packed));
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
++ SQUASHFS_MEMSET(s, d, n);\
++ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
++ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, n) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER_2(s, d) \
++ SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, sizeof(struct squashfs_ipc_inode_header_2))
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_dev_inode_header_2)); \
++ SQUASHFS_SWAP((s)->rdev, d, 32, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_symlink_inode_header_2));\
++ SQUASHFS_SWAP((s)->symlink_size, d, 32, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_reg_inode_header_2));\
++ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 64, 32);\
++ SQUASHFS_SWAP((s)->fragment, d, 96, 32);\
++ SQUASHFS_SWAP((s)->offset, d, 128, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 160, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_dir_inode_header_2));\
++ SQUASHFS_SWAP((s)->file_size, d, 32, 19);\
++ SQUASHFS_SWAP((s)->offset, d, 51, 13);\
++ SQUASHFS_SWAP((s)->mtime, d, 64, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 96, 24);\
++}
++
++#define SQUASHFS_SWAP_LDIR_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_ldir_inode_header_2));\
++ SQUASHFS_SWAP((s)->file_size, d, 32, 27);\
++ SQUASHFS_SWAP((s)->offset, d, 59, 13);\
++ SQUASHFS_SWAP((s)->mtime, d, 72, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 104, 24);\
++ SQUASHFS_SWAP((s)->i_count, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_DIR_INDEX_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index_2));\
++ SQUASHFS_SWAP((s)->index, d, 0, 27);\
++ SQUASHFS_SWAP((s)->start_block, d, 27, 29);\
++ SQUASHFS_SWAP((s)->size, d, 56, 8);\
++}
++#define SQUASHFS_SWAP_DIR_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header_2));\
++ SQUASHFS_SWAP((s)->count, d, 0, 8);\
++ SQUASHFS_SWAP((s)->start_block, d, 8, 24);\
++}
++
++#define SQUASHFS_SWAP_DIR_ENTRY_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry_2));\
++ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
++ SQUASHFS_SWAP((s)->type, d, 13, 3);\
++ SQUASHFS_SWAP((s)->size, d, 16, 8);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_ENTRY_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry_2));\
++ SQUASHFS_SWAP((s)->start_block, d, 0, 32);\
++ SQUASHFS_SWAP((s)->size, d, 32, 32);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_INDEXES_2(s, d, n) SQUASHFS_SWAP_INTS(s, d, n)
++
++/* fragment and fragment table defines */
++#define SQUASHFS_FRAGMENT_BYTES_2(A) (A * sizeof(struct squashfs_fragment_entry_2))
++
++#define SQUASHFS_FRAGMENT_INDEX_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_OFFSET_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) % \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEXES_2(A) ((SQUASHFS_FRAGMENT_BYTES_2(A) + \
++ SQUASHFS_METADATA_SIZE - 1) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_BYTES_2(A) (SQUASHFS_FRAGMENT_INDEXES_2(A) *\
++ sizeof(int))
++
++#endif
++
++#ifdef __KERNEL__
++
++/*
++ * macros used to swap each structure entry, taking into account
++ * bitfields and different bitfield placing conventions on differing
++ * architectures
++ */
++
++#include <asm/byteorder.h>
++
++#ifdef __BIG_ENDIAN
++ /* convert from little endian to big endian */
++#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
++ tbits, b_pos)
++#else
++ /* convert from big endian to little endian */
++#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
++ tbits, 64 - tbits - b_pos)
++#endif
++
++#define _SQUASHFS_SWAP(value, p, pos, tbits, SHIFT) {\
++ b_pos = pos % 8;\
++ val = 0;\
++ s = (unsigned char *)p + (pos / 8);\
++ d = ((unsigned char *) &val) + 7;\
++ for(bits = 0; bits < (tbits + b_pos); bits += 8) \
++ *d-- = *s++;\
++ value = (val >> (SHIFT))/* & ((1 << tbits) - 1)*/;\
++}
++
++#define SQUASHFS_MEMSET(s, d, n) memset(s, 0, n);
++
++#endif
++#endif
+Index: git/include/linux/squashfs_fs_i.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/include/linux/squashfs_fs_i.h 2006-10-31 21:26:45.000000000 +0000
+@@ -0,0 +1,45 @@
++#ifndef SQUASHFS_FS_I
++#define SQUASHFS_FS_I
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs_i.h
++ */
++
++struct squashfs_inode_info {
++ long long start_block;
++ unsigned int offset;
++ union {
++ struct {
++ long long fragment_start_block;
++ unsigned int fragment_size;
++ unsigned int fragment_offset;
++ long long block_list_start;
++ } s1;
++ struct {
++ long long directory_index_start;
++ unsigned int directory_index_offset;
++ unsigned int directory_index_count;
++ unsigned int parent_inode;
++ } s2;
++ } u;
++ struct inode vfs_inode;
++};
++#endif
+Index: git/include/linux/squashfs_fs_sb.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/include/linux/squashfs_fs_sb.h 2006-10-31 21:26:45.000000000 +0000
+@@ -0,0 +1,74 @@
++#ifndef SQUASHFS_FS_SB
++#define SQUASHFS_FS_SB
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs_sb.h
++ */
++
++#include <linux/squashfs_fs.h>
++
++struct squashfs_cache {
++ long long block;
++ int length;
++ long long next_index;
++ char *data;
++};
++
++struct squashfs_fragment_cache {
++ long long block;
++ int length;
++ unsigned int locked;
++ char *data;
++};
++
++struct squashfs_sb_info {
++ struct squashfs_super_block sblk;
++ int devblksize;
++ int devblksize_log2;
++ int swap;
++ struct squashfs_cache *block_cache;
++ struct squashfs_fragment_cache *fragment;
++ int next_cache;
++ int next_fragment;
++ int next_meta_index;
++ unsigned int *uid;
++ unsigned int *guid;
++ long long *fragment_index;
++ unsigned int *fragment_index_2;
++ unsigned int read_size;
++ char *read_data;
++ char *read_page;
++ struct semaphore read_data_mutex;
++ struct semaphore read_page_mutex;
++ struct semaphore block_cache_mutex;
++ struct semaphore fragment_mutex;
++ struct semaphore meta_index_mutex;
++ wait_queue_head_t waitq;
++ wait_queue_head_t fragment_wait_queue;
++ struct meta_index *meta_index;
++ struct inode *(*iget)(struct super_block *s, squashfs_inode_t \
++ inode);
++ long long (*read_blocklist)(struct inode *inode, int \
++ index, int readahead_blks, char *block_list, \
++ unsigned short **block_p, unsigned int *bsize);
++ int (*read_fragment_index_table)(struct super_block *s);
++};
++#endif
+Index: git/init/do_mounts_rd.c
+===================================================================
+--- git.orig/init/do_mounts_rd.c 2006-10-31 16:09:47.000000000 +0000
++++ git/init/do_mounts_rd.c 2006-10-31 21:26:45.000000000 +0000
+@@ -5,6 +5,7 @@
+ #include <linux/ext2_fs.h>
+ #include <linux/romfs_fs.h>
+ #include <linux/cramfs_fs.h>
++#include <linux/squashfs_fs.h>
+ #include <linux/initrd.h>
+ #include <linux/string.h>
+
+@@ -39,6 +40,7 @@ static int __init crd_load(int in_fd, in
+ * numbers could not be found.
+ *
+ * We currently check for the following magic numbers:
++ * squashfs
+ * minix
+ * ext2
+ * romfs
+@@ -53,6 +55,7 @@ identify_ramdisk_image(int fd, int start
+ struct ext2_super_block *ext2sb;
+ struct romfs_super_block *romfsb;
+ struct cramfs_super *cramfsb;
++ struct squashfs_super_block *squashfsb;
+ int nblocks = -1;
+ unsigned char *buf;
+
+@@ -64,6 +67,7 @@ identify_ramdisk_image(int fd, int start
+ ext2sb = (struct ext2_super_block *) buf;
+ romfsb = (struct romfs_super_block *) buf;
+ cramfsb = (struct cramfs_super *) buf;
++ squashfsb = (struct squashfs_super_block *) buf;
+ memset(buf, 0xe5, size);
+
+ /*
+@@ -101,6 +105,15 @@ identify_ramdisk_image(int fd, int start
+ goto done;
+ }
+
++ /* squashfs is at block zero too */
++ if (squashfsb->s_magic == SQUASHFS_MAGIC) {
++ printk(KERN_NOTICE
++ "RAMDISK: squashfs filesystem found at block %d\n",
++ start_block);
++ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
++ goto done;
++ }
++
+ /*
+ * Read block 1 to test for minix and ext2 superblock
+ */
diff --git a/packages/linux/linux-rp-2.6.20/vesafb-tng-1.0-rc2-2.6.20-rc2.patch b/packages/linux/linux-rp-2.6.20/vesafb-tng-1.0-rc2-2.6.20-rc2.patch
new file mode 100644
index 0000000000..b1b0fc3549
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/vesafb-tng-1.0-rc2-2.6.20-rc2.patch
@@ -0,0 +1,3141 @@
+diff --git a/Documentation/fb/vesafb.txt b/Documentation/fb/vesafb.txt
+index ee277dd..93d6e6e 100644
+--- a/Documentation/fb/vesafb.txt
++++ b/Documentation/fb/vesafb.txt
+@@ -2,16 +2,18 @@
+ What is vesafb?
+ ===============
+
+-This is a generic driver for a graphic framebuffer on intel boxes.
++Vesafb is a generic framebuffer driver for x86 and x86_64 boxes.
+
+-The idea is simple: Turn on graphics mode at boot time with the help
+-of the BIOS, and use this as framebuffer device /dev/fb0, like the m68k
+-(and other) ports do.
++VESA BIOS Extensions Version 2.0 are required, because we need access to
++a linear frame buffer. VBE 3.0 is required if you want to use modes with a
++higher (than the standard 60 Hz) refresh rate.
+
+-This means we decide at boot time whenever we want to run in text or
+-graphics mode. Switching mode later on (in protected mode) is
+-impossible; BIOS calls work in real mode only. VESA BIOS Extensions
+-Version 2.0 are required, because we need a linear frame buffer.
++The VESA framebuffer driver comes in two flavors - the standard 'vesafb'
++and 'vesafb-tng'. Vesafb-tng is available only on 32-bit x86 due to the
++technology it uses (vm86). Vesafb-tng has more features than vesafb
++(adjusting the refresh rate on VBE 3.0 compliant boards, switching the
++video mode without rebooting, selecting a mode by providing its
++modedb name, and more).
+
+ Advantages:
+
+@@ -29,26 +31,35 @@ Disadvantages:
+ How to use it?
+ ==============
+
+-Switching modes is done using the vga=... boot parameter. Read
+-Documentation/svga.txt for details.
++If you are running a 32-bit x86 system and you decide to use vesafb-tng,
++you can either compile the driver into the kernel or use it as a module.
++The graphics mode you want to use is in both cases specified using the
++standard modedb format.
+
+-You should compile in both vgacon (for text mode) and vesafb (for
+-graphics mode). Which of them takes over the console depends on
+-whenever the specified mode is text or graphics.
++If your system doesn't support vm86 calls, things get a little more tricky.
++Since on such systems you can't do BIOS calls from protected mode in which
++kernel runs, you have to decide at boot time whenever you want to run in text
++or in graphics mode. Switching mode later on is impossible. Switching modes
++is done using the vga=... boot parameter. Read Documentation/svga.txt for
++details. Below is a more detailed description of what to do on systems using
++the standard vesafb driver.
+
+-The graphic modes are NOT in the list which you get if you boot with
+-vga=ask and hit return. The mode you wish to use is derived from the
+-VESA mode number. Here are those VESA mode numbers:
++You should compile in both vgacon (for text mode) and vesafb (for graphics
++mode). Which of them takes over the console depends on whenever the
++specified mode is text or graphics.
++
++The graphic modes are NOT in the list which you get if you boot with vga=ask
++and hit return. The mode you wish to use is derived from the VESA mode number.
++Here are those VESA mode numbers:
+
+ | 640x480 800x600 1024x768 1280x1024
+ ----+-------------------------------------
+-256 | 0x101 0x103 0x105 0x107
+-32k | 0x110 0x113 0x116 0x119
+-64k | 0x111 0x114 0x117 0x11A
+-16M | 0x112 0x115 0x118 0x11B
++256 | 0x101 0x103 0x105 0x107
++32k | 0x110 0x113 0x116 0x119
++64k | 0x111 0x114 0x117 0x11A
++16M | 0x112 0x115 0x118 0x11B
+
+-The video mode number of the Linux kernel is the VESA mode number plus
+-0x200.
++The video mode number of the Linux kernel is the VESA mode number plus 0x200.
+
+ Linux_kernel_mode_number = VESA_mode_number + 0x200
+
+@@ -56,15 +67,15 @@ So the table for the Kernel mode numbers are:
+
+ | 640x480 800x600 1024x768 1280x1024
+ ----+-------------------------------------
+-256 | 0x301 0x303 0x305 0x307
+-32k | 0x310 0x313 0x316 0x319
+-64k | 0x311 0x314 0x317 0x31A
+-16M | 0x312 0x315 0x318 0x31B
++256 | 0x301 0x303 0x305 0x307
++32k | 0x310 0x313 0x316 0x319
++64k | 0x311 0x314 0x317 0x31A
++16M | 0x312 0x315 0x318 0x31B
+
+-To enable one of those modes you have to specify "vga=ask" in the
+-lilo.conf file and rerun LILO. Then you can type in the desired
+-mode at the "vga=ask" prompt. For example if you like to use
+-1024x768x256 colors you have to say "305" at this prompt.
++To enable one of those modes you have to specify "vga=ask" in the lilo.conf
++file and rerun LILO. Then you can type in the desired mode at the "vga=ask"
++prompt. For example if you like to use 1024x768x256 colors you have to say
++"305" at this prompt.
+
+ If this does not work, this might be because your BIOS does not support
+ linear framebuffers or because it does not support this mode at all.
+@@ -72,11 +83,12 @@ Even if your board does, it might be the BIOS which does not. VESA BIOS
+ Extensions v2.0 are required, 1.2 is NOT sufficient. You will get a
+ "bad mode number" message if something goes wrong.
+
+-1. Note: LILO cannot handle hex, for booting directly with
++1. Note: LILO cannot handle hex, for booting directly with
+ "vga=mode-number" you have to transform the numbers to decimal.
+ 2. Note: Some newer versions of LILO appear to work with those hex values,
+ if you set the 0x in front of the numbers.
+
++
+ X11
+ ===
+
+@@ -84,98 +96,164 @@ XF68_FBDev should work just fine, but it is non-accelerated. Running
+ another (accelerated) X-Server like XF86_SVGA might or might not work.
+ It depends on X-Server and graphics board.
+
+-The X-Server must restore the video mode correctly, else you end up
++The X-Server must restore the video mode correctly, or else you end up
+ with a broken console (and vesafb cannot do anything about this).
++With vesafb-tng chances are that the console will be restored properly
++even if the X server messes up the video mode.
+
+
+ Refresh rates
+ =============
+
+-There is no way to change the vesafb video mode and/or timings after
+-booting linux. If you are not happy with the 60 Hz refresh rate, you
+-have these options:
++With VBE 3.0 compatible BIOSes and vesafb-tng it is possible to change
++the refresh rate either at boot time (by specifying the @<rr> part of
++the mode name) or later, using the fbset utility.
++
++If you want to use the default BIOS refresh rate while switching modes
++on a running system, set pixclock to 0.
+
+- * configure and load the DOS-Tools for your the graphics board (if
+- available) and boot linux with loadlin.
+- * use a native driver (matroxfb/atyfb) instead if vesafb. If none
++With VBE 2.0 there is no way to change the mode timings after booting
++Linux. If you are not happy with the 60 Hz refresh rate, you have
++the following options:
++
++ * Configure and load the DOS tools for your the graphics board (if
++ available) and boot Linux with loadlin.
++ * Use a native driver (matroxfb/atyfb) instead of vesafb. If none
+ is available, write a new one!
+- * VBE 3.0 might work too. I have neither a gfx board with VBE 3.0
+- support nor the specs, so I have not checked this yet.
++ * Use a BIOS editor to change the default refresh rate (such an
++ editor does exist at least for ATI Radeon BIOSes).
++ * If you're running a non-vm86 and VBE 3.0 compatible system, you can
++ use a kernel patch (vesafb-rrc) to hard-code some mode timings in
++ the kernel and use these while setting the video mode at boot time.
++
++Note that there are some boards (nVidia 59**, 57** and newer models)
++claiming that their Video BIOS is VBE 3.0 compliant, while ignoring the
++CRTC values provided by software such as vesafb-tng. You'll not be able
++to adjust the refresh rate if you're using one of these boards.
+
+
+ Configuration
+ =============
+
+-The VESA BIOS provides protected mode interface for changing
+-some parameters. vesafb can use it for palette changes and
+-to pan the display. It is turned off by default because it
+-seems not to work with some BIOS versions, but there are options
+-to turn it on.
+-
+-You can pass options to vesafb using "video=vesafb:option" on
+-the kernel command line. Multiple options should be separated
+-by comma, like this: "video=vesafb:ypan,invers"
+-
+-Accepted options:
+-
+-invers no comment...
+-
+-ypan enable display panning using the VESA protected mode
+- interface. The visible screen is just a window of the
+- video memory, console scrolling is done by changing the
+- start of the window.
+- pro: * scrolling (fullscreen) is fast, because there is
+- no need to copy around data.
+- * You'll get scrollback (the Shift-PgUp thing),
+- the video memory can be used as scrollback buffer
+- kontra: * scrolling only parts of the screen causes some
+- ugly flicker effects (boot logo flickers for
+- example).
+-
+-ywrap Same as ypan, but assumes your gfx board can wrap-around
+- the video memory (i.e. starts reading from top if it
+- reaches the end of video memory). Faster than ypan.
+-
+-redraw scroll by redrawing the affected part of the screen, this
+- is the safe (and slow) default.
+-
+-
+-vgapal Use the standard vga registers for palette changes.
+- This is the default.
+-pmipal Use the protected mode interface for palette changes.
+-
+-mtrr:n setup memory type range registers for the vesafb framebuffer
+- where n:
+- 0 - disabled (equivalent to nomtrr) (default)
+- 1 - uncachable
+- 2 - write-back
+- 3 - write-combining
+- 4 - write-through
+-
+- If you see the following in dmesg, choose the type that matches the
+- old one. In this example, use "mtrr:2".
++The VESA BIOS provides protected mode interface for changing some parameters.
++vesafb can use it for palette changes and to pan the display. It is turned
++off by default because it seems not to work with some BIOS versions, but
++there are options to turn it on.
++
++You can pass options to vesafb using "video=vesafb:option" on the kernel
++command line. Multiple options should be separated by a comma, like this:
++"video=vesafb:ypan,1024x768-32@85"
++
++Note that vesafb-tng still uses the "video=vesafb:option" format of the
++kernel command line video parameter. "video=vesafb-tng:xxx" is incorrect.
++
++Accepted options (both vesafb and vesafb-tng):
++
++ypan Enable display panning using the VESA protected mode interface
++ The visible screen is just a window of the video memory,
++ console scrolling is done by changing the start of the window.
++ pro: * scrolling (fullscreen) is fast, because there is
++ no need to copy around data.
++ * you'll get scrollback (the Shift-PgUp thing),
++ the video memory can be used as scrollback buffer
++ con: * scrolling only parts of the screen causes some
++ ugly flicker effects (boot logo flickers for
++ example).
++
++ywrap Same as ypan, but assumes your gfx board can wrap-around the video
++ memory (i.e. starts reading from top if it reaches the end of
++ video memory). Faster than ypan.
++
++redraw Scroll by redrawing the affected part of the screen, this is the
++ safe (and slow) default.
++
++vgapal Use the standard VGA registers for palette changes.
++
++pmipal Use the protected mode interface for palette changes.
++ This is the default is the protected mode interface is available.
++
++mtrr:n Setup memory type range registers for the vesafb framebuffer
++ where n:
++ 0 - disabled (equivalent to nomtrr) (default)
++ 1 - uncachable
++ 2 - write-back
++ 3 - write-combining
++ 4 - write-through
++
++ If you see the following in dmesg, choose the type that matches
++ the old one. In this example, use "mtrr:2".
+ ...
+ mtrr: type mismatch for e0000000,8000000 old: write-back new: write-combining
+ ...
+
+-nomtrr disable mtrr
++nomtrr Do not use memory type range registers for vesafb.
+
+ vremap:n
+ remap 'n' MiB of video RAM. If 0 or not specified, remap memory
+- according to video mode. (2.5.66 patch/idea by Antonino Daplas
+- reversed to give override possibility (allocate more fb memory
+- than the kernel would) to 2.4 by tmb@iki.fi)
++ according to video mode. (2.5.66 patch/idea by Antonino Daplas
++ reversed to give override possibility (allocate more fb memory
++ than the kernel would) to 2.4 by tmb@iki.fi)
+
+ vtotal:n
+ if the video BIOS of your card incorrectly determines the total
+ amount of video RAM, use this option to override the BIOS (in MiB).
+
+-Have fun!
++Options accepted only by vesafb-tng:
++
++<mode> The mode you want to set, in the standard modedb format. Refer to
++ modedb.txt for a detailed description. If you specify a mode that is
++ not supported by your board's BIOS, vesafb-tng will attempt to set a
++ similar mode. The list of supported modes can be found in
++ /proc/fbx/modes, where x is the framebuffer number (usually 0).
++ When vesafb-tng is compiled as a module, the mode string should be
++ provided as a value of the parameter 'mode'.
++
++vbemode:x
++ Force the use of VBE mode x. The mode will only be set if it's
++ found in the VBE-provided list of supported modes.
++ NOTE: The mode number 'x' should be specified in VESA mode number
++ notation, not the Linux kernel one (eg. 257 instead of 769).
++ HINT: If you use this option because normal <mode> parameter does
++ not work for you and you use a X server, you'll probably want to
++ set the 'nocrtc' option to ensure that the video mode is properly
++ restored after console <-> X switches.
++
++nocrtc Do not use CRTC timings while setting the video mode. This option
++ makes sence only with VBE 3.0 compliant systems. Use it if you have
++ problems with modes set in the standard way. Note that using this
++ option means that any refresh rate adjustments will be ignored
++ and the refresh rate will stay at your BIOS default (60 Hz).
++
++noedid Do not try to fetch and use EDID-provided modes.
++
++noblank Disable hardware blanking.
++
++gtf Force the use of VESA's GTF (Generalized Timing Formula). Specifying
++ this will cause vesafb to skip its internal modedb and EDID-modedb
++ and jump straight to the GTF part of the code (normally used only if
++ everything else failed). This can be useful if you want to get as
++ much as possible from your graphics board but your BIOS doesn't
++ support modes with the refresh rates you require. Note that you may
++ need to specify the maxhf, maxvf and maxclk parameters if they are not
++ provided by the EDID block.
++
++Additionally, the following parameters may be provided. They all override the
++EDID-provided values and BIOS defaults. Refer to your monitor's specs to get
++the correct values for maxhf, maxvf and maxclk for your hardware.
++
++maxhf:n Maximum horizontal frequency (in kHz).
++maxvf:n Maximum vertical frequency (in Hz).
++maxclk:n Maximum pixel clock (in MHz).
+
+- Gerd
++Have fun!
+
+ --
++Original document for the vesafb driver by
+ Gerd Knorr <kraxel@goldbach.in-berlin.de>
+
+-Minor (mostly typo) changes
+-by Nico Schmoigl <schmoigl@rumms.uni-mannheim.de>
++Minor (mostly typo) changes by
++Nico Schmoigl <schmoigl@rumms.uni-mannheim.de>
++
++Extended documentation for vm86, VBE 3.0 and vesafb-tng by
++Michal Januszewski <spock@gentoo.org>
++
+diff --git a/arch/i386/boot/video.S b/arch/i386/boot/video.S
+index 2c5b5cc..2c2d4b5 100644
+--- a/arch/i386/boot/video.S
++++ b/arch/i386/boot/video.S
+@@ -163,10 +163,12 @@ basret: ret
+ # parameters in the default 80x25 mode -- these are set directly,
+ # because some very obscure BIOSes supply insane values.
+ mode_params:
++#ifdef CONFIG_FB_VESA_STD
+ #ifdef CONFIG_VIDEO_SELECT
+ cmpb $0, graphic_mode
+ jnz mopar_gr
+ #endif
++#endif
+ movb $0x03, %ah # Read cursor position
+ xorb %bh, %bh
+ int $0x10
+@@ -199,6 +201,7 @@ mopar2: movb %al, %fs:(PARAM_VIDEO_LINES)
+ ret
+
+ #ifdef CONFIG_VIDEO_SELECT
++#ifdef CONFIG_FB_VESA_STD
+ # Fetching of VESA frame buffer parameters
+ mopar_gr:
+ leaw modelist+1024, %di
+@@ -281,6 +284,7 @@ dac_done:
+ movw %es, %fs:(PARAM_VESAPM_SEG)
+ movw %di, %fs:(PARAM_VESAPM_OFF)
+ no_pm: ret
++#endif
+
+ # The video mode menu
+ mode_menu:
+@@ -495,10 +499,12 @@ mode_set:
+
+ cmpb $VIDEO_FIRST_V7>>8, %ah
+ jz setv7
+-
++
++#ifdef CONFIG_FB_VESA_STD
+ cmpb $VIDEO_FIRST_VESA>>8, %ah
+ jnc check_vesa
+-
++#endif
++
+ orb %ah, %ah
+ jz setmenu
+
+@@ -570,6 +576,7 @@ setr1: lodsw
+ movw -4(%si), %ax # Fetch mode ID
+ jmp _m_s
+
++#ifdef CONFIG_FB_VESA_STD
+ check_vesa:
+ leaw modelist+1024, %di
+ subb $VIDEO_FIRST_VESA>>8, %bh
+@@ -603,6 +610,7 @@ check_vesa:
+ ret
+
+ _setbad: jmp setbad # Ugly...
++#endif
+
+ # Recalculate vertical display end registers -- this fixes various
+ # inconsistencies of extended modes on many adapters. Called when
+diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c
+index 1393523..8a05f95 100644
+--- a/drivers/char/sysrq.c
++++ b/drivers/char/sysrq.c
+@@ -240,7 +240,7 @@ static void send_sig_all(int sig)
+ struct task_struct *p;
+
+ for_each_process(p) {
+- if (p->mm && !is_init(p))
++ if (p->mm && !is_init(p) && !(p->flags & PF_BORROWED_MM))
+ /* Not swapper, init nor kernel thread */
+ force_sig(sig, p);
+ }
+diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
+index 4e83f01..ae122fd 100644
+--- a/drivers/video/Kconfig
++++ b/drivers/video/Kconfig
+@@ -547,8 +547,22 @@ config FB_TGA
+ cards. Say Y if you have one of those.
+
+ config FB_VESA
+- bool "VESA VGA graphics support"
+- depends on (FB = y) && X86
++ tristate "VESA VGA graphics support"
++ depends on (FB = y) && (X86 || X86_64)
++ help
++ This is the frame buffer device driver for generic VESA 2.0
++ compliant graphic cards. The older VESA 1.2 cards are not supported.
++ You will get a boot time penguin logo at no additional cost. Please
++ read <file:Documentation/fb/vesafb.txt>. If unsure, say Y.
++
++choice
++ prompt "VESA driver type"
++ depends on FB_VESA
++ default FB_VESA_STD if X86_64
++ default FB_VESA_TNG if X86
++
++config FB_VESA_STD
++ bool "vesafb"
+ select FB_CFB_FILLRECT
+ select FB_CFB_COPYAREA
+ select FB_CFB_IMAGEBLIT
+@@ -557,7 +571,43 @@ config FB_VESA
+ This is the frame buffer device driver for generic VESA 2.0
+ compliant graphic cards. The older VESA 1.2 cards are not supported.
+ You will get a boot time penguin logo at no additional cost. Please
+- read <file:Documentation/fb/vesafb.txt>. If unsure, say Y.
++ read <file:Documentation/fb/vesafb.txt>. Choose this driver if you
++ are experiencing problems with vesafb-tng or if you own a 64-bit system.
++
++ Note that this driver cannot be compiled as a module.
++
++config FB_VESA_TNG
++ bool "vesafb-tng"
++ depends on !X86_64
++ select FB_MODE_HELPERS
++ select FB_CFB_FILLRECT
++ select FB_CFB_COPYAREA
++ select FB_CFB_IMAGEBLIT
++ help
++ This is an enhanced generic frame buffer device driver for
++ VBE 2.0 compliant graphic cards. It can take advantage of VBE 3.0
++ features (refresh rate adjustment) when these are available.
++ The driver also makes it possible to change the video mode
++ on the fly and to switch back to text mode when it's unloaded.
++
++ If the driver is compiled as a module, the module will be called
++ vesafb-tng.
++
++endchoice
++
++config FB_VESA_DEFAULT_MODE
++ string "VESA default mode"
++ depends on FB_VESA_TNG
++ default "640x480@60"
++ help
++ This option is used to determine the default mode vesafb is
++ supposed to switch to in case no mode is provided as a kernel
++ command line parameter.
++
++config VIDEO_SELECT
++ bool
++ depends on FB_VESA
++ default y
+
+ config FB_IMAC
+ bool "Intel-based Macintosh Framebuffer Support"
+diff --git a/drivers/video/Makefile b/drivers/video/Makefile
+index 309a26d..e57b0e7 100644
+--- a/drivers/video/Makefile
++++ b/drivers/video/Makefile
+@@ -102,7 +102,11 @@ obj-$(CONFIG_FB_PNX4008_DUM_RGB) += pnx4008/
+ obj-$(CONFIG_FB_IBM_GXT4500) += gxt4500.o
+
+ # Platform or fallback drivers go here
+-obj-$(CONFIG_FB_VESA) += vesafb.o
++ifeq ($(CONFIG_FB_VESA_STD),y)
++ obj-y += vesafb.o
++else
++ obj-$(CONFIG_FB_VESA) += vesafb-thread.o vesafb-tng.o
++endif
+ obj-$(CONFIG_FB_IMAC) += imacfb.o
+ obj-$(CONFIG_FB_VGA16) += vga16fb.o vgastate.o
+ obj-$(CONFIG_FB_OF) += offb.o
+diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
+index 3cfea31..bfb39cc 100644
+--- a/drivers/video/fbmem.c
++++ b/drivers/video/fbmem.c
+@@ -1408,6 +1408,7 @@ fbmem_init(void)
+ printk(KERN_WARNING "Unable to create fb class; errno = %ld\n", PTR_ERR(fb_class));
+ fb_class = NULL;
+ }
++
+ return 0;
+ }
+
+diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c
+index 5df41f6..f838a53 100644
+--- a/drivers/video/modedb.c
++++ b/drivers/video/modedb.c
+@@ -674,6 +674,7 @@ void fb_var_to_videomode(struct fb_videomode *mode,
+ {
+ u32 pixclock, hfreq, htotal, vtotal;
+
++ mode->refresh = 0;
+ mode->name = NULL;
+ mode->xres = var->xres;
+ mode->yres = var->yres;
+@@ -1025,3 +1026,4 @@ EXPORT_SYMBOL(fb_find_best_mode);
+ EXPORT_SYMBOL(fb_find_nearest_mode);
+ EXPORT_SYMBOL(fb_videomode_to_modelist);
+ EXPORT_SYMBOL(fb_find_mode);
++EXPORT_SYMBOL(fb_destroy_modelist);
+diff --git a/drivers/video/vesafb-thread.c b/drivers/video/vesafb-thread.c
+new file mode 100644
+index 0000000..543e202
+--- /dev/null
++++ b/drivers/video/vesafb-thread.c
+@@ -0,0 +1,751 @@
++/*
++ * Framebuffer driver for VBE 2.0+ compliant graphic boards.
++ * Kernel thread and vm86 routines.
++ *
++ * (c) 2004-2006 Michal Januszewski <spock@gentoo.org>
++ *
++ */
++
++#include <linux/workqueue.h>
++#include <linux/completion.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/errno.h>
++#include <linux/mm.h>
++#include <linux/delay.h>
++#include <linux/signal.h>
++#include <linux/freezer.h>
++#include <linux/suspend.h>
++#include <linux/unistd.h>
++#include <video/vesa.h>
++#include <video/edid.h>
++#include <asm/mman.h>
++#include <asm/page.h>
++#include <asm/vm86.h>
++#include <asm/thread_info.h>
++#include <asm/uaccess.h>
++#include <asm/mmu_context.h>
++#include "edid.h"
++
++static int errno;
++
++static DECLARE_COMPLETION(vesafb_th_completion);
++static DECLARE_MUTEX(vesafb_task_list_sem);
++static LIST_HEAD(vesafb_task_list);
++static DECLARE_WAIT_QUEUE_HEAD(vesafb_wait);
++
++static struct vm86_struct vm86;
++static int vesafb_pid = 0;
++
++#define DEFAULT_VM86_FLAGS (IF_MASK | IOPL_MASK)
++#define VM86_PUSHW(x) \
++do { \
++ vm86.regs.esp -= 2; \
++ *(u16*)(STACK_ADDR + vm86.regs.esp) = x; \
++} while(0);
++
++/* Stack, the return code and buffers will be put into
++ * one contiguous memory chunk:
++ *
++ * [ STACK | RET_CODE | BUFFER ]
++ *
++ * Some video BIOSes (sis6326) try to store data somewhere
++ * in 0x7000-0x7fff, so we zeromap more memory to be safe.
++ */
++#define IVTBDA_SIZE PAGE_SIZE
++#define RET_CODE_SIZE 0x0010
++#define STACK_SIZE 0x0500
++#define BUFFER_SIZE 0x10000
++
++/* The amount of memory that will be allocated should be a multiple
++ * of PAGE_SIZE. */
++#define __MEM_SIZE (RET_CODE_SIZE + STACK_SIZE + BUFFER_SIZE)
++#define REAL_MEM_SIZE (((__MEM_SIZE / PAGE_SIZE) + 1) * PAGE_SIZE)
++
++#define IVTBDA_ADDR 0x00000
++#define STACK_ADDR (IVTBDA_ADDR + IVTBDA_SIZE)
++#define RET_CODE_ADDR (STACK_ADDR + STACK_SIZE)
++#define BUF_ADDR (RET_CODE_ADDR + RET_CODE_SIZE)
++
++#define FLAG_D (1 << 10)
++
++/* Syscalls used by the vesafb thread */
++static int vm86old(struct vm86_struct __user* v86)
++{
++ long res;
++ __asm__ volatile ("push %%ebx; movl %2, %%ebx ; int $0x80 ; pop %%ebx"
++ : "=a" (res)
++ : "0" (__NR_vm86old), "ri" ((long)(v86)) : "memory");
++
++ if ((unsigned long)(res) >= (unsigned long)(-MAX_ERRNO)) {
++ errno = -res;
++ res = -1;
++ }
++ return (int)res;
++}
++
++static int ioperm(unsigned long a, unsigned long b, unsigned long c)
++{
++ long res;
++ __asm__ volatile ("push %%ebx; movl %2, %%ebx ; int $0x80 ; pop %%ebx"
++ : "=a" (res)
++ : "0" (__NR_ioperm), "ri" ((long)(a)), "c" ((long)(b)),
++ "d" ((long)(c)) : "memory");
++
++ if ((unsigned long)(res) >= (unsigned long)(-MAX_ERRNO)) {
++ errno = -res;
++ res = -1;
++ }
++ return (int)res;
++}
++
++/* Segment prefix opcodes */
++enum {
++ P_CS = 0x2e,
++ P_SS = 0x36,
++ P_DS = 0x3e,
++ P_ES = 0x26,
++ P_FS = 0x64,
++ P_GS = 0x65
++};
++
++/* Emulated vm86 ins instruction */
++static void vm86_ins(int size)
++{
++ u32 edx, edi;
++ edx = vm86.regs.edx & 0xffff;
++ edi = (vm86.regs.edi & 0xffff) + (u32)(vm86.regs.es << 4);
++
++ if (vm86.regs.eflags & FLAG_D)
++ asm volatile ("std\n");
++ else
++ asm volatile ("cld\n");
++
++ switch (size) {
++ case 4:
++ asm volatile ("insl\n" : "=D" (edi) : "d" (edx), "0" (edi));
++ break;
++ case 2:
++ asm volatile ("insw\n" : "=D" (edi) : "d" (edx), "0" (edi));
++ break;
++ case 1:
++ asm volatile ("insb\n" : "=D" (edi) : "d" (edx), "0" (edi));
++ break;
++ }
++
++ if (vm86.regs.eflags & FLAG_D)
++ asm volatile ("cld\n");
++
++ edi -= (u32)(vm86.regs.es << 4);
++
++ vm86.regs.edi &= 0xffff0000;
++ vm86.regs.edi |= edi & 0xffff;
++}
++
++static void vm86_rep_ins(int size)
++{
++ u16 cx = vm86.regs.ecx;
++ while (cx--)
++ vm86_ins(size);
++
++ vm86.regs.ecx &= 0xffff0000;
++}
++
++/* Emulated vm86 outs instruction */
++static void vm86_outs(int size, int segment)
++{
++ u32 edx, esi, base;
++
++ edx = vm86.regs.edx & 0xffff;
++ esi = vm86.regs.esi & 0xffff;
++
++ switch (segment) {
++ case P_CS: base = vm86.regs.cs; break;
++ case P_SS: base = vm86.regs.ss; break;
++ case P_ES: base = vm86.regs.es; break;
++ case P_FS: base = vm86.regs.fs; break;
++ case P_GS: base = vm86.regs.gs; break;
++ default: base = vm86.regs.ds; break;
++ }
++
++ esi += base << 4;
++
++ if (vm86.regs.eflags & FLAG_D)
++ asm volatile ("std\n");
++ else
++ asm volatile ("cld\n");
++
++ switch (size) {
++ case 4:
++ asm volatile ("outsl\n" : "=S" (esi) : "d" (edx), "0" (esi));
++ break;
++ case 2:
++ asm volatile ("outsw\n" : "=S" (esi) : "d" (edx), "0" (esi));
++ break;
++ case 1:
++ asm volatile ("outsb\n" : "=S" (esi) : "d" (edx), "0" (esi));
++ break;
++ }
++
++ if (vm86.regs.eflags & FLAG_D)
++ asm volatile ("cld");
++
++ esi -= base << 4;
++ vm86.regs.esi &= 0xffff0000;
++ vm86.regs.esi |= (esi & 0xffff);
++}
++
++static void vm86_rep_outs(int size, int segment)
++{
++ u16 cx = vm86.regs.ecx;
++ while (cx--)
++ vm86_outs(size, segment);
++
++ vm86.regs.ecx &= 0xffff0000;
++}
++
++static int vm86_do_unknown(void)
++{
++ u8 data32 = 0, segment = P_DS, rep = 0;
++ u8 *instr;
++ int ret = 0, i = 0;
++
++ instr = (u8*)((vm86.regs.cs << 4) + vm86.regs.eip);
++
++ while (1) {
++ switch(instr[i]) {
++ case 0x66: /* operand size prefix */
++ data32 = 1 - data32;
++ i++;
++ break;
++ case 0xf2: /* repnz */
++ case 0xf3: /* rep */
++ rep = 1;
++ i++;
++ break;
++ case P_CS: /* segment prefix */
++ case P_SS:
++ case P_DS:
++ case P_ES:
++ case P_FS:
++ case P_GS:
++ segment = instr[i];
++ i++;
++ break;
++ case 0xf0: /* LOCK - ignored */
++ case 0x67: /* address size prefix - ignored */
++ i++;
++ break;
++ case 0x6c: /* insb */
++ if (rep)
++ vm86_rep_ins(1);
++ else
++ vm86_ins(1);
++ i++;
++ goto out;
++ case 0x6d: /* insw / insd */
++ if (rep) {
++ if (data32)
++ vm86_rep_ins(4);
++ else
++ vm86_rep_ins(2);
++ } else {
++ if (data32)
++ vm86_ins(4);
++ else
++ vm86_ins(2);
++ }
++ i++;
++ goto out;
++ case 0x6e: /* outsb */
++ if (rep)
++ vm86_rep_outs(1, segment);
++ else
++ vm86_outs(1, segment);
++ i++;
++ goto out;
++ case 0x6f: /* outsw / outsd */
++ if (rep) {
++ if (data32)
++ vm86_rep_outs(4, segment);
++ else
++ vm86_rep_outs(2, segment);
++ } else {
++ if (data32)
++ vm86_outs(4, segment);
++ else
++ vm86_outs(2, segment);
++ }
++ i++;
++ goto out;
++ case 0xe4: /* inb xx */
++ asm volatile (
++ "inb %w1, %b0"
++ : "=a" (vm86.regs.eax)
++ : "d" (instr[i+1]), "0" (vm86.regs.eax));
++ i += 2;
++ goto out;
++ case 0xe5: /* inw xx / ind xx */
++ if (data32) {
++ asm volatile (
++ "inl %w1, %0"
++ : "=a" (vm86.regs.eax)
++ : "d" (instr[i+1]),
++ "0" (vm86.regs.eax));
++ } else {
++ asm volatile (
++ "inw %w1, %w0"
++ : "=a" (vm86.regs.eax)
++ : "d" (instr[i+1]),
++ "0" (vm86.regs.eax));
++ }
++ i += 2;
++ goto out;
++
++ case 0xec: /* inb dx */
++ asm volatile (
++ "inb %w1, %b0"
++ : "=a" (vm86.regs.eax)
++ : "d" (vm86.regs.edx), "0" (vm86.regs.eax));
++ i++;
++ goto out;
++ case 0xed: /* inw dx / ind dx */
++ if (data32) {
++ asm volatile (
++ "inl %w1, %0"
++ : "=a" (vm86.regs.eax)
++ : "d" (vm86.regs.edx));
++ } else {
++ asm volatile (
++ "inw %w1, %w0"
++ : "=a" (vm86.regs.eax)
++ : "d" (vm86.regs.edx));
++ }
++ i++;
++ goto out;
++ case 0xe6: /* outb xx */
++ asm volatile (
++ "outb %b0, %w1"
++ : /* no return value */
++ : "a" (vm86.regs.eax), "d" (instr[i+1]));
++ i += 2;
++ goto out;
++ case 0xe7: /* outw xx / outd xx */
++ if (data32) {
++ asm volatile (
++ "outl %0, %w1"
++ : /* no return value */
++ : "a" (vm86.regs.eax),
++ "d" (instr[i+1]));
++ } else {
++ asm volatile (
++ "outw %w0, %w1"
++ : /* no return value */
++ : "a" (vm86.regs.eax),
++ "d" (instr[i+1]));
++ }
++ i += 2;
++ goto out;
++ case 0xee: /* outb dx */
++ asm volatile (
++ "outb %b0, %w1"
++ : /* no return value */
++ : "a" (vm86.regs.eax), "d" (vm86.regs.edx));
++ i++;
++ goto out;
++ case 0xef: /* outw dx / outd dx */
++ if (data32) {
++ asm volatile (
++ "outl %0, %w1"
++ : /* no return value */
++ : "a" (vm86.regs.eax),
++ "d" (vm86.regs.edx));
++ } else {
++ asm volatile (
++ "outw %w0, %w1"
++ : /* no return value */
++ : "a" (vm86.regs.eax),
++ "d" (vm86.regs.edx));
++ }
++ i++;
++ goto out;
++ default:
++ printk(KERN_ERR "vesafb: BUG, opcode 0x%x emulation "
++ "not supported (EIP: 0x%lx)\n",
++ instr[i], (u32)(vm86.regs.cs << 4) +
++ vm86.regs.eip);
++ ret = 1;
++ goto out;
++ }
++ }
++out: vm86.regs.eip += i;
++ return ret;
++}
++
++void vesafb_do_vm86(struct vm86_regs *regs)
++{
++ unsigned int ret;
++ u8 *retcode = (void*)RET_CODE_ADDR;
++
++ memset(&vm86,0,sizeof(vm86));
++ memcpy(&vm86.regs, regs, sizeof(struct vm86_regs));
++
++ /* The return code */
++ retcode[0] = 0xcd; /* int opcode */
++ retcode[1] = 0xff; /* int number (255) */
++
++ /* We use int 0xff to get back to protected mode */
++ memset(&vm86.int_revectored, 0, sizeof(vm86.int_revectored));
++ ((unsigned char *)&vm86.int_revectored)[0xff / 8] |= (1 << (0xff % 8));
++
++ /*
++ * We want to call int 0x10, so we set:
++ * CS = 0x42 = 0x10 * 4 + 2
++ * IP = 0x40 = 0x10 * 4
++ * and SS:ESP. It's up to the caller to set the rest of the registers.
++ */
++ vm86.regs.eflags = DEFAULT_VM86_FLAGS;
++ vm86.regs.cs = *(unsigned short *)0x42;
++ vm86.regs.eip = *(unsigned short *)0x40;
++ vm86.regs.ss = (STACK_ADDR >> 4);
++ vm86.regs.esp = ((STACK_ADDR & 0x0000f) + STACK_SIZE);
++
++ /* These will be fetched off the stack when we come to an iret in the
++ * int's 0x10 code. */
++ VM86_PUSHW(DEFAULT_VM86_FLAGS);
++ VM86_PUSHW((RET_CODE_ADDR >> 4)); /* return code segment */
++ VM86_PUSHW((RET_CODE_ADDR & 0x0000f)); /* return code offset */
++
++ while(1) {
++ ret = vm86old(&vm86);
++
++ if (VM86_TYPE(ret) == VM86_INTx) {
++ int vint = VM86_ARG(ret);
++
++ /* If exit from vm86 was caused by int 0xff, then
++ * we're done.. */
++ if (vint == 0xff)
++ goto out;
++
++ /* .. otherwise, we have to call the int handler
++ * manually */
++ VM86_PUSHW(vm86.regs.eflags);
++ VM86_PUSHW(vm86.regs.cs);
++ VM86_PUSHW(vm86.regs.eip);
++
++ vm86.regs.cs = *(u16 *)((vint << 2) + 2);
++ vm86.regs.eip = *(u16 *)(vint << 2);
++ vm86.regs.eflags &= ~(VIF_MASK | TF_MASK);
++ } else if (VM86_TYPE(ret) == VM86_UNKNOWN) {
++ if (vm86_do_unknown())
++ goto out;
++ } else {
++ printk(KERN_ERR "vesafb: BUG, returned from "
++ "vm86 with %x (EIP: 0x%lx)\n",
++ ret, (u32)(vm86.regs.cs << 4) +
++ vm86.regs.eip);
++ goto out;
++ }
++ }
++
++out: /* copy the registers' state back to the caller's struct */
++ memcpy(regs, &vm86.regs, sizeof(struct vm86_regs));
++}
++
++static int vesafb_remap_pfn_range(unsigned long start, unsigned long end,
++ unsigned long pgoff, unsigned long prot,
++ int type)
++{
++ struct vm_area_struct *vma;
++ struct mm_struct *mm = current->mm;
++ int ret = 0;
++
++ vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
++ if (!vma)
++ return -ENOMEM;
++ memset(vma, 0, sizeof(*vma));
++ down_write(&mm->mmap_sem);
++ vma->vm_mm = mm;
++ vma->vm_start = start;
++ vma->vm_end = end;
++ vma->vm_flags = VM_READ | VM_WRITE | VM_EXEC;
++ vma->vm_flags |= mm->def_flags;
++ vma->vm_page_prot.pgprot = prot;
++ vma->vm_pgoff = pgoff;
++
++ if ((ret = insert_vm_struct(mm, vma))) {
++ up_write(&mm->mmap_sem);
++ kmem_cache_free(vm_area_cachep, vma);
++ return ret;
++ }
++
++ if (type) {
++ ret = zeromap_page_range(vma,
++ vma->vm_start,
++ vma->vm_end - vma->vm_start,
++ vma->vm_page_prot);
++ } else {
++ vma->vm_flags |= VM_SHARED;
++ ret = remap_pfn_range(vma,
++ vma->vm_start,
++ vma->vm_pgoff,
++ vma->vm_end - vma->vm_start,
++ vma->vm_page_prot);
++ }
++ up_write(&mm->mmap_sem);
++ return ret;
++}
++
++static inline int vesafb_init_mem(void)
++{
++ int ret = 0;
++
++ /* The memory chunks we're remapping here should be multiples
++ * of PAGE_SIZE. */
++ ret += vesafb_remap_pfn_range(0x00000, IVTBDA_SIZE, 0,
++ PROT_READ | PROT_EXEC | PROT_WRITE, 0);
++ ret += vesafb_remap_pfn_range(IVTBDA_SIZE, REAL_MEM_SIZE, 0,
++ PROT_READ | PROT_EXEC | PROT_WRITE, 1);
++ ret += vesafb_remap_pfn_range(0x9f000, 0x100000,
++ 0x9f000 >> PAGE_SHIFT,
++ PROT_READ | PROT_EXEC | PROT_WRITE, 0);
++ if (ret)
++ printk(KERN_ERR "vesafb thread: memory remapping failed\n");
++
++ return ret;
++}
++
++#define vesafb_get_string(str) \
++{ \
++ /* The address is in the form ssssoooo, where oooo = offset, \
++ * ssss = segment */ \
++ addr = ((p_vbe(tsk->buf)->str & 0xffff0000) >> 12) + \
++ (p_vbe(tsk->buf)->str & 0x0000ffff); \
++ \
++ /* The data is in ROM which is shared between processes, so we \
++ * just translate the real mode address into one visible from \
++ * kernel space */ \
++ if (addr >= 0xa0000) { \
++ p_vbe(tsk->buf)->str = (u32) __va(addr); \
++ \
++ /* The data is in the buffer, we just have to convert the \
++ * address so that it points into the buffer user provided. */ \
++ } else if (addr > BUF_ADDR && addr < BUF_ADDR + \
++ sizeof(struct vesafb_vbe_ib)) { \
++ addr -= BUF_ADDR; \
++ p_vbe(tsk->buf)->str = (u32) (tsk->buf + addr); \
++ \
++ /* This should never happen: someone was insane enough to put \
++ * the data somewhere in RAM.. */ \
++ } else { \
++ p_vbe(tsk->buf)->str = (u32) ""; \
++ } \
++}
++
++void vesafb_handle_getvbeib(struct vesafb_task *tsk)
++{
++ int addr, res;
++
++ tsk->regs.es = (BUF_ADDR >> 4);
++ tsk->regs.edi = (BUF_ADDR & 0x000f);
++ strncpy(p_vbe(BUF_ADDR)->vbe_signature, "VBE2", 4);
++
++ vesafb_do_vm86(&tsk->regs);
++ memcpy(tsk->buf, (void*)(BUF_ADDR), sizeof(struct vesafb_vbe_ib));
++
++ /* The OEM fields were not defined prior to VBE 2.0 */
++ if (p_vbe(tsk->buf)->vbe_version >= 0x200) {
++ vesafb_get_string(oem_string_ptr);
++ vesafb_get_string(oem_vendor_name_ptr);
++ vesafb_get_string(oem_product_name_ptr);
++ vesafb_get_string(oem_product_rev_ptr);
++ }
++
++ /* This is basically the same as vesafb_get_string() */
++ addr = ((p_vbe(tsk->buf)->mode_list_ptr & 0xffff0000) >> 12) +
++ (p_vbe(tsk->buf)->mode_list_ptr & 0x0000ffff);
++
++ if (addr >= 0xa0000) {
++ p_vbe(tsk->buf)->mode_list_ptr = (u32) __va(addr);
++ } else if (addr > BUF_ADDR && addr < BUF_ADDR +
++ sizeof(struct vesafb_vbe_ib)) {
++ addr -= BUF_ADDR;
++ p_vbe(tsk->buf)->mode_list_ptr = (u32) (tsk->buf + addr);
++ } else {
++ res = 0;
++ printk(KERN_WARNING "vesafb: warning, copying modelist "
++ "from somewhere in RAM!\n");
++ while (*(u16*)(addr+res) != 0xffff &&
++ res < (sizeof(p_vbe(tsk->buf)->reserved) - 2)) {
++ *(u16*) ((u32)&(p_vbe(tsk->buf)->reserved) + res) =
++ *(u16*)(addr+res);
++ res += 2;
++ }
++ *(u16*) ((u32)&(p_vbe(tsk->buf)->reserved) + res) = 0xffff;
++ }
++}
++
++int vesafb_handle_tasks(void)
++{
++ struct vesafb_task *tsk;
++ struct list_head *curr, *next;
++ int ret = 0;
++
++ down(&vesafb_task_list_sem);
++ list_for_each_safe(curr, next, &vesafb_task_list) {
++ tsk = list_entry(curr, struct vesafb_task, node);
++
++ if (tsk->flags & TF_EXIT) {
++ ret = 1;
++ goto task_done;
++ }
++ if (tsk->flags & TF_GETVBEIB) {
++ vesafb_handle_getvbeib(tsk);
++ goto task_done;
++ }
++ /* Do we need to store a pointer to the buffer in ES:EDI? */
++ if (tsk->flags & TF_BUF_DI) {
++ tsk->regs.es = (BUF_ADDR >> 4);
++ tsk->regs.edi = (BUF_ADDR & 0x000f);
++ }
++ /* Sometimes the pointer has to be in ES:EBX. */
++ if (tsk->flags & TF_BUF_BX) {
++ tsk->regs.es = (BUF_ADDR >> 4);
++ tsk->regs.ebx = (BUF_ADDR & 0x000f);
++ }
++ if (tsk->flags & (TF_BUF_DI | TF_BUF_BX))
++ memcpy((void*)BUF_ADDR, tsk->buf, tsk->buf_len);
++
++ vesafb_do_vm86(&tsk->regs);
++
++ if (tsk->flags & TF_RETURN_BUF)
++ memcpy(tsk->buf, (void*)BUF_ADDR, tsk->buf_len);
++
++task_done: list_del(curr);
++ complete(&tsk->done);
++ }
++
++ /* If we're going to kill this thread, don't allow any elements
++ * to be added to the task list. */
++ if (!ret)
++ up(&vesafb_task_list_sem);
++
++ return ret;
++}
++
++/*
++ * This 'hybrid' thread serves as a backend for vesafb-tng, handling all vm86
++ * calls. It is started as a kernel thread. It then creates its own mm struct,
++ * thus separating itself from any userspace processes. At this moment, it
++ * stops being a kernel thread (kernel threads have mm = NULL) and becomes
++ * a 'hybrid' thread -- one that has full access to kernel space, yet runs
++ * with its own address space.
++ *
++ * This is necessary because in order to make vm86 calls some parts of the
++ * first 1MB of RAM have to be setup to mimic the real mode. These are:
++ * - interrupt vector table [0x00000-0x003ff]
++ * - BIOS data area [0x00400-0x004ff]
++ * - Extended BIOS data area [0x9fc00-0x9ffff]
++ * - the video RAM [0xa0000-0xbffff]
++ * - video BIOS [0xc0000-0xcffff]
++ * - motherboard BIOS [0xf0000-0xfffff]
++ */
++int vesafb_thread(void *unused)
++{
++ int err = 0;
++
++ set_fs(KERNEL_DS);
++ daemonize("vesafb");
++
++ if (set_new_mm()) {
++ err = -ENOMEM;
++ goto thr_end;
++ }
++ if (vesafb_init_mem()) {
++ err = -ENOMEM;
++ goto thr_end;
++ }
++
++ DPRINTK("started vesafb thread\n");
++
++ /* Having an IO bitmap makes things faster as we avoid GPFs
++ * when running vm86 code. We can live if it fails, though,
++ * so don't bother checking for errors. */
++ ioperm(0,1024,1);
++ set_user_nice(current, -10);
++
++ complete(&vesafb_th_completion);
++
++ while (1) {
++ if (vesafb_handle_tasks())
++ break;
++ wait_event_interruptible(vesafb_wait,
++ !list_empty(&vesafb_task_list));
++ try_to_freeze();
++ }
++
++out: DPRINTK("exiting the vesafb thread\n");
++ vesafb_pid = -1;
++
++ /* Now that all callers know this thread is no longer running
++ * (pid < 0), allow them to continue. */
++ up(&vesafb_task_list_sem);
++ return err;
++thr_end:
++ down(&vesafb_task_list_sem);
++ complete(&vesafb_th_completion);
++ goto out;
++}
++
++int vesafb_queue_task(struct vesafb_task *tsk)
++{
++ down(&vesafb_task_list_sem);
++ if (vesafb_pid < 0)
++ return -1;
++ list_add_tail(&tsk->node, &vesafb_task_list);
++ up(&vesafb_task_list_sem);
++ wake_up(&vesafb_wait);
++ return 0;
++}
++
++int vesafb_wait_for_thread(void)
++{
++ /* PID 0 means that the thread is still initializing. */
++ if (vesafb_pid < 0)
++ return -1;
++ wait_for_completion(&vesafb_th_completion);
++ return 0;
++}
++
++int __init vesafb_init_thread(void)
++{
++ vesafb_pid = kernel_thread(vesafb_thread,NULL,0);
++ return 0;
++}
++
++#ifdef MODULE
++void __exit vesafb_kill_thread(void)
++{
++ struct vesafb_task *tsk;
++ if (vesafb_pid <= 0)
++ return;
++
++ vesafb_create_task(tsk);
++ if (!tsk)
++ return;
++ tsk->flags |= TF_EXIT;
++ vesafb_queue_task(tsk);
++ vesafb_wait_for_task(tsk);
++ kfree(tsk);
++ return;
++}
++module_exit(vesafb_kill_thread);
++#endif
++module_init(vesafb_init_thread);
++
++EXPORT_SYMBOL_GPL(vesafb_queue_task);
++EXPORT_SYMBOL_GPL(vesafb_wait_for_thread);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Michal Januszewski");
++
+diff --git a/drivers/video/vesafb-tng.c b/drivers/video/vesafb-tng.c
+new file mode 100644
+index 0000000..b4d4394
+--- /dev/null
++++ b/drivers/video/vesafb-tng.c
+@@ -0,0 +1,1586 @@
++/*
++ * Framebuffer driver for VBE 2.0+ compliant graphic boards
++ *
++ * (c) 2004-2006 Michal Januszewski <spock@gentoo.org>
++ * Based upon vesafb code by Gerd Knorr <kraxel@goldbach.in-berlin.de>
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/errno.h>
++#include <linux/string.h>
++#include <linux/mm.h>
++#include <linux/tty.h>
++#include <linux/delay.h>
++#include <linux/fb.h>
++#include <linux/ioport.h>
++#include <linux/init.h>
++#include <linux/proc_fs.h>
++#include <linux/completion.h>
++#include <linux/platform_device.h>
++#include <video/edid.h>
++#include <video/vesa.h>
++#include <video/vga.h>
++#include <asm/io.h>
++#include <asm/mtrr.h>
++#include <asm/page.h>
++#include <asm/pgtable.h>
++#include "edid.h"
++
++#define dac_reg (0x3c8)
++#define dac_val (0x3c9)
++
++#define VESAFB_NEED_EXACT_RES 1
++#define VESAFB_NEED_EXACT_DEPTH 2
++
++/* --------------------------------------------------------------------- */
++
++static struct fb_var_screeninfo vesafb_defined __initdata = {
++ .activate = FB_ACTIVATE_NOW,
++ .height = 0,
++ .width = 0,
++ .right_margin = 32,
++ .upper_margin = 16,
++ .lower_margin = 4,
++ .vsync_len = 4,
++ .vmode = FB_VMODE_NONINTERLACED,
++};
++
++static struct fb_fix_screeninfo vesafb_fix __initdata = {
++ .id = "VESA VGA",
++ .type = FB_TYPE_PACKED_PIXELS,
++ .accel = FB_ACCEL_NONE,
++};
++
++static int mtrr = 0; /* disable mtrr by default */
++static int blank = 1; /* enable blanking by default */
++static int ypan = 0; /* 0 - nothing, 1 - ypan, 2 - ywrap */
++static int pmi_setpal = 1; /* pmi for palette changes */
++static u16 *pmi_base = NULL; /* protected mode interface location */
++static void (*pmi_start)(void) = NULL;
++static void (*pmi_pal)(void) = NULL;
++static struct vesafb_vbe_ib vbe_ib;
++static struct vesafb_mode_ib *vbe_modes;
++static int vbe_modes_cnt = 0;
++static struct fb_info *vesafb_info = NULL;
++static int nocrtc = 0; /* ignore CRTC settings */
++static int noedid __initdata = 0; /* don't try DDC transfers */
++static int vram_remap __initdata = 0; /* set amount of memory to be used */
++static int vram_total __initdata = 0; /* set total amount of memory */
++static u16 maxclk __initdata = 0; /* maximum pixel clock */
++static u16 maxvf __initdata = 0; /* maximum vertical frequency */
++static u16 maxhf __initdata = 0; /* maximum horizontal frequency */
++static int gtf __initdata = 0; /* forces use of the GTF */
++static char *mode_option __initdata = NULL;
++static u16 vbemode __initdata = 0;
++
++/* --------------------------------------------------------------------- */
++
++static int vesafb_find_vbe_mode(int xres, int yres, int depth,
++ unsigned char flags)
++{
++ int i, match = -1, h = 0, d = 0x7fffffff;
++
++ for (i = 0; i < vbe_modes_cnt; i++) {
++ h = abs(vbe_modes[i].x_res - xres) +
++ abs(vbe_modes[i].y_res - yres) +
++ abs(depth - vbe_modes[i].depth);
++ if (h == 0)
++ return i;
++ if (h < d || (h == d && vbe_modes[i].depth > depth)) {
++ d = h;
++ match = i;
++ }
++ }
++ i = 1;
++
++ if (flags & VESAFB_NEED_EXACT_DEPTH && vbe_modes[match].depth != depth)
++ i = 0;
++ if (flags & VESAFB_NEED_EXACT_RES && d > 24)
++ i = 0;
++ if (i != 0)
++ return match;
++ else
++ return -1;
++}
++
++static int vesafb_pan_display(struct fb_var_screeninfo *var,
++ struct fb_info *info)
++{
++ int offset;
++
++ offset = (var->yoffset * info->fix.line_length + var->xoffset) / 4;
++
++ /* It turns out it's not the best idea to do panning via vm86,
++ * so we only allow it if we have a PMI. */
++ if (pmi_start) {
++ __asm__ __volatile__(
++ "call *(%%edi)"
++ : /* no return value */
++ : "a" (0x4f07), /* EAX */
++ "b" (0), /* EBX */
++ "c" (offset), /* ECX */
++ "d" (offset >> 16), /* EDX */
++ "D" (&pmi_start)); /* EDI */
++ }
++ return 0;
++}
++
++static int vesafb_blank(int blank, struct fb_info *info)
++{
++ struct vesafb_task *tsk;
++ int err = 1;
++
++ if (vbe_ib.capabilities & VBE_CAP_VGACOMPAT) {
++ int loop = 10000;
++ u8 seq = 0, crtc17 = 0;
++
++ if (blank == FB_BLANK_POWERDOWN) {
++ seq = 0x20;
++ crtc17 = 0x00;
++ err = 0;
++ } else {
++ seq = 0x00;
++ crtc17 = 0x80;
++ err = (blank == FB_BLANK_UNBLANK) ? 0 : -EINVAL;
++ }
++
++ vga_wseq(NULL, 0x00, 0x01);
++ seq |= vga_rseq(NULL, 0x01) & ~0x20;
++ vga_wseq(NULL, 0x00, seq);
++
++ crtc17 |= vga_rcrt(NULL, 0x17) & ~0x80;
++ while (loop--);
++ vga_wcrt(NULL, 0x17, crtc17);
++ vga_wseq(NULL, 0x00, 0x03);
++ } else {
++ vesafb_create_task (tsk);
++ if (!tsk)
++ return -ENOMEM;
++ tsk->regs.eax = 0x4f10;
++ switch (blank) {
++ case FB_BLANK_UNBLANK:
++ tsk->regs.ebx = 0x0001;
++ break;
++ case FB_BLANK_NORMAL:
++ tsk->regs.ebx = 0x0101; /* standby */
++ break;
++ case FB_BLANK_POWERDOWN:
++ tsk->regs.ebx = 0x0401; /* powerdown */
++ break;
++ default:
++ goto out;
++ }
++ tsk->flags = TF_CALL;
++ if (!vesafb_queue_task (tsk))
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) == 0x004f)
++ err = 0;
++out: kfree(tsk);
++ }
++ return err;
++}
++
++static int vesafb_setpalette(struct vesafb_pal_entry *entries, int count,
++ int start, struct fb_info *info)
++{
++ struct vesafb_task *tsk;
++ int i = ((struct vesafb_par*)info->par)->mode_idx;
++ int ret = 0;
++
++ /* We support palette modifications for 8 bpp modes only, so
++ * there can never be more than 256 entries. */
++ if (start + count > 256)
++ return -EINVAL;
++
++ /* Use VGA registers if mode is VGA-compatible. */
++ if (i >= 0 && i < vbe_modes_cnt &&
++ vbe_modes[i].mode_attr & VBE_MODE_VGACOMPAT) {
++ for (i = 0; i < count; i++) {
++ outb_p(start + i, dac_reg);
++ outb_p(entries[i].red, dac_val);
++ outb_p(entries[i].green, dac_val);
++ outb_p(entries[i].blue, dac_val);
++ }
++ } else if (pmi_setpal) {
++ __asm__ __volatile__(
++ "call *(%%esi)"
++ : /* no return value */
++ : "a" (0x4f09), /* EAX */
++ "b" (0), /* EBX */
++ "c" (count), /* ECX */
++ "d" (start), /* EDX */
++ "D" (entries), /* EDI */
++ "S" (&pmi_pal)); /* ESI */
++ } else {
++ vesafb_create_task (tsk);
++ if (!tsk)
++ return -ENOMEM;
++ tsk->regs.eax = 0x4f09;
++ tsk->regs.ebx = 0x0;
++ tsk->regs.ecx = count;
++ tsk->regs.edx = start;
++ tsk->buf = entries;
++ tsk->buf_len = sizeof(struct vesafb_pal_entry) * count;
++ tsk->flags = TF_CALL | TF_BUF_DI;
++
++ if (!vesafb_queue_task (tsk))
++ vesafb_wait_for_task(tsk);
++ if ((tsk->regs.eax & 0xffff) != 0x004f)
++ ret = 1;
++ kfree(tsk);
++ }
++ return ret;
++}
++
++static int vesafb_setcolreg(unsigned regno, unsigned red, unsigned green,
++ unsigned blue, unsigned transp,
++ struct fb_info *info)
++{
++ struct vesafb_pal_entry entry;
++ int shift = 16 - info->var.green.length;
++ int ret = 0;
++
++ if (regno >= info->cmap.len)
++ return -EINVAL;
++
++ if (info->var.bits_per_pixel == 8) {
++ entry.red = red >> shift;
++ entry.green = green >> shift;
++ entry.blue = blue >> shift;
++ entry.pad = 0;
++
++ ret = vesafb_setpalette(&entry, 1, regno, info);
++ } else if (regno < 16) {
++ switch (info->var.bits_per_pixel) {
++ case 16:
++ if (info->var.red.offset == 10) {
++ /* 1:5:5:5 */
++ ((u32*) (info->pseudo_palette))[regno] =
++ ((red & 0xf800) >> 1) |
++ ((green & 0xf800) >> 6) |
++ ((blue & 0xf800) >> 11);
++ } else {
++ /* 0:5:6:5 */
++ ((u32*) (info->pseudo_palette))[regno] =
++ ((red & 0xf800) ) |
++ ((green & 0xfc00) >> 5) |
++ ((blue & 0xf800) >> 11);
++ }
++ break;
++
++ case 24:
++ case 32:
++ red >>= 8;
++ green >>= 8;
++ blue >>= 8;
++ ((u32 *)(info->pseudo_palette))[regno] =
++ (red << info->var.red.offset) |
++ (green << info->var.green.offset) |
++ (blue << info->var.blue.offset);
++ break;
++ }
++ }
++ return ret;
++}
++
++static int vesafb_setcmap(struct fb_cmap *cmap, struct fb_info *info)
++{
++ struct vesafb_pal_entry *entries;
++ int shift = 16 - info->var.green.length;
++ int i, ret = 0;
++
++ if (info->var.bits_per_pixel == 8) {
++ if (cmap->start + cmap->len > info->cmap.start +
++ info->cmap.len || cmap->start < info->cmap.start)
++ return -EINVAL;
++
++ entries = vmalloc(sizeof(struct vesafb_pal_entry) * cmap->len);
++ if (!entries)
++ return -ENOMEM;
++ for (i = 0; i < cmap->len; i++) {
++ entries[i].red = cmap->red[i] >> shift;
++ entries[i].green = cmap->green[i] >> shift;
++ entries[i].blue = cmap->blue[i] >> shift;
++ entries[i].pad = 0;
++ }
++ ret = vesafb_setpalette(entries, cmap->len, cmap->start, info);
++ vfree(entries);
++ } else {
++ /* For modes with bpp > 8, we only set the pseudo palette in
++ * the fb_info struct. We rely on vesafb_setcolreg to do all
++ * sanity checking. */
++ for (i = 0; i < cmap->len; i++) {
++ ret += vesafb_setcolreg(cmap->start + i, cmap->red[i],
++ cmap->green[i], cmap->blue[i],
++ 0, info);
++ }
++ }
++ return ret;
++}
++
++static int vesafb_set_par(struct fb_info *info)
++{
++ struct vesafb_par *par = (struct vesafb_par *) info->par;
++ struct vesafb_task *tsk;
++ struct vesafb_crtc_ib *crtc = NULL;
++ struct vesafb_mode_ib *mode = NULL;
++ int i, err = 0, depth = info->var.bits_per_pixel;
++
++ if (depth > 8 && depth != 32)
++ depth = info->var.red.length + info->var.green.length +
++ info->var.blue.length;
++
++ i = vesafb_find_vbe_mode(info->var.xres, info->var.yres, depth,
++ VESAFB_NEED_EXACT_RES |
++ VESAFB_NEED_EXACT_DEPTH);
++ if (i >= 0)
++ mode = &vbe_modes[i];
++ else
++ return -EINVAL;
++
++ vesafb_create_task (tsk);
++ if (!tsk)
++ return -ENOMEM;
++ tsk->regs.eax = 0x4f02;
++ tsk->regs.ebx = mode->mode_id | 0x4000; /* use LFB */
++ tsk->flags = TF_CALL;
++
++ if (vbe_ib.vbe_version >= 0x0300 && !nocrtc &&
++ info->var.pixclock != 0) {
++ tsk->regs.ebx |= 0x0800; /* use CRTC data */
++ tsk->flags |= TF_BUF_DI;
++ crtc = kmalloc(sizeof(struct vesafb_crtc_ib), GFP_KERNEL);
++ if (!crtc) {
++ err = -ENOMEM;
++ goto out;
++ }
++ crtc->horiz_start = info->var.xres + info->var.right_margin;
++ crtc->horiz_end = crtc->horiz_start + info->var.hsync_len;
++ crtc->horiz_total = crtc->horiz_end + info->var.left_margin;
++
++ crtc->vert_start = info->var.yres + info->var.lower_margin;
++ crtc->vert_end = crtc->vert_start + info->var.vsync_len;
++ crtc->vert_total = crtc->vert_end + info->var.upper_margin;
++
++ crtc->pixel_clock = PICOS2KHZ(info->var.pixclock) * 1000;
++ crtc->refresh_rate = (u16)(100 * (crtc->pixel_clock /
++ (crtc->vert_total * crtc->horiz_total)));
++ crtc->flags = 0;
++
++ if (info->var.vmode & FB_VMODE_DOUBLE)
++ crtc->flags |= 0x1;
++ if (info->var.vmode & FB_VMODE_INTERLACED)
++ crtc->flags |= 0x2;
++ if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT))
++ crtc->flags |= 0x4;
++ if (!(info->var.sync & FB_SYNC_VERT_HIGH_ACT))
++ crtc->flags |= 0x8;
++ memcpy(&par->crtc, crtc, sizeof(struct vesafb_crtc_ib));
++ } else
++ memset(&par->crtc, 0, sizeof(struct vesafb_crtc_ib));
++
++ tsk->buf = (void*)crtc;
++ tsk->buf_len = sizeof(struct vesafb_crtc_ib);
++
++ if (vesafb_queue_task (tsk)) {
++ err = -EINVAL;
++ goto out;
++ }
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f) {
++ printk(KERN_ERR "vesafb: mode switch failed (eax: 0x%lx)\n",
++ tsk->regs.eax);
++ err = -EINVAL;
++ goto out;
++ }
++ par->mode_idx = i;
++
++ /* For 8bpp modes, always try to set the DAC to 8 bits. */
++ if (vbe_ib.capabilities & VBE_CAP_CAN_SWITCH_DAC &&
++ mode->bits_per_pixel <= 8) {
++ vesafb_reset_task(tsk);
++ tsk->flags = TF_CALL;
++ tsk->regs.eax = 0x4f08;
++ tsk->regs.ebx = 0x0800;
++
++ if (!vesafb_queue_task (tsk))
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f ||
++ ((tsk->regs.ebx & 0xff00) >> 8) != 8) {
++ /* We've failed to set the DAC palette format -
++ * time to correct var. */
++ info->var.red.length = 6;
++ info->var.green.length = 6;
++ info->var.blue.length = 6;
++ }
++ }
++
++ info->fix.visual = (info->var.bits_per_pixel == 8) ?
++ FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
++ info->fix.line_length = mode->bytes_per_scan_line;
++
++ DPRINTK("set new mode %dx%d-%d (0x%x)\n",
++ info->var.xres, info->var.yres, info->var.bits_per_pixel,
++ mode->mode_id);
++
++out: if (crtc != NULL)
++ kfree(crtc);
++ kfree(tsk);
++
++ return err;
++}
++
++static void vesafb_setup_var(struct fb_var_screeninfo *var, struct fb_info *info,
++ struct vesafb_mode_ib *mode)
++{
++ var->xres = mode->x_res;
++ var->yres = mode->y_res;
++ var->xres_virtual = mode->x_res;
++ var->yres_virtual = (ypan) ?
++ info->fix.smem_len / mode->bytes_per_scan_line :
++ mode->y_res;
++ var->xoffset = 0;
++ var->yoffset = 0;
++ var->bits_per_pixel = mode->bits_per_pixel;
++
++ if (var->bits_per_pixel == 15)
++ var->bits_per_pixel = 16;
++
++ if (var->bits_per_pixel > 8) {
++ var->red.offset = mode->red_off;
++ var->red.length = mode->red_len;
++ var->green.offset = mode->green_off;
++ var->green.length = mode->green_len;
++ var->blue.offset = mode->blue_off;
++ var->blue.length = mode->blue_len;
++ var->transp.offset = mode->rsvd_off;
++ var->transp.length = mode->rsvd_len;
++
++ DPRINTK("directcolor: size=%d:%d:%d:%d, shift=%d:%d:%d:%d\n",
++ mode->rsvd_len,
++ mode->red_len,
++ mode->green_len,
++ mode->blue_len,
++ mode->rsvd_off,
++ mode->red_off,
++ mode->green_off,
++ mode->blue_off);
++ } else {
++ var->red.offset = 0;
++ var->green.offset = 0;
++ var->blue.offset = 0;
++ var->transp.offset = 0;
++
++ /* We're assuming that we can switch the DAC to 8 bits. If
++ * this proves to be incorrect, we'll update the fields
++ * later in set_par(). */
++ if (vbe_ib.capabilities & VBE_CAP_CAN_SWITCH_DAC) {
++ var->red.length = 8;
++ var->green.length = 8;
++ var->blue.length = 8;
++ var->transp.length = 0;
++ } else {
++ var->red.length = 6;
++ var->green.length = 6;
++ var->blue.length = 6;
++ var->transp.length = 0;
++ }
++ }
++}
++
++static void inline vesafb_check_limits(struct fb_var_screeninfo *var,
++ struct fb_info *info)
++{
++ struct fb_videomode *mode;
++
++ if (!var->pixclock)
++ return;
++ if (vbe_ib.vbe_version < 0x0300) {
++ fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 60, var, info);
++ return;
++ }
++ if (!fb_validate_mode(var, info))
++ return;
++ mode = fb_find_best_mode(var, &info->modelist);
++ if (mode) {
++ DPRINTK("find_best_mode: %d %d @ %d (vmode: %d)\n",
++ mode->xres, mode->yres, mode->refresh, mode->vmode);
++ if (mode->xres == var->xres && mode->yres == var->yres &&
++ !(mode->vmode & (FB_VMODE_INTERLACED | FB_VMODE_DOUBLE))) {
++ fb_videomode_to_var(var, mode);
++ return;
++ }
++ }
++ if (info->monspecs.gtf && !fb_get_mode(FB_MAXTIMINGS, 0, var, info))
++ return;
++ /* Use default refresh rate */
++ var->pixclock = 0;
++}
++
++static int vesafb_check_var(struct fb_var_screeninfo *var,
++ struct fb_info *info)
++{
++ int match = -1;
++ int depth = var->red.length + var->green.length + var->blue.length;
++
++ /* Various apps will use bits_per_pixel to set the color depth,
++ * which is theoretically incorrect, but which we'll try to handle
++ * here. */
++ if (depth == 0 || abs(depth - var->bits_per_pixel) >= 8)
++ depth = var->bits_per_pixel;
++ match = vesafb_find_vbe_mode(var->xres, var->yres, depth,
++ VESAFB_NEED_EXACT_RES);
++
++ if (match == -1) {
++ DPRINTK("vesafb: mode %dx%d-%d not found\n", var->xres,
++ var->yres, depth);
++ return -EINVAL;
++ }
++
++ vesafb_setup_var(var, info, &vbe_modes[match]);
++ DPRINTK("found mode 0x%x (%dx%d-%dbpp)\n",
++ vbe_modes[match].mode_id, vbe_modes[match].x_res,
++ vbe_modes[match].y_res, vbe_modes[match].depth);
++
++ /* Check whether we have remapped enough memory for this mode. */
++ if (var->yres * vbe_modes[match].bytes_per_scan_line >
++ info->fix.smem_len) {
++ return -EINVAL;
++ }
++
++ if ((var->vmode & FB_VMODE_DOUBLE) &&
++ !(vbe_modes[match].mode_attr & 0x100))
++ var->vmode &= ~FB_VMODE_DOUBLE;
++ if ((var->vmode & FB_VMODE_INTERLACED) &&
++ !(vbe_modes[match].mode_attr & 0x200))
++ var->vmode &= ~FB_VMODE_INTERLACED;
++ vesafb_check_limits(var, info);
++ return 0;
++}
++
++static int vesafb_open(struct fb_info *info, int user)
++{
++ struct vesafb_task *tsk = NULL;
++ struct vesafb_par *par = info->par;
++ int cnt = atomic_read(&par->ref_count);
++
++ if (!cnt) {
++ vesafb_create_task(tsk);
++ if (!tsk)
++ goto out;
++
++ /* Get the VBE state buffer size. We want all available
++ * hardware state data (CL = 0x0f). */
++ tsk->regs.eax = 0x4f04;
++ tsk->regs.ecx = 0x000f;
++ tsk->regs.edx = 0x0000;
++ tsk->flags = TF_CALL;
++
++ if (vesafb_queue_task(tsk))
++ goto out;
++
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f) {
++ printk(KERN_WARNING "vesafb: VBE state buffer size "
++ "cannot be determined (eax: 0x%lx)\n",
++ tsk->regs.eax);
++ goto out;
++ }
++
++ par->vbe_state_size = 64 * (tsk->regs.ebx & 0xffff);
++ par->vbe_state = kzalloc(par->vbe_state_size, GFP_KERNEL);
++ if (!par->vbe_state)
++ goto out;
++
++ vesafb_reset_task(tsk);
++ tsk->regs.eax = 0x4f04;
++ tsk->regs.ecx = 0x000f;
++ tsk->regs.edx = 0x0001;
++ tsk->flags = TF_CALL | TF_BUF_BX | TF_RETURN_BUF;
++ tsk->buf = (void*)(par->vbe_state);
++ tsk->buf_len = par->vbe_state_size;
++
++ if (vesafb_queue_task(tsk))
++ goto getstate_failed;
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f) {
++ printk(KERN_WARNING "vesafb: VBE get state call "
++ "failed (eax: 0x%lx)\n", tsk->regs.eax);
++ goto getstate_failed;
++ }
++ }
++out:
++ atomic_inc(&par->ref_count);
++ if (tsk)
++ kfree(tsk);
++ return 0;
++
++getstate_failed:
++ kfree(par->vbe_state);
++ par->vbe_state = NULL;
++ par->vbe_state_size = 0;
++ goto out;
++}
++
++static int vesafb_release(struct fb_info *info, int user)
++{
++ struct vesafb_task *tsk = NULL;
++ struct vesafb_par *par = info->par;
++ int cnt = atomic_read(&par->ref_count);
++
++ if (!cnt)
++ return -EINVAL;
++
++ if (cnt == 1 && par->vbe_state && par->vbe_state_size) {
++ vesafb_create_task(tsk);
++ if (!tsk)
++ goto out;
++
++ tsk->regs.eax = 0x0003;
++ tsk->regs.ebx = 0x0000;
++ tsk->flags = TF_CALL;
++
++ if (vesafb_queue_task(tsk))
++ goto out;
++
++ vesafb_wait_for_task(tsk);
++
++ vesafb_reset_task(tsk);
++ tsk->regs.eax = 0x4f04;
++ tsk->regs.ecx = 0x000f;
++ tsk->regs.edx = 0x0002;
++ tsk->buf = (void*)(par->vbe_state);
++ tsk->buf_len = par->vbe_state_size;
++ tsk->flags = TF_CALL | TF_BUF_BX;
++
++ if (vesafb_queue_task(tsk))
++ goto out;
++
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f)
++ printk(KERN_WARNING "vesafb: VBE state restore call "
++ "failed (eax: 0x%lx)\n",
++ tsk->regs.eax);
++ }
++out:
++ atomic_dec(&par->ref_count);
++ if (tsk)
++ kfree(tsk);
++ return 0;
++}
++
++static int __init vesafb_probe(struct platform_device *device);
++
++static struct fb_ops vesafb_ops = {
++ .owner = THIS_MODULE,
++ .fb_open = vesafb_open,
++ .fb_release = vesafb_release,
++ .fb_setcolreg = vesafb_setcolreg,
++ .fb_setcmap = vesafb_setcmap,
++ .fb_pan_display = vesafb_pan_display,
++ .fb_blank = vesafb_blank,
++ .fb_fillrect = cfb_fillrect,
++ .fb_copyarea = cfb_copyarea,
++ .fb_imageblit = cfb_imageblit,
++ .fb_check_var = vesafb_check_var,
++ .fb_set_par = vesafb_set_par
++};
++
++static struct platform_driver vesafb_driver = {
++ .probe = vesafb_probe,
++ .driver = {
++ .name = "vesafb",
++ },
++};
++
++static struct platform_device *vesafb_device;
++
++#ifndef MODULE
++int __init vesafb_setup(char *options)
++{
++ char *this_opt;
++
++ if (!options || !*options)
++ return 0;
++
++ DPRINTK("options %s\n",options);
++
++ while ((this_opt = strsep(&options, ",")) != NULL) {
++ if (!*this_opt) continue;
++
++ DPRINTK("this_opt: %s\n",this_opt);
++
++ if (! strcmp(this_opt, "redraw"))
++ ypan=0;
++ else if (! strcmp(this_opt, "ypan"))
++ ypan=1;
++ else if (! strcmp(this_opt, "ywrap"))
++ ypan=2;
++ else if (! strcmp(this_opt, "vgapal"))
++ pmi_setpal=0;
++ else if (! strcmp(this_opt, "pmipal"))
++ pmi_setpal=1;
++ else if (! strncmp(this_opt, "mtrr:", 5))
++ mtrr = simple_strtoul(this_opt+5, NULL, 0);
++ else if (! strcmp(this_opt, "nomtrr"))
++ mtrr=0;
++ else if (! strcmp(this_opt, "nocrtc"))
++ nocrtc=1;
++ else if (! strcmp(this_opt, "noedid"))
++ noedid=1;
++ else if (! strcmp(this_opt, "noblank"))
++ blank=0;
++ else if (! strcmp(this_opt, "gtf"))
++ gtf=1;
++ else if (! strncmp(this_opt, "vtotal:", 7))
++ vram_total = simple_strtoul(this_opt + 7, NULL, 0);
++ else if (! strncmp(this_opt, "vremap:", 7))
++ vram_remap = simple_strtoul(this_opt + 7, NULL, 0);
++ else if (! strncmp(this_opt, "maxhf:", 6))
++ maxhf = simple_strtoul(this_opt + 6, NULL, 0);
++ else if (! strncmp(this_opt, "maxvf:", 6))
++ maxvf = simple_strtoul(this_opt + 6, NULL, 0);
++ else if (! strncmp(this_opt, "maxclk:", 7))
++ maxclk = simple_strtoul(this_opt + 7, NULL, 0);
++ else if (! strncmp(this_opt, "vbemode:", 8))
++ vbemode = simple_strtoul(this_opt + 8, NULL,0);
++ else if (this_opt[0] >= '0' && this_opt[0] <= '9') {
++ DPRINTK("mode_option: %s\n",this_opt);
++ mode_option = this_opt;
++ } else {
++ printk(KERN_WARNING
++ "vesafb: unrecognized option %s\n", this_opt);
++ }
++ }
++
++ return 0;
++}
++#endif /* !MODULE */
++
++static int vesafb_read_proc_modes(char *buf, char **start, off_t offset,
++ int len, int *eof, void *private)
++{
++ int clen = 0, i;
++
++ for (i = 0; i < vbe_modes_cnt; i++) {
++ clen += min(snprintf(buf + clen, len - clen, "%dx%d-%d\n", vbe_modes[i].x_res,
++ vbe_modes[i].y_res, vbe_modes[i].depth), len - clen);
++ }
++ *eof = 1;
++ return clen;
++}
++
++static int vesafb_read_proc_vbe_info(char *buf, char **start, off_t offset,
++ int len, int *eof, void *private)
++{
++ int clen = 0;
++
++ clen += min(snprintf(buf + clen, len, "Version: %d.%d\n",
++ ((vbe_ib.vbe_version & 0xff00) >> 8),
++ vbe_ib.vbe_version & 0xff), len);
++ clen += min(snprintf(buf + clen, len - clen, "Vendor: %s\n",
++ (char*)vbe_ib.oem_vendor_name_ptr), len - clen);
++ clen += min(snprintf(buf + clen, len - clen, "Product: %s\n",
++ (char*)vbe_ib.oem_product_name_ptr), len - clen);
++ clen += min(snprintf(buf + clen, len - clen, "OEM rev: %s\n",
++ (char*)vbe_ib.oem_product_rev_ptr), len - clen);
++ clen += min(snprintf(buf + clen, len - clen, "OEM string: %s\n",
++ (char*)vbe_ib.oem_string_ptr), len - clen);
++
++ *eof = 1;
++ return clen;
++}
++
++static int __init inline vesafb_vbe_getinfo(struct vesafb_task *tsk)
++{
++ tsk->regs.eax = 0x4f00;
++ tsk->flags = TF_CALL | TF_GETVBEIB;
++ tsk->buf = &vbe_ib;
++ tsk->buf_len = sizeof(vbe_ib);
++ if (vesafb_queue_task (tsk))
++ return -EINVAL;
++ vesafb_wait_for_task(tsk);
++
++ if (vbe_ib.vbe_version < 0x0200) {
++ printk(KERN_ERR "vesafb: Sorry, pre-VBE 2.0 cards are "
++ "not supported.\n");
++ return -EINVAL;
++ }
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f) {
++ printk(KERN_ERR "vesafb: Getting mode info block failed "
++ "(eax=0x%x)\n", (u32)tsk->regs.eax);
++ return -EINVAL;
++ }
++
++ printk(KERN_INFO "vesafb: %s, %s, %s (OEM: %s)\n",
++ (char*)vbe_ib.oem_vendor_name_ptr,
++ (char*)vbe_ib.oem_product_name_ptr,
++ (char*)vbe_ib.oem_product_rev_ptr,
++ (char*)vbe_ib.oem_string_ptr);
++
++ printk(KERN_INFO "vesafb: VBE version: %d.%d\n",
++ ((vbe_ib.vbe_version & 0xff00) >> 8),
++ vbe_ib.vbe_version & 0xff);
++ return 0;
++}
++
++static int __init inline vesafb_vbe_getmodes(struct vesafb_task *tsk)
++{
++ u16 *mode = 0;
++ int off = 0;
++
++ /* Count available modes. */
++ mode = (u16*)vbe_ib.mode_list_ptr;
++ while (*mode != 0xffff) {
++ vbe_modes_cnt++;
++ mode++;
++ }
++
++ vbe_modes = kmalloc(sizeof(struct vesafb_mode_ib)*
++ vbe_modes_cnt, GFP_KERNEL);
++ if (!vbe_modes)
++ return -ENOMEM;
++
++ /* Get mode info for all available modes. */
++ mode = (u16*)vbe_ib.mode_list_ptr;
++
++ while (*mode != 0xffff) {
++ struct vesafb_mode_ib *mib;
++
++ vesafb_reset_task(tsk);
++ tsk->regs.eax = 0x4f01;
++ tsk->regs.ecx = (u32) *mode;
++ tsk->flags = TF_CALL | TF_RETURN_BUF | TF_BUF_DI;
++ tsk->buf = vbe_modes+off;
++ tsk->buf_len = sizeof(struct vesafb_mode_ib);
++ if (vesafb_queue_task(tsk))
++ return -EINVAL;
++ vesafb_wait_for_task(tsk);
++ mib = p_mode(tsk->buf);
++ mib->mode_id = *mode;
++
++ /* We only want modes that are supported with the currennt
++ * hardware configuration (D0), color (D3), graphics (D4)
++ * and that have support for the LFB (D7). */
++ if ((mib->mode_attr & 0x99) == 0x99 &&
++ mib->bits_per_pixel >= 8) {
++ off++;
++ } else {
++ vbe_modes_cnt--;
++ }
++ mode++;
++ mib->depth = mib->red_len + mib->green_len + mib->blue_len;
++ /* Handle 8bpp modes and modes with broken color component
++ * lengths. */
++ if (mib->depth == 0 ||
++ (mib->depth == 24 && mib->bits_per_pixel == 32))
++ mib->depth = mib->bits_per_pixel;
++ }
++
++ return 0;
++}
++
++static int __init inline vesafb_vbe_getpmi(struct vesafb_task *tsk)
++{
++ int i;
++
++ vesafb_reset_task(tsk);
++ tsk->regs.eax = 0x4f0a;
++ tsk->regs.ebx = 0x0;
++ tsk->flags = TF_CALL;
++ if (vesafb_queue_task(tsk))
++ return -EINVAL;
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f || tsk->regs.es < 0xc000) {
++ pmi_setpal = ypan = 0;
++ } else {
++ pmi_base = (u16*)phys_to_virt(((u32)tsk->regs.es << 4) +
++ tsk->regs.edi);
++ pmi_start = (void*)((char*)pmi_base + pmi_base[1]);
++ pmi_pal = (void*)((char*)pmi_base + pmi_base[2]);
++ printk(KERN_INFO "vesafb: protected mode interface info at "
++ "%04x:%04x\n",
++ (u16)tsk->regs.es, (u16)tsk->regs.edi);
++ printk(KERN_INFO "vesafb: pmi: set display start = %p, "
++ "set palette = %p\n", pmi_start, pmi_pal);
++
++ if (pmi_base[3]) {
++ printk(KERN_INFO "vesafb: pmi: ports = ");
++ for (i = pmi_base[3]/2; pmi_base[i] != 0xffff; i++)
++ printk("%x ",pmi_base[i]);
++ printk("\n");
++
++ /*
++ * memory areas not supported (yet?)
++ *
++ * Rules are: we have to set up a descriptor for the
++ * requested memory area and pass it in the ES register
++ * to the BIOS function.
++ */
++ if (pmi_base[i] != 0xffff) {
++ printk(KERN_INFO "vesafb: can't handle memory "
++ "requests, pmi disabled\n");
++ ypan = pmi_setpal = 0;
++ }
++ }
++ }
++ return 0;
++}
++
++static int __init inline vesafb_vbe_getedid(struct vesafb_task *tsk,
++ struct fb_info *info)
++{
++ int res = 0;
++
++ if (noedid || vbe_ib.vbe_version < 0x0300)
++ return -EINVAL;
++
++ vesafb_reset_task(tsk);
++ tsk->regs.eax = 0x4f15;
++ tsk->regs.ebx = 0;
++ tsk->regs.ecx = 0;
++ if (vesafb_queue_task(tsk))
++ return -EINVAL;
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f)
++ return -EINVAL;
++
++ if ((tsk->regs.ebx & 0x3) == 3) {
++ printk(KERN_INFO "vesafb: VBIOS/hardware supports both "
++ "DDC1 and DDC2 transfers\n");
++ } else if ((tsk->regs.ebx & 0x3) == 2) {
++ printk(KERN_INFO "vesafb: VBIOS/hardware supports DDC2 "
++ "transfers\n");
++ } else if ((tsk->regs.ebx & 0x3) == 1) {
++ printk(KERN_INFO "vesafb: VBIOS/hardware supports DDC1 "
++ "transfers\n");
++ } else {
++ printk(KERN_INFO "vesafb: VBIOS/hardware doesn't support "
++ "DDC transfers\n");
++ return -EINVAL;
++ }
++
++ vesafb_reset_task(tsk);
++ tsk->regs.eax = 0x4f15;
++ tsk->regs.ebx = 1;
++ tsk->regs.ecx = tsk->regs.edx = 0;
++ tsk->flags = TF_CALL | TF_RETURN_BUF | TF_BUF_DI;
++ tsk->buf = kmalloc(EDID_LENGTH, GFP_KERNEL);
++ tsk->buf_len = EDID_LENGTH;
++
++ if (vesafb_queue_task(tsk)) {
++ res = -EINVAL;
++ goto out;
++ }
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) == 0x004f) {
++ fb_edid_to_monspecs(tsk->buf, &info->monspecs);
++ fb_videomode_to_modelist(info->monspecs.modedb,
++ info->monspecs.modedb_len, &info->modelist);
++ if (info->monspecs.vfmax && info->monspecs.hfmax) {
++ /* If the maximum pixel clock wasn't specified in
++ * the EDID block, set it to 300 MHz. */
++ if (info->monspecs.dclkmax == 0)
++ info->monspecs.dclkmax = 300 * 1000000;
++ info->monspecs.gtf = 1;
++ } else {
++ res = -EINVAL;
++ }
++ }
++
++out: kfree(tsk->buf);
++ return res;
++}
++
++static void __init inline vesafb_vbe_getmonspecs(struct vesafb_task *tsk,
++ struct fb_info *info)
++{
++ struct fb_var_screeninfo var;
++ int i;
++ memset(&info->monspecs, 0, sizeof(struct fb_monspecs));
++
++ /* If we didn't get all necessary data from the EDID block,
++ * mark it as incompatible with the GTF. */
++ if (vesafb_vbe_getedid(tsk, info))
++ info->monspecs.gtf = 0;
++
++ /* Kernel command line overrides. */
++ if (maxclk)
++ info->monspecs.dclkmax = maxclk * 1000000;
++ if (maxvf)
++ info->monspecs.vfmax = maxvf;
++ if (maxhf)
++ info->monspecs.hfmax = maxhf * 1000;
++
++ /* In case DDC transfers are not supported the user can provide
++ * monitor limits manually. Lower limits are set to "safe" values. */
++ if (info->monspecs.gtf == 0 && maxclk && maxvf && maxhf) {
++ info->monspecs.dclkmin = 0;
++ info->monspecs.vfmin = 60;
++ info->monspecs.hfmin = 29000;
++ info->monspecs.gtf = 1;
++ }
++
++ if (info->monspecs.gtf) {
++ printk(KERN_INFO
++ "vesafb: monitor limits: vf = %d Hz, hf = %d kHz, "
++ "clk = %d MHz\n", info->monspecs.vfmax,
++ (int)(info->monspecs.hfmax / 1000),
++ (int)(info->monspecs.dclkmax / 1000000));
++ /* Add valid VESA video modes to our modelist. */
++ for (i = 0; i < VESA_MODEDB_SIZE; i++) {
++ fb_videomode_to_var(&var, (struct fb_videomode *)
++ &vesa_modes[i]);
++ if (!fb_validate_mode(&var, info))
++ fb_add_videomode((struct fb_videomode *)
++ &vesa_modes[i],
++ &info->modelist);
++ }
++ } else {
++ /* Add all VESA video modes to our modelist. */
++ fb_videomode_to_modelist((struct fb_videomode *)vesa_modes,
++ VESA_MODEDB_SIZE, &info->modelist);
++ printk(KERN_INFO "vesafb: no monitor limits have been set\n");
++ }
++ return;
++}
++
++static int __init inline vesafb_vbe_init(struct fb_info *info)
++{
++ struct vesafb_task *tsk;
++ int res = 0;
++
++ vesafb_create_task(tsk);
++ if (!tsk)
++ return -EINVAL;
++ if ((res = vesafb_vbe_getinfo(tsk)) != 0)
++ goto out;
++ if ((res = vesafb_vbe_getmodes(tsk)) != 0)
++ goto out;
++ if (pmi_setpal || ypan)
++ vesafb_vbe_getpmi(tsk);
++
++ INIT_LIST_HEAD(&info->modelist);
++ vesafb_vbe_getmonspecs(tsk, info);
++
++out: kfree(tsk);
++ return res;
++}
++
++static int __init decode_mode(u32 *xres, u32 *yres, u32 *bpp, u32 *refresh)
++{
++ int len = strlen(mode_option), i, err = 0;
++ u8 res_specified = 0, bpp_specified = 0, refresh_specified = 0,
++ yres_specified = 0;
++
++ for (i = len-1; i >= 0; i--) {
++ switch (mode_option[i]) {
++ case '@':
++ len = i;
++ if (!refresh_specified && !bpp_specified &&
++ !yres_specified) {
++ *refresh = simple_strtoul(&mode_option[i+1],
++ NULL, 0);
++ refresh_specified = 1;
++ } else
++ goto out;
++ break;
++ case '-':
++ len = i;
++ if (!bpp_specified && !yres_specified) {
++ *bpp = simple_strtoul(&mode_option[i+1],
++ NULL, 0);
++ bpp_specified = 1;
++ } else
++ goto out;
++ break;
++ case 'x':
++ if (!yres_specified) {
++ *yres = simple_strtoul(&mode_option[i+1],
++ NULL, 0);
++ yres_specified = 1;
++ } else
++ goto out;
++ break;
++ case '0'...'9':
++ break;
++ default:
++ goto out;
++ }
++ }
++
++ if (i < 0 && yres_specified) {
++ *xres = simple_strtoul(mode_option, NULL, 0);
++ res_specified = 1;
++ }
++
++out: if (!res_specified || !yres_specified) {
++ printk(KERN_ERR "vesafb: invalid resolution, "
++ "%s not specified\n",
++ (!res_specified) ? "width" : "height");
++ err = -EINVAL;
++ }
++
++ return err;
++}
++
++static int __init vesafb_init_set_mode(struct fb_info *info)
++{
++ struct fb_videomode *fbmode;
++ struct fb_videomode mode;
++ int i, modeid, refresh = 0;
++ u8 refresh_specified = 0;
++
++ if (!mode_option)
++ mode_option = CONFIG_FB_VESA_DEFAULT_MODE;
++
++ if (vbemode > 0) {
++ for (i = 0; i < vbe_modes_cnt; i++) {
++ if (vbe_modes[i].mode_id == vbemode) {
++ info->var.vmode = FB_VMODE_NONINTERLACED;
++ info->var.sync = FB_SYNC_VERT_HIGH_ACT;
++ vesafb_setup_var(&info->var, info,
++ &vbe_modes[i]);
++ fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON,
++ 60, &info->var, info);
++ /* With pixclock set to 0, the default BIOS
++ * timings will be used in set_par(). */
++ info->var.pixclock = 0;
++ modeid = i;
++ goto out;
++ }
++ }
++ printk(KERN_INFO "specified VBE mode %d not found\n",
++ vbemode);
++ vbemode = 0;
++ }
++
++ /* Decode the mode specified on the kernel command line. We save
++ * the depth into bits_per_pixel, which is wrong, but will work
++ * anyway. */
++ if (decode_mode(&info->var.xres, &info->var.yres,
++ &info->var.bits_per_pixel, &refresh))
++ return -EINVAL;
++ if (refresh)
++ refresh_specified = 1;
++ else
++ refresh = 60;
++
++ /* Look for a matching VBE mode. We can live if an exact match
++ * cannot be found. */
++ modeid = vesafb_find_vbe_mode(info->var.xres, info->var.yres,
++ info->var.bits_per_pixel, 0);
++
++ if (modeid == -1) {
++ return -EINVAL;
++ } else {
++ info->var.vmode = FB_VMODE_NONINTERLACED;
++ info->var.sync = FB_SYNC_VERT_HIGH_ACT;
++ vesafb_setup_var(&info->var, info, &vbe_modes[modeid]);
++ }
++ if (vbe_ib.vbe_version < 0x0300) {
++ fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 60,
++ &info->var, info);
++ goto out;
++ }
++ if (!gtf) {
++ struct fb_videomode tmode;
++
++ if (refresh_specified) {
++ fb_var_to_videomode(&tmode, &info->var);
++ tmode.refresh = refresh;
++ fbmode = fb_find_nearest_mode(&tmode,
++ &info->modelist);
++ } else
++ fbmode = fb_find_best_mode(&info->var,
++ &info->modelist);
++
++ if (fbmode->xres == info->var.xres &&
++ fbmode->yres == info->var.yres &&
++ !(fbmode->vmode & (FB_VMODE_INTERLACED | FB_VMODE_DOUBLE))
++ && (!refresh_specified ||
++ abs(refresh - fbmode->refresh) <= 5)) {
++ fb_videomode_to_var(&info->var, fbmode);
++ return modeid;
++ }
++ }
++ i = FB_MAXTIMINGS;
++ if (!info->monspecs.gtf)
++ i = FB_IGNOREMON | FB_VSYNCTIMINGS;
++ else if (refresh_specified)
++ i = FB_VSYNCTIMINGS;
++ if (!fb_get_mode(i, refresh, &info->var, info))
++ goto out;
++ if (info->monspecs.gtf &&
++ !fb_get_mode(FB_MAXTIMINGS, 0, &info->var, info))
++ goto out;
++ /* Use default refresh rate */
++ printk(KERN_WARNING "vesafb: using default BIOS refresh rate\n");
++ info->var.pixclock = 0;
++
++out:
++ fb_var_to_videomode(&mode, &info->var);
++ fb_add_videomode(&mode, &info->modelist);
++ return modeid;
++}
++
++static int __init vesafb_probe(struct platform_device *dev)
++{
++ char entry[16];
++ struct fb_info *info;
++ struct vesafb_mode_ib *mode = NULL;
++ int err = 0, i, h;
++ unsigned int size_vmode;
++ unsigned int size_remap;
++ unsigned int size_total;
++
++ vesafb_info = info = framebuffer_alloc(sizeof(struct vesafb_par) +
++ sizeof(u32) * 256, &dev->dev);
++ if (!info)
++ return -ENOMEM;
++
++ if (vesafb_wait_for_thread()) {
++ printk(KERN_ERR "vesafb: vesafb thread not running\n");
++ framebuffer_release(info);
++ return -EINVAL;
++ }
++
++ if (vesafb_vbe_init(info)) {
++ printk(KERN_ERR "vesafb: vbe_init failed\n");
++ err = -EINVAL;
++ goto out;
++ }
++
++ vesafb_fix.ypanstep = ypan ? 1 : 0;
++ vesafb_fix.ywrapstep = (ypan>1) ? 1 : 0;
++
++ info->pseudo_palette = ((u8*)info->par + sizeof(struct vesafb_par));
++ info->fbops = &vesafb_ops;
++ info->var = vesafb_defined;
++ info->fix = vesafb_fix;
++
++ if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) {
++ err = -ENXIO;
++ goto out;
++ }
++
++ i = vesafb_init_set_mode(info);
++ if (i < 0) {
++ err = -EINVAL;
++ goto out_cmap;
++ } else
++ mode = &vbe_modes[i];
++
++ /* Disable blanking if the user requested so. */
++ if (!blank) {
++ info->fbops->fb_blank = NULL;
++ }
++
++ /* Find out how much IO memory is required for the mode with
++ * the highest resolution. */
++ size_remap = 0;
++ for (i = 0; i < vbe_modes_cnt; i++) {
++ h = vbe_modes[i].bytes_per_scan_line * vbe_modes[i].y_res;
++ if (h > size_remap)
++ size_remap = h;
++ }
++ size_remap *= 2;
++
++ /* size_vmode -- that is the amount of memory needed for the
++ * used video mode, i.e. the minimum amount of
++ * memory we need. */
++ if (mode != NULL) {
++ size_vmode = info->var.yres * mode->bytes_per_scan_line;
++ } else {
++ size_vmode = info->var.yres * info->var.xres *
++ ((info->var.bits_per_pixel + 7) >> 3);
++ }
++
++ /* size_total -- all video memory we have. Used for mtrr
++ * entries, ressource allocation and bounds
++ * checking. */
++ size_total = vbe_ib.total_memory * 65536;
++ if (vram_total)
++ size_total = vram_total * 1024 * 1024;
++ if (size_total < size_vmode)
++ size_total = size_vmode;
++ ((struct vesafb_par*)(info->par))->mem_total = size_total;
++
++ /* size_remap -- the amount of video memory we are going to
++ * use for vesafb. With modern cards it is no
++ * option to simply use size_total as th
++ * wastes plenty of kernel address space. */
++ if (vram_remap)
++ size_remap = vram_remap * 1024 * 1024;
++ if (size_remap < size_vmode)
++ size_remap = size_vmode;
++ if (size_remap > size_total)
++ size_remap = size_total;
++
++ info->fix.smem_len = size_remap;
++ info->fix.smem_start = mode->phys_base_ptr;
++
++ /* We have to set it here, because when setup_var() was called,
++ * smem_len wasn't defined yet. */
++ info->var.yres_virtual = info->fix.smem_len /
++ mode->bytes_per_scan_line;
++
++ if (ypan && info->var.yres_virtual > info->var.yres) {
++ printk(KERN_INFO "vesafb: scrolling: %s "
++ "using protected mode interface, "
++ "yres_virtual=%d\n",
++ (ypan > 1) ? "ywrap" : "ypan",info->var.yres_virtual);
++ } else {
++ printk(KERN_INFO "vesafb: scrolling: redraw\n");
++ info->var.yres_virtual = info->var.yres;
++ ypan = 0;
++ }
++
++ info->flags = FBINFO_FLAG_DEFAULT |
++ (ypan) ? FBINFO_HWACCEL_YPAN : 0;
++
++ if (!ypan)
++ info->fbops->fb_pan_display = NULL;
++
++ if (!request_mem_region(info->fix.smem_start, size_total, "vesafb")) {
++ printk(KERN_WARNING "vesafb: cannot reserve video memory at "
++ "0x%lx\n", info->fix.smem_start);
++ /* We cannot make this fatal. Sometimes this comes from magic
++ spaces our resource handlers simply don't know about. */
++ }
++
++ info->screen_base = ioremap(info->fix.smem_start, info->fix.smem_len);
++
++ if (!info->screen_base) {
++ printk(KERN_ERR
++ "vesafb: abort, cannot ioremap video memory "
++ "0x%x @ 0x%lx\n",
++ info->fix.smem_len, info->fix.smem_start);
++ err = -EIO;
++ goto out_mem;
++ }
++
++ /* Request failure does not faze us, as vgacon probably has this
++ region already (FIXME) */
++ request_region(0x3c0, 32, "vesafb");
++
++#ifdef CONFIG_MTRR
++ if (mtrr && !(info->fix.smem_start & (PAGE_SIZE - 1))) {
++ int temp_size = size_total;
++ unsigned int type = 0;
++
++ switch (mtrr) {
++ case 1:
++ type = MTRR_TYPE_UNCACHABLE;
++ break;
++ case 2:
++ type = MTRR_TYPE_WRBACK;
++ break;
++ case 3:
++ type = MTRR_TYPE_WRCOMB;
++ break;
++ case 4:
++ type = MTRR_TYPE_WRTHROUGH;
++ break;
++ default:
++ type = 0;
++ break;
++ }
++
++ if (type) {
++ int rc;
++
++ /* Find the largest power-of-two */
++ while (temp_size & (temp_size - 1))
++ temp_size &= (temp_size - 1);
++
++ /* Try and find a power of two to add */
++ do {
++ rc = mtrr_add(info->fix.smem_start,
++ temp_size, type, 1);
++ temp_size >>= 1;
++ } while (temp_size >= PAGE_SIZE && rc == -EINVAL);
++ }
++ }
++#endif /* CONFIG_MTRR */
++
++ if (register_framebuffer(info) < 0) {
++ printk(KERN_ERR
++ "vesafb: failed to register framebuffer device\n");
++ err = -EINVAL;
++ goto out_mem;
++ }
++
++ printk(KERN_INFO "vesafb: framebuffer at 0x%lx, mapped to 0x%p, "
++ "using %dk, total %dk\n", info->fix.smem_start,
++ info->screen_base, size_remap/1024, size_total/1024);
++ printk(KERN_INFO "fb%d: %s frame buffer device\n", info->node,
++ info->fix.id);
++
++ sprintf(entry, "fb%d", info->node);
++ proc_mkdir(entry, 0);
++
++ sprintf(entry, "fb%d/modes", info->node);
++ create_proc_read_entry(entry, 0, 0, vesafb_read_proc_modes, NULL);
++
++ sprintf(entry, "fb%d/vbe_info", info->node);
++ create_proc_read_entry(entry, 0, 0, vesafb_read_proc_vbe_info, NULL);
++ return 0;
++
++out_mem:
++ release_mem_region(info->fix.smem_start, size_total);
++ if (!list_empty(&info->modelist))
++ fb_destroy_modelist(&info->modelist);
++ fb_destroy_modedb(info->monspecs.modedb);
++out_cmap:
++ fb_dealloc_cmap(&info->cmap);
++out:
++ framebuffer_release(info);
++ vesafb_info = NULL;
++ kfree(vbe_modes);
++ vbe_modes = NULL;
++ return err;
++}
++
++int __init vesafb_init(void)
++{
++ int ret;
++#ifndef MODULE
++ char *option = NULL;
++
++ if (fb_get_options("vesafb", &option))
++ return -ENODEV;
++ vesafb_setup(option);
++#endif
++ ret = platform_driver_register(&vesafb_driver);
++
++ if (!ret) {
++ vesafb_device = platform_device_alloc("vesafb", 0);
++
++ if (vesafb_device)
++ ret = platform_device_add(vesafb_device);
++ else
++ ret = -ENOMEM;
++
++ if (ret) {
++ platform_device_put(vesafb_device);
++ platform_driver_unregister(&vesafb_driver);
++ }
++ }
++ return ret;
++}
++
++module_init(vesafb_init);
++
++#ifdef MODULE
++void __exit vesafb_exit(void)
++{
++ char entry[16];
++
++ if (vesafb_info)
++ unregister_framebuffer(vesafb_info);
++
++ platform_device_unregister(vesafb_device);
++ platform_driver_unregister(&vesafb_driver);
++
++ if (vesafb_info) {
++ struct vesafb_par *par = (struct vesafb_par*)vesafb_info->par;
++
++ sprintf(entry, "fb%d/modes", vesafb_info->node);
++ remove_proc_entry(entry, NULL);
++
++ sprintf(entry, "fb%d/vbe_info", vesafb_info->node);
++ remove_proc_entry(entry, NULL);
++
++ sprintf(entry, "fb%d", vesafb_info->node);
++ remove_proc_entry(entry, NULL);
++
++ iounmap(vesafb_info->screen_base);
++ release_mem_region(vesafb_info->fix.smem_start,
++ par->mem_total);
++ fb_dealloc_cmap(&vesafb_info->cmap);
++ if (!list_empty(&vesafb_info->modelist))
++ fb_destroy_modelist(&vesafb_info->modelist);
++ fb_destroy_modedb(vesafb_info->monspecs.modedb);
++ framebuffer_release(vesafb_info);
++ }
++
++ if (vbe_modes != NULL)
++ kfree(vbe_modes);
++}
++
++module_exit(vesafb_exit);
++
++static inline int param_get_scroll(char *buffer, struct kernel_param *kp)
++{
++ return 0;
++}
++static inline int param_set_scroll(const char *val, struct kernel_param *kp)
++{
++ ypan = 0;
++
++ if (! strcmp(val, "redraw"))
++ ypan = 0;
++ else if (! strcmp(val, "ypan"))
++ ypan = 1;
++ else if (! strcmp(val, "ywrap"))
++ ypan = 2;
++
++ return 0;
++}
++
++#define param_check_scroll(name, p) __param_check(name, p, void);
++
++module_param_named(scroll, ypan, scroll, 0);
++MODULE_PARM_DESC(scroll,"Scrolling mode, set to 'redraw', 'ypan' or 'ywrap'");
++module_param_named(vgapal, pmi_setpal, invbool, 0);
++MODULE_PARM_DESC(vgapal,"bool: set palette using VGA registers");
++module_param_named(pmipal, pmi_setpal, bool, 0);
++MODULE_PARM_DESC(pmipal,"bool: set palette using PMI calls");
++module_param(mtrr, uint, 0);
++MODULE_PARM_DESC(mtrr,"Memory Type Range Registers setting. Use 0 to disable.");
++module_param(blank, bool, 1);
++MODULE_PARM_DESC(blank,"bool: enable hardware blanking");
++module_param(nocrtc, bool, 0);
++MODULE_PARM_DESC(nocrtc,"bool: ignore CRTC timings when setting modes");
++module_param(noedid, bool, 0);
++MODULE_PARM_DESC(noedid,"bool: ignore EDID-provided monitor limits "
++ "when setting modes");
++module_param(gtf, bool, 0);
++MODULE_PARM_DESC(gtf,"bool: force use of VESA GTF to calculate mode timings");
++module_param(vram_remap, uint, 0);
++MODULE_PARM_DESC(vram_remap,"Set amount of video memory to be used [MiB]");
++module_param(vram_total, uint, 0);
++MODULE_PARM_DESC(vram_total,"Set total amount of video memoery [MiB]");
++module_param(maxclk, ushort, 0);
++MODULE_PARM_DESC(maxclk,"Maximum pixelclock [MHz], overrides EDID data");
++module_param(maxhf, ushort, 0);
++MODULE_PARM_DESC(maxhf,"Maximum horizontal frequency [kHz], "
++ "overrides EDID data");
++module_param(maxvf, ushort, 0);
++MODULE_PARM_DESC(maxvf,"Maximum vertical frequency [Hz], "
++ "overrides EDID data");
++module_param_named(mode, mode_option, charp, 0);
++MODULE_PARM_DESC(mode, "Specify resolution as "
++ "\"<xres>x<yres>[-<bpp>][@<refresh>]\"");
++module_param(vbemode, ushort, 0);
++MODULE_PARM_DESC(vbemode,"VBE mode number to set, overrides 'mode' setting");
++
++#endif /* MODULE */
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Michal Januszewski");
++MODULE_DESCRIPTION("Framebuffer driver for VBE2.0+ compliant graphics boards");
++
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 4463735..7283e48 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -1390,6 +1390,8 @@ extern void mmput(struct mm_struct *);
+ extern struct mm_struct *get_task_mm(struct task_struct *task);
+ /* Remove the current tasks stale references to the old mm_struct */
+ extern void mm_release(struct task_struct *, struct mm_struct *);
++/* Create a new mm for a kernel thread */
++extern int set_new_mm(void);
+
+ extern int copy_thread(int, unsigned long, unsigned long, unsigned long, struct task_struct *, struct pt_regs *);
+ extern void flush_thread(void);
+diff --git a/include/video/vesa.h b/include/video/vesa.h
+new file mode 100644
+index 0000000..bb5abcf
+--- /dev/null
++++ b/include/video/vesa.h
+@@ -0,0 +1,150 @@
++#if 0
++#define DPRINTK(fmt, args...) printk(KERN_DEBUG "%s: " fmt, __FUNCTION__ , \
++ ## args)
++#else
++#define DPRINTK(fmt, args...)
++#endif
++
++#define p_crtc(arg) ((struct vesafb_crtc_ib*)(arg))
++#define p_vbe(arg) ((struct vesafb_vbe_ib*)(arg))
++#define p_mode(arg) ((struct vesafb_mode_ib*)(arg))
++
++struct vesafb_task {
++ u8 flags;
++ void *buf;
++ int buf_len;
++ struct vm86_regs regs;
++ struct list_head node;
++ struct completion done;
++};
++
++/* Vesafb task flags and masks */
++#define TF_CALL 0x00
++#define TF_EXIT 0x01
++#define TF_GETVBEIB 0x02
++#define TF_BUF_DI 0x04
++#define TF_BUF_BX 0x08
++#define TF_RETURN_BUF 0x10
++
++/* Macros and functions for manipulating vesafb tasks */
++#define vesafb_create_task(task) \
++do { \
++ task = kmalloc(sizeof(struct vesafb_task), GFP_ATOMIC); \
++ if (task) \
++ memset(task, 0, sizeof(struct vesafb_task)); \
++ init_completion(&task->done); \
++} while (0)
++
++#define vesafb_wait_for_task(task) wait_for_completion(&task->done);
++#define vesafb_reset_task(task) init_completion(&task->done);
++int vesafb_queue_task(struct vesafb_task *task);
++
++/* Functions for controlling the vesafb thread */
++int vesafb_wait_for_thread(void);
++
++#define VBE_CAP_CAN_SWITCH_DAC 0x01
++#define VBE_CAP_VGACOMPAT 0x02
++
++/* This struct is 512 bytes long */
++struct vesafb_vbe_ib {
++ char vbe_signature[4];
++ u16 vbe_version;
++ u32 oem_string_ptr;
++ u32 capabilities;
++ u32 mode_list_ptr;
++ u16 total_memory;
++ u16 oem_software_rev;
++ u32 oem_vendor_name_ptr;
++ u32 oem_product_name_ptr;
++ u32 oem_product_rev_ptr;
++ u8 reserved[222];
++ char oem_data[256];
++} __attribute__ ((packed));
++
++struct vesafb_crtc_ib {
++ u16 horiz_total;
++ u16 horiz_start;
++ u16 horiz_end;
++ u16 vert_total;
++ u16 vert_start;
++ u16 vert_end;
++ u8 flags;
++ u32 pixel_clock;
++ u16 refresh_rate;
++ u8 reserved[40];
++} __attribute__ ((packed));
++
++#define VBE_MODE_VGACOMPAT 0x20
++
++struct vesafb_mode_ib {
++ /* for all VBE revisions */
++ u16 mode_attr;
++ u8 winA_attr;
++ u8 winB_attr;
++ u16 win_granularity;
++ u16 win_size;
++ u16 winA_seg;
++ u16 winB_seg;
++ u32 win_func_ptr;
++ u16 bytes_per_scan_line;
++
++ /* for VBE 1.2+ */
++ u16 x_res;
++ u16 y_res;
++ u8 x_char_size;
++ u8 y_char_size;
++ u8 planes;
++ u8 bits_per_pixel;
++ u8 banks;
++ u8 memory_model;
++ u8 bank_size;
++ u8 image_pages;
++ u8 reserved1;
++
++ /* Direct color fields for direct/6 and YUV/7 memory models. */
++ /* Offsets are bit positions of lsb in the mask. */
++ u8 red_len;
++ u8 red_off;
++ u8 green_len;
++ u8 green_off;
++ u8 blue_len;
++ u8 blue_off;
++ u8 rsvd_len;
++ u8 rsvd_off;
++ u8 direct_color_info; /* direct color mode attributes */
++
++ /* for VBE 2.0+ */
++ u32 phys_base_ptr;
++ u8 reserved2[6];
++
++ /* for VBE 3.0+ */
++ u16 lin_bytes_per_scan_line;
++ u8 bnk_image_pages;
++ u8 lin_image_pages;
++ u8 lin_red_len;
++ u8 lin_red_off;
++ u8 lin_green_len;
++ u8 lin_green_off;
++ u8 lin_blue_len;
++ u8 lin_blue_off;
++ u8 lin_rsvd_len;
++ u8 lin_rsvd_off;
++ u32 max_pixel_clock;
++ u16 mode_id;
++ u8 depth;
++} __attribute__ ((packed));
++
++struct vesafb_pal_entry {
++ u_char blue, green, red, pad;
++} __attribute__ ((packed));
++
++struct vesafb_par {
++ u8 *vbe_state;
++ int vbe_state_size;
++ atomic_t ref_count;
++
++ u32 mem_total;
++ int mode_idx;
++ struct vesafb_crtc_ib crtc;
++};
++
+diff --git a/kernel/fork.c b/kernel/fork.c
+index fc723e5..dc8f93b 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -100,6 +100,7 @@ struct kmem_cache *fs_cachep;
+
+ /* SLAB cache for vm_area_struct structures */
+ struct kmem_cache *vm_area_cachep;
++EXPORT_SYMBOL_GPL(vm_area_cachep);
+
+ /* SLAB cache for mm_struct structures (tsk->mm) */
+ static struct kmem_cache *mm_cachep;
+@@ -399,6 +400,40 @@ void mmput(struct mm_struct *mm)
+ EXPORT_SYMBOL_GPL(mmput);
+
+ /**
++ * set_new_mm - allocate, init and activate a new mm for a kernel thread
++ */
++int set_new_mm(void)
++{
++ struct mm_struct *mm;
++ struct task_struct *tsk = current;
++ struct mm_struct *active_mm;
++
++ mm = mm_alloc();
++ if (!mm)
++ goto fail_nomem;
++ if (init_new_context(current,mm))
++ goto fail_nocontext;
++
++ task_lock(tsk);
++ tsk->flags |= PF_BORROWED_MM;
++ active_mm = tsk->active_mm;
++ current->mm = mm;
++ current->active_mm = mm;
++ activate_mm(active_mm, mm);
++ task_unlock(current);
++
++ /* Drop the previous active_mm */
++ mmdrop(active_mm);
++ return 0;
++
++fail_nocontext:
++ mmdrop(mm);
++fail_nomem:
++ return -EINVAL;
++}
++EXPORT_SYMBOL_GPL(set_new_mm);
++
++/**
+ * get_task_mm - acquire a reference to the task's mm
+ *
+ * Returns %NULL if the task has no mm. Checks PF_BORROWED_MM (meaning
+diff --git a/mm/memory.c b/mm/memory.c
+index 563792f..a9519ea 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
+@@ -1193,6 +1193,7 @@ int zeromap_page_range(struct vm_area_struct *vma,
+ } while (pgd++, addr = next, addr != end);
+ return err;
+ }
++EXPORT_SYMBOL_GPL(zeromap_page_range);
+
+ pte_t * fastcall get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl)
+ {
+diff --git a/mm/mmap.c b/mm/mmap.c
+index 9717337..6fa5b1c 100644
+--- a/mm/mmap.c
++++ b/mm/mmap.c
+@@ -2024,6 +2024,7 @@ int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
+ vma_link(mm, vma, prev, rb_link, rb_parent);
+ return 0;
+ }
++EXPORT_SYMBOL_GPL(insert_vm_struct);
+
+ /*
+ * Copy the vma structure to a new location in the same mm,
diff --git a/packages/linux/linux-rp-2.6.18/wm97xx-lcdnoise-r0.patch b/packages/linux/linux-rp-2.6.20/wm97xx-lcdnoise-r0.patch
index 191de3af22..191de3af22 100644
--- a/packages/linux/linux-rp-2.6.18/wm97xx-lcdnoise-r0.patch
+++ b/packages/linux/linux-rp-2.6.20/wm97xx-lcdnoise-r0.patch
diff --git a/packages/linux/linux-rp.inc b/packages/linux/linux-rp.inc
index a9d7fcb07f..3bbd22e6c2 100644
--- a/packages/linux/linux-rp.inc
+++ b/packages/linux/linux-rp.inc
@@ -11,6 +11,7 @@ RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
JLSRC = "http://www.cs.wisc.edu/~lenz/zaurus/files"
BASRC = "http://www.orca.cx/zaurus/patches"
CHSRC = "http://oz.drigon.com/patches"
+TKSRC = "http://www.informatik.hu-berlin.de/~tkunze/zaurus/patches"
##############################################################
# Compensate for sucky bootloader on all Sharp Zaurus models
@@ -58,6 +59,8 @@ module_autoload_snd-soc-corgi_c7x0 = "snd-soc-corgi"
module_autoload_snd-soc-spitz_akita = "snd-soc-spitz"
module_autoload_snd-soc-spitz_spitz = "snd-soc-spitz"
module_autoload_snd-soc-poodle_poodle = "snd-soc-poodle"
+module_autoload_locomo-spi_collie = "locomo-spi"
+module_autoload_mmc_block_collie = "mmc_block"
do_configure() {
rm -f ${S}/.config
@@ -194,7 +197,7 @@ do_deploy() {
install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
rm -f ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin
ln -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin
- tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_VERSION}-${MACHINE}.tgz -C ${D} lib
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/linux-rp_2.6.16.bb b/packages/linux/linux-rp_2.6.16.bb
index f1de99d452..e49e9e2366 100644
--- a/packages/linux/linux-rp_2.6.16.bb
+++ b/packages/linux/linux-rp_2.6.16.bb
@@ -1,6 +1,6 @@
require linux-rp.inc
-PR = "r47"
+PR = "r48"
# Handy URLs
# git://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git \
@@ -86,7 +86,7 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2 \
${RPSRC}/sharpsl_pm-do-r2.patch;patch=1;status=merged \
${RPSRC}/usb_pxa27x_udc-r0.patch;patch=1 \
${RPSRC}/usb_add_epalloc-r1.patch;patch=1 \
- ${DOSRC}/kexec-arm-r2.patch;patch=1 \
+ ${RPSRC}/kexec-arm-r2a.patch;patch=1 \
file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1 \
file://hrw-pcmcia-ids-r5.patch;patch=1 \
file://locomo-kbd-hotkeys.patch;patch=1 \
@@ -154,6 +154,3 @@ SRC_URI_append_poodle = "\
${RPSRC}/rp_poodle_hacks-r0.patch;patch=1"
S = "${WORKDIR}/linux-2.6.16"
-
-# to get module dependencies working
-KERNEL_RELEASE = "2.6.16"
diff --git a/packages/linux/linux-rp_2.6.17.bb b/packages/linux/linux-rp_2.6.17.bb
index fceb547e16..717ef5a523 100644
--- a/packages/linux/linux-rp_2.6.17.bb
+++ b/packages/linux/linux-rp_2.6.17.bb
@@ -1,6 +1,6 @@
require linux-rp.inc
-PR = "r32"
+PR = "r33"
# Handy URLs
# git://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git \
@@ -41,7 +41,7 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.17.tar.bz2 \
${RPSRC}/pm_changes-r1.patch;patch=1 \
${RPSRC}/usb_pxa27x_udc-r0.patch;patch=1 \
${RPSRC}/usb_add_epalloc-r1.patch;patch=1 \
- ${DOSRC}/kexec-arm-r3.patch;patch=1 \
+ ${RPSRC}/kexec-arm-r3a.patch;patch=1 \
${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
${RPSRC}/poodle_pm-r3.patch;patch=1 \
${RPSRC}/pxafb_changeres-r0.patch;patch=1 \
@@ -123,6 +123,3 @@ SRC_URI_append_tosa = "\
# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
S = "${WORKDIR}/linux-2.6.17"
-
-# to get module dependencies working
-KERNEL_RELEASE = "2.6.17"
diff --git a/packages/linux/linux-rp_2.6.18.bb b/packages/linux/linux-rp_2.6.18.bb
deleted file mode 100644
index a4d7813f53..0000000000
--- a/packages/linux/linux-rp_2.6.18.bb
+++ /dev/null
@@ -1,110 +0,0 @@
-require linux-rp.inc
-
-PR = "r7"
-
-# 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.gz
-# http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.18-rc6.bz2;patch=1
-# http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.18-rc2-git1.bz2;patch=1
-# http://www.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1
-# http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.14-rc2/2.6.14-rc2-mm1/2.6.14-rc2-mm1.bz2;patch=1
-
-# Patches submitted upstream are towards top of this list
-# Hacks should clearly named and at the bottom
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2 \
- http://opensource.wolfsonmicro.com/~lg/asoc/asoc-v0.12.4.patch;patch=1 \
- ${RPSRC}/poodle_audio-r6.patch;patch=1 \
- ${RPSRC}/hx2750_base-r27.patch;patch=1 \
- ${RPSRC}/hx2750_bl-r7.patch;patch=1 \
- ${RPSRC}/hx2750_pcmcia-r2.patch;patch=1 \
- ${RPSRC}/pxa_keys-r5.patch;patch=1 \
- ${RPSRC}/tsc2101-r12.patch;patch=1 \
- ${RPSRC}/hx2750_test1-r4.patch;patch=1 \
- ${RPSRC}/pxa_timerfix-r0.patch;patch=1 \
- ${RPSRC}/input_power-r5.patch;patch=1 \
- ${RPSRC}/pxa25x_cpufreq-r1.patch;patch=1 \
- ${RPSRC}/sharpsl_pm_fixes1-r0.patch;patch=1 \
- ${RPSRC}/pm_changes-r1.patch;patch=1 \
- ${RPSRC}/usb_pxa27x_udc-r0.patch;patch=1 \
- ${RPSRC}/usb_add_epalloc-r3.patch;patch=1 \
- ${DOSRC}/kexec-arm-r3.patch;patch=1 \
- ${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
- ${RPSRC}/poodle_pm-r3.patch;patch=1 \
- ${RPSRC}/pxafb_changeres-r2.patch;patch=1 \
- ${RPSRC}/pxa27x_overlay-r2.patch;patch=1 \
- ${RPSRC}/w100_extaccel-r0.patch;patch=1 \
- ${RPSRC}/xscale_cache_workaround-r1.patch;patch=1 \
- file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1 \
- file://hrw-pcmcia-ids-r5.patch;patch=1 \
- ${RPSRC}/logo_oh-r0.patch.bz2;patch=1;status=unmergable \
- ${RPSRC}/logo_oz-r2.patch.bz2;patch=1;status=unmergable \
- ${RPSRC}/pxa-linking-bug.patch;patch=1;status=unmergable \
- file://add-oz-release-string.patch;patch=1;status=unmergable \
- ${RPSRC}/mmcsd_large_cards-r0.patch;patch=1;status=hack \
- ${RPSRC}/mmcsd_no_scr_check-r0.patch;patch=1;status=hack \
- ${RPSRC}/integrator_rgb-r1.patch;patch=1;status=hack \
- ${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://orinoco-remove-all-which-are-in-hostap-HACK.patch;patch=1;status=unmergable-hack \
- file://squashfs3.0-2.6.15.patch;patch=1;status=external \
- file://defconfig-c7x0 \
- file://defconfig-hx2000 \
- file://defconfig-collie \
- file://defconfig-poodle \
- file://defconfig-akita \
- file://defconfig-spitz \
- file://defconfig-qemuarm \
- file://defconfig-qemux86 \
- file://defconfig-tosa "
-
-# Add this to enable pm debug code (useful with a serial lead)
-# ${RPSRC}/sharpsl_pm_debug-r0.patch;patch=1
-
-# Disabled until I find the reason this gives issues with cdc_subset
-# ${RPSRC}/usb_rndis_tweaks-r0.patch;patch=1 \
-
-# Is anything out of this still needed? Parts were commited to mainline by rmk (drivers/mfd/)
-# (Pavel Machek's git tree has updated versions of this?)
-# ${JLSRC}/zaurus-lcd-2.6.11.diff.gz;patch=1
-
-# These patches are extracted from Pavel Machek's git tree
-# (diff against vanilla kernel)
-SRC_URI_append_collie = "\
- ${DOSRC}/collie/mtd-sharp-flash-hack-r0.patch;patch=1 \
- ${DOSRC}/collie/collie-r0.patch;patch=1 \
- ${DOSRC}/collie/locomolcd-backlight-r0.patch;patch=1 \
- ${DOSRC}/collie/ucb1x00-touch-audio-r0.patch;patch=1 \
- file://collie-mcp-r1.patch;patch=1 \
- ${DOSRC}/collie/sa1100-udc-r0.patch;patch=1 \
-# ${DOSRC}/collie/collie-pm-r1.patch;patch=1 \
-"
-
-SRC_URI_append_tosa = "\
- ${CHSRC}/usb-ohci-hooks-r1.patch;patch=1 \
- ${CHSRC}/tmio-core-r4.patch;patch=1 \
- file://tmio-tc6393-r7.patch;patch=1 \
- file://tmio-nand-r7.patch;patch=1 \
- file://tmio-ohci-r5.patch;patch=1 \
- ${CHSRC}/tmio-fb-r6.patch;patch=1 \
- ${DOSRC}/tosa-keyboard-r17.patch;patch=1 \
- ${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \
- ${DOSRC}/tosa-tmio-r6.patch;patch=1 \
- ${DOSRC}/tosa-power-r17.patch;patch=1 \
- file://tosa-tmio-lcd-r10.patch;patch=1 \
- ${DOSRC}/tosa-bluetooth-r8.patch;patch=1 \
- ${DOSRC}/wm97xx-lg7-r0.patch;patch=1 \
- file://wm9712-suspend-cold-res-r2.patch;patch=1 \
- ${DOSRC}/sharpsl-pm-postresume-r0.patch;patch=1 \
- ${DOSRC}/wm97xx-dig-restore-r0.patch;patch=1 \
- ${DOSRC}/wm97xx-miscdevs-resume-r0.patch;patch=1 \
- file://wm9712-reset-loop-r2.patch;patch=1 \
- file://tosa-lcdnoise-r1.patch;patch=1 \
- file://wm97xx-lcdnoise-r0.patch;patch=1 "
-# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
-
-S = "${WORKDIR}/linux-2.6.18"
-
-# to get module dependencies working
-KERNEL_RELEASE = "2.6.18"
diff --git a/packages/linux/linux-rp_2.6.19+git.bb b/packages/linux/linux-rp_2.6.19+git.bb
index 50235850b7..4a71e86e91 100644
--- a/packages/linux/linux-rp_2.6.19+git.bb
+++ b/packages/linux/linux-rp_2.6.19+git.bb
@@ -1,8 +1,10 @@
require linux-rp.inc
-PR = "r2"
+PR = "r5"
DEFAULT_PREFERENCE = "-1"
+#up the default pref for the hx2000 machine, since this is the only working kernel for it present in .dev
+DEFAULT_PREFERENCE_hx2000 = "1"
# Handy URLs
# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
@@ -12,17 +14,17 @@ DEFAULT_PREFERENCE = "-1"
# http://www.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1
# http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.14-rc2/2.6.14-rc2-mm1/2.6.14-rc2-mm1.bz2;patch=1
-# Patches submitted upstream are towards top of this list
+# Patches submitted upstream are towards top of this list
# Hacks should clearly named and at the bottom
-SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=v2.6.20-rc1 \
- http://opensource.wolfsonmicro.com/~lg/asoc/asoc-v0.12.4.patch;patch=1 \
- ${RPSRC}/pxafb_fix_params-r1.patch;patch=1 \
- ${RPSRC}/hx2750_base-r27.patch;patch=1 \
- ${RPSRC}/hx2750_bl-r7.patch;patch=1 \
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=v2.6.20-rc4 \
+ http://opensource.wolfsonmicro.com/~lg/asoc/asoc-v0.13pre1.patch;patch=1;status=merged \
+ ${RPSRC}/asoc_13pre1_fix-r0.patch;patch=1 \
+ ${RPSRC}/hx2750_base-r28.patch;patch=1 \
+ ${RPSRC}/hx2750_bl-r8.patch;patch=1 \
${RPSRC}/hx2750_pcmcia-r2.patch;patch=1 \
- ${RPSRC}/pxa_keys-r6.patch;patch=1 \
- ${RPSRC}/tsc2101-r15.patch;patch=1 \
- ${RPSRC}/hx2750_test1-r4.patch;patch=1 \
+ ${RPSRC}/pxa_keys-r7.patch;patch=1 \
+ ${RPSRC}/tsc2101-r16.patch;patch=1 \
+ ${RPSRC}/hx2750_test1-r6.patch;patch=1 \
${RPSRC}/pxa_timerfix-r0.patch;patch=1 \
${RPSRC}/input_power-r6.patch;patch=1 \
${RPSRC}/pxa25x_cpufreq-r2.patch;patch=1 \
@@ -30,12 +32,11 @@ SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;
${RPSRC}/pm_changes-r1.patch;patch=1 \
${RPSRC}/usb_add_epalloc-r3.patch;patch=1 \
${RPSRC}/usb_pxa27x_udc-r3.patch;patch=1 \
- ${DOSRC}/kexec-arm-r3.patch;patch=1 \
+ ${RPSRC}/kexec-arm-r4a.patch;patch=1 \
${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
${RPSRC}/poodle_pm-r3.patch;patch=1 \
${RPSRC}/pxa27x_overlay-r5.patch;patch=1 \
${RPSRC}/w100_extaccel-r0.patch;patch=1 \
- ${RPSRC}/xscale_cache_workaround-r1.patch;patch=1 \
file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1 \
${RPSRC}/logo_oh-r0.patch.bz2;patch=1;status=unmergable \
${RPSRC}/logo_oz-r2.patch.bz2;patch=1;status=unmergable \
@@ -103,6 +104,3 @@ SRC_URI_append_tosa = "\
# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
S = "${WORKDIR}/git"
-
-# to get module dependencies working
-KERNEL_RELEASE = "2.6.19-rc4"
diff --git a/packages/linux/linux-rp_2.6.19.bb b/packages/linux/linux-rp_2.6.19.bb
deleted file mode 100644
index 41212f3c92..0000000000
--- a/packages/linux/linux-rp_2.6.19.bb
+++ /dev/null
@@ -1,110 +0,0 @@
-require linux-rp.inc
-
-PR = "r3"
-
-DEFAULT_PREFERENCE = "-1"
-
-# 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.gz
-# http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.18-rc6.bz2;patch=1
-# http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.18-rc2-git1.bz2;patch=1
-# http://www.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1
-# http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.14-rc2/2.6.14-rc2-mm1/2.6.14-rc2-mm1.bz2;patch=1
-
-# Patches submitted upstream are towards top of this list
-# Hacks should clearly named and at the bottom
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz2 \
- http://opensource.wolfsonmicro.com/~lg/asoc/asoc-v0.12.4.patch;patch=1 \
- ${RPSRC}/pxafb_fix_params-r1.patch;patch=1 \
- ${RPSRC}/pxa_irda_susres_fix-r0.patch;patch=1 \
- ${RPSRC}/hx2750_base-r27.patch;patch=1 \
- ${RPSRC}/hx2750_bl-r7.patch;patch=1 \
- ${RPSRC}/hx2750_pcmcia-r2.patch;patch=1 \
- ${RPSRC}/pxa_keys-r5.patch;patch=1 \
- ${RPSRC}/tsc2101-r14.patch;patch=1 \
- ${RPSRC}/hx2750_test1-r4.patch;patch=1 \
- ${RPSRC}/pxa_timerfix-r0.patch;patch=1 \
- ${RPSRC}/input_power-r6.patch;patch=1 \
- ${RPSRC}/pxa25x_cpufreq-r1.patch;patch=1 \
- ${RPSRC}/sharpsl_pm_fixes1-r0.patch;patch=1 \
- ${RPSRC}/pm_changes-r1.patch;patch=1 \
- ${RPSRC}/usb_add_epalloc-r3.patch;patch=1 \
- ${RPSRC}/usb_pxa27x_udc-r2.patch;patch=1 \
- ${DOSRC}/kexec-arm-r3.patch;patch=1 \
- ${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
- ${RPSRC}/poodle_pm-r3.patch;patch=1 \
- ${RPSRC}/pxa27x_overlay-r4.patch;patch=1 \
- ${RPSRC}/w100_extaccel-r0.patch;patch=1 \
- ${RPSRC}/xscale_cache_workaround-r1.patch;patch=1 \
- file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1 \
- ${RPSRC}/logo_oh-r0.patch.bz2;patch=1;status=unmergable \
- ${RPSRC}/logo_oz-r2.patch.bz2;patch=1;status=unmergable \
- ${RPSRC}/pxa-linking-bug.patch;patch=1;status=unmergable \
- file://add-oz-release-string.patch;patch=1;status=unmergable \
- ${RPSRC}/mmcsd_large_cards-r0.patch;patch=1;status=hack \
- ${RPSRC}/mmcsd_no_scr_check-r0.patch;patch=1;status=hack \
- ${RPSRC}/integrator_rgb-r1.patch;patch=1;status=hack \
- ${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://squashfs3.0-2.6.15.patch;patch=1;status=external \
- file://defconfig-c7x0 \
- file://defconfig-hx2000 \
- file://defconfig-collie \
- file://defconfig-poodle \
- file://defconfig-akita \
- file://defconfig-spitz \
- file://defconfig-qemuarm \
- file://defconfig-qemux86 \
- file://defconfig-tosa "
-
-# Add this to enable pm debug code (useful with a serial lead)
-# ${RPSRC}/sharpsl_pm_debug-r0.patch;patch=1
-
-# Disabled until I find the reason this gives issues with cdc_subset
-# ${RPSRC}/usb_rndis_tweaks-r0.patch;patch=1 \
-
-# Is anything out of this still needed? Parts were commited to mainline by rmk (drivers/mfd/)
-# (Pavel Machek's git tree has updated versions of this?)
-# ${JLSRC}/zaurus-lcd-2.6.11.diff.gz;patch=1
-
-# These patches are extracted from Pavel Machek's git tree
-# (diff against vanilla kernel)
-SRC_URI_append_collie = "\
- ${DOSRC}/collie/mtd-sharp-flash-hack-r0.patch;patch=1 \
- ${DOSRC}/collie/collie-r0.patch;patch=1 \
- ${DOSRC}/collie/locomolcd-backlight-r0.patch;patch=1 \
- ${DOSRC}/collie/ucb1x00-touch-audio-r0.patch;patch=1 \
- file://collie-mcp-r1.patch;patch=1 \
- ${DOSRC}/collie/sa1100-udc-r0.patch;patch=1 \
-# ${DOSRC}/collie/collie-pm-r1.patch;patch=1 \
-"
-
-SRC_URI_append_tosa = "\
- ${CHSRC}/usb-ohci-hooks-r1.patch;patch=1 \
- ${CHSRC}/tmio-core-r4.patch;patch=1 \
- file://tmio-tc6393-r8.patch;patch=1 \
- file://tmio-nand-r7.patch;patch=1 \
- file://tmio-ohci-r6.patch;patch=1 \
- ${CHSRC}/tmio-fb-r6.patch;patch=1 \
- file://tosa-keyboard-r18.patch;patch=1 \
- ${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \
- ${DOSRC}/tosa-tmio-r6.patch;patch=1 \
- ${DOSRC}/tosa-power-r17.patch;patch=1 \
- file://tosa-tmio-lcd-r10.patch;patch=1 \
- ${DOSRC}/tosa-bluetooth-r8.patch;patch=1 \
- ${DOSRC}/wm97xx-lg7-r0.patch;patch=1 \
- file://wm9712-suspend-cold-res-r2.patch;patch=1 \
- file://sharpsl-pm-postresume-r1.patch;patch=1 \
- ${DOSRC}/wm97xx-dig-restore-r0.patch;patch=1 \
- ${DOSRC}/wm97xx-miscdevs-resume-r0.patch;patch=1 \
- file://wm9712-reset-loop-r2.patch;patch=1 \
- file://tosa-lcdnoise-r1.patch;patch=1 \
- file://wm97xx-lcdnoise-r0.patch;patch=1 "
-# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
-
-S = "${WORKDIR}/linux-2.6.19"
-
-# to get module dependencies working
-KERNEL_RELEASE = "2.6.19"
diff --git a/packages/linux/linux-rp_2.6.20.bb b/packages/linux/linux-rp_2.6.20.bb
new file mode 100644
index 0000000000..3180352381
--- /dev/null
+++ b/packages/linux/linux-rp_2.6.20.bb
@@ -0,0 +1,116 @@
+require linux-rp.inc
+
+PR = "r15"
+
+# 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
+# http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.20-rc4.tar.bz2
+# http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.18-rc6.bz2;patch=1
+# http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.18-rc2-git1.bz2;patch=1
+# http://www.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1
+# http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.14-rc2/2.6.14-rc2-mm1/2.6.14-rc2-mm1.bz2;patch=1
+
+# Patches submitted upstream are towards top of this list
+# Hacks should clearly named and at the bottom
+SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2 \
+ http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.20.6.bz2;patch=1 \
+ http://opensource.wolfsonmicro.com/~lg/asoc/asoc-v0.13.3.patch;patch=1;status=merged \
+ ${RPSRC}/oprofile_always_bt_arm-r0.patch;patch=1 \
+ ${RPSRC}/lzo_kernel-r0.patch;patch=1 \
+ ${RPSRC}/lzo_jffs2-r0.patch;patch=1 \
+ ${RPSRC}/lzo_crypto-r0a.patch;patch=1 \
+ ${RPSRC}/lzo_jffs2_lzomode-r0.patch;patch=1 \
+ ${RPSRC}/lzo_jffs2_sysfs-r0.patch;patch=1 \
+ ${RPSRC}/hx2750_base-r28.patch;patch=1 \
+ ${RPSRC}/hx2750_bl-r8.patch;patch=1 \
+ ${RPSRC}/hx2750_pcmcia-r2.patch;patch=1 \
+ ${RPSRC}/pxa_keys-r7.patch;patch=1 \
+ ${RPSRC}/tsc2101-r16.patch;patch=1 \
+ ${RPSRC}/hx2750_test1-r6.patch;patch=1 \
+ ${RPSRC}/pxa_timerfix-r0.patch;patch=1 \
+ ${RPSRC}/input_power-r6.patch;patch=1 \
+ ${RPSRC}/pxa25x_cpufreq-r2.patch;patch=1 \
+ ${RPSRC}/sharpsl_pm_fixes1-r0.patch;patch=1 \
+ ${RPSRC}/pm_changes-r1.patch;patch=1 \
+ ${RPSRC}/usb_add_epalloc-r3.patch;patch=1 \
+ ${RPSRC}/usb_pxa27x_udc-r3.patch;patch=1 \
+ ${RPSRC}/kexec-arm-r4a.patch;patch=1 \
+ ${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
+ ${RPSRC}/poodle_pm-r3.patch;patch=1 \
+ ${RPSRC}/pxa27x_overlay-r5.patch;patch=1 \
+ ${RPSRC}/w100_extaccel-r0.patch;patch=1 \
+ ${RPSRC}/w100_extmem-r0.patch;patch=1 \
+ file://hostap-monitor-mode.patch;patch=1 \
+ file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1 \
+ ${RPSRC}/logo_oh-r0.patch.bz2;patch=1;status=unmergable \
+ ${RPSRC}/logo_oz-r2.patch.bz2;patch=1;status=unmergable \
+ ${RPSRC}/pxa-linking-bug.patch;patch=1;status=unmergable \
+ ${RPSRC}/mmcsd_large_cards-r0.patch;patch=1;status=hack \
+ ${RPSRC}/mmcsd_no_scr_check-r0.patch;patch=1;status=hack \
+ ${RPSRC}/integrator_rgb-r1.patch;patch=1;status=hack \
+ ${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://squashfs3.0-2.6.15.patch;patch=1;status=external \
+ file://vesafb-tng-1.0-rc2-2.6.20-rc2.patch;patch=1;status=external \
+ file://sharpsl-rc-r1.patch;patch=1 \
+ file://defconfig-c7x0 \
+ file://defconfig-hx2000 \
+ file://defconfig-collie \
+ file://defconfig-poodle \
+ file://defconfig-akita \
+ file://defconfig-spitz \
+ file://defconfig-qemuarm \
+ file://defconfig-qemux86 \
+ file://defconfig-tosa "
+
+# Add this to enable pm debug code (useful with a serial lead)
+# ${RPSRC}/sharpsl_pm_debug-r0.patch;patch=1
+
+# Disabled until I find the reason this gives issues with cdc_subset
+# ${RPSRC}/usb_rndis_tweaks-r0.patch;patch=1 \
+
+# Is anything out of this still needed? Parts were commited to mainline by rmk (drivers/mfd/)
+# (Pavel Machek's git tree has updated versions of this?)
+# ${JLSRC}/zaurus-lcd-2.6.11.diff.gz;patch=1
+
+# These patches are extracted from Pavel Machek's git tree
+# (diff against vanilla kernel)
+
+SRC_URI_append_collie = "\
+ ${TKSRC}/mtd-sharp-flash-hack-r2.patch;patch=1 \
+ ${TKSRC}/collie-r3.patch;patch=1 \
+ ${TKSRC}/ucb1x00-touch-audio-r1.patch;patch=1 \
+ ${TKSRC}/mcp-sa11x0-r0.patch;patch=1 \
+ ${TKSRC}/sa1100-udc-r2.patch;patch=1 \
+ ${TKSRC}/mmc_spi-r4.patch;patch=1 \
+ ${TKSRC}/locomo-r0.patch;patch=1 \
+ ${TKSRC}/collie-kexec.patch;patch=1 \
+ ${TKSRC}/locomo_spi-r3.patch;patch=1 \
+"
+
+SRC_URI_append_tosa = "\
+ ${CHSRC}/usb-ohci-hooks-r1.patch;patch=1 \
+ ${CHSRC}/tmio-core-r4.patch;patch=1 \
+ file://tmio-tc6393-r8.patch;patch=1 \
+ file://tmio-nand-r7.patch;patch=1 \
+ file://tmio-ohci-r6.patch;patch=1 \
+ ${CHSRC}/tmio-fb-r6.patch;patch=1 \
+ file://tosa-keyboard-r18.patch;patch=1 \
+ ${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \
+ ${DOSRC}/tosa-tmio-r6.patch;patch=1 \
+ ${DOSRC}/tosa-power-r17.patch;patch=1 \
+ file://tosa-tmio-lcd-r10.patch;patch=1 \
+ ${DOSRC}/tosa-bluetooth-r8.patch;patch=1 \
+ ${DOSRC}/wm97xx-lg7-r0.patch;patch=1 \
+ file://wm9712-suspend-cold-res-r2.patch;patch=1 \
+ file://sharpsl-pm-postresume-r1.patch;patch=1 \
+ ${DOSRC}/wm97xx-dig-restore-r0.patch;patch=1 \
+ ${DOSRC}/wm97xx-miscdevs-resume-r0.patch;patch=1 \
+ file://wm9712-reset-loop-r2.patch;patch=1 \
+ file://tosa-lcdnoise-r1.patch;patch=1 \
+ file://wm97xx-lcdnoise-r0.patch;patch=1 "
+# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
+
+S = "${WORKDIR}/linux-2.6.20"
diff --git a/packages/linux/linux-smdk2440-2.6.19/smdk2440-touchscreen-r2.patch b/packages/linux/linux-smdk2440-2.6.19/smdk2440-touchscreen-r2.patch
deleted file mode 100644
index d785cb885f..0000000000
--- a/packages/linux/linux-smdk2440-2.6.19/smdk2440-touchscreen-r2.patch
+++ /dev/null
@@ -1,532 +0,0 @@
-Index: linux-2.6.19/drivers/input/touchscreen/s3c2410_ts.c
-===================================================================
---- /dev/null
-+++ linux-2.6.19/drivers/input/touchscreen/s3c2410_ts.c
-@@ -0,0 +1,351 @@
-+/*
-+ * 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
-+ *
-+ * Copyright (c) 2004 Arnaud Patard <arnaud.patard@rtp-net.org>
-+ * iPAQ H1940 touchscreen support
-+ *
-+ * ChangeLog
-+ *
-+ * 2004-09-05: Herbert Pötzl <herbert@13thfloor.at>
-+ * - added clock (de-)allocation code
-+ *
-+ * 2005-03-06: Arnaud Patard <arnaud.patard@rtp-net.org>
-+ * - h1940_ -> s3c2410 (this driver is now also used on the n30
-+ * machines :P)
-+ * - Debug messages are now enabled with the config option
-+ * TOUCHSCREEN_S3C2410_DEBUG
-+ * - Changed the way the value are read
-+ * - Input subsystem should now work
-+ * - Use ioremap and readl/writel
-+ *
-+ * 2005-03-23: Arnaud Patard <arnaud.patard@rtp-net.org>
-+ * - Make use of some undocumented features of the touchscreen
-+ * controller
-+ *
-+ */
-+
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/slab.h>
-+#include <linux/input.h>
-+#include <linux/init.h>
-+#include <linux/serio.h>
-+#include <linux/delay.h>
-+#include <linux/platform_device.h>
-+#include <linux/clk.h>
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+
-+#include <asm/arch/regs-adc.h>
-+#include <asm/arch/regs-gpio.h>
-+#include <asm/arch/ts.h>
-+
-+/* For ts.dev.id.version */
-+#define S3C2410TSVERSION 0x0101
-+
-+#define WAIT4INT(x) (((x)<<8) | \
-+ S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
-+ S3C2410_ADCTSC_XY_PST(3))
-+
-+#define AUTOPST (S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
-+ S3C2410_ADCTSC_AUTO_PST | S3C2410_ADCTSC_XY_PST(0))
-+
-+#define DEBUG_LVL KERN_DEBUG
-+
-+MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>");
-+MODULE_DESCRIPTION("s3c2410 touchscreen driver");
-+MODULE_LICENSE("GPL");
-+
-+/*
-+ * Definitions & global arrays.
-+ */
-+
-+
-+static char *s3c2410ts_name = "s3c2410 TouchScreen";
-+
-+/*
-+ * Per-touchscreen data.
-+ */
-+
-+struct s3c2410ts {
-+ struct input_dev *dev;
-+ long xp;
-+ long yp;
-+ int count;
-+ int shift;
-+};
-+
-+static struct s3c2410ts ts;
-+static void __iomem *base_addr;
-+
-+static inline void s3c2410_ts_connect(void)
-+{
-+ s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPG12_XMON);
-+ s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON);
-+ s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_YMON);
-+ s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON);
-+}
-+
-+static void touch_timer_fire(unsigned long data)
-+{
-+ unsigned long data0;
-+ unsigned long data1;
-+ int updown;
-+
-+ data0 = readl(base_addr+S3C2410_ADCDAT0);
-+ data1 = readl(base_addr+S3C2410_ADCDAT1);
-+
-+ updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN));
-+
-+ if (updown) {
-+ if (ts.count != 0) {
-+ ts.xp >>= ts.shift;
-+ ts.yp >>= ts.shift;
-+
-+#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
-+ {
-+ struct timeval tv;
-+ do_gettimeofday(&tv);
-+ printk(DEBUG_LVL "T: %06d, X: %03ld, Y: %03ld\n", (int)tv.tv_usec, ts.xp, ts.yp);
-+ }
-+#endif
-+
-+ input_report_abs(ts.dev, ABS_Y, ts.xp);
-+ input_report_abs(ts.dev, ABS_X, ts.yp);
-+
-+ input_report_key(ts.dev, BTN_TOUCH, 1);
-+ input_report_abs(ts.dev, ABS_PRESSURE, 1);
-+ input_sync(ts.dev);
-+ }
-+
-+ ts.count = 0;
-+
-+ writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
-+ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
-+ } else {
-+ ts.count = 0;
-+
-+ input_report_abs(ts.dev, ABS_Y, ts.xp);
-+ input_report_abs(ts.dev, ABS_X, ts.yp);
-+
-+ input_report_key(ts.dev, BTN_TOUCH, 0);
-+ input_report_abs(ts.dev, ABS_PRESSURE, 0);
-+ input_sync(ts.dev);
-+
-+ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
-+ }
-+}
-+
-+static struct timer_list touch_timer =
-+ TIMER_INITIALIZER(touch_timer_fire, 0, 0);
-+
-+static irqreturn_t stylus_updown(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ unsigned long data0;
-+ unsigned long data1;
-+ int updown;
-+
-+ data0 = readl(base_addr+S3C2410_ADCDAT0);
-+ data1 = readl(base_addr+S3C2410_ADCDAT1);
-+
-+ updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN));
-+
-+ /* TODO we should never get an interrupt with updown set while
-+ * the timer is running, but maybe we ought to verify that the
-+ * timer isn't running anyways. */
-+
-+ if (updown)
-+ touch_timer_fire(0);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+
-+static irqreturn_t stylus_action(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ unsigned long data0;
-+ unsigned long data1;
-+
-+ data0 = readl(base_addr+S3C2410_ADCDAT0);
-+ data1 = readl(base_addr+S3C2410_ADCDAT1);
-+
-+ ts.xp += data0 & S3C2410_ADCDAT0_XPDATA_MASK;
-+ ts.yp += data1 & S3C2410_ADCDAT1_YPDATA_MASK;
-+ ts.count++;
-+
-+ if (ts.count < (1<<ts.shift)) {
-+ writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
-+ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
-+ } else {
-+ mod_timer(&touch_timer, jiffies+1);
-+ writel(WAIT4INT(1), base_addr+S3C2410_ADCTSC);
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static struct clk *adc_clock;
-+
-+/*
-+ * The functions for inserting/removing us as a module.
-+ */
-+
-+static int __init s3c2410ts_probe(struct platform_device *pdev)
-+{
-+ struct s3c2410_ts_mach_info *info;
-+ struct input_dev *input_dev;
-+
-+ info = ( struct s3c2410_ts_mach_info *)pdev->dev.platform_data;
-+
-+ if (!info)
-+ {
-+ printk(KERN_ERR "Hm... too bad : no platform data for ts\n");
-+ return -EINVAL;
-+ }
-+
-+#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
-+ printk(DEBUG_LVL "Entering s3c2410ts_init\n");
-+#endif
-+
-+ adc_clock = clk_get(NULL, "adc");
-+ if (!adc_clock) {
-+ printk(KERN_ERR "failed to get adc clock source\n");
-+ return -ENOENT;
-+ }
-+ clk_enable(adc_clock);
-+
-+#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
-+ printk(DEBUG_LVL "got and enabled clock\n");
-+#endif
-+
-+ base_addr=ioremap(S3C2410_PA_ADC,0x20);
-+ if (base_addr == NULL) {
-+ printk(KERN_ERR "Failed to remap register block\n");
-+ return -ENOMEM;
-+ }
-+
-+
-+ /* Configure GPIOs */
-+ s3c2410_ts_connect();
-+
-+ if ((info->presc&0xff) > 0)
-+ writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),\
-+ base_addr+S3C2410_ADCCON);
-+ else
-+ writel(0,base_addr+S3C2410_ADCCON);
-+
-+
-+ /* Initialise registers */
-+ if ((info->delay&0xffff) > 0)
-+ writel(info->delay & 0xffff, base_addr+S3C2410_ADCDLY);
-+
-+ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
-+
-+ /* Initialise input stuff */
-+ memset(&ts, 0, sizeof(struct s3c2410ts));
-+ input_dev = input_allocate_device();
-+
-+ if (!input_dev) {
-+ printk(KERN_ERR "Unable to allocate the input device !!\n");
-+ return -ENOMEM;
-+ }
-+
-+ ts.dev = input_dev;
-+ ts.dev->evbit[0] = BIT(EV_SYN) | BIT(EV_KEY) | BIT(EV_ABS);
-+ ts.dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
-+ input_set_abs_params(ts.dev, ABS_X, 0x10, 0x3FF, 0, 0);
-+ input_set_abs_params(ts.dev, ABS_Y, 0x10, 0x3FF, 0, 0);
-+ input_set_abs_params(ts.dev, ABS_PRESSURE, 0, 1, 0, 0);
-+
-+ ts.dev->private = &ts;
-+ ts.dev->name = s3c2410ts_name;
-+ ts.dev->id.bustype = BUS_RS232;
-+ ts.dev->id.vendor = 0xDEAD;
-+ ts.dev->id.product = 0xBEEF;
-+ ts.dev->id.version = S3C2410TSVERSION;
-+
-+ ts.shift = info->oversampling_shift;
-+
-+ /* Get irqs */
-+ if (request_irq(IRQ_ADC, stylus_action, SA_SAMPLE_RANDOM,
-+ "s3c2410_action", ts.dev)) {
-+ printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_ADC !\n");
-+ iounmap(base_addr);
-+ return -EIO;
-+ }
-+ if (request_irq(IRQ_TC, stylus_updown, SA_SAMPLE_RANDOM,
-+ "s3c2410_action", ts.dev)) {
-+ printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_TC !\n");
-+ iounmap(base_addr);
-+ return -EIO;
-+ }
-+
-+ printk(KERN_INFO "%s successfully loaded\n", s3c2410ts_name);
-+
-+ /* All went ok, so register to the input system */
-+ input_register_device(ts.dev);
-+
-+ return 0;
-+}
-+
-+static int s3c2410ts_remove(struct platform_device *pdev)
-+{
-+ disable_irq(IRQ_ADC);
-+ disable_irq(IRQ_TC);
-+ free_irq(IRQ_TC,ts.dev);
-+ free_irq(IRQ_ADC,ts.dev);
-+
-+ if (adc_clock) {
-+ clk_disable(adc_clock);
-+ clk_put(adc_clock);
-+ adc_clock = NULL;
-+ }
-+
-+ input_unregister_device(ts.dev);
-+ iounmap(base_addr);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver s3c2410ts_driver = {
-+ .driver = {
-+ .name = "s3c2410-ts",
-+ .owner = THIS_MODULE,
-+ },
-+ .probe = s3c2410ts_probe,
-+ .remove = s3c2410ts_remove,
-+};
-+
-+
-+static int __init s3c2410ts_init(void)
-+{
-+ return platform_driver_register(&s3c2410ts_driver);
-+}
-+
-+static void __exit s3c2410ts_exit(void)
-+{
-+ platform_driver_unregister(&s3c2410ts_driver);
-+}
-+
-+module_init(s3c2410ts_init);
-+module_exit(s3c2410ts_exit);
-+
-+/*
-+ Local variables:
-+ compile-command: "make ARCH=arm CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux- -k -C ../../.."
-+ c-basic-offset: 8
-+ End:
-+*/
-Index: linux-2.6.19/arch/arm/mach-s3c2410/devs.c
-===================================================================
---- linux-2.6.19.orig/arch/arm/mach-s3c2410/devs.c
-+++ linux-2.6.19/arch/arm/mach-s3c2410/devs.c
-@@ -28,6 +28,7 @@
- #include <asm/irq.h>
-
- #include <asm/arch/regs-serial.h>
-+#include <asm/arch/ts.h>
-
- #include "devs.h"
- #include "cpu.h"
-@@ -204,6 +205,23 @@ struct platform_device s3c_device_nand =
-
- EXPORT_SYMBOL(s3c_device_nand);
-
-+/* Touchscreen */
-+struct platform_device s3c_device_ts = {
-+ .name = "s3c2410-ts",
-+ .id = -1,
-+};
-+
-+EXPORT_SYMBOL(s3c_device_ts);
-+
-+static struct s3c2410_ts_mach_info s3c2410ts_info;
-+
-+void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info)
-+{
-+ memcpy(&s3c2410ts_info,hard_s3c2410ts_info,sizeof(struct s3c2410_ts_mach_info));
-+ s3c_device_ts.dev.platform_data = &s3c2410ts_info;
-+}
-+EXPORT_SYMBOL(set_s3c2410ts_info);
-+
- /* USB Device (Gadget)*/
-
- static struct resource s3c_usbgadget_resource[] = {
-Index: linux-2.6.19/arch/arm/mach-s3c2410/devs.h
-===================================================================
---- linux-2.6.19.orig/arch/arm/mach-s3c2410/devs.h
-+++ linux-2.6.19/arch/arm/mach-s3c2410/devs.h
-@@ -41,6 +41,8 @@ extern struct platform_device s3c_device
- extern struct platform_device s3c_device_timer3;
-
- extern struct platform_device s3c_device_usbgadget;
-+extern struct platform_device s3c_device_ts;
-+
-
- /* s3c2440 specific devices */
-
-Index: linux-2.6.19/arch/arm/mach-s3c2410/mach-smdk2440.c
-===================================================================
---- linux-2.6.19.orig/arch/arm/mach-s3c2410/mach-smdk2440.c
-+++ linux-2.6.19/arch/arm/mach-s3c2410/mach-smdk2440.c
-@@ -38,6 +38,7 @@
-
- #include <asm/arch/idle.h>
- #include <asm/arch/fb.h>
-+#include <asm/arch/ts.h>
-
- #include "s3c2410.h"
- #include "s3c2440.h"
-@@ -177,6 +178,7 @@ static struct platform_device *smdk2440_
- &s3c_device_wdt,
- &s3c_device_i2c,
- &s3c_device_iis,
-+ &s3c_device_ts,
- };
-
- static struct s3c24xx_board smdk2440_board __initdata = {
-@@ -184,6 +186,13 @@ static struct s3c24xx_board smdk2440_boa
- .devices_count = ARRAY_SIZE(smdk2440_devices)
- };
-
-+static struct s3c2410_ts_mach_info smdk2440_ts_cfg __initdata = {
-+ .delay = 10000,
-+ .presc = 49,
-+ .oversampling_shift = 2,
-+};
-+
-+
- static void __init smdk2440_map_io(void)
- {
- s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
-@@ -195,6 +204,7 @@ static void __init smdk2440_map_io(void)
- static void __init smdk2440_machine_init(void)
- {
- s3c24xx_fb_set_platdata(&smdk2440_lcd_cfg);
-+ set_s3c2410ts_info(&smdk2440_ts_cfg);
-
- smdk_machine_init();
- }
-Index: linux-2.6.19/drivers/input/touchscreen/Kconfig
-===================================================================
---- linux-2.6.19.orig/drivers/input/touchscreen/Kconfig
-+++ linux-2.6.19/drivers/input/touchscreen/Kconfig
-@@ -49,6 +49,25 @@ config TOUCHSCREEN_CORGI
- To compile this driver as a module, choose M here: the
- module will be called corgi_ts.
-
-+config TOUCHSCREEN_S3C2410
-+ tristate "Samsung S3C2410 touchscreen input driver"
-+ depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN
-+ select SERIO
-+ help
-+ Say Y here if you have the s3c2410 touchscreen.
-+
-+ If unsure, say N.
-+
-+ To compile this driver as a module, choose M here: the
-+ module will be called s3c2410_ts.
-+
-+config TOUCHSCREEN_S3C2410_DEBUG
-+ boolean "Samsung S3C2410 touchscreen debug messages"
-+ depends on TOUCHSCREEN_S3C2410
-+ help
-+ Select this if you want debug messages
-+
-+
- config TOUCHSCREEN_GUNZE
- tristate "Gunze AHL-51S touchscreen"
- select SERIO
-Index: linux-2.6.19/drivers/input/touchscreen/Makefile
-===================================================================
---- linux-2.6.19.orig/drivers/input/touchscreen/Makefile
-+++ linux-2.6.19/drivers/input/touchscreen/Makefile
-@@ -15,3 +15,4 @@ obj-$(CONFIG_TOUCHSCREEN_HP600) += hp680
- obj-$(CONFIG_TOUCHSCREEN_PENMOUNT) += penmount.o
- obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
- obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
-+obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
-Index: linux-2.6.19/include/asm-arm/arch-s3c2410/ts.h
-===================================================================
---- /dev/null
-+++ linux-2.6.19/include/asm-arm/arch-s3c2410/ts.h
-@@ -0,0 +1,28 @@
-+/* linux/include/asm/arch-s3c2410/ts.h
-+ *
-+ * Copyright (c) 2005 Arnaud Patard <arnaud.patard@rtp-net.org>
-+ *
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ *
-+ * Changelog:
-+ * 24-Mar-2005 RTP Created file
-+ * 03-Aug-2005 RTP Renamed to ts.h
-+ */
-+
-+#ifndef __ASM_ARM_TS_H
-+#define __ASM_ARM_TS_H
-+
-+struct s3c2410_ts_mach_info {
-+ int delay;
-+ int presc;
-+ int oversampling_shift;
-+};
-+
-+void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info);
-+
-+#endif /* __ASM_ARM_TS_H */
-+
-Index: linux-2.6.19/include/asm-arm/arch-s3c2410/regs-adc.h
-===================================================================
---- linux-2.6.19.orig/include/asm-arm/arch-s3c2410/regs-adc.h
-+++ linux-2.6.19/include/asm-arm/arch-s3c2410/regs-adc.h
-@@ -41,7 +41,7 @@
- #define S3C2410_ADCTSC_XP_SEN (1<<4)
- #define S3C2410_ADCTSC_PULL_UP_DISABLE (1<<3)
- #define S3C2410_ADCTSC_AUTO_PST (1<<2)
--#define S3C2410_ADCTSC_XY_PST (0x3<<0)
-+#define S3C2410_ADCTSC_XY_PST(x) (((x)&0x3)<<0)
-
- /* ADCDAT0 Bits */
- #define S3C2410_ADCDAT0_UPDOWN (1<<15)
diff --git a/packages/linux/linux-smdk2440-2.6.20+git/.mtn2git_empty b/packages/linux/linux-smdk2440-2.6.20+git/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-smdk2440-2.6.20+git/.mtn2git_empty
diff --git a/packages/linux/linux-smdk2440-2.6.20+git/0001-Enable-cs8900A-network-device-for-smdk2440-board.patch b/packages/linux/linux-smdk2440-2.6.20+git/0001-Enable-cs8900A-network-device-for-smdk2440-board.patch
new file mode 100644
index 0000000000..bf8a0081dd
--- /dev/null
+++ b/packages/linux/linux-smdk2440-2.6.20+git/0001-Enable-cs8900A-network-device-for-smdk2440-board.patch
@@ -0,0 +1,92 @@
+From 44c48cf15a3072185ce3541a127a89bfbb2b346f Mon Sep 17 00:00:00 2001
+From: Graeme Gregory <gg@gg-desktop.wolfsonmicro.main>
+Date: Fri, 6 Apr 2007 15:47:13 +0100
+Subject: [PATCH] Enable cs8900A network device for smdk2440 board.
+
+Signed-off-by: Graeme Gregory <gg@opensource.wolfsonmicro.com>
+---
+ arch/arm/mach-s3c2440/mach-smdk2440.c | 7 ++++++-
+ drivers/net/cs89x0.c | 20 ++++++++++++++++++--
+ 2 files changed, 24 insertions(+), 3 deletions(-)
+
+diff --git a/arch/arm/mach-s3c2440/mach-smdk2440.c b/arch/arm/mach-s3c2440/mach-smdk2440.c
+index c17eb5b..fb36665 100644
+--- a/arch/arm/mach-s3c2440/mach-smdk2440.c
++++ b/arch/arm/mach-s3c2440/mach-smdk2440.c
+@@ -69,7 +69,12 @@ static struct map_desc smdk2440_iodesc[] __initdata = {
+ .pfn = __phys_to_pfn(S3C2410_CS2 + (1<<24)),
+ .length = SZ_4M,
+ .type = MT_DEVICE,
+- }
++ }, {
++ .virtual = (u32)S3C2410_ADDR(0x04000000) ,
++ .pfn = __phys_to_pfn(S3C2410_CS3 + (1<<24)),
++ .length = SZ_16M,
++ .type = MT_DEVICE,
++ }
+ };
+
+ #define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK
+diff --git a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c
+index 4612f71..534653e 100644
+--- a/drivers/net/cs89x0.c
++++ b/drivers/net/cs89x0.c
+@@ -187,6 +187,10 @@ static unsigned int cs8900_irq_map[] = {IRQ_IXDP2351_CS8900, 0, 0, 0};
+ #include <asm/irq.h>
+ static unsigned int netcard_portlist[] __initdata = {IXDP2X01_CS8900_VIRT_BASE, 0};
+ static unsigned int cs8900_irq_map[] = {IRQ_IXDP2X01_CS8900, 0, 0, 0};
++#elif defined(CONFIG_ARCH_S3C2440)
++static unsigned int netcard_portlist[] __initdata = {S3C2410_ADDR(0x04000000) + 0x300 , 0};
++static unsigned int cs8900_irq_map[] = {IRQ_EINT9, 0, 0, 0};
++static unsigned char cs8900_mac[] = {0xDE,0xAD,0xBE,0xEF,0x01,0x02};
+ #elif defined(CONFIG_ARCH_PNX010X)
+ #include <asm/irq.h>
+ #include <asm/arch/gpio.h>
+@@ -719,6 +723,14 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular)
+
+ printk( "[Cirrus EEPROM] ");
+ }
++#if defined(CONFIG_ARCH_S3C2440)
++ else
++ {
++ for (i=0; i < ETH_ALEN; i++) {
++ dev->dev_addr[i] = cs8900_mac[i];
++ }
++ }
++#endif
+
+ printk("\n");
+
+@@ -802,7 +814,7 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular)
+ } else {
+ i = lp->isa_config & INT_NO_MASK;
+ if (lp->chip_type == CS8900) {
+-#if defined(CONFIG_MACH_IXDP2351) || defined(CONFIG_ARCH_IXDP2X01) || defined(CONFIG_ARCH_PNX010X)
++#if defined(CONFIG_MACH_IXDP2351) || defined(CONFIG_ARCH_IXDP2X01) || defined(CONFIG_ARCH_PNX010X) || defined(CONFIG_ARCH_S3C2410)
+ i = cs8900_irq_map[0];
+ #else
+ /* Translate the IRQ using the IRQ mapping table. */
+@@ -1309,7 +1321,7 @@ net_open(struct net_device *dev)
+ else
+ #endif
+ {
+-#if !defined(CONFIG_MACH_IXDP2351) && !defined(CONFIG_ARCH_IXDP2X01) && !defined(CONFIG_ARCH_PNX010X)
++#if !defined(CONFIG_MACH_IXDP2351) && !defined(CONFIG_ARCH_IXDP2X01) && !defined(CONFIG_ARCH_PNX010X) && !defined(CONFIG_ARCH_S3C2410)
+ if (((1 << dev->irq) & lp->irq_map) == 0) {
+ printk(KERN_ERR "%s: IRQ %d is not in our map of allowable IRQs, which is %x\n",
+ dev->name, dev->irq, lp->irq_map);
+@@ -1324,7 +1336,11 @@ net_open(struct net_device *dev)
+ writereg(dev, PP_BusCTL, ENABLE_IRQ | MEMORY_ON);
+ #endif
+ write_irq(dev, lp->chip_type, dev->irq);
++#if !defined(CONFIG_ARCH_S3C2440)
+ ret = request_irq(dev->irq, &net_interrupt, 0, dev->name, dev);
++#else
++ ret = request_irq(dev->irq, &net_interrupt, IRQF_DISABLED | IRQF_TRIGGER_HIGH, dev->name, dev);
++#endif
+ if (ret) {
+ if (net_debug)
+ printk(KERN_DEBUG "cs89x0: request_irq(%d) failed\n", dev->irq);
+--
+1.5.1
+
diff --git a/packages/linux/linux-smdk2440/defconfig-smdk2440 b/packages/linux/linux-smdk2440/defconfig-smdk2440
index d4d943b288..8805af7413 100644
--- a/packages/linux/linux-smdk2440/defconfig-smdk2440
+++ b/packages/linux/linux-smdk2440/defconfig-smdk2440
@@ -1,16 +1,24 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.18
-# Thu Oct 5 11:05:25 2006
+# Linux kernel version: 2.6.21-rc6
+# Fri Apr 6 15:53:13 2007
#
CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+# CONFIG_GENERIC_TIME is not set
CONFIG_MMU=y
+CONFIG_NO_IOPORT=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_ZONE_DMA=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -28,17 +36,23 @@ CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
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 is not set
+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=y
+CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -61,7 +75,8 @@ CONFIG_BASE_SMALL=0
# Loadable module support
#
CONFIG_MODULES=y
-# CONFIG_MODULE_UNLOAD is not set
+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
@@ -69,7 +84,10 @@ 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
@@ -101,11 +119,14 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IXP4XX is not set
# 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
@@ -114,49 +135,73 @@ CONFIG_ARCH_S3C2410=y
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_OMAP is not set
+CONFIG_PLAT_S3C24XX=y
+CONFIG_CPU_S3C244X=y
+CONFIG_PM_SIMTEC=y
+# CONFIG_S3C2410_BOOT_WATCHDOG is not set
+# CONFIG_S3C2410_BOOT_ERROR_RESET is not set
+# CONFIG_S3C2410_PM_DEBUG is not set
+# CONFIG_S3C2410_PM_CHECK is not set
+CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
+CONFIG_S3C2410_DMA=y
+CONFIG_S3C2410_DMA_DEBUG=y
+CONFIG_MACH_SMDK=y
#
-# S3C24XX Implementations
+# S3C2400 Machines
#
-CONFIG_MACH_ANUBIS=y
-CONFIG_MACH_OSIRIS=y
-CONFIG_ARCH_BAST=y
-CONFIG_BAST_PC104_IRQ=y
+CONFIG_CPU_S3C2410=y
+CONFIG_CPU_S3C2410_DMA=y
+CONFIG_S3C2410_PM=y
+CONFIG_S3C2410_GPIO=y
+CONFIG_S3C2410_CLOCK=y
+
+#
+# S3C2410 Machines
+#
+CONFIG_ARCH_SMDK2410=y
CONFIG_ARCH_H1940=y
+CONFIG_PM_H1940=y
CONFIG_MACH_N30=y
-CONFIG_MACH_SMDK=y
-CONFIG_ARCH_SMDK2410=y
-CONFIG_ARCH_S3C2440=y
-CONFIG_SMDK2440_CPU2440=y
-CONFIG_SMDK2440_CPU2442=y
-CONFIG_MACH_S3C2413=y
-CONFIG_MACH_SMDK2413=y
-CONFIG_MACH_VR1000=y
-CONFIG_MACH_RX3715=y
+CONFIG_ARCH_BAST=y
CONFIG_MACH_OTOM=y
-CONFIG_MACH_NEXCODER_2440=y
-CONFIG_S3C2410_CLOCK=y
-CONFIG_CPU_S3C2410=y
+# CONFIG_MACH_AML_M5900 is not set
+CONFIG_BAST_PC104_IRQ=y
+CONFIG_MACH_VR1000=y
+# CONFIG_MACH_QT2410 is not set
CONFIG_CPU_S3C2412=y
-CONFIG_CPU_S3C244X=y
+CONFIG_S3C2412_DMA=y
+CONFIG_S3C2412_PM=y
+
+#
+# S3C2412 Machines
+#
+CONFIG_MACH_SMDK2413=y
+CONFIG_MACH_S3C2413=y
+# CONFIG_MACH_VSTMS is not set
CONFIG_CPU_S3C2440=y
+CONFIG_S3C2440_DMA=y
+
+#
+# S3C2440 Machines
+#
+CONFIG_MACH_ANUBIS=y
+CONFIG_MACH_OSIRIS=y
+CONFIG_MACH_RX3715=y
+CONFIG_ARCH_S3C2440=y
+CONFIG_MACH_NEXCODER_2440=y
+CONFIG_SMDK2440_CPU2440=y
CONFIG_CPU_S3C2442=y
#
-# S3C2410 Boot
+# S3C2442 Machines
#
-# CONFIG_S3C2410_BOOT_WATCHDOG is not set
-# CONFIG_S3C2410_BOOT_ERROR_RESET is not set
+CONFIG_SMDK2440_CPU2442=y
#
-# S3C2410 Setup
+# S3C2443 Machines
#
-CONFIG_S3C2410_DMA=y
-# CONFIG_S3C2410_DMA_DEBUG is not set
-# CONFIG_S3C2410_PM_DEBUG is not set
-# CONFIG_S3C2410_PM_CHECK is not set
-CONFIG_PM_SIMTEC=y
-CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
+# CONFIG_MACH_SMDK2443 is not set
#
# Processor Type
@@ -172,6 +217,8 @@ CONFIG_CPU_CACHE_V4WT=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
@@ -181,6 +228,7 @@ CONFIG_CPU_TLB_V4WBI=y
# 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
@@ -198,7 +246,8 @@ CONFIG_ISA=y
# CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set
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
@@ -209,6 +258,7 @@ 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
#
@@ -218,6 +268,7 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="root=/dev/nfs ip=auto rw init=/bin/bash console=ttySAC0"
# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
#
# Floating point emulation
@@ -237,7 +288,6 @@ CONFIG_FPE_NWFPE=y
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=y
# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
#
# Power management options
@@ -245,7 +295,8 @@ CONFIG_BINFMT_AOUT=y
CONFIG_PM=y
CONFIG_PM_LEGACY=y
# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+# CONFIG_APM_EMULATION is not set
#
# Networking
@@ -260,6 +311,8 @@ CONFIG_NET=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
@@ -280,10 +333,13 @@ CONFIG_IP_PNP_BOOTP=y
# 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_BIC=y
+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
@@ -341,6 +397,7 @@ 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_SYS_HYPERVISOR is not set
#
@@ -366,11 +423,13 @@ CONFIG_MTD_CMDLINE_PARTS=y
# 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
@@ -412,6 +471,8 @@ CONFIG_MTD_BAST_MAXSIZE=4
#
# Self-contained MTD device drivers
#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
@@ -456,6 +517,7 @@ CONFIG_PARPORT_1284=y
# Plug and Play support
#
# CONFIG_PNP is not set
+# CONFIG_PNPACPI is not set
#
# Block devices
@@ -469,7 +531,6 @@ CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD is not set
CONFIG_ATA_OVER_ETH=m
@@ -498,7 +559,6 @@ CONFIG_IDE_GENERIC=y
CONFIG_BLK_DEV_IDE_BAST=y
# 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
#
@@ -506,6 +566,12 @@ CONFIG_BLK_DEV_IDE_BAST=y
#
# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
#
# Multi-device support (RAID and LVM)
@@ -552,7 +618,7 @@ CONFIG_MII=y
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_SMC91X is not set
-CONFIG_DM9000=y
+# CONFIG_DM9000 is not set
# CONFIG_NET_VENDOR_RACAL is not set
# CONFIG_AT1700 is not set
# CONFIG_DEPCA is not set
@@ -603,6 +669,7 @@ CONFIG_CS89x0=y
# Input device support
#
CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
#
# Userland interfaces
@@ -627,6 +694,8 @@ CONFIG_KEYBOARD_ATKBD=y
# 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_GPIO is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_SERIAL is not set
@@ -636,12 +705,15 @@ CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_S3C2410=y
-# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
+# CONFIG_TOUCHSCREEN_ADS7846 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_INPUT_MISC is not set
#
@@ -668,7 +740,7 @@ CONFIG_SERIAL_NONSTANDARD=y
# CONFIG_DIGIEPCA is not set
# CONFIG_MOXA_INTELLIO is not set
# CONFIG_MOXA_SMARTIO is not set
-# CONFIG_ISI is not set
+# CONFIG_MOXA_SMARTIO_NEW is not set
# CONFIG_SYNCLINKMP is not set
# CONFIG_N_HDLC is not set
# CONFIG_RISCOM8 is not set
@@ -686,13 +758,14 @@ CONFIG_SERIAL_8250_NR_UARTS=8
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_RSA is not set
# CONFIG_SERIAL_8250_FOURPORT is not set
# CONFIG_SERIAL_8250_ACCENT is not set
# CONFIG_SERIAL_8250_BOCA is not set
+# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set
# CONFIG_SERIAL_8250_HUB6 is not set
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_RSA is not set
#
# Non-8250 serial port support
@@ -739,20 +812,14 @@ CONFIG_S3C2410_WATCHDOG=y
# CONFIG_USBPCWATCHDOG is not set
CONFIG_HW_RANDOM=y
# CONFIG_NVRAM is not set
-CONFIG_S3C2410_RTC=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
# CONFIG_RAW_DRIVER is not set
#
# TPM devices
#
# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
#
# I2C support
@@ -797,12 +864,27 @@ CONFIG_SENSORS_EEPROM=m
#
# SPI support
#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+# CONFIG_SPI_BUTTERFLY is not set
+# CONFIG_SPI_S3C24XX is not set
+CONFIG_SPI_S3C24XX_GPIO=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
#
# Dallas's 1-wire bus
#
+# CONFIG_W1 is not set
#
# Hardware Monitoring support
@@ -813,6 +895,7 @@ CONFIG_HWMON_VID=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
@@ -825,6 +908,7 @@ CONFIG_HWMON_VID=m
# 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=m
# CONFIG_SENSORS_LM77 is not set
CONFIG_SENSORS_LM78=m
@@ -836,12 +920,15 @@ CONFIG_SENSORS_LM85=m
# 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_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47M192 is not set
# CONFIG_SENSORS_SMSC47B397 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
@@ -852,6 +939,11 @@ CONFIG_SENSORS_LM85=m
#
#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
# LED devices
#
# CONFIG_NEW_LEDS is not set
@@ -868,7 +960,6 @@ CONFIG_SENSORS_LM85=m
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
#
# Digital Video Broadcasting Devices
@@ -879,15 +970,22 @@ CONFIG_VIDEO_V4L2=y
#
# Graphics support
#
-CONFIG_FIRMWARE_EDID=y
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=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
+
+#
+# Frambuffer hardware drivers
+#
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_S3C2410=y
# CONFIG_FB_S3C2410_DEBUG is not set
@@ -912,12 +1010,90 @@ CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
# Sound
#
-# CONFIG_SOUND is not set
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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=y
+CONFIG_SND_DEBUG=y
+CONFIG_SND_DEBUG_DETECT=y
+# CONFIG_SND_PCM_XRUN_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_MTS64 is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+# CONFIG_SND_PORTMAN2X4 is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=m
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+
+#
+# SoC Audio for the Samsung S3C24XX
+#
+CONFIG_SND_S3C24XX_SOC=m
+CONFIG_SND_S3C24XX_SOC_I2S=m
+CONFIG_SND_S3C24XX_SOC_SMDK2440=m
+# CONFIG_SND_S3C24XX_SOC_SMDK2440_WM8956 is not set
+
+#
+# SoC Audio for the Freescale i.MX
+#
+CONFIG_SND_SOC_UDA1380=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
#
# USB support
@@ -932,7 +1108,6 @@ CONFIG_USB=y
# 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
@@ -942,7 +1117,8 @@ CONFIG_USB_DEVICEFS=y
#
# CONFIG_USB_ISP116X_HCD is not set
CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# CONFIG_USB_SL811_HCD is not set
@@ -959,14 +1135,12 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
#
# may also be needed; see USB_STORAGE Help for more information
#
-# CONFIG_USB_STORAGE 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
@@ -982,6 +1156,7 @@ CONFIG_USB_HIDINPUT=y
# CONFIG_USB_ATI_REMOTE2 is not set
# CONFIG_USB_KEYSPAN_REMOTE is not set
# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
#
# USB Imaging devices
@@ -995,6 +1170,7 @@ CONFIG_USB_HIDINPUT=y
# 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_MON=y
@@ -1013,18 +1189,22 @@ CONFIG_USB_MON=y
#
# 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_PHIDGETKIT is not set
-# CONFIG_USB_PHIDGETSERVO 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
#
@@ -1057,6 +1237,7 @@ 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
@@ -1064,6 +1245,7 @@ CONFIG_FS_MBCACHE=y
# 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=y
@@ -1095,8 +1277,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# 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
@@ -1111,9 +1295,6 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-CONFIG_JFFS_FS=y
-CONFIG_JFFS_FS_VERBOSE=0
-# CONFIG_JFFS_PROC_FS is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
@@ -1134,12 +1315,14 @@ CONFIG_JFFS2_RTIME=y
# Network File Systems
#
CONFIG_NFS_FS=y
-# CONFIG_NFS_V3 is not set
+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_RPCSEC_GSS_KRB5 is not set
@@ -1217,6 +1400,11 @@ CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_UTF8 is not set
#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
# Profiling support
#
# CONFIG_PROFILING is not set
@@ -1225,31 +1413,34 @@ CONFIG_NLS_DEFAULT="iso8859-1"
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
# 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_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=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=y
-# CONFIG_DEBUG_RWSEMS is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
-# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
CONFIG_DEBUG_USER=y
-# CONFIG_DEBUG_WAITQ is not set
# CONFIG_DEBUG_ERRORS is not set
CONFIG_DEBUG_LL=y
# CONFIG_DEBUG_ICEDCC is not set
@@ -1268,12 +1459,9 @@ CONFIG_DEBUG_S3C2410_UART=0
# CONFIG_CRYPTO is not set
#
-# Hardware crypto devices
-#
-
-#
# Library routines
#
+CONFIG_BITREVERSE=y
# CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set
CONFIG_CRC32=y
@@ -1281,3 +1469,4 @@ CONFIG_CRC32=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
diff --git a/packages/linux/linux-smdk2440/smdk2440-touchscreen-r3.patch b/packages/linux/linux-smdk2440/smdk2440-touchscreen-r3.patch
deleted file mode 100644
index d03fd94017..0000000000
--- a/packages/linux/linux-smdk2440/smdk2440-touchscreen-r3.patch
+++ /dev/null
@@ -1,529 +0,0 @@
-Index: linux-2.6.19/arch/arm/mach-s3c2410/devs.c
-===================================================================
---- linux-2.6.19.orig/arch/arm/mach-s3c2410/devs.c
-+++ linux-2.6.19/arch/arm/mach-s3c2410/devs.c
-@@ -26,6 +26,7 @@
- #include <asm/hardware.h>
- #include <asm/io.h>
- #include <asm/irq.h>
-+#include <asm/arch/ts.h>
-
- #include <asm/arch/regs-serial.h>
-
-@@ -204,6 +205,23 @@ struct platform_device s3c_device_nand =
-
- EXPORT_SYMBOL(s3c_device_nand);
-
-+/* Touchscreen */
-+struct platform_device s3c_device_ts = {
-+ .name = "s3c2410-ts",
-+ .id = -1,
-+};
-+
-+EXPORT_SYMBOL(s3c_device_ts);
-+
-+static struct s3c2410_ts_mach_info s3c2410ts_info;
-+
-+void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info)
-+{
-+ memcpy(&s3c2410ts_info,hard_s3c2410ts_info,sizeof(struct s3c2410_ts_mach_info));
-+ s3c_device_ts.dev.platform_data = &s3c2410ts_info;
-+}
-+EXPORT_SYMBOL(set_s3c2410ts_info);
-+
- /* USB Device (Gadget)*/
-
- static struct resource s3c_usbgadget_resource[] = {
-Index: linux-2.6.19/arch/arm/mach-s3c2410/devs.h
-===================================================================
---- linux-2.6.19.orig/arch/arm/mach-s3c2410/devs.h
-+++ linux-2.6.19/arch/arm/mach-s3c2410/devs.h
-@@ -41,6 +41,7 @@ extern struct platform_device s3c_device
- extern struct platform_device s3c_device_timer3;
-
- extern struct platform_device s3c_device_usbgadget;
-+extern struct platform_device s3c_device_ts;
-
- /* s3c2440 specific devices */
-
-Index: linux-2.6.19/drivers/input/touchscreen/Kconfig
-===================================================================
---- linux-2.6.19.orig/drivers/input/touchscreen/Kconfig
-+++ linux-2.6.19/drivers/input/touchscreen/Kconfig
-@@ -49,6 +49,24 @@ config TOUCHSCREEN_CORGI
- To compile this driver as a module, choose M here: the
- module will be called corgi_ts.
-
-+config TOUCHSCREEN_S3C2410
-+ tristate "Samsung S3C2410 touchscreen input driver"
-+ depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN
-+ select SERIO
-+ help
-+ Say Y here if you have the s3c2410 touchscreen.
-+
-+ If unsure, say N.
-+
-+ To compile this driver as a module, choose M here: the
-+ module will be called s3c2410_ts.
-+
-+config TOUCHSCREEN_S3C2410_DEBUG
-+ boolean "Samsung S3C2410 touchscreen debug messages"
-+ depends on TOUCHSCREEN_S3C2410
-+ help
-+ Select this if you want debug messages
-+
- config TOUCHSCREEN_GUNZE
- tristate "Gunze AHL-51S touchscreen"
- select SERIO
-Index: linux-2.6.19/drivers/input/touchscreen/Makefile
-===================================================================
---- linux-2.6.19.orig/drivers/input/touchscreen/Makefile
-+++ linux-2.6.19/drivers/input/touchscreen/Makefile
-@@ -15,3 +15,5 @@ obj-$(CONFIG_TOUCHSCREEN_HP600) += hp680
- obj-$(CONFIG_TOUCHSCREEN_PENMOUNT) += penmount.o
- obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
- obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
-+obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
-+
-Index: linux-2.6.19/drivers/input/touchscreen/s3c2410_ts.c
-===================================================================
---- /dev/null
-+++ linux-2.6.19/drivers/input/touchscreen/s3c2410_ts.c
-@@ -0,0 +1,350 @@
-+/*
-+ * 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
-+ *
-+ * Copyright (c) 2004 Arnaud Patard <arnaud.patard@rtp-net.org>
-+ * iPAQ H1940 touchscreen support
-+ *
-+ * ChangeLog
-+ *
-+ * 2004-09-05: Herbert Pötzl <herbert@13thfloor.at>
-+ * - added clock (de-)allocation code
-+ *
-+ * 2005-03-06: Arnaud Patard <arnaud.patard@rtp-net.org>
-+ * - h1940_ -> s3c2410 (this driver is now also used on the n30
-+ * machines :P)
-+ * - Debug messages are now enabled with the config option
-+ * TOUCHSCREEN_S3C2410_DEBUG
-+ * - Changed the way the value are read
-+ * - Input subsystem should now work
-+ * - Use ioremap and readl/writel
-+ *
-+ * 2005-03-23: Arnaud Patard <arnaud.patard@rtp-net.org>
-+ * - Make use of some undocumented features of the touchscreen
-+ * controller
-+ *
-+ */
-+
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/slab.h>
-+#include <linux/input.h>
-+#include <linux/init.h>
-+#include <linux/serio.h>
-+#include <linux/delay.h>
-+#include <linux/platform_device.h>
-+#include <linux/clk.h>
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+
-+#include <asm/arch/regs-adc.h>
-+#include <asm/arch/regs-gpio.h>
-+#include <asm/arch/ts.h>
-+
-+/* For ts.dev.id.version */
-+#define S3C2410TSVERSION 0x0101
-+
-+#define WAIT4INT(x) (((x)<<8) | \
-+ S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
-+ S3C2410_ADCTSC_XY_PST(3))
-+
-+#define AUTOPST (S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
-+ S3C2410_ADCTSC_AUTO_PST | S3C2410_ADCTSC_XY_PST(0))
-+
-+#define DEBUG_LVL KERN_DEBUG
-+
-+MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>");
-+MODULE_DESCRIPTION("s3c2410 touchscreen driver");
-+MODULE_LICENSE("GPL");
-+
-+/*
-+ * Definitions & global arrays.
-+ */
-+
-+
-+static char *s3c2410ts_name = "s3c2410 TouchScreen";
-+
-+/*
-+ * Per-touchscreen data.
-+ */
-+
-+struct s3c2410ts {
-+ struct input_dev *dev;
-+ long xp;
-+ long yp;
-+ int count;
-+ int shift;
-+};
-+
-+static struct s3c2410ts ts;
-+static void __iomem *base_addr;
-+
-+static inline void s3c2410_ts_connect(void)
-+{
-+ s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPG12_XMON);
-+ s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON);
-+ s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_YMON);
-+ s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON);
-+}
-+
-+static void touch_timer_fire(unsigned long data)
-+{
-+ unsigned long data0;
-+ unsigned long data1;
-+ int updown;
-+
-+ data0 = readl(base_addr+S3C2410_ADCDAT0);
-+ data1 = readl(base_addr+S3C2410_ADCDAT1);
-+
-+ updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN));
-+
-+ if (updown) {
-+ if (ts.count != 0) {
-+ ts.xp >>= ts.shift;
-+ ts.yp >>= ts.shift;
-+
-+#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
-+ {
-+ struct timeval tv;
-+ do_gettimeofday(&tv);
-+ printk(DEBUG_LVL "T: %06d, X: %03ld, Y: %03ld\n", (int)tv.tv_usec, ts.xp, ts.yp);
-+ }
-+#endif
-+
-+ input_report_abs(ts.dev, ABS_X, ts.xp);
-+ input_report_abs(ts.dev, ABS_Y, ts.yp);
-+
-+ input_report_key(ts.dev, BTN_TOUCH, 1);
-+ input_report_abs(ts.dev, ABS_PRESSURE, 1);
-+ input_sync(ts.dev);
-+ }
-+
-+ ts.xp = 0;
-+ ts.yp = 0;
-+ ts.count = 0;
-+
-+ writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
-+ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
-+ } else {
-+ ts.count = 0;
-+
-+ input_report_key(ts.dev, BTN_TOUCH, 0);
-+ input_report_abs(ts.dev, ABS_PRESSURE, 0);
-+ input_sync(ts.dev);
-+
-+ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
-+ }
-+}
-+
-+static struct timer_list touch_timer =
-+ TIMER_INITIALIZER(touch_timer_fire, 0, 0);
-+
-+static irqreturn_t stylus_updown(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ unsigned long data0;
-+ unsigned long data1;
-+ int updown;
-+
-+ data0 = readl(base_addr+S3C2410_ADCDAT0);
-+ data1 = readl(base_addr+S3C2410_ADCDAT1);
-+
-+ updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN));
-+
-+ /* TODO we should never get an interrupt with updown set while
-+ * the timer is running, but maybe we ought to verify that the
-+ * timer isn't running anyways. */
-+
-+ if (updown)
-+ touch_timer_fire(0);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+
-+static irqreturn_t stylus_action(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ unsigned long data0;
-+ unsigned long data1;
-+
-+ data0 = readl(base_addr+S3C2410_ADCDAT0);
-+ data1 = readl(base_addr+S3C2410_ADCDAT1);
-+
-+ ts.xp += data0 & S3C2410_ADCDAT0_XPDATA_MASK;
-+ ts.yp += data1 & S3C2410_ADCDAT1_YPDATA_MASK;
-+ ts.count++;
-+
-+ if (ts.count < (1<<ts.shift)) {
-+ writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
-+ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
-+ } else {
-+ mod_timer(&touch_timer, jiffies+1);
-+ writel(WAIT4INT(1), base_addr+S3C2410_ADCTSC);
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static struct clk *adc_clock;
-+
-+/*
-+ * The functions for inserting/removing us as a module.
-+ */
-+
-+static int __init s3c2410ts_probe(struct platform_device *pdev)
-+{
-+ struct s3c2410_ts_mach_info *info;
-+ struct input_dev *input_dev;
-+
-+ info = ( struct s3c2410_ts_mach_info *)pdev->dev.platform_data;
-+
-+ if (!info)
-+ {
-+ printk(KERN_ERR "Hm... too bad : no platform data for ts\n");
-+ return -EINVAL;
-+ }
-+
-+#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
-+ printk(DEBUG_LVL "Entering s3c2410ts_init\n");
-+#endif
-+
-+ adc_clock = clk_get(NULL, "adc");
-+ if (!adc_clock) {
-+ printk(KERN_ERR "failed to get adc clock source\n");
-+ return -ENOENT;
-+ }
-+ clk_enable(adc_clock);
-+
-+#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
-+ printk(DEBUG_LVL "got and enabled clock\n");
-+#endif
-+
-+ base_addr=ioremap(S3C2410_PA_ADC,0x20);
-+ if (base_addr == NULL) {
-+ printk(KERN_ERR "Failed to remap register block\n");
-+ return -ENOMEM;
-+ }
-+
-+
-+ /* Configure GPIOs */
-+ s3c2410_ts_connect();
-+
-+ if ((info->presc&0xff) > 0)
-+ writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),\
-+ base_addr+S3C2410_ADCCON);
-+ else
-+ writel(0,base_addr+S3C2410_ADCCON);
-+
-+
-+ /* Initialise registers */
-+ if ((info->delay&0xffff) > 0)
-+ writel(info->delay & 0xffff, base_addr+S3C2410_ADCDLY);
-+
-+ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
-+
-+ /* Initialise input stuff */
-+ memset(&ts, 0, sizeof(struct s3c2410ts));
-+ input_dev = input_allocate_device();
-+
-+ if (!input_dev) {
-+ printk(KERN_ERR "Unable to allocate the input device !!\n");
-+ return -ENOMEM;
-+ }
-+
-+ ts.dev = input_dev;
-+ ts.dev->evbit[0] = BIT(EV_SYN) | BIT(EV_KEY) | BIT(EV_ABS);
-+ ts.dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
-+ input_set_abs_params(ts.dev, ABS_X, 0, 0x3FF, 0, 0);
-+ input_set_abs_params(ts.dev, ABS_Y, 0, 0x3FF, 0, 0);
-+ input_set_abs_params(ts.dev, ABS_PRESSURE, 0, 1, 0, 0);
-+
-+ ts.dev->private = &ts;
-+ ts.dev->name = s3c2410ts_name;
-+ ts.dev->id.bustype = BUS_RS232;
-+ ts.dev->id.vendor = 0xDEAD;
-+ ts.dev->id.product = 0xBEEF;
-+ ts.dev->id.version = S3C2410TSVERSION;
-+
-+ ts.shift = info->oversampling_shift;
-+
-+ /* Get irqs */
-+ if (request_irq(IRQ_ADC, stylus_action, SA_SAMPLE_RANDOM,
-+ "s3c2410_action", ts.dev)) {
-+ printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_ADC !\n");
-+ iounmap(base_addr);
-+ return -EIO;
-+ }
-+ if (request_irq(IRQ_TC, stylus_updown, SA_SAMPLE_RANDOM,
-+ "s3c2410_action", ts.dev)) {
-+ printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_TC !\n");
-+ iounmap(base_addr);
-+ return -EIO;
-+ }
-+
-+ printk(KERN_INFO "%s successfully loaded\n", s3c2410ts_name);
-+
-+ /* All went ok, so register to the input system */
-+ input_register_device(ts.dev);
-+
-+ return 0;
-+}
-+
-+static int s3c2410ts_remove(struct platform_device *pdev)
-+{
-+ disable_irq(IRQ_ADC);
-+ disable_irq(IRQ_TC);
-+ free_irq(IRQ_TC,ts.dev);
-+ free_irq(IRQ_ADC,ts.dev);
-+
-+ if (adc_clock) {
-+ clk_disable(adc_clock);
-+ clk_put(adc_clock);
-+ adc_clock = NULL;
-+ }
-+
-+ input_unregister_device(ts.dev);
-+ iounmap(base_addr);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver s3c2410ts_driver = {
-+ .driver = {
-+ .name = "s3c2410-ts",
-+ .owner = THIS_MODULE,
-+ },
-+ .probe = s3c2410ts_probe,
-+ .remove = s3c2410ts_remove,
-+};
-+
-+
-+static int __init s3c2410ts_init(void)
-+{
-+ return platform_driver_register(&s3c2410ts_driver);
-+}
-+
-+static void __exit s3c2410ts_exit(void)
-+{
-+ platform_driver_unregister(&s3c2410ts_driver);
-+}
-+
-+module_init(s3c2410ts_init);
-+module_exit(s3c2410ts_exit);
-+
-+/*
-+ Local variables:
-+ compile-command: "make ARCH=arm CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux- -k -C ../../.."
-+ c-basic-offset: 8
-+ End:
-+*/
-Index: linux-2.6.19/include/asm-arm/arch-s3c2410/regs-adc.h
-===================================================================
---- linux-2.6.19.orig/include/asm-arm/arch-s3c2410/regs-adc.h
-+++ linux-2.6.19/include/asm-arm/arch-s3c2410/regs-adc.h
-@@ -41,7 +41,7 @@
- #define S3C2410_ADCTSC_XP_SEN (1<<4)
- #define S3C2410_ADCTSC_PULL_UP_DISABLE (1<<3)
- #define S3C2410_ADCTSC_AUTO_PST (1<<2)
--#define S3C2410_ADCTSC_XY_PST (0x3<<0)
-+#define S3C2410_ADCTSC_XY_PST(x) (((x)&0x3)<<0)
-
- /* ADCDAT0 Bits */
- #define S3C2410_ADCDAT0_UPDOWN (1<<15)
-Index: linux-2.6.19/include/asm-arm/arch-s3c2410/ts.h
-===================================================================
---- /dev/null
-+++ linux-2.6.19/include/asm-arm/arch-s3c2410/ts.h
-@@ -0,0 +1,28 @@
-+/* linux/include/asm/arch-s3c2410/ts.h
-+ *
-+ * Copyright (c) 2005 Arnaud Patard <arnaud.patard@rtp-net.org>
-+ *
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ *
-+ * Changelog:
-+ * 24-Mar-2005 RTP Created file
-+ * 03-Aug-2005 RTP Renamed to ts.h
-+ */
-+
-+#ifndef __ASM_ARM_TS_H
-+#define __ASM_ARM_TS_H
-+
-+struct s3c2410_ts_mach_info {
-+ int delay;
-+ int presc;
-+ int oversampling_shift;
-+};
-+
-+void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info);
-+
-+#endif /* __ASM_ARM_TS_H */
-+
-Index: linux-2.6.19/arch/arm/mach-s3c2410/mach-smdk2440.c
-===================================================================
---- linux-2.6.19.orig/arch/arm/mach-s3c2410/mach-smdk2440.c
-+++ linux-2.6.19/arch/arm/mach-s3c2410/mach-smdk2440.c
-@@ -35,6 +35,7 @@
- #include <asm/arch/regs-serial.h>
- #include <asm/arch/regs-gpio.h>
- #include <asm/arch/regs-lcd.h>
-+#include <asm/arch/ts.h>
-
- #include <asm/arch/idle.h>
- #include <asm/arch/fb.h>
-@@ -177,6 +178,7 @@ static struct platform_device *smdk2440_
- &s3c_device_wdt,
- &s3c_device_i2c,
- &s3c_device_iis,
-+ &s3c_device_ts,
- };
-
- static struct s3c24xx_board smdk2440_board __initdata = {
-@@ -184,6 +186,12 @@ static struct s3c24xx_board smdk2440_boa
- .devices_count = ARRAY_SIZE(smdk2440_devices)
- };
-
-+static struct s3c2410_ts_mach_info qt2410_ts_cfg = {
-+ .delay = 10000,
-+ .presc = 49,
-+ .oversampling_shift = 2,
-+};
-+
- static void __init smdk2440_map_io(void)
- {
- s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
-@@ -195,6 +203,7 @@ static void __init smdk2440_map_io(void)
- static void __init smdk2440_machine_init(void)
- {
- s3c24xx_fb_set_platdata(&smdk2440_lcd_cfg);
-+ set_s3c2410ts_info(&qt2410_ts_cfg);
-
- smdk_machine_init();
- }
diff --git a/packages/linux/linux-smdk2440_2.6.19.bb b/packages/linux/linux-smdk2440_2.6.19.bb
deleted file mode 100644
index 039e412919..0000000000
--- a/packages/linux/linux-smdk2440_2.6.19.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-DESCRIPTION = "Linux Kernel for smdk2440 compatible machines"
-SECTION = "kernel"
-LICENSE = "GPL"
-PR = "r1"
-
-GGSRC = "http://www.xora.org.uk/oe/patches/"
-
-SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
- ${GGSRC}smdk2440-cs89x0-r1.patch;patch=1 \
- file://smdk2440-touchscreen-r3.patch;patch=1 \
- http://opensource.wolfsonmicro.com/~lg/asoc/asoc-v0.12.6.patch;patch=1 \
- file://defconfig-smdk2440"
-
-S = "${WORKDIR}/linux-${PV}"
-
-inherit kernel
-
-COMPATIBLE_HOST = "arm.*-linux"
-COMPATIBLE_MACHINE = "smdk2440"
-KERNEL_IMAGETYPE = "zImage"
-
-do_configure() {
- install ${WORKDIR}/defconfig-smdk2440 ${S}/.config
- #oe_runmake s3c2410_defconfig
- oe_runmake oldconfig
-}
-
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
- rm -f ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin
- ln -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin
- tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
-}
-
-do_deploy[dirs] = "${S}"
-
-addtask deploy before do_package after do_install
-
diff --git a/packages/linux/linux-smdk2440_2.6.20+git.bb b/packages/linux/linux-smdk2440_2.6.20+git.bb
new file mode 100644
index 0000000000..ea9cbfb91a
--- /dev/null
+++ b/packages/linux/linux-smdk2440_2.6.20+git.bb
@@ -0,0 +1,38 @@
+DESCRIPTION = "Linux Kernel for smdk2440 compatible machines"
+SECTION = "kernel"
+LICENSE = "GPL"
+PR = "r1"
+
+GGSRC = "http://www.xora.org.uk/oe/patches/"
+
+SRC_URI = "git://opensource.wolfsonmicro.com/linux-2.6-asoc-ggdev;protocol=git;tag=asoc-merge-0002 \
+ file://0001-Enable-cs8900A-network-device-for-smdk2440-board.patch;patch=1 \
+ file://defconfig-smdk2440"
+
+S = "${WORKDIR}/git"
+
+inherit kernel
+
+COMPATIBLE_HOST = "arm.*-linux"
+COMPATIBLE_MACHINE = "smdk2440"
+KERNEL_IMAGETYPE = "zImage"
+
+do_configure() {
+ install ${WORKDIR}/defconfig-smdk2440 ${S}/.config
+ #oe_runmake s3c2410_defconfig
+ oe_runmake oldconfig
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
+ rm -f ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin
+ ln -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_package after do_install
+
+KERNEL_RELEASE = "2.6.21"
diff --git a/packages/linux/linux-smdk2443/.mtn2git_empty b/packages/linux/linux-smdk2443/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-smdk2443/.mtn2git_empty
diff --git a/packages/linux/linux-smdk2443/0020-Add-ASoC-S3C24xx-platform-support.patch b/packages/linux/linux-smdk2443/0020-Add-ASoC-S3C24xx-platform-support.patch
new file mode 100644
index 0000000000..3c79c17422
--- /dev/null
+++ b/packages/linux/linux-smdk2443/0020-Add-ASoC-S3C24xx-platform-support.patch
@@ -0,0 +1,1077 @@
+From a958d8bfdf4fd043471012560a7e9a089d81390e Mon Sep 17 00:00:00 2001
+From: Liam Girdwood <liam@localhost.localdomain>
+Date: Sun, 4 Mar 2007 16:56:28 +0000
+Subject: [PATCH] Add ASoC S3C24xx platform support.
+
+Signed-off-by: Ben Dooks <ben@simtec.co.uk>
+Signed-off-by: Graeme Gregory <gg@opensource.wolfsonmicro.com>
+Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
+---
+ sound/soc/Kconfig | 1 +
+ sound/soc/Makefile | 2 +-
+ sound/soc/s3c24xx/Kconfig | 16 ++
+ sound/soc/s3c24xx/Makefile | 7 +
+ sound/soc/s3c24xx/s3c24xx-i2s.c | 439 +++++++++++++++++++++++++++++++++++++
+ sound/soc/s3c24xx/s3c24xx-i2s.h | 35 +++
+ sound/soc/s3c24xx/s3c24xx-pcm.c | 462 +++++++++++++++++++++++++++++++++++++++
+ sound/soc/s3c24xx/s3c24xx-pcm.h | 32 +++
+ 8 files changed, 993 insertions(+), 1 deletions(-)
+ create mode 100644 sound/soc/s3c24xx/Kconfig
+ create mode 100644 sound/soc/s3c24xx/Makefile
+ create mode 100644 sound/soc/s3c24xx/s3c24xx-i2s.c
+ create mode 100644 sound/soc/s3c24xx/s3c24xx-i2s.h
+ create mode 100644 sound/soc/s3c24xx/s3c24xx-pcm.c
+ create mode 100644 sound/soc/s3c24xx/s3c24xx-pcm.h
+
+diff --git a/sound/soc/Kconfig b/sound/soc/Kconfig
+index ec821a5..74a5f5f 100644
+--- a/sound/soc/Kconfig
++++ b/sound/soc/Kconfig
+@@ -24,6 +24,7 @@ menu "SoC Platforms"
+ depends on SND_SOC
+ source "sound/soc/at91/Kconfig"
+ source "sound/soc/pxa/Kconfig"
++source "sound/soc/s3c24xx/Kconfig"
+ endmenu
+
+ # Supported codecs
+diff --git a/sound/soc/Makefile b/sound/soc/Makefile
+index 98e6f49..0ae2e49 100644
+--- a/sound/soc/Makefile
++++ b/sound/soc/Makefile
+@@ -1,4 +1,4 @@
+ snd-soc-core-objs := soc-core.o soc-dapm.o
+
+ obj-$(CONFIG_SND_SOC) += snd-soc-core.o
+-obj-$(CONFIG_SND_SOC) += codecs/ at91/ pxa/
++obj-$(CONFIG_SND_SOC) += codecs/ at91/ pxa/ s3c24xx/
+diff --git a/sound/soc/s3c24xx/Kconfig b/sound/soc/s3c24xx/Kconfig
+new file mode 100644
+index 0000000..433da9f
+--- /dev/null
++++ b/sound/soc/s3c24xx/Kconfig
+@@ -0,0 +1,16 @@
++menu "SoC Audio for the Samsung S3C24XX"
++
++config SND_S3C24XX_SOC
++ tristate "SoC Audio for the Samsung S3C24XX chips"
++ depends on ARCH_S3C2410 && SND
++ select SND_PCM
++ help
++ Say Y or M if you want to add support for codecs attached to
++ the S3C24XX AC97, I2S or SSP interface. You will also need
++ to select the audio interfaces to support below.
++
++config SND_S3C24XX_SOC_I2S
++ tristate
++
++endmenu
++
+diff --git a/sound/soc/s3c24xx/Makefile b/sound/soc/s3c24xx/Makefile
+new file mode 100644
+index 0000000..56200d7
+--- /dev/null
++++ b/sound/soc/s3c24xx/Makefile
+@@ -0,0 +1,7 @@
++# S3c24XX Platform Support
++snd-soc-s3c24xx-objs := s3c24xx-pcm.o
++snd-soc-s3c24xx-i2s-objs := s3c24xx-i2s.o
++
++obj-$(CONFIG_SND_S3C24XX_SOC) += snd-soc-s3c24xx.o
++obj-$(CONFIG_SND_S3C24XX_SOC_I2S) += snd-soc-s3c24xx-i2s.o
++
+diff --git a/sound/soc/s3c24xx/s3c24xx-i2s.c b/sound/soc/s3c24xx/s3c24xx-i2s.c
+new file mode 100644
+index 0000000..df655a5
+--- /dev/null
++++ b/sound/soc/s3c24xx/s3c24xx-i2s.c
+@@ -0,0 +1,439 @@
++/*
++ * s3c24xx-i2s.c -- ALSA Soc Audio Layer
++ *
++ * (c) 2006 Wolfson Microelectronics PLC.
++ * Graeme Gregory graeme.gregory@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * (c) 2004-2005 Simtec Electronics
++ * http://armlinux.simtec.co.uk/
++ * Ben Dooks <ben@simtec.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License as published by the
++ * Free Software Foundation; either version 2 of the License, or (at your
++ * option) any later version.
++ *
++ *
++ * Revision history
++ * 11th Dec 2006 Merged with Simtec driver
++ * 10th Nov 2006 Initial version.
++ */
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/device.h>
++#include <linux/delay.h>
++#include <linux/clk.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/initval.h>
++#include <sound/soc.h>
++
++#include <asm/hardware.h>
++#include <asm/io.h>
++#include <asm/arch/regs-iis.h>
++#include <asm/arch/regs-gpio.h>
++#include <asm/arch/regs-clock.h>
++#include <asm/arch/audio.h>
++#include <asm/dma.h>
++#include <asm/arch/dma.h>
++
++#include "s3c24xx-pcm.h"
++#include "s3c24xx-i2s.h"
++
++#define S3C24XX_I2S_DEBUG 0
++#if S3C24XX_I2S_DEBUG
++#define DBG(x...) printk(KERN_DEBUG x)
++#else
++#define DBG(x...)
++#endif
++
++static struct s3c2410_dma_client s3c24xx_dma_client_out = {
++ .name = "I2S PCM Stereo out"
++};
++
++static struct s3c2410_dma_client s3c24xx_dma_client_in = {
++ .name = "I2S PCM Stereo in"
++};
++
++static struct s3c24xx_pcm_dma_params s3c24xx_i2s_pcm_stereo_out = {
++ .client = &s3c24xx_dma_client_out,
++ .channel = DMACH_I2S_OUT,
++ .dma_addr = S3C2410_PA_IIS + S3C2410_IISFIFO
++};
++
++static struct s3c24xx_pcm_dma_params s3c24xx_i2s_pcm_stereo_in = {
++ .client = &s3c24xx_dma_client_in,
++ .channel = DMACH_I2S_IN,
++ .dma_addr = S3C2410_PA_IIS + S3C2410_IISFIFO
++};
++
++struct s3c24xx_i2s_info {
++ void __iomem *regs;
++ struct clk *iis_clk;
++};
++static struct s3c24xx_i2s_info s3c24xx_i2s;
++
++static void s3c24xx_snd_txctrl(int on)
++{
++ u32 iisfcon;
++ u32 iiscon;
++ u32 iismod;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ iisfcon = readl(s3c24xx_i2s.regs + S3C2410_IISFCON);
++ iiscon = readl(s3c24xx_i2s.regs + S3C2410_IISCON);
++ iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD);
++
++ DBG("r: IISCON: %lx IISMOD: %lx IISFCON: %lx\n", iiscon, iismod, iisfcon);
++
++ if (on) {
++ iisfcon |= S3C2410_IISFCON_TXDMA | S3C2410_IISFCON_TXENABLE;
++ iiscon |= S3C2410_IISCON_TXDMAEN | S3C2410_IISCON_IISEN;
++ iiscon &= ~S3C2410_IISCON_TXIDLE;
++ iismod |= S3C2410_IISMOD_TXMODE;
++
++ writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD);
++ writel(iisfcon, s3c24xx_i2s.regs + S3C2410_IISFCON);
++ writel(iiscon, s3c24xx_i2s.regs + S3C2410_IISCON);
++ } else {
++ /* note, we have to disable the FIFOs otherwise bad things
++ * seem to happen when the DMA stops. According to the
++ * Samsung supplied kernel, this should allow the DMA
++ * engine and FIFOs to reset. If this isn't allowed, the
++ * DMA engine will simply freeze randomly.
++ */
++
++ iisfcon &= ~S3C2410_IISFCON_TXENABLE;
++ iisfcon &= ~S3C2410_IISFCON_TXDMA;
++ iiscon |= S3C2410_IISCON_TXIDLE;
++ iiscon &= ~S3C2410_IISCON_TXDMAEN;
++ iismod &= ~S3C2410_IISMOD_TXMODE;
++
++ writel(iiscon, s3c24xx_i2s.regs + S3C2410_IISCON);
++ writel(iisfcon, s3c24xx_i2s.regs + S3C2410_IISFCON);
++ writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD);
++ }
++
++ DBG("w: IISCON: %lx IISMOD: %lx IISFCON: %lx\n", iiscon, iismod, iisfcon);
++}
++
++static void s3c24xx_snd_rxctrl(int on)
++{
++ u32 iisfcon;
++ u32 iiscon;
++ u32 iismod;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ iisfcon = readl(s3c24xx_i2s.regs + S3C2410_IISFCON);
++ iiscon = readl(s3c24xx_i2s.regs + S3C2410_IISCON);
++ iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD);
++
++ DBG("r: IISCON: %lx IISMOD: %lx IISFCON: %lx\n", iiscon, iismod, iisfcon);
++
++ if (on) {
++ iisfcon |= S3C2410_IISFCON_RXDMA | S3C2410_IISFCON_RXENABLE;
++ iiscon |= S3C2410_IISCON_RXDMAEN | S3C2410_IISCON_IISEN;
++ iiscon &= ~S3C2410_IISCON_RXIDLE;
++ iismod |= S3C2410_IISMOD_RXMODE;
++
++ writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD);
++ writel(iisfcon, s3c24xx_i2s.regs + S3C2410_IISFCON);
++ writel(iiscon, s3c24xx_i2s.regs + S3C2410_IISCON);
++ } else {
++ /* note, we have to disable the FIFOs otherwise bad things
++ * seem to happen when the DMA stops. According to the
++ * Samsung supplied kernel, this should allow the DMA
++ * engine and FIFOs to reset. If this isn't allowed, the
++ * DMA engine will simply freeze randomly.
++ */
++
++ iisfcon &= ~S3C2410_IISFCON_RXENABLE;
++ iisfcon &= ~S3C2410_IISFCON_RXDMA;
++ iiscon |= S3C2410_IISCON_RXIDLE;
++ iiscon &= ~S3C2410_IISCON_RXDMAEN;
++ iismod &= ~S3C2410_IISMOD_RXMODE;
++
++ writel(iisfcon, s3c24xx_i2s.regs + S3C2410_IISFCON);
++ writel(iiscon, s3c24xx_i2s.regs + S3C2410_IISCON);
++ writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD);
++ }
++
++ DBG("w: IISCON: %lx IISMOD: %lx IISFCON: %lx\n", iiscon, iismod, iisfcon);
++}
++
++/*
++ * Wait for the LR signal to allow synchronisation to the L/R clock
++ * from the codec. May only be needed for slave mode.
++ */
++static int s3c24xx_snd_lrsync(void)
++{
++ u32 iiscon;
++ unsigned long timeout = jiffies + msecs_to_jiffies(5);
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ while (1) {
++ iiscon = readl(s3c24xx_i2s.regs + S3C2410_IISCON);
++ if (iiscon & S3C2410_IISCON_LRINDEX)
++ break;
++
++ if (timeout < jiffies)
++ return -ETIMEDOUT;
++ }
++
++ return 0;
++}
++
++/*
++ * Check whether CPU is the master or slave
++ */
++static inline int s3c24xx_snd_is_clkmaster(void)
++{
++ DBG("Entered %s\n", __FUNCTION__);
++
++ return (readl(s3c24xx_i2s.regs + S3C2410_IISMOD) & S3C2410_IISMOD_SLAVE) ? 0:1;
++}
++
++/*
++ * Set S3C24xx I2S DAI format
++ */
++static int s3c24xx_i2s_set_fmt(struct snd_soc_cpu_dai *cpu_dai,
++ unsigned int fmt)
++{
++ u32 iismod;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD);
++ DBG("hw_params r: IISMOD: %lx \n", iismod);
++
++ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ iismod |= S3C2410_IISMOD_SLAVE;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_LEFT_J:
++ iismod |= S3C2410_IISMOD_MSB;
++ break;
++ case SND_SOC_DAIFMT_I2S:
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD);
++ DBG("hw_params w: IISMOD: %lx \n", iismod);
++ return 0;
++}
++
++static int s3c24xx_i2s_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ u32 iismod;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ rtd->dai->cpu_dai->dma_data = &s3c24xx_i2s_pcm_stereo_out;
++ else
++ rtd->dai->cpu_dai->dma_data = &s3c24xx_i2s_pcm_stereo_in;
++
++ /* Working copies of register */
++ iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD);
++ DBG("hw_params r: IISMOD: %lx\n", iismod);
++
++ switch (params_format(params)) {
++ case SNDRV_PCM_FORMAT_S8:
++ break;
++ case SNDRV_PCM_FORMAT_S16_LE:
++ iismod |= S3C2410_IISMOD_16BIT;
++ break;
++ }
++
++ writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD);
++ DBG("hw_params w: IISMOD: %lx\n", iismod);
++ return 0;
++}
++
++static int s3c24xx_i2s_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ int ret = 0;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ case SNDRV_PCM_TRIGGER_RESUME:
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ if (!s3c24xx_snd_is_clkmaster()) {
++ ret = s3c24xx_snd_lrsync();
++ if (ret)
++ goto exit_err;
++ }
++
++ if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
++ s3c24xx_snd_rxctrl(1);
++ else
++ s3c24xx_snd_txctrl(1);
++ break;
++ case SNDRV_PCM_TRIGGER_STOP:
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
++ s3c24xx_snd_rxctrl(0);
++ else
++ s3c24xx_snd_txctrl(0);
++ break;
++ default:
++ ret = -EINVAL;
++ break;
++ }
++
++exit_err:
++ return ret;
++}
++
++/*
++ * Set S3C24xx Clock source
++ */
++static int s3c24xx_i2s_set_sysclk(struct snd_soc_cpu_dai *cpu_dai,
++ int clk_id, unsigned int freq, int dir)
++{
++ u32 iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD);
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ iismod &= ~S3C2440_IISMOD_MPLL;
++
++ switch (clk_id) {
++ case S3C24XX_CLKSRC_PCLK:
++ break;
++ case S3C24XX_CLKSRC_MPLL:
++ iismod |= S3C2440_IISMOD_MPLL;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD);
++ return 0;
++}
++
++/*
++ * Set S3C24xx Clock dividers
++ */
++static int s3c24xx_i2s_set_clkdiv(struct snd_soc_cpu_dai *cpu_dai,
++ int div_id, int div)
++{
++ u32 reg;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ switch (div_id) {
++ case S3C24XX_DIV_MCLK:
++ reg = readl(s3c24xx_i2s.regs + S3C2410_IISMOD) & ~S3C2410_IISMOD_FS_MASK;
++ writel(reg | div, s3c24xx_i2s.regs + S3C2410_IISMOD);
++ break;
++ case S3C24XX_DIV_BCLK:
++ reg = readl(s3c24xx_i2s.regs + S3C2410_IISMOD) & ~(S3C2410_IISMOD_384FS);
++ writel(reg | div, s3c24xx_i2s.regs + S3C2410_IISMOD);
++ break;
++ case S3C24XX_DIV_PRESCALER:
++ writel(div, s3c24xx_i2s.regs + S3C2410_IISPSR);
++ reg = readl(s3c24xx_i2s.regs + S3C2410_IISCON);
++ writel(reg | S3C2410_IISCON_PSCEN, s3c24xx_i2s.regs + S3C2410_IISCON);
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ return 0;
++}
++
++/*
++ * To avoid duplicating clock code, allow machine driver to
++ * get the clockrate from here.
++ */
++u32 s3c24xx_i2s_get_clockrate(void)
++{
++ return clk_get_rate(s3c24xx_i2s.iis_clk);
++}
++EXPORT_SYMBOL_GPL(s3c24xx_i2s_get_clockrate);
++
++static int s3c24xx_i2s_probe(struct platform_device *pdev)
++{
++ DBG("Entered %s\n", __FUNCTION__);
++
++ s3c24xx_i2s.regs = ioremap(S3C2410_PA_IIS, 0x100);
++ if (s3c24xx_i2s.regs == NULL)
++ return -ENXIO;
++
++ s3c24xx_i2s.iis_clk=clk_get(&pdev->dev, "iis");
++ if (s3c24xx_i2s.iis_clk == NULL) {
++ DBG("failed to get iis_clock\n");
++ return -ENODEV;
++ }
++ clk_enable(s3c24xx_i2s.iis_clk);
++
++ /* Configure the I2S pins in correct mode */
++ s3c2410_gpio_cfgpin(S3C2410_GPE0, S3C2410_GPE0_I2SLRCK);
++ s3c2410_gpio_cfgpin(S3C2410_GPE1, S3C2410_GPE1_I2SSCLK);
++ s3c2410_gpio_cfgpin(S3C2410_GPE2, S3C2410_GPE2_CDCLK);
++ s3c2410_gpio_cfgpin(S3C2410_GPE3, S3C2410_GPE3_I2SSDI);
++ s3c2410_gpio_cfgpin(S3C2410_GPE4, S3C2410_GPE4_I2SSDO);
++
++ writel(S3C2410_IISCON_IISEN, s3c24xx_i2s.regs + S3C2410_IISCON);
++
++ s3c24xx_snd_txctrl(0);
++ s3c24xx_snd_rxctrl(0);
++
++ return 0;
++}
++
++#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 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
++
++struct snd_soc_cpu_dai s3c24xx_i2s_dai = {
++ .name = "s3c24xx-i2s",
++ .id = 0,
++ .type = SND_SOC_DAI_I2S,
++ .probe = s3c24xx_i2s_probe,
++ .playback = {
++ .channels_min = 2,
++ .channels_max = 2,
++ .rates = S3C24XX_I2S_RATES,
++ .formats = SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE,},
++ .capture = {
++ .channels_min = 2,
++ .channels_max = 2,
++ .rates = S3C24XX_I2S_RATES,
++ .formats = SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE,},
++ .ops = {
++ .trigger = s3c24xx_i2s_trigger,
++ .hw_params = s3c24xx_i2s_hw_params,},
++ .dai_ops = {
++ .set_fmt = s3c24xx_i2s_set_fmt,
++ .set_clkdiv = s3c24xx_i2s_set_clkdiv,
++ .set_sysclk = s3c24xx_i2s_set_sysclk,
++ },
++};
++EXPORT_SYMBOL_GPL(s3c24xx_i2s_dai);
++
++/* Module information */
++MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>");
++MODULE_DESCRIPTION("s3c24xx I2S SoC Interface");
++MODULE_LICENSE("GPL");
+diff --git a/sound/soc/s3c24xx/s3c24xx-i2s.h b/sound/soc/s3c24xx/s3c24xx-i2s.h
+new file mode 100644
+index 0000000..f9ca04e
+--- /dev/null
++++ b/sound/soc/s3c24xx/s3c24xx-i2s.h
+@@ -0,0 +1,35 @@
++/*
++ * s3c24xx-i2s.c -- ALSA Soc Audio Layer
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Graeme Gregory
++ * graeme.gregory@wolfsonmicro.com or 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
++ * 10th Nov 2006 Initial version.
++ */
++
++#ifndef S3C24XXI2S_H_
++#define S3C24XXI2S_H_
++
++/* clock sources */
++#define S3C24XX_CLKSRC_PCLK 0
++#define S3C24XX_CLKSRC_MPLL 1
++
++/* Clock dividers */
++#define S3C24XX_DIV_MCLK 0
++#define S3C24XX_DIV_BCLK 1
++#define S3C24XX_DIV_PRESCALER 2
++
++/* prescaler */
++#define S3C24XX_PRESCALE(a,b) \
++ (((a - 1) << S3C2410_IISPSR_INTSHIFT) | ((b - 1) << S3C2410_IISPSR_EXTSHFIT))
++
++u32 s3c24xx_i2s_get_clockrate(void);
++
++#endif /*S3C24XXI2S_H_*/
+diff --git a/sound/soc/s3c24xx/s3c24xx-pcm.c b/sound/soc/s3c24xx/s3c24xx-pcm.c
+new file mode 100644
+index 0000000..867f1b3
+--- /dev/null
++++ b/sound/soc/s3c24xx/s3c24xx-pcm.c
+@@ -0,0 +1,462 @@
++/*
++ * s3c24xx-pcm.c -- ALSA Soc Audio Layer
++ *
++ * (c) 2006 Wolfson Microelectronics PLC.
++ * Graeme Gregory graeme.gregory@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * (c) 2004-2005 Simtec Electronics
++ * http://armlinux.simtec.co.uk/
++ * Ben Dooks <ben@simtec.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License as published by the
++ * Free Software Foundation; either version 2 of the License, or (at your
++ * option) any later version.
++ *
++ * Revision history
++ * 11th Dec 2006 Merged with Simtec driver
++ * 10th Nov 2006 Initial version.
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/slab.h>
++#include <linux/dma-mapping.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++
++#include <asm/dma.h>
++#include <asm/io.h>
++#include <asm/hardware.h>
++#include <asm/arch/dma.h>
++#include <asm/arch/audio.h>
++
++#include "s3c24xx-pcm.h"
++
++#define S3C24XX_PCM_DEBUG 0
++#if S3C24XX_PCM_DEBUG
++#define DBG(x...) printk(KERN_DEBUG x)
++#else
++#define DBG(x...)
++#endif
++
++static const struct snd_pcm_hardware s3c24xx_pcm_hardware = {
++ .info = SNDRV_PCM_INFO_INTERLEAVED |
++ SNDRV_PCM_INFO_BLOCK_TRANSFER |
++ SNDRV_PCM_INFO_MMAP |
++ SNDRV_PCM_INFO_MMAP_VALID,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE |
++ SNDRV_PCM_FMTBIT_U16_LE |
++ SNDRV_PCM_FMTBIT_U8 |
++ SNDRV_PCM_FMTBIT_S8,
++ .channels_min = 2,
++ .channels_max = 2,
++ .buffer_bytes_max = 128*1024,
++ .period_bytes_min = PAGE_SIZE,
++ .period_bytes_max = PAGE_SIZE*2,
++ .periods_min = 2,
++ .periods_max = 128,
++ .fifo_size = 32,
++};
++
++struct s3c24xx_runtime_data {
++ spinlock_t lock;
++ int state;
++ unsigned int dma_loaded;
++ unsigned int dma_limit;
++ unsigned int dma_period;
++ dma_addr_t dma_start;
++ dma_addr_t dma_pos;
++ dma_addr_t dma_end;
++ struct s3c24xx_pcm_dma_params *params;
++};
++
++/* s3c24xx_pcm_enqueue
++ *
++ * place a dma buffer onto the queue for the dma system
++ * to handle.
++*/
++static void s3c24xx_pcm_enqueue(struct snd_pcm_substream *substream)
++{
++ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
++ dma_addr_t pos = prtd->dma_pos;
++ int ret;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ while (prtd->dma_loaded < prtd->dma_limit) {
++ unsigned long len = prtd->dma_period;
++
++ DBG("dma_loaded: %d\n",prtd->dma_loaded);
++
++ if ((pos + len) > prtd->dma_end) {
++ len = prtd->dma_end - pos;
++ DBG(KERN_DEBUG "%s: corrected dma len %ld\n",
++ __FUNCTION__, len);
++ }
++
++ ret = s3c2410_dma_enqueue(prtd->params->channel, substream, pos, len);
++
++ if (ret == 0) {
++ prtd->dma_loaded++;
++ pos += prtd->dma_period;
++ if (pos >= prtd->dma_end)
++ pos = prtd->dma_start;
++ } else
++ break;
++ }
++
++ prtd->dma_pos = pos;
++}
++
++static void s3c24xx_audio_buffdone(struct s3c2410_dma_chan *channel,
++ void *dev_id, int size,
++ enum s3c2410_dma_buffresult result)
++{
++ struct snd_pcm_substream *substream = dev_id;
++ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ if (result == S3C2410_RES_ABORT || result == S3C2410_RES_ERR)
++ return;
++
++ if (substream)
++ snd_pcm_period_elapsed(substream);
++
++ spin_lock(&prtd->lock);
++ if (prtd->state & ST_RUNNING) {
++ prtd->dma_loaded--;
++ s3c24xx_pcm_enqueue(substream);
++ }
++
++ spin_unlock(&prtd->lock);
++}
++
++static int s3c24xx_pcm_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct s3c24xx_runtime_data *prtd = runtime->private_data;
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct s3c24xx_pcm_dma_params *dma = rtd->dai->cpu_dai->dma_data;
++ unsigned long totbytes = params_buffer_bytes(params);
++ int ret=0;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ /* return if this is a bufferless transfer e.g.
++ * codec <--> BT codec or GSM modem -- lg FIXME */
++ if (!dma)
++ return 0;
++
++ /* prepare DMA */
++ prtd->params = dma;
++
++ DBG("params %p, client %p, channel %d\n", prtd->params,
++ prtd->params->client, prtd->params->channel);
++
++ ret = s3c2410_dma_request(prtd->params->channel,
++ prtd->params->client, NULL);
++
++ if (ret) {
++ DBG(KERN_ERR "failed to get dma channel\n");
++ return ret;
++ }
++
++ /* 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,
++ 2, S3C2410_DCON_SYNC_PCLK | S3C2410_DCON_HANDSHAKE);
++ } else {
++ s3c2410_dma_config(prtd->params->channel,
++ 2, 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);
++
++ snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
++
++ runtime->dma_bytes = totbytes;
++
++ spin_lock_irq(&prtd->lock);
++ prtd->dma_loaded = 0;
++ prtd->dma_limit = runtime->hw.periods_min;
++ prtd->dma_period = params_period_bytes(params);
++ prtd->dma_start = runtime->dma_addr;
++ prtd->dma_pos = prtd->dma_start;
++ prtd->dma_end = prtd->dma_start + totbytes;
++ spin_unlock_irq(&prtd->lock);
++
++ return 0;
++}
++
++static int s3c24xx_pcm_hw_free(struct snd_pcm_substream *substream)
++{
++ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ /* TODO - do we need to ensure DMA flushed */
++ snd_pcm_set_runtime_buffer(substream, NULL);
++
++ if (prtd->params) {
++ s3c2410_dma_free(prtd->params->channel, prtd->params->client);
++ prtd->params = NULL;
++ }
++
++ return 0;
++}
++
++static int s3c24xx_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
++ int ret = 0;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ /* return if this is a bufferless transfer e.g.
++ * codec <--> BT codec or GSM modem -- lg FIXME */
++ if (!prtd->params)
++ return 0;
++
++ /* flush the DMA channel */
++ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_FLUSH);
++ prtd->dma_loaded = 0;
++ prtd->dma_pos = prtd->dma_start;
++
++ /* enqueue dma buffers */
++ s3c24xx_pcm_enqueue(substream);
++
++ return ret;
++}
++
++static int s3c24xx_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
++ int ret = 0;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ spin_lock(&prtd->lock);
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ case SNDRV_PCM_TRIGGER_RESUME:
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ prtd->state |= ST_RUNNING;
++ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_START);
++ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_STARTED);
++ break;
++
++ case SNDRV_PCM_TRIGGER_STOP:
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ prtd->state &= ~ST_RUNNING;
++ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_STOP);
++ break;
++
++ default:
++ ret = -EINVAL;
++ break;
++ }
++
++ spin_unlock(&prtd->lock);
++
++ return ret;
++}
++
++static snd_pcm_uframes_t s3c24xx_pcm_pointer(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct s3c24xx_runtime_data *prtd = runtime->private_data;
++ unsigned long res;
++ dma_addr_t src, dst;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ spin_lock(&prtd->lock);
++ s3c2410_dma_getposition(prtd->params->channel, &src, &dst);
++
++ if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
++ res = dst - prtd->dma_start;
++ else
++ res = src - prtd->dma_start;
++
++ spin_unlock(&prtd->lock);
++
++ DBG("Pointer %x %x\n",src,dst);
++
++ /* we seem to be getting the odd error from the pcm library due
++ * to out-of-bounds pointers. this is maybe due to the dma engine
++ * not having loaded the new values for the channel before being
++ * callled... (todo - fix )
++ */
++
++ if (res >= snd_pcm_lib_buffer_bytes(substream)) {
++ if (res == snd_pcm_lib_buffer_bytes(substream))
++ res = 0;
++ }
++
++ return bytes_to_frames(substream->runtime, res);
++}
++
++static int s3c24xx_pcm_open(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct s3c24xx_runtime_data *prtd;
++
++ int ret;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ snd_soc_set_runtime_hwparams(substream, &s3c24xx_pcm_hardware);
++
++ prtd = kzalloc(sizeof(struct s3c24xx_runtime_data), GFP_KERNEL);
++ if (prtd == NULL)
++ return -ENOMEM;
++
++ runtime->private_data = prtd;
++ return 0;
++}
++
++static int s3c24xx_pcm_close(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct s3c24xx_runtime_data *prtd = runtime->private_data;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ if (prtd)
++ kfree(prtd);
++ else
++ DBG("s3c24xx_pcm_close called with prtd == NULL\n");
++
++ return 0;
++}
++
++static int s3c24xx_pcm_mmap(struct snd_pcm_substream *substream,
++ struct vm_area_struct *vma)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ return dma_mmap_writecombine(substream->pcm->card->dev, vma,
++ runtime->dma_area,
++ runtime->dma_addr,
++ runtime->dma_bytes);
++}
++
++static struct snd_pcm_ops s3c24xx_pcm_ops = {
++ .open = s3c24xx_pcm_open,
++ .close = s3c24xx_pcm_close,
++ .ioctl = snd_pcm_lib_ioctl,
++ .hw_params = s3c24xx_pcm_hw_params,
++ .hw_free = s3c24xx_pcm_hw_free,
++ .prepare = s3c24xx_pcm_prepare,
++ .trigger = s3c24xx_pcm_trigger,
++ .pointer = s3c24xx_pcm_pointer,
++ .mmap = s3c24xx_pcm_mmap,
++};
++
++static int s3c24xx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
++{
++ struct snd_pcm_substream *substream = pcm->streams[stream].substream;
++ struct snd_dma_buffer *buf = &substream->dma_buffer;
++ size_t size = s3c24xx_pcm_hardware.buffer_bytes_max;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ buf->dev.type = SNDRV_DMA_TYPE_DEV;
++ buf->dev.dev = pcm->card->dev;
++ buf->private_data = NULL;
++ buf->area = dma_alloc_writecombine(pcm->card->dev, size,
++ &buf->addr, GFP_KERNEL);
++ if (!buf->area)
++ return -ENOMEM;
++ buf->bytes = size;
++ return 0;
++}
++
++static void s3c24xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
++{
++ struct snd_pcm_substream *substream;
++ struct snd_dma_buffer *buf;
++ int stream;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ for (stream = 0; stream < 2; stream++) {
++ substream = pcm->streams[stream].substream;
++ if (!substream)
++ continue;
++
++ buf = &substream->dma_buffer;
++ if (!buf->area)
++ continue;
++
++ dma_free_writecombine(pcm->card->dev, buf->bytes,
++ buf->area, buf->addr);
++ buf->area = NULL;
++ }
++}
++
++static u64 s3c24xx_pcm_dmamask = DMA_32BIT_MASK;
++
++static int s3c24xx_pcm_new(struct snd_card *card, struct snd_soc_codec_dai *dai,
++ struct snd_pcm *pcm)
++{
++ int ret = 0;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ if (!card->dev->dma_mask)
++ card->dev->dma_mask = &s3c24xx_pcm_dmamask;
++ if (!card->dev->coherent_dma_mask)
++ card->dev->coherent_dma_mask = 0xffffffff;
++
++ if (dai->playback.channels_min) {
++ ret = s3c24xx_pcm_preallocate_dma_buffer(pcm,
++ SNDRV_PCM_STREAM_PLAYBACK);
++ if (ret)
++ goto out;
++ }
++
++ if (dai->capture.channels_min) {
++ ret = s3c24xx_pcm_preallocate_dma_buffer(pcm,
++ SNDRV_PCM_STREAM_CAPTURE);
++ if (ret)
++ goto out;
++ }
++ out:
++ return ret;
++}
++
++struct snd_soc_platform s3c24xx_soc_platform = {
++ .name = "s3c24xx-audio",
++ .pcm_ops = &s3c24xx_pcm_ops,
++ .pcm_new = s3c24xx_pcm_new,
++ .pcm_free = s3c24xx_pcm_free_dma_buffers,
++};
++
++EXPORT_SYMBOL_GPL(s3c24xx_soc_platform);
++
++MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>");
++MODULE_DESCRIPTION("Samsung S3C24XX PCM DMA module");
++MODULE_LICENSE("GPL");
+diff --git a/sound/soc/s3c24xx/s3c24xx-pcm.h b/sound/soc/s3c24xx/s3c24xx-pcm.h
+new file mode 100644
+index 0000000..5dced4a
+--- /dev/null
++++ b/sound/soc/s3c24xx/s3c24xx-pcm.h
+@@ -0,0 +1,32 @@
++/*
++ * s3c24xx-pcm.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.
++ *
++ * ALSA PCM interface for the Samsung S3C24xx CPU
++ */
++
++#ifndef _S3C24XX_PCM_H
++#define _S3C24XX_PCM_H
++
++#define ST_RUNNING (1<<0)
++#define ST_OPENED (1<<1)
++
++struct s3c24xx_pcm_dma_params {
++ struct s3c2410_dma_client *client; /* stream identifier */
++ int channel; /* Channel ID */
++ dma_addr_t dma_addr;
++};
++
++#define S3C24XX_DAI_I2S 0
++
++extern struct snd_soc_cpu_dai s3c24xx_i2s_dai;
++
++/* platform data */
++extern struct snd_soc_platform s3c24xx_soc_platform;
++extern struct snd_ac97_bus_ops s3c24xx_ac97_ops;
++
++#endif
+--
+1.5.0.3
+
diff --git a/packages/linux/linux-smdk2443/0021-Add-Neo1973-ASoC-support.patch b/packages/linux/linux-smdk2443/0021-Add-Neo1973-ASoC-support.patch
new file mode 100644
index 0000000000..4b518241b8
--- /dev/null
+++ b/packages/linux/linux-smdk2443/0021-Add-Neo1973-ASoC-support.patch
@@ -0,0 +1,763 @@
+From eb7cbe67158924a0de114664ce5251fcad418b12 Mon Sep 17 00:00:00 2001
+From: Liam Girdwood <liam@localhost.localdomain>
+Date: Sun, 4 Mar 2007 16:58:40 +0000
+Subject: [PATCH] Add Neo1973 ASoC support.
+
+Signed-off-by: Graeme Gregory <gg@opensource.wolfsonmicro.com>
+Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
+---
+ sound/soc/s3c24xx/Kconfig | 9 +
+ sound/soc/s3c24xx/Makefile | 4 +
+ sound/soc/s3c24xx/lm4857.h | 15 +
+ sound/soc/s3c24xx/neo1973_wm8753.c | 686 ++++++++++++++++++++++++++++++++++++
+ 4 files changed, 714 insertions(+), 0 deletions(-)
+ create mode 100644 sound/soc/s3c24xx/lm4857.h
+ create mode 100644 sound/soc/s3c24xx/neo1973_wm8753.c
+
+diff --git a/sound/soc/s3c24xx/Kconfig b/sound/soc/s3c24xx/Kconfig
+index 433da9f..c414886 100644
+--- a/sound/soc/s3c24xx/Kconfig
++++ b/sound/soc/s3c24xx/Kconfig
+@@ -12,5 +12,14 @@ config SND_S3C24XX_SOC
+ config SND_S3C24XX_SOC_I2S
+ tristate
+
++config SND_S3C24XX_SOC_NEO1973_WM8753
++ tristate "SoC I2S Audio support for NEO1973 - WM8753"
++ depends on SND_S3C24XX_SOC && MACH_GTA01
++ select SND_S3C24XX_SOC_I2S
++ select SND_SOC_WM8753
++ help
++ Say Y if you want to add support for SoC audio on smdk2440
++ with the WM8753.
++
+ endmenu
+
+diff --git a/sound/soc/s3c24xx/Makefile b/sound/soc/s3c24xx/Makefile
+index 56200d7..7b5c6fe 100644
+--- a/sound/soc/s3c24xx/Makefile
++++ b/sound/soc/s3c24xx/Makefile
+@@ -5,3 +5,7 @@ snd-soc-s3c24xx-i2s-objs := s3c24xx-i2s.o
+ obj-$(CONFIG_SND_S3C24XX_SOC) += snd-soc-s3c24xx.o
+ obj-$(CONFIG_SND_S3C24XX_SOC_I2S) += snd-soc-s3c24xx-i2s.o
+
++# S3C24XX Machine Support
++snd-soc-neo1973-wm8753-objs := neo1973_wm8753.o
++
++obj-$(CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753) += snd-soc-neo1973-wm8753.o
+diff --git a/sound/soc/s3c24xx/lm4857.h b/sound/soc/s3c24xx/lm4857.h
+new file mode 100644
+index 0000000..382d6c4
+--- /dev/null
++++ b/sound/soc/s3c24xx/lm4857.h
+@@ -0,0 +1,15 @@
++#ifndef LM4857_H_
++#define LM4857_H_
++
++/* The register offsets in the cache array */
++#define LM4857_MVOL 0
++#define LM4857_LVOL 1
++#define LM4857_RVOL 2
++#define LM4857_CTRL 3
++
++/* the shifts required to set these bits */
++#define LM4857_3D 5
++#define LM4857_WAKEUP 5
++#define LM4857_EPGAIN 4
++
++#endif /*LM4857_H_*/
+diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c
+new file mode 100644
+index 0000000..46a70e3
+--- /dev/null
++++ b/sound/soc/s3c24xx/neo1973_wm8753.c
+@@ -0,0 +1,686 @@
++/*
++ * neo1973_wm8753.c -- SoC audio for Neo1973
++ *
++ * Copyright 2007 Wolfson Microelectronics PLC.
++ * Author: Graeme Gregory
++ * graeme.gregory@wolfsonmicro.com or 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
++ * 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/arch/hardware.h>
++#include <asm/arch/audio.h>
++#include <asm/io.h>
++#include <asm/arch/spi-gpio.h>
++#include "../codecs/wm8753.h"
++#include "lm4857.h"
++#include "s3c24xx-pcm.h"
++#include "s3c24xx-i2s.h"
++
++#define NEO1973_DEBUG 0
++#if NEO1973_DEBUG
++#define DBG(x...) printk(KERN_DEBUG x)
++#else
++#define DBG(x...)
++#endif
++
++/* 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
++
++static struct snd_soc_machine neo1973;
++static struct i2c_client *i2c;
++
++static int neo1973_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_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_hifi_ops = {
++ .hw_params = neo1973_hifi_hw_params,
++ .hw_free = neo1973_hifi_hw_free,
++};
++
++static int neo1973_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;
++
++ /* todo: gg where is sysclk coming from for voice ?? */
++ 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_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_voice_ops = {
++ .hw_params = neo1973_voice_hw_params,
++ .hw_free = neo1973_voice_hw_free,
++};
++
++static int neo1973_scenario = 0;
++
++static int neo1973_get_scenario(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = neo1973_scenario;
++ return 0;
++}
++
++static int set_scenario_endpoints(struct snd_soc_codec *codec, int scenario)
++{
++ switch(neo1973_scenario) {
++ case NEO_AUDIO_OFF:
++ snd_soc_dapm_set_endpoint(codec, "Audio 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, "Call Mic", 0);
++ break;
++ case NEO_GSM_CALL_AUDIO_HANDSET:
++ snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
++ snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 1);
++ snd_soc_dapm_set_endpoint(codec, "GSM Line In", 1);
++ snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
++ snd_soc_dapm_set_endpoint(codec, "Call Mic", 1);
++ break;
++ case NEO_GSM_CALL_AUDIO_HEADSET:
++ snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
++ snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 1);
++ snd_soc_dapm_set_endpoint(codec, "GSM Line In", 1);
++ snd_soc_dapm_set_endpoint(codec, "Headset Mic", 1);
++ snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
++ break;
++ case NEO_GSM_CALL_AUDIO_BLUETOOTH:
++ snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
++ snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 1);
++ snd_soc_dapm_set_endpoint(codec, "GSM Line In", 1);
++ snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
++ snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
++ break;
++ case NEO_STEREO_TO_SPEAKERS:
++ snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
++ 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, "Call Mic", 0);
++ break;
++ case NEO_STEREO_TO_HEADPHONES:
++ snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
++ 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, "Call Mic", 0);
++ break;
++ case NEO_CAPTURE_HANDSET:
++ snd_soc_dapm_set_endpoint(codec, "Audio 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, "Call Mic", 1);
++ break;
++ case NEO_CAPTURE_HEADSET:
++ snd_soc_dapm_set_endpoint(codec, "Audio 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", 1);
++ snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
++ break;
++ case NEO_CAPTURE_BLUETOOTH:
++ snd_soc_dapm_set_endpoint(codec, "Audio 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, "Call Mic", 0);
++ break;
++ default:
++ snd_soc_dapm_set_endpoint(codec, "Audio 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, "Call Mic", 0);
++ }
++
++ snd_soc_dapm_sync_endpoints(codec);
++
++ return 0;
++}
++
++static int neo1973_set_scenario(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ if (neo1973_scenario == ucontrol->value.integer.value[0])
++ return 0;
++
++ neo1973_scenario = ucontrol->value.integer.value[0];
++
++ set_scenario_endpoints(codec, neo1973_scenario);
++
++ return 1;
++}
++
++static u8 lm4857_regs[4] = {0x00, 0x40, 0x80, 0xC0};
++
++static void lm4857_write_regs( void )
++{
++ if( i2c_master_send(i2c, lm4857_regs, 4) != 4)
++ printk(KERN_WARNING "lm4857: i2c write failed\n");
++}
++
++static int lm4857_get_reg(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ int reg=kcontrol->private_value & 0xFF;
++ int shift = (kcontrol->private_value >> 8) & 0x0F;
++ int mask = (kcontrol->private_value >> 16) & 0xFF;
++
++ ucontrol->value.integer.value[0] = (lm4857_regs[reg] >> shift) & mask;
++
++ return 0;
++}
++
++static int lm4857_set_reg(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ int reg = kcontrol->private_value & 0xFF;
++ int shift = (kcontrol->private_value >> 8) & 0x0F;
++ int mask = (kcontrol->private_value >> 16) & 0xFF;
++
++ if (((lm4857_regs[reg] >> shift ) & mask) ==
++ ucontrol->value.integer.value[0])
++ return 0;
++
++ lm4857_regs[reg] &= ~ (mask << shift);
++ lm4857_regs[reg] |= ucontrol->value.integer.value[0] << shift;
++
++ lm4857_write_regs();
++ return 1;
++}
++
++static int lm4857_get_mode(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ u8 value = lm4857_regs[LM4857_CTRL] & 0x0F;
++
++ if (value)
++ value -= 5;
++
++ ucontrol->value.integer.value[0] = value;
++ return 0;
++}
++
++static int lm4857_set_mode(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ u8 value = ucontrol->value.integer.value[0];
++
++ if (value)
++ value += 5;
++
++ if ((lm4857_regs[LM4857_CTRL] & 0x0F) == value)
++ return 0;
++
++ lm4857_regs[LM4857_CTRL] &= 0xF0;
++ lm4857_regs[LM4857_CTRL] |= value;
++
++ lm4857_write_regs();
++ return 1;
++}
++
++static const struct snd_soc_dapm_widget wm8753_dapm_widgets[] = {
++ SND_SOC_DAPM_LINE("Audio 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("Call Mic", NULL),
++};
++
++
++/* example machine audio_mapnections */
++static const char* audio_map[][3] = {
++
++ /* Connections to the lm4857 amp */
++ {"Audio Out", NULL, "LOUT1"},
++ {"Audio 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, "Call Mic"},
++
++ /* Connect the ALC pins */
++ {"ACIN", NULL, "ACOP"},
++
++ {NULL, NULL, NULL},
++};
++
++static const char *lm4857_mode[] = {
++ "Off",
++ "Call Speaker",
++ "Stereo Speakers",
++ "Stereo Speakers + Headphones",
++ "Headphones"
++};
++
++static const struct soc_enum lm4857_mode_enum[] = {
++ SOC_ENUM_SINGLE_EXT(5, lm4857_mode),
++};
++
++static const char *neo_scenarios[] = {
++ "Off",
++ "GSM Handset",
++ "GSM Headset",
++ "GSM Bluetooth",
++ "Speakers",
++ "Headphones",
++ "Capture Handset",
++ "Capture Headset",
++ "Capture Bluetooth"
++};
++
++static const struct soc_enum neo_scenario_enum[] = {
++ SOC_ENUM_SINGLE_EXT(9,neo_scenarios),
++};
++
++static const struct snd_kcontrol_new wm8753_neo1973_controls[] = {
++ SOC_SINGLE_EXT("Amp Left Playback Volume", LM4857_LVOL, 0, 31, 0,
++ lm4857_get_reg, lm4857_set_reg),
++ SOC_SINGLE_EXT("Amp Right Playback Volume", LM4857_RVOL, 0, 31, 0,
++ lm4857_get_reg, lm4857_set_reg),
++ SOC_SINGLE_EXT("Amp Mono Playback Volume", LM4857_MVOL, 0, 31, 0,
++ lm4857_get_reg, lm4857_set_reg),
++ SOC_ENUM_EXT("Amp Mode", lm4857_mode_enum[0],
++ lm4857_get_mode, lm4857_set_mode),
++ SOC_ENUM_EXT("Neo Mode", neo_scenario_enum[0],
++ neo1973_get_scenario, neo1973_set_scenario),
++ SOC_SINGLE_EXT("Amp Spk 3D Playback Switch", LM4857_LVOL, 5, 1, 0,
++ lm4857_get_reg, lm4857_set_reg),
++ SOC_SINGLE_EXT("Amp HP 3d Playback Switch", LM4857_RVOL, 5, 1, 0,
++ lm4857_get_reg, lm4857_set_reg),
++ SOC_SINGLE_EXT("Amp Fast Wakeup Playback Switch", LM4857_CTRL, 5, 1, 0,
++ lm4857_get_reg, lm4857_set_reg),
++ SOC_SINGLE_EXT("Amp Earpiece 6dB Playback Switch", LM4857_CTRL, 4, 1, 0,
++ lm4857_get_reg, lm4857_set_reg),
++};
++
++/*
++ * This is an example machine initialisation for a wm8753 connected to a
++ * neo1973 II. It is missing logic to detect hp/mic insertions and logic
++ * to re-route the audio in such an event.
++ */
++static int neo1973_wm8753_init(struct snd_soc_codec *codec)
++{
++ int i, err;
++
++ /* set up NC codec pins */
++ snd_soc_dapm_set_endpoint(codec, "LOUT2", 0);
++ snd_soc_dapm_set_endpoint(codec, "ROUT2", 0);
++ 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);
++
++
++ /* set endpoints to default mode */
++ set_scenario_endpoints(codec, NEO_AUDIO_OFF);
++
++ /* Add neo1973 specific widgets */
++ for(i = 0; i < ARRAY_SIZE(wm8753_dapm_widgets); i++)
++ snd_soc_dapm_new_control(codec, &wm8753_dapm_widgets[i]);
++
++ /* add neo1973 specific controls */
++ for (i = 0; i < ARRAY_SIZE(wm8753_neo1973_controls); i++) {
++ if ((err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8753_neo1973_controls[i],codec, NULL))) < 0)
++ return err;
++ }
++
++ /* set up neo1973 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]);
++ }
++
++ 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_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_wm8753_init,
++ .ops = &neo1973_hifi_ops,
++},
++{ /* Voice via BT */
++ .name = "Bluetooth",
++ .stream_name = "Voice",
++ .cpu_dai = &bt_dai,
++ .codec_dai = &wm8753_dai[WM8753_DAI_VOICE],
++ .ops = &neo1973_voice_ops,
++},
++};
++
++static struct snd_soc_machine neo1973 = {
++ .name = "neo1973",
++ .dai_link = neo1973_dai,
++ .num_links = ARRAY_SIZE(neo1973_dai),
++};
++
++static struct wm8753_setup_data neo1973_wm8753_setup = {
++ .i2c_address = 0x1a,
++};
++
++static struct snd_soc_device neo1973_snd_devdata = {
++ .machine = &neo1973,
++ .platform = &s3c24xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm8753,
++ .codec_data = &neo1973_wm8753_setup,
++};
++
++static struct i2c_client client_template;
++
++static unsigned short normal_i2c[] = { 0x7C, I2C_CLIENT_END };
++
++/* Magic definition of all other variables and things */
++I2C_CLIENT_INSMOD;
++
++static int lm4857_amp_probe(struct i2c_adapter *adap, int addr, int kind)
++{
++ int ret;
++
++ client_template.adapter = adap;
++ client_template.addr = addr;
++
++ DBG("Entering %s\n", __FUNCTION__);
++
++ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
++ if (i2c == NULL){
++ return -ENOMEM;
++ }
++ memcpy(i2c, &client_template, sizeof(struct i2c_client));
++
++ ret = i2c_attach_client(i2c);
++ if (ret < 0) {
++ DBG("failed to attach codec at addr %x\n", addr);
++ goto exit_err;
++ }
++
++ lm4857_write_regs();
++
++ return ret;
++
++exit_err:
++ kfree(i2c);
++ return ret;
++}
++
++static int lm4857_i2c_detach(struct i2c_client *client)
++{
++ i2c_detach_client(client);
++ kfree(client);
++ return 0;
++}
++
++static int lm4857_i2c_attach(struct i2c_adapter *adap)
++{
++ return i2c_probe(adap, &addr_data, lm4857_amp_probe);
++}
++
++#define I2C_DRIVERID_LM4857 0xA5A5 /* liam - need a proper id */
++
++/* corgi i2c codec control layer */
++static struct i2c_driver lm4857_i2c_driver = {
++ .driver = {
++ .name = "LM4857 I2C Amp",
++ .owner = THIS_MODULE,
++ },
++ .id = I2C_DRIVERID_LM4857,
++ .attach_adapter = lm4857_i2c_attach,
++ .detach_client = lm4857_i2c_detach,
++ .command = NULL,
++};
++
++static struct i2c_client client_template = {
++ .name = "LM4857",
++ .driver = &lm4857_i2c_driver,
++};
++
++static struct platform_device *neo1973_snd_device;
++
++static int __init neo1973_init(void)
++{
++ int ret;
++
++ neo1973_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!neo1973_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(neo1973_snd_device, &neo1973_snd_devdata);
++ neo1973_snd_devdata.dev = &neo1973_snd_device->dev;
++ ret = platform_device_add(neo1973_snd_device);
++
++ if (ret)
++ platform_device_put(neo1973_snd_device);
++
++ ret = i2c_add_driver(&lm4857_i2c_driver);
++ if (ret != 0)
++ printk(KERN_ERR "can't add i2c driver");
++
++ return ret;
++}
++
++static void __exit neo1973_exit(void)
++{
++ platform_device_unregister(neo1973_snd_device);
++}
++
++module_init(neo1973_init);
++module_exit(neo1973_exit);
++
++/* Module information */
++MODULE_AUTHOR("Graeme Gregory, graeme.gregory@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("ALSA SoC WM8753 Neo1973");
++MODULE_LICENSE("GPL");
+--
+1.5.0.3
+
diff --git a/packages/linux/linux-smdk2443/0022-Add-initial-ASoC-SMDK2440-support.patch b/packages/linux/linux-smdk2443/0022-Add-initial-ASoC-SMDK2440-support.patch
new file mode 100644
index 0000000000..01b51d925e
--- /dev/null
+++ b/packages/linux/linux-smdk2443/0022-Add-initial-ASoC-SMDK2440-support.patch
@@ -0,0 +1,373 @@
+From a6171bfad4671fe525ae2c8cddd4f6a7f739e346 Mon Sep 17 00:00:00 2001
+From: Liam Girdwood <liam@localhost.localdomain>
+Date: Sun, 4 Mar 2007 17:00:59 +0000
+Subject: [PATCH] Add initial ASoC SMDK2440 support.
+
+Signed-off-by: Ben Dooks <ben@simtec.co.uk>
+Signed-off-by: Graeme Gregory <gg@opensource.wolfsonmicro.com>
+Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
+---
+ sound/soc/s3c24xx/Kconfig | 7 +
+ sound/soc/s3c24xx/Makefile | 2 +
+ sound/soc/s3c24xx/smdk2440.c | 320 ++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 329 insertions(+), 0 deletions(-)
+ create mode 100644 sound/soc/s3c24xx/smdk2440.c
+
+diff --git a/sound/soc/s3c24xx/Kconfig b/sound/soc/s3c24xx/Kconfig
+index c414886..99fe902 100644
+--- a/sound/soc/s3c24xx/Kconfig
++++ b/sound/soc/s3c24xx/Kconfig
+@@ -21,5 +21,12 @@ config SND_S3C24XX_SOC_NEO1973_WM8753
+ Say Y if you want to add support for SoC audio on smdk2440
+ with the WM8753.
+
++config SND_S3C24XX_SOC_SMDK2440
++ tristate "SoC I2S Audio support for SMDK2440"
++ depends on SND_S3C24XX_SOC && MACH_SMDK
++ select SND_S3C24XX_SOC_I2S
++ help
++ Say Y if you want to add support for SoC audio on SMDK2440
++
+ endmenu
+
+diff --git a/sound/soc/s3c24xx/Makefile b/sound/soc/s3c24xx/Makefile
+index 7b5c6fe..b991052 100644
+--- a/sound/soc/s3c24xx/Makefile
++++ b/sound/soc/s3c24xx/Makefile
+@@ -7,5 +7,7 @@ obj-$(CONFIG_SND_S3C24XX_SOC_I2S) += snd-soc-s3c24xx-i2s.o
+
+ # S3C24XX Machine Support
+ snd-soc-neo1973-wm8753-objs := neo1973_wm8753.o
++snd-soc-smdk2440-objs := smdk2440.o
+
+ obj-$(CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753) += snd-soc-neo1973-wm8753.o
++obj-$(CONFIG_SND_S3C24XX_SOC_SMDK2440) += snd-soc-smdk2440.o
+diff --git a/sound/soc/s3c24xx/smdk2440.c b/sound/soc/s3c24xx/smdk2440.c
+new file mode 100644
+index 0000000..9885a5e
+--- /dev/null
++++ b/sound/soc/s3c24xx/smdk2440.c
+@@ -0,0 +1,320 @@
++/*
++ * smdk2440.c -- ALSA Soc Audio Layer
++ *
++ * (c) 2006 Wolfson Microelectronics PLC.
++ * Graeme Gregory graeme.gregory@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * (c) 2004-2005 Simtec Electronics
++ * http://armlinux.simtec.co.uk/
++ * Ben Dooks <ben@simtec.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License as published by the
++ * Free Software Foundation; either version 2 of the License, or (at your
++ * option) any later version.
++ *
++ * This module is a modified version of the s3c24xx I2S driver supplied by
++ * Ben Dooks of Simtec and rejigged to the ASoC style at Wolfson Microelectronics
++ *
++ * Revision history
++ * 11th Dec 2006 Merged with Simtec driver
++ * 10th Nov 2006 Initial version.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/timer.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.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/arch/hardware.h>
++#include <asm/arch/audio.h>
++#include <asm/io.h>
++#include <asm/arch/spi-gpio.h>
++#include "../codecs/uda1380.h"
++#include "s3c24xx-pcm.h"
++#include "s3c24xx-i2s.h"
++
++#define SMDK2440_DEBUG 0
++#if SMDK2440_DEBUG
++#define DBG(x...) printk(KERN_DEBUG x)
++#else
++#define DBG(x...)
++#endif
++
++/* audio clock in Hz */
++#define SMDK_CLOCK_SOURCE S3C24XX_CLKSRC_MPLL
++#define SMDK_CRYSTAL_CLOCK 16934400
++
++static int smdk2440_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->socdev->codec;
++
++ DBG("Entered smdk2440_startup\n");
++
++ return 0;
++}
++
++static int smdk2440_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->socdev->codec;
++
++ DBG("Entered smdk2440_shutdown\n");
++
++ return 0;
++}
++
++static int smdk2440_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_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ unsigned long iis_clkrate;
++ int div, div256, div384, diff256, diff384, bclk, mclk;
++ int ret;
++ unsigned int rate=params_rate(params);
++
++ DBG("Entered %s\n",__FUNCTION__);
++
++ iis_clkrate = s3c24xx_i2s_get_clockrate();
++
++ /* Using PCLK doesnt seem to suit audio particularly well on these cpu's
++ */
++
++ div256 = iis_clkrate / (rate * 256);
++ div384 = iis_clkrate / (rate * 384);
++
++ if (((iis_clkrate / div256) - (rate * 256)) <
++ ((rate * 256) - (iis_clkrate / (div256 + 1)))) {
++ diff256 = (iis_clkrate / div256) - (rate * 256);
++ } else {
++ div256++;
++ diff256 = (iis_clkrate / div256) - (rate * 256);
++ }
++
++ if (((iis_clkrate / div384) - (rate * 384)) <
++ ((rate * 384) - (iis_clkrate / (div384 + 1)))) {
++ diff384 = (iis_clkrate / div384) - (rate * 384);
++ } else {
++ div384++;
++ diff384 = (iis_clkrate / div384) - (rate * 384);
++ }
++
++ DBG("diff256 %d, diff384 %d\n", diff256, diff384);
++
++ if (diff256<=diff384) {
++ DBG("Selected 256FS\n");
++ div = div256 - 1;
++ bclk = S3C2410_IISMOD_256FS;
++ } else {
++ DBG("Selected 384FS\n");
++ div = div384 - 1;
++ bclk = S3C2410_IISMOD_384FS;
++ }
++
++ /* 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_CBS_CFS);
++ 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_CBS_CFS);
++ if (ret < 0)
++ return ret;
++
++ /* set the audio system clock for DAC and ADC */
++ ret = cpu_dai->dai_ops.set_sysclk(cpu_dai, S3C24XX_CLKSRC_PCLK,
++ rate, SND_SOC_CLOCK_OUT);
++ 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 BCLK division for sample rate */
++ ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, S3C24XX_DIV_BCLK, 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(div,div));
++ if (ret < 0)
++ return ret;
++
++ return 0;
++}
++
++static struct snd_soc_ops smdk2440_ops = {
++ .startup = smdk2440_startup,
++ .shutdown = smdk2440_shutdown,
++ .hw_params = smdk2440_hw_params,
++};
++
++/* smdk2440 machine dapm widgets */
++static const struct snd_soc_dapm_widget smdk2440_dapm_widgets[] = {
++SND_SOC_DAPM_HP("Headphone Jack", NULL),
++SND_SOC_DAPM_MIC("Mic Jack", NULL),
++SND_SOC_DAPM_LINE("Line Jack", NULL),
++};
++
++/* smdk2440 machine audio map (connections to the codec pins) */
++static const char* audio_map[][3] = {
++ /* headphone connected to HPOUT */
++ {"Headphone Jack", NULL, "HPOUT"},
++
++ /* mic is connected to MICIN (via right channel of headphone jack) */
++ {"MICIN", NULL, "Mic Jack"},
++ {"MICIN", NULL, "Line Jack"},
++
++ {NULL, NULL, NULL},
++};
++
++/*
++ * Logic for a UDA1341 as attached to SMDK2440
++ */
++static int smdk2440_uda1341_init(struct snd_soc_codec *codec)
++{
++ int i, err;
++
++ DBG("Staring smdk2440 init\n");
++
++ /* Add smdk2440 specific widgets */
++ for(i = 0; i < ARRAY_SIZE(smdk2440_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &smdk2440_dapm_widgets[i]);
++ }
++
++ /* Set up smdk2440 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]);
++ }
++
++ snd_soc_dapm_sync_endpoints(codec);
++
++ DBG("Ending smdk2440 init\n");
++
++ return 0;
++}
++
++/* s3c24xx digital audio interface glue - connects codec <--> CPU */
++static struct snd_soc_dai_link s3c24xx_dai = {
++ .name = "WM8731",
++ .stream_name = "WM8731",
++ .cpu_dai = &s3c24xx_i2s_dai,
++ .codec_dai = &uda1380_dai,
++ .init = smdk2440_uda1341_init,
++ .ops = &smdk2440_ops,
++};
++
++/* smdk2440 audio machine driver */
++static struct snd_soc_machine snd_soc_machine_smdk2440 = {
++ .name = "SMDK2440",
++ .dai_link = &s3c24xx_dai,
++ .num_links = 1,
++};
++
++static struct uda1380_setup_data smdk2440_uda1380_setup = {
++ .i2c_address = 0x00,
++};
++
++/* s3c24xx audio subsystem */
++static struct snd_soc_device s3c24xx_snd_devdata = {
++ .machine = &snd_soc_machine_smdk2440,
++ .platform = &s3c24xx_soc_platform,
++ .codec_dev = &soc_codec_dev_uda1380,
++ .codec_data = &smdk2440_uda1380_setup,
++};
++
++static struct platform_device *s3c24xx_snd_device;
++
++struct smdk2440_spi_device {
++ struct device *dev;
++};
++
++static struct smdk2440_spi_device smdk2440_spi_devdata = {
++};
++
++struct s3c2410_spigpio_info smdk2440_spi_devinfo = {
++ .pin_clk = S3C2410_GPF4,
++ .pin_mosi = S3C2410_GPF5,
++ .pin_miso = S3C2410_GPF6,
++ //.board_size,
++ //.board_info,
++ .chip_select=NULL,
++};
++
++static struct platform_device *smdk2440_spi_device;
++
++static int __init smdk2440_init(void)
++{
++ int ret;
++
++ if (!machine_is_smdk2440() && !machine_is_s3c2440()) {
++ DBG("%d\n",machine_arch_type);
++ DBG("Not a SMDK2440\n");
++ return -ENODEV;
++ }
++
++ s3c24xx_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!s3c24xx_snd_device) {
++ DBG("platform_dev_alloc failed\n");
++ return -ENOMEM;
++ }
++
++ platform_set_drvdata(s3c24xx_snd_device, &s3c24xx_snd_devdata);
++ s3c24xx_snd_devdata.dev = &s3c24xx_snd_device->dev;
++ ret = platform_device_add(s3c24xx_snd_device);
++
++ if (ret)
++ platform_device_put(s3c24xx_snd_device);
++
++ // Create a bitbanged SPI device
++
++ smdk2440_spi_device = platform_device_alloc("s3c24xx-spi-gpio",-1);
++ if (!smdk2440_spi_device) {
++ DBG("smdk2440_spi_device : platform_dev_alloc failed\n");
++ return -ENOMEM;
++ }
++ DBG("Return Code %d\n",ret);
++
++ platform_set_drvdata(smdk2440_spi_device, &smdk2440_spi_devdata);
++ smdk2440_spi_devdata.dev = &smdk2440_spi_device->dev;
++ smdk2440_spi_devdata.dev->platform_data = &smdk2440_spi_devinfo;
++ ret = platform_device_add(smdk2440_spi_device);
++
++ if (ret)
++ platform_device_put(smdk2440_spi_device);
++
++ return ret;
++}
++
++static void __exit smdk2440_exit(void)
++{
++ platform_device_unregister(s3c24xx_snd_device);
++}
++
++module_init(smdk2440_init);
++module_exit(smdk2440_exit);
++
++/* Module information */
++MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>");
++MODULE_DESCRIPTION("ALSA SoC SMDK2440");
++MODULE_LICENSE("GPL");
+--
+1.5.0.3
+
diff --git a/packages/linux/linux-smdk2443/0023-Add-ASoC-SMDK2440-support-for-WM8956-codec.patch b/packages/linux/linux-smdk2443/0023-Add-ASoC-SMDK2440-support-for-WM8956-codec.patch
new file mode 100644
index 0000000000..a1609ff6e6
--- /dev/null
+++ b/packages/linux/linux-smdk2443/0023-Add-ASoC-SMDK2440-support-for-WM8956-codec.patch
@@ -0,0 +1,391 @@
+From 2799ad808892eff7367ebc3e329ab3e7d00ccdac Mon Sep 17 00:00:00 2001
+From: Liam Girdwood <liam@localhost.localdomain>
+Date: Sun, 4 Mar 2007 17:05:34 +0000
+Subject: [PATCH] Add ASoC SMDK2440 support for WM8956 codec.
+
+Signed-off-by: Graeme Gregory <gg@opensource.wolfsonmicro.com>
+Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
+---
+ sound/soc/s3c24xx/Kconfig | 9 +
+ sound/soc/s3c24xx/Makefile | 3 +
+ sound/soc/s3c24xx/smdk2440_wm8956.c | 335 +++++++++++++++++++++++++++++++++++
+ 3 files changed, 347 insertions(+), 0 deletions(-)
+ create mode 100644 sound/soc/s3c24xx/smdk2440_wm8956.c
+
+diff --git a/sound/soc/s3c24xx/Kconfig b/sound/soc/s3c24xx/Kconfig
+index 99fe902..2b4bd21 100644
+--- a/sound/soc/s3c24xx/Kconfig
++++ b/sound/soc/s3c24xx/Kconfig
+@@ -28,5 +28,14 @@ config SND_S3C24XX_SOC_SMDK2440
+ help
+ Say Y if you want to add support for SoC audio on SMDK2440
+
++config SND_S3C24XX_SOC_SMDK2440_WM8956
++ tristate "SoC I2S WM8956 Audio support for SMDK2440"
++ depends on SND_S3C24XX_SOC && MACH_SMDK
++ select SND_S3C24XX_SOC_I2S
++ select SND_SOC_WM8956
++ help
++ Say Y if you want to add support for SoC audio on SMDK2440
++ with WM8956.
++
+ endmenu
+
+diff --git a/sound/soc/s3c24xx/Makefile b/sound/soc/s3c24xx/Makefile
+index b991052..2759e88 100644
+--- a/sound/soc/s3c24xx/Makefile
++++ b/sound/soc/s3c24xx/Makefile
+@@ -8,6 +8,9 @@ obj-$(CONFIG_SND_S3C24XX_SOC_I2S) += snd-soc-s3c24xx-i2s.o
+ # S3C24XX Machine Support
+ snd-soc-neo1973-wm8753-objs := neo1973_wm8753.o
+ snd-soc-smdk2440-objs := smdk2440.o
++snd-soc-smdk2440-wm8956-objs := smdk2440-wm8956.o
+
+ obj-$(CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753) += snd-soc-neo1973-wm8753.o
+ obj-$(CONFIG_SND_S3C24XX_SOC_SMDK2440) += snd-soc-smdk2440.o
++obj-$(CONFIG_SND_S3C24XX_SOC_SMDK2440_WM8956) += snd-soc-smdk2440-wm8956.o
++
+diff --git a/sound/soc/s3c24xx/smdk2440_wm8956.c b/sound/soc/s3c24xx/smdk2440_wm8956.c
+new file mode 100644
+index 0000000..89960eb
+--- /dev/null
++++ b/sound/soc/s3c24xx/smdk2440_wm8956.c
+@@ -0,0 +1,335 @@
++/*
++ * smdk2440.c -- ALSA Soc Audio Layer
++ *
++ * (c) 2006 Wolfson Microelectronics PLC.
++ * Graeme Gregory graeme.gregory@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * (c) 2004-2005 Simtec Electronics
++ * http://armlinux.simtec.co.uk/
++ * Ben Dooks <ben@simtec.co.uk>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License as published by the
++ * Free Software Foundation; either version 2 of the License, or (at your
++ * option) any later version.
++ *
++ * This module is a modified version of the s3c24xx I2S driver supplied by
++ * Ben Dooks of Simtec and rejigged to the ASoC style at Wolfson Microelectronics
++ *
++ * Revision history
++ * 11th Dec 2006 Merged with Simtec driver
++ * 10th Nov 2006 Initial version.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/timer.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.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/arch/hardware.h>
++#include <asm/arch/audio.h>
++#include <asm/io.h>
++#include <asm/arch/spi-gpio.h>
++#include "../codecs/wm8956.h"
++#include "s3c24xx-pcm.h"
++#include "s3c24xx-i2s.h"
++
++#define SMDK2440_DEBUG 0
++#if SMDK2440_DEBUG
++#define DBG(x...) printk(KERN_DEBUG x)
++#else
++#define DBG(x...)
++#endif
++
++/* audio clock in Hz */
++#define SMDK_CLOCK_SOURCE S3C24XX_CLKSRC_MPLL
++#define SMDK_CRYSTAL_CLOCK 12000000
++
++static int smdk2440_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->socdev->codec;
++
++ DBG("Entered %s\n",__FUNCTION__);
++
++ return 0;
++}
++
++static int smdk2440_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->socdev->codec;
++
++ DBG("Entered %s\n",__FUNCTION__);
++
++ return 0;
++}
++
++static int smdk2440_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_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ int bclk, mclk;
++ int ret;
++ int pll;
++ int div=0,sysclkdiv=0;
++ unsigned int rate = params_rate(params);
++
++ DBG("Entered %s\n",__FUNCTION__);
++
++ /* Work out the pll dividers */
++ switch(rate)
++ {
++ case 8000:
++ case 16000:
++ case 32000:
++ case 48000:
++ pll=12288000;
++ break;
++ case 96000:
++ pll=24576000;
++ break;
++ case 11025:
++ case 22050:
++ case 44100:
++ pll=11289600;
++ break;
++ case 88200:
++ pll=22579200;
++ break;
++ default:
++ pll=12288000;
++ }
++
++ /* Work out the DAV Div */
++ switch(rate)
++ {
++ case 96000:
++ case 88200:
++ case 48000:
++ case 44100:
++ div=0;
++ break;
++ case 32000:
++ div=1;
++ break;
++ case 22050;
++ div=2;
++ break;
++ case 16000:
++ div=1;
++ sysclkdiv=2;
++ break;
++ case 11025:
++ div=4;
++ break;
++ case 8000:
++ div=6;
++ 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;
++
++ ret = codec_dai->dai_ops.set_pll(codec_dai, 0, SMDK_CRYSTAL_CLOCK, pll);
++ if (ret < 0)
++ return ret;
++
++ ret = codec_dai->dai_ops.set_clkdiv(codec_dai, WM8956_SYSCLKDIV, sysclkdiv);
++ if (ret < 0)
++ return ret;
++
++ ret = codec_dai->dai_ops.set_clkdiv(codec_dai, WM8956_DACDIV, div);
++ 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 audio system clock for DAC and ADC */
++ /* 12Mhz crystal for this example */
++ ret = cpu_dai->dai_ops.set_sysclk(cpu_dai, S3C24XX_CLKSRC_MPLL,
++ SMDK_CRYSTAL_CLOCK, SND_SOC_CLOCK_OUT);
++ 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;
++
++ return 0;
++}
++
++static struct snd_soc_ops smdk2440_ops = {
++ .startup = smdk2440_startup,
++ .shutdown = smdk2440_shutdown,
++ .hw_params = smdk2440_hw_params,
++};
++
++/* smdk2440 machine dapm widgets */
++static const struct snd_soc_dapm_widget smdk2440_dapm_widgets[] = {
++SND_SOC_DAPM_HP("Headphone Jack", NULL),
++SND_SOC_DAPM_MIC("Mic Jack", NULL),
++SND_SOC_DAPM_LINE("Line Jack", NULL),
++};
++
++/* smdk2440 machine audio map (connections to the codec pins) */
++static const char* audio_map[][3] = {
++ /* headphone connected to HPOUT */
++ {"Headphone Jack", NULL, "HPOUT"},
++ {"MICIN", NULL, "Mic Jack"},
++ {"MICIN", NULL, "Line Jack"},
++
++ {NULL, NULL, NULL},
++};
++
++/*
++ * Logic for a wm8956 as attached to SMDK2440
++ */
++static int smdk2440_wm8956_init(struct snd_soc_codec *codec)
++{
++ int i, err;
++
++ DBG("Entered %s\n",__FUNCTION__);
++
++
++ /* Add smdk2440 specific widgets */
++ for(i = 0; i < ARRAY_SIZE(smdk2440_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &smdk2440_dapm_widgets[i]);
++ }
++
++ /* Set up smdk2440 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]);
++ }
++
++ snd_soc_dapm_sync_endpoints(codec);
++
++ return 0;
++}
++
++/* s3c24xx digital audio interface glue - connects codec <--> CPU */
++static struct snd_soc_dai_link s3c24xx_dai = {
++ .name = "WM8731",
++ .stream_name = "WM8731",
++ .cpu_dai = &s3c24xx_i2s_dai,
++ .codec_dai = &wm8956_dai,
++ .init = smdk2440_wm8956_init,
++ .ops = &smdk2440_ops,
++};
++
++/* smdk2440 audio machine driver */
++static struct snd_soc_machine snd_soc_machine_smdk2440 = {
++ .name = "SMDK2440",
++ .dai_link = &s3c24xx_dai,
++ .num_links = 1,
++};
++
++static struct wm8956_setup_data smdk2440_wm8956_setup = {
++ .i2c_address = 0x00,
++};
++
++/* s3c24xx audio subsystem */
++static struct snd_soc_device s3c24xx_snd_devdata = {
++ .machine = &snd_soc_machine_smdk2440,
++ .platform = &s3c24xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm8956,
++ .codec_data = &smdk2440_wm8956_setup,
++};
++
++static struct platform_device *s3c24xx_snd_device;
++
++struct smdk2440_spi_device {
++ struct device *dev;
++};
++
++static struct smdk2440_spi_device smdk2440_spi_devdata = {
++};
++
++struct s3c2410_spigpio_info smdk2440_spi_devinfo = {
++ .pin_clk = S3C2410_GPF4,
++ .pin_mosi = S3C2410_GPF5,
++ .pin_miso = S3C2410_GPF6,
++ //.board_size,
++ //.board_info,
++ .chip_select=NULL,
++};
++
++static struct platform_device *smdk2440_spi_device;
++
++static int __init smdk2440_init(void)
++{
++ int ret;
++
++ if (!machine_is_smdk2440() && !machine_is_s3c2440()) {
++ DBG("%d\n",machine_arch_type);
++ DBG("Not a SMDK2440\n");
++ return -ENODEV;
++ }
++
++ s3c24xx_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!s3c24xx_snd_device) {
++ DBG("platform_dev_alloc failed\n");
++ return -ENOMEM;
++ }
++
++ platform_set_drvdata(s3c24xx_snd_device, &s3c24xx_snd_devdata);
++ s3c24xx_snd_devdata.dev = &s3c24xx_snd_device->dev;
++ ret = platform_device_add(s3c24xx_snd_device);
++
++ if (ret)
++ platform_device_put(s3c24xx_snd_device);
++
++ // Create a bitbanged SPI device
++
++ smdk2440_spi_device = platform_device_alloc("s3c24xx-spi-gpio",-1);
++ if (!smdk2440_spi_device) {
++ DBG("smdk2440_spi_device : platform_dev_alloc failed\n");
++ return -ENOMEM;
++ }
++ DBG("Return Code %d\n",ret);
++
++ platform_set_drvdata(smdk2440_spi_device, &smdk2440_spi_devdata);
++ smdk2440_spi_devdata.dev = &smdk2440_spi_device->dev;
++ smdk2440_spi_devdata.dev->platform_data = &smdk2440_spi_devinfo;
++ ret = platform_device_add(smdk2440_spi_device);
++
++ if (ret)
++ platform_device_put(smdk2440_spi_device);
++
++ return ret;
++}
++
++static void __exit smdk2440_exit(void)
++{
++ platform_device_unregister(s3c24xx_snd_device);
++}
++
++module_init(smdk2440_init);
++module_exit(smdk2440_exit);
++
++/* Module information */
++MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>");
++MODULE_DESCRIPTION("ALSA SoC SMDK2440");
++MODULE_LICENSE("GPL");
+--
+1.5.0.3
+
diff --git a/packages/linux/linux-smdk2443/0033-arch-hardware.h-is-no-longer-allowed-to-be-directly.patch b/packages/linux/linux-smdk2443/0033-arch-hardware.h-is-no-longer-allowed-to-be-directly.patch
new file mode 100644
index 0000000000..2dc2a6ac41
--- /dev/null
+++ b/packages/linux/linux-smdk2443/0033-arch-hardware.h-is-no-longer-allowed-to-be-directly.patch
@@ -0,0 +1,41 @@
+From 3108e2dc553b3014294a6915471198c94c643657 Mon Sep 17 00:00:00 2001
+From: Graeme Gregory <gg@a10082.wolfsonmicro.main>
+Date: Mon, 26 Mar 2007 14:19:43 +0100
+Subject: [PATCH] arch/hardware.h is no longer allowed to be directly included. So changed
+to include hardware.h
+
+Signed-off-by: Graeme Gregory <gg@opensource.wolfsonmicro.com>
+---
+ sound/soc/s3c24xx/neo1973_wm8753.c | 2 +-
+ sound/soc/s3c24xx/smdk2440.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c
+index 46a70e3..34e03cd 100644
+--- a/sound/soc/s3c24xx/neo1973_wm8753.c
++++ b/sound/soc/s3c24xx/neo1973_wm8753.c
+@@ -33,7 +33,7 @@
+ #include <asm/arch/regs-iis.h>
+ #include <asm/arch/regs-clock.h>
+ #include <asm/arch/regs-gpio.h>
+-#include <asm/arch/hardware.h>
++#include <asm/hardware.h>
+ #include <asm/arch/audio.h>
+ #include <asm/io.h>
+ #include <asm/arch/spi-gpio.h>
+diff --git a/sound/soc/s3c24xx/smdk2440.c b/sound/soc/s3c24xx/smdk2440.c
+index 9885a5e..5363fe1 100644
+--- a/sound/soc/s3c24xx/smdk2440.c
++++ b/sound/soc/s3c24xx/smdk2440.c
+@@ -37,7 +37,7 @@
+ #include <asm/arch/regs-iis.h>
+ #include <asm/arch/regs-clock.h>
+ #include <asm/arch/regs-gpio.h>
+-#include <asm/arch/hardware.h>
++#include <asm/hardware.h>
+ #include <asm/arch/audio.h>
+ #include <asm/io.h>
+ #include <asm/arch/spi-gpio.h>
+--
+1.5.0.3
+
diff --git a/packages/linux/linux-smdk2443/0034-Export-ac97_dai.patch b/packages/linux/linux-smdk2443/0034-Export-ac97_dai.patch
new file mode 100644
index 0000000000..d159d92ea3
--- /dev/null
+++ b/packages/linux/linux-smdk2443/0034-Export-ac97_dai.patch
@@ -0,0 +1,39 @@
+From 5927769216ec15b725f224e3e60ed9884c192704 Mon Sep 17 00:00:00 2001
+From: Graeme Gregory <gg@a10082.wolfsonmicro.main>
+Date: Mon, 26 Mar 2007 15:18:27 +0100
+Subject: [PATCH] Export ac97_dai
+
+This is required so that machine drivers can use this codec.
+
+Signed-off-by: Graeme Gregory <gg@opensource.wolfsonmicro.com>
+---
+ sound/soc/codecs/ac97.c | 1 +
+ sound/soc/codecs/ac97.h | 1 +
+ 2 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/sound/soc/codecs/ac97.c b/sound/soc/codecs/ac97.c
+index 55bc55e..0cdef97 100644
+--- a/sound/soc/codecs/ac97.c
++++ b/sound/soc/codecs/ac97.c
+@@ -60,6 +60,7 @@ static struct snd_soc_codec_dai ac97_dai = {
+ .ops = {
+ .prepare = ac97_prepare,},
+ };
++EXPORT_SYMBOL_GPL(ac97_dai);
+
+ static unsigned int ac97_read(struct snd_soc_codec *codec,
+ unsigned int reg)
+diff --git a/sound/soc/codecs/ac97.h b/sound/soc/codecs/ac97.h
+index 930ddfc..2bf6d69 100644
+--- a/sound/soc/codecs/ac97.h
++++ b/sound/soc/codecs/ac97.h
+@@ -14,5 +14,6 @@
+ #define __LINUX_SND_SOC_AC97_H
+
+ extern struct snd_soc_codec_device soc_codec_dev_ac97;
++extern struct snd_soc_codec_dai ac97_dai;
+
+ #endif
+--
+1.5.0.3
+
diff --git a/packages/linux/linux-smdk2443/0035-Fix-power-and-PLL.patch b/packages/linux/linux-smdk2443/0035-Fix-power-and-PLL.patch
new file mode 100644
index 0000000000..c498da69fe
--- /dev/null
+++ b/packages/linux/linux-smdk2443/0035-Fix-power-and-PLL.patch
@@ -0,0 +1,63 @@
+From fc2b709436ef9069dac1e2b46a8acb94a7169e8d Mon Sep 17 00:00:00 2001
+From: Graeme Gregory <gg@a10082.wolfsonmicro.main>
+Date: Mon, 26 Mar 2007 15:25:43 +0100
+Subject: [PATCH] Fix power and PLL
+
+bit 0 of POWER1 has oposite meaning to the rest of the bits so write this
+to zero to enable chip.
+
+enable the fractional PLL by enabling the correct bit in register.
+
+Signed-off-by: Graeme Gregory <gg@opensource.wolfsonmicro.com>
+---
+ sound/soc/codecs/wm8956.c | 4 ++--
+ sound/soc/codecs/wm8960.c | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/sound/soc/codecs/wm8956.c b/sound/soc/codecs/wm8956.c
+index 6e1bbc9..d88f572 100644
+--- a/sound/soc/codecs/wm8956.c
++++ b/sound/soc/codecs/wm8956.c
+@@ -314,7 +314,7 @@ static int wm8956_dapm_event(struct snd_soc_codec *codec, int event)
+ }
+ #endif
+ // tmp
+- wm8956_write(codec, WM8956_POWER1, 0xffff);
++ wm8956_write(codec, WM8956_POWER1, 0xfffe);
+ wm8956_write(codec, WM8956_POWER2, 0xffff);
+ wm8956_write(codec, WM8956_POWER3, 0xffff);
+ codec->dapm_state = event;
+@@ -388,7 +388,7 @@ static int wm8956_set_dai_pll(struct snd_soc_codec_dai *codec_dai,
+ return -EINVAL;
+
+ reg = wm8956_read_reg_cache(codec, WM8956_PLLN) & 0x1e0;
+- wm8956_write(codec, WM8956_PLLN, reg | (pll_div.pre_div << 4)
++ wm8956_write(codec, WM8956_PLLN, reg | (1<<5) | (pll_div.pre_div << 4)
+ | pll_div.n);
+ wm8956_write(codec, WM8956_PLLK1, pll_div.k >> 16 );
+ wm8956_write(codec, WM8956_PLLK2, (pll_div.k >> 8) & 0xff);
+diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
+index a754742..24cbb36 100644
+--- a/sound/soc/codecs/wm8960.c
++++ b/sound/soc/codecs/wm8960.c
+@@ -356,7 +356,7 @@ static int wm8960_dapm_event(struct snd_soc_codec *codec, int event)
+ }
+ #endif
+ // tmp
+- wm8960_write(codec, WM8960_POWER1, 0xffff);
++ wm8960_write(codec, WM8960_POWER1, 0xfffe);
+ wm8960_write(codec, WM8960_POWER2, 0xffff);
+ wm8960_write(codec, WM8960_POWER3, 0xffff);
+ codec->dapm_state = event;
+@@ -430,7 +430,7 @@ static int wm8960_set_dai_pll(struct snd_soc_codec_dai *codec_dai,
+ return -EINVAL;
+
+ reg = wm8960_read_reg_cache(codec, WM8960_PLLN) & 0x1e0;
+- wm8960_write(codec, WM8960_PLLN, reg | (pll_div.pre_div << 4)
++ wm8960_write(codec, WM8960_PLLN, reg | (1<<5) | (pll_div.pre_div << 4)
+ | pll_div.n);
+ wm8960_write(codec, WM8960_PLLK1, pll_div.k >> 16 );
+ wm8960_write(codec, WM8960_PLLK2, (pll_div.k >> 8) & 0xff);
+--
+1.5.0.3
+
diff --git a/packages/linux/linux-smdk2443/0036-Move-s3c24xx_i2s_dai-and-add-dma_size.patch b/packages/linux/linux-smdk2443/0036-Move-s3c24xx_i2s_dai-and-add-dma_size.patch
new file mode 100644
index 0000000000..3b013db336
--- /dev/null
+++ b/packages/linux/linux-smdk2443/0036-Move-s3c24xx_i2s_dai-and-add-dma_size.patch
@@ -0,0 +1,48 @@
+From 129287fa3ed3c4caf14e9d9f70bec2f3a42ea00d Mon Sep 17 00:00:00 2001
+From: Graeme Gregory <gg@a10082.wolfsonmicro.main>
+Date: Mon, 26 Mar 2007 15:31:30 +0100
+Subject: [PATCH] Move s3c24xx_i2s_dai and add dma_size
+
+move s3c24xx_i2s_dai from pcm.h to i2s.h where it should be
+
+add a dma_size parameter to the dma params as I2S and AC97 use different
+writing widths to the FIFO.
+
+Signed-off-by: Graeme Gregory <gg@opensource.wolfsonmicro.com>
+---
+ sound/soc/s3c24xx/s3c24xx-i2s.h | 2 ++
+ sound/soc/s3c24xx/s3c24xx-pcm.h | 3 +--
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/sound/soc/s3c24xx/s3c24xx-i2s.h b/sound/soc/s3c24xx/s3c24xx-i2s.h
+index f9ca04e..537b4ec 100644
+--- a/sound/soc/s3c24xx/s3c24xx-i2s.h
++++ b/sound/soc/s3c24xx/s3c24xx-i2s.h
+@@ -32,4 +32,6 @@
+
+ u32 s3c24xx_i2s_get_clockrate(void);
+
++extern struct snd_soc_cpu_dai s3c24xx_i2s_dai;
++
+ #endif /*S3C24XXI2S_H_*/
+diff --git a/sound/soc/s3c24xx/s3c24xx-pcm.h b/sound/soc/s3c24xx/s3c24xx-pcm.h
+index 5dced4a..5619fdc 100644
+--- a/sound/soc/s3c24xx/s3c24xx-pcm.h
++++ b/sound/soc/s3c24xx/s3c24xx-pcm.h
+@@ -19,12 +19,11 @@ struct s3c24xx_pcm_dma_params {
+ struct s3c2410_dma_client *client; /* stream identifier */
+ int channel; /* Channel ID */
+ dma_addr_t dma_addr;
++ int dma_size; /* Size of the DMA transfer */
+ };
+
+ #define S3C24XX_DAI_I2S 0
+
+-extern struct snd_soc_cpu_dai s3c24xx_i2s_dai;
+-
+ /* platform data */
+ extern struct snd_soc_platform s3c24xx_soc_platform;
+ extern struct snd_ac97_bus_ops s3c24xx_ac97_ops;
+--
+1.5.0.3
+
diff --git a/packages/linux/linux-smdk2443/0037-Use-dma_size-parameter-and-fix-buffdone-oops.patch b/packages/linux/linux-smdk2443/0037-Use-dma_size-parameter-and-fix-buffdone-oops.patch
new file mode 100644
index 0000000000..720f3b4868
--- /dev/null
+++ b/packages/linux/linux-smdk2443/0037-Use-dma_size-parameter-and-fix-buffdone-oops.patch
@@ -0,0 +1,104 @@
+From b0679d107622f7480a6629d3e92af714d9ea78b4 Mon Sep 17 00:00:00 2001
+From: Graeme Gregory <gg@a10082.wolfsonmicro.main>
+Date: Mon, 26 Mar 2007 15:34:29 +0100
+Subject: [PATCH] Use dma_size parameter and fix buffdone oops
+
+Make use of the dma_size parameter in i2s.c and pcm.c
+
+Move the access of prtd in buffdone until after we have checked for an
+abort as flush may be called when prtd is no longer valid.
+
+Signed-off-by: Graeme Gregory <gg@opensource.wolfsonmicro.com>
+---
+ sound/soc/s3c24xx/s3c24xx-i2s.c | 6 ++++--
+ sound/soc/s3c24xx/s3c24xx-pcm.c | 16 +++++++++-------
+ 2 files changed, 13 insertions(+), 9 deletions(-)
+
+diff --git a/sound/soc/s3c24xx/s3c24xx-i2s.c b/sound/soc/s3c24xx/s3c24xx-i2s.c
+index df655a5..8ca314d 100644
+--- a/sound/soc/s3c24xx/s3c24xx-i2s.c
++++ b/sound/soc/s3c24xx/s3c24xx-i2s.c
+@@ -61,13 +61,15 @@ static struct s3c2410_dma_client s3c24xx_dma_client_in = {
+ static struct s3c24xx_pcm_dma_params s3c24xx_i2s_pcm_stereo_out = {
+ .client = &s3c24xx_dma_client_out,
+ .channel = DMACH_I2S_OUT,
+- .dma_addr = S3C2410_PA_IIS + S3C2410_IISFIFO
++ .dma_addr = S3C2410_PA_IIS + S3C2410_IISFIFO,
++ .dma_size = 2,
+ };
+
+ static struct s3c24xx_pcm_dma_params s3c24xx_i2s_pcm_stereo_in = {
+ .client = &s3c24xx_dma_client_in,
+ .channel = DMACH_I2S_IN,
+- .dma_addr = S3C2410_PA_IIS + S3C2410_IISFIFO
++ .dma_addr = S3C2410_PA_IIS + S3C2410_IISFIFO,
++ .dma_size = 2,
+ };
+
+ struct s3c24xx_i2s_info {
+diff --git a/sound/soc/s3c24xx/s3c24xx-pcm.c b/sound/soc/s3c24xx/s3c24xx-pcm.c
+index 867f1b3..dc28bc6 100644
+--- a/sound/soc/s3c24xx/s3c24xx-pcm.c
++++ b/sound/soc/s3c24xx/s3c24xx-pcm.c
+@@ -38,7 +38,7 @@
+
+ #include "s3c24xx-pcm.h"
+
+-#define S3C24XX_PCM_DEBUG 0
++#define S3C24XX_PCM_DEBUG 1
+ #if S3C24XX_PCM_DEBUG
+ #define DBG(x...) printk(KERN_DEBUG x)
+ #else
+@@ -119,13 +119,15 @@ static void s3c24xx_audio_buffdone(struct s3c2410_dma_chan *channel,
+ enum s3c2410_dma_buffresult result)
+ {
+ struct snd_pcm_substream *substream = dev_id;
+- struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
++ struct s3c24xx_runtime_data *prtd;
+
+ DBG("Entered %s\n", __FUNCTION__);
+
+ if (result == S3C2410_RES_ABORT || result == S3C2410_RES_ERR)
+ return;
+
++ prtd = substream->runtime->private_data;
++
+ if (substream)
+ snd_pcm_period_elapsed(substream);
+
+@@ -177,10 +179,12 @@ static int s3c24xx_pcm_hw_params(struct snd_pcm_substream *substream,
+ S3C2410_DISRCC_APB, prtd->params->dma_addr);
+
+ s3c2410_dma_config(prtd->params->channel,
+- 2, S3C2410_DCON_SYNC_PCLK | S3C2410_DCON_HANDSHAKE);
++ prtd->params->dma_size,
++ S3C2410_DCON_SYNC_PCLK | S3C2410_DCON_HANDSHAKE);
+ } else {
+ s3c2410_dma_config(prtd->params->channel,
+- 2, S3C2410_DCON_HANDSHAKE | S3C2410_DCON_SYNC_PCLK);
++ prtd->params->dma_size,
++ S3C2410_DCON_HANDSHAKE | S3C2410_DCON_SYNC_PCLK);
+
+ s3c2410_dma_devconfig(prtd->params->channel,
+ S3C2410_DMASRC_HW, 0x3,
+@@ -214,7 +218,7 @@ static int s3c24xx_pcm_hw_free(struct snd_pcm_substream *substream)
+
+ /* TODO - do we need to ensure DMA flushed */
+ snd_pcm_set_runtime_buffer(substream, NULL);
+-
++
+ if (prtd->params) {
+ s3c2410_dma_free(prtd->params->channel, prtd->params->client);
+ prtd->params = NULL;
+@@ -321,8 +325,6 @@ static int s3c24xx_pcm_open(struct snd_pcm_substream *substream)
+ struct snd_pcm_runtime *runtime = substream->runtime;
+ struct s3c24xx_runtime_data *prtd;
+
+- int ret;
+-
+ DBG("Entered %s\n", __FUNCTION__);
+
+ snd_soc_set_runtime_hwparams(substream, &s3c24xx_pcm_hardware);
+--
+1.5.0.3
+
diff --git a/packages/linux/linux-smdk2443/0038-Add-smdk2443-s3c2443-ac97-and-wm9710-support.patch b/packages/linux/linux-smdk2443/0038-Add-smdk2443-s3c2443-ac97-and-wm9710-support.patch
new file mode 100644
index 0000000000..9fa7e557f0
--- /dev/null
+++ b/packages/linux/linux-smdk2443/0038-Add-smdk2443-s3c2443-ac97-and-wm9710-support.patch
@@ -0,0 +1,724 @@
+From e3a91813a659447bd20de014902fc5b1d95272aa Mon Sep 17 00:00:00 2001
+From: Graeme Gregory <gg@a10082.wolfsonmicro.main>
+Date: Mon, 26 Mar 2007 15:47:09 +0100
+Subject: [PATCH] Add smdk2443 s3c2443-ac97 and wm9710 support
+
+This is the machine driver for smdk2443 with wm9710
+
+Also the s3c2443-ac97 driver for use with the above machine driver.
+
+Signed-off-by: Graeme Gregory <gg@opensource.wolfsonmicro.com>
+---
+ sound/soc/s3c24xx/Kconfig | 15 ++
+ sound/soc/s3c24xx/Makefile | 5 +-
+ sound/soc/s3c24xx/s3c2443-ac97.c | 438 +++++++++++++++++++++++++++++++++++
+ sound/soc/s3c24xx/s3c24xx-ac97.h | 25 ++
+ sound/soc/s3c24xx/smdk2443_wm9710.c | 162 +++++++++++++
+ 5 files changed, 644 insertions(+), 1 deletions(-)
+ create mode 100644 sound/soc/s3c24xx/s3c2443-ac97.c
+ create mode 100644 sound/soc/s3c24xx/s3c24xx-ac97.h
+ create mode 100644 sound/soc/s3c24xx/smdk2443_wm9710.c
+
+diff --git a/sound/soc/s3c24xx/Kconfig b/sound/soc/s3c24xx/Kconfig
+index 2b4bd21..c41ac49 100644
+--- a/sound/soc/s3c24xx/Kconfig
++++ b/sound/soc/s3c24xx/Kconfig
+@@ -12,6 +12,12 @@ config SND_S3C24XX_SOC
+ config SND_S3C24XX_SOC_I2S
+ tristate
+
++config SND_S3C2443_SOC_AC97
++ tristate
++ select AC97_BUS
++ select SND_AC97_CODEC
++ select SND_SOC_AC97_BUS
++
+ config SND_S3C24XX_SOC_NEO1973_WM8753
+ tristate "SoC I2S Audio support for NEO1973 - WM8753"
+ depends on SND_S3C24XX_SOC && MACH_GTA01
+@@ -37,5 +43,14 @@ config SND_S3C24XX_SOC_SMDK2440_WM8956
+ Say Y if you want to add support for SoC audio on SMDK2440
+ with WM8956.
+
++config SND_S3C24XX_SOC_SMDK2443_WM9710
++ tristate "SoC I2S Audio support for SMDK2443 - WM9710"
++ depends on SND_S3C24XX_SOC && MACH_SMDK2443
++ select SND_S3C2443_SOC_AC97
++ select SND_SOC_AC97_CODEC
++ help
++ Say Y if you want to add support for SoC audio on smdk2443
++ with the WM9710.
++
+ endmenu
+
+diff --git a/sound/soc/s3c24xx/Makefile b/sound/soc/s3c24xx/Makefile
+index 2759e88..3594155 100644
+--- a/sound/soc/s3c24xx/Makefile
++++ b/sound/soc/s3c24xx/Makefile
+@@ -1,16 +1,19 @@
+ # S3c24XX Platform Support
+ snd-soc-s3c24xx-objs := s3c24xx-pcm.o
+ snd-soc-s3c24xx-i2s-objs := s3c24xx-i2s.o
++snd-soc-s3c2443-ac97-objs := s3c2443-ac97.o
+
+ obj-$(CONFIG_SND_S3C24XX_SOC) += snd-soc-s3c24xx.o
+ obj-$(CONFIG_SND_S3C24XX_SOC_I2S) += snd-soc-s3c24xx-i2s.o
++obj-$(CONFIG_SND_S3C2443_SOC_AC97) += snd-soc-s3c2443-ac97.o
+
+ # S3C24XX Machine Support
+ snd-soc-neo1973-wm8753-objs := neo1973_wm8753.o
+ snd-soc-smdk2440-objs := smdk2440.o
+ snd-soc-smdk2440-wm8956-objs := smdk2440-wm8956.o
++snd-soc-smdk2443-wm9710-objs := smdk2443_wm9710.o
+
+ obj-$(CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753) += snd-soc-neo1973-wm8753.o
+ obj-$(CONFIG_SND_S3C24XX_SOC_SMDK2440) += snd-soc-smdk2440.o
+ obj-$(CONFIG_SND_S3C24XX_SOC_SMDK2440_WM8956) += snd-soc-smdk2440-wm8956.o
+-
++obj-$(CONFIG_SND_S3C24XX_SOC_SMDK2443_WM9710) += snd-soc-smdk2443-wm9710.o
+diff --git a/sound/soc/s3c24xx/s3c2443-ac97.c b/sound/soc/s3c24xx/s3c2443-ac97.c
+new file mode 100644
+index 0000000..db5996b
+--- /dev/null
++++ b/sound/soc/s3c24xx/s3c2443-ac97.c
+@@ -0,0 +1,438 @@
++/*
++ * s3c24xx-i2s.c -- ALSA Soc Audio Layer
++ *
++ * (c) 2006 Wolfson Microelectronics PLC.
++ * Graeme Gregory graeme.gregory@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * Copyright (C) 2005, Sean Choi <sh428.choi@samsung.com>
++ * 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 version 2 as
++ * published by the Free Software Foundation.
++ *
++ * Revision history
++ * 21st Mar 2007 Initial Version
++ */
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/interrupt.h>
++#include <linux/wait.h>
++#include <linux/delay.h>
++#include <linux/clk.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/ac97_codec.h>
++#include <sound/initval.h>
++#include <sound/soc.h>
++
++#include <asm/hardware.h>
++#include <asm/io.h>
++#include <asm/arch/regs-ac97.h>
++#include <asm/arch/regs-gpio.h>
++#include <asm/arch/regs-clock.h>
++#include <asm/arch/audio.h>
++#include <asm/dma.h>
++#include <asm/arch/dma.h>
++
++#include "s3c24xx-pcm.h"
++#include "s3c24xx-ac97.h"
++
++#define S3C2443_I2S_DEBUG 1
++#if S3C2443_I2S_DEBUG
++#define DBG(x...) printk(KERN_DEBUG x)
++#else
++#define DBG(x...)
++#endif
++
++struct s3c24xx_ac97_info {
++ void __iomem *regs;
++ struct clk *ac97_clk;
++};
++static struct s3c24xx_ac97_info s3c24xx_ac97;
++
++static struct completion CAR_completion;
++static u32 waitingForMask;
++static DECLARE_MUTEX(CAR_mutex);
++
++static unsigned short s3c2443_ac97_read(struct snd_ac97 *ac97,
++ unsigned short reg)
++{
++ u32 ac_glbctrl;
++ u32 ac_codec_cmd;
++ u32 stat, addr, data;
++
++ DBG("Entered %s\n",__FUNCTION__);
++
++ down(&CAR_mutex);
++
++ // Initialise the completion used in ISR
++ init_completion(&CAR_completion);
++
++ waitingForMask = S3C_AC97_GLBSTAT_CODECREADY;
++ ac_codec_cmd = readl(s3c24xx_ac97.regs + S3C_AC97_CODEC_CMD);
++ ac_codec_cmd = S3C_AC97_CODEC_CMD_READ | AC_CMD_ADDR(reg);
++ writel(ac_codec_cmd, s3c24xx_ac97.regs + S3C_AC97_CODEC_CMD);
++
++ udelay(50);
++
++ ac_glbctrl = readl(s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ ac_glbctrl |= S3C_AC97_GLBCTRL_CODECREADYIE;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++
++ wait_for_completion(&CAR_completion);
++
++ stat = readl(s3c24xx_ac97.regs + S3C_AC97_STAT);
++ addr = (stat >> 16) & 0x7f;
++ data = (stat & 0xffff);
++
++ DBG("AC97 Read %x %x\n", addr, data);
++
++ if (addr != reg) {
++ printk("req addr = %02x, rep addr = %02x\n", reg, addr);
++ }
++
++ up(&CAR_mutex);
++
++ return (unsigned short)data;
++}
++
++static void s3c2443_ac97_write(struct snd_ac97 *ac97, unsigned short reg,
++ unsigned short val)
++{
++ u32 ac_glbctrl;
++ u32 ac_codec_cmd;
++
++ DBG("Entered %s\n",__FUNCTION__);
++
++ down(&CAR_mutex);
++
++ DBG("AC97 Write %x:%x\n", reg,val);
++
++ init_completion(&CAR_completion);
++
++ waitingForMask = S3C_AC97_GLBSTAT_CODECREADY;
++ ac_codec_cmd = readl(s3c24xx_ac97.regs + S3C_AC97_CODEC_CMD);
++ ac_codec_cmd = AC_CMD_ADDR(reg) | AC_CMD_DATA(val);
++ writel(ac_codec_cmd, s3c24xx_ac97.regs + S3C_AC97_CODEC_CMD);
++
++ udelay(50);
++
++ ac_glbctrl = readl(s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ ac_glbctrl |= S3C_AC97_GLBCTRL_CODECREADYIE;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++
++ wait_for_completion(&CAR_completion);
++
++ ac_codec_cmd = readl(s3c24xx_ac97.regs + S3C_AC97_CODEC_CMD);
++ ac_codec_cmd |= S3C_AC97_CODEC_CMD_READ;
++ writel(ac_codec_cmd, s3c24xx_ac97.regs + S3C_AC97_CODEC_CMD);
++
++ up(&CAR_mutex);
++
++}
++
++static void s3c2443_ac97_warm_reset(struct snd_ac97 *ac97)
++{
++ u32 ac_glbctrl;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ ac_glbctrl = readl(s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ ac_glbctrl = S3C_AC97_GLBCTRL_WARMRESET;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ udelay(1000);
++
++ ac_glbctrl = 0;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ udelay(1000);
++}
++
++static void s3c2443_ac97_cold_reset(struct snd_ac97 *ac97)
++{
++ u32 ac_glbctrl;
++
++ DBG("Entered %s\n", __FUNCTION__);
++
++ ac_glbctrl = readl(s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ ac_glbctrl = S3C_AC97_GLBCTRL_COLDRESET;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ udelay(1000);
++
++ ac_glbctrl = 0;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ udelay(1000);
++
++ ac_glbctrl = readl(s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ ac_glbctrl = S3C_AC97_GLBCTRL_ACLINKON;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ udelay(1000);
++
++ ac_glbctrl |= S3C_AC97_GLBCTRL_TRANSFERDATAENABLE;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ udelay(1000);
++
++ ac_glbctrl |= S3C_AC97_GLBCTRL_PCMOUTTM_DMA | S3C_AC97_GLBCTRL_PCMINTM_DMA |
++ S3C_AC97_GLBCTRL_MICINTM_DMA;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++
++}
++
++static irqreturn_t s3c2443_ac97_irq(int irq, void *dev_id)
++{
++ int gsr;
++ u32 ac_glbctrl;
++
++ gsr = readl(s3c24xx_ac97.regs + S3C_AC97_GLBSTAT) & waitingForMask;
++
++ if (gsr) {
++ ac_glbctrl = readl(s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ ac_glbctrl &= ~S3C_AC97_GLBCTRL_CODECREADYIE;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ complete(&CAR_completion);
++ }
++ return IRQ_HANDLED;
++}
++
++struct snd_ac97_bus_ops soc_ac97_ops = {
++ .read = s3c2443_ac97_read,
++ .write = s3c2443_ac97_write,
++ .warm_reset = s3c2443_ac97_warm_reset,
++ .reset = s3c2443_ac97_cold_reset,
++};
++
++static struct s3c2410_dma_client s3c2443_dma_client_out = {
++ .name = "AC97 PCM Stereo out"
++};
++
++static struct s3c2410_dma_client s3c2443_dma_client_in = {
++ .name = "AC97 PCM Stereo in"
++};
++
++static struct s3c2410_dma_client s3c2443_dma_client_micin = {
++ .name = "AC97 Mic Mono in"
++};
++
++static struct s3c24xx_pcm_dma_params s3c2443_ac97_pcm_stereo_out = {
++ .client = &s3c2443_dma_client_out,
++ .channel = DMACH_PCM_OUT,
++ .dma_addr = S3C2440_PA_AC97 + S3C_AC97_PCM_DATA,
++ .dma_size = 4,
++};
++
++static struct s3c24xx_pcm_dma_params s3c2443_ac97_pcm_stereo_in = {
++ .client = &s3c2443_dma_client_in,
++ .channel = DMACH_PCM_IN,
++ .dma_addr = S3C2440_PA_AC97 + S3C_AC97_PCM_DATA,
++ .dma_size = 4,
++};
++
++static struct s3c24xx_pcm_dma_params s3c2443_ac97_mic_mono_in = {
++ .client = &s3c2443_dma_client_micin,
++ .channel = DMACH_MIC_IN,
++ .dma_addr = S3C2440_PA_AC97 + S3C_AC97_MIC_DATA,
++ .dma_size = 4,
++};
++
++#ifdef CONFIG_PM
++static int s3c2443_ac97_suspend(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++
++ return 0;
++}
++
++static int s3c2443_ac97_resume(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ return 0;
++}
++
++#else
++#define s3c2443_ac97_suspend NULL
++#define s3c2443_ac97_resume NULL
++#endif
++
++static int s3c2443_ac97_probe(struct platform_device *pdev)
++{
++ int ret;
++ u32 ac_glbctrl;
++
++ s3c24xx_ac97.regs = ioremap(S3C2440_PA_AC97, 0x100);
++ if (s3c24xx_ac97.regs == NULL)
++ return -ENXIO;
++
++ s3c24xx_ac97.ac97_clk=clk_get(&pdev->dev, "ac97");
++ if (s3c24xx_ac97.ac97_clk == NULL) {
++ DBG("failed to get ac97_clock\n");
++ return -ENODEV;
++ }
++ clk_enable(s3c24xx_ac97.ac97_clk);
++
++ s3c2410_gpio_cfgpin(S3C2410_GPE0, S3C2443_GPE0_AC_nRESET);
++ s3c2410_gpio_cfgpin(S3C2410_GPE1, S3C2443_GPE1_AC_SYNC);
++ s3c2410_gpio_cfgpin(S3C2410_GPE2, S3C2443_GPE2_AC_BITCLK);
++ s3c2410_gpio_cfgpin(S3C2410_GPE3, S3C2443_GPE3_AC_SDI);
++ s3c2410_gpio_cfgpin(S3C2410_GPE4, S3C2443_GPE4_AC_SDO);
++
++ ac_glbctrl = readl(s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ ac_glbctrl = S3C_AC97_GLBCTRL_COLDRESET;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ udelay(1000);
++
++ ac_glbctrl = 0;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ udelay(1000);
++
++ ac_glbctrl = readl(s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ ac_glbctrl = S3C_AC97_GLBCTRL_ACLINKON;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ udelay(1000);
++
++ ac_glbctrl |= S3C_AC97_GLBCTRL_TRANSFERDATAENABLE;
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++
++ ret = request_irq(IRQ_S3C2443_AC97, s3c2443_ac97_irq, SA_INTERRUPT, "AC97", NULL);
++ if (ret)
++ printk("Interrupt request failed.\n");
++
++ return ret;
++}
++
++static void s3c2443_ac97_remove(struct platform_device *pdev)
++{
++
++}
++
++static int s3c2443_ac97_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_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ cpu_dai->dma_data = &s3c2443_ac97_pcm_stereo_out;
++ else
++ cpu_dai->dma_data = &s3c2443_ac97_pcm_stereo_in;
++
++ return 0;
++}
++
++static int s3c2443_ac97_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ u32 ac_glbctrl;
++
++ ac_glbctrl = readl(s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ switch(cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ case SNDRV_PCM_TRIGGER_RESUME:
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
++ ac_glbctrl |= S3C_AC97_GLBCTRL_PCMINTM_DMA;
++ else
++ ac_glbctrl |= S3C_AC97_GLBCTRL_PCMOUTTM_DMA;
++ break;
++ case SNDRV_PCM_TRIGGER_STOP:
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
++ ac_glbctrl &= ~S3C_AC97_GLBCTRL_PCMINTM_MASK;
++ else
++ ac_glbctrl &= ~S3C_AC97_GLBCTRL_PCMOUTTM_MASK;
++ break;
++ }
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++
++ return 0;
++}
++
++static int s3c2443_ac97_hw_mic_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ return -ENODEV;
++ else
++ cpu_dai->dma_data = &s3c2443_ac97_mic_mono_in;
++
++ return 0;
++}
++
++static int s3c2443_ac97_mic_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ u32 ac_glbctrl;
++
++ ac_glbctrl = readl(s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++ switch(cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ case SNDRV_PCM_TRIGGER_RESUME:
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ ac_glbctrl |= S3C_AC97_GLBCTRL_PCMINTM_DMA;
++ break;
++ case SNDRV_PCM_TRIGGER_STOP:
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ ac_glbctrl &= ~S3C_AC97_GLBCTRL_PCMINTM_MASK;
++ }
++ writel(ac_glbctrl, s3c24xx_ac97.regs + S3C_AC97_GLBCTRL);
++
++ return 0;
++}
++
++#define s3c2443_AC97_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |\
++ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | \
++ SNDRV_PCM_RATE_48000)
++
++struct snd_soc_cpu_dai s3c2443_ac97_dai[] = {
++{
++ .name = "s3c2443-ac97",
++ .id = 0,
++ .type = SND_SOC_DAI_AC97,
++ .probe = s3c2443_ac97_probe,
++ .remove = s3c2443_ac97_remove,
++ .suspend = s3c2443_ac97_suspend,
++ .resume = s3c2443_ac97_resume,
++ .playback = {
++ .stream_name = "AC97 Playback",
++ .channels_min = 2,
++ .channels_max = 2,
++ .rates = s3c2443_AC97_RATES,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,},
++ .capture = {
++ .stream_name = "AC97 Capture",
++ .channels_min = 2,
++ .channels_max = 2,
++ .rates = s3c2443_AC97_RATES,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,},
++ .ops = {
++ .hw_params = s3c2443_ac97_hw_params,
++ .trigger = s3c2443_ac97_trigger},
++},
++{
++ .name = "pxa2xx-ac97-mic",
++ .id = 1,
++ .type = SND_SOC_DAI_AC97,
++ .capture = {
++ .stream_name = "AC97 Mic Capture",
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = s3c2443_AC97_RATES,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,},
++ .ops = {
++ .hw_params = s3c2443_ac97_hw_mic_params,
++ .trigger = s3c2443_ac97_mic_trigger,},
++},
++};
++
++EXPORT_SYMBOL_GPL(s3c2443_ac97_dai);
++EXPORT_SYMBOL_GPL(soc_ac97_ops);
++
++MODULE_AUTHOR("Graeme Gregory");
++MODULE_DESCRIPTION("AC97 driver for the Samsung s3c2443 chip");
++MODULE_LICENSE("GPL");
+diff --git a/sound/soc/s3c24xx/s3c24xx-ac97.h b/sound/soc/s3c24xx/s3c24xx-ac97.h
+new file mode 100644
+index 0000000..afddff0
+--- /dev/null
++++ b/sound/soc/s3c24xx/s3c24xx-ac97.h
+@@ -0,0 +1,25 @@
++/*
++ * s3c24xx-i2s.c -- ALSA Soc Audio Layer
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Graeme Gregory
++ * graeme.gregory@wolfsonmicro.com or 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
++ * 10th Nov 2006 Initial version.
++ */
++
++#ifndef S3C24XXAC97_H_
++#define S3C24XXAC97_H_
++
++#define AC_CMD_ADDR(x) (x<<16)
++#define AC_CMD_DATA(x) (x&0xffff)
++
++extern struct snd_soc_cpu_dai s3c2443_ac97_dai[];
++
++#endif /*S3C24XXI2S_H_*/
+diff --git a/sound/soc/s3c24xx/smdk2443_wm9710.c b/sound/soc/s3c24xx/smdk2443_wm9710.c
+new file mode 100644
+index 0000000..66c13cf
+--- /dev/null
++++ b/sound/soc/s3c24xx/smdk2443_wm9710.c
+@@ -0,0 +1,162 @@
++/*
++ * smdk2443_wm9710.c -- SoC audio for smdk2443
++ *
++ * Copyright 2007 Wolfson Microelectronics PLC.
++ * Author: Graeme Gregory
++ * graeme.gregory@wolfsonmicro.com or 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
++ * 8th Mar 2007 Initial version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/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 "../codecs/ac97.h"
++#include "s3c24xx-pcm.h"
++#include "s3c24xx-ac97.h"
++
++#define SMDK2443_DEBUG 1
++#if SMDK2443_DEBUG
++#define DBG(x...) printk(KERN_DEBUG x)
++#else
++#define DBG(x...)
++#endif
++
++static struct snd_soc_machine smdk2443;
++
++static int smdk2443_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ return 0;
++}
++
++static int smdk2443_resume(struct platform_device *pdev)
++{
++ return 0;
++}
++
++static int smdk2443_probe(struct platform_device *pdev)
++{
++ return 0;
++}
++
++static int smdk2443_remove(struct platform_device *pdev)
++{
++ return 0;
++}
++
++static const struct snd_soc_dapm_widget smdk2443_dapm_widgets[] = {
++ SND_SOC_DAPM_MIC("Mic (Internal)", NULL),
++};
++
++/* example machine interconnections */
++static const char* intercon[][3] = {
++
++ /* mic is connected to mic1 - with bias */
++ {"MIC1", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Mic (Internal)"},
++
++ {NULL, NULL, NULL},
++};
++
++static int smdk2443_wm9710_init(struct snd_soc_codec *codec)
++{
++ int i;
++
++ /* set up smdk2443 NC codec pins */
++ snd_soc_dapm_set_endpoint(codec, "RXP", 0);
++ snd_soc_dapm_set_endpoint(codec, "RXN", 0);
++
++ /* Add smdk2443 specific widgets */
++ for(i = 0; i < ARRAY_SIZE(smdk2443_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &smdk2443_dapm_widgets[i]);
++ }
++
++ /* set up smdk2443 specific audio path interconnects */
++ for(i = 0; intercon[i][0] != NULL; i++) {
++ snd_soc_dapm_connect_input(codec, intercon[i][0], intercon[i][1], intercon[i][2]);
++ }
++
++ snd_soc_dapm_sync_endpoints(codec);
++ return 0;
++}
++
++static struct snd_soc_dai_link smdk2443_dai[] = {
++{
++ .name = "AC97",
++ .stream_name = "AC97 HiFi",
++ .cpu_dai = &s3c2443_ac97_dai[0],
++ .codec_dai = &ac97_dai,
++ .init = smdk2443_wm9710_init,
++},
++};
++
++static struct snd_soc_machine smdk2443 = {
++ .name = "SMDK2443",
++ .probe = smdk2443_probe,
++ .remove = smdk2443_remove,
++ .suspend_pre = smdk2443_suspend,
++ .resume_post = smdk2443_resume,
++ .dai_link = smdk2443_dai,
++ .num_links = ARRAY_SIZE(smdk2443_dai),
++};
++
++static struct snd_soc_device smdk2443_snd_ac97_devdata = {
++ .machine = &smdk2443,
++ .platform = &s3c24xx_soc_platform,
++ .codec_dev = &soc_codec_dev_ac97,
++};
++
++static struct platform_device *smdk2443_snd_ac97_device;
++
++static int __init smdk2443_init(void)
++{
++ int ret;
++
++ smdk2443_snd_ac97_device = platform_device_alloc("soc-audio", -1);
++ if (!smdk2443_snd_ac97_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(smdk2443_snd_ac97_device, &smdk2443_snd_ac97_devdata);
++ smdk2443_snd_ac97_devdata.dev = &smdk2443_snd_ac97_device->dev;
++
++ if((ret = platform_device_add(smdk2443_snd_ac97_device)) != 0)
++ platform_device_put(smdk2443_snd_ac97_device);
++
++ return ret;
++}
++
++static void __exit smdk2443_exit(void)
++{
++ platform_device_unregister(smdk2443_snd_ac97_device);
++}
++
++module_init(smdk2443_init);
++module_exit(smdk2443_exit);
++
++/* Module information */
++MODULE_AUTHOR("Graeme Gregory, graeme.gregory@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("ALSA SoC WM9710 SMDK2443");
++MODULE_LICENSE("GPL");
+--
+1.5.0.3
+
diff --git a/packages/linux/linux-smdk2443/asoc-mainline.patch b/packages/linux/linux-smdk2443/asoc-mainline.patch
new file mode 100644
index 0000000000..82018af24f
--- /dev/null
+++ b/packages/linux/linux-smdk2443/asoc-mainline.patch
@@ -0,0 +1,142 @@
+Index: git/arch/arm/mach-s3c2443/mach-smdk2443.c
+===================================================================
+--- git.orig/arch/arm/mach-s3c2443/mach-smdk2443.c 2007-03-27 13:25:05.000000000 +0100
++++ git/arch/arm/mach-s3c2443/mach-smdk2443.c 2007-03-27 13:44:19.000000000 +0100
+@@ -69,6 +69,11 @@
+ .pfn = __phys_to_pfn(S3C2410_CS2 + (1<<24)),
+ .length = SZ_4M,
+ .type = MT_DEVICE,
++ }, {
++ .virtual = (u32)S3C2410_ADDR(0x02000000) ,
++ .pfn = __phys_to_pfn(0x09000000),
++ .length = SZ_1M,
++ .type = MT_DEVICE,
+ }
+ };
+
+Index: git/drivers/net/cs89x0.c
+===================================================================
+--- git.orig/drivers/net/cs89x0.c 2007-03-27 13:25:08.000000000 +0100
++++ git/drivers/net/cs89x0.c 2007-03-27 13:44:19.000000000 +0100
+@@ -187,6 +187,10 @@
+ #include <asm/irq.h>
+ static unsigned int netcard_portlist[] __initdata = {IXDP2X01_CS8900_VIRT_BASE, 0};
+ static unsigned int cs8900_irq_map[] = {IRQ_IXDP2X01_CS8900, 0, 0, 0};
++#elif defined(CONFIG_ARCH_S3C2440)
++static unsigned int netcard_portlist[] __initdata = {S3C2410_ADDR(0x02000000) + 0x300 , 0};
++static unsigned int cs8900_irq_map[] = {IRQ_EINT13, 0, 0, 0};
++static unsigned char cs8900_mac[] = {0xDE,0xAD,0xBE,0xEF,0x01,0x02};
+ #elif defined(CONFIG_ARCH_PNX010X)
+ #include <asm/irq.h>
+ #include <asm/arch/gpio.h>
+@@ -719,6 +723,14 @@
+
+ printk( "[Cirrus EEPROM] ");
+ }
++#if defined(CONFIG_ARCH_S3C2440)
++ else
++ {
++ for (i=0; i < ETH_ALEN; i++) {
++ dev->dev_addr[i] = cs8900_mac[i];
++ }
++ }
++#endif
+
+ printk("\n");
+
+@@ -802,7 +814,7 @@
+ } else {
+ i = lp->isa_config & INT_NO_MASK;
+ if (lp->chip_type == CS8900) {
+-#if defined(CONFIG_MACH_IXDP2351) || defined(CONFIG_ARCH_IXDP2X01) || defined(CONFIG_ARCH_PNX010X)
++#if defined(CONFIG_MACH_IXDP2351) || defined(CONFIG_ARCH_IXDP2X01) || defined(CONFIG_ARCH_PNX010X) || defined(CONFIG_ARCH_S3C2410)
+ i = cs8900_irq_map[0];
+ #else
+ /* Translate the IRQ using the IRQ mapping table. */
+@@ -1309,7 +1321,7 @@
+ else
+ #endif
+ {
+-#if !defined(CONFIG_MACH_IXDP2351) && !defined(CONFIG_ARCH_IXDP2X01) && !defined(CONFIG_ARCH_PNX010X)
++#if !defined(CONFIG_MACH_IXDP2351) && !defined(CONFIG_ARCH_IXDP2X01) && !defined(CONFIG_ARCH_PNX010X) && !defined(CONFIG_ARCH_S3C2410)
+ if (((1 << dev->irq) & lp->irq_map) == 0) {
+ printk(KERN_ERR "%s: IRQ %d is not in our map of allowable IRQs, which is %x\n",
+ dev->name, dev->irq, lp->irq_map);
+@@ -1324,7 +1336,11 @@
+ writereg(dev, PP_BusCTL, ENABLE_IRQ | MEMORY_ON);
+ #endif
+ write_irq(dev, lp->chip_type, dev->irq);
++#if !defined(CONFIG_ARCH_S3C2440)
+ ret = request_irq(dev->irq, &net_interrupt, 0, dev->name, dev);
++#else
++ ret = request_irq(dev->irq, &net_interrupt, IRQF_DISABLED | IRQF_TRIGGER_HIGH, dev->name, dev);
++#endif
+ if (ret) {
+ if (net_debug)
+ printk(KERN_DEBUG "cs89x0: request_irq(%d) failed\n", dev->irq);
+Index: git/include/asm-arm/arch-s3c2410/regs-ac97.h
+===================================================================
+--- git.orig/include/asm-arm/arch-s3c2410/regs-ac97.h 2007-03-27 13:25:14.000000000 +0100
++++ git/include/asm-arm/arch-s3c2410/regs-ac97.h 2007-03-27 13:44:19.000000000 +0100
+@@ -13,11 +13,55 @@
+ #ifndef __ASM_ARCH_REGS_AC97_H
+ #define __ASM_ARCH_REGS_AC97_H __FILE__
+
+-#define S3C_AC97_GLBCTRL (0x00)
+-#define S3C_AC97_GLBSTAT (0x04)
+-#define S3C_AC97_CODEC_CMD (0x08)
+-#define S3C_AC97_PCM_ADDR (0x10)
+-#define S3C_AC97_PCM_DATA (0x18)
+-#define S3C_AC97_MIC_DATA (0x1C)
++#define S3C_AC97_GLBCTRL (0x00)
++
++#define S3C_AC97_GLBCTRL_CODECREADYIE (1<<22)
++#define S3C_AC97_GLBCTRL_PCMOUTURIE (1<<21)
++#define S3C_AC97_GLBCTRL_PCMINORIE (1<<20)
++#define S3C_AC97_GLBCTRL_MICINORIE (1<<19)
++#define S3C_AC97_GLBCTRL_PCMOUTTIE (1<<18)
++#define S3C_AC97_GLBCTRL_PCMINTIE (1<<17)
++#define S3C_AC97_GLBCTRL_MICINTIE (1<<16)
++#define S3C_AC97_GLBCTRL_PCMOUTTM_OFF (0<<12)
++#define S3C_AC97_GLBCTRL_PCMOUTTM_PIO (1<<12)
++#define S3C_AC97_GLBCTRL_PCMOUTTM_DMA (2<<12)
++#define S3C_AC97_GLBCTRL_PCMOUTTM_MASK (3<<12)
++#define S3C_AC97_GLBCTRL_PCMINTM_OFF (0<<10)
++#define S3C_AC97_GLBCTRL_PCMINTM_PIO (1<<10)
++#define S3C_AC97_GLBCTRL_PCMINTM_DMA (2<<10)
++#define S3C_AC97_GLBCTRL_PCMINTM_MASK (3<<10)
++#define S3C_AC97_GLBCTRL_MICINTM_OFF (0<<8)
++#define S3C_AC97_GLBCTRL_MICINTM_PIO (1<<8)
++#define S3C_AC97_GLBCTRL_MICINTM_DMA (2<<8)
++#define S3C_AC97_GLBCTRL_MICINTM_MASK (3<<8)
++#define S3C_AC97_GLBCTRL_TRANSFERDATAENABLE (1<<3)
++#define S3C_AC97_GLBCTRL_ACLINKON (1<<2)
++#define S3C_AC97_GLBCTRL_WARMRESET (1<<1)
++#define S3C_AC97_GLBCTRL_COLDRESET (1<<0)
++
++#define S3C_AC97_GLBSTAT (0x04)
++
++#define S3C_AC97_GLBSTAT_CODECREADY (1<<22)
++#define S3C_AC97_GLBSTAT_PCMOUTUR (1<<21)
++#define S3C_AC97_GLBSTAT_PCMINORI (1<<20)
++#define S3C_AC97_GLBSTAT_MICINORI (1<<19)
++#define S3C_AC97_GLBSTAT_PCMOUTTI (1<<18)
++#define S3C_AC97_GLBSTAT_PCMINTI (1<<17)
++#define S3C_AC97_GLBSTAT_MICINTI (1<<16)
++#define S3C_AC97_GLBSTAT_MAINSTATE_IDLE (0<<0)
++#define S3C_AC97_GLBSTAT_MAINSTATE_INIT (1<<0)
++#define S3C_AC97_GLBSTAT_MAINSTATE_READY (2<<0)
++#define S3C_AC97_GLBSTAT_MAINSTATE_ACTIVE (3<<0)
++#define S3C_AC97_GLBSTAT_MAINSTATE_LP (4<<0)
++#define S3C_AC97_GLBSTAT_MAINSTATE_WARM (5<<0)
++
++#define S3C_AC97_CODEC_CMD (0x08)
++
++#define S3C_AC97_CODEC_CMD_READ (1<<23)
++
++#define S3C_AC97_STAT (0x0c)
++#define S3C_AC97_PCM_ADDR (0x10)
++#define S3C_AC97_PCM_DATA (0x18)
++#define S3C_AC97_MIC_DATA (0x1C)
+
+ #endif /* __ASM_ARCH_REGS_AC97_H */
diff --git a/packages/linux/linux-smdk2443/defconfig-smdk2443 b/packages/linux/linux-smdk2443/defconfig-smdk2443
new file mode 100644
index 0000000000..e8aea8c586
--- /dev/null
+++ b/packages/linux/linux-smdk2443/defconfig-smdk2443
@@ -0,0 +1,1480 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21-rc2
+# Tue Mar 13 10:50:46 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+# CONFIG_GENERIC_TIME is not set
+CONFIG_MMU=y
+CONFIG_NO_IOPORT=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_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_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+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 is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+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_ALL is not set
+# 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_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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 is not set
+# 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=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"
+
+#
+# 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 is not set
+# 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=y
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_PLAT_S3C24XX=y
+CONFIG_CPU_S3C244X=y
+CONFIG_PM_SIMTEC=y
+# CONFIG_S3C2410_BOOT_WATCHDOG is not set
+# CONFIG_S3C2410_BOOT_ERROR_RESET is not set
+# CONFIG_S3C2410_PM_DEBUG is not set
+# CONFIG_S3C2410_PM_CHECK is not set
+CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
+CONFIG_S3C2410_DMA=y
+CONFIG_S3C2410_DMA_DEBUG=n
+CONFIG_MACH_SMDK=y
+
+#
+# S3C2400 Machines
+#
+CONFIG_CPU_S3C2410=y
+CONFIG_CPU_S3C2410_DMA=y
+CONFIG_S3C2410_PM=y
+CONFIG_S3C2410_GPIO=y
+CONFIG_S3C2410_CLOCK=y
+
+#
+# S3C2410 Machines
+#
+CONFIG_ARCH_SMDK2410=y
+CONFIG_ARCH_H1940=y
+CONFIG_PM_H1940=y
+CONFIG_MACH_N30=y
+CONFIG_ARCH_BAST=y
+CONFIG_MACH_OTOM=y
+# CONFIG_MACH_AML_M5900 is not set
+CONFIG_BAST_PC104_IRQ=y
+CONFIG_MACH_VR1000=y
+# CONFIG_MACH_QT2410 is not set
+CONFIG_CPU_S3C2412=y
+CONFIG_S3C2412_DMA=y
+CONFIG_S3C2412_PM=y
+
+#
+# S3C2412 Machines
+#
+CONFIG_MACH_SMDK2413=y
+CONFIG_MACH_S3C2413=y
+# CONFIG_MACH_VSTMS is not set
+CONFIG_CPU_S3C2440=y
+CONFIG_S3C2440_DMA=y
+
+#
+# S3C2440 Machines
+#
+CONFIG_MACH_ANUBIS=y
+CONFIG_MACH_OSIRIS=y
+CONFIG_MACH_RX3715=y
+CONFIG_ARCH_S3C2440=y
+CONFIG_MACH_NEXCODER_2440=y
+CONFIG_SMDK2440_CPU2440=y
+CONFIG_CPU_S3C2442=y
+
+#
+# S3C2442 Machines
+#
+CONFIG_SMDK2440_CPU2442=y
+CONFIG_CPU_S3C2443=y
+CONFIG_S3C2443_DMA=y
+
+#
+# S3C2443 Machines
+#
+CONFIG_MACH_SMDK2443=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v4T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_V4WT=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_ISA=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=200
+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 ip=auto cs89x0_media=rj45 rw console=ttySAC0,115200"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC 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=y
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+# CONFIG_APM_EMULATION is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+# CONFIG_PACKET 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=y
+# 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 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
+
+#
+# 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_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 is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# 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 is not set
+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=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=y
+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=y
+# 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=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS 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_IMPA7 is not set
+CONFIG_MTD_BAST=y
+CONFIG_MTD_BAST_MAXSIZE=4
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD 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=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_S3C2410=y
+# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
+# CONFIG_MTD_NAND_S3C2410_HWECC is not set
+# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=y
+# CONFIG_PARPORT_PC is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_AX88796 is not set
+CONFIG_PARPORT_1284=y
+
+#
+# Plug and Play support
+#
+# CONFIG_PNP is not set
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+CONFIG_ATA_OVER_ETH=m
+
+#
+# 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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECD=y
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_BLK_DEV_IDEFLOPPY=m
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDE_BAST=y
+# 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 is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# 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_NET_VENDOR_3COM is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_NET_VENDOR_RACAL 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_AC3200 is not set
+# CONFIG_APRICOT is not set
+CONFIG_CS89x0=y
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# 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_PLIP is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS 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=y
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=y
+# 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_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_GPIO 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=y
+# CONFIG_TOUCHSCREEN_ADS7846 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_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_PARKBD 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_VT_HW_CONSOLE_BINDING 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_SYNCLINKMP is not set
+# CONFIG_N_HDLC is not set
+# 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_NR_UARTS=8
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+# CONFIG_SERIAL_8250_FOURPORT is not set
+# CONFIG_SERIAL_8250_ACCENT is not set
+# CONFIG_SERIAL_8250_BOCA is not set
+# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_RSA is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_S3C2410=y
+CONFIG_SERIAL_S3C2410_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_PRINTER=y
+# CONFIG_LP_CONSOLE is not set
+CONFIG_PPDEV=y
+# CONFIG_TIPAR 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_S3C2410_WATCHDOG=y
+
+#
+# ISA-based Watchdog Cards
+#
+# CONFIG_PCWATCHDOG is not set
+# CONFIG_MIXCOMWD is not set
+# CONFIG_WDT is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 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=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ELEKTOR is not set
+CONFIG_I2C_ISA=m
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+CONFIG_I2C_S3C2410=y
+# CONFIG_I2C_STUB 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=m
+# CONFIG_SENSORS_PCF8574 is not set
+# 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=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+# CONFIG_SPI_BUTTERFLY is not set
+# CONFIG_SPI_S3C24XX is not set
+CONFIG_SPI_S3C24XX_GPIO=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+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_LM70 is not set
+CONFIG_SENSORS_LM75=m
+# CONFIG_SENSORS_LM77 is not set
+CONFIG_SENSORS_LM78=m
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+CONFIG_SENSORS_LM85=m
+# 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_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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
+
+#
+# Misc devices
+#
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=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
+
+#
+# Frambuffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_S3C2410=y
+# CONFIG_FB_S3C2410_DEBUG is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+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=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=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=y
+CONFIG_SND_DEBUG=y
+CONFIG_SND_DEBUG_DETECT=y
+# CONFIG_SND_PCM_XRUN_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_MTS64 is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+# CONFIG_SND_PORTMAN2X4 is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC_AC97_BUS=y
+CONFIG_SND_SOC=m
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+
+#
+# SoC Audio for the Samsung S3C24XX
+#
+CONFIG_SND_S3C24XX_SOC=m
+CONFIG_SND_S3C2443_SOC_AC97=m
+# CONFIG_SND_S3C24XX_SOC_SMDK2440 is not set
+# CONFIG_SND_S3C24XX_SOC_SMDK2440_WM8956 is not set
+CONFIG_SND_S3C24XX_SOC_SMDK2443_WM9710=m
+
+#
+# SoC Audio for the Freescale i.MX
+#
+CONFIG_SND_SOC_AC97_CODEC=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# 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 is not set
+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_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# 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_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_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=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_TOUCHSCREEN 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
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 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_USB_MON=y
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# 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 is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS 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_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 is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=y
+CONFIG_INOTIFY=y
+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_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 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_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
+# 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=y
+# CONFIG_MINIX_SUBPARTITION is not set
+CONFIG_SOLARIS_X86_PARTITION=y
+# 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=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# 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 is not set
+# 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=y
+# 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_LOG_BUF_SHIFT=16
+CONFIG_DETECT_SOFTLOCKUP=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=y
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_ERRORS is not set
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+CONFIG_DEBUG_S3C2410_PORT=y
+CONFIG_DEBUG_S3C2410_UART=0
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
diff --git a/packages/linux/linux-smdk2443_2.6.20+git.bb b/packages/linux/linux-smdk2443_2.6.20+git.bb
new file mode 100644
index 0000000000..b97ebd7327
--- /dev/null
+++ b/packages/linux/linux-smdk2443_2.6.20+git.bb
@@ -0,0 +1,52 @@
+DESCRIPTION = "Linux Kernel for smdk2443 compatible machines"
+SECTION = "kernel"
+LICENSE = "GPL"
+DEPENDS += "u-boot-mkimage-gta01-native"
+
+PR = "r1"
+
+GGSRC = "http://www.xora.org.uk/oe/patches/"
+
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=v2.6.21-rc5 \
+ file://0020-Add-ASoC-S3C24xx-platform-support.patch;patch=1 \
+ file://0021-Add-Neo1973-ASoC-support.patch;patch=1 \
+ file://0022-Add-initial-ASoC-SMDK2440-support.patch;patch=1 \
+ file://0023-Add-ASoC-SMDK2440-support-for-WM8956-codec.patch;patch=1 \
+ file://0034-Export-ac97_dai.patch;patch=1 \
+ file://0036-Move-s3c24xx_i2s_dai-and-add-dma_size.patch;patch=1 \
+ file://0037-Use-dma_size-parameter-and-fix-buffdone-oops.patch;patch=1 \
+ file://0038-Add-smdk2443-s3c2443-ac97-and-wm9710-support.patch;patch=1 \
+ file://asoc-mainline.patch;patch=1 \
+ file://defconfig-smdk2443"
+
+S = "${WORKDIR}/git"
+
+inherit kernel
+
+COMPATIBLE_HOST = "arm.*-linux"
+COMPATIBLE_MACHINE = "smdk2443"
+KERNEL_IMAGETYPE = "zImage"
+
+do_configure() {
+ install ${WORKDIR}/defconfig-smdk2443 ${S}/.config
+ oe_runmake oldconfig
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
+ rm -f ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin
+ ln -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
+ ${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin
+ rm -f linux.bin.gz
+ gzip -9 linux.bin
+ uboot-mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "smdk2443 kernel" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${MACHINE}-${DATETIME}.bin
+ rm -f linux.bin.gz
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_package after do_install
+
+KERNEL_RELEASE = "2.6.21-rc5"
diff --git a/packages/linux/linux-titan-sh4-2.6.17/titan-config b/packages/linux/linux-titan-sh4-2.6.17/titan-config
deleted file mode 100644
index c7a0fc9b8e..0000000000
--- a/packages/linux/linux-titan-sh4-2.6.17/titan-config
+++ /dev/null
@@ -1,1551 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Thu Jul 6 12:42:07 2006
-#
-CONFIG_SUPERH=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_CALIBRATE_DELAY=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 is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-# CONFIG_EMBEDDED is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# 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_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-CONFIG_OBSOLETE_INTERMODULE=m
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-# 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=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"
-
-#
-# System type
-#
-# CONFIG_SH_SOLUTION_ENGINE is not set
-# CONFIG_SH_7751_SOLUTION_ENGINE is not set
-# CONFIG_SH_7300_SOLUTION_ENGINE is not set
-# CONFIG_SH_73180_SOLUTION_ENGINE is not set
-# CONFIG_SH_7751_SYSTEMH is not set
-# CONFIG_SH_STB1_HARP is not set
-# CONFIG_SH_STB1_OVERDRIVE is not set
-# CONFIG_SH_HP6XX is not set
-# CONFIG_SH_CQREEK is not set
-# CONFIG_SH_DMIDA is not set
-# CONFIG_SH_EC3104 is not set
-# CONFIG_SH_SATURN is not set
-# CONFIG_SH_DREAMCAST is not set
-# CONFIG_SH_CAT68701 is not set
-# CONFIG_SH_BIGSUR is not set
-# CONFIG_SH_SH2000 is not set
-# CONFIG_SH_ADX is not set
-# CONFIG_SH_MPC1211 is not set
-# CONFIG_SH_SH03 is not set
-# CONFIG_SH_SECUREEDGE5410 is not set
-# CONFIG_SH_HS7751RVOIP is not set
-# CONFIG_SH_RTS7751R2D is not set
-# CONFIG_SH_R7780RP is not set
-# CONFIG_SH_EDOSK7705 is not set
-# CONFIG_SH_SH4202_MICRODEV is not set
-# CONFIG_SH_LANDISK is not set
-CONFIG_SH_TITAN=y
-# CONFIG_SH_UNKNOWN is not set
-
-#
-# Processor selection
-#
-CONFIG_CPU_SH4=y
-
-#
-# SH-2 Processor Support
-#
-# CONFIG_CPU_SUBTYPE_SH7604 is not set
-
-#
-# SH-3 Processor Support
-#
-# CONFIG_CPU_SUBTYPE_SH7300 is not set
-# CONFIG_CPU_SUBTYPE_SH7705 is not set
-# CONFIG_CPU_SUBTYPE_SH7707 is not set
-# CONFIG_CPU_SUBTYPE_SH7708 is not set
-# CONFIG_CPU_SUBTYPE_SH7709 is not set
-
-#
-# SH-4 Processor Support
-#
-# CONFIG_CPU_SUBTYPE_SH7750 is not set
-# CONFIG_CPU_SUBTYPE_SH7091 is not set
-# CONFIG_CPU_SUBTYPE_SH7750R is not set
-# CONFIG_CPU_SUBTYPE_SH7750S is not set
-CONFIG_CPU_SUBTYPE_SH7751=y
-CONFIG_CPU_SUBTYPE_SH7751R=y
-# CONFIG_CPU_SUBTYPE_SH7760 is not set
-# CONFIG_CPU_SUBTYPE_SH4_202 is not set
-
-#
-# ST40 Processor Support
-#
-# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
-# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
-
-#
-# SH-4A Processor Support
-#
-# CONFIG_CPU_SUBTYPE_SH73180 is not set
-# CONFIG_CPU_SUBTYPE_SH7770 is not set
-# CONFIG_CPU_SUBTYPE_SH7780 is not set
-
-#
-# Memory management options
-#
-CONFIG_MMU=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 is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4
-
-#
-# Cache configuration
-#
-# CONFIG_SH_DIRECT_MAPPED is not set
-# CONFIG_SH_WRITETHROUGH is not set
-# CONFIG_SH_OCRAM is not set
-CONFIG_MEMORY_START=0x08030000
-CONFIG_MEMORY_SIZE=0x7fd0000
-
-#
-# Processor features
-#
-CONFIG_CPU_LITTLE_ENDIAN=y
-CONFIG_SH_RTC=y
-CONFIG_SH_FPU=y
-# CONFIG_SH_STORE_QUEUES is not set
-CONFIG_CPU_HAS_INTEVT=y
-CONFIG_CPU_HAS_SR_RB=y
-
-#
-# Timer support
-#
-CONFIG_SH_TMU=y
-CONFIG_SH_PCLK_FREQ=30000000
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# DMA support
-#
-CONFIG_SH_DMA=y
-CONFIG_NR_ONCHIP_DMA_CHANNELS=8
-# CONFIG_NR_DMA_CHANNELS_BOOL is not set
-
-#
-# Companion Chips
-#
-# CONFIG_HD6446X_SERIES is not set
-
-#
-# Kernel features
-#
-# CONFIG_KEXEC is not set
-# CONFIG_PREEMPT is not set
-# CONFIG_SMP is not set
-
-#
-# Boot options
-#
-CONFIG_ZERO_PAGE_OFFSET=0x00001000
-CONFIG_BOOT_LINK_OFFSET=0x009e0000
-# CONFIG_UBC_WAKEUP is not set
-CONFIG_CMDLINE_BOOL=y
-CONFIG_CMDLINE="console=ttySC1,38400N81 root=/dev/sm0p2"
-
-#
-# Bus options
-#
-CONFIG_PCI=y
-CONFIG_SH_PCIDMA_NONCOHERENT=y
-CONFIG_PCI_AUTO=y
-CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
-# CONFIG_PCI_DEBUG is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# PCI Hotplug Support
-#
-CONFIG_HOTPLUG_PCI=y
-# CONFIG_HOTPLUG_PCI_FAKE is not set
-# CONFIG_HOTPLUG_PCI_CPCI is not set
-# CONFIG_HOTPLUG_PCI_SHPC is not set
-
-#
-# Executable file formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_FLAT is not set
-# CONFIG_BINFMT_MISC is not set
-
-#
-# Power management options (EXPERIMENTAL)
-#
-# 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_NET_KEY=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-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_FWMARK is not set
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_MULTIPATH_CACHED=y
-CONFIG_IP_ROUTE_MULTIPATH_RR=m
-CONFIG_IP_ROUTE_MULTIPATH_RANDOM=m
-CONFIG_IP_ROUTE_MULTIPATH_WRANDOM=m
-CONFIG_IP_ROUTE_MULTIPATH_DRR=m
-# CONFIG_IP_ROUTE_VERBOSE is not set
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-CONFIG_NET_IPIP=y
-CONFIG_NET_IPGRE=y
-CONFIG_NET_IPGRE_BROADCAST=y
-CONFIG_IP_MROUTE=y
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=y
-CONFIG_INET_ESP=y
-CONFIG_INET_IPCOMP=y
-CONFIG_INET_XFRM_TUNNEL=y
-CONFIG_INET_TUNNEL=y
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=y
-CONFIG_IPV6_PRIVACY=y
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=y
-CONFIG_INET6_ESP=y
-CONFIG_INET6_IPCOMP=y
-CONFIG_INET6_XFRM_TUNNEL=y
-CONFIG_INET6_TUNNEL=y
-CONFIG_IPV6_TUNNEL=y
-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_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=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_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=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_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-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=y
-CONFIG_IP_NF_CONNTRACK_MARK=y
-CONFIG_IP_NF_CONNTRACK_EVENTS=y
-CONFIG_IP_NF_CONNTRACK_NETLINK=m
-# CONFIG_IP_NF_CT_PROTO_SCTP is not set
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_NETBIOS_NS=m
-CONFIG_IP_NF_TFTP=m
-# CONFIG_IP_NF_AMANDA is not set
-CONFIG_IP_NF_PPTP=m
-CONFIG_IP_NF_H323=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_PPTP=m
-CONFIG_IP_NF_NAT_H323=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_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_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_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 is not set
-# CONFIG_ATM is not set
-CONFIG_BRIDGE=y
-CONFIG_VLAN_8021Q=y
-# CONFIG_DECNET is not set
-CONFIG_LLC=y
-# 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=y
-CONFIG_NET_SCH_CLK_JIFFIES=y
-# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
-# CONFIG_NET_SCH_CLK_CPU is not set
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_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 is not set
-CONFIG_NET_CLS_IND=y
-CONFIG_NET_ESTIMATOR=y
-
-#
-# 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=y
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=y
-CONFIG_IEEE80211_CRYPT_CCMP=y
-CONFIG_IEEE80211_CRYPT_TKIP=y
-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_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-CONFIG_CONNECTOR=m
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=m
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=0
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_PARTITIONS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
-CONFIG_FTL=m
-CONFIG_NFTL=m
-# CONFIG_NFTL_RW is not set
-CONFIG_INFTL=m
-CONFIG_RFD_FTL=m
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=m
-# 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 is not set
-# CONFIG_MTD_CFI_STAA is not set
-# 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 is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_SOLUTIONENGINE 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=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-CONFIG_MTD_NAND_IDS=m
-# CONFIG_MTD_NAND_DISKONCHIP 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_SSFDC=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=m
-# 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=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_CDROM_PKTCDVD 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_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=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 is not set
-# 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 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_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 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 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_IFB is not set
-# 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=m
-
-#
-# MII PHY device drivers
-#
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_STNIC 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
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-# CONFIG_NE2000 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=y
-# CONFIG_8139TOO_PIO is not set
-CONFIG_8139TOO_TUNE_TWISTER=y
-# CONFIG_8139TOO_8129 is not set
-CONFIG_8139_OLD_RX_RESET=y
-# 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=y
-CONFIG_NET_WIRELESS_RTNETLINK=y
-
-#
-# 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=m
-# CONFIG_HOSTAP is not set
-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_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=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_SLIP=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLIP_SMART=y
-# CONFIG_SLIP_MODE_SLIP6 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 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 is not set
-# 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 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_SH_SCI=y
-CONFIG_SERIAL_SH_SCI_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=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=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_SH_WDT=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_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
-
-#
-# 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 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_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-# CONFIG_FB is not set
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-
-#
-# Sound
-#
-# CONFIG_SOUND 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 is not set
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_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_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-# CONFIG_USB_HID is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# 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 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 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_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# 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_ANYDATA is not set
-CONFIG_USB_SERIAL_ARK3116=m
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_CP2101 is not set
-# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
-# CONFIG_USB_SERIAL_GARMIN is not set
-# CONFIG_USB_SERIAL_IPW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_KOBIL_SCT is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-# CONFIG_USB_SERIAL_SAFE is not set
-# CONFIG_USB_SERIAL_TI is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET 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
-
-#
-# LED devices
-#
-# CONFIG_NEW_LEDS is not set
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-
-#
-# InfiniBand support
-#
-# CONFIG_INFINIBAND is not set
-
-#
-# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
-#
-
-#
-# Real Time Clock
-#
-# CONFIG_RTC_CLASS 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 is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_REISERFS_FS_XATTR is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-CONFIG_XFS_FS=m
-CONFIG_XFS_EXPORT=y
-# 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_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-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="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_CONFIGFS_FS=m
-
-#
-# 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 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=y
-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=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# 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
-CONFIG_9P_FS=m
-
-#
-# 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="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=m
-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=m
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=16
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_FRAME_POINTER is not set
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_SH_STANDARD_BIOS is not set
-CONFIG_EARLY_SCIF_CONSOLE=y
-# CONFIG_EARLY_PRINTK is not set
-# CONFIG_KGDB 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=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=y
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=y
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_MICHAEL_MIC=y
-CONFIG_CRYPTO_CRC32C=m
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# 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
diff --git a/packages/linux/linux-titan-sh4-2.6.21/.mtn2git_empty b/packages/linux/linux-titan-sh4-2.6.21/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-titan-sh4-2.6.21/.mtn2git_empty
diff --git a/packages/linux/linux-titan-sh4-2.6.21/no-mm-mutex.patch b/packages/linux/linux-titan-sh4-2.6.21/no-mm-mutex.patch
new file mode 100644
index 0000000000..a1b10eed9f
--- /dev/null
+++ b/packages/linux/linux-titan-sh4-2.6.21/no-mm-mutex.patch
@@ -0,0 +1,47 @@
+Patch out the use of mutex's to protect the copy/clear user page
+operations. These functions sleep, and therefore the mutex's cause
+scheduling while atomic errors. Now this actually opens up the
+possiblity of some corruption (not actually seen in practice, but
+theoretically possible) and therefore is not the correct fix, but all
+proposed replacements have so far been even more problematic.
+
+diff --git a/arch/sh/mm/pg-sh4.c b/arch/sh/mm/pg-sh4.c
+index df69da9..7bc36a4 100644
+--- a/arch/sh/mm/pg-sh4.c
++++ b/arch/sh/mm/pg-sh4.c
+@@ -37,7 +37,7 @@ void clear_user_page(void *to, unsigned
+ unsigned long flags;
+
+ entry = pfn_pte(phys_addr >> PAGE_SHIFT, PAGE_KERNEL);
+- mutex_lock(&p3map_mutex[(address & CACHE_ALIAS)>>12]);
++// mutex_lock(&p3map_mutex[(address & CACHE_ALIAS)>>12]);
+ set_pte(pte, entry);
+ local_irq_save(flags);
+ flush_tlb_one(get_asid(), p3_addr);
+@@ -45,7 +45,7 @@ void clear_user_page(void *to, unsigned
+ update_mmu_cache(NULL, p3_addr, entry);
+ __clear_user_page((void *)p3_addr, to);
+ pte_clear(&init_mm, p3_addr, pte);
+- mutex_unlock(&p3map_mutex[(address & CACHE_ALIAS)>>12]);
++// mutex_unlock(&p3map_mutex[(address & CACHE_ALIAS)>>12]);
+ }
+ }
+
+@@ -73,7 +73,7 @@ void copy_user_page(void *to, void *from
+ unsigned long flags;
+
+ entry = pfn_pte(phys_addr >> PAGE_SHIFT, PAGE_KERNEL);
+- mutex_lock(&p3map_mutex[(address & CACHE_ALIAS)>>12]);
++// mutex_lock(&p3map_mutex[(address & CACHE_ALIAS)>>12]);
+ set_pte(pte, entry);
+ local_irq_save(flags);
+ flush_tlb_one(get_asid(), p3_addr);
+@@ -81,7 +81,7 @@ void copy_user_page(void *to, void *from
+ update_mmu_cache(NULL, p3_addr, entry);
+ __copy_user_page((void *)p3_addr, from, to);
+ pte_clear(&init_mm, p3_addr, pte);
+- mutex_unlock(&p3map_mutex[(address & CACHE_ALIAS)>>12]);
++// mutex_unlock(&p3map_mutex[(address & CACHE_ALIAS)>>12]);
+ }
+ }
+
diff --git a/packages/linux/linux-titan-sh4-2.6.21/titan-config b/packages/linux/linux-titan-sh4-2.6.21/titan-config
new file mode 100644
index 0000000000..d103deb0a5
--- /dev/null
+++ b/packages/linux/linux-titan-sh4-2.6.21/titan-config
@@ -0,0 +1,1798 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21-rc1
+# Wed Feb 28 00:47:30 2007
+#
+CONFIG_SUPERH=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+# CONFIG_GENERIC_TIME is not set
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# 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_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# 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 is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# 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=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"
+
+#
+# System type
+#
+# CONFIG_SH_SOLUTION_ENGINE is not set
+# CONFIG_SH_7751_SOLUTION_ENGINE is not set
+# CONFIG_SH_7300_SOLUTION_ENGINE is not set
+# CONFIG_SH_7343_SOLUTION_ENGINE is not set
+# CONFIG_SH_73180_SOLUTION_ENGINE is not set
+# CONFIG_SH_7751_SYSTEMH is not set
+# CONFIG_SH_HP6XX is not set
+# CONFIG_SH_SATURN is not set
+# CONFIG_SH_DREAMCAST is not set
+# CONFIG_SH_MPC1211 is not set
+# CONFIG_SH_SH03 is not set
+# CONFIG_SH_SECUREEDGE5410 is not set
+# CONFIG_SH_HS7751RVOIP is not set
+# CONFIG_SH_7710VOIPGW is not set
+# CONFIG_SH_RTS7751R2D is not set
+# CONFIG_SH_R7780RP is not set
+# CONFIG_SH_EDOSK7705 is not set
+# CONFIG_SH_SH4202_MICRODEV is not set
+# CONFIG_SH_LANDISK is not set
+CONFIG_SH_TITAN=y
+# CONFIG_SH_SHMIN is not set
+# CONFIG_SH_7206_SOLUTION_ENGINE is not set
+# CONFIG_SH_7619_SOLUTION_ENGINE is not set
+# CONFIG_SH_UNKNOWN is not set
+
+#
+# Processor selection
+#
+CONFIG_CPU_SH4=y
+
+#
+# SH-2 Processor Support
+#
+# CONFIG_CPU_SUBTYPE_SH7604 is not set
+# CONFIG_CPU_SUBTYPE_SH7619 is not set
+
+#
+# SH-2A Processor Support
+#
+# CONFIG_CPU_SUBTYPE_SH7206 is not set
+
+#
+# SH-3 Processor Support
+#
+# CONFIG_CPU_SUBTYPE_SH7300 is not set
+# CONFIG_CPU_SUBTYPE_SH7705 is not set
+# CONFIG_CPU_SUBTYPE_SH7706 is not set
+# CONFIG_CPU_SUBTYPE_SH7707 is not set
+# CONFIG_CPU_SUBTYPE_SH7708 is not set
+# CONFIG_CPU_SUBTYPE_SH7709 is not set
+# CONFIG_CPU_SUBTYPE_SH7710 is not set
+
+#
+# SH-4 Processor Support
+#
+# CONFIG_CPU_SUBTYPE_SH7750 is not set
+# CONFIG_CPU_SUBTYPE_SH7091 is not set
+# CONFIG_CPU_SUBTYPE_SH7750R is not set
+# CONFIG_CPU_SUBTYPE_SH7750S is not set
+CONFIG_CPU_SUBTYPE_SH7751=y
+CONFIG_CPU_SUBTYPE_SH7751R=y
+# CONFIG_CPU_SUBTYPE_SH7760 is not set
+# CONFIG_CPU_SUBTYPE_SH4_202 is not set
+
+#
+# ST40 Processor Support
+#
+# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
+# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
+
+#
+# SH-4A Processor Support
+#
+# CONFIG_CPU_SUBTYPE_SH7770 is not set
+# CONFIG_CPU_SUBTYPE_SH7780 is not set
+# CONFIG_CPU_SUBTYPE_SH7785 is not set
+
+#
+# SH4AL-DSP Processor Support
+#
+# CONFIG_CPU_SUBTYPE_SH73180 is not set
+# CONFIG_CPU_SUBTYPE_SH7343 is not set
+# CONFIG_CPU_SUBTYPE_SH7722 is not set
+
+#
+# Memory management options
+#
+CONFIG_MMU=y
+CONFIG_PAGE_OFFSET=0x80000000
+CONFIG_MEMORY_START=0x08030000
+CONFIG_MEMORY_SIZE=0x7fd0000
+CONFIG_VSYSCALL=y
+CONFIG_PAGE_SIZE_4KB=y
+# CONFIG_PAGE_SIZE_8KB is not set
+# CONFIG_PAGE_SIZE_64KB 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=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+
+#
+# Cache configuration
+#
+# CONFIG_SH_DIRECT_MAPPED is not set
+# CONFIG_SH_WRITETHROUGH is not set
+# CONFIG_SH_OCRAM is not set
+
+#
+# Processor features
+#
+CONFIG_CPU_LITTLE_ENDIAN=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+CONFIG_SH_FPU=y
+# CONFIG_SH_DSP is not set
+# CONFIG_SH_STORE_QUEUES is not set
+CONFIG_CPU_HAS_INTEVT=y
+CONFIG_CPU_HAS_IPR_IRQ=y
+CONFIG_CPU_HAS_SR_RB=y
+CONFIG_CPU_HAS_PTEA=y
+
+#
+# Timer support
+#
+CONFIG_SH_TMU=y
+CONFIG_SH_TIMER_IRQ=16
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_SH_PCLK_FREQ=30000000
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# DMA support
+#
+# CONFIG_SH_DMA is not set
+
+#
+# Companion Chips
+#
+# CONFIG_HD6446X_SERIES is not set
+
+#
+# Additional SuperH Device Drivers
+#
+# CONFIG_PUSH_SWITCH is not set
+
+#
+# Kernel features
+#
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+# CONFIG_KEXEC is not set
+# CONFIG_SMP is not set
+# CONFIG_PREEMPT_NONE is not set
+CONFIG_PREEMPT_VOLUNTARY=y
+# CONFIG_PREEMPT is not set
+
+#
+# Boot options
+#
+CONFIG_ZERO_PAGE_OFFSET=0x00001000
+CONFIG_BOOT_LINK_OFFSET=0x009e0000
+# CONFIG_UBC_WAKEUP is not set
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=ttySC1,38400N81 earlyprintk=serial,,38400 root=/dev/nfs ip=:::::eth1:autoconf profile=2 rw"
+
+#
+# Bus options
+#
+CONFIG_PCI=y
+CONFIG_SH_PCIDMA_NONCOHERENT=y
+CONFIG_PCI_AUTO=y
+CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
+# CONFIG_PCI_DEBUG is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# PCI Hotplug Support
+#
+CONFIG_HOTPLUG_PCI=y
+# CONFIG_HOTPLUG_PCI_FAKE is not set
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_FLAT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options (EXPERIMENTAL)
+#
+# 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=y
+CONFIG_NET_KEY=y
+CONFIG_NET_KEY_MIGRATE=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+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_MULTIPATH_CACHED=y
+CONFIG_IP_ROUTE_MULTIPATH_RR=m
+CONFIG_IP_ROUTE_MULTIPATH_RANDOM=m
+CONFIG_IP_ROUTE_MULTIPATH_WRANDOM=m
+CONFIG_IP_ROUTE_MULTIPATH_DRR=m
+# CONFIG_IP_ROUTE_VERBOSE is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=y
+CONFIG_INET_ESP=y
+CONFIG_INET_IPCOMP=y
+CONFIG_INET_XFRM_TUNNEL=y
+CONFIG_INET_TUNNEL=y
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+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=y
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=y
+CONFIG_IPV6_PRIVACY=y
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_INET6_AH=y
+CONFIG_INET6_ESP=y
+CONFIG_INET6_IPCOMP=y
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=y
+CONFIG_INET6_TUNNEL=y
+CONFIG_INET6_XFRM_MODE_TRANSPORT=y
+CONFIG_INET6_XFRM_MODE_TUNNEL=y
+CONFIG_INET6_XFRM_MODE_BEET=y
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_IPV6_SUBTREES=y
+# 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 is not set
+# CONFIG_NF_CONNTRACK_AMANDA is not set
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=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 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=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 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
+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 is not set
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_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=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 is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=y
+CONFIG_VLAN_8021Q=y
+# CONFIG_DECNET is not set
+CONFIG_LLC=y
+# 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=y
+CONFIG_NET_SCH_FIFO=y
+CONFIG_NET_SCH_CLK_JIFFIES=y
+# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_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 is not set
+CONFIG_NET_CLS_IND=y
+CONFIG_NET_ESTIMATOR=y
+
+#
+# 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=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
+CONFIG_FIB_RULES=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+CONFIG_CONNECTOR=m
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=m
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
+# CONFIG_MTD_CONCAT is not set
+# CONFIG_MTD_PARTITIONS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
+CONFIG_FTL=m
+CONFIG_NFTL=m
+# CONFIG_NFTL_RW is not set
+CONFIG_INFTL=m
+CONFIG_RFD_FTL=m
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=m
+CONFIG_MTD_JEDECPROBE=m
+CONFIG_MTD_GEN_PROBE=m
+# 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 is not set
+# CONFIG_MTD_CFI_STAA is not set
+# 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 is not set
+# CONFIG_MTD_PHYSMAP 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=m
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND_IDS=m
+# CONFIG_MTD_NAND_DISKONCHIP 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
+#
+# 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 is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+CONFIG_ATA_OVER_ETH=m
+
+#
+# Misc devices
+#
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# 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=m
+# CONFIG_CHR_DEV_ST is not set
+# 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 is not set
+# 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 is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS 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_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_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 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD 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_IFB is not set
+# 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_STNIC 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
+
+#
+# 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=y
+# CONFIG_8139TOO_PIO is not set
+CONFIG_8139TOO_TUNE_TWISTER=y
+# CONFIG_8139TOO_8129 is not set
+CONFIG_8139_OLD_RX_RESET=y
+# 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 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
+# 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=y
+
+#
+# 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=m
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+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 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=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_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLHC=m
+CONFIG_SLIP_SMART=y
+# CONFIG_SLIP_MODE_SLIP6 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
+# CONFIG_INPUT_FF_MEMLESS 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 is not set
+# 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 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_SH_SCI=y
+CONFIG_SERIAL_SH_SCI_NR_UARTS=2
+CONFIG_SERIAL_SH_SCI_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=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=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_SH_WDT=m
+# CONFIG_SH_WDT_MMAP is not set
+
+#
+# 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_GEN_RTC 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 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_ABITUGURU is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+# CONFIG_FB is not set
+
+#
+# Console display driver support
+#
+CONFIG_DUMMY_CONSOLE=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# 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 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_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# 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 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
+# 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 is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+# CONFIG_USB_NET_MCS7830 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_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+CONFIG_USB_SERIAL_ARK3116=m
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP2101 is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_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_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST 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
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SH=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# Auxiliary Display support
+#
+
+#
+# Virtualization
+#
+
+#
+# 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 is not set
+CONFIG_EXT4DEV_FS=m
+# CONFIG_EXT4DEV_FS_XATTR is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_JBD2=m
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_REISERFS_FS_XATTR is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+CONFIG_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 is not set
+CONFIG_ROMFS_FS=y
+CONFIG_INOTIFY=y
+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_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="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=m
+
+#
+# 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 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=y
+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=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# 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=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# 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
+CONFIG_9P_FS=m
+
+#
+# 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="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=m
+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=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=y
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# 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_LOG_BUF_SHIFT=16
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# 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_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SH_STANDARD_BIOS is not set
+CONFIG_EARLY_SCIF_CONSOLE=y
+CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000
+CONFIG_EARLY_PRINTK=y
+# CONFIG_DEBUG_STACKOVERFLOW is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_4KSTACKS is not set
+# CONFIG_KGDB 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=y
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=y
+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=y
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+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
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-titan-sh4/titan-flash.patch b/packages/linux/linux-titan-sh4/titan-flash.patch
index fc633f3e05..c84adcdb8c 100644
--- a/packages/linux/linux-titan-sh4/titan-flash.patch
+++ b/packages/linux/linux-titan-sh4/titan-flash.patch
@@ -1,14 +1,14 @@
-
Add the driver for onboard flash.
The quality of this driver means that it has not been included in the
-upstream CVS.
-This implements the block device translation layer to match what the
+upstream kernel sources.
+This implements a block device translation layer to match what the
onboard firmware implements.
-diff -duNr linux-2.6.16-orig/drivers/block/Kconfig linux-2.6.16/drivers/block/Kconfig
---- linux-2.6.16-orig/drivers/block/Kconfig 2006-06-29 16:12:57.000000000 +1000
-+++ linux-2.6.16/drivers/block/Kconfig 2006-06-29 16:13:27.000000000 +1000
-@@ -190,6 +190,13 @@
+diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
+index 58c1deb..9668ac7 100644
+--- a/drivers/block/Kconfig
++++ b/drivers/block/Kconfig
+@@ -186,6 +186,13 @@ config BLK_DEV_DAC960
To compile this driver as a module, choose M here: the
module will be called DAC960.
@@ -16,16 +16,17 @@ diff -duNr linux-2.6.16-orig/drivers/block/Kconfig linux-2.6.16/drivers/block/Kc
+ tristate "SmartMedia(TM) Driver (sm)"
+ depends on SH_TITAN
+ help
-+ Say Y here if you want the SmartMedia chip enabled.
++ Say Y here if you want the SmartMedia chip enabled.
+ Otherwise say N.
+
config BLK_DEV_UMEM
tristate "Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL)"
depends on PCI && EXPERIMENTAL
-diff -duNr linux-2.6.16-orig/drivers/block/Makefile linux-2.6.16/drivers/block/Makefile
---- linux-2.6.16-orig/drivers/block/Makefile 2006-06-29 16:12:57.000000000 +1000
-+++ linux-2.6.16/drivers/block/Makefile 2006-06-29 16:13:27.000000000 +1000
-@@ -21,6 +21,7 @@
+diff --git a/drivers/block/Makefile b/drivers/block/Makefile
+index dd88e33..37fc9e8 100644
+--- a/drivers/block/Makefile
++++ b/drivers/block/Makefile
+@@ -19,6 +19,7 @@ obj-$(CONFIG_BLK_DEV_XD) += xd.o
obj-$(CONFIG_BLK_CPQ_DA) += cpqarray.o
obj-$(CONFIG_BLK_CPQ_CISS_DA) += cciss.o
obj-$(CONFIG_BLK_DEV_DAC960) += DAC960.o
@@ -33,10 +34,12 @@ diff -duNr linux-2.6.16-orig/drivers/block/Makefile linux-2.6.16/drivers/block/M
obj-$(CONFIG_CDROM_PKTCDVD) += pktcdvd.o
obj-$(CONFIG_BLK_DEV_UMEM) += umem.o
-diff -duNr linux-2.6.16-orig/drivers/block/ssfdc.c linux-2.6.16/drivers/block/ssfdc.c
---- linux-2.6.16-orig/drivers/block/ssfdc.c 1970-01-01 10:00:00.000000000 +1000
-+++ linux-2.6.16/drivers/block/ssfdc.c 2006-06-29 16:13:50.000000000 +1000
-@@ -0,0 +1,2742 @@
+diff --git a/drivers/block/ssfdc.c b/drivers/block/ssfdc.c
+new file mode 100644
+index 0000000..482d617
+--- /dev/null
++++ b/drivers/block/ssfdc.c
+@@ -0,0 +1,2733 @@
+/* $id: $
+ssfdc.c - Solid State Flopyy Disk Card
+
@@ -102,7 +105,6 @@ diff -duNr linux-2.6.16-orig/drivers/block/ssfdc.c linux-2.6.16/drivers/block/ss
+#include <linux/errno.h>
+#include <linux/major.h>
+#include <linux/init.h>
-+#include <linux/devfs_fs_kernel.h>
+#include <asm/uaccess.h>
+#include <asm/hardirq.h>
+#include <linux/bio.h>
@@ -122,7 +124,6 @@ diff -duNr linux-2.6.16-orig/drivers/block/ssfdc.c linux-2.6.16/drivers/block/ss
+static ssfdc_dev *ssfdc[MAX_SSFDC];
+
+static int ssfdc_open(struct inode *i_node, struct file *fptr);
-+static int ssfdc_getgeo(struct block_device *bdev, struct hd_geometry *geo);
+static int ssfdc_release(struct inode *i_node, struct file *fptr);
+static int ssfdc_ioctl(struct inode *i_node, struct file *fptr, unsigned cmd, unsigned long arg);
+static int ssfdc_revalidate(struct gendisk *disk);
@@ -131,7 +132,6 @@ diff -duNr linux-2.6.16-orig/drivers/block/ssfdc.c linux-2.6.16/drivers/block/ss
+static struct block_device_operations ssfdc_fops = {
+ .owner = THIS_MODULE,
+ .open = ssfdc_open,
-+ .getgeo = ssfdc_getgeo,
+ .release = ssfdc_release,
+ .ioctl = ssfdc_ioctl,
+ // bjm out .revalidate_disk = ssfdc_revalidate,
@@ -2387,7 +2387,10 @@ diff -duNr linux-2.6.16-orig/drivers/block/ssfdc.c linux-2.6.16/drivers/block/ss
+
+static int ssfdc_ioctl(struct inode *i_node, struct file *fptr, unsigned cmd, unsigned long arg)
+{
-+ int drive, int_val;
++ int err, drive, int_val;
++ unsigned char heads, sectors;
++ unsigned int cylinders;
++ struct hd_geometry geo;
+ ssfdc_dev *psm;
+
+#if DEBUG_SSFDC
@@ -2428,33 +2431,28 @@ diff -duNr linux-2.6.16-orig/drivers/block/ssfdc.c linux-2.6.16/drivers/block/ss
+ printk(KERN_DEBUG "ssfdc_ioctl(BLKGETSIZE) not handled.\n");
+#endif
+ break;
++
++ case HDIO_GETGEO:
++ if ((void *) arg == NULL) return -EINVAL;
++ if (!access_ok(VERIFY_WRITE, (void __user *)arg, sizeof(geo)))
++ return -EFAULT;
++ if ((err=CheckLogCHS( psm, &cylinders, &heads, &sectors)))
++ return ssfdc_maperror(err);
++ memset(&geo, 0, sizeof(geo));
++ geo.cylinders = cylinders;
++ geo.heads = heads;
++ geo.sectors = sectors;
++ geo.start = get_start_sect(i_node->i_bdev);
++ if (copy_to_user((void *) arg, &geo, sizeof(geo)))
++ return -EFAULT;
++ if (copy_to_user((void *) arg, &geo, sizeof(geo)))
++ return -EFAULT;
++ return 0;
+ }
+ return -EINVAL;
+}
+
+
-+static int ssfdc_getgeo(struct block_device *bdev, struct hd_geometry *geo)
-+{
-+ unsigned char heads, sectors;
-+ unsigned int cylinders;
-+ struct gendisk *disk = bdev->bd_disk;
-+ ssfdc_dev *psm = disk->private_data;
-+ int drive = psm->sm_minor;
-+ int err;
-+
-+ if (drive < 0 || drive >= MAX_SSFDC)
-+ return -ENODEV;
-+
-+ err = CheckLogCHS(psm, &cylinders, &heads, &sectors);
-+ if (err)
-+ return ssfdc_maperror(err);
-+
-+ geo->heads = heads;
-+ geo->sectors = sectors;
-+ geo->cylinders = cylinders;
-+ return 0;
-+}
-+
+
+static int ssfdc_revalidate(struct gendisk *disk)
+{
@@ -2514,14 +2512,11 @@ diff -duNr linux-2.6.16-orig/drivers/block/ssfdc.c linux-2.6.16/drivers/block/ss
+ goto busy_error;
+ }
+
-+ devfs_mk_dir("sm");
-+
+ for ( i=0; i < MAX_SSFDC; ++i) {
+ disks[i]->major = SSFDC_MAJOR;
+ disks[i]->first_minor = i << SSFDC_PARTN_BITS;
+ disks[i]->fops = &ssfdc_fops;
+ sprintf(disks[i]->disk_name, "sm%d", i);
-+ sprintf(disks[i]->devfs_name, "sm/%d", i);
+ disks[i]->private_data = ssfdc[i];
+ ssfdc_init_device(ssfdc[i], i << SSFDC_PARTN_BITS,
+ CPLD_BASE_ADDRESS + SMART_MEDIA_ONE_OFFSET);
@@ -2592,7 +2587,6 @@ diff -duNr linux-2.6.16-orig/drivers/block/ssfdc.c linux-2.6.16/drivers/block/ss
+
+ if (unregister_blkdev(SSFDC_MAJOR, "smartmedia"))
+ printk(KERN_WARNING "smartmedia: cannot unregister blkdev\n");
-+ devfs_remove("sm");
+}
+
+#if DEBUG_SSFDC
@@ -2779,9 +2773,11 @@ diff -duNr linux-2.6.16-orig/drivers/block/ssfdc.c linux-2.6.16/drivers/block/ss
+MODULE_LICENSE("GPL");
+
+/* End of Linux Driver Modifications */
-diff -duNr linux-2.6.16-orig/drivers/block/ssfdc.h linux-2.6.16/drivers/block/ssfdc.h
---- linux-2.6.16-orig/drivers/block/ssfdc.h 1970-01-01 10:00:00.000000000 +1000
-+++ linux-2.6.16/drivers/block/ssfdc.h 2006-06-29 16:13:27.000000000 +1000
+diff --git a/drivers/block/ssfdc.h b/drivers/block/ssfdc.h
+new file mode 100644
+index 0000000..06f4a3c
+--- /dev/null
++++ b/drivers/block/ssfdc.h
@@ -0,0 +1,372 @@
+/* $id: $ */
+#ifndef _SSFDC_H
diff --git a/packages/linux/linux-titan-sh4_2.6.17.bb b/packages/linux/linux-titan-sh4_2.6.17.bb
deleted file mode 100644
index 55e55929a5..0000000000
--- a/packages/linux/linux-titan-sh4_2.6.17.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "Linux kernel for SH4 based TITAN router appliance"
-LICENSE = "GPL"
-PR = "r2"
-
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
- cvs://anonymous@linuxsh.cvs.sourceforge.net/cvsroot/linuxsh;module=linux;date=20060726 \
- file://titan-flash.patch;patch=1 \
- file://titan-pcibios-scan-update.patch;patch=1 \
- file://titan-config"
-S = "${WORKDIR}/linux-${PV}"
-
-COMPATIBLE_HOST = 'sh4.*-linux'
-COMPATIBLE_MACHINE = "titan"
-
-inherit kernel
-
-ARCH = "sh"
-KERNEL_IMAGETYPE = "zImage"
-KERNEL_OUTPUT = "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}"
-
-# Fix up kernel version - sh kernels get -sh added automatically
-KERNEL_RELEASE = "${KERNEL_VERSION}"
-
-#
-# The linux-sh cvs tree is a "drop in source tree" and needs to be copied
-# over the top of the normal linux source since it only includes modified
-# files.
-#
-do_unpack_extra(){
- cp -pPR ${WORKDIR}/linux/* ${S}
-}
-addtask unpack_extra after do_unpack before do_patch
-
-#
-# Use an updated defconfig which includes the flash driver
-# The flash driver quality doesn't allow it to be a part of the main kernel
-#
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/titan-config ${S}/arch/sh/configs/titan_defconfig
- yes '' | oe_runmake titan_defconfig
-}
-
-#
-# Should I make the nfs boot image?
-#
-#do_deploy_titan() {
-# To NFS boot you need to objcopy the image...
-# ${HOST_PREFIX}objcopy -O binary -R .note -R .comment -S arch/sh/boot/compressed/vmlinux ${DEPLOY_DIR}/linux.bin
-#}
-#addtask deploy before do_build after do_compile
diff --git a/packages/linux/linux-titan-sh4_2.6.21.bb b/packages/linux/linux-titan-sh4_2.6.21.bb
new file mode 100644
index 0000000000..ee890e2415
--- /dev/null
+++ b/packages/linux/linux-titan-sh4_2.6.21.bb
@@ -0,0 +1,29 @@
+SECTION = "kernel"
+DESCRIPTION = "Linux kernel for SH4 based TITAN (NP51R/LinkGear Series 100) router appliance"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://titan-flash.patch;patch=1 \
+ file://titan-pcibios-scan-update.patch;patch=1 \
+ file://no-mm-mutex.patch;patch=1 \
+ file://titan-config"
+S = "${WORKDIR}/linux-${PV}"
+
+COMPATIBLE_HOST = 'sh4.*-linux'
+COMPATIBLE_MACHINE = "titan"
+
+inherit kernel
+
+ARCH = "sh"
+KERNEL_IMAGETYPE = "zImage"
+KERNEL_OUTPUT = "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}"
+
+#
+# Use an updated defconfig which includes the flash driver
+# The flash driver quality doesn't allow it to be a part of the main kernel
+#
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/titan-config ${S}/arch/sh/configs/titan_defconfig
+ yes '' | oe_runmake titan_defconfig
+}
diff --git a/packages/linux/linux-tornado-omap2/.mtn2git_empty b/packages/linux/linux-tornado-omap2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-tornado-omap2/.mtn2git_empty
diff --git a/packages/linux/linux-tornado-omap2/htctornado/.mtn2git_empty b/packages/linux/linux-tornado-omap2/htctornado/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-tornado-omap2/htctornado/.mtn2git_empty
diff --git a/packages/linux/linux-tornado-omap2/htctornado/defconfig b/packages/linux/linux-tornado-omap2/htctornado/defconfig
new file mode 100644
index 0000000000..9be1116739
--- /dev/null
+++ b/packages/linux/linux-tornado-omap2/htctornado/defconfig
@@ -0,0 +1,894 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.16.16-omap2
+# Thu Apr 12 17:14:27 2007
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+
+#
+# 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 is not set
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+# CONFIG_BASE_FULL is not set
+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=1
+# 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 is not set
+
+#
+# Block layer
+#
+
+#
+# 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_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 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=y
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# TI OMAP Implementations
+#
+CONFIG_ARCH_OMAP_OTG=y
+CONFIG_ARCH_OMAP1=y
+# CONFIG_ARCH_OMAP2 is not set
+
+#
+# OMAP Feature Selections
+#
+# CONFIG_OMAP_RESET_CLOCKS is not set
+# CONFIG_OMAP_BOOT_TAG is not set
+# CONFIG_OMAP_MUX is not set
+CONFIG_OMAP_MPU_TIMER=y
+# CONFIG_OMAP_32K_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
+
+#
+# OMAP Core Type
+#
+CONFIG_ARCH_OMAP730=y
+# CONFIG_ARCH_OMAP15XX is not set
+# CONFIG_ARCH_OMAP16XX is not set
+
+#
+# OMAP Board Type
+#
+# CONFIG_MACH_OMAP_PERSEUS2 is not set
+
+#
+# OMAP CPU Speed
+#
+# CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER is not set
+CONFIG_OMAP_ARM_195MHZ=y
+# CONFIG_OMAP_ARM_182MHZ is not set
+# 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
+CONFIG_MACH_TORNADO=y
+CONFIG_EFB_DEBUG=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=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_KEXEC=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+# CONFIG_NO_IDLE_HZ 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
+# 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_LEDS 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
+
+#
+# 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=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=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_XFRM=y
+# CONFIG_XFRM_USER is not set
+CONFIG_NET_KEY=y
+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 is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# 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
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# 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
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=1
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+# CONFIG_NETDEVICES is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_PPP is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# 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 is not set
+# 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_OMAP is not set
+CONFIG_TORNADO_KEYPAD=y
+# CONFIG_INPUT_MOUSE 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 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# 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_OMAP730_WATCHDOG=y
+CONFIG_TORNADO_VIBRATOR=y
+CONFIG_TORNADO_LEDS=y
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_OMAP_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER 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 is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# 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_S1D13XXX is not set
+# CONFIG_FB_OMAP is not set
+CONFIG_FB_VSFB=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_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+CONFIG_FONT_6x11=y
+# 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 is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_TORNADO=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_SEQUENCER_OSS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=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
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_OMAP_AIC23 is not set
+# CONFIG_SND_OMAP_TSC2101 is not set
+
+#
+# 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 is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+CONFIG_USB_GADGET_OMAP=y
+CONFIG_USB_OMAP=y
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_BLOCK_BROKEN_RFD is not set
+# CONFIG_MMC_BULKTRANSFER is not set
+CONFIG_MMC_OMAP=y
+
+#
+# Synchronous Serial Interfaces (SSI)
+#
+# CONFIG_OMAP_UWIRE is not set
+# CONFIG_OMAP_TSC2101 is not set
+
+#
+# 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=y
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG 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_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=y
+# CONFIG_INOTIFY is not set
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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_SYSFS=y
+CONFIG_TMPFS=y
+# 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 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_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# 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
+# CONFIG_9P_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 is not set
+# 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 is not set
+# 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
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+CONFIG_SECURITY=y
+CONFIG_SECURITY_NETWORK=y
+# CONFIG_SECURITY_NETWORK_XFRM is not set
+# CONFIG_SECURITY_CAPABILITIES is not set
+# CONFIG_SECURITY_SECLVL 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 is not set
diff --git a/packages/linux/linux-tornado-omap2/linux-2.6.16.16.patch b/packages/linux/linux-tornado-omap2/linux-2.6.16.16.patch
new file mode 100644
index 0000000000..ff0aaaac27
--- /dev/null
+++ b/packages/linux/linux-tornado-omap2/linux-2.6.16.16.patch
@@ -0,0 +1,5134 @@
+diff -Naur linux-2.6.16/arch/alpha/kernel/setup.c linux-2.6.16.16/arch/alpha/kernel/setup.c
+--- linux-2.6.16/arch/alpha/kernel/setup.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/alpha/kernel/setup.c 2006-05-11 04:56:24.000000000 +0300
+@@ -24,6 +24,7 @@
+ #include <linux/config.h> /* CONFIG_ALPHA_LCA etc */
+ #include <linux/mc146818rtc.h>
+ #include <linux/console.h>
++#include <linux/cpu.h>
+ #include <linux/errno.h>
+ #include <linux/init.h>
+ #include <linux/string.h>
+@@ -477,6 +478,22 @@
+ #undef PFN_PHYS
+ #undef PFN_MAX
+
++static int __init
++register_cpus(void)
++{
++ int i;
++
++ for_each_possible_cpu(i) {
++ struct cpu *p = kzalloc(sizeof(*p), GFP_KERNEL);
++ if (!p)
++ return -ENOMEM;
++ register_cpu(p, i, NULL);
++ }
++ return 0;
++}
++
++arch_initcall(register_cpus);
++
+ void __init
+ setup_arch(char **cmdline_p)
+ {
+diff -Naur linux-2.6.16/arch/alpha/kernel/smp.c linux-2.6.16.16/arch/alpha/kernel/smp.c
+--- linux-2.6.16/arch/alpha/kernel/smp.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/alpha/kernel/smp.c 2006-05-11 04:56:24.000000000 +0300
+@@ -439,7 +439,7 @@
+ if ((cpu->flags & 0x1cc) == 0x1cc) {
+ smp_num_probed++;
+ /* Assume here that "whami" == index */
+- cpu_set(i, cpu_possible_map);
++ cpu_set(i, cpu_present_mask);
+ cpu->pal_revision = boot_cpu_palrev;
+ }
+
+@@ -450,9 +450,8 @@
+ }
+ } else {
+ smp_num_probed = 1;
+- cpu_set(boot_cpuid, cpu_possible_map);
++ cpu_set(boot_cpuid, cpu_present_mask);
+ }
+- cpu_present_mask = cpumask_of_cpu(boot_cpuid);
+
+ printk(KERN_INFO "SMP: %d CPUs probed -- cpu_present_mask = %lx\n",
+ smp_num_probed, cpu_possible_map.bits[0]);
+@@ -488,9 +487,8 @@
+ smp_prepare_boot_cpu(void)
+ {
+ /*
+- * Mark the boot cpu (current cpu) as both present and online
++ * Mark the boot cpu (current cpu) as online
+ */
+- cpu_set(smp_processor_id(), cpu_present_mask);
+ cpu_set(smp_processor_id(), cpu_online_map);
+ }
+
+diff -Naur linux-2.6.16/arch/alpha/lib/strncpy.S linux-2.6.16.16/arch/alpha/lib/strncpy.S
+--- linux-2.6.16/arch/alpha/lib/strncpy.S 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/alpha/lib/strncpy.S 2006-05-11 04:56:24.000000000 +0300
+@@ -43,8 +43,8 @@
+
+ .align 4
+ $multiword:
+- subq $24, 1, $2 # clear the final bits in the prev word
+- or $2, $24, $2
++ subq $27, 1, $2 # clear the final bits in the prev word
++ or $2, $27, $2
+ zapnot $1, $2, $1
+ subq $18, 1, $18
+
+@@ -70,8 +70,8 @@
+ bne $18, 0b
+
+ 1: ldq_u $1, 0($16) # clear the leading bits in the final word
+- subq $27, 1, $2
+- or $2, $27, $2
++ subq $24, 1, $2
++ or $2, $24, $2
+
+ zap $1, $2, $1
+ stq_u $1, 0($16)
+diff -Naur linux-2.6.16/arch/i386/kernel/apm.c linux-2.6.16.16/arch/i386/kernel/apm.c
+--- linux-2.6.16/arch/i386/kernel/apm.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/i386/kernel/apm.c 2006-05-11 04:56:24.000000000 +0300
+@@ -1081,7 +1081,7 @@
+ break;
+ }
+
+- if (error == APM_NOT_ENGAGED && state != APM_STATE_READY) {
++ if (error == APM_NOT_ENGAGED) {
+ static int tried;
+ int eng_error;
+ if (tried++ == 0) {
+diff -Naur linux-2.6.16/arch/i386/kernel/cpu/amd.c linux-2.6.16.16/arch/i386/kernel/cpu/amd.c
+--- linux-2.6.16/arch/i386/kernel/cpu/amd.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/i386/kernel/cpu/amd.c 2006-05-11 04:56:24.000000000 +0300
+@@ -207,6 +207,8 @@
+ set_bit(X86_FEATURE_K7, c->x86_capability);
+ break;
+ }
++ if (c->x86 >= 6)
++ set_bit(X86_FEATURE_FXSAVE_LEAK, c->x86_capability);
+
+ display_cacheinfo(c);
+
+diff -Naur linux-2.6.16/arch/i386/kernel/cpu/cpufreq/Kconfig linux-2.6.16.16/arch/i386/kernel/cpu/cpufreq/Kconfig
+--- linux-2.6.16/arch/i386/kernel/cpu/cpufreq/Kconfig 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/i386/kernel/cpu/cpufreq/Kconfig 2006-05-11 04:56:24.000000000 +0300
+@@ -203,6 +203,7 @@
+ config X86_LONGHAUL
+ tristate "VIA Cyrix III Longhaul"
+ select CPU_FREQ_TABLE
++ depends on BROKEN
+ help
+ This adds the CPUFreq driver for VIA Samuel/CyrixIII,
+ VIA Cyrix Samuel/C3, VIA Cyrix Ezra and VIA Cyrix Ezra-T
+diff -Naur linux-2.6.16/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c linux-2.6.16.16/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c
+--- linux-2.6.16/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c 2006-05-11 04:56:24.000000000 +0300
+@@ -244,7 +244,7 @@
+ for (i=1; (p4clockmod_table[i].frequency != CPUFREQ_TABLE_END); i++) {
+ if ((i<2) && (has_N44_O17_errata[policy->cpu]))
+ p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID;
+- else if (has_N60_errata[policy->cpu] && p4clockmod_table[i].frequency < 2000000)
++ else if (has_N60_errata[policy->cpu] && ((stock_freq * i)/8) < 2000000)
+ p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID;
+ else
+ p4clockmod_table[i].frequency = (stock_freq * i)/8;
+diff -Naur linux-2.6.16/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c linux-2.6.16.16/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c
+--- linux-2.6.16/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c 2006-05-11 04:56:24.000000000 +0300
+@@ -75,7 +75,9 @@
+ __asm__ __volatile__(
+ "out %%al, (%%dx)\n"
+ : "=D" (result)
+- : "a" (command), "b" (function), "c" (0), "d" (smi_port), "D" (0), "S" (magic)
++ : "a" (command), "b" (function), "c" (0), "d" (smi_port),
++ "D" (0), "S" (magic)
++ : "memory"
+ );
+
+ dprintk("result is %x\n", result);
+diff -Naur linux-2.6.16/arch/i386/kernel/dmi_scan.c linux-2.6.16.16/arch/i386/kernel/dmi_scan.c
+--- linux-2.6.16/arch/i386/kernel/dmi_scan.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/i386/kernel/dmi_scan.c 2006-05-11 04:56:24.000000000 +0300
+@@ -106,7 +106,7 @@
+ struct dmi_device *dev;
+
+ for (i = 0; i < count; i++) {
+- char *d = ((char *) dm) + (i * 2);
++ char *d = (char *)(dm + 1) + (i * 2);
+
+ /* Skip disabled device */
+ if ((*d & 0x80) == 0)
+diff -Naur linux-2.6.16/arch/i386/kernel/vm86.c linux-2.6.16.16/arch/i386/kernel/vm86.c
+--- linux-2.6.16/arch/i386/kernel/vm86.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/i386/kernel/vm86.c 2006-05-11 04:56:24.000000000 +0300
+@@ -43,6 +43,7 @@
+ #include <linux/smp_lock.h>
+ #include <linux/highmem.h>
+ #include <linux/ptrace.h>
++#include <linux/audit.h>
+
+ #include <asm/uaccess.h>
+ #include <asm/io.h>
+@@ -252,6 +253,7 @@
+ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk)
+ {
+ struct tss_struct *tss;
++ long eax;
+ /*
+ * make sure the vm86() system call doesn't try to do anything silly
+ */
+@@ -305,13 +307,19 @@
+ tsk->thread.screen_bitmap = info->screen_bitmap;
+ if (info->flags & VM86_SCREEN_BITMAP)
+ mark_screen_rdonly(tsk->mm);
++ __asm__ __volatile__("xorl %eax,%eax; movl %eax,%fs; movl %eax,%gs\n\t");
++ __asm__ __volatile__("movl %%eax, %0\n" :"=r"(eax));
++
++ /*call audit_syscall_exit since we do not exit via the normal paths */
++ if (unlikely(current->audit_context))
++ audit_syscall_exit(current, AUDITSC_RESULT(eax), eax);
++
+ __asm__ __volatile__(
+- "xorl %%eax,%%eax; movl %%eax,%%fs; movl %%eax,%%gs\n\t"
+ "movl %0,%%esp\n\t"
+ "movl %1,%%ebp\n\t"
+ "jmp resume_userspace"
+ : /* no outputs */
+- :"r" (&info->regs), "r" (task_thread_info(tsk)) : "ax");
++ :"r" (&info->regs), "r" (task_thread_info(tsk)));
+ /* we never return here */
+ }
+
+diff -Naur linux-2.6.16/arch/m32r/kernel/m32r_ksyms.c linux-2.6.16.16/arch/m32r/kernel/m32r_ksyms.c
+--- linux-2.6.16/arch/m32r/kernel/m32r_ksyms.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/m32r/kernel/m32r_ksyms.c 2006-05-11 04:56:24.000000000 +0300
+@@ -38,10 +38,6 @@
+ EXPORT_SYMBOL(__delay);
+ EXPORT_SYMBOL(__const_udelay);
+
+-EXPORT_SYMBOL(__get_user_1);
+-EXPORT_SYMBOL(__get_user_2);
+-EXPORT_SYMBOL(__get_user_4);
+-
+ EXPORT_SYMBOL(strpbrk);
+ EXPORT_SYMBOL(strstr);
+
+diff -Naur linux-2.6.16/arch/m32r/kernel/setup.c linux-2.6.16.16/arch/m32r/kernel/setup.c
+--- linux-2.6.16/arch/m32r/kernel/setup.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/m32r/kernel/setup.c 2006-05-11 04:56:24.000000000 +0300
+@@ -9,6 +9,7 @@
+
+ #include <linux/config.h>
+ #include <linux/init.h>
++#include <linux/kernel.h>
+ #include <linux/stddef.h>
+ #include <linux/fs.h>
+ #include <linux/sched.h>
+@@ -218,8 +219,6 @@
+ extern unsigned long setup_memory(void);
+ #endif /* CONFIG_DISCONTIGMEM */
+
+-#define M32R_PCC_PCATCR 0x00ef7014 /* will move to m32r.h */
+-
+ void __init setup_arch(char **cmdline_p)
+ {
+ ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV);
+@@ -268,15 +267,14 @@
+ paging_init();
+ }
+
+-static struct cpu cpu[NR_CPUS];
++static struct cpu cpu_devices[NR_CPUS];
+
+ static int __init topology_init(void)
+ {
+- int cpu_id;
++ int i;
+
+- for (cpu_id = 0; cpu_id < NR_CPUS; cpu_id++)
+- if (cpu_possible(cpu_id))
+- register_cpu(&cpu[cpu_id], cpu_id, NULL);
++ for_each_present_cpu(i)
++ register_cpu(&cpu_devices[i], i, NULL);
+
+ return 0;
+ }
+diff -Naur linux-2.6.16/arch/m32r/kernel/smpboot.c linux-2.6.16.16/arch/m32r/kernel/smpboot.c
+--- linux-2.6.16/arch/m32r/kernel/smpboot.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/m32r/kernel/smpboot.c 2006-05-11 04:56:24.000000000 +0300
+@@ -39,8 +39,10 @@
+ * Martin J. Bligh : Added support for multi-quad systems
+ */
+
++#include <linux/module.h>
+ #include <linux/config.h>
+ #include <linux/init.h>
++#include <linux/kernel.h>
+ #include <linux/mm.h>
+ #include <linux/smp_lock.h>
+ #include <linux/irq.h>
+@@ -72,11 +74,15 @@
+
+ /* Bitmask of currently online CPUs */
+ cpumask_t cpu_online_map;
++EXPORT_SYMBOL(cpu_online_map);
+
+ cpumask_t cpu_bootout_map;
+ cpumask_t cpu_bootin_map;
+-cpumask_t cpu_callout_map;
+ static cpumask_t cpu_callin_map;
++cpumask_t cpu_callout_map;
++EXPORT_SYMBOL(cpu_callout_map);
++cpumask_t cpu_possible_map = CPU_MASK_ALL;
++EXPORT_SYMBOL(cpu_possible_map);
+
+ /* Per CPU bogomips and other parameters */
+ struct cpuinfo_m32r cpu_data[NR_CPUS] __cacheline_aligned;
+@@ -110,7 +116,6 @@
+
+ void smp_prepare_boot_cpu(void);
+ void smp_prepare_cpus(unsigned int);
+-static void smp_tune_scheduling(void);
+ static void init_ipi_lock(void);
+ static void do_boot_cpu(int);
+ int __cpu_up(unsigned int);
+@@ -177,6 +182,9 @@
+ }
+ for (phys_id = 0 ; phys_id < nr_cpu ; phys_id++)
+ physid_set(phys_id, phys_cpu_present_map);
++#ifndef CONFIG_HOTPLUG_CPU
++ cpu_present_map = cpu_possible_map;
++#endif
+
+ show_mp_info(nr_cpu);
+
+@@ -186,7 +194,6 @@
+ * Setup boot CPU information
+ */
+ smp_store_cpu_info(0); /* Final full version of the data */
+- smp_tune_scheduling();
+
+ /*
+ * If SMP should be disabled, then really disable it!
+@@ -230,11 +237,6 @@
+ Dprintk("Boot done.\n");
+ }
+
+-static void __init smp_tune_scheduling(void)
+-{
+- /* Nothing to do. */
+-}
+-
+ /*
+ * init_ipi_lock : Initialize IPI locks.
+ */
+@@ -629,4 +631,3 @@
+ physid_2_cpu[phys_id] = -1;
+ cpu_2_physid[cpu_id] = -1;
+ }
+-
+diff -Naur linux-2.6.16/arch/m32r/lib/getuser.S linux-2.6.16.16/arch/m32r/lib/getuser.S
+--- linux-2.6.16/arch/m32r/lib/getuser.S 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/m32r/lib/getuser.S 1970-01-01 02:00:00.000000000 +0200
+@@ -1,88 +0,0 @@
+-/*
+- * __get_user functions.
+- *
+- * (C) Copyright 2001 Hirokazu Takata
+- *
+- * These functions have a non-standard call interface
+- * to make them more efficient, especially as they
+- * return an error value in addition to the "real"
+- * return value.
+- */
+-
+-#include <linux/config.h>
+-
+-/*
+- * __get_user_X
+- *
+- * Inputs: r0 contains the address
+- *
+- * Outputs: r0 is error code (0 or -EFAULT)
+- * r1 contains zero-extended value
+- *
+- * These functions should not modify any other registers,
+- * as they get called from within inline assembly.
+- */
+-
+-#ifdef CONFIG_ISA_DUAL_ISSUE
+-
+- .text
+- .balign 4
+- .globl __get_user_1
+-__get_user_1:
+-1: ldub r1, @r0 || ldi r0, #0
+- jmp r14
+-
+- .balign 4
+- .globl __get_user_2
+-__get_user_2:
+-2: lduh r1, @r0 || ldi r0, #0
+- jmp r14
+-
+- .balign 4
+- .globl __get_user_4
+-__get_user_4:
+-3: ld r1, @r0 || ldi r0, #0
+- jmp r14
+-
+-bad_get_user:
+- ldi r1, #0 || ldi r0, #-14
+- jmp r14
+-
+-#else /* not CONFIG_ISA_DUAL_ISSUE */
+-
+- .text
+- .balign 4
+- .globl __get_user_1
+-__get_user_1:
+-1: ldub r1, @r0
+- ldi r0, #0
+- jmp r14
+-
+- .balign 4
+- .globl __get_user_2
+-__get_user_2:
+-2: lduh r1, @r0
+- ldi r0, #0
+- jmp r14
+-
+- .balign 4
+- .globl __get_user_4
+-__get_user_4:
+-3: ld r1, @r0
+- ldi r0, #0
+- jmp r14
+-
+-bad_get_user:
+- ldi r1, #0
+- ldi r0, #-14
+- jmp r14
+-
+-#endif /* not CONFIG_ISA_DUAL_ISSUE */
+-
+-.section __ex_table,"a"
+- .long 1b,bad_get_user
+- .long 2b,bad_get_user
+- .long 3b,bad_get_user
+-.previous
+-
+- .end
+diff -Naur linux-2.6.16/arch/m32r/lib/Makefile linux-2.6.16.16/arch/m32r/lib/Makefile
+--- linux-2.6.16/arch/m32r/lib/Makefile 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/m32r/lib/Makefile 2006-05-11 04:56:24.000000000 +0300
+@@ -2,6 +2,6 @@
+ # Makefile for M32R-specific library files..
+ #
+
+-lib-y := checksum.o ashxdi3.o memset.o memcpy.o getuser.o \
+- putuser.o delay.o strlen.o usercopy.o csum_partial_copy.o
++lib-y := checksum.o ashxdi3.o memset.o memcpy.o \
++ delay.o strlen.o usercopy.o csum_partial_copy.o
+
+diff -Naur linux-2.6.16/arch/m32r/lib/putuser.S linux-2.6.16.16/arch/m32r/lib/putuser.S
+--- linux-2.6.16/arch/m32r/lib/putuser.S 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/m32r/lib/putuser.S 1970-01-01 02:00:00.000000000 +0200
+@@ -1,84 +0,0 @@
+-/*
+- * __put_user functions.
+- *
+- * (C) Copyright 1998 Linus Torvalds
+- * (C) Copyright 2001 Hirokazu Takata
+- *
+- * These functions have a non-standard call interface
+- * to make them more efficient.
+- */
+-
+-#include <linux/config.h>
+-
+-/*
+- * __put_user_X
+- *
+- * Inputs: r0 contains the address
+- * r1 contains the value
+- *
+- * Outputs: r0 is error code (0 or -EFAULT)
+- * r1 is corrupted (will contain "current_task").
+- *
+- * These functions should not modify any other registers,
+- * as they get called from within inline assembly.
+- */
+-
+-#ifdef CONFIG_ISA_DUAL_ISSUE
+-
+- .text
+- .balign 4
+- .globl __put_user_1
+-__put_user_1:
+-1: stb r1, @r0 || ldi r0, #0
+- jmp r14
+-
+- .balign 4
+- .globl __put_user_2
+-__put_user_2:
+-2: sth r1, @r0 || ldi r0, #0
+- jmp r14
+-
+- .balign 4
+- .globl __put_user_4
+-__put_user_4:
+-3: st r1, @r0 || ldi r0, #0
+- jmp r14
+-
+-bad_put_user:
+- ldi r0, #-14 || jmp r14
+-
+-#else /* not CONFIG_ISA_DUAL_ISSUE */
+-
+- .text
+- .balign 4
+- .globl __put_user_1
+-__put_user_1:
+-1: stb r1, @r0
+- ldi r0, #0
+- jmp r14
+-
+- .balign 4
+- .globl __put_user_2
+-__put_user_2:
+-2: sth r1, @r0
+- ldi r0, #0
+- jmp r14
+-
+- .balign 4
+- .globl __put_user_4
+-__put_user_4:
+-3: st r1, @r0
+- ldi r0, #0
+- jmp r14
+-
+-bad_put_user:
+- ldi r0, #-14
+- jmp r14
+-
+-#endif /* not CONFIG_ISA_DUAL_ISSUE */
+-
+-.section __ex_table,"a"
+- .long 1b,bad_put_user
+- .long 2b,bad_put_user
+- .long 3b,bad_put_user
+-.previous
+diff -Naur linux-2.6.16/arch/mips/kernel/branch.c linux-2.6.16.16/arch/mips/kernel/branch.c
+--- linux-2.6.16/arch/mips/kernel/branch.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/mips/kernel/branch.c 2006-05-11 04:56:24.000000000 +0300
+@@ -184,7 +184,7 @@
+ bit = (insn.i_format.rt >> 2);
+ bit += (bit != 0);
+ bit += 23;
+- switch (insn.i_format.rt) {
++ switch (insn.i_format.rt & 3) {
+ case 0: /* bc1f */
+ case 2: /* bc1fl */
+ if (~fcr31 & (1 << bit))
+diff -Naur linux-2.6.16/arch/mips/mm/c-r4k.c linux-2.6.16.16/arch/mips/mm/c-r4k.c
+--- linux-2.6.16/arch/mips/mm/c-r4k.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/mips/mm/c-r4k.c 2006-05-11 04:56:24.000000000 +0300
+@@ -154,7 +154,8 @@
+
+ static inline void tx49_blast_icache32_page_indexed(unsigned long page)
+ {
+- unsigned long start = page;
++ unsigned long indexmask = current_cpu_data.icache.waysize - 1;
++ unsigned long start = INDEX_BASE + (page & indexmask);
+ unsigned long end = start + PAGE_SIZE;
+ unsigned long ws_inc = 1UL << current_cpu_data.icache.waybit;
+ unsigned long ws_end = current_cpu_data.icache.ways <<
+diff -Naur linux-2.6.16/arch/powerpc/kernel/pci_64.c linux-2.6.16.16/arch/powerpc/kernel/pci_64.c
+--- linux-2.6.16/arch/powerpc/kernel/pci_64.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/powerpc/kernel/pci_64.c 2006-05-11 04:56:24.000000000 +0300
+@@ -78,6 +78,7 @@
+
+ /* Cached ISA bridge dev. */
+ struct pci_dev *ppc64_isabridge_dev = NULL;
++EXPORT_SYMBOL_GPL(ppc64_isabridge_dev);
+
+ static void fixup_broken_pcnet32(struct pci_dev* dev)
+ {
+diff -Naur linux-2.6.16/arch/powerpc/kernel/setup_64.c linux-2.6.16.16/arch/powerpc/kernel/setup_64.c
+--- linux-2.6.16/arch/powerpc/kernel/setup_64.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/powerpc/kernel/setup_64.c 2006-05-11 04:56:24.000000000 +0300
+@@ -256,12 +256,10 @@
+ /*
+ * Initialize stab / SLB management except on iSeries
+ */
+- if (!firmware_has_feature(FW_FEATURE_ISERIES)) {
+- if (cpu_has_feature(CPU_FTR_SLB))
+- slb_initialize();
+- else
+- stab_initialize(lpaca->stab_real);
+- }
++ if (cpu_has_feature(CPU_FTR_SLB))
++ slb_initialize();
++ else if (!firmware_has_feature(FW_FEATURE_ISERIES))
++ stab_initialize(lpaca->stab_real);
+
+ DBG(" <- early_setup()\n");
+ }
+diff -Naur linux-2.6.16/arch/powerpc/kernel/signal_64.c linux-2.6.16.16/arch/powerpc/kernel/signal_64.c
+--- linux-2.6.16/arch/powerpc/kernel/signal_64.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/powerpc/kernel/signal_64.c 2006-05-11 04:56:24.000000000 +0300
+@@ -213,7 +213,7 @@
+ /* Default to using normal stack */
+ newsp = regs->gpr[1];
+
+- if (ka->sa.sa_flags & SA_ONSTACK) {
++ if ((ka->sa.sa_flags & SA_ONSTACK) && current->sas_ss_size) {
+ if (! on_sig_stack(regs->gpr[1]))
+ newsp = (current->sas_ss_sp + current->sas_ss_size);
+ }
+diff -Naur linux-2.6.16/arch/x86_64/ia32/Makefile linux-2.6.16.16/arch/x86_64/ia32/Makefile
+--- linux-2.6.16/arch/x86_64/ia32/Makefile 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/x86_64/ia32/Makefile 2006-05-11 04:56:24.000000000 +0300
+@@ -27,5 +27,5 @@
+ $(obj)/vsyscall-%.so: $(src)/vsyscall.lds $(obj)/vsyscall-%.o FORCE
+ $(call if_changed,syscall)
+
+-AFLAGS_vsyscall-sysenter.o = -m32
+-AFLAGS_vsyscall-syscall.o = -m32
++AFLAGS_vsyscall-sysenter.o = -m32 -Wa,-32
++AFLAGS_vsyscall-syscall.o = -m32 -Wa,-32
+diff -Naur linux-2.6.16/arch/x86_64/kernel/entry.S linux-2.6.16.16/arch/x86_64/kernel/entry.S
+--- linux-2.6.16/arch/x86_64/kernel/entry.S 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/x86_64/kernel/entry.S 2006-05-11 04:56:24.000000000 +0300
+@@ -180,6 +180,10 @@
+ *
+ * XXX if we had a free scratch register we could save the RSP into the stack frame
+ * and report it properly in ps. Unfortunately we haven't.
++ *
++ * When user can change the frames always force IRET. That is because
++ * it deals with uncanonical addresses better. SYSRET has trouble
++ * with them due to bugs in both AMD and Intel CPUs.
+ */
+
+ ENTRY(system_call)
+@@ -254,7 +258,10 @@
+ xorl %esi,%esi # oldset -> arg2
+ call ptregscall_common
+ 1: movl $_TIF_NEED_RESCHED,%edi
+- jmp sysret_check
++ /* Use IRET because user could have changed frame. This
++ works because ptregscall_common has called FIXUP_TOP_OF_STACK. */
++ cli
++ jmp int_with_check
+
+ badsys:
+ movq $-ENOSYS,RAX-ARGOFFSET(%rsp)
+@@ -280,7 +287,8 @@
+ call syscall_trace_leave
+ RESTORE_TOP_OF_STACK %rbx
+ RESTORE_REST
+- jmp ret_from_sys_call
++ /* Use IRET because user could have changed frame */
++ jmp int_ret_from_sys_call
+ CFI_ENDPROC
+
+ /*
+@@ -408,25 +416,9 @@
+ CFI_ADJUST_CFA_OFFSET -8
+ CFI_REGISTER rip, r11
+ SAVE_REST
+- movq %r11, %r15
+- CFI_REGISTER rip, r15
+ FIXUP_TOP_OF_STACK %r11
+ call sys_execve
+- GET_THREAD_INFO(%rcx)
+- bt $TIF_IA32,threadinfo_flags(%rcx)
+- CFI_REMEMBER_STATE
+- jc exec_32bit
+ RESTORE_TOP_OF_STACK %r11
+- movq %r15, %r11
+- CFI_REGISTER rip, r11
+- RESTORE_REST
+- pushq %r11
+- CFI_ADJUST_CFA_OFFSET 8
+- CFI_REL_OFFSET rip, 0
+- ret
+-
+-exec_32bit:
+- CFI_RESTORE_STATE
+ movq %rax,RAX(%rsp)
+ RESTORE_REST
+ jmp int_ret_from_sys_call
+diff -Naur linux-2.6.16/arch/x86_64/kernel/pci-gart.c linux-2.6.16.16/arch/x86_64/kernel/pci-gart.c
+--- linux-2.6.16/arch/x86_64/kernel/pci-gart.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/x86_64/kernel/pci-gart.c 2006-05-11 04:56:24.000000000 +0300
+@@ -114,10 +114,6 @@
+ static void free_iommu(unsigned long offset, int size)
+ {
+ unsigned long flags;
+- if (size == 1) {
+- clear_bit(offset, iommu_gart_bitmap);
+- return;
+- }
+ spin_lock_irqsave(&iommu_bitmap_lock, flags);
+ __clear_bit_string(iommu_gart_bitmap, offset, size);
+ spin_unlock_irqrestore(&iommu_bitmap_lock, flags);
+diff -Naur linux-2.6.16/arch/x86_64/kernel/process.c linux-2.6.16.16/arch/x86_64/kernel/process.c
+--- linux-2.6.16/arch/x86_64/kernel/process.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/x86_64/kernel/process.c 2006-05-11 04:56:24.000000000 +0300
+@@ -527,8 +527,6 @@
+ int cpu = smp_processor_id();
+ struct tss_struct *tss = &per_cpu(init_tss, cpu);
+
+- unlazy_fpu(prev_p);
+-
+ /*
+ * Reload esp0, LDT and the page table pointer:
+ */
+@@ -591,6 +589,12 @@
+ prev->userrsp = read_pda(oldrsp);
+ write_pda(oldrsp, next->userrsp);
+ write_pda(pcurrent, next_p);
++
++ /* This must be here to ensure both math_state_restore() and
++ kernel_fpu_begin() work consistently.
++ And the AMD workaround requires it to be after DS reload. */
++ unlazy_fpu(prev_p);
++
+ write_pda(kernelstack,
+ task_stack_page(next_p) + THREAD_SIZE - PDA_STACKOFFSET);
+
+diff -Naur linux-2.6.16/arch/x86_64/kernel/setup.c linux-2.6.16.16/arch/x86_64/kernel/setup.c
+--- linux-2.6.16/arch/x86_64/kernel/setup.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/arch/x86_64/kernel/setup.c 2006-05-11 04:56:24.000000000 +0300
+@@ -909,6 +909,10 @@
+ if (c->x86 == 15 && ((level >= 0x0f48 && level < 0x0f50) || level >= 0x0f58))
+ set_bit(X86_FEATURE_REP_GOOD, &c->x86_capability);
+
++ /* Enable workaround for FXSAVE leak */
++ if (c->x86 >= 6)
++ set_bit(X86_FEATURE_FXSAVE_LEAK, &c->x86_capability);
++
+ r = get_model_name(c);
+ if (!r) {
+ switch (c->x86) {
+diff -Naur linux-2.6.16/block/genhd.c linux-2.6.16.16/block/genhd.c
+--- linux-2.6.16/block/genhd.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/block/genhd.c 2006-05-11 04:56:24.000000000 +0300
+@@ -16,8 +16,6 @@
+ #include <linux/kobj_map.h>
+ #include <linux/buffer_head.h>
+
+-#define MAX_PROBE_HASH 255 /* random */
+-
+ static struct subsystem block_subsys;
+
+ static DECLARE_MUTEX(block_subsys_sem);
+@@ -30,108 +28,29 @@
+ struct blk_major_name *next;
+ int major;
+ char name[16];
+-} *major_names[MAX_PROBE_HASH];
++} *major_names[BLKDEV_MAJOR_HASH_SIZE];
+
+ /* index in the above - for now: assume no multimajor ranges */
+ static inline int major_to_index(int major)
+ {
+- return major % MAX_PROBE_HASH;
+-}
+-
+-struct blkdev_info {
+- int index;
+- struct blk_major_name *bd;
+-};
+-
+-/*
+- * iterate over a list of blkdev_info structures. allows
+- * the major_names array to be iterated over from outside this file
+- * must be called with the block_subsys_sem held
+- */
+-void *get_next_blkdev(void *dev)
+-{
+- struct blkdev_info *info;
+-
+- if (dev == NULL) {
+- info = kmalloc(sizeof(*info), GFP_KERNEL);
+- if (!info)
+- goto out;
+- info->index=0;
+- info->bd = major_names[info->index];
+- if (info->bd)
+- goto out;
+- } else {
+- info = dev;
+- }
+-
+- while (info->index < ARRAY_SIZE(major_names)) {
+- if (info->bd)
+- info->bd = info->bd->next;
+- if (info->bd)
+- goto out;
+- /*
+- * No devices on this chain, move to the next
+- */
+- info->index++;
+- info->bd = (info->index < ARRAY_SIZE(major_names)) ?
+- major_names[info->index] : NULL;
+- if (info->bd)
+- goto out;
+- }
+-
+-out:
+- return info;
+-}
+-
+-void *acquire_blkdev_list(void)
+-{
+- down(&block_subsys_sem);
+- return get_next_blkdev(NULL);
+-}
+-
+-void release_blkdev_list(void *dev)
+-{
+- up(&block_subsys_sem);
+- kfree(dev);
++ return major % BLKDEV_MAJOR_HASH_SIZE;
+ }
+
++#ifdef CONFIG_PROC_FS
+
+-/*
+- * Count the number of records in the blkdev_list.
+- * must be called with the block_subsys_sem held
+- */
+-int count_blkdev_list(void)
++void blkdev_show(struct seq_file *f, off_t offset)
+ {
+- struct blk_major_name *n;
+- int i, count;
+-
+- count = 0;
++ struct blk_major_name *dp;
+
+- for (i = 0; i < ARRAY_SIZE(major_names); i++) {
+- for (n = major_names[i]; n; n = n->next)
+- count++;
++ if (offset < BLKDEV_MAJOR_HASH_SIZE) {
++ down(&block_subsys_sem);
++ for (dp = major_names[offset]; dp; dp = dp->next)
++ seq_printf(f, "%3d %s\n", dp->major, dp->name);
++ up(&block_subsys_sem);
+ }
+-
+- return count;
+-}
+-
+-/*
+- * extract the major and name values from a blkdev_info struct
+- * passed in as a void to *dev. Must be called with
+- * block_subsys_sem held
+- */
+-int get_blkdev_info(void *dev, int *major, char **name)
+-{
+- struct blkdev_info *info = dev;
+-
+- if (info->bd == NULL)
+- return 1;
+-
+- *major = info->bd->major;
+- *name = info->bd->name;
+- return 0;
+ }
+
++#endif /* CONFIG_PROC_FS */
+
+ int register_blkdev(unsigned int major, const char *name)
+ {
+diff -Naur linux-2.6.16/Documentation/dvb/get_dvb_firmware linux-2.6.16.16/Documentation/dvb/get_dvb_firmware
+--- linux-2.6.16/Documentation/dvb/get_dvb_firmware 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/Documentation/dvb/get_dvb_firmware 2006-05-11 04:56:24.000000000 +0300
+@@ -240,9 +240,9 @@
+ }
+
+ sub nxt2002 {
+- my $sourcefile = "Broadband4PC_4_2_11.zip";
++ my $sourcefile = "Technisat_DVB-PC_4_4_COMPACT.zip";
+ my $url = "http://www.bbti.us/download/windows/$sourcefile";
+- my $hash = "c6d2ea47a8f456d887ada0cfb718ff2a";
++ my $hash = "476befae8c7c1bb9648954060b1eec1f";
+ my $outfile = "dvb-fe-nxt2002.fw";
+ my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
+
+@@ -250,8 +250,8 @@
+
+ wgetfile($sourcefile, $url);
+ unzip($sourcefile, $tmpdir);
+- verify("$tmpdir/SkyNETU.sys", $hash);
+- extract("$tmpdir/SkyNETU.sys", 375832, 5908, $outfile);
++ verify("$tmpdir/SkyNET.sys", $hash);
++ extract("$tmpdir/SkyNET.sys", 331624, 5908, $outfile);
+
+ $outfile;
+ }
+diff -Naur linux-2.6.16/drivers/base/cpu.c linux-2.6.16.16/drivers/base/cpu.c
+--- linux-2.6.16/drivers/base/cpu.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/base/cpu.c 2006-05-11 04:56:24.000000000 +0300
+@@ -141,7 +141,7 @@
+ return error;
+ }
+
+-struct sys_device *get_cpu_sysdev(int cpu)
++struct sys_device *get_cpu_sysdev(unsigned cpu)
+ {
+ if (cpu < NR_CPUS)
+ return cpu_sys_devices[cpu];
+diff -Naur linux-2.6.16/drivers/base/firmware_class.c linux-2.6.16.16/drivers/base/firmware_class.c
+--- linux-2.6.16/drivers/base/firmware_class.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/base/firmware_class.c 2006-05-11 04:56:24.000000000 +0300
+@@ -211,18 +211,20 @@
+ fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size)
+ {
+ u8 *new_data;
++ int new_size = fw_priv->alloc_size;
+
+ if (min_size <= fw_priv->alloc_size)
+ return 0;
+
+- new_data = vmalloc(fw_priv->alloc_size + PAGE_SIZE);
++ new_size = ALIGN(min_size, PAGE_SIZE);
++ new_data = vmalloc(new_size);
+ if (!new_data) {
+ printk(KERN_ERR "%s: unable to alloc buffer\n", __FUNCTION__);
+ /* Make sure that we don't keep incomplete data */
+ fw_load_abort(fw_priv);
+ return -ENOMEM;
+ }
+- fw_priv->alloc_size += PAGE_SIZE;
++ fw_priv->alloc_size = new_size;
+ if (fw_priv->fw->data) {
+ memcpy(new_data, fw_priv->fw->data, fw_priv->fw->size);
+ vfree(fw_priv->fw->data);
+diff -Naur linux-2.6.16/drivers/base/node.c linux-2.6.16.16/drivers/base/node.c
+--- linux-2.6.16/drivers/base/node.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/base/node.c 2006-05-11 04:56:24.000000000 +0300
+@@ -106,7 +106,7 @@
+ other_node = 0;
+ for (i = 0; i < MAX_NR_ZONES; i++) {
+ struct zone *z = &pg->node_zones[i];
+- for (cpu = 0; cpu < NR_CPUS; cpu++) {
++ for_each_online_cpu(cpu) {
+ struct per_cpu_pageset *ps = zone_pcp(z,cpu);
+ numa_hit += ps->numa_hit;
+ numa_miss += ps->numa_miss;
+diff -Naur linux-2.6.16/drivers/block/cciss.c linux-2.6.16.16/drivers/block/cciss.c
+--- linux-2.6.16/drivers/block/cciss.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/block/cciss.c 2006-05-11 04:56:24.000000000 +0300
+@@ -1181,6 +1181,53 @@
+ return 0;
+ }
+
++static inline void complete_buffers(struct bio *bio, int status)
++{
++ while (bio) {
++ struct bio *xbh = bio->bi_next;
++ int nr_sectors = bio_sectors(bio);
++
++ bio->bi_next = NULL;
++ blk_finished_io(len);
++ bio_endio(bio, nr_sectors << 9, status ? 0 : -EIO);
++ bio = xbh;
++ }
++
++}
++
++static void cciss_softirq_done(struct request *rq)
++{
++ CommandList_struct *cmd = rq->completion_data;
++ ctlr_info_t *h = hba[cmd->ctlr];
++ unsigned long flags;
++ u64bit temp64;
++ int i, ddir;
++
++ if (cmd->Request.Type.Direction == XFER_READ)
++ ddir = PCI_DMA_FROMDEVICE;
++ else
++ ddir = PCI_DMA_TODEVICE;
++
++ /* command did not need to be retried */
++ /* unmap the DMA mapping for all the scatter gather elements */
++ for(i=0; i<cmd->Header.SGList; i++) {
++ temp64.val32.lower = cmd->SG[i].Addr.lower;
++ temp64.val32.upper = cmd->SG[i].Addr.upper;
++ pci_unmap_page(h->pdev, temp64.val, cmd->SG[i].Len, ddir);
++ }
++
++ complete_buffers(rq->bio, rq->errors);
++
++#ifdef CCISS_DEBUG
++ printk("Done with %p\n", rq);
++#endif /* CCISS_DEBUG */
++
++ spin_lock_irqsave(&h->lock, flags);
++ end_that_request_last(rq, rq->errors);
++ cmd_free(h, cmd,1);
++ spin_unlock_irqrestore(&h->lock, flags);
++}
++
+ /* This function will check the usage_count of the drive to be updated/added.
+ * If the usage_count is zero then the drive information will be updated and
+ * the disk will be re-registered with the kernel. If not then it will be
+@@ -1249,6 +1296,8 @@
+
+ blk_queue_max_sectors(disk->queue, 512);
+
++ blk_queue_softirq_done(disk->queue, cciss_softirq_done);
++
+ disk->queue->queuedata = hba[ctlr];
+
+ blk_queue_hardsect_size(disk->queue,
+@@ -2148,20 +2197,6 @@
+ addQ (&(h->cmpQ), c);
+ }
+ }
+-
+-static inline void complete_buffers(struct bio *bio, int status)
+-{
+- while (bio) {
+- struct bio *xbh = bio->bi_next;
+- int nr_sectors = bio_sectors(bio);
+-
+- bio->bi_next = NULL;
+- blk_finished_io(len);
+- bio_endio(bio, nr_sectors << 9, status ? 0 : -EIO);
+- bio = xbh;
+- }
+-
+-}
+ /* Assumes that CCISS_LOCK(h->ctlr) is held. */
+ /* Zeros out the error record and then resends the command back */
+ /* to the controller */
+@@ -2179,39 +2214,6 @@
+ start_io(h);
+ }
+
+-static void cciss_softirq_done(struct request *rq)
+-{
+- CommandList_struct *cmd = rq->completion_data;
+- ctlr_info_t *h = hba[cmd->ctlr];
+- unsigned long flags;
+- u64bit temp64;
+- int i, ddir;
+-
+- if (cmd->Request.Type.Direction == XFER_READ)
+- ddir = PCI_DMA_FROMDEVICE;
+- else
+- ddir = PCI_DMA_TODEVICE;
+-
+- /* command did not need to be retried */
+- /* unmap the DMA mapping for all the scatter gather elements */
+- for(i=0; i<cmd->Header.SGList; i++) {
+- temp64.val32.lower = cmd->SG[i].Addr.lower;
+- temp64.val32.upper = cmd->SG[i].Addr.upper;
+- pci_unmap_page(h->pdev, temp64.val, cmd->SG[i].Len, ddir);
+- }
+-
+- complete_buffers(rq->bio, rq->errors);
+-
+-#ifdef CCISS_DEBUG
+- printk("Done with %p\n", rq);
+-#endif /* CCISS_DEBUG */
+-
+- spin_lock_irqsave(&h->lock, flags);
+- end_that_request_last(rq, rq->errors);
+- cmd_free(h, cmd,1);
+- spin_unlock_irqrestore(&h->lock, flags);
+-}
+-
+ /* checks the status of the job and calls complete buffers to mark all
+ * buffers for the completed job. Note that this function does not need
+ * to hold the hba/queue lock.
+@@ -3269,8 +3271,8 @@
+ unregister_blkdev(hba[i]->major, hba[i]->devname);
+ clean1:
+ release_io_mem(hba[i]);
+- free_hba(i);
+ hba[i]->busy_initializing = 0;
++ free_hba(i);
+ return(-1);
+ }
+
+diff -Naur linux-2.6.16/drivers/char/agp/efficeon-agp.c linux-2.6.16.16/drivers/char/agp/efficeon-agp.c
+--- linux-2.6.16/drivers/char/agp/efficeon-agp.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/char/agp/efficeon-agp.c 2006-05-11 04:56:24.000000000 +0300
+@@ -64,6 +64,12 @@
+ {.mask = 0x00000001, .type = 0}
+ };
+
++/* This function does the same thing as mask_memory() for this chipset... */
++static inline unsigned long efficeon_mask_memory(unsigned long addr)
++{
++ return addr | 0x00000001;
++}
++
+ static struct aper_size_info_lvl2 efficeon_generic_sizes[4] =
+ {
+ {256, 65536, 0},
+@@ -251,7 +257,7 @@
+ last_page = NULL;
+ for (i = 0; i < count; i++) {
+ int index = pg_start + i;
+- unsigned long insert = mem->memory[i];
++ unsigned long insert = efficeon_mask_memory(mem->memory[i]);
+
+ page = (unsigned int *) efficeon_private.l1_table[index >> 10];
+
+diff -Naur linux-2.6.16/drivers/char/cs5535_gpio.c linux-2.6.16.16/drivers/char/cs5535_gpio.c
+--- linux-2.6.16/drivers/char/cs5535_gpio.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/char/cs5535_gpio.c 2006-05-11 04:56:24.000000000 +0300
+@@ -241,9 +241,10 @@
+ static void __exit cs5535_gpio_cleanup(void)
+ {
+ dev_t dev_id = MKDEV(major, 0);
++
++ cdev_del(&cs5535_gpio_cdev);
+ unregister_chrdev_region(dev_id, CS5535_GPIO_COUNT);
+- if (gpio_base != 0)
+- release_region(gpio_base, CS5535_GPIO_SIZE);
++ release_region(gpio_base, CS5535_GPIO_SIZE);
+ }
+
+ module_init(cs5535_gpio_init);
+diff -Naur linux-2.6.16/drivers/char/ipmi/ipmi_bt_sm.c linux-2.6.16.16/drivers/char/ipmi/ipmi_bt_sm.c
+--- linux-2.6.16/drivers/char/ipmi/ipmi_bt_sm.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/char/ipmi/ipmi_bt_sm.c 2006-05-11 04:56:24.000000000 +0300
+@@ -165,7 +165,7 @@
+ {
+ unsigned int i;
+
+- if ((size < 2) || (size > IPMI_MAX_MSG_LENGTH))
++ if ((size < 2) || (size > (IPMI_MAX_MSG_LENGTH - 2)))
+ return -1;
+
+ if ((bt->state != BT_STATE_IDLE) && (bt->state != BT_STATE_HOSED))
+diff -Naur linux-2.6.16/drivers/char/Kconfig linux-2.6.16.16/drivers/char/Kconfig
+--- linux-2.6.16/drivers/char/Kconfig 2006-05-18 01:12:22.000000000 +0300
++++ linux-2.6.16.16/drivers/char/Kconfig 2006-05-17 21:41:29.000000000 +0300
+@@ -187,6 +187,7 @@
+ config ISI
+ tristate "Multi-Tech multiport card support (EXPERIMENTAL)"
+ depends on SERIAL_NONSTANDARD
++ select FW_LOADER
+ help
+ This is a driver for the Multi-Tech cards which provide several
+ serial ports. The driver is experimental and can currently only be
+diff -Naur linux-2.6.16/drivers/char/snsc.c linux-2.6.16.16/drivers/char/snsc.c
+--- linux-2.6.16/drivers/char/snsc.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/char/snsc.c 2006-05-11 04:56:24.000000000 +0300
+@@ -391,7 +391,8 @@
+ format_module_id(devnamep, geo_module(geoid),
+ MODULE_FORMAT_BRIEF);
+ devnamep = devname + strlen(devname);
+- sprintf(devnamep, "#%d", geo_slab(geoid));
++ sprintf(devnamep, "^%d#%d", geo_slot(geoid),
++ geo_slab(geoid));
+
+ /* allocate sysctl device data */
+ scd = kmalloc(sizeof (struct sysctl_data_s),
+diff -Naur linux-2.6.16/drivers/char/sonypi.c linux-2.6.16.16/drivers/char/sonypi.c
+--- linux-2.6.16/drivers/char/sonypi.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/char/sonypi.c 2006-05-11 04:56:24.000000000 +0300
+@@ -1341,6 +1341,9 @@
+ else if ((pcidev = pci_get_device(PCI_VENDOR_ID_INTEL,
+ PCI_DEVICE_ID_INTEL_ICH6_1, NULL)))
+ sonypi_device.model = SONYPI_DEVICE_MODEL_TYPE3;
++ else if ((pcidev = pci_get_device(PCI_VENDOR_ID_INTEL,
++ PCI_DEVICE_ID_INTEL_ICH7_1, NULL)))
++ sonypi_device.model = SONYPI_DEVICE_MODEL_TYPE3;
+ else
+ sonypi_device.model = SONYPI_DEVICE_MODEL_TYPE2;
+
+diff -Naur linux-2.6.16/drivers/char/tipar.c linux-2.6.16.16/drivers/char/tipar.c
+--- linux-2.6.16/drivers/char/tipar.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/char/tipar.c 2006-05-11 04:56:24.000000000 +0300
+@@ -515,7 +515,7 @@
+ err = PTR_ERR(tipar_class);
+ goto out_chrdev;
+ }
+- if (parport_register_driver(&tipar_driver) || tp_count == 0) {
++ if (parport_register_driver(&tipar_driver)) {
+ printk(KERN_ERR "tipar: unable to register with parport\n");
+ err = -EIO;
+ goto out_class;
+diff -Naur linux-2.6.16/drivers/char/tlclk.c linux-2.6.16.16/drivers/char/tlclk.c
+--- linux-2.6.16/drivers/char/tlclk.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/char/tlclk.c 2006-05-11 04:56:24.000000000 +0300
+@@ -327,7 +327,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(received_ref_clk3a, S_IWUGO, NULL,
++static DEVICE_ATTR(received_ref_clk3a, (S_IWUSR|S_IWGRP), NULL,
+ store_received_ref_clk3a);
+
+
+@@ -349,7 +349,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(received_ref_clk3b, S_IWUGO, NULL,
++static DEVICE_ATTR(received_ref_clk3b, (S_IWUSR|S_IWGRP), NULL,
+ store_received_ref_clk3b);
+
+
+@@ -371,7 +371,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(enable_clk3b_output, S_IWUGO, NULL,
++static DEVICE_ATTR(enable_clk3b_output, (S_IWUSR|S_IWGRP), NULL,
+ store_enable_clk3b_output);
+
+ static ssize_t store_enable_clk3a_output(struct device *d,
+@@ -392,7 +392,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(enable_clk3a_output, S_IWUGO, NULL,
++static DEVICE_ATTR(enable_clk3a_output, (S_IWUSR|S_IWGRP), NULL,
+ store_enable_clk3a_output);
+
+ static ssize_t store_enable_clkb1_output(struct device *d,
+@@ -413,7 +413,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(enable_clkb1_output, S_IWUGO, NULL,
++static DEVICE_ATTR(enable_clkb1_output, (S_IWUSR|S_IWGRP), NULL,
+ store_enable_clkb1_output);
+
+
+@@ -435,7 +435,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(enable_clka1_output, S_IWUGO, NULL,
++static DEVICE_ATTR(enable_clka1_output, (S_IWUSR|S_IWGRP), NULL,
+ store_enable_clka1_output);
+
+ static ssize_t store_enable_clkb0_output(struct device *d,
+@@ -456,7 +456,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(enable_clkb0_output, S_IWUGO, NULL,
++static DEVICE_ATTR(enable_clkb0_output, (S_IWUSR|S_IWGRP), NULL,
+ store_enable_clkb0_output);
+
+ static ssize_t store_enable_clka0_output(struct device *d,
+@@ -477,7 +477,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(enable_clka0_output, S_IWUGO, NULL,
++static DEVICE_ATTR(enable_clka0_output, (S_IWUSR|S_IWGRP), NULL,
+ store_enable_clka0_output);
+
+ static ssize_t store_select_amcb2_transmit_clock(struct device *d,
+@@ -519,7 +519,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(select_amcb2_transmit_clock, S_IWUGO, NULL,
++static DEVICE_ATTR(select_amcb2_transmit_clock, (S_IWUSR|S_IWGRP), NULL,
+ store_select_amcb2_transmit_clock);
+
+ static ssize_t store_select_amcb1_transmit_clock(struct device *d,
+@@ -560,7 +560,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(select_amcb1_transmit_clock, S_IWUGO, NULL,
++static DEVICE_ATTR(select_amcb1_transmit_clock, (S_IWUSR|S_IWGRP), NULL,
+ store_select_amcb1_transmit_clock);
+
+ static ssize_t store_select_redundant_clock(struct device *d,
+@@ -581,7 +581,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(select_redundant_clock, S_IWUGO, NULL,
++static DEVICE_ATTR(select_redundant_clock, (S_IWUSR|S_IWGRP), NULL,
+ store_select_redundant_clock);
+
+ static ssize_t store_select_ref_frequency(struct device *d,
+@@ -602,7 +602,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(select_ref_frequency, S_IWUGO, NULL,
++static DEVICE_ATTR(select_ref_frequency, (S_IWUSR|S_IWGRP), NULL,
+ store_select_ref_frequency);
+
+ static ssize_t store_filter_select(struct device *d,
+@@ -623,7 +623,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(filter_select, S_IWUGO, NULL, store_filter_select);
++static DEVICE_ATTR(filter_select, (S_IWUSR|S_IWGRP), NULL, store_filter_select);
+
+ static ssize_t store_hardware_switching_mode(struct device *d,
+ struct device_attribute *attr, const char *buf, size_t count)
+@@ -643,7 +643,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(hardware_switching_mode, S_IWUGO, NULL,
++static DEVICE_ATTR(hardware_switching_mode, (S_IWUSR|S_IWGRP), NULL,
+ store_hardware_switching_mode);
+
+ static ssize_t store_hardware_switching(struct device *d,
+@@ -664,7 +664,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(hardware_switching, S_IWUGO, NULL,
++static DEVICE_ATTR(hardware_switching, (S_IWUSR|S_IWGRP), NULL,
+ store_hardware_switching);
+
+ static ssize_t store_refalign (struct device *d,
+@@ -684,7 +684,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(refalign, S_IWUGO, NULL, store_refalign);
++static DEVICE_ATTR(refalign, (S_IWUSR|S_IWGRP), NULL, store_refalign);
+
+ static ssize_t store_mode_select (struct device *d,
+ struct device_attribute *attr, const char *buf, size_t count)
+@@ -704,7 +704,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(mode_select, S_IWUGO, NULL, store_mode_select);
++static DEVICE_ATTR(mode_select, (S_IWUSR|S_IWGRP), NULL, store_mode_select);
+
+ static ssize_t store_reset (struct device *d,
+ struct device_attribute *attr, const char *buf, size_t count)
+@@ -724,7 +724,7 @@
+ return strnlen(buf, count);
+ }
+
+-static DEVICE_ATTR(reset, S_IWUGO, NULL, store_reset);
++static DEVICE_ATTR(reset, (S_IWUSR|S_IWGRP), NULL, store_reset);
+
+ static struct attribute *tlclk_sysfs_entries[] = {
+ &dev_attr_current_ref.attr,
+@@ -767,6 +767,7 @@
+ printk(KERN_ERR "tlclk: can't get major %d.\n", tlclk_major);
+ return ret;
+ }
++ tlclk_major = ret;
+ alarm_events = kzalloc( sizeof(struct tlclk_alarms), GFP_KERNEL);
+ if (!alarm_events)
+ goto out1;
+diff -Naur linux-2.6.16/drivers/char/tty_io.c linux-2.6.16.16/drivers/char/tty_io.c
+--- linux-2.6.16/drivers/char/tty_io.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/char/tty_io.c 2006-05-11 04:56:24.000000000 +0300
+@@ -2706,7 +2706,11 @@
+ }
+ task_lock(p);
+ if (p->files) {
+- rcu_read_lock();
++ /*
++ * We don't take a ref to the file, so we must
++ * hold ->file_lock instead.
++ */
++ spin_lock(&p->files->file_lock);
+ fdt = files_fdtable(p->files);
+ for (i=0; i < fdt->max_fds; i++) {
+ filp = fcheck_files(p->files, i);
+@@ -2721,7 +2725,7 @@
+ break;
+ }
+ }
+- rcu_read_unlock();
++ spin_unlock(&p->files->file_lock);
+ }
+ task_unlock(p);
+ } while_each_task_pid(session, PIDTYPE_SID, p);
+diff -Naur linux-2.6.16/drivers/edac/Kconfig linux-2.6.16.16/drivers/edac/Kconfig
+--- linux-2.6.16/drivers/edac/Kconfig 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/edac/Kconfig 2006-05-11 04:56:24.000000000 +0300
+@@ -71,7 +71,7 @@
+
+ config EDAC_E752X
+ tristate "Intel e752x (e7520, e7525, e7320)"
+- depends on EDAC_MM_EDAC && PCI
++ depends on EDAC_MM_EDAC && PCI && HOTPLUG
+ help
+ Support for error detection and correction on the Intel
+ E7520, E7525, E7320 server chipsets.
+diff -Naur linux-2.6.16/drivers/i2c/busses/i2c-i801.c linux-2.6.16.16/drivers/i2c/busses/i2c-i801.c
+--- linux-2.6.16/drivers/i2c/busses/i2c-i801.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/i2c/busses/i2c-i801.c 2006-05-11 04:56:24.000000000 +0300
+@@ -478,6 +478,11 @@
+ ret = i801_transaction();
+ }
+
++ /* Some BIOSes don't like it when PEC is enabled at reboot or resume
++ time, so we forcibly disable it after every transaction. */
++ if (hwpec)
++ outb_p(0, SMBAUXCTL);
++
+ if(block)
+ return ret;
+ if(ret)
+diff -Naur linux-2.6.16/drivers/i2c/chips/m41t00.c linux-2.6.16.16/drivers/i2c/chips/m41t00.c
+--- linux-2.6.16/drivers/i2c/chips/m41t00.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/i2c/chips/m41t00.c 2006-05-11 04:56:24.000000000 +0300
+@@ -129,13 +129,13 @@
+ if ((i2c_smbus_write_byte_data(save_client, 0, tm.tm_sec & 0x7f) < 0)
+ || (i2c_smbus_write_byte_data(save_client, 1, tm.tm_min & 0x7f)
+ < 0)
+- || (i2c_smbus_write_byte_data(save_client, 2, tm.tm_hour & 0x7f)
++ || (i2c_smbus_write_byte_data(save_client, 2, tm.tm_hour & 0x3f)
+ < 0)
+- || (i2c_smbus_write_byte_data(save_client, 4, tm.tm_mday & 0x7f)
++ || (i2c_smbus_write_byte_data(save_client, 4, tm.tm_mday & 0x3f)
+ < 0)
+- || (i2c_smbus_write_byte_data(save_client, 5, tm.tm_mon & 0x7f)
++ || (i2c_smbus_write_byte_data(save_client, 5, tm.tm_mon & 0x1f)
+ < 0)
+- || (i2c_smbus_write_byte_data(save_client, 6, tm.tm_year & 0x7f)
++ || (i2c_smbus_write_byte_data(save_client, 6, tm.tm_year & 0xff)
+ < 0))
+
+ dev_warn(&save_client->dev,"m41t00: can't write to rtc chip\n");
+diff -Naur linux-2.6.16/drivers/ide/pci/alim15x3.c linux-2.6.16.16/drivers/ide/pci/alim15x3.c
+--- linux-2.6.16/drivers/ide/pci/alim15x3.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/ide/pci/alim15x3.c 2006-05-11 04:56:24.000000000 +0300
+@@ -731,6 +731,8 @@
+
+ if(m5229_revision <= 0x20)
+ tmpbyte = (tmpbyte & (~0x02)) | 0x01;
++ else if (m5229_revision == 0xc7)
++ tmpbyte |= 0x03;
+ else
+ tmpbyte |= 0x01;
+
+diff -Naur linux-2.6.16/drivers/ieee1394/sbp2.c linux-2.6.16.16/drivers/ieee1394/sbp2.c
+--- linux-2.6.16/drivers/ieee1394/sbp2.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/ieee1394/sbp2.c 2006-05-11 04:56:24.000000000 +0300
+@@ -495,22 +495,17 @@
+ /*
+ * This function finds the sbp2_command for a given outstanding SCpnt.
+ * Only looks at the inuse list.
++ * Must be called with scsi_id->sbp2_command_orb_lock held.
+ */
+-static struct sbp2_command_info *sbp2util_find_command_for_SCpnt(struct scsi_id_instance_data *scsi_id, void *SCpnt)
++static struct sbp2_command_info *sbp2util_find_command_for_SCpnt(
++ struct scsi_id_instance_data *scsi_id, void *SCpnt)
+ {
+ struct sbp2_command_info *command;
+- unsigned long flags;
+
+- spin_lock_irqsave(&scsi_id->sbp2_command_orb_lock, flags);
+- if (!list_empty(&scsi_id->sbp2_command_orb_inuse)) {
+- list_for_each_entry(command, &scsi_id->sbp2_command_orb_inuse, list) {
+- if (command->Current_SCpnt == SCpnt) {
+- spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags);
++ if (!list_empty(&scsi_id->sbp2_command_orb_inuse))
++ list_for_each_entry(command, &scsi_id->sbp2_command_orb_inuse, list)
++ if (command->Current_SCpnt == SCpnt)
+ return command;
+- }
+- }
+- }
+- spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags);
+ return NULL;
+ }
+
+@@ -579,17 +574,15 @@
+
+ /*
+ * This function moves a command to the completed orb list.
++ * Must be called with scsi_id->sbp2_command_orb_lock held.
+ */
+-static void sbp2util_mark_command_completed(struct scsi_id_instance_data *scsi_id,
+- struct sbp2_command_info *command)
++static void sbp2util_mark_command_completed(
++ struct scsi_id_instance_data *scsi_id,
++ struct sbp2_command_info *command)
+ {
+- unsigned long flags;
+-
+- spin_lock_irqsave(&scsi_id->sbp2_command_orb_lock, flags);
+ list_del(&command->list);
+ sbp2util_free_command_dma(command);
+ list_add_tail(&command->list, &scsi_id->sbp2_command_orb_completed);
+- spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags);
+ }
+
+ /*
+@@ -2177,7 +2170,9 @@
+ * Matched status with command, now grab scsi command pointers and check status
+ */
+ SCpnt = command->Current_SCpnt;
++ spin_lock_irqsave(&scsi_id->sbp2_command_orb_lock, flags);
+ sbp2util_mark_command_completed(scsi_id, command);
++ spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags);
+
+ if (SCpnt) {
+
+@@ -2513,6 +2508,7 @@
+ (struct scsi_id_instance_data *)SCpnt->device->host->hostdata[0];
+ struct sbp2scsi_host_info *hi = scsi_id->hi;
+ struct sbp2_command_info *command;
++ unsigned long flags;
+
+ SBP2_ERR("aborting sbp2 command");
+ scsi_print_command(SCpnt);
+@@ -2523,6 +2519,7 @@
+ * Right now, just return any matching command structures
+ * to the free pool.
+ */
++ spin_lock_irqsave(&scsi_id->sbp2_command_orb_lock, flags);
+ command = sbp2util_find_command_for_SCpnt(scsi_id, SCpnt);
+ if (command) {
+ SBP2_DEBUG("Found command to abort");
+@@ -2540,6 +2537,7 @@
+ command->Current_done(command->Current_SCpnt);
+ }
+ }
++ spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags);
+
+ /*
+ * Initiate a fetch agent reset.
+diff -Naur linux-2.6.16/drivers/macintosh/therm_adt746x.c linux-2.6.16.16/drivers/macintosh/therm_adt746x.c
+--- linux-2.6.16/drivers/macintosh/therm_adt746x.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/macintosh/therm_adt746x.c 2006-05-11 04:56:24.000000000 +0300
+@@ -627,8 +627,8 @@
+ if(therm_type == ADT7460)
+ device_create_file(&of_dev->dev, &dev_attr_sensor2_fan_speed);
+
+-#ifndef CONFIG_I2C_KEYWEST
+- request_module("i2c-keywest");
++#ifndef CONFIG_I2C_POWERMAC
++ request_module("i2c-powermac");
+ #endif
+
+ return i2c_add_driver(&thermostat_driver);
+diff -Naur linux-2.6.16/drivers/md/dm.c linux-2.6.16.16/drivers/md/dm.c
+--- linux-2.6.16/drivers/md/dm.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/md/dm.c 2006-05-11 04:56:24.000000000 +0300
+@@ -533,30 +533,35 @@
+
+ } else {
+ /*
+- * Create two copy bios to deal with io that has
+- * been split across a target.
++ * Handle a bvec that must be split between two or more targets.
+ */
+ struct bio_vec *bv = bio->bi_io_vec + ci->idx;
++ sector_t remaining = to_sector(bv->bv_len);
++ unsigned int offset = 0;
+
+- clone = split_bvec(bio, ci->sector, ci->idx,
+- bv->bv_offset, max);
+- __map_bio(ti, clone, tio);
+-
+- ci->sector += max;
+- ci->sector_count -= max;
+- ti = dm_table_find_target(ci->map, ci->sector);
+-
+- len = to_sector(bv->bv_len) - max;
+- clone = split_bvec(bio, ci->sector, ci->idx,
+- bv->bv_offset + to_bytes(max), len);
+- tio = alloc_tio(ci->md);
+- tio->io = ci->io;
+- tio->ti = ti;
+- memset(&tio->info, 0, sizeof(tio->info));
+- __map_bio(ti, clone, tio);
++ do {
++ if (offset) {
++ ti = dm_table_find_target(ci->map, ci->sector);
++ max = max_io_len(ci->md, ci->sector, ti);
++
++ tio = alloc_tio(ci->md);
++ tio->io = ci->io;
++ tio->ti = ti;
++ memset(&tio->info, 0, sizeof(tio->info));
++ }
++
++ len = min(remaining, max);
++
++ clone = split_bvec(bio, ci->sector, ci->idx,
++ bv->bv_offset + offset, len);
++
++ __map_bio(ti, clone, tio);
++
++ ci->sector += len;
++ ci->sector_count -= len;
++ offset += to_bytes(len);
++ } while (remaining -= len);
+
+- ci->sector += len;
+- ci->sector_count -= len;
+ ci->idx++;
+ }
+ }
+@@ -1093,6 +1098,7 @@
+ {
+ struct dm_table *map = NULL;
+ DECLARE_WAITQUEUE(wait, current);
++ struct bio *def;
+ int r = -EINVAL;
+
+ down(&md->suspend_lock);
+@@ -1152,9 +1158,11 @@
+ /* were we interrupted ? */
+ r = -EINTR;
+ if (atomic_read(&md->pending)) {
++ clear_bit(DMF_BLOCK_IO, &md->flags);
++ def = bio_list_get(&md->deferred);
++ __flush_deferred_io(md, def);
+ up_write(&md->io_lock);
+ unlock_fs(md);
+- clear_bit(DMF_BLOCK_IO, &md->flags);
+ goto out;
+ }
+ up_write(&md->io_lock);
+diff -Naur linux-2.6.16/drivers/md/dm-snap.c linux-2.6.16.16/drivers/md/dm-snap.c
+--- linux-2.6.16/drivers/md/dm-snap.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/md/dm-snap.c 2006-05-11 04:56:24.000000000 +0300
+@@ -542,8 +542,12 @@
+ {
+ struct dm_snapshot *s = (struct dm_snapshot *) ti->private;
+
++ /* Prevent further origin writes from using this snapshot. */
++ /* After this returns there can be no new kcopyd jobs. */
+ unregister_snapshot(s);
+
++ kcopyd_client_destroy(s->kcopyd_client);
++
+ exit_exception_table(&s->pending, pending_cache);
+ exit_exception_table(&s->complete, exception_cache);
+
+@@ -552,7 +556,7 @@
+
+ dm_put_device(ti, s->origin);
+ dm_put_device(ti, s->cow);
+- kcopyd_client_destroy(s->kcopyd_client);
++
+ kfree(s);
+ }
+
+diff -Naur linux-2.6.16/drivers/md/kcopyd.c linux-2.6.16.16/drivers/md/kcopyd.c
+--- linux-2.6.16/drivers/md/kcopyd.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/md/kcopyd.c 2006-05-11 04:56:24.000000000 +0300
+@@ -44,6 +44,9 @@
+ struct page_list *pages;
+ unsigned int nr_pages;
+ unsigned int nr_free_pages;
++
++ wait_queue_head_t destroyq;
++ atomic_t nr_jobs;
+ };
+
+ static struct page_list *alloc_pl(void)
+@@ -293,10 +296,15 @@
+ int read_err = job->read_err;
+ unsigned int write_err = job->write_err;
+ kcopyd_notify_fn fn = job->fn;
++ struct kcopyd_client *kc = job->kc;
+
+- kcopyd_put_pages(job->kc, job->pages);
++ kcopyd_put_pages(kc, job->pages);
+ mempool_free(job, _job_pool);
+ fn(read_err, write_err, context);
++
++ if (atomic_dec_and_test(&kc->nr_jobs))
++ wake_up(&kc->destroyq);
++
+ return 0;
+ }
+
+@@ -431,6 +439,7 @@
+ */
+ static void dispatch_job(struct kcopyd_job *job)
+ {
++ atomic_inc(&job->kc->nr_jobs);
+ push(&_pages_jobs, job);
+ wake();
+ }
+@@ -670,6 +679,9 @@
+ return r;
+ }
+
++ init_waitqueue_head(&kc->destroyq);
++ atomic_set(&kc->nr_jobs, 0);
++
+ client_add(kc);
+ *result = kc;
+ return 0;
+@@ -677,6 +689,9 @@
+
+ void kcopyd_client_destroy(struct kcopyd_client *kc)
+ {
++ /* Wait for completion of all jobs submitted by this client. */
++ wait_event(kc->destroyq, !atomic_read(&kc->nr_jobs));
++
+ dm_io_put(kc->nr_pages);
+ client_free_pages(kc);
+ client_del(kc);
+diff -Naur linux-2.6.16/drivers/media/dvb/dvb-usb/cxusb.c linux-2.6.16.16/drivers/media/dvb/dvb-usb/cxusb.c
+--- linux-2.6.16/drivers/media/dvb/dvb-usb/cxusb.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/media/dvb/dvb-usb/cxusb.c 2006-05-11 04:56:24.000000000 +0300
+@@ -149,6 +149,15 @@
+ return cxusb_ctrl_msg(d, CMD_POWER_OFF, &b, 1, NULL, 0);
+ }
+
++static int cxusb_bluebird_power_ctrl(struct dvb_usb_device *d, int onoff)
++{
++ u8 b = 0;
++ if (onoff)
++ return cxusb_ctrl_msg(d, CMD_POWER_ON, &b, 1, NULL, 0);
++ else
++ return 0;
++}
++
+ static int cxusb_streaming_ctrl(struct dvb_usb_device *d, int onoff)
+ {
+ u8 buf[2] = { 0x03, 0x00 };
+@@ -505,7 +514,7 @@
+ .size_of_priv = sizeof(struct cxusb_state),
+
+ .streaming_ctrl = cxusb_streaming_ctrl,
+- .power_ctrl = cxusb_power_ctrl,
++ .power_ctrl = cxusb_bluebird_power_ctrl,
+ .frontend_attach = cxusb_lgdt3303_frontend_attach,
+ .tuner_attach = cxusb_lgh064f_tuner_attach,
+
+@@ -545,7 +554,7 @@
+ .size_of_priv = sizeof(struct cxusb_state),
+
+ .streaming_ctrl = cxusb_streaming_ctrl,
+- .power_ctrl = cxusb_power_ctrl,
++ .power_ctrl = cxusb_bluebird_power_ctrl,
+ .frontend_attach = cxusb_dee1601_frontend_attach,
+ .tuner_attach = cxusb_dee1601_tuner_attach,
+
+@@ -594,7 +603,7 @@
+ .size_of_priv = sizeof(struct cxusb_state),
+
+ .streaming_ctrl = cxusb_streaming_ctrl,
+- .power_ctrl = cxusb_power_ctrl,
++ .power_ctrl = cxusb_bluebird_power_ctrl,
+ .frontend_attach = cxusb_mt352_frontend_attach,
+ .tuner_attach = cxusb_lgz201_tuner_attach,
+
+@@ -634,7 +643,7 @@
+ .size_of_priv = sizeof(struct cxusb_state),
+
+ .streaming_ctrl = cxusb_streaming_ctrl,
+- .power_ctrl = cxusb_power_ctrl,
++ .power_ctrl = cxusb_bluebird_power_ctrl,
+ .frontend_attach = cxusb_mt352_frontend_attach,
+ .tuner_attach = cxusb_dtt7579_tuner_attach,
+
+diff -Naur linux-2.6.16/drivers/media/video/Kconfig linux-2.6.16.16/drivers/media/video/Kconfig
+--- linux-2.6.16/drivers/media/video/Kconfig 2006-05-18 01:12:22.000000000 +0300
++++ linux-2.6.16.16/drivers/media/video/Kconfig 2006-05-17 21:41:30.000000000 +0300
+@@ -349,6 +349,7 @@
+ config VIDEO_DECODER
+ tristate "Add support for additional video chipsets"
+ depends on VIDEO_DEV && I2C && EXPERIMENTAL
++ select FW_LOADER
+ ---help---
+ Say Y here to compile drivers for SAA7115, SAA7127 and CX25840
+ video decoders.
+diff -Naur linux-2.6.16/drivers/media/video/saa7127.c linux-2.6.16.16/drivers/media/video/saa7127.c
+--- linux-2.6.16/drivers/media/video/saa7127.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/media/video/saa7127.c 2006-05-11 04:56:24.000000000 +0300
+@@ -141,6 +141,7 @@
+ static const struct i2c_reg_value saa7129_init_config_extra[] = {
+ { SAA7127_REG_OUTPUT_PORT_CONTROL, 0x38 },
+ { SAA7127_REG_VTRIG, 0xfa },
++ { 0, 0 }
+ };
+
+ static const struct i2c_reg_value saa7127_init_config_common[] = {
+diff -Naur linux-2.6.16/drivers/media/video/tuner-types.c linux-2.6.16.16/drivers/media/video/tuner-types.c
+--- linux-2.6.16/drivers/media/video/tuner-types.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/media/video/tuner-types.c 2006-05-11 04:56:24.000000000 +0300
+@@ -1087,8 +1087,8 @@
+ /* ------------ TUNER_SAMSUNG_TCPN_2121P30A - Samsung NTSC ------------ */
+
+ static struct tuner_range tuner_samsung_tcpn_2121p30a_ntsc_ranges[] = {
+- { 16 * 175.75 /*MHz*/, 0x01, },
+- { 16 * 410.25 /*MHz*/, 0x02, },
++ { 16 * 130.00 /*MHz*/, 0x01, },
++ { 16 * 364.50 /*MHz*/, 0x02, },
+ { 16 * 999.99 , 0x08, },
+ };
+
+diff -Naur linux-2.6.16/drivers/mtd/nand/Kconfig linux-2.6.16.16/drivers/mtd/nand/Kconfig
+--- linux-2.6.16/drivers/mtd/nand/Kconfig 2006-05-18 01:12:23.000000000 +0300
++++ linux-2.6.16.16/drivers/mtd/nand/Kconfig 2006-05-17 22:32:57.000000000 +0300
+@@ -184,15 +184,14 @@
+ Even if you leave this disabled, you can enable BBT writes at module
+ load time (assuming you build diskonchip as a module) with the module
+ parameter "inftl_bbt_write=1".
+-
+- config MTD_NAND_SHARPSL
+- bool "Support for NAND Flash on Sharp SL Series (C7xx + others)"
+- depends on MTD_NAND && ARCH_PXA
+-
+- config MTD_NAND_NANDSIM
+- bool "Support for NAND Flash Simulator"
+- depends on MTD_NAND && MTD_PARTITIONS
+
++config MTD_NAND_SHARPSL
++ tristate "Support for NAND Flash on Sharp SL Series (C7xx + others)"
++ depends on MTD_NAND && ARCH_PXA
++
++config MTD_NAND_NANDSIM
++ tristate "Support for NAND Flash Simulator"
++ depends on MTD_NAND && MTD_PARTITIONS
+ help
+ The simulator may simulate verious NAND flash chips for the
+ MTD nand layer.
+@@ -200,7 +199,6 @@
+ config MTD_NAND_OMAP_HW
+ bool "OMAP HW NAND Flash controller support"
+ depends on ARM && ARCH_OMAP16XX && MTD_NAND
+-
+ help
+ Driver for TI OMAP16xx hardware NAND flash controller.
+
+diff -Naur linux-2.6.16/drivers/net/e1000/e1000_main.c linux-2.6.16.16/drivers/net/e1000/e1000_main.c
+--- linux-2.6.16/drivers/net/e1000/e1000_main.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/net/e1000/e1000_main.c 2006-05-11 04:56:24.000000000 +0300
+@@ -3851,6 +3851,7 @@
+ skb_shinfo(skb)->nr_frags++;
+ skb->len += length;
+ skb->data_len += length;
++ skb->truesize += length;
+ }
+
+ e1000_rx_checksum(adapter, staterr,
+diff -Naur linux-2.6.16/drivers/net/irda/irda-usb.c linux-2.6.16.16/drivers/net/irda/irda-usb.c
+--- linux-2.6.16/drivers/net/irda/irda-usb.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/net/irda/irda-usb.c 2006-05-11 04:56:24.000000000 +0300
+@@ -740,7 +740,7 @@
+ struct sk_buff *newskb;
+ struct sk_buff *dataskb;
+ struct urb *next_urb;
+- int docopy;
++ unsigned int len, docopy;
+
+ IRDA_DEBUG(2, "%s(), len=%d\n", __FUNCTION__, urb->actual_length);
+
+@@ -851,10 +851,11 @@
+ dataskb->dev = self->netdev;
+ dataskb->mac.raw = dataskb->data;
+ dataskb->protocol = htons(ETH_P_IRDA);
++ len = dataskb->len;
+ netif_rx(dataskb);
+
+ /* Keep stats up to date */
+- self->stats.rx_bytes += dataskb->len;
++ self->stats.rx_bytes += len;
+ self->stats.rx_packets++;
+ self->netdev->last_rx = jiffies;
+
+diff -Naur linux-2.6.16/drivers/net/sky2.c linux-2.6.16.16/drivers/net/sky2.c
+--- linux-2.6.16/drivers/net/sky2.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/net/sky2.c 2006-05-11 04:56:24.000000000 +0300
+@@ -579,8 +579,8 @@
+ reg = gma_read16(hw, port, GM_PHY_ADDR);
+ gma_write16(hw, port, GM_PHY_ADDR, reg | GM_PAR_MIB_CLR);
+
+- for (i = 0; i < GM_MIB_CNT_SIZE; i++)
+- gma_read16(hw, port, GM_MIB_CNT_BASE + 8 * i);
++ for (i = GM_MIB_CNT_BASE; i <= GM_MIB_CNT_END; i += 4)
++ gma_read16(hw, port, i);
+ gma_write16(hw, port, GM_PHY_ADDR, reg);
+
+ /* transmit control */
+diff -Naur linux-2.6.16/drivers/net/sky2.h linux-2.6.16.16/drivers/net/sky2.h
+--- linux-2.6.16/drivers/net/sky2.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/net/sky2.h 2006-05-11 04:56:24.000000000 +0300
+@@ -1380,6 +1380,7 @@
+ /* MIB Counters */
+ #define GM_MIB_CNT_BASE 0x0100 /* Base Address of MIB Counters */
+ #define GM_MIB_CNT_SIZE 44 /* Number of MIB Counters */
++#define GM_MIB_CNT_END 0x025C /* Last MIB counter */
+
+ /*
+ * MIB Counters base address definitions (low word) -
+diff -Naur linux-2.6.16/drivers/net/wireless/hostap/hostap_80211_tx.c linux-2.6.16.16/drivers/net/wireless/hostap/hostap_80211_tx.c
+--- linux-2.6.16/drivers/net/wireless/hostap/hostap_80211_tx.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/net/wireless/hostap/hostap_80211_tx.c 2006-05-11 04:56:24.000000000 +0300
+@@ -469,7 +469,7 @@
+ }
+
+ if (local->ieee_802_1x && meta->ethertype == ETH_P_PAE && tx.crypt &&
+- !(fc & IEEE80211_FCTL_VERS)) {
++ !(fc & IEEE80211_FCTL_PROTECTED)) {
+ no_encrypt = 1;
+ PDEBUG(DEBUG_EXTRA2, "%s: TX: IEEE 802.1X - passing "
+ "unencrypted EAPOL frame\n", dev->name);
+diff -Naur linux-2.6.16/drivers/net/wireless/ipw2200.c linux-2.6.16.16/drivers/net/wireless/ipw2200.c
+--- linux-2.6.16/drivers/net/wireless/ipw2200.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/net/wireless/ipw2200.c 2006-05-11 04:56:24.000000000 +0300
+@@ -9956,9 +9956,8 @@
+ return -EINVAL;
+ down(&p->sem);
+ memcpy(&p->eeprom[eeprom->offset], bytes, eeprom->len);
+- for (i = IPW_EEPROM_DATA;
+- i < IPW_EEPROM_DATA + IPW_EEPROM_IMAGE_SIZE; i++)
+- ipw_write8(p, i, p->eeprom[i]);
++ for (i = 0; i < IPW_EEPROM_IMAGE_SIZE; i++)
++ ipw_write8(p, i + IPW_EEPROM_DATA, p->eeprom[i]);
+ up(&p->sem);
+ return 0;
+ }
+diff -Naur linux-2.6.16/drivers/net/wireless/Kconfig linux-2.6.16.16/drivers/net/wireless/Kconfig
+--- linux-2.6.16/drivers/net/wireless/Kconfig 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/net/wireless/Kconfig 2006-05-11 04:56:24.000000000 +0300
+@@ -239,7 +239,8 @@
+
+ config AIRO
+ tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards"
+- depends on NET_RADIO && ISA_DMA_API && CRYPTO && (PCI || BROKEN)
++ depends on NET_RADIO && ISA_DMA_API && (PCI || BROKEN)
++ select CRYPTO
+ ---help---
+ This is the standard Linux driver to support Cisco/Aironet ISA and
+ PCI 802.11 wireless cards.
+@@ -374,6 +375,7 @@
+ config PCMCIA_SPECTRUM
+ tristate "Symbol Spectrum24 Trilogy PCMCIA card support"
+ depends on NET_RADIO && PCMCIA && HERMES
++ select FW_LOADER
+ ---help---
+
+ This is a driver for 802.11b cards using RAM-loadable Symbol
+@@ -387,6 +389,7 @@
+ config AIRO_CS
+ tristate "Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards"
+ depends on NET_RADIO && PCMCIA && (BROKEN || !M32R)
++ select CRYPTO
+ ---help---
+ This is the standard Linux driver to support Cisco/Aironet PCMCIA
+ 802.11 wireless cards. This driver is the same as the Aironet
+diff -Naur linux-2.6.16/drivers/pcmcia/ds.c linux-2.6.16.16/drivers/pcmcia/ds.c
+--- linux-2.6.16/drivers/pcmcia/ds.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/pcmcia/ds.c 2006-05-11 04:56:24.000000000 +0300
+@@ -546,7 +546,7 @@
+ tmp = vers1->str + vers1->ofs[i];
+
+ length = strlen(tmp) + 1;
+- if ((length < 3) || (length > 255))
++ if ((length < 2) || (length > 255))
+ continue;
+
+ p_dev->prod_id[i] = kmalloc(sizeof(char) * length,
+diff -Naur linux-2.6.16/drivers/scsi/3w-9xxx.c linux-2.6.16.16/drivers/scsi/3w-9xxx.c
+--- linux-2.6.16/drivers/scsi/3w-9xxx.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/scsi/3w-9xxx.c 2006-05-11 04:56:24.000000000 +0300
+@@ -85,7 +85,7 @@
+ #include "3w-9xxx.h"
+
+ /* Globals */
+-#define TW_DRIVER_VERSION "2.26.02.005"
++#define TW_DRIVER_VERSION "2.26.02.007"
+ static TW_Device_Extension *twa_device_extension_list[TW_MAX_SLOT];
+ static unsigned int twa_device_extension_count;
+ static int twa_major = -1;
+@@ -1944,9 +1944,13 @@
+ }
+ if (tw_dev->srb[request_id]->use_sg == 1) {
+ struct scatterlist *sg = (struct scatterlist *)tw_dev->srb[request_id]->request_buffer;
+- char *buf = kmap_atomic(sg->page, KM_IRQ0) + sg->offset;
++ char *buf;
++ unsigned long flags = 0;
++ local_irq_save(flags);
++ buf = kmap_atomic(sg->page, KM_IRQ0) + sg->offset;
+ memcpy(buf, tw_dev->generic_buffer_virt[request_id], sg->length);
+ kunmap_atomic(buf - sg->offset, KM_IRQ0);
++ local_irq_restore(flags);
+ }
+ }
+ } /* End twa_scsiop_execute_scsi_complete() */
+diff -Naur linux-2.6.16/drivers/scsi/3w-xxxx.c linux-2.6.16.16/drivers/scsi/3w-xxxx.c
+--- linux-2.6.16/drivers/scsi/3w-xxxx.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/scsi/3w-xxxx.c 2006-05-11 04:56:24.000000000 +0300
+@@ -1508,10 +1508,12 @@
+ struct scsi_cmnd *cmd = tw_dev->srb[request_id];
+ void *buf;
+ unsigned int transfer_len;
++ unsigned long flags = 0;
+
+ if (cmd->use_sg) {
+ struct scatterlist *sg =
+ (struct scatterlist *)cmd->request_buffer;
++ local_irq_save(flags);
+ buf = kmap_atomic(sg->page, KM_IRQ0) + sg->offset;
+ transfer_len = min(sg->length, len);
+ } else {
+@@ -1526,6 +1528,7 @@
+
+ sg = (struct scatterlist *)cmd->request_buffer;
+ kunmap_atomic(buf - sg->offset, KM_IRQ0);
++ local_irq_restore(flags);
+ }
+ }
+
+diff -Naur linux-2.6.16/drivers/scsi/sata_mv.c linux-2.6.16.16/drivers/scsi/sata_mv.c
+--- linux-2.6.16/drivers/scsi/sata_mv.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/scsi/sata_mv.c 2006-05-11 04:56:24.000000000 +0300
+@@ -1102,6 +1102,7 @@
+ void __iomem *port_mmio = mv_ap_base(ap);
+ struct mv_port_priv *pp = ap->private_data;
+ u32 out_ptr;
++ u8 ata_status;
+
+ out_ptr = readl(port_mmio + EDMA_RSP_Q_OUT_PTR_OFS);
+
+@@ -1109,6 +1110,8 @@
+ assert(((out_ptr >> EDMA_RSP_Q_PTR_SHIFT) & MV_MAX_Q_DEPTH_MASK) ==
+ pp->rsp_consumer);
+
++ ata_status = pp->crpb[pp->rsp_consumer].flags >> CRPB_FLAG_STATUS_SHIFT;
++
+ /* increment our consumer index... */
+ pp->rsp_consumer = mv_inc_q_index(&pp->rsp_consumer);
+
+@@ -1123,7 +1126,7 @@
+ writelfl(out_ptr, port_mmio + EDMA_RSP_Q_OUT_PTR_OFS);
+
+ /* Return ATA status register for completed CRPB */
+- return (pp->crpb[pp->rsp_consumer].flags >> CRPB_FLAG_STATUS_SHIFT);
++ return ata_status;
+ }
+
+ /**
+@@ -1192,7 +1195,6 @@
+ u32 hc_irq_cause;
+ int shift, port, port0, hard_port, handled;
+ unsigned int err_mask;
+- u8 ata_status = 0;
+
+ if (hc == 0) {
+ port0 = 0;
+@@ -1210,6 +1212,7 @@
+ hc,relevant,hc_irq_cause);
+
+ for (port = port0; port < port0 + MV_PORTS_PER_HC; port++) {
++ u8 ata_status = 0;
+ ap = host_set->ports[port];
+ hard_port = port & MV_PORT_MASK; /* range 0-3 */
+ handled = 0; /* ensure ata_status is set if handled++ */
+diff -Naur linux-2.6.16/drivers/usb/core/message.c linux-2.6.16.16/drivers/usb/core/message.c
+--- linux-2.6.16/drivers/usb/core/message.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/usb/core/message.c 2006-05-11 04:56:24.000000000 +0300
+@@ -1388,11 +1388,13 @@
+ if (dev->state != USB_STATE_ADDRESS)
+ usb_disable_device (dev, 1); // Skip ep0
+
+- i = dev->bus_mA - cp->desc.bMaxPower * 2;
+- if (i < 0)
+- dev_warn(&dev->dev, "new config #%d exceeds power "
+- "limit by %dmA\n",
+- configuration, -i);
++ if (cp) {
++ i = dev->bus_mA - cp->desc.bMaxPower * 2;
++ if (i < 0)
++ dev_warn(&dev->dev, "new config #%d exceeds power "
++ "limit by %dmA\n",
++ configuration, -i);
++ }
+
+ if ((ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
+ USB_REQ_SET_CONFIGURATION, 0, configuration, 0,
+diff -Naur linux-2.6.16/drivers/usb/host/ehci-sched.c linux-2.6.16.16/drivers/usb/host/ehci-sched.c
+--- linux-2.6.16/drivers/usb/host/ehci-sched.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/usb/host/ehci-sched.c 2006-05-11 04:56:24.000000000 +0300
+@@ -707,6 +707,7 @@
+ } else {
+ u32 addr;
+ int think_time;
++ int hs_transfers;
+
+ addr = dev->ttport << 24;
+ if (!ehci_is_TDI(ehci)
+@@ -719,6 +720,7 @@
+ think_time = dev->tt ? dev->tt->think_time : 0;
+ stream->tt_usecs = NS_TO_US (think_time + usb_calc_bus_time (
+ dev->speed, is_input, 1, maxp));
++ hs_transfers = max (1u, (maxp + 187) / 188);
+ if (is_input) {
+ u32 tmp;
+
+@@ -727,12 +729,11 @@
+ stream->usecs = HS_USECS_ISO (1);
+ stream->raw_mask = 1;
+
+- /* pessimistic c-mask */
+- tmp = usb_calc_bus_time (USB_SPEED_FULL, 1, 0, maxp)
+- / (125 * 1000);
+- stream->raw_mask |= 3 << (tmp + 9);
++ /* c-mask as specified in USB 2.0 11.18.4 3.c */
++ tmp = (1 << (hs_transfers + 2)) - 1;
++ stream->raw_mask |= tmp << (8 + 2);
+ } else
+- stream->raw_mask = smask_out [maxp / 188];
++ stream->raw_mask = smask_out [hs_transfers - 1];
+ bandwidth = stream->usecs + stream->c_usecs;
+ bandwidth /= 1 << (interval + 2);
+
+diff -Naur linux-2.6.16/drivers/usb/serial/console.c linux-2.6.16.16/drivers/usb/serial/console.c
+--- linux-2.6.16/drivers/usb/serial/console.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/usb/serial/console.c 2006-05-11 04:56:24.000000000 +0300
+@@ -54,7 +54,7 @@
+ * serial.c code, except that the specifier is "ttyUSB" instead
+ * of "ttyS".
+ */
+-static int __init usb_console_setup(struct console *co, char *options)
++static int usb_console_setup(struct console *co, char *options)
+ {
+ struct usbcons_info *info = &usbcons_info;
+ int baud = 9600;
+diff -Naur linux-2.6.16/drivers/usb/serial/option.c linux-2.6.16.16/drivers/usb/serial/option.c
+--- linux-2.6.16/drivers/usb/serial/option.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/usb/serial/option.c 2006-05-11 04:56:24.000000000 +0300
+@@ -582,14 +582,14 @@
+ portdata = usb_get_serial_port_data(port);
+
+ /* Do indat endpoints first */
+- for (j = 0; j <= N_IN_URB; ++j) {
++ for (j = 0; j < N_IN_URB; ++j) {
+ portdata->in_urbs[j] = option_setup_urb (serial,
+ port->bulk_in_endpointAddress, USB_DIR_IN, port,
+ portdata->in_buffer[j], IN_BUFLEN, option_indat_callback);
+ }
+
+ /* outdat endpoints */
+- for (j = 0; j <= N_OUT_URB; ++j) {
++ for (j = 0; j < N_OUT_URB; ++j) {
+ portdata->out_urbs[j] = option_setup_urb (serial,
+ port->bulk_out_endpointAddress, USB_DIR_OUT, port,
+ portdata->out_buffer[j], OUT_BUFLEN, option_outdat_callback);
+diff -Naur linux-2.6.16/drivers/usb/storage/Kconfig linux-2.6.16.16/drivers/usb/storage/Kconfig
+--- linux-2.6.16/drivers/usb/storage/Kconfig 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/usb/storage/Kconfig 2006-05-11 04:56:24.000000000 +0300
+@@ -48,7 +48,8 @@
+
+ config USB_STORAGE_ISD200
+ bool "ISD-200 USB/ATA Bridge support"
+- depends on USB_STORAGE && BLK_DEV_IDE
++ depends on USB_STORAGE
++ depends on BLK_DEV_IDE=y || BLK_DEV_IDE=USB_STORAGE
+ ---help---
+ Say Y here if you want to use USB Mass Store devices based
+ on the In-Systems Design ISD-200 USB/ATA bridge.
+diff -Naur linux-2.6.16/drivers/video/cfbimgblt.c linux-2.6.16.16/drivers/video/cfbimgblt.c
+--- linux-2.6.16/drivers/video/cfbimgblt.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/video/cfbimgblt.c 2006-05-11 04:56:24.000000000 +0300
+@@ -169,7 +169,7 @@
+
+ while (j--) {
+ l--;
+- color = (*s & 1 << (FB_BIT_NR(l))) ? fgcolor : bgcolor;
++ color = (*s & (1 << l)) ? fgcolor : bgcolor;
+ val |= FB_SHIFT_HIGH(color, shift);
+
+ /* Did the bitshift spill bits to the next long? */
+diff -Naur linux-2.6.16/drivers/video/fbmem.c linux-2.6.16.16/drivers/video/fbmem.c
+--- linux-2.6.16/drivers/video/fbmem.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/video/fbmem.c 2006-05-11 04:56:24.000000000 +0300
+@@ -669,13 +669,19 @@
+ total_size = info->fix.smem_len;
+
+ if (p > total_size)
+- return 0;
++ return -EFBIG;
+
+- if (count >= total_size)
++ if (count > total_size) {
++ err = -EFBIG;
+ count = total_size;
++ }
++
++ if (count + p > total_size) {
++ if (!err)
++ err = -ENOSPC;
+
+- if (count + p > total_size)
+ count = total_size - p;
++ }
+
+ buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count,
+ GFP_KERNEL);
+@@ -717,7 +723,7 @@
+
+ kfree(buffer);
+
+- return (err) ? err : cnt;
++ return (cnt) ? cnt : err;
+ }
+
+ #ifdef CONFIG_KMOD
+diff -Naur linux-2.6.16/drivers/video/i810/i810_main.c linux-2.6.16.16/drivers/video/i810/i810_main.c
+--- linux-2.6.16/drivers/video/i810/i810_main.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/drivers/video/i810/i810_main.c 2006-05-11 04:56:24.000000000 +0300
+@@ -1508,7 +1508,7 @@
+ int size = ((cursor->image.width + 7) >> 3) *
+ cursor->image.height;
+ int i;
+- u8 *data = kmalloc(64 * 8, GFP_KERNEL);
++ u8 *data = kmalloc(64 * 8, GFP_ATOMIC);
+
+ if (data == NULL)
+ return -ENOMEM;
+diff -Naur linux-2.6.16/fs/9p/vfs_inode.c linux-2.6.16.16/fs/9p/vfs_inode.c
+--- linux-2.6.16/fs/9p/vfs_inode.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/9p/vfs_inode.c 2006-05-11 04:56:24.000000000 +0300
+@@ -614,6 +614,7 @@
+
+ sb = dir->i_sb;
+ v9ses = v9fs_inode2v9ses(dir);
++ dentry->d_op = &v9fs_dentry_operations;
+ dirfid = v9fs_fid_lookup(dentry->d_parent);
+
+ if (!dirfid) {
+@@ -681,8 +682,6 @@
+ goto FreeFcall;
+
+ fid->qid = fcall->params.rstat.stat.qid;
+-
+- dentry->d_op = &v9fs_dentry_operations;
+ v9fs_stat2inode(&fcall->params.rstat.stat, inode, inode->i_sb);
+
+ d_add(dentry, inode);
+diff -Naur linux-2.6.16/fs/char_dev.c linux-2.6.16.16/fs/char_dev.c
+--- linux-2.6.16/fs/char_dev.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/char_dev.c 2006-05-11 04:56:24.000000000 +0300
+@@ -15,6 +15,7 @@
+ #include <linux/module.h>
+ #include <linux/smp_lock.h>
+ #include <linux/devfs_fs_kernel.h>
++#include <linux/seq_file.h>
+
+ #include <linux/kobject.h>
+ #include <linux/kobj_map.h>
+@@ -26,8 +27,6 @@
+
+ static struct kobj_map *cdev_map;
+
+-#define MAX_PROBE_HASH 255 /* random */
+-
+ static DECLARE_MUTEX(chrdevs_lock);
+
+ static struct char_device_struct {
+@@ -38,93 +37,29 @@
+ char name[64];
+ struct file_operations *fops;
+ struct cdev *cdev; /* will die */
+-} *chrdevs[MAX_PROBE_HASH];
++} *chrdevs[CHRDEV_MAJOR_HASH_SIZE];
+
+ /* index in the above */
+ static inline int major_to_index(int major)
+ {
+- return major % MAX_PROBE_HASH;
+-}
+-
+-struct chrdev_info {
+- int index;
+- struct char_device_struct *cd;
+-};
+-
+-void *get_next_chrdev(void *dev)
+-{
+- struct chrdev_info *info;
+-
+- if (dev == NULL) {
+- info = kmalloc(sizeof(*info), GFP_KERNEL);
+- if (!info)
+- goto out;
+- info->index=0;
+- info->cd = chrdevs[info->index];
+- if (info->cd)
+- goto out;
+- } else {
+- info = dev;
+- }
+-
+- while (info->index < ARRAY_SIZE(chrdevs)) {
+- if (info->cd)
+- info->cd = info->cd->next;
+- if (info->cd)
+- goto out;
+- /*
+- * No devices on this chain, move to the next
+- */
+- info->index++;
+- info->cd = (info->index < ARRAY_SIZE(chrdevs)) ?
+- chrdevs[info->index] : NULL;
+- if (info->cd)
+- goto out;
+- }
+-
+-out:
+- return info;
+-}
+-
+-void *acquire_chrdev_list(void)
+-{
+- down(&chrdevs_lock);
+- return get_next_chrdev(NULL);
+-}
+-
+-void release_chrdev_list(void *dev)
+-{
+- up(&chrdevs_lock);
+- kfree(dev);
++ return major % CHRDEV_MAJOR_HASH_SIZE;
+ }
+
++#ifdef CONFIG_PROC_FS
+
+-int count_chrdev_list(void)
++void chrdev_show(struct seq_file *f, off_t offset)
+ {
+ struct char_device_struct *cd;
+- int i, count;
+-
+- count = 0;
+
+- for (i = 0; i < ARRAY_SIZE(chrdevs) ; i++) {
+- for (cd = chrdevs[i]; cd; cd = cd->next)
+- count++;
++ if (offset < CHRDEV_MAJOR_HASH_SIZE) {
++ down(&chrdevs_lock);
++ for (cd = chrdevs[offset]; cd; cd = cd->next)
++ seq_printf(f, "%3d %s\n", cd->major, cd->name);
++ up(&chrdevs_lock);
+ }
+-
+- return count;
+ }
+
+-int get_chrdev_info(void *dev, int *major, char **name)
+-{
+- struct chrdev_info *info = dev;
+-
+- if (info->cd == NULL)
+- return 1;
+-
+- *major = info->cd->major;
+- *name = info->cd->name;
+- return 0;
+-}
++#endif /* CONFIG_PROC_FS */
+
+ /*
+ * Register a single major with a specified minor range.
+diff -Naur linux-2.6.16/fs/cifs/cifsencrypt.c linux-2.6.16.16/fs/cifs/cifsencrypt.c
+--- linux-2.6.16/fs/cifs/cifsencrypt.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/cifs/cifsencrypt.c 2006-05-11 04:56:24.000000000 +0300
+@@ -56,9 +56,6 @@
+ int rc = 0;
+ char smb_signature[20];
+
+- /* BB remember to initialize sequence number elsewhere and initialize mac_signing key elsewhere BB */
+- /* BB remember to add code to save expected sequence number in midQ entry BB */
+-
+ if((cifs_pdu == NULL) || (server == NULL))
+ return -EINVAL;
+
+@@ -85,20 +82,33 @@
+ static int cifs_calc_signature2(const struct kvec * iov, int n_vec,
+ const char * key, char * signature)
+ {
+- struct MD5Context context;
+-
+- if((iov == NULL) || (signature == NULL))
+- return -EINVAL;
++ struct MD5Context context;
++ int i;
+
+- MD5Init(&context);
+- MD5Update(&context,key,CIFS_SESSION_KEY_SIZE+16);
++ if((iov == NULL) || (signature == NULL))
++ return -EINVAL;
+
+-/* MD5Update(&context,cifs_pdu->Protocol,cifs_pdu->smb_buf_length); */ /* BB FIXME BB */
++ MD5Init(&context);
++ MD5Update(&context,key,CIFS_SESSION_KEY_SIZE+16);
++ for(i=0;i<n_vec;i++) {
++ if(iov[i].iov_base == NULL) {
++ cERROR(1,("null iovec entry"));
++ return -EIO;
++ } else if(iov[i].iov_len == 0)
++ break; /* bail out if we are sent nothing to sign */
++ /* The first entry includes a length field (which does not get
++ signed that occupies the first 4 bytes before the header */
++ if(i==0) {
++ if (iov[0].iov_len <= 8 ) /* cmd field at offset 9 */
++ break; /* nothing to sign or corrupt header */
++ MD5Update(&context,iov[0].iov_base+4, iov[0].iov_len-4);
++ } else
++ MD5Update(&context,iov[i].iov_base, iov[i].iov_len);
++ }
+
+- MD5Final(signature,&context);
++ MD5Final(signature,&context);
+
+- return -EOPNOTSUPP;
+-/* return 0; */
++ return 0;
+ }
+
+
+diff -Naur linux-2.6.16/fs/cifs/dir.c linux-2.6.16.16/fs/cifs/dir.c
+--- linux-2.6.16/fs/cifs/dir.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/cifs/dir.c 2006-05-11 04:56:24.000000000 +0300
+@@ -441,6 +441,20 @@
+ cifs_sb = CIFS_SB(parent_dir_inode->i_sb);
+ pTcon = cifs_sb->tcon;
+
++ /*
++ * Don't allow the separator character in a path component.
++ * The VFS will not allow "/", but "\" is allowed by posix.
++ */
++ if (!(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS)) {
++ int i;
++ for (i = 0; i < direntry->d_name.len; i++)
++ if (direntry->d_name.name[i] == '\\') {
++ cFYI(1, ("Invalid file name"));
++ FreeXid(xid);
++ return ERR_PTR(-EINVAL);
++ }
++ }
++
+ /* can not grab the rename sem here since it would
+ deadlock in the cases (beginning of sys_rename itself)
+ in which we already have the sb rename sem */
+diff -Naur linux-2.6.16/fs/compat.c linux-2.6.16.16/fs/compat.c
+--- linux-2.6.16/fs/compat.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/compat.c 2006-05-11 04:56:24.000000000 +0300
+@@ -1215,6 +1215,10 @@
+ if (ret < 0)
+ goto out;
+
++ ret = security_file_permission(file, type == READ ? MAY_READ:MAY_WRITE);
++ if (ret)
++ goto out;
++
+ fnv = NULL;
+ if (type == READ) {
+ fn = file->f_op->read;
+diff -Naur linux-2.6.16/fs/ext3/resize.c linux-2.6.16.16/fs/ext3/resize.c
+--- linux-2.6.16/fs/ext3/resize.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/ext3/resize.c 2006-05-11 04:56:24.000000000 +0300
+@@ -974,6 +974,7 @@
+ if (o_blocks_count != le32_to_cpu(es->s_blocks_count)) {
+ ext3_warning(sb, __FUNCTION__,
+ "multiple resizers run on filesystem!");
++ unlock_super(sb);
+ err = -EBUSY;
+ goto exit_put;
+ }
+diff -Naur linux-2.6.16/fs/fuse/file.c linux-2.6.16.16/fs/fuse/file.c
+--- linux-2.6.16/fs/fuse/file.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/fuse/file.c 2006-05-11 04:56:24.000000000 +0300
+@@ -397,8 +397,12 @@
+ return -EINTR;
+
+ err = read_cache_pages(mapping, pages, fuse_readpages_fill, &data);
+- if (!err)
+- fuse_send_readpages(data.req, file, inode);
++ if (!err) {
++ if (data.req->num_pages)
++ fuse_send_readpages(data.req, file, inode);
++ else
++ fuse_put_request(fc, data.req);
++ }
+ return err;
+ }
+
+diff -Naur linux-2.6.16/fs/locks.c linux-2.6.16.16/fs/locks.c
+--- linux-2.6.16/fs/locks.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/locks.c 2006-05-11 04:56:24.000000000 +0300
+@@ -432,15 +432,14 @@
+ */
+ static int lease_init(struct file *filp, int type, struct file_lock *fl)
+ {
++ if (assign_type(fl, type) != 0)
++ return -EINVAL;
++
+ fl->fl_owner = current->files;
+ fl->fl_pid = current->tgid;
+
+ fl->fl_file = filp;
+ fl->fl_flags = FL_LEASE;
+- if (assign_type(fl, type) != 0) {
+- locks_free_lock(fl);
+- return -EINVAL;
+- }
+ fl->fl_start = 0;
+ fl->fl_end = OFFSET_MAX;
+ fl->fl_ops = NULL;
+@@ -452,16 +451,19 @@
+ static int lease_alloc(struct file *filp, int type, struct file_lock **flp)
+ {
+ struct file_lock *fl = locks_alloc_lock();
+- int error;
++ int error = -ENOMEM;
+
+ if (fl == NULL)
+- return -ENOMEM;
++ goto out;
+
+ error = lease_init(filp, type, fl);
+- if (error)
+- return error;
++ if (error) {
++ locks_free_lock(fl);
++ fl = NULL;
++ }
++out:
+ *flp = fl;
+- return 0;
++ return error;
+ }
+
+ /* Check if two locks overlap each other.
+@@ -1337,6 +1339,7 @@
+ goto out;
+
+ if (my_before != NULL) {
++ *flp = *my_before;
+ error = lease->fl_lmops->fl_change(my_before, arg);
+ goto out;
+ }
+@@ -2212,7 +2215,12 @@
+
+ lock_kernel();
+ j = 0;
+- rcu_read_lock();
++
++ /*
++ * We are not taking a ref to the file structures, so
++ * we need to acquire ->file_lock.
++ */
++ spin_lock(&files->file_lock);
+ fdt = files_fdtable(files);
+ for (;;) {
+ unsigned long set;
+@@ -2230,7 +2238,7 @@
+ set >>= 1;
+ }
+ }
+- rcu_read_unlock();
++ spin_unlock(&files->file_lock);
+ unlock_kernel();
+ }
+ EXPORT_SYMBOL(steal_locks);
+diff -Naur linux-2.6.16/fs/nfsd/nfs3proc.c linux-2.6.16.16/fs/nfsd/nfs3proc.c
+--- linux-2.6.16/fs/nfsd/nfs3proc.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/nfsd/nfs3proc.c 2006-05-11 04:56:24.000000000 +0300
+@@ -682,7 +682,7 @@
+ PROC(lookup, dirop, dirop, fhandle2, RC_NOCACHE, ST+FH+pAT+pAT),
+ PROC(access, access, access, fhandle, RC_NOCACHE, ST+pAT+1),
+ PROC(readlink, readlink, readlink, fhandle, RC_NOCACHE, ST+pAT+1+NFS3_MAXPATHLEN/4),
+- PROC(read, read, read, fhandle, RC_NOCACHE, ST+pAT+4+NFSSVC_MAXBLKSIZE),
++ PROC(read, read, read, fhandle, RC_NOCACHE, ST+pAT+4+NFSSVC_MAXBLKSIZE/4),
+ PROC(write, write, write, fhandle, RC_REPLBUFF, ST+WC+4),
+ PROC(create, create, create, fhandle2, RC_REPLBUFF, ST+(1+FH+pAT)+WC),
+ PROC(mkdir, mkdir, create, fhandle2, RC_REPLBUFF, ST+(1+FH+pAT)+WC),
+diff -Naur linux-2.6.16/fs/nfsd/nfs4proc.c linux-2.6.16.16/fs/nfsd/nfs4proc.c
+--- linux-2.6.16/fs/nfsd/nfs4proc.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/nfsd/nfs4proc.c 2006-05-11 04:56:24.000000000 +0300
+@@ -975,7 +975,7 @@
+ */
+ static struct svc_procedure nfsd_procedures4[2] = {
+ PROC(null, void, void, void, RC_NOCACHE, 1),
+- PROC(compound, compound, compound, compound, RC_NOCACHE, NFSD_BUFSIZE)
++ PROC(compound, compound, compound, compound, RC_NOCACHE, NFSD_BUFSIZE/4)
+ };
+
+ struct svc_version nfsd_version4 = {
+diff -Naur linux-2.6.16/fs/nfsd/nfsproc.c linux-2.6.16.16/fs/nfsd/nfsproc.c
+--- linux-2.6.16/fs/nfsd/nfsproc.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/nfsd/nfsproc.c 2006-05-11 04:56:24.000000000 +0300
+@@ -553,7 +553,7 @@
+ PROC(none, void, void, none, RC_NOCACHE, ST),
+ PROC(lookup, diropargs, diropres, fhandle, RC_NOCACHE, ST+FH+AT),
+ PROC(readlink, readlinkargs, readlinkres, none, RC_NOCACHE, ST+1+NFS_MAXPATHLEN/4),
+- PROC(read, readargs, readres, fhandle, RC_NOCACHE, ST+AT+1+NFSSVC_MAXBLKSIZE),
++ PROC(read, readargs, readres, fhandle, RC_NOCACHE, ST+AT+1+NFSSVC_MAXBLKSIZE/4),
+ PROC(none, void, void, none, RC_NOCACHE, ST),
+ PROC(write, writeargs, attrstat, fhandle, RC_REPLBUFF, ST+AT),
+ PROC(create, createargs, diropres, fhandle, RC_REPLBUFF, ST+FH+AT),
+diff -Naur linux-2.6.16/fs/open.c linux-2.6.16.16/fs/open.c
+--- linux-2.6.16/fs/open.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/open.c 2006-05-11 04:56:24.000000000 +0300
+@@ -330,7 +330,10 @@
+
+ asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length)
+ {
+- return do_sys_ftruncate(fd, length, 1);
++ long ret = do_sys_ftruncate(fd, length, 1);
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+
+ /* LFS versions of truncate are only needed on 32 bit machines */
+@@ -342,7 +345,10 @@
+
+ asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length)
+ {
+- return do_sys_ftruncate(fd, length, 0);
++ long ret = do_sys_ftruncate(fd, length, 0);
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+ #endif
+
+@@ -1083,20 +1089,30 @@
+
+ asmlinkage long sys_open(const char __user *filename, int flags, int mode)
+ {
++ long ret;
++
+ if (force_o_largefile())
+ flags |= O_LARGEFILE;
+
+- return do_sys_open(AT_FDCWD, filename, flags, mode);
++ ret = do_sys_open(AT_FDCWD, filename, flags, mode);
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+ EXPORT_SYMBOL_GPL(sys_open);
+
+ asmlinkage long sys_openat(int dfd, const char __user *filename, int flags,
+ int mode)
+ {
++ long ret;
++
+ if (force_o_largefile())
+ flags |= O_LARGEFILE;
+
+- return do_sys_open(dfd, filename, flags, mode);
++ ret = do_sys_open(dfd, filename, flags, mode);
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+ EXPORT_SYMBOL_GPL(sys_openat);
+
+diff -Naur linux-2.6.16/fs/partitions/check.c linux-2.6.16.16/fs/partitions/check.c
+--- linux-2.6.16/fs/partitions/check.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/partitions/check.c 2006-05-11 04:56:24.000000000 +0300
+@@ -345,6 +345,7 @@
+ char *name;
+ static char *block_str = "block:";
+ int size;
++ char *s;
+
+ size = strlen(block_str) + strlen(disk->disk_name) + 1;
+ name = kmalloc(size, GFP_KERNEL);
+@@ -352,6 +353,10 @@
+ return NULL;
+ strcpy(name, block_str);
+ strcat(name, disk->disk_name);
++ /* ewww... some of these buggers have / in name... */
++ s = strchr(name, '/');
++ if (s)
++ *s = '!';
+ return name;
+ }
+
+diff -Naur linux-2.6.16/fs/proc/base.c linux-2.6.16.16/fs/proc/base.c
+--- linux-2.6.16/fs/proc/base.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/proc/base.c 2006-05-11 04:56:24.000000000 +0300
+@@ -294,16 +294,20 @@
+
+ files = get_files_struct(task);
+ if (files) {
+- rcu_read_lock();
++ /*
++ * We are not taking a ref to the file structure, so we must
++ * hold ->file_lock.
++ */
++ spin_lock(&files->file_lock);
+ file = fcheck_files(files, fd);
+ if (file) {
+ *mnt = mntget(file->f_vfsmnt);
+ *dentry = dget(file->f_dentry);
+- rcu_read_unlock();
++ spin_unlock(&files->file_lock);
+ put_files_struct(files);
+ return 0;
+ }
+- rcu_read_unlock();
++ spin_unlock(&files->file_lock);
+ put_files_struct(files);
+ }
+ return -ENOENT;
+@@ -1485,7 +1489,12 @@
+ if (!files)
+ goto out_unlock;
+ inode->i_mode = S_IFLNK;
+- rcu_read_lock();
++
++ /*
++ * We are not taking a ref to the file structure, so we must
++ * hold ->file_lock.
++ */
++ spin_lock(&files->file_lock);
+ file = fcheck_files(files, fd);
+ if (!file)
+ goto out_unlock2;
+@@ -1493,7 +1502,7 @@
+ inode->i_mode |= S_IRUSR | S_IXUSR;
+ if (file->f_mode & 2)
+ inode->i_mode |= S_IWUSR | S_IXUSR;
+- rcu_read_unlock();
++ spin_unlock(&files->file_lock);
+ put_files_struct(files);
+ inode->i_op = &proc_pid_link_inode_operations;
+ inode->i_size = 64;
+@@ -1503,7 +1512,7 @@
+ return NULL;
+
+ out_unlock2:
+- rcu_read_unlock();
++ spin_unlock(&files->file_lock);
+ put_files_struct(files);
+ out_unlock:
+ iput(inode);
+diff -Naur linux-2.6.16/fs/proc/proc_misc.c linux-2.6.16.16/fs/proc/proc_misc.c
+--- linux-2.6.16/fs/proc/proc_misc.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/proc/proc_misc.c 2006-05-11 04:56:24.000000000 +0300
+@@ -249,144 +249,60 @@
+ return seq_open(file, &cpuinfo_op);
+ }
+
+-enum devinfo_states {
+- CHR_HDR,
+- CHR_LIST,
+- BLK_HDR,
+- BLK_LIST,
+- DEVINFO_DONE
+-};
+-
+-struct devinfo_state {
+- void *chrdev;
+- void *blkdev;
+- unsigned int num_records;
+- unsigned int cur_record;
+- enum devinfo_states state;
++static struct file_operations proc_cpuinfo_operations = {
++ .open = cpuinfo_open,
++ .read = seq_read,
++ .llseek = seq_lseek,
++ .release = seq_release,
+ };
+
+-static void *devinfo_start(struct seq_file *f, loff_t *pos)
++static int devinfo_show(struct seq_file *f, void *v)
+ {
+- struct devinfo_state *info = f->private;
++ int i = *(loff_t *) v;
+
+- if (*pos) {
+- if ((info) && (*pos <= info->num_records))
+- return info;
+- return NULL;
++ if (i < CHRDEV_MAJOR_HASH_SIZE) {
++ if (i == 0)
++ seq_printf(f, "Character devices:\n");
++ chrdev_show(f, i);
++ } else {
++ i -= CHRDEV_MAJOR_HASH_SIZE;
++ if (i == 0)
++ seq_printf(f, "\nBlock devices:\n");
++ blkdev_show(f, i);
+ }
+- info = kmalloc(sizeof(*info), GFP_KERNEL);
+- f->private = info;
+- info->chrdev = acquire_chrdev_list();
+- info->blkdev = acquire_blkdev_list();
+- info->state = CHR_HDR;
+- info->num_records = count_chrdev_list();
+- info->num_records += count_blkdev_list();
+- info->num_records += 2; /* Character and Block headers */
+- *pos = 1;
+- info->cur_record = *pos;
+- return info;
++ return 0;
+ }
+
+-static void *devinfo_next(struct seq_file *f, void *v, loff_t *pos)
++static void *devinfo_start(struct seq_file *f, loff_t *pos)
+ {
+- int idummy;
+- char *ndummy;
+- struct devinfo_state *info = f->private;
+-
+- switch (info->state) {
+- case CHR_HDR:
+- info->state = CHR_LIST;
+- (*pos)++;
+- /*fallthrough*/
+- case CHR_LIST:
+- if (get_chrdev_info(info->chrdev,&idummy,&ndummy)) {
+- /*
+- * The character dev list is complete
+- */
+- info->state = BLK_HDR;
+- } else {
+- info->chrdev = get_next_chrdev(info->chrdev);
+- }
+- (*pos)++;
+- break;
+- case BLK_HDR:
+- info->state = BLK_LIST;
+- (*pos)++;
+- break;
+- case BLK_LIST:
+- if (get_blkdev_info(info->blkdev,&idummy,&ndummy)) {
+- /*
+- * The block dev list is complete
+- */
+- info->state = DEVINFO_DONE;
+- } else {
+- info->blkdev = get_next_blkdev(info->blkdev);
+- }
+- (*pos)++;
+- break;
+- case DEVINFO_DONE:
+- (*pos)++;
+- info->cur_record = *pos;
+- info = NULL;
+- break;
+- default:
+- break;
+- }
+- if (info)
+- info->cur_record = *pos;
+- return info;
++ if (*pos < (BLKDEV_MAJOR_HASH_SIZE + CHRDEV_MAJOR_HASH_SIZE))
++ return pos;
++ return NULL;
+ }
+
+-static void devinfo_stop(struct seq_file *f, void *v)
++static void *devinfo_next(struct seq_file *f, void *v, loff_t *pos)
+ {
+- struct devinfo_state *info = f->private;
+-
+- if (info) {
+- release_chrdev_list(info->chrdev);
+- release_blkdev_list(info->blkdev);
+- f->private = NULL;
+- kfree(info);
+- }
++ (*pos)++;
++ if (*pos >= (BLKDEV_MAJOR_HASH_SIZE + CHRDEV_MAJOR_HASH_SIZE))
++ return NULL;
++ return pos;
+ }
+
+-static int devinfo_show(struct seq_file *f, void *arg)
++static void devinfo_stop(struct seq_file *f, void *v)
+ {
+- int major;
+- char *name;
+- struct devinfo_state *info = f->private;
+-
+- switch(info->state) {
+- case CHR_HDR:
+- seq_printf(f,"Character devices:\n");
+- /* fallthrough */
+- case CHR_LIST:
+- if (!get_chrdev_info(info->chrdev,&major,&name))
+- seq_printf(f,"%3d %s\n",major,name);
+- break;
+- case BLK_HDR:
+- seq_printf(f,"\nBlock devices:\n");
+- /* fallthrough */
+- case BLK_LIST:
+- if (!get_blkdev_info(info->blkdev,&major,&name))
+- seq_printf(f,"%3d %s\n",major,name);
+- break;
+- default:
+- break;
+- }
+-
+- return 0;
++ /* Nothing to do */
+ }
+
+-static struct seq_operations devinfo_op = {
+- .start = devinfo_start,
+- .next = devinfo_next,
+- .stop = devinfo_stop,
+- .show = devinfo_show,
++static struct seq_operations devinfo_ops = {
++ .start = devinfo_start,
++ .next = devinfo_next,
++ .stop = devinfo_stop,
++ .show = devinfo_show
+ };
+
+-static int devinfo_open(struct inode *inode, struct file *file)
++static int devinfo_open(struct inode *inode, struct file *filp)
+ {
+- return seq_open(file, &devinfo_op);
++ return seq_open(filp, &devinfo_ops);
+ }
+
+ static struct file_operations proc_devinfo_operations = {
+@@ -396,13 +312,6 @@
+ .release = seq_release,
+ };
+
+-static struct file_operations proc_cpuinfo_operations = {
+- .open = cpuinfo_open,
+- .read = seq_read,
+- .llseek = seq_lseek,
+- .release = seq_release,
+-};
+-
+ extern struct seq_operations vmstat_op;
+ static int vmstat_open(struct inode *inode, struct file *file)
+ {
+diff -Naur linux-2.6.16/fs/proc/vmcore.c linux-2.6.16.16/fs/proc/vmcore.c
+--- linux-2.6.16/fs/proc/vmcore.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/proc/vmcore.c 2006-05-11 04:56:24.000000000 +0300
+@@ -103,8 +103,8 @@
+ size_t buflen, loff_t *fpos)
+ {
+ ssize_t acc = 0, tmp;
+- size_t tsz, nr_bytes;
+- u64 start;
++ size_t tsz;
++ u64 start, nr_bytes;
+ struct vmcore *curr_m = NULL;
+
+ if (buflen == 0 || *fpos >= vmcore_size)
+diff -Naur linux-2.6.16/fs/reiserfs/xattr_acl.c linux-2.6.16.16/fs/reiserfs/xattr_acl.c
+--- linux-2.6.16/fs/reiserfs/xattr_acl.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/reiserfs/xattr_acl.c 2006-05-11 04:56:24.000000000 +0300
+@@ -408,8 +408,9 @@
+ acl = reiserfs_get_acl(inode, ACL_TYPE_DEFAULT);
+ reiserfs_read_unlock_xattrs(inode->i_sb);
+ reiserfs_read_unlock_xattr_i(inode);
+- ret = acl ? 1 : 0;
+- posix_acl_release(acl);
++ ret = (acl && !IS_ERR(acl));
++ if (ret)
++ posix_acl_release(acl);
+ }
+
+ return ret;
+diff -Naur linux-2.6.16/fs/smbfs/dir.c linux-2.6.16.16/fs/smbfs/dir.c
+--- linux-2.6.16/fs/smbfs/dir.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/smbfs/dir.c 2006-05-11 04:56:24.000000000 +0300
+@@ -434,6 +434,11 @@
+ if (dentry->d_name.len > SMB_MAXNAMELEN)
+ goto out;
+
++ /* Do not allow lookup of names with backslashes in */
++ error = -EINVAL;
++ if (memchr(dentry->d_name.name, '\\', dentry->d_name.len))
++ goto out;
++
+ lock_kernel();
+ error = smb_proc_getattr(dentry, &finfo);
+ #ifdef SMBFS_PARANOIA
+diff -Naur linux-2.6.16/fs/sysfs/dir.c linux-2.6.16.16/fs/sysfs/dir.c
+--- linux-2.6.16/fs/sysfs/dir.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/sysfs/dir.c 2006-05-11 04:56:24.000000000 +0300
+@@ -302,6 +302,7 @@
+ * Drop reference from dget() on entrance.
+ */
+ dput(dentry);
++ kobj->dentry = NULL;
+ }
+
+ int sysfs_rename_dir(struct kobject * kobj, const char *new_name)
+diff -Naur linux-2.6.16/fs/sysfs/file.c linux-2.6.16.16/fs/sysfs/file.c
+--- linux-2.6.16/fs/sysfs/file.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/sysfs/file.c 2006-05-11 04:56:24.000000000 +0300
+@@ -183,7 +183,7 @@
+ return -ENOMEM;
+
+ if (count >= PAGE_SIZE)
+- count = PAGE_SIZE;
++ count = PAGE_SIZE - 1;
+ error = copy_from_user(buffer->page,buf,count);
+ buffer->needs_read_fill = 1;
+ return error ? -EFAULT : count;
+diff -Naur linux-2.6.16/fs/sysfs/inode.c linux-2.6.16.16/fs/sysfs/inode.c
+--- linux-2.6.16/fs/sysfs/inode.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/sysfs/inode.c 2006-05-11 04:56:24.000000000 +0300
+@@ -227,12 +227,16 @@
+ void sysfs_hash_and_remove(struct dentry * dir, const char * name)
+ {
+ struct sysfs_dirent * sd;
+- struct sysfs_dirent * parent_sd = dir->d_fsdata;
++ struct sysfs_dirent * parent_sd;
++
++ if (!dir)
++ return;
+
+ if (dir->d_inode == NULL)
+ /* no inode means this hasn't been made visible yet */
+ return;
+
++ parent_sd = dir->d_fsdata;
+ mutex_lock(&dir->d_inode->i_mutex);
+ list_for_each_entry(sd, &parent_sd->s_children, s_sibling) {
+ if (!sd->s_element)
+diff -Naur linux-2.6.16/fs/sysfs/symlink.c linux-2.6.16.16/fs/sysfs/symlink.c
+--- linux-2.6.16/fs/sysfs/symlink.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/sysfs/symlink.c 2006-05-11 04:56:24.000000000 +0300
+@@ -66,6 +66,7 @@
+ if (!error)
+ return 0;
+
++ kobject_put(target);
+ kfree(sl->link_name);
+ exit2:
+ kfree(sl);
+diff -Naur linux-2.6.16/fs/xfs/linux-2.6/xfs_aops.c linux-2.6.16.16/fs/xfs/linux-2.6/xfs_aops.c
+--- linux-2.6.16/fs/xfs/linux-2.6/xfs_aops.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/xfs/linux-2.6/xfs_aops.c 2006-05-11 04:56:24.000000000 +0300
+@@ -616,7 +616,7 @@
+ acceptable = (type == IOMAP_UNWRITTEN);
+ else if (buffer_delay(bh))
+ acceptable = (type == IOMAP_DELAY);
+- else if (buffer_mapped(bh))
++ else if (buffer_dirty(bh) && buffer_mapped(bh))
+ acceptable = (type == 0);
+ else
+ break;
+diff -Naur linux-2.6.16/fs/xfs/linux-2.6/xfs_iops.c linux-2.6.16.16/fs/xfs/linux-2.6/xfs_iops.c
+--- linux-2.6.16/fs/xfs/linux-2.6/xfs_iops.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/fs/xfs/linux-2.6/xfs_iops.c 2006-05-11 04:56:24.000000000 +0300
+@@ -673,8 +673,7 @@
+ if (ia_valid & ATTR_ATIME) {
+ vattr.va_mask |= XFS_AT_ATIME;
+ vattr.va_atime = attr->ia_atime;
+- if (ia_valid & ATTR_ATIME_SET)
+- inode->i_atime = attr->ia_atime;
++ inode->i_atime = attr->ia_atime;
+ }
+ if (ia_valid & ATTR_MTIME) {
+ vattr.va_mask |= XFS_AT_MTIME;
+diff -Naur linux-2.6.16/include/asm-i386/cpufeature.h linux-2.6.16.16/include/asm-i386/cpufeature.h
+--- linux-2.6.16/include/asm-i386/cpufeature.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-i386/cpufeature.h 2006-05-11 04:56:24.000000000 +0300
+@@ -70,6 +70,7 @@
+ #define X86_FEATURE_P3 (3*32+ 6) /* P3 */
+ #define X86_FEATURE_P4 (3*32+ 7) /* P4 */
+ #define X86_FEATURE_CONSTANT_TSC (3*32+ 8) /* TSC ticks at a constant rate */
++#define X86_FEATURE_FXSAVE_LEAK (3*32+10) /* FXSAVE leaks FOP/FIP/FOP */
+
+ /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
+ #define X86_FEATURE_XMM3 (4*32+ 0) /* Streaming SIMD Extensions-3 */
+diff -Naur linux-2.6.16/include/asm-i386/i387.h linux-2.6.16.16/include/asm-i386/i387.h
+--- linux-2.6.16/include/asm-i386/i387.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-i386/i387.h 2006-05-11 04:56:24.000000000 +0300
+@@ -13,6 +13,7 @@
+
+ #include <linux/sched.h>
+ #include <linux/init.h>
++#include <linux/kernel_stat.h>
+ #include <asm/processor.h>
+ #include <asm/sigcontext.h>
+ #include <asm/user.h>
+@@ -38,17 +39,38 @@
+ extern void kernel_fpu_begin(void);
+ #define kernel_fpu_end() do { stts(); preempt_enable(); } while(0)
+
++/* We need a safe address that is cheap to find and that is already
++ in L1 during context switch. The best choices are unfortunately
++ different for UP and SMP */
++#ifdef CONFIG_SMP
++#define safe_address (__per_cpu_offset[0])
++#else
++#define safe_address (kstat_cpu(0).cpustat.user)
++#endif
++
+ /*
+ * These must be called with preempt disabled
+ */
+ static inline void __save_init_fpu( struct task_struct *tsk )
+ {
++ /* Use more nops than strictly needed in case the compiler
++ varies code */
+ alternative_input(
+- "fnsave %1 ; fwait ;" GENERIC_NOP2,
+- "fxsave %1 ; fnclex",
++ "fnsave %[fx] ;fwait;" GENERIC_NOP8 GENERIC_NOP4,
++ "fxsave %[fx]\n"
++ "bt $7,%[fsw] ; jnc 1f ; fnclex\n1:",
+ X86_FEATURE_FXSR,
+- "m" (tsk->thread.i387.fxsave)
+- :"memory");
++ [fx] "m" (tsk->thread.i387.fxsave),
++ [fsw] "m" (tsk->thread.i387.fxsave.swd) : "memory");
++ /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception
++ is pending. Clear the x87 state here by setting it to fixed
++ values. safe_address is a random variable that should be in L1 */
++ alternative_input(
++ GENERIC_NOP8 GENERIC_NOP2,
++ "emms\n\t" /* clear stack tags */
++ "fildl %[addr]", /* set F?P to defined value */
++ X86_FEATURE_FXSAVE_LEAK,
++ [addr] "m" (safe_address));
+ task_thread_info(tsk)->status &= ~TS_USEDFPU;
+ }
+
+diff -Naur linux-2.6.16/include/asm-i386/pgtable-2level.h linux-2.6.16.16/include/asm-i386/pgtable-2level.h
+--- linux-2.6.16/include/asm-i386/pgtable-2level.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-i386/pgtable-2level.h 2006-05-11 04:56:24.000000000 +0300
+@@ -18,6 +18,9 @@
+ #define set_pte_atomic(pteptr, pteval) set_pte(pteptr,pteval)
+ #define set_pmd(pmdptr, pmdval) (*(pmdptr) = (pmdval))
+
++#define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
++#define pmd_clear(xp) do { set_pmd(xp, __pmd(0)); } while (0)
++
+ #define ptep_get_and_clear(mm,addr,xp) __pte(xchg(&(xp)->pte_low, 0))
+ #define pte_same(a, b) ((a).pte_low == (b).pte_low)
+ #define pte_page(x) pfn_to_page(pte_pfn(x))
+diff -Naur linux-2.6.16/include/asm-i386/pgtable-3level.h linux-2.6.16.16/include/asm-i386/pgtable-3level.h
+--- linux-2.6.16/include/asm-i386/pgtable-3level.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-i386/pgtable-3level.h 2006-05-11 04:56:24.000000000 +0300
+@@ -85,6 +85,26 @@
+ #define pmd_offset(pud, address) ((pmd_t *) pud_page(*(pud)) + \
+ pmd_index(address))
+
++/*
++ * For PTEs and PDEs, we must clear the P-bit first when clearing a page table
++ * entry, so clear the bottom half first and enforce ordering with a compiler
++ * barrier.
++ */
++static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
++{
++ ptep->pte_low = 0;
++ smp_wmb();
++ ptep->pte_high = 0;
++}
++
++static inline void pmd_clear(pmd_t *pmd)
++{
++ u32 *tmp = (u32 *)pmd;
++ *tmp = 0;
++ smp_wmb();
++ *(tmp + 1) = 0;
++}
++
+ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
+ {
+ pte_t res;
+diff -Naur linux-2.6.16/include/asm-i386/pgtable.h linux-2.6.16.16/include/asm-i386/pgtable.h
+--- linux-2.6.16/include/asm-i386/pgtable.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-i386/pgtable.h 2006-05-11 04:56:24.000000000 +0300
+@@ -204,12 +204,10 @@
+ extern unsigned long pg0[];
+
+ #define pte_present(x) ((x).pte_low & (_PAGE_PRESENT | _PAGE_PROTNONE))
+-#define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
+
+ /* To avoid harmful races, pmd_none(x) should check only the lower when PAE */
+ #define pmd_none(x) (!(unsigned long)pmd_val(x))
+ #define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT)
+-#define pmd_clear(xp) do { set_pmd(xp, __pmd(0)); } while (0)
+ #define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
+
+
+@@ -269,7 +267,7 @@
+ pte_t pte;
+ if (full) {
+ pte = *ptep;
+- *ptep = __pte(0);
++ pte_clear(mm, addr, ptep);
+ } else {
+ pte = ptep_get_and_clear(mm, addr, ptep);
+ }
+diff -Naur linux-2.6.16/include/asm-m32r/smp.h linux-2.6.16.16/include/asm-m32r/smp.h
+--- linux-2.6.16/include/asm-m32r/smp.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-m32r/smp.h 2006-05-11 04:56:24.000000000 +0300
+@@ -67,7 +67,8 @@
+ #define raw_smp_processor_id() (current_thread_info()->cpu)
+
+ extern cpumask_t cpu_callout_map;
+-#define cpu_possible_map cpu_callout_map
++extern cpumask_t cpu_possible_map;
++extern cpumask_t cpu_present_map;
+
+ static __inline__ int hard_smp_processor_id(void)
+ {
+diff -Naur linux-2.6.16/include/asm-m32r/uaccess.h linux-2.6.16.16/include/asm-m32r/uaccess.h
+--- linux-2.6.16/include/asm-m32r/uaccess.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-m32r/uaccess.h 2006-05-11 04:56:24.000000000 +0300
+@@ -5,17 +5,9 @@
+ * linux/include/asm-m32r/uaccess.h
+ *
+ * M32R version.
+- * Copyright (C) 2004 Hirokazu Takata <takata at linux-m32r.org>
++ * Copyright (C) 2004, 2006 Hirokazu Takata <takata at linux-m32r.org>
+ */
+
+-#undef UACCESS_DEBUG
+-
+-#ifdef UACCESS_DEBUG
+-#define UAPRINTK(args...) printk(args)
+-#else
+-#define UAPRINTK(args...)
+-#endif /* UACCESS_DEBUG */
+-
+ /*
+ * User space memory access functions
+ */
+@@ -38,27 +30,29 @@
+ #define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
+
+ #ifdef CONFIG_MMU
++
+ #define KERNEL_DS MAKE_MM_SEG(0xFFFFFFFF)
+ #define USER_DS MAKE_MM_SEG(PAGE_OFFSET)
+-#else
+-#define KERNEL_DS MAKE_MM_SEG(0xFFFFFFFF)
+-#define USER_DS MAKE_MM_SEG(0xFFFFFFFF)
+-#endif /* CONFIG_MMU */
+-
+ #define get_ds() (KERNEL_DS)
+-#ifdef CONFIG_MMU
+ #define get_fs() (current_thread_info()->addr_limit)
+ #define set_fs(x) (current_thread_info()->addr_limit = (x))
+-#else
++
++#else /* not CONFIG_MMU */
++
++#define KERNEL_DS MAKE_MM_SEG(0xFFFFFFFF)
++#define USER_DS MAKE_MM_SEG(0xFFFFFFFF)
++#define get_ds() (KERNEL_DS)
++
+ static inline mm_segment_t get_fs(void)
+ {
+- return USER_DS;
++ return USER_DS;
+ }
+
+ static inline void set_fs(mm_segment_t s)
+ {
+ }
+-#endif /* CONFIG_MMU */
++
++#endif /* not CONFIG_MMU */
+
+ #define segment_eq(a,b) ((a).seg == (b).seg)
+
+@@ -83,9 +77,9 @@
+ " subx %0, %0\n" \
+ " cmpu %4, %1\n" \
+ " subx %0, %5\n" \
+- : "=&r"(flag), "=r"(sum) \
+- : "1"(addr), "r"((int)(size)), \
+- "r"(current_thread_info()->addr_limit.seg), "r"(0) \
++ : "=&r" (flag), "=r" (sum) \
++ : "1" (addr), "r" ((int)(size)), \
++ "r" (current_thread_info()->addr_limit.seg), "r" (0) \
+ : "cbit" ); \
+ flag; })
+
+@@ -113,10 +107,10 @@
+ #else
+ static inline int access_ok(int type, const void *addr, unsigned long size)
+ {
+- extern unsigned long memory_start, memory_end;
+- unsigned long val = (unsigned long)addr;
++ extern unsigned long memory_start, memory_end;
++ unsigned long val = (unsigned long)addr;
+
+- return ((val >= memory_start) && ((val + size) < memory_end));
++ return ((val >= memory_start) && ((val + size) < memory_end));
+ }
+ #endif /* CONFIG_MMU */
+
+@@ -155,39 +149,6 @@
+ * accesses to the same area of user memory).
+ */
+
+-extern void __get_user_1(void);
+-extern void __get_user_2(void);
+-extern void __get_user_4(void);
+-
+-#ifndef MODULE
+-#define __get_user_x(size,ret,x,ptr) \
+- __asm__ __volatile__( \
+- " mv r0, %0\n" \
+- " mv r1, %1\n" \
+- " bl __get_user_" #size "\n" \
+- " mv %0, r0\n" \
+- " mv %1, r1\n" \
+- : "=r"(ret), "=r"(x) \
+- : "0"(ptr) \
+- : "r0", "r1", "r14" )
+-#else /* MODULE */
+-/*
+- * Use "jl" instead of "bl" for MODULE
+- */
+-#define __get_user_x(size,ret,x,ptr) \
+- __asm__ __volatile__( \
+- " mv r0, %0\n" \
+- " mv r1, %1\n" \
+- " seth lr, #high(__get_user_" #size ")\n" \
+- " or3 lr, lr, #low(__get_user_" #size ")\n" \
+- " jl lr\n" \
+- " mv %0, r0\n" \
+- " mv %1, r1\n" \
+- : "=r"(ret), "=r"(x) \
+- : "0"(ptr) \
+- : "r0", "r1", "r14" )
+-#endif
+-
+ /* Careful: we have to cast the result to the type of the pointer for sign
+ reasons */
+ /**
+@@ -208,20 +169,7 @@
+ * On error, the variable @x is set to zero.
+ */
+ #define get_user(x,ptr) \
+-({ int __ret_gu; \
+- unsigned long __val_gu; \
+- __chk_user_ptr(ptr); \
+- switch(sizeof (*(ptr))) { \
+- case 1: __get_user_x(1,__ret_gu,__val_gu,ptr); break; \
+- case 2: __get_user_x(2,__ret_gu,__val_gu,ptr); break; \
+- case 4: __get_user_x(4,__ret_gu,__val_gu,ptr); break; \
+- default: __get_user_x(X,__ret_gu,__val_gu,ptr); break; \
+- } \
+- (x) = (__typeof__(*(ptr)))__val_gu; \
+- __ret_gu; \
+-})
+-
+-extern void __put_user_bad(void);
++ __get_user_check((x),(ptr),sizeof(*(ptr)))
+
+ /**
+ * put_user: - Write a simple value into user space.
+@@ -240,8 +188,7 @@
+ * Returns zero on success, or -EFAULT on error.
+ */
+ #define put_user(x,ptr) \
+- __put_user_check((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)))
+-
++ __put_user_check((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)))
+
+ /**
+ * __get_user: - Get a simple variable from user space, with less checking.
+@@ -264,8 +211,64 @@
+ * On error, the variable @x is set to zero.
+ */
+ #define __get_user(x,ptr) \
+- __get_user_nocheck((x),(ptr),sizeof(*(ptr)))
++ __get_user_nocheck((x),(ptr),sizeof(*(ptr)))
+
++#define __get_user_nocheck(x,ptr,size) \
++({ \
++ long __gu_err = 0; \
++ unsigned long __gu_val; \
++ might_sleep(); \
++ __get_user_size(__gu_val,(ptr),(size),__gu_err); \
++ (x) = (__typeof__(*(ptr)))__gu_val; \
++ __gu_err; \
++})
++
++#define __get_user_check(x,ptr,size) \
++({ \
++ long __gu_err = -EFAULT; \
++ unsigned long __gu_val = 0; \
++ const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \
++ might_sleep(); \
++ if (access_ok(VERIFY_READ,__gu_addr,size)) \
++ __get_user_size(__gu_val,__gu_addr,(size),__gu_err); \
++ (x) = (__typeof__(*(ptr)))__gu_val; \
++ __gu_err; \
++})
++
++extern long __get_user_bad(void);
++
++#define __get_user_size(x,ptr,size,retval) \
++do { \
++ retval = 0; \
++ __chk_user_ptr(ptr); \
++ switch (size) { \
++ case 1: __get_user_asm(x,ptr,retval,"ub"); break; \
++ case 2: __get_user_asm(x,ptr,retval,"uh"); break; \
++ case 4: __get_user_asm(x,ptr,retval,""); break; \
++ default: (x) = __get_user_bad(); \
++ } \
++} while (0)
++
++#define __get_user_asm(x, addr, err, itype) \
++ __asm__ __volatile__( \
++ " .fillinsn\n" \
++ "1: ld"itype" %1,@%2\n" \
++ " .fillinsn\n" \
++ "2:\n" \
++ ".section .fixup,\"ax\"\n" \
++ " .balign 4\n" \
++ "3: ldi %0,%3\n" \
++ " seth r14,#high(2b)\n" \
++ " or3 r14,r14,#low(2b)\n" \
++ " jmp r14\n" \
++ ".previous\n" \
++ ".section __ex_table,\"a\"\n" \
++ " .balign 4\n" \
++ " .long 1b,3b\n" \
++ ".previous" \
++ : "=&r" (err), "=&r" (x) \
++ : "r" (addr), "i" (-EFAULT), "0" (err) \
++ : "r14", "memory")
+
+ /**
+ * __put_user: - Write a simple value into user space, with less checking.
+@@ -287,11 +290,13 @@
+ * Returns zero on success, or -EFAULT on error.
+ */
+ #define __put_user(x,ptr) \
+- __put_user_nocheck((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)))
++ __put_user_nocheck((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)))
++
+
+ #define __put_user_nocheck(x,ptr,size) \
+ ({ \
+ long __pu_err; \
++ might_sleep(); \
+ __put_user_size((x),(ptr),(size),__pu_err); \
+ __pu_err; \
+ })
+@@ -308,28 +313,28 @@
+ })
+
+ #if defined(__LITTLE_ENDIAN__)
+-#define __put_user_u64(x, addr, err) \
+- __asm__ __volatile__( \
+- " .fillinsn\n" \
+- "1: st %L1,@%2\n" \
+- " .fillinsn\n" \
+- "2: st %H1,@(4,%2)\n" \
+- " .fillinsn\n" \
+- "3:\n" \
+- ".section .fixup,\"ax\"\n" \
+- " .balign 4\n" \
+- "4: ldi %0,%3\n" \
+- " seth r14,#high(3b)\n" \
+- " or3 r14,r14,#low(3b)\n" \
+- " jmp r14\n" \
+- ".previous\n" \
+- ".section __ex_table,\"a\"\n" \
+- " .balign 4\n" \
+- " .long 1b,4b\n" \
+- " .long 2b,4b\n" \
+- ".previous" \
+- : "=&r"(err) \
+- : "r"(x), "r"(addr), "i"(-EFAULT), "0"(err) \
++#define __put_user_u64(x, addr, err) \
++ __asm__ __volatile__( \
++ " .fillinsn\n" \
++ "1: st %L1,@%2\n" \
++ " .fillinsn\n" \
++ "2: st %H1,@(4,%2)\n" \
++ " .fillinsn\n" \
++ "3:\n" \
++ ".section .fixup,\"ax\"\n" \
++ " .balign 4\n" \
++ "4: ldi %0,%3\n" \
++ " seth r14,#high(3b)\n" \
++ " or3 r14,r14,#low(3b)\n" \
++ " jmp r14\n" \
++ ".previous\n" \
++ ".section __ex_table,\"a\"\n" \
++ " .balign 4\n" \
++ " .long 1b,4b\n" \
++ " .long 2b,4b\n" \
++ ".previous" \
++ : "=&r" (err) \
++ : "r" (x), "r" (addr), "i" (-EFAULT), "0" (err) \
+ : "r14", "memory")
+
+ #elif defined(__BIG_ENDIAN__)
+@@ -353,13 +358,15 @@
+ " .long 1b,4b\n" \
+ " .long 2b,4b\n" \
+ ".previous" \
+- : "=&r"(err) \
+- : "r"(x), "r"(addr), "i"(-EFAULT), "0"(err) \
++ : "=&r" (err) \
++ : "r" (x), "r" (addr), "i" (-EFAULT), "0" (err) \
+ : "r14", "memory")
+ #else
+ #error no endian defined
+ #endif
+
++extern void __put_user_bad(void);
++
+ #define __put_user_size(x,ptr,size,retval) \
+ do { \
+ retval = 0; \
+@@ -398,52 +405,8 @@
+ " .balign 4\n" \
+ " .long 1b,3b\n" \
+ ".previous" \
+- : "=&r"(err) \
+- : "r"(x), "r"(addr), "i"(-EFAULT), "0"(err) \
+- : "r14", "memory")
+-
+-#define __get_user_nocheck(x,ptr,size) \
+-({ \
+- long __gu_err; \
+- unsigned long __gu_val; \
+- __get_user_size(__gu_val,(ptr),(size),__gu_err); \
+- (x) = (__typeof__(*(ptr)))__gu_val; \
+- __gu_err; \
+-})
+-
+-extern long __get_user_bad(void);
+-
+-#define __get_user_size(x,ptr,size,retval) \
+-do { \
+- retval = 0; \
+- __chk_user_ptr(ptr); \
+- switch (size) { \
+- case 1: __get_user_asm(x,ptr,retval,"ub"); break; \
+- case 2: __get_user_asm(x,ptr,retval,"uh"); break; \
+- case 4: __get_user_asm(x,ptr,retval,""); break; \
+- default: (x) = __get_user_bad(); \
+- } \
+-} while (0)
+-
+-#define __get_user_asm(x, addr, err, itype) \
+- __asm__ __volatile__( \
+- " .fillinsn\n" \
+- "1: ld"itype" %1,@%2\n" \
+- " .fillinsn\n" \
+- "2:\n" \
+- ".section .fixup,\"ax\"\n" \
+- " .balign 4\n" \
+- "3: ldi %0,%3\n" \
+- " seth r14,#high(2b)\n" \
+- " or3 r14,r14,#low(2b)\n" \
+- " jmp r14\n" \
+- ".previous\n" \
+- ".section __ex_table,\"a\"\n" \
+- " .balign 4\n" \
+- " .long 1b,3b\n" \
+- ".previous" \
+- : "=&r"(err), "=&r"(x) \
+- : "r"(addr), "i"(-EFAULT), "0"(err) \
++ : "=&r" (err) \
++ : "r" (x), "r" (addr), "i" (-EFAULT), "0" (err) \
+ : "r14", "memory")
+
+ /*
+@@ -453,7 +416,6 @@
+ * anything, so this is accurate.
+ */
+
+-
+ /*
+ * Copy To/From Userspace
+ */
+@@ -511,8 +473,9 @@
+ " .long 2b,9b\n" \
+ " .long 3b,9b\n" \
+ ".previous\n" \
+- : "=&r"(__dst), "=&r"(__src), "=&r"(size), "=&r"(__c) \
+- : "0"(to), "1"(from), "2"(size), "3"(size / 4) \
++ : "=&r" (__dst), "=&r" (__src), "=&r" (size), \
++ "=&r" (__c) \
++ : "0" (to), "1" (from), "2" (size), "3" (size / 4) \
+ : "r14", "memory"); \
+ } while (0)
+
+@@ -573,8 +536,9 @@
+ " .long 2b,7b\n" \
+ " .long 3b,7b\n" \
+ ".previous\n" \
+- : "=&r"(__dst), "=&r"(__src), "=&r"(size), "=&r"(__c) \
+- : "0"(to), "1"(from), "2"(size), "3"(size / 4) \
++ : "=&r" (__dst), "=&r" (__src), "=&r" (size), \
++ "=&r" (__c) \
++ : "0" (to), "1" (from), "2" (size), "3" (size / 4) \
+ : "r14", "memory"); \
+ } while (0)
+
+@@ -676,7 +640,7 @@
+ #define copy_from_user(to,from,n) \
+ ({ \
+ might_sleep(); \
+-__generic_copy_from_user((to),(from),(n)); \
++ __generic_copy_from_user((to),(from),(n)); \
+ })
+
+ long __must_check strncpy_from_user(char *dst, const char __user *src,
+diff -Naur linux-2.6.16/include/asm-mips/bitops.h linux-2.6.16.16/include/asm-mips/bitops.h
+--- linux-2.6.16/include/asm-mips/bitops.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-mips/bitops.h 2006-05-11 04:56:24.000000000 +0300
+@@ -654,7 +654,12 @@
+ {
+ #ifdef CONFIG_32BIT
+ #ifdef CONFIG_CPU_MIPS32
+- __asm__ ("clz %0, %1" : "=r" (word) : "r" (word));
++ __asm__ (
++ " .set mips32 \n"
++ " clz %0, %1 \n"
++ " .set mips0 \n"
++ : "=r" (word)
++ : "r" (word));
+
+ return 32 - word;
+ #else
+@@ -678,7 +683,12 @@
+ #ifdef CONFIG_64BIT
+ #ifdef CONFIG_CPU_MIPS64
+
+- __asm__ ("dclz %0, %1" : "=r" (word) : "r" (word));
++ __asm__ (
++ " .set mips64 \n"
++ " dclz %0, %1 \n"
++ " .set mips0 \n"
++ : "=r" (word)
++ : "r" (word));
+
+ return 64 - word;
+ #else
+diff -Naur linux-2.6.16/include/asm-mips/byteorder.h linux-2.6.16.16/include/asm-mips/byteorder.h
+--- linux-2.6.16/include/asm-mips/byteorder.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-mips/byteorder.h 2006-05-11 04:56:24.000000000 +0300
+@@ -19,7 +19,9 @@
+ static __inline__ __attribute_const__ __u16 ___arch__swab16(__u16 x)
+ {
+ __asm__(
++ " .set mips32r2 \n"
+ " wsbh %0, %1 \n"
++ " .set mips0 \n"
+ : "=r" (x)
+ : "r" (x));
+
+@@ -30,8 +32,10 @@
+ static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x)
+ {
+ __asm__(
++ " .set mips32r2 \n"
+ " wsbh %0, %1 \n"
+ " rotr %0, %0, 16 \n"
++ " .set mips0 \n"
+ : "=r" (x)
+ : "r" (x));
+
+diff -Naur linux-2.6.16/include/asm-mips/interrupt.h linux-2.6.16.16/include/asm-mips/interrupt.h
+--- linux-2.6.16/include/asm-mips/interrupt.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-mips/interrupt.h 2006-05-11 04:56:24.000000000 +0300
+@@ -20,7 +20,9 @@
+ " .set reorder \n"
+ " .set noat \n"
+ #ifdef CONFIG_CPU_MIPSR2
++ " .set mips32r2 \n"
+ " ei \n"
++ " .set mips0 \n"
+ #else
+ " mfc0 $1,$12 \n"
+ " ori $1,0x1f \n"
+@@ -63,7 +65,9 @@
+ " .set push \n"
+ " .set noat \n"
+ #ifdef CONFIG_CPU_MIPSR2
++ " .set mips32r2 \n"
+ " di \n"
++ " .set mips0 \n"
+ #else
+ " mfc0 $1,$12 \n"
+ " ori $1,0x1f \n"
+@@ -103,8 +107,10 @@
+ " .set reorder \n"
+ " .set noat \n"
+ #ifdef CONFIG_CPU_MIPSR2
++ " .set mips32r2 \n"
+ " di \\result \n"
+ " andi \\result, 1 \n"
++ " .set mips0 \n"
+ #else
+ " mfc0 \\result, $12 \n"
+ " ori $1, \\result, 0x1f \n"
+@@ -133,9 +139,11 @@
+ * Slow, but doesn't suffer from a relativly unlikely race
+ * condition we're having since days 1.
+ */
++ " .set mips32r2 \n"
+ " beqz \\flags, 1f \n"
+ " di \n"
+ " ei \n"
++ " .set mips0 \n"
+ "1: \n"
+ #elif defined(CONFIG_CPU_MIPSR2)
+ /*
+diff -Naur linux-2.6.16/include/asm-mips/r4kcache.h linux-2.6.16.16/include/asm-mips/r4kcache.h
+--- linux-2.6.16/include/asm-mips/r4kcache.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-mips/r4kcache.h 2006-05-11 04:56:24.000000000 +0300
+@@ -37,7 +37,7 @@
+ " cache %0, %1 \n" \
+ " .set pop \n" \
+ : \
+- : "i" (op), "m" (*(unsigned char *)(addr)))
++ : "i" (op), "R" (*(unsigned char *)(addr)))
+
+ static inline void flush_icache_line_indexed(unsigned long addr)
+ {
+diff -Naur linux-2.6.16/include/asm-powerpc/floppy.h linux-2.6.16.16/include/asm-powerpc/floppy.h
+--- linux-2.6.16/include/asm-powerpc/floppy.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-powerpc/floppy.h 2006-05-11 04:56:24.000000000 +0300
+@@ -35,6 +35,7 @@
+ #ifdef CONFIG_PCI
+
+ #include <linux/pci.h>
++#include <asm/ppc-pci.h> /* for ppc64_isabridge_dev */
+
+ #define fd_dma_setup(addr,size,mode,io) powerpc_fd_dma_setup(addr,size,mode,io)
+
+@@ -52,12 +53,12 @@
+ if (bus_addr
+ && (addr != prev_addr || size != prev_size || dir != prev_dir)) {
+ /* different from last time -- unmap prev */
+- pci_unmap_single(NULL, bus_addr, prev_size, prev_dir);
++ pci_unmap_single(ppc64_isabridge_dev, bus_addr, prev_size, prev_dir);
+ bus_addr = 0;
+ }
+
+ if (!bus_addr) /* need to map it */
+- bus_addr = pci_map_single(NULL, addr, size, dir);
++ bus_addr = pci_map_single(ppc64_isabridge_dev, addr, size, dir);
+
+ /* remember this one as prev */
+ prev_addr = addr;
+diff -Naur linux-2.6.16/include/asm-x86_64/cpufeature.h linux-2.6.16.16/include/asm-x86_64/cpufeature.h
+--- linux-2.6.16/include/asm-x86_64/cpufeature.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-x86_64/cpufeature.h 2006-05-11 04:56:24.000000000 +0300
+@@ -64,6 +64,7 @@
+ #define X86_FEATURE_REP_GOOD (3*32+ 4) /* rep microcode works well on this CPU */
+ #define X86_FEATURE_CONSTANT_TSC (3*32+5) /* TSC runs at constant rate */
+ #define X86_FEATURE_SYNC_RDTSC (3*32+6) /* RDTSC syncs CPU core */
++#define X86_FEATURE_FXSAVE_LEAK (3*32+7) /* FIP/FOP/FDP leaks through FXSAVE */
+
+ /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
+ #define X86_FEATURE_XMM3 (4*32+ 0) /* Streaming SIMD Extensions-3 */
+diff -Naur linux-2.6.16/include/asm-x86_64/i387.h linux-2.6.16.16/include/asm-x86_64/i387.h
+--- linux-2.6.16/include/asm-x86_64/i387.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/asm-x86_64/i387.h 2006-05-11 04:56:24.000000000 +0300
+@@ -72,6 +72,23 @@
+ #define set_fpu_swd(t,val) ((t)->thread.i387.fxsave.swd = (val))
+ #define set_fpu_fxsr_twd(t,val) ((t)->thread.i387.fxsave.twd = (val))
+
++#define X87_FSW_ES (1 << 7) /* Exception Summary */
++
++/* AMD CPUs don't save/restore FDP/FIP/FOP unless an exception
++ is pending. Clear the x87 state here by setting it to fixed
++ values. The kernel data segment can be sometimes 0 and sometimes
++ new user value. Both should be ok.
++ Use the PDA as safe address because it should be already in L1. */
++static inline void clear_fpu_state(struct i387_fxsave_struct *fx)
++{
++ if (unlikely(fx->swd & X87_FSW_ES))
++ asm volatile("fnclex");
++ alternative_input(ASM_NOP8 ASM_NOP2,
++ " emms\n" /* clear stack tags */
++ " fildl %%gs:0", /* load to clear state */
++ X86_FEATURE_FXSAVE_LEAK);
++}
++
+ static inline int restore_fpu_checking(struct i387_fxsave_struct *fx)
+ {
+ int err;
+@@ -119,6 +136,7 @@
+ #endif
+ if (unlikely(err))
+ __clear_user(fx, sizeof(struct i387_fxsave_struct));
++ /* No need to clear here because the caller clears USED_MATH */
+ return err;
+ }
+
+@@ -149,7 +167,7 @@
+ "i" (offsetof(__typeof__(*tsk),
+ thread.i387.fxsave)));
+ #endif
+- __asm__ __volatile__("fnclex");
++ clear_fpu_state(&tsk->thread.i387.fxsave);
+ }
+
+ static inline void kernel_fpu_begin(void)
+diff -Naur linux-2.6.16/include/linux/cpu.h linux-2.6.16.16/include/linux/cpu.h
+--- linux-2.6.16/include/linux/cpu.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/linux/cpu.h 2006-05-11 04:56:24.000000000 +0300
+@@ -32,7 +32,7 @@
+ };
+
+ extern int register_cpu(struct cpu *, int, struct node *);
+-extern struct sys_device *get_cpu_sysdev(int cpu);
++extern struct sys_device *get_cpu_sysdev(unsigned cpu);
+ #ifdef CONFIG_HOTPLUG_CPU
+ extern void unregister_cpu(struct cpu *, struct node *);
+ #endif
+diff -Naur linux-2.6.16/include/linux/cpumask.h linux-2.6.16.16/include/linux/cpumask.h
+--- linux-2.6.16/include/linux/cpumask.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/linux/cpumask.h 2006-05-11 04:56:24.000000000 +0300
+@@ -408,6 +408,7 @@
+ })
+
+ #define for_each_cpu(cpu) for_each_cpu_mask((cpu), cpu_possible_map)
++#define for_each_possible_cpu(cpu) for_each_cpu_mask((cpu), cpu_possible_map)
+ #define for_each_online_cpu(cpu) for_each_cpu_mask((cpu), cpu_online_map)
+ #define for_each_present_cpu(cpu) for_each_cpu_mask((cpu), cpu_present_map)
+
+diff -Naur linux-2.6.16/include/linux/fb.h linux-2.6.16.16/include/linux/fb.h
+--- linux-2.6.16/include/linux/fb.h 2006-05-18 01:12:24.000000000 +0300
++++ linux-2.6.16.16/include/linux/fb.h 2006-05-17 21:41:31.000000000 +0300
+@@ -840,12 +840,10 @@
+ #define FB_LEFT_POS(bpp) (32 - bpp)
+ #define FB_SHIFT_HIGH(val, bits) ((val) >> (bits))
+ #define FB_SHIFT_LOW(val, bits) ((val) << (bits))
+-#define FB_BIT_NR(b) (7 - (b))
+ #else
+ #define FB_LEFT_POS(bpp) (0)
+ #define FB_SHIFT_HIGH(val, bits) ((val) << (bits))
+ #define FB_SHIFT_LOW(val, bits) ((val) >> (bits))
+-#define FB_BIT_NR(b) (b)
+ #endif
+
+ /*
+diff -Naur linux-2.6.16/include/linux/fs.h linux-2.6.16.16/include/linux/fs.h
+--- linux-2.6.16/include/linux/fs.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/linux/fs.h 2006-05-11 04:56:24.000000000 +0300
+@@ -1383,6 +1383,7 @@
+ extern void bd_release(struct block_device *);
+
+ /* fs/char_dev.c */
++#define CHRDEV_MAJOR_HASH_SIZE 255
+ extern int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *);
+ extern int register_chrdev_region(dev_t, unsigned, const char *);
+ extern int register_chrdev(unsigned int, const char *,
+@@ -1390,25 +1391,17 @@
+ extern int unregister_chrdev(unsigned int, const char *);
+ extern void unregister_chrdev_region(dev_t, unsigned);
+ extern int chrdev_open(struct inode *, struct file *);
+-extern int get_chrdev_list(char *);
+-extern void *acquire_chrdev_list(void);
+-extern int count_chrdev_list(void);
+-extern void *get_next_chrdev(void *);
+-extern int get_chrdev_info(void *, int *, char **);
+-extern void release_chrdev_list(void *);
++extern void chrdev_show(struct seq_file *,off_t);
+
+ /* fs/block_dev.c */
++#define BLKDEV_MAJOR_HASH_SIZE 255
+ #define BDEVNAME_SIZE 32 /* Largest string for a blockdev identifier */
+ extern const char *__bdevname(dev_t, char *buffer);
+ extern const char *bdevname(struct block_device *bdev, char *buffer);
+ extern struct block_device *lookup_bdev(const char *);
+ extern struct block_device *open_bdev_excl(const char *, int, void *);
+ extern void close_bdev_excl(struct block_device *);
+-extern void *acquire_blkdev_list(void);
+-extern int count_blkdev_list(void);
+-extern void *get_next_blkdev(void *);
+-extern int get_blkdev_info(void *, int *, char **);
+-extern void release_blkdev_list(void *);
++extern void blkdev_show(struct seq_file *,off_t);
+
+ extern void init_special_inode(struct inode *, umode_t, dev_t);
+
+diff -Naur linux-2.6.16/include/linux/mm.h linux-2.6.16.16/include/linux/mm.h
+--- linux-2.6.16/include/linux/mm.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/linux/mm.h 2006-05-11 04:56:24.000000000 +0300
+@@ -229,10 +229,9 @@
+ unsigned long private; /* Mapping-private opaque data:
+ * usually used for buffer_heads
+ * if PagePrivate set; used for
+- * swp_entry_t if PageSwapCache.
+- * When page is free, this
++ * swp_entry_t if PageSwapCache;
+ * indicates order in the buddy
+- * system.
++ * system if PG_buddy is set.
+ */
+ struct address_space *mapping; /* If low bit clear, points to
+ * inode address_space, or NULL.
+diff -Naur linux-2.6.16/include/linux/page-flags.h linux-2.6.16.16/include/linux/page-flags.h
+--- linux-2.6.16/include/linux/page-flags.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/linux/page-flags.h 2006-05-11 04:56:24.000000000 +0300
+@@ -74,7 +74,9 @@
+ #define PG_mappedtodisk 16 /* Has blocks allocated on-disk */
+ #define PG_reclaim 17 /* To be reclaimed asap */
+ #define PG_nosave_free 18 /* Free, should not be written */
+-#define PG_uncached 19 /* Page has been mapped as uncached */
++#define PG_buddy 19 /* Page is free, on buddy lists */
++
++#define PG_uncached 20 /* Page has been mapped as uncached */
+
+ /*
+ * Global page accounting. One instance per CPU. Only unsigned longs are
+@@ -319,6 +321,10 @@
+ #define SetPageNosaveFree(page) set_bit(PG_nosave_free, &(page)->flags)
+ #define ClearPageNosaveFree(page) clear_bit(PG_nosave_free, &(page)->flags)
+
++#define PageBuddy(page) test_bit(PG_buddy, &(page)->flags)
++#define __SetPageBuddy(page) __set_bit(PG_buddy, &(page)->flags)
++#define __ClearPageBuddy(page) __clear_bit(PG_buddy, &(page)->flags)
++
+ #define PageMappedToDisk(page) test_bit(PG_mappedtodisk, &(page)->flags)
+ #define SetPageMappedToDisk(page) set_bit(PG_mappedtodisk, &(page)->flags)
+ #define ClearPageMappedToDisk(page) clear_bit(PG_mappedtodisk, &(page)->flags)
+diff -Naur linux-2.6.16/include/linux/proc_fs.h linux-2.6.16.16/include/linux/proc_fs.h
+--- linux-2.6.16/include/linux/proc_fs.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/linux/proc_fs.h 2006-05-11 04:56:24.000000000 +0300
+@@ -78,7 +78,7 @@
+ struct vmcore {
+ struct list_head list;
+ unsigned long long paddr;
+- unsigned long size;
++ unsigned long long size;
+ loff_t offset;
+ };
+
+diff -Naur linux-2.6.16/include/linux/raid/raid1.h linux-2.6.16.16/include/linux/raid/raid1.h
+--- linux-2.6.16/include/linux/raid/raid1.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/linux/raid/raid1.h 2006-05-11 04:56:24.000000000 +0300
+@@ -130,6 +130,6 @@
+ * with failure when last write completes (and all failed).
+ * Record that bi_end_io was called with this flag...
+ */
+-#define R1BIO_Returned 4
++#define R1BIO_Returned 6
+
+ #endif
+diff -Naur linux-2.6.16/include/linux/rtc.h linux-2.6.16.16/include/linux/rtc.h
+--- linux-2.6.16/include/linux/rtc.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/linux/rtc.h 2006-05-11 04:56:24.000000000 +0300
+@@ -11,8 +11,6 @@
+ #ifndef _LINUX_RTC_H_
+ #define _LINUX_RTC_H_
+
+-#include <linux/interrupt.h>
+-
+ /*
+ * The struct used to pass data via the following ioctl. Similar to the
+ * struct tm in <time.h>, but it needs to be here so that the kernel
+@@ -95,6 +93,8 @@
+
+ #ifdef __KERNEL__
+
++#include <linux/interrupt.h>
++
+ typedef struct rtc_task {
+ void (*func)(void *private_data);
+ void *private_data;
+diff -Naur linux-2.6.16/include/net/ip.h linux-2.6.16.16/include/net/ip.h
+--- linux-2.6.16/include/net/ip.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/net/ip.h 2006-05-11 04:56:24.000000000 +0300
+@@ -95,6 +95,7 @@
+ extern int ip_mr_input(struct sk_buff *skb);
+ extern int ip_output(struct sk_buff *skb);
+ extern int ip_mc_output(struct sk_buff *skb);
++extern int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *));
+ extern int ip_do_nat(struct sk_buff *skb);
+ extern void ip_send_check(struct iphdr *ip);
+ extern int ip_queue_xmit(struct sk_buff *skb, int ipfragok);
+diff -Naur linux-2.6.16/include/net/sctp/structs.h linux-2.6.16.16/include/net/sctp/structs.h
+--- linux-2.6.16/include/net/sctp/structs.h 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/include/net/sctp/structs.h 2006-05-11 04:56:24.000000000 +0300
+@@ -702,6 +702,7 @@
+ __u8 tsn_gap_acked; /* Is this chunk acked by a GAP ACK? */
+ __s8 fast_retransmit; /* Is this chunk fast retransmitted? */
+ __u8 tsn_missing_report; /* Data chunk missing counter. */
++ __u8 data_accepted; /* At least 1 chunk in this packet accepted */
+ };
+
+ void sctp_chunk_hold(struct sctp_chunk *);
+diff -Naur linux-2.6.16/ipc/shm.c linux-2.6.16.16/ipc/shm.c
+--- linux-2.6.16/ipc/shm.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/ipc/shm.c 2006-05-11 04:56:24.000000000 +0300
+@@ -161,6 +161,8 @@
+ ret = shmem_mmap(file, vma);
+ if (ret == 0) {
+ vma->vm_ops = &shm_vm_ops;
++ if (!(vma->vm_flags & VM_WRITE))
++ vma->vm_flags &= ~VM_MAYWRITE;
+ shm_inc(file->f_dentry->d_inode->i_ino);
+ }
+
+diff -Naur linux-2.6.16/ipc/util.c linux-2.6.16.16/ipc/util.c
+--- linux-2.6.16/ipc/util.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/ipc/util.c 2006-05-11 04:56:24.000000000 +0300
+@@ -182,8 +182,7 @@
+ if(new == NULL)
+ return size;
+ new->size = newsize;
+- memcpy(new->p, ids->entries->p, sizeof(struct kern_ipc_perm *)*size +
+- sizeof(struct ipc_id_ary));
++ memcpy(new->p, ids->entries->p, sizeof(struct kern_ipc_perm *)*size);
+ for(i=size;i<newsize;i++) {
+ new->p[i] = NULL;
+ }
+diff -Naur linux-2.6.16/kernel/auditsc.c linux-2.6.16.16/kernel/auditsc.c
+--- linux-2.6.16/kernel/auditsc.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/kernel/auditsc.c 2006-05-11 04:56:24.000000000 +0300
+@@ -966,11 +966,6 @@
+ if (context->in_syscall) {
+ struct audit_context *newctx;
+
+-#if defined(__NR_vm86) && defined(__NR_vm86old)
+- /* vm86 mode should only be entered once */
+- if (major == __NR_vm86 || major == __NR_vm86old)
+- return;
+-#endif
+ #if AUDIT_DEBUG
+ printk(KERN_ERR
+ "audit(:%d) pid=%d in syscall=%d;"
+diff -Naur linux-2.6.16/kernel/exec_domain.c linux-2.6.16.16/kernel/exec_domain.c
+--- linux-2.6.16/kernel/exec_domain.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/kernel/exec_domain.c 2006-05-11 04:56:24.000000000 +0300
+@@ -140,6 +140,7 @@
+ ep = lookup_exec_domain(personality);
+ if (ep == current_thread_info()->exec_domain) {
+ current->personality = personality;
++ module_put(ep->module);
+ return 0;
+ }
+
+diff -Naur linux-2.6.16/kernel/fork.c linux-2.6.16.16/kernel/fork.c
+--- linux-2.6.16/kernel/fork.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/kernel/fork.c 2006-05-11 04:56:24.000000000 +0300
+@@ -720,7 +720,7 @@
+ free_fdset (new_fdt->open_fds, new_fdt->max_fdset);
+ free_fd_array(new_fdt->fd, new_fdt->max_fds);
+ kmem_cache_free(files_cachep, newf);
+- goto out;
++ return NULL;
+ }
+
+ static int copy_files(unsigned long clone_flags, struct task_struct * tsk)
+diff -Naur linux-2.6.16/kernel/power/process.c linux-2.6.16.16/kernel/power/process.c
+--- linux-2.6.16/kernel/power/process.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/kernel/power/process.c 2006-05-11 04:56:24.000000000 +0300
+@@ -25,8 +25,7 @@
+ (p->flags & PF_NOFREEZE) ||
+ (p->exit_state == EXIT_ZOMBIE) ||
+ (p->exit_state == EXIT_DEAD) ||
+- (p->state == TASK_STOPPED) ||
+- (p->state == TASK_TRACED))
++ (p->state == TASK_STOPPED))
+ return 0;
+ return 1;
+ }
+diff -Naur linux-2.6.16/kernel/ptrace.c linux-2.6.16.16/kernel/ptrace.c
+--- linux-2.6.16/kernel/ptrace.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/kernel/ptrace.c 2006-05-11 04:56:24.000000000 +0300
+@@ -57,10 +57,6 @@
+ signal_wake_up(child, 1);
+ }
+ }
+- if (child->signal->flags & SIGNAL_GROUP_EXIT) {
+- sigaddset(&child->pending.signal, SIGKILL);
+- signal_wake_up(child, 1);
+- }
+ spin_unlock(&child->sighand->siglock);
+ }
+
+@@ -82,7 +78,8 @@
+ SET_LINKS(child);
+ }
+
+- ptrace_untrace(child);
++ if (child->state == TASK_TRACED)
++ ptrace_untrace(child);
+ }
+
+ /*
+diff -Naur linux-2.6.16/kernel/sched.c linux-2.6.16.16/kernel/sched.c
+--- linux-2.6.16/kernel/sched.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/kernel/sched.c 2006-05-11 04:56:24.000000000 +0300
+@@ -237,6 +237,7 @@
+
+ task_t *migration_thread;
+ struct list_head migration_queue;
++ int cpu;
+ #endif
+
+ #ifdef CONFIG_SCHEDSTATS
+@@ -1660,6 +1661,9 @@
+ /*
+ * double_rq_lock - safely lock two runqueues
+ *
++ * We must take them in cpu order to match code in
++ * dependent_sleeper and wake_dependent_sleeper.
++ *
+ * Note this does not disable interrupts like task_rq_lock,
+ * you need to do so manually before calling.
+ */
+@@ -1671,7 +1675,7 @@
+ spin_lock(&rq1->lock);
+ __acquire(rq2->lock); /* Fake it out ;) */
+ } else {
+- if (rq1 < rq2) {
++ if (rq1->cpu < rq2->cpu) {
+ spin_lock(&rq1->lock);
+ spin_lock(&rq2->lock);
+ } else {
+@@ -1707,7 +1711,7 @@
+ __acquires(this_rq->lock)
+ {
+ if (unlikely(!spin_trylock(&busiest->lock))) {
+- if (busiest < this_rq) {
++ if (busiest->cpu < this_rq->cpu) {
+ spin_unlock(&this_rq->lock);
+ spin_lock(&busiest->lock);
+ spin_lock(&this_rq->lock);
+@@ -6035,6 +6039,7 @@
+ rq->push_cpu = 0;
+ rq->migration_thread = NULL;
+ INIT_LIST_HEAD(&rq->migration_queue);
++ rq->cpu = i;
+ #endif
+ atomic_set(&rq->nr_iowait, 0);
+
+diff -Naur linux-2.6.16/kernel/signal.c linux-2.6.16.16/kernel/signal.c
+--- linux-2.6.16/kernel/signal.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/kernel/signal.c 2006-05-11 04:56:24.000000000 +0300
+@@ -975,7 +975,6 @@
+ if (t == NULL)
+ /* restart balancing at this thread */
+ t = p->signal->curr_target = p;
+- BUG_ON(t->tgid != p->tgid);
+
+ while (!wants_signal(sig, t)) {
+ t = next_thread(t);
+@@ -1689,6 +1688,7 @@
+ /* Let the debugger run. */
+ set_current_state(TASK_TRACED);
+ spin_unlock_irq(&current->sighand->siglock);
++ try_to_freeze();
+ read_lock(&tasklist_lock);
+ if (likely(current->ptrace & PT_PTRACED) &&
+ likely(current->parent != current->real_parent ||
+@@ -1942,9 +1942,9 @@
+ /* Let the debugger run. */
+ ptrace_stop(signr, signr, info);
+
+- /* We're back. Did the debugger cancel the sig or group_exit? */
++ /* We're back. Did the debugger cancel the sig? */
+ signr = current->exit_code;
+- if (signr == 0 || current->signal->flags & SIGNAL_GROUP_EXIT)
++ if (signr == 0)
+ continue;
+
+ current->exit_code = 0;
+diff -Naur linux-2.6.16/kernel/sys.c linux-2.6.16.16/kernel/sys.c
+--- linux-2.6.16/kernel/sys.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/kernel/sys.c 2006-05-11 04:56:24.000000000 +0300
+@@ -1657,7 +1657,19 @@
+ (cputime_eq(current->signal->it_prof_expires, cputime_zero) ||
+ new_rlim.rlim_cur <= cputime_to_secs(
+ current->signal->it_prof_expires))) {
+- cputime_t cputime = secs_to_cputime(new_rlim.rlim_cur);
++ unsigned long rlim_cur = new_rlim.rlim_cur;
++ cputime_t cputime;
++
++ if (rlim_cur == 0) {
++ /*
++ * The caller is asking for an immediate RLIMIT_CPU
++ * expiry. But we use the zero value to mean "it was
++ * never set". So let's cheat and make it one second
++ * instead
++ */
++ rlim_cur = 1;
++ }
++ cputime = secs_to_cputime(rlim_cur);
+ read_lock(&tasklist_lock);
+ spin_lock_irq(&current->sighand->siglock);
+ set_process_cpu_timer(current, CPUCLOCK_PROF,
+diff -Naur linux-2.6.16/kernel/uid16.c linux-2.6.16.16/kernel/uid16.c
+--- linux-2.6.16/kernel/uid16.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/kernel/uid16.c 2006-05-11 04:56:24.000000000 +0300
+@@ -20,43 +20,67 @@
+
+ asmlinkage long sys_chown16(const char __user * filename, old_uid_t user, old_gid_t group)
+ {
+- return sys_chown(filename, low2highuid(user), low2highgid(group));
++ long ret = sys_chown(filename, low2highuid(user), low2highgid(group));
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+
+ asmlinkage long sys_lchown16(const char __user * filename, old_uid_t user, old_gid_t group)
+ {
+- return sys_lchown(filename, low2highuid(user), low2highgid(group));
++ long ret = sys_lchown(filename, low2highuid(user), low2highgid(group));
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+
+ asmlinkage long sys_fchown16(unsigned int fd, old_uid_t user, old_gid_t group)
+ {
+- return sys_fchown(fd, low2highuid(user), low2highgid(group));
++ long ret = sys_fchown(fd, low2highuid(user), low2highgid(group));
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+
+ asmlinkage long sys_setregid16(old_gid_t rgid, old_gid_t egid)
+ {
+- return sys_setregid(low2highgid(rgid), low2highgid(egid));
++ long ret = sys_setregid(low2highgid(rgid), low2highgid(egid));
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+
+ asmlinkage long sys_setgid16(old_gid_t gid)
+ {
+- return sys_setgid(low2highgid(gid));
++ long ret = sys_setgid(low2highgid(gid));
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+
+ asmlinkage long sys_setreuid16(old_uid_t ruid, old_uid_t euid)
+ {
+- return sys_setreuid(low2highuid(ruid), low2highuid(euid));
++ long ret = sys_setreuid(low2highuid(ruid), low2highuid(euid));
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+
+ asmlinkage long sys_setuid16(old_uid_t uid)
+ {
+- return sys_setuid(low2highuid(uid));
++ long ret = sys_setuid(low2highuid(uid));
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+
+ asmlinkage long sys_setresuid16(old_uid_t ruid, old_uid_t euid, old_uid_t suid)
+ {
+- return sys_setresuid(low2highuid(ruid), low2highuid(euid),
+- low2highuid(suid));
++ long ret = sys_setresuid(low2highuid(ruid), low2highuid(euid),
++ low2highuid(suid));
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+
+ asmlinkage long sys_getresuid16(old_uid_t __user *ruid, old_uid_t __user *euid, old_uid_t __user *suid)
+@@ -72,8 +96,11 @@
+
+ asmlinkage long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid)
+ {
+- return sys_setresgid(low2highgid(rgid), low2highgid(egid),
+- low2highgid(sgid));
++ long ret = sys_setresgid(low2highgid(rgid), low2highgid(egid),
++ low2highgid(sgid));
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+
+ asmlinkage long sys_getresgid16(old_gid_t __user *rgid, old_gid_t __user *egid, old_gid_t __user *sgid)
+@@ -89,12 +116,18 @@
+
+ asmlinkage long sys_setfsuid16(old_uid_t uid)
+ {
+- return sys_setfsuid(low2highuid(uid));
++ long ret = sys_setfsuid(low2highuid(uid));
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+
+ asmlinkage long sys_setfsgid16(old_gid_t gid)
+ {
+- return sys_setfsgid(low2highgid(gid));
++ long ret = sys_setfsgid(low2highgid(gid));
++ /* avoid REGPARM breakage on x86: */
++ prevent_tail_call(ret);
++ return ret;
+ }
+
+ static int groups16_to_user(old_gid_t __user *grouplist,
+diff -Naur linux-2.6.16/Makefile linux-2.6.16.16/Makefile
+--- linux-2.6.16/Makefile 2006-05-18 01:12:20.000000000 +0300
++++ linux-2.6.16.16/Makefile 2006-05-17 21:41:27.000000000 +0300
+@@ -1,7 +1,7 @@
+ VERSION = 2
+ PATCHLEVEL = 6
+ SUBLEVEL = 16
+-EXTRAVERSION =
++EXTRAVERSION = .16
+ NAME=Sliding Snow Leopard
+
+ # *DOCUMENTATION*
+diff -Naur linux-2.6.16/mm/madvise.c linux-2.6.16.16/mm/madvise.c
+--- linux-2.6.16/mm/madvise.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/mm/madvise.c 2006-05-11 04:56:24.000000000 +0300
+@@ -168,6 +168,9 @@
+ return -EINVAL;
+ }
+
++ if ((vma->vm_flags & (VM_SHARED|VM_WRITE)) != (VM_SHARED|VM_WRITE))
++ return -EACCES;
++
+ mapping = vma->vm_file->f_mapping;
+
+ offset = (loff_t)(start - vma->vm_start)
+diff -Naur linux-2.6.16/mm/page_alloc.c linux-2.6.16.16/mm/page_alloc.c
+--- linux-2.6.16/mm/page_alloc.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/mm/page_alloc.c 2006-05-11 04:56:24.000000000 +0300
+@@ -153,7 +153,8 @@
+ 1 << PG_reclaim |
+ 1 << PG_slab |
+ 1 << PG_swapcache |
+- 1 << PG_writeback );
++ 1 << PG_writeback |
++ 1 << PG_buddy );
+ set_page_count(page, 0);
+ reset_page_mapcount(page);
+ page->mapping = NULL;
+@@ -224,12 +225,12 @@
+
+ static inline void set_page_order(struct page *page, int order) {
+ set_page_private(page, order);
+- __SetPagePrivate(page);
++ __SetPageBuddy(page);
+ }
+
+ static inline void rmv_page_order(struct page *page)
+ {
+- __ClearPagePrivate(page);
++ __ClearPageBuddy(page);
+ set_page_private(page, 0);
+ }
+
+@@ -268,11 +269,13 @@
+ * This function checks whether a page is free && is the buddy
+ * we can do coalesce a page and its buddy if
+ * (a) the buddy is not in a hole &&
+- * (b) the buddy is free &&
+- * (c) the buddy is on the buddy system &&
+- * (d) a page and its buddy have the same order.
+- * for recording page's order, we use page_private(page) and PG_private.
++ * (b) the buddy is in the buddy system &&
++ * (c) a page and its buddy have the same order.
++ *
++ * For recording whether a page is in the buddy system, we use PG_buddy.
++ * Setting, clearing, and testing PG_buddy is serialized by zone->lock.
+ *
++ * For recording page's order, we use page_private(page).
+ */
+ static inline int page_is_buddy(struct page *page, int order)
+ {
+@@ -281,10 +284,10 @@
+ return 0;
+ #endif
+
+- if (PagePrivate(page) &&
+- (page_order(page) == order) &&
+- page_count(page) == 0)
++ if (PageBuddy(page) && page_order(page) == order) {
++ BUG_ON(page_count(page) != 0);
+ return 1;
++ }
+ return 0;
+ }
+
+@@ -301,7 +304,7 @@
+ * as necessary, plus some accounting needed to play nicely with other
+ * parts of the VM system.
+ * At each level, we keep a list of pages, which are heads of continuous
+- * free pages of length of (1 << order) and marked with PG_Private.Page's
++ * free pages of length of (1 << order) and marked with PG_buddy. Page's
+ * order is recorded in page_private(page) field.
+ * So when we are allocating or freeing one, we can derive the state of the
+ * other. That is, if we allocate a small block, and both were
+@@ -364,7 +367,8 @@
+ 1 << PG_slab |
+ 1 << PG_swapcache |
+ 1 << PG_writeback |
+- 1 << PG_reserved ))))
++ 1 << PG_reserved |
++ 1 << PG_buddy ))))
+ bad_page(page);
+ if (PageDirty(page))
+ __ClearPageDirty(page);
+@@ -522,7 +526,8 @@
+ 1 << PG_slab |
+ 1 << PG_swapcache |
+ 1 << PG_writeback |
+- 1 << PG_reserved ))))
++ 1 << PG_reserved |
++ 1 << PG_buddy ))))
+ bad_page(page);
+
+ /*
+diff -Naur linux-2.6.16/net/atm/clip.c linux-2.6.16.16/net/atm/clip.c
+--- linux-2.6.16/net/atm/clip.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/atm/clip.c 2006-05-11 04:56:24.000000000 +0300
+@@ -613,12 +613,19 @@
+
+
+ static int clip_device_event(struct notifier_block *this,unsigned long event,
+- void *dev)
++ void *arg)
+ {
++ struct net_device *dev = arg;
++
++ if (event == NETDEV_UNREGISTER) {
++ neigh_ifdown(&clip_tbl, dev);
++ return NOTIFY_DONE;
++ }
++
+ /* ignore non-CLIP devices */
+- if (((struct net_device *) dev)->type != ARPHRD_ATM ||
+- ((struct net_device *) dev)->hard_start_xmit != clip_start_xmit)
++ if (dev->type != ARPHRD_ATM || dev->hard_start_xmit != clip_start_xmit)
+ return NOTIFY_DONE;
++
+ switch (event) {
+ case NETDEV_UP:
+ DPRINTK("clip_device_event NETDEV_UP\n");
+@@ -686,14 +693,12 @@
+ static void atmarpd_close(struct atm_vcc *vcc)
+ {
+ DPRINTK("atmarpd_close\n");
+- atmarpd = NULL; /* assumed to be atomic */
+- barrier();
+- unregister_inetaddr_notifier(&clip_inet_notifier);
+- unregister_netdevice_notifier(&clip_dev_notifier);
+- if (skb_peek(&sk_atm(vcc)->sk_receive_queue))
+- printk(KERN_ERR "atmarpd_close: closing with requests "
+- "pending\n");
++
++ rtnl_lock();
++ atmarpd = NULL;
+ skb_queue_purge(&sk_atm(vcc)->sk_receive_queue);
++ rtnl_unlock();
++
+ DPRINTK("(done)\n");
+ module_put(THIS_MODULE);
+ }
+@@ -714,7 +719,12 @@
+
+ static int atm_init_atmarp(struct atm_vcc *vcc)
+ {
+- if (atmarpd) return -EADDRINUSE;
++ rtnl_lock();
++ if (atmarpd) {
++ rtnl_unlock();
++ return -EADDRINUSE;
++ }
++
+ if (start_timer) {
+ start_timer = 0;
+ init_timer(&idle_timer);
+@@ -731,10 +741,7 @@
+ vcc->push = NULL;
+ vcc->pop = NULL; /* crash */
+ vcc->push_oam = NULL; /* crash */
+- if (register_netdevice_notifier(&clip_dev_notifier))
+- printk(KERN_ERR "register_netdevice_notifier failed\n");
+- if (register_inetaddr_notifier(&clip_inet_notifier))
+- printk(KERN_ERR "register_inetaddr_notifier failed\n");
++ rtnl_unlock();
+ return 0;
+ }
+
+@@ -992,6 +999,8 @@
+
+ clip_tbl_hook = &clip_tbl;
+ register_atm_ioctl(&clip_ioctl_ops);
++ register_netdevice_notifier(&clip_dev_notifier);
++ register_inetaddr_notifier(&clip_inet_notifier);
+
+ #ifdef CONFIG_PROC_FS
+ {
+@@ -1012,6 +1021,9 @@
+
+ remove_proc_entry("arp", atm_proc_root);
+
++ unregister_inetaddr_notifier(&clip_inet_notifier);
++ unregister_netdevice_notifier(&clip_dev_notifier);
++
+ deregister_atm_ioctl(&clip_ioctl_ops);
+
+ /* First, stop the idle timer, so it stops banging
+diff -Naur linux-2.6.16/net/bridge/br_netfilter.c linux-2.6.16.16/net/bridge/br_netfilter.c
+--- linux-2.6.16/net/bridge/br_netfilter.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/bridge/br_netfilter.c 2006-05-11 04:56:24.000000000 +0300
+@@ -739,6 +739,15 @@
+ return NF_STOLEN;
+ }
+
++static int br_nf_dev_queue_xmit(struct sk_buff *skb)
++{
++ if (skb->protocol == htons(ETH_P_IP) &&
++ skb->len > skb->dev->mtu &&
++ !(skb_shinfo(skb)->ufo_size || skb_shinfo(skb)->tso_size))
++ return ip_fragment(skb, br_dev_queue_push_xmit);
++ else
++ return br_dev_queue_push_xmit(skb);
++}
+
+ /* PF_BRIDGE/POST_ROUTING ********************************************/
+ static unsigned int br_nf_post_routing(unsigned int hook, struct sk_buff **pskb,
+@@ -798,7 +807,7 @@
+ realoutdev = nf_bridge->netoutdev;
+ #endif
+ NF_HOOK(pf, NF_IP_POST_ROUTING, skb, NULL, realoutdev,
+- br_dev_queue_push_xmit);
++ br_nf_dev_queue_xmit);
+
+ return NF_STOLEN;
+
+@@ -843,7 +852,7 @@
+ if ((out->hard_start_xmit == br_dev_xmit &&
+ okfn != br_nf_forward_finish &&
+ okfn != br_nf_local_out_finish &&
+- okfn != br_dev_queue_push_xmit)
++ okfn != br_nf_dev_queue_xmit)
+ #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
+ || ((out->priv_flags & IFF_802_1Q_VLAN) &&
+ VLAN_DEV_INFO(out)->real_dev->hard_start_xmit == br_dev_xmit)
+diff -Naur linux-2.6.16/net/core/dev.c linux-2.6.16.16/net/core/dev.c
+--- linux-2.6.16/net/core/dev.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/core/dev.c 2006-05-11 04:56:24.000000000 +0300
+@@ -2932,11 +2932,11 @@
+
+ switch(dev->reg_state) {
+ case NETREG_REGISTERING:
++ dev->reg_state = NETREG_REGISTERED;
+ err = netdev_register_sysfs(dev);
+ if (err)
+ printk(KERN_ERR "%s: failed sysfs registration (%d)\n",
+ dev->name, err);
+- dev->reg_state = NETREG_REGISTERED;
+ break;
+
+ case NETREG_UNREGISTERING:
+diff -Naur linux-2.6.16/net/core/sock.c linux-2.6.16.16/net/core/sock.c
+--- linux-2.6.16/net/core/sock.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/core/sock.c 2006-05-11 04:56:24.000000000 +0300
+@@ -404,8 +404,9 @@
+ if (!valbool) {
+ sk->sk_bound_dev_if = 0;
+ } else {
+- if (optlen > IFNAMSIZ)
+- optlen = IFNAMSIZ;
++ if (optlen > IFNAMSIZ - 1)
++ optlen = IFNAMSIZ - 1;
++ memset(devname, 0, sizeof(devname));
+ if (copy_from_user(devname, optval, optlen)) {
+ ret = -EFAULT;
+ break;
+diff -Naur linux-2.6.16/net/ipv4/fib_trie.c linux-2.6.16.16/net/ipv4/fib_trie.c
+--- linux-2.6.16/net/ipv4/fib_trie.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/ipv4/fib_trie.c 2006-05-11 04:56:24.000000000 +0300
+@@ -314,11 +314,6 @@
+ kfree(container_of(head, struct leaf, rcu));
+ }
+
+-static inline void free_leaf(struct leaf *leaf)
+-{
+- call_rcu(&leaf->rcu, __leaf_free_rcu);
+-}
+-
+ static void __leaf_info_free_rcu(struct rcu_head *head)
+ {
+ kfree(container_of(head, struct leaf_info, rcu));
+@@ -357,7 +352,12 @@
+
+ static inline void tnode_free(struct tnode *tn)
+ {
+- call_rcu(&tn->rcu, __tnode_free_rcu);
++ if(IS_LEAF(tn)) {
++ struct leaf *l = (struct leaf *) tn;
++ call_rcu_bh(&l->rcu, __leaf_free_rcu);
++ }
++ else
++ call_rcu(&tn->rcu, __tnode_free_rcu);
+ }
+
+ static struct leaf *leaf_new(void)
+diff -Naur linux-2.6.16/net/ipv4/ip_output.c linux-2.6.16.16/net/ipv4/ip_output.c
+--- linux-2.6.16/net/ipv4/ip_output.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/ipv4/ip_output.c 2006-05-11 04:56:24.000000000 +0300
+@@ -86,8 +86,6 @@
+
+ int sysctl_ip_default_ttl = IPDEFTTL;
+
+-static int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*));
+-
+ /* Generate a checksum for an outgoing IP datagram. */
+ __inline__ void ip_send_check(struct iphdr *iph)
+ {
+@@ -421,7 +419,7 @@
+ * single device frame, and queue such a frame for sending.
+ */
+
+-static int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*))
++int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*))
+ {
+ struct iphdr *iph;
+ int raw = 0;
+@@ -673,6 +671,8 @@
+ return err;
+ }
+
++EXPORT_SYMBOL(ip_fragment);
++
+ int
+ ip_generic_getfrag(void *from, char *to, int offset, int len, int odd, struct sk_buff *skb)
+ {
+@@ -1249,11 +1249,7 @@
+ iph->tos = inet->tos;
+ iph->tot_len = htons(skb->len);
+ iph->frag_off = df;
+- if (!df) {
+- __ip_select_ident(iph, &rt->u.dst, 0);
+- } else {
+- iph->id = htons(inet->id++);
+- }
++ ip_select_ident(iph, &rt->u.dst, sk);
+ iph->ttl = ttl;
+ iph->protocol = sk->sk_protocol;
+ iph->saddr = rt->rt_src;
+diff -Naur linux-2.6.16/net/ipv4/netfilter/ip_conntrack_netlink.c linux-2.6.16.16/net/ipv4/netfilter/ip_conntrack_netlink.c
+--- linux-2.6.16/net/ipv4/netfilter/ip_conntrack_netlink.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/ipv4/netfilter/ip_conntrack_netlink.c 2006-05-11 04:56:24.000000000 +0300
+@@ -1619,7 +1619,7 @@
+ printk("ctnetlink: unregistering from nfnetlink.\n");
+
+ #ifdef CONFIG_IP_NF_CONNTRACK_EVENTS
+- ip_conntrack_unregister_notifier(&ctnl_notifier_exp);
++ ip_conntrack_expect_unregister_notifier(&ctnl_notifier_exp);
+ ip_conntrack_unregister_notifier(&ctnl_notifier);
+ #endif
+
+diff -Naur linux-2.6.16/net/ipv4/netfilter/ip_conntrack_proto_sctp.c linux-2.6.16.16/net/ipv4/netfilter/ip_conntrack_proto_sctp.c
+--- linux-2.6.16/net/ipv4/netfilter/ip_conntrack_proto_sctp.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/ipv4/netfilter/ip_conntrack_proto_sctp.c 2006-05-11 04:56:24.000000000 +0300
+@@ -235,12 +235,15 @@
+ flag = 1;
+ }
+
+- /* Cookie Ack/Echo chunks not the first OR
+- Init / Init Ack / Shutdown compl chunks not the only chunks */
+- if ((sch->type == SCTP_CID_COOKIE_ACK
++ /*
++ * Cookie Ack/Echo chunks not the first OR
++ * Init / Init Ack / Shutdown compl chunks not the only chunks
++ * OR zero-length.
++ */
++ if (((sch->type == SCTP_CID_COOKIE_ACK
+ || sch->type == SCTP_CID_COOKIE_ECHO
+ || flag)
+- && count !=0 ) {
++ && count !=0) || !sch->length) {
+ DEBUGP("Basic checks failed\n");
+ return 1;
+ }
+diff -Naur linux-2.6.16/net/ipv4/route.c linux-2.6.16.16/net/ipv4/route.c
+--- linux-2.6.16/net/ipv4/route.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/ipv4/route.c 2006-05-11 04:56:24.000000000 +0300
+@@ -2750,7 +2750,10 @@
+ /* Reserve room for dummy headers, this skb can pass
+ through good chunk of routing engine.
+ */
+- skb->mac.raw = skb->data;
++ skb->mac.raw = skb->nh.raw = skb->data;
++
++ /* Bugfix: need to give ip_route_input enough of an IP header to not gag. */
++ skb->nh.iph->protocol = IPPROTO_ICMP;
+ skb_reserve(skb, MAX_HEADER + sizeof(struct iphdr));
+
+ if (rta[RTA_SRC - 1])
+diff -Naur linux-2.6.16/net/ipv4/tcp_output.c linux-2.6.16.16/net/ipv4/tcp_output.c
+--- linux-2.6.16/net/ipv4/tcp_output.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/ipv4/tcp_output.c 2006-05-11 04:56:24.000000000 +0300
+@@ -537,7 +537,9 @@
+ buff = sk_stream_alloc_skb(sk, nsize, GFP_ATOMIC);
+ if (buff == NULL)
+ return -ENOMEM; /* We'll just try again later. */
+- sk_charge_skb(sk, buff);
++
++ buff->truesize = skb->len - len;
++ skb->truesize -= buff->truesize;
+
+ /* Correct the sequence numbers. */
+ TCP_SKB_CB(buff)->seq = TCP_SKB_CB(skb)->seq + len;
+diff -Naur linux-2.6.16/net/ipv6/exthdrs.c linux-2.6.16.16/net/ipv6/exthdrs.c
+--- linux-2.6.16/net/ipv6/exthdrs.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/ipv6/exthdrs.c 2006-05-11 04:56:24.000000000 +0300
+@@ -489,6 +489,18 @@
+ {
+ struct inet6_skb_parm *opt = IP6CB(skb);
+
++ /*
++ * skb->nh.raw is equal to skb->data, and
++ * skb->h.raw - skb->nh.raw is always equal to
++ * sizeof(struct ipv6hdr) by definition of
++ * hop-by-hop options.
++ */
++ if (!pskb_may_pull(skb, sizeof(struct ipv6hdr) + 8) ||
++ !pskb_may_pull(skb, sizeof(struct ipv6hdr) + ((skb->h.raw[1] + 1) << 3))) {
++ kfree_skb(skb);
++ return -1;
++ }
++
+ opt->hop = sizeof(struct ipv6hdr);
+ if (ip6_parse_tlv(tlvprochopopt_lst, skb)) {
+ skb->h.raw += (skb->h.raw[1]+1)<<3;
+diff -Naur linux-2.6.16/net/ipv6/xfrm6_policy.c linux-2.6.16.16/net/ipv6/xfrm6_policy.c
+--- linux-2.6.16/net/ipv6/xfrm6_policy.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/ipv6/xfrm6_policy.c 2006-05-11 04:56:24.000000000 +0300
+@@ -191,16 +191,18 @@
+ static inline void
+ _decode_session6(struct sk_buff *skb, struct flowi *fl)
+ {
+- u16 offset = sizeof(struct ipv6hdr);
++ u16 offset = skb->h.raw - skb->nh.raw;
+ struct ipv6hdr *hdr = skb->nh.ipv6h;
+- struct ipv6_opt_hdr *exthdr = (struct ipv6_opt_hdr*)(skb->nh.raw + offset);
+- u8 nexthdr = skb->nh.ipv6h->nexthdr;
++ struct ipv6_opt_hdr *exthdr;
++ u8 nexthdr = skb->nh.raw[IP6CB(skb)->nhoff];
+
+ memset(fl, 0, sizeof(struct flowi));
+ ipv6_addr_copy(&fl->fl6_dst, &hdr->daddr);
+ ipv6_addr_copy(&fl->fl6_src, &hdr->saddr);
+
+ while (pskb_may_pull(skb, skb->nh.raw + offset + 1 - skb->data)) {
++ exthdr = (struct ipv6_opt_hdr*)(skb->nh.raw + offset);
++
+ switch (nexthdr) {
+ case NEXTHDR_ROUTING:
+ case NEXTHDR_HOP:
+diff -Naur linux-2.6.16/net/netfilter/nf_conntrack_netlink.c linux-2.6.16.16/net/netfilter/nf_conntrack_netlink.c
+--- linux-2.6.16/net/netfilter/nf_conntrack_netlink.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/netfilter/nf_conntrack_netlink.c 2006-05-11 04:56:24.000000000 +0300
+@@ -1641,7 +1641,7 @@
+ printk("ctnetlink: unregistering from nfnetlink.\n");
+
+ #ifdef CONFIG_NF_CONNTRACK_EVENTS
+- nf_conntrack_unregister_notifier(&ctnl_notifier_exp);
++ nf_conntrack_expect_unregister_notifier(&ctnl_notifier_exp);
+ nf_conntrack_unregister_notifier(&ctnl_notifier);
+ #endif
+
+diff -Naur linux-2.6.16/net/netfilter/nf_conntrack_proto_sctp.c linux-2.6.16.16/net/netfilter/nf_conntrack_proto_sctp.c
+--- linux-2.6.16/net/netfilter/nf_conntrack_proto_sctp.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/netfilter/nf_conntrack_proto_sctp.c 2006-05-11 04:56:24.000000000 +0300
+@@ -240,12 +240,15 @@
+ flag = 1;
+ }
+
+- /* Cookie Ack/Echo chunks not the first OR
+- Init / Init Ack / Shutdown compl chunks not the only chunks */
+- if ((sch->type == SCTP_CID_COOKIE_ACK
++ /*
++ * Cookie Ack/Echo chunks not the first OR
++ * Init / Init Ack / Shutdown compl chunks not the only chunks
++ * OR zero-length.
++ */
++ if (((sch->type == SCTP_CID_COOKIE_ACK
+ || sch->type == SCTP_CID_COOKIE_ECHO
+ || flag)
+- && count !=0 ) {
++ && count !=0) || !sch->length) {
+ DEBUGP("Basic checks failed\n");
+ return 1;
+ }
+diff -Naur linux-2.6.16/net/sctp/inqueue.c linux-2.6.16.16/net/sctp/inqueue.c
+--- linux-2.6.16/net/sctp/inqueue.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/sctp/inqueue.c 2006-05-11 04:56:24.000000000 +0300
+@@ -149,6 +149,7 @@
+ /* This is the first chunk in the packet. */
+ chunk->singleton = 1;
+ ch = (sctp_chunkhdr_t *) chunk->skb->data;
++ chunk->data_accepted = 0;
+ }
+
+ chunk->chunk_hdr = ch;
+diff -Naur linux-2.6.16/net/sctp/sm_statefuns.c linux-2.6.16.16/net/sctp/sm_statefuns.c
+--- linux-2.6.16/net/sctp/sm_statefuns.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/sctp/sm_statefuns.c 2006-05-11 04:56:24.000000000 +0300
+@@ -636,8 +636,9 @@
+ */
+ chunk->subh.cookie_hdr =
+ (struct sctp_signed_cookie *)chunk->skb->data;
+- skb_pull(chunk->skb,
+- ntohs(chunk->chunk_hdr->length) - sizeof(sctp_chunkhdr_t));
++ if (!pskb_pull(chunk->skb, ntohs(chunk->chunk_hdr->length) -
++ sizeof(sctp_chunkhdr_t)))
++ goto nomem;
+
+ /* 5.1 D) Upon reception of the COOKIE ECHO chunk, Endpoint
+ * "Z" will reply with a COOKIE ACK chunk after building a TCB
+@@ -965,7 +966,8 @@
+ */
+ chunk->subh.hb_hdr = (sctp_heartbeathdr_t *) chunk->skb->data;
+ paylen = ntohs(chunk->chunk_hdr->length) - sizeof(sctp_chunkhdr_t);
+- skb_pull(chunk->skb, paylen);
++ if (!pskb_pull(chunk->skb, paylen))
++ goto nomem;
+
+ reply = sctp_make_heartbeat_ack(asoc, chunk,
+ chunk->subh.hb_hdr, paylen);
+@@ -1860,8 +1862,9 @@
+ * are in good shape.
+ */
+ chunk->subh.cookie_hdr = (struct sctp_signed_cookie *)chunk->skb->data;
+- skb_pull(chunk->skb, ntohs(chunk->chunk_hdr->length) -
+- sizeof(sctp_chunkhdr_t));
++ if (!pskb_pull(chunk->skb, ntohs(chunk->chunk_hdr->length) -
++ sizeof(sctp_chunkhdr_t)))
++ goto nomem;
+
+ /* In RFC 2960 5.2.4 3, if both Verification Tags in the State Cookie
+ * of a duplicate COOKIE ECHO match the Verification Tags of the
+@@ -5151,7 +5154,9 @@
+ int tmp;
+ __u32 tsn;
+ int account_value;
++ struct sctp_tsnmap *map = (struct sctp_tsnmap *)&asoc->peer.tsn_map;
+ struct sock *sk = asoc->base.sk;
++ int rcvbuf_over = 0;
+
+ data_hdr = chunk->subh.data_hdr = (sctp_datahdr_t *)chunk->skb->data;
+ skb_pull(chunk->skb, sizeof(sctp_datahdr_t));
+@@ -5162,10 +5167,16 @@
+ /* ASSERT: Now skb->data is really the user data. */
+
+ /*
+- * if we are established, and we have used up our receive
+- * buffer memory, drop the frame
++ * If we are established, and we have used up our receive buffer
++ * memory, think about droping the frame.
++ * Note that we have an opportunity to improve performance here.
++ * If we accept one chunk from an skbuff, we have to keep all the
++ * memory of that skbuff around until the chunk is read into user
++ * space. Therefore, once we accept 1 chunk we may as well accept all
++ * remaining chunks in the skbuff. The data_accepted flag helps us do
++ * that.
+ */
+- if (asoc->state == SCTP_STATE_ESTABLISHED) {
++ if ((asoc->state == SCTP_STATE_ESTABLISHED) && (!chunk->data_accepted)) {
+ /*
+ * If the receive buffer policy is 1, then each
+ * association can allocate up to sk_rcvbuf bytes
+@@ -5176,9 +5187,25 @@
+ account_value = atomic_read(&asoc->rmem_alloc);
+ else
+ account_value = atomic_read(&sk->sk_rmem_alloc);
+-
+- if (account_value > sk->sk_rcvbuf)
+- return SCTP_IERROR_IGNORE_TSN;
++ if (account_value > sk->sk_rcvbuf) {
++ /*
++ * We need to make forward progress, even when we are
++ * under memory pressure, so we always allow the
++ * next tsn after the ctsn ack point to be accepted.
++ * This lets us avoid deadlocks in which we have to
++ * drop frames that would otherwise let us drain the
++ * receive queue.
++ */
++ if ((sctp_tsnmap_get_ctsn(map) + 1) != tsn)
++ return SCTP_IERROR_IGNORE_TSN;
++
++ /*
++ * We're going to accept the frame but we should renege
++ * to make space for it. This will send us down that
++ * path later in this function.
++ */
++ rcvbuf_over = 1;
++ }
+ }
+
+ /* Process ECN based congestion.
+@@ -5226,6 +5253,7 @@
+ datalen -= sizeof(sctp_data_chunk_t);
+
+ deliver = SCTP_CMD_CHUNK_ULP;
++ chunk->data_accepted = 1;
+
+ /* Think about partial delivery. */
+ if ((datalen >= asoc->rwnd) && (!asoc->ulpq.pd_mode)) {
+@@ -5242,7 +5270,8 @@
+ * large spill over.
+ */
+ if (!asoc->rwnd || asoc->rwnd_over ||
+- (datalen > asoc->rwnd + asoc->frag_point)) {
++ (datalen > asoc->rwnd + asoc->frag_point) ||
++ rcvbuf_over) {
+
+ /* If this is the next TSN, consider reneging to make
+ * room. Note: Playing nice with a confused sender. A
+@@ -5250,8 +5279,8 @@
+ * space and in the future we may want to detect and
+ * do more drastic reneging.
+ */
+- if (sctp_tsnmap_has_gap(&asoc->peer.tsn_map) &&
+- (sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map) + 1) == tsn) {
++ if (sctp_tsnmap_has_gap(map) &&
++ (sctp_tsnmap_get_ctsn(map) + 1) == tsn) {
+ SCTP_DEBUG_PRINTK("Reneging for tsn:%u\n", tsn);
+ deliver = SCTP_CMD_RENEGE;
+ } else {
+diff -Naur linux-2.6.16/net/sctp/sm_statetable.c linux-2.6.16.16/net/sctp/sm_statetable.c
+--- linux-2.6.16/net/sctp/sm_statetable.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/sctp/sm_statetable.c 2006-05-11 04:56:24.000000000 +0300
+@@ -366,9 +366,9 @@
+ /* SCTP_STATE_EMPTY */ \
+ {.fn = sctp_sf_ootb, .name = "sctp_sf_ootb"}, \
+ /* SCTP_STATE_CLOSED */ \
+- {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \
++ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \
+ /* SCTP_STATE_COOKIE_WAIT */ \
+- {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \
++ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \
+ /* SCTP_STATE_COOKIE_ECHOED */ \
+ {.fn = sctp_sf_do_ecne, .name = "sctp_sf_do_ecne"}, \
+ /* SCTP_STATE_ESTABLISHED */ \
+@@ -380,7 +380,7 @@
+ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \
+ {.fn = sctp_sf_do_ecne, .name = "sctp_sf_do_ecne"}, \
+ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \
+- {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \
++ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \
+ } /* TYPE_SCTP_ECN_ECNE */
+
+ #define TYPE_SCTP_ECN_CWR { \
+@@ -401,7 +401,7 @@
+ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \
+ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \
+ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \
+- {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \
++ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \
+ } /* TYPE_SCTP_ECN_CWR */
+
+ #define TYPE_SCTP_SHUTDOWN_COMPLETE { \
+@@ -647,7 +647,7 @@
+ /* SCTP_STATE_EMPTY */ \
+ {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \
+ /* SCTP_STATE_CLOSED */ \
+- {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \
++ {.fn = sctp_sf_error_closed, .name = "sctp_sf_error_closed"}, \
+ /* SCTP_STATE_COOKIE_WAIT */ \
+ {.fn = sctp_sf_do_prm_requestheartbeat, \
+ .name = "sctp_sf_do_prm_requestheartbeat"}, \
+diff -Naur linux-2.6.16/net/sctp/ulpqueue.c linux-2.6.16.16/net/sctp/ulpqueue.c
+--- linux-2.6.16/net/sctp/ulpqueue.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/net/sctp/ulpqueue.c 2006-05-11 04:56:24.000000000 +0300
+@@ -279,6 +279,7 @@
+ static struct sctp_ulpevent *sctp_make_reassembled_event(struct sk_buff_head *queue, struct sk_buff *f_frag, struct sk_buff *l_frag)
+ {
+ struct sk_buff *pos;
++ struct sk_buff *new = NULL;
+ struct sctp_ulpevent *event;
+ struct sk_buff *pnext, *last;
+ struct sk_buff *list = skb_shinfo(f_frag)->frag_list;
+@@ -297,11 +298,33 @@
+ */
+ if (last)
+ last->next = pos;
+- else
+- skb_shinfo(f_frag)->frag_list = pos;
++ else {
++ if (skb_cloned(f_frag)) {
++ /* This is a cloned skb, we can't just modify
++ * the frag_list. We need a new skb to do that.
++ * Instead of calling skb_unshare(), we'll do it
++ * ourselves since we need to delay the free.
++ */
++ new = skb_copy(f_frag, GFP_ATOMIC);
++ if (!new)
++ return NULL; /* try again later */
++
++ new->sk = f_frag->sk;
++
++ skb_shinfo(new)->frag_list = pos;
++ } else
++ skb_shinfo(f_frag)->frag_list = pos;
++ }
+
+ /* Remove the first fragment from the reassembly queue. */
+ __skb_unlink(f_frag, queue);
++
++ /* if we did unshare, then free the old skb and re-assign */
++ if (new) {
++ kfree_skb(f_frag);
++ f_frag = new;
++ }
++
+ while (pos) {
+
+ pnext = pos->next;
+diff -Naur linux-2.6.16/security/keys/key.c linux-2.6.16.16/security/keys/key.c
+--- linux-2.6.16/security/keys/key.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/security/keys/key.c 2006-05-11 04:56:24.000000000 +0300
+@@ -785,6 +785,10 @@
+
+ key_check(keyring);
+
++ key_ref = ERR_PTR(-ENOTDIR);
++ if (keyring->type != &key_type_keyring)
++ goto error_2;
++
+ down_write(&keyring->sem);
+
+ /* if we're going to allocate a new key, we're going to have
+diff -Naur linux-2.6.16/security/keys/keyring.c linux-2.6.16.16/security/keys/keyring.c
+--- linux-2.6.16/security/keys/keyring.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/security/keys/keyring.c 2006-05-11 04:56:24.000000000 +0300
+@@ -437,6 +437,7 @@
+ /*
+ * search the given keyring only (no recursion)
+ * - keyring must be locked by caller
++ * - caller must guarantee that the keyring is a keyring
+ */
+ key_ref_t __keyring_search_one(key_ref_t keyring_ref,
+ const struct key_type *ktype,
+diff -Naur linux-2.6.16/security/selinux/ss/mls.c linux-2.6.16.16/security/selinux/ss/mls.c
+--- linux-2.6.16/security/selinux/ss/mls.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/security/selinux/ss/mls.c 2006-05-11 04:56:24.000000000 +0300
+@@ -264,7 +264,7 @@
+
+ if (!selinux_mls_enabled) {
+ if (def_sid != SECSID_NULL && oldc)
+- *scontext += strlen(*scontext);
++ *scontext += strlen(*scontext)+1;
+ return 0;
+ }
+
+diff -Naur linux-2.6.16/sound/isa/opti9xx/opti92x-ad1848.c linux-2.6.16.16/sound/isa/opti9xx/opti92x-ad1848.c
+--- linux-2.6.16/sound/isa/opti9xx/opti92x-ad1848.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/sound/isa/opti9xx/opti92x-ad1848.c 2006-05-11 04:56:24.000000000 +0300
+@@ -2088,9 +2088,11 @@
+ int error;
+ struct platform_device *device;
+
++#ifdef CONFIG_PNP
+ pnp_register_card_driver(&opti9xx_pnpc_driver);
+ if (snd_opti9xx_pnp_is_probed)
+ return 0;
++#endif
+ if (! is_isapnp_selected()) {
+ error = platform_driver_register(&snd_opti9xx_driver);
+ if (error < 0)
+@@ -2102,7 +2104,9 @@
+ }
+ platform_driver_unregister(&snd_opti9xx_driver);
+ }
++#ifdef CONFIG_PNP
+ pnp_unregister_card_driver(&opti9xx_pnpc_driver);
++#endif
+ #ifdef MODULE
+ printk(KERN_ERR "no OPTi " CHIP_NAME " soundcard found\n");
+ #endif
+@@ -2115,7 +2119,9 @@
+ platform_device_unregister(snd_opti9xx_platform_device);
+ platform_driver_unregister(&snd_opti9xx_driver);
+ }
++#ifdef CONFIG_PNP
+ pnp_unregister_card_driver(&opti9xx_pnpc_driver);
++#endif
+ }
+
+ module_init(alsa_card_opti9xx_init)
+diff -Naur linux-2.6.16/sound/oss/dmasound/tas_common.c linux-2.6.16.16/sound/oss/dmasound/tas_common.c
+--- linux-2.6.16/sound/oss/dmasound/tas_common.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/sound/oss/dmasound/tas_common.c 2006-05-11 04:56:24.000000000 +0300
+@@ -195,8 +195,8 @@
+
+ printk(KERN_INFO "tas driver [%s])\n", driver_name);
+
+-#ifndef CONFIG_I2C_KEYWEST
+- request_module("i2c-keywest");
++#ifndef CONFIG_I2C_POWERMAC
++ request_module("i2c-powermac");
+ #endif
+ tas_node = find_devices("deq");
+ if (tas_node == NULL)
+diff -Naur linux-2.6.16/sound/pci/hda/patch_realtek.c linux-2.6.16.16/sound/pci/hda/patch_realtek.c
+--- linux-2.6.16/sound/pci/hda/patch_realtek.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/sound/pci/hda/patch_realtek.c 2006-05-11 04:56:24.000000000 +0300
+@@ -2948,6 +2948,8 @@
+ { .modelname = "basic", .config = ALC260_BASIC },
+ { .pci_subvendor = 0x104d, .pci_subdevice = 0x81bb,
+ .config = ALC260_BASIC }, /* Sony VAIO */
++ { .pci_subvendor = 0x152d, .pci_subdevice = 0x0729,
++ .config = ALC260_BASIC }, /* CTL Travel Master U553W */
+ { .modelname = "hp", .config = ALC260_HP },
+ { .pci_subvendor = 0x103c, .pci_subdevice = 0x3010, .config = ALC260_HP },
+ { .pci_subvendor = 0x103c, .pci_subdevice = 0x3011, .config = ALC260_HP },
+diff -Naur linux-2.6.16/sound/ppc/daca.c linux-2.6.16.16/sound/ppc/daca.c
+--- linux-2.6.16/sound/ppc/daca.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/sound/ppc/daca.c 2006-05-11 04:56:24.000000000 +0300
+@@ -256,7 +256,7 @@
+
+ #ifdef CONFIG_KMOD
+ if (current->fs->root)
+- request_module("i2c-keywest");
++ request_module("i2c-powermac");
+ #endif /* CONFIG_KMOD */
+
+ mix = kmalloc(sizeof(*mix), GFP_KERNEL);
+diff -Naur linux-2.6.16/sound/ppc/tumbler.c linux-2.6.16.16/sound/ppc/tumbler.c
+--- linux-2.6.16/sound/ppc/tumbler.c 2006-03-20 07:53:29.000000000 +0200
++++ linux-2.6.16.16/sound/ppc/tumbler.c 2006-05-11 04:56:24.000000000 +0300
+@@ -1314,7 +1314,7 @@
+
+ #ifdef CONFIG_KMOD
+ if (current->fs->root)
+- request_module("i2c-keywest");
++ request_module("i2c-powermac");
+ #endif /* CONFIG_KMOD */
+
+ mix = kmalloc(sizeof(*mix), GFP_KERNEL);
diff --git a/packages/linux/linux-tornado-omap2/tornado-20070320.patch b/packages/linux/linux-tornado-omap2/tornado-20070320.patch
new file mode 100644
index 0000000000..30a7752415
--- /dev/null
+++ b/packages/linux/linux-tornado-omap2/tornado-20070320.patch
@@ -0,0 +1,6081 @@
+Index: linux-2.6.16/arch/arm/boot/compressed/misc.c
+===================================================================
+--- linux-2.6.16.orig/arch/arm/boot/compressed/misc.c 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/arch/arm/boot/compressed/misc.c 2007-04-12 10:36:19.000000000 +0200
+@@ -22,6 +22,19 @@
+
+ #include <asm/arch/uncompress.h>
+
++#include <linux/autoconf.h>
++
++#ifdef CONFIG_EFB_DEBUG
++# define SCREEN_W 240
++# define SCREEN_H 320
++#endif
++
++
++static unsigned short *vram = 0;
++static unsigned int current_pix = 0;
++static unsigned int y = 0;
++
++
+ #ifdef STANDALONE_DEBUG
+ #define putstr printf
+ #endif
+@@ -260,6 +273,38 @@
+ return inbuf[0];
+ }
+
++#ifdef CONFIG_EFB_DEBUG
++/*
++ * put a new pixel. on the frame buffer
++ */
++static void putpix(void)
++{
++ if (current_pix == SCREEN_W) {
++ current_pix = 0;
++ }
++ vram[current_pix] = 0xFFFF;
++ ++current_pix;
++ vram[current_pix] = 0x0;
++ ++current_pix;
++}
++
++/*
++ * clear the whole screen
++ */
++static void clear_screen(void)
++{
++ unsigned int i;
++
++ vram = (unsigned short *)0x20001020;
++ current_pix = 0;
++
++ for (i = 0; i < SCREEN_W * SCREEN_H; ++i) {
++ vram[i] = 0;
++ }
++}
++#endif
++
++
+ /* ===========================================================================
+ * Write the output window window[0..outcnt-1] and update crc and bytes_out.
+ * (Used for the decompressed data only.)
+@@ -280,7 +325,8 @@
+ bytes_out += (ulg)outcnt;
+ output_ptr += (ulg)outcnt;
+ outcnt = 0;
+- putstr(".");
++/* putstr("."); */
++ putpix();
+ }
+
+ #ifndef arch_error
+@@ -291,7 +337,7 @@
+ {
+ arch_error(x);
+
+- putstr("\n\n");
++/* putstr("\n\n"); */
+ putstr(x);
+ putstr("\n\n -- System halted");
+
+@@ -309,12 +355,16 @@
+ free_mem_ptr_end = free_mem_ptr_end_p;
+ __machine_arch_type = arch_id;
+
++#ifdef CONFIG_EFB_DEBUG
++ clear_screen();
++#endif
++
+ arch_decomp_setup();
+
+ makecrc();
+- putstr("Uncompressing Linux...");
++/* putstr("Uncompressing Linux..."); */
+ gunzip();
+- putstr(" done, booting the kernel.\n");
++/* putstr(" done, booting the kernel.\n"); */
+ return output_ptr;
+ }
+ #else
+Index: linux-2.6.16/arch/arm/configs/tornado_ccboot_defconfig
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/arch/arm/configs/tornado_ccboot_defconfig 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,797 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.16.2-omap1
++# Tue Aug 1 01:17:51 2006
++#
++CONFIG_ARM=y
++CONFIG_MMU=y
++CONFIG_RWSEM_GENERIC_SPINLOCK=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
++
++#
++# 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 is not set
++# CONFIG_POSIX_MQUEUE is not set
++# CONFIG_BSD_PROCESS_ACCT is not set
++# CONFIG_SYSCTL is not set
++# CONFIG_AUDIT is not set
++# CONFIG_IKCONFIG is not set
++CONFIG_INITRAMFS_SOURCE=""
++CONFIG_UID16=y
++CONFIG_CC_OPTIMIZE_FOR_SIZE=y
++CONFIG_EMBEDDED=y
++# CONFIG_KALLSYMS is not set
++CONFIG_HOTPLUG=y
++# CONFIG_PRINTK is not set
++# CONFIG_BUG is not set
++# CONFIG_ELF_CORE is not set
++# CONFIG_BASE_FULL is not set
++# CONFIG_FUTEX is not set
++# CONFIG_EPOLL is not set
++# CONFIG_SHMEM is not set
++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=y
++CONFIG_BASE_SMALL=1
++# CONFIG_SLOB is not set
++
++#
++# Loadable module support
++#
++# CONFIG_MODULES is not set
++
++#
++# Block layer
++#
++
++#
++# 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_CLPS7500 is not set
++# CONFIG_ARCH_CLPS711X is not set
++# CONFIG_ARCH_CO285 is not set
++# CONFIG_ARCH_EBSA110 is not set
++# CONFIG_ARCH_FOOTBRIDGE is not set
++# CONFIG_ARCH_INTEGRATOR is not set
++# CONFIG_ARCH_IOP3XX is not set
++# CONFIG_ARCH_IXP4XX is not set
++# CONFIG_ARCH_IXP2000 is not set
++# CONFIG_ARCH_L7200 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=y
++# CONFIG_ARCH_VERSATILE is not set
++# CONFIG_ARCH_REALVIEW is not set
++# CONFIG_ARCH_IMX is not set
++# CONFIG_ARCH_H720X is not set
++# CONFIG_ARCH_AAEC2000 is not set
++# CONFIG_ARCH_AT91RM9200 is not set
++
++#
++# TI OMAP Implementations
++#
++CONFIG_ARCH_OMAP_OTG=y
++CONFIG_ARCH_OMAP1=y
++# CONFIG_ARCH_OMAP2 is not set
++
++#
++# OMAP Feature Selections
++#
++# CONFIG_OMAP_RESET_CLOCKS is not set
++# CONFIG_OMAP_BOOT_TAG is not set
++# CONFIG_OMAP_MUX is not set
++CONFIG_OMAP_MPU_TIMER=y
++# CONFIG_OMAP_32K_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
++
++#
++# OMAP Core Type
++#
++CONFIG_ARCH_OMAP730=y
++# CONFIG_ARCH_OMAP15XX is not set
++# CONFIG_ARCH_OMAP16XX is not set
++
++#
++# OMAP Board Type
++#
++# CONFIG_MACH_OMAP_PERSEUS2 is not set
++
++#
++# OMAP CPU Speed
++#
++# CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER is not set
++CONFIG_OMAP_ARM_195MHZ=y
++# CONFIG_OMAP_ARM_182MHZ is not set
++# 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
++CONFIG_MACH_TORNADO=y
++CONFIG_EFB_DEBUG=y
++
++#
++# Processor Type
++#
++CONFIG_CPU_32=y
++CONFIG_CPU_ARM926T=y
++CONFIG_CPU_32v5=y
++CONFIG_CPU_ABRT_EV5TJ=y
++CONFIG_CPU_CACHE_VIVT=y
++CONFIG_CPU_COPY_V4WB=y
++CONFIG_CPU_TLB_V4WBI=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_KEXEC=y
++
++#
++# Bus support
++#
++
++#
++# PCCARD (PCMCIA/CardBus) support
++#
++# CONFIG_PCCARD is not set
++
++#
++# Kernel Features
++#
++CONFIG_PREEMPT=y
++# CONFIG_NO_IDLE_HZ is not set
++# 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_LEDS 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
++
++#
++# 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
++# 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 is not set
++CONFIG_UNIX=y
++CONFIG_XFRM=y
++# CONFIG_XFRM_USER is not set
++CONFIG_NET_KEY=y
++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 is not set
++# CONFIG_INET_ESP is not set
++# CONFIG_INET_IPCOMP is not set
++# CONFIG_INET_TUNNEL is not set
++CONFIG_INET_DIAG=y
++CONFIG_INET_TCP_DIAG=y
++# 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
++# CONFIG_DEBUG_DRIVER is not set
++
++#
++# 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
++#
++
++#
++# Block devices
++#
++# CONFIG_BLK_DEV_COW_COMMON is not set
++# CONFIG_BLK_DEV_LOOP is not set
++# CONFIG_BLK_DEV_NBD is not set
++CONFIG_BLK_DEV_RAM=y
++CONFIG_BLK_DEV_RAM_COUNT=1
++CONFIG_BLK_DEV_RAM_SIZE=4096
++CONFIG_BLK_DEV_INITRD=y
++# CONFIG_CDROM_PKTCDVD is not set
++# CONFIG_ATA_OVER_ETH is not set
++
++#
++# SCSI device support
++#
++# CONFIG_RAID_ATTRS is not set
++# CONFIG_SCSI is not set
++
++#
++# Multi-device support (RAID and LVM)
++#
++# CONFIG_MD is not set
++
++#
++# Fusion MPT device support
++#
++# CONFIG_FUSION is not set
++
++#
++# IEEE 1394 (FireWire) support
++#
++
++#
++# I2O device support
++#
++
++#
++# Network device support
++#
++# CONFIG_NETDEVICES is not set
++# CONFIG_DUMMY is not set
++# CONFIG_BONDING is not set
++# CONFIG_EQUALIZER is not set
++# CONFIG_TUN is not set
++
++#
++# PHY device support
++#
++
++#
++# Ethernet (10 or 100Mbit)
++#
++# CONFIG_NET_ETHERNET is not set
++
++#
++# Ethernet (1000 Mbit)
++#
++
++#
++# Ethernet (10000 Mbit)
++#
++# CONFIG_PPP is not set
++# CONFIG_SLIP 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
++
++#
++# Input device support
++#
++CONFIG_INPUT=y
++
++#
++# 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 is not set
++# 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_OMAP is not set
++CONFIG_TORNADO_KEYPAD=y
++# CONFIG_INPUT_MOUSE 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 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 is not set
++
++#
++# Non-8250 serial port support
++#
++CONFIG_UNIX98_PTYS=y
++CONFIG_LEGACY_PTYS=y
++CONFIG_LEGACY_PTY_COUNT=256
++
++#
++# 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_OMAP730_WATCHDOG=y
++CONFIG_TORNADO_VIBRATOR=y
++CONFIG_TORNADO_LEDS=y
++# CONFIG_NVRAM is not set
++# CONFIG_RTC is not set
++# CONFIG_OMAP_RTC is not set
++# CONFIG_DTLK is not set
++# CONFIG_R3964 is not set
++
++#
++# Ftape, the floppy tape device driver
++#
++# CONFIG_RAW_DRIVER 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 is not set
++# CONFIG_HWMON_VID is not set
++
++#
++# Misc devices
++#
++
++#
++# 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_S1D13XXX is not set
++# CONFIG_FB_OMAP is not set
++CONFIG_FB_VSFB=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_ROTATION=y
++CONFIG_FONTS=y
++# CONFIG_FONT_8x8 is not set
++# CONFIG_FONT_8x16 is not set
++CONFIG_FONT_6x11=y
++# 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 is not set
++CONFIG_BACKLIGHT_LCD_SUPPORT=y
++CONFIG_BACKLIGHT_CLASS_DEVICE=y
++CONFIG_BACKLIGHT_DEVICE=y
++# CONFIG_LCD_CLASS_DEVICE is not set
++CONFIG_BACKLIGHT_TORNADO=y
++
++#
++# Sound
++#
++# CONFIG_SOUND is not set
++
++#
++# USB support
++#
++CONFIG_USB_ARCH_HAS_HCD=y
++CONFIG_USB_ARCH_HAS_OHCI=y
++# CONFIG_USB is not set
++
++#
++# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
++#
++
++#
++# USB Gadget Support
++#
++CONFIG_USB_GADGET=y
++CONFIG_USB_GADGET_DEBUG_FILES=y
++CONFIG_USB_GADGET_SELECTED=y
++# CONFIG_USB_GADGET_NET2280 is not set
++# CONFIG_USB_GADGET_PXA2XX is not set
++# CONFIG_USB_GADGET_GOKU is not set
++# CONFIG_USB_GADGET_LH7A40X is not set
++CONFIG_USB_GADGET_OMAP=y
++CONFIG_USB_OMAP=y
++# CONFIG_USB_GADGET_DUMMY_HCD is not set
++# CONFIG_USB_GADGET_DUALSPEED is not set
++# CONFIG_USB_ZERO is not set
++CONFIG_USB_ETH=y
++# CONFIG_USB_ETH_RNDIS is not set
++# CONFIG_USB_GADGETFS is not set
++# CONFIG_USB_FILE_STORAGE is not set
++# CONFIG_USB_G_SERIAL is not set
++
++#
++# MMC/SD Card support
++#
++CONFIG_MMC=y
++# CONFIG_MMC_DEBUG is not set
++CONFIG_MMC_BLOCK=y
++# CONFIG_MMC_BLOCK_BROKEN_RFD is not set
++# CONFIG_MMC_BULKTRANSFER is not set
++CONFIG_MMC_OMAP=y
++
++#
++# Synchronous Serial Interfaces (SSI)
++#
++# CONFIG_OMAP_UWIRE is not set
++# CONFIG_OMAP_TSC2101 is not set
++
++#
++# 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_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 is not set
++CONFIG_ROMFS_FS=y
++# CONFIG_INOTIFY is not set
++# CONFIG_QUOTA is not set
++CONFIG_DNOTIFY=y
++# CONFIG_AUTOFS_FS is not set
++# CONFIG_AUTOFS4_FS is not set
++# 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_MSDOS_FS is not set
++# CONFIG_VFAT_FS is not set
++# CONFIG_NTFS_FS is not set
++
++#
++# Pseudo filesystems
++#
++CONFIG_PROC_FS=y
++CONFIG_SYSFS=y
++# CONFIG_TMPFS 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 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_LOCKD=y
++CONFIG_LOCKD_V4=y
++CONFIG_NFS_COMMON=y
++CONFIG_SUNRPC=y
++# 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
++# CONFIG_9P_FS is not set
++
++#
++# Partition Types
++#
++# CONFIG_PARTITION_ADVANCED is not set
++CONFIG_MSDOS_PARTITION=y
++
++#
++# Native Language Support
++#
++# CONFIG_NLS is not set
++
++#
++# Profiling support
++#
++# CONFIG_PROFILING is not set
++
++#
++# Kernel hacking
++#
++# CONFIG_PRINTK_TIME is not set
++# CONFIG_MAGIC_SYSRQ is not set
++CONFIG_DEBUG_KERNEL=y
++CONFIG_LOG_BUF_SHIFT=14
++# CONFIG_DETECT_SOFTLOCKUP is not set
++# CONFIG_SCHEDSTATS is not set
++# CONFIG_DEBUG_SLAB is not set
++CONFIG_DEBUG_PREEMPT=y
++# CONFIG_DEBUG_MUTEXES is not set
++# CONFIG_DEBUG_SPINLOCK is not set
++# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
++# CONFIG_DEBUG_KOBJECT is not set
++# CONFIG_DEBUG_INFO is not set
++# CONFIG_DEBUG_FS is not set
++# CONFIG_DEBUG_VM is not set
++CONFIG_FRAME_POINTER=y
++# CONFIG_FORCED_INLINING is not set
++# CONFIG_RCU_TORTURE_TEST is not set
++# CONFIG_DEBUG_USER is not set
++# CONFIG_DEBUG_WAITQ is not set
++CONFIG_DEBUG_ERRORS=y
++# CONFIG_DEBUG_LL is not set
++
++#
++# 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 is not set
+Index: linux-2.6.16/arch/arm/configs/tornado_defconfig
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/arch/arm/configs/tornado_defconfig 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,849 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.16.9-omap1
++# Tue Mar 20 11:07:50 2007
++#
++CONFIG_ARM=y
++CONFIG_MMU=y
++CONFIG_RWSEM_GENERIC_SPINLOCK=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
++
++#
++# 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 is not set
++CONFIG_POSIX_MQUEUE=y
++# CONFIG_BSD_PROCESS_ACCT is not set
++CONFIG_SYSCTL=y
++# CONFIG_AUDIT is not set
++# CONFIG_IKCONFIG is not set
++CONFIG_INITRAMFS_SOURCE=""
++CONFIG_UID16=y
++CONFIG_CC_OPTIMIZE_FOR_SIZE=y
++CONFIG_EMBEDDED=y
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_ALL is not set
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_HOTPLUG=y
++CONFIG_PRINTK=y
++CONFIG_BUG=y
++# CONFIG_ELF_CORE is not set
++# CONFIG_BASE_FULL is not set
++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=y
++CONFIG_BASE_SMALL=1
++# 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 is not set
++
++#
++# Block layer
++#
++
++#
++# 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_CLPS7500 is not set
++# CONFIG_ARCH_CLPS711X is not set
++# CONFIG_ARCH_CO285 is not set
++# CONFIG_ARCH_EBSA110 is not set
++# CONFIG_ARCH_FOOTBRIDGE is not set
++# CONFIG_ARCH_INTEGRATOR is not set
++# CONFIG_ARCH_IOP3XX is not set
++# CONFIG_ARCH_IXP4XX is not set
++# CONFIG_ARCH_IXP2000 is not set
++# CONFIG_ARCH_L7200 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=y
++# CONFIG_ARCH_VERSATILE is not set
++# CONFIG_ARCH_REALVIEW is not set
++# CONFIG_ARCH_IMX is not set
++# CONFIG_ARCH_H720X is not set
++# CONFIG_ARCH_AAEC2000 is not set
++# CONFIG_ARCH_AT91RM9200 is not set
++
++#
++# TI OMAP Implementations
++#
++CONFIG_ARCH_OMAP_OTG=y
++CONFIG_ARCH_OMAP1=y
++# CONFIG_ARCH_OMAP2 is not set
++
++#
++# OMAP Feature Selections
++#
++# CONFIG_OMAP_RESET_CLOCKS is not set
++# CONFIG_OMAP_BOOT_TAG is not set
++# CONFIG_OMAP_MUX is not set
++CONFIG_OMAP_MPU_TIMER=y
++# CONFIG_OMAP_32K_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
++
++#
++# OMAP Core Type
++#
++CONFIG_ARCH_OMAP730=y
++# CONFIG_ARCH_OMAP15XX is not set
++# CONFIG_ARCH_OMAP16XX is not set
++
++#
++# OMAP Board Type
++#
++# CONFIG_MACH_OMAP_PERSEUS2 is not set
++
++#
++# OMAP CPU Speed
++#
++# CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER is not set
++CONFIG_OMAP_ARM_195MHZ=y
++# CONFIG_OMAP_ARM_182MHZ is not set
++# 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
++CONFIG_MACH_TORNADO=y
++CONFIG_EFB_DEBUG=y
++
++#
++# Processor Type
++#
++CONFIG_CPU_32=y
++CONFIG_CPU_ARM926T=y
++CONFIG_CPU_32v5=y
++CONFIG_CPU_ABRT_EV5TJ=y
++CONFIG_CPU_CACHE_VIVT=y
++CONFIG_CPU_COPY_V4WB=y
++CONFIG_CPU_TLB_V4WBI=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_KEXEC=y
++
++#
++# Bus support
++#
++
++#
++# PCCARD (PCMCIA/CardBus) support
++#
++# CONFIG_PCCARD is not set
++
++#
++# Kernel Features
++#
++CONFIG_PREEMPT=y
++# CONFIG_NO_IDLE_HZ is not set
++# 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_LEDS 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
++
++#
++# 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
++# CONFIG_ARTHUR is not set
++
++#
++# Power management options
++#
++CONFIG_PM=y
++CONFIG_PM_LEGACY=y
++# CONFIG_PM_DEBUG is not set
++CONFIG_APM=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_XFRM=y
++# CONFIG_XFRM_USER is not set
++CONFIG_NET_KEY=y
++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 is not set
++# CONFIG_INET_ESP is not set
++# CONFIG_INET_IPCOMP is not set
++# CONFIG_INET_TUNNEL is not set
++CONFIG_INET_DIAG=y
++CONFIG_INET_TCP_DIAG=y
++# 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
++# CONFIG_DEBUG_DRIVER is not set
++
++#
++# 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
++#
++
++#
++# Block devices
++#
++# CONFIG_BLK_DEV_COW_COMMON is not set
++# CONFIG_BLK_DEV_LOOP is not set
++# CONFIG_BLK_DEV_NBD is not set
++CONFIG_BLK_DEV_RAM=y
++CONFIG_BLK_DEV_RAM_COUNT=1
++CONFIG_BLK_DEV_RAM_SIZE=4096
++CONFIG_BLK_DEV_INITRD=y
++# CONFIG_CDROM_PKTCDVD is not set
++# CONFIG_ATA_OVER_ETH is not set
++
++#
++# SCSI device support
++#
++# CONFIG_RAID_ATTRS is not set
++# CONFIG_SCSI is not set
++
++#
++# Multi-device support (RAID and LVM)
++#
++# CONFIG_MD is not set
++
++#
++# Fusion MPT device support
++#
++# CONFIG_FUSION is not set
++
++#
++# IEEE 1394 (FireWire) support
++#
++
++#
++# I2O device support
++#
++
++#
++# Network device support
++#
++# CONFIG_NETDEVICES is not set
++# CONFIG_DUMMY is not set
++# CONFIG_BONDING is not set
++# CONFIG_EQUALIZER is not set
++# CONFIG_TUN is not set
++
++#
++# PHY device support
++#
++
++#
++# Ethernet (10 or 100Mbit)
++#
++# CONFIG_NET_ETHERNET is not set
++
++#
++# Ethernet (1000 Mbit)
++#
++
++#
++# Ethernet (10000 Mbit)
++#
++# CONFIG_PPP is not set
++# CONFIG_SLIP 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
++
++#
++# Input device support
++#
++CONFIG_INPUT=y
++
++#
++# 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 is not set
++# 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_OMAP is not set
++CONFIG_TORNADO_KEYPAD=y
++# CONFIG_INPUT_MOUSE 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 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 is not set
++
++#
++# Non-8250 serial port support
++#
++CONFIG_UNIX98_PTYS=y
++CONFIG_LEGACY_PTYS=y
++CONFIG_LEGACY_PTY_COUNT=256
++
++#
++# 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_OMAP730_WATCHDOG=y
++CONFIG_TORNADO_VIBRATOR=y
++CONFIG_TORNADO_LEDS=y
++# CONFIG_NVRAM is not set
++# CONFIG_RTC is not set
++# CONFIG_OMAP_RTC is not set
++# CONFIG_DTLK is not set
++# CONFIG_R3964 is not set
++
++#
++# Ftape, the floppy tape device driver
++#
++# CONFIG_RAW_DRIVER 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 is not set
++# CONFIG_HWMON_VID is not set
++
++#
++# Misc devices
++#
++
++#
++# 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_S1D13XXX is not set
++# CONFIG_FB_OMAP is not set
++CONFIG_FB_VSFB=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_ROTATION=y
++CONFIG_FONTS=y
++# CONFIG_FONT_8x8 is not set
++# CONFIG_FONT_8x16 is not set
++CONFIG_FONT_6x11=y
++# 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 is not set
++CONFIG_BACKLIGHT_LCD_SUPPORT=y
++CONFIG_BACKLIGHT_CLASS_DEVICE=y
++CONFIG_BACKLIGHT_DEVICE=y
++# CONFIG_LCD_CLASS_DEVICE is not set
++CONFIG_BACKLIGHT_TORNADO=y
++
++#
++# Sound
++#
++CONFIG_SOUND=y
++
++#
++# Advanced Linux Sound Architecture
++#
++CONFIG_SND=y
++CONFIG_SND_TIMER=y
++CONFIG_SND_PCM=y
++CONFIG_SND_SEQUENCER=y
++# CONFIG_SND_SEQ_DUMMY is not set
++CONFIG_SND_OSSEMUL=y
++CONFIG_SND_MIXER_OSS=y
++CONFIG_SND_PCM_OSS=y
++CONFIG_SND_SEQUENCER_OSS=y
++# CONFIG_SND_DYNAMIC_MINORS is not set
++CONFIG_SND_SUPPORT_OLD_API=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
++
++#
++# ALSA ARM devices
++#
++# CONFIG_SND_OMAP_AIC23 is not set
++# CONFIG_SND_OMAP_TSC2101 is not set
++
++#
++# 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 is not set
++
++#
++# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
++#
++
++#
++# USB Gadget Support
++#
++CONFIG_USB_GADGET=y
++CONFIG_USB_GADGET_DEBUG_FILES=y
++CONFIG_USB_GADGET_SELECTED=y
++# CONFIG_USB_GADGET_NET2280 is not set
++# CONFIG_USB_GADGET_PXA2XX is not set
++# CONFIG_USB_GADGET_GOKU is not set
++# CONFIG_USB_GADGET_LH7A40X is not set
++CONFIG_USB_GADGET_OMAP=y
++CONFIG_USB_OMAP=y
++# CONFIG_USB_GADGET_DUMMY_HCD is not set
++# CONFIG_USB_GADGET_DUALSPEED is not set
++# CONFIG_USB_ZERO is not set
++CONFIG_USB_ETH=y
++# CONFIG_USB_ETH_RNDIS is not set
++# CONFIG_USB_GADGETFS is not set
++# CONFIG_USB_FILE_STORAGE is not set
++# CONFIG_USB_G_SERIAL is not set
++
++#
++# MMC/SD Card support
++#
++CONFIG_MMC=y
++# CONFIG_MMC_DEBUG is not set
++CONFIG_MMC_BLOCK=y
++# CONFIG_MMC_BLOCK_BROKEN_RFD is not set
++# CONFIG_MMC_BULKTRANSFER is not set
++CONFIG_MMC_OMAP=y
++
++#
++# Synchronous Serial Interfaces (SSI)
++#
++# CONFIG_OMAP_UWIRE is not set
++# CONFIG_OMAP_TSC2101 is not set
++
++#
++# 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_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 is not set
++CONFIG_ROMFS_FS=y
++# CONFIG_INOTIFY is not set
++# CONFIG_QUOTA is not set
++CONFIG_DNOTIFY=y
++# CONFIG_AUTOFS_FS is not set
++# CONFIG_AUTOFS4_FS is not set
++# 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_MSDOS_FS is not set
++# CONFIG_VFAT_FS is not set
++# CONFIG_NTFS_FS is not set
++
++#
++# Pseudo filesystems
++#
++CONFIG_PROC_FS=y
++CONFIG_SYSFS=y
++# CONFIG_TMPFS 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 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_LOCKD=y
++CONFIG_LOCKD_V4=y
++CONFIG_NFS_COMMON=y
++CONFIG_SUNRPC=y
++# 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
++# CONFIG_9P_FS is not set
++
++#
++# Partition Types
++#
++# CONFIG_PARTITION_ADVANCED is not set
++CONFIG_MSDOS_PARTITION=y
++
++#
++# Native Language Support
++#
++# CONFIG_NLS is not set
++
++#
++# Profiling support
++#
++# CONFIG_PROFILING is not set
++
++#
++# Kernel hacking
++#
++# CONFIG_PRINTK_TIME is not set
++# CONFIG_MAGIC_SYSRQ is not set
++CONFIG_DEBUG_KERNEL=y
++CONFIG_LOG_BUF_SHIFT=14
++# CONFIG_DETECT_SOFTLOCKUP is not set
++# CONFIG_SCHEDSTATS is not set
++# CONFIG_DEBUG_SLAB is not set
++CONFIG_DEBUG_PREEMPT=y
++# CONFIG_DEBUG_MUTEXES is not set
++# CONFIG_DEBUG_SPINLOCK is not set
++# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
++# CONFIG_DEBUG_KOBJECT is not set
++# CONFIG_DEBUG_BUGVERBOSE is not set
++# CONFIG_DEBUG_INFO is not set
++# CONFIG_DEBUG_FS is not set
++# CONFIG_DEBUG_VM is not set
++CONFIG_FRAME_POINTER=y
++# CONFIG_FORCED_INLINING is not set
++# CONFIG_RCU_TORTURE_TEST is not set
++# CONFIG_DEBUG_USER is not set
++# CONFIG_DEBUG_WAITQ is not set
++CONFIG_DEBUG_ERRORS=y
++# CONFIG_DEBUG_LL is not set
++
++#
++# Security options
++#
++# CONFIG_KEYS is not set
++CONFIG_SECURITY=y
++CONFIG_SECURITY_NETWORK=y
++# CONFIG_SECURITY_NETWORK_XFRM is not set
++# CONFIG_SECURITY_CAPABILITIES is not set
++# CONFIG_SECURITY_SECLVL 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 is not set
+Index: linux-2.6.16/arch/arm/Kconfig
+===================================================================
+--- linux-2.6.16.orig/arch/arm/Kconfig 2007-04-12 10:36:06.000000000 +0200
++++ linux-2.6.16/arch/arm/Kconfig 2007-04-12 10:36:19.000000000 +0200
+@@ -298,6 +298,23 @@
+ depends on CPU_XSCALE && !XSCALE_PMU_TIMER
+ default y
+
++config KEXEC
++ bool "Kexec system call (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ kexec is a system call that implements the ability to shutdown your
++ current kernel, and to start another kernel. It is like a reboot
++ but it is indepedent of the system firmware. And like a reboot
++ you can start any kernel with it, not just Linux.
++
++ The name comes from the similiarity to the exec system call.
++
++ It is an ongoing process to be certain the hardware in a machine
++ is properly shutdown, so do not be surprised if this code does not
++ initially work for you. It may help to enable device hotplugging
++ support. As of this writing the exact hardware interface is
++ strongly in flux, so no good recommendation can be made.
++
+ endmenu
+
+ source "arch/arm/common/Kconfig"
+Index: linux-2.6.16/arch/arm/kernel/calls.S
+===================================================================
+--- linux-2.6.16.orig/arch/arm/kernel/calls.S 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/arch/arm/kernel/calls.S 2007-04-12 10:36:19.000000000 +0200
+@@ -198,7 +198,7 @@
+ CALL(sys_sigaltstack_wrapper)
+ CALL(sys_sendfile)
+ CALL(sys_ni_syscall)
+- CALL(sys_ni_syscall)
++ CALL(sys_kexec_load)
+ /* 190 */ CALL(sys_vfork_wrapper)
+ CALL(sys_getrlimit)
+ CALL(sys_mmap2)
+Index: linux-2.6.16/arch/arm/kernel/head.S
+===================================================================
+--- linux-2.6.16.orig/arch/arm/kernel/head.S 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/arch/arm/kernel/head.S 2007-04-12 10:36:19.000000000 +0200
+@@ -36,6 +36,79 @@
+ #define KERNEL_RAM_ADDR (PAGE_OFFSET + TEXT_OFFSET)
+
+ /*
++ * debug macros, while the MMU is of
++ */
++.macro pix_ok /* blue */
++#ifdef CONFIG_EFB_DEBUG
++ mov r12, #0x0014
++ add r12, r12, #0x00140000
++ str r12, [r11]
++ add r11, r11, #4
++ str r12, [r11]
++ add r11, r11, #4
++ str r12, [r11]
++ add r11, r11, #4
++ str r12, [r11]
++ add r11, r11, #4
++ add r11, r11, #4
++#endif
++.endm
++
++.macro pix_ko /* red */
++#ifdef CONFIG_EFB_DEBUG
++ mov r12, #0xF800
++ add r12, r12, #0xF8000000
++ str r12, [r11]
++ add r11, r11, #4
++ str r12, [r11]
++ add r11, r11, #4
++ str r12, [r11]
++ add r11, r11, #4
++ str r12, [r11]
++ add r11, r11, #4
++ add r11, r11, #4
++#endif
++.endm
++
++.macro pix_ctr /* white */
++#ifdef CONFIG_EFB_DEBUG
++ mov r12, #-1
++ str r12, [r11]
++ add r11, r11, #4
++ str r12, [r11]
++ add r11, r11, #4
++ str r12, [r11]
++ add r11, r11, #4
++ str r12, [r11]
++ add r11, r11, #4
++ add r11, r11, #4
++#endif
++.endm
++
++/*
++ * a more mmu aware code: the frame buffer is mapped at 0xD0001020,
++ * see arch/arm/mach-omap/debug.c
++ */
++.macro pix_mmu /* black pixel */
++#ifdef CONFIG_EFB_DEBUG
++ mov r11, #0xD0000000
++ add r11, r11, #0x1000
++ add r11, r11, #0x20
++/* mov r12, #0x00FF */
++/* add r12, r12, #0x00FF0000 */
++ mov r12, #0
++ str r12, [r11]
++ add r11, r11, #4
++ str r12, [r11]
++ add r11, r11, #4
++ str r12, [r11]
++ add r11, r11, #4
++ str r12, [r11]
++ add r11, r11, #4
++#endif
++.endm
++
++/*
+ * swapper_pg_dir is the virtual address of the initial page table.
+ * We place the page tables 16K below KERNEL_RAM_ADDR. Therefore, we must
+ * make sure that KERNEL_RAM_ADDR is correctly set. Currently, we expect
+@@ -80,14 +153,31 @@
+ __INIT
+ .type stext, %function
+ ENTRY(stext)
++
++ /*
++ * r11 stores the beginning of the VRAM (0x20001020)
++ */
++ mov r11, #0x20000000
++ add r11, r11, #0x1000
++ add r11, r11, #0x20
++
++ pix_ok
++
+ msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC @ ensure svc mode
+ @ and irqs disabled
+ bl __lookup_processor_type @ r5=procinfo r9=cpuid
+ movs r10, r5 @ invalid processor (r5=0)?
+ beq __error_p @ yes, error 'p'
++
++ pix_ok
++
+ bl __lookup_machine_type @ r5=machinfo
+ movs r8, r5 @ invalid machine (r5=0)?
+ beq __error_a @ yes, error 'a'
++
++ pix_ok
++
++
+ bl __create_page_tables
+
+ /*
+@@ -232,14 +322,22 @@
+ .align 5
+ .type __turn_mmu_on, %function
+ __turn_mmu_on:
++
++ pix_ok
++
+ mov r0, r0
+ mcr p15, 0, r0, c1, c0, 0 @ write control reg
+ mrc p15, 0, r3, c0, c0, 0 @ read id reg
+ mov r3, r3
+ mov r3, r3
++
++ pix_mmu
++
+ mov pc, r13
+
+
++1:
++ b 1b
+
+ /*
+ * Setup the initial page tables. We only setup the barest
+@@ -363,6 +461,18 @@
+ str r3, [r0]
+ #endif
+ #endif
++
++#ifdef CONFIG_EFB_DEBUG
++ /*
++ * map frame buffer from 0x20000000 to 0xD0000000
++ * in order to help debugging
++ */
++ add r0, r4, #0xD0000000 >> 18
++ mov r3, #0x20000000
++ add r3, r3, r7
++ str r3, [r0]
++#endif
++
+ mov pc, lr
+ .ltorg
+
+@@ -380,6 +490,7 @@
+
+ .type __error_p, %function
+ __error_p:
++ pix_ko
+ #ifdef CONFIG_DEBUG_LL
+ adr r0, str_p1
+ bl printascii
+@@ -390,6 +501,7 @@
+
+ .type __error_a, %function
+ __error_a:
++ pix_ko
+ #ifdef CONFIG_DEBUG_LL
+ mov r4, r1 @ preserve machine ID
+ adr r0, str_a1
+Index: linux-2.6.16/arch/arm/kernel/machine_kexec.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/arch/arm/kernel/machine_kexec.c 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,77 @@
++/*
++ * machine_kexec.c - handle transition of Linux booting another kernel
++ */
++
++#include <linux/mm.h>
++#include <linux/kexec.h>
++#include <linux/delay.h>
++#include <linux/reboot.h>
++#include <asm/pgtable.h>
++#include <asm/pgalloc.h>
++#include <asm/mmu_context.h>
++#include <asm/io.h>
++#include <asm/cacheflush.h>
++#include <asm/mach-types.h>
++
++const extern unsigned char relocate_new_kernel[];
++const extern unsigned int relocate_new_kernel_size;
++
++extern unsigned long kexec_start_address;
++extern unsigned long kexec_indirection_page;
++extern unsigned long kexec_mach_type;
++
++/*
++ * Provide a dummy crash_notes definition while crash dump arrives to arm.
++ * This prevents breakage of crash_notes attribute in kernel/ksysfs.c.
++ */
++/* note_buf_t *crash_notes; */
++
++int machine_kexec_prepare(struct kimage *image)
++{
++ return 0;
++}
++
++void machine_kexec_cleanup(struct kimage *image)
++{
++}
++
++void machine_shutdown(void)
++{
++}
++
++void machine_crash_shutdown(struct pt_regs *regs)
++{
++}
++
++void machine_kexec(struct kimage *image)
++{
++ unsigned long page_list;
++ unsigned long reboot_code_buffer_phys;
++ void *reboot_code_buffer;
++
++
++ page_list = image->head & PAGE_MASK;
++
++ /* we need both effective and real address here */
++ reboot_code_buffer_phys =
++ page_to_pfn(image->control_code_page) << PAGE_SHIFT;
++ reboot_code_buffer = page_address(image->control_code_page);
++
++ /* Prepare parameters for reboot_code_buffer*/
++ kexec_start_address = image->start;
++ kexec_indirection_page = page_list;
++ kexec_mach_type = machine_arch_type;
++
++ /* copy our kernel relocation code to the control code page */
++ memcpy(reboot_code_buffer,
++ relocate_new_kernel, relocate_new_kernel_size);
++
++
++ flush_icache_range(reboot_code_buffer,
++ reboot_code_buffer + KEXEC_CONTROL_CODE_SIZE);
++ printk(KERN_INFO "Bye!\n");
++
++ cpu_proc_fin();
++ setup_mm_for_reboot(0); /* mode is not used, so just pass 0*/
++ cpu_reset(reboot_code_buffer_phys);
++}
+Index: linux-2.6.16/arch/arm/kernel/Makefile
+===================================================================
+--- linux-2.6.16.orig/arch/arm/kernel/Makefile 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/arch/arm/kernel/Makefile 2007-04-12 10:36:19.000000000 +0200
+@@ -21,6 +21,7 @@
+ obj-$(CONFIG_PCI) += bios32.o
+ obj-$(CONFIG_SMP) += smp.o
+ obj-$(CONFIG_OABI_COMPAT) += sys_oabi-compat.o
++obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o
+
+ obj-$(CONFIG_IWMMXT) += iwmmxt.o
+ AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt
+Index: linux-2.6.16/arch/arm/kernel/relocate_kernel.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/arch/arm/kernel/relocate_kernel.S 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,74 @@
++/*
++ * relocate_kernel.S - put the kernel image in place to boot
++ */
++
++#include <asm/kexec.h>
++
++ .globl relocate_new_kernel
++relocate_new_kernel:
++
++ ldr r0,kexec_indirection_page
++ ldr r1,kexec_start_address
++
++
++0: /* top, read another word for the indirection page */
++ ldr r3, [r0],#4
++
++ /* Is it a destination page. Put destination address to r4 */
++ tst r3,#1,0
++ beq 1f
++ bic r4,r3,#1
++ b 0b
++1:
++ /* Is it an indirection page */
++ tst r3,#2,0
++ beq 1f
++ bic r0,r3,#2
++ b 0b
++1:
++
++ /* are we done ? */
++ tst r3,#4,0
++ beq 1f
++ b 2f
++
++1:
++ /* is it source ? */
++ tst r3,#8,0
++ beq 0b
++ bic r3,r3,#8
++ mov r6,#1024
++9:
++ ldr r5,[r3],#4
++ str r5,[r4],#4
++ subs r6,r6,#1
++ bne 9b
++ b 0b
++
++2:
++ /* Jump to relocated kernel */
++ mov lr,r1
++ mov r0,#0
++ ldr r1,kexec_mach_type
++ mov r2,#0
++ mov pc,lr
++
++ .globl kexec_start_address
++kexec_start_address:
++ .long 0x0
++
++ .globl kexec_indirection_page
++kexec_indirection_page:
++ .long 0x0
++
++ .globl kexec_mach_type
++kexec_mach_type:
++ .long 0x0
++
++relocate_new_kernel_end:
++
++ .globl relocate_new_kernel_size
++relocate_new_kernel_size:
++ .long relocate_new_kernel_end - relocate_new_kernel
++
++
+Index: linux-2.6.16/arch/arm/kernel/setup.c
+===================================================================
+--- linux-2.6.16.orig/arch/arm/kernel/setup.c 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/arch/arm/kernel/setup.c 2007-04-12 10:36:19.000000000 +0200
+@@ -768,6 +768,16 @@
+ memcpy(saved_command_line, from, COMMAND_LINE_SIZE);
+ saved_command_line[COMMAND_LINE_SIZE-1] = '\0';
+ parse_cmdline(cmdline_p, from);
++
++#ifdef CONFIG_EFB_DEBUG
++ /*
++ * paging_init is going to wipe out any section other than the
++ * kernel code and data allocated in head.S so the framebuffer
++ * is going not to be available during paging_init.
++ */
++ efb_disable();
++#endif
++
+ paging_init(&meminfo, mdesc);
+ request_standard_resources(&meminfo, mdesc);
+
+Index: linux-2.6.16/arch/arm/kernel/traps.c
+===================================================================
+--- linux-2.6.16.orig/arch/arm/kernel/traps.c 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/arch/arm/kernel/traps.c 2007-04-12 10:36:19.000000000 +0200
+@@ -55,10 +55,10 @@
+ void dump_backtrace_entry(unsigned long where, unsigned long from)
+ {
+ #ifdef CONFIG_KALLSYMS
+- printk("[<%08lx>] ", where);
++/* printk("[<%08lx>] ", where); */
+ print_symbol("(%s) ", where);
+- printk("from [<%08lx>] ", from);
+- print_symbol("(%s)\n", from);
++/* printk("from [<%08lx>] ", from); */
++/* print_symbol("(%s)\n", from); */
+ #else
+ printk("Function entered at [<%08lx>] from [<%08lx>]\n", where, from);
+ #endif
+@@ -205,7 +205,7 @@
+
+ printk("Internal error: %s: %x [#%d]\n", str, err, ++die_counter);
+ print_modules();
+- __show_regs(regs);
++/* __show_regs(regs); */
+ printk("Process %s (pid: %d, stack limit = 0x%p)\n",
+ tsk->comm, tsk->pid, thread + 1);
+
+@@ -547,7 +547,7 @@
+ current->pid, current->comm, no);
+ dump_instr(regs);
+ if (user_mode(regs)) {
+- __show_regs(regs);
++/* __show_regs(regs); */
+ c_backtrace(regs->ARM_fp, processor_mode(regs));
+ }
+ }
+Index: linux-2.6.16/arch/arm/lib/backtrace.S
+===================================================================
+--- linux-2.6.16.orig/arch/arm/lib/backtrace.S 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/arch/arm/lib/backtrace.S 2007-04-12 10:36:19.000000000 +0200
+@@ -103,7 +103,9 @@
+ .align 0
+ 1007: ldr r0, =.Lbad
+ mov r1, frame
++#ifdef CONFIG_PRINTK
+ bl printk
++#endif
+ LOADREGS(fd, sp!, {r4 - r8, pc})
+ .ltorg
+ .previous
+@@ -138,12 +140,16 @@
+ ldr r2, [stack], #-4
+ mov r1, reg
+ adr r0, .Lfp
++#ifdef CONFIG_PRINTK
+ bl printk
++#endif
+ 2: subs reg, reg, #1
+ bpl 1b
+ teq r7, #0
+ adrne r0, .Lcr
++#ifdef CONFIG_PRINTK
+ blne printk
++#endif
+ mov r0, stack
+ LOADREGS(fd, sp!, {instr, reg, stack, r7, pc})
+
+Index: linux-2.6.16/arch/arm/mach-omap1/clock.c
+===================================================================
+--- linux-2.6.16.orig/arch/arm/mach-omap1/clock.c 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/arch/arm/mach-omap1/clock.c 2007-04-12 10:36:19.000000000 +0200
+@@ -267,11 +267,13 @@
+ if (!ptr->rate)
+ return -EINVAL;
+
++#if 0
+ /*
+ * In most cases we should not need to reprogram DPLL.
+ * Reprogramming the DPLL is tricky, it must be done from SRAM.
+ */
+ omap_sram_reprogram_clock(ptr->dpllctl_val, ptr->ckctl_val);
++#endif
+
+ ck_dpll1.rate = ptr->pll_rate;
+ propagate_rate(&ck_dpll1);
+@@ -774,12 +776,13 @@
+ omap_writew(1, ARM_RSTCT2);
+ omap_writew(0x400, ARM_IDLECT1);
+
++
+ /*
+ * According to OMAP5910 Erratum SYS_DMA_1, bit DMACK_REQ (bit 8)
+ * of the ARM_IDLECT2 register must be set to zero. The power-on
+ * default value of this bit is one.
+ */
+- omap_writew(0x0000, ARM_IDLECT2); /* Turn LCD clock off also */
++ omap_writew(0x0008, ARM_IDLECT2); /* But keep LCD clock active ... */
+
+ /*
+ * Only enable those clocks we will need, let the drivers
+Index: linux-2.6.16/arch/arm/mach-omap1/clock.h
+===================================================================
+--- linux-2.6.16.orig/arch/arm/mach-omap1/clock.h 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/arch/arm/mach-omap1/clock.h 2007-04-12 10:36:19.000000000 +0200
+@@ -182,7 +182,7 @@
+ static struct clk arm_ck = {
+ .name = "arm_ck",
+ .parent = &ck_dpll1,
+- .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
++ .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP730 |
+ CLOCK_IN_OMAP310 | RATE_CKCTL | RATE_PROPAGATES |
+ ALWAYS_ENABLED,
+ .rate_offset = CKCTL_ARMDIV_OFFSET,
+@@ -196,7 +196,7 @@
+ .name = "armper_ck",
+ .parent = &ck_dpll1,
+ .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
+- CLOCK_IN_OMAP310 | RATE_CKCTL |
++ CLOCK_IN_OMAP310 | CLOCK_IN_OMAP730 | RATE_CKCTL |
+ CLOCK_IDLE_CONTROL,
+ .enable_reg = (void __iomem *)ARM_IDLECT2,
+ .enable_bit = EN_PERCK,
+@@ -715,6 +715,20 @@
+ .disable = &omap1_clk_disable_generic,
+ };
+
++static struct clk mmc_ck_730 = {
++ .name = "mmc_ck",
++ .id = 3,
++ /* Functional clock is direct from ULPD, interface clock is ARMPER */
++ .parent = &armper_ck.clk,
++ .rate = 48000000,
++ .flags = CLOCK_IN_OMAP730 |
++ RATE_FIXED | ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
++ .enable_reg = (void __iomem *)SOFT_REQ_REG,
++ .enable_bit = 12,
++ .enable = &omap1_clk_enable_generic,
++ .disable = &omap1_clk_disable_generic,
++};
++
+ static struct clk virtual_ck_mpu = {
+ .name = "mpu",
+ .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
+@@ -799,6 +813,7 @@
+ &bclk_1510, &bclk_16xx,
+ &mmc1_ck,
+ &mmc2_ck,
++ &mmc_ck_730,
+ /* Virtual clocks */
+ &virtual_ck_mpu,
+ &i2c_fck,
+Index: linux-2.6.16/arch/arm/mach-omap1/efb.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/arch/arm/mach-omap1/efb.c 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,200 @@
++/*
++** efb.c for efb in /home/nico/work/tornado/linux-tornado
++**
++** Made by nico
++** Login <nico@chac.le-poulpe.net>
++**
++** Started on Wed Apr 5 18:55:08 2006 nico
++** Last update Thu May 11 13:50:52 2006 nico
++*/
++
++/*
++ *
++ * early frame buffer debug routines.
++ * Copyright (C) 2006 Nicolas Schichan
++ *
++ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
++ * 02110-1301, USA.
++ *
++ */
++
++#include <asm/mach-types.h>
++#include <asm/arch/efb.h>
++
++static void efb_move_screen_up(void);
++static void blit_char(unsigned int x, unsigned int y, char c);
++
++#define PIX16(R, G, B) (((R >> 3) << 11) | ((G >> 2) << 5) | ((B >> 3)))
++
++
++/* 0xD0000000 is where OMAP730_SRAM is mapped by head.S */
++/*
++ * Windows CE seems to have physical frame buffer mapped to
++ * 0x20001020. we try to keep this space available at virtual address
++ * 0xD0001020 during kernel boot. This is strange as this is not page
++ * aligned. However even if I don't know how to do it, there must be a
++ * way to configure the framebuffer location inside the sram.
++ *
++ * TODO: see omap730 TRM.
++ */
++static unsigned short __initdata *vram = (unsigned short *)0xD0001020;
++
++/*
++ * no attribute since it is used by efb_putstr which has no
++ * attribute ...
++ */
++static int enabled = 0;
++
++unsigned int efb_width;
++unsigned int efb_height;
++
++void __init efb_init(void)
++{
++ unsigned int i;
++
++ /*
++ * only htc typhoon is known to have 176x220 screen. all other
++ * machines have 320x240 screens.
++ */
++ if (machine_is_typhoon()) {
++ efb_width = 176;
++ efb_height = 220;
++ } else {
++ efb_width = 240;
++ efb_height = 320;
++ }
++
++ for (i = 0; i < efb_width * efb_height; ++i) {
++ vram[i] = 0;
++ }
++
++ efb_enable();
++}
++
++
++/*
++ * Write a pixel with color (r,g,b) at screen coordinate (x,y)
++ */
++static void __init dbg_pix(int x, int y, int r, int g, int b)
++{
++ unsigned short pix = PIX16(r, g, b);
++
++ vram[y * efb_width + x] = pix;
++}
++
++
++static __initdata int x = 1;
++static __initdata int y = 0;
++
++
++/*
++ * put string s to the frame buffer using the 5x5 font.
++ *
++ * this functions has no __init attribute since it is can be called in printk.
++ */
++void efb_putstr(const char *s)
++{
++ if (enabled == 0)
++ return ;
++
++ while (*s) {
++ if (*s == '\n')
++ goto newline;
++ blit_char(x, y, *s);
++ x += 6;
++
++ if (x + 6 > efb_width) {
++ newline:
++ if (y + 6 > efb_height - 6)
++ efb_move_screen_up();
++ else
++ y += 6;
++ x = 1;
++ }
++ ++s;
++ }
++}
++
++#define NR_LINE (efb_height / 6)
++
++#define FONT_WIDTH 5
++#define FONT_HEIGHT 5
++
++/*
++ * blit a char on the screen at position (x,y)
++ */
++static __init void blit_char(unsigned int x, unsigned int y, char c)
++{
++ const char *cur_font;
++ int i, j;
++
++ /*
++ * do not blit glyph if some part of it are ofscreen.
++ */
++ if (x + FONT_WIDTH > efb_width)
++ return;
++ if (y + FONT_HEIGHT > efb_height)
++ return;
++
++ cur_font = efb_font[(unsigned int)c];
++ for (j= 0; j < FONT_HEIGHT; ++j) {
++ for (i = 0; i < FONT_WIDTH; ++i) {
++ if (cur_font[j * FONT_WIDTH + i])
++ dbg_pix(x + i, y + j, 255, 255, 255);
++ else
++ dbg_pix(x + i, y + j, 0, 0, 0);
++ }
++ }
++}
++
++/*
++ * perform some basic one way scrolling.
++ *
++ * for each line l do
++ * clear line l
++ * break if l is the last line
++ * copy next line over l
++ * done
++ *
++ * It is not possible to scroll back.
++ */
++static void __init efb_move_screen_up(void)
++{
++ int i, k;
++ int start1, start2;
++
++ for (k = 0; 1; ++k) {
++ start1 = efb_width * 6 * k;
++ start2 = efb_width * 6 * (k + 1);
++ /* clear the n current line */
++ for (i = 0; i < 6 * efb_width; ++i)
++ vram[start1 + i] = 0;
++ if (k == NR_LINE - 1)
++ break;
++ /* copy the next line to the current line */
++ for (i = 0; i < 6 * efb_width; ++i)
++ vram[start1 + i] = vram[start2 +i];
++ }
++}
++
++void __init efb_disable(void)
++{
++ enabled = 0;
++}
++
++void __init efb_enable(void)
++{
++ enabled = 1;
++}
+Index: linux-2.6.16/arch/arm/mach-omap1/efb-font5x5.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/arch/arm/mach-omap1/efb-font5x5.c 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,982 @@
++
++/*
++ * file generated by makecfont.pl and bmp2c
++ * resources for a simple 5x5 font
++ */
++
++const char efb_font[255][25] = {
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* lpar.bmp */
++ {
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ },
++ /* rpar.bmp */
++ {
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ },
++ /* star.bmp */
++ {
++ 0xFF, 0x00, 0xFF, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0xFF, 0x00, 0xFF,
++ },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* dash.bmp */
++ {
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ },
++ /* dot.bmp */
++ {
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ },
++ /* slash.bmp */
++ {
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ },
++ /* 0.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0xFF, 0xFF,
++ 0xFF, 0x00, 0xFF, 0x00, 0xFF,
++ 0xFF, 0xFF, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* 1.bmp */
++ {
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* 2.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* 3.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* 4.bmp */
++ {
++ 0xFF, 0x00, 0xFF, 0x00, 0x00,
++ 0xFF, 0x00, 0xFF, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ },
++ /* 5.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0x00, 0xFF, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0xFF, 0xFF, 0x00, 0x00,
++ },
++ /* 6.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* 7.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ },
++ /* 8.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* 9.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* ddot.bmp */
++ {
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ },
++ /* not available */
++ { 0x00 },
++ /* lchev.bmp */
++ {
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0x00, 0xFF, 0xFF, 0x00,
++ 0xFF, 0xFF, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* eq.bmp */
++ {
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ },
++ /* rchev.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0xFF, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0xFF, 0xFF,
++ 0x00, 0xFF, 0xFF, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* A.bmp */
++ {
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* B.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* C.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* D.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* E.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ },
++ /* F.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ },
++ /* G.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* H.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* I.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* J.bmp */
++ {
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* K.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0xFF, 0xFF, 0x00,
++ 0xFF, 0xFF, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* L.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ },
++ /* M.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
++ 0xFF, 0x00, 0xFF, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* N.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0xFF, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* O.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* P.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ },
++ /* Q.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0xFF, 0xFF, 0x00, 0xFF,
++ },
++ /* R.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* S.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* T.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ },
++ /* U.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* V.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ },
++ /* W.bmp */
++ {
++ 0xFF, 0x00, 0xFF, 0x00, 0xFF,
++ 0xFF, 0x00, 0xFF, 0x00, 0xFF,
++ 0xFF, 0x00, 0xFF, 0x00, 0xFF,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ },
++ /* X.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* Y.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ },
++ /* Z.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0x00, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ },
++ /* ldash.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* aslash.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* rdash.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* not available */
++ { 0x00 },
++ /* _.bmp */
++ {
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ },
++ /* not available */
++ { 0x00 },
++ /* a.bmp */
++ {
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* b.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* c.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* d.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* e.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ },
++ /* f.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ },
++ /* g.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* h.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* i.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* j.bmp */
++ {
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* k.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0xFF, 0xFF, 0x00,
++ 0xFF, 0xFF, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* l.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ },
++ /* m.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
++ 0xFF, 0x00, 0xFF, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* n.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0xFF, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* o.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* p.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ },
++ /* q.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0xFF, 0xFF, 0x00, 0xFF,
++ },
++ /* r.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* s.bmp */
++ {
++ 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ 0x00, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* t.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ },
++ /* u.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0xFF, 0xFF, 0x00,
++ },
++ /* v.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ },
++ /* w.bmp */
++ {
++ 0xFF, 0x00, 0xFF, 0x00, 0xFF,
++ 0xFF, 0x00, 0xFF, 0x00, 0xFF,
++ 0xFF, 0x00, 0xFF, 0x00, 0xFF,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ },
++ /* x.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ },
++ /* y.bmp */
++ {
++ 0xFF, 0x00, 0x00, 0x00, 0xFF,
++ 0x00, 0xFF, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0xFF, 0x00, 0x00, 0x00, 0x00,
++ },
++ /* z.bmp */
++ {
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ 0x00, 0x00, 0x00, 0xFF, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0xFF, 0x00, 0x00, 0x00,
++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
++ },
++ /* not available */
++ { 0x00 },
++ /* pipe.bmp */
++ {
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ 0x00, 0x00, 0xFF, 0x00, 0x00,
++ },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++ /* not available */
++ { 0x00 },
++};
++
++/* c'étais vraiment tres intéressant */
+Index: linux-2.6.16/arch/arm/mach-omap1/io.c
+===================================================================
+--- linux-2.6.16.orig/arch/arm/mach-omap1/io.c 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/arch/arm/mach-omap1/io.c 2007-04-12 10:36:19.000000000 +0200
+@@ -20,6 +20,8 @@
+ #include <asm/arch/tc.h>
+ #include <asm/arch/omapfb.h>
+
++#include <asm/arch/efb.h>
++
+ extern int omap1_clk_init(void);
+ extern void omap_check_revision(void);
+ extern void omap_sram_init(void);
+@@ -49,7 +51,7 @@
+ .pfn = __phys_to_pfn(OMAP730_DSPREG_START),
+ .length = OMAP730_DSPREG_SIZE,
+ .type = MT_DEVICE
+- }
++ },
+ };
+ #endif
+
+@@ -143,4 +145,3 @@
+
+ omap1_mux_init();
+ }
+-
+Index: linux-2.6.16/arch/arm/mach-omap1/Kconfig
+===================================================================
+--- linux-2.6.16.orig/arch/arm/mach-omap1/Kconfig 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/arch/arm/mach-omap1/Kconfig 2007-04-12 10:36:19.000000000 +0200
+@@ -171,3 +171,10 @@
+
+ source "arch/arm/plat-omap/dsp/Kconfig"
+
++source "arch/arm/mach-omap1/tornado/Kconfig"
++
++config EFB_DEBUG
++ bool "Early Frame Buffer debugging routines"
++ depends on MACH_TORNADO
++ help
++ Output in the framebuffer of the HTC phones as early as possible (experimental, ...).
+Index: linux-2.6.16/arch/arm/mach-omap1/Makefile
+===================================================================
+--- linux-2.6.16.orig/arch/arm/mach-omap1/Makefile 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/arch/arm/mach-omap1/Makefile 2007-04-12 10:36:19.000000000 +0200
+@@ -37,3 +37,5 @@
+ led-$(CONFIG_MACH_OMAP_OSK) += leds-osk.o
+ obj-$(CONFIG_LEDS) += $(led-y)
+
++obj-y += tornado/
++obj-$(CONFIG_EFB_DEBUG) += efb.o efb-font5x5.o
+Index: linux-2.6.16/arch/arm/mach-omap1/tornado/Kconfig
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/arch/arm/mach-omap1/tornado/Kconfig 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,5 @@
++config MACH_TORNADO
++ bool "HTC Tornado Support"
++ depends on ARCH_OMAP730
++ help
++ HTC Tornado smartphone support (AKA SPV C600, QTEK 8310, ...)
+Index: linux-2.6.16/arch/arm/mach-omap1/tornado/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/arch/arm/mach-omap1/tornado/Makefile 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,11 @@
++##
++## Makefile for linux-on-tornado in /home/nico/work/tornado/linux-tornado
++##
++## Made by nico
++## Login <nico@chac.le-poulpe.net>
++##
++## Started on Wed Apr 5 17:20:58 2006 nico
++## Last update Thu May 11 12:34:33 2006 nico
++##
++
++obj-$(CONFIG_MACH_TORNADO) += tornado.o
+Index: linux-2.6.16/arch/arm/mach-omap1/tornado/tornado.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/arch/arm/mach-omap1/tornado/tornado.c 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,242 @@
++/*
++** tornado.c for linux-on-tornado in /home/nico/work/tornado/linux-tornado
++**
++** Made by nico
++** Login <nico@chac.le-poulpe.net>
++**
++** Started on Wed Apr 5 17:20:24 2006 nico
++** Last update Fri Jul 7 01:31:54 2006 nico
++*/
++
++/*
++ *
++ * HTC Tornado init stuff
++ * Copyright (C) 2006 Nicolas Schichan
++ *
++ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
++ * 02110-1301, USA.
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++#include <asm/arch/omap730.h>
++#include <asm/page.h>
++#include <asm/memory.h>
++#include <asm/arch/common.h>
++#include <asm/arch/board.h>
++#include <asm/arch/efb.h>
++#include <asm/arch/io.h>
++#include <asm/arch/irqs.h>
++#include <asm/arch/gpio.h>
++
++#include <linux/delay.h>
++
++#define TORNADO_GPIO_DM 35
++#define TORNADO_GPIO_DP 36
++
++static void __init
++tornado_map_io(void)
++{
++
++ omap1_map_common_io();
++
++#ifdef CONFIG_EFB_DEBUG
++ /*
++ * reenable simple framebuffer output on HTC typhoon:
++ * now safe to do it: sram has been remapped.
++ */
++ efb_enable();
++#endif
++ printk("tornado_map_io done.\n");
++}
++
++static void __init
++tornado_usb_enable(void)
++{
++ unsigned int tries = 20;
++ printk("trying to enable USB.\n");
++
++ /* force USB_EN GPIO to 0 */
++ do {
++ omap_set_gpio_direction(33, 0); /* output */
++ omap_set_gpio_dataout(33, 0); /* low */
++ --tries;
++ } while(omap_get_gpio_datain(33) && tries);
++ if (tries) {
++ printk("unable to reset USB_EN GPIO after 20 tries.\n");
++ printk("I will try to continue anyway: USB may not be available.\n");
++ }
++ printk("USB_EN to 0 after %i tries.\n", tries);
++
++ omap_set_gpio_dataout(73, 0);
++
++ omap_set_gpio_direction(TORNADO_GPIO_DM, 1); /* input */
++
++ /* get uart control from GSM */
++
++ /* select GPIO35 for D_MCLK_OUT */
++ /* select GPIO36 for D_CRESET */
++ omap_writel(omap_readl(OMAP730_IO_CONF_3) & 0xffffffcc, OMAP730_IO_CONF_3);
++ omap_writel(omap_readl(OMAP730_IO_CONF_3) | 0x000000cc, OMAP730_IO_CONF_3);
++
++
++ omap_set_gpio_direction(TORNADO_GPIO_DP, 1); /* input */
++
++ /* select D_DM, D_DP for D_DM and disable PE_DM control */
++ omap_writel(omap_readl(OMAP730_IO_CONF_2) & 0xff1fffff, OMAP730_IO_CONF_2);
++ omap_writel(omap_readl(OMAP730_IO_CONF_2) | 0x00100000, OMAP730_IO_CONF_2);
++ mdelay(100);
++
++ /* select USB_VBUSI for D_VBUSI, enable PE_VIBUSI pull enable control */
++ omap_writel(omap_readl(OMAP730_IO_CONF_2) & 0xf1ffffff, OMAP730_IO_CONF_2);
++ omap_writel(omap_readl(OMAP730_IO_CONF_2) | 0x01000000, OMAP730_IO_CONF_2);
++
++ /* set USB_VBUS_CTRL */
++ omap_writel(omap_readl(OMAP730_MODE_1) | (1 << 25), OMAP730_MODE_1);
++}
++
++static void __init
++tornado_usb_otg(void)
++{
++ /* clock configuration */
++ omap_writew(omap_readw(ULPD_SOFT_REQ) | (1 << 8) | SOFT_USB_CLK_REQ, ULPD_SOFT_REQ);
++
++ // clk_enable(&l3_ocpi_ck);
++ omap_writew(omap_readw(ARM_IDLECT3) | (1 << 0), ARM_IDLECT3);
++
++ /* pin muxing */
++ omap_writel(omap_readl(OMAP730_MODE_1) & ~(1 << 2), OMAP730_MODE_1);
++ omap_writel(omap_readl(OMAP730_MODE_1) & ~(1 << 3), OMAP730_MODE_1);
++ omap_writel(omap_readl(OMAP730_MODE_1) | (1 << 15), OMAP730_MODE_1);
++ omap_writel(omap_readl(OMAP730_MODE_1) | (1 << 23), OMAP730_MODE_1);
++ omap_writel(omap_readl(OMAP730_MODE_1) | (1 << 26), OMAP730_MODE_1);
++ omap_writel(omap_readl(OMAP730_MODE_1) | (1 << 25), OMAP730_MODE_1);
++ omap_writel(omap_readl(OMAP730_MODE_1) & ~(1 << 24), OMAP730_MODE_1);
++ omap_writel(omap_readl(OMAP730_MODE_1) & ~(1 << 10), OMAP730_MODE_1);
++ omap_writel(omap_readl(OMAP730_MODE_1) & ~(1 << 11), OMAP730_MODE_1);
++}
++
++static struct omap_usb_config tornado_usb_config __initdata =
++{
++ .register_dev = 1,
++ .register_host = 0,
++ .otg = 0,
++ .hmc_mode = 4,
++ .pins[0] = 2,
++ .pins[1] = 0,
++ .pins[2] = 0,
++};
++
++static struct omap_mmc_config tornado_mmc_config __initdata =
++{
++ .mmc[0] = {
++ .enabled = 1,
++ .nomux = 1,
++ .wire4 = 1,
++ .power_pin = -1,
++ .switch_pin = -1,
++ }
++};
++
++static struct omap_board_config_kernel tornado_config[] =
++{
++ { OMAP_TAG_USB, &tornado_usb_config },
++ { OMAP_TAG_MMC, &tornado_mmc_config },
++};
++
++static void __init
++tornado_mmc_init(void)
++{
++ unsigned int tries;
++
++# define OMAP_MMC_REG_SYSC (0xfffb7800 + 0x32)
++# define OMAP_MMC_REG_SYSS (0xfffb7800 + 0x34)
++# define OMAP_MMC_REG_CTO (0xfffb7800 + 0x0e)
++# define OMAP_MMC_REG_DTO (0xfffb7800 + 0x1c)
++
++ /* put mmc host into reset ... */
++ omap_writew(1, OMAP_MMC_REG_SYSC);
++
++ tries = 100;
++ while (omap_readw(OMAP_MMC_REG_SYSS) == 0 && tries) {
++ mdelay(50);
++ --tries;
++ }
++ printk("MMC host reset done: remaining tries: %i\n", tries);
++
++ /* force mode 0 for D_SMC_DAT3, D_SMC_DAT2, D_SMC, no pull up enable */
++ omap_writel(omap_readl(OMAP730_IO_CONF_2) & ~(0xF << 8), OMAP730_IO_CONF_2);
++ omap_writel(omap_readl(OMAP730_IO_CONF_2) & ~(0xF << 12), OMAP730_IO_CONF_2);
++ omap_writel(omap_readl(OMAP730_IO_CONF_2) & ~(0xF << 16), OMAP730_IO_CONF_2);
++}
++
++struct platform_device gsm_device = {
++ .name = "typhoon-gsm",
++ .id = 1
++};
++
++static struct platform_device *devices[] __initdata = {
++ &gsm_device,
++};
++
++static void __init
++tornado_init(void)
++{
++ printk("Tornado init.\n");
++ omap_board_config = tornado_config;
++ omap_board_config_size = ARRAY_SIZE(tornado_config);
++
++ platform_add_devices(devices, ARRAY_SIZE(devices));
++
++ if (omap_readl(OMAP_WDT_TIMER_MODE) & 0x8000) {
++ /*
++ * disable a potentially running watchdog timer before
++ * it kills us.
++ */
++ printk("OMAP730 Watchdog seems to be activated, disabling it for now.\n");
++ omap_writel(0xF5, OMAP_WDT_TIMER_MODE);
++ omap_writel(0xA0, OMAP_WDT_TIMER_MODE);
++ }
++
++ tornado_usb_otg();
++ tornado_usb_enable();
++ tornado_mmc_init();
++}
++
++static void __init
++tornado_init_irq(void)
++{
++ printk("tornado_init_irq.\n");
++ omap1_init_common_hw();
++ omap_init_irq();
++ omap_gpio_init();
++}
++
++MACHINE_START(TORNADO, "HTC Tornado")
++ /* Maintainer: Nicolas Schichan <nico@chac.le-poulpe.net> */
++ .phys_io = 0xfff00000,
++ .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc,
++ .boot_params = 0x10000100,
++ .map_io = tornado_map_io,
++ .init_irq = tornado_init_irq,
++ .init_machine = tornado_init,
++ .timer = &omap_timer,
++MACHINE_END
+Index: linux-2.6.16/arch/arm/plat-omap/sram.c
+===================================================================
+--- linux-2.6.16.orig/arch/arm/plat-omap/sram.c 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/arch/arm/plat-omap/sram.c 2007-04-12 10:36:19.000000000 +0200
+@@ -33,9 +33,12 @@
+ #define OMAP2_SRAM_PUB_VA 0xd0000800
+
+ #if defined(CONFIG_ARCH_OMAP24XX)
+-#define SRAM_BOOTLOADER_SZ 0x00
++# define SRAM_BOOTLOADER_SZ 0x00
++#elif defined(CONFIG_EFB_DEBUG)
++/* reserve memory for frame buffer too ... */
++# define SRAM_BOOTLOADER_SZ (0x1020 + 320 * 240 * 2)
+ #else
+-#define SRAM_BOOTLOADER_SZ 0x80
++# define SRAM_BOOTLOADER_SZ 0x80
+ #endif
+
+ #define VA_REQINFOPERM0 IO_ADDRESS(0x68005048)
+Index: linux-2.6.16/arch/arm/plat-omap/usb.c
+===================================================================
+--- linux-2.6.16.orig/arch/arm/plat-omap/usb.c 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/arch/arm/plat-omap/usb.c 2007-04-12 10:36:19.000000000 +0200
+@@ -123,11 +123,11 @@
+ * - only peripherals may use the internal D+/D- pulldowns
+ * - OTG support on this port not yet written
+ */
+-
+- USB_TRANSCEIVER_CTRL_REG &= ~(7 << 4);
+- if (!is_device)
+- USB_TRANSCEIVER_CTRL_REG |= (3 << 1);
+-
++ if (!cpu_is_omap730()) {
++ USB_TRANSCEIVER_CTRL_REG &= ~(7 << 4);
++ if (!is_device)
++ USB_TRANSCEIVER_CTRL_REG |= (3 << 1);
++ }
+ return 3 << 16;
+ }
+
+@@ -457,6 +457,11 @@
+ syscon &= ~DEV_IDLE_EN;
+ udc_device.dev.platform_data = config;
+ /* FIXME patch IRQ numbers for omap730 */
++ if (cpu_is_omap730()) {
++ udc_resources[1].start = INT_730_USB_GENI;
++ udc_resources[2].start = INT_730_USB_NON_ISO;
++ udc_resources[3].start = INT_730_USB_ISO;
++ }
+ status = platform_device_register(&udc_device);
+ if (status)
+ pr_debug("can't register UDC device, %d\n", status);
+Index: linux-2.6.16/arch/arm/tools/mach-types
+===================================================================
+--- linux-2.6.16.orig/arch/arm/tools/mach-types 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/arch/arm/tools/mach-types 2007-04-12 10:36:19.000000000 +0200
+@@ -969,3 +969,4 @@
+ fujitsu_wimaxsoc MACH_FUJITSU_WIMAXSOC FUJITSU_WIMAXSOC 956
+ dualpcmodem MACH_DUALPCMODEM DUALPCMODEM 957
+ gesbc9312 MACH_GESBC9312 GESBC9312 958
++htc_tornado MACH_TORNADO TORNADO 6665
+Index: linux-2.6.16/ChangeLog
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/ChangeLog 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,3 @@
++2006-04-10 nico <nico@localhost.localdomain>
++
++ * wizard-keypad.c: support for arrow keys (GPIO based).
+Index: linux-2.6.16/drivers/char/Kconfig
+===================================================================
+--- linux-2.6.16.orig/drivers/char/Kconfig 2007-04-12 10:36:08.000000000 +0200
++++ linux-2.6.16/drivers/char/Kconfig 2007-04-12 10:36:19.000000000 +0200
+@@ -678,6 +678,21 @@
+
+ If unsure, say N.
+
++config TORNADO_VIBRATOR
++ tristate "HTC Tornado vibrator"
++ depends on MACH_TORNADO
++ help
++ HTC Tornado vibrator support. supports for misc
++ device with minor number 240. implements two IOCTLs:
++ VIBRATOR_ENABLE and VIBRATOR_DISABLE.
++
++config TORNADO_LEDS
++ tristate "HTC Tornado led driver"
++ depends on MACH_TORNADO
++ help
++ HTC Tornado led driver. misc device with minor
++ number 241.
++
+ config NVRAM
+ tristate "/dev/nvram support"
+ depends on ATARI || X86 || ARM || GENERIC_NVRAM
+Index: linux-2.6.16/drivers/char/Makefile
+===================================================================
+--- linux-2.6.16.orig/drivers/char/Makefile 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/drivers/char/Makefile 2007-04-12 10:36:19.000000000 +0200
+@@ -97,6 +97,10 @@
+
+ obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o
+ obj-$(CONFIG_TCG_TPM) += tpm/
++
++obj-$(CONFIG_TORNADO_VIBRATOR) += tornado-vibrator.o
++obj-$(CONFIG_TORNADO_LEDS) += tornado-leds.o
++
+ # Files generated that shall be removed upon make clean
+ clean-files := consolemap_deftbl.c defkeymap.c qtronixmap.c
+
+Index: linux-2.6.16/drivers/char/tornado-leds.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/drivers/char/tornado-leds.c 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,253 @@
++/*
++** tornado-leds.c for leds in /home/nico/work/tornado/linux-tornado
++**
++** Made by nico
++** Login <nico@chac.le-poulpe.net>
++**
++** Started on Mon Apr 17 11:19:59 2006 nico
++** Last update Thu May 25 15:32:23 2006 nico
++*/
++
++/*
++ *
++ * HTC Tornado LED driver.
++ * Copyright (C) 2006 Nicolas Schichan
++ *
++ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
++ * 02110-1301, USA.
++ *
++ */
++
++#include <linux/init.h>
++#include <linux/miscdevice.h>
++#include <linux/moduleparam.h>
++#include <linux/fs.h>
++#include <linux/bitops.h>
++
++#include <asm/arch/gpio.h>
++
++#define LEDS_MINOR 241
++
++/*
++ * ioctl definitions.
++ */
++#define IOCTL_LED_ENABLE 0x4242 /* param: color */
++#define IOCTL_LED_BLINK 0x4243 /* param: color */
++#define IOCTL_LED_DISABLE 0x4244 /* no param */
++#define IOCTL_KPLED_ENABLE 0x4245 /* no param */
++#define IOCTL_KPLED_DISABLE 0x4246 /* no param */
++
++#define PARAM_LED_RED 0x666
++#define PARAM_LED_GREEN 0x667
++#define PARAM_LED_BLUE 0x668
++
++/*
++ * hw def
++ */
++#define TORNADO_LED_BASE 0xFFFBA800
++/* PM Reg: enable led clock when set to 1 */
++#define TORNADO_LED_PMR 0xFFFBA801
++
++/* TORNADO_LED_ENABLE register layout */
++/*
++ bit 7: ON
++ bit 6: BLINK
++ bit 5-3: off time.
++ bit 0-2: on time.
++
++*/
++
++#define TORNADO_GPIO_LED_GREEN 79
++#define TORNADO_GPIO_LED_RED 128
++#define TORNADO_GPIO_LED_BLUE 140
++#define TORNADO_GPIO_KPLED 16
++
++
++/* in TORNADO_LED_ENABLE */
++#define LED_ON (1 << 7)
++#define LED_BLINK (1 << 6)
++#define LED_ONTIME(x) ((x) & 0x7)
++#define LED_OFFTIME(x) (((x) & 0x7) << 3)
++
++#define LED_BASE_REG __REG8(TORNADO_LED_BASE)
++#define LED_PM_REG __REG8(TORNADO_LED_PMR)
++
++static unsigned long use;
++
++static int
++tornado_leds_open(struct inode *inode, struct file *file)
++{
++ /* ensure exclusive access */
++ if (test_and_set_bit(0, &use))
++ return -EBUSY;
++
++ return 0;
++}
++
++static int led_set_color(unsigned long color)
++{
++ switch (color) {
++ case PARAM_LED_RED:
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_RED, 1);
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_GREEN, 0);
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_BLUE, 0);
++ break;
++ case PARAM_LED_GREEN:
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_RED, 0);
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_GREEN, 1);
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_BLUE, 0);
++ break;
++ case PARAM_LED_BLUE:
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_RED, 0);
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_GREEN, 0);
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_BLUE, 1);
++ break;
++ default:
++ return -EINVAL;
++ }
++ return 0;
++}
++
++/*
++ * FIXME: on the HTC Tornado, the blue led is not the same as the
++ * red/green led, there may be some gpio changes / special register
++ * settings for this.
++ */
++static int
++tornado_leds_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
++{
++ switch (cmd) {
++ case IOCTL_LED_ENABLE:
++ LED_PM_REG = 0; /* disable blink clock */
++ LED_BASE_REG = LED_ON;
++ return led_set_color(arg);
++
++ case IOCTL_LED_BLINK:
++ LED_PM_REG = 1;
++ LED_BASE_REG = 0x7F; /* LED_BLINK | LED_ONTIME(1) | LED_OFFTIME(3); */
++ printk("IOCTL_LED_BLINK (reg = %02x).\n", LED_BASE_REG);
++ return led_set_color(arg);
++
++ case IOCTL_LED_DISABLE:
++ LED_PM_REG = 0;
++ LED_BASE_REG = 0;
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_RED, 0);
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_GREEN, 0);
++ break;
++
++ case IOCTL_KPLED_ENABLE:
++ omap_set_gpio_dataout(TORNADO_GPIO_KPLED, 1);
++ break;
++
++ case IOCTL_KPLED_DISABLE:
++ omap_set_gpio_dataout(TORNADO_GPIO_KPLED, 0);
++ break;
++ default:
++ return -EINVAL;
++ }
++ return 0;
++}
++
++static int
++tornado_leds_release(struct inode *inode, struct file *file)
++{
++ use = 0;
++ return 0;
++}
++
++struct file_operations tornado_leds_fops =
++{
++ .owner = THIS_MODULE,
++ .ioctl = tornado_leds_ioctl,
++ .open = tornado_leds_open,
++ .release = tornado_leds_release,
++};
++
++struct miscdevice tornado_leds_device =
++{
++ .minor = LEDS_MINOR,
++ .name = "tornado-leds",
++ .fops = &tornado_leds_fops,
++};
++
++static int __init
++tornado_leds_init(void)
++{
++ int ret;
++
++ omap_request_gpio(TORNADO_GPIO_LED_RED);
++ omap_request_gpio(TORNADO_GPIO_LED_GREEN);
++ omap_request_gpio(TORNADO_GPIO_LED_BLUE);
++ omap_request_gpio(TORNADO_GPIO_KPLED);
++
++ ret = misc_register(&tornado_leds_device);
++ if (ret)
++ return ret;
++
++ /*
++ * init hw
++ */
++ /* clear GSM_LPG1 and select GPIO_140 & LPG1 pullup enable control */
++ omap_writel(omap_readl(OMAP730_IO_CONF_10) & ~0x20, OMAP730_IO_CONF_10);
++ omap_writel(omap_readl(OMAP730_IO_CONF_10) | 0xd0, OMAP730_IO_CONF_10);
++
++/* omap_set_gpio_dataout(140, 1); */
++
++ /* clear GSM_LPG2 and select GPIO_141 & LPG2 pullup enable control */
++ omap_writel(omap_readl(OMAP730_IO_CONF_10) & ~0x200, OMAP730_IO_CONF_10);
++ omap_writel(omap_readl(OMAP730_IO_CONF_10) | 0xd00, OMAP730_IO_CONF_10);
++
++/* omap_set_gpio_dataout(141, 1); */
++
++ omap_set_gpio_direction(TORNADO_GPIO_LED_RED, 0); /* out */
++ omap_set_gpio_direction(TORNADO_GPIO_LED_GREEN, 0); /* out */
++ omap_set_gpio_direction(TORNADO_GPIO_LED_BLUE, 0); /* out */
++ omap_set_gpio_direction(TORNADO_GPIO_KPLED, 0); /* out */
++
++ /* enable lpg1 and lpg2 */
++ omap_writel(omap_readl(OMAP730_MODE_1) | (3 << 28), OMAP730_MODE_1);
++
++ /* disable led activation */
++ LED_PM_REG = 0;
++ LED_BASE_REG = 0;
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_RED, 0);
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_GREEN, 0);
++ omap_set_gpio_dataout(TORNADO_GPIO_LED_BLUE, 0);
++ omap_set_gpio_dataout(TORNADO_GPIO_KPLED, 0);
++
++ printk("HTC Tornado led driver.\n");
++ return 0;
++}
++
++static void __exit
++tornado_leds_exit(void)
++{
++ misc_deregister(&tornado_leds_device);
++
++ /* disable lpg 1 and lpg2 */
++ omap_writel(omap_readl(OMAP730_MODE_1) & ~(3 << 28), OMAP730_MODE_1);
++ LED_BASE_REG = 0;
++ LED_PM_REG = 0;
++ omap_free_gpio(TORNADO_GPIO_LED_RED);
++ omap_free_gpio(TORNADO_GPIO_LED_GREEN);
++ omap_free_gpio(TORNADO_GPIO_LED_BLUE);
++ omap_free_gpio(TORNADO_GPIO_KPLED);
++}
++
++module_init(tornado_leds_init);
++module_exit(tornado_leds_exit);
++
++MODULE_AUTHOR("Nicolas Schichan");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.16/drivers/char/tornado-vibrator.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/drivers/char/tornado-vibrator.c 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,144 @@
++/*
++** tornado-vibrator.c for vibrator in /home/nico/work/tornado/linux-tornado
++**
++** Made by nico
++** Login <nico@chac.le-poulpe.net>
++**
++** Started on Mon Apr 10 15:21:27 2006 nico
++** Last update Thu May 25 13:44:23 2006 nico
++*/
++
++#include <linux/init.h>
++#include <linux/miscdevice.h>
++#include <linux/moduleparam.h>
++#include <linux/fs.h>
++#include <linux/bitops.h>
++
++#include <asm/arch/gpio.h>
++#include "tornado-vibrator.h"
++
++/*
++ *
++ * HTC Tornado vibrator driver.
++ * Copyright (C) 2006 Nicolas Schichan
++ *
++ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
++ * 02110-1301, USA.
++ *
++ */
++
++/*
++ * quite a simple driver: only put GPIO 34 in OUT mode and set it to 1
++ * to enable the vibrator or 0 to disable it.
++ */
++
++static long use;
++
++/*
++ * ensure only process opens the file, ad set GPIO direction to 0 (OUT)
++ */
++static int
++tornado_vibrator_open(struct inode *inode, struct file *file)
++{
++ if (test_and_set_bit(0, &use))
++ return -EBUSY;
++
++
++ /* out GPIO */
++ omap_set_gpio_direction(TORNADO_VIBRATOR_GPIO, 0);
++ return 0;
++}
++
++/*
++ * device ioctl handler. only VIBRATOR_ENABLE or VIBRATOR_DISABLE are
++ * recognized.
++ */
++static int
++tornado_vibrator_ioctl(struct inode *inode, struct file *file,
++ unsigned int cmd, unsigned long arg)
++{
++ switch (cmd) {
++ case VIBRATOR_ENABLE:
++ omap_set_gpio_dataout(TORNADO_VIBRATOR_GPIO, 1);
++ return 0;
++ case VIBRATOR_DISABLE:
++ omap_set_gpio_dataout(TORNADO_VIBRATOR_GPIO, 0);
++ return 0;
++ default:
++ return -EOPNOTSUPP;
++ }
++}
++
++/*
++ * set use variable to zero so that the next open on the file
++ * successes.
++ */
++static int
++tornado_vibrator_release(struct inode *inode, struct file *file)
++{
++ use = 0;
++ return 0;
++}
++
++struct file_operations tornado_vibrator_fops =
++{
++ .owner = THIS_MODULE,
++ .ioctl = tornado_vibrator_ioctl,
++ .open = tornado_vibrator_open,
++ .release = tornado_vibrator_release,
++};
++
++struct miscdevice tornado_vibrator_dev =
++{
++ .minor = VIBRATOR_MINOR,
++ .name = "tornado-vibrator",
++ .fops = &tornado_vibrator_fops,
++};
++
++/*
++ * make sure we can use the GPIO and register the device.
++ */
++static int __init
++tornado_vibrator_init(void)
++{
++ int ret;
++
++ if (omap_request_gpio(TORNADO_VIBRATOR_GPIO))
++ return -EBUSY;
++
++ ret = misc_register(&tornado_vibrator_dev);
++ if (ret)
++ return ret;
++
++ printk("HTC Tornado Vibrator driver.\n");
++ return 0;
++}
++
++/*
++ * deregister device and free the GPIO.
++ */
++static void __init
++tornado_vibrator_exit(void)
++{
++ misc_deregister(&tornado_vibrator_dev);
++ omap_set_gpio_dataout(TORNADO_VIBRATOR_GPIO, 0);
++ omap_free_gpio(TORNADO_VIBRATOR_GPIO);
++}
++
++module_init(tornado_vibrator_init);
++module_exit(tornado_vibrator_exit);
++
++MODULE_AUTHOR("Nicolas Schichan");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.16/drivers/char/tornado-vibrator.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/drivers/char/tornado-vibrator.h 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,44 @@
++/*
++** tornado-vibrator.h for vibrator in /home/nico/work/tornado/linux-tornado
++**
++** Made by nico
++** Login <nico@chac.le-poulpe.net>
++**
++** Started on Mon Apr 10 15:54:33 2006 nico
++** Last update Thu May 25 13:44:38 2006 nico
++*/
++
++/*
++ *
++ * HTC Tornado vibrator driver
++ * Copyright (C) 2006 Nicolas Schichan
++ *
++ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
++ * 02110-1301, USA.
++ *
++ */
++
++
++#ifndef __TORNADO_VIBRATOR
++# define __TORNADO_VIBRATOR
++
++# define VIBRATOR_ENABLE 0x42
++# define VIBRATOR_DISABLE 0x43
++
++# define VIBRATOR_MINOR 240
++
++# define TORNADO_VIBRATOR_GPIO 34
++
++#endif /* !__TORNADO_VIBRATOR */
+Index: linux-2.6.16/drivers/char/vt.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/vt.c 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/drivers/char/vt.c 2007-04-12 10:36:19.000000000 +0200
+@@ -2155,6 +2155,8 @@
+
+ #ifdef CONFIG_VT_CONSOLE
+
++extern int in_printk;
++
+ /*
+ * Console on virtual terminal
+ *
+@@ -2169,6 +2171,7 @@
+ const ushort *start;
+ ushort cnt = 0;
+ ushort myx;
++ unsigned char old_color = 0;
+
+ /* console busy or not yet initialized */
+ if (!printable || test_and_set_bit(0, &printing))
+@@ -2196,6 +2199,11 @@
+
+ start = (ushort *)vc->vc_pos;
+
++ if (in_printk) {
++ old_color = vc->vc_color;
++ vc->vc_color = 0x2;
++ update_attr(vc);
++ }
+ /* Contrived structure to try to emulate original need_wrap behaviour
+ * Problems caused when we have need_wrap set on '\n' character */
+ while (count--) {
+@@ -2242,6 +2250,10 @@
+ }
+ }
+ set_cursor(vc);
++ if (in_printk) {
++ vc->vc_color = old_color;
++ update_attr(vc);
++ }
+
+ quit:
+ clear_bit(0, &printing);
+Index: linux-2.6.16/drivers/char/watchdog/Kconfig
+===================================================================
+--- linux-2.6.16.orig/drivers/char/watchdog/Kconfig 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/drivers/char/watchdog/Kconfig 2007-04-12 10:36:19.000000000 +0200
+@@ -656,4 +656,10 @@
+ Support for TI OMAP1610/OMAP1710/OMAP2420 watchdog. Say 'Y' here to enable the
+ OMAP1610/OMAP1710 watchdog timer.
+
++config OMAP730_WATCHDOG
++ tristate "OMAP730/OMAP850 Watchdog"
++ depends on WATCHDOG && ARCH_OMAP730
++ help
++ Support for TI OMAP730/OMAP850 Watchdog.
++
+ endmenu
+Index: linux-2.6.16/drivers/char/watchdog/Makefile
+===================================================================
+--- linux-2.6.16.orig/drivers/char/watchdog/Makefile 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/drivers/char/watchdog/Makefile 2007-04-12 10:36:19.000000000 +0200
+@@ -28,6 +28,7 @@
+ obj-$(CONFIG_IXP2000_WATCHDOG) += ixp2000_wdt.o
+ obj-$(CONFIG_IXP4XX_WATCHDOG) += ixp4xx_wdt.o
+ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o
++obj-$(CONFIG_OMAP730_WATCHDOG) += omap730_wdt.o
+ obj-$(CONFIG_S3C2410_WATCHDOG) += s3c2410_wdt.o
+ obj-$(CONFIG_SA1100_WATCHDOG) += sa1100_wdt.o
+ obj-$(CONFIG_MPCORE_WATCHDOG) += mpcore_wdt.o
+Index: linux-2.6.16/drivers/char/watchdog/omap730_wdt.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/drivers/char/watchdog/omap730_wdt.c 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,225 @@
++/*
++** omap730_wdt.c for linux-typhoon/tornado in /home/nico/work/spvc500/linux-omap-typhoon
++**
++** Made by nico
++** Login <nico@chac.le-poulpe.net>
++**
++** Started on Thu Mar 16 14:42:35 2006 nico
++** Last update Thu May 11 13:56:24 2006 nico
++*/
++
++/*
++ *
++ * OMAP730 watchdog driver.
++ * Copyright (C) 2006 Nicolas Schichan
++ *
++ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
++ * 02110-1301, USA.
++ *
++ */
++
++/*
++ * based on omap_wdt.c.
++ */
++
++#include <linux/module.h>
++#include <linux/config.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <linux/fs.h>
++#include <linux/mm.h>
++#include <linux/miscdevice.h>
++#include <linux/watchdog.h>
++#include <linux/reboot.h>
++#include <linux/smp_lock.h>
++#include <linux/init.h>
++#include <linux/err.h>
++
++#include <asm/io.h>
++#include <asm/uaccess.h>
++#include <asm/hardware.h>
++#include <asm/bitops.h>
++/* #include <asm/hardware/clock.h> */
++
++#include <linux/moduleparam.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/delay.h>
++
++#define WDT_EN 0
++#define WDT_DISABLE_ON_CLOSE 1
++
++static unsigned long omap_wdt_users;
++static struct miscdevice omap_wdt_miscdev; /* Forward declaration */
++
++/*
++ * TRM says that the same value cannot be used to reinitialize the
++ * watchdog timer, so alternate 0xFFFF 0xFFFE.
++ */
++static void
++omap730_wdt_ping(void)
++{
++ static int mod = 0;
++
++ if (mod)
++ omap_writel(0xFFFF, OMAP_WDT_LOAD_TIM);
++ else
++ omap_writel(0xFFFE, OMAP_WDT_LOAD_TIM);
++
++ mod = (mod + 1) & 0x1;
++}
++
++static void
++omap730_wdt_enable(void)
++{
++ unsigned long wdt_ctl;
++ unsigned long arm_idlect2;
++
++ omap_writel(0x8000, OMAP_WDT_TIMER_MODE);
++ wdt_ctl = omap_readl(OMAP_WDT_TIMER);
++
++ arm_idlect2 = omap_readl(ARM_IDLECT2);
++ arm_idlect2 |= 0x1; /* enable watchdog clock */
++ omap_writel(arm_idlect2, ARM_IDLECT2);
++
++}
++
++static void
++omap730_wdt_disable(void)
++{
++ unsigned long arm_idlect2;
++
++ if ((omap_readl(OMAP_WDT_TIMER_MODE) & 0x8000) == 0x8000) {
++
++ arm_idlect2 = omap_readl(ARM_IDLECT2);
++ arm_idlect2 &= ~0x1; /* disable watchdog clock */
++ omap_writel(arm_idlect2, ARM_IDLECT2);
++
++ /*
++ * sequence required to disable watchdog. do not try
++ * to disable watchdog if timer is not active (see
++ * TRM).
++ */
++ omap_writel(0xF5, OMAP_WDT_TIMER_MODE);
++ omap_writel(0xA0, OMAP_WDT_TIMER_MODE);
++ }
++}
++
++/*
++ * Allow only one person to hold it open
++ */
++static int
++omap730_wdt_open(struct inode *inode, struct file *file)
++{
++ if (test_and_set_bit(WDT_EN, &omap_wdt_users))
++ return -EBUSY;
++
++ omap730_wdt_enable();
++ return 0;
++}
++
++static int
++omap730_wdt_release(struct inode *inode, struct file *file)
++{
++ if (omap_wdt_users && test_bit(WDT_DISABLE_ON_CLOSE, &omap_wdt_users)) {
++ printk("omap730_wdt: disabling watchdog.\n");
++ omap730_wdt_disable();
++ } else {
++ printk(KERN_CRIT "omap730_wdt: Unexpected close: watchdog still active !\n");
++ }
++ omap_wdt_users = 0;
++ return 0;
++}
++
++static ssize_t
++omap730_wdt_write(struct file *file, const char *data, size_t len, loff_t * ppos)
++{
++ if (len) {
++#ifndef CONFIG_WATCHDOG_NOWAYOUT
++ size_t i;
++
++ for (i = 0; i < len; ++i) {
++ char c;
++ if (get_user(c, data + i))
++ return -EFAULT;
++ if (c == 'V') {
++ printk("watchdog will be disabled on close.\n");
++ set_bit(WDT_DISABLE_ON_CLOSE, (unsigned long*)&omap_wdt_users);
++ }
++ }
++#endif
++ omap730_wdt_ping();
++ return 1;
++ }
++ return 0;
++}
++
++/*
++ * KISS: only support KEEPALIVE for now.
++ */
++static int
++omap730_wdt_ioctl(struct inode *inode, struct file *file,
++ unsigned int cmd, unsigned long arg)
++{
++ switch (cmd) {
++ case WDIOC_KEEPALIVE:
++ omap730_wdt_ping();
++ return 0;
++ default:
++ return -ENOIOCTLCMD;
++ }
++}
++
++static struct file_operations omap_wdt_fops = {
++ .owner = THIS_MODULE,
++ .write = omap730_wdt_write,
++ .ioctl = omap730_wdt_ioctl,
++ .open = omap730_wdt_open,
++ .release = omap730_wdt_release,
++};
++
++static struct miscdevice omap_wdt_miscdev = {
++ .minor = WATCHDOG_MINOR,
++ .name = "omap730_wdt",
++ .fops = &omap_wdt_fops
++};
++
++static int __init
++omap730_wdt_init(void)
++{
++ int ret;
++
++ ret = misc_register(&omap_wdt_miscdev);
++
++ if (ret)
++ return ret;
++
++ omap730_wdt_disable();
++ printk(KERN_INFO "TI OMAP Watchdog Timer for OMAP730\n");
++
++ return 0;
++}
++
++static void __exit
++omap730_wdt_exit(void)
++{
++ misc_deregister(&omap_wdt_miscdev);
++}
++
++module_init(omap730_wdt_init);
++module_exit(omap730_wdt_exit);
++
++MODULE_AUTHOR("Nicolas Schichan");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.16/drivers/input/keyboard/Kconfig
+===================================================================
+--- linux-2.6.16.orig/drivers/input/keyboard/Kconfig 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/drivers/input/keyboard/Kconfig 2007-04-12 10:36:19.000000000 +0200
+@@ -193,6 +193,13 @@
+ To compile this driver as a module, choose M here: the
+ module will be called omap-keypad.
+
++config TORNADO_KEYPAD
++ bool "HTC Tornado keypad support"
++ depends on MACH_TORNADO
++ help
++ Say y here if you want to use the keypad of your HTC Tornado
++ Phone.
++
+ config OMAP_PS2
+ tristate "TI OMAP Innovator 1510 PS/2 keyboard & mouse support"
+ depends on ARCH_OMAP15XX && MACH_OMAP_INNOVATOR
+Index: linux-2.6.16/drivers/input/keyboard/Makefile
+===================================================================
+--- linux-2.6.16.orig/drivers/input/keyboard/Makefile 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/drivers/input/keyboard/Makefile 2007-04-12 10:36:19.000000000 +0200
+@@ -16,4 +16,5 @@
+ obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o
+ obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
+ obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
++obj-$(CONFIG_TORNADO_KEYPAD) += tornado-keypad.o
+ obj-$(CONFIG_OMAP_PS2) += innovator_ps2.o
+Index: linux-2.6.16/drivers/input/keyboard/omap-keypad.c
+===================================================================
+--- linux-2.6.16.orig/drivers/input/keyboard/omap-keypad.c 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/drivers/input/keyboard/omap-keypad.c 2007-04-12 10:36:19.000000000 +0200
+@@ -43,7 +43,7 @@
+ #include <asm/mach-types.h>
+ #include <asm/arch/mux.h>
+
+-#undef NEW_BOARD_LEARNING_MODE
++#define NEW_BOARD_LEARNING_MODE
+
+ static void omap_kp_tasklet(unsigned long);
+ static void omap_kp_timer(unsigned long);
+@@ -292,6 +292,7 @@
+ struct omap_kp_platform_data *pdata = pdev->dev.platform_data;
+ int i;
+
++ printk("omap_kp_probe.\n");
+ if (!pdata->rows || !pdata->cols || !pdata->keymap) {
+ printk(KERN_ERR "No rows, cols or keymap from pdata\n");
+ return -EINVAL;
+Index: linux-2.6.16/drivers/input/keyboard/tornado-keypad.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/drivers/input/keyboard/tornado-keypad.c 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,463 @@
++/*
++** wizard-keypad.c for wizard-keypad in /home/nico/work/tornado/linux-tornado
++**
++** Made by nico
++** Login <nico@chac.le-poulpe.net>
++**
++** Started on Thu Apr 6 17:27:18 2006 nico
++** Last update Thu May 25 14:12:34 2006 nico
++*/
++
++/*
++ * HTC Tornado keypad driver.
++ * Copyright (C) 2006 Nicolas Schichan
++ *
++ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
++ * 02110-1301, USA.
++ *
++ */
++
++/*
++ * based on omap-keypad.c
++ */
++
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/interrupt.h>
++#include <linux/types.h>
++#include <linux/input.h>
++
++#include <asm/arch/gpio.h>
++#include <asm/arch/io.h>
++#include <asm/mach-types.h>
++#include <asm/delay.h>
++
++#undef DEBUG
++// #define DEBUG
++
++struct input_dev *tornado_kp_dev = NULL;
++
++static unsigned char kp_state[8];
++static void tornado_kp_tasklet(unsigned long);
++static void tornado_kp_gpio_tasklet(unsigned long);
++static DECLARE_TASKLET_DISABLED(kp_tasklet, tornado_kp_tasklet, 0);
++static DECLARE_TASKLET_DISABLED(kp_gpio_tasklet, tornado_kp_gpio_tasklet, 0);
++static struct timer_list kp_timer;
++static struct timer_list kp_gpio_timer;
++
++unsigned int gpio_mask = 0;
++unsigned int kp_gpio = 0;
++
++#define TORNADO_KP_GPIO 76
++
++/*
++ * key tables. a bit more complex than those in the omap-keypad
++ * driver: HTC devices keys events tends to trigger two or more
++ * row/col.
++ */
++struct htc_key
++{
++ /*
++ * input key constant as defined in input.h
++ */
++ int key;
++ /* rc stands for row/col
++ * 2 * k -> col;
++ * 2 * k + 1-> row
++ */
++ char rc[6];
++};
++
++struct gpio_key
++{
++ int key;
++ unsigned int mask;
++};
++
++static struct htc_key *htc_keys = NULL;
++static unsigned int htc_keys_size = 0;
++static struct gpio_key *gpio_keys = 0;
++static unsigned int gpio_keys_size= 0;
++
++
++/*
++ * Tornado stuff ...
++ */
++static struct htc_key tornado_keys[] =
++{
++ /* misc keys below the screen */
++ { KEY_F3, { 1,3 } }, /* SK1 */
++ { KEY_BACKSPACE, { 4,3 } },
++ { KEY_HOME, { 3,3 } },
++ { KEY_F4, { 2,3 } }, /* SK2 */
++ { KEY_F5, { 3,5 } }, /* compose */
++ { KEY_ESC, { 4,5 } }, /* hangup */
++
++ /* digit keys */
++ { KEY_1, { 1,0 } },
++ { KEY_2, { 2,0 } },
++ { KEY_3, { 3,0 } },
++ { KEY_4, { 4,0 } },
++ { KEY_5, { 1,1 } },
++ { KEY_6, { 2,1 } },
++ { KEY_7, { 3,1 } },
++ { KEY_8, { 4,1 } },
++ { KEY_9, { 1,2 } },
++ { KEY_0, { 2,2 } },
++ { KEY_KPASTERISK, { 3,2 } },
++ { KEY_SPACE, { 4,2 } },
++
++ /* side buttons: currently bogus */
++/* { KEY_CAMERA, { 5,6, 6,6 } }, */
++/* { KEY_VOLUMEUP, { 4,6, 5,6 } }, */
++/* { KEY_VOLUMEDOWN, { 7,6, 6,6 } }, */
++/* { KEY_FAVORITES, { 2,6, 3,6 } } */
++
++ /* add side keys: photo, volume, ...*/
++
++};
++
++static struct gpio_key tornado_gpio_keys[] =
++{
++ { KEY_ENTER, 0x1 },
++ { KEY_LEFT, 0x19 },
++ { KEY_RIGHT, 0x7 },
++ { KEY_UP, 0x15 },
++ { KEY_DOWN, 0xB },
++};
++
++/*
++ * handy macros for kp register manipulation
++ */
++# define KBD_MASKIT __REG16((long)OMAP_MPUIO_BASE + OMAP_MPUIO_KBD_MASKIT)
++# define KBC __REG16((long)OMAP_MPUIO_BASE + OMAP_MPUIO_KBC)
++# define KBR_LATCH __REG16((long)OMAP_MPUIO_BASE + OMAP_MPUIO_KBR_LATCH)
++
++/*
++ * return the key code understood by input_report_key
++ */
++static int
++tornado_find_key(unsigned char *new_state, unsigned int *key_state)
++{
++ int i;
++ unsigned char changed;
++
++ /* scan normal keypad keys*/
++ for (i = 0; i < htc_keys_size; ++i) {
++ struct htc_key *wk = &htc_keys[i];
++ int j;
++ int pressed = 0;
++
++ for (j = 0; j < 3; ++j) {
++ int col;
++ int row;
++
++ col = wk->rc[2 * j];
++ row = wk->rc[2 * j + 1];
++
++
++ /* end of key list reached: OK */
++ if (row == 0 && col == 0) {
++ goto ok;
++ }
++
++ changed = new_state[col] ^ kp_state[col];
++ pressed |= new_state[col] & (1 << row);
++
++
++ /* if state of the row/col has not changed, try another key */
++ if ( (changed & (1 << row)) == 0) {
++ break ;
++ }
++
++ if (j == 2) {
++ ok:
++ /*
++ * all events have been scanned for
++ * this key: we found it !
++ */
++ *key_state = pressed;
++ return wk->key;
++ }
++ }
++ }
++ return -1;
++}
++
++/*
++ * read row and col register and update the state array.
++ */
++static void
++tornado_scan_keypad(unsigned char *state)
++{
++ unsigned int col;
++
++ /* scan MPUIO keypad keys */
++ KBC = 0xFF;
++ for (col = 0; col < 8; ++col) {
++ KBC = ~(1 << col) & 0xFF;
++ udelay(4);
++ state[col] = ~(KBR_LATCH) & 0xFF;
++ }
++ KBC = 0x00;
++
++ udelay(2);
++}
++
++/*
++ * returns 1 if a key was pressed or 0 if a key was released.
++ */
++static int
++tornado_key_pressed(unsigned char *state)
++{
++ unsigned int col;
++ int key_down = 0;
++
++ for (col = 0; col < 8; ++col) {
++#ifdef DEBUG
++ unsigned char changed;
++ unsigned int row;
++
++ changed = kp_state[col] ^ state[col];
++
++ for (row = 0; row < 8; ++row) {
++ unsigned int pressed;
++
++ pressed = state[col] & (1 << row);
++ if (changed & (1 << row)) {
++ printk("key down: %i-%i: %s\n", col, row, pressed ? "pressed" : "released");
++ }
++
++ }
++#endif
++ key_down |= state[col];
++ }
++
++ return key_down;
++}
++
++/*
++ * the real work is done here: at the end, if a key is pressed, keep
++ * kp interrupt masked and schedule a call to the tasklet after a bit
++ * (mod_timer ...). this is done to avoid the trigger of too much kp
++ * interrupts .
++ */
++static void
++tornado_kp_tasklet(unsigned long param)
++{
++ unsigned char state[8];
++ int key_down;
++ int pressed = 0;
++ int key;
++
++ tornado_scan_keypad(state);
++ key_down = tornado_key_pressed(state);
++
++ key = tornado_find_key(state, &pressed);
++ if (key != -1) {
++
++ input_report_key(tornado_kp_dev, key, pressed);
++ }
++
++ memcpy(kp_state, state, sizeof (kp_state));
++
++ if (key_down) {
++ /*
++ * if a key is down, poll the keypad and keep irq
++ * disabled
++ */
++ int delay = HZ / 20;
++
++ mod_timer(&kp_timer, jiffies + delay);
++ } else
++ KBD_MASKIT = 0;
++}
++
++static void
++tornado_kp_timer(unsigned long data)
++{
++ tasklet_schedule(&kp_tasklet);
++}
++
++/*
++ * nothing is done here: disable KP interrupts and schedule a call to
++ * tornado_kp_tasklet.
++ */
++static irqreturn_t
++tornado_kp_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ /* disable keypad interrupts and schedule the tasklet */
++ KBD_MASKIT = 1;
++ tasklet_schedule(&kp_tasklet);
++
++ return IRQ_HANDLED;
++}
++
++static void
++tornado_kp_gpio_tasklet(unsigned long param)
++{
++ unsigned int mask;
++ unsigned int changed;
++ unsigned int pressed;
++ static int old_key = 0;
++ int key;
++ int i;
++
++
++ /* GPIO are active low ! */
++ mask = !omap_get_gpio_datain(76);
++ mask |= !omap_get_gpio_datain(80) << 1;
++ mask |= !omap_get_gpio_datain(81) << 2;
++ mask |= !omap_get_gpio_datain(82) << 3;
++ mask |= !omap_get_gpio_datain(83) << 4;
++
++ pressed = mask & 0x1;
++
++
++ changed = mask ^ gpio_mask;
++ if (changed == 0)
++ goto end;
++
++ if (pressed == 0)
++ key = 0;
++ else {
++ key = 0;
++ for (i = 0; i < 5; ++i) {
++ if (gpio_keys[i].mask == mask) {
++ key = gpio_keys[i].key;
++ break;
++ }
++ }
++ }
++
++ if (key != old_key) {
++ if (old_key)
++ input_report_key(tornado_kp_dev, old_key, 0);
++ if (key)
++ input_report_key(tornado_kp_dev, key, 1);
++ old_key = key;
++ }
++
++ gpio_mask = mask;
++
++ end:
++ if (pressed) {
++ int delay = HZ / 20;
++ mod_timer(&kp_gpio_timer, jiffies + delay);
++ } else {
++ enable_irq(OMAP_GPIO_IRQ(kp_gpio));
++ }
++}
++
++static irqreturn_t
++tornado_kp_gpio_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ disable_irq(OMAP_GPIO_IRQ(kp_gpio));
++ tasklet_schedule(&kp_gpio_tasklet);
++ return IRQ_HANDLED;
++}
++
++static void
++tornado_kp_gpio_timer(unsigned long data)
++{
++ tasklet_schedule(&kp_gpio_tasklet);
++}
++
++static int __init
++tornado_kp_init(void)
++{
++ unsigned int i;
++
++ printk("HTC Tornado Keypad Driver.\n");
++
++ KBD_MASKIT = 1;
++
++ /* select key tables */
++ if (machine_is_htc_tornado()) {
++ htc_keys = tornado_keys;
++ htc_keys_size = ARRAY_SIZE(tornado_keys);
++ gpio_keys = tornado_gpio_keys;
++ gpio_keys_size = ARRAY_SIZE(tornado_gpio_keys);
++ kp_gpio = TORNADO_KP_GPIO;
++
++ printk("Using HTC Tornado keymap.\n");
++ } else {
++ printk("machine is unknown: not loading driver.\n");
++ return -EINVAL;
++ }
++
++ tornado_kp_dev = input_allocate_device();
++ if (tornado_kp_dev == NULL) {
++ printk("unable to allocate tornado_kp_dev.\n");
++ return -ENOMEM;
++ }
++ tornado_kp_dev->name = "tornado-keypad";
++
++
++ init_timer(&kp_timer);
++ kp_timer.function = tornado_kp_timer;
++ tasklet_enable(&kp_tasklet);
++ if (request_irq(INT_730_MPUIO_KEYPAD, tornado_kp_interrupt, 0, "tornado-keypad", 0)) {
++ printk("unable to get IRQ for tornado-keypad.\n");
++ return -EBUSY;
++ }
++
++ set_bit(EV_KEY, tornado_kp_dev->evbit);
++ for (i = 0; i < KEY_MAX; ++i) {
++ set_bit(i, tornado_kp_dev->keybit);
++ }
++ input_register_device(tornado_kp_dev);
++
++ if (kp_gpio) {
++ /* request arrow keys GPIOS */
++ if (omap_request_gpio(kp_gpio) < 0) {
++ printk("unable to request GPIO %i\n", 76);
++ return -EBUSY;
++ }
++ /* set gpio mode to IN for all kp gpios */
++ omap_set_gpio_direction(kp_gpio, 1);
++ omap_set_gpio_direction(80, 1);
++ omap_set_gpio_direction(81, 1);
++ omap_set_gpio_direction(82, 1);
++ omap_set_gpio_direction(83, 1);
++
++ init_timer(&kp_gpio_timer);
++ kp_gpio_timer.function = tornado_kp_gpio_timer;
++ tasklet_enable(&kp_gpio_tasklet);
++
++ /* be notified when keys are pressed */
++ if (request_irq(OMAP_GPIO_IRQ(kp_gpio), tornado_kp_gpio_interrupt, SA_TRIGGER_FALLING, "tornado-kp-gpio", 0)) {
++ printk("unable to request GPIO IRQ %i\n", 76);
++ return -EBUSY;
++ }
++ }
++
++ tornado_scan_keypad(kp_state);
++ KBD_MASKIT = 0;
++ return 0;
++}
++
++void __exit
++tornado_kp_exit(void)
++{
++ KBD_MASKIT = 1;
++}
++
++module_init(tornado_kp_init);
++module_exit(tornado_kp_exit);
++
++MODULE_AUTHOR("Nicolas Schichan <nico@chac.le-poulpe.net>");
++MODULE_LICENSE("GPL");
++MODULE_DESCRIPTION("HTC Tornado Keypad Driver");
+Index: linux-2.6.16/drivers/mmc/omap.c
+===================================================================
+--- linux-2.6.16.orig/drivers/mmc/omap.c 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/drivers/mmc/omap.c 2007-04-12 10:36:19.000000000 +0200
+@@ -160,10 +160,10 @@
+ u32 resptype;
+ u32 cmdtype;
+
+- pr_debug("MMC%d: CMD%d, argument 0x%08x%s%s%s%s\n",
++ pr_debug("MMC%d: CMD%d, argument 0x%08x%s%s\n",
+ host->id, cmd->opcode, cmd->arg,
+- (cmd->flags & MMC_RSP_SHORT) ? ", 32-bit response" : "",
+- (cmd->flags & MMC_RSP_LONG) ? ", 128-bit response" : "",
++/* (cmd->flags & MMC_RSP_SHORT) ? ", 32-bit response" : "", */
++/* (cmd->flags & MMC_RSP_LONG) ? ", 128-bit response" : "", */
+ (cmd->flags & MMC_RSP_CRC) ? ", CRC" : "",
+ (cmd->flags & MMC_RSP_BUSY) ? ", busy notification" : "");
+
+Index: linux-2.6.16/drivers/mmc/omap.h
+===================================================================
+--- linux-2.6.16.orig/drivers/mmc/omap.h 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/drivers/mmc/omap.h 2007-04-12 10:36:19.000000000 +0200
+@@ -1,31 +1,66 @@
+ #ifndef DRIVERS_MEDIA_MMC_OMAP_H
+ #define DRIVERS_MEDIA_MMC_OMAP_H
+
+-#define OMAP_MMC_REG_CMD 0x00
+-#define OMAP_MMC_REG_ARGL 0x04
+-#define OMAP_MMC_REG_ARGH 0x08
+-#define OMAP_MMC_REG_CON 0x0c
+-#define OMAP_MMC_REG_STAT 0x10
+-#define OMAP_MMC_REG_IE 0x14
+-#define OMAP_MMC_REG_CTO 0x18
+-#define OMAP_MMC_REG_DTO 0x1c
+-#define OMAP_MMC_REG_DATA 0x20
+-#define OMAP_MMC_REG_BLEN 0x24
+-#define OMAP_MMC_REG_NBLK 0x28
+-#define OMAP_MMC_REG_BUF 0x2c
+-#define OMAP_MMC_REG_SDIO 0x34
+-#define OMAP_MMC_REG_REV 0x3c
+-#define OMAP_MMC_REG_RSP0 0x40
+-#define OMAP_MMC_REG_RSP1 0x44
+-#define OMAP_MMC_REG_RSP2 0x48
+-#define OMAP_MMC_REG_RSP3 0x4c
+-#define OMAP_MMC_REG_RSP4 0x50
+-#define OMAP_MMC_REG_RSP5 0x54
+-#define OMAP_MMC_REG_RSP6 0x58
+-#define OMAP_MMC_REG_RSP7 0x5c
+-#define OMAP_MMC_REG_IOSR 0x60
+-#define OMAP_MMC_REG_SYSC 0x64
+-#define OMAP_MMC_REG_SYSS 0x68
++#ifdef CONFIG_ARCH_OMAP730
++/*
++ * unlike other omap architectures, omap730 has 16bits MMC register
++ * offsets ...
++ */
++# define OMAP_MMC_REG_CMD 0x00
++# define OMAP_MMC_REG_ARGL 0x02
++# define OMAP_MMC_REG_ARGH 0x04
++# define OMAP_MMC_REG_CON 0x06
++# define OMAP_MMC_REG_STAT 0x08
++# define OMAP_MMC_REG_IE 0x0a
++# define OMAP_MMC_REG_CTO 0x0c
++# define OMAP_MMC_REG_DTO 0x0e
++# define OMAP_MMC_REG_DATA 0x10
++# define OMAP_MMC_REG_BLEN 0x12
++# define OMAP_MMC_REG_NBLK 0x14
++# define OMAP_MMC_REG_BUF 0x16
++# define OMAP_MMC_REG_SDIO 0x1a
++# define OMAP_MMC_REG_REV 0x1e
++# define OMAP_MMC_REG_RSP0 0x20
++# define OMAP_MMC_REG_RSP1 0x22
++# define OMAP_MMC_REG_RSP2 0x24
++# define OMAP_MMC_REG_RSP3 0x26
++# define OMAP_MMC_REG_RSP4 0x28
++# define OMAP_MMC_REG_RSP5 0x2a
++# define OMAP_MMC_REG_RSP6 0x2c
++# define OMAP_MMC_REG_RSP7 0x2e
++# define OMAP_MMC_REG_IOSR 0x30
++# define OMAP_MMC_REG_SYSC 0x32
++# define OMAP_MMC_REG_SYSS 0x34
++
++#else
++
++# define OMAP_MMC_REG_CMD 0x00
++# define OMAP_MMC_REG_ARGL 0x04
++# define OMAP_MMC_REG_ARGH 0x08
++# define OMAP_MMC_REG_CON 0x0c
++# define OMAP_MMC_REG_STAT 0x10
++# define OMAP_MMC_REG_IE 0x14
++# define OMAP_MMC_REG_CTO 0x18
++# define OMAP_MMC_REG_DTO 0x1c
++# define OMAP_MMC_REG_DATA 0x20
++# define OMAP_MMC_REG_BLEN 0x24
++# define OMAP_MMC_REG_NBLK 0x28
++# define OMAP_MMC_REG_BUF 0x2c
++# define OMAP_MMC_REG_SDIO 0x34
++# define OMAP_MMC_REG_REV 0x3c
++# define OMAP_MMC_REG_RSP0 0x40
++# define OMAP_MMC_REG_RSP1 0x44
++# define OMAP_MMC_REG_RSP2 0x48
++# define OMAP_MMC_REG_RSP3 0x4c
++# define OMAP_MMC_REG_RSP4 0x50
++# define OMAP_MMC_REG_RSP5 0x54
++# define OMAP_MMC_REG_RSP6 0x58
++# define OMAP_MMC_REG_RSP7 0x5c
++# define OMAP_MMC_REG_IOSR 0x60
++# define OMAP_MMC_REG_SYSC 0x64
++# define OMAP_MMC_REG_SYSS 0x68
++
++#endif
+
+ #define OMAP_MMC_STAT_CARD_ERR (1 << 14)
+ #define OMAP_MMC_STAT_CARD_IRQ (1 << 13)
+Index: linux-2.6.16/drivers/usb/gadget/omap_udc.c
+===================================================================
+--- linux-2.6.16.orig/drivers/usb/gadget/omap_udc.c 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/drivers/usb/gadget/omap_udc.c 2007-04-12 10:36:19.000000000 +0200
+@@ -60,7 +60,7 @@
+ #undef USB_TRACE
+
+ /* bulk DMA seems to be behaving for both IN and OUT */
+-#define USE_DMA
++/* #define USE_DMA */
+
+ /* ISO too */
+ #define USE_ISO
+@@ -2147,7 +2147,8 @@
+ /* boards that don't have VBUS sensing can't autogate 48MHz;
+ * can't enter deep sleep while a gadget driver is active.
+ */
+- if (machine_is_omap_innovator() || machine_is_omap_osk())
++ if (machine_is_omap_innovator() || machine_is_omap_osk() ||
++ machine_is_htc_tornado())
+ omap_vbus_session(&udc->gadget, 1);
+
+ done:
+@@ -2170,7 +2171,8 @@
+ if (udc->dc_clk != NULL)
+ omap_udc_enable_clock(1);
+
+- if (machine_is_omap_innovator() || machine_is_omap_osk())
++ if (machine_is_omap_innovator() || machine_is_omap_osk() ||
++ machine_is_htc_tornado())
+ omap_vbus_session(&udc->gadget, 0);
+
+ if (udc->transceiver)
+Index: linux-2.6.16/drivers/video/backlight/Kconfig
+===================================================================
+--- linux-2.6.16.orig/drivers/video/backlight/Kconfig 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/drivers/video/backlight/Kconfig 2007-04-12 10:36:19.000000000 +0200
+@@ -58,3 +58,10 @@
+ If you have a HP Jornada 680, say y to enable the
+ backlight driver.
+
++
++config BACKLIGHT_TORNADO
++ tristate "HTC Tornado Backlight Driver."
++ depends on BACKLIGHT_DEVICE && MACH_TORNADO
++ default y
++ help
++ Backlight driver for the HTC Tornado smartphones.
+Index: linux-2.6.16/drivers/video/backlight/Makefile
+===================================================================
+--- linux-2.6.16.orig/drivers/video/backlight/Makefile 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/drivers/video/backlight/Makefile 2007-04-12 10:36:19.000000000 +0200
+@@ -5,3 +5,4 @@
+ obj-$(CONFIG_BACKLIGHT_CORGI) += corgi_bl.o
+ obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o
+ obj-$(CONFIG_SHARP_LOCOMO) += locomolcd.o
++obj-$(CONFIG_BACKLIGHT_TORNADO) += tornado-bl.o
+\ No newline at end of file
+Index: linux-2.6.16/drivers/video/backlight/tornado-bl.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/drivers/video/backlight/tornado-bl.c 2007-04-12 10:36:19.000000000 +0200
+@@ -0,0 +1,224 @@
++/*
++** tornado-bl.c for bl in /home/nico/work/tornado/linux-tornado
++**
++** Made by nico
++** Login <nico@chac.le-poulpe.net>
++**
++** Started on Wed Apr 12 16:53:40 2006 nico
++** Last update Thu May 25 13:53:14 2006 nico
++*/
++
++/*
++ *
++ * HTC Tornado & Typhoon backlight driver.
++ * Copyright (C) 2006 Nicolas Schichan
++ *
++ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
++ * 02110-1301, USA.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/device.h>
++#include <linux/spinlock.h>
++#include <linux/fb.h>
++#include <linux/backlight.h>
++#include <linux/platform_device.h>
++
++#include <asm/mach-types.h>
++#include <asm/arch/gpio.h>
++#include <linux/delay.h>
++
++#define TORNADO_LCD_RESET_GPIO 15
++#define TORNADO_LCD_OUT_EN_GPIO 77
++#define TORNADO_LCD_POWER_GPIO 121
++#define TORNADO_BL_GPIO 126
++#define TORNADO_LCD_INTENSITY_GPIO 124
++#define TORNADO_LCD_CLOCK_GPIO 127
++
++static int tornado_bl_powermode = FB_BLANK_UNBLANK;
++static int current_intensity = 1;
++
++
++/*
++ * TODO: see TRM to disable also the internal lcd clock and reenable
++ * it when needed.
++ */
++static int
++tornado_bl_set_power(struct backlight_device *bd, int state)
++{
++ if (state == tornado_bl_powermode)
++ return 0;
++ switch (state) {
++ case FB_BLANK_NORMAL:
++ case FB_BLANK_VSYNC_SUSPEND:
++ case FB_BLANK_HSYNC_SUSPEND:
++ case FB_BLANK_POWERDOWN:
++ omap_set_gpio_dataout(TORNADO_BL_GPIO, 0);
++ omap_set_gpio_dataout(TORNADO_LCD_CLOCK_GPIO, 0);
++ omap_set_gpio_dataout(TORNADO_LCD_INTENSITY_GPIO, 0);
++
++ omap_set_gpio_dataout(TORNADO_LCD_OUT_EN_GPIO, 0);
++ omap_set_gpio_dataout(TORNADO_LCD_RESET_GPIO, 0);
++ omap_set_gpio_dataout(TORNADO_LCD_POWER_GPIO, 0);
++ break;
++
++ case FB_BLANK_UNBLANK:
++ omap_set_gpio_dataout(TORNADO_LCD_POWER_GPIO, 1);
++ omap_set_gpio_dataout(TORNADO_LCD_RESET_GPIO, 1);
++ omap_set_gpio_dataout(TORNADO_LCD_OUT_EN_GPIO, 1);
++
++ omap_set_gpio_dataout(TORNADO_LCD_CLOCK_GPIO, 1);
++ /* restore previous lcd intensity */
++ omap_set_gpio_dataout(TORNADO_LCD_INTENSITY_GPIO, current_intensity);
++ /*
++ * need to sleep a little bit to allow lcd clock to
++ * resume completly. avoids a white flickering screen
++ * that would otherwise be visible for a few
++ * milliseconds.
++ *
++ * we use schedule timoueout here to allow any process
++ * that might want to use the CPU to run. this should
++ * not be a problem here.
++ */
++ schedule_timeout_interruptible(10);
++ omap_set_gpio_dataout(TORNADO_BL_GPIO, 1);
++ break;
++ }
++ tornado_bl_powermode = state;
++ return 0;
++}
++
++static int
++tornado_bl_get_power(struct backlight_device *bd)
++{
++ return tornado_bl_powermode;
++}
++
++static int
++tornado_bl_get_intensity(struct backlight_device *bd)
++{
++ return current_intensity;
++}
++
++static int
++tornado_bl_set_intensity(struct backlight_device *bd, int intensity)
++{
++ if (intensity < 0)
++ intensity = 0;
++ if (intensity > 1)
++ intensity = 1;
++ omap_set_gpio_dataout(TORNADO_LCD_INTENSITY_GPIO, intensity);
++ current_intensity = intensity;
++
++ return 0;
++}
++
++static struct backlight_properties tornado_bl = {
++ .owner = THIS_MODULE,
++ .get_power = tornado_bl_get_power,
++ .max_brightness = 1,
++ .set_power = tornado_bl_set_power,
++ .set_brightness = tornado_bl_set_intensity,
++ .get_brightness = tornado_bl_get_intensity,
++};
++
++static struct backlight_device *tornado_backlight_device;
++
++static int __init
++tornado_bl_probe(struct device *dev)
++{
++ tornado_backlight_device = backlight_device_register("tornado-bl", NULL, &tornado_bl);
++ if (IS_ERR(tornado_backlight_device))
++ return PTR_ERR(tornado_backlight_device);
++ return 0;
++}
++
++static int __init
++tornado_bl_remove(struct device *dev)
++{
++ printk("deregistering tornado-bl device.\n");
++ backlight_device_unregister(tornado_backlight_device);
++ return 0;
++}
++
++static struct device_driver tornado_bl_driver = {
++ .name = "tornado-bl",
++ .bus = &platform_bus_type,
++ .probe = tornado_bl_probe,
++ .remove = tornado_bl_remove,
++ .suspend = NULL,
++ .resume = NULL,
++};
++
++static struct platform_device tornado_bl_device = {
++ .name = "tornado-bl",
++ .id = -1,
++};
++
++
++static int __init
++tornado_bl_init(void)
++{
++ int ret;
++
++ omap_request_gpio(TORNADO_LCD_RESET_GPIO);
++ omap_request_gpio(TORNADO_LCD_OUT_EN_GPIO);
++ omap_request_gpio(TORNADO_LCD_POWER_GPIO);
++ omap_request_gpio(TORNADO_BL_GPIO);
++ omap_request_gpio(TORNADO_LCD_INTENSITY_GPIO);
++ omap_request_gpio(TORNADO_LCD_CLOCK_GPIO);
++
++ ret = driver_register(&tornado_bl_driver);
++ if (ret)
++ goto error;
++
++ ret = platform_device_register(&tornado_bl_device);
++ if (ret)
++ goto error;
++
++ omap_set_gpio_direction(TORNADO_BL_GPIO, 0); /* out */
++ printk("HTC Tornado Backlight driver.\n");
++ return 0;
++
++ error:
++ platform_device_unregister(&tornado_bl_device);
++ driver_unregister(&tornado_bl_driver);
++ omap_free_gpio(TORNADO_BL_GPIO);
++ return ret;
++}
++
++static void __exit
++tornado_bl_exit(void)
++{
++ /* FIXME: this freezes the system when unloading ... */
++ platform_device_unregister(&tornado_bl_device);
++ driver_unregister(&tornado_bl_driver);
++ omap_request_gpio(TORNADO_LCD_RESET_GPIO);
++ omap_request_gpio(TORNADO_LCD_OUT_EN_GPIO);
++ omap_request_gpio(TORNADO_LCD_POWER_GPIO);
++ omap_request_gpio(TORNADO_BL_GPIO);
++ omap_request_gpio(TORNADO_LCD_INTENSITY_GPIO);
++ omap_request_gpio(TORNADO_LCD_CLOCK_GPIO);
++}
++
++module_init(tornado_bl_init);
++module_exit(tornado_bl_exit);
++
++MODULE_AUTHOR("Nicolas Schichan");
++MODULE_DESCRIPTION("HTC Tornado LCD Backlight driver.");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.16/drivers/video/Kconfig
+===================================================================
+--- linux-2.6.16.orig/drivers/video/Kconfig 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/drivers/video/Kconfig 2007-04-12 10:36:19.000000000 +0200
+@@ -1428,6 +1428,16 @@
+
+ source "drivers/video/omap/Kconfig"
+
++config FB_VSFB
++ bool "VSFB for HTC OMAP based phones"
++ depends on FB && MACH_TORNADO
++ select FB_CFB_FILLRECT
++ select FB_CFB_COPYAREA
++ select FB_CFB_IMAGEBLIT
++ help
++ Hacked version of the original VSFB for HTC based OMAP
++ smartphones (320x240 screen and vram at 0x20001020).
++
+ config FB_VIRTUAL
+ tristate "Virtual Frame Buffer support (ONLY FOR TESTING!)"
+ depends on FB
+Index: linux-2.6.16/drivers/video/logo/Kconfig
+===================================================================
+--- linux-2.6.16.orig/drivers/video/logo/Kconfig 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/drivers/video/logo/Kconfig 2007-04-12 10:36:20.000000000 +0200
+@@ -71,4 +71,3 @@
+ default y
+
+ endmenu
+-
+Index: linux-2.6.16/drivers/video/logo/logo.c
+===================================================================
+--- linux-2.6.16.orig/drivers/video/logo/logo.c 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/drivers/video/logo/logo.c 2007-04-12 10:36:20.000000000 +0200
+@@ -35,7 +35,6 @@
+ extern const struct linux_logo logo_superh_clut224;
+ extern const struct linux_logo logo_m32r_clut224;
+
+-
+ const struct linux_logo *fb_find_logo(int depth)
+ {
+ const struct linux_logo *logo = NULL;
+@@ -102,6 +101,7 @@
+ /* M32R Linux logo */
+ logo = &logo_m32r_clut224;
+ #endif
++
+ }
+ return logo;
+ }
+Index: linux-2.6.16/drivers/video/Makefile
+===================================================================
+--- linux-2.6.16.orig/drivers/video/Makefile 2007-04-12 10:36:07.000000000 +0200
++++ linux-2.6.16/drivers/video/Makefile 2007-04-12 10:36:20.000000000 +0200
+@@ -100,6 +100,7 @@
+ obj-$(CONFIG_FB_VGA16) += vga16fb.o vgastate.o
+ obj-$(CONFIG_FB_OF) += offb.o
+ obj-$(CONFIG_FB_OMAP) += omap/ cfbcopyarea.o cfbfillrect.o cfbimgblt.o
++obj-$(CONFIG_FB_VSFB) += vsfb.o
+
+ # the test framebuffer is last
+ obj-$(CONFIG_FB_VIRTUAL) += vfb.o
+Index: linux-2.6.16/drivers/video/vsfb.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/drivers/video/vsfb.c 2007-04-12 10:36:20.000000000 +0200
+@@ -0,0 +1,187 @@
++/*
++ * linux/drivers/video/vsfb.c
++ *
++ * Copyright (C) 2003 Ian Molton
++ *
++ * Based on acornfb by Russell King
++ *
++ * 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.
++ *
++ * Frame buffer code for Simple platforms
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/sched.h>
++#include <linux/errno.h>
++#include <linux/string.h>
++#include <linux/ctype.h>
++#include <linux/mm.h>
++#include <linux/tty.h>
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/fb.h>
++#include <linux/ioport.h>
++
++#include <asm/hardware.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++#include <asm/mach-types.h>
++#include <asm/uaccess.h>
++
++#include <linux/config.h>
++
++#undef FBCON_HAS_CFB8
++#undef FBCON_HAS_CFB2
++#undef FBCON_HAS_CFB4
++#undef FBCON_HAS_CFB32
++
++/* for screen geometry information */
++#include <asm/arch/efb.h>
++
++#define DEFAULT_BPP 16
++#define SCREEN_BASE (0x20001020)
++
++static struct fb_info fb_info;
++static u32 colreg[17]; // Copied from other driver - but is 17 correct?
++
++
++static int
++vsfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
++ u_int trans, struct fb_info *info)
++{
++ if (regno > 16)
++ return 1;
++
++ ((u32 *)(info->pseudo_palette))[regno] = (red & 0xf800) | ((green & 0xfc00) >> 5) | ((blue & 0xf800) >> 11);
++
++ return 0;
++}
++
++/* extern int soft_cursor(struct fb_info *info, struct fb_cursor *cursor); */
++
++static struct fb_ops vsfb_ops = {
++ .owner = THIS_MODULE,
++ .fb_setcolreg = vsfb_setcolreg,
++ .fb_fillrect = cfb_fillrect,
++ .fb_copyarea = cfb_copyarea,
++ .fb_imageblit = cfb_imageblit,
++ .fb_cursor = NULL,
++};
++
++/*
++ * some members are initialized with 0: they will be properly
++ * initialized at run time, depending on the machine we are running
++ * on.
++ */
++static struct fb_var_screeninfo vsfb_var = {
++ .xres = 0,
++ .yres = 0,
++ .xres_virtual = 0,
++ .yres_virtual = 0,
++ .bits_per_pixel = 16,
++ .red = { 11, 5, 0 },
++ .green = { 5, 6, 0 },
++ .blue = { 0, 5, 0 },
++ .activate = FB_ACTIVATE_NOW,
++ .height = -1,
++ .width = -1,
++ .vmode = FB_VMODE_NONINTERLACED,
++ .pixclock = 12500, /* same as pixclock as P2 frame buffer driver. */
++};
++
++static struct fb_fix_screeninfo vsfb_fix = {
++ .id = "HTC VSFB",
++ .smem_start = SCREEN_BASE,
++ .smem_len = 0,
++ .type = FB_TYPE_PACKED_PIXELS,
++ .visual = FB_VISUAL_TRUECOLOR,
++ .line_length = 0,
++ .accel = FB_ACCEL_NONE,
++};
++
++#define OMAP_LCDC_BASE 0xfffec000
++#define OMAP_LCDC_CONTROL (OMAP_LCDC_BASE + 0x00)
++#define OMAP_LCDC_STATUS (OMAP_LCDC_BASE + 0x10)
++#define OMAP_DMA_LCD_BASE 0xfffee300
++#define OMAP_DMA_LCD_CCR (OMAP_DMA_LCD_BASE + 0xc2)
++#define OMAP_DMA_LCD_CTRL (OMAP_DMA_LCD_BASE + 0xc4)
++
++int __init
++vsfb_init(void)
++{
++
++ printk("VSFB Frame buffer driver for HTC OMAP Based Phones.\n");
++
++ fb_info.fix = vsfb_fix;
++ fb_info.var = vsfb_var;
++
++ fb_info.fbops = &vsfb_ops;
++ fb_info.flags = FBINFO_FLAG_DEFAULT;
++ fb_info.pseudo_palette = colreg;
++ fb_alloc_cmap(&fb_info.cmap, 16, 0);
++
++ if (machine_is_typhoon()) {
++ fb_info.var.xres = 176;
++ fb_info.var.yres = 220;
++ } else {
++ fb_info.var.xres = 240;
++ fb_info.var.yres = 320;
++ }
++
++ fb_info.var.xres_virtual = fb_info.var.xres;
++ fb_info.var.yres_virtual = fb_info.var.yres;
++ fb_info.fix.line_length = fb_info.var.xres * 2;
++ fb_info.fix.smem_len = fb_info.var.xres * fb_info.var.yres * 2;
++
++#ifdef CONFIG_EFB_DEBUG
++ /*
++ * disable efb so that only one acces the frame buffer
++ */
++ efb_disable();
++#endif
++
++
++ /* Try to grab our phys memory space... */
++ if (!(request_mem_region(fb_info.fix.smem_start, fb_info.fix.smem_len, "HTC vsfb"))){
++#ifdef CONFIG_EFB_DEBUG
++ efb_enable();
++#endif
++ printk("unable to request addr %p (len %i) for HTC VSFB.\n", fb_info.fix.smem_start, fb_info.fix.smem_len);
++ return -ENOMEM;
++ }
++
++ /* Try to map this so we can access it */
++ fb_info.screen_base = ioremap(fb_info.fix.smem_start, fb_info.fix.smem_len);
++ if (!fb_info.screen_base) {
++#ifdef CONFIG_EFB_DEBUG
++ efb_enable();
++#endif
++ printk("unable to ioremap %p for HTC vsfb.\n", fb_info.fix.smem_start);
++ release_mem_region(fb_info.fix.smem_start, fb_info.fix.smem_len);
++ return -EIO;
++ }
++
++ printk(KERN_INFO "vsfb: framebuffer at 0x%lx, mapped to 0x%p, size %dk\n",
++ fb_info.fix.smem_start, fb_info.screen_base, fb_info.fix.smem_len/1024);
++
++ if (register_framebuffer(&fb_info) < 0){
++#ifdef CONFIG_EFB_DEBUG
++ efb_enable();
++#endif
++ iounmap(fb_info.screen_base);
++ release_mem_region(fb_info.fix.smem_start, fb_info.fix.smem_len);
++ return -EINVAL;
++ }
++
++ return 0;
++}
++
++module_init(vsfb_init);
++MODULE_AUTHOR("Nicolas Schichan (based on VSFB by Ian Molton (based on acornfb by RMK and parts of anakinfb))");
++MODULE_DESCRIPTION("HTC Very Simple framebuffer driver");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.16/include/asm-arm/arch-omap/efb.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/include/asm-arm/arch-omap/efb.h 2007-04-12 10:36:20.000000000 +0200
+@@ -0,0 +1,56 @@
++/*
++** efb.h for efb in /home/nico/work/tornado/linux-tornado
++**
++** Made by nico
++** Login <nico@chac.le-poulpe.net>
++**
++** Started on Wed Apr 5 18:58:04 2006 nico
++** Last update Thu May 11 13:58:28 2006 nico
++*/
++
++/*
++ *
++ *
++ * Copyright (C) 2006 Nicolas Schichan
++ *
++ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
++ * 02110-1301, USA.
++ *
++ */
++
++#ifndef _EFB_H
++# define _EFB_H
++
++# include <linux/init.h>
++
++/*
++ * TODO: add __init and __initdata where applicable.
++ */
++
++void efb_init(void);
++void efb_putstr(const char *str);
++
++void efb_disable(void);
++void efb_enable(void);
++
++/* #define EFB_WIDTH 240 */
++/* #define EFB_HEIGHT 320 */
++
++extern const char efb_font[255][25];
++
++extern unsigned int efb_width;
++extern unsigned int efb_height;
++
++#endif /* !_EFB_H */
+Index: linux-2.6.16/include/asm-arm/arch-omap/omap730.h
+===================================================================
+--- linux-2.6.16.orig/include/asm-arm/arch-omap/omap730.h 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/include/asm-arm/arch-omap/omap730.h 2007-04-12 10:36:20.000000000 +0200
+@@ -99,4 +99,3 @@
+ #define OMAP730_PCC_UPLD_CTRL (OMAP730_PCC_UPLD_CTRL_BASE + 0x00)
+
+ #endif /* __ASM_ARCH_OMAP730_H */
+-
+Index: linux-2.6.16/include/asm-arm/kexec.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/include/asm-arm/kexec.h 2007-04-12 10:36:20.000000000 +0200
+@@ -0,0 +1,33 @@
++#ifndef _ARM_KEXEC_H
++#define _ARM_KEXEC_H
++
++#ifdef CONFIG_KEXEC
++
++/* Maximum physical address we can use pages from */
++#define KEXEC_SOURCE_MEMORY_LIMIT (-1UL)
++/* Maximum address we can reach in physical address mode */
++#define KEXEC_DESTINATION_MEMORY_LIMIT (-1UL)
++/* Maximum address we can use for the control code buffer */
++#define KEXEC_CONTROL_MEMORY_LIMIT TASK_SIZE
++
++#define KEXEC_CONTROL_CODE_SIZE 4096
++
++#define KEXEC_ARCH KEXEC_ARCH_ARM
++
++#ifndef __ASSEMBLY__
++
++#define MAX_NOTE_BYTES 1024
++
++struct kimage;
++
++static inline void crash_setup_regs(struct pt_regs *newregs,
++ struct pt_regs *oldregs)
++{
++ /* Dummy implementation for now */
++}
++
++#endif /* __ASSEMBLY__ */
++
++#endif /* CONFIG_KEXEC */
++
++#endif /* _ARM_KEXEC_H */
+Index: linux-2.6.16/include/asm-arm/unistd.h
+===================================================================
+--- linux-2.6.16.orig/include/asm-arm/unistd.h 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/include/asm-arm/unistd.h 2007-04-12 10:36:20.000000000 +0200
+@@ -216,7 +216,7 @@
+ #define __NR_sigaltstack (__NR_SYSCALL_BASE+186)
+ #define __NR_sendfile (__NR_SYSCALL_BASE+187)
+ /* 188 reserved */
+- /* 189 reserved */
++#define __NR_sys_kexec_load (__NR_SYSCALL_BASE+189) /* 189 was reserved, temporarily use it for sys_kexec_load */
+ #define __NR_vfork (__NR_SYSCALL_BASE+190)
+ #define __NR_ugetrlimit (__NR_SYSCALL_BASE+191) /* SuS compliant getrlimit */
+ #define __NR_mmap2 (__NR_SYSCALL_BASE+192)
+Index: linux-2.6.16/include/linux/kexec.h
+===================================================================
+--- linux-2.6.16.orig/include/linux/kexec.h 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/include/linux/kexec.h 2007-04-12 10:36:20.000000000 +0200
+@@ -119,6 +119,7 @@
+ #define KEXEC_ARCH_PPC (20 << 16)
+ #define KEXEC_ARCH_PPC64 (21 << 16)
+ #define KEXEC_ARCH_IA_64 (50 << 16)
++#define KEXEC_ARCH_ARM (40 << 16)
+ #define KEXEC_ARCH_S390 (22 << 16)
+ #define KEXEC_ARCH_SH (42 << 16)
+
+Index: linux-2.6.16/init/main.c
+===================================================================
+--- linux-2.6.16.orig/init/main.c 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/init/main.c 2007-04-12 10:36:20.000000000 +0200
+@@ -58,6 +58,10 @@
+ #include <asm/smp.h>
+ #endif
+
++#ifdef CONFIG_EFB_DEBUG
++#include <asm/arch/efb.h>
++#endif
++
+ /*
+ * This is one of the first .c files built. Error out early if we have compiler
+ * trouble.
+@@ -442,6 +446,12 @@
+ {
+ char * command_line;
+ extern struct kernel_param __start___param[], __stop___param[];
++
++#ifdef CONFIG_EFB_DEBUG
++ efb_init();
++ efb_putstr("Rock'n Roll !\n");
++#endif
++
+ /*
+ * Interrupts are still disabled. Do necessary setups, then
+ * enable them
+Index: linux-2.6.16/kernel/printk.c
+===================================================================
+--- linux-2.6.16.orig/kernel/printk.c 2007-04-12 10:36:08.000000000 +0200
++++ linux-2.6.16/kernel/printk.c 2007-04-12 10:36:20.000000000 +0200
+@@ -34,12 +34,16 @@
+
+ #include <asm/uaccess.h>
+
++#include <asm/arch/efb.h>
++
+ #define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT)
+
+-#ifdef CONFIG_DEBUG_LL
+-extern void printascii(char *);
++#ifdef CONFIG_EFB_DEBUG
++#include <asm/arch/efb.h>
+ #endif
+
++int in_printk;
++
+ /* printk's without a loglevel use this.. */
+ #define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */
+
+@@ -367,10 +371,12 @@
+ {
+ struct console *con;
+
++ in_printk = 1;
+ for (con = console_drivers; con; con = con->next) {
+ if ((con->flags & CON_ENABLED) && con->write)
+ con->write(con, &LOG_BUF(start), end - start);
+ }
++ in_printk = 0;
+ }
+
+ /*
+@@ -551,8 +557,8 @@
+ /* Emit the output into the temporary buffer */
+ printed_len = vscnprintf(printk_buf, sizeof(printk_buf), fmt, args);
+
+-#ifdef CONFIG_DEBUG_LL
+- printascii(printk_buf);
++#ifdef CONFIG_EFB_DEBUG
++ efb_putstr(printk_buf);
+ #endif
+
+ /*
diff --git a/packages/linux/linux-tornado-omap2_2.6.16.16.bb b/packages/linux/linux-tornado-omap2_2.6.16.16.bb
new file mode 100644
index 0000000000..2115a275ef
--- /dev/null
+++ b/packages/linux/linux-tornado-omap2_2.6.16.16.bb
@@ -0,0 +1,47 @@
+DESCRIPTION = "Linux kernel for HTC Tornado/Typhoon/Hurricane phones."
+SECTION = "kernel"
+LICENSE = "GPL"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2 \
+ http://www.muru.com/linux/omap/patches/old/patch-2.6.16-omap2.bz2;patch=1 \
+ file://linux-2.6.16.16.patch;patch=1 \
+ file://tornado-20070320.patch;patch=1 \
+ file://defconfig"
+
+S = "${WORKDIR}/linux-2.6.16"
+
+inherit kernel
+
+do_configure() {
+
+ rm -f ${S}/.config
+
+ if [ ! -e ${WORKDIR}/defconfig ]; then
+ die "No default configuration for ${MACHINE} available."
+ fi
+
+
+ if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
+ echo "CONFIG_AEABI=y" >> ${S}/.config
+ echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
+ else
+ echo "# CONFIG_AEABI is not set" >> ${S}/.config
+ echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
+ fi
+
+ sed -e '/CONFIG_AEABI/d' \
+ -e '/CONFIG_OABI_COMPAT=/d' \
+ '${WORKDIR}/defconfig' >>'${S}/.config'
+
+ yes '' | oe_runmake oldconfig
+
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_populate_staging after do_compile
diff --git a/packages/linux/linux-turbostation/.mtn2git_empty b/packages/linux/linux-turbostation/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-turbostation/.mtn2git_empty
diff --git a/packages/linux/linux-turbostation/001_r1000.diff b/packages/linux/linux-turbostation/001_r1000.diff
new file mode 100644
index 0000000000..0f94d685fa
--- /dev/null
+++ b/packages/linux/linux-turbostation/001_r1000.diff
@@ -0,0 +1,2334 @@
+Index: linux-2.6.20.1/drivers/net/Kconfig
+===================================================================
+--- linux-2.6.20.1.orig/drivers/net/Kconfig 2007-02-20 07:34:32.000000000 +0100
++++ linux-2.6.20.1/drivers/net/Kconfig 2007-02-28 20:29:04.000000000 +0100
+@@ -2085,6 +2085,16 @@
+
+ If in doubt, say Y.
+
++config R1000
++ tristate "Realtek 8169 gigabit ethernet support (R1000)"
++ depends on PCI
++ select CRC32
++ ---help---
++ Say Y here if you have a Realtek 8169 PCI Gigabit Ethernet adapter.
++
++ To compile this driver as a module, choose M here: the module
++ will be called r1000_n. This is recommended.
++
+ config SIS190
+ tristate "SiS190/SiS191 gigabit ethernet support"
+ depends on PCI
+Index: linux-2.6.20.1/drivers/net/Makefile
+===================================================================
+--- linux-2.6.20.1.orig/drivers/net/Makefile 2007-02-20 07:34:32.000000000 +0100
++++ linux-2.6.20.1/drivers/net/Makefile 2007-02-28 20:29:04.000000000 +0100
+@@ -188,6 +188,7 @@
+ obj-$(CONFIG_NET_NETX) += netx-eth.o
+ obj-$(CONFIG_DL2K) += dl2k.o
+ obj-$(CONFIG_R8169) += r8169.o
++obj-$(CONFIG_R1000) += r1000_n.o r1000_ioctl.o
+ obj-$(CONFIG_AMD8111_ETH) += amd8111e.o
+ obj-$(CONFIG_IBMVETH) += ibmveth.o
+ obj-$(CONFIG_S2IO) += s2io.o
+Index: linux-2.6.20.1/drivers/net/r1000.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.1/drivers/net/r1000.h 2007-02-28 20:29:04.000000000 +0100
+@@ -0,0 +1,390 @@
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/netdevice.h>
++#include <linux/etherdevice.h>
++#include <linux/delay.h>
++#include <linux/version.h>
++#include <linux/types.h>
++#include <linux/errno.h>
++
++#include <linux/timer.h>
++#include <linux/init.h>
++#include <linux/ethtool.h>
++#include <linux/mii.h>
++#include <asm/uaccess.h>
++#include <linux/interrupt.h>
++#include <linux/spinlock.h>
++
++#define R1000_VERSION "1.05"
++#define RELEASE_DATE "2006/10/25"
++#define MODULENAME "r1000"
++#define R1000_DRIVER_NAME MODULENAME R1000_VERSION ", the Linux device driver for Realtek Ethernet Controllers"
++#define PFX MODULENAME ": "
++
++
++#undef R1000_DEBUG
++#undef R1000_JUMBO_FRAME_SUPPORT
++//#undef R1000_HW_FLOW_CONTROL_SUPPORT
++#define R1000_HW_FLOW_CONTROL_SUPPORT
++
++
++#undef R1000_IOCTL_SUPPORT
++#define R1000_USE_IO
++
++#define R1000_BOTTOM_HALVES
++//#undef R1000_BOTTOM_HALVES
++
++#ifdef R1000_DEBUG
++ #define assert(expr) \
++ if(!(expr)) { printk( "Assertion failed! %s,%s,%s,line=%d\n", #expr,__FILE__,__FUNCTION__,__LINE__); }
++ #define DBG_PRINT( fmt, args...) printk("r1000: " fmt, ## args);
++#else
++ #define assert(expr) do {} while (0)
++ #define DBG_PRINT( fmt, args...) ;
++#endif // end of #ifdef R1000_DEBUG
++
++/* media options */
++#define MAX_UNITS 8
++
++#define OPTION_UNSET -1
++#define OPTION_DISABLED 0
++#define OPTION_ENABLED 1
++
++/* MAC address length*/
++#define MAC_ADDR_LEN 6
++
++#define RX_FIFO_THRESH 7 /* 7 means NO threshold, Rx buffer level before first PCI xfer. */
++#define RX_DMA_BURST 7 /* Maximum PCI burst, '6' is 1024 */
++#define TX_DMA_BURST 7 /* Maximum PCI burst, '6' is 1024 */
++#define ETTh 0x3F /* 0x3F means NO threshold */
++
++#define ETH_HDR_LEN 14
++#define DEFAULT_MTU 1500
++#define DEFAULT_RX_BUF_LEN 1536
++
++
++#ifdef R1000_JUMBO_FRAME_SUPPORT
++#define MAX_JUMBO_FRAME_MTU ( 10000 )
++#define MAX_RX_SKBDATA_SIZE ( MAX_JUMBO_FRAME_MTU + ETH_HDR_LEN )
++#else
++//#define MAX_RX_SKBDATA_SIZE 1600
++#define MAX_RX_SKBDATA_SIZE 1608
++#endif //end #ifdef R1000_JUMBO_FRAME_SUPPORT
++
++
++#define InterFrameGap 0x03 /* 3 means InterFrameGap = the shortest one */
++
++#define NUM_TX_DESC 1024 /* Number of Tx descriptor registers*/
++#define NUM_RX_DESC 1024 /* Number of Rx descriptor registers*/
++
++#define RTL_MIN_IO_SIZE 0x80
++#define TX_TIMEOUT (6*HZ)
++#define R1000_TIMER_EXPIRE_TIME 100 //100
++
++#ifdef R1000_USE_IO
++#define RTL_W8(reg, val8) outb ((val8), ioaddr + (reg))
++#define RTL_W16(reg, val16) outw ((val16), ioaddr + (reg))
++#define RTL_W32(reg, val32) outl ((val32), ioaddr + (reg))
++#define RTL_R8(reg) inb (ioaddr + (reg))
++#define RTL_R16(reg) inw (ioaddr + (reg))
++#define RTL_R32(reg) ((unsigned long) inl (ioaddr + (reg)))
++#else //R1000_USE_IO
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,6)
++/* write/read MMIO register for Linux kernel 2.4.x*/
++#define RTL_W8(reg, val8) writeb ((val8), ioaddr + (reg))
++#define RTL_W16(reg, val16) writew ((val16), ioaddr + (reg))
++#define RTL_W32(reg, val32) writel ((val32), ioaddr + (reg))
++#define RTL_R8(reg) readb (ioaddr + (reg))
++#define RTL_R16(reg) readw (ioaddr + (reg))
++#define RTL_R32(reg) ((unsigned long) readl (ioaddr + (reg)))
++#else
++/* write/read MMIO register for Linux kernel 2.6.x*/
++#define RTL_W8(reg, val8) iowrite8 ((val8), (void *)(ioaddr + (reg)))
++#define RTL_W16(reg, val16) iowrite16 ((val16), (void *)(ioaddr + (reg)))
++#define RTL_W32(reg, val32) iowrite32 ((val32), (void *)(ioaddr + (reg)))
++#define RTL_R8(reg) ioread8 ((void *)(ioaddr + (reg)))
++#define RTL_R16(reg) ioread16 ((void *)(ioaddr + (reg)))
++#define RTL_R32(reg) ((unsigned long) ioread32 ((void *)(ioaddr + (reg))))
++#endif
++#endif //R1000_USE_IO
++
++#define MCFG_METHOD_1 0x01
++#define MCFG_METHOD_2 0x02
++#define MCFG_METHOD_3 0x03
++#define MCFG_METHOD_4 0x04
++#define MCFG_METHOD_5 0x05
++#define MCFG_METHOD_11 0x0B
++#define MCFG_METHOD_12 0x0C
++#define MCFG_METHOD_13 0x0D
++#define MCFG_METHOD_14 0x0E
++#define MCFG_METHOD_15 0x0F
++
++#define PCFG_METHOD_1 0x01 //PHY Reg 0x03 bit0-3 == 0x0000
++#define PCFG_METHOD_2 0x02 //PHY Reg 0x03 bit0-3 == 0x0001
++#define PCFG_METHOD_3 0x03 //PHY Reg 0x03 bit0-3 == 0x0002
++
++enum pci_config_header_registers {
++ VID = 0x00,
++ DID = 0x02,
++ Command = 0x04,
++ Status = 0x06,
++ Rev_ID = 0x08,
++ Class_Code = 0x09,
++ Cache_Line_Size = 0x0C,
++ Latency_Timer = 0x0D,
++ Header_type = 0x0E,
++ BIST = 0x0F,
++ IOAR = 0x10,
++ MEMAR = 0x14,
++ CIS_Pointer = 0x28,
++ Sub_VID = 0x2C,
++ Sub_DID = 0x2E,
++ BMAR = 0x30,
++ Interrupt_Line = 0x3C,
++ Interrutp_Pin = 0x3D,
++ Min_Gnt = 0x3E,
++ Max_Lat = 0x3F,
++};
++
++enum r1000_registers {
++ MAC0 = 0x00,
++ MAR0 = 0x08,
++ TxDescStartAddr = 0x20,
++ TxHDescStartAddr = 0x28,
++ FLASH = 0x30,
++ ERSR = 0x36,
++ ChipCmd = 0x37,
++ TxPoll = 0x38,
++ IntrMask = 0x3C,
++ IntrStatus = 0x3E,
++ TxConfig = 0x40,
++ RxConfig = 0x44,
++ TCTR = 0x48,
++ RxMissed = 0x4C,
++ Cfg9346 = 0x50,
++ Config0 = 0x51,
++ Config1 = 0x52,
++ Config2 = 0x53,
++ Config3 = 0x54,
++ Config4 = 0x55,
++ Config5 = 0x56,
++ TimerInt = 0x58,
++ MultiIntr = 0x5C,
++ PHYAR = 0x60,
++ TBICSR = 0x64,
++ TBI_ANAR = 0x68,
++ TBI_LPAR = 0x6A,
++ PHYstatus = 0x6C,
++ Off7Ch = 0x7C,
++ RxMaxSize = 0xDA,
++ CPlusCmd = 0xE0,
++ RxDescStartAddr = 0xE4,
++ ETThReg = 0xEC,
++ FuncEvent = 0xF0,
++ FuncEventMask = 0xF4,
++ FuncPresetState = 0xF8,
++ FuncForceEvent = 0xFC,
++};
++
++enum r1000_register_content {
++ /*InterruptStatusBits*/
++ SYSErr = 0x8000,
++ PCSTimeout = 0x4000,
++ SWInt = 0x0100,
++ TxDescUnavail = 0x80,
++ RxFIFOOver = 0x40,
++ LinkChg = 0x20,
++ RxDescUnavail = 0x10,
++ TxErr = 0x08,
++ TxOK = 0x04,
++ RxErr = 0x02,
++ RxOK = 0x01,
++
++ //TCTR/TimerInt contetn
++ CLK_tick = 0x1770, //for PCI clock=33MHz 0x1770=200usec
++
++ /*RxStatusDesc*/
++ RxRES = 0x00200000,
++ RxCRC = 0x00080000,
++ RxRUNT = 0x00100000,
++ RxRWT = 0x00400000,
++
++ /*ChipCmdBits*/
++ CmdReset = 0x10,
++ CmdRxEnb = 0x08,
++ CmdTxEnb = 0x04,
++ RxBufEmpty = 0x01,
++
++ /*Cfg9346Bits*/
++ Cfg9346_Lock = 0x00,
++ Cfg9346_Unlock = 0xC0,
++
++ /*rx_mode_bits*/
++ AcceptErr = 0x20,
++ AcceptRunt = 0x10,
++ AcceptBroadcast = 0x08,
++ AcceptMulticast = 0x04,
++ AcceptMyPhys = 0x02,
++ AcceptAllPhys = 0x01,
++
++ /*RxConfigBits*/
++ RxCfgFIFOShift = 13,
++ RxCfgDMAShift = 8,
++
++ /*TxConfigBits*/
++ TxInterFrameGapShift = 24,
++ TxDMAShift = 8,
++
++ //C+ Command Register
++ CPCR_MulRW_Enable = 0x0008,
++
++ /*rtl8169_PHYstatus (MAC offset 0x6C)*/
++ TBI_Enable = 0x80,
++ TxFlowCtrl = 0x40,
++ RxFlowCtrl = 0x20,
++ _1000Mbps = 0x10,
++ _100Mbps = 0x08,
++ _10Mbps = 0x04,
++ LinkStatus = 0x02,
++ FullDup = 0x01,
++
++ /*GIGABIT_PHY_registers*/
++ PHY_CTRL_REG = 0,
++ PHY_STAT_REG = 1,
++ PHY_AUTO_NEGO_REG = 4,
++ PHY_1000_CTRL_REG = 9,
++
++ /*GIGABIT_PHY_REG_BIT*/
++ PHY_Restart_Auto_Nego = 0x0200,
++ PHY_Enable_Auto_Nego = 0x1000,
++
++ //PHY_STAT_REG = 1;
++ PHY_Auto_Neco_Comp = 0x0020,
++
++ //PHY_AUTO_NEGO_REG = 4;
++ PHY_Cap_10_Half = 0x0020,
++ PHY_Cap_10_Full = 0x0040,
++ PHY_Cap_100_Half = 0x0080,
++ PHY_Cap_100_Full = 0x0100,
++
++ //PHY_1000_CTRL_REG = 9;
++ PHY_Cap_1000_Full = 0x0200,
++ PHY_Cap_1000_Half = 0x0100,
++
++ PHY_Cap_PAUSE = 0x0400,
++ PHY_Cap_ASYM_PAUSE = 0x0800,
++
++ PHY_Cap_Null = 0x0,
++
++ /*_MediaType*/
++ _10_Half = 0x01,
++ _10_Full = 0x02,
++ _100_Half = 0x04,
++ _100_Full = 0x08,
++ _1000_Full = 0x10,
++
++ /*_TBICSRBit*/
++ TBILinkOK = 0x02000000,
++};
++
++
++
++enum _DescStatusBit {
++ OWNbit = 0x80000000,
++ EORbit = 0x40000000,
++ FSbit = 0x20000000,
++ LSbit = 0x10000000,
++};
++
++
++struct TxDesc {
++ u32 status;
++ u32 vlan_tag;
++ u32 buf_addr;
++ u32 buf_Haddr;
++};
++
++struct RxDesc {
++ u32 status;
++ u32 vlan_tag;
++ u32 buf_addr;
++ u32 buf_Haddr;
++};
++
++#define r1000_request_timer( timer, timer_expires, timer_func, timer_data ) \
++{ \
++ init_timer(timer); \
++ timer->expires = (unsigned long)(jiffies + timer_expires); \
++ timer->data = (unsigned long)(timer_data); \
++ timer->function = (void *)(timer_func); \
++ add_timer(timer); \
++ DBG_PRINT("request_timer at 0x%08lx\n", (unsigned long)timer); \
++}
++
++#define r1000_delete_timer( del_timer_t ) \
++{ \
++ del_timer(del_timer_t); \
++ DBG_PRINT("delete_timer at 0x%08lx\n", (unsigned long)del_timer_t); \
++}
++
++#define r1000_mod_timer( timer, timer_expires ) \
++{ \
++ mod_timer( timer, jiffies + timer_expires ); \
++}
++
++typedef struct timer_list rt_timer_t;
++
++struct r1000_private {
++ unsigned long ioaddr; /* memory map physical address*/
++ struct pci_dev *pci_dev; /* Index of PCI device */
++ struct net_device_stats stats; /* statistics of net device */
++ spinlock_t lock; /* spin lock flag */
++ spinlock_t tx_lock; /* tx spin lock flag */
++ spinlock_t rx_lock; /* rx spin lock flag */
++ int chipset;
++ int mcfg;
++ int pcfg;
++ rt_timer_t r1000_timer;
++ unsigned long expire_time;
++
++#ifdef R1000_BOTTOM_HALVES
++ struct tasklet_struct r1000_rx_tasklet;
++ struct tasklet_struct r1000_tx_tasklet;
++#endif //R1000_BOTTOM_HALVES
++
++ unsigned int tx_cnt;
++
++ unsigned long phy_link_down_cnt;
++ unsigned long cur_rx; /* Index into the Rx descriptor buffer of next Rx pkt. */
++ unsigned long cur_tx; /* Index into the Tx descriptor buffer of next Rx pkt. */
++ unsigned long dirty_tx;
++ struct TxDesc *TxDescArray; /* Index of 256-alignment Tx Descriptor buffer */
++ struct RxDesc *RxDescArray; /* Index of 256-alignment Rx Descriptor buffer */
++ struct sk_buff *Tx_skbuff[NUM_TX_DESC];/* Index of Transmit data buffer */
++ struct sk_buff *Rx_skbuff[NUM_RX_DESC];/* Receive data buffer */
++ unsigned char drvinit_fail;
++
++ dma_addr_t txdesc_array_dma_addr[NUM_TX_DESC];
++ dma_addr_t rxdesc_array_dma_addr[NUM_RX_DESC];
++ dma_addr_t rx_skbuff_dma_addr[NUM_RX_DESC];
++
++ void *txdesc_space;
++ dma_addr_t txdesc_phy_dma_addr;
++ int sizeof_txdesc_space;
++
++ void *rxdesc_space;
++ dma_addr_t rxdesc_phy_dma_addr;
++ int sizeof_rxdesc_space;
++
++ int curr_mtu_size;
++ int tx_pkt_len;
++ int rx_pkt_len;
++
++ int hw_rx_pkt_len;
++
++ u16 speed;
++ u8 duplex;
++ u8 autoneg;
++};
++
++
+Index: linux-2.6.20.1/drivers/net/r1000_ioctl.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.1/drivers/net/r1000_ioctl.c 2007-02-28 20:29:04.000000000 +0100
+@@ -0,0 +1,129 @@
++#include "r1000.h"
++
++extern int R1000_READ_GMII_REG(unsigned long ioaddr, int RegAddr);
++extern int R1000_WRITE_GMII_REG(unsigned long ioaddr, int RegAddr, int value);
++extern int r1000_set_medium(struct net_device *netdev,u16 speed,u8 duplex,u8 autoneg);
++
++static int ethtool_get_settings(struct net_device *netdev,struct ethtool_cmd *ecmd){
++ struct r1000_private *priv = (struct r1000_private *)(netdev->priv);
++ unsigned long ioaddr = priv->ioaddr;
++ unsigned int bmcr = R1000_READ_GMII_REG(ioaddr,PHY_STAT_REG);
++ unsigned int bmsr = R1000_READ_GMII_REG(ioaddr,PHY_AUTO_NEGO_REG);
++ unsigned int gbcr = R1000_READ_GMII_REG(ioaddr,PHY_1000_CTRL_REG);
++
++ ecmd->supported = (SUPPORTED_10baseT_Half|
++ SUPPORTED_10baseT_Full|
++ SUPPORTED_100baseT_Half|
++ SUPPORTED_100baseT_Full|
++ SUPPORTED_1000baseT_Full|
++ SUPPORTED_Autoneg|
++ SUPPORTED_TP);
++
++ ecmd->advertising = ADVERTISED_TP;
++
++ if(bmsr&ADVERTISE_10HALF)
++ ecmd->advertising |= ADVERTISED_10baseT_Half;
++ if(bmsr&ADVERTISE_10FULL)
++ ecmd->advertising |= ADVERTISED_10baseT_Full;
++ if(bmsr&ADVERTISE_100HALF)
++ ecmd->advertising |= ADVERTISED_100baseT_Half;
++ if(bmsr&ADVERTISE_100FULL)
++ ecmd->advertising |= ADVERTISED_100baseT_Full;
++ if(gbcr&PHY_Cap_1000_Full)
++ ecmd->advertising |= ADVERTISED_1000baseT_Full;
++ if(bmcr&PHY_Enable_Auto_Nego)
++ ecmd->advertising |= ADVERTISED_Autoneg;
++
++ ecmd->port = PORT_TP;
++
++ if(priv->mcfg == MCFG_METHOD_1)
++ ecmd->transceiver = XCVR_EXTERNAL;
++ else
++ ecmd->transceiver = XCVR_INTERNAL;
++
++ if(RTL_R8(PHYstatus)&LinkStatus){
++ if(RTL_R8(PHYstatus)&_1000Mbps)
++ ecmd->speed = SPEED_1000;
++ else if(RTL_R8(PHYstatus)&_100Mbps)
++ ecmd->speed = SPEED_100;
++ else if(RTL_R8(PHYstatus)&_10Mbps)
++ ecmd->speed = SPEED_10;
++
++ if(RTL_R8(PHYstatus)&FullDup)
++ ecmd->duplex = DUPLEX_FULL;
++ else
++ ecmd->duplex = DUPLEX_HALF;
++
++ }else{
++ ecmd->speed = -1;
++ ecmd->duplex = -1;
++ }
++ ecmd->autoneg = AUTONEG_ENABLE;
++ return 0;
++}
++
++static int ethtool_set_settings(struct net_device *netdev,struct ethtool_cmd *ecmd){
++ return r1000_set_medium(netdev,ecmd->speed,ecmd->duplex,ecmd->autoneg);
++}
++
++static void ethtool_get_drvinfo(struct net_device *netdev,struct ethtool_drvinfo *drvinfo){
++ struct r1000_private *priv = netdev_priv(netdev);
++
++ strncpy(drvinfo->driver, MODULENAME,32);
++ strncpy(drvinfo->version, R1000_VERSION,32);
++ strncpy(drvinfo->fw_version, "N/A", 32);
++ strncpy(drvinfo->bus_info, pci_name(priv->pci_dev), 32);
++}
++
++static int ethtool_nway_reset(struct net_device *netdev){
++// struct r1000_private *priv = netdev_priv(netdev);
++
++ if(netif_running(netdev)){
++ }
++
++ return 0;
++}
++
++uint32_t ethtool_get_link(struct net_device *netdev){
++ return netif_carrier_ok(netdev) ? 1 : 0;
++}
++
++int ethtool_ioctl(struct ifreq *ifr){
++ struct net_device *netdev=__dev_get_by_name(ifr->ifr_name);
++ void *useraddr=(void *)ifr->ifr_data;
++ uint32_t ethcmd;
++
++ if(!capable(CAP_NET_ADMIN))
++ return -EPERM;
++
++ if(!netdev || !netif_device_present(netdev))
++ return -ENODEV;
++ if(copy_from_user(&ethcmd, useraddr, sizeof(ethcmd)))
++ return -EFAULT;
++
++ switch (ethcmd){
++ case ETHTOOL_GSET:
++ return ethtool_get_settings(netdev,useraddr);
++ case ETHTOOL_SSET:
++ return ethtool_set_settings(netdev,useraddr);
++ case ETHTOOL_GDRVINFO:
++ ethtool_get_drvinfo(netdev,useraddr);
++ case ETHTOOL_NWAY_RST:
++ return ethtool_nway_reset(netdev);
++ case ETHTOOL_GLINK:
++ return ethtool_get_link(netdev);
++ default:
++ return -EOPNOTSUPP;
++ }
++ return -EOPNOTSUPP;
++}
++
++#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)
++struct ethtool_ops r1000_ethtool_ops = {
++ .get_settings = ethtool_get_settings,
++ .set_settings = ethtool_set_settings,
++ .get_drvinfo = ethtool_get_drvinfo,
++ .nway_reset = ethtool_nway_reset,
++ .get_link = ethtool_get_link,
++};
++#endif
+Index: linux-2.6.20.1/drivers/net/r1000_n.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.20.1/drivers/net/r1000_n.c 2007-02-28 20:29:04.000000000 +0100
+@@ -0,0 +1,1767 @@
++//=========================================================================
++//Realtek Ethernet driver for Linux kernel 2.4.x. and 2.6.x
++//=========================================================================
++
++#include "r1000.h"
++
++#ifdef MODULE_PARM
++static int speed[MAX_UNITS] = {-1,-1,-1,-1,-1,-1,-1,-1};
++
++static int duplex[MAX_UNITS] = {-1,-1,-1,-1,-1,-1,-1,-1};
++
++static int autoneg[MAX_UNITS] = {-1,-1,-1,-1,-1,-1,-1,-1};
++#endif //MODULE_PARM
++
++/* Maximum events (Rx packets, etc.) to handle at each interrupt. */
++static int max_interrupt_work = 20;
++
++/* Maximum number of multicast addresses to filter (vs. Rx-all-multicast).
++ The RTL chips use a 64 element hash table based on the Ethernet CRC. */
++static int multicast_filter_limit = 32;
++
++const static struct {
++ const char *name;
++ u8 mcfg; /* depend on documents of Realtek */
++ u32 RxConfigMask; /* should clear the bits supported by this chip */
++} rtl_chip_info[] = {
++ { "RTL8169", MCFG_METHOD_1, 0xff7e1880 },
++ { "RTL8169S/8110S", MCFG_METHOD_2, 0xff7e1880 },
++ { "RTL8169S/8110S", MCFG_METHOD_3, 0xff7e1880 },
++ { "RTL8169SB/8110SB", MCFG_METHOD_4, 0xff7e1880 },
++ { "RTL8110SC", MCFG_METHOD_5, 0xff7e1880 },
++ { "RTL8168B/8111B", MCFG_METHOD_11, 0xff7e1880 },
++ { "RTL8168B/8111B", MCFG_METHOD_12, 0xff7e1880 },
++ { "RTL8101E", MCFG_METHOD_13, 0xff7e1880 },
++ { "RTL8100E", MCFG_METHOD_14, 0xff7e1880 },
++ { "RTL8100E", MCFG_METHOD_15, 0xff7e1880 },
++ { 0 }
++};
++
++
++static struct pci_device_id r1000_pci_tbl[] __devinitdata = {
++ { 0x10ec, 0x8169, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
++ { 0x10ec, 0x8167, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
++ { 0x10ec, 0x8168, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
++ { 0x10ec, 0x8136, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
++ {0,}
++};
++
++
++MODULE_DEVICE_TABLE (pci, r1000_pci_tbl);
++MODULE_AUTHOR ("Realtek");
++MODULE_DESCRIPTION ("Linux device driver for Realtek Ethernet Controllers");
++
++#ifdef MODULE_PARM
++MODULE_PARM (speed, "1-" __MODULE_STRING(MAX_UNITS) "i");
++MODULE_PARM_DESC(speed,"Link speed");
++MODULE_PARM (duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
++MODULE_PARM_DESC(duplex,"Link duplex");
++MODULE_PARM (autoneg, "1-" __MODULE_STRING(MAX_UNITS) "i");
++MODULE_PARM_DESC(autoneg,"Autonegotiation");
++#else //MODULE_PARM
++/* Module Parameters are always initialized to -1, so that the driver
++ * can tell the difference between no user specified value or the
++ * user asking for the default value.
++ * The true default values are loaded in when e1000_check_options is called.
++ *
++ * This is a GCC extension to ANSI C.
++ * See the item "Labeled Elements in Initializers" in the section
++ * "Extensions to the C Language Family" of the GCC documentation.
++ */
++#define R1000_PARAM_INIT { [0 ... MAX_UNITS] = OPTION_UNSET }
++/* All parameters are treated the same, as an integer array of values.
++ * This macro just reduces the need to repeat the same declaration code
++ * over and over (plus this helps to avoid typo bugs).
++ */
++#define R1000_PARAM(X, S) \
++ static int __devinitdata X[MAX_UNITS+1] = R1000_PARAM_INIT; \
++ static int num_##X = 0; \
++ module_param_array(X, int, &num_##X, 0); \
++ MODULE_PARM_DESC(X, S);
++/* Link Speed
++ * Valid Values: 10Mbps, 100Mbps, and 1000Mbps
++ * Defaule value: 100Mbps
++ */
++R1000_PARAM(speed, "Link speed");
++/* Link duplex
++ * Valid Values: half duplex and full duplex
++ * Defaule value: full duplex
++ */
++R1000_PARAM(duplex, "Link duplex");
++/* Autonegotiation
++ * Valid Values: enable and disable
++ * Defaule value: enable
++ */
++R1000_PARAM(autoneg, "Autonegotiation");
++#endif //MODULE_PARM
++
++MODULE_LICENSE("GPL");
++
++
++static int r1000_open (struct net_device *netdev);
++static int r1000_start_xmit (struct sk_buff *skb, struct net_device *netdev);
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
++//typedef int irqreturn_t;
++#define IRQ_NONE 0
++#define IRQ_HANDLED 1
++static void r1000_interrupt (int irq, void *dev_instance, struct pt_regs *regs);
++#else
++static irqreturn_t r1000_interrupt (int irq, void *dev_instance, struct pt_regs *regs);
++#endif
++
++static void r1000_init_ring (struct net_device *netdev);
++static void r1000_hw_start (struct net_device *netdev);
++static int r1000_close (struct net_device *netdev);
++static inline u32 ether_crc (int length, unsigned char *data);
++static void r1000_set_rx_mode (struct net_device *netdev);
++static void r1000_tx_timeout (struct net_device *netdev);
++static struct net_device_stats *r1000_get_stats(struct net_device *netdev);
++
++#ifdef R1000_JUMBO_FRAME_SUPPORT
++static int r1000_change_mtu(struct net_device *netdev, int new_mtu);
++#endif //end #ifdef R1000_JUMBO_FRAME_SUPPORT
++
++static void r1000_hw_PHY_config (struct net_device *netdev);
++static void r1000_hw_PHY_reset(struct net_device *netdev);
++//static const u16 r1000_intr_mask=LinkChg|RxDescUnavail|RxFIFOOver|TxErr|TxOK|RxErr|RxOK;
++static const u16 r1000_intr_mask=LinkChg|RxDescUnavail|TxErr|TxOK|RxErr|RxOK;
++static const unsigned int r1000_rx_config=(RX_FIFO_THRESH<<RxCfgFIFOShift)|(RX_DMA_BURST<<RxCfgDMAShift)|0x0000000E;
++
++static int r1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd);
++extern int ethtool_ioctl(struct ifreq *ifr);
++extern struct ethtool_ops r1000_ethtool_ops;
++static int r1000_set_speed_duplex(unsigned long ioaddr, unsigned int anar, unsigned int gbcr, unsigned int bmcr);
++
++static void r1000_rx_action(struct net_device *netdev);
++static void r1000_tx_action(struct net_device *netdev);
++
++#ifdef R1000_BOTTOM_HALVES
++static void r1000_rx_interrupt(unsigned long ndev);
++static void r1000_tx_interrupt(unsigned long ndev);
++#else
++static void r1000_rx_interrupt(struct net_device *netdev, struct r1000_private *priv, unsigned long ioaddr);
++static void r1000_tx_interrupt (struct net_device *netdev, struct r1000_private *priv, unsigned long ioaddr);
++#endif //R1000_BOTTOM_HALVES
++
++
++
++#ifdef R1000_DEBUG
++unsigned alloc_rxskb_cnt = 0;
++#define R1000_ALLOC_RXSKB(bufsize) dev_alloc_skb(bufsize); alloc_rxskb_cnt ++ ;
++#define R1000_FREE_RXSKB(skb) kfree_skb(skb); alloc_rxskb_cnt -- ;
++#define R1000_NETIF_RX(skb) netif_rx(skb); alloc_rxskb_cnt -- ;
++#else
++#define R1000_ALLOC_RXSKB(bufsize) dev_alloc_skb(bufsize);
++#define R1000_FREE_RXSKB(skb) kfree_skb(skb);
++#define R1000_NETIF_RX(skb) netif_rx(skb);
++#endif //end #ifdef R1000_DEBUG
++
++
++//=================================================================
++// PHYAR
++// bit Symbol
++// 31 Flag
++// 30-21 reserved
++// 20-16 5-bit GMII/MII register address
++// 15-0 16-bit GMII/MII register data
++//=================================================================
++void R1000_WRITE_GMII_REG( unsigned long ioaddr, int RegAddr, int value )
++{
++ int i;
++
++ RTL_W32 ( PHYAR, 0x80000000 | (RegAddr&0xFF)<<16 | value);
++ udelay(1000);
++
++ for( i = 2000; i > 0 ; i -- ){
++ // Check if the RTL8169 has completed writing to the specified MII register
++ if( ! (RTL_R32(PHYAR)&0x80000000) ){
++ break;
++ }
++ else{
++ udelay(100);
++ }// end of if( ! (RTL_R32(PHYAR)&0x80000000) )
++ }// end of for() loop
++}
++//=================================================================
++int R1000_READ_GMII_REG( unsigned long ioaddr, int RegAddr )
++{
++ int i, value = -1;
++
++ RTL_W32 ( PHYAR, 0x0 | (RegAddr&0xFF)<<16 );
++ udelay(1000);
++
++ for( i = 2000; i > 0 ; i -- ){
++ // Check if the RTL8169 has completed retrieving data from the specified MII register
++ if( RTL_R32(PHYAR) & 0x80000000 ){
++ value = (int)( RTL_R32(PHYAR)&0xFFFF );
++ break;
++ }
++ else{
++ udelay(100);
++ }// end of if( RTL_R32(PHYAR) & 0x80000000 )
++ }// end of for() loop
++ return value;
++}
++
++void r1000_phy_timer_t_handler( void *timer_data )
++{
++ struct net_device *netdev = (struct net_device *)timer_data;
++ struct r1000_private *priv = (struct r1000_private *) (netdev->priv);
++ unsigned long ioaddr = priv->ioaddr;
++
++ assert( priv->mcfg > MCFG_METHOD_1 );
++ assert( priv->pcfg < PCFG_METHOD_3 );
++
++ if( RTL_R8(PHYstatus) & LinkStatus ){
++ priv->phy_link_down_cnt = 0 ;
++ }
++ else{
++ priv->phy_link_down_cnt ++ ;
++ if( priv->phy_link_down_cnt >= 12 ){
++ // If link on 1000, perform phy reset.
++ if( R1000_READ_GMII_REG( ioaddr, PHY_1000_CTRL_REG ) & PHY_Cap_1000_Full )
++ {
++ DBG_PRINT("r1000_hw_PHY_reset\n");
++ r1000_hw_PHY_reset(netdev);
++ }
++
++ priv->phy_link_down_cnt = 0 ;
++ }
++ }
++
++ //---------------------------------------------------------------------------
++ //mod_timer is a more efficient way to update the expire field of an active timer.
++ //---------------------------------------------------------------------------
++// r1000_mod_timer( (&priv->phy_timer_t), 100 );
++}
++
++void r1000_timer_handler( void *timer_data )
++{
++ struct net_device *netdev = (struct net_device *)timer_data;
++ struct r1000_private *priv = (struct r1000_private *) (netdev->priv);
++
++ if( (priv->mcfg > MCFG_METHOD_1) && (priv->pcfg < PCFG_METHOD_3) ){
++ DBG_PRINT("FIX PCS -> r1000_phy_timer_t_handler\n");
++ priv->phy_link_down_cnt = 0;
++ r1000_phy_timer_t_handler( timer_data );
++ }
++
++ r1000_mod_timer( (&priv->r1000_timer), priv->expire_time );
++}
++
++static int r1000_set_speed_duplex(unsigned long ioaddr, unsigned int anar, unsigned int gbcr, unsigned int bmcr){
++ unsigned int i = 0;
++ unsigned int bmsr;
++
++ R1000_WRITE_GMII_REG(ioaddr,PHY_AUTO_NEGO_REG,anar);
++ R1000_WRITE_GMII_REG(ioaddr,PHY_1000_CTRL_REG,gbcr);
++ R1000_WRITE_GMII_REG(ioaddr,PHY_CTRL_REG,bmcr);
++
++ for(i=0;i<10000;i++){
++ bmsr = R1000_READ_GMII_REG(ioaddr,PHY_STAT_REG);
++ if(bmsr&PHY_Auto_Neco_Comp)
++ return 0;
++ }
++ return -1;
++}
++
++static int __devinit r1000_init_board ( struct pci_dev *pdev, struct net_device **netdev_out, unsigned long *ioaddr_out)
++{
++ unsigned long ioaddr = 0;
++ struct net_device *netdev;
++ struct r1000_private *priv;
++ int rc, i;
++#ifndef R1000_USE_IO
++ unsigned long mmio_start, mmio_end, mmio_flags, mmio_len;
++#endif
++
++ assert (pdev != NULL);
++ assert (ioaddr_out != NULL);
++
++ *ioaddr_out = 0;
++ *netdev_out = NULL;
++
++ // dev zeroed in init_etherdev
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)
++ netdev = init_etherdev (NULL, sizeof (*priv));
++#else
++ netdev = alloc_etherdev (sizeof (*priv));
++#endif
++
++ if (netdev == NULL) {
++ printk (KERN_ERR PFX "unable to alloc new ethernet\n");
++ return -ENOMEM;
++ }
++
++ SET_MODULE_OWNER(netdev);
++
++#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)
++ SET_NETDEV_DEV(netdev, &pdev->dev);
++#endif
++
++ priv = netdev->priv;
++
++ // enable device (incl. PCI PM wakeup and hotplug setup)
++ rc = pci_enable_device (pdev);
++ if (rc)
++ goto err_out;
++
++#ifndef R1000_USE_IO
++ mmio_start = pci_resource_start (pdev, 1);
++ mmio_end = pci_resource_end (pdev, 1);
++ mmio_flags = pci_resource_flags (pdev, 1);
++ mmio_len = pci_resource_len (pdev, 1);
++
++ // make sure PCI base addr 1 is MMIO
++ if (!(mmio_flags & IORESOURCE_MEM)) {
++ printk (KERN_ERR PFX "region #1 not an MMIO resource, aborting\n");
++ rc = -ENODEV;
++ goto err_out;
++ }
++
++ // check for weird/broken PCI region reporting
++ if ( mmio_len < RTL_MIN_IO_SIZE ) {
++ printk (KERN_ERR PFX "Invalid PCI region size(s), aborting\n");
++ rc = -ENODEV;
++ goto err_out;
++ }
++#endif
++
++ rc = pci_request_regions (pdev, netdev->name);
++ if (rc)
++ goto err_out;
++
++ // enable PCI bus-mastering
++ pci_set_master (pdev);
++
++#ifdef R1000_USE_IO
++ ioaddr = pci_resource_start(pdev, 0);
++#else
++ // ioremap MMIO region
++ ioaddr = (unsigned long)ioremap (mmio_start, mmio_len);
++ if (ioaddr == 0) {
++ printk (KERN_ERR PFX "cannot remap MMIO, aborting\n");
++ rc = -EIO;
++ goto err_out_free_res;
++ }
++#endif
++
++ // Soft reset the chip.
++ RTL_W8 ( ChipCmd, CmdReset);
++
++ // Check that the chip has finished the reset.
++ for (i = 1000; i > 0; i--){
++ if ( (RTL_R8(ChipCmd) & CmdReset) == 0){
++ break;
++ }
++ else{
++ udelay (10);
++ }
++ }
++
++ // identify config method
++ {
++ unsigned long val32 = (RTL_R32(TxConfig)&0x7c800000);
++
++ if( val32 == 0x38800000)
++ priv->mcfg = MCFG_METHOD_15;
++ else if( val32 == 0x30800000)
++ priv->mcfg = MCFG_METHOD_14;
++ else if( val32 == 0x34000000)
++ priv->mcfg = MCFG_METHOD_13;
++ else if( val32 == 0x38000000)
++ priv->mcfg = MCFG_METHOD_12;
++ else if( val32 == 0x30000000)
++ priv->mcfg = MCFG_METHOD_11;
++ else if( val32 == 0x18000000)
++ priv->mcfg = MCFG_METHOD_5;
++ else if( val32 == 0x10000000 )
++ priv->mcfg = MCFG_METHOD_4;
++ else if( val32 == 0x04000000 )
++ priv->mcfg = MCFG_METHOD_3;
++ else if( val32 == 0x00800000 )
++ priv->mcfg = MCFG_METHOD_2;
++ else if( val32 == 0x00000000 )
++ priv->mcfg = MCFG_METHOD_1;
++ else
++ priv->mcfg = MCFG_METHOD_1;
++ }
++ {
++ unsigned char val8 = (unsigned char)(R1000_READ_GMII_REG(ioaddr,3)&0x000f);
++ if( val8 == 0x00 ){
++ priv->pcfg = PCFG_METHOD_1;
++ }
++ else if( val8 == 0x01 ){
++ priv->pcfg = PCFG_METHOD_2;
++ }
++ else if( val8 == 0x02 ){
++ priv->pcfg = PCFG_METHOD_3;
++ }
++ else{
++ priv->pcfg = PCFG_METHOD_3;
++ }
++ }
++
++
++ for (i = ARRAY_SIZE (rtl_chip_info) - 1; i >= 0; i--){
++ if (priv->mcfg == rtl_chip_info[i].mcfg) {
++ priv->chipset = i;
++ goto match;
++ }
++ }
++
++ //if unknown chip, assume array element #0, original RTL-8169 in this case
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
++ printk (KERN_DEBUG PFX "PCI device %s: unknown chip version, assuming RTL-8169\n", pdev->slot_name);
++#endif
++ priv->chipset = 0;
++
++match:
++ *ioaddr_out = ioaddr;
++ *netdev_out = netdev;
++ return 0;
++
++#ifndef R1000_USE_IO
++err_out_free_res:
++ pci_release_regions (pdev);
++#endif
++
++err_out:
++ unregister_netdev(netdev);
++ kfree(netdev);
++ return rc;
++}
++
++int r1000_set_medium(struct net_device *netdev,u16 speed,u8 duplex,u8 autoneg){
++ struct r1000_private *priv = (struct r1000_private *)(netdev->priv);
++ unsigned long ioaddr = priv->ioaddr;
++ unsigned int anar=0,gbcr=0,bmcr=0,ret=0,val=0;
++
++ val = R1000_READ_GMII_REG( ioaddr, PHY_AUTO_NEGO_REG );
++#ifdef R1000_HW_FLOW_CONTROL_SUPPORT
++ val |= PHY_Cap_PAUSE | PHY_Cap_ASYM_PAUSE ;
++#endif //end #define R1000_HW_FLOW_CONTROL_SUPPORT
++
++ bmcr = PHY_Restart_Auto_Nego|PHY_Enable_Auto_Nego;
++
++ if(autoneg==AUTONEG_ENABLE){
++ priv->autoneg = AUTONEG_ENABLE;
++ anar = PHY_Cap_10_Half|PHY_Cap_10_Full|PHY_Cap_100_Half|PHY_Cap_100_Full;
++ gbcr = PHY_Cap_1000_Half|PHY_Cap_1000_Full;
++ }else{
++ priv->autoneg = AUTONEG_DISABLE;
++ if(speed==SPEED_1000){
++ priv->speed = SPEED_1000;
++ priv->duplex = DUPLEX_FULL;
++
++ anar = PHY_Cap_10_Half|PHY_Cap_10_Full|PHY_Cap_100_Half|PHY_Cap_100_Full;
++ if((priv->mcfg==MCFG_METHOD_13)||(priv->mcfg==MCFG_METHOD_14)||(priv->mcfg==MCFG_METHOD_15))
++ gbcr = PHY_Cap_Null;
++ else
++ gbcr = PHY_Cap_1000_Half|PHY_Cap_1000_Full;
++ }else if((speed==SPEED_100)&&(duplex==DUPLEX_FULL)){
++ priv->speed = SPEED_100;
++ priv->duplex = DUPLEX_FULL;
++
++ anar = PHY_Cap_10_Half|PHY_Cap_10_Full|PHY_Cap_100_Half|PHY_Cap_100_Full;
++ gbcr = PHY_Cap_Null;
++ }else if((speed==SPEED_100)&&(duplex==DUPLEX_HALF)){
++ priv->speed = SPEED_100;
++ priv->duplex = DUPLEX_HALF;
++
++ anar = PHY_Cap_10_Half|PHY_Cap_10_Full|PHY_Cap_100_Half;
++ gbcr = PHY_Cap_Null;
++ }else if((speed==SPEED_10)&&(duplex==DUPLEX_FULL)){
++ priv->speed = SPEED_10;
++ priv->duplex = DUPLEX_FULL;
++
++ anar = PHY_Cap_10_Half|PHY_Cap_10_Full;
++ gbcr = PHY_Cap_Null;
++ }else if((speed==SPEED_10)&&(duplex==DUPLEX_HALF)){
++ priv->speed = SPEED_10;
++ priv->duplex = DUPLEX_HALF;
++
++ anar = PHY_Cap_10_Half;
++ gbcr = PHY_Cap_Null;
++ }else{
++ priv->speed = SPEED_100;
++ priv->duplex = DUPLEX_FULL;
++
++ anar = PHY_Cap_10_Half|PHY_Cap_10_Full|PHY_Cap_100_Half|PHY_Cap_100_Full;
++ gbcr = PHY_Cap_Null;
++ }
++ }
++
++ //enable flow control
++ anar |= val&0xC1F;
++
++ ret = r1000_set_speed_duplex(ioaddr,anar,gbcr,bmcr);
++
++ return ret;
++}
++
++
++static int r1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd){
++
++ if(!netif_running(netdev))
++ return -EINVAL;
++
++ switch(cmd){
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
++ case SIOCETHTOOL:
++ return ethtool_ioctl(ifr);
++#endif
++ default:
++ return -EOPNOTSUPP;
++ }
++}
++
++
++
++
++
++//======================================================================================================
++static int __devinit r1000_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
++{
++ struct net_device *netdev = NULL;
++ struct r1000_private *priv = NULL;
++ unsigned long ioaddr = 0;
++ static int board_idx = -1;
++ int i,rc;
++// int val=0;
++ int speed_opt = SPEED_100;
++ int duplex_opt = DUPLEX_FULL;
++ int autoneg_opt = AUTONEG_ENABLE;
++
++
++ assert (pdev != NULL);
++ assert (ent != NULL);
++
++ board_idx++;
++
++
++ i = r1000_init_board (pdev, &netdev, &ioaddr);
++ if (i < 0) {
++ return i;
++ }
++
++ priv = netdev->priv;
++
++ assert (ioaddr != NULL);
++ assert (netdev != NULL);
++ assert (priv != NULL);
++
++ // Get MAC address //
++ for (i = 0; i < MAC_ADDR_LEN ; i++){
++ netdev->dev_addr[i] = RTL_R8( MAC0 + i );
++ }
++
++ netdev->open = r1000_open;
++ netdev->hard_start_xmit = r1000_start_xmit;
++ netdev->get_stats = r1000_get_stats;
++ netdev->stop = r1000_close;
++ netdev->tx_timeout = r1000_tx_timeout;
++ netdev->set_multicast_list = r1000_set_rx_mode;
++ netdev->watchdog_timeo = TX_TIMEOUT;
++ netdev->irq = pdev->irq;
++ netdev->base_addr = (unsigned long) ioaddr;
++
++#ifdef R1000_JUMBO_FRAME_SUPPORT
++ netdev->change_mtu = r1000_change_mtu;
++#endif //end #ifdef R1000_JUMBO_FRAME_SUPPORT
++
++ netdev->do_ioctl = r1000_ioctl;
++#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)
++ netdev->ethtool_ops = &r1000_ethtool_ops;
++#endif
++
++#ifdef R1000_BOTTOM_HALVES
++ tasklet_init(&priv->r1000_rx_tasklet,r1000_rx_interrupt,(unsigned long)netdev);
++ tasklet_init(&priv->r1000_tx_tasklet,r1000_tx_interrupt,(unsigned long)netdev);
++#endif //R1000_BOTTOM_HALVES
++
++
++ priv = netdev->priv; // private data //
++ priv->pci_dev = pdev;
++ priv->ioaddr = ioaddr;
++
++//#ifdef R1000_JUMBO_FRAME_SUPPORT
++ priv->curr_mtu_size = netdev->mtu;
++ priv->tx_pkt_len = netdev->mtu + ETH_HDR_LEN;
++ priv->rx_pkt_len = netdev->mtu + ETH_HDR_LEN;
++ priv->hw_rx_pkt_len = priv->rx_pkt_len + 8;
++//#endif //end #ifdef R1000_JUMBO_FRAME_SUPPORT
++
++ DBG_PRINT("-------------------------- \n");
++ DBG_PRINT("netdev->mtu = %d \n", netdev->mtu);
++ DBG_PRINT("priv->curr_mtu_size = %d \n", priv->curr_mtu_size);
++ DBG_PRINT("priv->tx_pkt_len = %d \n", priv->tx_pkt_len);
++ DBG_PRINT("priv->rx_pkt_len = %d \n", priv->rx_pkt_len);
++ DBG_PRINT("priv->hw_rx_pkt_len = %d \n", priv->hw_rx_pkt_len);
++ DBG_PRINT("-------------------------- \n");
++
++ spin_lock_init(&priv->lock);
++ spin_lock_init(&priv->tx_lock);
++ spin_lock_init(&priv->rx_lock);
++
++ rc = register_netdev(netdev);
++ if(rc){
++#ifndef R1000_USE_IO
++ iounmap ((void *)(netdev->base_addr));
++#endif
++ pci_release_regions(pdev);
++ pci_disable_device(pdev);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
++ kfree(netdev);
++#else
++ free_netdev(netdev);
++#endif
++ return rc;
++ }
++
++ pci_set_drvdata(pdev,netdev); // pdev->driver_data = data;
++
++
++ printk (KERN_DEBUG "%s: Identified chip type is '%s'.\n",netdev->name,rtl_chip_info[priv->chipset].name);
++ printk (KERN_INFO "%s: %s at 0x%lx, "
++ "%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x, "
++ "IRQ %d\n",
++ netdev->name,
++ R1000_DRIVER_NAME,
++ netdev->base_addr,
++ netdev->dev_addr[0],netdev->dev_addr[1],
++ netdev->dev_addr[2],netdev->dev_addr[3],
++ netdev->dev_addr[4],netdev->dev_addr[5],
++ netdev->irq);
++
++
++ // Config PHY
++ r1000_hw_PHY_config(netdev);
++
++ DBG_PRINT("Set MAC Reg C+CR Offset 0x82h = 0x01h\n");
++ RTL_W8( 0x82, 0x01 );
++
++ if( priv->mcfg < MCFG_METHOD_3 ){
++ DBG_PRINT("Set PCI Latency=0x40\n");
++ pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x40);
++ }
++
++ if( priv->mcfg == MCFG_METHOD_2 ){
++ DBG_PRINT("Set MAC Reg C+CR Offset 0x82h = 0x01h\n");
++ RTL_W8( 0x82, 0x01 );
++ DBG_PRINT("Set PHY Reg 0x0bh = 0x00h\n");
++ R1000_WRITE_GMII_REG( ioaddr, 0x0b, 0x0000 ); //w 0x0b 15 0 0
++ }
++
++ // if TBI is not endbled
++ if( !(RTL_R8(PHYstatus) & TBI_Enable) ){
++// val = R1000_READ_GMII_REG( ioaddr, PHY_AUTO_NEGO_REG );
++
++//#ifdef R1000_HW_FLOW_CONTROL_SUPPORT
++// val |= PHY_Cap_PAUSE | PHY_Cap_ASYM_PAUSE ;
++//#endif //end #define R1000_HW_FLOW_CONTROL_SUPPORT
++
++ if(speed[board_idx] == -1)
++ speed[board_idx] = SPEED_1000;
++
++ if((duplex[board_idx] == -1) || ((duplex[board_idx] == DUPLEX_HALF) && (speed[board_idx] == SPEED_1000)))
++ duplex[board_idx] = DUPLEX_FULL;
++
++ if(autoneg[board_idx] == -1)
++ autoneg[board_idx] = AUTONEG_ENABLE;
++
++ speed_opt = (board_idx >= MAX_UNITS) ? -1 : speed[board_idx];
++ duplex_opt = (board_idx >= MAX_UNITS) ? -1 : duplex[board_idx];
++ autoneg_opt = (board_idx >= MAX_UNITS) ? -1 : autoneg[board_idx];
++
++ r1000_set_medium(netdev,speed_opt,duplex_opt,autoneg_opt);
++ }// end of TBI is not enabled
++ else{
++ udelay(100);
++ DBG_PRINT("1000Mbps Full-duplex operation, TBI Link %s!\n",(RTL_R32(TBICSR) & TBILinkOK) ? "OK" : "Failed" );
++ }// end of TBI is not enabled
++
++ //show some information after the driver is inserted
++ if(( priv->mcfg == MCFG_METHOD_11 )||( priv->mcfg == MCFG_METHOD_12 ))
++ printk("Realtek RTL8168/8111 Family PCI-E Gigabit Ethernet Network Adapter\n");
++ else if((priv->mcfg==MCFG_METHOD_13)||(priv->mcfg==MCFG_METHOD_14)||(priv->mcfg==MCFG_METHOD_15))
++ printk("Realtek RTL8139/810x Family Fast Ethernet Network Adapter\n");
++ else
++ printk("Realtek RTL8169/8110 Family Gigabit Ethernet Network Adapter\n");
++
++ printk("Driver version:%s\n",R1000_VERSION);
++ printk("Released date:%s\n",RELEASE_DATE);
++ if(RTL_R8(PHYstatus) & LinkStatus){
++ printk("Link Status:%s\n","Linked");
++
++ if(RTL_R8(PHYstatus) & _1000Mbps)
++ printk("Link Speed:1000Mbps\n");
++ else if(RTL_R8(PHYstatus) & _100Mbps)
++ printk("Link Speed:100Mbps\n");
++ else if(RTL_R8(PHYstatus) & _10Mbps)
++ printk("Link Speed:10Mbps\n");
++
++ printk("Duplex mode:%s\n",RTL_R8(PHYstatus)&FullDup?"Full-Duplex":"Half-Duplex");
++ }else{
++ printk("Link Status:%s\n","Not Linked");
++ }
++#ifdef R1000_USE_IO
++ printk("I/O Base:0x%X(I/O port)\n",(unsigned int)(priv->ioaddr));
++#else
++ printk("I/O Base:0x%X(I/O memory)\n",(unsigned int)(priv->ioaddr));
++#endif //R1000_USE_IO
++ printk("IRQ:%d\n",netdev->irq);
++
++ return 0;
++}
++
++static void __devexit r1000_remove_one (struct pci_dev *pdev)
++{
++ struct net_device *netdev = pci_get_drvdata(pdev);
++
++ assert (netdev != NULL);
++ assert (priv != NULL);
++
++ unregister_netdev(netdev);
++
++#ifndef R1000_USE_IO
++ iounmap ((void *)(netdev->base_addr));
++#endif
++ pci_release_regions (pdev);
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
++ kfree(netdev);
++#else
++ free_netdev(netdev);
++#endif
++
++ pci_set_drvdata (pdev, NULL);
++}
++
++static int r1000_open (struct net_device *netdev)
++{
++ struct r1000_private *priv = netdev->priv;
++ struct pci_dev *pdev = priv->pci_dev;
++ int retval;
++// u8 diff;
++// u32 TxPhyAddr, RxPhyAddr;
++
++
++ if( priv->drvinit_fail == 1 ){
++ printk("%s: Gigabit driver open failed.\n", netdev->name );
++ return -ENOMEM;
++ }
++
++ retval = request_irq (netdev->irq, r1000_interrupt, SA_SHIRQ, netdev->name, netdev);
++ if (retval) {
++ return retval;
++ }
++
++ //2004-05-11
++ // Allocate tx/rx descriptor space
++ priv->sizeof_txdesc_space = NUM_TX_DESC * sizeof(struct TxDesc)+256;
++ priv->txdesc_space = pci_alloc_consistent( pdev, priv->sizeof_txdesc_space, &priv->txdesc_phy_dma_addr );
++ if( priv->txdesc_space == NULL ){
++ printk("%s: Gigabit driver alloc txdesc_space failed.\n", netdev->name );
++ return -ENOMEM;
++ }
++ priv->sizeof_rxdesc_space = NUM_RX_DESC * sizeof(struct RxDesc)+256;
++ priv->rxdesc_space = pci_alloc_consistent( pdev, priv->sizeof_rxdesc_space, &priv->rxdesc_phy_dma_addr );
++ if( priv->rxdesc_space == NULL ){
++ printk("%s: Gigabit driver alloc rxdesc_space failed.\n", netdev->name );
++ return -ENOMEM;
++ }
++
++ if(priv->txdesc_phy_dma_addr & 0xff){
++ printk("%s: Gigabit driver txdesc_phy_dma_addr is not 256-bytes-aligned.\n", netdev->name );
++ }
++ if(priv->rxdesc_phy_dma_addr & 0xff){
++ printk("%s: Gigabit driver rxdesc_phy_dma_addr is not 256-bytes-aligned.\n", netdev->name );
++ }
++ // Set tx/rx descriptor space
++ priv->TxDescArray = (struct TxDesc *)priv->txdesc_space;
++ priv->RxDescArray = (struct RxDesc *)priv->rxdesc_space;
++
++ {
++ int i;
++ struct sk_buff *skb = NULL;
++
++ for(i=0;i<NUM_RX_DESC;i++){
++ skb = R1000_ALLOC_RXSKB(MAX_RX_SKBDATA_SIZE);
++ if( skb != NULL ) {
++ skb_reserve (skb, 8); // 16 byte align the IP fields. //
++ priv->Rx_skbuff[i] = skb;
++ }
++ else{
++ printk("%s: Gigabit driver failed to allocate skbuff.\n", netdev->name);
++ priv->drvinit_fail = 1;
++ }
++ }
++ }
++
++
++ //////////////////////////////////////////////////////////////////////////////
++ r1000_init_ring(netdev);
++ r1000_hw_start(netdev);
++
++
++ // ------------------------------------------------------
++ DBG_PRINT("FIX PCS -> r1000_request_timer\n");
++ priv->expire_time = R1000_TIMER_EXPIRE_TIME;
++ r1000_request_timer( (&priv->r1000_timer), priv->expire_time, r1000_timer_handler, ((void *)netdev) ); //in open()
++
++
++ DBG_PRINT("%s: %s() alloc_rxskb_cnt = %d\n", netdev->name, __FUNCTION__, alloc_rxskb_cnt );
++
++ return 0;
++
++}//end of r1000_open (struct net_device *netdev)
++
++static void r1000_hw_PHY_reset(struct net_device *netdev)
++{
++ int val, phy_reset_expiretime = 50;
++ struct r1000_private *priv = netdev->priv;
++ unsigned long ioaddr = priv->ioaddr;
++
++ DBG_PRINT("%s: Reset RTL8169s PHY\n", netdev->name);
++
++ val = ( R1000_READ_GMII_REG( ioaddr, 0 ) | 0x8000 ) & 0xffff;
++ R1000_WRITE_GMII_REG( ioaddr, 0, val );
++
++ do //waiting for phy reset
++ {
++ if( R1000_READ_GMII_REG( ioaddr, 0 ) & 0x8000 ){
++ phy_reset_expiretime --;
++ udelay(100);
++ }
++ else{
++ break;
++ }
++ }while( phy_reset_expiretime >= 0 );
++
++ assert( phy_reset_expiretime > 0 );
++}
++
++static void r1000_hw_PHY_config (struct net_device *netdev)
++{
++ struct r1000_private *priv = netdev->priv;
++ void *ioaddr = (void*)priv->ioaddr;
++
++ DBG_PRINT("priv->mcfg=%d, priv->pcfg=%d\n",priv->mcfg,priv->pcfg);
++
++ if( priv->mcfg == MCFG_METHOD_4 ){
++#if 0
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x1F, 0x0001 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x1b, 0x841e );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x0e, 0x7bfb );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x09, 0x273a );
++#endif
++
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x1F, 0x0002 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x01, 0x90D0 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x1F, 0x0000 );
++ }else if((priv->mcfg == MCFG_METHOD_2)||(priv->mcfg == MCFG_METHOD_3)){
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x1f, 0x0001 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x06, 0x006e );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x08, 0x0708 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x15, 0x4000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x18, 0x65c7 );
++
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x1f, 0x0001 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x03, 0x00a1 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x02, 0x0008 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x01, 0x0120 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x00, 0x1000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0x0800 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0x0000 );
++
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x03, 0xff41 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x02, 0xdf60 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x01, 0x0140 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x00, 0x0077 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0x7800 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0x7000 );
++
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x03, 0x802f );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x02, 0x4f02 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x01, 0x0409 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x00, 0xf0f9 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0x9800 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0x9000 );
++
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x03, 0xdf01 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x02, 0xdf20 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x01, 0xff95 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x00, 0xba00 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xa800 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xa000 );
++
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x03, 0xff41 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x02, 0xdf20 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x01, 0x0140 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x00, 0x00bb );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xb800 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xb000 );
++
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x03, 0xdf41 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x02, 0xdc60 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x01, 0x6340 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x00, 0x007d );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xd800 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xd000 );
++
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x03, 0xdf01 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x02, 0xdf20 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x01, 0x100a );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x00, 0xa0ff );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xf800 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xf000 );
++
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x1f, 0x0000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x0b, 0x0000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x00, 0x9200 );
++#if 0
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x1F, 0x0001 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x15, 0x1000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x18, 0x65C7 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0x0000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x03, 0x00A1 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x02, 0x0008 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x01, 0x1020 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x00, 0x1000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0x0800 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0x0000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0x7000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x03, 0xFF41 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x02, 0xDE60 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x01, 0x0140 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x00, 0x0077 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0x7800 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0x7000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xA000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x03, 0xDF01 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x02, 0xDF20 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x01, 0xFF95 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x00, 0xFA00 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xA800 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xA000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xB000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x03, 0xFF41 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x02, 0xDE20 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x01, 0x0140 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x00, 0x00BB );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xB800 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xB000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xF000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x03, 0xDF01 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x02, 0xDF20 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x01, 0xFF95 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x00, 0xBF00 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xF800 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0xF000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x04, 0x0000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x1F, 0x0000 );
++ R1000_WRITE_GMII_REG( (unsigned long)ioaddr, 0x0B, 0x0000 );
++#endif
++ }
++ else{
++ DBG_PRINT("priv->mcfg=%d. Discard hw PHY config.\n",priv->mcfg);
++ }
++}
++
++static void r1000_hw_start (struct net_device *netdev)
++{
++ struct r1000_private *priv = netdev->priv;
++ struct pci_dev *pdev = priv->pci_dev;
++ unsigned long ioaddr = priv->ioaddr;
++ u32 i;
++ u8 i8;
++ u16 i16;
++
++ if((priv->mcfg!=MCFG_METHOD_5)&&(priv->mcfg!=MCFG_METHOD_11)&&
++ (priv->mcfg!=MCFG_METHOD_12)&&(priv->mcfg!=MCFG_METHOD_13)&&
++ (priv->mcfg!=MCFG_METHOD_14)&&(priv->mcfg!=MCFG_METHOD_15)){
++ /* Soft reset the chip. */
++ RTL_W8 ( ChipCmd, CmdReset);
++
++ /* Check that the chip has finished the reset. */
++ for (i = 1000; i > 0; i--){
++ if ((RTL_R8( ChipCmd ) & CmdReset) == 0) break;
++ else udelay (10);
++ }
++
++ RTL_W8 ( Cfg9346, Cfg9346_Unlock);
++ RTL_W8 ( ChipCmd, CmdTxEnb | CmdRxEnb);
++ RTL_W8 ( ETThReg, ETTh);
++
++ RTL_W16(CPlusCmd,RTL_R16(CPlusCmd)|CPCR_MulRW_Enable);
++ pci_write_config_byte(pdev,Cache_Line_Size,0x08);
++
++ // For gigabit rtl8169
++ RTL_W16 ( RxMaxSize, (unsigned short)priv->hw_rx_pkt_len );
++
++ // Set Rx Config register
++ i = r1000_rx_config | ( RTL_R32( RxConfig ) & rtl_chip_info[priv->chipset].RxConfigMask);
++ RTL_W32 ( RxConfig, i);
++
++
++ /* Set DMA burst size and Interframe Gap Time */
++ RTL_W32 ( TxConfig, (TX_DMA_BURST << TxDMAShift) | (InterFrameGap << TxInterFrameGapShift) );
++
++
++
++ RTL_W16( CPlusCmd, RTL_R16(CPlusCmd) );
++
++ if(priv->mcfg==MCFG_METHOD_2||priv->mcfg==MCFG_METHOD_3){
++ RTL_W16( CPlusCmd, (RTL_R16(CPlusCmd)|(1<<14)|(1<<3)) );
++ DBG_PRINT("Set MAC Reg C+CR Offset 0xE0: bit-3 and bit-14\n");
++ }else{
++ RTL_W16( CPlusCmd, (RTL_R16(CPlusCmd)|(1<<3)) );
++ DBG_PRINT("Set MAC Reg C+CR Offset 0xE0: bit-3.\n");
++ }
++
++ {
++ RTL_W16(0xE2,0x0000);
++ }
++
++ priv->cur_rx = 0;
++
++ RTL_W32 ( TxDescStartAddr, priv->txdesc_phy_dma_addr);
++ RTL_W32 ( TxDescStartAddr + 4, 0x00);
++ RTL_W32 ( RxDescStartAddr, priv->rxdesc_phy_dma_addr);
++ RTL_W32 ( RxDescStartAddr + 4, 0x00);
++
++ RTL_W8 ( Cfg9346, Cfg9346_Lock );
++ udelay (10);
++
++ RTL_W32 ( RxMissed, 0 );
++
++ r1000_set_rx_mode(netdev);
++
++ RTL_W16 ( MultiIntr, RTL_R16(MultiIntr) & 0xF000);
++
++ RTL_W16 ( IntrMask, r1000_intr_mask);
++ }else{
++ /* Soft reset the chip. */
++ RTL_W8 ( ChipCmd, CmdReset);
++
++ /* Check that the chip has finished the reset. */
++ for (i = 1000; i > 0; i--){
++ if ((RTL_R8( ChipCmd ) & CmdReset) == 0) break;
++ else udelay (10);
++ }
++
++ if(priv->mcfg==MCFG_METHOD_5){
++ RTL_W16(CPlusCmd,RTL_R16(CPlusCmd)|CPCR_MulRW_Enable);
++ pci_write_config_byte(pdev,Cache_Line_Size,0x08);
++ }
++
++ if( priv->mcfg == MCFG_METHOD_13 ){
++ pci_write_config_word(pdev,0x68,0x00);
++ pci_write_config_word(pdev,0x69,0x08);
++ }
++
++ if( priv->mcfg == MCFG_METHOD_5 ){
++ i8=RTL_R8(Config2);
++ i8=i8&0x07;
++ if(i8&&0x01)
++ RTL_W32(Off7Ch,0x0007FFFF);
++
++ i=0x0007FF00;
++ RTL_W32(Off7Ch, i);
++
++ pci_read_config_word(pdev,0x04,&i16);
++ i16=i16&0xEF;
++ pci_write_config_word(pdev,0x04,i16);
++ }
++
++ RTL_W8 ( Cfg9346, Cfg9346_Unlock);
++ RTL_W8 ( ETThReg, ETTh);
++
++ // For gigabit rtl8169
++ RTL_W16 ( RxMaxSize, (unsigned short)priv->hw_rx_pkt_len );
++
++ RTL_W16( CPlusCmd, RTL_R16(CPlusCmd) );
++
++ if(priv->mcfg==MCFG_METHOD_2||priv->mcfg==MCFG_METHOD_3){
++ RTL_W16( CPlusCmd, (RTL_R16(CPlusCmd)|(1<<14)|(1<<3)) );
++ DBG_PRINT("Set MAC Reg C+CR Offset 0xE0: bit-3 and bit-14\n");
++ }else{
++ RTL_W16( CPlusCmd, (RTL_R16(CPlusCmd)|(1<<3)) );
++ DBG_PRINT("Set MAC Reg C+CR Offset 0xE0: bit-3.\n");
++ }
++
++ {
++ RTL_W16(0xE2,0x0000);
++ }
++
++ priv->cur_rx = 0;
++
++ RTL_W32 ( TxDescStartAddr, priv->txdesc_phy_dma_addr);
++ RTL_W32 ( TxDescStartAddr + 4, 0x00);
++ RTL_W32 ( RxDescStartAddr, priv->rxdesc_phy_dma_addr);
++ RTL_W32 ( RxDescStartAddr + 4, 0x00);
++ RTL_W8 ( ChipCmd, CmdTxEnb | CmdRxEnb);
++ // Set Rx Config register
++ i = r1000_rx_config | ( RTL_R32( RxConfig ) & rtl_chip_info[priv->chipset].RxConfigMask);
++ RTL_W32 ( RxConfig, i);
++
++ /* Set DMA burst size and Interframe Gap Time */
++ RTL_W32 ( TxConfig, (TX_DMA_BURST << TxDMAShift) | (InterFrameGap << TxInterFrameGapShift) );
++
++ RTL_W8 ( Cfg9346, Cfg9346_Lock );
++ udelay (10);
++
++ RTL_W32 ( RxMissed, 0 );
++
++ r1000_set_rx_mode(netdev);
++
++ RTL_W16 ( MultiIntr, RTL_R16(MultiIntr) & 0xF000);
++
++ RTL_W16 ( IntrMask, r1000_intr_mask);
++ }
++
++ netif_start_queue(netdev);
++
++}//end of r1000_hw_start (struct net_device *netdev)
++
++static void r1000_init_ring (struct net_device *netdev)
++{
++ struct r1000_private *priv = netdev->priv;
++ struct pci_dev *pdev = priv->pci_dev;
++ int i;
++ struct sk_buff *skb;
++
++
++ priv->cur_rx = 0;
++ priv->cur_tx = 0;
++ priv->dirty_tx = 0;
++ memset(priv->TxDescArray, 0x0, NUM_TX_DESC*sizeof(struct TxDesc));
++ memset(priv->RxDescArray, 0x0, NUM_RX_DESC*sizeof(struct RxDesc));
++
++
++ for (i=0 ; i<NUM_TX_DESC ; i++){
++ priv->Tx_skbuff[i]=NULL;
++ priv->txdesc_array_dma_addr[i] = pci_map_single(pdev, &priv->TxDescArray[i], sizeof(struct TxDesc), PCI_DMA_TODEVICE);
++ }
++
++ for (i=0; i <NUM_RX_DESC; i++) {
++ if(i==(NUM_RX_DESC-1)){
++ priv->RxDescArray[i].status = cpu_to_le32((OWNbit | EORbit) | (unsigned long)priv->hw_rx_pkt_len);
++ }
++ else{
++ priv->RxDescArray[i].status = cpu_to_le32(OWNbit | (unsigned long)priv->hw_rx_pkt_len);
++ }
++
++ {//-----------------------------------------------------------------------
++ skb = priv->Rx_skbuff[i];
++ priv->rx_skbuff_dma_addr[i] = pci_map_single(pdev, skb->data, MAX_RX_SKBDATA_SIZE, PCI_DMA_FROMDEVICE);
++
++ if( skb != NULL ){
++ priv->RxDescArray[i].buf_addr = cpu_to_le32(priv->rx_skbuff_dma_addr[i]);
++ priv->RxDescArray[i].buf_Haddr = 0;
++ }
++ else{
++ DBG_PRINT("%s: %s() Rx_skbuff == NULL\n", netdev->name, __FUNCTION__);
++ priv->drvinit_fail = 1;
++ }
++ }//-----------------------------------------------------------------------
++ priv->rxdesc_array_dma_addr[i] = pci_map_single(pdev, &priv->RxDescArray[i], sizeof(struct RxDesc), PCI_DMA_TODEVICE);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
++ pci_dma_sync_single(pdev, priv->rxdesc_array_dma_addr[i], sizeof(struct RxDesc), PCI_DMA_TODEVICE);
++#endif
++ }
++}
++
++static void r1000_tx_clear (struct r1000_private *priv)
++{
++ int i;
++
++ priv->cur_tx = 0;
++ for ( i = 0 ; i < NUM_TX_DESC ; i++ ){
++ if ( priv->Tx_skbuff[i] != NULL ) {
++ dev_kfree_skb ( priv->Tx_skbuff[i] );
++ priv->Tx_skbuff[i] = NULL;
++ priv->stats.tx_dropped++;
++ }
++ }
++}
++
++static void r1000_tx_timeout (struct net_device *netdev)
++{
++ struct r1000_private *priv = netdev->priv;
++ unsigned long ioaddr = priv->ioaddr;
++ u8 tmp8;
++
++ /* disable Tx, if not already */
++ tmp8 = RTL_R8(ChipCmd);
++ if(tmp8&CmdTxEnb){
++ RTL_W8(ChipCmd,tmp8 & ~CmdTxEnb);
++ }
++
++ /* Disable interrupts by clearing the interrupt mask. */
++ RTL_W16(IntrMask,0x0000);
++
++ /* Stop a shared interrupt from scavenging while we are. */
++// spin_lock_irq(&priv->lock);
++ spin_lock_irq(&priv->tx_lock);
++ r1000_tx_clear(priv);
++// spin_unlock_irq(&priv->lock);
++ spin_unlock_irq(&priv->tx_lock);
++
++
++ r1000_hw_start(netdev);
++
++ netif_wake_queue(netdev);
++}
++
++static int r1000_start_xmit (struct sk_buff *skb, struct net_device *netdev)
++{
++ struct r1000_private *priv = netdev->priv;
++ unsigned long ioaddr = priv->ioaddr;
++ struct pci_dev *pdev = priv->pci_dev;
++ int entry = priv->cur_tx % NUM_TX_DESC;
++ int buf_len = 60;
++ dma_addr_t txbuf_dma_addr;
++
++// spin_lock_irq(&priv->lock);
++ spin_lock(&priv->tx_lock);
++ if( (le32_to_cpu(priv->TxDescArray[entry].status) & OWNbit)==0 ){
++ priv->Tx_skbuff[entry] = skb;
++ txbuf_dma_addr = pci_map_single(pdev, skb->data, skb->len, PCI_DMA_TODEVICE);
++
++ priv->TxDescArray[entry].buf_addr = cpu_to_le32(txbuf_dma_addr);
++ DBG_PRINT("%s: TX pkt_size = %d\n", __FUNCTION__, skb->len);
++ if( skb->len <= priv->tx_pkt_len ){
++ buf_len = skb->len;
++ }
++ else{
++ printk("%s: Error -- Tx packet size(%d) > mtu(%d)+14\n", netdev->name, skb->len, netdev->mtu);
++ buf_len = priv->tx_pkt_len;
++ }
++
++ if( entry != (NUM_TX_DESC-1) ){
++ priv->TxDescArray[entry].status = cpu_to_le32((OWNbit | FSbit | LSbit) | buf_len);
++ }
++ else{
++ priv->TxDescArray[entry].status = cpu_to_le32((OWNbit | EORbit | FSbit | LSbit) | buf_len);
++ }
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
++ pci_dma_sync_single(pdev, priv->txdesc_array_dma_addr[entry], sizeof(struct TxDesc), PCI_DMA_TODEVICE);
++#endif
++
++
++ RTL_W8(TxPoll,0x40); //set polling bit
++
++ netdev->trans_start = jiffies;
++
++ priv->stats.tx_bytes += ( (skb->len > ETH_ZLEN) ? skb->len : ETH_ZLEN);
++ priv->cur_tx++;
++ }//end of if( (priv->TxDescArray[entry].status & 0x80000000)==0 )
++
++// spin_unlock_irq(&priv->lock);
++
++ if ( (priv->cur_tx - NUM_TX_DESC) == priv->dirty_tx ){
++ netif_stop_queue(netdev);
++ }
++ else{
++ if (netif_queue_stopped(netdev)){
++ netif_wake_queue(netdev);
++ }
++ }
++
++ spin_unlock(&priv->tx_lock);
++
++ return 0;
++}
++
++#ifdef R1000_BOTTOM_HALVES
++static void r1000_tx_interrupt(unsigned long ndev){
++ struct net_device *netdev = (void *)ndev;
++ struct r1000_private *priv = netdev->priv;
++#else
++static void r1000_tx_interrupt(struct net_device *netdev, struct r1000_private *priv, unsigned long ioaddr){
++#endif //R1000_BOTTOM_HALVES
++
++ unsigned long flags;
++
++ spin_lock_irqsave(&priv->tx_lock,flags);
++ r1000_tx_action(netdev);
++ spin_unlock_irqrestore(&priv->tx_lock,flags);
++}
++
++static void FASTCALL (r1000_tx_action(struct net_device *netdev));
++static void fastcall r1000_tx_action(struct net_device *netdev){
++
++ struct r1000_private *priv = netdev->priv;
++ unsigned long dirty_tx, tx_left=0;
++ int entry = priv->cur_tx % NUM_TX_DESC;
++ int txloop_cnt = 0;
++
++ assert (netdev != NULL);
++ assert (priv != NULL);
++ assert (ioaddr != NULL);
++
++ dirty_tx = priv->dirty_tx;
++ tx_left = priv->cur_tx - dirty_tx;
++
++ while( (tx_left > 0) && (txloop_cnt < max_interrupt_work) ){
++ if( (le32_to_cpu(priv->TxDescArray[entry].status) & OWNbit) == 0 ){
++ dev_kfree_skb_irq( priv->Tx_skbuff[dirty_tx % NUM_TX_DESC] );
++ priv->Tx_skbuff[dirty_tx % NUM_TX_DESC] = NULL;
++ priv->stats.tx_packets++;
++ dirty_tx++;
++ tx_left--;
++ entry++;
++ }
++ txloop_cnt ++;
++ }
++
++ if (priv->dirty_tx != dirty_tx) {
++ priv->dirty_tx = dirty_tx;
++ if (netif_queue_stopped(netdev))
++ netif_wake_queue(netdev);
++ }
++}
++
++#ifdef R1000_BOTTOM_HALVES
++static void r1000_rx_interrupt(unsigned long ndev){
++ struct net_device *netdev = (void *)ndev;
++ struct r1000_private *priv = netdev->priv;
++#else
++static void r1000_rx_interrupt(struct net_device *netdev, struct r1000_private *priv, unsigned long ioaddr){
++#endif //R1000_BOTTOM_HALVES
++
++ unsigned long flags;
++
++ spin_lock_irqsave(&priv->rx_lock,flags);
++ r1000_rx_action(netdev);
++ spin_unlock_irqrestore(&priv->rx_lock,flags);
++}
++
++static void FASTCALL (r1000_rx_action(struct net_device *netdev));
++static void fastcall r1000_rx_action(struct net_device *netdev){
++
++ struct r1000_private *priv = netdev->priv;
++ struct pci_dev *pdev = priv->pci_dev;
++ int cur_rx;
++ int pkt_size = 0 ;
++ int rxdesc_cnt = 0;
++ int ret;
++ struct sk_buff *n_skb = NULL;
++ struct sk_buff *cur_skb;
++ struct sk_buff *rx_skb;
++ struct RxDesc *rxdesc;
++
++ assert(netdev != NULL);
++ assert (priv != NULL);
++ assert (ioaddr != NULL);
++
++ cur_rx = priv->cur_rx;
++
++ rxdesc = &priv->RxDescArray[cur_rx];
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
++ pci_dma_sync_single(pdev, priv->rxdesc_array_dma_addr[cur_rx], sizeof(struct RxDesc), PCI_DMA_FROMDEVICE);
++#endif
++
++ while (((le32_to_cpu(rxdesc->status) & OWNbit)== 0) && (rxdesc_cnt < max_interrupt_work)){
++
++ rxdesc_cnt++;
++
++ if( le32_to_cpu(rxdesc->status) & RxRES ){
++ printk(KERN_INFO "%s: Rx ERROR!!!\n", netdev->name);
++ priv->stats.rx_errors++;
++ if ( le32_to_cpu(rxdesc->status) & (RxRWT|RxRUNT) )
++ priv->stats.rx_length_errors++;
++ if ( le32_to_cpu(rxdesc->status) & RxCRC)
++ priv->stats.rx_crc_errors++;
++ }
++ else{
++ pkt_size=(int)(le32_to_cpu(rxdesc->status) & 0x00001FFF)-4;
++
++ if( pkt_size > priv->rx_pkt_len ){
++ printk("%s: Error -- Rx packet size(%d) > mtu(%d)+14\n", netdev->name, pkt_size, netdev->mtu);
++ pkt_size = priv->rx_pkt_len;
++ }
++
++ DBG_PRINT("%s: RX pkt_size = %d\n", __FUNCTION__, pkt_size);
++
++ {// -----------------------------------------------------
++ rx_skb = priv->Rx_skbuff[cur_rx];
++ n_skb = R1000_ALLOC_RXSKB(MAX_RX_SKBDATA_SIZE);
++ if( n_skb != NULL ) {
++ skb_reserve (n_skb, 8); // 16 byte align the IP fields. //
++
++ // Indicate rx_skb
++ if( rx_skb != NULL ){
++ rx_skb->dev = netdev;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
++ pci_dma_sync_single(pdev, priv->rx_skbuff_dma_addr[cur_rx], sizeof(struct RxDesc), PCI_DMA_FROMDEVICE);
++#endif
++
++ skb_put ( rx_skb, pkt_size );
++ rx_skb->protocol = eth_type_trans ( rx_skb, netdev );
++ ret = R1000_NETIF_RX (rx_skb);
++
++// netdev->last_rx = jiffies;
++ priv->stats.rx_bytes += pkt_size;
++ priv->stats.rx_packets++;
++
++ }//end if( rx_skb != NULL )
++
++ priv->Rx_skbuff[cur_rx] = n_skb;
++ }
++ else{
++ DBG_PRINT("%s: Allocate n_skb failed!\n",__FUNCTION__ );
++ priv->Rx_skbuff[cur_rx] = rx_skb;
++ }
++
++
++ // Update rx descriptor
++ if( cur_rx == (NUM_RX_DESC-1) ){
++ priv->RxDescArray[cur_rx].status = cpu_to_le32((OWNbit | EORbit) | (unsigned long)priv->hw_rx_pkt_len);
++ }
++ else{
++ priv->RxDescArray[cur_rx].status = cpu_to_le32(OWNbit | (unsigned long)priv->hw_rx_pkt_len);
++ }
++
++ cur_skb = priv->Rx_skbuff[cur_rx];
++
++ if( cur_skb != NULL ){
++ priv->rx_skbuff_dma_addr[cur_rx] = pci_map_single(pdev, cur_skb->data, MAX_RX_SKBDATA_SIZE, PCI_DMA_FROMDEVICE);
++ rxdesc->buf_addr = cpu_to_le32(priv->rx_skbuff_dma_addr[cur_rx]);
++ }
++ else{
++ DBG_PRINT("%s: %s() cur_skb == NULL\n", netdev->name, __FUNCTION__);
++ }
++
++ }//------------------------------------------------------------
++
++ }// end of if( priv->RxDescArray[cur_rx].status & RxRES )
++
++ cur_rx = (cur_rx +1) % NUM_RX_DESC;
++ rxdesc = &priv->RxDescArray[cur_rx];
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
++ pci_dma_sync_single(pdev, priv->rxdesc_array_dma_addr[cur_rx], sizeof(struct RxDesc), PCI_DMA_FROMDEVICE);
++#endif
++
++ }// end of while ( (priv->RxDescArray[cur_rx].status & 0x80000000)== 0)
++
++ if( rxdesc_cnt >= max_interrupt_work ){
++ DBG_PRINT("%s: Too much work at Rx interrupt.\n", netdev->name);
++ }
++
++ priv->cur_rx = cur_rx;
++}
++
++/* The interrupt handler does all of the Rx thread work and cleans up after the Tx thread. */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
++static void r1000_interrupt (int irq, void *dev_instance, struct pt_regs *regs)
++#else
++static irqreturn_t r1000_interrupt (int irq, void *dev_instance, struct pt_regs *regs)
++#endif
++{
++ struct net_device *netdev = (struct net_device *) dev_instance;
++ struct r1000_private *priv = netdev->priv;
++ unsigned long ioaddr = priv->ioaddr;
++ unsigned int status = 0;
++
++ unsigned int phy_status = 0;
++
++ RTL_W16(IntrMask,0x0000);
++
++ status=RTL_R16(IntrStatus);
++
++ if(status==0xFFFF){
++ RTL_W16(IntrMask,r1000_intr_mask);
++ return IRQ_HANDLED;
++ }
++
++ if((status&r1000_intr_mask)==0)
++ return IRQ_NONE;
++
++#if 0
++ if(status&(RxOK|TxOK|TxErr)){
++#ifdef R1000_BOTTOM_HALVES
++ tasklet_schedule(&priv->r1000_rx_tasklet);
++ tasklet_schedule(&priv->r1000_tx_tasklet);
++#else
++ r1000_rx_interrupt(netdev,priv,ioaddr);
++ r1000_tx_interrupt(netdev,priv,ioaddr);
++#endif //R1000_BOTTOM_HALVES
++ RTL_W16(IntrStatus,RxOK|TxOK|TxErr);
++ }
++#endif
++
++ if(status&RxOK){
++#ifdef R1000_BOTTOM_HALVES
++ tasklet_schedule(&priv->r1000_rx_tasklet);
++#else
++ r1000_rx_interrupt(netdev,priv,ioaddr);
++#endif //R1000_BOTTOM_HALVES
++ RTL_W16(IntrStatus,RxOK);
++ }
++
++ if(status&(TxOK|TxErr)){
++#ifdef R1000_BOTTOM_HALVES
++ tasklet_schedule(&priv->r1000_tx_tasklet);
++#else
++ r1000_tx_interrupt(netdev,priv,ioaddr);
++#endif //R1000_BOTTOM_HALVES
++ RTL_W16(IntrStatus,TxOK|TxErr);
++ }
++
++ if(status&RxErr){
++ RTL_W16(IntrStatus,RxErr);
++ }
++
++ if((status&TxOK)&&(status&TxDescUnavail)){
++ RTL_W8(TxPoll,0x40);
++ RTL_W16(IntrStatus,TxOK|TxDescUnavail);
++ }
++
++ if(status & LinkChg){
++ if(((priv->mcfg==MCFG_METHOD_2)||(priv->mcfg==MCFG_METHOD_3))&&(phy_status&_100Mbps)){
++ phy_status = RTL_R8(PHYstatus);
++
++ if(phy_status & LinkStatus){
++ R1000_WRITE_GMII_REG((unsigned long)ioaddr,0x1f,0x0001);
++ R1000_WRITE_GMII_REG((unsigned long)ioaddr,0x10,0xf01b);
++ R1000_WRITE_GMII_REG((unsigned long)ioaddr,0x1f,0x0000);
++ }else{
++ R1000_WRITE_GMII_REG((unsigned long)ioaddr,0x1f,0x0001);
++ R1000_WRITE_GMII_REG((unsigned long)ioaddr,0x10,0xf41b);
++ R1000_WRITE_GMII_REG((unsigned long)ioaddr,0x1f,0x0000);
++ }
++
++ }
++ RTL_W16(IntrStatus,LinkChg);
++ }
++
++ RTL_W16 ( IntrMask, r1000_intr_mask);
++
++#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)
++ return IRQ_HANDLED;
++#endif
++
++}
++
++static int r1000_close(struct net_device *netdev)
++{
++ struct r1000_private *priv = netdev->priv;
++ unsigned long ioaddr = priv->ioaddr;
++ int i;
++
++ // -----------------------------------------
++ r1000_delete_timer( &(priv->r1000_timer) );
++
++ netif_stop_queue(netdev);
++
++#ifdef R1000_BOTTOM_HALVES
++ tasklet_kill(&priv->r1000_rx_tasklet);
++ tasklet_kill(&priv->r1000_tx_tasklet);
++#endif //R1000_BOTTOM_HALVES
++
++ spin_lock_irq(&priv->lock);
++
++ /* Stop the chip's Tx and Rx processes. */
++ RTL_W8(ChipCmd,0x00);
++
++ /* Disable interrupts by clearing the interrupt mask. */
++ RTL_W16(IntrMask,0x0000);
++
++ /* Update the error counts. */
++ priv->stats.rx_missed_errors += RTL_R32(RxMissed);
++ RTL_W32(RxMissed,0);
++
++ spin_unlock_irq(&priv->lock);
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
++ synchronize_irq ();
++#else
++ synchronize_irq(netdev->irq);
++#endif
++ free_irq (netdev->irq, netdev);
++
++ r1000_tx_clear (priv);
++
++ //2004-05-11
++ if(priv->txdesc_space != NULL){
++ pci_free_consistent(
++ priv->pci_dev,
++ priv->sizeof_txdesc_space,
++ priv->txdesc_space,
++ priv->txdesc_phy_dma_addr
++ );
++ priv->txdesc_space = NULL;
++ }
++
++ if(priv->rxdesc_space != NULL){
++ pci_free_consistent(
++ priv->pci_dev,
++ priv->sizeof_rxdesc_space,
++ priv->rxdesc_space,
++ priv->rxdesc_phy_dma_addr
++ );
++ priv->rxdesc_space = NULL;
++ }
++
++ priv->TxDescArray = NULL;
++ priv->RxDescArray = NULL;
++
++ {//-----------------------------------------------------------------------------
++ for(i=0;i<NUM_RX_DESC;i++){
++ if( priv->Rx_skbuff[i] != NULL ) {
++ R1000_FREE_RXSKB ( priv->Rx_skbuff[i] );
++ }
++ }
++ }//-----------------------------------------------------------------------------
++
++ DBG_PRINT("%s: %s() alloc_rxskb_cnt = %d\n", netdev->name, __FUNCTION__, alloc_rxskb_cnt );
++
++ return 0;
++}
++
++static unsigned const ethernet_polynomial = 0x04c11db7U;
++static inline u32 ether_crc (int length, unsigned char *data)
++{
++ int crc = -1;
++
++ while (--length >= 0) {
++ unsigned char current_octet = *data++;
++ int bit;
++ for (bit = 0; bit < 8; bit++, current_octet >>= 1)
++ crc = (crc << 1) ^ ((crc < 0) ^ (current_octet & 1) ? ethernet_polynomial : 0);
++ }
++
++ return crc;
++}
++
++static void r1000_set_rx_mode (struct net_device *netdev)
++{
++ struct r1000_private *priv = netdev->priv;
++ unsigned long ioaddr = priv->ioaddr;
++ unsigned long flags;
++ u32 mc_filter[2]; /* Multicast hash filter */
++ int i, rx_mode;
++ u32 tmp=0;
++
++
++ if (netdev->flags & IFF_PROMISC) {
++ /* Unconditionally log net taps. */
++ printk (KERN_NOTICE "%s: Promiscuous mode enabled.\n", netdev->name);
++ rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys | AcceptAllPhys;
++ mc_filter[1] = mc_filter[0] = 0xffffffff;
++ } else if ((netdev->mc_count > multicast_filter_limit) || (netdev->flags & IFF_ALLMULTI)) {
++ /* Too many to filter perfectly -- accept all multicasts. */
++ rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
++ mc_filter[1] = mc_filter[0] = 0xffffffff;
++ } else {
++ struct dev_mc_list *mclist;
++ rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
++ mc_filter[1] = mc_filter[0] = 0;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
++ for (i = 0, mclist = netdev->mc_list; mclist && i < netdev->mc_count; i++, mclist = mclist->next)
++ {
++ set_bit (ether_crc (ETH_ALEN, mclist->dmi_addr) >> 26, mc_filter);
++ }
++#else
++ for (i = 0, mclist = netdev->mc_list; mclist && i < netdev->mc_count; i++, mclist = mclist->next)
++ {
++ int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
++
++ mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
++ rx_mode |= AcceptMulticast;
++ }
++#endif
++ }
++
++// spin_lock_irqsave(&priv->lock,flags);
++ spin_lock_irqsave(&priv->rx_lock,flags);
++
++ tmp = r1000_rx_config | rx_mode | (RTL_R32(RxConfig) & rtl_chip_info[priv->chipset].RxConfigMask);
++
++ RTL_W32 ( RxConfig, tmp);
++ if((priv->mcfg==MCFG_METHOD_11)||(priv->mcfg==MCFG_METHOD_12)||
++ (priv->mcfg==MCFG_METHOD_13)||(priv->mcfg==MCFG_METHOD_14)||
++ (priv->mcfg==MCFG_METHOD_15)){
++ RTL_W32 ( MAR0 + 0, 0xFFFFFFFF);
++ RTL_W32 ( MAR0 + 4, 0xFFFFFFFF);
++ }else{
++ RTL_W32 ( MAR0 + 0, mc_filter[0]);
++ RTL_W32 ( MAR0 + 4, mc_filter[1]);
++ }
++
++// spin_unlock_irqrestore(&priv->lock,flags);
++ spin_unlock_irqrestore(&priv->rx_lock,flags);
++
++}//end of r1000_set_rx_mode (struct net_device *netdev)
++
++struct net_device_stats *r1000_get_stats(struct net_device *netdev)
++
++{
++ struct r1000_private *priv = netdev->priv;
++
++ return &priv->stats;
++}
++
++static struct pci_driver r1000_pci_driver = {
++ name: MODULENAME,
++ id_table: r1000_pci_tbl,
++ probe: r1000_init_one,
++ remove: __devexit_p(r1000_remove_one),
++ suspend: NULL,
++ resume: NULL,
++};
++
++static int __init r1000_init_module (void)
++{
++ return pci_module_init (&r1000_pci_driver); // pci_register_driver (drv)
++}
++
++static void __exit r1000_cleanup_module (void)
++{
++ pci_unregister_driver (&r1000_pci_driver);
++}
++
++#ifdef R1000_JUMBO_FRAME_SUPPORT
++static int r1000_change_mtu(struct net_device *netdev, int new_mtu)
++{
++ struct r1000_private *priv = netdev->priv;
++ unsigned long ioaddr = priv->ioaddr;
++
++ if( new_mtu > MAX_JUMBO_FRAME_MTU ){
++ printk("%s: Error -- new_mtu(%d) > MAX_JUMBO_FRAME_MTU(%d).\n", netdev->name, new_mtu, MAX_JUMBO_FRAME_MTU);
++ return -1;
++ }
++
++ netdev->mtu = new_mtu;
++
++ priv->curr_mtu_size = new_mtu;
++ priv->tx_pkt_len = new_mtu + ETH_HDR_LEN;
++ priv->rx_pkt_len = new_mtu + ETH_HDR_LEN;
++ priv->hw_rx_pkt_len = priv->rx_pkt_len + 8;
++
++ RTL_W8 ( Cfg9346, Cfg9346_Unlock);
++ RTL_W16 ( RxMaxSize, (unsigned short)priv->hw_rx_pkt_len );
++ RTL_W8 ( Cfg9346, Cfg9346_Lock);
++
++ DBG_PRINT("-------------------------- \n");
++ DBG_PRINT("netdev->mtu = %d \n", netdev->mtu);
++ DBG_PRINT("priv->curr_mtu_size = %d \n", priv->curr_mtu_size);
++ DBG_PRINT("priv->rx_pkt_len = %d \n", priv->rx_pkt_len);
++ DBG_PRINT("priv->tx_pkt_len = %d \n", priv->tx_pkt_len);
++ DBG_PRINT("RTL_W16( RxMaxSize, %d )\n", priv->hw_rx_pkt_len);
++ DBG_PRINT("-------------------------- \n");
++
++ r1000_close(netdev);
++ r1000_open(netdev);
++
++ return 0;
++}
++#endif //end #ifdef R1000_JUMBO_FRAME_SUPPORT
++
++module_init(r1000_init_module);
++module_exit(r1000_cleanup_module);
diff --git a/packages/linux/linux-turbostation/002_qnap-pic.diff b/packages/linux/linux-turbostation/002_qnap-pic.diff
new file mode 100644
index 0000000000..ce7324088a
--- /dev/null
+++ b/packages/linux/linux-turbostation/002_qnap-pic.diff
@@ -0,0 +1,407 @@
+Index: linux-2.6.19/arch/ppc/platforms/qnap_pic.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.19/arch/ppc/platforms/qnap_pic.c 2007-02-25 06:06:59.000000000 +0100
+@@ -0,0 +1,286 @@
++#include <linux/module.h>
++#include <linux/poll.h>
++#include <linux/miscdevice.h>
++#include <linux/serial_core.h>
++#include <linux/serial_reg.h>
++#include <asm/serial.h>
++#include <asm/io.h>
++
++#include "qnap_pic.h"
++#include "qnap_pic_user.h"
++
++static wait_queue_head_t pic_wait;
++static wait_queue_head_t queue_empty_wait;
++static int use_int = 0;
++static int tx_begin = 0, tx_end = 0, rx_begin = 0, rx_end = 0;
++static unsigned char *tx_buf = NULL;
++static unsigned char rx_buf[QUEUE_BUFSIZE];
++static int usage = 0;
++int usb_button_enabled = 1;
++
++static struct qnap_pic_event pic_event[QNAP_PIC_TOTAL_EVENT];
++
++static unsigned char qnap_pic_inb(unsigned long addr)
++{
++ return readb((void __iomem *)addr);
++}
++
++static void qnap_pic_outb(unsigned long addr, unsigned char val)
++{
++ writeb(val, (void __iomem *)addr);
++}
++
++static irqreturn_t qnap_pic_isr(int irq, void *dev_id, struct pt_regs *regs)
++{
++ unsigned char int_id;
++ unsigned char data;
++ int i, need_wakeup;
++
++ need_wakeup = 0;
++ for (i = 0 ; i < 10 ; i++) {
++ int_id = (qnap_pic_inb(SANDPOINT_SERIAL_1 + UART_IIR) & 0x0f);
++ if (int_id & 0x01)
++ break;
++ int_id >>= 1;
++ switch (int_id) {
++ case 3:
++ qnap_pic_inb(SANDPOINT_SERIAL_1 + UART_LSR);
++ break;
++
++ case 2:
++ case 6:
++ while (qnap_pic_inb(SANDPOINT_SERIAL_1 + UART_LSR) & UART_LSR_DR) {
++ data = qnap_pic_inb(SANDPOINT_SERIAL_1 + UART_RX);
++ if((data == 0x72) ||
++ (data == QNAP_PIC_USB_COPY_BUTTON && !usb_button_enabled))
++ continue; // Skip it
++
++ if (((rx_end + 1) % QUEUE_BUFSIZE) != rx_begin) {
++ rx_buf[rx_end] = data;
++ //printk("qnap pic: get byte 0x%x\n", rx_buf[rx_end]);
++ rx_end = ((rx_end + 1) % QUEUE_BUFSIZE);
++ }
++ need_wakeup = 1;
++ }
++ //need_wakeup = 1;
++ break;
++ }
++ }
++ if (i == 10)
++ printk("qnap pic: Reach maximal count of pending interrupts.\n");
++ if (need_wakeup)
++ wake_up_interruptible(&pic_wait);
++ return IRQ_HANDLED;
++}
++
++int send_message_to_app(unsigned char message)
++{
++ if (((rx_end + 1) % QUEUE_BUFSIZE) != rx_begin) {
++ rx_buf[rx_end] = message;
++ //printk("qnap pic: get byte 0x%x\n", rx_buf[rx_end]);
++ rx_end = ((rx_end + 1) % QUEUE_BUFSIZE);
++ }
++
++ wake_up_interruptible(&pic_wait);
++
++ return 0;
++}
++
++void __init qnap_pic_init(void)
++{
++ unsigned char dcr;
++
++ /* enable UART2 */
++ dcr = qnap_pic_inb(SANDPOINT_SERIAL_1 + UART_DCR);
++ dcr |= 0x01;
++ qnap_pic_outb(SANDPOINT_SERIAL_1 + UART_DCR, dcr);
++ /* Access baud rate */
++ qnap_pic_outb(SANDPOINT_SERIAL_1 + UART_LCR, UART_LCR_DLAB);
++ /* Input clock. */
++#ifdef CONFIG_QNAP_UART_CLK_100
++ qnap_pic_outb(SANDPOINT_SERIAL_1 + UART_DLL, (325/*(BASE_BAUD / SERIAL_BAUD)*/ & 0xFF));
++ qnap_pic_outb(SANDPOINT_SERIAL_1 + UART_DLM, (325/*(BASE_BAUD / SERIAL_BAUD)*/ >> 8));
++#else
++ qnap_pic_outb(SANDPOINT_SERIAL_1 + UART_DLL, (435/*(BASE_BAUD / SERIAL_BAUD)*/ & 0xFF));
++ qnap_pic_outb(SANDPOINT_SERIAL_1 + UART_DLM, (435/*(BASE_BAUD / SERIAL_BAUD)*/ >> 8));
++#endif
++ /* 8 data, 1 stop, no parity */
++ qnap_pic_outb(SANDPOINT_SERIAL_1 + UART_LCR, 0x03);
++}
++
++static int pic_open(struct inode *inode, struct file *fp)
++{
++ int result;
++
++ if (usage == 0) {
++ if ((result = request_irq(SANDPOINT_SERIAL_1_INT, qnap_pic_isr, SA_INTERRUPT, "qnap-pic", NULL)) < 0) {
++ printk("qnap pic - failed to attach interrupt\n");
++ return result;
++ }
++ tx_buf = (unsigned char*)kmalloc(QUEUE_BUFSIZE, GFP_KERNEL);
++ if (tx_buf == NULL) {
++ free_irq(SANDPOINT_SERIAL_1_INT, NULL);
++ return -ENOMEM;
++ }
++ use_int = 1;
++ qnap_pic_outb(SANDPOINT_SERIAL_1 + UART_FCR, UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_XMIT | UART_FCR_CLEAR_RCVR | UART_FCR_TRIGGER_14);
++ qnap_pic_outb(SANDPOINT_SERIAL_1 + UART_IER, UART_IER_RDI);
++ }
++ usage++;
++ return 0;
++}
++
++static int pic_release(struct inode *inode, struct file *fp)
++{
++ usage--;
++ if (usage == 0) {
++ while (tx_begin != tx_end)
++ interruptible_sleep_on(&queue_empty_wait);
++ qnap_pic_outb(SANDPOINT_SERIAL_1 + UART_IER, 0);
++ qnap_pic_outb(SANDPOINT_SERIAL_1 + UART_FCR, 0);
++ free_irq(SANDPOINT_SERIAL_1_INT, NULL);
++ use_int = 0;
++ if (tx_buf)
++ kfree(tx_buf);
++ }
++ return 0;
++}
++
++static int pic_ioctl(struct inode * inode, struct file *filp, u_int cmd, u_long arg)
++{
++ int i, bytes;
++ spinlock_t lock = SPIN_LOCK_UNLOCKED;
++ unsigned long flags;
++ struct qnap_pic_ioctl qpi;
++
++ switch (cmd) {
++ case IOCTL_MSG_GET_MESSAGE:
++ memset(&qpi, 0, sizeof(struct qnap_pic_ioctl));
++ while (rx_begin == rx_end) {
++ //printk("PIC without any event\n");
++ interruptible_sleep_on(&pic_wait);
++ if (signal_pending(current))
++ {
++ printk("pic_ioctl: signal_pending current failed\n");
++ return -ERESTARTSYS;
++ }
++ }
++ spin_lock_irqsave(lock, flags);
++ // calculate how many bytes available
++ bytes = ((rx_end + QUEUE_BUFSIZE) - rx_begin) % QUEUE_BUFSIZE;
++ // read data as many as possible
++ for (i = 0 ; i < bytes ; i++) {
++ qpi.pic_data[i] = rx_buf[rx_begin];
++ qpi.count++;
++ rx_begin = (rx_begin + 1) % QUEUE_BUFSIZE;
++ }
++ spin_unlock_irqrestore(lock, flags);
++ return copy_to_user((void *)arg, &qpi, sizeof(struct qnap_pic_ioctl));
++
++ case IOCTL_MSG_SEND_MESSAGE:
++ memset(&qpi, 0, sizeof(struct qnap_pic_ioctl));
++ if (copy_from_user(&qpi, (struct qnap_pic_ioctl *)arg, sizeof(struct qnap_pic_ioctl)))
++ break;
++ for (i = 0; i < QUEUE_BUFSIZE && i < qpi.count; i += 2) {
++ if (qpi.pic_data[i] >= QNAP_PIC_TOTAL_EVENT || qpi.pic_data[i + 1] >= PIC_EVENT_COMMAND_TYPE)
++ continue;
++ switch(qpi.pic_data[i]) {
++ case QNAP_PIC_USB_COPY:
++ if(qpi.pic_data[i+1] == QNAP_PIC_EVENT_ON)
++ usb_button_enabled = 0;
++ else
++ usb_button_enabled = 1;
++ break;
++ }
++ qnap_pic_send_command(pic_event[qpi.pic_data[i]].command[qpi.pic_data[i + 1]], pic_event[qpi.pic_data[i]].count[qpi.pic_data[i + 1]]);
++ }
++ return 0;
++ case IOCTL_MSG_SEND_RAW_COMMAND:
++ memset(&qpi, 0, sizeof(struct qnap_pic_ioctl));
++ if (copy_from_user(&qpi, (struct qnap_pic_ioctl *)arg, sizeof(struct qnap_pic_ioctl)))
++ break;
++ qnap_pic_send_command(qpi.pic_data, qpi.count);
++ return 0;
++ }
++ return -EINVAL;
++}
++
++static struct file_operations pic_fops = {
++ .owner = THIS_MODULE,
++ .ioctl = pic_ioctl,
++ .open = pic_open,
++ .release = pic_release,
++};
++
++static struct miscdevice pic_device = {
++ PIC_MINOR, "pic", &pic_fops
++};
++
++static void __init qnap_pic_event_init(void)
++{
++ memset(pic_event, 0, sizeof(pic_event));
++ pic_event[QNAP_PIC_BOOT_COMPLETE].command[QNAP_PIC_EVENT_ON][0] = QNAP_PIC_STATUS_GREEN_ON;
++ pic_event[QNAP_PIC_BOOT_COMPLETE].command[QNAP_PIC_EVENT_ON][1] = QNAP_PIC_BUZZER_LONG;
++ pic_event[QNAP_PIC_BOOT_COMPLETE].count[QNAP_PIC_EVENT_ON] = 2;
++ pic_event[QNAP_PIC_WRONG_HD_FORMAT].command[QNAP_PIC_EVENT_ON][0] = QNAP_PIC_STATUS_RED_ON;
++ pic_event[QNAP_PIC_WRONG_HD_FORMAT].count[QNAP_PIC_EVENT_ON] = 1;
++ pic_event[QNAP_PIC_WRONG_HD_FORMAT].command[QNAP_PIC_EVENT_OFF][0] = QNAP_PIC_STATUS_GREEN_ON;
++ pic_event[QNAP_PIC_WRONG_HD_FORMAT].count[QNAP_PIC_EVENT_OFF] = 1;
++ pic_event[QNAP_PIC_POWER_OFF].command[QNAP_PIC_EVENT_ON][0] = QNAP_PIC_STATUS_OFF;
++ pic_event[QNAP_PIC_POWER_OFF].command[QNAP_PIC_EVENT_ON][1] = QNAP_PIC_POWER_LED_BLINK;
++ pic_event[QNAP_PIC_POWER_OFF].count[QNAP_PIC_EVENT_ON] = 2;
++ pic_event[QNAP_PIC_HD_STANDBY].command[QNAP_PIC_EVENT_ON][0] = QNAP_PIC_STATUS_GREEN_ON;
++ pic_event[QNAP_PIC_HD_STANDBY].command[QNAP_PIC_EVENT_ON][1] = QNAP_PIC_POWER_LED_BLINK;
++ pic_event[QNAP_PIC_HD_STANDBY].count[QNAP_PIC_EVENT_ON] = 2;
++ pic_event[QNAP_PIC_HD_STANDBY].command[QNAP_PIC_EVENT_OFF][0] = QNAP_PIC_STATUS_GREEN_ON;
++ pic_event[QNAP_PIC_HD_STANDBY].command[QNAP_PIC_EVENT_OFF][1] = QNAP_PIC_POWER_LED_ON;
++ pic_event[QNAP_PIC_HD_STANDBY].count[QNAP_PIC_EVENT_OFF] = 2;
++ pic_event[QNAP_PIC_USB_COPY].command[QNAP_PIC_EVENT_ON][0] = QNAP_PIC_USB_LED_BLINK;
++ pic_event[QNAP_PIC_USB_COPY].count[QNAP_PIC_EVENT_ON] = 1;
++ pic_event[QNAP_PIC_USB_COPY].command[QNAP_PIC_EVENT_OFF][0] = QNAP_PIC_USB_LED_OFF;
++ pic_event[QNAP_PIC_USB_COPY].count[QNAP_PIC_EVENT_OFF] = 1;
++ pic_event[QNAP_PIC_SET_DEFAULT].command[QNAP_PIC_EVENT_ON][0] = QNAP_PIC_BUZZER_SHORT;
++ pic_event[QNAP_PIC_SET_DEFAULT].count[QNAP_PIC_EVENT_ON] = 1;
++ pic_event[QNAP_PIC_POWER_RECOVERY].command[QNAP_PIC_EVENT_ON][0] = QNAP_PIC_ENABLE_POWER_RECOVERY;
++ pic_event[QNAP_PIC_POWER_RECOVERY].count[QNAP_PIC_EVENT_ON] = 1;
++ pic_event[QNAP_PIC_POWER_RECOVERY].command[QNAP_PIC_EVENT_OFF][0] = QNAP_PIC_DISABLE_POWER_RECOVERY;
++ pic_event[QNAP_PIC_POWER_RECOVERY].count[QNAP_PIC_EVENT_OFF] = 1;
++}
++
++static __init int qnap_pic_init2(void)
++{
++ int result;
++
++ result = misc_register(&pic_device);
++ if (result < 0)
++ printk("qnap pic: fail to register misc device\n");
++ else {
++ //printk("qnap pic: suceed to register misc device\n");
++ init_waitqueue_head(&pic_wait);
++ init_waitqueue_head(&queue_empty_wait);
++ qnap_pic_event_init();
++ }
++ return result;
++}
++
++__initcall(qnap_pic_init2);
++
++static void qnap_pic_putc(unsigned char c)
++{
++ while ((qnap_pic_inb(SANDPOINT_SERIAL_1 + UART_LSR) & UART_LSR_THRE) == 0)
++ ;
++ qnap_pic_outb(SANDPOINT_SERIAL_1 + UART_TX, c);
++}
++
++int qnap_pic_send_command(char *data, int count)
++{
++ int i;
++
++ if (data == NULL || count <= 0)
++ return -EINVAL;
++ for (i = 0; i < count; i++)
++ qnap_pic_putc(data[i]);
++ return count;
++}
++EXPORT_SYMBOL(qnap_pic_send_command);
++EXPORT_SYMBOL(send_message_to_app);
+--- linux-2.6.16.vanilla/arch/ppc/platforms/qnap_pic.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16/arch/ppc/platforms/qnap_pic.h 2007-02-25 05:09:57.000000000 +0100
+@@ -0,0 +1,19 @@
++#ifndef __PPC_PLATFORMS_QNAP_PIC_H
++#define __PPC_PLATFORMS_QNAP_PIC_H
++
++extern void qnap_pic_init(void);
++extern int qnap_pic_send_command(char *data, int count);
++
++#define UART_DSR 0x10
++#define UART_DCR 0x11
++#define SERIAL_BAUD 19200
++
++#define PIC_EVENT_COMMAND_SIZE 8
++#define PIC_EVENT_COMMAND_TYPE 2
++
++struct qnap_pic_event {
++ unsigned char command[PIC_EVENT_COMMAND_TYPE][PIC_EVENT_COMMAND_SIZE];
++ int count[PIC_EVENT_COMMAND_TYPE];
++};
++
++#endif /* __PPC_PLATFORMS_QNAP_PIC_H */
+--- linux-2.6.16.vanilla/arch/ppc/platforms/qnap_pic_user.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16/arch/ppc/platforms/qnap_pic_user.h 2007-02-25 05:09:57.000000000 +0100
+@@ -0,0 +1,91 @@
++#ifndef __PPC_PLATFORMS_QNAP_PIC_USER_H
++#define __PPC_PLATFORMS_QNAP_PIC_USER_H
++
++#define QUEUE_BUFSIZE 16
++#define PIC_MINOR 80
++#define PIC_DEV "/dev/pic"
++
++struct qnap_pic_ioctl {
++ unsigned char pic_data[QUEUE_BUFSIZE];
++ int count;
++};
++
++#define IOCTL_MSG_MAGIC 'Q'
++#define IOCTL_MSG_GET_MESSAGE _IOR(IOCTL_MSG_MAGIC, 1000, struct qnap_pic_ioctl)
++#define IOCTL_MSG_SEND_MESSAGE _IOW(IOCTL_MSG_MAGIC, 1001, struct qnap_pic_ioctl)
++#define IOCTL_MSG_SEND_RAW_COMMAND _IOW(IOCTL_MSG_MAGIC, 1002, struct qnap_pic_ioctl)
++
++#define QNAP_PIC_BOOT_COMPLETE 0
++#define QNAP_PIC_NO_HD 1
++#define QNAP_PIC_WRONG_HD_FORMAT 2
++#define QNAP_PIC_HD_BAD_BLOCK 3
++#define QNAP_PIC_HD_FULL 4
++#define QNAP_PIC_FIRMWARE_UPDATE 5
++#define QNAP_PIC_POWER_OFF 6
++#define QNAP_PIC_HD_STANDBY 7
++#define QNAP_PIC_USB_COPY 8
++#define QNAP_PIC_SET_DEFAULT 9
++#define QNAP_PIC_POWER_RECOVERY 10
++
++#define QNAP_PIC_TOTAL_EVENT 11
++#define QNAP_PIC_EVENT_OFF 0
++#define QNAP_PIC_EVENT_ON 1
++
++#define QNAP_PIC_POWER_BUTTON 0x40
++#define QNAP_PIC_USB_COPY_BUTTON 0x68
++#define QNAP_PIC_SET_DEFAULT_BUTTON 0x6A
++#define QNAP_PIC_FAN_ENABLE 0x71
++#define QNAP_PIC_FAN_DISABLE 0x72
++#define QNAP_PIC_FAN_ERROR 0x73
++#define QNAP_PIC_FAN_NORMAL 0x74
++#define QNAP_PIC_POWER_RECOVERY_ON 0x79
++#define QNAP_PIC_POWER_RECOVERY_OFF 0x7A
++#define QNAP_NET_NIC_UP 0x81
++#define QNAP_NET_NIC_DOWN 0x82
++
++/*add by KenChen for GIGA Lan up notification 20060329
++#define GIGA 1000
++#define QNAP_GIGA_LAN_UP 0x7C
++#define QNAP_NOT_GIGA_LAN_UP 0x7D
++end here*/
++
++//Ricky added some hotswap command
++#define QNAP_ESATA_UP 0x83
++#define QNAP_ESATA_DOWN 0x84
++#define QNAP_USB_FRONT_UP 0x85
++#define QNAP_USB_FRONT_DOWN 0x86
++#define QNAP_USB_B_UPPER_UP 0x87
++#define QNAP_USB_B_UPPER_DOWN 0x88
++#define QNAP_USB_B_LOWER_UP 0x89
++#define QNAP_USB_B_LOWER_DOWN 0x8A
++#define QNAP_USB_PRINTER_UP 0x8B
++#define QNAP_USB_PRINTER_DOWN 0x8C
++#define QNAP_SATA_UP 0x8D
++#define QNAP_SATA_DOWN 0x8E
++//End
++
++#define MD_REBUILDING 0x91
++#define MD_REBUILDING_DONE 0x92
++#define MD_REBUILDING_SKIP 0x93
++
++#define QNAP_PIC_SOFTWARE_SHUTDOWN 0x41
++#define QNAP_PIC_POWER_RECOVERY_STATUS 0x46
++#define QNAP_PIC_POWER_LED_OFF 0x4B
++#define QNAP_PIC_POWER_LED_BLINK 0x4C
++#define QNAP_PIC_POWER_LED_ON 0x4D
++#define QNAP_PIC_ENABLE_POWER_RECOVERY 0x48
++#define QNAP_PIC_DISABLE_POWER_RECOVERY 0x49
++#define QNAP_PIC_BUZZER_SHORT 0x50
++#define QNAP_PIC_BUZZER_LONG 0x51
++#define QNAP_PIC_STATUS_RED_BLINK 0x54
++#define QNAP_PIC_STATUS_GREEN_BLINK 0x55
++#define QNAP_PIC_STATUS_GREEN_ON 0x56
++#define QNAP_PIC_STATUS_RED_ON 0x57
++#define QNAP_PIC_STATUS_BOTH_BLINK 0x58
++#define QNAP_PIC_STATUS_OFF 0x59
++#define QNAP_PIC_USB_LED_ON 0x60
++#define QNAP_PIC_USB_LED_BLINK 0x61
++#define QNAP_PIC_USB_LED_OFF 0x62
++#define QNAP_PIC_SOFTWARE_REBOOT 0x66
++
++#endif /* __PPC_PLATFORMS_QNAP_PIC_USER_H */
diff --git a/packages/linux/linux-turbostation/defconfig b/packages/linux/linux-turbostation/defconfig
new file mode 100644
index 0000000000..094f6f3708
--- /dev/null
+++ b/packages/linux/linux-turbostation/defconfig
@@ -0,0 +1,1871 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20.2
+# Sun Mar 11 15:29:33 2007
+#
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_ILOG2_U32=y
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_PPC=y
+CONFIG_PPC32=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_GENERIC_BUG=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION="-opents"
+CONFIG_LOCALVERSION_AUTO=y
+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 is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+CONFIG_LBD=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF 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=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# Processor
+#
+CONFIG_6xx=y
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_8xx is not set
+# CONFIG_E200 is not set
+# CONFIG_E500 is not set
+CONFIG_PPC_FPU=y
+# CONFIG_PPC_DCR_NATIVE is not set
+# CONFIG_ALTIVEC is not set
+# CONFIG_TAU is not set
+CONFIG_KEXEC=y
+# CONFIG_CPU_FREQ is not set
+# CONFIG_WANT_EARLY_SERIAL is not set
+CONFIG_PPC_GEN550=y
+CONFIG_PPC_STD_MMU=y
+
+#
+# Platform options
+#
+# CONFIG_PPC_PREP is not set
+# CONFIG_APUS is not set
+# CONFIG_KATANA is not set
+# CONFIG_WILLOW is not set
+# CONFIG_CPCI690 is not set
+# CONFIG_POWERPMC250 is not set
+# CONFIG_CHESTNUT is not set
+# CONFIG_SPRUCE is not set
+# CONFIG_HDPU is not set
+# CONFIG_EV64260 is not set
+# CONFIG_LOPEC is not set
+# CONFIG_MVME5100 is not set
+# CONFIG_PPLUS is not set
+# CONFIG_PRPMC750 is not set
+# CONFIG_PRPMC800 is not set
+CONFIG_SANDPOINT=y
+# CONFIG_RADSTONE_PPC7D is not set
+# CONFIG_PAL4 is not set
+# CONFIG_GEMINI is not set
+# CONFIG_EST8260 is not set
+# CONFIG_SBC82xx is not set
+# CONFIG_SBS8260 is not set
+# CONFIG_RPX8260 is not set
+# CONFIG_TQM8260 is not set
+# CONFIG_ADS8272 is not set
+# CONFIG_PQ2FADS is not set
+# CONFIG_LITE5200 is not set
+# CONFIG_MPC834x_SYS is not set
+# CONFIG_EV64360 is not set
+CONFIG_EPIC_SERIAL_MODE=y
+CONFIG_MPC10X_BRIDGE=y
+CONFIG_MPC10X_OPENPIC=y
+# CONFIG_MPC10X_STORE_GATHERING is not set
+# CONFIG_SANDPOINT_ENABLE_UART1 is not set
+# CONFIG_SMP is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT 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=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_MISC=m
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=ttyS0,115200n8 root=/dev/ram rtc-rs5c372.probe=0,0x32"
+# CONFIG_PM is not set
+CONFIG_SECCOMP=y
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_PPC_I8259=y
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Advanced setup
+#
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Default settings for advanced configuration options are used
+#
+CONFIG_HIGHMEM_START=0xfe000000
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_TASK_SIZE=0x80000000
+CONFIG_BOOT_LOAD=0x00800000
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# 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 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+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
+
+#
+# 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_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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+# CONFIG_IRNET is not set
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+CONFIG_SIGMATEL_FIR=m
+# CONFIG_NSC_FIR is not set
+# CONFIG_WINBOND_FIR is not set
+# CONFIG_TOSHIBA_FIR is not set
+# CONFIG_SMC_IRCC_FIR is not set
+# CONFIG_ALI_FIR is not set
+# CONFIG_VLSI_FIR is not set
+# CONFIG_VIA_FIR is not set
+CONFIG_MCS_FIR=m
+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=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+# 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 is not set
+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 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=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=y
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0xFF000000
+CONFIG_MTD_PHYSMAP_LEN=0x01000000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=1
+# 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_DEV_FD 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=m
+# 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=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=40960
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+
+#
+# Misc devices
+#
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# 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 is not set
+# 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 is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_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=y
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+# CONFIG_SATA_VIA is not set
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+# CONFIG_PATA_ARTOP is not set
+# 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
+
+#
+# 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 is not set
+# CONFIG_MD_FAULTY is not set
+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 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
+
+#
+# Macintosh device drivers
+#
+# CONFIG_MAC_EMUMOUSEBTN is not set
+# CONFIG_WINDFARM is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+CONFIG_MII=m
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+CONFIG_E1000=y
+# CONFIG_E1000_NAPI is not set
+# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+CONFIG_R1000=y
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+# 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_AIRO 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=m
+# 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=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_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLHC=m
+CONFIG_SLIP_SMART=y
+CONFIG_SLIP_MODE_SLIP6=y
+# 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
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE 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 is not set
+# 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 is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_I8042 is not set
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_PCIPS2 is not set
+# CONFIG_SERIO_LIBPS2 is not set
+# 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_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_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=1
+CONFIG_SERIAL_8250_RUNTIME_UARTS=1
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_UARTLITE is not set
+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 is not set
+CONFIG_HW_RANDOM=m
+CONFIG_NVRAM=m
+CONFIG_GEN_RTC=m
+CONFIG_GEN_RTC_X=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_AGP 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=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# 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_MPC=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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_M41T00 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 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# 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 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
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+# CONFIG_VIDEO_V4L1 is not set
+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_MSP3400=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_CX25840=m
+CONFIG_VIDEO_CX2341X=m
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_VIDEO_SAA7134 is not set
+# CONFIG_VIDEO_HEXIUM_ORION is not set
+# CONFIG_VIDEO_HEXIUM_GEMINI is not set
+# CONFIG_VIDEO_CX88 is not set
+# CONFIG_VIDEO_CAFE_CCIC is not set
+
+#
+# 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_USBVISION=m
+
+#
+# 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=y
+CONFIG_DVB_CORE=m
+# CONFIG_DVB_CORE_ATTACH is not set
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_DVB_CINERGYT2=m
+# CONFIG_DVB_CINERGYT2_TUNING is not set
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+# CONFIG_DVB_B2C2_FLEXCOP is not set
+
+#
+# Supported BT878 Adapters
+#
+
+#
+# Supported Pluto2 Adapters
+#
+# CONFIG_DVB_PLUTO2 is not set
+
+#
+# Supported DVB Frontends
+#
+
+#
+# Customise DVB Frontends
+#
+# CONFIG_DVB_FE_CUSTOMISE is not set
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_STV0299=m
+# CONFIG_DVB_CX24110 is not set
+# CONFIG_DVB_CX24123 is not set
+CONFIG_DVB_TDA8083=m
+# CONFIG_DVB_MT312 is not set
+# CONFIG_DVB_VES1X93 is not set
+# CONFIG_DVB_S5H1420 is not set
+CONFIG_DVB_TDA10086=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+# CONFIG_DVB_SP8870 is not set
+# CONFIG_DVB_SP887X is not set
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+# CONFIG_DVB_L64781 is not set
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+# CONFIG_DVB_TDA10021 is not set
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+# CONFIG_DVB_NXT200X is not set
+# CONFIG_DVB_OR51211 is not set
+# CONFIG_DVB_OR51132 is not set
+# CONFIG_DVB_BCM3510 is not set
+CONFIG_DVB_LGDT330X=m
+
+#
+# Tuners/PLL support
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUNER_MT2060=m
+CONFIG_DVB_TUNER_LGH06XF=m
+
+#
+# Miscellaneous devices
+#
+CONFIG_DVB_LNBP21=m
+# CONFIG_DVB_ISL6421 is not set
+# CONFIG_DVB_TUA6100 is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB is not set
+# CONFIG_FB_IBM_GXT4500 is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+# 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=y
+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_ALS4000 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 PowerMac devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_USX2Y=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=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_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=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_DPCM=y
+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_KARMA=y
+CONFIG_USB_LIBUSUAL=y
+
+#
+# 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_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=m
+CONFIG_USB_ATI_REMOTE=m
+CONFIG_USB_ATI_REMOTE2=m
+CONFIG_USB_KEYSPAN_REMOTE=m
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+
+#
+# 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_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=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=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=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 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC 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=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
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYPRESS_CY7C63=m
+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 is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+CONFIG_USB_LD=m
+CONFIG_USB_TRANCEVIBRATOR=m
+# 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
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+CONFIG_RTC_DRV_RS5C372=y
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# Virtualization
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+# CONFIG_EXT2_FS_SECURITY is not set
+# 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 is not set
+# 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 is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_QUOTA=y
+# CONFIG_XFS_SECURITY is not set
+CONFIG_XFS_POSIX_ACL=y
+# 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=m
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_QUOTACTL=y
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=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=y
+
+#
+# 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=y
+CONFIG_JFFS2_FS_XATTR=y
+CONFIG_JFFS2_FS_POSIX_ACL=y
+CONFIG_JFFS2_FS_SECURITY=y
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=m
+# 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_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=y
+# CONFIG_CIFS_STATS2 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
+# 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=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 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=y
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
+# 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_SERIAL_TEXT_DEBUG 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_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_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_LRW is not set
+CONFIG_CRYPTO_DES=y
+# 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 is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
diff --git a/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_platforms_Makefile b/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_platforms_Makefile
new file mode 100644
index 0000000000..b23155e813
--- /dev/null
+++ b/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_platforms_Makefile
@@ -0,0 +1,13 @@
+Index: linux-2.6.20.1/arch/ppc/platforms/Makefile
+===================================================================
+--- linux-2.6.20.1.orig/arch/ppc/platforms/Makefile 2007-02-20 07:34:32.000000000 +0100
++++ linux-2.6.20.1/arch/ppc/platforms/Makefile 2007-02-28 20:29:10.000000000 +0100
+@@ -24,7 +24,7 @@
+ obj-$(CONFIG_PRPMC750) += prpmc750.o
+ obj-$(CONFIG_PRPMC800) += prpmc800.o
+ obj-$(CONFIG_RADSTONE_PPC7D) += radstone_ppc7d.o
+-obj-$(CONFIG_SANDPOINT) += sandpoint.o
++obj-$(CONFIG_SANDPOINT) += sandpoint.o qnap_pic.o
+ obj-$(CONFIG_SBC82xx) += sbc82xx.o
+ obj-$(CONFIG_SPRUCE) += spruce.o
+ obj-$(CONFIG_LITE5200) += lite5200.o
diff --git a/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_platforms_sandpoint.c b/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_platforms_sandpoint.c
new file mode 100644
index 0000000000..85c270437c
--- /dev/null
+++ b/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_platforms_sandpoint.c
@@ -0,0 +1,293 @@
+Index: linux-2.6.21-rc1/arch/ppc/platforms/sandpoint.c
+===================================================================
+--- linux-2.6.21-rc1.orig/arch/ppc/platforms/sandpoint.c 2007-02-21 05:32:30.000000000 +0100
++++ linux-2.6.21-rc1/arch/ppc/platforms/sandpoint.c 2007-02-27 21:57:46.000000000 +0100
+@@ -91,7 +91,7 @@
+ #include <asm/vga.h>
+ #include <asm/open_pic.h>
+ #include <asm/i8259.h>
+-#include <asm/todc.h>
++//#include <asm/todc.h>
+ #include <asm/bootinfo.h>
+ #include <asm/mpc10x.h>
+ #include <asm/pci-bridge.h>
+@@ -99,6 +99,8 @@
+ #include <asm/ppc_sys.h>
+
+ #include "sandpoint.h"
++#include "qnap_pic.h"
++#include "qnap_pic_user.h"
+
+ /* Set non-zero if an X2 Sandpoint detected. */
+ static int sandpoint_is_x2;
+@@ -106,8 +108,7 @@
+ unsigned char __res[sizeof(bd_t)];
+
+ static void sandpoint_halt(void);
+-static void sandpoint_probe_type(void);
+-
++//static void sandpoint_probe_type(void);
+ /*
+ * Define all of the IRQ senses and polarities. Taken from the
+ * Sandpoint X3 User's manual.
+@@ -121,7 +122,6 @@
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 8: IDE (INT C) */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE) /* 9: IDE (INT D) */
+ };
+-
+ /*
+ * Motorola SPS Sandpoint interrupt routing.
+ */
+@@ -145,7 +145,7 @@
+ const long min_idsel = 11, max_idsel = 16, irqs_per_slot = 4;
+ return PCI_IRQ_TABLE_LOOKUP;
+ }
+-
++#if 0
+ static inline int
+ x2_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
+ {
+@@ -166,7 +166,37 @@
+ const long min_idsel = 11, max_idsel = 16, irqs_per_slot = 4;
+ return PCI_IRQ_TABLE_LOOKUP;
+ }
++#else
++static inline int
++x2_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
++{
++ static char pci_irq_table[][4] =
++ /*
++ * PCI IDSEL/INTPIN->INTLINE
++ * A B C D
++ */
++ {
++ { 0, 0, 0, 0 }, /* IDSEL 11 - unused */
++ { 0, 0, 0, 0 }, /* IDSEL 12 - unused */
++ { 16, 16, 16, 16 }, /* IDSEL 13 - PCI slot 1 */ // Sil3512 chip
++ { 17, 17, 17, 17 }, /* IDSEL 14 - PCI slot 2 */ // NEC USB chip
++ { 18, 18, 18, 18 }, /* IDSEL 15 - PCI slot 3 */ // Intel 82540 chip
++ { 19, 19, 19, 19 }, /* IDSEL 16 - PCI slot 4 */
++ { 0, 0, 0, 0 },
++ { 0, 0, 0, 0 },
++ { 0, 0, 0, 0 },
++ { 0, 0, 0, 0 },
++ { 0, 0, 0, 0 },
++ { 0, 0, 0, 0 },
++ { 0, 0, 0, 0 },
++ { 20, 20, 20, 20 }, /* IDSEL 24 - mini PCI */
++ };
+
++ const long min_idsel = 11, max_idsel = 24, irqs_per_slot = 4;
++ return PCI_IRQ_TABLE_LOOKUP;
++}
++#endif
++#if 0
+ static void __init
+ sandpoint_setup_winbond_83553(struct pci_controller *hose)
+ {
+@@ -226,7 +256,7 @@
+ 0x00ff0011);
+ return;
+ }
+-
++#endif
+ /* On the sandpoint X2, we must avoid sending configuration cycles to
+ * device #12 (IDSEL addr = AD12).
+ */
+@@ -258,7 +288,7 @@
+ MPC10X_MAPB_EUMB_BASE) == 0) {
+
+ /* Do early winbond init, then scan PCI bus */
+- sandpoint_setup_winbond_83553(hose);
++ //sandpoint_setup_winbond_83553(hose);
+ hose->last_busno = pciauto_bus_scan(hose, hose->first_busno);
+
+ ppc_md.pcibios_fixup = NULL;
+@@ -280,10 +310,21 @@
+ }
+
+ static void __init
++sandpoint_init2(void)
++{
++ char pic_command[2] = {QNAP_PIC_STATUS_GREEN_BLINK, QNAP_PIC_BUZZER_SHORT};
++
++ /* Setup serial port access */
++ qnap_pic_init();
++ qnap_pic_send_command(pic_command, 2);
++}
++
++static void __init
+ sandpoint_setup_arch(void)
+ {
+ /* Probe for Sandpoint model */
+- sandpoint_probe_type();
++ //sandpoint_probe_type();
++ sandpoint_is_x2 = 1;
+ if (sandpoint_is_x2)
+ epic_serial_mode = 0;
+
+@@ -348,8 +389,9 @@
+ _set_L3CR(0x8f032000);
+ }
+ #endif
++ sandpoint_init2();
+ }
+-
++#if 0
+ #define SANDPOINT_87308_CFG_ADDR 0x15c
+ #define SANDPOINT_87308_CFG_DATA 0x15d
+
+@@ -456,7 +498,7 @@
+ }
+
+ arch_initcall(sandpoint_setup_natl_87308);
+-
++#endif
+ static int __init
+ sandpoint_request_io(void)
+ {
+@@ -481,20 +523,20 @@
+ static void __init
+ sandpoint_init_IRQ(void)
+ {
+- int i;
++// int i;
+
+- OpenPIC_InitSenses = sandpoint_openpic_initsenses;
+- OpenPIC_NumInitSenses = sizeof(sandpoint_openpic_initsenses);
++// OpenPIC_InitSenses = sandpoint_openpic_initsenses;
++// OpenPIC_NumInitSenses = sizeof(sandpoint_openpic_initsenses);
+
+ mpc10x_set_openpic();
+- openpic_hookup_cascade(sandpoint_is_x2 ? 17 : NUM_8259_INTERRUPTS, "82c59 cascade",
+- i8259_irq);
++// openpic_hookup_cascade(sandpoint_is_x2 ? 17 : NUM_8259_INTERRUPTS, "82c59 cascade",
++// i8259_irq);
+
+ /*
+ * The EPIC allows for a read in the range of 0xFEF00000 ->
+ * 0xFEFFFFFF to generate a PCI interrupt-acknowledge transaction.
+ */
+- i8259_init(0xfef00000, 0);
++// i8259_init(0xfef00000, 0);
+ }
+
+ static unsigned long __init
+@@ -518,36 +560,60 @@
+ static void __init
+ sandpoint_map_io(void)
+ {
+- io_block_mapping(0xfe000000, 0xfe000000, 0x02000000, _PAGE_IO);
++ // 2005.08.02, JohnsonCheng
++ //io_block_mapping(0xfe000000, 0xfe000000, 0x02000000, _PAGE_IO);
++ io_block_mapping(0xfc000000, 0xfc000000, 0x04000000, _PAGE_IO);
+ }
+
+-static void
+-sandpoint_restart(char *cmd)
++// mode: 0 - reboot, 1 - poweroff & shutdown
++void sandpoint_real_reset(int mode)
+ {
+- local_irq_disable();
++ char pic_command = 0x0;
+
+- /* Set exception prefix high - to the firmware */
+- _nmask_and_or_msr(0, MSR_IP);
++ local_irq_disable();
++ /* disable and invalidate the L2 cache */
++ _set_L2CR(0);
++ _set_L2CR(0x200000);
++ /* flush and disable L1 I/D cache */
++ __asm__ __volatile__
++ ("\n\
++ mfspr 3,1008 \n\
++ ori 5,5,0xcc00 \n\
++ ori 4,3,0xc00 \n\
++ andc 5,3,5 \n\
++ sync \n\
++ mtspr 1008,4 \n\
++ isync \n\
++ sync \n\
++ mtspr 1008,5 \n\
++ isync \n\
++ sync \n\
++ ");
++ if (mode == 0)
++ pic_command = QNAP_PIC_SOFTWARE_REBOOT;
++ else
++ pic_command = QNAP_PIC_SOFTWARE_SHUTDOWN;
++// qnap_pic_send_command(&pic_command, 1);
++ while (1)
++ qnap_pic_send_command(&pic_command, 1);
++}
+
+- /* Reset system via Port 92 */
+- outb(0x00, 0x92);
+- outb(0x01, 0x92);
+- for(;;); /* Spin until reset happens */
++static void
++sandpoint_restart(char *cmd)
++{
++ sandpoint_real_reset(0);
+ }
+
+ static void
+ sandpoint_power_off(void)
+ {
+- local_irq_disable();
+- for(;;); /* No way to shut power off with software */
+- /* NOTREACHED */
++ sandpoint_real_reset(1);
+ }
+
+ static void
+ sandpoint_halt(void)
+ {
+- sandpoint_power_off();
+- /* NOTREACHED */
++ sandpoint_real_reset(1);
+ }
+
+ static int
+@@ -665,7 +731,18 @@
+ : "=r" (bat3u), "=r" (bat3l));
+ }
+
+-TODC_ALLOC();
++static void __init
++sandpoint_calibrate_decr(void)
++{
++ ulong freq = 33000000;
++
++ //printk("time_init: decrementer frequency = %lu.%.6lu MHz\n", freq/1000000, freq%1000000);
++ tb_ticks_per_jiffy = freq / HZ;
++ tb_to_us = mulhwu_scale_factor(freq, 1000000);
++ return;
++}
++
++//TODC_ALLOC();
+
+ void __init
+ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
+@@ -721,14 +798,14 @@
+ ppc_md.find_end_of_memory = sandpoint_find_end_of_memory;
+ ppc_md.setup_io_mappings = sandpoint_map_io;
+
+- TODC_INIT(TODC_TYPE_PC97307, 0x70, 0x00, 0x71, 8);
+- ppc_md.time_init = todc_time_init;
+- ppc_md.set_rtc_time = todc_set_rtc_time;
+- ppc_md.get_rtc_time = todc_get_rtc_time;
+- ppc_md.calibrate_decr = todc_calibrate_decr;
++ //TODC_INIT(TODC_TYPE_PC97307, 0x70, 0x00, 0x71, 8);
++ //ppc_md.time_init = todc_time_init;
++ //ppc_md.set_rtc_time = todc_set_rtc_time;
++ //ppc_md.get_rtc_time = todc_get_rtc_time;
++ ppc_md.calibrate_decr = sandpoint_calibrate_decr;
+
+- ppc_md.nvram_read_val = todc_mc146818_read_val;
+- ppc_md.nvram_write_val = todc_mc146818_write_val;
++ //ppc_md.nvram_read_val = todc_mc146818_read_val;
++ //ppc_md.nvram_write_val = todc_mc146818_write_val;
+
+ #ifdef CONFIG_KGDB
+ ppc_md.kgdb_map_scc = gen550_kgdb_map_scc;
diff --git a/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_platforms_sandpoint.h b/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_platforms_sandpoint.h
new file mode 100644
index 0000000000..52a3fd1313
--- /dev/null
+++ b/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_platforms_sandpoint.h
@@ -0,0 +1,52 @@
+Index: linux-2.6.20.1/arch/ppc/platforms/sandpoint.h
+===================================================================
+--- linux-2.6.20.1.orig/arch/ppc/platforms/sandpoint.h 2007-02-20 07:34:32.000000000 +0100
++++ linux-2.6.20.1/arch/ppc/platforms/sandpoint.h 2007-02-26 03:15:15.000000000 +0100
+@@ -49,29 +49,37 @@
+ /*
+ * Serial defines.
+ */
+-#define SANDPOINT_SERIAL_0 0xfe0003f8
+-#define SANDPOINT_SERIAL_1 0xfe0002f8
++#define SANDPOINT_SERIAL_0 0xfdf04500
++#define SANDPOINT_SERIAL_1 0xfdf04600
+
+-#define RS_TABLE_SIZE 2
++#define RS_TABLE_SIZE 1
+
+ /* Rate for the 1.8432 Mhz clock for the onboard serial chip */
+-#define BASE_BAUD ( 1843200 / 16 )
+-#define UART_CLK 1843200
++#define BASE_BAUD ( 133000000 / 16 )
++#define UART_CLK 133000000
+
+ #ifdef CONFIG_SERIAL_DETECT_IRQ
+-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_AUTO_IRQ)
++#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_AUTO_IRQ|ASYNC_SKIP_TEST)
+ #else
+-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF)
++#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST)
+ #endif
+
++#define SANDPOINT_SERIAL_0_INT 25 // 4 + EPIC_IRQ_BASE + NUM_8259_INTERRUPTS
++#define SANDPOINT_SERIAL_1_INT 24 // 3 + EPIC_IRQ_BASE + NUM_8259_INTERRUPTS
++#if 0
+ #define STD_SERIAL_PORT_DFNS \
+- { 0, BASE_BAUD, SANDPOINT_SERIAL_0, 4, STD_COM_FLAGS, /* ttyS0 */ \
++ { 0, BASE_BAUD, SANDPOINT_SERIAL_0, SANDPOINT_SERIAL_0_INT, STD_COM_FLAGS, /* ttyS0 */ \
+ iomem_base: (u8 *)SANDPOINT_SERIAL_0, \
+ io_type: SERIAL_IO_MEM }, \
+- { 0, BASE_BAUD, SANDPOINT_SERIAL_1, 3, STD_COM_FLAGS, /* ttyS1 */ \
++ { 0, BASE_BAUD, SANDPOINT_SERIAL_1, SANDPOINT_SERIAL_1_INT, STD_COM_FLAGS, /* ttyS1 */ \
+ iomem_base: (u8 *)SANDPOINT_SERIAL_1, \
+ io_type: SERIAL_IO_MEM },
+-
++#else
++#define STD_SERIAL_PORT_DFNS \
++ { 0, BASE_BAUD, SANDPOINT_SERIAL_0, SANDPOINT_SERIAL_0_INT, STD_COM_FLAGS, /* ttyS0 */ \
++ iomem_base: (u8 *)SANDPOINT_SERIAL_0, \
++ io_type: SERIAL_IO_MEM },
++#endif
+ #define SERIAL_PORT_DFNS \
+ STD_SERIAL_PORT_DFNS
+
diff --git a/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_syslib_Makefile b/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_syslib_Makefile
new file mode 100644
index 0000000000..c3a98b7700
--- /dev/null
+++ b/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_syslib_Makefile
@@ -0,0 +1,13 @@
+Index: linux-2.6.20.1/arch/ppc/syslib/Makefile
+===================================================================
+--- linux-2.6.20.1.orig/arch/ppc/syslib/Makefile 2007-02-20 07:34:32.000000000 +0100
++++ linux-2.6.20.1/arch/ppc/syslib/Makefile 2007-02-28 20:29:17.000000000 +0100
+@@ -66,7 +66,7 @@
+ obj-$(CONFIG_HARRIER) += harrier.o
+ obj-$(CONFIG_PRPMC800) += open_pic.o pci_auto.o
+ obj-$(CONFIG_RADSTONE_PPC7D) += pci_auto.o
+-obj-$(CONFIG_SANDPOINT) += pci_auto.o todc_time.o
++obj-$(CONFIG_SANDPOINT) += pci_auto.o
+ obj-$(CONFIG_SBC82xx) += todc_time.o
+ obj-$(CONFIG_SPRUCE) += cpc700_pic.o pci_auto.o \
+ todc_time.o
diff --git a/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_syslib_mpc10x_common.c b/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_syslib_mpc10x_common.c
new file mode 100644
index 0000000000..296395818e
--- /dev/null
+++ b/packages/linux/linux-turbostation/linux-2.6.16_arch_ppc_syslib_mpc10x_common.c
@@ -0,0 +1,19 @@
+Index: linux-2.6.20.1/arch/ppc/syslib/mpc10x_common.c
+===================================================================
+--- linux-2.6.20.1.orig/arch/ppc/syslib/mpc10x_common.c 2007-02-20 07:34:32.000000000 +0100
++++ linux-2.6.20.1/arch/ppc/syslib/mpc10x_common.c 2007-02-26 02:26:51.000000000 +0100
+@@ -645,9 +645,11 @@
+ /* Skip reserved space and map i2c and DMA Ch[01] */
+ openpic_set_sources(EPIC_IRQ_BASE, 3, OpenPIC_Addr + 0x11020);
+ /* Skip reserved space and map Message Unit Interrupt (I2O) */
+- openpic_set_sources(EPIC_IRQ_BASE + 3, 1, OpenPIC_Addr + 0x110C0);
+- /* Skip reserved space and map Serial Interupts */
+- openpic_set_sources(EPIC_IRQ_BASE + 4, 2, OpenPIC_Addr + 0x11120);
++ //openpic_set_sources(EPIC_IRQ_BASE + 3, 1, OpenPIC_Addr + 0x110C0);
++#ifdef CONFIG_SANDPOINT
++ openpic_set_sources(EPIC_IRQ_BASE + 3, 1, OpenPIC_Addr + 0x11140);
++ openpic_set_sources(EPIC_IRQ_BASE + 4, 1, OpenPIC_Addr + 0x11120);
++#endif
+
+ openpic_init(NUM_8259_INTERRUPTS);
+ }
diff --git a/packages/linux/linux-turbostation/linux-2.6.16_drivers_mtd_maps_physmap.c b/packages/linux/linux-turbostation/linux-2.6.16_drivers_mtd_maps_physmap.c
new file mode 100644
index 0000000000..e1895af53a
--- /dev/null
+++ b/packages/linux/linux-turbostation/linux-2.6.16_drivers_mtd_maps_physmap.c
@@ -0,0 +1,59 @@
+Index: linux-2.6.20.2/drivers/mtd/maps/physmap.c
+===================================================================
+--- linux-2.6.20.2.orig/drivers/mtd/maps/physmap.c 2007-03-11 15:22:25.000000000 +0100
++++ linux-2.6.20.2/drivers/mtd/maps/physmap.c 2007-03-11 15:28:18.000000000 +0100
+@@ -134,13 +134,53 @@
+ }
+ info->mtd->owner = THIS_MODULE;
+
++static struct mtd_partition TS101_partitions[] = {
++ {
++ .name = "u-boot",
++ .offset = 0x00F00000,
++ .size = 0x00040000,
++ .mask_flags = MTD_WRITEABLE,
++ },
++ {
++ .name = "kernel",
++ .offset = 0x00000000,
++ .size = 0x00200000,
++ },
++ {
++ .name = "rootfs",
++ .offset = 0x00200000,
++ .size = 0x00D00000,
++ },
++ {
++ .name = "u-boot env",
++ .offset = 0x00F40000,
++ .size = 0x00020000,
++ },
++ {
++ .name = "u-boot2",
++ .offset = 0x00F60000,
++ .size = 0x00040000,
++ },
++ {
++ .name = "u-boot2 env",
++ .offset = 0x00FA0000,
++ .size = 0x00020000,
++ },
++ {
++ .name = "sysconf",
++ .offset = 0x00FC0000,
++ .size = 0x00040000,
++ }
++};
++
++
+ #ifdef CONFIG_MTD_PARTITIONS
+ err = parse_mtd_partitions(info->mtd, part_probe_types, &info->parts, 0);
+ if (err > 0) {
+ add_mtd_partitions(info->mtd, info->parts, err);
+ return 0;
+ }
+-
++ physmap_set_partitions(TS101_partitions, 7);
+ if (physmap_data->nr_parts) {
+ printk(KERN_NOTICE "Using physmap partition information\n");
+ add_mtd_partitions(info->mtd, physmap_data->parts,
diff --git a/packages/linux/linux-turbostation/linux-2.6.16_include_asm-ppc_mpc10x.h b/packages/linux/linux-turbostation/linux-2.6.16_include_asm-ppc_mpc10x.h
new file mode 100644
index 0000000000..0b482aee17
--- /dev/null
+++ b/packages/linux/linux-turbostation/linux-2.6.16_include_asm-ppc_mpc10x.h
@@ -0,0 +1,14 @@
+Index: linux-2.6.20.1/include/asm-ppc/mpc10x.h
+===================================================================
+--- linux-2.6.20.1.orig/include/asm-ppc/mpc10x.h 2007-02-20 07:34:32.000000000 +0100
++++ linux-2.6.20.1/include/asm-ppc/mpc10x.h 2007-02-26 02:28:21.000000000 +0100
+@@ -155,7 +155,8 @@
+ */
+ extern unsigned long ioremap_base;
+ #define MPC10X_MAPA_EUMB_BASE (ioremap_base - MPC10X_EUMB_SIZE)
+-#define MPC10X_MAPB_EUMB_BASE MPC10X_MAPA_EUMB_BASE
++//#define MPC10X_MAPB_EUMB_BASE MPC10X_MAPA_EUMB_BASE
++#define MPC10X_MAPB_EUMB_BASE 0xfdf00000 // 2005.08.02, JohnsonCheng
+
+ enum ppc_sys_devices {
+ MPC10X_IIC1,
diff --git a/packages/linux/linux-turbostation_2.6.20.2.bb b/packages/linux/linux-turbostation_2.6.20.2.bb
new file mode 100644
index 0000000000..84701e4a6a
--- /dev/null
+++ b/packages/linux/linux-turbostation_2.6.20.2.bb
@@ -0,0 +1,51 @@
+DESCRIPTION = "Linux Kernel for the QNAP TurboStation platform"
+SECTION = "kernel"
+LICENSE = "GPL"
+DEPENDS = "uboot-utils"
+PR = "r1"
+
+COMPATIBLE_MACHINE = "turbostation"
+
+RDEPENDS_kernel-module-zd1211rw += "zd1211-firmware"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://001_r1000.diff;patch=1 \
+ file://linux-2.6.16_arch_ppc_platforms_sandpoint.h;patch=1 \
+ file://002_qnap-pic.diff;patch=1 \
+ file://linux-2.6.16_arch_ppc_syslib_Makefile;patch=1 \
+ file://linux-2.6.16_drivers_mtd_maps_physmap.c;patch=1 \
+ file://linux-2.6.16_arch_ppc_syslib_mpc10x_common.c;patch=1 \
+ file://linux-2.6.16_arch_ppc_platforms_Makefile;patch=1 \
+ file://linux-2.6.16_include_asm-ppc_mpc10x.h;patch=1 \
+ file://linux-2.6.16_arch_ppc_platforms_sandpoint.c;patch=1 \
+ file://defconfig"
+
+S = "${WORKDIR}/linux-${PV}"
+
+inherit kernel
+
+KERNEL_IMAGETYPE = "uImage"
+KERNEL_OUTPUT = "arch/${ARCH}/boot/images/${KERNEL_IMAGETYPE}"
+# Override arch. The kernel stuff is in arch/ppc, not arch/powerpc in our case
+ARCH = ppc
+
+do_configure() {
+ install -m 644 ${WORKDIR}/defconfig ${S}/.config
+ make ARCH=ppc oldconfig
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/images/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+}
+
+#ppc build leaves the kernel in a different place
+#do_movekernel() {
+#
+#}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
+
+
diff --git a/packages/linux/linux-x86-2.6.17.9/defconfig b/packages/linux/linux-x86-2.6.17.9/defconfig
index 3ee6a43392..82f7049e49 100644
--- a/packages/linux/linux-x86-2.6.17.9/defconfig
+++ b/packages/linux/linux-x86-2.6.17.9/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.17.9
-# Mon Sep 18 23:30:42 2006
+# Wed Jan 24 17:29:53 2007
#
CONFIG_X86_32=y
CONFIG_SEMAPHORE_SLEEPERS=y
@@ -421,11 +421,14 @@ CONFIG_BLK_DEV_FD=y
# 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 is not set
+CONFIG_BLK_DEV_LOOP=m
+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
-# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_UB=m
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -682,44 +685,51 @@ CONFIG_MII=y
# 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_LANCE=m
+CONFIG_NET_VENDOR_SMC=y
+CONFIG_WD80x3=m
+CONFIG_ULTRA=m
+CONFIG_SMC9194=m
# 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_AT1700=m
+CONFIG_DEPCA=m
+CONFIG_HP100=m
# CONFIG_NET_ISA 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_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_PCNET32=m
+CONFIG_AMD8111_ETH=m
+# CONFIG_AMD8111E_NAPI is not set
+CONFIG_ADAPTEC_STARFIRE=m
+# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
+CONFIG_AC3200=m
+CONFIG_APRICOT=m
+CONFIG_B44=m
+CONFIG_FORCEDETH=m
+CONFIG_CS89x0=m
+CONFIG_DGRS=m
+CONFIG_EEPRO100=m
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
CONFIG_8139TOO=y
CONFIG_8139TOO_PIO=y
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139TOO_8129 is not set
# CONFIG_8139_OLD_RX_RESET 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_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_TLAN=m
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
# CONFIG_NET_POCKET is not set
#
@@ -765,7 +775,15 @@ CONFIG_S2IO=m
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP 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_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
@@ -859,7 +877,7 @@ CONFIG_SERIAL_CORE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_LEGACY_PTY_COUNT=128
CONFIG_PRINTER=y
# CONFIG_LP_CONSOLE is not set
# CONFIG_PPDEV is not set
@@ -979,7 +997,7 @@ CONFIG_FB_FIRMWARE_EDID=y
# CONFIG_FB_ARC is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
-CONFIG_FB_VGA16=y
+# CONFIG_FB_VGA16 is not set
CONFIG_FB_VESA=y
CONFIG_VIDEO_SELECT=y
# CONFIG_FB_HGA is not set
@@ -1186,7 +1204,9 @@ 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_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=y
# CONFIG_USB_SL811_HCD is not set
@@ -1503,19 +1523,47 @@ CONFIG_DOUBLEFAULT=y
#
# Cryptographic options
#
-# CONFIG_CRYPTO is not set
+CONFIG_CRYPTO=y
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+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_DES 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_AES_586 is not set
+# 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 is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
#
# Hardware crypto devices
#
+# CONFIG_CRYPTO_DEV_PADLOCK is not set
#
# Library routines
#
-# CONFIG_CRC_CCITT is not set
+CONFIG_CRC_CCITT=m
# CONFIG_CRC16 is not set
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y
diff --git a/packages/linux/linux-x86-2.6.17.9/guinness/defconfig b/packages/linux/linux-x86-2.6.17.9/guinness/defconfig
index 33d32d13be..b6213a557c 100644
--- a/packages/linux/linux-x86-2.6.17.9/guinness/defconfig
+++ b/packages/linux/linux-x86-2.6.17.9/guinness/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.17.9
-# Fri Oct 13 12:24:47 2006
+# Fri Oct 13 13:18:54 2006
#
CONFIG_X86_32=y
CONFIG_SEMAPHORE_SLEEPERS=y
@@ -1274,6 +1274,7 @@ CONFIG_SOUND=m
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 is not set
@@ -1294,6 +1295,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
# Generic devices
#
CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
CONFIG_SND_AC97_CODEC=m
CONFIG_SND_AC97_BUS=m
CONFIG_SND_DUMMY=m
@@ -1349,7 +1351,7 @@ CONFIG_SND_DUMMY=m
CONFIG_SND_VIA82XX=m
# CONFIG_SND_VIA82XX_MODEM is not set
# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
+CONFIG_SND_YMFPCI=m
#
# USB devices
diff --git a/packages/linux/linux-x86-2.6.20/.mtn2git_empty b/packages/linux/linux-x86-2.6.20/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-x86-2.6.20/.mtn2git_empty
diff --git a/packages/linux/linux-x86-2.6.20/defconfig b/packages/linux/linux-x86-2.6.20/defconfig
new file mode 100644
index 0000000000..ed299d667d
--- /dev/null
+++ b/packages/linux/linux-x86-2.6.20/defconfig
@@ -0,0 +1,1535 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20
+# Tue Feb 20 09:02:49 2007
+#
+CONFIG_X86_64=y
+CONFIG_64BIT=y
+CONFIG_X86=y
+CONFIG_ZONE_DMA32=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_SEMAPHORE_SLEEPERS=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_DMI=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_GENERIC_BUG=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=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_IPC_NS is not set
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+# CONFIG_IKCONFIG is not set
+# CONFIG_CPUSETS is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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
+CONFIG_STOP_MACHINE=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_BLK_DEV_IO_TRACE 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_VSMP is not set
+# CONFIG_MK8 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+CONFIG_GENERIC_CPU=y
+CONFIG_X86_L1_CACHE_BYTES=128
+CONFIG_X86_L1_CACHE_SHIFT=7
+CONFIG_X86_INTERNODE_CACHE_BYTES=128
+CONFIG_X86_TSC=y
+CONFIG_X86_GOOD_APIC=y
+# CONFIG_MICROCODE is not set
+# CONFIG_X86_MSR is not set
+# CONFIG_X86_CPUID is not set
+CONFIG_X86_HT=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_MTRR=y
+CONFIG_SMP=y
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_PREEMPT_BKL=y
+# CONFIG_NUMA is not set
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_FLATMEM_ENABLE=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 is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_RESOURCES_64BIT=y
+CONFIG_NR_CPUS=8
+# CONFIG_HOTPLUG_CPU is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_HPET_TIMER=y
+CONFIG_IOMMU=y
+# CONFIG_CALGARY_IOMMU is not set
+CONFIG_SWIOTLB=y
+CONFIG_X86_MCE=y
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+# CONFIG_KEXEC is not set
+# CONFIG_CRASH_DUMP is not set
+CONFIG_PHYSICAL_START=0x200000
+CONFIG_SECCOMP=y
+# CONFIG_CC_STACKPROTECTOR is not set
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+# CONFIG_REORDER is not set
+CONFIG_K8_NB=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_ISA_DMA_API=y
+CONFIG_GENERIC_PENDING_IRQ=y
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+
+#
+# ACPI (Advanced Configuration and Power Interface) Support
+#
+CONFIG_ACPI=y
+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_DOCK is not set
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_THERMAL=y
+# CONFIG_ACPI_ASUS is not set
+CONFIG_ACPI_IBM=m
+# CONFIG_ACPI_IBM_DOCK 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
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+# CONFIG_PCIEPORTBUS is not set
+# CONFIG_PCI_MSI is not set
+CONFIG_HT_IRQ=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# PCI Hotplug Support
+#
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Executable file formats / Emulations
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_MISC=y
+# CONFIG_IA32_EMULATION is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+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_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_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
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS 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=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=y
+
+#
+# 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_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=m
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=y
+CONFIG_PARPORT_PC=y
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_AX88796 is not set
+# CONFIG_PARPORT_1284 is not set
+
+#
+# Plug and Play support
+#
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=y
+# CONFIG_PARIDE 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 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_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# Misc devices
+#
+# CONFIG_IBM_ASM is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_MSI_LAPTOP 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=y
+CONFIG_IDEDISK_MULTI_MODE=y
+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=y
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_IDEPNP is not set
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_RZ1000=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+# CONFIG_IDEDMA_ONLYDISK is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_ATIIXP is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_JMICRON is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+CONFIG_BLK_DEV_PIIX=y
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SIS5513 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD 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 is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_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
+
+#
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS 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_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_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_PPA is not set
+# CONFIG_SCSI_IMM is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD 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=y
+
+#
+# Subsystem Options
+#
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+# CONFIG_IEEE1394_OUI_DB is not set
+# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set
+# CONFIG_IEEE1394_EXPORT_FULL_API is not set
+
+#
+# Device Drivers
+#
+
+#
+# Texas Instruments PCILynx requires I2C
+#
+CONFIG_IEEE1394_OHCI1394=y
+
+#
+# Protocol Drivers
+#
+# CONFIG_IEEE1394_VIDEO1394 is not set
+# CONFIG_IEEE1394_SBP2 is not set
+# CONFIG_IEEE1394_ETH1394 is not set
+# CONFIG_IEEE1394_DV1394 is not set
+CONFIG_IEEE1394_RAWIO=y
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=m
+# 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
+
+#
+# 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=y
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_NET_POCKET 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
+# CONFIG_QLA3XXX is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_IXGB is not set
+CONFIG_S2IO=m
+# CONFIG_S2IO_NAPI 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
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP 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
+# CONFIG_INPUT_FF_MEMLESS 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 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_KEYBOARD_STOWAWAY is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+# CONFIG_MOUSE_SERIAL 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_PARKBD 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_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_PRINTER=y
+# CONFIG_LP_CONSOLE is not set
+# CONFIG_PPDEV is not set
+# CONFIG_TIPAR is not set
+
+#
+# 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=m
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+CONFIG_AGP=y
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=y
+# CONFIG_AGP_SIS is not set
+# CONFIG_AGP_VIA is not set
+CONFIG_DRM=y
+# CONFIG_DRM_TDFX is not set
+# CONFIG_DRM_R128 is not set
+# CONFIG_DRM_RADEON is not set
+# CONFIG_DRM_I810 is not set
+# CONFIG_DRM_I830 is not set
+# CONFIG_DRM_I915 is not set
+# CONFIG_DRM_MGA is not set
+# CONFIG_DRM_SIS is not set
+# CONFIG_DRM_VIA is not set
+# CONFIG_DRM_SAVAGE is not set
+# CONFIG_MWAVE is not set
+# CONFIG_PC8736x_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_ABITUGURU is not set
+# CONFIG_SENSORS_K8TEMP is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_HDAPS is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT 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_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_INTEL is not set
+# CONFIG_FB_MATROX 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_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_VGACON_SOFT_SCROLLBACK is not set
+CONFIG_VIDEO_SELECT=y
+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
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_DEVICE=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+# CONFIG_SND_RTCTIMER 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_AC97_CODEC=y
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_MTS64 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_ALS4000 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=y
+# 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
+# CONFIG_SND_AC97_POWER_SAVE is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_USX2Y is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=y
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# 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_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_EHCI_TT_NEWSCHED 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=y
+
+#
+# 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_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=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_TOUCHSCREEN 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 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_MON=y
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# 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_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_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
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+# CONFIG_EDAC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_M48T86=m
+CONFIG_RTC_DRV_TEST=m
+CONFIG_RTC_DRV_V3020=m
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# Virtualization
+#
+# CONFIG_KVM is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_EDD is not set
+# CONFIG_DELL_RBU is not set
+# CONFIG_DCDBAS 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_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 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=y
+# CONFIG_FUSE_FS is not set
+
+#
+# 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_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLBFS 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_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 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=y
+# CONFIG_NFSD_V3 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# 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
+# 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
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Instrumentation Support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=y
+# CONFIG_KPROBES is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_UNUSED_SYMBOLS=y
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=15
+CONFIG_DEBUG_BUGVERBOSE=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+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_LRW=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_AES_X86_64 is not set
+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 is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-x86-2.6.20/netvista/.mtn2git_empty b/packages/linux/linux-x86-2.6.20/netvista/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-x86-2.6.20/netvista/.mtn2git_empty
diff --git a/packages/linux/linux-x86-2.6.20/netvista/defconfig b/packages/linux/linux-x86-2.6.20/netvista/defconfig
new file mode 100644
index 0000000000..4db3370642
--- /dev/null
+++ b/packages/linux/linux-x86-2.6.20/netvista/defconfig
@@ -0,0 +1,1720 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20
+# Thu Apr 5 12:46:55 2007
+#
+CONFIG_X86_32=y
+CONFIG_GENERIC_TIME=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_SEMAPHORE_SLEEPERS=y
+CONFIG_X86=y
+CONFIG_MMU=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_DMI=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# 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_IPC_NS is not set
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+# CONFIG_IKCONFIG is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=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_SMP is not set
+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_PARAVIRT 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_MCORE2 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_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+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=y
+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 is not set
+CONFIG_VM86=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_PAGE_OFFSET=0xC0000000
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_POPULATES_NODE_MAP=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_RESOURCES_64BIT is not set
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MTRR=y
+# CONFIG_EFI is not set
+CONFIG_SECCOMP=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+# CONFIG_KEXEC is not set
+CONFIG_PHYSICAL_START=0x100000
+# CONFIG_RELOCATABLE is not set
+CONFIG_PHYSICAL_ALIGN=0x100000
+CONFIG_COMPAT_VDSO=y
+
+#
+# Power management options (ACPI, APM)
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED 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_DOCK is not set
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_THERMAL=y
+# CONFIG_ACPI_ASUS is not set
+CONFIG_ACPI_IBM=m
+# CONFIG_ACPI_IBM_DOCK 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=y
+CONFIG_APM_IGNORE_USER_SUSPEND=y
+CONFIG_APM_DO_ENABLE=y
+CONFIG_APM_CPU_IDLE=y
+CONFIG_APM_DISPLAY_BLANK=y
+# CONFIG_APM_RTC_IS_GMT is not set
+CONFIG_APM_ALLOW_INTS=y
+# CONFIG_APM_REAL_MODE_POWER_OFF 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_ISA_DMA_API=y
+# CONFIG_ISA 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 is not set
+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_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=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_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
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS 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=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=y
+
+#
+# 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_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=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=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+# 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 is not set
+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 is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=y
+CONFIG_PARPORT_PC=y
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_AX88796 is not set
+# CONFIG_PARPORT_1284 is not set
+
+#
+# Plug and Play support
+#
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=y
+# CONFIG_PARIDE 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 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_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# Misc devices
+#
+# CONFIG_IBM_ASM is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_MSI_LAPTOP 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=y
+CONFIG_IDEDISK_MULTI_MODE=y
+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=y
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_IDEPNP is not set
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_RZ1000=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+# CONFIG_IDEDMA_ONLYDISK is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_ATIIXP is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_CS5535 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_JMICRON is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+CONFIG_BLK_DEV_PIIX=y
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SIS5513 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD 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 is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_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
+
+#
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS 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_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_PPA is not set
+# CONFIG_SCSI_IMM is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD 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=y
+
+#
+# Subsystem Options
+#
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+# CONFIG_IEEE1394_OUI_DB is not set
+# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set
+# CONFIG_IEEE1394_EXPORT_FULL_API is not set
+
+#
+# Device Drivers
+#
+
+#
+# Texas Instruments PCILynx requires I2C
+#
+CONFIG_IEEE1394_OHCI1394=y
+
+#
+# Protocol Drivers
+#
+# CONFIG_IEEE1394_VIDEO1394 is not set
+# CONFIG_IEEE1394_SBP2 is not set
+# CONFIG_IEEE1394_ETH1394 is not set
+# CONFIG_IEEE1394_DV1394 is not set
+CONFIG_IEEE1394_RAWIO=y
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=m
+# 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
+
+#
+# Tulip family network device support
+#
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+CONFIG_TULIP_MMIO=y
+CONFIG_TULIP_NAPI=y
+CONFIG_TULIP_NAPI_HW_MITIGATION=y
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+# CONFIG_HP100 is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+# CONFIG_PCNET32_NAPI is not set
+CONFIG_AMD8111_ETH=m
+CONFIG_AMD8111E_NAPI=y
+CONFIG_ADAPTEC_STARFIRE=m
+# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
+CONFIG_B44=m
+CONFIG_FORCEDETH=m
+# CONFIG_FORCEDETH_NAPI is not set
+CONFIG_DGRS=m
+CONFIG_EEPRO100=m
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+# CONFIG_8139CP is not set
+CONFIG_8139TOO=y
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+CONFIG_SUNDANCE_MMIO=y
+CONFIG_TLAN=m
+CONFIG_VIA_RHINE=m
+CONFIG_VIA_RHINE_MMIO=y
+CONFIG_VIA_RHINE_NAPI=y
+# CONFIG_NET_POCKET 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
+# CONFIG_QLA3XXX is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_IXGB is not set
+CONFIG_S2IO=m
+# CONFIG_S2IO_NAPI 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=y
+
+#
+# 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_AIRO is not set
+# CONFIG_HERMES is not set
+CONFIG_ATMEL=m
+# CONFIG_PCI_ATMEL is not set
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+# 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
+CONFIG_NET_WIRELESS=y
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP 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
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=800
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=600
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=m
+CONFIG_INPUT_TSDEV_SCREEN_X=800
+CONFIG_INPUT_TSDEV_SCREEN_Y=600
+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 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_GUNZE=m
+CONFIG_TOUCHSCREEN_ELO=m
+CONFIG_TOUCHSCREEN_MTOUCH=m
+CONFIG_TOUCHSCREEN_MK712=m
+CONFIG_TOUCHSCREEN_PENMOUNT=m
+CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
+CONFIG_TOUCHSCREEN_TOUCHWIN=m
+CONFIG_TOUCHSCREEN_UCB1400=m
+# 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_PARKBD 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_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+# CONFIG_PRINTER is not set
+# CONFIG_PPDEV is not set
+# CONFIG_TIPAR is not set
+
+#
+# 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=m
+# 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
+CONFIG_AGP=y
+# CONFIG_AGP_ALI is not set
+# CONFIG_AGP_ATI is not set
+# CONFIG_AGP_AMD is not set
+# CONFIG_AGP_AMD64 is not set
+CONFIG_AGP_INTEL=y
+# CONFIG_AGP_NVIDIA is not set
+# CONFIG_AGP_SIS is not set
+# CONFIG_AGP_SWORKS is not set
+# CONFIG_AGP_VIA is not set
+# CONFIG_AGP_EFFICEON is not set
+CONFIG_DRM=y
+# CONFIG_DRM_TDFX is not set
+# CONFIG_DRM_R128 is not set
+# CONFIG_DRM_RADEON is not set
+# CONFIG_DRM_I810 is not set
+# CONFIG_DRM_I830 is not set
+# CONFIG_DRM_I915 is not set
+# CONFIG_DRM_MGA is not set
+# CONFIG_DRM_SIS is not set
+# CONFIG_DRM_VIA is not set
+# CONFIG_DRM_SAVAGE is not set
+# CONFIG_MWAVE is not set
+# CONFIG_PC8736x_GPIO is not set
+# CONFIG_NSC_GPIO 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_ABITUGURU is not set
+# CONFIG_SENSORS_K8TEMP is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_HDAPS is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+# 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_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 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_VGACON_SOFT_SCROLLBACK is not set
+CONFIG_VIDEO_SELECT=y
+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
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_DEVICE=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+# CONFIG_SND_RTCTIMER 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_MPU401_UART=m
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_MTS64 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_ALS4000 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_CS5535AUDIO=m
+# 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=m
+# 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=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+# CONFIG_SND_AC97_POWER_SAVE is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_USX2Y is not set
+
+#
+# Open Sound System
+#
+CONFIG_SOUND_PRIME=m
+# CONFIG_SOUND_BT878 is not set
+# CONFIG_SOUND_ES1371 is not set
+# CONFIG_SOUND_ICH is not set
+# CONFIG_SOUND_TRIDENT is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_VIA82CXXX is not set
+CONFIG_SOUND_OSS=m
+# CONFIG_SOUND_TRACEINIT is not set
+# CONFIG_SOUND_DMAP is not set
+# CONFIG_SOUND_CS4232 is not set
+# CONFIG_SOUND_SSCAPE is not set
+# CONFIG_SOUND_VMIDI is not set
+# CONFIG_SOUND_TRIX is not set
+# CONFIG_SOUND_MSS is not set
+# CONFIG_SOUND_MPU401 is not set
+# CONFIG_SOUND_PAS is not set
+# CONFIG_SOUND_PSS is not set
+CONFIG_SOUND_SB=m
+# CONFIG_SOUND_YM3812 is not set
+# CONFIG_SOUND_UART6850 is not set
+# CONFIG_SOUND_AEDSP16 is not set
+# CONFIG_SOUND_KAHLUA is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# 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_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+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=y
+
+#
+# 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_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=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_TOUCHSCREEN=m
+CONFIG_USB_TOUCHSCREEN_EGALAX=y
+CONFIG_USB_TOUCHSCREEN_PANJIT=y
+CONFIG_USB_TOUCHSCREEN_3M=y
+CONFIG_USB_TOUCHSCREEN_ITM=y
+CONFIG_USB_TOUCHSCREEN_ETURBO=y
+CONFIG_USB_TOUCHSCREEN_GUNZE=y
+CONFIG_USB_TOUCHSCREEN_DMC_TSC10=y
+# 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 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_MON=y
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# 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_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+# 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_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
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+# CONFIG_EDAC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_M48T86=m
+CONFIG_RTC_DRV_TEST=m
+CONFIG_RTC_DRV_V3020=m
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# Virtualization
+#
+# CONFIG_KVM 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_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 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=y
+# CONFIG_FUSE_FS is not set
+
+#
+# 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_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLBFS 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_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 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=y
+# CONFIG_NFSD_V3 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# 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
+# 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
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Instrumentation Support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=y
+# CONFIG_KPROBES is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_UNUSED_SYMBOLS=y
+# 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=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_DOUBLEFAULT=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+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_LRW=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+# CONFIG_CRYPTO_TWOFISH_586 is not set
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_AES_586 is not set
+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 is not set
+
+#
+# Hardware crypto devices
+#
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+CONFIG_CRYPTO_DEV_GEODE=m
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_AUDIT_GENERIC=y
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_KTIME_SCALAR=y
diff --git a/packages/linux/linux-x86_2.6.20.bb b/packages/linux/linux-x86_2.6.20.bb
new file mode 100644
index 0000000000..c73ee58d2f
--- /dev/null
+++ b/packages/linux/linux-x86_2.6.20.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Linux Kernel for x86 compatible machines"
+SECTION = "kernel"
+LICENSE = "GPL"
+PR = "r2"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://defconfig"
+
+S = "${WORKDIR}/linux-${PV}"
+
+inherit kernel
+
+COMPATIBLE_HOST = "i.86.*-linux"
+KERNEL_IMAGETYPE = "bzImage"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/i386/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_populate_staging after do_compile
diff --git a/packages/linux/linux-z/.mtn2git_empty b/packages/linux/linux-z/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-z/.mtn2git_empty
diff --git a/packages/linux/linux-z/shark/.mtn2git_empty b/packages/linux/linux-z/shark/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-z/shark/.mtn2git_empty
diff --git a/packages/linux/linux-z/shark/defconfig b/packages/linux/linux-z/shark/defconfig
new file mode 100644
index 0000000000..c9b11665db
--- /dev/null
+++ b/packages/linux/linux-z/shark/defconfig
@@ -0,0 +1,1126 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.18-rc3
+# Tue Jan 16 00:41:41 2007
+#
+CONFIG_ARM=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_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_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_EMBEDDED is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_RT_MUTEXES=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=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=y
+# CONFIG_MODVERSIONS is not set
+# 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=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_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_SA110=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4=y
+CONFIG_CPU_CACHE_V4WB=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WB=y
+
+#
+# Processor Features
+#
+# CONFIG_KEXEC is not set
+
+#
+# Bus support
+#
+CONFIG_ISA=y
+CONFIG_ISA_DMA=y
+CONFIG_ISA_DMA_API=y
+CONFIG_PCI=y
+CONFIG_PCI_HOST_VIA82C505=y
+# CONFIG_PCI_DEBUG is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# 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_LEDS=y
+CONFIG_LEDS_TIMER=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
+
+#
+# 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 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=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=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# 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 is not set
+# CONFIG_INET_XFRM_MODE_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_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK 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 is not set
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_AX88796 is not set
+# CONFIG_PARPORT_1284 is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE 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=m
+# CONFIG_BLK_DEV_SX8 is not set
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+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_IDECD=m
+# CONFIG_BLK_DEV_IDETAPE is not set
+CONFIG_BLK_DEV_IDEFLOPPY=m
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+# CONFIG_BLK_DEV_IDEPCI is not set
+CONFIG_IDE_ARM=y
+# 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=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 is not set
+# 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 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_HPTIOP 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_PPA is not set
+# CONFIG_SCSI_IMM is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_SYM53C8XX_2 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_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_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD 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 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_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 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 is not set
+# 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=y
+# 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_NET_POCKET 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
+# CONFIG_MYRI10GE 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_PLIP 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 is not set
+CONFIG_PPPOE=m
+# 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
+
+#
+# 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_PARKBD 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_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_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_PRINTER=m
+# CONFIG_LP_CONSOLE is not set
+# CONFIG_PPDEV is not set
+# CONFIG_TIPAR is not set
+
+#
+# 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_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 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 is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_V4L2=y
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT 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=y
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_MATROX 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_TRIDENT is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# 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=y
+
+#
+# Advanced Linux Sound Architecture
+#
+# CONFIG_SND is not set
+
+#
+# Open Sound System
+#
+CONFIG_SOUND_PRIME=y
+# CONFIG_SOUND_BT878 is not set
+# CONFIG_SOUND_EMU10K1 is not set
+# CONFIG_SOUND_FUSION is not set
+# CONFIG_SOUND_ES1371 is not set
+# CONFIG_SOUND_ICH is not set
+# CONFIG_SOUND_TRIDENT is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_VIA82CXXX is not set
+CONFIG_SOUND_OSS=y
+# CONFIG_SOUND_TRACEINIT is not set
+# CONFIG_SOUND_DMAP is not set
+# CONFIG_SOUND_AD1816 is not set
+# CONFIG_SOUND_AD1889 is not set
+# CONFIG_SOUND_ADLIB is not set
+# CONFIG_SOUND_ACI_MIXER is not set
+# CONFIG_SOUND_CS4232 is not set
+# CONFIG_SOUND_SSCAPE is not set
+# CONFIG_SOUND_VMIDI is not set
+# CONFIG_SOUND_TRIX is not set
+# CONFIG_SOUND_MSS is not set
+# CONFIG_SOUND_MPU401 is not set
+# CONFIG_SOUND_NM256 is not set
+# CONFIG_SOUND_PAS is not set
+# CONFIG_SOUND_PSS is not set
+CONFIG_SOUND_SB=m
+# CONFIG_SOUND_YM3812 is not set
+# CONFIG_SOUND_OPL3SA2 is not set
+# CONFIG_SOUND_UART6850 is not set
+# CONFIG_SOUND_AEDSP16 is not set
+# CONFIG_SOUND_KAHLUA 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 is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk 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 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+# 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 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 is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS 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_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_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_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
+# 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="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=m
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=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
+
+#
+# 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=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS 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_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_UNWIND_INFO is not set
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_WAITQ is not set
+# CONFIG_DEBUG_ERRORS is not set
+# CONFIG_DEBUG_LL is not set
+
+#
+# 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=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-z_2.6.20.bb b/packages/linux/linux-z_2.6.20.bb
new file mode 100644
index 0000000000..b707a2649b
--- /dev/null
+++ b/packages/linux/linux-z_2.6.20.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "2.6 Linux Development Kernel for the DNARD/Shark, SIMpad."
+SECTION = "kernel"
+LICENSE = "GPL"
+
+inherit kernel
+
+S = "${WORKDIR}/git"
+SRC_URI = "git://www.openembedded.org/~zecke/git/linux/linux-2.6/.git;protocol=http \
+ file://defconfig"
+
+
+RPROVIDES_kernel-image += "hostap-modules"
+
+COMPATIBLE_HOST = "(arm).*-linux"
+COMPATIBLE_MACHINE = '(shark)'
+
+
+KERNEL_IMAGETYPE = "zImage"
+
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+}
diff --git a/packages/linux/linux/acern30/.mtn2git_empty b/packages/linux/linux/acern30/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux/acern30/.mtn2git_empty
diff --git a/packages/linux/linux/acern30/defconfig b/packages/linux/linux/acern30/defconfig
new file mode 100644
index 0000000000..860dc9b12c
--- /dev/null
+++ b/packages/linux/linux/acern30/defconfig
@@ -0,0 +1,1199 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.14-h1940
+# Mon Jan 9 17:37:51 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_CLEAN_COMPILE=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_HOTPLUG=y
+CONFIG_KOBJECT_UEVENT=y
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_BASE_FULL is not set
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_SHMEM is not set
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_TINY_SHMEM=y
+CONFIG_BASE_SMALL=1
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# System Type
+#
+# 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_CAMELOT is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+CONFIG_ARCH_S3C2410=y
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+
+#
+# S3C24XX Implementations
+#
+# CONFIG_MACH_ANUBIS is not set
+# CONFIG_ARCH_BAST is not set
+CONFIG_ARCH_H1940=y
+CONFIG_MACH_N30=y
+CONFIG_MACH_N35=y
+# CONFIG_ARCH_SMDK2410 is not set
+# CONFIG_ARCH_S3C2440 is not set
+# CONFIG_MACH_VR1000 is not set
+# CONFIG_MACH_RX3715 is not set
+# CONFIG_MACH_OTOM is not set
+# CONFIG_MACH_NEXCODER_2440 is not set
+CONFIG_CPU_S3C2410=y
+
+#
+# S3C2410 Boot
+#
+
+#
+# S3C2410 Setup
+#
+CONFIG_S3C2410_DMA=y
+# CONFIG_S3C2410_DMA_DEBUG is not set
+CONFIG_S3C2410_PM_DEBUG=y
+CONFIG_S3C2410_PM_CHECK=y
+CONFIG_S3C2410_PM_CHECK_CHUNKSIZE=64
+CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=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
+
+#
+# Bus support
+#
+CONFIG_ISA_DMA_API=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="rw root=/dev/ram console=tty0 console=ttySAC2,115200n8 verbose panic=30"
+# 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=y
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# 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=y
+# 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_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
+# 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
+# CONFIG_NET_SCHED is not set
+# CONFIG_NET_CLS_ROUTE is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=y
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=y
+CONFIG_IRCOMM=y
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=y
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+# CONFIG_NSC_FIR is not set
+# CONFIG_WINBOND_FIR is not set
+# CONFIG_SMC_IRCC_FIR is not set
+# CONFIG_ALI_FIR is not set
+# CONFIG_VIA_FIR is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+# CONFIG_BT_BNEP_MC_FILTER is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
+CONFIG_BT_HIDP=y
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# 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 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD 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=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_S3C2410=y
+# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
+CONFIG_MTD_NAND_S3C2410_HWECC=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP 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=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
+# 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_S3C2410_BUTTONS=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_S3C2410=y
+# CONFIG_TOUCHSCREEN_S3C2410_DEBUG 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_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_LIBPS2 is not set
+# 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_S3C2410=y
+CONFIG_SERIAL_S3C2410_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=10
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+CONFIG_S3C2410_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+
+#
+# I2C support
+#
+CONFIG_I2C=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_PARPORT_LIGHT is not set
+CONFIG_I2C_S3C2410=y
+# CONFIG_I2C_STUB 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 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_RTC_X1205_I2C 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
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID 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_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_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_W83781D 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_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# 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_SOFT_CURSOR=y
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_S3C2410=y
+# CONFIG_FB_S3C2410_DEBUG 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_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# 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_CLEAN_4x6 is not set
+CONFIG_FONT_CLEAN_5x8=y
+# 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=y
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_S3C2410=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_SEQUENCER_OSS=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
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# 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=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=y
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
+# 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 is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+CONFIG_USB_HIDINPUT=y
+# 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_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 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=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=y
+# CONFIG_USB_SERIAL_CONSOLE is not set
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP2101 is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_NOKIA_DKU2 is not set
+CONFIG_USB_SERIAL_PL2303=y
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET 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_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX 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=y
+CONFIG_USB_S3C2410=y
+# CONFIG_USB_S3C2410_DEBUG is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_WBSD is not set
+CONFIG_MMC_S3C2410=y
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+# CONFIG_EXT2_FS_POSIX_ACL is not set
+# CONFIG_EXT2_FS_SECURITY is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR 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_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_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_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_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
+# 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=y
+# 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=y
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_LOG_BUF_SHIFT=16
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_FS is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+# CONFIG_DEBUG_ERRORS is not set
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+CONFIG_DEBUG_S3C2410_PORT=y
+CONFIG_DEBUG_S3C2410_UART=0
+
+#
+# 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=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux/acern30/gcc4-fixes.patch b/packages/linux/linux/acern30/gcc4-fixes.patch
new file mode 100644
index 0000000000..722bca7c73
--- /dev/null
+++ b/packages/linux/linux/acern30/gcc4-fixes.patch
@@ -0,0 +1,97 @@
+--- linux-2.6.14/arch/arm/mm/alignment.c.org 2007-03-06 22:50:23.000000000 +0000
++++ linux-2.6.14/arch/arm/mm/alignment.c 2007-03-06 22:49:21.000000000 +0000
+@@ -110,7 +110,7 @@
+ return len;
+ }
+
+-static int proc_alignment_write(struct file *file, const char __user *buffer,
++static int proc_alignment_write(struct file *file, /*const*/ char __user *buffer,
+ unsigned long count, void *data)
+ {
+ char mode;
+--- linux-2.6.14/lib/bitmap.c.org 2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6.14/lib/bitmap.c 2007-03-07 00:49:39.000000000 +0000
+@@ -345,11 +345,12 @@
+ * characters and for grouping errors such as "1,,5", ",44", "," and "".
+ * Leading and trailing whitespace accepted, but not embedded whitespace.
+ */
+-int bitmap_parse(const char __user *ubuf, unsigned int ubuflen,
++int bitmap_parse(const char __user *_ubuf, unsigned int ubuflen,
+ unsigned long *maskp, int nmaskbits)
+ {
+ int c, old_c, totaldigits, ndigits, nchunks, nbits;
+ u32 chunk;
++ char __user *ubuf = _ubuf;
+
+ bitmap_zero(maskp, nmaskbits);
+
+--- linux-2.6.14/arch/arm/nwfpe/fpa11_cpdt.c.org 2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6.14/arch/arm/nwfpe/fpa11_cpdt.c 2007-03-06 22:52:09.000000000 +0000
+@@ -29,14 +29,14 @@
+
+ #include <asm/uaccess.h>
+
+-static inline void loadSingle(const unsigned int Fn, const unsigned int __user *pMem)
++static inline void loadSingle(const unsigned int Fn, /*const*/ unsigned int __user *pMem)
+ {
+ FPA11 *fpa11 = GET_FPA11();
+ fpa11->fType[Fn] = typeSingle;
+ get_user(fpa11->fpreg[Fn].fSingle, pMem);
+ }
+
+-static inline void loadDouble(const unsigned int Fn, const unsigned int __user *pMem)
++static inline void loadDouble(const unsigned int Fn, /*const*/ unsigned int __user *pMem)
+ {
+ FPA11 *fpa11 = GET_FPA11();
+ unsigned int *p;
+@@ -52,7 +52,7 @@
+ }
+
+ #ifdef CONFIG_FPE_NWFPE_XP
+-static inline void loadExtended(const unsigned int Fn, const unsigned int __user *pMem)
++static inline void loadExtended(const unsigned int Fn, /*const*/ unsigned int __user *pMem)
+ {
+ FPA11 *fpa11 = GET_FPA11();
+ unsigned int *p;
+@@ -64,7 +64,7 @@
+ }
+ #endif
+
+-static inline void loadMultiple(const unsigned int Fn, const unsigned int __user *pMem)
++static inline void loadMultiple(const unsigned int Fn, /*const*/ unsigned int __user *pMem)
+ {
+ FPA11 *fpa11 = GET_FPA11();
+ register unsigned int *p;
+--- linux-2.6.14/fs/proc/proc_misc.c.org 2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6.14/fs/proc/proc_misc.c 2007-03-06 23:17:01.000000000 +0000
+@@ -535,7 +535,7 @@
+ /*
+ * writing 'C' to /proc/sysrq-trigger is like sysrq-C
+ */
+-static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
++static ssize_t write_sysrq_trigger(struct file *file, /*const*/ char __user *buf,
+ size_t count, loff_t *ppos)
+ {
+ if (count) {
+--- linux-2.6.14/drivers/char/vc_screen.c.org 2007-03-06 22:43:07.000000000 +0000
++++ linux-2.6.14/drivers/char/vc_screen.c 2007-03-07 00:02:25.000000000 +0000
+@@ -419,7 +419,7 @@
+ while (this_round > 1) {
+ unsigned short w;
+
+- w = get_unaligned(((const unsigned short *)con_buf0));
++ w = get_unaligned(((/*const*/ unsigned short *)con_buf0));
+ vcs_scr_writew(vc, w, org++);
+ con_buf0 += 2;
+ this_round -= 2;
+--- linux-2.6.14/drivers/input/mousedev.c.org 2007-03-07 01:28:18.000000000 +0000
++++ linux-2.6.14/drivers/input/mousedev.c 2007-03-07 01:37:01.000000000 +0000
+@@ -495,7 +495,7 @@
+ }
+
+
+-static ssize_t mousedev_write(struct file * file, const char __user * buffer, size_t count, loff_t *ppos)
++static ssize_t mousedev_write(struct file * file, /*const*/ char __user * buffer, size_t count, loff_t *ppos)
+ {
+ struct mousedev_list *list = file->private_data;
+ unsigned char c;
diff --git a/packages/linux/linux/acern30/gpio-sysfs.patch b/packages/linux/linux/acern30/gpio-sysfs.patch
new file mode 100644
index 0000000000..b3fde0f9d6
--- /dev/null
+++ b/packages/linux/linux/acern30/gpio-sysfs.patch
@@ -0,0 +1,252 @@
+This patch adds a lot of sysfs entries for the different GPIO lines.
+It allows me to poke at different parts of the hardware to see what
+happens. This allowed me to discover the Bluetooth cutoff switch for
+example.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/Makefile
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/Makefile
++++ linux-2.6.14/arch/arm/mach-s3c2410/Makefile
+@@ -42,3 +42,5 @@ obj-$(CONFIG_MACH_VR1000) += mach-vr1000
+ obj-$(CONFIG_MACH_RX3715) += mach-rx3715.o
+ obj-$(CONFIG_MACH_OTOM) += mach-otom.o
+ obj-$(CONFIG_MACH_NEXCODER_2440) += mach-nexcoder.o
++
++obj-y += gpio-sysfs.o
+Index: linux-2.6.14/arch/arm/mach-s3c2410/gpio-sysfs.c
+===================================================================
+--- /dev/null
++++ linux-2.6.14/arch/arm/mach-s3c2410/gpio-sysfs.c
+@@ -0,0 +1,232 @@
++#include <linux/version.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/device.h>
++#include <linux/backlight.h>
++#include <linux/notifier.h>
++#include <linux/ctype.h>
++#include <linux/err.h>
++#include <linux/fb.h>
++#include <asm/bug.h>
++
++#include <asm/arch/regs-gpio.h>
++
++#include <asm/arch/regs-clock.h>
++
++static ssize_t s3c2410_gpio_name_show(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ struct platform_device *pdev = to_platform_device(dev);
++
++ return snprintf(buf, PAGE_SIZE, "%d\n", pdev->id);
++}
++
++static ssize_t s3c2410_gpio_val_show(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ struct platform_device *pdev = to_platform_device(dev);
++
++ return snprintf(buf, PAGE_SIZE, "%d\n",
++ s3c2410_gpio_getpin(pdev->id) ? 1 : 0);
++}
++
++static ssize_t s3c2410_gpio_val_store(struct device *dev,
++ struct device_attribute *attr,
++ const char *buf, size_t count)
++{
++ struct platform_device *pdev = to_platform_device(dev);
++ int val;
++ char *endp;
++
++ val = simple_strtoul(buf, &endp, 0);
++ if (*endp && !isspace(*endp))
++ return -EINVAL;
++
++ s3c2410_gpio_setpin(pdev->id, val ? 1 : 0);
++
++ return count;
++}
++
++static DEVICE_ATTR(name, 0444,
++ s3c2410_gpio_name_show,
++ NULL);
++
++static DEVICE_ATTR(val, 0666,
++ s3c2410_gpio_val_show,
++ s3c2410_gpio_val_store);
++
++
++static int __init s3c2410_gpio_probe(struct device *dev)
++{
++ device_create_file(dev, &dev_attr_name);
++ device_create_file(dev, &dev_attr_val);
++ return 0;
++}
++
++static int s3c2410_gpio_remove(struct device *dev)
++{
++ return 0;
++}
++
++static struct device_driver s3c2410_gpio_driver = {
++ .name = "s3c2410-gpio",
++ .bus = &platform_bus_type,
++ .probe = s3c2410_gpio_probe,
++ .remove = s3c2410_gpio_remove,
++};
++
++static struct platform_device s3c_device_gpio[32 * 8];
++
++static ssize_t s3c2410_clkslow_show(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ unsigned long clkslow = __raw_readl(S3C2410_CLKSLOW);
++
++ return snprintf(buf, PAGE_SIZE, "0x%08lx\n", clkslow);
++}
++
++static ssize_t s3c2410_clkslow_store(struct device *dev,
++ struct device_attribute *attr,
++ const char *buf, size_t count)
++{
++ unsigned long val;
++ char *endp;
++
++ val = simple_strtoul(buf, &endp, 0);
++ if (*endp && !isspace(*endp))
++ return -EINVAL;
++
++ printk("CLKSLOW <= 0x%lx\n", val);
++
++ __raw_writel(val, S3C2410_CLKSLOW);
++
++ return count;
++}
++
++static DEVICE_ATTR(clkslow, 0666,
++ s3c2410_clkslow_show,
++ s3c2410_clkslow_store);
++
++static ssize_t s3c2410_clkcon_show(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ unsigned long clkclkcon = __raw_readl(S3C2410_CLKCON);
++
++ return snprintf(buf, PAGE_SIZE, "0x%08lx\n", clkclkcon);
++}
++
++static ssize_t s3c2410_clkcon_store(struct device *dev,
++ struct device_attribute *attr,
++ const char *buf, size_t count)
++{
++ unsigned long val;
++ char *endp;
++
++ val = simple_strtoul(buf, &endp, 0);
++ if (*endp && !isspace(*endp))
++ return -EINVAL;
++
++ printk("CLKCON <= 0x%lx\n", val);
++
++ __raw_writel(val, S3C2410_CLKCON);
++
++ return count;
++}
++
++static DEVICE_ATTR(clkcon, 0666,
++ s3c2410_clkcon_show,
++ s3c2410_clkcon_store);
++
++static ssize_t s3c2410_misccr_show(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ unsigned long misccr = __raw_readl(S3C2410_MISCCR);
++
++ return snprintf(buf, PAGE_SIZE, "0x%08lx\n", misccr);
++}
++
++static ssize_t s3c2410_misccr_store(struct device *dev,
++ struct device_attribute *attr,
++ const char *buf, size_t count)
++{
++ unsigned long val;
++ char *endp;
++
++ val = simple_strtoul(buf, &endp, 0);
++ if (*endp && !isspace(*endp))
++ return -EINVAL;
++
++ printk("MISCCR <= 0x%lx\n", val);
++
++ __raw_writel(val, S3C2410_MISCCR);
++
++ return count;
++}
++
++static DEVICE_ATTR(misccr, 0666,
++ s3c2410_misccr_show,
++ s3c2410_misccr_store);
++
++static int __init s3c2410_regs_probe(struct device *dev)
++{
++ device_create_file(dev, &dev_attr_clkslow);
++ device_create_file(dev, &dev_attr_clkcon);
++ device_create_file(dev, &dev_attr_misccr);
++ return 0;
++}
++
++static int s3c2410_regs_remove(struct device *dev)
++{
++ return 0;
++}
++
++
++static struct device_driver s3c2410_regs_driver = {
++ .name = "s3c2410-regs",
++ .bus = &platform_bus_type,
++ .probe = s3c2410_regs_probe,
++ .remove = s3c2410_regs_remove,
++};
++
++static struct platform_device s3c_device_regs = {
++ .name = "s3c2410-regs",
++ .id = -1,
++};
++
++static int __init s3c2410_gpio_init(void)
++{
++ int i;
++
++ for (i = 0; i < ARRAY_SIZE(s3c_device_gpio); i++) {
++ s3c_device_gpio[i].name = "s3c2410-gpio";
++ s3c_device_gpio[i].id = i;
++ platform_device_register(&s3c_device_gpio[i]);
++ }
++
++ driver_register(&s3c2410_gpio_driver);
++ driver_register(&s3c2410_regs_driver);
++
++ platform_device_register(&s3c_device_regs);
++
++ return 0;
++}
++
++static void __exit s3c2410_gpio_cleanup(void)
++{
++ driver_unregister(&s3c2410_regs_driver);
++ driver_unregister(&s3c2410_gpio_driver);
++}
++
++module_init(s3c2410_gpio_init);
++module_exit(s3c2410_gpio_cleanup);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Christer Weinigel <christer@weinigel.se>");
++MODULE_DESCRIPTION("S3C2410 GPIO Driver");
++
++/*
++ Local variables:
++ compile-command: "make -k -C ../../../.. linux "
++ c-basic-offset: 8
++ End:
++*/
diff --git a/packages/linux/linux/acern30/mmc-plus.patch b/packages/linux/linux/acern30/mmc-plus.patch
new file mode 100644
index 0000000000..d88ac531cf
--- /dev/null
+++ b/packages/linux/linux/acern30/mmc-plus.patch
@@ -0,0 +1,17 @@
+Treat MMCA version 4 cards a version 3 cards. It seem to work for me,
+but it may break things horribly.
+
+So you may not want to use this patch.
+
+Index: linux-2.6.14/drivers/mmc/mmc.c
+===================================================================
+--- linux-2.6.14.orig/drivers/mmc/mmc.c
++++ linux-2.6.14/drivers/mmc/mmc.c
+@@ -495,6 +495,7 @@ static void mmc_decode_cid(struct mmc_ca
+
+ case 2: /* MMC v2.0 - v2.2 */
+ case 3: /* MMC v3.1 - v3.3 */
++ case 4: /* MMC Plus? */
+ card->cid.manfid = UNSTUFF_BITS(resp, 120, 8);
+ card->cid.oemid = UNSTUFF_BITS(resp, 104, 16);
+ card->cid.prod_name[0] = UNSTUFF_BITS(resp, 96, 8);
diff --git a/packages/linux/linux/acern30/n30-apm.patch b/packages/linux/linux/acern30/n30-apm.patch
new file mode 100644
index 0000000000..00b34c9a46
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-apm.patch
@@ -0,0 +1,73 @@
+Implement a apm_get_power_status handler for the n30. The handler
+gets the battery charge from the msp430 chip using i2c and sets the ac
+line information based on GPG1 (charger power) and GPC7 (usb power).
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -31,6 +31,7 @@
+ #include <linux/delay.h>
+ #include <linux/device.h>
+ #include <linux/kthread.h>
++#include <linux/i2c.h>
+
+ #include <linux/mmc/protocol.h>
+ #include <linux/mtd/mtd.h>
+@@ -44,6 +45,7 @@
+ #include <asm/hardware/iomd.h>
+ #include <asm/io.h>
+ #include <asm/irq.h>
++#include <asm/apm.h>
+ #include <asm/mach-types.h>
+
+ #include <asm/arch/regs-serial.h>
+@@ -527,6 +529,37 @@ static int n30_usbstart_thread(void *unu
+ return 0;
+ }
+
++#ifdef CONFIG_APM
++static void n30_get_power_status(struct apm_power_info *info)
++{
++#ifdef CONFIG_I2C_S3C2410
++ u8 charge;
++ struct i2c_adapter *adap;
++ struct i2c_msg msg[] = {
++ { .addr = 0x0b, .flags = I2C_M_RD, .buf = &charge, .len = 1 }
++ };
++
++ if ((adap = i2c_get_adapter(0)) != NULL) {
++ if (i2c_transfer(adap, msg, 1) == 1)
++ info->battery_life = charge;
++ i2c_put_adapter(adap);
++ }
++#endif
++
++ if (s3c2410_gpio_getpin(S3C2410_GPC7))
++ info->ac_line_status = 0x01; /* on charger power */
++ else if (s3c2410_gpio_getpin(S3C2410_GPG1))
++ info->ac_line_status = 0x02; /* on USB power */
++ else
++ info->ac_line_status = 0x00; /* on battery power */
++
++ /* TODO I could put some values in these variables based on
++ * the battery life and the ac_line_status. --wingel */
++ info->battery_status = 0xff;
++ info->battery_flag = 0xff;
++}
++#endif
++
+ static void __init n30_init(void)
+ {
+ s3c24xx_fb_set_platdata(&n30_lcdcfg);
+@@ -550,6 +583,10 @@ static void __init n30_init(void)
+ s3c2410_gpio_setpin(S3C2410_GPC5, 1);
+
+ kthread_run(n30_usbstart_thread, NULL, "n30_usbstart");
++
++#ifdef CONFIG_APM
++ apm_get_power_status = n30_get_power_status;
++#endif
+ }
+
+ MACHINE_START(N30, "Acer-N30")
diff --git a/packages/linux/linux/acern30/n30-backlight.patch b/packages/linux/linux/acern30/n30-backlight.patch
new file mode 100644
index 0000000000..2b339960f7
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-backlight.patch
@@ -0,0 +1,97 @@
+This patch adds a few functions to control the backlight on the n30.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -45,8 +45,10 @@
+ #include <asm/arch/regs-serial.h>
+ #include <asm/arch/regs-gpio.h>
+ #include <asm/arch/regs-lcd.h>
++#include <asm/arch/regs-timer.h>
+ #include <asm/arch/iic.h>
+ #include <asm/arch/fb.h>
++#include <asm/arch/lcd.h>
+
+ #include <linux/serial_core.h>
+
+@@ -121,9 +123,71 @@ static struct s3c2410fb_mach_info n30_lc
+ .bpp= {16,16,16},
+ };
+
++static void n30_backlight_power(int on)
++{
++ s3c2410_gpio_pullup(S3C2410_GPB1, 1);
++ s3c2410_gpio_cfgpin(S3C2410_GPB1, S3C2410_GPB1_OUTP);
++ s3c2410_gpio_setpin(S3C2410_GPB1, on);
++}
++
++static void n30_lcd_power(int on)
++{
++ /* Turning these off will save about 10mA */
++ s3c2410_gpio_setpin(S3C2410_GPB8, on); /* CLOCK driver? */
++ s3c2410_gpio_setpin(S3C2410_GPB9, on); /* VSYNC driver? */
++ s3c2410_gpio_setpin(S3C2410_GPB10, on); /* HSYYNC driver? */
++}
++
++#define BRIGHTNESS_MAX 28
++#define BRIGHTNESS_OFFSET 5
++
++static void n30_set_brightness(int level)
++{
++ unsigned long tcmpb0;
++ unsigned long tcon;
++
++ if (level < 0)
++ level = 0;
++
++ if (level > BRIGHTNESS_MAX)
++ level = BRIGHTNESS_MAX;
++
++ tcmpb0 = level ? level + BRIGHTNESS_OFFSET : 0;
++
++ printk("brightness level %d, tcmpb0 %lu\n", level, tcmpb0);
++
++ /* configure power on/off */
++ n30_backlight_power(level ? 1 : 0);
++
++ writel(34, S3C2410_TCNTB(0));
++
++ tcon = readl(S3C2410_TCON);
++ tcon &= ~0x0F;
++ tcon |= S3C2410_TCON_T0RELOAD;
++ tcon |= S3C2410_TCON_T0MANUALUPD;
++
++ writel(tcon, S3C2410_TCON);
++ writel(0x22, S3C2410_TCNTB(0));
++ writel(tcmpb0, S3C2410_TCMPB(0));
++
++ /* start the timer running */
++ tcon |= S3C2410_TCON_T0START;
++ tcon &= ~S3C2410_TCON_T0MANUALUPD;
++ writel(tcon, S3C2410_TCON);
++}
++
++static struct s3c2410_bl_mach_info n30_blcfg __initdata = {
++ .backlight_max = BRIGHTNESS_MAX,
++ .backlight_default = BRIGHTNESS_MAX / 2,
++ .backlight_power = n30_backlight_power,
++ .set_brightness = n30_set_brightness,
++ .lcd_power = n30_lcd_power
++};
++
+ static struct platform_device *n30_devices[] __initdata = {
+ &s3c_device_usb,
+ &s3c_device_lcd,
++ &s3c_device_bl,
+ &s3c_device_wdt,
+ &s3c_device_i2c,
+ &s3c_device_iis,
+@@ -160,6 +224,7 @@ static void __init n30_init_irq(void)
+ static void __init n30_init(void)
+ {
+ s3c24xx_fb_set_platdata(&n30_lcdcfg);
++ set_s3c2410bl_info(&n30_blcfg);
+
+ s3c_device_i2c.dev.platform_data = &n30_i2ccfg;
+
diff --git a/packages/linux/linux/acern30/n30-batt.patch b/packages/linux/linux/acern30/n30-batt.patch
new file mode 100644
index 0000000000..e5eb9e7812
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-batt.patch
@@ -0,0 +1,242 @@
+A battery controller i2c driver for the n30.
+
+I don't use this driver any more, it was much nicer to use the ARM APM
+emulation to expose this data.
+
+Index: linux-2.6.14/drivers/hwmon/Kconfig
+===================================================================
+--- linux-2.6.14.orig/drivers/hwmon/Kconfig
++++ linux-2.6.14/drivers/hwmon/Kconfig
+@@ -290,6 +290,16 @@
+ This driver can also be built as a module. If so, the module
+ will be called max1619.
+
++config SENSORS_N30_BATT
++ tristate "Acer N30 Battery Controller"
++ depends on HWMON && I2C && MACH_N30
++ help
++ If you say yes here you get support for the battery controller
++ found inside the Acer N30 PDA.
++
++ This driver can also be built as a module. If so, the module
++ will be called n30_batt.
++
+ config SENSORS_PC87360
+ tristate "National Semiconductor PC87360 family"
+ depends on HWMON && I2C && EXPERIMENTAL
+Index: linux-2.6.14/drivers/hwmon/Makefile
+===================================================================
+--- linux-2.6.14.orig/drivers/hwmon/Makefile
++++ linux-2.6.14/drivers/hwmon/Makefile
+@@ -35,6 +35,7 @@
+ obj-$(CONFIG_SENSORS_LM90) += lm90.o
+ obj-$(CONFIG_SENSORS_LM92) += lm92.o
+ obj-$(CONFIG_SENSORS_MAX1619) += max1619.o
++obj-$(CONFIG_SENSORS_N30_BATT) += n30_batt.o
+ obj-$(CONFIG_SENSORS_PC87360) += pc87360.o
+ obj-$(CONFIG_SENSORS_SIS5595) += sis5595.o
+ obj-$(CONFIG_SENSORS_SMSC47B397)+= smsc47b397.o
+Index: linux-2.6.14/drivers/hwmon/n30_batt.c
+===================================================================
+--- linux-2.6.14.orig/drivers/hwmon/n30_batt.c
++++ linux-2.6.14/drivers/hwmon/n30_batt.c
+@@ -0,0 +1,199 @@
++/*
++ * n30_batt.c - Support for the Acer N30 Battery Controller
++ * Copyright (c) 2005 Christer Weinigel <christer@weinigel.se>
++ *
++ * 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 <linux/config.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/slab.h>
++#include <linux/i2c.h>
++#include <linux/hwmon.h>
++#include <asm/mach-types.h>
++#include <asm/apm.h>
++
++static unsigned short normal_i2c[] = { I2C_CLIENT_END, I2C_CLIENT_END };
++static unsigned short probe[] = { I2C_CLIENT_END, I2C_CLIENT_END };
++static unsigned short ignore[] = { I2C_CLIENT_END, I2C_CLIENT_END };
++static unsigned short force[] = { -1, 0x0b, I2C_CLIENT_END, I2C_CLIENT_END };
++static unsigned short *forces[] = { force, NULL };
++
++static struct i2c_client_address_data addr_data = {
++ .normal_i2c = normal_i2c,
++ .probe = probe,
++ .ignore = ignore,
++ .forces = forces,
++};
++
++struct n30_batt_data {
++ struct i2c_client client;
++ struct semaphore update_lock;
++ unsigned long last_updated; /* last update in jiffies */
++ u8 charge;
++};
++
++static struct n30_batt_data *n30_batt_update_device(struct device *dev)
++{
++ struct i2c_client *client = to_i2c_client(dev);
++ struct n30_batt_data *data = i2c_get_clientdata(client);
++
++ down(&data->update_lock);
++
++ if (time_after(jiffies, data->last_updated + 3 * HZ)) {
++ int value;
++
++ value = i2c_smbus_read_byte(client);
++
++ if (value == -1)
++ printk(KERN_WARNING "n30-batt: unable to read charge\n");
++ else
++ data->charge = value;
++ data->last_updated = jiffies;
++ }
++
++ up(&data->update_lock);
++
++ return data;
++}
++
++static ssize_t show_charge(struct device *dev, struct device_attribute *attr, char *buf)
++{
++ struct n30_batt_data *data = n30_batt_update_device(dev);
++ return sprintf(buf, "%d\n", data->charge);
++}
++
++static DEVICE_ATTR(charge, S_IRUGO, show_charge, NULL);
++
++static struct i2c_driver n30_batt_driver;
++
++static struct device *n30_batt_dev;
++
++static int n30_batt_detect(struct i2c_adapter *adapter, int address, int kind)
++{
++ struct i2c_client *new_client;
++ struct n30_batt_data *data;
++ int err = 0;
++ int value;
++
++ printk(KERN_INFO "detect n30 Battery controller\n");
++
++ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
++ goto exit;
++
++ printk(KERN_INFO "kmalloc n30 Battery controller\n");
++
++ if (!(data = kmalloc(sizeof(struct n30_batt_data), GFP_KERNEL))) {
++ err = -ENOMEM;
++ goto exit;
++ }
++ memset(data, 0, sizeof(struct n30_batt_data));
++
++ new_client = &data->client;
++ i2c_set_clientdata(new_client, data);
++ new_client->addr = address;
++ new_client->adapter = adapter;
++ new_client->driver = &n30_batt_driver;
++ new_client->flags = 0;
++ strlcpy(new_client->name, "n30_batt", I2C_NAME_SIZE);
++
++ if ((value = i2c_smbus_read_byte(new_client)) == -1) {
++ printk(KERN_ERR "n30_batt: unable to read charge value\n");
++ err = -ENXIO;
++ goto exit_free;
++ }
++
++ init_MUTEX(&data->update_lock);
++ data->charge = value;
++ data->last_updated = jiffies;
++
++ printk(KERN_DEBUG "n30_batt: battery charge is %d%%\n", data->charge);
++
++ if ((err = i2c_attach_client(new_client)))
++ goto exit_free;
++
++ device_create_file(&new_client->dev, &dev_attr_charge);
++
++ n30_batt_dev = &new_client->dev;
++
++ return 0;
++
++exit_free:
++ kfree(data);
++exit:
++ return err;
++}
++
++static int n30_batt_attach_adapter(struct i2c_adapter *adapter)
++{
++ printk(KERN_INFO "attaching n30 Battery controller\n");
++ return i2c_probe(adapter, &addr_data, n30_batt_detect);
++}
++
++static int n30_batt_detach_client(struct i2c_client *client)
++{
++ n30_batt_dev = NULL;
++ i2c_detach_client(client);
++ kfree(i2c_get_clientdata(client));
++ return 0;
++}
++
++static struct i2c_driver n30_batt_driver = {
++ .owner = THIS_MODULE,
++ .name = "n30_batt",
++ .flags = I2C_DF_NOTIFY,
++ .attach_adapter = n30_batt_attach_adapter,
++ .detach_client = n30_batt_detach_client,
++};
++
++static void n30_get_power_status(struct apm_power_info *info)
++{
++ if (n30_batt_dev) {
++ struct n30_batt_data *data = n30_batt_update_device(n30_batt_dev);
++
++ info->ac_line_status = 0xff;
++ info->battery_status = 0xff;
++ info->battery_flag = 0xff;
++ info->battery_life = data->charge;
++ info->time = -1;
++ info->units = -1;
++ }
++}
++
++static int __init sensors_n30_batt_init(void)
++{
++ printk(KERN_INFO "n30 Battery controller\n");
++
++ if (!machine_is_n30())
++ return -ENODEV;
++ printk(KERN_INFO "adding n30 Battery controller\n");
++
++ apm_get_power_status = n30_get_power_status;
++
++ return i2c_add_driver(&n30_batt_driver);
++}
++
++static void __exit sensors_n30_batt_exit(void)
++{
++ i2c_del_driver(&n30_batt_driver);
++}
++
++MODULE_AUTHOR("Christer Weinigel <christer@weinigel.se>");
++MODULE_DESCRIPTION("Acer n30 Battery Controller");
++MODULE_LICENSE("GPL");
++
++module_init(sensors_n30_batt_init);
++module_exit(sensors_n30_batt_exit);
diff --git a/packages/linux/linux/acern30/n30-buttons.patch b/packages/linux/linux/acern30/n30-buttons.patch
new file mode 100644
index 0000000000..ff1214e698
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-buttons.patch
@@ -0,0 +1,100 @@
+Add support for the buttons on the n30.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -46,10 +46,12 @@
+ #include <asm/arch/regs-gpio.h>
+ #include <asm/arch/regs-lcd.h>
+ #include <asm/arch/regs-timer.h>
++#include <asm/arch/irqs.h>
+ #include <asm/arch/iic.h>
+ #include <asm/arch/fb.h>
+ #include <asm/arch/lcd.h>
+ #include <asm/arch/ts.h>
++#include <asm/arch/buttons.h>
+
+ #include <linux/serial_core.h>
+
+@@ -194,11 +196,68 @@ static struct s3c2410_ts_mach_info n30_t
+ .oversampling_shift = 6,
+ };
+
++static struct s3c2410_button n30_buttons[] = {
++ { IRQ_EINT0, S3C2410_GPF0, S3C2410_GPF0_EINT0, KEY_POWER,
++ "Power", 0 },
++
++ { IRQ_EINT17, S3C2410_GPG9, S3C2410_GPG9_EINT17, KEY_UP,
++ "Up_arrow", 0 },
++ { IRQ_EINT16, S3C2410_GPG8, S3C2410_GPG8_EINT16, KEY_DOWN,
++ "Down_arrow", 0 },
++ { IRQ_EINT15, S3C2410_GPG7, S3C2410_GPG7_EINT15, KEY_ENTER,
++ "Select", 0 },
++
++ { IRQ_EINT7, S3C2410_GPF7, S3C2410_GPF7_EINT7, KEY_HOMEPAGE,
++ "Home", 0 },
++ { IRQ_EINT6, S3C2410_GPF6, S3C2410_GPF6_EINT6, KEY_CALENDAR,
++ "Calendar", 0 },
++ { IRQ_EINT5, S3C2410_GPF5, S3C2410_GPF5_EINT5, KEY_COFFEE,
++ "Contacts", 0 }, /* TODO: find a better key :P */
++ { IRQ_EINT4, S3C2410_GPF4, S3C2410_GPF4_EINT4, KEY_MAIL,
++ "Mail", 0 },
++};
++
++static struct s3c2410_butt_mach_info n30_buttons_cfg __initdata = {
++ .buttons = n30_buttons,
++ .size = ARRAY_SIZE(n30_buttons),
++};
++
++static struct s3c2410_button n35_buttons[] = {
++ { IRQ_EINT0, S3C2410_GPF0, S3C2410_GPF0_EINT0, KEY_POWER,
++ "Power", 0 },
++
++ { IRQ_EINT13, S3C2410_GPG5, S3C2410_GPG5_EINT13, KEY_LEFT,
++ "Left_arrow", 0 },
++ { IRQ_EINT14, S3C2410_GPG6, S3C2410_GPG6_EINT14, KEY_RIGHT,
++ "Right_arrow", 0 },
++ { IRQ_EINT17, S3C2410_GPG9, S3C2410_GPG9_EINT17, KEY_UP,
++ "Up_arrow", 0 },
++ { IRQ_EINT16, S3C2410_GPG8, S3C2410_GPG8_EINT16, KEY_DOWN,
++ "Down_arrow", 0 },
++ { IRQ_EINT15, S3C2410_GPG7, S3C2410_GPG7_EINT15, KEY_ENTER,
++ "Select", 0 },
++
++ { IRQ_EINT7, S3C2410_GPF7, S3C2410_GPF7_EINT7, KEY_HOMEPAGE,
++ "Home", 0 },
++ { IRQ_EINT6, S3C2410_GPF6, S3C2410_GPF6_EINT6, KEY_CALENDAR,
++ "Calendar", 0 },
++ { IRQ_EINT5, S3C2410_GPF5, S3C2410_GPF5_EINT5, KEY_COFFEE,
++ "Contacts", 0 }, /* TODO: find a better key :P */
++ { IRQ_EINT4, S3C2410_GPF4, S3C2410_GPF4_EINT4, KEY_MAIL,
++ "Mail", 0 },
++};
++
++static struct s3c2410_butt_mach_info n35_buttons_cfg __initdata = {
++ .buttons = n35_buttons,
++ .size = ARRAY_SIZE(n35_buttons),
++};
++
+ static struct platform_device *n30_devices[] __initdata = {
+ &s3c_device_usb,
+ &s3c_device_lcd,
+ &s3c_device_bl,
+ &s3c_device_ts,
++ &s3c_device_buttons,
+ &s3c_device_wdt,
+ &s3c_device_i2c,
+ &s3c_device_iis,
+@@ -238,6 +297,11 @@ static void __init n30_init(void)
+ set_s3c2410bl_info(&n30_blcfg);
+ set_s3c2410ts_info(&n30_ts_cfg);
+
++ if (machine_is_n30())
++ s3c24xx_butt_set_platdata(&n30_buttons_cfg);
++ if (machine_is_n35())
++ s3c24xx_butt_set_platdata(&n35_buttons_cfg);
++
+ s3c_device_i2c.dev.platform_data = &n30_i2ccfg;
+
+ /* Turn off suspend on both USB ports, and switch the
diff --git a/packages/linux/linux/acern30/n30-cleanup.patch b/packages/linux/linux/acern30/n30-cleanup.patch
new file mode 100644
index 0000000000..ea1c966ae9
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-cleanup.patch
@@ -0,0 +1,30 @@
+Clean up some junk from the official kernel.
+
+The s3c2410.h include isn't needed.
+
+The compile-command is something that's only useful for me personally
+and doesn't belong in the mainstream kernel.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -39,7 +39,6 @@
+
+ #include <linux/serial_core.h>
+
+-#include "s3c2410.h"
+ #include "clock.h"
+ #include "devs.h"
+ #include "cpu.h"
+@@ -137,10 +136,3 @@ MACHINE_START(N30, "Acer-N30")
+ .init_irq = n30_init_irq,
+ .map_io = n30_map_io,
+ MACHINE_END
+-
+-/*
+- Local variables:
+- compile-command: "make ARCH=arm CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux- -k -C ../../.."
+- c-basic-offset: 8
+- End:
+-*/
diff --git a/packages/linux/linux/acern30/n30-hardcode.patch b/packages/linux/linux/acern30/n30-hardcode.patch
new file mode 100644
index 0000000000..735e18ca4c
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-hardcode.patch
@@ -0,0 +1,158 @@
+This patch hardcodes a lot of register settings so that I can boot
+directly from flash on the n30.
+
+Is there a nicer way of doing this?
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -349,9 +349,148 @@ static struct s3c24xx_board n30_board __
+ .devices_count = ARRAY_SIZE(n30_devices)
+ };
+
++/* Lots of hardcoded stuff, but it sets up the hardware in a useful
++ * state so that we can boot Linux directly from flash. */
++static void __init n30_hwinit(void)
++{
++ /* GPA0-11 special functions -- unknown what they do
++ * GPA12 N30 special function -- unknown what it does
++ * N35/PiN output -- unknown what it does
++ *
++ * A12 is nGCS1 on the N30 and an output on the N35/PiN. I
++ * don't think it does anything useful on the N30, so I ought
++ * to make it an output there too since it always driven to 0
++ * as far as I can tell. */
++ if (machine_is_n30())
++ __raw_writel(0x007fffff, S3C2410_GPACON);
++ if (machine_is_n35())
++ __raw_writel(0x007fefff, S3C2410_GPACON);
++ __raw_writel(0x00000000, S3C2410_GPADAT);
++
++ /* GPB0 TOUT0 backlight level
++ * GPB1 output 1=backlight on
++ * GPB2 output IrDA enable 0=transceiver enabled, 1=disabled
++ * GPB3 output USB D+ pull up 0=disabled, 1=enabled
++ * GPB4 N30 output -- unknown function
++ * N30/PiN GPS control 0=GPS enabled, 1=GPS disabled
++ * GPB5 output -- unknown function
++ * GPB6 input -- unknown function
++ * GPB7 output -- unknown function
++ * GPB8 output -- probably LCD driver enable
++ * GPB9 output -- probably LCD VSYNC driver enable
++ * GPB10 output -- probably LCD HSYNC driver enable
++ */
++ __raw_writel(0x00154556, S3C2410_GPBCON);
++ __raw_writel(0x00000750, S3C2410_GPBDAT);
++ __raw_writel(0x0000007d, S3C2410_GPBUP);
++
++ /* GPC0 input RS232 DCD/DSR/RI
++ * GPC1 LCD
++ * GPC2 output RS232 DTR?
++ * GPC3 input RS232 DCD/DSR/RI
++ * GPC4 LCD
++ * GPC5 output 0=NAND write enabled, 1=NAND write protect
++ * GPC6 input -- unknown function
++ * GPC7 input charger status 0=charger connected
++ * this input can be triggered by power on the USB device
++ * port too, but will go back to disconnected soon after.
++ * GPC8 N30/N35 output -- unknown function, always driven to 1
++ * PiN input -- unknown function, always read as 1
++ * Make it an input with a pull up for all models.
++ * GPC9-15 LCD
++ */
++ __raw_writel(0xaaa80618, S3C2410_GPCCON);
++ __raw_writel(0x0000014c, S3C2410_GPCDAT);
++ __raw_writel(0x0000fef2, S3C2410_GPCUP);
++
++ /* GPD0 input -- unknown function
++ * GPD1-D7 LCD
++ * GPD8 N30 output -- unknown function
++ * N35/PiN output 1=GPS LED on
++ * GPD9 output 0=power led blinks red, 1=normal power led function
++ * GPD10 output -- unknown function
++ * GPD11-15 LCD drivers
++ */
++ __raw_writel(0xaa95aaa4, S3C2410_GPDCON);
++ __raw_writel(0x00000601, S3C2410_GPDDAT);
++ __raw_writel(0x0000fbfe, S3C2410_GPDUP);
++
++ /* GPE0-4 I2S audio bus
++ * GPE5-10 SD/MMC bus
++ * E11-13 outputs -- unknown function, probably power management
++ * E14-15 I2C bus connected to the battery controller
++ */
++ __raw_writel(0xa56aaaaa, S3C2410_GPECON);
++ __raw_writel(0x0000efc5, S3C2410_GPEDAT);
++ __raw_writel(0x0000f81f, S3C2410_GPEUP);
++
++ /* GPF0 input 0=power button pressed
++ * GPF1 input SD/MMC switch 0=card present
++ * GPF2 N30 1=reset button pressed (inverted compared to the rest)
++ * N35/PiN 0=reset button pressed
++ * GPF3 N30/PiN input -- unknown function
++ * N35 input GPS antenna position, 0=antenna closed, 1=open
++ * GPF4 input 0=button 4 pressed
++ * GPF5 input 0=button 3 pressed
++ * GPF6 input 0=button 2 pressed
++ * GPF7 input 0=button 1 pressed
++ */
++ __raw_writel(0x0000aaaa, S3C2410_GPFCON);
++ __raw_writel(0x00000000, S3C2410_GPFDAT);
++ __raw_writel(0x000000ff, S3C2410_GPFUP);
++
++ /* GPG0 input RS232 DCD/DSR/RI
++ * GPG1 input 1=USB gadget port has power from a host
++ * GPG2 N30 input -- unknown function
++ * N35/PiN input 0=headphones plugged in, 1=not plugged in
++ * GPG3 N30 output -- unknown function
++ * N35/PiN input with unknown function
++ * GPG4 N30 output 0=MMC enabled, 1=MMC disabled
++ * GPG5 N30 output 0=BlueTooth chip disabled, 1=enabled
++ * N35/PiN input joystick right
++ * GPG6 N30 output 0=blue led on, 1=off
++ * N35/PiN input joystick left
++ * GPG7 input 0=thumbwheel pressed
++ * GPG8 input 0=thumbwheel down
++ * GPG9 input 0=thumbwheel up
++ * GPG10 input SD/MMC write protect switch
++ * GPG11 N30 input -- unknown function
++ * N35 output 0=GPS antenna powered, 1=not powered
++ * PiN output -- unknown function
++ * GPG12-15 touch screen functions
++ *
++ * The pullups differ between the models, so enable all
++ * pullups that are enabled on any of the models.
++ */
++ if (machine_is_n30())
++ __raw_writel(0xff0a956a, S3C2410_GPGCON);
++ if (machine_is_n35())
++ __raw_writel(0xff4aa92a, S3C2410_GPGCON);
++ __raw_writel(0x0000e800, S3C2410_GPGDAT);
++ __raw_writel(0x0000f86f, S3C2410_GPGUP);
++
++ /* GPH0/1/2/3 RS232 serial port
++ * GPH4/5 IrDA serial port
++ * GPH6/7 N30 BlueTooth serial port
++ * N35/PiN GPS receiver
++ * GPH8 input -- unknown function
++ * GPH9 CLKOUT0 HCLK -- unknown use
++ * GPH10 CLKOUT1 FCLK -- unknown use
++ *
++ * The pull ups for H6/H7 are enabled on N30 but not on the
++ * N35/PiN. I suppose is useful for a budget model of the N30
++ * with no bluetooh. It doesn't hurt to have the pull ups
++ * enable, so leave them enabled for all models.
++ */
++ __raw_writel(0x0028aaaa, S3C2410_GPHCON);
++ __raw_writel(0x000005ef, S3C2410_GPHDAT);
++ __raw_writel(0x0000063f, S3C2410_GPHUP);
++}
++
+ static void __init n30_map_io(void)
+ {
+ s3c24xx_init_io(n30_iodesc, ARRAY_SIZE(n30_iodesc));
++ n30_hwinit();
+ s3c24xx_init_clocks(0);
+ s3c24xx_init_uarts(n30_uartcfgs, ARRAY_SIZE(n30_uartcfgs));
+ s3c24xx_set_board(&n30_board);
diff --git a/packages/linux/linux/acern30/n30-lcd.patch b/packages/linux/linux/acern30/n30-lcd.patch
new file mode 100644
index 0000000000..c56ad5aadc
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-lcd.patch
@@ -0,0 +1,66 @@
+This patch adds the configuration needed for the LCD display on the n30.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -44,7 +44,9 @@
+
+ #include <asm/arch/regs-serial.h>
+ #include <asm/arch/regs-gpio.h>
++#include <asm/arch/regs-lcd.h>
+ #include <asm/arch/iic.h>
++#include <asm/arch/fb.h>
+
+ #include <linux/serial_core.h>
+
+@@ -85,6 +87,40 @@ static struct s3c2410_uartcfg n30_uartcf
+ },
+ };
+
++static struct s3c2410fb_mach_info n30_lcdcfg __initdata = {
++ .fixed_syncs= 1,
++ .regs={
++ .lcdcon1= S3C2410_LCDCON1_TFT16BPP |
++ S3C2410_LCDCON1_TFT |
++ S3C2410_LCDCON1_CLKVAL(0x0A),
++
++ .lcdcon2= S3C2410_LCDCON2_VBPD(1) |
++ S3C2410_LCDCON2_LINEVAL(319) |
++ S3C2410_LCDCON2_VFPD(2) |
++ S3C2410_LCDCON2_VSPW(1),
++
++ .lcdcon3= S3C2410_LCDCON3_HBPD(39) |
++ S3C2410_LCDCON3_HOZVAL(239) |
++ S3C2410_LCDCON3_HFPD(2),
++
++ .lcdcon4= S3C2410_LCDCON4_MVAL(13) |
++ S3C2410_LCDCON4_HSPW(39),
++
++ .lcdcon5= S3C2410_LCDCON5_FRM565 |
++ S3C2410_LCDCON5_INVVLINE |
++ S3C2410_LCDCON5_INVVFRAME |
++ S3C2410_LCDCON5_PWREN |
++ S3C2410_LCDCON5_HWSWP,
++ },
++ .lpcsel= 0x06,
++
++ .width= 240,
++ .height= 320,
++ .xres= {240,240,240},
++ .yres= {320,320,320},
++ .bpp= {16,16,16},
++};
++
+ static struct platform_device *n30_devices[] __initdata = {
+ &s3c_device_usb,
+ &s3c_device_lcd,
+@@ -123,6 +159,8 @@ static void __init n30_init_irq(void)
+
+ static void __init n30_init(void)
+ {
++ s3c24xx_fb_set_platdata(&n30_lcdcfg);
++
+ s3c_device_i2c.dev.platform_data = &n30_i2ccfg;
+
+ /* Turn off suspend on both USB ports, and switch the
diff --git a/packages/linux/linux/acern30/n30-mmc-power.patch b/packages/linux/linux/acern30/n30-mmc-power.patch
new file mode 100644
index 0000000000..cacb2fafd6
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-mmc-power.patch
@@ -0,0 +1,24 @@
+This patch adds power management for the mmc port on the n30.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -261,9 +261,16 @@ static struct s3c2410_butt_mach_info n35
+ .size = ARRAY_SIZE(n35_buttons),
+ };
+
++static void n30_mmc_set_power(unsigned int to)
++{
++ /* TODO This may not be correct. This needs testing. */
++ if (machine_is_n30())
++ s3c2410_gpio_setpin(S3C2410_GPG4, !to);
++}
++
+ static struct s3c24xx_mmc_platdata n30_mmc_cfg = {
+ .gpio_detect = S3C2410_GPF1,
+- .set_power = NULL,
++ .set_power = n30_mmc_set_power,
+ .f_max = 3000000,
+ .ocr_avail = MMC_VDD_32_33,
+ };
diff --git a/packages/linux/linux/acern30/n30-mmc-wprotect.patch b/packages/linux/linux/acern30/n30-mmc-wprotect.patch
new file mode 100644
index 0000000000..e319432c6c
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-mmc-wprotect.patch
@@ -0,0 +1,54 @@
+This adds support for the write protect switch on the n30.
+
+It also adds some code to the generic s3c2410sdi driver so that the
+write protect switch actually does something.
+
+But I'm not sure if I want to add support for the write protect switch
+since it really protect against anything. Using the switch is
+entirely up to software, and saying that the card is write protected
+when it really isn't sounds like a bad idea. "Secure" Digital indeed.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -270,6 +270,7 @@ static void n30_mmc_set_power(unsigned i
+
+ static struct s3c24xx_mmc_platdata n30_mmc_cfg = {
+ .gpio_detect = S3C2410_GPF1,
++ .gpio_wprotect = S3C2410_GPG10,
+ .set_power = n30_mmc_set_power,
+ .f_max = 3000000,
+ .ocr_avail = MMC_VDD_32_33,
+Index: linux-2.6.14/drivers/mmc/s3c2410mci.c
+===================================================================
+--- linux-2.6.14.orig/drivers/mmc/s3c2410mci.c
++++ linux-2.6.14/drivers/mmc/s3c2410mci.c
+@@ -515,6 +515,17 @@ static void s3c2410sdi_set_ios(struct mm
+
+ }
+
++static int s3c2410sdi_get_ro(struct mmc_host* mmc)
++{
++ struct s3c2410sdi_host *host = mmc_priv(mmc);
++ int r;
++
++ r = s3c2410_gpio_getpin(host->pdata->gpio_wprotect);
++ if (host->pdata->wprotect_polarity)
++ r = !r;
++ return r;
++}
++
+ static struct mmc_host_ops s3c2410sdi_ops = {
+ .request = s3c2410sdi_request,
+ .set_ios = s3c2410sdi_set_ios,
+@@ -643,6 +654,9 @@ static int s3c2410sdi_probe(struct devic
+ mmc->f_max = clk_get_rate(host->clk) / 2;
+ mmc->caps = MMC_CAP_4_BIT_DATA;
+
++ if (host->pdata->gpio_wprotect)
++ mmc->ops->get_ro = s3c2410sdi_get_ro;
++
+ /* HACK: There seems to be a hardware bug in TomTom GO. */
+ /*if(mmc->f_max>3000000) mmc->f_max=3000000;*/
+
diff --git a/packages/linux/linux/acern30/n30-mmc.patch b/packages/linux/linux/acern30/n30-mmc.patch
new file mode 100644
index 0000000000..6fb58f142b
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-mmc.patch
@@ -0,0 +1,53 @@
+This patch adds configuration for the SD/MMC port on the n30.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -32,6 +32,8 @@
+ #include <linux/device.h>
+ #include <linux/kthread.h>
+
++#include <linux/mmc/protocol.h>
++
+ #include <asm/mach/arch.h>
+ #include <asm/mach/map.h>
+ #include <asm/mach/irq.h>
+@@ -52,6 +54,7 @@
+ #include <asm/arch/lcd.h>
+ #include <asm/arch/ts.h>
+ #include <asm/arch/buttons.h>
++#include <asm/arch/mmc.h>
+
+ #include <linux/serial_core.h>
+
+@@ -258,6 +261,13 @@ static struct s3c2410_butt_mach_info n35
+ .size = ARRAY_SIZE(n35_buttons),
+ };
+
++static struct s3c24xx_mmc_platdata n30_mmc_cfg = {
++ .gpio_detect = S3C2410_GPF1,
++ .set_power = NULL,
++ .f_max = 3000000,
++ .ocr_avail = MMC_VDD_32_33,
++};
++
+ static struct platform_device *n30_devices[] __initdata = {
+ &s3c_device_usb,
+ &s3c_device_lcd,
+@@ -268,6 +278,7 @@ static struct platform_device *n30_devic
+ &s3c_device_i2c,
+ &s3c_device_iis,
+ &s3c_device_usbgadget,
++ &s3c_device_sdi,
+ };
+
+ static struct s3c2410_platform_i2c n30_i2ccfg = {
+@@ -309,6 +320,7 @@ static void __init n30_init(void)
+ s3c24xx_butt_set_platdata(&n35_buttons_cfg);
+
+ s3c_device_i2c.dev.platform_data = &n30_i2ccfg;
++ s3c_device_sdi.dev.platform_data = &n30_mmc_cfg;
+
+ /* Turn off suspend on both USB ports, and switch the
+ * selectable USB port to USB device mode. */
diff --git a/packages/linux/linux/acern30/n30-nand-hack.patch b/packages/linux/linux/acern30/n30-nand-hack.patch
new file mode 100644
index 0000000000..d606f2b47c
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-nand-hack.patch
@@ -0,0 +1,32 @@
+The flash is locked on the n30 and needs to be unlocked before every
+write. It should be possible to do one big unlock operation outside
+of the erase and write functions but for some strange reason that
+doesn't seem to work any more, so do this ugly workaround for now.
+
+Index: linux-2.6.14/drivers/mtd/nand/nand_base.c
+===================================================================
+--- linux-2.6.14.orig/drivers/mtd/nand/nand_base.c
++++ linux-2.6.14/drivers/mtd/nand/nand_base.c
+@@ -866,6 +866,10 @@ static int nand_write_page (struct mtd_i
+ /* FIXME: Enable cached programming */
+ cached = 0;
+
++ /* unlock the page */
++ this->cmdfunc (mtd, 0x23, -1, page);
++ this->cmdfunc (mtd, 0x24, -1, page);
++
+ /* Send command to begin auto page programming */
+ this->cmdfunc (mtd, NAND_CMD_SEQIN, 0x00, page);
+
+@@ -2037,6 +2041,11 @@ out:
+ static void single_erase_cmd (struct mtd_info *mtd, int page)
+ {
+ struct nand_chip *this = mtd->priv;
++
++ /* unlock the page */
++ this->cmdfunc (mtd, 0x23, -1, page);
++ this->cmdfunc (mtd, 0x24, -1, page);
++
+ /* Send commands to erase a block */
+ this->cmdfunc (mtd, NAND_CMD_ERASE1, -1, page);
+ this->cmdfunc (mtd, NAND_CMD_ERASE2, -1, -1);
diff --git a/packages/linux/linux/acern30/n30-nand.patch b/packages/linux/linux/acern30/n30-nand.patch
new file mode 100644
index 0000000000..d3ac8c557a
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-nand.patch
@@ -0,0 +1,97 @@
+This patch adds a nand flash configuration for the n30.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -33,6 +33,8 @@
+ #include <linux/kthread.h>
+
+ #include <linux/mmc/protocol.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
+
+ #include <asm/mach/arch.h>
+ #include <asm/mach/map.h>
+@@ -55,6 +57,7 @@
+ #include <asm/arch/ts.h>
+ #include <asm/arch/buttons.h>
+ #include <asm/arch/mmc.h>
++#include <asm/arch/nand.h>
+
+ #include <linux/serial_core.h>
+
+@@ -276,6 +279,50 @@ static struct s3c24xx_mmc_platdata n30_m
+ .ocr_avail = MMC_VDD_32_33,
+ };
+
++static int chip0_map[] = { 0 };
++
++struct mtd_partition n30_default_nand_part[] = {
++ {
++ .name = "Whole flash",
++ .offset = 0,
++ .size = MTDPART_SIZ_FULL,
++ .mask_flags = MTD_WRITEABLE,
++ },
++ {
++ .name = "Partition Table",
++ .offset = 0x28000,
++ .size = 0x8000,
++ },
++ {
++ .name = "Kernel",
++ .offset = 0x30000,
++ .size = 0x4d0000,
++ },
++ {
++ .name = "Root",
++ .offset = 0x500000,
++ .size = MTDPART_SIZ_FULL,
++ },
++};
++
++static struct s3c2410_nand_set n30_nand_sets[] = {
++ {
++ .name = "chip0",
++ .nr_chips = 1,
++ .nr_map = chip0_map,
++ .nr_partitions = ARRAY_SIZE(n30_default_nand_part),
++ .partitions = n30_default_nand_part
++ },
++};
++
++static struct s3c2410_platform_nand n30_nand_info = {
++ .tacls = 80,
++ .twrph0 = 80,
++ .twrph1 = 80,
++ .nr_sets = ARRAY_SIZE(n30_nand_sets),
++ .sets = n30_nand_sets,
++};
++
+ static struct platform_device *n30_devices[] __initdata = {
+ &s3c_device_usb,
+ &s3c_device_lcd,
+@@ -287,6 +334,7 @@ static struct platform_device *n30_devic
+ &s3c_device_iis,
+ &s3c_device_usbgadget,
+ &s3c_device_sdi,
++ &s3c_device_nand,
+ };
+
+ static struct s3c2410_platform_i2c n30_i2ccfg = {
+@@ -329,6 +377,14 @@ static void __init n30_init(void)
+
+ s3c_device_i2c.dev.platform_data = &n30_i2ccfg;
+ s3c_device_sdi.dev.platform_data = &n30_mmc_cfg;
++ s3c_device_nand.dev.platform_data = &n30_nand_info;
++
++ /* Clear any locks and write protects on the flash. */
++ s3c2410_gpio_setpin(S3C2410_GPC5, 1);
++ msleep(1);
++ s3c2410_gpio_setpin(S3C2410_GPC5, 0);
++ msleep(1);
++ s3c2410_gpio_setpin(S3C2410_GPC5, 1);
+
+ /* Turn off suspend on both USB ports, and switch the
+ * selectable USB port to USB device mode. */
diff --git a/packages/linux/linux/acern30/n30-pm.patch b/packages/linux/linux/acern30/n30-pm.patch
new file mode 100644
index 0000000000..014043b55b
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-pm.patch
@@ -0,0 +1,296 @@
+Add suspend/resume support for the Acer N30.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -66,11 +66,46 @@
+ #include "clock.h"
+ #include "devs.h"
+ #include "cpu.h"
++#include "pm.h"
+
+ static struct map_desc n30_iodesc[] __initdata = {
+ /* nothing here yet */
+ };
+
++/* This code is copied to physical address SDRAM_PA + 0x201000. The
++ * bootloader will jump there on a watchdog reset or when resuming
++ * from suspend to ram. */
++
++#define N30_RESUME_VA __va(S3C2410_SDRAM_PA + 0x201000)
++
++static void __init n30_resume(void) __attribute__((naked));
++static void __init n30_resume(void)
++{
++ asm(
++ "mov r1, #0x56000000 \n\t"
++
++ /* load GSTATUS2 and check for a wake from suspend */
++ "ldr r0, [r1, #0xb4] \n\t" /* GSTATUS2 */
++ "ands r0, r0, #2 \n\t" /* OFFRST */
++ "beq 1f \n\t"
++
++ /* it is a wake reset, so jump to the resume function
++ * pointed to by GSTATUS3 */
++ "ldr pc, [r1, #0xb8] \n\t" /* GSTATUS3 */
++
++ /* Probably a watchdog reset, so fake a power on reset
++ * by writing PWRST to GSTATUS2 and then jump back to
++ * the bootloader. */
++ "1: \n\t"
++ "mov r0, #1 \n\t" /* PWRST */
++ "str r0, [r1, #0xb4] \n\t" /* GSTATUS2 */
++ "mov pc, #0 \n\t"
++
++ "n30_resume_end: \n\t"
++ );
++}
++extern void n30_resume_end;
++
+ static struct s3c2410_uartcfg n30_uartcfgs[] = {
+ /* Normal serial port */
+ [0] = {
+@@ -483,6 +518,154 @@ static void __init n30_hwinit(void)
+ __raw_writel(0x0000063f, S3C2410_GPHUP);
+ }
+
++void n30_pm_gpio(void)
++{
++ if (machine_is_n35()) {
++ /* Prepare for suspend to ram. This is what WinCE
++ * apparently does. I know where some of these pins
++ * are connected and ought to be moved to code related
++ * that hardware, but some stuff is magic so far. */
++
++ /* All this is magic. WinCE does this and it brings
++ * the power consumption in sleep mode down. */
++
++ /* Drive ADDR0, ADDR16..ADDR23, and ADDR26 low.
++ * ADDR24 and ADDR 25 are still working.
++ * nGCS1..nGCS5 are driven low.
++ * CLE, ALE, nFWE, nFRE, nRSTOUT and nFCW are working. */
++ __raw_writel(0x007e0600, S3C2410_GPACON);
++ __raw_writel(0x00000000, S3C2410_GPADAT);
++ __raw_writel(0x00015556, S3C2410_GPBCON);
++ __raw_writel(0x00000011, S3C2410_GPBDAT);
++ __raw_writel(0x000007ff, S3C2410_GPBUP);
++ __raw_writel(0xaa950618, S3C2410_GPCCON);
++ __raw_writel(0x0000024c, S3C2410_GPCDAT);
++ __raw_writel(0x0000ffb6, S3C2410_GPCUP);
++ __raw_writel(0xaa95aaa5, S3C2410_GPDCON);
++ __raw_writel(0x00000202, S3C2410_GPDDAT);
++ __raw_writel(0x0000fffd, S3C2410_GPDUP);
++ __raw_writel(0xa56aaaaa, S3C2410_GPECON);
++ __raw_writel(0x0000c7c1, S3C2410_GPEDAT);
++ __raw_writel(0x0000ffff, S3C2410_GPEUP);
++ __raw_writel(0x0000aa22, S3C2410_GPFCON);
++ __raw_writel(0x000000f5, S3C2410_GPFDAT);
++ __raw_writel(0x000000fd, S3C2410_GPFUP);
++ __raw_writel(0xff40010a, S3C2410_GPGCON);
++ __raw_writel(0x0000abf5, S3C2410_GPGDAT);
++ __raw_writel(0x0000fcef, S3C2410_GPGUP);
++ __raw_writel(0x0014aaaa, S3C2410_GPHCON);
++ __raw_writel(0x0000062f, S3C2410_GPHDAT);
++ __raw_writel(0x000007ff, S3C2410_GPHUP);
++
++ /* Turn GPB6 into an output and drive it low. */
++ s3c2410_gpio_cfgpin(S3C2410_GPB6, S3C2410_GPB6_OUTP);
++ s3c2410_gpio_setpin(S3C2410_GPB6, 0);
++
++ /* Turn off the pull up on GPB7. */
++ s3c2410_gpio_pullup(S3C2410_GPB7, 1);
++
++ /* Drive GPC8 low */
++ s3c2410_gpio_cfgpin(S3C2410_GPC8, S3C2410_GPC8_OUTP);
++ s3c2410_gpio_setpin(S3C2410_GPC8, 0);
++ s3c2410_gpio_pullup(S3C2410_GPC8, 1);
++
++ /* Drive GPC9/VD[1] high. */
++ s3c2410_gpio_cfgpin(S3C2410_GPC9, S3C2410_GPC9_OUTP);
++ s3c2410_gpio_setpin(S3C2410_GPC9, 1);
++
++ /* Drive GPC10/VD[2] low. */
++ s3c2410_gpio_cfgpin(S3C2410_GPC10, S3C2410_GPC10_OUTP);
++ s3c2410_gpio_setpin(S3C2410_GPC10, 0);
++
++ /* Disable pull up on RS232 DTR? */
++ s3c2410_gpio_pullup(S3C2410_GPC2, 1);
++
++ /* Enable pull up on GPC6. */
++ s3c2410_gpio_pullup(S3C2410_GPC6, 0);
++
++ /* Turn GPD0 into an output and drive it low. */
++ s3c2410_gpio_cfgpin(S3C2410_GPD0, S3C2410_GPD0_OUTP);
++ s3c2410_gpio_setpin(S3C2410_GPD0, 0);
++ s3c2410_gpio_pullup(S3C2410_GPD0, 1);
++
++ /* Drive VD[9] high and enable the pull up. */
++ s3c2410_gpio_cfgpin(S3C2410_GPD1, S3C2410_GPD1_OUTP);
++ s3c2410_gpio_setpin(S3C2410_GPD1, 1);
++ s3c2410_gpio_pullup(S3C2410_GPD1, 0);
++
++ /* Drive DPD10 low. */
++ s3c2410_gpio_setpin(S3C2410_GPD10, 0);
++ s3c2410_gpio_pullup(S3C2410_GPD10, 1);
++
++ /* This may do something about the power planes. */
++ s3c2410_gpio_setpin(S3C2410_GPE11, 0);
++ s3c2410_gpio_setpin(S3C2410_GPE12, 0);
++ s3c2410_gpio_setpin(S3C2410_GPE13, 0);
++
++ /* Disable pull ups on H8. Don't know why. */
++ s3c2410_gpio_pullup(S3C2410_GPH8, 1);
++
++ /* LCD stuff, ought to be moved to n30_lcd_power.
++ * GPB8 is still an output and drives 0.
++ * GPB9 and GPB10 are turned into inputs.
++ * All pull ups are disabled. */
++ s3c2410_gpio_setpin(S3C2410_GPB8, 0);
++ s3c2410_gpio_pullup(S3C2410_GPB8, 1);
++ s3c2410_gpio_cfgpin(S3C2410_GPB9, S3C2410_GPB9_INP);
++ s3c2410_gpio_pullup(S3C2410_GPB9, 1);
++ s3c2410_gpio_cfgpin(S3C2410_GPB10, S3C2410_GPB10_INP);
++ s3c2410_gpio_pullup(S3C2410_GPB10, 1);
++
++ /* Disable IrDA (not done by WinCE). */
++ s3c2410_gpio_setpin(S3C2410_GPB2, 1);
++
++ /* Disable the GPS. */
++ s3c2410_gpio_setpin(S3C2410_GPB4, 1);
++ s3c2410_gpio_setpin(S3C2410_GPG11, 1);
++
++ /* Turn on flash write protect. */
++ s3c2410_gpio_setpin(S3C2410_GPC5, 0);
++
++ /* Disable pull ups on the SD/MMC port. This should
++ * maybe be done after power has been removed from the
++ * SD/MMC port. */
++ s3c2410_gpio_pullup(S3C2410_GPE5, 1);
++ s3c2410_gpio_pullup(S3C2410_GPE6, 1);
++ s3c2410_gpio_pullup(S3C2410_GPE7, 1);
++ s3c2410_gpio_pullup(S3C2410_GPE8, 1);
++ s3c2410_gpio_pullup(S3C2410_GPE9, 1);
++ s3c2410_gpio_pullup(S3C2410_GPE10, 1);
++
++ /* Disable MMC? On the N30 this makes a difference,
++ * on the N35, maybe not. */
++ s3c2410_gpio_setpin(S3C2410_GPG4, 1);
++
++ /* Enable pull up on SD/MMC switch. */
++ s3c2410_gpio_pullup(S3C2410_GPF1, 0);
++
++ /* Disable pull up on thumbwheel. Why not on the
++ * other inputs too? */
++ s3c2410_gpio_pullup(S3C2410_GPG7, 1);
++
++ /* Disable pull up on SD write protect switch. */
++ s3c2410_gpio_pullup(S3C2410_GPG10, 1);
++
++ /* Disable pull ups on the bluetooth/gps port. */
++ s3c2410_gpio_pullup(S3C2410_GPH6, 1);
++ s3c2410_gpio_pullup(S3C2410_GPH7, 1);
++
++ /* Drive CLKOUT0 high while sleeping. */
++ s3c2410_gpio_cfgpin(S3C2410_GPH9, S3C2410_GPH9_OUTP);
++ s3c2410_gpio_setpin(S3C2410_GPH9, 1);
++
++ /* Drive CLKOUT1 high while sleeping. */
++ s3c2410_gpio_cfgpin(S3C2410_GPH10, S3C2410_GPH10_OUTP);
++ s3c2410_gpio_setpin(S3C2410_GPH10, 1);
++
++ s3c2410_capture_regs();
++ }
++}
++
+ static void __init n30_map_io(void)
+ {
+ s3c24xx_init_io(n30_iodesc, ARRAY_SIZE(n30_iodesc));
+@@ -569,6 +752,12 @@ static void __init n30_init(void)
+ s3c_device_sdi.dev.platform_data = &n30_mmc_cfg;
+ s3c_device_nand.dev.platform_data = &n30_nand_info;
+
++ s3c2410_pm_init();
++ enable_irq_wake(IRQ_EINT0);
++
++ memcpy_toio(N30_RESUME_VA, (void *)n30_resume,
++ &n30_resume_end - (void *)n30_resume);
++
+ /* Clear any locks and write protects on the flash. */
+ s3c2410_gpio_setpin(S3C2410_GPC5, 1);
+ msleep(1);
+Index: linux-2.6.14/arch/arm/mach-s3c2410/pm.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/pm.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/pm.c
+@@ -565,6 +565,8 @@ static int s3c2410_pm_enter(suspend_stat
+ s3c2410_pm_do_save(core_save, ARRAY_SIZE(core_save));
+ s3c2410_pm_do_save(uart_save, ARRAY_SIZE(uart_save));
+
++ n30_pm_gpio();
++
+ /* set the irq configuration for wake */
+
+ s3c2410_pm_configure_extint();
+@@ -601,6 +603,8 @@ static int s3c2410_pm_enter(suspend_stat
+ tmp &= S3C2410_GSTATUS2_OFFRESET;
+ __raw_writel(tmp, S3C2410_GSTATUS2);
+
++ s3c2410_capture_regs();
++
+ /* restore the system state */
+
+ s3c2410_pm_do_restore_core(core_save, ARRAY_SIZE(core_save));
+Index: linux-2.6.14/arch/arm/mach-s3c2410/sleep.S
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/sleep.S
++++ linux-2.6.14/arch/arm/mach-s3c2410/sleep.S
+@@ -80,6 +80,7 @@ ENTRY(s3c2410_cpu_suspend)
+
+ orr r7, r7, #S3C2410_REFRESH_SELF @ SDRAM sleep command
+ orr r8, r8, #S3C2410_MISCCR_SDSLEEP @ SDRAM power-down signals
++ orr r8, r8, #3 @ turn on data pull ups
+ orr r9, r9, #S3C2410_CLKCON_POWER @ power down command
+
+ teq pc, #0 @ first as a trial-run to load cache
+Index: linux-2.6.14/arch/arm/Makefile
+===================================================================
+--- linux-2.6.14.orig/arch/arm/Makefile
++++ linux-2.6.14/arch/arm/Makefile
+@@ -99,6 +99,10 @@ textaddr-$(CONFIG_ARCH_FORTUNET) := 0x
+ machine-$(CONFIG_ARCH_IMX) := imx
+ machine-$(CONFIG_ARCH_H720X) := h720x
+ machine-$(CONFIG_ARCH_AAEC2000) := aaec2000
++# The Acer N30/N35 needs to put some code at 0xc0201000 to handle
++# the watchdog interrupt and resume from suspend.
++textaddr-$(CONFIG_MACH_N30) := 0xc0208000
++textaddr-$(CONFIG_MACH_N35) := 0xc0208000
+
+ ifeq ($(CONFIG_ARCH_EBSA110),y)
+ # This is what happens if you forget the IOCS16 line.
+Index: linux-2.6.14/arch/arm/mm/init.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mm/init.c
++++ linux-2.6.14/arch/arm/mm/init.c
+@@ -230,6 +230,9 @@ static __init void reserve_node_zero(pg_
+ #endif
+ if (res_size)
+ reserve_bootmem_node(pgdat, PHYS_OFFSET, res_size);
++
++ if (machine_is_n30() || machine_is_n35())
++ reserve_bootmem_node(pgdat, 0x30201000, PAGE_SIZE);
+ }
+
+ void __init build_mem_type_table(void);
+Index: linux-2.6.14/arch/arm/mach-s3c2410/Makefile.boot
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/Makefile.boot
++++ linux-2.6.14/arch/arm/mach-s3c2410/Makefile.boot
+@@ -1,3 +1,7 @@
+ zreladdr-y := 0x30008000
+ params_phys-y := 0x30000100
+
++# The N30/N35 needs 0x30201000 for the bootloader interface. So place
++# the kernel after that.
++zreladdr-$(CONFIG_MACH_N30) := 0x30208000
++zreladdr-$(CONFIG_MACH_N35) := 0x30208000
diff --git a/packages/linux/linux/acern30/n30-ts.patch b/packages/linux/linux/acern30/n30-ts.patch
new file mode 100644
index 0000000000..bc619ed2f3
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-ts.patch
@@ -0,0 +1,43 @@
+This patch adds the touch screen configuration for the n30.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -49,6 +49,7 @@
+ #include <asm/arch/iic.h>
+ #include <asm/arch/fb.h>
+ #include <asm/arch/lcd.h>
++#include <asm/arch/ts.h>
+
+ #include <linux/serial_core.h>
+
+@@ -184,10 +185,20 @@ static struct s3c2410_bl_mach_info n30_b
+ .lcd_power = n30_lcd_power
+ };
+
++/* The touch is very noisy on the n30 so sample often and average many
++ * samples before passing them on to userspace. */
++
++static struct s3c2410_ts_mach_info n30_ts_cfg __initdata = {
++ .delay = 1800,
++ .presc = 49,
++ .oversampling_shift = 6,
++};
++
+ static struct platform_device *n30_devices[] __initdata = {
+ &s3c_device_usb,
+ &s3c_device_lcd,
+ &s3c_device_bl,
++ &s3c_device_ts,
+ &s3c_device_wdt,
+ &s3c_device_i2c,
+ &s3c_device_iis,
+@@ -225,6 +236,7 @@ static void __init n30_init(void)
+ {
+ s3c24xx_fb_set_platdata(&n30_lcdcfg);
+ set_s3c2410bl_info(&n30_blcfg);
++ set_s3c2410ts_info(&n30_ts_cfg);
+
+ s3c_device_i2c.dev.platform_data = &n30_i2ccfg;
+
diff --git a/packages/linux/linux/acern30/n30-usbstart.patch b/packages/linux/linux/acern30/n30-usbstart.patch
new file mode 100644
index 0000000000..b7479b50e4
--- /dev/null
+++ b/packages/linux/linux/acern30/n30-usbstart.patch
@@ -0,0 +1,59 @@
+This patch tries to start the USB gadget in a nice way by
+disconnecting and then reconnecting the pull up.
+
+I ought to use the same callback and configuration as RTP does in
+mach-h1940.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -356,7 +356,33 @@ static void __init n30_init_irq(void)
+ s3c24xx_init_irq();
+ }
+
+-/* GPB3 is the line that controls the pull-up for the USB D+ line */
++static int n30_usbstart_thread(void *unused)
++{
++ /* Disable both USB ports */
++ s3c2410_modify_misccr(S3C2410_MISCCR_USBSUSPND0 |
++ S3C2410_MISCCR_USBSUSPND1,
++ S3C2410_MISCCR_USBSUSPND0 |
++ S3C2410_MISCCR_USBSUSPND1);
++
++ /* Turn off the D+ pull up for a few second so that the USB
++ * host at the other end will do a rescan of the USB bus. */
++ s3c2410_gpio_setpin(S3C2410_GPB3, 0);
++
++ msleep_interruptible(1 * 1000);
++
++ /* Enable the USB host port if this is a n30 */
++ if (machine_is_n30())
++ s3c2410_modify_misccr(S3C2410_MISCCR_USBSUSPND0, 0);
++
++ /* Turn off suspend on USB device port and switch it to device
++ * mode. */
++ s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST |
++ S3C2410_MISCCR_USBSUSPND1, 0x0);
++
++ s3c2410_gpio_setpin(S3C2410_GPB3, 1);
++
++ return 0;
++}
+
+ static void __init n30_init(void)
+ {
+@@ -380,12 +406,7 @@ static void __init n30_init(void)
+ msleep(1);
+ s3c2410_gpio_setpin(S3C2410_GPC5, 1);
+
+- /* Turn off suspend on both USB ports, and switch the
+- * selectable USB port to USB device mode. */
+-
+- s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST |
+- S3C2410_MISCCR_USBSUSPND0 |
+- S3C2410_MISCCR_USBSUSPND1, 0x0);
++ kthread_run(n30_usbstart_thread, NULL, "n30_usbstart");
+ }
+
+ MACHINE_START(N30, "Acer-N30")
diff --git a/packages/linux/linux/acern30/n35.patch b/packages/linux/linux/acern30/n35.patch
new file mode 100644
index 0000000000..75f1818eee
--- /dev/null
+++ b/packages/linux/linux/acern30/n35.patch
@@ -0,0 +1,80 @@
+Index: linux-2.6.14/arch/arm/tools/mach-types
+===================================================================
+--- linux-2.6.14.orig/arch/arm/tools/mach-types
++++ linux-2.6.14/arch/arm/tools/mach-types
+@@ -869,3 +869,4 @@ davinci_dvdp MACH_DAVINCI_DVDP DAVINCI_
+ htcuniversal MACH_HTCUNIVERSAL HTCUNIVERSAL 855
+ tpad MACH_TPAD TPAD 856
+ roverp3 MACH_ROVERP3 ROVERP3 857
++n35 MACH_N35 N35 927
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -1,5 +1,14 @@
+ /* linux/arch/arm/mach-s3c2410/mach-n30.c
+ *
++ * Machine specific code for the following PDAs:
++ *
++ * Acer N30
++ *
++ * Acer N35
++ * Navman PiN 570
++ * Yakumo AlphaX (untested)
++ * Airis NC05 (untested)
++ *
+ * Copyright (c) 2003-2005 Simtec Electronics
+ * Ben Dooks <ben@simtec.co.uk>
+ *
+@@ -65,7 +74,8 @@ static struct s3c2410_uartcfg n30_uartcf
+ .ulcon = 0x43,
+ .ufcon = 0x51,
+ },
+- /* The BlueTooth controller is connected to port 2 */
++ /* On the N30 the bluetooth controller is connected here.
++ * On the N35 and variants the GPS receiver is connected here. */
+ [2] = {
+ .hwport = 2,
+ .flags = 0,
+@@ -136,3 +146,16 @@ MACHINE_START(N30, "Acer-N30")
+ .init_irq = n30_init_irq,
+ .map_io = n30_map_io,
+ MACHINE_END
++
++MACHINE_START(N35, "Acer-N35")
++ /* Maintainer: Christer Weinigel <christer@weinigel.se>
++ */
++ .phys_ram = S3C2410_SDRAM_PA,
++ .phys_io = S3C2410_PA_UART,
++ .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
++ .boot_params = S3C2410_SDRAM_PA + 0x100,
++ .timer = &s3c24xx_timer,
++ .init_machine = n30_init,
++ .init_irq = n30_init_irq,
++ .map_io = n30_map_io,
++MACHINE_END
+Index: linux-2.6.14/arch/arm/mach-s3c2410/Kconfig
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/Kconfig
++++ linux-2.6.14/arch/arm/mach-s3c2410/Kconfig
+@@ -39,9 +39,18 @@ config MACH_N30
+ bool "Acer N30"
+ select CPU_S3C2410
+ help
+- Say Y here if you are using the Acer N30
++ Say Y here if you want support for the Acer N30 PDA.
+
+- <http://zoo.weinigel.se/n30>.
++ <http://www.handhelds.org/moin/moin.cgi/AcerN30>.
++
++config MACH_N35
++ bool "Acer N35/Navman PiN 570"
++ select CPU_S3C2410
++ help
++ Say Y here if you want support for the Acer N35 or
++ Navman PiN 570 PDAs.
++
++ <http://www.handhelds.org/moin/moin.cgi/AcerN30>.
+
+ config ARCH_SMDK2410
+ bool "SMDK2410/A9M2410"
diff --git a/packages/linux/linux/acern30/regdump.patch b/packages/linux/linux/acern30/regdump.patch
new file mode 100644
index 0000000000..9e5ffe370d
--- /dev/null
+++ b/packages/linux/linux/acern30/regdump.patch
@@ -0,0 +1,279 @@
+Add some code to dump most registers. It's a good way to find in what
+state the bootloader or Windows has left the device.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/regdump.c
+===================================================================
+--- /dev/null
++++ linux-2.6.14/arch/arm/mach-s3c2410/regdump.c
+@@ -0,0 +1,261 @@
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/interrupt.h>
++#include <linux/ioport.h>
++
++#include <asm/hardware.h>
++#include <asm/irq.h>
++#include <asm/io.h>
++
++#include <asm/arch/map.h>
++#include <asm/arch/regs-adc.h>
++#include <asm/arch/regs-clock.h>
++#include <asm/arch/regs-gpio.h>
++#include <asm/arch/regs-iic.h>
++#include <asm/arch/regs-iis.h>
++#include <asm/arch/regs-irq.h>
++#include <asm/arch/regs-lcd.h>
++#include <asm/arch/regs-mem.h>
++#include <asm/arch/regs-nand.h>
++#include <asm/arch/regs-rtc.h>
++#include <asm/arch/regs-timer.h>
++#include <asm/arch/regs-udc.h>
++#include <asm/arch/regs-watchdog.h>
++
++#define REGV(reg) { #reg, (reg) }
++#define REGI(va, reg) { #reg, (va) + (reg) }
++
++static struct reginfo {
++ const char *name;
++ void *va;
++} reginfo[] = {
++ /* ADC */
++ REGI(S3C24XX_VA_ADC, S3C2410_ADCCON),
++ REGI(S3C24XX_VA_ADC, S3C2410_ADCTSC),
++ REGI(S3C24XX_VA_ADC, S3C2410_ADCDLY),
++ REGI(S3C24XX_VA_ADC, S3C2410_ADCDAT0),
++ REGI(S3C24XX_VA_ADC, S3C2410_ADCDAT1),
++
++ /* Clocks */
++ REGV(S3C2410_LOCKTIME),
++ REGV(S3C2410_MPLLCON),
++ REGV(S3C2410_UPLLCON),
++ REGV(S3C2410_CLKCON),
++ REGV(S3C2410_CLKSLOW),
++ REGV(S3C2410_CLKDIVN),
++
++ /* GPIO */
++ REGV(S3C2410_GPACON),
++ REGV(S3C2410_GPADAT),
++ REGV(S3C2410_GPBCON),
++ REGV(S3C2410_GPBDAT),
++ REGV(S3C2410_GPBUP),
++ REGV(S3C2410_GPCCON),
++ REGV(S3C2410_GPCDAT),
++ REGV(S3C2410_GPCUP),
++ REGV(S3C2410_GPDCON),
++ REGV(S3C2410_GPDDAT),
++ REGV(S3C2410_GPDUP),
++ REGV(S3C2410_GPECON),
++ REGV(S3C2410_GPEDAT),
++ REGV(S3C2410_GPEUP),
++ REGV(S3C2410_GPFCON),
++ REGV(S3C2410_GPFDAT),
++ REGV(S3C2410_GPFUP),
++ REGV(S3C2410_GPGCON),
++ REGV(S3C2410_GPGDAT),
++ REGV(S3C2410_GPGUP),
++ REGV(S3C2410_GPHCON),
++ REGV(S3C2410_GPHDAT),
++ REGV(S3C2410_GPHUP),
++ REGV(S3C2410_MISCCR),
++ REGV(S3C2410_DCLKCON),
++ REGV(S3C2410_EXTINT0),
++ REGV(S3C2410_EXTINT1),
++ REGV(S3C2410_EXTINT2),
++ REGV(S3C2410_EINFLT0),
++ REGV(S3C2410_EINFLT1),
++ REGV(S3C2410_EINFLT2),
++ REGV(S3C2410_EINFLT3),
++ REGV(S3C2410_GSTATUS0),
++ REGV(S3C2410_GSTATUS1),
++ REGV(S3C2410_GSTATUS2),
++ REGV(S3C2410_GSTATUS3),
++ REGV(S3C2410_GSTATUS4),
++
++#if 0
++ /* IIC */
++ REGI(S3C24XX_VA_IIC, S3C2410_IICCON),
++ REGI(S3C24XX_VA_IIC, S3C2410_IICSTAT),
++ REGI(S3C24XX_VA_IIC, S3C2410_IICADD),
++ REGI(S3C24XX_VA_IIC, S3C2410_IICDS),
++
++ /* IIS */
++ REGI(S3C24XX_VA_IIS, S3C2410_IISCON),
++ REGI(S3C24XX_VA_IIS, S3C2410_IISMOD),
++ REGI(S3C24XX_VA_IIS, S3C2410_IISPSR),
++ REGI(S3C24XX_VA_IIS, S3C2410_IISFCON),
++ REGI(S3C24XX_VA_IIS, S3C2410_IISFIFO),
++#endif
++
++ /* IRQ */
++ REGV(S3C2410_SRCPND),
++ REGV(S3C2410_INTMOD),
++ REGV(S3C2410_INTMSK),
++ REGV(S3C2410_PRIORITY),
++ REGV(S3C2410_INTPND),
++ REGV(S3C2410_INTOFFSET),
++ REGV(S3C2410_SUBSRCPND),
++ REGV(S3C2410_INTSUBMSK),
++ REGV(S3C2410_EINTMASK),
++ REGV(S3C2410_EINTPEND),
++
++ /* LCD */
++ REGV(S3C2410_LCDCON1),
++ REGV(S3C2410_LCDCON2),
++ REGV(S3C2410_LCDCON3),
++ REGV(S3C2410_LCDCON4),
++ REGV(S3C2410_LCDCON5),
++ REGV(S3C2410_LCDSADDR1),
++ REGV(S3C2410_LCDSADDR2),
++ REGV(S3C2410_LCDSADDR3),
++ REGV(S3C2410_REDLUT),
++ REGV(S3C2410_GREENLUT),
++ REGV(S3C2410_BLUELUT),
++ REGV(S3C2410_DITHMODE),
++ REGV(S3C2410_TPAL),
++ REGV(S3C2410_LCDINTPND),
++ REGV(S3C2410_LCDSRCPND),
++ REGV(S3C2410_LCDINTMSK),
++ REGV(S3C2410_LPCSEL),
++
++ // REGV(S3C2410_TFTPAL(x)),
++
++#if 0
++ /* Memory controller */
++ REGV(S3C2410_BWSCON),
++ REGV(S3C2410_BANKCON0),
++ REGV(S3C2410_BANKCON1),
++ REGV(S3C2410_BANKCON2),
++ REGV(S3C2410_BANKCON3),
++ REGV(S3C2410_BANKCON4),
++ REGV(S3C2410_BANKCON5),
++ REGV(S3C2410_BANKCON6),
++ REGV(S3C2410_BANKCON7),
++ REGV(S3C2410_REFRESH),
++ REGV(S3C2410_BANKSIZE),
++ REGV(S3C2410_MRSRB6),
++ REGV(S3C2410_MRSRB7),
++
++ /* Nand flash */
++ REGI(S3C24XX_VA_NAND, S3C2410_NFCONF),
++ REGI(S3C24XX_VA_NAND, S3C2410_NFCMD),
++ REGI(S3C24XX_VA_NAND, S3C2410_NFADDR),
++ REGI(S3C24XX_VA_NAND, S3C2410_NFDATA),
++ REGI(S3C24XX_VA_NAND, S3C2410_NFSTAT),
++ REGI(S3C24XX_VA_NAND, S3C2410_NFECC),
++
++ /* RTC */
++ REGV(S3C2410_RTCCON),
++ REGV(S3C2410_TICNT),
++ REGV(S3C2410_RTCALM),
++ REGV(S3C2410_ALMSEC),
++ REGV(S3C2410_ALMMIN),
++ REGV(S3C2410_ALMHOUR),
++ REGV(S3C2410_ALMDATE),
++ REGV(S3C2410_ALMMON),
++ REGV(S3C2410_ALMYEAR),
++ REGV(S3C2410_RTCRST),
++ REGV(S3C2410_RTCSEC),
++ REGV(S3C2410_RTCMIN),
++ REGV(S3C2410_RTCHOUR),
++ REGV(S3C2410_RTCDATE),
++ REGV(S3C2410_RTCDAY),
++ REGV(S3C2410_RTCMON),
++ REGV(S3C2410_RTCYEAR),
++#endif
++
++ /* Timer */
++ REGV(S3C2410_TCFG0),
++ REGV(S3C2410_TCFG1),
++ REGV(S3C2410_TCON),
++
++ /* USB Device */
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_FUNC_ADDR_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_PWR_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP_INT_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_USB_INT_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP_INT_EN_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_USB_INT_EN_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_FRAME_NUM1_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_FRAME_NUM2_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP0_FIFO_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP1_FIFO_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP2_FIFO_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP3_FIFO_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP4_FIFO_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP1_DMA_CON),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP1_DMA_UNIT),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP1_DMA_FIFO),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP1_DMA_TTC_L),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP1_DMA_TTC_M),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP1_DMA_TTC_H),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP2_DMA_CON),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP2_DMA_UNIT),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP2_DMA_FIFO),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP2_DMA_TTC_L),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP2_DMA_TTC_M),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP2_DMA_TTC_H),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP3_DMA_CON),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP3_DMA_UNIT),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP3_DMA_FIFO),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP3_DMA_TTC_L),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP3_DMA_TTC_M),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP3_DMA_TTC_H),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP4_DMA_CON),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP4_DMA_UNIT),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP4_DMA_FIFO),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP4_DMA_TTC_L),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP4_DMA_TTC_M),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP4_DMA_TTC_H),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_INDEX_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_MAXP_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_EP0_CSR_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_IN_CSR1_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_IN_CSR2_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_OUT_CSR1_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_OUT_CSR2_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_OUT_FIFO_CNT1_REG),
++ REGI(S3C24XX_VA_USBDEV, S3C2410_UDC_OUT_FIFO_CNT2_REG),
++
++ /* Watchdog */
++ REGV(S3C2410_WTCON),
++ REGV(S3C2410_WTDAT),
++ REGV(S3C2410_WTCNT),
++};
++
++static u32 regval[ARRAY_SIZE(reginfo)];
++
++void s3c2410_capture_regs(void)
++{
++ int i;
++
++ for (i = 0; i < ARRAY_SIZE(reginfo); i++)
++ regval[i] = readl(reginfo[i].va);
++}
++
++void s3c2410_dump_regs(void)
++{
++ int i;
++
++ for (i = 0; i < ARRAY_SIZE(reginfo); i++)
++ printk("%-20s = 0x%08x\n", reginfo[i].name, regval[i]);
++}
++
++/*
++ Local variables:
++ compile-command: "make -k -C ../../../.. linux "
++ c-basic-offset: 8
++ End:
++*/
+Index: linux-2.6.14/arch/arm/mach-s3c2410/Makefile
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/Makefile
++++ linux-2.6.14/arch/arm/mach-s3c2410/Makefile
+@@ -44,3 +44,5 @@ obj-$(CONFIG_MACH_OTOM) += mach-otom.o
+ obj-$(CONFIG_MACH_NEXCODER_2440) += mach-nexcoder.o
+
+ obj-y += gpio-sysfs.o
++obj-y += regdump.o
++
diff --git a/packages/linux/linux/acern30/s3c2410-nand-pm.patch b/packages/linux/linux/acern30/s3c2410-nand-pm.patch
new file mode 100644
index 0000000000..b53a2f2760
--- /dev/null
+++ b/packages/linux/linux/acern30/s3c2410-nand-pm.patch
@@ -0,0 +1,53 @@
+Index: linux-2.6.14/drivers/mtd/nand/s3c2410.c
+===================================================================
+--- linux-2.6.14.orig/drivers/mtd/nand/s3c2410.c
++++ linux-2.6.14/drivers/mtd/nand/s3c2410.c
+@@ -692,11 +692,39 @@ static int s3c2440_nand_probe(struct dev
+ return s3c24xx_nand_probe(dev, 1);
+ }
+
++#ifdef CONFIG_PM
++
++static int s3c2410_nand_suspend(struct device *dev, pm_message_t state)
++{
++ struct s3c2410_nand_info *info = to_nand_info(dev);
++
++ clk_disable(info->clk);
++
++ return 0;
++}
++
++static int s3c2410_nand_resume(struct device *dev)
++{
++ struct s3c2410_nand_info *info = to_nand_info(dev);
++
++ clk_enable(info->clk);
++ msleep(1);
++
++ return s3c2410_nand_inithw(info, dev);
++}
++
++#else
++#define s3c2410_nand_suspend NULL
++#define s3c2410_nand_resume NULL
++#endif
++
+ static struct device_driver s3c2410_nand_driver = {
+ .name = "s3c2410-nand",
+ .bus = &platform_bus_type,
+ .probe = s3c2410_nand_probe,
+ .remove = s3c2410_nand_remove,
++ .suspend = s3c2410_nand_suspend,
++ .resume = s3c2410_nand_resume,
+ };
+
+ static struct device_driver s3c2440_nand_driver = {
+@@ -704,6 +732,8 @@ static struct device_driver s3c2440_nand
+ .bus = &platform_bus_type,
+ .probe = s3c2440_nand_probe,
+ .remove = s3c2410_nand_remove,
++ .suspend = s3c2410_nand_suspend,
++ .resume = s3c2410_nand_resume,
+ };
+
+ static int __init s3c2410_nand_init(void)
diff --git a/packages/linux/linux/acern30/s3c2410_lcd-pm.c b/packages/linux/linux/acern30/s3c2410_lcd-pm.c
new file mode 100644
index 0000000000..304baf385c
--- /dev/null
+++ b/packages/linux/linux/acern30/s3c2410_lcd-pm.c
@@ -0,0 +1,80 @@
+Index: linux-2.6.14/drivers/video/backlight/s3c2410_lcd.c
+===================================================================
+--- linux-2.6.14.orig/drivers/video/backlight/s3c2410_lcd.c
++++ linux-2.6.14/drivers/video/backlight/s3c2410_lcd.c
+@@ -248,10 +248,75 @@ static int s3c2410bl_remove(struct devic
+
+ }
+
++#ifdef CONFIG_PM
++
++static int s3c2410bl_suspend(struct device *dev, pm_message_t state)
++{
++ struct s3c2410_bl_mach_info *info =
++ (struct s3c2410_bl_mach_info *)dev->platform_data;
++
++ if (info) {
++ if (info->backlight_power)
++ info->backlight_power(0);
++ if (info->lcd_power)
++ info->lcd_power(0);
++ }
++
++ return 0;
++}
++
++static int s3c2410bl_resume(struct device *dev)
++{
++ struct s3c2410_bl_mach_info *info =
++ (struct s3c2410_bl_mach_info *)dev->platform_data;
++
++ if (info) {
++ if (info->lcd_power) {
++ switch(info->lcd_power_value) {
++ case FB_BLANK_NORMAL:
++ case FB_BLANK_POWERDOWN:
++ info->lcd_power(0);
++ break;
++ default:
++ case FB_BLANK_VSYNC_SUSPEND:
++ case FB_BLANK_HSYNC_SUSPEND:
++ case FB_BLANK_UNBLANK:
++ info->lcd_power(1);
++ break;
++ }
++ }
++ if (info->backlight_power) {
++ switch(info->backlight_power_value) {
++ case FB_BLANK_NORMAL:
++ case FB_BLANK_VSYNC_SUSPEND:
++ case FB_BLANK_HSYNC_SUSPEND:
++ case FB_BLANK_POWERDOWN:
++ info->backlight_power(0);
++ break;
++ default:
++ case FB_BLANK_UNBLANK:
++ info->backlight_power(1);
++ break;
++ }
++ }
++ if (info->set_brightness)
++ info->set_brightness(info->brightness_value);
++ }
++
++ return 0;
++}
++
++#else
++#define s3c2410bl_suspend NULL
++#define s3c2410bl_resume NULL
++#endif
++
+ static struct device_driver s3c2410bl_driver = {
+ .name = "s3c2410-bl",
+ .bus = &platform_bus_type,
+ .probe = s3c2410bl_probe,
++ .suspend = s3c2410bl_suspend,
++ .resume = s3c2410bl_resume,
+ .remove = s3c2410bl_remove,
+ };
+
diff --git a/packages/linux/linux/acern30/s3c2410_ts-pm.patch b/packages/linux/linux/acern30/s3c2410_ts-pm.patch
new file mode 100644
index 0000000000..ef89f7042f
--- /dev/null
+++ b/packages/linux/linux/acern30/s3c2410_ts-pm.patch
@@ -0,0 +1,73 @@
+Index: linux-2.6.14/drivers/input/touchscreen/s3c2410_ts.c
+===================================================================
+--- linux-2.6.14.orig/drivers/input/touchscreen/s3c2410_ts.c
++++ linux-2.6.14/drivers/input/touchscreen/s3c2410_ts.c
+@@ -56,6 +56,8 @@
+ /* For ts.dev.id.version */
+ #define S3C2410TSVERSION 0x0101
+
++#define TSC_SLEEP (S3C2410_ADCTSC_PULL_UP_DISABLE | S3C2410_ADCTSC_XY_PST(0))
++
+ #define WAIT4INT(x) (((x)<<8) | \
+ S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
+ S3C2410_ADCTSC_XY_PST(3))
+@@ -321,10 +323,59 @@ static int s3c2410ts_remove(struct devic
+ return 0;
+ }
+
++#ifdef CONFIG_PM
++
++static int s3c2410ts_suspend(struct device *dev, pm_message_t state)
++{
++ writel(TSC_SLEEP, base_addr+S3C2410_ADCTSC);
++ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_STDBM,
++ base_addr+S3C2410_ADCCON);
++
++ disable_irq(IRQ_ADC);
++ disable_irq(IRQ_TC);
++
++ clk_disable(adc_clock);
++
++ return 0;
++}
++
++static int s3c2410ts_resume(struct device *dev)
++{
++ struct s3c2410_ts_mach_info *info =
++ (struct s3c2410_ts_mach_info *)dev->platform_data;
++
++ clk_enable(adc_clock);
++ msleep(1);
++
++ enable_irq(IRQ_ADC);
++ enable_irq(IRQ_TC);
++
++ if ((info->presc&0xff) > 0)
++ writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),\
++ base_addr+S3C2410_ADCCON);
++ else
++ writel(0,base_addr+S3C2410_ADCCON);
++
++ /* Initialise registers */
++ if ((info->delay&0xffff) > 0)
++ writel(info->delay & 0xffff, base_addr+S3C2410_ADCDLY);
++
++ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
++
++ return 0;
++}
++
++#else
++#define s3c2410ts_suspend NULL
++#define s3c2410ts_resume NULL
++#endif
++
+ static struct device_driver s3c2410ts_driver = {
+ .name = "s3c2410-ts",
+ .bus = &platform_bus_type,
+ .probe = s3c2410ts_probe,
++ .suspend = s3c2410ts_suspend,
++ .resume = s3c2410ts_resume,
+ .remove = s3c2410ts_remove,
+ };
+
diff --git a/packages/linux/linux/acern30/s3c2410fb-resume.patch b/packages/linux/linux/acern30/s3c2410fb-resume.patch
new file mode 100644
index 0000000000..b4727454cf
--- /dev/null
+++ b/packages/linux/linux/acern30/s3c2410fb-resume.patch
@@ -0,0 +1,13 @@
+Index: linux-2.6.14/drivers/video/s3c2410fb.c
+===================================================================
+--- linux-2.6.14.orig/drivers/video/s3c2410fb.c
++++ linux-2.6.14/drivers/video/s3c2410fb.c
+@@ -569,7 +569,7 @@ int s3c2410fb_init_registers(struct s3c2
+
+ local_irq_restore(flags);
+
+- writel(fbi->regs.lcdcon1, S3C2410_LCDCON1);
++ writel(fbi->regs.lcdcon1 & ~S3C2410_LCDCON1_ENVID, S3C2410_LCDCON1);
+ writel(fbi->regs.lcdcon2, S3C2410_LCDCON2);
+ writel(fbi->regs.lcdcon3, S3C2410_LCDCON3);
+ writel(fbi->regs.lcdcon4, S3C2410_LCDCON4);
diff --git a/packages/linux/linux/acern30/s3c2410mci-pm.patch b/packages/linux/linux/acern30/s3c2410mci-pm.patch
new file mode 100644
index 0000000000..33a88713cb
--- /dev/null
+++ b/packages/linux/linux/acern30/s3c2410mci-pm.patch
@@ -0,0 +1,84 @@
+Index: linux-2.6.14/drivers/mmc/s3c2410mci.c
+===================================================================
+--- linux-2.6.14.orig/drivers/mmc/s3c2410mci.c
++++ linux-2.6.14/drivers/mmc/s3c2410mci.c
+@@ -614,7 +614,8 @@ static int s3c2410sdi_probe(struct devic
+ goto probe_iounmap;
+ }
+
+- s3c2410_gpio_cfgpin(S3C2410_GPF5, S3C2410_GPF5_EINT5);
++ // This should be parametrised
++ // s3c2410_gpio_cfgpin(S3C2410_GPF5, S3C2410_GPF5_EINT5);
+ set_irq_type(host->irq_cd, IRQT_BOTHEDGE);
+
+ if(request_irq(host->irq_cd, s3c2410sdi_irq_cd, 0, DRIVER_NAME, host)) {
+@@ -732,12 +733,57 @@ static int s3c2410sdi_remove(struct devi
+ return 0;
+ }
+
++#ifdef CONFIG_PM
++static int s3c2410mci_suspend(struct device *dev, pm_message_t state)
++{
++ struct mmc_host *mmc = dev_get_drvdata(dev);
++ int ret = 0;
++
++ if (mmc) {
++ struct s3c2410sdi_host *host = mmc_priv(mmc);
++
++ ret = mmc_suspend_host(mmc, state);
++
++ clk_disable(host->clk);
++
++ disable_irq(host->irq_cd);
++ disable_irq(host->irq);
++ }
++
++ return ret;
++}
++
++static int s3c2410mci_resume(struct device *dev)
++{
++ struct mmc_host *mmc = dev_get_drvdata(dev);
++ int ret = 0;
++
++ if (mmc) {
++ struct s3c2410sdi_host *host = mmc_priv(mmc);
++
++ enable_irq(host->irq_cd);
++ enable_irq(host->irq);
++
++ clk_enable(host->clk);
++
++ ret = mmc_resume_host(mmc);
++ }
++
++ return ret;
++}
++#else
++#define s3c2410mci_suspend NULL
++#define s3c2410mci_resume NULL
++#endif
++
+ static struct device_driver s3c2410sdi_driver =
+ {
+ .name = "s3c2410-sdi",
+ .bus = &platform_bus_type,
+ .probe = s3c2410sdi_probe,
+ .remove = s3c2410sdi_remove,
++ .suspend = s3c2410mci_suspend,
++ .resume = s3c2410mci_resume,
+ };
+
+ static int __init s3c2410sdi_init(void)
+Index: linux-2.6.14/drivers/mmc/mmc.c
+===================================================================
+--- linux-2.6.14.orig/drivers/mmc/mmc.c
++++ linux-2.6.14/drivers/mmc/mmc.c
+@@ -1263,6 +1263,7 @@ EXPORT_SYMBOL(mmc_suspend_host);
+ */
+ int mmc_resume_host(struct mmc_host *host)
+ {
++ mmc_power_up(host);
+ mmc_detect_change(host, 0);
+
+ return 0;
diff --git a/packages/linux/linux/acern30/series b/packages/linux/linux/acern30/series
new file mode 100644
index 0000000000..16b58a1144
--- /dev/null
+++ b/packages/linux/linux/acern30/series
@@ -0,0 +1,27 @@
+v2.6.14-gitcurrent.patch
+v2.6.14-full.patch
+n30-cleanup.patch
+n35.patch
+n30-lcd.patch
+n30-backlight.patch
+n30-ts.patch
+n30-buttons.patch
+n30-mmc.patch
+n30-mmc-power.patch
+n30-mmc-wprotect.patch
+n30-nand.patch
+n30-usbstart.patch
+n30-hardcode.patch
+n30-apm.patch
+s3c2410fb-resume.patch
+s3c2410_ts-pm.patch
+s3c2410_lcd-pm.c
+s3c2410mci-pm.patch
+s3c2410-nand-pm.patch
+n30-nand-hack.patch
+mmc-plus.patch
+gpio-sysfs.patch
+regdump.patch
+n30-pm.patch
+spi.patch
+wingel-hacking.patch
diff --git a/packages/linux/linux/acern30/spi.patch b/packages/linux/linux/acern30/spi.patch
new file mode 100644
index 0000000000..f835f82d32
--- /dev/null
+++ b/packages/linux/linux/acern30/spi.patch
@@ -0,0 +1,121 @@
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -52,6 +52,7 @@
+ #include <asm/arch/regs-gpio.h>
+ #include <asm/arch/regs-lcd.h>
+ #include <asm/arch/regs-timer.h>
++#include <asm/arch/regs-spi.h>
+ #include <asm/arch/irqs.h>
+ #include <asm/arch/iic.h>
+ #include <asm/arch/fb.h>
+@@ -372,6 +373,7 @@ static struct platform_device *n30_devic
+ &s3c_device_usbgadget,
+ &s3c_device_sdi,
+ &s3c_device_nand,
++ &s3c_device_spi1,
+ };
+
+ static struct s3c2410_platform_i2c n30_i2ccfg = {
+@@ -712,6 +714,90 @@ static int n30_usbstart_thread(void *unu
+ return 0;
+ }
+
++static int spi_thread(void *regs)
++{
++ unsigned sptdat1 = ~0, sprdat1 = ~0, spsta1 = ~0;
++ unsigned value;
++
++ writel(0x01, regs + S3C2410_SPCON);
++ writel(0x02, regs + S3C2410_SPPIN);
++
++ s3c2410_gpio_cfgpin(S3C2410_GPG6, S3C2410_GPG6_SPIMOSI1);
++ s3c2410_gpio_cfgpin(S3C2410_GPG7, S3C2410_GPG7_SPICLK1);
++
++ s3c2410_gpio_cfgpin(S3C2410_GPG3, 0x3 << 6);
++
++ printk("GPGCON=0x%x\n", readl(S3C2410_GPGCON));
++
++ msleep(10);
++
++ while (1) {
++ value = readl(regs + S3C2410_SPTDAT);
++ if (sptdat1 != value) {
++ printk(KERN_INFO "SPTDAT1=0x%x\n", value);
++ sptdat1 = value;
++ }
++ value = readl(regs + S3C2410_SPRDAT);
++ if (sprdat1 != value) {
++ printk(KERN_INFO "SPRDAT1=0x%x\n", value);
++ sprdat1 = value;
++ }
++ value = readl(regs + S3C2410_SPSTA);
++ if (spsta1 != value) {
++ printk(KERN_INFO "SPSTA1=0x%x\n", value);
++ spsta1 = value;
++ }
++
++ msleep(10);
++ }
++}
++
++static int s3c24xx_spi_probe(struct device *dev)
++{
++ struct platform_device *pdev = to_platform_device(dev);
++ struct resource *res;
++ int ret;
++ void *regs;
++ struct resource *ioarea;
++
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (res == NULL) {
++ dev_err(dev, "cannot find IO resource\n");
++ ret = -ENOENT;
++ goto out;
++ }
++
++ ioarea = request_mem_region(res->start, (res->end-res->start)+1,
++ pdev->name);
++ if (ioarea == NULL) {
++ dev_err(dev, "cannot request IO\n");
++ ret = -ENXIO;
++ goto out;
++ }
++
++ regs = ioremap(res->start, (res->end-res->start)+1);
++ if (regs == NULL) {
++ dev_err(dev, "cannot map IO\n");
++ ret = -ENXIO;
++ goto out;
++ }
++
++ dev_info(dev, "registers %p (%p, %p)\n", regs, ioarea, res);
++
++ kthread_run(spi_thread, regs, "spi_debug");
++
++ ret = 0;
++
++ out:
++ return ret;
++}
++
++static struct device_driver s3c24xx_spi_driver = {
++ .name = "s3c2410-spi",
++ .bus = &platform_bus_type,
++ .probe = s3c24xx_spi_probe,
++};
++
+ #ifdef CONFIG_APM
+ static void n30_get_power_status(struct apm_power_info *info)
+ {
+@@ -764,6 +850,9 @@ static void __init n30_init(void)
+ memcpy_toio(N30_RESUME_VA, (void *)n30_resume,
+ &n30_resume_end - (void *)n30_resume);
+
++ if (driver_register(&s3c24xx_spi_driver) < 0)
++ printk(KERN_ERR "failed to register spi driver\n");
++
+ /* Clear any locks and write protects on the flash. */
+ s3c2410_gpio_setpin(S3C2410_GPC5, 1);
+ msleep(1);
diff --git a/packages/linux/linux/acern30/wingel-hacking.patch b/packages/linux/linux/acern30/wingel-hacking.patch
new file mode 100644
index 0000000000..e87de5a460
--- /dev/null
+++ b/packages/linux/linux/acern30/wingel-hacking.patch
@@ -0,0 +1,1146 @@
+This patch contains some hacks that I'm playing around with right now.
+
+This isn't anything that should be merged into the official kernel.
+
+Index: linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/mach-n30.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/mach-n30.c
+@@ -22,6 +22,12 @@
+ * published by the Free Software Foundation.
+ */
+
++// #define USBHACK 1
++#define SPIHACK 1
++
++void s3c2410_capture_regs(void);
++void s3c2410_dump_regs(void);
++
+ #include <linux/kernel.h>
+ #include <linux/types.h>
+ #include <linux/interrupt.h>
+@@ -272,14 +278,18 @@ static struct s3c2410_button n35_buttons
+
+ { IRQ_EINT13, S3C2410_GPG5, S3C2410_GPG5_EINT13, KEY_LEFT,
+ "Left_arrow", 0 },
++#ifndef SPIHACK
+ { IRQ_EINT14, S3C2410_GPG6, S3C2410_GPG6_EINT14, KEY_RIGHT,
+ "Right_arrow", 0 },
++#endif
+ { IRQ_EINT17, S3C2410_GPG9, S3C2410_GPG9_EINT17, KEY_UP,
+ "Up_arrow", 0 },
+ { IRQ_EINT16, S3C2410_GPG8, S3C2410_GPG8_EINT16, KEY_DOWN,
+ "Down_arrow", 0 },
++#ifndef SPIHACK
+ { IRQ_EINT15, S3C2410_GPG7, S3C2410_GPG7_EINT15, KEY_ENTER,
+ "Select", 0 },
++#endif
+
+ { IRQ_EINT7, S3C2410_GPF7, S3C2410_GPF7_EINT7, KEY_HOMEPAGE,
+ "Home", 0 },
+@@ -367,7 +377,6 @@ static struct platform_device *n30_devic
+ &s3c_device_usbgadget,
+ &s3c_device_sdi,
+ &s3c_device_nand,
+- &s3c_device_spi1,
+ };
+
+ static struct s3c2410_platform_i2c n30_i2ccfg = {
+@@ -382,6 +391,27 @@ static struct s3c24xx_board n30_board __
+ .devices_count = ARRAY_SIZE(n30_devices)
+ };
+
++static struct platform_device *n35_devices[] __initdata = {
++ &s3c_device_lcd,
++ &s3c_device_bl,
++ &s3c_device_ts,
++ &s3c_device_buttons,
++ &s3c_device_wdt,
++ &s3c_device_i2c,
++ &s3c_device_iis,
++ &s3c_device_usbgadget,
++ &s3c_device_sdi,
++ &s3c_device_nand,
++#ifdef SPIHACK
++ &s3c_device_spi1,
++#endif
++};
++
++static struct s3c24xx_board n35_board __initdata = {
++ .devices = n35_devices,
++ .devices_count = ARRAY_SIZE(n35_devices)
++};
++
+ /* Lots of hardcoded stuff, but it sets up the hardware in a useful
+ * state so that we can boot Linux directly from flash. */
+ static void __init n30_hwinit(void)
+@@ -674,7 +704,10 @@ static void __init n30_map_io(void)
+ n30_hwinit();
+ s3c24xx_init_clocks(0);
+ s3c24xx_init_uarts(n30_uartcfgs, ARRAY_SIZE(n30_uartcfgs));
+- s3c24xx_set_board(&n30_board);
++ if (machine_is_n30())
++ s3c24xx_set_board(&n30_board);
++ if (machine_is_n35())
++ s3c24xx_set_board(&n35_board);
+ }
+
+ static void __init n30_init_irq(void)
+@@ -710,90 +743,6 @@ static int n30_usbstart_thread(void *unu
+ return 0;
+ }
+
+-static int spi_thread(void *regs)
+-{
+- unsigned sptdat1 = ~0, sprdat1 = ~0, spsta1 = ~0;
+- unsigned value;
+-
+- writel(0x01, regs + S3C2410_SPCON);
+- writel(0x02, regs + S3C2410_SPPIN);
+-
+- s3c2410_gpio_cfgpin(S3C2410_GPG6, S3C2410_GPG6_SPIMOSI1);
+- s3c2410_gpio_cfgpin(S3C2410_GPG7, S3C2410_GPG7_SPICLK1);
+-
+- s3c2410_gpio_cfgpin(S3C2410_GPG3, 0x3 << 6);
+-
+- printk("GPGCON=0x%x\n", readl(S3C2410_GPGCON));
+-
+- msleep(10);
+-
+- while (1) {
+- value = readl(regs + S3C2410_SPTDAT);
+- if (sptdat1 != value) {
+- printk(KERN_INFO "SPTDAT1=0x%x\n", value);
+- sptdat1 = value;
+- }
+- value = readl(regs + S3C2410_SPRDAT);
+- if (sprdat1 != value) {
+- printk(KERN_INFO "SPRDAT1=0x%x\n", value);
+- sprdat1 = value;
+- }
+- value = readl(regs + S3C2410_SPSTA);
+- if (spsta1 != value) {
+- printk(KERN_INFO "SPSTA1=0x%x\n", value);
+- spsta1 = value;
+- }
+-
+- msleep(10);
+- }
+-}
+-
+-static int s3c24xx_spi_probe(struct device *dev)
+-{
+- struct platform_device *pdev = to_platform_device(dev);
+- struct resource *res;
+- int ret;
+- void *regs;
+- struct resource *ioarea;
+-
+- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+- if (res == NULL) {
+- dev_err(dev, "cannot find IO resource\n");
+- ret = -ENOENT;
+- goto out;
+- }
+-
+- ioarea = request_mem_region(res->start, (res->end-res->start)+1,
+- pdev->name);
+- if (ioarea == NULL) {
+- dev_err(dev, "cannot request IO\n");
+- ret = -ENXIO;
+- goto out;
+- }
+-
+- regs = ioremap(res->start, (res->end-res->start)+1);
+- if (regs == NULL) {
+- dev_err(dev, "cannot map IO\n");
+- ret = -ENXIO;
+- goto out;
+- }
+-
+- dev_info(dev, "registers %p (%p, %p)\n", regs, ioarea, res);
+-
+- kthread_run(spi_thread, regs, "spi_debug");
+-
+- ret = 0;
+-
+- out:
+- return ret;
+-}
+-
+-static struct device_driver s3c24xx_spi_driver = {
+- .name = "s3c2410-spi",
+- .bus = &platform_bus_type,
+- .probe = s3c24xx_spi_probe,
+-};
+-
+ #ifdef CONFIG_APM
+ static void n30_get_power_status(struct apm_power_info *info)
+ {
+@@ -825,6 +774,128 @@ static void n30_get_power_status(struct
+ }
+ #endif
+
++#define DEBUG_GPIO 1
++
++#ifdef DEBUG_GPIO
++static int n30_debug_thread(void *unused)
++{
++ int i;
++#define PIN(x) { x, #x }
++ static struct pin {
++ unsigned int pin;
++ const char *name;
++ } pins[] = {
++ PIN(S3C2410_GPA12),
++ PIN(S3C2410_GPB2),
++ PIN(S3C2410_GPB4),
++ PIN(S3C2410_GPB5),
++ PIN(S3C2410_GPB6),
++ PIN(S3C2410_GPB7),
++ PIN(S3C2410_GPC0),
++ PIN(S3C2410_GPC3),
++ PIN(S3C2410_GPC6),
++ PIN(S3C2410_GPC7),
++ PIN(S3C2410_GPC8),
++ PIN(S3C2410_GPD0),
++ PIN(S3C2410_GPD8),
++ PIN(S3C2410_GPD9),
++ PIN(S3C2410_GPD10),
++ PIN(S3C2410_GPE11),
++ PIN(S3C2410_GPE12),
++ PIN(S3C2410_GPE13),
++ PIN(S3C2410_GPF0),
++ PIN(S3C2410_GPF1),
++ PIN(S3C2410_GPF2),
++ PIN(S3C2410_GPF3),
++ PIN(S3C2410_GPG0),
++ PIN(S3C2410_GPG1),
++ PIN(S3C2410_GPG2),
++ PIN(S3C2410_GPG3),
++ PIN(S3C2410_GPG4),
++ PIN(S3C2410_GPH8),
++ };
++#undef PIN
++ enum { PIN_CNT = (sizeof(pins) / sizeof(struct pin)) };
++ static int values[PIN_CNT];
++ static int changes[PIN_CNT];
++
++ set_current_state(TASK_INTERRUPTIBLE);
++ schedule_timeout(1 * HZ);
++
++// s3c2410_dump_regs();
++
++ printk("AFTER\n");
++
++ s3c2410_capture_regs();
++
++// s3c2410_dump_regs();
++
++ for (i = 0; i < PIN_CNT; i++)
++ values[i] = s3c2410_gpio_getpin(pins[i].pin) ? 1 : 0;
++
++ printk("MISCCR=0x%08x\n", readl(S3C2410_MISCCR));
++
++ while (!kthread_should_stop()) {
++ for (i = 0; i < PIN_CNT; i++) {
++ int value = s3c2410_gpio_getpin(pins[i].pin) ? 1 : 0;
++
++ if (values[i] != value && changes[i] < 100) {
++ changes[i]++;
++ values[i] = value;
++ printk(KERN_CRIT "%s: %d (%d)\n", pins[i].name, value, changes[i]);
++ }
++ }
++
++ if (0) {
++ s3c2410_gpio_pullup(S3C2410_GPE15, 1);
++ s3c2410_gpio_cfgpin(S3C2410_GPE15, S3C2410_GPE15_OUTP);
++ s3c2410_gpio_setpin(S3C2410_GPE15, !s3c2410_gpio_getpin(S3C2410_GPE15));
++ }
++
++ if (0)
++ s3c2410_gpio_setpin(S3C2410_GPB3, !s3c2410_gpio_getpin(S3C2410_GPB3));
++
++ if (1) {
++ static int last_f0;
++ int f0 = s3c2410_gpio_getpin(S3C2410_GPF0);
++
++ if (last_f0 != f0) {
++ last_f0 = f0;
++ if (!f0) {
++ int r;
++ printk("entering suspend\n");
++ r = pm_suspend(PM_SUSPEND_MEM);
++ printk("after suspend %d\n", r);
++ }
++ }
++ }
++
++
++ if (0) {
++ static int last_f6;
++ int f6 = s3c2410_gpio_getpin(S3C2410_GPF6);
++
++ if (last_f6 != f6) {
++ last_f6 = f6;
++ if (!f6) {
++ if (s3c2410_gpio_getcfg(S3C2410_GPB6) != S3C2410_GPB6_OUTP) {
++ printk("B6 configured as output");
++ s3c2410_gpio_cfgpin(S3C2410_GPB6, S3C2410_GPB6_OUTP);
++ } else {
++ printk("B6 configured as input");
++ s3c2410_gpio_cfgpin(S3C2410_GPB6, S3C2410_GPB6_INP);
++ }
++ }
++ }
++ }
++
++ msleep(10);
++ }
++
++ return 0;
++}
++#endif
++
+ static void __init n30_init(void)
+ {
+ s3c24xx_fb_set_platdata(&n30_lcdcfg);
+@@ -846,9 +917,6 @@ static void __init n30_init(void)
+ memcpy_toio(N30_RESUME_VA, (void *)n30_resume,
+ &n30_resume_end - (void *)n30_resume);
+
+- if (driver_register(&s3c24xx_spi_driver) < 0)
+- printk(KERN_ERR "failed to register spi driver\n");
+-
+ /* Clear any locks and write protects on the flash. */
+ s3c2410_gpio_setpin(S3C2410_GPC5, 1);
+ msleep(1);
+@@ -861,6 +929,8 @@ static void __init n30_init(void)
+ #ifdef CONFIG_APM
+ apm_get_power_status = n30_get_power_status;
+ #endif
++
++ kthread_run(n30_debug_thread, NULL, "n30_debug");
+ }
+
+ MACHINE_START(N30, "Acer-N30")
+Index: linux-2.6.14/arch/arm/mach-s3c2410/Makefile
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/Makefile
++++ linux-2.6.14/arch/arm/mach-s3c2410/Makefile
+@@ -46,3 +46,5 @@ obj-$(CONFIG_MACH_NEXCODER_2440) += mach
+ obj-y += gpio-sysfs.o
+ obj-y += regdump.o
+
++obj-m += spi-int.o
++obj-m += spi-dma.o
+Index: linux-2.6.14/arch/arm/mach-s3c2410/spi-int.c
+===================================================================
+--- /dev/null
++++ linux-2.6.14/arch/arm/mach-s3c2410/spi-int.c
+@@ -0,0 +1,261 @@
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/interrupt.h>
++#include <linux/init.h>
++#include <linux/device.h>
++#include <linux/kthread.h>
++#include <linux/delay.h>
++
++#include <asm/io.h>
++#include <asm/irq.h>
++
++#include <asm/hardware/clock.h>
++
++#include <asm/arch/regs-gpio.h>
++#include <asm/arch/regs-spi.h>
++#include <asm/arch/regs-irq.h>
++
++struct spi_info {
++ void *regs;
++ struct device *dev;
++ struct clk *clk;
++ struct resource *ioarea;
++ struct resource *irq;
++ struct task_struct *debug_thread;
++};
++
++static int spi_debug_thread(void *data)
++{
++ struct spi_info *info = data;
++ unsigned sptdat1 = ~0, sprdat1 = ~0, spsta1 = ~0;
++ unsigned value;
++
++ while (!kthread_should_stop()) {
++ if (1) {
++ value = readl(info->regs + S3C2410_SPTDAT);
++ if (sptdat1 != value) {
++ printk(KERN_INFO "SPTDAT1=0x%x\n", value);
++ sptdat1 = value;
++ }
++ value = readl(info->regs + S3C2410_SPRDAT);
++ if (sprdat1 != value) {
++ printk(KERN_INFO "SPRDAT1=0x%x\n", value);
++ sprdat1 = value;
++ }
++ value = readl(info->regs + S3C2410_SPSTA);
++ if (spsta1 != value) {
++ printk("SRCPND=0x%08x\n", readl(S3C2410_SRCPND));
++ printk("INTMOD=0x%08x\n", readl(S3C2410_INTMOD));
++ printk("INTMSK=0x%08x\n", readl(S3C2410_INTMSK));
++ printk("INTPND=0x%08x\n", readl(S3C2410_INTPND));
++
++ printk(KERN_INFO "SPSTA1=0x%x\n", value);
++ spsta1 = value;
++ }
++ }
++ if (1) {
++ if (readl(info->regs + S3C2410_SPSTA) & S3C2410_SPSTA_READY) {
++ value = readl(info->regs + S3C2410_SPRDAT);
++ printk("DAT=0x%02x\n", value);
++ writel(1, info->regs + S3C2410_SPTDAT);
++ }
++ }
++
++ msleep(1);
++ }
++
++ return 0;
++}
++
++static irqreturn_t spi_int_irq(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct spi_info *info = dev_id;
++ unsigned long status;
++
++ status = readl(info->regs + S3C2410_SPSTA);
++
++ if (status & S3C2410_SPSTA_READY) {
++ printk("INT %02x\n", readb(info->regs + S3C2410_SPRDAT));
++ writeb(0xff, info->regs + S3C2410_SPTDAT);
++ }
++
++ return IRQ_HANDLED;
++}
++
++static void spi_int_free(struct spi_info *info)
++{
++ if (!info)
++ return;
++
++ if (info->debug_thread)
++ kthread_stop(info->debug_thread);
++ if (info->irq)
++ free_irq(info->irq->start, info);
++ if (info->regs)
++ iounmap(info->regs);
++ if (info->ioarea) {
++ release_resource(info->ioarea);
++ kfree(info->ioarea);
++ }
++ if (info->clk) {
++ clk_unuse(info->clk);
++ clk_disable(info->clk);
++ }
++ kfree(info);
++}
++
++static int spi_int_probe(struct device *dev)
++{
++ struct platform_device *pdev = to_platform_device(dev);
++ int ret;
++ struct spi_info *info;
++ struct resource *res;
++
++ printk("spi_int_probe\n");
++
++ info = kmalloc(sizeof(struct spi_info), GFP_KERNEL);
++ if (!info) {
++ dev_err(dev, "failed to allocate info structure\n");
++ ret = -ENOMEM;
++ goto out;
++ }
++ memset(info, 0, sizeof(*info));
++ info->dev = dev;
++
++ dev_info(dev, "got info %p\n", info);
++
++ info->clk = clk_get(dev, "spi");
++ if (IS_ERR(info->clk)) {
++ dev_err(dev, "clk_get failed\n");
++ ret = -ENOENT;
++ goto out;
++ }
++
++ dev_dbg(dev, "clk %p\n", info->clk);
++
++ clk_use(info->clk);
++ clk_enable(info->clk);
++
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!res) {
++ dev_err(dev, "unable to find registers\n");
++ ret = -ENOENT;
++ goto out;
++ }
++
++ dev_info(dev, "got res %p\n", res);
++
++ info->ioarea = request_mem_region(res->start,
++ (res->end-res->start)+1,
++ pdev->name);
++ if (!info->ioarea) {
++ dev_err(dev, "request_mem_region failed\n");
++ ret = -ENXIO;
++ goto out;
++ }
++
++ dev_info(dev, "got ioarea %p\n", info->ioarea);
++
++ info->regs = ioremap(res->start, (res->end-res->start)+1);
++ if (!info->regs) {
++ dev_err(dev, "ioremap failed\n");
++ ret = -ENXIO;
++ goto out;
++ }
++
++ dev_info(dev, "got regs %p\n", info->regs);
++
++ res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
++ if (!res) {
++ dev_err(dev, "unable to find irq\n");
++ ret = -ENOENT;
++ goto out;
++ }
++
++ writel(S3C2410_SPCON_SMOD_INT /* | S3C2410_SPCON_TAGD */,
++ info->regs + S3C2410_SPCON);
++ writel(S3C2410_SPPIN_RESERVED, info->regs + S3C2410_SPPIN);
++
++ s3c2410_gpio_cfgpin(S3C2410_GPG5, S3C2410_GPG5_SPIMISO1);
++ s3c2410_gpio_cfgpin(S3C2410_GPG6, S3C2410_GPG6_SPIMOSI1);
++ s3c2410_gpio_cfgpin(S3C2410_GPG7, S3C2410_GPG7_SPICLK1);
++
++ s3c2410_gpio_cfgpin(S3C2410_GPG3, 0x3 << 6);
++
++ ret = request_irq(res->start, spi_int_irq, 0, pdev->name, info);
++ if (ret) {
++ dev_err(dev, "request_irq failed\n");
++ goto out;
++ }
++ info->irq = res;
++
++ dev_info(dev, "got irq %ld\n", info->irq->start);
++
++ dev_info(dev, "SPI driver active\n");
++
++ dev_set_drvdata(dev, info);
++ ret = 0;
++
++ writeb(0x00, info->regs + S3C2410_SPTDAT);
++
++ if (0) {
++ info->debug_thread = kthread_run(spi_debug_thread, info,
++ "spi_debug_thread");
++ }
++
++ printk("SRCPND=0x%08x\n", readl(S3C2410_SRCPND));
++ printk("INTMOD=0x%08x\n", readl(S3C2410_INTMOD));
++ printk("INTMSK=0x%08x\n", readl(S3C2410_INTMSK));
++ printk("INTPND=0x%08x\n", readl(S3C2410_INTPND));
++ printk("EINTMASK=0x%08x\n", readl(S3C2410_EINTMASK));
++
++ printk("SPCON=0x%08x\n", readl(info->regs + S3C2410_SPCON));
++ __raw_writel(S3C2410_SPCON_SMOD_INT | S3C2410_SPCON_TAGD,
++ info->regs + S3C2410_SPCON);
++ printk("SPCON=0x%08x\n", readl(info->regs + S3C2410_SPCON));
++ printk("FOO=0x%08x\n", S3C2410_SPCON_SMOD_INT);
++
++ out:
++ if (ret)
++ spi_int_free(info);
++
++ return ret;
++}
++
++static int spi_int_remove(struct device *dev)
++{
++ struct spi_info *info = dev_get_drvdata(dev);
++
++ dev_set_drvdata(dev, NULL);
++
++ spi_int_free(info);
++
++ return 0;
++}
++
++static struct device_driver spi_int_driver = {
++ .name = "s3c2410-spi",
++ .bus = &platform_bus_type,
++ .probe = spi_int_probe,
++ .remove = spi_int_remove,
++};
++
++static int __init spi_int_init(void)
++{
++ printk("SPI interrput driver loaded\n");
++
++ return driver_register(&spi_int_driver);
++}
++
++static void __exit spi_int_exit(void)
++{
++ driver_unregister(&spi_int_driver);
++}
++
++module_init(spi_int_init);
++module_exit(spi_int_exit);
++
++MODULE_DESCRIPTION("S3C2410 interrupt driven SPI driver");
++MODULE_AUTHOR("Christer Weinigel <christer@weinigel.se>");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.14/arch/arm/mach-s3c2410/devs.c
+===================================================================
+--- linux-2.6.14.orig/arch/arm/mach-s3c2410/devs.c
++++ linux-2.6.14/arch/arm/mach-s3c2410/devs.c
+@@ -400,11 +400,17 @@ static struct resource s3c_spi0_resource
+
+ };
+
++static u64 s3c_device_spi0_dmamask = 0xffffffffUL;
++
+ struct platform_device s3c_device_spi0 = {
+ .name = "s3c2410-spi",
+ .id = 0,
+ .num_resources = ARRAY_SIZE(s3c_spi0_resource),
+ .resource = s3c_spi0_resource,
++ .dev = {
++ .dma_mask = &s3c_device_spi0_dmamask,
++ .coherent_dma_mask = 0xffffffffUL
++ }
+ };
+
+ EXPORT_SYMBOL(s3c_device_spi0);
+@@ -425,11 +431,17 @@ static struct resource s3c_spi1_resource
+
+ };
+
++static u64 s3c_device_spi1_dmamask = 0xffffffffUL;
++
+ struct platform_device s3c_device_spi1 = {
+ .name = "s3c2410-spi",
+ .id = 1,
+ .num_resources = ARRAY_SIZE(s3c_spi1_resource),
+ .resource = s3c_spi1_resource,
++ .dev = {
++ .dma_mask = &s3c_device_spi1_dmamask,
++ .coherent_dma_mask = 0xffffffffUL
++ }
+ };
+
+ EXPORT_SYMBOL(s3c_device_spi1);
+Index: linux-2.6.14/arch/arm/mach-s3c2410/spi-dma.c
+===================================================================
+--- /dev/null
++++ linux-2.6.14/arch/arm/mach-s3c2410/spi-dma.c
+@@ -0,0 +1,498 @@
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/interrupt.h>
++#include <linux/init.h>
++#include <linux/device.h>
++#include <linux/kthread.h>
++#include <linux/delay.h>
++#include <linux/dma-mapping.h>
++#include <linux/spinlock.h>
++
++#include <asm/uaccess.h>
++#include <asm/dma.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++
++#include <asm/hardware/clock.h>
++
++#include <asm/arch/dma.h>
++#include <asm/arch/regs-gpio.h>
++#include <asm/arch/regs-spi.h>
++
++#define BUFFER_SIZE (1024*1024)
++#define CHUNK_SIZE (64*1024)
++#define NUM_CHUNKS (BUFFER_SIZE / CHUNK_SIZE)
++
++static char spi_dma_name[] = "s3c2410-spi-dma-reader";
++
++static struct s3c2410_dma_client spi_dma_client = {
++ .name = spi_dma_name,
++};
++
++struct spi_dma_state {
++ struct spi_dma_info *info;
++ int status; /* 0=inactive, 1=running, <0 = -errno */
++ unsigned tail;
++};
++
++struct spi_chunk {
++ int index;
++ dma_addr_t handle;
++ struct spi_dma_info *info;
++};
++
++struct spi_dma_info {
++ void *cpu_addr;
++ dma_addr_t handle;
++ size_t size;
++
++ spinlock_t head_lock;
++ unsigned head;
++ wait_queue_head_t wait_q;
++
++ void *regs;
++
++ struct device *dev;
++ struct clk *clk;
++ struct resource *iomem;
++ int major;
++ dmach_t dmach;
++ int dcon;
++ int flushing;
++ char have_dma;
++ struct spi_chunk chunks[NUM_CHUNKS];
++};
++
++static void spi_queue_dma(struct spi_chunk *chunk)
++{
++ s3c2410_dma_enqueue(chunk->info->dmach,
++ chunk, chunk->handle, CHUNK_SIZE);
++}
++
++static void spi_dma_done_callback(s3c2410_dma_chan_t *dma_ch, void *buf_id,
++ int size, s3c2410_dma_buffresult_t result)
++{
++ struct spi_chunk *chunk = buf_id;
++ struct spi_dma_info *info = chunk->info;
++
++ if (info->flushing)
++ return;
++
++ spin_lock(&info->head_lock);
++ if ((info->head / CHUNK_SIZE) % NUM_CHUNKS != chunk->index)
++ dev_warn(info->dev, "out of sync, head=0x%x, index=0x%x\n",
++ info->head, chunk->index);
++
++ info->head += size;
++ spin_unlock(&info->head_lock);
++
++ wake_up_interruptible(&info->wait_q);
++
++ spi_queue_dma(chunk);
++}
++
++static struct spi_dma_info *global_info;
++
++static ssize_t spi_dma_read(struct file *file, char __user *buf,
++ size_t len, loff_t *ppos)
++{
++ DECLARE_WAITQUEUE(wait, current);
++ struct spi_dma_state *state = file->private_data;
++ struct spi_dma_info *info = state->info;
++ unsigned head;
++ ssize_t start, end;
++ ssize_t n;
++
++ if (state->status <= 0) {
++ if (state->status) {
++ state->status = 0;
++ return state->status;
++ }
++ state->tail = info->head;
++ state->status = 1;
++ }
++
++ add_wait_queue(&info->wait_q, &wait);
++ while (1) {
++ set_current_state(TASK_INTERRUPTIBLE);
++ if ((head = info->head) != state->tail)
++ break;
++ if (signal_pending(current))
++ break;
++ schedule();
++ }
++ remove_wait_queue(&info->wait_q, &wait);
++ set_current_state(TASK_RUNNING);
++
++ if (signal_pending(current))
++ return -EINTR;
++
++ if ((head - state->tail) > BUFFER_SIZE)
++ return -ENOBUFS;
++
++ start = state->tail % BUFFER_SIZE;
++ end = head % BUFFER_SIZE;
++
++ if (end > start)
++ n = end - start;
++ else
++ n = BUFFER_SIZE - start;
++
++ if (n > len)
++ n = len;
++
++ if (copy_to_user(buf, info->cpu_addr + start, n))
++ return -EFAULT;
++
++ state->tail += n;
++
++ return n;
++}
++
++static int spi_dma_mmap(struct file *file, struct vm_area_struct *vma)
++{
++ struct spi_dma_state *state = file->private_data;
++ struct spi_dma_info *info = state->info;
++
++ return dma_mmap_coherent(info->dev, vma,
++ info->cpu_addr, info->handle, info->size);
++}
++
++static int spi_dma_get_pos(struct spi_dma_info *info, unsigned *arg)
++{
++ if (put_user(info->head, arg))
++ return -EFAULT;
++
++ return 0;
++}
++
++static int spi_dma_wait_pos(struct spi_dma_info *info, unsigned *arg)
++{
++ DECLARE_WAITQUEUE(wait, current);
++ unsigned pos;
++ int diff;
++
++ if (get_user(pos, arg))
++ return -EFAULT;
++
++ add_wait_queue(&info->wait_q, &wait);
++ while (1) {
++ set_current_state(TASK_INTERRUPTIBLE);
++ if ((diff = info->head - pos) > 0)
++ break;
++ if (signal_pending(current))
++ break;
++ schedule();
++ }
++ remove_wait_queue(&info->wait_q, &wait);
++ set_current_state(TASK_RUNNING);
++
++ if (signal_pending(current))
++ return -EINTR;
++
++ if (diff > BUFFER_SIZE)
++ return -ENOBUFS;
++
++ if (put_user(info->head, arg))
++ return -EFAULT;
++
++ return 0;
++}
++
++#define SPI_DMA_IOCTL_BASE ('N' ^ 'M')
++#define SPI_DMA_GET_BUFFER_SIZE _IOR(SPI_DMA_IOCTL_BASE, 0, unsigned)
++#define SPI_DMA_GET_POS _IOR(SPI_DMA_IOCTL_BASE, 1, unsigned)
++#define SPI_DMA_WAIT_POS _IOWR(SPI_DMA_IOCTL_BASE, 2, unsigned)
++
++static int spi_dma_ioctl(struct inode *inode, struct file *file,
++ unsigned int cmd, unsigned long arg)
++{
++ struct spi_dma_state *state = file->private_data;
++ struct spi_dma_info *info = state->info;
++
++ switch (cmd) {
++ case SPI_DMA_GET_BUFFER_SIZE:
++ if (put_user((unsigned)BUFFER_SIZE, (unsigned *)arg))
++ return -EFAULT;
++ return 0;
++
++ case SPI_DMA_GET_POS:
++ return spi_dma_get_pos(info, (unsigned *)arg);
++
++ case SPI_DMA_WAIT_POS:
++ return spi_dma_wait_pos(info, (unsigned *)arg);
++
++ default:
++ return -EINVAL;
++ }
++}
++
++static int spi_dma_open(struct inode *inode, struct file *file)
++{
++ struct spi_dma_info *info = global_info;
++ struct spi_dma_state *state;
++ int ret;
++
++ state = kmalloc(sizeof(struct spi_dma_state), GFP_KERNEL);
++ if (!state)
++ return -ENOMEM;
++ state->info = info;
++ state->status = 0;
++ file->private_data = state;
++
++ ret = nonseekable_open(inode, file);
++
++ if (ret)
++ kfree(state);
++
++ return ret;
++}
++
++static int spi_dma_release(struct inode *inode, struct file *file)
++{
++ kfree(file->private_data);
++ return 0;
++}
++
++static struct file_operations spi_dma_fops = {
++ .owner = THIS_MODULE,
++ .read = spi_dma_read,
++ .open = spi_dma_open,
++ .release = spi_dma_release,
++ .mmap = spi_dma_mmap,
++ .ioctl = spi_dma_ioctl,
++};
++
++static void spi_dma_free(struct spi_dma_info *info)
++{
++ if (!info)
++ return;
++
++ if (info->major)
++ unregister_chrdev(info->major, "s3c2410-spi");
++ if (info->have_dma) {
++ int value;
++
++ printk("flush\n");
++ info->flushing = 1;
++ s3c2410_dma_ctrl(info->dmach, S3C2410_DMAOP_FLUSH);
++ msleep(100);
++ printk("stop\n");
++ s3c2410_dma_ctrl(info->dmach, S3C2410_DMAOP_STOP);
++ msleep(100);
++
++ printk("poll\n");
++ writel(S3C2410_SPCON_SMOD_POLL, info->regs + S3C2410_SPCON);
++ value = readb(info->regs + S3C2410_SPRDAT);
++ printk("%02x\n", value);
++
++ s3c2410_dma_free(info->dmach, &spi_dma_client);
++ }
++ if (info->regs)
++ iounmap(info->regs);
++ if (info->iomem) {
++ release_resource(info->iomem);
++ kfree(info->iomem);
++ }
++ if (info->clk) {
++ clk_unuse(info->clk);
++ clk_disable(info->clk);
++ }
++ if (info->cpu_addr) {
++ dma_free_coherent(info->dev,
++ info->size, info->cpu_addr,
++ info->handle);
++
++ }
++ kfree(info);
++}
++
++static int spi_dma_probe(struct device *dev)
++{
++ struct platform_device *pdev = to_platform_device(dev);
++ struct spi_dma_info *info;
++ struct resource *res;
++ int ret;
++ int i;
++
++ printk("spi_dma_probe\n");
++
++ info = kmalloc(sizeof(struct spi_dma_info), GFP_KERNEL);
++ if (!info) {
++ dev_err(dev, "failed to allocate info structure\n");
++ ret = -ENOMEM;
++ goto out;
++ }
++ memset(info, 0, sizeof(*info));
++ info->dev = dev;
++
++ dev_info(dev, "got info %p\n", info);
++
++ // TODO figure this out in a better way
++ info->dmach = 3;
++ info->dcon = S3C2410_DCON_CH3_SPI;
++ info->size = BUFFER_SIZE;
++
++ spin_lock_init(&info->head_lock);
++ init_waitqueue_head(&info->wait_q);
++
++ info->cpu_addr = dma_alloc_coherent(dev, info->size, &info->handle, GFP_KERNEL);
++ if (!info->cpu_addr) {
++ dev_err(dev, "failed to allocate DMA buffer\n");
++ ret = -ENOMEM;
++ goto out;
++ }
++
++ dev_info(dev, "got DMA buffer at %p, handle 0x%08lx, size %d\n",
++ info->cpu_addr, (long)info->handle,
++ info->size);
++
++ info->clk = clk_get(dev, "spi");
++ if (IS_ERR(info->clk)) {
++ dev_err(dev, "clk_get failed\n");
++ ret = -ENOENT;
++ goto out;
++ }
++
++ dev_dbg(dev, "clk %p\n", info->clk);
++
++ clk_use(info->clk);
++ clk_enable(info->clk);
++
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!res) {
++ dev_err(dev, "unable to find registers\n");
++ ret = -ENOENT;
++ goto out;
++ }
++
++ dev_info(dev, "got iomem %p\n", res);
++
++ info->iomem = request_mem_region(res->start,
++ (res->end-res->start)+1,
++ pdev->name);
++ if (!info->iomem) {
++ dev_err(dev, "request_mem_region failed\n");
++ ret = -ENXIO;
++ goto out;
++ }
++
++ dev_info(dev, "got iomem %p\n", info->iomem);
++
++ dev_info(dev, "res->start=0x%lx, res->end=0x%lx\n", res->start, res->end);
++ dev_info(dev, "iomem->start=0x%lx, iomem->end=0x%lx\n", info->iomem->start, info->iomem->end);
++
++ info->regs = ioremap(res->start, (res->end-res->start)+1);
++ if (!info->regs) {
++ dev_err(dev, "ioremap failed\n");
++ ret = -ENXIO;
++ goto out;
++ }
++
++ dev_info(dev, "got regs %p\n", info->regs);
++
++ if (s3c2410_dma_request(info->dmach, &spi_dma_client, NULL)) {
++ dev_err(dev, "unable to allocate dma channel\n");
++ ret = -ENOENT;
++ goto out;
++ }
++ info->have_dma = 1;
++
++ res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
++ if (!res) {
++ dev_err(dev, "unable to find irq\n");
++ ret = -ENOENT;
++ goto out;
++ }
++
++ ret = register_chrdev(0, "s3c2410-spi", &spi_dma_fops);
++ if (ret < 0) {
++ dev_err(dev, "unable to register character device\n");
++ goto out;
++ }
++ info->major = ret;
++ global_info = info;
++
++ dev_info(dev, "SPI driver active\n");
++
++ dev_set_drvdata(dev, info);
++
++ writel(S3C2410_SPCON_SMOD_DMA | S3C2410_SPCON_TAGD,
++ info->regs + S3C2410_SPCON);
++ writel(S3C2410_SPPIN_RESERVED, info->regs + S3C2410_SPPIN);
++
++ // s3c2410_gpio_cfgpin(S3C2410_GPG5, S3C2410_GPG5_SPIMISO1);
++ s3c2410_gpio_cfgpin(S3C2410_GPG6, S3C2410_GPG6_SPIMOSI1);
++ s3c2410_gpio_cfgpin(S3C2410_GPG7, S3C2410_GPG7_SPICLK1);
++
++ s3c2410_gpio_cfgpin(S3C2410_GPG3, 0x3 << 6);
++
++ s3c2410_dma_devconfig(info->dmach, S3C2410_DMASRC_HW,
++ S3C2410_DISRCC_INC | S3C2410_DISRCC_APB,
++ info->iomem->start + S3C2410_SPRDAT);
++
++ s3c2410_dma_config(info->dmach, 1, info->dcon);
++
++ s3c2410_dma_set_buffdone_fn(info->dmach, spi_dma_done_callback);
++ s3c2410_dma_setflags(info->dmach, S3C2410_DMAF_AUTOSTART);
++
++ writeb(0, info->regs + S3C2410_SPTDAT);
++ msleep(10);
++
++ for (i = 0; i < NUM_CHUNKS; i++) {
++ int offset = i * CHUNK_SIZE;
++ info->chunks[i].index = i;
++ info->chunks[i].handle = info->handle + offset;
++ info->chunks[i].info = info;
++ }
++
++ for (i = 0; i < NUM_CHUNKS; i++) {
++ spi_queue_dma(&info->chunks[i]);
++ }
++
++ ret = 0;
++
++ out:
++ if (ret)
++ spi_dma_free(info);
++
++ return ret;
++}
++
++static int spi_dma_remove(struct device *dev)
++{
++ struct spi_dma_info *info = dev_get_drvdata(dev);
++
++ dev_set_drvdata(dev, NULL);
++
++ spi_dma_free(info);
++
++ return 0;
++}
++
++static struct device_driver spi_dma_driver = {
++ .name = "s3c2410-spi",
++ .bus = &platform_bus_type,
++ .probe = spi_dma_probe,
++ .remove = spi_dma_remove,
++};
++
++static int __init spi_dma_init(void)
++{
++ printk("SPI dma driver loaded\n");
++
++ return driver_register(&spi_dma_driver);
++}
++
++static void __exit spi_dma_exit(void)
++{
++ driver_unregister(&spi_dma_driver);
++}
++
++module_init(spi_dma_init);
++module_exit(spi_dma_exit);
++
++MODULE_DESCRIPTION("S3C2410 DMA driven SPI driver");
++MODULE_AUTHOR("Christer Weinigel <christer@weinigel.se>");
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux/n2100/.mtn2git_empty b/packages/linux/linux/n2100/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux/n2100/.mtn2git_empty
diff --git a/packages/linux/linux/n2100/defconfig b/packages/linux/linux/n2100/defconfig
new file mode 100644
index 0000000000..26c07e9c99
--- /dev/null
+++ b/packages/linux/linux/n2100/defconfig
@@ -0,0 +1,1843 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20.2
+# Wed Mar 14 01:43:59 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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="-foonas"
+CONFIG_LOCALVERSION_AUTO=y
+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 is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+CONFIG_LBD=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF 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=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=y
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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
+
+#
+# IOP32x Implementation Options
+#
+
+#
+# IOP32x Platform Types
+#
+# CONFIG_MACH_GLANTANK is not set
+# CONFIG_ARCH_IQ80321 is not set
+# CONFIG_ARCH_IQ31244 is not set
+CONFIG_MACH_N2100=y
+CONFIG_PLAT_IOP=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_DCACHE_DISABLE 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=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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_CMDLINE="console=ttyS0,115200n8 root=/dev/mtdblock3 rootfstype=jffs2 rs5c372.probe=0,0x32"
+# 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=m
+CONFIG_BINFMT_MISC=m
+
+#
+# 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_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 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+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
+
+#
+# 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_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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+# CONFIG_IRNET is not set
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+CONFIG_SIGMATEL_FIR=m
+# CONFIG_TOSHIBA_FIR is not set
+# CONFIG_VLSI_FIR is not set
+CONFIG_MCS_FIR=m
+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=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+# 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 is not set
+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 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=y
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0xFF000000
+CONFIG_MTD_PHYSMAP_LEN=0x01000000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=1
+# CONFIG_MTD_ARM_INTEGRATOR 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 is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=40960
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+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 is not set
+# 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 is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_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=y
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+# CONFIG_SATA_VIA is not set
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+# CONFIG_PATA_ARTOP is not set
+# 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
+
+#
+# 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 is not set
+# CONFIG_MD_FAULTY is not set
+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 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=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+CONFIG_MII=m
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+CONFIG_E1000=y
+# CONFIG_E1000_NAPI is not set
+# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+CONFIG_R1000=y
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+# 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=m
+# 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=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_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLHC=m
+CONFIG_SLIP_SMART=y
+CONFIG_SLIP_MODE_SLIP6=y
+# 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 is not set
+# 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 is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_PCIPS2 is not set
+# CONFIG_SERIO_LIBPS2 is not set
+# 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_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_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=1
+CONFIG_SERIAL_8250_RUNTIME_UARTS=1
+# 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 is not set
+CONFIG_HW_RANDOM=m
+CONFIG_NVRAM=m
+# 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=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# 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=y
+CONFIG_I2C_ISA=m
+# 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 is not set
+CONFIG_SENSORS_PCF8574=m
+CONFIG_SENSORS_PCA9539=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_MAX6875=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# 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=m
+CONFIG_SENSORS_ABITUGURU=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1031=m
+CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_FSCHER=m
+CONFIG_SENSORS_FSCPOS=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_SIS5595=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83793=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83627EHF=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
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+# CONFIG_VIDEO_V4L1 is not set
+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_MSP3400=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_CX25840=m
+CONFIG_VIDEO_CX2341X=m
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_VIDEO_SAA7134 is not set
+# CONFIG_VIDEO_HEXIUM_ORION is not set
+# CONFIG_VIDEO_HEXIUM_GEMINI is not set
+# CONFIG_VIDEO_CX88 is not set
+# CONFIG_VIDEO_CAFE_CCIC is not set
+
+#
+# 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_USBVISION=m
+
+#
+# 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=y
+CONFIG_DVB_CORE=m
+# CONFIG_DVB_CORE_ATTACH is not set
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_DVB_CINERGYT2=m
+# CONFIG_DVB_CINERGYT2_TUNING is not set
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+# CONFIG_DVB_B2C2_FLEXCOP is not set
+
+#
+# Supported BT878 Adapters
+#
+
+#
+# Supported Pluto2 Adapters
+#
+# CONFIG_DVB_PLUTO2 is not set
+
+#
+# Supported DVB Frontends
+#
+
+#
+# Customise DVB Frontends
+#
+# CONFIG_DVB_FE_CUSTOMISE is not set
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_STV0299=m
+# CONFIG_DVB_CX24110 is not set
+# CONFIG_DVB_CX24123 is not set
+CONFIG_DVB_TDA8083=m
+# CONFIG_DVB_MT312 is not set
+# CONFIG_DVB_VES1X93 is not set
+# CONFIG_DVB_S5H1420 is not set
+CONFIG_DVB_TDA10086=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+# CONFIG_DVB_SP8870 is not set
+# CONFIG_DVB_SP887X is not set
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+# CONFIG_DVB_L64781 is not set
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+# CONFIG_DVB_TDA10021 is not set
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+# CONFIG_DVB_NXT200X is not set
+# CONFIG_DVB_OR51211 is not set
+# CONFIG_DVB_OR51132 is not set
+# CONFIG_DVB_BCM3510 is not set
+CONFIG_DVB_LGDT330X=m
+
+#
+# Tuners/PLL support
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUNER_MT2060=m
+CONFIG_DVB_TUNER_LGH06XF=m
+
+#
+# Miscellaneous devices
+#
+CONFIG_DVB_LNBP21=m
+# CONFIG_DVB_ISL6421 is not set
+# CONFIG_DVB_TUA6100 is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+# 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=y
+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=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_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=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_DPCM=y
+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_KARMA=y
+CONFIG_USB_LIBUSUAL=y
+
+#
+# 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_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=m
+CONFIG_USB_ATI_REMOTE=m
+CONFIG_USB_ATI_REMOTE2=m
+CONFIG_USB_KEYSPAN_REMOTE=m
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+
+#
+# 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_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=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=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=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 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC 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=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
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYPRESS_CY7C63=m
+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 is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+CONFIG_USB_LD=m
+CONFIG_USB_TRANCEVIBRATOR=m
+# 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 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+CONFIG_RTC_DRV_RS5C372=y
+# 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 is not set
+# 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 is not set
+# 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 is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_QUOTA=y
+# CONFIG_XFS_SECURITY is not set
+CONFIG_XFS_POSIX_ACL=y
+# 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=m
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_QUOTACTL=y
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=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=y
+
+#
+# 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=y
+CONFIG_JFFS2_FS_XATTR=y
+CONFIG_JFFS2_FS_POSIX_ACL=y
+CONFIG_JFFS2_FS_SECURITY=y
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=m
+# 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_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=y
+# CONFIG_CIFS_STATS2 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
+# 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=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 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=y
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=y
+
+#
+# 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_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_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_LRW is not set
+CONFIG_CRYPTO_DES=y
+# 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 is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux/n2100/n2100-r8169-parity.patch b/packages/linux/linux/n2100/n2100-r8169-parity.patch
new file mode 100644
index 0000000000..aeaeee9ff7
--- /dev/null
+++ b/packages/linux/linux/n2100/n2100-r8169-parity.patch
@@ -0,0 +1,39 @@
+http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=4058/1
+
+From: Lennert Buytenhek
+
+On the n2100, both onboard r8169 ports exhibit PCI parity problems.
+Set the ->broken_parity_status flag for both ports so that the r8169
+drivers knows it should ignore error interrupts.
+
+
+--- linux-2.6.19.orig/arch/arm/mach-iop32x/n2100.c
++++ linux-2.6.19/arch/arm/mach-iop32x/n2100.c
+@@ -123,9 +123,26 @@ static struct hw_pci n2100_pci __initdat
+
+ static int __init n2100_pci_init(void)
+ {
+- if (machine_is_n2100())
++ if (machine_is_n2100()) {
++ int i;
++
+ pci_common_init(&n2100_pci);
+
++ /*
++ * Both r8169 chips on the n2100 exhibit PCI parity
++ * problems. Set the ->broken_parity_status flag for
++ * both ports so that the r8169 driver knows it should
++ * ignore error interrupts.
++ */
++ for (i = 1; i <= 2; i++) {
++ struct pci_dev *dev;
++
++ dev = pci_get_bus_and_slot(0, PCI_DEVFN(i, 0));
++ if (dev != NULL)
++ dev->broken_parity_status = 1;
++ }
++ }
++
+ return 0;
+ }
+
diff --git a/packages/linux/linux/n2100/rtc-rs5c372-n2100.patch b/packages/linux/linux/n2100/rtc-rs5c372-n2100.patch
new file mode 100644
index 0000000000..8849312a44
--- /dev/null
+++ b/packages/linux/linux/n2100/rtc-rs5c372-n2100.patch
@@ -0,0 +1,13 @@
+Autodetect the RTC chip.
+
+--- a/drivers/rtc/rtc-rs5c372.c
++++ b/drivers/rtc/rtc-rs5c372.c
+@@ -16,7 +16,7 @@ #include <linux/bcd.h>
+ #define DRV_VERSION "0.3"
+
+ /* Addresses to scan */
+-static unsigned short normal_i2c[] = { /* 0x32,*/ I2C_CLIENT_END };
++static unsigned short normal_i2c[] = { 0x32, I2C_CLIENT_END };
+
+ /* Insmod parameters */
+ I2C_CLIENT_INSMOD;
diff --git a/packages/linux/linux/progear/defconfig b/packages/linux/linux/progear/defconfig
index 4b811dbc4b..a6257b00f3 100644
--- a/packages/linux/linux/progear/defconfig
+++ b/packages/linux/linux/progear/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.18
-# Sun Nov 26 20:58:25 2006
+# Linux kernel version: 2.6.20
+# Tue Feb 6 12:23:13 2007
#
CONFIG_X86_32=y
CONFIG_GENERIC_TIME=y
@@ -12,6 +12,7 @@ CONFIG_X86=y
CONFIG_MMU=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
@@ -32,19 +33,23 @@ CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
CONFIG_AUDIT=y
# CONFIG_AUDITSYSCALL is not set
# CONFIG_IKCONFIG is not set
+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=y
+CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
@@ -75,6 +80,7 @@ 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
@@ -105,6 +111,7 @@ CONFIG_X86_PC=y
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
+# CONFIG_PARAVIRT is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
@@ -114,6 +121,7 @@ CONFIG_X86_PC=y
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
+# CONFIG_MCORE2 is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
@@ -132,6 +140,8 @@ CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_L1_CACHE_SHIFT=5
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
@@ -177,6 +187,7 @@ CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -189,14 +200,16 @@ CONFIG_RESOURCES_64BIT=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
# CONFIG_EFI is not set
-CONFIG_REGPARM=y
CONFIG_SECCOMP=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
CONFIG_KEXEC=y
CONFIG_PHYSICAL_START=0x100000
+# CONFIG_RELOCATABLE is not set
+CONFIG_PHYSICAL_ALIGN=0x100000
# CONFIG_COMPAT_VDSO is not set
#
@@ -205,6 +218,7 @@ CONFIG_PHYSICAL_START=0x100000
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
# CONFIG_SOFTWARE_SUSPEND is not set
#
@@ -220,32 +234,25 @@ CONFIG_ACPI_BUTTON=m
CONFIG_ACPI_VIDEO=m
CONFIG_ACPI_HOTKEY=m
CONFIG_ACPI_FAN=m
-# CONFIG_ACPI_DOCK is not set
-CONFIG_ACPI_PROCESSOR=y
-CONFIG_ACPI_THERMAL=y
+CONFIG_ACPI_DOCK=m
+CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_THERMAL=m
# 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_DEBUG=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
# CONFIG_ACPI_CONTAINER is not set
-# CONFIG_ACPI_SBS is not set
+CONFIG_ACPI_SBS=m
#
# APM (Advanced Power Management) BIOS Support
#
-CONFIG_APM=m
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-# CONFIG_APM_DO_ENABLE is not set
-# CONFIG_APM_CPU_IDLE is not set
-# CONFIG_APM_DISPLAY_BLANK is not set
-CONFIG_APM_RTC_IS_GMT=y
-# CONFIG_APM_ALLOW_INTS is not set
-# CONFIG_APM_REAL_MODE_POWER_OFF is not set
+# CONFIG_APM is not set
#
# CPU Frequency scaling
@@ -297,6 +304,7 @@ CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
# CONFIG_PCIEPORTBUS is not set
# CONFIG_PCI_MSI is not set
+CONFIG_HT_IRQ=y
CONFIG_ISA_DMA_API=y
# CONFIG_ISA is not set
# CONFIG_MCA is not set
@@ -349,6 +357,9 @@ CONFIG_NET=y
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=y
@@ -367,9 +378,12 @@ CONFIG_SYN_COOKIES=y
# CONFIG_INET_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_BEET=y
# CONFIG_INET_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
+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
@@ -555,15 +569,89 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_ATA_OVER_ETH is not set
#
+# Misc devices
+#
+# CONFIG_IBM_ASM is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_MSI_LAPTOP is not set
+
+#
# ATA/ATAPI/MFM/RLL support
#
-# CONFIG_IDE is not set
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+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=y
+CONFIG_IDEDISK_MULTI_MODE=y
+# CONFIG_BLK_DEV_IDECS is not set
+# CONFIG_BLK_DEV_IDECD is not set
+# 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=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+# CONFIG_BLK_DEV_GENERIC is not set
+# CONFIG_BLK_DEV_OPTI621 is not set
+# CONFIG_BLK_DEV_RZ1000 is not set
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+# CONFIG_IDEDMA_ONLYDISK is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+CONFIG_BLK_DEV_ALI15X3=y
+# CONFIG_WDC_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_ATIIXP is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_CS5535 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_JMICRON is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+# CONFIG_BLK_DEV_PIIX is not set
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SIS5513 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD 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 is not set
#
@@ -583,14 +671,16 @@ CONFIG_CHR_DEV_SG=y
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 Transport Attributes
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
#
# SCSI low-level drivers
@@ -603,12 +693,13 @@ CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_ARCMSR is not set
# CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_SATA is not set
# CONFIG_SCSI_HPTIOP is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_DMX3191D is not set
@@ -618,15 +709,17 @@ CONFIG_SCSI_MULTI_LUN=y
# 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
#
# PCMCIA SCSI adapter support
@@ -638,6 +731,11 @@ CONFIG_SCSI_MULTI_LUN=y
# CONFIG_PCMCIA_SYM53C500 is not set
#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
@@ -714,6 +812,7 @@ CONFIG_R8169_NAPI=y
# CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
#
# Ethernet (10000 Mbit)
@@ -722,6 +821,7 @@ CONFIG_R8169_NAPI=y
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set
# CONFIG_MYRI10GE is not set
+# CONFIG_NETXEN_NIC is not set
#
# Token Ring devices
@@ -821,6 +921,7 @@ CONFIG_PCMCIA_PCNET=m
# Input device support
#
CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
#
# Userland interfaces
@@ -845,6 +946,7 @@ CONFIG_INPUT_KEYBOARD=y
# 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_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
@@ -855,6 +957,10 @@ CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_ELO is not set
CONFIG_TOUCHSCREEN_MTOUCH=m
# 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_INPUT_MISC=y
CONFIG_INPUT_PCSPKR=y
# CONFIG_INPUT_WISTRON_BTNS is not set
@@ -884,11 +990,18 @@ CONFIG_HW_CONSOLE=y
#
# Serial drivers
#
-# CONFIG_SERIAL_8250 is not set
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_PCI=m
+CONFIG_SERIAL_8250_PNP=m
+# CONFIG_SERIAL_8250_CS is not set
+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=m
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
@@ -909,11 +1022,6 @@ CONFIG_RTC=y
# 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=m
CONFIG_AGP_ALI=m
# CONFIG_AGP_ATI is not set
@@ -1019,6 +1127,7 @@ CONFIG_I2C_ALI15X3=m
#
# Dallas's 1-wire bus
#
+# CONFIG_W1 is not set
#
# Hardware Monitoring support
@@ -1031,6 +1140,7 @@ CONFIG_HWMON=m
# CONFIG_SENSORS_ADM1026 is not set
# CONFIG_SENSORS_ADM1031 is not set
# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_K8TEMP is not set
# CONFIG_SENSORS_ASB100 is not set
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_DS1621 is not set
@@ -1052,15 +1162,18 @@ CONFIG_HWMON=m
# 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 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
@@ -1068,15 +1181,9 @@ CONFIG_HWMON=m
# CONFIG_HWMON_DEBUG_CHIP is not set
#
-# Misc devices
-#
-# CONFIG_IBM_ASM is not set
-
-#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
#
# Digital Video Broadcasting Devices
@@ -1088,7 +1195,43 @@ CONFIG_VIDEO_V4L2=y
# Graphics support
#
# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB is not set
+CONFIG_FB=y
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+# 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 is not set
+CONFIG_FB_VESA=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 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
@@ -1097,11 +1240,18 @@ CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
CONFIG_VIDEO_SELECT=y
CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_DEVICE=y
CONFIG_LCD_CLASS_DEVICE=m
CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_PROGEAR=y
#
# Sound
@@ -1132,7 +1282,6 @@ CONFIG_SND_RTCTIMER=m
#
CONFIG_SND_MPU401_UART=m
CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
# CONFIG_SND_DUMMY is not set
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_SERIAL_U16550 is not set
@@ -1198,6 +1347,7 @@ CONFIG_SND_ALI5451=m
# CONFIG_SND_VIA82XX_MODEM is not set
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set
+# CONFIG_SND_AC97_POWER_SAVE is not set
#
# USB devices
@@ -1215,6 +1365,12 @@ CONFIG_SND_ALI5451=m
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID Devices
+#
+CONFIG_HID=y
#
# USB support
@@ -1262,19 +1418,20 @@ 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_STORAGE_KARMA 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=y
@@ -1304,12 +1461,14 @@ CONFIG_USB_HIDDEV=y
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
+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 is not set
# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
# CONFIG_USB_NET_RNDIS_HOST is not set
CONFIG_USB_NET_CDC_SUBSET=m
# CONFIG_USB_ALI_M5632 is not set
@@ -1334,6 +1493,7 @@ CONFIG_USB_NET_ZAURUS=m
#
# 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
@@ -1341,11 +1501,12 @@ CONFIG_USB_NET_ZAURUS=m
# 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_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_TEST is not set
#
@@ -1392,6 +1553,7 @@ 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
@@ -1431,6 +1593,11 @@ CONFIG_RTC_INTF_DEV=y
#
#
+# Virtualization
+#
+# CONFIG_KVM is not set
+
+#
# File systems
#
CONFIG_EXT2_FS=m
@@ -1442,6 +1609,7 @@ 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
@@ -1458,6 +1626,7 @@ CONFIG_XFS_FS=m
# CONFIG_XFS_SECURITY is not set
CONFIG_XFS_POSIX_ACL=y
# CONFIG_XFS_RT 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
@@ -1496,8 +1665,10 @@ CONFIG_NTFS_FS=m
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
@@ -1588,6 +1759,11 @@ CONFIG_NLS_ISO8859_2=m
CONFIG_NLS_UTF8=y
#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
# Instrumentation Support
#
# CONFIG_PROFILING is not set
@@ -1598,13 +1774,14 @@ CONFIG_NLS_UTF8=y
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
# 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_DEBUG_FS is not set
-# CONFIG_UNWIND_INFO is not set
CONFIG_EARLY_PRINTK=y
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y
@@ -1620,18 +1797,28 @@ CONFIG_DOUBLEFAULT=y
# Cryptographic options
#
CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_MANAGER=m
# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=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=m
+# CONFIG_CRYPTO_LRW is not set
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+# CONFIG_CRYPTO_TWOFISH_586 is not set
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_AES_586=m
@@ -1650,10 +1837,12 @@ CONFIG_CRYPTO_TEST=m
# Hardware crypto devices
#
# CONFIG_CRYPTO_DEV_PADLOCK is not set
+CONFIG_CRYPTO_DEV_GEODE=m
#
# Library routines
#
+CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=m
# CONFIG_CRC16 is not set
CONFIG_CRC32=y
@@ -1662,6 +1851,7 @@ CONFIG_AUDIT_GENERIC=y
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_X86_BIOS_REBOOT=y
diff --git a/packages/linux/linux/simpad/.mtn2git_empty b/packages/linux/linux/simpad/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux/simpad/.mtn2git_empty
diff --git a/packages/linux/linux/simpad/defconfig b/packages/linux/linux/simpad/defconfig
new file mode 100644
index 0000000000..36d5e942b4
--- /dev/null
+++ b/packages/linux/linux/simpad/defconfig
@@ -0,0 +1,1201 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21
+# Sun May 6 14:01:42 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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="oe1"
+CONFIG_LOCALVERSION_AUTO=y
+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 is not set
+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=y
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_KALLSYMS_EXTRA_PASS=y
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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 is not set
+# CONFIG_MODVERSIONS is not set
+# 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=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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# 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=y
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_COLLIE is not set
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+# CONFIG_SA1100_BADGE4 is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HACKKIT is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHANNON is not set
+CONFIG_SA1100_SIMPAD=y
+# CONFIG_SA1100_SSP is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_SA1100=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4=y
+CONFIG_CPU_CACHE_V4WB=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WB=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+CONFIG_ISA=y
+
+#
+# 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_I82365 is not set
+# CONFIG_TCIC is not set
+CONFIG_PCMCIA_SA1100=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=100
+# CONFIG_AEABI is not set
+CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
+CONFIG_NODES_SHIFT=2
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM_MANUAL=y
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_NEED_MULTIPLE_NODES=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=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="mtdparts=sa1100:512k(boot),1m(kernel),-(root) console=ttySA0 root=1f02 noinitrd mem=64M jffs2_orphaned_inodes=delete rootfstype=jffs2"
+# 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
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+# CONFIG_APM_EMULATION 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=y
+# 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 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
+
+#
+# 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_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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+CONFIG_IRPORT_SIR=m
+
+#
+# Old Serial dongle support
+#
+# CONFIG_DONGLE_OLD is not set
+
+#
+# FIR device drivers
+#
+CONFIG_SA1100_FIR=m
+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_HCIUART is not set
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
+# CONFIG_BT_HCIBLUECARD is not set
+# CONFIG_BT_HCIBTUART is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 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_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# 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 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=y
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+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 is not set
+# 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=y
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_XIP 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_SA1100=y
+# CONFIG_MTD_IMPA7 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
+
+#
+# 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_PNP is not set
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# 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_RAM=m
+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
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN 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=m
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_NET_VENDOR_RACAL 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_AC3200 is not set
+# CONFIG_APRICOT is not set
+# CONFIG_CS89x0 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# 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
+# CONFIG_ARLAN is not set
+# CONFIG_WAVELAN is not set
+CONFIG_PCMCIA_WAVELAN=m
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_HOSTAP is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN 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 is not set
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=800
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=600
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=800
+CONFIG_INPUT_TSDEV_SCREEN_Y=600
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=y
+
+#
+# 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_GPIO=y
+# CONFIG_INPUT_MOUSE 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=m
+CONFIG_SERIO_SERPORT=m
+# CONFIG_SERIO_LIBPS2 is not set
+# 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_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+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=m
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK 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
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM 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_ABITUGURU is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia Capabilities Port drivers
+#
+CONFIG_MCP=y
+CONFIG_MCP_SA11X0=y
+CONFIG_MCP_UCB1200=y
+CONFIG_MCP_UCB1200_TS=y
+CONFIG_MCP_UCB1200_SWITCHES=y
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_SIMPAD=y
+CONFIG_LCD_SIMPAD=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=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
+
+#
+# Frambuffer hardware drivers
+#
+# CONFIG_FB_SA1100 is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_MQ200=y
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+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 is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk 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 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+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=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=y
+# CONFIG_REISERFS_FS_XATTR 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 is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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 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=m
+# 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 is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# 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
+# 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=y
+# 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=y
+# 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=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux/simpad/linux-2.6.21-SIMpad-cs3-simpad.patch b/packages/linux/linux/simpad/linux-2.6.21-SIMpad-cs3-simpad.patch
new file mode 100644
index 0000000000..6d6c373271
--- /dev/null
+++ b/packages/linux/linux/simpad/linux-2.6.21-SIMpad-cs3-simpad.patch
@@ -0,0 +1,315 @@
+diff -uNr linux-2.6.21.vanilla/arch/arm/mach-sa1100/Makefile linux-2.6.21/arch/arm/mach-sa1100/Makefile
+--- linux-2.6.21.vanilla/arch/arm/mach-sa1100/Makefile 2007-05-01 16:40:44.000000000 +0200
++++ linux-2.6.21/arch/arm/mach-sa1100/Makefile 2007-05-01 16:52:10.000000000 +0200
+@@ -40,6 +40,7 @@
+ obj-$(CONFIG_SA1100_SHANNON) += shannon.o
+
+ obj-$(CONFIG_SA1100_SIMPAD) += simpad.o
++obj-$(CONFIG_SA1100_SIMPAD) += cs3-simpad.o
+ led-$(CONFIG_SA1100_SIMPAD) += leds-simpad.o
+
+ # LEDs support
+diff -uNr linux-2.6.21.vanilla/arch/arm/mach-sa1100/cs3-simpad.c linux-2.6.21/arch/arm/mach-sa1100/cs3-simpad.c
+--- linux-2.6.21.vanilla/arch/arm/mach-sa1100/cs3-simpad.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.21/arch/arm/mach-sa1100/cs3-simpad.c 2007-05-01 16:52:10.000000000 +0200
+@@ -0,0 +1,300 @@
++/*
++ * cs3-simpad.c
++ *
++ * This driver shows the GPIO states of the cs3 latch. You can also
++ * switch some GPIOS.
++ *
++ * (c) 2007 Bernhard Guillon <Bernhard.Guillon@OpenSIMpad.org>
++ *
++ * You may use this code as per GPL version 2
++ *
++ * Some parts are based on battery.c
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/init.h>
++#include <linux/device.h>
++
++#include <asm/arch/simpad.h>
++
++extern long get_cs3_shadow(void);
++extern void set_cs3_bit(int value);
++extern void clear_cs3_bit(int value);
++
++struct cs3 {
++ struct class_device class_dev;
++ const char *name;
++ char *id;
++ int type;
++};
++
++struct cs3 cs3 ={
++ .name = "latch_cs3",
++};
++
++static ssize_t get_VCC_5V_EN (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & VCC_5V_EN )
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_VCC_3V_EN (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & VCC_3V_EN)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_EN1 (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & EN1)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_EN0 (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & EN0)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_DISPLAY_ON (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & DISPLAY_ON)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_PCMCIA_BUFF_DIS (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & PCMCIA_BUFF_DIS)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_MQ_RESET (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & MQ_RESET)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_PCMCIA_RESET (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & PCMCIA_RESET)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_DECT_POWER_ON (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & DECT_POWER_ON)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_IRDA_SD (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & IRDA_SD)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_RS232_ON (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & RS232_ON)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_SD_MEDIAQ (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & SD_MEDIAQ)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_LED2_ON (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & LED2_ON)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_IRDA_MODE (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & IRDA_MODE)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_ENABLE_5V (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & ENABLE_5V)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++static ssize_t get_RESET_SIMCARD (struct class_device *class_dev, char *buf) {
++ if (get_cs3_shadow() & RESET_SIMCARD)
++ return sprintf(buf, "1\n");
++ else
++ return sprintf(buf, "0\n");
++}
++
++
++static ssize_t write_DISPLAY_ON (struct class_device *cdev, const char * buf, size_t count){
++ char val;
++ if (sscanf(buf, "%c",&val) !=1)
++ return -EINVAL;
++ if (val=='1')
++ set_cs3_bit(DISPLAY_ON);
++ else if (val=='0')
++ clear_cs3_bit(DISPLAY_ON);
++ return strlen(buf);
++}
++
++static ssize_t write_DECT_POWER_ON (struct class_device *cdev, const char * buf, size_t count){
++ char val;
++ if (sscanf(buf, "%c",&val) !=1)
++ return -EINVAL;
++ if (val=='1')
++ set_cs3_bit(DECT_POWER_ON);
++ else if (val=='0')
++ clear_cs3_bit(DECT_POWER_ON);
++ return strlen(buf);
++}
++
++static ssize_t write_IRDA_SD (struct class_device *cdev, const char * buf, size_t count){
++ char val;
++ if (sscanf(buf, "%c",&val) !=1)
++ return -EINVAL;
++ if (val=='1')
++ set_cs3_bit(IRDA_SD);
++ else if (val=='0')
++ clear_cs3_bit(IRDA_SD);
++ return strlen(buf);
++}
++
++static ssize_t write_SD_MEDIAQ (struct class_device *cdev, const char * buf, size_t count){
++ char val;
++ if (sscanf(buf, "%c",&val) !=1)
++ return -EINVAL;
++ if (val=='1')
++ set_cs3_bit(SD_MEDIAQ);
++ else if (val=='0')
++ clear_cs3_bit(SD_MEDIAQ);
++ return strlen(buf);
++}
++
++static ssize_t write_LED2_ON (struct class_device *cdev, const char * buf, size_t count){
++ char val;
++ if (sscanf(buf, "%c",&val) !=1)
++ return -EINVAL;
++ if (val=='1')
++ set_cs3_bit(LED2_ON);
++ else if (val=='0')
++ clear_cs3_bit(LED2_ON);
++ return strlen(buf);
++}
++
++static ssize_t write_IRDA_MODE (struct class_device *cdev, const char * buf, size_t count){
++ char val;
++ if (sscanf(buf, "%c",&val) !=1)
++ return -EINVAL;
++ if (val=='1')
++ set_cs3_bit(IRDA_MODE);
++ else if (val=='0')
++ clear_cs3_bit(IRDA_MODE);
++ return strlen(buf);
++}
++
++static ssize_t write_RESET_SIMCARD (struct class_device *cdev, const char * buf, size_t count){
++ char val;
++ if (sscanf(buf, "%c",&val) !=1)
++ return -EINVAL;
++ if (val=='1')
++ set_cs3_bit(RESET_SIMCARD);
++ else if (val=='0')
++ clear_cs3_bit(RESET_SIMCARD);
++ return strlen(buf);
++}
++
++static CLASS_DEVICE_ATTR(vcc_5v_en, 0444, get_VCC_5V_EN, NULL);
++static CLASS_DEVICE_ATTR(vcc_3v_en, 0444, get_VCC_3V_EN, NULL);
++static CLASS_DEVICE_ATTR(en1, 0444, get_EN1, NULL);
++static CLASS_DEVICE_ATTR(en0, 0444, get_EN0, NULL);
++static CLASS_DEVICE_ATTR(display_on, 0664, get_DISPLAY_ON, write_DISPLAY_ON);
++static CLASS_DEVICE_ATTR(pcmcia_buff_dis, 0444, get_PCMCIA_BUFF_DIS, NULL);
++static CLASS_DEVICE_ATTR(mq_reset, 0444, get_MQ_RESET, NULL);
++static CLASS_DEVICE_ATTR(pcmcia_reset, 0444, get_PCMCIA_RESET, NULL);
++static CLASS_DEVICE_ATTR(dect_power_on, 0664, get_DECT_POWER_ON, write_DECT_POWER_ON);
++static CLASS_DEVICE_ATTR(irda_sd, 0664, get_IRDA_SD, write_IRDA_SD);
++static CLASS_DEVICE_ATTR(rs232_on, 0444, get_RS232_ON, NULL);
++static CLASS_DEVICE_ATTR(sd_mediaq, 0664, get_SD_MEDIAQ, write_SD_MEDIAQ);
++static CLASS_DEVICE_ATTR(led2_on, 0664, get_LED2_ON, write_LED2_ON);
++static CLASS_DEVICE_ATTR(irda_mode, 0664, get_IRDA_MODE, write_IRDA_MODE);
++static CLASS_DEVICE_ATTR(enable_5v, 0444, get_ENABLE_5V, NULL);
++static CLASS_DEVICE_ATTR(reset_simcard, 0664, get_RESET_SIMCARD, write_RESET_SIMCARD);
++
++static struct class simpad_gpios_class = {
++ .name = "simpad"
++};
++
++#define create_entry_conditional(name) \
++ rc = class_device_create_file(&cs3->class_dev, &class_device_attr_##name); \
++ if (rc) goto out; \
++
++static int register_cs3_latch(struct cs3 *cs3){
++ int rc = 0;
++ cs3->class_dev.class = &simpad_gpios_class;
++ strcpy(cs3->class_dev.class_id, cs3->name);
++ rc = class_device_register(&cs3->class_dev);
++ if(rc)
++ goto out;
++
++ create_entry_conditional(vcc_5v_en);
++ create_entry_conditional(vcc_3v_en);
++ create_entry_conditional(en1);
++ create_entry_conditional(en0);
++ create_entry_conditional(display_on);
++ create_entry_conditional(pcmcia_buff_dis);
++ create_entry_conditional(mq_reset);
++ create_entry_conditional(pcmcia_reset);
++ create_entry_conditional(dect_power_on);
++ create_entry_conditional(irda_sd);
++ create_entry_conditional(rs232_on);
++ create_entry_conditional(sd_mediaq);
++ create_entry_conditional(led2_on);
++ create_entry_conditional(irda_mode);
++ create_entry_conditional(enable_5v);
++ create_entry_conditional(reset_simcard);
++
++out:
++ return rc;
++}
++
++static int __init simpad_gpios_class_init(void)
++{
++ if (class_register(&simpad_gpios_class) != 0)
++ printk(KERN_ERR "cs3 latch class failed "
++ "to register properly\n");
++ register_cs3_latch(&cs3);
++ return 0;
++}
++
++static void __exit simpad_gpios_class_exit(void)
++{
++ class_unregister(&simpad_gpios_class);
++}
++
++module_init(simpad_gpios_class_init);
++module_exit(simpad_gpios_class_exit);
++
++MODULE_DESCRIPTION("CS3_latch driver");
++MODULE_AUTHOR("Bernhard Guillon");
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux/simpad/linux-2.6.21-SIMpad-mq200.patch b/packages/linux/linux/simpad/linux-2.6.21-SIMpad-mq200.patch
new file mode 100644
index 0000000000..5726779ad6
--- /dev/null
+++ b/packages/linux/linux/simpad/linux-2.6.21-SIMpad-mq200.patch
@@ -0,0 +1,2511 @@
+diff -uNr linux-2.6.21.vanilla/drivers/video/Kconfig linux-2.6.21/drivers/video/Kconfig
+--- linux-2.6.21.vanilla/drivers/video/Kconfig 2007-05-01 16:40:48.000000000 +0200
++++ linux-2.6.21/drivers/video/Kconfig 2007-05-01 17:02:17.000000000 +0200
+@@ -139,7 +139,7 @@
+ This is particularly important to one driver, matroxfb. If
+ unsure, say N.
+
+-comment "Frame buffer hardware drivers"
++comment "Frambuffer hardware drivers"
+ depends on FB
+
+ config FB_CIRRUS
+@@ -1120,6 +1120,15 @@
+ ---help---
+ Driver for graphics boards with S3 Trio / S3 Virge chip.
+
++config FB_MQ200
++ bool "MQ200 Driver"
++ depends on (FB = y) && ARM && ARCH_SA1100
++ select FB_CFB_FILLRECT
++ select FB_CFB_COPYAREA
++ select FB_CFB_IMAGEBLIT
++ help
++ This is a MQ200 driver tested only on Siemens SIMpads.
++
+ config FB_SAVAGE
+ tristate "S3 Savage support"
+ depends on FB && PCI && EXPERIMENTAL
+diff -uNr linux-2.6.21.vanilla/drivers/video/Makefile linux-2.6.21/drivers/video/Makefile
+--- linux-2.6.21.vanilla/drivers/video/Makefile 2007-05-01 16:40:48.000000000 +0200
++++ linux-2.6.21/drivers/video/Makefile 2007-05-01 17:02:17.000000000 +0200
+@@ -29,6 +29,7 @@
+ obj-$(CONFIG_FB_PM2) += pm2fb.o
+ obj-$(CONFIG_FB_PM3) += pm3fb.o
+
++obj-$(CONFIG_FB_MQ200) += mq200/
+ obj-$(CONFIG_FB_MATROX) += matrox/
+ obj-$(CONFIG_FB_RIVA) += riva/ vgastate.o
+ obj-$(CONFIG_FB_NVIDIA) += nvidia/
+diff -uNr linux-2.6.21.vanilla/drivers/video/backlight/Kconfig linux-2.6.21/drivers/video/backlight/Kconfig
+--- linux-2.6.21.vanilla/drivers/video/backlight/Kconfig 2007-05-01 16:40:48.000000000 +0200
++++ linux-2.6.21/drivers/video/backlight/Kconfig 2007-05-01 17:02:17.000000000 +0200
+@@ -63,3 +63,20 @@
+ help
+ If you have a Frontpath ProGear say Y to enable the
+ backlight driver.
++
++config BACKLIGHT_SIMPAD
++ tristate "SIMpad MQ200 Backlight driver"
++ depends on SA1100_SIMPAD && BACKLIGHT_CLASS_DEVICE
++ default y
++ help
++ If you have a Siemens SIMpad say Y to enable the
++ backlight driver.
++
++config LCD_SIMPAD
++ tristate "SIMpad MQ200 LCD driver"
++ depends on SA1100_SIMPAD && LCD_CLASS_DEVICE
++ default y
++ help
++ If you have a Siemens SIMpad say Y to enable the
++ LCD driver.
++
+diff -uNr linux-2.6.21.vanilla/drivers/video/backlight/Makefile linux-2.6.21/drivers/video/backlight/Makefile
+--- linux-2.6.21.vanilla/drivers/video/backlight/Makefile 2007-05-01 16:40:48.000000000 +0200
++++ linux-2.6.21/drivers/video/backlight/Makefile 2007-05-01 17:02:17.000000000 +0200
+@@ -6,3 +6,5 @@
+ obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o
+ obj-$(CONFIG_BACKLIGHT_LOCOMO) += locomolcd.o
+ obj-$(CONFIG_BACKLIGHT_PROGEAR) += progear_bl.o
++obj-$(CONFIG_BACKLIGHT_SIMPAD) += simpad_bl.o
++obj-$(CONFIG_LCD_SIMPAD) += simpad_lcd.o
+diff -uNr linux-2.6.21.vanilla/drivers/video/backlight/simpad_bl.c linux-2.6.21/drivers/video/backlight/simpad_bl.c
+--- linux-2.6.21.vanilla/drivers/video/backlight/simpad_bl.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.21/drivers/video/backlight/simpad_bl.c 2007-05-01 17:02:17.000000000 +0200
+@@ -0,0 +1,208 @@
++/*
++ * GPLv2 <zecke@handhelds.org
++ *
++ * Implementation of the backlight_driver for
++ * the mq200 framebuffer
++ *
++ * 2007/03/17 mrdata:
++ * - small changes simpad_bl_get_brightness()
++ * simpad_bl_set_brightness()
++ * - new function simpad_bl_update_status()
++ * - changed struct backlight_properties simpad_bl_props()
++ * to new one
++ * - changed __init simpad_bl_init() -> backlight_device_register
++ *
++ * 2007/03/24 mrdata
++ * - added .brightness=127 in
++ * struct backlight_properties simpad_bl_props()
++ */
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/spinlock.h>
++#include <linux/fb.h>
++#include <linux/backlight.h>
++
++#include <asm/types.h>
++#include <asm/hardware.h>
++#include <asm/io.h>
++
++#include "../mq200/mq200_data.h"
++
++#define SIMPAD_BACKLIGHT_MASK 0x00a10044
++#define SIMPAD_DEFAULT_INTENSITY 127
++#define SIMPAD_MAX_INTENSITY 254
++#define REGISTER_BASE 0xf2e00000
++
++static int simpad_bl_suspended;
++static int current_intensity = 0;
++
++static void simpad_bl_send_intensity(struct backlight_device *bd)
++{
++ int intensity = bd->props.brightness;
++
++ union fp0fr fp0fr;
++ unsigned long dutyCycle, pwmcontrol;
++
++ if (intensity > SIMPAD_MAX_INTENSITY)
++ intensity = SIMPAD_MAX_INTENSITY;
++
++ if (bd->props.power != FB_BLANK_UNBLANK)
++ intensity = 0;
++
++ if (bd->props.fb_blank != FB_BLANK_UNBLANK)
++ intensity = 0;
++
++ if (simpad_bl_suspended)
++ intensity = 0;
++
++ if (intensity != current_intensity)
++ {
++ /*
++ * Determine dutyCycle.
++ * Note: the lower the value, the brighter the display!
++ */
++
++ dutyCycle = SIMPAD_MAX_INTENSITY - intensity;
++
++ /*
++ * Configure PWM0 (source clock = oscillator clock, pwm always enabled,
++ * zero, clock pre-divider = 4) pwm frequency = 12.0kHz
++ */
++
++ fp0fr.whole = readl(FP0FR(REGISTER_BASE));
++ pwmcontrol = fp0fr.whole & 0xffff00ff;
++ fp0fr.whole &= 0xffffff00;
++ fp0fr.whole |= 0x00000044;
++ writel(fp0fr.whole, FP0FR(REGISTER_BASE));
++
++ /* Write to pwm duty cycle register. */
++ fp0fr.whole = dutyCycle << 8;
++ fp0fr.whole &= 0x0000ff00;
++ fp0fr.whole |= pwmcontrol;
++ writel(fp0fr.whole, FP0FR(REGISTER_BASE));
++
++ current_intensity = intensity;
++ }
++}
++
++
++#ifdef CONFIG_PM
++static int simpad_bl_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct backlight_device *bd = platform_get_drvdata(pdev);
++
++ simpad_bl_suspended = 1;
++ simpad_bl_send_intensity(bd);
++ return 0;
++}
++
++static int simpad_bl_resume(struct platform_device *pdev)
++{
++ struct backlight_device *bd = platform_get_drvdata(pdev);
++
++ simpad_bl_suspended = 0;
++ simpad_bl_send_intensity(bd);
++ return 0;
++}
++#else
++#define simpad_bl_suspend NULL
++#define simpad_bl_resume NULL
++#endif
++
++
++static int simpad_bl_set_intensity(struct backlight_device *bd)
++{
++ simpad_bl_send_intensity(bd);
++ return 0;
++}
++
++
++static int simpad_bl_get_intensity(struct backlight_device *bd)
++{
++ return current_intensity;
++}
++
++
++static struct backlight_ops simpad_bl_ops = {
++ .get_brightness = simpad_bl_get_intensity,
++ .update_status = simpad_bl_set_intensity,
++};
++
++
++static int __init simpad_bl_probe(struct platform_device *pdev)
++{
++ struct backlight_device *bd;
++
++ bd = backlight_device_register("simpad-mq200-bl", &pdev->dev, NULL, &simpad_bl_ops);
++
++ if (IS_ERR (bd))
++ return PTR_ERR (bd);
++
++ platform_set_drvdata(pdev, bd);
++
++ bd->props.max_brightness = SIMPAD_MAX_INTENSITY;
++ bd->props.brightness = SIMPAD_DEFAULT_INTENSITY;
++ simpad_bl_send_intensity(bd);
++
++ return 0;
++}
++
++
++static int simpad_bl_remove(struct platform_device *pdev)
++{
++ struct backlight_device *bd = platform_get_drvdata(pdev);
++
++ bd->props.brightness = 0;
++ bd->props.power = 0;
++ simpad_bl_send_intensity(bd);
++
++ backlight_device_unregister(bd);
++
++ return 0;
++}
++
++static struct platform_driver simpad_bl_driver = {
++ .probe = simpad_bl_probe,
++ .remove = simpad_bl_remove,
++ .suspend = simpad_bl_suspend,
++ .resume = simpad_bl_resume,
++ .driver = {
++ .name = "simpad-mq200-bl",
++ },
++};
++
++static struct platform_device *simpad_bl_device = NULL;
++
++static int __init simpad_bl_init(void)
++{
++ int ret;
++
++ ret = platform_driver_register(&simpad_bl_driver);
++ if (!ret) {
++ simpad_bl_device = platform_device_alloc("simpad-mq200-bl", -1);
++ if (!simpad_bl_device)
++ return -ENOMEM;
++
++ ret = platform_device_add(simpad_bl_device);
++
++ if (ret) {
++ platform_device_put(simpad_bl_device);
++ platform_driver_unregister(&simpad_bl_driver);
++ }
++ }
++ return ret;
++}
++
++static void __exit simpad_bl_exit(void)
++{
++ platform_device_unregister(simpad_bl_device);
++ platform_driver_unregister(&simpad_bl_driver);
++}
++
++
++module_init(simpad_bl_init);
++module_exit(simpad_bl_exit);
++MODULE_AUTHOR("Holger Hans Peter Freyther");
++MODULE_LICENSE("GPL");
+diff -uNr linux-2.6.21.vanilla/drivers/video/backlight/simpad_lcd.c linux-2.6.21/drivers/video/backlight/simpad_lcd.c
+--- linux-2.6.21.vanilla/drivers/video/backlight/simpad_lcd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.21/drivers/video/backlight/simpad_lcd.c 2007-05-01 17:02:17.000000000 +0200
+@@ -0,0 +1,170 @@
++/*
++ * GPLv2 <zecke@handhelds.org
++ *
++ * Implementation of the lcd_driver for the mq200 framebuffer
++ *
++ * 2007/03/24 mrdata:
++ * - added simpad_lcd_get_contrast()
++ * - added simpad_lcd_set_contrast()
++ * - modify struct lcd_properties simpad_lcd_props
++ */
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/fb.h>
++#include <linux/lcd.h>
++
++#include <asm/arch/simpad.h>
++#include <asm/hardware.h>
++
++extern long get_cs3_shadow(void);
++extern void set_cs3_bit(int);
++extern void clear_cs3_bit(int);
++
++#define UNUSED(x) x=x
++
++static int simpad_lcd_get_power(struct lcd_device* dev)
++{
++ UNUSED(dev);
++
++ return (get_cs3_shadow() & DISPLAY_ON) ? 0 : 4;
++}
++
++static int simpad_lcd_set_power(struct lcd_device* dev, int power)
++{
++ UNUSED(dev);
++
++ if( power == 4 )
++ clear_cs3_bit(DISPLAY_ON);
++ else
++ set_cs3_bit(DISPLAY_ON);
++
++ return 0;
++}
++
++static int simpad_lcd_get_contrast(struct lcd_device* dev)
++{
++ UNUSED(dev);
++
++ return 0;
++}
++
++static int simpad_lcd_set_contrast(struct lcd_device* dev, int contrast)
++{
++ UNUSED(dev);
++
++ UNUSED(contrast);
++
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static int simpad_lcd_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ UNUSED(state);
++ static int ret;
++
++ struct lcd_device* ld;
++
++ ld = platform_get_drvdata(pdev);
++
++ ret = simpad_lcd_set_power(ld, 4);
++
++ return ret;
++}
++
++static int simpad_lcd_resume(struct platform_device *pdev)
++{
++ struct lcd_device *ld;
++ static int ret;
++
++ ld = platform_get_drvdata(pdev);
++
++ ret = simpad_lcd_set_power(ld, 0);
++
++ return ret;
++}
++#else
++#define simpad_lcd_suspend NULL
++#define simpad_lcd_resume NULL
++#endif
++
++static struct lcd_properties simpad_lcd_props = {
++ .max_contrast = 0,
++};
++
++
++static struct lcd_ops simpad_lcd_ops = {
++ .get_power = simpad_lcd_get_power,
++ .set_power = simpad_lcd_set_power,
++ .get_contrast = simpad_lcd_get_contrast,
++ .set_contrast = simpad_lcd_set_contrast,
++};
++
++static int __init simpad_lcd_probe(struct platform_device *pdev)
++{
++ struct lcd_device *ld;
++
++ ld = lcd_device_register ("simpad-mq200-lcd", &pdev->dev, &simpad_lcd_ops);
++
++ if (IS_ERR(ld))
++ return PTR_ERR(ld);
++
++ platform_set_drvdata(pdev, ld);
++
++ ld->props.max_contrast = 0;
++
++ return 0;
++}
++
++static int simpad_lcd_remove(struct platform_device *pdev)
++{
++ struct lcd_device *ld = platform_get_drvdata(pdev);
++
++ lcd_device_unregister(ld);
++
++ return 0;
++}
++
++static struct platform_driver simpad_lcd_driver = {
++ .probe = simpad_lcd_probe,
++ .remove = simpad_lcd_remove,
++ .suspend = simpad_lcd_suspend,
++ .resume = simpad_lcd_resume,
++ .driver = {
++ .name = "simpad-mq200-lcd",
++ },
++};
++
++static struct platform_device *simpad_lcd_device = NULL;
++
++static int __init simpad_lcd_init(void)
++{
++ int ret;
++
++ ret = platform_driver_register(&simpad_lcd_driver);
++ if (!ret) {
++ simpad_lcd_device = platform_device_alloc("simpad-mq200-lcd", -1);
++ if (!simpad_lcd_device)
++ return -ENOMEM;
++
++ ret = platform_device_add(simpad_lcd_device);
++
++ if (ret) {
++ platform_device_put(simpad_lcd_device);
++ platform_driver_unregister(&simpad_lcd_driver);
++ }
++ }
++ return ret;
++}
++
++static void __exit simpad_lcd_exit(void) {
++ platform_driver_unregister(&simpad_lcd_driver);
++ platform_device_unregister(simpad_lcd_device);
++}
++
++module_init(simpad_lcd_init);
++module_exit(simpad_lcd_exit);
++MODULE_AUTHOR("Holger Hans Peter Freyther");
++MODULE_LICENSE("GPL");
+diff -uNr linux-2.6.21.vanilla/drivers/video/mq200/Makefile linux-2.6.21/drivers/video/mq200/Makefile
+--- linux-2.6.21.vanilla/drivers/video/mq200/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.21/drivers/video/mq200/Makefile 2007-05-01 17:02:17.000000000 +0200
+@@ -0,0 +1,6 @@
++# Makefile for mq200 video driver
++# 4 Aug 2003, Holger Hans Peter Freyther
++#
++
++obj-$(CONFIG_FB_MQ200) += mq_skeleton.o mq_external.o
++
+diff -uNr linux-2.6.21.vanilla/drivers/video/mq200/mq200_data.h linux-2.6.21/drivers/video/mq200/mq200_data.h
+--- linux-2.6.21.vanilla/drivers/video/mq200/mq200_data.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.21/drivers/video/mq200/mq200_data.h 2007-05-01 17:02:17.000000000 +0200
+@@ -0,0 +1,1120 @@
++/*
++ * From ucLinux mq200fb.c and mq200fb.h
++ *
++ * 2007/03/11 mrdata:
++ * insert registers for graphics controller 2 module
++ */
++
++#ifndef __MQ200_FB_H__
++#define __MQ200_FB_H__
++
++struct mq200_io_regions {
++ u32 fb_size; /* framebuffer size */
++ unsigned long phys_mmio_base; /* physical register memory base */
++ unsigned long virt_mmio_base; /* virtual start of registers */
++ unsigned long phys_fb_base; /* physical address of frame buffer */
++ unsigned long virt_fb_base; /* virtual start of the framebuffer */
++};
++
++#define MQ200_MONITOR_HORI_RES(info) info->monitor_info.horizontal_res
++#define MQ200_MONITOR_VERT_RES(info) info->monitor_info.vertical_res
++#define MQ200_MONITOR_DEPTH(info) info->monitor_info.depth
++#define MQ200_MONITOR_LINE_LENGTH(info) info->monitor_info.line_length
++
++struct mq200_monitor_info {
++ unsigned int horizontal_res;
++ unsigned int vertical_res;
++ unsigned int depth;
++ unsigned int refresh;
++ unsigned int line_length;
++ unsigned long flags;
++};
++
++
++/**
++ * Addresses of Module
++ */
++#define MQ200_FB_BASE (x) (x + 0x1800000) /* framebuffer */
++#define MQ200_FB_SIZE 0x200000 /* framebuffer size in bytes */
++#define MQ200_REGS_BASE(x) (x + 0x1e00000) /* start of registers area */
++#define MQ200_REGS_SIZE 0x200000 /* registers area size */
++
++#define PMU_OFFSET 0x00000 /* power management */
++#define CPU_OFFSET 0x02000 /* CPU interface */
++#define MIU_OFFSET 0x04000 /* memory controller */
++#define IN_OFFSET 0x08000 /* interrupt controller */
++#define GC_OFFSET 0x0a000 /* graphics controller 1&2 */
++#define GE_OFFSET 0x0c000 /* graphics engine */
++#define FPI_OFFSET 0x0e000 /* flat panel controller */
++#define CP1_OFFSET 0x10000 /* color palette 1 */
++#define DC_OFFSET 0x14000 /* device configuration */
++#define PCI_OFFSET 0x16000 /* PCI configuration */
++#define PSF_OFFSET 0x18000 /* ??? */
++
++
++/****
++ * Registers
++ */
++
++/* power management unit */
++#define PMR(addr) (addr + PCI_OFFSET + 0x40)/* power management
++ register */
++#define PMR_VALUE 0x06210001 /* expected read value of PMR register */
++#define PM00R(addr) (addr + PMU_OFFSET + 0x00) /* power management unit
++ configuration
++ register */
++#define PM01R(addr) (addr + PMU_OFFSET + 0x04) /* D1 state control */
++#define PM02R(addr) (addr + PMU_OFFSET + 0x08) /* d2 state control */
++#define PM06R(addr) (addr + PMU_OFFSET + 0x18) /* PLL 2 programming */
++#define PM07R(addr) (addr + PMU_OFFSET + 0x1c) /* PLL 3 programming */
++
++#define PMCSR(addr) (addr + PCI_OFFSET + 0x44) /* power management
++ control/status
++ register */
++
++/* memory interface unit */
++#define MM00R(addr) (addr + MIU_OFFSET + 0x00)/* MIU interface control
++ 0 */
++#define MM01R(addr) (addr + MIU_OFFSET + 0x04) /* MIU interface control
++ 1 */
++#define MM02R(addr) (addr + MIU_OFFSET + 0x08) /* memory interface
++ control 2 */
++#define MM03R(addr) (addr + MIU_OFFSET + 0x0c) /* memory interface
++ control 3 */
++#define MM04R(addr) (addr + MIU_OFFSET + 0x10) /* memory interface
++ control 4 */
++/* graphics controller 1 module */
++#define GC00R(addr) (addr + GC_OFFSET + 0x00) /* graphics controller 1
++ control */
++#define GC01R(addr) (addr + GC_OFFSET + 0x04) /* graphics controller
++ CRT control */
++#define GC02R(addr) (addr + GC_OFFSET + 0x08) /* horizontal display 1
++ control */
++#define GC03R(addr) (addr + GC_OFFSET + 0x0c) /* vertical display 1
++ control */
++#define GC04R(addr) (addr + GC_OFFSET + 0x10) /* horizontal sync 1
++ control */
++#define GC05R(addr) (addr + GC_OFFSET + 0x14) /* vertical sync 1
++ control */
++#define GC07R(addr) (addr + GC_OFFSET + 0x1c) /* vertical display 1
++ count */
++#define GC08R(addr) (addr + GC_OFFSET + 0x20) /* horizontal window 1
++ control */
++#define GC09R(addr) (addr + GC_OFFSET + 0x24) /* vertical window 1
++ control */
++#define GC0AR(addr) (addr + GC_OFFSET + 0x28) /* alternate horizontal
++ window 1 control */
++#define GC0BR(addr) (addr + GC_OFFSET + 0x2c) /* alternate vertical
++ window 1 control */
++#define GC0CR(addr) (addr + GC_OFFSET + 0x30) /* window 1
++ start address */
++#define GC0DR(addr) (addr + GC_OFFSET + 0x34) /* alternate window 1
++ start address */
++#define GC0ER(addr) (addr + GC_OFFSET + 0x38) /* alternate window 1
++ stride */
++#define GC0FR(addr) (addr + GC_OFFSET + 0x3c) /* alternate window 1
++ line size */
++#define GC10R(addr) (addr + GC_OFFSET + 0x40) /* hardware cursor 1
++ position */
++#define GC11R(addr) (addr + GC_OFFSET + 0x44) /* hardware cursor 1
++ start address and
++ offset */
++#define GC12R(addr) (addr + GC_OFFSET + 0x48) /* hardware cursor 1
++ foreground color */
++#define GC13R(addr) (addr + GC_OFFSET + 0x4c) /* hardware cursor 1
++ background color */
++
++/* graphics controller 2 module */
++#define GC20R(addr) (addr + GC_OFFSET + 0x80) /* graphics controller 2
++ control */
++#define GC21R(addr) (addr + GC_OFFSET + 0x84) /* graphics controller
++ CRC control */
++#define GC22R(addr) (addr + GC_OFFSET + 0x88) /* horizontal display 2
++ control */
++#define GC23R(addr) (addr + GC_OFFSET + 0x8c) /* vertical display 2
++ control */
++#define GC24R(addr) (addr + GC_OFFSET + 0x90) /* horizontal sync 2
++ control */
++#define GC25R(addr) (addr + GC_OFFSET + 0x94) /* vertical sync 2
++ control */
++#define GC27R(addr) (addr + GC_OFFSET + 0x9c) /* vertical display 2
++ count */
++#define GC28R(addr) (addr + GC_OFFSET + 0xa0) /* horizontal window 2
++ control */
++#define GC29R(addr) (addr + GC_OFFSET + 0xa4) /* vertical window 2
++ control */
++#define GC2AR(addr) (addr + GC_OFFSET + 0xa8) /* alternate horizontal
++ window 2 control */
++#define GC2BR(addr) (addr + GC_OFFSET + 0xac) /* alternate vertical
++ window 2 control */
++#define GC2CR(addr) (addr + GC_OFFSET + 0xb0) /* window 2
++ start address */
++#define GC2DR(addr) (addr + GC_OFFSET + 0xb4) /* alternate window 2
++ start address */
++#define GC2ER(addr) (addr + GC_OFFSET + 0xb8) /* alternate window 2
++ stride */
++#define GC2FR(addr) (addr + GC_OFFSET + 0xbc) /* alternate window 2
++ line size */
++#define GC30R(addr) (addr + GC_OFFSET + 0xc0) /* hardware cursor 2
++ position */
++#define GC31R(addr) (addr + GC_OFFSET + 0xc4) /* hardware cursor 2
++ start address and
++ offset */
++#define GC32R(addr) (addr + GC_OFFSET + 0xc8) /* hardware cursor 2
++ foreground color */
++#define GC33R(addr) (addr + GC_OFFSET + 0xcc) /* hardware cursor 2
++ background color */
++
++/* graphics engine */
++#define ROP_SRCCOPY 0xCC /* dest = source */
++#define ROP_SRCPAINT 0xEE /* dest = source OR dest */
++#define ROP_SRCAND 0x88 /* dest = source AND dest */
++#define ROP_SRCINVERT 0x66 /* dest = source XOR dest */
++#define ROP_SRCERASE 0x44 /* dest = source AND (NOT dest) */
++#define ROP_NOTSRCCOPY 0x33 /* dest = NOT source */
++#define ROP_NOTSRCERASE 0x11 /* dest = (NOT source) AND (NOT dest) */
++#define ROP_MERGECOPY 0xC0 /* dest = source AND pattern */
++#define ROP_MERGEPAINT 0xBB /* dest = (NOT source) OR dest */
++#define ROP_PATCOPY 0xF0 /* dest = pattern */
++#define ROP_PATPAINT 0xFB /* dest = DPSnoo */
++#define ROP_PATINVERT 0x5A /* dest = pattern XOR dest */
++#define ROP_DSTINVERT 0x55 /* dest = NOT dest */
++#define ROP_BLACKNESS 0x00 /* dest = BLACK */
++#define ROP_WHITENESS 0xFF /* dest = WHITE */
++
++#define GE00R(addr) (addr + GE_OFFSET + 0x00) /* primary drawing command
++ register */
++#define GE01R(addr) (addr + GE_OFFSET + 0x04) /* primary width and
++ height register */
++#define GE02R(addr) (addr + GE_OFFSET + 0x08) /* primary destination
++ address register */
++#define GE03R(addr) (addr + GE_OFFSET + 0x0c) /* primary source XY
++ register */
++#define GE04R(addr) (addr + GE_OFFSET + 0x10) /* primary color compare
++ register */
++#define GE05R(addr) (addr + GE_OFFSET + 0x14) /* primary clip left/top
++ register */
++#define GE06R(addr) (addr + GE_OFFSET + 0x18) /* primary clip
++ right/bottom register
++ */
++#define GE07R(addr) (addr + GE_OFFSET + 0x1c) /* primary source and
++ pattern offset
++ register */
++#define GE08R(addr) (addr + GE_OFFSET + 0x20) /* primary foreground
++ color
++ register/rectangle
++ fill register */
++#define GE09R(addr) (addr + GE_OFFSET + 0x24) /* source stride/offset
++ register */
++#define GE0AR(addr) (addr + GE_OFFSET + 0x28) /* destination stride
++ register and color
++ depth */
++#define GE0BR(addr) (addr + GE_OFFSET + 0x2c) /* image base address
++ register */
++#define GE40R(addr) (addr + GE_OFFSET + 0x100) /* mono pattern register
++ 0 */
++#define GE41R(addr) (addr + GE_OFFSET + 0x104) /* mono pattern register
++ 1 */
++#define GE42R(addr) (addr + GE_OFFSET + 0x108) /* foreground color
++ register */
++#define GE43R(addr) (addr + GE_OFFSET + 0x10c) /* background color
++ register */
++/* color palette */
++#define C1xxR(addr, regno) \
++ (addr + CP1_OFFSET + (regno) * 4) /* graphics controller color
++ palette 1 */
++/* device configuration */
++#define DC00R(addr) (addr + DC_OFFSET + 0x00) /* device configuration
++ register 0 */
++#define DC_RESET 0x4000
++/* PCI configuration space */
++#define PC00R(addr) (addr + PCI_OFFSET + 0x00)/* device ID/vendor ID
++ register */
++/* Flatpanel Control */
++#define FP00R(addr) (addr + FPI_OFFSET + 0x00) /* Flat Panel Control 0 */
++#define FP01R(addr) (addr + FPI_OFFSET + 0x04) /* Flat Panel Output Pin */
++#define FP02R(addr) (addr + FPI_OFFSET + 0x08) /* Flat Panel Gener Purpose
++ Outout Control Register */
++#define FP03R(addr) (addr + FPI_OFFSET + 0x0c) /* General Purpose I/O Port
++ Control Register */
++#define FP04R(addr) (addr + FPI_OFFSET + 0x10) /* STN Panel Control Register */
++#define FP05R(addr) (addr + FPI_OFFSET + 0x14) /* D-STN Half Frame Buffer
++ Control Register -By Guess */
++#define FP0FR(addr) (addr + FPI_OFFSET + 0x3c) /* Pulse Width Modulation
++ Control Register */
++#define FRCTL_PATTERN_COUNT 32
++#define FP10R(addr) (addr + FPI_OFFSET + 0x40) /* Frame-Rate Control Pattern
++ Register */
++#define FP11R(addr) (addr + FPI_OFFSET + 0x44)
++#define FP2FR(addr) (addr + FPI_OFFSET + 0xc0) /* Frame-Rate Control Weight
++ Registers */
++
++
++
++
++/* power management miscellaneous control */
++union pm00r {
++ struct {
++ u32 pll1_n_b5 :1; /* PLL 1 N parameter bit 5 is 0 */
++ u32 reserved_1 :1;
++ u32 pll2_enbl :1; /* PLL 2 enable */
++ u32 pll3_enbl :1; /* PLL 3 enable */
++ u32 reserved_2 :1;
++ u32 pwr_st_ctrl :1; /* power state status control */
++ u32 reserved_3 :2;
++
++ u32 ge_enbl :1; /* graphics engine enable */
++ u32 ge_bsy_gl :1; /* graphics engine force busy (global) */
++ u32 ge_bsy_lcl :1; /* graphics engine force busy (local) */
++ u32 ge_clock :2; /* graphics engine clock select */
++ u32 ge_cmd_fifo :1; /* graphics engine command FIFO reset */
++ u32 ge_src_fifo :1; /* graphics engine CPU source FIFO reset */
++ u32 miu_pwr_seq :1; /* memory interface unit power sequencing
++ enable */
++
++ u32 d3_mem_rfsh :1; /* D3 memory refresh */
++ u32 d4_mem_rfsh :1; /* D4 memory refresh */
++ u32 gpwr_intrvl :2; /* general power sequencing interval */
++ u32 fppwr_intrvl:2; /* flat panel power sequencing interval */
++ u32 gpwr_seq_ctr:1; /* general power sequencing interval control */
++ u32 pmu_tm :1; /* PMU test mode */
++
++ u32 pwr_state :2; /* power state (read only) */
++ u32 pwr_seq_st :1; /* power sequencing active status (read
++ only) */
++ u32 reserved_4 :5;
++ } part;
++ u32 whole;
++};
++
++/* D1 state control */
++union pm01r {
++ struct {
++ u32 osc_enbl :1; /* D1 oscillator enable */
++ u32 pll1_enbl :1; /* D1 PLL 1 enable */
++ u32 pll2_enbl :1; /* D1 PLL 2 enable */
++ u32 pll3_enbl :1; /* D1 PLL 3 enable */
++ u32 miu_enbl :1; /* D1 Memory Interface Unit (MIU) enable */
++ u32 mem_rfsh :1; /* D1 memory refresh enable */
++ u32 ge_enbl :1; /* D1 Graphics Engine (GE) enable */
++ u32 reserved_1 :1;
++
++ u32 crt_enbl :1; /* D1 CRT enable */
++ u32 fpd_enbl :1; /* D1 Flat Panel enable */
++ u32 reserved_2 :6;
++
++ u32 ctl1_enbl :1; /* D1 controller 1 enable */
++ u32 win1_enbl :1; /* D1 window 1 enable */
++ u32 awin1_enbl :1; /* D1 alternate window 1 enable */
++ u32 cur1_enbl :1; /* D1 cursor 1 enable */
++ u32 reserved_3 :4;
++
++ u32 ctl2_enbl :1; /* D1 controller 2 enable */
++ u32 win2_enbl :1; /* D1 window 2 enable */
++ u32 awin2_enbl :1; /* D1 alternate window 2 enable */
++ u32 cur2_enbl :1; /* D1 cursor 2 enable */
++ u32 reserved_4 :4;
++ } part;
++ u32 whole;
++};
++
++/* D2 state control */
++union pm02r {
++ struct {
++ u32 osc_enbl :1; /* D2 oscillator enable */
++ u32 pll1_enbl :1; /* D2 PLL 1 enable */
++ u32 pll2_enbl :1; /* D2 PLL 2 enable */
++ u32 pll3_enbl :1; /* D2 PLL 3 enable */
++ u32 miu_enbl :1; /* D2 Memory Interface Unit (MIU) enable */
++ u32 mem_rfsh :1; /* D2 memory refresh enable */
++ u32 ge_enbl :1; /* D2 Graphics Engine (GE) enable */
++ u32 reserved_1 :1;
++
++ u32 crt_enbl :1; /* D2 CRT enable */
++ u32 fpd_enbl :1; /* D2 Flat Panel enable */
++ u32 reserved_2 :6;
++
++ u32 ctl1_enbl :1; /* D2 controller 1 enable */
++ u32 win1_enbl :1; /* D2 window 1 enable */
++ u32 awin1_enbl :1; /* D2 alternate window 1 enable */
++ u32 cur1_enbl :1; /* D2 cursor 1 enable */
++ u32 reserved_3 :4;
++
++ u32 ctl2_enbl :1; /* D2 controller 2 enable */
++ u32 win2_enbl :1; /* D2 window 2 enable */
++ u32 awin2_enbl :1; /* D2 alternate window 2 enable */
++ u32 cur2_enbl :1; /* D2 cursor 2 enable */
++ u32 reserved_4 :4;
++ } part;
++ u32 whole;
++};
++
++/* PLL 2 programming */
++union pm06r {
++ struct {
++ u32 clk_src :1; /* PLL 2 reference clock source */
++ u32 bypass :1; /* PLL 2 bypass */
++ u32 reserved_1 :2;
++ u32 p_par :3; /* PLL 2 P parameter */
++ u32 reserved_2 :1;
++
++ u32 n_par :5; /* PLL 2 N parameter */
++ u32 reserved_3 :3;
++
++ u32 m_par :8; /* PLL 2 M parameter */
++
++ u32 reserved_4 :4;
++ u32 trim :4; /* PLL 2 trim value */
++ } part;
++ u32 whole;
++};
++
++/* PLL 3 programming */
++union pm07r {
++ struct {
++ u32 clk_src :1; /* PLL 3 reference clock source */
++ u32 bypass :1; /* PLL 3 bypass */
++ u32 reserved_1 :2;
++ u32 p_par :3; /* PLL 3 P parameter */
++ u32 reserved_2 :1;
++
++ u32 n_par :5; /* PLL 3 N parameter */
++ u32 reserved_3 :3;
++
++ u32 m_par :8; /* PLL 3 M parameter */
++
++ u32 reserved_4 :4;
++ u32 trim :4; /* PLL 3 trim value */
++ } part;
++ u32 whole;
++};
++
++
++
++/* MIU interface control 1 */
++union mm00r {
++ struct {
++ u32 miu_enbl :1; /* MIU enable bit */
++ u32 mr_dsbl :1; /* MIU reset disable bit */
++ u32 edr_dsbl :1; /* embedded DRAM reset disable bit */
++ u32 reserved_1 :29;
++ } part;
++ u32 whole;
++};
++
++/* MIU interface control 2 */
++union mm01r {
++ struct {
++ u32 mc_src :1; /* memory clock source */
++ u32 msr_enbl :1; /* memory slow refresh enable bit */
++ u32 pb_cpu :1; /* page break enable for CPU */
++ u32 pb_gc1 :1; /* page break enable for GC1 */
++ u32 pb_gc2 :1; /* page break enable for GC2 */
++ u32 pb_stn_r :1; /* page break enable for STN read */
++ u32 pb_stn_w :1; /* page break enable for STN write */
++ u32 pb_ge :1; /* page break enable for GE */
++ u32 reserved_1 :4;
++ u32 mr_interval :14; /* normal memory refresh time interval */
++ u32 reserved_2 :4;
++ u32 edarm_enbl :1; /* embedded DRAM auto-refresh mode enable */
++ u32 eds_enbl :1; /* EDRAM standby enable for EDRAM normal
++ mode operation */
++ } part;
++ u32 whole;
++};
++
++/* memory interface control 3 */
++union mm02r {
++ struct {
++ u32 bs_ :2;
++ u32 bs_stnr :2; /* burst count for STN read memory cycles */
++ u32 bs_stnw :2; /* burst count for STN write memroy cycles */
++ u32 bs_ge :2; /* burst count for graphics engine
++ read/write memroy cycles */
++ u32 bs_cpuw :2; /* burst count for CPU write memory cycles */
++ u32 fifo_gc1 :4; /* GC1 display refresh FIFO threshold */
++ u32 fifo_gc2 :4; /* GC2 display refresh FIFO threshold */
++ u32 fifo_stnr :4; /* STN read FIFO threshold */
++ u32 fifo_stnw :4; /* STN write FIFO threshold */
++ u32 fifo_ge_src :3; /* GE source read FIFO threshold */
++ u32 fifo_ge_dst :3; /* GE destination read FIFO threshold */
++ } part;
++ u32 whole;
++};
++
++/* memory interface control 4 */
++union mm03r {
++ struct {
++ u32 rd_late_req :1; /* read latency request */
++ u32 reserved_1 :31;
++ } part;
++ u32 whole;
++};
++
++/* memory interface control 5 */
++union mm04r {
++ struct {
++ u32 latency :3; /* EDRAM latency */
++ u32 dmm_cyc :1; /* enable for the dummy cycle insertion
++ between read and write cycles */
++ u32 pre_dmm_cyc :1; /* enable for the dummy cycle insertion
++ between read/write and precharge cycles
++ for the same bank */
++ u32 reserved_1 :3;
++ u32 bnk_act_cls :2; /* bank activate command to bank close
++ command timing interval control */
++ u32 bnk_act_rw :1; /* bank activate command to read/wirte
++ command timing interval control */
++ u32 bnk_cls_act :1; /* bank close command to bank activate
++ command timing interval control */
++ u32 trc :1; /* row cycle time */
++ u32 reserved_2 :3;
++ u32 delay_r :2; /* programmable delay for read clock */
++ u32 delay_m :2; /* programmable delay for internal memory
++ clock */
++ } part;
++ u32 whole;
++};
++
++/* graphics controller 1 register */
++union gc00r {
++ struct {
++ u32 ctl_enbl :1; /* Controller 1 Enable */
++ u32 hc_reset :1; /* Horizontal Counter 1 Reset */
++ u32 vc_reset :1; /* Vertical Counter 1 Reset */
++ u32 iwin_enbl :1; /* Image Window 1 Enable */
++ u32 gcd :4; /* Graphics Color Depth (GCD) */
++
++ u32 hc_enbl :1; /* Hardware Cursor 1 Enable */
++ u32 reserved_1 :2;
++ u32 aiwin_enbl :1; /* Alternate Image Window Enable */
++ u32 agcd :4; /* Alternate Graphics Color Depth (AGCD) */
++
++ u32 g1rclk_src :2; /* G1RCLK Source */
++ u32 tm0 :1; /* Test Mode 0 */
++ u32 tm1 :1; /* Test Mode 1 */
++ u32 fd :3; /* G1MCLK First Clock Divisor (FD1) */
++ u32 reserved_2 :1;
++
++ u32 sd :8; /* G1MCLK Second Clock Divisor (SD1) */
++ } part;
++ u32 whole;
++};
++
++/* graphics controller CRT control */
++union gc01r {
++ struct {
++ u32 dac_enbl :2; /* CRT DAC enable */
++ u32 hsync_out :1; /* CRT HSYNC output during power down mode */
++ u32 vsync_out :1; /* CRT VSYNC output during power down mode */
++ u32 hsync_ctl :2; /* CRT HSYNC control */
++ u32 vsync_ctl :2; /* CRT VSYNC control */
++ /**/
++ u32 hsync_pol :1; /* CRT HSYNC polarity */
++ u32 vsync_pol :1; /* CRT VSYNC polarity */
++ u32 sync_p_enbl :1; /* sync pedestal enable */
++ u32 blnk_p_enbl :1; /* blank pedestal enable */
++ u32 c_sync_enbl :1; /* composite sync enable */
++ u32 vref_sel :1; /* VREF select */
++ u32 mn_sns_enbl :1; /* monitor sense enable */
++ u32 ct_out_enbl :1; /* constant output enable */
++ /**/
++ u32 dac_out_lvl :8; /* monitor sense DAC output level */
++ /**/
++ u32 blue_dac_r :1; /* blue DAC sense result */
++ u32 green_dac_r :1; /* green DAC sense result */
++ u32 red_dac_r :1; /* red DAC sense result */
++ u32 reserved_1 :1;
++ u32 mon_col_sel :1; /* mono/color monitor select */
++ u32 reserved_2 :3;
++ } part;
++ u32 whole;
++};
++
++/* horizontal display 1 control */
++union gc02r {
++ struct {
++ u32 hd1t :12; /* horizontal display 1 total */
++ u32 reserved_1 :4;
++
++ u32 hd1e :12; /* horizontal display 1 end */
++ u32 reserved_2 :4;
++ } part;
++ u32 whole;
++};
++
++/* vertical display 1 control */
++union gc03r {
++ struct {
++ u32 vd1t :12; /* vertical display 1 total */
++ u32 reserved_1 :4;
++
++ u32 vd1e :12; /* vertical display 1 end */
++ u32 reserved_2 :4;
++ } part;
++ u32 whole;
++};
++
++/* horizontal sync 1 control */
++union gc04r {
++ struct {
++ u32 hs1s :12; /* horizontal sync 1 start */
++ u32 reserved_1 :4;
++
++ u32 hs1e :12; /* horizontal sync 1 end */
++ u32 reserved_2 :4;
++ } part;
++ u32 whole;
++};
++
++/* vertical sync 1 control */
++union gc05r {
++ struct {
++ u32 vs1s :12; /* vertical sync 1 start */
++ u32 reserved_1 :4;
++
++ u32 vs1e :12; /* vertical sync 1 end */
++ u32 reserved_2 :4;
++ } part;
++ u32 whole;
++};
++
++/* vertical display 1 count */
++union gc07r {
++ struct {
++ u32 vd_cnt :12; /* vertical display 1 count */
++ u32 reverved_1 :20;
++ } part;
++ u32 whole;
++};
++
++/* horizontal window 1 control */
++union gc08r {
++ struct {
++ u32 hw1s :12; /* horizontal window 1 start (HW1S) */
++ u32 reserved_1 :4;
++
++ u32 hw1w :12; /* horizontal window 1 width (HW1W) */
++ u32 w1ald :4; /* window 1 additional line data */
++ } part;
++ u32 whole;
++};
++
++/* vertical window 1 control */
++union gc09r {
++ struct {
++ u32 vw1s :12; /* vertical window 1 start */
++ u32 reserved_1 :4;
++ u32 vw1h :12; /* vertical window 1 height */
++ u32 reserved_2 :4;
++ } part;
++ u32 whole;
++};
++
++/* window 1 start address */
++union gc0cr {
++ struct {
++ u32 w1sa :21; /* window 1 start address */
++ u32 reserved_1 :11;
++ } part;
++ u32 whole;
++};
++
++/* window 1 stride */
++union gc0er {
++ struct {
++ s16 w1st; /* window 1 stride */
++ s16 aw1st; /* alternate window 1 stride */
++ } part;
++ u32 whole;
++};
++
++/* hardware cursor 1 position */
++union gc10r {
++ struct {
++ u32 hc1s :12; /* horizontal cursor 1 start */
++ u32 reserved_1 :4;
++ u32 vc1s :12; /* vertical cursor 1 start */
++ u32 reserved_2 :4;
++ } part;
++ u32 whole;
++};
++
++/* hardware cursor 1 start address and offset */
++union gc11r {
++ struct {
++ u32 hc1sa :11; /* hardware cursor 1 start address */
++ u32 reserved_1 :5;
++ u32 hc1o :6; /* horizontal cursor 1 offset */
++ u32 reserved_2 :2;
++ u32 vc1o :6; /* vertical cursor 1 offset */
++ u32 reserved_3 :2;
++ } part;
++ u32 whole;
++};
++
++/* hardware cursor 1 foreground color */
++union gc12r {
++ struct {
++ u32 hc1fc :24; /* hardware cursor 1 foreground color */
++ u32 reserved_1 :8;
++ } part;
++ u32 whole;
++};
++
++/* hardware cursor 1 background color */
++union gc13r {
++ struct {
++ u32 hc1bc :24; /* hardware cursor 1 background color */
++ u32 reserved_1 :8;
++ } part;
++ u32 whole;
++};
++
++
++/* graphics controller 2 register */
++union gc20r {
++ struct {
++ u32 ctl_enbl :1; /* Controller 2 Enable */
++ u32 hc_reset :1; /* Horizontal Counter 2 Reset */
++ u32 vc_reset :1; /* Vertical Counter 2 Reset */
++ u32 iwin_enbl :1; /* Image Window 2 Enable */
++ u32 gcd :4; /* Graphics Color Depth (GCD) */
++
++ u32 hc_enbl :1; /* Hardware Cursor 2 Enable */
++ u32 reserved_1 :2;
++ u32 aiwin_enbl :1; /* Alternate Image Window Enable */
++ u32 agcd :4; /* Alternate Graphics Color Depth (AGCD) */
++
++ u32 g2rclk_src :2; /* G2RCLK Source */
++ u32 tm0 :1; /* Test Mode 0 */
++ u32 tm1 :1; /* Test Mode 1 */
++ u32 fd :3; /* G2MCLK First Clock Divisor (FD1) */
++ u32 reserved_2 :1;
++
++ u32 sd :8; /* G2MCLK Second Clock Divisor (SD1) */
++ } part;
++ u32 whole;
++};
++
++/* graphics controller CRC control */
++union gc21r {
++ struct {
++ u32 crc_enbl :1; /* CRC enable */
++ u32 vsync_wait :1; /* CRC input data control waitime of VSYNC */
++ u32 crc_o_sel :2; /* CRC output select */
++ u32 reserved_1 :4;
++ u32 crc_result :22; /* CRC result (read only) */
++ u32 reserved_2 :2;
++ } part;
++ u32 whole;
++};
++
++/* horizontal display 2 control */
++union gc22r {
++ struct {
++ u32 hd2t :12; /* horizontal display 2 total */
++ u32 reserved_1 :4;
++
++ u32 hd2e :12; /* horizontal display 2 end */
++ u32 reserved_2 :4;
++ } part;
++ u32 whole;
++};
++
++/* vertical display 2 control */
++union gc23r {
++ struct {
++ u32 vd2t :12; /* vertical display 2 total */
++ u32 reserved_1 :4;
++
++ u32 vd2e :12; /* vertical display 2 end */
++ u32 reserved_2 :4;
++ } part;
++ u32 whole;
++};
++
++/* horizontal sync 2 control */
++union gc24r {
++ struct {
++ u32 hs2s :12; /* horizontal sync 2 start */
++ u32 reserved_1 :4;
++
++ u32 hs2e :12; /* horizontal sync 2 end */
++ u32 reserved_2 :4;
++ } part;
++ u32 whole;
++};
++
++/* vertical sync 2 control */
++union gc25r {
++ struct {
++ u32 vs2s :12; /* vertical sync 2 start */
++ u32 reserved_1 :4;
++
++ u32 vs2e :12; /* vertical sync 2 end */
++ u32 reserved_2 :4;
++ } part;
++ u32 whole;
++};
++
++/* vertical display 2 count */
++union gc27r {
++ struct {
++ u32 vd_cnt :12; /* vertical display 2 count */
++ u32 reverved_1 :20;
++ } part;
++ u32 whole;
++};
++
++/* horizontal window 2 control */
++union gc28r {
++ struct {
++ u32 hw2s :12; /* horizontal window 2 start (HW2S) */
++ u32 reserved_1 :4;
++
++ u32 hw2w :12; /* horizontal window 2 width (HW2W) */
++ u32 w2ald :4; /* window 2 additional line data */
++ } part;
++ u32 whole;
++};
++
++/* vertical window 2 control */
++union gc29r {
++ struct {
++ u32 vw2s :12; /* vertical window 2 start */
++ u32 reserved_1 :4;
++ u32 vw2h :12; /* vertical window 2 height */
++ u32 reserved_2 :4;
++ } part;
++ u32 whole;
++};
++
++/* window 2 start address */
++union gc2cr {
++ struct {
++ u32 w2sa :21; /* window 2 start address */
++ u32 reserved_1 :11;
++ } part;
++ u32 whole;
++};
++
++/* window 2 stride */
++union gc2er {
++ struct {
++ s16 w2st; /* window 2 stride */
++ s16 aw2st; /* alternate window 2 stride */
++ } part;
++ u32 whole;
++};
++
++/* hardware cursor 2 position */
++union gc30r {
++ struct {
++ u32 hc2s :12; /* horizontal cursor 2 start */
++ u32 reserved_1 :4;
++ u32 vc2s :12; /* vertical cursor 2 start */
++ u32 reserved_2 :4;
++ } part;
++ u32 whole;
++};
++
++/* hardware cursor 2 start address and offset */
++union gc31r {
++ struct {
++ u32 hc2sa :11; /* hardware cursor 2 start address */
++ u32 reserved_1 :5;
++ u32 hc2o :6; /* horizontal cursor 2 offset */
++ u32 reserved_2 :2;
++ u32 vc2o :6; /* vertical cursor 2 offset */
++ u32 reserved_3 :2;
++ } part;
++ u32 whole;
++};
++
++/* hardware cursor 2 foreground color */
++union gc32r {
++ struct {
++ u32 hc2fc :24; /* hardware cursor 2 foreground color */
++ u32 reserved_1 :8;
++ } part;
++ u32 whole;
++};
++
++/* hardware cursor 2 background color */
++union gc33r {
++ struct {
++ u32 hc2bc :24; /* hardware cursor 2 background color */
++ u32 reserved_1 :8;
++ } part;
++ u32 whole;
++};
++
++
++/* primary drawing command register */
++union ge00r {
++ struct {
++ u32 rop :8; /* raster operation */
++ /**/
++ u32 cmd_typ :3; /* command type */
++ u32 x_dir :1; /* x direction */
++ u32 y_dir :1; /* y direction */
++ u32 src_mem :1; /* source memory */
++ u32 mon_src :1; /* mono source */
++ u32 mon_ptn :1; /* mono pattern */
++ /**/
++ u32 dst_trns_e :1; /* destination transparency enable */
++ u32 dst_trns_p :1; /* destination transparency polarity */
++ u32 mon_trns_e :1; /* mono source or mono pattern transparency
++ enable */
++ u32 mon_trns_p :1; /* mono transparency polarity */
++ u32 mod_sel :1; /* memory to screen or off screen to screen
++ mode select */
++ u32 alpha_sel :2; /* Alpha byte mask selection */
++ u32 sol_col :1; /* solid color */
++ /**/
++ u32 stride_eq :1; /* source stride is equal to destination
++ stride */
++ u32 rop2_sel :1; /* ROP2 code selection */
++ u32 clipping :1; /* enable clipping */
++ u32 auto_exec :1; /* auto execute */
++ u32 reserved_1 :4;
++ } part;
++ u32 whole;
++};
++
++/* primary width and height register */
++union ge01r {
++ struct {
++ u32 width :12; /* source/destination window width */
++ u32 reserved_1 :4;
++
++ u32 height :12; /* source/destination window height */
++ u32 reserved_2 :1;
++ u32 reserved_3 :3;
++ } bitblt;
++ struct {
++ u32 dm :17;
++ u32 axis_major :12;
++ u32 x_y :1; /* x-major or y-major */
++ u32 last_pix :1; /* decision to draw or not to draw the last
++ pixel of the line */
++ u32 reserved_1 :1;
++ } bresenham;
++ u32 whole;
++};
++
++/* primary destination address register */
++union ge02r {
++ struct {
++ u32 dst_x :12; /* destination x position */
++ u32 reserved_1 :1;
++ u32 h_offset :3; /* mono/color pattern horizontal offset */
++
++ u32 dst_y :12; /* destination y position */
++ u32 reserved_2 :1;
++ u32 v_offset :3; /* mono/color pattern vertical offset */
++ } window;
++ struct {
++ u32 x :12; /* starting x coordinate */
++ u32 dm :17; /* 17 bits major-axis delta */
++ u32 reserved_1 :3;
++ } line;
++ u32 whole;
++};
++
++/* source XY register/line draw starting Y coordinate and mintor axis delta */
++union ge03r {
++ struct {
++ u32 src_x :12; /* source X position */
++ u32 reserved_1 :4;
++
++ u32 src_y :12; /* source Y position */
++ u32 reserved_2 :4;
++ } window;
++ struct {
++ u32 start_y :12; /* starting Y coordinate */
++ u32 dn :17; /* 17 bits minor-axis delta */
++ u32 reserved_1 :3;
++ } line;
++ u32 whole;
++};
++
++/* clip left/top register */
++union ge05r {
++ struct {
++ u32 left :12; /* left edge of clipping rectangle */
++ u32 reserved_1 :4;
++
++ u32 top :12; /* top edge of clipping rectangle */
++ u32 reserved_2 :4;
++ } part;
++ u32 whole;
++};
++
++/* source stride/offset register */
++union ge09r {
++ struct {
++ u32 src_strid :12; /* source line stride */
++ u32 reserved_1 :13;
++ u32 strt_bit :3; /* initial mono source bit offset */
++ u32 strt_byte :3; /* initial mono/color source byte offset */
++ u32 reserved_2 :1;
++ } line;
++ struct {
++ u32 strt_bit :5; /* initial mono source bit offset */
++ u32 reserved_1 :1;
++ u32 amount :10; /* number of 16 bytes amount that MIU need
++ to fetch from frame buffer */
++
++ u32 reserved_2 :9;
++ u32 bit_spc :7; /* bit space between lines */
++ } pack_mono;
++ struct {
++ u32 strt_bit :3; /* initial mono source bit offset */
++ u32 strt_byte :3; /* initial mono/color source byte offset */
++ u32 amount :10; /* number of 16 bytes amount that MIU need
++ to fetch from frame buffer */
++
++ u32 reserved_1 :9;
++ u32 bit_spc :3; /* bit space between lines */
++ u32 byt_spc :4; /* byte space between lines */
++ } pack_color;
++ u32 whole;
++};
++
++/* destination stride register and color depth */
++union ge0ar {
++ struct {
++ u32 dst_strid :12; /* destination line stride and color depth */
++ u32 reserved_1 :18;
++ u32 col_dpth :2; /* color depth */
++ } part;
++ u32 whole;
++};
++
++/* graphics controller color pallete */
++union c1xxr {
++ struct {
++ u8 red; /* red color pallete */
++ u8 green; /* green/gray color pallete */
++ u8 blue; /* blue color palette */
++ u8 reserved_1;
++ } part;
++ u32 whole;
++};
++
++/* devicee configuration register 0 */
++union dc00r {
++ struct {
++ u32 osc_bypass :1; /* oscillator bypass */
++ u32 osc_enbl :1; /* oscillator enable */
++ u32 pll1_bypass :1; /* PLL1 bypass */
++ u32 pll1_enbl :1; /* PLL1 enable */
++ u32 pll1_p_par :3; /* PLL1 P parameter */
++ u32 cpu_div :1; /* CPU interface clock divisor */
++ u32 pll1_n_par :5; /* PLL1 N parameter */
++ u32 saisc :1; /* StrongARM interface synchronizer control */
++ u32 s_chp_reset :1; /* software chip reset */
++ u32 mem_enbl :1; /* memory standby enable */
++ u32 pll1_m_par :8; /* PLL 1 M parameter */
++ u32 osc_shaper :1; /* oscillator shaper disable */
++ u32 fast_pwr :1; /* fast power sequencing */
++ u32 osc_frq :2; /* oscillator frequency select */
++ u32 pll1_trim :4; /* PLL 1 trim value */
++ } part;
++ u32 whole;
++};
++
++/* device ID/vendor ID register */
++union pc00r {
++ struct {
++ u16 device; /* device ID */
++ u16 vendor; /* vendor ID */
++ } part;
++ u32 whole;
++};
++
++/* Flat Panel Control Register */
++union fp00r {
++ struct {
++ u32 flatp_enbl : 2; /* Flat Panel Interface Enable */
++ u32 flatp_type : 2; /* Flat Panel Type */
++ u32 mono : 1; /* Mono/Color Panel Select */
++ u32 flatp_intf : 3; /* Flat Panel Interface */
++ u32 dither_pat : 2; /* Dither Pattern */
++ u32 reserved : 2; /* Reserved Must Be 0*/
++ u32 dither_col : 3; /* Dither Base Color */
++ u32 alt_win_ctl: 1; /* Alternate Window Control */
++ u32 frc_ctl : 2; /* FRC Control */
++ u32 dither_adj1: 6; /* Dither Pattern Adjust 1 */
++ u32 dither_adj2: 3; /* Dither Pattern Adjust 2 */
++ u32 dither_adj3: 1; /* Dither Pattern Adjust 3 */
++ u32 test_mode0 : 1; /* Test Mode 0 */
++ u32 test_mode1 : 1; /* Test Mode 1 */
++ u32 test_mode2 : 1; /* Test Mode 2 */
++ u32 test_mode3 : 1; /* Test Mode 3 */
++ } part;
++ u32 whole;
++};
++
++union fp01r {
++ struct {
++ u32 dummy;
++ } part;
++ u32 whole;
++};
++
++union fp02r {
++ struct {
++ u32 dummy;
++ } part;
++ u32 whole;
++};
++
++union fp03r {
++ struct {
++ u32 dummy;
++ } part;
++ u32 whole;
++};
++
++union fp04r {
++ struct {
++ u32 dummy;
++ } part;
++ u32 whole;
++};
++
++union fp05r {
++ struct {
++ u32 dummy;
++ } part;
++ u32 whole;
++};
++
++union fp0fr {
++ struct {
++ u32 dummy;
++ } part;
++ u32 whole;
++};
++
++
++
++
++/****
++ * Others
++ */
++
++#define CHIPNAME "MQ-200"
++
++extern void mq200_external_setpal(unsigned regno, unsigned long color, unsigned long addr);
++extern void mq200_external_setqmode(struct mq200_monitor_info*, unsigned long, spinlock_t *);
++extern void mq200_external_offdisplay(unsigned long);
++extern void mq200_external_ondisplay (unsigned long);
++extern int mq200_external_probe(unsigned long);
++
++
++
++#endif
+diff -uNr linux-2.6.21.vanilla/drivers/video/mq200/mq_external.c linux-2.6.21/drivers/video/mq200/mq_external.c
+--- linux-2.6.21.vanilla/drivers/video/mq200/mq_external.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.21/drivers/video/mq200/mq_external.c 2007-05-01 17:02:17.000000000 +0200
+@@ -0,0 +1,513 @@
++/*
++ * Copyright (C) 2005 Holger Hans Peter Freyther
++ *
++ * Based ON:
++ *
++ * linux/drivers/video/mq200fb.c -- MQ-200 for a frame buffer device
++ * based on linux/driver/video/pm2fb.c
++ *
++ * 2007/03/11 mrdata:
++ * bug found in gc1_reset(), renaming to gc1_gc2_reset()
++ * extend mq200_external_ondisplay() -> LCD for GC2 and CRT for GC1
++ *
++ * Copyright (C) 2000 Lineo, Japan
++ *
++ * 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.
++ */
++
++#include <asm/types.h>
++#include <asm/io.h>
++#include <linux/delay.h>
++#include <linux/spinlock.h>
++
++#include <asm/hardware.h>
++
++#include "mq200_data.h"
++
++
++#if 1
++#define PRINTK(args...) printk(args)
++#else
++#define PRINTK(args...)
++#endif
++
++
++/****
++ * power state transition to "state".
++ */
++static void
++power_state_transition(unsigned long register_base, int state)
++{
++ int i;
++ writel(state, PMCSR(register_base));
++ mdelay(300);
++ for (i = 1; ; i++) {
++ udelay(100);
++ if ((readl(PMCSR(register_base)) & 0x3) == state) {
++ break;
++ }
++ }
++}
++
++
++/****
++ * device configuration initialization.
++ */
++static void
++dc_reset(unsigned long register_base)
++{
++ union dc00r dc00r;
++
++ /* Reset First */
++ dc00r.whole = DC_RESET;
++ writel(dc00r.whole, DC00R(register_base));
++ mdelay(100);
++
++ dc00r.whole = 0xEF2082A;
++ writel(dc00r.whole, DC00R(register_base));
++ mdelay(300);
++ PRINTK(CHIPNAME ": DC00R = 0x%08X\n", readl(DC00R(register_base)));
++}
++
++
++/****
++ * initialize memory interface unit.
++ */
++static void
++miu_reset(unsigned long register_base)
++{
++ union mm00r mm00r;
++ union mm01r mm01r;
++ union mm02r mm02r;
++ union mm03r mm03r;
++ union mm04r mm04r;
++
++ /* MIU interface control 1 */
++ mm00r.whole = 0x4;
++ writel(mm00r.whole, MM00R(register_base));
++ mdelay(50);
++ writel(0, MM00R(register_base));
++ mdelay(50);
++
++ /* MIU interface control 2
++ * o PLL 1 output is used as memory clock source.
++ */
++ mm01r.whole = 0x4143e086;
++ writel(mm01r.whole, MM01R(register_base));
++
++ /* memory interface control 3 */
++ mm02r.whole = 0x6d6aabff;
++ writel(mm02r.whole, MM02R(register_base));
++
++ /* memory interface control 5 */
++ mm04r.whole = 0x10d;
++ writel(mm04r.whole, MM04R(register_base));
++
++ /* memory interface control 4 */
++ mm03r.whole = 0x1;
++ writel(mm03r.whole, MM03R(register_base));
++ mdelay(50);
++
++ /* MIU interface control 1 */
++ mm00r.whole = 0x3;
++ writel(mm00r.whole, MM00R(register_base));
++ mdelay(50);
++}
++
++/****
++ *
++ */
++static
++void fpctrl_reset(unsigned long addr)
++{
++ /*
++ * We're in D0 State, let us set the FPCTRL
++ */
++ union fp00r fp00r;
++ union fp01r fp01r;
++ union fp02r fp02r;
++ union fp03r fp03r;
++ union fp04r fp04r;
++ union fp0fr fp0fr;
++
++ fp00r.whole = 0x6320;
++ writel(fp00r.whole, FP00R(addr));
++
++ fp01r.whole = 0x20;
++ writel(fp01r.whole, FP01R(addr));
++
++ fp04r.whole = 0xBD0001;
++ writel(fp04r.whole, FP04R(addr));
++
++ /* Set Flat Panel General Purpose register first */
++ fp02r.whole = 0x0;
++ writel(fp02r.whole, FP02R(addr));
++
++ fp03r.whole = 0x0;
++ writel(fp03r.whole, FP03R(addr));
++
++ fp0fr.whole = 0xA16c44;
++ writel(fp0fr.whole, FP0FR(addr));
++
++ /* Set them again */
++ fp02r.whole = 0x0;
++ writel(fp02r.whole, FP02R(addr));
++
++ fp03r.whole = 0x0;
++ writel(fp03r.whole, FP03R(addr));
++}
++
++
++/****
++ * initialize power management unit.
++ */
++static void
++pmu_reset(unsigned long register_base)
++{
++ union pm00r pm00r;
++ union pm01r pm01r;
++ union pm02r pm02r;
++
++ /* power management miscellaneous control
++ * o GE is driven by PLL 1 clock.
++ */
++ pm00r.whole = 0xc0900;
++ writel(pm00r.whole, PM00R(register_base));
++
++ /* D1 state control */
++ pm01r.whole = 0x5000271;
++ writel(pm01r.whole, PM01R(register_base));
++
++ /* D2 state control */
++ pm02r.whole = 0x271;
++ writel(pm02r.whole, PM02R(register_base));
++}
++
++/****
++ * initialize graphics controller 1
++ * and graphics controller 2
++ */
++static void
++gc1_gc2_reset(unsigned long register_base, spinlock_t *lock )
++{
++ unsigned long flags;
++ union gc00r gc00r;
++ union gc01r gc01r;
++ union gc02r gc02r;
++ union gc03r gc03r;
++ union gc04r gc04r;
++ union gc05r gc05r;
++ union gc08r gc08r;
++ union gc09r gc09r;
++ union gc0cr gc0cr;
++ union gc0er gc0er;
++ union gc20r gc20r;
++ union gc22r gc22r;
++ union gc23r gc23r;
++ union gc24r gc24r;
++ union gc25r gc25r;
++ union gc28r gc28r;
++ union gc29r gc29r;
++ union gc2cr gc2cr;
++ union gc2er gc2er;
++
++ union pm00r pm00r;
++ union pm06r pm06r;
++ union pm06r pm07r;
++
++ spin_lock_irqsave(lock, flags);
++
++ /* alternate window 1 stride */
++ gc0er.whole = 0x640;
++ writel(gc0er.whole, GC0ER(register_base));
++
++ /* image window 1 start address */
++ gc0cr.whole = 0x0;
++ writel(gc0cr.whole, GC0CR(register_base));
++
++ /* alternate window 2 stride */
++ gc2er.whole = 0x640;
++ writel(gc0er.whole, GC2ER(register_base));
++
++ /* image window 2 start address */
++ gc2cr.whole = 0x0;
++ writel(gc2cr.whole, GC2CR(register_base));
++
++ /* read PM Register */
++ pm00r.whole = readl(PM00R(register_base));
++
++ /* horizontal window 1 control */
++ gc08r.whole = 0x131f0000;
++ writel(gc08r.whole, GC08R(register_base));
++
++ /* vertical window 1 control */
++ gc09r.whole = 0x12570000;
++ writel(gc09r.whole, GC09R(register_base));
++
++ /* horizontal display 1 control */
++ gc02r.whole = 0x320041e;
++ writel(gc02r.whole, GC02R(register_base));
++
++ /* vertical display 1 control */
++ gc03r.whole = 0x2570273;
++ writel(gc03r.whole, GC03R(register_base));
++
++ /* horizontal sync 1 control */
++ gc04r.whole = 0x3c70347;
++ writel(gc04r.whole, GC04R(register_base));
++
++ /* vertical sync 1 control */
++ gc05r.whole = 0x25d0259;
++ writel(gc05r.whole, GC05R(register_base));
++
++ /* graphics controller CRT control */
++ gc01r.whole = 0x800;
++ writel(gc01r.whole, GC01R(register_base));
++
++ /* PLL 2 programming */
++ pm06r.whole = 0xE90830;
++ writel(pm06r.whole, PM06R(register_base));
++
++ /* graphics controller 1 register
++ * o GC1 clock source is PLL 2.
++ * o hardware cursor is disabled.
++ */
++ gc00r.whole = 0x10000C8 | 0x20000;
++ writel(gc00r.whole, GC00R(register_base));
++
++#if 0
++ /* alternate horizontal window 1 control */
++ writel(0, GC0AR(register_base));
++
++ /* alternate vertical window 1 control */
++ writel(0, GC0BR(register_base));
++
++ /* window 1 start address */
++ writel(0x2004100, GC0CR(register_base));
++
++ /* alternate window 1 start address */
++ writel(0, GC0DR(register_base));
++
++ /* window 1 stride */
++ gc0er.whole = 0x5100048;
++ writel(gc0er.whole, GC0ER(register_base));
++
++ /* reserved register - ??? - */
++ writel(0x31f, GC0FR(register_base));
++#endif
++
++#if 0
++ /* hardware cursor 1 position */
++ writel(0, GC10R(register_base));
++
++ /* hardware cursor 1 start address and offset */
++ gc11r.whole = 0x5100048;
++ writel(gc11r.whole, GC11R(register_base));
++
++ /* hardware cursor 1 foreground color */
++ writel(0x00ffffff, GC12R(register_base));
++
++ /* hardware cursor 1 background color */
++ writel(0x00000000, GC13R(register_base));
++#endif
++
++ /* horizontal window 2 control */
++ gc28r.whole = 0x31f0000;
++ writel(gc28r.whole, GC28R(register_base));
++
++ /* vertical window 2 control */
++ gc29r.whole = 0x2570000;
++ writel(gc29r.whole, GC29R(register_base));
++
++ /* horizontal display 2 control */
++ gc22r.whole = 0x320041e;
++ writel(gc22r.whole, GC22R(register_base));
++
++ /* vertical display 2 control */
++ gc23r.whole = 0x2570273;
++ writel(gc23r.whole, GC23R(register_base));
++
++ /* horizontal sync 2 control */
++ gc24r.whole = 0x3c70347;
++ writel(gc24r.whole, GC24R(register_base));
++
++ /* vertical sync 2 control */
++ gc25r.whole = 0x25d0259;
++ writel(gc25r.whole, GC25R(register_base));
++
++ /* graphics controller CRT control */
++ gc01r.whole = 0x800;
++ writel(gc01r.whole, GC01R(register_base));
++
++ /* PLL 3 programming */
++ pm07r.whole = 0xE90830;
++ writel(pm07r.whole, PM07R(register_base));
++
++ /* graphics controller 2 register
++ * o GC2 clock source is PLL 3.
++ * o hardware cursor is disabled.
++ */
++ gc20r.whole = 0x10000C8 | 0x30000;
++ writel(gc20r.whole, GC20R(register_base));
++
++ /*
++ * Enable PLL2 and PLL3 in the PM Register
++ */
++ pm00r.part.pll2_enbl = 0x1;
++ pm00r.part.pll3_enbl = 0x1;
++ writel(pm00r.whole, PM00R(register_base));
++
++ spin_unlock_irqrestore(lock, flags);
++}
++
++
++/****
++ * initialize graphics engine.
++ */
++static void
++ge_reset(unsigned long register_base)
++{
++ /* drawing command register */
++ writel(0, GE00R(register_base));
++
++ /* promary width and height register */
++ writel(0, GE01R(register_base));
++
++ /* primary destination address register */
++ writel(0, GE02R(register_base));
++
++ /* primary source XY register */
++ writel(0, GE03R(register_base));
++
++ /* primary color compare register */
++ writel(0, GE04R(register_base));
++
++ /* primary clip left/top register */
++ writel(0, GE05R(register_base));
++
++ /* primary clip right/bottom register */
++ writel(0, GE06R(register_base));
++
++ /* primary source and pattern offset register */
++ writel(0, GE07R(register_base));
++
++ /* primary foreground color register/rectangle fill color depth */
++ writel(0, GE08R(register_base));
++
++ /* source stride/offset register */
++ writel(0, GE09R(register_base));
++
++ /* destination stride register and color depth */
++ writel(0, GE0AR(register_base));
++
++ /* image base address register */
++ writel(0, GE0BR(register_base));
++}
++
++/****
++ * initialize Color Palette 1.
++ */
++static void
++cp1_reset(unsigned long addr_info)
++{
++ int i;
++
++ for (i = 0; i < 256; i++)
++ writel(0, C1xxR(addr_info, i));
++}
++
++
++/*
++ * Below functions are called from the skeleton
++ */
++void mq200_external_setpal(unsigned regno, unsigned long color, unsigned long addr)
++{
++ writel(color,C1xxR(addr,regno));
++}
++
++void mq200_external_setqmode(struct mq200_monitor_info* info,
++ unsigned long addr, spinlock_t *lock)
++{
++ dc_reset(addr); /* device configuration */
++
++ power_state_transition(addr, 0); /* transition to D0 state */
++
++ pmu_reset(addr); /* power management unit */
++
++ miu_reset(addr); /* memory interface unit */
++
++ ge_reset(addr); /* graphics engine */
++
++ fpctrl_reset(addr); /* reset the panel settings */
++
++ gc1_gc2_reset(addr, lock); /* graphics controller 1 and 2 */
++
++ cp1_reset(addr); /* color palette 1 */
++
++ mq200_external_ondisplay(addr); /* LCD and CRT */
++}
++
++void mq200_external_offdisplay(unsigned long addr)
++{
++ /*
++ * Move the MQ200 to D3 mode
++ */
++ power_state_transition(addr, 3);
++}
++
++/**
++ * to be called after mq200_external_setqmode
++ */
++void mq200_external_ondisplay (unsigned long addr)
++{
++ /*
++ * Set the framebuffer details
++ */
++ union gc00r gc00r;
++ union gc01r gc01r;
++ union gc20r gc20r;
++ union fp00r fp00r;
++
++ /* enable LCD for GC2 */
++ fp00r.whole = readl(FP00R(addr));
++ fp00r.whole &= 0xfffffffc;
++
++ gc20r.whole = readl(GC20R(addr));
++
++ if(!(gc20r.whole & 0x1)) {
++ gc20r.whole |= 0x1;
++ writel(gc20r.whole, GC20R(addr));
++ }
++
++ fp00r.whole |= 0x3;
++ writel(fp00r.whole, FP00R(addr));
++
++ /* enable CRT for GC1 */
++ gc00r.whole = readl(GC00R(addr));
++
++ if(!(gc00r.whole & 0x1)) {
++ gc00r.whole |= 0x1;
++ writel(gc00r.whole, GC00R(addr));
++ }
++
++ gc01r.whole = readl(GC01R(addr));
++ gc01r.whole &= 0xfffffffc;
++
++ gc01r.whole |= 0x1;
++ writel(gc01r.whole, GC01R(addr));
++
++}
++
++int mq200_external_probe(unsigned long addr)
++{
++ union pc00r pc00r;
++ if(readl(PMR(addr)) != PMR_VALUE)
++ return 0;
++
++ pc00r.whole = readl(PC00R(addr));
++ printk(KERN_INFO "mq200 video driver found Vendor: 0x%X Device: 0x%X\n",
++ pc00r.part.device, pc00r.part.vendor);
++ return 1;
++}
+diff -uNr linux-2.6.21.vanilla/drivers/video/mq200/mq_skeleton.c linux-2.6.21/drivers/video/mq200/mq_skeleton.c
+--- linux-2.6.21.vanilla/drivers/video/mq200/mq_skeleton.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.21/drivers/video/mq200/mq_skeleton.c 2007-05-01 17:02:17.000000000 +0200
+@@ -0,0 +1,398 @@
++/*
++ * Author: Holger Hans Peter Freyther
++ *
++ *
++ * This implements the frame buffer driver interface to communicate
++ * with the kernel.
++ * It uses the mq200 routines from the ucLinux driver from Lineo
++ *
++ * 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/autoconf.h>
++#include <linux/platform_device.h>
++#include <linux/module.h>
++#include <linux/fb.h>
++#include <linux/types.h>
++#include <linux/spinlock.h>
++
++#include "mq200_data.h"
++
++#if CONFIG_SA1100_SIMPAD
++/*
++ * Siemens SIMpad specefic data
++ */
++#include <asm/arch/simpad.h>
++#include <asm/arch/hardware.h>
++
++#define MQ200_REGIONS simpad_mq200_regions
++#define MQ200_MONITOR simpad_mq200_panel
++
++static struct mq200_io_regions simpad_mq200_regions = {
++ .fb_size = MQ200_FB_SIZE,
++ .phys_mmio_base = 0x4be00000,
++ .virt_mmio_base = 0xf2e00000,
++ .phys_fb_base = 0x4b800000,
++ .virt_fb_base = 0xf2800000,
++};
++
++static struct mq200_monitor_info simpad_mq200_panel = {
++ .horizontal_res = 800,
++ .vertical_res = 600,
++ .depth = 16,
++ .refresh = 60,
++ .line_length = 1600,
++ .flags = 0x00130004,
++};
++
++extern long get_cs3_shadow(void);
++extern void set_cs3_bit(int value);
++extern void clear_cs3_bit(int value);
++#endif
++
++
++
++struct mq200_info {
++ struct fb_info fb_info;
++ struct mq200_io_regions io_regions;
++ struct mq200_monitor_info monitor_info;
++
++ /* palette */
++ u32 pseudo_palette[17]; /* 16 colors + 1 in reserve not that well documented... */
++ spinlock_t lock;
++};
++
++
++
++static int mq200_blank( int blank_mode, struct fb_info *info )
++{
++#ifdef CONFIG_SA1100_SIMPAD
++ if(blank_mode ){
++ clear_cs3_bit(DISPLAY_ON);
++ }else {
++ set_cs3_bit(DISPLAY_ON);
++ }
++#endif
++ return 0;
++}
++
++
++static int mq200_check_var(struct fb_var_screeninfo *var,
++ struct fb_info *info )
++{ /* TODO do we need sanity checks here */
++ return 0;
++}
++
++
++static int mq200_set_par( struct fb_info *info )
++{
++ /* TODO set paraemeter */
++ return 0;
++}
++
++static int mq200_setcolreg(unsigned regno, unsigned red, unsigned green,
++ unsigned blue, unsigned transp,
++ struct fb_info *info )
++{
++ struct mq200_info *p;
++ unsigned long color;
++ u32* pal = info->pseudo_palette;
++
++ p = info->par;
++
++ if(regno > 255 )
++ return 1;
++
++ switch( info->var.bits_per_pixel ){
++ case 16:
++ pal[regno] =
++ ((red & 0xf800) >> 0) |
++ ((green & 0xf800) >> 5) | ((blue & 0xf800) >> 11);
++ break;
++ case 24:
++ pal[regno] =
++ ((red & 0xff00) << 8) |
++ ((green & 0xff00)) | ((blue & 0xff00) >> 8);
++ break;
++ case 32:
++ pal[regno] =
++ ((red & 0xff00) >> 8) |
++ ((green & 0xff00)) | ((blue & 0xff00) << 8);
++ break;
++ default:
++ break;
++ }
++
++ red &= 0xFF;
++ green &= 0xFF;
++ blue &= 0xFF;
++
++ color = red | (green << 8) | (blue << 16);
++ mq200_external_setpal(regno, color, p->io_regions.virt_mmio_base);
++
++ return 0;
++}
++
++
++static struct fb_ops mq200_ops = {
++ .owner = THIS_MODULE,
++ .fb_check_var = mq200_check_var,
++ .fb_set_par = mq200_set_par,
++ .fb_setcolreg = mq200_setcolreg,
++#ifdef FB_SOFT_CURSOR
++ .fb_cursor = soft_cursor, /* FIXME use hardware cursor */
++#endif
++ .fb_fillrect = cfb_fillrect,
++ .fb_copyarea = cfb_copyarea,
++ .fb_imageblit = cfb_imageblit,
++ .fb_blank = mq200_blank,
++};
++
++
++/*********************************************************************
++ *
++ * Device driver and module init code
++ * this will register to the fb layer later
++ *
++ *********************************************************************/
++static void mq200_internal_init_color( struct fb_bitfield* red,
++ struct fb_bitfield* green,
++ struct fb_bitfield* blue,
++ int bpp )
++{
++ switch ( bpp )
++ {
++ case 16:
++ red->offset = 11;
++ green->offset = 5;
++ blue->offset = 0;
++
++ red->length = 5;
++ green->length = 6;
++ blue->length = 5;
++ break;
++ case 24:
++ red->offset = 16;
++ green->offset = 8;
++ blue->offset = 0;
++
++ red->length = 8;
++ green->length = 8;
++ blue->length = 8;
++ break;
++ case 32:
++ red->offset = 0;
++ green->offset = 8;
++ blue->offset = 16;
++
++ red->length = 8;
++ green->length = 8;
++ blue->length = 8;
++ case 8: /* fall through */
++ default:
++ red->offset = green->offset = blue->offset = 0;
++ red->length = green->length = blue->length = bpp;
++ break;
++ }
++
++}
++
++
++static struct mq200_info* __init mq200_internal_init_fbinfo(void)
++{
++ struct mq200_info *info = NULL;
++
++ info = (struct mq200_info*)kmalloc(sizeof(*info), GFP_KERNEL);
++ if(!info)
++ return NULL;
++
++ /*
++ * Initialize memory
++ */
++ memset(info, 0, sizeof(struct mq200_info) );
++ spin_lock_init(&info->lock);
++
++ /* set the base IO addresses */
++ info->io_regions = MQ200_REGIONS;
++ info->monitor_info = MQ200_MONITOR;
++
++ info->fb_info.screen_base = (char *)info->io_regions.virt_fb_base;
++
++ /* fb_fix_screeninfo filling */
++ strcpy(info->fb_info.fix.id, "MQ200_FB" );
++ info->fb_info.fix.smem_start = info->io_regions.phys_fb_base;
++ info->fb_info.fix.smem_len = info->io_regions.fb_size; /* - CURSOR_IMAGE */
++ info->fb_info.fix.mmio_start = info->io_regions.phys_mmio_base;
++ info->fb_info.fix.mmio_len = MQ200_REGS_SIZE;
++ info->fb_info.fix.type = FB_TYPE_PACKED_PIXELS;
++ info->fb_info.fix.accel = FB_ACCEL_NONE;
++ info->fb_info.fix.line_length = MQ200_MONITOR_LINE_LENGTH(info);
++
++ if(MQ200_MONITOR_DEPTH(info) <= 8 )
++ info->fb_info.fix.visual = FB_VISUAL_PSEUDOCOLOR;
++ else if( MQ200_MONITOR_DEPTH(info) >= 16 )
++ info->fb_info.fix.visual = FB_VISUAL_DIRECTCOLOR;
++ else
++ panic("Calling mq200 with wrong display data\n");
++
++ /* set the variable screen info */
++ info->fb_info.var.xres = MQ200_MONITOR_HORI_RES(info);
++ info->fb_info.var.yres = MQ200_MONITOR_VERT_RES(info);
++ info->fb_info.var.xres_virtual = MQ200_MONITOR_HORI_RES(info);
++ info->fb_info.var.yres_virtual = MQ200_MONITOR_VERT_RES(info);
++ info->fb_info.var.bits_per_pixel = MQ200_MONITOR_DEPTH(info);
++
++ mq200_internal_init_color(&info->fb_info.var.red,
++ &info->fb_info.var.green,
++ &info->fb_info.var.blue,
++ MQ200_MONITOR_DEPTH(info) );
++
++ info->fb_info.var.transp.length = info->fb_info.var.transp.offset = 0;
++ info->fb_info.var.height = info->fb_info.var.width = -1;
++
++ info->fb_info.var.vmode = FB_VMODE_NONINTERLACED;
++ info->fb_info.var.pixclock = 10000;
++ info->fb_info.var.left_margin = info->fb_info.var.right_margin = 16;
++ info->fb_info.var.upper_margin = info->fb_info.var.lower_margin = 16;
++ info->fb_info.var.hsync_len = info->fb_info.var.vsync_len = 8;
++
++ info->fb_info.var.nonstd = 0;
++ info->fb_info.var.activate = FB_ACTIVATE_NOW;
++ info->fb_info.var.accel_flags = 0;
++
++ return info;
++}
++
++
++extern void mq200_register_attributes(struct device* );
++/*
++ * gets called from the bus
++ * we will register our framebuffer from here
++ */
++static int __init mq200_probe(struct device *dev)
++{
++ struct mq200_info *info = NULL;
++ int retv= 0;
++
++ info = mq200_internal_init_fbinfo();
++ if(!mq200_external_probe(info->io_regions.virt_mmio_base))
++ goto error_out;
++
++ GPDR |= (1<<3);
++ GAFR &= ~(1<<3);
++ GPSR |= (1<<3);
++
++ mq200_external_setqmode(&info->monitor_info,
++ info->io_regions.virt_mmio_base,
++ &info->lock);
++
++ info->fb_info.fbops = &mq200_ops;
++ info->fb_info.flags = FBINFO_FLAG_DEFAULT;
++
++ mq200_check_var(&info->fb_info.var, &info->fb_info );
++
++ fb_alloc_cmap(&info->fb_info.cmap, 1 << MQ200_MONITOR_DEPTH(info), 0 );
++
++ info->fb_info.pseudo_palette = (void*)info->pseudo_palette;
++
++ /* save the pointer to the mq200 struct in var */
++ info->fb_info.par = info;
++
++ retv = register_framebuffer(&info->fb_info );
++ if(retv < 0)
++ goto error_out;
++
++
++ /* will get unset if retv != 0 */
++ dev_set_drvdata(dev, info );
++ return retv;
++
++/*
++ * Free the info and exit
++ */
++error_out:
++ kfree(info);
++ return -EINVAL;
++}
++
++#ifdef CONFIG_PM
++static struct mq200_info* get_mq200_info( struct device *dev)
++{
++ return dev_get_drvdata(dev);
++}
++
++static unsigned long get_mmio_base( struct device *dev )
++{
++ struct mq200_info *info = get_mq200_info(dev);
++ return info->io_regions.virt_mmio_base;
++}
++
++static struct mq200_monitor_info* get_monitor_info( struct device *dev)
++{
++ struct mq200_info *info = get_mq200_info(dev);
++ return &info->monitor_info;
++}
++
++static spinlock_t* get_spinlock( struct device *dev)
++{
++ return &get_mq200_info(dev)->lock;
++}
++
++/*
++ * FIXME: make sure we only call mq200_external_offdisplay only once
++ * a 2nd time will hang the kernel -zecke
++ *
++ * FIXME: save the content of the framebuffer inside dev->saved_state
++ * so on resume we can memcpy it back into the buffer and userspace
++ * does not need to redraw
++ *
++ * functions for suspending and resuming
++ */
++static int mq200_suspend(struct device *dev, pm_message_t state)
++{
++
++ mq200_external_offdisplay( get_mmio_base(dev) );
++ clear_cs3_bit(DISPLAY_ON);
++
++
++ return 0;
++}
++
++static int mq200_resume(struct device *dev)
++{
++ unsigned long mem = get_mmio_base(dev);
++ struct mq200_monitor_info *monitor = get_monitor_info(dev);
++ mq200_external_setqmode(monitor, mem, get_spinlock(dev) );
++
++
++ /*
++ * Set display on if it was on
++ */
++ set_cs3_bit(DISPLAY_ON);
++
++ return 0;
++}
++
++
++#endif
++
++
++static struct device_driver mq200fb_driver = {
++ .name = "simpad-mq200",
++ .bus = &platform_bus_type,
++ .probe = mq200_probe, /* will be called after we've registered the driver */
++ .suspend = mq200_suspend,
++ .resume = mq200_resume
++};
++
++int __devinit mq200_init(void)
++{
++ return driver_register(&mq200fb_driver);
++}
++
++module_init(mq200_init);
++MODULE_DESCRIPTION("MQ200 framebuffer driver");
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Holger Hans Peter Freyther");
diff --git a/packages/linux/linux/simpad/linux-2.6.21-SIMpad-serial-and-gpio_keys.patch b/packages/linux/linux/simpad/linux-2.6.21-SIMpad-serial-and-gpio_keys.patch
new file mode 100644
index 0000000000..90ce4cb009
--- /dev/null
+++ b/packages/linux/linux/simpad/linux-2.6.21-SIMpad-serial-and-gpio_keys.patch
@@ -0,0 +1,194 @@
+diff -uNr linux-2.6.21.vanilla/arch/arm/mach-sa1100/simpad.c linux-2.6.21/arch/arm/mach-sa1100/simpad.c
+--- linux-2.6.21.vanilla/arch/arm/mach-sa1100/simpad.c 2007-05-01 16:40:44.000000000 +0200
++++ linux-2.6.21/arch/arm/mach-sa1100/simpad.c 2007-05-01 19:23:29.000000000 +0200
+@@ -1,5 +1,14 @@
+ /*
+ * linux/arch/arm/mach-sa1100/simpad.c
++ *
++ * 2007/04/11 mrdata:
++ * - insert simpad_uart_set_mctrl()
++ * simpad_uart_get_mctrl()
++ * - internal RS232/DECT/Bluetooth
++ * works again (based on 2.4 simpad-serial.patch)
++ *
++ * 2007/04/12 Bernhard Guillon:
++ * -added gpio_keys (based on h3000.c from hh.org)
+ */
+
+ #include <linux/module.h>
+@@ -27,6 +36,8 @@
+
+ #include <linux/serial_core.h>
+ #include <linux/ioport.h>
++#include <linux/input.h>
++#include <linux/gpio_keys.h>
+ #include <asm/io.h>
+
+ #include "generic.h"
+@@ -55,6 +66,7 @@
+ *(CS3BUSTYPE *)(CS3_BASE) = cs3_shadow;
+ }
+
++EXPORT_SYMBOL(get_cs3_shadow);
+ EXPORT_SYMBOL(set_cs3_bit);
+ EXPORT_SYMBOL(clear_cs3_bit);
+
+@@ -73,23 +85,71 @@
+ };
+
+
++static void simpad_uart_set_mctrl(struct uart_port *port, u_int mctrl)
++{
++ if (port->mapbase == _Ser1UTCR0) {
++ /* internal serial port (ttySA1, DECT/Bluetooth) */
++ if (mctrl & TIOCM_RTS) GPCR = GPIO_UART1_RTS;
++ else GPSR = GPIO_UART1_RTS;
++
++ if (mctrl & TIOCM_DTR) GPCR = GPIO_UART1_DTR;
++ else GPSR = GPIO_UART1_DTR;
++ }
++
++ else if (port->mapbase == _Ser3UTCR0) {
++ /* external serial port (ttySA0, RS232) */
++ if (mctrl & TIOCM_RTS) GPCR = GPIO_UART3_RTS;
++ else GPSR = GPIO_UART3_RTS;
++
++ if (mctrl & TIOCM_DTR) GPCR = GPIO_UART3_DTR;
++ else GPSR = GPIO_UART3_DTR;
++ }
++}
++
++
++static u_int simpad_uart_get_mctrl(struct uart_port *port)
++{
++ u_int ret = TIOCM_CD | TIOCM_CTS | TIOCM_DSR;
++
++ if (port->mapbase == _Ser1UTCR0) {
++ /* internal serial port (ttySA1, DECT/Bluetooth) */
++ int gplr = GPLR;
++ if (gplr & GPIO_UART1_DCD) ret &= ~TIOCM_CD;
++ if (gplr & GPIO_UART1_CTS) ret &= ~TIOCM_CTS;
++ if (gplr & GPIO_UART1_DSR) ret &= ~TIOCM_DSR;
++ }
++
++ else if (port->mapbase == _Ser3UTCR0) {
++ /* external serial port (ttySA0, RS232) */
++ int gplr = GPLR;
++ if (gplr & GPIO_UART3_DCD) ret &= ~TIOCM_CD;
++ if (gplr & GPIO_UART3_CTS) ret &= ~TIOCM_CTS;
++ if (gplr & GPIO_UART3_DSR) ret &= ~TIOCM_DSR;
++ }
++ return ret;
++}
++
++
+ static void simpad_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
+ {
+- if (port->mapbase == (u_int)&Ser1UTCR0) {
+- if (state)
+- {
+- clear_cs3_bit(RS232_ON);
+- clear_cs3_bit(DECT_POWER_ON);
+- }else
+- {
+- set_cs3_bit(RS232_ON);
+- set_cs3_bit(DECT_POWER_ON);
+- }
+- }
++ if (port->mapbase == (u_int)&Ser3UTCR0) {
++ if (state)
++ {
++ clear_cs3_bit(RS232_ON);
++ /* clear_cs3_bit(DECT_POWER_ON); */
++ }else
++ {
++ set_cs3_bit(RS232_ON);
++ /* set_cs3_bit(DECT_POWER_ON); */
++ }
++ }
+ }
+
++
+ static struct sa1100_port_fns simpad_port_fns __initdata = {
+- .pm = simpad_uart_pm,
++ .set_mctrl = simpad_uart_set_mctrl,
++ .get_mctrl = simpad_uart_get_mctrl,
++ .pm = simpad_uart_pm,
+ };
+
+
+@@ -150,7 +210,7 @@
+ sa1100_register_uart(0, 3); /* serial interface */
+ sa1100_register_uart(1, 1); /* DECT */
+
+- // Reassign UART 1 pins
++ /* Reassign UART 1 pins */
+ GAFR |= GPIO_UART_TXD | GPIO_UART_RXD;
+ GPDR |= GPIO_UART_TXD | GPIO_LDD13 | GPIO_LDD15;
+ GPDR &= ~GPIO_UART_RXD;
+@@ -173,7 +233,7 @@
+
+ static void simpad_power_off(void)
+ {
+- local_irq_disable(); // was cli
++ local_irq_disable(); /* was cli */
+ set_cs3(0x800); /* only SD_MEDIAQ */
+
+ /* disable internal oscillator, float CS lines */
+@@ -197,19 +257,42 @@
+
+
+ /*
++ * gpio_keys
++*/
++
++static struct gpio_keys_button simpad_button_table[] = {
++ { KEY_POWER, IRQ_GPIO_POWER_BUTTON, 0, "power button" },
++};
++
++static struct gpio_keys_platform_data simpad_keys_data = {
++ .buttons = simpad_button_table,
++ .nbuttons = ARRAY_SIZE(simpad_button_table),
++};
++
++static struct platform_device simpad_keys = {
++ .name = "gpio-keys",
++ .dev = {
++ .platform_data = &simpad_keys_data,
++ },
++};
++
++
++/*
+ * MediaQ Video Device
+ */
++
+ static struct platform_device simpad_mq200fb = {
+ .name = "simpad-mq200",
+ .id = 0,
+ };
+
++
+ static struct platform_device *devices[] __initdata = {
+- &simpad_mq200fb
++ &simpad_keys,
++ &simpad_mq200fb,
+ };
+
+
+-
+ static int __init simpad_init(void)
+ {
+ int ret;
+diff -uNr linux-2.6.21.vanilla/include/asm-arm/arch-sa1100/simpad.h linux-2.6.21/include/asm-arm/arch-sa1100/simpad.h
+--- linux-2.6.21.vanilla/include/asm-arm/arch-sa1100/simpad.h 2007-05-01 16:40:51.000000000 +0200
++++ linux-2.6.21/include/asm-arm/arch-sa1100/simpad.h 2007-05-01 19:22:45.000000000 +0200
+@@ -12,7 +12,7 @@
+ #define __ASM_ARCH_SIMPAD_H
+
+
+-#define GPIO_UART1_RTS GPIO_GPIO14
++#define GPIO_UART1_RTS GPIO_GPIO9
+ #define GPIO_UART1_DTR GPIO_GPIO7
+ #define GPIO_UART1_CTS GPIO_GPIO8
+ #define GPIO_UART1_DCD GPIO_GPIO23
diff --git a/packages/linux/linux/simpad/linux-2.6.21-SIMpad-ucb1x00-switches.patch b/packages/linux/linux/simpad/linux-2.6.21-SIMpad-ucb1x00-switches.patch
new file mode 100644
index 0000000000..ff2f50566c
--- /dev/null
+++ b/packages/linux/linux/simpad/linux-2.6.21-SIMpad-ucb1x00-switches.patch
@@ -0,0 +1,189 @@
+diff -uNr linux-2.6.21.vanilla/drivers/mfd/Kconfig linux-2.6.21/drivers/mfd/Kconfig
+--- linux-2.6.21.vanilla/drivers/mfd/Kconfig 2007-05-01 16:40:45.000000000 +0200
++++ linux-2.6.21/drivers/mfd/Kconfig 2007-05-01 16:55:38.000000000 +0200
+@@ -37,4 +37,7 @@
+ tristate "Touchscreen interface support"
+ depends on MCP_UCB1200 && INPUT
+
++config MCP_UCB1200_SWITCHES
++ tristate "SIMpad Switches support"
++ depends on MCP_UCB1200 && INPUT
+ endmenu
+diff -uNr linux-2.6.21.vanilla/drivers/mfd/Makefile linux-2.6.21/drivers/mfd/Makefile
+--- linux-2.6.21.vanilla/drivers/mfd/Makefile 2007-05-01 16:40:45.000000000 +0200
++++ linux-2.6.21/drivers/mfd/Makefile 2007-05-01 16:55:38.000000000 +0200
+@@ -8,7 +8,7 @@
+ obj-$(CONFIG_MCP_SA11X0) += mcp-sa11x0.o
+ obj-$(CONFIG_MCP_UCB1200) += ucb1x00-core.o
+ obj-$(CONFIG_MCP_UCB1200_TS) += ucb1x00-ts.o
+-
++obj-$(CONFIG_MCP_UCB1200_SWITCHES) += ucb1x00-switches.o
+ ifeq ($(CONFIG_SA1100_ASSABET),y)
+ obj-$(CONFIG_MCP_UCB1200) += ucb1x00-assabet.o
+ endif
+diff -uNr linux-2.6.21.vanilla/drivers/mfd/ucb1x00-switches.c linux-2.6.21/drivers/mfd/ucb1x00-switches.c
+--- linux-2.6.21.vanilla/drivers/mfd/ucb1x00-switches.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.21/drivers/mfd/ucb1x00-switches.c 2007-05-01 16:55:38.000000000 +0200
+@@ -0,0 +1,162 @@
++/*
++ * linux/drivers/mfd/ucb1x00-switches.c
++ *
++ * Copyright (C) 2007 Bernhard Guillon.
++ *
++ * 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.
++ *
++ * This driver is for the Switches of Siemens SIMpad (CL4,SL4,SLC), T-Sinus-Pad and
++ * Swisscom WP50 devices.
++ *
++ * Six switches are routed to GPIO pins on the UCB1300: S3 -- S8.
++ *
++ * This driver is based on the 2.4 ucb1x00-switches, the 2.6 ucb1x00-assabet
++ * and the ucb1x00-ts driver.
++ *
++ */
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/input.h>
++#include <linux/device.h>
++
++#include <asm/dma.h>
++
++#include "ucb1x00.h"
++
++static int key [6] = { KEY_PROG1,KEY_PROG2,KEY_UP,KEY_DOWN,KEY_LEFT,KEY_RIGHT };
++
++struct ucb1x00_switches {
++ struct input_dev *idev;
++ struct ucb1x00 *ucb;
++};
++
++static void ucb1x00_dev_irq(int idx, void *id)
++{
++ static unsigned short int last;
++ unsigned short int this;
++ struct ucb1x00_switches *switches = id;
++ struct input_dev *idev = switches->idev;
++
++ ucb1x00_enable(switches->ucb);
++
++ this=~ucb1x00_io_read(switches->ucb);
++ if (this==last) {
++ return;
++ }
++
++ last=this;
++
++ if ((idx >=0) && (idx <=5)) {
++ if ((this & (1<<idx)) != 0) input_report_key(idev, key[idx], 1);
++ else input_report_key(idev, key[idx], 0);
++ }
++ else {
++ printk(KERN_DEBUG "switches-ucb1x00 is BUGGY!!! \n");
++ return;
++ }
++
++}
++
++static int ucb1x00_switches_add(struct ucb1x00_dev *dev)
++{
++ struct ucb1x00_switches *switches;
++ struct input_dev *idev;
++ int err,i;
++
++ switches = kzalloc(sizeof(struct ucb1x00_switches), GFP_KERNEL);
++ idev = input_allocate_device();
++
++ if (!switches || !idev) {
++ err = -ENOMEM;
++ goto fail;
++ }
++
++ switches->ucb = dev->ucb;
++
++ idev->private = switches;
++ idev->name = "SIMpad Switches";
++ idev->id.product = switches->ucb->id;
++
++ __set_bit(EV_KEY, idev->evbit);
++ __set_bit(EV_REP, idev->evbit);
++ __set_bit(KEY_PROG1, idev->keybit);
++ __set_bit(KEY_PROG2, idev->keybit);
++ __set_bit(KEY_UP, idev->keybit);
++ __set_bit(KEY_DOWN, idev->keybit);
++ __set_bit(KEY_LEFT, idev->keybit);
++ __set_bit(KEY_RIGHT, idev->keybit);
++
++ err = input_register_device(idev);
++ if (err)
++ goto fail;
++ switches->idev = idev;
++ dev->priv = switches;
++
++ ucb1x00_enable(switches->ucb);
++
++ ucb1x00_io_set_dir(switches->ucb,
++ UCB_IO_0 | UCB_IO_1 | UCB_IO_2 |
++ UCB_IO_3 | UCB_IO_4 | UCB_IO_5,
++ UCB_IO_8 | UCB_IO_9);
++
++ ucb1x00_disable(switches->ucb);
++
++ for (i = 0; i < 6; ++i) {
++ ucb1x00_enable_irq(switches->ucb, i, UCB_RISING | UCB_FALLING);
++ if (ucb1x00_hook_irq(switches->ucb, i, ucb1x00_dev_irq, switches) < 0) {
++ printk(KERN_ERR "unable to hook IRQ for "
++ "UCB1300 SWITCH_%d\n", i);
++ return -EBUSY;
++ }
++ }
++
++ return 0;
++
++fail:
++ input_free_device(idev);
++ kfree(switches);
++ return err;
++
++}
++
++static void ucb1x00_switches_remove(struct ucb1x00_dev *dev)
++{
++ int i;
++ struct ucb1x00_switches *switches = dev->priv;
++ input_unregister_device(switches->idev);
++
++ for (i = 5; i >= 0; --i) {
++ ucb1x00_disable_irq(switches->ucb, i, UCB_RISING | UCB_FALLING);
++
++ /* Only error conditions are ENOENT and EINVAL; silently
++ * ignore:
++ */
++ ucb1x00_free_irq(switches->ucb, i, NULL);
++ }
++ ucb1x00_disable(switches->ucb);
++ kfree(switches);
++}
++
++static struct ucb1x00_driver ucb1x00_switches_driver = {
++ .add = ucb1x00_switches_add,
++ .remove = ucb1x00_switches_remove,
++};
++
++static int __init ucb1x00_switches_init(void)
++{
++ return ucb1x00_register_driver(&ucb1x00_switches_driver);
++}
++
++static void __exit ucb1x00_switches_exit(void)
++{
++ ucb1x00_unregister_driver(&ucb1x00_switches_driver);
++}
++
++module_init(ucb1x00_switches_init);
++module_exit(ucb1x00_switches_exit);
++
++MODULE_AUTHOR("Bernhard Guillon <Bernhard.Guillon@opensimpad.org>");
++MODULE_DESCRIPTION("UCB1x00 Switches driver for Siemens SIMpad");
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux/simpad/linux-2.6.21-pcmcia-device-to-platform-driver.patch b/packages/linux/linux/simpad/linux-2.6.21-pcmcia-device-to-platform-driver.patch
new file mode 100644
index 0000000000..e6233cbe30
--- /dev/null
+++ b/packages/linux/linux/simpad/linux-2.6.21-pcmcia-device-to-platform-driver.patch
@@ -0,0 +1,54 @@
+diff -uNr linux-2.6.21.vanilla/drivers/pcmcia/sa1100_generic.c linux-2.6.21/drivers/pcmcia/sa1100_generic.c
+--- linux-2.6.21.vanilla/drivers/pcmcia/sa1100_generic.c 2007-05-01 16:40:46.000000000 +0200
++++ linux-2.6.21/drivers/pcmcia/sa1100_generic.c 2007-05-01 19:38:05.000000000 +0200
+@@ -28,6 +28,9 @@
+ the provisions above, a recipient may use your version of this
+ file under either the MPL or the GPL.
+
++ 2007 mrnice: added thesings changes from device_driver
++ to platform_driver - many thx to thesing
++
+ ======================================================================*/
+
+ #include <linux/module.h>
+@@ -81,13 +84,15 @@
+ return ret;
+ }
+
+-static struct device_driver sa11x0_pcmcia_driver = {
+- .probe = sa11x0_drv_pcmcia_probe,
+- .remove = soc_common_drv_pcmcia_remove,
+- .name = "sa11x0-pcmcia",
+- .bus = &platform_bus_type,
+- .suspend = pcmcia_socket_dev_suspend,
+- .resume = pcmcia_socket_dev_resume,
++static struct platform_driver sa11x0_pcmcia_driver = {
++ .driver = {
++ .name = "sa11x0-pcmcia",
++ .probe = sa11x0_drv_pcmcia_probe,
++ .remove = soc_common_drv_pcmcia_remove,
++ .suspend= pcmcia_socket_dev_suspend,
++ .resume = pcmcia_socket_dev_resume,
++ //.bus = &platform_bus_type,
++ },
+ };
+
+ /* sa11x0_pcmcia_init()
+@@ -100,7 +105,7 @@
+ */
+ static int __init sa11x0_pcmcia_init(void)
+ {
+- return driver_register(&sa11x0_pcmcia_driver);
++ return platform_driver_register(&sa11x0_pcmcia_driver);
+ }
+
+ /* sa11x0_pcmcia_exit()
+@@ -110,7 +115,7 @@
+ */
+ static void __exit sa11x0_pcmcia_exit(void)
+ {
+- driver_unregister(&sa11x0_pcmcia_driver);
++ platform_driver_unregister(&sa11x0_pcmcia_driver);
+ }
+
+ MODULE_AUTHOR("John Dorsey <john+@cs.cmu.edu>");
diff --git a/packages/linux/linux_2.6.14.bb b/packages/linux/linux_2.6.14.bb
new file mode 100644
index 0000000000..3ddfec809a
--- /dev/null
+++ b/packages/linux/linux_2.6.14.bb
@@ -0,0 +1,51 @@
+DESCRIPTION = "Linux Kernel"
+SECTION = "kernel"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://defconfig"
+
+SRC_URI_append_progear = " \
+ file://progear_bl-r6.patch;patch=1 \
+ "
+SRC_URI_append_acern30 = "\
+ http://lechat.rtp-net.org/ipaq/patches/2.6.14-3/v2.6.14-gitcurrent.patch;patch=1 \
+ http://lechat.rtp-net.org/ipaq/patches/2.6.14-3/full.patch;patch=1 \
+ file://n30-cleanup.patch;patch=1 \
+ file://n35.patch;patch=1 \
+ file://n30-lcd.patch;patch=1 \
+ file://n30-backlight.patch;patch=1 \
+ file://n30-ts.patch;patch=1 \
+ file://n30-buttons.patch;patch=1 \
+ file://n30-mmc.patch;patch=1 \
+ file://n30-mmc-power.patch;patch=1 \
+ file://n30-mmc-wprotect.patch;patch=1 \
+ file://n30-nand.patch;patch=1 \
+ file://n30-usbstart.patch;patch=1 \
+ file://n30-hardcode.patch;patch=1 \
+ file://n30-apm.patch;patch=1 \
+ file://s3c2410fb-resume.patch;patch=1 \
+ file://s3c2410_ts-pm.patch;patch=1 \
+ file://s3c2410_lcd-pm.c;patch=1 \
+ file://s3c2410mci-pm.patch;patch=1 \
+ file://s3c2410-nand-pm.patch;patch=1 \
+ file://n30-nand-hack.patch;patch=1 \
+ file://mmc-plus.patch;patch=1 \
+ file://gpio-sysfs.patch;patch=1 \
+ file://regdump.patch;patch=1 \
+ file://n30-pm.patch;patch=1 \
+ file://spi.patch;patch=1 \
+ file://wingel-hacking.patch;patch=1 \
+ file://gcc4-fixes.patch;patch=1 \
+ "
+
+inherit kernel
+
+KERNEL_IMAGETYPE = "bzImage"
+KERNEL_IMAGETYPE_simpad = "zImage"
+KERNEL_IMAGETYPE_acern30 = "zImage"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+}
diff --git a/packages/linux/linux_2.6.19-rc6.bb b/packages/linux/linux_2.6.19-rc6.bb
deleted file mode 100644
index 59186ef579..0000000000
--- a/packages/linux/linux_2.6.19-rc6.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-DESCRIPTION = "Linux Kernel"
-SECTION = "kernel"
-LICENSE = "GPL"
-PV = "2.6.18+2.6.19-rc6"
-PR = "r1"
-
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2 \
- ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc1.bz2;patch=1 \
- ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/testing/incr/patch-2.6.19-rc1-rc2.bz2;patch=1 \
- ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/testing/incr/patch-2.6.19-rc2-rc3.bz2;patch=1 \
- ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/testing/incr/patch-2.6.19-rc3-rc4.bz2;patch=1 \
- ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/testing/incr/patch-2.6.19-rc4-rc5.bz2;patch=1 \
- ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/testing/incr/patch-2.6.19-rc5-rc6.bz2;patch=1 \
- file://defconfig"
-
-S = "${WORKDIR}/linux-2.6.18"
-
-inherit kernel
-
-KERNEL_IMAGETYPE = "bzImage"
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
-}
-
-KERNEL_RELEASE = "2.6.19-rc6"
diff --git a/packages/linux/linux_2.6.20.bb b/packages/linux/linux_2.6.20.bb
new file mode 100644
index 0000000000..80f6c71442
--- /dev/null
+++ b/packages/linux/linux_2.6.20.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "Linux Kernel"
+SECTION = "kernel"
+LICENSE = "GPL"
+PR = "r6"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://defconfig"
+
+SRC_URI_append_n2100 = "\
+ file://n2100-r8169-parity.patch;patch=1 \
+ file://rtc-rs5c372-n2100.patch;patch=1 \
+ "
+
+inherit kernel
+
+KERNEL_IMAGETYPE = "bzImage"
+KERNEL_IMAGETYPE_n2100 = "zImage"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+}
+
+do_install_append_n2100() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 ${S}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+}
diff --git a/packages/linux/linux_2.6.21.bb b/packages/linux/linux_2.6.21.bb
new file mode 100644
index 0000000000..d801f88507
--- /dev/null
+++ b/packages/linux/linux_2.6.21.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Linux Kernel"
+SECTION = "kernel"
+LICENSE = "GPL"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://defconfig"
+
+SRC_URI_append_simpad = "\
+ file://linux-2.6.21-SIMpad-cs3-simpad.patch;patch=1 \
+ file://linux-2.6.21-SIMpad-mq200.patch;patch=1 \
+ file://linux-2.6.21-SIMpad-serial-and-gpio_keys.patch;patch=1 \
+ file://linux-2.6.21-SIMpad-ucb1x00-switches.patch;patch=1 \
+ file://linux-2.6.21-pcmcia-device-to-platform-driver.patch;patch=1 \
+ "
+
+inherit kernel
+
+KERNEL_IMAGETYPE_simpad = "zImage"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+}
+
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/.mtn2git_empty b/packages/linux/logicpd-pxa270-2.6.19.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/.mtn2git_empty
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/asoc-v0.12.4.patch b/packages/linux/logicpd-pxa270-2.6.19.2/asoc-v0.12.4.patch
new file mode 100644
index 0000000000..420f4aa2e2
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/asoc-v0.12.4.patch
@@ -0,0 +1,31712 @@
+Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/DAI.txt
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/DAI.txt
+@@ -0,0 +1,546 @@
++ASoC currently supports the three main Digital Audio Interfaces (DAI) found on
++SoC controllers and portable audio CODECS today, namely AC97, I2S and PCM.
++
++
++AC97
++====
++
++ AC97 is a five wire interface commonly found on many PC sound cards. It is
++now also popular in many portable devices. This DAI has a reset line and time
++multiplexes its data on its SDATA_OUT (playback) and SDATA_IN (capture) lines.
++The bit clock (BCLK) is always driven by the CODEC (usually 12.288MHz) and the
++frame (FRAME) (usually 48kHz) is always driven by the controller. Each AC97
++frame is 21uS long and is divided into 13 time slots.
++
++The AC97 specification can be found at :-
++http://www.intel.com/design/chipsets/audio/ac97_r23.pdf
++
++
++I2S
++===
++
++ I2S is a common 4 wire DAI used in HiFi, STB and portable devices. The Tx and
++Rx lines are used for audio transmision, whilst the bit clock (BCLK) and
++left/right clock (LRC) synchronise the link. I2S is flexible in that either the
++controller or CODEC can drive (master) the BCLK and LRC clock lines. Bit clock
++usually varies depending on the sample rate and the master system clock
++(SYSCLK). LRCLK is the same as the sample rate. A few devices support separate
++ADC and DAC LRCLK's, this allows for similtanious capture and playback at
++different sample rates.
++
++I2S has several different operating modes:-
++
++ o I2S - MSB is transmitted on the falling edge of the first BCLK after LRC
++ transition.
++
++ o Left Justified - MSB is transmitted on transition of LRC.
++
++ o Right Justified - MSB is transmitted sample size BCLK's before LRC
++ transition.
++
++PCM
++===
++
++PCM is another 4 wire interface, very similar to I2S, that can support a more
++flexible protocol. It has bit clock (BCLK) and sync (SYNC) lines that are used
++to synchronise the link whilst the Tx and Rx lines are used to transmit and
++receive the audio data. Bit clock usually varies depending on sample rate
++whilst sync runs at the sample rate. PCM also supports Time Division
++Multiplexing (TDM) in that several devices can use the bus similtaniuosly (This
++is sometimes referred to as network mode).
++
++Common PCM operating modes:-
++
++ o Mode A - MSB is transmitted on falling edge of first BCLK after FRAME/SYNC.
++
++ o Mode B - MSB is transmitted on rising edge of FRAME/SYNC.
++
++
++ASoC DAI Configuration
++======================
++
++Every CODEC DAI and SoC DAI must have their capabilities defined in order to
++be configured together at runtime when the audio and clocking parameters are
++known. This is achieved by creating an array of struct snd_soc_hw_mode in the
++the CODEC and SoC interface drivers. Each element in the array describes a DAI
++mode and each mode is usually based upon the DAI system clock to sample rate
++ratio (FS).
++
++i.e. 48k sample rate @ 256 FS = sytem clock of 12.288 MHz
++ 48000 * 256 = 12288000
++
++The CPU and Codec DAI modes are then ANDed together at runtime to determine the
++rutime DAI configuration for both the Codec and CPU.
++
++When creating a new codec or SoC DAI it's probably best to start of with a few
++sample rates first and then test your interface.
++
++struct snd_soc_dai_mode is defined (in soc.h) as:-
++
++/* SoC DAI mode */
++struct snd_soc_dai_mode {
++ u16 fmt; /* SND_SOC_DAIFMT_* */
++ u16 tdm; /* SND_SOC_HWTDM_* */
++ u64 pcmfmt; /* SNDRV_PCM_FMTBIT_* */
++ u16 pcmrate; /* SND_SOC_HWRATE_* */
++ u16 pcmdir:2; /* SND_SOC_HWDIR_* */
++ u16 flags:8; /* hw flags */
++ u16 fs; /* mclk to rate divider */
++ u64 bfs; /* mclk to bclk dividers */
++ unsigned long priv; /* private mode data */
++};
++
++fmt:
++----
++This field defines the DAI mode hardware format (e.g. I2S settings) and
++supports the following settings:-
++
++ 1) hardware DAI formats
++
++#define SND_SOC_DAIFMT_I2S (1 << 0) /* I2S mode */
++#define SND_SOC_DAIFMT_RIGHT_J (1 << 1) /* Right justified mode */
++#define SND_SOC_DAIFMT_LEFT_J (1 << 2) /* Left Justified mode */
++#define SND_SOC_DAIFMT_DSP_A (1 << 3) /* L data msb after FRM */
++#define SND_SOC_DAIFMT_DSP_B (1 << 4) /* L data msb during FRM */
++#define SND_SOC_DAIFMT_AC97 (1 << 5) /* AC97 */
++
++ 2) hw DAI signal inversions
++
++#define SND_SOC_DAIFMT_NB_NF (1 << 8) /* normal bit clock + frame */
++#define SND_SOC_DAIFMT_NB_IF (1 << 9) /* normal bclk + inv frm */
++#define SND_SOC_DAIFMT_IB_NF (1 << 10) /* invert bclk + nor frm */
++#define SND_SOC_DAIFMT_IB_IF (1 << 11) /* invert bclk + frm */
++
++ 3) hw clock masters
++ This is wrt the codec, the inverse is true for the interface
++ i.e. if the codec is clk and frm master then the interface is
++ clk and frame slave.
++
++#define SND_SOC_DAIFMT_CBM_CFM (1 << 12) /* codec clk & frm master */
++#define SND_SOC_DAIFMT_CBS_CFM (1 << 13) /* codec clk slave & frm master */
++#define SND_SOC_DAIFMT_CBM_CFS (1 << 14) /* codec clk master & frame slave */
++#define SND_SOC_DAIFMT_CBS_CFS (1 << 15) /* codec clk & frm slave */
++
++At least one option from each section must be selected. Multiple selections are
++also supported e.g.
++
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
++ SND_SOC_DAIFMT_IB_IF
++
++
++tdm:
++------
++This field defines the Time Division Multiplexing left and right word
++positions for the DAI mode if applicable. Set to SND_SOC_DAITDM_LRDW(0,0) for
++no TDM.
++
++
++pcmfmt:
++---------
++The hardware PCM format. This describes the PCM formats supported by the DAI
++mode e.g.
++
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
++ SNDRV_PCM_FORMAT_S24_3LE
++
++pcmrate:
++----------
++The PCM sample rates supported by the DAI mode. e.g.
++
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
++ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000
++
++
++pcmdir:
++---------
++The stream directions supported by this mode. e.g. playback and capture
++
++
++flags:
++--------
++The DAI hardware flags supported by the mode.
++
++/* use bfs mclk divider mode (BCLK = MCLK / x) */
++#define SND_SOC_DAI_BFS_DIV 0x1
++/* use bfs rate mulitplier (BCLK = RATE * x)*/
++#define SND_SOC_DAI_BFS_RATE 0x2
++/* use bfs rcw multiplier (BCLK = RATE * CHN * WORD SIZE) */
++#define SND_SOC_DAI_BFS_RCW 0x4
++/* capture and playback can use different clocks */
++#define SND_SOC_DAI_ASYNC 0x8
++
++NOTE: Bitclock division and mulitiplication modes can be safely matched by the
++core logic.
++
++
++fs:
++-----
++The FS supported by this DAI mode FS is the ratio between the system clock and
++the sample rate. See above
++
++bfs:
++------
++BFS is the ratio of BCLK to MCLK or the ratio of BCLK to sample rate (this
++depends on the codec or CPU DAI).
++
++The BFS supported by the DAI mode. This can either be the ratio between the
++bitclock (BCLK) and the sample rate OR the ratio between the system clock and
++the sample rate. Depends on the flags above.
++
++priv:
++-----
++private codec mode data.
++
++
++
++Examples
++========
++
++Note that Codec DAI and CPU DAI examples are interchangeable in these examples
++as long as the bus master is reversed. i.e.
++
++ SND_SOC_DAIFMT_CBM_CFM would become SND_SOC_DAIFMT_CBS_CFS
++ and vice versa.
++
++This applies to all SND_SOC_DAIFMT_CB*_CF*.
++
++Example 1
++---------
++
++Simple codec that only runs at 8k & 48k @ 256FS in master mode, can generate a
++BCLK of either MCLK/2 or MCLK/4.
++
++ /* codec master */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(2) | SND_SOC_FSBD(4),
++ }
++
++
++Example 2
++---------
++Simple codec that only runs at 8k & 48k @ 256FS in master mode, can generate a
++BCLK of either Rate * 32 or Rate * 64.
++
++ /* codec master */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 32,
++ },
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 64,
++ },
++
++
++Example 3
++---------
++Codec that runs at 8k & 48k @ 256FS in master mode, can generate a BCLK that
++is a multiple of Rate * channels * word size. (RCW) i.e.
++
++ BCLK = 8000 * 2 * 16 (8k, stereo, 16bit)
++ = 256kHz
++
++This codecs supports a RCW multiple of 1,2
++
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RCW,
++ .fs = 256,
++ .bfs = SND_SOC_FSBW(1) | SND_SOC_FSBW(2),
++ }
++
++
++Example 4
++---------
++Codec that only runs at 8k & 48k @ 256FS in master mode, can generate a
++BCLK of either Rate * 32 or Rate * 64. Codec can also run in slave mode as long
++as BCLK is rate * 32 or rate * 64.
++
++ /* codec master */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 32,
++ },
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 64,
++ },
++
++ /* codec slave */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmdir = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = 32,
++ },
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmdir = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = 64,
++ },
++
++
++Example 5
++---------
++Codec that only runs at 8k, 16k, 32k, 48k, 96k @ 128FS, 192FS & 256FS in master
++mode and can generate a BCLK of MCLK / (1,2,4,8,16). Codec can also run in slave
++mode as and does not care about FS or BCLK (as long as there is enough bandwidth).
++
++ #define CODEC_FSB \
++ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
++ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
++
++ #define CODEC_RATES \
++ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_32000 |\
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000)
++
++ /* codec master @ 128, 192 & 256 FS */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = CODEC_RATES,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 128,
++ .bfs = CODEC_FSB,
++ },
++
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = CODEC_RATES,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 192,
++ .bfs = CODEC_FSB
++ },
++
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = CODEC_RATES,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = CODEC_FSB,
++ },
++
++ /* codec slave */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = CODEC_RATES,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++
++
++Example 6
++---------
++Codec that only runs at 8k, 44.1k, 48k @ different FS in master mode (for use
++with a fixed MCLK) and can generate a BCLK of MCLK / (1,2,4,8,16).
++Codec can also run in slave mode as and does not care about FS or BCLK (as long
++as there is enough bandwidth). Codec can support 16, 24 and 32 bit PCM sample
++sizes.
++
++ #define CODEC_FSB \
++ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
++ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
++
++ #define CODEC_PCM_FORMATS \
++ (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
++ SNDRV_PCM_FORMAT_S24_3LE | SNDRV_PCM_FORMAT_S24_LE | SNDRV_PCM_FORMAT_S32_LE)
++
++ /* codec master */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1536,
++ .bfs = CODEC_FSB,
++ },
++
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 272,
++ .bfs = CODEC_FSB,
++ },
++
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = CODEC_FSB,
++ },
++
++ /* codec slave */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = CODEC_RATES,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++
++
++Example 7
++---------
++AC97 Codec that does not support VRA (i.e only runs at 48k).
++
++ #define AC97_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++ #define AC97_PCM_FORMATS \
++ (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S18_3LE | \
++ SNDRV_PCM_FORMAT_S20_3LE)
++
++ /* AC97 with no VRA */
++ {
++ .pcmfmt = AC97_PCM_FORMATS,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ }
++
++
++Example 8
++---------
++
++CPU DAI that supports 8k - 48k @ 256FS and BCLK = MCLK / 4 in master mode.
++Slave mode (CPU DAI is FRAME master) supports 8k - 96k at any FS as long as
++BCLK = 64 * rate. (Intel XScale I2S controller).
++
++ #define PXA_I2S_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF)
++
++ #define PXA_I2S_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++ #define PXA_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 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
++
++ /* priv is divider */
++ static struct snd_soc_dai_mode pxa2xx_i2s_modes[] = {
++ /* pxa2xx I2S frame and clock master modes */
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = PXA_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(4),
++ .priv = 0x48,
++ },
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_11025,
++ .pcmdir = PXA_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(4),
++ .priv = 0x34,
++ },
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_16000,
++ .pcmdir = PXA_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(4),
++ .priv = 0x24,
++ },
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_22050,
++ .pcmdir = PXA_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(4),
++ .priv = 0x1a,
++ },
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = PXA_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(4),
++ .priv = 0xd,
++ },
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = PXA_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(4),
++ .priv = 0xc,
++ },
++
++ /* pxa2xx I2S frame master and clock slave mode */
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = PXA_I2S_RATES,
++ .pcmdir = PXA_I2S_DIR,
++ .fs = SND_SOC_FS_ALL,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .bfs = 64,
++ .priv = 0x48,
++ },
++};
+Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/clocking.txt
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/clocking.txt
+@@ -0,0 +1,314 @@
++Audio Clocking
++==============
++
++This text describes the audio clocking terms in ASoC and digital audio in
++general. Note: Audio clocking can be complex !
++
++
++Master Clock
++------------
++
++Every audio subsystem is driven by a master clock (sometimes refered to as MCLK
++or SYSCLK). This audio master clock can be derived from a number of sources
++(e.g. crystal, PLL, CPU clock) and is responsible for producing the correct
++audio playback and capture sample rates.
++
++Some master clocks (e.g. PLL's and CPU based clocks) are configuarble in that
++their speed can be altered by software (depending on the system use and to save
++power). Other master clocks are fixed at at set frequency (i.e. crystals).
++
++
++DAI Clocks
++----------
++The Digital Audio Interface is usually driven by a Bit Clock (often referred to
++as BCLK). This clock is used to drive the digital audio data across the link
++between the codec and CPU.
++
++The DAI also has a frame clock to signal the start of each audio frame. This
++clock is sometimes referred to as LRC (left right clock) or FRAME. This clock
++runs at exactly the sample rate (LRC = Rate).
++
++Bit Clock can be generated as follows:-
++
++BCLK = MCLK / x
++
++ or
++
++BCLK = LRC * x
++
++ or
++
++BCLK = LRC * Channels * Word Size
++
++This relationship depends on the codec or SoC CPU in particular. ASoC can quite
++easily match BCLK generated by division (SND_SOC_DAI_BFS_DIV) with BCLK by
++multiplication (SND_SOC_DAI_BFS_RATE) or BCLK generated by
++Rate * Channels * Word size (RCW or SND_SOC_DAI_BFS_RCW).
++
++
++ASoC Clocking
++-------------
++
++The ASoC core determines the clocking for each particular configuration at
++runtime. This is to allow for dynamic audio clocking wereby the audio clock is
++variable and depends on the system state or device usage scenario. i.e. a voice
++call requires slower clocks (and hence less power) than MP3 playback.
++
++ASoC will call the config_sysclock() function for the target machine during the
++audio parameters configuration. The function is responsible for then clocking
++the machine audio subsytem and returning the audio clock speed to the core.
++This function should also call the codec and cpu DAI clock_config() functions
++to configure their respective internal clocking if required.
++
++
++ASoC Clocking Control Flow
++--------------------------
++
++The ASoC core will call the machine drivers config_sysclock() when most of the
++DAI capabilities are known. The machine driver is then responsible for calling
++the codec and/or CPU DAI drivers with the selected capabilities and the current
++MCLK. Note that the machine driver is also resonsible for setting the MCLK (and
++enabling it).
++
++ (1) Match Codec and CPU DAI capabilities. At this point we have
++ matched the majority of the DAI fields and now need to make sure this
++ mode is currently clockable.
++
++ (2) machine->config_sysclk() is now called with the matched DAI FS, sample
++ rate and BCLK master. This function then gets/sets the current audio
++ clock (depening on usage) and calls the codec and CPUI DAI drivers with
++ the FS, rate, BCLK master and MCLK.
++
++ (3) Codec/CPU DAI config_sysclock(). This function checks that the FS, rate,
++ BCLK master and MCLK are acceptable for the codec or CPU DAI. It also
++ sets the DAI internal state to work with said clocks.
++
++The config_sysclk() functions for CPU, codec and machine should return the MCLK
++on success and 0 on failure.
++
++
++Examples (b = BCLK, l = LRC)
++============================
++
++Example 1
++---------
++
++Simple codec that only runs at 48k @ 256FS in master mode.
++
++CPU only runs as slave DAI, however it generates a variable MCLK.
++
++ -------- ---------
++ | | <----mclk--- | |
++ | Codec |b -----------> | CPU |
++ | |l -----------> | |
++ | | | |
++ -------- ---------
++
++The codec driver has the following config_sysclock()
++
++ static unsigned int config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++ {
++ /* make sure clock is 256 * rate */
++ if(info->rate << 8 == clk) {
++ dai->mclk = clk;
++ return clk;
++ }
++
++ return 0;
++ }
++
++The CPU I2S DAI driver has the following config_sysclk()
++
++ static unsigned int config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++ {
++ /* can we support this clk */
++ if(set_audio_clk(clk) < 0)
++ return -EINVAL;
++
++ dai->mclk = clk;
++ return dai->clk;
++ }
++
++The machine driver config_sysclk() in this example is as follows:-
++
++ unsigned int machine_config_sysclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++ {
++ int clk = info->rate * info->fs;
++
++ /* check that CPU can deliver clock */
++ if(rtd->cpu_dai->config_sysclk(rtd->cpu_dai, info, clk) < 0)
++ return -EINVAL;
++
++ /* can codec work with this clock */
++ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, clk);
++ }
++
++
++Example 2
++---------
++
++Codec that can master at 8k and 48k at various FS (and hence supports a fixed
++set of input MCLK's) and can also be slave at various FS .
++
++The CPU can master at 8k and 48k @256 FS and can be slave at any FS.
++
++MCLK is a 12.288MHz crystal on this machine.
++
++ -------- ---------
++ | | <---xtal---> | |
++ | Codec |b <----------> | CPU |
++ | |l <----------> | |
++ | | | |
++ -------- ---------
++
++
++The codec driver has the following config_sysclock()
++
++ /* supported input clocks */
++ const static int hifi_clks[] = {11289600, 12000000, 12288000,
++ 16934400, 18432000};
++
++ static unsigned int config_hsysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++ {
++ int i;
++
++ /* is clk supported */
++ for(i = 0; i < ARRAY_SIZE(hifi_clks); i++) {
++ if(clk == hifi_clks[i]) {
++ dai->mclk = clk;
++ return clk;
++ }
++ }
++
++ /* this clk is not supported */
++ return 0;
++ }
++
++The CPU I2S DAI driver has the following config_sysclk()
++
++ static unsigned int config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++ {
++ /* are we master or slave */
++ if (info->bclk_master &
++ (SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS)) {
++
++ /* we can only master @ 256FS */
++ if(info->rate << 8 == clk) {
++ dai->mclk = clk;
++ return dai->mclk;
++ }
++ } else {
++ /* slave we can run at any FS */
++ dai->mclk = clk;
++ return dai->mclk;
++ }
++
++ /* not supported */
++ return dai->clk;
++ }
++
++The machine driver config_sysclk() in this example is as follows:-
++
++ unsigned int machine_config_sysclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++ {
++ int clk = 12288000; /* 12.288MHz */
++
++ /* who's driving the link */
++ if (info->bclk_master &
++ (SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS)) {
++ /* codec master */
++
++ /* check that CPU can work with clock */
++ if(rtd->cpu_dai->config_sysclk(rtd->cpu_dai, info, clk) < 0)
++ return -EINVAL;
++
++ /* can codec work with this clock */
++ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, clk);
++ } else {
++ /* cpu master */
++
++ /* check that codec can work with clock */
++ if(rtd->codec_dai->config_sysclk(rtd->codec_dai, info, clk) < 0)
++ return -EINVAL;
++
++ /* can CPU work with this clock */
++ return rtd->cpu_dai->config_sysclk(rtd->cpu_dai, info, clk);
++ }
++ }
++
++
++
++Example 3
++---------
++
++Codec that masters at 8k ... 48k @256 FS. Codec can also be slave and
++doesn't care about FS. The codec has an internal PLL and dividers to generate
++the necessary internal clocks (for 256FS).
++
++CPU can only be slave and doesn't care about FS.
++
++MCLK is a non controllable 13MHz clock from the CPU.
++
++
++ -------- ---------
++ | | <----mclk--- | |
++ | Codec |b <----------> | CPU |
++ | |l <----------> | |
++ | | | |
++ -------- ---------
++
++The codec driver has the following config_sysclock()
++
++ /* valid PCM clock dividers * 2 */
++ static int pcm_divs[] = {2, 6, 11, 4, 8, 12, 16};
++
++ static unsigned int config_vsysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++ {
++ int i, j, best_clk = info->fs * info->rate;
++
++ /* can we run at this clk without the PLL ? */
++ for (i = 0; i < ARRAY_SIZE(pcm_divs); i++) {
++ if ((best_clk >> 1) * pcm_divs[i] == clk) {
++ dai->pll_in = 0;
++ dai->clk_div = pcm_divs[i];
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++
++ /* now check for PLL support */
++ for (i = 0; i < ARRAY_SIZE(pll_div); i++) {
++ if (pll_div[i].pll_in == clk) {
++ for (j = 0; j < ARRAY_SIZE(pcm_divs); j++) {
++ if (pll_div[i].pll_out == pcm_divs[j] * (best_clk >> 1)) {
++ dai->pll_in = clk;
++ dai->pll_out = pll_div[i].pll_out;
++ dai->clk_div = pcm_divs[j];
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++ }
++ }
++
++ /* this clk is not supported */
++ return 0;
++ }
++
++
++The CPU I2S DAI driver has the does not need a config_sysclk() as it can slave
++at any FS.
++
++ unsigned int config_sysclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++ {
++ /* codec has pll that generates mclk from 13MHz xtal */
++ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 13000000);
++ }
+Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/codec.txt
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/codec.txt
+@@ -0,0 +1,232 @@
++ASoC Codec Driver
++=================
++
++The codec driver is generic and hardware independent code that configures the
++codec to provide audio capture and playback. It should contain no code that is
++specific to the target platform or machine. All platform and machine specific
++code should be added to the platform and machine drivers respectively.
++
++Each codec driver must provide the following features:-
++
++ 1) Digital audio interface (DAI) description
++ 2) Digital audio interface configuration
++ 3) PCM's description
++ 4) Codec control IO - using I2C, 3 Wire(SPI) or both API's
++ 5) Mixers and audio controls
++ 6) Sysclk configuration
++ 7) Codec audio operations
++
++Optionally, codec drivers can also provide:-
++
++ 8) DAPM description.
++ 9) DAPM event handler.
++10) DAC Digital mute control.
++
++It's probably best to use this guide in conjuction with the existing codec
++driver code in sound/soc/codecs/
++
++ASoC Codec driver breakdown
++===========================
++
++1 - Digital Audio Interface (DAI) description
++---------------------------------------------
++The DAI is a digital audio data transfer link between the codec and host SoC
++CPU. It typically has data transfer capabilities in both directions
++(playback and capture) and can run at a variety of different speeds.
++Supported interfaces currently include AC97, I2S and generic PCM style links.
++Please read DAI.txt for implementation information.
++
++
++2 - Digital Audio Interface (DAI) configuration
++-----------------------------------------------
++DAI configuration is handled by the codec_pcm_prepare function and is
++responsible for configuring and starting the DAI on the codec. This can be
++called multiple times and is atomic. It can access the runtime parameters.
++
++This usually consists of a large function with numerous switch statements to
++set up each configuration option. These options are set by the core at runtime.
++
++
++3 - Codec PCM's
++---------------
++Each codec must have it's PCM's defined. This defines the number of channels,
++stream names, callbacks and codec name. It is also used to register the DAI
++with the ASoC core. The PCM structure also associates the DAI capabilities with
++the ALSA PCM.
++
++e.g.
++
++static struct snd_soc_pcm_codec wm8731_pcm_client = {
++ .name = "WM8731",
++ .playback = {
++ .stream_name = "Playback",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .capture = {
++ .stream_name = "Capture",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .config_sysclk = wm8731_config_sysclk,
++ .ops = {
++ .prepare = wm8731_pcm_prepare,
++ },
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8731_hwfmt),
++ .modes = &wm8731_hwfmt[0],
++ },
++};
++
++
++4 - Codec control IO
++--------------------
++The codec can ususally be controlled via an I2C or SPI style interface (AC97
++combines control with data in the DAI). The codec drivers will have to provide
++functions to read and write the codec registers along with supplying a register
++cache:-
++
++ /* IO control data and register cache */
++ void *control_data; /* codec control (i2c/3wire) data */
++ void *reg_cache;
++
++Codec read/write should do any data formatting and call the hardware read write
++below to perform the IO. These functions are called by the core and alsa when
++performing DAPM or changing the mixer:-
++
++ unsigned int (*read)(struct snd_soc_codec *, unsigned int);
++ int (*write)(struct snd_soc_codec *, unsigned int, unsigned int);
++
++Codec hardware IO functions - usually points to either the I2C, SPI or AC97
++read/write:-
++
++ hw_write_t hw_write;
++ hw_read_t hw_read;
++
++
++5 - Mixers and audio controls
++-----------------------------
++All the codec mixers and audio controls can be defined using the convenience
++macros defined in soc.h.
++
++ #define SOC_SINGLE(xname, reg, shift, mask, invert)
++
++Defines a single control as follows:-
++
++ xname = Control name e.g. "Playback Volume"
++ reg = codec register
++ shift = control bit(s) offset in register
++ mask = control bit size(s) e.g. mask of 7 = 3 bits
++ invert = the control is inverted
++
++Other macros include:-
++
++ #define SOC_DOUBLE(xname, reg, shift_left, shift_right, mask, invert)
++
++A stereo control
++
++ #define SOC_DOUBLE_R(xname, reg_left, reg_right, shift, mask, invert)
++
++A stereo control spanning 2 registers
++
++ #define SOC_ENUM_SINGLE(xreg, xshift, xmask, xtexts)
++
++Defines an single enumerated control as follows:-
++
++ xreg = register
++ xshift = control bit(s) offset in register
++ xmask = control bit(s) size
++ xtexts = pointer to array of strings that describe each setting
++
++ #define SOC_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xmask, xtexts)
++
++Defines a stereo enumerated control
++
++
++6 - System clock configuration.
++-------------------------------
++The system clock that drives the audio subsystem can change depending on sample
++rate and the system power state. i.e.
++
++o Higher sample rates sometimes need a higher system clock.
++o Low system power states can sometimes limit the available clocks.
++
++This function is a callback that the machine driver can call to set and
++determine if the clock and sample rate combination is supported by the codec at
++the present time (and system state).
++
++NOTE: If the codec has a PLL then it has a lot more flexability wrt clock and
++sample rate combinations.
++
++Your config_sysclock function should return the MCLK if it's a valid
++combination for your codec else 0;
++
++Please read clocking.txt now.
++
++
++7 - Codec Audio Operations
++--------------------------
++The codec driver also supports the following alsa operations:-
++
++/* SoC audio ops */
++struct snd_soc_ops {
++ int (*startup)(snd_pcm_substream_t *);
++ void (*shutdown)(snd_pcm_substream_t *);
++ int (*hw_params)(snd_pcm_substream_t *, snd_pcm_hw_params_t *);
++ int (*hw_free)(snd_pcm_substream_t *);
++ int (*prepare)(snd_pcm_substream_t *);
++};
++
++Please refer to the alsa driver PCM documentation for details.
++http://www.alsa-project.org/~iwai/writing-an-alsa-driver/c436.htm
++
++
++8 - DAPM description.
++---------------------
++The Dynamic Audio Power Management description describes the codec's power
++components, their relationships and registers to the ASoC core. Please read
++dapm.txt for details of building the description.
++
++Please also see the examples in other codec drivers.
++
++
++9 - DAPM event handler
++----------------------
++This function is a callback that handles codec domain PM calls and system
++domain PM calls (e.g. suspend and resume). It's used to put the codec to sleep
++when not in use.
++
++Power states:-
++
++ SNDRV_CTL_POWER_D0: /* full On */
++ /* vref/mid, clk and osc on, active */
++
++ SNDRV_CTL_POWER_D1: /* partial On */
++ SNDRV_CTL_POWER_D2: /* partial On */
++
++ SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* everything off except vref/vmid, inactive */
++
++ SNDRV_CTL_POWER_D3cold: /* Everything Off, without power */
++
++
++10 - Codec DAC digital mute control.
++------------------------------------
++Most codecs have a digital mute before the DAC's that can be used to minimise
++any system noise. The mute stops any digital data from entering the DAC.
++
++A callback can be created that is called by the core for each codec DAI when the
++mute is applied or freed.
++
++i.e.
++
++static int wm8974_mute(struct snd_soc_codec *codec,
++ struct snd_soc_codec_dai *dai, int mute)
++{
++ u16 mute_reg = wm8974_read_reg_cache(codec, WM8974_DAC) & 0xffbf;
++ if(mute)
++ wm8974_write(codec, WM8974_DAC, mute_reg | 0x40);
++ else
++ wm8974_write(codec, WM8974_DAC, mute_reg);
++ return 0;
++}
+Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/dapm.txt
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/dapm.txt
+@@ -0,0 +1,297 @@
++Dynamic Audio Power Management for Portable Devices
++===================================================
++
++1. Description
++==============
++
++Dynamic Audio Power Management (DAPM) is designed to allow portable Linux devices
++to use the minimum amount of power within the audio subsystem at all times. It
++is independent of other kernel PM and as such, can easily co-exist with the
++other PM systems.
++
++DAPM is also completely transparent to all user space applications as all power
++switching is done within the ASoC core. No code changes or recompiling are
++required for user space applications. DAPM makes power switching descisions based
++upon any audio stream (capture/playback) activity and audio mixer settings
++within the device.
++
++DAPM spans the whole machine. It covers power control within the entire audio
++subsystem, this includes internal codec power blocks and machine level power
++systems.
++
++There are 4 power domains within DAPM
++
++ 1. Codec domain - VREF, VMID (core codec and audio power)
++ Usually controlled at codec probe/remove and suspend/resume, although
++ can be set at stream time if power is not needed for sidetone, etc.
++
++ 2. Platform/Machine domain - physically connected inputs and outputs
++ Is platform/machine and user action specific, is configured by the
++ machine driver and responds to asynchronous events e.g when HP
++ are inserted
++
++ 3. Path domain - audio susbsystem signal paths
++ Automatically set when mixer and mux settings are changed by the user.
++ e.g. alsamixer, amixer.
++
++ 4. Stream domain - DAC's and ADC's.
++ Enabled and disabled when stream playback/capture is started and
++ stopped respectively. e.g. aplay, arecord.
++
++All DAPM power switching descisons are made automatically by consulting an audio
++routing map of the whole machine. This map is specific to each machine and
++consists of the interconnections between every audio component (including
++internal codec components). All audio components that effect power are called
++widgets hereafter.
++
++
++2. DAPM Widgets
++===============
++
++Audio DAPM widgets fall into a number of types:-
++
++ o Mixer - Mixes several analog signals into a single analog signal.
++ o Mux - An analog switch that outputs only 1 of it's inputs.
++ o PGA - A programmable gain amplifier or attenuation widget.
++ o ADC - Analog to Digital Converter
++ o DAC - Digital to Analog Converter
++ o Switch - An analog switch
++ o Input - A codec input pin
++ o Output - A codec output pin
++ o Headphone - Headphone (and optional Jack)
++ o Mic - Mic (and optional Jack)
++ o Line - Line Input/Output (and optional Jack)
++ o Speaker - Speaker
++ o Pre - Special PRE widget (exec before all others)
++ o Post - Special POST widget (exec after all others)
++
++(Widgets are defined in include/sound/soc-dapm.h)
++
++Widgets are usually added in the codec driver and the machine driver. There are
++convience macros defined in soc-dapm.h that can be used to quickly build a
++list of widgets of the codecs and machines DAPM widgets.
++
++Most widgets have a name, register, shift and invert. Some widgets have extra
++parameters for stream name and kcontrols.
++
++
++2.1 Stream Domain Widgets
++-------------------------
++
++Stream Widgets relate to the stream power domain and only consist of ADC's
++(analog to digital converters) and DAC's (digital to analog converters).
++
++Stream widgets have the following format:-
++
++SND_SOC_DAPM_DAC(name, stream name, reg, shift, invert),
++
++NOTE: the stream name must match the corresponding stream name in your codecs
++snd_soc_codec_dai.
++
++e.g. stream widgets for HiFi playback and capture
++
++SND_SOC_DAPM_DAC("HiFi DAC", "HiFi Playback", REG, 3, 1),
++SND_SOC_DAPM_ADC("HiFi ADC", "HiFi Capture", REG, 2, 1),
++
++
++2.2 Path Domain Widgets
++-----------------------
++
++Path domain widgets have a ability to control or effect the audio signal or
++audio paths within the audio subsystem. They have the following form:-
++
++SND_SOC_DAPM_PGA(name, reg, shift, invert, controls, num_controls)
++
++Any widget kcontrols can be set using the controls and num_controls members.
++
++e.g. Mixer widget (the kcontrols are declared first)
++
++/* Output Mixer */
++static const snd_kcontrol_new_t wm8731_output_mixer_controls[] = {
++SOC_DAPM_SINGLE("Line Bypass Switch", WM8731_APANA, 3, 1, 0),
++SOC_DAPM_SINGLE("Mic Sidetone Switch", WM8731_APANA, 5, 1, 0),
++SOC_DAPM_SINGLE("HiFi Playback Switch", WM8731_APANA, 4, 1, 0),
++};
++
++SND_SOC_DAPM_MIXER("Output Mixer", WM8731_PWR, 4, 1, wm8731_output_mixer_controls,
++ ARRAY_SIZE(wm8731_output_mixer_controls)),
++
++
++2.3 Platform/Machine domain Widgets
++-----------------------------------
++
++Machine widgets are different from codec widgets in that they don't have a
++codec register bit associated with them. A machine widget is assigned to each
++machine audio component (non codec) that can be independently powered. e.g.
++
++ o Speaker Amp
++ o Microphone Bias
++ o Jack connectors
++
++A machine widget can have an optional call back.
++
++e.g. Jack connector widget for an external Mic that enables Mic Bias
++when the Mic is inserted:-
++
++static int spitz_mic_bias(struct snd_soc_dapm_widget* w, int event)
++{
++ if(SND_SOC_DAPM_EVENT_ON(event))
++ set_scoop_gpio(&spitzscoop2_device.dev, SPITZ_SCP2_MIC_BIAS);
++ else
++ reset_scoop_gpio(&spitzscoop2_device.dev, SPITZ_SCP2_MIC_BIAS);
++
++ return 0;
++}
++
++SND_SOC_DAPM_MIC("Mic Jack", spitz_mic_bias),
++
++
++2.4 Codec Domain
++----------------
++
++The Codec power domain has no widgets and is handled by the codecs DAPM event
++handler. This handler is called when the codec powerstate is changed wrt to any
++stream event or by kernel PM events.
++
++
++2.5 Virtual Widgets
++-------------------
++
++Sometimes widgets exist in the codec or machine audio map that don't have any
++corresponding register bit for power control. In this case it's necessary to
++create a virtual widget - a widget with no control bits e.g.
++
++SND_SOC_DAPM_MIXER("AC97 Mixer", SND_SOC_DAPM_NOPM, 0, 0, NULL, 0),
++
++This can be used to merge to signal paths together in software.
++
++After all the widgets have been defined, they can then be added to the DAPM
++subsystem individually with a call to snd_soc_dapm_new_control().
++
++
++3. Codec Widget Interconnections
++================================
++
++Widgets are connected to each other within the codec and machine by audio
++paths (called interconnections). Each interconnection must be defined in order
++to create a map of all audio paths between widgets.
++This is easiest with a diagram of the codec (and schematic of the machine audio
++system), as it requires joining widgets together via their audio signal paths.
++
++i.e. from the WM8731 codec's output mixer (wm8731.c)
++
++The WM8731 output mixer has 3 inputs (sources)
++
++ 1. Line Bypass Input
++ 2. DAC (HiFi playback)
++ 3. Mic Sidetone Input
++
++Each input in this example has a kcontrol associated with it (defined in example
++above) and is connected to the output mixer via it's kcontrol name. We can now
++connect the destination widget (wrt audio signal) with it's source widgets.
++
++ /* output mixer */
++ {"Output Mixer", "Line Bypass Switch", "Line Input"},
++ {"Output Mixer", "HiFi Playback Switch", "DAC"},
++ {"Output Mixer", "Mic Sidetone Switch", "Mic Bias"},
++
++So we have :-
++
++ Destination Widget <=== Path Name <=== Source Widget
++
++Or:-
++
++ Sink, Path, Source
++
++Or :-
++
++ "Output Mixer" is connected to the "DAC" via the "HiFi Playback Switch".
++
++When there is no path name connecting widgets (e.g. a direct connection) we
++pass NULL for the path name.
++
++Interconnections are created with a call to:-
++
++snd_soc_dapm_connect_input(codec, sink, path, source);
++
++Finally, snd_soc_dapm_new_widgets(codec) must be called after all widgets and
++interconnections have been registered with the core. This causes the core to
++scan the codec and machine so that the internal DAPM state matches the
++physical state of the machine.
++
++
++3.1 Machine Widget Interconnections
++-----------------------------------
++Machine widget interconnections are created in the same way as codec ones and
++directly connect the codec pins to machine level widgets.
++
++e.g. connects the speaker out codec pins to the internal speaker.
++
++ /* ext speaker connected to codec pins LOUT2, ROUT2 */
++ {"Ext Spk", NULL , "ROUT2"},
++ {"Ext Spk", NULL , "LOUT2"},
++
++This allows the DAPM to power on and off pins that are connected (and in use)
++and pins that are NC respectively.
++
++
++4 Endpoint Widgets
++===================
++An endpoint is a start or end point (widget) of an audio signal within the
++machine and includes the codec. e.g.
++
++ o Headphone Jack
++ o Internal Speaker
++ o Internal Mic
++ o Mic Jack
++ o Codec Pins
++
++When a codec pin is NC it can be marked as not used with a call to
++
++snd_soc_dapm_set_endpoint(codec, "Widget Name", 0);
++
++The last argument is 0 for inactive and 1 for active. This way the pin and its
++input widget will never be powered up and consume power.
++
++This also applies to machine widgets. e.g. if a headphone is connected to a
++jack then the jack can be marked active. If the headphone is removed, then
++the headphone jack can be marked inactive.
++
++
++5 DAPM Widget Events
++====================
++
++Some widgets can register their interest with the DAPM core in PM events.
++e.g. A Speaker with an amplifier registers a widget so the amplifier can be
++powered only when the spk is in use.
++
++/* turn speaker amplifier on/off depending on use */
++static int corgi_amp_event(struct snd_soc_dapm_widget *w, int event)
++{
++ if (SND_SOC_DAPM_EVENT_ON(event))
++ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_APM_ON);
++ else
++ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_APM_ON);
++
++ return 0;
++}
++
++/* corgi machine dapm widgets */
++static const struct snd_soc_dapm_widget wm8731_dapm_widgets =
++ SND_SOC_DAPM_SPK("Ext Spk", corgi_amp_event);
++
++Please see soc-dapm.h for all other widgets that support events.
++
++
++5.1 Event types
++---------------
++
++The following event types are supported by event widgets.
++
++/* dapm event types */
++#define SND_SOC_DAPM_PRE_PMU 0x1 /* before widget power up */
++#define SND_SOC_DAPM_POST_PMU 0x2 /* after widget power up */
++#define SND_SOC_DAPM_PRE_PMD 0x4 /* before widget power down */
++#define SND_SOC_DAPM_POST_PMD 0x8 /* after widget power down */
++#define SND_SOC_DAPM_PRE_REG 0x10 /* before audio path setup */
++#define SND_SOC_DAPM_POST_REG 0x20 /* after audio path setup */
+Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/machine.txt
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/machine.txt
+@@ -0,0 +1,114 @@
++ASoC Machine Driver
++===================
++
++The ASoC machine (or board) driver is the code that glues together the platform
++and codec drivers.
++
++The machine driver can contain codec and platform specific code. It registers
++the audio subsystem with the kernel as a platform device and is represented by
++the following struct:-
++
++/* SoC machine */
++struct snd_soc_machine {
++ char *name;
++
++ int (*probe)(struct platform_device *pdev);
++ int (*remove)(struct platform_device *pdev);
++
++ /* the pre and post PM functions are used to do any PM work before and
++ * after the codec and DAI's do any PM work. */
++ int (*suspend_pre)(struct platform_device *pdev, pm_message_t state);
++ int (*suspend_post)(struct platform_device *pdev, pm_message_t state);
++ int (*resume_pre)(struct platform_device *pdev);
++ int (*resume_post)(struct platform_device *pdev);
++
++ /* machine stream operations */
++ struct snd_soc_ops *ops;
++
++ /* CPU <--> Codec DAI links */
++ struct snd_soc_dai_link *dai_link;
++ int num_links;
++};
++
++probe()/remove()
++----------------
++probe/remove are optional. Do any machine specific probe here.
++
++
++suspend()/resume()
++------------------
++The machine driver has pre and post versions of suspend and resume to take care
++of any machine audio tasks that have to be done before or after the codec, DAI's
++and DMA is suspended and resumed. Optional.
++
++
++Machine operations
++------------------
++The machine specific audio operations can be set here. Again this is optional.
++
++
++Machine DAI Configuration
++-------------------------
++The machine DAI configuration glues all the codec and CPU DAI's together. It can
++also be used to set up the DAI system clock and for any machine related DAI
++initialisation e.g. the machine audio map can be connected to the codec audio
++map, unconnnected codec pins can be set as such. Please see corgi.c, spitz.c
++for examples.
++
++struct snd_soc_dai_link is used to set up each DAI in your machine. e.g.
++
++/* corgi digital audio interface glue - connects codec <--> CPU */
++static struct snd_soc_dai_link corgi_dai = {
++ .name = "WM8731",
++ .stream_name = "WM8731",
++ .cpu_dai = &pxa_i2s_dai,
++ .codec_dai = &wm8731_dai,
++ .init = corgi_wm8731_init,
++ .config_sysclk = corgi_config_sysclk,
++};
++
++struct snd_soc_machine then sets up the machine with it's DAI's. e.g.
++
++/* corgi audio machine driver */
++static struct snd_soc_machine snd_soc_machine_corgi = {
++ .name = "Corgi",
++ .dai_link = &corgi_dai,
++ .num_links = 1,
++ .ops = &corgi_ops,
++};
++
++
++Machine Audio Subsystem
++-----------------------
++
++The machine soc device glues the platform, machine and codec driver together.
++Private data can also be set here. e.g.
++
++/* corgi audio private data */
++static struct wm8731_setup_data corgi_wm8731_setup = {
++ .i2c_address = 0x1b,
++};
++
++/* corgi audio subsystem */
++static struct snd_soc_device corgi_snd_devdata = {
++ .machine = &snd_soc_machine_corgi,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm8731,
++ .codec_data = &corgi_wm8731_setup,
++};
++
++
++Machine Power Map
++-----------------
++
++The machine driver can optionally extend the codec power map and to become an
++audio power map of the audio subsystem. This allows for automatic power up/down
++of speaker/HP amplifiers, etc. Codec pins can be connected to the machines jack
++sockets in the machine init function. See soc/pxa/spitz.c and dapm.txt for
++details.
++
++
++Machine Controls
++----------------
++
++Machine specific audio mixer controls can be added in the dai init function.
+\ No newline at end of file
+Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/overview.txt
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/overview.txt
+@@ -0,0 +1,83 @@
++ALSA SoC Layer
++==============
++
++The overall project goal of the ALSA System on Chip (ASoC) layer is to provide
++better ALSA support for embedded system on chip procesors (e.g. pxa2xx, au1x00,
++iMX, etc) and portable audio codecs. Currently there is some support in the
++kernel for SoC audio, however it has some limitations:-
++
++ * Currently, codec drivers are often tightly coupled to the underlying SoC
++ cpu. This is not ideal and leads to code duplication i.e. Linux now has 4
++ different wm8731 drivers for 4 different SoC platforms.
++
++ * There is no standard method to signal user initiated audio events.
++ e.g. Headphone/Mic insertion, Headphone/Mic detection after an insertion
++ event. These are quite common events on portable devices and ofter require
++ machine specific code to re route audio, enable amps etc after such an event.
++
++ * Current drivers tend to power up the entire codec when playing
++ (or recording) audio. This is fine for a PC, but tends to waste a lot of
++ power on portable devices. There is also no support for saving power via
++ changing codec oversampling rates, bias currents, etc.
++
++
++ASoC Design
++===========
++
++The ASoC layer is designed to address these issues and provide the following
++features :-
++
++ * Codec independence. Allows reuse of codec drivers on other platforms
++ and machines.
++
++ * Easy I2S/PCM audio interface setup between codec and SoC. Each SoC interface
++ and codec registers it's audio interface capabilities with the core and are
++ subsequently matched and configured when the application hw params are known.
++
++ * Dynamic Audio Power Management (DAPM). DAPM automatically sets the codec to
++ it's minimum power state at all times. This includes powering up/down
++ internal power blocks depending on the internal codec audio routing and any
++ active streams.
++
++ * Pop and click reduction. Pops and clicks can be reduced by powering the
++ codec up/down in the correct sequence (including using digital mute). ASoC
++ signals the codec when to change power states.
++
++ * Machine specific controls: Allow machines to add controls to the sound card
++ e.g. volume control for speaker amp.
++
++To achieve all this, ASoC basically splits an embedded audio system into 3
++components :-
++
++ * Codec driver: The codec driver is platform independent and contains audio
++ controls, audio interface capabilities, codec dapm definition and codec IO
++ functions.
++
++ * Platform driver: The platform driver contains the audio dma engine and audio
++ interface drivers (e.g. I2S, AC97, PCM) for that platform.
++
++ * Machine driver: The machine driver handles any machine specific controls and
++ audio events. i.e. turing on an amp at start of playback.
++
++
++Documentation
++=============
++
++The documentation is spilt into the following sections:-
++
++overview.txt: This file.
++
++codec.txt: Codec driver internals.
++
++DAI.txt: Description of Digital Audio Interface standards and how to configure
++a DAI within your codec and CPU DAI drivers.
++
++dapm.txt: Dynamic Audio Power Management
++
++platform.txt: Platform audio DMA and DAI.
++
++machine.txt: Machine driver internals.
++
++pop_clicks.txt: How to minimise audio artifacts.
++
++clocking.txt: ASoC clocking for best power performance.
+\ No newline at end of file
+Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/platform.txt
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/platform.txt
+@@ -0,0 +1,58 @@
++ASoC Platform Driver
++====================
++
++An ASoC platform driver can be divided into audio DMA and SoC DAI configuration
++and control. The platform drivers only target the SoC CPU and must have no board
++specific code.
++
++Audio DMA
++=========
++
++The platform DMA driver optionally supports the following alsa operations:-
++
++/* SoC audio ops */
++struct snd_soc_ops {
++ int (*startup)(snd_pcm_substream_t *);
++ void (*shutdown)(snd_pcm_substream_t *);
++ int (*hw_params)(snd_pcm_substream_t *, snd_pcm_hw_params_t *);
++ int (*hw_free)(snd_pcm_substream_t *);
++ int (*prepare)(snd_pcm_substream_t *);
++ int (*trigger)(snd_pcm_substream_t *, int);
++};
++
++The platform driver exports it's DMA functionailty via struct snd_soc_platform:-
++
++struct snd_soc_platform {
++ char *name;
++
++ int (*probe)(struct platform_device *pdev);
++ int (*remove)(struct platform_device *pdev);
++ int (*suspend)(struct platform_device *pdev, struct snd_soc_cpu_dai *cpu_dai);
++ int (*resume)(struct platform_device *pdev, struct snd_soc_cpu_dai *cpu_dai);
++
++ /* pcm creation and destruction */
++ int (*pcm_new)(snd_card_t *, struct snd_soc_codec_dai *, snd_pcm_t *);
++ void (*pcm_free)(snd_pcm_t *);
++
++ /* platform stream ops */
++ snd_pcm_ops_t *pcm_ops;
++};
++
++Please refer to the alsa driver documentation for details of audio DMA.
++http://www.alsa-project.org/~iwai/writing-an-alsa-driver/c436.htm
++
++An example DMA driver is soc/pxa/pxa2xx-pcm.c
++
++
++SoC DAI Drivers
++===============
++
++Each SoC DAI driver must provide the following features:-
++
++ 1) Digital audio interface (DAI) description
++ 2) Digital audio interface configuration
++ 3) PCM's description
++ 4) Sysclk configuration
++ 5) Suspend and resume (optional)
++
++Please see codec.txt for a description of items 1 - 4.
+Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/pops_clicks.txt
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/pops_clicks.txt
+@@ -0,0 +1,52 @@
++Audio Pops and Clicks
++=====================
++
++Pops and clicks are unwanted audio artifacts caused by the powering up and down
++of components within the audio subsystem. This is noticable on PC's when an audio
++module is either loaded or unloaded (at module load time the sound card is
++powered up and causes a popping noise on the speakers).
++
++Pops and clicks can be more frequent on portable systems with DAPM. This is because
++the components within the subsystem are being dynamically powered depending on
++the audio usage and this can subsequently cause a small pop or click every time a
++component power state is changed.
++
++
++Minimising Playback Pops and Clicks
++===================================
++
++Playback pops in portable audio subsystems cannot be completely eliminated atm,
++however future audio codec hardware will have better pop and click supression.
++Pops can be reduced within playback by powering the audio components in a
++specific order. This order is different for startup and shutdown and follows
++some basic rules:-
++
++ Startup Order :- DAC --> Mixers --> Output PGA --> Digital Unmute
++
++ Shutdown Order :- Digital Mute --> Output PGA --> Mixers --> DAC
++
++This assumes that the codec PCM output path from the DAC is via a mixer and then
++a PGA (programmable gain amplifier) before being output to the speakers.
++
++
++Minimising Capture Pops and Clicks
++==================================
++
++Capture artifacts are somewhat easier to get rid as we can delay activating the
++ADC until all the pops have occured. This follows similar power rules to
++playback in that components are powered in a sequence depending upon stream
++startup or shutdown.
++
++ Startup Order - Input PGA --> Mixers --> ADC
++
++ Shutdown Order - ADC --> Mixers --> Input PGA
++
++
++Zipper Noise
++============
++An unwanted zipper noise can occur within the audio playback or capture stream
++when a volume control is changed near its maximum gain value. The zipper noise
++is heard when the gain increase or decrease changes the mean audio signal
++amplitude too quickly. It can be minimised by enabling the zero cross setting
++for each volume control. The ZC forces the gain change to occur when the signal
++crosses the zero amplitude line.
+Index: linux-2.6-pxa-new/include/sound/ac97_codec.h
+===================================================================
+--- linux-2.6-pxa-new.orig/include/sound/ac97_codec.h
++++ linux-2.6-pxa-new/include/sound/ac97_codec.h
+@@ -425,6 +425,7 @@ struct snd_ac97_build_ops {
+
+ struct snd_ac97_bus_ops {
+ void (*reset) (struct snd_ac97 *ac97);
++ void (*warm_reset)(struct snd_ac97 *ac97);
+ void (*write) (struct snd_ac97 *ac97, unsigned short reg, unsigned short val);
+ unsigned short (*read) (struct snd_ac97 *ac97, unsigned short reg);
+ void (*wait) (struct snd_ac97 *ac97);
+Index: linux-2.6-pxa-new/include/sound/soc-dapm.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/include/sound/soc-dapm.h
+@@ -0,0 +1,286 @@
++/*
++ * linux/sound/soc-dapm.h -- ALSA SoC Dynamic Audio Power Management
++ *
++ * Author: Liam Girdwood
++ * Created: Aug 11th 2005
++ * Copyright: Wolfson Microelectronics. PLC.
++ *
++ * 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.
++ */
++
++#ifndef __LINUX_SND_SOC_DAPM_H
++#define __LINUX_SND_SOC_DAPM_H
++
++#include <linux/device.h>
++#include <linux/types.h>
++#include <sound/control.h>
++#include <sound/soc.h>
++
++/* widget has no PM register bit */
++#define SND_SOC_NOPM -1
++
++/*
++ * SoC dynamic audio power managment
++ *
++ * We can have upto 4 power domains
++ * 1. Codec domain - VREF, VMID
++ * Usually controlled at codec probe/remove, although can be set
++ * at stream time if power is not needed for sidetone, etc.
++ * 2. Platform/Machine domain - physically connected inputs and outputs
++ * Is platform/machine and user action specific, is set in the machine
++ * driver and by userspace e.g when HP are inserted
++ * 3. Path domain - Internal codec path mixers
++ * Are automatically set when mixer and mux settings are
++ * changed by the user.
++ * 4. Stream domain - DAC's and ADC's.
++ * Enabled when stream playback/capture is started.
++ */
++
++/* codec domain */
++#define SND_SOC_DAPM_VMID(wname) \
++{ .id = snd_soc_dapm_vmid, .name = wname, .kcontrols = NULL, \
++ .num_kcontrols = 0}
++
++/* platform domain */
++#define SND_SOC_DAPM_INPUT(wname) \
++{ .id = snd_soc_dapm_input, .name = wname, .kcontrols = NULL, \
++ .num_kcontrols = 0}
++#define SND_SOC_DAPM_OUTPUT(wname) \
++{ .id = snd_soc_dapm_output, .name = wname, .kcontrols = NULL, \
++ .num_kcontrols = 0}
++#define SND_SOC_DAPM_MIC(wname, wevent) \
++{ .id = snd_soc_dapm_mic, .name = wname, .kcontrols = NULL, \
++ .num_kcontrols = 0, .event = wevent, \
++ .event_flags = SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD}
++#define SND_SOC_DAPM_HP(wname, wevent) \
++{ .id = snd_soc_dapm_hp, .name = wname, .kcontrols = NULL, \
++ .num_kcontrols = 0, .event = wevent, \
++ .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD}
++#define SND_SOC_DAPM_SPK(wname, wevent) \
++{ .id = snd_soc_dapm_spk, .name = wname, .kcontrols = NULL, \
++ .num_kcontrols = 0, .event = wevent, \
++ .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD}
++#define SND_SOC_DAPM_LINE(wname, wevent) \
++{ .id = snd_soc_dapm_line, .name = wname, .kcontrols = NULL, \
++ .num_kcontrols = 0, .event = wevent, \
++ .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD}
++
++/* path domain */
++#define SND_SOC_DAPM_PGA(wname, wreg, wshift, winvert,\
++ wcontrols, wncontrols) \
++{ .id = snd_soc_dapm_pga, .name = wname, .reg = wreg, .shift = wshift, \
++ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = wncontrols}
++#define SND_SOC_DAPM_MIXER(wname, wreg, wshift, winvert, \
++ wcontrols, wncontrols)\
++{ .id = snd_soc_dapm_mixer, .name = wname, .reg = wreg, .shift = wshift, \
++ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = wncontrols}
++#define SND_SOC_DAPM_MICBIAS(wname, wreg, wshift, winvert) \
++{ .id = snd_soc_dapm_micbias, .name = wname, .reg = wreg, .shift = wshift, \
++ .invert = winvert, .kcontrols = NULL, .num_kcontrols = 0}
++#define SND_SOC_DAPM_SWITCH(wname, wreg, wshift, winvert, wcontrols) \
++{ .id = snd_soc_dapm_switch, .name = wname, .reg = wreg, .shift = wshift, \
++ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1}
++#define SND_SOC_DAPM_MUX(wname, wreg, wshift, winvert, wcontrols) \
++{ .id = snd_soc_dapm_mux, .name = wname, .reg = wreg, .shift = wshift, \
++ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1}
++
++/* path domain with event - event handler must return 0 for success */
++#define SND_SOC_DAPM_PGA_E(wname, wreg, wshift, winvert, wcontrols, \
++ wncontrols, wevent, wflags) \
++{ .id = snd_soc_dapm_pga, .name = wname, .reg = wreg, .shift = wshift, \
++ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = wncontrols, \
++ .event = wevent, .event_flags = wflags}
++#define SND_SOC_DAPM_MIXER_E(wname, wreg, wshift, winvert, wcontrols, \
++ wncontrols, wevent, wflags) \
++{ .id = snd_soc_dapm_mixer, .name = wname, .reg = wreg, .shift = wshift, \
++ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = wncontrols, \
++ .event = wevent, .event_flags = wflags}
++#define SND_SOC_DAPM_MICBIAS_E(wname, wreg, wshift, winvert, wevent, wflags) \
++{ .id = snd_soc_dapm_micbias, .name = wname, .reg = wreg, .shift = wshift, \
++ .invert = winvert, .kcontrols = NULL, .num_kcontrols = 0, \
++ .event = wevent, .event_flags = wflags}
++#define SND_SOC_DAPM_SWITCH_E(wname, wreg, wshift, winvert, wcontrols, \
++ wevent, wflags) \
++{ .id = snd_soc_dapm_switch, .name = wname, .reg = wreg, .shift = wshift, \
++ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1 \
++ .event = wevent, .event_flags = wflags}
++#define SND_SOC_DAPM_MUX_E(wname, wreg, wshift, winvert, wcontrols, \
++ wevent, wflags) \
++{ .id = snd_soc_dapm_mux, .name = wname, .reg = wreg, .shift = wshift, \
++ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1, \
++ .event = wevent, .event_flags = wflags}
++
++/* events that are pre and post DAPM */
++#define SND_SOC_DAPM_PRE(wname, wevent) \
++{ .id = snd_soc_dapm_pre, .name = wname, .kcontrols = NULL, \
++ .num_kcontrols = 0, .event = wevent, \
++ .event_flags = SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD}
++#define SND_SOC_DAPM_POST(wname, wevent) \
++{ .id = snd_soc_dapm_post, .name = wname, .kcontrols = NULL, \
++ .num_kcontrols = 0, .event = wevent, \
++ .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD}
++
++/* stream domain */
++#define SND_SOC_DAPM_DAC(wname, stname, wreg, wshift, winvert) \
++{ .id = snd_soc_dapm_dac, .name = wname, .sname = stname, .reg = wreg, \
++ .shift = wshift, .invert = winvert}
++#define SND_SOC_DAPM_ADC(wname, stname, wreg, wshift, winvert) \
++{ .id = snd_soc_dapm_adc, .name = wname, .sname = stname, .reg = wreg, \
++ .shift = wshift, .invert = winvert}
++
++/* dapm kcontrol types */
++#define SOC_DAPM_SINGLE(xname, reg, shift, mask, invert) \
++{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
++ .info = snd_soc_info_volsw, \
++ .get = snd_soc_dapm_get_volsw, .put = snd_soc_dapm_put_volsw, \
++ .private_value = SOC_SINGLE_VALUE(reg, shift, mask, invert) }
++#define SOC_DAPM_DOUBLE(xname, reg, shift_left, shift_right, mask, invert, \
++ power) \
++{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
++ .info = snd_soc_info_volsw, \
++ .get = snd_soc_dapm_get_volsw, .put = snd_soc_dapm_put_volsw, \
++ .private_value = (reg) | ((shift_left) << 8) | ((shift_right) << 12) |\
++ ((mask) << 16) | ((invert) << 24) }
++#define SOC_DAPM_ENUM(xname, xenum) \
++{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
++ .info = snd_soc_info_enum_double, \
++ .get = snd_soc_dapm_get_enum_double, \
++ .put = snd_soc_dapm_put_enum_double, \
++ .private_value = (unsigned long)&xenum }
++
++/* dapm stream operations */
++#define SND_SOC_DAPM_STREAM_NOP 0x0
++#define SND_SOC_DAPM_STREAM_START 0x1
++#define SND_SOC_DAPM_STREAM_STOP 0x2
++#define SND_SOC_DAPM_STREAM_SUSPEND 0x4
++#define SND_SOC_DAPM_STREAM_RESUME 0x8
++#define SND_SOC_DAPM_STREAM_PAUSE_PUSH 0x10
++#define SND_SOC_DAPM_STREAM_PAUSE_RELEASE 0x20
++
++/* dapm event types */
++#define SND_SOC_DAPM_PRE_PMU 0x1 /* before widget power up */
++#define SND_SOC_DAPM_POST_PMU 0x2 /* after widget power up */
++#define SND_SOC_DAPM_PRE_PMD 0x4 /* before widget power down */
++#define SND_SOC_DAPM_POST_PMD 0x8 /* after widget power down */
++#define SND_SOC_DAPM_PRE_REG 0x10 /* before audio path setup */
++#define SND_SOC_DAPM_POST_REG 0x20 /* after audio path setup */
++
++/* convenience event type detection */
++#define SND_SOC_DAPM_EVENT_ON(e) \
++ (e & (SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU))
++#define SND_SOC_DAPM_EVENT_OFF(e) \
++ (e & (SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD))
++
++struct snd_soc_dapm_widget;
++enum snd_soc_dapm_type;
++struct snd_soc_dapm_path;
++struct snd_soc_dapm_pin;
++
++/* dapm controls */
++int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol);
++int snd_soc_dapm_get_volsw(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol);
++int snd_soc_dapm_get_enum_double(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol);
++int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol);
++int snd_soc_dapm_new_control(struct snd_soc_codec *codec,
++ const struct snd_soc_dapm_widget *widget);
++
++/* dapm path setup */
++int snd_soc_dapm_connect_input(struct snd_soc_codec *codec,
++ const char *sink_name, const char *control_name, const char *src_name);
++int snd_soc_dapm_new_widgets(struct snd_soc_codec *codec);
++void snd_soc_dapm_free(struct snd_soc_device *socdev);
++
++/* dapm events */
++int snd_soc_dapm_stream_event(struct snd_soc_codec *codec, char *stream,
++ int event);
++
++/* dapm sys fs - used by the core */
++int snd_soc_dapm_sys_add(struct device *dev);
++
++/* dapm audio endpoint control */
++int snd_soc_dapm_set_endpoint(struct snd_soc_codec *codec,
++ char *pin, int status);
++int snd_soc_dapm_sync_endpoints(struct snd_soc_codec *codec);
++
++/* dapm widget types */
++enum snd_soc_dapm_type {
++ snd_soc_dapm_input = 0, /* input pin */
++ snd_soc_dapm_output, /* output pin */
++ snd_soc_dapm_mux, /* selects 1 analog signal from many inputs */
++ snd_soc_dapm_mixer, /* mixes several analog signals together */
++ snd_soc_dapm_pga, /* programmable gain/attenuation (volume) */
++ snd_soc_dapm_adc, /* analog to digital converter */
++ snd_soc_dapm_dac, /* digital to analog converter */
++ snd_soc_dapm_micbias, /* microphone bias (power) */
++ snd_soc_dapm_mic, /* microphone */
++ snd_soc_dapm_hp, /* headphones */
++ snd_soc_dapm_spk, /* speaker */
++ snd_soc_dapm_line, /* line input/output */
++ snd_soc_dapm_switch, /* analog switch */
++ snd_soc_dapm_vmid, /* codec bias/vmid - to minimise pops */
++ snd_soc_dapm_pre, /* machine specific pre widget - exec first */
++ snd_soc_dapm_post, /* machine specific post widget - exec last */
++};
++
++/* dapm audio path between two widgets */
++struct snd_soc_dapm_path {
++ char *name;
++ char *long_name;
++
++ /* source (input) and sink (output) widgets */
++ struct snd_soc_dapm_widget *source;
++ struct snd_soc_dapm_widget *sink;
++ struct snd_kcontrol *kcontrol;
++
++ /* status */
++ u32 connect:1; /* source and sink widgets are connected */
++ u32 walked:1; /* path has been walked */
++
++ struct list_head list_source;
++ struct list_head list_sink;
++ struct list_head list;
++};
++
++/* dapm widget */
++struct snd_soc_dapm_widget {
++ enum snd_soc_dapm_type id;
++ char *name; /* widget name */
++ char *sname; /* stream name */
++ struct snd_soc_codec *codec;
++ struct list_head list;
++
++ /* dapm control */
++ short reg; /* negative reg = no direct dapm */
++ unsigned char shift; /* bits to shift */
++ unsigned int saved_value; /* widget saved value */
++ unsigned int value; /* widget current value */
++ unsigned char power:1; /* block power status */
++ unsigned char invert:1; /* invert the power bit */
++ unsigned char active:1; /* active stream on DAC, ADC's */
++ unsigned char connected:1; /* connected codec pin */
++ unsigned char new:1; /* cnew complete */
++ unsigned char ext:1; /* has external widgets */
++ unsigned char muted:1; /* muted for pop reduction */
++ unsigned char suspend:1; /* was active before suspend */
++ unsigned char pmdown:1; /* waiting for timeout */
++
++ /* external events */
++ unsigned short event_flags; /* flags to specify event types */
++ int (*event)(struct snd_soc_dapm_widget*, int);
++
++ /* kcontrols that relate to this widget */
++ int num_kcontrols;
++ const struct snd_kcontrol_new *kcontrols;
++
++ /* widget input and outputs */
++ struct list_head sources;
++ struct list_head sinks;
++};
++
++#endif
+Index: linux-2.6-pxa-new/include/sound/soc.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/include/sound/soc.h
+@@ -0,0 +1,487 @@
++/*
++ * linux/sound/soc.h -- ALSA SoC Layer
++ *
++ * Author: Liam Girdwood
++ * Created: Aug 11th 2005
++ * Copyright: Wolfson Microelectronics. PLC.
++ *
++ * 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.
++ */
++
++#ifndef __LINUX_SND_SOC_H
++#define __LINUX_SND_SOC_H
++
++#include <linux/platform_device.h>
++#include <linux/types.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/control.h>
++#include <sound/ac97_codec.h>
++
++#define SND_SOC_VERSION "0.12.4"
++
++/*
++ * Convenience kcontrol builders
++ */
++#define SOC_SINGLE_VALUE(reg,shift,mask,invert) ((reg) | ((shift) << 8) |\
++ ((shift) << 12) | ((mask) << 16) | ((invert) << 24))
++#define SOC_SINGLE_VALUE_EXT(reg,mask,invert) ((reg) | ((mask) << 16) |\
++ ((invert) << 31))
++#define SOC_SINGLE(xname, reg, shift, mask, invert) \
++{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
++ .info = snd_soc_info_volsw, .get = snd_soc_get_volsw,\
++ .put = snd_soc_put_volsw, \
++ .private_value = SOC_SINGLE_VALUE(reg, shift, mask, invert) }
++#define SOC_DOUBLE(xname, reg, shift_left, shift_right, mask, invert) \
++{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
++ .info = snd_soc_info_volsw, .get = snd_soc_get_volsw, \
++ .put = snd_soc_put_volsw, \
++ .private_value = (reg) | ((shift_left) << 8) | \
++ ((shift_right) << 12) | ((mask) << 16) | ((invert) << 24) }
++#define SOC_DOUBLE_R(xname, reg_left, reg_right, shift, mask, invert) \
++{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
++ .info = snd_soc_info_volsw_2r, \
++ .get = snd_soc_get_volsw_2r, .put = snd_soc_put_volsw_2r, \
++ .private_value = (reg_left) | ((shift) << 8) | \
++ ((mask) << 12) | ((invert) << 20) | ((reg_right) << 24) }
++#define SOC_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xmask, xtexts) \
++{ .reg = xreg, .shift_l = xshift_l, .shift_r = xshift_r, \
++ .mask = xmask, .texts = xtexts }
++#define SOC_ENUM_SINGLE(xreg, xshift, xmask, xtexts) \
++ SOC_ENUM_DOUBLE(xreg, xshift, xshift, xmask, xtexts)
++#define SOC_ENUM_SINGLE_EXT(xmask, xtexts) \
++{ .mask = xmask, .texts = xtexts }
++#define SOC_ENUM(xname, xenum) \
++{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname,\
++ .info = snd_soc_info_enum_double, \
++ .get = snd_soc_get_enum_double, .put = snd_soc_put_enum_double, \
++ .private_value = (unsigned long)&xenum }
++#define SOC_SINGLE_EXT(xname, xreg, xmask, xinvert,\
++ xhandler_get, xhandler_put) \
++{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
++ .info = snd_soc_info_volsw_ext, \
++ .get = xhandler_get, .put = xhandler_put, \
++ .private_value = SOC_SINGLE_VALUE_EXT(xreg, xmask, xinvert) }
++#define SOC_SINGLE_BOOL_EXT(xname, xdata, xhandler_get, xhandler_put) \
++{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
++ .info = snd_soc_info_bool_ext, \
++ .get = xhandler_get, .put = xhandler_put, \
++ .private_value = xdata }
++#define SOC_ENUM_EXT(xname, xenum, xhandler_get, xhandler_put) \
++{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
++ .info = snd_soc_info_enum_ext, \
++ .get = xhandler_get, .put = xhandler_put, \
++ .private_value = (unsigned long)&xenum }
++
++/*
++ * Digital Audio Interface (DAI) types
++ */
++#define SND_SOC_DAI_AC97 0x1
++#define SND_SOC_DAI_I2S 0x2
++#define SND_SOC_DAI_PCM 0x4
++
++/*
++ * DAI hardware audio formats
++ */
++#define SND_SOC_DAIFMT_I2S (1 << 0) /* I2S mode */
++#define SND_SOC_DAIFMT_RIGHT_J (1 << 1) /* Right justified mode */
++#define SND_SOC_DAIFMT_LEFT_J (1 << 2) /* Left Justified mode */
++#define SND_SOC_DAIFMT_DSP_A (1 << 3) /* L data msb after FRM or LRC */
++#define SND_SOC_DAIFMT_DSP_B (1 << 4) /* L data msb during FRM or LRC */
++#define SND_SOC_DAIFMT_AC97 (1 << 5) /* AC97 */
++
++/*
++ * DAI hardware signal inversions
++ */
++#define SND_SOC_DAIFMT_NB_NF (1 << 8) /* normal bit clock + frame */
++#define SND_SOC_DAIFMT_NB_IF (1 << 9) /* normal bclk + inv frm */
++#define SND_SOC_DAIFMT_IB_NF (1 << 10) /* invert bclk + nor frm */
++#define SND_SOC_DAIFMT_IB_IF (1 << 11) /* invert bclk + frm */
++
++/*
++ * DAI hardware clock masters
++ * This is wrt the codec, the inverse is true for the interface
++ * i.e. if the codec is clk and frm master then the interface is
++ * clk and frame slave.
++ */
++#define SND_SOC_DAIFMT_CBM_CFM (1 << 12) /* codec clk & frm master */
++#define SND_SOC_DAIFMT_CBS_CFM (1 << 13) /* codec clk slave & frm master */
++#define SND_SOC_DAIFMT_CBM_CFS (1 << 14) /* codec clk master & frame slave */
++#define SND_SOC_DAIFMT_CBS_CFS (1 << 15) /* codec clk & frm slave */
++
++#define SND_SOC_DAIFMT_FORMAT_MASK 0x00ff
++#define SND_SOC_DAIFMT_INV_MASK 0x0f00
++#define SND_SOC_DAIFMT_CLOCK_MASK 0xf000
++
++/*
++ * DAI hardware audio direction
++ */
++#define SND_SOC_DAIDIR_PLAYBACK 0x1
++#define SND_SOC_DAIDIR_CAPTURE 0x2
++
++/*
++ * DAI hardware Time Division Multiplexing (TDM) Slots
++ * Left and Right data word positions
++ * This is measured in words (sample size) and not bits.
++ */
++#define SND_SOC_DAITDM_LRDW(l,r) ((l << 8) | r)
++
++/*
++ * DAI hardware clock ratios
++ * bit clock can either be a generated by dividing mclk or
++ * by multiplying sample rate, hence there are 2 definitions below
++ * depending on codec type.
++ */
++/* ratio of sample rate to mclk/sysclk */
++#define SND_SOC_FS_ALL 0xffff /* all mclk supported */
++
++/* bit clock dividers */
++#define SND_SOC_FSBD(x) (1 << (x - 1)) /* ratio mclk:bclk */
++#define SND_SOC_FSBD_REAL(x) (ffs(x))
++
++/* bit clock ratio to (sample rate * channels * word size) */
++#define SND_SOC_FSBW(x) (1 << (x - 1))
++#define SND_SOC_FSBW_REAL(x) (ffs(x))
++/* all bclk ratios supported */
++#define SND_SOC_FSB_ALL ~0ULL
++
++/*
++ * DAI hardware flags
++ */
++/* use bfs mclk divider mode (BCLK = MCLK / x) */
++#define SND_SOC_DAI_BFS_DIV 0x1
++/* use bfs rate mulitplier (BCLK = RATE * x)*/
++#define SND_SOC_DAI_BFS_RATE 0x2
++/* use bfs rcw multiplier (BCLK = RATE * CHN * WORD SIZE) */
++#define SND_SOC_DAI_BFS_RCW 0x4
++/* capture and playback can use different clocks */
++#define SND_SOC_DAI_ASYNC 0x8
++/* can use gated BCLK */
++#define SND_SOC_DAI_GATED 0x10
++
++/*
++ * AC97 codec ID's bitmask
++ */
++#define SND_SOC_DAI_AC97_ID0 (1 << 0)
++#define SND_SOC_DAI_AC97_ID1 (1 << 1)
++#define SND_SOC_DAI_AC97_ID2 (1 << 2)
++#define SND_SOC_DAI_AC97_ID3 (1 << 3)
++
++struct snd_soc_device;
++struct snd_soc_pcm_stream;
++struct snd_soc_ops;
++struct snd_soc_dai_mode;
++struct snd_soc_pcm_runtime;
++struct snd_soc_codec_dai;
++struct snd_soc_cpu_dai;
++struct snd_soc_codec;
++struct snd_soc_machine_config;
++struct soc_enum;
++struct snd_soc_ac97_ops;
++struct snd_soc_clock_info;
++
++typedef int (*hw_write_t)(void *,const char* ,int);
++typedef int (*hw_read_t)(void *,char* ,int);
++
++extern struct snd_ac97_bus_ops soc_ac97_ops;
++
++/* pcm <-> DAI connect */
++void snd_soc_free_pcms(struct snd_soc_device *socdev);
++int snd_soc_new_pcms(struct snd_soc_device *socdev, int idx, const char *xid);
++int snd_soc_register_card(struct snd_soc_device *socdev);
++
++/* set runtime hw params */
++int snd_soc_set_runtime_hwparams(struct snd_pcm_substream *substream,
++ const struct snd_pcm_hardware *hw);
++int snd_soc_get_rate(int rate);
++
++/* codec IO */
++#define snd_soc_read(codec, reg) codec->read(codec, reg)
++#define snd_soc_write(codec, reg, value) codec->write(codec, reg, value)
++
++/* codec register bit access */
++int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg,
++ unsigned short mask, unsigned short value);
++int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned short reg,
++ unsigned short mask, unsigned short value);
++
++int snd_soc_new_ac97_codec(struct snd_soc_codec *codec,
++ struct snd_ac97_bus_ops *ops, int num);
++void snd_soc_free_ac97_codec(struct snd_soc_codec *codec);
++
++/*
++ *Controls
++ */
++struct snd_kcontrol *snd_soc_cnew(const struct snd_kcontrol_new *_template,
++ void *data, char *long_name);
++int snd_soc_info_enum_double(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo);
++int snd_soc_info_enum_ext(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo);
++int snd_soc_get_enum_double(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol);
++int snd_soc_put_enum_double(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol);
++int snd_soc_info_volsw(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo);
++int snd_soc_info_volsw_ext(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo);
++int snd_soc_info_bool_ext(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo);
++int snd_soc_get_volsw(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol);
++int snd_soc_put_volsw(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol);
++int snd_soc_info_volsw_2r(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo);
++int snd_soc_get_volsw_2r(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol);
++int snd_soc_put_volsw_2r(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol);
++
++/* SoC PCM stream information */
++struct snd_soc_pcm_stream {
++ char *stream_name;
++ unsigned int rate_min; /* min rate */
++ unsigned int rate_max; /* max rate */
++ unsigned int channels_min; /* min channels */
++ unsigned int channels_max; /* max channels */
++ unsigned int active:1; /* stream is in use */
++};
++
++/* SoC audio ops */
++struct snd_soc_ops {
++ int (*startup)(struct snd_pcm_substream *);
++ void (*shutdown)(struct snd_pcm_substream *);
++ int (*hw_params)(struct snd_pcm_substream *, struct snd_pcm_hw_params *);
++ int (*hw_free)(struct snd_pcm_substream *);
++ int (*prepare)(struct snd_pcm_substream *);
++ int (*trigger)(struct snd_pcm_substream *, int);
++};
++
++/* SoC DAI hardware mode */
++struct snd_soc_dai_mode {
++ u16 fmt; /* SND_SOC_DAIFMT_* */
++ u16 tdm; /* SND_SOC_HWTDM_* */
++ u64 pcmfmt; /* SNDRV_PCM_FMTBIT_* */
++ u16 pcmrate; /* SND_SOC_HWRATE_* */
++ u16 pcmdir:2; /* SND_SOC_HWDIR_* */
++ u16 flags:8; /* hw flags */
++ u16 fs; /* mclk to rate divider */
++ u64 bfs; /* mclk to bclk dividers */
++ unsigned long priv; /* private mode data */
++};
++
++/* DAI capabilities */
++struct snd_soc_dai_cap {
++ int num_modes; /* number of DAI modes */
++ struct snd_soc_dai_mode *mode; /* array of supported DAI modes */
++};
++
++/* SoC Codec DAI */
++struct snd_soc_codec_dai {
++ char *name;
++ int id;
++
++ /* DAI capabilities */
++ struct snd_soc_pcm_stream playback;
++ struct snd_soc_pcm_stream capture;
++ struct snd_soc_dai_cap caps;
++
++ /* DAI runtime info */
++ struct snd_soc_dai_mode dai_runtime;
++ struct snd_soc_ops ops;
++ unsigned int (*config_sysclk)(struct snd_soc_codec_dai*,
++ struct snd_soc_clock_info *info, unsigned int clk);
++ int (*digital_mute)(struct snd_soc_codec *,
++ struct snd_soc_codec_dai*, int);
++ unsigned int mclk; /* the audio master clock */
++ unsigned int pll_in; /* the PLL input clock */
++ unsigned int pll_out; /* the PLL output clock */
++ unsigned int clk_div; /* internal clock divider << 1 (for fractions) */
++ unsigned int active;
++ unsigned char pop_wait:1;
++
++ /* DAI private data */
++ void *private_data;
++};
++
++/* SoC CPU DAI */
++struct snd_soc_cpu_dai {
++
++ /* DAI description */
++ char *name;
++ unsigned int id;
++ unsigned char type;
++
++ /* DAI callbacks */
++ int (*probe)(struct platform_device *pdev);
++ void (*remove)(struct platform_device *pdev);
++ int (*suspend)(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *cpu_dai);
++ int (*resume)(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *cpu_dai);
++ unsigned int (*config_sysclk)(struct snd_soc_cpu_dai *cpu_dai,
++ struct snd_soc_clock_info *info, unsigned int clk);
++
++ /* DAI capabilities */
++ struct snd_soc_pcm_stream capture;
++ struct snd_soc_pcm_stream playback;
++ struct snd_soc_dai_cap caps;
++
++ /* DAI runtime info */
++ struct snd_soc_dai_mode dai_runtime;
++ struct snd_soc_ops ops;
++ struct snd_pcm_runtime *runtime;
++ unsigned char active:1;
++ unsigned int mclk;
++ void *dma_data;
++
++ /* DAI private data */
++ void *private_data;
++};
++
++/* SoC Audio Codec */
++struct snd_soc_codec {
++ char *name;
++ struct module *owner;
++ struct mutex mutex;
++
++ /* callbacks */
++ int (*dapm_event)(struct snd_soc_codec *codec, int event);
++
++ /* runtime */
++ struct snd_card *card;
++ struct snd_ac97 *ac97; /* for ad-hoc ac97 devices */
++ unsigned int active;
++ unsigned int pcm_devs;
++ void *private_data;
++
++ /* codec IO */
++ void *control_data; /* codec control (i2c/3wire) data */
++ unsigned int (*read)(struct snd_soc_codec *, unsigned int);
++ int (*write)(struct snd_soc_codec *, unsigned int, unsigned int);
++ hw_write_t hw_write;
++ hw_read_t hw_read;
++ void *reg_cache;
++ short reg_cache_size;
++ short reg_cache_step;
++
++ /* dapm */
++ struct list_head dapm_widgets;
++ struct list_head dapm_paths;
++ unsigned int dapm_state;
++ unsigned int suspend_dapm_state;
++
++ /* codec DAI's */
++ struct snd_soc_codec_dai *dai;
++ unsigned int num_dai;
++};
++
++/* codec device */
++struct snd_soc_codec_device {
++ int (*probe)(struct platform_device *pdev);
++ int (*remove)(struct platform_device *pdev);
++ int (*suspend)(struct platform_device *pdev, pm_message_t state);
++ int (*resume)(struct platform_device *pdev);
++};
++
++/* SoC platform interface */
++struct snd_soc_platform {
++ char *name;
++
++ int (*probe)(struct platform_device *pdev);
++ int (*remove)(struct platform_device *pdev);
++ int (*suspend)(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *cpu_dai);
++ int (*resume)(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *cpu_dai);
++
++ /* pcm creation and destruction */
++ int (*pcm_new)(struct snd_card *, struct snd_soc_codec_dai *,
++ struct snd_pcm *);
++ void (*pcm_free)(struct snd_pcm *);
++
++ /* platform stream ops */
++ struct snd_pcm_ops *pcm_ops;
++};
++
++/* SoC machine DAI configuration, glues a codec and cpu DAI together */
++struct snd_soc_dai_link {
++ char *name; /* Codec name */
++ char *stream_name; /* Stream name */
++
++ /* DAI */
++ struct snd_soc_codec_dai *codec_dai;
++ struct snd_soc_cpu_dai *cpu_dai;
++ u32 flags; /* DAI config preference flags */
++
++ /* codec/machine specific init - e.g. add machine controls */
++ int (*init)(struct snd_soc_codec *codec);
++
++ /* audio sysclock configuration */
++ unsigned int (*config_sysclk)(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info);
++};
++
++/* SoC machine */
++struct snd_soc_machine {
++ char *name;
++
++ int (*probe)(struct platform_device *pdev);
++ int (*remove)(struct platform_device *pdev);
++
++ /* the pre and post PM functions are used to do any PM work before and
++ * after the codec and DAI's do any PM work. */
++ int (*suspend_pre)(struct platform_device *pdev, pm_message_t state);
++ int (*suspend_post)(struct platform_device *pdev, pm_message_t state);
++ int (*resume_pre)(struct platform_device *pdev);
++ int (*resume_post)(struct platform_device *pdev);
++
++ /* machine stream operations */
++ struct snd_soc_ops *ops;
++
++ /* CPU <--> Codec DAI links */
++ struct snd_soc_dai_link *dai_link;
++ int num_links;
++};
++
++/* SoC Device - the audio subsystem */
++struct snd_soc_device {
++ struct device *dev;
++ struct snd_soc_machine *machine;
++ struct snd_soc_platform *platform;
++ struct snd_soc_codec *codec;
++ struct snd_soc_codec_device *codec_dev;
++ void *codec_data;
++};
++
++/* runtime channel data */
++struct snd_soc_pcm_runtime {
++ struct snd_soc_codec_dai *codec_dai;
++ struct snd_soc_cpu_dai *cpu_dai;
++ struct snd_soc_device *socdev;
++};
++
++/* enumerated kcontrol */
++struct soc_enum {
++ unsigned short reg;
++ unsigned short reg2;
++ unsigned char shift_l;
++ unsigned char shift_r;
++ unsigned int mask;
++ const char **texts;
++ void *dapm;
++};
++
++/* clocking configuration data */
++struct snd_soc_clock_info {
++ unsigned int rate;
++ unsigned int fs;
++ unsigned int bclk_master;
++};
++
++#endif
+Index: linux-2.6-pxa-new/sound/Kconfig
+===================================================================
+--- linux-2.6-pxa-new.orig/sound/Kconfig
++++ linux-2.6-pxa-new/sound/Kconfig
+@@ -76,6 +76,8 @@ source "sound/sparc/Kconfig"
+
+ source "sound/parisc/Kconfig"
+
++source "sound/soc/Kconfig"
++
+ endmenu
+
+ menu "Open Sound System"
+Index: linux-2.6-pxa-new/sound/soc/Kconfig
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/Kconfig
+@@ -0,0 +1,37 @@
++#
++# SoC audio configuration
++#
++
++menu "SoC audio support"
++ depends on SND!=n
++
++config SND_SOC_AC97_BUS
++ bool
++
++config SND_SOC
++ tristate "SoC audio support"
++ ---help---
++
++ If you want SoC support, you should say Y here and also to the
++ specific driver for your SoC below. You will also need to select the
++ specific codec(s) attached to the SoC
++
++ This SoC audio support can also be built as a module. If so, the module
++ will be called snd-soc-core.
++
++# All the supported Soc's
++menu "Soc Platforms"
++depends on SND_SOC
++source "sound/soc/pxa/Kconfig"
++source "sound/soc/at91/Kconfig"
++source "sound/soc/imx/Kconfig"
++source "sound/soc/s3c24xx/Kconfig"
++endmenu
++
++# Supported codecs
++menu "Soc Codecs"
++depends on SND_SOC
++source "sound/soc/codecs/Kconfig"
++endmenu
++
++endmenu
+Index: linux-2.6-pxa-new/sound/soc/Makefile
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/Makefile
+@@ -0,0 +1,4 @@
++snd-soc-core-objs := soc-core.o soc-dapm.o
++
++obj-$(CONFIG_SND_SOC) += snd-soc-core.o
++obj-$(CONFIG_SND_SOC) += pxa/ at91/ imx/ s3c24xx/ codecs/
+Index: linux-2.6-pxa-new/sound/soc/codecs/Kconfig
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/Kconfig
+@@ -0,0 +1,90 @@
++config SND_SOC_AC97_CODEC
++ tristate "SoC generic AC97 support"
++ depends SND_SOC
++ help
++ Say Y or M if you want generic AC97 support. This is not required
++ for the AC97 codecs listed below.
++
++config SND_SOC_WM8711
++ tristate "SoC driver for the WM8711 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the WM8711 codec.
++
++config SND_SOC_WM8510
++ tristate "SoC driver for the WM8510 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the WM8711 codec.
++
++config SND_SOC_WM8731
++ tristate "SoC driver for the WM8731 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the WM8731 codec.
++
++config SND_SOC_WM8750
++ tristate "SoC driver for the WM8750 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the WM8750 codec.
++
++config SND_SOC_WM8753
++ tristate "SoC driver for the WM8753 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the WM8753 codec.
++
++config SND_SOC_WM8772
++ tristate "SoC driver for the WM8772 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the WM8772 codec.
++
++config SND_SOC_WM8971
++ tristate "SoC driver for the WM8971 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the WM8971 codec.
++
++config SND_SOC_WM8976
++ tristate "SoC driver for the WM8976 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the WM8976 codec.
++
++config SND_SOC_WM8974
++ tristate "SoC driver for the WM8974 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the WM8974 codec.
++
++config SND_SOC_WM8980
++ tristate "SoC driver for the WM8980 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the WM8980 codec.
++
++config SND_SOC_WM9713
++ tristate "SoC driver for the WM9713 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the WM9713 codec.
++
++config SND_SOC_WM9712
++ tristate "SoC driver for the WM9712 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the WM9712 codec.
++
++config SND_SOC_UDA1380
++ tristate "SoC driver for the UDA1380 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the UDA1380 codec.
++
++config SND_SOC_AK4535
++ tristate "SoC driver for the AK4535 codec"
++ depends SND_SOC
++ help
++ Say Y or M if you want to support the AK4535 codec.
+Index: linux-2.6-pxa-new/sound/soc/codecs/Makefile
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/Makefile
+@@ -0,0 +1,31 @@
++snd-soc-ac97-objs := ac97.o
++snd-soc-wm8711-objs := wm8711.o
++snd-soc-wm8510-objs := wm8510.o
++snd-soc-wm8731-objs := wm8731.o
++snd-soc-wm8750-objs := wm8750.o
++snd-soc-wm8753-objs := wm8753.o
++snd-soc-wm8772-objs := wm8772.o
++snd-soc-wm8971-objs := wm8971.o
++snd-soc-wm8974-objs := wm8974.o
++snd-soc-wm8976-objs := wm8976.o
++snd-soc-wm8980-objs := wm8980.o
++snd-soc-uda1380-objs := uda1380.o
++snd-soc-ak4535-objs := ak4535.o
++snd-soc-wm9713-objs := wm9713.o
++snd-soc-wm9712-objs := wm9712.o
++
++obj-$(CONFIG_SND_SOC_AC97_CODEC) += snd-soc-ac97.o
++obj-$(CONFIG_SND_SOC_WM8711) += snd-soc-wm8711.o
++obj-$(CONFIG_SND_SOC_WM8510) += snd-soc-wm8510.o
++obj-$(CONFIG_SND_SOC_WM8731) += snd-soc-wm8731.o
++obj-$(CONFIG_SND_SOC_WM8750) += snd-soc-wm8750.o
++obj-$(CONFIG_SND_SOC_WM8753) += snd-soc-wm8753.o
++obj-$(CONFIG_SND_SOC_WM8772) += snd-soc-wm8772.o
++obj-$(CONFIG_SND_SOC_WM8971) += snd-soc-wm8971.o
++obj-$(CONFIG_SND_SOC_WM8974) += snd-soc-wm8974.o
++obj-$(CONFIG_SND_SOC_WM8976) += snd-soc-wm8976.o
++obj-$(CONFIG_SND_SOC_WM8980) += snd-soc-wm8980.o
++obj-$(CONFIG_SND_SOC_UDA1380) += snd-soc-uda1380.o
++obj-$(CONFIG_SND_SOC_AK4535) += snd-soc-ak4535.o
++obj-$(CONFIG_SND_SOC_WM9713) += snd-soc-wm9713.o
++obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o
+Index: linux-2.6-pxa-new/sound/soc/codecs/ac97.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/ac97.c
+@@ -0,0 +1,167 @@
++/*
++ * ac97.c -- ALSA Soc AC97 codec support
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or 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
++ * 17th Oct 2005 Initial version.
++ *
++ * Generic AC97 support.
++ */
++
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/ac97_codec.h>
++#include <sound/initval.h>
++#include <sound/soc.h>
++
++#define AC97_VERSION "0.5"
++
++#define AC97_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define AC97_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 | \
++ SNDRV_PCM_RATE_48000)
++
++/* may need to expand this */
++static struct snd_soc_dai_mode soc_ac97[] = {
++ {0, 0, SNDRV_PCM_FMTBIT_S16_LE, AC97_RATES},
++ {0, 0, SNDRV_PCM_FMTBIT_S18_3LE, AC97_RATES},
++ {0, 0, SNDRV_PCM_FMTBIT_S20_3LE, AC97_RATES},
++};
++
++static int ac97_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++
++ int reg = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
++ AC97_PCM_FRONT_DAC_RATE : AC97_PCM_LR_ADC_RATE;
++ return snd_ac97_set_rate(codec->ac97, reg, runtime->rate);
++}
++
++static struct snd_soc_codec_dai ac97_dai = {
++ .name = "AC97 HiFi",
++ .playback = {
++ .stream_name = "AC97 Playback",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .stream_name = "AC97 Capture",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .ops = {
++ .prepare = ac97_prepare,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(soc_ac97),
++ .mode = soc_ac97,},
++};
++
++static unsigned int ac97_read(struct snd_soc_codec *codec,
++ unsigned int reg)
++{
++ return soc_ac97_ops.read(codec->ac97, reg);
++}
++
++static int ac97_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int val)
++{
++ soc_ac97_ops.write(codec->ac97, reg, val);
++ return 0;
++}
++
++static int ac97_soc_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec;
++ struct snd_ac97_bus *ac97_bus;
++ struct snd_ac97_template ac97_template;
++ int ret = 0;
++
++ printk(KERN_INFO "AC97 SoC Audio Codec %s\n", AC97_VERSION);
++
++ socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (socdev->codec == NULL)
++ return -ENOMEM;
++ codec = socdev->codec;
++ mutex_init(&codec->mutex);
++
++ codec->name = "AC97";
++ codec->owner = THIS_MODULE;
++ codec->dai = &ac97_dai;
++ codec->num_dai = 1;
++ codec->write = ac97_write;
++ codec->read = ac97_read;
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if(ret < 0)
++ goto err;
++
++ /* add codec as bus device for standard ac97 */
++ ret = snd_ac97_bus(codec->card, 0, &soc_ac97_ops, NULL, &ac97_bus);
++ if(ret < 0)
++ goto bus_err;
++
++ memset(&ac97_template, 0, sizeof(struct snd_ac97_template));
++ ret = snd_ac97_mixer(ac97_bus, &ac97_template, &codec->ac97);
++ if(ret < 0)
++ goto bus_err;
++
++ ret = snd_soc_register_card(socdev);
++ if (ret < 0)
++ goto bus_err;
++ return 0;
++
++bus_err:
++ snd_soc_free_pcms(socdev);
++
++err:
++ kfree(socdev->codec->reg_cache);
++ kfree(socdev->codec);
++ socdev->codec = NULL;
++ return ret;
++}
++
++static int ac97_soc_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if(codec == NULL)
++ return 0;
++
++ snd_soc_free_pcms(socdev);
++ kfree(socdev->codec->reg_cache);
++ kfree(socdev->codec);
++
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_ac97= {
++ .probe = ac97_soc_probe,
++ .remove = ac97_soc_remove,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_ac97);
++
++MODULE_DESCRIPTION("Soc Generic AC97 driver");
++MODULE_AUTHOR("Liam Girdwood");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/ac97.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/ac97.h
+@@ -0,0 +1,18 @@
++/*
++ * linux/sound/codecs/ac97.h -- ALSA SoC Layer
++ *
++ * Author: Liam Girdwood
++ * Created: Dec 1st 2005
++ * Copyright: Wolfson Microelectronics. PLC.
++ *
++ * 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.
++ */
++
++#ifndef __LINUX_SND_SOC_AC97_H
++#define __LINUX_SND_SOC_AC97_H
++
++extern struct snd_soc_codec_device soc_codec_dev_ac97;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/codecs/ak4535.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/ak4535.c
+@@ -0,0 +1,701 @@
++/*
++ * ak4535.c -- AK4535 ALSA Soc Audio driver
++ *
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Author: Richard Purdie <richard@openedhand.com>
++ *
++ * Based on wm8753.c by Liam Girdwood
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/i2c.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++
++#include "ak4535.h"
++
++#define AUDIO_NAME "ak4535"
++#define AK4535_VERSION "0.3"
++
++struct snd_soc_codec_device soc_codec_dev_ak4535;
++
++/*
++ * ak4535 register cache
++ */
++static const u16 ak4535_reg[AK4535_CACHEREGNUM] = {
++ 0x0000, 0x0080, 0x0000, 0x0003,
++ 0x0002, 0x0000, 0x0011, 0x0001,
++ 0x0000, 0x0040, 0x0036, 0x0010,
++ 0x0000, 0x0000, 0x0057, 0x0000,
++};
++
++#define AK4535_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_CBS_CFS | \
++ SND_SOC_DAIFMT_NB_NF)
++
++#define AK4535_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define AK4535_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 | \
++ SNDRV_PCM_RATE_48000)
++
++static struct snd_soc_dai_mode ak4535_modes[] = {
++ /* codec frame and clock slave modes */
++ {
++ .fmt = AK4535_DAIFMT,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = AK4535_RATES,
++ .pcmdir = AK4535_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 64,
++ },
++ {
++ .fmt = AK4535_DAIFMT,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = AK4535_RATES,
++ .pcmdir = AK4535_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 32,
++ },
++};
++
++/*
++ * read ak4535 register cache
++ */
++static inline unsigned int ak4535_read_reg_cache(struct snd_soc_codec *codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg >= AK4535_CACHEREGNUM)
++ return -1;
++ return cache[reg];
++}
++
++/*
++ * write ak4535 register cache
++ */
++static inline void ak4535_write_reg_cache(struct snd_soc_codec *codec,
++ u16 reg, unsigned int value)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg >= AK4535_CACHEREGNUM)
++ return;
++ cache[reg] = value;
++}
++
++/*
++ * write to the AK4535 register space
++ */
++static int ak4535_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int value)
++{
++ u8 data[2];
++
++ /* data is
++ * D15..D8 AK4535 register offset
++ * D7...D0 register data
++ */
++ data[0] = reg & 0xff;
++ data[1] = value & 0xff;
++
++ ak4535_write_reg_cache (codec, reg, value);
++ if (codec->hw_write(codec->control_data, data, 2) == 2)
++ return 0;
++ else
++ return -EIO;
++}
++
++static const char *ak4535_mono_gain[] = {"+6dB", "-17dB"};
++static const char *ak4535_mono_out[] = {"(L + R)/2", "Hi-Z"};
++static const char *ak4535_hp_out[] = {"Stereo", "Mono"};
++static const char *ak4535_deemp[] = {"44.1kHz", "Off", "48kHz", "32kHz"};
++static const char *ak4535_mic_select[] = {"Internal", "External"};
++
++static const struct soc_enum ak4535_enum[] = {
++ SOC_ENUM_SINGLE(AK4535_SIG1, 7, 2, ak4535_mono_gain),
++ SOC_ENUM_SINGLE(AK4535_SIG1, 6, 2, ak4535_mono_out),
++ SOC_ENUM_SINGLE(AK4535_MODE2, 2, 2, ak4535_hp_out),
++ SOC_ENUM_SINGLE(AK4535_DAC, 0, 4, ak4535_deemp),
++ SOC_ENUM_SINGLE(AK4535_MIC, 1, 2, ak4535_mic_select),
++};
++
++static const struct snd_kcontrol_new ak4535_snd_controls[] = {
++ SOC_SINGLE("ALC2 Switch", AK4535_SIG1, 1, 1, 0),
++ SOC_ENUM("Mono 1 Output", ak4535_enum[1]),
++ SOC_ENUM("Mono 1 Gain", ak4535_enum[0]),
++ SOC_ENUM("Headphone Output", ak4535_enum[2]),
++ SOC_ENUM("Playback Deemphasis", ak4535_enum[3]),
++ SOC_SINGLE("Bass Volume", AK4535_DAC, 2, 3, 0),
++ SOC_SINGLE("Mic Boost (+20dB) Switch", AK4535_MIC, 0, 1, 0),
++ SOC_ENUM("Mic Select", ak4535_enum[4]),
++ SOC_SINGLE("ALC Operation Time", AK4535_TIMER, 0, 3, 0),
++ SOC_SINGLE("ALC Recovery Time", AK4535_TIMER, 2, 3, 0),
++ SOC_SINGLE("ALC ZC Time", AK4535_TIMER, 4, 3, 0),
++ SOC_SINGLE("ALC 1 Switch", AK4535_ALC1, 5, 1, 0),
++ SOC_SINGLE("ALC 2 Switch", AK4535_ALC1, 6, 1, 0),
++ SOC_SINGLE("ALC Volume", AK4535_ALC2, 0, 127, 0),
++ SOC_SINGLE("Capture Volume", AK4535_PGA, 0, 127, 0),
++ SOC_SINGLE("Left Playback Volume", AK4535_LATT, 0, 127, 1),
++ SOC_SINGLE("Right Playback Volume", AK4535_RATT, 0, 127, 1),
++ SOC_SINGLE("AUX Bypass Volume", AK4535_VOL, 0, 15, 0),
++ SOC_SINGLE("Mic Sidetone Volume", AK4535_VOL, 4, 7, 0),
++};
++
++/* add non dapm controls */
++static int ak4535_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(ak4535_snd_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&ak4535_snd_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++
++ return 0;
++}
++
++/* Mono 1 Mixer */
++static const struct snd_kcontrol_new ak4535_mono1_mixer_controls[] = {
++ SOC_DAPM_SINGLE("Mic Sidetone Switch", AK4535_SIG1, 4, 1, 0),
++ SOC_DAPM_SINGLE("Mono Playback Switch", AK4535_SIG1, 5, 1, 0),
++};
++
++/* Stereo Mixer */
++static const struct snd_kcontrol_new ak4535_stereo_mixer_controls[] = {
++ SOC_DAPM_SINGLE("Mic Sidetone Switch", AK4535_SIG2, 4, 1, 0),
++ SOC_DAPM_SINGLE("Playback Switch", AK4535_SIG2, 7, 1, 0),
++ SOC_DAPM_SINGLE("Aux Bypass Switch", AK4535_SIG2, 5, 1, 0),
++};
++
++/* Input Mixer */
++static const struct snd_kcontrol_new ak4535_input_mixer_controls[] = {
++ SOC_DAPM_SINGLE("Mic Capture Switch", AK4535_MIC, 2, 1, 0),
++ SOC_DAPM_SINGLE("Aux Capture Switch", AK4535_MIC, 5, 1, 0),
++};
++
++/* Input mux */
++static const struct snd_kcontrol_new ak4535_input_mux_control =
++ SOC_DAPM_ENUM("Input Select", ak4535_enum[0]);
++
++/* HP L switch */
++static const struct snd_kcontrol_new ak4535_hpl_control =
++ SOC_DAPM_SINGLE("Switch", AK4535_SIG2, 1, 1, 1);
++
++/* HP R switch */
++static const struct snd_kcontrol_new ak4535_hpr_control =
++ SOC_DAPM_SINGLE("Switch", AK4535_SIG2, 0, 1, 1);
++
++/* Speaker switch */
++static const struct snd_kcontrol_new ak4535_spk_control =
++ SOC_DAPM_SINGLE("Switch", AK4535_MODE2, 0, 0, 0);
++
++/* mono 2 switch */
++static const struct snd_kcontrol_new ak4535_mono2_control =
++ SOC_DAPM_SINGLE("Switch", AK4535_SIG1, 0, 1, 0);
++
++/* Line out switch */
++static const struct snd_kcontrol_new ak4535_line_control =
++ SOC_DAPM_SINGLE("Switch", AK4535_SIG2, 6, 1, 0);
++
++/* ak4535 dapm widgets */
++static const struct snd_soc_dapm_widget ak4535_dapm_widgets[] = {
++ SND_SOC_DAPM_MIXER("Stereo Mixer", SND_SOC_NOPM, 0, 0,
++ &ak4535_stereo_mixer_controls[0],
++ ARRAY_SIZE(ak4535_stereo_mixer_controls)),
++ SND_SOC_DAPM_MIXER("Mono1 Mixer", SND_SOC_NOPM, 0, 0,
++ &ak4535_mono1_mixer_controls[0],
++ ARRAY_SIZE(ak4535_mono1_mixer_controls)),
++ SND_SOC_DAPM_MIXER("Input Mixer", SND_SOC_NOPM, 0, 0,
++ &ak4535_input_mixer_controls[0],
++ ARRAY_SIZE(ak4535_mono1_mixer_controls)),
++ SND_SOC_DAPM_MUX("Input Mux", SND_SOC_NOPM, 0, 0,
++ &ak4535_input_mux_control),
++ SND_SOC_DAPM_DAC("DAC", "Playback", AK4535_PM2, 0, 0),
++ SND_SOC_DAPM_SWITCH("Mono 2 Enable", SND_SOC_NOPM, 0, 0,
++ &ak4535_mono2_control),
++ SND_SOC_DAPM_SWITCH("Speaker Enable", SND_SOC_NOPM, 0, 0,
++ &ak4535_spk_control),
++ SND_SOC_DAPM_SWITCH("Line Out Enable", SND_SOC_NOPM, 0, 0,
++ &ak4535_line_control),
++ SND_SOC_DAPM_SWITCH("Left HP Enable", SND_SOC_NOPM, 0, 0,
++ &ak4535_hpl_control),
++ SND_SOC_DAPM_SWITCH("Right HP Enable", SND_SOC_NOPM, 0, 0,
++ &ak4535_hpr_control),
++ SND_SOC_DAPM_OUTPUT("LOUT"),
++ SND_SOC_DAPM_OUTPUT("HPL"),
++ SND_SOC_DAPM_OUTPUT("ROUT"),
++ SND_SOC_DAPM_OUTPUT("HPR"),
++ SND_SOC_DAPM_OUTPUT("SPP"),
++ SND_SOC_DAPM_OUTPUT("SPN"),
++ SND_SOC_DAPM_OUTPUT("MOUT1"),
++ SND_SOC_DAPM_OUTPUT("MOUT2"),
++ SND_SOC_DAPM_OUTPUT("MICOUT"),
++ SND_SOC_DAPM_ADC("ADC", "Capture", AK4535_PM1, 0, 1),
++ SND_SOC_DAPM_PGA("Spk Amp", AK4535_PM2, 3, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("HP R Amp", AK4535_PM2, 1, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("HP L Amp", AK4535_PM2, 2, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("Mic", AK4535_PM1, 1, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("Line Out", AK4535_PM1, 4, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("Mono Out", AK4535_PM1, 3, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("AUX In", AK4535_PM1, 2, 0, NULL, 0),
++
++ SND_SOC_DAPM_MICBIAS("Mic Int Bias", AK4535_MIC, 3, 0),
++ SND_SOC_DAPM_MICBIAS("Mic Ext Bias", AK4535_MIC, 4, 0),
++ SND_SOC_DAPM_INPUT("MICIN"),
++ SND_SOC_DAPM_INPUT("MICEXT"),
++ SND_SOC_DAPM_INPUT("AUX"),
++ SND_SOC_DAPM_INPUT("MIN"),
++ SND_SOC_DAPM_INPUT("AIN"),
++};
++
++static const char *audio_map[][3] = {
++ /*stereo mixer */
++ {"Stereo Mixer", "Playback Switch", "DAC"},
++ {"Stereo Mixer", "Mic Sidetone Switch", "Mic"},
++ {"Stereo Mixer", "Aux Bypass Switch", "AUX In"},
++
++ /* mono1 mixer */
++ {"Mono1 Mixer", "Mic Sidetone Switch", "Mic"},
++ {"Mono1 Mixer", "Mono Playback Switch", "DAC"},
++
++ /* mono2 mixer */
++ {"Mono2 Mixer", "Mono Playback Switch", "Stereo Mixer"},
++
++ /* Mic */
++ {"AIN", NULL, "Mic"},
++ {"Input Mux", "Internal", "Mic Int Bias"},
++ {"Input Mux", "External", "Mic Ext Bias"},
++ {"Mic Int Bias", NULL, "MICIN"},
++ {"Mic Ext Bias", NULL, "MICEXT"},
++ {"MICOUT", NULL, "Input Mux"},
++
++ /* line out */
++ {"LOUT", "Switch", "Line"},
++ {"ROUT", "Switch", "Line Out Enable"},
++ {"Line Out Enable", NULL, "Line Out"},
++ {"Line Out", NULL, "Stereo Mixer"},
++
++ /* mono1 out */
++ {"MOUT1", NULL, "Mono Out"},
++ {"Mono Out", NULL, "Mono Mixer"},
++
++ /* left HP */
++ {"HPL", "Switch", "Left HP Enable"},
++ {"Left HP Enable", NULL, "HP L Amp"},
++ {"HP L Amp", NULL, "Stereo Mixer"},
++
++ /* right HP */
++ {"HPR", "Switch", "Right HP Enable"},
++ {"Right HP Enable", NULL, "HP R Amp"},
++ {"HP R Amp", NULL, "Stereo Mixer"},
++
++ /* speaker */
++ {"SPP", "Switch", "Speaker Enable"},
++ {"SPN", "Switch", "Speaker Enable"},
++ {"Speaker Enable", NULL, "Spk Amp"},
++ {"Spk Amp", NULL, "MIN"},
++
++ /* mono 2 */
++ {"MOUT2", "Switch", "Mono 2 Enable"},
++ {"Mono 2 Enable", NULL, "Stereo Mixer"},
++
++ /* Aux In */
++ {"Aux In", NULL, "AUX"},
++
++ /* ADC */
++ {"ADC", NULL, "Input Mixer"},
++ {"Input Mixer", "Mic Capture Switch", "Mic"},
++ {"Input Mixer", "Aux Capture Switch", "Aux In"},
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int ak4535_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(ak4535_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &ak4535_dapm_widgets[i]);
++ }
++
++ /* set up 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]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++static int ak4535_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u8 mode = 0, mode2;
++ int bfs;
++
++ mode2 = ak4535_read_reg_cache(codec, AK4535_MODE2);
++ bfs = SND_SOC_FSBW_REAL(rtd->codec_dai->dai_runtime.bfs);
++ snd_assert(bfs, return -ENODEV);
++
++ /* interface format */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ mode = 0x0002;
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ mode = 0x0001;
++ break;
++ }
++
++ /* set fs */
++ switch (rtd->codec_dai->dai_runtime.fs) {
++ case 1024:
++ mode2 |= (0x3 << 5);
++ break;
++ case 512:
++ mode2 |= (0x2 << 5);
++ break;
++ case 256:
++ mode2 |= (0x1 << 5);
++ break;
++ }
++
++ /* bfs */
++ if (bfs == 64)
++ mode |= 0x4;
++
++ /* set rate */
++ ak4535_write(codec, AK4535_MODE1, mode);
++ ak4535_write(codec, AK4535_MODE2, mode2);
++
++ return 0;
++}
++
++static unsigned int ak4535_config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ if (info->fs != 256)
++ return 0;
++
++ /* we only support 256 FS atm */
++ if (info->rate * info->fs == clk) {
++ dai->mclk = clk;
++ return clk;
++ }
++
++ return 0;
++}
++
++static int ak4535_mute(struct snd_soc_codec *codec,
++ struct snd_soc_codec_dai *dai, int mute)
++{
++ u16 mute_reg = ak4535_read_reg_cache(codec, AK4535_DAC) & 0xffdf;
++ if (mute)
++ ak4535_write(codec, AK4535_DAC, mute_reg);
++ else
++ ak4535_write(codec, AK4535_DAC, mute_reg | 0x20);
++ return 0;
++}
++
++static int ak4535_dapm_event(struct snd_soc_codec *codec, int event)
++{
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ /* vref/mid, clk and osc on, dac unmute, active */
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ break;
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* everything off except vref/vmid, dac mute, inactive */
++ ak4535_write(codec, AK4535_PM1, 0x80);
++ ak4535_write(codec, AK4535_PM2, 0x0);
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ /* everything off, inactive */
++ ak4535_write(codec, AK4535_PM1, 0x0);
++ ak4535_write(codec, AK4535_PM2, 0x80);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++struct snd_soc_codec_dai ak4535_dai = {
++ .name = "AK4535",
++ .playback = {
++ .stream_name = "Playback",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .capture = {
++ .stream_name = "Capture",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .config_sysclk = ak4535_config_sysclk,
++ .digital_mute = ak4535_mute,
++ .ops = {
++ .prepare = ak4535_pcm_prepare,
++ },
++ .caps = {
++ .num_modes = ARRAY_SIZE(ak4535_modes),
++ .mode = ak4535_modes,
++ },
++};
++EXPORT_SYMBOL_GPL(ak4535_dai);
++
++static int ak4535_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ ak4535_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int ak4535_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++ u8 data[2];
++ u16 *cache = codec->reg_cache;
++
++ /* Sync reg_cache with the hardware */
++ for (i = 0; i < ARRAY_SIZE(ak4535_reg); i++) {
++ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
++ data[1] = cache[i] & 0x00ff;
++ codec->hw_write(codec->control_data, data, 2);
++ }
++ ak4535_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ ak4535_dapm_event(codec, codec->suspend_dapm_state);
++ return 0;
++}
++
++/*
++ * initialise the AK4535 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int ak4535_init(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int ret = 0;
++
++ codec->name = "AK4535";
++ codec->owner = THIS_MODULE;
++ codec->read = ak4535_read_reg_cache;
++ codec->write = ak4535_write;
++ codec->dapm_event = ak4535_dapm_event;
++ codec->dai = &ak4535_dai;
++ codec->num_dai = 1;
++ codec->reg_cache_size = ARRAY_SIZE(ak4535_reg);
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(ak4535_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL)
++ return -ENOMEM;
++ memcpy(codec->reg_cache, ak4535_reg,
++ sizeof(u16) * ARRAY_SIZE(ak4535_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(ak4535_reg);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if (ret < 0) {
++ kfree(codec->reg_cache);
++ return ret;
++ }
++
++ /* power on device */
++ ak4535_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++
++ ak4535_add_controls(codec);
++ ak4535_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if (ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++static struct snd_soc_device *ak4535_socdev;
++
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++
++#define I2C_DRIVERID_AK4535 0xfefe /* liam - need a proper id */
++
++static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
++
++/* Magic definition of all other variables and things */
++I2C_CLIENT_INSMOD;
++
++static struct i2c_driver ak4535_i2c_driver;
++static struct i2c_client client_template;
++
++/* If the i2c layer weren't so broken, we could pass this kind of data
++ around */
++static int ak4535_codec_probe(struct i2c_adapter *adap, int addr, int kind)
++{
++ struct snd_soc_device *socdev = ak4535_socdev;
++ struct ak4535_setup_data *setup = socdev->codec_data;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct i2c_client *i2c;
++ int ret;
++
++ if (addr != setup->i2c_address)
++ return -ENODEV;
++
++ client_template.adapter = adap;
++ client_template.addr = addr;
++
++ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
++ if (i2c == NULL){
++ kfree(codec);
++ return -ENOMEM;
++ }
++ memcpy(i2c, &client_template, sizeof(struct i2c_client));
++ i2c_set_clientdata(i2c, codec);
++ codec->control_data = i2c;
++
++ ret = i2c_attach_client(i2c);
++ if (ret < 0) {
++ printk(KERN_ERR "failed to attach codec at addr %x\n", addr);
++ goto err;
++ }
++
++ ret = ak4535_init(socdev);
++ if (ret < 0) {
++ printk(KERN_ERR "failed to initialise AK4535\n");
++ goto err;
++ }
++ return ret;
++
++err:
++ kfree(codec);
++ kfree(i2c);
++ return ret;
++}
++
++static int ak4535_i2c_detach(struct i2c_client *client)
++{
++ struct snd_soc_codec* codec = i2c_get_clientdata(client);
++ i2c_detach_client(client);
++ kfree(codec->reg_cache);
++ kfree(client);
++
++ return 0;
++}
++
++static int ak4535_i2c_attach(struct i2c_adapter *adap)
++{
++ return i2c_probe(adap, &addr_data, ak4535_codec_probe);
++}
++
++/* corgi i2c codec control layer */
++static struct i2c_driver ak4535_i2c_driver = {
++ .driver = {
++ .name = "AK4535 I2C Codec",
++ .owner = THIS_MODULE,
++ },
++ .id = I2C_DRIVERID_AK4535,
++ .attach_adapter = ak4535_i2c_attach,
++ .detach_client = ak4535_i2c_detach,
++ .command = NULL,
++};
++
++static struct i2c_client client_template = {
++ .name = "AK4535",
++ .driver = &ak4535_i2c_driver,
++};
++#endif
++
++static int ak4535_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct ak4535_setup_data *setup;
++ struct snd_soc_codec* codec;
++ int ret = 0;
++
++ printk(KERN_INFO "AK4535 Audio Codec %s", AK4535_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ ak4535_socdev = socdev;
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ if (setup->i2c_address) {
++ normal_i2c[0] = setup->i2c_address;
++ codec->hw_write = (hw_write_t)i2c_master_send;
++ ret = i2c_add_driver(&ak4535_i2c_driver);
++ if (ret != 0)
++ printk(KERN_ERR "can't add i2c driver");
++ }
++#else
++ /* Add other interfaces here */
++#endif
++ return ret;
++}
++
++/* power down chip */
++static int ak4535_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec* codec = socdev->codec;
++
++ if (codec->control_data)
++ ak4535_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ i2c_del_driver(&ak4535_i2c_driver);
++#endif
++ kfree(codec);
++
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_ak4535 = {
++ .probe = ak4535_probe,
++ .remove = ak4535_remove,
++ .suspend = ak4535_suspend,
++ .resume = ak4535_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_ak4535);
++
++MODULE_DESCRIPTION("Soc AK4535 driver");
++MODULE_AUTHOR("Richard Purdie");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/ak4535.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/ak4535.h
+@@ -0,0 +1,46 @@
++/*
++ * ak4535.h -- AK4535 Soc Audio driver
++ *
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Author: Richard Purdie <richard@openedhand.com>
++ *
++ * Based on wm8753.h
++ *
++ * 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.
++ */
++
++#ifndef _AK4535_H
++#define _AK4535_H
++
++/* AK4535 register space */
++
++#define AK4535_PM1 0x0
++#define AK4535_PM2 0x1
++#define AK4535_SIG1 0x2
++#define AK4535_SIG2 0x3
++#define AK4535_MODE1 0x4
++#define AK4535_MODE2 0x5
++#define AK4535_DAC 0x6
++#define AK4535_MIC 0x7
++#define AK4535_TIMER 0x8
++#define AK4535_ALC1 0x9
++#define AK4535_ALC2 0xa
++#define AK4535_PGA 0xb
++#define AK4535_LATT 0xc
++#define AK4535_RATT 0xd
++#define AK4535_VOL 0xe
++#define AK4535_STATUS 0xf
++
++#define AK4535_CACHEREGNUM 0x10
++
++struct ak4535_setup_data {
++ unsigned short i2c_address;
++};
++
++extern struct snd_soc_codec_dai ak4535_dai;
++extern struct snd_soc_codec_device soc_codec_dev_ak4535;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/codecs/uda1380.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/uda1380.c
+@@ -0,0 +1,582 @@
++/*
++ * uda1380.c - Philips UDA1380 ALSA SoC audio driver
++ *
++ * 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.
++ *
++ * Modified by Richard Purdie <richard@openedhand.com> to fit into SoC
++ * codec model.
++ *
++ * Copyright (c) 2005 Giorgio Padrin <giorgio@mandarinlogiq.org>
++ * Copyright 2005 Openedhand Ltd.
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/types.h>
++#include <linux/string.h>
++#include <linux/slab.h>
++#include <linux/errno.h>
++#include <linux/ioctl.h>
++#include <linux/delay.h>
++#include <linux/i2c.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/control.h>
++#include <sound/initval.h>
++#include <sound/info.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++
++#include "uda1380.h"
++
++#define UDA1380_VERSION "0.4"
++
++/*
++ * uda1380 register cache
++ */
++static const u16 uda1380_reg[UDA1380_CACHEREGNUM] = {
++ 0x0502, 0x0000, 0x0000, 0x3f3f,
++ 0x0202, 0x0000, 0x0000, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0000, 0xff00, 0x0000, 0x4800,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0000, 0x8000, 0x0002, 0x0000,
++};
++
++#define UDA1380_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_CBS_CFS | \
++ SND_SOC_DAIFMT_NB_NF)
++
++#define UDA1380_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define UDA1380_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 | \
++ SNDRV_PCM_RATE_48000)
++
++static struct snd_soc_dai_mode uda1380_modes[] = {
++ /* slave rates capture & playback */
++ {
++ .fmt = UDA1380_DAIFMT,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = UDA1380_RATES,
++ .pcmdir = UDA1380_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 64,
++ },
++
++ /* slave rates playback */
++ {
++ .fmt = UDA1380_DAIFMT,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 64,
++ },
++};
++
++/*
++ * read uda1380 register cache
++ */
++static inline unsigned int uda1380_read_reg_cache(struct snd_soc_codec *codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg == UDA1380_RESET)
++ return 0;
++ if (reg >= UDA1380_CACHEREGNUM)
++ return -1;
++ return cache[reg];
++}
++
++/*
++ * write uda1380 register cache
++ */
++static inline void uda1380_write_reg_cache(struct snd_soc_codec *codec,
++ u16 reg, unsigned int value)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg >= UDA1380_CACHEREGNUM)
++ return;
++ cache[reg] = value;
++}
++
++/*
++ * write to the UDA1380 register space
++ */
++static int uda1380_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int value)
++{
++ u8 data[3];
++
++ /* data is
++ * data[0] is register offset
++ * data[1] is MS byte
++ * data[2] is LS byte
++ */
++ data[0] = reg;
++ data[1] = (value & 0xff00) >> 8;
++ data[2] = value & 0x00ff;
++
++ uda1380_write_reg_cache (codec, reg, value);
++ if (codec->hw_write(codec->control_data, data, 3) == 3)
++ return 0;
++ else
++ return -EIO;
++}
++
++#define uda1380_reset(c) uda1380_write(c, UDA1380_RESET, 0)
++
++/* declarations of ALSA reg_elem_REAL controls */
++static const char *uda1380_deemp[] = {"None", "32kHz", "44.1kHz", "48kHz",
++ "96kHz"};
++static const char *uda1380_input_sel[] = {"Line", "Mic"};
++
++static const struct soc_enum uda1380_enum[] = {
++ SOC_ENUM_DOUBLE(UDA1380_DEEMP, 0, 8, 5, uda1380_deemp),
++ SOC_ENUM_SINGLE(UDA1380_ADC, 3, 2, uda1380_input_sel),
++};
++
++static const struct snd_kcontrol_new uda1380_snd_controls[] = {
++ SOC_DOUBLE("Playback Volume", UDA1380_MVOL, 0, 8, 127, 0),
++ SOC_DOUBLE("Treble Volume", UDA1380_MODE, 4, 12, 3, 0),
++ SOC_DOUBLE("Bass Volume", UDA1380_MODE, 0, 8, 15, 0),
++ SOC_ENUM("Playback De-emphasis", uda1380_enum[0]),
++ SOC_DOUBLE("Capture Volume", UDA1380_DEC, 0, 8, 127, 0),
++ SOC_DOUBLE("Line Capture Volume", UDA1380_PGA, 0, 8, 15, 0),
++ SOC_SINGLE("Mic Capture Volume", UDA1380_PGA, 8, 11, 0),
++ SOC_DOUBLE("Playback Switch", UDA1380_DEEMP, 3, 11, 1, 0),
++ SOC_SINGLE("Capture Switch", UDA1380_PGA, 15, 1, 0),
++ SOC_SINGLE("AGC Timing", UDA1380_AGC, 8, 7, 0),
++ SOC_SINGLE("AGC Target level", UDA1380_AGC, 2, 3, 1),
++ SOC_SINGLE("AGC Switch", UDA1380_AGC, 0, 1, 0),
++};
++
++/* add non dapm controls */
++static int uda1380_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(uda1380_snd_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&uda1380_snd_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++
++ return 0;
++}
++
++/* Input mux */
++static const struct snd_kcontrol_new uda1380_input_mux_control =
++ SOC_DAPM_ENUM("Input Select", uda1380_enum[1]);
++
++static const struct snd_soc_dapm_widget uda1380_dapm_widgets[] = {
++ SND_SOC_DAPM_MUX("Input Mux", SND_SOC_NOPM, 0, 0,
++ &uda1380_input_mux_control),
++ SND_SOC_DAPM_PGA("Left PGA", UDA1380_PM, 3, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("Right PGA", UDA1380_PM, 1, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("Mic LNA", UDA1380_PM, 4, 0, NULL, 0),
++ SND_SOC_DAPM_ADC("Left ADC", "Left Capture", UDA1380_PM, 2, 0),
++ SND_SOC_DAPM_ADC("Right ADC", "Right Capture", UDA1380_PM, 0, 0),
++ SND_SOC_DAPM_INPUT("VINM"),
++ SND_SOC_DAPM_INPUT("VINL"),
++ SND_SOC_DAPM_INPUT("VINR"),
++ SND_SOC_DAPM_MIXER("Analog Mixer", UDA1380_PM, 6, 0, NULL, 0),
++ SND_SOC_DAPM_OUTPUT("VOUTLHP"),
++ SND_SOC_DAPM_OUTPUT("VOUTRHP"),
++ SND_SOC_DAPM_OUTPUT("VOUTL"),
++ SND_SOC_DAPM_OUTPUT("VOUTR"),
++ SND_SOC_DAPM_DAC("DAC", "Playback", UDA1380_PM, 10, 0),
++ SND_SOC_DAPM_PGA("HeadPhone Driver", UDA1380_PM, 13, 0, NULL, 0),
++};
++
++static const char *audio_map[][3] = {
++
++ /* analog mixer setup is different from diagram for dapm */
++ {"HeadPhone Driver", NULL, "Analog Mixer"},
++ {"VOUTR", NULL, "Analog Mixer"},
++ {"VOUTL", NULL, "Analog Mixer"},
++ {"Analog Mixer", NULL, "VINR"},
++ {"Analog Mixer", NULL, "VINL"},
++ {"Analog Mixer", NULL, "DAC"},
++
++ /* headphone driver */
++ {"VOUTLHP", NULL, "HeadPhone Driver"},
++ {"VOUTRHP", NULL, "HeadPhone Driver"},
++
++ /* input mux */
++ {"Left ADC", NULL, "Input Mux"},
++ {"Input Mux", "Mic", "Mic LNA"},
++ {"Input Mux", "Line", "Left PGA"},
++
++ /* right input */
++ {"Right ADC", NULL, "Right PGA"},
++
++ /* inputs */
++ {"Mic LNA", NULL, "VINM"},
++ {"Left PGA", NULL, "VINL"},
++ {"Right PGA", NULL, "VINR"},
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int uda1380_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(uda1380_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &uda1380_dapm_widgets[i]);
++ }
++
++ /* set up 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]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++static int uda1380_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 clk = uda1380_read_reg_cache(codec, UDA1380_CLK);
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ uda1380_write(codec, UDA1380_CLK, R00_EN_DAC | R00_EN_INT | clk);
++ else
++ uda1380_write(codec, UDA1380_CLK, R00_EN_ADC | R00_EN_DEC | clk);
++
++ return 0;
++}
++
++static void uda1380_pcm_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 clk = uda1380_read_reg_cache(codec, UDA1380_CLK);
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ uda1380_write(codec, UDA1380_CLK, ~(R00_EN_DAC | R00_EN_INT) & clk);
++ else
++ uda1380_write(codec, UDA1380_CLK, ~(R00_EN_ADC | R00_EN_DEC) & clk);
++}
++
++static unsigned int uda1380_config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ if(info->fs != 256)
++ return 0;
++
++ /* we only support 256 FS atm */
++ if(info->rate * info->fs == clk) {
++ dai->mclk = clk;
++ return clk;
++ }
++
++ return 0;
++}
++
++static int uda1380_mute(struct snd_soc_codec *codec,
++ struct snd_soc_codec_dai *dai, int mute)
++{
++ u16 mute_reg = uda1380_read_reg_cache(codec, UDA1380_DEEMP) & 0xbfff;
++ if(mute)
++ uda1380_write(codec, UDA1380_DEEMP, mute_reg | 0x4000);
++ else
++ uda1380_write(codec, UDA1380_DEEMP, mute_reg);
++ return 0;
++}
++
++static int uda1380_dapm_event(struct snd_soc_codec *codec, int event)
++{
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* everything off except internal bias */
++ uda1380_write(codec, UDA1380_PM, R02_PON_BIAS);
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ /* everything off, inactive */
++ uda1380_write(codec, UDA1380_PM, 0x0);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++struct snd_soc_codec_dai uda1380_dai = {
++ .name = "UDA1380",
++ .playback = {
++ .stream_name = "Playback",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .capture = {
++ .stream_name = "Capture",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .config_sysclk = uda1380_config_sysclk,
++ .digital_mute = uda1380_mute,
++ .ops = {
++ .prepare = uda1380_pcm_prepare,
++ .shutdown = uda1380_pcm_shutdown,
++ },
++ .caps = {
++ .num_modes = ARRAY_SIZE(uda1380_modes),
++ .mode = uda1380_modes,
++ },
++};
++EXPORT_SYMBOL_GPL(uda1380_dai);
++
++static int uda1380_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ uda1380_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int uda1380_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++ u8 data[2];
++ u16 *cache = codec->reg_cache;
++
++ /* Sync reg_cache with the hardware */
++ for (i = 0; i < ARRAY_SIZE(uda1380_reg); i++) {
++ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
++ data[1] = cache[i] & 0x00ff;
++ codec->hw_write(codec->control_data, data, 2);
++ }
++ uda1380_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ uda1380_dapm_event(codec, codec->suspend_dapm_state);
++ return 0;
++}
++
++/*
++ * initialise the UDA1380 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int uda1380_init(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int ret = 0;
++
++ codec->name = "UDA1380";
++ codec->owner = THIS_MODULE;
++ codec->read = uda1380_read_reg_cache;
++ codec->write = uda1380_write;
++ codec->dapm_event = uda1380_dapm_event;
++ codec->dai = &uda1380_dai;
++ codec->num_dai = 1;
++ codec->reg_cache_size = ARRAY_SIZE(uda1380_reg);
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(uda1380_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL)
++ return -ENOMEM;
++ memcpy(codec->reg_cache, uda1380_reg,
++ sizeof(u16) * ARRAY_SIZE(uda1380_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(uda1380_reg);
++ uda1380_reset(codec);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if(ret < 0) {
++ kfree(codec->reg_cache);
++ return ret;
++ }
++
++ /* power on device */
++ uda1380_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ uda1380_write(codec, UDA1380_CLK, 0);
++
++ /* uda1380 init */
++ uda1380_add_controls(codec);
++ uda1380_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if(ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++static struct snd_soc_device *uda1380_socdev;
++
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++
++#define I2C_DRIVERID_UDA1380 0xfefe /* liam - need a proper id */
++
++static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
++
++/* Magic definition of all other variables and things */
++I2C_CLIENT_INSMOD;
++
++static struct i2c_driver uda1380_i2c_driver;
++static struct i2c_client client_template;
++
++/* If the i2c layer weren't so broken, we could pass this kind of data
++ around */
++
++static int uda1380_codec_probe(struct i2c_adapter *adap, int addr, int kind)
++{
++ struct snd_soc_device *socdev = uda1380_socdev;
++ struct uda1380_setup_data *setup = socdev->codec_data;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct i2c_client *i2c;
++ int ret;
++
++ if (addr != setup->i2c_address)
++ return -ENODEV;
++
++ client_template.adapter = adap;
++ client_template.addr = addr;
++
++ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
++ if (i2c == NULL){
++ kfree(codec);
++ return -ENOMEM;
++ }
++ memcpy(i2c, &client_template, sizeof(struct i2c_client));
++ i2c_set_clientdata(i2c, codec);
++ codec->control_data = i2c;
++
++ ret = i2c_attach_client(i2c);
++ if(ret < 0) {
++ printk(KERN_ERR "failed to attach codec at addr %x\n", addr);
++ goto err;
++ }
++
++ ret = uda1380_init(socdev);
++ if(ret < 0) {
++ printk(KERN_ERR "failed to initialise UDA1380\n");
++ goto err;
++ }
++ return ret;
++
++err:
++ kfree(codec);
++ kfree(i2c);
++ return ret;
++}
++
++static int uda1380_i2c_detach(struct i2c_client *client)
++{
++ struct snd_soc_codec* codec = i2c_get_clientdata(client);
++ i2c_detach_client(client);
++ kfree(codec->reg_cache);
++ kfree(client);
++ return 0;
++}
++
++static int uda1380_i2c_attach(struct i2c_adapter *adap)
++{
++ return i2c_probe(adap, &addr_data, uda1380_codec_probe);
++}
++
++/* corgi i2c codec control layer */
++static struct i2c_driver uda1380_i2c_driver = {
++ .driver = {
++ .name = "UDA1380 I2C Codec",
++ .owner = THIS_MODULE,
++ },
++ .id = I2C_DRIVERID_UDA1380,
++ .attach_adapter = uda1380_i2c_attach,
++ .detach_client = uda1380_i2c_detach,
++ .command = NULL,
++};
++
++static struct i2c_client client_template = {
++ .name = "UDA1380",
++ .driver = &uda1380_i2c_driver,
++};
++#endif
++
++static int uda1380_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct uda1380_setup_data *setup;
++ struct snd_soc_codec* codec;
++ int ret = 0;
++
++ printk(KERN_INFO "UDA1380 Audio Codec %s", UDA1380_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ uda1380_socdev = socdev;
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ if (setup->i2c_address) {
++ normal_i2c[0] = setup->i2c_address;
++ codec->hw_write = (hw_write_t)i2c_master_send;
++ ret = i2c_add_driver(&uda1380_i2c_driver);
++ if (ret != 0)
++ printk(KERN_ERR "can't add i2c driver");
++ }
++#else
++ /* Add other interfaces here */
++#endif
++ return ret;
++}
++
++/* power down chip */
++static int uda1380_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec* codec = socdev->codec;
++
++ if (codec->control_data)
++ uda1380_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ i2c_del_driver(&uda1380_i2c_driver);
++#endif
++ kfree(codec);
++
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_uda1380 = {
++ .probe = uda1380_probe,
++ .remove = uda1380_remove,
++ .suspend = uda1380_suspend,
++ .resume = uda1380_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_uda1380);
++
++MODULE_AUTHOR("Giorgio Padrin");
++MODULE_DESCRIPTION("Audio support for codec Philips UDA1380");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/uda1380.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/uda1380.h
+@@ -0,0 +1,56 @@
++/*
++ * Audio support for Philips UDA1380
++ *
++ * 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.
++ *
++ * Copyright (c) 2005 Giorgio Padrin <giorgio@mandarinlogiq.org>
++ */
++
++#define UDA1380_CLK 0x00
++#define UDA1380_IFACE 0x01
++#define UDA1380_PM 0x02
++#define UDA1380_AMIX 0x03
++#define UDA1380_HP 0x04
++#define UDA1380_MVOL 0x10
++#define UDA1380_MIXVOL 0x11
++#define UDA1380_MODE 0x12
++#define UDA1380_DEEMP 0x13
++#define UDA1380_MIXER 0x14
++#define UDA1380_INTSTAT 0x18
++#define UDA1380_DEC 0x20
++#define UDA1380_PGA 0x21
++#define UDA1380_ADC 0x22
++#define UDA1380_AGC 0x23
++#define UDA1380_DECSTAT 0x28
++#define UDA1380_RESET 0x7f
++
++#define UDA1380_CACHEREGNUM 0x24
++
++/* Register flags */
++#define R00_EN_ADC 0x0800
++#define R00_EN_DEC 0x0400
++#define R00_EN_DAC 0x0200
++#define R00_EN_INT 0x0100
++#define R02_PON_HP 0x2000
++#define R02_PON_DAC 0x0400
++#define R02_PON_BIAS 0x0100
++#define R02_PON_LNA 0x0010
++#define R02_PON_PGAL 0x0008
++#define R02_PON_ADCL 0x0004
++#define R02_PON_PGAR 0x0002
++#define R02_PON_ADCR 0x0001
++#define R13_MTM 0x4000
++#define R21_MT_ADC 0x8000
++#define R22_SEL_LNA 0x0008
++#define R22_SEL_MIC 0x0004
++#define R22_SKIP_DCFIL 0x0002
++#define R23_AGC_EN 0x0001
++
++struct uda1380_setup_data {
++ unsigned short i2c_address;
++};
++
++extern struct snd_soc_codec_dai uda1380_dai;
++extern struct snd_soc_codec_device soc_codec_dev_uda1380;
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8731.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8731.c
+@@ -0,0 +1,886 @@
++/*
++ * wm8731.c -- WM8731 ALSA SoC Audio driver
++ *
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Author: Richard Purdie <richard@openedhand.com>
++ *
++ * Based on wm8753.c by Liam Girdwood
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/i2c.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++
++#include "wm8731.h"
++
++#define AUDIO_NAME "wm8731"
++#define WM8731_VERSION "0.12"
++
++/*
++ * Debug
++ */
++
++#define WM8731_DEBUG 0
++
++#ifdef WM8731_DEBUG
++#define dbg(format, arg...) \
++ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
++#else
++#define dbg(format, arg...) do {} while (0)
++#endif
++#define err(format, arg...) \
++ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
++#define info(format, arg...) \
++ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
++#define warn(format, arg...) \
++ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
++
++struct snd_soc_codec_device soc_codec_dev_wm8731;
++
++/*
++ * wm8731 register cache
++ * We can't read the WM8731 register space when we are
++ * using 2 wire for device control, so we cache them instead.
++ * There is no point in caching the reset register
++ */
++static const u16 wm8731_reg[WM8731_CACHEREGNUM] = {
++ 0x0097, 0x0097, 0x0079, 0x0079,
++ 0x000a, 0x0008, 0x009f, 0x000a,
++ 0x0000, 0x0000
++};
++
++#define WM8731_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
++ SND_SOC_DAIFMT_IB_IF)
++
++#define WM8731_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define WM8731_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 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
++
++#define WM8731_HIFI_BITS \
++ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
++ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
++
++static struct snd_soc_dai_mode wm8731_modes[] = {
++ /* codec frame and clock master modes */
++ /* 8k */
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 1536,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 2304,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 1408,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 2112,
++ .bfs = 64,
++ },
++
++ /* 32k */
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 384,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 576,
++ .bfs = 64,
++ },
++
++ /* 44.1k & 48k */
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 384,
++ .bfs = 64,
++ },
++
++ /* 88.2 & 96k */
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 128,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 192,
++ .bfs = 64,
++ },
++
++ /* USB codec frame and clock master modes */
++ /* 8k */
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1500,
++ .bfs = SND_SOC_FSBD(1),
++ },
++
++ /* 44.1k */
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 272,
++ .bfs = SND_SOC_FSBD(1),
++ },
++
++ /* 48k */
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 250,
++ .bfs = SND_SOC_FSBD(1),
++ },
++
++ /* 88.2k */
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 136,
++ .bfs = SND_SOC_FSBD(1),
++ },
++
++ /* 96k */
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 125,
++ .bfs = SND_SOC_FSBD(1),
++ },
++
++ /* codec frame and clock slave modes */
++ {
++ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = WM8731_HIFI_BITS,
++ .pcmrate = WM8731_RATES,
++ .pcmdir = WM8731_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++};
++
++/*
++ * read wm8731 register cache
++ */
++static inline unsigned int wm8731_read_reg_cache(struct snd_soc_codec *codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg == WM8731_RESET)
++ return 0;
++ if (reg >= WM8731_CACHEREGNUM)
++ return -1;
++ return cache[reg];
++}
++
++/*
++ * write wm8731 register cache
++ */
++static inline void wm8731_write_reg_cache(struct snd_soc_codec *codec,
++ u16 reg, unsigned int value)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg >= WM8731_CACHEREGNUM)
++ return;
++ cache[reg] = value;
++}
++
++/*
++ * write to the WM8731 register space
++ */
++static int wm8731_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int value)
++{
++ u8 data[2];
++
++ /* data is
++ * D15..D9 WM8731 register offset
++ * D8...D0 register data
++ */
++ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
++ data[1] = value & 0x00ff;
++
++ wm8731_write_reg_cache (codec, reg, value);
++ if (codec->hw_write(codec->control_data, data, 2) == 2)
++ return 0;
++ else
++ return -EIO;
++}
++
++#define wm8731_reset(c) wm8731_write(c, WM8731_RESET, 0)
++
++static const char *wm8731_input_select[] = {"Line In", "Mic"};
++static const char *wm8731_deemph[] = {"None", "32Khz", "44.1Khz", "48Khz"};
++
++static const struct soc_enum wm8731_enum[] = {
++ SOC_ENUM_SINGLE(WM8731_APANA, 2, 2, wm8731_input_select),
++ SOC_ENUM_SINGLE(WM8731_APDIGI, 1, 4, wm8731_deemph),
++};
++
++static const struct snd_kcontrol_new wm8731_snd_controls[] = {
++
++SOC_DOUBLE_R("Master Playback Volume", WM8731_LOUT1V, WM8731_ROUT1V,
++ 0, 127, 0),
++SOC_DOUBLE_R("Master Playback ZC Switch", WM8731_LOUT1V, WM8731_ROUT1V,
++ 7, 1, 0),
++
++SOC_DOUBLE_R("Capture Volume", WM8731_LINVOL, WM8731_RINVOL, 0, 31, 0),
++SOC_DOUBLE_R("Line Capture Switch", WM8731_LINVOL, WM8731_RINVOL, 7, 1, 1),
++
++SOC_SINGLE("Mic Boost (+20dB)", WM8731_APANA, 0, 1, 0),
++SOC_SINGLE("Capture Mic Switch", WM8731_APANA, 1, 1, 1),
++
++SOC_SINGLE("Sidetone Playback Volume", WM8731_APANA, 6, 3, 1),
++
++SOC_SINGLE("ADC High Pass Filter Switch", WM8731_APDIGI, 0, 1, 1),
++SOC_SINGLE("Store DC Offset Switch", WM8731_APDIGI, 4, 1, 0),
++
++SOC_ENUM("Playback De-emphasis", wm8731_enum[1]),
++};
++
++/* add non dapm controls */
++static int wm8731_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(wm8731_snd_controls); i++) {
++ if ((err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8731_snd_controls[i],codec, NULL))) < 0)
++ return err;
++ }
++
++ return 0;
++}
++
++/* Output Mixer */
++static const struct snd_kcontrol_new wm8731_output_mixer_controls[] = {
++SOC_DAPM_SINGLE("Line Bypass Switch", WM8731_APANA, 3, 1, 0),
++SOC_DAPM_SINGLE("Mic Sidetone Switch", WM8731_APANA, 5, 1, 0),
++SOC_DAPM_SINGLE("HiFi Playback Switch", WM8731_APANA, 4, 1, 0),
++};
++
++/* Input mux */
++static const struct snd_kcontrol_new wm8731_input_mux_controls =
++SOC_DAPM_ENUM("Input Select", wm8731_enum[0]);
++
++static const struct snd_soc_dapm_widget wm8731_dapm_widgets[] = {
++SND_SOC_DAPM_MIXER("Output Mixer", WM8731_PWR, 4, 1,
++ &wm8731_output_mixer_controls[0],
++ ARRAY_SIZE(wm8731_output_mixer_controls)),
++SND_SOC_DAPM_DAC("DAC", "HiFi Playback", WM8731_PWR, 3, 1),
++SND_SOC_DAPM_OUTPUT("LOUT"),
++SND_SOC_DAPM_OUTPUT("LHPOUT"),
++SND_SOC_DAPM_OUTPUT("ROUT"),
++SND_SOC_DAPM_OUTPUT("RHPOUT"),
++SND_SOC_DAPM_ADC("ADC", "HiFi Capture", WM8731_PWR, 2, 1),
++SND_SOC_DAPM_MUX("Input Mux", SND_SOC_NOPM, 0, 0, &wm8731_input_mux_controls),
++SND_SOC_DAPM_PGA("Line Input", WM8731_PWR, 0, 1, NULL, 0),
++SND_SOC_DAPM_MICBIAS("Mic Bias", WM8731_PWR, 1, 1),
++SND_SOC_DAPM_INPUT("MICIN"),
++SND_SOC_DAPM_INPUT("RLINEIN"),
++SND_SOC_DAPM_INPUT("LLINEIN"),
++};
++
++static const char *intercon[][3] = {
++ /* output mixer */
++ {"Output Mixer", "Line Bypass Switch", "Line Input"},
++ {"Output Mixer", "HiFi Playback Switch", "DAC"},
++ {"Output Mixer", "Mic Sidetone Switch", "Mic Bias"},
++
++ /* outputs */
++ {"RHPOUT", NULL, "Output Mixer"},
++ {"ROUT", NULL, "Output Mixer"},
++ {"LHPOUT", NULL, "Output Mixer"},
++ {"LOUT", NULL, "Output Mixer"},
++
++ /* input mux */
++ {"Input Mux", "Line In", "Line Input"},
++ {"Input Mux", "Mic", "Mic Bias"},
++ {"ADC", NULL, "Input Mux"},
++
++ /* inputs */
++ {"Line Input", NULL, "LLINEIN"},
++ {"Line Input", NULL, "RLINEIN"},
++ {"Mic Bias", NULL, "MICIN"},
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int wm8731_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(wm8731_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm8731_dapm_widgets[i]);
++ }
++
++ /* set up audio path interconnects */
++ for(i = 0; intercon[i][0] != NULL; i++) {
++ snd_soc_dapm_connect_input(codec, intercon[i][0],
++ intercon[i][1], intercon[i][2]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++struct _coeff_div {
++ u32 mclk;
++ u32 rate;
++ u16 fs;
++ u8 sr:4;
++ u8 bosr:1;
++ u8 usb:1;
++};
++
++/* codec mclk clock divider coefficients */
++static const struct _coeff_div coeff_div[] = {
++ /* 48k */
++ {12288000, 48000, 256, 0x0, 0x0, 0x0},
++ {18432000, 48000, 384, 0x0, 0x1, 0x0},
++ {12000000, 48000, 250, 0x0, 0x0, 0x1},
++
++ /* 32k */
++ {12288000, 32000, 384, 0x6, 0x0, 0x0},
++ {18432000, 32000, 576, 0x6, 0x1, 0x0},
++
++ /* 8k */
++ {12288000, 8000, 1536, 0x3, 0x0, 0x0},
++ {18432000, 8000, 2304, 0x3, 0x1, 0x0},
++ {11289600, 8000, 1408, 0xb, 0x0, 0x0},
++ {16934400, 8000, 2112, 0xb, 0x1, 0x0},
++ {12000000, 8000, 1500, 0x3, 0x0, 0x1},
++
++ /* 96k */
++ {12288000, 96000, 128, 0x7, 0x0, 0x0},
++ {18432000, 96000, 192, 0x7, 0x1, 0x0},
++ {12000000, 96000, 125, 0x7, 0x0, 0x1},
++
++ /* 44.1k */
++ {11289600, 44100, 256, 0x8, 0x0, 0x0},
++ {16934400, 44100, 384, 0x8, 0x1, 0x0},
++ {12000000, 44100, 272, 0x8, 0x1, 0x1},
++
++ /* 88.2k */
++ {11289600, 88200, 128, 0xf, 0x0, 0x0},
++ {16934400, 88200, 192, 0xf, 0x1, 0x0},
++ {12000000, 88200, 136, 0xf, 0x1, 0x1},
++};
++
++static inline int get_coeff(int mclk, int rate)
++{
++ int i;
++
++ for (i = 0; i < ARRAY_SIZE(coeff_div); i++) {
++ if (coeff_div[i].rate == rate && coeff_div[i].mclk == mclk)
++ return i;
++ }
++ return 0;
++}
++
++/* WM8731 supports numerous clocks per sample rate */
++static unsigned int wm8731_config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ dai->mclk = 0;
++
++ /* check that the calculated FS and rate actually match a clock from
++ * the machine driver */
++ if (info->fs * info->rate == clk)
++ dai->mclk = clk;
++
++ return dai->mclk;
++}
++
++static int wm8731_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 iface = 0, srate;
++ int i = get_coeff(rtd->codec_dai->mclk,
++ snd_soc_get_rate(rtd->codec_dai->dai_runtime.pcmrate));
++
++ /* set master/slave audio interface */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ iface |= 0x0040;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ break;
++ }
++ srate = (coeff_div[i].sr << 2) |
++ (coeff_div[i].bosr << 1) | coeff_div[i].usb;
++ wm8731_write(codec, WM8731_SRATE, srate);
++
++ /* interface format */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ iface |= 0x0002;
++ break;
++ case SND_SOC_DAIFMT_RIGHT_J:
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ iface |= 0x0001;
++ break;
++ case SND_SOC_DAIFMT_DSP_A:
++ iface |= 0x0003;
++ break;
++ case SND_SOC_DAIFMT_DSP_B:
++ iface |= 0x0013;
++ break;
++ }
++
++ /* bit size */
++ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ iface |= 0x0004;
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ iface |= 0x0008;
++ break;
++ case SNDRV_PCM_FMTBIT_S32_LE:
++ iface |= 0x000c;
++ break;
++ }
++
++ /* clock inversion */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_IF:
++ iface |= 0x0090;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ iface |= 0x0080;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ iface |= 0x0010;
++ break;
++ }
++
++ /* set iface */
++ wm8731_write(codec, WM8731_IFACE, iface);
++
++ /* set active */
++ wm8731_write(codec, WM8731_ACTIVE, 0x0001);
++ return 0;
++}
++
++static void wm8731_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++
++ /* deactivate */
++ if (!codec->active) {
++ udelay(50);
++ wm8731_write(codec, WM8731_ACTIVE, 0x0);
++ }
++}
++
++static int wm8731_mute(struct snd_soc_codec *codec,
++ struct snd_soc_codec_dai *dai, int mute)
++{
++ u16 mute_reg = wm8731_read_reg_cache(codec, WM8731_APDIGI) & 0xfff7;
++ if (mute)
++ wm8731_write(codec, WM8731_APDIGI, mute_reg | 0x8);
++ else
++ wm8731_write(codec, WM8731_APDIGI, mute_reg);
++ return 0;
++}
++
++static int wm8731_dapm_event(struct snd_soc_codec *codec, int event)
++{
++ u16 reg = wm8731_read_reg_cache(codec, WM8731_PWR) & 0xff7f;
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ /* vref/mid, osc on, dac unmute */
++ wm8731_write(codec, WM8731_PWR, reg);
++ break;
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ break;
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* everything off except vref/vmid, */
++ wm8731_write(codec, WM8731_PWR, reg | 0x0040);
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ /* everything off, dac mute, inactive */
++ wm8731_write(codec, WM8731_ACTIVE, 0x0);
++ wm8731_write(codec, WM8731_PWR, 0xffff);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++struct snd_soc_codec_dai wm8731_dai = {
++ .name = "WM8731",
++ .playback = {
++ .stream_name = "Playback",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .capture = {
++ .stream_name = "Capture",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .config_sysclk = wm8731_config_sysclk,
++ .digital_mute = wm8731_mute,
++ .ops = {
++ .prepare = wm8731_pcm_prepare,
++ .shutdown = wm8731_shutdown,
++ },
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8731_modes),
++ .mode = wm8731_modes,
++ },
++};
++EXPORT_SYMBOL_GPL(wm8731_dai);
++
++static int wm8731_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ wm8731_write(codec, WM8731_ACTIVE, 0x0);
++ wm8731_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int wm8731_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++ u8 data[2];
++ u16 *cache = codec->reg_cache;
++
++ /* Sync reg_cache with the hardware */
++ for (i = 0; i < ARRAY_SIZE(wm8731_reg); i++) {
++ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
++ data[1] = cache[i] & 0x00ff;
++ codec->hw_write(codec->control_data, data, 2);
++ }
++ wm8731_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ wm8731_dapm_event(codec, codec->suspend_dapm_state);
++ return 0;
++}
++
++/*
++ * initialise the WM8731 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int wm8731_init(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int reg, ret = 0;
++
++ codec->name = "WM8731";
++ codec->owner = THIS_MODULE;
++ codec->read = wm8731_read_reg_cache;
++ codec->write = wm8731_write;
++ codec->dapm_event = wm8731_dapm_event;
++ codec->dai = &wm8731_dai;
++ codec->num_dai = 1;
++ codec->reg_cache_size = ARRAY_SIZE(wm8731_reg);
++
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8731_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL)
++ return -ENOMEM;
++ memcpy(codec->reg_cache,
++ wm8731_reg, sizeof(u16) * ARRAY_SIZE(wm8731_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8731_reg);
++
++ wm8731_reset(codec);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if (ret < 0) {
++ kfree(codec->reg_cache);
++ return ret;
++ }
++
++ /* power on device */
++ wm8731_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++
++ /* set the update bits */
++ reg = wm8731_read_reg_cache(codec, WM8731_LOUT1V);
++ wm8731_write(codec, WM8731_LOUT1V, reg | 0x0100);
++ reg = wm8731_read_reg_cache(codec, WM8731_ROUT1V);
++ wm8731_write(codec, WM8731_ROUT1V, reg | 0x0100);
++ reg = wm8731_read_reg_cache(codec, WM8731_LINVOL);
++ wm8731_write(codec, WM8731_LINVOL, reg | 0x0100);
++ reg = wm8731_read_reg_cache(codec, WM8731_RINVOL);
++ wm8731_write(codec, WM8731_RINVOL, reg | 0x0100);
++
++ wm8731_add_controls(codec);
++ wm8731_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if (ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++static struct snd_soc_device *wm8731_socdev;
++
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++
++/*
++ * WM8731 2 wire address is determined by GPIO5
++ * state during powerup.
++ * low = 0x1a
++ * high = 0x1b
++ */
++static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
++
++/* Magic definition of all other variables and things */
++I2C_CLIENT_INSMOD;
++
++static struct i2c_driver wm8731_i2c_driver;
++static struct i2c_client client_template;
++
++/* If the i2c layer weren't so broken, we could pass this kind of data
++ around */
++
++static int wm8731_codec_probe(struct i2c_adapter *adap, int addr, int kind)
++{
++ struct snd_soc_device *socdev = wm8731_socdev;
++ struct wm8731_setup_data *setup = socdev->codec_data;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct i2c_client *i2c;
++ int ret;
++
++ if (addr != setup->i2c_address)
++ return -ENODEV;
++
++ client_template.adapter = adap;
++ client_template.addr = addr;
++
++ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
++ if (i2c == NULL) {
++ kfree(codec);
++ return -ENOMEM;
++ }
++ memcpy(i2c, &client_template, sizeof(struct i2c_client));
++ i2c_set_clientdata(i2c, codec);
++ codec->control_data = i2c;
++
++ ret = i2c_attach_client(i2c);
++ if (ret < 0) {
++ err("failed to attach codec at addr %x\n", addr);
++ goto err;
++ }
++
++ ret = wm8731_init(socdev);
++ if (ret < 0) {
++ err("failed to initialise WM8731\n");
++ goto err;
++ }
++ return ret;
++
++err:
++ kfree(codec);
++ kfree(i2c);
++ return ret;
++}
++
++static int wm8731_i2c_detach(struct i2c_client *client)
++{
++ struct snd_soc_codec* codec = i2c_get_clientdata(client);
++ i2c_detach_client(client);
++ kfree(codec->reg_cache);
++ kfree(client);
++ return 0;
++}
++
++static int wm8731_i2c_attach(struct i2c_adapter *adap)
++{
++ return i2c_probe(adap, &addr_data, wm8731_codec_probe);
++}
++
++/* corgi i2c codec control layer */
++static struct i2c_driver wm8731_i2c_driver = {
++ .driver = {
++ .name = "WM8731 I2C Codec",
++ .owner = THIS_MODULE,
++ },
++ .id = I2C_DRIVERID_WM8731,
++ .attach_adapter = wm8731_i2c_attach,
++ .detach_client = wm8731_i2c_detach,
++ .command = NULL,
++};
++
++static struct i2c_client client_template = {
++ .name = "WM8731",
++ .driver = &wm8731_i2c_driver,
++};
++#endif
++
++static int wm8731_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct wm8731_setup_data *setup;
++ struct snd_soc_codec *codec;
++ int ret = 0;
++
++ info("WM8731 Audio Codec %s", WM8731_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ wm8731_socdev = socdev;
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ if (setup->i2c_address) {
++ normal_i2c[0] = setup->i2c_address;
++ codec->hw_write = (hw_write_t)i2c_master_send;
++ ret = i2c_add_driver(&wm8731_i2c_driver);
++ if (ret != 0)
++ printk(KERN_ERR "can't add i2c driver");
++ }
++#else
++ /* Add other interfaces here */
++#endif
++ return ret;
++}
++
++/* power down chip */
++static int wm8731_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if (codec->control_data)
++ wm8731_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ i2c_del_driver(&wm8731_i2c_driver);
++#endif
++ kfree(codec);
++
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_wm8731 = {
++ .probe = wm8731_probe,
++ .remove = wm8731_remove,
++ .suspend = wm8731_suspend,
++ .resume = wm8731_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_wm8731);
++
++MODULE_DESCRIPTION("ASoC WM8731 driver");
++MODULE_AUTHOR("Richard Purdie");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8731.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8731.h
+@@ -0,0 +1,41 @@
++/*
++ * wm8731.h -- WM8731 Soc Audio driver
++ *
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Author: Richard Purdie <richard@openedhand.com>
++ *
++ * Based on wm8753.h
++ *
++ * 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.
++ */
++
++#ifndef _WM8731_H
++#define _WM8731_H
++
++/* WM8731 register space */
++
++#define WM8731_LINVOL 0x00
++#define WM8731_RINVOL 0x01
++#define WM8731_LOUT1V 0x02
++#define WM8731_ROUT1V 0x03
++#define WM8731_APANA 0x04
++#define WM8731_APDIGI 0x05
++#define WM8731_PWR 0x06
++#define WM8731_IFACE 0x07
++#define WM8731_SRATE 0x08
++#define WM8731_ACTIVE 0x09
++#define WM8731_RESET 0x0f
++
++#define WM8731_CACHEREGNUM 10
++
++struct wm8731_setup_data {
++ unsigned short i2c_address;
++};
++
++extern struct snd_soc_codec_dai wm8731_dai;
++extern struct snd_soc_codec_device soc_codec_dev_wm8731;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8750.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8750.c
+@@ -0,0 +1,1282 @@
++/*
++ * wm8750.c -- WM8750 ALSA SoC audio driver
++ *
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Author: Richard Purdie <richard@openedhand.com>
++ *
++ * Based on WM8753.c
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/i2c.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++
++#include "wm8750.h"
++
++#define AUDIO_NAME "WM8750"
++#define WM8750_VERSION "0.11"
++
++/*
++ * Debug
++ */
++
++#define WM8750_DEBUG 0
++
++#ifdef WM8750_DEBUG
++#define dbg(format, arg...) \
++ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
++#else
++#define dbg(format, arg...) do {} while (0)
++#endif
++#define err(format, arg...) \
++ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
++#define info(format, arg...) \
++ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
++#define warn(format, arg...) \
++ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
++
++static struct workqueue_struct *wm8750_workq = NULL;
++static struct work_struct wm8750_dapm_work;
++
++/*
++ * wm8750 register cache
++ * We can't read the WM8750 register space when we
++ * are using 2 wire for device control, so we cache them instead.
++ */
++static const u16 wm8750_reg[] = {
++ 0x0097, 0x0097, 0x0079, 0x0079, /* 0 */
++ 0x0000, 0x0008, 0x0000, 0x000a, /* 4 */
++ 0x0000, 0x0000, 0x00ff, 0x00ff, /* 8 */
++ 0x000f, 0x000f, 0x0000, 0x0000, /* 12 */
++ 0x0000, 0x007b, 0x0000, 0x0032, /* 16 */
++ 0x0000, 0x00c3, 0x00c3, 0x00c0, /* 20 */
++ 0x0000, 0x0000, 0x0000, 0x0000, /* 24 */
++ 0x0000, 0x0000, 0x0000, 0x0000, /* 28 */
++ 0x0000, 0x0000, 0x0050, 0x0050, /* 32 */
++ 0x0050, 0x0050, 0x0050, 0x0050, /* 36 */
++ 0x0079, 0x0079, 0x0079, /* 40 */
++};
++
++#define WM8750_HIFI_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
++ SND_SOC_DAIFMT_IB_IF)
++
++#define WM8750_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define WM8750_HIFI_FSB \
++ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
++ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
++
++#define WM8750_HIFI_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 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
++
++#define WM8750_HIFI_BITS \
++ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
++ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
++
++static struct snd_soc_dai_mode wm8750_modes[] = {
++ /* common codec frame and clock master modes */
++ /* 8k */
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1536,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1408,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 2304,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 2112,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1500,
++ .bfs = WM8750_HIFI_FSB,
++ },
++
++ /* 11.025k */
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_11025,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1024,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_11025,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1536,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_11025,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1088,
++ .bfs = WM8750_HIFI_FSB,
++ },
++
++ /* 16k */
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_16000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 768,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_16000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1152,
++ .bfs = WM8750_HIFI_FSB
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_16000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 750,
++ .bfs = WM8750_HIFI_FSB,
++ },
++
++ /* 22.05k */
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_22050,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 512,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_22050,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 768,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_22050,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 544,
++ .bfs = WM8750_HIFI_FSB,
++ },
++
++ /* 32k */
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 384,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 576,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 375,
++ .bfs = WM8750_HIFI_FSB,
++ },
++
++ /* 44.1k & 48k */
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 384,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 272,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 250,
++ .bfs = WM8750_HIFI_FSB,
++ },
++
++ /* 88.2k & 96k */
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 128,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 192,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 136,
++ .bfs = WM8750_HIFI_FSB,
++ },
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 125,
++ .bfs = WM8750_HIFI_FSB,
++ },
++
++ /* codec frame and clock slave modes */
++ {
++ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = WM8750_HIFI_BITS,
++ .pcmrate = WM8750_HIFI_RATES,
++ .pcmdir = WM8750_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++};
++
++/*
++ * read wm8750 register cache
++ */
++static inline unsigned int wm8750_read_reg_cache(struct snd_soc_codec *codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg > WM8750_CACHE_REGNUM)
++ return -1;
++ return cache[reg];
++}
++
++/*
++ * write wm8750 register cache
++ */
++static inline void wm8750_write_reg_cache(struct snd_soc_codec *codec,
++ unsigned int reg, unsigned int value)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg > WM8750_CACHE_REGNUM)
++ return;
++ cache[reg] = value;
++}
++
++static int wm8750_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int value)
++{
++ u8 data[2];
++
++ /* data is
++ * D15..D9 WM8753 register offset
++ * D8...D0 register data
++ */
++ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
++ data[1] = value & 0x00ff;
++
++ wm8750_write_reg_cache (codec, reg, value);
++ if (codec->hw_write(codec->control_data, data, 2) == 2)
++ return 0;
++ else
++ return -EIO;
++}
++
++#define wm8750_reset(c) wm8750_write(c, WM8750_RESET, 0)
++
++/*
++ * WM8750 Controls
++ */
++static const char *wm8750_bass[] = {"Linear Control", "Adaptive Boost"};
++static const char *wm8750_bass_filter[] = { "130Hz @ 48kHz", "200Hz @ 48kHz" };
++static const char *wm8750_treble[] = {"8kHz", "4kHz"};
++static const char *wm8750_3d_lc[] = {"200Hz", "500Hz"};
++static const char *wm8750_3d_uc[] = {"2.2kHz", "1.5kHz"};
++static const char *wm8750_3d_func[] = {"Capture", "Playback"};
++static const char *wm8750_alc_func[] = {"Off", "Right", "Left", "Stereo"};
++static const char *wm8750_ng_type[] = {"Constant PGA Gain",
++ "Mute ADC Output"};
++static const char *wm8750_line_mux[] = {"Line 1", "Line 2", "Line 3", "PGA",
++ "Differential"};
++static const char *wm8750_pga_sel[] = {"Line 1", "Line 2", "Line 3",
++ "Differential"};
++static const char *wm8750_out3[] = {"VREF", "ROUT1 + Vol", "MonoOut",
++ "ROUT1"};
++static const char *wm8750_diff_sel[] = {"Line 1", "Line 2"};
++static const char *wm8750_adcpol[] = {"Normal", "L Invert", "R Invert",
++ "L + R Invert"};
++static const char *wm8750_deemph[] = {"None", "32Khz", "44.1Khz", "48Khz"};
++static const char *wm8750_mono_mux[] = {"Stereo", "Mono (Left)",
++ "Mono (Right)", "Digital Mono"};
++
++static const struct soc_enum wm8750_enum[] = {
++SOC_ENUM_SINGLE(WM8750_BASS, 7, 2, wm8750_bass),
++SOC_ENUM_SINGLE(WM8750_BASS, 6, 2, wm8750_bass_filter),
++SOC_ENUM_SINGLE(WM8750_TREBLE, 6, 2, wm8750_treble),
++SOC_ENUM_SINGLE(WM8750_3D, 5, 2, wm8750_3d_lc),
++SOC_ENUM_SINGLE(WM8750_3D, 6, 2, wm8750_3d_uc),
++SOC_ENUM_SINGLE(WM8750_3D, 7, 2, wm8750_3d_func),
++SOC_ENUM_SINGLE(WM8750_ALC1, 7, 4, wm8750_alc_func),
++SOC_ENUM_SINGLE(WM8750_NGATE, 1, 2, wm8750_ng_type),
++SOC_ENUM_SINGLE(WM8750_LOUTM1, 0, 5, wm8750_line_mux),
++SOC_ENUM_SINGLE(WM8750_ROUTM1, 0, 5, wm8750_line_mux),
++SOC_ENUM_SINGLE(WM8750_LADCIN, 6, 4, wm8750_pga_sel), /* 10 */
++SOC_ENUM_SINGLE(WM8750_RADCIN, 6, 4, wm8750_pga_sel),
++SOC_ENUM_SINGLE(WM8750_ADCTL2, 7, 4, wm8750_out3),
++SOC_ENUM_SINGLE(WM8750_ADCIN, 8, 2, wm8750_diff_sel),
++SOC_ENUM_SINGLE(WM8750_ADCDAC, 5, 4, wm8750_adcpol),
++SOC_ENUM_SINGLE(WM8750_ADCDAC, 1, 4, wm8750_deemph),
++SOC_ENUM_SINGLE(WM8750_ADCIN, 6, 4, wm8750_mono_mux), /* 16 */
++
++};
++
++static const struct snd_kcontrol_new wm8750_snd_controls[] = {
++
++SOC_DOUBLE_R("Capture Volume", WM8750_LINVOL, WM8750_RINVOL, 0, 63, 0),
++SOC_DOUBLE_R("Capture ZC Switch", WM8750_LINVOL, WM8750_RINVOL, 6, 1, 0),
++SOC_DOUBLE_R("Capture Switch", WM8750_LINVOL, WM8750_RINVOL, 7, 1, 1),
++
++SOC_DOUBLE_R("Headphone Playback ZC Switch", WM8750_LOUT1V,
++ WM8750_ROUT1V, 7, 1, 0),
++SOC_DOUBLE_R("Speaker Playback ZC Switch", WM8750_LOUT2V,
++ WM8750_ROUT2V, 7, 1, 0),
++
++SOC_ENUM("Playback De-emphasis", wm8750_enum[15]),
++
++SOC_ENUM("Capture Polarity", wm8750_enum[14]),
++SOC_SINGLE("Playback 6dB Attenuate", WM8750_ADCDAC, 7, 1, 0),
++SOC_SINGLE("Capture 6dB Attenuate", WM8750_ADCDAC, 8, 1, 0),
++
++SOC_DOUBLE_R("PCM Volume", WM8750_LDAC, WM8750_RDAC, 0, 255, 0),
++
++SOC_ENUM("Bass Boost", wm8750_enum[0]),
++SOC_ENUM("Bass Filter", wm8750_enum[1]),
++SOC_SINGLE("Bass Volume", WM8750_BASS, 0, 15, 1),
++
++SOC_SINGLE("Treble Volume", WM8750_TREBLE, 0, 15, 0),
++SOC_ENUM("Treble Cut-off", wm8750_enum[2]),
++
++SOC_SINGLE("3D Switch", WM8750_3D, 0, 1, 0),
++SOC_SINGLE("3D Volume", WM8750_3D, 1, 15, 0),
++SOC_ENUM("3D Lower Cut-off", wm8750_enum[3]),
++SOC_ENUM("3D Upper Cut-off", wm8750_enum[4]),
++SOC_ENUM("3D Mode", wm8750_enum[5]),
++
++SOC_SINGLE("ALC Capture Target Volume", WM8750_ALC1, 0, 7, 0),
++SOC_SINGLE("ALC Capture Max Volume", WM8750_ALC1, 4, 7, 0),
++SOC_ENUM("ALC Capture Function", wm8750_enum[6]),
++SOC_SINGLE("ALC Capture ZC Switch", WM8750_ALC2, 7, 1, 0),
++SOC_SINGLE("ALC Capture Hold Time", WM8750_ALC2, 0, 15, 0),
++SOC_SINGLE("ALC Capture Decay Time", WM8750_ALC3, 4, 15, 0),
++SOC_SINGLE("ALC Capture Attack Time", WM8750_ALC3, 0, 15, 0),
++SOC_SINGLE("ALC Capture NG Threshold", WM8750_NGATE, 3, 31, 0),
++SOC_ENUM("ALC Capture NG Type", wm8750_enum[4]),
++SOC_SINGLE("ALC Capture NG Switch", WM8750_NGATE, 0, 1, 0),
++
++SOC_SINGLE("Left ADC Capture Volume", WM8750_LADC, 0, 255, 0),
++SOC_SINGLE("Right ADC Capture Volume", WM8750_RADC, 0, 255, 0),
++
++SOC_SINGLE("ZC Timeout Switch", WM8750_ADCTL1, 0, 1, 0),
++SOC_SINGLE("Playback Invert Switch", WM8750_ADCTL1, 1, 1, 0),
++
++SOC_SINGLE("Right Speaker Playback Invert Switch", WM8750_ADCTL2, 4, 1, 0),
++
++/* Unimplemented */
++/* ADCDAC Bit 0 - ADCHPD */
++/* ADCDAC Bit 4 - HPOR */
++/* ADCTL1 Bit 2,3 - DATSEL */
++/* ADCTL1 Bit 4,5 - DMONOMIX */
++/* ADCTL1 Bit 6,7 - VSEL */
++/* ADCTL2 Bit 2 - LRCM */
++/* ADCTL2 Bit 3 - TRI */
++/* ADCTL3 Bit 5 - HPFLREN */
++/* ADCTL3 Bit 6 - VROI */
++/* ADCTL3 Bit 7,8 - ADCLRM */
++/* ADCIN Bit 4 - LDCM */
++/* ADCIN Bit 5 - RDCM */
++
++SOC_DOUBLE_R("Mic Boost", WM8750_LADCIN, WM8750_RADCIN, 4, 3, 0),
++
++SOC_DOUBLE_R("Bypass Left Playback Volume", WM8750_LOUTM1,
++ WM8750_LOUTM2, 4, 7, 1),
++SOC_DOUBLE_R("Bypass Right Playback Volume", WM8750_ROUTM1,
++ WM8750_ROUTM2, 4, 7, 1),
++SOC_DOUBLE_R("Bypass Mono Playback Volume", WM8750_MOUTM1,
++ WM8750_MOUTM2, 4, 7, 1),
++
++SOC_SINGLE("Mono Playback ZC Switch", WM8750_MOUTV, 7, 1, 0),
++
++SOC_DOUBLE_R("Headphone Playback Volume", WM8750_LOUT1V, WM8750_ROUT1V,
++ 0, 127, 0),
++SOC_DOUBLE_R("Speaker Playback Volume", WM8750_LOUT2V, WM8750_ROUT2V,
++ 0, 127, 0),
++
++SOC_SINGLE("Mono Playback Volume", WM8750_MOUTV, 0, 127, 0),
++
++};
++
++/* add non dapm controls */
++static int wm8750_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(wm8750_snd_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8750_snd_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++ return 0;
++}
++
++/*
++ * DAPM Controls
++ */
++
++/* Left Mixer */
++static const struct snd_kcontrol_new wm8750_left_mixer_controls[] = {
++SOC_DAPM_SINGLE("Playback Switch", WM8750_LOUTM1, 8, 1, 0),
++SOC_DAPM_SINGLE("Left Bypass Switch", WM8750_LOUTM1, 7, 1, 0),
++SOC_DAPM_SINGLE("Right Playback Switch", WM8750_LOUTM2, 8, 1, 0),
++SOC_DAPM_SINGLE("Right Bypass Switch", WM8750_LOUTM2, 7, 1, 0),
++};
++
++/* Right Mixer */
++static const struct snd_kcontrol_new wm8750_right_mixer_controls[] = {
++SOC_DAPM_SINGLE("Left Playback Switch", WM8750_ROUTM1, 8, 1, 0),
++SOC_DAPM_SINGLE("Left Bypass Switch", WM8750_ROUTM1, 7, 1, 0),
++SOC_DAPM_SINGLE("Playback Switch", WM8750_ROUTM2, 8, 1, 0),
++SOC_DAPM_SINGLE("Right Bypass Switch", WM8750_ROUTM2, 7, 1, 0),
++};
++
++/* Mono Mixer */
++static const struct snd_kcontrol_new wm8750_mono_mixer_controls[] = {
++SOC_DAPM_SINGLE("Left Playback Switch", WM8750_MOUTM1, 8, 1, 0),
++SOC_DAPM_SINGLE("Left Bypass Switch", WM8750_MOUTM1, 7, 1, 0),
++SOC_DAPM_SINGLE("Right Playback Switch", WM8750_MOUTM2, 8, 1, 0),
++SOC_DAPM_SINGLE("Right Bypass Switch", WM8750_MOUTM2, 7, 1, 0),
++};
++
++/* Left Line Mux */
++static const struct snd_kcontrol_new wm8750_left_line_controls =
++SOC_DAPM_ENUM("Route", wm8750_enum[8]);
++
++/* Right Line Mux */
++static const struct snd_kcontrol_new wm8750_right_line_controls =
++SOC_DAPM_ENUM("Route", wm8750_enum[9]);
++
++/* Left PGA Mux */
++static const struct snd_kcontrol_new wm8750_left_pga_controls =
++SOC_DAPM_ENUM("Route", wm8750_enum[10]);
++
++/* Right PGA Mux */
++static const struct snd_kcontrol_new wm8750_right_pga_controls =
++SOC_DAPM_ENUM("Route", wm8750_enum[11]);
++
++/* Out 3 Mux */
++static const struct snd_kcontrol_new wm8750_out3_controls =
++SOC_DAPM_ENUM("Route", wm8750_enum[12]);
++
++/* Differential Mux */
++static const struct snd_kcontrol_new wm8750_diffmux_controls =
++SOC_DAPM_ENUM("Route", wm8750_enum[13]);
++
++/* Mono ADC Mux */
++static const struct snd_kcontrol_new wm8750_monomux_controls =
++SOC_DAPM_ENUM("Route", wm8750_enum[16]);
++
++static const struct snd_soc_dapm_widget wm8750_dapm_widgets[] = {
++ SND_SOC_DAPM_MIXER("Left Mixer", SND_SOC_NOPM, 0, 0,
++ &wm8750_left_mixer_controls[0],
++ ARRAY_SIZE(wm8750_left_mixer_controls)),
++ SND_SOC_DAPM_MIXER("Right Mixer", SND_SOC_NOPM, 0, 0,
++ &wm8750_right_mixer_controls[0],
++ ARRAY_SIZE(wm8750_right_mixer_controls)),
++ SND_SOC_DAPM_MIXER("Mono Mixer", WM8750_PWR2, 2, 0,
++ &wm8750_mono_mixer_controls[0],
++ ARRAY_SIZE(wm8750_mono_mixer_controls)),
++
++ SND_SOC_DAPM_PGA("Right Out 2", WM8750_PWR2, 3, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("Left Out 2", WM8750_PWR2, 4, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("Right Out 1", WM8750_PWR2, 5, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("Left Out 1", WM8750_PWR2, 6, 0, NULL, 0),
++ SND_SOC_DAPM_DAC("Right DAC", "Right Playback", WM8750_PWR2, 7, 0),
++ SND_SOC_DAPM_DAC("Left DAC", "Left Playback", WM8750_PWR2, 8, 0),
++
++ SND_SOC_DAPM_MICBIAS("Mic Bias", WM8750_PWR1, 1, 0),
++ SND_SOC_DAPM_ADC("Right ADC", "Right Capture", WM8750_PWR1, 2, 0),
++ SND_SOC_DAPM_ADC("Left ADC", "Left Capture", WM8750_PWR1, 3, 0),
++
++ SND_SOC_DAPM_MUX("Left PGA Mux", WM8750_PWR1, 5, 0,
++ &wm8750_left_pga_controls),
++ SND_SOC_DAPM_MUX("Right PGA Mux", WM8750_PWR1, 4, 0,
++ &wm8750_right_pga_controls),
++ SND_SOC_DAPM_MUX("Left Line Mux", SND_SOC_NOPM, 0, 0,
++ &wm8750_left_line_controls),
++ SND_SOC_DAPM_MUX("Right Line Mux", SND_SOC_NOPM, 0, 0,
++ &wm8750_right_line_controls),
++
++ SND_SOC_DAPM_MUX("Out3 Mux", SND_SOC_NOPM, 0, 0, &wm8750_out3_controls),
++ SND_SOC_DAPM_PGA("Out 3", WM8750_PWR2, 1, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("Mono Out 1", WM8750_PWR2, 2, 0, NULL, 0),
++
++ SND_SOC_DAPM_MUX("Differential Mux", SND_SOC_NOPM, 0, 0,
++ &wm8750_diffmux_controls),
++ SND_SOC_DAPM_MUX("Left ADC Mux", SND_SOC_NOPM, 0, 0,
++ &wm8750_monomux_controls),
++ SND_SOC_DAPM_MUX("Right ADC Mux", SND_SOC_NOPM, 0, 0,
++ &wm8750_monomux_controls),
++
++ SND_SOC_DAPM_OUTPUT("LOUT1"),
++ SND_SOC_DAPM_OUTPUT("ROUT1"),
++ SND_SOC_DAPM_OUTPUT("LOUT2"),
++ SND_SOC_DAPM_OUTPUT("ROUT2"),
++ SND_SOC_DAPM_OUTPUT("MONO"),
++ SND_SOC_DAPM_OUTPUT("OUT3"),
++
++ SND_SOC_DAPM_INPUT("LINPUT1"),
++ SND_SOC_DAPM_INPUT("LINPUT2"),
++ SND_SOC_DAPM_INPUT("LINPUT3"),
++ SND_SOC_DAPM_INPUT("RINPUT1"),
++ SND_SOC_DAPM_INPUT("RINPUT2"),
++ SND_SOC_DAPM_INPUT("RINPUT3"),
++};
++
++static const char *audio_map[][3] = {
++ /* left mixer */
++ {"Left Mixer", "Playback Switch", "Left DAC"},
++ {"Left Mixer", "Left Bypass Switch", "Left Line Mux"},
++ {"Left Mixer", "Right Playback Switch", "Right DAC"},
++ {"Left Mixer", "Right Bypass Switch", "Right Line Mux"},
++
++ /* right mixer */
++ {"Right Mixer", "Left Playback Switch", "Left DAC"},
++ {"Right Mixer", "Left Bypass Switch", "Left Line Mux"},
++ {"Right Mixer", "Playback Switch", "Right DAC"},
++ {"Right Mixer", "Right Bypass Switch", "Right Line Mux"},
++
++ /* left out 1 */
++ {"Left Out 1", NULL, "Left Mixer"},
++ {"LOUT1", NULL, "Left Out 1"},
++
++ /* left out 2 */
++ {"Left Out 2", NULL, "Left Mixer"},
++ {"LOUT2", NULL, "Left Out 2"},
++
++ /* right out 1 */
++ {"Right Out 1", NULL, "Right Mixer"},
++ {"ROUT1", NULL, "Right Out 1"},
++
++ /* right out 2 */
++ {"Right Out 2", NULL, "Right Mixer"},
++ {"ROUT2", NULL, "Right Out 2"},
++
++ /* mono mixer */
++ {"Mono Mixer", "Left Playback Switch", "Left DAC"},
++ {"Mono Mixer", "Left Bypass Switch", "Left Line Mux"},
++ {"Mono Mixer", "Right Playback Switch", "Right DAC"},
++ {"Mono Mixer", "Right Bypass Switch", "Right Line Mux"},
++
++ /* mono out */
++ {"Mono Out 1", NULL, "Mono Mixer"},
++ {"MONO1", NULL, "Mono Out 1"},
++
++ /* out 3 */
++ {"Out3 Mux", "VREF", "VREF"},
++ {"Out3 Mux", "ROUT1 + Vol", "ROUT1"},
++ {"Out3 Mux", "ROUT1", "Right Mixer"},
++ {"Out3 Mux", "MonoOut", "MONO1"},
++ {"Out 3", NULL, "Out3 Mux"},
++ {"OUT3", NULL, "Out 3"},
++
++ /* Left Line Mux */
++ {"Left Line Mux", "Line 1", "LINPUT1"},
++ {"Left Line Mux", "Line 2", "LINPUT2"},
++ {"Left Line Mux", "Line 3", "LINPUT3"},
++ {"Left Line Mux", "PGA", "Left PGA Mux"},
++ {"Left Line Mux", "Differential", "Differential Mux"},
++
++ /* Right Line Mux */
++ {"Right Line Mux", "Line 1", "RINPUT1"},
++ {"Right Line Mux", "Line 2", "RINPUT2"},
++ {"Right Line Mux", "Line 3", "RINPUT3"},
++ {"Right Line Mux", "PGA", "Right PGA Mux"},
++ {"Right Line Mux", "Differential", "Differential Mux"},
++
++ /* Left PGA Mux */
++ {"Left PGA Mux", "Line 1", "LINPUT1"},
++ {"Left PGA Mux", "Line 2", "LINPUT2"},
++ {"Left PGA Mux", "Line 3", "LINPUT3"},
++ {"Left PGA Mux", "Differential", "Differential Mux"},
++
++ /* Right PGA Mux */
++ {"Right PGA Mux", "Line 1", "RINPUT1"},
++ {"Right PGA Mux", "Line 2", "RINPUT2"},
++ {"Right PGA Mux", "Line 3", "RINPUT3"},
++ {"Right PGA Mux", "Differential", "Differential Mux"},
++
++ /* Differential Mux */
++ {"Differential Mux", "Line 1", "LINPUT1"},
++ {"Differential Mux", "Line 1", "RINPUT1"},
++ {"Differential Mux", "Line 2", "LINPUT2"},
++ {"Differential Mux", "Line 2", "RINPUT2"},
++
++ /* Left ADC Mux */
++ {"Left ADC Mux", "Stereo", "Left PGA Mux"},
++ {"Left ADC Mux", "Mono (Left)", "Left PGA Mux"},
++ {"Left ADC Mux", "Digital Mono", "Left PGA Mux"},
++
++ /* Right ADC Mux */
++ {"Right ADC Mux", "Stereo", "Right PGA Mux"},
++ {"Right ADC Mux", "Mono (Right)", "Right PGA Mux"},
++ {"Right ADC Mux", "Digital Mono", "Right PGA Mux"},
++
++ /* ADC */
++ {"Left ADC", NULL, "Left ADC Mux"},
++ {"Right ADC", NULL, "Right ADC Mux"},
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int wm8750_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(wm8750_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm8750_dapm_widgets[i]);
++ }
++
++ /* set up 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]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++struct _coeff_div {
++ u32 mclk;
++ u32 rate;
++ u16 fs;
++ u8 sr:5;
++ u8 usb:1;
++};
++
++/* codec hifi mclk clock divider coefficients */
++static const struct _coeff_div coeff_div[] = {
++ /* 8k */
++ {12288000, 8000, 1536, 0x6, 0x0},
++ {11289600, 8000, 1408, 0x16, 0x0},
++ {18432000, 8000, 2304, 0x7, 0x0},
++ {16934400, 8000, 2112, 0x17, 0x0},
++ {12000000, 8000, 1500, 0x6, 0x1},
++
++ /* 11.025k */
++ {11289600, 11025, 1024, 0x18, 0x0},
++ {16934400, 11025, 1536, 0x19, 0x0},
++ {12000000, 11025, 1088, 0x19, 0x1},
++
++ /* 16k */
++ {12288000, 16000, 768, 0xa, 0x0},
++ {18432000, 16000, 1152, 0xb, 0x0},
++ {12000000, 16000, 750, 0xa, 0x1},
++
++ /* 22.05k */
++ {11289600, 22050, 512, 0x1a, 0x0},
++ {16934400, 22050, 768, 0x1b, 0x0},
++ {12000000, 22050, 544, 0x1b, 0x1},
++
++ /* 32k */
++ {12288000, 32000, 384, 0xc, 0x0},
++ {18432000, 32000, 576, 0xd, 0x0},
++ {12000000, 32000, 375, 0xa, 0x1},
++
++ /* 44.1k */
++ {11289600, 44100, 256, 0x10, 0x0},
++ {16934400, 44100, 384, 0x11, 0x0},
++ {12000000, 44100, 272, 0x11, 0x1},
++
++ /* 48k */
++ {12288000, 48000, 256, 0x0, 0x0},
++ {18432000, 48000, 384, 0x1, 0x0},
++ {12000000, 48000, 250, 0x0, 0x1},
++
++ /* 88.2k */
++ {11289600, 88200, 128, 0x1e, 0x0},
++ {16934400, 88200, 192, 0x1f, 0x0},
++ {12000000, 88200, 136, 0x1f, 0x1},
++
++ /* 96k */
++ {12288000, 96000, 128, 0xe, 0x0},
++ {18432000, 96000, 192, 0xf, 0x0},
++ {12000000, 96000, 125, 0xe, 0x1},
++};
++
++static inline int get_coeff(int mclk, int rate)
++{
++ int i;
++
++ for (i = 0; i < ARRAY_SIZE(coeff_div); i++) {
++ if (coeff_div[i].rate == rate && coeff_div[i].mclk == mclk)
++ return i;
++ }
++
++ printk(KERN_ERR "wm8750: could not get coeff for mclk %d @ rate %d\n",
++ mclk, rate);
++ return -EINVAL;
++}
++
++/* WM8750 supports numerous input clocks per sample rate */
++static unsigned int wm8750_config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ dai->mclk = clk;
++ return dai->mclk;
++}
++
++static int wm8750_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 iface = 0, bfs, srate = 0;
++ int i = get_coeff(rtd->codec_dai->mclk,
++ snd_soc_get_rate(rtd->codec_dai->dai_runtime.pcmrate));
++
++ /* is coefficient valid ? */
++ if (i < 0)
++ return i;
++
++ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
++
++ /* set master/slave audio interface */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ iface = 0x0040;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ break;
++ }
++
++ /* interface format */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ iface |= 0x0002;
++ break;
++ case SND_SOC_DAIFMT_RIGHT_J:
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ iface |= 0x0001;
++ break;
++ case SND_SOC_DAIFMT_DSP_A:
++ iface |= 0x0003;
++ break;
++ case SND_SOC_DAIFMT_DSP_B:
++ iface |= 0x0013;
++ break;
++ }
++
++ /* bit size */
++ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ iface |= 0x0004;
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ iface |= 0x0008;
++ break;
++ case SNDRV_PCM_FMTBIT_S32_LE:
++ iface |= 0x000c;
++ break;
++ }
++
++ /* clock inversion */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_IF:
++ iface |= 0x0090;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ iface |= 0x0080;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ iface |= 0x0010;
++ break;
++ }
++
++ /* set bclk divisor rate */
++ switch (bfs) {
++ case 1:
++ break;
++ case 4:
++ srate |= (0x1 << 7);
++ break;
++ case 8:
++ srate |= (0x2 << 7);
++ break;
++ case 16:
++ srate |= (0x3 << 7);
++ break;
++ }
++
++ /* set iface & srate */
++ wm8750_write(codec, WM8750_IFACE, iface);
++ wm8750_write(codec, WM8750_SRATE, srate |
++ (coeff_div[i].sr << 1) | coeff_div[i].usb);
++
++ return 0;
++}
++
++static int wm8750_mute(struct snd_soc_codec *codec,
++ struct snd_soc_codec_dai *dai, int mute)
++{
++ u16 mute_reg = wm8750_read_reg_cache(codec, WM8750_ADCDAC) & 0xfff7;
++ if (mute)
++ wm8750_write(codec, WM8750_ADCDAC, mute_reg | 0x8);
++ else
++ wm8750_write(codec, WM8750_ADCDAC, mute_reg);
++ return 0;
++}
++
++static int wm8750_dapm_event(struct snd_soc_codec *codec, int event)
++{
++ u16 pwr_reg = wm8750_read_reg_cache(codec, WM8750_PWR1) & 0xfe3e;
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ /* set vmid to 50k and unmute dac */
++ wm8750_write(codec, WM8750_PWR1, pwr_reg | 0x00c0);
++ break;
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ /* set vmid to 5k for quick power up */
++ wm8750_write(codec, WM8750_PWR1, pwr_reg | 0x01c1);
++ break;
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* mute dac and set vmid to 500k, enable VREF */
++ wm8750_write(codec, WM8750_PWR1, pwr_reg | 0x0141);
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ wm8750_write(codec, WM8750_PWR1, 0x0001);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++struct snd_soc_codec_dai wm8750_dai = {
++ .name = "WM8750",
++ .playback = {
++ .stream_name = "Playback",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .capture = {
++ .stream_name = "Capture",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .config_sysclk = wm8750_config_sysclk,
++ .digital_mute = wm8750_mute,
++ .ops = {
++ .prepare = wm8750_pcm_prepare,
++ },
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8750_modes),
++ .mode = wm8750_modes,
++ },
++};
++EXPORT_SYMBOL_GPL(wm8750_dai);
++
++static void wm8750_work(void *data)
++{
++ struct snd_soc_codec *codec = (struct snd_soc_codec *)data;
++ wm8750_dapm_event(codec, codec->dapm_state);
++}
++
++static int wm8750_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ wm8750_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int wm8750_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++ u8 data[2];
++ u16 *cache = codec->reg_cache;
++
++ /* Sync reg_cache with the hardware */
++ for (i = 0; i < ARRAY_SIZE(wm8750_reg); i++) {
++ if (i == WM8750_RESET)
++ continue;
++ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
++ data[1] = cache[i] & 0x00ff;
++ codec->hw_write(codec->control_data, data, 2);
++ }
++
++ wm8750_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++
++ /* charge wm8750 caps */
++ if (codec->suspend_dapm_state == SNDRV_CTL_POWER_D0) {
++ wm8750_dapm_event(codec, SNDRV_CTL_POWER_D2);
++ codec->dapm_state = SNDRV_CTL_POWER_D0;
++ queue_delayed_work(wm8750_workq, &wm8750_dapm_work,
++ msecs_to_jiffies(1000));
++ }
++
++ return 0;
++}
++
++/*
++ * initialise the WM8750 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int wm8750_init(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int reg, ret = 0;
++
++ codec->name = "WM8750";
++ codec->owner = THIS_MODULE;
++ codec->read = wm8750_read_reg_cache;
++ codec->write = wm8750_write;
++ codec->dapm_event = wm8750_dapm_event;
++ codec->dai = &wm8750_dai;
++ codec->num_dai = 1;
++ codec->reg_cache_size = ARRAY_SIZE(wm8750_reg);
++
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8750_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL)
++ return -ENOMEM;
++ memcpy(codec->reg_cache, wm8750_reg,
++ sizeof(u16) * ARRAY_SIZE(wm8750_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8750_reg);
++
++ wm8750_reset(codec);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if (ret < 0) {
++ kfree(codec->reg_cache);
++ return ret;
++ }
++
++ /* charge output caps */
++ wm8750_dapm_event(codec, SNDRV_CTL_POWER_D2);
++ codec->dapm_state = SNDRV_CTL_POWER_D3hot;
++ queue_delayed_work(wm8750_workq, &wm8750_dapm_work,
++ msecs_to_jiffies(1000));
++
++ /* set the update bits */
++ reg = wm8750_read_reg_cache(codec, WM8750_LDAC);
++ wm8750_write(codec, WM8750_LDAC, reg | 0x0100);
++ reg = wm8750_read_reg_cache(codec, WM8750_RDAC);
++ wm8750_write(codec, WM8750_RDAC, reg | 0x0100);
++ reg = wm8750_read_reg_cache(codec, WM8750_LOUT1V);
++ wm8750_write(codec, WM8750_LOUT1V, reg | 0x0100);
++ reg = wm8750_read_reg_cache(codec, WM8750_ROUT1V);
++ wm8750_write(codec, WM8750_ROUT1V, reg | 0x0100);
++ reg = wm8750_read_reg_cache(codec, WM8750_LOUT2V);
++ wm8750_write(codec, WM8750_LOUT2V, reg | 0x0100);
++ reg = wm8750_read_reg_cache(codec, WM8750_ROUT2V);
++ wm8750_write(codec, WM8750_ROUT2V, reg | 0x0100);
++ reg = wm8750_read_reg_cache(codec, WM8750_LINVOL);
++ wm8750_write(codec, WM8750_LINVOL, reg | 0x0100);
++ reg = wm8750_read_reg_cache(codec, WM8750_RINVOL);
++ wm8750_write(codec, WM8750_RINVOL, reg | 0x0100);
++
++ wm8750_add_controls(codec);
++ wm8750_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if (ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++/* If the i2c layer weren't so broken, we could pass this kind of data
++ around */
++static struct snd_soc_device *wm8750_socdev;
++
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++
++/*
++ * WM8731 2 wire address is determined by GPIO5
++ * state during powerup.
++ * low = 0x1a
++ * high = 0x1b
++ */
++static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
++
++/* Magic definition of all other variables and things */
++I2C_CLIENT_INSMOD;
++
++static struct i2c_driver wm8750_i2c_driver;
++static struct i2c_client client_template;
++
++static int wm8750_codec_probe(struct i2c_adapter *adap, int addr, int kind)
++{
++ struct snd_soc_device *socdev = wm8750_socdev;
++ struct wm8750_setup_data *setup = socdev->codec_data;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct i2c_client *i2c;
++ int ret;
++
++ if (addr != setup->i2c_address)
++ return -ENODEV;
++
++ client_template.adapter = adap;
++ client_template.addr = addr;
++
++ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
++ if (i2c == NULL) {
++ kfree(codec);
++ return -ENOMEM;
++ }
++ memcpy(i2c, &client_template, sizeof(struct i2c_client));
++ i2c_set_clientdata(i2c, codec);
++ codec->control_data = i2c;
++
++ ret = i2c_attach_client(i2c);
++ if (ret < 0) {
++ err("failed to attach codec at addr %x\n", addr);
++ goto err;
++ }
++
++ ret = wm8750_init(socdev);
++ if (ret < 0) {
++ err("failed to initialise WM8750\n");
++ goto err;
++ }
++ return ret;
++
++err:
++ kfree(codec);
++ kfree(i2c);
++ return ret;
++}
++
++static int wm8750_i2c_detach(struct i2c_client *client)
++{
++ struct snd_soc_codec *codec = i2c_get_clientdata(client);
++ i2c_detach_client(client);
++ kfree(codec->reg_cache);
++ kfree(client);
++ return 0;
++}
++
++static int wm8750_i2c_attach(struct i2c_adapter *adap)
++{
++ return i2c_probe(adap, &addr_data, wm8750_codec_probe);
++}
++
++/* corgi i2c codec control layer */
++static struct i2c_driver wm8750_i2c_driver = {
++ .driver = {
++ .name = "WM8750 I2C Codec",
++ .owner = THIS_MODULE,
++ },
++ .id = I2C_DRIVERID_WM8750,
++ .attach_adapter = wm8750_i2c_attach,
++ .detach_client = wm8750_i2c_detach,
++ .command = NULL,
++};
++
++static struct i2c_client client_template = {
++ .name = "WM8750",
++ .driver = &wm8750_i2c_driver,
++};
++#endif
++
++static int wm8750_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct wm8750_setup_data *setup = socdev->codec_data;
++ struct snd_soc_codec *codec;
++ int ret = 0;
++
++ info("WM8750 Audio Codec %s", WM8750_VERSION);
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++ wm8750_socdev = socdev;
++ INIT_WORK(&wm8750_dapm_work, wm8750_work, codec);
++ wm8750_workq = create_workqueue("wm8750");
++ if (wm8750_workq == NULL) {
++ kfree(codec);
++ return -ENOMEM;
++ }
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ if (setup->i2c_address) {
++ normal_i2c[0] = setup->i2c_address;
++ codec->hw_write = (hw_write_t)i2c_master_send;
++ ret = i2c_add_driver(&wm8750_i2c_driver);
++ if (ret != 0)
++ printk(KERN_ERR "can't add i2c driver");
++ }
++#else
++ /* Add other interfaces here */
++#endif
++
++ return ret;
++}
++
++/* power down chip */
++static int wm8750_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if (codec->control_data)
++ wm8750_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ if (wm8750_workq)
++ destroy_workqueue(wm8750_workq);
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ i2c_del_driver(&wm8750_i2c_driver);
++#endif
++ kfree(codec);
++
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_wm8750 = {
++ .probe = wm8750_probe,
++ .remove = wm8750_remove,
++ .suspend = wm8750_suspend,
++ .resume = wm8750_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_wm8750);
++
++MODULE_DESCRIPTION("ASoC WM8750 driver");
++MODULE_AUTHOR("Liam Girdwood");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8750.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8750.h
+@@ -0,0 +1,66 @@
++/*
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Author: Richard Purdie <richard@openedhand.com>
++ *
++ * Based on WM8753.h
++ *
++ * 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.
++ *
++ */
++
++#ifndef _WM8750_H
++#define _WM8750_H
++
++/* WM8750 register space */
++
++#define WM8750_LINVOL 0x00
++#define WM8750_RINVOL 0x01
++#define WM8750_LOUT1V 0x02
++#define WM8750_ROUT1V 0x03
++#define WM8750_ADCDAC 0x05
++#define WM8750_IFACE 0x07
++#define WM8750_SRATE 0x08
++#define WM8750_LDAC 0x0a
++#define WM8750_RDAC 0x0b
++#define WM8750_BASS 0x0c
++#define WM8750_TREBLE 0x0d
++#define WM8750_RESET 0x0f
++#define WM8750_3D 0x10
++#define WM8750_ALC1 0x11
++#define WM8750_ALC2 0x12
++#define WM8750_ALC3 0x13
++#define WM8750_NGATE 0x14
++#define WM8750_LADC 0x15
++#define WM8750_RADC 0x16
++#define WM8750_ADCTL1 0x17
++#define WM8750_ADCTL2 0x18
++#define WM8750_PWR1 0x19
++#define WM8750_PWR2 0x1a
++#define WM8750_ADCTL3 0x1b
++#define WM8750_ADCIN 0x1f
++#define WM8750_LADCIN 0x20
++#define WM8750_RADCIN 0x21
++#define WM8750_LOUTM1 0x22
++#define WM8750_LOUTM2 0x23
++#define WM8750_ROUTM1 0x24
++#define WM8750_ROUTM2 0x25
++#define WM8750_MOUTM1 0x26
++#define WM8750_MOUTM2 0x27
++#define WM8750_LOUT2V 0x28
++#define WM8750_ROUT2V 0x29
++#define WM8750_MOUTV 0x2a
++
++#define WM8750_CACHE_REGNUM 0x2a
++
++struct wm8750_setup_data {
++ unsigned short i2c_address;
++ unsigned int mclk;
++};
++
++extern struct snd_soc_codec_dai wm8750_dai;
++extern struct snd_soc_codec_device soc_codec_dev_wm8750;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8753.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8753.c
+@@ -0,0 +1,2128 @@
++/*
++ * wm8753.c -- WM8753 ALSA Soc Audio driver
++ *
++ * Copyright 2003 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or 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.
++ *
++ * Notes:
++ * The WM8753 is a low power, high quality stereo codec with integrated PCM
++ * codec designed for portable digital telephony applications.
++ *
++ * Dual DAI:-
++ *
++ * This driver support 2 DAI PCM's. This makes the default PCM available for
++ * HiFi audio (e.g. MP3, ogg) playback/capture and the other PCM available for
++ * voice.
++ *
++ * Please note that the voice PCM can be connected directly to a Bluetooth
++ * codec or GSM modem and thus cannot be read or written to, although it is
++ * available to be configured with snd_hw_params(), etc and kcontrols in the
++ * normal alsa manner.
++ *
++ * Fast DAI switching:-
++ *
++ * The driver can now fast switch between the DAI configurations via a
++ * an alsa kcontrol. This allows the PCM to remain open.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/version.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/i2c.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++
++#include "wm8753.h"
++
++#define AUDIO_NAME "wm8753"
++#define WM8753_VERSION "0.16"
++
++/*
++ * Debug
++ */
++
++#define WM8753_DEBUG 0
++
++#ifdef WM8753_DEBUG
++#define dbg(format, arg...) \
++ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
++#else
++#define dbg(format, arg...) do {} while (0)
++#endif
++#define err(format, arg...) \
++ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
++#define info(format, arg...) \
++ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
++#define warn(format, arg...) \
++ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
++
++static int caps_charge = 2000;
++module_param(caps_charge, int, 0);
++MODULE_PARM_DESC(caps_charge, "WM8753 cap charge time (msecs)");
++
++static struct workqueue_struct *wm8753_workq = NULL;
++static struct work_struct wm8753_dapm_work;
++static void wm8753_set_dai_mode(struct snd_soc_codec *codec,
++ unsigned int mode);
++
++/*
++ * wm8753 register cache
++ * We can't read the WM8753 register space when we
++ * are using 2 wire for device control, so we cache them instead.
++ */
++static const u16 wm8753_reg[] = {
++ 0x0008, 0x0000, 0x000a, 0x000a,
++ 0x0033, 0x0000, 0x0007, 0x00ff,
++ 0x00ff, 0x000f, 0x000f, 0x007b,
++ 0x0000, 0x0032, 0x0000, 0x00c3,
++ 0x00c3, 0x00c0, 0x0000, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x0055,
++ 0x0005, 0x0050, 0x0055, 0x0050,
++ 0x0055, 0x0050, 0x0055, 0x0079,
++ 0x0079, 0x0079, 0x0079, 0x0079,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0097, 0x0097, 0x0000, 0x0004,
++ 0x0000, 0x0083, 0x0024, 0x01ba,
++ 0x0000, 0x0083, 0x0024, 0x01ba,
++ 0x0000, 0x0000
++};
++
++#define WM8753_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
++ SND_SOC_DAIFMT_DSP_A | SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_NB_NF | \
++ SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_IB_IF)
++
++#define WM8753_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define WM8753_HIFI_FSB \
++ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
++ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
++
++#define WM8753_HIFI_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 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
++
++#define WM8753_HIFI_BITS \
++ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
++ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
++
++/*
++ * HiFi modes
++ */
++static struct snd_soc_dai_mode wm8753_hifi_modes[] = {
++ /* codec frame and clock master modes */
++ /* 8k */
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1536,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1408,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 2304,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 2112,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1500,
++ .bfs = WM8753_HIFI_FSB,
++ },
++
++ /* 11.025k */
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_11025,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1024,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_11025,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1536,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_11025,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1088,
++ .bfs = WM8753_HIFI_FSB,
++ },
++
++ /* 16k */
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_16000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 768,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt= WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_16000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1152,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_16000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 750,
++ .bfs = WM8753_HIFI_FSB,
++ },
++
++ /* 22.05k */
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_22050,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 512,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_22050,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 768,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_22050,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 544,
++ .bfs = WM8753_HIFI_FSB,
++ },
++
++ /* 32k */
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 384,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 576,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 375,
++ .bfs = WM8753_HIFI_FSB,
++ },
++
++ /* 44.1k & 48k */
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 384,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 250,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 272,
++ .bfs = WM8753_HIFI_FSB,
++ },
++
++ /* 88.2k & 96k */
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 128,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 192,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 136,
++ .bfs = WM8753_HIFI_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 125,
++ .bfs = WM8753_HIFI_FSB,
++ },
++
++ /* codec frame and clock slave modes */
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = WM8753_HIFI_RATES,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++};
++
++#define WM8753_VOICE_FSB \
++ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
++ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
++
++#define WM8753_VOICE_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 | \
++ SNDRV_PCM_RATE_48000)
++
++#define WM8753_VOICE_BITS \
++ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
++ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
++
++/*
++ * Voice modes
++ */
++static struct snd_soc_dai_mode wm8753_voice_modes[] = {
++
++ /* master modes */
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_VOICE_BITS,
++ .pcmrate = WM8753_VOICE_RATES,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = WM8753_VOICE_FSB,
++ },
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM8753_VOICE_BITS,
++ .pcmrate = WM8753_VOICE_RATES,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 384,
++ .bfs = WM8753_VOICE_FSB,
++ },
++
++ /* slave modes */
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = WM8753_VOICE_BITS,
++ .pcmrate = WM8753_VOICE_RATES,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++};
++
++
++/*
++ * Mode 4
++ */
++static struct snd_soc_dai_mode wm8753_mixed_modes[] = {
++ /* slave modes */
++ {
++ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = WM8753_HIFI_BITS,
++ .pcmrate = WM8753_HIFI_RATES,
++ .pcmdir = WM8753_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++};
++
++/*
++ * read wm8753 register cache
++ */
++static inline unsigned int wm8753_read_reg_cache(struct snd_soc_codec *codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg < 1 || reg > (ARRAY_SIZE(wm8753_reg) + 1))
++ return -1;
++ return cache[reg - 1];
++}
++
++/*
++ * write wm8753 register cache
++ */
++static inline void wm8753_write_reg_cache(struct snd_soc_codec *codec,
++ unsigned int reg, unsigned int value)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg < 1 || reg > 0x3f)
++ return;
++ cache[reg - 1] = value;
++}
++
++/*
++ * write to the WM8753 register space
++ */
++static int wm8753_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int value)
++{
++ u8 data[2];
++
++ /* data is
++ * D15..D9 WM8753 register offset
++ * D8...D0 register data
++ */
++ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
++ data[1] = value & 0x00ff;
++
++ wm8753_write_reg_cache (codec, reg, value);
++ if (codec->hw_write(codec->control_data, data, 2) == 2)
++ return 0;
++ else
++ return -EIO;
++}
++
++#define wm8753_reset(c) wm8753_write(c, WM8753_RESET, 0)
++
++/*
++ * WM8753 Controls
++ */
++static const char *wm8753_base[] = {"Linear Control", "Adaptive Boost"};
++static const char *wm8753_base_filter[] =
++ {"130Hz @ 48kHz", "200Hz @ 48kHz", "100Hz @ 16kHz", "400Hz @ 48kHz",
++ "100Hz @ 8kHz", "200Hz @ 8kHz"};
++static const char *wm8753_treble[] = {"8kHz", "4kHz"};
++static const char *wm8753_alc_func[] = {"Off", "Right", "Left", "Stereo"};
++static const char *wm8753_ng_type[] = {"Constant PGA Gain", "Mute ADC Output"};
++static const char *wm8753_3d_func[] = {"Capture", "Playback"};
++static const char *wm8753_3d_uc[] = {"2.2kHz", "1.5kHz"};
++static const char *wm8753_3d_lc[] = {"200Hz", "500Hz"};
++static const char *wm8753_deemp[] = {"None", "32kHz", "44.1kHz", "48kHz"};
++static const char *wm8753_mono_mix[] = {"Stereo", "Left", "Right", "Mono"};
++static const char *wm8753_dac_phase[] = {"Non Inverted", "Inverted"};
++static const char *wm8753_line_mix[] = {"Line 1 + 2", "Line 1 - 2",
++ "Line 1", "Line 2"};
++static const char *wm8753_mono_mux[] = {"Line Mix", "Rx Mix"};
++static const char *wm8753_right_mux[] = {"Line 2", "Rx Mix"};
++static const char *wm8753_left_mux[] = {"Line 1", "Rx Mix"};
++static const char *wm8753_rxmsel[] = {"RXP - RXN", "RXP + RXN", "RXP", "RXN"};
++static const char *wm8753_sidetone_mux[] = {"Left PGA", "Mic 1", "Mic 2",
++ "Right PGA"};
++static const char *wm8753_mono2_src[] = {"Inverted Mono 1", "Left", "Right",
++ "Left + Right"};
++static const char *wm8753_out3[] = {"VREF", "ROUT2", "Left + Right"};
++static const char *wm8753_out4[] = {"VREF", "Capture ST", "LOUT2"};
++static const char *wm8753_radcsel[] = {"PGA", "Line or RXP-RXN", "Sidetone"};
++static const char *wm8753_ladcsel[] = {"PGA", "Line or RXP-RXN", "Line"};
++static const char *wm8753_mono_adc[] = {"Stereo", "Analogue Mix Left",
++ "Analogue Mix Right", "Digital Mono Mix"};
++static const char *wm8753_adc_hp[] = {"3.4Hz @ 48kHz", "82Hz @ 16k",
++ "82Hz @ 8kHz", "170Hz @ 8kHz"};
++static const char *wm8753_adc_filter[] = {"HiFi", "Voice"};
++static const char *wm8753_mic_sel[] = {"Mic 1", "Mic 2", "Mic 3"};
++static const char *wm8753_dai_mode[] = {"DAI 0", "DAI 1", "DAI 2", "DAI 3"};
++
++static const struct soc_enum wm8753_enum[] = {
++SOC_ENUM_SINGLE(WM8753_BASS, 7, 2, wm8753_base), // 0
++SOC_ENUM_SINGLE(WM8753_BASS, 4, 6, wm8753_base_filter), // 1
++SOC_ENUM_SINGLE(WM8753_TREBLE, 6, 2, wm8753_treble), // 2
++SOC_ENUM_SINGLE(WM8753_ALC1, 7, 4, wm8753_alc_func), // 3
++SOC_ENUM_SINGLE(WM8753_NGATE, 1, 2, wm8753_ng_type), // 4
++SOC_ENUM_SINGLE(WM8753_3D, 7, 2, wm8753_3d_func), // 5
++SOC_ENUM_SINGLE(WM8753_3D, 6, 2, wm8753_3d_uc), // 6
++SOC_ENUM_SINGLE(WM8753_3D, 5, 2, wm8753_3d_lc), // 7
++SOC_ENUM_SINGLE(WM8753_DAC, 1, 4, wm8753_deemp), // 8
++SOC_ENUM_SINGLE(WM8753_DAC, 4, 4, wm8753_mono_mix), // 9
++SOC_ENUM_SINGLE(WM8753_DAC, 6, 2, wm8753_dac_phase), // 10
++SOC_ENUM_SINGLE(WM8753_INCTL1, 3, 4, wm8753_line_mix), // 11
++SOC_ENUM_SINGLE(WM8753_INCTL1, 2, 2, wm8753_mono_mux), // 12
++SOC_ENUM_SINGLE(WM8753_INCTL1, 1, 2, wm8753_right_mux), // 13
++SOC_ENUM_SINGLE(WM8753_INCTL1, 0, 2, wm8753_left_mux), // 14
++SOC_ENUM_SINGLE(WM8753_INCTL2, 6, 4, wm8753_rxmsel), // 15
++SOC_ENUM_SINGLE(WM8753_INCTL2, 4, 4, wm8753_sidetone_mux),// 16
++SOC_ENUM_SINGLE(WM8753_OUTCTL, 7, 4, wm8753_mono2_src), // 17
++SOC_ENUM_SINGLE(WM8753_OUTCTL, 0, 3, wm8753_out3), // 18
++SOC_ENUM_SINGLE(WM8753_ADCTL2, 7, 3, wm8753_out4), // 19
++SOC_ENUM_SINGLE(WM8753_ADCIN, 2, 3, wm8753_radcsel), // 20
++SOC_ENUM_SINGLE(WM8753_ADCIN, 0, 3, wm8753_ladcsel), // 21
++SOC_ENUM_SINGLE(WM8753_ADCIN, 4, 4, wm8753_mono_adc), // 22
++SOC_ENUM_SINGLE(WM8753_ADC, 2, 4, wm8753_adc_hp), // 23
++SOC_ENUM_SINGLE(WM8753_ADC, 4, 2, wm8753_adc_filter), // 24
++SOC_ENUM_SINGLE(WM8753_MICBIAS, 6, 3, wm8753_mic_sel), // 25
++SOC_ENUM_SINGLE(WM8753_IOCTL, 2, 4, wm8753_dai_mode), // 26
++};
++
++
++static int wm8753_get_dai(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ int mode = wm8753_read_reg_cache(codec, WM8753_IOCTL);
++
++ ucontrol->value.integer.value[0] = (mode & 0xc) >> 2;
++ return 0;
++}
++
++static int wm8753_set_dai(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ int mode = wm8753_read_reg_cache(codec, WM8753_IOCTL);
++
++ if (((mode &0xc) >> 2) == ucontrol->value.integer.value[0])
++ return 0;
++
++ mode &= 0xfff3;
++ mode |= (ucontrol->value.integer.value[0] << 2);
++
++ wm8753_write(codec, WM8753_IOCTL, mode);
++ wm8753_set_dai_mode(codec, ucontrol->value.integer.value[0]);
++ return 1;
++}
++
++static const struct snd_kcontrol_new wm8753_snd_controls[] = {
++SOC_DOUBLE_R("PCM Volume", WM8753_LDAC, WM8753_RDAC, 0, 255, 0),
++
++SOC_DOUBLE_R("ADC Capture Volume", WM8753_LADC, WM8753_RADC, 0, 63, 0),
++SOC_DOUBLE_R("ADC Capture Switch", WM8753_LINVOL, WM8753_RINVOL, 7, 1, 0),
++SOC_DOUBLE_R("ADC Capture ZC Switch", WM8753_LINVOL, WM8753_RINVOL, 6, 1, 0),
++
++SOC_DOUBLE_R("Headphone Playback Volume", WM8753_LOUT1V, WM8753_ROUT1V, 0, 127, 0),
++SOC_DOUBLE_R("Speaker Playback Volume", WM8753_LOUT2V, WM8753_ROUT2V, 0, 127, 0),
++
++SOC_SINGLE("Mono Playback Volume", WM8753_MOUTV, 0, 127, 0),
++
++SOC_DOUBLE_R("Bypass Playback Volume", WM8753_LOUTM1, WM8753_ROUTM1, 4, 7, 1),
++SOC_DOUBLE_R("Sidetone Playback Volume", WM8753_LOUTM2, WM8753_ROUTM2, 4, 7, 1),
++SOC_DOUBLE_R("Voice Playback Volume", WM8753_LOUTM2, WM8753_ROUTM2, 0, 7, 1),
++
++SOC_DOUBLE_R("Headphone Playback ZC Switch", WM8753_LOUT1V, WM8753_ROUT1V, 7, 1, 0),
++SOC_DOUBLE_R("Speaker Playback ZC Switch", WM8753_LOUT2V, WM8753_ROUT2V, 7, 1, 0),
++
++SOC_SINGLE("Mono Bypass Playback Volume", WM8753_MOUTM1, 4, 7, 1),
++SOC_SINGLE("Mono Sidetone Playback Volume", WM8753_MOUTM2, 4, 7, 1),
++SOC_SINGLE("Mono Voice Playback Volume", WM8753_MOUTM2, 4, 7, 1),
++SOC_SINGLE("Mono Playback ZC Switch", WM8753_MOUTV, 7, 1, 0),
++
++SOC_ENUM("Bass Boost", wm8753_enum[0]),
++SOC_ENUM("Bass Filter", wm8753_enum[1]),
++SOC_SINGLE("Bass Volume", WM8753_BASS, 0, 7, 1),
++
++SOC_SINGLE("Treble Volume", WM8753_TREBLE, 0, 7, 0),
++SOC_ENUM("Treble Cut-off", wm8753_enum[2]),
++
++SOC_DOUBLE("Sidetone Capture Volume", WM8753_RECMIX1, 0, 4, 7, 1),
++SOC_SINGLE("Voice Sidetone Capture Volume", WM8753_RECMIX2, 0, 7, 1),
++
++SOC_DOUBLE_R("Capture Volume", WM8753_LINVOL, WM8753_RINVOL, 0, 63, 0),
++SOC_DOUBLE_R("Capture ZC Switch", WM8753_LINVOL, WM8753_RINVOL, 6, 1, 0),
++SOC_DOUBLE_R("Capture Switch", WM8753_LINVOL, WM8753_RINVOL, 7, 1, 0),
++
++SOC_ENUM("Capture Filter Select", wm8753_enum[23]),
++SOC_ENUM("Capture Filter Cut-off", wm8753_enum[24]),
++SOC_SINGLE("Capture Filter Switch", WM8753_ADC, 0, 1, 1),
++
++SOC_SINGLE("ALC Capture Target Volume", WM8753_ALC1, 0, 7, 0),
++SOC_SINGLE("ALC Capture Max Volume", WM8753_ALC1, 4, 7, 0),
++SOC_ENUM("ALC Capture Function", wm8753_enum[3]),
++SOC_SINGLE("ALC Capture ZC Switch", WM8753_ALC2, 8, 1, 0),
++SOC_SINGLE("ALC Capture Hold Time", WM8753_ALC2, 0, 15, 1),
++SOC_SINGLE("ALC Capture Decay Time", WM8753_ALC3, 4, 15, 1),
++SOC_SINGLE("ALC Capture Attack Time", WM8753_ALC3, 0, 15, 0),
++SOC_SINGLE("ALC Capture NG Threshold", WM8753_NGATE, 3, 31, 0),
++SOC_ENUM("ALC Capture NG Type", wm8753_enum[4]),
++SOC_SINGLE("ALC Capture NG Switch", WM8753_NGATE, 0, 1, 0),
++
++SOC_ENUM("3D Function", wm8753_enum[5]),
++SOC_ENUM("3D Upper Cut-off", wm8753_enum[6]),
++SOC_ENUM("3D Lower Cut-off", wm8753_enum[7]),
++SOC_SINGLE("3D Volume", WM8753_3D, 1, 15, 0),
++SOC_SINGLE("3D Switch", WM8753_3D, 0, 1, 0),
++
++SOC_SINGLE("Capture 6dB Attenuate", WM8753_ADCTL1, 2, 1, 0),
++SOC_SINGLE("Playback 6dB Attenuate", WM8753_ADCTL1, 1, 1, 0),
++
++SOC_ENUM("De-emphasis", wm8753_enum[8]),
++SOC_ENUM("Playback Mono Mix", wm8753_enum[9]),
++SOC_ENUM("Playback Phase", wm8753_enum[10]),
++
++SOC_SINGLE("Mic2 Capture Volume", WM8753_INCTL1, 7, 3, 0),
++SOC_SINGLE("Mic1 Capture Volume", WM8753_INCTL1, 5, 3, 0),
++
++SOC_ENUM_EXT("DAI Mode", wm8753_enum[26], wm8753_get_dai, wm8753_set_dai),
++};
++
++/* add non dapm controls */
++static int wm8753_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(wm8753_snd_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8753_snd_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++ return 0;
++}
++
++/*
++ * _DAPM_ Controls
++ */
++
++/* Left Mixer */
++static const struct snd_kcontrol_new wm8753_left_mixer_controls[] = {
++SOC_DAPM_SINGLE("Voice Playback Switch", WM8753_LOUTM2, 8, 1, 0),
++SOC_DAPM_SINGLE("Sidetone Playback Switch", WM8753_LOUTM2, 7, 1, 0),
++SOC_DAPM_SINGLE("Left Playback Switch", WM8753_LOUTM1, 8, 1, 0),
++SOC_DAPM_SINGLE("Bypass Playback Switch", WM8753_LOUTM1, 7, 1, 0),
++};
++
++/* Right mixer */
++static const struct snd_kcontrol_new wm8753_right_mixer_controls[] = {
++SOC_DAPM_SINGLE("Voice Playback Switch", WM8753_ROUTM2, 8, 1, 0),
++SOC_DAPM_SINGLE("Sidetone Playback Switch", WM8753_ROUTM2, 7, 1, 0),
++SOC_DAPM_SINGLE("Right Playback Switch", WM8753_ROUTM1, 8, 1, 0),
++SOC_DAPM_SINGLE("Bypass Playback Switch", WM8753_ROUTM1, 7, 1, 0),
++};
++
++/* Mono mixer */
++static const struct snd_kcontrol_new wm8753_mono_mixer_controls[] = {
++SOC_DAPM_SINGLE("Left Playback Switch", WM8753_MOUTM1, 8, 1, 0),
++SOC_DAPM_SINGLE("Right Playback Switch", WM8753_MOUTM2, 8, 1, 0),
++SOC_DAPM_SINGLE("Voice Playback Switch", WM8753_MOUTM2, 3, 1, 0),
++SOC_DAPM_SINGLE("Sidetone Playback Switch", WM8753_MOUTM2, 7, 1, 0),
++SOC_DAPM_SINGLE("Bypass Playback Switch", WM8753_MOUTM1, 7, 1, 0),
++};
++
++/* Mono 2 Mux */
++static const struct snd_kcontrol_new wm8753_mono2_controls =
++SOC_DAPM_ENUM("Route", wm8753_enum[17]);
++
++/* Out 3 Mux */
++static const struct snd_kcontrol_new wm8753_out3_controls =
++SOC_DAPM_ENUM("Route", wm8753_enum[18]);
++
++/* Out 4 Mux */
++static const struct snd_kcontrol_new wm8753_out4_controls =
++SOC_DAPM_ENUM("Route", wm8753_enum[19]);
++
++/* ADC Mono Mix */
++static const struct snd_kcontrol_new wm8753_adc_mono_controls =
++SOC_DAPM_ENUM("Route", wm8753_enum[22]);
++
++/* Record mixer */
++static const struct snd_kcontrol_new wm8753_record_mixer_controls[] = {
++SOC_DAPM_SINGLE("Voice Capture Switch", WM8753_RECMIX2, 3, 1, 0),
++SOC_DAPM_SINGLE("Left Capture Switch", WM8753_RECMIX1, 3, 1, 0),
++SOC_DAPM_SINGLE("Right Capture Switch", WM8753_RECMIX1, 7, 1, 0),
++};
++
++/* Left ADC mux */
++static const struct snd_kcontrol_new wm8753_adc_left_controls =
++SOC_DAPM_ENUM("Route", wm8753_enum[21]);
++
++/* Right ADC mux */
++static const struct snd_kcontrol_new wm8753_adc_right_controls =
++SOC_DAPM_ENUM("Route", wm8753_enum[20]);
++
++/* MIC mux */
++static const struct snd_kcontrol_new wm8753_mic_mux_controls =
++SOC_DAPM_ENUM("Route", wm8753_enum[16]);
++
++/* ALC mixer */
++static const struct snd_kcontrol_new wm8753_alc_mixer_controls[] = {
++SOC_DAPM_SINGLE("Line Capture Switch", WM8753_INCTL2, 3, 1, 0),
++SOC_DAPM_SINGLE("Mic2 Capture Switch", WM8753_INCTL2, 2, 1, 0),
++SOC_DAPM_SINGLE("Mic1 Capture Switch", WM8753_INCTL2, 1, 1, 0),
++SOC_DAPM_SINGLE("Rx Capture Switch", WM8753_INCTL2, 0, 1, 0),
++};
++
++/* Left Line mux */
++static const struct snd_kcontrol_new wm8753_line_left_controls =
++SOC_DAPM_ENUM("Route", wm8753_enum[14]);
++
++/* Right Line mux */
++static const struct snd_kcontrol_new wm8753_line_right_controls =
++SOC_DAPM_ENUM("Route", wm8753_enum[13]);
++
++/* Mono Line mux */
++static const struct snd_kcontrol_new wm8753_line_mono_controls =
++SOC_DAPM_ENUM("Route", wm8753_enum[12]);
++
++/* Line mux and mixer */
++static const struct snd_kcontrol_new wm8753_line_mux_mix_controls =
++SOC_DAPM_ENUM("Route", wm8753_enum[11]);
++
++/* Rx mux and mixer */
++static const struct snd_kcontrol_new wm8753_rx_mux_mix_controls =
++SOC_DAPM_ENUM("Route", wm8753_enum[15]);
++
++/* Mic Selector Mux */
++static const struct snd_kcontrol_new wm8753_mic_sel_mux_controls =
++SOC_DAPM_ENUM("Route", wm8753_enum[25]);
++
++static const struct snd_soc_dapm_widget wm8753_dapm_widgets[] = {
++SND_SOC_DAPM_MICBIAS("Mic Bias", WM8753_PWR1, 5, 0),
++SND_SOC_DAPM_MIXER("Left Mixer", WM8753_PWR4, 0, 0,
++ &wm8753_left_mixer_controls[0], ARRAY_SIZE(wm8753_left_mixer_controls)),
++SND_SOC_DAPM_PGA("Left Out 1", WM8753_PWR3, 8, 0, NULL, 0),
++SND_SOC_DAPM_PGA("Left Out 2", WM8753_PWR3, 6, 0, NULL, 0),
++SND_SOC_DAPM_DAC("Left DAC", "Left HiFi Playback", WM8753_PWR1, 3, 0),
++SND_SOC_DAPM_OUTPUT("LOUT1"),
++SND_SOC_DAPM_OUTPUT("LOUT2"),
++SND_SOC_DAPM_MIXER("Right Mixer", WM8753_PWR4, 1, 0,
++ &wm8753_right_mixer_controls[0], ARRAY_SIZE(wm8753_right_mixer_controls)),
++SND_SOC_DAPM_PGA("Right Out 1", WM8753_PWR3, 7, 0, NULL, 0),
++SND_SOC_DAPM_PGA("Right Out 2", WM8753_PWR3, 5, 0, NULL, 0),
++SND_SOC_DAPM_DAC("Right DAC", "Right HiFi Playback", WM8753_PWR1, 2, 0),
++SND_SOC_DAPM_OUTPUT("ROUT1"),
++SND_SOC_DAPM_OUTPUT("ROUT2"),
++SND_SOC_DAPM_MIXER("Mono Mixer", WM8753_PWR4, 2, 0,
++ &wm8753_mono_mixer_controls[0], ARRAY_SIZE(wm8753_mono_mixer_controls)),
++SND_SOC_DAPM_PGA("Mono Out 1", WM8753_PWR3, 2, 0, NULL, 0),
++SND_SOC_DAPM_PGA("Mono Out 2", WM8753_PWR3, 1, 0, NULL, 0),
++SND_SOC_DAPM_DAC("Voice DAC", "Voice Playback", WM8753_PWR1, 4, 0),
++SND_SOC_DAPM_OUTPUT("MONO1"),
++SND_SOC_DAPM_MUX("Mono 2 Mux", SND_SOC_NOPM, 0, 0, &wm8753_mono2_controls),
++SND_SOC_DAPM_OUTPUT("MONO2"),
++SND_SOC_DAPM_MIXER("Out3 Left + Right", -1, 0, 0, NULL, 0),
++SND_SOC_DAPM_MUX("Out3 Mux", SND_SOC_NOPM, 0, 0, &wm8753_out3_controls),
++SND_SOC_DAPM_PGA("Out 3", WM8753_PWR3, 4, 0, NULL, 0),
++SND_SOC_DAPM_OUTPUT("OUT3"),
++SND_SOC_DAPM_MUX("Out4 Mux", SND_SOC_NOPM, 0, 0, &wm8753_out4_controls),
++SND_SOC_DAPM_PGA("Out 4", WM8753_PWR3, 3, 0, NULL, 0),
++SND_SOC_DAPM_OUTPUT("OUT4"),
++SND_SOC_DAPM_MIXER("Playback Mixer", WM8753_PWR4, 3, 0,
++ &wm8753_record_mixer_controls[0],
++ ARRAY_SIZE(wm8753_record_mixer_controls)),
++SND_SOC_DAPM_ADC("Left ADC", "Left Voice Capture", WM8753_PWR2, 3, 0),
++SND_SOC_DAPM_ADC("Right ADC", "Right Voice Capture", WM8753_PWR2, 2, 0),
++SND_SOC_DAPM_MUX("Capture Left Mixer", SND_SOC_NOPM, 0, 0,
++ &wm8753_adc_mono_controls),
++SND_SOC_DAPM_MUX("Capture Right Mixer", SND_SOC_NOPM, 0, 0,
++ &wm8753_adc_mono_controls),
++SND_SOC_DAPM_MUX("Capture Left Mux", SND_SOC_NOPM, 0, 0,
++ &wm8753_adc_left_controls),
++SND_SOC_DAPM_MUX("Capture Right Mux", SND_SOC_NOPM, 0, 0,
++ &wm8753_adc_right_controls),
++SND_SOC_DAPM_MUX("Mic Sidetone Mux", SND_SOC_NOPM, 0, 0,
++ &wm8753_mic_mux_controls),
++SND_SOC_DAPM_PGA("Left Capture Volume", WM8753_PWR2, 5, 0, NULL, 0),
++SND_SOC_DAPM_PGA("Right Capture Volume", WM8753_PWR2, 4, 0, NULL, 0),
++SND_SOC_DAPM_MIXER("ALC Mixer", WM8753_PWR2, 6, 0,
++ &wm8753_alc_mixer_controls[0], ARRAY_SIZE(wm8753_alc_mixer_controls)),
++SND_SOC_DAPM_MUX("Line Left Mux", SND_SOC_NOPM, 0, 0,
++ &wm8753_line_left_controls),
++SND_SOC_DAPM_MUX("Line Right Mux", SND_SOC_NOPM, 0, 0,
++ &wm8753_line_right_controls),
++SND_SOC_DAPM_MUX("Line Mono Mux", SND_SOC_NOPM, 0, 0,
++ &wm8753_line_mono_controls),
++SND_SOC_DAPM_MUX("Line Mixer", SND_SOC_NOPM, 0, 0,
++ &wm8753_line_mux_mix_controls),
++SND_SOC_DAPM_MUX("Rx Mixer", SND_SOC_NOPM, 0, 0,
++ &wm8753_rx_mux_mix_controls),
++SND_SOC_DAPM_PGA("Mic 1 Volume", WM8753_PWR2, 8, 0, NULL, 0),
++SND_SOC_DAPM_PGA("Mic 2 Volume", WM8753_PWR2, 7, 0, NULL, 0),
++SND_SOC_DAPM_MUX("Mic Selection Mux", SND_SOC_NOPM, 0, 0,
++ &wm8753_mic_sel_mux_controls),
++SND_SOC_DAPM_INPUT("LINE1"),
++SND_SOC_DAPM_INPUT("LINE2"),
++SND_SOC_DAPM_INPUT("RXP"),
++SND_SOC_DAPM_INPUT("RXN"),
++SND_SOC_DAPM_INPUT("ACIN"),
++SND_SOC_DAPM_INPUT("ACOP"),
++SND_SOC_DAPM_INPUT("MIC1N"),
++SND_SOC_DAPM_INPUT("MIC1"),
++SND_SOC_DAPM_INPUT("MIC2N"),
++SND_SOC_DAPM_INPUT("MIC2"),
++SND_SOC_DAPM_VMID("VREF"),
++};
++
++static const char *audio_map[][3] = {
++ /* left mixer */
++ {"Left Mixer", "Left Playback Switch", "Left DAC"},
++ {"Left Mixer", "Voice Playback Switch", "Voice DAC"},
++ {"Left Mixer", "Sidetone Playback Switch", "Mic Sidetone Mux"},
++ {"Left Mixer", "Bypass Playback Switch", "Line Left Mux"},
++
++ /* right mixer */
++ {"Right Mixer", "Right Playback Switch", "Right DAC"},
++ {"Right Mixer", "Voice Playback Switch", "Voice DAC"},
++ {"Right Mixer", "Sidetone Playback Switch", "Mic Sidetone Mux"},
++ {"Right Mixer", "Bypass Playback Switch", "Line Right Mux"},
++
++ /* mono mixer */
++ {"Mono Mixer", "Voice Playback Switch", "Voice DAC"},
++ {"Mono Mixer", "Left Playback Switch", "Left DAC"},
++ {"Mono Mixer", "Right Playback Switch", "Right DAC"},
++ {"Mono Mixer", "Sidetone Playback Switch", "Mic Sidetone Mux"},
++ {"Mono Mixer", "Bypass Playback Switch", "Line Mono Mux"},
++
++ /* left out */
++ {"Left Out 1", NULL, "Left Mixer"},
++ {"Left Out 2", NULL, "Left Mixer"},
++ {"LOUT1", NULL, "Left Out 1"},
++ {"LOUT2", NULL, "Left Out 2"},
++
++ /* right out */
++ {"Right Out 1", NULL, "Right Mixer"},
++ {"Right Out 2", NULL, "Right Mixer"},
++ {"ROUT1", NULL, "Right Out 1"},
++ {"ROUT2", NULL, "Right Out 2"},
++
++ /* mono 1 out */
++ {"Mono Out 1", NULL, "Mono Mixer"},
++ {"MONO1", NULL, "Mono Out 1"},
++
++ /* mono 2 out */
++ {"Mono 2 Mux", "Left + Right", "Out3 Left + Right"},
++ {"Mono 2 Mux", "Inverted Mono 1", "MONO1"},
++ {"Mono 2 Mux", "Left", "Left Mixer"},
++ {"Mono 2 Mux", "Right", "Right Mixer"},
++ {"Mono Out 2", NULL, "Mono 2 Mux"},
++ {"MONO2", NULL, "Mono Out 2"},
++
++ /* out 3 */
++ {"Out3 Left + Right", NULL, "Left Mixer"},
++ {"Out3 Left + Right", NULL, "Right Mixer"},
++ {"Out3 Mux", "VREF", "VREF"},
++ {"Out3 Mux", "Left + Right", "Out3 Left + Right"},
++ {"Out3 Mux", "ROUT2", "ROUT2"},
++ {"Out 3", NULL, "Out3 Mux"},
++ {"OUT3", NULL, "Out 3"},
++
++ /* out 4 */
++ {"Out4 Mux", "VREF", "VREF"},
++ {"Out4 Mux", "Capture ST", "Capture ST Mixer"},
++ {"Out4 Mux", "LOUT2", "LOUT2"},
++ {"Out 4", NULL, "Out4 Mux"},
++ {"OUT4", NULL, "Out 4"},
++
++ /* record mixer */
++ {"Playback Mixer", "Left Capture Switch", "Left Mixer"},
++ {"Playback Mixer", "Voice Capture Switch", "Mono Mixer"},
++ {"Playback Mixer", "Right Capture Switch", "Right Mixer"},
++
++ /* Mic/SideTone Mux */
++ {"Mic Sidetone Mux", "Left PGA", "Left Capture Volume"},
++ {"Mic Sidetone Mux", "Right PGA", "Right Capture Volume"},
++ {"Mic Sidetone Mux", "Mic 1", "Mic 1 Volume"},
++ {"Mic Sidetone Mux", "Mic 2", "Mic 2 Volume"},
++
++ /* Capture Left Mux */
++ {"Capture Left Mux", "PGA", "Left Capture Volume"},
++ {"Capture Left Mux", "Line or RXP-RXN", "Line Left Mux"},
++ {"Capture Left Mux", "Line", "LINE1"},
++
++ /* Capture Right Mux */
++ {"Capture Right Mux", "PGA", "Right Capture Volume"},
++ {"Capture Right Mux", "Line or RXP-RXN", "Line Right Mux"},
++ {"Capture Right Mux", "Sidetone", "Capture ST Mixer"},
++
++ /* Mono Capture mixer-mux */
++ {"Capture Right Mixer", "Stereo", "Capture Right Mux"},
++ {"Capture Left Mixer", "Analogue Mix Left", "Capture Left Mux"},
++ {"Capture Left Mixer", "Analogue Mix Left", "Capture Right Mux"},
++ {"Capture Right Mixer", "Analogue Mix Right", "Capture Left Mux"},
++ {"Capture Right Mixer", "Analogue Mix Right", "Capture Right Mux"},
++ {"Capture Left Mixer", "Digital Mono Mix", "Capture Left Mux"},
++ {"Capture Left Mixer", "Digital Mono Mix", "Capture Right Mux"},
++ {"Capture Right Mixer", "Digital Mono Mix", "Capture Left Mux"},
++ {"Capture Right Mixer", "Digital Mono Mix", "Capture Right Mux"},
++
++ /* ADC */
++ {"Left ADC", NULL, "Capture Left Mixer"},
++ {"Right ADC", NULL, "Capture Right Mixer"},
++
++ /* Left Capture Volume */
++ {"Left Capture Volume", NULL, "ACIN"},
++
++ /* Right Capture Volume */
++ {"Right Capture Volume", NULL, "Mic 2 Volume"},
++
++ /* ALC Mixer */
++ {"ALC Mixer", "Line Capture Switch", "Line Mixer"},
++ {"ALC Mixer", "Mic2 Capture Switch", "Mic 2 Volume"},
++ {"ALC Mixer", "Mic1 Capture Switch", "Mic 1 Volume"},
++ {"ALC Mixer", "Rx Capture Switch", "Rx Mixer"},
++
++ /* Line Left Mux */
++ {"Line Left Mux", "Line 1", "LINE1"},
++ {"Line Left Mux", "Rx Mix", "Rx Mixer"},
++
++ /* Line Right Mux */
++ {"Line Right Mux", "Line 2", "LINE2"},
++ {"Line Right Mux", "Rx Mix", "Rx Mixer"},
++
++ /* Line Mono Mux */
++ {"Line Mono Mux", "Line Mix", "Line Mixer"},
++ {"Line Mono Mux", "Rx Mix", "Rx Mixer"},
++
++ /* Line Mixer/Mux */
++ {"Line Mixer", "Line 1 + 2", "LINE1"},
++ {"Line Mixer", "Line 1 - 2", "LINE1"},
++ {"Line Mixer", "Line 1 + 2", "LINE2"},
++ {"Line Mixer", "Line 1 - 2", "LINE2"},
++ {"Line Mixer", "Line 1", "LINE1"},
++ {"Line Mixer", "Line 2", "LINE2"},
++
++ /* Rx Mixer/Mux */
++ {"Rx Mixer", "RXP - RXN", "RXP"},
++ {"Rx Mixer", "RXP + RXN", "RXP"},
++ {"Rx Mixer", "RXP - RXN", "RXN"},
++ {"Rx Mixer", "RXP + RXN", "RXN"},
++ {"Rx Mixer", "RXP", "RXP"},
++ {"Rx Mixer", "RXN", "RXN"},
++
++ /* Mic 1 Volume */
++ {"Mic 1 Volume", NULL, "MIC1N"},
++ {"Mic 1 Volume", NULL, "Mic Selection Mux"},
++
++ /* Mic 2 Volume */
++ {"Mic 2 Volume", NULL, "MIC2N"},
++ {"Mic 2 Volume", NULL, "MIC2"},
++
++ /* Mic Selector Mux */
++ {"Mic Selection Mux", "Mic 1", "MIC1"},
++ {"Mic Selection Mux", "Mic 2", "MIC2N"},
++ {"Mic Selection Mux", "Mic 3", "MIC2"},
++
++ /* ACOP */
++ {"ACOP", NULL, "ALC Mixer"},
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int wm8753_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(wm8753_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm8753_dapm_widgets[i]);
++ }
++
++ /* set up the WM8753 audio map */
++ 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]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++/* PLL divisors */
++struct _pll_div {
++ u32 pll_in; /* ext clock input */
++ u32 pll_out; /* pll out freq */
++ u32 div2:1;
++ u32 n:4;
++ u32 k:24;
++};
++
++/*
++ * PLL divisors -
++ */
++static const struct _pll_div pll_div[] = {
++ {13000000, 12288000, 0, 0x7, 0x23F54A},
++ {13000000, 11289600, 0, 0x6, 0x3CA2F5},
++ {12000000, 12288000, 0, 0x8, 0x0C49BA},
++ {12000000, 11289600, 0, 0x7, 0x21B08A},
++ {24000000, 12288000, 1, 0x8, 0x0C49BA},
++ {24000000, 11289600, 1, 0x7, 0x21B08A},
++ {12288000, 11289600, 0, 0x7, 0x166667},
++ {26000000, 11289600, 1, 0x6, 0x3CA2F5},
++ {26000000, 12288000, 1, 0x7, 0x23F54A},
++};
++
++static u32 wm8753_config_pll(struct snd_soc_codec *codec,
++ struct snd_soc_codec_dai *dai, int pll)
++{
++ u16 reg;
++ int found = 0;
++
++ if (pll == 1) {
++ reg = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0xffef;
++ if (!dai->pll_in || !dai->mclk) {
++ /* disable PLL1 */
++ wm8753_write(codec, WM8753_PLL1CTL1, 0x0026);
++ wm8753_write(codec, WM8753_CLOCK, reg);
++ return 0;
++ } else {
++ u16 value = 0;
++ int i = 0;
++
++ /* if we cant match, then use good values for N and K */
++ for (;i < ARRAY_SIZE(pll_div); i++) {
++ if (pll_div[i].pll_out == dai->pll_out &&
++ pll_div[i].pll_in == dai->pll_in) {
++ found = 1;
++ break;
++ }
++ }
++
++ if (!found)
++ goto err;
++
++ /* set up N and K PLL divisor ratios */
++ /* bits 8:5 = PLL_N, bits 3:0 = PLL_K[21:18] */
++ value = (pll_div[i].n << 5) + ((pll_div[i].k & 0x3c0000) >> 18);
++ wm8753_write(codec, WM8753_PLL1CTL2, value);
++
++ /* bits 8:0 = PLL_K[17:9] */
++ value = (pll_div[i].k & 0x03fe00) >> 9;
++ wm8753_write(codec, WM8753_PLL1CTL3, value);
++
++ /* bits 8:0 = PLL_K[8:0] */
++ value = pll_div[i].k & 0x0001ff;
++ wm8753_write(codec, WM8753_PLL1CTL4, value);
++
++ /* set PLL1 as input and enable */
++ wm8753_write(codec, WM8753_PLL1CTL1, 0x0027 |
++ (pll_div[i].div2 << 3));
++ wm8753_write(codec, WM8753_CLOCK, reg | 0x0010);
++ }
++ } else {
++ reg = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0xfff7;
++ if (!dai->pll_in || !dai->mclk) {
++ /* disable PLL2 */
++ wm8753_write(codec, WM8753_PLL2CTL1, 0x0026);
++ wm8753_write(codec, WM8753_CLOCK, reg);
++ return 0;
++ } else {
++ u16 value = 0;
++ int i = 0;
++
++ /* if we cant match, then use good values for N and K */
++ for (;i < ARRAY_SIZE(pll_div); i++) {
++ if (pll_div[i].pll_out == dai->pll_out &&
++ pll_div[i].pll_in == dai->pll_in) {
++ found = 1;
++ break;
++ }
++ }
++
++ if (!found)
++ goto err;
++
++ /* set up N and K PLL divisor ratios */
++ /* bits 8:5 = PLL_N, bits 3:0 = PLL_K[21:18] */
++ value = (pll_div[i].n << 5) + ((pll_div[i].k & 0x3c0000) >> 18);
++ wm8753_write(codec, WM8753_PLL2CTL2, value);
++
++ /* bits 8:0 = PLL_K[17:9] */
++ value = (pll_div[i].k & 0x03fe00) >> 9;
++ wm8753_write(codec, WM8753_PLL2CTL3, value);
++
++ /* bits 8:0 = PLL_K[8:0] */
++ value = pll_div[i].k & 0x0001ff;
++ wm8753_write(codec, WM8753_PLL2CTL4, value);
++
++ /* set PLL1 as input and enable */
++ wm8753_write(codec, WM8753_PLL2CTL1, 0x0027 |
++ (pll_div[i].div2 << 3));
++ wm8753_write(codec, WM8753_CLOCK, reg | 0x0008);
++ }
++ }
++
++ return dai->pll_in;
++err:
++ return 0;
++}
++
++struct _coeff_div {
++ u32 mclk;
++ u32 rate;
++ u16 fs;
++ u8 sr:5;
++ u8 usb:1;
++};
++
++/* codec hifi mclk (after PLL) clock divider coefficients */
++static const struct _coeff_div coeff_div[] = {
++ /* 8k */
++ {12288000, 8000, 1536, 0x6, 0x0},
++ {11289600, 8000, 1408, 0x16, 0x0},
++ {18432000, 8000, 2304, 0x7, 0x0},
++ {16934400, 8000, 2112, 0x17, 0x0},
++ {12000000, 8000, 1500, 0x6, 0x1},
++
++ /* 11.025k */
++ {11289600, 11025, 1024, 0x18, 0x0},
++ {16934400, 11025, 1536, 0x19, 0x0},
++ {12000000, 11025, 1088, 0x19, 0x1},
++
++ /* 16k */
++ {12288000, 16000, 768, 0xa, 0x0},
++ {18432000, 16000, 1152, 0xb, 0x0},
++ {12000000, 16000, 750, 0xa, 0x1},
++
++ /* 22.05k */
++ {11289600, 22050, 512, 0x1a, 0x0},
++ {16934400, 22050, 768, 0x1b, 0x0},
++ {12000000, 22050, 544, 0x1b, 0x1},
++
++ /* 32k */
++ {12288000, 32000, 384, 0xc, 0x0},
++ {18432000, 32000, 576, 0xd, 0x0},
++ {12000000, 32000, 375, 0xa, 0x1},
++
++ /* 44.1k */
++ {11289600, 44100, 256, 0x10, 0x0},
++ {16934400, 44100, 384, 0x11, 0x0},
++ {12000000, 44100, 272, 0x11, 0x1},
++
++ /* 48k */
++ {12288000, 48000, 256, 0x0, 0x0},
++ {18432000, 48000, 384, 0x1, 0x0},
++ {12000000, 48000, 250, 0x0, 0x1},
++
++ /* 88.2k */
++ {11289600, 88200, 128, 0x1e, 0x0},
++ {16934400, 88200, 192, 0x1f, 0x0},
++ {12000000, 88200, 136, 0x1f, 0x1},
++
++ /* 96k */
++ {12288000, 96000, 128, 0xe, 0x0},
++ {18432000, 96000, 192, 0xf, 0x0},
++ {12000000, 96000, 125, 0xe, 0x1},
++};
++
++static int get_coeff(int mclk, int rate)
++{
++ int i;
++
++ for (i = 0; i < ARRAY_SIZE(coeff_div); i++) {
++ if (coeff_div[i].rate == rate && coeff_div[i].mclk == mclk)
++ return i;
++ }
++ return -EINVAL;
++}
++
++/* supported HiFi input clocks (that don't use PLL) */
++const static int hifi_clks[] = {11289600, 12000000, 12288000,
++ 16934400, 18432000};
++
++/* The HiFi interface can be clocked in one of two ways:-
++ * o No PLL - MCLK is used directly.
++ * o PLL - PLL is used to generate audio MCLK from input clock.
++ *
++ * We use the direct method if we can as it saves power.
++ */
++static unsigned int wm8753_config_i2s_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ int i, pll_out;
++
++ /* is clk supported without the PLL */
++ for(i = 0; i < ARRAY_SIZE(hifi_clks); i++) {
++ if (clk == hifi_clks[i]) {
++ dai->mclk = clk;
++ dai->pll_in = dai->pll_out = 0;
++ dai->clk_div = 1;
++ return clk;
++ }
++ }
++
++ /* determine best PLL output speed */
++ if (info->bclk_master &
++ (SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS)) {
++ pll_out = info->fs * info->rate;
++ } else {
++ /* calc slave clock */
++ switch (info->rate){
++ case 11025:
++ case 22050:
++ case 44100:
++ case 88200:
++ pll_out = 11289600;
++ break;
++ default:
++ pll_out = 12288000;
++ break;
++ }
++ }
++
++ /* are input & output clocks supported by PLL */
++ for (i = 0;i < ARRAY_SIZE(pll_div); i++) {
++ if (pll_div[i].pll_in == clk && pll_div[i].pll_out == pll_out) {
++ dai->pll_in = clk;
++ dai->pll_out = dai->mclk = pll_out;
++ return pll_out;
++ }
++ }
++
++ /* this clk is not supported */
++ return 0;
++}
++
++/* valid PCM clock dividers * 2 */
++static int pcm_divs[] = {2, 6, 11, 4, 8, 12, 16};
++
++/* The Voice interface can be clocked in one of four ways:-
++ * o No PLL - MCLK is used directly.
++ * o Div - MCLK is directly divided.
++ * o PLL - PLL is used to generate audio MCLK from input clock.
++ * o PLL & Div - PLL and post divider are used.
++ *
++ * We use the non PLL methods if we can, as it saves power.
++ */
++
++static unsigned int wm8753_config_pcm_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ int i, j, best_clk = info->fs * info->rate;
++
++ /* can we run at this clk without the PLL ? */
++ for (i = 0; i < ARRAY_SIZE(pcm_divs); i++) {
++ if ((best_clk >> 1) * pcm_divs[i] == clk) {
++ dai->pll_in = 0;
++ dai->clk_div = pcm_divs[i];
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++
++ /* now check for PLL support */
++ for (i = 0; i < ARRAY_SIZE(pll_div); i++) {
++ if (pll_div[i].pll_in == clk) {
++ for (j = 0; j < ARRAY_SIZE(pcm_divs); j++) {
++ if (pll_div[i].pll_out == pcm_divs[j] * (best_clk >> 1)) {
++ dai->pll_in = clk;
++ dai->pll_out = pll_div[i].pll_out;
++ dai->clk_div = pcm_divs[j];
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++ }
++ }
++
++ /* this clk is not supported */
++ return 0;
++}
++
++/* set the format and bit size for ADC and Voice DAC */
++static void wm8753_adc_vdac_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 voice = wm8753_read_reg_cache(codec, WM8753_PCM) & 0x01e0;
++
++ /* interface format */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ voice |= 0x0002;
++ break;
++ case SND_SOC_DAIFMT_RIGHT_J:
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ voice |= 0x0001;
++ break;
++ case SND_SOC_DAIFMT_DSP_A:
++ voice |= 0x0003;
++ break;
++ case SND_SOC_DAIFMT_DSP_B:
++ voice |= 0x0013;
++ break;
++ }
++
++ /* bit size */
++ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ voice |= 0x0004;
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ voice |= 0x0008;
++ break;
++ case SNDRV_PCM_FMTBIT_S32_LE:
++ voice |= 0x000c;
++ break;
++ }
++
++ wm8753_write(codec, WM8753_PCM, voice);
++}
++
++/* configure PCM DAI */
++static int wm8753_pcm_dai_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 voice, ioctl, srate, srate2, fs, bfs, clock;
++ unsigned int rate;
++
++ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
++ fs = rtd->codec_dai->dai_runtime.fs;
++ rate = snd_soc_get_rate(rtd->codec_dai->dai_runtime.pcmrate);
++ voice = wm8753_read_reg_cache(codec, WM8753_PCM) & 0x001f;
++
++ /* set master/slave audio interface */
++ ioctl = wm8753_read_reg_cache(codec, WM8753_IOCTL) & 0x01fd;
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ ioctl |= 0x0002;
++ case SND_SOC_DAIFMT_CBM_CFS:
++ voice |= 0x0040;
++ break;
++ }
++
++ /* do we need to enable the PLL */
++ if (rtd->codec_dai->pll_in) {
++ if (wm8753_config_pll(codec, rtd->codec_dai, 2) !=
++ rtd->codec_dai->pll_in) {
++ err("could not set pll to %d --> %d",
++ rtd->codec_dai->pll_in, rtd->codec_dai->pll_out);
++ return -ENODEV;
++ }
++ }
++
++ /* set up PCM divider */
++ clock = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0x003f;
++ switch (rtd->codec_dai->clk_div) {
++ case 2: /* 1 */
++ break;
++ case 6: /* 3 */
++ clock |= (0x2 << 6);
++ break;
++ case 11: /* 5.5 */
++ clock |= (0x3 << 6);
++ break;
++ case 4: /* 2 */
++ clock |= (0x4 << 6);
++ break;
++ case 8: /* 4 */
++ clock |= (0x5 << 6);
++ break;
++ case 12: /* 6 */
++ clock |= (0x6 << 6);
++ break;
++ case 16: /* 8 */
++ clock |= (0x7 << 6);
++ break;
++ default:
++ printk(KERN_ERR "wm8753: invalid PCM clk divider %d\n",
++ rtd->codec_dai->clk_div);
++ break;
++ }
++ wm8753_write(codec, WM8753_CLOCK, clock);
++
++ /* set bclk divisor rate */
++ srate2 = wm8753_read_reg_cache(codec, WM8753_SRATE2) & 0x003f;
++ switch (bfs) {
++ case 1:
++ break;
++ case 2:
++ srate2 |= (0x1 << 6);
++ break;
++ case 4:
++ srate2 |= (0x2 << 6);
++ break;
++ case 8:
++ srate2 |= (0x3 << 6);
++ break;
++ case 16:
++ srate2 |= (0x4 << 6);
++ break;
++ }
++ wm8753_write(codec, WM8753_SRATE2, srate2);
++
++ srate = wm8753_read_reg_cache(codec, WM8753_SRATE1) & 0x017f;
++ if (rtd->codec_dai->dai_runtime.fs == 384)
++ srate |= 0x80;
++ wm8753_write(codec, WM8753_SRATE1, srate);
++
++ /* clock inversion */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_IB_IF:
++ voice |= 0x0090;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ voice |= 0x0080;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ voice |= 0x0010;
++ break;
++ }
++ //printk("voice %x %x ioctl %x %x srate2 %x %x srate1 %x %x\n",
++ //WM8753_PCM, voice, WM8753_IOCTL, ioctl, WM8753_SRATE2,
++ //srate2, WM8753_SRATE1, srate);
++
++ wm8753_write(codec, WM8753_IOCTL, ioctl);
++ wm8753_write(codec, WM8753_PCM, voice);
++ return 0;
++}
++
++/* configure hifi DAC wordlength and format */
++static void wm8753_hdac_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 hifi = wm8753_read_reg_cache(codec, WM8753_HIFI) & 0x01e0;
++
++ /* interface format */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ hifi |= 0x0002;
++ break;
++ case SND_SOC_DAIFMT_RIGHT_J:
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ hifi |= 0x0001;
++ break;
++ case SND_SOC_DAIFMT_DSP_A:
++ hifi |= 0x0003;
++ break;
++ case SND_SOC_DAIFMT_DSP_B:
++ hifi |= 0x0013;
++ break;
++ }
++
++ /* bit size */
++ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ hifi |= 0x0004;
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ hifi |= 0x0008;
++ break;
++ case SNDRV_PCM_FMTBIT_S32_LE:
++ hifi |= 0x000c;
++ break;
++ }
++
++ wm8753_write(codec, WM8753_HIFI, hifi);
++}
++
++/* configure i2s (hifi) DAI clocking */
++static int wm8753_i2s_dai_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 srate, bfs, hifi, ioctl;
++ unsigned int rate;
++ int i = 0;
++
++ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
++ rate = snd_soc_get_rate(rtd->codec_dai->dai_runtime.pcmrate);
++ hifi = wm8753_read_reg_cache(codec, WM8753_HIFI) & 0x001f;
++
++ /* is coefficient valid ? */
++ if ((i = get_coeff(rtd->codec_dai->mclk, rate)) < 0)
++ return i;
++
++ srate = wm8753_read_reg_cache(codec, WM8753_SRATE1) & 0x01c0;
++ wm8753_write(codec, WM8753_SRATE1, srate | (coeff_div[i].sr << 1) |
++ coeff_div[i].usb);
++
++ /* do we need to enable the PLL */
++ if (rtd->codec_dai->pll_in) {
++ if (wm8753_config_pll(codec, rtd->codec_dai, 1) !=
++ rtd->codec_dai->pll_in) {
++ err("could not set pll to %d --> %d",
++ rtd->codec_dai->pll_in, rtd->codec_dai->pll_out);
++ return -ENODEV;
++ }
++ }
++
++ /* set bclk divisor rate */
++ srate = wm8753_read_reg_cache(codec, WM8753_SRATE2) & 0x01c7;
++ switch (bfs) {
++ case 1:
++ break;
++ case 2:
++ srate |= (0x1 << 3);
++ break;
++ case 4:
++ srate |= (0x2 << 3);
++ break;
++ case 8:
++ srate |= (0x3 << 3);
++ break;
++ case 16:
++ srate |= (0x4 << 3);
++ break;
++ }
++ wm8753_write(codec, WM8753_SRATE2, srate);
++
++ /* set master/slave audio interface */
++ ioctl = wm8753_read_reg_cache(codec, WM8753_IOCTL) & 0x00fe;
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ ioctl |= 0x0001;
++ case SND_SOC_DAIFMT_CBM_CFS:
++ hifi |= 0x0040;
++ break;
++ }
++
++ /* clock inversion */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_IB_IF:
++ hifi |= 0x0090;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ hifi |= 0x0080;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ hifi |= 0x0010;
++ break;
++ }
++ wm8753_write(codec, WM8753_IOCTL, ioctl);
++ wm8753_write(codec, WM8753_HIFI, hifi);
++ return 0;
++}
++
++static int wm8753_mode1v_prepare (struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 clock;
++
++ /* set clk source as pcmclk */
++ clock = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0xfffb;
++ wm8753_write(codec, WM8753_CLOCK, clock);
++
++ wm8753_adc_vdac_prepare(substream);
++ return wm8753_pcm_dai_prepare(substream);
++}
++
++static int wm8753_mode1h_prepare (struct snd_pcm_substream *substream)
++{
++ wm8753_hdac_prepare(substream);
++ return wm8753_i2s_dai_prepare(substream);
++}
++
++static int wm8753_mode2_prepare (struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 clock;
++
++ /* set clk source as pcmclk */
++ clock = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0xfffb;
++ wm8753_write(codec, WM8753_CLOCK, clock);
++
++ wm8753_adc_vdac_prepare(substream);
++ return wm8753_i2s_dai_prepare(substream);
++}
++
++static int wm8753_mode3_prepare (struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 clock;
++
++ /* set clk source as mclk */
++ clock = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0xfffb;
++ wm8753_write(codec, WM8753_CLOCK, clock | 0x4);
++
++ wm8753_hdac_prepare(substream);
++ wm8753_adc_vdac_prepare(substream);
++ return wm8753_i2s_dai_prepare(substream);
++}
++
++static int wm8753_mode4_prepare (struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 clock;
++
++ /* set clk source as mclk */
++ clock = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0xfffb;
++ wm8753_write(codec, WM8753_CLOCK, clock | 0x4);
++
++ wm8753_hdac_prepare(substream);
++ wm8753_adc_vdac_prepare(substream);
++ return wm8753_i2s_dai_prepare(substream);
++}
++
++static int wm8753_mute(struct snd_soc_codec *codec,
++ struct snd_soc_codec_dai *dai, int mute)
++{
++ u16 mute_reg = wm8753_read_reg_cache(codec, WM8753_DAC) & 0xfff7;
++
++ /* the digital mute covers the HiFi and Voice DAC's on the WM8753.
++ * make sure we check if they are not both active when we mute */
++ if (mute && dai->id == 1) {
++ if (!wm8753_dai[WM8753_DAI_VOICE].playback.active ||
++ !wm8753_dai[WM8753_DAI_HIFI].playback.active)
++ wm8753_write(codec, WM8753_DAC, mute_reg | 0x8);
++ } else {
++ if (mute)
++ wm8753_write(codec, WM8753_DAC, mute_reg | 0x8);
++ else
++ wm8753_write(codec, WM8753_DAC, mute_reg);
++ }
++
++ return 0;
++}
++
++static int wm8753_dapm_event(struct snd_soc_codec *codec, int event)
++{
++ u16 pwr_reg = wm8753_read_reg_cache(codec, WM8753_PWR1) & 0xfe3e;
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ /* set vmid to 50k and unmute dac */
++ wm8753_write(codec, WM8753_PWR1, pwr_reg | 0x00c0);
++ break;
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ /* set vmid to 5k for quick power up */
++ wm8753_write(codec, WM8753_PWR1, pwr_reg | 0x01c1);
++ break;
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* mute dac and set vmid to 500k, enable VREF */
++ wm8753_write(codec, WM8753_PWR1, pwr_reg | 0x0141);
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ wm8753_write(codec, WM8753_PWR1, 0x0001);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++/*
++ * The WM8753 supports upto 4 different and mutually exclusive DAI
++ * configurations. This gives 2 PCM's available for use, hifi and voice.
++ * NOTE: The Voice PCM cannot play or caputure audio to the CPU as it's DAI
++ * is connected between the wm8753 and a BT codec or GSM modem.
++ *
++ * 1. Voice over PCM DAI - HIFI DAC over HIFI DAI
++ * 2. Voice over HIFI DAI - HIFI disabled
++ * 3. Voice disabled - HIFI over HIFI
++ * 4. Voice disabled - HIFI over HIFI, uses voice DAI LRC for capture
++ */
++static const struct snd_soc_codec_dai wm8753_all_dai[] = {
++/* DAI HiFi mode 1 */
++{ .name = "WM8753 HiFi",
++ .id = 1,
++ .playback = {
++ .stream_name = "HiFi Playback",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = { /* dummy for fast DAI switching */
++ .stream_name = "HiFi Capture",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .config_sysclk = wm8753_config_i2s_sysclk,
++ .digital_mute = wm8753_mute,
++ .ops = {
++ .prepare = wm8753_mode1h_prepare,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8753_hifi_modes),
++ .mode = wm8753_hifi_modes,},
++},
++/* DAI Voice mode 1 */
++{ .name = "WM8753 Voice",
++ .id = 1,
++ .playback = {
++ .stream_name = "Voice Playback",
++ .channels_min = 1,
++ .channels_max = 1,},
++ .capture = {
++ .stream_name = "Voice Capture",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .config_sysclk = wm8753_config_pcm_sysclk,
++ .digital_mute = wm8753_mute,
++ .ops = {
++ .prepare = wm8753_mode1v_prepare,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8753_voice_modes),
++ .mode = wm8753_voice_modes,},
++},
++/* DAI HiFi mode 2 - dummy */
++{ .name = "WM8753 HiFi",
++ .id = 2,
++},
++/* DAI Voice mode 2 */
++{ .name = "WM8753 Voice",
++ .id = 2,
++ .playback = {
++ .stream_name = "Voice Playback",
++ .channels_min = 1,
++ .channels_max = 1,},
++ .capture = {
++ .stream_name = "Voice Capture",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .config_sysclk = wm8753_config_i2s_sysclk,
++ .digital_mute = wm8753_mute,
++ .ops = {
++ .prepare = wm8753_mode2_prepare,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8753_voice_modes),
++ .mode = wm8753_voice_modes,},
++},
++/* DAI HiFi mode 3 */
++{ .name = "WM8753 HiFi",
++ .id = 3,
++ .playback = {
++ .stream_name = "HiFi Playback",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .stream_name = "HiFi Capture",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .config_sysclk = wm8753_config_i2s_sysclk,
++ .digital_mute = wm8753_mute,
++ .ops = {
++ .prepare = wm8753_mode3_prepare,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8753_hifi_modes),
++ .mode = wm8753_hifi_modes,},
++},
++/* DAI Voice mode 3 - dummy */
++{ .name = "WM8753 Voice",
++ .id = 3,
++},
++/* DAI HiFi mode 4 */
++{ .name = "WM8753 HiFi",
++ .id = 4,
++ .playback = {
++ .stream_name = "HiFi Playback",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .stream_name = "HiFi Capture",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .config_sysclk = wm8753_config_i2s_sysclk,
++ .digital_mute = wm8753_mute,
++ .ops = {
++ .prepare = wm8753_mode4_prepare,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8753_mixed_modes),
++ .mode = wm8753_mixed_modes,},
++},
++/* DAI Voice mode 4 - dummy */
++{ .name = "WM8753 Voice",
++ .id = 4,
++},
++};
++
++struct snd_soc_codec_dai wm8753_dai[2];
++EXPORT_SYMBOL_GPL(wm8753_dai);
++
++static void wm8753_set_dai_mode(struct snd_soc_codec *codec, unsigned int mode)
++{
++ if (mode < 4) {
++ wm8753_dai[0] = wm8753_all_dai[mode << 1];
++ wm8753_dai[1] = wm8753_all_dai[(mode << 1) + 1];
++ }
++}
++
++static void wm8753_work(void *data)
++{
++ struct snd_soc_codec *codec = (struct snd_soc_codec *)data;
++ wm8753_dapm_event(codec, codec->dapm_state);
++}
++
++static int wm8753_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ wm8753_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int wm8753_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++ u8 data[2];
++ u16 *cache = codec->reg_cache;
++
++ /* Sync reg_cache with the hardware */
++ for (i = 0; i < ARRAY_SIZE(wm8753_reg); i++) {
++ if (i + 1 == WM8753_RESET)
++ continue;
++ data[0] = ((i + 1) << 1) | ((cache[i] >> 8) & 0x0001);
++ data[1] = cache[i] & 0x00ff;
++ codec->hw_write(codec->control_data, data, 2);
++ }
++
++ wm8753_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++
++ /* charge wm8753 caps */
++ if (codec->suspend_dapm_state == SNDRV_CTL_POWER_D0) {
++ wm8753_dapm_event(codec, SNDRV_CTL_POWER_D2);
++ codec->dapm_state = SNDRV_CTL_POWER_D0;
++ queue_delayed_work(wm8753_workq, &wm8753_dapm_work,
++ msecs_to_jiffies(caps_charge));
++ }
++
++ return 0;
++}
++
++/*
++ * initialise the WM8753 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int wm8753_init(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int reg, ret = 0;
++
++ codec->name = "WM8753";
++ codec->owner = THIS_MODULE;
++ codec->read = wm8753_read_reg_cache;
++ codec->write = wm8753_write;
++ codec->dapm_event = wm8753_dapm_event;
++ codec->dai = wm8753_dai;
++ codec->num_dai = 2;
++ codec->reg_cache_size = ARRAY_SIZE(wm8753_reg);
++
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8753_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL)
++ return -ENOMEM;
++ memcpy(codec->reg_cache, wm8753_reg,
++ sizeof(u16) * ARRAY_SIZE(wm8753_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8753_reg);
++ wm8753_set_dai_mode(codec, 0);
++
++ wm8753_reset(codec);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if (ret < 0) {
++ kfree(codec->reg_cache);
++ return ret;
++ }
++
++ /* charge output caps */
++ wm8753_dapm_event(codec, SNDRV_CTL_POWER_D2);
++ codec->dapm_state = SNDRV_CTL_POWER_D3hot;
++ queue_delayed_work(wm8753_workq,
++ &wm8753_dapm_work, msecs_to_jiffies(caps_charge));
++
++ /* set the update bits */
++ reg = wm8753_read_reg_cache(codec, WM8753_LDAC);
++ wm8753_write(codec, WM8753_LDAC, reg | 0x0100);
++ reg = wm8753_read_reg_cache(codec, WM8753_RDAC);
++ wm8753_write(codec, WM8753_RDAC, reg | 0x0100);
++ reg = wm8753_read_reg_cache(codec, WM8753_LOUT1V);
++ wm8753_write(codec, WM8753_LOUT1V, reg | 0x0100);
++ reg = wm8753_read_reg_cache(codec, WM8753_ROUT1V);
++ wm8753_write(codec, WM8753_ROUT1V, reg | 0x0100);
++ reg = wm8753_read_reg_cache(codec, WM8753_LOUT2V);
++ wm8753_write(codec, WM8753_LOUT2V, reg | 0x0100);
++ reg = wm8753_read_reg_cache(codec, WM8753_ROUT2V);
++ wm8753_write(codec, WM8753_ROUT2V, reg | 0x0100);
++ reg = wm8753_read_reg_cache(codec, WM8753_LINVOL);
++ wm8753_write(codec, WM8753_LINVOL, reg | 0x0100);
++ reg = wm8753_read_reg_cache(codec, WM8753_RINVOL);
++ wm8753_write(codec, WM8753_RINVOL, reg | 0x0100);
++
++ wm8753_add_controls(codec);
++ wm8753_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if (ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++/* If the i2c layer weren't so broken, we could pass this kind of data
++ around */
++static struct snd_soc_device *wm8753_socdev;
++
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++
++/*
++ * WM8753 2 wire address is determined by GPIO5
++ * state during powerup.
++ * low = 0x1a
++ * high = 0x1b
++ */
++#define I2C_DRIVERID_WM8753 0xfefe /* liam - need a proper id */
++
++static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
++
++/* Magic definition of all other variables and things */
++I2C_CLIENT_INSMOD;
++
++static struct i2c_driver wm8753_i2c_driver;
++static struct i2c_client client_template;
++
++static int wm8753_codec_probe(struct i2c_adapter *adap, int addr, int kind)
++{
++ struct snd_soc_device *socdev = wm8753_socdev;
++ struct wm8753_setup_data *setup = socdev->codec_data;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct i2c_client *i2c;
++ int ret;
++
++ if (addr != setup->i2c_address)
++ return -ENODEV;
++
++ client_template.adapter = adap;
++ client_template.addr = addr;
++
++ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
++ if (i2c == NULL){
++ kfree(codec);
++ return -ENOMEM;
++ }
++ memcpy(i2c, &client_template, sizeof(struct i2c_client));
++ i2c_set_clientdata(i2c, codec);
++ codec->control_data = i2c;
++
++ ret = i2c_attach_client(i2c);
++ if (ret < 0) {
++ err("failed to attach codec at addr %x\n", addr);
++ goto err;
++ }
++
++ ret = wm8753_init(socdev);
++ if (ret < 0) {
++ err("failed to initialise WM8753\n");
++ goto err;
++ }
++
++ return ret;
++
++err:
++ kfree(codec);
++ kfree(i2c);
++ return ret;
++}
++
++static int wm8753_i2c_detach(struct i2c_client *client)
++{
++ struct snd_soc_codec *codec = i2c_get_clientdata(client);
++ i2c_detach_client(client);
++ kfree(codec->reg_cache);
++ kfree(client);
++ return 0;
++}
++
++static int wm8753_i2c_attach(struct i2c_adapter *adap)
++{
++ return i2c_probe(adap, &addr_data, wm8753_codec_probe);
++}
++
++/* corgi i2c codec control layer */
++static struct i2c_driver wm8753_i2c_driver = {
++ .driver = {
++ .name = "WM8753 I2C Codec",
++ .owner = THIS_MODULE,
++ },
++ .id = I2C_DRIVERID_WM8753,
++ .attach_adapter = wm8753_i2c_attach,
++ .detach_client = wm8753_i2c_detach,
++ .command = NULL,
++};
++
++static struct i2c_client client_template = {
++ .name = "WM8753",
++ .driver = &wm8753_i2c_driver,
++};
++#endif
++
++static int wm8753_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct wm8753_setup_data *setup;
++ struct snd_soc_codec *codec;
++ int ret = 0;
++
++ info("WM8753 Audio Codec %s", WM8753_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++ wm8753_socdev = socdev;
++ INIT_WORK(&wm8753_dapm_work, wm8753_work, codec);
++ wm8753_workq = create_workqueue("wm8753");
++ if (wm8753_workq == NULL) {
++ kfree(codec);
++ return -ENOMEM;
++ }
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ if (setup->i2c_address) {
++ normal_i2c[0] = setup->i2c_address;
++ codec->hw_write = (hw_write_t)i2c_master_send;
++ ret = i2c_add_driver(&wm8753_i2c_driver);
++ if (ret != 0)
++ printk(KERN_ERR "can't add i2c driver");
++ }
++#else
++ /* Add other interfaces here */
++#endif
++ return ret;
++}
++
++/* power down chip */
++static int wm8753_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if (codec->control_data)
++ wm8753_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ if (wm8753_workq)
++ destroy_workqueue(wm8753_workq);
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ i2c_del_driver(&wm8753_i2c_driver);
++#endif
++ kfree(codec);
++
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_wm8753 = {
++ .probe = wm8753_probe,
++ .remove = wm8753_remove,
++ .suspend = wm8753_suspend,
++ .resume = wm8753_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_wm8753);
++
++MODULE_DESCRIPTION("ASoC WM8753 driver");
++MODULE_AUTHOR("Liam Girdwood");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8753.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8753.h
+@@ -0,0 +1,91 @@
++/*
++ * wm8753.h -- audio driver for WM8753
++ *
++ * Copyright 2003 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or 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.
++ *
++ */
++
++#ifndef _WM8753_H
++#define _WM8753_H
++
++/* WM8753 register space */
++
++#define WM8753_DAC 0x01
++#define WM8753_ADC 0x02
++#define WM8753_PCM 0x03
++#define WM8753_HIFI 0x04
++#define WM8753_IOCTL 0x05
++#define WM8753_SRATE1 0x06
++#define WM8753_SRATE2 0x07
++#define WM8753_LDAC 0x08
++#define WM8753_RDAC 0x09
++#define WM8753_BASS 0x0a
++#define WM8753_TREBLE 0x0b
++#define WM8753_ALC1 0x0c
++#define WM8753_ALC2 0x0d
++#define WM8753_ALC3 0x0e
++#define WM8753_NGATE 0x0f
++#define WM8753_LADC 0x10
++#define WM8753_RADC 0x11
++#define WM8753_ADCTL1 0x12
++#define WM8753_3D 0x13
++#define WM8753_PWR1 0x14
++#define WM8753_PWR2 0x15
++#define WM8753_PWR3 0x16
++#define WM8753_PWR4 0x17
++#define WM8753_ID 0x18
++#define WM8753_INTPOL 0x19
++#define WM8753_INTEN 0x1a
++#define WM8753_GPIO1 0x1b
++#define WM8753_GPIO2 0x1c
++#define WM8753_RESET 0x1f
++#define WM8753_RECMIX1 0x20
++#define WM8753_RECMIX2 0x21
++#define WM8753_LOUTM1 0x22
++#define WM8753_LOUTM2 0x23
++#define WM8753_ROUTM1 0x24
++#define WM8753_ROUTM2 0x25
++#define WM8753_MOUTM1 0x26
++#define WM8753_MOUTM2 0x27
++#define WM8753_LOUT1V 0x28
++#define WM8753_ROUT1V 0x29
++#define WM8753_LOUT2V 0x2a
++#define WM8753_ROUT2V 0x2b
++#define WM8753_MOUTV 0x2c
++#define WM8753_OUTCTL 0x2d
++#define WM8753_ADCIN 0x2e
++#define WM8753_INCTL1 0x2f
++#define WM8753_INCTL2 0x30
++#define WM8753_LINVOL 0x31
++#define WM8753_RINVOL 0x32
++#define WM8753_MICBIAS 0x33
++#define WM8753_CLOCK 0x34
++#define WM8753_PLL1CTL1 0x35
++#define WM8753_PLL1CTL2 0x36
++#define WM8753_PLL1CTL3 0x37
++#define WM8753_PLL1CTL4 0x38
++#define WM8753_PLL2CTL1 0x39
++#define WM8753_PLL2CTL2 0x3a
++#define WM8753_PLL2CTL3 0x3b
++#define WM8753_PLL2CTL4 0x3c
++#define WM8753_BIASCTL 0x3d
++#define WM8753_ADCTL2 0x3f
++
++struct wm8753_setup_data {
++ unsigned short i2c_address;
++};
++
++#define WM8753_DAI_HIFI 0
++#define WM8753_DAI_VOICE 1
++
++extern struct snd_soc_codec_dai wm8753_dai[2];
++extern struct snd_soc_codec_device soc_codec_dev_wm8753;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8772.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8772.c
+@@ -0,0 +1,806 @@
++/*
++ * wm8772.c -- WM8772 ALSA Soc Audio driver
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or 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.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/version.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/i2c.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++
++#include "wm8772.h"
++
++#define AUDIO_NAME "WM8772"
++#define WM8772_VERSION "0.3"
++
++/*
++ * wm8772 register cache
++ * We can't read the WM8772 register space when we
++ * are using 2 wire for device control, so we cache them instead.
++ */
++static const u16 wm8772_reg[] = {
++ 0x00ff, 0x00ff, 0x0120, 0x0000, /* 0 */
++ 0x00ff, 0x00ff, 0x00ff, 0x00ff, /* 4 */
++ 0x00ff, 0x0000, 0x0080, 0x0040, /* 8 */
++ 0x0000
++};
++
++#define WM8772_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_IB_NF)
++
++#define WM8772_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define WM8772_PRATES \
++ (SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\
++ SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_192000)
++
++#define WM8772_CRATES \
++ (SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\
++ SNDRV_PCM_RATE_96000)
++
++static struct snd_soc_dai_mode wm8772_modes[] = {
++ /* common codec frame and clock master modes */
++ /* 32k */
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 768,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 512,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 384,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 192,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 128,
++ .bfs = 64,
++ },
++
++ /* 44.1k */
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 768,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 512,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 384,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 192,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 128,
++ .bfs = 64,
++ },
++
++ /* 48k */
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 768,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 512,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 384,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 192,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 128,
++ .bfs = 64,
++ },
++
++ /* 96k */
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 384,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8772_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 192,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8772_DIR,
++ .pcmrate = SND_SOC_DAI_BFS_RATE,
++ .fs = 128,
++ .bfs = 64,
++ },
++
++ /* 192k */
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_192000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 192,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_192000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 128,
++ .bfs = 64,
++ },
++
++ /* slave mode */
++ {
++ .fmt = WM8772_DAIFMT,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = WM8772_PRATES,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++ {
++ .fmt = WM8772_DAIFMT,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = WM8772_CRATES,
++ .pcmdir = SND_SOC_DAIDIR_CAPTURE,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++};
++
++/*
++ * read wm8772 register cache
++ */
++static inline unsigned int wm8772_read_reg_cache(struct snd_soc_codec * codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg > WM8772_CACHE_REGNUM)
++ return -1;
++ return cache[reg];
++}
++
++/*
++ * write wm8772 register cache
++ */
++static inline void wm8772_write_reg_cache(struct snd_soc_codec * codec,
++ unsigned int reg, unsigned int value)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg > WM8772_CACHE_REGNUM)
++ return;
++ cache[reg] = value;
++}
++
++static int wm8772_write(struct snd_soc_codec * codec, unsigned int reg,
++ unsigned int value)
++{
++ u8 data[2];
++
++ /* data is
++ * D15..D9 WM8772 register offset
++ * D8...D0 register data
++ */
++ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
++ data[1] = value & 0x00ff;
++
++ wm8772_write_reg_cache (codec, reg, value);
++ if (codec->hw_write(codec->control_data, data, 2) == 2)
++ return 0;
++ else
++ return -1;
++}
++
++#define wm8772_reset(c) wm8772_write(c, WM8772_RESET, 0)
++
++/*
++ * WM8772 Controls
++ */
++static const char *wm8772_zero_flag[] = {"All Ch", "Ch 1", "Ch 2", "Ch3"};
++
++static const struct soc_enum wm8772_enum[] = {
++SOC_ENUM_SINGLE(WM8772_DACCTRL, 0, 4, wm8772_zero_flag),
++};
++
++static const struct snd_kcontrol_new wm8772_snd_controls[] = {
++
++SOC_SINGLE("Left1 Playback Volume", WM8772_LDAC1VOL, 0, 255, 0),
++SOC_SINGLE("Left2 Playback Volume", WM8772_LDAC2VOL, 0, 255, 0),
++SOC_SINGLE("Left3 Playback Volume", WM8772_LDAC3VOL, 0, 255, 0),
++SOC_SINGLE("Right1 Playback Volume", WM8772_RDAC1VOL, 0, 255, 0),
++SOC_SINGLE("Right1 Playback Volume", WM8772_RDAC2VOL, 0, 255, 0),
++SOC_SINGLE("Right1 Playback Volume", WM8772_RDAC3VOL, 0, 255, 0),
++SOC_SINGLE("Master Playback Volume", WM8772_MDACVOL, 0, 255, 0),
++
++SOC_SINGLE("Playback Switch", WM8772_DACCH, 0, 1, 0),
++SOC_SINGLE("Capture Switch", WM8772_ADCCTRL, 2, 1, 0),
++
++SOC_SINGLE("Demp1 Playback Switch", WM8772_DACCTRL, 6, 1, 0),
++SOC_SINGLE("Demp2 Playback Switch", WM8772_DACCTRL, 7, 1, 0),
++SOC_SINGLE("Demp3 Playback Switch", WM8772_DACCTRL, 8, 1, 0),
++
++SOC_SINGLE("Phase Invert 1 Switch", WM8772_IFACE, 6, 1, 0),
++SOC_SINGLE("Phase Invert 2 Switch", WM8772_IFACE, 7, 1, 0),
++SOC_SINGLE("Phase Invert 3 Switch", WM8772_IFACE, 8, 1, 0),
++
++SOC_SINGLE("Playback ZC Switch", WM8772_DACCTRL, 0, 1, 0),
++
++SOC_SINGLE("Capture High Pass Switch", WM8772_ADCCTRL, 3, 1, 0),
++};
++
++/* add non dapm controls */
++static int wm8772_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(wm8772_snd_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8772_snd_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++ return 0;
++}
++
++/* valid wm8772 mclk frequencies */
++static const int freq_table[5][6] = {
++ {4096000, 6144000, 8192000, 12288000, 16384000, 24576000},
++ {5644800, 8467000, 11289600, 16934000, 22579200, 33868800},
++ {6144000, 9216000, 12288000, 18432000, 24576000, 36864000},
++ {12288000, 18432000, 24576000, 36864000, 0, 0},
++ {24576000, 36864000, 0, 0, 0},
++};
++
++static unsigned int check_freq(int rate, unsigned int freq)
++{
++ int i;
++
++ for(i = 0; i < 6; i++) {
++ if(freq == freq_table[i][rate])
++ return freq;
++ }
++ return 0;
++}
++
++static unsigned int wm8772_config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ switch (info->rate){
++ case 32000:
++ dai->mclk = check_freq(0, clk);
++ break;
++ case 44100:
++ dai->mclk = check_freq(1, clk);
++ break;
++ case 48000:
++ dai->mclk = check_freq(2, clk);
++ break;
++ case 96000:
++ dai->mclk = check_freq(3, clk);
++ break;
++ case 192000:
++ dai->mclk = check_freq(4, clk);
++ break;
++ default:
++ dai->mclk = 0;
++ }
++ return dai->mclk;
++}
++
++static int wm8772_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 diface = wm8772_read_reg_cache(codec, WM8772_IFACE) & 0xffc0;
++ u16 diface_ctrl = wm8772_read_reg_cache(codec, WM8772_DACRATE) & 0xfe1f;
++ u16 aiface = 0;
++ u16 aiface_ctrl = wm8772_read_reg_cache(codec, WM8772_ADCCTRL) & 0xfcff;
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
++
++ /* set master/slave audio interface */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ diface_ctrl |= 0x0010;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ break;
++ }
++
++ /* interface format */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ diface |= 0x0002;
++ break;
++ case SND_SOC_DAIFMT_RIGHT_J:
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ diface |= 0x0001;
++ break;
++ case SND_SOC_DAIFMT_DSP_A:
++ diface |= 0x0003;
++ break;
++ case SND_SOC_DAIFMT_DSP_B:
++ diface |= 0x0007;
++ break;
++ }
++
++ /* bit size */
++ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ break;
++ case SNDRV_PCM_FORMAT_S20_3LE:
++ diface |= 0x0010;
++ break;
++ case SNDRV_PCM_FORMAT_S24_3LE:
++ diface |= 0x0020;
++ break;
++ case SNDRV_PCM_FORMAT_S32_LE:
++ diface |= 0x0030;
++ break;
++ }
++
++ /* clock inversion */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ diface |= 0x0008;
++ break;
++ }
++
++ /* set rate */
++ switch (rtd->codec_dai->dai_runtime.fs) {
++ case 768:
++ diface_ctrl |= (0x5 << 6);
++ break;
++ case 512:
++ diface_ctrl |= (0x4 << 6);
++ break;
++ case 384:
++ diface_ctrl |= (0x3 << 6);
++ break;
++ case 256:
++ diface_ctrl |= (0x2 << 6);
++ break;
++ case 192:
++ diface_ctrl |= (0x1 << 6);
++ break;
++ }
++
++ wm8772_write(codec, WM8772_DACRATE, diface_ctrl);
++ wm8772_write(codec, WM8772_IFACE, diface);
++
++ } else {
++
++ /* set master/slave audio interface */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ aiface |= 0x0010;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ break;
++ }
++
++ /* interface format */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ aiface |= 0x0002;
++ break;
++ case SND_SOC_DAIFMT_RIGHT_J:
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ aiface |= 0x0001;
++ break;
++ case SND_SOC_DAIFMT_DSP_A:
++ aiface |= 0x0003;
++ break;
++ case SND_SOC_DAIFMT_DSP_B:
++ aiface |= 0x0003;
++ aiface_ctrl |= 0x0010;
++ break;
++ }
++
++ /* bit size */
++ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ aiface |= 0x0004;
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ aiface |= 0x0008;
++ break;
++ case SNDRV_PCM_FMTBIT_S32_LE:
++ aiface |= 0x000c;
++ break;
++ }
++
++ /* clock inversion */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ aiface_ctrl |= 0x0020;
++ break;
++ }
++
++ /* set rate */
++ switch (rtd->codec_dai->dai_runtime.fs) {
++ case 768:
++ aiface |= (0x5 << 5);
++ break;
++ case 512:
++ aiface |= (0x4 << 5);
++ break;
++ case 384:
++ aiface |= (0x3 << 5);
++ break;
++ case 256:
++ aiface |= (0x2 << 5);
++ break;
++ }
++
++ wm8772_write(codec, WM8772_ADCCTRL, aiface_ctrl);
++ wm8772_write(codec, WM8772_ADCRATE, aiface);
++ }
++
++ return 0;
++}
++
++static int wm8772_dapm_event(struct snd_soc_codec *codec, int event)
++{
++ u16 master = wm8772_read_reg_cache(codec, WM8772_DACRATE) & 0xffe0;
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ /* vref/mid, clk and osc on, dac unmute, active */
++ wm8772_write(codec, WM8772_DACRATE, master);
++ break;
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ break;
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* everything off except vref/vmid, dac mute, inactive */
++ wm8772_write(codec, WM8772_DACRATE, master | 0x0f);
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ /* everything off, dac mute, inactive */
++ wm8772_write(codec, WM8772_DACRATE, master | 0x1f);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++struct snd_soc_codec_dai wm8772_dai = {
++ .name = "WM8772",
++ .playback = {
++ .stream_name = "Playback",
++ .channels_min = 1,
++ .channels_max = 6,
++ },
++ .capture = {
++ .stream_name = "Capture",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .config_sysclk = wm8772_config_sysclk,
++ .ops = {
++ .prepare = wm8772_pcm_prepare,
++ },
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8772_modes),
++ .mode = wm8772_modes,
++ },
++};
++EXPORT_SYMBOL_GPL(wm8772_dai);
++
++static int wm8772_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ wm8772_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int wm8772_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++ u8 data[2];
++ u16 *cache = codec->reg_cache;
++
++ /* Sync reg_cache with the hardware */
++ for (i = 0; i < ARRAY_SIZE(wm8772_reg); i++) {
++ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
++ data[1] = cache[i] & 0x00ff;
++ codec->hw_write(codec->control_data, data, 2);
++ }
++ wm8772_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ wm8772_dapm_event(codec, codec->suspend_dapm_state);
++ return 0;
++}
++
++/*
++ * initialise the WM8772 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int wm8772_init(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int reg, ret = 0;
++
++ codec->name = "WM8772";
++ codec->owner = THIS_MODULE;
++ codec->read = wm8772_read_reg_cache;
++ codec->write = wm8772_write;
++ codec->dapm_event = wm8772_dapm_event;
++ codec->dai = &wm8772_dai;
++ codec->num_dai = 1;
++ codec->reg_cache_size = ARRAY_SIZE(wm8772_reg);
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8772_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL)
++ return -ENOMEM;
++ memcpy(codec->reg_cache, wm8772_reg,
++ sizeof(u16) * ARRAY_SIZE(wm8772_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8772_reg);
++
++ wm8772_reset(codec);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if(ret < 0) {
++ kfree(codec->reg_cache);
++ return ret;
++ }
++
++ /* power on device */
++ wm8772_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++
++ /* set the update bits */
++ reg = wm8772_read_reg_cache(codec, WM8772_MDACVOL);
++ wm8772_write(codec, WM8772_MDACVOL, reg | 0x0100);
++ reg = wm8772_read_reg_cache(codec, WM8772_LDAC1VOL);
++ wm8772_write(codec, WM8772_LDAC1VOL, reg | 0x0100);
++ reg = wm8772_read_reg_cache(codec, WM8772_LDAC2VOL);
++ wm8772_write(codec, WM8772_LDAC2VOL, reg | 0x0100);
++ reg = wm8772_read_reg_cache(codec, WM8772_LDAC3VOL);
++ wm8772_write(codec, WM8772_LDAC3VOL, reg | 0x0100);
++ reg = wm8772_read_reg_cache(codec, WM8772_RDAC1VOL);
++ wm8772_write(codec, WM8772_RDAC1VOL, reg | 0x0100);
++ reg = wm8772_read_reg_cache(codec, WM8772_RDAC2VOL);
++ wm8772_write(codec, WM8772_RDAC2VOL, reg | 0x0100);
++ reg = wm8772_read_reg_cache(codec, WM8772_RDAC3VOL);
++ wm8772_write(codec, WM8772_RDAC3VOL, reg | 0x0100);
++
++ wm8772_add_controls(codec);
++ ret = snd_soc_register_card(socdev);
++ if (ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++static struct snd_soc_device *wm8772_socdev;
++
++static int wm8772_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct wm8772_setup_data *setup;
++ struct snd_soc_codec *codec;
++ int ret = 0;
++
++ printk(KERN_INFO "WM8772 Audio Codec %s", WM8772_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ wm8772_socdev = socdev;
++
++ /* Add other interfaces here */
++#warning do SPI device probe here and then call wm8772_init()
++
++ return ret;
++}
++
++/* power down chip */
++static int wm8772_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if (codec->control_data)
++ wm8772_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++
++ snd_soc_free_pcms(socdev);
++ kfree(codec);
++
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_wm8772 = {
++ .probe = wm8772_probe,
++ .remove = wm8772_remove,
++ .suspend = wm8772_suspend,
++ .resume = wm8772_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_wm8772);
++
++MODULE_DESCRIPTION("ASoC WM8772 driver");
++MODULE_AUTHOR("Liam Girdwood");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8772.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8772.h
+@@ -0,0 +1,40 @@
++/*
++ * wm8772.h -- audio driver for WM8772
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or 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.
++ *
++ */
++
++#ifndef _WM8772_H
++#define _WM8772_H
++
++/* WM8772 register space */
++
++#define WM8772_LDAC1VOL 0x00
++#define WM8772_RDAC1VOL 0x01
++#define WM8772_DACCH 0x02
++#define WM8772_IFACE 0x03
++#define WM8772_LDAC2VOL 0x04
++#define WM8772_RDAC2VOL 0x05
++#define WM8772_LDAC3VOL 0x06
++#define WM8772_RDAC3VOL 0x07
++#define WM8772_MDACVOL 0x08
++#define WM8772_DACCTRL 0x09
++#define WM8772_DACRATE 0x0a
++#define WM8772_ADCRATE 0x0b
++#define WM8772_ADCCTRL 0x0c
++#define WM8772_RESET 0x1f
++
++#define WM8772_CACHE_REGNUM 10
++
++extern struct snd_soc_codec_dai wm8772_dai;
++extern struct snd_soc_codec_device soc_codec_dev_wm8772;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8971.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8971.c
+@@ -0,0 +1,1214 @@
++/*
++ * wm8971.c -- WM8971 ALSA SoC Audio driver
++ *
++ * Copyright 2005 Lab126, Inc.
++ *
++ * Author: Kenneth Kiraly <kiraly@lab126.com>
++ *
++ * Based on wm8753.c by Liam Girdwood
++ *
++ * 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 <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/i2c.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++
++#include "wm8971.h"
++
++#define AUDIO_NAME "wm8971"
++#define WM8971_VERSION "0.8"
++
++#undef WM8971_DEBUG
++
++#ifdef WM8971_DEBUG
++#define dbg(format, arg...) \
++ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
++#else
++#define dbg(format, arg...) do {} while (0)
++#endif
++#define err(format, arg...) \
++ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
++#define info(format, arg...) \
++ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
++#define warn(format, arg...) \
++ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
++
++#define WM8971_REG_COUNT 43
++
++static struct workqueue_struct *wm8971_workq = NULL;
++static struct work_struct wm8971_dapm_work;
++
++/*
++ * wm8971 register cache
++ * We can't read the WM8971 register space when we
++ * are using 2 wire for device control, so we cache them instead.
++ */
++static const u16 wm8971_reg[] = {
++ 0x0097, 0x0097, 0x0079, 0x0079, /* 0 */
++ 0x0000, 0x0008, 0x0000, 0x000a, /* 4 */
++ 0x0000, 0x0000, 0x00ff, 0x00ff, /* 8 */
++ 0x000f, 0x000f, 0x0000, 0x0000, /* 12 */
++ 0x0000, 0x007b, 0x0000, 0x0032, /* 16 */
++ 0x0000, 0x00c3, 0x00c3, 0x00c0, /* 20 */
++ 0x0000, 0x0000, 0x0000, 0x0000, /* 24 */
++ 0x0000, 0x0000, 0x0000, 0x0000, /* 28 */
++ 0x0000, 0x0000, 0x0050, 0x0050, /* 32 */
++ 0x0050, 0x0050, 0x0050, 0x0050, /* 36 */
++ 0x0079, 0x0079, 0x0079, /* 40 */
++};
++
++#define WM8971_HIFI_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
++ SND_SOC_DAIFMT_IB_IF)
++
++#define WM8971_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define WM8971_HIFI_FSB \
++ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
++ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
++
++#define WM8971_HIFI_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 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
++
++#define WM8971_HIFI_BITS \
++ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
++ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
++
++static struct snd_soc_dai_mode wm8971_modes[] = {
++ /* common codec frame and clock master modes */
++ /* 8k */
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1536,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1408,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 2304,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 2112,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1500,
++ .bfs = WM8971_HIFI_FSB,
++ },
++
++ /* 11.025k */
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_11025,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1024,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_11025,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1536,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_11025,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1088,
++ .bfs = WM8971_HIFI_FSB,
++ },
++
++ /* 16k */
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_16000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 768,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_16000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1152,
++ .bfs = WM8971_HIFI_FSB
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_16000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 750,
++ .bfs = WM8971_HIFI_FSB,
++ },
++
++ /* 22.05k */
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_22050,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 512,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_22050,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 768,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_22050,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 544,
++ .bfs = WM8971_HIFI_FSB,
++ },
++
++ /* 32k */
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 384,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 576,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 375,
++ .bfs = WM8971_HIFI_FSB,
++ },
++
++ /* 44.1k & 48k */
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 384,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 272,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 250,
++ .bfs = WM8971_HIFI_FSB,
++ },
++
++ /* 88.2k & 96k */
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 128,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 192,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 136,
++ .bfs = WM8971_HIFI_FSB,
++ },
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 125,
++ .bfs = WM8971_HIFI_FSB,
++ },
++
++ /* codec frame and clock slave modes */
++ {
++ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = WM8971_HIFI_BITS,
++ .pcmrate = WM8971_HIFI_RATES,
++ .pcmdir = WM8971_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++};
++
++static inline unsigned int wm8971_read_reg_cache(struct snd_soc_codec *codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg < WM8971_REG_COUNT)
++ return cache[reg];
++
++ return -1;
++}
++
++static inline void wm8971_write_reg_cache(struct snd_soc_codec *codec,
++ unsigned int reg, unsigned int value)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg < WM8971_REG_COUNT)
++ cache[reg] = value;
++}
++
++static int wm8971_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int value)
++{
++ u8 data[2];
++
++ /* data is
++ * D15..D9 WM8753 register offset
++ * D8...D0 register data
++ */
++ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
++ data[1] = value & 0x00ff;
++
++ wm8971_write_reg_cache (codec, reg, value);
++ if (codec->hw_write(codec->control_data, data, 2) == 2)
++ return 0;
++ else
++ return -EIO;
++}
++
++#define wm8971_reset(c) wm8971_write(c, WM8971_RESET, 0)
++
++/* WM8971 Controls */
++static const char *wm8971_bass[] = { "Linear Control", "Adaptive Boost" };
++static const char *wm8971_bass_filter[] = { "130Hz @ 48kHz",
++ "200Hz @ 48kHz" };
++static const char *wm8971_treble[] = { "8kHz", "4kHz" };
++static const char *wm8971_alc_func[] = { "Off", "Right", "Left", "Stereo" };
++static const char *wm8971_ng_type[] = { "Constant PGA Gain",
++ "Mute ADC Output" };
++static const char *wm8971_deemp[] = { "None", "32kHz", "44.1kHz", "48kHz" };
++static const char *wm8971_mono_mux[] = {"Stereo", "Mono (Left)",
++ "Mono (Right)", "Digital Mono"};
++static const char *wm8971_dac_phase[] = { "Non Inverted", "Inverted" };
++static const char *wm8971_lline_mux[] = {"Line", "NC", "NC", "PGA",
++ "Differential"};
++static const char *wm8971_rline_mux[] = {"Line", "Mic", "NC", "PGA",
++ "Differential"};
++static const char *wm8971_lpga_sel[] = {"Line", "NC", "NC", "Differential"};
++static const char *wm8971_rpga_sel[] = {"Line", "Mic", "NC", "Differential"};
++static const char *wm8971_adcpol[] = {"Normal", "L Invert", "R Invert",
++ "L + R Invert"};
++
++static const struct soc_enum wm8971_enum[] = {
++ SOC_ENUM_SINGLE(WM8971_BASS, 7, 2, wm8971_bass), /* 0 */
++ SOC_ENUM_SINGLE(WM8971_BASS, 6, 2, wm8971_bass_filter),
++ SOC_ENUM_SINGLE(WM8971_TREBLE, 6, 2, wm8971_treble),
++ SOC_ENUM_SINGLE(WM8971_ALC1, 7, 4, wm8971_alc_func),
++ SOC_ENUM_SINGLE(WM8971_NGATE, 1, 2, wm8971_ng_type), /* 4 */
++ SOC_ENUM_SINGLE(WM8971_ADCDAC, 1, 4, wm8971_deemp),
++ SOC_ENUM_SINGLE(WM8971_ADCTL1, 4, 4, wm8971_mono_mux),
++ SOC_ENUM_SINGLE(WM8971_ADCTL1, 1, 2, wm8971_dac_phase),
++ SOC_ENUM_SINGLE(WM8971_LOUTM1, 0, 5, wm8971_lline_mux), /* 8 */
++ SOC_ENUM_SINGLE(WM8971_ROUTM1, 0, 5, wm8971_rline_mux),
++ SOC_ENUM_SINGLE(WM8971_LADCIN, 6, 4, wm8971_lpga_sel),
++ SOC_ENUM_SINGLE(WM8971_RADCIN, 6, 4, wm8971_rpga_sel),
++ SOC_ENUM_SINGLE(WM8971_ADCDAC, 5, 4, wm8971_adcpol), /* 12 */
++ SOC_ENUM_SINGLE(WM8971_ADCIN, 6, 4, wm8971_mono_mux),
++};
++
++static const struct snd_kcontrol_new wm8971_snd_controls[] = {
++ SOC_DOUBLE_R("Capture Volume", WM8971_LINVOL, WM8971_RINVOL, 0, 63, 0),
++ SOC_DOUBLE_R("Capture ZC Switch", WM8971_LINVOL, WM8971_RINVOL, 6, 1, 0),
++ SOC_DOUBLE_R("Capture Switch", WM8971_LINVOL, WM8971_RINVOL, 7, 1, 1),
++
++ SOC_DOUBLE_R("Headphone Playback ZC Switch", WM8971_LOUT1V,
++ WM8971_ROUT1V, 7, 1, 0),
++ SOC_DOUBLE_R("Speaker Playback ZC Switch", WM8971_LOUT2V,
++ WM8971_ROUT2V, 7, 1, 0),
++ SOC_SINGLE("Mono Playback ZC Switch", WM8971_MOUTV, 7, 1, 0),
++
++ SOC_DOUBLE_R("PCM Volume", WM8971_LDAC, WM8971_RDAC, 0, 255, 0),
++
++ SOC_DOUBLE_R("Bypass Left Playback Volume", WM8971_LOUTM1,
++ WM8971_LOUTM2, 4, 7, 1),
++ SOC_DOUBLE_R("Bypass Right Playback Volume", WM8971_ROUTM1,
++ WM8971_ROUTM2, 4, 7, 1),
++ SOC_DOUBLE_R("Bypass Mono Playback Volume", WM8971_MOUTM1,
++ WM8971_MOUTM2, 4, 7, 1),
++
++ SOC_DOUBLE_R("Headphone Playback Volume", WM8971_LOUT1V,
++ WM8971_ROUT1V, 0, 127, 0),
++ SOC_DOUBLE_R("Speaker Playback Volume", WM8971_LOUT2V,
++ WM8971_ROUT2V, 0, 127, 0),
++
++ SOC_ENUM("Bass Boost", wm8971_enum[0]),
++ SOC_ENUM("Bass Filter", wm8971_enum[1]),
++ SOC_SINGLE("Bass Volume", WM8971_BASS, 0, 7, 1),
++
++ SOC_SINGLE("Treble Volume", WM8971_TREBLE, 0, 7, 0),
++ SOC_ENUM("Treble Cut-off", wm8971_enum[2]),
++
++ SOC_SINGLE("Capture Filter Switch", WM8971_ADCDAC, 0, 1, 1),
++
++ SOC_SINGLE("ALC Target Volume", WM8971_ALC1, 0, 7, 0),
++ SOC_SINGLE("ALC Max Volume", WM8971_ALC1, 4, 7, 0),
++
++ SOC_SINGLE("ALC Capture Target Volume", WM8971_ALC1, 0, 7, 0),
++ SOC_SINGLE("ALC Capture Max Volume", WM8971_ALC1, 4, 7, 0),
++ SOC_ENUM("ALC Capture Function", wm8971_enum[3]),
++ SOC_SINGLE("ALC Capture ZC Switch", WM8971_ALC2, 7, 1, 0),
++ SOC_SINGLE("ALC Capture Hold Time", WM8971_ALC2, 0, 15, 0),
++ SOC_SINGLE("ALC Capture Decay Time", WM8971_ALC3, 4, 15, 0),
++ SOC_SINGLE("ALC Capture Attack Time", WM8971_ALC3, 0, 15, 0),
++ SOC_SINGLE("ALC Capture NG Threshold", WM8971_NGATE, 3, 31, 0),
++ SOC_ENUM("ALC Capture NG Type", wm8971_enum[4]),
++ SOC_SINGLE("ALC Capture NG Switch", WM8971_NGATE, 0, 1, 0),
++
++ SOC_SINGLE("Capture 6dB Attenuate", WM8971_ADCDAC, 8, 1, 0),
++ SOC_SINGLE("Playback 6dB Attenuate", WM8971_ADCDAC, 7, 1, 0),
++
++ SOC_ENUM("Playback De-emphasis", wm8971_enum[5]),
++ SOC_ENUM("Playback Function", wm8971_enum[6]),
++ SOC_ENUM("Playback Phase", wm8971_enum[7]),
++
++ SOC_DOUBLE_R("Mic Boost", WM8971_LADCIN, WM8971_RADCIN, 4, 3, 0),
++};
++
++/* add non-DAPM controls */
++static int wm8971_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(wm8971_snd_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8971_snd_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++
++ return 0;
++}
++
++/*
++ * DAPM Controls
++ */
++
++/* Left Mixer */
++static const struct snd_kcontrol_new wm8971_left_mixer_controls[] = {
++SOC_DAPM_SINGLE("Playback Switch", WM8971_LOUTM1, 8, 1, 0),
++SOC_DAPM_SINGLE("Left Bypass Switch", WM8971_LOUTM1, 7, 1, 0),
++SOC_DAPM_SINGLE("Right Playback Switch", WM8971_LOUTM2, 8, 1, 0),
++SOC_DAPM_SINGLE("Right Bypass Switch", WM8971_LOUTM2, 7, 1, 0),
++};
++
++/* Right Mixer */
++static const struct snd_kcontrol_new wm8971_right_mixer_controls[] = {
++SOC_DAPM_SINGLE("Left Playback Switch", WM8971_ROUTM1, 8, 1, 0),
++SOC_DAPM_SINGLE("Left Bypass Switch", WM8971_ROUTM1, 7, 1, 0),
++SOC_DAPM_SINGLE("Playback Switch", WM8971_ROUTM2, 8, 1, 0),
++SOC_DAPM_SINGLE("Right Bypass Switch", WM8971_ROUTM2, 7, 1, 0),
++};
++
++/* Mono Mixer */
++static const struct snd_kcontrol_new wm8971_mono_mixer_controls[] = {
++SOC_DAPM_SINGLE("Left Playback Switch", WM8971_MOUTM1, 8, 1, 0),
++SOC_DAPM_SINGLE("Left Bypass Switch", WM8971_MOUTM1, 7, 1, 0),
++SOC_DAPM_SINGLE("Right Playback Switch", WM8971_MOUTM2, 8, 1, 0),
++SOC_DAPM_SINGLE("Right Bypass Switch", WM8971_MOUTM2, 7, 1, 0),
++};
++
++/* Left Line Mux */
++static const struct snd_kcontrol_new wm8971_left_line_controls =
++SOC_DAPM_ENUM("Route", wm8971_enum[8]);
++
++/* Right Line Mux */
++static const struct snd_kcontrol_new wm8971_right_line_controls =
++SOC_DAPM_ENUM("Route", wm8971_enum[9]);
++
++/* Left PGA Mux */
++static const struct snd_kcontrol_new wm8971_left_pga_controls =
++SOC_DAPM_ENUM("Route", wm8971_enum[10]);
++
++/* Right PGA Mux */
++static const struct snd_kcontrol_new wm8971_right_pga_controls =
++SOC_DAPM_ENUM("Route", wm8971_enum[11]);
++
++/* Mono ADC Mux */
++static const struct snd_kcontrol_new wm8971_monomux_controls =
++SOC_DAPM_ENUM("Route", wm8971_enum[13]);
++
++static const struct snd_soc_dapm_widget wm8971_dapm_widgets[] = {
++ SND_SOC_DAPM_MIXER("Left Mixer", SND_SOC_NOPM, 0, 0,
++ &wm8971_left_mixer_controls[0],
++ ARRAY_SIZE(wm8971_left_mixer_controls)),
++ SND_SOC_DAPM_MIXER("Right Mixer", SND_SOC_NOPM, 0, 0,
++ &wm8971_right_mixer_controls[0],
++ ARRAY_SIZE(wm8971_right_mixer_controls)),
++ SND_SOC_DAPM_MIXER("Mono Mixer", WM8971_PWR2, 2, 0,
++ &wm8971_mono_mixer_controls[0],
++ ARRAY_SIZE(wm8971_mono_mixer_controls)),
++
++ SND_SOC_DAPM_PGA("Right Out 2", WM8971_PWR2, 3, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("Left Out 2", WM8971_PWR2, 4, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("Right Out 1", WM8971_PWR2, 5, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("Left Out 1", WM8971_PWR2, 6, 0, NULL, 0),
++ SND_SOC_DAPM_DAC("Right DAC", "Right Playback", WM8971_PWR2, 7, 0),
++ SND_SOC_DAPM_DAC("Left DAC", "Left Playback", WM8971_PWR2, 8, 0),
++ SND_SOC_DAPM_PGA("Mono Out 1", WM8971_PWR2, 2, 0, NULL, 0),
++
++ SND_SOC_DAPM_MICBIAS("Mic Bias", WM8971_PWR1, 1, 0),
++ SND_SOC_DAPM_ADC("Right ADC", "Right Capture", WM8971_PWR1, 2, 0),
++ SND_SOC_DAPM_ADC("Left ADC", "Left Capture", WM8971_PWR1, 3, 0),
++
++ SND_SOC_DAPM_MUX("Left PGA Mux", WM8971_PWR1, 5, 0,
++ &wm8971_left_pga_controls),
++ SND_SOC_DAPM_MUX("Right PGA Mux", WM8971_PWR1, 4, 0,
++ &wm8971_right_pga_controls),
++ SND_SOC_DAPM_MUX("Left Line Mux", SND_SOC_NOPM, 0, 0,
++ &wm8971_left_line_controls),
++ SND_SOC_DAPM_MUX("Right Line Mux", SND_SOC_NOPM, 0, 0,
++ &wm8971_right_line_controls),
++
++ SND_SOC_DAPM_MUX("Left ADC Mux", SND_SOC_NOPM, 0, 0,
++ &wm8971_monomux_controls),
++ SND_SOC_DAPM_MUX("Right ADC Mux", SND_SOC_NOPM, 0, 0,
++ &wm8971_monomux_controls),
++
++ SND_SOC_DAPM_OUTPUT("LOUT1"),
++ SND_SOC_DAPM_OUTPUT("ROUT1"),
++ SND_SOC_DAPM_OUTPUT("LOUT2"),
++ SND_SOC_DAPM_OUTPUT("ROUT2"),
++ SND_SOC_DAPM_OUTPUT("MONO"),
++
++ SND_SOC_DAPM_INPUT("LINPUT1"),
++ SND_SOC_DAPM_INPUT("RINPUT1"),
++ SND_SOC_DAPM_INPUT("MIC"),
++};
++
++static const char *audio_map[][3] = {
++ /* left mixer */
++ {"Left Mixer", "Playback Switch", "Left DAC"},
++ {"Left Mixer", "Left Bypass Switch", "Left Line Mux"},
++ {"Left Mixer", "Right Playback Switch", "Right DAC"},
++ {"Left Mixer", "Right Bypass Switch", "Right Line Mux"},
++
++ /* right mixer */
++ {"Right Mixer", "Left Playback Switch", "Left DAC"},
++ {"Right Mixer", "Left Bypass Switch", "Left Line Mux"},
++ {"Right Mixer", "Playback Switch", "Right DAC"},
++ {"Right Mixer", "Right Bypass Switch", "Right Line Mux"},
++
++ /* left out 1 */
++ {"Left Out 1", NULL, "Left Mixer"},
++ {"LOUT1", NULL, "Left Out 1"},
++
++ /* left out 2 */
++ {"Left Out 2", NULL, "Left Mixer"},
++ {"LOUT2", NULL, "Left Out 2"},
++
++ /* right out 1 */
++ {"Right Out 1", NULL, "Right Mixer"},
++ {"ROUT1", NULL, "Right Out 1"},
++
++ /* right out 2 */
++ {"Right Out 2", NULL, "Right Mixer"},
++ {"ROUT2", NULL, "Right Out 2"},
++
++ /* mono mixer */
++ {"Mono Mixer", "Left Playback Switch", "Left DAC"},
++ {"Mono Mixer", "Left Bypass Switch", "Left Line Mux"},
++ {"Mono Mixer", "Right Playback Switch", "Right DAC"},
++ {"Mono Mixer", "Right Bypass Switch", "Right Line Mux"},
++
++ /* mono out */
++ {"Mono Out", NULL, "Mono Mixer"},
++ {"MONO1", NULL, "Mono Out"},
++
++ /* Left Line Mux */
++ {"Left Line Mux", "Line", "LINPUT1"},
++ {"Left Line Mux", "PGA", "Left PGA Mux"},
++ {"Left Line Mux", "Differential", "Differential Mux"},
++
++ /* Right Line Mux */
++ {"Right Line Mux", "Line", "RINPUT1"},
++ {"Right Line Mux", "Mic", "MIC"},
++ {"Right Line Mux", "PGA", "Right PGA Mux"},
++ {"Right Line Mux", "Differential", "Differential Mux"},
++
++ /* Left PGA Mux */
++ {"Left PGA Mux", "Line", "LINPUT1"},
++ {"Left PGA Mux", "Differential", "Differential Mux"},
++
++ /* Right PGA Mux */
++ {"Right PGA Mux", "Line", "RINPUT1"},
++ {"Right PGA Mux", "Differential", "Differential Mux"},
++
++ /* Differential Mux */
++ {"Differential Mux", "Line", "LINPUT1"},
++ {"Differential Mux", "Line", "RINPUT1"},
++
++ /* Left ADC Mux */
++ {"Left ADC Mux", "Stereo", "Left PGA Mux"},
++ {"Left ADC Mux", "Mono (Left)", "Left PGA Mux"},
++ {"Left ADC Mux", "Digital Mono", "Left PGA Mux"},
++
++ /* Right ADC Mux */
++ {"Right ADC Mux", "Stereo", "Right PGA Mux"},
++ {"Right ADC Mux", "Mono (Right)", "Right PGA Mux"},
++ {"Right ADC Mux", "Digital Mono", "Right PGA Mux"},
++
++ /* ADC */
++ {"Left ADC", NULL, "Left ADC Mux"},
++ {"Right ADC", NULL, "Right ADC Mux"},
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int wm8971_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(wm8971_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm8971_dapm_widgets[i]);
++ }
++
++ /* set up 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]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++struct _coeff_div {
++ u32 mclk;
++ u32 rate;
++ u16 fs;
++ u8 sr:5;
++ u8 usb:1;
++};
++
++/* codec hifi mclk clock divider coefficients */
++static const struct _coeff_div coeff_div[] = {
++ /* 8k */
++ {12288000, 8000, 1536, 0x6, 0x0},
++ {11289600, 8000, 1408, 0x16, 0x0},
++ {18432000, 8000, 2304, 0x7, 0x0},
++ {16934400, 8000, 2112, 0x17, 0x0},
++ {12000000, 8000, 1500, 0x6, 0x1},
++
++ /* 11.025k */
++ {11289600, 11025, 1024, 0x18, 0x0},
++ {16934400, 11025, 1536, 0x19, 0x0},
++ {12000000, 11025, 1088, 0x19, 0x1},
++
++ /* 16k */
++ {12288000, 16000, 768, 0xa, 0x0},
++ {18432000, 16000, 1152, 0xb, 0x0},
++ {12000000, 16000, 750, 0xa, 0x1},
++
++ /* 22.05k */
++ {11289600, 22050, 512, 0x1a, 0x0},
++ {16934400, 22050, 768, 0x1b, 0x0},
++ {12000000, 22050, 544, 0x1b, 0x1},
++
++ /* 32k */
++ {12288000, 32000, 384, 0xc, 0x0},
++ {18432000, 32000, 576, 0xd, 0x0},
++ {12000000, 32000, 375, 0xa, 0x1},
++
++ /* 44.1k */
++ {11289600, 44100, 256, 0x10, 0x0},
++ {16934400, 44100, 384, 0x11, 0x0},
++ {12000000, 44100, 272, 0x11, 0x1},
++
++ /* 48k */
++ {12288000, 48000, 256, 0x0, 0x0},
++ {18432000, 48000, 384, 0x1, 0x0},
++ {12000000, 48000, 250, 0x0, 0x1},
++
++ /* 88.2k */
++ {11289600, 88200, 128, 0x1e, 0x0},
++ {16934400, 88200, 192, 0x1f, 0x0},
++ {12000000, 88200, 136, 0x1f, 0x1},
++
++ /* 96k */
++ {12288000, 96000, 128, 0xe, 0x0},
++ {18432000, 96000, 192, 0xf, 0x0},
++ {12000000, 96000, 125, 0xe, 0x1},
++};
++
++static int get_coeff(int mclk, int rate)
++{
++ int i;
++
++ for (i = 0; i < ARRAY_SIZE(coeff_div); i++) {
++ if (coeff_div[i].rate == rate && coeff_div[i].mclk == mclk)
++ return i;
++ }
++ return -EINVAL;
++}
++
++/* WM8971 supports numerous input clocks per sample rate */
++static unsigned int wm8971_config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ dai->mclk = 0;
++
++ /* check that the calculated FS and rate actually match a clock from
++ * the machine driver */
++ if (info->fs * info->rate == clk)
++ dai->mclk = clk;
++
++ return dai->mclk;
++}
++
++static int wm8971_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 iface = 0, bfs, srate = 0;
++ int i = get_coeff(rtd->codec_dai->mclk,
++ snd_soc_get_rate(rtd->codec_dai->dai_runtime.pcmrate));
++
++ /* is coefficient valid ? */
++ if (i < 0)
++ return i;
++
++ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
++
++ /* set master/slave audio interface */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ iface |= 0x0040;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ break;
++ }
++
++ /* interface format */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ iface |= 0x0002;
++ break;
++ case SND_SOC_DAIFMT_RIGHT_J:
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ iface |= 0x0001;
++ break;
++ case SND_SOC_DAIFMT_DSP_A:
++ iface |= 0x0003;
++ break;
++ case SND_SOC_DAIFMT_DSP_B:
++ iface |= 0x0013;
++ break;
++ }
++
++ /* bit size */
++ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ iface |= 0x0004;
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ iface |= 0x0008;
++ break;
++ case SNDRV_PCM_FMTBIT_S32_LE:
++ iface |= 0x000c;
++ break;
++ }
++
++ /* clock inversion */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_IF:
++ iface |= 0x0090;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ iface |= 0x0080;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ iface |= 0x0010;
++ break;
++ }
++
++ /* set bclk divisor rate */
++ switch (bfs) {
++ case 1:
++ break;
++ case 4:
++ srate |= (0x1 << 7);
++ break;
++ case 8:
++ srate |= (0x2 << 7);
++ break;
++ case 16:
++ srate |= (0x3 << 7);
++ break;
++ }
++
++ /* set iface & srate */
++ wm8971_write(codec, WM8971_AUDIO, iface);
++ wm8971_write(codec, WM8971_SRATE, srate |
++ (coeff_div[i].sr << 1) | coeff_div[i].usb);
++ return 0;
++}
++
++static int wm8971_mute(struct snd_soc_codec *codec,
++ struct snd_soc_codec_dai *dai, int mute)
++{
++ u16 mute_reg = wm8971_read_reg_cache(codec, WM8971_ADCDAC) & 0xfff7;
++ if (mute)
++ wm8971_write(codec, WM8971_ADCDAC, mute_reg | 0x8);
++ else
++ wm8971_write(codec, WM8971_ADCDAC, mute_reg);
++ return 0;
++}
++
++static int wm8971_dapm_event(struct snd_soc_codec *codec, int event)
++{
++ u16 pwr_reg = wm8971_read_reg_cache(codec, WM8971_PWR1) & 0xfe3e;
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ /* set vmid to 50k and unmute dac */
++ wm8971_write(codec, WM8971_PWR1, pwr_reg | 0x00c1);
++ break;
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ /* set vmid to 5k for quick power up */
++ wm8971_write(codec, WM8971_PWR1, pwr_reg | 0x01c0);
++ break;
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* mute dac and set vmid to 500k, enable VREF */
++ wm8971_write(codec, WM8971_PWR1, pwr_reg | 0x0140);
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ wm8971_write(codec, WM8971_PWR1, 0x0001);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++struct snd_soc_codec_dai wm8971_dai = {
++ .name = "WM8971",
++ .playback = {
++ .stream_name = "Playback",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .capture = {
++ .stream_name = "Capture",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .config_sysclk = wm8971_config_sysclk,
++ .digital_mute = wm8971_mute,
++ .ops = {
++ .prepare = wm8971_pcm_prepare,
++ },
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8971_modes),
++ .mode = wm8971_modes,
++ },
++};
++EXPORT_SYMBOL_GPL(wm8971_dai);
++
++static void wm8971_work(void *data)
++{
++ struct snd_soc_codec *codec = (struct snd_soc_codec *)data;
++ wm8971_dapm_event(codec, codec->dapm_state);
++}
++
++static int wm8971_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ wm8971_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int wm8971_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++ u8 data[2];
++ u16 *cache = codec->reg_cache;
++
++ /* Sync reg_cache with the hardware */
++ for (i = 0; i < ARRAY_SIZE(wm8971_reg); i++) {
++ if (i + 1 == WM8971_RESET)
++ continue;
++ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
++ data[1] = cache[i] & 0x00ff;
++ codec->hw_write(codec->control_data, data, 2);
++ }
++
++ wm8971_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++
++ /* charge wm8971 caps */
++ if (codec->suspend_dapm_state == SNDRV_CTL_POWER_D0) {
++ wm8971_dapm_event(codec, SNDRV_CTL_POWER_D2);
++ codec->dapm_state = SNDRV_CTL_POWER_D0;
++ queue_delayed_work(wm8971_workq, &wm8971_dapm_work,
++ msecs_to_jiffies(1000));
++ }
++
++ return 0;
++}
++
++static int wm8971_init(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int reg, ret = 0;
++
++ codec->name = "WM8971";
++ codec->owner = THIS_MODULE;
++ codec->read = wm8971_read_reg_cache;
++ codec->write = wm8971_write;
++ codec->dapm_event = wm8971_dapm_event;
++ codec->dai = &wm8971_dai;
++ codec->reg_cache_size = ARRAY_SIZE(wm8971_reg);
++ codec->num_dai = 1;
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8971_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL)
++ return -ENOMEM;
++ memcpy(codec->reg_cache, wm8971_reg,
++ sizeof(u16) * ARRAY_SIZE(wm8971_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8971_reg);
++
++ wm8971_reset(codec);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if (ret < 0) {
++ kfree(codec->reg_cache);
++ return ret;
++ }
++
++ /* charge output caps */
++ wm8971_dapm_event(codec, SNDRV_CTL_POWER_D2);
++ codec->dapm_state = SNDRV_CTL_POWER_D3hot;
++ queue_delayed_work(wm8971_workq, &wm8971_dapm_work,
++ msecs_to_jiffies(1000));
++
++ /* set the update bits */
++ reg = wm8971_read_reg_cache(codec, WM8971_LDAC);
++ wm8971_write(codec, WM8971_LDAC, reg | 0x0100);
++ reg = wm8971_read_reg_cache(codec, WM8971_RDAC);
++ wm8971_write(codec, WM8971_RDAC, reg | 0x0100);
++
++ reg = wm8971_read_reg_cache(codec, WM8971_LOUT1V);
++ wm8971_write(codec, WM8971_LOUT1V, reg | 0x0100);
++ reg = wm8971_read_reg_cache(codec, WM8971_ROUT1V);
++ wm8971_write(codec, WM8971_ROUT1V, reg | 0x0100);
++
++ reg = wm8971_read_reg_cache(codec, WM8971_LOUT2V);
++ wm8971_write(codec, WM8971_LOUT2V, reg | 0x0100);
++ reg = wm8971_read_reg_cache(codec, WM8971_ROUT2V);
++ wm8971_write(codec, WM8971_ROUT2V, reg | 0x0100);
++
++ reg = wm8971_read_reg_cache(codec, WM8971_LINVOL);
++ wm8971_write(codec, WM8971_LINVOL, reg | 0x0100);
++ reg = wm8971_read_reg_cache(codec, WM8971_RINVOL);
++ wm8971_write(codec, WM8971_RINVOL, reg | 0x0100);
++
++ wm8971_add_controls(codec);
++ wm8971_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if (ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++/* If the i2c layer weren't so broken, we could pass this kind of data
++ around */
++static struct snd_soc_device *wm8971_socdev;
++
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++
++/*
++ * WM8731 2 wire address is determined by GPIO5
++ * state during powerup.
++ * low = 0x1a
++ * high = 0x1b
++ */
++#define I2C_DRIVERID_WM8971 0xfefe /* liam - need a proper id */
++
++static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
++
++/* Magic definition of all other variables and things */
++I2C_CLIENT_INSMOD;
++
++static struct i2c_driver wm8971_i2c_driver;
++static struct i2c_client client_template;
++
++static int wm8971_codec_probe(struct i2c_adapter *adap, int addr, int kind)
++{
++ struct snd_soc_device *socdev = wm8971_socdev;
++ struct wm8971_setup_data *setup = socdev->codec_data;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct i2c_client *i2c;
++ int ret;
++
++ if (addr != setup->i2c_address)
++ return -ENODEV;
++
++ client_template.adapter = adap;
++ client_template.addr = addr;
++
++ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
++ if (i2c == NULL) {
++ kfree(codec);
++ return -ENOMEM;
++ }
++ memcpy(i2c, &client_template, sizeof(struct i2c_client));
++
++ i2c_set_clientdata(i2c, codec);
++
++ codec->control_data = i2c;
++
++ ret = i2c_attach_client(i2c);
++ if (ret < 0) {
++ err("failed to attach codec at addr %x\n", addr);
++ goto err;
++ }
++
++ ret = wm8971_init(socdev);
++ if (ret < 0) {
++ err("failed to initialise WM8971\n");
++ goto err;
++ }
++ return ret;
++
++err:
++ kfree(codec);
++ kfree(i2c);
++ return ret;
++}
++
++static int wm8971_i2c_detach(struct i2c_client *client)
++{
++ struct snd_soc_codec* codec = i2c_get_clientdata(client);
++ i2c_detach_client(client);
++ kfree(codec->reg_cache);
++ kfree(client);
++ return 0;
++}
++
++static int wm8971_i2c_attach(struct i2c_adapter *adap)
++{
++ return i2c_probe(adap, &addr_data, wm8971_codec_probe);
++}
++
++/* corgi i2c codec control layer */
++static struct i2c_driver wm8971_i2c_driver = {
++ .driver = {
++ .name = "WM8971 I2C Codec",
++ .owner = THIS_MODULE,
++ },
++ .id = I2C_DRIVERID_WM8971,
++ .attach_adapter = wm8971_i2c_attach,
++ .detach_client = wm8971_i2c_detach,
++ .command = NULL,
++};
++
++static struct i2c_client client_template = {
++ .name = "WM8971",
++ .driver = &wm8971_i2c_driver,
++};
++#endif
++
++static int wm8971_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct wm8971_setup_data *setup;
++ struct snd_soc_codec *codec;
++ int ret = 0;
++
++ info("WM8971 Audio Codec %s", WM8971_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++ wm8971_socdev = socdev;
++
++ INIT_WORK(&wm8971_dapm_work, wm8971_work, codec);
++ wm8971_workq = create_workqueue("wm8971");
++ if (wm8971_workq == NULL) {
++ kfree(codec);
++ return -ENOMEM;
++ }
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ if (setup->i2c_address) {
++ normal_i2c[0] = setup->i2c_address;
++ codec->hw_write = (hw_write_t)i2c_master_send;
++ ret = i2c_add_driver(&wm8971_i2c_driver);
++ if (ret != 0)
++ printk(KERN_ERR "can't add i2c driver");
++ }
++#else
++ /* Add other interfaces here */
++#endif
++
++ return ret;
++}
++
++/* power down chip */
++static int wm8971_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if (codec->control_data)
++ wm8971_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ if (wm8971_workq)
++ destroy_workqueue(wm8971_workq);
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ i2c_del_driver(&wm8971_i2c_driver);
++#endif
++ kfree(codec);
++
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_wm8971 = {
++ .probe = wm8971_probe,
++ .remove = wm8971_remove,
++ .suspend = wm8971_suspend,
++ .resume = wm8971_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_wm8971);
++
++MODULE_DESCRIPTION("ASoC WM8971 driver");
++MODULE_AUTHOR("Lab126");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8971.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8971.h
+@@ -0,0 +1,61 @@
++/*
++ * wm8971.h -- audio driver for WM8971
++ *
++ * Copyright 2005 Lab126, Inc.
++ *
++ * Author: Kenneth Kiraly <kiraly@lab126.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 _WM8971_H
++#define _WM8971_H
++
++#define WM8971_LINVOL 0x00
++#define WM8971_RINVOL 0x01
++#define WM8971_LOUT1V 0x02
++#define WM8971_ROUT1V 0x03
++#define WM8971_ADCDAC 0x05
++#define WM8971_AUDIO 0x07
++#define WM8971_SRATE 0x08
++#define WM8971_LDAC 0x0a
++#define WM8971_RDAC 0x0b
++#define WM8971_BASS 0x0c
++#define WM8971_TREBLE 0x0d
++#define WM8971_RESET 0x0f
++#define WM8971_ALC1 0x11
++#define WM8971_ALC2 0x12
++#define WM8971_ALC3 0x13
++#define WM8971_NGATE 0x14
++#define WM8971_LADC 0x15
++#define WM8971_RADC 0x16
++#define WM8971_ADCTL1 0x17
++#define WM8971_ADCTL2 0x18
++#define WM8971_PWR1 0x19
++#define WM8971_PWR2 0x1a
++#define WM8971_ADCTL3 0x1b
++#define WM8971_ADCIN 0x1f
++#define WM8971_LADCIN 0x20
++#define WM8971_RADCIN 0x21
++#define WM8971_LOUTM1 0x22
++#define WM8971_LOUTM2 0x23
++#define WM8971_ROUTM1 0x24
++#define WM8971_ROUTM2 0x25
++#define WM8971_MOUTM1 0x26
++#define WM8971_MOUTM2 0x27
++#define WM8971_LOUT2V 0x28
++#define WM8971_ROUT2V 0x29
++#define WM8971_MOUTV 0x2A
++
++struct wm8971_setup_data {
++ unsigned short i2c_address;
++};
++
++extern struct snd_soc_codec_dai wm8971_dai;
++extern struct snd_soc_codec_device soc_codec_dev_wm8971;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8974.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8974.c
+@@ -0,0 +1,935 @@
++/*
++ * wm8974.c -- WM8974 ALSA Soc Audio driver
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ *
++ * Author: Liam Girdwood <liam.girdwood@wolfsonmicro.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.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/version.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/i2c.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++
++#include "wm8974.h"
++
++#define AUDIO_NAME "wm8974"
++#define WM8974_VERSION "0.5"
++
++/*
++ * Debug
++ */
++
++#define WM8974_DEBUG 0
++
++#ifdef WM8974_DEBUG
++#define dbg(format, arg...) \
++ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
++#else
++#define dbg(format, arg...) do {} while (0)
++#endif
++#define err(format, arg...) \
++ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
++#define info(format, arg...) \
++ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
++#define warn(format, arg...) \
++ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
++
++struct snd_soc_codec_device soc_codec_dev_wm8974;
++
++/*
++ * wm8974 register cache
++ * We can't read the WM8974 register space when we are
++ * using 2 wire for device control, so we cache them instead.
++ */
++static const u16 wm8974_reg[WM8974_CACHEREGNUM] = {
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0050, 0x0000, 0x0140, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x00ff,
++ 0x0000, 0x0000, 0x0100, 0x00ff,
++ 0x0000, 0x0000, 0x012c, 0x002c,
++ 0x002c, 0x002c, 0x002c, 0x0000,
++ 0x0032, 0x0000, 0x0000, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0038, 0x000b, 0x0032, 0x0000,
++ 0x0008, 0x000c, 0x0093, 0x00e9,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0003, 0x0010, 0x0000, 0x0000,
++ 0x0000, 0x0002, 0x0000, 0x0000,
++ 0x0000, 0x0000, 0x0039, 0x0000,
++ 0x0000,
++};
++
++#define WM8974_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
++ SND_SOC_DAIFMT_IB_IF)
++
++#define WM8974_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define WM8974_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 | \
++ SNDRV_PCM_RATE_48000)
++
++#define WM8794_BCLK \
++ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | SND_SOC_FSBD(8) |\
++ SND_SOC_FSBD(16) | SND_SOC_FSBD(32))
++
++#define WM8794_HIFI_BITS \
++ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
++ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
++
++static struct snd_soc_dai_mode wm8974_modes[] = {
++ /* codec frame and clock master modes */
++ {
++ .fmt = WM8974_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8794_HIFI_BITS,
++ .pcmrate = WM8974_RATES,
++ .pcmdir = WM8974_DIR,
++ .fs = 256,
++ .bfs = WM8794_BCLK,
++ },
++
++ /* codec frame and clock slave modes */
++ {
++ .fmt = WM8974_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = WM8794_HIFI_BITS,
++ .pcmrate = WM8974_RATES,
++ .pcmdir = WM8974_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++};
++
++/*
++ * read wm8974 register cache
++ */
++static inline unsigned int wm8974_read_reg_cache(struct snd_soc_codec * codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg == WM8974_RESET)
++ return 0;
++ if (reg >= WM8974_CACHEREGNUM)
++ return -1;
++ return cache[reg];
++}
++
++/*
++ * write wm8974 register cache
++ */
++static inline void wm8974_write_reg_cache(struct snd_soc_codec *codec,
++ u16 reg, unsigned int value)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg >= WM8974_CACHEREGNUM)
++ return;
++ cache[reg] = value;
++}
++
++/*
++ * write to the WM8974 register space
++ */
++static int wm8974_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int value)
++{
++ u8 data[2];
++
++ /* data is
++ * D15..D9 WM8974 register offset
++ * D8...D0 register data
++ */
++ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
++ data[1] = value & 0x00ff;
++
++ wm8974_write_reg_cache (codec, reg, value);
++ if (codec->hw_write(codec->control_data, data, 2) == 2)
++ return 0;
++ else
++ return -EIO;
++}
++
++#define wm8974_reset(c) wm8974_write(c, WM8974_RESET, 0)
++
++static const char *wm8974_companding[] = {"Off", "NC", "u-law", "A-law" };
++static const char *wm8974_deemp[] = {"None", "32kHz", "44.1kHz", "48kHz" };
++static const char *wm8974_eqmode[] = {"Capture", "Playback" };
++static const char *wm8974_bw[] = {"Narrow", "Wide" };
++static const char *wm8974_eq1[] = {"80Hz", "105Hz", "135Hz", "175Hz" };
++static const char *wm8974_eq2[] = {"230Hz", "300Hz", "385Hz", "500Hz" };
++static const char *wm8974_eq3[] = {"650Hz", "850Hz", "1.1kHz", "1.4kHz" };
++static const char *wm8974_eq4[] = {"1.8kHz", "2.4kHz", "3.2kHz", "4.1kHz" };
++static const char *wm8974_eq5[] = {"5.3kHz", "6.9kHz", "9kHz", "11.7kHz" };
++static const char *wm8974_alc[] = {"ALC", "Limiter" };
++
++static const struct soc_enum wm8974_enum[] = {
++ SOC_ENUM_SINGLE(WM8974_COMP, 1, 4, wm8974_companding), /* adc */
++ SOC_ENUM_SINGLE(WM8974_COMP, 3, 4, wm8974_companding), /* dac */
++ SOC_ENUM_SINGLE(WM8974_DAC, 4, 4, wm8974_deemp),
++ SOC_ENUM_SINGLE(WM8974_EQ1, 8, 2, wm8974_eqmode),
++
++ SOC_ENUM_SINGLE(WM8974_EQ1, 5, 4, wm8974_eq1),
++ SOC_ENUM_SINGLE(WM8974_EQ2, 8, 2, wm8974_bw),
++ SOC_ENUM_SINGLE(WM8974_EQ2, 5, 4, wm8974_eq2),
++ SOC_ENUM_SINGLE(WM8974_EQ3, 8, 2, wm8974_bw),
++
++ SOC_ENUM_SINGLE(WM8974_EQ3, 5, 4, wm8974_eq3),
++ SOC_ENUM_SINGLE(WM8974_EQ4, 8, 2, wm8974_bw),
++ SOC_ENUM_SINGLE(WM8974_EQ4, 5, 4, wm8974_eq4),
++ SOC_ENUM_SINGLE(WM8974_EQ5, 8, 2, wm8974_bw),
++
++ SOC_ENUM_SINGLE(WM8974_EQ5, 5, 4, wm8974_eq5),
++ SOC_ENUM_SINGLE(WM8974_ALC3, 8, 2, wm8974_alc),
++};
++
++static const struct snd_kcontrol_new wm8974_snd_controls[] = {
++
++SOC_SINGLE("Digital Loopback Switch", WM8974_COMP, 0, 1, 0),
++
++SOC_ENUM("DAC Companding", wm8974_enum[1]),
++SOC_ENUM("ADC Companding", wm8974_enum[0]),
++
++SOC_ENUM("Playback De-emphasis", wm8974_enum[2]),
++SOC_SINGLE("DAC Inversion Switch", WM8974_DAC, 0, 1, 0),
++
++SOC_SINGLE("PCM Volume", WM8974_DACVOL, 0, 127, 0),
++
++SOC_SINGLE("High Pass Filter Switch", WM8974_ADC, 8, 1, 0),
++SOC_SINGLE("High Pass Cut Off", WM8974_ADC, 4, 7, 0),
++SOC_SINGLE("ADC Inversion Switch", WM8974_COMP, 0, 1, 0),
++
++SOC_SINGLE("Capture Volume", WM8974_ADCVOL, 0, 127, 0),
++
++SOC_ENUM("Equaliser Function", wm8974_enum[3]),
++SOC_ENUM("EQ1 Cut Off", wm8974_enum[4]),
++SOC_SINGLE("EQ1 Volume", WM8974_EQ1, 0, 31, 1),
++
++SOC_ENUM("Equaliser EQ2 Bandwith", wm8974_enum[5]),
++SOC_ENUM("EQ2 Cut Off", wm8974_enum[6]),
++SOC_SINGLE("EQ2 Volume", WM8974_EQ2, 0, 31, 1),
++
++SOC_ENUM("Equaliser EQ3 Bandwith", wm8974_enum[7]),
++SOC_ENUM("EQ3 Cut Off", wm8974_enum[8]),
++SOC_SINGLE("EQ3 Volume", WM8974_EQ3, 0, 31, 1),
++
++SOC_ENUM("Equaliser EQ4 Bandwith", wm8974_enum[9]),
++SOC_ENUM("EQ4 Cut Off", wm8974_enum[10]),
++SOC_SINGLE("EQ4 Volume", WM8974_EQ4, 0, 31, 1),
++
++SOC_ENUM("Equaliser EQ5 Bandwith", wm8974_enum[11]),
++SOC_ENUM("EQ5 Cut Off", wm8974_enum[12]),
++SOC_SINGLE("EQ5 Volume", WM8974_EQ5, 0, 31, 1),
++
++SOC_SINGLE("DAC Playback Limiter Switch", WM8974_DACLIM1, 8, 1, 0),
++SOC_SINGLE("DAC Playback Limiter Decay", WM8974_DACLIM1, 4, 15, 0),
++SOC_SINGLE("DAC Playback Limiter Attack", WM8974_DACLIM1, 0, 15, 0),
++
++SOC_SINGLE("DAC Playback Limiter Threshold", WM8974_DACLIM2, 4, 7, 0),
++SOC_SINGLE("DAC Playback Limiter Boost", WM8974_DACLIM2, 0, 15, 0),
++
++SOC_SINGLE("ALC Enable Switch", WM8974_ALC1, 8, 1, 0),
++SOC_SINGLE("ALC Capture Max Gain", WM8974_ALC1, 3, 7, 0),
++SOC_SINGLE("ALC Capture Min Gain", WM8974_ALC1, 0, 7, 0),
++
++SOC_SINGLE("ALC Capture ZC Switch", WM8974_ALC2, 8, 1, 0),
++SOC_SINGLE("ALC Capture Hold", WM8974_ALC2, 4, 7, 0),
++SOC_SINGLE("ALC Capture Target", WM8974_ALC2, 0, 15, 0),
++
++SOC_ENUM("ALC Capture Mode", wm8974_enum[13]),
++SOC_SINGLE("ALC Capture Decay", WM8974_ALC3, 4, 15, 0),
++SOC_SINGLE("ALC Capture Attack", WM8974_ALC3, 0, 15, 0),
++
++SOC_SINGLE("ALC Capture Noise Gate Switch", WM8974_NGATE, 3, 1, 0),
++SOC_SINGLE("ALC Capture Noise Gate Threshold", WM8974_NGATE, 0, 7, 0),
++
++SOC_SINGLE("Capture PGA ZC Switch", WM8974_INPPGA, 7, 1, 0),
++SOC_SINGLE("Capture PGA Volume", WM8974_INPPGA, 0, 63, 0),
++
++SOC_SINGLE("Speaker Playback ZC Switch", WM8974_SPKVOL, 7, 1, 0),
++SOC_SINGLE("Speaker Playback Switch", WM8974_SPKVOL, 6, 1, 1),
++SOC_SINGLE("Speaker Playback Volume", WM8974_SPKVOL, 0, 63, 0),
++
++SOC_SINGLE("Capture Boost(+20dB)", WM8974_ADCBOOST, 8, 1, 0),
++SOC_SINGLE("Mono Playback Switch", WM8974_MONOMIX, 6, 1, 0),
++};
++
++/* add non dapm controls */
++static int wm8974_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(wm8974_snd_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8974_snd_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++
++ return 0;
++}
++
++/* Speaker Output Mixer */
++static const struct snd_kcontrol_new wm8974_speaker_mixer_controls[] = {
++SOC_DAPM_SINGLE("Line Bypass Switch", WM8974_SPKMIX, 1, 1, 0),
++SOC_DAPM_SINGLE("Aux Playback Switch", WM8974_SPKMIX, 5, 1, 0),
++SOC_DAPM_SINGLE("PCM Playback Switch", WM8974_SPKMIX, 0, 1, 1),
++};
++
++/* Mono Output Mixer */
++static const struct snd_kcontrol_new wm8974_mono_mixer_controls[] = {
++SOC_DAPM_SINGLE("Line Bypass Switch", WM8974_MONOMIX, 1, 1, 0),
++SOC_DAPM_SINGLE("Aux Playback Switch", WM8974_MONOMIX, 2, 1, 0),
++SOC_DAPM_SINGLE("PCM Playback Switch", WM8974_MONOMIX, 0, 1, 1),
++};
++
++/* AUX Input boost vol */
++static const struct snd_kcontrol_new wm8974_aux_boost_controls =
++SOC_DAPM_SINGLE("Aux Volume", WM8974_ADCBOOST, 0, 7, 0);
++
++/* Mic Input boost vol */
++static const struct snd_kcontrol_new wm8974_mic_boost_controls =
++SOC_DAPM_SINGLE("Mic Volume", WM8974_ADCBOOST, 4, 7, 0);
++
++/* Capture boost switch */
++static const struct snd_kcontrol_new wm8974_capture_boost_controls =
++SOC_DAPM_SINGLE("Capture Boost Switch", WM8974_INPPGA, 6, 1, 0);
++
++/* Aux In to PGA */
++static const struct snd_kcontrol_new wm8974_aux_capture_boost_controls =
++SOC_DAPM_SINGLE("Aux Capture Boost Switch", WM8974_INPPGA, 2, 1, 0);
++
++/* Mic P In to PGA */
++static const struct snd_kcontrol_new wm8974_micp_capture_boost_controls =
++SOC_DAPM_SINGLE("Mic P Capture Boost Switch", WM8974_INPPGA, 0, 1, 0);
++
++/* Mic N In to PGA */
++static const struct snd_kcontrol_new wm8974_micn_capture_boost_controls =
++SOC_DAPM_SINGLE("Mic N Capture Boost Switch", WM8974_INPPGA, 1, 1, 0);
++
++static const struct snd_soc_dapm_widget wm8974_dapm_widgets[] = {
++SND_SOC_DAPM_MIXER("Speaker Mixer", WM8974_POWER3, 2, 0,
++ &wm8974_speaker_mixer_controls[0],
++ ARRAY_SIZE(wm8974_speaker_mixer_controls)),
++SND_SOC_DAPM_MIXER("Mono Mixer", WM8974_POWER3, 3, 0,
++ &wm8974_mono_mixer_controls[0],
++ ARRAY_SIZE(wm8974_mono_mixer_controls)),
++SND_SOC_DAPM_DAC("DAC", "HiFi Playback", WM8974_POWER3, 0, 0),
++SND_SOC_DAPM_ADC("ADC", "HiFi Capture", WM8974_POWER3, 0, 0),
++SND_SOC_DAPM_PGA("Aux Input", WM8974_POWER1, 6, 0, NULL, 0),
++SND_SOC_DAPM_PGA("SpkN Out", WM8974_POWER3, 5, 0, NULL, 0),
++SND_SOC_DAPM_PGA("SpkP Out", WM8974_POWER3, 6, 0, NULL, 0),
++SND_SOC_DAPM_PGA("Mono Out", WM8974_POWER3, 7, 0, NULL, 0),
++SND_SOC_DAPM_PGA("Mic PGA", WM8974_POWER2, 2, 0, NULL, 0),
++
++SND_SOC_DAPM_PGA("Aux Boost", SND_SOC_NOPM, 0, 0,
++ &wm8974_aux_boost_controls, 1),
++SND_SOC_DAPM_PGA("Mic Boost", SND_SOC_NOPM, 0, 0,
++ &wm8974_mic_boost_controls, 1),
++SND_SOC_DAPM_SWITCH("Capture Boost", SND_SOC_NOPM, 0, 0,
++ &wm8974_capture_boost_controls),
++
++SND_SOC_DAPM_MIXER("Boost Mixer", WM8974_POWER2, 4, 0, NULL, 0),
++
++SND_SOC_DAPM_MICBIAS("Mic Bias", WM8974_POWER1, 4, 0),
++
++SND_SOC_DAPM_INPUT("MICN"),
++SND_SOC_DAPM_INPUT("MICP"),
++SND_SOC_DAPM_INPUT("AUX"),
++SND_SOC_DAPM_OUTPUT("MONOOUT"),
++SND_SOC_DAPM_OUTPUT("SPKOUTP"),
++SND_SOC_DAPM_OUTPUT("SPKOUTN"),
++};
++
++static const char *audio_map[][3] = {
++ /* Mono output mixer */
++ {"Mono Mixer", "PCM Playback Switch", "DAC"},
++ {"Mono Mixer", "Aux Playback Switch", "Aux Input"},
++ {"Mono Mixer", "Line Bypass Switch", "Boost Mixer"},
++
++ /* Speaker output mixer */
++ {"Speaker Mixer", "PCM Playback Switch", "DAC"},
++ {"Speaker Mixer", "Aux Playback Switch", "Aux Input"},
++ {"Speaker Mixer", "Line Bypass Switch", "Boost Mixer"},
++
++ /* Outputs */
++ {"Mono Out", NULL, "Mono Mixer"},
++ {"MONOOUT", NULL, "Mono Out"},
++ {"SpkN Out", NULL, "Speaker Mixer"},
++ {"SpkP Out", NULL, "Speaker Mixer"},
++ {"SPKOUTN", NULL, "SpkN Out"},
++ {"SPKOUTP", NULL, "SpkP Out"},
++
++ /* Boost Mixer */
++ {"Boost Mixer", NULL, "ADC"},
++ {"Capture Boost Switch", "Aux Capture Boost Switch", "AUX"},
++ {"Aux Boost", "Aux Volume", "Boost Mixer"},
++ {"Capture Boost", "Capture Switch", "Boost Mixer"},
++ {"Mic Boost", "Mic Volume", "Boost Mixer"},
++
++ /* Inputs */
++ {"MICP", NULL, "Mic Boost"},
++ {"MICN", NULL, "Mic PGA"},
++ {"Mic PGA", NULL, "Capture Boost"},
++ {"AUX", NULL, "Aux Input"},
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int wm8974_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(wm8974_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm8974_dapm_widgets[i]);
++ }
++
++ /* set up 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]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++struct pll_ {
++ unsigned int in_hz, out_hz;
++ unsigned int pre:4; /* prescale - 1 */
++ unsigned int n:4;
++ unsigned int k;
++};
++
++struct pll_ pll[] = {
++ {12000000, 11289600, 0, 7, 0x86c220},
++ {12000000, 12288000, 0, 8, 0x3126e8},
++ {13000000, 11289600, 0, 6, 0xf28bd4},
++ {13000000, 12288000, 0, 7, 0x8fd525},
++ {12288000, 11289600, 0, 7, 0x59999a},
++ {11289600, 12288000, 0, 8, 0x80dee9},
++ /* liam - add more entries */
++};
++
++static int set_pll(struct snd_soc_codec *codec, unsigned int in,
++ unsigned int out)
++{
++ int i;
++ u16 reg;
++
++ if(out == 0) {
++ reg = wm8974_read_reg_cache(codec, WM8974_POWER1);
++ wm8974_write(codec, WM8974_POWER1, reg & 0x1df);
++ return 0;
++ }
++
++ for(i = 0; i < ARRAY_SIZE(pll); i++) {
++ if (in == pll[i].in_hz && out == pll[i].out_hz) {
++ wm8974_write(codec, WM8974_PLLN, (pll[i].pre << 4) | pll[i].n);
++ wm8974_write(codec, WM8974_PLLK1, pll[i].k >> 18);
++ wm8974_write(codec, WM8974_PLLK1, (pll[i].k >> 9) && 0x1ff);
++ wm8974_write(codec, WM8974_PLLK1, pll[i].k && 0x1ff);
++ reg = wm8974_read_reg_cache(codec, WM8974_POWER1);
++ wm8974_write(codec, WM8974_POWER1, reg | 0x020);
++ return 0;
++ }
++ }
++ return -EINVAL;
++}
++
++/* mclk dividers * 2 */
++static unsigned char mclk_div[] = {2, 3, 4, 6, 8, 12, 16, 24};
++
++/* we need 256FS to drive the DAC's and ADC's */
++static unsigned int wm8974_config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ int i, j, best_clk = info->fs * info->rate;
++
++ /* can we run at this clk without the PLL ? */
++ for (i = 0; i < ARRAY_SIZE(mclk_div); i++) {
++ if ((best_clk >> 1) * mclk_div[i] == clk) {
++ dai->pll_in = 0;
++ dai->clk_div = mclk_div[i];
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++
++ /* now check for PLL support */
++ for (i = 0; i < ARRAY_SIZE(pll); i++) {
++ if (pll[i].in_hz == clk) {
++ for (j = 0; j < ARRAY_SIZE(mclk_div); j++) {
++ if (pll[i].out_hz == mclk_div[j] * (best_clk >> 1)) {
++ dai->pll_in = clk;
++ dai->pll_out = pll[i].out_hz;
++ dai->clk_div = mclk_div[j];
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++ }
++ }
++
++ /* this clk is not supported */
++ return 0;
++}
++
++static int wm8974_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct snd_soc_codec_dai *dai = rtd->codec_dai;
++ u16 iface = 0, bfs, clk = 0, adn;
++ int fs = 48000 << 7, i;
++
++ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
++ switch (bfs) {
++ case 2:
++ clk |= 0x1 << 2;
++ break;
++ case 4:
++ clk |= 0x2 << 2;
++ break;
++ case 8:
++ clk |= 0x3 << 2;
++ break;
++ case 16:
++ clk |= 0x4 << 2;
++ break;
++ case 32:
++ clk |= 0x5 << 2;
++ break;
++ }
++
++ /* set master/slave audio interface */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ clk |= 0x0001;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ break;
++ }
++
++ /* interface format */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ iface |= 0x0010;
++ break;
++ case SND_SOC_DAIFMT_RIGHT_J:
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ iface |= 0x0008;
++ break;
++ case SND_SOC_DAIFMT_DSP_A:
++ iface |= 0x00018;
++ break;
++ }
++
++ /* bit size */
++ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ iface |= 0x0020;
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ iface |= 0x0040;
++ break;
++ case SNDRV_PCM_FMTBIT_S32_LE:
++ iface |= 0x0060;
++ break;
++ }
++
++ /* clock inversion */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_IF:
++ iface |= 0x0180;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ iface |= 0x0100;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ iface |= 0x0080;
++ break;
++ }
++
++ /* filter coefficient */
++ adn = wm8974_read_reg_cache(codec, WM8974_ADD) & 0x1f1;
++ switch (rtd->codec_dai->dai_runtime.pcmrate) {
++ case SNDRV_PCM_RATE_8000:
++ adn |= 0x5 << 1;
++ fs = 8000 << 7;
++ break;
++ case SNDRV_PCM_RATE_11025:
++ adn |= 0x4 << 1;
++ fs = 11025 << 7;
++ break;
++ case SNDRV_PCM_RATE_16000:
++ adn |= 0x3 << 1;
++ fs = 16000 << 7;
++ break;
++ case SNDRV_PCM_RATE_22050:
++ adn |= 0x2 << 1;
++ fs = 22050 << 7;
++ break;
++ case SNDRV_PCM_RATE_32000:
++ adn |= 0x1 << 1;
++ fs = 32000 << 7;
++ break;
++ case SNDRV_PCM_RATE_44100:
++ fs = 44100 << 7;
++ break;
++ }
++
++ /* do we need to enable the PLL */
++ if(dai->pll_in)
++ set_pll(codec, dai->pll_in, dai->pll_out);
++
++ /* divide the clock to 256 fs */
++ for(i = 0; i < ARRAY_SIZE(mclk_div); i++) {
++ if (dai->clk_div == mclk_div[i]) {
++ clk |= i << 5;
++ clk &= 0xff;
++ goto set;
++ }
++ }
++
++set:
++ /* set iface */
++ wm8974_write(codec, WM8974_IFACE, iface);
++ wm8974_write(codec, WM8974_CLOCK, clk);
++
++ return 0;
++}
++
++static int wm8974_hw_free(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ set_pll(codec, 0, 0);
++ return 0;
++}
++
++static int wm8974_mute(struct snd_soc_codec *codec,
++ struct snd_soc_codec_dai *dai, int mute)
++{
++ u16 mute_reg = wm8974_read_reg_cache(codec, WM8974_DAC) & 0xffbf;
++ if(mute)
++ wm8974_write(codec, WM8974_DAC, mute_reg | 0x40);
++ else
++ wm8974_write(codec, WM8974_DAC, mute_reg);
++ return 0;
++}
++
++/* liam need to make this lower power with dapm */
++static int wm8974_dapm_event(struct snd_soc_codec *codec, int event)
++{
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ /* vref/mid, clk and osc on, dac unmute, active */
++ wm8974_write(codec, WM8974_POWER1, 0x1ff);
++ wm8974_write(codec, WM8974_POWER2, 0x1ff);
++ wm8974_write(codec, WM8974_POWER3, 0x1ff);
++ break;
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ break;
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* everything off except vref/vmid, dac mute, inactive */
++
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ /* everything off, dac mute, inactive */
++ wm8974_write(codec, WM8974_POWER1, 0x0);
++ wm8974_write(codec, WM8974_POWER2, 0x0);
++ wm8974_write(codec, WM8974_POWER3, 0x0);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++struct snd_soc_codec_dai wm8974_dai = {
++ .name = "WM8974 HiFi",
++ .playback = {
++ .stream_name = "Playback",
++ .channels_min = 1,
++ .channels_max = 1,
++ },
++ .capture = {
++ .stream_name = "Capture",
++ .channels_min = 1,
++ .channels_max = 1,
++ },
++ .config_sysclk = wm8974_config_sysclk,
++ .digital_mute = wm8974_mute,
++ .ops = {
++ .prepare = wm8974_pcm_prepare,
++ .hw_free = wm8974_hw_free,
++ },
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8974_modes),
++ .mode = wm8974_modes,
++ },
++};
++EXPORT_SYMBOL_GPL(wm8974_dai);
++
++static int wm8974_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ wm8974_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int wm8974_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++ u8 data[2];
++ u16 *cache = codec->reg_cache;
++
++ /* Sync reg_cache with the hardware */
++ for (i = 0; i < ARRAY_SIZE(wm8974_reg); i++) {
++ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
++ data[1] = cache[i] & 0x00ff;
++ codec->hw_write(codec->control_data, data, 2);
++ }
++ wm8974_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ wm8974_dapm_event(codec, codec->suspend_dapm_state);
++ return 0;
++}
++
++/*
++ * initialise the WM8974 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int wm8974_init(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int ret = 0;
++
++ codec->name = "WM8974";
++ codec->owner = THIS_MODULE;
++ codec->read = wm8974_read_reg_cache;
++ codec->write = wm8974_write;
++ codec->dapm_event = wm8974_dapm_event;
++ codec->dai = &wm8974_dai;
++ codec->num_dai = 1;
++ codec->reg_cache_size = ARRAY_SIZE(wm8974_reg);
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8974_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL)
++ return -ENOMEM;
++ memcpy(codec->reg_cache, wm8974_reg,
++ sizeof(u16) * ARRAY_SIZE(wm8974_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8974_reg);
++
++ wm8974_reset(codec);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if(ret < 0) {
++ kfree(codec->reg_cache);
++ return ret;
++ }
++
++ /* power on device */
++ wm8974_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ wm8974_add_controls(codec);
++ wm8974_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if(ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++static struct snd_soc_device *wm8974_socdev;
++
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++
++/*
++ * WM8974 2 wire address is 0x1a
++ */
++#define I2C_DRIVERID_WM8974 0xfefe /* liam - need a proper id */
++
++static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
++
++/* Magic definition of all other variables and things */
++I2C_CLIENT_INSMOD;
++
++static struct i2c_driver wm8974_i2c_driver;
++static struct i2c_client client_template;
++
++/* If the i2c layer weren't so broken, we could pass this kind of data
++ around */
++
++static int wm8974_codec_probe(struct i2c_adapter *adap, int addr, int kind)
++{
++ struct snd_soc_device *socdev = wm8974_socdev;
++ struct wm8974_setup_data *setup = socdev->codec_data;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct i2c_client *i2c;
++ int ret;
++
++ if (addr != setup->i2c_address)
++ return -ENODEV;
++
++ client_template.adapter = adap;
++ client_template.addr = addr;
++
++ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
++ if (i2c == NULL) {
++ kfree(codec);
++ return -ENOMEM;
++ }
++ memcpy(i2c, &client_template, sizeof(struct i2c_client));
++ i2c_set_clientdata(i2c, codec);
++ codec->control_data = i2c;
++
++ ret = i2c_attach_client(i2c);
++ if(ret < 0) {
++ err("failed to attach codec at addr %x\n", addr);
++ goto err;
++ }
++
++ ret = wm8974_init(socdev);
++ if(ret < 0) {
++ err("failed to initialise WM8974\n");
++ goto err;
++ }
++ return ret;
++
++err:
++ kfree(codec);
++ kfree(i2c);
++ return ret;
++}
++
++static int wm8974_i2c_detach(struct i2c_client *client)
++{
++ struct snd_soc_codec *codec = i2c_get_clientdata(client);
++ i2c_detach_client(client);
++ kfree(codec->reg_cache);
++ kfree(client);
++ return 0;
++}
++
++static int wm8974_i2c_attach(struct i2c_adapter *adap)
++{
++ return i2c_probe(adap, &addr_data, wm8974_codec_probe);
++}
++
++/* corgi i2c codec control layer */
++static struct i2c_driver wm8974_i2c_driver = {
++ .driver = {
++ .name = "WM8974 I2C Codec",
++ .owner = THIS_MODULE,
++ },
++ .id = I2C_DRIVERID_WM8974,
++ .attach_adapter = wm8974_i2c_attach,
++ .detach_client = wm8974_i2c_detach,
++ .command = NULL,
++};
++
++static struct i2c_client client_template = {
++ .name = "WM8974",
++ .driver = &wm8974_i2c_driver,
++};
++#endif
++
++static int wm8974_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct wm8974_setup_data *setup;
++ struct snd_soc_codec *codec;
++ int ret = 0;
++
++ info("WM8974 Audio Codec %s", WM8974_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ wm8974_socdev = socdev;
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ if (setup->i2c_address) {
++ normal_i2c[0] = setup->i2c_address;
++ codec->hw_write = (hw_write_t)i2c_master_send;
++ ret = i2c_add_driver(&wm8974_i2c_driver);
++ if (ret != 0)
++ printk(KERN_ERR "can't add i2c driver");
++ }
++#else
++ /* Add other interfaces here */
++#endif
++ return ret;
++}
++
++/* power down chip */
++static int wm8974_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if (codec->control_data)
++ wm8974_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ i2c_del_driver(&wm8974_i2c_driver);
++#endif
++ kfree(codec);
++
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_wm8974 = {
++ .probe = wm8974_probe,
++ .remove = wm8974_remove,
++ .suspend = wm8974_suspend,
++ .resume = wm8974_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_wm8974);
++
++MODULE_DESCRIPTION("ASoC WM8974 driver");
++MODULE_AUTHOR("Liam Girdwood");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8974.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8974.h
+@@ -0,0 +1,64 @@
++/*
++ * wm8974.h -- WM8974 Soc Audio driver
++ *
++ * 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.
++ */
++
++#ifndef _WM8974_H
++#define _WM8974_H
++
++/* WM8974 register space */
++
++#define WM8974_RESET 0x0
++#define WM8974_POWER1 0x1
++#define WM8974_POWER2 0x2
++#define WM8974_POWER3 0x3
++#define WM8974_IFACE 0x4
++#define WM8974_COMP 0x5
++#define WM8974_CLOCK 0x6
++#define WM8974_ADD 0x7
++#define WM8974_GPIO 0x8
++#define WM8974_DAC 0xa
++#define WM8974_DACVOL 0xb
++#define WM8974_ADC 0xe
++#define WM8974_ADCVOL 0xf
++#define WM8974_EQ1 0x12
++#define WM8974_EQ2 0x13
++#define WM8974_EQ3 0x14
++#define WM8974_EQ4 0x15
++#define WM8974_EQ5 0x16
++#define WM8974_DACLIM1 0x18
++#define WM8974_DACLIM2 0x19
++#define WM8974_NOTCH1 0x1b
++#define WM8974_NOTCH2 0x1c
++#define WM8974_NOTCH3 0x1d
++#define WM8974_NOTCH4 0x1e
++#define WM8974_ALC1 0x20
++#define WM8974_ALC2 0x21
++#define WM8974_ALC3 0x22
++#define WM8974_NGATE 0x23
++#define WM8974_PLLN 0x24
++#define WM8974_PLLK1 0x25
++#define WM8974_PLLK2 0x26
++#define WM8974_PLLK3 0x27
++#define WM8974_ATTEN 0x28
++#define WM8974_INPUT 0x2c
++#define WM8974_INPPGA 0x2d
++#define WM8974_ADCBOOST 0x2f
++#define WM8974_OUTPUT 0x31
++#define WM8974_SPKMIX 0x32
++#define WM8974_SPKVOL 0x36
++#define WM8974_MONOMIX 0x38
++
++#define WM8974_CACHEREGNUM 57
++
++struct wm8974_setup_data {
++ unsigned short i2c_address;
++};
++
++extern struct snd_soc_codec_dai wm8974_dai;
++extern struct snd_soc_codec_device soc_codec_dev_wm8974;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm9712.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm9712.c
+@@ -0,0 +1,781 @@
++/*
++ * wm9712.c -- ALSA Soc WM9712 codec support
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or 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
++ * 4th Feb 2006 Initial version.
++ */
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/version.h>
++#include <linux/kernel.h>
++#include <linux/device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/ac97_codec.h>
++#include <sound/initval.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++
++#define WM9712_VERSION "0.4"
++
++static unsigned int ac97_read(struct snd_soc_codec *codec,
++ unsigned int reg);
++static int ac97_write(struct snd_soc_codec *codec,
++ unsigned int reg, unsigned int val);
++
++#define AC97_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define AC97_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 | \
++ SNDRV_PCM_RATE_48000)
++
++/* may need to expand this */
++static struct snd_soc_dai_mode ac97_modes[] = {
++ {
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S18_3LE,
++ .pcmrate = AC97_RATES,
++ .pcmdir = AC97_DIR,
++ },
++};
++
++/*
++ * WM9712 register cache
++ */
++static const u16 wm9712_reg[] = {
++ 0x6174, 0x8000, 0x8000, 0x8000, // 6
++ 0xf0f0, 0xaaa0, 0xc008, 0x6808, // e
++ 0xe808, 0xaaa0, 0xad00, 0x8000, // 16
++ 0xe808, 0x3000, 0x8000, 0x0000, // 1e
++ 0x0000, 0x0000, 0x0000, 0x000f, // 26
++ 0x0405, 0x0410, 0xbb80, 0xbb80, // 2e
++ 0x0000, 0xbb80, 0x0000, 0x0000, // 36
++ 0x0000, 0x2000, 0x0000, 0x0000, // 3e
++ 0x0000, 0x0000, 0x0000, 0x0000, // 46
++ 0x0000, 0x0000, 0xf83e, 0xffff, // 4e
++ 0x0000, 0x0000, 0x0000, 0xf83e, // 56
++ 0x0008, 0x0000, 0x0000, 0x0000, // 5e
++ 0xb032, 0x3e00, 0x0000, 0x0000, // 66
++ 0x0000, 0x0000, 0x0000, 0x0000, // 6e
++ 0x0000, 0x0000, 0x0000, 0x0006, // 76
++ 0x0001, 0x0000, 0x574d, 0x4c12, // 7e
++ 0x0000, 0x0000 // virtual hp mixers
++};
++
++/* virtual HP mixers regs */
++#define HPL_MIXER 0x80
++#define HPR_MIXER 0x82
++
++static const char *wm9712_alc_select[] = {"None", "Left", "Right", "Stereo"};
++static const char *wm9712_alc_mux[] = {"Stereo", "Left", "Right", "None"};
++static const char *wm9712_out3_src[] = {"Left", "VREF", "Left + Right",
++ "Mono"};
++static const char *wm9712_spk_src[] = {"Speaker Mix", "Headphone Mix"};
++static const char *wm9712_rec_adc[] = {"Stereo", "Left", "Right", "Mute"};
++static const char *wm9712_base[] = {"Linear Control", "Adaptive Boost"};
++static const char *wm9712_rec_gain[] = {"+1.5dB Steps", "+0.75dB Steps"};
++static const char *wm9712_mic[] = {"Mic 1", "Differential", "Mic 2",
++ "Stereo"};
++static const char *wm9712_rec_sel[] = {"Mic", "NC", "NC", "Speaker Mixer",
++ "Line", "Headphone Mixer", "Phone Mixer", "Phone"};
++static const char *wm9712_ng_type[] = {"Constant Gain", "Mute"};
++static const char *wm9712_diff_sel[] = {"Mic", "Line"};
++
++static const struct soc_enum wm9712_enum[] = {
++SOC_ENUM_SINGLE(AC97_PCI_SVID, 14, 4, wm9712_alc_select),
++SOC_ENUM_SINGLE(AC97_VIDEO, 12, 4, wm9712_alc_mux),
++SOC_ENUM_SINGLE(AC97_AUX, 9, 4, wm9712_out3_src),
++SOC_ENUM_SINGLE(AC97_AUX, 8, 2, wm9712_spk_src),
++SOC_ENUM_SINGLE(AC97_REC_SEL, 12, 4, wm9712_rec_adc),
++SOC_ENUM_SINGLE(AC97_MASTER_TONE, 15, 2, wm9712_base),
++SOC_ENUM_DOUBLE(AC97_REC_GAIN, 14, 6, 2, wm9712_rec_gain),
++SOC_ENUM_SINGLE(AC97_MIC, 5, 4, wm9712_mic),
++SOC_ENUM_SINGLE(AC97_REC_SEL, 8, 8, wm9712_rec_sel),
++SOC_ENUM_SINGLE(AC97_REC_SEL, 0, 8, wm9712_rec_sel),
++SOC_ENUM_SINGLE(AC97_PCI_SVID, 5, 2, wm9712_ng_type),
++SOC_ENUM_SINGLE(0x5c, 8, 2, wm9712_diff_sel),
++};
++
++static const struct snd_kcontrol_new wm9712_snd_ac97_controls[] = {
++SOC_DOUBLE("Speaker Playback Volume", AC97_MASTER, 8, 0, 31, 1),
++SOC_SINGLE("Speaker Playback Switch", AC97_MASTER, 15, 1, 1),
++SOC_DOUBLE("Headphone Playback Volume", AC97_HEADPHONE, 8, 0, 31, 1),
++SOC_SINGLE("Headphone Playback Switch", AC97_HEADPHONE,15, 1, 1),
++
++SOC_SINGLE("Speaker Playback ZC Switch", AC97_MASTER, 7, 1, 0),
++SOC_SINGLE("Speaker Playback Invert Switch", AC97_MASTER, 6, 1, 0),
++SOC_SINGLE("Headphone Playback ZC Switch", AC97_HEADPHONE, 7, 1, 0),
++SOC_SINGLE("Mono Playback ZC Switch", AC97_MASTER_MONO, 7, 1, 0),
++SOC_SINGLE("Mono Playback Volume", AC97_MASTER_MONO, 0, 31, 0),
++
++SOC_SINGLE("ALC Target Volume", AC97_CODEC_CLASS_REV, 12, 15, 0),
++SOC_SINGLE("ALC Hold Time", AC97_CODEC_CLASS_REV, 8, 15, 0),
++SOC_SINGLE("ALC Decay Time", AC97_CODEC_CLASS_REV, 4, 15, 0),
++SOC_SINGLE("ALC Attack Time", AC97_CODEC_CLASS_REV, 0, 15, 0),
++SOC_ENUM("ALC Function", wm9712_enum[0]),
++SOC_SINGLE("ALC Max Volume", AC97_PCI_SVID, 11, 7, 0),
++SOC_SINGLE("ALC ZC Timeout", AC97_PCI_SVID, 9, 3, 1),
++SOC_SINGLE("ALC ZC Switch", AC97_PCI_SVID, 8, 1, 0),
++SOC_SINGLE("ALC NG Switch", AC97_PCI_SVID, 7, 1, 0),
++SOC_ENUM("ALC NG Type", wm9712_enum[10]),
++SOC_SINGLE("ALC NG Threshold", AC97_PCI_SVID, 0, 31, 1),
++
++SOC_SINGLE("Mic Headphone Volume", AC97_VIDEO, 12, 7, 1),
++SOC_SINGLE("ALC Headphone Volume", AC97_VIDEO, 7, 7, 1),
++
++SOC_SINGLE("Out3 Switch", AC97_AUX, 15, 1, 1),
++SOC_SINGLE("Out3 ZC Switch", AC97_AUX, 7, 1, 1),
++SOC_SINGLE("Out3 Volume", AC97_AUX, 0, 31, 1),
++
++SOC_SINGLE("PCBeep Bypass Headphone Volume", AC97_PC_BEEP, 12, 7, 1),
++SOC_SINGLE("PCBeep Bypass Speaker Volume", AC97_PC_BEEP, 8, 7, 1),
++SOC_SINGLE("PCBeep Bypass Phone Volume", AC97_PC_BEEP, 4, 7, 1),
++
++SOC_SINGLE("Aux Playback Headphone Volume", AC97_CD, 12, 7, 1),
++SOC_SINGLE("Aux Playback Speaker Volume", AC97_CD, 8, 7, 1),
++SOC_SINGLE("Aux Playback Phone Volume", AC97_CD, 4, 7, 1),
++
++SOC_SINGLE("Phone Volume", AC97_PHONE, 0, 15, 0),
++SOC_DOUBLE("Line Capture Volume", AC97_LINE, 8, 0, 31, 1),
++
++SOC_SINGLE("Capture 20dB Boost Switch", AC97_REC_SEL, 14, 1, 0),
++SOC_SINGLE("Capture to Phone 20dB Boost Switch", AC97_REC_SEL, 11, 1, 1),
++
++SOC_SINGLE("3D Upper Cut-off Switch", AC97_3D_CONTROL, 5, 1, 1),
++SOC_SINGLE("3D Lower Cut-off Switch", AC97_3D_CONTROL, 4, 1, 1),
++SOC_SINGLE("3D Playback Volume", AC97_3D_CONTROL, 0, 15, 0),
++
++SOC_ENUM("Bass Control", wm9712_enum[5]),
++SOC_SINGLE("Bass Cut-off Switch", AC97_MASTER_TONE, 12, 1, 1),
++SOC_SINGLE("Tone Cut-off Switch", AC97_MASTER_TONE, 4, 1, 1),
++SOC_SINGLE("Playback Attenuate (-6dB) Switch", AC97_MASTER_TONE, 6, 1, 0),
++SOC_SINGLE("Bass Volume", AC97_MASTER_TONE, 8, 15, 0),
++SOC_SINGLE("Treble Volume", AC97_MASTER_TONE, 0, 15, 0),
++
++SOC_SINGLE("Capture ADC Switch", AC97_REC_GAIN, 15, 1, 1),
++SOC_ENUM("Capture Volume Steps", wm9712_enum[6]),
++SOC_DOUBLE("Capture Volume", AC97_REC_GAIN, 8, 0, 63, 1),
++SOC_SINGLE("Capture ZC Switch", AC97_REC_GAIN, 7, 1, 0),
++
++SOC_SINGLE("Mic 1 Volume", AC97_MIC, 8, 31, 1),
++SOC_SINGLE("Mic 2 Volume", AC97_MIC, 0, 31, 1),
++SOC_SINGLE("Mic 20dB Boost Switch", AC97_MIC, 7, 1, 0),
++};
++
++/* add non dapm controls */
++static int wm9712_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(wm9712_snd_ac97_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm9712_snd_ac97_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++ return 0;
++}
++
++/* We have to create a fake left and right HP mixers because
++ * the codec only has a single control that is shared by both channels.
++ * This makes it impossible to determine the audio path.
++ */
++static int mixer_event (struct snd_soc_dapm_widget *w, int event)
++{
++ u16 l, r, beep, line, phone, mic, pcm, aux;
++
++ l = ac97_read(w->codec, HPL_MIXER);
++ r = ac97_read(w->codec, HPR_MIXER);
++ beep = ac97_read(w->codec, AC97_PC_BEEP);
++ mic = ac97_read(w->codec, AC97_VIDEO);
++ phone = ac97_read(w->codec, AC97_PHONE);
++ line = ac97_read(w->codec, AC97_LINE);
++ pcm = ac97_read(w->codec, AC97_PCM);
++ aux = ac97_read(w->codec, AC97_CD);
++
++ if (l & 0x1 || r & 0x1)
++ ac97_write(w->codec, AC97_VIDEO, mic & 0x7fff);
++ else
++ ac97_write(w->codec, AC97_VIDEO, mic | 0x8000);
++
++ if (l & 0x2 || r & 0x2)
++ ac97_write(w->codec, AC97_PCM, pcm & 0x7fff);
++ else
++ ac97_write(w->codec, AC97_PCM, pcm | 0x8000);
++
++ if (l & 0x4 || r & 0x4)
++ ac97_write(w->codec, AC97_LINE, line & 0x7fff);
++ else
++ ac97_write(w->codec, AC97_LINE, line | 0x8000);
++
++ if (l & 0x8 || r & 0x8)
++ ac97_write(w->codec, AC97_PHONE, phone & 0x7fff);
++ else
++ ac97_write(w->codec, AC97_PHONE, phone | 0x8000);
++
++ if (l & 0x10 || r & 0x10)
++ ac97_write(w->codec, AC97_CD, aux & 0x7fff);
++ else
++ ac97_write(w->codec, AC97_CD, aux | 0x8000);
++
++ if (l & 0x20 || r & 0x20)
++ ac97_write(w->codec, AC97_PC_BEEP, beep & 0x7fff);
++ else
++ ac97_write(w->codec, AC97_PC_BEEP, beep | 0x8000);
++
++ return 0;
++}
++
++/* Left Headphone Mixers */
++static const struct snd_kcontrol_new wm9712_hpl_mixer_controls[] = {
++ SOC_DAPM_SINGLE("PCBeep Bypass Switch", HPL_MIXER, 5, 1, 0),
++ SOC_DAPM_SINGLE("Aux Playback Switch", HPL_MIXER, 4, 1, 0),
++ SOC_DAPM_SINGLE("Phone Bypass Switch", HPL_MIXER, 3, 1, 0),
++ SOC_DAPM_SINGLE("Line Bypass Switch", HPL_MIXER, 2, 1, 0),
++ SOC_DAPM_SINGLE("PCM Playback Switch", HPL_MIXER, 1, 1, 0),
++ SOC_DAPM_SINGLE("Mic Sidetone Switch", HPL_MIXER, 0, 1, 0),
++};
++
++/* Right Headphone Mixers */
++static const struct snd_kcontrol_new wm9712_hpr_mixer_controls[] = {
++ SOC_DAPM_SINGLE("PCBeep Bypass Switch", HPR_MIXER, 5, 1, 0),
++ SOC_DAPM_SINGLE("Aux Playback Switch", HPR_MIXER, 4, 1, 0),
++ SOC_DAPM_SINGLE("Phone Bypass Switch", HPR_MIXER, 3, 1, 0),
++ SOC_DAPM_SINGLE("Line Bypass Switch", HPR_MIXER, 2, 1, 0),
++ SOC_DAPM_SINGLE("PCM Playback Switch", HPR_MIXER, 1, 1, 0),
++ SOC_DAPM_SINGLE("Mic Sidetone Switch", HPR_MIXER, 0, 1, 0),
++};
++
++/* Speaker Mixer */
++static const struct snd_kcontrol_new wm9712_speaker_mixer_controls[] = {
++ SOC_DAPM_SINGLE("PCBeep Bypass Switch", AC97_PC_BEEP, 11, 1, 1),
++ SOC_DAPM_SINGLE("Aux Playback Switch", AC97_CD, 11, 1, 1),
++ SOC_DAPM_SINGLE("Phone Bypass Switch", AC97_PHONE, 14, 1, 1),
++ SOC_DAPM_SINGLE("Line Bypass Switch", AC97_LINE, 14, 1, 1),
++ SOC_DAPM_SINGLE("PCM Playback Switch", AC97_PCM, 14, 1, 1),
++};
++
++/* Phone Mixer */
++static const struct snd_kcontrol_new wm9712_phone_mixer_controls[] = {
++ SOC_DAPM_SINGLE("PCBeep Bypass Switch", AC97_PC_BEEP, 7, 1, 1),
++ SOC_DAPM_SINGLE("Aux Playback Switch", AC97_CD, 7, 1, 1),
++ SOC_DAPM_SINGLE("Line Bypass Switch", AC97_LINE, 13, 1, 1),
++ SOC_DAPM_SINGLE("PCM Playback Switch", AC97_PCM, 13, 1, 1),
++ SOC_DAPM_SINGLE("Mic 1 Sidetone Switch", AC97_MIC, 14, 1, 1),
++ SOC_DAPM_SINGLE("Mic 2 Sidetone Switch", AC97_MIC, 13, 1, 1),
++};
++
++/* ALC headphone mux */
++static const struct snd_kcontrol_new wm9712_alc_mux_controls =
++SOC_DAPM_ENUM("Route", wm9712_enum[1]);
++
++/* out 3 mux */
++static const struct snd_kcontrol_new wm9712_out3_mux_controls =
++SOC_DAPM_ENUM("Route", wm9712_enum[2]);
++
++/* spk mux */
++static const struct snd_kcontrol_new wm9712_spk_mux_controls =
++SOC_DAPM_ENUM("Route", wm9712_enum[3]);
++
++/* Capture to Phone mux */
++static const struct snd_kcontrol_new wm9712_capture_phone_mux_controls =
++SOC_DAPM_ENUM("Route", wm9712_enum[4]);
++
++/* Capture left select */
++static const struct snd_kcontrol_new wm9712_capture_selectl_controls =
++SOC_DAPM_ENUM("Route", wm9712_enum[8]);
++
++/* Capture right select */
++static const struct snd_kcontrol_new wm9712_capture_selectr_controls =
++SOC_DAPM_ENUM("Route", wm9712_enum[9]);
++
++/* Mic select */
++static const struct snd_kcontrol_new wm9712_mic_src_controls =
++SOC_DAPM_ENUM("Route", wm9712_enum[7]);
++
++/* diff select */
++static const struct snd_kcontrol_new wm9712_diff_sel_controls =
++SOC_DAPM_ENUM("Route", wm9712_enum[11]);
++
++static const struct snd_soc_dapm_widget wm9712_dapm_widgets[] = {
++SND_SOC_DAPM_MUX("ALC Sidetone Mux", SND_SOC_NOPM, 0, 0,
++ &wm9712_alc_mux_controls),
++SND_SOC_DAPM_MUX("Out3 Mux", SND_SOC_NOPM, 0, 0,
++ &wm9712_out3_mux_controls),
++SND_SOC_DAPM_MUX("Speaker Mux", SND_SOC_NOPM, 0, 0,
++ &wm9712_spk_mux_controls),
++SND_SOC_DAPM_MUX("Capture Phone Mux", SND_SOC_NOPM, 0, 0,
++ &wm9712_capture_phone_mux_controls),
++SND_SOC_DAPM_MUX("Left Capture Select", SND_SOC_NOPM, 0, 0,
++ &wm9712_capture_selectl_controls),
++SND_SOC_DAPM_MUX("Right Capture Select", SND_SOC_NOPM, 0, 0,
++ &wm9712_capture_selectr_controls),
++SND_SOC_DAPM_MUX("Mic Select Source", SND_SOC_NOPM, 0, 0,
++ &wm9712_mic_src_controls),
++SND_SOC_DAPM_MUX("Differential Source", SND_SOC_NOPM, 0, 0,
++ &wm9712_diff_sel_controls),
++SND_SOC_DAPM_MIXER("AC97 Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
++SND_SOC_DAPM_MIXER_E("Left HP Mixer", AC97_INT_PAGING, 9, 1,
++ &wm9712_hpl_mixer_controls[0], ARRAY_SIZE(wm9712_hpl_mixer_controls),
++ mixer_event, SND_SOC_DAPM_POST_REG),
++SND_SOC_DAPM_MIXER_E("Right HP Mixer", AC97_INT_PAGING, 8, 1,
++ &wm9712_hpr_mixer_controls[0], ARRAY_SIZE(wm9712_hpr_mixer_controls),
++ mixer_event, SND_SOC_DAPM_POST_REG),
++SND_SOC_DAPM_MIXER("Phone Mixer", AC97_INT_PAGING, 6, 1,
++ &wm9712_phone_mixer_controls[0], ARRAY_SIZE(wm9712_phone_mixer_controls)),
++SND_SOC_DAPM_MIXER("Speaker Mixer", AC97_INT_PAGING, 7, 1,
++ &wm9712_speaker_mixer_controls[0],
++ ARRAY_SIZE(wm9712_speaker_mixer_controls)),
++SND_SOC_DAPM_MIXER("Mono Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
++SND_SOC_DAPM_DAC("Left DAC", "Left HiFi Playback", AC97_INT_PAGING, 14, 1),
++SND_SOC_DAPM_DAC("Right DAC", "Right HiFi Playback", AC97_INT_PAGING, 13, 1),
++SND_SOC_DAPM_DAC("Aux DAC", "Aux Playback", SND_SOC_NOPM, 0, 0),
++SND_SOC_DAPM_ADC("Left ADC", "Left HiFi Capture", AC97_INT_PAGING, 12, 1),
++SND_SOC_DAPM_ADC("Right ADC", "Right HiFi Capture", AC97_INT_PAGING, 11, 1),
++SND_SOC_DAPM_PGA("Headphone PGA", AC97_INT_PAGING, 4, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Speaker PGA", AC97_INT_PAGING, 3, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Out 3 PGA", AC97_INT_PAGING, 5, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Line PGA", AC97_INT_PAGING, 2, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Phone PGA", AC97_INT_PAGING, 1, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Mic PGA", AC97_INT_PAGING, 0, 1, NULL, 0),
++SND_SOC_DAPM_MICBIAS("Mic Bias", AC97_INT_PAGING, 10, 1),
++SND_SOC_DAPM_OUTPUT("MONOOUT"),
++SND_SOC_DAPM_OUTPUT("HPOUTL"),
++SND_SOC_DAPM_OUTPUT("HPOUTR"),
++SND_SOC_DAPM_OUTPUT("LOUT2"),
++SND_SOC_DAPM_OUTPUT("ROUT2"),
++SND_SOC_DAPM_OUTPUT("OUT3"),
++SND_SOC_DAPM_INPUT("LINEINL"),
++SND_SOC_DAPM_INPUT("LINEINR"),
++SND_SOC_DAPM_INPUT("PHONE"),
++SND_SOC_DAPM_INPUT("PCBEEP"),
++SND_SOC_DAPM_INPUT("MIC1"),
++SND_SOC_DAPM_INPUT("MIC2"),
++};
++
++static const char *audio_map[][3] = {
++ /* virtual mixer - mixes left & right channels for spk and mono */
++ {"AC97 Mixer", NULL, "Left DAC"},
++ {"AC97 Mixer", NULL, "Right DAC"},
++
++ /* Left HP mixer */
++ {"Left HP Mixer", "PCBeep Bypass Switch", "PCBEEP"},
++ {"Left HP Mixer", "Aux Playback Switch", "Aux DAC"},
++ {"Left HP Mixer", "Phone Bypass Switch", "Phone PGA"},
++ {"Left HP Mixer", "Line Bypass Switch", "Line PGA"},
++ {"Left HP Mixer", "PCM Playback Switch", "Left DAC"},
++ {"Left HP Mixer", "Mic Sidetone Switch", "Mic PGA"},
++ {"Left HP Mixer", NULL, "ALC Sidetone Mux"},
++ //{"Right HP Mixer", NULL, "HP Mixer"},
++
++ /* Right HP mixer */
++ {"Right HP Mixer", "PCBeep Bypass Switch", "PCBEEP"},
++ {"Right HP Mixer", "Aux Playback Switch", "Aux DAC"},
++ {"Right HP Mixer", "Phone Bypass Switch", "Phone PGA"},
++ {"Right HP Mixer", "Line Bypass Switch", "Line PGA"},
++ {"Right HP Mixer", "PCM Playback Switch", "Right DAC"},
++ {"Right HP Mixer", "Mic Sidetone Switch", "Mic PGA"},
++ {"Right HP Mixer", NULL, "ALC Sidetone Mux"},
++
++ /* speaker mixer */
++ {"Speaker Mixer", "PCBeep Bypass Switch", "PCBEEP"},
++ {"Speaker Mixer", "Line Bypass Switch", "Line PGA"},
++ {"Speaker Mixer", "PCM Playback Switch", "AC97 Mixer"},
++ {"Speaker Mixer", "Phone Bypass Switch", "Phone PGA"},
++ {"Speaker Mixer", "Aux Playback Switch", "Aux DAC"},
++
++ /* Phone mixer */
++ {"Phone Mixer", "PCBeep Bypass Switch", "PCBEEP"},
++ {"Phone Mixer", "Line Bypass Switch", "Line PGA"},
++ {"Phone Mixer", "Aux Playback Switch", "Aux DAC"},
++ {"Phone Mixer", "PCM Playback Switch", "AC97 Mixer"},
++ {"Phone Mixer", "Mic 1 Sidetone Switch", "Mic PGA"},
++ {"Phone Mixer", "Mic 2 Sidetone Switch", "Mic PGA"},
++
++ /* inputs */
++ {"Line PGA", NULL, "LINEINL"},
++ {"Line PGA", NULL, "LINEINR"},
++ {"Phone PGA", NULL, "PHONE"},
++ {"Mic PGA", NULL, "MIC1"},
++ {"Mic PGA", NULL, "MIC2"},
++
++ /* left capture selector */
++ {"Left Capture Select", "Mic", "MIC1"},
++ {"Left Capture Select", "Speaker Mixer", "Speaker Mixer"},
++ {"Left Capture Select", "Line", "LINEINL"},
++ {"Left Capture Select", "Headphone Mixer", "Left HP Mixer"},
++ {"Left Capture Select", "Phone Mixer", "Phone Mixer"},
++ {"Left Capture Select", "Phone", "PHONE"},
++
++ /* right capture selector */
++ {"Right Capture Select", "Mic", "MIC2"},
++ {"Right Capture Select", "Speaker Mixer", "Speaker Mixer"},
++ {"Right Capture Select", "Line", "LINEINR"},
++ {"Right Capture Select", "Headphone Mixer", "Right HP Mixer"},
++ {"Right Capture Select", "Phone Mixer", "Phone Mixer"},
++ {"Right Capture Select", "Phone", "PHONE"},
++
++ /* ALC Sidetone */
++ {"ALC Sidetone Mux", "Stereo", "Left Capture Select"},
++ {"ALC Sidetone Mux", "Stereo", "Right Capture Select"},
++ {"ALC Sidetone Mux", "Left", "Left Capture Select"},
++ {"ALC Sidetone Mux", "Right", "Right Capture Select"},
++
++ /* ADC's */
++ {"Left ADC", NULL, "Left Capture Select"},
++ {"Right ADC", NULL, "Right Capture Select"},
++
++ /* outputs */
++ {"MONOOUT", NULL, "Phone Mixer"},
++ {"HPOUTL", NULL, "Headphone PGA"},
++ {"Headphone PGA", NULL, "Left HP Mixer"},
++ {"HPOUTR", NULL, "Headphone PGA"},
++ {"Headphone PGA", NULL, "Right HP Mixer"},
++
++ /* mono hp mixer */
++ {"Mono HP Mixer", NULL, "Left HP Mixer"},
++ {"Mono HP Mixer", NULL, "Right HP Mixer"},
++
++ /* Out3 Mux */
++ {"Out3 Mux", "Left", "Left HP Mixer"},
++ {"Out3 Mux", "Mono", "Phone Mixer"},
++ {"Out3 Mux", "Left + Right", "Mono HP Mixer"},
++ {"Out 3 PGA", NULL, "Out3 Mux"},
++ {"OUT3", NULL, "Out 3 PGA"},
++
++ /* speaker Mux */
++ {"Speaker Mux", "Speaker Mix", "Speaker Mixer"},
++ {"Speaker Mux", "Headphone Mix", "Mono HP Mixer"},
++ {"Speaker PGA", NULL, "Speaker Mux"},
++ {"LOUT2", NULL, "Speaker PGA"},
++ {"ROUT2", NULL, "Speaker PGA"},
++
++ {NULL, NULL, NULL},
++};
++
++static int wm9712_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(wm9712_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm9712_dapm_widgets[i]);
++ }
++
++ /* set up 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]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++static unsigned int ac97_read(struct snd_soc_codec *codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++
++ if (reg == AC97_RESET || reg == AC97_GPIO_STATUS ||
++ reg == AC97_VENDOR_ID1 || reg == AC97_VENDOR_ID2 ||
++ reg == AC97_REC_GAIN)
++ return soc_ac97_ops.read(codec->ac97, reg);
++ else {
++ reg = reg >> 1;
++
++ if (reg > (ARRAY_SIZE(wm9712_reg)))
++ return -EIO;
++
++ return cache[reg];
++ }
++}
++
++static int ac97_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int val)
++{
++ u16 *cache = codec->reg_cache;
++
++ soc_ac97_ops.write(codec->ac97, reg, val);
++ reg = reg >> 1;
++ if (reg <= (ARRAY_SIZE(wm9712_reg)))
++ cache[reg] = val;
++
++ return 0;
++}
++
++static int ac97_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ int reg;
++ u16 vra;
++
++ vra = ac97_read(codec, AC97_EXTENDED_STATUS);
++ ac97_write(codec, AC97_EXTENDED_STATUS, vra | 0x1);
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ reg = AC97_PCM_FRONT_DAC_RATE;
++ else
++ reg = AC97_PCM_LR_ADC_RATE;
++
++ return ac97_write(codec, reg, runtime->rate);
++}
++
++static int ac97_aux_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 vra, xsle;
++
++ vra = ac97_read(codec, AC97_EXTENDED_STATUS);
++ ac97_write(codec, AC97_EXTENDED_STATUS, vra | 0x1);
++ xsle = ac97_read(codec, AC97_PCI_SID);
++ ac97_write(codec, AC97_PCI_SID, xsle | 0x8000);
++
++ if (substream->stream != SNDRV_PCM_STREAM_PLAYBACK)
++ return -ENODEV;
++
++ return ac97_write(codec, AC97_PCM_SURR_DAC_RATE, runtime->rate);
++}
++
++struct snd_soc_codec_dai wm9712_dai[] = {
++{
++ .name = "AC97 HiFi",
++ .playback = {
++ .stream_name = "HiFi Playback",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .stream_name = "HiFi Capture",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .ops = {
++ .prepare = ac97_prepare,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(ac97_modes),
++ .mode = ac97_modes,},
++ },
++ {
++ .name = "AC97 Aux",
++ .playback = {
++ .stream_name = "Aux Playback",
++ .channels_min = 1,
++ .channels_max = 1,},
++ .ops = {
++ .prepare = ac97_aux_prepare,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(ac97_modes),
++ .mode = ac97_modes,},
++ },
++};
++EXPORT_SYMBOL_GPL(wm9712_dai);
++
++static int wm9712_dapm_event(struct snd_soc_codec *codec, int event)
++{
++ u16 reg;
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ /* liam - maybe enable thermal shutdown */
++ reg = ac97_read(codec, AC97_EXTENDED_MID) & 0xdfff;
++ ac97_write(codec, AC97_EXTENDED_MID, reg);
++ break;
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ break;
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* enable master bias and vmid */
++ reg = ac97_read(codec, AC97_EXTENDED_MID) & 0xbbff;
++ ac97_write(codec, AC97_EXTENDED_MID, reg);
++ ac97_write(codec, AC97_POWERDOWN, 0x0000);
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ /* disable everything including AC link */
++ ac97_write(codec, AC97_EXTENDED_MID, 0xffff);
++ ac97_write(codec, AC97_EXTENDED_MSTATUS, 0xffff);
++ ac97_write(codec, AC97_POWERDOWN, 0xffff);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++static int wm9712_reset(struct snd_soc_codec *codec, int try_warm)
++{
++ if (try_warm && soc_ac97_ops.warm_reset) {
++ soc_ac97_ops.warm_reset(codec->ac97);
++ if (!(ac97_read(codec, 0) & 0x8000))
++ return 1;
++ }
++
++ soc_ac97_ops.reset(codec->ac97);
++ if (ac97_read(codec, 0) & 0x8000)
++ goto err;
++ return 0;
++
++err:
++ printk(KERN_ERR "WM9712 AC97 reset failed\n");
++ return -EIO;
++}
++
++static int wm9712_soc_suspend(struct platform_device *pdev,
++ pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ wm9712_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int wm9712_soc_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ int i, ret;
++ u16 *cache = codec->reg_cache;
++
++ ret = wm9712_reset(codec, 1);
++ if (ret < 0){
++ printk(KERN_ERR "could not reset AC97 codec\n");
++ return ret;
++ }
++
++ wm9712_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++
++ if (ret == 0) {
++ /* Sync reg_cache with the hardware after cold reset */
++ for (i = 2; i < ARRAY_SIZE(wm9712_reg) << 1; i+=2) {
++ if (i == AC97_INT_PAGING || i == AC97_POWERDOWN ||
++ (i > 0x58 && i != 0x5c))
++ continue;
++ soc_ac97_ops.write(codec->ac97, i, cache[i>>1]);
++ }
++ }
++
++ if (codec->suspend_dapm_state == SNDRV_CTL_POWER_D0)
++ wm9712_dapm_event(codec, SNDRV_CTL_POWER_D0);
++
++ return ret;
++}
++
++static int wm9712_soc_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec;
++ int ret = 0;
++
++ printk(KERN_INFO "WM9711/WM9712 SoC Audio Codec %s\n", WM9712_VERSION);
++
++ socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (socdev->codec == NULL)
++ return -ENOMEM;
++ codec = socdev->codec;
++ mutex_init(&codec->mutex);
++
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(wm9712_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL) {
++ kfree(codec->ac97);
++ kfree(socdev->codec);
++ socdev->codec = NULL;
++ return -ENOMEM;
++ }
++ memcpy(codec->reg_cache, wm9712_reg, sizeof(u16) * ARRAY_SIZE(wm9712_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm9712_reg);
++ codec->reg_cache_step = 2;
++
++ codec->name = "WM9712";
++ codec->owner = THIS_MODULE;
++ codec->dai = wm9712_dai;
++ codec->num_dai = ARRAY_SIZE(wm9712_dai);
++ codec->write = ac97_write;
++ codec->read = ac97_read;
++ codec->dapm_event = wm9712_dapm_event;
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0);
++ if (ret < 0)
++ goto err;
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if (ret < 0)
++ goto pcm_err;
++
++ ret = wm9712_reset(codec, 0);
++ if (ret < 0) {
++ printk(KERN_ERR "AC97 link error\n");
++ goto reset_err;
++ }
++
++ /* set alc mux to none */
++ ac97_write(codec, AC97_VIDEO, ac97_read(codec, AC97_VIDEO) | 0x3000);
++
++ wm9712_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ wm9712_add_controls(codec);
++ wm9712_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if (ret < 0)
++ goto reset_err;
++
++ return 0;
++
++reset_err:
++ snd_soc_free_pcms(socdev);
++
++pcm_err:
++ snd_soc_free_ac97_codec(codec);
++
++err:
++ kfree(socdev->codec->reg_cache);
++ kfree(socdev->codec);
++ socdev->codec = NULL;
++ return ret;
++}
++
++static int wm9712_soc_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if (codec == NULL)
++ return 0;
++
++ snd_soc_dapm_free(socdev);
++ snd_soc_free_pcms(socdev);
++ snd_soc_free_ac97_codec(codec);
++ kfree(codec->reg_cache);
++ kfree(codec);
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_wm9712 = {
++ .probe = wm9712_soc_probe,
++ .remove = wm9712_soc_remove,
++ .suspend = wm9712_soc_suspend,
++ .resume = wm9712_soc_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_wm9712);
++
++MODULE_DESCRIPTION("ASoC WM9711/WM9712 driver");
++MODULE_AUTHOR("Liam Girdwood");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm9712.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm9712.h
+@@ -0,0 +1,14 @@
++/*
++ * wm9712.h -- WM9712 Soc Audio driver
++ */
++
++#ifndef _WM9712_H
++#define _WM9712_H
++
++#define WM9712_DAI_AC97_HIFI 0
++#define WM9712_DAI_AC97_AUX 1
++
++extern struct snd_soc_codec_dai wm9712_dai[2];
++extern struct snd_soc_codec_device soc_codec_dev_wm9712;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm9713.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm9713.c
+@@ -0,0 +1,1313 @@
++/*
++ * wm9713.c -- ALSA Soc WM9713 codec support
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or 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
++ * 4th Feb 2006 Initial version.
++ *
++ * Features:-
++ *
++ * o Support for AC97 Codec, Voice DAC and Aux DAC
++ * o Support for DAPM
++ */
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/ac97_codec.h>
++#include <sound/initval.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++
++#define WM9713_VERSION "0.12"
++
++struct wm9713 {
++ u32 pll; /* current PLL frequency */
++ u32 pll_resume; /* PLL resume frequency */
++};
++
++static unsigned int ac97_read(struct snd_soc_codec *codec,
++ unsigned int reg);
++static int ac97_write(struct snd_soc_codec *codec,
++ unsigned int reg, unsigned int val);
++
++#define AC97_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define AC97_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 | \
++ SNDRV_PCM_RATE_48000)
++
++/* may need to expand this */
++static struct snd_soc_dai_mode ac97_modes[] = {
++ {
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S18_3LE,
++ .pcmrate = AC97_RATES,
++ },
++};
++
++#define WM9713_VOICE_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | \
++ SND_SOC_DAIFMT_RIGHT_J | SND_SOC_DAIFMT_DSP_A | \
++ SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_NB_NF | \
++ SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
++ SND_SOC_DAIFMT_IB_IF)
++
++#define WM9713_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define WM9713_VOICE_FSB \
++ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
++ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
++
++#define WM9713_VOICE_RATES \
++ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | \
++ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 | \
++ SNDRV_PCM_RATE_96000)
++
++#define WM9713_HIFI_BITS \
++ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
++ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
++
++/*
++ * Voice modes
++ */
++static struct snd_soc_dai_mode wm9713_voice_modes[] = {
++ /* master modes */
++ {
++ .fmt = WM9713_VOICE_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | \
++ SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = WM9713_HIFI_BITS,
++ .pcmrate = WM9713_VOICE_RATES,
++ .pcmdir = WM9713_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = WM9713_VOICE_FSB,
++ },
++
++ /* slave modes */
++ {
++ .fmt = WM9713_VOICE_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = WM9713_HIFI_BITS,
++ .pcmrate = WM9713_VOICE_RATES,
++ .pcmdir = WM9713_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++};
++
++/*
++ * WM9713 register cache
++ * Reg 0x3c bit 15 is used by touch driver.
++ */
++static const u16 wm9713_reg[] = {
++ 0x6174, 0x8080, 0x8080, 0x8080, // 6
++ 0xc880, 0xe808, 0xe808, 0x0808, // e
++ 0x00da, 0x8000, 0xd600, 0xaaa0, // 16
++ 0xaaa0, 0xaaa0, 0x0000, 0x0000, // 1e
++ 0x0f0f, 0x0040, 0x0000, 0x7f00, // 26
++ 0x0405, 0x0410, 0xbb80, 0xbb80, // 2e
++ 0x0000, 0xbb80, 0x0000, 0x4523, // 36
++ 0x0000, 0x2000, 0x7eff, 0xffff, // 3e
++ 0x0000, 0x0000, 0x0080, 0x0000, // 46
++ 0x0000, 0x0000, 0xfffe, 0xffff, // 4e
++ 0x0000, 0x0000, 0x0000, 0xfffe, // 56
++ 0x4000, 0x0000, 0x0000, 0x0000, // 5e
++ 0xb032, 0x3e00, 0x0000, 0x0000, // 66
++ 0x0000, 0x0000, 0x0000, 0x0000, // 6e
++ 0x0000, 0x0000, 0x0000, 0x0006, // 76
++ 0x0001, 0x0000, 0x574d, 0x4c13, // 7e
++ 0x0000, 0x0000, 0x0000 // virtual hp & mic mixers
++};
++
++/* virtual HP mixers regs */
++#define HPL_MIXER 0x80
++#define HPR_MIXER 0x82
++#define MICB_MUX 0x82
++
++static const char *wm9713_mic_mixer[] = {"Stereo", "Mic 1", "Mic 2", "Mute"};
++static const char *wm9713_rec_mux[] = {"Stereo", "Left", "Right", "Mute"};
++static const char *wm9713_rec_src[] =
++ {"Mic 1", "Mic 2", "Line", "Mono In", "Headphone", "Speaker",
++ "Mono Out", "Zh"};
++static const char *wm9713_rec_gain[] = {"+1.5dB Steps", "+0.75dB Steps"};
++static const char *wm9713_alc_select[] = {"None", "Left", "Right", "Stereo"};
++static const char *wm9713_mono_pga[] = {"Vmid", "Zh", "Mono", "Inv",
++ "Mono Vmid", "Inv Vmid"};
++static const char *wm9713_spk_pga[] =
++ {"Vmid", "Zh", "Headphone", "Speaker", "Inv", "Headphone Vmid",
++ "Speaker Vmid", "Inv Vmid"};
++static const char *wm9713_hp_pga[] = {"Vmid", "Zh", "Headphone",
++ "Headphone Vmid"};
++static const char *wm9713_out3_pga[] = {"Vmid", "Zh", "Inv 1", "Inv 1 Vmid"};
++static const char *wm9713_out4_pga[] = {"Vmid", "Zh", "Inv 2", "Inv 2 Vmid"};
++static const char *wm9713_dac_inv[] =
++ {"Off", "Mono", "Speaker", "Left Headphone", "Right Headphone",
++ "Headphone Mono", "NC", "Vmid"};
++static const char *wm9713_bass[] = {"Linear Control", "Adaptive Boost"};
++static const char *wm9713_ng_type[] = {"Constant Gain", "Mute"};
++static const char *wm9713_mic_select[] = {"Mic 1", "Mic 2 A", "Mic 2 B"};
++static const char *wm9713_micb_select[] = {"MPB", "MPA"};
++
++static const struct soc_enum wm9713_enum[] = {
++SOC_ENUM_SINGLE(AC97_LINE, 3, 4, wm9713_mic_mixer), /* record mic mixer 0 */
++SOC_ENUM_SINGLE(AC97_VIDEO, 14, 4, wm9713_rec_mux), /* record mux hp 1 */
++SOC_ENUM_SINGLE(AC97_VIDEO, 9, 4, wm9713_rec_mux), /* record mux mono 2 */
++SOC_ENUM_SINGLE(AC97_VIDEO, 3, 8, wm9713_rec_src), /* record mux left 3 */
++SOC_ENUM_SINGLE(AC97_VIDEO, 0, 8, wm9713_rec_src), /* record mux right 4*/
++SOC_ENUM_DOUBLE(AC97_CD, 14, 6, 2, wm9713_rec_gain), /* record step size 5 */
++SOC_ENUM_SINGLE(AC97_PCI_SVID, 14, 4, wm9713_alc_select), /* alc source select 6*/
++SOC_ENUM_SINGLE(AC97_REC_GAIN, 14, 4, wm9713_mono_pga), /* mono input select 7 */
++SOC_ENUM_SINGLE(AC97_REC_GAIN, 11, 8, wm9713_spk_pga), /* speaker left input select 8 */
++SOC_ENUM_SINGLE(AC97_REC_GAIN, 8, 8, wm9713_spk_pga), /* speaker right input select 9 */
++SOC_ENUM_SINGLE(AC97_REC_GAIN, 6, 3, wm9713_hp_pga), /* headphone left input 10 */
++SOC_ENUM_SINGLE(AC97_REC_GAIN, 4, 3, wm9713_hp_pga), /* headphone right input 11 */
++SOC_ENUM_SINGLE(AC97_REC_GAIN, 2, 4, wm9713_out3_pga), /* out 3 source 12 */
++SOC_ENUM_SINGLE(AC97_REC_GAIN, 0, 4, wm9713_out4_pga), /* out 4 source 13 */
++SOC_ENUM_SINGLE(AC97_REC_GAIN_MIC, 13, 8, wm9713_dac_inv), /* dac invert 1 14 */
++SOC_ENUM_SINGLE(AC97_REC_GAIN_MIC, 10, 8, wm9713_dac_inv), /* dac invert 2 15 */
++SOC_ENUM_SINGLE(AC97_GENERAL_PURPOSE, 15, 2, wm9713_bass), /* bass control 16 */
++SOC_ENUM_SINGLE(AC97_PCI_SVID, 5, 2, wm9713_ng_type), /* noise gate type 17 */
++SOC_ENUM_SINGLE(AC97_3D_CONTROL, 12, 3, wm9713_mic_select), /* mic selection 18 */
++SOC_ENUM_SINGLE(MICB_MUX, 0, 2, wm9713_micb_select), /* mic selection 19 */
++};
++
++static const struct snd_kcontrol_new wm9713_snd_ac97_controls[] = {
++SOC_DOUBLE("Speaker Playback Volume", AC97_MASTER, 8, 0, 31, 1),
++SOC_DOUBLE("Speaker Playback Switch", AC97_MASTER, 15, 7, 1, 1),
++SOC_DOUBLE("Headphone Playback Volume", AC97_HEADPHONE, 8, 0, 31, 1),
++SOC_DOUBLE("Headphone Playback Switch", AC97_HEADPHONE,15, 7, 1, 1),
++SOC_DOUBLE("Line In Volume", AC97_PC_BEEP, 8, 0, 31, 1),
++SOC_DOUBLE("PCM Playback Volume", AC97_PHONE, 8, 0, 31, 1),
++SOC_SINGLE("Mic 1 Volume", AC97_MIC, 8, 31, 1),
++SOC_SINGLE("Mic 2 Volume", AC97_MIC, 0, 31, 1),
++
++SOC_SINGLE("Mic Boost (+20dB) Switch", AC97_LINE, 5, 1, 0),
++SOC_SINGLE("Mic Headphone Mixer Volume", AC97_LINE, 0, 7, 1),
++
++SOC_SINGLE("Capture Switch", AC97_CD, 15, 1, 1),
++SOC_ENUM("Capture Volume Steps", wm9713_enum[5]),
++SOC_DOUBLE("Capture Volume", AC97_CD, 8, 0, 63, 0),
++SOC_SINGLE("Capture ZC Switch", AC97_CD, 7, 1, 0),
++
++SOC_SINGLE("Capture to Headphone Volume", AC97_VIDEO, 11, 7, 1),
++SOC_SINGLE("Capture to Mono Boost (+20dB) Switch", AC97_VIDEO, 8, 1, 0),
++SOC_SINGLE("Capture ADC Boost (+20dB) Switch", AC97_VIDEO, 6, 1, 0),
++
++SOC_SINGLE("ALC Target Volume", AC97_CODEC_CLASS_REV, 12, 15, 0),
++SOC_SINGLE("ALC Hold Time", AC97_CODEC_CLASS_REV, 8, 15, 0),
++SOC_SINGLE("ALC Decay Time ", AC97_CODEC_CLASS_REV, 4, 15, 0),
++SOC_SINGLE("ALC Attack Time", AC97_CODEC_CLASS_REV, 0, 15, 0),
++SOC_ENUM("ALC Function", wm9713_enum[6]),
++SOC_SINGLE("ALC Max Volume", AC97_PCI_SVID, 11, 7, 0),
++SOC_SINGLE("ALC ZC Timeout", AC97_PCI_SVID, 9, 3, 0),
++SOC_SINGLE("ALC ZC Switch", AC97_PCI_SVID, 8, 1, 0),
++SOC_SINGLE("ALC NG Switch", AC97_PCI_SVID, 7, 1, 0),
++SOC_ENUM("ALC NG Type", wm9713_enum[17]),
++SOC_SINGLE("ALC NG Threshold", AC97_PCI_SVID, 0, 31, 0),
++
++SOC_DOUBLE("Speaker Playback ZC Switch", AC97_MASTER, 14, 6, 1, 0),
++SOC_DOUBLE("Headphone Playback ZC Switch", AC97_HEADPHONE, 14, 6, 1, 0),
++
++SOC_SINGLE("Out4 Playback Switch", AC97_MASTER_MONO, 15, 1, 1),
++SOC_SINGLE("Out4 Playback ZC Switch", AC97_MASTER_MONO, 14, 1, 0),
++SOC_SINGLE("Out4 Playback Volume", AC97_MASTER_MONO, 8, 63, 1),
++
++SOC_SINGLE("Out3 Playback Switch", AC97_MASTER_MONO, 7, 1, 1),
++SOC_SINGLE("Out3 Playback ZC Switch", AC97_MASTER_MONO, 6, 1, 0),
++SOC_SINGLE("Out3 Playback Volume", AC97_MASTER_MONO, 0, 63, 1),
++
++SOC_SINGLE("Mono Capture Volume", AC97_MASTER_TONE, 8, 31, 1),
++SOC_SINGLE("Mono Playback Switch", AC97_MASTER_TONE, 7, 1, 1),
++SOC_SINGLE("Mono Playback ZC Switch", AC97_MASTER_TONE, 6, 1, 0),
++SOC_SINGLE("Mono Playback Volume", AC97_MASTER_TONE, 0, 31, 1),
++
++SOC_SINGLE("PC Beep Playback Headphone Volume", AC97_AUX, 12, 7, 1),
++SOC_SINGLE("PC Beep Playback Speaker Volume", AC97_AUX, 8, 7, 1),
++SOC_SINGLE("PC Beep Playback Mono Volume", AC97_AUX, 4, 7, 1),
++
++SOC_SINGLE("Voice Playback Headphone Volume", AC97_PCM, 12, 7, 1),
++SOC_SINGLE("Voice Playback Master Volume", AC97_PCM, 8, 7, 1),
++SOC_SINGLE("Voice Playback Mono Volume", AC97_PCM, 4, 7, 1),
++
++SOC_SINGLE("Aux Playback Headphone Volume", AC97_REC_SEL, 12, 7, 1),
++SOC_SINGLE("Aux Playback Master Volume", AC97_REC_SEL, 8, 7, 1),
++SOC_SINGLE("Aux Playback Mono Volume", AC97_REC_SEL, 4, 7, 1),
++
++SOC_ENUM("Bass Control", wm9713_enum[16]),
++SOC_SINGLE("Bass Cut-off Switch", AC97_GENERAL_PURPOSE, 12, 1, 1),
++SOC_SINGLE("Tone Cut-off Switch", AC97_GENERAL_PURPOSE, 4, 1, 1),
++SOC_SINGLE("Playback Attenuate (-6dB) Switch", AC97_GENERAL_PURPOSE, 6, 1, 0),
++SOC_SINGLE("Bass Volume", AC97_GENERAL_PURPOSE, 8, 15, 1),
++SOC_SINGLE("Tone Volume", AC97_GENERAL_PURPOSE, 0, 15, 1),
++
++SOC_SINGLE("3D Upper Cut-off Switch", AC97_REC_GAIN_MIC, 5, 1, 0),
++SOC_SINGLE("3D Lower Cut-off Switch", AC97_REC_GAIN_MIC, 4, 1, 0),
++SOC_SINGLE("3D Depth", AC97_REC_GAIN_MIC, 0, 15, 1),
++};
++
++/* add non dapm controls */
++static int wm9713_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(wm9713_snd_ac97_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm9713_snd_ac97_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++ return 0;
++}
++
++/* We have to create a fake left and right HP mixers because
++ * the codec only has a single control that is shared by both channels.
++ * This makes it impossible to determine the audio path using the current
++ * register map, thus we add a new (virtual) register to help determine the
++ * audio route within the device.
++ */
++static int mixer_event (struct snd_soc_dapm_widget *w, int event)
++{
++ u16 l, r, beep, tone, phone, rec, pcm, aux;
++
++ l = ac97_read(w->codec, HPL_MIXER);
++ r = ac97_read(w->codec, HPR_MIXER);
++ beep = ac97_read(w->codec, AC97_PC_BEEP);
++ tone = ac97_read(w->codec, AC97_MASTER_TONE);
++ phone = ac97_read(w->codec, AC97_PHONE);
++ rec = ac97_read(w->codec, AC97_REC_SEL);
++ pcm = ac97_read(w->codec, AC97_PCM);
++ aux = ac97_read(w->codec, AC97_AUX);
++
++ if (event & SND_SOC_DAPM_PRE_REG)
++ return 0;
++ if (l & 0x1 || r & 0x1)
++ ac97_write(w->codec, AC97_PC_BEEP, beep & 0x7fff);
++ else
++ ac97_write(w->codec, AC97_PC_BEEP, beep | 0x8000);
++
++ if (l & 0x2 || r & 0x2)
++ ac97_write(w->codec, AC97_MASTER_TONE, tone & 0x7fff);
++ else
++ ac97_write(w->codec, AC97_MASTER_TONE, tone | 0x8000);
++
++ if (l & 0x4 || r & 0x4)
++ ac97_write(w->codec, AC97_PHONE, phone & 0x7fff);
++ else
++ ac97_write(w->codec, AC97_PHONE, phone | 0x8000);
++
++ if (l & 0x8 || r & 0x8)
++ ac97_write(w->codec, AC97_REC_SEL, rec & 0x7fff);
++ else
++ ac97_write(w->codec, AC97_REC_SEL, rec | 0x8000);
++
++ if (l & 0x10 || r & 0x10)
++ ac97_write(w->codec, AC97_PCM, pcm & 0x7fff);
++ else
++ ac97_write(w->codec, AC97_PCM, pcm | 0x8000);
++
++ if (l & 0x20 || r & 0x20)
++ ac97_write(w->codec, AC97_AUX, aux & 0x7fff);
++ else
++ ac97_write(w->codec, AC97_AUX, aux | 0x8000);
++
++ return 0;
++}
++
++/* Left Headphone Mixers */
++static const struct snd_kcontrol_new wm9713_hpl_mixer_controls[] = {
++SOC_DAPM_SINGLE("PC Beep Playback Switch", HPL_MIXER, 5, 1, 0),
++SOC_DAPM_SINGLE("Voice Playback Switch", HPL_MIXER, 4, 1, 0),
++SOC_DAPM_SINGLE("Aux Playback Switch", HPL_MIXER, 3, 1, 0),
++SOC_DAPM_SINGLE("PCM Playback Switch", HPL_MIXER, 2, 1, 0),
++SOC_DAPM_SINGLE("MonoIn Playback Switch", HPL_MIXER, 1, 1, 0),
++SOC_DAPM_SINGLE("Bypass Playback Switch", HPL_MIXER, 0, 1, 0),
++};
++
++/* Right Headphone Mixers */
++static const struct snd_kcontrol_new wm9713_hpr_mixer_controls[] = {
++SOC_DAPM_SINGLE("PC Beep Playback Switch", HPR_MIXER, 5, 1, 0),
++SOC_DAPM_SINGLE("Voice Playback Switch", HPR_MIXER, 4, 1, 0),
++SOC_DAPM_SINGLE("Aux Playback Switch", HPR_MIXER, 3, 1, 0),
++SOC_DAPM_SINGLE("PCM Playback Switch", HPR_MIXER, 2, 1, 0),
++SOC_DAPM_SINGLE("MonoIn Playback Switch", HPR_MIXER, 1, 1, 0),
++SOC_DAPM_SINGLE("Bypass Playback Switch", HPR_MIXER, 0, 1, 0),
++};
++
++/* headphone capture mux */
++static const struct snd_kcontrol_new wm9713_hp_rec_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[1]);
++
++/* headphone mic mux */
++static const struct snd_kcontrol_new wm9713_hp_mic_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[0]);
++
++/* Speaker Mixer */
++static const struct snd_kcontrol_new wm9713_speaker_mixer_controls[] = {
++SOC_DAPM_SINGLE("PC Beep Playback Switch", AC97_AUX, 11, 1, 1),
++SOC_DAPM_SINGLE("Voice Playback Switch", AC97_PCM, 11, 1, 1),
++SOC_DAPM_SINGLE("Aux Playback Switch", AC97_REC_SEL, 11, 1, 1),
++SOC_DAPM_SINGLE("PCM Playback Switch", AC97_PHONE, 14, 1, 1),
++SOC_DAPM_SINGLE("MonoIn Playback Switch", AC97_MASTER_TONE, 14, 1, 1),
++SOC_DAPM_SINGLE("Bypass Playback Switch", AC97_PC_BEEP, 14, 1, 1),
++};
++
++/* Mono Mixer */
++static const struct snd_kcontrol_new wm9713_mono_mixer_controls[] = {
++SOC_DAPM_SINGLE("PC Beep Playback Switch", AC97_AUX, 7, 1, 1),
++SOC_DAPM_SINGLE("Voice Playback Switch", AC97_PCM, 7, 1, 1),
++SOC_DAPM_SINGLE("Aux Playback Switch", AC97_REC_SEL, 7, 1, 1),
++SOC_DAPM_SINGLE("PCM Playback Switch", AC97_PHONE, 13, 1, 1),
++SOC_DAPM_SINGLE("MonoIn Playback Switch", AC97_MASTER_TONE, 13, 1, 1),
++SOC_DAPM_SINGLE("Bypass Playback Switch", AC97_PC_BEEP, 13, 1, 1),
++SOC_DAPM_SINGLE("Mic 1 Sidetone Switch", AC97_LINE, 7, 1, 1),
++SOC_DAPM_SINGLE("Mic 2 Sidetone Switch", AC97_LINE, 6, 1, 1),
++};
++
++/* mono mic mux */
++static const struct snd_kcontrol_new wm9713_mono_mic_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[2]);
++
++/* mono output mux */
++static const struct snd_kcontrol_new wm9713_mono_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[7]);
++
++/* speaker left output mux */
++static const struct snd_kcontrol_new wm9713_hp_spkl_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[8]);
++
++/* speaker right output mux */
++static const struct snd_kcontrol_new wm9713_hp_spkr_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[9]);
++
++/* headphone left output mux */
++static const struct snd_kcontrol_new wm9713_hpl_out_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[10]);
++
++/* headphone right output mux */
++static const struct snd_kcontrol_new wm9713_hpr_out_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[11]);
++
++/* Out3 mux */
++static const struct snd_kcontrol_new wm9713_out3_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[12]);
++
++/* Out4 mux */
++static const struct snd_kcontrol_new wm9713_out4_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[13]);
++
++/* DAC inv mux 1 */
++static const struct snd_kcontrol_new wm9713_dac_inv1_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[14]);
++
++/* DAC inv mux 2 */
++static const struct snd_kcontrol_new wm9713_dac_inv2_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[15]);
++
++/* Capture source left */
++static const struct snd_kcontrol_new wm9713_rec_srcl_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[3]);
++
++/* Capture source right */
++static const struct snd_kcontrol_new wm9713_rec_srcr_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[4]);
++
++/* mic source */
++static const struct snd_kcontrol_new wm9713_mic_sel_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[18]);
++
++/* mic source B virtual control */
++static const struct snd_kcontrol_new wm9713_micb_sel_mux_controls =
++SOC_DAPM_ENUM("Route", wm9713_enum[19]);
++
++static const struct snd_soc_dapm_widget wm9713_dapm_widgets[] = {
++SND_SOC_DAPM_MUX("Capture Headphone Mux", SND_SOC_NOPM, 0, 0,
++ &wm9713_hp_rec_mux_controls),
++SND_SOC_DAPM_MUX("Sidetone Mux", SND_SOC_NOPM, 0, 0,
++ &wm9713_hp_mic_mux_controls),
++SND_SOC_DAPM_MUX("Capture Mono Mux", SND_SOC_NOPM, 0, 0,
++ &wm9713_mono_mic_mux_controls),
++SND_SOC_DAPM_MUX("Mono Out Mux", SND_SOC_NOPM, 0, 0,
++ &wm9713_mono_mux_controls),
++SND_SOC_DAPM_MUX("Left Speaker Out Mux", SND_SOC_NOPM, 0, 0,
++ &wm9713_hp_spkl_mux_controls),
++SND_SOC_DAPM_MUX("Right Speaker Out Mux", SND_SOC_NOPM, 0, 0,
++ &wm9713_hp_spkr_mux_controls),
++SND_SOC_DAPM_MUX("Left Headphone Out Mux", SND_SOC_NOPM, 0, 0,
++ &wm9713_hpl_out_mux_controls),
++SND_SOC_DAPM_MUX("Right Headphone Out Mux", SND_SOC_NOPM, 0, 0,
++ &wm9713_hpr_out_mux_controls),
++SND_SOC_DAPM_MUX("Out 3 Mux", SND_SOC_NOPM, 0, 0,
++ &wm9713_out3_mux_controls),
++SND_SOC_DAPM_MUX("Out 4 Mux", SND_SOC_NOPM, 0, 0,
++ &wm9713_out4_mux_controls),
++SND_SOC_DAPM_MUX("DAC Inv Mux 1", SND_SOC_NOPM, 0, 0,
++ &wm9713_dac_inv1_mux_controls),
++SND_SOC_DAPM_MUX("DAC Inv Mux 2", SND_SOC_NOPM, 0, 0,
++ &wm9713_dac_inv2_mux_controls),
++SND_SOC_DAPM_MUX("Left Capture Source", SND_SOC_NOPM, 0, 0,
++ &wm9713_rec_srcl_mux_controls),
++SND_SOC_DAPM_MUX("Right Capture Source", SND_SOC_NOPM, 0, 0,
++ &wm9713_rec_srcr_mux_controls),
++SND_SOC_DAPM_MUX("Mic A Source", SND_SOC_NOPM, 0, 0,
++ &wm9713_mic_sel_mux_controls ),
++SND_SOC_DAPM_MUX("Mic B Source", SND_SOC_NOPM, 0, 0,
++ &wm9713_micb_sel_mux_controls ),
++SND_SOC_DAPM_MIXER_E("Left HP Mixer", AC97_EXTENDED_MID, 3, 1,
++ &wm9713_hpl_mixer_controls[0], ARRAY_SIZE(wm9713_hpl_mixer_controls),
++ mixer_event, SND_SOC_DAPM_POST_REG),
++SND_SOC_DAPM_MIXER_E("Right HP Mixer", AC97_EXTENDED_MID, 2, 1,
++ &wm9713_hpr_mixer_controls[0], ARRAY_SIZE(wm9713_hpr_mixer_controls),
++ mixer_event, SND_SOC_DAPM_POST_REG),
++SND_SOC_DAPM_MIXER("Mono Mixer", AC97_EXTENDED_MID, 0, 1,
++ &wm9713_mono_mixer_controls[0], ARRAY_SIZE(wm9713_mono_mixer_controls)),
++SND_SOC_DAPM_MIXER("Speaker Mixer", AC97_EXTENDED_MID, 1, 1,
++ &wm9713_speaker_mixer_controls[0],
++ ARRAY_SIZE(wm9713_speaker_mixer_controls)),
++SND_SOC_DAPM_DAC("Left DAC", "Left HiFi Playback", AC97_EXTENDED_MID, 7, 1),
++SND_SOC_DAPM_DAC("Right DAC", "Right HiFi Playback", AC97_EXTENDED_MID, 6, 1),
++SND_SOC_DAPM_MIXER("AC97 Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
++SND_SOC_DAPM_MIXER("HP Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
++SND_SOC_DAPM_MIXER("Capture Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
++SND_SOC_DAPM_DAC("Voice DAC", "Voice Playback", AC97_EXTENDED_MID, 12, 1),
++SND_SOC_DAPM_DAC("Aux DAC", "Aux Playback", AC97_EXTENDED_MID, 11, 1),
++SND_SOC_DAPM_ADC("Left ADC", "Left HiFi Capture", AC97_EXTENDED_MID, 5, 1),
++SND_SOC_DAPM_ADC("Right ADC", "Right HiFi Capture", AC97_EXTENDED_MID, 4, 1),
++SND_SOC_DAPM_PGA("Left Headphone", AC97_EXTENDED_MSTATUS, 10, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Right Headphone", AC97_EXTENDED_MSTATUS, 9, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Left Speaker", AC97_EXTENDED_MSTATUS, 8, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Right Speaker", AC97_EXTENDED_MSTATUS, 7, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Out 3", AC97_EXTENDED_MSTATUS, 11, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Out 4", AC97_EXTENDED_MSTATUS, 12, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Mono Out", AC97_EXTENDED_MSTATUS, 13, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Left Line In", AC97_EXTENDED_MSTATUS, 6, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Right Line In", AC97_EXTENDED_MSTATUS, 5, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Mono In", AC97_EXTENDED_MSTATUS, 4, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Mic A PGA", AC97_EXTENDED_MSTATUS, 3, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Mic B PGA", AC97_EXTENDED_MSTATUS, 2, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Mic A Pre Amp", AC97_EXTENDED_MSTATUS, 1, 1, NULL, 0),
++SND_SOC_DAPM_PGA("Mic B Pre Amp", AC97_EXTENDED_MSTATUS, 0, 1, NULL, 0),
++SND_SOC_DAPM_MICBIAS("Mic Bias", AC97_EXTENDED_MSTATUS, 14, 1),
++SND_SOC_DAPM_OUTPUT("MONO"),
++SND_SOC_DAPM_OUTPUT("HPL"),
++SND_SOC_DAPM_OUTPUT("HPR"),
++SND_SOC_DAPM_OUTPUT("SPKL"),
++SND_SOC_DAPM_OUTPUT("SPKR"),
++SND_SOC_DAPM_OUTPUT("OUT3"),
++SND_SOC_DAPM_OUTPUT("OUT4"),
++SND_SOC_DAPM_INPUT("LINEL"),
++SND_SOC_DAPM_INPUT("LINER"),
++SND_SOC_DAPM_INPUT("MONOIN"),
++SND_SOC_DAPM_INPUT("PCBEEP"),
++SND_SOC_DAPM_INPUT("MIC1"),
++SND_SOC_DAPM_INPUT("MIC2A"),
++SND_SOC_DAPM_INPUT("MIC2B"),
++SND_SOC_DAPM_VMID("VMID"),
++};
++
++static const char *audio_map[][3] = {
++ /* left HP mixer */
++ {"Left HP Mixer", "PC Beep Playback Switch", "PCBEEP"},
++ {"Left HP Mixer", "Voice Playback Switch", "Voice DAC"},
++ {"Left HP Mixer", "Aux Playback Switch", "Aux DAC"},
++ {"Left HP Mixer", "Bypass Playback Switch", "Left Line In"},
++ {"Left HP Mixer", "PCM Playback Switch", "Left DAC"},
++ {"Left HP Mixer", "MonoIn Playback Switch", "Mono In"},
++ {"Left HP Mixer", NULL, "Capture Headphone Mux"},
++
++ /* right HP mixer */
++ {"Right HP Mixer", "PC Beep Playback Switch", "PCBEEP"},
++ {"Right HP Mixer", "Voice Playback Switch", "Voice DAC"},
++ {"Right HP Mixer", "Aux Playback Switch", "Aux DAC"},
++ {"Right HP Mixer", "Bypass Playback Switch", "Right Line In"},
++ {"Right HP Mixer", "PCM Playback Switch", "Right DAC"},
++ {"Right HP Mixer", "MonoIn Playback Switch", "Mono In"},
++ {"Right HP Mixer", NULL, "Capture Headphone Mux"},
++
++ /* virtual mixer - mixes left & right channels for spk and mono */
++ {"AC97 Mixer", NULL, "Left DAC"},
++ {"AC97 Mixer", NULL, "Right DAC"},
++ {"Line Mixer", NULL, "Right Line In"},
++ {"Line Mixer", NULL, "Left Line In"},
++ {"HP Mixer", NULL, "Left HP Mixer"},
++ {"HP Mixer", NULL, "Right HP Mixer"},
++ {"Capture Mixer", NULL, "Left Capture Source"},
++ {"Capture Mixer", NULL, "Right Capture Source"},
++
++ /* speaker mixer */
++ {"Speaker Mixer", "PC Beep Playback Switch", "PCBEEP"},
++ {"Speaker Mixer", "Voice Playback Switch", "Voice DAC"},
++ {"Speaker Mixer", "Aux Playback Switch", "Aux DAC"},
++ {"Speaker Mixer", "Bypass Playback Switch", "Line Mixer"},
++ {"Speaker Mixer", "PCM Playback Switch", "AC97 Mixer"},
++ {"Speaker Mixer", "MonoIn Playback Switch", "Mono In"},
++
++ /* mono mixer */
++ {"Mono Mixer", "PC Beep Playback Switch", "PCBEEP"},
++ {"Mono Mixer", "Voice Playback Switch", "Voice DAC"},
++ {"Mono Mixer", "Aux Playback Switch", "Aux DAC"},
++ {"Mono Mixer", "Bypass Playback Switch", "Line Mixer"},
++ {"Mono Mixer", "PCM Playback Switch", "AC97 Mixer"},
++ {"Mono Mixer", NULL, "Capture Mono Mux"},
++
++ /* DAC inv mux 1 */
++ {"DAC Inv Mux 1", "Mono", "Mono Mixer"},
++ {"DAC Inv Mux 1", "Speaker", "Speaker Mixer"},
++ {"DAC Inv Mux 1", "Left Headphone", "Left HP Mixer"},
++ {"DAC Inv Mux 1", "Right Headphone", "Right HP Mixer"},
++ {"DAC Inv Mux 1", "Headphone Mono", "HP Mixer"},
++
++ /* DAC inv mux 2 */
++ {"DAC Inv Mux 2", "Mono", "Mono Mixer"},
++ {"DAC Inv Mux 2", "Speaker", "Speaker Mixer"},
++ {"DAC Inv Mux 2", "Left Headphone", "Left HP Mixer"},
++ {"DAC Inv Mux 2", "Right Headphone", "Right HP Mixer"},
++ {"DAC Inv Mux 2", "Headphone Mono", "HP Mixer"},
++
++ /* headphone left mux */
++ {"Left Headphone Out Mux", "Headphone", "Left HP Mixer"},
++
++ /* headphone right mux */
++ {"Right Headphone Out Mux", "Headphone", "Right HP Mixer"},
++
++ /* speaker left mux */
++ {"Left Speaker Out Mux", "Headphone", "Left HP Mixer"},
++ {"Left Speaker Out Mux", "Speaker", "Speaker Mixer"},
++ {"Left Speaker Out Mux", "Inv", "DAC Inv Mux 1"},
++
++ /* speaker right mux */
++ {"Right Speaker Out Mux", "Headphone", "Right HP Mixer"},
++ {"Right Speaker Out Mux", "Speaker", "Speaker Mixer"},
++ {"Right Speaker Out Mux", "Inv", "DAC Inv Mux 2"},
++
++ /* mono mux */
++ {"Mono Out Mux", "Mono", "Mono Mixer"},
++ {"Mono Out Mux", "Inv", "DAC Inv Mux 1"},
++
++ /* out 3 mux */
++ {"Out 3 Mux", "Inv 1", "DAC Inv Mux 1"},
++
++ /* out 4 mux */
++ {"Out 4 Mux", "Inv 2", "DAC Inv Mux 2"},
++
++ /* output pga */
++ {"HPL", NULL, "Left Headphone"},
++ {"Left Headphone", NULL, "Left Headphone Out Mux"},
++ {"HPR", NULL, "Right Headphone"},
++ {"Right Headphone", NULL, "Right Headphone Out Mux"},
++ {"OUT3", NULL, "Out 3"},
++ {"Out 3", NULL, "Out 3 Mux"},
++ {"OUT4", NULL, "Out 4"},
++ {"Out 4", NULL, "Out 4 Mux"},
++ {"SPKL", NULL, "Left Speaker"},
++ {"Left Speaker", NULL, "Left Speaker Out Mux"},
++ {"SPKR", NULL, "Right Speaker"},
++ {"Right Speaker", NULL, "Right Speaker Out Mux"},
++ {"MONO", NULL, "Mono Out"},
++ {"Mono Out", NULL, "Mono Out Mux"},
++
++ /* input pga */
++ {"Left Line In", NULL, "LINEL"},
++ {"Right Line In", NULL, "LINER"},
++ {"Mono In", NULL, "MONOIN"},
++ {"Mic A PGA", NULL, "Mic A Pre Amp"},
++ {"Mic B PGA", NULL, "Mic B Pre Amp"},
++
++ /* left capture select */
++ {"Left Capture Source", "Mic 1", "Mic A Pre Amp"},
++ {"Left Capture Source", "Mic 2", "Mic B Pre Amp"},
++ {"Left Capture Source", "Line", "LINEL"},
++ {"Left Capture Source", "Mono In", "MONOIN"},
++ {"Left Capture Source", "Headphone", "Left HP Mixer"},
++ {"Left Capture Source", "Speaker", "Speaker Mixer"},
++ {"Left Capture Source", "Mono Out", "Mono Mixer"},
++
++ /* right capture select */
++ {"Right Capture Source", "Mic 1", "Mic A Pre Amp"},
++ {"Right Capture Source", "Mic 2", "Mic B Pre Amp"},
++ {"Right Capture Source", "Line", "LINER"},
++ {"Right Capture Source", "Mono In", "MONOIN"},
++ {"Right Capture Source", "Headphone", "Right HP Mixer"},
++ {"Right Capture Source", "Speaker", "Speaker Mixer"},
++ {"Right Capture Source", "Mono Out", "Mono Mixer"},
++
++ /* left ADC */
++ {"Left ADC", NULL, "Left Capture Source"},
++
++ /* right ADC */
++ {"Right ADC", NULL, "Right Capture Source"},
++
++ /* mic */
++ {"Mic A Pre Amp", NULL, "Mic A Source"},
++ {"Mic A Source", "Mic 1", "MIC1"},
++ {"Mic A Source", "Mic 2 A", "MIC2A"},
++ {"Mic A Source", "Mic 2 B", "Mic B Source"},
++ {"Mic B Pre Amp", "MPB", "Mic B Source"},
++ {"Mic B Source", NULL, "MIC2B"},
++
++ /* headphone capture */
++ {"Capture Headphone Mux", "Stereo", "Capture Mixer"},
++ {"Capture Headphone Mux", "Left", "Left Capture Source"},
++ {"Capture Headphone Mux", "Right", "Right Capture Source"},
++
++ /* mono capture */
++ {"Capture Mono Mux", "Stereo", "Capture Mixer"},
++ {"Capture Mono Mux", "Left", "Left Capture Source"},
++ {"Capture Mono Mux", "Right", "Right Capture Source"},
++
++ {NULL, NULL, NULL},
++};
++
++static int wm9713_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(wm9713_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm9713_dapm_widgets[i]);
++ }
++
++ /* set up 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]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++static unsigned int ac97_read(struct snd_soc_codec *codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++
++ if (reg == AC97_RESET || reg == AC97_GPIO_STATUS ||
++ reg == AC97_VENDOR_ID1 || reg == AC97_VENDOR_ID2 ||
++ reg == AC97_CD)
++ return soc_ac97_ops.read(codec->ac97, reg);
++ else {
++ reg = reg >> 1;
++
++ if (reg > (ARRAY_SIZE(wm9713_reg)))
++ return -EIO;
++
++ return cache[reg];
++ }
++}
++
++static int ac97_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int val)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg < 0x7c)
++ soc_ac97_ops.write(codec->ac97, reg, val);
++ reg = reg >> 1;
++ if (reg <= (ARRAY_SIZE(wm9713_reg)))
++ cache[reg] = val;
++
++ return 0;
++}
++
++struct pll_ {
++ unsigned int in_hz;
++ unsigned int lf:1; /* allows low frequency use */
++ unsigned int sdm:1; /* allows fraction n div */
++ unsigned int divsel:1; /* enables input clock div */
++ unsigned int divctl:1; /* input clock divider */
++ unsigned int n:4;
++ unsigned int k;
++};
++
++struct pll_ pll[] = {
++ {13000000, 0, 1, 0, 0, 7, 0x23f488},
++ {2048000, 1, 0, 0, 0, 12, 0x0},
++ {4096000, 1, 0, 0, 0, 6, 0x0},
++ {12288000, 0, 0, 0, 0, 8, 0x0},
++ /* liam - add more entries */
++};
++
++/* we must have either 24.576MHz or a PLL freq */
++static unsigned int wm9713_config_ac97sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ int i;
++ dai->mclk = 0;
++
++ /* first check if we can get away witout burning any PLL power */
++ if (24576000 == clk) {
++ /* standard AC97 clock */
++ dai->mclk = clk;
++ goto out;
++ }
++
++ /* ok no standard clock, so we must now try the PLL */
++ for(i = 0; i < ARRAY_SIZE(pll); i++) {
++ if (clk == pll[i].in_hz) {
++ dai->mclk = clk; /* clock out */
++ goto out;
++ }
++ }
++
++out:
++ return dai->mclk;
++}
++
++/* The WM9713 voice DAC can only run at 256FS. This interface and DAC are
++ * clocked by the main AC97 clock divided down to 256 FS.
++ */
++static unsigned int wm9713_config_vsysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++
++ int i, j, best_clk = info->fs * info->rate;
++
++ /* can we run at this clk without the PLL ? */
++ for (i = 1; i <= 16; i++) {
++ if (best_clk * i == clk) {
++ dai->pll_in = 0;
++ dai->clk_div = i << 1;
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++
++ /* now check for PLL support */
++ for (i = 0; i < ARRAY_SIZE(pll); i++) {
++ if (pll[i].in_hz == clk) {
++ for (j = 1; j <= 16; j++) {
++ if (24576000 == j * best_clk) {
++ dai->pll_in = clk;
++ dai->pll_out = 24576000;
++ dai->clk_div = j << 1;
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++ }
++ }
++
++ /* this clk is not supported */
++ return 0;
++}
++
++u32 wm9713_set_pll(struct snd_soc_codec *codec, u32 in)
++{
++ struct wm9713 *wm = (struct wm9713*)codec->private_data;
++ int i;
++ u16 reg, reg2;
++
++ /* turn PLL off ? */
++ if (in == 0) {
++ /* disable PLL power and select ext source */
++ reg = ac97_read(codec, AC97_HANDSET_RATE);
++ ac97_write(codec, AC97_HANDSET_RATE, reg | 0x0080);
++ reg = ac97_read(codec, AC97_EXTENDED_MID);
++ ac97_write(codec, AC97_EXTENDED_MID, reg | 0x0200);
++ wm->pll = 0;
++ return 0;
++ }
++
++ for (i = 0; i < ARRAY_SIZE(pll); i++) {
++ if (pll[i].in_hz == in)
++ goto found;
++ }
++ return -EINVAL;
++
++found:
++ if (pll[i].sdm == 0) {
++ reg = (pll[i].n << 12) | (pll[i].lf << 11) |
++ (pll[i].divsel << 9) | (pll[i].divctl << 8);
++ ac97_write(codec, AC97_LINE1_LEVEL, reg);
++ } else {
++ /* write the fractional k to the reg 0x46 pages */
++ reg2 = (pll[i].n << 12) | (pll[i].lf << 11) | (pll[i].sdm << 10) |
++ (pll[i].divsel << 9) | (pll[i].divctl << 8);
++
++ reg = reg2 | (0x5 << 4) | (pll[i].k >> 20); /* K [21:20] */
++ ac97_write(codec, AC97_LINE1_LEVEL, reg);
++
++ reg = reg2 | (0x4 << 4) | ((pll[i].k >> 16) & 0xf); /* K [19:16] */
++ ac97_write(codec, AC97_LINE1_LEVEL, reg);
++
++ reg = reg2 | (0x3 << 4) | ((pll[i].k >> 12) & 0xf); /* K [15:12] */
++ ac97_write(codec, AC97_LINE1_LEVEL, reg);
++
++ reg = reg2 | (0x2 << 4) | ((pll[i].k >> 8) & 0xf); /* K [11:8] */
++ ac97_write(codec, AC97_LINE1_LEVEL, reg);
++
++ reg = reg2 | (0x1 << 4) | ((pll[i].k >> 4) & 0xf); /* K [7:4] */
++ ac97_write(codec, AC97_LINE1_LEVEL, reg);
++
++ reg = reg2 | (0x0 << 4) | (pll[i].k & 0xf); /* K [3:0] */
++ ac97_write(codec, AC97_LINE1_LEVEL, reg);
++ }
++
++ /* turn PLL on and select as source */
++ reg = ac97_read(codec, AC97_EXTENDED_MID);
++ ac97_write(codec, AC97_EXTENDED_MID, reg & 0xfdff);
++ reg = ac97_read(codec, AC97_HANDSET_RATE);
++ ac97_write(codec, AC97_HANDSET_RATE, reg & 0xff7f);
++ /* wait 10ms AC97 link frames for the link to stabilise */
++ schedule_timeout_interruptible(msecs_to_jiffies(10));
++ wm->pll = in;
++ return 0;
++}
++EXPORT_SYMBOL_GPL(wm9713_set_pll);
++
++static int wm9713_voice_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 reg = 0x8000, bfs, div, gpio;
++
++ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
++ gpio = ac97_read(codec, AC97_GPIO_CFG) & 0xffe2;
++
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK){
++ case SND_SOC_DAIFMT_CBM_CFM:
++ reg |= 0x4000;
++ gpio |= 0x0008;
++ break;
++ case SND_SOC_DAIFMT_CBM_CFS:
++ reg |= 0x6000;
++ gpio |= 0x000c;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ reg |= 0x0200;
++ gpio |= 0x000d;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFM:
++ gpio |= 0x0009;
++ break;
++ }
++ ac97_write(codec, AC97_GPIO_CFG, gpio);
++
++ /* enable PLL if needed */
++ if (rtd->codec_dai->pll_in)
++ wm9713_set_pll(codec, rtd->codec_dai->pll_in);
++
++ /* set the PCM divider */
++ div = ac97_read(codec, AC97_HANDSET_RATE) & 0xf0ff;
++ ac97_write(codec, AC97_HANDSET_RATE, div |
++ ((rtd->codec_dai->clk_div >> 1) -1) << 8);
++
++ /* clock inversion */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_IB_IF:
++ reg |= 0x00c0;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ reg |= 0x0080;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ reg |= 0x0040;
++ break;
++ }
++
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ reg |= 0x0002;
++ break;
++ case SND_SOC_DAIFMT_RIGHT_J:
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ reg |= 0x0001;
++ break;
++ case SND_SOC_DAIFMT_DSP_A:
++ reg |= 0x0003;
++ break;
++ case SND_SOC_DAIFMT_DSP_B:
++ reg |= 0x0043;
++ break;
++ }
++
++ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ reg |= 0x0004;
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ reg |= 0x0008;
++ break;
++ case SNDRV_PCM_FMTBIT_S32_LE:
++ reg |= 0x000c;
++ break;
++ }
++
++ switch (bfs) {
++ case 2:
++ reg |= (0x1 << 9);
++ break;
++ case 4:
++ reg |= (0x2 << 9);
++ break;
++ case 8:
++ reg |= (0x3 << 9);
++ break;
++ case 16:
++ reg |= (0x4 << 9);
++ break;
++ }
++
++ /* enable PCM interface in master mode */
++ ac97_write(codec, AC97_CENTER_LFE_MASTER, reg);
++ return 0;
++}
++
++static void wm9713_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if (!codec->active)
++ wm9713_set_pll(codec, 0);
++}
++
++static void wm9713_voiceshutdown(snd_pcm_substream_t *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 status;
++
++ wm9713_shutdown(substream);
++
++ /* Gracefully shut down the voice interface. */
++ status = ac97_read(codec, AC97_EXTENDED_STATUS) | 0x1000;
++ ac97_write(codec,AC97_HANDSET_RATE,0x0280);
++ schedule_timeout_interruptible(msecs_to_jiffies(1));
++ ac97_write(codec,AC97_HANDSET_RATE,0x0F80);
++ ac97_write(codec,AC97_EXTENDED_MID,status);
++}
++
++static int ac97_hifi_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ int reg;
++ u16 vra;
++
++ /* we need a 24576000Hz clock to run at the correct speed */
++ if (rtd->codec_dai->mclk != 24576000)
++ wm9713_set_pll(codec, rtd->codec_dai->mclk);
++
++ vra = ac97_read(codec, AC97_EXTENDED_STATUS);
++ ac97_write(codec, AC97_EXTENDED_STATUS, vra | 0x1);
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ reg = AC97_PCM_FRONT_DAC_RATE;
++ else
++ reg = AC97_PCM_LR_ADC_RATE;
++
++ return ac97_write(codec, reg, runtime->rate);
++}
++
++static int ac97_aux_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 vra, xsle;
++
++ /* we need a 24576000Hz clock to run at the correct speed */
++ if (rtd->codec_dai->mclk != 24576000)
++ wm9713_set_pll(codec, rtd->codec_dai->mclk);
++
++ vra = ac97_read(codec, AC97_EXTENDED_STATUS);
++ ac97_write(codec, AC97_EXTENDED_STATUS, vra | 0x1);
++ xsle = ac97_read(codec, AC97_PCI_SID);
++ ac97_write(codec, AC97_PCI_SID, xsle | 0x8000);
++
++ if (substream->stream != SNDRV_PCM_STREAM_PLAYBACK)
++ return -ENODEV;
++
++ return ac97_write(codec, AC97_PCM_SURR_DAC_RATE, runtime->rate);
++}
++
++struct snd_soc_codec_dai wm9713_dai[] = {
++{
++ .name = "AC97 HiFi",
++ .playback = {
++ .stream_name = "HiFi Playback",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .stream_name = "HiFi Capture",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .config_sysclk = wm9713_config_ac97sysclk,
++ .ops = {
++ .shutdown = wm9713_shutdown,
++ .prepare = ac97_hifi_prepare,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(ac97_modes),
++ .mode = ac97_modes,},},
++ {
++ .name = "AC97 Aux",
++ .playback = {
++ .stream_name = "Aux Playback",
++ .channels_min = 1,
++ .channels_max = 1,},
++ .config_sysclk = wm9713_config_ac97sysclk,
++ .ops = {
++ .shutdown = wm9713_shutdown,
++ .prepare = ac97_aux_prepare,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(ac97_modes),
++ .mode = ac97_modes,}
++ },
++ {
++ .name = "WM9713 Voice",
++ .playback = {
++ .stream_name = "Voice Playback",
++ .channels_min = 1,
++ .channels_max = 1,},
++ .capture = {
++ .stream_name = "Voice Capture",
++ .channels_min = 1,
++ .channels_max = 2,},
++ .config_sysclk = wm9713_config_vsysclk,
++ .ops = {
++ .prepare = wm9713_voice_prepare,
++ .shutdown = wm9713_voiceshutdown,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm9713_voice_modes),
++ .mode = wm9713_voice_modes,},
++ },
++};
++EXPORT_SYMBOL_GPL(wm9713_dai);
++
++int wm9713_reset(struct snd_soc_codec *codec, int try_warm)
++{
++ if (try_warm && soc_ac97_ops.warm_reset) {
++ soc_ac97_ops.warm_reset(codec->ac97);
++ if (!(ac97_read(codec, 0) & 0x8000))
++ return 1;
++ }
++
++ soc_ac97_ops.reset(codec->ac97);
++ if (ac97_read(codec, 0) & 0x8000)
++ return -EIO;
++ return 0;
++}
++EXPORT_SYMBOL_GPL(wm9713_reset);
++
++static int wm9713_dapm_event(struct snd_soc_codec *codec, int event)
++{
++ u16 reg;
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ /* enable thermal shutdown */
++ reg = ac97_read(codec, AC97_EXTENDED_MID) & 0x1bff;
++ ac97_write(codec, AC97_EXTENDED_MID, reg);
++ break;
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ break;
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* enable master bias and vmid */
++ reg = ac97_read(codec, AC97_EXTENDED_MID) & 0x3bff;
++ ac97_write(codec, AC97_EXTENDED_MID, reg);
++ ac97_write(codec, AC97_POWERDOWN, 0x0000);
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ /* disable everything including AC link */
++ ac97_write(codec, AC97_EXTENDED_MID, 0xffff);
++ ac97_write(codec, AC97_EXTENDED_MSTATUS, 0xffff);
++ ac97_write(codec, AC97_POWERDOWN, 0xffff);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++static int wm9713_soc_suspend(struct platform_device *pdev,
++ pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ struct wm9713 *wm = (struct wm9713*)codec->private_data;
++
++ if (wm->pll) {
++ wm->pll_resume = wm->pll;
++ wm9713_set_pll(codec, 0);
++ }
++ wm9713_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int wm9713_soc_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ struct wm9713 *wm = (struct wm9713*)codec->private_data;
++ int i, ret;
++ u16 *cache = codec->reg_cache;
++
++ if ((ret = wm9713_reset(codec, 1)) < 0){
++ printk(KERN_ERR "could not reset AC97 codec\n");
++ return ret;
++ }
++
++ wm9713_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++
++ /* only synchronise the codec if warm reset failed */
++ if (ret == 0) {
++ for (i = 2; i < ARRAY_SIZE(wm9713_reg) << 1; i+=2) {
++ if (i == AC97_POWERDOWN || i == AC97_EXTENDED_MID ||
++ i == AC97_EXTENDED_MSTATUS || i > 0x66)
++ continue;
++ soc_ac97_ops.write(codec->ac97, i, cache[i>>1]);
++ }
++ }
++
++ if (wm->pll_resume) {
++ wm9713_set_pll(codec, wm->pll_resume);
++ wm->pll_resume = 0;
++ }
++
++ if (codec->suspend_dapm_state == SNDRV_CTL_POWER_D0)
++ wm9713_dapm_event(codec, SNDRV_CTL_POWER_D0);
++
++ return ret;
++}
++
++static int wm9713_soc_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec;
++ int ret = 0, reg;
++
++ printk(KERN_INFO "WM9713/WM9714 SoC Audio Codec %s\n", WM9713_VERSION);
++
++ socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (socdev->codec == NULL)
++ return -ENOMEM;
++ codec = socdev->codec;
++ mutex_init(&codec->mutex);
++
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(wm9713_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL){
++ kfree(socdev->codec);
++ socdev->codec = NULL;
++ return -ENOMEM;
++ }
++ memcpy(codec->reg_cache, wm9713_reg,
++ sizeof(u16) * ARRAY_SIZE(wm9713_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm9713_reg);
++ codec->reg_cache_step = 2;
++
++ codec->private_data = kzalloc(sizeof(struct wm9713), GFP_KERNEL);
++ if (codec->private_data == NULL) {
++ kfree(codec->reg_cache);
++ kfree(socdev->codec);
++ socdev->codec = NULL;
++ return -ENOMEM;
++ }
++
++ codec->name = "WM9713";
++ codec->owner = THIS_MODULE;
++ codec->dai = wm9713_dai;
++ codec->num_dai = ARRAY_SIZE(wm9713_dai);
++ codec->write = ac97_write;
++ codec->read = ac97_read;
++ codec->dapm_event = wm9713_dapm_event;
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0);
++ if (ret < 0)
++ goto err;
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if (ret < 0)
++ goto pcm_err;
++
++ /* do a cold reset for the controller and then try
++ * a warm reset followed by an optional cold reset for codec */
++ wm9713_reset(codec, 0);
++ ret = wm9713_reset(codec, 1);
++ if (ret < 0) {
++ printk(KERN_ERR "AC97 link error\n");
++ goto reset_err;
++ }
++
++ wm9713_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++
++ /* unmute the adc - move to kcontrol */
++ reg = ac97_read(codec, AC97_CD) & 0x7fff;
++ ac97_write(codec, AC97_CD, reg);
++
++ wm9713_add_controls(codec);
++ wm9713_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if (ret < 0)
++ goto reset_err;
++ return 0;
++
++reset_err:
++ snd_soc_free_pcms(socdev);
++
++pcm_err:
++ snd_soc_free_ac97_codec(codec);
++
++err:
++ kfree(socdev->codec->private_data);
++ kfree(socdev->codec->reg_cache);
++ kfree(socdev->codec);
++ socdev->codec = NULL;
++ return ret;
++}
++
++static int wm9713_soc_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if (codec == NULL)
++ return 0;
++
++ snd_soc_dapm_free(socdev);
++ snd_soc_free_pcms(socdev);
++ snd_soc_free_ac97_codec(codec);
++ kfree(codec->private_data);
++ kfree(codec->reg_cache);
++ kfree(codec);
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_wm9713= {
++ .probe = wm9713_soc_probe,
++ .remove = wm9713_soc_remove,
++ .suspend = wm9713_soc_suspend,
++ .resume = wm9713_soc_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_wm9713);
++
++MODULE_DESCRIPTION("ASoC WM9713/WM9714 driver");
++MODULE_AUTHOR("Liam Girdwood");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm9713.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm9713.h
+@@ -0,0 +1,18 @@
++/*
++ * wm9713.h -- WM9713 Soc Audio driver
++ */
++
++#ifndef _WM9713_H
++#define _WM9713_H
++
++#define WM9713_DAI_AC97_HIFI 0
++#define WM9713_DAI_AC97_AUX 1
++#define WM9713_DAI_PCM_VOICE 2
++
++extern struct snd_soc_codec_device soc_codec_dev_wm9713;
++extern struct snd_soc_codec_dai wm9713_dai[3];
++
++u32 wm9713_set_pll(struct snd_soc_codec *codec, u32 in);
++int wm9713_reset(struct snd_soc_codec *codec, int try_warm);
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/pxa/Kconfig
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/Kconfig
+@@ -0,0 +1,125 @@
++menu "SoC Audio for the Intel PXA2xx"
++
++config SND_PXA2xx_SOC
++ tristate "SoC Audio for the Intel PXA2xx chip"
++ depends on ARCH_PXA && SND
++ select SND_PCM
++ help
++ Say Y or M if you want to add support for codecs attached to
++ the PXA2xx AC97, I2S or SSP interface. You will also need
++ to select the audio interfaces to support below.
++
++config SND_PXA2xx_AC97
++ tristate
++ select SND_AC97_CODEC
++
++config SND_PXA2xx_SOC_AC97
++ tristate
++ select SND_AC97_BUS
++ select SND_SOC_AC97_BUS
++
++config SND_PXA2xx_SOC_I2S
++ tristate
++
++config SND_PXA2xx_SOC_SSP
++ tristate
++ select PXA_SSP
++
++config SND_PXA2xx_SOC_MAINSTONE
++ tristate "SoC AC97 Audio support for Intel Mainstone"
++ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
++ select SND_PXA2xx_AC97
++ help
++ Say Y if you want to add support for generic AC97 SoC audio on Mainstone.
++
++config SND_PXA2xx_SOC_MAINSTONE_WM8731
++ tristate "SoC I2S Audio support for Intel Mainstone - WM8731"
++ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
++ select SND_PXA2xx_SOC_I2S
++ help
++ Say Y if you want to add support for SoC audio on Mainstone
++ with the WM8731.
++
++config SND_PXA2xx_SOC_MAINSTONE_WM8753
++ tristate "SoC I2S/SSP Audio support for Intel Mainstone - WM8753"
++ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
++ select SND_PXA2xx_SOC_I2S
++ select SND_PXA2xx_SOC_SSP
++ help
++ Say Y if you want to add support for SoC audio on Mainstone
++ with the WM8753.
++
++config SND_PXA2xx_SOC_MAINSTONE_WM8974
++ tristate "SoC I2S Audio support for Intel Mainstone - WM8974"
++ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
++ select SND_PXA2xx_SOC_I2S
++ help
++ Say Y if you want to add support for SoC audio on Mainstone
++ with the WM8974.
++
++config SND_PXA2xx_SOC_MAINSTONE_WM9713
++ tristate "SoC I2S/SSP Audio support for Intel Mainstone - WM9713"
++ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
++ select SND_PXA2xx_SOC_AC97
++ select SND_PXA2xx_SOC_SSP
++ help
++ Say Y if you want to add support for SoC voice audio on Mainstone
++ with the WM9713.
++
++config SND_MAINSTONE_BASEBAND
++ tristate "Example SoC Baseband Audio support for Intel Mainstone"
++ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
++ select SND_PXA2xx_SOC_AC97
++ help
++ Say Y if you want to add support for SoC baseband on Mainstone
++ with the WM9713 and example Baseband modem.
++
++config SND_MAINSTONE_BLUETOOTH
++ tristate "Example SoC Bluetooth Audio support for Intel Mainstone"
++ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
++ select SND_PXA2xx_SOC_I2S
++ help
++ Say Y if you want to add support for SoC bluetooth on Mainstone
++ with the WM8753 and example Bluetooth codec.
++
++config SND_PXA2xx_SOC_MAINSTONE_WM9712
++ tristate "SoC I2S/SSP Audio support for Intel Mainstone - WM9712"
++ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
++ select SND_PXA2xx_SOC_AC97
++ help
++ Say Y if you want to add support for SoC voice audio on Mainstone
++ with the WM9712.
++
++config SND_PXA2xx_SOC_CORGI
++ tristate "SoC Audio support for Sharp Zaurus SL-C7x0"
++ depends on SND_PXA2xx_SOC && PXA_SHARP_C7xx
++ select SND_PXA2xx_SOC_I2S
++ help
++ Say Y if you want to add support for SoC audio on Sharp
++ Zaurus SL-C7x0 models (Corgi, Shepherd, Husky).
++
++config SND_PXA2xx_SOC_SPITZ
++ tristate "SoC Audio support for Sharp Zaurus SL-Cxx00"
++ depends on SND_PXA2xx_SOC && PXA_SHARP_Cxx00
++ select SND_PXA2xx_SOC_I2S
++ help
++ Say Y if you want to add support for SoC audio on Sharp
++ Zaurus SL-Cxx00 models (Spitz, Borzoi and Akita).
++
++config SND_PXA2xx_SOC_POODLE
++ tristate "SoC Audio support for Poodle"
++ depends on SND_PXA2xx_SOC && MACH_POODLE
++ select SND_PXA2xx_SOC_I2S
++ help
++ Say Y if you want to add support for SoC audio on Sharp
++ Zaurus SL-5600 model (Poodle).
++
++config SND_PXA2xx_SOC_TOSA
++ tristate "SoC AC97 Audio support for Tosa"
++ depends on SND_PXA2xx_SOC && MACH_TOSA
++ select SND_PXA2xx_SOC_AC97
++ help
++ Say Y if you want to add support for SoC audio on Sharp
++ Zaurus SL-C6000x models (Tosa).
++
++endmenu
+Index: linux-2.6-pxa-new/sound/soc/pxa/Makefile
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/Makefile
+@@ -0,0 +1,36 @@
++# PXA Platform Support
++snd-soc-pxa2xx-objs := pxa2xx-pcm.o
++snd-soc-pxa2xx-ac97-objs := pxa2xx-ac97.o
++snd-soc-pxa2xx-i2s-objs := pxa2xx-i2s.o
++snd-soc-pxa2xx-ssp-objs := pxa2xx-ssp.o
++
++obj-$(CONFIG_SND_PXA2xx_SOC) += snd-soc-pxa2xx.o
++obj-$(CONFIG_SND_PXA2xx_SOC_AC97) += snd-soc-pxa2xx-ac97.o
++obj-$(CONFIG_SND_PXA2xx_SOC_I2S) += snd-soc-pxa2xx-i2s.o
++obj-$(CONFIG_SND_PXA2xx_SOC_SSP) += snd-soc-pxa2xx-ssp.o
++
++# PXA Machine Support
++snd-soc-corgi-objs := corgi.o
++snd-soc-mainstone-wm8731-objs := mainstone_wm8731.o
++snd-soc-mainstone-wm8753-objs := mainstone_wm8753.o
++snd-soc-mainstone-wm8974-objs := mainstone_wm8974.o
++snd-soc-mainstone-wm9713-objs := mainstone_wm9713.o
++snd-soc-mainstone-wm9712-objs := mainstone_wm9712.o
++snd-soc-mainstone-baseband-objs := mainstone_baseband.o
++snd-soc-mainstone-bluetooth-objs := mainstone_bluetooth.o
++snd-soc-poodle-objs := poodle.o
++snd-soc-tosa-objs := tosa.o
++snd-soc-spitz-objs := spitz.o
++
++obj-$(CONFIG_SND_PXA2xx_SOC_CORGI) += snd-soc-corgi.o
++obj-$(CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8731) += snd-soc-mainstone-wm8731.o
++obj-$(CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753) += snd-soc-mainstone-wm8753.o
++obj-$(CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8974) += snd-soc-mainstone-wm8974.o
++obj-$(CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713) += snd-soc-mainstone-wm9713.o
++obj-$(CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712) += snd-soc-mainstone-wm9712.o
++obj-$(CONFIG_SND_MAINSTONE_BASEBAND) += snd-soc-mainstone-baseband.o
++obj-$(CONFIG_SND_MAINSTONE_BLUETOOTH) += snd-soc-mainstone-bluetooth.o
++obj-$(CONFIG_SND_PXA2xx_SOC_POODLE) += snd-soc-poodle.o
++obj-$(CONFIG_SND_PXA2xx_SOC_TOSA) += snd-soc-tosa.o
++obj-$(CONFIG_SND_PXA2xx_SOC_SPITZ) += snd-soc-spitz.o
++
+Index: linux-2.6-pxa-new/sound/soc/pxa/corgi.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/corgi.c
+@@ -0,0 +1,361 @@
++/*
++ * corgi.c -- SoC audio for Corgi
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Authors: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
++ * Richard Purdie <richard@openedhand.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
++ * 30th Nov 2005 Initial version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/timer.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.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/pxa-regs.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/corgi.h>
++#include <asm/arch/audio.h>
++
++#include "../codecs/wm8731.h"
++#include "pxa2xx-pcm.h"
++
++#define CORGI_HP 0
++#define CORGI_MIC 1
++#define CORGI_LINE 2
++#define CORGI_HEADSET 3
++#define CORGI_HP_OFF 4
++#define CORGI_SPK_ON 0
++#define CORGI_SPK_OFF 1
++
++ /* audio clock in Hz - rounded from 12.235MHz */
++#define CORGI_AUDIO_CLOCK 12288000
++
++static int corgi_jack_func;
++static int corgi_spk_func;
++
++static void corgi_ext_control(struct snd_soc_codec *codec)
++{
++ int spk = 0, mic = 0, line = 0, hp = 0, hs = 0;
++
++ /* set up jack connection */
++ switch (corgi_jack_func) {
++ case CORGI_HP:
++ hp = 1;
++ /* set = unmute headphone */
++ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
++ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
++ break;
++ case CORGI_MIC:
++ mic = 1;
++ /* reset = mute headphone */
++ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
++ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
++ break;
++ case CORGI_LINE:
++ line = 1;
++ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
++ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
++ break;
++ case CORGI_HEADSET:
++ hs = 1;
++ mic = 1;
++ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
++ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
++ break;
++ }
++
++ if (corgi_spk_func == CORGI_SPK_ON)
++ spk = 1;
++
++ /* set the enpoints to their new connetion states */
++ snd_soc_dapm_set_endpoint(codec, "Ext Spk", spk);
++ snd_soc_dapm_set_endpoint(codec, "Mic Jack", mic);
++ snd_soc_dapm_set_endpoint(codec, "Line Jack", line);
++ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", hp);
++ snd_soc_dapm_set_endpoint(codec, "Headset Jack", hs);
++
++ /* signal a DAPM event */
++ snd_soc_dapm_sync_endpoints(codec);
++}
++
++static int corgi_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->socdev->codec;
++
++ /* check the jack status at stream startup */
++ corgi_ext_control(codec);
++ return 0;
++}
++
++/* we need to unmute the HP at shutdown as the mute burns power on corgi */
++static int corgi_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->socdev->codec;
++
++ /* set = unmute headphone */
++ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
++ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
++ return 0;
++}
++
++static struct snd_soc_ops corgi_ops = {
++ .startup = corgi_startup,
++ .shutdown = corgi_shutdown,
++};
++
++static int corgi_get_jack(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = corgi_jack_func;
++ return 0;
++}
++
++static int corgi_set_jack(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ if (corgi_jack_func == ucontrol->value.integer.value[0])
++ return 0;
++
++ corgi_jack_func = ucontrol->value.integer.value[0];
++ corgi_ext_control(codec);
++ return 1;
++}
++
++static int corgi_get_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = corgi_spk_func;
++ return 0;
++}
++
++static int corgi_set_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ if (corgi_spk_func == ucontrol->value.integer.value[0])
++ return 0;
++
++ corgi_spk_func = ucontrol->value.integer.value[0];
++ corgi_ext_control(codec);
++ return 1;
++}
++
++static int corgi_amp_event(struct snd_soc_dapm_widget *w, int event)
++{
++ if (SND_SOC_DAPM_EVENT_ON(event))
++ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_APM_ON);
++ else
++ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_APM_ON);
++
++ return 0;
++}
++
++static int corgi_mic_event(struct snd_soc_dapm_widget *w, int event)
++{
++ if (SND_SOC_DAPM_EVENT_ON(event))
++ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MIC_BIAS);
++ else
++ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MIC_BIAS);
++
++ return 0;
++}
++
++/* corgi machine dapm widgets */
++static const struct snd_soc_dapm_widget wm8731_dapm_widgets[] = {
++SND_SOC_DAPM_HP("Headphone Jack", NULL),
++SND_SOC_DAPM_MIC("Mic Jack", corgi_mic_event),
++SND_SOC_DAPM_SPK("Ext Spk", corgi_amp_event),
++SND_SOC_DAPM_LINE("Line Jack", NULL),
++SND_SOC_DAPM_HP("Headset Jack", NULL),
++};
++
++/* Corgi machine audio map (connections to the codec pins) */
++static const char *audio_map[][3] = {
++
++ /* headset Jack - in = micin, out = LHPOUT*/
++ {"Headset Jack", NULL, "LHPOUT"},
++
++ /* headphone connected to LHPOUT1, RHPOUT1 */
++ {"Headphone Jack", NULL, "LHPOUT"},
++ {"Headphone Jack", NULL, "RHPOUT"},
++
++ /* speaker connected to LOUT, ROUT */
++ {"Ext Spk", NULL, "ROUT"},
++ {"Ext Spk", NULL, "LOUT"},
++
++ /* mic is connected to MICIN (via right channel of headphone jack) */
++ {"MICIN", NULL, "Mic Jack"},
++
++ /* Same as the above but no mic bias for line signals */
++ {"MICIN", NULL, "Line Jack"},
++
++ {NULL, NULL, NULL},
++};
++
++static const char *jack_function[] = {"Headphone", "Mic", "Line", "Headset",
++ "Off"};
++static const char *spk_function[] = {"On", "Off"};
++static const struct soc_enum corgi_enum[] = {
++ SOC_ENUM_SINGLE_EXT(5, jack_function),
++ SOC_ENUM_SINGLE_EXT(2, spk_function),
++};
++
++static const struct snd_kcontrol_new wm8731_corgi_controls[] = {
++ SOC_ENUM_EXT("Jack Function", corgi_enum[0], corgi_get_jack,
++ corgi_set_jack),
++ SOC_ENUM_EXT("Speaker Function", corgi_enum[1], corgi_get_spk,
++ corgi_set_spk),
++};
++
++/*
++ * Logic for a wm8731 as connected on a Sharp SL-C7x0 Device
++ */
++static int corgi_wm8731_init(struct snd_soc_codec *codec)
++{
++ int i, err;
++
++ snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
++ snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
++
++ /* Add corgi specific controls */
++ for (i = 0; i < ARRAY_SIZE(wm8731_corgi_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8731_corgi_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++
++ /* Add corgi specific widgets */
++ for(i = 0; i < ARRAY_SIZE(wm8731_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm8731_dapm_widgets[i]);
++ }
++
++ /* Set up corgi specific audio path audio_map */
++ 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]);
++ }
++
++ snd_soc_dapm_sync_endpoints(codec);
++ return 0;
++}
++
++static unsigned int corgi_config_sysclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++{
++ if (info->bclk_master & SND_SOC_DAIFMT_CBS_CFS) {
++ /* pxa2xx is i2s master */
++ switch (info->rate) {
++ case 44100:
++ case 88200:
++ /* configure codec digital filters for 44.1, 88.2 */
++ rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
++ 11289600);
++ break;
++ default:
++ /* configure codec digital filters for all other rates */
++ rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
++ CORGI_AUDIO_CLOCK);
++ break;
++ }
++ /* config pxa i2s as master */
++ return rtd->cpu_dai->config_sysclk(rtd->cpu_dai, info,
++ CORGI_AUDIO_CLOCK);
++ } else {
++ /* codec is i2s master -
++ * only configure codec DAI clock and filters */
++ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
++ CORGI_AUDIO_CLOCK);
++ }
++}
++
++/* corgi digital audio interface glue - connects codec <--> CPU */
++static struct snd_soc_dai_link corgi_dai = {
++ .name = "WM8731",
++ .stream_name = "WM8731",
++ .cpu_dai = &pxa_i2s_dai,
++ .codec_dai = &wm8731_dai,
++ .init = corgi_wm8731_init,
++ .config_sysclk = corgi_config_sysclk,
++};
++
++/* corgi audio machine driver */
++static struct snd_soc_machine snd_soc_machine_corgi = {
++ .name = "Corgi",
++ .dai_link = &corgi_dai,
++ .num_links = 1,
++ .ops = &corgi_ops,
++};
++
++/* corgi audio private data */
++static struct wm8731_setup_data corgi_wm8731_setup = {
++ .i2c_address = 0x1b,
++};
++
++/* corgi audio subsystem */
++static struct snd_soc_device corgi_snd_devdata = {
++ .machine = &snd_soc_machine_corgi,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm8731,
++ .codec_data = &corgi_wm8731_setup,
++};
++
++static struct platform_device *corgi_snd_device;
++
++static int __init corgi_init(void)
++{
++ int ret;
++
++ if (!(machine_is_corgi() || machine_is_shepherd() || machine_is_husky()))
++ return -ENODEV;
++
++ corgi_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!corgi_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(corgi_snd_device, &corgi_snd_devdata);
++ corgi_snd_devdata.dev = &corgi_snd_device->dev;
++ ret = platform_device_add(corgi_snd_device);
++
++ if (ret)
++ platform_device_put(corgi_snd_device);
++
++ return ret;
++}
++
++static void __exit corgi_exit(void)
++{
++ platform_device_unregister(corgi_snd_device);
++}
++
++module_init(corgi_init);
++module_exit(corgi_exit);
++
++/* Module information */
++MODULE_AUTHOR("Richard Purdie");
++MODULE_DESCRIPTION("ALSA SoC Corgi");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/mainstone.c
+@@ -0,0 +1,126 @@
++/*
++ * mainstone.c -- SoC audio for Mainstone
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * Mainstone audio amplifier code taken from arch/arm/mach-pxa/mainstone.c
++ * Copyright: MontaVista Software 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.
++ *
++ * Revision history
++ * 30th Oct 2005 Initial version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/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/arch/pxa-regs.h>
++#include <asm/arch/mainstone.h>
++#include <asm/arch/audio.h>
++
++#include "../codecs/ac97.h"
++#include "pxa2xx-pcm.h"
++
++static struct snd_soc_machine mainstone;
++static long mst_audio_suspend_mask;
++
++static int mainstone_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ mst_audio_suspend_mask = MST_MSCWR2;
++ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static int mainstone_resume(struct platform_device *pdev)
++{
++ MST_MSCWR2 &= mst_audio_suspend_mask | ~MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static int mainstone_probe(struct platform_device *pdev)
++{
++ MST_MSCWR2 &= ~MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static int mainstone_remove(struct platform_device *pdev)
++{
++ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static struct snd_soc_machine_config codecs[] = {
++{
++ .name = "AC97",
++ .sname = "AC97 HiFi",
++ .iface = &pxa_ac97_interface[0],
++},
++{
++ .name = "AC97 Aux",
++ .sname = "AC97 Aux",
++ .iface = &pxa_ac97_interface[1],
++},
++};
++
++static struct snd_soc_machine mainstone = {
++ .name = "Mainstone",
++ .probe = mainstone_probe,
++ .remove = mainstone_remove,
++ .suspend_pre = mainstone_suspend,
++ .resume_post = mainstone_resume,
++ .config = codecs,
++ .nconfigs = ARRAY_SIZE(codecs),
++};
++
++static struct snd_soc_device mainstone_snd_devdata = {
++ .machine = &mainstone,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_ac97,
++};
++
++static struct platform_device *mainstone_snd_device;
++
++static int __init mainstone_init(void)
++{
++ int ret;
++
++ mainstone_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!mainstone_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(mainstone_snd_device, &mainstone_snd_devdata);
++ mainstone_snd_devdata.dev = &mainstone_snd_device->dev;
++ ret = platform_device_add(mainstone_snd_device);
++
++ if (ret)
++ platform_device_put(mainstone_snd_device);
++
++ return ret;
++}
++
++static void __exit mainstone_exit(void)
++{
++ platform_device_unregister(mainstone_snd_device);
++}
++
++module_init(mainstone_init);
++module_exit(mainstone_exit);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("ALSA SoC Mainstone");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_baseband.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_baseband.c
+@@ -0,0 +1,249 @@
++/*
++ * mainstone_baseband.c
++ * Mainstone Example Baseband modem -- ALSA Soc Audio Layer
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or 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
++ * 15th Apr 2006 Initial version.
++ *
++ * This is example code to demonstrate connecting a baseband modem to the PCM
++ * DAI on the WM9713 codec on the Intel Mainstone platform. It is by no means
++ * complete as it requires code to control the modem.
++ *
++ * The architecture consists of the WM9713 AC97 DAI connected to the PXA27x
++ * AC97 controller and the WM9713 PCM DAI connected to the basebands DAI. The
++ * baseband is controlled via a serial port. Audio is routed between the PXA27x
++ * and the baseband via internal WM9713 analog paths.
++ *
++ * This driver is not the baseband modem driver. This driver only calls
++ * functions from the Baseband driver to set up it's PCM DAI.
++ *
++ * It's intended to use this driver as follows:-
++ *
++ * 1. open() WM9713 PCM audio device.
++ * 2. open() serial device (for AT commands).
++ * 3. configure PCM audio device (rate etc) - sets up WM9713 PCM DAI,
++ * this will also set up the baseband PCM DAI (via calling baseband driver).
++ * 4. send any further AT commands to set up baseband.
++ * 5. configure codec audio mixer paths.
++ * 6. open(), configure and read/write AC97 audio device - to Tx/Rx voice
++ *
++ * The PCM audio device is opened but IO is never performed on it as the IO is
++ * directly between the codec and the baseband (and not the CPU).
++ *
++ * TODO:
++ * o Implement callbacks
++ */
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/audio.h>
++#include <asm/arch/ssp.h>
++
++#include "../codecs/wm9713.h"
++#include "pxa2xx-pcm.h"
++
++static struct snd_soc_machine mainstone;
++
++#define BASEBAND_XXX_DAIFMT \
++ (SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_CBS_CFS |\
++ SND_SOC_DAIFMT_NB_NF)
++
++#define BASEBAND_XXX_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++/*
++ * PCM modes - 8k 16bit mono baseband modem is master
++ */
++static struct snd_soc_dai_mode mainstone_example_modes[] = {
++ /* port master clk & frame modes */
++ {BASEBAND_XXX_DAIFMT, SND_SOC_DAITDM_LRDW(0,0), SNDRV_PCM_FORMAT_S16_LE,
++ SNDRV_PCM_RATE_8000, BASEBAND_XXX_DIR, SND_SOC_DAI_BFS_RATE, 256, 64},
++};
++
++/* Do specific baseband PCM voice startup here */
++static int mainstone_baseband_startup(struct snd_pcm_substream *substream)
++{
++ return 0;
++}
++
++/* Do specific baseband PCM voice shutdown here */
++static void mainstone_baseband_shutdown (struct snd_pcm_substream *substream)
++{
++}
++
++/* Do specific baseband modem PCM voice hw params init here */
++static int mainstone_baseband_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ return 0;
++}
++
++/* Do specific baseband modem PCM voice hw params free here */
++static int mainstone_baseband_hw_free(struct snd_pcm_substream *substream)
++{
++ return 0;
++}
++
++static struct snd_soc_cpu_dai mainstone_example_dai[] = {
++ { .name = "Baseband",
++ .id = 0,
++ .type = SND_SOC_DAI_PCM,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 1,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 1,},
++ .ops = {
++ .startup = mainstone_baseband_startup,
++ .shutdown = mainstone_baseband_shutdown,
++ .hw_params = mainstone_baseband_hw_params,
++ .hw_free = mainstone_baseband_hw_free,
++ },
++ .caps = {
++ .mode = mainstone_example_modes,
++ .num_modes = ARRAY_SIZE(mainstone_example_modes),},
++ },
++};
++
++/* do we need to do any thing on the mainstone when the stream is
++ * started and stopped
++ */
++static int mainstone_startup(struct snd_pcm_substream *substream)
++{
++ return 0;
++}
++
++static void mainstone_shutdown(struct snd_pcm_substream *substream)
++{
++}
++
++static struct snd_soc_ops mainstone_ops = {
++ .startup = mainstone_startup,
++ .shutdown = mainstone_shutdown,
++};
++
++/* PM */
++static int mainstone_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ return 0;
++}
++
++static int mainstone_resume(struct platform_device *pdev)
++{
++ return 0;
++}
++
++static int mainstone_probe(struct platform_device *pdev)
++{
++ return 0;
++}
++
++static int mainstone_remove(struct platform_device *pdev)
++{
++ return 0;
++}
++
++static int mainstone_wm9713_init(struct snd_soc_codec *codec)
++{
++ return 0;
++}
++
++unsigned int mainstone_config_sysclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++{
++ /* wm8753 has pll that generates mclk from 13MHz xtal */
++ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 13000000);
++}
++
++/* the physical audio connections between the WM9713, Baseband and pxa2xx */
++static struct snd_soc_dai_link mainstone_dai[] = {
++{
++ .name = "AC97",
++ .stream_name = "AC97 HiFi",
++ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
++ .codec_dai = &wm9713_dai[WM9713_DAI_AC97_HIFI],
++ .init = mainstone_wm9713_init,
++},
++{
++ .name = "AC97 Aux",
++ .stream_name = "AC97 Aux",
++ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
++ .codec_dai = &wm9713_dai[WM9713_DAI_AC97_AUX],
++},
++{
++ .name = "Baseband",
++ .stream_name = "Voice",
++ .cpu_dai = mainstone_example_dai,
++ .codec_dai = &wm9713_dai[WM9713_DAI_PCM_VOICE],
++ .config_sysclk = mainstone_config_sysclk,
++},
++};
++
++static struct snd_soc_machine mainstone = {
++ .name = "Mainstone",
++ .probe = mainstone_probe,
++ .remove = mainstone_remove,
++ .suspend_pre = mainstone_suspend,
++ .resume_post = mainstone_resume,
++ .ops = &mainstone_ops,
++ .dai_link = mainstone_dai,
++ .num_links = ARRAY_SIZE(mainstone_dai),
++};
++
++static struct snd_soc_device mainstone_snd_ac97_devdata = {
++ .machine = &mainstone,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm9713,
++};
++
++static struct platform_device *mainstone_snd_ac97_device;
++
++static int __init mainstone_init(void)
++{
++ int ret;
++
++ mainstone_snd_ac97_device = platform_device_alloc("soc-audio", -1);
++ if (!mainstone_snd_ac97_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(mainstone_snd_ac97_device, &mainstone_snd_ac97_devdata);
++ mainstone_snd_ac97_devdata.dev = &mainstone_snd_ac97_device->dev;
++
++ if((ret = platform_device_add(mainstone_snd_ac97_device)) != 0)
++ platform_device_put(mainstone_snd_ac97_device);
++
++ return ret;
++}
++
++static void __exit mainstone_exit(void)
++{
++ platform_device_unregister(mainstone_snd_ac97_device);
++}
++
++module_init(mainstone_init);
++module_exit(mainstone_exit);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("Mainstone Example Baseband PCM Interface");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_bluetooth.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_bluetooth.c
+@@ -0,0 +1,399 @@
++/*
++ * mainstone_bluetooth.c
++ * Mainstone Example Bluetooth -- ALSA Soc Audio Layer
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or 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
++ * 15th May 2006 Initial version.
++ *
++ * This is example code to demonstrate connecting a bluetooth codec to the PCM
++ * DAI on the WM8753 codec on the Intel Mainstone platform. It is by no means
++ * complete as it requires code to control the BT codec.
++ *
++ * The architecture consists of the WM8753 HIFI DAI connected to the PXA27x
++ * I2S controller and the WM8753 PCM DAI connected to the bluetooth DAI. The
++ * bluetooth codec and wm8753 are controlled via I2C. Audio is routed between
++ * the PXA27x and the bluetooth via internal WM8753 analog paths.
++ *
++ * This example supports the following audio input/outputs.
++ *
++ * o Board mounted Mic and Speaker (spk has amplifier)
++ * o Headphones via jack socket
++ * o BT source and sink
++ *
++ * This driver is not the bluetooth codec driver. This driver only calls
++ * functions from the Bluetooth driver to set up it's PCM DAI.
++ *
++ * It's intended to use the driver as follows:-
++ *
++ * 1. open() WM8753 PCM audio device.
++ * 2. configure PCM audio device (rate etc) - sets up WM8753 PCM DAI,
++ * this should also set up the BT codec DAI (via calling bt driver).
++ * 3. configure codec audio mixer paths.
++ * 4. open(), configure and read/write HIFI audio device - to Tx/Rx voice
++ *
++ * The PCM audio device is opened but IO is never performed on it as the IO is
++ * directly between the codec and the BT codec (and not the CPU).
++ *
++ * TODO:
++ * o Implement callbacks
++ */
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/audio.h>
++#include <asm/arch/ssp.h>
++
++#include "../codecs/wm8753.h"
++#include "pxa2xx-pcm.h"
++
++static struct snd_soc_machine mainstone;
++
++#define BLUETOOTH_DAIFMT \
++ (SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_CBS_CFS |\
++ SND_SOC_DAIFMT_NB_NF)
++
++#define BLUETOOTH_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++/*
++ * PCM modes - 8k 16bit mono BT codec is master
++ */
++static struct snd_soc_dai_mode mainstone_bt_modes[] = {
++ /* port master clk & frame modes */
++ {BLUETOOTH_DAIFMT, SND_SOC_DAITDM_LRDW(0,0), SNDRV_PCM_FORMAT_S16_LE,
++ SNDRV_PCM_RATE_8000, BLUETOOTH_DIR, SND_SOC_DAI_BFS_RATE, 256, 64},
++};
++
++/* Do specific bluetooth PCM startup here */
++static int mainstone_bt_startup(struct snd_pcm_substream *substream)
++{
++ return 0;
++}
++
++/* Do specific bluetooth PCM shutdown here */
++static void mainstone_bt_shutdown (struct snd_pcm_substream *substream)
++{
++}
++
++/* Do pecific bluetooth PCM hw params init here */
++static int mainstone_bt_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ return 0;
++}
++
++/* Do specific bluetooth PCM hw params free here */
++static int mainstone_bt_hw_free(struct snd_pcm_substream *substream)
++{
++ return 0;
++}
++
++static struct snd_soc_cpu_dai mainstone_bt_dai[] = {
++ { .name = "Bluetooth",
++ .id = 0,
++ .type = SND_SOC_DAI_PCM,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 1,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 1,},
++ .ops = {
++ .startup = mainstone_bt_startup,
++ .shutdown = mainstone_bt_shutdown,
++ .hw_params = mainstone_bt_hw_params,
++ .hw_free = mainstone_bt_hw_free,
++ },
++ .caps = {
++ .mode = mainstone_bt_modes,
++ .num_modes = ARRAY_SIZE(mainstone_bt_modes),},
++ },
++};
++
++/* do we need to do any thing on the mainstone when the stream is
++ * started and stopped
++ */
++static int mainstone_startup(struct snd_pcm_substream *substream)
++{
++ return 0;
++}
++
++static void mainstone_shutdown(struct snd_pcm_substream *substream)
++{
++}
++
++static struct snd_soc_ops mainstone_ops = {
++ .startup = mainstone_startup,
++ .shutdown = mainstone_shutdown,
++};
++
++/* PM */
++static int mainstone_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ return 0;
++}
++
++static int mainstone_resume(struct platform_device *pdev)
++{
++ return 0;
++}
++
++static int mainstone_probe(struct platform_device *pdev)
++{
++ return 0;
++}
++
++static int mainstone_remove(struct platform_device *pdev)
++{
++ return 0;
++}
++
++/*
++ * Machine audio functions.
++ *
++ * The machine now has 3 extra audio controls.
++ *
++ * Jack function: Sets function (device plugged into Jack) to nothing (Off)
++ * or Headphones.
++ *
++ * Mic function: Set the on board Mic to On or Off
++ * Spk function: Set the on board Spk to On or Off
++ *
++ * example: BT playback (of far end) and capture (of near end)
++ * Set Mic and Speaker to On, open BT alsa interface as above and set up
++ * internal audio paths.
++ */
++
++static int machine_jack_func = 0;
++static int machine_spk_func = 0;
++static int machine_mic_func = 0;
++
++static int machine_get_jack(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = machine_jack_func;
++ return 0;
++}
++
++static int machine_set_jack(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ machine_jack_func = ucontrol->value.integer.value[0];
++ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", machine_jack_func);
++ return 0;
++}
++
++static int machine_get_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = machine_spk_func;
++ return 0;
++}
++
++static int machine_set_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ machine_spk_func = ucontrol->value.integer.value[0];
++ snd_soc_dapm_set_endpoint(codec, "Spk", machine_spk_func);
++ return 0;
++}
++
++static int machine_get_mic(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = machine_spk_func;
++ return 0;
++}
++
++static int machine_set_mic(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ machine_spk_func = ucontrol->value.integer.value[0];
++ snd_soc_dapm_set_endpoint(codec, "Mic", machine_mic_func);
++ return 0;
++}
++
++/* turns on board speaker amp on/off */
++static int machine_amp_event(struct snd_soc_dapm_widget *w, int event)
++{
++#if 0
++ if (SND_SOC_DAPM_EVENT_ON(event))
++ /* on */
++ else
++ /* off */
++#endif
++ return 0;
++}
++
++/* machine dapm widgets */
++static const struct snd_soc_dapm_widget machine_dapm_widgets[] = {
++SND_SOC_DAPM_HP("Headphone Jack", NULL),
++SND_SOC_DAPM_SPK("Spk", machine_amp_event),
++SND_SOC_DAPM_MIC("Mic", NULL),
++};
++
++/* machine connections to the codec pins */
++static const char* audio_map[][3] = {
++
++ /* headphone connected to LOUT1, ROUT1 */
++ {"Headphone Jack", NULL, "LOUT"},
++ {"Headphone Jack", NULL, "ROUT"},
++
++ /* speaker connected to LOUT2, ROUT2 */
++ {"Spk", NULL, "ROUT2"},
++ {"Spk", NULL, "LOUT2"},
++
++ /* mic is connected to MIC1 (via Mic Bias) */
++ {"MIC1", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Mic"},
++
++ {NULL, NULL, NULL},
++};
++
++static const char* jack_function[] = {"Off", "Headphone"};
++static const char* spk_function[] = {"Off", "On"};
++static const char* mic_function[] = {"Off", "On"};
++static const struct soc_enum machine_ctl_enum[] = {
++ SOC_ENUM_SINGLE_EXT(2, jack_function),
++ SOC_ENUM_SINGLE_EXT(2, spk_function),
++ SOC_ENUM_SINGLE_EXT(2, mic_function),
++};
++
++static const struct snd_kcontrol_new wm8753_machine_controls[] = {
++ SOC_ENUM_EXT("Jack Function", machine_ctl_enum[0], machine_get_jack, machine_set_jack),
++ SOC_ENUM_EXT("Speaker Function", machine_ctl_enum[1], machine_get_spk, machine_set_spk),
++ SOC_ENUM_EXT("Mic Function", machine_ctl_enum[2], machine_get_mic, machine_set_mic),
++};
++
++static int mainstone_wm8753_init(struct snd_soc_codec *codec)
++{
++ int i, err;
++
++ /* not used on this machine - e.g. will never be powered up */
++ snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
++ snd_soc_dapm_set_endpoint(codec, "OUT4", 0);
++ snd_soc_dapm_set_endpoint(codec, "MONO2", 0);
++ snd_soc_dapm_set_endpoint(codec, "MONO1", 0);
++ snd_soc_dapm_set_endpoint(codec, "LINE1", 0);
++ snd_soc_dapm_set_endpoint(codec, "LINE2", 0);
++ snd_soc_dapm_set_endpoint(codec, "RXP", 0);
++ snd_soc_dapm_set_endpoint(codec, "RXN", 0);
++ snd_soc_dapm_set_endpoint(codec, "MIC2", 0);
++
++ /* Add machine specific controls */
++ for (i = 0; i < ARRAY_SIZE(wm8753_machine_controls); i++) {
++ if ((err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8753_machine_controls[i],codec, NULL))) < 0)
++ return err;
++ }
++
++ /* Add machine specific widgets */
++ for(i = 0; i < ARRAY_SIZE(machine_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &machine_dapm_widgets[i]);
++ }
++
++ /* Set up machine 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]);
++ }
++
++ snd_soc_dapm_sync_endpoints(codec);
++ return 0;
++}
++
++/* this configures the clocking between the WM8753 and the BT codec */
++unsigned int mainstone_config_sysclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++{
++ /* wm8753 has pll that generates mclk from 13MHz xtal */
++ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 13000000);
++}
++
++static struct snd_soc_dai_link mainstone_dai[] = {
++{ /* Hifi Playback - for similatious use with voice below */
++ .name = "WM8753",
++ .stream_name = "WM8753 HiFi",
++ .cpu_dai = &pxa_i2s_dai,
++ .codec_dai = &wm8753_dai[WM8753_DAI_HIFI],
++ .init = mainstone_wm8753_init,
++ .config_sysclk = mainstone_config_sysclk,
++},
++{ /* Voice via BT */
++ .name = "Bluetooth",
++ .stream_name = "Voice",
++ .cpu_dai = mainstone_bt_dai,
++ .codec_dai = &wm8753_dai[WM8753_DAI_VOICE],
++ .config_sysclk = mainstone_config_sysclk,
++},
++};
++
++static struct snd_soc_machine mainstone = {
++ .name = "Mainstone",
++ .probe = mainstone_probe,
++ .remove = mainstone_remove,
++ .suspend_pre = mainstone_suspend,
++ .resume_post = mainstone_resume,
++ .ops = &mainstone_ops,
++ .dai_link = mainstone_dai,
++ .num_links = ARRAY_SIZE(mainstone_dai),
++};
++
++static struct snd_soc_device mainstone_snd_wm8753_devdata = {
++ .machine = &mainstone,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm8753,
++};
++
++static struct platform_device *mainstone_snd_wm8753_device;
++
++static int __init mainstone_init(void)
++{
++ int ret;
++
++ mainstone_snd_wm8753_device = platform_device_alloc("soc-audio", -1);
++ if (!mainstone_snd_wm8753_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(mainstone_snd_wm8753_device, &mainstone_snd_wm8753_devdata);
++ mainstone_snd_wm8753_devdata.dev = &mainstone_snd_wm8753_device->dev;
++
++ if((ret = platform_device_add(mainstone_snd_wm8753_device)) != 0)
++ platform_device_put(mainstone_snd_wm8753_device);
++
++ return ret;
++}
++
++static void __exit mainstone_exit(void)
++{
++ platform_device_unregister(mainstone_snd_wm8753_device);
++}
++
++module_init(mainstone_init);
++module_exit(mainstone_exit);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("Mainstone Example Bluetooth PCM Interface");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm8731.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm8731.c
+@@ -0,0 +1,156 @@
++/*
++ * mainstone.c -- SoC audio for Mainstone
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * Mainstone audio amplifier code taken from arch/arm/mach-pxa/mainstone.c
++ * Copyright: MontaVista Software 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.
++ *
++ * Revision history
++ * 5th June 2006 Initial version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/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/arch/pxa-regs.h>
++#include <asm/arch/mainstone.h>
++#include <asm/arch/audio.h>
++
++#include "../codecs/wm8731.h"
++#include "pxa2xx-pcm.h"
++
++static struct snd_soc_machine mainstone;
++
++
++static const struct snd_soc_dapm_widget dapm_widgets[] = {
++ SND_SOC_DAPM_MIC("Int Mic", NULL),
++ SND_SOC_DAPM_SPK("Ext Spk", NULL),
++};
++
++static const char* intercon[][3] = {
++
++ /* speaker connected to LHPOUT */
++ {"Ext Spk", NULL, "LHPOUT"},
++
++ /* mic is connected to Mic Jack, with WM8731 Mic Bias */
++ {"MICIN", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Int Mic"},
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++/*
++ * Logic for a wm8731 as connected on a Endrelia ETI-B1 board.
++ */
++static int mainstone_wm8731_init(struct snd_soc_codec *codec)
++{
++ int i;
++
++
++ /* Add specific widgets */
++ for(i = 0; i < ARRAY_SIZE(dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &dapm_widgets[i]);
++ }
++
++ /* Set up specific audio path interconnects */
++ for(i = 0; intercon[i][0] != NULL; i++) {
++ snd_soc_dapm_connect_input(codec, intercon[i][0], intercon[i][1], intercon[i][2]);
++ }
++
++ /* not connected */
++ snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
++ snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
++
++ /* always connected */
++ snd_soc_dapm_set_endpoint(codec, "Int Mic", 1);
++ snd_soc_dapm_set_endpoint(codec, "Ext Spk", 1);
++
++ snd_soc_dapm_sync_endpoints(codec);
++
++ return 0;
++}
++
++unsigned int mainstone_config_sysclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++{
++ /* we have a 12.288MHz crystal */
++ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 12288000);
++}
++
++static struct snd_soc_dai_link mainstone_dai[] = {
++{
++ .name = "WM8731",
++ .stream_name = "WM8731 HiFi",
++ .cpu_dai = &pxa_i2s_dai,
++ .codec_dai = &wm8731_dai,
++ .init = mainstone_wm8731_init,
++ .config_sysclk = mainstone_config_sysclk,
++},
++};
++
++static struct snd_soc_machine mainstone = {
++ .name = "Mainstone",
++ .dai_link = mainstone_dai,
++ .num_links = ARRAY_SIZE(mainstone_dai),
++};
++
++static struct wm8731_setup_data corgi_wm8731_setup = {
++ .i2c_address = 0x1b,
++};
++
++static struct snd_soc_device mainstone_snd_devdata = {
++ .machine = &mainstone,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm8731,
++ .codec_data = &corgi_wm8731_setup,
++};
++
++static struct platform_device *mainstone_snd_device;
++
++static int __init mainstone_init(void)
++{
++ int ret;
++
++ mainstone_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!mainstone_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(mainstone_snd_device, &mainstone_snd_devdata);
++ mainstone_snd_devdata.dev = &mainstone_snd_device->dev;
++ ret = platform_device_add(mainstone_snd_device);
++
++ if (ret)
++ platform_device_put(mainstone_snd_device);
++
++ return ret;
++}
++
++static void __exit mainstone_exit(void)
++{
++ platform_device_unregister(mainstone_snd_device);
++}
++
++module_init(mainstone_init);
++module_exit(mainstone_exit);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("ALSA SoC WM8731 Mainstone");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm8753.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm8753.c
+@@ -0,0 +1,226 @@
++/*
++ * mainstone.c -- SoC audio for Mainstone
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * Mainstone audio amplifier code taken from arch/arm/mach-pxa/mainstone.c
++ * Copyright: MontaVista Software 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.
++ *
++ * Revision history
++ * 30th Oct 2005 Initial version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/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/arch/pxa-regs.h>
++#include <asm/arch/mainstone.h>
++#include <asm/arch/audio.h>
++
++#include "../codecs/wm8753.h"
++#include "pxa2xx-pcm.h"
++
++static struct snd_soc_machine mainstone;
++
++static int mainstone_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ if(rtd->cpu_dai->type == SND_SOC_DAI_PCM && rtd->cpu_dai->id == 1) {
++ /* enable USB on the go MUX so we can use SSPFRM2 */
++ MST_MSCWR2 |= MST_MSCWR2_USB_OTG_SEL;
++ MST_MSCWR2 &= ~MST_MSCWR2_USB_OTG_RST;
++ }
++ return 0;
++}
++
++static void mainstone_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ if(rtd->cpu_dai->type == SND_SOC_DAI_PCM && rtd->cpu_dai->id == 1) {
++ /* disable USB on the go MUX so we can use ttyS0 */
++ MST_MSCWR2 &= ~MST_MSCWR2_USB_OTG_SEL;
++ MST_MSCWR2 |= MST_MSCWR2_USB_OTG_RST;
++ }
++}
++
++static struct snd_soc_ops mainstone_ops = {
++ .startup = mainstone_startup,
++ .shutdown = mainstone_shutdown,
++};
++
++static long mst_audio_suspend_mask;
++
++static int mainstone_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ mst_audio_suspend_mask = MST_MSCWR2;
++ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static int mainstone_resume(struct platform_device *pdev)
++{
++ MST_MSCWR2 &= mst_audio_suspend_mask | ~MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static int mainstone_probe(struct platform_device *pdev)
++{
++ MST_MSCWR2 &= ~MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static int mainstone_remove(struct platform_device *pdev)
++{
++ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++/* example machine audio_mapnections */
++static const char* audio_map[][3] = {
++
++ /* mic is connected to mic1 - with bias */
++ {"MIC1", NULL, "Mic Bias"},
++ {"MIC1N", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Mic1 Jack"},
++ {"Mic Bias", NULL, "Mic1 Jack"},
++
++ {"ACIN", NULL, "ACOP"},
++ {NULL, NULL, NULL},
++};
++
++/* headphone detect support on my board */
++static const char * hp_pol[] = {"Headphone", "Speaker"};
++static const struct soc_enum wm8753_enum =
++ SOC_ENUM_SINGLE(WM8753_OUTCTL, 1, 2, hp_pol);
++
++static const struct snd_kcontrol_new wm8753_mainstone_controls[] = {
++ SOC_SINGLE("Headphone Detect Switch", WM8753_OUTCTL, 6, 1, 0),
++ SOC_ENUM("Headphone Detect Polarity", wm8753_enum),
++};
++
++/*
++ * This is an example machine initialisation for a wm8753 connected to a
++ * Mainstone II. It is missing logic to detect hp/mic insertions and logic
++ * to re-route the audio in such an event.
++ */
++static int mainstone_wm8753_init(struct snd_soc_codec *codec)
++{
++ int i, err;
++
++ /* set up mainstone codec pins */
++ snd_soc_dapm_set_endpoint(codec, "RXP", 0);
++ snd_soc_dapm_set_endpoint(codec, "RXN", 0);
++ snd_soc_dapm_set_endpoint(codec, "MIC2", 0);
++
++ /* add mainstone specific controls */
++ for (i = 0; i < ARRAY_SIZE(wm8753_mainstone_controls); i++) {
++ if ((err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8753_mainstone_controls[i],codec, NULL))) < 0)
++ return err;
++ }
++
++ /* set up mainstone 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]);
++ }
++
++ snd_soc_dapm_sync_endpoints(codec);
++ return 0;
++}
++
++unsigned int mainstone_config_sysclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++{
++ /* wm8753 has pll that generates mclk from 13MHz xtal */
++ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 13000000);
++}
++
++static struct snd_soc_dai_link mainstone_dai[] = {
++{ /* Hifi Playback - for similatious use with voice below */
++ .name = "WM8753",
++ .stream_name = "WM8753 HiFi",
++ .cpu_dai = &pxa_i2s_dai,
++ .codec_dai = &wm8753_dai[WM8753_DAI_HIFI],
++ .init = mainstone_wm8753_init,
++ .config_sysclk = mainstone_config_sysclk,
++},
++{ /* Voice via BT */
++ .name = "Bluetooth",
++ .stream_name = "Voice",
++ .cpu_dai = &pxa_ssp_dai[1],
++ .codec_dai = &wm8753_dai[WM8753_DAI_VOICE],
++ .config_sysclk = mainstone_config_sysclk,
++},
++};
++
++static struct snd_soc_machine mainstone = {
++ .name = "Mainstone",
++ .probe = mainstone_probe,
++ .remove = mainstone_remove,
++ .suspend_pre = mainstone_suspend,
++ .resume_post = mainstone_resume,
++ .ops = &mainstone_ops,
++ .dai_link = mainstone_dai,
++ .num_links = ARRAY_SIZE(mainstone_dai),
++};
++
++static struct wm8753_setup_data mainstone_wm8753_setup = {
++ .i2c_address = 0x1a,
++};
++
++static struct snd_soc_device mainstone_snd_devdata = {
++ .machine = &mainstone,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm8753,
++ .codec_data = &mainstone_wm8753_setup,
++};
++
++static struct platform_device *mainstone_snd_device;
++
++static int __init mainstone_init(void)
++{
++ int ret;
++
++ mainstone_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!mainstone_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(mainstone_snd_device, &mainstone_snd_devdata);
++ mainstone_snd_devdata.dev = &mainstone_snd_device->dev;
++ ret = platform_device_add(mainstone_snd_device);
++
++ if (ret)
++ platform_device_put(mainstone_snd_device);
++
++ return ret;
++}
++
++static void __exit mainstone_exit(void)
++{
++ platform_device_unregister(mainstone_snd_device);
++}
++
++module_init(mainstone_init);
++module_exit(mainstone_exit);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("ALSA SoC WM8753 Mainstone");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm8974.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm8974.c
+@@ -0,0 +1,112 @@
++/*
++ * mainstone.c -- SoC audio for Mainstone
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * Mainstone audio amplifier code taken from arch/arm/mach-pxa/mainstone.c
++ * Copyright: MontaVista Software 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.
++ *
++ * Revision history
++ * 30th Oct 2005 Initial version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/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/arch/pxa-regs.h>
++#include <asm/arch/mainstone.h>
++#include <asm/arch/audio.h>
++
++#include "../codecs/wm8974.h"
++#include "pxa2xx-pcm.h"
++
++static struct snd_soc_machine mainstone;
++
++static int mainstone_wm8974_init(struct snd_soc_codec *codec)
++{
++ return 0;
++}
++
++unsigned int mainstone_config_sysclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++{
++ /* we have a PLL */
++ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 12288000);
++
++}
++
++static struct snd_soc_dai_link mainstone_dai[] = {
++{
++ .name = "WM8974",
++ .stream_name = "WM8974 HiFi",
++ .cpu_dai = &pxa_i2s_dai,
++ .codec_dai = &wm8974_dai,
++ .init = mainstone_wm8974_init,
++ .config_sysclk = mainstone_config_sysclk,
++},
++};
++
++static struct snd_soc_machine mainstone = {
++ .name = "Mainstone",
++ .dai_link = mainstone_dai,
++ .num_links = ARRAY_SIZE(mainstone_dai),
++};
++
++static struct wm8974_setup_data mainstone_wm8974_setup = {
++ .i2c_address = 0x1a,
++};
++
++static struct snd_soc_device mainstone_snd_devdata = {
++ .machine = &mainstone,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm8974,
++ .codec_data = &mainstone_wm8974_setup,
++};
++
++static struct platform_device *mainstone_snd_device;
++
++static int __init mainstone_init(void)
++{
++ int ret;
++
++ mainstone_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!mainstone_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(mainstone_snd_device, &mainstone_snd_devdata);
++ mainstone_snd_devdata.dev = &mainstone_snd_device->dev;
++ ret = platform_device_add(mainstone_snd_device);
++
++ if (ret)
++ platform_device_put(mainstone_snd_device);
++
++ return ret;
++}
++
++static void __exit mainstone_exit(void)
++{
++ platform_device_unregister(mainstone_snd_device);
++}
++
++module_init(mainstone_init);
++module_exit(mainstone_exit);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("ALSA SoC Mainstone");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm9712.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm9712.c
+@@ -0,0 +1,171 @@
++/*
++ * mainstone.c -- SoC audio for Mainstone
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * Mainstone audio amplifier code taken from arch/arm/mach-pxa/mainstone.c
++ * Copyright: MontaVista Software 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.
++ *
++ * Revision history
++ * 29th Jan 2006 Initial version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/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/arch/pxa-regs.h>
++#include <asm/arch/mainstone.h>
++#include <asm/arch/audio.h>
++
++#include "../codecs/wm9712.h"
++#include "pxa2xx-pcm.h"
++
++static struct snd_soc_machine mainstone;
++static long mst_audio_suspend_mask;
++
++static int mainstone_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ mst_audio_suspend_mask = MST_MSCWR2;
++ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static int mainstone_resume(struct platform_device *pdev)
++{
++ MST_MSCWR2 &= mst_audio_suspend_mask | ~MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static int mainstone_probe(struct platform_device *pdev)
++{
++ MST_MSCWR2 &= ~MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static int mainstone_remove(struct platform_device *pdev)
++{
++ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++/* mainstone machine dapm widgets */
++static const struct snd_soc_dapm_widget mainstone_dapm_widgets[] = {
++ SND_SOC_DAPM_MIC("Mic (Internal)", NULL),
++};
++
++/* example machine interconnections */
++static const char* intercon[][3] = {
++
++ /* mic is connected to mic1 - with bias */
++ {"MIC1", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Mic (Internal)"},
++
++ {NULL, NULL, NULL},
++};
++
++/*
++ * This is an example machine initialisation for a wm8753 connected to a
++ * Mainstone II. It is missing logic to detect hp/mic insertions and logic
++ * to re-route the audio in such an event.
++ */
++static int mainstone_wm9712_init(struct snd_soc_codec *codec)
++{
++ int i;
++
++ /* set up mainstone codec pins */
++ snd_soc_dapm_set_endpoint(codec, "RXP", 0);
++ snd_soc_dapm_set_endpoint(codec, "RXN", 0);
++ //snd_soc_dapm_set_endpoint(codec, "MIC2", 0);
++
++ /* Add mainstone specific widgets */
++ for(i = 0; i < ARRAY_SIZE(mainstone_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &mainstone_dapm_widgets[i]);
++ }
++
++ /* set up mainstone specific audio path interconnects */
++ for(i = 0; intercon[i][0] != NULL; i++) {
++ snd_soc_dapm_connect_input(codec, intercon[i][0], intercon[i][1], intercon[i][2]);
++ }
++
++ snd_soc_dapm_sync_endpoints(codec);
++ return 0;
++}
++
++static struct snd_soc_dai_link mainstone_dai[] = {
++{
++ .name = "AC97",
++ .stream_name = "AC97 HiFi",
++ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
++ .codec_dai = &wm9712_dai[WM9712_DAI_AC97_HIFI],
++ .init = mainstone_wm9712_init,
++},
++{
++ .name = "AC97 Aux",
++ .stream_name = "AC97 Aux",
++ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
++ .codec_dai = &wm9712_dai[WM9712_DAI_AC97_AUX],
++},
++};
++
++static struct snd_soc_machine mainstone = {
++ .name = "Mainstone",
++ .probe = mainstone_probe,
++ .remove = mainstone_remove,
++ .suspend_pre = mainstone_suspend,
++ .resume_post = mainstone_resume,
++ .dai_link = mainstone_dai,
++ .num_links = ARRAY_SIZE(mainstone_dai),
++};
++
++static struct snd_soc_device mainstone_snd_ac97_devdata = {
++ .machine = &mainstone,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm9712,
++};
++
++static struct platform_device *mainstone_snd_ac97_device;
++
++static int __init mainstone_init(void)
++{
++ int ret;
++
++ mainstone_snd_ac97_device = platform_device_alloc("soc-audio", -1);
++ if (!mainstone_snd_ac97_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(mainstone_snd_ac97_device, &mainstone_snd_ac97_devdata);
++ mainstone_snd_ac97_devdata.dev = &mainstone_snd_ac97_device->dev;
++
++ if((ret = platform_device_add(mainstone_snd_ac97_device)) != 0)
++ platform_device_put(mainstone_snd_ac97_device);
++
++ return ret;
++}
++
++static void __exit mainstone_exit(void)
++{
++ platform_device_unregister(mainstone_snd_ac97_device);
++}
++
++module_init(mainstone_init);
++module_exit(mainstone_exit);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("ALSA SoC WM9712 Mainstone");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm9713.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm9713.c
+@@ -0,0 +1,263 @@
++/*
++ * mainstone.c -- SoC audio for Mainstone
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * Mainstone audio amplifier code taken from arch/arm/mach-pxa/mainstone.c
++ * Copyright: MontaVista Software 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.
++ *
++ * Revision history
++ * 29th Jan 2006 Initial version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/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/arch/pxa-regs.h>
++#include <asm/arch/mainstone.h>
++#include <asm/arch/audio.h>
++
++#include "../codecs/wm9713.h"
++#include "pxa2xx-pcm.h"
++
++static struct snd_soc_machine mainstone;
++
++static int mainstone_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ if(rtd->cpu_dai->type == SND_SOC_DAI_PCM && rtd->cpu_dai->id == 1) {
++ /* enable USB on the go MUX so we can use SSPFRM2 */
++ MST_MSCWR2 |= MST_MSCWR2_USB_OTG_SEL;
++ MST_MSCWR2 &= ~MST_MSCWR2_USB_OTG_RST;
++ }
++ return 0;
++}
++
++static void mainstone_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ if(rtd->cpu_dai->type == SND_SOC_DAI_PCM && rtd->cpu_dai->id == 1) {
++ /* disable USB on the go MUX so we can use ttyS0 */
++ MST_MSCWR2 &= ~MST_MSCWR2_USB_OTG_SEL;
++ MST_MSCWR2 |= MST_MSCWR2_USB_OTG_RST;
++ }
++}
++
++static struct snd_soc_ops mainstone_ops = {
++ .startup = mainstone_startup,
++ .shutdown = mainstone_shutdown,
++};
++
++static int test = 0;
++static int get_test(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = test;
++ return 0;
++}
++
++static int set_test(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ test = ucontrol->value.integer.value[0];
++ if(test) {
++
++ } else {
++
++ }
++ return 0;
++}
++
++static long mst_audio_suspend_mask;
++
++static int mainstone_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ mst_audio_suspend_mask = MST_MSCWR2;
++ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static int mainstone_resume(struct platform_device *pdev)
++{
++ MST_MSCWR2 &= mst_audio_suspend_mask | ~MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static int mainstone_probe(struct platform_device *pdev)
++{
++ MST_MSCWR2 &= ~MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static int mainstone_remove(struct platform_device *pdev)
++{
++ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
++ return 0;
++}
++
++static const char* test_function[] = {"Off", "On"};
++static const struct soc_enum mainstone_enum[] = {
++ SOC_ENUM_SINGLE_EXT(2, test_function),
++};
++
++static const struct snd_kcontrol_new mainstone_controls[] = {
++ SOC_ENUM_EXT("ATest Function", mainstone_enum[0], get_test, set_test),
++};
++
++/* mainstone machine dapm widgets */
++static const struct snd_soc_dapm_widget mainstone_dapm_widgets[] = {
++ SND_SOC_DAPM_MIC("Mic 1", NULL),
++ SND_SOC_DAPM_MIC("Mic 2", NULL),
++ SND_SOC_DAPM_MIC("Mic 3", NULL),
++};
++
++/* example machine audio_mapnections */
++static const char* audio_map[][3] = {
++
++ /* mic is connected to mic1 - with bias */
++ {"MIC1", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Mic 1"},
++ /* mic is connected to mic2A - with bias */
++ {"MIC2A", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Mic 2"},
++ /* mic is connected to mic2B - with bias */
++ {"MIC2B", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Mic 3"},
++
++ {NULL, NULL, NULL},
++};
++
++/*
++ * This is an example machine initialisation for a wm9713 connected to a
++ * Mainstone II. It is missing logic to detect hp/mic insertions and logic
++ * to re-route the audio in such an event.
++ */
++static int mainstone_wm9713_init(struct snd_soc_codec *codec)
++{
++ int i, err;
++
++ /* set up mainstone codec pins */
++ snd_soc_dapm_set_endpoint(codec, "RXP", 0);
++ snd_soc_dapm_set_endpoint(codec, "RXN", 0);
++ //snd_soc_dapm_set_endpoint(codec, "MIC2", 0);
++
++ /* Add test specific controls */
++ for (i = 0; i < ARRAY_SIZE(mainstone_controls); i++) {
++ if ((err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&mainstone_controls[i],codec, NULL))) < 0)
++ return err;
++ }
++
++ /* Add mainstone specific widgets */
++ for(i = 0; i < ARRAY_SIZE(mainstone_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &mainstone_dapm_widgets[i]);
++ }
++
++ /* set up mainstone 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]);
++ }
++
++ snd_soc_dapm_sync_endpoints(codec);
++ return 0;
++}
++
++/* configure the system audio clock */
++unsigned int mainstone_config_sysclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++{
++ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 24576000);
++}
++
++static struct snd_soc_dai_link mainstone_dai[] = {
++{
++ .name = "AC97",
++ .stream_name = "AC97 HiFi",
++ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
++ .codec_dai = &wm9713_dai[WM9713_DAI_AC97_HIFI],
++ .init = mainstone_wm9713_init,
++ .config_sysclk = mainstone_config_sysclk,
++},
++{
++ .name = "AC97 Aux",
++ .stream_name = "AC97 Aux",
++ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
++ .codec_dai = &wm9713_dai[WM9713_DAI_AC97_AUX],
++ .config_sysclk = mainstone_config_sysclk,
++},
++{
++ .name = "WM9713",
++ .stream_name = "WM9713 Voice",
++ .cpu_dai = &pxa_ssp_dai[PXA2XX_DAI_SSP2],
++ .codec_dai = &wm9713_dai[WM9713_DAI_PCM_VOICE],
++ .config_sysclk = mainstone_config_sysclk,
++},
++};
++
++static struct snd_soc_machine mainstone = {
++ .name = "Mainstone",
++ .probe = mainstone_probe,
++ .remove = mainstone_remove,
++ .suspend_pre = mainstone_suspend,
++ .resume_post = mainstone_resume,
++ .ops = &mainstone_ops,
++ .dai_link = mainstone_dai,
++ .num_links = ARRAY_SIZE(mainstone_dai),
++};
++
++static struct snd_soc_device mainstone_snd_ac97_devdata = {
++ .machine = &mainstone,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm9713,
++};
++
++static struct platform_device *mainstone_snd_ac97_device;
++
++static int __init mainstone_init(void)
++{
++ int ret;
++
++ mainstone_snd_ac97_device = platform_device_alloc("soc-audio", -1);
++ if (!mainstone_snd_ac97_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(mainstone_snd_ac97_device, &mainstone_snd_ac97_devdata);
++ mainstone_snd_ac97_devdata.dev = &mainstone_snd_ac97_device->dev;
++
++ if((ret = platform_device_add(mainstone_snd_ac97_device)) != 0)
++ platform_device_put(mainstone_snd_ac97_device);
++
++ return ret;
++}
++
++static void __exit mainstone_exit(void)
++{
++ platform_device_unregister(mainstone_snd_ac97_device);
++}
++
++module_init(mainstone_init);
++module_exit(mainstone_exit);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("ALSA SoC WM9713 Mainstone");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/poodle.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/poodle.c
+@@ -0,0 +1,329 @@
++/*
++ * poodle.c -- SoC audio for Poodle
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Authors: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
++ * Richard Purdie <richard@openedhand.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.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/timer.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.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/locomo.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/poodle.h>
++#include <asm/arch/audio.h>
++
++#include "../codecs/wm8731.h"
++#include "pxa2xx-pcm.h"
++
++#define POODLE_HP 1
++#define POODLE_HP_OFF 0
++#define POODLE_SPK_ON 1
++#define POODLE_SPK_OFF 0
++
++ /* audio clock in Hz - rounded from 12.235MHz */
++#define POODLE_AUDIO_CLOCK 12288000
++
++static int poodle_jack_func;
++static int poodle_spk_func;
++
++static void poodle_ext_control(struct snd_soc_codec *codec)
++{
++ int spk = 0;
++
++ /* set up jack connection */
++ if (poodle_jack_func == POODLE_HP) {
++ /* set = unmute headphone */
++ locomo_gpio_write(&poodle_locomo_device.dev,
++ POODLE_LOCOMO_GPIO_MUTE_L, 1);
++ locomo_gpio_write(&poodle_locomo_device.dev,
++ POODLE_LOCOMO_GPIO_MUTE_R, 1);
++ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
++ } else {
++ locomo_gpio_write(&poodle_locomo_device.dev,
++ POODLE_LOCOMO_GPIO_MUTE_L, 0);
++ locomo_gpio_write(&poodle_locomo_device.dev,
++ POODLE_LOCOMO_GPIO_MUTE_R, 0);
++ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
++ }
++
++ if (poodle_spk_func == POODLE_SPK_ON)
++ spk = 1;
++
++ /* set the enpoints to their new connetion states */
++ snd_soc_dapm_set_endpoint(codec, "Ext Spk", spk);
++
++ /* signal a DAPM event */
++ snd_soc_dapm_sync_endpoints(codec);
++}
++
++static int poodle_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->socdev->codec;
++
++ /* check the jack status at stream startup */
++ poodle_ext_control(codec);
++ return 0;
++}
++
++/* we need to unmute the HP at shutdown as the mute burns power on poodle */
++static int poodle_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->socdev->codec;
++
++ /* set = unmute headphone */
++ locomo_gpio_write(&poodle_locomo_device.dev,
++ POODLE_LOCOMO_GPIO_MUTE_L, 1);
++ locomo_gpio_write(&poodle_locomo_device.dev,
++ POODLE_LOCOMO_GPIO_MUTE_R, 1);
++ return 0;
++}
++
++static struct snd_soc_ops poodle_ops = {
++ .startup = poodle_startup,
++ .shutdown = poodle_shutdown,
++};
++
++static int poodle_get_jack(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = poodle_jack_func;
++ return 0;
++}
++
++static int poodle_set_jack(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ if (poodle_jack_func == ucontrol->value.integer.value[0])
++ return 0;
++
++ poodle_jack_func = ucontrol->value.integer.value[0];
++ poodle_ext_control(codec);
++ return 1;
++}
++
++static int poodle_get_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = poodle_spk_func;
++ return 0;
++}
++
++static int poodle_set_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ if (poodle_spk_func == ucontrol->value.integer.value[0])
++ return 0;
++
++ poodle_spk_func = ucontrol->value.integer.value[0];
++ poodle_ext_control(codec);
++ return 1;
++}
++
++static int poodle_amp_event(struct snd_soc_dapm_widget *w, int event)
++{
++ if (SND_SOC_DAPM_EVENT_ON(event))
++ locomo_gpio_write(&poodle_locomo_device.dev,
++ POODLE_LOCOMO_GPIO_AMP_ON, 0);
++ else
++ locomo_gpio_write(&poodle_locomo_device.dev,
++ POODLE_LOCOMO_GPIO_AMP_ON, 1);
++
++ return 0;
++}
++
++/* poodle machine dapm widgets */
++static const struct snd_soc_dapm_widget wm8731_dapm_widgets[] = {
++SND_SOC_DAPM_HP("Headphone Jack", NULL),
++SND_SOC_DAPM_SPK("Ext Spk", poodle_amp_event),
++};
++
++/* Corgi machine audio_mapnections to the codec pins */
++static const char *audio_map[][3] = {
++
++ /* headphone connected to LHPOUT1, RHPOUT1 */
++ {"Headphone Jack", NULL, "LHPOUT"},
++ {"Headphone Jack", NULL, "RHPOUT"},
++
++ /* speaker connected to LOUT, ROUT */
++ {"Ext Spk", NULL, "ROUT"},
++ {"Ext Spk", NULL, "LOUT"},
++
++ {NULL, NULL, NULL},
++};
++
++static const char *jack_function[] = {"Off", "Headphone"};
++static const char *spk_function[] = {"Off", "On"};
++static const struct soc_enum poodle_enum[] = {
++ SOC_ENUM_SINGLE_EXT(2, jack_function),
++ SOC_ENUM_SINGLE_EXT(2, spk_function),
++};
++
++static const snd_kcontrol_new_t wm8731_poodle_controls[] = {
++ SOC_ENUM_EXT("Jack Function", poodle_enum[0], poodle_get_jack,
++ poodle_set_jack),
++ SOC_ENUM_EXT("Speaker Function", poodle_enum[1], poodle_get_spk,
++ poodle_set_spk),
++};
++
++/*
++ * Logic for a wm8731 as connected on a Sharp SL-C7x0 Device
++ */
++static int poodle_wm8731_init(struct snd_soc_codec *codec)
++{
++ int i, err;
++
++ snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
++ snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
++ snd_soc_dapm_set_endpoint(codec, "MICIN", 1);
++
++ /* Add poodle specific controls */
++ for (i = 0; i < ARRAY_SIZE(wm8731_poodle_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8731_poodle_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++
++ /* Add poodle specific widgets */
++ for (i = 0; i < ARRAY_SIZE(wm8731_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm8731_dapm_widgets[i]);
++ }
++
++ /* Set up poodle specific audio path audio_map */
++ 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]);
++ }
++
++ snd_soc_dapm_sync_endpoints(codec);
++ return 0;
++}
++
++static unsigned int poodle_config_sysclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++{
++ if (info->bclk_master & SND_SOC_DAIFMT_CBS_CFS) {
++ /* pxa2xx is i2s master */
++ switch (info->rate) {
++ case 44100:
++ case 88200:
++ /* configure codec digital filters for 44.1, 88.2 */
++ rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
++ 11289600);
++ break;
++ default:
++ /* configure codec digital filters for all other rates */
++ rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
++ POODLE_AUDIO_CLOCK);
++ break;
++ }
++ return rtd->cpu_dai->config_sysclk(rtd->cpu_dai, info,
++ POODLE_AUDIO_CLOCK);
++ } else {
++ /* codec is i2s master -
++ * only configure codec DAI clock and filters */
++ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
++ POODLE_AUDIO_CLOCK);
++ }
++}
++
++/* poodle digital audio interface glue - connects codec <--> CPU */
++static struct snd_soc_dai_link poodle_dai = {
++ .name = "WM8731",
++ .stream_name = "WM8731",
++ .cpu_dai = &pxa_i2s_dai,
++ .codec_dai = &wm8731_dai,
++ .init = poodle_wm8731_init,
++ .config_sysclk = poodle_config_sysclk,
++};
++
++/* poodle audio machine driver */
++static struct snd_soc_machine snd_soc_machine_poodle = {
++ .name = "Poodle",
++ .dai_link = &poodle_dai,
++ .num_links = 1,
++ .ops = &poodle_ops,
++};
++
++/* poodle audio private data */
++static struct wm8731_setup_data poodle_wm8731_setup = {
++ .i2c_address = 0x1b,
++};
++
++/* poodle audio subsystem */
++static struct snd_soc_device poodle_snd_devdata = {
++ .machine = &snd_soc_machine_poodle,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm8731,
++ .codec_data = &poodle_wm8731_setup,
++};
++
++static struct platform_device *poodle_snd_device;
++
++static int __init poodle_init(void)
++{
++ int ret;
++
++ if (!machine_is_poodle())
++ return -ENODEV;
++
++ locomo_gpio_set_dir(&poodle_locomo_device.dev,
++ POODLE_LOCOMO_GPIO_AMP_ON, 0);
++ /* should we mute HP at startup - burning power ?*/
++ locomo_gpio_set_dir(&poodle_locomo_device.dev,
++ POODLE_LOCOMO_GPIO_MUTE_L, 0);
++ locomo_gpio_set_dir(&poodle_locomo_device.dev,
++ POODLE_LOCOMO_GPIO_MUTE_R, 0);
++
++ poodle_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!poodle_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(poodle_snd_device, &poodle_snd_devdata);
++ poodle_snd_devdata.dev = &poodle_snd_device->dev;
++ ret = platform_device_add(poodle_snd_device);
++
++ if (ret)
++ platform_device_put(poodle_snd_device);
++
++ return ret;
++}
++
++static void __exit poodle_exit(void)
++{
++ platform_device_unregister(poodle_snd_device);
++}
++
++module_init(poodle_init);
++module_exit(poodle_exit);
++
++/* Module information */
++MODULE_AUTHOR("Richard Purdie");
++MODULE_DESCRIPTION("ALSA SoC Poodle");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-ac97.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-ac97.c
+@@ -0,0 +1,437 @@
++/*
++ * linux/sound/pxa2xx-ac97.c -- AC97 support for the Intel PXA2xx chip.
++ *
++ * Author: Nicolas Pitre
++ * Created: Dec 02, 2004
++ * Copyright: MontaVista Software 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/init.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/interrupt.h>
++#include <linux/wait.h>
++#include <linux/delay.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/ac97_codec.h>
++#include <sound/initval.h>
++#include <sound/soc.h>
++
++#include <asm/irq.h>
++#include <linux/mutex.h>
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/audio.h>
++
++#include "pxa2xx-pcm.h"
++
++static DEFINE_MUTEX(car_mutex);
++static DECLARE_WAIT_QUEUE_HEAD(gsr_wq);
++static volatile long gsr_bits;
++
++#define AC97_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define AC97_RATES \
++ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
++ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000)
++
++/* may need to expand this */
++static struct snd_soc_dai_mode pxa2xx_ac97_modes[] = {
++ {
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = AC97_RATES,
++ .pcmdir = AC97_DIR,
++ },
++};
++
++/*
++ * Beware PXA27x bugs:
++ *
++ * o Slot 12 read from modem space will hang controller.
++ * o CDONE, SDONE interrupt fails after any slot 12 IO.
++ *
++ * We therefore have an hybrid approach for waiting on SDONE (interrupt or
++ * 1 jiffy timeout if interrupt never comes).
++ */
++
++static unsigned short pxa2xx_ac97_read(struct snd_ac97 *ac97,
++ unsigned short reg)
++{
++ unsigned short val = -1;
++ volatile u32 *reg_addr;
++
++ mutex_lock(&car_mutex);
++
++ /* set up primary or secondary codec/modem space */
++#ifdef CONFIG_PXA27x
++ reg_addr = ac97->num ? &SAC_REG_BASE : &PAC_REG_BASE;
++#else
++ if (reg == AC97_GPIO_STATUS)
++ reg_addr = ac97->num ? &SMC_REG_BASE : &PMC_REG_BASE;
++ else
++ reg_addr = ac97->num ? &SAC_REG_BASE : &PAC_REG_BASE;
++#endif
++ reg_addr += (reg >> 1);
++
++#ifndef CONFIG_PXA27x
++ if (reg == AC97_GPIO_STATUS) {
++ /* read from controller cache */
++ val = *reg_addr;
++ goto out;
++ }
++#endif
++
++ /* start read access across the ac97 link */
++ GSR = GSR_CDONE | GSR_SDONE;
++ gsr_bits = 0;
++ val = *reg_addr;
++
++ wait_event_timeout(gsr_wq, (GSR | gsr_bits) & GSR_SDONE, 1);
++ if (!((GSR | gsr_bits) & GSR_SDONE)) {
++ printk(KERN_ERR "%s: read error (ac97_reg=%x GSR=%#lx)\n",
++ __FUNCTION__, reg, GSR | gsr_bits);
++ val = -1;
++ goto out;
++ }
++
++ /* valid data now */
++ GSR = GSR_CDONE | GSR_SDONE;
++ gsr_bits = 0;
++ val = *reg_addr;
++ /* but we've just started another cycle... */
++ wait_event_timeout(gsr_wq, (GSR | gsr_bits) & GSR_SDONE, 1);
++
++out: mutex_unlock(&car_mutex);
++ return val;
++}
++
++static void pxa2xx_ac97_write(struct snd_ac97 *ac97, unsigned short reg,
++ unsigned short val)
++{
++ volatile u32 *reg_addr;
++
++ mutex_lock(&car_mutex);
++
++ /* set up primary or secondary codec/modem space */
++#ifdef CONFIG_PXA27x
++ reg_addr = ac97->num ? &SAC_REG_BASE : &PAC_REG_BASE;
++#else
++ if (reg == AC97_GPIO_STATUS)
++ reg_addr = ac97->num ? &SMC_REG_BASE : &PMC_REG_BASE;
++ else
++ reg_addr = ac97->num ? &SAC_REG_BASE : &PAC_REG_BASE;
++#endif
++ reg_addr += (reg >> 1);
++
++ GSR = GSR_CDONE | GSR_SDONE;
++ gsr_bits = 0;
++ *reg_addr = val;
++ wait_event_timeout(gsr_wq, (GSR | gsr_bits) & GSR_CDONE, 1);
++ if (!((GSR | gsr_bits) & GSR_CDONE))
++ printk(KERN_ERR "%s: write error (ac97_reg=%x GSR=%#lx)\n",
++ __FUNCTION__, reg, GSR | gsr_bits);
++
++ mutex_unlock(&car_mutex);
++}
++
++static void pxa2xx_ac97_warm_reset(struct snd_ac97 *ac97)
++{
++ gsr_bits = 0;
++
++#ifdef CONFIG_PXA27x
++ /* warm reset broken on Bulverde,
++ so manually keep AC97 reset high */
++ pxa_gpio_mode(113 | GPIO_OUT | GPIO_DFLT_HIGH);
++ udelay(10);
++ GCR |= GCR_WARM_RST;
++ pxa_gpio_mode(113 | GPIO_ALT_FN_2_OUT);
++ udelay(500);
++#else
++ GCR |= GCR_WARM_RST | GCR_PRIRDY_IEN | GCR_SECRDY_IEN;
++ wait_event_timeout(gsr_wq, gsr_bits & (GSR_PCR | GSR_SCR), 1);
++#endif
++
++ if (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)))
++ printk(KERN_INFO "%s: warm reset timeout (GSR=%#lx)\n",
++ __FUNCTION__, gsr_bits);
++
++ GCR &= ~(GCR_PRIRDY_IEN|GCR_SECRDY_IEN);
++ GCR |= GCR_SDONE_IE|GCR_CDONE_IE;
++}
++
++static void pxa2xx_ac97_cold_reset(struct snd_ac97 *ac97)
++{
++ GCR &= GCR_COLD_RST; /* clear everything but nCRST */
++ GCR &= ~GCR_COLD_RST; /* then assert nCRST */
++
++ gsr_bits = 0;
++#ifdef CONFIG_PXA27x
++ /* PXA27x Developers Manual section 13.5.2.2.1 */
++ pxa_set_cken(1 << 31, 1);
++ udelay(5);
++ pxa_set_cken(1 << 31, 0);
++ GCR = GCR_COLD_RST;
++ udelay(50);
++#else
++ GCR = GCR_COLD_RST;
++ GCR |= GCR_CDONE_IE|GCR_SDONE_IE;
++ wait_event_timeout(gsr_wq, gsr_bits & (GSR_PCR | GSR_SCR), 1);
++#endif
++
++ if (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)))
++ printk(KERN_INFO "%s: cold reset timeout (GSR=%#lx)\n",
++ __FUNCTION__, gsr_bits);
++
++ GCR &= ~(GCR_PRIRDY_IEN|GCR_SECRDY_IEN);
++ GCR |= GCR_SDONE_IE|GCR_CDONE_IE;
++}
++
++static irqreturn_t pxa2xx_ac97_irq(int irq, void *dev_id)
++{
++ long status;
++
++ status = GSR;
++ if (status) {
++ GSR = status;
++ gsr_bits |= status;
++ wake_up(&gsr_wq);
++
++#ifdef CONFIG_PXA27x
++ /* Although we don't use those we still need to clear them
++ since they tend to spuriously trigger when MMC is used
++ (hardware bug? go figure)... */
++ MISR = MISR_EOC;
++ PISR = PISR_EOC;
++ MCSR = MCSR_EOC;
++#endif
++
++ return IRQ_HANDLED;
++ }
++
++ return IRQ_NONE;
++}
++
++struct snd_ac97_bus_ops soc_ac97_ops = {
++ .read = pxa2xx_ac97_read,
++ .write = pxa2xx_ac97_write,
++ .warm_reset = pxa2xx_ac97_warm_reset,
++ .reset = pxa2xx_ac97_cold_reset,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_stereo_out = {
++ .name = "AC97 PCM Stereo out",
++ .dev_addr = __PREG(PCDR),
++ .drcmr = &DRCMRTXPCDR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST32 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_stereo_in = {
++ .name = "AC97 PCM Stereo in",
++ .dev_addr = __PREG(PCDR),
++ .drcmr = &DRCMRRXPCDR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST32 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_aux_mono_out = {
++ .name = "AC97 Aux PCM (Slot 5) Mono out",
++ .dev_addr = __PREG(MODR),
++ .drcmr = &DRCMRTXMODR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_aux_mono_in = {
++ .name = "AC97 Aux PCM (Slot 5) Mono in",
++ .dev_addr = __PREG(MODR),
++ .drcmr = &DRCMRRXMODR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_mic_mono_in = {
++ .name = "AC97 Mic PCM (Slot 6) Mono in",
++ .dev_addr = __PREG(MCDR),
++ .drcmr = &DRCMRRXMCDR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++#ifdef CONFIG_PM
++static int pxa2xx_ac97_suspend(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ GCR |= GCR_ACLINK_OFF;
++ pxa_set_cken(CKEN2_AC97, 0);
++ return 0;
++}
++
++static int pxa2xx_ac97_resume(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ pxa_gpio_mode(GPIO31_SYNC_AC97_MD);
++ pxa_gpio_mode(GPIO30_SDATA_OUT_AC97_MD);
++ pxa_gpio_mode(GPIO28_BITCLK_AC97_MD);
++ pxa_gpio_mode(GPIO29_SDATA_IN_AC97_MD);
++#ifdef CONFIG_PXA27x
++ /* Use GPIO 113 as AC97 Reset on Bulverde */
++ pxa_gpio_mode(113 | GPIO_ALT_FN_2_OUT);
++#endif
++ pxa_set_cken(CKEN2_AC97, 1);
++ return 0;
++}
++
++#else
++#define pxa2xx_ac97_suspend NULL
++#define pxa2xx_ac97_resume NULL
++#endif
++
++static int pxa2xx_ac97_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ ret = request_irq(IRQ_AC97, pxa2xx_ac97_irq, IRQF_DISABLED, "AC97", NULL);
++ if (ret < 0)
++ goto err;
++
++ pxa_gpio_mode(GPIO31_SYNC_AC97_MD);
++ pxa_gpio_mode(GPIO30_SDATA_OUT_AC97_MD);
++ pxa_gpio_mode(GPIO28_BITCLK_AC97_MD);
++ pxa_gpio_mode(GPIO29_SDATA_IN_AC97_MD);
++#ifdef CONFIG_PXA27x
++ /* Use GPIO 113 as AC97 Reset on Bulverde */
++ pxa_gpio_mode(113 | GPIO_ALT_FN_2_OUT);
++#endif
++ pxa_set_cken(CKEN2_AC97, 1);
++ return 0;
++
++ err:
++ if (CKEN & CKEN2_AC97) {
++ GCR |= GCR_ACLINK_OFF;
++ free_irq(IRQ_AC97, NULL);
++ pxa_set_cken(CKEN2_AC97, 0);
++ }
++ return ret;
++}
++
++static void pxa2xx_ac97_remove(struct platform_device *pdev)
++{
++ GCR |= GCR_ACLINK_OFF;
++ free_irq(IRQ_AC97, NULL);
++ pxa_set_cken(CKEN2_AC97, 0);
++}
++
++static int pxa2xx_ac97_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ rtd->cpu_dai->dma_data = &pxa2xx_ac97_pcm_stereo_out;
++ else
++ rtd->cpu_dai->dma_data = &pxa2xx_ac97_pcm_stereo_in;
++
++ return 0;
++}
++
++static int pxa2xx_ac97_hw_aux_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ rtd->cpu_dai->dma_data = &pxa2xx_ac97_pcm_aux_mono_out;
++ else
++ rtd->cpu_dai->dma_data = &pxa2xx_ac97_pcm_aux_mono_in;
++
++ return 0;
++}
++
++static int pxa2xx_ac97_hw_mic_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ return -ENODEV;
++ else
++ rtd->cpu_dai->dma_data = &pxa2xx_ac97_pcm_mic_mono_in;
++
++ return 0;
++}
++
++/*
++ * There is only 1 physical AC97 interface for pxa2xx, but it
++ * has extra fifo's that can be used for aux DACs and ADCs.
++ */
++struct snd_soc_cpu_dai pxa_ac97_dai[] = {
++{
++ .name = "pxa2xx-ac97",
++ .id = 0,
++ .type = SND_SOC_DAI_AC97,
++ .probe = pxa2xx_ac97_probe,
++ .remove = pxa2xx_ac97_remove,
++ .suspend = pxa2xx_ac97_suspend,
++ .resume = pxa2xx_ac97_resume,
++ .playback = {
++ .stream_name = "AC97 Playback",
++ .channels_min = 2,
++ .channels_max = 2,},
++ .capture = {
++ .stream_name = "AC97 Capture",
++ .channels_min = 2,
++ .channels_max = 2,},
++ .ops = {
++ .hw_params = pxa2xx_ac97_hw_params,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(pxa2xx_ac97_modes),
++ .mode = pxa2xx_ac97_modes,},
++},
++{
++ .name = "pxa2xx-ac97-aux",
++ .id = 1,
++ .type = SND_SOC_DAI_AC97,
++ .playback = {
++ .stream_name = "AC97 Aux Playback",
++ .channels_min = 1,
++ .channels_max = 1,},
++ .capture = {
++ .stream_name = "AC97 Aux Capture",
++ .channels_min = 1,
++ .channels_max = 1,},
++ .ops = {
++ .hw_params = pxa2xx_ac97_hw_aux_params,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(pxa2xx_ac97_modes),
++ .mode = pxa2xx_ac97_modes,},
++},
++{
++ .name = "pxa2xx-ac97-mic",
++ .id = 2,
++ .type = SND_SOC_DAI_AC97,
++ .capture = {
++ .stream_name = "AC97 Mic Capture",
++ .channels_min = 1,
++ .channels_max = 1,},
++ .ops = {
++ .hw_params = pxa2xx_ac97_hw_mic_params,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(pxa2xx_ac97_modes),
++ .mode = pxa2xx_ac97_modes,},},
++};
++
++EXPORT_SYMBOL_GPL(pxa_ac97_dai);
++EXPORT_SYMBOL_GPL(soc_ac97_ops);
++
++MODULE_AUTHOR("Nicolas Pitre");
++MODULE_DESCRIPTION("AC97 driver for the Intel PXA2xx chip");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-i2s.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-i2s.c
+@@ -0,0 +1,354 @@
++/*
++ * pxa2xx-i2s.c -- ALSA Soc Audio Layer
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or 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
++ * 12th Aug 2005 Initial version.
++ */
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/device.h>
++#include <linux/delay.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/initval.h>
++#include <sound/soc.h>
++
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/audio.h>
++
++#include "pxa2xx-pcm.h"
++
++/* used to disable sysclk if external crystal is used */
++static int extclk;
++module_param(extclk, int, 0);
++MODULE_PARM_DESC(extclk, "set to 1 to disable pxa2xx i2s sysclk");
++
++struct pxa_i2s_port {
++ u32 sadiv;
++ u32 sacr0;
++ u32 sacr1;
++ u32 saimr;
++ int master;
++};
++static struct pxa_i2s_port pxa_i2s;
++
++#define PXA_I2S_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF)
++
++#define PXA_I2S_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define PXA_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 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
++
++/* priv is divider */
++static struct snd_soc_dai_mode pxa2xx_i2s_modes[] = {
++ /* pxa2xx I2S frame and clock master modes */
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = PXA_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(4),
++ .priv = 0x48,
++ },
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_11025,
++ .pcmdir = PXA_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(4),
++ .priv = 0x34,
++ },
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_16000,
++ .pcmdir = PXA_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(4),
++ .priv = 0x24,
++ },
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_22050,
++ .pcmdir = PXA_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(4),
++ .priv = 0x1a,
++ },
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = PXA_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(4),
++ .priv = 0xd,
++ },
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = PXA_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(4),
++ .priv = 0xc,
++ },
++
++ /* pxa2xx I2S frame master and clock slave mode */
++ {
++ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBM_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = PXA_I2S_RATES,
++ .pcmdir = PXA_I2S_DIR,
++ .fs = SND_SOC_FS_ALL,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .bfs = 64,
++ .priv = 0x48,
++ },
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_i2s_pcm_stereo_out = {
++ .name = "I2S PCM Stereo out",
++ .dev_addr = __PREG(SADR),
++ .drcmr = &DRCMRTXSADR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST32 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_i2s_pcm_stereo_in = {
++ .name = "I2S PCM Stereo in",
++ .dev_addr = __PREG(SADR),
++ .drcmr = &DRCMRRXSADR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST32 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_gpio gpio_bus[] = {
++ { /* I2S SoC Slave */
++ .rx = GPIO29_SDATA_IN_I2S_MD,
++ .tx = GPIO30_SDATA_OUT_I2S_MD,
++ .clk = GPIO28_BITCLK_IN_I2S_MD,
++ .frm = GPIO31_SYNC_I2S_MD,
++ },
++ { /* I2S SoC Master */
++#ifdef CONFIG_PXA27x
++ .sys = GPIO113_I2S_SYSCLK_MD,
++#else
++ .sys = GPIO32_SYSCLK_I2S_MD,
++#endif
++ .rx = GPIO29_SDATA_IN_I2S_MD,
++ .tx = GPIO30_SDATA_OUT_I2S_MD,
++ .clk = GPIO28_BITCLK_OUT_I2S_MD,
++ .frm = GPIO31_SYNC_I2S_MD,
++ },
++};
++
++static int pxa2xx_i2s_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ if (!rtd->cpu_dai->active) {
++ SACR0 |= SACR0_RST;
++ SACR0 = 0;
++ }
++
++ return 0;
++}
++
++/* wait for I2S controller to be ready */
++static int pxa_i2s_wait(void)
++{
++ int i;
++
++ /* flush the Rx FIFO */
++ for(i = 0; i < 16; i++)
++ SADR;
++ return 0;
++}
++
++static int pxa2xx_i2s_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ pxa_i2s.master = 0;
++ if (rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CBS_CFS)
++ pxa_i2s.master = 1;
++
++ if (pxa_i2s.master && !extclk)
++ pxa_gpio_mode(gpio_bus[pxa_i2s.master].sys);
++
++ pxa_gpio_mode(gpio_bus[pxa_i2s.master].rx);
++ pxa_gpio_mode(gpio_bus[pxa_i2s.master].tx);
++ pxa_gpio_mode(gpio_bus[pxa_i2s.master].frm);
++ pxa_gpio_mode(gpio_bus[pxa_i2s.master].clk);
++ pxa_set_cken(CKEN8_I2S, 1);
++ pxa_i2s_wait();
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ rtd->cpu_dai->dma_data = &pxa2xx_i2s_pcm_stereo_out;
++ else
++ rtd->cpu_dai->dma_data = &pxa2xx_i2s_pcm_stereo_in;
++
++ /* is port used by another stream */
++ if (!(SACR0 & SACR0_ENB)) {
++
++ SACR0 = 0;
++ SACR1 = 0;
++ if (pxa_i2s.master)
++ SACR0 |= SACR0_BCKD;
++
++ SACR0 |= SACR0_RFTH(14) | SACR0_TFTH(1);
++
++ if (rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_LEFT_J)
++ SACR1 |= SACR1_AMSL;
++ }
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SAIMR |= SAIMR_TFS;
++ else
++ SAIMR |= SAIMR_RFS;
++
++ SADIV = rtd->cpu_dai->dai_runtime.priv;
++ return 0;
++}
++
++static int pxa2xx_i2s_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ int ret = 0;
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ SACR0 |= SACR0_ENB;
++ break;
++ case SNDRV_PCM_TRIGGER_RESUME:
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ case SNDRV_PCM_TRIGGER_STOP:
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ break;
++ default:
++ ret = -EINVAL;
++ }
++
++ return ret;
++}
++
++static void pxa2xx_i2s_shutdown(struct snd_pcm_substream *substream)
++{
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
++ SACR1 |= SACR1_DRPL;
++ SAIMR &= ~SAIMR_TFS;
++ } else {
++ SACR1 |= SACR1_DREC;
++ SAIMR &= ~SAIMR_RFS;
++ }
++
++ if (SACR1 & (SACR1_DREC | SACR1_DRPL)) {
++ SACR0 &= ~SACR0_ENB;
++ pxa_i2s_wait();
++ pxa_set_cken(CKEN8_I2S, 0);
++ }
++}
++
++#ifdef CONFIG_PM
++static int pxa2xx_i2s_suspend(struct platform_device *dev,
++ struct snd_soc_cpu_dai *dai)
++{
++ if (!dai->active)
++ return 0;
++
++ /* store registers */
++ pxa_i2s.sacr0 = SACR0;
++ pxa_i2s.sacr1 = SACR1;
++ pxa_i2s.saimr = SAIMR;
++ pxa_i2s.sadiv = SADIV;
++
++ /* deactivate link */
++ SACR0 &= ~SACR0_ENB;
++ pxa_i2s_wait();
++ return 0;
++}
++
++static int pxa2xx_i2s_resume(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ if (!dai->active)
++ return 0;
++
++ pxa_i2s_wait();
++
++ SACR0 = pxa_i2s.sacr0 &= ~SACR0_ENB;
++ SACR1 = pxa_i2s.sacr1;
++ SAIMR = pxa_i2s.saimr;
++ SADIV = pxa_i2s.sadiv;
++ SACR0 |= SACR0_ENB;
++
++ return 0;
++}
++
++#else
++#define pxa2xx_i2s_suspend NULL
++#define pxa2xx_i2s_resume NULL
++#endif
++
++/* pxa2xx I2S sysclock is always 256 FS */
++static unsigned int pxa_i2s_config_sysclk(struct snd_soc_cpu_dai *iface,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ return info->rate << 8;
++}
++
++struct snd_soc_cpu_dai pxa_i2s_dai = {
++ .name = "pxa2xx-i2s",
++ .id = 0,
++ .type = SND_SOC_DAI_I2S,
++ .suspend = pxa2xx_i2s_suspend,
++ .resume = pxa2xx_i2s_resume,
++ .config_sysclk = pxa_i2s_config_sysclk,
++ .playback = {
++ .channels_min = 2,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 2,
++ .channels_max = 2,},
++ .ops = {
++ .startup = pxa2xx_i2s_startup,
++ .shutdown = pxa2xx_i2s_shutdown,
++ .trigger = pxa2xx_i2s_trigger,
++ .hw_params = pxa2xx_i2s_hw_params,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(pxa2xx_i2s_modes),
++ .mode = pxa2xx_i2s_modes,},
++};
++
++EXPORT_SYMBOL_GPL(pxa_i2s_dai);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("pxa2xx I2S SoC Interface");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-pcm.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-pcm.c
+@@ -0,0 +1,363 @@
++/*
++ * linux/sound/arm/pxa2xx-pcm.c -- ALSA PCM interface for the Intel PXA2xx chip
++ *
++ * Author: Nicolas Pitre
++ * Created: Nov 30, 2004
++ * Copyright: (C) 2004 MontaVista Software, 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/module.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/slab.h>
++#include <linux/dma-mapping.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++
++#include <asm/dma.h>
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/audio.h>
++
++#include "pxa2xx-pcm.h"
++
++static const struct snd_pcm_hardware pxa2xx_pcm_hardware = {
++ .info = SNDRV_PCM_INFO_MMAP |
++ SNDRV_PCM_INFO_MMAP_VALID |
++ SNDRV_PCM_INFO_INTERLEAVED |
++ SNDRV_PCM_INFO_PAUSE |
++ SNDRV_PCM_INFO_RESUME,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE |
++ SNDRV_PCM_FMTBIT_S24_LE |
++ SNDRV_PCM_FMTBIT_S32_LE,
++ .period_bytes_min = 32,
++ .period_bytes_max = 8192 - 32,
++ .periods_min = 1,
++ .periods_max = PAGE_SIZE/sizeof(pxa_dma_desc),
++ .buffer_bytes_max = 128 * 1024,
++ .fifo_size = 32,
++};
++
++struct pxa2xx_runtime_data {
++ int dma_ch;
++ struct pxa2xx_pcm_dma_params *params;
++ pxa_dma_desc *dma_desc_array;
++ dma_addr_t dma_desc_array_phys;
++};
++
++static void pxa2xx_pcm_dma_irq(int dma_ch, void *dev_id)
++{
++ struct snd_pcm_substream *substream = dev_id;
++ struct pxa2xx_runtime_data *prtd = substream->runtime->private_data;
++ int dcsr;
++
++ dcsr = DCSR(dma_ch);
++ DCSR(dma_ch) = dcsr & ~DCSR_STOPIRQEN;
++
++ if (dcsr & DCSR_ENDINTR) {
++ snd_pcm_period_elapsed(substream);
++ } else {
++ printk( KERN_ERR "%s: DMA error on channel %d (DCSR=%#x)\n",
++ prtd->params->name, dma_ch, dcsr );
++ }
++}
++
++static int pxa2xx_pcm_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct pxa2xx_runtime_data *prtd = runtime->private_data;
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct pxa2xx_pcm_dma_params *dma = rtd->cpu_dai->dma_data;
++ size_t totsize = params_buffer_bytes(params);
++ size_t period = params_period_bytes(params);
++ pxa_dma_desc *dma_desc;
++ dma_addr_t dma_buff_phys, next_desc_phys;
++ int ret;
++
++ /* this may get called several times by oss emulation
++ * with different params */
++ if (prtd->params == NULL) {
++ prtd->params = dma;
++ ret = pxa_request_dma(prtd->params->name, DMA_PRIO_LOW,
++ pxa2xx_pcm_dma_irq, substream);
++ if (ret < 0)
++ return ret;
++ prtd->dma_ch = ret;
++ } else if (prtd->params != dma) {
++ pxa_free_dma(prtd->dma_ch);
++ prtd->params = dma;
++ ret = pxa_request_dma(prtd->params->name, DMA_PRIO_LOW,
++ pxa2xx_pcm_dma_irq, substream);
++ if (ret < 0)
++ return ret;
++ prtd->dma_ch = ret;
++ }
++
++ snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
++ runtime->dma_bytes = totsize;
++
++ dma_desc = prtd->dma_desc_array;
++ next_desc_phys = prtd->dma_desc_array_phys;
++ dma_buff_phys = runtime->dma_addr;
++ do {
++ next_desc_phys += sizeof(pxa_dma_desc);
++ dma_desc->ddadr = next_desc_phys;
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
++ dma_desc->dsadr = dma_buff_phys;
++ dma_desc->dtadr = prtd->params->dev_addr;
++ } else {
++ dma_desc->dsadr = prtd->params->dev_addr;
++ dma_desc->dtadr = dma_buff_phys;
++ }
++ if (period > totsize)
++ period = totsize;
++ dma_desc->dcmd = prtd->params->dcmd | period | DCMD_ENDIRQEN;
++ dma_desc++;
++ dma_buff_phys += period;
++ } while (totsize -= period);
++ dma_desc[-1].ddadr = prtd->dma_desc_array_phys;
++
++ return 0;
++}
++
++static int pxa2xx_pcm_hw_free(struct snd_pcm_substream *substream)
++{
++ struct pxa2xx_runtime_data *prtd = substream->runtime->private_data;
++
++ if (prtd && prtd->params)
++ *prtd->params->drcmr = 0;
++
++ if (prtd->dma_ch) {
++ snd_pcm_set_runtime_buffer(substream, NULL);
++ pxa_free_dma(prtd->dma_ch);
++ prtd->dma_ch = 0;
++ }
++
++ return 0;
++}
++
++static int pxa2xx_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct pxa2xx_runtime_data *prtd = substream->runtime->private_data;
++
++ DCSR(prtd->dma_ch) &= ~DCSR_RUN;
++ DCSR(prtd->dma_ch) = 0;
++ DCMD(prtd->dma_ch) = 0;
++ *prtd->params->drcmr = prtd->dma_ch | DRCMR_MAPVLD;
++
++ return 0;
++}
++
++static int pxa2xx_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ struct pxa2xx_runtime_data *prtd = substream->runtime->private_data;
++ int ret = 0;
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ DDADR(prtd->dma_ch) = prtd->dma_desc_array_phys;
++ DCSR(prtd->dma_ch) = DCSR_RUN;
++ break;
++
++ case SNDRV_PCM_TRIGGER_STOP:
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ DCSR(prtd->dma_ch) &= ~DCSR_RUN;
++ break;
++
++ case SNDRV_PCM_TRIGGER_RESUME:
++ DCSR(prtd->dma_ch) |= DCSR_RUN;
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ DDADR(prtd->dma_ch) = prtd->dma_desc_array_phys;
++ DCSR(prtd->dma_ch) |= DCSR_RUN;
++ break;
++
++ default:
++ ret = -EINVAL;
++ }
++
++ return ret;
++}
++
++static snd_pcm_uframes_t
++pxa2xx_pcm_pointer(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct pxa2xx_runtime_data *prtd = runtime->private_data;
++
++ dma_addr_t ptr = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
++ DSADR(prtd->dma_ch) : DTADR(prtd->dma_ch);
++ snd_pcm_uframes_t x = bytes_to_frames(runtime, ptr - runtime->dma_addr);
++
++ if (x == runtime->buffer_size)
++ x = 0;
++ return x;
++}
++
++static int pxa2xx_pcm_open(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct pxa2xx_runtime_data *prtd;
++ int ret;
++
++ snd_soc_set_runtime_hwparams(substream, &pxa2xx_pcm_hardware);
++
++ /*
++ * For mysterious reasons (and despite what the manual says)
++ * playback samples are lost if the DMA count is not a multiple
++ * of the DMA burst size. Let's add a rule to enforce that.
++ */
++ ret = snd_pcm_hw_constraint_step(runtime, 0,
++ SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 32);
++ if (ret)
++ goto out;
++
++ ret = snd_pcm_hw_constraint_step(runtime, 0,
++ SNDRV_PCM_HW_PARAM_BUFFER_BYTES, 32);
++ if (ret)
++ goto out;
++
++ prtd = kzalloc(sizeof(struct pxa2xx_runtime_data), GFP_KERNEL);
++ if (prtd == NULL) {
++ ret = -ENOMEM;
++ goto out;
++ }
++
++ prtd->dma_desc_array =
++ dma_alloc_writecombine(substream->pcm->card->dev, PAGE_SIZE,
++ &prtd->dma_desc_array_phys, GFP_KERNEL);
++ if (!prtd->dma_desc_array) {
++ ret = -ENOMEM;
++ goto err1;
++ }
++
++ runtime->private_data = prtd;
++ return 0;
++
++ err1:
++ kfree(prtd);
++ out:
++ return ret;
++}
++
++static int pxa2xx_pcm_close(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct pxa2xx_runtime_data *prtd = runtime->private_data;
++
++ dma_free_writecombine(substream->pcm->card->dev, PAGE_SIZE,
++ prtd->dma_desc_array, prtd->dma_desc_array_phys);
++ kfree(prtd);
++ return 0;
++}
++
++static int pxa2xx_pcm_mmap(struct snd_pcm_substream *substream,
++ struct vm_area_struct *vma)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ return dma_mmap_writecombine(substream->pcm->card->dev, vma,
++ runtime->dma_area,
++ runtime->dma_addr,
++ runtime->dma_bytes);
++}
++
++struct snd_pcm_ops pxa2xx_pcm_ops = {
++ .open = pxa2xx_pcm_open,
++ .close = pxa2xx_pcm_close,
++ .ioctl = snd_pcm_lib_ioctl,
++ .hw_params = pxa2xx_pcm_hw_params,
++ .hw_free = pxa2xx_pcm_hw_free,
++ .prepare = pxa2xx_pcm_prepare,
++ .trigger = pxa2xx_pcm_trigger,
++ .pointer = pxa2xx_pcm_pointer,
++ .mmap = pxa2xx_pcm_mmap,
++};
++
++static int pxa2xx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
++{
++ struct snd_pcm_substream *substream = pcm->streams[stream].substream;
++ struct snd_dma_buffer *buf = &substream->dma_buffer;
++ size_t size = pxa2xx_pcm_hardware.buffer_bytes_max;
++ buf->dev.type = SNDRV_DMA_TYPE_DEV;
++ buf->dev.dev = pcm->card->dev;
++ buf->private_data = NULL;
++ buf->area = dma_alloc_writecombine(pcm->card->dev, size,
++ &buf->addr, GFP_KERNEL);
++ if (!buf->area)
++ return -ENOMEM;
++ buf->bytes = size;
++ return 0;
++}
++
++static void pxa2xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
++{
++ struct snd_pcm_substream *substream;
++ struct snd_dma_buffer *buf;
++ int stream;
++
++ for (stream = 0; stream < 2; stream++) {
++ substream = pcm->streams[stream].substream;
++ if (!substream)
++ continue;
++
++ buf = &substream->dma_buffer;
++ if (!buf->area)
++ continue;
++
++ dma_free_writecombine(pcm->card->dev, buf->bytes,
++ buf->area, buf->addr);
++ buf->area = NULL;
++ }
++}
++
++static u64 pxa2xx_pcm_dmamask = DMA_32BIT_MASK;
++
++int pxa2xx_pcm_new(struct snd_card *card, struct snd_soc_codec_dai *dai,
++ struct snd_pcm *pcm)
++{
++ int ret = 0;
++
++ if (!card->dev->dma_mask)
++ card->dev->dma_mask = &pxa2xx_pcm_dmamask;
++ if (!card->dev->coherent_dma_mask)
++ card->dev->coherent_dma_mask = DMA_32BIT_MASK;
++
++ if (dai->playback.channels_min) {
++ ret = pxa2xx_pcm_preallocate_dma_buffer(pcm,
++ SNDRV_PCM_STREAM_PLAYBACK);
++ if (ret)
++ goto out;
++ }
++
++ if (dai->capture.channels_min) {
++ ret = pxa2xx_pcm_preallocate_dma_buffer(pcm,
++ SNDRV_PCM_STREAM_CAPTURE);
++ if (ret)
++ goto out;
++ }
++ out:
++ return ret;
++}
++
++struct snd_soc_platform pxa2xx_soc_platform = {
++ .name = "pxa2xx-audio",
++ .pcm_ops = &pxa2xx_pcm_ops,
++ .pcm_new = pxa2xx_pcm_new,
++ .pcm_free = pxa2xx_pcm_free_dma_buffers,
++};
++
++EXPORT_SYMBOL_GPL(pxa2xx_soc_platform);
++
++MODULE_AUTHOR("Nicolas Pitre");
++MODULE_DESCRIPTION("Intel PXA2xx PCM DMA module");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-pcm.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-pcm.h
+@@ -0,0 +1,48 @@
++/*
++ * linux/sound/arm/pxa2xx-pcm.h -- ALSA PCM interface for the Intel PXA2xx chip
++ *
++ * Author: Nicolas Pitre
++ * Created: Nov 30, 2004
++ * Copyright: MontaVista Software, 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.
++ */
++
++#ifndef _PXA2XX_PCM_H
++#define _PXA2XX_PCM_H
++
++struct pxa2xx_pcm_dma_params {
++ char *name; /* stream identifier */
++ u32 dcmd; /* DMA descriptor dcmd field */
++ volatile u32 *drcmr; /* the DMA request channel to use */
++ u32 dev_addr; /* device physical address for DMA */
++};
++
++struct pxa2xx_gpio {
++ u32 sys;
++ u32 rx;
++ u32 tx;
++ u32 clk;
++ u32 frm;
++};
++
++/* pxa2xx DAI ID's */
++#define PXA2XX_DAI_AC97_HIFI 0
++#define PXA2XX_DAI_AC97_AUX 1
++#define PXA2XX_DAI_AC97_MIC 2
++#define PXA2XX_DAI_I2S 0
++#define PXA2XX_DAI_SSP1 0
++#define PXA2XX_DAI_SSP2 1
++#define PXA2XX_DAI_SSP3 2
++
++extern struct snd_soc_cpu_dai pxa_ac97_dai[3];
++extern struct snd_soc_cpu_dai pxa_i2s_dai;
++extern struct snd_soc_cpu_dai pxa_ssp_dai[3];
++
++/* platform data */
++extern struct snd_soc_platform pxa2xx_soc_platform;
++extern struct snd_ac97_bus_ops pxa2xx_ac97_ops;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-ssp.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-ssp.c
+@@ -0,0 +1,767 @@
++/*
++ * pxa2xx-ssp.c -- ALSA Soc Audio Layer
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or 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
++ * 12th Aug 2005 Initial version.
++ *
++ * TODO:
++ * o Fix master mode (bug)
++ * o Fix resume (bug)
++ * o Add support for other clocks
++ * o Test network mode for > 16bit sample size
++ */
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/initval.h>
++#include <sound/soc.h>
++
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/audio.h>
++#include <asm/arch/ssp.h>
++
++#include "pxa2xx-pcm.h"
++
++/*
++ * SSP sysclock frequency in Hz
++ * Neither default pxa2xx PLL clocks are good for audio, hence pxa27x
++ * has audio clock. I would recommend using the pxa27x audio clock or an
++ * external clock or making the codec master to gurantee better sample rates.
++ */
++#ifdef CONFIG_PXA27x
++static int sysclk[3] = {13000000, 13000000, 13000000};
++#else
++static int sysclk[3] = {1843200, 1843200, 1843200};
++#endif
++module_param_array(sysclk, int, NULL, 0);
++MODULE_PARM_DESC(sysclk, "sysclk frequency in Hz");
++
++/*
++ * SSP sysclock source.
++ * sysclk is ignored if audio clock is used
++ */
++#ifdef CONFIG_PXA27x
++static int clksrc[3] = {0, 0, 0};
++#else
++static int clksrc[3] = {0, 0, 0};
++#endif
++module_param_array(clksrc, int, NULL, 0);
++MODULE_PARM_DESC(clksrc,
++ "sysclk source, 0 = internal PLL, 1 = ext, 2 = network, 3 = audio clock");
++
++/*
++ * SSP GPIO's
++ */
++#define GPIO26_SSP1RX_MD (26 | GPIO_ALT_FN_1_IN)
++#define GPIO25_SSP1TX_MD (25 | GPIO_ALT_FN_2_OUT)
++#define GPIO23_SSP1CLKS_MD (23 | GPIO_ALT_FN_2_IN)
++#define GPIO24_SSP1FRMS_MD (24 | GPIO_ALT_FN_2_IN)
++#define GPIO23_SSP1CLKM_MD (23 | GPIO_ALT_FN_2_OUT)
++#define GPIO24_SSP1FRMM_MD (24 | GPIO_ALT_FN_2_OUT)
++
++#define GPIO11_SSP2RX_MD (11 | GPIO_ALT_FN_2_IN)
++#define GPIO13_SSP2TX_MD (13 | GPIO_ALT_FN_1_OUT)
++#define GPIO22_SSP2CLKS_MD (22 | GPIO_ALT_FN_3_IN)
++#define GPIO88_SSP2FRMS_MD (88 | GPIO_ALT_FN_3_IN)
++#define GPIO22_SSP2CLKM_MD (22 | GPIO_ALT_FN_3_OUT)
++#define GPIO88_SSP2FRMM_MD (88 | GPIO_ALT_FN_3_OUT)
++
++#define GPIO82_SSP3RX_MD (82 | GPIO_ALT_FN_1_IN)
++#define GPIO81_SSP3TX_MD (81 | GPIO_ALT_FN_1_OUT)
++#define GPIO84_SSP3CLKS_MD (84 | GPIO_ALT_FN_1_IN)
++#define GPIO83_SSP3FRMS_MD (83 | GPIO_ALT_FN_1_IN)
++#define GPIO84_SSP3CLKM_MD (84 | GPIO_ALT_FN_1_OUT)
++#define GPIO83_SSP3FRMM_MD (83 | GPIO_ALT_FN_1_OUT)
++
++#define PXA_SSP_MDAIFMT \
++ (SND_SOC_DAIFMT_DSP_B |SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBS_CFS | SND_SOC_DAIFMT_CBM_CFS | \
++ SND_SOC_DAIFMT_CBS_CFM | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF)
++
++#define PXA_SSP_SDAIFMT \
++ (SND_SOC_DAIFMT_DSP_B |SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS | \
++ SND_SOC_DAIFMT_CBS_CFM | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF)
++
++#define PXA_SSP_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define PXA_SSP_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 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | \
++ SNDRV_PCM_RATE_176400 | SNDRV_PCM_RATE_192000)
++
++#define PXA_SSP_BITS \
++ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
++ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
++
++/*
++ * SSP modes
++ */
++static struct snd_soc_dai_mode pxa2xx_ssp_modes[] = {
++ /* port slave clk & frame modes */
++ {
++ .fmt = PXA_SSP_SDAIFMT,
++ .pcmfmt = PXA_SSP_BITS,
++ .pcmrate = PXA_SSP_RATES,
++ .pcmdir = PXA_SSP_DIR,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++
++ /* port master clk & frame modes */
++#ifdef CONFIG_PXA27x
++ {
++ .fmt = PXA_SSP_MDAIFMT,
++ .pcmfmt = PXA_SSP_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = PXA_SSP_DIR,
++ .flags = SND_SOC_DAI_BFS_RCW,
++ .fs = 256,
++ .bfs = SND_SOC_FSBW(1),
++ },
++ {
++ .fmt = PXA_SSP_MDAIFMT,
++ .pcmfmt = PXA_SSP_BITS,
++ .pcmrate = SNDRV_PCM_RATE_11025,
++ .pcmdir = PXA_SSP_DIR,
++ .flags = SND_SOC_DAI_BFS_RCW,
++ .fs = 256,
++ .bfs = SND_SOC_FSBW(1),
++ },
++ {
++ .fmt = PXA_SSP_MDAIFMT,
++ .pcmfmt = PXA_SSP_BITS,
++ .pcmrate = SNDRV_PCM_RATE_16000,
++ .pcmdir = PXA_SSP_DIR,
++ .flags = SND_SOC_DAI_BFS_RCW,
++ .fs = 256,
++ .bfs = SND_SOC_FSBW(1),
++ },
++ {
++ .fmt = PXA_SSP_MDAIFMT,
++ .pcmfmt = PXA_SSP_BITS,
++ .pcmrate = SNDRV_PCM_RATE_22050,
++ .pcmdir = PXA_SSP_DIR,
++ .flags = SND_SOC_DAI_BFS_RCW,
++ .fs = 256,
++ .bfs = SND_SOC_FSBW(1),
++ },
++ {
++ .fmt = PXA_SSP_MDAIFMT,
++ .pcmfmt = PXA_SSP_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = PXA_SSP_DIR,
++ .flags = SND_SOC_DAI_BFS_RCW,
++ .fs = 256,
++ .bfs = SND_SOC_FSBW(1),
++ },
++ {
++ .fmt = PXA_SSP_MDAIFMT,
++ .pcmfmt = PXA_SSP_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = PXA_SSP_DIR,
++ .flags = SND_SOC_DAI_BFS_RCW,
++ .fs = 256,
++ .bfs = SND_SOC_FSBW(1),
++ },
++ {
++ .fmt = PXA_SSP_MDAIFMT,
++ .pcmfmt = PXA_SSP_BITS,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = PXA_SSP_DIR,
++ .flags = SND_SOC_DAI_BFS_RCW,
++ .fs = 256,
++ .bfs = SND_SOC_FSBW(1),
++ },
++ {
++ .fmt = PXA_SSP_MDAIFMT,
++ .pcmfmt = PXA_SSP_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200,
++ .pcmdir = PXA_SSP_DIR,
++ .flags = SND_SOC_DAI_BFS_RCW,
++ .fs = 128,
++ .bfs = SND_SOC_FSBW(1),
++ },
++ {
++ .fmt = PXA_SSP_MDAIFMT,
++ .pcmfmt = PXA_SSP_BITS,
++ .pcmrate = SNDRV_PCM_RATE_96000,
++ .pcmdir = PXA_SSP_DIR,
++ .flags = SND_SOC_DAI_BFS_RCW,
++ .fs = 128,
++ .bfs = SND_SOC_FSBW(1),
++ },
++#endif
++};
++
++static struct ssp_dev ssp[3];
++#ifdef CONFIG_PM
++static struct ssp_state ssp_state[3];
++#endif
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp1_pcm_mono_out = {
++ .name = "SSP1 PCM Mono out",
++ .dev_addr = __PREG(SSDR_P1),
++ .drcmr = &DRCMRTXSSDR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp1_pcm_mono_in = {
++ .name = "SSP1 PCM Mono in",
++ .dev_addr = __PREG(SSDR_P1),
++ .drcmr = &DRCMRRXSSDR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp1_pcm_stereo_out = {
++ .name = "SSP1 PCM Stereo out",
++ .dev_addr = __PREG(SSDR_P1),
++ .drcmr = &DRCMRTXSSDR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST16 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp1_pcm_stereo_in = {
++ .name = "SSP1 PCM Stereo in",
++ .dev_addr = __PREG(SSDR_P1),
++ .drcmr = &DRCMRRXSSDR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp2_pcm_mono_out = {
++ .name = "SSP2 PCM Mono out",
++ .dev_addr = __PREG(SSDR_P2),
++ .drcmr = &DRCMRTXSS2DR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp2_pcm_mono_in = {
++ .name = "SSP2 PCM Mono in",
++ .dev_addr = __PREG(SSDR_P2),
++ .drcmr = &DRCMRRXSS2DR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp2_pcm_stereo_out = {
++ .name = "SSP2 PCM Stereo out",
++ .dev_addr = __PREG(SSDR_P2),
++ .drcmr = &DRCMRTXSS2DR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST16 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp2_pcm_stereo_in = {
++ .name = "SSP2 PCM Stereo in",
++ .dev_addr = __PREG(SSDR_P2),
++ .drcmr = &DRCMRRXSS2DR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp3_pcm_mono_out = {
++ .name = "SSP3 PCM Mono out",
++ .dev_addr = __PREG(SSDR_P3),
++ .drcmr = &DRCMRTXSS3DR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp3_pcm_mono_in = {
++ .name = "SSP3 PCM Mono in",
++ .dev_addr = __PREG(SSDR_P3),
++ .drcmr = &DRCMRRXSS3DR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp3_pcm_stereo_out = {
++ .name = "SSP3 PCM Stereo out",
++ .dev_addr = __PREG(SSDR_P3),
++ .drcmr = &DRCMRTXSS3DR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST16 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp3_pcm_stereo_in = {
++ .name = "SSP3 PCM Stereo in",
++ .dev_addr = __PREG(SSDR_P3),
++ .drcmr = &DRCMRRXSS3DR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params *ssp_dma_params[3][4] = {
++ {&pxa2xx_ssp1_pcm_mono_out, &pxa2xx_ssp1_pcm_mono_in,
++ &pxa2xx_ssp1_pcm_stereo_out,&pxa2xx_ssp1_pcm_stereo_in,},
++ {&pxa2xx_ssp2_pcm_mono_out, &pxa2xx_ssp2_pcm_mono_in,
++ &pxa2xx_ssp2_pcm_stereo_out, &pxa2xx_ssp2_pcm_stereo_in,},
++ {&pxa2xx_ssp3_pcm_mono_out, &pxa2xx_ssp3_pcm_mono_in,
++ &pxa2xx_ssp3_pcm_stereo_out,&pxa2xx_ssp3_pcm_stereo_in,},
++};
++
++static struct pxa2xx_gpio ssp_gpios[3][4] = {
++ {{ /* SSP1 SND_SOC_DAIFMT_CBM_CFM */
++ .rx = GPIO26_SSP1RX_MD,
++ .tx = GPIO25_SSP1TX_MD,
++ .clk = (23 | GPIO_ALT_FN_2_IN),
++ .frm = (24 | GPIO_ALT_FN_2_IN),
++ },
++ { /* SSP1 SND_SOC_DAIFMT_CBS_CFS */
++ .rx = GPIO26_SSP1RX_MD,
++ .tx = GPIO25_SSP1TX_MD,
++ .clk = (23 | GPIO_ALT_FN_2_OUT),
++ .frm = (24 | GPIO_ALT_FN_2_OUT),
++ },
++ { /* SSP1 SND_SOC_DAIFMT_CBS_CFM */
++ .rx = GPIO26_SSP1RX_MD,
++ .tx = GPIO25_SSP1TX_MD,
++ .clk = (23 | GPIO_ALT_FN_2_OUT),
++ .frm = (24 | GPIO_ALT_FN_2_IN),
++ },
++ { /* SSP1 SND_SOC_DAIFMT_CBM_CFS */
++ .rx = GPIO26_SSP1RX_MD,
++ .tx = GPIO25_SSP1TX_MD,
++ .clk = (23 | GPIO_ALT_FN_2_IN),
++ .frm = (24 | GPIO_ALT_FN_2_OUT),
++ }},
++ {{ /* SSP2 SND_SOC_DAIFMT_CBM_CFM */
++ .rx = GPIO11_SSP2RX_MD,
++ .tx = GPIO13_SSP2TX_MD,
++ .clk = (22 | GPIO_ALT_FN_3_IN),
++ .frm = (88 | GPIO_ALT_FN_3_IN),
++ },
++ { /* SSP2 SND_SOC_DAIFMT_CBS_CFS */
++ .rx = GPIO11_SSP2RX_MD,
++ .tx = GPIO13_SSP2TX_MD,
++ .clk = (22 | GPIO_ALT_FN_3_OUT),
++ .frm = (88 | GPIO_ALT_FN_3_OUT),
++ },
++ { /* SSP2 SND_SOC_DAIFMT_CBS_CFM */
++ .rx = GPIO11_SSP2RX_MD,
++ .tx = GPIO13_SSP2TX_MD,
++ .clk = (22 | GPIO_ALT_FN_3_OUT),
++ .frm = (88 | GPIO_ALT_FN_3_IN),
++ },
++ { /* SSP2 SND_SOC_DAIFMT_CBM_CFS */
++ .rx = GPIO11_SSP2RX_MD,
++ .tx = GPIO13_SSP2TX_MD,
++ .clk = (22 | GPIO_ALT_FN_3_IN),
++ .frm = (88 | GPIO_ALT_FN_3_OUT),
++ }},
++ {{ /* SSP3 SND_SOC_DAIFMT_CBM_CFM */
++ .rx = GPIO82_SSP3RX_MD,
++ .tx = GPIO81_SSP3TX_MD,
++ .clk = (84 | GPIO_ALT_FN_3_IN),
++ .frm = (83 | GPIO_ALT_FN_3_IN),
++ },
++ { /* SSP3 SND_SOC_DAIFMT_CBS_CFS */
++ .rx = GPIO82_SSP3RX_MD,
++ .tx = GPIO81_SSP3TX_MD,
++ .clk = (84 | GPIO_ALT_FN_3_OUT),
++ .frm = (83 | GPIO_ALT_FN_3_OUT),
++ },
++ { /* SSP3 SND_SOC_DAIFMT_CBS_CFM */
++ .rx = GPIO82_SSP3RX_MD,
++ .tx = GPIO81_SSP3TX_MD,
++ .clk = (84 | GPIO_ALT_FN_3_OUT),
++ .frm = (83 | GPIO_ALT_FN_3_IN),
++ },
++ { /* SSP3 SND_SOC_DAIFMT_CBM_CFS */
++ .rx = GPIO82_SSP3RX_MD,
++ .tx = GPIO81_SSP3TX_MD,
++ .clk = (84 | GPIO_ALT_FN_3_IN),
++ .frm = (83 | GPIO_ALT_FN_3_OUT),
++ }},
++};
++
++static int pxa2xx_ssp_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ int ret = 0;
++
++ if (!rtd->cpu_dai->active) {
++ ret = ssp_init (&ssp[rtd->cpu_dai->id], rtd->cpu_dai->id + 1,
++ SSP_NO_IRQ);
++ if (ret < 0)
++ return ret;
++ ssp_disable(&ssp[rtd->cpu_dai->id]);
++ }
++ return ret;
++}
++
++static void pxa2xx_ssp_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ if (!rtd->cpu_dai->active) {
++ ssp_disable(&ssp[rtd->cpu_dai->id]);
++ ssp_exit(&ssp[rtd->cpu_dai->id]);
++ }
++}
++
++#ifdef CONFIG_PM
++
++#if defined (CONFIG_PXA27x)
++static int cken[3] = {CKEN23_SSP1, CKEN3_SSP2, CKEN4_SSP3};
++#else
++static int cken[3] = {CKEN3_SSP, CKEN9_NSSP, CKEN10_ASSP};
++#endif
++
++static int pxa2xx_ssp_suspend(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ if (!dai->active)
++ return 0;
++
++ ssp_save_state(&ssp[dai->id], &ssp_state[dai->id]);
++ pxa_set_cken(cken[dai->id], 0);
++ return 0;
++}
++
++static int pxa2xx_ssp_resume(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ if (!dai->active)
++ return 0;
++
++ pxa_set_cken(cken[dai->id], 1);
++ ssp_restore_state(&ssp[dai->id], &ssp_state[dai->id]);
++ ssp_enable(&ssp[dai->id]);
++
++ return 0;
++}
++
++#else
++#define pxa2xx_ssp_suspend NULL
++#define pxa2xx_ssp_resume NULL
++#endif
++
++/* todo - check clk source and PLL before returning clock rate */
++static unsigned int pxa_ssp_config_sysclk(struct snd_soc_cpu_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ /* audio clock ? (divide by 1) */
++ if (clksrc[dai->id] == 3) {
++ switch(info->rate){
++ case 8000:
++ case 16000:
++ case 32000:
++ case 48000:
++ case 96000:
++ return 12288000;
++ break;
++ case 11025:
++ case 22050:
++ case 44100:
++ case 88200:
++ return 11289600;
++ break;
++ }
++ }
++
++ /* pll */
++ return sysclk[dai->id];
++}
++
++#ifdef CONFIG_PXA27x
++static u32 pxa27x_set_audio_clk(unsigned int rate, unsigned int fs)
++{
++ u32 aclk = 0, div = 0;
++
++ if (rate == 0 || fs == 0)
++ return 0;
++
++ switch(rate){
++ case 8000:
++ case 16000:
++ case 32000:
++ case 48000:
++ case 96000:
++ aclk = 0x2 << 4;
++ div = 12288000 / (rate * fs);
++ break;
++ case 11025:
++ case 22050:
++ case 44100:
++ case 88200:
++ aclk = 0x1 << 4;
++ div = 11289600 / (rate * fs);
++ break;
++ }
++
++ aclk |= ffs(div) - 1;
++ return aclk;
++}
++#endif
++
++static inline int get_scr(int srate, int id)
++{
++ if (srate == 0)
++ return 0;
++ return (sysclk[id] / srate) - 1;
++}
++
++static int pxa2xx_ssp_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ int fmt = 0, dma = 0, fs, chn = params_channels(params);
++ u32 ssp_mode = 0, ssp_setup = 0, psp_mode = 0, rate = 0;
++
++ fs = rtd->cpu_dai->dai_runtime.fs;
++
++ /* select correct DMA params */
++ if (substream->stream != SNDRV_PCM_STREAM_PLAYBACK)
++ dma = 1;
++ if (chn == 2 || rtd->cpu_dai->dai_runtime.pcmfmt != PXA_SSP_BITS)
++ dma += 2;
++ rtd->cpu_dai->dma_data = ssp_dma_params[rtd->cpu_dai->id][dma];
++
++ /* is port used by another stream */
++ if (SSCR0 & SSCR0_SSE)
++ return 0;
++
++ /* bit size */
++ switch(rtd->cpu_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ ssp_mode |=SSCR0_DataSize(16);
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ ssp_mode |=(SSCR0_EDSS | SSCR0_DataSize(8));
++ /* use network mode for stereo samples > 16 bits */
++ if (chn == 2) {
++ ssp_mode |= (SSCR0_MOD | SSCR0_SlotsPerFrm(2) << 24);
++ /* active slots 0,1 */
++ SSTSA_P(rtd->cpu_dai->id +1) = 0x3;
++ SSRSA_P(rtd->cpu_dai->id +1) = 0x3;
++ }
++ break;
++ case SNDRV_PCM_FMTBIT_S32_LE:
++ ssp_mode |= (SSCR0_EDSS | SSCR0_DataSize(16));
++ /* use network mode for stereo samples > 16 bits */
++ if (chn == 2) {
++ ssp_mode |= (SSCR0_MOD | SSCR0_SlotsPerFrm(2) << 24);
++ /* active slots 0,1 */
++ SSTSA_P(rtd->cpu_dai->id +1) = 0x3;
++ SSRSA_P(rtd->cpu_dai->id +1) = 0x3;
++ }
++ break;
++ }
++
++ ssp_mode |= SSCR0_PSP;
++ ssp_setup = SSCR1_RxTresh(14) | SSCR1_TxTresh(1) |
++ SSCR1_TRAIL | SSCR1_RWOT;
++
++ switch(rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ ssp_setup |= (SSCR1_SCLKDIR | SSCR1_SFRMDIR);
++ break;
++ case SND_SOC_DAIFMT_CBM_CFS:
++ ssp_setup |= SSCR1_SCLKDIR;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFM:
++ ssp_setup |= SSCR1_SFRMDIR;
++ break;
++ }
++
++ switch(rtd->cpu_dai->dai_runtime.fmt) {
++ case SND_SOC_DAIFMT_CBS_CFS:
++ fmt = 1;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFM:
++ fmt = 2;
++ break;
++ case SND_SOC_DAIFMT_CBM_CFS:
++ fmt = 3;
++ break;
++ }
++
++ pxa_gpio_mode(ssp_gpios[rtd->cpu_dai->id][fmt].rx);
++ pxa_gpio_mode(ssp_gpios[rtd->cpu_dai->id][fmt].tx);
++ pxa_gpio_mode(ssp_gpios[rtd->cpu_dai->id][fmt].frm);
++ pxa_gpio_mode(ssp_gpios[rtd->cpu_dai->id][fmt].clk);
++
++ switch (rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ psp_mode |= SSPSP_SFRMP | SSPSP_FSRT;
++ break;
++ }
++
++ if (rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_DSP_A)
++ psp_mode |= SSPSP_SCMODE(2);
++ if (rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_DSP_B)
++ psp_mode |= SSPSP_SCMODE(3);
++
++ switch(clksrc[rtd->cpu_dai->id]) {
++ case 2: /* network clock */
++ ssp_mode |= SSCR0_NCS | SSCR0_MOD;
++ case 1: /* external clock */
++ ssp_mode |= SSCR0_ECS;
++ case 0: /* internal clock */
++ rate = get_scr(snd_soc_get_rate(rtd->cpu_dai->dai_runtime.pcmrate),
++ rtd->cpu_dai->id);
++ break;
++#ifdef CONFIG_PXA27x
++ case 3: /* audio clock */
++ ssp_mode |= (1 << 30);
++ SSACD_P(rtd->cpu_dai->id) = (0x1 << 3) |
++ pxa27x_set_audio_clk(
++ snd_soc_get_rate(rtd->cpu_dai->dai_runtime.pcmrate), fs);
++ break;
++#endif
++ }
++
++ ssp_config(&ssp[rtd->cpu_dai->id], ssp_mode, ssp_setup, psp_mode,
++ SSCR0_SerClkDiv(rate));
++#if 0
++ printk("SSCR0 %x SSCR1 %x SSTO %x SSPSP %x SSSR %x\n",
++ SSCR0_P(rtd->cpu_dai->id+1), SSCR1_P(rtd->cpu_dai->id+1),
++ SSTO_P(rtd->cpu_dai->id+1), SSPSP_P(rtd->cpu_dai->id+1),
++ SSSR_P(rtd->cpu_dai->id+1));
++#endif
++ return 0;
++}
++
++static int pxa2xx_ssp_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ int ret = 0;
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_RESUME:
++ ssp_enable(&ssp[rtd->cpu_dai->id]);
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSCR1_P(rtd->cpu_dai->id+1) |= SSCR1_TSRE;
++ else
++ SSCR1_P(rtd->cpu_dai->id+1) |= SSCR1_RSRE;
++ SSSR_P(rtd->cpu_dai->id+1) |= SSSR_P(rtd->cpu_dai->id+1);
++ break;
++ case SNDRV_PCM_TRIGGER_START:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSCR1_P(rtd->cpu_dai->id+1) |= SSCR1_TSRE;
++ else
++ SSCR1_P(rtd->cpu_dai->id+1) |= SSCR1_RSRE;
++ ssp_enable(&ssp[rtd->cpu_dai->id]);
++ break;
++ case SNDRV_PCM_TRIGGER_STOP:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSCR1_P(rtd->cpu_dai->id+1) &= ~SSCR1_TSRE;
++ else
++ SSCR1_P(rtd->cpu_dai->id+1) &= ~SSCR1_RSRE;
++ break;
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ ssp_disable(&ssp[rtd->cpu_dai->id]);
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSCR1_P(rtd->cpu_dai->id+1) &= ~SSCR1_TSRE;
++ else
++ SSCR1_P(rtd->cpu_dai->id+1) &= ~SSCR1_RSRE;
++ break;
++
++ default:
++ ret = -EINVAL;
++ }
++#if 0
++ printk("SSCR0 %x SSCR1 %x SSTO %x SSPSP %x SSSR %x\n",
++ SSCR0_P(rtd->cpu_dai->id+1), SSCR1_P(rtd->cpu_dai->id+1),
++ SSTO_P(rtd->cpu_dai->id+1), SSPSP_P(rtd->cpu_dai->id+1),
++ SSSR_P(rtd->cpu_dai->id+1));
++#endif
++ return ret;
++}
++
++struct snd_soc_cpu_dai pxa_ssp_dai[] = {
++ { .name = "pxa2xx-ssp1",
++ .id = 0,
++ .type = SND_SOC_DAI_PCM,
++ .suspend = pxa2xx_ssp_suspend,
++ .resume = pxa2xx_ssp_resume,
++ .config_sysclk = pxa_ssp_config_sysclk,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .ops = {
++ .startup = pxa2xx_ssp_startup,
++ .shutdown = pxa2xx_ssp_shutdown,
++ .trigger = pxa2xx_ssp_trigger,
++ .hw_params = pxa2xx_ssp_hw_params,},
++ .caps = {
++ .mode = pxa2xx_ssp_modes,
++ .num_modes = ARRAY_SIZE(pxa2xx_ssp_modes),},
++ },
++ { .name = "pxa2xx-ssp2",
++ .id = 1,
++ .type = SND_SOC_DAI_PCM,
++ .suspend = pxa2xx_ssp_suspend,
++ .resume = pxa2xx_ssp_resume,
++ .config_sysclk = pxa_ssp_config_sysclk,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .ops = {
++ .startup = pxa2xx_ssp_startup,
++ .shutdown = pxa2xx_ssp_shutdown,
++ .trigger = pxa2xx_ssp_trigger,
++ .hw_params = pxa2xx_ssp_hw_params,},
++ .caps = {
++ .mode = pxa2xx_ssp_modes,
++ .num_modes = ARRAY_SIZE(pxa2xx_ssp_modes),},
++ },
++ { .name = "pxa2xx-ssp3",
++ .id = 2,
++ .type = SND_SOC_DAI_PCM,
++ .suspend = pxa2xx_ssp_suspend,
++ .resume = pxa2xx_ssp_resume,
++ .config_sysclk = pxa_ssp_config_sysclk,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .ops = {
++ .startup = pxa2xx_ssp_startup,
++ .shutdown = pxa2xx_ssp_shutdown,
++ .trigger = pxa2xx_ssp_trigger,
++ .hw_params = pxa2xx_ssp_hw_params,},
++ .caps = {
++ .mode = pxa2xx_ssp_modes,
++ .num_modes = ARRAY_SIZE(pxa2xx_ssp_modes),},
++ },
++};
++
++EXPORT_SYMBOL_GPL(pxa_ssp_dai);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("pxa2xx SSP/PCM SoC Interface");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/spitz.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/spitz.c
+@@ -0,0 +1,374 @@
++/*
++ * spitz.c -- SoC audio for Sharp SL-Cxx00 models Spitz, Borzoi and Akita
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Authors: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
++ * Richard Purdie <richard@openedhand.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
++ * 30th Nov 2005 Initial version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/timer.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.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/pxa-regs.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/akita.h>
++#include <asm/arch/spitz.h>
++#include <asm/mach-types.h>
++#include "../codecs/wm8750.h"
++#include "pxa2xx-pcm.h"
++
++#define SPITZ_HP 0
++#define SPITZ_MIC 1
++#define SPITZ_LINE 2
++#define SPITZ_HEADSET 3
++#define SPITZ_HP_OFF 4
++#define SPITZ_SPK_ON 0
++#define SPITZ_SPK_OFF 1
++
++ /* audio clock in Hz - rounded from 12.235MHz */
++#define SPITZ_AUDIO_CLOCK 12288000
++
++static int spitz_jack_func;
++static int spitz_spk_func;
++
++static void spitz_ext_control(struct snd_soc_codec *codec)
++{
++ if (spitz_spk_func == SPITZ_SPK_ON)
++ snd_soc_dapm_set_endpoint(codec, "Ext Spk", 1);
++ else
++ snd_soc_dapm_set_endpoint(codec, "Ext Spk", 0);
++
++ /* set up jack connection */
++ switch (spitz_jack_func) {
++ case SPITZ_HP:
++ /* enable and unmute hp jack, disable mic bias */
++ snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
++ set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
++ set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
++ break;
++ case SPITZ_MIC:
++ /* enable mic jack and bias, mute hp */
++ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
++ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
++ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
++ break;
++ case SPITZ_LINE:
++ /* enable line jack, disable mic bias and mute hp */
++ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Line Jack", 1);
++ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
++ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
++ break;
++ case SPITZ_HEADSET:
++ /* enable and unmute headset jack enable mic bias, mute L hp */
++ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
++ snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Headset Jack", 1);
++ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
++ set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
++ break;
++ case SPITZ_HP_OFF:
++
++ /* jack removed, everything off */
++ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
++ snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
++ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
++ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
++ break;
++ }
++ snd_soc_dapm_sync_endpoints(codec);
++}
++
++static int spitz_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->socdev->codec;
++
++ /* check the jack status at stream startup */
++ spitz_ext_control(codec);
++ return 0;
++}
++
++static struct snd_soc_ops spitz_ops = {
++ .startup = spitz_startup,
++};
++
++static int spitz_get_jack(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = spitz_jack_func;
++ return 0;
++}
++
++static int spitz_set_jack(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ if (spitz_jack_func == ucontrol->value.integer.value[0])
++ return 0;
++
++ spitz_jack_func = ucontrol->value.integer.value[0];
++ spitz_ext_control(codec);
++ return 1;
++}
++
++static int spitz_get_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = spitz_spk_func;
++ return 0;
++}
++
++static int spitz_set_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ if (spitz_spk_func == ucontrol->value.integer.value[0])
++ return 0;
++
++ spitz_spk_func = ucontrol->value.integer.value[0];
++ spitz_ext_control(codec);
++ return 1;
++}
++
++static int spitz_mic_bias(struct snd_soc_dapm_widget *w, int event)
++{
++ if (machine_is_borzoi() || machine_is_spitz()) {
++ if (SND_SOC_DAPM_EVENT_ON(event))
++ set_scoop_gpio(&spitzscoop2_device.dev,
++ SPITZ_SCP2_MIC_BIAS);
++ else
++ reset_scoop_gpio(&spitzscoop2_device.dev,
++ SPITZ_SCP2_MIC_BIAS);
++ }
++
++ if (machine_is_akita()) {
++ if (SND_SOC_DAPM_EVENT_ON(event))
++ akita_set_ioexp(&akitaioexp_device.dev,
++ AKITA_IOEXP_MIC_BIAS);
++ else
++ akita_reset_ioexp(&akitaioexp_device.dev,
++ AKITA_IOEXP_MIC_BIAS);
++ }
++ return 0;
++}
++
++/* spitz machine dapm widgets */
++static const struct snd_soc_dapm_widget wm8750_dapm_widgets[] = {
++ SND_SOC_DAPM_HP("Headphone Jack", NULL),
++ SND_SOC_DAPM_MIC("Mic Jack", spitz_mic_bias),
++ SND_SOC_DAPM_SPK("Ext Spk", NULL),
++ SND_SOC_DAPM_LINE("Line Jack", NULL),
++
++ /* headset is a mic and mono headphone */
++ SND_SOC_DAPM_HP("Headset Jack", NULL),
++};
++
++/* Spitz machine audio_map */
++static const char *audio_map[][3] = {
++
++ /* headphone connected to LOUT1, ROUT1 */
++ {"Headphone Jack", NULL, "LOUT1"},
++ {"Headphone Jack", NULL, "ROUT1"},
++
++ /* headset connected to ROUT1 and LINPUT1 with bias (def below) */
++ {"Headset Jack", NULL, "ROUT1"},
++
++ /* ext speaker connected to LOUT2, ROUT2 */
++ {"Ext Spk", NULL , "ROUT2"},
++ {"Ext Spk", NULL , "LOUT2"},
++
++ /* mic is connected to input 1 - with bias */
++ {"LINPUT1", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Mic Jack"},
++
++ /* line is connected to input 1 - no bias */
++ {"LINPUT1", NULL, "Line Jack"},
++
++ {NULL, NULL, NULL},
++};
++
++static const char *jack_function[] = {"Headphone", "Mic", "Line", "Headset",
++ "Off"};
++static const char *spk_function[] = {"On", "Off"};
++static const struct soc_enum spitz_enum[] = {
++ SOC_ENUM_SINGLE_EXT(5, jack_function),
++ SOC_ENUM_SINGLE_EXT(2, spk_function),
++};
++
++static const struct snd_kcontrol_new wm8750_spitz_controls[] = {
++ SOC_ENUM_EXT("Jack Function", spitz_enum[0], spitz_get_jack,
++ spitz_set_jack),
++ SOC_ENUM_EXT("Speaker Function", spitz_enum[1], spitz_get_spk,
++ spitz_set_spk),
++};
++
++/*
++ * Logic for a wm8750 as connected on a Sharp SL-Cxx00 Device
++ */
++static int spitz_wm8750_init(struct snd_soc_codec *codec)
++{
++ int i, err;
++
++ /* NC codec pins */
++ snd_soc_dapm_set_endpoint(codec, "RINPUT1", 0);
++ snd_soc_dapm_set_endpoint(codec, "LINPUT2", 0);
++ snd_soc_dapm_set_endpoint(codec, "RINPUT2", 0);
++ snd_soc_dapm_set_endpoint(codec, "LINPUT3", 0);
++ snd_soc_dapm_set_endpoint(codec, "RINPUT3", 0);
++ snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
++ snd_soc_dapm_set_endpoint(codec, "MONO", 0);
++
++ /* Add spitz specific controls */
++ for (i = 0; i < ARRAY_SIZE(wm8750_spitz_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8750_spitz_controls[i], codec, NULL));
++ if (err < 0)
++ return err;
++ }
++
++ /* Add spitz specific widgets */
++ for (i = 0; i < ARRAY_SIZE(wm8750_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm8750_dapm_widgets[i]);
++ }
++
++ /* Set up spitz specific audio path audio_map */
++ 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]);
++ }
++
++ snd_soc_dapm_sync_endpoints(codec);
++ return 0;
++}
++
++static unsigned int spitz_config_sysclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++{
++ if (info->bclk_master & SND_SOC_DAIFMT_CBS_CFS) {
++ /* pxa2xx is i2s master */
++ switch (info->rate) {
++ case 11025:
++ case 22050:
++ case 44100:
++ case 88200:
++ /* configure codec digital filters
++ * for 11.025, 22.05, 44.1, 88.2 */
++ rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
++ 11289600);
++ break;
++ default:
++ /* configure codec digital filters for all other rates */
++ rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
++ SPITZ_AUDIO_CLOCK);
++ break;
++ }
++ /* configure pxa2xx i2s interface clocks as master */
++ return rtd->cpu_dai->config_sysclk(rtd->cpu_dai, info,
++ SPITZ_AUDIO_CLOCK);
++ } else {
++ /* codec is i2s master - only configure codec DAI clock */
++ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
++ SPITZ_AUDIO_CLOCK);
++ }
++}
++
++/* spitz digital audio interface glue - connects codec <--> CPU */
++static struct snd_soc_dai_link spitz_dai = {
++ .name = "wm8750",
++ .stream_name = "WM8750",
++ .cpu_dai = &pxa_i2s_dai,
++ .codec_dai = &wm8750_dai,
++ .init = spitz_wm8750_init,
++ .config_sysclk = spitz_config_sysclk,
++};
++
++/* spitz audio machine driver */
++static struct snd_soc_machine snd_soc_machine_spitz = {
++ .name = "Spitz",
++ .dai_link = &spitz_dai,
++ .num_links = 1,
++ .ops = &spitz_ops,
++};
++
++/* spitz audio private data */
++static struct wm8750_setup_data spitz_wm8750_setup = {
++ .i2c_address = 0x1b,
++};
++
++/* spitz audio subsystem */
++static struct snd_soc_device spitz_snd_devdata = {
++ .machine = &snd_soc_machine_spitz,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm8750,
++ .codec_data = &spitz_wm8750_setup,
++};
++
++static struct platform_device *spitz_snd_device;
++
++static int __init spitz_init(void)
++{
++ int ret;
++
++ if (!(machine_is_spitz() || machine_is_borzoi() || machine_is_akita()))
++ return -ENODEV;
++
++ spitz_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!spitz_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(spitz_snd_device, &spitz_snd_devdata);
++ spitz_snd_devdata.dev = &spitz_snd_device->dev;
++ ret = platform_device_add(spitz_snd_device);
++
++ if (ret)
++ platform_device_put(spitz_snd_device);
++
++ return ret;
++}
++
++static void __exit spitz_exit(void)
++{
++ platform_device_unregister(spitz_snd_device);
++}
++
++module_init(spitz_init);
++module_exit(spitz_exit);
++
++MODULE_AUTHOR("Richard Purdie");
++MODULE_DESCRIPTION("ALSA SoC Spitz");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/pxa/tosa.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/pxa/tosa.c
+@@ -0,0 +1,287 @@
++/*
++ * tosa.c -- SoC audio for Tosa
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Authors: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
++ * Richard Purdie <richard@openedhand.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
++ * 30th Nov 2005 Initial version.
++ *
++ * GPIO's
++ * 1 - Jack Insertion
++ * 5 - Hookswitch (headset answer/hang up switch)
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/device.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/tmio.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/audio.h>
++#include <asm/arch/tosa.h>
++
++#include "../codecs/wm9712.h"
++#include "pxa2xx-pcm.h"
++
++static struct snd_soc_machine tosa;
++
++#define TOSA_HP 0
++#define TOSA_MIC_INT 1
++#define TOSA_HEADSET 2
++#define TOSA_HP_OFF 3
++#define TOSA_SPK_ON 0
++#define TOSA_SPK_OFF 1
++
++static int tosa_jack_func;
++static int tosa_spk_func;
++
++static void tosa_ext_control(struct snd_soc_codec *codec)
++{
++ int spk = 0, mic_int = 0, hp = 0, hs = 0;
++
++ /* set up jack connection */
++ switch (tosa_jack_func) {
++ case TOSA_HP:
++ hp = 1;
++ break;
++ case TOSA_MIC_INT:
++ mic_int = 1;
++ break;
++ case TOSA_HEADSET:
++ hs = 1;
++ break;
++ }
++
++ if (tosa_spk_func == TOSA_SPK_ON)
++ spk = 1;
++
++ snd_soc_dapm_set_endpoint(codec, "Speaker", spk);
++ snd_soc_dapm_set_endpoint(codec, "Mic (Internal)", mic_int);
++ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", hp);
++ snd_soc_dapm_set_endpoint(codec, "Headset Jack", hs);
++ snd_soc_dapm_sync_endpoints(codec);
++}
++
++static int tosa_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->socdev->codec;
++
++ /* check the jack status at stream startup */
++ tosa_ext_control(codec);
++ return 0;
++}
++
++static struct snd_soc_ops tosa_ops = {
++ .startup = tosa_startup,
++};
++
++static int tosa_get_jack(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = tosa_jack_func;
++ return 0;
++}
++
++static int tosa_set_jack(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ if (tosa_jack_func == ucontrol->value.integer.value[0])
++ return 0;
++
++ tosa_jack_func = ucontrol->value.integer.value[0];
++ tosa_ext_control(codec);
++ return 1;
++}
++
++static int tosa_get_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ ucontrol->value.integer.value[0] = tosa_spk_func;
++ return 0;
++}
++
++static int tosa_set_spk(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++
++ if (tosa_spk_func == ucontrol->value.integer.value[0])
++ return 0;
++
++ tosa_spk_func = ucontrol->value.integer.value[0];
++ tosa_ext_control(codec);
++ return 1;
++}
++
++/* tosa dapm event handlers */
++static int tosa_hp_event(struct snd_soc_dapm_widget *w, int event)
++{
++ if (SND_SOC_DAPM_EVENT_ON(event))
++ set_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_L_MUTE);
++ else
++ reset_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_L_MUTE);
++ return 0;
++}
++
++/* tosa machine dapm widgets */
++static const struct snd_soc_dapm_widget tosa_dapm_widgets[] = {
++SND_SOC_DAPM_HP("Headphone Jack", tosa_hp_event),
++SND_SOC_DAPM_HP("Headset Jack", NULL),
++SND_SOC_DAPM_MIC("Mic (Internal)", NULL),
++SND_SOC_DAPM_SPK("Speaker", NULL),
++};
++
++/* tosa audio map */
++static const char *audio_map[][3] = {
++
++ /* headphone connected to HPOUTL, HPOUTR */
++ {"Headphone Jack", NULL, "HPOUTL"},
++ {"Headphone Jack", NULL, "HPOUTR"},
++
++ /* ext speaker connected to LOUT2, ROUT2 */
++ {"Speaker", NULL, "LOUT2"},
++ {"Speaker", NULL, "ROUT2"},
++
++ /* internal mic is connected to mic1, mic2 differential - with bias */
++ {"MIC1", NULL, "Mic Bias"},
++ {"MIC2", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Mic (Internal)"},
++
++ /* headset is connected to HPOUTR, and LINEINR with bias */
++ {"Headset Jack", NULL, "HPOUTR"},
++ {"LINEINR", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Headset Jack"},
++
++ {NULL, NULL, NULL},
++};
++
++static const char *jack_function[] = {"Headphone", "Mic", "Line", "Headset",
++ "Off"};
++static const char *spk_function[] = {"On", "Off"};
++static const struct soc_enum tosa_enum[] = {
++ SOC_ENUM_SINGLE_EXT(5, jack_function),
++ SOC_ENUM_SINGLE_EXT(2, spk_function),
++};
++
++static const struct snd_kcontrol_new tosa_controls[] = {
++ SOC_ENUM_EXT("Jack Function", tosa_enum[0], tosa_get_jack,
++ tosa_set_jack),
++ SOC_ENUM_EXT("Speaker Function", tosa_enum[1], tosa_get_spk,
++ tosa_set_spk),
++};
++
++static int tosa_ac97_init(struct snd_soc_codec *codec)
++{
++ int i, err;
++
++ snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
++ snd_soc_dapm_set_endpoint(codec, "MONOOUT", 0);
++
++ /* add tosa specific controls */
++ for (i = 0; i < ARRAY_SIZE(tosa_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&tosa_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++
++ /* add tosa specific widgets */
++ for (i = 0; i < ARRAY_SIZE(tosa_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &tosa_dapm_widgets[i]);
++ }
++
++ /* set up tosa specific audio path audio_map */
++ 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]);
++ }
++
++ snd_soc_dapm_sync_endpoints(codec);
++ return 0;
++}
++
++static struct snd_soc_dai_link tosa_dai[] = {
++{
++ .name = "AC97",
++ .stream_name = "AC97 HiFi",
++ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
++ .codec_dai = &wm9712_dai[WM9712_DAI_AC97_HIFI],
++ .init = tosa_ac97_init,
++},
++{
++ .name = "AC97 Aux",
++ .stream_name = "AC97 Aux",
++ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
++ .codec_dai = &wm9712_dai[WM9712_DAI_AC97_AUX],
++},
++};
++
++static struct snd_soc_machine tosa = {
++ .name = "Tosa",
++ .dai_link = tosa_dai,
++ .num_links = ARRAY_SIZE(tosa_dai),
++ .ops = &tosa_ops,
++};
++
++static struct snd_soc_device tosa_snd_devdata = {
++ .machine = &tosa,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_wm9712,
++};
++
++static struct platform_device *tosa_snd_device;
++
++static int __init tosa_init(void)
++{
++ int ret;
++
++ if (!machine_is_tosa())
++ return -ENODEV;
++
++ tosa_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!tosa_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(tosa_snd_device, &tosa_snd_devdata);
++ tosa_snd_devdata.dev = &tosa_snd_device->dev;
++ ret = platform_device_add(tosa_snd_device);
++
++ if (ret)
++ platform_device_put(tosa_snd_device);
++
++ return ret;
++}
++
++static void __exit tosa_exit(void)
++{
++ platform_device_unregister(tosa_snd_device);
++}
++
++module_init(tosa_init);
++module_exit(tosa_exit);
++
++/* Module information */
++MODULE_AUTHOR("Richard Purdie");
++MODULE_DESCRIPTION("ALSA SoC Tosa");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/soc-dapm.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/soc-dapm.c
+@@ -0,0 +1,1327 @@
++/*
++ * soc-dapm.c -- ALSA SoC Dynamic Audio Power Management
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or 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
++ * 12th Aug 2005 Initial version.
++ * 25th Oct 2005 Implemented path power domain.
++ * 18th Dec 2005 Implemented machine and stream level power domain.
++ *
++ * Features:
++ * o Changes power status of internal codec blocks depending on the
++ * dynamic configuration of codec internal audio paths and active
++ * DAC's/ADC's.
++ * o Platform power domain - can support external components i.e. amps and
++ * mic/meadphone insertion events.
++ * o Automatic Mic Bias support
++ * o Jack insertion power event initiation - e.g. hp insertion will enable
++ * sinks, dacs, etc
++ * o Delayed powerdown of audio susbsytem to reduce pops between a quick
++ * device reopen.
++ *
++ * Todo:
++ * o DAPM power change sequencing - allow for configurable per
++ * codec sequences.
++ * o Support for analogue bias optimisation.
++ * o Support for reduced codec oversampling rates.
++ * o Support for reduced codec bias currents.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/bitops.h>
++#include <linux/platform_device.h>
++#include <linux/jiffies.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++
++/* debug */
++#define DAPM_DEBUG 0
++#if DAPM_DEBUG
++#define dump_dapm(codec, action) dbg_dump_dapm(codec, action)
++#define dbg(format, arg...) printk(format, ## arg)
++#else
++#define dump_dapm(codec, action)
++#define dbg(format, arg...)
++#endif
++
++#define POP_DEBUG 0
++#if POP_DEBUG
++#define POP_TIME 500 /* 500 msecs - change if pop debug is too fast */
++#define pop_wait(time) schedule_timeout_interruptible(msecs_to_jiffies(time))
++#define pop_dbg(format, arg...) printk(format, ## arg); pop_wait(POP_TIME)
++#else
++#define pop_dbg(format, arg...)
++#define pop_wait(time)
++#endif
++
++/* dapm power sequences - make this per codec in the future */
++static int dapm_up_seq[] = {
++ snd_soc_dapm_pre, snd_soc_dapm_micbias, snd_soc_dapm_mic,
++ snd_soc_dapm_mux, snd_soc_dapm_dac, snd_soc_dapm_mixer, snd_soc_dapm_pga,
++ snd_soc_dapm_adc, snd_soc_dapm_hp, snd_soc_dapm_spk, snd_soc_dapm_post
++};
++static int dapm_down_seq[] = {
++ snd_soc_dapm_pre, snd_soc_dapm_adc, snd_soc_dapm_hp, snd_soc_dapm_spk,
++ snd_soc_dapm_pga, snd_soc_dapm_mixer, snd_soc_dapm_dac, snd_soc_dapm_mic,
++ snd_soc_dapm_micbias, snd_soc_dapm_mux, snd_soc_dapm_post
++};
++
++static int dapm_status = 1;
++module_param(dapm_status, int, 0);
++MODULE_PARM_DESC(dapm_status, "enable DPM sysfs entries");
++
++/* create a new dapm widget */
++static struct snd_soc_dapm_widget *dapm_cnew_widget(
++ const struct snd_soc_dapm_widget *_widget)
++{
++ struct snd_soc_dapm_widget* widget;
++ widget = kmalloc(sizeof(struct snd_soc_dapm_widget), GFP_KERNEL);
++ if (!widget)
++ return NULL;
++
++ memcpy(widget, _widget, sizeof(struct snd_soc_dapm_widget));
++ return widget;
++}
++
++/* set up initial codec paths */
++static void dapm_set_path_status(struct snd_soc_dapm_widget *w,
++ struct snd_soc_dapm_path *p, int i)
++{
++ switch (w->id) {
++ case snd_soc_dapm_switch:
++ case snd_soc_dapm_mixer: {
++ int val;
++ int reg = w->kcontrols[i].private_value & 0xff;
++ int shift = (w->kcontrols[i].private_value >> 8) & 0x0f;
++ int mask = (w->kcontrols[i].private_value >> 16) & 0xff;
++ int invert = (w->kcontrols[i].private_value >> 24) & 0x01;
++
++ val = snd_soc_read(w->codec, reg);
++ val = (val >> shift) & mask;
++
++ if ((invert && !val) || (!invert && val))
++ p->connect = 1;
++ else
++ p->connect = 0;
++ }
++ break;
++ case snd_soc_dapm_mux: {
++ struct soc_enum *e = (struct soc_enum *)w->kcontrols[i].private_value;
++ int val, item, bitmask;
++
++ for (bitmask = 1; bitmask < e->mask; bitmask <<= 1)
++ ;
++ val = snd_soc_read(w->codec, e->reg);
++ item = (val >> e->shift_l) & (bitmask - 1);
++
++ p->connect = 0;
++ for (i = 0; i < e->mask; i++) {
++ if (!(strcmp(p->name, e->texts[i])) && item == i)
++ p->connect = 1;
++ }
++ }
++ break;
++ /* does not effect routing - always connected */
++ case snd_soc_dapm_pga:
++ case snd_soc_dapm_output:
++ case snd_soc_dapm_adc:
++ case snd_soc_dapm_input:
++ case snd_soc_dapm_dac:
++ case snd_soc_dapm_micbias:
++ case snd_soc_dapm_vmid:
++ p->connect = 1;
++ break;
++ /* does effect routing - dynamically connected */
++ case snd_soc_dapm_hp:
++ case snd_soc_dapm_mic:
++ case snd_soc_dapm_spk:
++ case snd_soc_dapm_line:
++ case snd_soc_dapm_pre:
++ case snd_soc_dapm_post:
++ p->connect = 0;
++ break;
++ }
++}
++
++/* connect mux widget to it's interconnecting audio paths */
++static int dapm_connect_mux(struct snd_soc_codec *codec,
++ struct snd_soc_dapm_widget *src, struct snd_soc_dapm_widget *dest,
++ struct snd_soc_dapm_path *path, const char *control_name,
++ const struct snd_kcontrol_new *kcontrol)
++{
++ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
++ int i;
++
++ for (i = 0; i < e->mask; i++) {
++ if (!(strcmp(control_name, e->texts[i]))) {
++ list_add(&path->list, &codec->dapm_paths);
++ list_add(&path->list_sink, &dest->sources);
++ list_add(&path->list_source, &src->sinks);
++ path->name = (char*)e->texts[i];
++ dapm_set_path_status(dest, path, 0);
++ return 0;
++ }
++ }
++
++ return -ENODEV;
++}
++
++/* connect mixer widget to it's interconnecting audio paths */
++static int dapm_connect_mixer(struct snd_soc_codec *codec,
++ struct snd_soc_dapm_widget *src, struct snd_soc_dapm_widget *dest,
++ struct snd_soc_dapm_path *path, const char *control_name)
++{
++ int i;
++
++ /* search for mixer kcontrol */
++ for (i = 0; i < dest->num_kcontrols; i++) {
++ if (!strcmp(control_name, dest->kcontrols[i].name)) {
++ list_add(&path->list, &codec->dapm_paths);
++ list_add(&path->list_sink, &dest->sources);
++ list_add(&path->list_source, &src->sinks);
++ path->name = dest->kcontrols[i].name;
++ dapm_set_path_status(dest, path, i);
++ return 0;
++ }
++ }
++ return -ENODEV;
++}
++
++/* update dapm codec register bits */
++static int dapm_update_bits(struct snd_soc_dapm_widget *widget)
++{
++ int change, power;
++ unsigned short old, new;
++ struct snd_soc_codec *codec = widget->codec;
++
++ /* check for valid widgets */
++ if (widget->reg < 0 || widget->id == snd_soc_dapm_input ||
++ widget->id == snd_soc_dapm_output ||
++ widget->id == snd_soc_dapm_hp ||
++ widget->id == snd_soc_dapm_mic ||
++ widget->id == snd_soc_dapm_line ||
++ widget->id == snd_soc_dapm_spk)
++ return 0;
++
++ power = widget->power;
++ if (widget->invert)
++ power = (power ? 0:1);
++
++ old = snd_soc_read(codec, widget->reg);
++ new = (old & ~(0x1 << widget->shift)) | (power << widget->shift);
++
++ change = old != new;
++ if (change) {
++ pop_dbg("pop test %s : %s in %d ms\n", widget->name,
++ widget->power ? "on" : "off", POP_TIME);
++ snd_soc_write(codec, widget->reg, new);
++ pop_wait(POP_TIME);
++ }
++ dbg("reg old %x new %x change %d\n", old, new, change);
++ return change;
++}
++
++/* ramps the volume up or down to minimise pops before or after a
++ * DAPM power event */
++static int dapm_set_pga(struct snd_soc_dapm_widget *widget, int power)
++{
++ const struct snd_kcontrol_new *k = widget->kcontrols;
++
++ if (widget->muted && !power)
++ return 0;
++ if (!widget->muted && power)
++ return 0;
++
++ if (widget->num_kcontrols && k) {
++ int reg = k->private_value & 0xff;
++ int shift = (k->private_value >> 8) & 0x0f;
++ int mask = (k->private_value >> 16) & 0xff;
++ int invert = (k->private_value >> 24) & 0x01;
++
++ if (power) {
++ int i;
++ /* power up has happended, increase volume to last level */
++ if (invert) {
++ for (i = mask; i > widget->saved_value; i--)
++ snd_soc_update_bits(widget->codec, reg, mask, i);
++ } else {
++ for (i = 0; i < widget->saved_value; i++)
++ snd_soc_update_bits(widget->codec, reg, mask, i);
++ }
++ widget->muted = 0;
++ } else {
++ /* power down is about to occur, decrease volume to mute */
++ int val = snd_soc_read(widget->codec, reg);
++ int i = widget->saved_value = (val >> shift) & mask;
++ if (invert) {
++ for (; i < mask; i++)
++ snd_soc_update_bits(widget->codec, reg, mask, i);
++ } else {
++ for (; i > 0; i--)
++ snd_soc_update_bits(widget->codec, reg, mask, i);
++ }
++ widget->muted = 1;
++ }
++ }
++ return 0;
++}
++
++/* create new dapm mixer control */
++static int dapm_new_mixer(struct snd_soc_codec *codec,
++ struct snd_soc_dapm_widget *w)
++{
++ int i, ret = 0;
++ char name[32];
++ struct snd_soc_dapm_path *path;
++
++ /* add kcontrol */
++ for (i = 0; i < w->num_kcontrols; i++) {
++
++ /* match name */
++ list_for_each_entry(path, &w->sources, list_sink) {
++
++ /* mixer/mux paths name must match control name */
++ if (path->name != (char*)w->kcontrols[i].name)
++ continue;
++
++ /* add dapm control with long name */
++ snprintf(name, 32, "%s %s", w->name, w->kcontrols[i].name);
++ path->long_name = kstrdup (name, GFP_KERNEL);
++ if (path->long_name == NULL)
++ return -ENOMEM;
++
++ path->kcontrol = snd_soc_cnew(&w->kcontrols[i], w,
++ path->long_name);
++ ret = snd_ctl_add(codec->card, path->kcontrol);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: failed to add dapm kcontrol %s\n",
++ path->long_name);
++ kfree(path->long_name);
++ path->long_name = NULL;
++ return ret;
++ }
++ }
++ }
++ return ret;
++}
++
++/* create new dapm mux control */
++static int dapm_new_mux(struct snd_soc_codec *codec,
++ struct snd_soc_dapm_widget *w)
++{
++ struct snd_soc_dapm_path *path = NULL;
++ struct snd_kcontrol *kcontrol;
++ int ret = 0;
++
++ if (!w->num_kcontrols) {
++ printk(KERN_ERR "asoc: mux %s has no controls\n", w->name);
++ return -EINVAL;
++ }
++
++ kcontrol = snd_soc_cnew(&w->kcontrols[0], w, w->name);
++ ret = snd_ctl_add(codec->card, kcontrol);
++ if (ret < 0)
++ goto err;
++
++ list_for_each_entry(path, &w->sources, list_sink)
++ path->kcontrol = kcontrol;
++
++ return ret;
++
++err:
++ printk(KERN_ERR "asoc: failed to add kcontrol %s\n", w->name);
++ return ret;
++}
++
++/* create new dapm volume control */
++static int dapm_new_pga(struct snd_soc_codec *codec,
++ struct snd_soc_dapm_widget *w)
++{
++ struct snd_kcontrol *kcontrol;
++ int ret = 0;
++
++ if (!w->num_kcontrols)
++ return -EINVAL;
++
++ kcontrol = snd_soc_cnew(&w->kcontrols[0], w, w->name);
++ ret = snd_ctl_add(codec->card, kcontrol);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: failed to add kcontrol %s\n", w->name);
++ return ret;
++ }
++
++ return ret;
++}
++
++/* reset 'walked' bit for each dapm path */
++static inline void dapm_clear_walk(struct snd_soc_codec *codec)
++{
++ struct snd_soc_dapm_path *p;
++
++ list_for_each_entry(p, &codec->dapm_paths, list)
++ p->walked = 0;
++}
++
++/*
++ * Recursively check for a completed path to an active or physically connected
++ * output widget. Returns number of complete paths.
++ */
++static int is_connected_output_ep(struct snd_soc_dapm_widget *widget)
++{
++ struct snd_soc_dapm_path *path;
++ int con = 0;
++
++ if (widget->id == snd_soc_dapm_adc && widget->active)
++ return 1;
++
++ if (widget->connected) {
++ /* connected pin ? */
++ if (widget->id == snd_soc_dapm_output && !widget->ext)
++ return 1;
++
++ /* connected jack or spk ? */
++ if (widget->id == snd_soc_dapm_hp || widget->id == snd_soc_dapm_spk ||
++ widget->id == snd_soc_dapm_line)
++ return 1;
++ }
++
++ list_for_each_entry(path, &widget->sinks, list_source) {
++ if (path->walked)
++ continue;
++
++ if (path->sink && path->connect) {
++ path->walked = 1;
++ con += is_connected_output_ep(path->sink);
++ }
++ }
++
++ return con;
++}
++
++/*
++ * Recursively check for a completed path to an active or physically connected
++ * input widget. Returns number of complete paths.
++ */
++static int is_connected_input_ep(struct snd_soc_dapm_widget *widget)
++{
++ struct snd_soc_dapm_path *path;
++ int con = 0;
++
++ /* active stream ? */
++ if (widget->id == snd_soc_dapm_dac && widget->active)
++ return 1;
++
++ if (widget->connected) {
++ /* connected pin ? */
++ if (widget->id == snd_soc_dapm_input && !widget->ext)
++ return 1;
++
++ /* connected VMID/Bias for lower pops */
++ if (widget->id == snd_soc_dapm_vmid)
++ return 1;
++
++ /* connected jack ? */
++ if (widget->id == snd_soc_dapm_mic || widget->id == snd_soc_dapm_line)
++ return 1;
++ }
++
++ list_for_each_entry(path, &widget->sources, list_sink) {
++ if (path->walked)
++ continue;
++
++ if (path->source && path->connect) {
++ path->walked = 1;
++ con += is_connected_input_ep(path->source);
++ }
++ }
++
++ return con;
++}
++
++/*
++ * Scan each dapm widget for complete audio path.
++ * A complete path is a route that has valid endpoints i.e.:-
++ *
++ * o DAC to output pin.
++ * o Input Pin to ADC.
++ * o Input pin to Output pin (bypass, sidetone)
++ * o DAC to ADC (loopback).
++ */
++int dapm_power_widgets(struct snd_soc_codec *codec, int event)
++{
++ struct snd_soc_dapm_widget *w;
++ int in, out, i, c = 1, *seq = NULL, ret = 0, power_change, power;
++
++ /* do we have a sequenced stream event */
++ if (event == SND_SOC_DAPM_STREAM_START) {
++ c = ARRAY_SIZE(dapm_up_seq);
++ seq = dapm_up_seq;
++ } else if (event == SND_SOC_DAPM_STREAM_STOP) {
++ c = ARRAY_SIZE(dapm_down_seq);
++ seq = dapm_down_seq;
++ }
++
++ for(i = 0; i < c; i++) {
++ list_for_each_entry(w, &codec->dapm_widgets, list) {
++
++ /* is widget in stream order */
++ if (seq && seq[i] && w->id != seq[i])
++ continue;
++
++ /* vmid - no action */
++ if (w->id == snd_soc_dapm_vmid)
++ continue;
++
++ /* active ADC */
++ if (w->id == snd_soc_dapm_adc && w->active) {
++ in = is_connected_input_ep(w);
++ dapm_clear_walk(w->codec);
++ w->power = (in != 0) ? 1 : 0;
++ dapm_update_bits(w);
++ continue;
++ }
++
++ /* active DAC */
++ if (w->id == snd_soc_dapm_dac && w->active) {
++ out = is_connected_output_ep(w);
++ dapm_clear_walk(w->codec);
++ w->power = (out != 0) ? 1 : 0;
++ dapm_update_bits(w);
++ continue;
++ }
++
++ /* programmable gain/attenuation */
++ if (w->id == snd_soc_dapm_pga) {
++ int on;
++ in = is_connected_input_ep(w);
++ dapm_clear_walk(w->codec);
++ out = is_connected_output_ep(w);
++ dapm_clear_walk(w->codec);
++ w->power = on = (out != 0 && in != 0) ? 1 : 0;
++
++ if (!on)
++ dapm_set_pga(w, on); /* lower volume to reduce pops */
++ dapm_update_bits(w);
++ if (on)
++ dapm_set_pga(w, on); /* restore volume from zero */
++
++ continue;
++ }
++
++ /* pre and post event widgets */
++ if (w->id == snd_soc_dapm_pre) {
++ if (!w->event)
++ continue;
++
++ if (event == SND_SOC_DAPM_STREAM_START) {
++ ret = w->event(w, SND_SOC_DAPM_PRE_PMU);
++ if (ret < 0)
++ return ret;
++ } else if (event == SND_SOC_DAPM_STREAM_STOP) {
++ ret = w->event(w, SND_SOC_DAPM_PRE_PMD);
++ if (ret < 0)
++ return ret;
++ }
++ continue;
++ }
++ if (w->id == snd_soc_dapm_post) {
++ if (!w->event)
++ continue;
++
++ if (event == SND_SOC_DAPM_STREAM_START) {
++ ret = w->event(w, SND_SOC_DAPM_POST_PMU);
++ if (ret < 0)
++ return ret;
++ } else if (event == SND_SOC_DAPM_STREAM_STOP) {
++ ret = w->event(w, SND_SOC_DAPM_POST_PMD);
++ if (ret < 0)
++ return ret;
++ }
++ continue;
++ }
++
++ /* all other widgets */
++ in = is_connected_input_ep(w);
++ dapm_clear_walk(w->codec);
++ out = is_connected_output_ep(w);
++ dapm_clear_walk(w->codec);
++ power = (out != 0 && in != 0) ? 1 : 0;
++ power_change = (w->power == power) ? 0: 1;
++ w->power = power;
++
++ /* call any power change event handlers */
++ if (power_change) {
++ if (w->event) {
++ dbg("power %s event for %s flags %x\n",
++ w->power ? "on" : "off", w->name, w->event_flags);
++ if (power) {
++ /* power up event */
++ if (w->event_flags & SND_SOC_DAPM_PRE_PMU) {
++ ret = w->event(w, SND_SOC_DAPM_PRE_PMU);
++ if (ret < 0)
++ return ret;
++ }
++ dapm_update_bits(w);
++ if (w->event_flags & SND_SOC_DAPM_POST_PMU){
++ ret = w->event(w, SND_SOC_DAPM_POST_PMU);
++ if (ret < 0)
++ return ret;
++ }
++ } else {
++ /* power down event */
++ if (w->event_flags & SND_SOC_DAPM_PRE_PMD) {
++ ret = w->event(w, SND_SOC_DAPM_PRE_PMD);
++ if (ret < 0)
++ return ret;
++ }
++ dapm_update_bits(w);
++ if (w->event_flags & SND_SOC_DAPM_POST_PMD) {
++ ret = w->event(w, SND_SOC_DAPM_POST_PMD);
++ if (ret < 0)
++ return ret;
++ }
++ }
++ } else
++ /* no event handler */
++ dapm_update_bits(w);
++ }
++ }
++ }
++
++ return ret;
++}
++
++#if DAPM_DEBUG
++static void dbg_dump_dapm(struct snd_soc_codec* codec, const char *action)
++{
++ struct snd_soc_dapm_widget *w;
++ struct snd_soc_dapm_path *p = NULL;
++ int in, out;
++
++ printk("DAPM %s %s\n", codec->name, action);
++
++ list_for_each_entry(w, &codec->dapm_widgets, list) {
++
++ /* only display widgets that effect routing */
++ switch (w->id) {
++ case snd_soc_dapm_pre:
++ case snd_soc_dapm_post:
++ case snd_soc_dapm_vmid:
++ continue;
++ case snd_soc_dapm_mux:
++ case snd_soc_dapm_output:
++ case snd_soc_dapm_input:
++ case snd_soc_dapm_switch:
++ case snd_soc_dapm_hp:
++ case snd_soc_dapm_mic:
++ case snd_soc_dapm_spk:
++ case snd_soc_dapm_line:
++ case snd_soc_dapm_micbias:
++ case snd_soc_dapm_dac:
++ case snd_soc_dapm_adc:
++ case snd_soc_dapm_pga:
++ case snd_soc_dapm_mixer:
++ if (w->name) {
++ in = is_connected_input_ep(w);
++ dapm_clear_walk(w->codec);
++ out = is_connected_output_ep(w);
++ dapm_clear_walk(w->codec);
++ printk("%s: %s in %d out %d\n", w->name,
++ w->power ? "On":"Off",in, out);
++
++ list_for_each_entry(p, &w->sources, list_sink) {
++ if (p->connect)
++ printk(" in %s %s\n", p->name ? p->name : "static",
++ p->source->name);
++ }
++ list_for_each_entry(p, &w->sinks, list_source) {
++ p = list_entry(lp, struct snd_soc_dapm_path, list_source);
++ if (p->connect)
++ printk(" out %s %s\n", p->name ? p->name : "static",
++ p->sink->name);
++ }
++ }
++ break;
++ }
++ }
++}
++#endif
++
++/* test and update the power status of a mux widget */
++int dapm_mux_update_power(struct snd_soc_dapm_widget *widget,
++ struct snd_kcontrol *kcontrol, int mask, int val, struct soc_enum* e)
++{
++ struct snd_soc_dapm_path *path;
++ int found = 0;
++
++ if (widget->id != snd_soc_dapm_mux)
++ return -ENODEV;
++
++ if (!snd_soc_test_bits(widget->codec, e->reg, mask, val))
++ return 0;
++
++ /* find dapm widget path assoc with kcontrol */
++ list_for_each_entry(path, &widget->codec->dapm_paths, list) {
++ if (path->kcontrol != kcontrol)
++ continue;
++
++ if (!path->name || ! e->texts[val])
++ continue;
++
++ found = 1;
++ /* we now need to match the string in the enum to the path */
++ if (!(strcmp(path->name, e->texts[val])))
++ path->connect = 1; /* new connection */
++ else
++ path->connect = 0; /* old connection must be powered down */
++ }
++
++ if (found)
++ dapm_power_widgets(widget->codec, SND_SOC_DAPM_STREAM_NOP);
++
++ return 0;
++}
++EXPORT_SYMBOL_GPL(dapm_mux_update_power);
++
++/* test and update the power status of a mixer widget */
++int dapm_mixer_update_power(struct snd_soc_dapm_widget *widget,
++ struct snd_kcontrol *kcontrol, int reg, int val_mask, int val, int invert)
++{
++ struct snd_soc_dapm_path *path;
++ int found = 0;
++
++ if (widget->id != snd_soc_dapm_mixer)
++ return -ENODEV;
++
++ if (!snd_soc_test_bits(widget->codec, reg, val_mask, val))
++ return 0;
++
++ /* find dapm widget path assoc with kcontrol */
++ list_for_each_entry(path, &widget->codec->dapm_paths, list) {
++ if (path->kcontrol != kcontrol)
++ continue;
++
++ /* found, now check type */
++ found = 1;
++ if (val)
++ /* new connection */
++ path->connect = invert ? 0:1;
++ else
++ /* old connection must be powered down */
++ path->connect = invert ? 1:0;
++ break;
++ }
++
++ if (found)
++ dapm_power_widgets(widget->codec, SND_SOC_DAPM_STREAM_NOP);
++
++ return 0;
++}
++EXPORT_SYMBOL_GPL(dapm_mixer_update_power);
++
++/* show dapm widget status in sys fs */
++static ssize_t dapm_widget_show(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ struct snd_soc_device *devdata = dev_get_drvdata(dev);
++ struct snd_soc_codec *codec = devdata->codec;
++ struct snd_soc_dapm_widget *w;
++ int count = 0;
++ char *state = "not set";
++
++ list_for_each_entry(w, &codec->dapm_widgets, list) {
++
++ /* only display widgets that burnm power */
++ switch (w->id) {
++ case snd_soc_dapm_hp:
++ case snd_soc_dapm_mic:
++ case snd_soc_dapm_spk:
++ case snd_soc_dapm_line:
++ case snd_soc_dapm_micbias:
++ case snd_soc_dapm_dac:
++ case snd_soc_dapm_adc:
++ case snd_soc_dapm_pga:
++ case snd_soc_dapm_mixer:
++ if (w->name)
++ count += sprintf(buf + count, "%s: %s\n",
++ w->name, w->power ? "On":"Off");
++ break;
++ default:
++ break;
++ }
++ }
++
++ switch(codec->dapm_state){
++ case SNDRV_CTL_POWER_D0:
++ state = "D0";
++ break;
++ case SNDRV_CTL_POWER_D1:
++ state = "D1";
++ break;
++ case SNDRV_CTL_POWER_D2:
++ state = "D2";
++ break;
++ case SNDRV_CTL_POWER_D3hot:
++ state = "D3hot";
++ break;
++ case SNDRV_CTL_POWER_D3cold:
++ state = "D3cold";
++ break;
++ }
++ count += sprintf(buf + count, "PM State: %s\n", state);
++
++ return count;
++}
++
++static DEVICE_ATTR(dapm_widget, 0444, dapm_widget_show, NULL);
++
++int snd_soc_dapm_sys_add(struct device *dev)
++{
++ int ret = 0;
++
++ if (dapm_status)
++ ret = device_create_file(dev, &dev_attr_dapm_widget);
++
++ return ret;
++}
++
++static void snd_soc_dapm_sys_remove(struct device *dev)
++{
++ if (dapm_status)
++ device_remove_file(dev, &dev_attr_dapm_widget);
++}
++
++/* free all dapm widgets and resources */
++void dapm_free_widgets(struct snd_soc_codec *codec)
++{
++ struct snd_soc_dapm_widget *w, *next_w;
++ struct snd_soc_dapm_path *p, *next_p;
++
++ list_for_each_entry_safe(w, next_w, &codec->dapm_widgets, list) {
++ list_del(&w->list);
++ kfree(w);
++ }
++
++ list_for_each_entry_safe(p, next_p, &codec->dapm_paths, list) {
++ list_del(&p->list);
++ kfree(p->long_name);
++ kfree(p);
++ }
++}
++
++/**
++ * snd_soc_dapm_sync_endpoints - scan and power dapm paths
++ * @codec: audio codec
++ *
++ * Walks all dapm audio paths and powers widgets according to their
++ * stream or path usage.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_dapm_sync_endpoints(struct snd_soc_codec *codec)
++{
++ return dapm_power_widgets(codec, SND_SOC_DAPM_STREAM_NOP);
++}
++EXPORT_SYMBOL_GPL(snd_soc_dapm_sync_endpoints);
++
++/**
++ * snd_soc_dapm_connect_input - connect dapm widgets
++ * @codec: audio codec
++ * @sink: name of target widget
++ * @control: mixer control name
++ * @source: name of source name
++ *
++ * Connects 2 dapm widgets together via a named audio path. The sink is
++ * the widget receiving the audio signal, whilst the source is the sender
++ * of the audio signal.
++ *
++ * Returns 0 for success else error.
++ */
++int snd_soc_dapm_connect_input(struct snd_soc_codec *codec, const char *sink,
++ const char * control, const char *source)
++{
++ struct snd_soc_dapm_path *path;
++ struct snd_soc_dapm_widget *wsource = NULL, *wsink = NULL, *w;
++ int ret = 0;
++
++ /* find src and dest widgets */
++ list_for_each_entry(w, &codec->dapm_widgets, list) {
++
++ if (!wsink && !(strcmp(w->name, sink))) {
++ wsink = w;
++ continue;
++ }
++ if (!wsource && !(strcmp(w->name, source))) {
++ wsource = w;
++ }
++ }
++
++ if (wsource == NULL || wsink == NULL)
++ return -ENODEV;
++
++ path = kzalloc(sizeof(struct snd_soc_dapm_path), GFP_KERNEL);
++ if (!path)
++ return -ENOMEM;
++
++ path->source = wsource;
++ path->sink = wsink;
++ INIT_LIST_HEAD(&path->list);
++ INIT_LIST_HEAD(&path->list_source);
++ INIT_LIST_HEAD(&path->list_sink);
++
++ /* check for external widgets */
++ if (wsink->id == snd_soc_dapm_input) {
++ if (wsource->id == snd_soc_dapm_micbias ||
++ wsource->id == snd_soc_dapm_mic ||
++ wsink->id == snd_soc_dapm_line)
++ wsink->ext = 1;
++ }
++ if (wsource->id == snd_soc_dapm_output) {
++ if (wsink->id == snd_soc_dapm_spk ||
++ wsink->id == snd_soc_dapm_hp ||
++ wsink->id == snd_soc_dapm_line)
++ wsource->ext = 1;
++ }
++
++ /* connect static paths */
++ if (control == NULL) {
++ list_add(&path->list, &codec->dapm_paths);
++ list_add(&path->list_sink, &wsink->sources);
++ list_add(&path->list_source, &wsource->sinks);
++ path->connect = 1;
++ return 0;
++ }
++
++ /* connect dynamic paths */
++ switch(wsink->id) {
++ case snd_soc_dapm_adc:
++ case snd_soc_dapm_dac:
++ case snd_soc_dapm_pga:
++ case snd_soc_dapm_input:
++ case snd_soc_dapm_output:
++ case snd_soc_dapm_micbias:
++ case snd_soc_dapm_vmid:
++ case snd_soc_dapm_pre:
++ case snd_soc_dapm_post:
++ list_add(&path->list, &codec->dapm_paths);
++ list_add(&path->list_sink, &wsink->sources);
++ list_add(&path->list_source, &wsource->sinks);
++ path->connect = 1;
++ return 0;
++ case snd_soc_dapm_mux:
++ ret = dapm_connect_mux(codec, wsource, wsink, path, control,
++ &wsink->kcontrols[0]);
++ if (ret != 0)
++ goto err;
++ break;
++ case snd_soc_dapm_switch:
++ case snd_soc_dapm_mixer:
++ ret = dapm_connect_mixer(codec, wsource, wsink, path, control);
++ if (ret != 0)
++ goto err;
++ break;
++ case snd_soc_dapm_hp:
++ case snd_soc_dapm_mic:
++ case snd_soc_dapm_line:
++ case snd_soc_dapm_spk:
++ list_add(&path->list, &codec->dapm_paths);
++ list_add(&path->list_sink, &wsink->sources);
++ list_add(&path->list_source, &wsource->sinks);
++ path->connect = 0;
++ return 0;
++ }
++ return 0;
++
++err:
++ printk(KERN_WARNING "asoc: no dapm match for %s --> %s --> %s\n", source,
++ control, sink);
++ kfree(path);
++ return ret;
++}
++EXPORT_SYMBOL_GPL(snd_soc_dapm_connect_input);
++
++/**
++ * snd_soc_dapm_new_widgets - add new dapm widgets
++ * @codec: audio codec
++ *
++ * Checks the codec for any new dapm widgets and creates them if found.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_dapm_new_widgets(struct snd_soc_codec *codec)
++{
++ struct snd_soc_dapm_widget *w;
++
++ mutex_lock(&codec->mutex);
++ list_for_each_entry(w, &codec->dapm_widgets, list)
++ {
++ if (w->new)
++ continue;
++
++ switch(w->id) {
++ case snd_soc_dapm_switch:
++ case snd_soc_dapm_mixer:
++ dapm_new_mixer(codec, w);
++ break;
++ case snd_soc_dapm_mux:
++ dapm_new_mux(codec, w);
++ break;
++ case snd_soc_dapm_adc:
++ case snd_soc_dapm_dac:
++ case snd_soc_dapm_pga:
++ dapm_new_pga(codec, w);
++ break;
++ case snd_soc_dapm_input:
++ case snd_soc_dapm_output:
++ case snd_soc_dapm_micbias:
++ case snd_soc_dapm_spk:
++ case snd_soc_dapm_hp:
++ case snd_soc_dapm_mic:
++ case snd_soc_dapm_line:
++ case snd_soc_dapm_vmid:
++ case snd_soc_dapm_pre:
++ case snd_soc_dapm_post:
++ break;
++ }
++ w->new = 1;
++ }
++
++ dapm_power_widgets(codec, SND_SOC_DAPM_STREAM_NOP);
++ mutex_unlock(&codec->mutex);
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_dapm_new_widgets);
++
++/**
++ * snd_soc_dapm_get_volsw - dapm mixer get callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to get the value of a dapm mixer control.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_dapm_get_volsw(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
++ int reg = kcontrol->private_value & 0xff;
++ int shift = (kcontrol->private_value >> 8) & 0x0f;
++ int rshift = (kcontrol->private_value >> 12) & 0x0f;
++ int mask = (kcontrol->private_value >> 16) & 0xff;
++ int invert = (kcontrol->private_value >> 24) & 0x01;
++
++ /* return the saved value if we are powered down */
++ if (widget->id == snd_soc_dapm_pga && !widget->power) {
++ ucontrol->value.integer.value[0] = widget->saved_value;
++ return 0;
++ }
++
++ ucontrol->value.integer.value[0] =
++ (snd_soc_read(widget->codec, reg) >> shift) & mask;
++ if (shift != rshift)
++ ucontrol->value.integer.value[1] =
++ (snd_soc_read(widget->codec, reg) >> rshift) & mask;
++ if (invert) {
++ ucontrol->value.integer.value[0] =
++ mask - ucontrol->value.integer.value[0];
++ if (shift != rshift)
++ ucontrol->value.integer.value[1] =
++ mask - ucontrol->value.integer.value[1];
++ }
++
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_dapm_get_volsw);
++
++/**
++ * snd_soc_dapm_put_volsw - dapm mixer set callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to set the value of a dapm mixer control.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
++ int reg = kcontrol->private_value & 0xff;
++ int shift = (kcontrol->private_value >> 8) & 0x0f;
++ int rshift = (kcontrol->private_value >> 12) & 0x0f;
++ int mask = (kcontrol->private_value >> 16) & 0xff;
++ int invert = (kcontrol->private_value >> 24) & 0x01;
++ unsigned short val, val2, val_mask;
++ int ret;
++
++ val = (ucontrol->value.integer.value[0] & mask);
++
++ if (invert)
++ val = mask - val;
++ val_mask = mask << shift;
++ val = val << shift;
++ if (shift != rshift) {
++ val2 = (ucontrol->value.integer.value[1] & mask);
++ if (invert)
++ val2 = mask - val2;
++ val_mask |= mask << rshift;
++ val |= val2 << rshift;
++ }
++
++ mutex_lock(&widget->codec->mutex);
++ widget->value = val;
++
++ /* save volume value if the widget is powered down */
++ if (widget->id == snd_soc_dapm_pga && !widget->power) {
++ widget->saved_value = val;
++ mutex_unlock(&widget->codec->mutex);
++ return 1;
++ }
++
++ dapm_mixer_update_power(widget, kcontrol, reg, val_mask, val, invert);
++ if (widget->event) {
++ if (widget->event_flags & SND_SOC_DAPM_PRE_REG) {
++ ret = widget->event(widget, SND_SOC_DAPM_PRE_REG);
++ if (ret < 0)
++ goto out;
++ }
++ ret = snd_soc_update_bits(widget->codec, reg, val_mask, val);
++ if (widget->event_flags & SND_SOC_DAPM_POST_REG)
++ ret = widget->event(widget, SND_SOC_DAPM_POST_REG);
++ } else
++ ret = snd_soc_update_bits(widget->codec, reg, val_mask, val);
++
++out:
++ mutex_unlock(&widget->codec->mutex);
++ return ret;
++}
++EXPORT_SYMBOL_GPL(snd_soc_dapm_put_volsw);
++
++/**
++ * snd_soc_dapm_get_enum_double - dapm enumerated double mixer get callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to get the value of a dapm enumerated double mixer control.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_dapm_get_enum_double(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
++ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
++ unsigned short val, bitmask;
++
++ for (bitmask = 1; bitmask < e->mask; bitmask <<= 1)
++ ;
++ val = snd_soc_read(widget->codec, e->reg);
++ ucontrol->value.enumerated.item[0] = (val >> e->shift_l) & (bitmask - 1);
++ if (e->shift_l != e->shift_r)
++ ucontrol->value.enumerated.item[1] =
++ (val >> e->shift_r) & (bitmask - 1);
++
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_dapm_get_enum_double);
++
++/**
++ * snd_soc_dapm_put_enum_double - dapm enumerated double mixer set callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to set the value of a dapm enumerated double mixer control.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
++ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
++ unsigned short val, mux;
++ unsigned short mask, bitmask;
++ int ret = 0;
++
++ for (bitmask = 1; bitmask < e->mask; bitmask <<= 1)
++ ;
++ if (ucontrol->value.enumerated.item[0] > e->mask - 1)
++ return -EINVAL;
++ mux = ucontrol->value.enumerated.item[0];
++ val = mux << e->shift_l;
++ mask = (bitmask - 1) << e->shift_l;
++ if (e->shift_l != e->shift_r) {
++ if (ucontrol->value.enumerated.item[1] > e->mask - 1)
++ return -EINVAL;
++ val |= ucontrol->value.enumerated.item[1] << e->shift_r;
++ mask |= (bitmask - 1) << e->shift_r;
++ }
++
++ mutex_lock(&widget->codec->mutex);
++ widget->value = val;
++ dapm_mux_update_power(widget, kcontrol, mask, mux, e);
++ if (widget->event) {
++ if (widget->event_flags & SND_SOC_DAPM_PRE_REG) {
++ ret = widget->event(widget, SND_SOC_DAPM_PRE_REG);
++ if (ret < 0)
++ goto out;
++ }
++ ret = snd_soc_update_bits(widget->codec, e->reg, mask, val);
++ if (widget->event_flags & SND_SOC_DAPM_POST_REG)
++ ret = widget->event(widget, SND_SOC_DAPM_POST_REG);
++ } else
++ ret = snd_soc_update_bits(widget->codec, e->reg, mask, val);
++
++out:
++ mutex_unlock(&widget->codec->mutex);
++ return ret;
++}
++EXPORT_SYMBOL_GPL(snd_soc_dapm_put_enum_double);
++
++/**
++ * snd_soc_dapm_new_control - create new dapm control
++ * @codec: audio codec
++ * @widget: widget template
++ *
++ * Creates a new dapm control based upon the template.
++ *
++ * Returns 0 for success else error.
++ */
++int snd_soc_dapm_new_control(struct snd_soc_codec *codec,
++ const struct snd_soc_dapm_widget *widget)
++{
++ struct snd_soc_dapm_widget *w;
++
++ if ((w = dapm_cnew_widget(widget)) == NULL)
++ return -ENOMEM;
++
++ w->codec = codec;
++ INIT_LIST_HEAD(&w->sources);
++ INIT_LIST_HEAD(&w->sinks);
++ INIT_LIST_HEAD(&w->list);
++ list_add(&w->list, &codec->dapm_widgets);
++
++ /* machine layer set ups unconnected pins and insertions */
++ w->connected = 1;
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_dapm_new_control);
++
++/**
++ * snd_soc_dapm_stream_event - send a stream event to the dapm core
++ * @codec: audio codec
++ * @stream: stream name
++ * @event: stream event
++ *
++ * Sends a stream event to the dapm core. The core then makes any
++ * necessary widget power changes.
++ *
++ * Returns 0 for success else error.
++ */
++int snd_soc_dapm_stream_event(struct snd_soc_codec *codec,
++ char *stream, int event)
++{
++ struct snd_soc_dapm_widget *w;
++
++ mutex_lock(&codec->mutex);
++ list_for_each_entry(w, &codec->dapm_widgets, list)
++ {
++ if (!w->sname)
++ continue;
++ dbg("widget %s\n %s stream %s event %d\n", w->name, w->sname,
++ stream, event);
++ if (strstr(w->sname, stream)) {
++ switch(event) {
++ case SND_SOC_DAPM_STREAM_START:
++ w->active = 1;
++ break;
++ case SND_SOC_DAPM_STREAM_STOP:
++ w->active = 0;
++ break;
++ case SND_SOC_DAPM_STREAM_SUSPEND:
++ if (w->active)
++ w->suspend = 1;
++ w->active = 0;
++ break;
++ case SND_SOC_DAPM_STREAM_RESUME:
++ if (w->suspend) {
++ w->active = 1;
++ w->suspend = 0;
++ }
++ break;
++ case SND_SOC_DAPM_STREAM_PAUSE_PUSH:
++ break;
++ case SND_SOC_DAPM_STREAM_PAUSE_RELEASE:
++ break;
++ }
++ }
++ }
++ mutex_unlock(&codec->mutex);
++
++ dapm_power_widgets(codec, event);
++ dump_dapm(codec, __FUNCTION__);
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_dapm_stream_event);
++
++/**
++ * snd_soc_dapm_set_endpoint - set audio endpoint status
++ * @codec: audio codec
++ * @endpoint: audio signal endpoint (or start point)
++ * @status: point status
++ *
++ * Set audio endpoint status - connected or disconnected.
++ *
++ * Returns 0 for success else error.
++ */
++int snd_soc_dapm_set_endpoint(struct snd_soc_codec *codec,
++ char *endpoint, int status)
++{
++ struct snd_soc_dapm_widget *w;
++
++ list_for_each_entry(w, &codec->dapm_widgets, list) {
++ if (!strcmp(w->name, endpoint)) {
++ w->connected = status;
++ }
++ }
++
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_dapm_set_endpoint);
++
++/**
++ * snd_soc_dapm_free - free dapm resources
++ * @socdev: SoC device
++ *
++ * Free all dapm widgets and resources.
++ */
++void snd_soc_dapm_free(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++
++ snd_soc_dapm_sys_remove(socdev->dev);
++ dapm_free_widgets(codec);
++}
++EXPORT_SYMBOL_GPL(snd_soc_dapm_free);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("Dynamic Audio Power Management core for ALSA SoC");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/soc-core.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/soc-core.c
+@@ -0,0 +1,2063 @@
++/*
++ * soc-core.c -- ALSA SoC Audio Layer
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or 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
++ * 12th Aug 2005 Initial version.
++ * 25th Oct 2005 Working Codec, Interface and Platform registration.
++ *
++ * TODO:
++ * o Add hw rules to enforce rates, etc.
++ * o More testing with other codecs/machines.
++ * o Add more codecs and platforms to ensure good API coverage.
++ * o Support TDM on PCM and I2S
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/bitops.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++
++/* debug */
++#define SOC_DEBUG 1
++#if SOC_DEBUG
++#define dbg(format, arg...) printk(format, ## arg)
++#else
++#define dbg(format, arg...)
++#endif
++/* debug DAI capabilities matching */
++#define SOC_DEBUG_DAI 1
++#if SOC_DEBUG_DAI
++#define dbgc(format, arg...) printk(format, ## arg)
++#else
++#define dbgc(format, arg...)
++#endif
++
++#define CODEC_CPU(codec, cpu) ((codec << 4) | cpu)
++
++static DEFINE_MUTEX(pcm_mutex);
++static DEFINE_MUTEX(io_mutex);
++static struct workqueue_struct *soc_workq;
++static struct work_struct soc_stream_work;
++static DECLARE_WAIT_QUEUE_HEAD(soc_pm_waitq);
++
++/* supported sample rates */
++/* ATTENTION: these values depend on the definition in pcm.h! */
++static const unsigned int rates[] = {
++ 5512, 8000, 11025, 16000, 22050, 32000, 44100,
++ 48000, 64000, 88200, 96000, 176400, 192000
++};
++
++/*
++ * This is a timeout to do a DAPM powerdown after a stream is closed().
++ * It can be used to eliminate pops between different playback streams, e.g.
++ * between two audio tracks.
++ */
++static int pmdown_time = 5000;
++module_param(pmdown_time, int, 0);
++MODULE_PARM_DESC(pmdown_time, "DAPM stream powerdown time (msecs)");
++
++#ifdef CONFIG_SND_SOC_AC97_BUS
++/* unregister ac97 codec */
++static int soc_ac97_dev_unregister(struct snd_soc_codec *codec)
++{
++ if (codec->ac97->dev.bus)
++ device_unregister(&codec->ac97->dev);
++ return 0;
++}
++
++/* stop no dev release warning */
++static void soc_ac97_device_release(struct device *dev){}
++
++/* register ac97 codec to bus */
++static int soc_ac97_dev_register(struct snd_soc_codec *codec)
++{
++ int err;
++
++ codec->ac97->dev.bus = &ac97_bus_type;
++ codec->ac97->dev.parent = NULL;
++ codec->ac97->dev.release = soc_ac97_device_release;
++
++ snprintf(codec->ac97->dev.bus_id, BUS_ID_SIZE, "%d-%d:%s",
++ codec->card->number, 0, codec->name);
++ err = device_register(&codec->ac97->dev);
++ if (err < 0) {
++ snd_printk(KERN_ERR "Can't register ac97 bus\n");
++ codec->ac97->dev.bus = NULL;
++ return err;
++ }
++ return 0;
++}
++#endif
++
++static inline const char* get_dai_name(int type)
++{
++ switch(type) {
++ case SND_SOC_DAI_AC97:
++ return "AC97";
++ case SND_SOC_DAI_I2S:
++ return "I2S";
++ case SND_SOC_DAI_PCM:
++ return "PCM";
++ }
++ return NULL;
++}
++
++/* get rate format from rate */
++static inline int soc_get_rate_format(int rate)
++{
++ int i;
++
++ for (i = 0; i < ARRAY_SIZE(rates); i++) {
++ if (rates[i] == rate)
++ return 1 << i;
++ }
++ return 0;
++}
++
++/* gets the audio system mclk/sysclk for the given parameters */
++static unsigned inline int soc_get_mclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++{
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_machine *machine = socdev->machine;
++ int i;
++
++ /* find the matching machine config and get it's mclk for the given
++ * sample rate and hardware format */
++ for(i = 0; i < machine->num_links; i++) {
++ if (machine->dai_link[i].cpu_dai == rtd->cpu_dai &&
++ machine->dai_link[i].config_sysclk)
++ return machine->dai_link[i].config_sysclk(rtd, info);
++ }
++ return 0;
++}
++
++/* changes a bitclk multiplier mask to a divider mask */
++static u64 soc_bfs_rcw_to_div(u64 bfs, int rate, unsigned int mclk,
++ unsigned int pcmfmt, unsigned int chn)
++{
++ int i, j;
++ u64 bfs_ = 0;
++ int size = snd_pcm_format_physical_width(pcmfmt), min = 0;
++
++ if (size <= 0)
++ return 0;
++
++ /* the minimum bit clock that has enough bandwidth */
++ min = size * rate * chn;
++ dbgc("rcw --> div min bclk %d with mclk %d\n", min, mclk);
++
++ for (i = 0; i < 64; i++) {
++ if ((bfs >> i) & 0x1) {
++ j = min * (i + 1);
++ bfs_ |= SND_SOC_FSBD(mclk/j);
++ dbgc("rcw --> div support mult %d\n",
++ SND_SOC_FSBD_REAL(1<<i));
++ }
++ }
++
++ return bfs_;
++}
++
++/* changes a bitclk divider mask to a multiplier mask */
++static u64 soc_bfs_div_to_rcw(u64 bfs, int rate, unsigned int mclk,
++ unsigned int pcmfmt, unsigned int chn)
++{
++ int i, j;
++ u64 bfs_ = 0;
++
++ int size = snd_pcm_format_physical_width(pcmfmt), min = 0;
++
++ if (size <= 0)
++ return 0;
++
++ /* the minimum bit clock that has enough bandwidth */
++ min = size * rate * chn;
++ dbgc("div to rcw min bclk %d with mclk %d\n", min, mclk);
++
++ for (i = 0; i < 64; i++) {
++ if ((bfs >> i) & 0x1) {
++ j = mclk / (i + 1);
++ if (j >= min) {
++ bfs_ |= SND_SOC_FSBW(j/min);
++ dbgc("div --> rcw support div %d\n",
++ SND_SOC_FSBW_REAL(1<<i));
++ }
++ }
++ }
++
++ return bfs_;
++}
++
++/* changes a constant bitclk to a multiplier mask */
++static u64 soc_bfs_rate_to_rcw(u64 bfs, int rate, unsigned int mclk,
++ unsigned int pcmfmt, unsigned int chn)
++{
++ unsigned int bfs_ = rate * bfs;
++ int size = snd_pcm_format_physical_width(pcmfmt), min = 0;
++
++ if (size <= 0)
++ return 0;
++
++ /* the minimum bit clock that has enough bandwidth */
++ min = size * rate * chn;
++ dbgc("rate --> rcw min bclk %d with mclk %d\n", min, mclk);
++
++ if (bfs_ < min)
++ return 0;
++ else {
++ bfs_ = SND_SOC_FSBW(bfs_/min);
++ dbgc("rate --> rcw support div %d\n", SND_SOC_FSBW_REAL(bfs_));
++ return bfs_;
++ }
++}
++
++/* changes a bitclk multiplier mask to a divider mask */
++static u64 soc_bfs_rate_to_div(u64 bfs, int rate, unsigned int mclk,
++ unsigned int pcmfmt, unsigned int chn)
++{
++ unsigned int bfs_ = rate * bfs;
++ int size = snd_pcm_format_physical_width(pcmfmt), min = 0;
++
++ if (size <= 0)
++ return 0;
++
++ /* the minimum bit clock that has enough bandwidth */
++ min = size * rate * chn;
++ dbgc("rate --> div min bclk %d with mclk %d\n", min, mclk);
++
++ if (bfs_ < min)
++ return 0;
++ else {
++ bfs_ = SND_SOC_FSBW(mclk/bfs_);
++ dbgc("rate --> div support div %d\n", SND_SOC_FSBD_REAL(bfs_));
++ return bfs_;
++ }
++}
++
++/* Matches codec DAI and SoC CPU DAI hardware parameters */
++static int soc_hw_match_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_dai_mode *codec_dai_mode = NULL;
++ struct snd_soc_dai_mode *cpu_dai_mode = NULL;
++ struct snd_soc_clock_info clk_info;
++ unsigned int fs, mclk, rate = params_rate(params),
++ chn, j, k, cpu_bclk, codec_bclk, pcmrate;
++ u16 fmt = 0;
++ u64 codec_bfs, cpu_bfs;
++
++ dbg("asoc: match version %s\n", SND_SOC_VERSION);
++ clk_info.rate = rate;
++ pcmrate = soc_get_rate_format(rate);
++
++ /* try and find a match from the codec and cpu DAI capabilities */
++ for (j = 0; j < rtd->codec_dai->caps.num_modes; j++) {
++ for (k = 0; k < rtd->cpu_dai->caps.num_modes; k++) {
++ codec_dai_mode = &rtd->codec_dai->caps.mode[j];
++ cpu_dai_mode = &rtd->cpu_dai->caps.mode[k];
++
++ if (!(codec_dai_mode->pcmrate & cpu_dai_mode->pcmrate &
++ pcmrate)) {
++ dbgc("asoc: DAI[%d:%d] failed to match rate\n", j, k);
++ continue;
++ }
++
++ fmt = codec_dai_mode->fmt & cpu_dai_mode->fmt;
++ if (!(fmt & SND_SOC_DAIFMT_FORMAT_MASK)) {
++ dbgc("asoc: DAI[%d:%d] failed to match format\n", j, k);
++ continue;
++ }
++
++ if (!(fmt & SND_SOC_DAIFMT_CLOCK_MASK)) {
++ dbgc("asoc: DAI[%d:%d] failed to match clock masters\n",
++ j, k);
++ continue;
++ }
++
++ if (!(fmt & SND_SOC_DAIFMT_INV_MASK)) {
++ dbgc("asoc: DAI[%d:%d] failed to match invert\n", j, k);
++ continue;
++ }
++
++ if (!(codec_dai_mode->pcmfmt & cpu_dai_mode->pcmfmt)) {
++ dbgc("asoc: DAI[%d:%d] failed to match pcm format\n", j, k);
++ continue;
++ }
++
++ if (!(codec_dai_mode->pcmdir & cpu_dai_mode->pcmdir)) {
++ dbgc("asoc: DAI[%d:%d] failed to match direction\n", j, k);
++ continue;
++ }
++
++ /* todo - still need to add tdm selection */
++ rtd->cpu_dai->dai_runtime.fmt =
++ rtd->codec_dai->dai_runtime.fmt =
++ 1 << (ffs(fmt & SND_SOC_DAIFMT_FORMAT_MASK) -1) |
++ 1 << (ffs(fmt & SND_SOC_DAIFMT_CLOCK_MASK) - 1) |
++ 1 << (ffs(fmt & SND_SOC_DAIFMT_INV_MASK) - 1);
++ clk_info.bclk_master =
++ rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK;
++
++ /* make sure the ratio between rate and master
++ * clock is acceptable*/
++ fs = (cpu_dai_mode->fs & codec_dai_mode->fs);
++ if (fs == 0) {
++ dbgc("asoc: DAI[%d:%d] failed to match FS\n", j, k);
++ continue;
++ }
++ clk_info.fs = rtd->cpu_dai->dai_runtime.fs =
++ rtd->codec_dai->dai_runtime.fs = fs;
++
++ /* calculate audio system clocking using slowest clocks possible*/
++ mclk = soc_get_mclk(rtd, &clk_info);
++ if (mclk == 0) {
++ dbgc("asoc: DAI[%d:%d] configuration not clockable\n", j, k);
++ dbgc("asoc: rate %d fs %d master %x\n", rate, fs,
++ clk_info.bclk_master);
++ continue;
++ }
++
++ /* calculate word size (per channel) and frame size */
++ rtd->codec_dai->dai_runtime.pcmfmt =
++ rtd->cpu_dai->dai_runtime.pcmfmt =
++ 1 << params_format(params);
++
++ chn = params_channels(params);
++ /* i2s always has left and right */
++ if (params_channels(params) == 1 &&
++ rtd->cpu_dai->dai_runtime.fmt & (SND_SOC_DAIFMT_I2S |
++ SND_SOC_DAIFMT_RIGHT_J | SND_SOC_DAIFMT_LEFT_J))
++ chn <<= 1;
++
++ /* Calculate bfs - the ratio between bitclock and the sample rate
++ * We must take into consideration the dividers and multipliers
++ * used in the codec and cpu DAI modes. We always choose the
++ * lowest possible clocks to reduce power.
++ */
++ switch (CODEC_CPU(codec_dai_mode->flags, cpu_dai_mode->flags)) {
++ case CODEC_CPU(SND_SOC_DAI_BFS_DIV, SND_SOC_DAI_BFS_DIV):
++ /* cpu & codec bfs dividers */
++ rtd->cpu_dai->dai_runtime.bfs =
++ rtd->codec_dai->dai_runtime.bfs =
++ 1 << (fls(codec_dai_mode->bfs & cpu_dai_mode->bfs) - 1);
++ break;
++ case CODEC_CPU(SND_SOC_DAI_BFS_DIV, SND_SOC_DAI_BFS_RCW):
++ /* normalise bfs codec divider & cpu rcw mult */
++ codec_bfs = soc_bfs_div_to_rcw(codec_dai_mode->bfs, rate,
++ mclk, rtd->codec_dai->dai_runtime.pcmfmt, chn);
++ rtd->cpu_dai->dai_runtime.bfs =
++ 1 << (ffs(codec_bfs & cpu_dai_mode->bfs) - 1);
++ cpu_bfs = soc_bfs_rcw_to_div(cpu_dai_mode->bfs, rate, mclk,
++ rtd->codec_dai->dai_runtime.pcmfmt, chn);
++ rtd->codec_dai->dai_runtime.bfs =
++ 1 << (fls(codec_dai_mode->bfs & cpu_bfs) - 1);
++ break;
++ case CODEC_CPU(SND_SOC_DAI_BFS_RCW, SND_SOC_DAI_BFS_DIV):
++ /* normalise bfs codec rcw mult & cpu divider */
++ codec_bfs = soc_bfs_rcw_to_div(codec_dai_mode->bfs, rate,
++ mclk, rtd->codec_dai->dai_runtime.pcmfmt, chn);
++ rtd->cpu_dai->dai_runtime.bfs =
++ 1 << (fls(codec_bfs & cpu_dai_mode->bfs) -1);
++ cpu_bfs = soc_bfs_div_to_rcw(cpu_dai_mode->bfs, rate, mclk,
++ rtd->codec_dai->dai_runtime.pcmfmt, chn);
++ rtd->codec_dai->dai_runtime.bfs =
++ 1 << (ffs(codec_dai_mode->bfs & cpu_bfs) -1);
++ break;
++ case CODEC_CPU(SND_SOC_DAI_BFS_RCW, SND_SOC_DAI_BFS_RCW):
++ /* codec & cpu bfs rate rcw multipliers */
++ rtd->cpu_dai->dai_runtime.bfs =
++ rtd->codec_dai->dai_runtime.bfs =
++ 1 << (ffs(codec_dai_mode->bfs & cpu_dai_mode->bfs) -1);
++ break;
++ case CODEC_CPU(SND_SOC_DAI_BFS_DIV, SND_SOC_DAI_BFS_RATE):
++ /* normalise cpu bfs rate const multiplier & codec div */
++ cpu_bfs = soc_bfs_rate_to_div(cpu_dai_mode->bfs, rate,
++ mclk, rtd->codec_dai->dai_runtime.pcmfmt, chn);
++ if(codec_dai_mode->bfs & cpu_bfs) {
++ rtd->codec_dai->dai_runtime.bfs = cpu_bfs;
++ rtd->cpu_dai->dai_runtime.bfs = cpu_dai_mode->bfs;
++ } else
++ rtd->cpu_dai->dai_runtime.bfs = 0;
++ break;
++ case CODEC_CPU(SND_SOC_DAI_BFS_RCW, SND_SOC_DAI_BFS_RATE):
++ /* normalise cpu bfs rate const multiplier & codec rcw mult */
++ cpu_bfs = soc_bfs_rate_to_rcw(cpu_dai_mode->bfs, rate,
++ mclk, rtd->codec_dai->dai_runtime.pcmfmt, chn);
++ if(codec_dai_mode->bfs & cpu_bfs) {
++ rtd->codec_dai->dai_runtime.bfs = cpu_bfs;
++ rtd->cpu_dai->dai_runtime.bfs = cpu_dai_mode->bfs;
++ } else
++ rtd->cpu_dai->dai_runtime.bfs = 0;
++ break;
++ case CODEC_CPU(SND_SOC_DAI_BFS_RATE, SND_SOC_DAI_BFS_RCW):
++ /* normalise cpu bfs rate rcw multiplier & codec const mult */
++ codec_bfs = soc_bfs_rate_to_rcw(codec_dai_mode->bfs, rate,
++ mclk, rtd->codec_dai->dai_runtime.pcmfmt, chn);
++ if(cpu_dai_mode->bfs & codec_bfs) {
++ rtd->cpu_dai->dai_runtime.bfs = codec_bfs;
++ rtd->codec_dai->dai_runtime.bfs = codec_dai_mode->bfs;
++ } else
++ rtd->cpu_dai->dai_runtime.bfs = 0;
++ break;
++ case CODEC_CPU(SND_SOC_DAI_BFS_RATE, SND_SOC_DAI_BFS_DIV):
++ /* normalise cpu bfs div & codec const mult */
++ codec_bfs = soc_bfs_rate_to_div(codec_dai_mode->bfs, rate,
++ mclk, rtd->codec_dai->dai_runtime.pcmfmt, chn);
++ if(codec_dai_mode->bfs & codec_bfs) {
++ rtd->cpu_dai->dai_runtime.bfs = codec_bfs;
++ rtd->codec_dai->dai_runtime.bfs = codec_dai_mode->bfs;
++ } else
++ rtd->cpu_dai->dai_runtime.bfs = 0;
++ break;
++ case CODEC_CPU(SND_SOC_DAI_BFS_RATE, SND_SOC_DAI_BFS_RATE):
++ /* cpu & codec constant mult */
++ if(codec_dai_mode->bfs == cpu_dai_mode->bfs)
++ rtd->cpu_dai->dai_runtime.bfs =
++ rtd->codec_dai->dai_runtime.bfs =
++ codec_dai_mode->bfs;
++ else
++ rtd->cpu_dai->dai_runtime.bfs =
++ rtd->codec_dai->dai_runtime.bfs = 0;
++ break;
++ default:
++ if(codec_dai_mode->flags == 0)
++ printk(KERN_ERR "asoc: error missing codec DAI flags\n");
++ else
++ printk(KERN_ERR "asoc: error missing CPU DAI flags\n");
++ break;
++ }
++
++ /* make sure the bit clock speed is acceptable */
++ if (!rtd->cpu_dai->dai_runtime.bfs ||
++ !rtd->codec_dai->dai_runtime.bfs) {
++ dbgc("asoc: DAI[%d:%d] failed to match BFS\n", j, k);
++ dbgc("asoc: cpu_dai %llu codec %llu\n",
++ rtd->cpu_dai->dai_runtime.bfs,
++ rtd->codec_dai->dai_runtime.bfs);
++ dbgc("asoc: mclk %d hwfmt %x\n", mclk, fmt);
++ continue;
++ }
++
++ goto found;
++ }
++ }
++ printk(KERN_ERR "asoc: no matching DAI found between codec and CPU\n");
++ return -EINVAL;
++
++found:
++ /* we have matching DAI's, so complete the runtime info */
++ rtd->codec_dai->dai_runtime.pcmrate =
++ rtd->cpu_dai->dai_runtime.pcmrate =
++ soc_get_rate_format(rate);
++
++ rtd->codec_dai->dai_runtime.priv = codec_dai_mode->priv;
++ rtd->cpu_dai->dai_runtime.priv = cpu_dai_mode->priv;
++ rtd->codec_dai->dai_runtime.flags = codec_dai_mode->flags;
++ rtd->cpu_dai->dai_runtime.flags = cpu_dai_mode->flags;
++
++ /* for debug atm */
++ dbg("asoc: DAI[%d:%d] Match OK\n", j, k);
++ if (rtd->codec_dai->dai_runtime.flags == SND_SOC_DAI_BFS_DIV) {
++ codec_bclk = (rtd->codec_dai->dai_runtime.fs * params_rate(params)) /
++ SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
++ dbg("asoc: codec fs %d mclk %d bfs div %d bclk %d\n",
++ rtd->codec_dai->dai_runtime.fs, mclk,
++ SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs), codec_bclk);
++ } else if(rtd->codec_dai->dai_runtime.flags == SND_SOC_DAI_BFS_RATE) {
++ codec_bclk = params_rate(params) * rtd->codec_dai->dai_runtime.bfs;
++ dbg("asoc: codec fs %d mclk %d bfs rate mult %llu bclk %d\n",
++ rtd->codec_dai->dai_runtime.fs, mclk,
++ rtd->codec_dai->dai_runtime.bfs, codec_bclk);
++ } else if (rtd->cpu_dai->dai_runtime.flags == SND_SOC_DAI_BFS_RCW) {
++ codec_bclk = params_rate(params) * params_channels(params) *
++ snd_pcm_format_physical_width(rtd->codec_dai->dai_runtime.pcmfmt) *
++ SND_SOC_FSBW_REAL(rtd->codec_dai->dai_runtime.bfs);
++ dbg("asoc: codec fs %d mclk %d bfs rcw mult %d bclk %d\n",
++ rtd->codec_dai->dai_runtime.fs, mclk,
++ SND_SOC_FSBW_REAL(rtd->codec_dai->dai_runtime.bfs), codec_bclk);
++ } else
++ codec_bclk = 0;
++
++ if (rtd->cpu_dai->dai_runtime.flags == SND_SOC_DAI_BFS_DIV) {
++ cpu_bclk = (rtd->cpu_dai->dai_runtime.fs * params_rate(params)) /
++ SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs);
++ dbg("asoc: cpu fs %d mclk %d bfs div %d bclk %d\n",
++ rtd->cpu_dai->dai_runtime.fs, mclk,
++ SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs), cpu_bclk);
++ } else if (rtd->cpu_dai->dai_runtime.flags == SND_SOC_DAI_BFS_RATE) {
++ cpu_bclk = params_rate(params) * rtd->cpu_dai->dai_runtime.bfs;
++ dbg("asoc: cpu fs %d mclk %d bfs rate mult %llu bclk %d\n",
++ rtd->cpu_dai->dai_runtime.fs, mclk,
++ rtd->cpu_dai->dai_runtime.bfs, cpu_bclk);
++ } else if (rtd->cpu_dai->dai_runtime.flags == SND_SOC_DAI_BFS_RCW) {
++ cpu_bclk = params_rate(params) * params_channels(params) *
++ snd_pcm_format_physical_width(rtd->cpu_dai->dai_runtime.pcmfmt) *
++ SND_SOC_FSBW_REAL(rtd->cpu_dai->dai_runtime.bfs);
++ dbg("asoc: cpu fs %d mclk %d bfs mult rcw %d bclk %d\n",
++ rtd->cpu_dai->dai_runtime.fs, mclk,
++ SND_SOC_FSBW_REAL(rtd->cpu_dai->dai_runtime.bfs), cpu_bclk);
++ } else
++ cpu_bclk = 0;
++
++ /*
++ * Check we have matching bitclocks. If we don't then it means the
++ * sysclock returned by either the codec or cpu DAI (selected by the
++ * machine sysclock function) is wrong compared with the supported DAI
++ * modes for the codec or cpu DAI.
++ */
++ if (cpu_bclk != codec_bclk && cpu_bclk){
++ printk(KERN_ERR
++ "asoc: codec and cpu bitclocks differ, audio may be wrong speed\n"
++ );
++ printk(KERN_ERR "asoc: codec %d != cpu %d\n", codec_bclk, cpu_bclk);
++ }
++
++ switch(rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ dbg("asoc: DAI codec BCLK master, LRC master\n");
++ break;
++ case SND_SOC_DAIFMT_CBS_CFM:
++ dbg("asoc: DAI codec BCLK slave, LRC master\n");
++ break;
++ case SND_SOC_DAIFMT_CBM_CFS:
++ dbg("asoc: DAI codec BCLK master, LRC slave\n");
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ dbg("asoc: DAI codec BCLK slave, LRC slave\n");
++ break;
++ }
++ dbg("asoc: mode %x, invert %x\n",
++ rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK,
++ rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK);
++ dbg("asoc: audio rate %d chn %d fmt %x\n", params_rate(params),
++ params_channels(params), params_format(params));
++
++ return 0;
++}
++
++static inline u32 get_rates(struct snd_soc_dai_mode *modes, int nmodes)
++{
++ int i;
++ u32 rates = 0;
++
++ for(i = 0; i < nmodes; i++)
++ rates |= modes[i].pcmrate;
++
++ return rates;
++}
++
++static inline u64 get_formats(struct snd_soc_dai_mode *modes, int nmodes)
++{
++ int i;
++ u64 formats = 0;
++
++ for(i = 0; i < nmodes; i++)
++ formats |= modes[i].pcmfmt;
++
++ return formats;
++}
++
++/*
++ * Called by ALSA when a PCM substream is opened, the runtime->hw record is
++ * then initialized and any private data can be allocated. This also calls
++ * startup for the cpu DAI, platform, machine and codec DAI.
++ */
++static int soc_pcm_open(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct snd_soc_machine *machine = socdev->machine;
++ struct snd_soc_platform *platform = socdev->platform;
++ struct snd_soc_codec_dai *codec_dai = rtd->codec_dai;
++ struct snd_soc_cpu_dai *cpu_dai = rtd->cpu_dai;
++ int ret = 0;
++
++ mutex_lock(&pcm_mutex);
++
++ /* startup the audio subsystem */
++ if (rtd->cpu_dai->ops.startup) {
++ ret = rtd->cpu_dai->ops.startup(substream);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: can't open interface %s\n",
++ rtd->cpu_dai->name);
++ goto out;
++ }
++ }
++
++ if (platform->pcm_ops->open) {
++ ret = platform->pcm_ops->open(substream);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: can't open platform %s\n", platform->name);
++ goto platform_err;
++ }
++ }
++
++ if (machine->ops && machine->ops->startup) {
++ ret = machine->ops->startup(substream);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: %s startup failed\n", machine->name);
++ goto machine_err;
++ }
++ }
++
++ if (rtd->codec_dai->ops.startup) {
++ ret = rtd->codec_dai->ops.startup(substream);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: can't open codec %s\n",
++ rtd->codec_dai->name);
++ goto codec_dai_err;
++ }
++ }
++
++ /* create runtime params from DMA, codec and cpu DAI */
++ if (runtime->hw.rates)
++ runtime->hw.rates &=
++ get_rates(codec_dai->caps.mode, codec_dai->caps.num_modes) &
++ get_rates(cpu_dai->caps.mode, cpu_dai->caps.num_modes);
++ else
++ runtime->hw.rates =
++ get_rates(codec_dai->caps.mode, codec_dai->caps.num_modes) &
++ get_rates(cpu_dai->caps.mode, cpu_dai->caps.num_modes);
++ if (runtime->hw.formats)
++ runtime->hw.formats &=
++ get_formats(codec_dai->caps.mode, codec_dai->caps.num_modes) &
++ get_formats(cpu_dai->caps.mode, cpu_dai->caps.num_modes);
++ else
++ runtime->hw.formats =
++ get_formats(codec_dai->caps.mode, codec_dai->caps.num_modes) &
++ get_formats(cpu_dai->caps.mode, cpu_dai->caps.num_modes);
++
++ /* Check that the codec and cpu DAI's are compatible */
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
++ runtime->hw.rate_min =
++ max(rtd->codec_dai->playback.rate_min,
++ rtd->cpu_dai->playback.rate_min);
++ runtime->hw.rate_max =
++ min(rtd->codec_dai->playback.rate_max,
++ rtd->cpu_dai->playback.rate_max);
++ runtime->hw.channels_min =
++ max(rtd->codec_dai->playback.channels_min,
++ rtd->cpu_dai->playback.channels_min);
++ runtime->hw.channels_max =
++ min(rtd->codec_dai->playback.channels_max,
++ rtd->cpu_dai->playback.channels_max);
++ } else {
++ runtime->hw.rate_min =
++ max(rtd->codec_dai->capture.rate_min,
++ rtd->cpu_dai->capture.rate_min);
++ runtime->hw.rate_max =
++ min(rtd->codec_dai->capture.rate_max,
++ rtd->cpu_dai->capture.rate_max);
++ runtime->hw.channels_min =
++ max(rtd->codec_dai->capture.channels_min,
++ rtd->cpu_dai->capture.channels_min);
++ runtime->hw.channels_max =
++ min(rtd->codec_dai->capture.channels_max,
++ rtd->cpu_dai->capture.channels_max);
++ }
++
++ snd_pcm_limit_hw_rates(runtime);
++ if (!runtime->hw.rates) {
++ printk(KERN_ERR "asoc: %s <-> %s No matching rates\n",
++ rtd->codec_dai->name, rtd->cpu_dai->name);
++ goto codec_dai_err;
++ }
++ if (!runtime->hw.formats) {
++ printk(KERN_ERR "asoc: %s <-> %s No matching formats\n",
++ rtd->codec_dai->name, rtd->cpu_dai->name);
++ goto codec_dai_err;
++ }
++ if (!runtime->hw.channels_min || !runtime->hw.channels_max) {
++ printk(KERN_ERR "asoc: %s <-> %s No matching channels\n",
++ rtd->codec_dai->name, rtd->cpu_dai->name);
++ goto codec_dai_err;
++ }
++
++ dbg("asoc: %s <-> %s info:\n", rtd->codec_dai->name, rtd->cpu_dai->name);
++ dbg("asoc: rate mask 0x%x\n", runtime->hw.rates);
++ dbg("asoc: min ch %d max ch %d\n", runtime->hw.channels_min,
++ runtime->hw.channels_max);
++ dbg("asoc: min rate %d max rate %d\n", runtime->hw.rate_min,
++ runtime->hw.rate_max);
++
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ rtd->cpu_dai->playback.active = rtd->codec_dai->playback.active = 1;
++ else
++ rtd->cpu_dai->capture.active = rtd->codec_dai->capture.active = 1;
++ rtd->cpu_dai->active = rtd->codec_dai->active = 1;
++ rtd->cpu_dai->runtime = runtime;
++ socdev->codec->active++;
++ mutex_unlock(&pcm_mutex);
++ return 0;
++
++codec_dai_err:
++ if (machine->ops && machine->ops->shutdown)
++ machine->ops->shutdown(substream);
++
++machine_err:
++ if (platform->pcm_ops->close)
++ platform->pcm_ops->close(substream);
++
++platform_err:
++ if (rtd->cpu_dai->ops.shutdown)
++ rtd->cpu_dai->ops.shutdown(substream);
++out:
++ mutex_unlock(&pcm_mutex);
++ return ret;
++}
++
++/*
++ * Power down the audio subsytem pmdown_time msecs after close is called.
++ * This is to ensure there are no pops or clicks in between any music tracks
++ * due to DAPM power cycling.
++ */
++static void close_delayed_work(void *data)
++{
++ struct snd_soc_device *socdev = data;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct snd_soc_codec_dai *codec_dai;
++ int i;
++
++ mutex_lock(&pcm_mutex);
++ for(i = 0; i < codec->num_dai; i++) {
++ codec_dai = &codec->dai[i];
++
++ dbg("pop wq checking: %s status: %s waiting: %s\n",
++ codec_dai->playback.stream_name,
++ codec_dai->playback.active ? "active" : "inactive",
++ codec_dai->pop_wait ? "yes" : "no");
++
++ /* are we waiting on this codec DAI stream */
++ if (codec_dai->pop_wait == 1) {
++
++ codec_dai->pop_wait = 0;
++ snd_soc_dapm_stream_event(codec, codec_dai->playback.stream_name,
++ SND_SOC_DAPM_STREAM_STOP);
++
++ /* power down the codec power domain if no longer active */
++ if (codec->active == 0) {
++ dbg("pop wq D3 %s %s\n", codec->name,
++ codec_dai->playback.stream_name);
++ if (codec->dapm_event)
++ codec->dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ }
++ }
++ }
++ mutex_unlock(&pcm_mutex);
++}
++
++/*
++ * Called by ALSA when a PCM substream is closed. Private data can be
++ * freed here. The cpu DAI, codec DAI, machine and platform are also
++ * shutdown.
++ */
++static int soc_codec_close(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_machine *machine = socdev->machine;
++ struct snd_soc_platform *platform = socdev->platform;
++ struct snd_soc_codec *codec = socdev->codec;
++
++ mutex_lock(&pcm_mutex);
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ rtd->cpu_dai->playback.active = rtd->codec_dai->playback.active = 0;
++ else
++ rtd->cpu_dai->capture.active = rtd->codec_dai->capture.active = 0;
++
++ if (rtd->codec_dai->playback.active == 0 &&
++ rtd->codec_dai->capture.active == 0) {
++ rtd->cpu_dai->active = rtd->codec_dai->active = 0;
++ }
++ codec->active--;
++
++ if (rtd->cpu_dai->ops.shutdown)
++ rtd->cpu_dai->ops.shutdown(substream);
++
++ if (rtd->codec_dai->ops.shutdown)
++ rtd->codec_dai->ops.shutdown(substream);
++
++ if (machine->ops && machine->ops->shutdown)
++ machine->ops->shutdown(substream);
++
++ if (platform->pcm_ops->close)
++ platform->pcm_ops->close(substream);
++ rtd->cpu_dai->runtime = NULL;
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
++ /* start delayed pop wq here for playback streams */
++ rtd->codec_dai->pop_wait = 1;
++ queue_delayed_work(soc_workq, &soc_stream_work,
++ msecs_to_jiffies(pmdown_time));
++ } else {
++ /* capture streams can be powered down now */
++ snd_soc_dapm_stream_event(codec, rtd->codec_dai->capture.stream_name,
++ SND_SOC_DAPM_STREAM_STOP);
++
++ if (codec->active == 0 && rtd->codec_dai->pop_wait == 0){
++ if (codec->dapm_event)
++ codec->dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ }
++ }
++
++ mutex_unlock(&pcm_mutex);
++ return 0;
++}
++
++/*
++ * Called by ALSA when the PCM substream is prepared, can set format, sample
++ * rate, etc. This function is non atomic and can be called multiple times,
++ * it can refer to the runtime info.
++ */
++static int soc_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_platform *platform = socdev->platform;
++ struct snd_soc_codec *codec = socdev->codec;
++ int ret = 0;
++
++ mutex_lock(&pcm_mutex);
++ if (platform->pcm_ops->prepare) {
++ ret = platform->pcm_ops->prepare(substream);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: platform prepare error\n");
++ goto out;
++ }
++ }
++
++ if (rtd->codec_dai->ops.prepare) {
++ ret = rtd->codec_dai->ops.prepare(substream);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: codec DAI prepare error\n");
++ goto out;
++ }
++ }
++
++ if (rtd->cpu_dai->ops.prepare)
++ ret = rtd->cpu_dai->ops.prepare(substream);
++
++ /* we only want to start a DAPM playback stream if we are not waiting
++ * on an existing one stopping */
++ if (rtd->codec_dai->pop_wait) {
++ /* we are waiting for the delayed work to start */
++ if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
++ snd_soc_dapm_stream_event(codec,
++ rtd->codec_dai->capture.stream_name,
++ SND_SOC_DAPM_STREAM_START);
++ else {
++ rtd->codec_dai->pop_wait = 0;
++ cancel_delayed_work(&soc_stream_work);
++ if (rtd->codec_dai->digital_mute)
++ rtd->codec_dai->digital_mute(codec, rtd->codec_dai, 0);
++ }
++ } else {
++ /* no delayed work - do we need to power up codec */
++ if (codec->dapm_state != SNDRV_CTL_POWER_D0) {
++
++ if (codec->dapm_event)
++ codec->dapm_event(codec, SNDRV_CTL_POWER_D1);
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ snd_soc_dapm_stream_event(codec,
++ rtd->codec_dai->playback.stream_name,
++ SND_SOC_DAPM_STREAM_START);
++ else
++ snd_soc_dapm_stream_event(codec,
++ rtd->codec_dai->capture.stream_name,
++ SND_SOC_DAPM_STREAM_START);
++
++ if (codec->dapm_event)
++ codec->dapm_event(codec, SNDRV_CTL_POWER_D0);
++ if (rtd->codec_dai->digital_mute)
++ rtd->codec_dai->digital_mute(codec, rtd->codec_dai, 0);
++
++ } else {
++ /* codec already powered - power on widgets */
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ snd_soc_dapm_stream_event(codec,
++ rtd->codec_dai->playback.stream_name,
++ SND_SOC_DAPM_STREAM_START);
++ else
++ snd_soc_dapm_stream_event(codec,
++ rtd->codec_dai->capture.stream_name,
++ SND_SOC_DAPM_STREAM_START);
++ if (rtd->codec_dai->digital_mute)
++ rtd->codec_dai->digital_mute(codec, rtd->codec_dai, 0);
++ }
++ }
++
++out:
++ mutex_unlock(&pcm_mutex);
++ return ret;
++}
++
++/*
++ * Called by ALSA when the hardware params are set by application. This
++ * function can also be called multiple times and can allocate buffers
++ * (using snd_pcm_lib_* ). It's non-atomic.
++ */
++static int soc_pcm_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_device *socdev = rtd->socdev;
++ struct snd_soc_platform *platform = socdev->platform;
++ struct snd_soc_machine *machine = socdev->machine;
++ int ret = 0;
++
++ mutex_lock(&pcm_mutex);
++
++ /* we don't need to match any AC97 params */
++ if (rtd->cpu_dai->type != SND_SOC_DAI_AC97) {
++ ret = soc_hw_match_params(substream, params);
++ if (ret < 0)
++ goto out;
++ } else {
++ struct snd_soc_clock_info clk_info;
++ clk_info.rate = params_rate(params);
++ ret = soc_get_mclk(rtd, &clk_info);
++ if (ret < 0)
++ goto out;
++ }
++
++ if (rtd->codec_dai->ops.hw_params) {
++ ret = rtd->codec_dai->ops.hw_params(substream, params);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: can't set codec %s hw params\n",
++ rtd->codec_dai->name);
++ goto out;
++ }
++ }
++
++ if (rtd->cpu_dai->ops.hw_params) {
++ ret = rtd->cpu_dai->ops.hw_params(substream, params);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: can't set interface %s hw params\n",
++ rtd->cpu_dai->name);
++ goto interface_err;
++ }
++ }
++
++ if (platform->pcm_ops->hw_params) {
++ ret = platform->pcm_ops->hw_params(substream, params);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: can't set platform %s hw params\n",
++ platform->name);
++ goto platform_err;
++ }
++ }
++
++ if (machine->ops && machine->ops->hw_params) {
++ ret = machine->ops->hw_params(substream, params);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: machine hw_params failed\n");
++ goto machine_err;
++ }
++ }
++
++out:
++ mutex_unlock(&pcm_mutex);
++ return ret;
++
++machine_err:
++ if (platform->pcm_ops->hw_free)
++ platform->pcm_ops->hw_free(substream);
++
++platform_err:
++ if (rtd->cpu_dai->ops.hw_free)
++ rtd->cpu_dai->ops.hw_free(substream);
++
++interface_err:
++ if (rtd->codec_dai->ops.hw_free)
++ rtd->codec_dai->ops.hw_free(substream);
++
++ mutex_unlock(&pcm_mutex);
++ return ret;
++}
++
++/*
++ * Free's resources allocated by hw_params, can be called multiple times
++ */
++static int soc_pcm_hw_free(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_platform *platform = socdev->platform;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct snd_soc_machine *machine = socdev->machine;
++
++ mutex_lock(&pcm_mutex);
++
++ /* apply codec digital mute */
++ if (!codec->active && rtd->codec_dai->digital_mute)
++ rtd->codec_dai->digital_mute(codec, rtd->codec_dai, 1);
++
++ /* free any machine hw params */
++ if (machine->ops && machine->ops->hw_free)
++ machine->ops->hw_free(substream);
++
++ /* free any DMA resources */
++ if (platform->pcm_ops->hw_free)
++ platform->pcm_ops->hw_free(substream);
++
++ /* now free hw params for the DAI's */
++ if (rtd->codec_dai->ops.hw_free)
++ rtd->codec_dai->ops.hw_free(substream);
++
++ if (rtd->cpu_dai->ops.hw_free)
++ rtd->cpu_dai->ops.hw_free(substream);
++
++ mutex_unlock(&pcm_mutex);
++ return 0;
++}
++
++static int soc_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_platform *platform = socdev->platform;
++ int ret;
++
++ if (rtd->codec_dai->ops.trigger) {
++ ret = rtd->codec_dai->ops.trigger(substream, cmd);
++ if (ret < 0)
++ return ret;
++ }
++
++ if (platform->pcm_ops->trigger) {
++ ret = platform->pcm_ops->trigger(substream, cmd);
++ if (ret < 0)
++ return ret;
++ }
++
++ if (rtd->cpu_dai->ops.trigger) {
++ ret = rtd->cpu_dai->ops.trigger(substream, cmd);
++ if (ret < 0)
++ return ret;
++ }
++ return 0;
++}
++
++/* ASoC PCM operations */
++static struct snd_pcm_ops soc_pcm_ops = {
++ .open = soc_pcm_open,
++ .close = soc_codec_close,
++ .hw_params = soc_pcm_hw_params,
++ .hw_free = soc_pcm_hw_free,
++ .prepare = soc_pcm_prepare,
++ .trigger = soc_pcm_trigger,
++};
++
++#ifdef CONFIG_PM
++/* powers down audio subsystem for suspend */
++static int soc_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_machine *machine = socdev->machine;
++ struct snd_soc_platform *platform = socdev->platform;
++ struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++
++ /* mute any active DAC's */
++ for(i = 0; i < machine->num_links; i++) {
++ struct snd_soc_codec_dai *dai = machine->dai_link[i].codec_dai;
++ if (dai->digital_mute && dai->playback.active)
++ dai->digital_mute(codec, dai, 1);
++ }
++
++ if (machine->suspend_pre)
++ machine->suspend_pre(pdev, state);
++
++ for(i = 0; i < machine->num_links; i++) {
++ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
++ if (cpu_dai->suspend && cpu_dai->type != SND_SOC_DAI_AC97)
++ cpu_dai->suspend(pdev, cpu_dai);
++ if (platform->suspend)
++ platform->suspend(pdev, cpu_dai);
++ }
++
++ /* close any waiting streams and save state */
++ flush_workqueue(soc_workq);
++ codec->suspend_dapm_state = codec->dapm_state;
++
++ for(i = 0; i < codec->num_dai; i++) {
++ char *stream = codec->dai[i].playback.stream_name;
++ if (stream != NULL)
++ snd_soc_dapm_stream_event(codec, stream,
++ SND_SOC_DAPM_STREAM_SUSPEND);
++ stream = codec->dai[i].capture.stream_name;
++ if (stream != NULL)
++ snd_soc_dapm_stream_event(codec, stream,
++ SND_SOC_DAPM_STREAM_SUSPEND);
++ }
++
++ if (codec_dev->suspend)
++ codec_dev->suspend(pdev, state);
++
++ for(i = 0; i < machine->num_links; i++) {
++ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
++ if (cpu_dai->suspend && cpu_dai->type == SND_SOC_DAI_AC97)
++ cpu_dai->suspend(pdev, cpu_dai);
++ }
++
++ if (machine->suspend_post)
++ machine->suspend_post(pdev, state);
++
++ return 0;
++}
++
++/* powers up audio subsystem after a suspend */
++static int soc_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_machine *machine = socdev->machine;
++ struct snd_soc_platform *platform = socdev->platform;
++ struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++
++ if (machine->resume_pre)
++ machine->resume_pre(pdev);
++
++ for(i = 0; i < machine->num_links; i++) {
++ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
++ if (cpu_dai->resume && cpu_dai->type == SND_SOC_DAI_AC97)
++ cpu_dai->resume(pdev, cpu_dai);
++ }
++
++ if (codec_dev->resume)
++ codec_dev->resume(pdev);
++
++ for(i = 0; i < codec->num_dai; i++) {
++ char* stream = codec->dai[i].playback.stream_name;
++ if (stream != NULL)
++ snd_soc_dapm_stream_event(codec, stream,
++ SND_SOC_DAPM_STREAM_RESUME);
++ stream = codec->dai[i].capture.stream_name;
++ if (stream != NULL)
++ snd_soc_dapm_stream_event(codec, stream,
++ SND_SOC_DAPM_STREAM_RESUME);
++ }
++
++ /* unmute any active DAC's */
++ for(i = 0; i < machine->num_links; i++) {
++ struct snd_soc_codec_dai *dai = machine->dai_link[i].codec_dai;
++ if (dai->digital_mute && dai->playback.active)
++ dai->digital_mute(codec, dai, 0);
++ }
++
++ for(i = 0; i < machine->num_links; i++) {
++ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
++ if (cpu_dai->resume && cpu_dai->type != SND_SOC_DAI_AC97)
++ cpu_dai->resume(pdev, cpu_dai);
++ if (platform->resume)
++ platform->resume(pdev, cpu_dai);
++ }
++
++ if (machine->resume_post)
++ machine->resume_post(pdev);
++
++ return 0;
++}
++
++#else
++#define soc_suspend NULL
++#define soc_resume NULL
++#endif
++
++/* probes a new socdev */
++static int soc_probe(struct platform_device *pdev)
++{
++ int ret = 0, i;
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_machine *machine = socdev->machine;
++ struct snd_soc_platform *platform = socdev->platform;
++ struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
++
++ if (machine->probe) {
++ ret = machine->probe(pdev);
++ if(ret < 0)
++ return ret;
++ }
++
++ for (i = 0; i < machine->num_links; i++) {
++ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
++ if (cpu_dai->probe) {
++ ret = cpu_dai->probe(pdev);
++ if(ret < 0)
++ goto cpu_dai_err;
++ }
++ }
++
++ if (codec_dev->probe) {
++ ret = codec_dev->probe(pdev);
++ if(ret < 0)
++ goto cpu_dai_err;
++ }
++
++ if (platform->probe) {
++ ret = platform->probe(pdev);
++ if(ret < 0)
++ goto platform_err;
++ }
++
++ /* DAPM stream work */
++ soc_workq = create_workqueue("kdapm");
++ if (soc_workq == NULL)
++ goto work_err;
++ INIT_WORK(&soc_stream_work, close_delayed_work, socdev);
++ return 0;
++
++work_err:
++ if (platform->remove)
++ platform->remove(pdev);
++
++platform_err:
++ if (codec_dev->remove)
++ codec_dev->remove(pdev);
++
++cpu_dai_err:
++ for (i--; i > 0; i--) {
++ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
++ if (cpu_dai->remove)
++ cpu_dai->remove(pdev);
++ }
++
++ if (machine->remove)
++ machine->remove(pdev);
++
++ return ret;
++}
++
++/* removes a socdev */
++static int soc_remove(struct platform_device *pdev)
++{
++ int i;
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_machine *machine = socdev->machine;
++ struct snd_soc_platform *platform = socdev->platform;
++ struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
++
++ if (soc_workq)
++ destroy_workqueue(soc_workq);
++
++ if (platform->remove)
++ platform->remove(pdev);
++
++ if (codec_dev->remove)
++ codec_dev->remove(pdev);
++
++ for (i = 0; i < machine->num_links; i++) {
++ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
++ if (cpu_dai->remove)
++ cpu_dai->remove(pdev);
++ }
++
++ if (machine->remove)
++ machine->remove(pdev);
++
++ return 0;
++}
++
++/* ASoC platform driver */
++static struct platform_driver soc_driver = {
++ .driver = {
++ .name = "soc-audio",
++ },
++ .probe = soc_probe,
++ .remove = soc_remove,
++ .suspend = soc_suspend,
++ .resume = soc_resume,
++};
++
++/* create a new pcm */
++static int soc_new_pcm(struct snd_soc_device *socdev,
++ struct snd_soc_dai_link *dai_link, int num)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ struct snd_soc_codec_dai *codec_dai = dai_link->codec_dai;
++ struct snd_soc_cpu_dai *cpu_dai = dai_link->cpu_dai;
++ struct snd_soc_pcm_runtime *rtd;
++ struct snd_pcm *pcm;
++ char new_name[64];
++ int ret = 0, playback = 0, capture = 0;
++
++ rtd = kzalloc(sizeof(struct snd_soc_pcm_runtime), GFP_KERNEL);
++ if (rtd == NULL)
++ return -ENOMEM;
++ rtd->cpu_dai = cpu_dai;
++ rtd->codec_dai = codec_dai;
++ rtd->socdev = socdev;
++
++ /* check client and interface hw capabilities */
++ sprintf(new_name, "%s %s-%s-%d",dai_link->stream_name, codec_dai->name,
++ get_dai_name(cpu_dai->type), num);
++
++ if (codec_dai->playback.channels_min)
++ playback = 1;
++ if (codec_dai->capture.channels_min)
++ capture = 1;
++
++ ret = snd_pcm_new(codec->card, new_name, codec->pcm_devs++, playback,
++ capture, &pcm);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: can't create pcm for codec %s\n", codec->name);
++ kfree(rtd);
++ return ret;
++ }
++
++ pcm->private_data = rtd;
++ soc_pcm_ops.mmap = socdev->platform->pcm_ops->mmap;
++ soc_pcm_ops.pointer = socdev->platform->pcm_ops->pointer;
++ soc_pcm_ops.ioctl = socdev->platform->pcm_ops->ioctl;
++ soc_pcm_ops.copy = socdev->platform->pcm_ops->copy;
++ soc_pcm_ops.silence = socdev->platform->pcm_ops->silence;
++ soc_pcm_ops.ack = socdev->platform->pcm_ops->ack;
++ soc_pcm_ops.page = socdev->platform->pcm_ops->page;
++
++ if (playback)
++ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &soc_pcm_ops);
++
++ if (capture)
++ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &soc_pcm_ops);
++
++ ret = socdev->platform->pcm_new(codec->card, codec_dai, pcm);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: platform pcm constructor failed\n");
++ kfree(rtd);
++ return ret;
++ }
++
++ pcm->private_free = socdev->platform->pcm_free;
++ printk(KERN_INFO "asoc: %s <-> %s mapping ok\n", codec_dai->name,
++ cpu_dai->name);
++ return ret;
++}
++
++/* codec register dump */
++static ssize_t codec_reg_show(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ struct snd_soc_device *devdata = dev_get_drvdata(dev);
++ struct snd_soc_codec *codec = devdata->codec;
++ int i, step = 1, count = 0;
++
++ if (!codec->reg_cache_size)
++ return 0;
++
++ if (codec->reg_cache_step)
++ step = codec->reg_cache_step;
++
++ count += sprintf(buf, "%s registers\n", codec->name);
++ for(i = 0; i < codec->reg_cache_size; i += step)
++ count += sprintf(buf + count, "%2x: %4x\n", i, codec->read(codec, i));
++
++ return count;
++}
++static DEVICE_ATTR(codec_reg, 0444, codec_reg_show, NULL);
++
++/**
++ * snd_soc_new_ac97_codec - initailise AC97 device
++ * @codec: audio codec
++ * @ops: AC97 bus operations
++ * @num: AC97 codec number
++ *
++ * Initialises AC97 codec resources for use by ad-hoc devices only.
++ */
++int snd_soc_new_ac97_codec(struct snd_soc_codec *codec,
++ struct snd_ac97_bus_ops *ops, int num)
++{
++ mutex_lock(&codec->mutex);
++
++ codec->ac97 = kzalloc(sizeof(struct snd_ac97), GFP_KERNEL);
++ if (codec->ac97 == NULL) {
++ mutex_unlock(&codec->mutex);
++ return -ENOMEM;
++ }
++
++ codec->ac97->bus = kzalloc(sizeof(struct snd_ac97_bus), GFP_KERNEL);
++ if (codec->ac97->bus == NULL) {
++ kfree(codec->ac97);
++ codec->ac97 = NULL;
++ mutex_unlock(&codec->mutex);
++ return -ENOMEM;
++ }
++
++ codec->ac97->bus->ops = ops;
++ codec->ac97->num = num;
++ mutex_unlock(&codec->mutex);
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_new_ac97_codec);
++
++/**
++ * snd_soc_free_ac97_codec - free AC97 codec device
++ * @codec: audio codec
++ *
++ * Frees AC97 codec device resources.
++ */
++void snd_soc_free_ac97_codec(struct snd_soc_codec *codec)
++{
++ mutex_lock(&codec->mutex);
++ kfree(codec->ac97->bus);
++ kfree(codec->ac97);
++ codec->ac97 = NULL;
++ mutex_unlock(&codec->mutex);
++}
++EXPORT_SYMBOL_GPL(snd_soc_free_ac97_codec);
++
++/**
++ * snd_soc_update_bits - update codec register bits
++ * @codec: audio codec
++ * @reg: codec register
++ * @mask: register mask
++ * @value: new value
++ *
++ * Writes new register value.
++ *
++ * Returns 1 for change else 0.
++ */
++int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg,
++ unsigned short mask, unsigned short value)
++{
++ int change;
++ unsigned short old, new;
++
++ mutex_lock(&io_mutex);
++ old = snd_soc_read(codec, reg);
++ new = (old & ~mask) | value;
++ change = old != new;
++ if (change)
++ snd_soc_write(codec, reg, new);
++
++ mutex_unlock(&io_mutex);
++ return change;
++}
++EXPORT_SYMBOL_GPL(snd_soc_update_bits);
++
++/**
++ * snd_soc_test_bits - test register for change
++ * @codec: audio codec
++ * @reg: codec register
++ * @mask: register mask
++ * @value: new value
++ *
++ * Tests a register with a new value and checks if the new value is
++ * different from the old value.
++ *
++ * Returns 1 for change else 0.
++ */
++int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned short reg,
++ unsigned short mask, unsigned short value)
++{
++ int change;
++ unsigned short old, new;
++
++ mutex_lock(&io_mutex);
++ old = snd_soc_read(codec, reg);
++ new = (old & ~mask) | value;
++ change = old != new;
++ mutex_unlock(&io_mutex);
++
++ return change;
++}
++EXPORT_SYMBOL_GPL(snd_soc_test_bits);
++
++/**
++ * snd_soc_get_rate - get int sample rate
++ * @hwpcmrate: the hardware pcm rate
++ *
++ * Returns the audio rate integaer value, else 0.
++ */
++int snd_soc_get_rate(int hwpcmrate)
++{
++ int rate = ffs(hwpcmrate) - 1;
++
++ if (rate > ARRAY_SIZE(rates))
++ return 0;
++ return rates[rate];
++}
++EXPORT_SYMBOL_GPL(snd_soc_get_rate);
++
++/**
++ * snd_soc_new_pcms - create new sound card and pcms
++ * @socdev: the SoC audio device
++ *
++ * Create a new sound card based upon the codec and interface pcms.
++ *
++ * Returns 0 for success, else error.
++ */
++int snd_soc_new_pcms(struct snd_soc_device *socdev, int idx, const char * xid)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ struct snd_soc_machine *machine = socdev->machine;
++ int ret = 0, i;
++
++ mutex_lock(&codec->mutex);
++
++ /* register a sound card */
++ codec->card = snd_card_new(idx, xid, codec->owner, 0);
++ if (!codec->card) {
++ printk(KERN_ERR "asoc: can't create sound card for codec %s\n",
++ codec->name);
++ mutex_unlock(&codec->mutex);
++ return -ENODEV;
++ }
++
++ codec->card->dev = socdev->dev;
++ codec->card->private_data = codec;
++ strncpy(codec->card->driver, codec->name, sizeof(codec->card->driver));
++
++ /* create the pcms */
++ for(i = 0; i < machine->num_links; i++) {
++ ret = soc_new_pcm(socdev, &machine->dai_link[i], i);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: can't create pcm %s\n",
++ machine->dai_link[i].stream_name);
++ mutex_unlock(&codec->mutex);
++ return ret;
++ }
++ }
++
++ mutex_unlock(&codec->mutex);
++ return ret;
++}
++EXPORT_SYMBOL_GPL(snd_soc_new_pcms);
++
++/**
++ * snd_soc_register_card - register sound card
++ * @socdev: the SoC audio device
++ *
++ * Register a SoC sound card. Also registers an AC97 device if the
++ * codec is AC97 for ad hoc devices.
++ *
++ * Returns 0 for success, else error.
++ */
++int snd_soc_register_card(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ struct snd_soc_machine *machine = socdev->machine;
++ int ret = 0, i, ac97 = 0, err = 0;
++
++ mutex_lock(&codec->mutex);
++ for(i = 0; i < machine->num_links; i++) {
++ if (socdev->machine->dai_link[i].init) {
++ err = socdev->machine->dai_link[i].init(codec);
++ if (err < 0) {
++ printk(KERN_ERR "asoc: failed to init %s\n",
++ socdev->machine->dai_link[i].stream_name);
++ continue;
++ }
++ }
++ if (socdev->machine->dai_link[i].cpu_dai->type == SND_SOC_DAI_AC97)
++ ac97 = 1;
++ }
++ snprintf(codec->card->shortname, sizeof(codec->card->shortname),
++ "%s", machine->name);
++ snprintf(codec->card->longname, sizeof(codec->card->longname),
++ "%s (%s)", machine->name, codec->name);
++
++ ret = snd_card_register(codec->card);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: failed to register soundcard for codec %s\n",
++ codec->name);
++ goto out;
++ }
++
++#ifdef CONFIG_SND_SOC_AC97_BUS
++ if (ac97) {
++ ret = soc_ac97_dev_register(codec);
++ if (ret < 0) {
++ printk(KERN_ERR "asoc: AC97 device register failed\n");
++ snd_card_free(codec->card);
++ goto out;
++ }
++ }
++#endif
++
++ err = snd_soc_dapm_sys_add(socdev->dev);
++ if (err < 0)
++ printk(KERN_WARNING "asoc: failed to add dapm sysfs entries\n");
++
++ err = device_create_file(socdev->dev, &dev_attr_codec_reg);
++ if (err < 0)
++ printk(KERN_WARNING "asoc: failed to add codec sysfs entries\n");
++out:
++ mutex_unlock(&codec->mutex);
++ return ret;
++}
++EXPORT_SYMBOL_GPL(snd_soc_register_card);
++
++/**
++ * snd_soc_free_pcms - free sound card and pcms
++ * @socdev: the SoC audio device
++ *
++ * Frees sound card and pcms associated with the socdev.
++ * Also unregister the codec if it is an AC97 device.
++ */
++void snd_soc_free_pcms(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++
++ mutex_lock(&codec->mutex);
++#ifdef CONFIG_SND_SOC_AC97_BUS
++ if (codec->ac97)
++ soc_ac97_dev_unregister(codec);
++#endif
++
++ if (codec->card)
++ snd_card_free(codec->card);
++ device_remove_file(socdev->dev, &dev_attr_codec_reg);
++ mutex_unlock(&codec->mutex);
++}
++EXPORT_SYMBOL_GPL(snd_soc_free_pcms);
++
++/**
++ * snd_soc_set_runtime_hwparams - set the runtime hardware parameters
++ * @substream: the pcm substream
++ * @hw: the hardware parameters
++ *
++ * Sets the substream runtime hardware parameters.
++ */
++int snd_soc_set_runtime_hwparams(struct snd_pcm_substream *substream,
++ const struct snd_pcm_hardware *hw)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ runtime->hw.info = hw->info;
++ runtime->hw.formats = hw->formats;
++ runtime->hw.period_bytes_min = hw->period_bytes_min;
++ runtime->hw.period_bytes_max = hw->period_bytes_max;
++ runtime->hw.periods_min = hw->periods_min;
++ runtime->hw.periods_max = hw->periods_max;
++ runtime->hw.buffer_bytes_max = hw->buffer_bytes_max;
++ runtime->hw.fifo_size = hw->fifo_size;
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_set_runtime_hwparams);
++
++/**
++ * snd_soc_cnew - create new control
++ * @_template: control template
++ * @data: control private data
++ * @lnng_name: control long name
++ *
++ * Create a new mixer control from a template control.
++ *
++ * Returns 0 for success, else error.
++ */
++struct snd_kcontrol *snd_soc_cnew(const struct snd_kcontrol_new *_template,
++ void *data, char *long_name)
++{
++ struct snd_kcontrol_new template;
++
++ memcpy(&template, _template, sizeof(template));
++ if (long_name)
++ template.name = long_name;
++ template.access = SNDRV_CTL_ELEM_ACCESS_READWRITE;
++ template.index = 0;
++
++ return snd_ctl_new1(&template, data);
++}
++EXPORT_SYMBOL_GPL(snd_soc_cnew);
++
++/**
++ * snd_soc_info_enum_double - enumerated double mixer info callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to provide information about a double enumerated
++ * mixer control.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_info_enum_double(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo)
++{
++ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
++
++ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
++ uinfo->count = e->shift_l == e->shift_r ? 1 : 2;
++ uinfo->value.enumerated.items = e->mask;
++
++ if (uinfo->value.enumerated.item > e->mask - 1)
++ uinfo->value.enumerated.item = e->mask - 1;
++ strcpy(uinfo->value.enumerated.name,
++ e->texts[uinfo->value.enumerated.item]);
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_info_enum_double);
++
++/**
++ * snd_soc_get_enum_double - enumerated double mixer get callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to get the value of a double enumerated mixer.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_get_enum_double(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
++ unsigned short val, bitmask;
++
++ for (bitmask = 1; bitmask < e->mask; bitmask <<= 1)
++ ;
++ val = snd_soc_read(codec, e->reg);
++ ucontrol->value.enumerated.item[0] = (val >> e->shift_l) & (bitmask - 1);
++ if (e->shift_l != e->shift_r)
++ ucontrol->value.enumerated.item[1] =
++ (val >> e->shift_r) & (bitmask - 1);
++
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_get_enum_double);
++
++/**
++ * snd_soc_put_enum_double - enumerated double mixer put callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to set the value of a double enumerated mixer.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_put_enum_double(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
++ unsigned short val;
++ unsigned short mask, bitmask;
++
++ for (bitmask = 1; bitmask < e->mask; bitmask <<= 1)
++ ;
++ if (ucontrol->value.enumerated.item[0] > e->mask - 1)
++ return -EINVAL;
++ val = ucontrol->value.enumerated.item[0] << e->shift_l;
++ mask = (bitmask - 1) << e->shift_l;
++ if (e->shift_l != e->shift_r) {
++ if (ucontrol->value.enumerated.item[1] > e->mask - 1)
++ return -EINVAL;
++ val |= ucontrol->value.enumerated.item[1] << e->shift_r;
++ mask |= (bitmask - 1) << e->shift_r;
++ }
++
++ return snd_soc_update_bits(codec, e->reg, mask, val);
++}
++EXPORT_SYMBOL_GPL(snd_soc_put_enum_double);
++
++/**
++ * snd_soc_info_enum_ext - external enumerated single mixer info callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to provide information about an external enumerated
++ * single mixer.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_info_enum_ext(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo)
++{
++ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
++
++ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
++ uinfo->count = 1;
++ uinfo->value.enumerated.items = e->mask;
++
++ if (uinfo->value.enumerated.item > e->mask - 1)
++ uinfo->value.enumerated.item = e->mask - 1;
++ strcpy(uinfo->value.enumerated.name,
++ e->texts[uinfo->value.enumerated.item]);
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_info_enum_ext);
++
++/**
++ * snd_soc_info_volsw_ext - external single mixer info callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to provide information about a single external mixer control.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_info_volsw_ext(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo)
++{
++ int mask = kcontrol->private_value;
++
++ uinfo->type =
++ mask == 1 ? SNDRV_CTL_ELEM_TYPE_BOOLEAN : SNDRV_CTL_ELEM_TYPE_INTEGER;
++ uinfo->count = 1;
++ uinfo->value.integer.min = 0;
++ uinfo->value.integer.max = mask;
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_info_volsw_ext);
++
++/**
++ * snd_soc_info_bool_ext - external single boolean mixer info callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to provide information about a single boolean external mixer control.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_info_bool_ext(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo)
++{
++ uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
++ uinfo->count = 1;
++ uinfo->value.integer.min = 0;
++ uinfo->value.integer.max = 1;
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_info_bool_ext);
++
++/**
++ * snd_soc_info_volsw - single mixer info callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to provide information about a single mixer control.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_info_volsw(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo)
++{
++ int mask = (kcontrol->private_value >> 16) & 0xff;
++ int shift = (kcontrol->private_value >> 8) & 0x0f;
++ int rshift = (kcontrol->private_value >> 12) & 0x0f;
++
++ uinfo->type =
++ mask == 1 ? SNDRV_CTL_ELEM_TYPE_BOOLEAN : SNDRV_CTL_ELEM_TYPE_INTEGER;
++ uinfo->count = shift == rshift ? 1 : 2;
++ uinfo->value.integer.min = 0;
++ uinfo->value.integer.max = mask;
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_info_volsw);
++
++/**
++ * snd_soc_get_volsw - single mixer get callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to get the value of a single mixer control.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_get_volsw(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ int reg = kcontrol->private_value & 0xff;
++ int shift = (kcontrol->private_value >> 8) & 0x0f;
++ int rshift = (kcontrol->private_value >> 12) & 0x0f;
++ int mask = (kcontrol->private_value >> 16) & 0xff;
++ int invert = (kcontrol->private_value >> 24) & 0x01;
++
++ ucontrol->value.integer.value[0] =
++ (snd_soc_read(codec, reg) >> shift) & mask;
++ if (shift != rshift)
++ ucontrol->value.integer.value[1] =
++ (snd_soc_read(codec, reg) >> rshift) & mask;
++ if (invert) {
++ ucontrol->value.integer.value[0] =
++ mask - ucontrol->value.integer.value[0];
++ if (shift != rshift)
++ ucontrol->value.integer.value[1] =
++ mask - ucontrol->value.integer.value[1];
++ }
++
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_get_volsw);
++
++/**
++ * snd_soc_put_volsw - single mixer put callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to set the value of a single mixer control.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_put_volsw(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ int reg = kcontrol->private_value & 0xff;
++ int shift = (kcontrol->private_value >> 8) & 0x0f;
++ int rshift = (kcontrol->private_value >> 12) & 0x0f;
++ int mask = (kcontrol->private_value >> 16) & 0xff;
++ int invert = (kcontrol->private_value >> 24) & 0x01;
++ int err;
++ unsigned short val, val2, val_mask;
++
++ val = (ucontrol->value.integer.value[0] & mask);
++ if (invert)
++ val = mask - val;
++ val_mask = mask << shift;
++ val = val << shift;
++ if (shift != rshift) {
++ val2 = (ucontrol->value.integer.value[1] & mask);
++ if (invert)
++ val2 = mask - val2;
++ val_mask |= mask << rshift;
++ val |= val2 << rshift;
++ }
++ err = snd_soc_update_bits(codec, reg, val_mask, val);
++ return err;
++}
++EXPORT_SYMBOL_GPL(snd_soc_put_volsw);
++
++/**
++ * snd_soc_info_volsw_2r - double mixer info callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to provide information about a double mixer control that
++ * spans 2 codec registers.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_info_volsw_2r(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo)
++{
++ int mask = (kcontrol->private_value >> 12) & 0xff;
++
++ uinfo->type =
++ mask == 1 ? SNDRV_CTL_ELEM_TYPE_BOOLEAN : SNDRV_CTL_ELEM_TYPE_INTEGER;
++ uinfo->count = 2;
++ uinfo->value.integer.min = 0;
++ uinfo->value.integer.max = mask;
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_info_volsw_2r);
++
++/**
++ * snd_soc_get_volsw_2r - double mixer get callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to get the value of a double mixer control that spans 2 registers.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_get_volsw_2r(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ int reg = kcontrol->private_value & 0xff;
++ int reg2 = (kcontrol->private_value >> 24) & 0xff;
++ int shift = (kcontrol->private_value >> 8) & 0x0f;
++ int mask = (kcontrol->private_value >> 12) & 0xff;
++ int invert = (kcontrol->private_value >> 20) & 0x01;
++
++ ucontrol->value.integer.value[0] =
++ (snd_soc_read(codec, reg) >> shift) & mask;
++ ucontrol->value.integer.value[1] =
++ (snd_soc_read(codec, reg2) >> shift) & mask;
++ if (invert) {
++ ucontrol->value.integer.value[0] =
++ mask - ucontrol->value.integer.value[0];
++ ucontrol->value.integer.value[1] =
++ mask - ucontrol->value.integer.value[1];
++ }
++
++ return 0;
++}
++EXPORT_SYMBOL_GPL(snd_soc_get_volsw_2r);
++
++/**
++ * snd_soc_put_volsw_2r - double mixer set callback
++ * @kcontrol: mixer control
++ * @uinfo: control element information
++ *
++ * Callback to set the value of a double mixer control that spans 2 registers.
++ *
++ * Returns 0 for success.
++ */
++int snd_soc_put_volsw_2r(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
++ int reg = kcontrol->private_value & 0xff;
++ int reg2 = (kcontrol->private_value >> 24) & 0xff;
++ int shift = (kcontrol->private_value >> 8) & 0x0f;
++ int mask = (kcontrol->private_value >> 12) & 0xff;
++ int invert = (kcontrol->private_value >> 20) & 0x01;
++ int err;
++ unsigned short val, val2, val_mask;
++
++ val_mask = mask << shift;
++ val = (ucontrol->value.integer.value[0] & mask);
++ val2 = (ucontrol->value.integer.value[1] & mask);
++
++ if (invert) {
++ val = mask - val;
++ val2 = mask - val2;
++ }
++
++ val = val << shift;
++ val2 = val2 << shift;
++
++ if ((err = snd_soc_update_bits(codec, reg, val_mask, val)) < 0)
++ return err;
++
++ err = snd_soc_update_bits(codec, reg2, val_mask, val2);
++ return err;
++}
++EXPORT_SYMBOL_GPL(snd_soc_put_volsw_2r);
++
++static int __devinit snd_soc_init(void)
++{
++ printk(KERN_INFO "ASoC version %s\n", SND_SOC_VERSION);
++ return platform_driver_register(&soc_driver);
++}
++
++static void snd_soc_exit(void)
++{
++ platform_driver_unregister(&soc_driver);
++}
++
++module_init(snd_soc_init);
++module_exit(snd_soc_exit);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("ALSA SoC Core");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/at91/Kconfig
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/at91/Kconfig
+@@ -0,0 +1,24 @@
++menu "SoC Audio for the Atmel AT91"
++
++config SND_AT91_SOC
++ tristate "SoC Audio for the Atmel AT91 System-on-Chip"
++ depends on ARCH_AT91 && SND
++ select SND_PCM
++ help
++ Say Y or M if you want to add support for codecs attached to
++ the AT91 SSC interface. You will also need
++ to select the audio interfaces to support below.
++
++config SND_AT91_SOC_I2S
++ tristate
++
++config SND_AT91_SOC_ETI_B1_WM8731
++ tristate "SoC I2S Audio support for Endrelia ETI-B1 board"
++ depends on SND_AT91_SOC && MACH_ETI_B1
++ select SND_AT91_SOC_I2S
++ select SND_SOC_WM8731
++ help
++ Say Y if you want to add support for SoC audio on Endrelia
++ ETI-B1 board.
++
++endmenu
+Index: linux-2.6-pxa-new/sound/soc/at91/Makefile
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/at91/Makefile
+@@ -0,0 +1,11 @@
++# AT91 Platform Support
++snd-soc-at91-objs := at91rm9200-pcm.o
++snd-soc-at91-i2s-objs := at91rm9200-i2s.o
++
++obj-$(CONFIG_SND_AT91_SOC) += snd-soc-at91.o
++obj-$(CONFIG_SND_AT91_SOC_I2S) += snd-soc-at91-i2s.o
++
++# AT91 Machine Support
++snd-soc-eti-b1-wm8731-objs := eti_b1_wm8731.o
++
++obj-$(CONFIG_SND_AT91_SOC_ETI_B1_WM8731) += snd-soc-eti-b1-wm8731.o
+Index: linux-2.6-pxa-new/sound/soc/at91/at91rm9200-i2s.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/at91/at91rm9200-i2s.c
+@@ -0,0 +1,715 @@
++/*
++ * at91rm9200-i2s.c -- ALSA Soc Audio Layer Platform driver and DMA engine
++ *
++ * Author: Frank Mandarino <fmandarino@endrelia.com>
++ * Endrelia Technologies Inc.
++ *
++ * Based on pxa2xx Platform drivers by
++ * Liam Girdwood <liam.girdwood@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
++ * 3rd Mar 2006 Initial version.
++ */
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/interrupt.h>
++#include <linux/device.h>
++#include <linux/delay.h>
++#include <linux/clk.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/initval.h>
++#include <sound/soc.h>
++
++#include <asm/arch/at91rm9200.h>
++#include <asm/arch/at91rm9200_ssc.h>
++#include <asm/arch/at91rm9200_pdc.h>
++#include <asm/arch/hardware.h>
++
++#include "at91rm9200-pcm.h"
++
++#if 0
++#define DBG(x...) printk(KERN_DEBUG "at91rm9200-i2s:" x)
++#else
++#define DBG(x...)
++#endif
++
++#define AT91RM9200_I2S_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS | SND_SOC_DAIFMT_NB_NF)
++
++#define AT91RM9200_I2S_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++/* priv is (SSC_CMR.DIV << 16 | SSC_TCMR.PERIOD ) */
++static struct snd_soc_dai_mode at91rm9200_i2s[] = {
++
++ /* 8k: BCLK = (MCLK/10) = (60MHz/50) = 1.2MHz */
++ {
++ .fmt = AT91RM9200_I2S_DAIFMT,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = AT91RM9200_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1500,
++ .bfs = SND_SOC_FSBD(10),
++ .priv = (25 << 16 | 74),
++ },
++
++ /* 16k: BCLK = (MCLK/3) ~= (60MHz/14) = 4.285714MHz */
++ {
++ .fmt = AT91RM9200_I2S_DAIFMT,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_16000,
++ .pcmdir = AT91RM9200_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 750,
++ .bfs = SND_SOC_FSBD(3),
++ .priv = (7 << 16 | 133),
++ },
++
++ /* 32k: BCLK = (MCLK/3) ~= (60MHz/14) = 4.285714MHz */
++ {
++ .fmt = AT91RM9200_I2S_DAIFMT,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = AT91RM9200_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 375,
++ .bfs = SND_SOC_FSBD(3),
++ .priv = (7 << 16 | 66),
++ },
++
++ /* 48k: BCLK = (MCLK/5) ~= (60MHz/26) = 2.3076923MHz */
++ {
++ .fmt = AT91RM9200_I2S_DAIFMT,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = AT91RM9200_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 250,
++ .bfs SND_SOC_FSBD(5),
++ .priv = (13 << 16 | 23),
++ },
++};
++
++
++/*
++ * SSC registers required by the PCM DMA engine.
++ */
++static struct at91rm9200_ssc_regs ssc_reg[3] = {
++ {
++ .cr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_SSC_CR),
++ .ier = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_SSC_IER),
++ .idr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_SSC_IDR),
++ },
++ {
++ .cr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_SSC_CR),
++ .ier = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_SSC_IER),
++ .idr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_SSC_IDR),
++ },
++ {
++ .cr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_SSC_CR),
++ .ier = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_SSC_IER),
++ .idr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_SSC_IDR),
++ },
++};
++
++static struct at91rm9200_pdc_regs pdc_tx_reg[3] = {
++ {
++ .xpr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_TPR),
++ .xcr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_TCR),
++ .xnpr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_TNPR),
++ .xncr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_TNCR),
++ .ptcr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_PTCR),
++ },
++ {
++ .xpr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_TPR),
++ .xcr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_TCR),
++ .xnpr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_TNPR),
++ .xncr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_TNCR),
++ .ptcr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_PTCR),
++ },
++ {
++ .xpr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_TPR),
++ .xcr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_TCR),
++ .xnpr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_TNPR),
++ .xncr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_TNCR),
++ .ptcr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_PTCR),
++ },
++};
++
++static struct at91rm9200_pdc_regs pdc_rx_reg[3] = {
++ {
++ .xpr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_RPR),
++ .xcr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_RCR),
++ .xnpr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_RNPR),
++ .xncr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_RNCR),
++ .ptcr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_PTCR),
++ },
++ {
++ .xpr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_RPR),
++ .xcr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_RCR),
++ .xnpr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_RNPR),
++ .xncr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_RNCR),
++ .ptcr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_PTCR),
++ },
++ {
++ .xpr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_RPR),
++ .xcr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_RCR),
++ .xnpr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_RNPR),
++ .xncr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_RNCR),
++ .ptcr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_PTCR),
++ },
++};
++
++/*
++ * SSC & PDC status bits for transmit and receive.
++ */
++static struct at91rm9200_ssc_mask ssc_tx_mask = {
++ .ssc_enable = AT91_SSC_TXEN,
++ .ssc_disable = AT91_SSC_TXDIS,
++ .ssc_endx = AT91_SSC_ENDTX,
++ .ssc_endbuf = AT91_SSC_TXBUFE,
++ .pdc_enable = AT91_PDC_TXTEN,
++ .pdc_disable = AT91_PDC_TXTDIS,
++};
++
++static struct at91rm9200_ssc_mask ssc_rx_mask = {
++ .ssc_enable = AT91_SSC_RXEN,
++ .ssc_disable = AT91_SSC_RXDIS,
++ .ssc_endx = AT91_SSC_ENDRX,
++ .ssc_endbuf = AT91_SSC_RXBUFF,
++ .pdc_enable = AT91_PDC_RXTEN,
++ .pdc_disable = AT91_PDC_RXTDIS,
++};
++
++/*
++ * A MUTEX is used to protect an SSC initialzed flag which allows
++ * the substream hw_params() call to initialize the SSC only if
++ * there are no other substreams open. If there are other
++ * substreams open, the hw_param() call can only check that
++ * it is using the same format and rate.
++ */
++static DECLARE_MUTEX(ssc0_mutex);
++static DECLARE_MUTEX(ssc1_mutex);
++static DECLARE_MUTEX(ssc2_mutex);
++
++/*
++ * DMA parameters.
++ */
++static at91rm9200_pcm_dma_params_t ssc_dma_params[3][2] = {
++ {{
++ .name = "SSC0/I2S PCM Stereo out",
++ .ssc = &ssc_reg[0],
++ .pdc = &pdc_tx_reg[0],
++ .mask = &ssc_tx_mask,
++ },
++ {
++ .name = "SSC0/I2S PCM Stereo in",
++ .ssc = &ssc_reg[0],
++ .pdc = &pdc_rx_reg[0],
++ .mask = &ssc_rx_mask,
++ }},
++ {{
++ .name = "SSC1/I2S PCM Stereo out",
++ .ssc = &ssc_reg[1],
++ .pdc = &pdc_tx_reg[1],
++ .mask = &ssc_tx_mask,
++ },
++ {
++ .name = "SSC1/I2S PCM Stereo in",
++ .ssc = &ssc_reg[1],
++ .pdc = &pdc_rx_reg[1],
++ .mask = &ssc_rx_mask,
++ }},
++ {{
++ .name = "SSC2/I2S PCM Stereo out",
++ .ssc = &ssc_reg[2],
++ .pdc = &pdc_tx_reg[2],
++ .mask = &ssc_tx_mask,
++ },
++ {
++ .name = "SSC1/I2S PCM Stereo in",
++ .ssc = &ssc_reg[2],
++ .pdc = &pdc_rx_reg[2],
++ .mask = &ssc_rx_mask,
++ }},
++};
++
++
++struct at91rm9200_ssc_state {
++ u32 ssc_cmr;
++ u32 ssc_rcmr;
++ u32 ssc_rfmr;
++ u32 ssc_tcmr;
++ u32 ssc_tfmr;
++ u32 ssc_sr;
++ u32 ssc_imr;
++};
++
++static struct at91rm9200_ssc_info {
++ char *name;
++ void __iomem *ssc_base;
++ u32 pid;
++ spinlock_t lock; /* lock for dir_mask */
++ int dir_mask; /* 0=unused, 1=playback, 2=capture */
++ struct semaphore *mutex;
++ int initialized;
++ int pcmfmt;
++ int rate;
++ at91rm9200_pcm_dma_params_t *dma_params[2];
++ struct at91rm9200_ssc_state ssc_state;
++
++} ssc_info[3] = {
++ {
++ .name = "ssc0",
++ .ssc_base = (void __iomem *) AT91_VA_BASE_SSC0,
++ .pid = AT91_ID_SSC0,
++ .lock = SPIN_LOCK_UNLOCKED,
++ .dir_mask = 0,
++ .mutex = &ssc0_mutex,
++ .initialized = 0,
++ },
++ {
++ .name = "ssc1",
++ .ssc_base = (void __iomem *) AT91_VA_BASE_SSC1,
++ .pid = AT91_ID_SSC1,
++ .lock = SPIN_LOCK_UNLOCKED,
++ .dir_mask = 0,
++ .mutex = &ssc1_mutex,
++ .initialized = 0,
++ },
++ {
++ .name = "ssc2",
++ .ssc_base = (void __iomem *) AT91_VA_BASE_SSC2,
++ .pid = AT91_ID_SSC2,
++ .lock = SPIN_LOCK_UNLOCKED,
++ .dir_mask = 0,
++ .mutex = &ssc2_mutex,
++ .initialized = 0,
++ },
++};
++
++
++static irqreturn_t at91rm9200_i2s_interrupt(int irq, void *dev_id)
++{
++ struct at91rm9200_ssc_info *ssc_p = dev_id;
++ at91rm9200_pcm_dma_params_t *dma_params;
++ u32 ssc_sr;
++ int i;
++
++ ssc_sr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_SR)
++ & at91_ssc_read(ssc_p->ssc_base + AT91_SSC_IMR);
++
++ /*
++ * Loop through the substreams attached to this SSC. If
++ * a DMA-related interrupt occurred on that substream, call
++ * the DMA interrupt handler function, if one has been
++ * registered in the dma_params structure by the PCM driver.
++ */
++ for (i = 0; i < ARRAY_SIZE(ssc_p->dma_params); i++) {
++ dma_params = ssc_p->dma_params[i];
++
++ if (dma_params != NULL && dma_params->dma_intr_handler != NULL &&
++ (ssc_sr &
++ (dma_params->mask->ssc_endx | dma_params->mask->ssc_endbuf)))
++
++ dma_params->dma_intr_handler(ssc_sr, dma_params->substream);
++ }
++
++ return IRQ_HANDLED;
++}
++
++static int at91rm9200_i2s_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct at91rm9200_ssc_info *ssc_p = &ssc_info[rtd->cpu_dai->id];
++ int dir_mask;
++
++ DBG("i2s_startup: SSC_SR=0x%08lx\n",
++ at91_ssc_read(ssc_p->ssc_base + AT91_SSC_SR));
++ dir_mask = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0x1 : 0x2;
++
++ spin_lock_irq(&ssc_p->lock);
++ if (ssc_p->dir_mask & dir_mask) {
++ spin_unlock_irq(&ssc_p->lock);
++ return -EBUSY;
++ }
++ ssc_p->dir_mask |= dir_mask;
++ spin_unlock_irq(&ssc_p->lock);
++
++ return 0;
++}
++
++static void at91rm9200_i2s_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct at91rm9200_ssc_info *ssc_p = &ssc_info[rtd->cpu_dai->id];
++ at91rm9200_pcm_dma_params_t *dma_params = rtd->cpu_dai->dma_data;
++ int dir, dir_mask;
++
++ dir = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0 : 1;
++
++ if (dma_params != NULL) {
++ at91_ssc_write(dma_params->ssc->cr, dma_params->mask->ssc_disable);
++ DBG("%s disabled SSC_SR=0x%08lx\n", (dir ? "receive" : "transmit"),
++ at91_ssc_read(ssc_p->ssc_base + AT91_SSC_SR));
++
++ dma_params->substream = NULL;
++ ssc_p->dma_params[dir] = NULL;
++ }
++
++ dir_mask = 1 << dir;
++
++ spin_lock_irq(&ssc_p->lock);
++ ssc_p->dir_mask &= ~dir_mask;
++ if (!ssc_p->dir_mask) {
++ /* Shutdown the SSC clock. */
++ DBG("Stopping pid %d clock\n", ssc_p->pid);
++ at91_sys_write(AT91_PMC_PCDR, 1<<ssc_p->pid);
++
++ if (ssc_p->initialized)
++ free_irq(ssc_p->pid, ssc_p);
++
++ /* Reset the SSC */
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_CR, AT91_SSC_SWRST);
++
++ /* Force a re-init on the next hw_params() call. */
++ ssc_p->initialized = 0;
++ }
++ spin_unlock_irq(&ssc_p->lock);
++}
++
++#ifdef CONFIG_PM
++static int at91rm9200_i2s_suspend(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ struct at91rm9200_ssc_info *ssc_p;
++
++ if(!dai->active)
++ return 0;
++
++ ssc_p = &ssc_info[dai->id];
++
++ /* Save the status register before disabling transmit and receive. */
++ ssc_p->state->ssc_sr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_SR);
++ at91_ssc_write(ssc_p->ssc_base +
++ AT91_SSC_CR, AT91_SSC_TXDIS | AT91_SSC_RXDIS);
++
++ /* Save the current interrupt mask, then disable unmasked interrupts. */
++ ssc_p->state->ssc_imr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_IMR);
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_IDR, ssc_p->state->ssc_imr);
++
++ ssc_p->state->ssc_cmr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_CMR);
++ ssc_p->state->ssc_rcmr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_RCMR);
++ ssc_p->state->ssc_rfmr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_RCMR);
++ ssc_p->state->ssc_tcmr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_RCMR);
++ ssc_p->state->ssc_tfmr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_RCMR);
++
++ return 0;
++}
++
++static int at91rm9200_i2s_resume(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ struct at91rm9200_ssc_info *ssc_p;
++ u32 cr_mask;
++
++ if(!dai->active)
++ return 0;
++
++ ssc_p = &ssc_info[dai->id];
++
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_RCMR, ssc_p->state->ssc_tfmr);
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_RCMR, ssc_p->state->ssc_tcmr);
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_RCMR, ssc_p->state->ssc_rfmr);
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_RCMR, ssc_p->state->ssc_rcmr);
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_CMR, ssc_p->state->ssc_cmr);
++
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_IER, ssc_p->state->ssc_imr);
++
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_CR,
++ ((ssc_p->state->ssc_sr & AT91_SSC_RXENA) ? AT91_SSC_RXEN : 0) |
++ ((ssc_p->state->ssc_sr & AT91_SSC_TXENA) ? AT91_SSC_TXEN : 0));
++
++ return 0;
++}
++
++#else
++#define at91rm9200_i2s_suspend NULL
++#define at91rm9200_i2s_resume NULL
++#endif
++
++static unsigned int at91rm9200_i2s_config_sysclk(
++ struct snd_soc_cpu_dai *iface, struct snd_soc_clock_info *info,
++ unsigned int clk)
++{
++ /* Currently, there is only support for USB (12Mhz) mode */
++ if (clk != 12000000)
++ return 0;
++ return 12000000;
++}
++
++static int at91rm9200_i2s_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ int id = rtd->cpu_dai->id;
++ struct at91rm9200_ssc_info *ssc_p = &ssc_info[id];
++ at91rm9200_pcm_dma_params_t *dma_params;
++ unsigned int pcmfmt, rate;
++ int dir, channels, bits;
++ struct clk *mck_clk;
++ unsigned long bclk;
++ u32 div, period, tfmr, rfmr, tcmr, rcmr;
++ int ret;
++
++ /*
++ * Currently, there is only one set of dma params for
++ * each direction. If more are added, this code will
++ * have to be changed to select the proper set.
++ */
++ dir = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0 : 1;
++
++ dma_params = &ssc_dma_params[id][dir];
++ dma_params->substream = substream;
++
++ ssc_p->dma_params[dir] = dma_params;
++ rtd->cpu_dai->dma_data = dma_params;
++
++ rate = params_rate(params);
++ channels = params_channels(params);
++
++ pcmfmt = rtd->cpu_dai->dai_runtime.pcmfmt;
++ switch (pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ /* likely this is all we'll ever support, but ... */
++ bits = 16;
++ dma_params->pdc_xfer_size = 2;
++ break;
++ default:
++ printk(KERN_WARNING "at91rm9200-i2s: unsupported format %x\n",
++ pcmfmt);
++ return -EINVAL;
++ }
++
++ /* Don't allow both SSC substreams to initialize at the same time. */
++ down(ssc_p->mutex);
++
++ /*
++ * If this SSC is alreadly initialized, then this substream must use
++ * the same format and rate.
++ */
++ if (ssc_p->initialized) {
++ if (pcmfmt != ssc_p->pcmfmt || rate != ssc_p->rate) {
++ printk(KERN_WARNING "at91rm9200-i2s: "
++ "incompatible substream in other direction\n");
++ up(ssc_p->mutex);
++ return -EINVAL;
++ }
++ } else {
++ /* Enable PMC peripheral clock for this SSC */
++ DBG("Starting pid %d clock\n", ssc_p->pid);
++ at91_sys_write(AT91_PMC_PCER, 1<<ssc_p->pid);
++
++ /* Reset the SSC */
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_CR, AT91_SSC_SWRST);
++
++ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_RPR, 0);
++ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_RCR, 0);
++ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_RNPR, 0);
++ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_RNCR, 0);
++ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_TPR, 0);
++ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_TCR, 0);
++ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_TNPR, 0);
++ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_TNCR, 0);
++
++ mck_clk = clk_get(NULL, "mck");
++
++ div = rtd->cpu_dai->dai_runtime.priv >> 16;
++ period = rtd->cpu_dai->dai_runtime.priv & 0xffff;
++ bclk = 60000000 / (2 * div);
++
++ DBG("mck %ld fsbd %d bfs %d bfs_real %d bclk %ld div %d period %d\n",
++ clk_get_rate(mck_clk),
++ SND_SOC_FSBD(6),
++ rtd->cpu_dai->dai_runtime.bfs,
++ SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs),
++ bclk,
++ div,
++ period);
++
++ clk_put(mck_clk);
++
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_CMR, div);
++
++ /*
++ * Setup the TFMR and RFMR for the proper data format.
++ */
++ tfmr =
++ (( AT91_SSC_FSEDGE_POSITIVE ) & AT91_SSC_FSEDGE)
++ | (( 0 << 23) & AT91_SSC_FSDEN)
++ | (( AT91_SSC_FSOS_NEGATIVE ) & AT91_SSC_FSOS)
++ | (((bits - 1) << 16) & AT91_SSC_FSLEN)
++ | (((channels - 1) << 8) & AT91_SSC_DATNB)
++ | (( 1 << 7) & AT91_SSC_MSBF)
++ | (( 0 << 5) & AT91_SSC_DATDEF)
++ | (((bits - 1) << 0) & AT91_SSC_DATALEN);
++ DBG("SSC_TFMR=0x%08x\n", tfmr);
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_TFMR, tfmr);
++
++ rfmr =
++ (( AT91_SSC_FSEDGE_POSITIVE ) & AT91_SSC_FSEDGE)
++ | (( AT91_SSC_FSOS_NONE ) & AT91_SSC_FSOS)
++ | (( 0 << 16) & AT91_SSC_FSLEN)
++ | (((channels - 1) << 8) & AT91_SSC_DATNB)
++ | (( 1 << 7) & AT91_SSC_MSBF)
++ | (( 0 << 5) & AT91_SSC_LOOP)
++ | (((bits - 1) << 0) & AT91_SSC_DATALEN);
++
++ DBG("SSC_RFMR=0x%08x\n", rfmr);
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_RFMR, rfmr);
++
++ /*
++ * Setup the TCMR and RCMR to generate the proper BCLK
++ * and LRC signals.
++ */
++ tcmr =
++ (( period << 24) & AT91_SSC_PERIOD)
++ | (( 1 << 16) & AT91_SSC_STTDLY)
++ | (( AT91_SSC_START_FALLING_RF ) & AT91_SSC_START)
++ | (( AT91_SSC_CKI_FALLING ) & AT91_SSC_CKI)
++ | (( AT91_SSC_CKO_CONTINUOUS ) & AT91_SSC_CKO)
++ | (( AT91_SSC_CKS_DIV ) & AT91_SSC_CKS);
++
++ DBG("SSC_TCMR=0x%08x\n", tcmr);
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_TCMR, tcmr);
++
++ rcmr =
++ (( 0 << 24) & AT91_SSC_PERIOD)
++ | (( 1 << 16) & AT91_SSC_STTDLY)
++ | (( AT91_SSC_START_TX_RX ) & AT91_SSC_START)
++ | (( AT91_SSC_CK_RISING ) & AT91_SSC_CKI)
++ | (( AT91_SSC_CKO_NONE ) & AT91_SSC_CKO)
++ | (( AT91_SSC_CKS_CLOCK ) & AT91_SSC_CKS);
++
++ DBG("SSC_RCMR=0x%08x\n", rcmr);
++ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_RCMR, rcmr);
++
++ if ((ret = request_irq(ssc_p->pid, at91rm9200_i2s_interrupt,
++ 0, ssc_p->name, ssc_p)) < 0) {
++ printk(KERN_WARNING "at91rm9200-i2s: request_irq failure\n");
++ return ret;
++ }
++
++ /*
++ * Save the current substream parameters in order to check
++ * that the substream in the opposite direction uses the
++ * same parameters.
++ */
++ ssc_p->pcmfmt = pcmfmt;
++ ssc_p->rate = rate;
++ ssc_p->initialized = 1;
++
++ DBG("hw_params: SSC initialized\n");
++ }
++
++ up(ssc_p->mutex);
++
++ return 0;
++}
++
++
++static int at91rm9200_i2s_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ at91rm9200_pcm_dma_params_t *dma_params = rtd->cpu_dai->dma_data;
++
++ at91_ssc_write(dma_params->ssc->cr, dma_params->mask->ssc_enable);
++
++ DBG("%s enabled SSC_SR=0x%08lx\n",
++ substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? "transmit" : "receive",
++ at91_ssc_read(ssc_info[rtd->cpu_dai->id].ssc_base + AT91_SSC_SR));
++ return 0;
++}
++
++
++struct snd_soc_cpu_dai at91rm9200_i2s_dai[] = {
++ { .name = "at91rm9200-ssc0/i2s",
++ .id = 0,
++ .type = SND_SOC_DAI_I2S,
++ .suspend = at91rm9200_i2s_suspend,
++ .resume = at91rm9200_i2s_resume,
++ .config_sysclk = at91rm9200_i2s_config_sysclk,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .ops = {
++ .startup = at91rm9200_i2s_startup,
++ .shutdown = at91rm9200_i2s_shutdown,
++ .prepare = at91rm9200_i2s_prepare,
++ .hw_params = at91rm9200_i2s_hw_params,},
++ .caps = {
++ .mode = &at91rm9200_i2s[0],
++ .num_modes = ARRAY_SIZE(at91rm9200_i2s),},
++ },
++ { .name = "at91rm9200-ssc1/i2s",
++ .id = 1,
++ .type = SND_SOC_DAI_I2S,
++ .suspend = at91rm9200_i2s_suspend,
++ .resume = at91rm9200_i2s_resume,
++ .config_sysclk = at91rm9200_i2s_config_sysclk,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .ops = {
++ .startup = at91rm9200_i2s_startup,
++ .shutdown = at91rm9200_i2s_shutdown,
++ .prepare = at91rm9200_i2s_prepare,
++ .hw_params = at91rm9200_i2s_hw_params,},
++ .caps = {
++ .mode = &at91rm9200_i2s[0],
++ .num_modes = ARRAY_SIZE(at91rm9200_i2s),},
++ },
++ { .name = "at91rm9200-ssc2/i2s",
++ .id = 2,
++ .type = SND_SOC_DAI_I2S,
++ .suspend = at91rm9200_i2s_suspend,
++ .resume = at91rm9200_i2s_resume,
++ .config_sysclk = at91rm9200_i2s_config_sysclk,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .ops = {
++ .startup = at91rm9200_i2s_startup,
++ .shutdown = at91rm9200_i2s_shutdown,
++ .prepare = at91rm9200_i2s_prepare,
++ .hw_params = at91rm9200_i2s_hw_params,},
++ .caps = {
++ .mode = &at91rm9200_i2s[0],
++ .num_modes = ARRAY_SIZE(at91rm9200_i2s),},
++ },
++};
++
++EXPORT_SYMBOL_GPL(at91rm9200_i2s_dai);
++
++/* Module information */
++MODULE_AUTHOR("Frank Mandarino, fmandarino@endrelia.com, www.endrelia.com");
++MODULE_DESCRIPTION("AT91RM9200 I2S ASoC Interface");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/at91/at91rm9200-pcm.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/at91/at91rm9200-pcm.c
+@@ -0,0 +1,428 @@
++/*
++ * at91rm9200-pcm.c -- ALSA PCM interface for the Atmel AT91RM9200 chip.
++ *
++ * Author: Frank Mandarino <fmandarino@endrelia.com>
++ * Endrelia Technologies Inc.
++ * Created: Mar 3, 2006
++ *
++ * Based on pxa2xx-pcm.c by:
++ *
++ * Author: Nicolas Pitre
++ * Created: Nov 30, 2004
++ * Copyright: (C) 2004 MontaVista Software, 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/module.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/slab.h>
++#include <linux/dma-mapping.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++
++#include <asm/arch/at91rm9200.h>
++#include <asm/arch/at91rm9200_ssc.h>
++#include <asm/arch/at91rm9200_pdc.h>
++#include <asm/arch/hardware.h>
++
++#include "at91rm9200-pcm.h"
++
++#if 0
++#define DBG(x...) printk(KERN_INFO "at91rm9200-pcm: " x)
++#else
++#define DBG(x...)
++#endif
++
++static const snd_pcm_hardware_t at91rm9200_pcm_hardware = {
++ .info = SNDRV_PCM_INFO_MMAP |
++ SNDRV_PCM_INFO_MMAP_VALID |
++ SNDRV_PCM_INFO_INTERLEAVED |
++ SNDRV_PCM_INFO_PAUSE,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ .period_bytes_min = 32,
++ .period_bytes_max = 8192,
++ .periods_min = 2,
++ .periods_max = 1024,
++ .buffer_bytes_max = 32 * 1024,
++};
++
++struct at91rm9200_runtime_data {
++ at91rm9200_pcm_dma_params_t *params;
++ dma_addr_t dma_buffer; /* physical address of dma buffer */
++ dma_addr_t dma_buffer_end; /* first address beyond DMA buffer */
++ size_t period_size;
++ dma_addr_t period_ptr; /* physical address of next period */
++ u32 pdc_xpr_save; /* PDC register save */
++ u32 pdc_xcr_save;
++ u32 pdc_xnpr_save;
++ u32 pdc_xncr_save;
++};
++
++static void at91rm9200_pcm_dma_irq(u32 ssc_sr,
++ struct snd_pcm_substream *substream)
++{
++ struct at91rm9200_runtime_data *prtd = substream->runtime->private_data;
++ at91rm9200_pcm_dma_params_t *params = prtd->params;
++ static int count = 0;
++
++ count++;
++
++ if (ssc_sr & params->mask->ssc_endbuf) {
++
++ printk(KERN_WARNING
++ "at91rm9200-pcm: buffer %s on %s (SSC_SR=%#x, count=%d)\n",
++ substream->stream == SNDRV_PCM_STREAM_PLAYBACK
++ ? "underrun" : "overrun",
++ params->name, ssc_sr, count);
++
++ /* re-start the PDC */
++ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_disable);
++
++ prtd->period_ptr += prtd->period_size;
++ if (prtd->period_ptr >= prtd->dma_buffer_end) {
++ prtd->period_ptr = prtd->dma_buffer;
++ }
++
++ at91_ssc_write(params->pdc->xpr, prtd->period_ptr);
++ at91_ssc_write(params->pdc->xcr,
++ prtd->period_size / params->pdc_xfer_size);
++
++ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_enable);
++ }
++
++ if (ssc_sr & params->mask->ssc_endx) {
++
++ /* Load the PDC next pointer and counter registers */
++ prtd->period_ptr += prtd->period_size;
++ if (prtd->period_ptr >= prtd->dma_buffer_end) {
++ prtd->period_ptr = prtd->dma_buffer;
++ }
++ at91_ssc_write(params->pdc->xnpr, prtd->period_ptr);
++ at91_ssc_write(params->pdc->xncr,
++ prtd->period_size / params->pdc_xfer_size);
++ }
++
++ snd_pcm_period_elapsed(substream);
++}
++
++static int at91rm9200_pcm_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ snd_pcm_runtime_t *runtime = substream->runtime;
++ struct at91rm9200_runtime_data *prtd = runtime->private_data;
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ /* this may get called several times by oss emulation
++ * with different params */
++
++ snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
++ runtime->dma_bytes = params_buffer_bytes(params);
++
++ prtd->params = rtd->cpu_dai->dma_data;
++ prtd->params->dma_intr_handler = at91rm9200_pcm_dma_irq;
++
++ prtd->dma_buffer = runtime->dma_addr;
++ prtd->dma_buffer_end = runtime->dma_addr + runtime->dma_bytes;
++ prtd->period_size = params_period_bytes(params);
++
++ DBG("hw_params: DMA for %s initialized (dma_bytes=%d, period_size=%d)\n",
++ prtd->params->name, runtime->dma_bytes, prtd->period_size);
++ return 0;
++}
++
++static int at91rm9200_pcm_hw_free(struct snd_pcm_substream *substream)
++{
++ struct at91rm9200_runtime_data *prtd = substream->runtime->private_data;
++ at91rm9200_pcm_dma_params_t *params = prtd->params;
++
++ if (params != NULL) {
++ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_disable);
++ prtd->params->dma_intr_handler = NULL;
++ }
++
++ return 0;
++}
++
++static int at91rm9200_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct at91rm9200_runtime_data *prtd = substream->runtime->private_data;
++ at91rm9200_pcm_dma_params_t *params = prtd->params;
++
++ at91_ssc_write(params->ssc->idr,
++ params->mask->ssc_endx | params->mask->ssc_endbuf);
++
++ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_disable);
++ return 0;
++}
++
++static int at91rm9200_pcm_trigger(struct snd_pcm_substream *substream,
++ int cmd)
++{
++ struct at91rm9200_runtime_data *prtd = substream->runtime->private_data;
++ at91rm9200_pcm_dma_params_t *params = prtd->params;
++ int ret = 0;
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ prtd->period_ptr = prtd->dma_buffer;
++
++ at91_ssc_write(params->pdc->xpr, prtd->period_ptr);
++ at91_ssc_write(params->pdc->xcr,
++ prtd->period_size / params->pdc_xfer_size);
++
++ prtd->period_ptr += prtd->period_size;
++ at91_ssc_write(params->pdc->xnpr, prtd->period_ptr);
++ at91_ssc_write(params->pdc->xncr,
++ prtd->period_size / params->pdc_xfer_size);
++
++ DBG("trigger: period_ptr=%lx, xpr=%lx, xcr=%ld, xnpr=%lx, xncr=%ld\n",
++ (unsigned long) prtd->period_ptr,
++ at91_ssc_read(params->pdc->xpr),
++ at91_ssc_read(params->pdc->xcr),
++ at91_ssc_read(params->pdc->xnpr),
++ at91_ssc_read(params->pdc->xncr));
++
++ at91_ssc_write(params->ssc->ier,
++ params->mask->ssc_endx | params->mask->ssc_endbuf);
++
++ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_enable);
++
++ DBG("sr=%lx imr=%lx\n", at91_ssc_read(params->ssc->ier - 4),
++ at91_ssc_read(params->ssc->ier + 8));
++ break;
++
++ case SNDRV_PCM_TRIGGER_STOP:
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_disable);
++ break;
++
++ case SNDRV_PCM_TRIGGER_RESUME:
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_enable);
++ break;
++
++ default:
++ ret = -EINVAL;
++ }
++
++ return ret;
++}
++
++static snd_pcm_uframes_t at91rm9200_pcm_pointer(
++ struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct at91rm9200_runtime_data *prtd = runtime->private_data;
++ at91rm9200_pcm_dma_params_t *params = prtd->params;
++ dma_addr_t ptr;
++ snd_pcm_uframes_t x;
++
++ ptr = (dma_addr_t) at91_ssc_read(params->pdc->xpr);
++ x = bytes_to_frames(runtime, ptr - prtd->dma_buffer);
++
++ if (x == runtime->buffer_size)
++ x = 0;
++ return x;
++}
++
++static int at91rm9200_pcm_open(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct at91rm9200_runtime_data *prtd;
++ int ret = 0;
++
++ snd_soc_set_runtime_hwparams(substream, &at91rm9200_pcm_hardware);
++
++ /* ensure that buffer size is a multiple of period size */
++ ret = snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS);
++ if (ret < 0)
++ goto out;
++
++ prtd = kzalloc(sizeof(struct at91rm9200_runtime_data), GFP_KERNEL);
++ if (prtd == NULL) {
++ ret = -ENOMEM;
++ goto out;
++ }
++ runtime->private_data = prtd;
++
++ out:
++ return ret;
++}
++
++static int at91rm9200_pcm_close(struct snd_pcm_substream *substream)
++{
++ struct at91rm9200_runtime_data *prtd = substream->runtime->private_data;
++
++ kfree(prtd);
++ return 0;
++}
++
++static int at91rm9200_pcm_mmap(struct snd_pcm_substream *substream,
++ struct vm_area_struct *vma)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++
++ return dma_mmap_writecombine(substream->pcm->card->dev, vma,
++ runtime->dma_area,
++ runtime->dma_addr,
++ runtime->dma_bytes);
++}
++
++struct snd_pcm_ops at91rm9200_pcm_ops = {
++ .open = at91rm9200_pcm_open,
++ .close = at91rm9200_pcm_close,
++ .ioctl = snd_pcm_lib_ioctl,
++ .hw_params = at91rm9200_pcm_hw_params,
++ .hw_free = at91rm9200_pcm_hw_free,
++ .prepare = at91rm9200_pcm_prepare,
++ .trigger = at91rm9200_pcm_trigger,
++ .pointer = at91rm9200_pcm_pointer,
++ .mmap = at91rm9200_pcm_mmap,
++};
++
++static int at91rm9200_pcm_preallocate_dma_buffer(struct snd_pcm *pcm,
++ int stream)
++{
++ struct snd_pcm_substream *substream = pcm->streams[stream].substream;
++ struct snd_dma_buffer *buf = &substream->dma_buffer;
++ size_t size = at91rm9200_pcm_hardware.buffer_bytes_max;
++
++ buf->dev.type = SNDRV_DMA_TYPE_DEV;
++ buf->dev.dev = pcm->card->dev;
++ buf->private_data = NULL;
++ buf->area = dma_alloc_writecombine(pcm->card->dev, size,
++ &buf->addr, GFP_KERNEL);
++
++ DBG("preallocate_dma_buffer: area=%p, addr=%p, size=%d\n",
++ (void *) buf->area,
++ (void *) buf->addr,
++ size);
++
++ if (!buf->area)
++ return -ENOMEM;
++
++ buf->bytes = size;
++ return 0;
++}
++
++static u64 at91rm9200_pcm_dmamask = 0xffffffff;
++
++static int at91rm9200_pcm_new(struct snd_card *card,
++ struct snd_soc_codec_dai *dai, struct snd_pcm *pcm)
++{
++ int ret = 0;
++
++ if (!card->dev->dma_mask)
++ card->dev->dma_mask = &at91rm9200_pcm_dmamask;
++ if (!card->dev->coherent_dma_mask)
++ card->dev->coherent_dma_mask = 0xffffffff;
++
++ if (dai->playback.channels_min) {
++ ret = at91rm9200_pcm_preallocate_dma_buffer(pcm,
++ SNDRV_PCM_STREAM_PLAYBACK);
++ if (ret)
++ goto out;
++ }
++
++ if (dai->capture.channels_min) {
++ ret = at91rm9200_pcm_preallocate_dma_buffer(pcm,
++ SNDRV_PCM_STREAM_CAPTURE);
++ if (ret)
++ goto out;
++ }
++ out:
++ return ret;
++}
++
++static void at91rm9200_pcm_free_dma_buffers(struct snd_pcm *pcm)
++{
++ struct snd_pcm_substream *substream;
++ struct snd_dma_buffer *buf;
++ int stream;
++
++ for (stream = 0; stream < 2; stream++) {
++ substream = pcm->streams[stream].substream;
++ if (!substream)
++ continue;
++
++ buf = &substream->dma_buffer;
++ if (!buf->area)
++ continue;
++
++ dma_free_writecombine(pcm->card->dev, buf->bytes,
++ buf->area, buf->addr);
++ buf->area = NULL;
++ }
++}
++
++static int at91rm9200_pcm_suspend(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ struct snd_pcm_runtime *runtime = dai->runtime;
++ struct at91rm9200_runtime_data *prtd;
++ at91rm9200_pcm_dma_params_t *params;
++
++ if (!runtime)
++ return 0;
++
++ prtd = runtime->private_data;
++ params = prtd->params;
++
++ /* disable the PDC and save the PDC registers */
++
++ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_disable);
++
++ prtd->pdc_xpr_save = at91_ssc_read(params->pdc->xpr);
++ prtd->pdc_xcr_save = at91_ssc_read(params->pdc->xcr);
++ prtd->pdc_xnpr_save = at91_ssc_read(params->pdc->xnpr);
++ prtd->pdc_xncr_save = at91_ssc_read(params->pdc->xncr);
++
++ return 0;
++}
++
++static int at91rm9200_pcm_resume(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ struct snd_pcm_runtime *runtime = dai->runtime;
++ struct at91rm9200_runtime_data *prtd;
++ at91rm9200_pcm_dma_params_t *params;
++
++ if (!runtime)
++ return 0;
++
++ prtd = runtime->private_data;
++ params = prtd->params;
++
++ /* restore the PDC registers and enable the PDC */
++ at91_ssc_write(params->pdc->xpr, prtd->pdc_xpr_save);
++ at91_ssc_write(params->pdc->xcr, prtd->pdc_xcr_save);
++ at91_ssc_write(params->pdc->xnpr, prtd->pdc_xnpr_save);
++ at91_ssc_write(params->pdc->xncr, prtd->pdc_xncr_save);
++
++ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_enable);
++ return 0;
++}
++
++struct snd_soc_platform at91rm9200_soc_platform = {
++ .name = "at91rm9200-audio",
++ .pcm_ops = &at91rm9200_pcm_ops,
++ .pcm_new = at91rm9200_pcm_new,
++ .pcm_free = at91rm9200_pcm_free_dma_buffers,
++ .suspend = at91rm9200_pcm_suspend,
++ .resume = at91rm9200_pcm_resume,
++};
++
++EXPORT_SYMBOL_GPL(at91rm9200_soc_platform);
++
++MODULE_AUTHOR("Frank Mandarino <fmandarino@endrelia.com>");
++MODULE_DESCRIPTION("Atmel AT91RM9200 PCM module");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/at91/at91rm9200-pcm.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/at91/at91rm9200-pcm.h
+@@ -0,0 +1,75 @@
++/*
++ * at91rm9200-pcm.h - ALSA PCM interface for the Atmel AT91RM9200 chip
++ *
++ * Author: Frank Mandarino <fmandarino@endrelia.com>
++ * Endrelia Technologies Inc.
++ * Created: Mar 3, 2006
++ *
++ * Based on pxa2xx-pcm.h by:
++ *
++ * Author: Nicolas Pitre
++ * Created: Nov 30, 2004
++ * Copyright: MontaVista Software, 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.
++ */
++
++/*
++ * Registers and status bits that are required by the PCM driver.
++ */
++struct at91rm9200_ssc_regs {
++ void __iomem *cr; /* SSC control */
++ void __iomem *ier; /* SSC interrupt enable */
++ void __iomem *idr; /* SSC interrupt disable */
++};
++
++struct at91rm9200_pdc_regs {
++ void __iomem *xpr; /* PDC recv/trans pointer */
++ void __iomem *xcr; /* PDC recv/trans counter */
++ void __iomem *xnpr; /* PDC next recv/trans pointer */
++ void __iomem *xncr; /* PDC next recv/trans counter */
++ void __iomem *ptcr; /* PDC transfer control */
++};
++
++struct at91rm9200_ssc_mask {
++ u32 ssc_enable; /* SSC recv/trans enable */
++ u32 ssc_disable; /* SSC recv/trans disable */
++ u32 ssc_endx; /* SSC ENDTX or ENDRX */
++ u32 ssc_endbuf; /* SSC TXBUFE or RXBUFF */
++ u32 pdc_enable; /* PDC recv/trans enable */
++ u32 pdc_disable; /* PDC recv/trans disable */
++};
++
++
++/*
++ * This structure, shared between the PCM driver and the interface,
++ * contains all information required by the PCM driver to perform the
++ * PDC DMA operation. All fields except dma_intr_handler() are initialized
++ * by the interface. The dms_intr_handler() pointer is set by the PCM
++ * driver and called by the interface SSC interrupt handler if it is
++ * non-NULL.
++ */
++typedef struct {
++ char *name; /* stream identifier */
++ int pdc_xfer_size; /* PDC counter increment in bytes */
++ struct at91rm9200_ssc_regs *ssc; /* SSC register addresses */
++ struct at91rm9200_pdc_regs *pdc; /* PDC receive/transmit registers */
++ struct at91rm9200_ssc_mask *mask;/* SSC & PDC status bits */
++ snd_pcm_substream_t *substream;
++ void (*dma_intr_handler)(u32, snd_pcm_substream_t *);
++} at91rm9200_pcm_dma_params_t;
++
++extern struct snd_soc_cpu_dai at91rm9200_i2s_dai[3];
++extern struct snd_soc_platform at91rm9200_soc_platform;
++
++
++/*
++ * SSC I/O helpers.
++ * E.g., at91_ssc_write(AT91_SSC(1) + AT91_SSC_CR, AT91_SSC_RXEN);
++ */
++#define AT91_SSC(x) (((x)==0) ? AT91_VA_BASE_SSC0 :\
++ ((x)==1) ? AT91_VA_BASE_SSC1 : ((x)==2) ? AT91_VA_BASE_SSC2 : NULL)
++#define at91_ssc_read(a) ((unsigned long) __raw_readl(a))
++#define at91_ssc_write(a,v) __raw_writel((v),(a))
+Index: linux-2.6-pxa-new/sound/soc/imx/imx-ssi.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/imx/imx-ssi.c
+@@ -0,0 +1,452 @@
++/*
++ * imx-ssi.c -- SSI driver for Freescale IMX
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * Based on mxc-alsa-mc13783 (C) 2006 Freescale.
++ *
++ * 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
++ * 29th Aug 2006 Initial version.
++ *
++ */
++
++#define IMX_DSP_DAIFMT \
++ ( SND_SOC_DAIFMT_DSP__A |SND_SOC_DAIFMT_DSP_B | \
++ SND_SOC_DAIFMT_CBS_CFS |SND_SOC_DAIFMT_CBM_CFS | \
++ SND_SOC_DAIFMT_CBS_CFM |SND_SOC_DAIFMT_NB_NF |\
++ SND_SOC_DAIFMT_NB_IF)
++
++#define IMX_DSP_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define IMX_DSP_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 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | \
++ SNDRV_PCM_RATE_96000)
++
++#define IMX_DSP_BITS \
++ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
++ SNDRV_PCM_FMTBIT_S24_LE)
++
++static struct snd_soc_dai_mode imx_dsp_pcm_modes[] = {
++
++ /* frame master and clock slave mode */
++ {IMX_DSP_DAIFMT | SND_SOC_DAIFMT_CBM_CFS,
++ SND_SOC_DAITDM_LRDW(0,0), IMX_DSP_BITS, IMX_DSP_RATES,
++ IMX_DSP_DIR, 0, SND_SOC_FS_ALL,
++ SND_SOC_FSB(32) | SND_SOC_FSB(32) | SND_SOC_FSB(16)},
++
++};
++
++static imx_pcm_dma_params_t imx_ssi1_pcm_stereo_out = {
++ .name = "SSI1 PCM Stereo out",
++ .params = {
++ .bd_number = 1,
++ .transfer_type = emi_2_per,
++ .watermark_level = SDMA_TXFIFO_WATERMARK,
++ .word_size = TRANSFER_16BIT, // maybe add this in setup func
++ .per_address = SSI1_STX0,
++ .event_id = DMA_REQ_SSI1_TX1,
++ .peripheral_type = SSI,
++ },
++};
++
++static imx_pcm_dma_params_t imx_ssi1_pcm_stereo_in = {
++ .name = "SSI1 PCM Stereo in",
++ .params = {
++ .bd_number = 1,
++ .transfer_type = per_2_emi,
++ .watermark_level = SDMA_RXFIFO_WATERMARK,
++ .word_size = TRANSFER_16BIT, // maybe add this in setup func
++ .per_address = SSI1_SRX0,
++ .event_id = DMA_REQ_SSI1_RX1,
++ .peripheral_type = SSI,
++ },
++};
++
++static imx_pcm_dma_params_t imx_ssi2_pcm_stereo_out = {
++ .name = "SSI2 PCM Stereo out",
++ .params = {
++ .bd_number = 1,
++ .transfer_type = per_2_emi,
++ .watermark_level = SDMA_TXFIFO_WATERMARK,
++ .word_size = TRANSFER_16BIT, // maybe add this in setup func
++ .per_address = SSI2_STX0,
++ .event_id = DMA_REQ_SSI2_TX1,
++ .peripheral_type = SSI,
++ },
++};
++
++static imx_pcm_dma_params_t imx_ssi2_pcm_stereo_in = {
++ .name = "SSI2 PCM Stereo in",
++ .params = {
++ .bd_number = 1,
++ .transfer_type = per_2_emi,
++ .watermark_level = SDMA_RXFIFO_WATERMARK,
++ .word_size = TRANSFER_16BIT, // maybe add this in setup func
++ .per_address = SSI2_SRX0,
++ .event_id = DMA_REQ_SSI2_RX1,
++ .peripheral_type = SSI,
++ },
++};
++
++static int imx_dsp_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ if (!rtd->cpu_dai->active) {
++
++ }
++
++ return 0;
++}
++
++static int imx_ssi1_hw_tx_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 bfs, div;
++
++ bfs = SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs);
++
++ SSI1_STCR = 0;
++ SSI1_STCCR = 0;
++
++ /* DAI mode */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_DSP_B:
++ SSI1_STCR |= SSI_STCR_TEFS; // data 1 bit after sync
++ case SND_SOC_DAIFMT_DSP_A:
++ SSI1_STCR |= SSI_STCR_TFSL; // frame is 1 bclk long
++ break;
++ }
++
++ /* DAI clock inversion */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_IB_IF:
++ SSI1_STCR |= SSI_STCR_TFSI | SSI_STCR_TSCKP;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ SSI1_STCR |= SSI_STCR_TSCKP;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ SSI1_STCR |= SSI_STCR_TFSI;
++ break;
++ }
++
++ /* DAI data (word) size */
++ switch(rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ SSI1_STCCR |= SSI_STCCR_WL(16);
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ SSI1_STCCR |= SSI_STCCR_WL(20);
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ SSI1_STCCR |= SSI_STCCR_WL(24);
++ break;
++ }
++
++ /* DAI clock master masks */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK){
++ case SND_SOC_DAIFMT_CBM_CFM:
++ SSI1_STCR |= SSI_STCR_TFDIR | SSI_STCR_TXDIR;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFM:
++ SSI1_STCR |= SSI_STCR_TFDIR;
++ break;
++ case SND_SOC_DAIFMT_CBM_CFS:
++ SSI1_STCR |= SSI_STCR_TXDIR;
++ break;
++ }
++
++ /* DAI BCLK ratio to SYSCLK / MCLK */
++ /* prescaler modulus - todo */
++ switch (bfs) {
++ case 2:
++ break;
++ case 4:
++ break;
++ case 8:
++ break;
++ case 16:
++ break;
++ }
++
++ /* TDM - todo, only fifo 0 atm */
++ SSI1_STCR |= SSI_STCR_TFEN0;
++ SSI1_STCCR |= SSI_STCCR_DC(params_channels(params));
++
++ return 0;
++}
++
++static int imx_ssi1_hw_rx_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 bfs, div;
++
++ bfs = SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs);
++
++ SSI1_SRCR = 0;
++ SSI1_SRCCR = 0;
++
++ /* DAI mode */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_DSP_B:
++ SSI1_SRCR |= SSI_SRCR_REFS; // data 1 bit after sync
++ case SND_SOC_DAIFMT_DSP_A:
++ SSI1_SRCR |= SSI_SRCR_RFSL; // frame is 1 bclk long
++ break;
++ }
++
++ /* DAI clock inversion */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_IB_IF:
++ SSI1_SRCR |= SSI_SRCR_TFSI | SSI_SRCR_TSCKP;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ SSI1_SRCR |= SSI_SRCR_RSCKP;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ SSI1_SRCR |= SSI_SRCR_RFSI;
++ break;
++ }
++
++ /* DAI data (word) size */
++ switch(rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ SSI1_SRCCR |= SSI_SRCCR_WL(16);
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ SSI1_SRCCR |= SSI_SRCCR_WL(20);
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ SSI1_SRCCR |= SSI_SRCCR_WL(24);
++ break;
++ }
++
++ /* DAI clock master masks */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK){
++ case SND_SOC_DAIFMT_CBM_CFM:
++ SSI1_SRCR |= SSI_SRCR_RFDIR | SSI_SRCR_RXDIR;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFM:
++ SSI1_SRCR |= SSI_SRCR_RFDIR;
++ break;
++ case SND_SOC_DAIFMT_CBM_CFS:
++ SSI1_SRCR |= SSI_SRCR_RXDIR;
++ break;
++ }
++
++ /* DAI BCLK ratio to SYSCLK / MCLK */
++ /* prescaler modulus - todo */
++ switch (bfs) {
++ case 2:
++ break;
++ case 4:
++ break;
++ case 8:
++ break;
++ case 16:
++ break;
++ }
++
++ /* TDM - todo, only fifo 0 atm */
++ SSI1_SRCR |= SSI_SRCR_RFEN0;
++ SSI1_SRCCR |= SSI_SRCCR_DC(params_channels(params));
++
++ return 0;
++}
++
++static int imx_ssi_dsp_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ /* clear register if not enabled */
++ if(!(SSI1_SCR & SSI_SCR_SSIEN))
++ SSI1_SCR = 0;
++
++ /* async */
++ if (rtd->cpu_dai->flags & SND_SOC_DAI_ASYNC)
++ SSI1_SCR |= SSI_SCR_SYN;
++
++ /* DAI mode */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ case SND_SOC_DAIFMT_LEFT_J:
++ SSI1_SCR |= SSI_SCR_NET;
++ break;
++ }
++
++ /* TDM - to complete */
++
++ /* Tx/Rx config */
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
++ return imx_ssi1_dsp_hw_tx_params(substream, params);
++ } else {
++ return imx_ssi1_dsp_hw_rx_params(substream, params);
++ }
++}
++
++
++
++static int imx_ssi_dsp_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ int ret = 0;
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
++ SSI1_SCR |= SSI_SCR_TE;
++ SSI1_SIER |= SSI_SIER_TDMAE;
++ } else {
++ SSI1_SCR |= SSI_SCR_RE;
++ SSI1_SIER |= SSI_SIER_RDMAE;
++ }
++ SSI1_SCR |= SSI_SCR_SSIEN;
++
++ break;
++ case SNDRV_PCM_TRIGGER_RESUME:
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSI1_SCR |= SSI_SCR_TE;
++ else
++ SSI1_SCR |= SSI_SCR_RE;
++ break
++ case SNDRV_PCM_TRIGGER_STOP:
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSI1_SCR &= ~SSI_SCR_TE;
++ else
++ SSI1_SCR &= ~SSI_SCR_RE;
++ break;
++ default:
++ ret = -EINVAL;
++ }
++
++ return ret;
++}
++
++static void imx_ssi_dsp_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ /* shutdown SSI */
++ if (!rtd->cpu_dai->active) {
++ if(rtd->cpu_dai->id == 0)
++ SSI1_SCR &= ~SSI_SCR_SSIEN;
++ else
++ SSI2_SCR &= ~SSI_SCR_SSIEN;
++ }
++}
++
++#ifdef CONFIG_PM
++static int imx_ssi_dsp_suspend(struct platform_device *dev,
++ struct snd_soc_cpu_dai *dai)
++{
++ if(!dai->active)
++ return 0;
++
++ if(rtd->cpu_dai->id == 0)
++ SSI1_SCR &= ~SSI_SCR_SSIEN;
++ else
++ SSI2_SCR &= ~SSI_SCR_SSIEN;
++
++ return 0;
++}
++
++static int imx_ssi_dsp_resume(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ if(!dai->active)
++ return 0;
++
++ if(rtd->cpu_dai->id == 0)
++ SSI1_SCR |= SSI_SCR_SSIEN;
++ else
++ SSI2_SCR |= SSI_SCR_SSIEN;
++
++ return 0;
++}
++
++#else
++#define imx_ssi_dsp_suspend NULL
++#define imx_ssi_dsp_resume NULL
++#endif
++
++static unsigned int imx_ssi_config_dsp_sysclk(struct snd_soc_cpu_dai *iface,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ return clk;
++}
++
++struct snd_soc_cpu_dai imx_ssi_dsp_dai = {
++ .name = "imx-dsp-1",
++ .id = 0,
++ .type = SND_SOC_DAI_PCM,
++ .suspend = imx_ssi_dsp_suspend,
++ .resume = imx_ssi_dsp_resume,
++ .config_sysclk = imx_ssi_config_dsp_sysclk,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .ops = {
++ .startup = imx_ssi_dsp_startup,
++ .shutdown = imx_ssi_dsp_shutdown,
++ .trigger = imx_ssi_trigger,
++ .hw_params = imx_ssi_dsp_hw_params,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(imx_dsp_modes),
++ .mode = imx_dsp_modes,},
++},
++{
++ .name = "imx-dsp-2",
++ .id = 1,
++ .type = SND_SOC_DAI_PCM,
++ .suspend = imx_ssi_dsp_suspend,
++ .resume = imx_ssi_dsp_resume,
++ .config_sysclk = imx_ssi_config_dsp_sysclk,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .ops = {
++ .startup = imx_dsp_startup,
++ .shutdown = imx_dsp_shutdown,
++ .trigger = imx_ssi1_trigger,
++ .hw_params = imx_ssi1_pcm_hw_params,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(imx_dsp_modes),
++ .mode = imx_dsp_modes,},
++};
++
++
++EXPORT_SYMBOL_GPL(imx_ssi_dsp_dai);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("i.MX ASoC SSI driver");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/imx/Kconfig
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/imx/Kconfig
+@@ -0,0 +1,31 @@
++menu "SoC Audio for the Freescale i.MX"
++
++config SND_MXC_SOC
++ tristate "SoC Audio for the Freescale i.MX CPU"
++ depends on ARCH_MXC && SND
++ select SND_PCM
++ help
++ Say Y or M if you want to add support for codecs attached to
++ the MXC AC97, I2S or SSP interface. You will also need
++ to select the audio interfaces to support below.
++
++config SND_MXC_AC97
++ tristate
++ select SND_AC97_CODEC
++
++config SND_MXC_SOC_AC97
++ tristate
++ select SND_AC97_BUS
++
++config SND_MXC_SOC_SSI
++ tristate
++
++config SND_MXC_SOC_MX3_WM8753
++ tristate "SoC Audio support for MX31 - WM8753"
++ depends on SND_MXC_SOC && ARCH_MX3
++ select SND_MXC_SOC_SSI
++ help
++ Say Y if you want to add support for SoC audio on MX31ADS
++ with the WM8753.
++
++endmenu
+Index: linux-2.6-pxa-new/sound/soc/imx/Makefile
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/imx/Makefile
+@@ -0,0 +1,18 @@
++# i.MX Platform Support
++snd-soc-imx21-objs := imx21-pcm.o
++snd-soc-imx31-objs := imx31-pcm.o
++snd-soc-imx-ac97-objs := imx-ac97.o
++snd-soc-imx-i2s-objs := imx-i2s.o
++
++obj-$(CONFIG_SND_MXC_SOC) += snd-soc-imx.o
++obj-$(CONFIG_SND_MXC_SOC_AC97) += snd-soc-imx-ac97.o
++obj-$(CONFIG_SND_MXC_SOC_I2S) += snd-soc-imx-i2s.o
++
++# i.MX Machine Support
++snd-soc-mx31ads-wm8753-objs := mx31ads_wm8753.o
++obj-$(CONFIG_SND_SOC_MX31ADS_WM8753) += snd-soc-mx31ads-wm8753.o
++snd-soc-mx21ads-wm8753-objs := mx21ads_wm8753.o
++obj-$(CONFIG_SND_SOC_MX21ADS_WM8753) += snd-soc-mx21ads-wm8753.o
++snd-soc-mx21ads-wm8731-objs := mx21ads_wm8731.o
++obj-$(CONFIG_SND_SOC_MX21ADS_WM8731) += snd-soc-mx21ads-wm8731.o
++
+Index: linux-2.6-pxa-new/sound/Makefile
+===================================================================
+--- linux-2.6-pxa-new.orig/sound/Makefile
++++ linux-2.6-pxa-new/sound/Makefile
+@@ -5,7 +5,7 @@ obj-$(CONFIG_SOUND) += soundcore.o
+ obj-$(CONFIG_SOUND_PRIME) += sound_firmware.o
+ obj-$(CONFIG_SOUND_PRIME) += oss/
+ obj-$(CONFIG_DMASOUND) += oss/
+-obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/
++obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/ soc/
+ obj-$(CONFIG_SND_AOA) += aoa/
+
+ ifeq ($(CONFIG_SND),y)
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8711.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8711.c
+@@ -0,0 +1,843 @@
++/*
++ * wm8711.c -- WM8711 ALSA SoC Audio driver
++ *
++ * Copyright 2006 Wolfson Microelectronics
++ *
++ * Author: Mike Arthur <linux@wolfsonmicro.com>
++ *
++ * Based on wm8711.c by 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 Software Foundation.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/i2c.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++
++#include "wm8711.h"
++
++#define AUDIO_NAME "wm8711"
++#define WM8711_VERSION "0.2"
++
++/*
++ * Debug
++ */
++
++#define WM8711_DEBUG 0
++
++#ifdef WM8711_DEBUG
++#define dbg(format, arg...) \
++ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
++#else
++#define dbg(format, arg...) do {} while (0)
++#endif
++#define err(format, arg...) \
++ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
++#define info(format, arg...) \
++ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
++#define warn(format, arg...) \
++ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
++
++struct snd_soc_codec_device soc_codec_dev_wm8711;
++
++/*
++ * wm8711 register cache
++ * We can't read the WM8711 register space when we are
++ * using 2 wire for device control, so we cache them instead.
++ * There is no point in caching the reset register
++ */
++static const u16 wm8711_reg[WM8711_CACHEREGNUM] = {
++ 0x0079, 0x0079, 0x000a, 0x0008,
++ 0x009f, 0x000a, 0x0000, 0x0000
++};
++
++#define WM8711_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
++ SND_SOC_DAIFMT_IB_IF)
++
++#define WM8711_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK)
++
++#define WM8711_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 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
++
++#define WM8711_HIFI_BITS \
++ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
++ SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S24_LE | \
++ SNDRV_PCM_FMTBIT_S32_LE)
++
++static struct snd_soc_dai_mode wm8711_modes[] = {
++ /* codec frame and clock master modes */
++ /* 8k */
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 1536,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 2304,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 1408,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 2112,
++ .bfs = 64,
++ },
++
++ /* 32k */
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 384,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_32000,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 576,
++ .bfs = 64,
++ },
++
++ /* 44.1k & 48k */
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 64,
++ },
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 384,
++ .bfs = 64,
++ },
++
++ /* 88.2 & 96k */
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 128,
++ .bfs = 64,
++
++ },
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 192,
++ .bfs = 64,
++ },
++
++ /* USB codec frame and clock master modes */
++ /* 8k */
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1500,
++ .bfs = SND_SOC_FSBD(1),
++ },
++
++ /* 44.1k */
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 272,
++ .bfs = SND_SOC_FSBD(1),
++ },
++
++ /* 48k */
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 250,
++ .bfs = SND_SOC_FSBD(1),
++ },
++
++ /* 88.2k */
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_88200,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 136,
++ .bfs = SND_SOC_FSBD(1),
++ },
++
++ /* 96k */
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = SNDRV_PCM_RATE_96000,
++ .pcmdir = WM8711_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 125,
++ .bfs = SND_SOC_FSBD(1),
++ },
++
++ /* codec frame and clock slave modes */
++ {
++ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = WM8711_HIFI_BITS,
++ .pcmrate = WM8711_RATES,
++ .pcmdir = WM8711_DIR,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++};
++
++/*
++ * read wm8711 register cache
++ */
++static inline unsigned int wm8711_read_reg_cache(struct snd_soc_codec * codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg == WM8711_RESET)
++ return 0;
++ if (reg >= WM8711_CACHEREGNUM)
++ return -1;
++ return cache[reg];
++}
++
++/*
++ * write wm8711 register cache
++ */
++static inline void wm8711_write_reg_cache(struct snd_soc_codec *codec,
++ u16 reg, unsigned int value)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg >= WM8711_CACHEREGNUM)
++ return;
++ cache[reg] = value;
++}
++
++/*
++ * write to the WM8711 register space
++ */
++static int wm8711_write(struct snd_soc_codec * codec, unsigned int reg,
++ unsigned int value)
++{
++ u8 data[2];
++
++ /* data is
++ * D15..D9 WM8753 register offset
++ * D8...D0 register data
++ */
++ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
++ data[1] = value & 0x00ff;
++
++ wm8711_write_reg_cache (codec, reg, value);
++ if (codec->hw_write(codec->control_data, data, 2) == 2)
++ return 0;
++ else
++ return -EIO;
++}
++
++#define wm8711_reset(c) wm8711_write(c, WM8711_RESET, 0)
++
++static const struct snd_kcontrol_new wm8711_snd_controls[] = {
++
++SOC_DOUBLE_R("Master Playback Volume", WM8711_LOUT1V, WM8711_ROUT1V,
++ 0, 127, 0),
++SOC_DOUBLE_R("Master Playback ZC Switch", WM8711_LOUT1V, WM8711_ROUT1V,
++ 7, 1, 0),
++
++};
++
++/* add non dapm controls */
++static int wm8711_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(wm8711_snd_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8711_snd_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++
++ return 0;
++}
++
++/* Output Mixer */
++static const snd_kcontrol_new_t wm8711_output_mixer_controls[] = {
++SOC_DAPM_SINGLE("Line Bypass Switch", WM8711_APANA, 3, 1, 0),
++SOC_DAPM_SINGLE("HiFi Playback Switch", WM8711_APANA, 4, 1, 0),
++};
++
++static const struct snd_soc_dapm_widget wm8711_dapm_widgets[] = {
++SND_SOC_DAPM_MIXER("Output Mixer", WM8711_PWR, 4, 1,
++ &wm8711_output_mixer_controls[0],
++ ARRAY_SIZE(wm8711_output_mixer_controls)),
++SND_SOC_DAPM_DAC("DAC", "HiFi Playback", WM8711_PWR, 3, 1),
++SND_SOC_DAPM_OUTPUT("LOUT"),
++SND_SOC_DAPM_OUTPUT("LHPOUT"),
++SND_SOC_DAPM_OUTPUT("ROUT"),
++SND_SOC_DAPM_OUTPUT("RHPOUT"),
++};
++
++static const char *intercon[][3] = {
++ /* output mixer */
++ {"Output Mixer", "Line Bypass Switch", "Line Input"},
++ {"Output Mixer", "HiFi Playback Switch", "DAC"},
++
++ /* outputs */
++ {"RHPOUT", NULL, "Output Mixer"},
++ {"ROUT", NULL, "Output Mixer"},
++ {"LHPOUT", NULL, "Output Mixer"},
++ {"LOUT", NULL, "Output Mixer"},
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int wm8711_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(wm8711_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm8711_dapm_widgets[i]);
++ }
++
++ /* set up audio path interconnects */
++ for(i = 0; intercon[i][0] != NULL; i++) {
++ snd_soc_dapm_connect_input(codec, intercon[i][0], intercon[i][1],
++ intercon[i][2]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++struct _coeff_div {
++ u32 mclk;
++ u32 rate;
++ u16 fs;
++ u8 sr:4;
++ u8 bosr:1;
++ u8 usb:1;
++};
++
++/* codec mclk clock divider coefficients */
++static const struct _coeff_div coeff_div[] = {
++ /* 48k */
++ {12288000, 48000, 256, 0x0, 0x0, 0x0},
++ {18432000, 48000, 384, 0x0, 0x1, 0x0},
++ {12000000, 48000, 250, 0x0, 0x0, 0x1},
++
++ /* 32k */
++ {12288000, 32000, 384, 0x6, 0x0, 0x0},
++ {18432000, 32000, 576, 0x6, 0x1, 0x0},
++
++ /* 8k */
++ {12288000, 8000, 1536, 0x3, 0x0, 0x0},
++ {18432000, 8000, 2304, 0x3, 0x1, 0x0},
++ {11289600, 8000, 1408, 0xb, 0x0, 0x0},
++ {16934400, 8000, 2112, 0xb, 0x1, 0x0},
++ {12000000, 8000, 1500, 0x3, 0x0, 0x1},
++
++ /* 96k */
++ {12288000, 96000, 128, 0x7, 0x0, 0x0},
++ {18432000, 96000, 192, 0x7, 0x1, 0x0},
++ {12000000, 96000, 125, 0x7, 0x0, 0x1},
++
++ /* 44.1k */
++ {11289600, 44100, 256, 0x8, 0x0, 0x0},
++ {16934400, 44100, 384, 0x8, 0x1, 0x0},
++ {12000000, 44100, 272, 0x8, 0x1, 0x1},
++
++ /* 88.2k */
++ {11289600, 88200, 128, 0xf, 0x0, 0x0},
++ {16934400, 88200, 192, 0xf, 0x1, 0x0},
++ {12000000, 88200, 136, 0xf, 0x1, 0x1},
++};
++
++static inline int get_coeff(int mclk, int rate)
++{
++ int i;
++
++ for (i = 0; i < ARRAY_SIZE(coeff_div); i++) {
++ if (coeff_div[i].rate == rate && coeff_div[i].mclk == mclk)
++ return i;
++ }
++ return 0;
++}
++
++/* WM8711 supports numerous clocks per sample rate */
++static unsigned int wm8711_config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ dai->mclk = 0;
++
++ /* check that the calculated FS and rate actually match a clock from
++ * the machine driver */
++ if (info->fs * info->rate == clk)
++ dai->mclk = clk;
++
++ return dai->mclk;
++}
++
++static int wm8711_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 iface = 0, srate;
++ int i = get_coeff(rtd->codec_dai->mclk,
++ snd_soc_get_rate(rtd->codec_dai->dai_runtime.pcmrate));
++
++ /* set master/slave audio interface */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ iface |= 0x0040;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ break;
++ }
++ srate = (coeff_div[i].sr << 2) | (coeff_div[i].bosr << 1) |
++ coeff_div[i].usb;
++ wm8711_write(codec, WM8711_SRATE, srate);
++
++ /* interface format */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ iface |= 0x0002;
++ break;
++ case SND_SOC_DAIFMT_RIGHT_J:
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ iface |= 0x0001;
++ break;
++ case SND_SOC_DAIFMT_DSP_A:
++ iface |= 0x0003;
++ break;
++ case SND_SOC_DAIFMT_DSP_B:
++ iface |= 0x0013;
++ break;
++ }
++
++ /* bit size */
++ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FORMAT_S16_LE:
++ break;
++ case SNDRV_PCM_FORMAT_S20_3LE:
++ iface |= 0x0004;
++ break;
++ case SNDRV_PCM_FORMAT_S24_LE:
++ iface |= 0x0008;
++ break;
++ case SNDRV_PCM_FORMAT_S32_LE:
++ iface |= 0x000c;
++ break;
++ }
++
++ /* clock inversion */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_IF:
++ iface |= 0x0090;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ iface |= 0x0080;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ iface |= 0x0010;
++ break;
++ }
++
++ /* set iface */
++ wm8711_write(codec, WM8711_IFACE, iface);
++
++ /* set active */
++ wm8711_write(codec, WM8711_ACTIVE, 0x0001);
++ return 0;
++}
++
++static void wm8711_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++
++ /* deactivate */
++ if (!codec->active) {
++ udelay(50);
++ wm8711_write(codec, WM8711_ACTIVE, 0x0);
++ }
++}
++
++static int wm8711_mute(struct snd_soc_codec *codec,
++ struct snd_soc_codec_dai *dai, int mute)
++{
++ u16 mute_reg = wm8711_read_reg_cache(codec, WM8711_APDIGI) & 0xfff7;
++ if (mute)
++ wm8711_write(codec, WM8711_APDIGI, mute_reg | 0x8);
++ else
++ wm8711_write(codec, WM8711_APDIGI, mute_reg);
++
++ return 0;
++}
++
++static int wm8711_dapm_event(struct snd_soc_codec *codec, int event)
++{
++ u16 reg = wm8711_read_reg_cache(codec, WM8711_PWR) & 0xff7f;
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ /* vref/mid, osc on, dac unmute */
++ wm8711_write(codec, WM8711_PWR, reg);
++ break;
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ break;
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* everything off except vref/vmid, */
++ wm8711_write(codec, WM8711_PWR, reg | 0x0040);
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ /* everything off, dac mute, inactive */
++ wm8711_write(codec, WM8711_ACTIVE, 0x0);
++ wm8711_write(codec, WM8711_PWR, 0xffff);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++struct snd_soc_codec_dai wm8711_dai = {
++ .name = "WM8711",
++ .playback = {
++ .stream_name = "Playback",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .config_sysclk = wm8711_config_sysclk,
++ .digital_mute = wm8711_mute,
++ .ops = {
++ .prepare = wm8711_pcm_prepare,
++ .shutdown = wm8711_shutdown,
++ },
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8711_modes),
++ .mode = wm8711_modes,
++ },
++};
++EXPORT_SYMBOL_GPL(wm8711_dai);
++
++static int wm8711_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ wm8711_write(codec, WM8711_ACTIVE, 0x0);
++ wm8711_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int wm8711_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++ u8 data[2];
++ u16 *cache = codec->reg_cache;
++
++ /* Sync reg_cache with the hardware */
++ for (i = 0; i < ARRAY_SIZE(wm8711_reg); i++) {
++ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
++ data[1] = cache[i] & 0x00ff;
++ codec->hw_write(codec->control_data, data, 2);
++ }
++ wm8711_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ wm8711_dapm_event(codec, codec->suspend_dapm_state);
++ return 0;
++}
++
++/*
++ * initialise the WM8711 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int wm8711_init(struct snd_soc_device* socdev)
++{
++ struct snd_soc_codec* codec = socdev->codec;
++ int reg, ret = 0;
++
++ codec->name = "WM8711";
++ codec->owner = THIS_MODULE;
++ codec->read = wm8711_read_reg_cache;
++ codec->write = wm8711_write;
++ codec->dapm_event = wm8711_dapm_event;
++ codec->dai = &wm8711_dai;
++ codec->num_dai = 1;
++ codec->reg_cache_size = ARRAY_SIZE(wm8711_reg);
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8711_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL)
++ return -ENOMEM;
++ memcpy(codec->reg_cache, wm8711_reg,
++ sizeof(u16) * ARRAY_SIZE(wm8711_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8711_reg);
++
++ wm8711_reset(codec);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if (ret < 0) {
++ kfree(codec->reg_cache);
++ return ret;
++ }
++
++ /* power on device */
++ wm8711_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++
++ /* set the update bits */
++ reg = wm8711_read_reg_cache(codec, WM8711_LOUT1V);
++ wm8711_write(codec, WM8711_LOUT1V, reg | 0x0100);
++ reg = wm8711_read_reg_cache(codec, WM8711_ROUT1V);
++ wm8711_write(codec, WM8711_ROUT1V, reg | 0x0100);
++
++ wm8711_add_controls(codec);
++ wm8711_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if (ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++static struct snd_soc_device *wm8711_socdev;
++
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++
++/*
++ * WM8711 2 wire address is determined by GPIO5
++ * state during powerup.
++ * low = 0x1a
++ * high = 0x1b
++ */
++#define I2C_DRIVERID_WM8711 0xfefe /* liam - need a proper id */
++
++static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
++
++/* Magic definition of all other variables and things */
++I2C_CLIENT_INSMOD;
++
++static struct i2c_driver wm8711_i2c_driver;
++static struct i2c_client client_template;
++
++/* If the i2c layer weren't so broken, we could pass this kind of data
++ around */
++
++static int wm8711_codec_probe(struct i2c_adapter *adap, int addr, int kind)
++{
++ struct snd_soc_device *socdev = wm8711_socdev;
++ struct wm8711_setup_data *setup = socdev->codec_data;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct i2c_client *i2c;
++ int ret;
++
++ if (addr != setup->i2c_address)
++ return -ENODEV;
++
++ client_template.adapter = adap;
++ client_template.addr = addr;
++
++ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
++ if (i2c == NULL){
++ kfree(codec);
++ return -ENOMEM;
++ }
++ memcpy(i2c, &client_template, sizeof(struct i2c_client));
++
++ i2c_set_clientdata(i2c, codec);
++
++ codec->control_data = i2c;
++
++ ret = i2c_attach_client(i2c);
++ if (ret < 0) {
++ err("failed to attach codec at addr %x\n", addr);
++ goto err;
++ }
++
++ ret = wm8711_init(socdev);
++ if (ret < 0) {
++ err("failed to initialise WM8711\n");
++ goto err;
++ }
++ return ret;
++
++err:
++ kfree(codec);
++ kfree(i2c);
++ return ret;
++
++}
++
++static int wm8711_i2c_detach(struct i2c_client *client)
++{
++ struct snd_soc_codec* codec = i2c_get_clientdata(client);
++
++ i2c_detach_client(client);
++
++ kfree(codec->reg_cache);
++ kfree(client);
++
++ return 0;
++}
++
++static int wm8711_i2c_attach(struct i2c_adapter *adap)
++{
++ return i2c_probe(adap, &addr_data, wm8711_codec_probe);
++}
++
++/* corgi i2c codec control layer */
++static struct i2c_driver wm8711_i2c_driver = {
++ .driver = {
++ .name = "WM8711 I2C Codec",
++ .owner = THIS_MODULE,
++ },
++ .id = I2C_DRIVERID_WM8711,
++ .attach_adapter = wm8711_i2c_attach,
++ .detach_client = wm8711_i2c_detach,
++ .command = NULL,
++};
++
++static struct i2c_client client_template = {
++ .name = "WM8711",
++ .driver = &wm8711_i2c_driver,
++};
++#endif
++
++static int wm8711_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct wm8711_setup_data *setup;
++ struct snd_soc_codec* codec;
++ int ret = 0;
++
++ info("WM8711 Audio Codec %s", WM8711_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ wm8711_socdev = socdev;
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ if (setup->i2c_address) {
++ normal_i2c[0] = setup->i2c_address;
++ codec->hw_write = (hw_write_t)i2c_master_send;
++ ret = i2c_add_driver(&wm8711_i2c_driver);
++ if (ret != 0)
++ printk(KERN_ERR "can't add i2c driver");
++ }
++#else
++ /* Add other interfaces here */
++#endif
++ return ret;
++}
++
++/* power down chip */
++static int wm8711_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if (codec->control_data)
++ wm8711_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ i2c_del_driver(&wm8711_i2c_driver);
++#endif
++ kfree(codec);
++
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_wm8711 = {
++ .probe = wm8711_probe,
++ .remove = wm8711_remove,
++ .suspend = wm8711_suspend,
++ .resume = wm8711_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_wm8711);
++
++MODULE_DESCRIPTION("ASoC WM8711 driver");
++MODULE_AUTHOR("Mike Arthur");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8711.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8711.h
+@@ -0,0 +1,39 @@
++/*
++ * wm8711.h -- WM8711 Soc Audio driver
++ *
++ * Copyright 2006 Wolfson Microelectronics
++ *
++ * Author: Mike Arthur <linux@wolfsonmicro.com>
++ *
++ * Based on wm8731.h
++ *
++ * 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.
++ */
++
++#ifndef _WM8711_H
++#define _WM8711_H
++
++/* WM8711 register space */
++
++#define WM8711_LOUT1V 0x02
++#define WM8711_ROUT1V 0x03
++#define WM8711_APANA 0x04
++#define WM8711_APDIGI 0x05
++#define WM8711_PWR 0x06
++#define WM8711_IFACE 0x07
++#define WM8711_SRATE 0x08
++#define WM8711_ACTIVE 0x09
++#define WM8711_RESET 0x0f
++
++#define WM8711_CACHEREGNUM 8
++
++struct wm8711_setup_data {
++ unsigned short i2c_address;
++};
++
++extern struct snd_soc_codec_dai wm8711_dai;
++extern struct snd_soc_codec_device soc_codec_dev_wm8711;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8980.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8980.c
+@@ -0,0 +1,991 @@
++/*
++ * wm8980.c -- WM8980 ALSA Soc Audio driver
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ *
++ * Authors:
++ * Mike Arthur <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 version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/version.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/i2c.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++
++#include "wm8980.h"
++
++#define AUDIO_NAME "wm8980"
++#define WM8980_VERSION "0.2"
++
++/*
++ * Debug
++ */
++
++#define WM8980_DEBUG 0
++
++#ifdef WM8980_DEBUG
++#define dbg(format, arg...) \
++ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
++#else
++#define dbg(format, arg...) do {} while (0)
++#endif
++#define err(format, arg...) \
++ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
++#define info(format, arg...) \
++ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
++#define warn(format, arg...) \
++ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
++
++struct snd_soc_codec_device soc_codec_dev_wm8980;
++
++/*
++ * wm8980 register cache
++ * We can't read the WM8980 register space when we are
++ * using 2 wire for device control, so we cache them instead.
++ */
++static const u16 wm8980_reg[WM8980_CACHEREGNUM] = {
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0050, 0x0000, 0x0140, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x00ff,
++ 0x00ff, 0x0000, 0x0100, 0x00ff,
++ 0x00ff, 0x0000, 0x012c, 0x002c,
++ 0x002c, 0x002c, 0x002c, 0x0000,
++ 0x0032, 0x0000, 0x0000, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0038, 0x000b, 0x0032, 0x0000,
++ 0x0008, 0x000c, 0x0093, 0x00e9,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0033, 0x0010, 0x0010, 0x0100,
++ 0x0100, 0x0002, 0x0001, 0x0001,
++ 0x0039, 0x0039, 0x0039, 0x0039,
++ 0x0001, 0x0001,
++};
++
++#define WM8980_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
++ SND_SOC_DAIFMT_DSP_A | SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_NB_NF | \
++ SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_IB_IF)
++
++#define WM8980_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define WM8980_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 | \
++ SNDRV_PCM_RATE_48000)
++
++#define WM8980_PCM_FORMATS \
++ (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
++ SNDRV_PCM_FORMAT_S24_3LE | SNDRV_PCM_FORMAT_S24_LE | \
++ SNDRV_PCM_FORMAT_S32_LE)
++
++#define WM8980_BCLK \
++ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | SND_SOC_FSBD(8) |\
++ SND_SOC_FSBD(16) | SND_SOC_FSBD(32))
++
++static struct snd_soc_dai_mode wm8980_modes[] = {
++ /* codec frame and clock master modes */
++ {
++ .fmt = WM8980_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8980_PCM_FORMATS,
++ .pcmrate = WM8980_RATES,
++ .pcmdir = WM8980_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = WM8980_BCLK,
++ },
++
++ /* codec frame and clock slave modes */
++ {
++ .fmt = WM8980_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = WM8980_PCM_FORMATS,
++ .pcmrate = WM8980_RATES,
++ .pcmdir = WM8980_DIR,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++};
++
++/*
++ * read wm8980 register cache
++ */
++static inline unsigned int wm8980_read_reg_cache(struct snd_soc_codec *codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg == WM8980_RESET)
++ return 0;
++ if (reg >= WM8980_CACHEREGNUM)
++ return -1;
++ return cache[reg];
++}
++
++/*
++ * write wm8980 register cache
++ */
++static inline void wm8980_write_reg_cache(struct snd_soc_codec *codec,
++ u16 reg, unsigned int value)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg >= WM8980_CACHEREGNUM)
++ return;
++ cache[reg] = value;
++}
++
++/*
++ * write to the WM8980 register space
++ */
++static int wm8980_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int value)
++{
++ u8 data[2];
++
++ /* data is
++ * D15..D9 WM8980 register offset
++ * D8...D0 register data
++ */
++ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
++ data[1] = value & 0x00ff;
++
++ wm8980_write_reg_cache (codec, reg, value);
++ if (codec->hw_write(codec->control_data, data, 2) == 2)
++ return 0;
++ else
++ return -1;
++}
++
++#define wm8980_reset(c) wm8980_write(c, WM8980_RESET, 0)
++
++static const char *wm8980_companding[] = {"Off", "NC", "u-law", "A-law" };
++static const char *wm8980_deemp[] = {"None", "32kHz", "44.1kHz", "48kHz" };
++static const char *wm8980_eqmode[] = {"Capture", "Playback" };
++static const char *wm8980_bw[] = {"Narrow", "Wide" };
++static const char *wm8980_eq1[] = {"80Hz", "105Hz", "135Hz", "175Hz" };
++static const char *wm8980_eq2[] = {"230Hz", "300Hz", "385Hz", "500Hz" };
++static const char *wm8980_eq3[] = {"650Hz", "850Hz", "1.1kHz", "1.4kHz" };
++static const char *wm8980_eq4[] = {"1.8kHz", "2.4kHz", "3.2kHz", "4.1kHz" };
++static const char *wm8980_eq5[] = {"5.3kHz", "6.9kHz", "9kHz", "11.7kHz" };
++static const char *wm8980_alc[] =
++ {"ALC both on", "ALC left only", "ALC right only", "Limiter" };
++
++static const struct soc_enum wm8980_enum[] = {
++ SOC_ENUM_SINGLE(WM8980_COMP, 1, 4, wm8980_companding), /* adc */
++ SOC_ENUM_SINGLE(WM8980_COMP, 3, 4, wm8980_companding), /* dac */
++ SOC_ENUM_SINGLE(WM8980_DAC, 4, 4, wm8980_deemp),
++ SOC_ENUM_SINGLE(WM8980_EQ1, 8, 2, wm8980_eqmode),
++
++ SOC_ENUM_SINGLE(WM8980_EQ1, 5, 4, wm8980_eq1),
++ SOC_ENUM_SINGLE(WM8980_EQ2, 8, 2, wm8980_bw),
++ SOC_ENUM_SINGLE(WM8980_EQ2, 5, 4, wm8980_eq2),
++ SOC_ENUM_SINGLE(WM8980_EQ3, 8, 2, wm8980_bw),
++
++ SOC_ENUM_SINGLE(WM8980_EQ3, 5, 4, wm8980_eq3),
++ SOC_ENUM_SINGLE(WM8980_EQ4, 8, 2, wm8980_bw),
++ SOC_ENUM_SINGLE(WM8980_EQ4, 5, 4, wm8980_eq4),
++ SOC_ENUM_SINGLE(WM8980_EQ5, 8, 2, wm8980_bw),
++
++ SOC_ENUM_SINGLE(WM8980_EQ5, 5, 4, wm8980_eq5),
++ SOC_ENUM_SINGLE(WM8980_ALC3, 8, 2, wm8980_alc),
++};
++
++static const struct snd_kcontrol_new wm8980_snd_controls[] = {
++SOC_SINGLE("Digital Loopback Switch", WM8980_COMP, 0, 1, 0),
++
++SOC_ENUM("ADC Companding", wm8980_enum[0]),
++SOC_ENUM("DAC Companding", wm8980_enum[1]),
++
++SOC_SINGLE("Jack Detection Enable", WM8980_JACK1, 6, 1, 0),
++
++SOC_SINGLE("DAC Right Inversion Switch", WM8980_DAC, 1, 1, 0),
++SOC_SINGLE("DAC Left Inversion Switch", WM8980_DAC, 0, 1, 0),
++
++SOC_SINGLE("Left Playback Volume", WM8980_DACVOLL, 0, 127, 0),
++SOC_SINGLE("Right Playback Volume", WM8980_DACVOLR, 0, 127, 0),
++
++SOC_SINGLE("High Pass Filter Switch", WM8980_ADC, 8, 1, 0),
++SOC_SINGLE("High Pass Filter Switch", WM8980_ADC, 8, 1, 0),
++SOC_SINGLE("High Pass Cut Off", WM8980_ADC, 4, 7, 0),
++SOC_SINGLE("Right ADC Inversion Switch", WM8980_ADC, 1, 1, 0),
++SOC_SINGLE("Left ADC Inversion Switch", WM8980_ADC, 0, 1, 0),
++
++SOC_SINGLE("Left Capture Volume", WM8980_ADCVOLL, 0, 127, 0),
++SOC_SINGLE("Right Capture Volume", WM8980_ADCVOLR, 0, 127, 0),
++
++SOC_ENUM("Equaliser Function", wm8980_enum[3]),
++SOC_ENUM("EQ1 Cut Off", wm8980_enum[4]),
++SOC_SINGLE("EQ1 Volume", WM8980_EQ1, 0, 31, 1),
++
++SOC_ENUM("Equaliser EQ2 Bandwith", wm8980_enum[5]),
++SOC_ENUM("EQ2 Cut Off", wm8980_enum[6]),
++SOC_SINGLE("EQ2 Volume", WM8980_EQ2, 0, 31, 1),
++
++SOC_ENUM("Equaliser EQ3 Bandwith", wm8980_enum[7]),
++SOC_ENUM("EQ3 Cut Off", wm8980_enum[8]),
++SOC_SINGLE("EQ3 Volume", WM8980_EQ3, 0, 31, 1),
++
++SOC_ENUM("Equaliser EQ4 Bandwith", wm8980_enum[9]),
++SOC_ENUM("EQ4 Cut Off", wm8980_enum[10]),
++SOC_SINGLE("EQ4 Volume", WM8980_EQ4, 0, 31, 1),
++
++SOC_ENUM("Equaliser EQ5 Bandwith", wm8980_enum[11]),
++SOC_ENUM("EQ5 Cut Off", wm8980_enum[12]),
++SOC_SINGLE("EQ5 Volume", WM8980_EQ5, 0, 31, 1),
++
++SOC_SINGLE("DAC Playback Limiter Switch", WM8980_DACLIM1, 8, 1, 0),
++SOC_SINGLE("DAC Playback Limiter Decay", WM8980_DACLIM1, 4, 15, 0),
++SOC_SINGLE("DAC Playback Limiter Attack", WM8980_DACLIM1, 0, 15, 0),
++
++SOC_SINGLE("DAC Playback Limiter Threshold", WM8980_DACLIM2, 4, 7, 0),
++SOC_SINGLE("DAC Playback Limiter Boost", WM8980_DACLIM2, 0, 15, 0),
++
++SOC_SINGLE("ALC Enable Switch", WM8980_ALC1, 8, 1, 0),
++SOC_SINGLE("ALC Capture Max Gain", WM8980_ALC1, 3, 7, 0),
++SOC_SINGLE("ALC Capture Min Gain", WM8980_ALC1, 0, 7, 0),
++
++SOC_SINGLE("ALC Capture ZC Switch", WM8980_ALC2, 8, 1, 0),
++SOC_SINGLE("ALC Capture Hold", WM8980_ALC2, 4, 7, 0),
++SOC_SINGLE("ALC Capture Target", WM8980_ALC2, 0, 15, 0),
++
++SOC_ENUM("ALC Capture Mode", wm8980_enum[13]),
++SOC_SINGLE("ALC Capture Decay", WM8980_ALC3, 4, 15, 0),
++SOC_SINGLE("ALC Capture Attack", WM8980_ALC3, 0, 15, 0),
++
++SOC_SINGLE("ALC Capture Noise Gate Switch", WM8980_NGATE, 3, 1, 0),
++SOC_SINGLE("ALC Capture Noise Gate Threshold", WM8980_NGATE, 0, 7, 0),
++
++SOC_SINGLE("Left Capture PGA ZC Switch", WM8980_INPPGAL, 7, 1, 0),
++SOC_SINGLE("Left Capture PGA Volume", WM8980_INPPGAL, 0, 63, 0),
++
++SOC_SINGLE("Right Capture PGA ZC Switch", WM8980_INPPGAR, 7, 1, 0),
++SOC_SINGLE("Right Capture PGA Volume", WM8980_INPPGAR, 0, 63, 0),
++
++SOC_SINGLE("Left Headphone Playback ZC Switch", WM8980_HPVOLL, 7, 1, 0),
++SOC_SINGLE("Left Headphone Playback Switch", WM8980_HPVOLL, 6, 1, 1),
++SOC_SINGLE("Left Headphone Playback Volume", WM8980_HPVOLL, 0, 63, 0),
++
++SOC_SINGLE("Right Headphone Playback ZC Switch", WM8980_HPVOLR, 7, 1, 0),
++SOC_SINGLE("Right Headphone Playback Switch", WM8980_HPVOLR, 6, 1, 1),
++SOC_SINGLE("Right Headphone Playback Volume", WM8980_HPVOLR, 0, 63, 0),
++
++SOC_SINGLE("Left Speaker Playback ZC Switch", WM8980_SPKVOLL, 7, 1, 0),
++SOC_SINGLE("Left Speaker Playback Switch", WM8980_SPKVOLL, 6, 1, 1),
++SOC_SINGLE("Left Speaker Playback Volume", WM8980_SPKVOLL, 0, 63, 0),
++
++SOC_SINGLE("Right Speaker Playback ZC Switch", WM8980_SPKVOLR, 7, 1, 0),
++SOC_SINGLE("Right Speaker Playback Switch", WM8980_SPKVOLR, 6, 1, 1),
++SOC_SINGLE("Right Speaker Playback Volume", WM8980_SPKVOLR, 0, 63, 0),
++
++SOC_DOUBLE_R("Capture Boost(+20dB)", WM8980_ADCBOOSTL, WM8980_ADCBOOSTR,
++ 8, 1, 0),
++};
++
++/* add non dapm controls */
++static int wm8980_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(wm8980_snd_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8980_snd_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++
++ return 0;
++}
++
++/* Left Output Mixer */
++static const snd_kcontrol_new_t wm8980_left_mixer_controls[] = {
++SOC_DAPM_SINGLE("Right PCM Playback Switch", WM8980_OUTPUT, 6, 1, 1),
++SOC_DAPM_SINGLE("Left PCM Playback Switch", WM8980_MIXL, 0, 1, 1),
++SOC_DAPM_SINGLE("Line Bypass Switch", WM8980_MIXL, 1, 1, 0),
++SOC_DAPM_SINGLE("Aux Playback Switch", WM8980_MIXL, 5, 1, 0),
++};
++
++/* Right Output Mixer */
++static const snd_kcontrol_new_t wm8980_right_mixer_controls[] = {
++SOC_DAPM_SINGLE("Left PCM Playback Switch", WM8980_OUTPUT, 5, 1, 1),
++SOC_DAPM_SINGLE("Right PCM Playback Switch", WM8980_MIXR, 0, 1, 1),
++SOC_DAPM_SINGLE("Line Bypass Switch", WM8980_MIXR, 1, 1, 0),
++SOC_DAPM_SINGLE("Aux Playback Switch", WM8980_MIXR, 5, 1, 0),
++};
++
++/* Left AUX Input boost vol */
++static const snd_kcontrol_new_t wm8980_laux_boost_controls =
++SOC_DAPM_SINGLE("Left Aux Volume", WM8980_ADCBOOSTL, 0, 3, 0);
++
++/* Right AUX Input boost vol */
++static const snd_kcontrol_new_t wm8980_raux_boost_controls =
++SOC_DAPM_SINGLE("Right Aux Volume", WM8980_ADCBOOSTR, 0, 3, 0);
++
++/* Left Input boost vol */
++static const snd_kcontrol_new_t wm8980_lmic_boost_controls =
++SOC_DAPM_SINGLE("Left Input Volume", WM8980_ADCBOOSTL, 4, 3, 0);
++
++/* Right Input boost vol */
++static const snd_kcontrol_new_t wm8980_rmic_boost_controls =
++SOC_DAPM_SINGLE("Right Input Volume", WM8980_ADCBOOSTR, 4, 3, 0);
++
++/* Left Aux In to PGA */
++static const snd_kcontrol_new_t wm8980_laux_capture_boost_controls =
++SOC_DAPM_SINGLE("Left Capture Switch", WM8980_ADCBOOSTL, 8, 1, 0);
++
++/* Right Aux In to PGA */
++static const snd_kcontrol_new_t wm8980_raux_capture_boost_controls =
++SOC_DAPM_SINGLE("Right Capture Switch", WM8980_ADCBOOSTR, 8, 1, 0);
++
++/* Left Input P In to PGA */
++static const snd_kcontrol_new_t wm8980_lmicp_capture_boost_controls =
++SOC_DAPM_SINGLE("Left Input P Capture Boost Switch", WM8980_INPUT, 0, 1, 0);
++
++/* Right Input P In to PGA */
++static const snd_kcontrol_new_t wm8980_rmicp_capture_boost_controls =
++SOC_DAPM_SINGLE("Right Input P Capture Boost Switch", WM8980_INPUT, 4, 1, 0);
++
++/* Left Input N In to PGA */
++static const snd_kcontrol_new_t wm8980_lmicn_capture_boost_controls =
++SOC_DAPM_SINGLE("Left Input N Capture Boost Switch", WM8980_INPUT, 1, 1, 0);
++
++/* Right Input N In to PGA */
++static const snd_kcontrol_new_t wm8980_rmicn_capture_boost_controls =
++SOC_DAPM_SINGLE("Right Input N Capture Boost Switch", WM8980_INPUT, 5, 1, 0);
++
++// TODO Widgets
++static const struct snd_soc_dapm_widget wm8980_dapm_widgets[] = {
++#if 0
++//SND_SOC_DAPM_MUTE("Mono Mute", WM8980_MONOMIX, 6, 0),
++//SND_SOC_DAPM_MUTE("Speaker Mute", WM8980_SPKMIX, 6, 0),
++
++SND_SOC_DAPM_MIXER("Speaker Mixer", WM8980_POWER3, 2, 0,
++ &wm8980_speaker_mixer_controls[0],
++ ARRAY_SIZE(wm8980_speaker_mixer_controls)),
++SND_SOC_DAPM_MIXER("Mono Mixer", WM8980_POWER3, 3, 0,
++ &wm8980_mono_mixer_controls[0],
++ ARRAY_SIZE(wm8980_mono_mixer_controls)),
++SND_SOC_DAPM_DAC("DAC", "HiFi Playback", WM8980_POWER3, 0, 0),
++SND_SOC_DAPM_ADC("ADC", "HiFi Capture", WM8980_POWER3, 0, 0),
++SND_SOC_DAPM_PGA("Aux Input", WM8980_POWER1, 6, 0, NULL, 0),
++SND_SOC_DAPM_PGA("SpkN Out", WM8980_POWER3, 5, 0, NULL, 0),
++SND_SOC_DAPM_PGA("SpkP Out", WM8980_POWER3, 6, 0, NULL, 0),
++SND_SOC_DAPM_PGA("Mono Out", WM8980_POWER3, 7, 0, NULL, 0),
++SND_SOC_DAPM_PGA("Mic PGA", WM8980_POWER2, 2, 0, NULL, 0),
++
++SND_SOC_DAPM_PGA("Aux Boost", SND_SOC_NOPM, 0, 0,
++ &wm8980_aux_boost_controls, 1),
++SND_SOC_DAPM_PGA("Mic Boost", SND_SOC_NOPM, 0, 0,
++ &wm8980_mic_boost_controls, 1),
++SND_SOC_DAPM_SWITCH("Capture Boost", SND_SOC_NOPM, 0, 0,
++ &wm8980_capture_boost_controls),
++
++SND_SOC_DAPM_MIXER("Boost Mixer", WM8980_POWER2, 4, 0, NULL, 0),
++
++SND_SOC_DAPM_MICBIAS("Mic Bias", WM8980_POWER1, 4, 0),
++
++SND_SOC_DAPM_INPUT("MICN"),
++SND_SOC_DAPM_INPUT("MICP"),
++SND_SOC_DAPM_INPUT("AUX"),
++SND_SOC_DAPM_OUTPUT("MONOOUT"),
++SND_SOC_DAPM_OUTPUT("SPKOUTP"),
++SND_SOC_DAPM_OUTPUT("SPKOUTN"),
++#endif
++};
++
++static const char *audio_map[][3] = {
++ /* Mono output mixer */
++ {"Mono Mixer", "PCM Playback Switch", "DAC"},
++ {"Mono Mixer", "Aux Playback Switch", "Aux Input"},
++ {"Mono Mixer", "Line Bypass Switch", "Boost Mixer"},
++
++ /* Speaker output mixer */
++ {"Speaker Mixer", "PCM Playback Switch", "DAC"},
++ {"Speaker Mixer", "Aux Playback Switch", "Aux Input"},
++ {"Speaker Mixer", "Line Bypass Switch", "Boost Mixer"},
++
++ /* Outputs */
++ {"Mono Out", NULL, "Mono Mixer"},
++ {"MONOOUT", NULL, "Mono Out"},
++ {"SpkN Out", NULL, "Speaker Mixer"},
++ {"SpkP Out", NULL, "Speaker Mixer"},
++ {"SPKOUTN", NULL, "SpkN Out"},
++ {"SPKOUTP", NULL, "SpkP Out"},
++
++ /* Boost Mixer */
++ {"Boost Mixer", NULL, "ADC"},
++ {"Capture Boost Switch", "Aux Capture Boost Switch", "AUX"},
++ {"Aux Boost", "Aux Volume", "Boost Mixer"},
++ {"Capture Boost", "Capture Switch", "Boost Mixer"},
++ {"Mic Boost", "Mic Volume", "Boost Mixer"},
++
++ /* Inputs */
++ {"MICP", NULL, "Mic Boost"},
++ {"MICN", NULL, "Mic PGA"},
++ {"Mic PGA", NULL, "Capture Boost"},
++ {"AUX", NULL, "Aux Input"},
++
++ /* */
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int wm8980_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(wm8980_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm8980_dapm_widgets[i]);
++ }
++
++ /* set up audio path map */
++ 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]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++struct pll_ {
++ unsigned int in_hz, out_hz;
++ unsigned int pre:4; /* prescale - 1 */
++ unsigned int n:4;
++ unsigned int k;
++};
++
++struct pll_ pll[] = {
++ {12000000, 11289600, 0, 7, 0x86c220},
++ {12000000, 12288000, 0, 8, 0x3126e8},
++ {13000000, 11289600, 0, 6, 0xf28bd4},
++ {13000000, 12288000, 0, 7, 0x8fd525},
++ {12288000, 11289600, 0, 7, 0x59999a},
++ {11289600, 12288000, 0, 8, 0x80dee9},
++ /* TODO: liam - add more entries */
++};
++
++static int set_pll(struct snd_soc_codec *codec, unsigned int in,
++ unsigned int out)
++{
++ int i;
++ u16 reg;
++
++ if(out == 0) {
++ reg = wm8980_read_reg_cache(codec, WM8980_POWER1);
++ wm8980_write(codec, WM8980_POWER1, reg & 0x1df);
++ return 0;
++ }
++
++ for(i = 0; i < ARRAY_SIZE(pll); i++) {
++ if (in == pll[i].in_hz && out == pll[i].out_hz) {
++ wm8980_write(codec, WM8980_PLLN, (pll[i].pre << 4) | pll[i].n);
++ wm8980_write(codec, WM8980_PLLK1, pll[i].k >> 18);
++ wm8980_write(codec, WM8980_PLLK1, (pll[i].k >> 9) && 0x1ff);
++ wm8980_write(codec, WM8980_PLLK1, pll[i].k && 0x1ff);
++ reg = wm8980_read_reg_cache(codec, WM8980_POWER1);
++ wm8980_write(codec, WM8980_POWER1, reg | 0x020);
++ return 0;
++ }
++ }
++ return -EINVAL;
++}
++
++/* mclk dividers * 2 */
++static unsigned char mclk_div[] = {2, 3, 4, 6, 8, 12, 16, 24};
++
++/* we need 256FS to drive the DAC's and ADC's */
++static unsigned int wm8980_config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ int i, j, best_clk = info->fs * info->rate;
++
++ /* can we run at this clk without the PLL ? */
++ for (i = 0; i < ARRAY_SIZE(mclk_div); i++) {
++ if ((best_clk >> 1) * mclk_div[i] == clk) {
++ dai->pll_in = 0;
++ dai->clk_div = mclk_div[i];
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++
++ /* now check for PLL support */
++ for (i = 0; i < ARRAY_SIZE(pll); i++) {
++ if (pll[i].in_hz == clk) {
++ for (j = 0; j < ARRAY_SIZE(mclk_div); j++) {
++ if (pll[i].out_hz == mclk_div[j] * (best_clk >> 1)) {
++ dai->pll_in = clk;
++ dai->pll_out = pll[i].out_hz;
++ dai->clk_div = mclk_div[j];
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++ }
++ }
++
++ /* this clk is not supported */
++ return 0;
++}
++
++static int wm8980_pcm_prepare(snd_pcm_substream_t *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct snd_soc_codec_dai *dai = rtd->codec_dai;
++ u16 iface = 0, bfs, clk = 0, adn;
++ int fs = 48000 << 7, i;
++
++ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
++ switch (bfs) {
++ case 2:
++ clk |= 0x1 << 2;
++ break;
++ case 4:
++ clk |= 0x2 << 2;
++ break;
++ case 8:
++ clk |= 0x3 << 2;
++ break;
++ case 16:
++ clk |= 0x4 << 2;
++ break;
++ case 32:
++ clk |= 0x5 << 2;
++ break;
++ }
++
++ /* set master/slave audio interface */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ clk |= 0x0001;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ break;
++ }
++
++ /* interface format */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ iface |= 0x0010;
++ break;
++ case SND_SOC_DAIFMT_RIGHT_J:
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ iface |= 0x0008;
++ break;
++ case SND_SOC_DAIFMT_DSP_A:
++ iface |= 0x00018;
++ break;
++ }
++
++ /* bit size */
++ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ iface |= 0x0020;
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ iface |= 0x0040;
++ break;
++ case SNDRV_PCM_FMTBIT_S32_LE:
++ iface |= 0x0060;
++ break;
++ }
++
++ /* clock inversion */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_IF:
++ iface |= 0x0180;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ iface |= 0x0100;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ iface |= 0x0080;
++ break;
++ }
++
++ /* filter coefficient */
++ adn = wm8980_read_reg_cache(codec, WM8980_ADD) & 0x1f1;
++ switch (rtd->codec_dai->dai_runtime.pcmrate) {
++ case SNDRV_PCM_RATE_8000:
++ adn |= 0x5 << 1;
++ fs = 8000 << 7;
++ break;
++ case SNDRV_PCM_RATE_11025:
++ adn |= 0x4 << 1;
++ fs = 11025 << 7;
++ break;
++ case SNDRV_PCM_RATE_16000:
++ adn |= 0x3 << 1;
++ fs = 16000 << 7;
++ break;
++ case SNDRV_PCM_RATE_22050:
++ adn |= 0x2 << 1;
++ fs = 22050 << 7;
++ break;
++ case SNDRV_PCM_RATE_32000:
++ adn |= 0x1 << 1;
++ fs = 32000 << 7;
++ break;
++ case SNDRV_PCM_RATE_44100:
++ fs = 44100 << 7;
++ break;
++ }
++
++ /* do we need to enable the PLL */
++ if(dai->pll_in)
++ set_pll(codec, dai->pll_in, dai->pll_out);
++
++ /* divide the clock to 256 fs */
++ for(i = 0; i < ARRAY_SIZE(mclk_div); i++) {
++ if (dai->clk_div == mclk_div[i]) {
++ clk |= i << 5;
++ clk &= 0xff;
++ goto set;
++ }
++ }
++
++set:
++ /* set iface */
++ wm8980_write(codec, WM8980_IFACE, iface);
++ wm8980_write(codec, WM8980_CLOCK, clk);
++
++ return 0;
++}
++
++static int wm8980_hw_free(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ set_pll(codec, 0, 0);
++ return 0;
++}
++
++static int wm8980_mute(struct snd_soc_codec *codec,
++ struct snd_soc_codec_dai *dai, int mute)
++{
++ u16 mute_reg = wm8980_read_reg_cache(codec, WM8980_DAC) & 0xffbf;
++ if(mute)
++ wm8980_write(codec, WM8980_DAC, mute_reg | 0x40);
++ else
++ wm8980_write(codec, WM8980_DAC, mute_reg);
++
++ return 0;
++}
++
++/* TODO: liam need to make this lower power with dapm */
++static int wm8980_dapm_event(struct snd_soc_codec *codec, int event)
++{
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ /* vref/mid, clk and osc on, dac unmute, active */
++ wm8980_write(codec, WM8980_POWER1, 0x1ff);
++ wm8980_write(codec, WM8980_POWER2, 0x1ff);
++ wm8980_write(codec, WM8980_POWER3, 0x1ff);
++ break;
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ break;
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* everything off except vref/vmid, dac mute, inactive */
++
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ /* everything off, dac mute, inactive */
++ wm8980_write(codec, WM8980_POWER1, 0x0);
++ wm8980_write(codec, WM8980_POWER2, 0x0);
++ wm8980_write(codec, WM8980_POWER3, 0x0);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++struct snd_soc_codec_dai wm8980_dai = {
++ .name = "WM8980 HiFi",
++ .playback = {
++ .stream_name = "Playback",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .capture = {
++ .stream_name = "Capture",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .config_sysclk = wm8980_config_sysclk,
++ .digital_mute = wm8980_mute,
++ .ops = {
++ .prepare = wm8980_pcm_prepare,
++ .hw_free = wm8980_hw_free,
++ },
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8980_modes),
++ .mode = wm8980_modes,
++ },
++};
++EXPORT_SYMBOL_GPL(wm8980_dai);
++
++static int wm8980_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ wm8980_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int wm8980_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++ u8 data[2];
++ u16 *cache = codec->reg_cache;
++
++ /* Sync reg_cache with the hardware */
++ for (i = 0; i < ARRAY_SIZE(wm8980_reg); i++) {
++ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
++ data[1] = cache[i] & 0x00ff;
++ codec->hw_write(codec->control_data, data, 2);
++ }
++ wm8980_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ wm8980_dapm_event(codec, codec->suspend_dapm_state);
++ return 0;
++}
++
++/*
++ * initialise the WM8980 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int wm8980_init(struct snd_soc_device* socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int ret = 0;
++
++ codec->name = "WM8980";
++ codec->owner = THIS_MODULE;
++ codec->read = wm8980_read_reg_cache;
++ codec->write = wm8980_write;
++ codec->dapm_event = wm8980_dapm_event;
++ codec->dai = &wm8980_dai;
++ codec->num_dai = 1;
++ codec->reg_cache_size = ARRAY_SIZE(wm8980_reg);
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8980_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL)
++ return -ENOMEM;
++ memcpy(codec->reg_cache, wm8980_reg,
++ sizeof(u16) * ARRAY_SIZE(wm8980_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8980_reg);
++
++ wm8980_reset(codec);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if(ret < 0) {
++ kfree(codec->reg_cache);
++ return ret;
++ }
++
++ /* power on device */
++ wm8980_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ wm8980_add_controls(codec);
++ wm8980_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if(ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++static struct snd_soc_device *wm8980_socdev;
++
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++
++/*
++ * WM8980 2 wire address is 0x1a
++ */
++#define I2C_DRIVERID_WM8980 0xfefe /* liam - need a proper id */
++
++static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
++
++/* Magic definition of all other variables and things */
++I2C_CLIENT_INSMOD;
++
++static struct i2c_driver wm8980_i2c_driver;
++static struct i2c_client client_template;
++
++/* If the i2c layer weren't so broken, we could pass this kind of data
++ around */
++
++static int wm8980_codec_probe(struct i2c_adapter *adap, int addr, int kind)
++{
++ struct snd_soc_device *socdev = wm8980_socdev;
++ struct wm8980_setup_data *setup = socdev->codec_data;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct i2c_client *i2c;
++ int ret;
++
++ if (addr != setup->i2c_address)
++ return -ENODEV;
++
++ client_template.adapter = adap;
++ client_template.addr = addr;
++
++ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
++ if (i2c == NULL){
++ kfree(codec);
++ return -ENOMEM;
++ }
++ memcpy(i2c, &client_template, sizeof(struct i2c_client));
++
++ i2c_set_clientdata(i2c, codec);
++
++ codec->control_data = i2c;
++
++ ret = i2c_attach_client(i2c);
++ if(ret < 0) {
++ err("failed to attach codec at addr %x\n", addr);
++ goto err;
++ }
++
++ ret = wm8980_init(socdev);
++ if(ret < 0) {
++ err("failed to initialise WM8980\n");
++ goto err;
++ }
++ return ret;
++
++err:
++ kfree(codec);
++ kfree(i2c);
++ return ret;
++
++}
++
++static int wm8980_i2c_detach(struct i2c_client *client)
++{
++ struct snd_soc_codec *codec = i2c_get_clientdata(client);
++
++ i2c_detach_client(client);
++
++ kfree(codec->reg_cache);
++ kfree(client);
++
++ return 0;
++}
++
++static int wm8980_i2c_attach(struct i2c_adapter *adap)
++{
++ return i2c_probe(adap, &addr_data, wm8980_codec_probe);
++}
++
++/* corgi i2c codec control layer */
++static struct i2c_driver wm8980_i2c_driver = {
++ .driver = {
++ .name = "WM8980 I2C Codec",
++ .owner = THIS_MODULE,
++ },
++ .id = I2C_DRIVERID_WM8980,
++ .attach_adapter = wm8980_i2c_attach,
++ .detach_client = wm8980_i2c_detach,
++ .command = NULL,
++};
++
++static struct i2c_client client_template = {
++ .name = "WM8980",
++ .driver = &wm8980_i2c_driver,
++};
++#endif
++
++static int wm8980_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct wm8980_setup_data *setup;
++ struct snd_soc_codec *codec;
++ int ret = 0;
++
++ info("WM8980 Audio Codec %s", WM8980_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ wm8980_socdev = socdev;
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ if (setup->i2c_address) {
++ normal_i2c[0] = setup->i2c_address;
++ codec->hw_write = (hw_write_t)i2c_master_send;
++ ret = i2c_add_driver(&wm8980_i2c_driver);
++ if (ret != 0)
++ printk(KERN_ERR "can't add i2c driver");
++ }
++#else
++ /* Add other interfaces here */
++#endif
++ return ret;
++}
++
++/* power down chip */
++static int wm8980_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if (codec->control_data)
++ wm8980_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ i2c_del_driver(&wm8980_i2c_driver);
++#endif
++ kfree(codec);
++
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_wm8980 = {
++ .probe = wm8980_probe,
++ .remove = wm8980_remove,
++ .suspend = wm8980_suspend,
++ .resume = wm8980_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_wm8980);
++
++MODULE_DESCRIPTION("ASoC WM8980 driver");
++MODULE_AUTHOR("Mike Arthur");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8980.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8980.h
+@@ -0,0 +1,77 @@
++/*
++ * wm8980.h -- WM8980 Soc Audio driver
++ *
++ * 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.
++ */
++
++#ifndef _WM8980_H
++#define _WM8980_H
++
++/* WM8980 register space */
++
++#define WM8980_RESET 0x0
++#define WM8980_POWER1 0x1
++#define WM8980_POWER2 0x2
++#define WM8980_POWER3 0x3
++#define WM8980_IFACE 0x4
++#define WM8980_COMP 0x5
++#define WM8980_CLOCK 0x6
++#define WM8980_ADD 0x7
++#define WM8980_GPIO 0x8
++#define WM8980_JACK1 0x9
++#define WM8980_DAC 0xa
++#define WM8980_DACVOLL 0xb
++#define WM8980_DACVOLR 0xc
++#define WM8980_JACK2 0xd
++#define WM8980_ADC 0xe
++#define WM8980_ADCVOLL 0xf
++#define WM8980_ADCVOLR 0x10
++#define WM8980_EQ1 0x12
++#define WM8980_EQ2 0x13
++#define WM8980_EQ3 0x14
++#define WM8980_EQ4 0x15
++#define WM8980_EQ5 0x16
++#define WM8980_DACLIM1 0x18
++#define WM8980_DACLIM2 0x19
++#define WM8980_NOTCH1 0x1b
++#define WM8980_NOTCH2 0x1c
++#define WM8980_NOTCH3 0x1d
++#define WM8980_NOTCH4 0x1e
++#define WM8980_ALC1 0x20
++#define WM8980_ALC2 0x21
++#define WM8980_ALC3 0x22
++#define WM8980_NGATE 0x23
++#define WM8980_PLLN 0x24
++#define WM8980_PLLK1 0x25
++#define WM8980_PLLK2 0x26
++#define WM8980_PLLK3 0x27
++#define WM8980_VIDEO 0x28
++#define WM8980_3D 0x29
++#define WM8980_BEEP 0x2b
++#define WM8980_INPUT 0x2c
++#define WM8980_INPPGAL 0x2d
++#define WM8980_INPPGAR 0x2e
++#define WM8980_ADCBOOSTL 0x2f
++#define WM8980_ADCBOOSTR 0x30
++#define WM8980_OUTPUT 0x31
++#define WM8980_MIXL 0x32
++#define WM8980_MIXR 0x33
++#define WM8980_HPVOLL 0x34
++#define WM8980_HPVOLR 0x35
++#define WM8980_SPKVOLL 0x36
++#define WM8980_SPKVOLR 0x37
++#define WM8980_OUT3MIX 0x38
++#define WM8980_MONOMIX 0x39
++
++#define WM8980_CACHEREGNUM 58
++
++struct wm8980_setup_data {
++ unsigned short i2c_address;
++};
++
++extern struct snd_soc_codec_dai wm8980_dai;
++extern struct snd_soc_codec_device soc_codec_dev_wm8980;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/at91/eti_b1_wm8731.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/at91/eti_b1_wm8731.c
+@@ -0,0 +1,230 @@
++/*
++ * eti_b1_wm8731 -- SoC audio for Endrelia ETI_B1.
++ *
++ * Author: Frank Mandarino <fmandarino@endrelia.com>
++ * Endrelia Technologies Inc.
++ * Created: Mar 29, 2006
++ *
++ * Based on corgi.c by:
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Authors: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
++ * Richard Purdie <richard@openedhand.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
++ * 30th Nov 2005 Initial version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/version.h>
++#include <linux/kernel.h>
++#include <linux/clk.h>
++#include <linux/timer.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++
++#include <asm/arch/at91rm9200.h>
++#include <asm/arch/gpio.h>
++#include <asm/arch/hardware.h>
++
++#include "../codecs/wm8731.h"
++#include "at91rm9200-pcm.h"
++
++#if 0
++#define DBG(x...) printk(KERN_INFO "eti_b1_wm8731:" x)
++#else
++#define DBG(x...)
++#endif
++
++static struct clk *pck1_clk;
++static struct clk *pllb_clk;
++
++static int eti_b1_startup(snd_pcm_substream_t *substream)
++{
++ /* Start PCK1 clock. */
++ clk_enable(pck1_clk);
++ DBG("pck1 started\n");
++
++ return 0;
++}
++
++static void eti_b1_shutdown(snd_pcm_substream_t *substream)
++{
++ /* Stop PCK1 clock. */
++ clk_disable(pck1_clk);
++ DBG("pck1 stopped\n");
++}
++
++static struct snd_soc_ops eti_b1_ops = {
++ .startup = eti_b1_startup,
++ .shutdown = eti_b1_shutdown,
++};
++
++
++static const struct snd_soc_dapm_widget eti_b1_dapm_widgets[] = {
++ SND_SOC_DAPM_MIC("Int Mic", NULL),
++ SND_SOC_DAPM_SPK("Ext Spk", NULL),
++};
++
++static const char *intercon[][3] = {
++
++ /* speaker connected to LHPOUT */
++ {"Ext Spk", NULL, "LHPOUT"},
++
++ /* mic is connected to Mic Jack, with WM8731 Mic Bias */
++ {"MICIN", NULL, "Mic Bias"},
++ {"Mic Bias", NULL, "Int Mic"},
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++/*
++ * Logic for a wm8731 as connected on a Endrelia ETI-B1 board.
++ */
++static int eti_b1_wm8731_init(struct snd_soc_codec *codec)
++{
++ int i;
++
++ DBG("eti_b1_wm8731_init() called\n");
++
++ /* Add specific widgets */
++ for(i = 0; i < ARRAY_SIZE(eti_b1_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &eti_b1_dapm_widgets[i]);
++ }
++
++ /* Set up specific audio path interconnects */
++ for(i = 0; intercon[i][0] != NULL; i++) {
++ snd_soc_dapm_connect_input(codec, intercon[i][0],
++ intercon[i][1], intercon[i][2]);
++ }
++
++ /* not connected */
++ snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
++ snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
++
++ /* always connected */
++ snd_soc_dapm_set_endpoint(codec, "Int Mic", 1);
++ snd_soc_dapm_set_endpoint(codec, "Ext Spk", 1);
++
++ snd_soc_dapm_sync_endpoints(codec);
++
++ return 0;
++}
++
++unsigned int eti_b1_config_sysclk(struct snd_soc_pcm_runtime *rtd,
++ struct snd_soc_clock_info *info)
++{
++ if(info->bclk_master & SND_SOC_DAIFMT_CBS_CFS) {
++ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 12000000);
++ }
++ return 0;
++}
++
++static struct snd_soc_dai_link eti_b1_dai = {
++ .name = "WM8731",
++ .stream_name = "WM8731",
++ .cpu_dai = &at91rm9200_i2s_dai[1],
++ .codec_dai = &wm8731_dai,
++ .init = eti_b1_wm8731_init,
++ .config_sysclk = eti_b1_config_sysclk,
++};
++
++static struct snd_soc_machine snd_soc_machine_eti_b1 = {
++ .name = "ETI_B1",
++ .dai_link = &eti_b1_dai,
++ .num_links = 1,
++ .ops = &eti_b1_ops,
++};
++
++static struct wm8731_setup_data eti_b1_wm8731_setup = {
++ .i2c_address = 0x1a,
++};
++
++static struct snd_soc_device eti_b1_snd_devdata = {
++ .machine = &snd_soc_machine_eti_b1,
++ .platform = &at91rm9200_soc_platform,
++ .codec_dev = &soc_codec_dev_wm8731,
++ .codec_data = &eti_b1_wm8731_setup,
++};
++
++static struct platform_device *eti_b1_snd_device;
++
++static int __init eti_b1_init(void)
++{
++ int ret;
++ u32 ssc_pio_lines;
++
++ eti_b1_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!eti_b1_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(eti_b1_snd_device, &eti_b1_snd_devdata);
++ eti_b1_snd_devdata.dev = &eti_b1_snd_device->dev;
++
++ ret = platform_device_add(eti_b1_snd_device);
++ if (ret) {
++ platform_device_put(eti_b1_snd_device);
++ return ret;
++ }
++
++ ssc_pio_lines = AT91_PB6_TF1 | AT91_PB7_TK1 | AT91_PB8_TD1
++ | AT91_PB9_RD1 /* | AT91_PB10_RK1 | AT91_PB11_RF1 */;
++
++ /* Reset all PIO registers and assign lines to peripheral A */
++ at91_sys_write(AT91_PIOB + PIO_PDR, ssc_pio_lines);
++ at91_sys_write(AT91_PIOB + PIO_ODR, ssc_pio_lines);
++ at91_sys_write(AT91_PIOB + PIO_IFDR, ssc_pio_lines);
++ at91_sys_write(AT91_PIOB + PIO_CODR, ssc_pio_lines);
++ at91_sys_write(AT91_PIOB + PIO_IDR, ssc_pio_lines);
++ at91_sys_write(AT91_PIOB + PIO_MDDR, ssc_pio_lines);
++ at91_sys_write(AT91_PIOB + PIO_PUDR, ssc_pio_lines);
++ at91_sys_write(AT91_PIOB + PIO_ASR, ssc_pio_lines);
++ at91_sys_write(AT91_PIOB + PIO_OWDR, ssc_pio_lines);
++
++ /*
++ * Set PCK1 parent to PLLB and its rate to 12 Mhz.
++ */
++ pllb_clk = clk_get(NULL, "pllb");
++ pck1_clk = clk_get(NULL, "pck1");
++
++ clk_set_parent(pck1_clk, pllb_clk);
++ clk_set_rate(pck1_clk, 12000000);
++
++ DBG("MCLK rate %luHz\n", clk_get_rate(pck1_clk));
++
++ /* assign the GPIO pin to PCK1 */
++ at91_set_B_periph(AT91_PIN_PA24, 0);
++
++ return ret;
++}
++
++static void __exit eti_b1_exit(void)
++{
++ clk_put(pck1_clk);
++ clk_put(pllb_clk);
++
++ platform_device_unregister(eti_b1_snd_device);
++}
++
++module_init(eti_b1_init);
++module_exit(eti_b1_exit);
++
++/* Module information */
++MODULE_AUTHOR("Frank Mandarino <fmandarino@endrelia.com>");
++MODULE_DESCRIPTION("ALSA SoC ETI-B1-WM8731");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8510.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8510.c
+@@ -0,0 +1,895 @@
++/*
++ * wm8510.c -- WM8510 ALSA Soc Audio driver
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ *
++ * Author: Liam Girdwood <liam.girdwood@wolfsonmicro.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.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/version.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/i2c.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++
++#include "wm8510.h"
++
++#define AUDIO_NAME "wm8510"
++#define WM8510_VERSION "0.5"
++
++/*
++ * Debug
++ */
++
++#define WM8510_DEBUG 0
++
++#ifdef WM8510_DEBUG
++#define dbg(format, arg...) \
++ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
++#else
++#define dbg(format, arg...) do {} while (0)
++#endif
++#define err(format, arg...) \
++ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
++#define info(format, arg...) \
++ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
++#define warn(format, arg...) \
++ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
++
++struct snd_soc_codec_device soc_codec_dev_wm8510;
++
++/*
++ * wm8510 register cache
++ * We can't read the WM8510 register space when we are
++ * using 2 wire for device control, so we cache them instead.
++ */
++static const u16 wm8510_reg[WM8510_CACHEREGNUM] = {
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0050, 0x0000, 0x0140, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x00ff,
++ 0x0000, 0x0000, 0x0100, 0x00ff,
++ 0x0000, 0x0000, 0x012c, 0x002c,
++ 0x002c, 0x002c, 0x002c, 0x0000,
++ 0x0032, 0x0000, 0x0000, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0038, 0x000b, 0x0032, 0x0000,
++ 0x0008, 0x000c, 0x0093, 0x00e9,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0003, 0x0010, 0x0000, 0x0000,
++ 0x0000, 0x0002, 0x0000, 0x0000,
++ 0x0000, 0x0000, 0x0039, 0x0000,
++ 0x0000,
++};
++
++#define WM8510_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
++ SND_SOC_DAIFMT_IB_IF)
++
++#define WM8510_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define WM8510_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 | \
++ SNDRV_PCM_RATE_48000)
++
++#define WM8794_BCLK \
++ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | SND_SOC_FSBD(8) |\
++ SND_SOC_FSBD(16) | SND_SOC_FSBD(32))
++
++#define WM8794_HIFI_BITS \
++ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
++ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
++
++static struct snd_soc_dai_mode wm8510_modes[] = {
++ /* codec frame and clock master modes */
++ {
++ .fmt = WM8510_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8794_HIFI_BITS,
++ .pcmrate = WM8510_RATES,
++ .pcmdir = WM8510_DIR,
++ .fs = 256,
++ .bfs = WM8794_BCLK,
++ },
++
++ /* codec frame and clock slave modes */
++ {
++ .fmt = WM8510_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = WM8794_HIFI_BITS,
++ .pcmrate = WM8510_RATES,
++ .pcmdir = WM8510_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++};
++
++/*
++ * read wm8510 register cache
++ */
++static inline unsigned int wm8510_read_reg_cache(struct snd_soc_codec * codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg == WM8510_RESET)
++ return 0;
++ if (reg >= WM8510_CACHEREGNUM)
++ return -1;
++ return cache[reg];
++}
++
++/*
++ * write wm8510 register cache
++ */
++static inline void wm8510_write_reg_cache(struct snd_soc_codec *codec,
++ u16 reg, unsigned int value)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg >= WM8510_CACHEREGNUM)
++ return;
++ cache[reg] = value;
++}
++
++/*
++ * write to the WM8510 register space
++ */
++static int wm8510_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int value)
++{
++ u8 data[2];
++
++ /* data is
++ * D15..D9 WM8510 register offset
++ * D8...D0 register data
++ */
++ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
++ data[1] = value & 0x00ff;
++
++ wm8510_write_reg_cache (codec, reg, value);
++ if (codec->hw_write(codec->control_data, data, 2) == 2)
++ return 0;
++ else
++ return -EIO;
++}
++
++#define wm8510_reset(c) wm8510_write(c, WM8510_RESET, 0)
++
++static const char *wm8510_companding[] = {"Off", "NC", "u-law", "A-law" };
++static const char *wm8510_deemp[] = {"None", "32kHz", "44.1kHz", "48kHz" };
++static const char *wm8510_alc[] = {"ALC", "Limiter" };
++
++static const struct soc_enum wm8510_enum[] = {
++ SOC_ENUM_SINGLE(WM8510_COMP, 1, 4, wm8510_companding), /* adc */
++ SOC_ENUM_SINGLE(WM8510_COMP, 3, 4, wm8510_companding), /* dac */
++ SOC_ENUM_SINGLE(WM8510_DAC, 4, 4, wm8510_deemp),
++ SOC_ENUM_SINGLE(WM8510_ALC3, 8, 2, wm8510_alc),
++};
++
++static const struct snd_kcontrol_new wm8510_snd_controls[] = {
++
++SOC_SINGLE("Digital Loopback Switch", WM8510_COMP, 0, 1, 0),
++
++SOC_ENUM("DAC Companding", wm8510_enum[1]),
++SOC_ENUM("ADC Companding", wm8510_enum[0]),
++
++SOC_ENUM("Playback De-emphasis", wm8510_enum[2]),
++SOC_SINGLE("DAC Inversion Switch", WM8510_DAC, 0, 1, 0),
++
++SOC_SINGLE("Master Playback Volume", WM8510_DACVOL, 0, 127, 0),
++
++SOC_SINGLE("High Pass Filter Switch", WM8510_ADC, 8, 1, 0),
++SOC_SINGLE("High Pass Cut Off", WM8510_ADC, 4, 7, 0),
++SOC_SINGLE("ADC Inversion Switch", WM8510_COMP, 0, 1, 0),
++
++SOC_SINGLE("Capture Volume", WM8510_ADCVOL, 0, 127, 0),
++
++SOC_SINGLE("DAC Playback Limiter Switch", WM8510_DACLIM1, 8, 1, 0),
++SOC_SINGLE("DAC Playback Limiter Decay", WM8510_DACLIM1, 4, 15, 0),
++SOC_SINGLE("DAC Playback Limiter Attack", WM8510_DACLIM1, 0, 15, 0),
++
++SOC_SINGLE("DAC Playback Limiter Threshold", WM8510_DACLIM2, 4, 7, 0),
++SOC_SINGLE("DAC Playback Limiter Boost", WM8510_DACLIM2, 0, 15, 0),
++
++SOC_SINGLE("ALC Enable Switch", WM8510_ALC1, 8, 1, 0),
++SOC_SINGLE("ALC Capture Max Gain", WM8510_ALC1, 3, 7, 0),
++SOC_SINGLE("ALC Capture Min Gain", WM8510_ALC1, 0, 7, 0),
++
++SOC_SINGLE("ALC Capture ZC Switch", WM8510_ALC2, 8, 1, 0),
++SOC_SINGLE("ALC Capture Hold", WM8510_ALC2, 4, 7, 0),
++SOC_SINGLE("ALC Capture Target", WM8510_ALC2, 0, 15, 0),
++
++SOC_ENUM("ALC Capture Mode", wm8510_enum[3]),
++SOC_SINGLE("ALC Capture Decay", WM8510_ALC3, 4, 15, 0),
++SOC_SINGLE("ALC Capture Attack", WM8510_ALC3, 0, 15, 0),
++
++SOC_SINGLE("ALC Capture Noise Gate Switch", WM8510_NGATE, 3, 1, 0),
++SOC_SINGLE("ALC Capture Noise Gate Threshold", WM8510_NGATE, 0, 7, 0),
++
++SOC_SINGLE("Capture PGA ZC Switch", WM8510_INPPGA, 7, 1, 0),
++SOC_SINGLE("Capture PGA Volume", WM8510_INPPGA, 0, 63, 0),
++
++SOC_SINGLE("Speaker Playback ZC Switch", WM8510_SPKVOL, 7, 1, 0),
++SOC_SINGLE("Speaker Playback Switch", WM8510_SPKVOL, 6, 1, 1),
++SOC_SINGLE("Speaker Playback Volume", WM8510_SPKVOL, 0, 63, 0),
++
++SOC_SINGLE("Capture Boost(+20dB)", WM8510_ADCBOOST, 8, 1, 0),
++SOC_SINGLE("Mono Playback Switch", WM8510_MONOMIX, 6, 1, 0),
++};
++
++/* add non dapm controls */
++static int wm8510_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(wm8510_snd_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8510_snd_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++
++ return 0;
++}
++
++/* Speaker Output Mixer */
++static const struct snd_kcontrol_new wm8510_speaker_mixer_controls[] = {
++SOC_DAPM_SINGLE("Line Bypass Switch", WM8510_SPKMIX, 1, 1, 0),
++SOC_DAPM_SINGLE("Aux Playback Switch", WM8510_SPKMIX, 5, 1, 0),
++SOC_DAPM_SINGLE("PCM Playback Switch", WM8510_SPKMIX, 0, 1, 1),
++};
++
++/* Mono Output Mixer */
++static const struct snd_kcontrol_new wm8510_mono_mixer_controls[] = {
++SOC_DAPM_SINGLE("Line Bypass Switch", WM8510_MONOMIX, 1, 1, 0),
++SOC_DAPM_SINGLE("Aux Playback Switch", WM8510_MONOMIX, 2, 1, 0),
++SOC_DAPM_SINGLE("PCM Playback Switch", WM8510_MONOMIX, 0, 1, 1),
++};
++
++/* AUX Input boost vol */
++static const struct snd_kcontrol_new wm8510_aux_boost_controls =
++SOC_DAPM_SINGLE("Aux Volume", WM8510_ADCBOOST, 0, 7, 0);
++
++/* Mic Input boost vol */
++static const struct snd_kcontrol_new wm8510_mic_boost_controls =
++SOC_DAPM_SINGLE("Mic Volume", WM8510_ADCBOOST, 4, 7, 0);
++
++/* Capture boost switch */
++static const struct snd_kcontrol_new wm8510_capture_boost_controls =
++SOC_DAPM_SINGLE("Capture Boost Switch", WM8510_INPPGA, 6, 1, 0);
++
++/* Aux In to PGA */
++static const struct snd_kcontrol_new wm8510_aux_capture_boost_controls =
++SOC_DAPM_SINGLE("Aux Capture Boost Switch", WM8510_INPPGA, 2, 1, 0);
++
++/* Mic P In to PGA */
++static const struct snd_kcontrol_new wm8510_micp_capture_boost_controls =
++SOC_DAPM_SINGLE("Mic P Capture Boost Switch", WM8510_INPPGA, 0, 1, 0);
++
++/* Mic N In to PGA */
++static const struct snd_kcontrol_new wm8510_micn_capture_boost_controls =
++SOC_DAPM_SINGLE("Mic N Capture Boost Switch", WM8510_INPPGA, 1, 1, 0);
++
++static const struct snd_soc_dapm_widget wm8510_dapm_widgets[] = {
++SND_SOC_DAPM_MIXER("Speaker Mixer", WM8510_POWER3, 2, 0,
++ &wm8510_speaker_mixer_controls[0],
++ ARRAY_SIZE(wm8510_speaker_mixer_controls)),
++SND_SOC_DAPM_MIXER("Mono Mixer", WM8510_POWER3, 3, 0,
++ &wm8510_mono_mixer_controls[0],
++ ARRAY_SIZE(wm8510_mono_mixer_controls)),
++SND_SOC_DAPM_DAC("DAC", "HiFi Playback", WM8510_POWER3, 0, 0),
++SND_SOC_DAPM_ADC("ADC", "HiFi Capture", WM8510_POWER3, 0, 0),
++SND_SOC_DAPM_PGA("Aux Input", WM8510_POWER1, 6, 0, NULL, 0),
++SND_SOC_DAPM_PGA("SpkN Out", WM8510_POWER3, 5, 0, NULL, 0),
++SND_SOC_DAPM_PGA("SpkP Out", WM8510_POWER3, 6, 0, NULL, 0),
++SND_SOC_DAPM_PGA("Mono Out", WM8510_POWER3, 7, 0, NULL, 0),
++SND_SOC_DAPM_PGA("Mic PGA", WM8510_POWER2, 2, 0, NULL, 0),
++
++SND_SOC_DAPM_PGA("Aux Boost", SND_SOC_NOPM, 0, 0,
++ &wm8510_aux_boost_controls, 1),
++SND_SOC_DAPM_PGA("Mic Boost", SND_SOC_NOPM, 0, 0,
++ &wm8510_mic_boost_controls, 1),
++SND_SOC_DAPM_SWITCH("Capture Boost", SND_SOC_NOPM, 0, 0,
++ &wm8510_capture_boost_controls),
++
++SND_SOC_DAPM_MIXER("Boost Mixer", WM8510_POWER2, 4, 0, NULL, 0),
++
++SND_SOC_DAPM_MICBIAS("Mic Bias", WM8510_POWER1, 4, 0),
++
++SND_SOC_DAPM_INPUT("MICN"),
++SND_SOC_DAPM_INPUT("MICP"),
++SND_SOC_DAPM_INPUT("AUX"),
++SND_SOC_DAPM_OUTPUT("MONOOUT"),
++SND_SOC_DAPM_OUTPUT("SPKOUTP"),
++SND_SOC_DAPM_OUTPUT("SPKOUTN"),
++};
++
++static const char *audio_map[][3] = {
++ /* Mono output mixer */
++ {"Mono Mixer", "PCM Playback Switch", "DAC"},
++ {"Mono Mixer", "Aux Playback Switch", "Aux Input"},
++ {"Mono Mixer", "Line Bypass Switch", "Boost Mixer"},
++
++ /* Speaker output mixer */
++ {"Speaker Mixer", "PCM Playback Switch", "DAC"},
++ {"Speaker Mixer", "Aux Playback Switch", "Aux Input"},
++ {"Speaker Mixer", "Line Bypass Switch", "Boost Mixer"},
++
++ /* Outputs */
++ {"Mono Out", NULL, "Mono Mixer"},
++ {"MONOOUT", NULL, "Mono Out"},
++ {"SpkN Out", NULL, "Speaker Mixer"},
++ {"SpkP Out", NULL, "Speaker Mixer"},
++ {"SPKOUTN", NULL, "SpkN Out"},
++ {"SPKOUTP", NULL, "SpkP Out"},
++
++ /* Boost Mixer */
++ {"Boost Mixer", NULL, "ADC"},
++ {"Capture Boost Switch", "Aux Capture Boost Switch", "AUX"},
++ {"Aux Boost", "Aux Volume", "Boost Mixer"},
++ {"Capture Boost", "Capture Switch", "Boost Mixer"},
++ {"Mic Boost", "Mic Volume", "Boost Mixer"},
++
++ /* Inputs */
++ {"MICP", NULL, "Mic Boost"},
++ {"MICN", NULL, "Mic PGA"},
++ {"Mic PGA", NULL, "Capture Boost"},
++ {"AUX", NULL, "Aux Input"},
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int wm8510_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(wm8510_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm8510_dapm_widgets[i]);
++ }
++
++ /* set up 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]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++struct pll_ {
++ unsigned int in_hz, out_hz;
++ unsigned int pre:4; /* prescale - 1 */
++ unsigned int n:4;
++ unsigned int k;
++};
++
++struct pll_ pll[] = {
++ {12000000, 11289600, 0, 7, 0x86c220},
++ {12000000, 12288000, 0, 8, 0x3126e8},
++ {13000000, 11289600, 0, 6, 0xf28bd4},
++ {13000000, 12288000, 0, 7, 0x8fd525},
++ {12288000, 11289600, 0, 7, 0x59999a},
++ {11289600, 12288000, 0, 8, 0x80dee9},
++ /* liam - add more entries */
++};
++
++static int set_pll(struct snd_soc_codec *codec, unsigned int in,
++ unsigned int out)
++{
++ int i;
++ u16 reg;
++
++ if(out == 0) {
++ reg = wm8510_read_reg_cache(codec, WM8510_POWER1);
++ wm8510_write(codec, WM8510_POWER1, reg & 0x1df);
++ return 0;
++ }
++
++ for(i = 0; i < ARRAY_SIZE(pll); i++) {
++ if (in == pll[i].in_hz && out == pll[i].out_hz) {
++ wm8510_write(codec, WM8510_PLLN, (pll[i].pre << 4) | pll[i].n);
++ wm8510_write(codec, WM8510_PLLK1, pll[i].k >> 18);
++ wm8510_write(codec, WM8510_PLLK1, (pll[i].k >> 9) && 0x1ff);
++ wm8510_write(codec, WM8510_PLLK1, pll[i].k && 0x1ff);
++ reg = wm8510_read_reg_cache(codec, WM8510_POWER1);
++ wm8510_write(codec, WM8510_POWER1, reg | 0x020);
++ return 0;
++ }
++ }
++ return -EINVAL;
++}
++
++/* mclk dividers * 2 */
++static unsigned char mclk_div[] = {2, 3, 4, 6, 8, 12, 16, 24};
++
++/* we need 256FS to drive the DAC's and ADC's */
++static unsigned int wm8510_config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ int i, j, best_clk = info->fs * info->rate;
++
++ /* can we run at this clk without the PLL ? */
++ for (i = 0; i < ARRAY_SIZE(mclk_div); i++) {
++ if ((best_clk >> 1) * mclk_div[i] == clk) {
++ dai->pll_in = 0;
++ dai->clk_div = mclk_div[i];
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++
++ /* now check for PLL support */
++ for (i = 0; i < ARRAY_SIZE(pll); i++) {
++ if (pll[i].in_hz == clk) {
++ for (j = 0; j < ARRAY_SIZE(mclk_div); j++) {
++ if (pll[i].out_hz == mclk_div[j] * (best_clk >> 1)) {
++ dai->pll_in = clk;
++ dai->pll_out = pll[i].out_hz;
++ dai->clk_div = mclk_div[j];
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++ }
++ }
++
++ /* this clk is not supported */
++ return 0;
++}
++
++static int wm8510_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct snd_soc_codec_dai *dai = rtd->codec_dai;
++ u16 iface = 0, bfs, clk = 0, adn;
++ int fs = 48000 << 7, i;
++
++ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
++ switch (bfs) {
++ case 2:
++ clk |= 0x1 << 2;
++ break;
++ case 4:
++ clk |= 0x2 << 2;
++ break;
++ case 8:
++ clk |= 0x3 << 2;
++ break;
++ case 16:
++ clk |= 0x4 << 2;
++ break;
++ case 32:
++ clk |= 0x5 << 2;
++ break;
++ }
++
++ /* set master/slave audio interface */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ clk |= 0x0001;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ break;
++ }
++
++ /* interface format */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ iface |= 0x0010;
++ break;
++ case SND_SOC_DAIFMT_RIGHT_J:
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ iface |= 0x0008;
++ break;
++ case SND_SOC_DAIFMT_DSP_A:
++ iface |= 0x00018;
++ break;
++ }
++
++ /* bit size */
++ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ iface |= 0x0020;
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ iface |= 0x0040;
++ break;
++ case SNDRV_PCM_FMTBIT_S32_LE:
++ iface |= 0x0060;
++ break;
++ }
++
++ /* clock inversion */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_IF:
++ iface |= 0x0180;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ iface |= 0x0100;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ iface |= 0x0080;
++ break;
++ }
++
++ /* filter coefficient */
++ adn = wm8510_read_reg_cache(codec, WM8510_ADD) & 0x1f1;
++ switch (rtd->codec_dai->dai_runtime.pcmrate) {
++ case SNDRV_PCM_RATE_8000:
++ adn |= 0x5 << 1;
++ fs = 8000 << 7;
++ break;
++ case SNDRV_PCM_RATE_11025:
++ adn |= 0x4 << 1;
++ fs = 11025 << 7;
++ break;
++ case SNDRV_PCM_RATE_16000:
++ adn |= 0x3 << 1;
++ fs = 16000 << 7;
++ break;
++ case SNDRV_PCM_RATE_22050:
++ adn |= 0x2 << 1;
++ fs = 22050 << 7;
++ break;
++ case SNDRV_PCM_RATE_32000:
++ adn |= 0x1 << 1;
++ fs = 32000 << 7;
++ break;
++ case SNDRV_PCM_RATE_44100:
++ fs = 44100 << 7;
++ break;
++ }
++
++ /* do we need to enable the PLL */
++ if(dai->pll_in)
++ set_pll(codec, dai->pll_in, dai->pll_out);
++
++ /* divide the clock to 256 fs */
++ for(i = 0; i < ARRAY_SIZE(mclk_div); i++) {
++ if (dai->clk_div == mclk_div[i]) {
++ clk |= i << 5;
++ clk &= 0xff;
++ goto set;
++ }
++ }
++
++set:
++ /* set iface */
++ wm8510_write(codec, WM8510_IFACE, iface);
++ wm8510_write(codec, WM8510_CLOCK, clk);
++
++ return 0;
++}
++
++static int wm8510_hw_free(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ set_pll(codec, 0, 0);
++ return 0;
++}
++
++static int wm8510_mute(struct snd_soc_codec *codec,
++ struct snd_soc_codec_dai *dai, int mute)
++{
++ u16 mute_reg = wm8510_read_reg_cache(codec, WM8510_DAC) & 0xffbf;
++ if(mute)
++ wm8510_write(codec, WM8510_DAC, mute_reg | 0x40);
++ else
++ wm8510_write(codec, WM8510_DAC, mute_reg);
++ return 0;
++}
++
++/* liam need to make this lower power with dapm */
++static int wm8510_dapm_event(struct snd_soc_codec *codec, int event)
++{
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ /* vref/mid, clk and osc on, dac unmute, active */
++ wm8510_write(codec, WM8510_POWER1, 0x1ff);
++ wm8510_write(codec, WM8510_POWER2, 0x1ff);
++ wm8510_write(codec, WM8510_POWER3, 0x1ff);
++ break;
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ break;
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* everything off except vref/vmid, dac mute, inactive */
++
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ /* everything off, dac mute, inactive */
++ wm8510_write(codec, WM8510_POWER1, 0x0);
++ wm8510_write(codec, WM8510_POWER2, 0x0);
++ wm8510_write(codec, WM8510_POWER3, 0x0);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++struct snd_soc_codec_dai wm8510_dai = {
++ .name = "WM8510 HiFi",
++ .playback = {
++ .stream_name = "Playback",
++ .channels_min = 1,
++ .channels_max = 1,
++ },
++ .capture = {
++ .stream_name = "Capture",
++ .channels_min = 1,
++ .channels_max = 1,
++ },
++ .config_sysclk = wm8510_config_sysclk,
++ .digital_mute = wm8510_mute,
++ .ops = {
++ .prepare = wm8510_pcm_prepare,
++ .hw_free = wm8510_hw_free,
++ },
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8510_modes),
++ .mode = wm8510_modes,
++ },
++};
++EXPORT_SYMBOL_GPL(wm8510_dai);
++
++static int wm8510_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ wm8510_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int wm8510_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++ u8 data[2];
++ u16 *cache = codec->reg_cache;
++
++ /* Sync reg_cache with the hardware */
++ for (i = 0; i < ARRAY_SIZE(wm8510_reg); i++) {
++ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
++ data[1] = cache[i] & 0x00ff;
++ codec->hw_write(codec->control_data, data, 2);
++ }
++ wm8510_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ wm8510_dapm_event(codec, codec->suspend_dapm_state);
++ return 0;
++}
++
++/*
++ * initialise the WM8510 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int wm8510_init(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int ret = 0;
++
++ codec->name = "WM8510";
++ codec->owner = THIS_MODULE;
++ codec->read = wm8510_read_reg_cache;
++ codec->write = wm8510_write;
++ codec->dapm_event = wm8510_dapm_event;
++ codec->dai = &wm8510_dai;
++ codec->num_dai = 1;
++ codec->reg_cache_size = ARRAY_SIZE(wm8510_reg);
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8510_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL)
++ return -ENOMEM;
++ memcpy(codec->reg_cache, wm8510_reg,
++ sizeof(u16) * ARRAY_SIZE(wm8510_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8510_reg);
++
++ wm8510_reset(codec);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if(ret < 0) {
++ kfree(codec->reg_cache);
++ return ret;
++ }
++
++ /* power on device */
++ wm8510_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ wm8510_add_controls(codec);
++ wm8510_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if(ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++static struct snd_soc_device *wm8510_socdev;
++
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++
++/*
++ * WM8510 2 wire address is 0x1a
++ */
++#define I2C_DRIVERID_WM8510 0xfefe /* liam - need a proper id */
++
++static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
++
++/* Magic definition of all other variables and things */
++I2C_CLIENT_INSMOD;
++
++static struct i2c_driver wm8510_i2c_driver;
++static struct i2c_client client_template;
++
++/* If the i2c layer weren't so broken, we could pass this kind of data
++ around */
++
++static int wm8510_codec_probe(struct i2c_adapter *adap, int addr, int kind)
++{
++ struct snd_soc_device *socdev = wm8510_socdev;
++ struct wm8510_setup_data *setup = socdev->codec_data;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct i2c_client *i2c;
++ int ret;
++
++ if (addr != setup->i2c_address)
++ return -ENODEV;
++
++ client_template.adapter = adap;
++ client_template.addr = addr;
++
++ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
++ if (i2c == NULL){
++ kfree(codec);
++ return -ENOMEM;
++ }
++ memcpy(i2c, &client_template, sizeof(struct i2c_client));
++ i2c_set_clientdata(i2c, codec);
++ codec->control_data = i2c;
++
++ ret = i2c_attach_client(i2c);
++ if(ret < 0) {
++ err("failed to attach codec at addr %x\n", addr);
++ goto err;
++ }
++
++ ret = wm8510_init(socdev);
++ if(ret < 0) {
++ err("failed to initialise WM8510\n");
++ goto err;
++ }
++ return ret;
++
++err:
++ kfree(codec);
++ kfree(i2c);
++ return ret;
++}
++
++static int wm8510_i2c_detach(struct i2c_client *client)
++{
++ struct snd_soc_codec *codec = i2c_get_clientdata(client);
++ i2c_detach_client(client);
++ kfree(codec->reg_cache);
++ kfree(client);
++ return 0;
++}
++
++static int wm8510_i2c_attach(struct i2c_adapter *adap)
++{
++ return i2c_probe(adap, &addr_data, wm8510_codec_probe);
++}
++
++/* corgi i2c codec control layer */
++static struct i2c_driver wm8510_i2c_driver = {
++ .driver = {
++ .name = "WM8510 I2C Codec",
++ .owner = THIS_MODULE,
++ },
++ .id = I2C_DRIVERID_WM8510,
++ .attach_adapter = wm8510_i2c_attach,
++ .detach_client = wm8510_i2c_detach,
++ .command = NULL,
++};
++
++static struct i2c_client client_template = {
++ .name = "WM8510",
++ .driver = &wm8510_i2c_driver,
++};
++#endif
++
++static int wm8510_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct wm8510_setup_data *setup;
++ struct snd_soc_codec *codec;
++ int ret = 0;
++
++ info("WM8510 Audio Codec %s", WM8510_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ wm8510_socdev = socdev;
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ if (setup->i2c_address) {
++ normal_i2c[0] = setup->i2c_address;
++ codec->hw_write = (hw_write_t)i2c_master_send;
++ ret = i2c_add_driver(&wm8510_i2c_driver);
++ if (ret != 0)
++ printk(KERN_ERR "can't add i2c driver");
++ }
++#else
++ /* Add other interfaces here */
++#endif
++ return ret;
++}
++
++/* power down chip */
++static int wm8510_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if (codec->control_data)
++ wm8510_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ i2c_del_driver(&wm8510_i2c_driver);
++#endif
++ kfree(codec);
++
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_wm8510 = {
++ .probe = wm8510_probe,
++ .remove = wm8510_remove,
++ .suspend = wm8510_suspend,
++ .resume = wm8510_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_wm8510);
++
++MODULE_DESCRIPTION("ASoC WM8510 driver");
++MODULE_AUTHOR("Liam Girdwood");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8510.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8510.h
+@@ -0,0 +1,64 @@
++/*
++ * wm8510.h -- WM8510 Soc Audio driver
++ *
++ * 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.
++ */
++
++#ifndef _WM8510_H
++#define _WM8510_H
++
++/* WM8510 register space */
++
++#define WM8510_RESET 0x0
++#define WM8510_POWER1 0x1
++#define WM8510_POWER2 0x2
++#define WM8510_POWER3 0x3
++#define WM8510_IFACE 0x4
++#define WM8510_COMP 0x5
++#define WM8510_CLOCK 0x6
++#define WM8510_ADD 0x7
++#define WM8510_GPIO 0x8
++#define WM8510_DAC 0xa
++#define WM8510_DACVOL 0xb
++#define WM8510_ADC 0xe
++#define WM8510_ADCVOL 0xf
++#define WM8510_EQ1 0x12
++#define WM8510_EQ2 0x13
++#define WM8510_EQ3 0x14
++#define WM8510_EQ4 0x15
++#define WM8510_EQ5 0x16
++#define WM8510_DACLIM1 0x18
++#define WM8510_DACLIM2 0x19
++#define WM8510_NOTCH1 0x1b
++#define WM8510_NOTCH2 0x1c
++#define WM8510_NOTCH3 0x1d
++#define WM8510_NOTCH4 0x1e
++#define WM8510_ALC1 0x20
++#define WM8510_ALC2 0x21
++#define WM8510_ALC3 0x22
++#define WM8510_NGATE 0x23
++#define WM8510_PLLN 0x24
++#define WM8510_PLLK1 0x25
++#define WM8510_PLLK2 0x26
++#define WM8510_PLLK3 0x27
++#define WM8510_ATTEN 0x28
++#define WM8510_INPUT 0x2c
++#define WM8510_INPPGA 0x2d
++#define WM8510_ADCBOOST 0x2f
++#define WM8510_OUTPUT 0x31
++#define WM8510_SPKMIX 0x32
++#define WM8510_SPKVOL 0x36
++#define WM8510_MONOMIX 0x38
++
++#define WM8510_CACHEREGNUM 57
++
++struct wm8510_setup_data {
++ unsigned short i2c_address;
++};
++
++extern struct snd_soc_codec_dai wm8510_dai;
++extern struct snd_soc_codec_device soc_codec_dev_wm8510;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/imx/imx-ac97.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/imx/imx-ac97.c
+@@ -0,0 +1,281 @@
++/*
++ * imx-ssi.c -- SSI driver for Freescale IMX
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * Based on mxc-alsa-mc13783 (C) 2006 Freescale.
++ *
++ * 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
++ * 29th Aug 2006 Initial version.
++ *
++ */
++
++#define IMX_AC97_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 | \
++ SNDRV_PCM_RATE_48000)
++
++/* may need to expand this */
++static struct snd_soc_dai_mode imx_ssi_ac97_modes[] = {
++ {0, 0, SNDRV_PCM_FMTBIT_S16_LE, IMX_AC97_RATES},
++ {0, 0, SNDRV_PCM_FMTBIT_S18_3LE, IMX_AC97_RATES},
++ {0, 0, SNDRV_PCM_FMTBIT_S20_3LE, IMX_AC97_RATES},
++};
++
++static imx_pcm_dma_params_t imx_ssi1_pcm_stereo_out = {
++ .name = "SSI1 PCM Stereo out",
++ .params = {
++ .bd_number = 1,
++ .transfer_type = emi_2_per,
++ .watermark_level = SDMA_TXFIFO_WATERMARK,
++ .word_size = TRANSFER_16BIT, // maybe add this in setup func
++ .per_address = SSI1_STX0,
++ .event_id = DMA_REQ_SSI1_TX1,
++ .peripheral_type = SSI,
++ },
++};
++
++static imx_pcm_dma_params_t imx_ssi1_pcm_stereo_in = {
++ .name = "SSI1 PCM Stereo in",
++ .params = {
++ .bd_number = 1,
++ .transfer_type = per_2_emi,
++ .watermark_level = SDMA_RXFIFO_WATERMARK,
++ .word_size = TRANSFER_16BIT, // maybe add this in setup func
++ .per_address = SSI1_SRX0,
++ .event_id = DMA_REQ_SSI1_RX1,
++ .peripheral_type = SSI,
++ },
++};
++
++static imx_pcm_dma_params_t imx_ssi2_pcm_stereo_out = {
++ .name = "SSI2 PCM Stereo out",
++ .params = {
++ .bd_number = 1,
++ .transfer_type = per_2_emi,
++ .watermark_level = SDMA_TXFIFO_WATERMARK,
++ .word_size = TRANSFER_16BIT, // maybe add this in setup func
++ .per_address = SSI2_STX0,
++ .event_id = DMA_REQ_SSI2_TX1,
++ .peripheral_type = SSI,
++ },
++};
++
++static imx_pcm_dma_params_t imx_ssi2_pcm_stereo_in = {
++ .name = "SSI2 PCM Stereo in",
++ .params = {
++ .bd_number = 1,
++ .transfer_type = per_2_emi,
++ .watermark_level = SDMA_RXFIFO_WATERMARK,
++ .word_size = TRANSFER_16BIT, // maybe add this in setup func
++ .per_address = SSI2_SRX0,
++ .event_id = DMA_REQ_SSI2_RX1,
++ .peripheral_type = SSI,
++ },
++};
++
++static unsigned short imx_ssi_ac97_read(struct snd_ac97 *ac97, unsigned short reg)
++{
++}
++
++static void imx_ssi_ac97_write(struct snd_ac97 *ac97, unsigned short reg, unsigned short val)
++{
++}
++
++static void imx_ssi_ac97_warm_reset(struct snd_ac97 *ac97)
++{
++}
++
++static void imx_ssi_ac97_cold_reset(struct snd_ac97 *ac97)
++{
++}
++
++struct snd_ac97_bus_ops soc_ac97_ops = {
++ .read = imx_ssi_ac97_read,
++ .write = imx_ssi_ac97_write,
++ .warm_reset = imx_ssi_ac97_warm_reset,
++ .reset = imx_ssi_ac97_cold_reset,
++};
++
++
++static intimx_ssi1_ac97_probe(struct platform_device *pdev)
++{
++ int ret;
++
++
++ return ret;
++}
++
++static void imx_ssi1_ac97_remove(struct platform_device *pdev)
++{
++ /* shutdown SSI */
++ if(rtd->cpu_dai->id == 0)
++ SSI1_SCR &= ~SSI_SCR_SSIEN;
++ else
++ SSI2_SCR &= ~SSI_SCR_SSIEN;
++ }
++
++}
++
++static int imx_ssi1_ac97_prepare(struct snd_pcm_substream *substream)
++{
++ // set vra
++}
++
++static int imx_ssi_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ if (!rtd->cpu_dai->active) {
++
++ }
++
++ return 0;
++}
++
++static int imx_ssi1_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ int ret = 0;
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
++ SSI1_SCR |= SSI_SCR_TE;
++ SSI1_SIER |= SSI_SIER_TDMAE;
++ } else {
++ SSI1_SCR |= SSI_SCR_RE;
++ SSI1_SIER |= SSI_SIER_RDMAE;
++ }
++ SSI1_SCR |= SSI_SCR_SSIEN;
++
++ break;
++ case SNDRV_PCM_TRIGGER_RESUME:
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSI1_SCR |= SSI_SCR_TE;
++ else
++ SSI1_SCR |= SSI_SCR_RE;
++ break
++ case SNDRV_PCM_TRIGGER_STOP:
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSI1_SCR &= ~SSI_SCR_TE;
++ else
++ SSI1_SCR &= ~SSI_SCR_RE;
++ break;
++ default:
++ ret = -EINVAL;
++ }
++
++ return ret;
++}
++
++static void imx_ssi_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++
++}
++
++#ifdef CONFIG_PM
++static int imx_ssi_suspend(struct platform_device *dev,
++ struct snd_soc_cpu_dai *dai)
++{
++ if(!dai->active)
++ return 0;
++
++ if(rtd->cpu_dai->id == 0)
++ SSI1_SCR &= ~SSI_SCR_SSIEN;
++ else
++ SSI2_SCR &= ~SSI_SCR_SSIEN;
++
++ return 0;
++}
++
++static int imx_ssi_resume(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ if(!dai->active)
++ return 0;
++
++ if(rtd->cpu_dai->id == 0)
++ SSI1_SCR |= SSI_SCR_SSIEN;
++ else
++ SSI2_SCR |= SSI_SCR_SSIEN;
++
++ return 0;
++}
++
++#else
++#define imx_ssi_suspend NULL
++#define imx_ssi_resume NULL
++#endif
++
++static unsigned int imx_ssi_config_ac97_sysclk(struct snd_soc_cpu_dai *iface,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ return clk;
++}
++
++struct snd_soc_cpu_dai imx_ssi_ac97_dai = {
++ .name = "imx-ac97-1",
++ .id = 0,
++ .type = SND_SOC_DAI_AC97,
++ .suspend = imx_ssi_suspend,
++ .resume = imx_ssi_resume,
++ .config_sysclk = imx_ssi_ac97_config_sysclk,
++ .playback = {
++ .channels_min = 2,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 2,
++ .channels_max = 2,},
++ .ops = {
++ .probe = imx_ac97_probe,
++ .remove = imx_ac97_shutdown,
++ .trigger = imx_ssi1_trigger,
++ .prepare = imx_ssi_ac97_prepare,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(imx_ssi_ac97_modes),
++ .mode = imx_ssi_ac97_modes,},
++},
++{
++ .name = "imx-ac97-2",
++ .id = 1,
++ .type = SND_SOC_DAI_AC97,
++ .suspend = imx_ssi_suspend,
++ .resume = imx_ssi_resume,
++ .config_sysclk = imx_ssi_ac97_config_sysclk,
++ .playback = {
++ .channels_min = 2,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 2,
++ .channels_max = 2,},
++ .ops = {
++ .probe = imx_ac97_probe,
++ .remove = imx_ac97_shutdown,
++ .trigger = imx_ssi1_trigger,
++ .prepare = imx_ssi_ac97_prepare,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(imx_ssi_ac97_modes),
++ .mode = imx_ssi_ac97_modes,},
++};
++
++EXPORT_SYMBOL_GPL(imx_ssi_ac97_dai);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("i.MX ASoC AC97 driver");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/imx/imx-i2s.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/imx/imx-i2s.c
+@@ -0,0 +1,473 @@
++/*
++ * imx-ssi.c -- SSI driver for Freescale IMX
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * Based on mxc-alsa-mc13783 (C) 2006 Freescale.
++ *
++ * 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
++ * 29th Aug 2006 Initial version.
++ *
++ */
++
++#define IMX_SSI_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J |\
++ SND_SOC_DAIFMT_RIGHT_J | SND_SOC_DAIFMT_DSP__A |\
++ SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_CBS_CFS |\
++ SND_SOC_DAIFMT_CBM_CFS | SND_SOC_DAIFMT_CBS_CFM |\
++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF)
++
++#define IMX_SSI_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define IMX_SSI_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 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | \
++ SNDRV_PCM_RATE_96000)
++
++#define IMX_SSI_BITS \
++ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
++ SNDRV_PCM_FMTBIT_S24_LE)
++
++static struct snd_soc_dai_mode imx_ssi_pcm_modes[] = {
++
++ /* frame master and clock slave mode */
++ {
++ .fmt = IMX_SSI_DAIFMT | SND_SOC_DAIFMT_CBM_CFS,
++ .tdm = SND_SOC_DAITDM_LRDW(0,0),
++ .pcmfmt = IMX_SSI_BITS,
++ .pcmrate = IMX_SSI_RATES,
++ .pcmdir = IMX_SSI_DIR,
++ .flags = SND_SOC_DAI_BFS_RCW,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSBW(1) | SND_SOC_FSBW(2),
++ },
++};
++
++static imx_pcm_dma_params_t imx_ssi1_pcm_stereo_out = {
++ .name = "SSI1 PCM Stereo out",
++ .params = {
++ .bd_number = 1,
++ .transfer_type = emi_2_per,
++ .watermark_level = SDMA_TXFIFO_WATERMARK,
++ .word_size = TRANSFER_16BIT, // maybe add this in setup func
++ .per_address = SSI1_STX0,
++ .event_id = DMA_REQ_SSI1_TX1,
++ .peripheral_type = SSI,
++ },
++};
++
++static imx_pcm_dma_params_t imx_ssi1_pcm_stereo_in = {
++ .name = "SSI1 PCM Stereo in",
++ .params = {
++ .bd_number = 1,
++ .transfer_type = per_2_emi,
++ .watermark_level = SDMA_RXFIFO_WATERMARK,
++ .word_size = TRANSFER_16BIT, // maybe add this in setup func
++ .per_address = SSI1_SRX0,
++ .event_id = DMA_REQ_SSI1_RX1,
++ .peripheral_type = SSI,
++ },
++};
++
++static imx_pcm_dma_params_t imx_ssi2_pcm_stereo_out = {
++ .name = "SSI2 PCM Stereo out",
++ .params = {
++ .bd_number = 1,
++ .transfer_type = per_2_emi,
++ .watermark_level = SDMA_TXFIFO_WATERMARK,
++ .word_size = TRANSFER_16BIT, // maybe add this in setup func
++ .per_address = SSI2_STX0,
++ .event_id = DMA_REQ_SSI2_TX1,
++ .peripheral_type = SSI,
++ },
++};
++
++static imx_pcm_dma_params_t imx_ssi2_pcm_stereo_in = {
++ .name = "SSI2 PCM Stereo in",
++ .params = {
++ .bd_number = 1,
++ .transfer_type = per_2_emi,
++ .watermark_level = SDMA_RXFIFO_WATERMARK,
++ .word_size = TRANSFER_16BIT, // maybe add this in setup func
++ .per_address = SSI2_SRX0,
++ .event_id = DMA_REQ_SSI2_RX1,
++ .peripheral_type = SSI,
++ },
++};
++
++
++static int imx_ssi_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ if (!rtd->cpu_dai->active) {
++
++ }
++
++ return 0;
++}
++
++static int imx_ssi1_hw_tx_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 bfs, div;
++
++ bfs = SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs);
++
++ SSI1_STCR = 0;
++ SSI1_STCCR = 0;
++
++ /* DAI mode */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ SSI1_STCR |= SSI_STCR_TSCKP | SSI_STCR_TFSI |
++ SSI_STCR_TEFS | SSI_STCR_TXBIT0;
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ SSI1_STCR |= SSI_STCR_TSCKP | SSI_STCR_TFSI | SSI_STCR_TXBIT0;
++ break;
++ case SND_SOC_DAIFMT_DSP_B:
++ SSI1_STCR |= SSI_STCR_TEFS; // data 1 bit after sync
++ case SND_SOC_DAIFMT_DSP_A:
++ SSI1_STCR |= SSI_STCR_TFSL; // frame is 1 bclk long
++
++ /* DAI clock inversion */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_IB_IF:
++ SSI1_STCR |= SSI_STCR_TFSI | SSI_STCR_TSCKP;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ SSI1_STCR |= SSI_STCR_TSCKP;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ SSI1_STCR |= SSI_STCR_TFSI;
++ break;
++ }
++ break;
++ }
++
++ /* DAI data (word) size */
++ switch(rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ SSI1_STCCR |= SSI_STCCR_WL(16);
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ SSI1_STCCR |= SSI_STCCR_WL(20);
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ SSI1_STCCR |= SSI_STCCR_WL(24);
++ break;
++ }
++
++ /* DAI clock master masks */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK){
++ case SND_SOC_DAIFMT_CBM_CFM:
++ SSI1_STCR |= SSI_STCR_TFDIR | SSI_STCR_TXDIR;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFM:
++ SSI1_STCR |= SSI_STCR_TFDIR;
++ break;
++ case SND_SOC_DAIFMT_CBM_CFS:
++ SSI1_STCR |= SSI_STCR_TXDIR;
++ break;
++ }
++
++ /* DAI BCLK ratio to SYSCLK / MCLK */
++ /* prescaler modulus - todo */
++ switch (bfs) {
++ case 2:
++ break;
++ case 4:
++ break;
++ case 8:
++ break;
++ case 16:
++ break;
++ }
++
++ /* TDM - todo, only fifo 0 atm */
++ SSI1_STCR |= SSI_STCR_TFEN0;
++ SSI1_STCCR |= SSI_STCCR_DC(params_channels(params));
++
++ return 0;
++}
++
++static int imx_ssi1_hw_rx_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ u16 bfs, div;
++
++ bfs = SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs);
++
++ SSI1_SRCR = 0;
++ SSI1_SRCCR = 0;
++
++ /* DAI mode */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ SSI1_SRCR |= SSI_SRCR_RSCKP | SSI_SRCR_RFSI |
++ SSI_STCR_REFS | SSI_STCR_RXBIT0;
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ SSI1_SRCR |= SSI_SRCR_RSCKP | SSI_SRCR_RFSI | SSI_SRCR_RXBIT0;
++ break;
++ case SND_SOC_DAIFMT_DSP_B:
++ SSI1_SRCR |= SSI_SRCR_REFS; // data 1 bit after sync
++ case SND_SOC_DAIFMT_DSP_A:
++ SSI1_SRCR |= SSI_SRCR_RFSL; // frame is 1 bclk long
++
++ /* DAI clock inversion */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_IB_IF:
++ SSI1_SRCR |= SSI_SRCR_TFSI | SSI_SRCR_TSCKP;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ SSI1_SRCR |= SSI_SRCR_RSCKP;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ SSI1_SRCR |= SSI_SRCR_RFSI;
++ break;
++ }
++ break;
++ }
++
++ /* DAI data (word) size */
++ switch(rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ SSI1_SRCCR |= SSI_SRCCR_WL(16);
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ SSI1_SRCCR |= SSI_SRCCR_WL(20);
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ SSI1_SRCCR |= SSI_SRCCR_WL(24);
++ break;
++ }
++
++ /* DAI clock master masks */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK){
++ case SND_SOC_DAIFMT_CBM_CFM:
++ SSI1_SRCR |= SSI_SRCR_RFDIR | SSI_SRCR_RXDIR;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFM:
++ SSI1_SRCR |= SSI_SRCR_RFDIR;
++ break;
++ case SND_SOC_DAIFMT_CBM_CFS:
++ SSI1_SRCR |= SSI_SRCR_RXDIR;
++ break;
++ }
++
++ /* DAI BCLK ratio to SYSCLK / MCLK */
++ /* prescaler modulus - todo */
++ switch (bfs) {
++ case 2:
++ break;
++ case 4:
++ break;
++ case 8:
++ break;
++ case 16:
++ break;
++ }
++
++ /* TDM - todo, only fifo 0 atm */
++ SSI1_SRCR |= SSI_SRCR_RFEN0;
++ SSI1_SRCCR |= SSI_SRCCR_DC(params_channels(params));
++
++ return 0;
++}
++
++static int imx_ssi1_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ /* clear register if not enabled */
++ if(!(SSI1_SCR & SSI_SCR_SSIEN))
++ SSI1_SCR = 0;
++
++ /* async */
++ if (rtd->cpu_dai->flags & SND_SOC_DAI_ASYNC)
++ SSI1_SCR |= SSI_SCR_SYN;
++
++ /* DAI mode */
++ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ case SND_SOC_DAIFMT_LEFT_J:
++ SSI1_SCR |= SSI_SCR_NET;
++ break;
++ }
++
++ /* TDM - to complete */
++
++ /* Tx/Rx config */
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
++ return imx_ssi1_hw_tx_params(substream, params);
++ } else {
++ return imx_ssi1_hw_rx_params(substream, params);
++ }
++}
++
++
++
++static int imx_ssi1_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ int ret = 0;
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
++ SSI1_SCR |= SSI_SCR_TE;
++ SSI1_SIER |= SSI_SIER_TDMAE;
++ } else {
++ SSI1_SCR |= SSI_SCR_RE;
++ SSI1_SIER |= SSI_SIER_RDMAE;
++ }
++ SSI1_SCR |= SSI_SCR_SSIEN;
++
++ break;
++ case SNDRV_PCM_TRIGGER_RESUME:
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSI1_SCR |= SSI_SCR_TE;
++ else
++ SSI1_SCR |= SSI_SCR_RE;
++ break
++ case SNDRV_PCM_TRIGGER_STOP:
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSI1_SCR &= ~SSI_SCR_TE;
++ else
++ SSI1_SCR &= ~SSI_SCR_RE;
++ break;
++ default:
++ ret = -EINVAL;
++ }
++
++ return ret;
++}
++
++static void imx_ssi_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++
++ /* shutdown SSI */
++ if (!rtd->cpu_dai->active) {
++ if(rtd->cpu_dai->id == 0)
++ SSI1_SCR &= ~SSI_SCR_SSIEN;
++ else
++ SSI2_SCR &= ~SSI_SCR_SSIEN;
++ }
++}
++
++#ifdef CONFIG_PM
++static int imx_ssi_suspend(struct platform_device *dev,
++ struct snd_soc_cpu_dai *dai)
++{
++ if(!dai->active)
++ return 0;
++
++ if(rtd->cpu_dai->id == 0)
++ SSI1_SCR &= ~SSI_SCR_SSIEN;
++ else
++ SSI2_SCR &= ~SSI_SCR_SSIEN;
++
++ return 0;
++}
++
++static int imx_ssi_resume(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ if(!dai->active)
++ return 0;
++
++ if(rtd->cpu_dai->id == 0)
++ SSI1_SCR |= SSI_SCR_SSIEN;
++ else
++ SSI2_SCR |= SSI_SCR_SSIEN;
++
++ return 0;
++}
++
++#else
++#define imx_ssi_suspend NULL
++#define imx_ssi_resume NULL
++#endif
++
++static unsigned int imx_ssi_config_pcm_sysclk(struct snd_soc_cpu_dai *iface,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ return clk;
++}
++
++struct snd_soc_cpu_dai imx_ssi_pcm_dai = {
++ .name = "imx-i2s-1",
++ .id = 0,
++ .type = SND_SOC_DAI_I2S,
++ .suspend = imx_ssi_suspend,
++ .resume = imx_ssi_resume,
++ .config_sysclk = imx_ssi_config_pcm_sysclk,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .ops = {
++ .startup = imx_ssi_startup,
++ .shutdown = imx_ssi_shutdown,
++ .trigger = imx_ssi1_trigger,
++ .hw_params = imx_ssi1_pcm_hw_params,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(imx_ssi_modes),
++ .mode = imx_ssi_modes,},
++},
++{
++ .name = "imx-i2s-2",
++ .id = 1,
++ .type = SND_SOC_DAI_I2S,
++ .suspend = imx_ssi_suspend,
++ .resume = imx_ssi_resume,
++ .config_sysclk = imx_ssi_config_pcm_sysclk,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 2,},
++ .ops = {
++ .startup = imx_ssi_startup,
++ .shutdown = imx_ssi_shutdown,
++ .trigger = imx_ssi1_trigger,
++ .hw_params = imx_ssi1_pcm_hw_params,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(imx_ssi_modes),
++ .mode = imx_ssi_modes,},
++};
++
++
++EXPORT_SYMBOL_GPL(imx_ssi_i2s_dai);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("i.MX ASoC I2S driver");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/include/linux/i2c-id.h
+===================================================================
+--- linux-2.6-pxa-new.orig/include/linux/i2c-id.h
++++ linux-2.6-pxa-new/include/linux/i2c-id.h
+@@ -116,6 +116,8 @@
+ #define I2C_DRIVERID_KS0127 86 /* Samsung ks0127 video decoder */
+ #define I2C_DRIVERID_TLV320AIC23B 87 /* TI TLV320AIC23B audio codec */
+ #define I2C_DRIVERID_ISL1208 88 /* Intersil ISL1208 RTC */
++#define I2C_DRIVERID_WM8731 89 /* Wolfson WM8731 audio codec */
++#define I2C_DRIVERID_WM8750 90 /* Wolfson WM8750 audio codec */
+
+ #define I2C_DRIVERID_I2CDEV 900
+ #define I2C_DRIVERID_ARP 902 /* SMBus ARP Client */
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8976.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8976.c
+@@ -0,0 +1,953 @@
++/*
++ * wm8976.c -- WM8976 ALSA Soc Audio driver
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/version.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/i2c.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++
++#include "wm8976.h"
++
++#define AUDIO_NAME "wm8976"
++#define WM8976_VERSION "0.2"
++
++/*
++ * Debug
++ */
++
++#define WM8976_DEBUG 0
++
++#ifdef WM8976_DEBUG
++#define dbg(format, arg...) \
++ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
++#else
++#define dbg(format, arg...) do {} while (0)
++#endif
++#define err(format, arg...) \
++ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
++#define info(format, arg...) \
++ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
++#define warn(format, arg...) \
++ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
++
++struct snd_soc_codec_device soc_codec_dev_wm8976;
++
++/*
++ * wm8976 register cache
++ * We can't read the WM8976 register space when we are
++ * using 2 wire for device control, so we cache them instead.
++ */
++static const u16 wm8976_reg[WM8976_CACHEREGNUM] = {
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0050, 0x0000, 0x0140, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x00ff,
++ 0x00ff, 0x0000, 0x0100, 0x00ff,
++ 0x00ff, 0x0000, 0x012c, 0x002c,
++ 0x002c, 0x002c, 0x002c, 0x0000,
++ 0x0032, 0x0000, 0x0000, 0x0000,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0038, 0x000b, 0x0032, 0x0000,
++ 0x0008, 0x000c, 0x0093, 0x00e9,
++ 0x0000, 0x0000, 0x0000, 0x0000,
++ 0x0033, 0x0010, 0x0010, 0x0100,
++ 0x0100, 0x0002, 0x0001, 0x0001,
++ 0x0039, 0x0039, 0x0039, 0x0039,
++ 0x0001, 0x0001,
++};
++
++#define WM8976_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
++ SND_SOC_DAIFMT_DSP_A | SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_NB_NF | \
++ SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_IB_IF)
++
++#define WM8976_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#define WM8976_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 | \
++ SNDRV_PCM_RATE_48000)
++
++#define WM8976_PCM_FORMATS \
++ (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
++ SNDRV_PCM_FORMAT_S24_3LE | SNDRV_PCM_FORMAT_S24_LE | \
++ SNDRV_PCM_FORMAT_S32_LE)
++
++#define WM8976_BCLK \
++ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | SND_SOC_FSBD(8) |\
++ SND_SOC_FSBD(16) | SND_SOC_FSBD(32))
++
++static struct snd_soc_dai_mode wm8976_modes[] = {
++ /* codec frame and clock master modes */
++ {
++ .fmt = WM8976_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = WM8976_PCM_FORMATS,
++ .pcmrate = WM8976_RATES,
++ .pcmdir = WM8976_DIR,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = WM8976_BCLK,
++ },
++
++ /* codec frame and clock slave modes */
++ {
++ .fmt = WM8976_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = WM8976_PCM_FORMATS,
++ .pcmrate = WM8976_RATES,
++ .pcmdir = WM8976_DIR,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++};
++
++/*
++ * read wm8976 register cache
++ */
++static inline unsigned int wm8976_read_reg_cache(struct snd_soc_codec *codec,
++ unsigned int reg)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg == WM8976_RESET)
++ return 0;
++ if (reg >= WM8976_CACHEREGNUM)
++ return -1;
++ return cache[reg];
++}
++
++/*
++ * write wm8976 register cache
++ */
++static inline void wm8976_write_reg_cache(struct snd_soc_codec *codec,
++ u16 reg, unsigned int value)
++{
++ u16 *cache = codec->reg_cache;
++ if (reg >= WM8976_CACHEREGNUM)
++ return;
++ cache[reg] = value;
++}
++
++/*
++ * write to the WM8976 register space
++ */
++static int wm8976_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int value)
++{
++ u8 data[2];
++
++ /* data is
++ * D15..D9 WM8976 register offset
++ * D8...D0 register data
++ */
++ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
++ data[1] = value & 0x00ff;
++
++ wm8976_write_reg_cache (codec, reg, value);
++ if (codec->hw_write(codec->control_data, data, 2) == 2)
++ return 0;
++ else
++ return -1;
++}
++
++#define wm8976_reset(c) wm8976_write(c, WM8976_RESET, 0)
++
++static const char *wm8976_companding[] = {"Off", "NC", "u-law", "A-law" };
++static const char *wm8976_deemp[] = {"None", "32kHz", "44.1kHz", "48kHz" };
++static const char *wm8976_eqmode[] = {"Capture", "Playback" };
++static const char *wm8976_bw[] = {"Narrow", "Wide" };
++static const char *wm8976_eq1[] = {"80Hz", "105Hz", "135Hz", "175Hz" };
++static const char *wm8976_eq2[] = {"230Hz", "300Hz", "385Hz", "500Hz" };
++static const char *wm8976_eq3[] = {"650Hz", "850Hz", "1.1kHz", "1.4kHz" };
++static const char *wm8976_eq4[] = {"1.8kHz", "2.4kHz", "3.2kHz", "4.1kHz" };
++static const char *wm8976_eq5[] = {"5.3kHz", "6.9kHz", "9kHz", "11.7kHz" };
++static const char *wm8976_alc[] =
++ {"ALC both on", "ALC left only", "ALC right only", "Limiter" };
++
++static const struct soc_enum wm8976_enum[] = {
++ SOC_ENUM_SINGLE(WM8976_COMP, 1, 4, wm8976_companding), /* adc */
++ SOC_ENUM_SINGLE(WM8976_COMP, 3, 4, wm8976_companding), /* dac */
++ SOC_ENUM_SINGLE(WM8976_DAC, 4, 4, wm8976_deemp),
++ SOC_ENUM_SINGLE(WM8976_EQ1, 8, 2, wm8976_eqmode),
++
++ SOC_ENUM_SINGLE(WM8976_EQ1, 5, 4, wm8976_eq1),
++ SOC_ENUM_SINGLE(WM8976_EQ2, 8, 2, wm8976_bw),
++ SOC_ENUM_SINGLE(WM8976_EQ2, 5, 4, wm8976_eq2),
++ SOC_ENUM_SINGLE(WM8976_EQ3, 8, 2, wm8976_bw),
++
++ SOC_ENUM_SINGLE(WM8976_EQ3, 5, 4, wm8976_eq3),
++ SOC_ENUM_SINGLE(WM8976_EQ4, 8, 2, wm8976_bw),
++ SOC_ENUM_SINGLE(WM8976_EQ4, 5, 4, wm8976_eq4),
++ SOC_ENUM_SINGLE(WM8976_EQ5, 8, 2, wm8976_bw),
++
++ SOC_ENUM_SINGLE(WM8976_EQ5, 5, 4, wm8976_eq5),
++ SOC_ENUM_SINGLE(WM8976_ALC3, 8, 2, wm8976_alc),
++};
++
++static const struct snd_kcontrol_new wm8976_snd_controls[] = {
++SOC_SINGLE("Digital Loopback Switch", WM8976_COMP, 0, 1, 0),
++
++SOC_ENUM("ADC Companding", wm8976_enum[0]),
++SOC_ENUM("DAC Companding", wm8976_enum[1]),
++
++SOC_SINGLE("Jack Detection Enable", WM8976_JACK1, 6, 1, 0),
++
++SOC_DOUBLE("DAC Inversion Switch", WM8976_DAC, 0, 1, 1, 0),
++
++SOC_DOUBLE_R("Headphone Playback Volume", WM8976_DACVOLL, WM8976_DACVOLR, 0, 127, 0),
++
++SOC_SINGLE("High Pass Filter Switch", WM8976_ADC, 8, 1, 0),
++SOC_SINGLE("High Pass Filter Switch", WM8976_ADC, 8, 1, 0),
++SOC_SINGLE("High Pass Cut Off", WM8976_ADC, 4, 7, 0),
++
++SOC_DOUBLE("ADC Inversion Switch", WM8976_ADC, 0, 1, 1, 0),
++
++SOC_SINGLE("Capture Volume", WM8976_ADCVOL, 0, 127, 0),
++
++SOC_ENUM("Equaliser Function", wm8976_enum[3]),
++SOC_ENUM("EQ1 Cut Off", wm8976_enum[4]),
++SOC_SINGLE("EQ1 Volume", WM8976_EQ1, 0, 31, 1),
++
++SOC_ENUM("Equaliser EQ2 Bandwith", wm8976_enum[5]),
++SOC_ENUM("EQ2 Cut Off", wm8976_enum[6]),
++SOC_SINGLE("EQ2 Volume", WM8976_EQ2, 0, 31, 1),
++
++SOC_ENUM("Equaliser EQ3 Bandwith", wm8976_enum[7]),
++SOC_ENUM("EQ3 Cut Off", wm8976_enum[8]),
++SOC_SINGLE("EQ3 Volume", WM8976_EQ3, 0, 31, 1),
++
++SOC_ENUM("Equaliser EQ4 Bandwith", wm8976_enum[9]),
++SOC_ENUM("EQ4 Cut Off", wm8976_enum[10]),
++SOC_SINGLE("EQ4 Volume", WM8976_EQ4, 0, 31, 1),
++
++SOC_ENUM("Equaliser EQ5 Bandwith", wm8976_enum[11]),
++SOC_ENUM("EQ5 Cut Off", wm8976_enum[12]),
++SOC_SINGLE("EQ5 Volume", WM8976_EQ5, 0, 31, 1),
++
++SOC_SINGLE("DAC Playback Limiter Switch", WM8976_DACLIM1, 8, 1, 0),
++SOC_SINGLE("DAC Playback Limiter Decay", WM8976_DACLIM1, 4, 15, 0),
++SOC_SINGLE("DAC Playback Limiter Attack", WM8976_DACLIM1, 0, 15, 0),
++
++SOC_SINGLE("DAC Playback Limiter Threshold", WM8976_DACLIM2, 4, 7, 0),
++SOC_SINGLE("DAC Playback Limiter Boost", WM8976_DACLIM2, 0, 15, 0),
++
++SOC_SINGLE("ALC Enable Switch", WM8976_ALC1, 8, 1, 0),
++SOC_SINGLE("ALC Capture Max Gain", WM8976_ALC1, 3, 7, 0),
++SOC_SINGLE("ALC Capture Min Gain", WM8976_ALC1, 0, 7, 0),
++
++SOC_SINGLE("ALC Capture ZC Switch", WM8976_ALC2, 8, 1, 0),
++SOC_SINGLE("ALC Capture Hold", WM8976_ALC2, 4, 7, 0),
++SOC_SINGLE("ALC Capture Target", WM8976_ALC2, 0, 15, 0),
++
++SOC_ENUM("ALC Capture Mode", wm8976_enum[13]),
++SOC_SINGLE("ALC Capture Decay", WM8976_ALC3, 4, 15, 0),
++SOC_SINGLE("ALC Capture Attack", WM8976_ALC3, 0, 15, 0),
++
++SOC_SINGLE("ALC Capture Noise Gate Switch", WM8976_NGATE, 3, 1, 0),
++SOC_SINGLE("ALC Capture Noise Gate Threshold", WM8976_NGATE, 0, 7, 0),
++
++SOC_SINGLE("Capture PGA ZC Switch", WM8976_INPPGA, 7, 1, 0),
++SOC_SINGLE("Capture PGA Volume", WM8976_INPPGA, 0, 63, 0),
++
++SOC_DOUBLE_R("Headphone Playback ZC Switch", WM8976_HPVOLL, WM8976_HPVOLR, 7, 1, 0),
++SOC_DOUBLE_R("Headphone Playback Switch", WM8976_HPVOLL, WM8976_HPVOLR, 6, 1, 1),
++SOC_DOUBLE_R("Headphone Playback Volume", WM8976_HPVOLL, WM8976_HPVOLR, 0, 63, 0),
++
++SOC_DOUBLE_R("Speaker Playback ZC Switch", WM8976_SPKVOLL, WM8976_SPKVOLR, 7, 1, 0),
++SOC_DOUBLE_R("Speaker Playback Switch", WM8976_SPKVOLL, WM8976_SPKVOLR, 6, 1, 1),
++SOC_DOUBLE_R("Speaker Playback Volume", WM8976_SPKVOLL, WM8976_SPKVOLR, 0, 63, 0),
++
++SOC_SINGLE("Capture Boost(+20dB)", WM8976_ADCBOOST, 8, 1, 0),
++};
++
++/* add non dapm controls */
++static int wm8976_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(wm8976_snd_controls); i++) {
++ err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&wm8976_snd_controls[i],codec, NULL));
++ if (err < 0)
++ return err;
++ }
++
++ return 0;
++}
++
++/* Left Output Mixer */
++static const snd_kcontrol_new_t wm8976_left_mixer_controls[] = {
++SOC_DAPM_SINGLE("Right PCM Playback Switch", WM8976_OUTPUT, 6, 1, 1),
++SOC_DAPM_SINGLE("Left PCM Playback Switch", WM8976_MIXL, 0, 1, 1),
++SOC_DAPM_SINGLE("Line Bypass Switch", WM8976_MIXL, 1, 1, 0),
++SOC_DAPM_SINGLE("Aux Playback Switch", WM8976_MIXL, 5, 1, 0),
++};
++
++/* Right Output Mixer */
++static const snd_kcontrol_new_t wm8976_right_mixer_controls[] = {
++SOC_DAPM_SINGLE("Left PCM Playback Switch", WM8976_OUTPUT, 5, 1, 1),
++SOC_DAPM_SINGLE("Right PCM Playback Switch", WM8976_MIXR, 0, 1, 1),
++SOC_DAPM_SINGLE("Line Bypass Switch", WM8976_MIXR, 1, 1, 0),
++SOC_DAPM_SINGLE("Aux Playback Switch", WM8976_MIXR, 5, 1, 0),
++};
++
++/* Left AUX Input boost vol */
++static const snd_kcontrol_new_t wm8976_laux_boost_controls =
++SOC_DAPM_SINGLE("Aux Volume", WM8976_ADCBOOST, 0, 3, 0);
++
++/* Left Input boost vol */
++static const snd_kcontrol_new_t wm8976_lmic_boost_controls =
++SOC_DAPM_SINGLE("Input Volume", WM8976_ADCBOOST, 4, 3, 0);
++
++/* Left Aux In to PGA */
++static const snd_kcontrol_new_t wm8976_laux_capture_boost_controls =
++SOC_DAPM_SINGLE("Capture Switch", WM8976_ADCBOOST, 8, 1, 0);
++
++/* Left Input P In to PGA */
++static const snd_kcontrol_new_t wm8976_lmicp_capture_boost_controls =
++SOC_DAPM_SINGLE("Input P Capture Boost Switch", WM8976_INPUT, 0, 1, 0);
++
++/* Left Input N In to PGA */
++static const snd_kcontrol_new_t wm8976_lmicn_capture_boost_controls =
++SOC_DAPM_SINGLE("Input N Capture Boost Switch", WM8976_INPUT, 1, 1, 0);
++
++// TODO Widgets
++static const struct snd_soc_dapm_widget wm8976_dapm_widgets[] = {
++#if 0
++//SND_SOC_DAPM_MUTE("Mono Mute", WM8976_MONOMIX, 6, 0),
++//SND_SOC_DAPM_MUTE("Speaker Mute", WM8976_SPKMIX, 6, 0),
++
++SND_SOC_DAPM_MIXER("Speaker Mixer", WM8976_POWER3, 2, 0,
++ &wm8976_speaker_mixer_controls[0],
++ ARRAY_SIZE(wm8976_speaker_mixer_controls)),
++SND_SOC_DAPM_MIXER("Mono Mixer", WM8976_POWER3, 3, 0,
++ &wm8976_mono_mixer_controls[0],
++ ARRAY_SIZE(wm8976_mono_mixer_controls)),
++SND_SOC_DAPM_DAC("DAC", "HiFi Playback", WM8976_POWER3, 0, 0),
++SND_SOC_DAPM_ADC("ADC", "HiFi Capture", WM8976_POWER3, 0, 0),
++SND_SOC_DAPM_PGA("Aux Input", WM8976_POWER1, 6, 0, NULL, 0),
++SND_SOC_DAPM_PGA("SpkN Out", WM8976_POWER3, 5, 0, NULL, 0),
++SND_SOC_DAPM_PGA("SpkP Out", WM8976_POWER3, 6, 0, NULL, 0),
++SND_SOC_DAPM_PGA("Mono Out", WM8976_POWER3, 7, 0, NULL, 0),
++SND_SOC_DAPM_PGA("Mic PGA", WM8976_POWER2, 2, 0, NULL, 0),
++
++SND_SOC_DAPM_PGA("Aux Boost", SND_SOC_NOPM, 0, 0,
++ &wm8976_aux_boost_controls, 1),
++SND_SOC_DAPM_PGA("Mic Boost", SND_SOC_NOPM, 0, 0,
++ &wm8976_mic_boost_controls, 1),
++SND_SOC_DAPM_SWITCH("Capture Boost", SND_SOC_NOPM, 0, 0,
++ &wm8976_capture_boost_controls),
++
++SND_SOC_DAPM_MIXER("Boost Mixer", WM8976_POWER2, 4, 0, NULL, 0),
++
++SND_SOC_DAPM_MICBIAS("Mic Bias", WM8976_POWER1, 4, 0),
++
++SND_SOC_DAPM_INPUT("MICN"),
++SND_SOC_DAPM_INPUT("MICP"),
++SND_SOC_DAPM_INPUT("AUX"),
++SND_SOC_DAPM_OUTPUT("MONOOUT"),
++SND_SOC_DAPM_OUTPUT("SPKOUTP"),
++SND_SOC_DAPM_OUTPUT("SPKOUTN"),
++#endif
++};
++
++static const char *audio_map[][3] = {
++ /* Mono output mixer */
++ {"Mono Mixer", "PCM Playback Switch", "DAC"},
++ {"Mono Mixer", "Aux Playback Switch", "Aux Input"},
++ {"Mono Mixer", "Line Bypass Switch", "Boost Mixer"},
++
++ /* Speaker output mixer */
++ {"Speaker Mixer", "PCM Playback Switch", "DAC"},
++ {"Speaker Mixer", "Aux Playback Switch", "Aux Input"},
++ {"Speaker Mixer", "Line Bypass Switch", "Boost Mixer"},
++
++ /* Outputs */
++ {"Mono Out", NULL, "Mono Mixer"},
++ {"MONOOUT", NULL, "Mono Out"},
++ {"SpkN Out", NULL, "Speaker Mixer"},
++ {"SpkP Out", NULL, "Speaker Mixer"},
++ {"SPKOUTN", NULL, "SpkN Out"},
++ {"SPKOUTP", NULL, "SpkP Out"},
++
++ /* Boost Mixer */
++ {"Boost Mixer", NULL, "ADC"},
++ {"Capture Boost Switch", "Aux Capture Boost Switch", "AUX"},
++ {"Aux Boost", "Aux Volume", "Boost Mixer"},
++ {"Capture Boost", "Capture Switch", "Boost Mixer"},
++ {"Mic Boost", "Mic Volume", "Boost Mixer"},
++
++ /* Inputs */
++ {"MICP", NULL, "Mic Boost"},
++ {"MICN", NULL, "Mic PGA"},
++ {"Mic PGA", NULL, "Capture Boost"},
++ {"AUX", NULL, "Aux Input"},
++
++ /* */
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int wm8976_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(wm8976_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &wm8976_dapm_widgets[i]);
++ }
++
++ /* set up audio path map */
++ 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]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++struct pll_ {
++ unsigned int in_hz, out_hz;
++ unsigned int pre:4; /* prescale - 1 */
++ unsigned int n:4;
++ unsigned int k;
++};
++
++struct pll_ pll[] = {
++ {12000000, 11289600, 0, 7, 0x86c220},
++ {12000000, 12288000, 0, 8, 0x3126e8},
++ {13000000, 11289600, 0, 6, 0xf28bd4},
++ {13000000, 12288000, 0, 7, 0x8fd525},
++ {12288000, 11289600, 0, 7, 0x59999a},
++ {11289600, 12288000, 0, 8, 0x80dee9},
++ /* TODO: liam - add more entries */
++};
++
++static int set_pll(struct snd_soc_codec *codec, unsigned int in,
++ unsigned int out)
++{
++ int i;
++ u16 reg;
++
++ if(out == 0) {
++ reg = wm8976_read_reg_cache(codec, WM8976_POWER1);
++ wm8976_write(codec, WM8976_POWER1, reg & 0x1df);
++ return 0;
++ }
++
++ for(i = 0; i < ARRAY_SIZE(pll); i++) {
++ if (in == pll[i].in_hz && out == pll[i].out_hz) {
++ wm8976_write(codec, WM8976_PLLN, (pll[i].pre << 4) | pll[i].n);
++ wm8976_write(codec, WM8976_PLLK1, pll[i].k >> 18);
++ wm8976_write(codec, WM8976_PLLK1, (pll[i].k >> 9) && 0x1ff);
++ wm8976_write(codec, WM8976_PLLK1, pll[i].k && 0x1ff);
++ reg = wm8976_read_reg_cache(codec, WM8976_POWER1);
++ wm8976_write(codec, WM8976_POWER1, reg | 0x020);
++ return 0;
++ }
++ }
++ return -EINVAL;
++}
++
++/* mclk dividers * 2 */
++static unsigned char mclk_div[] = {2, 3, 4, 6, 8, 12, 16, 24};
++
++/* we need 256FS to drive the DAC's and ADC's */
++static unsigned int wm8976_config_sysclk(struct snd_soc_codec_dai *dai,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ int i, j, best_clk = info->fs * info->rate;
++
++ /* can we run at this clk without the PLL ? */
++ for (i = 0; i < ARRAY_SIZE(mclk_div); i++) {
++ if ((best_clk >> 1) * mclk_div[i] == clk) {
++ dai->pll_in = 0;
++ dai->clk_div = mclk_div[i];
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++
++ /* now check for PLL support */
++ for (i = 0; i < ARRAY_SIZE(pll); i++) {
++ if (pll[i].in_hz == clk) {
++ for (j = 0; j < ARRAY_SIZE(mclk_div); j++) {
++ if (pll[i].out_hz == mclk_div[j] * (best_clk >> 1)) {
++ dai->pll_in = clk;
++ dai->pll_out = pll[i].out_hz;
++ dai->clk_div = mclk_div[j];
++ dai->mclk = best_clk;
++ return dai->mclk;
++ }
++ }
++ }
++ }
++
++ /* this clk is not supported */
++ return 0;
++}
++
++static int wm8976_pcm_prepare(snd_pcm_substream_t *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct snd_soc_codec_dai *dai = rtd->codec_dai;
++ u16 iface = 0, bfs, clk = 0, adn;
++ int fs = 48000 << 7, i;
++
++ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
++ switch (bfs) {
++ case 2:
++ clk |= 0x1 << 2;
++ break;
++ case 4:
++ clk |= 0x2 << 2;
++ break;
++ case 8:
++ clk |= 0x3 << 2;
++ break;
++ case 16:
++ clk |= 0x4 << 2;
++ break;
++ case 32:
++ clk |= 0x5 << 2;
++ break;
++ }
++
++ /* set master/slave audio interface */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ clk |= 0x0001;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ break;
++ }
++
++ /* interface format */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ iface |= 0x0010;
++ break;
++ case SND_SOC_DAIFMT_RIGHT_J:
++ break;
++ case SND_SOC_DAIFMT_LEFT_J:
++ iface |= 0x0008;
++ break;
++ case SND_SOC_DAIFMT_DSP_A:
++ iface |= 0x00018;
++ break;
++ }
++
++ /* bit size */
++ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
++ case SNDRV_PCM_FMTBIT_S16_LE:
++ break;
++ case SNDRV_PCM_FMTBIT_S20_3LE:
++ iface |= 0x0020;
++ break;
++ case SNDRV_PCM_FMTBIT_S24_LE:
++ iface |= 0x0040;
++ break;
++ case SNDRV_PCM_FMTBIT_S32_LE:
++ iface |= 0x0060;
++ break;
++ }
++
++ /* clock inversion */
++ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_IF:
++ iface |= 0x0180;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ iface |= 0x0100;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ iface |= 0x0080;
++ break;
++ }
++
++ /* filter coefficient */
++ adn = wm8976_read_reg_cache(codec, WM8976_ADD) & 0x1f1;
++ switch (rtd->codec_dai->dai_runtime.pcmrate) {
++ case SNDRV_PCM_RATE_8000:
++ adn |= 0x5 << 1;
++ fs = 8000 << 7;
++ break;
++ case SNDRV_PCM_RATE_11025:
++ adn |= 0x4 << 1;
++ fs = 11025 << 7;
++ break;
++ case SNDRV_PCM_RATE_16000:
++ adn |= 0x3 << 1;
++ fs = 16000 << 7;
++ break;
++ case SNDRV_PCM_RATE_22050:
++ adn |= 0x2 << 1;
++ fs = 22050 << 7;
++ break;
++ case SNDRV_PCM_RATE_32000:
++ adn |= 0x1 << 1;
++ fs = 32000 << 7;
++ break;
++ case SNDRV_PCM_RATE_44100:
++ fs = 44100 << 7;
++ break;
++ }
++
++ /* do we need to enable the PLL */
++ if(dai->pll_in)
++ set_pll(codec, dai->pll_in, dai->pll_out);
++
++ /* divide the clock to 256 fs */
++ for(i = 0; i < ARRAY_SIZE(mclk_div); i++) {
++ if (dai->clk_div == mclk_div[i]) {
++ clk |= i << 5;
++ clk &= 0xff;
++ goto set;
++ }
++ }
++
++set:
++ /* set iface */
++ wm8976_write(codec, WM8976_IFACE, iface);
++ wm8976_write(codec, WM8976_CLOCK, clk);
++
++ return 0;
++}
++
++static int wm8976_hw_free(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_device *socdev = rtd->socdev;
++ struct snd_soc_codec *codec = socdev->codec;
++ set_pll(codec, 0, 0);
++ return 0;
++}
++
++static int wm8976_mute(struct snd_soc_codec *codec,
++ struct snd_soc_codec_dai *dai, int mute)
++{
++ u16 mute_reg = wm8976_read_reg_cache(codec, WM8976_DAC) & 0xffbf;
++ if(mute)
++ wm8976_write(codec, WM8976_DAC, mute_reg | 0x40);
++ else
++ wm8976_write(codec, WM8976_DAC, mute_reg);
++
++ return 0;
++}
++
++/* TODO: liam need to make this lower power with dapm */
++static int wm8976_dapm_event(struct snd_soc_codec *codec, int event)
++{
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0: /* full On */
++ /* vref/mid, clk and osc on, dac unmute, active */
++ wm8976_write(codec, WM8976_POWER1, 0x1ff);
++ wm8976_write(codec, WM8976_POWER2, 0x1ff);
++ wm8976_write(codec, WM8976_POWER3, 0x1ff);
++ break;
++ case SNDRV_CTL_POWER_D1: /* partial On */
++ case SNDRV_CTL_POWER_D2: /* partial On */
++ break;
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ /* everything off except vref/vmid, dac mute, inactive */
++
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ /* everything off, dac mute, inactive */
++ wm8976_write(codec, WM8976_POWER1, 0x0);
++ wm8976_write(codec, WM8976_POWER2, 0x0);
++ wm8976_write(codec, WM8976_POWER3, 0x0);
++ break;
++ }
++ codec->dapm_state = event;
++ return 0;
++}
++
++struct snd_soc_codec_dai wm8976_dai = {
++ .name = "WM8976 HiFi",
++ .playback = {
++ .stream_name = "Playback",
++ .channels_min = 1,
++ .channels_max = 2,
++ },
++ .capture = {
++ .stream_name = "Capture",
++ .channels_min = 1,
++ .channels_max = 1,
++ },
++ .config_sysclk = wm8976_config_sysclk,
++ .digital_mute = wm8976_mute,
++ .ops = {
++ .prepare = wm8976_pcm_prepare,
++ .hw_free = wm8976_hw_free,
++ },
++ .caps = {
++ .num_modes = ARRAY_SIZE(wm8976_modes),
++ .mode = wm8976_modes,
++ },
++};
++EXPORT_SYMBOL_GPL(wm8976_dai);
++
++static int wm8976_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ wm8976_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int wm8976_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ int i;
++ u8 data[2];
++ u16 *cache = codec->reg_cache;
++
++ /* Sync reg_cache with the hardware */
++ for (i = 0; i < ARRAY_SIZE(wm8976_reg); i++) {
++ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
++ data[1] = cache[i] & 0x00ff;
++ codec->hw_write(codec->control_data, data, 2);
++ }
++ wm8976_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ wm8976_dapm_event(codec, codec->suspend_dapm_state);
++ return 0;
++}
++
++/*
++ * initialise the WM8976 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int wm8976_init(struct snd_soc_device* socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int ret = 0;
++
++ codec->name = "WM8976";
++ codec->owner = THIS_MODULE;
++ codec->read = wm8976_read_reg_cache;
++ codec->write = wm8976_write;
++ codec->dapm_event = wm8976_dapm_event;
++ codec->dai = &wm8976_dai;
++ codec->num_dai = 1;
++ codec->reg_cache_size = ARRAY_SIZE(wm8976_reg);
++ codec->reg_cache =
++ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8976_reg), GFP_KERNEL);
++ if (codec->reg_cache == NULL)
++ return -ENOMEM;
++ memcpy(codec->reg_cache, wm8976_reg,
++ sizeof(u16) * ARRAY_SIZE(wm8976_reg));
++ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8976_reg);
++
++ wm8976_reset(codec);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if(ret < 0) {
++ kfree(codec->reg_cache);
++ return ret;
++ }
++
++ /* power on device */
++ wm8976_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ wm8976_add_controls(codec);
++ wm8976_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if(ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++static struct snd_soc_device *wm8976_socdev;
++
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++
++/*
++ * WM8976 2 wire address is 0x1a
++ */
++#define I2C_DRIVERID_WM8976 0xfefe /* liam - need a proper id */
++
++static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
++
++/* Magic definition of all other variables and things */
++I2C_CLIENT_INSMOD;
++
++static struct i2c_driver wm8976_i2c_driver;
++static struct i2c_client client_template;
++
++/* If the i2c layer weren't so broken, we could pass this kind of data
++ around */
++
++static int wm8976_codec_probe(struct i2c_adapter *adap, int addr, int kind)
++{
++ struct snd_soc_device *socdev = wm8976_socdev;
++ struct wm8976_setup_data *setup = socdev->codec_data;
++ struct snd_soc_codec *codec = socdev->codec;
++ struct i2c_client *i2c;
++ int ret;
++
++ if (addr != setup->i2c_address)
++ return -ENODEV;
++
++ client_template.adapter = adap;
++ client_template.addr = addr;
++
++ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
++ if (i2c == NULL){
++ kfree(codec);
++ return -ENOMEM;
++ }
++ memcpy(i2c, &client_template, sizeof(struct i2c_client));
++
++ i2c_set_clientdata(i2c, codec);
++
++ codec->control_data = i2c;
++
++ ret = i2c_attach_client(i2c);
++ if(ret < 0) {
++ err("failed to attach codec at addr %x\n", addr);
++ goto err;
++ }
++
++ ret = wm8976_init(socdev);
++ if(ret < 0) {
++ err("failed to initialise WM8976\n");
++ goto err;
++ }
++ return ret;
++
++err:
++ kfree(codec);
++ kfree(i2c);
++ return ret;
++
++}
++
++static int wm8976_i2c_detach(struct i2c_client *client)
++{
++ struct snd_soc_codec *codec = i2c_get_clientdata(client);
++
++ i2c_detach_client(client);
++
++ kfree(codec->reg_cache);
++ kfree(client);
++
++ return 0;
++}
++
++static int wm8976_i2c_attach(struct i2c_adapter *adap)
++{
++ return i2c_probe(adap, &addr_data, wm8976_codec_probe);
++}
++
++/* corgi i2c codec control layer */
++static struct i2c_driver wm8976_i2c_driver = {
++ .driver = {
++ .name = "WM8976 I2C Codec",
++ .owner = THIS_MODULE,
++ },
++ .id = I2C_DRIVERID_WM8976,
++ .attach_adapter = wm8976_i2c_attach,
++ .detach_client = wm8976_i2c_detach,
++ .command = NULL,
++};
++
++static struct i2c_client client_template = {
++ .name = "WM8976",
++ .driver = &wm8976_i2c_driver,
++};
++#endif
++
++static int wm8976_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct wm8976_setup_data *setup;
++ struct snd_soc_codec *codec;
++ int ret = 0;
++
++ info("WM8976 Audio Codec %s", WM8976_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ wm8976_socdev = socdev;
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ if (setup->i2c_address) {
++ normal_i2c[0] = setup->i2c_address;
++ codec->hw_write = (hw_write_t)i2c_master_send;
++ ret = i2c_add_driver(&wm8976_i2c_driver);
++ if (ret != 0)
++ printk(KERN_ERR "can't add i2c driver");
++ }
++#else
++ /* Add other interfaces here */
++#endif
++ return ret;
++}
++
++/* power down chip */
++static int wm8976_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ if (codec->control_data)
++ wm8976_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
++ i2c_del_driver(&wm8976_i2c_driver);
++#endif
++ kfree(codec);
++
++ return 0;
++}
++
++struct snd_soc_codec_device soc_codec_dev_wm8976 = {
++ .probe = wm8976_probe,
++ .remove = wm8976_remove,
++ .suspend = wm8976_suspend,
++ .resume = wm8976_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_wm8976);
++
++MODULE_DESCRIPTION("ASoC WM8976 driver");
++MODULE_AUTHOR("Graeme Gregory");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/codecs/wm8976.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/codecs/wm8976.h
+@@ -0,0 +1,73 @@
++/*
++ * wm8976.h -- WM8976 Soc Audio driver
++ *
++ * 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.
++ */
++
++#ifndef _WM8976_H
++#define _WM8976_H
++
++/* WM8976 register space */
++
++#define WM8976_RESET 0x0
++#define WM8976_POWER1 0x1
++#define WM8976_POWER2 0x2
++#define WM8976_POWER3 0x3
++#define WM8976_IFACE 0x4
++#define WM8976_COMP 0x5
++#define WM8976_CLOCK 0x6
++#define WM8976_ADD 0x7
++#define WM8976_GPIO 0x8
++#define WM8976_JACK1 0x9
++#define WM8976_DAC 0xa
++#define WM8976_DACVOLL 0xb
++#define WM8976_DACVOLR 0xc
++#define WM8976_JACK2 0xd
++#define WM8976_ADC 0xe
++#define WM8976_ADCVOL 0xf
++#define WM8976_EQ1 0x12
++#define WM8976_EQ2 0x13
++#define WM8976_EQ3 0x14
++#define WM8976_EQ4 0x15
++#define WM8976_EQ5 0x16
++#define WM8976_DACLIM1 0x18
++#define WM8976_DACLIM2 0x19
++#define WM8976_NOTCH1 0x1b
++#define WM8976_NOTCH2 0x1c
++#define WM8976_NOTCH3 0x1d
++#define WM8976_NOTCH4 0x1e
++#define WM8976_ALC1 0x20
++#define WM8976_ALC2 0x21
++#define WM8976_ALC3 0x22
++#define WM8976_NGATE 0x23
++#define WM8976_PLLN 0x24
++#define WM8976_PLLK1 0x25
++#define WM8976_PLLK2 0x26
++#define WM8976_PLLK3 0x27
++#define WM8976_3D 0x29
++#define WM8976_BEEP 0x2b
++#define WM8976_INPUT 0x2c
++#define WM8976_INPPGA 0x2d
++#define WM8976_ADCBOOST 0x2f
++#define WM8976_OUTPUT 0x31
++#define WM8976_MIXL 0x32
++#define WM8976_MIXR 0x33
++#define WM8976_HPVOLL 0x34
++#define WM8976_HPVOLR 0x35
++#define WM8976_SPKVOLL 0x36
++#define WM8976_SPKVOLR 0x37
++#define WM8976_OUT3MIX 0x38
++#define WM8976_MONOMIX 0x39
++
++#define WM8976_CACHEREGNUM 58
++
++struct wm8976_setup_data {
++ unsigned short i2c_address;
++};
++
++extern struct snd_soc_codec_dai wm8976_dai;
++extern struct snd_soc_codec_device soc_codec_dev_wm8976;
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/imx/imx21-pcm.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/imx/imx21-pcm.c
+@@ -0,0 +1,454 @@
++/*
++ * linux/sound/arm/mxc-pcm.c -- ALSA SoC interface for the Freescale i.MX CPU's
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * Based on pxa2xx-pcm.c by Nicolas Pitre, (C) 2004 MontaVista Software, Inc.
++ * and on mxc-alsa-mc13783 (C) 2006 Freescale.
++ *
++ * 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.
++ *
++ * Revision history
++ * 29th Aug 2006 Initial version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/slab.h>
++#include <linux/dma-mapping.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <asm/dma.h>
++#include <asm/hardware.h>
++
++#include "imx-pcm.h"
++
++/* debug */
++#define IMX_DEBUG 0
++#if IMX_DEBUG
++#define dbg(format, arg...) printk(format, ## arg)
++#else
++#define dbg(format, arg...)
++#endif
++
++static const struct snd_pcm_hardware mxc_pcm_hardware = {
++ .info = (SNDRV_PCM_INFO_INTERLEAVED |
++ SNDRV_PCM_INFO_BLOCK_TRANSFER |
++ SNDRV_PCM_INFO_MMAP |
++ SNDRV_PCM_INFO_MMAP_VALID |
++ SNDRV_PCM_INFO_PAUSE |
++ SNDRV_PCM_INFO_RESUME),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE |
++ SNDRV_PCM_FMTBIT_S24_LE,
++ .buffer_bytes_max = 32 * 1024,
++ .period_bytes_min = 64,
++ .period_bytes_max = 8 * 1024,
++ .periods_min = 2,
++ .periods_max = 255,
++ .fifo_size = 0,
++};
++
++struct mxc_runtime_data {
++ int dma_ch;
++ struct mxc_pcm_dma_param *dma_params;
++};
++
++/*!
++ * This function stops the current dma transfert for playback
++ * and clears the dma pointers.
++ *
++ * @param substream pointer to the structure of the current stream.
++ *
++ */
++static void audio_stop_dma(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct mxc_runtime_data *prtd = runtime->private_data;
++ unsigned int dma_size = frames_to_bytes(runtime, runtime->period_size);
++ unsigned int offset dma_size * s->periods;
++ unsigned long flags;
++
++ spin_lock_irqsave(&prtd->dma_lock, flags);
++
++ dbg("MXC : audio_stop_dma active = 0\n");
++ prtd->active = 0;
++ prtd->period = 0;
++ prtd->periods = 0;
++
++ /* this stops the dma channel and clears the buffer ptrs */
++ mxc_dma_stop(prtd->dma_wchannel);
++ if(substream == SNDRV_PCM_STREAM_PLAYBACK)
++ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
++ DMA_TO_DEVICE);
++ else
++ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
++ DMA_FROM_DEVICE);
++
++ spin_unlock_irqrestore(&prtd->dma_lock, flags);
++}
++
++/*!
++ * This function is called whenever a new audio block needs to be
++ * transferred to mc13783. The function receives the address and the size
++ * of the new block and start a new DMA transfer.
++ *
++ * @param substream pointer to the structure of the current stream.
++ *
++ */
++static int dma_new_period(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct mxc_runtime_data *prtd = runtime->private_data;
++ unsigned int dma_size;
++ unsigned int offset;
++ int ret=0;
++ dma_request_t sdma_request;
++
++ if (prtd->active){
++ memset(&sdma_request, 0, sizeof(dma_request_t));
++ dma_size = frames_to_bytes(runtime, runtime->period_size);
++ dbg("s->period (%x) runtime->periods (%d)\n",
++ s->period,runtime->periods);
++ dbg("runtime->period_size (%d) dma_size (%d)\n",
++ (unsigned int)runtime->period_size,
++ runtime->dma_bytes);
++
++ offset = dma_size * prtd->period;
++ snd_assert(dma_size <= DMA_BUF_SIZE, );
++ if(substream == SNDRV_PCM_STREAM_PLAYBACK)
++ sdma_request.sourceAddr = (char*)(dma_map_single(NULL,
++ runtime->dma_area + offset, dma_size, DMA_TO_DEVICE));
++ else
++ sdma_request.destAddr = (char*)(dma_map_single(NULL,
++ runtime->dma_area + offset, dma_size, DMA_FROM_DEVICE));
++ sdma_request.count = dma_size;
++
++ dbg("MXC: Start DMA offset (%d) size (%d)\n", offset,
++ runtime->dma_bytes);
++
++ mxc_dma_set_config(prtd->dma_wchannel, &sdma_request, 0);
++ if((ret = mxc_dma_start(prtd->dma_wchannel)) < 0) {
++ dbg("audio_process_dma: cannot queue DMA buffer\
++ (%i)\n", ret);
++ return err;
++ }
++ prtd->tx_spin = 1; /* FGA little trick to retrieve DMA pos */
++ prtd->period++;
++ prtd->period %= runtime->periods;
++ }
++ return ret;
++}
++
++
++/*!
++ * This is a callback which will be called
++ * when a TX transfer finishes. The call occurs
++ * in interrupt context.
++ *
++ * @param dat pointer to the structure of the current stream.
++ *
++ */
++static void audio_dma_irq(void *data)
++{
++ struct snd_pcm_substream *substream;
++ struct snd_pcm_runtime *runtime;
++ struct mxc_runtime_data *prtd;
++ unsigned int dma_size;
++ unsigned int previous_period;
++ unsigned int offset;
++
++ substream = data;
++ runtime = substream->runtime;
++ prtd = runtime->private_data;
++ previous_period = prtd->periods;
++ dma_size = frames_to_bytes(runtime, runtime->period_size);
++ offset = dma_size * previous_period;
++
++ prtd->tx_spin = 0;
++ prtd->periods++;
++ prtd->periods %= runtime->periods;
++
++ /*
++ * Give back to the CPU the access to the non cached memory
++ */
++ if(substream == SNDRV_PCM_STREAM_PLAYBACK)
++ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
++ DMA_TO_DEVICE);
++ else
++ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
++ DMA_FROM_DEVICE);
++ /*
++ * If we are getting a callback for an active stream then we inform
++ * the PCM middle layer we've finished a period
++ */
++ if (prtd->active)
++ snd_pcm_period_elapsed(substream);
++
++ /*
++ * Trig next DMA transfer
++ */
++ dma_new_period(substream);
++}
++
++/*!
++ * This function configures the hardware to allow audio
++ * playback operations. It is called by ALSA framework.
++ *
++ * @param substream pointer to the structure of the current stream.
++ *
++ * @return 0 on success, -1 otherwise.
++ */
++static int
++snd_mxc_prepare(struct snd_pcm_substream *substream)
++{
++ struct mxc_runtime_data *prtd = runtime->private_data;
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ int ret = 0;
++ prtd->period = 0;
++ prtd->periods = 0;
++
++ dma_channel_params params;
++ int channel = 0; // passed in ?
++
++ if ((ret = mxc_request_dma(&channel, "ALSA TX SDMA") < 0)){
++ dbg("error requesting a write dma channel\n");
++ return ret;
++ }
++
++ /* configure DMA params */
++ memset(&params, 0, sizeof(dma_channel_params));
++ params.bd_number = 1;
++ params.arg = s;
++ params.callback = callback;
++ params.transfer_type = emi_2_per;
++ params.watermark_level = SDMA_TXFIFO_WATERMARK;
++ params.word_size = TRANSFER_16BIT;
++ //dbg(KERN_ERR "activating connection SSI1 - SDMA\n");
++ params.per_address = SSI1_BASE_ADDR;
++ params.event_id = DMA_REQ_SSI1_TX1;
++ params.peripheral_type = SSI;
++
++ /* set up chn with params */
++ mxc_dma_setup_channel(channel, &params);
++ s->dma_wchannel = channel;
++
++ return ret;
++}
++
++static int mxc_pcm_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ int ret;
++
++ if((ret=snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params))) < 0)
++ return ret;
++ runtime->dma_addr = virt_to_phys(runtime->dma_area);
++
++ return ret;
++}
++
++static int mxc_pcm_hw_free(struct snd_pcm_substream *substream)
++{
++ return snd_pcm_lib_free_pages(substream);
++}
++
++static int mxc_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ struct mxc_runtime_data *prtd = substream->runtime->private_data;
++ int ret = 0;
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ prtd->tx_spin = 0;
++ /* requested stream startup */
++ prtd->active = 1;
++ ret = dma_new_period(substream);
++ break;
++ case SNDRV_PCM_TRIGGER_STOP:
++ /* requested stream shutdown */
++ ret = audio_stop_dma(substream);
++ break;
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ prtd->active = 0;
++ prtd->periods = 0;
++ break;
++ case SNDRV_PCM_TRIGGER_RESUME:
++ prtd->active = 1;
++ prtd->tx_spin = 0;
++ ret = dma_new_period(substream);
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ prtd->active = 0;
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ prtd->active = 1;
++ if (prtd->old_offset) {
++ prtd->tx_spin = 0;
++ ret = dma_new_period(substream);
++ }
++ break;
++ default:
++ ret = -EINVAL;
++ break;
++ }
++
++ return ret;
++}
++
++static snd_pcm_uframes_t mxc_pcm_pointer(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct mxc_runtime_data *prtd = runtime->private_data;
++ unsigned int offset = 0;
++
++ /* tx_spin value is used here to check if a transfert is active */
++ if (prtd->tx_spin){
++ offset = (runtime->period_size * (prtd->periods)) +
++ (runtime->period_size >> 1);
++ if (offset >= runtime->buffer_size)
++ offset = runtime->period_size >> 1;
++ } else {
++ offset = (runtime->period_size * (s->periods));
++ if (offset >= runtime->buffer_size)
++ offset = 0;
++ }
++
++ return offset;
++}
++
++
++static int mxc_pcm_open(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct mxc_runtime_data *prtd;
++ int ret;
++
++ snd_soc_set_runtime_hwparams(substream, &mxc_pcm_hardware);
++
++ if ((err = snd_pcm_hw_constraint_integer(runtime,
++ SNDRV_PCM_HW_PARAM_PERIODS)) < 0)
++ return err;
++ if ((err = snd_pcm_hw_constraint_list(runtime, 0,
++ SNDRV_PCM_HW_PARAM_RATE, &hw_playback_rates)) < 0)
++ return err;
++ msleep(10); // liam - why
++
++ /* setup DMA controller for playback */
++ if((err = configure_write_channel(&mxc_mc13783->s[SNDRV_PCM_STREAM_PLAYBACK],
++ audio_dma_irq)) < 0 )
++ return err;
++
++ if((prtd = kzalloc(sizeof(struct mxc_runtime_data), GFP_KERNEL)) == NULL) {
++ ret = -ENOMEM;
++ goto out;
++ }
++
++ runtime->private_data = prtd;
++ return 0;
++
++ err1:
++ kfree(prtd);
++ out:
++ return ret;
++}
++
++static int mxc_pcm_close(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct mxc_runtime_data *prtd = runtime->private_data;
++
++// mxc_mc13783_t *chip;
++ audio_stream_t *s;
++ device_data_t* device;
++ int ssi;
++
++ //chip = snd_pcm_substream_chip(substream);
++ s = &chip->s[substream->pstr->stream];
++ device = &s->stream_device;
++ ssi = device->ssi;
++
++ //disable_stereodac();
++
++ ssi_transmit_enable(ssi, false);
++ ssi_interrupt_disable(ssi, ssi_tx_dma_interrupt_enable);
++ ssi_tx_fifo_enable(ssi, ssi_fifo_0, false);
++ ssi_enable(ssi, false);
++
++ chip->s[substream->pstr->stream].stream = NULL;
++
++ return 0;
++}
++
++static int
++mxc_pcm_mmap(struct snd_pcm_substream *substream, struct vm_area_struct *vma)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ return dma_mmap_writecombine(substream->pcm->card->dev, vma,
++ runtime->dma_area,
++ runtime->dma_addr,
++ runtime->dma_bytes);
++}
++
++struct snd_pcm_ops mxc_pcm_ops = {
++ .open = mxc_pcm_open,
++ .close = mxc_pcm_close,
++ .ioctl = snd_pcm_lib_ioctl,
++ .hw_params = mxc_pcm_hw_params,
++ .hw_free = mxc_pcm_hw_free,
++ .prepare = mxc_pcm_prepare,
++ .trigger = mxc_pcm_trigger,
++ .pointer = mxc_pcm_pointer,
++ .mmap = mxc_pcm_mmap,
++};
++
++static u64 mxc_pcm_dmamask = 0xffffffff;
++
++int mxc_pcm_new(struct snd_card *card, struct snd_soc_codec_dai *dai,
++ struct snd_pcm *pcm)
++{
++ int ret = 0;
++
++ if (!card->dev->dma_mask)
++ card->dev->dma_mask = &mxc_pcm_dmamask;
++ if (!card->dev->coherent_dma_mask)
++ card->dev->coherent_dma_mask = 0xffffffff;
++
++ if (dai->playback.channels_min) {
++ ret = mxc_pcm_preallocate_dma_buffer(pcm,
++ SNDRV_PCM_STREAM_PLAYBACK);
++ if (ret)
++ goto out;
++ }
++
++ if (dai->capture.channels_min) {
++ ret = mxc_pcm_preallocate_dma_buffer(pcm,
++ SNDRV_PCM_STREAM_CAPTURE);
++ if (ret)
++ goto out;
++ }
++ out:
++ return ret;
++}
++
++struct snd_soc_platform mxc_soc_platform = {
++ .name = "mxc-audio",
++ .pcm_ops = &mxc_pcm_ops,
++ .pcm_new = mxc_pcm_new,
++ .pcm_free = mxc_pcm_free_dma_buffers,
++};
++
++EXPORT_SYMBOL_GPL(mxc_soc_platform);
++
++MODULE_AUTHOR("Liam Girdwood");
++MODULE_DESCRIPTION("Freescale i.MX PCM DMA module");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/imx/imx21-pcm.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/imx/imx21-pcm.h
+@@ -0,0 +1,237 @@
++/*
++ * mxc-pcm.h :- ASoC platform header for Freescale i.MX
++ *
++ * 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.
++ */
++
++#ifndef _MXC_PCM_H
++#define _MXC_PCM_H
++
++struct {
++ char *name; /* stream identifier */
++ dma_channel_params dma_params;
++} mxc_pcm_dma_param;
++
++extern struct snd_soc_cpu_dai mxc_ssi_dai[3];
++
++/* platform data */
++extern struct snd_soc_platform mxc_soc_platform;
++extern struct snd_ac97_bus_ops mxc_ac97_ops;
++
++/* temp until imx-regs.h is up2date */
++#define SSI1_STX0 __REG(IMX_SSI1_BASE + 0x00)
++#define SSI1_STX0_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x00)
++#define SSI1_STX1 __REG(IMX_SSI1_BASE + 0x04)
++#define SSI1_STX1_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x04)
++#define SSI1_SRX0 __REG(IMX_SSI1_BASE + 0x08)
++#define SSI1_SRX0_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x08)
++#define SSI1_SRX1 __REG(IMX_SSI1_BASE + 0x0c)
++#define SSI1_SRX1_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x0c)
++#define SSI1_SCR __REG(IMX_SSI1_BASE + 0x10)
++#define SSI1_SISR __REG(IMX_SSI1_BASE + 0x14)
++#define SSI1_SIER __REG(IMX_SSI1_BASE + 0x18)
++#define SSI1_STCR __REG(IMX_SSI1_BASE + 0x1c)
++#define SSI1_SRCR __REG(IMX_SSI1_BASE + 0x20)
++#define SSI1_STCCR __REG(IMX_SSI1_BASE + 0x24)
++#define SSI1_SRCCR __REG(IMX_SSI1_BASE + 0x28)
++#define SSI1_SFCSR __REG(IMX_SSI1_BASE + 0x2c)
++#define SSI1_STR __REG(IMX_SSI1_BASE + 0x30)
++#define SSI1_SOR __REG(IMX_SSI1_BASE + 0x34)
++#define SSI1_SACNT __REG(IMX_SSI1_BASE + 0x38)
++#define SSI1_SACADD __REG(IMX_SSI1_BASE + 0x3c)
++#define SSI1_SACDAT __REG(IMX_SSI1_BASE + 0x40)
++#define SSI1_SATAG __REG(IMX_SSI1_BASE + 0x44)
++#define SSI1_STMSK __REG(IMX_SSI1_BASE + 0x48)
++#define SSI1_SRMSK __REG(IMX_SSI1_BASE + 0x4c)
++
++#define SSI2_STX0 __REG(IMX_SSI2_BASE + 0x00)
++#define SSI2_STX0_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x00)
++#define SSI2_STX1 __REG(IMX_SSI2_BASE + 0x04)
++#define SSI2_STX1_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x04)
++#define SSI2_SRX0 __REG(IMX_SSI2_BASE + 0x08)
++#define SSI2_SRX0_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x08)
++#define SSI2_SRX1 __REG(IMX_SSI2_BASE + 0x0c)
++#define SSI2_SRX1_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x0c)
++#define SSI2_SCR __REG(IMX_SSI2_BASE + 0x10)
++#define SSI2_SISR __REG(IMX_SSI2_BASE + 0x14)
++#define SSI2_SIER __REG(IMX_SSI2_BASE + 0x18)
++#define SSI2_STCR __REG(IMX_SSI2_BASE + 0x1c)
++#define SSI2_SRCR __REG(IMX_SSI2_BASE + 0x20)
++#define SSI2_STCCR __REG(IMX_SSI2_BASE + 0x24)
++#define SSI2_SRCCR __REG(IMX_SSI2_BASE + 0x28)
++#define SSI2_SFCSR __REG(IMX_SSI2_BASE + 0x2c)
++#define SSI2_STR __REG(IMX_SSI2_BASE + 0x30)
++#define SSI2_SOR __REG(IMX_SSI2_BASE + 0x34)
++#define SSI2_SACNT __REG(IMX_SSI2_BASE + 0x38)
++#define SSI2_SACADD __REG(IMX_SSI2_BASE + 0x3c)
++#define SSI2_SACDAT __REG(IMX_SSI2_BASE + 0x40)
++#define SSI2_SATAG __REG(IMX_SSI2_BASE + 0x44)
++#define SSI2_STMSK __REG(IMX_SSI2_BASE + 0x48)
++#define SSI2_SRMSK __REG(IMX_SSI2_BASE + 0x4c)
++
++#define SSI_SCR_CLK_IST (1 << 9)
++#define SSI_SCR_TCH_EN (1 << 8)
++#define SSI_SCR_SYS_CLK_EN (1 << 7)
++#define SSI_SCR_I2S_MODE_NORM (0 << 5)
++#define SSI_SCR_I2S_MODE_MSTR (1 << 5)
++#define SSI_SCR_I2S_MODE_SLAVE (2 << 5)
++#define SSI_SCR_SYN (1 << 4)
++#define SSI_SCR_NET (1 << 3)
++#define SSI_SCR_RE (1 << 2)
++#define SSI_SCR_TE (1 << 1)
++#define SSI_SCR_SSIEN (1 << 0)
++
++#define SSI_SISR_CMDAU (1 << 18)
++#define SSI_SISR_CMDDU (1 << 17)
++#define SSI_SISR_RXT (1 << 16)
++#define SSI_SISR_RDR1 (1 << 15)
++#define SSI_SISR_RDR0 (1 << 14)
++#define SSI_SISR_TDE1 (1 << 13)
++#define SSI_SISR_TDE0 (1 << 12)
++#define SSI_SISR_ROE1 (1 << 11)
++#define SSI_SISR_ROE0 (1 << 10)
++#define SSI_SISR_TUE1 (1 << 9)
++#define SSI_SISR_TUE0 (1 << 8)
++#define SSI_SISR_TFS (1 << 7)
++#define SSI_SISR_RFS (1 << 6)
++#define SSI_SISR_TLS (1 << 5)
++#define SSI_SISR_RLS (1 << 4)
++#define SSI_SISR_RFF1 (1 << 3)
++#define SSI_SISR_RFF0 (1 << 2)
++#define SSI_SISR_TFE1 (1 << 1)
++#define SSI_SISR_TFE0 (1 << 0)
++
++#define SSI_SIER_RDMAE (1 << 22)
++#define SSI_SIER_RIE (1 << 21)
++#define SSI_SIER_TDMAE (1 << 20)
++#define SSI_SIER_TIE (1 << 19)
++#define SSI_SIER_CMDAU_EN (1 << 18)
++#define SSI_SIER_CMDDU_EN (1 << 17)
++#define SSI_SIER_RXT_EN (1 << 16)
++#define SSI_SIER_RDR1_EN (1 << 15)
++#define SSI_SIER_RDR0_EN (1 << 14)
++#define SSI_SIER_TDE1_EN (1 << 13)
++#define SSI_SIER_TDE0_EN (1 << 12)
++#define SSI_SIER_ROE1_EN (1 << 11)
++#define SSI_SIER_ROE0_EN (1 << 10)
++#define SSI_SIER_TUE1_EN (1 << 9)
++#define SSI_SIER_TUE0_EN (1 << 8)
++#define SSI_SIER_TFS_EN (1 << 7)
++#define SSI_SIER_RFS_EN (1 << 6)
++#define SSI_SIER_TLS_EN (1 << 5)
++#define SSI_SIER_RLS_EN (1 << 4)
++#define SSI_SIER_RFF1_EN (1 << 3)
++#define SSI_SIER_RFF0_EN (1 << 2)
++#define SSI_SIER_TFE1_EN (1 << 1)
++#define SSI_SIER_TFE0_EN (1 << 0)
++
++#define SSI_STCR_TXBIT0 (1 << 9)
++#define SSI_STCR_TFEN1 (1 << 8)
++#define SSI_STCR_TFEN0 (1 << 7)
++#define SSI_STCR_TFDIR (1 << 6)
++#define SSI_STCR_TXDIR (1 << 5)
++#define SSI_STCR_TSHFD (1 << 4)
++#define SSI_STCR_TSCKP (1 << 3)
++#define SSI_STCR_TFSI (1 << 2)
++#define SSI_STCR_TFSL (1 << 1)
++#define SSI_STCR_TEFS (1 << 0)
++
++#define SSI_SRCR_RXBIT0 (1 << 9)
++#define SSI_SRCR_RFEN1 (1 << 8)
++#define SSI_SRCR_RFEN0 (1 << 7)
++#define SSI_SRCR_RFDIR (1 << 6)
++#define SSI_SRCR_RXDIR (1 << 5)
++#define SSI_SRCR_RSHFD (1 << 4)
++#define SSI_SRCR_RSCKP (1 << 3)
++#define SSI_SRCR_RFSI (1 << 2)
++#define SSI_SRCR_RFSL (1 << 1)
++#define SSI_SRCR_REFS (1 << 0)
++
++#define SSI_STCCR_DIV2 (1 << 18)
++#define SSI_STCCR_PSR (1 << 15)
++#define SSI_STCCR_WL(x) ((((x) - 2) >> 1) << 13)
++#define SSI_STCCR_DC(x) (((x) & 0x1f) << 8)
++#define SSI_STCCR_PM(x) (((x) & 0xff) << 0)
++
++#define SSI_SRCCR_DIV2 (1 << 18)
++#define SSI_SRCCR_PSR (1 << 15)
++#define SSI_SRCCR_WL(x) ((((x) - 2) >> 1) << 13)
++#define SSI_SRCCR_DC(x) (((x) & 0x1f) << 8)
++#define SSI_SRCCR_PM(x) (((x) & 0xff) << 0)
++
++
++#define SSI_SFCSR_RFCNT1(x) (((x) & 0xf) << 28)
++#define SSI_SFCSR_TFCNT1(x) (((x) & 0xf) << 24)
++#define SSI_SFCSR_RFWM1(x) (((x) & 0xf) << 20)
++#define SSI_SFCSR_TFWM1(x) (((x) & 0xf) << 16)
++#define SSI_SFCSR_RFCNT0(x) (((x) & 0xf) << 12)
++#define SSI_SFCSR_TFCNT0(x) (((x) & 0xf) << 8)
++#define SSI_SFCSR_RFWM0(x) (((x) & 0xf) << 4)
++#define SSI_SFCSR_TFWM0(x) (((x) & 0xf) << 0)
++
++#define SSI_STR_TEST (1 << 15)
++#define SSI_STR_RCK2TCK (1 << 14)
++#define SSI_STR_RFS2TFS (1 << 13)
++#define SSI_STR_RXSTATE(x) (((x) & 0xf) << 8)
++#define SSI_STR_TXD2RXD (1 << 7)
++#define SSI_STR_TCK2RCK (1 << 6)
++#define SSI_STR_TFS2RFS (1 << 5)
++#define SSI_STR_TXSTATE(x) (((x) & 0xf) << 0)
++
++#define SSI_SOR_CLKOFF (1 << 6)
++#define SSI_SOR_RX_CLR (1 << 5)
++#define SSI_SOR_TX_CLR (1 << 4)
++#define SSI_SOR_INIT (1 << 3)
++#define SSI_SOR_WAIT(x) (((x) & 0x3) << 1)
++#define SSI_SOR_SYNRST (1 << 0)
++
++#define SSI_SACNT_FRDIV(x) (((x) & 0x3f) << 5)
++#define SSI_SACNT_WR (x << 4)
++#define SSI_SACNT_RD (x << 3)
++#define SSI_SACNT_TIF (x << 2)
++#define SSI_SACNT_FV (x << 1)
++#define SSI_SACNT_A97EN (x << 0)
++
++
++/* AUDMUX registers */
++#define AUDMUX_HPCR1 __REG(IMX_AUDMUX_BASE + 0x00)
++#define AUDMUX_HPCR2 __REG(IMX_AUDMUX_BASE + 0x04)
++#define AUDMUX_HPCR3 __REG(IMX_AUDMUX_BASE + 0x08)
++#define AUDMUX_PPCR1 __REG(IMX_AUDMUX_BASE + 0x10)
++#define AUDMUX_PPCR2 __REG(IMX_AUDMUX_BASE + 0x14)
++#define AUDMUX_PPCR3 __REG(IMX_AUDMUX_BASE + 0x18)
++
++#define AUDMUX_HPCR_TFSDIR (1 << 31)
++#define AUDMUX_HPCR_TCLKDIR (1 << 30)
++#define AUDMUX_HPCR_TFCSEL_TX (0 << 26)
++#define AUDMUX_HPCR_TFCSEL_RX (8 << 26)
++#define AUDMUX_HPCR_TFCSEL(x) (((x) & 0x7) << 26)
++#define AUDMUX_HPCR_RFSDIR (1 << 25)
++#define AUDMUX_HPCR_RCLKDIR (1 << 24)
++#define AUDMUX_HPCR_RFCSEL_TX (0 << 20)
++#define AUDMUX_HPCR_RFCSEL_RX (8 << 20)
++#define AUDMUX_HPCR_RFCSEL(x) (((x) & 0x7) << 20)
++#define AUDMUX_HPCR_RXDSEL(x) (((x) & 0x7) << 13)
++#define AUDMUX_HPCR_SYN (1 << 12)
++#define AUDMUX_HPCR_TXRXEN (1 << 10)
++#define AUDMUX_HPCR_INMEN (1 << 8)
++#define AUDMUX_HPCR_INMMASK(x) (((x) & 0xff) << 0)
++
++#define AUDMUX_PPCR_TFSDIR (1 << 31)
++#define AUDMUX_PPCR_TCLKDIR (1 << 30)
++#define AUDMUX_PPCR_TFCSEL_TX (0 << 26)
++#define AUDMUX_PPCR_TFCSEL_RX (8 << 26)
++#define AUDMUX_PPCR_TFCSEL(x) (((x) & 0x7) << 26)
++#define AUDMUX_PPCR_RFSDIR (1 << 25)
++#define AUDMUX_PPCR_RCLKDIR (1 << 24)
++#define AUDMUX_PPCR_RFCSEL_TX (0 << 20)
++#define AUDMUX_PPCR_RFCSEL_RX (8 << 20)
++#define AUDMUX_PPCR_RFCSEL(x) (((x) & 0x7) << 20)
++#define AUDMUX_PPCR_RXDSEL(x) (((x) & 0x7) << 13)
++#define AUDMUX_PPCR_SYN (1 << 12)
++#define AUDMUX_PPCR_TXRXEN (1 << 10)
++
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/imx/imx31-pcm.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/imx/imx31-pcm.c
+@@ -0,0 +1,454 @@
++/*
++ * linux/sound/arm/mxc-pcm.c -- ALSA SoC interface for the Freescale i.MX CPU's
++ *
++ * Copyright 2006 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
++ *
++ * Based on pxa2xx-pcm.c by Nicolas Pitre, (C) 2004 MontaVista Software, Inc.
++ * and on mxc-alsa-mc13783 (C) 2006 Freescale.
++ *
++ * 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.
++ *
++ * Revision history
++ * 29th Aug 2006 Initial version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/slab.h>
++#include <linux/dma-mapping.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <asm/dma.h>
++#include <asm/hardware.h>
++
++#include "imx-pcm.h"
++
++/* debug */
++#define IMX_DEBUG 0
++#if IMX_DEBUG
++#define dbg(format, arg...) printk(format, ## arg)
++#else
++#define dbg(format, arg...)
++#endif
++
++static const struct snd_pcm_hardware mxc_pcm_hardware = {
++ .info = (SNDRV_PCM_INFO_INTERLEAVED |
++ SNDRV_PCM_INFO_BLOCK_TRANSFER |
++ SNDRV_PCM_INFO_MMAP |
++ SNDRV_PCM_INFO_MMAP_VALID |
++ SNDRV_PCM_INFO_PAUSE |
++ SNDRV_PCM_INFO_RESUME),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE |
++ SNDRV_PCM_FMTBIT_S24_LE,
++ .buffer_bytes_max = 32 * 1024,
++ .period_bytes_min = 64,
++ .period_bytes_max = 8 * 1024,
++ .periods_min = 2,
++ .periods_max = 255,
++ .fifo_size = 0,
++};
++
++struct mxc_runtime_data {
++ int dma_ch;
++ struct mxc_pcm_dma_param *dma_params;
++};
++
++/*!
++ * This function stops the current dma transfert for playback
++ * and clears the dma pointers.
++ *
++ * @param substream pointer to the structure of the current stream.
++ *
++ */
++static void audio_stop_dma(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct mxc_runtime_data *prtd = runtime->private_data;
++ unsigned int dma_size = frames_to_bytes(runtime, runtime->period_size);
++ unsigned int offset dma_size * s->periods;
++ unsigned long flags;
++
++ spin_lock_irqsave(&prtd->dma_lock, flags);
++
++ dbg("MXC : audio_stop_dma active = 0\n");
++ prtd->active = 0;
++ prtd->period = 0;
++ prtd->periods = 0;
++
++ /* this stops the dma channel and clears the buffer ptrs */
++ mxc_dma_stop(prtd->dma_wchannel);
++ if(substream == SNDRV_PCM_STREAM_PLAYBACK)
++ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
++ DMA_TO_DEVICE);
++ else
++ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
++ DMA_FROM_DEVICE);
++
++ spin_unlock_irqrestore(&prtd->dma_lock, flags);
++}
++
++/*!
++ * This function is called whenever a new audio block needs to be
++ * transferred to mc13783. The function receives the address and the size
++ * of the new block and start a new DMA transfer.
++ *
++ * @param substream pointer to the structure of the current stream.
++ *
++ */
++static int dma_new_period(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct mxc_runtime_data *prtd = runtime->private_data;
++ unsigned int dma_size;
++ unsigned int offset;
++ int ret=0;
++ dma_request_t sdma_request;
++
++ if (prtd->active){
++ memset(&sdma_request, 0, sizeof(dma_request_t));
++ dma_size = frames_to_bytes(runtime, runtime->period_size);
++ dbg("s->period (%x) runtime->periods (%d)\n",
++ s->period,runtime->periods);
++ dbg("runtime->period_size (%d) dma_size (%d)\n",
++ (unsigned int)runtime->period_size,
++ runtime->dma_bytes);
++
++ offset = dma_size * prtd->period;
++ snd_assert(dma_size <= DMA_BUF_SIZE, );
++ if(substream == SNDRV_PCM_STREAM_PLAYBACK)
++ sdma_request.sourceAddr = (char*)(dma_map_single(NULL,
++ runtime->dma_area + offset, dma_size, DMA_TO_DEVICE));
++ else
++ sdma_request.destAddr = (char*)(dma_map_single(NULL,
++ runtime->dma_area + offset, dma_size, DMA_FROM_DEVICE));
++ sdma_request.count = dma_size;
++
++ dbg("MXC: Start DMA offset (%d) size (%d)\n", offset,
++ runtime->dma_bytes);
++
++ mxc_dma_set_config(prtd->dma_wchannel, &sdma_request, 0);
++ if((ret = mxc_dma_start(prtd->dma_wchannel)) < 0) {
++ dbg("audio_process_dma: cannot queue DMA buffer\
++ (%i)\n", ret);
++ return err;
++ }
++ prtd->tx_spin = 1; /* FGA little trick to retrieve DMA pos */
++ prtd->period++;
++ prtd->period %= runtime->periods;
++ }
++ return ret;
++}
++
++
++/*!
++ * This is a callback which will be called
++ * when a TX transfer finishes. The call occurs
++ * in interrupt context.
++ *
++ * @param dat pointer to the structure of the current stream.
++ *
++ */
++static void audio_dma_irq(void *data)
++{
++ struct snd_pcm_substream *substream;
++ struct snd_pcm_runtime *runtime;
++ struct mxc_runtime_data *prtd;
++ unsigned int dma_size;
++ unsigned int previous_period;
++ unsigned int offset;
++
++ substream = data;
++ runtime = substream->runtime;
++ prtd = runtime->private_data;
++ previous_period = prtd->periods;
++ dma_size = frames_to_bytes(runtime, runtime->period_size);
++ offset = dma_size * previous_period;
++
++ prtd->tx_spin = 0;
++ prtd->periods++;
++ prtd->periods %= runtime->periods;
++
++ /*
++ * Give back to the CPU the access to the non cached memory
++ */
++ if(substream == SNDRV_PCM_STREAM_PLAYBACK)
++ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
++ DMA_TO_DEVICE);
++ else
++ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
++ DMA_FROM_DEVICE);
++ /*
++ * If we are getting a callback for an active stream then we inform
++ * the PCM middle layer we've finished a period
++ */
++ if (prtd->active)
++ snd_pcm_period_elapsed(substream);
++
++ /*
++ * Trig next DMA transfer
++ */
++ dma_new_period(substream);
++}
++
++/*!
++ * This function configures the hardware to allow audio
++ * playback operations. It is called by ALSA framework.
++ *
++ * @param substream pointer to the structure of the current stream.
++ *
++ * @return 0 on success, -1 otherwise.
++ */
++static int
++snd_mxc_prepare(struct snd_pcm_substream *substream)
++{
++ struct mxc_runtime_data *prtd = runtime->private_data;
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ int ret = 0;
++ prtd->period = 0;
++ prtd->periods = 0;
++
++ dma_channel_params params;
++ int channel = 0; // passed in ?
++
++ if ((ret = mxc_request_dma(&channel, "ALSA TX SDMA") < 0)){
++ dbg("error requesting a write dma channel\n");
++ return ret;
++ }
++
++ /* configure DMA params */
++ memset(&params, 0, sizeof(dma_channel_params));
++ params.bd_number = 1;
++ params.arg = s;
++ params.callback = callback;
++ params.transfer_type = emi_2_per;
++ params.watermark_level = SDMA_TXFIFO_WATERMARK;
++ params.word_size = TRANSFER_16BIT;
++ //dbg(KERN_ERR "activating connection SSI1 - SDMA\n");
++ params.per_address = SSI1_BASE_ADDR;
++ params.event_id = DMA_REQ_SSI1_TX1;
++ params.peripheral_type = SSI;
++
++ /* set up chn with params */
++ mxc_dma_setup_channel(channel, &params);
++ s->dma_wchannel = channel;
++
++ return ret;
++}
++
++static int mxc_pcm_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ int ret;
++
++ if((ret=snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params))) < 0)
++ return ret;
++ runtime->dma_addr = virt_to_phys(runtime->dma_area);
++
++ return ret;
++}
++
++static int mxc_pcm_hw_free(struct snd_pcm_substream *substream)
++{
++ return snd_pcm_lib_free_pages(substream);
++}
++
++static int mxc_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ struct mxc_runtime_data *prtd = substream->runtime->private_data;
++ int ret = 0;
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ prtd->tx_spin = 0;
++ /* requested stream startup */
++ prtd->active = 1;
++ ret = dma_new_period(substream);
++ break;
++ case SNDRV_PCM_TRIGGER_STOP:
++ /* requested stream shutdown */
++ ret = audio_stop_dma(substream);
++ break;
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ prtd->active = 0;
++ prtd->periods = 0;
++ break;
++ case SNDRV_PCM_TRIGGER_RESUME:
++ prtd->active = 1;
++ prtd->tx_spin = 0;
++ ret = dma_new_period(substream);
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ prtd->active = 0;
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ prtd->active = 1;
++ if (prtd->old_offset) {
++ prtd->tx_spin = 0;
++ ret = dma_new_period(substream);
++ }
++ break;
++ default:
++ ret = -EINVAL;
++ break;
++ }
++
++ return ret;
++}
++
++static snd_pcm_uframes_t mxc_pcm_pointer(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct mxc_runtime_data *prtd = runtime->private_data;
++ unsigned int offset = 0;
++
++ /* tx_spin value is used here to check if a transfert is active */
++ if (prtd->tx_spin){
++ offset = (runtime->period_size * (prtd->periods)) +
++ (runtime->period_size >> 1);
++ if (offset >= runtime->buffer_size)
++ offset = runtime->period_size >> 1;
++ } else {
++ offset = (runtime->period_size * (s->periods));
++ if (offset >= runtime->buffer_size)
++ offset = 0;
++ }
++
++ return offset;
++}
++
++
++static int mxc_pcm_open(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct mxc_runtime_data *prtd;
++ int ret;
++
++ snd_soc_set_runtime_hwparams(substream, &mxc_pcm_hardware);
++
++ if ((err = snd_pcm_hw_constraint_integer(runtime,
++ SNDRV_PCM_HW_PARAM_PERIODS)) < 0)
++ return err;
++ if ((err = snd_pcm_hw_constraint_list(runtime, 0,
++ SNDRV_PCM_HW_PARAM_RATE, &hw_playback_rates)) < 0)
++ return err;
++ msleep(10); // liam - why
++
++ /* setup DMA controller for playback */
++ if((err = configure_write_channel(&mxc_mc13783->s[SNDRV_PCM_STREAM_PLAYBACK],
++ audio_dma_irq)) < 0 )
++ return err;
++
++ if((prtd = kzalloc(sizeof(struct mxc_runtime_data), GFP_KERNEL)) == NULL) {
++ ret = -ENOMEM;
++ goto out;
++ }
++
++ runtime->private_data = prtd;
++ return 0;
++
++ err1:
++ kfree(prtd);
++ out:
++ return ret;
++}
++
++static int mxc_pcm_close(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct mxc_runtime_data *prtd = runtime->private_data;
++
++// mxc_mc13783_t *chip;
++ audio_stream_t *s;
++ device_data_t* device;
++ int ssi;
++
++ //chip = snd_pcm_substream_chip(substream);
++ s = &chip->s[substream->pstr->stream];
++ device = &s->stream_device;
++ ssi = device->ssi;
++
++ //disable_stereodac();
++
++ ssi_transmit_enable(ssi, false);
++ ssi_interrupt_disable(ssi, ssi_tx_dma_interrupt_enable);
++ ssi_tx_fifo_enable(ssi, ssi_fifo_0, false);
++ ssi_enable(ssi, false);
++
++ chip->s[substream->pstr->stream].stream = NULL;
++
++ return 0;
++}
++
++static int
++mxc_pcm_mmap(struct snd_pcm_substream *substream, struct vm_area_struct *vma)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ return dma_mmap_writecombine(substream->pcm->card->dev, vma,
++ runtime->dma_area,
++ runtime->dma_addr,
++ runtime->dma_bytes);
++}
++
++struct snd_pcm_ops mxc_pcm_ops = {
++ .open = mxc_pcm_open,
++ .close = mxc_pcm_close,
++ .ioctl = snd_pcm_lib_ioctl,
++ .hw_params = mxc_pcm_hw_params,
++ .hw_free = mxc_pcm_hw_free,
++ .prepare = mxc_pcm_prepare,
++ .trigger = mxc_pcm_trigger,
++ .pointer = mxc_pcm_pointer,
++ .mmap = mxc_pcm_mmap,
++};
++
++static u64 mxc_pcm_dmamask = 0xffffffff;
++
++int mxc_pcm_new(struct snd_card *card, struct snd_soc_codec_dai *dai,
++ struct snd_pcm *pcm)
++{
++ int ret = 0;
++
++ if (!card->dev->dma_mask)
++ card->dev->dma_mask = &mxc_pcm_dmamask;
++ if (!card->dev->coherent_dma_mask)
++ card->dev->coherent_dma_mask = 0xffffffff;
++
++ if (dai->playback.channels_min) {
++ ret = mxc_pcm_preallocate_dma_buffer(pcm,
++ SNDRV_PCM_STREAM_PLAYBACK);
++ if (ret)
++ goto out;
++ }
++
++ if (dai->capture.channels_min) {
++ ret = mxc_pcm_preallocate_dma_buffer(pcm,
++ SNDRV_PCM_STREAM_CAPTURE);
++ if (ret)
++ goto out;
++ }
++ out:
++ return ret;
++}
++
++struct snd_soc_platform mxc_soc_platform = {
++ .name = "mxc-audio",
++ .pcm_ops = &mxc_pcm_ops,
++ .pcm_new = mxc_pcm_new,
++ .pcm_free = mxc_pcm_free_dma_buffers,
++};
++
++EXPORT_SYMBOL_GPL(mxc_soc_platform);
++
++MODULE_AUTHOR("Liam Girdwood");
++MODULE_DESCRIPTION("Freescale i.MX PCM DMA module");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/imx/imx31-pcm.h
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/imx/imx31-pcm.h
+@@ -0,0 +1,237 @@
++/*
++ * mxc-pcm.h :- ASoC platform header for Freescale i.MX
++ *
++ * 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.
++ */
++
++#ifndef _MXC_PCM_H
++#define _MXC_PCM_H
++
++struct {
++ char *name; /* stream identifier */
++ dma_channel_params dma_params;
++} mxc_pcm_dma_param;
++
++extern struct snd_soc_cpu_dai mxc_ssi_dai[3];
++
++/* platform data */
++extern struct snd_soc_platform mxc_soc_platform;
++extern struct snd_ac97_bus_ops mxc_ac97_ops;
++
++/* temp until imx-regs.h is up2date */
++#define SSI1_STX0 __REG(IMX_SSI1_BASE + 0x00)
++#define SSI1_STX0_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x00)
++#define SSI1_STX1 __REG(IMX_SSI1_BASE + 0x04)
++#define SSI1_STX1_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x04)
++#define SSI1_SRX0 __REG(IMX_SSI1_BASE + 0x08)
++#define SSI1_SRX0_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x08)
++#define SSI1_SRX1 __REG(IMX_SSI1_BASE + 0x0c)
++#define SSI1_SRX1_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x0c)
++#define SSI1_SCR __REG(IMX_SSI1_BASE + 0x10)
++#define SSI1_SISR __REG(IMX_SSI1_BASE + 0x14)
++#define SSI1_SIER __REG(IMX_SSI1_BASE + 0x18)
++#define SSI1_STCR __REG(IMX_SSI1_BASE + 0x1c)
++#define SSI1_SRCR __REG(IMX_SSI1_BASE + 0x20)
++#define SSI1_STCCR __REG(IMX_SSI1_BASE + 0x24)
++#define SSI1_SRCCR __REG(IMX_SSI1_BASE + 0x28)
++#define SSI1_SFCSR __REG(IMX_SSI1_BASE + 0x2c)
++#define SSI1_STR __REG(IMX_SSI1_BASE + 0x30)
++#define SSI1_SOR __REG(IMX_SSI1_BASE + 0x34)
++#define SSI1_SACNT __REG(IMX_SSI1_BASE + 0x38)
++#define SSI1_SACADD __REG(IMX_SSI1_BASE + 0x3c)
++#define SSI1_SACDAT __REG(IMX_SSI1_BASE + 0x40)
++#define SSI1_SATAG __REG(IMX_SSI1_BASE + 0x44)
++#define SSI1_STMSK __REG(IMX_SSI1_BASE + 0x48)
++#define SSI1_SRMSK __REG(IMX_SSI1_BASE + 0x4c)
++
++#define SSI2_STX0 __REG(IMX_SSI2_BASE + 0x00)
++#define SSI2_STX0_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x00)
++#define SSI2_STX1 __REG(IMX_SSI2_BASE + 0x04)
++#define SSI2_STX1_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x04)
++#define SSI2_SRX0 __REG(IMX_SSI2_BASE + 0x08)
++#define SSI2_SRX0_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x08)
++#define SSI2_SRX1 __REG(IMX_SSI2_BASE + 0x0c)
++#define SSI2_SRX1_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x0c)
++#define SSI2_SCR __REG(IMX_SSI2_BASE + 0x10)
++#define SSI2_SISR __REG(IMX_SSI2_BASE + 0x14)
++#define SSI2_SIER __REG(IMX_SSI2_BASE + 0x18)
++#define SSI2_STCR __REG(IMX_SSI2_BASE + 0x1c)
++#define SSI2_SRCR __REG(IMX_SSI2_BASE + 0x20)
++#define SSI2_STCCR __REG(IMX_SSI2_BASE + 0x24)
++#define SSI2_SRCCR __REG(IMX_SSI2_BASE + 0x28)
++#define SSI2_SFCSR __REG(IMX_SSI2_BASE + 0x2c)
++#define SSI2_STR __REG(IMX_SSI2_BASE + 0x30)
++#define SSI2_SOR __REG(IMX_SSI2_BASE + 0x34)
++#define SSI2_SACNT __REG(IMX_SSI2_BASE + 0x38)
++#define SSI2_SACADD __REG(IMX_SSI2_BASE + 0x3c)
++#define SSI2_SACDAT __REG(IMX_SSI2_BASE + 0x40)
++#define SSI2_SATAG __REG(IMX_SSI2_BASE + 0x44)
++#define SSI2_STMSK __REG(IMX_SSI2_BASE + 0x48)
++#define SSI2_SRMSK __REG(IMX_SSI2_BASE + 0x4c)
++
++#define SSI_SCR_CLK_IST (1 << 9)
++#define SSI_SCR_TCH_EN (1 << 8)
++#define SSI_SCR_SYS_CLK_EN (1 << 7)
++#define SSI_SCR_I2S_MODE_NORM (0 << 5)
++#define SSI_SCR_I2S_MODE_MSTR (1 << 5)
++#define SSI_SCR_I2S_MODE_SLAVE (2 << 5)
++#define SSI_SCR_SYN (1 << 4)
++#define SSI_SCR_NET (1 << 3)
++#define SSI_SCR_RE (1 << 2)
++#define SSI_SCR_TE (1 << 1)
++#define SSI_SCR_SSIEN (1 << 0)
++
++#define SSI_SISR_CMDAU (1 << 18)
++#define SSI_SISR_CMDDU (1 << 17)
++#define SSI_SISR_RXT (1 << 16)
++#define SSI_SISR_RDR1 (1 << 15)
++#define SSI_SISR_RDR0 (1 << 14)
++#define SSI_SISR_TDE1 (1 << 13)
++#define SSI_SISR_TDE0 (1 << 12)
++#define SSI_SISR_ROE1 (1 << 11)
++#define SSI_SISR_ROE0 (1 << 10)
++#define SSI_SISR_TUE1 (1 << 9)
++#define SSI_SISR_TUE0 (1 << 8)
++#define SSI_SISR_TFS (1 << 7)
++#define SSI_SISR_RFS (1 << 6)
++#define SSI_SISR_TLS (1 << 5)
++#define SSI_SISR_RLS (1 << 4)
++#define SSI_SISR_RFF1 (1 << 3)
++#define SSI_SISR_RFF0 (1 << 2)
++#define SSI_SISR_TFE1 (1 << 1)
++#define SSI_SISR_TFE0 (1 << 0)
++
++#define SSI_SIER_RDMAE (1 << 22)
++#define SSI_SIER_RIE (1 << 21)
++#define SSI_SIER_TDMAE (1 << 20)
++#define SSI_SIER_TIE (1 << 19)
++#define SSI_SIER_CMDAU_EN (1 << 18)
++#define SSI_SIER_CMDDU_EN (1 << 17)
++#define SSI_SIER_RXT_EN (1 << 16)
++#define SSI_SIER_RDR1_EN (1 << 15)
++#define SSI_SIER_RDR0_EN (1 << 14)
++#define SSI_SIER_TDE1_EN (1 << 13)
++#define SSI_SIER_TDE0_EN (1 << 12)
++#define SSI_SIER_ROE1_EN (1 << 11)
++#define SSI_SIER_ROE0_EN (1 << 10)
++#define SSI_SIER_TUE1_EN (1 << 9)
++#define SSI_SIER_TUE0_EN (1 << 8)
++#define SSI_SIER_TFS_EN (1 << 7)
++#define SSI_SIER_RFS_EN (1 << 6)
++#define SSI_SIER_TLS_EN (1 << 5)
++#define SSI_SIER_RLS_EN (1 << 4)
++#define SSI_SIER_RFF1_EN (1 << 3)
++#define SSI_SIER_RFF0_EN (1 << 2)
++#define SSI_SIER_TFE1_EN (1 << 1)
++#define SSI_SIER_TFE0_EN (1 << 0)
++
++#define SSI_STCR_TXBIT0 (1 << 9)
++#define SSI_STCR_TFEN1 (1 << 8)
++#define SSI_STCR_TFEN0 (1 << 7)
++#define SSI_STCR_TFDIR (1 << 6)
++#define SSI_STCR_TXDIR (1 << 5)
++#define SSI_STCR_TSHFD (1 << 4)
++#define SSI_STCR_TSCKP (1 << 3)
++#define SSI_STCR_TFSI (1 << 2)
++#define SSI_STCR_TFSL (1 << 1)
++#define SSI_STCR_TEFS (1 << 0)
++
++#define SSI_SRCR_RXBIT0 (1 << 9)
++#define SSI_SRCR_RFEN1 (1 << 8)
++#define SSI_SRCR_RFEN0 (1 << 7)
++#define SSI_SRCR_RFDIR (1 << 6)
++#define SSI_SRCR_RXDIR (1 << 5)
++#define SSI_SRCR_RSHFD (1 << 4)
++#define SSI_SRCR_RSCKP (1 << 3)
++#define SSI_SRCR_RFSI (1 << 2)
++#define SSI_SRCR_RFSL (1 << 1)
++#define SSI_SRCR_REFS (1 << 0)
++
++#define SSI_STCCR_DIV2 (1 << 18)
++#define SSI_STCCR_PSR (1 << 15)
++#define SSI_STCCR_WL(x) ((((x) - 2) >> 1) << 13)
++#define SSI_STCCR_DC(x) (((x) & 0x1f) << 8)
++#define SSI_STCCR_PM(x) (((x) & 0xff) << 0)
++
++#define SSI_SRCCR_DIV2 (1 << 18)
++#define SSI_SRCCR_PSR (1 << 15)
++#define SSI_SRCCR_WL(x) ((((x) - 2) >> 1) << 13)
++#define SSI_SRCCR_DC(x) (((x) & 0x1f) << 8)
++#define SSI_SRCCR_PM(x) (((x) & 0xff) << 0)
++
++
++#define SSI_SFCSR_RFCNT1(x) (((x) & 0xf) << 28)
++#define SSI_SFCSR_TFCNT1(x) (((x) & 0xf) << 24)
++#define SSI_SFCSR_RFWM1(x) (((x) & 0xf) << 20)
++#define SSI_SFCSR_TFWM1(x) (((x) & 0xf) << 16)
++#define SSI_SFCSR_RFCNT0(x) (((x) & 0xf) << 12)
++#define SSI_SFCSR_TFCNT0(x) (((x) & 0xf) << 8)
++#define SSI_SFCSR_RFWM0(x) (((x) & 0xf) << 4)
++#define SSI_SFCSR_TFWM0(x) (((x) & 0xf) << 0)
++
++#define SSI_STR_TEST (1 << 15)
++#define SSI_STR_RCK2TCK (1 << 14)
++#define SSI_STR_RFS2TFS (1 << 13)
++#define SSI_STR_RXSTATE(x) (((x) & 0xf) << 8)
++#define SSI_STR_TXD2RXD (1 << 7)
++#define SSI_STR_TCK2RCK (1 << 6)
++#define SSI_STR_TFS2RFS (1 << 5)
++#define SSI_STR_TXSTATE(x) (((x) & 0xf) << 0)
++
++#define SSI_SOR_CLKOFF (1 << 6)
++#define SSI_SOR_RX_CLR (1 << 5)
++#define SSI_SOR_TX_CLR (1 << 4)
++#define SSI_SOR_INIT (1 << 3)
++#define SSI_SOR_WAIT(x) (((x) & 0x3) << 1)
++#define SSI_SOR_SYNRST (1 << 0)
++
++#define SSI_SACNT_FRDIV(x) (((x) & 0x3f) << 5)
++#define SSI_SACNT_WR (x << 4)
++#define SSI_SACNT_RD (x << 3)
++#define SSI_SACNT_TIF (x << 2)
++#define SSI_SACNT_FV (x << 1)
++#define SSI_SACNT_A97EN (x << 0)
++
++
++/* AUDMUX registers */
++#define AUDMUX_HPCR1 __REG(IMX_AUDMUX_BASE + 0x00)
++#define AUDMUX_HPCR2 __REG(IMX_AUDMUX_BASE + 0x04)
++#define AUDMUX_HPCR3 __REG(IMX_AUDMUX_BASE + 0x08)
++#define AUDMUX_PPCR1 __REG(IMX_AUDMUX_BASE + 0x10)
++#define AUDMUX_PPCR2 __REG(IMX_AUDMUX_BASE + 0x14)
++#define AUDMUX_PPCR3 __REG(IMX_AUDMUX_BASE + 0x18)
++
++#define AUDMUX_HPCR_TFSDIR (1 << 31)
++#define AUDMUX_HPCR_TCLKDIR (1 << 30)
++#define AUDMUX_HPCR_TFCSEL_TX (0 << 26)
++#define AUDMUX_HPCR_TFCSEL_RX (8 << 26)
++#define AUDMUX_HPCR_TFCSEL(x) (((x) & 0x7) << 26)
++#define AUDMUX_HPCR_RFSDIR (1 << 25)
++#define AUDMUX_HPCR_RCLKDIR (1 << 24)
++#define AUDMUX_HPCR_RFCSEL_TX (0 << 20)
++#define AUDMUX_HPCR_RFCSEL_RX (8 << 20)
++#define AUDMUX_HPCR_RFCSEL(x) (((x) & 0x7) << 20)
++#define AUDMUX_HPCR_RXDSEL(x) (((x) & 0x7) << 13)
++#define AUDMUX_HPCR_SYN (1 << 12)
++#define AUDMUX_HPCR_TXRXEN (1 << 10)
++#define AUDMUX_HPCR_INMEN (1 << 8)
++#define AUDMUX_HPCR_INMMASK(x) (((x) & 0xff) << 0)
++
++#define AUDMUX_PPCR_TFSDIR (1 << 31)
++#define AUDMUX_PPCR_TCLKDIR (1 << 30)
++#define AUDMUX_PPCR_TFCSEL_TX (0 << 26)
++#define AUDMUX_PPCR_TFCSEL_RX (8 << 26)
++#define AUDMUX_PPCR_TFCSEL(x) (((x) & 0x7) << 26)
++#define AUDMUX_PPCR_RFSDIR (1 << 25)
++#define AUDMUX_PPCR_RCLKDIR (1 << 24)
++#define AUDMUX_PPCR_RFCSEL_TX (0 << 20)
++#define AUDMUX_PPCR_RFCSEL_RX (8 << 20)
++#define AUDMUX_PPCR_RFCSEL(x) (((x) & 0x7) << 20)
++#define AUDMUX_PPCR_RXDSEL(x) (((x) & 0x7) << 13)
++#define AUDMUX_PPCR_SYN (1 << 12)
++#define AUDMUX_PPCR_TXRXEN (1 << 10)
++
++
++#endif
+Index: linux-2.6-pxa-new/sound/soc/s3c24xx/s3c24xx-i2s.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/s3c24xx/s3c24xx-i2s.c
+@@ -0,0 +1,271 @@
++/*
++ * s3c24xx-i2s.c -- ALSA Soc Audio Layer
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Graeme Gregory
++ * graeme.gregory@wolfsonmicro.com or 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
++ * 10th Nov 2006 Initial version.
++ */
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/device.h>
++#include <linux/delay.h>
++#include <linux/clk.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/initval.h>
++#include <sound/soc.h>
++
++#include <asm/hardware.h>
++#include <asm/io.h>
++#include <asm/arch/regs-iis.h>
++#include <asm/arch/regs-gpio.h>
++#include <asm/arch/regs-clock.h>
++#include <asm/arch/audio.h>
++#include <asm/dma.h>
++#include <asm/arch/dma.h>
++
++#include "s3c24xx-pcm.h"
++
++/* used to disable sysclk if external crystal is used */
++static int extclk = 0;
++module_param(extclk, int, 0);
++MODULE_PARM_DESC(extclk, "set to 1 to disable s3c24XX i2s sysclk");
++
++#define S3C24XX_I2S_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF)
++
++#define S3C24XX_I2S_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++#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 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
++
++/* priv is divider */
++static struct snd_soc_dai_mode s3c24xx_i2s_modes[] =
++{
++ /* s3c24xx I2S frame and clock master modes */
++ {
++ .fmt = S3C24XX_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = S3C24XX_I2S_DIR,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 384,
++ .bfs = 32,
++ .priv = 0x00
++ },
++};
++
++static struct s3c2410_dma_client s3c24xx_dma_client_out = {
++ .name = "I2S PCM Stereo out"
++};
++
++static struct s3c2410_dma_client s3c24xx_dma_client_in = {
++ .name = "I2S PCM Stereo in"
++};
++
++static s3c24xx_pcm_dma_params_t s3c24xx_i2s_pcm_stereo_out = {
++ .client = &s3c24xx_dma_client_out,
++ .channel = DMACH_I2S_OUT,
++ .dma_addr = S3C2410_PA_IIS+S3C2410_IISFIFO
++};
++
++static s3c24xx_pcm_dma_params_t s3c24xx_i2s_pcm_stereo_in = {
++ .client = &s3c24xx_dma_client_in,
++ .channel = DMACH_I2S_IN,
++ .dma_addr = S3C2410_PA_IIS+S3C2410_IISFIFO
++};
++
++
++struct s3c24xx_i2s_port {
++ int master;
++};
++static struct s3c24xx_i2s_port s3c24xx_i2s;
++
++/* Empty for the s3c24xx platforms */
++static int s3c24xx_i2s_startup(struct snd_pcm_substream *substream)
++{
++ return 0;
++}
++
++static int s3c24xx_i2s_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ unsigned long iiscon;
++ unsigned long iismod;
++ unsigned long iisfcon;
++
++ s3c24xx_i2s.master = 0;
++ if(rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CBS_CFS)
++ s3c24xx_i2s.master = 1;
++
++ /* Configure the I2S pins in correct mode */
++ s3c2410_gpio_cfgpin(S3C2410_GPE0,S3C2410_GPE0_I2SLRCK);
++ if (s3c24xx_i2s.master && !extclk){
++ printk("Setting Clock Output as we are Master\n");
++ s3c2410_gpio_cfgpin(S3C2410_GPE1,S3C2410_GPE1_I2SSCLK);
++ }
++ s3c2410_gpio_cfgpin(S3C2410_GPE2,S3C2410_GPE2_CDCLK);
++ s3c2410_gpio_cfgpin(S3C2410_GPE3,S3C2410_GPE3_I2SSDI);
++ s3c2410_gpio_cfgpin(S3C2410_GPE4,S3C2410_GPE4_I2SSDO);
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ {
++ rtd->cpu_dai->dma_data = &s3c24xx_i2s_pcm_stereo_out;
++ }
++ else
++ {
++ rtd->cpu_dai->dma_data = &s3c24xx_i2s_pcm_stereo_in;
++ }
++
++ /* Working copies of registers */
++ iiscon=readl(S3C24XX_VA_IIS+S3C2410_IISCON);
++ iismod=readl(S3C24XX_VA_IIS+S3C2410_IISMOD);
++ iisfcon=readl(S3C24XX_VA_IIS+S3C2410_IISFCON);
++ /* is port used by another stream */
++ if (!(iiscon & S3C2410_IISCON_IISEN)) {
++
++ /* Clear the registers */
++
++ iismod |= S3C2410_IISMOD_32FS | S3C2410_IISMOD_384FS;
++
++ if (!s3c24xx_i2s.master)
++ iismod |= S3C2410_IISMOD_SLAVE;
++
++ if (rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_LEFT_J)
++ iismod |= S3C2410_IISMOD_MSB;
++ }
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ {
++ iismod |= S3C2410_IISMOD_TXMODE;
++ iiscon |= S3C2410_IISCON_TXDMAEN;
++ iisfcon |= S3C2410_IISFCON_TXDMA | S3C2410_IISFCON_TXENABLE;
++ }
++ else
++ {
++ iismod |= S3C2410_IISMOD_RXMODE;
++ iiscon |= S3C2410_IISCON_RXDMAEN;
++ iisfcon |= S3C2410_IISFCON_RXDMA | S3C2410_IISFCON_RXENABLE;
++ }
++
++ writel(iiscon, S3C24XX_VA_IIS+S3C2410_IISCON);
++ writel(iismod, S3C24XX_VA_IIS+S3C2410_IISMOD);
++ writel(iisfcon, S3C24XX_VA_IIS+S3C2410_IISFCON);
++
++ printk("IISCON: %lx IISMOD: %lx", iiscon, iismod);
++
++ return 0;
++}
++
++static int s3c24xx_i2s_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ int ret = 0;
++ unsigned long iiscon;
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ /* Enable the IIS unit */
++ iiscon = readl(S3C24XX_VA_IIS+S3C2410_IISCON);
++ iiscon |= S3C2410_IISCON_IISEN;
++ writel(iiscon, S3C24XX_VA_IIS+S3C2410_IISCON);
++ break;
++ case SNDRV_PCM_TRIGGER_RESUME:
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ case SNDRV_PCM_TRIGGER_STOP:
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ break;
++ default:
++ ret = -EINVAL;
++ }
++
++ return ret;
++}
++
++static void s3c24xx_i2s_shutdown(struct snd_pcm_substream *substream)
++{
++ unsigned long iismod, iiscon;
++
++ iismod=readl(S3C24XX_VA_IIS+S3C2410_IISMOD);
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
++ iismod &= ~S3C2410_IISMOD_TXMODE;
++ } else {
++ iismod &= ~S3C2410_IISMOD_RXMODE;
++ }
++
++ writel(iismod,S3C24XX_VA_IIS+S3C2410_IISMOD);
++
++ iiscon=readl(S3C24XX_VA_IIS+S3C2410_IISCON);
++
++ if (iismod & ( S3C2410_IISMOD_TXMODE | S3C2410_IISMOD_RXMODE )) {
++ iiscon &= ! S3C2410_IISCON_IISEN;
++ writel(iiscon,S3C24XX_VA_IIS+S3C2410_IISCON);
++ }
++}
++
++#ifdef CONFIG_PM
++static int s3c24xx_i2s_suspend(struct platform_device *dev,
++ struct snd_soc_cpu_dai *dai)
++{
++}
++
++static int s3c24xx_i2s_resume(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++}
++
++#else
++#define s3c24xx_i2s_suspend NULL
++#define s3c24xx_i2s_resume NULL
++#endif
++
++/* s3c24xx I2S sysclock is always 384 FS */
++static unsigned int s3c24xx_i2s_config_sysclk(struct snd_soc_cpu_dai *iface,
++ struct snd_soc_clock_info *info, unsigned int clk)
++{
++ return info->rate * 384;
++}
++
++struct snd_soc_cpu_dai s3c24xx_i2s_dai = {
++ .name = "s3c24xx-i2s",
++ .id = 0,
++ .type = SND_SOC_DAI_I2S,
++ .suspend = s3c24xx_i2s_suspend,
++ .resume = s3c24xx_i2s_resume,
++ .config_sysclk = s3c24xx_i2s_config_sysclk,
++ .playback = {
++ .channels_min = 2,
++ .channels_max = 2,},
++ .capture = {
++ .channels_min = 2,
++ .channels_max = 2,},
++ .ops = {
++ .startup = s3c24xx_i2s_startup,
++ .shutdown = s3c24xx_i2s_shutdown,
++ .trigger = s3c24xx_i2s_trigger,
++ .hw_params = s3c24xx_i2s_hw_params,},
++ .caps = {
++ .num_modes = ARRAY_SIZE(s3c24xx_i2s_modes),
++ .mode = s3c24xx_i2s_modes,},
++};
++
++EXPORT_SYMBOL_GPL(s3c24xx_i2s_dai);
++
++/* Module information */
++MODULE_AUTHOR("Graeme Gregory, graeme.gregory@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("s3c24xx I2S SoC Interface");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/s3c24xx/s3c24xx-pcm.c
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/s3c24xx/s3c24xx-pcm.c
+@@ -0,0 +1,362 @@
++/*
++ * s3c24xx-pcm.c -- ALSA Soc Audio Layer
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Graeme Gregory
++ * graeme.gregory@wolfsonmicro.com or 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
++ * 10th Nov 2006 Initial version.
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/slab.h>
++#include <linux/dma-mapping.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++
++#include <asm/dma.h>
++#include <asm/io.h>
++#include <asm/hardware.h>
++#include <asm/arch/dma.h>
++#include <asm/arch/audio.h>
++
++#include "s3c24xx-pcm.h"
++
++static const struct snd_pcm_hardware s3c24xx_pcm_hardware = {
++ .info = SNDRV_PCM_INFO_MMAP |
++ SNDRV_PCM_INFO_MMAP_VALID |
++ SNDRV_PCM_INFO_INTERLEAVED |
++ SNDRV_PCM_INFO_PAUSE |
++ SNDRV_PCM_INFO_RESUME,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ .period_bytes_min = 32,
++ .period_bytes_max = 8192,
++ .periods_min = 1,
++ .periods_max = 8192,
++ .buffer_bytes_max = 256 * 1024,
++ .fifo_size = 32,
++};
++
++struct s3c24xx_runtime_data {
++ dma_addr_t dma_buffer;
++ dma_addr_t dma_buffer_end;
++ size_t period_size;
++ dma_addr_t period_ptr;
++ s3c24xx_pcm_dma_params_t *params;
++};
++
++/* Move the pointer onto the next period, dealing with wrap around.
++ */
++void static next_period(struct s3c24xx_runtime_data *prtd)
++{
++ prtd->period_ptr+=prtd->period_size;
++ if(prtd->period_ptr>=prtd->dma_buffer_end)
++ {
++ prtd->period_ptr=prtd->dma_buffer;
++ }
++}
++
++void s3c24xx_audio_buffdone(struct s3c2410_dma_chan *channel,
++ void *dev_id, int size,
++ enum s3c2410_dma_buffresult result)
++{
++ struct snd_pcm_substream *substream = dev_id;
++ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
++
++ if(result==S3C2410_RES_OK)
++ {
++ next_period(prtd);
++ s3c2410_dma_enqueue(prtd->params->channel, substream, prtd->period_ptr, prtd->period_size);
++ }
++ snd_pcm_period_elapsed(substream);
++
++}
++
++static int s3c24xx_pcm_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct s3c24xx_runtime_data *prtd = runtime->private_data;
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ s3c24xx_pcm_dma_params_t *dma = rtd->cpu_dai->dma_data;
++ int ret;
++
++ printk("Entered s3c24xx hw_params\n");
++
++ snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
++ runtime->dma_bytes = params_buffer_bytes(params);
++
++ prtd->params=dma;
++ if(ret=s3c2410_dma_request(prtd->params->channel,
++ prtd->params->client,NULL))
++ {
++ printk("Failed to get dma channel %d for %s\n",prtd->params->channel,
++ prtd->params->client->name);
++ return ret;
++ }
++
++ //s3c2410_dma_setflags(prtd->params->channel,S3C2410_DMAF_AUTOSTART);
++ 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);
++ }
++ else
++ {
++ s3c2410_dma_devconfig(prtd->params->channel, S3C2410_DMASRC_HW,
++ S3C2410_DISRCC_INC | S3C2410_DISRCC_APB,
++ prtd->params->dma_addr);
++ }
++
++ s3c2410_dma_config(prtd->params->channel,2,S3C2410_DCON_HANDSHAKE);
++
++ s3c2410_dma_set_buffdone_fn(prtd->params->channel, s3c24xx_audio_buffdone);
++
++ prtd->dma_buffer = runtime->dma_addr;
++ prtd->dma_buffer_end = runtime->dma_addr + runtime->dma_bytes;
++ prtd->period_size = params_period_bytes(params);
++
++ return 0;
++}
++
++static int s3c24xx_pcm_hw_free(struct snd_pcm_substream *substream)
++{
++ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
++
++ printk("Entered s3c24xx hw_free\n");
++
++ return 0;
++}
++
++static int s3c24xx_pcm_prepare(struct snd_pcm_substream *substream)
++{
++ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
++
++ printk("Entered s3c24xx prepare\n");
++
++ /* Set the period that is to be queued in DMA */
++ prtd->period_ptr = prtd->dma_buffer;
++
++ /* queue the first period */
++ s3c2410_dma_enqueue(prtd->params->channel, substream, prtd->period_ptr, prtd->period_size);
++
++ /* Move to next period to be queued */
++ next_period(prtd);
++
++ /* queue the second buffer */
++ s3c2410_dma_enqueue(prtd->params->channel, substream, prtd->period_ptr, prtd->period_size);
++
++
++ return 0;
++}
++
++static int s3c24xx_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
++ int ret = 0;
++
++ printk("Entered s3c24xx trigger\n");
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ case SNDRV_PCM_TRIGGER_RESUME:
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_START);
++ break;
++
++ case SNDRV_PCM_TRIGGER_STOP:
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_STOP);
++ break;
++
++ default:
++ ret = -EINVAL;
++ }
++
++ return ret;
++}
++
++static snd_pcm_uframes_t s3c24xx_pcm_pointer(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct s3c24xx_runtime_data *prtd = runtime->private_data;
++ dma_addr_t dst,src;
++ snd_pcm_uframes_t x;
++
++ printk("Entered s3c24xx pointer\n");
++
++ s3c2410_dma_getposition(prtd->params->channel, &src, &dst);
++
++ printk("DMA Position: %lx, %lx\n", src, dst);
++
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ {
++ x = bytes_to_frames(runtime, src - prtd->dma_buffer);
++ }
++ else
++ {
++ x = bytes_to_frames(runtime, dst - prtd->dma_buffer);
++ }
++
++ if (x == runtime->buffer_size)
++ x=0;
++ return x;
++
++}
++
++static int s3c24xx_pcm_open(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct s3c24xx_runtime_data *prtd;
++ int ret;
++
++ printk("Entered s3c24xx open\n");
++
++ snd_soc_set_runtime_hwparams(substream, &s3c24xx_pcm_hardware);
++
++ if((prtd = kzalloc(sizeof(struct s3c24xx_runtime_data), GFP_KERNEL)) == NULL)
++ {
++ ret = -ENOMEM;
++ goto out;
++ }
++
++ runtime->private_data = prtd;
++ return 0;
++
++out:
++ return ret;
++}
++
++static int s3c24xx_pcm_close(struct snd_pcm_substream *substream)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++ struct s3c24xx_runtime_data *prtd = runtime->private_data;
++
++ printk("Entered s3c24xx close\n");
++
++ s3c2410_dma_free(prtd->params->channel, prtd->params->client);
++
++ return 0;
++}
++
++static int
++s3c24xx_pcm_mmap(struct snd_pcm_substream *substream, struct vm_area_struct *vma)
++{
++ struct snd_pcm_runtime *runtime = substream->runtime;
++
++ printk("Entered s3c24xx mmap\n");
++
++ return dma_mmap_writecombine(substream->pcm->card->dev, vma,
++ runtime->dma_area,
++ runtime->dma_addr,
++ runtime->dma_bytes);
++}
++
++struct snd_pcm_ops s3c24xx_pcm_ops = {
++ .open = s3c24xx_pcm_open,
++ .close = s3c24xx_pcm_close,
++ .ioctl = snd_pcm_lib_ioctl,
++ .hw_params = s3c24xx_pcm_hw_params,
++ .hw_free = s3c24xx_pcm_hw_free,
++ .prepare = s3c24xx_pcm_prepare,
++ .trigger = s3c24xx_pcm_trigger,
++ .pointer = s3c24xx_pcm_pointer,
++ .mmap = s3c24xx_pcm_mmap,
++};
++
++static int s3c24xx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
++{
++ struct snd_pcm_substream *substream = pcm->streams[stream].substream;
++ struct snd_dma_buffer *buf = &substream->dma_buffer;
++ size_t size = s3c24xx_pcm_hardware.buffer_bytes_max;
++
++ printk("Entered s3c24xx preaccolate_dma_buffer\n");
++
++ buf->dev.type = SNDRV_DMA_TYPE_DEV;
++ buf->dev.dev = pcm->card->dev;
++ buf->private_data = NULL;
++ buf->area = dma_alloc_writecombine(pcm->card->dev, size,
++ &buf->addr, GFP_KERNEL);
++ if (!buf->area)
++ return -ENOMEM;
++ buf->bytes = size;
++ return 0;
++}
++
++static void s3c24xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
++{
++ struct snd_pcm_substream *substream;
++ struct snd_dma_buffer *buf;
++ int stream;
++
++ printk("Entered s3c24xx free_dma_buffers\n");
++
++ for (stream = 0; stream < 2; stream++) {
++ substream = pcm->streams[stream].substream;
++ if (!substream)
++ continue;
++
++ buf = &substream->dma_buffer;
++ if (!buf->area)
++ continue;
++
++ dma_free_writecombine(pcm->card->dev, buf->bytes,
++ buf->area, buf->addr);
++ buf->area = NULL;
++ }
++}
++
++static u64 s3c24xx_pcm_dmamask = 0xffffffff;
++
++int s3c24xx_pcm_new(struct snd_card *card, struct snd_soc_codec_dai *dai,
++ struct snd_pcm *pcm)
++{
++ int ret = 0;
++
++ printk("Entered s3c24xx new\n");
++
++ if (!card->dev->dma_mask)
++ card->dev->dma_mask = &s3c24xx_pcm_dmamask;
++ if (!card->dev->coherent_dma_mask)
++ card->dev->coherent_dma_mask = 0xffffffff;
++
++ if (dai->playback.channels_min) {
++ ret = s3c24xx_pcm_preallocate_dma_buffer(pcm, SNDRV_PCM_STREAM_PLAYBACK);
++ if (ret)
++ goto out;
++ }
++
++ if (dai->capture.channels_min) {
++ ret = s3c24xx_pcm_preallocate_dma_buffer(pcm, SNDRV_PCM_STREAM_CAPTURE);
++ if (ret)
++ goto out;
++ }
++ out:
++ return ret;
++}
++
++struct snd_soc_platform s3c24xx_soc_platform = {
++ .name = "s3c24xx-audio",
++ .pcm_ops = &s3c24xx_pcm_ops,
++ .pcm_new = s3c24xx_pcm_new,
++ .pcm_free = s3c24xx_pcm_free_dma_buffers,
++};
++
++EXPORT_SYMBOL_GPL(s3c24xx_soc_platform);
++
++MODULE_AUTHOR("Graeme Gregory");
++MODULE_DESCRIPTION("Samsung S3C24XX PCM DMA module");
++MODULE_LICENSE("GPL");
+Index: linux-2.6-pxa-new/sound/soc/s3c24xx/Kconfig
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/s3c24xx/Kconfig
+@@ -0,0 +1,26 @@
++menu "SoC Audio for the Atmel AT91"
++
++config SND_S3C24XX_SOC
++ tristate "SoC Audio for the Samsung S3C24xx System-on-Chip"
++ depends on ARCH_S3C2410 && SND
++ select SND_PCM
++ help
++ Say Y or M if you want to add support for codecs attached to
++ the Samsung S3C24xx.
++
++config SND_S3C24XX_SOC_I2S
++ tristate
++
++config SND_S3C24XX_SOC_AC97
++ tristate
++
++# graeme - add mach dep
++config SND_S3C24XX_SOC_SMDK2440
++ tristate "SoC I2S Audio support for SMDK2440"
++ depends on SND_S3C24XX_SOC
++ select SND_S3C24XX_SOC_I2S
++ select SND_SOC_UDA1380
++ help
++ Say Y if you want to add support for SoC audio on
++
++endmenu
+Index: linux-2.6-pxa-new/sound/soc/s3c24xx/Makefile
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/sound/soc/s3c24xx/Makefile
+@@ -0,0 +1,11 @@
++# S3C24xx Platform Support
++snd-soc-s3c24xx-objs := s3c24xx-pcm.o
++snd-soc-at91-i2s-objs := s3c24xx-i2s.o
++
++obj-$(CONFIG_SND_S3C24XX_SOC) += snd-soc-s3c24xx.o
++obj-$(CONFIG_SND_S3C24XX_SOC_I2S) += snd-soc-s3c24xx-i2s.o
++
++# S3C24xx Machine Support
++snd-soc-smdk2440-uda1380-objs := smdk2440_uda1380.o
++
++obj-$(CONFIG_SND_S3C24XX_SOC_SMDK2440) += snd-soc-smdk2440-uda1380.o
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/config-nr-tty-devices.patch b/packages/linux/logicpd-pxa270-2.6.19.2/config-nr-tty-devices.patch
new file mode 100644
index 0000000000..870ba5f643
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/config-nr-tty-devices.patch
@@ -0,0 +1,1068 @@
+diff -urN oldtree/drivers/char/Kconfig newtree/drivers/char/Kconfig
+--- oldtree/drivers/char/Kconfig 2006-03-27 13:28:15.000000000 -0500
++++ newtree/drivers/char/Kconfig 2006-03-28 10:37:24.195120750 -0500
+@@ -57,6 +57,18 @@
+
+ If unsure, say Y.
+
++config NR_TTY_DEVICES
++ int "Maximum tty device number"
++ depends on VT
++ default 63
++ ---help---
++ This is the highest numbered device created in /dev. You will actually have
++ NR_TTY_DEVICES+1 devices in /dev. The default is 63, which will result in
++ 64 /dev entries. The lowest number you can set is 11, anything below that,
++ and it will default to 11. 63 is also the upper limit so we don't overrun
++ the serial consoles.
++
++
+ config HW_CONSOLE
+ bool
+ depends on VT && !S390 && !UML
+diff -urN oldtree/drivers/char/Kconfig.orig newtree/drivers/char/Kconfig.orig
+--- oldtree/drivers/char/Kconfig.orig 1969-12-31 19:00:00.000000000 -0500
++++ newtree/drivers/char/Kconfig.orig 2006-03-28 10:37:24.207121500 -0500
+@@ -0,0 +1,1017 @@
++#
++# Character device configuration
++#
++
++menu "Character devices"
++
++config VT
++ bool "Virtual terminal" if EMBEDDED
++ select INPUT
++ default y if !VIOCONS
++ ---help---
++ If you say Y here, you will get support for terminal devices with
++ display and keyboard devices. These are called "virtual" because you
++ can run several virtual terminals (also called virtual consoles) on
++ one physical terminal. This is rather useful, for example one
++ virtual terminal can collect system messages and warnings, another
++ one can be used for a text-mode user session, and a third could run
++ an X session, all in parallel. Switching between virtual terminals
++ is done with certain key combinations, usually Alt-<function key>.
++
++ The setterm command ("man setterm") can be used to change the
++ properties (such as colors or beeping) of a virtual terminal. The
++ man page console_codes(4) ("man console_codes") contains the special
++ character sequences that can be used to change those properties
++ directly. The fonts used on virtual terminals can be changed with
++ the setfont ("man setfont") command and the key bindings are defined
++ with the loadkeys ("man loadkeys") command.
++
++ You need at least one virtual terminal device in order to make use
++ of your keyboard and monitor. Therefore, only people configuring an
++ embedded system would want to say N here in order to save some
++ memory; the only way to log into such a system is then via a serial
++ or network connection.
++
++ If unsure, say Y, or else you won't be able to do much with your new
++ shiny Linux system :-)
++
++config VT_CONSOLE
++ bool "Support for console on virtual terminal" if EMBEDDED
++ depends on VT
++ default y
++ ---help---
++ The system console is the device which receives all kernel messages
++ and warnings and which allows logins in single user mode. If you
++ answer Y here, a virtual terminal (the device used to interact with
++ a physical terminal) can be used as system console. This is the most
++ common mode of operations, so you should say Y here unless you want
++ the kernel messages be output only to a serial port (in which case
++ you should say Y to "Console on serial port", below).
++
++ If you do say Y here, by default the currently visible virtual
++ terminal (/dev/tty0) will be used as system console. You can change
++ that with a kernel command line option such as "console=tty3" which
++ would use the third virtual terminal as system console. (Try "man
++ bootparam" or see the documentation of your boot loader (lilo or
++ loadlin) about how to pass options to the kernel at boot time.)
++
++ If unsure, say Y.
++
++config HW_CONSOLE
++ bool
++ depends on VT && !S390 && !UML
++ default y
++
++config SERIAL_NONSTANDARD
++ bool "Non-standard serial port support"
++ ---help---
++ Say Y here if you have any non-standard serial boards -- boards
++ which aren't supported using the standard "dumb" serial driver.
++ This includes intelligent serial boards such as Cyclades,
++ Digiboards, etc. These are usually used for systems that need many
++ serial ports because they serve many terminals or dial-in
++ connections.
++
++ Note that the answer to this question won't directly affect the
++ kernel: saying N will just cause the configurator to skip all
++ the questions about non-standard serial boards.
++
++ Most people can say N here.
++
++config COMPUTONE
++ tristate "Computone IntelliPort Plus serial support"
++ depends on SERIAL_NONSTANDARD && BROKEN_ON_SMP
++ ---help---
++ This driver supports the entire family of Intelliport II/Plus
++ controllers with the exception of the MicroChannel controllers and
++ products previous to the Intelliport II. These are multiport cards,
++ which give you many serial ports. You would need something like this
++ to connect more than two modems to your Linux box, for instance in
++ order to become a dial-in server. If you have a card like that, say
++ Y here and read <file:Documentation/computone.txt>.
++
++ To compile this driver as modules, choose M here: the
++ modules will be called ip2 and ip2main.
++
++config ROCKETPORT
++ tristate "Comtrol RocketPort support"
++ depends on SERIAL_NONSTANDARD
++ help
++ This driver supports Comtrol RocketPort and RocketModem PCI boards.
++ These boards provide 2, 4, 8, 16, or 32 high-speed serial ports or
++ modems. For information about the RocketPort/RocketModem boards
++ and this driver read <file:Documentation/rocket.txt>.
++
++ To compile this driver as a module, choose M here: the
++ module will be called rocket.
++
++ If you want to compile this driver into the kernel, say Y here. If
++ you don't have a Comtrol RocketPort/RocketModem card installed, say N.
++
++config CYCLADES
++ tristate "Cyclades async mux support"
++ depends on SERIAL_NONSTANDARD
++ ---help---
++ This driver supports Cyclades Z and Y multiserial boards.
++ You would need something like this to connect more than two modems to
++ your Linux box, for instance in order to become a dial-in server.
++
++ For information about the Cyclades-Z card, read
++ <file:drivers/char/README.cycladesZ>.
++
++ To compile this driver as a module, choose M here: the
++ module will be called cyclades.
++
++ If you haven't heard about it, it's safe to say N.
++
++config CYZ_INTR
++ bool "Cyclades-Z interrupt mode operation (EXPERIMENTAL)"
++ depends on EXPERIMENTAL && CYCLADES
++ help
++ The Cyclades-Z family of multiport cards allows 2 (two) driver op
++ modes: polling and interrupt. In polling mode, the driver will check
++ the status of the Cyclades-Z ports every certain amount of time
++ (which is called polling cycle and is configurable). In interrupt
++ mode, it will use an interrupt line (IRQ) in order to check the
++ status of the Cyclades-Z ports. The default op mode is polling. If
++ unsure, say N.
++
++config DIGIEPCA
++ tristate "Digiboard Intelligent Async Support"
++ depends on SERIAL_NONSTANDARD
++ ---help---
++ This is a driver for Digi International's Xx, Xeve, and Xem series
++ of cards which provide multiple serial ports. You would need
++ something like this to connect more than two modems to your Linux
++ box, for instance in order to become a dial-in server. This driver
++ supports the original PC (ISA) boards as well as PCI, and EISA. If
++ you have a card like this, say Y here and read the file
++ <file:Documentation/digiepca.txt>.
++
++ To compile this driver as a module, choose M here: the
++ module will be called epca.
++
++config ESPSERIAL
++ tristate "Hayes ESP serial port support"
++ depends on SERIAL_NONSTANDARD && ISA && BROKEN_ON_SMP && ISA_DMA_API
++ help
++ This is a driver which supports Hayes ESP serial ports. Both single
++ port cards and multiport cards are supported. Make sure to read
++ <file:Documentation/hayes-esp.txt>.
++
++ To compile this driver as a module, choose M here: the
++ module will be called esp.
++
++ If unsure, say N.
++
++config MOXA_INTELLIO
++ tristate "Moxa Intellio support"
++ depends on SERIAL_NONSTANDARD && BROKEN_ON_SMP
++ help
++ Say Y here if you have a Moxa Intellio multiport serial card.
++
++ To compile this driver as a module, choose M here: the
++ module will be called moxa.
++
++config MOXA_SMARTIO
++ tristate "Moxa SmartIO support"
++ depends on SERIAL_NONSTANDARD
++ help
++ Say Y here if you have a Moxa SmartIO multiport serial card.
++
++ This driver can also be built as a module ( = code which can be
++ inserted in and removed from the running kernel whenever you want).
++ The module will be called mxser. If you want to do that, say M
++ here.
++
++config ISI
++ tristate "Multi-Tech multiport card support (EXPERIMENTAL)"
++ depends on SERIAL_NONSTANDARD
++ help
++ This is a driver for the Multi-Tech cards which provide several
++ serial ports. The driver is experimental and can currently only be
++ built as a module. The module will be called isicom.
++ If you want to do that, choose M here.
++
++config SYNCLINK
++ tristate "Microgate SyncLink card support"
++ depends on SERIAL_NONSTANDARD && PCI && ISA_DMA_API
++ help
++ Provides support for the SyncLink ISA and PCI multiprotocol serial
++ adapters. These adapters support asynchronous and HDLC bit
++ synchronous communication up to 10Mbps (PCI adapter).
++
++ This driver can only be built as a module ( = code which can be
++ inserted in and removed from the running kernel whenever you want).
++ The module will be called synclink. If you want to do that, say M
++ here.
++
++config SYNCLINKMP
++ tristate "SyncLink Multiport support"
++ depends on SERIAL_NONSTANDARD
++ help
++ Enable support for the SyncLink Multiport (2 or 4 ports)
++ serial adapter, running asynchronous and HDLC communications up
++ to 2.048Mbps. Each ports is independently selectable for
++ RS-232, V.35, RS-449, RS-530, and X.21
++
++ This driver may be built as a module ( = code which can be
++ inserted in and removed from the running kernel whenever you want).
++ The module will be called synclinkmp. If you want to do that, say M
++ here.
++
++config N_HDLC
++ tristate "HDLC line discipline support"
++ depends on SERIAL_NONSTANDARD
++ help
++ Allows synchronous HDLC communications with tty device drivers that
++ support synchronous HDLC such as the Microgate SyncLink adapter.
++
++ This driver can only be built as a module ( = code which can be
++ inserted in and removed from the running kernel whenever you want).
++ The module will be called n_hdlc. If you want to do that, say M
++ here.
++
++config RISCOM8
++ tristate "SDL RISCom/8 card support"
++ depends on SERIAL_NONSTANDARD && BROKEN_ON_SMP
++ help
++ This is a driver for the SDL Communications RISCom/8 multiport card,
++ which gives you many serial ports. You would need something like
++ this to connect more than two modems to your Linux box, for instance
++ in order to become a dial-in server. If you have a card like that,
++ say Y here and read the file <file:Documentation/riscom8.txt>.
++
++ Also it's possible to say M here and compile this driver as kernel
++ loadable module; the module will be called riscom8.
++
++config SPECIALIX
++ tristate "Specialix IO8+ card support"
++ depends on SERIAL_NONSTANDARD
++ help
++ This is a driver for the Specialix IO8+ multiport card (both the
++ ISA and the PCI version) which gives you many serial ports. You
++ would need something like this to connect more than two modems to
++ your Linux box, for instance in order to become a dial-in server.
++
++ If you have a card like that, say Y here and read the file
++ <file:Documentation/specialix.txt>. Also it's possible to say M here
++ and compile this driver as kernel loadable module which will be
++ called specialix.
++
++config SPECIALIX_RTSCTS
++ bool "Specialix DTR/RTS pin is RTS"
++ depends on SPECIALIX
++ help
++ The Specialix IO8+ card can only support either RTS or DTR. If you
++ say N here, the driver will use the pin as "DTR" when the tty is in
++ software handshake mode. If you say Y here or hardware handshake is
++ on, it will always be RTS. Read the file
++ <file:Documentation/specialix.txt> for more information.
++
++config SX
++ tristate "Specialix SX (and SI) card support"
++ depends on SERIAL_NONSTANDARD
++ help
++ This is a driver for the SX and SI multiport serial cards.
++ Please read the file <file:Documentation/sx.txt> for details.
++
++ This driver can only be built as a module ( = code which can be
++ inserted in and removed from the running kernel whenever you want).
++ The module will be called sx. If you want to do that, say M here.
++
++config RIO
++ tristate "Specialix RIO system support"
++ depends on SERIAL_NONSTANDARD && BROKEN_ON_SMP
++ help
++ This is a driver for the Specialix RIO, a smart serial card which
++ drives an outboard box that can support up to 128 ports. Product
++ information is at <http://www.perle.com/support/documentation.html#multiport>.
++ There are both ISA and PCI versions.
++
++config RIO_OLDPCI
++ bool "Support really old RIO/PCI cards"
++ depends on RIO
++ help
++ Older RIO PCI cards need some initialization-time configuration to
++ determine the IRQ and some control addresses. If you have a RIO and
++ this doesn't seem to work, try setting this to Y.
++
++config STALDRV
++ bool "Stallion multiport serial support"
++ depends on SERIAL_NONSTANDARD
++ help
++ Stallion cards give you many serial ports. You would need something
++ like this to connect more than two modems to your Linux box, for
++ instance in order to become a dial-in server. If you say Y here,
++ you will be asked for your specific card model in the next
++ questions. Make sure to read <file:Documentation/stallion.txt> in
++ this case. If you have never heard about all this, it's safe to
++ say N.
++
++config STALLION
++ tristate "Stallion EasyIO or EC8/32 support"
++ depends on STALDRV && BROKEN_ON_SMP
++ help
++ If you have an EasyIO or EasyConnection 8/32 multiport Stallion
++ card, then this is for you; say Y. Make sure to read
++ <file:Documentation/stallion.txt>.
++
++ To compile this driver as a module, choose M here: the
++ module will be called stallion.
++
++config ISTALLION
++ tristate "Stallion EC8/64, ONboard, Brumby support"
++ depends on STALDRV && BROKEN_ON_SMP
++ help
++ If you have an EasyConnection 8/64, ONboard, Brumby or Stallion
++ serial multiport card, say Y here. Make sure to read
++ <file:Documentation/stallion.txt>.
++
++ To compile this driver as a module, choose M here: the
++ module will be called istallion.
++
++config AU1000_UART
++ bool "Enable Au1000 UART Support"
++ depends on SERIAL_NONSTANDARD && MIPS
++ help
++ If you have an Alchemy AU1000 processor (MIPS based) and you want
++ to use serial ports, say Y. Otherwise, say N.
++
++config AU1000_SERIAL_CONSOLE
++ bool "Enable Au1000 serial console"
++ depends on AU1000_UART
++ help
++ If you have an Alchemy AU1000 processor (MIPS based) and you want
++ to use a console on a serial port, say Y. Otherwise, say N.
++
++config QTRONIX_KEYBOARD
++ bool "Enable Qtronix 990P Keyboard Support"
++ depends on IT8712
++ help
++ Images of Qtronix keyboards are at
++ <http://www.qtronix.com/keyboard.html>.
++
++config IT8172_CIR
++ bool
++ depends on QTRONIX_KEYBOARD
++ default y
++
++config IT8172_SCR0
++ bool "Enable Smart Card Reader 0 Support "
++ depends on IT8712
++ help
++ Say Y here to support smart-card reader 0 (SCR0) on the Integrated
++ Technology Express, Inc. ITE8172 SBC. Vendor page at
++ <http://www.ite.com.tw/ia/brief_it8172bsp.htm>; picture of the
++ board at <http://www.mvista.com/partners/semiconductor/ite.html>.
++
++config IT8172_SCR1
++ bool "Enable Smart Card Reader 1 Support "
++ depends on IT8712
++ help
++ Say Y here to support smart-card reader 1 (SCR1) on the Integrated
++ Technology Express, Inc. ITE8172 SBC. Vendor page at
++ <http://www.ite.com.tw/ia/brief_it8172bsp.htm>; picture of the
++ board at <http://www.mvista.com/partners/semiconductor/ite.html>.
++
++config A2232
++ tristate "Commodore A2232 serial support (EXPERIMENTAL)"
++ depends on EXPERIMENTAL && ZORRO && BROKEN_ON_SMP
++ ---help---
++ This option supports the 2232 7-port serial card shipped with the
++ Amiga 2000 and other Zorro-bus machines, dating from 1989. At
++ a max of 19,200 bps, the ports are served by a 6551 ACIA UART chip
++ each, plus a 8520 CIA, and a master 6502 CPU and buffer as well. The
++ ports were connected with 8 pin DIN connectors on the card bracket,
++ for which 8 pin to DB25 adapters were supplied. The card also had
++ jumpers internally to toggle various pinning configurations.
++
++ This driver can be built as a module; but then "generic_serial"
++ will also be built as a module. This has to be loaded before
++ "ser_a2232". If you want to do this, answer M here.
++
++config SGI_SNSC
++ bool "SGI Altix system controller communication support"
++ depends on (IA64_SGI_SN2 || IA64_GENERIC)
++ help
++ If you have an SGI Altix and you want to enable system
++ controller communication from user space (you want this!),
++ say Y. Otherwise, say N.
++
++config SGI_TIOCX
++ bool "SGI TIO CX driver support"
++ depends on (IA64_SGI_SN2 || IA64_GENERIC)
++ help
++ If you have an SGI Altix and you have fpga devices attached
++ to your TIO, say Y here, otherwise say N.
++
++config SGI_MBCS
++ tristate "SGI FPGA Core Services driver support"
++ depends on SGI_TIOCX
++ help
++ If you have an SGI Altix with an attached SABrick
++ say Y or M here, otherwise say N.
++
++source "drivers/serial/Kconfig"
++
++config UNIX98_PTYS
++ bool "Unix98 PTY support" if EMBEDDED
++ default y
++ ---help---
++ A pseudo terminal (PTY) is a software device consisting of two
++ halves: a master and a slave. The slave device behaves identical to
++ a physical terminal; the master device is used by a process to
++ read data from and write data to the slave, thereby emulating a
++ terminal. Typical programs for the master side are telnet servers
++ and xterms.
++
++ Linux has traditionally used the BSD-like names /dev/ptyxx for
++ masters and /dev/ttyxx for slaves of pseudo terminals. This scheme
++ has a number of problems. The GNU C library glibc 2.1 and later,
++ however, supports the Unix98 naming standard: in order to acquire a
++ pseudo terminal, a process opens /dev/ptmx; the number of the pseudo
++ terminal is then made available to the process and the pseudo
++ terminal slave can be accessed as /dev/pts/<number>. What was
++ traditionally /dev/ttyp2 will then be /dev/pts/2, for example.
++
++ All modern Linux systems use the Unix98 ptys. Say Y unless
++ you're on an embedded system and want to conserve memory.
++
++config LEGACY_PTYS
++ bool "Legacy (BSD) PTY support"
++ default y
++ ---help---
++ A pseudo terminal (PTY) is a software device consisting of two
++ halves: a master and a slave. The slave device behaves identical to
++ a physical terminal; the master device is used by a process to
++ read data from and write data to the slave, thereby emulating a
++ terminal. Typical programs for the master side are telnet servers
++ and xterms.
++
++ Linux has traditionally used the BSD-like names /dev/ptyxx
++ for masters and /dev/ttyxx for slaves of pseudo
++ terminals. This scheme has a number of problems, including
++ security. This option enables these legacy devices; on most
++ systems, it is safe to say N.
++
++
++config LEGACY_PTY_COUNT
++ int "Maximum number of legacy PTY in use"
++ depends on LEGACY_PTYS
++ range 1 256
++ default "256"
++ ---help---
++ The maximum number of legacy PTYs that can be used at any one time.
++ The default is 256, and should be more than enough. Embedded
++ systems may want to reduce this to save memory.
++
++ When not in use, each legacy PTY occupies 12 bytes on 32-bit
++ architectures and 24 bytes on 64-bit architectures.
++
++config PRINTER
++ tristate "Parallel printer support"
++ depends on PARPORT
++ ---help---
++ If you intend to attach a printer to the parallel port of your Linux
++ box (as opposed to using a serial printer; if the connector at the
++ printer has 9 or 25 holes ["female"], then it's serial), say Y.
++ Also read the Printing-HOWTO, available from
++ <http://www.tldp.org/docs.html#howto>.
++
++ It is possible to share one parallel port among several devices
++ (e.g. printer and ZIP drive) and it is safe to compile the
++ corresponding drivers into the kernel.
++
++ To compile this driver as a module, choose M here and read
++ <file:Documentation/parport.txt>. The module will be called lp.
++
++ If you have several parallel ports, you can specify which ports to
++ use with the "lp" kernel command line option. (Try "man bootparam"
++ or see the documentation of your boot loader (lilo or loadlin) about
++ how to pass options to the kernel at boot time.) The syntax of the
++ "lp" command line option can be found in <file:drivers/char/lp.c>.
++
++ If you have more than 8 printers, you need to increase the LP_NO
++ macro in lp.c and the PARPORT_MAX macro in parport.h.
++
++config LP_CONSOLE
++ bool "Support for console on line printer"
++ depends on PRINTER
++ ---help---
++ If you want kernel messages to be printed out as they occur, you
++ can have a console on the printer. This option adds support for
++ doing that; to actually get it to happen you need to pass the
++ option "console=lp0" to the kernel at boot time.
++
++ If the printer is out of paper (or off, or unplugged, or too
++ busy..) the kernel will stall until the printer is ready again.
++ By defining CONSOLE_LP_STRICT to 0 (at your own risk) you
++ can make the kernel continue when this happens,
++ but it'll lose the kernel messages.
++
++ If unsure, say N.
++
++config PPDEV
++ tristate "Support for user-space parallel port device drivers"
++ depends on PARPORT
++ ---help---
++ Saying Y to this adds support for /dev/parport device nodes. This
++ is needed for programs that want portable access to the parallel
++ port, for instance deviceid (which displays Plug-and-Play device
++ IDs).
++
++ This is the parallel port equivalent of SCSI generic support (sg).
++ It is safe to say N to this -- it is not needed for normal printing
++ or parallel port CD-ROM/disk support.
++
++ To compile this driver as a module, choose M here: the
++ module will be called ppdev.
++
++ If unsure, say N.
++
++config TIPAR
++ tristate "Texas Instruments parallel link cable support"
++ depends on PARPORT
++ ---help---
++ If you own a Texas Instruments graphing calculator and use a
++ parallel link cable, then you might be interested in this driver.
++
++ If you enable this driver, you will be able to communicate with
++ your calculator through a set of device nodes under /dev. The
++ main advantage of this driver is that you don't have to be root
++ to use this precise link cable (depending on the permissions on
++ the device nodes, though).
++
++ To compile this driver as a module, choose M here: the
++ module will be called tipar.
++
++ If you don't know what a parallel link cable is or what a Texas
++ Instruments graphing calculator is, then you probably don't need this
++ driver.
++
++ If unsure, say N.
++
++config HVC_CONSOLE
++ bool "pSeries Hypervisor Virtual Console support"
++ depends on PPC_PSERIES
++ help
++ pSeries machines when partitioned support a hypervisor virtual
++ console. This driver allows each pSeries partition to have a console
++ which is accessed via the HMC.
++
++config HVCS
++ tristate "IBM Hypervisor Virtual Console Server support"
++ depends on PPC_PSERIES
++ help
++ Partitionable IBM Power5 ppc64 machines allow hosting of
++ firmware virtual consoles from one Linux partition by
++ another Linux partition. This driver allows console data
++ from Linux partitions to be accessed through TTY device
++ interfaces in the device tree of a Linux partition running
++ this driver.
++
++ To compile this driver as a module, choose M here: the
++ module will be called hvcs.ko. Additionally, this module
++ will depend on arch specific APIs exported from hvcserver.ko
++ which will also be compiled when this driver is built as a
++ module.
++
++source "drivers/char/ipmi/Kconfig"
++
++source "drivers/char/watchdog/Kconfig"
++
++config DS1620
++ tristate "NetWinder thermometer support"
++ depends on ARCH_NETWINDER
++ help
++ Say Y here to include support for the thermal management hardware
++ found in the NetWinder. This driver allows the user to control the
++ temperature set points and to read the current temperature.
++
++ It is also possible to say M here to build it as a module (ds1620)
++ It is recommended to be used on a NetWinder, but it is not a
++ necessity.
++
++config NWBUTTON
++ tristate "NetWinder Button"
++ depends on ARCH_NETWINDER
++ ---help---
++ If you say Y here and create a character device node /dev/nwbutton
++ with major and minor numbers 10 and 158 ("man mknod"), then every
++ time the orange button is pressed a number of times, the number of
++ times the button was pressed will be written to that device.
++
++ This is most useful for applications, as yet unwritten, which
++ perform actions based on how many times the button is pressed in a
++ row.
++
++ Do not hold the button down for too long, as the driver does not
++ alter the behaviour of the hardware reset circuitry attached to the
++ button; it will still execute a hard reset if the button is held
++ down for longer than approximately five seconds.
++
++ To compile this driver as a module, choose M here: the
++ module will be called nwbutton.
++
++ Most people will answer Y to this question and "Reboot Using Button"
++ below to be able to initiate a system shutdown from the button.
++
++config NWBUTTON_REBOOT
++ bool "Reboot Using Button"
++ depends on NWBUTTON
++ help
++ If you say Y here, then you will be able to initiate a system
++ shutdown and reboot by pressing the orange button a number of times.
++ The number of presses to initiate the shutdown is two by default,
++ but this can be altered by modifying the value of NUM_PRESSES_REBOOT
++ in nwbutton.h and recompiling the driver or, if you compile the
++ driver as a module, you can specify the number of presses at load
++ time with "insmod button reboot_count=<something>".
++
++config NWFLASH
++ tristate "NetWinder flash support"
++ depends on ARCH_NETWINDER
++ ---help---
++ If you say Y here and create a character device /dev/flash with
++ major 10 and minor 160 you can manipulate the flash ROM containing
++ the NetWinder firmware. Be careful as accidentally overwriting the
++ flash contents can render your computer unbootable. On no account
++ allow random users access to this device. :-)
++
++ To compile this driver as a module, choose M here: the
++ module will be called nwflash.
++
++ If you're not sure, say N.
++
++config HW_RANDOM
++ tristate "Intel/AMD/VIA HW Random Number Generator support"
++ depends on (X86 || IA64) && PCI
++ ---help---
++ This driver provides kernel-side support for the Random Number
++ Generator hardware found on Intel i8xx-based motherboards,
++ AMD 76x-based motherboards, and Via Nehemiah CPUs.
++
++ Provides a character driver, used to read() entropy data.
++
++ To compile this driver as a module, choose M here: the
++ module will be called hw_random.
++
++ If unsure, say N.
++
++config NVRAM
++ tristate "/dev/nvram support"
++ depends on ATARI || X86 || ARM || GENERIC_NVRAM
++ ---help---
++ If you say Y here and create a character special file /dev/nvram
++ with major number 10 and minor number 144 using mknod ("man mknod"),
++ you get read and write access to the extra bytes of non-volatile
++ memory in the real time clock (RTC), which is contained in every PC
++ and most Ataris. The actual number of bytes varies, depending on the
++ nvram in the system, but is usually 114 (128-14 for the RTC).
++
++ This memory is conventionally called "CMOS RAM" on PCs and "NVRAM"
++ on Ataris. /dev/nvram may be used to view settings there, or to
++ change them (with some utility). It could also be used to frequently
++ save a few bits of very important data that may not be lost over
++ power-off and for which writing to disk is too insecure. Note
++ however that most NVRAM space in a PC belongs to the BIOS and you
++ should NEVER idly tamper with it. See Ralf Brown's interrupt list
++ for a guide to the use of CMOS bytes by your BIOS.
++
++ On Atari machines, /dev/nvram is always configured and does not need
++ to be selected.
++
++ To compile this driver as a module, choose M here: the
++ module will be called nvram.
++
++config RTC
++ tristate "Enhanced Real Time Clock Support"
++ depends on !PPC32 && !PARISC && !IA64 && !M68K && (!SPARC || PCI)
++ ---help---
++ If you say Y here and create a character special file /dev/rtc with
++ major number 10 and minor number 135 using mknod ("man mknod"), you
++ will get access to the real time clock (or hardware clock) built
++ into your computer.
++
++ Every PC has such a clock built in. It can be used to generate
++ signals from as low as 1Hz up to 8192Hz, and can also be used
++ as a 24 hour alarm. It reports status information via the file
++ /proc/driver/rtc and its behaviour is set by various ioctls on
++ /dev/rtc.
++
++ If you run Linux on a multiprocessor machine and said Y to
++ "Symmetric Multi Processing" above, you should say Y here to read
++ and set the RTC in an SMP compatible fashion.
++
++ If you think you have a use for such a device (such as periodic data
++ sampling), then say Y here, and read <file:Documentation/rtc.txt>
++ for details.
++
++ To compile this driver as a module, choose M here: the
++ module will be called rtc.
++
++config SGI_DS1286
++ tristate "SGI DS1286 RTC support"
++ depends on SGI_IP22
++ help
++ If you say Y here and create a character special file /dev/rtc with
++ major number 10 and minor number 135 using mknod ("man mknod"), you
++ will get access to the real time clock built into your computer.
++ Every SGI has such a clock built in. It reports status information
++ via the file /proc/rtc and its behaviour is set by various ioctls on
++ /dev/rtc.
++
++config SGI_IP27_RTC
++ bool "SGI M48T35 RTC support"
++ depends on SGI_IP27
++ help
++ If you say Y here and create a character special file /dev/rtc with
++ major number 10 and minor number 135 using mknod ("man mknod"), you
++ will get access to the real time clock built into your computer.
++ Every SGI has such a clock built in. It reports status information
++ via the file /proc/rtc and its behaviour is set by various ioctls on
++ /dev/rtc.
++
++config GEN_RTC
++ tristate "Generic /dev/rtc emulation"
++ depends on RTC!=y && !IA64 && !ARM && !M32R && !SPARC
++ ---help---
++ If you say Y here and create a character special file /dev/rtc with
++ major number 10 and minor number 135 using mknod ("man mknod"), you
++ will get access to the real time clock (or hardware clock) built
++ into your computer.
++
++ It reports status information via the file /proc/driver/rtc and its
++ behaviour is set by various ioctls on /dev/rtc. If you enable the
++ "extended RTC operation" below it will also provide an emulation
++ for RTC_UIE which is required by some programs and may improve
++ precision in some cases.
++
++ To compile this driver as a module, choose M here: the
++ module will be called genrtc.
++
++config GEN_RTC_X
++ bool "Extended RTC operation"
++ depends on GEN_RTC
++ help
++ Provides an emulation for RTC_UIE which is required by some programs
++ and may improve precision of the generic RTC support in some cases.
++
++config EFI_RTC
++ bool "EFI Real Time Clock Services"
++ depends on IA64
++
++config DS1302
++ tristate "DS1302 RTC support"
++ depends on M32R && (PLAT_M32700UT || PLAT_OPSPUT)
++ help
++ If you say Y here and create a character special file /dev/rtc with
++ major number 121 and minor number 0 using mknod ("man mknod"), you
++ will get access to the real time clock (or hardware clock) built
++ into your computer.
++
++config S3C2410_RTC
++ bool "S3C2410 RTC Driver"
++ depends on ARCH_S3C2410
++ help
++ RTC (Realtime Clock) driver for the clock inbuilt into the
++ Samsung S3C2410. This can provide periodic interrupt rates
++ from 1Hz to 64Hz for user programs, and wakeup from Alarm.
++
++config RTC_VR41XX
++ tristate "NEC VR4100 series Real Time Clock Support"
++ depends on CPU_VR41XX
++
++config COBALT_LCD
++ bool "Support for Cobalt LCD"
++ depends on MIPS_COBALT
++ help
++ This option enables support for the LCD display and buttons found
++ on Cobalt systems through a misc device.
++
++config DTLK
++ tristate "Double Talk PC internal speech card support"
++ help
++ This driver is for the DoubleTalk PC, a speech synthesizer
++ manufactured by RC Systems (<http://www.rcsys.com/>). It is also
++ called the `internal DoubleTalk'.
++
++ To compile this driver as a module, choose M here: the
++ module will be called dtlk.
++
++config R3964
++ tristate "Siemens R3964 line discipline"
++ ---help---
++ This driver allows synchronous communication with devices using the
++ Siemens R3964 packet protocol. Unless you are dealing with special
++ hardware like PLCs, you are unlikely to need this.
++
++ To compile this driver as a module, choose M here: the
++ module will be called n_r3964.
++
++ If unsure, say N.
++
++config APPLICOM
++ tristate "Applicom intelligent fieldbus card support"
++ depends on PCI
++ ---help---
++ This driver provides the kernel-side support for the intelligent
++ fieldbus cards made by Applicom International. More information
++ about these cards can be found on the WWW at the address
++ <http://www.applicom-int.com/>, or by email from David Woodhouse
++ <dwmw2@infradead.org>.
++
++ To compile this driver as a module, choose M here: the
++ module will be called applicom.
++
++ If unsure, say N.
++
++config SONYPI
++ tristate "Sony Vaio Programmable I/O Control Device support (EXPERIMENTAL)"
++ depends on EXPERIMENTAL && X86 && PCI && INPUT && !64BIT
++ ---help---
++ This driver enables access to the Sony Programmable I/O Control
++ Device which can be found in many (all ?) Sony Vaio laptops.
++
++ If you have one of those laptops, read
++ <file:Documentation/sonypi.txt>, and say Y or M here.
++
++ To compile this driver as a module, choose M here: the
++ module will be called sonypi.
++
++config TANBAC_TB0219
++ tristate "TANBAC TB0219 base board support"
++ depends TANBAC_TB022X
++
++menu "Ftape, the floppy tape device driver"
++
++config FTAPE
++ tristate "Ftape (QIC-80/Travan) support"
++ depends on BROKEN_ON_SMP && (ALPHA || X86)
++ ---help---
++ If you have a tape drive that is connected to your floppy
++ controller, say Y here.
++
++ Some tape drives (like the Seagate "Tape Store 3200" or the Iomega
++ "Ditto 3200" or the Exabyte "Eagle TR-3") come with a "high speed"
++ controller of their own. These drives (and their companion
++ controllers) are also supported if you say Y here.
++
++ If you have a special controller (such as the CMS FC-10, FC-20,
++ Mountain Mach-II, or any controller that is based on the Intel 82078
++ FDC like the high speed controllers by Seagate and Exabyte and
++ Iomega's "Ditto Dash") you must configure it by selecting the
++ appropriate entries from the "Floppy tape controllers" sub-menu
++ below and possibly modify the default values for the IRQ and DMA
++ channel and the IO base in ftape's configuration menu.
++
++ If you want to use your floppy tape drive on a PCI-bus based system,
++ please read the file <file:drivers/char/ftape/README.PCI>.
++
++ The ftape kernel driver is also available as a runtime loadable
++ module. To compile this driver as a module, choose M here: the
++ module will be called ftape.
++
++ Note that the Ftape-HOWTO is out of date (sorry) and documents the
++ older version 2.08 of this software but still contains useful
++ information. There is a web page with more recent documentation at
++ <http://www.instmath.rwth-aachen.de/~heine/ftape/>. This page
++ always contains the latest release of the ftape driver and useful
++ information (backup software, ftape related patches and
++ documentation, FAQ). Note that the file system interface has
++ changed quite a bit compared to previous versions of ftape. Please
++ read <file:Documentation/ftape.txt>.
++
++source "drivers/char/ftape/Kconfig"
++
++endmenu
++
++source "drivers/char/agp/Kconfig"
++
++source "drivers/char/drm/Kconfig"
++
++source "drivers/char/pcmcia/Kconfig"
++
++config MWAVE
++ tristate "ACP Modem (Mwave) support"
++ depends on X86
++ select SERIAL_8250
++ ---help---
++ The ACP modem (Mwave) for Linux is a WinModem. It is composed of a
++ kernel driver and a user level application. Together these components
++ support direct attachment to public switched telephone networks (PSTNs)
++ and support selected world wide countries.
++
++ This version of the ACP Modem driver supports the IBM Thinkpad 600E,
++ 600, and 770 that include on board ACP modem hardware.
++
++ The modem also supports the standard communications port interface
++ (ttySx) and is compatible with the Hayes AT Command Set.
++
++ The user level application needed to use this driver can be found at
++ the IBM Linux Technology Center (LTC) web site:
++ <http://www.ibm.com/linux/ltc/>.
++
++ If you own one of the above IBM Thinkpads which has the Mwave chipset
++ in it, say Y.
++
++ To compile this driver as a module, choose M here: the
++ module will be called mwave.
++
++config SCx200_GPIO
++ tristate "NatSemi SCx200 GPIO Support"
++ depends on SCx200
++ help
++ Give userspace access to the GPIO pins on the National
++ Semiconductor SCx200 processors.
++
++ If compiled as a module, it will be called scx200_gpio.
++
++config GPIO_VR41XX
++ tristate "NEC VR4100 series General-purpose I/O Unit support"
++ depends on CPU_VR41XX
++
++config RAW_DRIVER
++ tristate "RAW driver (/dev/raw/rawN) (OBSOLETE)"
++ help
++ The raw driver permits block devices to be bound to /dev/raw/rawN.
++ Once bound, I/O against /dev/raw/rawN uses efficient zero-copy I/O.
++ See the raw(8) manpage for more details.
++
++ The raw driver is deprecated and will be removed soon.
++ Applications should simply open the device (eg /dev/hda1)
++ with the O_DIRECT flag.
++
++config MAX_RAW_DEVS
++ int "Maximum number of RAW devices to support (1-8192)"
++ depends on RAW_DRIVER
++ default "256"
++ help
++ The maximum number of RAW devices that are supported.
++ Default is 256. Increase this number in case you need lots of
++ raw devices.
++
++config HPET
++ bool "HPET - High Precision Event Timer" if (X86 || IA64)
++ default n
++ depends on ACPI
++ help
++ If you say Y here, you will have a miscdevice named "/dev/hpet/". Each
++ open selects one of the timers supported by the HPET. The timers are
++ non-periodioc and/or periodic.
++
++config HPET_RTC_IRQ
++ bool "HPET Control RTC IRQ" if !HPET_EMULATE_RTC
++ default n
++ depends on HPET
++ help
++ If you say Y here, you will disable RTC_IRQ in drivers/char/rtc.c. It
++ is assumed the platform called hpet_alloc with the RTC IRQ values for
++ the HPET timers.
++
++config HPET_MMAP
++ bool "Allow mmap of HPET"
++ default y
++ depends on HPET
++ help
++ If you say Y here, user applications will be able to mmap
++ the HPET registers.
++
++ In some hardware implementations, the page containing HPET
++ registers may also contain other things that shouldn't be
++ exposed to the user. If this applies to your hardware,
++ say N here.
++
++config HANGCHECK_TIMER
++ tristate "Hangcheck timer"
++ depends on X86 || IA64 || PPC64 || ARCH_S390
++ help
++ The hangcheck-timer module detects when the system has gone
++ out to lunch past a certain margin. It can reboot the system
++ or merely print a warning.
++
++config MMTIMER
++ tristate "MMTIMER Memory mapped RTC for SGI Altix"
++ depends on IA64_GENERIC || IA64_SGI_SN2
++ default y
++ help
++ The mmtimer device allows direct userspace access to the
++ Altix system timer.
++
++source "drivers/char/tpm/Kconfig"
++
++config TELCLOCK
++ tristate "Telecom clock driver for MPBL0010 ATCA SBC"
++ depends on EXPERIMENTAL
++ default n
++ help
++ The telecom clock device is specific to the MPBL0010 ATCA computer and
++ allows direct userspace access to the configuration of the telecom clock
++ configuration settings. This device is used for hardware synchronization
++ across the ATCA backplane fabric. Upon loading, the driver exports a
++ sysfs directory, /sys/devices/platform/telco_clock, with a number of
++ files for controlling the behavior of this hardware.
++
++endmenu
++
+diff -urN oldtree/include/linux/vt.h newtree/include/linux/vt.h
+--- oldtree/include/linux/vt.h 2006-03-27 13:28:15.000000000 -0500
++++ newtree/include/linux/vt.h 2006-03-28 10:37:24.211121750 -0500
+@@ -10,8 +10,19 @@
+ * resizing).
+ */
+ #define MIN_NR_CONSOLES 1 /* must be at least 1 */
+-#define MAX_NR_CONSOLES 63 /* serial lines start at 64 */
+-#define MAX_NR_USER_CONSOLES 63 /* must be root to allocate above this */
++#if (CONFIG_NR_TTY_DEVICES < 11)
++/* Lower Limit */
++#define MAX_NR_CONSOLES 11
++#define MAX_NR_USER_CONSOLES 11
++#elif (CONFIG_NR_TTY_DEVICES > 63)
++/* Upper Limit */
++#define MAX_NR_CONSOLES 63
++#define MAX_NR_USER_CONSOLES 63
++#else
++/* They chose a sensible number */
++#define MAX_NR_CONSOLES CONFIG_NR_TTY_DEVICES
++#define MAX_NR_USER_CONSOLES CONFIG_NR_TTY_DEVICES
++#endif
+ /* Note: the ioctl VT_GETSTATE does not work for
+ consoles 16 and higher (since it returns a short) */
+
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/defconfig-logicpd-pxa270 b/packages/linux/logicpd-pxa270-2.6.19.2/defconfig-logicpd-pxa270
new file mode 100644
index 0000000000..20ca536446
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/defconfig-logicpd-pxa270
@@ -0,0 +1,1444 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19.2
+# Tue Jan 30 21:59:05 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+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_ARCH_MTD_XIP=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_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+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 is not set
+# 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=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_BLK_DEV_IO_TRACE 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"
+
+#
+# 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 is not set
+# 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=y
+# 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
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+CONFIG_MACH_LOGICPD_PXA270=y
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA27x=y
+# CONFIG_PXA_KEYS is not set
+CONFIG_IWMMXT=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 is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mem=64M "
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+# CONFIG_KEXEC 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=y
+
+#
+# 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_SYSFS_DEPRECATED is not set
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_NETDEBUG=y
+# CONFIG_PACKET is not set
+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=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_MULTIPLE_TABLES is not set
+# CONFIG_IP_ROUTE_MULTIPATH is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP 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 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"
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=y
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_INET6_AH=y
+CONFIG_INET6_ESP=y
+CONFIG_INET6_IPCOMP=y
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=y
+CONFIG_INET6_TUNNEL=y
+CONFIG_INET6_XFRM_MODE_TRANSPORT=y
+CONFIG_INET6_XFRM_MODE_TUNNEL=y
+CONFIG_INET6_XFRM_MODE_BEET=y
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=y
+CONFIG_IPV6_TUNNEL=y
+# 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_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_IP_NF_CONNTRACK is not set
+# 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
+
+#
+# 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 is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=y
+# CONFIG_BT_HCIUSB_SCO is not set
+# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=y
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=y
+# CONFIG_IEEE80211_CRYPT_CCMP is not set
+CONFIG_IEEE80211_SOFTMAC=y
+# 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 is not set
+# CONFIG_DEBUG_DRIVER is not set
+# 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=y
+CONFIG_MTD_DEBUG_VERBOSE=0
+# CONFIG_MTD_CONCAT is not set
+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 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+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 is not set
+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
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_LOGICPD_PXA270=y
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL 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
+
+#
+# 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_DEV_LOGICPD_CF=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+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_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDECD is not set
+# 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 is not set
+# CONFIG_IDE_ARM 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_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+# CONFIG_BLK_DEV_SD is not set
+# 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
+
+#
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# 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
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
+# CONFIG_SMC911X is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS 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=y
+# CONFIG_INPUT_EVBUG is not set
+# CONFIG_INPUT_POWER 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_KEYBOARD_STOWAWAY is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_UCB1400=y
+CONFIG_TOUCHSCREEN_UCB1400=m
+# 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_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+CONFIG_SERIO_LIBPS2=y
+CONFIG_SERIO_RAW=y
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_NR_TTY_DEVICES=11
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+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_SA1100_WATCHDOG=y
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM 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_ABITUGURU is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+# CONFIG_LEDS_TRIGGERS is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+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_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_LCD_QVGA is not set
+# CONFIG_FB_PXA_LCD_VGA is not set
+# CONFIG_FB_PXA_LPD_LQ64D343 is not set
+# CONFIG_FB_PXA_LPD_LQ035Q7DB02 is not set
+# CONFIG_FB_PXA_LPD_LQ057Q3DC02 is not set
+# CONFIG_FB_PXA_LPD_LQ10D368 is not set
+CONFIG_FB_PXA_LPD_OSD024TTEA2=y
+# CONFIG_FB_PXA_OVERLAY is not set
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX 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 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+# CONFIG_SND_MIXER_OSS is not set
+CONFIG_SND_PCM_OSS=y
+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_AC97_CODEC=y
+CONFIG_SND_AC97_BUS=y
+# 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
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=y
+CONFIG_SND_PXA2XX_AC97=y
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# 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 is not set
+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_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=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_STORAGE_KARMA is not set
+CONFIG_USB_LIBUSUAL=y
+
+#
+# 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_TOUCHSCREEN 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 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=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 is not set
+CONFIG_USB_NET_RNDIS_HOST=m
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=y
+# CONFIG_USB_SERIAL_CONSOLE is not set
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP2101 is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=y
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# 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_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_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_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=m
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+CONFIG_USB_FILE_STORAGE_TEST=y
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_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_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# 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=y
+CONFIG_FS_XIP=y
+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 is not set
+# 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 is not set
+# 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=y
+
+#
+# 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_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_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
+# 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
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS 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_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC 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 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+# 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_ECB=y
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_DES=y
+# 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=y
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/input_power-r6.patch b/packages/linux/logicpd-pxa270-2.6.19.2/input_power-r6.patch
new file mode 100644
index 0000000000..c0dd9125fc
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/input_power-r6.patch
@@ -0,0 +1,222 @@
+ drivers/input/Kconfig | 15 ++++
+ drivers/input/power.c | 152 ++++++++++++++++++++++++++++++++++----------------
+ 2 files changed, 121 insertions(+), 46 deletions(-)
+
+Index: git/drivers/input/power.c
+===================================================================
+--- git.orig/drivers/input/power.c 2006-10-31 16:31:03.000000000 +0000
++++ git/drivers/input/power.c 2006-10-31 17:38:34.000000000 +0000
+@@ -2,6 +2,7 @@
+ * $Id: power.c,v 1.10 2001/09/25 09:17:15 vojtech Exp $
+ *
+ * Copyright (c) 2001 "Crazy" James Simmons
++ * Copyright (c) 2005 Dmitry Torokhov
+ *
+ * Input driver Power Management.
+ *
+@@ -34,66 +35,125 @@
+ #include <linux/tty.h>
+ #include <linux/delay.h>
+ #include <linux/pm.h>
++#ifdef CONFIG_ACPI
++#include <linux/acpi.h>
++#endif
++#ifdef CONFIG_APM
++#if defined(CONFIG_ARM) && !defined(CONFIG_ARM26)
++#include <asm/apm.h>
++#endif
++#endif
++
+
+ static struct input_handler power_handler;
++//static long suspend_time_pressed;
++//static DEFINE_SPINLOCK(suspend_time_lock);
+
+-/*
+- * Power management can't be done in a interrupt context. So we have to
+- * use keventd.
+- */
+-static int suspend_button_pushed = 0;
+-static void suspend_button_task_handler(void *data)
++#ifdef CONFIG_ACPI
++/* FIXME: This should be in ACPI */
++static void acpi_queue_event(int suspend)
+ {
+- udelay(200); /* debounce */
+- suspend_button_pushed = 0;
+-}
++ struct acpi_device dev;
+
+-static DECLARE_WORK(suspend_button_task, suspend_button_task_handler, NULL);
++ sprintf(acpi_device_name(&dev), "%s", suspend ? "KEY_SUSPEND" : "KEY_POWER");
++ sprintf(acpi_device_class(&dev), "button/%s", suspend ? "sleep" : "power");
++ acpi_bus_generate_event(&dev, 1, 1);
++}
++#endif
+
+-static void power_event(struct input_handle *handle, unsigned int type,
+- unsigned int code, int down)
++static void system_power_event(unsigned int keycode)
+ {
+- struct input_dev *dev = handle->dev;
++// unsigned long flags;
+
+- printk("Entering power_event\n");
++ switch (keycode) {
++ case KEY_SUSPEND:
+
+- if (type == EV_PWR) {
+- switch (code) {
+- case KEY_SUSPEND:
+- printk("Powering down entire device\n");
++ /* ignore jitter */
++ // spin_lock_irqsave(&suspend_time_lock, flags);
++ // if (time_before(jiffies, suspend_time_pressed + msecs_to_jiffies(200))) {
++ // spin_unlock_irqrestore(&suspend_time_lock, flags);
++ // break;
++ // }
++ // suspend_time_pressed = jiffies;
++ // spin_unlock_irqrestore(&suspend_time_lock, flags);
+
+- if (!suspend_button_pushed) {
+- suspend_button_pushed = 1;
+- schedule_work(&suspend_button_task);
+- }
++ // if (!PM_IS_ACTIVE()) {
++ // printk(KERN_INFO "power: PM is not active, ignoring suspend request\n");
++ // break;
++ // }
++
++ printk(KERN_INFO "power: requesting system suspend...\n");
++#ifdef CONFIG_ACPI
++ if (!acpi_disabled) {
++ acpi_queue_event(1);
+ break;
+- case KEY_POWER:
+- /* Hum power down the machine. */
++ }
++#endif
++
++#ifdef CONFIG_APM
++#if defined(CONFIG_ARM) && !defined(CONFIG_ARM26)
++ /* only ARM has apm_queue_event */
++ apm_queue_event(APM_USER_SUSPEND);
++#endif
++#endif
++ break;
++
++ case KEY_POWER:
++
++ // if (!PM_IS_ACTIVE()) {
++ // printk(KERN_INFO "power: PM is not active, ignoring shutdown request\n");
++ // break;
++ // }
++#ifdef CONFIG_ACPI
++ if (!acpi_disabled) {
++ printk(KERN_INFO "power: requesting system shutdown...\n");
++ acpi_queue_event(0);
+ break;
+- default:
+- return;
+- }
++ }
++#endif
++
++#ifdef CONFIG_APM
++ printk(KERN_INFO "power: shutdown via APM is not supported...\n");
++#endif
++ break;
++
++ default:
++ break;
+ }
++}
+
+- if (type == EV_KEY) {
+- switch (code) {
+- case KEY_SUSPEND:
+- printk("Powering down input device\n");
+- /* This is risky. See pm.h for details. */
+- if (dev->state != PM_RESUME)
+- dev->state = PM_RESUME;
+- else
+- dev->state = PM_SUSPEND;
+- pm_send(dev->pm_dev, dev->state, dev);
+- break;
+- case KEY_POWER:
+- /* Turn the input device off completely ? */
+- break;
+- default:
+- return;
+- }
++static void device_power_event(struct input_device *dev, unsigned int keycode)
++{
++ switch (keycode) {
++ case KEY_SUSPEND:
++ case KEY_POWER:
++ printk(KERN_DEBUG "power.c: device-level power management is not supported yet\n");
++ break;
++
++ default:
++ break;
++ }
++}
++
++static void power_event(struct input_handle *handle, unsigned int type,
++ unsigned int code, int value)
++{
++ /* only react on key down events */
++ if (value != 1)
++ return;
++
++ switch (type) {
++ case EV_PWR:
++ system_power_event(code);
++ break;
++
++ case EV_KEY:
++ device_power_event(handle->dev, code);
++ break;
++
++ default:
++ break;
+ }
+- return;
+ }
+
+ static struct input_handle *power_connect(struct input_handler *handler,
+@@ -107,7 +167,7 @@ static struct input_handle *power_connec
+
+ handle->dev = dev;
+ handle->handler = handler;
+-
++ handle->name = "power";
+ input_open_device(handle);
+
+ printk(KERN_INFO "power.c: Adding power management to input layer\n");
+Index: git/drivers/input/Kconfig
+===================================================================
+--- git.orig/drivers/input/Kconfig 2006-10-31 16:31:03.000000000 +0000
++++ git/drivers/input/Kconfig 2006-10-31 16:31:07.000000000 +0000
+@@ -144,6 +144,21 @@ config INPUT_EVBUG
+
+ To compile this driver as a module, choose M here: the
+ module will be called evbug.
++
++config INPUT_POWER
++ tristate "Power management interface"
++ depends on INPUT
++ ---help---
++ Say Y here if you have an input device (keyboard) that has
++ sleep/power keys and you would like use these keys to
++ initiate power management operations. Note that on many
++ machines power and sleep keys are not part of the input
++ system and only accessible when using ACPI button driver.
++
++ If unsure, say N.
++
++ To compile this driver as a module, choose M here: the
++ module will be called power.
+
+ comment "Input Device Drivers"
+
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/kexec-arm-r3.patch b/packages/linux/logicpd-pxa270-2.6.19.2/kexec-arm-r3.patch
new file mode 100644
index 0000000000..e107f6de4a
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/kexec-arm-r3.patch
@@ -0,0 +1,275 @@
+Index: linux-2.6.17/arch/arm/Kconfig
+===================================================================
+--- linux-2.6.17.orig/arch/arm/Kconfig 2006-06-20 13:22:58.163642800 +0200
++++ linux-2.6.17/arch/arm/Kconfig 2006-06-20 13:22:59.596424984 +0200
+@@ -326,6 +326,23 @@
+ depends on CPU_XSCALE && !XSCALE_PMU_TIMER
+ default y
+
++config KEXEC
++ bool "Kexec system call (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ kexec is a system call that implements the ability to shutdown your
++ current kernel, and to start another kernel. It is like a reboot
++ but it is indepedent of the system firmware. And like a reboot
++ you can start any kernel with it, not just Linux.
++
++ The name comes from the similiarity to the exec system call.
++
++ It is an ongoing process to be certain the hardware in a machine
++ is properly shutdown, so do not be surprised if this code does not
++ initially work for you. It may help to enable device hotplugging
++ support. As of this writing the exact hardware interface is
++ strongly in flux, so no good recommendation can be made.
++
+ endmenu
+
+ source "arch/arm/common/Kconfig"
+Index: linux-2.6.17/arch/arm/kernel/calls.S
+===================================================================
+--- linux-2.6.17.orig/arch/arm/kernel/calls.S 2006-06-20 13:22:50.813760152 +0200
++++ linux-2.6.17/arch/arm/kernel/calls.S 2006-06-20 13:22:59.596424984 +0200
+@@ -198,7 +198,7 @@
+ CALL(sys_sigaltstack_wrapper)
+ CALL(sys_sendfile)
+ CALL(sys_ni_syscall)
+- CALL(sys_ni_syscall)
++ CALL(sys_kexec_load)
+ /* 190 */ CALL(sys_vfork_wrapper)
+ CALL(sys_getrlimit)
+ CALL(sys_mmap2)
+Index: linux-2.6.17/arch/arm/kernel/machine_kexec.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17/arch/arm/kernel/machine_kexec.c 2006-06-23 11:21:58.195936184 +0200
+@@ -0,0 +1,78 @@
++/*
++ * machine_kexec.c - handle transition of Linux booting another kernel
++ */
++
++#include <linux/mm.h>
++#include <linux/kexec.h>
++#include <linux/delay.h>
++#include <linux/reboot.h>
++#include <asm/pgtable.h>
++#include <asm/pgalloc.h>
++#include <asm/mmu_context.h>
++#include <asm/io.h>
++#include <asm/cacheflush.h>
++#include <asm/mach-types.h>
++
++const extern unsigned char relocate_new_kernel[];
++const extern unsigned int relocate_new_kernel_size;
++
++extern void setup_mm_for_reboot(char mode);
++
++extern unsigned long kexec_start_address;
++extern unsigned long kexec_indirection_page;
++extern unsigned long kexec_mach_type;
++
++/*
++ * Provide a dummy crash_notes definition while crash dump arrives to arm.
++ * This prevents breakage of crash_notes attribute in kernel/ksysfs.c.
++ */
++
++int machine_kexec_prepare(struct kimage *image)
++{
++ return 0;
++}
++
++void machine_kexec_cleanup(struct kimage *image)
++{
++}
++
++void machine_shutdown(void)
++{
++}
++
++void machine_crash_shutdown(struct pt_regs *regs)
++{
++}
++
++void machine_kexec(struct kimage *image)
++{
++ unsigned long page_list;
++ unsigned long reboot_code_buffer_phys;
++ void *reboot_code_buffer;
++
++
++ page_list = image->head & PAGE_MASK;
++
++ /* we need both effective and real address here */
++ reboot_code_buffer_phys =
++ page_to_pfn(image->control_code_page) << PAGE_SHIFT;
++ reboot_code_buffer = page_address(image->control_code_page);
++
++ /* Prepare parameters for reboot_code_buffer*/
++ kexec_start_address = image->start;
++ kexec_indirection_page = page_list;
++ kexec_mach_type = machine_arch_type;
++
++ /* copy our kernel relocation code to the control code page */
++ memcpy(reboot_code_buffer,
++ relocate_new_kernel, relocate_new_kernel_size);
++
++
++ flush_icache_range((unsigned long) reboot_code_buffer,
++ (unsigned long) reboot_code_buffer + KEXEC_CONTROL_CODE_SIZE);
++ printk(KERN_INFO "Bye!\n");
++
++ cpu_proc_fin();
++ setup_mm_for_reboot(0); /* mode is not used, so just pass 0*/
++ cpu_reset(reboot_code_buffer_phys);
++}
+Index: linux-2.6.17/arch/arm/kernel/Makefile
+===================================================================
+--- linux-2.6.17.orig/arch/arm/kernel/Makefile 2006-06-20 13:22:50.814760000 +0200
++++ linux-2.6.17/arch/arm/kernel/Makefile 2006-06-20 13:22:59.597424832 +0200
+@@ -20,6 +20,7 @@
+ obj-$(CONFIG_ISA_DMA) += dma-isa.o
+ obj-$(CONFIG_PCI) += bios32.o
+ obj-$(CONFIG_SMP) += smp.o
++obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o
+ obj-$(CONFIG_OABI_COMPAT) += sys_oabi-compat.o
+
+ obj-$(CONFIG_IWMMXT) += iwmmxt.o
+Index: linux-2.6.17/arch/arm/kernel/relocate_kernel.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17/arch/arm/kernel/relocate_kernel.S 2006-06-20 13:22:59.597424832 +0200
+@@ -0,0 +1,74 @@
++/*
++ * relocate_kernel.S - put the kernel image in place to boot
++ */
++
++#include <asm/kexec.h>
++
++ .globl relocate_new_kernel
++relocate_new_kernel:
++
++ ldr r0,kexec_indirection_page
++ ldr r1,kexec_start_address
++
++
++0: /* top, read another word for the indirection page */
++ ldr r3, [r0],#4
++
++ /* Is it a destination page. Put destination address to r4 */
++ tst r3,#1,0
++ beq 1f
++ bic r4,r3,#1
++ b 0b
++1:
++ /* Is it an indirection page */
++ tst r3,#2,0
++ beq 1f
++ bic r0,r3,#2
++ b 0b
++1:
++
++ /* are we done ? */
++ tst r3,#4,0
++ beq 1f
++ b 2f
++
++1:
++ /* is it source ? */
++ tst r3,#8,0
++ beq 0b
++ bic r3,r3,#8
++ mov r6,#1024
++9:
++ ldr r5,[r3],#4
++ str r5,[r4],#4
++ subs r6,r6,#1
++ bne 9b
++ b 0b
++
++2:
++ /* Jump to relocated kernel */
++ mov lr,r1
++ mov r0,#0
++ ldr r1,kexec_mach_type
++ mov r2,#0
++ mov pc,lr
++
++ .globl kexec_start_address
++kexec_start_address:
++ .long 0x0
++
++ .globl kexec_indirection_page
++kexec_indirection_page:
++ .long 0x0
++
++ .globl kexec_mach_type
++kexec_mach_type:
++ .long 0x0
++
++relocate_new_kernel_end:
++
++ .globl relocate_new_kernel_size
++relocate_new_kernel_size:
++ .long relocate_new_kernel_end - relocate_new_kernel
++
++
+Index: linux-2.6.17/include/asm-arm/kexec.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17/include/asm-arm/kexec.h 2006-06-20 13:22:59.598424680 +0200
+@@ -0,0 +1,30 @@
++#ifndef _ARM_KEXEC_H
++#define _ARM_KEXEC_H
++
++#ifdef CONFIG_KEXEC
++
++/* Maximum physical address we can use pages from */
++#define KEXEC_SOURCE_MEMORY_LIMIT (-1UL)
++/* Maximum address we can reach in physical address mode */
++#define KEXEC_DESTINATION_MEMORY_LIMIT (-1UL)
++/* Maximum address we can use for the control code buffer */
++#define KEXEC_CONTROL_MEMORY_LIMIT TASK_SIZE
++
++#define KEXEC_CONTROL_CODE_SIZE 4096
++
++#define KEXEC_ARCH KEXEC_ARCH_ARM
++
++#ifndef __ASSEMBLY__
++
++#define MAX_NOTE_BYTES 1024
++
++struct kimage;
++/* Provide a dummy definition to avoid build failures. */
++static inline void crash_setup_regs(struct pt_regs *newregs,
++ struct pt_regs *oldregs) { }
++
++#endif /* __ASSEMBLY__ */
++
++#endif /* CONFIG_KEXEC */
++
++#endif /* _ARM_KEXEC_H */
+Index: linux-2.6.17/include/asm-arm/unistd.h
+===================================================================
+--- linux-2.6.17.orig/include/asm-arm/unistd.h 2006-06-20 13:22:50.815759848 +0200
++++ linux-2.6.17/include/asm-arm/unistd.h 2006-06-20 13:22:59.598424680 +0200
+@@ -216,7 +216,7 @@
+ #define __NR_sigaltstack (__NR_SYSCALL_BASE+186)
+ #define __NR_sendfile (__NR_SYSCALL_BASE+187)
+ /* 188 reserved */
+- /* 189 reserved */
++#define __NR_sys_kexec_load (__NR_SYSCALL_BASE+189) /* 189 was reserved, temporarily use it for sys_kexec_load */
+ #define __NR_vfork (__NR_SYSCALL_BASE+190)
+ #define __NR_ugetrlimit (__NR_SYSCALL_BASE+191) /* SuS compliant getrlimit */
+ #define __NR_mmap2 (__NR_SYSCALL_BASE+192)
+Index: linux-2.6.17/include/linux/kexec.h
+===================================================================
+--- linux-2.6.17.orig/include/linux/kexec.h 2006-06-20 13:22:50.815759848 +0200
++++ linux-2.6.17/include/linux/kexec.h 2006-06-20 13:22:59.600424376 +0200
+@@ -119,6 +119,7 @@
+ #define KEXEC_ARCH_PPC (20 << 16)
+ #define KEXEC_ARCH_PPC64 (21 << 16)
+ #define KEXEC_ARCH_IA_64 (50 << 16)
++#define KEXEC_ARCH_ARM (40 << 16)
+ #define KEXEC_ARCH_S390 (22 << 16)
+ #define KEXEC_ARCH_SH (42 << 16)
+
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-cf-hack.patch b/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-cf-hack.patch
new file mode 100644
index 0000000000..ec1256261b
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-cf-hack.patch
@@ -0,0 +1,727 @@
+Index: drivers/block/Kconfig
+===================================================================
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/drivers/block/Kconfig,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -c -3 -p -r1.1.1.1 -r1.2
+*** drivers/block/Kconfig 29 May 2006 00:55:20 -0000 1.1.1.1
+--- drivers/block/Kconfig 1 Jun 2006 17:05:41 -0000 1.2
+***************
+*** 4,9 ****
+--- 4,16 ----
+
+ menu "Block devices"
+
++ config BLK_DEV_LOGICPD_CF
++ bool "LogicPD memory-mapped CompactFlash card support"
++ depends on MACH_LOGICPD_PXA270
++ ---help---
++ If you want to use the memory-mapped comapct flash card on
++ the LogicPD SDK, say Y.
++
+ config BLK_DEV_FD
+ tristate "Normal floppy disk support"
+ depends on ARCH_MAY_HAVE_PC_FDC
+Index: drivers/block/Makefile
+===================================================================
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/drivers/block/Makefile,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -c -3 -p -r1.1.1.1 -r1.2
+*** drivers/block/Makefile 29 May 2006 00:55:20 -0000 1.1.1.1
+--- drivers/block/Makefile 1 Jun 2006 17:05:59 -0000 1.2
+***************
+*** 5,10 ****
+--- 5,12 ----
+ # Rewritten to use lists instead of if-statements.
+ #
+
++ obj-$(CONFIG_BLK_DEV_LOGICPD_CF)+= lpd270-cf.o
++
+ obj-$(CONFIG_MAC_FLOPPY) += swim3.o
+ obj-$(CONFIG_BLK_DEV_FD) += floppy.o
+ obj-$(CONFIG_AMIGA_FLOPPY) += amiflop.o
+Index: drivers/block/lpd270-cf.c
+===================================================================
+RCS file: drivers/block/lpd270-cf.c
+diff -N drivers/block/lpd270-cf.c
+*** /dev/null 1 Jan 1970 00:00:00 -0000
+--- drivers/block/lpd270-cf.c 1 Jun 2006 16:23:35 -0000 1.1
+***************
+*** 0 ****
+--- 1,675 ----
++ /*
++ * Support for LogicPD SDK Memory-mapped CompactFlash interface
++ *
++ * Copyright 2006 Logic Product Development <peterb@logicpd.com>
++ *
++ * This file is subject to the terms and conditions of the GNU General Public
++ * License. See the file COPYING in the main directory of this archive
++ * for more details.
++ */
++
++
++ /* Uncomment the following if you want verbose error reports. */
++ /* #define VERBOSE_ERRORS */
++
++ #include <linux/blkdev.h>
++ #include <linux/errno.h>
++ #include <linux/signal.h>
++ #include <linux/interrupt.h>
++ #include <linux/timer.h>
++ #include <linux/fs.h>
++ #include <linux/kernel.h>
++ #include <linux/genhd.h>
++ #include <linux/slab.h>
++ #include <linux/string.h>
++ #include <linux/ioport.h>
++ #include <linux/mc146818rtc.h> /* CMOS defines */
++ #include <linux/init.h>
++ #include <linux/blkpg.h>
++ #include <linux/hdreg.h>
++
++ #define REALLY_SLOW_IO
++ #include <asm/system.h>
++ #include <asm/io.h>
++ #include <asm/uaccess.h>
++ #include <asm/delay.h>
++
++ #ifdef __arm__
++ #undef HD_IRQ
++ #endif
++ #include <asm/irq.h>
++ #ifdef __arm__
++ #define HD_IRQ IRQ_HARDDISK
++ #endif
++
++ #define DEBUG
++
++ /* Hd controller regster ports */
++
++ #define HD_DATA 0x1f0 /* _CTL when writing */
++ #define HD_ERROR 0x1f1 /* see err-bits */
++ #define HD_NSECTOR 0x1f2 /* nr of sectors to read/write */
++ #define HD_SECTOR 0x1f3 /* starting sector */
++ #define HD_LCYL 0x1f4 /* starting cylinder */
++ #define HD_HCYL 0x1f5 /* high byte of starting cyl */
++ #define HD_CURENT 0x1f6 /* 101dhhhh , d=drive, hhhh=head */
++ #define HD_STATUS 0x1f7 /* see status-bits */
++ #define HD_FEATURE HD_ERROR /* same io address, read=error, write=feature */
++ #define HD_PRECOMP HD_FEATURE /* obsolete use of this port - predates IDE */
++ #define HD_COMMAND HD_STATUS /* same io address, read=status, write=cmd */
++
++ #define HD_CMD 0x3f6 /* used for resets */
++ #define HD_ALTSTATUS 0x3f6 /* same as HD_STATUS but doesn't clear irq */
++
++ /* Bits of HD_STATUS */
++ #define ERR_STAT 0x01
++ #define INDEX_STAT 0x02
++ #define ECC_STAT 0x04 /* Corrected error */
++ #define DRQ_STAT 0x08
++ #define SEEK_STAT 0x10
++ #define SERVICE_STAT SEEK_STAT
++ #define WRERR_STAT 0x20
++ #define READY_STAT 0x40
++ #define BUSY_STAT 0x80
++
++ /* Bits for HD_ERROR */
++ #define MARK_ERR 0x01 /* Bad address mark */
++ #define TRK0_ERR 0x02 /* couldn't find track 0 */
++ #define ABRT_ERR 0x04 /* Command aborted */
++ #define MCR_ERR 0x08 /* media change request */
++ #define ID_ERR 0x10 /* ID field not found */
++ #define MC_ERR 0x20 /* media changed */
++ #define ECC_ERR 0x40 /* Uncorrectable ECC error */
++ #define BBD_ERR 0x80 /* pre-EIDE meaning: block marked bad */
++ #define ICRC_ERR 0x80 /* new meaning: CRC error during transfer */
++
++ static DEFINE_SPINLOCK(hd_lock);
++ static struct request_queue *hd_queue;
++
++ #define MAJOR_NR HD_MAJOR
++ #define QUEUE (hd_queue)
++ #define CURRENT elv_next_request(hd_queue)
++
++ #define TIMEOUT_VALUE (6*HZ)
++ #define HD_DELAY 0
++
++ #define MAX_ERRORS 16 /* Max read/write errors/sector */
++ #define RESET_FREQ 8 /* Reset controller every 8th retry */
++ #define RECAL_FREQ 4 /* Recalibrate every 4th retry */
++ #define MAX_HD 2
++
++ #define STAT_OK (READY_STAT|SEEK_STAT)
++ #define OK_STATUS(s) (((s)&(STAT_OK|(BUSY_STAT|WRERR_STAT|ERR_STAT)))==STAT_OK)
++
++ static int driveno = 0;
++ static int debug = 0;
++
++ // Start of CF registers
++ #define CPLD_ATA_REG_BASE 0x14001800
++ static unsigned char *reg_base;
++
++ static inline unsigned int read_reg(unsigned char *base, unsigned int reg)
++ {
++ volatile unsigned short val;
++
++ if (reg & 1)
++ val = *((volatile unsigned short *)(base + reg - 1)) >> 8;
++ else
++ val = *((volatile unsigned short *)(base + reg));
++
++ if (debug)
++ printk("%s: %02x %04x \n", __FUNCTION__, reg, val);
++
++ return val;
++ }
++
++ static inline void write_reg(unsigned char *base, unsigned int reg, unsigned int val)
++ {
++ if (debug)
++ printk("%s: %02x %04x\n", __FUNCTION__, reg, val);
++ if (reg & 1)
++ *((volatile unsigned short *)(base + reg - 1)) = (val << 8);
++ else
++ *((volatile unsigned short *)(base + reg)) = val;
++ }
++
++ #define CB_DATA 0x08
++ #define CB_ERR 0x0d
++ #define CB_SC_SN 0x02
++ #define CB_CYL 0x04
++ #define CB_STAT 0x07
++ #define CB_DH_CMD 0x06
++ #define CB_ASTAT 0x0e
++ #define CB_DC 0x0e
++ #define CB_DA 0x0f
++
++ #define CB_STAT_BSY 0x80
++ #define CB_STAT_DRQ 0x08
++ #define CB_STAT_SEEK 0x10
++ #define CB_STAT_DF 0x20
++ #define CB_STAT_READY 0x40
++ #define CB_STAT_ERR 0x01
++ #define CB_DC_HD15 0x08
++ #define CB_DC_NIEN 0x02
++
++ #define CMD_IDENTIFY_DEVICE 0xec
++ #define CMD_READ_SECTORS 0x20
++ #define CMD_WRITE_SECTORS 0x30
++
++ #define TIMEOUT 0x800000
++
++ int cfide_card_present(void)
++ {
++ unsigned char data, data1, data2;
++
++ /* Flip Sector Count */
++ data = read_reg(reg_base, CB_SC_SN);
++ data1 = (~data) & 0xff;
++ write_reg(reg_base, CB_SC_SN, data1);
++
++ /* write to the data register to waggle the bus */
++ write_reg(reg_base, CB_DATA, data);
++
++ /* Read back the sector count and if it matches what we put there
++ then the CF is present */
++ data2 = read_reg(reg_base, CB_SC_SN);
++ if (data2 == data1)
++ return 1;
++ else {
++ printk("data %02x data1 %02x data2 %02x\n", data, data1, data2);
++ return 0;
++ }
++ }
++
++ /*
++ * This struct defines the HD's and their types.
++ */
++ struct hd_i_struct {
++ unsigned int head,sect,cyl,wpcom,lzone,ctl;
++ int unit;
++ int recalibrate;
++ int special_op;
++ };
++
++ #ifdef HD_TYPE
++ static struct hd_i_struct hd_info[] = { HD_TYPE };
++ static int NR_HD = ((sizeof (hd_info))/(sizeof (struct hd_i_struct)));
++ #else
++ static struct hd_i_struct hd_info[MAX_HD];
++ static int NR_HD;
++ #endif
++
++ static struct gendisk *hd_gendisk[MAX_HD];
++
++
++
++ #if (HD_DELAY > 0)
++
++ #include <asm/i8253.h>
++
++ unsigned long last_req;
++
++ unsigned long read_timer(void)
++ {
++ unsigned long t, flags;
++ int i;
++
++ spin_lock_irqsave(&i8253_lock, flags);
++ t = jiffies * 11932;
++ outb_p(0, 0x43);
++ i = inb_p(0x40);
++ i |= inb(0x40) << 8;
++ spin_unlock_irqrestore(&i8253_lock, flags);
++ return(t - i);
++ }
++ #endif
++
++ static void __init hd_setup(char *str, int *ints)
++ {
++ int hdind = 0;
++
++ if (ints[0] != 3)
++ return;
++ if (hd_info[0].head != 0)
++ hdind=1;
++ hd_info[hdind].head = ints[2];
++ hd_info[hdind].sect = ints[3];
++ hd_info[hdind].cyl = ints[1];
++ hd_info[hdind].wpcom = 0;
++ hd_info[hdind].lzone = ints[1];
++ hd_info[hdind].ctl = (ints[2] > 8 ? 8 : 0);
++ NR_HD = hdind+1;
++ }
++
++
++
++ void cfide_wait_fin(void)
++ {
++ unsigned long timer;
++
++ // printk("%s:%d\n", __FUNCTION__, __LINE__);
++
++ udelay(500); // wait 500us
++
++ for (timer = 0;
++ timer < TIMEOUT && (read_reg(reg_base, CB_STAT) & CB_STAT_BSY); ++timer)
++ yield();
++
++ if (timer == TIMEOUT)
++ printk("%s:%d\n", __FUNCTION__, __LINE__);
++ }
++
++ void cfide_wait_drq(void)
++ {
++ unsigned long timer;
++
++ for (timer = 0;
++ timer < TIMEOUT && !(read_reg(reg_base, CB_STAT) & CB_STAT_DRQ); ++timer)
++ yield();
++
++ if (timer == TIMEOUT)
++ printk("%s:%d\n", __FUNCTION__, __LINE__);
++ }
++
++ static union {
++ struct hd_driveid id;
++ short sh[512/2];
++ } info_buf;
++
++
++ /* Read cnt sectors from the flash, starting at lba, storing the data
++ at dest */
++ static int cfide_read_sectors(uint8_t *dest, uint32_t lba, uint32_t cnt)
++ {
++ uint8_t sect, head, devHead, status, devCtrl;
++ uint16_t cyl;
++ uint32_t orig_lba = lba;
++ uint32_t i,j;
++ uint16_t data;
++
++ // printk("%s: dest %p lba %u cnt %u\n", __FUNCTION__, dest, lba, cnt);
++
++ if (lba + cnt > info_buf.id.lba_capacity) {
++ printk("%s: %u+%u is larger than %u\n", __FUNCTION__, lba, cnt, info_buf.id.lba_capacity);
++ return -EINVAL;
++ }
++
++ if (cnt > 255) {
++ printk("%s: cnt %u is too large\n", __FUNCTION__, cnt);
++ return -EINVAL;
++ }
++
++
++ /* translate from LBA */
++ sect = lba & 0xff;
++ lba >>= 8;
++ cyl = lba & 0xffff;
++ lba >>= 16;
++ head = (lba & 0x0f) | 0x40;
++
++ devCtrl = CB_DC_HD15 | CB_DC_NIEN;
++ devHead = driveno | head;
++
++ write_reg(reg_base, CB_DC, devCtrl);
++ write_reg(reg_base, CB_SC_SN, ((uint16_t)cnt & 0xff) | ((uint16_t)sect << 8));
++ write_reg(reg_base, CB_CYL, cyl);
++
++ write_reg(reg_base, CB_DH_CMD, devHead | (CMD_READ_SECTORS << 8));
++
++ for (j=0; j<cnt; ++j) {
++ udelay(1); // spin for a moment to let the controller raise BSY
++
++ cfide_wait_fin();
++ cfide_wait_drq();
++ for (i=0; i<256; ++i) {
++ data = read_reg(reg_base, CB_DATA);
++ #if 0
++ *dest++ = data>>8;
++ *dest++ = data;
++ #else
++ *dest++ = data;
++ *dest++ = data>>8;
++ #endif
++ }
++
++
++ cfide_wait_fin();
++
++ status = read_reg(reg_base, CB_STAT);
++ if (status & (CB_STAT_DF|CB_STAT_ERR)) {
++ printk("%s: error at block %d status %#x\n", __FUNCTION__, orig_lba+j, status);
++ break;
++ }
++
++ }
++
++ return 0;
++ }
++
++ /* Write cnt sectors to the flash, starting at lba, reading the data
++ from src */
++ static int cfide_write_sectors(uint8_t *src, uint32_t lba, uint32_t cnt)
++ {
++ uint8_t sect, head, devHead, status, devCtrl;
++ uint16_t cyl;
++ uint32_t orig_lba = lba;
++ uint32_t i,j;
++ uint16_t data;
++
++ if (lba + cnt > info_buf.id.lba_capacity) {
++ printk("%s: %u+%u is larger than %u\n", __FUNCTION__, lba, cnt, info_buf.id.lba_capacity);
++ return -EINVAL;
++ }
++
++ if (cnt > 255) {
++ printk("%s: cnt %u is too large\n", __FUNCTION__, cnt);
++ return -EINVAL;
++ }
++
++ /* translate from LBA */
++ sect = lba & 0xff;
++ lba >>= 8;
++ cyl = lba & 0xffff;
++ lba >>= 16;
++ head = (lba & 0x0f) | 0x40;
++
++ devCtrl = CB_DC_HD15 | CB_DC_NIEN;
++ devHead = driveno | head;
++
++ write_reg(reg_base, CB_DC, devCtrl);
++ write_reg(reg_base, CB_SC_SN, ((uint16_t)cnt & 0xff) | ((uint16_t)sect << 8));
++ write_reg(reg_base, CB_CYL, cyl);
++
++ write_reg(reg_base, CB_DH_CMD, devHead | (CMD_WRITE_SECTORS << 8));
++
++ for (j=0; j<cnt; ++j) {
++ udelay(1); // spin for a moment to let the controller raise BSY
++
++ cfide_wait_fin();
++
++ cfide_wait_drq();
++
++ for (i=0; i<256; ++i) {
++ #if 0
++ data = (*src++ << 8);
++ data |= *src++;
++ #else
++ data = *src++;
++ data |= (*src++ << 8);
++ #endif
++ write_reg(reg_base, CB_DATA, data);
++ }
++
++ cfide_wait_fin();
++
++ status = read_reg(reg_base, CB_STAT);
++ if (status & (CB_STAT_DF|CB_STAT_ERR)) {
++ printk("%s: error at block %d status %#x\n", __FUNCTION__, orig_lba+j, status);
++ break;
++ }
++
++ }
++ return 0;
++ }
++
++
++ static void cfide_transfer(unsigned long sector,
++ unsigned long nsect, char *buffer, int write)
++ {
++ int ret;
++ if (write)
++ ret = cfide_write_sectors(buffer, sector, nsect);
++ else
++ ret = cfide_read_sectors(buffer, sector, nsect);
++ if (ret)
++ printk("%s:%d\n", __FUNCTION__, __LINE__);
++
++ }
++
++
++ static void do_hd_request (request_queue_t * q)
++ {
++ struct request *req;
++
++ // printk("%s:%d q %p\n", __FUNCTION__, __LINE__, q);
++
++ while ((req = elv_next_request(q)) != NULL) {
++ if (blk_fs_request(req)) {
++ cfide_transfer(req->sector, req->current_nr_sectors,
++ req->buffer, rq_data_dir(req));
++ end_request(req, 1);
++ } else {
++ printk (KERN_NOTICE "Skip non-fs request\n");
++ end_request(req, 0);
++ continue;
++ }
++ }
++ }
++
++ static int hd_getgeo(struct block_device *bdev, struct hd_geometry *geo)
++ {
++ struct hd_i_struct *disk = bdev->bd_disk->private_data;
++
++ geo->heads = disk->head;
++ geo->sectors = disk->sect;
++ geo->cylinders = disk->cyl;
++ return 0;
++ }
++
++
++ static struct block_device_operations hd_fops = {
++ .getgeo = hd_getgeo,
++ };
++
++ void cfide_fetch_info(void)
++ {
++ int i;
++
++ // printk("%s:%d\n", __FUNCTION__, __LINE__);
++
++ /* Select the drive and wait for it to finish */
++ driveno &= 1;
++ write_reg(reg_base, CB_DH_CMD, driveno);
++ cfide_wait_fin();
++
++ // printk("%s:%d\n", __FUNCTION__, __LINE__);
++
++ write_reg(reg_base, CB_DH_CMD, driveno | (CMD_IDENTIFY_DEVICE << 8));
++ cfide_wait_fin();
++
++ // printk("%s:%d\n", __FUNCTION__, __LINE__);
++
++
++ cfide_wait_drq();
++
++ // printk("%s:%d\n", __FUNCTION__, __LINE__);
++
++ for (i=0; i<512; i+=2)
++ info_buf.sh[i/2] = read_reg(reg_base, CB_DATA);
++
++ /* Fix lba_capcity */
++ info_buf.id.lba_capacity = (info_buf.id.lba_capacity>>16) | (info_buf.id.lba_capacity<<16);
++ // printk("%s:%d lba_capacity %#x\n", __FUNCTION__, __LINE__, info_buf.id.lba_capacity);
++ }
++
++ /*
++ * This is the hard disk IRQ description. The SA_INTERRUPT in sa_flags
++ * means we run the IRQ-handler with interrupts disabled: this is bad for
++ * interrupt latency, but anything else has led to problems on some
++ * machines.
++ *
++ * We enable interrupts in some of the routines after making sure it's
++ * safe.
++ */
++
++ static int __init hd_init(void)
++ {
++ int drive;
++
++ printk("%s:%d MAJOR_NR %d\n", __FUNCTION__, __LINE__, MAJOR_NR);
++
++ if (register_blkdev(MAJOR_NR,"hd"))
++ return -1;
++
++ reg_base = (unsigned char *) ioremap_nocache(CPLD_ATA_REG_BASE, 0x1000);
++ if (!reg_base) {
++ printk("%s:%d\n", __FUNCTION__, __LINE__);
++ return -ENOMEM;
++ }
++
++ /* If no card present, return */
++ if (!cfide_card_present()) {
++ printk("No CompactFlash card detected\n");
++ iounmap(reg_base);
++ return 0;
++ }
++
++ /* Fetchthe device info */
++ cfide_fetch_info();
++
++ hd_queue = blk_init_queue(do_hd_request, &hd_lock);
++ printk("%s:%d hd_queue %p\n", __FUNCTION__, __LINE__, hd_queue);
++ if (!hd_queue) {
++ unregister_blkdev(MAJOR_NR,"hd");
++ return -ENOMEM;
++ }
++
++
++ blk_queue_max_sectors(hd_queue, 255);
++ blk_queue_hardsect_size(hd_queue, 512);
++
++ #if 1
++ hd_info[0].cyl = info_buf.id.cyls;
++ hd_info[0].head = info_buf.id.heads;
++ hd_info[0].wpcom = 0;
++ hd_info[0].ctl = 0;
++ hd_info[0].lzone = 0;
++ hd_info[0].sect = info_buf.id.sectors;
++ NR_HD++;
++
++ printk("%s:%d NR_HD %d\n", __FUNCTION__, __LINE__, NR_HD);
++
++ #else
++ #ifdef __i386__
++ if (!NR_HD) {
++ extern struct drive_info drive_info;
++ unsigned char *BIOS = (unsigned char *) &drive_info;
++ unsigned long flags;
++ int cmos_disks;
++
++ for (drive=0 ; drive<2 ; drive++) {
++ hd_info[drive].cyl = *(unsigned short *) BIOS;
++ hd_info[drive].head = *(2+BIOS);
++ hd_info[drive].wpcom = *(unsigned short *) (5+BIOS);
++ hd_info[drive].ctl = *(8+BIOS);
++ hd_info[drive].lzone = *(unsigned short *) (12+BIOS);
++ hd_info[drive].sect = *(14+BIOS);
++ #ifdef does_not_work_for_everybody_with_scsi_but_helps_ibm_vp
++ if (hd_info[drive].cyl && NR_HD == drive)
++ NR_HD++;
++ #endif
++ BIOS += 16;
++ }
++
++ /*
++ We query CMOS about hard disks : it could be that
++ we have a SCSI/ESDI/etc controller that is BIOS
++ compatible with ST-506, and thus showing up in our
++ BIOS table, but not register compatible, and therefore
++ not present in CMOS.
++
++ Furthermore, we will assume that our ST-506 drives
++ <if any> are the primary drives in the system, and
++ the ones reflected as drive 1 or 2.
++
++ The first drive is stored in the high nibble of CMOS
++ byte 0x12, the second in the low nibble. This will be
++ either a 4 bit drive type or 0xf indicating use byte 0x19
++ for an 8 bit type, drive 1, 0x1a for drive 2 in CMOS.
++
++ Needless to say, a non-zero value means we have
++ an AT controller hard disk for that drive.
++
++ Currently the rtc_lock is a bit academic since this
++ driver is non-modular, but someday... ? Paul G.
++ */
++
++ spin_lock_irqsave(&rtc_lock, flags);
++ cmos_disks = CMOS_READ(0x12);
++ spin_unlock_irqrestore(&rtc_lock, flags);
++
++ if (cmos_disks & 0xf0) {
++ if (cmos_disks & 0x0f)
++ NR_HD = 2;
++ else
++ NR_HD = 1;
++ }
++ }
++ #endif /* __i386__ */
++ #ifdef __arm__
++ if (!NR_HD) {
++ /* We don't know anything about the drive. This means
++ * that you *MUST* specify the drive parameters to the
++ * kernel yourself.
++ */
++ printk("hd: no drives specified - use hd=cyl,head,sectors"
++ " on kernel command line\n");
++ }
++ #endif
++ #endif
++ if (!NR_HD)
++ goto out;
++
++ for (drive=0 ; drive < NR_HD ; drive++) {
++ struct gendisk *disk = alloc_disk(64);
++ struct hd_i_struct *p = &hd_info[drive];
++ if (!disk)
++ goto Enomem;
++ disk->major = MAJOR_NR;
++ disk->first_minor = drive << 6;
++ disk->fops = &hd_fops;
++ sprintf(disk->disk_name, "hd%c", 'a'+drive);
++ disk->private_data = p;
++ set_capacity(disk, p->head * p->sect * p->cyl);
++ disk->queue = hd_queue;
++ p->unit = drive;
++ hd_gendisk[drive] = disk;
++ printk ("%s: %luMB, CHS=%d/%d/%d\n",
++ disk->disk_name, (unsigned long)get_capacity(disk)/2048,
++ p->cyl, p->head, p->sect);
++ }
++
++ /* Let them fly */
++ for(drive=0; drive < NR_HD; drive++)
++ add_disk(hd_gendisk[drive]);
++
++ return 0;
++
++ out:
++ unregister_blkdev(MAJOR_NR,"hd");
++ blk_cleanup_queue(hd_queue);
++ return -1;
++ Enomem:
++ while (drive--)
++ put_disk(hd_gendisk[drive]);
++ goto out;
++ }
++
++ static int __init parse_hd_setup (char *line) {
++ int ints[6];
++
++ (void) get_options(line, ARRAY_SIZE(ints), ints);
++ hd_setup(NULL, ints);
++
++ return 1;
++ }
++ __setup("hd=", parse_hd_setup);
++
++ module_init(hd_init);
++
++ /*
++ * Local variables:
++ * c-indent-level: 4
++ * tab-width: 4
++ * End:
++ */
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-flash.patch b/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-flash.patch
new file mode 100644
index 0000000000..43990058c2
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-flash.patch
@@ -0,0 +1,244 @@
+Index: drivers/mtd/maps/Kconfig
+===================================================================
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/drivers/mtd/maps/Kconfig,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -c -3 -p -r1.1.1.1 -r1.2
+*** drivers/mtd/maps/Kconfig 29 May 2006 00:58:44 -0000 1.1.1.1
+--- drivers/mtd/maps/Kconfig 30 May 2006 13:04:33 -0000 1.2
+*************** config MTD_MAINSTONE
+*** 137,142 ****
+--- 137,149 ----
+ This provides a driver for the on-board flash of the Intel
+ 'Mainstone PXA27x evaluation board.
+
++ config MTD_LOGICPD_PXA270
++ tristate "CFI Flash device mapped on LogicPD PXA270 Card Engine"
++ depends on MACH_LOGICPD_PXA270 && MTD_CFI_INTELEXT && MTD_PARTITIONS
++ help
++ This provides a driver for the on-board flash of the LogicPD
++ PXA270 Card Engine.
++
+ config MTD_OCTAGON
+ tristate "JEDEC Flash device mapped on Octagon 5066 SBC"
+ depends on X86 && MTD_JEDEC && MTD_COMPLEX_MAPPINGS
+Index: drivers/mtd/maps/Makefile
+===================================================================
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/drivers/mtd/maps/Makefile,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -c -3 -p -r1.1.1.1 -r1.2
+*** drivers/mtd/maps/Makefile 29 May 2006 00:58:44 -0000 1.1.1.1
+--- drivers/mtd/maps/Makefile 30 May 2006 13:04:33 -0000 1.2
+*************** obj-$(CONFIG_MTD_ICHXROM) += ichxrom.o
+*** 22,27 ****
+--- 22,28 ----
+ obj-$(CONFIG_MTD_TSUNAMI) += tsunami_flash.o
+ obj-$(CONFIG_MTD_LUBBOCK) += lubbock-flash.o
+ obj-$(CONFIG_MTD_MAINSTONE) += mainstone-flash.o
++ obj-$(CONFIG_MTD_LOGICPD_PXA270)+= lpd270-flash.o
+ obj-$(CONFIG_MTD_MBX860) += mbx860.o
+ obj-$(CONFIG_MTD_CEIVA) += ceiva.o
+ obj-$(CONFIG_MTD_OCTAGON) += octagon-5066.o
+Index: drivers/mtd/maps/lpd270-flash.c
+===================================================================
+--- /dev/null 2006-05-22 10:25:23.000000000 -0400
++++ drivers/mtd/maps/lpd270-flash.c 2006-12-29 13:19:54.000000000 -0500
+@@ -0,0 +1,197 @@
++ /*
++ * $Id: lpd270-flash.c,v 1.1 2006/05/30 13:03:55 LOGIC+peterb Exp $
++ *
++ * Map driver for the Lpd270 developer platform.
++ *
++ * Author: Nicolas Pitre
++ * Copyright: (C) 2001 MontaVista Software 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/module.h>
++ #include <linux/types.h>
++ #include <linux/kernel.h>
++ #include <linux/init.h>
++ #include <linux/dma-mapping.h>
++ #include <linux/slab.h>
++
++ #include <linux/mtd/mtd.h>
++ #include <linux/mtd/map.h>
++ #include <linux/mtd/partitions.h>
++
++ #include <asm/io.h>
++ #include <asm/hardware.h>
++ #include <asm/arch/pxa-regs.h>
++ // #include <asm/arch/lpd270.h>
++
++
++ #define ROM_ADDR 0x00000000
++ #define FLASH_ADDR 0x04000000
++
++ #define WINDOW_SIZE 0x04000000
++
++ static void lpd270_map_inval_cache(struct map_info *map, unsigned long from,
++ ssize_t len)
++ {
++ consistent_sync((char *)map->cached + from, len, DMA_FROM_DEVICE);
++ }
++
++ static struct map_info lpd270_maps[2] = { {
++ .size = WINDOW_SIZE,
++ .phys = PXA_CS0_PHYS,
++ .inval_cache = lpd270_map_inval_cache,
++ }, {
++ .size = WINDOW_SIZE,
++ .phys = PXA_CS1_PHYS,
++ .inval_cache = lpd270_map_inval_cache,
++ } };
++
++ static struct mtd_partition lpd270_partitions[] = {
++ {
++ .name = "Bootloader",
++ .size = 0x000C0000,
++ .offset = 0,
++ .mask_flags = MTD_WRITEABLE /* force read-only */
++ },{
++ .name = "YAFFS",
++ .size = 0x00F40000,
++ .offset = 0x000C0000,
++ },{
++ .name = "Filesystem",
++ .size = MTDPART_SIZ_FULL,
++ .offset = 0x01000000
++ }
++ };
++
++ static struct mtd_info *mymtds[2];
++ static struct mtd_partition *parsed_parts[2];
++ static int nr_parsed_parts[2];
++
++ static const char *probes[] = { "RedBoot", "cmdlinepart", NULL };
++
++ static int __init init_lpd270(void)
++ {
++ int SW7 = 0; /* FIXME: get from SCR (Mst doc section 3.2.1.1) */
++ int ret = 0, i;
++
++ lpd270_maps[0].bankwidth = (BOOT_DEF & 1) ? 2 : 4;
++ lpd270_maps[1].bankwidth = 4;
++
++ /* Compensate for SW7 which swaps the flash banks */
++ lpd270_maps[SW7].name = "processor flash";
++ lpd270_maps[SW7 ^ 1].name = "main board flash";
++
++ printk(KERN_CRIT "FLASH ENABLED!!!!!!!!!! Lpd270 configured to boot from %s\n",
++ lpd270_maps[0].name);
++
++ // Set VPP in CPLD to allow writes to the flash
++ {
++ unsigned short *p;
++
++ p = ioremap(0x08000000, PAGE_SIZE);
++ if (!p) {
++ printk("%s:%d ioremap failed\n", __FUNCTION__, __LINE__);
++ } else {
++ printk("%s:%d CTRL REG %04x\n", __FUNCTION__, __LINE__, *p);
++ *p |= (1<<3); // FL_VPEN
++ iounmap(p);
++ }
++ }
++
++ for (i = 0; i < 2; i++) {
++ lpd270_maps[i].virt = ioremap_nocache(lpd270_maps[i].phys,
++ WINDOW_SIZE);
++ if (!lpd270_maps[i].virt) {
++ printk(KERN_WARNING "Failed to ioremap %s\n",
++ lpd270_maps[i].name);
++ if (!ret)
++ ret = -ENOMEM;
++ continue;
++ }
++ #if 0
++ lpd270_maps[i].cached =
++ ioremap_cached(lpd270_maps[i].phys, WINDOW_SIZE);
++ if (!lpd270_maps[i].cached)
++ printk(KERN_WARNING "Failed to ioremap cached %s\n",
++ lpd270_maps[i].name);
++ #endif
++ simple_map_init(&lpd270_maps[i]);
++
++ printk(KERN_NOTICE
++ "Probing %s at physical address 0x%08lx"
++ " (%d-bit bankwidth)\n",
++ lpd270_maps[i].name, lpd270_maps[i].phys,
++ lpd270_maps[i].bankwidth * 8);
++
++ mymtds[i] = do_map_probe("cfi_probe", &lpd270_maps[i]);
++
++ if (!mymtds[i]) {
++ iounmap((void *)lpd270_maps[i].virt);
++ if (lpd270_maps[i].cached)
++ iounmap(lpd270_maps[i].cached);
++ if (!ret)
++ ret = -EIO;
++ continue;
++ }
++ mymtds[i]->owner = THIS_MODULE;
++
++ ret = parse_mtd_partitions(mymtds[i], probes,
++ &parsed_parts[i], 0);
++
++ if (ret > 0)
++ nr_parsed_parts[i] = ret;
++ }
++
++ if (!mymtds[0] && !mymtds[1])
++ return ret;
++
++ for (i = 0; i < 2; i++) {
++ if (!mymtds[i]) {
++ printk(KERN_WARNING "%s is absent. Skipping\n",
++ lpd270_maps[i].name);
++ } else if (nr_parsed_parts[i]) {
++ add_mtd_partitions(mymtds[i], parsed_parts[i],
++ nr_parsed_parts[i]);
++ } else if (!i) {
++ printk("Using static partitions on %s\n",
++ lpd270_maps[i].name);
++ add_mtd_partitions(mymtds[i], lpd270_partitions,
++ ARRAY_SIZE(lpd270_partitions));
++ } else {
++ printk("Registering %s as whole device\n",
++ lpd270_maps[i].name);
++ add_mtd_device(mymtds[i]);
++ }
++ }
++ return 0;
++ }
++
++ static void __exit cleanup_lpd270(void)
++ {
++ int i;
++ for (i = 0; i < 2; i++) {
++ if (!mymtds[i])
++ continue;
++
++ if (nr_parsed_parts[i] || !i)
++ del_mtd_partitions(mymtds[i]);
++ else
++ del_mtd_device(mymtds[i]);
++
++ map_destroy(mymtds[i]);
++ iounmap((void *)lpd270_maps[i].virt);
++ if (lpd270_maps[i].cached)
++ iounmap(lpd270_maps[i].cached);
++ kfree(parsed_parts[i]);
++ }
++ }
++
++ module_init(init_lpd270);
++ module_exit(cleanup_lpd270);
++
++ MODULE_LICENSE("GPL");
++ MODULE_AUTHOR("Nicolas Pitre <nico@cam.org>");
++ MODULE_DESCRIPTION("MTD map driver for Logic PXA270");
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-hardware-id-hack.patch b/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-hardware-id-hack.patch
new file mode 100644
index 0000000000..975cf7a200
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-hardware-id-hack.patch
@@ -0,0 +1,31 @@
+
+Index: arch/arm/kernel/head.S
+===================================================================
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/arch/arm/kernel/head.S,v
+retrieving revision 1.1.1.1
+diff -c -3 -p -r1.1.1.1 head.S
+*** arch/arm/kernel/head.S 29 May 2006 00:53:47 -0000 1.1.1.1
+--- arch/arm/kernel/head.S 1 Jun 2006 17:37:16 -0000
+*************** ENTRY(stext)
+*** 74,79 ****
+--- 74,93 ----
+ msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC @ ensure svc mode
+ @ and irqs disabled
+ mrc p15, 0, r9, c0, c0 @ get processor id
++
++ /* LPD--
++ * This fakes out the Linux kernel into believing that it is
++ * running on a Mainstone hardware platform. The LogicLoader (LoLo)
++ * doesn't currently pass kernel parameters correctly for 2.6 ARM
++ * kernels. Therefore, we just hardcode it here.
++ *
++ * --LPD
++ */
++ mov r0, #0
++ mov r1, #0x300
++ orr r1, r1, #0x0a0
++ orr r1, r1, #0x002
++
+ bl __lookup_processor_type @ r5=procinfo r9=cpuid
+ movs r10, r5 @ invalid processor (r5=0)?
+ beq __error_p @ yes, error 'p'
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-lcd-osd024ttea2.patch b/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-lcd-osd024ttea2.patch
new file mode 100644
index 0000000000..c70af61fc3
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-lcd-osd024ttea2.patch
@@ -0,0 +1,81 @@
+--- arch/arm/mach-pxa/lpd270.c~org 2006-11-29 16:57:37.000000000 -0500
++++ arch/arm/mach-pxa/lpd270.c 2006-12-29 12:56:05.000000000 -0500
+@@ -384,6 +384,30 @@
+ .pxafb_backlight_power = lpd270_backlight_power,
+ };
+
++/* 2.4" TFT QVGA */
++static struct pxafb_mode_info osd_osd024ttea2_mode = {
++ .pixclock = 208000, /*280nS is the Min speed, 208000 = 230nS (scoped)*/
++ .xres = 240,
++ .yres = 320,
++ .bpp = 16,
++ .hsync_len = 10,
++ .left_margin = 20,
++ .right_margin = 10,
++ .vsync_len = 1,
++ .upper_margin = 0x03,
++ .lower_margin = 0x06,
++ .sync = 0,
++};
++
++static struct pxafb_mach_info osd_osd024ttea2 = {
++ .modes = &osd_osd024ttea2_mode,
++ .num_modes = 1,
++ .lccr0 = 0x07800080,
++ .lccr3 = 0x04000001,
++ .pxafb_backlight_power = lpd270_backlight_power,
++};
++
++
+ static struct pxafb_mach_info *lpd270_lcd_to_use;
+
+ static int __init lpd270_set_lcd(char *str)
+@@ -400,6 +424,8 @@
+ lpd270_lcd_to_use = &sharp_lq10d368;
+ } else if (!strnicmp(str, "lq035q7db02-20", 14)) {
+ lpd270_lcd_to_use = &sharp_lq035q7db02_20;
++ } else if (!strnicmp(str, "osd024ttea2", 11)) {
++ lpd270_lcd_to_use = &osd_osd024ttea2;
+ } else {
+ printk(KERN_INFO "lpd270: unknown lcd panel [%s]\n", str);
+ }
+--- drivers/video/Kconfig~org 2006-12-29 12:59:13.000000000 -0500
++++ drivers/video/Kconfig 2006-12-29 13:02:17.000000000 -0500
+@@ -1530,6 +1530,35 @@
+ config FB_PXA_LCD_VGA
+ bool "VGA (640x480)"
+
++config FB_PXA_LPD_LQ64D343
++ bool "6.4\" TFT VGA 640x480"
++ depends on FB_PXA
++ ---help---
++ Sharp LQ64D343 LCD panel
++
++config FB_PXA_LPD_LQ035Q7DB02
++ bool "3.5\" TFT QVGA 240x320"
++ depends on FB_PXA
++ ---help---
++ Sharp LQ035Q7DB02 LCD panel
++
++config FB_PXA_LPD_LQ057Q3DC02
++ bool "5.7\" TFT QVGA 240x320"
++ depends on FB_PXA
++ ---help---
++ Sharp LQ057Q3DC02 LCD panel
++
++config FB_PXA_LPD_LQ10D368
++ bool "10.4\" TFT VGA 640x480"
++ depends on FB_PXA
++ ---help---
++ Sharp LQ10D368 LCD panel
++
++config FB_PXA_LPD_OSD024TTEA2
++ bool "2.4\" TFT VGA 320x240"
++ help
++ OSD OSD024TTEA2 LCD panel.
++
+ endchoice
+
+ config FB_PXA_OVERLAY
+
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-smc91x.patch b/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-smc91x.patch
new file mode 100644
index 0000000000..b6fed75941
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/logicpd-pxa270-smc91x.patch
@@ -0,0 +1,35 @@
+Index: drivers/net/smc91x.h
+===================================================================
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/drivers/net/smc91x.h,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -c -3 -p -r1.1.1.1 -r1.2
+*** drivers/net/smc91x.h 29 May 2006 00:59:41 -0000 1.1.1.1
+--- drivers/net/smc91x.h 29 May 2006 17:42:44 -0000 1.2
+***************
+*** 129,134 ****
+--- 129,152 ----
+ #define SMC_insb(a, r, p, l) readsb((a) + (r), p, (l))
+ #define SMC_outsb(a, r, p, l) writesb((a) + (r), p, (l))
+
++ #elif defined(CONFIG_MACH_LOGICPD_PXA270)
++
++ #define SMC_CAN_USE_8BIT 0
++ #define SMC_CAN_USE_16BIT 1
++ #define SMC_CAN_USE_32BIT 0
++ #define SMC_IO_SHIFT 0
++ #define SMC_NOWAIT 1
++ #define SMC_USE_PXA_DMA 1
++
++ // #define SMC_inb(a, r) readb((a) + (r))
++ #define SMC_inw(a, r) readw((a) + (r))
++ // #define SMC_inl(a, r) readl((a) + (r))
++ // #define SMC_outb(v, a, r) writeb(v, (a) + (r))
++ #define SMC_outw(v, a, r) writew(v, (a) + (r))
++ // #define SMC_outl(v, a, r) writel(v, (a) + (r))
++ #define SMC_insw(a, r, p, l) readsw((a) + (r), p, l)
++ #define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l)
++
+ #elif defined(CONFIG_ARCH_INNOKOM) || \
+ defined(CONFIG_MACH_MAINSTONE) || \
+ defined(CONFIG_ARCH_PXA_IDP) || \
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/pm_changes-r1.patch b/packages/linux/logicpd-pxa270-2.6.19.2/pm_changes-r1.patch
new file mode 100644
index 0000000000..900bc046bf
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/pm_changes-r1.patch
@@ -0,0 +1,44 @@
+Index: linux-2.6.15/arch/arm/mach-pxa/corgi.c
+===================================================================
+--- linux-2.6.15.orig/arch/arm/mach-pxa/corgi.c 2006-03-04 11:27:13.000000000 +0000
++++ linux-2.6.15/arch/arm/mach-pxa/corgi.c 2006-03-04 11:29:10.000000000 +0000
+@@ -60,6 +60,7 @@
+ static struct scoop_config corgi_scoop_setup = {
+ .io_dir = CORGI_SCOOP_IO_DIR,
+ .io_out = CORGI_SCOOP_IO_OUT,
++ .suspend_clr = 0xffff,
+ };
+
+ struct platform_device corgiscoop_device = {
+@@ -322,7 +323,7 @@
+ PGSR1 = 0x00FF0080;
+ PGSR2 = 0x0001C004;
+ /* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
+- PCFR |= PCFR_OPDE;
++ PCFR = PCFR_OPDE;
+
+ corgi_ssp_set_machinfo(&corgi_ssp_machinfo);
+
+Index: linux-2.6.15/arch/arm/mach-pxa/corgi_pm.c
+===================================================================
+--- linux-2.6.15.orig/arch/arm/mach-pxa/corgi_pm.c 2006-03-04 11:26:52.000000000 +0000
++++ linux-2.6.15/arch/arm/mach-pxa/corgi_pm.c 2006-03-04 11:29:10.000000000 +0000
+@@ -97,6 +97,9 @@
+ if (!machine_is_corgi())
+ wakeup_mask |= GPIO_bit(CORGI_GPIO_MAIN_BAT_LOW);
+
++ if (!machine_is_corgi())
++ GPDR0 &= ~(GPIO_bit(15) | GPIO_bit(8)); /* Float n_CS1 */
++
+ PWER = wakeup_mask | PWER_RTC;
+ PRER = wakeup_mask;
+ PFER = wakeup_mask;
+@@ -113,6 +116,8 @@
+
+ static void corgi_postsuspend(void)
+ {
++ if (!machine_is_corgi())
++ GPDR0 |= GPIO_bit(15) | GPIO_bit(8); /* Un-Float n_CS1 */
+ }
+
+ /*
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/pxa25x_cpufreq-r1.patch b/packages/linux/logicpd-pxa270-2.6.19.2/pxa25x_cpufreq-r1.patch
new file mode 100644
index 0000000000..dfbf7cada0
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/pxa25x_cpufreq-r1.patch
@@ -0,0 +1,398 @@
+Index: git/arch/arm/Kconfig
+===================================================================
+--- git.orig/arch/arm/Kconfig 2006-07-04 21:48:58.000000000 +0100
++++ git/arch/arm/Kconfig 2006-07-05 09:46:49.000000000 +0100
+@@ -690,7 +690,7 @@
+
+ endmenu
+
+-if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP)
++if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_PXA)
+
+ menu "CPU Frequency scaling"
+
+@@ -717,6 +717,12 @@
+
+ If in doubt, say Y.
+
++config CPU_FREQ_PXA25x
++ bool
++ select CPU_FREQ_TABLE
++ depends on CPU_FREQ && PXA25x
++ default y
++
+ endmenu
+
+ endif
+Index: git/arch/arm/mach-pxa/Makefile
+===================================================================
+--- git.orig/arch/arm/mach-pxa/Makefile 2006-07-05 09:44:45.000000000 +0100
++++ git/arch/arm/mach-pxa/Makefile 2006-07-05 09:45:43.000000000 +0100
+@@ -29,6 +29,9 @@
+
+ obj-$(CONFIG_LEDS) += $(led-y)
+
++# CPU freq support
++obj-$(CONFIG_CPU_FREQ_PXA25x) += cpu-pxa25x.o
++
+ # Misc features
+ obj-$(CONFIG_PM) += pm.o sleep.o
+ obj-$(CONFIG_PXA_KEYS) += pxa_keys.o
+Index: git/arch/arm/mach-pxa/cpu-pxa25x.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/arch/arm/mach-pxa/cpu-pxa25x.c 2006-07-05 09:45:43.000000000 +0100
+@@ -0,0 +1,353 @@
++/*
++ * linux/arch/arm/mach-pxa/cpu-pxa.c
++ *
++ * Copyright (C) 2002,2003 Intrinsyc Software
++ *
++ * 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
++ *
++ * History:
++ * 31-Jul-2002 : Initial version [FB]
++ * 29-Jan-2003 : added PXA255 support [FB]
++ * 20-Apr-2003 : ported to v2.5 (Dustin McIntire, Sensoria Corp.)
++ * 18-Jul-2005 : updated for latest kernel (2.6.13-rc), cleanup for submission
++ * (Ian Campbell, Arcom Control Systems)
++ *
++ * Note:
++ * This driver may change the memory bus clock rate, but will not do any
++ * platform specific access timing changes... for example if you have flash
++ * memory connected to CS0, you will need to register a platform specific
++ * notifier which will adjust the memory access strobes to maintain a
++ * minimum strobe width.
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/sched.h>
++#include <linux/init.h>
++#include <linux/cpufreq.h>
++#include <linux/moduleparam.h>
++
++#include <asm/hardware.h>
++
++#include <asm/arch/pxa-regs.h>
++
++#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_DRIVER, "pxa25x", msg)
++
++struct pxa_freqs {
++ unsigned int khz;
++ unsigned int membus;
++ unsigned int cccr;
++ unsigned int div2;
++};
++
++/* Define the refresh period in mSec for the SDRAM and the number of rows */
++#define SDRAM_TREF 64 /* standard 64ms SDRAM */
++#define SDRAM_ROWS 8192 /* 64MB=8192 32MB=4096 */
++#define MDREFR_DRI(x) ((x*SDRAM_TREF)/(SDRAM_ROWS*32))
++
++#define CCLKCFG_TURBO 0x1
++#define CCLKCFG_FCS 0x2
++#define PXA25x_MIN_FREQ 99532
++#define PXA25x_MAX_FREQ 398131
++#define MDREFR_DB2_MASK (MDREFR_K2DB2 | MDREFR_K1DB2)
++#define MDREFR_DRI_MASK 0xFFF
++
++/* Use the run mode frequencies for performance */
++static struct pxa_freqs pxa25x_performance_freqs[] = {
++ /* CPU MEMBUS CCCR DIV2 */
++ {99532, 99532, 0x121, 1}, /* run= 99, turbo= 99, PXbus=50, SDRAM=50 */
++ {132710, 132710, 0x123, 1}, /* run=133, turbo=133, PXbus=66, SDRAM=66 */
++ {199065, 99532, 0x141, 0}, /* run=199, turbo=199, PXbus=99, SDRAM=99 */
++ {265421, 132710, 0x143, 1}, /* run=265, turbo=265, PXbus=133, SDRAM=66 */
++ {331776, 165888, 0x145, 1}, /* run=331, turbo=331, PXbus=166, SDRAM=83 */
++ {398131, 99532, 0x161, 0}, /* run=398, turbo=398, PXbus=196, SDRAM=99 */
++};
++
++static struct cpufreq_frequency_table pxa25x_performance_freq_table[ARRAY_SIZE(pxa25x_performance_freqs)+1];
++
++/* Use the turbo mode frequencies for powersave */
++static struct pxa_freqs pxa25x_powersave_freqs[] = {
++ /* CPU MEMBUS CCCR DIV2 */
++ {99532, 99532, 0x121, 1}, /* run=99, turbo= 99, PXbus=50, SDRAM=50 */
++ {199065, 99532, 0x221, 0}, /* run=99, turbo=199, PXbus=50, SDRAM=99 */
++ {298598, 99532, 0x321, 0}, /* run=99, turbo=287, PXbus=50, SDRAM=99 */
++ {398131, 99532, 0x241, 0}, /* run=199, turbo=398, PXbus=99, SDRAM=99 */
++};
++
++static struct cpufreq_frequency_table pxa25x_powersave_freq_table[ARRAY_SIZE(pxa25x_powersave_freqs)+1];
++
++extern unsigned get_clk_frequency_khz(int info);
++
++static unsigned int max_frequency = PXA25x_MAX_FREQ;
++static int performance = 0;
++
++/*
++ * This option can be used if you have one of the 200MHz PXA25x parts by adding
++ * cpu_pxa25x.max_frequency=199065 to the kernel command line
++ */
++module_param(max_frequency, int, 0);
++MODULE_PARM_DESC(max_frequency, "Set the maximum cpu frequency");
++
++module_param(performance, int, 0);
++MODULE_PARM_DESC(performance, "Use performance instead of powersave frequency tables");
++
++static void pxa_select_freq_table(struct cpufreq_policy *policy,
++ struct pxa_freqs ** settings,
++ struct cpufreq_frequency_table **table)
++{
++ cpufreq_frequency_table_put_attr(policy->cpu);
++
++ if (performance) {
++ dprintk("selecting performance tables\n");
++ cpufreq_frequency_table_get_attr(pxa25x_performance_freq_table, policy->cpu);
++ if (settings)
++ *settings = pxa25x_performance_freqs;
++ if (table)
++ *table = pxa25x_performance_freq_table;
++ } else {
++ dprintk("selecting powersave tables\n");
++ cpufreq_frequency_table_get_attr(pxa25x_powersave_freq_table, policy->cpu);
++ if (settings)
++ *settings = pxa25x_powersave_freqs;
++ if (table)
++ *table = pxa25x_powersave_freq_table;
++ }
++}
++
++/* find a valid frequency point */
++static int pxa_verify_policy(struct cpufreq_policy *policy)
++{
++ int ret;
++ struct cpufreq_frequency_table *pxa_freqs_table;
++
++ pxa_select_freq_table(policy, NULL, &pxa_freqs_table);
++
++ ret = cpufreq_frequency_table_verify(policy, pxa_freqs_table);
++
++ dprintk("verified CPU policy: %dKhz min to %dKhz max\n",
++ policy->min, policy->max);
++
++ return ret;
++}
++
++static int pxa_set_target(struct cpufreq_policy *policy,
++ unsigned int target_freq, unsigned int relation)
++{
++ int idx;
++ struct cpufreq_freqs freqs;
++ struct pxa_freqs *pxa_freq_settings;
++ struct cpufreq_frequency_table *pxa_freqs_table;
++ unsigned long flags;
++ unsigned int unused;
++ unsigned int preset_mdrefr, postset_mdrefr;
++ void *ramstart;
++
++ /* Get the current policy */
++ pxa_select_freq_table(policy, &pxa_freq_settings, &pxa_freqs_table);
++
++ /* Lookup the next frequency */
++ if (cpufreq_frequency_table_target(policy, pxa_freqs_table,
++ target_freq, relation, &idx))
++ return -EINVAL;
++
++ freqs.old = get_clk_frequency_khz(0);
++ freqs.new = pxa_freq_settings[idx].khz;
++ freqs.cpu = policy->cpu;
++
++ if (freqs.new == freqs.old && pxa_freq_settings[idx].cccr == CCCR)
++ return 0;
++
++ dprintk("changing CPU frequency to %d.%03d Mhz (SDRAM %d Mhz, CCCR %#04x)\n",
++ freqs.new / 1000, freqs.new % 1000,
++ (pxa_freq_settings[idx].div2) ?
++ (pxa_freq_settings[idx].membus / 2000) :
++ (pxa_freq_settings[idx].membus / 1000),
++ pxa_freq_settings[idx].cccr);
++
++ ramstart = phys_to_virt(0xa0000000);
++
++ /*
++ * Tell everyone what we're about to do...
++ * you should add a notify client with any platform specific
++ * Vcc changing capability
++ */
++ cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
++
++ /* Calculate the next MDREFR. If we're slowing down the SDRAM clock
++ * we need to preset the smaller DRI before the change. If we're speeding
++ * up we need to set the larger DRI value after the change.
++ */
++ preset_mdrefr = postset_mdrefr = MDREFR;
++ if ((MDREFR & MDREFR_DRI_MASK) > MDREFR_DRI(pxa_freq_settings[idx].membus)) {
++ preset_mdrefr = (preset_mdrefr & ~MDREFR_DRI_MASK) |
++ MDREFR_DRI(pxa_freq_settings[idx].membus);
++ }
++ postset_mdrefr = (postset_mdrefr & ~MDREFR_DRI_MASK) |
++ MDREFR_DRI(pxa_freq_settings[idx].membus);
++
++ /* If we're dividing the memory clock by two for the SDRAM clock, this
++ * must be set prior to the change. Clearing the divide must be done
++ * after the change.
++ */
++ if (pxa_freq_settings[idx].div2) {
++ preset_mdrefr |= MDREFR_DB2_MASK;
++ postset_mdrefr |= MDREFR_DB2_MASK;
++ } else {
++ postset_mdrefr &= ~MDREFR_DB2_MASK;
++ }
++
++ local_irq_save(flags);
++
++ /* Set new the CCCR */
++ CCCR = pxa_freq_settings[idx].cccr;
++
++ __asm__ __volatile__(" \
++ ldr r4, [%1] ; /* load MDREFR */ \
++ b 2f ; \
++ .align 5 ; \
++1: \
++ str %4, [%1] ; /* preset the MDREFR */ \
++ mcr p14, 0, %2, c6, c0, 0 ; /* set CCLKCFG[FCS] */ \
++ str %5, [%1] ; /* postset the MDREFR */ \
++ \
++ b 3f ; \
++2: b 1b ; \
++3: nop ; \
++ "
++ : "=&r"(unused)
++ : "r"(&MDREFR), "r"(CCLKCFG_TURBO | CCLKCFG_FCS),
++ "r"(ramstart), "r"(preset_mdrefr),
++ "r"(postset_mdrefr)
++ : "r4", "r5");
++ local_irq_restore(flags);
++
++ /*
++ * Tell everyone what we've just done...
++ * you should add a notify client with any platform specific
++ * SDRAM refresh timer adjustments
++ */
++ cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
++
++ return 0;
++}
++
++static unsigned int pxa_cpufreq_get(unsigned int cpu)
++{
++ return get_clk_frequency_khz(0);
++}
++
++static int pxa_cpufreq_init(struct cpufreq_policy *policy)
++{
++ int i;
++
++ if (policy->cpu != 0)
++ return -ENODEV;
++
++ /* set default policy and cpuinfo */
++ policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
++ policy->cpuinfo.max_freq = max_frequency;
++ policy->cpuinfo.min_freq = PXA25x_MIN_FREQ;
++ policy->cpuinfo.transition_latency = 1000000; /* FIXME: 1 ms, assumed */
++ policy->cur = get_clk_frequency_khz(0); /* current freq */
++ policy->min = policy->max = policy->cur;
++ policy->min = pxa25x_powersave_freqs[0].khz;
++ policy->max = pxa25x_powersave_freqs[sizeof(pxa25x_powersave_freqs)/sizeof(*pxa25x_powersave_freqs)-1].khz;
++
++ /* Generate the run cpufreq_frequency_table struct */
++ for (i = 0; i < ARRAY_SIZE(pxa25x_performance_freqs); i++) {
++ pxa25x_performance_freq_table[i].frequency = pxa25x_performance_freqs[i].khz;
++ pxa25x_performance_freq_table[i].index = i;
++ }
++ pxa25x_performance_freq_table[i].frequency = CPUFREQ_TABLE_END;
++
++ /* Generate the turbo cpufreq_frequency_table struct */
++ for (i = 0; i < ARRAY_SIZE(pxa25x_powersave_freqs); i++) {
++ pxa25x_powersave_freq_table[i].frequency = pxa25x_powersave_freqs[i].khz;
++ pxa25x_powersave_freq_table[i].index = i;
++ }
++ pxa25x_powersave_freq_table[i].frequency = CPUFREQ_TABLE_END;
++
++ /* calls cpufreq_frequency_table_get_attr */
++ pxa_select_freq_table(policy, NULL, NULL);
++
++ printk(KERN_INFO "pxa25x: CPU frequency change support initialized (%s tables)\n",
++ performance ? "performance" : "powersave");
++
++ return 0;
++}
++
++static ssize_t show_pxa25x_freq_model_attr(struct cpufreq_policy * policy, char *buf)
++{
++ return sprintf (buf, "%s\n", performance ? "performance" : "powersave");
++}
++
++static ssize_t store_pxa25x_freq_model_attr(struct cpufreq_policy * policy, const char *buf, size_t count)
++{
++ unsigned int ret;
++ char str[16];
++
++ ret = sscanf(buf, "%15s", str);
++ if (ret != 1)
++ return -EINVAL;
++
++ if (strnicmp(str,"performance",16)==0)
++ performance = 1;
++ else if (strnicmp(str,"powersave",16)==0)
++ performance = 0;
++ else
++ return -EINVAL;
++
++ ret = cpufreq_update_policy(policy->cpu);
++
++ return ret ? ret : count;
++}
++
++struct freq_attr pxa25x_freq_model_attr = {
++ .attr = { .name = "pxa25x_freq_model", .mode = 0644, .owner=THIS_MODULE },
++ .show = show_pxa25x_freq_model_attr,
++ .store = store_pxa25x_freq_model_attr,
++};
++
++static struct freq_attr* pxa_cpufreq_attr[] = {
++ &cpufreq_freq_attr_scaling_available_freqs,
++ &pxa25x_freq_model_attr,
++ NULL,
++};
++
++static struct cpufreq_driver pxa_cpufreq_driver = {
++ .verify = pxa_verify_policy,
++ .target = pxa_set_target,
++ .init = pxa_cpufreq_init,
++ .get = pxa_cpufreq_get,
++ .name = "pxa25x",
++ .attr = pxa_cpufreq_attr,
++};
++
++static int __init pxa_cpu_init(void)
++{
++ return cpufreq_register_driver(&pxa_cpufreq_driver);
++}
++
++static void __exit pxa_cpu_exit(void)
++{
++ cpufreq_unregister_driver(&pxa_cpufreq_driver);
++}
++
++MODULE_AUTHOR("Intrinsyc Software Inc.");
++MODULE_DESCRIPTION("CPU frequency changing driver for the PXA architecture");
++MODULE_LICENSE("GPL");
++module_init(pxa_cpu_init);
++module_exit(pxa_cpu_exit);
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/pxa27x_overlay-r4.patch b/packages/linux/logicpd-pxa270-2.6.19.2/pxa27x_overlay-r4.patch
new file mode 100644
index 0000000000..8e319d5f3e
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/pxa27x_overlay-r4.patch
@@ -0,0 +1,2469 @@
+ drivers/video/Kconfig | 18
+ drivers/video/Makefile | 1
+ drivers/video/pxafb.c | 303 +++++--
+ drivers/video/pxafb.h | 65 +
+ drivers/video/pxafb_overlay.c | 1550 ++++++++++++++++++++++++++++++++++++
+ include/asm-arm/arch-pxa/pxa-regs.h | 112 ++
+ 6 files changed, 1994 insertions(+), 55 deletions(-)
+
+Index: linux-2.6.19/drivers/video/Kconfig
+===================================================================
+--- linux-2.6.19.orig/drivers/video/Kconfig 2006-12-16 18:35:40.000000000 +0000
++++ linux-2.6.19/drivers/video/Kconfig 2006-12-16 18:36:17.000000000 +0000
+@@ -1520,6 +1520,24 @@ config FB_PXA
+
+ If unsure, say N.
+
++choice
++ prompt "PXA LCD type"
++ depends on FB_PXA
++
++config FB_PXA_LCD_QVGA
++ bool "QVGA(320x240)"
++
++config FB_PXA_LCD_VGA
++ bool "VGA (640x480)"
++
++endchoice
++
++config FB_PXA_OVERLAY
++ tristate "PXA LCD overlay support"
++ depends on FB_PXA
++ ---help---
++ Frame buffer overlay driver for PXA27x
++
+ config FB_PXA_PARAMETERS
+ bool "PXA LCD command line parameters"
+ default n
+Index: linux-2.6.19/drivers/video/Makefile
+===================================================================
+--- linux-2.6.19.orig/drivers/video/Makefile 2006-12-16 18:35:40.000000000 +0000
++++ linux-2.6.19/drivers/video/Makefile 2006-12-16 18:36:17.000000000 +0000
+@@ -86,6 +86,7 @@ obj-$(CONFIG_FB_GBE) += gbe
+ obj-$(CONFIG_FB_CIRRUS) += cirrusfb.o
+ obj-$(CONFIG_FB_ASILIANT) += asiliantfb.o
+ obj-$(CONFIG_FB_PXA) += pxafb.o
++obj-$(CONFIG_FB_PXA_OVERLAY) += pxafb_overlay.o
+ obj-$(CONFIG_FB_W100) += w100fb.o
+ obj-$(CONFIG_FB_AU1100) += au1100fb.o
+ obj-$(CONFIG_FB_AU1200) += au1200fb.o
+Index: linux-2.6.19/drivers/video/pxafb.c
+===================================================================
+--- linux-2.6.19.orig/drivers/video/pxafb.c 2006-12-16 18:36:12.000000000 +0000
++++ linux-2.6.19/drivers/video/pxafb.c 2006-12-16 18:38:29.000000000 +0000
+@@ -58,17 +58,49 @@
+ #define LCCR0_INVALID_CONFIG_MASK (LCCR0_OUM|LCCR0_BM|LCCR0_QDM|LCCR0_DIS|LCCR0_EFM|LCCR0_IUM|LCCR0_SFM|LCCR0_LDM|LCCR0_ENB)
+ #define LCCR3_INVALID_CONFIG_MASK (LCCR3_HSP|LCCR3_VSP|LCCR3_PCD|LCCR3_BPP)
+
++wait_queue_head_t fcs_wait_eof;
++int fcs_in_eof;
++static DECLARE_MUTEX(fcs_lcd_sem);
++
+ static void (*pxafb_backlight_power)(int);
+ static void (*pxafb_lcd_power)(int, struct fb_var_screeninfo *);
+
+ static int pxafb_activate_var(struct fb_var_screeninfo *var, struct pxafb_info *);
+-static void set_ctrlr_state(struct pxafb_info *fbi, u_int state);
++void pxafb_set_ctrlr_state(struct pxafb_info *fbi, u_int state);
+
+ #ifdef CONFIG_FB_PXA_PARAMETERS
+ #define PXAFB_OPTIONS_SIZE 256
+ static char g_options[PXAFB_OPTIONS_SIZE] __initdata = "";
+ #endif
+
++static struct pxafb_rgb def_rgb_8 = {
++ red: { offset: 0, length: 8, },
++ green: { offset: 0, length: 8, },
++ blue: { offset: 0, length: 8, },
++ transp: { offset: 0, length: 0, },
++};
++
++static struct pxafb_rgb def_rgb_16 = {
++ red: { offset: 11, length: 5, },
++ green: { offset: 5, length: 6, },
++ blue: { offset: 0, length: 5, },
++ transp: { offset: 0, length: 0, },
++};
++
++static struct pxafb_rgb def_rgb_18 = {
++ red: { offset: 12, length: 6, },
++ green: { offset: 6, length: 6, },
++ blue: { offset: 0, length: 6, },
++ transp: { offset: 0, length: 0, },
++};
++
++static struct pxafb_rgb def_rgb_24 = {
++ red: { offset: 16, length: 8, },
++ green: { offset: 8, length: 8, },
++ blue: { offset: 0, length: 8, },
++ transp: { offset: 0, length: 0, },
++};
++
+ static inline void pxafb_schedule_work(struct pxafb_info *fbi, u_int state)
+ {
+ unsigned long flags;
+@@ -190,6 +222,10 @@ static int pxafb_bpp_to_lccr3(struct fb_
+ case 4: ret = LCCR3_4BPP; break;
+ case 8: ret = LCCR3_8BPP; break;
+ case 16: ret = LCCR3_16BPP; break;
++ case 18: ret = LCCR3_18BPP; break;
++ case 19: ret = LCCR3_19BPP; break;
++ case 24: ret = LCCR3_24BPP; break;
++ case 25: ret = LCCR3_25BPP; break;
+ }
+ return ret;
+ }
+@@ -301,18 +337,34 @@ static int pxafb_check_var(struct fb_var
+ * The pixel packing format is described on page 7-11 of the
+ * PXA2XX Developer's Manual.
+ */
+- if (var->bits_per_pixel == 16) {
+- var->red.offset = 11; var->red.length = 5;
+- var->green.offset = 5; var->green.length = 6;
+- var->blue.offset = 0; var->blue.length = 5;
+- var->transp.offset = var->transp.length = 0;
+- } else {
+- var->red.offset = var->green.offset = var->blue.offset = var->transp.offset = 0;
+- var->red.length = 8;
+- var->green.length = 8;
+- var->blue.length = 8;
+- var->transp.length = 0;
+- }
++ switch (var->bits_per_pixel) {
++ case 16:
++ /* 2 pixels per line */
++ var->red = def_rgb_16.red;
++ var->green = def_rgb_16.green;
++ var->blue = def_rgb_16.blue;
++ var->transp = def_rgb_16.transp;
++ break;
++ case 18:
++ case 19:
++ var->red = def_rgb_18.red;
++ var->green = def_rgb_18.green;
++ var->blue = def_rgb_18.blue;
++ var->transp = def_rgb_18.transp;
++ break;
++ case 24:
++ case 25:
++ var->red = def_rgb_24.red;
++ var->green = def_rgb_24.green;
++ var->blue = def_rgb_24.blue;
++ var->transp = def_rgb_24.transp;
++ break;
++ default:
++ var->red = def_rgb_8.red;
++ var->green = def_rgb_8.green;
++ var->blue = def_rgb_8.blue;
++ var->transp = def_rgb_8.transp;
++ }
+
+ #ifdef CONFIG_CPU_FREQ
+ pr_debug("pxafb: dma period = %d ps, clock = %d kHz\n",
+@@ -326,7 +378,7 @@ static int pxafb_check_var(struct fb_var
+ static inline void pxafb_set_truecolor(u_int is_true_color)
+ {
+ pr_debug("pxafb: true_color = %d\n", is_true_color);
+- // do your machine-specific setup if needed
++ /* do your machine-specific setup if needed */
+ }
+
+ /*
+@@ -341,7 +393,8 @@ static int pxafb_set_par(struct fb_info
+
+ pr_debug("pxafb: set_par\n");
+
+- if (var->bits_per_pixel == 16)
++ if (var->bits_per_pixel == 16 || var->bits_per_pixel == 18 ||var->bits_per_pixel == 19
++ || var->bits_per_pixel == 24 || var->bits_per_pixel == 25)
+ fbi->fb.fix.visual = FB_VISUAL_TRUECOLOR;
+ else if (!fbi->cmap_static)
+ fbi->fb.fix.visual = FB_VISUAL_PSEUDOCOLOR;
+@@ -354,12 +407,25 @@ static int pxafb_set_par(struct fb_info
+ fbi->fb.fix.visual = FB_VISUAL_STATIC_PSEUDOCOLOR;
+ }
+
+- fbi->fb.fix.line_length = var->xres_virtual *
+- var->bits_per_pixel / 8;
+- if (var->bits_per_pixel == 16)
+- fbi->palette_size = 0;
+- else
+- fbi->palette_size = var->bits_per_pixel == 1 ? 4 : 1 << var->bits_per_pixel;
++ switch (var->bits_per_pixel) {
++ case 16:
++ fbi->fb.fix.line_length = var->xres_virtual * 2;
++ fbi->palette_size = 0;
++ break;
++ case 18:
++ case 19:
++ fbi->fb.fix.line_length = var->xres_virtual * 3;
++ fbi->palette_size = 0;
++ break;
++ case 24:
++ case 25:
++ fbi->fb.fix.line_length = var->xres_virtual * 4;
++ fbi->palette_size = 0;
++ break;
++ default:
++ fbi->fb.fix.line_length = var->xres_virtual * var->bits_per_pixel / 8;
++ fbi->palette_size = var->bits_per_pixel == 1 ? 4 : 1 << var->bits_per_pixel;
++ }
+
+ palette_mem_size = fbi->palette_size * sizeof(u16);
+
+@@ -373,7 +439,8 @@ static int pxafb_set_par(struct fb_info
+ */
+ pxafb_set_truecolor(fbi->fb.fix.visual == FB_VISUAL_TRUECOLOR);
+
+- if (fbi->fb.var.bits_per_pixel == 16)
++ if (fbi->fb.var.bits_per_pixel == 16 || fbi->fb.var.bits_per_pixel == 18 ||fbi->fb.var.bits_per_pixel == 19
++ || fbi->fb.var.bits_per_pixel == 24 || fbi->fb.var.bits_per_pixel == 25)
+ fb_dealloc_cmap(&fbi->fb.cmap);
+ else
+ fb_alloc_cmap(&fbi->fb.cmap, 1<<fbi->fb.var.bits_per_pixel, 0);
+@@ -419,7 +486,7 @@ static int pxafb_set_par(struct fb_info
+ * 16 bpp mode does not really use the palette, so this will not
+ * blank the display in all modes.
+ */
+-static int pxafb_blank(int blank, struct fb_info *info)
++int pxafb_blank(int blank, struct fb_info *info)
+ {
+ struct pxafb_info *fbi = (struct pxafb_info *)info;
+ int i;
+@@ -436,19 +503,20 @@ static int pxafb_blank(int blank, struct
+ for (i = 0; i < fbi->palette_size; i++)
+ pxafb_setpalettereg(i, 0, 0, 0, 0, info);
+
+- pxafb_schedule_work(fbi, C_DISABLE);
+- //TODO if (pxafb_blank_helper) pxafb_blank_helper(blank);
++ pxafb_schedule_work(fbi, C_BLANK);
++ /* TODO if (pxafb_blank_helper) pxafb_blank_helper(blank); */
+ break;
+
+ case FB_BLANK_UNBLANK:
+- //TODO if (pxafb_blank_helper) pxafb_blank_helper(blank);
++ /* TODO if (pxafb_blank_helper) pxafb_blank_helper(blank); */
+ if (fbi->fb.fix.visual == FB_VISUAL_PSEUDOCOLOR ||
+ fbi->fb.fix.visual == FB_VISUAL_STATIC_PSEUDOCOLOR)
+ fb_set_cmap(&fbi->fb.cmap, info);
+- pxafb_schedule_work(fbi, C_ENABLE);
++ pxafb_schedule_work(fbi, C_UNBLANK);
+ }
+ return 0;
+ }
++EXPORT_SYMBOL(pxafb_blank);
+
+ static int pxafb_mmap(struct fb_info *info,
+ struct vm_area_struct *vma)
+@@ -582,6 +650,10 @@ static int pxafb_activate_var(struct fb_
+ case 4:
+ case 8:
+ case 16:
++ case 18:
++ case 19:
++ case 24:
++ case 25:
+ break;
+ default:
+ printk(KERN_ERR "%s: invalid bit depth %d\n",
+@@ -613,7 +685,10 @@ static int pxafb_activate_var(struct fb_
+
+ new_regs.lccr0 = fbi->lccr0 |
+ (LCCR0_LDM | LCCR0_SFM | LCCR0_IUM | LCCR0_EFM |
+- LCCR0_QDM | LCCR0_BM | LCCR0_OUM);
++#ifdef CONFIG_PXA27x /* Enable overlay for PXA27x */
++ LCCR0_OUC | LCCR0_CMDIM | LCCR0_RDSTM |
++#endif
++ LCCR0_QDM | LCCR0_BM | LCCR0_OUM);
+
+ new_regs.lccr1 =
+ LCCR1_DisWdth(var->xres) +
+@@ -672,13 +747,14 @@ static int pxafb_activate_var(struct fb_
+
+ fbi->dmadesc_fbhigh_cpu->fsadr = fbi->screen_dma;
+ fbi->dmadesc_fbhigh_cpu->fidr = 0;
+- fbi->dmadesc_fbhigh_cpu->ldcmd = BYTES_PER_PANEL;
++ fbi->dmadesc_fbhigh_cpu->ldcmd = BYTES_PER_PANEL | LDCMD_EOFINT;
+
+ fbi->dmadesc_palette_cpu->fsadr = fbi->palette_dma;
+ fbi->dmadesc_palette_cpu->fidr = 0;
+ fbi->dmadesc_palette_cpu->ldcmd = (fbi->palette_size * 2) | LDCMD_PAL;
+
+- if (var->bits_per_pixel == 16) {
++ if (var->bits_per_pixel == 16 || var->bits_per_pixel == 18 ||var->bits_per_pixel == 19
++ || var->bits_per_pixel == 24 || var->bits_per_pixel == 25) {
+ /* palette shouldn't be loaded in true-color mode */
+ fbi->dmadesc_fbhigh_cpu->fdadr = fbi->dmadesc_fbhigh_dma;
+ fbi->fdadr0 = fbi->dmadesc_fbhigh_dma; /* no pal just fbhigh */
+@@ -731,8 +807,8 @@ static int pxafb_activate_var(struct fb_
+ }
+
+ /*
+- * NOTE! The following functions are purely helpers for set_ctrlr_state.
+- * Do not call them directly; set_ctrlr_state does the correct serialisation
++ * NOTE! The following functions are purely helpers for pxafb_set_ctrlr_state.
++ * Do not call them directly; pxafb_set_ctrlr_state does the correct serialisation
+ * to ensure that things happen in the right way 100% of time time.
+ * -- rmk
+ */
+@@ -754,7 +830,8 @@ static inline void __pxafb_lcd_power(str
+
+ static void pxafb_setup_gpio(struct pxafb_info *fbi)
+ {
+- int gpio, ldd_bits;
++ int gpio;
++ int ldd_bits = 0;
+ unsigned int lccr0 = fbi->lccr0;
+
+ /*
+@@ -764,28 +841,56 @@ static void pxafb_setup_gpio(struct pxaf
+ /* 4 bit interface */
+ if ((lccr0 & LCCR0_CMS) == LCCR0_Mono &&
+ (lccr0 & LCCR0_SDS) == LCCR0_Sngl &&
+- (lccr0 & LCCR0_DPD) == LCCR0_4PixMono)
++ (lccr0 & LCCR0_DPD) == LCCR0_4PixMono) {
+ ldd_bits = 4;
+-
++ }
+ /* 8 bit interface */
+ else if (((lccr0 & LCCR0_CMS) == LCCR0_Mono &&
+ ((lccr0 & LCCR0_SDS) == LCCR0_Dual || (lccr0 & LCCR0_DPD) == LCCR0_8PixMono)) ||
+ ((lccr0 & LCCR0_CMS) == LCCR0_Color &&
+- (lccr0 & LCCR0_PAS) == LCCR0_Pas && (lccr0 & LCCR0_SDS) == LCCR0_Sngl))
++ (lccr0 & LCCR0_PAS) == LCCR0_Pas && (lccr0 & LCCR0_SDS) == LCCR0_Sngl)) {
+ ldd_bits = 8;
+-
++ }
+ /* 16 bit interface */
+- else if ((lccr0 & LCCR0_CMS) == LCCR0_Color &&
+- ((lccr0 & LCCR0_SDS) == LCCR0_Dual || (lccr0 & LCCR0_PAS) == LCCR0_Act))
+- ldd_bits = 16;
++ else if ((lccr0 & LCCR0_CMS) == LCCR0_Color &&
++ ((lccr0 & LCCR0_SDS) == LCCR0_Dual || (lccr0 & LCCR0_PAS) == LCCR0_Act)) {
++ switch (fbi->fb.var.bits_per_pixel) {
++ case 16:
++#ifdef CONFIG_PXA27x
++ /* bits 58-77 */
++ GPDR1 |= (0x3f << 26);
++ GPDR2 |= 0x00003fff;
++
++ GAFR1_U = (GAFR1_U & ~(0xfff << 20)) | (0xaaa << 20);
++ GAFR2_L = (GAFR2_L & 0xf0000000) | 0x0aaaaaaa;
++#endif
++ ldd_bits = 16;
++ break;
++ case 18:
++ case 19:
++ case 24:
++ case 25:
++#ifdef CONFIG_PXA27x
++ /* bits 58-77 and 86, 87 */
++ GPDR1 |= (0x3f << 26);
++ GPDR2 |= 0x00c03fff;
+
++ GAFR1_U = (GAFR1_U & ~(0xfff << 20)) | (0xaaa << 20);
++ GAFR2_L = (GAFR2_L & 0xf0000000) | 0x0aaaaaaa;
++ GAFR2_U = (GAFR2_U & 0xffff0fff) | 0xa000;
++#endif
++ ldd_bits = 25;
++ break;
++ }
++ }
+ else {
+ printk(KERN_ERR "pxafb_setup_gpio: unable to determine bits per pixel\n");
+ return;
+ }
+
+- for (gpio = 58; ldd_bits; gpio++, ldd_bits--)
++ for (gpio = 58; ldd_bits > 0; gpio++, ldd_bits--) {
+ pxa_gpio_mode(gpio | GPIO_ALT_FN_2_OUT);
++ }
+ pxa_gpio_mode(GPIO74_LCD_FCLK_MD);
+ pxa_gpio_mode(GPIO75_LCD_LCLK_MD);
+ pxa_gpio_mode(GPIO76_LCD_PCLK_MD);
+@@ -805,6 +910,7 @@ static void pxafb_enable_controller(stru
+ /* enable LCD controller clock */
+ pxa_set_cken(CKEN16_LCD, 1);
+
++ down(&fcs_lcd_sem);
+ /* Sequence from 11.7.10 */
+ LCCR3 = fbi->reg_lccr3;
+ LCCR2 = fbi->reg_lccr2;
+@@ -815,6 +921,8 @@ static void pxafb_enable_controller(stru
+ FDADR1 = fbi->fdadr1;
+ LCCR0 |= LCCR0_ENB;
+
++ up(&fcs_lcd_sem);
++
+ pr_debug("FDADR0 0x%08x\n", (unsigned int) FDADR0);
+ pr_debug("FDADR1 0x%08x\n", (unsigned int) FDADR1);
+ pr_debug("LCCR0 0x%08x\n", (unsigned int) LCCR0);
+@@ -829,6 +937,7 @@ static void pxafb_disable_controller(str
+
+ pr_debug("pxafb: disabling LCD controller\n");
+
++ down(&fcs_lcd_sem);
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ add_wait_queue(&fbi->ctrlr_wait, &wait);
+
+@@ -838,6 +947,7 @@ static void pxafb_disable_controller(str
+
+ schedule_timeout(200 * HZ / 1000);
+ remove_wait_queue(&fbi->ctrlr_wait, &wait);
++ up(&fcs_lcd_sem);
+
+ /* disable LCD controller clock */
+ pxa_set_cken(CKEN16_LCD, 0);
+@@ -855,6 +965,11 @@ static irqreturn_t pxafb_handle_irq(int
+ LCCR0 |= LCCR0_LDM;
+ wake_up(&fbi->ctrlr_wait);
+ }
++ if (lcsr & LCSR_EOF && fcs_in_eof) {
++ LCCR0 |= LCCR0_EFM;
++ fcs_in_eof = 0;
++ wake_up(&fcs_wait_eof);
++ }
+
+ LCSR = lcsr;
+ return IRQ_HANDLED;
+@@ -865,7 +980,7 @@ static irqreturn_t pxafb_handle_irq(int
+ * sleep when disabling the LCD controller, or if we get two contending
+ * processes trying to alter state.
+ */
+-static void set_ctrlr_state(struct pxafb_info *fbi, u_int state)
++void pxafb_set_ctrlr_state(struct pxafb_info *fbi, u_int state)
+ {
+ u_int old_state;
+
+@@ -887,7 +1002,9 @@ static void set_ctrlr_state(struct pxafb
+ */
+ if (old_state != C_DISABLE && old_state != C_DISABLE_PM) {
+ fbi->state = state;
+- //TODO __pxafb_lcd_power(fbi, 0);
++ /* TODO __pxafb_lcd_power(fbi, 0); */
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_DISABLE);
+ pxafb_disable_controller(fbi);
+ }
+ break;
+@@ -901,6 +1018,8 @@ static void set_ctrlr_state(struct pxafb
+ fbi->state = state;
+ __pxafb_backlight_power(fbi, 0);
+ __pxafb_lcd_power(fbi, 0);
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_DISABLE);
+ if (old_state != C_DISABLE_CLKCHANGE)
+ pxafb_disable_controller(fbi);
+ }
+@@ -914,7 +1033,9 @@ static void set_ctrlr_state(struct pxafb
+ if (old_state == C_DISABLE_CLKCHANGE) {
+ fbi->state = C_ENABLE;
+ pxafb_enable_controller(fbi);
+- //TODO __pxafb_lcd_power(fbi, 1);
++ /* TODO __pxafb_lcd_power(fbi, 1); */
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_ENABLE);
+ }
+ break;
+
+@@ -926,9 +1047,13 @@ static void set_ctrlr_state(struct pxafb
+ */
+ if (old_state == C_ENABLE) {
+ __pxafb_lcd_power(fbi, 0);
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_DISABLE);
+ pxafb_disable_controller(fbi);
+ pxafb_setup_gpio(fbi);
+ pxafb_enable_controller(fbi);
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_ENABLE);
+ __pxafb_lcd_power(fbi, 1);
+ }
+ break;
+@@ -954,11 +1079,46 @@ static void set_ctrlr_state(struct pxafb
+ pxafb_enable_controller(fbi);
+ __pxafb_lcd_power(fbi, 1);
+ __pxafb_backlight_power(fbi, 1);
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_ENABLE);
+ }
+ break;
++
++ case C_BLANK:
++ /*
++ * Disable controller, blank overlays if exist.
++ */
++ if ((old_state != C_DISABLE) && (old_state != C_BLANK)) {
++ fbi->state = state;
++ __pxafb_backlight_power(fbi, 0);
++ __pxafb_lcd_power(fbi, 0);
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_BLANK);
++ if (old_state != C_DISABLE_CLKCHANGE)
++ pxafb_disable_controller(fbi);
++ }
++ break;
++
++ case C_UNBLANK:
++ /*
++ * Power up the LCD screen, enable controller, and
++ * turn on the backlight, unblank overlays if exist.
++ */
++ if ((old_state != C_ENABLE) && (old_state != C_UNBLANK)) {
++ fbi->state = C_UNBLANK;
++ pxafb_setup_gpio(fbi);
++ pxafb_enable_controller(fbi);
++ __pxafb_lcd_power(fbi, 1);
++ __pxafb_backlight_power(fbi, 1);
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_UNBLANK);
++ }
++ break;
++
+ }
+ up(&fbi->ctrlr_sem);
+ }
++EXPORT_SYMBOL(pxafb_set_ctrlr_state);
+
+ /*
+ * Our LCD controller task (which is called when we blank or unblank)
+@@ -969,7 +1129,7 @@ static void pxafb_task(void *dummy)
+ struct pxafb_info *fbi = dummy;
+ u_int state = xchg(&fbi->task_state, -1);
+
+- set_ctrlr_state(fbi, state);
++ pxafb_set_ctrlr_state(fbi, state);
+ }
+
+ #ifdef CONFIG_CPU_FREQ
+@@ -984,19 +1144,29 @@ static int
+ pxafb_freq_transition(struct notifier_block *nb, unsigned long val, void *data)
+ {
+ struct pxafb_info *fbi = TO_INF(nb, freq_transition);
+- //TODO struct cpufreq_freqs *f = data;
++ /* TODO struct cpufreq_freqs *f = data; */
++ struct cpufreq_freqs *clkinfo;
+ u_int pcd;
++ u_int lccr3;
+
+ switch (val) {
+ case CPUFREQ_PRECHANGE:
+- set_ctrlr_state(fbi, C_DISABLE_CLKCHANGE);
++ pxafb_set_ctrlr_state(fbi, C_DISABLE_CLKCHANGE);
+ break;
+
+ case CPUFREQ_POSTCHANGE:
++ clkinfo = (struct cpufreq_freqs *)data;
++ /* If leaving a 13kHz state with the LCD sustained */
++ if ((clkinfo->old == 13000))
++ break;
++
+ pcd = get_pcd(fbi->fb.var.pixclock);
++ lccr3 = fbi->reg_lccr3;
+ set_hsync_time(fbi, pcd);
+ fbi->reg_lccr3 = (fbi->reg_lccr3 & ~0xff) | LCCR3_PixClkDiv(pcd);
+- set_ctrlr_state(fbi, C_ENABLE_CLKCHANGE);
++ pxafb_set_ctrlr_state(fbi, C_ENABLE_CLKCHANGE);
++ if (lccr3 != fbi->reg_lccr3 && !((LCCR0 & LCCR0_DIS) || !(LCCR0 & LCCR0_ENB)))
++ LCCR3 = fbi->reg_lccr3;
+ break;
+ }
+ return 0;
+@@ -1015,7 +1185,7 @@ pxafb_freq_policy(struct notifier_block
+ printk(KERN_DEBUG "min dma period: %d ps, "
+ "new clock %d kHz\n", pxafb_display_dma_period(var),
+ policy->max);
+- // TODO: fill in min/max values
++ /* TODO: fill in min/max values */
+ break;
+ #if 0
+ case CPUFREQ_NOTIFY:
+@@ -1041,7 +1211,7 @@ static int pxafb_suspend(struct platform
+ {
+ struct pxafb_info *fbi = platform_get_drvdata(dev);
+
+- set_ctrlr_state(fbi, C_DISABLE_PM);
++ pxafb_set_ctrlr_state(fbi, C_DISABLE_PM);
+ return 0;
+ }
+
+@@ -1049,7 +1219,11 @@ static int pxafb_resume(struct platform_
+ {
+ struct pxafb_info *fbi = platform_get_drvdata(dev);
+
+- set_ctrlr_state(fbi, C_ENABLE_PM);
++ pxafb_set_ctrlr_state(fbi, C_ENABLE_PM);
++//RP#ifdef CONFIG_PXA27x
++//RP LCCR4 |= (1 << 31); /* Disable the PCD Divisor, PCDDIV */
++//RP LCCR4 |= (5 << 17); /* Undocumented feature */
++//RP#endif
+ return 0;
+ }
+ #else
+@@ -1153,11 +1327,21 @@ static struct pxafb_info * __init pxafb_
+ fbi->task_state = (u_char)-1;
+
+ for (i = 0; i < inf->num_modes; i++) {
+- smemlen = mode[i].xres * mode[i].yres * mode[i].bpp / 8;
++ if (mode[i].bpp <= 16) { /* 8, 16 bpp */
++ smemlen = mode[i].xres * mode[i].yres * mode[i].bpp / 8;
++ } else if ( mode[i].bpp > 19 ) { /* 24, 25 bpp */
++ smemlen = mode[i].xres * mode[i].yres * 4;
++ } else { /* 18, 19 bpp */
++ /* packed format */
++ smemlen = mode[i].xres * mode[i].yres * 3;
++ }
++
+ if (smemlen > fbi->fb.fix.smem_len)
+ fbi->fb.fix.smem_len = smemlen;
+ }
+
++ fbi->set_overlay_ctrlr_state = NULL;
++
+ init_waitqueue_head(&fbi->ctrlr_wait);
+ INIT_WORK(&fbi->task, pxafb_task, fbi);
+ init_MUTEX(&fbi->ctrlr_sem);
+@@ -1224,6 +1408,10 @@ static int __init pxafb_parse_options(st
+ case 4:
+ case 8:
+ case 16:
++ case 18:
++ case 19:
++ case 24:
++ case 25:
+ inf->modes[0].bpp = bpp;
+ dev_info(dev, "overriding bit depth: %d\n", bpp);
+ break;
+@@ -1372,7 +1560,7 @@ int __init pxafb_probe(struct platform_d
+ fbi = pxafb_init_fbinfo(&dev->dev);
+ if (!fbi) {
+ dev_err(&dev->dev, "Failed to initialize framebuffer device\n");
+- ret = -ENOMEM; // only reason for pxafb_init_fbinfo to fail is kmalloc
++ ret = -ENOMEM; /* only reason for pxafb_init_fbinfo to fail is kmalloc */
+ goto failed;
+ }
+
+@@ -1407,7 +1595,7 @@ int __init pxafb_probe(struct platform_d
+ }
+
+ #ifdef CONFIG_PM
+- // TODO
++ /* TODO */
+ #endif
+
+ #ifdef CONFIG_CPU_FREQ
+@@ -1420,7 +1608,12 @@ int __init pxafb_probe(struct platform_d
+ /*
+ * Ok, now enable the LCD controller
+ */
+- set_ctrlr_state(fbi, C_ENABLE);
++ pxafb_set_ctrlr_state(fbi, C_ENABLE);
++//#ifdef CONFIG_PXA27x
++// LCCR4 |= (1 << 31); /* Disabel the PCD Divisor, PCDDIV */
++// LCCR4 |= (5 << 17); /* Undocumented feature */
++//#endif
++ init_waitqueue_head(&fcs_wait_eof);
+
+ return 0;
+
+Index: linux-2.6.19/drivers/video/pxafb.h
+===================================================================
+--- linux-2.6.19.orig/drivers/video/pxafb.h 2006-12-16 18:35:40.000000000 +0000
++++ linux-2.6.19/drivers/video/pxafb.h 2006-12-16 18:36:17.000000000 +0000
+@@ -29,6 +29,60 @@ struct pxafb_lcd_reg {
+ unsigned int lccr3;
+ };
+
++struct pxafb_rgb {
++ struct fb_bitfield red;
++ struct fb_bitfield green;
++ struct fb_bitfield blue;
++ struct fb_bitfield transp;
++};
++
++#ifdef CONFIG_PXA27x
++/* PXA Overlay Framebuffer Support */
++struct overlayfb_info
++{
++ struct fb_info fb;
++
++ struct fb_var_screeninfo old_var;
++
++ struct semaphore mutex;
++ unsigned long refcount;
++
++ struct pxafb_info *basefb;
++
++ unsigned long map_cpu;
++ unsigned long screen_cpu;
++ unsigned long palette_cpu;
++ unsigned long map_size;
++ unsigned long palette_size;
++
++ dma_addr_t screen_dma;
++ dma_addr_t map_dma;
++ dma_addr_t palette_dma;
++
++ volatile u_char state;
++
++ /* overlay specific info */
++ unsigned long xpos; /* screen position (x, y)*/
++ unsigned long ypos;
++ unsigned long format;
++
++ /* additional */
++ union {
++ struct pxafb_dma_descriptor *dma0;
++ struct pxafb_dma_descriptor *dma1;
++ struct {
++ struct pxafb_dma_descriptor *dma2;
++ struct pxafb_dma_descriptor *dma3;
++ struct pxafb_dma_descriptor *dma4;
++ };
++ struct {
++ struct pxafb_dma_descriptor *dma5_pal;
++ struct pxafb_dma_descriptor *dma5_frame;
++ };
++ };
++};
++#endif
++
+ /* PXA LCD DMA descriptor */
+ struct pxafb_dma_descriptor {
+ unsigned int fdadr;
+@@ -87,6 +141,14 @@ struct pxafb_info {
+ wait_queue_head_t ctrlr_wait;
+ struct work_struct task;
+
++#ifdef CONFIG_PXA27x
++ /* PXA Overlay Framebuffer Support */
++ struct overlayfb_info *overlay1fb;
++ struct overlayfb_info *overlay2fb;
++ struct overlayfb_info *cursorfb;
++#endif
++ void (*set_overlay_ctrlr_state)(struct pxafb_info *, u_int);
++
+ #ifdef CONFIG_CPU_FREQ
+ struct notifier_block freq_transition;
+ struct notifier_block freq_policy;
+@@ -106,6 +168,9 @@ struct pxafb_info {
+ #define C_DISABLE_PM (5)
+ #define C_ENABLE_PM (6)
+ #define C_STARTUP (7)
++#define C_BLANK (8)
++#define C_UNBLANK (9)
++
+
+ #define PXA_NAME "PXA"
+
+Index: linux-2.6.19/drivers/video/pxafb_overlay.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.19/drivers/video/pxafb_overlay.c 2006-12-16 18:36:17.000000000 +0000
+@@ -0,0 +1,1550 @@
++/*
++ * linux/drivers/video/pxafb_overlay.c
++ *
++ * Copyright (c) 2004, Intel Corporation
++ *
++ * Code Status:
++ * 2004/10/28: <yan.yin@intel.com>
++ * - Ported to 2.6 kernel
++ * - Made overlay driver a loadable module
++ * - Merged overlay optimized patch
++ * 2004/03/10: <stanley.cai@intel.com>
++ * - Fixed Bugs
++ * - Added workaround for overlay1&2
++ * 2003/08/27: <yu.tang@intel.com>
++ * - Added Overlay 1 & Overlay2 & Hardware Cursor support
++ *
++ *
++ * This software program is licensed subject to the GNU Lesser General
++ * Public License (LGPL). Version 2.1, February 1999, available at
++ * http://www.gnu.org/copyleft/lesser.html
++ *
++ * Intel PXA27x LCD Controller Frame Buffer Overlay Driver
++ *
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/kernel.h>
++#include <linux/sched.h>
++#include <linux/errno.h>
++#include <linux/string.h>
++#include <linux/interrupt.h>
++#include <linux/slab.h>
++#include <linux/fb.h>
++#include <linux/delay.h>
++#include <linux/init.h>
++#include <linux/ioport.h>
++#include <linux/cpufreq.h>
++#include <linux/device.h>
++#include <linux/platform_device.h>
++#include <linux/dma-mapping.h>
++
++#include <asm/hardware.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++#include <asm/uaccess.h>
++#include <asm/arch/bitfield.h>
++#include <asm/arch/pxafb.h>
++#include <asm/arch/pxa-regs.h>
++
++#include "pxafb.h"
++
++/* LCD enhancement : Overlay 1 & 2 & Hardware Cursor */
++
++/*
++ * LCD enhancement : Overlay 1
++ *
++ * Features:
++ * - support 16bpp (No palette)
++ */
++/*
++ * debugging?
++ */
++#define DEBUG 0
++
++#ifdef DEBUG
++#define dbg(fmt,arg...) printk(KERN_ALERT "%s(): " fmt "\n", __FUNCTION__, ##arg)
++#else
++#define dbg(fmt,arg...)
++#endif
++
++static int overlay1fb_enable(struct fb_info *info);
++static int overlay2fb_enable(struct fb_info *info);
++static int cursorfb_enable(struct fb_info *info);
++
++static int overlay1fb_disable(struct fb_info *info);
++static int overlay2fb_disable(struct fb_info *info);
++static int cursorfb_disable(struct fb_info *info);
++
++static int overlay1fb_blank(int blank, struct fb_info *info);
++static int overlay2fb_blank(int blank, struct fb_info *info);
++static int cursorfb_blank(int blank, struct fb_info *info);
++
++extern void pxafb_set_ctrlr_state(struct pxafb_info *fbi, u_int state);
++extern int pxafb_blank(int blank, struct fb_info *info);
++
++static struct pxafb_rgb def_rgb_18 = {
++ red: { offset: 12, length: 6, },
++ green: { offset: 6, length: 6, },
++ blue: { offset: 0, length: 6, },
++ transp: { offset: 0, length: 0, },
++};
++
++static struct pxafb_rgb def_rgbt_16 = {
++ red: { offset: 10, length: 5, },
++ green: { offset: 5, length: 5, },
++ blue: { offset: 0, length: 5, },
++ transp: { offset: 15, length: 1, },
++};
++
++static struct pxafb_rgb def_rgbt_19 = {
++ red: { offset: 12, length: 6, },
++ green: { offset: 6, length: 6, },
++ blue: { offset: 0, length: 6, },
++ transp: { offset: 18, length: 1, },
++};
++
++static struct pxafb_rgb def_rgbt_24 = {
++ red: { offset: 16, length: 7, },
++ green: { offset: 8, length: 8, },
++ blue: { offset: 0, length: 8, },
++ transp: { offset: 0, length: 0, },
++};
++
++static struct pxafb_rgb def_rgbt_25 = {
++ red: { offset: 16, length: 8, },
++ green: { offset: 8, length: 8, },
++ blue: { offset: 0, length: 8, },
++ transp: { offset: 24, length: 1, },
++};
++
++#define CLEAR_LCD_INTR(reg, intr) do { \
++ reg = (intr); \
++}while(0)
++
++#define WAIT_FOR_LCD_INTR(reg,intr,timeout) ({ \
++ int __done =0; \
++ int __t = timeout; \
++ while (__t) { \
++ __done = (reg) & (intr); \
++ if (__done) break; \
++ mdelay(10); \
++ __t--; \
++ } \
++ if (!__t) dbg("wait " #intr " timeount");\
++ __done; \
++})
++
++#define DISABLE_OVERLAYS(fbi) do { \
++ if (fbi->overlay1fb && (fbi->overlay1fb->state == C_ENABLE)) { \
++ overlay1fb_disable((struct fb_info*)fbi->overlay1fb); \
++ } \
++ if (fbi->overlay2fb && (fbi->overlay2fb->state == C_ENABLE)) { \
++ overlay2fb_disable((struct fb_info*)fbi->overlay2fb); \
++ } \
++ if (fbi->cursorfb && (fbi->cursorfb->state == C_ENABLE)) { \
++ cursorfb_disable((struct fb_info*)fbi->cursorfb); \
++ } \
++}while(0)
++
++#define ENABLE_OVERLAYS(fbi) do { \
++ if (fbi->overlay1fb && (fbi->overlay1fb->state == C_DISABLE)){ \
++ overlay1fb_enable((struct fb_info*)fbi->overlay1fb); \
++ } \
++ if (fbi->overlay2fb && (fbi->overlay2fb->state == C_DISABLE)){ \
++ overlay2fb_enable((struct fb_info*)fbi->overlay2fb); \
++ } \
++ if (fbi->cursorfb && (fbi->cursorfb->state == C_DISABLE)){ \
++ cursorfb_enable((struct fb_info*)fbi->cursorfb); \
++ } \
++}while(0)
++
++#define BLANK_OVERLAYS(fbi) do { \
++ if (fbi->overlay1fb && (fbi->overlay1fb->state == C_ENABLE)) { \
++ overlay1fb_disable((struct fb_info*)fbi->overlay1fb); \
++ fbi->overlay1fb->state = C_BLANK; \
++ } \
++ if (fbi->overlay2fb && (fbi->overlay2fb->state == C_ENABLE)) { \
++ overlay2fb_disable((struct fb_info*)fbi->overlay2fb); \
++ fbi->overlay2fb->state = C_BLANK; \
++ } \
++ if (fbi->cursorfb && (fbi->cursorfb->state == C_ENABLE)) { \
++ cursorfb_disable((struct fb_info*)fbi->cursorfb); \
++ fbi->cursorfb->state = C_BLANK; \
++ } \
++}while(0)
++
++#define UNBLANK_OVERLAYS(fbi) do { \
++ if (fbi->overlay1fb && (fbi->overlay1fb->state == C_BLANK)){ \
++ overlay1fb_enable((struct fb_info*)fbi->overlay1fb); \
++ fbi->overlay1fb->state = C_ENABLE; \
++ } \
++ if (fbi->overlay2fb && (fbi->overlay2fb->state == C_BLANK)){ \
++ overlay2fb_enable((struct fb_info*)fbi->overlay2fb); \
++ fbi->overlay2fb->state = C_ENABLE; \
++ } \
++ if (fbi->cursorfb && (fbi->cursorfb->state == C_BLANK)){ \
++ cursorfb_enable((struct fb_info*)fbi->cursorfb); \
++ fbi->cursorfb->state = C_ENABLE; \
++ } \
++}while(0)
++
++static int overlay1fb_open(struct fb_info *info, int user)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ int ret = 0;
++
++/* If basefb is disable, enable fb. */
++ if (fbi->basefb && fbi->basefb->state != C_ENABLE)
++ pxafb_blank(VESA_NO_BLANKING, (struct fb_info *)(fbi->basefb));
++
++ down(&fbi->mutex);
++
++ if (fbi->refcount)
++ ret = -EACCES;
++ else
++ fbi->refcount ++;
++
++ up(&fbi->mutex);
++
++ /* Initialize the variables in overlay1 framebuffer. */
++ fbi->fb.var.xres = fbi->fb.var.yres = 0;
++ fbi->fb.var.bits_per_pixel = 0;
++
++ return ret;
++}
++
++static int overlay1fb_release(struct fb_info *info, int user)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ down(&fbi->mutex);
++
++ if (fbi->refcount)
++ fbi->refcount --;
++
++ up(&fbi->mutex);
++ /* disable overlay when released */
++ overlay1fb_blank(1, info);
++
++ return 0;
++}
++
++static int overlay1fb_map_video_memory(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++
++ if (fbi->map_cpu)
++ dma_free_writecombine(NULL, fbi->map_size, (void*)fbi->map_cpu, fbi->map_dma);
++ fbi->map_size = PAGE_ALIGN(fbi->fb.fix.smem_len + PAGE_SIZE);
++
++ fbi->map_cpu = (unsigned long)dma_alloc_writecombine(NULL, fbi->map_size,
++ &fbi->map_dma, GFP_KERNEL );
++
++ if (!fbi->map_cpu) return -ENOMEM;
++
++ fbi->screen_cpu = fbi->map_cpu + PAGE_SIZE;
++ fbi->screen_dma = fbi->map_dma + PAGE_SIZE;
++
++ fbi->fb.fix.smem_start = fbi->screen_dma;
++
++ /* setup dma descriptor */
++ fbi->dma1 = (struct pxafb_dma_descriptor*)
++ (fbi->screen_cpu - sizeof(struct pxafb_dma_descriptor));
++
++ fbi->dma1->fdadr = (fbi->screen_dma - sizeof(struct pxafb_dma_descriptor));
++ fbi->dma1->fsadr = fbi->screen_dma;
++ fbi->dma1->fidr = 0;
++ fbi->dma1->ldcmd = fbi->fb.fix.smem_len;
++
++ return 0;
++}
++
++static int overlay1fb_enable(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ unsigned long bpp1;
++
++ if (!fbi->map_cpu) return -EINVAL;
++
++ switch(fbi->fb.var.bits_per_pixel){
++ case 16:
++ bpp1 = 0x4;
++ break;
++ case 18:
++ bpp1 = 0x6;
++ break;
++ case 19:
++ bpp1 = 0x8;
++ break;
++ case 24:
++ bpp1 = 0x9;
++ break;
++ case 25:
++ bpp1 = 0xa;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ /* disable branch/start/end of frame interrupt */
++ LCCR5 |= (LCCR5_IUM1 | LCCR5_BSM1 | LCCR5_EOFM1 | LCCR5_SOFM1);
++
++ if (fbi->state == C_DISABLE || fbi->state == C_BLANK)
++ FDADR1 = (fbi->dma1->fdadr);
++ else
++ FBR1 = fbi->dma1->fdadr | 0x1;
++
++ /* enable overlay 1 window */
++ OVL1C2 = (fbi->ypos << 10) | fbi->xpos;
++ OVL1C1 = OVL1C1_O1EN | (bpp1 << 20) | ((fbi->fb.var.yres-1)<<10) | (fbi->fb.var.xres-1);
++
++ fbi->state = C_ENABLE;
++
++ return 0;
++}
++
++static int overlay1fb_disable(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*)info;
++ int done;
++
++ if ((fbi->state == C_DISABLE) || (fbi->state == C_BLANK))
++ return 0;
++
++ fbi->state = C_DISABLE;
++
++ /* clear O1EN */
++ OVL1C1 &= ~OVL1C1_O1EN;
++
++ CLEAR_LCD_INTR(LCSR1, LCSR1_BS1);
++ FBR1 = 0x3;
++ done = WAIT_FOR_LCD_INTR(LCSR1, LCSR1_BS1, 100);
++
++ if (!done) {
++ pr_debug(KERN_INFO "%s: timeout\n", __FUNCTION__);
++ return -1;
++ }
++ return 0;
++}
++
++static int overlay1fb_blank(int blank, struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ int err=0;
++
++ switch(blank)
++ {
++ case 0:
++ err = overlay1fb_enable(info);
++ if (err) {
++ fbi->state = C_DISABLE;
++ pxafb_set_ctrlr_state(fbi->basefb, C_REENABLE);
++ }
++ break;
++ case 1:
++ err = overlay1fb_disable(info);
++ if (err) {
++ fbi->state = C_DISABLE;
++ pxafb_set_ctrlr_state(fbi->basefb, C_REENABLE);
++ }
++ break;
++ default:
++ break;
++ }
++
++ return err;
++}
++
++static int overlay1fb_check_var( struct fb_var_screeninfo *var, struct fb_info *info)
++{
++ int xpos, ypos;
++ struct overlayfb_info *fbi=(struct overlayfb_info*)info;
++
++ /* must in base frame */
++ xpos = (var->nonstd & 0x3ff);
++ ypos = ((var->nonstd>>10) & 0x3ff);
++
++ if ( (xpos + var->xres) > fbi->basefb->fb.var.xres )
++ return -EINVAL;
++
++ if ( (ypos + var->yres) > fbi->basefb->fb.var.yres )
++ return -EINVAL;
++
++ switch (var->bits_per_pixel) {
++ case 16:
++ if ( var->xres & 0x1 ) {
++ printk("xres should be a multiple of 2 pixels!\n");
++ return -EINVAL;
++ }
++ break;
++ case 18:
++ case 19:
++ if ( var->xres & 0x7 ) {
++ printk("xres should be a multiple of 8 pixels!\n");
++ return -EINVAL;
++ }
++ break;
++ default:
++ break;
++ }
++
++ fbi->old_var=*var;
++
++ var->activate=FB_ACTIVATE_NOW;
++
++ return 0;
++}
++
++
++static int overlay1fb_set_par(struct fb_info *info)
++{
++ int nbytes=0, err=0, pixels_per_line=0;
++
++ struct overlayfb_info *fbi=(struct overlayfb_info*)info;
++ struct fb_var_screeninfo *var = &fbi->fb.var;
++
++ info->flags &= ~FBINFO_MISC_USEREVENT;
++
++ if (fbi->state == C_BLANK)
++ return 0;
++
++ if (fbi->state == C_DISABLE)
++ goto out1;
++
++ /* only xpos & ypos change */
++ if ( (var->xres == fbi->old_var.xres) &&
++ (var->yres == fbi->old_var.yres) &&
++ (var->bits_per_pixel == fbi->old_var.bits_per_pixel) )
++ goto out2;
++
++ out1:
++ switch(var->bits_per_pixel) {
++ case 16:
++ /* 2 pixels per line */
++ pixels_per_line = (fbi->fb.var.xres + 0x1) & (~0x1);
++ nbytes = 2;
++
++ var->red = def_rgbt_16.red;
++ var->green = def_rgbt_16.green;
++ var->blue = def_rgbt_16.blue;
++ var->transp = def_rgbt_16.transp;
++
++ break;
++ case 18:
++ /* 8 pixels per line */
++ pixels_per_line = (fbi->fb.var.xres + 0x7 ) & (~0x7);
++ nbytes = 3;
++
++ var->red = def_rgb_18.red;
++ var->green = def_rgb_18.green;
++ var->blue = def_rgb_18.blue;
++ var->transp = def_rgb_18.transp;
++
++ break;
++ case 19:
++ /* 8 pixels per line */
++ pixels_per_line = (fbi->fb.var.xres + 0x7 ) & (~0x7);
++ nbytes = 3;
++
++ var->red = def_rgbt_19.red;
++ var->green = def_rgbt_19.green;
++ var->blue = def_rgbt_19.blue;
++ var->transp = def_rgbt_19.transp;
++
++ break;
++ case 24:
++ pixels_per_line = fbi->fb.var.xres;
++ nbytes = 4;
++
++ var->red = def_rgbt_24.red;
++ var->green = def_rgbt_24.green;
++ var->blue = def_rgbt_24.blue;
++ var->transp = def_rgbt_24.transp;
++
++ break;
++ case 25:
++ pixels_per_line = fbi->fb.var.xres;
++ nbytes = 4;
++
++ var->red = def_rgbt_25.red;
++ var->green = def_rgbt_25.green;
++ var->blue = def_rgbt_25.blue;
++ var->transp = def_rgbt_25.transp;
++
++ break;
++ }
++
++ fbi->fb.fix.line_length = nbytes * pixels_per_line;
++ fbi->fb.fix.smem_len = fbi->fb.fix.line_length * fbi->fb.var.yres;
++
++ err= overlay1fb_map_video_memory((struct fb_info*)fbi);
++
++ if (err) return err;
++
++out2:
++ fbi->xpos = var->nonstd & 0x3ff;
++ fbi->ypos = (var->nonstd>>10) & 0x3ff;
++
++ overlay1fb_enable(info);
++
++ return 0;
++
++}
++
++static struct fb_ops overlay1fb_ops = {
++ .owner = THIS_MODULE,
++ .fb_open = overlay1fb_open,
++ .fb_release = overlay1fb_release,
++ .fb_check_var = overlay1fb_check_var,
++ .fb_set_par = overlay1fb_set_par,
++ .fb_blank = overlay1fb_blank,
++ .fb_fillrect = cfb_fillrect,
++ .fb_copyarea = cfb_copyarea,
++ .fb_imageblit = cfb_imageblit,
++};
++
++ /*
++ * LCD enhancement : Overlay 2
++ *
++ * Features:
++ * - support planar YCbCr420/YCbCr422/YCbCr444;
++ */
++static int overlay2fb_open(struct fb_info *info, int user)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ int ret = 0;
++
++ /* if basefb is disable, enable fb. */
++ if (fbi->basefb && fbi->basefb->state != C_ENABLE)
++ pxafb_blank(VESA_NO_BLANKING, (struct fb_info *)(fbi->basefb));
++
++ down(&fbi->mutex);
++
++ if (fbi->refcount)
++ ret = -EACCES;
++ else
++ fbi->refcount ++;
++
++ up(&fbi->mutex);
++ fbi->fb.var.xres = fbi->fb.var.yres = 0;
++
++ return ret;
++}
++
++static int overlay2fb_release(struct fb_info *info, int user)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++
++ down(&fbi->mutex);
++
++ if (fbi->refcount)
++ fbi->refcount --;
++
++ up(&fbi->mutex);
++
++ /* disable overlay when released */
++ overlay2fb_blank(1, info);
++
++ return 0;
++}
++
++static int overlay2fb_map_YUV_memory( struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ unsigned int ylen, cblen, crlen, aylen, acblen, acrlen;
++ unsigned int yoff, cboff, croff;
++ unsigned int xres,yres;
++ unsigned int nbytes;
++
++ ylen = cblen = crlen = aylen = acblen = acrlen = 0;
++ yoff = cboff = croff = 0;
++
++ if (fbi->map_cpu)
++ dma_free_writecombine(NULL, fbi->map_size, (void*)fbi->map_cpu, fbi->map_dma);
++
++ yres = fbi->fb.var.yres;
++
++ switch(fbi->format) {
++ case 0x4: /* YCbCr 4:2:0 planar */
++ pr_debug("420 planar\n");
++ /* 16 pixels per line */
++ xres = (fbi->fb.var.xres + 0xf) & (~0xf);
++ fbi->fb.fix.line_length = xres;
++
++ nbytes = xres * yres;
++ ylen = nbytes;
++ cblen = crlen = (nbytes/4);
++
++ break;
++ case 0x3: /* YCbCr 4:2:2 planar */
++ /* 8 pixles per line */
++ pr_debug("422 planar\n");
++ xres = (fbi->fb.var.xres + 0x7) & (~0x7);
++ fbi->fb.fix.line_length = xres;
++
++ nbytes = xres * yres;
++ ylen = nbytes;
++ cblen = crlen = (nbytes/2);
++
++ break;
++ case 0x2: /* YCbCr 4:4:4 planar */
++ /* 4 pixels per line */
++ pr_debug("444 planar\n");
++ xres = (fbi->fb.var.xres + 0x3) & (~0x3);
++ fbi->fb.fix.line_length = xres;
++
++ nbytes = xres * yres;
++ ylen = cblen = crlen = nbytes;
++ break;
++ }
++
++ /* 16-bytes alignment for DMA */
++ aylen = (ylen + 0xf) & (~0xf);
++ acblen = (cblen + 0xf) & (~0xf);
++ acrlen = (crlen + 0xf) & (~0xf);
++
++ fbi->fb.fix.smem_len = aylen + acblen + acrlen;
++
++ /* alloc memory */
++
++ fbi->map_size = PAGE_ALIGN(fbi->fb.fix.smem_len + PAGE_SIZE);
++ fbi->map_cpu = (unsigned long)dma_alloc_writecombine(NULL, fbi->map_size,
++ &fbi->map_dma, GFP_KERNEL );
++
++ if (!fbi->map_cpu) return -ENOMEM;
++
++ fbi->screen_cpu = fbi->map_cpu + PAGE_SIZE;
++ fbi->screen_dma = fbi->map_dma + PAGE_SIZE;
++
++ fbi->fb.fix.smem_start = fbi->screen_dma;
++
++ /* setup dma for Planar format */
++ fbi->dma2 = (struct pxafb_dma_descriptor*)
++ (fbi->screen_cpu - sizeof(struct pxafb_dma_descriptor));
++ fbi->dma3 = fbi->dma2 - 1;
++ fbi->dma4 = fbi->dma3 - 1;
++
++ /* offset */
++ yoff = 0;
++ cboff = aylen;
++ croff = cboff + acblen;
++
++ /* Y vector */
++ fbi->dma2->fdadr = (fbi->screen_dma - sizeof(struct pxafb_dma_descriptor));
++ fbi->dma2->fsadr = fbi->screen_dma + yoff;
++ fbi->dma2->fidr = 0;
++ fbi->dma2->ldcmd = ylen;
++
++ /* Cb vector */
++ fbi->dma3->fdadr = (fbi->dma2->fdadr - sizeof(struct pxafb_dma_descriptor));
++ fbi->dma3->fsadr = (fbi->screen_dma + cboff);
++ fbi->dma3->fidr = 0;
++ fbi->dma3->ldcmd = cblen;
++
++ /* Cr vector */
++
++ fbi->dma4->fdadr = (fbi->dma3->fdadr - sizeof(struct pxafb_dma_descriptor));
++ fbi->dma4->fsadr = (fbi->screen_dma + croff);
++ fbi->dma4->fidr = 0;
++ fbi->dma4->ldcmd = crlen;
++
++ /* adjust for user */
++ fbi->fb.var.red.length = ylen;
++ fbi->fb.var.red.offset = yoff;
++ fbi->fb.var.green.length = cblen;
++ fbi->fb.var.green.offset = cboff;
++ fbi->fb.var.blue.length = crlen;
++ fbi->fb.var.blue.offset = croff;
++
++ return 0;
++};
++
++static int overlay2fb_map_RGB_memory( struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ struct fb_var_screeninfo *var = &fbi->fb.var;
++ int pixels_per_line=0 , nbytes=0;
++
++ if (fbi->map_cpu)
++ dma_free_writecombine(NULL, fbi->map_size, (void*)fbi->map_cpu, fbi->map_dma);
++
++ switch(var->bits_per_pixel) {
++ case 16:
++ /* 2 pixels per line */
++ pixels_per_line = (fbi->fb.var.xres + 0x1) & (~0x1);
++ nbytes = 2;
++
++ var->red = def_rgbt_16.red;
++ var->green = def_rgbt_16.green;
++ var->blue = def_rgbt_16.blue;
++ var->transp = def_rgbt_16.transp;
++ break;
++
++ case 18:
++ /* 8 pixels per line */
++ pixels_per_line = (fbi->fb.var.xres + 0x7 ) & (~0x7);
++ nbytes = 3;
++
++ var->red = def_rgb_18.red;
++ var->green = def_rgb_18.green;
++ var->blue = def_rgb_18.blue;
++ var->transp = def_rgb_18.transp;
++
++ break;
++ case 19:
++ /* 8 pixels per line */
++ pixels_per_line = (fbi->fb.var.xres + 0x7 ) & (~0x7);
++ nbytes = 3;
++
++ var->red = def_rgbt_19.red;
++ var->green = def_rgbt_19.green;
++ var->blue = def_rgbt_19.blue;
++ var->transp = def_rgbt_19.transp;
++
++ break;
++ case 24:
++ pixels_per_line = fbi->fb.var.xres;
++ nbytes = 4;
++
++ var->red = def_rgbt_24.red;
++ var->green = def_rgbt_24.green;
++ var->blue = def_rgbt_24.blue;
++ var->transp = def_rgbt_24.transp;
++
++ break;
++
++ case 25:
++ pixels_per_line = fbi->fb.var.xres;
++ nbytes = 4;
++
++ var->red = def_rgbt_25.red;
++ var->green = def_rgbt_25.green;
++ var->blue = def_rgbt_25.blue;
++ var->transp = def_rgbt_25.transp;
++
++ break;
++ }
++
++ fbi->fb.fix.line_length = nbytes * pixels_per_line ;
++ fbi->fb.fix.smem_len = fbi->fb.fix.line_length * fbi->fb.var.yres ;
++
++ fbi->map_size = PAGE_ALIGN(fbi->fb.fix.smem_len + PAGE_SIZE);
++ fbi->map_cpu = (unsigned long)dma_alloc_writecombine(NULL, fbi->map_size,
++ &fbi->map_dma, GFP_KERNEL );
++
++ if (!fbi->map_cpu) return -ENOMEM;
++
++ fbi->screen_cpu = fbi->map_cpu + PAGE_SIZE;
++ fbi->screen_dma = fbi->map_dma + PAGE_SIZE;
++
++ fbi->fb.fix.smem_start = fbi->screen_dma;
++
++ /* setup dma descriptor */
++ fbi->dma2 = (struct pxafb_dma_descriptor*)
++ (fbi->screen_cpu - sizeof(struct pxafb_dma_descriptor));
++
++ fbi->dma2->fdadr = (fbi->screen_dma - sizeof(struct pxafb_dma_descriptor));
++ fbi->dma2->fsadr = fbi->screen_dma;
++ fbi->dma2->fidr = 0;
++ fbi->dma2->ldcmd = fbi->fb.fix.smem_len;
++
++ return 0;
++}
++
++static int overlay2fb_enable(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ unsigned long bpp2;
++ unsigned int xres, yres;
++
++ if (!fbi->map_cpu) return -EINVAL;
++
++ switch(fbi->fb.var.bits_per_pixel) {
++ case 16:
++ bpp2 = 0x4;
++ break;
++ case 18:
++ bpp2 = 0x6;
++ break;
++ case 19:
++ bpp2 = 0x8;
++ break;
++ case 24:
++ bpp2 = 0x9;
++ break;
++ case 25:
++ bpp2 = 0xa;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ /* disable branch/start/end of frame interrupt */
++ LCCR5 |= (LCCR5_IUM4 | LCCR5_IUM3 | LCCR5_IUM2 |
++ LCCR5_BSM4 | LCCR5_BSM3 | LCCR5_BSM2 |
++ LCCR5_EOFM4 | LCCR5_EOFM3 | LCCR5_EOFM2 |
++ LCCR5_SOFM4 | LCCR5_SOFM3 | LCCR5_SOFM2);
++
++ if (fbi->format == 0) {
++ /* overlay2 RGB resolution, RGB and YUV have different xres value*/
++ xres = fbi->fb.var.xres;
++ yres = fbi->fb.var.yres;
++
++ OVL2C2 = (fbi->format << 20) | (fbi->ypos << 10) | fbi->xpos;
++ OVL2C1 = OVL2C1_O2EN | (bpp2 << 20) | ((yres-1)<<10) | (xres-1);
++ /* setup RGB DMA */
++ if (fbi->state == C_DISABLE || fbi->state == C_BLANK)
++ FDADR2 = fbi->dma2->fdadr;
++ else
++ FBR2 = fbi->dma2->fdadr | 0x1;
++ } else {
++ /* overlay2 YUV resolution */
++ xres = fbi->fb.fix.line_length;
++ yres = fbi->fb.var.yres;
++
++ OVL2C2 = (fbi->format << 20) | (fbi->ypos << 10) | fbi->xpos;
++ OVL2C1 = OVL2C1_O2EN | (bpp2 << 20) | ((yres-1)<<10) | (xres-1);
++
++ if (fbi->state == C_DISABLE || fbi->state == C_BLANK) {
++ FDADR2 = fbi->dma2->fdadr;
++ FDADR3 = fbi->dma3->fdadr;
++ FDADR4 = fbi->dma4->fdadr;
++ } else {
++ FBR2 = fbi->dma2->fdadr | 0x01;
++ FBR3 = fbi->dma3->fdadr | 0x01;
++ FBR4 = fbi->dma4->fdadr | 0x01;
++ }
++ }
++
++ fbi->state = C_ENABLE;
++ return 0;
++}
++
++static int overlay2fb_disable(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*)info;
++ int done;
++
++ if (fbi->state == C_DISABLE)
++ return 0;
++ if (fbi->state == C_BLANK) {
++ fbi->state = C_DISABLE;
++ return 0;
++ }
++
++ fbi->state = C_DISABLE;
++
++ /* clear O2EN */
++ OVL2C1 &= ~OVL2C1_O2EN;
++
++ /* Make overlay2 can't disable/enable
++ * correctly sometimes.
++ */
++ CLEAR_LCD_INTR(LCSR1, LCSR1_BS2);
++
++ if (fbi->format == 0)
++ FBR2 = 0x3;
++ else {
++ FBR2 = 0x3;
++ FBR3 = 0x3;
++ FBR4 = 0x3;
++ }
++
++ done = WAIT_FOR_LCD_INTR(LCSR1, LCSR1_BS2, 100);
++
++ if (!done) {
++ pr_debug(KERN_INFO "%s: timeout\n", __FUNCTION__);
++ return -1;
++ }
++ return 0;
++}
++
++static int overlay2fb_blank(int blank, struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ int err=0;
++
++ switch(blank)
++ {
++ case 0:
++ err = overlay2fb_enable(info);
++ if (err) {
++ fbi->state = C_DISABLE;
++ pxafb_set_ctrlr_state(fbi->basefb, C_REENABLE);
++ }
++ break;
++ case 1:
++ err = overlay2fb_disable(info);
++ if (err) {
++ fbi->state = C_DISABLE;
++ pxafb_set_ctrlr_state(fbi->basefb, C_REENABLE);
++ }
++ break;
++ default:
++ /* reserved */
++ break;
++ }
++
++ return err;
++}
++
++
++static int overlay2fb_check_var( struct fb_var_screeninfo *var, struct fb_info *info)
++{
++ int xpos, ypos, xres, yres;
++ int format;
++ struct overlayfb_info *fbi=(struct overlayfb_info*)info;
++
++ xres=yres=0;
++
++ xpos = (var->nonstd & 0x3ff);
++ ypos = (var->nonstd >> 10) & 0x3ff;
++ format = (var->nonstd >>20) & 0x7;
++
++
++ /* Palnar YCbCr444, YCbCr422, YCbCr420 */
++ if ( (format != 0x4) && (format != 0x3) && (format != 0x2) && (format !=0x0))
++ return -EINVAL;
++
++ /* dummy pixels */
++ switch(format) {
++ case 0x0: /* RGB */
++ xres = var->xres;
++ break;
++ case 0x2: /* 444 */
++ xres = (var->xres + 0x3) & ~(0x3);
++ break;
++ case 0x3: /* 422 */
++ xres = (var->xres + 0x7) & ~(0x7);
++ break;
++ case 0x4: /* 420 */
++ xres = (var->xres + 0xf) & ~(0xf);
++ break;
++ }
++ yres = var->yres;
++
++ if ( (xpos + xres) > fbi->basefb->fb.var.xres )
++ return -EINVAL;
++
++ if ( (ypos + yres) > fbi->basefb->fb.var.yres )
++ return -EINVAL;
++
++ fbi->old_var=*var;
++
++ var->activate=FB_ACTIVATE_NOW;
++
++ return 0;
++
++}
++
++
++/*
++ * overlay2fb_set_var()
++ *
++ * var.nonstd is used as YCbCr format.
++ * var.red/green/blue is used as (Y/Cb/Cr) vector
++ */
++
++static int overlay2fb_set_par(struct fb_info *info)
++{
++ unsigned int xpos, ypos;
++ int format, err;
++
++ struct overlayfb_info *fbi=(struct overlayfb_info*)info;
++ struct fb_var_screeninfo *var = &fbi->fb.var;
++
++ info->flags &= ~FBINFO_MISC_USEREVENT;
++
++ if (fbi->state == C_BLANK)
++ return 0;
++
++ if (fbi->state == C_DISABLE)
++ goto out1;
++
++ if ( (var->xres == fbi->old_var.xres) &&
++ (var->yres == fbi->old_var.yres) &&
++ (var->bits_per_pixel == fbi->old_var.bits_per_pixel) &&
++ (((var->nonstd>>20) & 0x7) == fbi->format) )
++ goto out2;
++
++out1:
++ xpos = var->nonstd & 0x3ff;
++ ypos = (var->nonstd>>10) & 0x3ff;
++ format = (var->nonstd>>20) & 0x7;
++
++
++ fbi->format = format;
++ if ( fbi->format==0 )
++ err = overlay2fb_map_RGB_memory(info);
++ else
++ err = overlay2fb_map_YUV_memory(info);
++
++ if (err) return err;
++
++out2:
++ /* position */
++ fbi->xpos = var->nonstd & 0x3ff;
++ fbi->ypos = (var->nonstd>>10) & 0x3ff;
++
++ overlay2fb_enable(info);
++
++ return 0;
++}
++
++static struct fb_ops overlay2fb_ops = {
++ .owner = THIS_MODULE,
++ .fb_open = overlay2fb_open,
++ .fb_release = overlay2fb_release,
++ .fb_check_var = overlay2fb_check_var,
++ .fb_set_par = overlay2fb_set_par,
++ .fb_blank = overlay2fb_blank,
++ .fb_fillrect = cfb_fillrect,
++ .fb_copyarea = cfb_copyarea,
++ .fb_imageblit = cfb_imageblit,
++};
++
++/* Hardware cursor */
++
++/* Bulverde Cursor Modes */
++struct cursorfb_mode{
++ int xres;
++ int yres;
++ int bpp;
++};
++
++static struct cursorfb_mode cursorfb_modes[]={
++ { 32, 32, 2},
++ { 32, 32, 2},
++ { 32, 32, 2},
++ { 64, 64, 2},
++ { 64, 64, 2},
++ { 64, 64, 2},
++ {128, 128, 1},
++ {128, 128, 1}
++};
++
++static int cursorfb_enable(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++
++ if (!fbi->map_cpu) return -EINVAL;
++
++ CCR &= ~CCR_CEN;
++
++ /* set palette format
++ *
++ * FIXME: if only cursor uses palette
++ */
++ LCCR4 = (LCCR4 & (~(0x3<<15))) | (0x1<<15);
++
++ /* disable branch/start/end of frame interrupt */
++ LCCR5 |= (LCCR5_IUM5 | LCCR5_BSM5 | LCCR5_EOFM5 | LCCR5_SOFM5);
++
++ /* load palette and frame data */
++ if (fbi->state == C_DISABLE) {
++ FDADR5 = fbi->dma5_pal->fdadr;
++ udelay(1);
++ FDADR5 = fbi->dma5_frame->fdadr;
++ udelay(1);
++
++ }
++ else {
++ FBR5 = fbi->dma5_pal->fdadr | 0x1;
++ udelay(1);
++ FBR5 = fbi->dma5_frame->fdadr | 0x1;
++ udelay(1);
++ }
++
++ CCR = CCR_CEN | (fbi->ypos << 15) | (fbi->xpos << 5) | (fbi->format);
++
++ fbi->state = C_ENABLE;
++
++ return 0;
++}
++
++static int cursorfb_disable(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*)info;
++ int done, ret = 0;
++
++ fbi->state = C_DISABLE;
++
++ done = WAIT_FOR_LCD_INTR(LCSR1, LCSR1_BS5, 100);
++ if (!done) ret = -1;
++
++ CCR &= ~CCR_CEN;
++
++ return ret;
++}
++
++static int cursorfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
++ u_int trans, struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info *)info;
++ u_int val, ret = 1;
++ u_int *pal=(u_int*) fbi->palette_cpu;
++
++ /* 25bit with Transparcy for 16bpp format */
++ if (regno < fbi->palette_size) {
++ val = ((trans << 24) & 0x1000000);
++ val |= ((red << 16) & 0x0ff0000);
++ val |= ((green << 8 ) & 0x000ff00);
++ val |= ((blue << 0) & 0x00000ff);
++
++ pal[regno] = val;
++ ret = 0;
++ }
++ return ret;
++}
++
++int cursorfb_blank(int blank, struct fb_info *info)
++{
++ switch(blank)
++ {
++ case 0:
++ cursorfb_enable(info);
++ break;
++ case 1:
++ cursorfb_disable(info);
++ break;
++ default:
++ /* reserved */
++ break;
++ }
++ return 0;
++}
++
++static int cursorfb_check_var( struct fb_var_screeninfo *var, struct fb_info *info)
++{
++ int xpos, ypos, xres, yres;
++ int mode;
++ struct cursorfb_mode *cursor;
++ struct overlayfb_info *fbi=(struct overlayfb_info*)info;
++
++ mode = var->nonstd & 0x7;
++ xpos = (var->nonstd>>5) & 0x3ff;
++ ypos = (var->nonstd>>15) & 0x3ff;
++
++ if (mode>7 || mode <0 )
++ return -EINVAL;
++
++ cursor = cursorfb_modes + mode;
++
++ xres = cursor->xres;
++ yres = cursor->yres;
++
++ if ( (xpos + xres) > fbi->basefb->fb.var.xres )
++ return -EINVAL;
++
++ if ( (ypos + yres) > fbi->basefb->fb.var.yres )
++ return -EINVAL;
++
++ return 0;
++
++}
++
++static int cursorfb_set_par(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ struct fb_var_screeninfo *var = &fbi->fb.var;
++ struct cursorfb_mode *cursor;
++ int mode, xpos, ypos;
++ int err;
++
++ info->flags &= ~FBINFO_MISC_USEREVENT;
++
++ mode = var->nonstd & 0x7;
++ xpos = (var->nonstd>>5) & 0x3ff;
++ ypos = (var->nonstd>>15) & 0x3ff;
++
++ if (mode != fbi->format) {
++ cursor = cursorfb_modes + mode;
++
++ /* update "var" info */
++ fbi->fb.var.xres = cursor->xres;
++ fbi->fb.var.yres = cursor->yres;
++ fbi->fb.var.bits_per_pixel = cursor->bpp;
++
++ /* alloc video memory
++ *
++ * 4k is engouh for 128x128x1 cursor,
++ * - 2k for cursor pixels,
++ * - 2k for palette data, plus 2 dma descriptor
++ */
++ if (!fbi->map_cpu) {
++ fbi->map_size = PAGE_SIZE;
++ fbi->map_cpu = (unsigned long)dma_alloc_writecombine(NULL, fbi->map_size,
++ &fbi->map_dma, GFP_KERNEL );
++ if (!fbi->map_cpu) return -ENOMEM;
++ }
++
++ cursor = cursorfb_modes + mode;
++
++ /* update overlay & fix "info" */
++ fbi->screen_cpu = fbi->map_cpu;
++ fbi->palette_cpu = fbi->map_cpu + (PAGE_SIZE/2);
++ fbi->screen_dma = fbi->map_dma;
++ fbi->palette_dma = fbi->map_dma + (PAGE_SIZE/2);
++
++ fbi->format = mode;
++ fbi->palette_size = (1<<cursor->bpp) ;
++ fbi->fb.fix.smem_start = fbi->screen_dma;
++ fbi->fb.fix.smem_len = cursor->xres * cursor->yres * cursor->bpp / 8;
++ fbi->fb.fix.line_length = cursor->xres * cursor->bpp / 8 ;
++
++ fbi->dma5_pal = (struct pxafb_dma_descriptor*)(fbi->map_cpu + PAGE_SIZE - 16 );
++ fbi->dma5_pal->fdadr = (fbi->map_dma + PAGE_SIZE - 16);
++ fbi->dma5_pal->fsadr = fbi->palette_dma;
++ fbi->dma5_pal->fidr = 0;
++ fbi->dma5_pal->ldcmd = (fbi->palette_size<<2) | LDCMD_PAL;
++
++ fbi->dma5_frame = (struct pxafb_dma_descriptor*)(fbi->map_cpu + PAGE_SIZE - 32 );
++ fbi->dma5_frame->fdadr = (fbi->map_dma + PAGE_SIZE - 32);
++ fbi->dma5_frame->fsadr = fbi->screen_dma;
++ fbi->dma5_frame->fidr = 0;
++ fbi->dma5_frame->ldcmd = fbi->fb.fix.smem_len;
++
++ /* alloc & set default cmap */
++ err = fb_alloc_cmap(&fbi->fb.cmap, fbi->palette_size, 0);
++ if (err) return err;
++ err = fb_set_cmap(&fbi->fb.cmap, info);
++ if (err) return err;
++ }
++
++ /* update overlay info */
++ if( (xpos != fbi->xpos) || (ypos != fbi->ypos) ) {
++ fbi->xpos = xpos;
++ fbi->ypos = ypos;
++ }
++
++ cursorfb_enable(info);
++ pxafb_set_ctrlr_state(fbi->basefb, C_REENABLE);
++
++ return 0;
++}
++
++static struct fb_ops cursorfb_ops = {
++ .owner = THIS_MODULE,
++ .fb_check_var = cursorfb_check_var,
++ .fb_set_par = cursorfb_set_par,
++ .fb_blank = cursorfb_blank,
++ .fb_fillrect = cfb_fillrect,
++ .fb_copyarea = cfb_copyarea,
++ .fb_imageblit = cfb_imageblit,
++ .fb_setcolreg = cursorfb_setcolreg,
++};
++
++static struct overlayfb_info * __init overlay1fb_init_fbinfo(void)
++{
++ struct overlayfb_info *fbi;
++
++ fbi = kmalloc(sizeof(struct overlayfb_info) + sizeof(u16) * 16, GFP_KERNEL);
++ if (!fbi)
++ return NULL;
++
++ memset(fbi, 0, sizeof(struct overlayfb_info) );
++
++ fbi->refcount = 0;
++ init_MUTEX(&fbi->mutex);
++
++ strcpy(fbi->fb.fix.id, "overlay1");
++
++ fbi->fb.fix.type = FB_TYPE_PACKED_PIXELS;
++ fbi->fb.fix.type_aux = 0;
++ fbi->fb.fix.xpanstep = 0;
++ fbi->fb.fix.ypanstep = 0;
++ fbi->fb.fix.ywrapstep = 0;
++ fbi->fb.fix.accel = FB_ACCEL_NONE;
++
++ fbi->fb.var.nonstd = 0;
++ fbi->fb.var.activate = FB_ACTIVATE_NOW;
++ fbi->fb.var.height = -1;
++ fbi->fb.var.width = -1;
++ fbi->fb.var.accel_flags = 0;
++ fbi->fb.var.vmode = FB_VMODE_NONINTERLACED;
++
++
++ fbi->fb.fbops = &overlay1fb_ops;
++ fbi->fb.flags = FBINFO_FLAG_DEFAULT;
++ fbi->fb.node = -1;
++ fbi->fb.pseudo_palette = NULL;
++
++ fbi->xpos = 0;
++ fbi->ypos = 0;
++ fbi->format = -1;
++ fbi->state = C_DISABLE;
++
++ return fbi;
++}
++
++static struct overlayfb_info * __init overlay2fb_init_fbinfo(void)
++{
++ struct overlayfb_info *fbi;
++
++ fbi = kmalloc(sizeof(struct overlayfb_info) + sizeof(u16) * 16, GFP_KERNEL);
++ if (!fbi)
++ return NULL;
++
++ memset(fbi, 0, sizeof(struct overlayfb_info) );
++
++ fbi->refcount = 0;
++ init_MUTEX(&fbi->mutex);
++
++ strcpy(fbi->fb.fix.id, "overlay2");
++
++ fbi->fb.fix.type = FB_TYPE_PACKED_PIXELS;
++ fbi->fb.fix.type_aux = 0;
++ fbi->fb.fix.xpanstep = 0;
++ fbi->fb.fix.ypanstep = 0;
++ fbi->fb.fix.ywrapstep = 0;
++ fbi->fb.fix.accel = FB_ACCEL_NONE;
++
++ fbi->fb.var.nonstd = 0;
++ fbi->fb.var.activate = FB_ACTIVATE_NOW;
++ fbi->fb.var.height = -1;
++ fbi->fb.var.width = -1;
++ fbi->fb.var.accel_flags = 0;
++ fbi->fb.var.vmode = FB_VMODE_NONINTERLACED;
++
++ fbi->fb.fbops = &overlay2fb_ops;
++ fbi->fb.flags = FBINFO_FLAG_DEFAULT;
++ fbi->fb.node = -1;
++ fbi->fb.pseudo_palette = NULL;
++
++ fbi->xpos = 0;
++ fbi->ypos = 0;
++ fbi->format = -1;
++ fbi->state = C_DISABLE;
++
++ return fbi;
++}
++
++static struct overlayfb_info * __init cursorfb_init_fbinfo(void)
++{
++ struct overlayfb_info *fbi;
++
++ fbi = kmalloc(sizeof(struct overlayfb_info) + sizeof(u16) * 16, GFP_KERNEL);
++ if (!fbi)
++ return NULL;
++
++ memset(fbi, 0, sizeof(struct overlayfb_info) );
++
++ fbi->refcount = 0;
++ init_MUTEX(&fbi->mutex);
++
++ strcpy(fbi->fb.fix.id, "cursor");
++
++ fbi->fb.fix.type = FB_TYPE_PACKED_PIXELS;
++ fbi->fb.fix.type_aux = 0;
++ fbi->fb.fix.xpanstep = 0;
++ fbi->fb.fix.ypanstep = 0;
++ fbi->fb.fix.ywrapstep = 0;
++ fbi->fb.fix.accel = FB_ACCEL_NONE;
++
++ fbi->fb.var.nonstd = 0;
++ fbi->fb.var.activate = FB_ACTIVATE_NOW;
++ fbi->fb.var.height = -1;
++ fbi->fb.var.width = -1;
++ fbi->fb.var.accel_flags = 0;
++ fbi->fb.var.vmode = FB_VMODE_NONINTERLACED;
++
++ fbi->fb.fbops = &cursorfb_ops;
++ fbi->fb.flags = FBINFO_FLAG_DEFAULT;
++ fbi->fb.node = -1;
++ fbi->fb.pseudo_palette = NULL;
++
++
++ fbi->xpos = 0;
++ fbi->ypos = 0;
++ fbi->format = -1;
++ fbi->state = C_DISABLE;
++
++ return fbi;
++}
++
++
++void pxa_set_overlay_ctrlr_state(struct pxafb_info *fbi, u_int state)
++{
++ switch (state) {
++ case C_DISABLE:
++ DISABLE_OVERLAYS(fbi);
++ break;
++ case C_ENABLE:
++ ENABLE_OVERLAYS(fbi);
++ break;
++ case C_BLANK:
++ BLANK_OVERLAYS(fbi);
++ break;
++ case C_UNBLANK:
++ UNBLANK_OVERLAYS(fbi);
++ break;
++ default:
++ break;
++ }
++}
++
++struct callback_data_t{
++ char *name;
++ struct device *dev;
++};
++
++
++static int find_dev(struct device *dev, void *callback_data)
++{
++ int found=0;
++ struct callback_data_t * data=(struct callback_data_t *) callback_data;
++
++ found = (strncmp(dev->kobj.name, data->name, KOBJ_NAME_LEN) == 0);
++ if(found == 1){
++ data->dev = dev;
++ }
++
++ return found;
++}
++struct device* find_bus_device(struct bus_type *bus, char *name)
++{
++ struct callback_data_t callback_data;
++
++ callback_data.name = name;
++ callback_data.dev = NULL;
++ bus_for_each_dev(bus, NULL, &callback_data, find_dev);
++
++ return callback_data.dev;
++}
++
++static int __devinit pxafb_overlay_init(void)
++{
++ int ret;
++ struct overlayfb_info *overlay1fb, *overlay2fb, *cursorfb;
++ struct pxafb_info *fbi;
++ struct device *dev;
++
++ ret = -1;
++ overlay1fb = overlay2fb = cursorfb = NULL;
++ fbi=NULL;
++
++ dev=find_bus_device(&platform_bus_type, "pxa2xx-fb");
++ if(dev ==NULL){
++ printk(KERN_INFO "Base framebuffer not exists, failed to load overlay driver!\n");
++ return ret;
++ }
++
++ fbi = dev_get_drvdata(dev);
++ if(fbi ==NULL ){
++ printk(KERN_INFO "Base framebuffer not initialized, failed to load overlay driver!\n");
++ return ret;
++ }
++
++
++ /* Overlay 1 windows */
++ overlay1fb = overlay1fb_init_fbinfo();
++
++ if(!overlay1fb) {
++ ret = -ENOMEM;
++ printk("overlay1fb_init_fbinfo failed\n");
++ goto failed;
++ }
++
++
++ ret = register_framebuffer(&overlay1fb->fb);
++ if (ret<0) goto failed;
++
++ /* Overlay 2 window */
++ overlay2fb = overlay2fb_init_fbinfo();
++
++ if(!overlay2fb) {
++ ret = -ENOMEM;
++ printk("overlay2fb_init_fbinfo failed\n");
++ goto failed;
++ }
++
++ ret = register_framebuffer(&overlay2fb->fb);
++ if (ret<0) goto failed;
++
++ /* Hardware cursor window */
++ cursorfb = cursorfb_init_fbinfo();
++
++ if(!cursorfb) {
++ ret = -ENOMEM;
++ printk("cursorfb_init_fbinfo failed\n");
++ goto failed;
++ }
++
++ ret = register_framebuffer(&cursorfb->fb);
++ if (ret<0) goto failed;
++
++
++ /* set refernce to Overlays */
++ fbi->overlay1fb = overlay1fb;
++ fbi->overlay2fb = overlay2fb;
++ fbi->cursorfb = cursorfb;
++ fbi->set_overlay_ctrlr_state=pxa_set_overlay_ctrlr_state;
++
++ /* set refernce to BaseFrame */
++ overlay1fb->basefb = fbi;
++ overlay2fb->basefb = fbi;
++ cursorfb->basefb = fbi;
++
++ printk(KERN_INFO "Load PXA Overlay driver successfully!\n");
++
++ return 0;
++
++failed:
++ if (overlay1fb)
++ kfree(overlay1fb);
++ if (overlay2fb)
++ kfree(overlay2fb);
++ if (cursorfb)
++ kfree(cursorfb);
++ printk(KERN_INFO "Load PXA Overlay driver failed!\n");
++ return ret;
++}
++
++static void __exit pxafb_overlay_exit(void)
++{
++ struct pxafb_info *fbi;
++ struct device *dev;
++
++ dev=find_bus_device(&platform_bus_type, "pxa2xx-fb");
++ if(dev ==NULL){
++ return ;
++ }
++
++ fbi = dev_get_drvdata(dev);
++ if(fbi ==NULL ){
++ return ;
++ }
++
++ if (fbi->overlay1fb) {
++ unregister_framebuffer(&(fbi->overlay1fb->fb));
++ kfree(fbi->overlay1fb);
++ fbi->overlay1fb = NULL;
++ }
++
++ if (fbi->overlay2fb) {
++ unregister_framebuffer(&(fbi->overlay2fb->fb));
++ kfree(fbi->overlay2fb);
++ fbi->overlay2fb = NULL;
++ }
++
++ if (fbi->cursorfb) {
++ unregister_framebuffer(&(fbi->cursorfb->fb));
++ kfree(fbi->cursorfb);
++ fbi->cursorfb = NULL;
++ }
++
++ fbi->set_overlay_ctrlr_state = NULL;
++
++ printk(KERN_INFO "Unload PXA Overlay driver successfully!\n");
++ return ;
++}
++
++
++module_init(pxafb_overlay_init);
++module_exit(pxafb_overlay_exit);
++
++MODULE_DESCRIPTION("Loadable framebuffer overlay driver for PXA");
++MODULE_LICENSE("GPL");
++
+Index: linux-2.6.19/include/asm-arm/arch-pxa/pxa-regs.h
+===================================================================
+--- linux-2.6.19.orig/include/asm-arm/arch-pxa/pxa-regs.h 2006-12-16 18:35:40.000000000 +0000
++++ linux-2.6.19/include/asm-arm/arch-pxa/pxa-regs.h 2006-12-16 18:36:17.000000000 +0000
+@@ -100,6 +100,7 @@
+ #define DCSR_CLRCMPST (1 << 24) /* Clear Descriptor Compare Status */
+ #define DCSR_CMPST (1 << 10) /* The Descriptor Compare Status */
+ #define DCSR_ENRINTR (1 << 9) /* The end of Receive */
++#define DCSR_EORINTR (1 << 9) /* The end of Receive */
+ #endif
+ #define DCSR_REQPEND (1 << 8) /* Request Pending (read-only) */
+ #define DCSR_STOPSTATE (1 << 3) /* Stop State (read-only) */
+@@ -794,11 +795,18 @@
+ #define UDC_INT_PACKETCMP (0x1)
+
+ #define UDCICR_INT(n,intr) (((intr) & 0x03) << (((n) & 0x0F) * 2))
++/* Older defines, do not use. */
+ #define UDCICR1_IECC (1 << 31) /* IntEn - Configuration Change */
+ #define UDCICR1_IESOF (1 << 30) /* IntEn - Start of Frame */
+ #define UDCICR1_IERU (1 << 29) /* IntEn - Resume */
+ #define UDCICR1_IESU (1 << 28) /* IntEn - Suspend */
+ #define UDCICR1_IERS (1 << 27) /* IntEn - Reset */
++/* New defines. */
++#define UDCISR1_IRCC (1 << 31) /* IntEn - Configuration Change */
++#define UDCISR1_IRSOF (1 << 30) /* IntEn - Start of Frame */
++#define UDCISR1_IRRU (1 << 29) /* IntEn - Resume */
++#define UDCISR1_IRSU (1 << 28) /* IntEn - Suspend */
++#define UDCISR1_IRRS (1 << 27) /* IntEn - Reset */
+
+ #define UDCISR0 __REG(0x4060000C) /* UDC Interrupt Status Register 0 */
+ #define UDCISR1 __REG(0x40600010) /* UDC Interrupt Status Register 1 */
+@@ -1848,6 +1856,8 @@
+ #define DFBR0 __REG(0x44000020) /* DMA Channel 0 Frame Branch Register */
+ #define DFBR1 __REG(0x44000024) /* DMA Channel 1 Frame Branch Register */
+ #define LCSR __REG(0x44000038) /* LCD Controller Status Register */
++#define LCSR0 __REG(0x44000038) /* LCD Controller Status Register */
++#define LCSR1 __REG(0x44000034) /* LCD Controller Status Register */
+ #define LIIDR __REG(0x4400003C) /* LCD Controller Interrupt ID Register */
+ #define TMEDRGBR __REG(0x44000040) /* TMED RGB Seed Register */
+ #define TMEDCR __REG(0x44000044) /* TMED Control Register */
+@@ -1857,6 +1867,10 @@
+ #define LCCR3_4BPP (2 << 24)
+ #define LCCR3_8BPP (3 << 24)
+ #define LCCR3_16BPP (4 << 24)
++#define LCCR3_18BPP (6 << 24)
++#define LCCR3_19BPP (8 << 24)
++#define LCCR3_24BPP (9 << 24)
++#define LCCR3_25BPP (10<< 24)
+
+ #define FDADR0 __REG(0x44000200) /* DMA Channel 0 Frame Descriptor Address Register */
+ #define FSADR0 __REG(0x44000204) /* DMA Channel 0 Frame Source Address Register */
+@@ -2021,6 +2035,104 @@
+
+ #define LDCMD_PAL (1 << 26) /* instructs DMA to load palette buffer */
+
++/* Overlay1 & Overlay2 & Hardware Cursor */
++#define LCSR1_SOF1 (1 << 0)
++#define LCSR1_SOF2 (1 << 1)
++#define LCSR1_SOF3 (1 << 2)
++#define LCSR1_SOF4 (1 << 3)
++#define LCSR1_SOF5 (1 << 4)
++#define LCSR1_SOF6 (1 << 5)
++
++#define LCSR1_EOF1 (1 << 8)
++#define LCSR1_EOF2 (1 << 9)
++#define LCSR1_EOF3 (1 << 10)
++#define LCSR1_EOF4 (1 << 11)
++#define LCSR1_EOF5 (1 << 12)
++#define LCSR1_EOF6 (1 << 13)
++
++#define LCSR1_BS1 (1 << 16)
++#define LCSR1_BS2 (1 << 17)
++#define LCSR1_BS3 (1 << 18)
++#define LCSR1_BS4 (1 << 19)
++#define LCSR1_BS5 (1 << 20)
++#define LCSR1_BS6 (1 << 21)
++
++#define LCSR1_IU2 (1 << 25)
++#define LCSR1_IU3 (1 << 26)
++#define LCSR1_IU4 (1 << 27)
++#define LCSR1_IU5 (1 << 28)
++#define LCSR1_IU6 (1 << 29)
++
++#define LDCMD_SOFINT (1 << 22)
++#define LDCMD_EOFINT (1 << 21)
++
++
++#define LCCR5_SOFM1 (1<<0) /* Start Of Frame Mask for Overlay 1 (channel 1) */
++#define LCCR5_SOFM2 (1<<1) /* Start Of Frame Mask for Overlay 2 (channel 2) */
++#define LCCR5_SOFM3 (1<<2) /* Start Of Frame Mask for Overlay 2 (channel 3) */
++#define LCCR5_SOFM4 (1<<3) /* Start Of Frame Mask for Overlay 2 (channel 4) */
++#define LCCR5_SOFM5 (1<<4) /* Start Of Frame Mask for cursor (channel 5) */
++#define LCCR5_SOFM6 (1<<5) /* Start Of Frame Mask for command data (channel 6) */
++
++#define LCCR5_EOFM1 (1<<8) /* End Of Frame Mask for Overlay 1 (channel 1) */
++#define LCCR5_EOFM2 (1<<9) /* End Of Frame Mask for Overlay 2 (channel 2) */
++#define LCCR5_EOFM3 (1<<10) /* End Of Frame Mask for Overlay 2 (channel 3) */
++#define LCCR5_EOFM4 (1<<11) /* End Of Frame Mask for Overlay 2 (channel 4) */
++#define LCCR5_EOFM5 (1<<12) /* End Of Frame Mask for cursor (channel 5) */
++#define LCCR5_EOFM6 (1<<13) /* End Of Frame Mask for command data (channel 6) */
++
++#define LCCR5_BSM1 (1<<16) /* Branch mask for Overlay 1 (channel 1) */
++#define LCCR5_BSM2 (1<<17) /* Branch mask for Overlay 2 (channel 2) */
++#define LCCR5_BSM3 (1<<18) /* Branch mask for Overlay 2 (channel 3) */
++#define LCCR5_BSM4 (1<<19) /* Branch mask for Overlay 2 (channel 4) */
++#define LCCR5_BSM5 (1<<20) /* Branch mask for cursor (channel 5) */
++#define LCCR5_BSM6 (1<<21) /* Branch mask for data command (channel 6) */
++
++#define LCCR5_IUM1 (1<<24) /* Input FIFO Underrun Mask for Overlay 1 */
++#define LCCR5_IUM2 (1<<25) /* Input FIFO Underrun Mask for Overlay 2 */
++#define LCCR5_IUM3 (1<<26) /* Input FIFO Underrun Mask for Overlay 2 */
++#define LCCR5_IUM4 (1<<27) /* Input FIFO Underrun Mask for Overlay 2 */
++#define LCCR5_IUM5 (1<<28) /* Input FIFO Underrun Mask for cursor */
++#define LCCR5_IUM6 (1<<29) /* Input FIFO Underrun Mask for data command */
++
++#define OVL1C1_O1EN (1<<31) /* Enable bit for Overlay 1 */
++#define OVL2C1_O2EN (1<<31) /* Enable bit for Overlay 2 */
++#define CCR_CEN (1<<31) /* Enable bit for Cursor */
++
++/* LCD registers */
++#define LCCR4 __REG(0x44000010) /* LCD Controller Control Register 4 */
++#define LCCR5 __REG(0x44000014) /* LCD Controller Control Register 5 */
++#define FBR0 __REG(0x44000020) /* DMA Channel 0 Frame Branch Register */
++#define FBR1 __REG(0x44000024) /* DMA Channel 1 Frame Branch Register */
++#define FBR2 __REG(0x44000028) /* DMA Channel 2 Frame Branch Register */
++#define FBR3 __REG(0x4400002C) /* DMA Channel 3 Frame Branch Register */
++#define FBR4 __REG(0x44000030) /* DMA Channel 4 Frame Branch Register */
++#define FDADR2 __REG(0x44000220) /* DMA Channel 2 Frame Descriptor Address Register */
++#define FSADR2 __REG(0x44000224) /* DMA Channel 2 Frame Source Address Register */
++#define FIDR2 __REG(0x44000228) /* DMA Channel 2 Frame ID Register */
++#define LDCMD2 __REG(0x4400022C) /* DMA Channel 2 Command Register */
++#define FDADR3 __REG(0x44000230) /* DMA Channel 3 Frame Descriptor Address Register */
++#define FSADR3 __REG(0x44000234) /* DMA Channel 3 Frame Source Address Register */
++#define FIDR3 __REG(0x44000238) /* DMA Channel 3 Frame ID Register */
++#define LDCMD3 __REG(0x4400023C) /* DMA Channel 3 Command Register */
++#define FDADR4 __REG(0x44000240) /* DMA Channel 4 Frame Descriptor Address Register */
++#define FSADR4 __REG(0x44000244) /* DMA Channel 4 Frame Source Address Register */
++#define FIDR4 __REG(0x44000248) /* DMA Channel 4 Frame ID Register */
++#define LDCMD4 __REG(0x4400024C) /* DMA Channel 4 Command Register */
++#define FDADR5 __REG(0x44000250) /* DMA Channel 5 Frame Descriptor Address Register */
++#define FSADR5 __REG(0x44000254) /* DMA Channel 5 Frame Source Address Register */
++#define FIDR5 __REG(0x44000258) /* DMA Channel 5 Frame ID Register */
++#define LDCMD5 __REG(0x4400025C) /* DMA Channel 5 Command Register */
++
++#define OVL1C1 __REG(0x44000050) /* Overlay 1 Control Register 1 */
++#define OVL1C2 __REG(0x44000060) /* Overlay 1 Control Register 2 */
++#define OVL2C1 __REG(0x44000070) /* Overlay 2 Control Register 1 */
++#define OVL2C2 __REG(0x44000080) /* Overlay 2 Control Register 2 */
++#define CCR __REG(0x44000090) /* Cursor Control Register */
++
++#define FBR5 __REG(0x44000110) /* DMA Channel 5 Frame Branch Register */
++#define FBR6 __REG(0x44000114) /* DMA Channel 6 Frame Branch Register */
++
+ /*
+ * Memory controller
+ */
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/pxa_irda_susres_fix-r0.patch b/packages/linux/logicpd-pxa270-2.6.19.2/pxa_irda_susres_fix-r0.patch
new file mode 100644
index 0000000000..9f4885a85c
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/pxa_irda_susres_fix-r0.patch
@@ -0,0 +1,93 @@
+---
+ drivers/net/irda/pxaficp_ir.c | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+Index: linux-2.6.19/drivers/net/irda/pxaficp_ir.c
+===================================================================
+--- linux-2.6.19.orig/drivers/net/irda/pxaficp_ir.c 2006-11-29 21:57:37.000000000 +0000
++++ linux-2.6.19/drivers/net/irda/pxaficp_ir.c 2006-12-16 22:07:27.000000000 +0000
+@@ -704,9 +704,9 @@ static int pxa_irda_stop(struct net_devi
+ return 0;
+ }
+
+-static int pxa_irda_suspend(struct device *_dev, pm_message_t state)
++static int pxa_irda_suspend(struct platform_device *_dev, pm_message_t state)
+ {
+- struct net_device *dev = dev_get_drvdata(_dev);
++ struct net_device *dev = platform_get_drvdata(_dev);
+ struct pxa_irda *si;
+
+ if (dev && netif_running(dev)) {
+@@ -718,9 +718,9 @@ static int pxa_irda_suspend(struct devic
+ return 0;
+ }
+
+-static int pxa_irda_resume(struct device *_dev)
++static int pxa_irda_resume(struct platform_device *_dev)
+ {
+- struct net_device *dev = dev_get_drvdata(_dev);
++ struct net_device *dev = platform_get_drvdata(_dev);
+ struct pxa_irda *si;
+
+ if (dev && netif_running(dev)) {
+@@ -746,9 +746,8 @@ static int pxa_irda_init_iobuf(iobuff_t
+ return io->head ? 0 : -ENOMEM;
+ }
+
+-static int pxa_irda_probe(struct device *_dev)
++static int pxa_irda_probe(struct platform_device *pdev)
+ {
+- struct platform_device *pdev = to_platform_device(_dev);
+ struct net_device *dev;
+ struct pxa_irda *si;
+ unsigned int baudrate_mask;
+@@ -805,7 +804,7 @@ static int pxa_irda_probe(struct device
+ err = register_netdev(dev);
+
+ if (err == 0)
+- dev_set_drvdata(&pdev->dev, dev);
++ platform_set_drvdata(pdev, dev);
+
+ if (err) {
+ kfree(si->tx_buff.head);
+@@ -822,9 +821,9 @@ err_mem_1:
+ return err;
+ }
+
+-static int pxa_irda_remove(struct device *_dev)
++static int pxa_irda_remove(struct platform_device *_dev)
+ {
+- struct net_device *dev = dev_get_drvdata(_dev);
++ struct net_device *dev = platform_get_drvdata(_dev);
+
+ if (dev) {
+ struct pxa_irda *si = netdev_priv(dev);
+@@ -840,9 +839,10 @@ static int pxa_irda_remove(struct device
+ return 0;
+ }
+
+-static struct device_driver pxa_ir_driver = {
+- .name = "pxa2xx-ir",
+- .bus = &platform_bus_type,
++static struct platform_driver pxa_ir_driver = {
++ .driver = {
++ .name = "pxa2xx-ir",
++ },
+ .probe = pxa_irda_probe,
+ .remove = pxa_irda_remove,
+ .suspend = pxa_irda_suspend,
+@@ -851,12 +851,12 @@ static struct device_driver pxa_ir_drive
+
+ static int __init pxa_irda_init(void)
+ {
+- return driver_register(&pxa_ir_driver);
++ return platform_driver_register(&pxa_ir_driver);
+ }
+
+ static void __exit pxa_irda_exit(void)
+ {
+- driver_unregister(&pxa_ir_driver);
++ platform_driver_unregister(&pxa_ir_driver);
+ }
+
+ module_init(pxa_irda_init);
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/pxa_keys-r5.patch b/packages/linux/logicpd-pxa270-2.6.19.2/pxa_keys-r5.patch
new file mode 100644
index 0000000000..d263786f26
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/pxa_keys-r5.patch
@@ -0,0 +1,211 @@
+Index: linux-2.6.15-rc1/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.15-rc1.orig/arch/arm/mach-pxa/Makefile 2005-11-19 23:13:40.000000000 +0000
++++ linux-2.6.15-rc1/arch/arm/mach-pxa/Makefile 2005-11-19 23:13:41.000000000 +0000
+@@ -31,6 +31,7 @@
+
+ # Misc features
+ obj-$(CONFIG_PM) += pm.o sleep.o
++obj-$(CONFIG_PXA_KEYS) += pxa_keys.o
+ obj-$(CONFIG_PXA_SSP) += ssp.o
+
+ ifeq ($(CONFIG_PXA27x),y)
+Index: linux-2.6.15-rc1/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.15-rc1.orig/arch/arm/mach-pxa/Kconfig 2005-11-19 23:13:40.000000000 +0000
++++ linux-2.6.15-rc1/arch/arm/mach-pxa/Kconfig 2005-11-19 23:13:41.000000000 +0000
+@@ -112,6 +112,10 @@
+ help
+ Select code specific to PXA27x variants
+
++config PXA_KEYS
++ tristate "PXA25x/27x simple keyboard driver"
++ depends on (PXA25x || PXA27x) && INPUT
++
+ config IWMMXT
+ bool
+ help
+Index: linux-2.6.15-rc1/arch/arm/mach-pxa/pxa_keys.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.15-rc1/arch/arm/mach-pxa/pxa_keys.c 2005-11-19 23:32:30.000000000 +0000
+@@ -0,0 +1,157 @@
++/*
++ * Driver interface for keys on PXA25x GPIO lines
++ *
++ * Copyright 2005 Phil Blundell
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/module.h>
++#include <linux/version.h>
++
++#include <linux/init.h>
++#include <linux/fs.h>
++#include <linux/interrupt.h>
++#include <linux/sched.h>
++#include <linux/pm.h>
++#include <linux/sysctl.h>
++#include <linux/proc_fs.h>
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++#include <linux/input.h>
++
++#include <asm/irq.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/pxa_keys.h>
++
++static irqreturn_t
++pxa_keys_isr (int irq, void *dev_id, struct pt_regs *regs)
++{
++ int i;
++ struct pxa_keys_platform_data *k = dev_id;
++
++ if (k->suspended)
++ return IRQ_HANDLED;
++
++ for (i = 0; i < k->nbuttons; i++) {
++ int gpio = k->buttons[i].gpio;
++ if (irq == IRQ_GPIO(gpio)) {
++ int state = ((GPLR(gpio) & GPIO_bit(gpio)) ? 1 : 0)
++ ^ ((k->buttons[i].flags & PXAKEY_ACTIVE_LOW) != 0);
++ input_report_key (&k->input, k->buttons[i].keycode, state);
++ if ((k->buttons[i].flags & PXAKEY_PWR_KEY)
++ && time_after(jiffies, k->suspend_jiffies + HZ)) {
++ input_event(&k->input, EV_PWR, k->buttons[i].keycode, state);
++ k->suspend_jiffies=jiffies;
++ }
++
++ }
++ }
++
++ return IRQ_HANDLED;
++}
++
++#ifdef CONFIG_PM
++static int pxa_keys_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct pxa_keys_platform_data *k = platform_get_drvdata(pdev);
++ k->suspended = 1;
++ return 0;
++}
++
++static int pxa_keys_resume(struct platform_device *pdev)
++{
++ struct pxa_keys_platform_data *k = platform_get_drvdata(pdev);
++
++ /* Upon resume, ignore the suspend key for a short while */
++ k->suspend_jiffies=jiffies;
++ k->suspended = 0;
++ return 0;
++}
++#else
++#define pxa_keys_suspend NULL
++#define pxa_keys_resume NULL
++#endif
++
++static int
++pxa_keys_probe (struct platform_device *pdev)
++{
++ struct pxa_keys_platform_data *k;
++ int i;
++
++ k = pdev->dev.platform_data;
++ platform_set_drvdata(pdev, k);
++
++ init_input_dev (&k->input);
++
++ k->input.evbit[0] = BIT(EV_KEY) | BIT(EV_PWR) | BIT(EV_REP);
++ for (i = 0; i < k->nbuttons; i++) {
++ int code = k->buttons[i].keycode;
++ int irq = IRQ_GPIO (k->buttons[i].gpio);
++ int result;
++
++ set_irq_type (irq, IRQT_BOTHEDGE);
++ result = request_irq (irq, pxa_keys_isr, SA_SAMPLE_RANDOM,
++ "pxa_keys", k);
++ if (result == 0)
++ set_bit (code, k->input.keybit);
++ else
++ printk("pxa_keys: unable to claim irq %d; error %d\n", irq, result);
++ }
++
++ k->input.name = pdev->name;
++ k->input.private = k;
++
++ k->suspend_jiffies=jiffies;
++ k->suspended=0;
++
++ input_register_device (&k->input);
++
++ return 0;
++}
++
++static int
++pxa_keys_remove (struct platform_device *pdev)
++{
++ struct pxa_keys_platform_data *k = pdev->dev.platform_data;
++ int i;
++
++ for (i = 0; i < k->nbuttons; i++) {
++ int irq = IRQ_GPIO (k->buttons[i].gpio);
++ free_irq (irq, k);
++ }
++
++ input_unregister_device (&k->input);
++
++ return 0;
++}
++
++struct platform_driver pxa_keys_device_driver = {
++ .probe = pxa_keys_probe,
++ .remove = pxa_keys_remove,
++ .suspend = pxa_keys_suspend,
++ .resume = pxa_keys_resume,
++ .driver = {
++ .name = "pxa2xx-keys",
++ },
++};
++
++static int pxa_keys_init (void)
++{
++ return platform_driver_register(&pxa_keys_device_driver);
++}
++
++static void pxa_keys_cleanup (void)
++{
++ platform_driver_unregister(&pxa_keys_device_driver);
++}
++
++module_init (pxa_keys_init);
++module_exit (pxa_keys_cleanup);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Phil Blundell <pb@handhelds.org>");
++MODULE_DESCRIPTION("Keyboard driver for PXA25x/PXA27x GPIOs");
+Index: linux-2.6.15-rc1/include/asm-arm/arch-pxa/pxa_keys.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.15-rc1/include/asm-arm/arch-pxa/pxa_keys.h 2005-11-19 23:13:41.000000000 +0000
+@@ -0,0 +1,17 @@
++#include <linux/input.h>
++
++struct pxa_keys_button {
++ int keycode;
++ int gpio;
++ unsigned long flags;
++};
++#define PXAKEY_ACTIVE_LOW (1 << 0) /* Key is Active Low */
++#define PXAKEY_PWR_KEY (1 << 1) /* Key is a Power Key */
++
++struct pxa_keys_platform_data {
++ struct pxa_keys_button *buttons;
++ int nbuttons;
++ struct input_dev input;
++ unsigned int suspended;
++ unsigned long suspend_jiffies;
++};
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/pxa_timerfix-r0.patch b/packages/linux/logicpd-pxa270-2.6.19.2/pxa_timerfix-r0.patch
new file mode 100644
index 0000000000..959de60276
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/pxa_timerfix-r0.patch
@@ -0,0 +1,77 @@
+PXA Timers: Stop interrupts becomming enabled when they shouldn't be
+
+Calling save_time_delta() from within pxa_pm_enter() isn't allowed as it
+will reenable interrupts in a function where they should be disabled
+throughout. These calls can be made safely from the time.c suspend/resume
+functions instead.
+
+Signed-Off-By: Richard Purdie <rpurdie@rpsys.net>
+
+
+Index: linux-2.6.12/arch/arm/mach-pxa/pm.c
+===================================================================
+--- linux-2.6.12.orig/arch/arm/mach-pxa/pm.c 2005-08-21 20:05:16.000000000 +0100
++++ linux-2.6.12/arch/arm/mach-pxa/pm.c 2005-08-21 20:06:02.000000000 +0100
+@@ -78,7 +78,6 @@
+ {
+ unsigned long sleep_save[SLEEP_SAVE_SIZE];
+ unsigned long checksum = 0;
+- struct timespec delta, rtc;
+ int i;
+ extern void pxa_cpu_pm_enter(suspend_state_t state);
+
+@@ -87,11 +86,6 @@
+ iwmmxt_task_disable(NULL);
+ #endif
+
+- /* preserve current time */
+- rtc.tv_sec = RCNR;
+- rtc.tv_nsec = 0;
+- save_time_delta(&delta, &rtc);
+-
+ SAVE(GPLR0); SAVE(GPLR1); SAVE(GPLR2);
+ SAVE(GPDR0); SAVE(GPDR1); SAVE(GPDR2);
+ SAVE(GRER0); SAVE(GRER1); SAVE(GRER2);
+@@ -182,10 +176,6 @@
+
+ RESTORE(PSTR);
+
+- /* restore current time */
+- rtc.tv_sec = RCNR;
+- restore_time_delta(&delta, &rtc);
+-
+ #ifdef DEBUG
+ printk(KERN_DEBUG "*** made it back from resume\n");
+ #endif
+Index: linux-2.6.12/arch/arm/mach-pxa/time.c
+===================================================================
+--- linux-2.6.12.orig/arch/arm/mach-pxa/time.c 2005-08-21 20:04:39.000000000 +0100
++++ linux-2.6.12/arch/arm/mach-pxa/time.c 2005-08-21 20:05:24.000000000 +0100
+@@ -128,6 +128,7 @@
+
+ #ifdef CONFIG_PM
+ static unsigned long osmr[4], oier;
++static struct timespec delta, rtc;
+
+ static void pxa_timer_suspend(void)
+ {
+@@ -136,10 +137,19 @@
+ osmr[2] = OSMR2;
+ osmr[3] = OSMR3;
+ oier = OIER;
++
++ /* preserve current time */
++ rtc.tv_sec = RCNR;
++ rtc.tv_nsec = 0;
++ save_time_delta(&delta, &rtc);
+ }
+
+ static void pxa_timer_resume(void)
+ {
++ /* restore current time */
++ rtc.tv_sec = RCNR;
++ restore_time_delta(&delta, &rtc);
++
+ OSMR0 = osmr[0];
+ OSMR1 = osmr[1];
+ OSMR2 = osmr[2];
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/pxafb_fix_params-r2.patch b/packages/linux/logicpd-pxa270-2.6.19.2/pxafb_fix_params-r2.patch
new file mode 100644
index 0000000000..6ddb951df0
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/pxafb_fix_params-r2.patch
@@ -0,0 +1,90 @@
+Fix pxafb compile failures when CONFIG_FB_PXA_PARAMETERS is enabled after
+recent structure changes.
+
+Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+
+---
+ drivers/video/pxafb.c | 40 ++++++++++++++++++++--------------------
+ 1 file changed, 20 insertions(+), 20 deletions(-)
+
+Index: git/drivers/video/pxafb.c
+===================================================================
+--- git.orig/drivers/video/pxafb.c 2006-12-16 23:53:00.000000000 +0000
++++ git/drivers/video/pxafb.c 2006-12-16 23:53:18.000000000 +0000
+@@ -1216,7 +1216,7 @@ static int __init pxafb_parse_options(st
+ done:
+ if (res_specified) {
+ dev_info(dev, "overriding resolution: %dx%d\n", xres, yres);
+- inf->xres = xres; inf->yres = yres;
++ inf->modes[0].xres = xres; inf->modes[0].yres = yres;
+ }
+ if (bpp_specified)
+ switch (bpp) {
+@@ -1225,48 +1225,48 @@ static int __init pxafb_parse_options(st
+ case 4:
+ case 8:
+ case 16:
+- inf->bpp = bpp;
++ inf->modes[0].bpp = bpp;
+ dev_info(dev, "overriding bit depth: %d\n", bpp);
+ break;
+ default:
+ dev_err(dev, "Depth %d is not valid\n", bpp);
+ }
+ } else if (!strncmp(this_opt, "pixclock:", 9)) {
+- inf->pixclock = simple_strtoul(this_opt+9, NULL, 0);
+- dev_info(dev, "override pixclock: %ld\n", inf->pixclock);
++ inf->modes[0].pixclock = simple_strtoul(this_opt+9, NULL, 0);
++ dev_info(dev, "override pixclock: %ld\n", inf->modes[0].pixclock);
+ } else if (!strncmp(this_opt, "left:", 5)) {
+- inf->left_margin = simple_strtoul(this_opt+5, NULL, 0);
+- dev_info(dev, "override left: %u\n", inf->left_margin);
++ inf->modes[0].left_margin = simple_strtoul(this_opt+5, NULL, 0);
++ dev_info(dev, "override left: %u\n", inf->modes[0].left_margin);
+ } else if (!strncmp(this_opt, "right:", 6)) {
+- inf->right_margin = simple_strtoul(this_opt+6, NULL, 0);
+- dev_info(dev, "override right: %u\n", inf->right_margin);
++ inf->modes[0].right_margin = simple_strtoul(this_opt+6, NULL, 0);
++ dev_info(dev, "override right: %u\n", inf->modes[0].right_margin);
+ } else if (!strncmp(this_opt, "upper:", 6)) {
+- inf->upper_margin = simple_strtoul(this_opt+6, NULL, 0);
+- dev_info(dev, "override upper: %u\n", inf->upper_margin);
++ inf->modes[0].upper_margin = simple_strtoul(this_opt+6, NULL, 0);
++ dev_info(dev, "override upper: %u\n", inf->modes[0].upper_margin);
+ } else if (!strncmp(this_opt, "lower:", 6)) {
+- inf->lower_margin = simple_strtoul(this_opt+6, NULL, 0);
+- dev_info(dev, "override lower: %u\n", inf->lower_margin);
++ inf->modes[0].lower_margin = simple_strtoul(this_opt+6, NULL, 0);
++ dev_info(dev, "override lower: %u\n", inf->modes[0].lower_margin);
+ } else if (!strncmp(this_opt, "hsynclen:", 9)) {
+- inf->hsync_len = simple_strtoul(this_opt+9, NULL, 0);
+- dev_info(dev, "override hsynclen: %u\n", inf->hsync_len);
++ inf->modes[0].hsync_len = simple_strtoul(this_opt+9, NULL, 0);
++ dev_info(dev, "override hsynclen: %u\n", inf->modes[0].hsync_len);
+ } else if (!strncmp(this_opt, "vsynclen:", 9)) {
+- inf->vsync_len = simple_strtoul(this_opt+9, NULL, 0);
+- dev_info(dev, "override vsynclen: %u\n", inf->vsync_len);
++ inf->modes[0].vsync_len = simple_strtoul(this_opt+9, NULL, 0);
++ dev_info(dev, "override vsynclen: %u\n", inf->modes[0].vsync_len);
+ } else if (!strncmp(this_opt, "hsync:", 6)) {
+ if (simple_strtoul(this_opt+6, NULL, 0) == 0) {
+ dev_info(dev, "override hsync: Active Low\n");
+- inf->sync &= ~FB_SYNC_HOR_HIGH_ACT;
++ inf->modes[0].sync &= ~FB_SYNC_HOR_HIGH_ACT;
+ } else {
+ dev_info(dev, "override hsync: Active High\n");
+- inf->sync |= FB_SYNC_HOR_HIGH_ACT;
++ inf->modes[0].sync |= FB_SYNC_HOR_HIGH_ACT;
+ }
+ } else if (!strncmp(this_opt, "vsync:", 6)) {
+ if (simple_strtoul(this_opt+6, NULL, 0) == 0) {
+ dev_info(dev, "override vsync: Active Low\n");
+- inf->sync &= ~FB_SYNC_VERT_HIGH_ACT;
++ inf->modes[0].sync &= ~FB_SYNC_VERT_HIGH_ACT;
+ } else {
+ dev_info(dev, "override vsync: Active High\n");
+- inf->sync |= FB_SYNC_VERT_HIGH_ACT;
++ inf->modes[0].sync |= FB_SYNC_VERT_HIGH_ACT;
+ }
+ } else if (!strncmp(this_opt, "dpc:", 4)) {
+ if (simple_strtoul(this_opt+4, NULL, 0) == 0) {
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/ucb1400-touchscreen.patch b/packages/linux/logicpd-pxa270-2.6.19.2/ucb1400-touchscreen.patch
new file mode 100644
index 0000000000..3986a2c10a
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/ucb1400-touchscreen.patch
@@ -0,0 +1,747 @@
+This patch is slightly adjusted from
+
+http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=3073/1
+http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=3074/2
+http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=3075/2
+
+in order to get it to apply cleanly to the released 2.6.15 codebase
+and to put the Kconfig stuff in a more reasonable place in the tree.
+Actually, I think Kconfig should probably separate the notion of the
+touchscreen driver and the AC97-MCP layer thing; but that problem is
+basically in the underlying mcp-based ucb1x00 driver layout in the
+first place.
+Index: linux-2.6.15gum/drivers/mfd/Makefile
+===================================================================
+--- linux-2.6.15gum.orig/drivers/mfd/Makefile
++++ linux-2.6.15gum/drivers/mfd/Makefile
+@@ -10,3 +10,6 @@
+ ifeq ($(CONFIG_SA1100_ASSABET),y)
+ obj-$(CONFIG_MCP_UCB1200) += ucb1x00-assabet.o
+ endif
++
++obj-$(CONFIG_TOUCHSCREEN_UCB1400) += mcp-ac97.o ucb1x00-core.o ucb1x00-ts.o
++
+Index: linux-2.6.15gum/drivers/mfd/mcp-core.c
+===================================================================
+--- linux-2.6.15gum.orig/drivers/mfd/mcp-core.c
++++ linux-2.6.15gum/drivers/mfd/mcp-core.c
+@@ -18,7 +18,6 @@
+ #include <linux/slab.h>
+ #include <linux/string.h>
+
+-#include <asm/dma.h>
+ #include <asm/system.h>
+
+ #include "mcp.h"
+@@ -206,6 +205,7 @@ struct mcp *mcp_host_alloc(struct device
+ mcp->attached_device.bus = &mcp_bus_type;
+ mcp->attached_device.dma_mask = parent->dma_mask;
+ mcp->attached_device.release = mcp_release;
++ mcp->dev = &mcp->attached_device;
+ }
+ return mcp;
+ }
+Index: linux-2.6.15gum/drivers/mfd/mcp-sa11x0.c
+===================================================================
+--- linux-2.6.15gum.orig/drivers/mfd/mcp-sa11x0.c
++++ linux-2.6.15gum/drivers/mfd/mcp-sa11x0.c
+@@ -31,8 +31,12 @@
+ #include "mcp.h"
+
+ struct mcp_sa11x0 {
+- u32 mccr0;
+- u32 mccr1;
++ u32 mccr0;
++ u32 mccr1;
++ dma_device_t dma_audio_rd;
++ dma_device_t dma_audio_wr;
++ dma_device_t dma_telco_rd;
++ dma_device_t dma_telco_wr;
+ };
+
+ #define priv(mcp) ((struct mcp_sa11x0 *)mcp_priv(mcp))
+@@ -159,10 +163,10 @@ static int mcp_sa11x0_probe(struct platf
+ mcp->owner = THIS_MODULE;
+ mcp->ops = &mcp_sa11x0;
+ mcp->sclk_rate = data->sclk_rate;
+- mcp->dma_audio_rd = DMA_Ser4MCP0Rd;
+- mcp->dma_audio_wr = DMA_Ser4MCP0Wr;
+- mcp->dma_telco_rd = DMA_Ser4MCP1Rd;
+- mcp->dma_telco_wr = DMA_Ser4MCP1Wr;
++ priv(mcp)->dma_audio_rd = DMA_Ser4MCP0Rd;
++ priv(mcp)->dma_audio_wr = DMA_Ser4MCP0Wr;
++ priv(mcp)->dma_telco_rd = DMA_Ser4MCP1Rd;
++ priv(mcp)->dma_telco_wr = DMA_Ser4MCP1Wr;
+
+ platform_set_drvdata(pdev, mcp);
+
+Index: linux-2.6.15gum/drivers/mfd/mcp.h
+===================================================================
+--- linux-2.6.15gum.orig/drivers/mfd/mcp.h
++++ linux-2.6.15gum/drivers/mfd/mcp.h
+@@ -19,11 +19,8 @@ struct mcp {
+ int use_count;
+ unsigned int sclk_rate;
+ unsigned int rw_timeout;
+- dma_device_t dma_audio_rd;
+- dma_device_t dma_audio_wr;
+- dma_device_t dma_telco_rd;
+- dma_device_t dma_telco_wr;
+ struct device attached_device;
++ struct device *dev;
+ };
+
+ struct mcp_ops {
+Index: linux-2.6.15gum/drivers/mfd/ucb1x00-assabet.c
+===================================================================
+--- linux-2.6.15gum.orig/drivers/mfd/ucb1x00-assabet.c
++++ linux-2.6.15gum/drivers/mfd/ucb1x00-assabet.c
+@@ -15,8 +15,6 @@
+ #include <linux/proc_fs.h>
+ #include <linux/device.h>
+
+-#include <asm/dma.h>
+-
+ #include "ucb1x00.h"
+
+ #define UCB1X00_ATTR(name,input)\
+Index: linux-2.6.15gum/drivers/mfd/ucb1x00-core.c
+===================================================================
+--- a/drivers/mfd/ucb1x00-core~org.c 2006-11-29 16:57:37.000000000 -0500
++++ a/drivers/mfd/ucb1x00-core.c 2006-12-29 13:42:58.000000000 -0500
+@@ -22,6 +22,7 @@
+ #include <linux/init.h>
+ #include <linux/errno.h>
+ #include <linux/interrupt.h>
++#include <linux/kthread.h>
+ #include <linux/device.h>
+ #include <linux/mutex.h>
+
+@@ -30,6 +31,14 @@
+
+ #include "ucb1x00.h"
+
++#if (defined CONFIG_UCB1400) || (defined CONFIG_UCB1400_MODULE)
++#define UCB_IS_1400(id) ((id) == UCB_ID_1400)
++#define UCB_X_CSR1 0xe /* this fake entry will be translated by mcp */
++#define UCB_X_CSR2 0xf /* this fake entry will be translated by mcp */
++#else
++#define UCB_IS_1400(id) (0)
++#endif
++
+ static DEFINE_MUTEX(ucb1x00_mutex);
+ static LIST_HEAD(ucb1x00_drivers);
+ static LIST_HEAD(ucb1x00_devices);
+@@ -57,9 +66,9 @@
+ spin_lock_irqsave(&ucb->io_lock, flags);
+ ucb->io_dir |= out;
+ ucb->io_dir &= ~in;
++ spin_unlock_irqrestore(&ucb->io_lock, flags);
+
+ ucb1x00_reg_write(ucb, UCB_IO_DIR, ucb->io_dir);
+- spin_unlock_irqrestore(&ucb->io_lock, flags);
+ }
+
+ /**
+@@ -85,9 +94,9 @@
+ spin_lock_irqsave(&ucb->io_lock, flags);
+ ucb->io_out |= set;
+ ucb->io_out &= ~clear;
++ spin_unlock_irqrestore(&ucb->io_lock, flags);
+
+ ucb1x00_reg_write(ucb, UCB_IO_DATA, ucb->io_out);
+- spin_unlock_irqrestore(&ucb->io_lock, flags);
+ }
+
+ /**
+@@ -177,7 +186,7 @@
+ schedule_timeout(1);
+ }
+
+- return UCB_ADC_DAT(val);
++ return UCB_IS_1400(ucb->id) ? (val & 0x3ff) : ((val & 0x7fe0) >> 5);
+ }
+
+ /**
+@@ -222,6 +231,47 @@
+ return IRQ_HANDLED;
+ }
+
++/*
++ * A restriction with interrupts exists when using the ucb1400, as
++ * the codec read/write routines may sleep while waiting for codec
++ * access completion and uses semaphores for access control to the
++ * AC97 bus. A complete codec read cycle could take anywhere from
++ * 60 to 100uSec so we *definitely* don't want to spin inside the
++ * interrupt handler waiting for codec access. So, we handle the
++ * interrupt by scheduling a RT kernel thread to run in process
++ * context instead of interrupt context.
++ */
++static int ucb1x00_thread(void *_ucb)
++{
++ struct task_struct *tsk = current;
++ struct ucb1x00 *ucb = _ucb;
++
++ tsk->policy = SCHED_FIFO;
++ tsk->rt_priority = 1;
++
++ while (!kthread_should_stop()) {
++ wait_for_completion_interruptible(&ucb->irq_wait);
++ if (try_to_freeze())
++ continue;
++ ucb1x00_irq(ucb->irq, ucb);
++ enable_irq(ucb->irq);
++ }
++
++ ucb->irq_task = NULL;
++ return 0;
++}
++
++static irqreturn_t ucb1x00_threaded_irq(int irqnr, void *devid, struct pt_regs *regs)
++{
++ struct ucb1x00 *ucb = devid;
++ if (irqnr == ucb->irq) {
++ disable_irq(ucb->irq);
++ complete(&ucb->irq_wait);
++ return IRQ_HANDLED;
++ }
++ return IRQ_NONE;
++}
++
+ /**
+ * ucb1x00_hook_irq - hook a UCB1x00 interrupt
+ * @ucb: UCB1x00 structure describing chip
+@@ -276,17 +326,27 @@
+ if (idx < 16) {
+ spin_lock_irqsave(&ucb->lock, flags);
+
+- ucb1x00_enable(ucb);
+- if (edges & UCB_RISING) {
++ if (edges & UCB_RISING)
+ ucb->irq_ris_enbl |= 1 << idx;
+- ucb1x00_reg_write(ucb, UCB_IE_RIS, ucb->irq_ris_enbl);
+- }
+- if (edges & UCB_FALLING) {
++ if (edges & UCB_FALLING)
+ ucb->irq_fal_enbl |= 1 << idx;
+- ucb1x00_reg_write(ucb, UCB_IE_FAL, ucb->irq_fal_enbl);
+- }
+- ucb1x00_disable(ucb);
++
+ spin_unlock_irqrestore(&ucb->lock, flags);
++
++ ucb1x00_enable(ucb);
++ ucb1x00_reg_write(ucb, UCB_IE_RIS, ucb->irq_ris_enbl);
++ ucb1x00_reg_write(ucb, UCB_IE_FAL, ucb->irq_fal_enbl);
++ ucb1x00_disable(ucb);
++
++ /* This prevents spurious interrupts on the UCB1400 */
++ ucb1x00_reg_write(ucb, UCB_IE_CLEAR, 1 << idx);
++ ucb1x00_reg_write(ucb, UCB_IE_CLEAR, 0);
++
++ ucb1x00_reg_write(ucb, UCB_IE_RIS, ucb->irq_ris_enbl);
++ ucb1x00_reg_write(ucb, UCB_IE_FAL, ucb->irq_fal_enbl);
++
++ ucb1x00_disable(ucb);
++
+ }
+ }
+
+@@ -306,16 +366,20 @@
+ spin_lock_irqsave(&ucb->lock, flags);
+
+ ucb1x00_enable(ucb);
+- if (edges & UCB_RISING) {
++ if (edges & UCB_RISING)
+ ucb->irq_ris_enbl &= ~(1 << idx);
+- ucb1x00_reg_write(ucb, UCB_IE_RIS, ucb->irq_ris_enbl);
+- }
+- if (edges & UCB_FALLING) {
++
++ if (edges & UCB_FALLING)
+ ucb->irq_fal_enbl &= ~(1 << idx);
+- ucb1x00_reg_write(ucb, UCB_IE_FAL, ucb->irq_fal_enbl);
+- }
+- ucb1x00_disable(ucb);
++
+ spin_unlock_irqrestore(&ucb->lock, flags);
++
++ ucb1x00_enable(ucb);
++ ucb1x00_reg_write(ucb, UCB_IE_RIS, ucb->irq_ris_enbl);
++ ucb1x00_reg_write(ucb, UCB_IE_FAL, ucb->irq_fal_enbl);
++ ucb1x00_disable(ucb);
++
++
+ }
+ }
+
+@@ -348,16 +412,17 @@
+ ucb->irq_ris_enbl &= ~(1 << idx);
+ ucb->irq_fal_enbl &= ~(1 << idx);
+
+- ucb1x00_enable(ucb);
+- ucb1x00_reg_write(ucb, UCB_IE_RIS, ucb->irq_ris_enbl);
+- ucb1x00_reg_write(ucb, UCB_IE_FAL, ucb->irq_fal_enbl);
+- ucb1x00_disable(ucb);
+-
+ irq->fn = NULL;
+ irq->devid = NULL;
+ ret = 0;
+ }
+ spin_unlock_irq(&ucb->lock);
++
++ ucb1x00_enable(ucb);
++ ucb1x00_reg_write(ucb, UCB_IE_RIS, ucb->irq_ris_enbl);
++ ucb1x00_reg_write(ucb, UCB_IE_FAL, ucb->irq_fal_enbl);
++ ucb1x00_disable(ucb);
++
+ return ret;
+
+ bad:
+@@ -479,7 +544,7 @@
+ mcp_enable(mcp);
+ id = mcp_reg_read(mcp, UCB_ID);
+
+- if (id != UCB_ID_1200 && id != UCB_ID_1300 && id != UCB_ID_TC35143) {
++ if (id != UCB_ID_1200 && id != UCB_ID_1300 && id != UCB_ID_TC35143 && !UCB_IS_1400(id)) {
+ printk(KERN_WARNING "UCB1x00 ID not found: %04x\n", id);
+ goto err_disable;
+ }
+@@ -492,29 +557,41 @@
+ memset(ucb, 0, sizeof(struct ucb1x00));
+
+ ucb->cdev.class = &ucb1x00_class;
+- ucb->cdev.dev = &mcp->attached_device;
++ ucb->cdev.dev = mcp->dev;
+ strlcpy(ucb->cdev.class_id, "ucb1x00", sizeof(ucb->cdev.class_id));
+
+ spin_lock_init(&ucb->lock);
+ spin_lock_init(&ucb->io_lock);
+ sema_init(&ucb->adc_sem, 1);
++ init_completion(&ucb->irq_wait);
+
+ ucb->id = id;
+ ucb->mcp = mcp;
+ ucb->irq = ucb1x00_detect_irq(ucb);
+ if (ucb->irq == NO_IRQ) {
+- printk(KERN_ERR "UCB1x00: IRQ probe failed\n");
+- ret = -ENODEV;
+- goto err_free;
++ printk(KERN_ERR "UCB1x00: IRQ probe auto-detect failed.. hardcoding IRQ..\n");
++ ucb->irq = 164;
++ //ret = -ENODEV;
++ //goto err_free;
+ }
+
+- ret = request_irq(ucb->irq, ucb1x00_irq, IRQF_TRIGGER_RISING,
+- "UCB1x00", ucb);
++ ret = request_irq(ucb->irq,
++ UCB_IS_1400(id) ? ucb1x00_threaded_irq : ucb1x00_irq,
++ 0, "UCB1x00", ucb);
++
+ if (ret) {
+ printk(KERN_ERR "ucb1x00: unable to grab irq%d: %d\n",
+ ucb->irq, ret);
+ goto err_free;
+ }
++ if (UCB_IS_1400(id)) {
++ ucb->irq_task = kthread_run(ucb1x00_thread, ucb, "kUCB1x00d");
++ if (IS_ERR(ucb->irq_task)) {
++ ret = PTR_ERR(ucb->irq_task);
++ ucb->irq_task = NULL;
++ goto err_irq;
++ }
++ }
+
+ mcp_set_drvdata(mcp, ucb);
+
+@@ -532,6 +609,8 @@
+ goto out;
+
+ err_irq:
++ if (UCB_IS_1400(id) && ucb->irq_task)
++ kthread_stop(ucb->irq_task);
+ free_irq(ucb->irq, ucb);
+ err_free:
+ kfree(ucb);
+@@ -554,6 +633,8 @@
+ }
+ mutex_unlock(&ucb1x00_mutex);
+
++ if (UCB_IS_1400(ucb->id) && ucb->irq_task)
++ kthread_stop(ucb->irq_task);
+ free_irq(ucb->irq, ucb);
+ class_device_unregister(&ucb->cdev);
+ }
+
+Index: linux-2.6.15gum/drivers/mfd/ucb1x00-ts.c
+===================================================================
+--- linux-2.6.15gum.orig/drivers/mfd/ucb1x00-ts.c
++++ linux-2.6.15gum/drivers/mfd/ucb1x00-ts.c
+@@ -33,10 +33,8 @@
+ #include <linux/slab.h>
+ #include <linux/kthread.h>
+
+-#include <asm/dma.h>
+-#include <asm/semaphore.h>
+-#include <asm/arch/collie.h>
+ #include <asm/mach-types.h>
++#include <asm/arch-sa1100/collie.h>
+
+ #include "ucb1x00.h"
+
+@@ -45,13 +43,14 @@
+ struct input_dev *idev;
+ struct ucb1x00 *ucb;
+
+- wait_queue_head_t irq_wait;
++ struct completion irq_wait;
+ struct task_struct *rtask;
+ u16 x_res;
+ u16 y_res;
+
+ unsigned int restart:1;
+ unsigned int adcsync:1;
++ unsigned int go_thread;
+ };
+
+ static int adcsync;
+@@ -205,7 +204,6 @@
+ {
+ struct ucb1x00_ts *ts = _ts;
+ struct task_struct *tsk = current;
+- DECLARE_WAITQUEUE(wait, tsk);
+ int valid;
+
+ /*
+@@ -217,10 +215,8 @@
+
+ valid = 0;
+
+- add_wait_queue(&ts->irq_wait, &wait);
+- while (!kthread_should_stop()) {
++ while (!kthread_should_stop() && ts->go_thread) {
+ unsigned int x, y, p;
+- signed long timeout;
+
+ ts->restart = 0;
+
+@@ -242,8 +238,6 @@
+
+
+ if (ucb1x00_ts_pen_down(ts)) {
+- set_task_state(tsk, TASK_INTERRUPTIBLE);
+-
+ ucb1x00_enable_irq(ts->ucb, UCB_IRQ_TSPX, machine_is_collie() ? UCB_RISING : UCB_FALLING);
+ ucb1x00_disable(ts->ucb);
+
+@@ -256,7 +250,16 @@
+ valid = 0;
+ }
+
+- timeout = MAX_SCHEDULE_TIMEOUT;
++ /*
++ * Since ucb1x00_enable_irq() might sleep due
++ * to the way the UCB1400 regs are accessed, we
++ * can't use set_task_state() before that call,
++ * and not changing state before enabling the
++ * interrupt is racy. A completion handler avoids
++ * the issue.
++ */
++ wait_for_completion_interruptible(&ts->irq_wait);
++
+ } else {
+ ucb1x00_disable(ts->ucb);
+
+@@ -271,16 +274,12 @@
+ }
+
+ set_task_state(tsk, TASK_INTERRUPTIBLE);
+- timeout = HZ / 100;
++ schedule_timeout(HZ/100);
+ }
+
+ try_to_freeze();
+-
+- schedule_timeout(timeout);
+ }
+
+- remove_wait_queue(&ts->irq_wait, &wait);
+-
+ ts->rtask = NULL;
+ return 0;
+ }
+@@ -293,7 +292,7 @@
+ {
+ struct ucb1x00_ts *ts = id;
+ ucb1x00_disable_irq(ts->ucb, UCB_IRQ_TSPX, UCB_FALLING);
+- wake_up(&ts->irq_wait);
++ complete(&ts->irq_wait);
+ }
+
+ static int ucb1x00_ts_open(struct input_dev *idev)
+@@ -303,7 +302,7 @@
+
+ BUG_ON(ts->rtask);
+
+- init_waitqueue_head(&ts->irq_wait);
++ init_completion(&ts->irq_wait);
+ ret = ucb1x00_hook_irq(ts->ucb, UCB_IRQ_TSPX, ucb1x00_ts_irq, ts);
+ if (ret < 0)
+ goto out;
+@@ -318,6 +317,8 @@
+ ucb1x00_adc_disable(ts->ucb);
+
+ ts->rtask = kthread_run(ucb1x00_thread, ts, "ktsd");
++ ts->go_thread = 1; //start thread!
++
+ if (!IS_ERR(ts->rtask)) {
+ ret = 0;
+ } else {
+@@ -337,9 +338,14 @@
+ {
+ struct ucb1x00_ts *ts = idev->private;
+
++
++ ts->go_thread = 0; //Stop thread!
++ complete(&ts->irq_wait);
++
+ if (ts->rtask)
+ kthread_stop(ts->rtask);
+
++
+ ucb1x00_enable(ts->ucb);
+ ucb1x00_free_irq(ts->ucb, UCB_IRQ_TSPX, ts);
+ ucb1x00_reg_write(ts->ucb, UCB_TS_CR, 0);
+@@ -358,7 +364,7 @@
+ * after sleep.
+ */
+ ts->restart = 1;
+- wake_up(&ts->irq_wait);
++ complete(&ts->irq_wait);
+ }
+ return 0;
+ }
+
+Index: linux-2.6.15gum/drivers/mfd/ucb1x00.h
+===================================================================
+--- a/drivers/mfd/ucb1x00.h~org 2006-12-29 13:43:38.000000000 -0500
++++ a/drivers/mfd/ucb1x00.h 2006-12-29 13:44:48.000000000 -0500
+@@ -94,6 +94,7 @@
+ #define UCB_ID 0x0c
+ #define UCB_ID_1200 0x1004
+ #define UCB_ID_1300 0x1005
++#define UCB_ID_1400 0x4304
+ #define UCB_ID_TC35143 0x9712
+
+ #define UCB_MODE 0x0d
+@@ -111,6 +112,8 @@
+ spinlock_t lock;
+ struct mcp *mcp;
+ unsigned int irq;
++ struct task_struct *irq_task;
++ struct completion irq_wait;
+ struct semaphore adc_sem;
+ spinlock_t io_lock;
+ u16 id;
+Index: linux-2.6.15gum/drivers/mfd/mcp-ac97.c
+===================================================================
+--- /dev/null
++++ linux-2.6.15gum/drivers/mfd/mcp-ac97.c
+@@ -0,0 +1,153 @@
++/*
++ * linux/drivers/misc/mcp-ac97.c
++ *
++ * Author: Nicolas Pitre
++ * Created: Jan 14, 2005
++ * Copyright: (C) MontaVista Software Inc.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * version 2 as published by the Free Software Foundation.
++ *
++ * This module provides the minimum replacement for mcp-core.c allowing for
++ * the UCB1400 chip to be driven by the ucb1x00 driver over an AC97 link.
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/errno.h>
++#include <linux/device.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/ac97_codec.h>
++
++#include "mcp.h"
++
++/* ucb1x00 SIB register to ucb1400 AC-link register mapping */
++
++static const unsigned char regmap[] = {
++ 0x5a, /* UCB_IO_DATA */
++ 0X5C, /* UCB_IO_DIR */
++ 0X5E, /* UCB_IE_RIS */
++ 0x60, /* UCB_IE_FAL */
++ 0x62, /* UCB_IE_STATUS */
++ 0, /* UCB_TC_A */
++ 0, /* UCB_TC_B */
++ 0, /* UCB_AC_A */
++ 0, /* UCB_AC_B */
++ 0x64, /* UCB_TS_CR */
++ 0x66, /* UCB_ADC_CR */
++ 0x68, /* UCB_ADC_DATA */
++ 0x7e, /* UCB_ID */
++ 0, /* UCB_MODE */
++};
++
++unsigned int mcp_reg_read(struct mcp *mcp, unsigned int reg)
++{
++ ac97_t *ac97 = to_ac97_t(mcp->dev);
++ if (reg < ARRAY_SIZE(regmap)) {
++ reg = regmap[reg];
++ if (reg)
++ return ac97->bus->ops->read(ac97, reg);
++ }
++ return -1;
++}
++EXPORT_SYMBOL(mcp_reg_read);
++
++void mcp_reg_write(struct mcp *mcp, unsigned int reg, unsigned int val)
++{
++ ac97_t *ac97 = to_ac97_t(mcp->dev);
++ if (reg < ARRAY_SIZE(regmap)) {
++ reg = regmap[reg];
++ if (reg)
++ ac97->bus->ops->write(ac97, reg, val);
++ }
++}
++EXPORT_SYMBOL(mcp_reg_write);
++
++void mcp_enable(struct mcp *mcp)
++{
++}
++EXPORT_SYMBOL(mcp_enable);
++
++void mcp_disable(struct mcp *mcp)
++{
++}
++EXPORT_SYMBOL(mcp_disable);
++
++#define to_mcp_driver(d) container_of(d, struct mcp_driver, drv)
++
++static int mcp_probe(struct device *dev)
++{
++ struct mcp_driver *drv = to_mcp_driver(dev->driver);
++ struct mcp *mcp;
++ int ret;
++
++ ret = -ENOMEM;
++ mcp = kmalloc(sizeof(*mcp), GFP_KERNEL);
++ if (mcp) {
++ memset(mcp, 0, sizeof(*mcp));
++ mcp->owner = THIS_MODULE;
++ mcp->dev = dev;
++ ret = drv->probe(mcp);
++ if (ret)
++ kfree(mcp);
++ }
++ if (!ret)
++ dev_set_drvdata(dev, mcp);
++ return ret;
++}
++
++static int mcp_remove(struct device *dev)
++{
++ struct mcp_driver *drv = to_mcp_driver(dev->driver);
++ struct mcp *mcp = dev_get_drvdata(dev);
++
++ drv->remove(mcp);
++ dev_set_drvdata(dev, NULL);
++ kfree(mcp);
++ return 0;
++}
++
++static int mcp_suspend(struct device *dev, pm_message_t state)
++{
++ struct mcp_driver *drv = to_mcp_driver(dev->driver);
++ struct mcp *mcp = dev_get_drvdata(dev);
++ int ret = 0;
++
++ if (drv->suspend)
++ ret = drv->suspend(mcp, state);
++ return ret;
++}
++
++static int mcp_resume(struct device *dev)
++{
++ struct mcp_driver *drv = to_mcp_driver(dev->driver);
++ struct mcp *mcp = dev_get_drvdata(dev);
++ int ret = 0;
++
++ if (drv->resume)
++ ret = drv->resume(mcp);
++ return ret;
++}
++
++int mcp_driver_register(struct mcp_driver *mcpdrv)
++{
++ mcpdrv->drv.owner = THIS_MODULE;
++ mcpdrv->drv.bus = &ac97_bus_type;
++ mcpdrv->drv.probe = mcp_probe;
++ mcpdrv->drv.remove = mcp_remove;
++ mcpdrv->drv.suspend = mcp_suspend;
++ mcpdrv->drv.resume = mcp_resume;
++ return driver_register(&mcpdrv->drv);
++}
++EXPORT_SYMBOL(mcp_driver_register);
++
++void mcp_driver_unregister(struct mcp_driver *mcpdrv)
++{
++ driver_unregister(&mcpdrv->drv);
++}
++EXPORT_SYMBOL(mcp_driver_unregister);
++
++MODULE_LICENSE("GPL");
+Index: linux-2.6.15gum/drivers/input/touchscreen/Kconfig
+===================================================================
+--- linux-2.6.15gum.orig/drivers/input/touchscreen/Kconfig
++++ linux-2.6.15gum/drivers/input/touchscreen/Kconfig
+@@ -11,6 +11,25 @@ menuconfig INPUT_TOUCHSCREEN
+
+ if INPUT_TOUCHSCREEN
+
++config UCB1400
++ bool
++
++config TOUCHSCREEN_UCB1400
++ tristate "UCB1400 Touchscreen support"
++ depends on ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_PXA
++ select SND_AC97_BUS
++ select UCB1400
++ help
++ Say Y here if you have a touchscreen connected to a UCB1400 ADC chip
++ on the AC97 bus of a PXA255/PXA270 host.
++
++ If unsure, say N.
++
++ To compile this driver as a module, choose M here: the
++ module will be called ucb1x00-ts. It will also build the modules
++ ucb1x00-core and mcp-ac97 which provide the compatibility layers
++ down to the AC97 bus.
++
+ config TOUCHSCREEN_BITSY
+ tristate "Compaq iPAQ H3600 (Bitsy) touchscreen"
+ depends on SA1100_BITSY
+Index: linux-2.6.15gum/drivers/input/Kconfig
+===================================================================
+--- linux-2.6.15gum.orig/drivers/input/Kconfig
++++ linux-2.6.15gum/drivers/input/Kconfig
+@@ -87,7 +87,7 @@ config INPUT_JOYDEV
+ module will be called joydev.
+
+ config INPUT_TSDEV
+- tristate "Touchscreen interface"
++ tristate "Compaq touchscreen interface"
+ ---help---
+ Say Y here if you have an application that only can understand the
+ Compaq touchscreen protocol for absolute pointer data. This is
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/usb_add_epalloc-r3.patch b/packages/linux/logicpd-pxa270-2.6.19.2/usb_add_epalloc-r3.patch
new file mode 100644
index 0000000000..d9d576934a
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/usb_add_epalloc-r3.patch
@@ -0,0 +1,282 @@
+Index: git/drivers/usb/gadget/epautoconf.c
+===================================================================
+--- git.orig/drivers/usb/gadget/epautoconf.c 2006-07-15 09:10:59.000000000 +0100
++++ git/drivers/usb/gadget/epautoconf.c 2006-07-15 10:27:00.000000000 +0100
+@@ -228,14 +228,19 @@
+ *
+ * On failure, this returns a null endpoint descriptor.
+ */
+-struct usb_ep * __devinit usb_ep_autoconfig (
++struct usb_ep * usb_ep_autoconfig (
+ struct usb_gadget *gadget,
+- struct usb_endpoint_descriptor *desc
++ struct usb_endpoint_descriptor *desc,
++ struct usb_endpoint_config *epconfig, int numconfigs
+ )
+ {
+ struct usb_ep *ep;
+ u8 type;
+
++ /* Use device specific ep allocation code if provided */
++ if (gadget->ops->ep_alloc)
++ return gadget->ops->ep_alloc(gadget, desc, epconfig, numconfigs);
++
+ type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
+
+ /* First, apply chip-specific "best usage" knowledge.
+Index: git/drivers/usb/gadget/ether.c
+===================================================================
+--- git.orig/drivers/usb/gadget/ether.c 2006-07-15 09:10:59.000000000 +0100
++++ git/drivers/usb/gadget/ether.c 2006-07-15 10:25:23.000000000 +0100
+@@ -2195,7 +2195,8 @@
+ struct eth_dev *dev;
+ struct net_device *net;
+ u8 cdc = 1, zlp = 1, rndis = 1;
+- struct usb_ep *in_ep, *out_ep, *status_ep = NULL;
++ struct usb_ep *in_ep = NULL , *out_ep = NULL, *status_ep = NULL;
++ struct usb_endpoint_config ep_config[2];
+ int status = -ENOMEM;
+ int gcnum;
+
+@@ -2291,7 +2292,26 @@
+
+ /* all we really need is bulk IN/OUT */
+ usb_ep_autoconfig_reset (gadget);
+- in_ep = usb_ep_autoconfig (gadget, &fs_source_desc);
++
++ ep_config[0].config = DEV_CONFIG_VALUE;
++#if defined(DEV_CONFIG_CDC)
++ ep_config[0].interface = data_intf.bInterfaceNumber;
++ ep_config[0].altinterface = data_intf.bAlternateSetting;
++#else /* DEV_CONFIG_SUBSET */
++ ep_config[0].interface = subset_data_intf.bInterfaceNumber;
++ ep_config[0].altinterface = subset_data_intf.bAlternateSetting;
++#endif
++
++#ifdef CONFIG_USB_ETH_RNDIS
++ ep_config[1].config = DEV_RNDIS_CONFIG_VALUE;
++ ep_config[1].interface = rndis_data_intf.bInterfaceNumber;
++ ep_config[1].altinterface = rndis_data_intf.bAlternateSetting;
++
++ in_ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 2);
++#else
++ in_ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 1);
++#endif
++
+ if (!in_ep) {
+ autoconf_fail:
+ dev_err (&gadget->dev,
+@@ -2301,7 +2321,12 @@
+ }
+ in_ep->driver_data = in_ep; /* claim */
+
+- out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc);
++#ifdef CONFIG_USB_ETH_RNDIS
++ out_ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 2);
++#else
++ out_ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 1);
++#endif
++
+ if (!out_ep)
+ goto autoconf_fail;
+ out_ep->driver_data = out_ep; /* claim */
+@@ -2311,7 +2336,25 @@
+ * Since some hosts expect one, try to allocate one anyway.
+ */
+ if (cdc || rndis) {
+- status_ep = usb_ep_autoconfig (gadget, &fs_status_desc);
++#ifdef DEV_CONFIG_CDC
++ ep_config[0].config = DEV_CONFIG_VALUE;
++ ep_config[0].interface = control_intf.bInterfaceNumber;
++ ep_config[0].altinterface = control_intf.bAlternateSetting;
++#endif
++#ifdef CONFIG_USB_ETH_RNDIS
++ ep_config[1].config = DEV_RNDIS_CONFIG_VALUE;
++ ep_config[1].interface = rndis_control_intf.bInterfaceNumber;
++ ep_config[1].altinterface = rndis_control_intf.bAlternateSetting;
++#endif
++
++#if defined(DEV_CONFIG_CDC) && defined(CONFIG_USB_ETH_RNDIS)
++ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[0], 2);
++#elif defined(CONFIG_USB_ETH_RNDIS)
++ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[1], 1);
++#else
++ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[0], 1);
++#endif
++
+ if (status_ep) {
+ status_ep->driver_data = status_ep; /* claim */
+ } else if (rndis) {
+Index: git/drivers/usb/gadget/file_storage.c
+===================================================================
+--- git.orig/drivers/usb/gadget/file_storage.c 2006-07-15 09:10:59.000000000 +0100
++++ git/drivers/usb/gadget/file_storage.c 2006-07-15 10:25:23.000000000 +0100
+@@ -3836,6 +3836,7 @@
+ struct usb_ep *ep;
+ struct usb_request *req;
+ char *pathbuf, *p;
++ struct usb_endpoint_config ep_config;
+
+ fsg->gadget = gadget;
+ set_gadget_data(gadget, fsg);
+@@ -3901,21 +3902,25 @@
+ }
+
+ /* Find all the endpoints we will use */
++ ep_config.config = CONFIG_VALUE;
++ ep_config.interface = intf_desc.bInterfaceNumber;
++ ep_config.altinterface = intf_desc.bAlternateSetting;
++
+ usb_ep_autoconfig_reset(gadget);
+- ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc, &ep_config, 1);
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+ fsg->bulk_in = ep;
+
+- ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc, &ep_config, 1);
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+ fsg->bulk_out = ep;
+
+ if (transport_is_cbi()) {
+- ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc, &ep_config, 1);
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+Index: git/drivers/usb/gadget/serial.c
+===================================================================
+--- git.orig/drivers/usb/gadget/serial.c 2006-07-15 09:10:59.000000000 +0100
++++ git/drivers/usb/gadget/serial.c 2006-07-15 10:25:23.000000000 +0100
+@@ -1354,6 +1354,7 @@
+ struct usb_ep *ep;
+ struct gs_dev *dev;
+ int gcnum;
++ struct usb_endpoint_config ep_config[2];
+
+ /* Some controllers can't support CDC ACM:
+ * - sh doesn't support multiple interfaces or configs;
+@@ -1374,22 +1375,33 @@
+ __constant_cpu_to_le16(GS_VERSION_NUM|0x0099);
+ }
+
++ ep_config[0].config = GS_BULK_CONFIG_ID;
++ ep_config[0].interface = gs_bulk_interface_desc.bInterfaceNumber;
++ ep_config[0].altinterface = gs_bulk_interface_desc.bAlternateSetting;
++ ep_config[1].config = GS_ACM_CONFIG_ID;
++ ep_config[1].interface = gs_data_interface_desc.bInterfaceNumber;
++ ep_config[1].altinterface = gs_data_interface_desc.bAlternateSetting;
++
+ usb_ep_autoconfig_reset(gadget);
+
+- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc);
++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc, &ep_config[0], 2);
+ if (!ep)
+ goto autoconf_fail;
+ EP_IN_NAME = ep->name;
+ ep->driver_data = ep; /* claim the endpoint */
+
+- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc);
++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc, &ep_config[0], 2);
+ if (!ep)
+ goto autoconf_fail;
+ EP_OUT_NAME = ep->name;
+ ep->driver_data = ep; /* claim the endpoint */
+
+ if (use_acm) {
+- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc);
++ ep_config[0].config = GS_ACM_CONFIG_ID;
++ ep_config[0].interface = gs_control_interface_desc.bInterfaceNumber;
++ ep_config[0].altinterface = gs_control_interface_desc.bAlternateSetting;
++
++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc, &ep_config[0], 1);
+ if (!ep) {
+ printk(KERN_ERR "gs_bind: cannot run ACM on %s\n", gadget->name);
+ goto autoconf_fail;
+Index: git/drivers/usb/gadget/zero.c
+===================================================================
+--- git.orig/drivers/usb/gadget/zero.c 2006-07-15 09:10:59.000000000 +0100
++++ git/drivers/usb/gadget/zero.c 2006-07-15 10:25:23.000000000 +0100
+@@ -1144,6 +1144,7 @@
+ struct zero_dev *dev;
+ struct usb_ep *ep;
+ int gcnum;
++ struct usb_endpoint_config ep_config[2];
+
+ /* FIXME this can't yet work right with SH ... it has only
+ * one configuration, numbered one.
+@@ -1156,7 +1157,15 @@
+ * but there may also be important quirks to address.
+ */
+ usb_ep_autoconfig_reset (gadget);
+- ep = usb_ep_autoconfig (gadget, &fs_source_desc);
++
++ ep_config[0].config = CONFIG_SOURCE_SINK;
++ ep_config[0].interface = source_sink_intf.bInterfaceNumber;
++ ep_config[0].altinterface = source_sink_intf.bAlternateSetting;
++ ep_config[1].config = CONFIG_LOOPBACK;
++ ep_config[1].interface = loopback_intf.bInterfaceNumber;
++ ep_config[1].altinterface = loopback_intf.bAlternateSetting;
++
++ ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 2);
+ if (!ep) {
+ autoconf_fail:
+ printk (KERN_ERR "%s: can't autoconfigure on %s\n",
+@@ -1166,7 +1175,7 @@
+ EP_IN_NAME = ep->name;
+ ep->driver_data = ep; /* claim */
+
+- ep = usb_ep_autoconfig (gadget, &fs_sink_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 2);
+ if (!ep)
+ goto autoconf_fail;
+ EP_OUT_NAME = ep->name;
+Index: git/include/linux/usb_gadget.h
+===================================================================
+--- git.orig/include/linux/usb_gadget.h 2006-07-15 09:11:05.000000000 +0100
++++ git/include/linux/usb_gadget.h 2006-07-15 10:29:40.000000000 +0100
+@@ -445,10 +445,28 @@
+
+ struct usb_gadget;
+
++/**
++ * struct usb_endpoint_config - possible configurations of a given endpoint
++ * @config: the configuration number
++ * @interface: the interface number
++ * @altinterface: the altinterface number
++ *
++ * Used as an array to pass information about the possible configurations
++ * of a given endpoint to the bus controller.
++ */
++struct usb_endpoint_config {
++ u8 config;
++ u8 interface;
++ u8 altinterface;
++};
++
+ /* the rest of the api to the controller hardware: device operations,
+ * which don't involve endpoints (or i/o).
+ */
+ struct usb_gadget_ops {
++ struct usb_ep* (*ep_alloc)(struct usb_gadget *,
++ struct usb_endpoint_descriptor *,
++ struct usb_endpoint_config *, int);
+ int (*get_frame)(struct usb_gadget *);
+ int (*wakeup)(struct usb_gadget *);
+ int (*set_selfpowered) (struct usb_gadget *, int is_selfpowered);
+@@ -872,7 +890,10 @@
+ /* utility wrapping a simple endpoint selection policy */
+
+ extern struct usb_ep *usb_ep_autoconfig (struct usb_gadget *,
+- struct usb_endpoint_descriptor *) __devinit;
++ struct usb_endpoint_descriptor *,
++ struct usb_endpoint_config *,
++ int numconfigs
++);
+
+ extern void usb_ep_autoconfig_reset (struct usb_gadget *) __devinit;
+
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/usb_pxa27x_udc-r3.patch b/packages/linux/logicpd-pxa270-2.6.19.2/usb_pxa27x_udc-r3.patch
new file mode 100644
index 0000000000..556193d1ed
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/usb_pxa27x_udc-r3.patch
@@ -0,0 +1,2878 @@
+ arch/arm/mach-pxa/spitz.c | 27
+ drivers/usb/gadget/Kconfig | 20
+ drivers/usb/gadget/Makefile | 1
+ drivers/usb/gadget/ether.c | 12
+ drivers/usb/gadget/pxa27x_udc.c | 2412 ++++++++++++++++++++++++++++++++++++++++
+ drivers/usb/gadget/pxa27x_udc.h | 298 ++++
+ drivers/usb/gadget/pxa2xx_udc.h | 7
+ 7 files changed, 2774 insertions(+), 3 deletions(-)
+
+Index: git/arch/arm/mach-pxa/spitz.c
+===================================================================
+--- git.orig/arch/arm/mach-pxa/spitz.c 2006-12-16 22:57:10.000000000 +0000
++++ git/arch/arm/mach-pxa/spitz.c 2006-12-16 22:57:15.000000000 +0000
+@@ -348,6 +348,32 @@ static struct pxamci_platform_data spitz
+
+
+ /*
++ * USB Client (Gadget/UDC)
++ */
++static void spitz_udc_command(int cmd)
++{
++ switch(cmd) {
++ case PXA2XX_UDC_CMD_CONNECT:
++ UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE;
++ break;
++ case PXA2XX_UDC_CMD_DISCONNECT:
++ //UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE;
++ break;
++ }
++}
++
++static int spitz_udc_detect(void)
++{
++ return 1;
++}
++
++static struct pxa2xx_udc_mach_info spitz_udc_info __initdata = {
++ .udc_is_connected = spitz_udc_detect,
++ .udc_command = spitz_udc_command,
++};
++
++
++/*
+ * USB Host (OHCI)
+ */
+ static int spitz_ohci_init(struct device *dev)
+@@ -498,6 +524,7 @@ static void __init common_init(void)
+ pxa_gpio_mode(SPITZ_GPIO_HSYNC | GPIO_IN);
+
+ platform_add_devices(devices, ARRAY_SIZE(devices));
++ pxa_set_udc_info(&spitz_udc_info);
+ pxa_set_mci_info(&spitz_mci_platform_data);
+ pxa_set_ohci_info(&spitz_ohci_platform_data);
+ pxa_set_ficp_info(&spitz_ficp_platform_data);
+Index: git/drivers/usb/gadget/Kconfig
+===================================================================
+--- git.orig/drivers/usb/gadget/Kconfig 2006-12-16 22:57:10.000000000 +0000
++++ git/drivers/usb/gadget/Kconfig 2006-12-16 22:57:15.000000000 +0000
+@@ -121,6 +121,26 @@ config USB_PXA2XX_SMALL
+ default y if USB_ETH
+ default y if USB_G_SERIAL
+
++config USB_GADGET_PXA27X
++ boolean "PXA 27x"
++ depends on ARCH_PXA && PXA27x
++ help
++ Intel's PXA 27x series XScale ARM-5TE processors include
++ an integrated full speed USB 1.1 device controller.
++
++ It has 23 endpoints, as well as endpoint zero (for control
++ transfers).
++
++ Say "y" to link the driver statically, or "m" to build a
++ dynamically linked module called "pxa27x_udc" and force all
++ gadget drivers to also be dynamically linked.
++
++config USB_PXA27X
++ tristate
++ depends on USB_GADGET_PXA27X
++ default USB_GADGET
++ select USB_GADGET_SELECTED
++
+ config USB_GADGET_GOKU
+ boolean "Toshiba TC86C001 'Goku-S'"
+ depends on PCI
+Index: git/drivers/usb/gadget/Makefile
+===================================================================
+--- git.orig/drivers/usb/gadget/Makefile 2006-12-16 22:57:10.000000000 +0000
++++ git/drivers/usb/gadget/Makefile 2006-12-16 22:57:15.000000000 +0000
+@@ -4,6 +4,7 @@
+ obj-$(CONFIG_USB_DUMMY_HCD) += dummy_hcd.o
+ obj-$(CONFIG_USB_NET2280) += net2280.o
+ obj-$(CONFIG_USB_PXA2XX) += pxa2xx_udc.o
++obj-$(CONFIG_USB_PXA27X) += pxa27x_udc.o
+ obj-$(CONFIG_USB_GOKU) += goku_udc.o
+ obj-$(CONFIG_USB_OMAP) += omap_udc.o
+ obj-$(CONFIG_USB_LH7A40X) += lh7a40x_udc.o
+Index: git/drivers/usb/gadget/pxa27x_udc.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/drivers/usb/gadget/pxa27x_udc.c 2006-12-16 23:19:49.000000000 +0000
+@@ -0,0 +1,2412 @@
++/*
++ * Handles the Intel 27x USB Device Controller (UDC)
++ *
++ * Copyright (C) 2002 Intrinsyc, Inc. (Frank Becker)
++ * Copyright (C) 2003 Robert Schwebel, Pengutronix
++ * Copyright (C) 2003 Benedikt Spranger, Pengutronix
++ * Copyright (C) 2003 David Brownell
++ * Copyright (C) 2003 Joshua Wise
++ * Copyright (C) 2004 Intel Corporation
++ * Copyright (C) 2005 SDG Systems, LLC (Aric Blumer)
++ * Copyright (C) 2005-2006 Openedhand Ltd. (Richard Purdie)
++ *
++ * 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
++ *
++ */
++
++#undef DEBUG
++//#define DEBUG 1
++//#define VERBOSE DBG_VERBOSE
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/ioport.h>
++#include <linux/types.h>
++#include <linux/version.h>
++#include <linux/errno.h>
++#include <linux/platform_device.h>
++#include <linux/delay.h>
++#include <linux/sched.h>
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/timer.h>
++#include <linux/list.h>
++#include <linux/interrupt.h>
++#include <linux/proc_fs.h>
++#include <linux/mm.h>
++#include <linux/device.h>
++#include <linux/dma-mapping.h>
++
++#include <asm/byteorder.h>
++#include <asm/dma.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++#include <asm/system.h>
++#include <asm/mach-types.h>
++#include <asm/unaligned.h>
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++
++#include <linux/usb_ch9.h>
++#include <linux/usb_gadget.h>
++
++#include <asm/arch/udc.h>
++
++/*
++ * This driver handles the USB Device Controller (UDC) in Intel's PXA 27x
++ * series processors.
++ *
++ * Such controller drivers work with a gadget driver. The gadget driver
++ * returns descriptors, implements configuration and data protocols used
++ * by the host to interact with this device, and allocates endpoints to
++ * the different protocol interfaces. The controller driver virtualizes
++ * usb hardware so that the gadget drivers will be more portable.
++ *
++ * This UDC hardware wants to implement a bit too much USB protocol. The
++ * biggest issue is that the endpoints have to be setup before the controller
++ * can be enabled and each endpoint can only have one configuration, interface
++ * and alternative interface number. Once enabled, these cannot be changed
++ * without a controller reset.
++ *
++ * Intel Errata #22 mentions issues when changing alternate interface.
++ * The exact meaning of this remains uncertain as gadget drivers using alternate
++ * interfaces such as CDC-Ethernet appear to work...
++ */
++
++#define DRIVER_VERSION "01-01-2006"
++#define DRIVER_DESC "PXA 27x USB Device Controller driver"
++
++static const char driver_name [] = "pxa27x_udc";
++
++static const char ep0name [] = "ep0";
++
++
++#define USE_DMA
++//#undef USE_DMA
++
++#ifdef CONFIG_PROC_FS
++#define UDC_PROC_FILE
++#endif
++
++#include "pxa27x_udc.h"
++
++#ifdef USE_DMA
++static int use_dma = 1;
++module_param(use_dma, bool, 0);
++MODULE_PARM_DESC(use_dma, "true to use dma");
++
++static void dma_nodesc_handler(int dmach, void *_ep);
++static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req);
++
++#define DMASTR " (dma support)"
++
++#else /* !USE_DMA */
++#define DMASTR " (pio only)"
++#endif
++
++#define UDCISR0_IR0 0x3
++#define UDCISR_INT_MASK (UDC_INT_FIFOERROR | UDC_INT_PACKETCMP)
++#define UDCICR_INT_MASK UDCISR_INT_MASK
++
++#define UDCCSR_MASK (UDCCSR_FST | UDCCSR_DME)
++
++static void pxa27x_ep_fifo_flush(struct usb_ep *ep);
++static void nuke(struct pxa27x_ep *, int status);
++static void udc_init_ep(struct pxa27x_udc *dev);
++
++
++/*
++ * Endpoint Functions
++ */
++static void pio_irq_enable(int ep_num)
++{
++ if (ep_num < 16)
++ UDCICR0 |= 3 << (ep_num * 2);
++ else {
++ ep_num -= 16;
++ UDCICR1 |= 3 << (ep_num * 2);
++ }
++}
++
++static void pio_irq_disable(int ep_num)
++{
++ ep_num &= 0xf;
++ if (ep_num < 16)
++ UDCICR0 &= ~(3 << (ep_num * 2));
++ else {
++ ep_num -= 16;
++ UDCICR1 &= ~(3 << (ep_num * 2));
++ }
++}
++
++/* The UDCCR reg contains mask and interrupt status bits,
++ * so using '|=' isn't safe as it may ack an interrupt.
++ */
++#define UDCCR_MASK_BITS (UDCCR_OEN | UDCCR_UDE)
++
++static inline void udc_set_mask_UDCCR(int mask)
++{
++ UDCCR = (UDCCR & UDCCR_MASK_BITS) | (mask & UDCCR_MASK_BITS);
++}
++
++static inline void udc_clear_mask_UDCCR(int mask)
++{
++ UDCCR = (UDCCR & UDCCR_MASK_BITS) & ~(mask & UDCCR_MASK_BITS);
++}
++
++static inline void udc_ack_int_UDCCR(int mask)
++{
++ /* udccr contains the bits we dont want to change */
++ __u32 udccr = UDCCR & UDCCR_MASK_BITS;
++
++ UDCCR = udccr | (mask & ~UDCCR_MASK_BITS);
++}
++
++/*
++ * Endpoint enable/disable
++ *
++ * Not much to do here as the ep_alloc function sets up most things. Once
++ * enabled, not much of the pxa27x configuration can be changed.
++ *
++ */
++static int pxa27x_ep_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc)
++{
++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ struct pxa27x_ep *ep = virt_ep->pxa_ep;
++ struct pxa27x_udc *dev;
++
++ if (!_ep || !desc || _ep->name == ep0name
++ || desc->bDescriptorType != USB_DT_ENDPOINT
++ || ep->fifo_size < le16_to_cpu(desc->wMaxPacketSize)) {
++ dev_err(ep->dev->dev, "%s, bad ep or descriptor\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ /* xfer types must match, except that interrupt ~= bulk */
++ if( ep->ep_type != USB_ENDPOINT_XFER_BULK
++ && desc->bmAttributes != USB_ENDPOINT_XFER_INT) {
++ dev_err(ep->dev->dev, "%s, %s type mismatch\n", __FUNCTION__, _ep->name);
++ return -EINVAL;
++ }
++
++ /* hardware _could_ do smaller, but driver doesn't */
++ if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK
++ && le16_to_cpu (desc->wMaxPacketSize)
++ != BULK_FIFO_SIZE)
++ || !desc->wMaxPacketSize) {
++ dev_err(ep->dev->dev, "%s, bad %s maxpacket\n", __FUNCTION__, _ep->name);
++ return -ERANGE;
++ }
++
++ dev = ep->dev;
++ if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) {
++ dev_err(ep->dev->dev, "%s, bogus device state\n", __FUNCTION__);
++ return -ESHUTDOWN;
++ }
++
++ ep->desc = desc;
++ ep->dma = -1;
++ ep->stopped = 0;
++ ep->pio_irqs = ep->dma_irqs = 0;
++ ep->usb_ep->maxpacket = le16_to_cpu(desc->wMaxPacketSize);
++
++ /* flush fifo (mostly for OUT buffers) */
++ pxa27x_ep_fifo_flush(_ep);
++
++ /* ... reset halt state too, if we could ... */
++
++#ifdef USE_DMA
++ /* for (some) bulk and ISO endpoints, try to get a DMA channel and
++ * bind it to the endpoint. otherwise use PIO.
++ */
++ dev_dbg(ep->dev->dev, "%s: called attributes=%d\n", __FUNCTION__, ep->ep_type);
++ switch (ep->ep_type) {
++ case USB_ENDPOINT_XFER_ISOC:
++ if (le16_to_cpu(desc->wMaxPacketSize) % 32)
++ break;
++ // fall through
++ case USB_ENDPOINT_XFER_BULK:
++ if (!use_dma || !ep->reg_drcmr)
++ break;
++ ep->dma = pxa_request_dma((char *)_ep->name, (le16_to_cpu(desc->wMaxPacketSize) > 64)
++ ? DMA_PRIO_MEDIUM : DMA_PRIO_LOW, dma_nodesc_handler, ep);
++ if (ep->dma >= 0) {
++ *ep->reg_drcmr = DRCMR_MAPVLD | ep->dma;
++ dev_dbg(ep->dev->dev, "%s using dma%d\n", _ep->name, ep->dma);
++ }
++ default:
++ break;
++ }
++#endif
++ DBG(DBG_VERBOSE, "enabled %s\n", _ep->name);
++ return 0;
++}
++
++static int pxa27x_ep_disable(struct usb_ep *_ep)
++{
++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ struct pxa27x_ep *ep = virt_ep->pxa_ep;
++ unsigned long flags;
++
++ if (!_ep || !ep->desc) {
++ dev_err(ep->dev->dev, "%s, %s not enabled\n", __FUNCTION__,
++ _ep ? _ep->name : NULL);
++ return -EINVAL;
++ }
++ local_irq_save(flags);
++ nuke(ep, -ESHUTDOWN);
++
++#ifdef USE_DMA
++ if (ep->dma >= 0) {
++ *ep->reg_drcmr = 0;
++ pxa_free_dma(ep->dma);
++ ep->dma = -1;
++ }
++#endif
++
++ /* flush fifo (mostly for IN buffers) */
++ pxa27x_ep_fifo_flush(_ep);
++
++ ep->desc = 0;
++ ep->stopped = 1;
++
++ local_irq_restore(flags);
++ DBG(DBG_VERBOSE, "%s disabled\n", _ep->name);
++ return 0;
++}
++
++
++
++/* for the pxa27x, these can just wrap kmalloc/kfree. gadget drivers
++ * must still pass correctly initialized endpoints, since other controller
++ * drivers may care about how it's currently set up (dma issues etc).
++ */
++
++/*
++ * pxa27x_ep_alloc_request - allocate a request data structure
++ */
++static struct usb_request *
++pxa27x_ep_alloc_request(struct usb_ep *_ep, unsigned gfp_flags)
++{
++ struct pxa27x_request *req;
++
++ req = kzalloc(sizeof *req, gfp_flags);
++ if (!req)
++ return 0;
++
++ INIT_LIST_HEAD(&req->queue);
++ return &req->req;
++}
++
++
++/*
++ * pxa27x_ep_free_request - deallocate a request data structure
++ */
++static void
++pxa27x_ep_free_request(struct usb_ep *_ep, struct usb_request *_req)
++{
++ struct pxa27x_request *req;
++
++ req = container_of(_req, struct pxa27x_request, req);
++ WARN_ON(!list_empty(&req->queue));
++ kfree(req);
++}
++
++
++/* PXA cache needs flushing with DMA I/O (it's dma-incoherent), but there's
++ * no device-affinity and the heap works perfectly well for i/o buffers.
++ * It wastes much less memory than dma_alloc_coherent() would, and even
++ * prevents cacheline (32 bytes wide) sharing problems.
++ */
++static void *
++pxa27x_ep_alloc_buffer(struct usb_ep *_ep, unsigned bytes, dma_addr_t *dma, unsigned gfp_flags)
++{
++ char *retval;
++
++ retval = kmalloc(bytes, gfp_flags & ~(__GFP_DMA|__GFP_HIGHMEM));
++ if (retval)
++ *dma = virt_to_bus(retval);
++ return retval;
++}
++
++static void
++pxa27x_ep_free_buffer(struct usb_ep *_ep, void *buf, dma_addr_t dma, unsigned bytes)
++{
++ kfree(buf);
++}
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * done - retire a request; caller blocked irqs
++ */
++static void done(struct pxa27x_ep *ep, struct pxa27x_request *req, int status)
++{
++ list_del_init(&req->queue);
++ if (likely (req->req.status == -EINPROGRESS))
++ req->req.status = status;
++ else
++ status = req->req.status;
++
++ if (status && status != -ESHUTDOWN)
++ DBG(DBG_VERBOSE, "complete %s req %p stat %d len %u/%u\n",
++ ep->usb_ep->name, &req->req, status,
++ req->req.actual, req->req.length);
++
++ /* don't modify queue heads during completion callback */
++ req->req.complete(ep->usb_ep, &req->req);
++}
++
++
++static inline void ep0_idle(struct pxa27x_udc *dev)
++{
++ dev->ep0state = EP0_IDLE;
++}
++
++static int write_packet(volatile u32 *uddr, struct pxa27x_request *req, unsigned max)
++{
++ u32 *buf;
++ int length, count, remain;
++
++ buf = (u32*)(req->req.buf + req->req.actual);
++ prefetch(buf);
++
++ /* how big will this packet be? */
++ length = min(req->req.length - req->req.actual, max);
++ req->req.actual += length;
++
++ remain = length & 0x3;
++ count = length & ~(0x3);
++
++ //dev_dbg(ep->dev->dev, "Length %d, Remain %d, Count %d\n",length, remain, count);
++
++ while (likely(count)) {
++ //dev_dbg(ep->dev->dev, "Sending:0x%x\n", *buf);
++ *uddr = *buf++;
++ count -= 4;
++ }
++
++ if (remain) {
++ volatile u8* reg=(u8*)uddr;
++ char *rd =(u8*)buf;
++
++ while (remain--) {
++ *reg=*rd++;
++ }
++ }
++
++ return length;
++}
++
++/*
++ * write to an IN endpoint fifo, as many packets as possible.
++ * irqs will use this to write the rest later.
++ * caller guarantees at least one packet buffer is ready (or a zlp).
++ */
++static int
++write_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ unsigned max;
++
++ max = le16_to_cpu(ep->desc->wMaxPacketSize);
++ do {
++ int count, is_last, is_short;
++
++ //dev_dbg(ep->dev->dev, "write_fifo7 %x\n", *ep->reg_udccsr);
++
++ if (*ep->reg_udccsr & UDCCSR_PC) {
++ //dev_dbg(ep->dev->dev, "Transmit Complete\n");
++ *ep->reg_udccsr = UDCCSR_PC | (*ep->reg_udccsr & UDCCSR_MASK);
++ }
++
++ if (*ep->reg_udccsr & UDCCSR_TRN) {
++ //dev_dbg(ep->dev->dev, "Clearing Underrun\n");
++ *ep->reg_udccsr = UDCCSR_TRN | (*ep->reg_udccsr & UDCCSR_MASK);
++ }
++ //dev_dbg(ep->dev->dev, "write_fifo8 %x\n", *ep->reg_udccsr);
++
++ count = write_packet(ep->reg_udcdr, req, max);
++
++ /* last packet is usually short (or a zlp) */
++ if (unlikely (count != max))
++ is_last = is_short = 1;
++ else {
++ if (likely(req->req.length != req->req.actual)
++ || req->req.zero)
++ is_last = 0;
++ else
++ is_last = 1;
++ /* interrupt/iso maxpacket may not fill the fifo */
++ is_short = unlikely (max < ep->fifo_size);
++ }
++
++ //dev_dbg(ep->dev->dev, "write_fifo0 %x\n", *ep->reg_udccsr);
++
++ dev_dbg(ep->dev->dev, "wrote %s count:%d bytes%s%s %d left %p\n",
++ ep->usb_ep->name, count,
++ is_last ? "/L" : "", is_short ? "/S" : "",
++ req->req.length - req->req.actual, &req->req);
++
++ /* let loose that packet. maybe try writing another one,
++ * double buffering might work.
++ */
++
++ if (is_short)
++ *ep->reg_udccsr = UDCCSR_SP | (*ep->reg_udccsr & UDCCSR_MASK);
++
++ dev_dbg(ep->dev->dev, "write_fifo0.5 %x\n", *ep->reg_udccsr);
++
++ /* requests complete when all IN data is in the FIFO */
++ if (is_last) {
++ done(ep, req, 0);
++ if (list_empty(&ep->queue) || unlikely(ep->dma >= 0)) {
++ pio_irq_disable(ep->pxa_ep_num);
++ //dev_dbg(ep->dev->dev, "write_fifo1 %x\n", *ep->reg_udccsr);
++#ifdef USE_DMA
++ /* unaligned data and zlps couldn't use dma */
++ if (unlikely(!list_empty(&ep->queue))) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep,req);
++ return 0;
++ }
++#endif
++ }
++ //dev_dbg(ep->dev->dev, "write_fifo2 %x\n", *ep->reg_udccsr);
++ return 1;
++ }
++
++ // TODO experiment: how robust can fifo mode tweaking be?
++ // double buffering is off in the default fifo mode, which
++ // prevents TFS from being set here.
++
++ } while (*ep->reg_udccsr & UDCCSR_FS);
++ //dev_dbg(ep->dev->dev, "write_fifo2 %x\n", *ep->reg_udccsr);
++ return 0;
++}
++
++/* caller asserts req->pending (ep0 irq status nyet cleared); starts
++ * ep0 data stage. these chips want very simple state transitions.
++ */
++static inline
++void ep0start(struct pxa27x_udc *dev, u32 flags, const char *tag)
++{
++ UDCCSR0 = flags|UDCCSR0_SA|UDCCSR0_OPC;
++ UDCISR0 = UDCICR_INT(0, UDC_INT_FIFOERROR | UDC_INT_PACKETCMP);
++ dev->req_pending = 0;
++ DBG(DBG_VERY_NOISY, "%s %s, %02x/%02x\n",
++ __FUNCTION__, tag, UDCCSR0, flags);
++}
++
++static int
++write_ep0_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ unsigned count;
++ int is_short;
++
++ count = write_packet(&UDCDR0, req, EP0_FIFO_SIZE);
++ ep->dev->stats.write.bytes += count;
++
++ /* last packet "must be" short (or a zlp) */
++ is_short = (count != EP0_FIFO_SIZE);
++
++ DBG(DBG_VERY_NOISY, "ep0in %d bytes %d left %p\n", count,
++ req->req.length - req->req.actual, &req->req);
++
++ if (unlikely (is_short)) {
++ if (ep->dev->req_pending)
++ ep0start(ep->dev, UDCCSR0_IPR, "short IN");
++ else
++ UDCCSR0 = UDCCSR0_IPR;
++
++ count = req->req.length;
++ done(ep, req, 0);
++ ep0_idle(ep->dev);
++#if 0
++ /* This seems to get rid of lost status irqs in some cases:
++ * host responds quickly, or next request involves config
++ * change automagic, or should have been hidden, or ...
++ *
++ * FIXME get rid of all udelays possible...
++ */
++ if (count >= EP0_FIFO_SIZE) {
++ count = 100;
++ do {
++ if ((UDCCSR0 & UDCCSR0_OPC) != 0) {
++ /* clear OPC, generate ack */
++ UDCCSR0 = UDCCSR0_OPC;
++ break;
++ }
++ count--;
++ udelay(1);
++ } while (count);
++ }
++#endif
++ } else if (ep->dev->req_pending)
++ ep0start(ep->dev, 0, "IN");
++ return is_short;
++}
++
++
++/*
++ * read_fifo - unload packet(s) from the fifo we use for usb OUT
++ * transfers and put them into the request. caller should have made
++ * sure there's at least one packet ready.
++ *
++ * returns true if the request completed because of short packet or the
++ * request buffer having filled (and maybe overran till end-of-packet).
++ */
++static int read_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ for (;;) {
++ u32 *buf;
++ int bufferspace, count, is_short;
++
++ /* make sure there's a packet in the FIFO.*/
++ if (unlikely ((*ep->reg_udccsr & UDCCSR_PC) == 0))
++ break;
++ buf =(u32*) (req->req.buf + req->req.actual);
++ prefetchw(buf);
++ bufferspace = req->req.length - req->req.actual;
++
++ /* read all bytes from this packet */
++ if (likely (*ep->reg_udccsr & UDCCSR_BNE)) {
++ count = 0x3ff & *ep->reg_udcbcr;
++ req->req.actual += min(count, bufferspace);
++ } else /* zlp */
++ count = 0;
++
++ is_short = (count < ep->usb_ep->maxpacket);
++ dev_dbg(ep->dev->dev, "read %s udccsr:%02x, count:%d bytes%s req %p %d/%d\n",
++ ep->usb_ep->name, *ep->reg_udccsr, count,
++ is_short ? "/S" : "",
++ &req->req, req->req.actual, req->req.length);
++
++ count = min(count, bufferspace);
++ while (likely (count > 0)) {
++ *buf++ = *ep->reg_udcdr;
++ count -= 4;
++ }
++ dev_dbg(ep->dev->dev, "Buf:0x%p\n", req->req.buf);
++
++ *ep->reg_udccsr = UDCCSR_PC;
++ /* RPC/RSP/RNE could now reflect the other packet buffer */
++
++ /* completion */
++ if (is_short || req->req.actual == req->req.length) {
++ done(ep, req, 0);
++ if (list_empty(&ep->queue))
++ pio_irq_disable(ep->pxa_ep_num);
++ return 1;
++ }
++
++ /* finished that packet. the next one may be waiting... */
++ }
++ return 0;
++}
++
++/*
++ * special ep0 version of the above. no UBCR0 or double buffering; status
++ * handshaking is magic. most device protocols don't need control-OUT.
++ * CDC vendor commands (and RNDIS), mass storage CB/CBI, and some other
++ * protocols do use them.
++ */
++static int read_ep0_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ u32 *buf, word;
++ unsigned bufferspace;
++
++ buf = (u32*) (req->req.buf + req->req.actual);
++ bufferspace = req->req.length - req->req.actual;
++
++ while (UDCCSR0 & UDCCSR0_RNE) {
++ word = UDCDR0;
++
++ if (unlikely (bufferspace == 0)) {
++ /* this happens when the driver's buffer
++ * is smaller than what the host sent.
++ * discard the extra data.
++ */
++ if (req->req.status != -EOVERFLOW)
++ dev_info(ep->dev->dev, "%s overflow\n", ep->usb_ep->name);
++ req->req.status = -EOVERFLOW;
++ } else {
++ *buf++ = word;
++ req->req.actual += 4;
++ bufferspace -= 4;
++ }
++ }
++
++ UDCCSR0 = UDCCSR0_OPC ;
++
++ /* completion */
++ if (req->req.actual >= req->req.length)
++ return 1;
++
++ /* finished that packet. the next one may be waiting... */
++ return 0;
++}
++
++#ifdef USE_DMA
++
++#define MAX_IN_DMA ((DCMD_LENGTH + 1) - BULK_FIFO_SIZE)
++static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ u32 dcmd = 0;
++ u32 len = req->req.length;
++ u32 buf = req->req.dma;
++ u32 fifo = io_v2p((u32)ep->reg_udcdr);
++
++ buf += req->req.actual;
++ len -= req->req.actual;
++ ep->dma_con = 0;
++
++ DMSG("%s: req:0x%p length:%d, actual:%d dma:%d\n",
++ __FUNCTION__, &req->req, req->req.length,
++ req->req.actual,ep->dma);
++
++ /* no-descriptor mode can be simple for bulk-in, iso-in, iso-out */
++ DCSR(ep->dma) = DCSR_NODESC;
++ if (buf & 0x3)
++ DALGN |= 1 << ep->dma;
++ else
++ DALGN &= ~(1 << ep->dma);
++
++ if (ep->dir_in) {
++ DSADR(ep->dma) = buf;
++ DTADR(ep->dma) = fifo;
++ if (len > MAX_IN_DMA) {
++ len= MAX_IN_DMA;
++ ep->dma_con =1 ;
++ } else if (len >= ep->usb_ep->maxpacket) {
++ if ((ep->dma_con = (len % ep->usb_ep->maxpacket) != 0))
++ len = ep->usb_ep->maxpacket;
++ }
++ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN
++ | DCMD_FLOWTRG | DCMD_INCSRCADDR;
++ } else {
++ DSADR(ep->dma) = fifo;
++ DTADR(ep->dma) = buf;
++ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN
++ | DCMD_FLOWSRC | DCMD_INCTRGADDR;
++ }
++ *ep->reg_udccsr = UDCCSR_DME;
++ DCMD(ep->dma) = dcmd;
++ DCSR(ep->dma) = DCSR_NODESC | DCSR_EORIRQEN \
++ | ((ep->dir_in) ? DCSR_STOPIRQEN : 0);
++ *ep->reg_drcmr = ep->dma | DRCMR_MAPVLD;
++ DCSR(ep->dma) |= DCSR_RUN;
++}
++
++static void cancel_dma(struct pxa27x_ep *ep)
++{
++ struct pxa27x_request *req;
++ u32 tmp;
++
++ if (DCSR(ep->dma) == 0 || list_empty(&ep->queue))
++ return;
++
++ DMSG("hehe dma:%d,dcsr:0x%x\n", ep->dma, DCSR(ep->dma));
++ DCSR(ep->dma) = 0;
++ while ((DCSR(ep->dma) & DCSR_STOPSTATE) == 0)
++ cpu_relax();
++
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++ tmp = DCMD(ep->dma) & DCMD_LENGTH;
++ req->req.actual = req->req.length - tmp;
++
++ /* the last tx packet may be incomplete, so flush the fifo.
++ * FIXME correct req.actual if we can
++ */
++ *ep->reg_udccsr = UDCCSR_FEF;
++}
++
++static void dma_nodesc_handler(int dmach, void *_ep)
++{
++ struct pxa27x_ep *ep = _ep;
++ struct pxa27x_request *req, *req_next;
++ u32 dcsr, tmp, completed;
++
++ local_irq_disable();
++
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++
++ DMSG("%s, buf:0x%p\n",__FUNCTION__, req->req.buf);
++
++ ep->dma_irqs++;
++ ep->dev->stats.irqs++;
++
++ completed = 0;
++
++ dcsr = DCSR(dmach);
++ DCSR(ep->dma) &= ~DCSR_RUN;
++
++ if (dcsr & DCSR_BUSERR) {
++ DCSR(dmach) = DCSR_BUSERR;
++ dev_err(ep->dev->dev, "DMA Bus Error\n");
++ req->req.status = -EIO;
++ completed = 1;
++ } else if (dcsr & DCSR_ENDINTR) {
++ DCSR(dmach) = DCSR_ENDINTR;
++ if (ep->dir_in) {
++ tmp = req->req.length - req->req.actual;
++ /* Last packet is a short one*/
++ if (tmp < ep->usb_ep->maxpacket) {
++ int count = 0;
++
++ *ep->reg_udccsr = UDCCSR_SP | \
++ (*ep->reg_udccsr & UDCCSR_MASK);
++ /*Wait for packet out */
++ while( (count++ < 10000) && \
++ !(*ep->reg_udccsr & UDCCSR_FS));
++ if (count >= 10000)
++ DMSG("Failed to send packet\n");
++ else
++ DMSG("%s: short packet sent len:%d,"
++ "length:%d,actual:%d\n", __FUNCTION__,
++ tmp, req->req.length, req->req.actual);
++ req->req.actual = req->req.length;
++ completed = 1;
++ /* There are still packets to transfer */
++ } else if ( ep->dma_con) {
++ DMSG("%s: more packets,length:%d,actual:%d\n",
++ __FUNCTION__,req->req.length,
++ req->req.actual);
++ req->req.actual += ep->usb_ep->maxpacket;
++ completed = 0;
++ } else {
++ DMSG("%s: no more packets,length:%d,"
++ "actual:%d\n", __FUNCTION__,
++ req->req.length, req->req.actual);
++ req->req.actual = req->req.length;
++ completed = 1;
++ }
++ } else {
++ req->req.actual = req->req.length;
++ completed = 1;
++ }
++ } else if (dcsr & DCSR_EORINTR) { //Only happened in OUT DMA
++ int remain,udccsr ;
++
++ DCSR(dmach) = DCSR_EORINTR;
++ remain = DCMD(dmach) & DCMD_LENGTH;
++ req->req.actual = req->req.length - remain;
++
++ udccsr = *ep->reg_udccsr;
++ if (udccsr & UDCCSR_SP) {
++ *ep->reg_udccsr = UDCCSR_PC | (udccsr & UDCCSR_MASK);
++ completed = 1;
++ }
++ DMSG("%s: length:%d actual:%d\n",
++ __FUNCTION__, req->req.length, req->req.actual);
++ } else
++ DMSG("%s: Others dma:%d DCSR:0x%x DCMD:0x%x\n",
++ __FUNCTION__, dmach, DCSR(dmach), DCMD(dmach));
++
++ if (likely(completed)) {
++ if (req->queue.next != &ep->queue) {
++ req_next = list_entry(req->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep, req_next);
++ }
++ done(ep, req, 0);
++ } else {
++ kick_dma(ep, req);
++ }
++
++ local_irq_enable();
++}
++
++#endif
++/*-------------------------------------------------------------------------*/
++
++static int
++pxa27x_ep_queue(struct usb_ep *_ep, struct usb_request *_req, unsigned gfp_flags)
++{
++ struct pxa27x_virt_ep *virt_ep;
++ struct pxa27x_ep *ep;
++ struct pxa27x_request *req;
++ struct pxa27x_udc *dev;
++ unsigned long flags;
++
++ virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ ep = virt_ep->pxa_ep;
++
++ req = container_of(_req, struct pxa27x_request, req);
++ if (unlikely (!_req || !_req->complete || !_req->buf||
++ !list_empty(&req->queue))) {
++ DMSG("%s, bad params\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ if (unlikely (!_ep || (!ep->desc && _ep->name != ep0name))) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ DMSG("%s, ep point %d is queue\n", __FUNCTION__, ep->ep_num);
++
++ dev = ep->dev;
++ if (unlikely (!dev->driver
++ || dev->gadget.speed == USB_SPEED_UNKNOWN)) {
++ DMSG("%s, bogus device state\n", __FUNCTION__);
++ return -ESHUTDOWN;
++ }
++
++ /* iso is always one packet per request, that's the only way
++ * we can report per-packet status. that also helps with dma.
++ */
++ if (unlikely (ep->ep_type == USB_ENDPOINT_XFER_ISOC
++ && req->req.length > le16_to_cpu
++ (ep->desc->wMaxPacketSize)))
++ return -EMSGSIZE;
++
++#ifdef USE_DMA
++ // FIXME caller may already have done the dma mapping
++ if (ep->dma >= 0) {
++ _req->dma = dma_map_single(dev->dev, _req->buf, _req->length,
++ (ep->dir_in) ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
++ }
++#endif
++
++ DBG(DBG_NOISY, "%s queue req %p, len %d buf %p\n",
++ _ep->name, _req, _req->length, _req->buf);
++
++ local_irq_save(flags);
++
++ _req->status = -EINPROGRESS;
++ _req->actual = 0;
++
++ /* kickstart this i/o queue? */
++ if (list_empty(&ep->queue) && !ep->stopped) {
++ if (ep->desc == 0 /* ep0 */) {
++ unsigned length = _req->length;
++
++ switch (dev->ep0state) {
++ case EP0_IN_DATA_PHASE:
++ dev->stats.write.ops++;
++ if (write_ep0_fifo(ep, req))
++ req = 0;
++ break;
++
++ case EP0_OUT_DATA_PHASE:
++ dev->stats.read.ops++;
++ if (dev->req_pending)
++ ep0start(dev, UDCCSR0_IPR, "OUT");
++ if (length == 0 || ((UDCCSR0 & UDCCSR0_RNE) != 0
++ && read_ep0_fifo(ep, req))) {
++ ep0_idle(dev);
++ done(ep, req, 0);
++ req = 0;
++ }
++ break;
++ case EP0_NO_ACTION:
++ ep0_idle(dev);
++ req=0;
++ break;
++ default:
++ DMSG("ep0 i/o, odd state %d\n", dev->ep0state);
++ local_irq_restore (flags);
++ return -EL2HLT;
++ }
++#ifdef USE_DMA
++ /* either start dma or prime pio pump */
++ } else if (ep->dma >= 0) {
++ kick_dma(ep, req);
++#endif
++ /* can the FIFO can satisfy the request immediately? */
++ } else if (ep->dir_in && (*ep->reg_udccsr & UDCCSR_FS) != 0
++ && write_fifo(ep, req)) {
++ req = 0;
++ } else if ((*ep->reg_udccsr & UDCCSR_FS) != 0
++ && read_fifo(ep, req)) {
++ req = 0;
++ }
++ DMSG("req:%p,ep->desc:%p,ep->dma:%d\n", req, ep->desc, ep->dma);
++ if (likely (req && ep->desc) && ep->dma < 0)
++ pio_irq_enable(ep->pxa_ep_num);
++ }
++
++ /* pio or dma irq handler advances the queue. */
++ if (likely (req != 0))
++ list_add_tail(&req->queue, &ep->queue);
++ local_irq_restore(flags);
++
++ return 0;
++}
++
++
++/*
++ * nuke - dequeue ALL requests
++ */
++static void nuke(struct pxa27x_ep *ep, int status)
++{
++ struct pxa27x_request *req;
++
++ /* called with irqs blocked */
++#ifdef USE_DMA
++ if (ep->dma >= 0 && !ep->stopped)
++ cancel_dma(ep);
++#endif
++ while (!list_empty(&ep->queue)) {
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++ done(ep, req, status);
++ }
++ if (ep->desc)
++ pio_irq_disable(ep->pxa_ep_num);
++}
++
++
++/* dequeue JUST ONE request */
++static int pxa27x_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
++{
++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ struct pxa27x_ep *ep = virt_ep->pxa_ep;
++ struct pxa27x_request *req;
++ unsigned long flags;
++
++ if (!_ep || _ep->name == ep0name)
++ return -EINVAL;
++
++ local_irq_save(flags);
++
++ /* make sure it's actually queued on this endpoint */
++ list_for_each_entry(req, &ep->queue, queue) {
++ if (&req->req == _req)
++ break;
++ }
++ if (&req->req != _req) {
++ local_irq_restore(flags);
++ return -EINVAL;
++ }
++
++#ifdef USE_DMA
++ if (ep->dma >= 0 && ep->queue.next == &req->queue && !ep->stopped) {
++ cancel_dma(ep);
++ done(ep, req, -ECONNRESET);
++ /* restart i/o */
++ if (!list_empty(&ep->queue)) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep, req);
++ }
++ } else
++#endif
++ done(ep, req, -ECONNRESET);
++
++ local_irq_restore(flags);
++ return 0;
++}
++
++/*-------------------------------------------------------------------------*/
++
++static int pxa27x_ep_set_halt(struct usb_ep *_ep, int value)
++{
++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ struct pxa27x_ep *ep = virt_ep->pxa_ep;
++ unsigned long flags;
++
++ DMSG("%s is called\n", __FUNCTION__);
++ if (unlikely (!_ep || (!ep->desc && _ep->name != ep0name))
++ || ep->ep_type == USB_ENDPOINT_XFER_ISOC) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -EINVAL;
++ }
++ if (value == 0) {
++ /* this path (reset toggle+halt) is needed to implement
++ * SET_INTERFACE on normal hardware. but it can't be
++ * done from software on the PXA UDC, and the hardware
++ * forgets to do it as part of SET_INTERFACE automagic.
++ */
++ DMSG("only host can clear %s halt\n", _ep->name);
++ return -EROFS;
++ }
++
++ local_irq_save(flags);
++
++ if (ep->dir_in && ((*ep->reg_udccsr & UDCCSR_FS) == 0
++ || !list_empty(&ep->queue))) {
++ local_irq_restore(flags);
++ return -EAGAIN;
++ }
++
++ /* FST bit is the same for control, bulk in, bulk out, interrupt in */
++ *ep->reg_udccsr = UDCCSR_FST|UDCCSR_FEF;
++
++ /* ep0 needs special care */
++ if (!ep->desc) {
++ start_watchdog(ep->dev);
++ ep->dev->req_pending = 0;
++ ep->dev->ep0state = EP0_STALL;
++
++ /* and bulk/intr endpoints like dropping stalls too */
++ } else {
++ unsigned i;
++ for (i = 0; i < 1000; i += 20) {
++ if (*ep->reg_udccsr & UDCCSR_SST)
++ break;
++ udelay(20);
++ }
++ }
++ local_irq_restore(flags);
++
++ DBG(DBG_VERBOSE, "%s halt\n", _ep->name);
++ return 0;
++}
++
++static int pxa27x_ep_fifo_status(struct usb_ep *_ep)
++{
++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ struct pxa27x_ep *ep = virt_ep->pxa_ep;
++
++ if (!_ep) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -ENODEV;
++ }
++ /* pxa can't report unclaimed bytes from IN fifos */
++ if (ep->dir_in)
++ return -EOPNOTSUPP;
++ if (ep->dev->gadget.speed == USB_SPEED_UNKNOWN
++ || (*ep->reg_udccsr & UDCCSR_FS) == 0)
++ return 0;
++ else
++ return (*ep->reg_udcbcr & 0xfff) + 1;
++}
++
++static void pxa27x_ep_fifo_flush(struct usb_ep *_ep)
++{
++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++ struct pxa27x_ep *ep = virt_ep->pxa_ep;
++
++ DMSG("pxa27x_ep_fifo_flush\n");
++
++ if (!_ep || _ep->name == ep0name || !list_empty(&ep->queue)) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return;
++ }
++
++ /* toggle and halt bits stay unchanged */
++
++ /* for OUT, just read and discard the FIFO contents. */
++ if (!ep->dir_in) {
++ while (((*ep->reg_udccsr) & UDCCSR_BNE) != 0)
++ (void) *ep->reg_udcdr;
++ return;
++ }
++
++ /* most IN status is the same, but ISO can't stall */
++ *ep->reg_udccsr = UDCCSR_PC|UDCCSR_FST|UDCCSR_TRN
++ | (ep->ep_type == USB_ENDPOINT_XFER_ISOC)
++ ? 0 : UDCCSR_SST;
++}
++
++
++static struct usb_ep_ops pxa27x_ep_ops = {
++ .enable = pxa27x_ep_enable,
++ .disable = pxa27x_ep_disable,
++
++ .alloc_request = pxa27x_ep_alloc_request,
++ .free_request = pxa27x_ep_free_request,
++
++ .alloc_buffer = pxa27x_ep_alloc_buffer,
++ .free_buffer = pxa27x_ep_free_buffer,
++
++ .queue = pxa27x_ep_queue,
++ .dequeue = pxa27x_ep_dequeue,
++
++ .set_halt = pxa27x_ep_set_halt,
++ .fifo_status = pxa27x_ep_fifo_status,
++ .fifo_flush = pxa27x_ep_fifo_flush,
++};
++
++
++/* ---------------------------------------------------------------------------
++ * device-scoped parts of the api to the usb controller hardware
++ * ---------------------------------------------------------------------------
++ */
++
++static inline unsigned int validate_fifo_size(u8 bmAttributes)
++{
++ switch (bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
++ case USB_ENDPOINT_XFER_CONTROL:
++ return EP0_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_ISOC:
++ return ISO_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_BULK:
++ return BULK_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_INT:
++ return INT_FIFO_SIZE;
++ break;
++ default:
++ break;
++ }
++}
++
++static void pxa27x_ep_free(struct usb_gadget *gadget, struct usb_ep *_ep)
++{
++ struct pxa27x_udc *dev = the_controller;
++ struct pxa27x_virt_ep *virt_ep;
++ int i;
++
++ virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if (dev->ep[i].usb_ep == &virt_ep->usb_ep) {
++ if (dev->ep[i].desc) {
++ virt_ep->pxa_ep = &dev->ep[i];
++ pxa27x_ep_disable(&virt_ep->usb_ep);
++ }
++ dev->ep[i].usb_ep = NULL;
++ }
++ }
++
++ if (!list_empty(&virt_ep->usb_ep.ep_list))
++ list_del_init(&virt_ep->usb_ep.ep_list);
++
++ kfree(virt_ep->usb_ep.name);
++ kfree(virt_ep);
++}
++
++static void pxa27x_ep_freeall(struct usb_gadget *gadget)
++{
++ struct pxa27x_udc *dev = the_controller;
++ int i;
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if(dev->ep[i].usb_ep)
++ pxa27x_ep_free(gadget, dev->ep[i].usb_ep);
++ }
++}
++
++#define NAME_SIZE 18
++
++static int pxa27x_find_free_ep(struct pxa27x_udc *dev)
++{
++ int i;
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if(!dev->ep[i].assigned)
++ return i;
++ }
++ return -1;
++}
++
++/*
++ * Endpoint Allocation/Configuration
++ *
++ * pxa27x endpoint configuration is fixed when the device is enabled. Any pxa
++ * endpoint is only active in one configuration, interface and alternate
++ * interface combination so to support gadget drivers, we map one usb_ep to
++ * one of several pxa ep's. One pxa endpoint is assigned per configuration
++ * combination.
++ */
++static struct usb_ep* pxa27x_ep_alloc(struct usb_gadget *gadget, struct usb_endpoint_descriptor *desc,
++ struct usb_endpoint_config *epconfig, int configs)
++{
++ struct pxa27x_udc *dev = the_controller;
++ struct pxa27x_virt_ep *virt_ep;
++ unsigned int i, fifo_size;
++ char *name;
++
++ if (unlikely(configs < 1)) {
++ dev_err(dev->dev, "%s: Error in config data\n", __FUNCTION__);
++ return NULL;
++ }
++
++ virt_ep = kmalloc(sizeof(struct pxa27x_virt_ep), GFP_KERNEL);
++ name = kmalloc(NAME_SIZE, GFP_KERNEL);
++ if (!virt_ep || !name) {
++ dev_err(dev->dev, "%s: -ENOMEM\n", __FUNCTION__);
++ kfree(name);
++ kfree(virt_ep);
++ return NULL;
++ }
++
++ if (!(desc->wMaxPacketSize)) {
++ fifo_size = validate_fifo_size(desc->bmAttributes);
++ desc->wMaxPacketSize = fifo_size;
++ } else {
++ fifo_size = desc->wMaxPacketSize;
++ }
++
++ DMSG("pxa27x_ep_alloc: bLength: %d, bDescriptorType: %x, bEndpointAddress: %x,\n"
++ " bmAttributes: %x, wMaxPacketSize: %d\n", desc->bLength,
++ desc->bDescriptorType, desc->bEndpointAddress, desc->bmAttributes,
++ desc->wMaxPacketSize);
++
++ if (!(desc->bEndpointAddress & 0xF))
++ desc->bEndpointAddress |= dev->ep_num;
++
++ for (i = 0; i < configs; i++)
++ {
++ struct pxa27x_ep *pxa_ep;
++ int j;
++
++ DMSG("pxa27x_ep_alloc: config: %d, interface: %d, altinterface: %x,\n",
++ epconfig->config, epconfig->interface, epconfig->altinterface);
++
++ j = pxa27x_find_free_ep(dev);
++
++ if (unlikely(j < 0)) {
++ dev_err(dev->dev, "pxa27x_ep_alloc: Failed to find a spare endpoint\n");
++ pxa27x_ep_free(gadget, &virt_ep->usb_ep);
++ return NULL;
++ }
++
++ pxa_ep = &dev->ep[j];
++
++ if (i == 0)
++ virt_ep->pxa_ep = pxa_ep;
++
++ pxa_ep->assigned = 1;
++ pxa_ep->ep_num = dev->ep_num;
++ pxa_ep->pxa_ep_num = j;
++ pxa_ep->usb_ep = &virt_ep->usb_ep;
++ pxa_ep->dev = dev;
++ pxa_ep->desc = desc;
++ pxa_ep->pio_irqs = pxa_ep->dma_irqs = 0;
++ pxa_ep->dma = -1;
++
++ pxa_ep->fifo_size = fifo_size;
++ pxa_ep->dir_in = (desc->bEndpointAddress & USB_DIR_IN) ? 1 : 0;
++ pxa_ep->ep_type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
++ pxa_ep->stopped = 1;
++ pxa_ep->dma_con = 0;
++ pxa_ep->config = epconfig->config;
++ pxa_ep->interface = epconfig->interface;
++ pxa_ep->aisn = epconfig->altinterface;
++
++ pxa_ep->reg_udccsr = &UDCCSR0 + j;
++ pxa_ep->reg_udcbcr = &UDCBCR0 + j;
++ pxa_ep->reg_udcdr = &UDCDR0 + j ;
++ pxa_ep->reg_udccr = &UDCCRA - 1 + j;
++#ifdef USE_DMA
++ pxa_ep->reg_drcmr = &DRCMR24 + j;
++#endif
++
++ /* Configure UDCCR */
++ *pxa_ep->reg_udccr = ((pxa_ep->config << UDCCONR_CN_S) & UDCCONR_CN)
++ | ((pxa_ep->interface << UDCCONR_IN_S) & UDCCONR_IN)
++ | ((pxa_ep->aisn << UDCCONR_AISN_S) & UDCCONR_AISN)
++ | ((dev->ep_num << UDCCONR_EN_S) & UDCCONR_EN)
++ | ((pxa_ep->ep_type << UDCCONR_ET_S) & UDCCONR_ET)
++ | ((pxa_ep->dir_in) ? UDCCONR_ED : 0)
++ | ((min(pxa_ep->fifo_size, (unsigned)desc->wMaxPacketSize) << UDCCONR_MPS_S ) & UDCCONR_MPS)
++ | UDCCONR_EE;
++// | UDCCONR_DE | UDCCONR_EE;
++
++
++
++#ifdef USE_DMA
++ /* Only BULK use DMA */
++ if ((pxa_ep->ep_type & USB_ENDPOINT_XFERTYPE_MASK)\
++ == USB_ENDPOINT_XFER_BULK)
++ *pxa_ep->reg_udccsr = UDCCSR_DME;
++#endif
++
++ DMSG("UDCCR: 0x%p is 0x%x\n", pxa_ep->reg_udccr,*pxa_ep->reg_udccr);
++
++ epconfig++;
++ }
++
++ /* Fill ep name*/
++ switch (desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
++ case USB_ENDPOINT_XFER_BULK:
++ sprintf(name, "ep%d%s-bulk", dev->ep_num,
++ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out"));
++ break;
++ case USB_ENDPOINT_XFER_INT:
++ sprintf(name, "ep%d%s-intr", dev->ep_num,
++ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out"));
++ break;
++ default:
++ sprintf(name, "ep%d%s", dev->ep_num,
++ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out"));
++ break;
++ }
++
++ virt_ep->desc = desc;
++ virt_ep->usb_ep.name = name;
++ virt_ep->usb_ep.ops = &pxa27x_ep_ops;
++ virt_ep->usb_ep.maxpacket = min((ushort)fifo_size, desc->wMaxPacketSize);
++
++ list_add_tail(&virt_ep->usb_ep.ep_list, &gadget->ep_list);
++
++ dev->ep_num++;
++ return &virt_ep->usb_ep;
++}
++
++static int pxa27x_udc_get_frame(struct usb_gadget *_gadget)
++{
++ return (UDCFNR & 0x7FF);
++}
++
++static int pxa27x_udc_wakeup(struct usb_gadget *_gadget)
++{
++ /* host may not have enabled remote wakeup */
++ if ((UDCCR & UDCCR_DWRE) == 0)
++ return -EHOSTUNREACH;
++ udc_set_mask_UDCCR(UDCCR_UDR);
++ return 0;
++}
++
++static const struct usb_gadget_ops pxa27x_udc_ops = {
++ .ep_alloc = pxa27x_ep_alloc,
++ .get_frame = pxa27x_udc_get_frame,
++ .wakeup = pxa27x_udc_wakeup,
++ // current versions must always be self-powered
++};
++
++
++/*-------------------------------------------------------------------------*/
++
++#ifdef UDC_PROC_FILE
++
++static const char proc_node_name [] = "driver/udc";
++
++static int
++udc_proc_read(char *page, char **start, off_t off, int count,
++ int *eof, void *_dev)
++{
++ char *buf = page;
++ struct pxa27x_udc *dev = _dev;
++ char *next = buf;
++ unsigned size = count;
++ unsigned long flags;
++ int i, t;
++ u32 tmp;
++
++ if (off != 0)
++ return 0;
++
++ local_irq_save(flags);
++
++ /* basic device status */
++ t = scnprintf(next, size, DRIVER_DESC "\n"
++ "%s version: %s\nGadget driver: %s\n",
++ driver_name, DRIVER_VERSION DMASTR,
++ dev->driver ? dev->driver->driver.name : "(none)");
++ size -= t;
++ next += t;
++
++ /* registers for device and ep0 */
++ t = scnprintf(next, size,
++ "uicr %02X.%02X, usir %02X.%02x, ufnr %02X\n",
++ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR);
++ size -= t;
++ next += t;
++
++ tmp = UDCCR;
++ t = scnprintf(next, size,"udccr %02X =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n", tmp,
++ (tmp & UDCCR_OEN) ? " oen":"",
++ (tmp & UDCCR_AALTHNP) ? " aalthnp":"",
++ (tmp & UDCCR_AHNP) ? " rem" : "",
++ (tmp & UDCCR_BHNP) ? " rstir" : "",
++ (tmp & UDCCR_DWRE) ? " dwre" : "",
++ (tmp & UDCCR_SMAC) ? " smac" : "",
++ (tmp & UDCCR_EMCE) ? " emce" : "",
++ (tmp & UDCCR_UDR) ? " udr" : "",
++ (tmp & UDCCR_UDA) ? " uda" : "",
++ (tmp & UDCCR_UDE) ? " ude" : "",
++ (tmp & UDCCR_ACN) >> UDCCR_ACN_S,
++ (tmp & UDCCR_AIN) >> UDCCR_AIN_S,
++ (tmp & UDCCR_AAISN)>> UDCCR_AAISN_S );
++
++ size -= t;
++ next += t;
++
++ tmp = UDCCSR0;
++ t = scnprintf(next, size,
++ "udccsr0 %02X =%s%s%s%s%s%s%s\n", tmp,
++ (tmp & UDCCSR0_SA) ? " sa" : "",
++ (tmp & UDCCSR0_RNE) ? " rne" : "",
++ (tmp & UDCCSR0_FST) ? " fst" : "",
++ (tmp & UDCCSR0_SST) ? " sst" : "",
++ (tmp & UDCCSR0_DME) ? " dme" : "",
++ (tmp & UDCCSR0_IPR) ? " ipr" : "",
++ (tmp & UDCCSR0_OPC) ? " opc" : "");
++ size -= t;
++ next += t;
++
++ if (!dev->driver)
++ goto done;
++
++ t = scnprintf(next, size, "ep0 IN %lu/%lu, OUT %lu/%lu\nirqs %lu\n\n",
++ dev->stats.write.bytes, dev->stats.write.ops,
++ dev->stats.read.bytes, dev->stats.read.ops,
++ dev->stats.irqs);
++ size -= t;
++ next += t;
++
++ /* dump endpoint queues */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep [i];
++ struct pxa27x_request *req;
++ int t;
++
++ if (i != 0) {
++ const struct usb_endpoint_descriptor *d;
++
++ d = ep->desc;
++ if (!d)
++ continue;
++ tmp = *dev->ep [i].reg_udccsr;
++ t = scnprintf(next, size,
++ "%d max %d %s udccs %02x udccr:0x%x\n",
++ i, le16_to_cpu (d->wMaxPacketSize),
++ (ep->dma >= 0) ? "dma" : "pio", tmp,
++ *dev->ep[i].reg_udccr);
++ /* TODO translate all five groups of udccs bits! */
++
++ } else /* ep0 should only have one transfer queued */
++ t = scnprintf(next, size, "ep0 max 16 pio irqs %lu\n",
++ ep->pio_irqs);
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++
++ if (list_empty(&ep->queue)) {
++ t = scnprintf(next, size, "\t(nothing queued)\n");
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++ continue;
++ }
++ list_for_each_entry(req, &ep->queue, queue) {
++#ifdef USE_DMA
++ if (ep->dma >= 0 && req->queue.prev == &ep->queue)
++ t = scnprintf(next, size, "\treq %p len %d/%d "
++ "buf %p (dma%d dcmd %08x)\n",
++ &req->req, req->req.actual,
++ req->req.length, req->req.buf,
++ ep->dma, DCMD(ep->dma)
++ /* low 13 bits == bytes-to-go */);
++ else
++#endif
++ t = scnprintf(next, size,
++ "\treq %p len %d/%d buf %p\n",
++ &req->req, req->req.actual,
++ req->req.length, req->req.buf);
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++ }
++ }
++
++done:
++ local_irq_restore(flags);
++ *eof = 1;
++ return count - size;
++}
++
++#define create_proc_files() \
++ create_proc_read_entry(proc_node_name, 0, NULL, udc_proc_read, dev)
++#define remove_proc_files() \
++ remove_proc_entry(proc_node_name, NULL)
++
++#else /* !UDC_PROC_FILE */
++#define create_proc_files() do {} while (0)
++#define remove_proc_files() do {} while (0)
++
++#endif /* UDC_PROC_FILE */
++
++/* "function" sysfs attribute */
++static ssize_t show_function(struct device *_dev, struct device_attribute *attr, char *buf)
++{
++ struct pxa27x_udc *dev = dev_get_drvdata(_dev);
++
++ if (!dev->driver || !dev->driver->function
++ || strlen(dev->driver->function) > PAGE_SIZE)
++ return 0;
++ return scnprintf(buf, PAGE_SIZE, "%s\n", dev->driver->function);
++}
++static DEVICE_ATTR(function, S_IRUGO, show_function, NULL);
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * udc_disable - disable USB device controller
++ */
++static void udc_disable(struct pxa27x_udc *dev)
++{
++ UDCICR0 = UDCICR1 = 0x00000000;
++
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++
++ /* Disable clock for USB device */
++ pxa_set_cken(CKEN11_USB, 0);
++
++ ep0_idle(dev);
++ dev->gadget.speed = USB_SPEED_UNKNOWN;
++ dev->mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT);
++}
++
++
++/*
++ * udc_reinit - initialize software state
++ */
++static void udc_reinit(struct pxa27x_udc *dev)
++{
++ u32 i;
++
++ dev->ep0state = EP0_IDLE;
++
++ /* basic endpoint records init */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->stopped = 0;
++ ep->pio_irqs = ep->dma_irqs = 0;
++ }
++ dev->configuration = 0;
++ dev->interface = 0;
++ dev->alternate = 0;
++ /* the rest was statically initialized, and is read-only */
++}
++
++/* until it's enabled, this UDC should be completely invisible
++ * to any USB host.
++ */
++static void udc_enable(struct pxa27x_udc *dev)
++{
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++
++ /* Enable clock for USB device */
++ pxa_set_cken(CKEN11_USB, 1);
++
++ UDCICR0 = UDCICR1 = 0;
++
++ ep0_idle(dev);
++ dev->gadget.speed = USB_SPEED_FULL;
++ dev->stats.irqs = 0;
++
++ udc_set_mask_UDCCR(UDCCR_UDE);
++ udelay(2);
++ if (UDCCR & UDCCR_EMCE)
++ dev_err(dev->dev, "There are error in configuration, udc disabled\n");
++
++ /* caller must be able to sleep in order to cope
++ * with startup transients.
++ */
++ msleep(100);
++
++ /* enable suspend/resume and reset irqs */
++ UDCICR1 = UDCICR1_IECC | UDCICR1_IERU | UDCICR1_IESU | UDCICR1_IERS;
++
++ /* enable ep0 irqs */
++ UDCICR0 = UDCICR_INT(0,UDCICR_INT_MASK);
++
++ DMSG("Connecting\n");
++ /* RPFIXME */
++ UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE;
++ //dev->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
++}
++
++
++/* when a driver is successfully registered, it will receive
++ * control requests including set_configuration(), which enables
++ * non-control requests. then usb traffic follows until a
++ * disconnect is reported. then a host may connect again, or
++ * the driver might get unbound.
++ */
++int usb_gadget_register_driver(struct usb_gadget_driver *driver)
++{
++ struct pxa27x_udc *dev = the_controller;
++ int retval;
++
++ if (!driver || driver->speed != USB_SPEED_FULL || !driver->bind
++ || !driver->unbind || !driver->disconnect || !driver->setup)
++ return -EINVAL;
++ if (!dev)
++ return -ENODEV;
++ if (dev->driver)
++ return -EBUSY;
++
++ udc_disable(dev);
++ udc_init_ep(dev);
++ udc_reinit(dev);
++
++ /* first hook up the driver ... */
++ dev->driver = driver;
++ dev->gadget.dev.driver = &driver->driver;
++ dev->ep_num = 1;
++
++ retval = device_add(&dev->gadget.dev);
++ if (retval) {
++ DMSG("device_add error %d\n", retval);
++ goto add_fail;
++ }
++ retval = driver->bind(&dev->gadget);
++ if (retval) {
++ DMSG("bind to driver %s --> error %d\n",
++ driver->driver.name, retval);
++ goto bind_fail;
++ }
++ retval = device_create_file(dev->dev, &dev_attr_function);
++ if (retval) {
++ DMSG("device_create_file failed: %d\n", retval);
++ goto create_file_fail;
++ }
++
++ /* ... then enable host detection and ep0; and we're ready
++ * for set_configuration as well as eventual disconnect.
++ * NOTE: this shouldn't power up until later.
++ */
++ DMSG("registered gadget driver '%s'\n", driver->driver.name);
++ udc_enable(dev);
++ dump_state(dev);
++ return 0;
++
++create_file_fail:
++ driver->unbind(&dev->gadget);
++bind_fail:
++ device_del(&dev->gadget.dev);
++add_fail:
++ dev->driver = 0;
++ dev->gadget.dev.driver = 0;
++ return retval;
++}
++EXPORT_SYMBOL(usb_gadget_register_driver);
++
++static void
++stop_activity(struct pxa27x_udc *dev, struct usb_gadget_driver *driver)
++{
++ int i;
++
++ DMSG("Trace path 1\n");
++ /* don't disconnect drivers more than once */
++ if (dev->gadget.speed == USB_SPEED_UNKNOWN)
++ driver = 0;
++ dev->gadget.speed = USB_SPEED_UNKNOWN;
++
++ /* prevent new request submissions, kill any outstanding requests */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->stopped = 1;
++ nuke(ep, -ESHUTDOWN);
++ }
++ del_timer_sync(&dev->timer);
++
++ /* report disconnect; the driver is already quiesced */
++ if (driver)
++ driver->disconnect(&dev->gadget);
++
++ /* re-init driver-visible data structures */
++ udc_reinit(dev);
++}
++
++int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
++{
++ struct pxa27x_udc *dev = the_controller;
++
++ if (!dev)
++ return -ENODEV;
++ if (!driver || driver != dev->driver)
++ return -EINVAL;
++
++ local_irq_disable();
++ udc_disable(dev);
++ stop_activity(dev, driver);
++ local_irq_enable();
++
++ driver->unbind(&dev->gadget);
++ pxa27x_ep_freeall(&dev->gadget);
++ dev->driver = 0;
++
++ device_del(&dev->gadget.dev);
++ device_remove_file(dev->dev, &dev_attr_function);
++
++ DMSG("unregistered gadget driver '%s'\n", driver->driver.name);
++ dump_state(dev);
++ return 0;
++}
++EXPORT_SYMBOL(usb_gadget_unregister_driver);
++
++
++/*-------------------------------------------------------------------------*/
++
++static inline void clear_ep_state(struct pxa27x_udc *dev)
++{
++ unsigned i;
++
++ /* hardware SET_{CONFIGURATION,INTERFACE} automagic resets endpoint
++ * fifos, and pending transactions mustn't be continued in any case.
++ */
++ for (i = 1; i < UDC_EP_NUM; i++)
++ nuke(&dev->ep[i], -ECONNABORTED);
++}
++
++static void udc_watchdog(unsigned long _dev)
++{
++ struct pxa27x_udc *dev = (void *)_dev;
++
++ local_irq_disable();
++ if (dev->ep0state == EP0_STALL
++ && (UDCCSR0 & UDCCSR0_FST) == 0
++ && (UDCCSR0 & UDCCSR0_SST) == 0) {
++ UDCCSR0 = UDCCSR0_FST|UDCCSR0_FTF;
++ DBG(DBG_VERBOSE, "ep0 re-stall\n");
++ start_watchdog(dev);
++ }
++ local_irq_enable();
++}
++
++static void handle_ep0(struct pxa27x_udc *dev)
++{
++ u32 udccsr0 = UDCCSR0;
++ struct pxa27x_ep *ep = &dev->ep[0];
++ struct pxa27x_request *req;
++ union {
++ struct usb_ctrlrequest r;
++ u8 raw[8];
++ u32 word[2];
++ } u;
++
++ if (list_empty(&ep->queue))
++ req = 0;
++ else
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++
++ /* clear stall status */
++ if (udccsr0 & UDCCSR0_SST) {
++ nuke(ep, -EPIPE);
++ UDCCSR0 = UDCCSR0_SST;
++ del_timer(&dev->timer);
++ ep0_idle(dev);
++ }
++
++ /* previous request unfinished? non-error iff back-to-back ... */
++ if ((udccsr0 & UDCCSR0_SA) != 0 && dev->ep0state != EP0_IDLE) {
++ nuke(ep, 0);
++ del_timer(&dev->timer);
++ ep0_idle(dev);
++ }
++
++ switch (dev->ep0state) {
++ case EP0_NO_ACTION:
++ dev_info(dev->dev, "%s: Busy\n", __FUNCTION__);
++ /*Fall through */
++ case EP0_IDLE:
++ /* late-breaking status? */
++ udccsr0 = UDCCSR0;
++
++ /* start control request? */
++ if (likely((udccsr0 & (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE))
++ == (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE))) {
++ int i;
++
++ nuke(ep, -EPROTO);
++ /* read SETUP packet */
++ for (i = 0; i < 2; i++) {
++ if (unlikely(!(UDCCSR0 & UDCCSR0_RNE))) {
++bad_setup:
++ DMSG("SETUP %d!\n", i);
++ goto stall;
++ }
++ u.word [i] = UDCDR0;
++ }
++ if (unlikely((UDCCSR0 & UDCCSR0_RNE) != 0))
++ goto bad_setup;
++
++ le16_to_cpus(&u.r.wValue);
++ le16_to_cpus(&u.r.wIndex);
++ le16_to_cpus(&u.r.wLength);
++
++ DBG(DBG_VERBOSE, "SETUP %02x.%02x v%04x i%04x l%04x\n",
++ u.r.bRequestType, u.r.bRequest,
++ u.r.wValue, u.r.wIndex, u.r.wLength);
++ /* cope with automagic for some standard requests. */
++ dev->req_std = (u.r.bRequestType & USB_TYPE_MASK)
++ == USB_TYPE_STANDARD;
++ dev->req_config = 0;
++ dev->req_pending = 1;
++#if 0
++ switch (u.r.bRequest) {
++ /* hardware was supposed to hide this */
++ case USB_REQ_SET_CONFIGURATION:
++ case USB_REQ_SET_INTERFACE:
++ case USB_REQ_SET_ADDRESS:
++ dev_err(dev->dev, "Should not come here\n");
++ break;
++ }
++
++#endif
++ if (u.r.bRequestType & USB_DIR_IN)
++ dev->ep0state = EP0_IN_DATA_PHASE;
++ else
++ dev->ep0state = EP0_OUT_DATA_PHASE;
++ i = dev->driver->setup(&dev->gadget, &u.r);
++
++ if (i < 0) {
++ /* hardware automagic preventing STALL... */
++ if (dev->req_config) {
++ /* hardware sometimes neglects to tell
++ * tell us about config change events,
++ * so later ones may fail...
++ */
++ WARN("config change %02x fail %d?\n",
++ u.r.bRequest, i);
++ return;
++ /* TODO experiment: if has_cfr,
++ * hardware didn't ACK; maybe we
++ * could actually STALL!
++ */
++ }
++ DBG(DBG_VERBOSE, "protocol STALL, "
++ "%02x err %d\n", UDCCSR0, i);
++stall:
++ /* the watchdog timer helps deal with cases
++ * where udc seems to clear FST wrongly, and
++ * then NAKs instead of STALLing.
++ */
++ ep0start(dev, UDCCSR0_FST|UDCCSR0_FTF, "stall");
++ start_watchdog(dev);
++ dev->ep0state = EP0_STALL;
++
++ /* deferred i/o == no response yet */
++ } else if (dev->req_pending) {
++ if (likely(dev->ep0state == EP0_IN_DATA_PHASE
++ || dev->req_std || u.r.wLength))
++ ep0start(dev, 0, "defer");
++ else
++ ep0start(dev, UDCCSR0_IPR, "defer/IPR");
++ }
++
++ /* expect at least one data or status stage irq */
++ return;
++
++ } else {
++ /* some random early IRQ:
++ * - we acked FST
++ * - IPR cleared
++ * - OPC got set, without SA (likely status stage)
++ */
++ UDCCSR0 = udccsr0 & (UDCCSR0_SA|UDCCSR0_OPC);
++ }
++ break;
++ case EP0_IN_DATA_PHASE: /* GET_DESCRIPTOR etc */
++ if (udccsr0 & UDCCSR0_OPC) {
++ UDCCSR0 = UDCCSR0_OPC|UDCCSR0_FTF;
++ DBG(DBG_VERBOSE, "ep0in premature status\n");
++ if (req)
++ done(ep, req, 0);
++ ep0_idle(dev);
++ } else /* irq was IPR clearing */ {
++ if (req) {
++ /* this IN packet might finish the request */
++ (void) write_ep0_fifo(ep, req);
++ } /* else IN token before response was written */
++ }
++ break;
++ case EP0_OUT_DATA_PHASE: /* SET_DESCRIPTOR etc */
++ if (udccsr0 & UDCCSR0_OPC) {
++ if (req) {
++ /* this OUT packet might finish the request */
++ if (read_ep0_fifo(ep, req))
++ done(ep, req, 0);
++ /* else more OUT packets expected */
++ } /* else OUT token before read was issued */
++ } else /* irq was IPR clearing */ {
++ DBG(DBG_VERBOSE, "ep0out premature status\n");
++ if (req)
++ done(ep, req, 0);
++ ep0_idle(dev);
++ }
++ break;
++ case EP0_STALL:
++ UDCCSR0 = UDCCSR0_FST;
++ break;
++ }
++ UDCISR0 = UDCISR_INT(0, UDCISR_INT_MASK);
++}
++
++
++static void handle_ep(struct pxa27x_ep *ep)
++{
++ struct pxa27x_request *req;
++ int completed;
++ u32 udccsr=0;
++
++ DMSG("%s is called\n", __FUNCTION__);
++ do {
++ completed = 0;
++ if (likely (!list_empty(&ep->queue))) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ } else
++ req = 0;
++
++// udccsr = *ep->reg_udccsr;
++ DMSG("%s: req:%p, udcisr0:0x%x udccsr %p:0x%x\n", __FUNCTION__,
++ req, UDCISR0, ep->reg_udccsr, *ep->reg_udccsr);
++ if (unlikely(ep->dir_in)) {
++ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr;
++ if (unlikely (udccsr))
++ *ep->reg_udccsr = udccsr;
++
++ if (req && likely ((*ep->reg_udccsr & UDCCSR_FS) != 0))
++ completed = write_fifo(ep, req);
++
++ } else {
++ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr;
++ if (unlikely(udccsr))
++ *ep->reg_udccsr = udccsr;
++
++ /* fifos can hold packets, ready for reading... */
++ if (likely(req)) {
++ completed = read_fifo(ep, req);
++ } else {
++ pio_irq_disable (ep->pxa_ep_num);
++ //*ep->reg_udccsr = UDCCSR_FEF;
++ DMSG("%s: no req for out data\n",
++ __FUNCTION__);
++ }
++ }
++ ep->pio_irqs++;
++ } while (completed);
++}
++
++static void pxa27x_update_eps(struct pxa27x_udc *dev)
++{
++ struct pxa27x_virt_ep *virt_ep;
++ int i;
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if(!dev->ep[i].assigned || !dev->ep[i].usb_ep)
++ continue;
++ virt_ep = container_of(dev->ep[i].usb_ep, struct pxa27x_virt_ep, usb_ep);
++
++ DMSG("%s, Updating eps %d:%d, %d:%d, %d:%d, %p,%p\n", __FUNCTION__, dev->ep[i].config, dev->configuration
++ ,dev->ep[i].interface, dev->interface, dev->ep[i].aisn, dev->alternate, virt_ep->pxa_ep, &dev->ep[i]);
++
++ if(dev->ep[i].config == dev->configuration && virt_ep->pxa_ep != &dev->ep[i]) {
++ if ((dev->ep[i].interface == dev->interface &&
++ dev->ep[i].aisn == dev->alternate) || virt_ep->pxa_ep->config != dev->configuration) {
++
++ if (virt_ep->pxa_ep->desc) {
++ DMSG("%s, Changing end point to %d (en/dis)\n", __FUNCTION__, i);
++ pxa27x_ep_disable(&virt_ep->usb_ep);
++ virt_ep->pxa_ep = &dev->ep[i];
++ pxa27x_ep_enable(&virt_ep->usb_ep, virt_ep->desc);
++ } else {
++ DMSG("%s, Changing end point to %d (no en/dis)\n", __FUNCTION__, i);
++ virt_ep->pxa_ep = &dev->ep[i];
++ }
++ }
++ }
++ }
++}
++
++static void pxa27x_change_configuration(struct pxa27x_udc *dev)
++{
++ struct usb_ctrlrequest req ;
++
++ pxa27x_update_eps(dev);
++
++ req.bRequestType = 0;
++ req.bRequest = USB_REQ_SET_CONFIGURATION;
++ req.wValue = dev->configuration;
++ req.wIndex = 0;
++ req.wLength = 0;
++
++ dev->ep0state = EP0_NO_ACTION;
++ dev->driver->setup(&dev->gadget, &req);
++}
++
++static void pxa27x_change_interface(struct pxa27x_udc *dev)
++{
++ struct usb_ctrlrequest req;
++
++ pxa27x_update_eps(dev);
++
++ req.bRequestType = USB_RECIP_INTERFACE;
++ req.bRequest = USB_REQ_SET_INTERFACE;
++ req.wValue = dev->alternate;
++ req.wIndex = dev->interface;
++ req.wLength = 0;
++
++ dev->ep0state = EP0_NO_ACTION;
++ dev->driver->setup(&dev->gadget, &req);
++}
++
++/*
++ * pxa27x_udc_irq - interrupt handler
++ *
++ * avoid delays in ep0 processing. the control handshaking isn't always
++ * under software control (pxa250c0 and the pxa255 are better), and delays
++ * could cause usb protocol errors.
++ */
++static irqreturn_t pxa27x_udc_irq(int irq, void *_dev)
++{
++ struct pxa27x_udc *dev = _dev;
++ int handled;
++
++ dev->stats.irqs++;
++
++ DBG(DBG_VERBOSE, "Interrupt, UDCISR0:0x%08x, UDCISR1:0x%08x, "
++ "UDCCR:0x%08x\n", UDCISR0, UDCISR1, UDCCR);
++ do {
++ u32 udcir = UDCISR1 & 0xF8000000;
++
++ handled = 0;
++
++ /* SUSpend Interrupt Request */
++ if (unlikely(udcir & UDCISR1_IRSU)) {
++ UDCISR1 = UDCISR1_IRSU;
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB suspend\n");
++ if (dev->gadget.speed != USB_SPEED_UNKNOWN
++ && dev->driver
++ && dev->driver->suspend)
++ dev->driver->suspend(&dev->gadget);
++ ep0_idle(dev);
++ }
++
++ /* RESume Interrupt Request */
++ if (unlikely(udcir & UDCISR1_IRRU)) {
++ UDCISR1 = UDCISR1_IRRU;
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB resume\n");
++
++ if (dev->gadget.speed != USB_SPEED_UNKNOWN
++ && dev->driver
++ && dev->driver->resume)
++ dev->driver->resume(&dev->gadget);
++ }
++
++ if (unlikely(udcir & UDCISR1_IRCC)) {
++ unsigned config, interface, alternate;
++
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB SET_CONFIGURATION or "
++ "SET_INTERFACE command received\n");
++
++ config = (UDCCR & UDCCR_ACN) >> UDCCR_ACN_S;
++
++ if (dev->configuration != config) {
++ dev->configuration = config;
++ pxa27x_change_configuration(dev) ;
++ }
++
++ interface = (UDCCR & UDCCR_AIN) >> UDCCR_AIN_S;
++ alternate = (UDCCR & UDCCR_AAISN) >> UDCCR_AAISN_S;
++
++ if ((dev->interface != interface) || (dev->alternate != alternate)) {
++ dev->interface = interface;
++ dev->alternate = alternate;
++ pxa27x_change_interface(dev);
++ }
++
++ UDCCR |= UDCCR_SMAC;
++
++ UDCISR1 = UDCISR1_IRCC;
++ DMSG("%s: con:%d,inter:%d,alt:%d\n",
++ __FUNCTION__, config,interface, alternate);
++ }
++
++ /* ReSeT Interrupt Request - USB reset */
++ if (unlikely(udcir & UDCISR1_IRRS)) {
++ UDCISR1 = UDCISR1_IRRS;
++ handled = 1;
++
++ if ((UDCCR & UDCCR_UDA) == 0) {
++ DBG(DBG_VERBOSE, "USB reset start\n");
++
++ /* reset driver and endpoints,
++ * in case that's not yet done
++ */
++ stop_activity(dev, dev->driver);
++ }
++ INFO("USB reset\n");
++ dev->gadget.speed = USB_SPEED_FULL;
++ memset(&dev->stats, 0, sizeof dev->stats);
++
++ } else {
++ u32 udcisr0 = UDCISR0 ;
++ u32 udcisr1 = UDCISR1 & 0xFFFF;
++ int i;
++
++ if (unlikely (!udcisr0 && !udcisr1))
++ continue;
++
++ DBG(DBG_VERY_NOISY, "irq %02x.%02x\n", udcisr1,udcisr0);
++
++ /* control traffic */
++ if (udcisr0 & UDCISR0_IR0) {
++ dev->ep[0].pio_irqs++;
++ handle_ep0(dev);
++ handled = 1;
++ }
++
++ udcisr0 >>= 2;
++ /* endpoint data transfers */
++ for (i = 1; udcisr0!=0 && i < 16; udcisr0>>=2,i++) {
++ UDCISR0 = UDCISR_INT(i, UDCISR_INT_MASK);
++
++ if (udcisr0 & UDC_INT_FIFOERROR)
++ dev_err(dev->dev, " Endpoint %d Fifo error\n", i);
++ if (udcisr0 & UDC_INT_PACKETCMP) {
++ handle_ep(&dev->ep[i]);
++ handled = 1;
++ }
++
++ }
++
++ for (i = 0; udcisr1!=0 && i < 8; udcisr1 >>= 2, i++) {
++ UDCISR1 = UDCISR_INT(i, UDCISR_INT_MASK);
++
++ if (udcisr1 & UDC_INT_FIFOERROR) {
++ dev_err(dev->dev, "Endpoint %d fifo error\n", (i+16));
++ }
++
++ if (udcisr1 & UDC_INT_PACKETCMP) {
++ handle_ep(&dev->ep[i+16]);
++ handled = 1;
++ }
++ }
++ }
++
++ /* we could also ask for 1 msec SOF (SIR) interrupts */
++
++ } while (handled);
++ return IRQ_HANDLED;
++}
++
++int write_ep0_zlp(void)
++{
++ UDCCSR0 = UDCCSR0_IPR;
++ return 0;
++}
++EXPORT_SYMBOL(write_ep0_zlp);
++
++static void udc_init_ep(struct pxa27x_udc *dev)
++{
++ int i;
++
++ INIT_LIST_HEAD(&dev->gadget.ep_list);
++ INIT_LIST_HEAD(&dev->gadget.ep0->ep_list);
++
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->dma = -1;
++ if (i != 0) {
++ memset(ep, 0, sizeof(*ep));
++ }
++ INIT_LIST_HEAD(&ep->queue);
++ }
++}
++
++/*-------------------------------------------------------------------------*/
++
++static void nop_release(struct device *dev)
++{
++ DMSG("%s %s\n", __FUNCTION__, dev->bus_id);
++}
++
++/* this uses load-time allocation and initialization (instead of
++ * doing it at run-time) to save code, eliminate fault paths, and
++ * be more obviously correct.
++ */
++
++static struct pxa27x_udc memory = {
++ .gadget = {
++ .ops = &pxa27x_udc_ops,
++ .ep0 = &memory.virt_ep0.usb_ep,
++ .name = driver_name,
++ .dev = {
++ .bus_id = "gadget",
++ .release = nop_release,
++ },
++ },
++
++ /* control endpoint */
++ .virt_ep0 = {
++ .pxa_ep = &memory.ep[0],
++ .usb_ep = {
++ .name = ep0name,
++ .ops = &pxa27x_ep_ops,
++ .maxpacket = EP0_FIFO_SIZE,
++ },
++ },
++
++ .ep[0] = {
++ .usb_ep = &memory.virt_ep0.usb_ep,
++ .dev = &memory,
++ .reg_udccsr = &UDCCSR0,
++ .reg_udcdr = &UDCDR0,
++ },
++};
++
++static int __init pxa27x_udc_probe(struct platform_device *_dev)
++{
++ struct pxa27x_udc *dev = &memory;
++ int retval;
++
++ /* other non-static parts of init */
++ dev->dev = &_dev->dev;
++ dev->mach = _dev->dev.platform_data;
++
++ /* RPFIXME */
++ UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE;
++
++ init_timer(&dev->timer);
++ dev->timer.function = udc_watchdog;
++ dev->timer.data = (unsigned long) dev;
++
++ device_initialize(&dev->gadget.dev);
++ dev->gadget.dev.parent = &_dev->dev;
++ dev->gadget.dev.dma_mask = _dev->dev.dma_mask;
++
++ the_controller = dev;
++ platform_set_drvdata(_dev, dev);
++
++ udc_disable(dev);
++ udc_init_ep(dev);
++ udc_reinit(dev);
++
++ /* irq setup after old hardware state is cleaned up */
++ retval = request_irq(IRQ_USB, pxa27x_udc_irq,
++ SA_INTERRUPT, driver_name, dev);
++ if (retval != 0) {
++ dev_err(dev->dev, "%s: can't get irq %i, err %d\n",
++ driver_name, IRQ_USB, retval);
++ return -EBUSY;
++ }
++ dev->got_irq = 1;
++
++ create_proc_files();
++
++ return 0;
++}
++
++static int pxa27x_udc_remove(struct platform_device *_dev)
++{
++ struct pxa27x_udc *dev = platform_get_drvdata(_dev);
++
++ udc_disable(dev);
++ remove_proc_files();
++ usb_gadget_unregister_driver(dev->driver);
++
++ pxa27x_ep_freeall(&dev->gadget);
++
++ if (dev->got_irq) {
++ free_irq(IRQ_USB, dev);
++ dev->got_irq = 0;
++ }
++ platform_set_drvdata(_dev, 0);
++ the_controller = 0;
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static void pxa27x_udc_shutdown(struct platform_device *_dev)
++{
++ struct pxa27x_udc *dev = platform_get_drvdata(_dev);
++
++ udc_disable(dev);
++}
++
++static int pxa27x_udc_suspend(struct platform_device *_dev, pm_message_t state)
++{
++ int i;
++ struct pxa27x_udc *dev = platform_get_drvdata(_dev);
++
++ DMSG("%s is called\n", __FUNCTION__);
++
++ dev->udccsr0 = UDCCSR0;
++ for(i=1; (i<UDC_EP_NUM); i++) {
++ if (dev->ep[i].assigned) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++ ep->udccsr_value = *ep->reg_udccsr;
++ ep->udccr_value = *ep->reg_udccr;
++ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n",
++ i, *ep->reg_udccsr, *ep->reg_udccr);
++ }
++ }
++
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++ pxa_set_cken(CKEN11_USB, 0);
++
++ return 0;
++}
++
++static int pxa27x_udc_resume(struct platform_device *_dev)
++{
++ int i;
++ struct pxa27x_udc *dev = platform_get_drvdata(_dev);
++
++ DMSG("%s is called\n", __FUNCTION__);
++ UDCCSR0 = dev->udccsr0 & (UDCCSR0_FST | UDCCSR0_DME);
++ for (i=1; i < UDC_EP_NUM; i++) {
++ if (dev->ep[i].assigned) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++ *ep->reg_udccsr = ep->udccsr_value;
++ *ep->reg_udccr = ep->udccr_value;
++ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n",
++ i, *ep->reg_udccsr, *ep->reg_udccr);
++ }
++ }
++
++ udc_enable(dev);
++
++ /* OTGPH bit is set when sleep mode is entered.
++ * it indicates that OTG pad is retaining its state.
++ * Upon exit from sleep mode and before clearing OTGPH,
++ * Software must configure the USB OTG pad, UDC, and UHC
++ * to the state they were in before entering sleep mode.*/
++ PSSR |= PSSR_OTGPH;
++
++ return 0;
++}
++#endif
++
++/*-------------------------------------------------------------------------*/
++
++static struct platform_driver udc_driver = {
++ .driver = {
++ .name = "pxa2xx-udc",
++ },
++ .probe = pxa27x_udc_probe,
++ .remove = pxa27x_udc_remove,
++#ifdef CONFIG_PM
++ .shutdown = pxa27x_udc_shutdown,
++ .suspend = pxa27x_udc_suspend,
++ .resume = pxa27x_udc_resume
++#endif
++};
++
++static int __init udc_init(void)
++{
++ printk(KERN_INFO "%s: version %s\n", driver_name, DRIVER_VERSION);
++ return platform_driver_register(&udc_driver);
++}
++module_init(udc_init);
++
++static void __exit udc_exit(void)
++{
++ platform_driver_unregister(&udc_driver);
++}
++module_exit(udc_exit);
++
++MODULE_DESCRIPTION(DRIVER_DESC);
++MODULE_AUTHOR("Frank Becker, Robert Schwebel, David Brownell");
++MODULE_LICENSE("GPL");
+Index: git/drivers/usb/gadget/pxa27x_udc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/drivers/usb/gadget/pxa27x_udc.h 2006-12-16 22:57:15.000000000 +0000
+@@ -0,0 +1,298 @@
++/*
++ * linux/drivers/usb/gadget/pxa27x_udc.h
++ * Intel PXA27x on-chip full speed USB device controller
++ *
++ * Copyright (C) 2003 Robert Schwebel <r.schwebel@pengutronix.de>, Pengutronix
++ * Copyright (C) 2003 David Brownell
++ * Copyright (C) 2004 Intel Corporation
++ *
++ * 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 __LINUX_USB_GADGET_PXA27X_H
++#define __LINUX_USB_GADGET_PXA27X_H
++
++#include <linux/types.h>
++
++struct pxa27x_udc;
++
++struct pxa27x_ep {
++ struct pxa27x_udc *dev;
++ struct usb_ep *usb_ep;
++ const struct usb_endpoint_descriptor *desc;
++
++ struct list_head queue;
++ unsigned long pio_irqs;
++ unsigned long dma_irqs;
++
++ unsigned pxa_ep_num;
++ int dma;
++ unsigned fifo_size;
++ unsigned ep_type;
++
++ unsigned stopped : 1;
++ unsigned dma_con : 1;
++ unsigned dir_in : 1;
++ unsigned assigned : 1;
++
++ unsigned ep_num;
++ unsigned config;
++ unsigned interface;
++ unsigned aisn;
++ /* UDCCSR = UDC Control/Status Register for this EP
++ * UBCR = UDC Byte Count Remaining (contents of OUT fifo)
++ * UDCDR = UDC Endpoint Data Register (the fifo)
++ * UDCCR = UDC Endpoint Configuration Registers
++ * DRCM = DMA Request Channel Map
++ */
++ volatile u32 *reg_udccsr;
++ volatile u32 *reg_udcbcr;
++ volatile u32 *reg_udcdr;
++ volatile u32 *reg_udccr;
++#ifdef USE_DMA
++ volatile u32 *reg_drcmr;
++#define drcmr(n) .reg_drcmr = & DRCMR ## n ,
++#else
++#define drcmr(n)
++#endif
++
++#ifdef CONFIG_PM
++ unsigned udccsr_value;
++ unsigned udccr_value;
++#endif
++};
++
++struct pxa27x_virt_ep {
++ struct usb_ep usb_ep;
++ const struct usb_endpoint_descriptor *desc;
++ struct pxa27x_ep *pxa_ep;
++};
++
++struct pxa27x_request {
++ struct usb_request req;
++ struct list_head queue;
++};
++
++enum ep0_state {
++ EP0_IDLE,
++ EP0_IN_DATA_PHASE,
++ EP0_OUT_DATA_PHASE,
++// EP0_END_XFER,
++ EP0_STALL,
++ EP0_NO_ACTION
++};
++
++#define EP0_FIFO_SIZE ((unsigned)16)
++#define BULK_FIFO_SIZE ((unsigned)64)
++#define ISO_FIFO_SIZE ((unsigned)256)
++#define INT_FIFO_SIZE ((unsigned)8)
++
++struct udc_stats {
++ struct ep0stats {
++ unsigned long ops;
++ unsigned long bytes;
++ } read, write;
++ unsigned long irqs;
++};
++
++#define UDC_EP_NUM 24
++
++
++struct pxa27x_udc {
++ struct usb_gadget gadget;
++ struct usb_gadget_driver *driver;
++
++ enum ep0_state ep0state;
++ struct udc_stats stats;
++ unsigned got_irq : 1,
++ has_cfr : 1,
++ req_pending : 1,
++ req_std : 1,
++ req_config : 1;
++
++#define start_watchdog(dev) mod_timer(&dev->timer, jiffies + (HZ/200))
++ struct timer_list timer;
++
++ struct device *dev;
++ struct pxa2xx_udc_mach_info *mach;
++ u64 dma_mask;
++ struct pxa27x_virt_ep virt_ep0;
++ struct pxa27x_ep ep[UDC_EP_NUM];
++ unsigned int ep_num;
++
++ unsigned configuration,
++ interface,
++ alternate;
++#ifdef CONFIG_PM
++ unsigned udccsr0;
++#endif
++};
++
++static struct pxa27x_udc *the_controller;
++
++#if 0
++/*-------------------------------------------------------------------------*/
++
++
++/* one GPIO should be used to detect host disconnect */
++static inline int is_usb_connected(void)
++{
++ if (!the_controller->mach->udc_is_connected)
++ return 1;
++ return the_controller->mach->udc_is_connected();
++}
++
++/* one GPIO should force the host to see this device (or not) */
++static inline void make_usb_disappear(void)
++{
++ if (!the_controller->mach->udc_command)
++ return;
++ the_controller->mach->udc_command(PXA27X_UDC_CMD_DISCONNECT);
++}
++
++static inline void let_usb_appear(void)
++{
++ if (!the_controller->mach->udc_command)
++ return;
++ the_controller->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
++}
++#endif
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * Debugging support vanishes in non-debug builds. DBG_NORMAL should be
++ * mostly silent during normal use/testing, with no timing side-effects.
++ */
++#define DBG_NORMAL 1 /* error paths, device state transitions */
++#define DBG_VERBOSE 2 /* add some success path trace info */
++#define DBG_NOISY 3 /* ... even more: request level */
++#define DBG_VERY_NOISY 4 /* ... even more: packet level */
++
++#ifdef DEBUG
++static const char *state_name[] = {
++ "EP0_IDLE",
++ "EP0_IN_DATA_PHASE", "EP0_OUT_DATA_PHASE",
++ "EP0_END_XFER", "EP0_STALL"
++};
++
++#define DMSG(stuff...) printk(KERN_ERR "udc: " stuff)
++
++#ifdef VERBOSE
++# define UDC_DEBUG DBG_VERBOSE
++#else
++# define UDC_DEBUG DBG_NORMAL
++#endif
++
++static void __attribute__ ((__unused__))
++dump_udccr(const char *label)
++{
++ u32 udccr = UDCCR;
++ DMSG("%s 0x%08x =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n",
++ label, udccr,
++ (udccr & UDCCR_OEN) ? " oen":"",
++ (udccr & UDCCR_AALTHNP) ? " aalthnp":"",
++ (udccr & UDCCR_AHNP) ? " rem" : "",
++ (udccr & UDCCR_BHNP) ? " rstir" : "",
++ (udccr & UDCCR_DWRE) ? " dwre" : "",
++ (udccr & UDCCR_SMAC) ? " smac" : "",
++ (udccr & UDCCR_EMCE) ? " emce" : "",
++ (udccr & UDCCR_UDR) ? " udr" : "",
++ (udccr & UDCCR_UDA) ? " uda" : "",
++ (udccr & UDCCR_UDE) ? " ude" : "",
++ (udccr & UDCCR_ACN) >> UDCCR_ACN_S,
++ (udccr & UDCCR_AIN) >> UDCCR_AIN_S,
++ (udccr & UDCCR_AAISN)>> UDCCR_AAISN_S );
++}
++
++static void __attribute__ ((__unused__))
++dump_udccsr0(const char *label)
++{
++ u32 udccsr0 = UDCCSR0;
++
++ DMSG("%s %s 0x%08x =%s%s%s%s%s%s%s\n",
++ label, state_name[the_controller->ep0state], udccsr0,
++ (udccsr0 & UDCCSR0_SA) ? " sa" : "",
++ (udccsr0 & UDCCSR0_RNE) ? " rne" : "",
++ (udccsr0 & UDCCSR0_FST) ? " fst" : "",
++ (udccsr0 & UDCCSR0_SST) ? " sst" : "",
++ (udccsr0 & UDCCSR0_DME) ? " dme" : "",
++ (udccsr0 & UDCCSR0_IPR) ? " ipr" : "",
++ (udccsr0 & UDCCSR0_OPC) ? " opr" : "");
++}
++
++static void __attribute__ ((__unused__))
++dump_state(struct pxa27x_udc *dev)
++{
++ unsigned i;
++
++ DMSG("%s, udcicr %02X.%02X, udcsir %02X.%02x, udcfnr %02X\n",
++ state_name[dev->ep0state],
++ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR);
++ dump_udccr("udccr");
++
++ if (!dev->driver) {
++ DMSG("no gadget driver bound\n");
++ return;
++ } else
++ DMSG("ep0 driver '%s'\n", dev->driver->driver.name);
++
++
++ dump_udccsr0 ("udccsr0");
++ DMSG("ep0 IN %lu/%lu, OUT %lu/%lu\n",
++ dev->stats.write.bytes, dev->stats.write.ops,
++ dev->stats.read.bytes, dev->stats.read.ops);
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if (dev->ep[i].assigned)
++ DMSG ("udccs%d = %02x\n", i, *dev->ep->reg_udccsr);
++ }
++}
++
++#if 0
++static void dump_regs(u8 ep)
++{
++ DMSG("EP:%d UDCCSR:0x%08x UDCBCR:0x%08x\n UDCCR:0x%08x\n",
++ ep,UDCCSN(ep), UDCBCN(ep), UDCCN(ep));
++}
++static void dump_req (struct pxa27x_request *req)
++{
++ struct usb_request *r = &req->req;
++
++ DMSG("%s: buf:0x%08x length:%d dma:0x%08x actual:%d\n",
++ __FUNCTION__, (unsigned)r->buf, r->length,
++ r->dma, r->actual);
++}
++#endif
++
++#else
++
++#define DMSG(stuff...) do{}while(0)
++
++#define dump_udccr(x) do{}while(0)
++#define dump_udccsr0(x) do{}while(0)
++#define dump_state(x) do{}while(0)
++
++#define UDC_DEBUG ((unsigned)4)
++
++#endif
++
++#define DBG(lvl, stuff...) do{if ((lvl) <= UDC_DEBUG) DMSG(stuff);}while(0)
++
++#define WARN(stuff...) printk(KERN_WARNING "udc: " stuff)
++#define INFO(stuff...) printk(KERN_INFO "udc: " stuff)
++
++
++#endif /* __LINUX_USB_GADGET_PXA27X_H */
+Index: git/drivers/usb/gadget/pxa2xx_udc.h
+===================================================================
+--- git.orig/drivers/usb/gadget/pxa2xx_udc.h 2006-12-16 22:57:10.000000000 +0000
++++ git/drivers/usb/gadget/pxa2xx_udc.h 2006-12-16 22:57:15.000000000 +0000
+@@ -259,7 +259,8 @@ dump_state(struct pxa2xx_udc *dev)
+ unsigned i;
+
+ DMSG("%s %s, uicr %02X.%02X, usir %02X.%02x, ufnr %02X.%02X\n",
+- is_usb_connected() ? "host " : "disconnected",
++ //is_usb_connected() ? "host " : "disconnected",
++ "host ",
+ state_name[dev->ep0state],
+ UICR1, UICR0, USIR1, USIR0, UFNRH, UFNRL);
+ dump_udccr("udccr");
+@@ -276,8 +277,8 @@ dump_state(struct pxa2xx_udc *dev)
+ } else
+ DMSG("ep0 driver '%s'\n", dev->driver->driver.name);
+
+- if (!is_usb_connected())
+- return;
++ //if (!is_usb_connected())
++ // return;
+
+ dump_udccs0 ("udccs0");
+ DMSG("ep0 IN %lu/%lu, OUT %lu/%lu\n",
+Index: git/drivers/usb/gadget/ether.c
+===================================================================
+--- git.orig/drivers/usb/gadget/ether.c 2006-12-16 22:57:14.000000000 +0000
++++ git/drivers/usb/gadget/ether.c 2006-12-16 22:57:15.000000000 +0000
+@@ -1264,6 +1264,10 @@
+ /* done sending after USB_CDC_GET_ENCAPSULATED_RESPONSE */
+ }
+
++#ifdef CONFIG_USB_GADGET_PXA27X
++int write_ep0_zlp(void);
++#endif
++
+ static void rndis_command_complete (struct usb_ep *ep, struct usb_request *req)
+ {
+ struct eth_dev *dev = ep->driver_data;
+@@ -1274,6 +1278,10 @@
+ status = rndis_msg_parser (dev->rndis_config, (u8 *) req->buf);
+ if (status < 0)
+ ERROR(dev, "%s: rndis parse error %d\n", __FUNCTION__, status);
++
++#ifdef CONFIG_USB_GADGET_PXA27X
++ write_ep0_zlp();
++#endif
+ spin_unlock(&dev->lock);
+ }
+
+@@ -2206,6 +2214,9 @@
+ #endif
+ #ifndef CONFIG_USB_ETH_RNDIS
+ rndis = 0;
++#ifdef CONFIG_USB_GADGET_PXA27X
++ ep_config[1].interface = 0;
++#endif
+ #endif
+
+ /* Because most host side USB stacks handle CDC Ethernet, that
diff --git a/packages/linux/logicpd-pxa270-2.6.19.2/xscale_cache_workaround-r1.patch b/packages/linux/logicpd-pxa270-2.6.19.2/xscale_cache_workaround-r1.patch
new file mode 100644
index 0000000000..21f15d8287
--- /dev/null
+++ b/packages/linux/logicpd-pxa270-2.6.19.2/xscale_cache_workaround-r1.patch
@@ -0,0 +1,93 @@
+If PG_dcache_dirty is set for a page, we need to flush the source page
+before performing any copypage operation using a different virtual address.
+
+This fixes the copypage implementations on XScale, StrongARM and ARMv6.
+
+This patch fixes segmentation faults seen in the dynamic linker under
+the usage patterns in glibc 2.4/2.5.
+
+Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+
+---
+ arch/arm/mm/copypage-v4mc.c | 6 ++++++
+ arch/arm/mm/copypage-v6.c | 4 ++++
+ arch/arm/mm/copypage-xscale.c | 6 ++++++
+ include/asm-arm/cacheflush.h | 2 ++
+ 4 files changed, 18 insertions(+)
+
+Index: git/arch/arm/mm/copypage-xscale.c
+===================================================================
+--- git.orig/arch/arm/mm/copypage-xscale.c 2006-12-30 15:04:19.000000000 +0000
++++ git/arch/arm/mm/copypage-xscale.c 2006-12-30 15:04:22.000000000 +0000
+@@ -19,6 +19,7 @@
+ #include <asm/page.h>
+ #include <asm/pgtable.h>
+ #include <asm/tlbflush.h>
++#include <asm/cacheflush.h>
+
+ #include "mm.h"
+
+@@ -91,6 +92,11 @@ mc_copy_user_page(void *from, void *to)
+
+ void xscale_mc_copy_user_page(void *kto, const void *kfrom, unsigned long vaddr)
+ {
++ struct page *page = virt_to_page(kfrom);
++
++ if (test_and_clear_bit(PG_dcache_dirty, &page->flags))
++ __flush_dcache_page(page_mapping(page), page);
++
+ spin_lock(&minicache_lock);
+
+ set_pte_ext(TOP_PTE(COPYPAGE_MINICACHE), pfn_pte(__pa(kfrom) >> PAGE_SHIFT, minicache_pgprot), 0);
+Index: git/arch/arm/mm/copypage-v4mc.c
+===================================================================
+--- git.orig/arch/arm/mm/copypage-v4mc.c 2006-12-30 15:04:19.000000000 +0000
++++ git/arch/arm/mm/copypage-v4mc.c 2006-12-30 15:04:22.000000000 +0000
+@@ -19,6 +19,7 @@
+ #include <asm/page.h>
+ #include <asm/pgtable.h>
+ #include <asm/tlbflush.h>
++#include <asm/cacheflush.h>
+
+ #include "mm.h"
+
+@@ -69,6 +70,11 @@ mc_copy_user_page(void *from, void *to)
+
+ void v4_mc_copy_user_page(void *kto, const void *kfrom, unsigned long vaddr)
+ {
++ struct page *page = virt_to_page(kfrom);
++
++ if (test_and_clear_bit(PG_dcache_dirty, &page->flags))
++ __flush_dcache_page(page_mapping(page), page);
++
+ spin_lock(&minicache_lock);
+
+ set_pte_ext(TOP_PTE(0xffff8000), pfn_pte(__pa(kfrom) >> PAGE_SHIFT, minicache_pgprot), 0);
+Index: git/arch/arm/mm/copypage-v6.c
+===================================================================
+--- git.orig/arch/arm/mm/copypage-v6.c 2006-12-30 15:04:19.000000000 +0000
++++ git/arch/arm/mm/copypage-v6.c 2006-12-30 15:04:22.000000000 +0000
+@@ -53,6 +53,10 @@ static void v6_copy_user_page_aliasing(v
+ {
+ unsigned int offset = CACHE_COLOUR(vaddr);
+ unsigned long from, to;
++ struct page *page = virt_to_page(kfrom);
++
++ if (test_and_clear_bit(PG_dcache_dirty, &page->flags))
++ __flush_dcache_page(page_mapping(page), page);
+
+ /*
+ * Discard data in the kernel mapping for the new page.
+Index: git/include/asm-arm/cacheflush.h
+===================================================================
+--- git.orig/include/asm-arm/cacheflush.h 2006-12-30 15:04:19.000000000 +0000
++++ git/include/asm-arm/cacheflush.h 2006-12-30 15:04:22.000000000 +0000
+@@ -355,6 +355,8 @@ extern void flush_ptrace_access(struct v
+ */
+ extern void flush_dcache_page(struct page *);
+
++extern void __flush_dcache_page(struct address_space *mapping, struct page *page);
++
+ #define flush_dcache_mmap_lock(mapping) \
+ write_lock_irq(&(mapping)->tree_lock)
+ #define flush_dcache_mmap_unlock(mapping) \
diff --git a/packages/linux/logicpd-pxa270_2.6.19.2.bb b/packages/linux/logicpd-pxa270_2.6.19.2.bb
new file mode 100644
index 0000000000..283ebb1133
--- /dev/null
+++ b/packages/linux/logicpd-pxa270_2.6.19.2.bb
@@ -0,0 +1,60 @@
+SECTION = "kernel"
+DESCRIPTION = "Linux kernel for the LogicPD Zoom(PXA270 ref design)"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.2.tar.bz2 \
+ file://asoc-v0.12.4.patch;patch=1 \
+ file://pxafb_fix_params-r2.patch;patch=1 \
+ file://pxa_irda_susres_fix-r0.patch;patch=1 \
+ file://pxa_keys-r5.patch;patch=1 \
+ file://pxa_timerfix-r0.patch;patch=1 \
+ file://input_power-r6.patch;patch=1 \
+ file://pxa25x_cpufreq-r1.patch;patch=1 \
+ file://pm_changes-r1.patch;patch=1 \
+ file://usb_add_epalloc-r3.patch;patch=1 \
+ file://usb_pxa27x_udc-r3.patch;patch=1 \
+ file://kexec-arm-r3.patch;patch=1 \
+ file://pxa27x_overlay-r4.patch;patch=1 \
+ file://xscale_cache_workaround-r1.patch;patch=1 \
+ file://ucb1400-touchscreen.patch;patch=1 \
+ file://config-nr-tty-devices.patch;pnum=1;patch=1 \
+ "
+
+SRC_URI_append_logicpd-pxa270 = "\
+ file://logicpd-pxa270-cf-hack.patch;pnum=0;patch=1 \
+ file://logicpd-pxa270-flash.patch;pnum=0;patch=1 \
+ file://logicpd-pxa270-hardware-id-hack.patch;pnum=0;patch=1 \
+ file://logicpd-pxa270-smc91x.patch;pnum=0;patch=1 \
+ file://logicpd-pxa270-lcd-osd024ttea2.patch;pnum=0;patch=1 \
+ file://defconfig-logicpd-pxa270 \
+ "
+
+S = "${WORKDIR}/linux-2.6.19.2"
+
+COMPATIBLE_HOST = 'arm.*-linux'
+
+inherit kernel
+inherit package
+
+ARCH = "arm"
+KERNEL_IMAGETYPE = "zImage"
+
+FILES_kernel-image = ""
+
+do_configure_prepend() {
+# install -m 0644 ${S}/arch/arm/configs/lpd270_defconfig ${S}/.config
+ install -m 0644 ${WORKDIR}/defconfig-logicpd-pxa270 ${S}/.config
+
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
+
+COMPATIBLE_MACHINE = "logicpd-pxa270"
diff --git a/packages/linux/mx21ads-kernel_2.6.19rc6.bb b/packages/linux/mx21ads-kernel_2.6.19rc6.bb
index 09dc45f3bd..579bedd8d6 100644
--- a/packages/linux/mx21ads-kernel_2.6.19rc6.bb
+++ b/packages/linux/mx21ads-kernel_2.6.19rc6.bb
@@ -16,16 +16,11 @@ COMPATIBLE_HOST = 'arm.*-linux'
COMPATIBLE_MACHINE = "mx21ads"
inherit kernel
-inherit package
ARCH = "arm"
KERNEL_IMAGETYPE = "zImage"
RPROVIDES_kernel-image += "hostap-modules"
-# to get module dependencies working
-KERNEL_RELEASE = "2.6.19-rc6"
-
-
#CMDLINE_ROOT = "root=/dev/mtdblock4 rootfstype=jffs2 mem=32M@0x00000000"
#CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_CONSOLE}"
diff --git a/packages/linux/mx31ads-kernel_2.6.19rc6.bb b/packages/linux/mx31ads-kernel_2.6.19rc6.bb
index c6f76fee6f..b6ba6a65cd 100644
--- a/packages/linux/mx31ads-kernel_2.6.19rc6.bb
+++ b/packages/linux/mx31ads-kernel_2.6.19rc6.bb
@@ -16,23 +16,18 @@ COMPATIBLE_HOST = 'arm.*-linux'
COMPATIBLE_MACHINE = "mx31ads"
inherit kernel
-inherit package
ARCH = "arm"
KERNEL_IMAGETYPE = "zImage"
RPROVIDES_kernel-image += "hostap-modules"
-# to get module dependencies working
-KERNEL_RELEASE = "2.6.19-rc6"
-
-
#CMDLINE_ROOT = "root=/dev/mtdblock4 rootfstype=jffs2 mem=32M@0x00000000"
#CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_CONSOLE}"
do_configure_prepend() {
install -m 0644 ${WORKDIR}/imx31ads_defconfig ${S}/defconfig
- if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
+ if [ "${TARGET_OS}" = "linux-gnueabi" -o "${TARGET_OS}" = "linux-uclibcgnueabi" ]; then
echo "CONFIG_AEABI=y" >> ${S}/.config
echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
else
@@ -59,3 +54,5 @@ do_deploy() {
do_deploy[dirs] = "${S}"
addtask deploy before do_build after do_compile
+
+KERNEL_RELEASE = "2.6.19-rc6"
diff --git a/packages/linux/nslu2-kernel.inc b/packages/linux/nslu2-kernel.inc
deleted file mode 100644
index e5ed21f0a1..0000000000
--- a/packages/linux/nslu2-kernel.inc
+++ /dev/null
@@ -1,259 +0,0 @@
-# Standard definitions for any NSLU2 Linux kernel.
-# Include this file in a .bb which specifies, at least,
-# PN,PV,PR for the desired kernel
-#
-# Define the following *before* including this file as
-# required:
-#
-# N2K_PATCHES - full list of patches to apply, to add files
-# generate a patch against /dev/null
-# N2K_SUFFIX - the suffix to add after 'zImage-' in the
-# deploy/images directory, should identify the image config
-#
-# DEFAULT_PREFERENCE is set automagically in this file as
-# follows:
-#
-# 10 For *released* kernels
-# 8 For mm or ac patched versions of released kernels
-# 6 For rc patched kernels (release candidates)
-# 4 For mm or ac patched rc (release candidate) kernels
-# 2 For pre or bk versions
-# 0 For mm or ac patched pre or bk versions
-#
-# --------------------------------------------------------------
-#
-# Within this file bitbake variables local to the file are
-# named N2K_FOO
-#
-SECTION = "kernel"
-DESCRIPTION = "Linux kernel for the Linksys NSLU2 device"
-LICENSE = "GPL"
-
-DEPENDS += "devio-native"
-
-# Linux kernel source has the general form linux-X.Y.Z-patchP,
-# X.Y is the major version number, Z (which may have multiple
-# parts) is a sub-version and 'patch' is something like 'mm' or
-# 'ac' with a patch version. The original bz2 archive will be
-# in a directory/file vX.Y/linux-X.Y.Z.tar.bz2. The unpacked
-# source will be in the directory linux-X.Y.Z and this directory
-# name corresponds to the module directory (in /lib/modules).
-#
-# The corresponding .bb file should be called:
-#
-# package_X.Y.Z-patchP
-#
-# Giving PN=package PV=X.Y.Z-patchP (and PR is set in the .bb
-# file). Files, including the all important defconfig, are
-# searched for in the following directories (last one first):
-#
-# nslu2-kernel/files
-# nslu2-kernel/X.Y
-# nslu2-kernel/X.Y.Z
-# nslu2-kernel/X.Y.Z-patch
-# nslu2-kernel/X.Y.Z-patchP
-# package-X.Y.Z-patchP
-#
-# This allows sharing of patch files and other useful source!
-# To share a file or patch with an earlier version put it in
-# the shared directory - e.g. to use foo.patch on 2.6.11.2 and
-# 2.6.11.4 it should be in directory nslu2-kernel/2.6.11.
-#
-# Note that when there are multiple patches the X.Y.Z-patch form
-# uses base-patch (e.g. 2.6.12-mm) whereas X.Y.Z-patchP has the
-# full form, for example 2.6.12-rc3-mm1 (in the same case).
-
-#PN=package-name
-#PV=package-version (full)
-
-# The patch has the general form (rcN|preN|acN|mmN|bkN)* with the
-# separate patch items being separated by '-' characters. The
-# rc patch is first and has the important property that it
-# requires the *preceding* kernel base version and that this
-# will be the source directory name.
-python () {
- # The patches list may be empty. This code starts with the base
- # kernel version and steps through the patches. Because the rc and
- # pre patches actually require the *preceding* kernel version the code
- # fixes that up appropriately.
- pv = bb.data.getVar("PV",d,1).split('-')
- kernel = pv[0].split('.')
- base = pv[0]
- name = [base]
- major = '.'.join(name[0].split('.')[0:2])
- minor = '.'.join(name[0].split('.')[0:3])
- patch_uri = [ None ]
- filedir = "${FILE_DIRNAME}/nslu2-kernel/%s"
- # This entry will become the last one (everything is inserted before it)
- filepath = [ filedir % "files" ]
- pref = 10
- mmac = 0
- for patch in pv[1:]:
- name.append(patch)
- pname = '-'.join(name)
- if patch[0:2] == "rc" or patch[0:3] == "pre":
- patch_uri.append("${KERNELORG_MIRROR}/pub/linux/kernel/v%s/testing/patch-%s.bz2;patch=1;pname=%s" % (major, pname, pname))
- kernel[-1] = str(int(kernel[-1]) - 1)
- if patch[0:2] == "rc" and pref == 10:
- pref = 6
- filepath[0:0] = [ filedir % name[0] ]
- filepath[0:0] = [ filedir % (name[0] + "-rc") ]
- else:
- pref = 2
- elif patch[0:2] == "bk" or patch[0:3] == "git":
- patch_uri.append("${KERNELORG_MIRROR}/pub/linux/kernel/v%s/snapshots/patch-%s.bz2;patch=1;pname=%s" % (major, pname, pname))
- pref = 2
- elif patch[0:2] == "ac":
- patch_uri.append("${KERNELORG_MIRROR}/pub/linux/kernel/people/alan/linux-%s/%s/patch-%s" % (major, base, pname))
- mmac = 2
- filepath[0:0] = [ filedir % (name[0] + "-ac") ]
- elif patch[0:2] == "mm":
- patch_uri.append("${KERNELORG_MIRROR}/pub/linux/kernel/people/akpm/patches/%s/%s/%s/%s.bz2;patch=1;pname=%s" % (major, base, pname, pname, pname))
- mmac = 2
- filepath[0:0] = [ filedir % (name[0] + "-mm") ]
- else:
- raise bb.build.FuncFailed("nslu2-kernel: patch %s not recognized in %s" % (patch, '-'.join(pv)))
- filepath[0:0] = [ filedir % pname ]
- base = pname
-
- base = '.'.join(kernel)
- patch_uri[0] = "${KERNELORG_MIRROR}/pub/linux/kernel/v%s/linux-%s.tar.bz2" % (major, base)
- filepath[-1:-1] = [ filedir % base ]
- if base != minor:
- filepath[-1:-1] = [ filedir % minor ]
- filepath[-1:-1] = [ filedir % major ]
-
- bb.data.setVar("N2K_SRCMAJ", major, d)
- # bb.note("N2K_SRCMAJ := %s" % major)
- bb.data.setVar("N2K_SRCVER", base, d)
- # bb.note("N2K_SRCVER := %s" % base)
- bb.data.setVar("N2K_SRCURI", ' '.join(patch_uri), d)
- # bb.note("N2K_SRCURI := %s" % ' '.join(patch_uri))
- bb.data.setVar("N2K_FILESPATH", ':'.join(filepath), d)
- # bb.note("N2K_FILESPATH := %s" % ' '.join(filepath))
- bb.data.setVar("DEFAULT_PREFERENCE", pref-mmac, d)
- # bb.note("DEFAULT_PREFERENCE := %s" % (pref-mmac))
-}
-
-# FILESPATH: this list is in order last-searched-first, therefore
-# the first entry is the *latest* and/or most specific
-FILESPATH = "${FILE_DIRNAME}/${P}:${N2K_FILESPATH}"
-
-# The working directory will be the 'base' version (which may not be the
-# same as implied by the PV variable because it corresponds to the prior
-# minor version for rc and pre patched versions).
-S = "${WORKDIR}/linux-${N2K_SRCVER}"
-
-# N2K_PATCHES is the list of patches.
-N2K_PATCHES ?= ""
-
-# Image suffix - actually set in conf/machine/nslu2.conf as it is also
-# used by anything which needs to know the name of the generated image.
-# Should be overridden in the distro if patches or defconfig are changed.
-N2K_SUFFIX ?= "nslu2${ARCH_BYTE_SEX}"
-
-SRC_URI = "${N2K_SRCURI}"
-SRC_URI += "${N2K_PATCHES}"
-SRC_URI += "file://defconfig"
-
-COMPATIBLE_HOST = 'arm.*-linux'
-
-inherit kernel
-
-ARCH = "arm"
-KERNEL_IMAGETYPE = "zImage"
-# To specify the console set KERNEL_CONSOLE in the .bb file.
-# CMDLINE_ROOT contains the boot options, CMDLINE_KERNEL_OPTIONS
-# contains the things for a specific kernel.
-CMDLINE_KERNEL_OPTIONS ?= "reboot=s"
-CMDLINE_ROOT ?= "root=/dev/mtdblock4 rw rootfstype=jffs2 mem=32M@0x00000000 init=/linuxrc"
-# Add distro specific debug (or non-debug) options to this
-CMDLINE_DEBUG ?= ""
-CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_KERNEL_OPTIONS} ${CMDLINE_DEBUG} ${CMDLINE_CONSOLE}"
-
-# Set EXTRAVERSION and LOCALVERSION to "" so that the kernel version
-# remains pinned to the x.y.z form, also turn off the directory
-# printing which provides almost all the output of an incremental build.
-EXTRA_OEMAKE += "EXTRAVERSION="
-EXTRA_OEMAKE += "LOCALVERSION="
-EXTRA_OEMAKE += "MAKEFLAGS='--no-print-directory'"
-
-# Override KERNEL_RELEASE from kernel.bbclass to match:
-KERNEL_RELEASE = "${KERNEL_VERSION}"
-
-addtask unpacklocal before do_patch after do_unpack
-
-# NOTE: in MM kernel builds the config options (oldconfig, menuconfig
-# and so on) do not allow an option to be overridden, so the following
-# removes the options which must be changed.
-do_configure_prepend() {
- rm -f ${S}/.config
- echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >>'${S}/.config'
- if test '${ARCH_BYTE_SEX}' = be
- then
- echo 'CONFIG_CPU_BIG_ENDIAN=y' >>'${S}/.config'
- fi
- if test '${SLUGOS_IMAGESEX}' = big-endian
- then
- echo 'CONFIG_JFFS2_BIG_ENDIAN=y' >>'${S}/.config'
- fi
- if test '${SLUGOS_IMAGESEX}' = little-endian
- then
- echo 'CONFIG_JFFS2_LITTLE_ENDIAN=y' >>'${S}/.config'
- fi
- sed -e '/CONFIG_CPU_BIG_ENDIAN/d' -e '/CONFIG_CMDLINE=/d' \
- -e '/CONFIG_JFFS2_NATIVE_ENDIAN=/d' \
- -e '/CONFIG_JFFS2_BIG_ENDIAN=/d' \
- -e '/CONFIG_JFFS2_LITTLE_ENDIAN=/d' \
- '${WORKDIR}/defconfig' >>'${S}/.config'
- rm -rf ${S}/include/asm-arm/arch ${S}/include/asm-arm/proc \
- ${S}/include/asm-arm/.proc ${S}/include/asm-arm/.arch
-}
-
-# This function adds the required prefix to the image to deal with two
-# problems:
-#
-# 1) The machine type set by RedBoot is wrong - the type for an ixdp425, not an NSLU2
-# e3a01c02 e3811055
-# 2) For LE kernels it is necessary to prefix change-to-le code to the kernel image:
-# ee110f10 e3c00080 ee010f10
-# and to byte swap the (LE) image to match the BE flash layout
-#
-# The argument to the function is the destination directory
-redboot_fixup_armeb() {
- rm -f "$1".new
- devio '<<arch/${ARCH}/boot/${KERNEL_IMAGETYPE}' >"$1".new \
- 'wb 0xe3a01c02,4' \
- 'wb 0xe3811055,4' \
- 'cp$'
- mv "$1".new "$1"
-}
-
-redboot_fixup_arm() {
- rm -f "$1".new
- devio '<<arch/${ARCH}/boot/${KERNEL_IMAGETYPE}' >"$1".new \
- 'wb 0xe3a01c02,4' \
- 'wb 0xe3811055,4' \
- 'wb 0xee110f10,4' \
- 'wb 0xe3c00080,4' \
- 'wb 0xee010f10,4' \
- 'xp $,4' || {
- echo 'ERROR: arch/${ARCH}/boot/${KERNEL_IMAGETYPE}: failed to byteswap zImage' >&2
- return 1
- }
- mv "$1".new "$1"
-}
-
-do_install_append() {
- redboot_fixup '${STAGING_KERNEL_DIR}/${KERNEL_IMAGETYPE}'
-}
-
-do_deploy[dirs] = "${S}"
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- redboot_fixup '${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${N2K_SUFFIX}'
-}
-
-addtask deploy before do_build after do_compile
-
-COMPATIBLE_MACHINE = "nslu2"
diff --git a/packages/linux/nslu2-kernel/2.6.11-mm/bootramdisk.patch b/packages/linux/nslu2-kernel/2.6.11-mm/bootramdisk.patch
deleted file mode 100644
index c03a0d9cda..0000000000
--- a/packages/linux/nslu2-kernel/2.6.11-mm/bootramdisk.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- linux-2.6.11/arch/arm/kernel/setup.c.orig Mon Mar 7 09:41:40 2005
-+++ linux-2.6.11/arch/arm/kernel/setup.c Mon Mar 7 09:42:15 2005
-@@ -431,8 +431,10 @@
- rd_prompt = prompt;
- rd_doload = doload;
-
-+#if 0 /* rd_size is not exported by 2.6.11-mm1 */
- if (rd_sz)
- rd_size = rd_sz;
-+#endif
- #endif
- }
-
diff --git a/packages/linux/nslu2-kernel/2.6.11-mm/defconfig b/packages/linux/nslu2-kernel/2.6.11-mm/defconfig
deleted file mode 100644
index 7ca968ac66..0000000000
--- a/packages/linux/nslu2-kernel/2.6.11-mm/defconfig
+++ /dev/null
@@ -1,1204 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.11-mm4
-# Sat May 7 11:48:09 2005
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_IOMAP=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
-CONFIG_BROKEN_ON_SMP=y
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
-# CONFIG_IKCONFIG is not set
-CONFIG_EMBEDDED=y
-# CONFIG_KALLSYMS is not set
-# CONFIG_BASE_FULL is not set
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=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_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=1
-
-#
-# 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
-
-#
-# System Type
-#
-# 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_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-CONFIG_ARCH_IXP4XX=y
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 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_VERSATILE is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
-
-#
-# Intel IXP4xx Implementation Options
-#
-
-#
-# IXP4xx Platforms
-#
-# CONFIG_ARCH_AVILA is not set
-# CONFIG_ARCH_ADI_COYOTE is not set
-# CONFIG_ARCH_IXDP425 is not set
-# CONFIG_MACH_IXDPG425 is not set
-# CONFIG_MACH_IXDP465 is not set
-CONFIG_ARCH_NSLU2=y
-# CONFIG_ARCH_PRPMC1100 is not set
-# CONFIG_MACH_GTWX5715 is not set
-
-#
-# IXP4xx Options
-#
-CONFIG_IXP4XX_INDIRECT_PCI=y
-CONFIG_DMABOUNCE=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_MINICACHE=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_ARM_THUMB_INTERWORK is not set
-# CONFIG_ARCH_XSCALE is not set
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_XSCALE_PMU=y
-
-#
-# General setup
-#
-CONFIG_PCI=y
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_PCI_LEGACY_PROC is not set
-# CONFIG_PCI_NAMES is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# At least one math emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
-# CONFIG_PM is not set
-# CONFIG_PREEMPT is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="root=/dev/mtdblock4 rw rootfstype=jffs2 mem=32M@0x00000000 init=/linuxrc console=ttyS0,115200n8"
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT 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=y
-# 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 is not set
-# CONFIG_INFTL 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
-# CONFIG_MTD_XIP 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_EDB7312 is not set
-# CONFIG_MTD_PCI 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_BLKMTD 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
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD 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=m
-# 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=y
-CONFIG_BLK_DEV_RAM_COUNT=4
-CONFIG_BLK_DEV_RAM_SIZE=10240
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE 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_ATA_OVER_ETH is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-
-#
-# Networking support
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-# CONFIG_NETLINK_DEV is not set
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# 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_TUNNEL=m
-CONFIG_IP_TCPDIAG=m
-# CONFIG_IP_TCPDIAG_IPV6 is not set
-# CONFIG_IPV6 is not set
-# CONFIG_NETFILTER is not set
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP 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_LLC=m
-# CONFIG_LLC2 is not set
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-CONFIG_ATALK=m
-CONFIG_DEV_APPLETALK=y
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# 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
-# CONFIG_NET_CLS_ROUTE is not set
-
-#
-# Network testing
-#
-CONFIG_NET_PKTGEN=m
-# CONFIG_KGDBOE is not set
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_RX is not set
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-# 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 is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 is not set
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET 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_NET_VENDOR_3COM is not set
-# CONFIG_SMC91X 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 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_VIA_VELOCITY is not set
-# CONFIG_TIGON3 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=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# 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_HOSTAP 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 is not set
-# CONFIG_SLIP is not set
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-CONFIG_NETCONSOLE=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-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 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_ISCSI_IF is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ARCMSR 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 is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_FC is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-CONFIG_SCSI_QLA2XXX=y
-# CONFIG_SCSI_QLA21XX is not set
-# CONFIG_SCSI_QLA22XX is not set
-# CONFIG_SCSI_QLA2300 is not set
-# CONFIG_SCSI_QLA2322 is not set
-# CONFIG_SCSI_QLA6312 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
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-# CONFIG_INPUT 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 is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_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=16
-
-#
-# 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=y
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-# CONFIG_NVRAM is not set
-CONFIG_RTC=m
-# 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_IOP3XX is not set
-# CONFIG_I2C_ISA is not set
-CONFIG_I2C_IXP4XX=y
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_SCx200_ACB 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
-
-#
-# Hardware Sensors Chip support
-#
-CONFIG_I2C_SENSOR=y
-# 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_ASB100 is not set
-# CONFIG_SENSORS_DS1621 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_MAX1619 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-
-#
-# Other I2C Chip support
-#
-CONFIG_SENSORS_EEPROM=y
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
-CONFIG_SENSORS_X1205=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
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-# CONFIG_EXT2_FS_XATTR is not set
-CONFIG_EXT3_FS=m
-CONFIG_EXT3_FS_XATTR=y
-# CONFIG_EXT3_FS_POSIX_ACL is not set
-# CONFIG_EXT3_FS_SECURITY is not set
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=m
-CONFIG_REISER4_FS=m
-# CONFIG_REISER4_DEBUG is not set
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_REISERFS_FS_XATTR is not set
-# CONFIG_JFS_FS is not set
-
-#
-# XFS support
-#
-# CONFIG_XFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-
-#
-# Caches
-#
-# CONFIG_FSCACHE is not set
-# 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_DEVFS_FS is not set
-# CONFIG_DEVPTS_FS_XATTR is not set
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_XATTR is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_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_NAND is not set
-# CONFIG_JFFS2_FS_NOR_ECC 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_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V4 is not set
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_SUNRPC=m
-# 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=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR 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_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
-
-#
-# Graphics support
-#
-# CONFIG_FB is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# Misc devices
-#
-
-#
-# 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_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_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-
-#
-# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem
-#
-# CONFIG_USB_ACM is not set
-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_RW_DETECT 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
-
-#
-# USB Input Devices
-#
-# CONFIG_USB_HID is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-
-#
-# 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=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-
-#
-# USB Host-to-Host Cables
-#
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_GENESYS=y
-CONFIG_USB_NET1080=y
-CONFIG_USB_PL2301=y
-CONFIG_USB_KC2190=y
-
-#
-# Intelligent USB Devices/Gadgets
-#
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_ZAURUS=y
-CONFIG_USB_CDCETHER=y
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_AX8817X=y
-# CONFIG_USB_ZD1201 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_BELKIN=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=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_PL2303=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-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_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_TEST is not set
-
-#
-# USB ATM/DSL drivers
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME 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_HMAC=y
-# CONFIG_CRYPTO_NULL is not set
-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_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_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/nslu2-kernel/2.6.11-mm/reiser4.patch b/packages/linux/nslu2-kernel/2.6.11-mm/reiser4.patch
deleted file mode 100644
index b752ddac98..0000000000
--- a/packages/linux/nslu2-kernel/2.6.11-mm/reiser4.patch
+++ /dev/null
@@ -1,617 +0,0 @@
---- linux-2.6.11/.pc/reiser4/fs/reiser4/plugin/disk_format/disk_format40.c 2005-03-27 21:36:10.656270448 -0800
-+++ linux-2.6.11/fs/reiser4/plugin/disk_format/disk_format40.c 2005-03-27 23:39:18.967076480 -0800
-@@ -467,19 +467,15 @@
- return 0;
- }
-
--#define FORMAT40_ROOT_LOCALITY 41
--#define FORMAT40_ROOT_OBJECTID 42
-+#define FORMAT40_ROOT_LOCALITY 41ull
-+#define FORMAT40_ROOT_OBJECTID 42ull
-
- /* plugin->u.format.root_dir_key */
- reiser4_internal const reiser4_key *
- root_dir_key_format40(const struct super_block *super UNUSED_ARG)
- {
- static const reiser4_key FORMAT40_ROOT_DIR_KEY = {
-- .el = {{(FORMAT40_ROOT_LOCALITY << 4) | KEY_SD_MINOR},
--#if REISER4_LARGE_KEY
-- {0ull},
--#endif
-- {FORMAT40_ROOT_OBJECTID}, {0ull}}
-+ .el = { KEY_INIT(KEY_SD_MINOR,FORMAT40_ROOT_LOCALITY,0ull,0,FORMAT40_ROOT_OBJECTID,0ull) }
- };
-
- return &FORMAT40_ROOT_DIR_KEY;
---- linux-2.6.11/.pc/reiser4/fs/reiser4/plugin/disk_format/disk_format40.h 2005-03-27 21:24:00.618253096 -0800
-+++ linux-2.6.11/fs/reiser4/plugin/disk_format/disk_format40.h 2005-03-27 21:24:02.747929336 -0800
-@@ -49,7 +49,7 @@
- /* 70 */ d16 formatting_policy;
- /* 72 */ d64 flags;
- /* 72 */ char not_used[432];
--} format40_disk_super_block;
-+} PACKED64 format40_disk_super_block;
-
- /* format 40 specific part of reiser4_super_info_data */
- typedef struct format40_super_info {
---- linux-2.6.11/.pc/reiser4/fs/reiser4/plugin/file/invert.c 2005-03-27 21:24:00.625252032 -0800
-+++ linux-2.6.11/fs/reiser4/plugin/file/invert.c 2005-03-27 21:24:02.747929336 -0800
-@@ -240,14 +240,14 @@
- typedef struct flow_header {
- d32 fl_magic;
- d16 fl_nr; /* number of subfiles in the flow */
--};
-+} PACKED32;
-
- typedef struct subfile_header {
- d32 sh_magic; /* subfile magic */
- d16 sh_type; /* type of subfile: light-weight, ordinary, invert */
- d16 sh_arg_len; /* lenght of lookup argument (filename, key) */
- d32 sh_body_len; /* lenght of subfile body */
--};
-+} PACKED32;
-
- /* functions to get/set fields of flow header */
-
---- linux-2.6.11/.pc/reiser4/fs/reiser4/plugin/item/static_stat.c 2005-03-27 21:24:00.648248536 -0800
-+++ linux-2.6.11/fs/reiser4/plugin/item/static_stat.c 2005-03-27 21:34:27.331978128 -0800
-@@ -19,6 +19,38 @@
-
- /* see static_stat.h for explanation */
-
-+/* compile time verify of the data structure sizes and alignments */
-+static inline void
-+r4static_stat_verify(void)
-+{
-+ /* All these structures are PACKED, so the __alignof__ should
-+ * be 1. The sizes need to be correct as they map to disk
-+ * structures.
-+ */
-+ cassert(sizeof (reiser4_stat_data_base) == 2);
-+ /* cassert(sizeof (reiser4_light_weight_stat) == 16);
-+ * 14 bytes, comments in code do not take into account PACKED!
-+ */
-+ cassert(sizeof (reiser4_light_weight_stat) == 14);
-+ cassert(sizeof (reiser4_unix_stat) == 28);
-+ cassert(sizeof (reiser4_symlink_stat) == 0);
-+ cassert(sizeof (reiser4_plugin_slot) == 4);
-+ cassert(sizeof (reiser4_plugin_stat) == 2);
-+ cassert(sizeof (reiser4_flags_stat) == 4);
-+ /* cassert(sizeof (reiser4_capabilities_stat) == 16);
-+ * comments in the file look wrong - capabilities are 2 x d32
-+ * not 2 x d64 in the declaration.
-+ */
-+ cassert(sizeof (reiser4_capabilities_stat) == 8);
-+ cassert(sizeof (reiser4_cluster_stat) == 1);
-+ cassert(sizeof (reiser4_crypto_stat) == 2);
-+ /* cassert(sizeof (reiser4_large_times_stat) == 24);
-+ * should be 12 bytes - 3 x d32, probably a bug in the def in
-+ * the header file (meant to be 3 x d64?)
-+ */
-+ cassert(sizeof (reiser4_large_times_stat) == 12);
-+}
-+
- /* helper function used while we are dumping/loading inode/plugin state
- to/from the stat-data. */
-
---- linux-2.6.11/.pc/reiser4/fs/reiser4/plugin/item/acl.h 2005-03-27 21:24:00.629251424 -0800
-+++ linux-2.6.11/fs/reiser4/plugin/item/acl.h 2005-03-27 21:24:02.749929032 -0800
-@@ -26,7 +26,7 @@
- obj_key_id id;
- /* file name. Null terminated string. */
- d8 name[0];
--} directory_entry_format;
-+} PACKEDt(obj_key_id) directory_entry_format;
-
- void print_de(const char *prefix, coord_t * coord);
- int extract_key_de(const coord_t * coord, reiser4_key * key);
---- linux-2.6.11/.pc/reiser4/fs/reiser4/plugin/item/cde.h 2005-03-27 21:24:00.632250968 -0800
-+++ linux-2.6.11/fs/reiser4/plugin/item/cde.h 2005-03-27 21:24:02.750928880 -0800
-@@ -15,12 +15,12 @@
- typedef struct cde_unit_header {
- de_id hash;
- d16 offset;
--} cde_unit_header;
-+} PACKEDt2(de_id,d16) cde_unit_header;
-
- typedef struct cde_item_format {
- d16 num_of_entries;
- cde_unit_header entry[0];
--} cde_item_format;
-+} PACKEDt2(d16,cde_unit_header) cde_item_format;
-
- typedef struct cde_entry {
- const struct inode *dir;
---- linux-2.6.11/.pc/reiser4/fs/reiser4/plugin/item/extent.h 2005-03-27 21:32:13.758284416 -0800
-+++ linux-2.6.11/fs/reiser4/plugin/item/extent.h 2005-03-27 21:32:30.786695704 -0800
-@@ -7,7 +7,7 @@
- typedef struct {
- reiser4_dblock_nr start;
- reiser4_dblock_nr width;
--} reiser4_extent;
-+} PACKED64 reiser4_extent;
-
- typedef struct extent_stat {
- int unallocated_units;
---- linux-2.6.11/.pc/reiser4/fs/reiser4/plugin/item/internal.h 2005-03-27 21:33:08.971890672 -0800
-+++ linux-2.6.11/fs/reiser4/plugin/item/internal.h 2005-03-27 22:15:43.290575208 -0800
-@@ -13,7 +13,7 @@
- typedef struct internal_item_layout {
- /* 0 */ reiser4_dblock_nr pointer;
- /* 4 */
--} internal_item_layout;
-+} PACKED64 internal_item_layout;
-
- struct cut_list;
-
---- linux-2.6.11/.pc/reiser4/fs/reiser4/plugin/item/sde.h 2005-03-27 21:24:00.646248840 -0800
-+++ linux-2.6.11/fs/reiser4/plugin/item/sde.h 2005-03-27 21:24:02.750928880 -0800
-@@ -26,7 +26,7 @@
- obj_key_id id;
- /* file name. Null terminated string. */
- d8 name[0];
--} directory_entry_format;
-+} PACKEDt(obj_key_id) directory_entry_format;
-
- void print_de(const char *prefix, coord_t * coord);
- int extract_key_de(const coord_t * coord, reiser4_key * key);
---- linux-2.6.11/.pc/reiser4/fs/reiser4/plugin/node/node40.c 2005-03-27 21:24:00.654247624 -0800
-+++ linux-2.6.11/fs/reiser4/plugin/node/node40.c 2005-03-27 21:35:08.677692624 -0800
-@@ -32,6 +32,22 @@
- magic (32)
- flush_time (32)
- */
-+/* compile time verify of the data structure sizes and alignments */
-+static inline void
-+r4node40_stat_verify(void)
-+{
-+ /* The alignment of these structures is intended to be '1', but
-+ * it doesn't matter so long as the size is right.
-+ */
-+ cassert(sizeof (common_node_header) == 2);
-+ cassert(sizeof (node40_header) == 28);
-+#if REISER4_LARGE_KEY
-+ cassert(sizeof (item_header40) == 38);
-+#else
-+ cassert(sizeof (item_header40) == 30);
-+#endif
-+}
-+
- /* NIKITA-FIXME-HANS: I told you guys not less than 10 times to not call it r4fs. Change to "ReIs". */
- /* magic number that is stored in ->magic field of node header */
- static const __u32 REISER4_NODE_MAGIC = 0x52344653; /* (*(__u32 *)"R4FS"); */
---- linux-2.6.11/.pc/reiser4/fs/reiser4/plugin/node/node.h 2005-03-27 21:24:00.656247320 -0800
-+++ linux-2.6.11/fs/reiser4/plugin/node/node.h 2005-03-27 21:24:02.753928424 -0800
-@@ -250,7 +250,7 @@
- /* identifier of node plugin. Must be located at the very beginning
- of a node. */
- d16 plugin_id;
--} common_node_header;
-+} PACKED16 common_node_header;
-
- /* __REISER4_NODE_H__ */
- #endif
---- linux-2.6.11/.pc/reiser4/fs/reiser4/debug.c 2005-03-27 21:24:00.563261456 -0800
-+++ linux-2.6.11/fs/reiser4/debug.c 2005-03-27 23:27:58.569512632 -0800
-@@ -75,6 +75,72 @@
- va_list args;
-
- /*
-+ * this is here to make sure that we don't compile code which we
-+ * know a-priori will panic, or fail without panicing, since this
-+ * compiles first if you find a duplicate case label error then
-+ * you need to rewrite this code to match your compiler.
-+ */
-+ cassert(sizeof (d8) == 1);
-+ cassert(__alignof__ (d8) == 1);
-+ {
-+ struct {
-+ __u8 pad;
-+ d8 data;
-+ } PACKED8 test;
-+ cassert(sizeof test == 2);
-+ cassert(sizeof test.data == 1);
-+ cassert(__alignof__ test.data == 1);
-+ cassert(__alignof__ test == 1);
-+ }
-+ cassert(sizeof (d16) == 2);
-+ cassert(__alignof__ (d16) == 2);
-+ {
-+ struct {
-+ __u8 pad;
-+ d16 data;
-+ } PACKED16 test;
-+ cassert(sizeof test == 4);
-+ cassert(sizeof test.data == 2);
-+#if !__arm__
-+ cassert(__alignof__ test.data == 2);
-+#endif
-+ cassert(__alignof__ test == 2);
-+#if !__arm__
-+ cassert(test.data.datum - &test.pad == 2);
-+#endif
-+ }
-+ cassert(sizeof (d32) == 4);
-+ cassert(__alignof__ (d32) == 4);
-+ {
-+ struct {
-+ __u8 pad;
-+ d32 data;
-+ } PACKED32 test;
-+ cassert(sizeof test == 8);
-+ cassert(sizeof test.data == 4);
-+ cassert(__alignof__ test.data == 4);
-+ cassert(__alignof__ test == 4);
-+ cassert(test.data.datum - &test.pad == 4);
-+ }
-+ cassert(sizeof (d64) == 8);
-+ cassert(__alignof__ (d64) == 8);
-+ {
-+ struct {
-+ __u8 pad;
-+ d64 data;
-+ } PACKED64 test;
-+ cassert(sizeof test == 16);
-+ cassert(sizeof test.data == 8);
-+ cassert(__alignof__ test.data == 8);
-+ cassert(__alignof__ test == 8);
-+ cassert(test.data.datum - &test.pad == 8);
-+ }
-+
-+ /* This is just a test of a struct with a single d64 element. */
-+ cassert(sizeof (reiser4_dblock_nr) == 8);
-+ cassert(__alignof__(reiser4_dblock_nr) == 8);
-+
-+ /*
- * check for recursive panic.
- */
- if (in_panic == 0) {
---- linux-2.6.11/.pc/reiser4/fs/reiser4/flush_queue.c 2005-03-27 21:24:00.577259328 -0800
-+++ linux-2.6.11/fs/reiser4/flush_queue.c 2005-03-27 21:24:02.755928120 -0800
-@@ -447,7 +447,7 @@
-
- /* If all write requests registered in this "fq" are done we up
- * the semaphore. */
-- if (atomic_sub_and_test(bio->bi_vcnt, &fq->nr_submitted))
-+ if (atomic_sub_return(bio->bi_vcnt, &fq->nr_submitted) == 0)
- up(&fq->io_sem);
- }
-
---- linux-2.6.11/.pc/reiser4/fs/reiser4/key.c 2005-03-27 22:42:43.481268784 -0800
-+++ linux-2.6.11/fs/reiser4/key.c 2005-03-27 23:42:53.958392832 -0800
-@@ -13,10 +13,10 @@
- independent of key scheme. */
- static const reiser4_key MINIMAL_KEY = {
- .el = {
-- {0ull},
-- ON_LARGE_KEY({0ull},)
-- {0ull},
-- {0ull}
-+ {{0,0,0,0,0,0,0,0}},
-+ ON_LARGE_KEY({{0,0,0,0,0,0,0,0}},)
-+ {{0,0,0,0,0,0,0,0}},
-+ {{0,0,0,0,0,0,0,0}}
- }
- };
-
-@@ -24,10 +24,10 @@
- independent of key scheme. */
- static const reiser4_key MAXIMAL_KEY = {
- .el = {
-- {~0ull},
-- ON_LARGE_KEY({~0ull},)
-- {~0ull},
-- {~0ull}
-+ {{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}},
-+ ON_LARGE_KEY({{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}},)
-+ {{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}},
-+ {{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}}
- }
- };
-
---- linux-2.6.11/.pc/reiser4/fs/reiser4/safe_link.c 2005-03-27 21:24:00.677244128 -0800
-+++ linux-2.6.11/fs/reiser4/safe_link.c 2005-03-27 21:24:02.756927968 -0800
-@@ -61,7 +61,7 @@
- reiser4_key sdkey; /* key of stat-data for the file safe-link is
- * for */
- d64 size; /* size to which file should be truncated */
--} safelink_t;
-+} PACKEDt2(reiser4_key, d64) safelink_t;
-
- /*
- * locality where safe-link items are stored. Next to the objectid of root
---- linux-2.6.11/.pc/reiser4/fs/reiser4/status_flags.c 2005-03-27 21:24:00.682243368 -0800
-+++ linux-2.6.11/fs/reiser4/status_flags.c 2005-03-27 21:24:02.756927968 -0800
-@@ -153,6 +153,7 @@
- &statuspage->stacktrace[no])
-
- GETFRAME(0);
-+#ifndef __arm__
- GETFRAME(1);
- GETFRAME(2);
- GETFRAME(3);
-@@ -162,6 +163,7 @@
- GETFRAME(7);
- GETFRAME(8);
- GETFRAME(9);
-+#endif
-
- #undef GETFRAME
- #endif
---- linux-2.6.11/.pc/reiser4/fs/reiser4/dformat.h 2005-03-27 21:24:00.564261304 -0800
-+++ linux-2.6.11/fs/reiser4/dformat.h 2005-03-27 23:29:03.223683704 -0800
-@@ -28,43 +28,84 @@
-
- /* code on-disk data-types as structs with a single field
- to rely on compiler type-checking. Like include/asm-i386/page.h */
-+/* This code did not work on the arm with gcc 3.4.3 because the
-+ * arm has a minimum structure size of 4 - packed is necessary to
-+ * allow these types to be smaller than 4 - and because this version
-+ * of gcc 'loses' the alignment if the structure contains just one
-+ * element of alignment 8 (or probably any value greater than 4).
-+ * To fix this and to make the code much more portable all the basic
-+ * types are now just done as arrays of bytes - __u8.
-+ *
-+ * This is highly tricky, however the check code in debug.c should
-+ * fire a compile time assert if it goes wrong.
-+ */
-+#if __arm__
-+#define PACKED8 __attribute__ ((packed,aligned(1)))
-+/* Warning: the presence of the packed attribute here means that any
-+ * d16 in a structure so marked will lose its alignment. That doesn't
-+ * seem to matter because there don't seem to be any d16's with odd
-+ * structure offsets, but it might.
-+ */
-+#define PACKED16 __attribute__ ((packed,aligned(2)))
-+#define PACKED32 __attribute__ ((aligned(4)))
-+#define PACKED64 __attribute__ ((aligned(8)))
-+#else
-+#define PACKED8 __attribute__ ((aligned(1)))
-+#define PACKED16 __attribute__ ((aligned(2)))
-+#define PACKED32 __attribute__ ((aligned(4)))
-+#define PACKED64 __attribute__ ((aligned(8)))
-+#endif
- typedef struct d8 {
-- __u8 datum;
--} d8 __attribute__ ((aligned(1)));
-+ __u8 datum[1];
-+} PACKED8 d8;
- typedef struct d16 {
-- __u16 datum;
--} d16 __attribute__ ((aligned(2)));
-+ __u8 datum[2];
-+} PACKED16 d16;
- typedef struct d32 {
-- __u32 datum;
--} d32 __attribute__ ((aligned(4)));
-+ __u8 datum[4];
-+} PACKED32 d32;
- typedef struct d64 {
-- __u64 datum;
--} d64 __attribute__ ((aligned(8)));
-+ __u8 datum[8];
-+} PACKED64 d64;
-
-+#define PACKEDt(t) __attribute__ ((packed,aligned(__alignof__ (t)) ))
-+#define PACKEDt2(t1,t2) __attribute__ ((packed,aligned(\
-+ __alignof__ (t1) < __alignof__ (t2) ? __alignof__ (t2) : __alignof__ (t1) )))
- #define PACKED __attribute__((packed))
-
- static inline __u8
- d8tocpu(const d8 * ondisk /* on-disk value to convert */ )
- {
-- return ondisk->datum;
-+ return ondisk->datum[0];
- }
-
- static inline __u16
- d16tocpu(const d16 * ondisk /* on-disk value to convert */ )
- {
-- return __le16_to_cpu(get_unaligned(&ondisk->datum));
-+ return ondisk->datum[0] + (ondisk->datum[1] << 8);
- }
-
- static inline __u32
- d32tocpu(const d32 * ondisk /* on-disk value to convert */ )
- {
-- return __le32_to_cpu(get_unaligned(&ondisk->datum));
-+ return ondisk->datum[0] +
-+ (ondisk->datum[1] << 8) +
-+ (ondisk->datum[2] << 16) +
-+ (ondisk->datum[3] << 24);
- }
-
- static inline __u64
- d64tocpu(const d64 * ondisk /* on-disk value to convert */ )
- {
-- return __le64_to_cpu(get_unaligned(&ondisk->datum));
-+ __u32 low = ondisk->datum[0] +
-+ (ondisk->datum[1] << 8) +
-+ (ondisk->datum[2] << 16) +
-+ (ondisk->datum[3] << 24);
-+ __u64 high = ondisk->datum[4] +
-+ (ondisk->datum[5] << 8) +
-+ (ondisk->datum[6] << 16) +
-+ (ondisk->datum[7] << 24);
-+ return low + (high << 32);
- }
-
- static inline d8 *
-@@ -72,7 +113,7 @@
- d8 * ondisk /* result */ )
- {
- assert("nikita-1264", oncpu < 0x100);
-- put_unaligned(oncpu, &ondisk->datum);
-+ ondisk->datum[0] = oncpu;
- return ondisk;
- }
-
-@@ -81,7 +122,8 @@
- d16 * ondisk /* result */ )
- {
- assert("nikita-1265", oncpu < 0x10000);
-- put_unaligned(__cpu_to_le16(oncpu), &ondisk->datum);
-+ ondisk->datum[0] = oncpu;
-+ ondisk->datum[1] = oncpu >> 8;
- return ondisk;
- }
-
-@@ -89,15 +131,27 @@
- cputod32(__u32 oncpu /* CPU value to convert */ ,
- d32 * ondisk /* result */ )
- {
-- put_unaligned(__cpu_to_le32(oncpu), &ondisk->datum);
-+ ondisk->datum[0] = oncpu; oncpu >>= 8;
-+ ondisk->datum[1] = oncpu; oncpu >>= 8;
-+ ondisk->datum[2] = oncpu; oncpu >>= 8;
-+ ondisk->datum[3] = oncpu;
- return ondisk;
- }
-
- static inline d64 *
--cputod64(__u64 oncpu /* CPU value to convert */ ,
-+cputod64(__u64 oncpuIn /* CPU value to convert */ ,
- d64 * ondisk /* result */ )
- {
-- put_unaligned(__cpu_to_le64(oncpu), &ondisk->datum);
-+ __u32 oncpu = oncpuIn;
-+ ondisk->datum[0] = oncpu; oncpu >>= 8;
-+ ondisk->datum[1] = oncpu; oncpu >>= 8;
-+ ondisk->datum[2] = oncpu; oncpu >>= 8;
-+ ondisk->datum[3] = oncpu;
-+ oncpu = oncpuIn >> 32;
-+ ondisk->datum[4] = oncpu; oncpu >>= 8;
-+ ondisk->datum[5] = oncpu; oncpu >>= 8;
-+ ondisk->datum[6] = oncpu; oncpu >>= 8;
-+ ondisk->datum[7] = oncpu;
- return ondisk;
- }
-
-@@ -111,7 +165,7 @@
- /* data-type for block number on disk, disk format */
- union reiser4_dblock_nr {
- d64 blk;
--};
-+} PACKED64;
-
- static inline reiser4_block_nr
- dblock_to_cpu(const reiser4_dblock_nr * dblock)
-@@ -148,7 +202,7 @@
- char uuid[16]; /* unique id */
- char label[16]; /* filesystem label */
- d64 diskmap; /* location of the diskmap. 0 if not present */
--} reiser4_master_sb;
-+} PACKED64 reiser4_master_sb;
-
- /* __FS_REISER4_DFORMAT_H__ */
- #endif
---- linux-2.6.11/.pc/reiser4/fs/reiser4/kassign.h 2005-03-27 21:24:00.588257656 -0800
-+++ linux-2.6.11/fs/reiser4/kassign.h 2005-03-27 21:24:02.757927816 -0800
-@@ -46,7 +46,7 @@
- d8 locality[sizeof (__u64)];
- ON_LARGE_KEY(d8 ordering[sizeof (__u64)];)
- d8 objectid[sizeof (__u64)];
--} obj_key_id;
-+} PACKED8 obj_key_id;
-
- /* Information sufficient to uniquely identify directory entry within
- compressed directory item.
-@@ -57,7 +57,7 @@
- ON_LARGE_KEY(d8 ordering[sizeof (__u64)];)
- d8 objectid[sizeof (__u64)];
- d8 offset[sizeof (__u64)];
--} de_id;
-+} PACKED8 de_id;
-
- extern int inode_onwire_size(const struct inode *obj);
- extern char *build_inode_onwire(const struct inode *obj, char *area);
---- linux-2.6.11/.pc/reiser4/fs/reiser4/key.h 2005-03-27 21:24:00.591257200 -0800
-+++ linux-2.6.11/fs/reiser4/key.h 2005-03-27 23:41:07.744539792 -0800
-@@ -106,7 +106,7 @@
- union reiser4_key {
- d64 el[KEY_LAST_INDEX];
- int pad;
--};
-+} PACKED64;
-
- /* bitmasks showing where within reiser4_key particular key is
- stored. */
-@@ -138,6 +138,20 @@
- KEY_ORDERING_SHIFT = 0,
- } reiser4_key_field_shift;
-
-+/* initialise a key, this is a compile time constant initialiser expressed as
-+ * three or four (as appropriate) 8 byte initialisers, there are braces around
-+ * each 8 byte quantity but not around the whole initializer.
-+ */
-+#define KEY_INIT(type,loc,order,band,oid,off)\
-+{{ (0xf&(type))+(0xf0&((loc) << 4)), 0xff&((loc) >> 4), 0xff&((loc) >> 12), 0xff&((loc) >> 20),\
-+ 0xff&((loc) >> 28), 0xff&((loc) >> 36), 0xff&((loc) >> 44), 0xff&((loc) >> 52) }},\
-+ON_LARGE_KEY({{ 0xff&(order), 0xff&((order)>>8), 0xff&((order)>>16), 0xff&((order)>>24),\
-+ 0xff&((order)>>32), 0xff&((order)>>40), 0xff&((order)>>48), 0xff&((order)>>56) }},)\
-+{{ 0xff&(oid), 0xff&((oid)>>8), 0xff&((oid)>>16), 0xff&((oid)>>24),\
-+ 0xff&((oid)>>32), 0xff&((oid)>>40), 0xff&((oid)>>48), (0xf&((oid)>>56))+(0xf0&((band)<<4))}},\
-+{{ 0xff&(off), 0xff&((off)>>8), 0xff&((off)>>16), 0xff&((off)>>24),\
-+ 0xff&((off)>>32), 0xff&((off)>>40), 0xff&((off)>>48), 0xff&((off)>>56) }}
-+
- static inline __u64
- get_key_el(const reiser4_key * key, reiser4_key_field_index off)
- {
---- linux-2.6.11/.pc/reiser4/fs/reiser4/status_flags.h 2005-03-27 21:24:00.682243368 -0800
-+++ linux-2.6.11/fs/reiser4/status_flags.h 2005-03-27 21:24:02.758927664 -0800
-@@ -33,7 +33,7 @@
- last sector where io error happened if status is "io error encountered" */
- d64 stacktrace[10]; /* Last ten functional calls made (addresses)*/
- char texterror[REISER4_TEXTERROR_LEN]; /* Any error message if appropriate, otherwise filled with zeroes */
--};
-+} PACKED64;
-
- int reiser4_status_init(reiser4_block_nr block);
- int reiser4_status_query(u64 *status, u64 *extended);
---- linux-2.6.11/.pc/reiser4/fs/reiser4/wander.h 2005-03-27 21:24:00.709239264 -0800
-+++ linux-2.6.11/fs/reiser4/wander.h 2005-03-27 22:14:59.663207576 -0800
-@@ -19,7 +19,7 @@
- struct journal_header {
- /* last written transaction head location */
- d64 last_committed_tx;
--};
-+} PACKED64;
-
- typedef struct journal_location {
- reiser4_block_nr footer;
-@@ -46,7 +46,7 @@
- super block */
- d64 nr_files;
- d64 next_oid;
--};
-+} PACKED64;
-
- /* Each wander record (except the first one) has unified format with wander
- record header followed by an array of log entries */
-@@ -66,7 +66,7 @@
-
- /* number of previous block in commit */
- d64 next_block;
--};
-+} PACKED64;
-
- /* The first wander record (transaction head) of written transaction has the
- special format */
-@@ -98,7 +98,7 @@
- separately from super block */
- d64 nr_files;
- d64 next_oid;
--};
-+} PACKED64;
-
- /* A transaction gets written to disk as a set of wander records (each wander
- record size is fs block) */
-@@ -108,7 +108,7 @@
- struct wander_entry {
- d64 original; /* block original location */
- d64 wandered; /* block wandered location */
--};
-+} PACKED64;
-
- /* REISER4 JOURNAL WRITER FUNCTIONS */
-
diff --git a/packages/linux/nslu2-kernel/2.6.11-mm/x1205-rtc.c-mm.patch b/packages/linux/nslu2-kernel/2.6.11-mm/x1205-rtc.c-mm.patch
deleted file mode 100644
index 6ef6befd73..0000000000
--- a/packages/linux/nslu2-kernel/2.6.11-mm/x1205-rtc.c-mm.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- original/drivers/i2c/chips/x1205-rtc.c Sat Mar 5 23:41:12 2005
-+++ linux-2.6.11/drivers/i2c/chips/x1205-rtc.c Sat Mar 5 23:41:25 2005
-@@ -139,7 +139,6 @@
- };
-
- static struct i2c_client x1205_i2c_client = {
-- .id = I2C_DRIVERID_X1205,
- .flags = 0,
- .addr = X1205_I2C_BUS_ADDR, // chip address - NOTE: 7bit
- .adapter = NULL, // the adapter we sit on assigned in attach
-@@ -301,7 +300,6 @@
- int errno;
-
- x1205_i2c_client.adapter = adapter;
-- x1205_i2c_client.id++;
-
- if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) != NOERR) //test for functional driver
- return -EIO;
diff --git a/packages/linux/nslu2-kernel/2.6.12/defconfig b/packages/linux/nslu2-kernel/2.6.12/defconfig
deleted file mode 100644
index 9397245b99..0000000000
--- a/packages/linux/nslu2-kernel/2.6.12/defconfig
+++ /dev/null
@@ -1,1226 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.12
-# Sat Jun 18 17:17:09 2005
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_IOMAP=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
-# CONFIG_IKCONFIG is not set
-CONFIG_EMBEDDED=y
-# CONFIG_KALLSYMS is not set
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-# CONFIG_BASE_FULL is not set
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=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_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=1
-
-#
-# 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
-
-#
-# System Type
-#
-# 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_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-CONFIG_ARCH_IXP4XX=y
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 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_VERSATILE is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
-
-#
-# Intel IXP4xx Implementation Options
-#
-
-#
-# IXP4xx Platforms
-#
-# CONFIG_ARCH_AVILA is not set
-# CONFIG_ARCH_ADI_COYOTE is not set
-# CONFIG_ARCH_IXDP425 is not set
-# CONFIG_MACH_IXDPG425 is not set
-# CONFIG_MACH_IXDP465 is not set
-CONFIG_ARCH_NSLU2=y
-# CONFIG_ARCH_PRPMC1100 is not set
-# CONFIG_MACH_GTWX5715 is not set
-
-#
-# IXP4xx Options
-#
-CONFIG_IXP4XX_INDIRECT_PCI=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_ARM_THUMB_INTERWORK is not set
-# CONFIG_ARCH_XSCALE is not set
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_XSCALE_PMU=y
-CONFIG_DMABOUNCE=y
-
-#
-# Bus support
-#
-CONFIG_ISA_DMA_API=y
-CONFIG_PCI=y
-# CONFIG_PCI_LEGACY_PROC is not set
-# CONFIG_PCI_NAMES is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_SMP is not set
-# CONFIG_PREEMPT is not set
-# CONFIG_DISCONTIGMEM is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="root=/dev/mtdblock4 rw rootfstype=jffs2 mem=32M@0x00000000 init=/linuxrc 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_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
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER 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=y
-# 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 is not set
-# CONFIG_INFTL 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
-# CONFIG_MTD_XIP 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_EDB7312 is not set
-# CONFIG_MTD_PCI 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_BLKMTD 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
-
-#
-# 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 is not set
-# 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_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE 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_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-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 is not set
-# CONFIG_CHR_DEV_SG 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 is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# 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_SCSI_SATA is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_FC is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-CONFIG_SCSI_QLA2XXX=y
-# CONFIG_SCSI_QLA21XX is not set
-# CONFIG_SCSI_QLA22XX is not set
-# CONFIG_SCSI_QLA2300 is not set
-# CONFIG_SCSI_QLA2322 is not set
-# CONFIG_SCSI_QLA6312 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 is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Networking support
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# 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_TUNNEL=m
-CONFIG_IP_TCPDIAG=m
-# CONFIG_IP_TCPDIAG_IPV6 is not set
-# CONFIG_IPV6 is not set
-# CONFIG_NETFILTER is not set
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-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=y
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# 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
-# CONFIG_NET_CLS_ROUTE is not set
-
-#
-# Network testing
-#
-CONFIG_NET_PKTGEN=m
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_RX is not set
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-# 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 is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-# CONFIG_BT_HCIVHCI is not set
-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
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_SMC91X 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 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_IXGB is not set
-# CONFIG_S2IO is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# 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_NET_WIRELESS=y
-
-#
-# 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=m
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-# CONFIG_INPUT 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 is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_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=y
-CONFIG_LEGACY_PTY_COUNT=16
-
-#
-# 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=y
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-# CONFIG_NVRAM is not set
-CONFIG_RTC=m
-# 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 is not set
-CONFIG_I2C_IXP4XX=y
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_SCx200_ACB 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
-
-#
-# Hardware Sensors Chip support
-#
-CONFIG_I2C_SENSOR=y
-# 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_ASB100 is not set
-# CONFIG_SENSORS_DS1621 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_SMSC47B397 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-
-#
-# Other I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-CONFIG_SENSORS_EEPROM=y
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
-CONFIG_SENSORS_X1205=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
-
-#
-# Misc devices
-#
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-# CONFIG_FB 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_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_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-
-#
-# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem
-#
-# CONFIG_USB_ACM is not set
-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
-
-#
-# USB Input Devices
-#
-# CONFIG_USB_HID is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-
-#
-# 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=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-
-#
-# USB Host-to-Host Cables
-#
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_GENESYS=y
-CONFIG_USB_NET1080=y
-CONFIG_USB_PL2301=y
-CONFIG_USB_KC2190=y
-
-#
-# Intelligent USB Devices/Gadgets
-#
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_ZAURUS=y
-CONFIG_USB_CDCETHER=y
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_AX8817X=y
-# CONFIG_USB_ZD1201 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_AIRPRIME 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_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_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_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-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_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_TEST is not set
-
-#
-# USB ATM/DSL drivers
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC 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_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
-
-#
-# XFS support
-#
-# CONFIG_XFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_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_SYSFS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVPTS_FS_XATTR is not set
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_XATTR is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-
-#
-# 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_NAND is not set
-# CONFIG_JFFS2_FS_NOR_ECC 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_V4=y
-CONFIG_NFS_DIRECTIO=y
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-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_XATTR=y
-CONFIG_CIFS_POSIX=y
-# 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_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_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_HMAC=y
-# CONFIG_CRYPTO_NULL is not set
-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_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_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/nslu2-kernel/2.6.12/disk_led_blinking.patch b/packages/linux/nslu2-kernel/2.6.12/disk_led_blinking.patch
deleted file mode 100644
index 7487cf3ee8..0000000000
--- a/packages/linux/nslu2-kernel/2.6.12/disk_led_blinking.patch
+++ /dev/null
@@ -1,127 +0,0 @@
---- linux-2.6.12.2/drivers/usb/core/hub.c.bak 2005-09-19 20:29:14.000000000 +0000
-+++ linux-2.6.12.2/drivers/usb/core/hub.c 2005-09-19 20:30:44.000000000 +0000
-@@ -1026,6 +1026,19 @@
-
- dev_info (&udev->dev, "USB disconnect, address %d\n", udev->devnum);
-
-+ // --- Forward-Ported Linksys Disk 1 & Disk 2 LED Control (Port done 16.Sept.05 by Philipp Kirchhofer) ---
-+ // Copy & paste from nslu2-io.c
-+ #define DISK1_OFF 0x00000008 //0b0000 0000 0000 1000
-+ #define DISK2_OFF 0x00000004 //0b0000 0000 0000 0100
-+ // Copy & Paste end
-+
-+ if (*udev->devpath == 0x31) {
-+ *IXP4XX_GPIO_GPOUTR |= DISK1_OFF;
-+ } else if (*udev->devpath == 0x32) {
-+ *IXP4XX_GPIO_GPOUTR |= DISK2_OFF;
-+ }
-+ // --- End LED Control ---
-+
- /* Free up all the children before we remove this device */
- for (i = 0; i < USB_MAXCHILDREN; i++) {
- if (udev->children[i])
-@@ -2175,6 +2188,19 @@
- udev->bus->controller->driver->name,
- udev->devnum);
-
-+ // --- Start LED Control ---
-+ // Copy & paste from nslu2-io.c
-+ #define DISK1_ON 0xfffffff7 //0b1111 1111 1111 0111
-+ #define DISK2_ON 0xfffffffb //0b1111 1111 1111 1011
-+ // Copy & Paste end
-+
-+ if (*udev->devpath == 0x31) {
-+ *IXP4XX_GPIO_GPOUTR &= DISK1_ON;
-+ } else if (*udev->devpath == 0x32) {
-+ *IXP4XX_GPIO_GPOUTR &= DISK2_ON;
-+ }
-+ // --- End LED Control ---
-+
- /* Set up TT records, if needed */
- if (hdev->tt) {
- udev->tt = hdev->tt;
---- linux-2.6.12.2/drivers/usb/storage/transport.c.bak 2005-09-19 20:29:25.000000000 +0000
-+++ linux-2.6.12.2/drivers/usb/storage/transport.c 2005-09-19 20:29:55.000000000 +0000
-@@ -60,6 +60,60 @@
- #include "scsiglue.h"
- #include "debug.h"
-
-+// --- Forward-Ported Linksys Disk 1 & Disk 2 LED Activity Blinking Part 1 (Port done 16.Sept.05 by Philipp Kirchhofer) ---
-+// Copy & Paste from nslu2-io.c
-+#define DISK1_ON 0xfffffff7 //0b1111 1111 1111 0111
-+#define DISK2_ON 0xfffffffb //0b1111 1111 1111 1011
-+
-+#define DISK1_OFF 0x00000008 //0b0000 0000 0000 1000
-+#define DISK2_OFF 0x00000004 //0b0000 0000 0000 0100
-+// Copy & Paste End
-+
-+#define JIFFIES_BLINKING_TIME 6
-+#define ON_LED_INTERVAL 3
-+unsigned long turn_on_time;
-+
-+static struct timer_list usb1_led_timer; /* ide led switch */
-+static struct timer_list usb2_led_timer; /* ide led switch */
-+
-+// Turns on Disk 1 LED
-+static void turn_on_led_usb1(unsigned long ptr) {
-+ *IXP4XX_GPIO_GPOUTR &= DISK1_ON; // 0xfff7
-+ return;
-+}
-+
-+// Turns on Disk 2 LED
-+static void turn_on_led_usb2(unsigned long ptr) {
-+ *IXP4XX_GPIO_GPOUTR &= DISK2_ON; // 0xfffb
-+ return;
-+}
-+
-+// Turns on Disk 1 LED after ON_LED_INTERVAL jiffies
-+static void usb_1_led_timer(void) {
-+ usb1_led_timer.expires = jiffies + ON_LED_INTERVAL;
-+ add_timer(&usb1_led_timer);
-+ return;
-+}
-+
-+// Turns on Disk 2 LED after ON_LED_INTERVAL jiffies
-+static void usb_2_led_timer(void) {
-+ usb2_led_timer.expires = jiffies + ON_LED_INTERVAL;
-+ add_timer(&usb2_led_timer);
-+ return;
-+}
-+
-+// Initializes Timers
-+unsigned long initialized_timers = 0;
-+static void initializeTimers() {
-+ if (initialized_timers != 1) {
-+ init_timer(&usb1_led_timer);
-+ usb1_led_timer.function = turn_on_led_usb1;
-+ init_timer(&usb2_led_timer);
-+ usb2_led_timer.function = turn_on_led_usb2;
-+ initialized_timers = 1;
-+ }
-+}
-+// --- End Disk LED Activity Blinking Part 1 ---
-
- /***********************************************************************
- * Data transfer routines
-@@ -499,6 +553,21 @@
-
- /* are we scatter-gathering? */
- if (use_sg) {
-+ // --- Disk LED Activity Blinking Part 2 ---
-+ initializeTimers();
-+ if ((jiffies - turn_on_time) >= JIFFIES_BLINKING_TIME) {
-+ if (*us->pusb_dev->devpath == 0x31) {
-+ del_timer_sync(&usb1_led_timer);
-+ *IXP4XX_GPIO_GPOUTR |= DISK1_OFF;
-+ usb_1_led_timer();
-+ } else if (*us->pusb_dev->devpath == 0x32) {
-+ del_timer_sync(&usb2_led_timer);
-+ *IXP4XX_GPIO_GPOUTR |= DISK2_OFF;
-+ usb_2_led_timer();
-+ }
-+ turn_on_time = jiffies;
-+ }
-+ // --- End Disk LED Activity Blinking Part 2 ---
- /* use the usb core scatter-gather primitives */
- result = usb_stor_bulk_transfer_sglist(us, pipe,
- (struct scatterlist *) buf, use_sg,
diff --git a/packages/linux/nslu2-kernel/2.6.12/missing-exports.patch b/packages/linux/nslu2-kernel/2.6.12/missing-exports.patch
deleted file mode 100644
index 935dd29115..0000000000
--- a/packages/linux/nslu2-kernel/2.6.12/missing-exports.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- linux-2.6.12/drivers/char/random.c~ 2005-05-14 16:42:24.000000000 -0400
-+++ linux-2.6.12/drivers/char/random.c 2005-05-14 16:42:46.000000000 -0400
-@@ -646,6 +646,7 @@ extern void add_input_randomness(unsigne
- add_timer_randomness(&input_timer_state,
- (type << 4) ^ code ^ (code >> 4) ^ value);
- }
-+EXPORT_SYMBOL_GPL(add_input_randomness);
-
- void add_interrupt_randomness(int irq)
- {
---- linux-2.6.12/lib/kobject_uevent.c~ 2005-05-14 16:45:13.000000000 -0400
-+++ linux-2.6.12/lib/kobject_uevent.c 2005-05-14 16:45:27.000000000 -0400
-@@ -178,6 +178,7 @@ static inline int send_uevent(const char
-
- #ifdef CONFIG_HOTPLUG
- char hotplug_path[HOTPLUG_PATH_LEN] = "/sbin/hotplug";
-+EXPORT_SYMBOL_GPL(hotplug_path);
- u64 hotplug_seqnum;
- static DEFINE_SPINLOCK(sequence_lock);
diff --git a/packages/linux/nslu2-kernel/2.6.12/nslu2-arch.patch b/packages/linux/nslu2-kernel/2.6.12/nslu2-arch.patch
deleted file mode 100644
index 6a41f02355..0000000000
--- a/packages/linux/nslu2-kernel/2.6.12/nslu2-arch.patch
+++ /dev/null
@@ -1,92 +0,0 @@
---- linux-2.6.11/arch/arm/boot/compressed/head.S 2005-06-17 17:51:27.245788998 -0700
-+++ linux-2.6.11/arch/arm/boot/compressed/head.S 2005-06-17 17:54:45.041806429 -0700
-@@ -37,6 +37,7 @@
- defined(CONFIG_ARCH_INTEGRATOR) || \
- defined(CONFIG_ARCH_PXA) || \
- defined(CONFIG_ARCH_IXP4XX) || \
-+ defined(CONFIG_ARCH_NSLU2) || \
- defined(CONFIG_ARCH_IXP2000) || \
- defined(CONFIG_ARCH_LH7A40X) || \
- defined(CONFIG_ARCH_OMAP)
---- linux-2.6.11/.pc/2.6.patch/arch/arm/boot/compressed/head-xscale.S 2005-03-01 23:37:52.000000000 -0800
-+++ linux-2.6.11/arch/arm/boot/compressed/head-xscale.S 2005-06-17 17:51:32.546985425 -0700
-@@ -47,3 +47,8 @@
- orr r7, r7, #(MACH_TYPE_GTWX5715 & 0xff00)
- #endif
-
-+#ifdef CONFIG_ARCH_NSLU2
-+ mov r7, #(MACH_TYPE_NSLU2 & 0xff)
-+ orr r7, r7, #(MACH_TYPE_NSLU2 & 0xff00)
-+#endif
-+
---- linux-2.6.11/.pc/2.6.patch/arch/arm/mach-ixp4xx/Kconfig 2005-06-17 17:51:27.365770810 -0700
-+++ linux-2.6.11/arch/arm/mach-ixp4xx/Kconfig 2005-06-17 17:51:32.560983303 -0700
-@@ -43,6 +43,12 @@
- IXDP465 Development Platform (Also known as BMP).
- For more information on this platform, see <file:Documentation/arm/IXP4xx>.
-
-+config ARCH_NSLU2
-+ bool "NSLU2"
-+ help
-+ Say 'Y' here if you want your kernel to support Linksys's
-+ NSLU2 NAS device. For more information on this platform,
-+ see http://www.nslu2-linux.org
-
- #
- # IXCDP1100 is the exact same HW as IXDP425, but with a different machine
---- linux-2.6.11/.pc/2.6.patch/arch/arm/mach-ixp4xx/Makefile 2005-06-17 17:51:27.365770810 -0700
-+++ linux-2.6.11/arch/arm/mach-ixp4xx/Makefile 2005-06-17 17:51:32.560983303 -0700
-@@ -8,4 +8,4 @@
- obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o
- obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o
- obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o
--
-+obj-$(CONFIG_ARCH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-part.o nslu2-io.o
---- linux-2.6.11/.pc/2.6.patch/arch/arm/tools/mach-types 2005-06-17 17:51:27.423762020 -0700
-+++ linux-2.6.11/arch/arm/tools/mach-types 2005-06-17 17:51:32.564982697 -0700
-@@ -604,7 +604,7 @@
- roverp7 MACH_ROVERP7 ROVERP7 594
- pr818s MACH_PR818S PR818S 595
- trxpro MACH_TRXPRO TRXPRO 596
--nslu2 MACH_NSLU2 NSLU2 597
-+nslu2 ARCH_NSLU2 NSLU2 597
- e400 MACH_E400 E400 598
- trab MACH_TRAB TRAB 599
- cmc_pu2 MACH_CMC_PU2 CMC_PU2 600
---- linux-2.6.11/.pc/2.6.patch/drivers/mtd/maps/ixp4xx.c 2005-03-01 23:37:30.000000000 -0800
-+++ linux-2.6.11/drivers/mtd/maps/ixp4xx.c 2005-06-17 17:51:32.566982394 -0700
-@@ -94,7 +94,11 @@
- struct resource *res;
- };
-
-+#ifdef CONFIG_ARCH_NSLU2
-+static const char *probes[] = { "cmdlinepart", "RedBoot", "NSLU2", NULL };
-+#else
- static const char *probes[] = { "RedBoot", "cmdlinepart", NULL };
-+#endif
-
- static int ixp4xx_flash_remove(struct device *_dev)
- {
---- linux-2.6.11/.pc/2.6.patch/include/asm-arm/arch-ixp4xx/hardware.h 2005-03-01 23:37:51.000000000 -0800
-+++ linux-2.6.11/include/asm-arm/arch-ixp4xx/hardware.h 2005-06-17 17:51:32.567982242 -0700
-@@ -44,5 +44,6 @@
- #include "ixdp425.h"
- #include "coyote.h"
- #include "prpmc1100.h"
-+#include "nslu2.h"
-
- #endif /* _ASM_ARCH_HARDWARE_H */
---- linux-2.6.11/.pc/2.6.patch/include/asm-arm/arch-ixp4xx/irqs.h 2005-03-01 23:38:12.000000000 -0800
-+++ linux-2.6.11/include/asm-arm/arch-ixp4xx/irqs.h 2005-06-17 17:51:32.568982091 -0700
-@@ -93,4 +93,11 @@
- #define IRQ_COYOTE_PCI_SLOT1 IRQ_IXP4XX_GPIO11
- #define IRQ_COYOTE_IDE IRQ_IXP4XX_GPIO5
-
-+/*
-+ * NSLU2 board IRQs
-+ */
-+#define IRQ_NSLU2_PCI_INTA IRQ_IXP4XX_GPIO11
-+#define IRQ_NSLU2_PCI_INTB IRQ_IXP4XX_GPIO10
-+#define IRQ_NSLU2_PCI_INTC IRQ_IXP4XX_GPIO9
-+
- #endif
diff --git a/packages/linux/nslu2-kernel/2.6.12/nslu2-setup.c b/packages/linux/nslu2-kernel/2.6.12/nslu2-setup.c
deleted file mode 100644
index fcb8566784..0000000000
--- a/packages/linux/nslu2-kernel/2.6.12/nslu2-setup.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * arch/arm/mach-ixp4xx/nslu2-setup.c
- *
- * NSLU2 board-setup
- *
- * based ixdp425-setup.c:
- * Copyright (C) 2003-2004 MontaVista Software, Inc.
- *
- * Author: Mark Rakes <mrakes at mac.com>
- * Maintainers: http://www.nslu2-linux.org/
- *
- * Fixed missing init_time in MACHINE_START kas11 10/22/04
- * Changed to conform to new style __init ixdp425 kas11 10/22/04
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/device.h>
-#include <linux/serial.h>
-#include <linux/tty.h>
-#include <linux/serial_8250.h>
-
-#include <asm/types.h>
-#include <asm/setup.h>
-#include <asm/memory.h>
-#include <asm/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/irq.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/flash.h>
-
-void __init nslu2_map_io(void)
-{
- ixp4xx_map_io();
-}
-
-static struct flash_platform_data nslu2_flash_data = {
- .map_name = "cfi_probe",
- .width = 2,
-};
-
-static struct resource nslu2_flash_resource = {
- .start = NSLU2_FLASH_BASE,
- .end = NSLU2_FLASH_BASE + NSLU2_FLASH_SIZE,
- .flags = IORESOURCE_MEM,
-};
-
-static struct platform_device nslu2_flash = {
- .name = "IXP4XX-Flash",
- .id = 0,
- .dev = {
- .platform_data = &nslu2_flash_data,
- },
- .num_resources = 1,
- .resource = &nslu2_flash_resource,
-};
-
-static struct ixp4xx_i2c_pins nslu2_i2c_gpio_pins = {
- .sda_pin = NSLU2_SDA_PIN,
- .scl_pin = NSLU2_SCL_PIN,
-};
-
-static struct platform_device nslu2_i2c_controller = {
- .name = "IXP4XX-I2C",
- .id = 0,
- .dev = {
- .platform_data = &nslu2_i2c_gpio_pins,
- },
- .num_resources = 0
-};
-
-static struct resource nslu2_uart_resources[] = {
- {
- .start = IXP4XX_UART1_BASE_PHYS,
- .end = IXP4XX_UART1_BASE_PHYS + 0x0fff,
- .flags = IORESOURCE_MEM
- },
- {
- .start = IXP4XX_UART2_BASE_PHYS,
- .end = IXP4XX_UART2_BASE_PHYS + 0x0fff,
- .flags = IORESOURCE_MEM
- }
-};
-
-static struct plat_serial8250_port nslu2_uart_data[] = {
- {
- .mapbase = IXP4XX_UART1_BASE_PHYS,
- .membase = (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET,
- .irq = IRQ_IXP4XX_UART1,
- .flags = UPF_BOOT_AUTOCONF,
- .iotype = UPIO_MEM,
- .regshift = 2,
- .uartclk = IXP4XX_UART_XTAL,
- },
- {
- .mapbase = IXP4XX_UART2_BASE_PHYS,
- .membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET,
- .irq = IRQ_IXP4XX_UART2,
- .flags = UPF_BOOT_AUTOCONF,
- .iotype = UPIO_MEM,
- .regshift = 2,
- .uartclk = IXP4XX_UART_XTAL,
- }
-};
-
-static struct platform_device nslu2_uart = {
- .name = "serial8250",
- .id = 0,
- .dev.platform_data = nslu2_uart_data,
- .num_resources = 2,
- .resource = nslu2_uart_resources
-};
-
-static struct platform_device *nslu2_devices[] __initdata = {
- &nslu2_i2c_controller,
- &nslu2_flash,
- &nslu2_uart
-};
-
-static void n2_power_off(void)
-{
- /* This causes the box to drop the power and go dead. */
-#define GPIO_PO_BM 0x0100 //b0000 0001 0000 0000
- *IXP4XX_GPIO_GPOER &= ~GPIO_PO_BM; // enable the pwr cntl gpio
- *IXP4XX_GPIO_GPOUTR |= GPIO_PO_BM; // do the deed
-}
-
-static void __init nslu2_init(void)
-{
- ixp4xx_sys_init();
-
- pm_power_off = n2_power_off;
- platform_add_devices(nslu2_devices, ARRAY_SIZE(nslu2_devices));
-}
-
-MACHINE_START(NSLU2, "Linksys NSLU2")
- BOOT_MEM(PHYS_OFFSET, IXP4XX_PERIPHERAL_BASE_PHYS,
- IXP4XX_PERIPHERAL_BASE_VIRT)
- MAPIO(nslu2_map_io)
- INITIRQ(ixp4xx_init_irq) //FIXME: all irq are off here
- .timer = &ixp4xx_timer,
- // INITTIME(ixp4xx_init_time) //this was missing in 2.6.7 code ...soft reboot needed?
- BOOT_PARAMS(0x0100)
- INIT_MACHINE(nslu2_init)
-MACHINE_END
-
diff --git a/packages/linux/nslu2-kernel/2.6.12/x1205-rtc.c-id.patch b/packages/linux/nslu2-kernel/2.6.12/x1205-rtc.c-id.patch
deleted file mode 100644
index 6ef6befd73..0000000000
--- a/packages/linux/nslu2-kernel/2.6.12/x1205-rtc.c-id.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- original/drivers/i2c/chips/x1205-rtc.c Sat Mar 5 23:41:12 2005
-+++ linux-2.6.11/drivers/i2c/chips/x1205-rtc.c Sat Mar 5 23:41:25 2005
-@@ -139,7 +139,6 @@
- };
-
- static struct i2c_client x1205_i2c_client = {
-- .id = I2C_DRIVERID_X1205,
- .flags = 0,
- .addr = X1205_I2C_BUS_ADDR, // chip address - NOTE: 7bit
- .adapter = NULL, // the adapter we sit on assigned in attach
-@@ -301,7 +300,6 @@
- int errno;
-
- x1205_i2c_client.adapter = adapter;
-- x1205_i2c_client.id++;
-
- if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) != NOERR) //test for functional driver
- return -EIO;
diff --git a/packages/linux/nslu2-kernel/2.6.14-mm/00-memory-h-page-shift.patch b/packages/linux/nslu2-kernel/2.6.14-mm/00-memory-h-page-shift.patch
deleted file mode 100644
index 999b69e851..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14-mm/00-memory-h-page-shift.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- linux-2.6.14/include/asm-arm/arch-ixp4xx/memory.h.orig 2005-11-07 23:16:48.456117450 -0800
-+++ linux-2.6.14/include/asm-arm/arch-ixp4xx/memory.h 2005-11-07 23:16:58.160728123 -0800
-@@ -8,6 +8,7 @@
- #define __ASM_ARCH_MEMORY_H
-
- #include <asm/sizes.h>
-+#include <asm/page.h>
-
- /*
- * Physical DRAM offset.
diff --git a/packages/linux/nslu2-kernel/2.6.14-mm/30-i2c-x1205-mm1.patch b/packages/linux/nslu2-kernel/2.6.14-mm/30-i2c-x1205-mm1.patch
deleted file mode 100644
index 67cbd4cdf4..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14-mm/30-i2c-x1205-mm1.patch
+++ /dev/null
@@ -1,1036 +0,0 @@
---- linux-2.6.14/drivers/i2c/chips/Kconfig.orig 2005-11-07 22:30:30.413306237 -0800
-+++ linux-2.6.14/drivers/i2c/chips/Kconfig 2005-11-07 22:41:15.785916976 -0800
-@@ -126,13 +126,13 @@ config SENSORS_MAX6875
- This driver can also be built as a module. If so, the module
- will be called max6875.
-
--config RTC_X1205_I2C
-- tristate "Xicor X1205 RTC chip"
-- depends on I2C && EXPERIMENTAL
-- help
-- If you say yes here you get support for the Xicor X1205 RTC chip.
-+config SENSORS_X1205
-+ tristate "Xicor X1205 RTC chip"
-+ depends on I2C
-+ help
-+ If you say yes here you get support for the Xicor X1205 RTC chip.
-
-- This driver can also be built as a module. If so, the module
-- will be called x1205.
-+ This driver can also be built as a module. If so, the module
-+ will be called x1205
-
- endmenu
---- linux-2.6.14/drivers/i2c/chips/Makefile.orig 2005-11-07 22:30:30.417306489 -0800
-+++ linux-2.6.14/drivers/i2c/chips/Makefile 2005-11-07 22:41:59.616675071 -0800
-@@ -13,7 +13,7 @@ obj-$(CONFIG_SENSORS_PCF8591) += pcf8591
- obj-$(CONFIG_SENSORS_RTC8564) += rtc8564.o
- obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o
- obj-$(CONFIG_TPS65010) += tps65010.o
--obj-$(CONFIG_RTC_X1205_I2C) += x1205.o
-+obj-$(CONFIG_SENSORS_X1205) += x1205.o
-
- ifeq ($(CONFIG_I2C_DEBUG_CHIP),y)
- EXTRA_CFLAGS += -DDEBUG
---- linux-2.6.14/drivers/i2c/chips/x1205.c.orig 2005-11-07 22:30:30.421306741 -0800
-+++ linux-2.6.14/drivers/i2c/chips/x1205.c 2005-11-07 22:42:54.960157617 -0800
-@@ -1,14 +1,16 @@
- /*
-- * x1205.c - An i2c driver for the Xicor X1205 RTC
-+ * linux/drivers/i2c/chips/x1205.c
-+ *
-+ * x1205.c - An 12c driver for the Xicor X1205 RTC
- * Copyright 2004 Karen Spearel
- * Copyright 2005 Alessandro Zummo
- *
- * please send all reports to:
- * kas11 at tampabay dot rr dot com
- * a dot zummo at towertech dot it
-- *
-+ *
- * based on the other drivers in this same directory.
-- *
-+ *
- * 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
-@@ -26,83 +28,36 @@
-
- #include <linux/x1205.h>
-
--#define DRV_VERSION "0.9.9"
-+#define EPOCH_1900 1900
-+#define EPOCH_1970 1970
-+
-+#define DRIVER_VERSION "0.9.6"
-+#define DRIVER_NAME (x1205_driver.name)
-
--/* Addresses to scan: none. This chip is located at
-- * 0x6f and uses a two bytes register addressing.
-- * Two bytes need to be written to read a single register,
-- * while most other chips just require one and take the second
-- * one as the data to be written. To prevent corrupting
-- * unknown chips, the user must explicitely set the probe parameter.
-- */
-
--static unsigned short normal_i2c[] = { I2C_CLIENT_END };
-+/* Addresses to scan */
-+static unsigned short normal_i2c[] = { X1205_I2C_BUS_ADDR, I2C_CLIENT_END };
-
- /* Insmod parameters */
- I2C_CLIENT_INSMOD;
- I2C_CLIENT_MODULE_PARM(hctosys,
- "Set the system time from the hardware clock upon initialization");
-
--/* offsets into CCR area */
--
--#define CCR_SEC 0
--#define CCR_MIN 1
--#define CCR_HOUR 2
--#define CCR_MDAY 3
--#define CCR_MONTH 4
--#define CCR_YEAR 5
--#define CCR_WDAY 6
--#define CCR_Y2K 7
--
--#define X1205_REG_SR 0x3F /* status register */
--#define X1205_REG_Y2K 0x37
--#define X1205_REG_DW 0x36
--#define X1205_REG_YR 0x35
--#define X1205_REG_MO 0x34
--#define X1205_REG_DT 0x33
--#define X1205_REG_HR 0x32
--#define X1205_REG_MN 0x31
--#define X1205_REG_SC 0x30
--#define X1205_REG_DTR 0x13
--#define X1205_REG_ATR 0x12
--#define X1205_REG_INT 0x11
--#define X1205_REG_0 0x10
--#define X1205_REG_Y2K1 0x0F
--#define X1205_REG_DWA1 0x0E
--#define X1205_REG_YRA1 0x0D
--#define X1205_REG_MOA1 0x0C
--#define X1205_REG_DTA1 0x0B
--#define X1205_REG_HRA1 0x0A
--#define X1205_REG_MNA1 0x09
--#define X1205_REG_SCA1 0x08
--#define X1205_REG_Y2K0 0x07
--#define X1205_REG_DWA0 0x06
--#define X1205_REG_YRA0 0x05
--#define X1205_REG_MOA0 0x04
--#define X1205_REG_DTA0 0x03
--#define X1205_REG_HRA0 0x02
--#define X1205_REG_MNA0 0x01
--#define X1205_REG_SCA0 0x00
--
--#define X1205_CCR_BASE 0x30 /* Base address of CCR */
--#define X1205_ALM0_BASE 0x00 /* Base address of ALARM0 */
--
--#define X1205_SR_RTCF 0x01 /* Clock failure */
--#define X1205_SR_WEL 0x02 /* Write Enable Latch */
--#define X1205_SR_RWEL 0x04 /* Register Write Enable */
--
--#define X1205_DTR_DTR0 0x01
--#define X1205_DTR_DTR1 0x02
--#define X1205_DTR_DTR2 0x04
--
--#define X1205_HR_MIL 0x80 /* Set in ccr.hour for 24 hr mode */
--
- /* Prototypes */
-+
- static int x1205_attach(struct i2c_adapter *adapter);
- static int x1205_detach(struct i2c_client *client);
- static int x1205_probe(struct i2c_adapter *adapter, int address, int kind);
--static int x1205_command(struct i2c_client *client, unsigned int cmd,
-- void *arg);
-+static int x1205_validate_client(struct i2c_client *client);
-+
-+static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm,
-+ u8 reg_base);
-+static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm,
-+ int datetoo, u8 reg_base);
-+static int x1205_validate_tm(struct rtc_time *tm);
-+static int x1205_command(struct i2c_client *client, unsigned int cmd, void *arg);
-+static int x1205_hctosys(struct i2c_client *client);
-+
-
- static struct i2c_driver x1205_driver = {
- .owner = THIS_MODULE,
-@@ -110,6 +65,7 @@ static struct i2c_driver x1205_driver =
- .flags = I2C_DF_NOTIFY,
- .attach_adapter = &x1205_attach,
- .detach_client = &x1205_detach,
-+/* .command = &x1205_command,*/
- };
-
- struct x1205_data {
-@@ -118,8 +74,9 @@ struct x1205_data {
- unsigned int epoch;
- };
-
--static const unsigned char days_in_mo[] =
-- { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
-+
-+static const unsigned char days_in_mo[] =
-+{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
-
- static LIST_HEAD(x1205_clients);
-
-@@ -127,6 +84,7 @@ static LIST_HEAD(x1205_clients);
- * commands to a specific client. This function will send the command
- * to the first client.
- */
-+
- int x1205_do_command(unsigned int cmd, void *arg)
- {
- struct list_head *walk;
-@@ -141,114 +99,98 @@ int x1205_do_command(unsigned int cmd, v
- return -ENODEV;
- }
-
--#define is_leap(year) \
-- ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
--
--/* make sure the rtc_time values are in bounds */
--static int x1205_validate_tm(struct rtc_time *tm)
--{
-- int year = tm->tm_year + 1900;
--
-- if ((tm->tm_year < 70) || (tm->tm_year > 255))
-- return -EINVAL;
--
-- if ((tm->tm_mon > 11) || (tm->tm_mday == 0))
-- return -EINVAL;
--
-- if (tm->tm_mday > days_in_mo[tm->tm_mon]
-- + ((tm->tm_mon == 1) && is_leap(year)))
-- return -EINVAL;
--
-- if ((tm->tm_hour >= 24) || (tm->tm_min >= 60) || (tm->tm_sec >= 60))
-- return -EINVAL;
--
-- return 0;
--}
-
- /*
-- * In the routines that deal directly with the x1205 hardware, we use
-+ * in the routines that deal directly with the x1205 hardware, we use
- * rtc_time -- month 0-11, hour 0-23, yr = calendar year-epoch
-- * Epoch is initialized as 2000. Time is set to UTC.
-+ * Epoch is inited as 2000. Time is set to UT
- */
-+
- static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm,
- u8 reg_base)
- {
-- unsigned char dt_addr[2] = { 0, reg_base };
-- static unsigned char sr_addr[2] = { 0, X1205_REG_SR };
-+ static unsigned char dt_addr[] = { 0, };
-+ static unsigned char sr_addr[] = { 0, };
-
-- unsigned char buf[8], sr;
-+ unsigned char buf[8], sr;
-
- struct i2c_msg msgs[] = {
-- { client->addr, 0, 2, sr_addr }, /* setup read ptr */
-- { client->addr, I2C_M_RD, 1, &sr }, /* read status */
-- { client->addr, 0, 2, dt_addr }, /* setup read ptr */
-- { client->addr, I2C_M_RD, 8, buf }, /* read date */
-+ { client->addr, 0, 2, sr_addr }, /* random read */
-+ { client->addr, I2C_M_RD, 1, &sr },
-+ { client->addr, 0, 2, dt_addr }, /* random read */
-+ { client->addr, I2C_M_RD, 8, buf },
- };
-
-- struct x1205_data *data = i2c_get_clientdata(client);
-+ struct x1205_data *xdata = i2c_get_clientdata(client);
-
-- /* read status register */
-- if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) {
-- dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
-- return -EIO;
-- }
-+ dt_addr[1] = reg_base;
-+ sr_addr[1] = X1205_REG_SR;
-
-- /* check for battery failure */
-- if (sr & X1205_SR_RTCF) {
-- dev_warn(&client->dev,
-- "Clock had a power failure, you must set the date.\n");
-- return -EINVAL;
-- }
-+ if ((i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs))) ==
-+ ARRAY_SIZE(msgs)) {
-+ /* did we read the correct number of messages? */
-+
-+ /* check for battery failure */
-+ if (sr & X1205_SR_RTCF)
-+ {
-+ dev_info(&client->adapter->dev,
-+ "%s: Clock had a power failure, you must set the date.\n",
-+ DRIVER_NAME);
-
-- /* read date registers */
-- if ((i2c_transfer(client->adapter, &msgs[2], 2)) != 2) {
-- dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
-- return -EIO;
-- }
--
-- dev_dbg(&client->dev,
-- "%s: raw read data - sec=%02x, min=%02x, hr=%02x, "
-- "mday=%02x, mon=%02x, year=%02x, wday=%02x, y2k=%02x\n",
-- __FUNCTION__,
-- buf[0], buf[1], buf[2], buf[3],
-- buf[4], buf[5], buf[6], buf[7]);
--
-- tm->tm_sec = BCD2BIN(buf[CCR_SEC]);
-- tm->tm_min = BCD2BIN(buf[CCR_MIN]);
-- tm->tm_hour = BCD2BIN(buf[CCR_HOUR] & 0x3F); /* hr is 0-23 */
-- tm->tm_mday = BCD2BIN(buf[CCR_MDAY]);
-- tm->tm_mon = BCD2BIN(buf[CCR_MONTH]);
-- data->epoch = BCD2BIN(buf[CCR_Y2K]) * 100;
-- tm->tm_year = BCD2BIN(buf[CCR_YEAR]) + data->epoch - 1900;
-- tm->tm_wday = buf[CCR_WDAY];
-+ return -EINVAL;
-+ }
-
-- dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, "
-- "mday=%d, mon=%d, year=%d, wday=%d\n",
-- __FUNCTION__,
-- tm->tm_sec, tm->tm_min, tm->tm_hour,
-- tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
-+ dev_dbg(&client->dev,
-+ "%s: raw read data - sec-%02x min-%02x hr-%02x"
-+ " mday-%02x mon-%02x year-%02x wday-%02x y2k-%02x\n",
-+ __FUNCTION__,
-+ buf[0], buf[1], buf[2], buf[3],
-+ buf[4], buf[5], buf[6], buf[7]);
-+
-+ tm->tm_sec = BCD2BIN(buf[CCR_SEC]);
-+ tm->tm_min = BCD2BIN(buf[CCR_MIN]);
-+ buf[CCR_HOUR] &= ~X1205_HR_MIL;
-+ tm->tm_hour = BCD2BIN(buf[CCR_HOUR]); /* hr is 0-23 */
-+ tm->tm_mday = BCD2BIN(buf[CCR_MDAY]);
-+ tm->tm_mon = BCD2BIN(buf[CCR_MONTH]);
-+ xdata->epoch = BCD2BIN(buf[CCR_Y2K]) * 100;
-+ tm->tm_year = BCD2BIN(buf[CCR_YEAR]) + xdata->epoch - EPOCH_1900;
-+ tm->tm_wday = buf[CCR_WDAY];
-+
-+ dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, "
-+ "mday=%d, mon=%d, year=%d, wday=%d\n",
-+ __FUNCTION__,
-+ tm->tm_sec, tm->tm_min, tm->tm_hour,
-+ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
-
-+ } else {
-+ dev_dbg(&client->dev, "%s: read error\n", __FUNCTION__);
-+ return -EIO;
-+ }
-+
- return 0;
- }
-
-+
- static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm,
- int datetoo, u8 reg_base)
- {
- int i, err, xfer;
-
-- unsigned char buf[8];
-+ static unsigned char wel[3] = { 0, X1205_REG_SR,
-+ X1205_SR_WEL };
-
-- static const unsigned char wel[3] = { 0, X1205_REG_SR,
-- X1205_SR_WEL };
-
-- static const unsigned char rwel[3] = { 0, X1205_REG_SR,
-- X1205_SR_WEL | X1205_SR_RWEL };
-+ static unsigned char rwel[3] = { 0, X1205_REG_SR,
-+ X1205_SR_WEL | X1205_SR_RWEL };
-
-- static const unsigned char diswe[3] = { 0, X1205_REG_SR, 0 };
-+ static unsigned char diswe[3] = { 0, X1205_REG_SR, 0 };
-
-- struct x1205_data *data = i2c_get_clientdata(client);
-+ static unsigned char data[3] = { 0, };
-+ static unsigned char buf[8];
-+
-+ struct x1205_data *xdata = i2c_get_clientdata(client);
-
-- /* check if all values in the tm struct are correct */
- if ((err = x1205_validate_tm(tm)) < 0)
- return err;
-
-@@ -258,124 +200,52 @@ static int x1205_set_datetime(struct i2c
- tm->tm_sec, tm->tm_min, tm->tm_hour,
- tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
-
-- buf[CCR_SEC] = BIN2BCD(tm->tm_sec);
-- buf[CCR_MIN] = BIN2BCD(tm->tm_min);
-
-- /* set hour and 24hr bit */
-+ buf[CCR_SEC] = BIN2BCD(tm->tm_sec);
-+ buf[CCR_MIN] = BIN2BCD(tm->tm_min);
-+
-+ /* Set 24HR format */
- buf[CCR_HOUR] = BIN2BCD(tm->tm_hour) | X1205_HR_MIL;
-
-- /* should we also set the date? */
-- if (datetoo) {
-- buf[CCR_MDAY] = BIN2BCD(tm->tm_mday);
-+ if (datetoo == X1205_DATETOO) {
-+ buf[CCR_MDAY] = BIN2BCD(tm->tm_mday);
-
- /* month, 0 - 11 */
-- buf[CCR_MONTH] = BIN2BCD(tm->tm_mon);
-+ buf[CCR_MONTH] = BIN2BCD(tm->tm_mon); /* input is 0-11 */
-
- /* year, since 1900 */
-- buf[CCR_YEAR] = BIN2BCD(tm->tm_year + 1900 - data->epoch);
-- buf[CCR_WDAY] = tm->tm_wday & 0x07;
-- buf[CCR_Y2K] = BIN2BCD(data->epoch / 100);
-+ buf[CCR_YEAR] = BIN2BCD((tm->tm_year + EPOCH_1900 - xdata->epoch));
-+ buf[CCR_WDAY] = tm->tm_wday & 7;
-+ buf[CCR_Y2K] = BIN2BCD(xdata->epoch / 100);
- }
-
-- /* this sequence is required to unlock the chip */
- xfer = i2c_master_send(client, wel, 3);
-- if (xfer != 3) {
-- dev_err(&client->dev, "%s: wel - %d\n", __FUNCTION__, xfer);
-+ dev_dbg(&client->dev, "%s: wen - %x\n", __FUNCTION__, xfer);
-+ if (xfer != 3)
- return -EIO;
-- }
-
- xfer = i2c_master_send(client, rwel, 3);
-- if (xfer != 3) {
-- dev_err(&client->dev, "%s: rwel - %d\n", __FUNCTION__, xfer);
-+ dev_dbg(&client->dev, "%s: wenb - %x\n", __FUNCTION__, xfer);
-+ if (xfer != 3)
- return -EIO;
-- }
-
-- /* write register's data */
-- for (i = 0; i < (datetoo ? 8 : 3); i++) {
-- unsigned char rdata[3] = { 0, reg_base + i, buf[i] };
--
-- xfer = i2c_master_send(client, rdata, 3);
-- if (xfer != 3) {
-- dev_err(&client->dev,
-- "%s: xfer=%d addr=%02x, data=%02x\n",
-- __FUNCTION__,
-- xfer, rdata[1], rdata[2]);
-+ for (i = 0; i < 8; i++) {
-+ data[1] = i + reg_base;
-+ data[2] = buf[i];
-+ xfer = i2c_master_send(client, data, 3);
-+
-+ dev_dbg(&client->dev, "%s: xfer %d addr, %02x, data %02x\n",
-+ __FUNCTION__,
-+ xfer, data[1], data[2]);
-+
-+ if (xfer != 3)
- return -EIO;
-- }
- };
-
-- /* disable further writes */
- xfer = i2c_master_send(client, diswe, 3);
-- if (xfer != 3) {
-- dev_err(&client->dev, "%s: diswe - %d\n", __FUNCTION__, xfer);
-- return -EIO;
-- }
--
-- return 0;
--}
--
--static int x1205_get_dtrim(struct i2c_client *client, int *trim)
--{
-- unsigned char dtr;
-- static unsigned char dtr_addr[2] = { 0, X1205_REG_DTR };
--
-- struct i2c_msg msgs[] = {
-- { client->addr, 0, 2, dtr_addr }, /* setup read ptr */
-- { client->addr, I2C_M_RD, 1, &dtr }, /* read dtr */
-- };
--
-- /* read dtr register */
-- if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) {
-- dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
-- return -EIO;
-- }
--
-- dev_dbg(&client->dev, "%s: raw dtr=%x\n", __FUNCTION__, dtr);
--
-- *trim = 0;
--
-- if (dtr & X1205_DTR_DTR0)
-- *trim += 20;
--
-- if (dtr & X1205_DTR_DTR1)
-- *trim += 10;
--
-- if (dtr & X1205_DTR_DTR2)
-- *trim = -*trim;
--
-- return 0;
--}
--
--static int x1205_get_atrim(struct i2c_client *client, int *trim)
--{
-- s8 atr;
-- static unsigned char atr_addr[2] = { 0, X1205_REG_ATR };
--
-- struct i2c_msg msgs[] = {
-- { client->addr, 0, 2, atr_addr }, /* setup read ptr */
-- { client->addr, I2C_M_RD, 1, &atr }, /* read atr */
-- };
--
-- /* read atr register */
-- if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) {
-- dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
-- return -EIO;
-- }
--
-- dev_dbg(&client->dev, "%s: raw atr=%x\n", __FUNCTION__, atr);
--
-- /* atr is a two's complement value on 6 bits,
-- * perform sign extension. The formula is
-- * Catr = (atr * 0.25pF) + 11.00pF.
-- */
-- if (atr & 0x20)
-- atr |= 0xC0;
--
-- dev_dbg(&client->dev, "%s: raw atr=%x (%d)\n", __FUNCTION__, atr, atr);
--
-- *trim = (atr * 250) + 11000;
--
-- dev_dbg(&client->dev, "%s: real=%d\n", __FUNCTION__, *trim);
-+ dev_dbg(&client->dev, "%s: wdis - %x\n", __FUNCTION__, xfer);
-+ if (xfer != 3)
-+ return -EIO;
-
- return 0;
- }
-@@ -386,24 +256,28 @@ static int x1205_hctosys(struct i2c_clie
-
- struct rtc_time tm;
- struct timespec tv;
-+
-
- err = x1205_command(client, X1205_CMD_GETDATETIME, &tm);
-
-- if (err) {
-- dev_err(&client->dev,
-- "Unable to set the system clock\n");
-+ if (err)
-+ {
-+ dev_info(&client->adapter->dev,
-+ "%s: Unable to set the system clock\n",
-+ DRIVER_NAME);
-+
- return err;
-+
- }
-
-- /* IMPORTANT: the RTC only stores whole seconds. It is arbitrary
-- * whether it stores the most close value or the value with partial
-- * seconds truncated. However, it is important that we use it to store
-- * the truncated value. This is because otherwise it is necessary,
-- * in an rtc sync function, to read both xtime.tv_sec and
-- * xtime.tv_nsec. On some processors (i.e. ARM), an atomic read
-- * of >32bits is not possible. So storing the most close value would
-- * slow down the sync API. So here we have the truncated value and
-- * the best guess is to add 0.5s.
-+ /* IMPORTANT: the RTC only stores whole seconds. It is arbitrary whether
-+ * it stores the most close value or the value with partial seconds
-+ * truncated, however it is important for x1205_sync_rtc that it be
-+ * defined to store the truncated value. This is because otherwise it
-+ * is necessary to read both xtime.tv_sec and xtime.tv_nsec in the
-+ * sync function, and atomic reads of >32bits on ARM are not possible.
-+ * So storing the most close value would slow down the sync API. So
-+ * Here we have the truncated value and the best guess is to add 0.5s
- */
-
- tv.tv_nsec = NSEC_PER_SEC >> 1;
-@@ -413,15 +287,16 @@ static int x1205_hctosys(struct i2c_clie
- * the month to be in the range 1-12
- */
-
-- tv.tv_sec = mktime(tm.tm_year + 1900, tm.tm_mon + 1,
-+ tv.tv_sec = mktime(tm.tm_year + EPOCH_1900, tm.tm_mon + 1,
- tm.tm_mday, tm.tm_hour,
- tm.tm_min, tm.tm_sec);
-
- do_settimeofday(&tv);
-
-- dev_info(&client->dev,
-- "setting the system clock to %d-%d-%d %d:%d:%d\n",
-- tm.tm_year + 1900, tm.tm_mon + 1,
-+ dev_info(&client->adapter->dev,
-+ "%s: Setting the system clock to %d-%d-%d %d:%d:%d\n",
-+ DRIVER_NAME,
-+ tm.tm_year + EPOCH_1900, tm.tm_mon + 1,
- tm.tm_mday, tm.tm_hour, tm.tm_min,
- tm.tm_sec);
-
-@@ -432,7 +307,7 @@ struct x1205_limit
- {
- unsigned char reg;
- unsigned char mask;
-- unsigned char min;
-+ unsigned char min;
- unsigned char max;
- };
-
-@@ -443,16 +318,34 @@ static int x1205_validate_client(struct
- /* Probe array. We will read the register at the specified
- * address and check if the given bits are zero.
- */
-- static const unsigned char probe_zero_pattern[] = {
-- /* register, mask */
-+
-+ const unsigned char probe_zero_pattern[] = {
-+
- X1205_REG_SR, 0x18,
-+ X1205_REG_Y2K, 0xC6,
-+ X1205_REG_DW, 0xF8,
-+ X1205_REG_MO, 0xE0,
-+ X1205_REG_DT, 0xC0,
-+ X1205_REG_HR, 0x40,
-+ X1205_REG_MN, 0x80,
-+ X1205_REG_SC, 0x80,
- X1205_REG_DTR, 0xF8,
- X1205_REG_ATR, 0xC0,
- X1205_REG_INT, 0x18,
- X1205_REG_0, 0xFF,
-+ X1205_REG_Y2K1, 0xC6,
-+ X1205_REG_DWA1, 0x78,
-+ X1205_REG_MOA1, 0x60,
-+ X1205_REG_DTA1, 0x40,
-+ X1205_REG_HRA1, 0x40,
-+ X1205_REG_Y2K0, 0xC6,
-+ X1205_REG_DWA0, 0x78,
-+ X1205_REG_MOA0, 0x60,
-+ X1205_REG_DTA0, 0x40,
-+ X1205_REG_HRA0, 0x40,
- };
-
-- static const struct x1205_limit probe_limits_pattern[] = {
-+ const struct x1205_limit probe_limits_pattern[] = {
- /* register, mask, min, max */
- { X1205_REG_Y2K, 0xFF, 19, 20 },
- { X1205_REG_DW, 0xFF, 0, 6 },
-@@ -463,23 +356,41 @@ static int x1205_validate_client(struct
- { X1205_REG_MN, 0xFF, 0, 59 },
- { X1205_REG_SC, 0xFF, 0, 59 },
- { X1205_REG_Y2K1, 0xFF, 19, 20 },
-+ { X1205_REG_DWA1, 0x7F, 0, 6 },
-+ { X1205_REG_MOA1, 0x7F, 0, 12 },
-+ { X1205_REG_DTA1, 0x7F, 0, 31 },
-+ { X1205_REG_HRA1, 0x7F, 0, 23 },
-+ { X1205_REG_MNA1, 0x7F, 0, 59 },
-+ { X1205_REG_SCA1, 0x7F, 0, 59 },
- { X1205_REG_Y2K0, 0xFF, 19, 20 },
-+ { X1205_REG_DWA0, 0x7F, 0, 6 },
-+ { X1205_REG_MOA0, 0x7F, 0, 12 },
-+ { X1205_REG_DTA0, 0x7F, 0, 31 },
-+ { X1205_REG_HRA0, 0x7F, 0, 23 },
-+ { X1205_REG_MNA0, 0x7F, 0, 59 },
-+ { X1205_REG_SCA0, 0x7F, 0, 59 },
- };
-
- /* check that registers have bits a 0 where expected */
-- for (i = 0; i < ARRAY_SIZE(probe_zero_pattern); i += 2) {
-+
-+ for (i = 0; i < ARRAY_SIZE(probe_zero_pattern); i += 2)
-+ {
- unsigned char buf;
-
-- unsigned char addr[2] = { 0, probe_zero_pattern[i] };
-+ static unsigned char addr[2];
-
- struct i2c_msg msgs[2] = {
-- { client->addr, 0, 2, addr },
-+ { client->addr, 0, 2, addr }, /* random read */
- { client->addr, I2C_M_RD, 1, &buf },
- };
-
-+ addr[0] = 0x00;
-+ addr[1] = probe_zero_pattern[i];
-+
- xfer = i2c_transfer(client->adapter, msgs, 2);
-+
- if (xfer != 2) {
-- dev_err(&client->adapter->dev,
-+ dev_dbg(&client->adapter->dev,
- "%s: could not read register %x\n",
- __FUNCTION__, addr[1]);
-
-@@ -487,42 +398,47 @@ static int x1205_validate_client(struct
- }
-
- if ((buf & probe_zero_pattern[i+1]) != 0) {
-- dev_err(&client->adapter->dev,
-- "%s: register=%02x, zero pattern=%d, value=%x\n",
-+ dev_dbg(&client->adapter->dev,
-+ "%s: register %x, zero pattern %d: %x\n",
- __FUNCTION__, addr[1], i, buf);
-
- return -ENODEV;
- }
- }
-
-- /* check limits (only registers with bcd values) */
-- for (i = 0; i < ARRAY_SIZE(probe_limits_pattern); i++) {
-- unsigned char reg, value;
-+ /* check limits */
-
-- unsigned char addr[2] = { 0, probe_limits_pattern[i].reg };
-+ for (i = 0; i < ARRAY_SIZE(probe_limits_pattern); i++)
-+ {
-+ unsigned char buf, val;
-+
-+ static unsigned char addr[2];
-
- struct i2c_msg msgs[2] = {
-- { client->addr, 0, 2, addr },
-- { client->addr, I2C_M_RD, 1, &reg },
-+ { client->addr, 0, 2, addr }, /* random read */
-+ { client->addr, I2C_M_RD, 1, &buf },
- };
-
-+ addr[0] = 0x00;
-+ addr[1] = probe_limits_pattern[i].reg;
-+
- xfer = i2c_transfer(client->adapter, msgs, 2);
-
- if (xfer != 2) {
-- dev_err(&client->adapter->dev,
-+ dev_dbg(&client->adapter->dev,
- "%s: could not read register %x\n",
- __FUNCTION__, addr[1]);
-
- return -EIO;
- }
-
-- value = BCD2BIN(reg & probe_limits_pattern[i].mask);
-+ val = BCD2BIN(buf & probe_limits_pattern[i].mask);
-
-- if (value > probe_limits_pattern[i].max ||
-- value < probe_limits_pattern[i].min) {
-+ if (val > probe_limits_pattern[i].max ||
-+ val < probe_limits_pattern[i].min) {
- dev_dbg(&client->adapter->dev,
-- "%s: register=%x, lim pattern=%d, value=%d\n",
-- __FUNCTION__, addr[1], i, value);
-+ "%s: register %x, lim pattern %d: %d\n",
-+ __FUNCTION__, addr[1], i, val);
-
- return -ENODEV;
- }
-@@ -538,79 +454,66 @@ static int x1205_attach(struct i2c_adapt
- return i2c_probe(adapter, &addr_data, x1205_probe);
- }
-
--int x1205_direct_attach(int adapter_id,
-- struct i2c_client_address_data *address_data)
--{
-- int err;
-- struct i2c_adapter *adapter = i2c_get_adapter(adapter_id);
--
-- if (adapter) {
-- err = i2c_probe(adapter,
-- address_data, x1205_probe);
--
-- i2c_put_adapter(adapter);
--
-- return err;
-- }
--
-- return -ENODEV;
--}
--
- static int x1205_probe(struct i2c_adapter *adapter, int address, int kind)
- {
-- struct i2c_client *client;
-- struct x1205_data *data;
-+ struct i2c_client *new_client;
-+ struct x1205_data *xdata;
-
- int err = 0;
-
- dev_dbg(&adapter->dev, "%s\n", __FUNCTION__);
-
-- if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) {
-- err = -ENODEV;
-- goto exit;
-- }
--
-- if (!(data = kzalloc(sizeof(struct x1205_data), GFP_KERNEL))) {
-+ if (!(xdata = kmalloc(sizeof(struct x1205_data), GFP_KERNEL))) {
- err = -ENOMEM;
- goto exit;
- }
-
-- /* Initialize our structures */
-- data->epoch = 2000;
-+ /* Fill our data structure */
-
-- client = &data->client;
-- client->addr = address;
-- client->driver = &x1205_driver;
-- client->adapter = adapter;
-+ memset(xdata, 0, sizeof(struct x1205_data));
-
-- strlcpy(client->name, "x1205", I2C_NAME_SIZE);
-+ xdata->epoch = 2000;
-+
-+
-+ /* Prepare i2c_client structure */
-+
-+ new_client = &xdata->client;
-+ i2c_set_clientdata(new_client, xdata);
-+ new_client->addr = address;
-+ new_client->adapter = adapter;
-+ new_client->driver = &x1205_driver;
-+ new_client->flags = 0;
-+
-+ strlcpy(new_client->name, "x1205", I2C_NAME_SIZE);
-
-- i2c_set_clientdata(client, data);
-
- /* Verify the chip is really an X1205 */
-- if (kind < 0) {
-- if (x1205_validate_client(client) < 0) {
-+
-+ if (kind < 0)
-+ {
-+ if (x1205_validate_client(new_client) < 0) {
- err = -ENODEV;
- goto exit_kfree;
- }
- }
-
- /* Inform the i2c layer */
-- if ((err = i2c_attach_client(client)))
-+ if ((err = i2c_attach_client(new_client)))
- goto exit_kfree;
-
-- list_add(&data->list, &x1205_clients);
-+ list_add(&xdata->list, &x1205_clients);
-
-- dev_info(&client->dev, "chip found, driver version " DRV_VERSION "\n");
-+ dev_info(&adapter->dev, "%s: Chip found, driver " DRIVER_VERSION "\n",
-+ DRIVER_NAME);
-
-- /* If requested, set the system time */
-+ /* If requested, se the system time */
- if (hctosys)
-- x1205_hctosys(client);
-+ x1205_hctosys(new_client);
-
- return 0;
-
- exit_kfree:
-- kfree(data);
-+ kfree(xdata);
-
- exit:
- return err;
-@@ -620,23 +523,44 @@ static int x1205_detach(struct i2c_clien
- {
- int err;
- struct x1205_data *data = i2c_get_clientdata(client);
--
-+
- dev_dbg(&client->dev, "%s\n", __FUNCTION__);
-
- if ((err = i2c_detach_client(client)))
- return err;
-
- list_del(&data->list);
--
- kfree(data);
-+ return 0;
-+}
-+
-+/* make sure the rtc_time values are in bounds */
-+static int x1205_validate_tm(struct rtc_time *tm)
-+{
-+ tm->tm_year += 1900;
-+
-+ if (tm->tm_year < EPOCH_1970)
-+ return -EINVAL;
-+
-+ if ((tm->tm_mon > 11) || (tm->tm_mday == 0))
-+ return -EINVAL;
-+
-+ if (tm->tm_mday > (days_in_mo[tm->tm_mon] + ( (tm->tm_mon == 1) &&
-+ ((!(tm->tm_year % 4) && (tm->tm_year % 100) ) || !(tm->tm_year % 400)))))
-+ return -EINVAL;
-+
-+ if ((tm->tm_year -= EPOCH_1900) > 255)
-+ return -EINVAL;
-+
-+ if ((tm->tm_hour >= 24) || (tm->tm_min >= 60) || (tm->tm_sec >= 60))
-+ return -EINVAL;
-
- return 0;
- }
-
--static int x1205_command(struct i2c_client *client, unsigned int cmd,
-- void *param)
-+static int x1205_command(struct i2c_client *client, unsigned int cmd, void *tm)
- {
-- if (param == NULL)
-+ if (client == NULL || tm == NULL)
- return -EINVAL;
-
- if (!capable(CAP_SYS_TIME))
-@@ -646,34 +570,26 @@ static int x1205_command(struct i2c_clie
-
- switch (cmd) {
- case X1205_CMD_GETDATETIME:
-- return x1205_get_datetime(client, param, X1205_CCR_BASE);
-+ return x1205_get_datetime(client, tm, X1205_CCR_BASE);
-
- case X1205_CMD_SETTIME:
-- return x1205_set_datetime(client, param, 0,
-- X1205_CCR_BASE);
-+ return x1205_set_datetime(client, tm, X1205_NODATE, X1205_CCR_BASE);
-
- case X1205_CMD_SETDATETIME:
-- return x1205_set_datetime(client, param, 1,
-- X1205_CCR_BASE);
-+ return x1205_set_datetime(client, tm, X1205_DATETOO, X1205_CCR_BASE);
-
- case X1205_CMD_GETALARM:
-- return x1205_get_datetime(client, param, X1205_ALM0_BASE);
-+ return x1205_get_datetime(client, tm, X1205_ALM0_BASE);
-
- case X1205_CMD_SETALARM:
-- return x1205_set_datetime(client, param, 1,
-- X1205_ALM0_BASE);
--
-- case X1205_CMD_GETDTRIM:
-- return x1205_get_dtrim(client, param);
--
-- case X1205_CMD_GETATRIM:
-- return x1205_get_atrim(client, param);
-+ return x1205_set_datetime(client, tm, X1205_DATETOO, X1205_ALM0_BASE);
-
- default:
- return -EINVAL;
- }
- }
-
-+
- static int __init x1205_init(void)
- {
- return i2c_add_driver(&x1205_driver);
-@@ -689,10 +605,8 @@ MODULE_AUTHOR(
- "Alessandro Zummo <a.zummo@towertech.it>");
- MODULE_DESCRIPTION("Xicor X1205 RTC driver");
- MODULE_LICENSE("GPL");
--MODULE_VERSION(DRV_VERSION);
-
- EXPORT_SYMBOL_GPL(x1205_do_command);
--EXPORT_SYMBOL_GPL(x1205_direct_attach);
-
- module_init(x1205_init);
- module_exit(x1205_exit);
---- linux-2.6.14/include/linux/x1205.h.orig 2005-11-07 22:38:42.196252187 -0800
-+++ linux-2.6.14/include/linux/x1205.h 2005-11-07 22:42:54.960157617 -0800
-@@ -1,31 +1,67 @@
--/*
-- * x1205.h - defines for drivers/i2c/chips/x1205.c
-- * Copyright 2004 Karen Spearel
-- * Copyright 2005 Alessandro Zummo
-- *
-- * 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 __LINUX_X1205_H__
--#define __LINUX_X1205_H__
-
- /* commands */
-
--#define X1205_CMD_GETDATETIME 0
--#define X1205_CMD_SETTIME 1
--#define X1205_CMD_SETDATETIME 2
-+#define X1205_CMD_GETDATETIME 0
-+#define X1205_CMD_SETTIME 1
-+#define X1205_CMD_SETDATETIME 2
- #define X1205_CMD_GETALARM 3
- #define X1205_CMD_SETALARM 4
--#define X1205_CMD_GETDTRIM 5
--#define X1205_CMD_SETDTRIM 6
--#define X1205_CMD_GETATRIM 7
--#define X1205_CMD_SETATRIM 8
-+
-+/* flags */
-+
-+#define X1205_NODATE 0
-+#define X1205_DATETOO 1
-+
-+/* offsets into read buf - add 2 for write buf */
-+
-+#define CCR_SEC 0
-+#define CCR_MIN 1
-+#define CCR_HOUR 2
-+#define CCR_MDAY 3
-+#define CCR_MONTH 4
-+#define CCR_YEAR 5
-+#define CCR_WDAY 6
-+#define CCR_Y2K 7
-+
-+#define X1205_REG_SR 0x3F /* status register */
-+#define X1205_REG_Y2K 0x37
-+#define X1205_REG_DW 0x36
-+#define X1205_REG_YR 0x35
-+#define X1205_REG_MO 0x34
-+#define X1205_REG_DT 0x33
-+#define X1205_REG_HR 0x32
-+#define X1205_REG_MN 0x31
-+#define X1205_REG_SC 0x30
-+#define X1205_REG_DTR 0x13
-+#define X1205_REG_ATR 0x12
-+#define X1205_REG_INT 0x11
-+#define X1205_REG_0 0x10
-+#define X1205_REG_Y2K1 0x0F
-+#define X1205_REG_DWA1 0x0E
-+#define X1205_REG_YRA1 0x0D
-+#define X1205_REG_MOA1 0x0C
-+#define X1205_REG_DTA1 0x0B
-+#define X1205_REG_HRA1 0x0A
-+#define X1205_REG_MNA1 0x09
-+#define X1205_REG_SCA1 0x08
-+#define X1205_REG_Y2K0 0x07
-+#define X1205_REG_DWA0 0x06
-+#define X1205_REG_YRA0 0x05
-+#define X1205_REG_MOA0 0x04
-+#define X1205_REG_DTA0 0x03
-+#define X1205_REG_HRA0 0x02
-+#define X1205_REG_MNA0 0x01
-+#define X1205_REG_SCA0 0x00
-+
-+#define X1205_I2C_BUS_ADDR 0x6f /* hardwired into x1205 */
-+#define X1205_CCR_BASE 0x30 /* Base address of CCR */
-+#define X1205_ALM0_BASE 0x00 /* Base address of ALARM0 */
-+
-+#define X1205_SR_RTCF 0x01
-+#define X1205_SR_WEL 0x02 /* Write Enable Latch bit */
-+#define X1205_SR_RWEL 0x04 /* Register Write Enable Bit */
-+
-+#define X1205_HR_MIL 0x80 /* set in ccr.hour for 24 hr mode */
-
- extern int x1205_do_command(unsigned int cmd, void *arg);
--extern int x1205_direct_attach(int adapter_id,
-- struct i2c_client_address_data *address_data);
-
--#endif /* __LINUX_X1205_H__ */
diff --git a/packages/linux/nslu2-kernel/2.6.14-mm/80-nslu2-class-device-create.patch b/packages/linux/nslu2-kernel/2.6.14-mm/80-nslu2-class-device-create.patch
deleted file mode 100644
index 116f95b2f7..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14-mm/80-nslu2-class-device-create.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-io.c.orig 2005-11-07 22:26:36.010556202 -0800
-+++ linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-io.c 2005-11-07 22:27:15.921067613 -0800
-@@ -504,7 +504,7 @@ static int __init n2iom_init(void)
- return -EBUSY;
- }
- else {
-- class_device_create(n2lm_class, MKDEV(NSLU2LM_MAJOR, 0), NULL, "leds");
-+ class_device_create(n2lm_class, NULL, MKDEV(NSLU2LM_MAJOR, 0), NULL, "leds");
- }
- #endif
-
-@@ -513,7 +513,7 @@ static int __init n2iom_init(void)
- return -EBUSY;
- }
- else {
-- class_device_create(n2lm_class, MKDEV(NSLU2BZ_MAJOR, 0), NULL, "buzzer");
-+ class_device_create(n2lm_class, NULL, MKDEV(NSLU2BZ_MAJOR, 0), NULL, "buzzer");
- }
-
- return 0;
diff --git a/packages/linux/nslu2-kernel/2.6.14-mm/defconfig b/packages/linux/nslu2-kernel/2.6.14-mm/defconfig
deleted file mode 100644
index ecb422f0d7..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14-mm/defconfig
+++ /dev/null
@@ -1,1595 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.14
-# Mon Nov 7 22:59:39 2005
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SWAP_PREFETCH=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_EMBEDDED=y
-# CONFIG_KALLSYMS is not set
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-# CONFIG_BASE_FULL is not set
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=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=1
-# 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
-
-#
-# System Type
-#
-# 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_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-CONFIG_ARCH_IXP4XX=y
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
-
-#
-# Intel IXP4xx Implementation Options
-#
-
-#
-# IXP4xx Platforms
-#
-# CONFIG_ARCH_AVILA is not set
-# CONFIG_ARCH_ADI_COYOTE is not set
-# CONFIG_ARCH_IXDP425 is not set
-# CONFIG_MACH_IXDPG425 is not set
-# CONFIG_MACH_IXDP465 is not set
-CONFIG_MACH_NSLU2=y
-# CONFIG_ARCH_PRPMC1100 is not set
-# CONFIG_MACH_GTWX5715 is not set
-
-#
-# IXP4xx Options
-#
-CONFIG_IXP4XX_INDIRECT_PCI=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_XSCALE_PMU=y
-CONFIG_DMABOUNCE=y
-
-#
-# Bus support
-#
-CONFIG_ISA_DMA_API=y
-CONFIG_PCI=y
-# CONFIG_PCI_LEGACY_PROC is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_PREEMPT is not set
-# CONFIG_NO_IDLE_HZ 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_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="root=/dev/mtdblock4 rw rootfstype=jffs2 mem=32M@0x00000000 init=/linuxrc x1205.hctosys=1 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_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=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_TUNNEL=m
-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_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-# CONFIG_NETFILTER_NETLINK is not set
-
-#
-# 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_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=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_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_PHYSDEV=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_REALM=m
-# CONFIG_IP_NF_MATCH_SCTP is not set
-# CONFIG_IP_NF_MATCH_DCCP is not set
-CONFIG_IP_NF_MATCH_COMMENT=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-# CONFIG_IP_NF_MATCH_STRING is not set
-CONFIG_IP_NF_FILTER=m
-# CONFIG_IP_NF_TARGET_REJECT is not set
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_TARGET_NFQUEUE is not set
-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_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_CLASSIFY=m
-# CONFIG_IP_NF_TARGET_TTL is not set
-# CONFIG_IP_NF_RAW 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_IP6_NF_TARGET_NFQUEUE is not set
-
-#
-# 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
-# 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=y
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# 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
-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 is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-
-#
-# 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 is not set
-# CONFIG_INFTL 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_XIP 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_EDB7312 is not set
-# 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_BLKMTD 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
-
-#
-# 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 is not set
-# 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_INITRD=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE 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"
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE 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=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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI Transport Layers
-#
-# CONFIG_SAS_CLASS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_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 is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_FC is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-CONFIG_SCSI_QLA2XXX=y
-# CONFIG_SCSI_QLA21XX is not set
-# CONFIG_SCSI_QLA22XX is not set
-# CONFIG_SCSI_QLA2300 is not set
-# CONFIG_SCSI_QLA2322 is not set
-# CONFIG_SCSI_QLA6312 is not set
-# CONFIG_SCSI_QLA24XX 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_RAID5=m
-CONFIG_MD_RAID6=m
-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=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
-
-#
-# 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=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# CONFIG_AIRO 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_HOSTAP is not set
-# CONFIG_ACX 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-CONFIG_NETCONSOLE=m
-# CONFIG_KGDBOE is not set
-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=m
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# 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 is not set
-# CONFIG_INPUT_MOUSE 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 is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-# CONFIG_VT 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_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=y
-CONFIG_LEGACY_PTY_COUNT=16
-
-#
-# 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=y
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-# CONFIG_NVRAM is not set
-CONFIG_RTC=m
-# 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=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_IXP4XX=y
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_SCx200_ACB 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 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-CONFIG_SENSORS_X1205=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
-
-#
-# Hardware Monitoring support
-#
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID 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_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_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_W83781D 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_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-CONFIG_VIDEO_BT848=m
-# CONFIG_VIDEO_SAA6588 is not set
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=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_SAA7134=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_EM28XX is not set
-CONFIG_VIDEO_OVCAMCHIP=m
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO 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
-
-#
-# Graphics support
-#
-# CONFIG_FB is not set
-
-#
-# Speakup console speech
-#
-# CONFIG_SPEAKUP 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_RTCTIMER is not set
-# 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_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_CS46XX is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_YMFPCI is not set
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_CMIPCI 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_MAESTRO3 is not set
-# CONFIG_SND_FM801 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_SONICVIBES is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_HDA_INTEL 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=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 is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-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_ONETOUCH is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# 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_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_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
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC 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_W9968CF is not set
-CONFIG_USB_PWC=m
-
-#
-# 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_ZD1201 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_AIRPRIME 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_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_NOKIA_DKU2 is not set
-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_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-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_CYTHERM is not set
-# CONFIG_USB_GOTEMP 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
-
-#
-# 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_REISER4_FS is not set
-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_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_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_ASFS_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_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=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_XATTR=y
-CONFIG_CIFS_POSIX=y
-# 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_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_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_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 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/nslu2-kernel/2.6.14/10-ixp4xx-copy-from.patch b/packages/linux/nslu2-kernel/2.6.14/10-ixp4xx-copy-from.patch
deleted file mode 100644
index f3da2e093f..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/10-ixp4xx-copy-from.patch
+++ /dev/null
@@ -1,73 +0,0 @@
---- linux-2.6.14/drivers/mtd/maps/ixp4xx.c 2005-10-27 17:02:08.000000000 -0700
-+++ linux-2.6.14/drivers/mtd/maps/ixp4xx.c 2005-10-29 23:11:24.990820968 -0700
-@@ -38,10 +38,14 @@
- #define BYTE1(h) ((h) & 0xFF)
- #endif
-
-+#define FLASHWORD(a) (*(__u16*)(a))
-+#define FLASHVAL(a) FLASHWORD(a)
-+#define FLASHSET(a,v) do { FLASHWORD(a) = (v); } while (0)
-+
- static map_word ixp4xx_read16(struct map_info *map, unsigned long ofs)
- {
- map_word val;
-- val.x[0] = *(__u16 *) (map->map_priv_1 + ofs);
-+ val.x[0] = FLASHVAL(map->map_priv_1 + ofs);
- return val;
- }
-
-@@ -53,19 +57,25 @@ static map_word ixp4xx_read16(struct map
- static void ixp4xx_copy_from(struct map_info *map, void *to,
- unsigned long from, ssize_t len)
- {
-- int i;
-- u8 *dest = (u8 *) to;
-- u16 *src = (u16 *) (map->map_priv_1 + from);
-- u16 data;
--
-- for (i = 0; i < (len / 2); i++) {
-- data = src[i];
-- dest[i * 2] = BYTE0(data);
-- dest[i * 2 + 1] = BYTE1(data);
-+ u8 *dest, *src;
-+
-+ if (len <= 0)
-+ return;
-+
-+ dest = (u8 *) to;
-+ src = (u8 *) (map->map_priv_1 + from);
-+ if (from & 1)
-+ *dest++ = BYTE1(FLASHVAL(src-1)), ++src, --len;
-+
-+ while (len >= 2) {
-+ u16 data = FLASHVAL(src); src += 2;
-+ *dest++ = BYTE0(data);
-+ *dest++ = BYTE1(data);
-+ len -= 2;
- }
-
-- if (len & 1)
-- dest[len - 1] = BYTE0(src[i]);
-+ if (len > 0)
-+ *dest++ = BYTE0(FLASHVAL(src));
- }
-
- /*
-@@ -75,7 +85,7 @@ static void ixp4xx_copy_from(struct map_
- static void ixp4xx_probe_write16(struct map_info *map, map_word d, unsigned long adr)
- {
- if (!(adr & 1))
-- *(__u16 *) (map->map_priv_1 + adr) = d.x[0];
-+ FLASHSET(map->map_priv_1 + adr, d.x[0]);
- }
-
- /*
-@@ -83,7 +93,7 @@ static void ixp4xx_probe_write16(struct
- */
- static void ixp4xx_write16(struct map_info *map, map_word d, unsigned long adr)
- {
-- *(__u16 *) (map->map_priv_1 + adr) = d.x[0];
-+ FLASHSET(map->map_priv_1 + adr, d.x[0]);
- }
-
- struct ixp4xx_flash_info {
diff --git a/packages/linux/nslu2-kernel/2.6.14/10-ixp4xx-le.patch b/packages/linux/nslu2-kernel/2.6.14/10-ixp4xx-le.patch
deleted file mode 100644
index 0b50e4e1a0..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/10-ixp4xx-le.patch
+++ /dev/null
@@ -1,54 +0,0 @@
---- linux-2.6.14/drivers/mtd/maps/ixp4xx.c 2005-10-27 17:02:08.000000000 -0700
-+++ linux-2.6.14/drivers/mtd/maps/ixp4xx.c 2005-10-29 23:11:24.990820968 -0700
-@@ -22,6 +22,7 @@
- #include <linux/string.h>
- #include <linux/mtd/mtd.h>
- #include <linux/mtd/map.h>
-+#include <linux/mtd/cfi_endian.h>
- #include <linux/mtd/partitions.h>
- #include <linux/ioport.h>
- #include <linux/device.h>
-@@ -30,17 +31,40 @@
-
- #include <linux/reboot.h>
-
-+/* On a little-endian IXP4XX system (tested on NSLU2) an LDRH or STRH
-+ * will flip the second address bit - i.e. XOR the address with 10b.
-+ * This causes the cfi commands (sent to the command address, 0xAA for
-+ * 16 bit flash) to fail. This is fixed here by XOR'ing the address
-+ * before use with 10b. The cost of this is that the flash layout ends
-+ * up with pdp-endiannes (on an LE system), however this is not a problem
-+ * as the access code consistently only accesses half words - so the
-+ * endianness is not determinable on stuff which is written and read
-+ * consistently in the little endian world.
-+ *
-+ * For flash data from the big-endian world, however, the results are
-+ * weird - the pdp-endianness results in the data apparently being
-+ * 2-byte swapped (as in dd conv=swab). To work round this the 16
-+ * bit values are written and read using cpu_to_cfi16 and cfi16_to_cpu,
-+ * by default these are no-ops, but if the MTD driver is configed with
-+ * CONFIG_MTD_CFI_BE_BYTE_SWAP the macros will byte swap the data,
-+ * resulting in a consistently BE view of the flash on both BE (no
-+ * op) and LE systems. This config setting also causes the command
-+ * data from the CFI implementation to get swapped - as is required
-+ * so that this code will *unswap* it and give the correct command
-+ * data to the flash.
-+ */
- #ifndef __ARMEB__
- #define BYTE0(h) ((h) & 0xFF)
- #define BYTE1(h) (((h) >> 8) & 0xFF)
-+#define FLASHWORD(a) (*(__u16*)((u32)(a) ^ 2))
- #else
- #define BYTE0(h) (((h) >> 8) & 0xFF)
- #define BYTE1(h) ((h) & 0xFF)
-+#define FLASHWORD(a) (*(__u16*)(a))
- #endif
-
--#define FLASHWORD(a) (*(__u16*)(a))
--#define FLASHVAL(a) FLASHWORD(a)
--#define FLASHSET(a,v) do { FLASHWORD(a) = (v); } while (0)
-+#define FLASHVAL(a) cfi16_to_cpu(FLASHWORD(a))
-+#define FLASHSET(a,v) (FLASHWORD(a) = cpu_to_cfi16(v))
-
- static map_word ixp4xx_read16(struct map_info *map, unsigned long ofs)
- {
diff --git a/packages/linux/nslu2-kernel/2.6.14/10-mtdpart-redboot-fis-byteswap.patch b/packages/linux/nslu2-kernel/2.6.14/10-mtdpart-redboot-fis-byteswap.patch
deleted file mode 100644
index 3fa0535abf..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/10-mtdpart-redboot-fis-byteswap.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-drivers/mtd/redboot.c: recognise a foreign byte sex partition table
-
-The RedBoot boot loader writes flash partition tables containing native
-byte sex 32 bit values. When booting an opposite byte sex kernel (e.g. an
-LE kernel from BE RedBoot) the current MTD driver fails to handle the
-partition table and therefore is unable to generate the correct partition
-map for the flash.
-
-The patch recognises that the FIS directory (the partition table) is
-byte-reversed by examining the partition table size, which is known to be
-one erase block (this is an assumption made elsewhere in redboot.c). If
-the size matches the erase block after byte swapping the value then
-byte-reversal is assumed, if not no further action is taken. The patched
-code is fail safe; should redboot.c be changed to support a partition table
-with a modified size field the test will fail and the partition table will
-be assumed to have the host byte sex.
-
-If byte-reversal is detected the patch byte swaps the remainder of the 32
-bit fields in the copy of the table; this copy is then used to set up the
-MTD partition map.
-
-Signed-off-by: John Bowler <jbowler@acm.org>
-Signed-off-by: Andrew Morton <akpm@osdl.org>
-Modified slightly and
-Signed-off-by: David Woodhouse <dwmw2@infradead.org>
-
-Index: drivers/mtd/redboot.c
-===================================================================
-RCS file: /home/cvs/mtd/drivers/mtd/redboot.c,v
-retrieving revision 1.18
-retrieving revision 1.19
-diff -u -p -r1.18 -r1.19
---- linux-2.6.15/drivers/mtd/redboot.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/mtd/redboot.c 1970-01-01 00:00:00.000000000 +0000
-@@ -89,8 +89,32 @@ static int parse_redboot_partitions(stru
- i = numslots;
- break;
- }
-- if (!memcmp(buf[i].name, "FIS directory", 14))
-+ if (!memcmp(buf[i].name, "FIS directory", 14)) {
-+ /* This is apparently the FIS directory entry for the
-+ * FIS directory itself. The FIS directory size is
-+ * one erase block; if the buf[i].size field is
-+ * swab32(erasesize) then we know we are looking at
-+ * a byte swapped FIS directory - swap all the entries!
-+ * (NOTE: this is 'size' not 'data_length'; size is
-+ * the full size of the entry.)
-+ */
-+ if (swab32(buf[i].size) == master->erasesize) {
-+ int j;
-+ for (j = 0; j < numslots && buf[j].name[0] != 0xff; ++j) {
-+ /* The unsigned long fields were written with the
-+ * wrong byte sex, name and pad have no byte sex.
-+ */
-+ swab32s(&buf[j].flash_base);
-+ swab32s(&buf[j].mem_base);
-+ swab32s(&buf[j].size);
-+ swab32s(&buf[j].entry_point);
-+ swab32s(&buf[j].data_length);
-+ swab32s(&buf[j].desc_cksum);
-+ swab32s(&buf[j].file_cksum);
-+ }
-+ }
- break;
-+ }
- }
- if (i == numslots) {
- /* Didn't find it */
-
-
diff --git a/packages/linux/nslu2-kernel/2.6.14/15-ixp4xx-writesb-l-w.patch b/packages/linux/nslu2-kernel/2.6.14/15-ixp4xx-writesb-l-w.patch
deleted file mode 100644
index 6ac0807f1e..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/15-ixp4xx-writesb-l-w.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-# The inline caller of these APIs were changed to have
-# const vaddr parameters...
---- linux-2.6.13/include/asm-arm/arch-ixp4xx/io.h.orig 2005-09-24 17:06:19.968099976 -0700
-+++ linux-2.6.13/include/asm-arm/arch-ixp4xx/io.h 2005-09-24 17:06:52.542149731 -0700
-@@ -113,7 +113,7 @@
- }
-
- static inline void
--__ixp4xx_writesb(u32 bus_addr, u8 *vaddr, int count)
-+__ixp4xx_writesb(u32 bus_addr, const u8 *vaddr, int count)
- {
- while (count--)
- writeb(*vaddr++, bus_addr);
-@@ -136,7 +136,7 @@
- }
-
- static inline void
--__ixp4xx_writesw(u32 bus_addr, u16 *vaddr, int count)
-+__ixp4xx_writesw(u32 bus_addr, const u16 *vaddr, int count)
- {
- while (count--)
- writew(*vaddr++, bus_addr);
-@@ -154,7 +154,7 @@
- }
-
- static inline void
--__ixp4xx_writesl(u32 bus_addr, u32 *vaddr, int count)
-+__ixp4xx_writesl(u32 bus_addr, const u32 *vaddr, int count)
- {
- while (count--)
- writel(*vaddr++, bus_addr);
diff --git a/packages/linux/nslu2-kernel/2.6.14/18-ixp4xx-io-h-addr.patch b/packages/linux/nslu2-kernel/2.6.14/18-ixp4xx-io-h-addr.patch
deleted file mode 100644
index 5813bbb7ac..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/18-ixp4xx-io-h-addr.patch
+++ /dev/null
@@ -1,287 +0,0 @@
---- linux-2.6.14/include/asm-arm/arch-ixp4xx/io.h 2005-10-29 23:33:21.757679882 -0700
-+++ linux-2.6.14/include/asm-arm/arch-ixp4xx/io.h 2005-10-29 23:47:02.581331058 -0700
-@@ -80,9 +80,9 @@ __ixp4xx_iounmap(void __iomem *addr)
- #define __arch_ioremap(a, s, f, x) __ixp4xx_ioremap(a, s, f, x)
- #define __arch_iounmap(a) __ixp4xx_iounmap(a)
-
--#define writeb(p, v) __ixp4xx_writeb(p, v)
--#define writew(p, v) __ixp4xx_writew(p, v)
--#define writel(p, v) __ixp4xx_writel(p, v)
-+#define writeb(v, p) __ixp4xx_writeb(v, p)
-+#define writew(v, p) __ixp4xx_writew(v, p)
-+#define writel(v, p) __ixp4xx_writel(v, p)
-
- #define writesb(p, v, l) __ixp4xx_writesb(p, v, l)
- #define writesw(p, v, l) __ixp4xx_writesw(p, v, l)
-@@ -97,8 +97,9 @@ __ixp4xx_iounmap(void __iomem *addr)
- #define readsl(p, v, l) __ixp4xx_readsl(p, v, l)
-
- static inline void
--__ixp4xx_writeb(u8 value, u32 addr)
-+__ixp4xx_writeb(u8 value, volatile void __iomem *p)
- {
-+ u32 addr = (u32)p;
- u32 n, byte_enables, data;
-
- if (addr >= VMALLOC_START) {
-@@ -113,15 +114,16 @@ __ixp4xx_writeb(u8 value, u32 addr)
- }
-
- static inline void
--__ixp4xx_writesb(u32 bus_addr, const u8 *vaddr, int count)
-+__ixp4xx_writesb(volatile void __iomem *bus_addr, const u8 *vaddr, int count)
- {
- while (count--)
- writeb(*vaddr++, bus_addr);
- }
-
- static inline void
--__ixp4xx_writew(u16 value, u32 addr)
-+__ixp4xx_writew(u16 value, volatile void __iomem *p)
- {
-+ u32 addr = (u32)p;
- u32 n, byte_enables, data;
-
- if (addr >= VMALLOC_START) {
-@@ -136,15 +138,16 @@ __ixp4xx_writew(u16 value, u32 addr)
- }
-
- static inline void
--__ixp4xx_writesw(u32 bus_addr, const u16 *vaddr, int count)
-+__ixp4xx_writesw(volatile void __iomem *bus_addr, const u16 *vaddr, int count)
- {
- while (count--)
- writew(*vaddr++, bus_addr);
- }
-
- static inline void
--__ixp4xx_writel(u32 value, u32 addr)
-+__ixp4xx_writel(u32 value, volatile void __iomem *p)
- {
-+ u32 addr = (u32)p;
- if (addr >= VMALLOC_START) {
- __raw_writel(value, addr);
- return;
-@@ -154,15 +157,16 @@ __ixp4xx_writel(u32 value, u32 addr)
- }
-
- static inline void
--__ixp4xx_writesl(u32 bus_addr, const u32 *vaddr, int count)
-+__ixp4xx_writesl(volatile void __iomem *bus_addr, const u32 *vaddr, int count)
- {
- while (count--)
- writel(*vaddr++, bus_addr);
- }
-
- static inline unsigned char
--__ixp4xx_readb(u32 addr)
-+__ixp4xx_readb(const volatile void __iomem *p)
- {
-+ u32 addr = (u32)p;
- u32 n, byte_enables, data;
-
- if (addr >= VMALLOC_START)
-@@ -177,15 +181,16 @@ __ixp4xx_readb(u32 addr)
- }
-
- static inline void
--__ixp4xx_readsb(u32 bus_addr, u8 *vaddr, u32 count)
-+__ixp4xx_readsb(const volatile void __iomem *bus_addr, u8 *vaddr, u32 count)
- {
- while (count--)
- *vaddr++ = readb(bus_addr);
- }
-
- static inline unsigned short
--__ixp4xx_readw(u32 addr)
-+__ixp4xx_readw(const volatile void __iomem *p)
- {
-+ u32 addr = (u32)p;
- u32 n, byte_enables, data;
-
- if (addr >= VMALLOC_START)
-@@ -200,15 +205,16 @@ __ixp4xx_readw(u32 addr)
- }
-
- static inline void
--__ixp4xx_readsw(u32 bus_addr, u16 *vaddr, u32 count)
-+__ixp4xx_readsw(const volatile void __iomem *bus_addr, u16 *vaddr, u32 count)
- {
- while (count--)
- *vaddr++ = readw(bus_addr);
- }
-
- static inline unsigned long
--__ixp4xx_readl(u32 addr)
-+__ixp4xx_readl(const volatile void __iomem *p)
- {
-+ u32 addr = (u32)p;
- u32 data;
-
- if (addr >= VMALLOC_START)
-@@ -221,7 +227,7 @@ __ixp4xx_readl(u32 addr)
- }
-
- static inline void
--__ixp4xx_readsl(u32 bus_addr, u32 *vaddr, u32 count)
-+__ixp4xx_readsl(const volatile void __iomem *bus_addr, u32 *vaddr, u32 count)
- {
- while (count--)
- *vaddr++ = readl(bus_addr);
-@@ -239,7 +245,7 @@ __ixp4xx_readsl(u32 bus_addr, u32 *vaddr
- eth_copy_and_sum((s),__mem_pci(c),(l),(b))
-
- static inline int
--check_signature(unsigned long bus_addr, const unsigned char *signature,
-+check_signature(const unsigned char __iomem *bus_addr, const unsigned char *signature,
- int length)
- {
- int retval = 0;
-@@ -389,7 +395,7 @@ __ixp4xx_insl(u32 io_addr, u32 *vaddr, u
- #define __is_io_address(p) (((unsigned long)p >= PIO_OFFSET) && \
- ((unsigned long)p <= (PIO_MASK + PIO_OFFSET)))
- static inline unsigned int
--__ixp4xx_ioread8(void __iomem *addr)
-+__ixp4xx_ioread8(const void __iomem *addr)
- {
- unsigned long port = (unsigned long __force)addr;
- if (__is_io_address(port))
-@@ -398,12 +404,12 @@ __ixp4xx_ioread8(void __iomem *addr)
- #ifndef CONFIG_IXP4XX_INDIRECT_PCI
- return (unsigned int)__raw_readb(port);
- #else
-- return (unsigned int)__ixp4xx_readb(port);
-+ return (unsigned int)__ixp4xx_readb(addr);
- #endif
- }
-
- static inline void
--__ixp4xx_ioread8_rep(void __iomem *addr, void *vaddr, u32 count)
-+__ixp4xx_ioread8_rep(const void __iomem *addr, void *vaddr, u32 count)
- {
- unsigned long port = (unsigned long __force)addr;
- if (__is_io_address(port))
-@@ -412,12 +418,12 @@ __ixp4xx_ioread8_rep(void __iomem *addr,
- #ifndef CONFIG_IXP4XX_INDIRECT_PCI
- __raw_readsb(addr, vaddr, count);
- #else
-- __ixp4xx_readsb(port, vaddr, count);
-+ __ixp4xx_readsb(addr, vaddr, count);
- #endif
- }
-
- static inline unsigned int
--__ixp4xx_ioread16(void __iomem *addr)
-+__ixp4xx_ioread16(const void __iomem *addr)
- {
- unsigned long port = (unsigned long __force)addr;
- if (__is_io_address(port))
-@@ -426,12 +432,12 @@ __ixp4xx_ioread16(void __iomem *addr)
- #ifndef CONFIG_IXP4XX_INDIRECT_PCI
- return le16_to_cpu(__raw_readw((u32)port));
- #else
-- return (unsigned int)__ixp4xx_readw((u32)port);
-+ return (unsigned int)__ixp4xx_readw(addr);
- #endif
- }
-
- static inline void
--__ixp4xx_ioread16_rep(void __iomem *addr, void *vaddr, u32 count)
-+__ixp4xx_ioread16_rep(const void __iomem *addr, void *vaddr, u32 count)
- {
- unsigned long port = (unsigned long __force)addr;
- if (__is_io_address(port))
-@@ -440,12 +446,12 @@ __ixp4xx_ioread16_rep(void __iomem *addr
- #ifndef CONFIG_IXP4XX_INDIRECT_PCI
- __raw_readsw(addr, vaddr, count);
- #else
-- __ixp4xx_readsw(port, vaddr, count);
-+ __ixp4xx_readsw(addr, vaddr, count);
- #endif
- }
-
- static inline unsigned int
--__ixp4xx_ioread32(void __iomem *addr)
-+__ixp4xx_ioread32(const void __iomem *addr)
- {
- unsigned long port = (unsigned long __force)addr;
- if (__is_io_address(port))
-@@ -454,13 +460,13 @@ __ixp4xx_ioread32(void __iomem *addr)
- #ifndef CONFIG_IXP4XX_INDIRECT_PCI
- return le32_to_cpu(__raw_readl((u32)port));
- #else
-- return (unsigned int)__ixp4xx_readl((u32)port);
-+ return (unsigned int)__ixp4xx_readl(addr);
- #endif
- }
- }
-
- static inline void
--__ixp4xx_ioread32_rep(void __iomem *addr, void *vaddr, u32 count)
-+__ixp4xx_ioread32_rep(const void __iomem *addr, void *vaddr, u32 count)
- {
- unsigned long port = (unsigned long __force)addr;
- if (__is_io_address(port))
-@@ -469,7 +475,7 @@ __ixp4xx_ioread32_rep(void __iomem *addr
- #ifndef CONFIG_IXP4XX_INDIRECT_PCI
- __raw_readsl(addr, vaddr, count);
- #else
-- __ixp4xx_readsl(port, vaddr, count);
-+ __ixp4xx_readsl(addr, vaddr, count);
- #endif
- }
-
-@@ -483,7 +489,7 @@ __ixp4xx_iowrite8(u8 value, void __iomem
- #ifndef CONFIG_IXP4XX_INDIRECT_PCI
- __raw_writeb(value, port);
- #else
-- __ixp4xx_writeb(value, port);
-+ __ixp4xx_writeb(value, addr);
- #endif
- }
-
-@@ -497,7 +503,7 @@ __ixp4xx_iowrite8_rep(void __iomem *addr
- #ifndef CONFIG_IXP4XX_INDIRECT_PCI
- __raw_writesb(addr, vaddr, count);
- #else
-- __ixp4xx_writesb(port, vaddr, count);
-+ __ixp4xx_writesb(addr, vaddr, count);
- #endif
- }
-
-@@ -511,7 +517,7 @@ __ixp4xx_iowrite16(u16 value, void __iom
- #ifndef CONFIG_IXP4XX_INDIRECT_PCI
- __raw_writew(cpu_to_le16(value), addr);
- #else
-- __ixp4xx_writew(value, port);
-+ __ixp4xx_writew(value, addr);
- #endif
- }
-
-@@ -525,7 +531,7 @@ __ixp4xx_iowrite16_rep(void __iomem *add
- #ifndef CONFIG_IXP4XX_INDIRECT_PCI
- __raw_writesw(addr, vaddr, count);
- #else
-- __ixp4xx_writesw(port, vaddr, count);
-+ __ixp4xx_writesw(addr, vaddr, count);
- #endif
- }
-
-@@ -539,7 +545,7 @@ __ixp4xx_iowrite32(u32 value, void __iom
- #ifndef CONFIG_IXP4XX_INDIRECT_PCI
- __raw_writel(cpu_to_le32(value), port);
- #else
-- __ixp4xx_writel(value, port);
-+ __ixp4xx_writel(value, addr);
- #endif
- }
-
-@@ -553,7 +559,7 @@ __ixp4xx_iowrite32_rep(void __iomem *add
- #ifndef CONFIG_IXP4XX_INDIRECT_PCI
- __raw_writesl(addr, vaddr, count);
- #else
-- __ixp4xx_writesl(port, vaddr, count);
-+ __ixp4xx_writesl(addr, vaddr, count);
- #endif
- }
-
diff --git a/packages/linux/nslu2-kernel/2.6.14/19-jffs2-force-be.patch b/packages/linux/nslu2-kernel/2.6.14/19-jffs2-force-be.patch
deleted file mode 100644
index 4406d17857..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/19-jffs2-force-be.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- linux-2.6.14.1/fs/jffs2/nodelist.h.orig 2005-11-09 23:12:29.641449728 -0800
-+++ linux-2.6.14.1/fs/jffs2/nodelist.h 2005-11-09 23:13:19.228570049 -0800
-@@ -44,7 +44,9 @@
- #define D2(x)
- #endif
-
--#define JFFS2_NATIVE_ENDIAN
-+#undef JFFS2_NATIVE_ENDIAN
-+#define JFFS2_BIG_ENDIAN 1
-+#undef JFFS2_LITTLE_ENDIAN
-
- /* Note we handle mode bits conversion from JFFS2 (i.e. Linux) to/from
- whatever OS we're actually running on here too. */
diff --git a/packages/linux/nslu2-kernel/2.6.14/20-timer.patch b/packages/linux/nslu2-kernel/2.6.14/20-timer.patch
deleted file mode 100644
index 3d4a03f616..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/20-timer.patch
+++ /dev/null
@@ -1,285 +0,0 @@
---- linux-2.6.15/arch/arm/mach-ixp4xx/common.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/mach-ixp4xx/common.c 1970-01-01 00:00:00.000000000 +0000
-@@ -239,36 +239,165 @@ void __init ixp4xx_init_irq(void)
- * IXP4xx timer tick
- * We use OS timer1 on the CPU for the timer tick and the timestamp
- * counter as a source of real clock ticks to account for missed jiffies.
-+ *
-+ * 'CLOCK_TICK_RATE' is the nominal number of internal ticks per second,
-+ * this is significantly greater than the actual number on any ixp4xx
-+ * board. Neither this nor 'LATCH' are required by this code because
-+ * the only requirement is to generate HZ timer_tick calls per second.
- *************************************************************************/
-+#if TICK_NSEC * HZ != 1000000000
-+ /* This will cause the jiffies to drift unnecessarily. */
-+# error CLOCK_TICK_RATE should be a multiple of HZ for this code
-+#endif
-+
-+/* These are the control registers for the interrupt handler, they must
-+ * only be read and written by the interrupt handler and by the init
-+ * method (which sets them to 0).
-+ */
-+static volatile u32 last_timer_time;
-+static volatile int accumulated_error;
-+
-+/* Most ixp4xx boards have 66.6666MHz crystals, so default to this, reset
-+ * this from the board level code if required. The following variables
-+ * must be *written* only by set_board_tick_rate
-+ */
-+static u32 board_tick_rate;
-+static u32 board_tick_per_1000; /* board_tick_rate/1000 */
-+static u32 timer_count;
-+
-+/* The following symbol may be written to change the current tick rate,
-+ * it is read by the interrupt handler and used to reload the timer.
-+ * The 'real' value (the one in use) is 'board_tick_rate' above.
-+ * NOTE: this can be tweaked to match the actual crystal on a particular
-+ * machine.
-+ */
-+volatile u32 ixp4xx_board_tick_rate = 66666600;
-+EXPORT_SYMBOL(ixp4xx_board_tick_rate);
-+
-+/* The set API may run asynchronously in the presence of interrupts,
-+ * everything it does it is both atomic and complete (notice that it
-+ * doesn't change any of the 'volatile' values). The mathematics in
-+ * here require the following values. Changing the board tick rate
-+ * implies an unknown error in the current timestamp tick count.
-+ */
-+#if IXP4XX_OST_RELOAD_MASK != 3 || IXP4XX_OST_ENABLE != 1
-+# error unexpected value for timer reload mask
-+#endif
-+static void set_board_tick_rate(u32 rate) {
-+ u32 reload;
-+
-+ /* Store the two effectively informational rate values, the
-+ * error calculation is (rate - count*HZ) (above), and rate
-+ * is changed first, this can cause a temporary error which
-+ * will be corrected on the next interrupt.
-+ */
-+ board_tick_rate = rate;
-+ board_tick_per_1000 = (rate+500)/1000;
-+
-+ /* Calculate the correct value to load into the timer countdown
-+ * register, the low two bits must be b01 (to enable the timer).
-+ * Select the top bits to be as close to the desired value as
-+ * possible.
-+ *
-+ * First find the best value, regardless of the low two bits -
-+ * this is the value used in the interrupt calculation even though
-+ * it cannot necessarily be set into the register.
-+ */
-+ timer_count = (rate + (HZ/2))/HZ;
-+
-+ /* Now the timer_ticks are being generated at this rate, calculate
-+ * an appropriate value for the register. This stores a 30 bit
-+ * value which gives a period of 4*x+1, we want:
-+ *
-+ * 4*x+1 = board_tick_rate/HZ
-+ *
-+ * This needs to be rounded to the closest 4*HZ value:
-+ *
-+ * x = ((board_tick_rate-HZ) + (4*HZ)/2) / 4*HZ
-+ * x = (board_tick_rate+HZ) / (4*HZ);
-+ */
-+ reload = (board_tick_rate + HZ) / HZ;
-+ reload = (reload & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE;
-+ *IXP4XX_OSRT1 = reload;
-
--static unsigned volatile last_jiffy_time;
-+ /* If the clock is drifing, look in syslog: */
-+ printk(KERN_INFO "IXP4xx: FREQ=%d COUNT=%d\n", rate, reload);
-+}
-
--#define CLOCK_TICKS_PER_USEC ((CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC)
-+/* This returns the time in timer ticks since the 'last_timer_time'
-+ * recorded above. Use this to avoid arithmetic errors because of
-+ * the overflow when the timer wraps.
-+ */
-+static inline u32 ixp4xx_timer_delta(void)
-+{
-+ return *IXP4XX_OSTS - last_timer_time;
-+}
-
- /* IRQs are disabled before entering here from do_gettimeofday() */
- static unsigned long ixp4xx_gettimeoffset(void)
- {
-- u32 elapsed;
--
-- elapsed = *IXP4XX_OSTS - last_jiffy_time;
-+ /* Return the offset of the current time from the last time
-+ * timer tick in microseconds. This is only used for the
-+ * gettimeofday call.
-+ *
-+ * The result of this API is at most about 20000 (for a 50Hz
-+ * HZ - 20000 uS/tick), the input delta is at most about
-+ * 1.3M - 21 bits.
-+ */
-+ u32 delta = ixp4xx_timer_delta(); /* About 21 bits max */
-+ /* return delta * 1000000 / board_tick_rate; */
-+ return (delta * 1000 + board_tick_per_1000/2) / board_tick_per_1000;
-+}
-
-- return elapsed / CLOCK_TICKS_PER_USEC;
-+/* This is the correct adjustment to the counter to compensate for an
-+ * error iff timer_count-1 <= exact_count <= timer_count+1
-+ */
-+static inline int adjustment(int error) {
-+ if (error >= HZ)
-+ return 1;
-+ else if (error <= -HZ)
-+ return -1;
-+ return 0;
- }
-
- static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
- {
-+ u32 rate;
-+ u32 count;
-+ int error;
-+
- write_seqlock(&xtime_lock);
-
- /* Clear Pending Interrupt by writing '1' to it */
- *IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND;
-
-+ /* If the board tick rate has been changed update the cached
-+ * value.
-+ */
-+ if (ixp4xx_board_tick_rate != board_tick_rate) {
-+ set_board_tick_rate(ixp4xx_board_tick_rate);
-+ accumulated_error = 0;
-+ }
-+
- /*
- * Catch up with the real idea of time
-+ *
-+ * board_tick_rate: actual ixp4xx ticks/second, read-only
-+ * accumulated_error: aggregate error/tick * HZ, read/write
-+ * timer_count: best ixp4xx ticks per timer_tick, read-only
- */
-- while ((*IXP4XX_OSTS - last_jiffy_time) > LATCH) {
-+ rate = board_tick_rate;
-+ error = accumulated_error;
-+ count = timer_count;
-+ do {
-+ u32 adjusted_count = count + adjustment(error);
-+ if (ixp4xx_timer_delta() < adjusted_count)
-+ break;
- timer_tick(regs);
-- last_jiffy_time += LATCH;
-- }
-+ last_timer_time += adjusted_count;
-+ error += rate - adjusted_count*HZ;
-+ } while (1);
-+ accumulated_error = error;
-
- write_sequnlock(&xtime_lock);
-
-@@ -281,17 +410,30 @@ static struct irqaction ixp4xx_timer_irq
- .handler = ixp4xx_timer_interrupt,
- };
-
-+u32 ixp4xx_get_board_tick_rate(void) {
-+ return board_tick_rate;
-+}
-+
-+EXPORT_SYMBOL(ixp4xx_get_board_tick_rate);
-+
-+void ixp4xx_set_board_tick_rate(u32 rate) {
-+ ixp4xx_board_tick_rate = rate;
-+}
-+
-+EXPORT_SYMBOL(ixp4xx_set_board_tick_rate);
-+
- static void __init ixp4xx_timer_init(void)
- {
- /* Clear Pending Interrupt by writing '1' to it */
- *IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND;
-
- /* Setup the Timer counter value */
-- *IXP4XX_OSRT1 = (LATCH & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE;
-+ set_board_tick_rate(ixp4xx_board_tick_rate);
-
- /* Reset time-stamp counter */
- *IXP4XX_OSTS = 0;
-- last_jiffy_time = 0;
-+ last_timer_time = 0;
-+ accumulated_error = 0;
-
- /* Connect the interrupt handler and enable the interrupt */
- setup_irq(IRQ_IXP4XX_TIMER1, &ixp4xx_timer_irq);
-@@ -337,4 +479,3 @@ void __init ixp4xx_sys_init(void)
- ARRAY_SIZE(ixp46x_devices));
- }
- }
--
---- linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000
-@@ -119,6 +119,11 @@ static void nslu2_power_off(void)
-
- static void __init nslu2_init(void)
- {
-+ /* The NSLU2 has a 33MHz crystal on board - 1.01% different
-+ * from the typical value.
-+ */
-+ ixp4xx_set_board_tick_rate(66000000);
-+
- ixp4xx_sys_init();
-
- pm_power_off = nslu2_power_off;
---- linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000
-@@ -51,7 +51,7 @@ static int nslu2_spkr_event(struct input
- }
-
- if (value > 20 && value < 32767)
-- count = (NSLU2_FREQ / (value*4)) - 1;
-+ count = (ixp4xx_get_board_tick_rate() / (value*4)) - 1;
-
- spin_lock_irqsave(&beep_lock, flags);
-
---- linux-2.6.15/include/asm-arm/arch-ixp4xx/nslu2.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/include/asm-arm/arch-ixp4xx/nslu2.h 1970-01-01 00:00:00.000000000 +0000
-@@ -38,11 +38,6 @@
- #define NSLU2_PCI_INTD_PIN 8
-
-
--/* NSLU2 Timer */
--#define NSLU2_FREQ 66000000
--#define NSLU2_CLOCK_TICK_RATE (((NSLU2_FREQ / HZ & ~IXP4XX_OST_RELOAD_MASK) + 1) * HZ)
--#define NSLU2_CLOCK_TICKS_PER_USEC ((NSLU2_CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC)
--
- /* GPIO */
-
- #define NSLU2_GPIO0 0
---- linux-2.6.15/include/asm-arm/arch-ixp4xx/timex.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/include/asm-arm/arch-ixp4xx/timex.h 1970-01-01 00:00:00.000000000 +0000
-@@ -6,10 +6,23 @@
- #include <asm/hardware.h>
-
- /*
-- * We use IXP425 General purpose timer for our timer needs, it runs at
-- * 66.66... MHz. We do a convulted calculation of CLOCK_TICK_RATE b/c the
-- * timer register ignores the bottom 2 bits of the LATCH value.
-+ * In linux/timex.h 'LATCH' is defined as CLOCK_TICK_RATE/HZ and
-+ * is the number of internal counts per timer interrupt. Thus
-+ * CLOCK_TICK_RATE is LATCH*HZ.
-+ *
-+ * The actual values of these numbers do not matter, because they
-+ * are only used to calculate ACTHZ (rate/latch as a 24.8 fixed
-+ * point number), so the value here gives a LATCH of 1 and pretty
-+ * much guarantees to flush out any off-by-one errors.
-+ *
-+ * ACTHZ is equal to HZ, because CLOCK_TICK_RATE is a multiple of
-+ * HZ, this is checked in the ixp4xx/common.c code.
- */
--#define FREQ 66666666
--#define CLOCK_TICK_RATE (((FREQ / HZ & ~IXP4XX_OST_RELOAD_MASK) + 1) * HZ)
-+#define CLOCK_TICK_RATE HZ
-
-+/* The following allow the exact board tick rate to be set and
-+ * discovered. The value should be exactly twice the frequency
-+ * (in Hz) of the onboard crystal.
-+ */
-+extern u32 ixp4xx_get_board_tick_rate(void);
-+extern void ixp4xx_set_board_tick_rate(u32 new_rate);
diff --git a/packages/linux/nslu2-kernel/2.6.14/28-spinlock-up.patch b/packages/linux/nslu2-kernel/2.6.14/28-spinlock-up.patch
deleted file mode 100644
index 3ae5178cff..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/28-spinlock-up.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- linux-2.6.14-rc5/include/linux/spinlock_up.h 2005-10-26 08:37:20.164248408 -0700
-+++ patched/include/linux/spinlock_up.h 2005-10-26 12:15:13.458898975 -0700
-@@ -47,6 +47,14 @@ static inline void __raw_spin_unlock(raw
- lock->slock = 1;
- }
-
-+#else /* DEBUG_SPINLOCK */
-+#define __raw_spin_is_locked(lock) ((void)(lock), 0)
-+/* for sched.c and kernel_lock.c: */
-+# define __raw_spin_lock(lock) do { (void)(lock); } while (0)
-+# define __raw_spin_unlock(lock) do { (void)(lock); } while (0)
-+# define __raw_spin_trylock(lock) ({ (void)(lock); 1; })
-+#endif /* DEBUG_SPINLOCK */
-+
- /*
- * Read-write spinlocks. No debug version.
- */
-@@ -57,14 +65,6 @@ static inline void __raw_spin_unlock(raw
- #define __raw_read_unlock(lock) do { (void)(lock); } while (0)
- #define __raw_write_unlock(lock) do { (void)(lock); } while (0)
-
--#else /* DEBUG_SPINLOCK */
--#define __raw_spin_is_locked(lock) ((void)(lock), 0)
--/* for sched.c and kernel_lock.c: */
--# define __raw_spin_lock(lock) do { (void)(lock); } while (0)
--# define __raw_spin_unlock(lock) do { (void)(lock); } while (0)
--# define __raw_spin_trylock(lock) ({ (void)(lock); 1; })
--#endif /* DEBUG_SPINLOCK */
--
- #define __raw_read_can_lock(lock) (((void)(lock), 1))
- #define __raw_write_can_lock(lock) (((void)(lock), 1))
-
diff --git a/packages/linux/nslu2-kernel/2.6.14/29-ipv4-route-c-spinlock.patch b/packages/linux/nslu2-kernel/2.6.14/29-ipv4-route-c-spinlock.patch
deleted file mode 100644
index 93e070518c..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/29-ipv4-route-c-spinlock.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- linux-2.6.14-rc5/net/ipv4/route.c 2005-10-26 08:37:20.752285410 -0700
-+++ patched/net/ipv4/route.c 2005-10-26 12:17:00.761651111 -0700
-@@ -231,7 +231,7 @@ static spinlock_t *rt_hash_locks;
- spin_lock_init(&rt_hash_locks[i]); \
- }
- #else
--# define rt_hash_lock_addr(slot) NULL
-+# define rt_hash_lock_addr(slot) ((spinlock_t*)NULL)
- # define rt_hash_lock_init()
- #endif
-
diff --git a/packages/linux/nslu2-kernel/2.6.14/30-i2c-x1205.patch b/packages/linux/nslu2-kernel/2.6.14/30-i2c-x1205.patch
deleted file mode 100644
index 1e775ba8b8..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/30-i2c-x1205.patch
+++ /dev/null
@@ -1,714 +0,0 @@
-diff -urN linux-2.6.14-rc3/drivers/i2c/chips/Kconfig test9/drivers/i2c/chips/Kconfig
---- linux-2.6.14-rc3/drivers/i2c/chips/Kconfig 2005-10-01 13:46:50.000000000 +0200
-+++ test9/drivers/i2c/chips/Kconfig 2005-10-03 16:10:22.000000000 +0200
-@@ -126,4 +126,13 @@
- This driver can also be built as a module. If so, the module
- will be called max6875.
-
-+config SENSORS_X1205
-+ tristate "Xicor X1205 RTC chip"
-+ depends on I2C
-+ help
-+ If you say yes here you get support for the Xicor X1205 RTC chip.
-+
-+ This driver can also be built as a module. If so, the module
-+ will be called x1205
-+
- endmenu
-diff -urN linux-2.6.14-rc3/drivers/i2c/chips/Makefile test9/drivers/i2c/chips/Makefile
---- linux-2.6.14-rc3/drivers/i2c/chips/Makefile 2005-09-17 12:42:33.000000000 +0200
-+++ test9/drivers/i2c/chips/Makefile 2005-10-01 15:30:06.000000000 +0200
-@@ -13,6 +13,7 @@
- obj-$(CONFIG_SENSORS_RTC8564) += rtc8564.o
- obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o
- obj-$(CONFIG_TPS65010) += tps65010.o
-+obj-$(CONFIG_SENSORS_X1205) += x1205.o
-
- ifeq ($(CONFIG_I2C_DEBUG_CHIP),y)
- EXTRA_CFLAGS += -DDEBUG
-diff -urN linux-2.6.14-rc3/drivers/i2c/chips/x1205.c test9/drivers/i2c/chips/x1205.c
---- linux-2.6.14-rc3/drivers/i2c/chips/x1205.c 1970-01-01 01:00:00.000000000 +0100
-+++ test9/drivers/i2c/chips/x1205.c 2005-10-03 16:02:57.000000000 +0200
-@@ -0,0 +1,612 @@
-+/*
-+ * linux/drivers/i2c/chips/x1205.c
-+ *
-+ * x1205.c - An 12c driver for the Xicor X1205 RTC
-+ * Copyright 2004 Karen Spearel
-+ * Copyright 2005 Alessandro Zummo
-+ *
-+ * please send all reports to:
-+ * kas11 at tampabay dot rr dot com
-+ * a dot zummo at towertech dot it
-+ *
-+ * based on the other drivers in this same directory.
-+ *
-+ * 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 <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/i2c.h>
-+#include <linux/string.h>
-+#include <linux/bcd.h>
-+#include <linux/rtc.h>
-+#include <linux/list.h>
-+
-+#include <linux/x1205.h>
-+
-+#define EPOCH_1900 1900
-+#define EPOCH_1970 1970
-+
-+#define DRIVER_VERSION "0.9.6"
-+#define DRIVER_NAME (x1205_driver.name)
-+
-+
-+/* Addresses to scan */
-+static unsigned short normal_i2c[] = { X1205_I2C_BUS_ADDR, I2C_CLIENT_END };
-+
-+/* Insmod parameters */
-+I2C_CLIENT_INSMOD;
-+I2C_CLIENT_MODULE_PARM(hctosys,
-+ "Set the system time from the hardware clock upon initialization");
-+
-+/* Prototypes */
-+
-+static int x1205_attach(struct i2c_adapter *adapter);
-+static int x1205_detach(struct i2c_client *client);
-+static int x1205_probe(struct i2c_adapter *adapter, int address, int kind);
-+static int x1205_validate_client(struct i2c_client *client);
-+
-+static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm,
-+ u8 reg_base);
-+static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm,
-+ int datetoo, u8 reg_base);
-+static int x1205_validate_tm(struct rtc_time *tm);
-+static int x1205_command(struct i2c_client *client, unsigned int cmd, void *arg);
-+static int x1205_hctosys(struct i2c_client *client);
-+
-+
-+static struct i2c_driver x1205_driver = {
-+ .owner = THIS_MODULE,
-+ .name = "x1205",
-+ .flags = I2C_DF_NOTIFY,
-+ .attach_adapter = &x1205_attach,
-+ .detach_client = &x1205_detach,
-+/* .command = &x1205_command,*/
-+};
-+
-+struct x1205_data {
-+ struct i2c_client client;
-+ struct list_head list;
-+ unsigned int epoch;
-+};
-+
-+
-+static const unsigned char days_in_mo[] =
-+{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
-+
-+static LIST_HEAD(x1205_clients);
-+
-+/* Workaround until the I2C subsytem will allow to send
-+ * commands to a specific client. This function will send the command
-+ * to the first client.
-+ */
-+
-+int x1205_do_command(unsigned int cmd, void *arg)
-+{
-+ struct list_head *walk;
-+ struct list_head *tmp;
-+ struct x1205_data *data;
-+
-+ list_for_each_safe(walk, tmp, &x1205_clients) {
-+ data = list_entry(walk, struct x1205_data, list);
-+ return x1205_command(&data->client, cmd, arg);
-+ }
-+
-+ return -ENODEV;
-+}
-+
-+
-+/*
-+ * in the routines that deal directly with the x1205 hardware, we use
-+ * rtc_time -- month 0-11, hour 0-23, yr = calendar year-epoch
-+ * Epoch is inited as 2000. Time is set to UT
-+ */
-+
-+static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm,
-+ u8 reg_base)
-+{
-+ static unsigned char dt_addr[] = { 0, };
-+ static unsigned char sr_addr[] = { 0, };
-+
-+ unsigned char buf[8], sr;
-+
-+ struct i2c_msg msgs[] = {
-+ { client->addr, 0, 2, sr_addr }, /* random read */
-+ { client->addr, I2C_M_RD, 1, &sr },
-+ { client->addr, 0, 2, dt_addr }, /* random read */
-+ { client->addr, I2C_M_RD, 8, buf },
-+ };
-+
-+ struct x1205_data *xdata = i2c_get_clientdata(client);
-+
-+ dt_addr[1] = reg_base;
-+ sr_addr[1] = X1205_REG_SR;
-+
-+ if ((i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs))) ==
-+ ARRAY_SIZE(msgs)) {
-+ /* did we read the correct number of messages? */
-+
-+ /* check for battery failure */
-+ if (sr & X1205_SR_RTCF)
-+ {
-+ dev_info(&client->adapter->dev,
-+ "%s: Clock had a power failure, you must set the date.\n",
-+ DRIVER_NAME);
-+
-+ return -EINVAL;
-+ }
-+
-+ dev_dbg(&client->dev,
-+ "%s: raw read data - sec-%02x min-%02x hr-%02x"
-+ " mday-%02x mon-%02x year-%02x wday-%02x y2k-%02x\n",
-+ __FUNCTION__,
-+ buf[0], buf[1], buf[2], buf[3],
-+ buf[4], buf[5], buf[6], buf[7]);
-+
-+ tm->tm_sec = BCD2BIN(buf[CCR_SEC]);
-+ tm->tm_min = BCD2BIN(buf[CCR_MIN]);
-+ buf[CCR_HOUR] &= ~X1205_HR_MIL;
-+ tm->tm_hour = BCD2BIN(buf[CCR_HOUR]); /* hr is 0-23 */
-+ tm->tm_mday = BCD2BIN(buf[CCR_MDAY]);
-+ tm->tm_mon = BCD2BIN(buf[CCR_MONTH]);
-+ xdata->epoch = BCD2BIN(buf[CCR_Y2K]) * 100;
-+ tm->tm_year = BCD2BIN(buf[CCR_YEAR]) + xdata->epoch - EPOCH_1900;
-+ tm->tm_wday = buf[CCR_WDAY];
-+
-+ dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, "
-+ "mday=%d, mon=%d, year=%d, wday=%d\n",
-+ __FUNCTION__,
-+ tm->tm_sec, tm->tm_min, tm->tm_hour,
-+ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
-+
-+ } else {
-+ dev_dbg(&client->dev, "%s: read error\n", __FUNCTION__);
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm,
-+ int datetoo, u8 reg_base)
-+{
-+ int i, err, xfer;
-+
-+ static unsigned char wel[3] = { 0, X1205_REG_SR,
-+ X1205_SR_WEL };
-+
-+
-+ static unsigned char rwel[3] = { 0, X1205_REG_SR,
-+ X1205_SR_WEL | X1205_SR_RWEL };
-+
-+ static unsigned char diswe[3] = { 0, X1205_REG_SR, 0 };
-+
-+ static unsigned char data[3] = { 0, };
-+ static unsigned char buf[8];
-+
-+ struct x1205_data *xdata = i2c_get_clientdata(client);
-+
-+ if ((err = x1205_validate_tm(tm)) < 0)
-+ return err;
-+
-+ dev_dbg(&client->dev, "%s: secs=%d, mins=%d, hours=%d, "
-+ "mday=%d, mon=%d, year=%d, wday=%d\n",
-+ __FUNCTION__,
-+ tm->tm_sec, tm->tm_min, tm->tm_hour,
-+ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
-+
-+
-+ buf[CCR_SEC] = BIN2BCD(tm->tm_sec);
-+ buf[CCR_MIN] = BIN2BCD(tm->tm_min);
-+
-+ /* Set 24HR format */
-+ buf[CCR_HOUR] = BIN2BCD(tm->tm_hour) | X1205_HR_MIL;
-+
-+ if (datetoo == X1205_DATETOO) {
-+ buf[CCR_MDAY] = BIN2BCD(tm->tm_mday);
-+
-+ /* month, 0 - 11 */
-+ buf[CCR_MONTH] = BIN2BCD(tm->tm_mon); /* input is 0-11 */
-+
-+ /* year, since 1900 */
-+ buf[CCR_YEAR] = BIN2BCD((tm->tm_year + EPOCH_1900 - xdata->epoch));
-+ buf[CCR_WDAY] = tm->tm_wday & 7;
-+ buf[CCR_Y2K] = BIN2BCD(xdata->epoch / 100);
-+ }
-+
-+ xfer = i2c_master_send(client, wel, 3);
-+ dev_dbg(&client->dev, "%s: wen - %x\n", __FUNCTION__, xfer);
-+ if (xfer != 3)
-+ return -EIO;
-+
-+ xfer = i2c_master_send(client, rwel, 3);
-+ dev_dbg(&client->dev, "%s: wenb - %x\n", __FUNCTION__, xfer);
-+ if (xfer != 3)
-+ return -EIO;
-+
-+ for (i = 0; i < 8; i++) {
-+ data[1] = i + reg_base;
-+ data[2] = buf[i];
-+ xfer = i2c_master_send(client, data, 3);
-+
-+ dev_dbg(&client->dev, "%s: xfer %d addr, %02x, data %02x\n",
-+ __FUNCTION__,
-+ xfer, data[1], data[2]);
-+
-+ if (xfer != 3)
-+ return -EIO;
-+ };
-+
-+ xfer = i2c_master_send(client, diswe, 3);
-+ dev_dbg(&client->dev, "%s: wdis - %x\n", __FUNCTION__, xfer);
-+ if (xfer != 3)
-+ return -EIO;
-+
-+ return 0;
-+}
-+
-+static int x1205_hctosys(struct i2c_client *client)
-+{
-+ int err;
-+
-+ struct rtc_time tm;
-+ struct timespec tv;
-+
-+
-+ err = x1205_command(client, X1205_CMD_GETDATETIME, &tm);
-+
-+ if (err)
-+ {
-+ dev_info(&client->adapter->dev,
-+ "%s: Unable to set the system clock\n",
-+ DRIVER_NAME);
-+
-+ return err;
-+
-+ }
-+
-+ /* IMPORTANT: the RTC only stores whole seconds. It is arbitrary whether
-+ * it stores the most close value or the value with partial seconds
-+ * truncated, however it is important for x1205_sync_rtc that it be
-+ * defined to store the truncated value. This is because otherwise it
-+ * is necessary to read both xtime.tv_sec and xtime.tv_nsec in the
-+ * sync function, and atomic reads of >32bits on ARM are not possible.
-+ * So storing the most close value would slow down the sync API. So
-+ * Here we have the truncated value and the best guess is to add 0.5s
-+ */
-+
-+ tv.tv_nsec = NSEC_PER_SEC >> 1;
-+
-+ /* WARNING: this is not the C library 'mktime' call, it is a built in
-+ * inline function from include/linux/time.h. It expects (requires)
-+ * the month to be in the range 1-12
-+ */
-+
-+ tv.tv_sec = mktime(tm.tm_year + EPOCH_1900, tm.tm_mon + 1,
-+ tm.tm_mday, tm.tm_hour,
-+ tm.tm_min, tm.tm_sec);
-+
-+ do_settimeofday(&tv);
-+
-+ dev_info(&client->adapter->dev,
-+ "%s: Setting the system clock to %d-%d-%d %d:%d:%d\n",
-+ DRIVER_NAME,
-+ tm.tm_year + EPOCH_1900, tm.tm_mon + 1,
-+ tm.tm_mday, tm.tm_hour, tm.tm_min,
-+ tm.tm_sec);
-+
-+ return 0;
-+}
-+
-+struct x1205_limit
-+{
-+ unsigned char reg;
-+ unsigned char mask;
-+ unsigned char min;
-+ unsigned char max;
-+};
-+
-+static int x1205_validate_client(struct i2c_client *client)
-+{
-+ int i, xfer;
-+
-+ /* Probe array. We will read the register at the specified
-+ * address and check if the given bits are zero.
-+ */
-+
-+ const unsigned char probe_zero_pattern[] = {
-+
-+ X1205_REG_SR, 0x18,
-+ X1205_REG_Y2K, 0xC6,
-+ X1205_REG_DW, 0xF8,
-+ X1205_REG_MO, 0xE0,
-+ X1205_REG_DT, 0xC0,
-+ X1205_REG_HR, 0x40,
-+ X1205_REG_MN, 0x80,
-+ X1205_REG_SC, 0x80,
-+ X1205_REG_DTR, 0xF8,
-+ X1205_REG_ATR, 0xC0,
-+ X1205_REG_INT, 0x18,
-+ X1205_REG_0, 0xFF,
-+ X1205_REG_Y2K1, 0xC6,
-+ X1205_REG_DWA1, 0x78,
-+ X1205_REG_MOA1, 0x60,
-+ X1205_REG_DTA1, 0x40,
-+ X1205_REG_HRA1, 0x40,
-+ X1205_REG_Y2K0, 0xC6,
-+ X1205_REG_DWA0, 0x78,
-+ X1205_REG_MOA0, 0x60,
-+ X1205_REG_DTA0, 0x40,
-+ X1205_REG_HRA0, 0x40,
-+ };
-+
-+ const struct x1205_limit probe_limits_pattern[] = {
-+ /* register, mask, min, max */
-+ { X1205_REG_Y2K, 0xFF, 19, 20 },
-+ { X1205_REG_DW, 0xFF, 0, 6 },
-+ { X1205_REG_YR, 0xFF, 0, 99 },
-+ { X1205_REG_MO, 0xFF, 0, 12 },
-+ { X1205_REG_DT, 0xFF, 0, 31 },
-+ { X1205_REG_HR, 0x7F, 0, 23 },
-+ { X1205_REG_MN, 0xFF, 0, 59 },
-+ { X1205_REG_SC, 0xFF, 0, 59 },
-+ { X1205_REG_Y2K1, 0xFF, 19, 20 },
-+ { X1205_REG_DWA1, 0x7F, 0, 6 },
-+ { X1205_REG_MOA1, 0x7F, 0, 12 },
-+ { X1205_REG_DTA1, 0x7F, 0, 31 },
-+ { X1205_REG_HRA1, 0x7F, 0, 23 },
-+ { X1205_REG_MNA1, 0x7F, 0, 59 },
-+ { X1205_REG_SCA1, 0x7F, 0, 59 },
-+ { X1205_REG_Y2K0, 0xFF, 19, 20 },
-+ { X1205_REG_DWA0, 0x7F, 0, 6 },
-+ { X1205_REG_MOA0, 0x7F, 0, 12 },
-+ { X1205_REG_DTA0, 0x7F, 0, 31 },
-+ { X1205_REG_HRA0, 0x7F, 0, 23 },
-+ { X1205_REG_MNA0, 0x7F, 0, 59 },
-+ { X1205_REG_SCA0, 0x7F, 0, 59 },
-+ };
-+
-+ /* check that registers have bits a 0 where expected */
-+
-+ for (i = 0; i < ARRAY_SIZE(probe_zero_pattern); i += 2)
-+ {
-+ unsigned char buf;
-+
-+ static unsigned char addr[2];
-+
-+ struct i2c_msg msgs[2] = {
-+ { client->addr, 0, 2, addr }, /* random read */
-+ { client->addr, I2C_M_RD, 1, &buf },
-+ };
-+
-+ addr[0] = 0x00;
-+ addr[1] = probe_zero_pattern[i];
-+
-+ xfer = i2c_transfer(client->adapter, msgs, 2);
-+
-+ if (xfer != 2) {
-+ dev_dbg(&client->adapter->dev,
-+ "%s: could not read register %x\n",
-+ __FUNCTION__, addr[1]);
-+
-+ return -EIO;
-+ }
-+
-+ if ((buf & probe_zero_pattern[i+1]) != 0) {
-+ dev_dbg(&client->adapter->dev,
-+ "%s: register %x, zero pattern %d: %x\n",
-+ __FUNCTION__, addr[1], i, buf);
-+
-+ return -ENODEV;
-+ }
-+ }
-+
-+ /* check limits */
-+
-+ for (i = 0; i < ARRAY_SIZE(probe_limits_pattern); i++)
-+ {
-+ unsigned char buf, val;
-+
-+ static unsigned char addr[2];
-+
-+ struct i2c_msg msgs[2] = {
-+ { client->addr, 0, 2, addr }, /* random read */
-+ { client->addr, I2C_M_RD, 1, &buf },
-+ };
-+
-+ addr[0] = 0x00;
-+ addr[1] = probe_limits_pattern[i].reg;
-+
-+ xfer = i2c_transfer(client->adapter, msgs, 2);
-+
-+ if (xfer != 2) {
-+ dev_dbg(&client->adapter->dev,
-+ "%s: could not read register %x\n",
-+ __FUNCTION__, addr[1]);
-+
-+ return -EIO;
-+ }
-+
-+ val = BCD2BIN(buf & probe_limits_pattern[i].mask);
-+
-+ if (val > probe_limits_pattern[i].max ||
-+ val < probe_limits_pattern[i].min) {
-+ dev_dbg(&client->adapter->dev,
-+ "%s: register %x, lim pattern %d: %d\n",
-+ __FUNCTION__, addr[1], i, val);
-+
-+ return -ENODEV;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+static int x1205_attach(struct i2c_adapter *adapter)
-+{
-+ dev_dbg(&adapter->dev, "%s\n", __FUNCTION__);
-+
-+ return i2c_probe(adapter, &addr_data, x1205_probe);
-+}
-+
-+static int x1205_probe(struct i2c_adapter *adapter, int address, int kind)
-+{
-+ struct i2c_client *new_client;
-+ struct x1205_data *xdata;
-+
-+ int err = 0;
-+
-+ dev_dbg(&adapter->dev, "%s\n", __FUNCTION__);
-+
-+ if (!(xdata = kmalloc(sizeof(struct x1205_data), GFP_KERNEL))) {
-+ err = -ENOMEM;
-+ goto exit;
-+ }
-+
-+ /* Fill our data structure */
-+
-+ memset(xdata, 0, sizeof(struct x1205_data));
-+
-+ xdata->epoch = 2000;
-+
-+
-+ /* Prepare i2c_client structure */
-+
-+ new_client = &xdata->client;
-+ i2c_set_clientdata(new_client, xdata);
-+ new_client->addr = address;
-+ new_client->adapter = adapter;
-+ new_client->driver = &x1205_driver;
-+ new_client->flags = 0;
-+
-+ strlcpy(new_client->name, "x1205", I2C_NAME_SIZE);
-+
-+
-+ /* Verify the chip is really an X1205 */
-+
-+ if (kind < 0)
-+ {
-+ if (x1205_validate_client(new_client) < 0) {
-+ err = -ENODEV;
-+ goto exit_kfree;
-+ }
-+ }
-+
-+ /* Inform the i2c layer */
-+ if ((err = i2c_attach_client(new_client)))
-+ goto exit_kfree;
-+
-+ list_add(&xdata->list, &x1205_clients);
-+
-+ dev_info(&adapter->dev, "%s: Chip found, driver " DRIVER_VERSION "\n",
-+ DRIVER_NAME);
-+
-+ /* If requested, se the system time */
-+ if (hctosys)
-+ x1205_hctosys(new_client);
-+
-+ return 0;
-+
-+exit_kfree:
-+ kfree(xdata);
-+
-+exit:
-+ return err;
-+}
-+
-+static int x1205_detach(struct i2c_client *client)
-+{
-+ int err;
-+ struct x1205_data *data = i2c_get_clientdata(client);
-+
-+ dev_dbg(&client->dev, "%s\n", __FUNCTION__);
-+
-+ if ((err = i2c_detach_client(client)))
-+ return err;
-+
-+ list_del(&data->list);
-+ kfree(data);
-+ return 0;
-+}
-+
-+/* make sure the rtc_time values are in bounds */
-+static int x1205_validate_tm(struct rtc_time *tm)
-+{
-+ tm->tm_year += 1900;
-+
-+ if (tm->tm_year < EPOCH_1970)
-+ return -EINVAL;
-+
-+ if ((tm->tm_mon > 11) || (tm->tm_mday == 0))
-+ return -EINVAL;
-+
-+ if (tm->tm_mday > (days_in_mo[tm->tm_mon] + ( (tm->tm_mon == 1) &&
-+ ((!(tm->tm_year % 4) && (tm->tm_year % 100) ) || !(tm->tm_year % 400)))))
-+ return -EINVAL;
-+
-+ if ((tm->tm_year -= EPOCH_1900) > 255)
-+ return -EINVAL;
-+
-+ if ((tm->tm_hour >= 24) || (tm->tm_min >= 60) || (tm->tm_sec >= 60))
-+ return -EINVAL;
-+
-+ return 0;
-+}
-+
-+static int x1205_command(struct i2c_client *client, unsigned int cmd, void *tm)
-+{
-+ if (client == NULL || tm == NULL)
-+ return -EINVAL;
-+
-+ if (!capable(CAP_SYS_TIME))
-+ return -EACCES;
-+
-+ dev_dbg(&client->dev, "%s: cmd=%d\n", __FUNCTION__, cmd);
-+
-+ switch (cmd) {
-+ case X1205_CMD_GETDATETIME:
-+ return x1205_get_datetime(client, tm, X1205_CCR_BASE);
-+
-+ case X1205_CMD_SETTIME:
-+ return x1205_set_datetime(client, tm, X1205_NODATE, X1205_CCR_BASE);
-+
-+ case X1205_CMD_SETDATETIME:
-+ return x1205_set_datetime(client, tm, X1205_DATETOO, X1205_CCR_BASE);
-+
-+ case X1205_CMD_GETALARM:
-+ return x1205_get_datetime(client, tm, X1205_ALM0_BASE);
-+
-+ case X1205_CMD_SETALARM:
-+ return x1205_set_datetime(client, tm, X1205_DATETOO, X1205_ALM0_BASE);
-+
-+ default:
-+ return -EINVAL;
-+ }
-+}
-+
-+
-+static int __init x1205_init(void)
-+{
-+ return i2c_add_driver(&x1205_driver);
-+}
-+
-+static void __exit x1205_exit(void)
-+{
-+ i2c_del_driver(&x1205_driver);
-+}
-+
-+MODULE_AUTHOR(
-+ "Karen Spearel <kas11@tampabay.rr.com>, "
-+ "Alessandro Zummo <a.zummo@towertech.it>");
-+MODULE_DESCRIPTION("Xicor X1205 RTC driver");
-+MODULE_LICENSE("GPL");
-+
-+EXPORT_SYMBOL_GPL(x1205_do_command);
-+
-+module_init(x1205_init);
-+module_exit(x1205_exit);
---- linux-2.6.14-rc3/include/linux/x1205.h 1970-01-01 01:00:00.000000000 +0100
-+++ test9/include/linux/x1205.h 2005-10-03 15:38:21.000000000 +0200
-@@ -0,0 +1,67 @@
-+
-+/* commands */
-+
-+#define X1205_CMD_GETDATETIME 0
-+#define X1205_CMD_SETTIME 1
-+#define X1205_CMD_SETDATETIME 2
-+#define X1205_CMD_GETALARM 3
-+#define X1205_CMD_SETALARM 4
-+
-+/* flags */
-+
-+#define X1205_NODATE 0
-+#define X1205_DATETOO 1
-+
-+/* offsets into read buf - add 2 for write buf */
-+
-+#define CCR_SEC 0
-+#define CCR_MIN 1
-+#define CCR_HOUR 2
-+#define CCR_MDAY 3
-+#define CCR_MONTH 4
-+#define CCR_YEAR 5
-+#define CCR_WDAY 6
-+#define CCR_Y2K 7
-+
-+#define X1205_REG_SR 0x3F /* status register */
-+#define X1205_REG_Y2K 0x37
-+#define X1205_REG_DW 0x36
-+#define X1205_REG_YR 0x35
-+#define X1205_REG_MO 0x34
-+#define X1205_REG_DT 0x33
-+#define X1205_REG_HR 0x32
-+#define X1205_REG_MN 0x31
-+#define X1205_REG_SC 0x30
-+#define X1205_REG_DTR 0x13
-+#define X1205_REG_ATR 0x12
-+#define X1205_REG_INT 0x11
-+#define X1205_REG_0 0x10
-+#define X1205_REG_Y2K1 0x0F
-+#define X1205_REG_DWA1 0x0E
-+#define X1205_REG_YRA1 0x0D
-+#define X1205_REG_MOA1 0x0C
-+#define X1205_REG_DTA1 0x0B
-+#define X1205_REG_HRA1 0x0A
-+#define X1205_REG_MNA1 0x09
-+#define X1205_REG_SCA1 0x08
-+#define X1205_REG_Y2K0 0x07
-+#define X1205_REG_DWA0 0x06
-+#define X1205_REG_YRA0 0x05
-+#define X1205_REG_MOA0 0x04
-+#define X1205_REG_DTA0 0x03
-+#define X1205_REG_HRA0 0x02
-+#define X1205_REG_MNA0 0x01
-+#define X1205_REG_SCA0 0x00
-+
-+#define X1205_I2C_BUS_ADDR 0x6f /* hardwired into x1205 */
-+#define X1205_CCR_BASE 0x30 /* Base address of CCR */
-+#define X1205_ALM0_BASE 0x00 /* Base address of ALARM0 */
-+
-+#define X1205_SR_RTCF 0x01
-+#define X1205_SR_WEL 0x02 /* Write Enable Latch bit */
-+#define X1205_SR_RWEL 0x04 /* Register Write Enable Bit */
-+
-+#define X1205_HR_MIL 0x80 /* set in ccr.hour for 24 hr mode */
-+
-+extern int x1205_do_command(unsigned int cmd, void *arg);
-+
diff --git a/packages/linux/nslu2-kernel/2.6.14/50-nslu2-arch.patch b/packages/linux/nslu2-kernel/2.6.14/50-nslu2-arch.patch
deleted file mode 100644
index 038c71c3b3..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/50-nslu2-arch.patch
+++ /dev/null
@@ -1,461 +0,0 @@
---- linux-2.6.14/arch/arm/mach-ixp4xx/Kconfig 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.14/arch/arm/mach-ixp4xx/Kconfig 1970-01-01 00:00:00.000000000 +0000
-@@ -8,6 +8,16 @@ menu "Intel IXP4xx Implementation Option
-
- comment "IXP4xx Platforms"
-
-+# This entry is placed on top because otherwise it would have
-+# been shown as a submenu.
-+config MACH_NSLU2
-+ bool
-+ prompt "NSLU2" if !(MACH_IXDP465 || MACH_IXDPG425 || ARCH_IXDP425 || ARCH_ADI_COYOTE || ARCH_AVILA || ARCH_IXCDP1100 || ARCH_PRPMC1100 || MACH_GTWX5715)
-+ help
-+ Say 'Y' here if you want your kernel to support Linksys's
-+ NSLU2 NAS device. For more information on this platform,
-+ see http://www.nslu2-linux.org
-+
- config ARCH_AVILA
- bool "Avila"
- help
---- linux-2.6.14/arch/arm/mach-ixp4xx/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.14/arch/arm/mach-ixp4xx/Makefile 1970-01-01 00:00:00.000000000 +0000
-@@ -8,4 +8,5 @@ obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pc
- obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o
- obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o
- obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o
-+obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o
-
---- linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-pci.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-pci.c 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,77 @@
-+/*
-+ * arch/arm/mach-ixp4xx/nslu2-pci.c
-+ *
-+ * NSLU2 board-level PCI initialization
-+ *
-+ * based on ixdp425-pci.c:
-+ * Copyright (C) 2002 Intel Corporation.
-+ * Copyright (C) 2003-2004 MontaVista Software, Inc.
-+ *
-+ * Maintainer: http://www.nslu2-linux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/pci.h>
-+#include <linux/init.h>
-+
-+#include <asm/mach/pci.h>
-+#include <asm/mach-types.h>
-+
-+void __init nslu2_pci_preinit(void)
-+{
-+ set_irq_type(IRQ_NSLU2_PCI_INTA, IRQT_LOW);
-+ set_irq_type(IRQ_NSLU2_PCI_INTB, IRQT_LOW);
-+ set_irq_type(IRQ_NSLU2_PCI_INTC, IRQT_LOW);
-+
-+ gpio_line_isr_clear(NSLU2_PCI_INTA_PIN);
-+ gpio_line_isr_clear(NSLU2_PCI_INTB_PIN);
-+ gpio_line_isr_clear(NSLU2_PCI_INTC_PIN);
-+
-+ /* INTD is not configured as GPIO is used
-+ * for the power input button.
-+ */
-+
-+ ixp4xx_pci_preinit();
-+}
-+
-+static int __init nslu2_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
-+{
-+ static int pci_irq_table[NSLU2_PCI_IRQ_LINES] = {
-+ IRQ_NSLU2_PCI_INTA,
-+ IRQ_NSLU2_PCI_INTB,
-+ IRQ_NSLU2_PCI_INTC,
-+ };
-+
-+ int irq = -1;
-+
-+ if (slot >= 1 && slot <= NSLU2_PCI_MAX_DEV &&
-+ pin >= 1 && pin <= NSLU2_PCI_IRQ_LINES) {
-+ irq = pci_irq_table[(slot + pin - 2) % NSLU2_PCI_IRQ_LINES];
-+ }
-+
-+ return irq;
-+}
-+
-+struct hw_pci __initdata nslu2_pci = {
-+ .nr_controllers = 1,
-+ .preinit = nslu2_pci_preinit,
-+ .swizzle = pci_std_swizzle,
-+ .setup = ixp4xx_setup,
-+ .scan = ixp4xx_scan_bus,
-+ .map_irq = nslu2_map_irq,
-+};
-+
-+int __init nslu2_pci_init(void) /* monkey see, monkey do */
-+{
-+ if (machine_is_nslu2())
-+ pci_common_init(&nslu2_pci);
-+
-+ return 0;
-+}
-+
-+subsys_initcall(nslu2_pci_init);
---- linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-power.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-power.c 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,92 @@
-+/*
-+ * arch/arm/mach-ixp4xx/nslu2-power.c
-+ *
-+ * NSLU2 Power/Reset driver
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ *
-+ * based on nslu2-io.c
-+ * Copyright (C) 2004 Karen Spearel
-+ *
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ * Maintainers: http://www.nslu2-linux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/reboot.h>
-+#include <linux/interrupt.h>
-+
-+#include <asm/mach-types.h>
-+
-+extern void ctrl_alt_del(void);
-+
-+static irqreturn_t nslu2_power_handler(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ /* Signal init to do the ctrlaltdel action, this will bypass init if
-+ * it hasn't started and do a kernel_restart.
-+ */
-+ ctrl_alt_del();
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static irqreturn_t nslu2_reset_handler(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ /* This is the paper-clip reset, it shuts the machine down directly.
-+ */
-+ machine_power_off();
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int __init nslu2_power_init(void)
-+{
-+ if (!(machine_is_nslu2()))
-+ return 0;
-+
-+ *IXP4XX_GPIO_GPISR = 0x20400000; /* read the 2 irqs to clr */
-+
-+ set_irq_type(NSLU2_RB_IRQ, IRQT_LOW);
-+ set_irq_type(NSLU2_PB_IRQ, IRQT_HIGH);
-+
-+ gpio_line_isr_clear(NSLU2_RB_GPIO);
-+ gpio_line_isr_clear(NSLU2_PB_GPIO);
-+
-+ if (request_irq(NSLU2_RB_IRQ, &nslu2_reset_handler,
-+ SA_INTERRUPT, "NSLU2 reset button", NULL) < 0) {
-+
-+ printk(KERN_DEBUG "Reset Button IRQ %d not available\n",
-+ NSLU2_RB_IRQ);
-+
-+ return -EIO;
-+ }
-+
-+ if (request_irq(NSLU2_PB_IRQ, &nslu2_power_handler,
-+ SA_INTERRUPT, "NSLU2 power button", NULL) < 0) {
-+
-+ printk(KERN_DEBUG "Power Button IRQ %d not available\n",
-+ NSLU2_PB_IRQ);
-+
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+
-+static void __exit nslu2_power_exit(void)
-+{
-+ free_irq(NSLU2_RB_IRQ, NULL);
-+ free_irq(NSLU2_PB_IRQ, NULL);
-+}
-+
-+module_init(nslu2_power_init);
-+module_exit(nslu2_power_exit);
-+
-+MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
-+MODULE_DESCRIPTION("NSLU2 Power/Reset driver");
-+MODULE_LICENSE("GPL");
---- linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,134 @@
-+/*
-+ * arch/arm/mach-ixp4xx/nslu2-setup.c
-+ *
-+ * NSLU2 board-setup
-+ *
-+ * based ixdp425-setup.c:
-+ * Copyright (C) 2003-2004 MontaVista Software, Inc.
-+ *
-+ * Author: Mark Rakes <mrakes at mac.com>
-+ * Maintainers: http://www.nslu2-linux.org/
-+ *
-+ * Fixed missing init_time in MACHINE_START kas11 10/22/04
-+ * Changed to conform to new style __init ixdp425 kas11 10/22/04
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/serial.h>
-+#include <linux/serial_8250.h>
-+
-+#include <asm/mach-types.h>
-+#include <asm/mach/arch.h>
-+#include <asm/mach/flash.h>
-+
-+static struct flash_platform_data nslu2_flash_data = {
-+ .map_name = "cfi_probe",
-+ .width = 2,
-+};
-+
-+static struct resource nslu2_flash_resource = {
-+ .start = NSLU2_FLASH_BASE,
-+ .end = NSLU2_FLASH_BASE + NSLU2_FLASH_SIZE,
-+ .flags = IORESOURCE_MEM,
-+};
-+
-+static struct platform_device nslu2_flash = {
-+ .name = "IXP4XX-Flash",
-+ .id = 0,
-+ .dev.platform_data = &nslu2_flash_data,
-+ .num_resources = 1,
-+ .resource = &nslu2_flash_resource,
-+};
-+
-+static struct ixp4xx_i2c_pins nslu2_i2c_gpio_pins = {
-+ .sda_pin = NSLU2_SDA_PIN,
-+ .scl_pin = NSLU2_SCL_PIN,
-+};
-+
-+static struct platform_device nslu2_i2c_controller = {
-+ .name = "IXP4XX-I2C",
-+ .id = 0,
-+ .dev.platform_data = &nslu2_i2c_gpio_pins,
-+ .num_resources = 0,
-+};
-+
-+static struct resource nslu2_uart_resources[] = {
-+ {
-+ .start = IXP4XX_UART1_BASE_PHYS,
-+ .end = IXP4XX_UART1_BASE_PHYS + 0x0fff,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .start = IXP4XX_UART2_BASE_PHYS,
-+ .end = IXP4XX_UART2_BASE_PHYS + 0x0fff,
-+ .flags = IORESOURCE_MEM,
-+ }
-+};
-+
-+static struct plat_serial8250_port nslu2_uart_data[] = {
-+ {
-+ .mapbase = IXP4XX_UART1_BASE_PHYS,
-+ .membase = (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET,
-+ .irq = IRQ_IXP4XX_UART1,
-+ .flags = UPF_BOOT_AUTOCONF,
-+ .iotype = UPIO_MEM,
-+ .regshift = 2,
-+ .uartclk = IXP4XX_UART_XTAL,
-+ },
-+ {
-+ .mapbase = IXP4XX_UART2_BASE_PHYS,
-+ .membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET,
-+ .irq = IRQ_IXP4XX_UART2,
-+ .flags = UPF_BOOT_AUTOCONF,
-+ .iotype = UPIO_MEM,
-+ .regshift = 2,
-+ .uartclk = IXP4XX_UART_XTAL,
-+ },
-+ { }
-+};
-+
-+static struct platform_device nslu2_uart = {
-+ .name = "serial8250",
-+ .id = PLAT8250_DEV_PLATFORM,
-+ .dev.platform_data = nslu2_uart_data,
-+ .num_resources = 2,
-+ .resource = nslu2_uart_resources,
-+};
-+
-+static struct platform_device *nslu2_devices[] __initdata = {
-+ &nslu2_i2c_controller,
-+ &nslu2_flash,
-+ &nslu2_uart,
-+};
-+
-+static void nslu2_power_off(void)
-+{
-+ /* This causes the box to drop the power and go dead. */
-+
-+ /* enable the pwr cntl gpio */
-+ gpio_line_config(NSLU2_PO_GPIO, IXP4XX_GPIO_OUT);
-+
-+ /* do the deed */
-+ gpio_line_set(NSLU2_PO_GPIO, IXP4XX_GPIO_HIGH);
-+}
-+
-+static void __init nslu2_init(void)
-+{
-+ ixp4xx_sys_init();
-+
-+ pm_power_off = nslu2_power_off;
-+
-+ platform_add_devices(nslu2_devices, ARRAY_SIZE(nslu2_devices));
-+}
-+
-+MACHINE_START(NSLU2, "Linksys NSLU2")
-+ /* Maintainer: www.nslu2-linux.org */
-+ .phys_ram = PHYS_OFFSET,
-+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC,
-+ .boot_params = 0x00000100,
-+ .map_io = ixp4xx_map_io,
-+ .init_irq = ixp4xx_init_irq,
-+ .timer = &ixp4xx_timer,
-+ .init_machine = nslu2_init,
-+MACHINE_END
---- linux-2.6.14/include/asm-arm/arch-ixp4xx/hardware.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.14/include/asm-arm/arch-ixp4xx/hardware.h 1970-01-01 00:00:00.000000000 +0000
-@@ -44,5 +44,6 @@ extern unsigned int processor_id;
- #include "ixdp425.h"
- #include "coyote.h"
- #include "prpmc1100.h"
-+#include "nslu2.h"
-
- #endif /* _ASM_ARCH_HARDWARE_H */
---- linux-2.6.14/include/asm-arm/arch-ixp4xx/irqs.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.14/include/asm-arm/arch-ixp4xx/irqs.h 1970-01-01 00:00:00.000000000 +0000
-@@ -93,4 +93,11 @@
- #define IRQ_COYOTE_PCI_SLOT1 IRQ_IXP4XX_GPIO11
- #define IRQ_COYOTE_IDE IRQ_IXP4XX_GPIO5
-
-+/*
-+ * NSLU2 board IRQs
-+ */
-+#define IRQ_NSLU2_PCI_INTA IRQ_IXP4XX_GPIO11
-+#define IRQ_NSLU2_PCI_INTB IRQ_IXP4XX_GPIO10
-+#define IRQ_NSLU2_PCI_INTC IRQ_IXP4XX_GPIO9
-+
- #endif
---- linux-2.6.14/include/asm-arm/arch-ixp4xx/nslu2.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.14/include/asm-arm/arch-ixp4xx/nslu2.h 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,96 @@
-+/*
-+ * include/asm-arm/arch-ixp4xx/nslu2.h
-+ *
-+ * NSLU2 platform specific definitions
-+ *
-+ * Author: Mark Rakes <mrakes AT mac.com>
-+ * Maintainers: http://www.nslu2-linux.org
-+ *
-+ * based on ixdp425.h:
-+ * Copyright 2004 (c) MontaVista, Software, Inc.
-+ *
-+ * This file is licensed under the terms of the GNU General Public
-+ * License version 2. This program is licensed "as is" without any
-+ * warranty of any kind, whether express or implied.
-+ */
-+
-+#ifndef __ASM_ARCH_HARDWARE_H__
-+#error "Do not include this directly, instead #include <asm/hardware.h>"
-+#endif
-+
-+#define NSLU2_FLASH_BASE IXP4XX_EXP_BUS_CS0_BASE_PHYS
-+#define NSLU2_FLASH_SIZE IXP4XX_EXP_BUS_CSX_REGION_SIZE
-+
-+#define NSLU2_SDA_PIN 7
-+#define NSLU2_SCL_PIN 6
-+
-+/*
-+ * NSLU2 PCI IRQs
-+ */
-+#define NSLU2_PCI_MAX_DEV 3
-+#define NSLU2_PCI_IRQ_LINES 3
-+
-+
-+/* PCI controller GPIO to IRQ pin mappings */
-+#define NSLU2_PCI_INTA_PIN 11
-+#define NSLU2_PCI_INTB_PIN 10
-+#define NSLU2_PCI_INTC_PIN 9
-+#define NSLU2_PCI_INTD_PIN 8
-+
-+
-+/* NSLU2 Timer */
-+#define NSLU2_FREQ 66000000
-+#define NSLU2_CLOCK_TICK_RATE (((NSLU2_FREQ / HZ & ~IXP4XX_OST_RELOAD_MASK) + 1) * HZ)
-+#define NSLU2_CLOCK_TICKS_PER_USEC ((NSLU2_CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC)
-+
-+/* GPIO */
-+
-+#define NSLU2_GPIO0 0
-+#define NSLU2_GPIO1 1
-+#define NSLU2_GPIO2 2
-+#define NSLU2_GPIO3 3
-+#define NSLU2_GPIO4 4
-+#define NSLU2_GPIO5 5
-+#define NSLU2_GPIO6 6
-+#define NSLU2_GPIO7 7
-+#define NSLU2_GPIO8 8
-+#define NSLU2_GPIO9 9
-+#define NSLU2_GPIO10 10
-+#define NSLU2_GPIO11 11
-+#define NSLU2_GPIO12 12
-+#define NSLU2_GPIO13 13
-+#define NSLU2_GPIO14 14
-+#define NSLU2_GPIO15 15
-+
-+/* Buttons */
-+
-+#define NSLU2_PB_GPIO NSLU2_GPIO5
-+#define NSLU2_PO_GPIO NSLU2_GPIO8 /* power off */
-+#define NSLU2_RB_GPIO NSLU2_GPIO12
-+
-+#define NSLU2_PB_IRQ IRQ_IXP4XX_GPIO5
-+#define NSLU2_RB_IRQ IRQ_IXP4XX_GPIO12
-+
-+#define NSLU2_PB_BM (1L << NSLU2_PB_GPIO)
-+#define NSLU2_PO_BM (1L << NSLU2_PO_GPIO)
-+#define NSLU2_RB_BM (1L << NSLU2_RB_GPIO)
-+
-+/* Buzzer */
-+
-+#define NSLU2_GPIO_BUZZ 4
-+#define NSLU2_BZ_BM (1L << NSLU2_GPIO_BUZZ)
-+/* LEDs */
-+
-+#define NSLU2_LED_RED NSLU2_GPIO0
-+#define NSLU2_LED_GRN NSLU2_GPIO1
-+
-+#define NSLU2_LED_RED_BM (1L << NSLU2_LED_RED)
-+#define NSLU2_LED_GRN_BM (1L << NSLU2_LED_GRN)
-+
-+#define NSLU2_LED_DISK1 NSLU2_GPIO2
-+#define NSLU2_LED_DISK2 NSLU2_GPIO3
-+
-+#define NSLU2_LED_DISK1_BM (1L << NSLU2_GPIO2)
-+#define NSLU2_LED_DISK2_BM (1L << NSLU2_GPIO3)
-+
-+
diff --git a/packages/linux/nslu2-kernel/2.6.14/55-nslu2-rtc.patch b/packages/linux/nslu2-kernel/2.6.14/55-nslu2-rtc.patch
deleted file mode 100644
index be1f696940..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/55-nslu2-rtc.patch
+++ /dev/null
@@ -1,125 +0,0 @@
---- linux-2.6.13/.pc/55-nslu2-rtc.patch/arch/arm/mach-ixp4xx/Makefile 2005-10-26 15:19:43.171472071 -0700
-+++ linux-2.6.13/arch/arm/mach-ixp4xx/Makefile 2005-10-26 15:23:52.923187955 -0700
-@@ -8,5 +8,5 @@ obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pc
- obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o
- obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o
- obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o
--obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o
-+obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o nslu2-rtc.o
-
---- linux-2.6.13/.pc/55-nslu2-rtc.patch/arch/arm/mach-ixp4xx/nslu2-rtc.c 2005-10-26 15:19:43.443489188 -0700
-+++ linux-2.6.13/arch/arm/mach-ixp4xx/nslu2-rtc.c 2005-10-26 15:23:52.923187955 -0700
-@@ -0,0 +1,113 @@
-+/*
-+ * arch/arm/mach-ixp4xx/nslu2-rtc.c
-+ *
-+ * NSLU2 RTC driver
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ *
-+ * based on x1205-rtc.c
-+ * Copyright (C) 2004 Karen Spearel
-+ *
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ * Maintainers: http://www.nslu2-linux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/time.h>
-+#include <linux/rtc.h>
-+#include <linux/init.h>
-+
-+#include <linux/x1205.h>
-+
-+#include <asm/rtc.h>
-+#include <asm/mach-types.h>
-+
-+extern int (*set_rtc)(void);
-+
-+static int nslu2_set_rtc(void)
-+{
-+ struct rtc_time new_tm, old_tm;
-+ unsigned long cur_secs = xtime.tv_sec;
-+
-+ if (x1205_do_command(X1205_CMD_GETDATETIME, &old_tm))
-+ return 0;
-+
-+ /* FIXME xtime.tv_nsec = old_tm.tm_sec * 10000000; */
-+ new_tm.tm_sec = cur_secs % 60;
-+ cur_secs /= 60;
-+ new_tm.tm_min = cur_secs % 60;
-+ cur_secs /= 60;
-+ new_tm.tm_hour = cur_secs % 24;
-+
-+ /*
-+ * avoid writing when we're going to change the day
-+ * of the month. We will retry in the next minute.
-+ * This basically means that if the RTC must not drift
-+ * by more than 1 minute in 11 minutes.
-+ */
-+ if ((old_tm.tm_hour == 23 && old_tm.tm_min == 59) ||
-+ (new_tm.tm_hour == 23 && new_tm.tm_min == 59))
-+ return 1;
-+
-+ return x1205_do_command(X1205_CMD_SETTIME, &new_tm);
-+}
-+
-+static int rtc_read_alarm(struct rtc_wkalrm *alrm)
-+{
-+ return x1205_do_command(X1205_CMD_GETALARM, &alrm->time);
-+}
-+
-+static int rtc_set_alarm(struct rtc_wkalrm *alrm)
-+{
-+ return x1205_do_command(X1205_CMD_SETALARM, &alrm->time);
-+}
-+
-+static int rtc_read_time(struct rtc_time *tm)
-+{
-+ return x1205_do_command(X1205_CMD_GETDATETIME, tm);
-+}
-+
-+static int rtc_set_time(struct rtc_time *tm)
-+{
-+ return x1205_do_command(X1205_CMD_SETDATETIME, tm);
-+}
-+
-+static struct rtc_ops rtc_ops = {
-+ .owner = THIS_MODULE,
-+ .read_time = rtc_read_time,
-+ .set_time = rtc_set_time,
-+ .read_alarm = rtc_read_alarm,
-+ .set_alarm = rtc_set_alarm,
-+};
-+
-+static int __init nslu2_rtc_init(void)
-+{
-+ int ret;
-+
-+ if (!(machine_is_nslu2()))
-+ return 0;
-+
-+ printk(KERN_INFO "NSLU2: rtc\n");
-+
-+ if ((ret = register_rtc(&rtc_ops)) != 0)
-+ return ret;
-+
-+ set_rtc = nslu2_set_rtc;
-+
-+ return 0;
-+}
-+
-+static void __exit nslu2_rtc_exit(void)
-+{
-+ set_rtc = NULL;
-+
-+ unregister_rtc(&rtc_ops);
-+}
-+
-+module_init(nslu2_rtc_init);
-+module_exit(nslu2_rtc_exit);
diff --git a/packages/linux/nslu2-kernel/2.6.14/60-nslu2-beeper.patch b/packages/linux/nslu2-kernel/2.6.14/60-nslu2-beeper.patch
deleted file mode 100644
index e8a037385b..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/60-nslu2-beeper.patch
+++ /dev/null
@@ -1,175 +0,0 @@
---- linux-2.6.13/.pc/60-nslu2-beeper.patch/drivers/input/misc/Kconfig 2005-08-28 16:41:01.000000000 -0700
-+++ linux-2.6.13/drivers/input/misc/Kconfig 2005-10-26 15:24:01.199708764 -0700
-@@ -40,6 +40,18 @@ config INPUT_M68K_BEEP
- tristate "M68k Beeper support"
- depends on M68K
-
-+config INPUT_NSLU2_BEEPER
-+ tristate "NSLU2 Beeper support"
-+ depends on MACH_NSLU2
-+ help
-+ Say Y here if you want the embedded beeper on the LinkSys NSLU2
-+ to be used for bells and whistles.
-+
-+ If unsure, say Y.
-+
-+ To compile this driver as a module, choose M here: the
-+ module will be called nslu2spkr.
-+
- config INPUT_UINPUT
- tristate "User level driver support"
- help
---- linux-2.6.13/.pc/60-nslu2-beeper.patch/drivers/input/misc/Makefile 2005-08-28 16:41:01.000000000 -0700
-+++ linux-2.6.13/drivers/input/misc/Makefile 2005-10-26 15:24:01.199708764 -0700
-@@ -10,3 +10,4 @@ obj-$(CONFIG_INPUT_M68K_BEEP) += m68ksp
- obj-$(CONFIG_INPUT_98SPKR) += 98spkr.o
- obj-$(CONFIG_INPUT_UINPUT) += uinput.o
- obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o
-+obj-$(CONFIG_INPUT_NSLU2_BEEPER) += nslu2spkr.o
---- linux-2.6.13/.pc/60-nslu2-beeper.patch/drivers/input/misc/nslu2spkr.c 2005-10-26 15:19:43.711506053 -0700
-+++ linux-2.6.13/drivers/input/misc/nslu2spkr.c 2005-10-26 15:24:01.199708764 -0700
-@@ -0,0 +1,144 @@
-+/*
-+ * drivers/input/misc/nslu2spkr.c
-+ *
-+ * NSLU2 Beeper driver
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ *
-+ * based on nslu2-io.c
-+ * Copyright (C) 2004 Karen Spearel
-+ *
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ * Maintainers: http://www.nslu2-linux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/input.h>
-+#include <linux/delay.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/irq.h>
-+
-+static unsigned int beep_on_startup = 1;
-+module_param(beep_on_startup, bool, 0);
-+MODULE_PARM_DESC(beep_on_startup, "Play a beep on module startup");
-+
-+DEFINE_SPINLOCK(beep_lock);
-+
-+static int nslu2_spkr_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
-+{
-+ unsigned int count = 0;
-+ unsigned long flags;
-+
-+ if (type != EV_SND)
-+ return -1;
-+
-+ switch (code) {
-+ case SND_BELL:
-+ if (value) value = 1000;
-+ case SND_TONE:
-+ break;
-+ default:
-+ return -1;
-+ }
-+
-+ if (value > 20 && value < 32767)
-+ count = (NSLU2_FREQ / (value*4)) - 1;
-+
-+ spin_lock_irqsave(&beep_lock, flags);
-+
-+ if (count) {
-+
-+ gpio_line_config(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_OUT);
-+ gpio_line_set(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_LOW);
-+
-+ *IXP4XX_OSRT2 = (count & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE;
-+
-+ } else {
-+
-+ gpio_line_config(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_IN);
-+ gpio_line_set(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_HIGH);
-+
-+ *IXP4XX_OSRT2 = 0;
-+ }
-+
-+ spin_unlock_irqrestore(&beep_lock, flags);
-+
-+ return 0;
-+}
-+
-+static struct input_dev nslu2_spkr_dev = {
-+ .phys = "ixp420/gpio4",
-+ .name = "NSLU2 Beeper",
-+ .evbit[0] = BIT(EV_SND),
-+ .sndbit[0] = BIT(SND_BELL) | BIT(SND_TONE),
-+ .event = nslu2_spkr_event,
-+ .id = {
-+ .bustype = BUS_HOST,
-+ .vendor = 0x001f,
-+ .product = 0x0001,
-+ .version = 0x0100
-+ }
-+};
-+
-+static irqreturn_t nslu2_spkr_handler(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ /* clear interrupt */
-+ *IXP4XX_OSST = IXP4XX_OSST_TIMER_2_PEND;
-+
-+ /* flip the beeper output */
-+ *IXP4XX_GPIO_GPOUTR ^= NSLU2_BZ_BM;
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int __init nslu2_spkr_init(void)
-+{
-+ if (request_irq(IRQ_IXP4XX_TIMER2, &nslu2_spkr_handler,
-+ SA_INTERRUPT | SA_TIMER, "NSLU2 beeper", NULL < 0)) {
-+
-+ printk(KERN_INFO "NSLU2 beeper: IRQ %d not available\n",
-+ IRQ_IXP4XX_TIMER2);
-+
-+ return -EIO;
-+ }
-+
-+ input_register_device(&nslu2_spkr_dev);
-+
-+ /* do a little beep to tell the world we are alive */
-+ if (beep_on_startup)
-+ {
-+ nslu2_spkr_event(NULL, EV_SND, SND_TONE, 440);
-+ msleep(120);
-+ nslu2_spkr_event(NULL, EV_SND, SND_TONE, 0);
-+ }
-+
-+ printk(KERN_INFO "NSLU2: beeper\n");
-+ return 0;
-+}
-+
-+static void __exit nslu2_spkr_exit(void)
-+{
-+ input_unregister_device(&nslu2_spkr_dev);
-+
-+ disable_irq(IRQ_IXP4XX_TIMER2);
-+
-+ /* turn it off */
-+ nslu2_spkr_event(NULL, EV_SND, SND_BELL, 0);
-+
-+ free_irq(IRQ_IXP4XX_TIMER2, NULL);
-+}
-+
-+module_init(nslu2_spkr_init);
-+module_exit(nslu2_spkr_exit);
-+
-+MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
-+MODULE_DESCRIPTION("NSLU2 Beeper driver");
-+MODULE_LICENSE("GPL");
diff --git a/packages/linux/nslu2-kernel/2.6.14/70-nslu2-io.patch b/packages/linux/nslu2-kernel/2.6.14/70-nslu2-io.patch
deleted file mode 100644
index d3d200e4c4..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/70-nslu2-io.patch
+++ /dev/null
@@ -1,560 +0,0 @@
---- linux-2.6.13/.pc/70-nslu2-io.patch/arch/arm/mach-ixp4xx/Makefile 2005-10-26 15:19:43.443489188 -0700
-+++ linux-2.6.13/arch/arm/mach-ixp4xx/Makefile 2005-10-26 15:24:08.652177718 -0700
-@@ -8,5 +8,5 @@ obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pc
- obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o
- obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o
- obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o
--obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o nslu2-rtc.o
-+obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o nslu2-rtc.o nslu2-io.o
-
---- linux-2.6.13/.pc/70-nslu2-io.patch/arch/arm/mach-ixp4xx/nslu2-io.c 2005-10-26 15:19:43.979522918 -0700
-+++ linux-2.6.13/arch/arm/mach-ixp4xx/nslu2-io.c 2005-10-26 15:24:08.652177718 -0700
-@@ -0,0 +1,548 @@
-+//=============================================================================
-+//
-+// n2-io.c version 0.1.7
-+// Author: Karen Spearel <kas11 at tampabay.rr.com>
-+// please report problems/bugs directly to the address above
-+//
-+// Boilerplate to be added "real soon now"...it is and has always been GPL'ed per
-+// MODULE_LICENSE but is offered without warrantee of any sort..use at your own risk
-+//
-+// NOTE: THIS IS INCOMPLETE. INCLUDED ONLY TO KEEP FROM BREAKING THE BUILD,
-+// IT BEEPS AND SENDS A MESSAGE TO /proc/poweroff. EVENTUALLY IT
-+// WILL TALK TO THE n2_pbd DAEMON. EVENTUALLY THE LED DRIVER
-+// WILL TALK TO SOME USERLAND APP BUT ***NOT*** SET_LEDS.
-+//
-+//=============================================================================
-+// GPIO Function State
-+// 0 Red LED Status
-+// 1 Green LED Ready = 1
-+// 2 Disk 2 LED On = 0
-+// 3 Disk 1 LED On = 0
-+// 4 Buzzer
-+// 5 Power Button Pressed = 1
-+// 8 Power Down Output = 1 powers down NSLU2
-+// 12 Reset Pressed = 0
-+
-+#include <linux/config.h>
-+#include <linux/version.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/proc_fs.h>
-+#include <linux/device.h>
-+#include <linux/reboot.h>
-+
-+#include <asm/uaccess.h>
-+#include <asm-arm/irq.h>
-+#include <asm-arm/delay.h>
-+
-+/* Set this to 1 to output lots of debug messages. */
-+#define NSLU2_IO_DEBUG 0
-+
-+#if NSLU2_IO_DEBUG
-+#define nslu2_io_debug(args) printk args
-+#else
-+#define nslu2_io_debug(args) ((void)0)
-+#endif
-+
-+#define VERSION "0.1.7"
-+
-+#define NSLU2BZ_MAJOR 62 //buzzer
-+#define NSLU2LM_MAJOR 126
-+
-+
-+#define NSLU2_BEEP_DUR_LONG 2000
-+#define NSLU2_BEEP_DUR_MED 400
-+#define NSLU2_BEEP_DUR_SHORT 100
-+#define NSLU2_BEEP_PITCH_HIGH 250
-+#define NSLU2_BEEP_PITCH_MED 500
-+#define NSLU2_BEEP_PITCH_LOW 1000
-+#define NSLU2_LONG_DELAY 30000
-+
-+#define NSLU2_BZ_BM (1L << NSLU2_GPIO_BUZZ)
-+
-+// ioctls -- 'M" is used for sound cards...we don't got one so it seems safe
-+
-+#define NSLU2BZ_BEEP_STOP _IO('M',0) //stop multi-beep at end of audible
-+#define NSLU2BZ_BEEP _IO('M',1) //one beep at current defaults
-+#define NSLU2BZ_BEEPS _IOW('M',3,long) //param beeps at current defaults
-+#define NSLU2BZ_TONESET _IOW('M',4,long) //set tone: range is high=250 to low=2000
-+#define NSLU2BZ_ONTIME _IOW('M',5,long) //ontime for multi-beeps in jiffies
-+#define NSLU2BZ_SILENTTIME _IOW('M',6,long) //offtime for multi-beeps in jiffies
-+#define NSLU2BZ_REPEATCNT _IOW('M',7,long) //number of repeats for multi-beeps 0 = forever
-+#define NSLU2BZ_COMBINED _IOW('M',8,long) //combine all params in a long
-+
-+#define NSLU2LM_OFF _IOW('M',32,long)
-+#define NSLU2LM_ON _IOW('M',33,long)
-+#define NSLU2LM_BLINK _IOW('M',34,long)
-+#define NSLU2LM_ALT _IOW('M',35,long)
-+#define NSLU2LM_ALL_ON _IO('M',36)
-+#define NSLU2LM_ALL_OFF _IO('M',37)
-+
-+#define PHYS_LEDS 4
-+#define BLINK_DELAY 25
-+
-+// OR Masks to turn these LEDs ON
-+
-+#define RS_RED_ON 0x00000001 //0b0000 0000 0000 0010
-+#define RS_GRN_ON 0x00000002 //0b0000 0000 0000 0001
-+#define RS_YEL_ON 0x00000003 //0b0000 0000 0000 0011
-+
-+// AND Masks to turn these LEDs OFF
-+
-+#define RS_RED_OFF 0xfffffffe //0b1111 1111 1111 1101
-+#define RS_GRN_OFF 0xfffffffd //0b1111 1111 1111 1110
-+#define RS_YEL_OFF 0xfffffffc //0b1111 1111 1111 1100
-+
-+// AND Masks to turn these LEDs ON
-+
-+#define DISK1_ON 0xfffffff7 //0b1111 1111 1111 0111
-+#define DISK2_ON 0xfffffffb //0b1111 1111 1111 1011
-+
-+// Or Masks to turn these LEDs OFF
-+
-+#define DISK1_OFF 0x00000008 //0b0000 0000 0000 1000
-+#define DISK2_OFF 0x00000004 //0b0000 0000 0000 0100
-+
-+// EOR masks for toggling LEDs on/off
-+
-+#define RS_RG_ALT 0x00000003 //eor mask to toggle rs rg bits
-+#define RS_GRN_TGL 0x00000002
-+#define RS_RED_TGL 0x00000001
-+#define DISK1_TGL 0x00000008
-+#define DISK2_TGL 0x00000004
-+
-+// The LED names for switches
-+
-+#define LED_RS_RED 0
-+#define LED_RS_GRN 1
-+#define LED_DISK1 2
-+#define LED_DISK2 3
-+#define LED_ALL 4
-+
-+static unsigned long ontime = 50;
-+static unsigned long offtime = 450;
-+static unsigned long bz_repeatcnt = 10;
-+static unsigned long tone = 1000;
-+
-+static struct timer_list n2lm_rsg_timer; //rs green
-+static struct timer_list n2lm_rsr_timer; //rs red
-+static struct timer_list n2lm_d1_timer; //drive 1
-+static struct timer_list n2lm_d2_timer; //drive 2
-+static struct timer_list n2bz_timer; //beeper
-+
-+// sysfs class
-+static struct class *n2lm_class;
-+
-+//==================================================================================================
-+//
-+// Blinking is handled entirely by the 4 timer handlers. On timeout, the bit in the
-+// GPIO output register is xor'd with a mask corresponding to the selected led which simply
-+// flips that bit. No record of what any of the other leds is doing is needed.
-+//
-+//==================================================================================================
-+// this blinks rs green or green/yellow if rs red is on
-+#ifndef CONFIG_LEDS
-+static void n2lm_rsg_handler(unsigned long data)
-+{
-+ *IXP4XX_GPIO_GPOUTR ^= RS_GRN_TGL; //flip the led
-+ n2lm_rsg_timer.expires = jiffies + BLINK_DELAY; //next timeout
-+ add_timer(&n2lm_rsg_timer); //reinit timer
-+ return;
-+}
-+
-+// this blinks or alternates rs red green... inited wit green on/red off
-+static void n2lm_rsr_handler(unsigned long data)
-+{
-+ *IXP4XX_GPIO_GPOUTR ^= n2lm_rsr_timer.data;
-+ n2lm_rsr_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_rsr_timer);
-+ return;
-+}
-+// blinks disk 1
-+static void n2lm_d1_handler(unsigned long data)
-+{
-+ *IXP4XX_GPIO_GPOUTR ^= DISK1_TGL;
-+ n2lm_d1_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_d1_timer);
-+ return;
-+}
-+// blinks disk 2
-+static void n2lm_d2_handler(unsigned long data)
-+{
-+ *IXP4XX_GPIO_GPOUTR ^= DISK2_TGL;
-+ n2lm_d2_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_d2_timer);
-+ return;
-+}
-+
-+//==================================================================================================
-+
-+static void n2lm_timer_start(unsigned long led)
-+{
-+
-+ nslu2_io_debug((KERN_DEBUG "timer: %ld\n",led));
-+
-+ switch(led) {
-+ case LED_RS_RED:
-+ n2lm_rsr_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_rsr_timer);
-+ break;
-+
-+ case LED_RS_GRN:
-+ n2lm_rsg_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_rsg_timer);
-+ break;
-+
-+ case LED_DISK1:
-+ n2lm_d1_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_d1_timer);
-+ break;
-+
-+ case LED_DISK2:
-+ n2lm_d2_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_d2_timer);
-+ break;
-+
-+ default:
-+ break;
-+ }
-+ return;
-+}
-+
-+//==================================================================================================
-+
-+static void n2lm_timer_stop(unsigned long led)
-+{
-+ switch (led) {
-+ case LED_RS_RED:
-+ del_timer(&n2lm_rsr_timer);
-+ break;
-+ case LED_RS_GRN:
-+ del_timer(&n2lm_rsg_timer);
-+ break;
-+ case LED_DISK1:
-+ del_timer(&n2lm_d1_timer);
-+ break;
-+ case LED_DISK2:
-+ del_timer(&n2lm_d2_timer);
-+ break;
-+ default:
-+ break;
-+ }
-+ return;
-+}
-+
-+//--------------------------------------------------------------------------------------------------
-+
-+static void n2lm_timer_stop_all(void)
-+{
-+ del_timer(&n2lm_rsg_timer);
-+ del_timer(&n2lm_rsr_timer);
-+ del_timer(&n2lm_d1_timer);
-+ del_timer(&n2lm_d2_timer);
-+ return;
-+}
-+//--------------------------------------------------------------------------------------------------
-+
-+static void n2lm_ledon(unsigned long led)
-+{
-+
-+ nslu2_io_debug((KERN_DEBUG "ledon: %ld\n", led));
-+
-+ switch (led) {
-+ case LED_RS_RED:
-+ *IXP4XX_GPIO_GPOUTR |= RS_RED_ON; //1
-+ return;
-+ case LED_RS_GRN:
-+ *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON; //2
-+ return;
-+ case LED_DISK1:
-+ *IXP4XX_GPIO_GPOUTR &= DISK1_ON; //0xfffffff7
-+ return;
-+ case LED_DISK2:
-+ *IXP4XX_GPIO_GPOUTR &= DISK2_ON; //0xfffffffb
-+ return;
-+ case LED_ALL: //all green
-+ *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON;
-+ *IXP4XX_GPIO_GPOUTR &= (DISK1_ON & DISK2_ON);
-+ return;
-+ }
-+}
-+
-+//--------------------------------------------------------------------------------------------------
-+
-+static void n2lm_ledoff(unsigned long led)
-+{
-+
-+ switch (led) {
-+ case LED_RS_RED:
-+ *IXP4XX_GPIO_GPOUTR &= RS_RED_OFF; //0xffffffffe
-+ return;
-+ case LED_RS_GRN:
-+ *IXP4XX_GPIO_GPOUTR &= RS_GRN_OFF; //0xfffffffd
-+ return;
-+ case LED_DISK1:
-+ *IXP4XX_GPIO_GPOUTR |= DISK1_OFF; //0x00000008
-+ return;
-+ case LED_DISK2:
-+ *IXP4XX_GPIO_GPOUTR |= DISK2_OFF; //0x00000004
-+ return;
-+ case LED_ALL:
-+ *IXP4XX_GPIO_GPOUTR &= (RS_GRN_OFF & RS_RED_OFF);
-+ *IXP4XX_GPIO_GPOUTR |= (DISK1_OFF | DISK2_OFF);
-+ }
-+}
-+
-+//==================================================================================================
-+
-+static int n2lm_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long led)
-+{
-+
-+ nslu2_io_debug((KERN_DEBUG "cmd=%d, led=%ld\n", cmd, led));
-+
-+ if (led < 0 || led >= PHYS_LEDS)
-+ return -EINVAL;
-+
-+ switch (cmd ) {
-+ case NSLU2LM_ON:
-+ n2lm_timer_stop(led);
-+ n2lm_ledon(led);
-+ break;
-+
-+ case NSLU2LM_OFF:
-+ n2lm_timer_stop(led);
-+ n2lm_ledoff(led);
-+ break;
-+
-+ case NSLU2LM_BLINK:
-+ n2lm_ledon(led);
-+ if (led == LED_RS_RED)
-+ n2lm_rsr_timer.data = RS_RED_TGL;
-+ n2lm_timer_start(led);
-+ break;
-+
-+ case NSLU2LM_ALT:
-+ if (led == LED_RS_RED)
-+ {
-+ n2lm_ledon(LED_RS_GRN);
-+ n2lm_ledoff(LED_RS_RED);
-+ n2lm_rsr_timer.data = RS_RG_ALT;
-+ n2lm_timer_start(LED_RS_RED);
-+ break;
-+ } else
-+ return -EINVAL;
-+
-+ case NSLU2LM_ALL_ON:
-+ n2lm_timer_stop_all();
-+ n2lm_ledon(LED_ALL);
-+ break;
-+
-+ case NSLU2LM_ALL_OFF:
-+ n2lm_timer_stop_all();
-+ n2lm_ledoff(LED_ALL);
-+ break;
-+
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static struct file_operations n2lm_fops = {
-+ .owner = THIS_MODULE,
-+ .ioctl = n2lm_ioctl,
-+};
-+#endif
-+//==================================================================================================
-+// We can't do anything fancy here since the system tick rate is far below that required to
-+// generate a desirable tone. Therefore we haven't much choice but to use a busy loop until
-+// I get up to speed on the timers. The saving grace is that for the normal uses, nothing
-+// important should be haprepening.
-+//==================================================================================================
-+
-+static void n2_buzz(int tone_delay, int duration)
-+{
-+ int i;
-+
-+ *IXP4XX_GPIO_GPOER &= ~NSLU2_BZ_BM;
-+
-+ for (i = 1; i < duration; i++) {
-+ *IXP4XX_GPIO_GPOUTR &= ~NSLU2_BZ_BM;
-+ udelay(tone_delay);
-+ *IXP4XX_GPIO_GPOUTR |= NSLU2_BZ_BM;
-+ udelay(tone_delay);
-+ }
-+ *IXP4XX_GPIO_GPOER |= NSLU2_BZ_BM;
-+
-+ return;
-+}
-+//=================================================================================================
-+
-+// this handles the buzzer duty cycle
-+static void n2bz_handler(unsigned long data)
-+{
-+ if (--bz_repeatcnt > 0) { //if just one beep left to do
-+ n2bz_timer.expires = jiffies + ontime + offtime; //next timeout
-+ add_timer(&n2bz_timer); //reinit timer
-+ }
-+ n2_buzz(tone/2, ontime);
-+ nslu2_io_debug((KERN_DEBUG "Count = %d\tOntime = %d\n", bz_repeatcnt, ontime));
-+ return;
-+}
-+
-+//==================================================================================================
-+
-+static int n2bz_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long param)
-+{
-+ switch (cmd) {
-+ case NSLU2BZ_BEEP:
-+ n2_buzz(tone/2, ontime);
-+ break;
-+
-+ case NSLU2BZ_BEEP_STOP:
-+ del_timer(&n2bz_timer);
-+ break;
-+
-+ case NSLU2BZ_BEEPS:
-+ if (param == 0)
-+ bz_repeatcnt = 0xffffffff;
-+ else
-+ bz_repeatcnt = param;
-+ n2bz_handler(0);
-+ break;
-+
-+ case NSLU2BZ_TONESET:
-+ if (param >= 250 && param <= 2000)
-+ tone = param;
-+ break;
-+
-+ case NSLU2BZ_ONTIME:
-+ if (param > 4 && param < 201)
-+ ontime = param;
-+ break;
-+
-+ case NSLU2BZ_SILENTTIME:
-+ if (param > ontime) //enforce a reasonable duty cycle
-+ offtime = param;
-+ else
-+ offtime = ontime;
-+ break;
-+
-+ case NSLU2BZ_REPEATCNT:
-+ if (param == 0)
-+ bz_repeatcnt = 0xffffffff;
-+ else
-+ bz_repeatcnt = param;
-+ break;
-+
-+ case NSLU2BZ_COMBINED:
-+ bz_repeatcnt = (param & 0xF0000000) >> 28; //repeat 1 - 16
-+ ontime = (param & 0x0FF00000) >> 20; //ontime 1 - 256 jiffies
-+ offtime = (param & 0x000FFF00) >> 8; //offtime 1 - 4095 jiffies
-+ tone = (param & 0x000000FF) << 4; //tone (1 - 255) * 16
-+ break;
-+
-+ default:
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static struct file_operations n2bz_fops = {
-+ .owner = THIS_MODULE,
-+ .ioctl = n2bz_ioctl,
-+};
-+
-+static void n2iom_initarch(void)
-+{
-+#ifndef CONFIG_LEDS
-+ init_timer(&n2lm_rsg_timer);
-+ init_timer(&n2lm_rsr_timer);
-+ init_timer(&n2lm_d1_timer);
-+ init_timer(&n2lm_d2_timer);
-+
-+ n2lm_rsr_timer.function = n2lm_rsr_handler;
-+ n2lm_rsg_timer.function = n2lm_rsg_handler;
-+ n2lm_d2_timer.function = n2lm_d2_handler;
-+ n2lm_d1_timer.function = n2lm_d1_handler;
-+#endif
-+
-+ init_timer(&n2bz_timer);
-+ n2bz_timer.function = n2bz_handler;
-+
-+ n2lm_rsr_timer.data = n2lm_rsg_timer.data = n2lm_d1_timer.data = n2lm_d2_timer.data = n2bz_timer.data = 0;
-+
-+#ifndef CONFIG_LEDS
-+ *IXP4XX_GPIO_GPOER &= 0xfffffff0; //enable gpio 0-3
-+ *IXP4XX_GPIO_GPOUTR |= 0x00000003; //turn off the leds
-+ *IXP4XX_GPIO_GPOUTR &= 0xfffffffc;
-+ n2lm_ledon(LED_ALL);
-+ n2_buzz(NSLU2_BEEP_PITCH_MED, NSLU2_BEEP_DUR_SHORT);
-+ n2lm_ledoff(LED_ALL);
-+
-+ // Default the Ready/Status to Red during kernel boot, Turn Green at the end of sysvinit
-+ n2lm_ledon(LED_RS_RED);
-+#endif
-+
-+ return;
-+}
-+
-+//==================================================================================================
-+
-+static int __init n2iom_init(void)
-+{
-+ printk(KERN_INFO "NSLU2: i/o, %s\n", VERSION);
-+
-+ n2iom_initarch();
-+
-+ n2lm_class = class_create(THIS_MODULE, "nslu2");
-+
-+#ifndef CONFIG_LEDS
-+ if (register_chrdev(NSLU2LM_MAJOR, "n2_ledm", &n2lm_fops) < 0) {
-+ printk(KERN_DEBUG "Led Manager Major %d not available\n", NSLU2LM_MAJOR);
-+ return -EBUSY;
-+ }
-+ else {
-+ class_device_create(n2lm_class, MKDEV(NSLU2LM_MAJOR, 0), NULL, "leds");
-+ }
-+#endif
-+
-+ if (register_chrdev(NSLU2BZ_MAJOR, "n2_bzm", &n2bz_fops) < 0) {
-+ printk(KERN_DEBUG "Buzzer Major %d not available\n", NSLU2BZ_MAJOR);
-+ return -EBUSY;
-+ }
-+ else {
-+ class_device_create(n2lm_class, MKDEV(NSLU2BZ_MAJOR, 0), NULL, "buzzer");
-+ }
-+
-+ return 0;
-+}
-+
-+//==================================================================================================
-+
-+static void __exit n2iom_exit(void)
-+{
-+
-+#ifndef CONFIG_LEDS
-+ del_timer(&n2lm_rsg_timer);
-+ del_timer(&n2lm_rsr_timer);
-+ del_timer(&n2lm_d1_timer);
-+ del_timer(&n2lm_d2_timer);
-+
-+ unregister_chrdev(NSLU2LM_MAJOR, "n2lm" );
-+ class_device_destroy(n2lm_class, MKDEV(NSLU2LM_MAJOR, 0));
-+#endif
-+
-+ unregister_chrdev(NSLU2BZ_MAJOR, "n2bz");
-+ class_device_destroy(n2lm_class, MKDEV(NSLU2BZ_MAJOR, 0));
-+
-+ class_destroy(n2lm_class);
-+}
-+
-+module_init(n2iom_init);
-+module_exit(n2iom_exit);
-+
-+MODULE_AUTHOR("Karen Spearel <kas11@tampabay.rr.com>");
-+MODULE_DESCRIPTION("NSLU2 I/O driver");
-+MODULE_LICENSE("GPL");
diff --git a/packages/linux/nslu2-kernel/2.6.14/75-nslu2-leds.patch b/packages/linux/nslu2-kernel/2.6.14/75-nslu2-leds.patch
deleted file mode 100644
index 2701c012f3..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/75-nslu2-leds.patch
+++ /dev/null
@@ -1,267 +0,0 @@
---- linux-2.6.13/.pc/75-nslu2-leds.patch/arch/arm/Kconfig 2005-10-26 15:19:34.490925838 -0700
-+++ linux-2.6.13/arch/arm/Kconfig 2005-10-26 15:24:18.628805508 -0700
-@@ -389,7 +389,8 @@ config LEDS
- ARCH_EBSA285 || ARCH_IMX || ARCH_INTEGRATOR || \
- ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \
- ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \
-- ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE
-+ ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || \
-+ MACH_NSLU2
- help
- If you say Y here, the LEDs on your machine will be used
- to provide useful information about your current system status.
-@@ -403,7 +404,7 @@ config LEDS
-
- config LEDS_TIMER
- bool "Timer LED" if (!ARCH_CDB89712 && !ARCH_OMAP) || \
-- MACH_OMAP_H2 || MACH_OMAP_PERSEUS2
-+ MACH_OMAP_H2 || MACH_OMAP_PERSEUS2 || MACH_NSLU2
- depends on LEDS
- default y if ARCH_EBSA110
- help
-@@ -419,7 +420,8 @@ config LEDS_TIMER
-
- config LEDS_CPU
- bool "CPU usage LED" if (!ARCH_CDB89712 && !ARCH_EBSA110 && \
-- !ARCH_OMAP) || MACH_OMAP_H2 || MACH_OMAP_PERSEUS2
-+ !ARCH_OMAP) || MACH_OMAP_H2 || MACH_OMAP_PERSEUS2 \
-+ || MACH_NSLU2
- depends on LEDS
- help
- If you say Y here, the red LED will be used to give a good real
---- linux-2.6.13/.pc/75-nslu2-leds.patch/arch/arm/mach-ixp4xx/Makefile 2005-10-26 15:19:43.979522918 -0700
-+++ linux-2.6.13/arch/arm/mach-ixp4xx/Makefile 2005-10-26 15:24:18.632805759 -0700
-@@ -10,3 +10,7 @@ obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-
- obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o
- obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o nslu2-rtc.o nslu2-io.o
-
-+leds-$(CONFIG_MACH_NSLU2) += nslu2-leds.o
-+obj-$(CONFIG_LEDS) += $(leds-y)
-+
-+
---- linux-2.6.13/.pc/75-nslu2-leds.patch/arch/arm/mach-ixp4xx/nslu2-leds.c 2005-10-26 15:19:44.251540035 -0700
-+++ linux-2.6.13/arch/arm/mach-ixp4xx/nslu2-leds.c 2005-10-26 15:24:18.632805759 -0700
-@@ -0,0 +1,223 @@
-+/*
-+ * arch/arm/mach-ixp4xx/nslu2-leds.c
-+ *
-+ * NSLU2 LEDs driver
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ *
-+ * based on nslu2-io.c
-+ * Copyright (C) 2004 Karen Spearel
-+ * and arch/arm/mach-footbridge/netwinder-leds.c
-+ * Copyright (C) 1998-1999 Russell King
-+ *
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ * Maintainers: http://www.nslu2-linux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/spinlock.h>
-+#include <linux/notifier.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/leds.h>
-+#include <asm/mach-types.h>
-+#include <asm/system.h>
-+
-+#define LED_STATE_ENABLED 0x01
-+#define LED_STATE_CLAIMED 0x02
-+#define LED_STATE_IDLE 0x04
-+
-+static unsigned char led_state;
-+static unsigned int hw_led_state;
-+
-+static const unsigned long idle_seq[4] = {
-+
-+ NSLU2_LED_GRN_BM, 0,
-+ NSLU2_LED_GRN_BM, 0,
-+};
-+
-+static const unsigned long busy_seq[4] = {
-+
-+ NSLU2_LED_GRN_BM, 0,
-+ NSLU2_LED_GRN_BM | NSLU2_LED_RED_BM, 0,
-+};
-+
-+static unsigned char led_count = 0;
-+
-+static DEFINE_SPINLOCK(leds_lock);
-+extern spinlock_t gpio_lock;
-+
-+static void nslu2_leds_event(led_event_t evt)
-+{
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&leds_lock, flags);
-+
-+ switch (evt) {
-+ case led_start:
-+ /* Let's rock! Red led on, all others off. Remember
-+ * that disk1/disk2 works inverted. On the NSLU2, the
-+ * interface starts in a claimed state. XXX
-+ */
-+ led_state = LED_STATE_ENABLED | LED_STATE_CLAIMED;
-+ hw_led_state = NSLU2_LED_DISK1_BM | NSLU2_LED_DISK2_BM
-+ | NSLU2_LED_RED_BM;
-+ break;
-+
-+ case led_stop:
-+ led_state &= ~LED_STATE_ENABLED;
-+ break;
-+
-+ case led_claim:
-+ /* The user claimed the interface, red and green off */
-+ led_state |= LED_STATE_CLAIMED;
-+ hw_led_state &= ~(NSLU2_LED_RED_BM | NSLU2_LED_GRN_BM);
-+ break;
-+
-+ case led_release:
-+ /* The user released the interface, preserve the last
-+ * status of the leds, except red/green.
-+ */
-+ led_state &= ~LED_STATE_CLAIMED;
-+ hw_led_state = *IXP4XX_GPIO_GPOUTR & 0x0000000C;
-+ break;
-+
-+#ifdef CONFIG_LEDS_TIMER
-+ case led_timer:
-+ /* Pulse green led */
-+ if (!(led_state & LED_STATE_CLAIMED))
-+ {
-+ /* clear red and green bits */
-+ hw_led_state &= ~(NSLU2_LED_RED_BM | NSLU2_LED_GRN_BM);
-+
-+ /* copy the right sequence in */
-+ if (led_state & LED_STATE_IDLE)
-+ hw_led_state |= idle_seq[led_count % 4];
-+ else
-+ hw_led_state |= busy_seq[led_count % 4];
-+
-+ led_count++;
-+ }
-+ break;
-+#endif
-+
-+#ifdef CONFIG_LEDS_CPU
-+
-+ case led_idle_start:
-+ led_state |= LED_STATE_IDLE;
-+#ifndef CONFIG_LEDS_TIMER
-+ /* green on, red off */
-+ hw_led_state |= NSLU2_LED_GRN_BM;
-+ hw_led_state &= ~NSLU2_LED_RED_BM;
-+#endif
-+ break;
-+
-+ case led_idle_end:
-+ led_state &= ~LED_STATE_IDLE;
-+#ifndef CONFIG_LEDS_TIMER
-+ /* green on, red on -> amber on */
-+ hw_led_state |= NSLU2_LED_GRN_BM | NSLU2_LED_RED_BM;
-+#endif
-+ break;
-+#endif
-+
-+ case led_halted:
-+ if (!(led_state & LED_STATE_CLAIMED))
-+ hw_led_state |= NSLU2_LED_RED_BM;
-+ break;
-+
-+ /* leds */
-+
-+ case led_green_on:
-+ if (led_state & LED_STATE_CLAIMED)
-+ hw_led_state |= NSLU2_LED_GRN_BM;
-+ break;
-+
-+ case led_green_off:
-+ if (led_state & LED_STATE_CLAIMED)
-+ hw_led_state &= ~NSLU2_LED_GRN_BM;
-+ break;
-+
-+ case led_amber_on:
-+ if (led_state & LED_STATE_CLAIMED)
-+ hw_led_state |= (NSLU2_LED_RED_BM | NSLU2_LED_GRN_BM);
-+ break;
-+
-+ case led_amber_off:
-+ if (led_state & LED_STATE_CLAIMED)
-+ hw_led_state &= ~(NSLU2_LED_RED_BM | NSLU2_LED_GRN_BM);
-+ break;
-+
-+ case led_red_on:
-+ if (led_state & LED_STATE_CLAIMED)
-+ hw_led_state |= NSLU2_LED_RED_BM;
-+ break;
-+
-+ case led_red_off:
-+ if (led_state & LED_STATE_CLAIMED)
-+ hw_led_state &= ~NSLU2_LED_RED_BM;
-+ break;
-+
-+ default:
-+ break;
-+ }
-+
-+ spin_unlock_irqrestore(&leds_lock, flags);
-+
-+ if (led_state & LED_STATE_ENABLED) {
-+ spin_lock_irqsave(&gpio_lock, flags);
-+ *IXP4XX_GPIO_GPOUTR = (*IXP4XX_GPIO_GPOUTR & 0xFFFFFFF0) | hw_led_state;
-+ spin_unlock_irqrestore(&gpio_lock, flags);
-+ }
-+}
-+
-+static int nslu2_leds_panic_event(struct notifier_block *this, unsigned long event,
-+ void *ptr)
-+{
-+ leds_event(led_green_off);
-+ leds_event(led_red_on);
-+
-+ return NOTIFY_DONE;
-+}
-+
-+static struct notifier_block nslu2_leds_panic_block = {
-+ .notifier_call = nslu2_leds_panic_event,
-+};
-+
-+static int __init nslu2_leds_init(void)
-+{
-+ if (!(machine_is_nslu2()))
-+ return 0;
-+
-+ printk(KERN_INFO "NSLU2: leds\n");
-+
-+ /* register panic notifier */
-+ notifier_chain_register(&panic_notifier_list, &nslu2_leds_panic_block);
-+
-+ /* enable gpio 0-3 */
-+ gpio_line_config(NSLU2_LED_GRN, IXP4XX_GPIO_OUT);
-+ gpio_line_config(NSLU2_LED_RED, IXP4XX_GPIO_OUT);
-+ gpio_line_config(NSLU2_LED_DISK1, IXP4XX_GPIO_OUT);
-+ gpio_line_config(NSLU2_LED_DISK2, IXP4XX_GPIO_OUT);
-+
-+ leds_event = nslu2_leds_event;
-+
-+ /* this will also initialize the leds to the
-+ * default state.
-+ */
-+
-+ leds_event(led_start);
-+
-+ return 0;
-+}
-+
-+module_init(nslu2_leds_init);
-+
diff --git a/packages/linux/nslu2-kernel/2.6.14/90-ixp4xx-pci-le.patch b/packages/linux/nslu2-kernel/2.6.14/90-ixp4xx-pci-le.patch
deleted file mode 100644
index 1a37b13a79..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/90-ixp4xx-pci-le.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- linux-2.6.13/.pc/90-ixp4xx-pci-le.patch/arch/arm/mach-ixp4xx/common-pci.c 2005-08-28 16:41:01.000000000 -0700
-+++ linux-2.6.13/arch/arm/mach-ixp4xx/common-pci.c 2005-10-26 15:24:30.337542292 -0700
-@@ -427,7 +427,7 @@ void __init ixp4xx_pci_preinit(void)
- #ifdef __ARMEB__
- *PCI_CSR = PCI_CSR_IC | PCI_CSR_ABE | PCI_CSR_PDS | PCI_CSR_ADS;
- #else
-- *PCI_CSR = PCI_CSR_IC;
-+ *PCI_CSR = PCI_CSR_IC | PCI_CSR_ABE;
- #endif
-
- pr_debug("DONE\n");
diff --git a/packages/linux/nslu2-kernel/2.6.14/90-pegasus.patch b/packages/linux/nslu2-kernel/2.6.14/90-pegasus.patch
deleted file mode 100644
index ab80672135..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/90-pegasus.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-*** linux-2.6.13/drivers/usb/net/pegasus.h.orig Mon Aug 29 01:41:01 2005
---- linux-2.6.13/drivers/usb/net/pegasus.h Sat Oct 22 20:51:29 2005
-***************
-*** 181,186 ****
---- 181,188 ----
- DEFAULT_GPIO_RESET )
- PEGASUS_DEV( "SpeedStream USB 10/100 Ethernet", VENDOR_ACCTON, 0x5046,
- DEFAULT_GPIO_RESET | PEGASUS_II )
-+ PEGASUS_DEV( "Philips CPWUE01/00 USB 10/100 Ethernet", VENDOR_ACCTON, 0xb004,
-+ DEFAULT_GPIO_RESET | PEGASUS_II )
- PEGASUS_DEV( "ADMtek ADM8511 \"Pegasus II\" USB Ethernet",
- VENDOR_ADMTEK, 0x8511,
- DEFAULT_GPIO_RESET | PEGASUS_II | HAS_HOME_PNA )
diff --git a/packages/linux/nslu2-kernel/2.6.14/defconfig b/packages/linux/nslu2-kernel/2.6.14/defconfig
deleted file mode 100644
index 83b25213ac..0000000000
--- a/packages/linux/nslu2-kernel/2.6.14/defconfig
+++ /dev/null
@@ -1,1556 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.14
-# Mon Nov 28 18:53:25 2005
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=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 is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_EMBEDDED=y
-# CONFIG_KALLSYMS is not set
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-# CONFIG_BASE_FULL is not set
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=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_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=1
-
-#
-# 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
-
-#
-# System Type
-#
-# 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_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-CONFIG_ARCH_IXP4XX=y
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 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_VERSATILE is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
-
-#
-# Intel IXP4xx Implementation Options
-#
-
-#
-# IXP4xx Platforms
-#
-CONFIG_MACH_NSLU2=y
-# CONFIG_ARCH_AVILA is not set
-# CONFIG_ARCH_ADI_COYOTE is not set
-# CONFIG_ARCH_IXDP425 is not set
-# CONFIG_MACH_IXDPG425 is not set
-# CONFIG_MACH_IXDP465 is not set
-# CONFIG_ARCH_PRPMC1100 is not set
-# CONFIG_MACH_GTWX5715 is not set
-
-#
-# IXP4xx Options
-#
-CONFIG_IXP4XX_INDIRECT_PCI=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_XSCALE_PMU=y
-CONFIG_DMABOUNCE=y
-
-#
-# Bus support
-#
-CONFIG_ISA_DMA_API=y
-CONFIG_PCI=y
-# CONFIG_PCI_LEGACY_PROC is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_PREEMPT is not set
-# CONFIG_NO_IDLE_HZ 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_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="root=/dev/mtdblock4 rw rootfstype=jffs2 mem=32M@0x00000000 init=/linuxrc x1205.hctosys=1 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_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=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_TUNNEL=m
-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_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-# CONFIG_NETFILTER_NETLINK is not set
-
-#
-# 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_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=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_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_PHYSDEV=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_REALM=m
-# CONFIG_IP_NF_MATCH_SCTP is not set
-# CONFIG_IP_NF_MATCH_DCCP is not set
-CONFIG_IP_NF_MATCH_COMMENT=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-# CONFIG_IP_NF_MATCH_STRING is not set
-CONFIG_IP_NF_FILTER=m
-# CONFIG_IP_NF_TARGET_REJECT is not set
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_TARGET_NFQUEUE is not set
-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_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_CLASSIFY=m
-# CONFIG_IP_NF_TARGET_TTL is not set
-# CONFIG_IP_NF_RAW 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_IP6_NF_TARGET_NFQUEUE is not set
-
-#
-# 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
-# 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=y
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# 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
-# 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 is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-
-#
-# 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 is not set
-# CONFIG_INFTL 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_XIP 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_EDB7312 is not set
-# 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_BLKMTD 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
-
-#
-# 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 is not set
-# 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_INITRD=y
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE 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_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE 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=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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# 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 is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_FC is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-CONFIG_SCSI_QLA2XXX=y
-# CONFIG_SCSI_QLA21XX is not set
-# CONFIG_SCSI_QLA22XX is not set
-# CONFIG_SCSI_QLA2300 is not set
-# CONFIG_SCSI_QLA2322 is not set
-# CONFIG_SCSI_QLA6312 is not set
-# CONFIG_SCSI_QLA24XX 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_RAID5=m
-CONFIG_MD_RAID6=m
-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_MACLIST=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_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 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE 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=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# CONFIG_AIRO 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_HOSTAP 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPPOE is not set
-# 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=m
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# 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 is not set
-# CONFIG_INPUT_MOUSE 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 is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-# CONFIG_VT 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_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=y
-CONFIG_LEGACY_PTY_COUNT=16
-
-#
-# 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=y
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-# CONFIG_NVRAM is not set
-CONFIG_RTC=m
-# 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_IXP4XX=y
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_SCx200_ACB 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 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-CONFIG_SENSORS_X1205=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
-
-#
-# Hardware Monitoring support
-#
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID 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_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_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_W83781D 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_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-CONFIG_VIDEO_BT848=m
-# CONFIG_VIDEO_SAA6588 is not set
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=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_SAA7134=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_OVCAMCHIP=m
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO 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
-
-#
-# Graphics support
-#
-# 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_RTCTIMER is not set
-# 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_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_CS46XX is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_YMFPCI is not set
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_CMIPCI 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_MAESTRO3 is not set
-# CONFIG_SND_FM801 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_SONICVIBES is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_HDA_INTEL 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=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 is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-
-#
-# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem
-#
-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_ONETOUCH is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# 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_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_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
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC 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_W9968CF is not set
-CONFIG_USB_PWC=m
-
-#
-# 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_ZD1201 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_AIRPRIME 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_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_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_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-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_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
-
-#
-# 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_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=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_RELAYFS_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_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=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_XATTR=y
-CONFIG_CIFS_POSIX=y
-# 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_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_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_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 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/nslu2-kernel/2.6.15/00-memory-h-page-shift.patch b/packages/linux/nslu2-kernel/2.6.15/00-memory-h-page-shift.patch
deleted file mode 100644
index 30d34952d5..0000000000
--- a/packages/linux/nslu2-kernel/2.6.15/00-memory-h-page-shift.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=3218/1
-
-PAGE_SHIFT is undeclared in include/asm-arm/arch-ixp4xx/memory.h, identified by the following kernel compilation error:
-
-CC [M] sound/core/memory.o
-In file included from include/asm/memory.h:27,
-from include/asm/io.h:28,
-from sound/core/memory.c:24:
-include/asm/arch/memory.h: In function `__arch_adjust_zones':
-include/asm/arch/memory.h:28: error: `PAGE_SHIFT' undeclared (first use
-in this function)
-
-This patch replaces my previous attempt at fixing this problem (Patch 3214/1) and is based on the following feedback:
-
-Russell King wrote:
-> The error you see came up on SA1100. The best solution was to move
-> the __arch_adjust_zones() function out of line. I suggest ixp4xx
-> does the same.
-
-I have moved the function out of line into arch/arm/mach-ixp4xx/common-pci.c as suggested.
-
-Signed-off-by: Rod Whitby <rod@whitby.id.au>
-
---- linux-2.6.15-rc7/include/asm-arm/arch-ixp4xx/memory.h~ 2005-12-30 05:18:27.000000000 +1030
-+++ linux-2.6.15-rc7/include/asm-arm/arch-ixp4xx/memory.h 2005-12-30 05:36:04.000000000 +1030
-@@ -16,31 +16,10 @@
-
- #ifndef __ASSEMBLY__
-
--/*
-- * Only first 64MB of memory can be accessed via PCI.
-- * We use GFP_DMA to allocate safe buffers to do map/unmap.
-- * This is really ugly and we need a better way of specifying
-- * DMA-capable regions of memory.
-- */
--static inline void __arch_adjust_zones(int node, unsigned long *zone_size,
-- unsigned long *zhole_size)
--{
-- unsigned int sz = SZ_64M >> PAGE_SHIFT;
--
-- /*
-- * Only adjust if > 64M on current system
-- */
-- if (node || (zone_size[0] <= sz))
-- return;
--
-- zone_size[1] = zone_size[0] - sz;
-- zone_size[0] = sz;
-- zhole_size[1] = zhole_size[0];
-- zhole_size[0] = 0;
--}
-+void ixp4xx_adjust_zones(int node, unsigned long *size, unsigned long *holes);
-
- #define arch_adjust_zones(node, size, holes) \
-- __arch_adjust_zones(node, size, holes)
-+ ixp4xx_adjust_zones(node, size, holes)
-
- #define ISA_DMA_THRESHOLD (SZ_64M - 1)
-
---- linux-2.6.15-rc7/arch/arm/mach-ixp4xx/common-pci.c~ 2005-12-30 05:16:03.000000000 +1030
-+++ linux-2.6.15-rc7/arch/arm/mach-ixp4xx/common-pci.c 2005-12-30 05:43:55.000000000 +1030
-@@ -341,6 +341,29 @@ int dma_needs_bounce(struct device *dev,
- return (dev->bus == &pci_bus_type ) && ((dma_addr + size) >= SZ_64M);
- }
-
-+/*
-+ * Only first 64MB of memory can be accessed via PCI.
-+ * We use GFP_DMA to allocate safe buffers to do map/unmap.
-+ * This is really ugly and we need a better way of specifying
-+ * DMA-capable regions of memory.
-+ */
-+void __init ixp4xx_adjust_zones(int node, unsigned long *zone_size,
-+ unsigned long *zhole_size)
-+{
-+ unsigned int sz = SZ_64M >> PAGE_SHIFT;
-+
-+ /*
-+ * Only adjust if > 64M on current system
-+ */
-+ if (node || (zone_size[0] <= sz))
-+ return;
-+
-+ zone_size[1] = zone_size[0] - sz;
-+ zone_size[0] = sz;
-+ zhole_size[1] = zhole_size[0];
-+ zhole_size[0] = 0;
-+}
-+
- void __init ixp4xx_pci_preinit(void)
- {
- unsigned long processor_id;
diff --git a/packages/linux/nslu2-kernel/2.6.15/10-mtdpart-redboot-fis-byteswap.patch b/packages/linux/nslu2-kernel/2.6.15/10-mtdpart-redboot-fis-byteswap.patch
deleted file mode 100644
index 3fa0535abf..0000000000
--- a/packages/linux/nslu2-kernel/2.6.15/10-mtdpart-redboot-fis-byteswap.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-drivers/mtd/redboot.c: recognise a foreign byte sex partition table
-
-The RedBoot boot loader writes flash partition tables containing native
-byte sex 32 bit values. When booting an opposite byte sex kernel (e.g. an
-LE kernel from BE RedBoot) the current MTD driver fails to handle the
-partition table and therefore is unable to generate the correct partition
-map for the flash.
-
-The patch recognises that the FIS directory (the partition table) is
-byte-reversed by examining the partition table size, which is known to be
-one erase block (this is an assumption made elsewhere in redboot.c). If
-the size matches the erase block after byte swapping the value then
-byte-reversal is assumed, if not no further action is taken. The patched
-code is fail safe; should redboot.c be changed to support a partition table
-with a modified size field the test will fail and the partition table will
-be assumed to have the host byte sex.
-
-If byte-reversal is detected the patch byte swaps the remainder of the 32
-bit fields in the copy of the table; this copy is then used to set up the
-MTD partition map.
-
-Signed-off-by: John Bowler <jbowler@acm.org>
-Signed-off-by: Andrew Morton <akpm@osdl.org>
-Modified slightly and
-Signed-off-by: David Woodhouse <dwmw2@infradead.org>
-
-Index: drivers/mtd/redboot.c
-===================================================================
-RCS file: /home/cvs/mtd/drivers/mtd/redboot.c,v
-retrieving revision 1.18
-retrieving revision 1.19
-diff -u -p -r1.18 -r1.19
---- linux-2.6.15/drivers/mtd/redboot.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/mtd/redboot.c 1970-01-01 00:00:00.000000000 +0000
-@@ -89,8 +89,32 @@ static int parse_redboot_partitions(stru
- i = numslots;
- break;
- }
-- if (!memcmp(buf[i].name, "FIS directory", 14))
-+ if (!memcmp(buf[i].name, "FIS directory", 14)) {
-+ /* This is apparently the FIS directory entry for the
-+ * FIS directory itself. The FIS directory size is
-+ * one erase block; if the buf[i].size field is
-+ * swab32(erasesize) then we know we are looking at
-+ * a byte swapped FIS directory - swap all the entries!
-+ * (NOTE: this is 'size' not 'data_length'; size is
-+ * the full size of the entry.)
-+ */
-+ if (swab32(buf[i].size) == master->erasesize) {
-+ int j;
-+ for (j = 0; j < numslots && buf[j].name[0] != 0xff; ++j) {
-+ /* The unsigned long fields were written with the
-+ * wrong byte sex, name and pad have no byte sex.
-+ */
-+ swab32s(&buf[j].flash_base);
-+ swab32s(&buf[j].mem_base);
-+ swab32s(&buf[j].size);
-+ swab32s(&buf[j].entry_point);
-+ swab32s(&buf[j].data_length);
-+ swab32s(&buf[j].desc_cksum);
-+ swab32s(&buf[j].file_cksum);
-+ }
-+ }
- break;
-+ }
- }
- if (i == numslots) {
- /* Didn't find it */
-
-
diff --git a/packages/linux/nslu2-kernel/2.6.15/15-jffs2-endian-config.patch b/packages/linux/nslu2-kernel/2.6.15/15-jffs2-endian-config.patch
deleted file mode 100644
index fdebb652a7..0000000000
--- a/packages/linux/nslu2-kernel/2.6.15/15-jffs2-endian-config.patch
+++ /dev/null
@@ -1,68 +0,0 @@
---- linux-2.6.15/fs/Kconfig~ 2006-01-03 13:51:10.000000000 +1030
-+++ linux-2.6.15/fs/Kconfig 2006-01-05 01:35:36.000000000 +1030
-@@ -1132,6 +1132,31 @@ config JFFS2_CMODE_SIZE
-
- endchoice
-
-+choice
-+ prompt "JFFS2 endianness"
-+ default JFFS2_NATIVE_ENDIAN
-+ depends on JFFS2_FS
-+ help
-+ You can set here the default endianness of JFFS2 from
-+ the available options. Don't touch if unsure.
-+
-+config JFFS2_NATIVE_ENDIAN
-+ bool "native endian"
-+ help
-+ Uses a native endian bytestream.
-+
-+config JFFS2_BIG_ENDIAN
-+ bool "big endian"
-+ help
-+ Uses a big endian bytestream.
-+
-+config JFFS2_LITTLE_ENDIAN
-+ bool "little endian"
-+ help
-+ Uses a little endian bytestream.
-+
-+endchoice
-+
- config CRAMFS
- tristate "Compressed ROM file system support (cramfs)"
- select ZLIB_INFLATE
---- linux-2.6.15/fs/jffs2/nodelist.h~ 2006-01-05 01:37:06.000000000 +1030
-+++ linux-2.6.15/fs/jffs2/nodelist.h 2006-01-05 01:37:54.000000000 +1030
-@@ -29,12 +29,10 @@
- #include "os-linux.h"
- #endif
-
--#define JFFS2_NATIVE_ENDIAN
--
- /* Note we handle mode bits conversion from JFFS2 (i.e. Linux) to/from
- whatever OS we're actually running on here too. */
-
--#if defined(JFFS2_NATIVE_ENDIAN)
-+#if defined(CONFIG_JFFS2_NATIVE_ENDIAN)
- #define cpu_to_je16(x) ((jint16_t){x})
- #define cpu_to_je32(x) ((jint32_t){x})
- #define cpu_to_jemode(x) ((jmode_t){os_to_jffs2_mode(x)})
-@@ -42,7 +40,7 @@
- #define je16_to_cpu(x) ((x).v16)
- #define je32_to_cpu(x) ((x).v32)
- #define jemode_to_cpu(x) (jffs2_to_os_mode((x).m))
--#elif defined(JFFS2_BIG_ENDIAN)
-+#elif defined(CONFIG_JFFS2_BIG_ENDIAN)
- #define cpu_to_je16(x) ((jint16_t){cpu_to_be16(x)})
- #define cpu_to_je32(x) ((jint32_t){cpu_to_be32(x)})
- #define cpu_to_jemode(x) ((jmode_t){cpu_to_be32(os_to_jffs2_mode(x))})
-@@ -50,7 +48,7 @@
- #define je16_to_cpu(x) (be16_to_cpu(x.v16))
- #define je32_to_cpu(x) (be32_to_cpu(x.v32))
- #define jemode_to_cpu(x) (be32_to_cpu(jffs2_to_os_mode((x).m)))
--#elif defined(JFFS2_LITTLE_ENDIAN)
-+#elif defined(CONFIG_JFFS2_LITTLE_ENDIAN)
- #define cpu_to_je16(x) ((jint16_t){cpu_to_le16(x)})
- #define cpu_to_je32(x) ((jint32_t){cpu_to_le32(x)})
- #define cpu_to_jemode(x) ((jmode_t){cpu_to_le32(os_to_jffs2_mode(x))})
diff --git a/packages/linux/nslu2-kernel/2.6.15/40-rtc-class.patch b/packages/linux/nslu2-kernel/2.6.15/40-rtc-class.patch
deleted file mode 100644
index feea3f2f8b..0000000000
--- a/packages/linux/nslu2-kernel/2.6.15/40-rtc-class.patch
+++ /dev/null
@@ -1,2719 +0,0 @@
---- linux-nslu2.orig/include/linux/rtc.h 2006-01-03 15:31:18.000000000 +0100
-+++ linux-nslu2/include/linux/rtc.h 2006-01-03 15:34:24.000000000 +0100
-@@ -91,8 +91,81 @@ struct rtc_pll_info {
- #define RTC_PLL_GET _IOR('p', 0x11, struct rtc_pll_info) /* Get PLL correction */
- #define RTC_PLL_SET _IOW('p', 0x12, struct rtc_pll_info) /* Set PLL correction */
-
-+/* interrupt flags */
-+#define RTC_IRQF 0x80 /* any of the following is active */
-+#define RTC_PF 0x40
-+#define RTC_AF 0x20
-+#define RTC_UF 0x10
-+
- #ifdef __KERNEL__
-
-+#include <linux/device.h>
-+#include <linux/seq_file.h>
-+#include <linux/cdev.h>
-+#include <linux/poll.h>
-+
-+struct rtc_class_ops {
-+ int (*open)(struct device *);
-+ void (*release)(struct device *);
-+ int (*ioctl)(struct device *, unsigned int, unsigned long);
-+ int (*read_time)(struct device *, struct rtc_time *);
-+ int (*set_time)(struct device *, struct rtc_time *);
-+ int (*read_alarm)(struct device *, struct rtc_wkalrm *);
-+ int (*set_alarm)(struct device *, struct rtc_wkalrm *);
-+ int (*proc)(struct device *, struct seq_file *);
-+ int (*set_mmss)(struct device *, unsigned long secs);
-+ int (*irq_set_state)(struct device *, int enabled);
-+ int (*irq_set_freq)(struct device *, int freq);
-+};
-+
-+#define RTC_DEVICE_NAME_SIZE 20
-+struct rtc_task;
-+
-+struct rtc_device
-+{
-+ int id;
-+ struct module *owner;
-+ struct rw_semaphore lock;
-+ struct class_device class_dev;
-+ struct rtc_class_ops *ops;
-+ char name[RTC_DEVICE_NAME_SIZE];
-+
-+ struct cdev char_dev;
-+ struct semaphore char_sem;
-+
-+ unsigned long irq_data;
-+ spinlock_t irq_lock;
-+ wait_queue_head_t irq_queue;
-+ struct fasync_struct *async_queue;
-+
-+ spinlock_t irq_task_lock;
-+ struct rtc_task *irq_task;
-+ int irq_freq;
-+};
-+#define to_rtc_device(d) container_of(d, struct rtc_device, class_dev)
-+
-+extern struct rtc_device *rtc_device_register(char *name,
-+ struct device *dev,
-+ struct rtc_class_ops *ops,
-+ struct module *owner);
-+extern void rtc_device_unregister(struct rtc_device *rdev);
-+extern int rtc_interface_register(struct class_interface *intf);
-+
-+
-+extern int rtc_month_days(unsigned int month, unsigned int year);
-+extern int rtc_valid_tm(struct rtc_time *tm);
-+extern int rtc_tm_to_time(struct rtc_time *tm, unsigned long *time);
-+extern void rtc_time_to_tm(unsigned long time, struct rtc_time *tm);
-+
-+extern int rtc_read_time(struct class_device *class_dev, struct rtc_time *tm);
-+extern int rtc_set_time(struct class_device *class_dev, struct rtc_time *tm);
-+extern int rtc_read_alarm(struct class_device *class_dev,
-+ struct rtc_wkalrm *alrm);
-+extern int rtc_set_alarm(struct class_device *class_dev,
-+ struct rtc_wkalrm *alrm);
-+extern void rtc_update_irq(struct class_device *class_dev,
-+ unsigned long num, unsigned long events);
-+
- typedef struct rtc_task {
- void (*func)(void *private_data);
- void *private_data;
---- linux-nslu2.orig/drivers/Kconfig 2006-01-03 15:31:19.000000000 +0100
-+++ linux-nslu2/drivers/Kconfig 2006-01-04 01:27:31.000000000 +0100
-@@ -66,4 +66,6 @@ source "drivers/infiniband/Kconfig"
-
- source "drivers/sn/Kconfig"
-
-+source "drivers/rtc/Kconfig"
-+
- endmenu
---- linux-nslu2.orig/drivers/Makefile 2006-01-03 15:33:32.000000000 +0100
-+++ linux-nslu2/drivers/Makefile 2006-01-04 01:27:31.000000000 +0100
-@@ -54,6 +54,7 @@ obj-$(CONFIG_USB_GADGET) += usb/gadget/
- obj-$(CONFIG_GAMEPORT) += input/gameport/
- obj-$(CONFIG_INPUT) += input/
- obj-$(CONFIG_I2O) += message/
-+obj-y += rtc/
- obj-$(CONFIG_I2C) += i2c/
- obj-$(CONFIG_W1) += w1/
- obj-$(CONFIG_HWMON) += hwmon/
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/class.c 2006-01-03 15:45:19.000000000 +0100
-@@ -0,0 +1,141 @@
-+/*
-+ * RTC subsystem, base class
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ *
-+ * class skeleton from drivers/hwmon/hwmon.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; version 2 of the License.
-+*/
-+
-+#include <linux/module.h>
-+#include <linux/rtc.h>
-+#include <linux/kdev_t.h>
-+#include <linux/idr.h>
-+
-+static DEFINE_IDR(rtc_idr);
-+static DECLARE_MUTEX(idr_lock);
-+struct class *rtc_class;
-+
-+static void rtc_device_release(struct class_device *class_dev)
-+{
-+ struct rtc_device *rtc = to_rtc_device(class_dev);
-+ down(&idr_lock);
-+ idr_remove(&rtc_idr, rtc->id);
-+ up(&idr_lock);
-+ kfree(rtc);
-+}
-+
-+/**
-+ * rtc_device_register - register w/ RTC class
-+ * @dev: the device to register
-+ *
-+ * rtc_device_unregister() must be called when the class device is no
-+ * longer needed.
-+ *
-+ * Returns the pointer to the new struct class device.
-+ */
-+struct rtc_device *rtc_device_register(char *name, struct device *dev,
-+ struct rtc_class_ops *ops,
-+ struct module *owner)
-+{
-+ struct rtc_device *rtc;
-+ int id, err;
-+
-+ if (idr_pre_get(&rtc_idr, GFP_KERNEL) == 0) {
-+ err = -ENOMEM;
-+ goto exit;
-+ }
-+
-+
-+ down(&idr_lock);
-+ err = idr_get_new(&rtc_idr, NULL, &id);
-+ up(&idr_lock);
-+
-+ if (err < 0)
-+ goto exit;
-+
-+ id = id & MAX_ID_MASK;
-+
-+ if ((rtc = kzalloc(sizeof(struct rtc_device), GFP_KERNEL)) == NULL) {
-+ err = -ENOMEM;
-+ goto exit_idr;
-+ }
-+
-+ rtc->id = id;
-+ rtc->ops = ops;
-+ rtc->owner = owner;
-+ rtc->class_dev.dev = dev;
-+ rtc->class_dev.class = rtc_class;
-+ rtc->class_dev.release = rtc_device_release;
-+
-+ init_rwsem(&rtc->lock);
-+ spin_lock_init(&rtc->irq_lock);
-+ spin_lock_init(&rtc->irq_task_lock);
-+
-+ strlcpy(rtc->name, name, RTC_DEVICE_NAME_SIZE);
-+ snprintf(rtc->class_dev.class_id, BUS_ID_SIZE, "rtc%d", id);
-+
-+ if ((err = class_device_register(&rtc->class_dev)))
-+ goto exit_kfree;
-+
-+ dev_info(dev, "rtc core: registered %s as %s\n",
-+ rtc->name, rtc->class_dev.class_id);
-+
-+ return rtc;
-+
-+exit_kfree:
-+ kfree(rtc);
-+
-+exit_idr:
-+ idr_remove(&rtc_idr, id);
-+
-+exit:
-+ return ERR_PTR(err);
-+}
-+EXPORT_SYMBOL_GPL(rtc_device_register);
-+
-+
-+/**
-+ * rtc_device_unregister - removes the previously registered RTC class device
-+ *
-+ * @rtc: the RTC class device to destroy
-+ */
-+void rtc_device_unregister(struct rtc_device *rtc)
-+{
-+ down_write(&rtc->lock);
-+ class_device_unregister(&rtc->class_dev);
-+}
-+EXPORT_SYMBOL_GPL(rtc_device_unregister);
-+
-+int rtc_interface_register(struct class_interface *intf)
-+{
-+ intf->class = rtc_class;
-+ return class_interface_register(intf);
-+}
-+EXPORT_SYMBOL_GPL(rtc_interface_register);
-+
-+static int __init rtc_init(void)
-+{
-+ rtc_class = class_create(THIS_MODULE, "rtc");
-+ if (IS_ERR(rtc_class)) {
-+ printk(KERN_ERR "%s: couldn't create class\n", __FILE__);
-+ return PTR_ERR(rtc_class);
-+ }
-+ return 0;
-+}
-+
-+static void __exit rtc_exit(void)
-+{
-+ class_destroy(rtc_class);
-+}
-+
-+module_init(rtc_init);
-+module_exit(rtc_exit);
-+
-+MODULE_AUTHOR("Alessandro Zummo <a.zummo@towerteh.it>");
-+MODULE_DESCRIPTION("RTC class support");
-+MODULE_LICENSE("GPL");
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/Kconfig 2006-01-04 01:27:21.000000000 +0100
-@@ -0,0 +1,93 @@
-+#
-+# RTC class/drivers configuration
-+#
-+
-+menu "Real Time Clock"
-+
-+config RTC_CLASS
-+ tristate "RTC class"
-+ depends on EXPERIMENTAL
-+ default y
-+ help
-+ Generic RTC class support. If you say yes here, you will
-+ be allowed to plug one or more RTCs to your system. You will
-+ probably want to enable one of more of the interfaces below.
-+
-+ This driver can also be built as a module. If so, the module
-+ will be called rtc-class.
-+
-+comment "RTC interfaces"
-+ depends on RTC_CLASS
-+
-+config RTC_INTF_SYSFS
-+ tristate "sysfs"
-+ depends on RTC_CLASS && SYSFS
-+ default RTC_CLASS
-+ help
-+ Say yes here if you want to use your RTC using the sysfs
-+ interface, /sys/class/rtc/rtcX .
-+
-+ This driver can also be built as a module. If so, the module
-+ will be called rtc-sysfs.
-+
-+config RTC_INTF_PROC
-+ tristate "proc"
-+ depends on RTC_CLASS && PROC_FS
-+ default RTC_CLASS
-+ help
-+ Say yes here if you want to use your RTC using the proc
-+ interface, /proc/driver/rtc .
-+
-+ This driver can also be built as a module. If so, the module
-+ will be called rtc-proc.
-+
-+config RTC_INTF_DEV
-+ tristate "dev"
-+ depends on RTC_CLASS
-+ default RTC_CLASS
-+ help
-+ Say yes here if you want to use your RTC using the dev
-+ interface, /dev/rtc .
-+
-+ This driver can also be built as a module. If so, the module
-+ will be called rtc-dev.
-+
-+comment "RTC drivers"
-+ depends on RTC_CLASS
-+
-+config RTC_DRV_X1205
-+ tristate "Xicor/Intersil X1205 RTC chip"
-+ depends on RTC_CLASS && I2C
-+ help
-+ If you say yes here you get support for the
-+ Xicor/Intersil X1205 RTC chip.
-+
-+ This driver can also be built as a module. If so, the module
-+ will be called rtc-x1205.
-+
-+config RTC_DRV_DS1672
-+ tristate "Dallas/Maxim DS1672"
-+ depends on RTC_CLASS && I2C
-+ help
-+ If you say yes here you get support for the
-+ Dallas/Maxim DS1672 timekeeping chip.
-+
-+ This driver can also be built as a module. If so, the module
-+ will be called rtc-ds1672.
-+
-+config RTC_DRV_TEST
-+ tristate "Test driver/device"
-+ depends on RTC_CLASS
-+ help
-+ If you say yes here you get support for the
-+ RTC test driver. It's a software RTC which can be
-+ used to test the RTC subsystem APIs. It gets
-+ the time from the system clock.
-+ You want this driver only if you are doing development
-+ on the RTC subsystem. Please read the source code
-+ for further details.
-+
-+ This driver can also be built as a module. If so, the module
-+ will be called rtc-test.
-+
-+endmenu
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/Makefile 2006-01-04 01:27:21.000000000 +0100
-@@ -0,0 +1,15 @@
-+#
-+# Makefile for RTC class/drivers.
-+#
-+
-+obj-y += utils.o
-+obj-$(CONFIG_RTC_CLASS) += rtc-core.o
-+rtc-core-y := class.o interface.o
-+obj-$(CONFIG_RTC_INTF_SYSFS) += rtc-sysfs.o
-+obj-$(CONFIG_RTC_INTF_PROC) += rtc-proc.o
-+obj-$(CONFIG_RTC_INTF_DEV) += rtc-dev.o
-+
-+obj-$(CONFIG_RTC_DRV_X1205) += rtc-x1205.o
-+obj-$(CONFIG_RTC_DRV_TEST) += rtc-test.o
-+obj-$(CONFIG_RTC_DRV_DS1672) += rtc-ds1672.o
-+
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/interface.c 2006-01-03 15:34:24.000000000 +0100
-@@ -0,0 +1,189 @@
-+/*
-+ * RTC subsystem, interface functions
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ *
-+ * based on arch/arm/common/rtctime.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; version 2 of the License.
-+*/
-+
-+#include <linux/rtc.h>
-+
-+extern struct class *rtc_class;
-+
-+int rtc_read_time(struct class_device *class_dev, struct rtc_time *tm)
-+{
-+ int err = -EINVAL;
-+ struct rtc_class_ops *ops = to_rtc_device(class_dev)->ops;
-+
-+ if (ops->read_time) {
-+ memset(tm, 0, sizeof(struct rtc_time));
-+ err = ops->read_time(class_dev->dev, tm);
-+ }
-+ return err;
-+}
-+EXPORT_SYMBOL(rtc_read_time);
-+
-+int rtc_set_time(struct class_device *class_dev, struct rtc_time *tm)
-+{
-+ int err;
-+ struct rtc_class_ops *ops = to_rtc_device(class_dev)->ops;
-+
-+ err = rtc_valid_tm(tm);
-+ if (err == 0 && ops->set_time)
-+ err = ops->set_time(class_dev->dev, tm);
-+
-+ return err;
-+}
-+EXPORT_SYMBOL(rtc_set_time);
-+
-+int rtc_read_alarm(struct class_device *class_dev, struct rtc_wkalrm *alarm)
-+{
-+ struct rtc_class_ops *ops = to_rtc_device(class_dev)->ops;
-+ int err = -EINVAL;
-+
-+ if (ops->read_alarm) {
-+ memset(alarm, 0, sizeof(struct rtc_wkalrm));
-+ err = ops->read_alarm(class_dev->dev, alarm);
-+ }
-+ return err;
-+}
-+EXPORT_SYMBOL(rtc_read_alarm);
-+
-+int rtc_set_alarm(struct class_device *class_dev, struct rtc_wkalrm *alarm)
-+{
-+ int err = -EINVAL;
-+ struct rtc_class_ops *ops = to_rtc_device(class_dev)->ops;
-+
-+ if (ops->set_alarm)
-+ err = ops->set_alarm(class_dev->dev, alarm);
-+ return err;
-+}
-+EXPORT_SYMBOL(rtc_set_alarm);
-+
-+void rtc_update_irq(struct class_device *class_dev,
-+ unsigned long num, unsigned long events)
-+{
-+ struct rtc_device *rtc = to_rtc_device(class_dev);
-+
-+ spin_lock(&rtc->irq_lock);
-+ rtc->irq_data = (rtc->irq_data + (num << 8)) | events;
-+ spin_unlock(&rtc->irq_lock);
-+
-+ spin_lock(&rtc->irq_task_lock);
-+ if (rtc->irq_task)
-+ rtc->irq_task->func(rtc->irq_task->private_data);
-+ spin_unlock(&rtc->irq_task_lock);
-+
-+ wake_up_interruptible(&rtc->irq_queue);
-+ kill_fasync(&rtc->async_queue, SIGIO, POLL_IN);
-+}
-+EXPORT_SYMBOL(rtc_update_irq);
-+
-+struct class_device *rtc_open(char *name)
-+{
-+ struct class_device *class_dev = NULL,
-+ *class_dev_tmp;
-+
-+ down(&rtc_class->sem);
-+ list_for_each_entry(class_dev_tmp, &rtc_class->children, node) {
-+ if (strncmp(class_dev_tmp->class_id, name, BUS_ID_SIZE) == 0) {
-+ class_dev = class_dev_tmp;
-+ break;
-+ }
-+ }
-+ up(&rtc_class->sem);
-+
-+ return class_dev;
-+}
-+EXPORT_SYMBOL(rtc_open);
-+
-+void rtc_close(struct class_device *class_dev)
-+{
-+}
-+EXPORT_SYMBOL(rtc_close);
-+
-+int rtc_irq_register(struct class_device *class_dev, struct rtc_task *task)
-+{
-+ int retval = -EBUSY;
-+ struct rtc_device *rtc = to_rtc_device(class_dev);
-+
-+ if (task == NULL || task->func == NULL)
-+ return -EINVAL;
-+
-+ spin_lock(&rtc->irq_task_lock);
-+ if (rtc->irq_task == NULL) {
-+ rtc->irq_task = task;
-+ retval = 0;
-+ }
-+ spin_unlock(&rtc->irq_task_lock);
-+
-+ return retval;
-+}
-+EXPORT_SYMBOL(rtc_irq_register);
-+
-+void rtc_irq_unregister(struct class_device *class_dev, struct rtc_task *task)
-+{
-+ struct rtc_device *rtc = to_rtc_device(class_dev);
-+
-+ spin_lock(&rtc->irq_task_lock);
-+ if (rtc->irq_task == task)
-+ rtc->irq_task = NULL;
-+ spin_unlock(&rtc->irq_task_lock);
-+}
-+EXPORT_SYMBOL(rtc_irq_unregister);
-+
-+int rtc_irq_set_state(struct class_device *class_dev, struct rtc_task *task, int enabled)
-+{
-+ int err = 0;
-+ unsigned long flags;
-+ struct rtc_device *rtc = to_rtc_device(class_dev);
-+
-+ spin_lock_irqsave(&rtc->irq_task_lock, flags);
-+ if (rtc->irq_task != task)
-+ err = -ENXIO;
-+ spin_unlock_irqrestore(&rtc->irq_task_lock, flags);
-+
-+ if (err == 0)
-+ err = rtc->ops->irq_set_state(class_dev->dev, enabled);
-+
-+ return err;
-+}
-+EXPORT_SYMBOL(rtc_irq_set_state);
-+
-+int rtc_irq_set_freq(struct class_device *class_dev, struct rtc_task *task, int freq)
-+{
-+ int err = 0, tmp = 0;
-+ unsigned long flags;
-+ struct rtc_device *rtc = to_rtc_device(class_dev);
-+
-+ /* allowed range is 2-8192 */
-+ if (freq < 2 || freq > 8192)
-+ return -EINVAL;
-+
-+/* if ((freq > rtc_max_user_freq) && (!capable(CAP_SYS_RESOURCE)))
-+ return -EACCES;
-+*/
-+ /* check if freq is a power of 2 */
-+ while (freq > (1 << tmp))
-+ tmp++;
-+
-+ if (freq != (1 << tmp))
-+ return -EINVAL;
-+
-+ spin_lock_irqsave(&rtc->irq_task_lock, flags);
-+ if (rtc->irq_task != task)
-+ err = -ENXIO;
-+ spin_unlock_irqrestore(&rtc->irq_task_lock, flags);
-+
-+ if (err == 0) {
-+ if ((err = rtc->ops->irq_set_freq(class_dev->dev, freq)) == 0)
-+ rtc->irq_freq = freq;
-+ }
-+ return err;
-+
-+}
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/utils.c 2006-01-03 15:34:24.000000000 +0100
-@@ -0,0 +1,97 @@
-+/*
-+ * RTC subsystem, utility functions
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ *
-+ * based on arch/arm/common/rtctime.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; version 2 of the License.
-+*/
-+
-+#include <linux/rtc.h>
-+
-+static const unsigned char rtc_days_in_month[] = {
-+ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
-+};
-+
-+#define LEAPS_THRU_END_OF(y) ((y)/4 - (y)/100 + (y)/400)
-+#define LEAP_YEAR(year) ((!(year % 4) && (year % 100)) || !(year % 400))
-+
-+int rtc_month_days(unsigned int month, unsigned int year)
-+{
-+ return rtc_days_in_month[month] + (LEAP_YEAR(year) && month == 1);
-+}
-+EXPORT_SYMBOL(rtc_month_days);
-+
-+/*
-+ * Convert seconds since 01-01-1970 00:00:00 to Gregorian date.
-+ */
-+void rtc_time_to_tm(unsigned long time, struct rtc_time *tm)
-+{
-+ int days, month, year;
-+
-+ days = time / 86400;
-+ time -= days * 86400;
-+
-+ tm->tm_wday = (days + 4) % 7;
-+
-+ year = 1970 + days / 365;
-+ days -= (year - 1970) * 365
-+ + LEAPS_THRU_END_OF(year - 1)
-+ - LEAPS_THRU_END_OF(1970 - 1);
-+ if (days < 0) {
-+ year -= 1;
-+ days += 365 + LEAP_YEAR(year);
-+ }
-+ tm->tm_year = year - 1900;
-+ tm->tm_yday = days + 1;
-+
-+ for (month = 0; month < 11; month++) {
-+ int newdays;
-+
-+ newdays = days - rtc_month_days(month, year);
-+ if (newdays < 0)
-+ break;
-+ days = newdays;
-+ }
-+ tm->tm_mon = month;
-+ tm->tm_mday = days + 1;
-+
-+ tm->tm_hour = time / 3600;
-+ time -= tm->tm_hour * 3600;
-+ tm->tm_min = time / 60;
-+ tm->tm_sec = time - tm->tm_min * 60;
-+}
-+EXPORT_SYMBOL(rtc_time_to_tm);
-+
-+/*
-+ * Does the rtc_time represent a valid date/time?
-+ */
-+int rtc_valid_tm(struct rtc_time *tm)
-+{
-+ if (tm->tm_year < 70 ||
-+ tm->tm_mon >= 12 ||
-+ tm->tm_mday < 1 ||
-+ tm->tm_mday > rtc_month_days(tm->tm_mon, tm->tm_year + 1900) ||
-+ tm->tm_hour >= 24 ||
-+ tm->tm_min >= 60 ||
-+ tm->tm_sec >= 60)
-+ return -EINVAL;
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL(rtc_valid_tm);
-+
-+/*
-+ * Convert Gregorian date to seconds since 01-01-1970 00:00:00.
-+ */
-+int rtc_tm_to_time(struct rtc_time *tm, unsigned long *time)
-+{
-+ *time = mktime(tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
-+ tm->tm_hour, tm->tm_min, tm->tm_sec);
-+ return 0;
-+}
-+EXPORT_SYMBOL(rtc_tm_to_time);
---- linux-nslu2.orig/arch/arm/Kconfig 2006-01-04 01:27:04.000000000 +0100
-+++ linux-nslu2/arch/arm/Kconfig 2006-01-04 01:27:31.000000000 +0100
-@@ -750,6 +750,8 @@ source "drivers/usb/Kconfig"
-
- source "drivers/mmc/Kconfig"
-
-+source "drivers/rtc/Kconfig"
-+
- endmenu
-
- source "fs/Kconfig"
---- linux-nslu2.orig/arch/arm/common/rtctime.c 2006-01-04 01:27:04.000000000 +0100
-+++ linux-nslu2/arch/arm/common/rtctime.c 2006-01-04 01:27:09.000000000 +0100
-@@ -40,89 +40,6 @@ static struct rtc_ops *rtc_ops;
-
- #define rtc_epoch 1900UL
-
--static const unsigned char days_in_month[] = {
-- 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
--};
--
--#define LEAPS_THRU_END_OF(y) ((y)/4 - (y)/100 + (y)/400)
--#define LEAP_YEAR(year) ((!(year % 4) && (year % 100)) || !(year % 400))
--
--static int month_days(unsigned int month, unsigned int year)
--{
-- return days_in_month[month] + (LEAP_YEAR(year) && month == 1);
--}
--
--/*
-- * Convert seconds since 01-01-1970 00:00:00 to Gregorian date.
-- */
--void rtc_time_to_tm(unsigned long time, struct rtc_time *tm)
--{
-- int days, month, year;
--
-- days = time / 86400;
-- time -= days * 86400;
--
-- tm->tm_wday = (days + 4) % 7;
--
-- year = 1970 + days / 365;
-- days -= (year - 1970) * 365
-- + LEAPS_THRU_END_OF(year - 1)
-- - LEAPS_THRU_END_OF(1970 - 1);
-- if (days < 0) {
-- year -= 1;
-- days += 365 + LEAP_YEAR(year);
-- }
-- tm->tm_year = year - 1900;
-- tm->tm_yday = days + 1;
--
-- for (month = 0; month < 11; month++) {
-- int newdays;
--
-- newdays = days - month_days(month, year);
-- if (newdays < 0)
-- break;
-- days = newdays;
-- }
-- tm->tm_mon = month;
-- tm->tm_mday = days + 1;
--
-- tm->tm_hour = time / 3600;
-- time -= tm->tm_hour * 3600;
-- tm->tm_min = time / 60;
-- tm->tm_sec = time - tm->tm_min * 60;
--}
--EXPORT_SYMBOL(rtc_time_to_tm);
--
--/*
-- * Does the rtc_time represent a valid date/time?
-- */
--int rtc_valid_tm(struct rtc_time *tm)
--{
-- if (tm->tm_year < 70 ||
-- tm->tm_mon >= 12 ||
-- tm->tm_mday < 1 ||
-- tm->tm_mday > month_days(tm->tm_mon, tm->tm_year + 1900) ||
-- tm->tm_hour >= 24 ||
-- tm->tm_min >= 60 ||
-- tm->tm_sec >= 60)
-- return -EINVAL;
--
-- return 0;
--}
--EXPORT_SYMBOL(rtc_valid_tm);
--
--/*
-- * Convert Gregorian date to seconds since 01-01-1970 00:00:00.
-- */
--int rtc_tm_to_time(struct rtc_time *tm, unsigned long *time)
--{
-- *time = mktime(tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
-- tm->tm_hour, tm->tm_min, tm->tm_sec);
--
-- return 0;
--}
--EXPORT_SYMBOL(rtc_tm_to_time);
--
- /*
- * Calculate the next alarm time given the requested alarm time mask
- * and the current time.
-@@ -141,13 +58,13 @@ void rtc_next_alarm_time(struct rtc_time
- next->tm_sec = alrm->tm_sec;
- }
-
--static inline int rtc_read_time(struct rtc_ops *ops, struct rtc_time *tm)
-+static inline int rtc_arm_read_time(struct rtc_ops *ops, struct rtc_time *tm)
- {
- memset(tm, 0, sizeof(struct rtc_time));
- return ops->read_time(tm);
- }
-
--static inline int rtc_set_time(struct rtc_ops *ops, struct rtc_time *tm)
-+static inline int rtc_arm_set_time(struct rtc_ops *ops, struct rtc_time *tm)
- {
- int ret;
-
-@@ -158,7 +75,7 @@ static inline int rtc_set_time(struct rt
- return ret;
- }
-
--static inline int rtc_read_alarm(struct rtc_ops *ops, struct rtc_wkalrm *alrm)
-+static inline int rtc_arm_read_alarm(struct rtc_ops *ops, struct rtc_wkalrm *alrm)
- {
- int ret = -EINVAL;
- if (ops->read_alarm) {
-@@ -168,7 +85,7 @@ static inline int rtc_read_alarm(struct
- return ret;
- }
-
--static inline int rtc_set_alarm(struct rtc_ops *ops, struct rtc_wkalrm *alrm)
-+static inline int rtc_arm_set_alarm(struct rtc_ops *ops, struct rtc_wkalrm *alrm)
- {
- int ret = -EINVAL;
- if (ops->set_alarm)
-@@ -256,7 +173,7 @@ static int rtc_ioctl(struct inode *inode
-
- switch (cmd) {
- case RTC_ALM_READ:
-- ret = rtc_read_alarm(ops, &alrm);
-+ ret = rtc_arm_read_alarm(ops, &alrm);
- if (ret)
- break;
- ret = copy_to_user(uarg, &alrm.time, sizeof(tm));
-@@ -278,11 +195,11 @@ static int rtc_ioctl(struct inode *inode
- alrm.time.tm_wday = -1;
- alrm.time.tm_yday = -1;
- alrm.time.tm_isdst = -1;
-- ret = rtc_set_alarm(ops, &alrm);
-+ ret = rtc_arm_set_alarm(ops, &alrm);
- break;
-
- case RTC_RD_TIME:
-- ret = rtc_read_time(ops, &tm);
-+ ret = rtc_arm_read_time(ops, &tm);
- if (ret)
- break;
- ret = copy_to_user(uarg, &tm, sizeof(tm));
-@@ -300,7 +217,7 @@ static int rtc_ioctl(struct inode *inode
- ret = -EFAULT;
- break;
- }
-- ret = rtc_set_time(ops, &tm);
-+ ret = rtc_arm_set_time(ops, &tm);
- break;
-
- case RTC_EPOCH_SET:
-@@ -331,11 +248,11 @@ static int rtc_ioctl(struct inode *inode
- ret = -EFAULT;
- break;
- }
-- ret = rtc_set_alarm(ops, &alrm);
-+ ret = rtc_arm_set_alarm(ops, &alrm);
- break;
-
- case RTC_WKALM_RD:
-- ret = rtc_read_alarm(ops, &alrm);
-+ ret = rtc_arm_read_alarm(ops, &alrm);
- if (ret)
- break;
- ret = copy_to_user(uarg, &alrm, sizeof(alrm));
-@@ -425,7 +342,7 @@ static int rtc_read_proc(char *page, cha
- struct rtc_time tm;
- char *p = page;
-
-- if (rtc_read_time(ops, &tm) == 0) {
-+ if (rtc_arm_read_time(ops, &tm) == 0) {
- p += sprintf(p,
- "rtc_time\t: %02d:%02d:%02d\n"
- "rtc_date\t: %04d-%02d-%02d\n"
-@@ -435,7 +352,7 @@ static int rtc_read_proc(char *page, cha
- rtc_epoch);
- }
-
-- if (rtc_read_alarm(ops, &alrm) == 0) {
-+ if (rtc_arm_read_alarm(ops, &alrm) == 0) {
- p += sprintf(p, "alrm_time\t: ");
- if ((unsigned int)alrm.time.tm_hour <= 24)
- p += sprintf(p, "%02d:", alrm.time.tm_hour);
---- linux-nslu2.orig/include/asm-arm/rtc.h 2006-01-04 01:27:04.000000000 +0100
-+++ linux-nslu2/include/asm-arm/rtc.h 2006-01-04 01:27:09.000000000 +0100
-@@ -25,9 +25,6 @@ struct rtc_ops {
- int (*proc)(char *buf);
- };
-
--void rtc_time_to_tm(unsigned long, struct rtc_time *);
--int rtc_tm_to_time(struct rtc_time *, unsigned long *);
--int rtc_valid_tm(struct rtc_time *);
- void rtc_next_alarm_time(struct rtc_time *, struct rtc_time *, struct rtc_time *);
- void rtc_update(unsigned long, unsigned long);
- int register_rtc(struct rtc_ops *);
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/rtc-sysfs.c 2006-01-04 01:27:12.000000000 +0100
-@@ -0,0 +1,125 @@
-+/*
-+ * RTC subsystem, sysfs interface
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ *
-+ * 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; version 2 of the License.
-+*/
-+
-+#include <linux/module.h>
-+#include <linux/rtc.h>
-+
-+/* device attributes */
-+
-+static ssize_t rtc_sysfs_show_name(struct class_device *dev, char *buf)
-+{
-+ return sprintf(buf, "%s\n", to_rtc_device(dev)->name);
-+}
-+static CLASS_DEVICE_ATTR(name, S_IRUGO, rtc_sysfs_show_name, NULL);
-+
-+static ssize_t rtc_sysfs_show_date(struct class_device *dev, char *buf)
-+{
-+ ssize_t retval = 0;
-+ struct rtc_device *rtc = to_rtc_device(dev);
-+ struct rtc_time tm;
-+
-+ if (down_read_trylock(&rtc->lock) == 0)
-+ return -ENODEV;
-+
-+ if (rtc_read_time(dev, &tm) == 0) {
-+ retval = sprintf(buf, "%04d-%02d-%02d\n",
-+ tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday);
-+ }
-+
-+ up_read(&rtc->lock);
-+ return retval;
-+}
-+static CLASS_DEVICE_ATTR(date, S_IRUGO, rtc_sysfs_show_date, NULL);
-+
-+static ssize_t rtc_sysfs_show_time(struct class_device *dev, char *buf)
-+{
-+ ssize_t retval = 0;
-+ struct rtc_device *rtc = to_rtc_device(dev);
-+ struct rtc_time tm;
-+
-+ if (down_read_trylock(&rtc->lock) == 0)
-+ return -ENODEV;
-+
-+ if (rtc_read_time(dev, &tm) == 0) {
-+ retval = sprintf(buf, "%02d:%02d:%02d\n",
-+ tm.tm_hour, tm.tm_min, tm.tm_sec);
-+ }
-+
-+ up_read(&rtc->lock);
-+ return retval;
-+}
-+static CLASS_DEVICE_ATTR(time, S_IRUGO, rtc_sysfs_show_time, NULL);
-+
-+static ssize_t rtc_sysfs_show_since_epoch(struct class_device *dev, char *buf)
-+{
-+ ssize_t retval = 0;
-+ struct rtc_device *rtc = to_rtc_device(dev);
-+ struct rtc_time tm;
-+
-+ if (down_read_trylock(&rtc->lock) == 0)
-+ return -ENODEV;
-+
-+ if (rtc_read_time(dev, &tm) == 0) {
-+ unsigned long time;
-+ rtc_tm_to_time(&tm, &time);
-+ retval = sprintf(buf, "%lu\n", time);
-+ }
-+
-+ up_read(&rtc->lock);
-+ return retval;
-+}
-+static CLASS_DEVICE_ATTR(since_epoch, S_IRUGO, rtc_sysfs_show_since_epoch, NULL);
-+
-+/* insertion/removal hooks */
-+
-+static int __devinit rtc_sysfs_add_device(struct class_device *class_dev,
-+ struct class_interface *class_intf)
-+{
-+ class_device_create_file(class_dev, &class_device_attr_name);
-+ class_device_create_file(class_dev, &class_device_attr_date);
-+ class_device_create_file(class_dev, &class_device_attr_time);
-+ class_device_create_file(class_dev, &class_device_attr_since_epoch);
-+ dev_info(class_dev->dev, "rtc intf: sysfs\n");
-+ return 0;
-+}
-+
-+static void rtc_sysfs_remove_device(struct class_device *class_dev,
-+ struct class_interface *class_intf)
-+{
-+ class_device_remove_file(class_dev, &class_device_attr_name);
-+ class_device_remove_file(class_dev, &class_device_attr_date);
-+ class_device_remove_file(class_dev, &class_device_attr_time);
-+ class_device_remove_file(class_dev, &class_device_attr_since_epoch);
-+}
-+
-+/* interface registration */
-+
-+struct class_interface rtc_sysfs_interface = {
-+ .add = &rtc_sysfs_add_device,
-+ .remove = &rtc_sysfs_remove_device,
-+};
-+
-+static int __init rtc_sysfs_init(void)
-+{
-+ return rtc_interface_register(&rtc_sysfs_interface);
-+}
-+
-+static void __exit rtc_sysfs_exit(void)
-+{
-+ class_interface_unregister(&rtc_sysfs_interface);
-+}
-+
-+module_init(rtc_sysfs_init);
-+module_exit(rtc_sysfs_exit);
-+
-+MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
-+MODULE_DESCRIPTION("RTC class sysfs interface");
-+MODULE_LICENSE("GPL");
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/rtc-proc.c 2006-01-04 01:27:14.000000000 +0100
-@@ -0,0 +1,158 @@
-+/*
-+ * RTC subsystem, proc interface
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ *
-+ * based on arch/arm/common/rtctime.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; version 2 of the License.
-+*/
-+
-+#include <linux/module.h>
-+#include <linux/rtc.h>
-+#include <linux/proc_fs.h>
-+#include <linux/seq_file.h>
-+
-+static struct class_device *rtc_dev = NULL;
-+static DECLARE_MUTEX(rtc_sem);
-+
-+static int rtc_proc_show(struct seq_file *seq, void *offset)
-+{
-+ struct class_device *class_dev = seq->private;
-+ struct rtc_class_ops *ops = to_rtc_device(class_dev)->ops;
-+ struct rtc_wkalrm alrm;
-+ struct rtc_time tm;
-+
-+ if (rtc_read_time(class_dev, &tm) == 0) {
-+ seq_printf(seq,
-+ "rtc_time\t: %02d:%02d:%02d\n"
-+ "rtc_date\t: %04d-%02d-%02d\n",
-+ tm.tm_hour, tm.tm_min, tm.tm_sec,
-+ tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday);
-+ }
-+
-+ if (rtc_read_alarm(class_dev, &alrm) == 0) {
-+ seq_printf(seq, "alrm_time\t: ");
-+ if ((unsigned int)alrm.time.tm_hour <= 24)
-+ seq_printf(seq, "%02d:", alrm.time.tm_hour);
-+ else
-+ seq_printf(seq, "**:");
-+ if ((unsigned int)alrm.time.tm_min <= 59)
-+ seq_printf(seq, "%02d:", alrm.time.tm_min);
-+ else
-+ seq_printf(seq, "**:");
-+ if ((unsigned int)alrm.time.tm_sec <= 59)
-+ seq_printf(seq, "%02d\n", alrm.time.tm_sec);
-+ else
-+ seq_printf(seq, "**\n");
-+
-+ seq_printf(seq, "alrm_date\t: ");
-+ if ((unsigned int)alrm.time.tm_year <= 200)
-+ seq_printf(seq, "%04d-", alrm.time.tm_year + 1900);
-+ else
-+ seq_printf(seq, "****-");
-+ if ((unsigned int)alrm.time.tm_mon <= 11)
-+ seq_printf(seq, "%02d-", alrm.time.tm_mon + 1);
-+ else
-+ seq_printf(seq, "**-");
-+ if ((unsigned int)alrm.time.tm_mday <= 31)
-+ seq_printf(seq, "%02d\n", alrm.time.tm_mday);
-+ else
-+ seq_printf(seq, "**\n");
-+ seq_printf(seq, "alrm_wakeup\t: %s\n",
-+ alrm.enabled ? "yes" : "no");
-+ seq_printf(seq, "alrm_pending\t: %s\n",
-+ alrm.pending ? "yes" : "no");
-+ }
-+
-+ if (ops->proc)
-+ ops->proc(class_dev->dev, seq);
-+
-+ return 0;
-+}
-+
-+static int rtc_proc_open(struct inode *inode, struct file *file)
-+{
-+ struct class_device *class_dev = PDE(inode)->data;
-+
-+ if (!try_module_get(THIS_MODULE))
-+ return -ENODEV;
-+
-+ return single_open(file, rtc_proc_show, class_dev);
-+}
-+
-+static int rtc_proc_release(struct inode *inode, struct file *file)
-+{
-+ int res = single_release(inode, file);
-+ module_put(THIS_MODULE);
-+ return res;
-+}
-+
-+static struct file_operations rtc_proc_fops = {
-+ .open = rtc_proc_open,
-+ .read = seq_read,
-+ .llseek = seq_lseek,
-+ .release = rtc_proc_release,
-+};
-+
-+static int rtc_proc_add_device(struct class_device *class_dev,
-+ struct class_interface *class_intf)
-+{
-+ down(&rtc_sem);
-+ if (rtc_dev == NULL) {
-+ struct proc_dir_entry *ent;
-+
-+ rtc_dev = class_dev;
-+
-+ if ((ent = create_proc_entry("driver/rtc", 0, NULL))) {
-+ struct rtc_device *rtc = to_rtc_device(class_dev);
-+
-+ ent->proc_fops = &rtc_proc_fops;
-+ ent->owner = rtc->owner;
-+ ent->data = class_dev;
-+
-+ dev_info(class_dev->dev, "rtc intf: proc\n");
-+ }
-+ else
-+ rtc_dev = NULL;
-+ }
-+ up(&rtc_sem);
-+
-+ return 0;
-+}
-+
-+static void rtc_proc_remove_device(struct class_device *class_dev,
-+ struct class_interface *class_intf)
-+{
-+ down(&rtc_sem);
-+ if (rtc_dev == class_dev) {
-+ remove_proc_entry("driver/rtc", NULL);
-+ rtc_dev = NULL;
-+ }
-+ up(&rtc_sem);
-+}
-+
-+struct class_interface rtc_proc_interface = {
-+ .add = &rtc_proc_add_device,
-+ .remove = &rtc_proc_remove_device,
-+};
-+
-+static int __init rtc_proc_init(void)
-+{
-+ return rtc_interface_register(&rtc_proc_interface);
-+}
-+
-+static void __exit rtc_proc_exit(void)
-+{
-+ class_interface_unregister(&rtc_proc_interface);
-+}
-+
-+module_init(rtc_proc_init);
-+module_exit(rtc_proc_exit);
-+
-+MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
-+MODULE_DESCRIPTION("RTC class proc interface");
-+MODULE_LICENSE("GPL");
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/rtc-dev.c 2006-01-04 01:27:15.000000000 +0100
-@@ -0,0 +1,372 @@
-+/*
-+ * RTC subsystem, dev interface
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ *
-+ * based on arch/arm/common/rtctime.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; version 2 of the License.
-+*/
-+
-+#include <linux/module.h>
-+#include <linux/rtc.h>
-+
-+static dev_t rtc_devt;
-+
-+#define RTC_DEV_MAX 16 /* 16 RTCs should be enough for everyone... */
-+
-+static int rtc_dev_open(struct inode *inode, struct file *file)
-+{
-+ int err;
-+ struct rtc_device *rtc = container_of(inode->i_cdev,
-+ struct rtc_device, char_dev);
-+ struct rtc_class_ops *ops = rtc->ops;
-+
-+ /* We keep the lock as long as the device is in use
-+ * and return immediately if busy
-+ */
-+ if (down_trylock(&rtc->char_sem))
-+ return -EBUSY;
-+
-+ file->private_data = &rtc->class_dev;
-+
-+ err = ops->open ? ops->open(rtc->class_dev.dev) : 0;
-+ if (err == 0) {
-+
-+ spin_lock_irq(&rtc->irq_lock);
-+ rtc->irq_data = 0;
-+ spin_unlock_irq(&rtc->irq_lock);
-+
-+ return 0;
-+ }
-+
-+ /* something has gone wrong, release the lock */
-+ up(&rtc->char_sem);
-+ return err;
-+}
-+
-+
-+static ssize_t
-+rtc_dev_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
-+{
-+ struct rtc_device *rtc = to_rtc_device(file->private_data);
-+
-+ DECLARE_WAITQUEUE(wait, current);
-+ unsigned long data;
-+ ssize_t ret;
-+
-+ if (count < sizeof(unsigned long))
-+ return -EINVAL;
-+
-+ add_wait_queue(&rtc->irq_queue, &wait);
-+ do {
-+ __set_current_state(TASK_INTERRUPTIBLE);
-+
-+ spin_lock_irq(&rtc->irq_lock);
-+ data = rtc->irq_data;
-+ rtc->irq_data = 0;
-+ spin_unlock_irq(&rtc->irq_lock);
-+
-+ if (data != 0) {
-+ ret = 0;
-+ break;
-+ }
-+ if (file->f_flags & O_NONBLOCK) {
-+ ret = -EAGAIN;
-+ break;
-+ }
-+ if (signal_pending(current)) {
-+ ret = -ERESTARTSYS;
-+ break;
-+ }
-+ schedule();
-+ } while (1);
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&rtc->irq_queue, &wait);
-+
-+ if (ret == 0) {
-+ ret = put_user(data, (unsigned long __user *)buf);
-+ if (ret == 0)
-+ ret = sizeof(unsigned long);
-+ }
-+ return ret;
-+}
-+
-+static unsigned int rtc_dev_poll(struct file *file, poll_table *wait)
-+{
-+ struct rtc_device *rtc = to_rtc_device(file->private_data);
-+ unsigned long data;
-+
-+ poll_wait(file, &rtc->irq_queue, wait);
-+
-+ spin_lock_irq(&rtc->irq_lock);
-+ data = rtc->irq_data;
-+ spin_unlock_irq(&rtc->irq_lock);
-+
-+ return data != 0 ? POLLIN | POLLRDNORM : 0;
-+}
-+
-+static int rtc_dev_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
-+ unsigned long arg)
-+{
-+ int err = 0;
-+ struct class_device *class_dev = file->private_data;
-+ struct rtc_device *rtc = to_rtc_device(class_dev);
-+ struct rtc_class_ops *ops = rtc->ops;
-+ struct rtc_time tm;
-+ struct rtc_wkalrm alarm;
-+ void __user *uarg = (void __user *) arg;
-+
-+ /* avoid conflicting IRQ users */
-+ if (cmd == RTC_PIE_ON || cmd == RTC_PIE_OFF || cmd == RTC_IRQP_SET) {
-+ spin_lock(&rtc->irq_task_lock);
-+ if (rtc->irq_task)
-+ err = -EBUSY;
-+ spin_unlock(&rtc->irq_task_lock);
-+
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ /* try the driver's ioctl interface */
-+ if (ops->ioctl) {
-+ err = ops->ioctl(class_dev->dev, cmd, arg);
-+ if (err < 0 && err != -EINVAL)
-+ return err;
-+ }
-+
-+ /* if the driver does not provide the ioctl interface
-+ * or if that particular ioctl was not implemented
-+ * (-EINVAL), we will try to emulate here.
-+ */
-+
-+ switch (cmd) {
-+ case RTC_ALM_READ:
-+ if ((err = rtc_read_alarm(class_dev, &alarm)) < 0)
-+ return err;
-+
-+ if ((err = copy_to_user(uarg, &alarm.time, sizeof(tm))))
-+ return -EFAULT;
-+ break;
-+
-+ case RTC_ALM_SET:
-+ if ((err = copy_from_user(&alarm.time, uarg, sizeof(tm))))
-+ return -EFAULT;
-+
-+ alarm.enabled = 0;
-+ alarm.pending = 0;
-+ alarm.time.tm_mday = -1;
-+ alarm.time.tm_mon = -1;
-+ alarm.time.tm_year = -1;
-+ alarm.time.tm_wday = -1;
-+ alarm.time.tm_yday = -1;
-+ alarm.time.tm_isdst = -1;
-+ err = rtc_set_alarm(class_dev, &alarm);
-+ break;
-+
-+ case RTC_RD_TIME:
-+ if ((err = rtc_read_time(class_dev, &tm)) < 0)
-+ return err;
-+
-+ if ((err = copy_to_user(uarg, &tm, sizeof(tm))))
-+ return -EFAULT;
-+ break;
-+
-+ case RTC_SET_TIME:
-+ if (!capable(CAP_SYS_TIME))
-+ return -EACCES;
-+
-+ if ((err = copy_from_user(&tm, uarg, sizeof(tm))))
-+ return -EFAULT;
-+
-+ err = rtc_set_time(class_dev, &tm);
-+ break;
-+#if 0
-+ case RTC_EPOCH_SET:
-+#ifndef rtc_epoch
-+ /*
-+ * There were no RTC clocks before 1900.
-+ */
-+ if (arg < 1900) {
-+ err = -EINVAL;
-+ break;
-+ }
-+ if (!capable(CAP_SYS_TIME)) {
-+ err = -EACCES;
-+ break;
-+ }
-+ rtc_epoch = arg;
-+ err = 0;
-+#endif
-+ break;
-+
-+ case RTC_EPOCH_READ:
-+ err = put_user(rtc_epoch, (unsigned long __user *)uarg);
-+ break;
-+#endif
-+ case RTC_WKALM_SET:
-+ if ((err = copy_from_user(&alarm, uarg, sizeof(alarm))))
-+ return -EFAULT;
-+
-+ err = rtc_set_alarm(class_dev, &alarm);
-+ break;
-+
-+ case RTC_WKALM_RD:
-+ if ((err = rtc_read_alarm(class_dev, &alarm)) < 0)
-+ return err;
-+
-+ if ((err = copy_to_user(uarg, &alarm, sizeof(alarm))))
-+ return -EFAULT;
-+ break;
-+
-+ default:
-+ err = -EINVAL;
-+ break;
-+ }
-+
-+ return err;
-+}
-+
-+static int rtc_dev_release(struct inode *inode, struct file *file)
-+{
-+ struct rtc_device *rtc = to_rtc_device(file->private_data);
-+
-+ if (rtc->ops->release)
-+ rtc->ops->release(rtc->class_dev.dev);
-+
-+ spin_lock_irq(&rtc->irq_lock);
-+ rtc->irq_data = 0;
-+ spin_unlock_irq(&rtc->irq_lock);
-+
-+ up(&rtc->char_sem);
-+ return 0;
-+}
-+
-+static int rtc_dev_fasync(int fd, struct file *file, int on)
-+{
-+ struct rtc_device *rtc = to_rtc_device(file->private_data);
-+ return fasync_helper(fd, file, on, &rtc->async_queue);
-+}
-+
-+static struct file_operations rtc_dev_fops = {
-+ .owner = THIS_MODULE,
-+ .llseek = no_llseek,
-+ .read = rtc_dev_read,
-+ .poll = rtc_dev_poll,
-+ .ioctl = rtc_dev_ioctl,
-+ .open = rtc_dev_open,
-+ .release = rtc_dev_release,
-+ .fasync = rtc_dev_fasync,
-+};
-+
-+static ssize_t rtc_dev_show_dev(struct class_device *class_dev, char *buf)
-+{
-+ return print_dev_t(buf, class_dev->devt);
-+}
-+static CLASS_DEVICE_ATTR(dev, S_IRUGO, rtc_dev_show_dev, NULL);
-+
-+/* insertion/removal hooks */
-+
-+static int rtc_dev_add_device(struct class_device *class_dev,
-+ struct class_interface *class_intf)
-+{
-+ struct rtc_device *rtc = to_rtc_device(class_dev);
-+
-+ if (rtc->id >= RTC_DEV_MAX) {
-+ dev_err(class_dev->dev, "too many RTCs\n");
-+ return -EINVAL;
-+ }
-+
-+ init_MUTEX(&rtc->char_sem);
-+ spin_lock_init(&rtc->irq_lock);
-+ init_waitqueue_head(&rtc->irq_queue);
-+
-+ cdev_init(&rtc->char_dev, &rtc_dev_fops);
-+ rtc->char_dev.owner = rtc->owner;
-+ class_dev->devt = MKDEV(MAJOR(rtc_devt), rtc->id);
-+
-+ if (cdev_add(&rtc->char_dev, class_dev->devt, 1)) {
-+ cdev_del(&rtc->char_dev);
-+
-+ dev_err(class_dev->dev,
-+ "failed to add char device %d:%d\n",
-+ MAJOR(class_dev->devt),
-+ MINOR(class_dev->devt));
-+
-+ class_dev->devt = MKDEV(0, 0);
-+ return -ENODEV;
-+ }
-+
-+ class_device_create_file(class_dev, &class_device_attr_dev);
-+
-+ dev_info(class_dev->dev, "rtc intf: dev (%d:%d)\n",
-+ MAJOR(class_dev->devt),
-+ MINOR(class_dev->devt));
-+
-+ kobject_hotplug(&class_dev->kobj, KOBJ_ADD);
-+
-+ return 0;
-+}
-+
-+static void rtc_dev_remove_device(struct class_device *class_dev,
-+ struct class_interface *class_intf)
-+{
-+ struct rtc_device *rtc = to_rtc_device(class_dev);
-+
-+ class_device_remove_file(class_dev, &class_device_attr_dev);
-+
-+ if (MAJOR(class_dev->devt)) {
-+ dev_dbg(class_dev->dev, "removing char %d:%d\n",
-+ MAJOR(class_dev->devt),
-+ MINOR(class_dev->devt));
-+ cdev_del(&rtc->char_dev);
-+
-+ kobject_hotplug(&class_dev->kobj, KOBJ_REMOVE);
-+
-+ class_dev->devt = MKDEV(0, 0);
-+ }
-+}
-+
-+/* interface registration */
-+
-+struct class_interface rtc_dev_interface = {
-+ .add = &rtc_dev_add_device,
-+ .remove = &rtc_dev_remove_device,
-+};
-+
-+static int __init rtc_dev_init(void)
-+{
-+ int err;
-+
-+ if ((err = alloc_chrdev_region(&rtc_devt, 0, RTC_DEV_MAX, "rtc")) < 0) {
-+ printk(KERN_ERR "%s: failed to allocate char dev region\n",
-+ __FILE__);
-+ return err;
-+ }
-+
-+ if ((err = rtc_interface_register(&rtc_dev_interface)) < 0) {
-+ printk(KERN_ERR "%s: failed to register the interface\n",
-+ __FILE__);
-+ unregister_chrdev_region(rtc_devt, RTC_DEV_MAX);
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+static void __exit rtc_dev_exit(void)
-+{
-+ class_interface_unregister(&rtc_dev_interface);
-+
-+ unregister_chrdev_region(rtc_devt, RTC_DEV_MAX);
-+}
-+
-+module_init(rtc_dev_init);
-+module_exit(rtc_dev_exit);
-+
-+MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
-+MODULE_DESCRIPTION("RTC class dev interface");
-+MODULE_LICENSE("GPL");
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/rtc-x1205.c 2006-01-04 01:27:17.000000000 +0100
-@@ -0,0 +1,725 @@
-+/*
-+ * An i2c driver for the Xicor/Intersil X1205 RTC
-+ * Copyright 2004 Karen Spearel
-+ * Copyright 2005 Alessandro Zummo
-+ *
-+ * please send all reports to:
-+ * kas11 at tampabay dot rr dot com
-+ * a dot zummo at towertech dot it
-+ *
-+ * based on a lot of other RTC drivers.
-+ *
-+ * 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 <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/err.h>
-+#include <linux/i2c.h>
-+#include <linux/string.h>
-+#include <linux/bcd.h>
-+#include <linux/rtc.h>
-+#include <linux/delay.h>
-+
-+#define DRV_VERSION "1.0.5"
-+
-+/* Addresses to scan: none. This chip is located at
-+ * 0x6f and uses a two bytes register addressing.
-+ * Two bytes need to be written to read a single register,
-+ * while most other chips just require one and take the second
-+ * one as the data to be written. To prevent corrupting
-+ * unknown chips, the user must explicitely set the probe parameter.
-+ */
-+
-+static unsigned short normal_i2c[] = { I2C_CLIENT_END };
-+
-+/* Insmod parameters */
-+I2C_CLIENT_INSMOD;
-+I2C_CLIENT_MODULE_PARM(hctosys,
-+ "Set the system time from the hardware clock upon initialization");
-+
-+/* offsets into CCR area */
-+
-+#define CCR_SEC 0
-+#define CCR_MIN 1
-+#define CCR_HOUR 2
-+#define CCR_MDAY 3
-+#define CCR_MONTH 4
-+#define CCR_YEAR 5
-+#define CCR_WDAY 6
-+#define CCR_Y2K 7
-+
-+#define X1205_REG_SR 0x3F /* status register */
-+#define X1205_REG_Y2K 0x37
-+#define X1205_REG_DW 0x36
-+#define X1205_REG_YR 0x35
-+#define X1205_REG_MO 0x34
-+#define X1205_REG_DT 0x33
-+#define X1205_REG_HR 0x32
-+#define X1205_REG_MN 0x31
-+#define X1205_REG_SC 0x30
-+#define X1205_REG_DTR 0x13
-+#define X1205_REG_ATR 0x12
-+#define X1205_REG_INT 0x11
-+#define X1205_REG_0 0x10
-+#define X1205_REG_Y2K1 0x0F
-+#define X1205_REG_DWA1 0x0E
-+#define X1205_REG_YRA1 0x0D
-+#define X1205_REG_MOA1 0x0C
-+#define X1205_REG_DTA1 0x0B
-+#define X1205_REG_HRA1 0x0A
-+#define X1205_REG_MNA1 0x09
-+#define X1205_REG_SCA1 0x08
-+#define X1205_REG_Y2K0 0x07
-+#define X1205_REG_DWA0 0x06
-+#define X1205_REG_YRA0 0x05
-+#define X1205_REG_MOA0 0x04
-+#define X1205_REG_DTA0 0x03
-+#define X1205_REG_HRA0 0x02
-+#define X1205_REG_MNA0 0x01
-+#define X1205_REG_SCA0 0x00
-+
-+#define X1205_CCR_BASE 0x30 /* Base address of CCR */
-+#define X1205_ALM0_BASE 0x00 /* Base address of ALARM0 */
-+
-+#define X1205_SR_RTCF 0x01 /* Clock failure */
-+#define X1205_SR_WEL 0x02 /* Write Enable Latch */
-+#define X1205_SR_RWEL 0x04 /* Register Write Enable */
-+
-+#define X1205_DTR_DTR0 0x01
-+#define X1205_DTR_DTR1 0x02
-+#define X1205_DTR_DTR2 0x04
-+
-+#define X1205_HR_MIL 0x80 /* Set in ccr.hour for 24 hr mode */
-+
-+/* Prototypes */
-+static int x1205_attach(struct i2c_adapter *adapter);
-+static int x1205_detach(struct i2c_client *client);
-+static int x1205_probe(struct i2c_adapter *adapter, int address, int kind);
-+
-+static struct i2c_driver x1205_driver = {
-+ .owner = THIS_MODULE,
-+ .name = "x1205",
-+ .flags = I2C_DF_NOTIFY,
-+ .attach_adapter = &x1205_attach,
-+ .detach_client = &x1205_detach,
-+};
-+
-+/*
-+ * In the routines that deal directly with the x1205 hardware, we use
-+ * rtc_time -- month 0-11, hour 0-23, yr = calendar year-epoch
-+ * Epoch is initialized as 2000. Time is set to UTC.
-+ */
-+static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm,
-+ unsigned char reg_base)
-+{
-+ unsigned char dt_addr[2] = { 0, reg_base };
-+
-+ unsigned char buf[8];
-+
-+ struct i2c_msg msgs[] = {
-+ { client->addr, 0, 2, dt_addr }, /* setup read ptr */
-+ { client->addr, I2C_M_RD, 8, buf }, /* read date */
-+ };
-+
-+ /* read date registers */
-+ if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) {
-+ dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
-+ return -EIO;
-+ }
-+
-+ dev_dbg(&client->dev,
-+ "%s: raw read data - sec=%02x, min=%02x, hr=%02x, "
-+ "mday=%02x, mon=%02x, year=%02x, wday=%02x, y2k=%02x\n",
-+ __FUNCTION__,
-+ buf[0], buf[1], buf[2], buf[3],
-+ buf[4], buf[5], buf[6], buf[7]);
-+
-+ tm->tm_sec = BCD2BIN(buf[CCR_SEC]);
-+ tm->tm_min = BCD2BIN(buf[CCR_MIN]);
-+ tm->tm_hour = BCD2BIN(buf[CCR_HOUR] & 0x3F); /* hr is 0-23 */
-+ tm->tm_mday = BCD2BIN(buf[CCR_MDAY]);
-+ tm->tm_mon = BCD2BIN(buf[CCR_MONTH]) - 1; /* mon is 0-11 */
-+ tm->tm_year = BCD2BIN(buf[CCR_YEAR])
-+ + (BCD2BIN(buf[CCR_Y2K]) * 100) - 1900;
-+ tm->tm_wday = buf[CCR_WDAY];
-+
-+ dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, "
-+ "mday=%d, mon=%d, year=%d, wday=%d\n",
-+ __FUNCTION__,
-+ tm->tm_sec, tm->tm_min, tm->tm_hour,
-+ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
-+
-+ return 0;
-+}
-+
-+static int x1205_get_status(struct i2c_client *client, unsigned char *sr)
-+{
-+ static unsigned char sr_addr[2] = { 0, X1205_REG_SR };
-+
-+ struct i2c_msg msgs[] = {
-+ { client->addr, 0, 2, sr_addr }, /* setup read ptr */
-+ { client->addr, I2C_M_RD, 1, sr }, /* read status */
-+ };
-+
-+ /* read status register */
-+ if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) {
-+ dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+
-+static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm,
-+ int datetoo, u8 reg_base)
-+{
-+ int i, xfer;
-+ unsigned char buf[8];
-+
-+ static const unsigned char wel[3] = { 0, X1205_REG_SR,
-+ X1205_SR_WEL };
-+
-+ static const unsigned char rwel[3] = { 0, X1205_REG_SR,
-+ X1205_SR_WEL | X1205_SR_RWEL };
-+
-+ static const unsigned char diswe[3] = { 0, X1205_REG_SR, 0 };
-+
-+ dev_dbg(&client->dev,
-+ "%s: secs=%d, mins=%d, hours=%d\n",
-+ __FUNCTION__,
-+ tm->tm_sec, tm->tm_min, tm->tm_hour);
-+
-+ buf[CCR_SEC] = BIN2BCD(tm->tm_sec);
-+ buf[CCR_MIN] = BIN2BCD(tm->tm_min);
-+
-+ /* set hour and 24hr bit */
-+ buf[CCR_HOUR] = BIN2BCD(tm->tm_hour) | X1205_HR_MIL;
-+
-+ /* should we also set the date? */
-+ if (datetoo) {
-+ dev_dbg(&client->dev,
-+ "%s: mday=%d, mon=%d, year=%d, wday=%d\n",
-+ __FUNCTION__,
-+ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
-+
-+ buf[CCR_MDAY] = BIN2BCD(tm->tm_mday);
-+
-+ /* month, 1 - 12 */
-+ buf[CCR_MONTH] = BIN2BCD(tm->tm_mon + 1);
-+
-+ /* year, since the rtc epoch*/
-+ buf[CCR_YEAR] = BIN2BCD(tm->tm_year % 100);
-+ buf[CCR_WDAY] = tm->tm_wday & 0x07;
-+ buf[CCR_Y2K] = BIN2BCD(tm->tm_year / 100);
-+ }
-+
-+ /* this sequence is required to unlock the chip */
-+ xfer = i2c_master_send(client, wel, 3);
-+ if (xfer != 3) {
-+ dev_err(&client->dev, "%s: wel - %d\n", __FUNCTION__, xfer);
-+ return -EIO;
-+ }
-+
-+ xfer = i2c_master_send(client, rwel, 3);
-+ if (xfer != 3) {
-+ dev_err(&client->dev, "%s: rwel - %d\n", __FUNCTION__, xfer);
-+ return -EIO;
-+ }
-+
-+ /* write register's data */
-+ for (i = 0; i < (datetoo ? 8 : 3); i++) {
-+ unsigned char rdata[3] = { 0, reg_base + i, buf[i] };
-+
-+ xfer = i2c_master_send(client, rdata, 3);
-+ if (xfer != 3) {
-+ dev_err(&client->dev,
-+ "%s: xfer=%d addr=%02x, data=%02x\n",
-+ __FUNCTION__,
-+ xfer, rdata[1], rdata[2]);
-+ return -EIO;
-+ }
-+ };
-+
-+ /* disable further writes */
-+ xfer = i2c_master_send(client, diswe, 3);
-+ if (xfer != 3) {
-+ dev_err(&client->dev, "%s: diswe - %d\n", __FUNCTION__, xfer);
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+
-+static int x1205_fix_osc(struct i2c_client *client)
-+{
-+ int err;
-+ struct rtc_time tm;
-+
-+ tm.tm_hour = 0;
-+ tm.tm_min = 0;
-+ tm.tm_sec = 0;
-+
-+ if ((err = x1205_set_datetime(client, &tm, 0, X1205_CCR_BASE)) < 0)
-+ dev_err(&client->dev,
-+ "unable to restart the clock\n");
-+
-+ return err;
-+}
-+
-+static int x1205_get_dtrim(struct i2c_client *client, int *trim)
-+{
-+ unsigned char dtr;
-+ static unsigned char dtr_addr[2] = { 0, X1205_REG_DTR };
-+
-+ struct i2c_msg msgs[] = {
-+ { client->addr, 0, 2, dtr_addr }, /* setup read ptr */
-+ { client->addr, I2C_M_RD, 1, &dtr }, /* read dtr */
-+ };
-+
-+ /* read dtr register */
-+ if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) {
-+ dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
-+ return -EIO;
-+ }
-+
-+ dev_dbg(&client->dev, "%s: raw dtr=%x\n", __FUNCTION__, dtr);
-+
-+ *trim = 0;
-+
-+ if (dtr & X1205_DTR_DTR0)
-+ *trim += 20;
-+
-+ if (dtr & X1205_DTR_DTR1)
-+ *trim += 10;
-+
-+ if (dtr & X1205_DTR_DTR2)
-+ *trim = -*trim;
-+
-+ return 0;
-+}
-+
-+static int x1205_get_atrim(struct i2c_client *client, int *trim)
-+{
-+ s8 atr;
-+ static unsigned char atr_addr[2] = { 0, X1205_REG_ATR };
-+
-+ struct i2c_msg msgs[] = {
-+ { client->addr, 0, 2, atr_addr }, /* setup read ptr */
-+ { client->addr, I2C_M_RD, 1, &atr }, /* read atr */
-+ };
-+
-+ /* read atr register */
-+ if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) {
-+ dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
-+ return -EIO;
-+ }
-+
-+ dev_dbg(&client->dev, "%s: raw atr=%x\n", __FUNCTION__, atr);
-+
-+ /* atr is a two's complement value on 6 bits,
-+ * perform sign extension. The formula is
-+ * Catr = (atr * 0.25pF) + 11.00pF.
-+ */
-+ if (atr & 0x20)
-+ atr |= 0xC0;
-+
-+ dev_dbg(&client->dev, "%s: raw atr=%x (%d)\n", __FUNCTION__, atr, atr);
-+
-+ *trim = (atr * 250) + 11000;
-+
-+ dev_dbg(&client->dev, "%s: real=%d\n", __FUNCTION__, *trim);
-+
-+ return 0;
-+}
-+
-+static int x1205_hctosys(struct i2c_client *client)
-+{
-+ int err;
-+
-+ struct rtc_time tm;
-+ struct timespec tv;
-+ unsigned char sr;
-+
-+ if ((err = x1205_get_status(client, &sr)) < 0)
-+ return err;
-+
-+ /* Don't set if we had a power failure */
-+ if (sr & X1205_SR_RTCF)
-+ return -EINVAL;
-+
-+ if ((err = x1205_get_datetime(client, &tm, X1205_CCR_BASE)) < 0)
-+ return err;
-+
-+ /* IMPORTANT: the RTC only stores whole seconds. It is arbitrary
-+ * whether it stores the most close value or the value with partial
-+ * seconds truncated. However, it is important that we use it to store
-+ * the truncated value. This is because otherwise it is necessary,
-+ * in an rtc sync function, to read both xtime.tv_sec and
-+ * xtime.tv_nsec. On some processors (i.e. ARM), an atomic read
-+ * of >32bits is not possible. So storing the most close value would
-+ * slow down the sync API. So here we have the truncated value and
-+ * the best guess is to add 0.5s.
-+ */
-+
-+ tv.tv_nsec = NSEC_PER_SEC >> 1;
-+
-+ rtc_tm_to_time(&tm, &tv.tv_sec);
-+
-+ do_settimeofday(&tv);
-+
-+ dev_info(&client->dev,
-+ "setting the system clock to %d-%d-%d %d:%d:%d\n",
-+ tm.tm_year + 1900, tm.tm_mon + 1,
-+ tm.tm_mday, tm.tm_hour, tm.tm_min,
-+ tm.tm_sec);
-+
-+ return 0;
-+}
-+
-+struct x1205_limit
-+{
-+ unsigned char reg;
-+ unsigned char mask;
-+ unsigned char min;
-+ unsigned char max;
-+};
-+
-+static int x1205_validate_client(struct i2c_client *client)
-+{
-+ int i, xfer;
-+
-+ /* Probe array. We will read the register at the specified
-+ * address and check if the given bits are zero.
-+ */
-+ static const unsigned char probe_zero_pattern[] = {
-+ /* register, mask */
-+ X1205_REG_SR, 0x18,
-+ X1205_REG_DTR, 0xF8,
-+ X1205_REG_ATR, 0xC0,
-+ X1205_REG_INT, 0x18,
-+ X1205_REG_0, 0xFF,
-+ };
-+
-+ static const struct x1205_limit probe_limits_pattern[] = {
-+ /* register, mask, min, max */
-+ { X1205_REG_Y2K, 0xFF, 19, 20 },
-+ { X1205_REG_DW, 0xFF, 0, 6 },
-+ { X1205_REG_YR, 0xFF, 0, 99 },
-+ { X1205_REG_MO, 0xFF, 0, 12 },
-+ { X1205_REG_DT, 0xFF, 0, 31 },
-+ { X1205_REG_HR, 0x7F, 0, 23 },
-+ { X1205_REG_MN, 0xFF, 0, 59 },
-+ { X1205_REG_SC, 0xFF, 0, 59 },
-+ { X1205_REG_Y2K1, 0xFF, 19, 20 },
-+ { X1205_REG_Y2K0, 0xFF, 19, 20 },
-+ };
-+
-+ /* check that registers have bits a 0 where expected */
-+ for (i = 0; i < ARRAY_SIZE(probe_zero_pattern); i += 2) {
-+ unsigned char buf;
-+
-+ unsigned char addr[2] = { 0, probe_zero_pattern[i] };
-+
-+ struct i2c_msg msgs[2] = {
-+ { client->addr, 0, 2, addr },
-+ { client->addr, I2C_M_RD, 1, &buf },
-+ };
-+
-+ xfer = i2c_transfer(client->adapter, msgs, 2);
-+ if (xfer != 2) {
-+ dev_err(&client->adapter->dev,
-+ "%s: could not read register %x\n",
-+ __FUNCTION__, addr[1]);
-+
-+ return -EIO;
-+ }
-+
-+ if ((buf & probe_zero_pattern[i+1]) != 0) {
-+ dev_err(&client->adapter->dev,
-+ "%s: register=%02x, zero pattern=%d, value=%x\n",
-+ __FUNCTION__, addr[1], i, buf);
-+
-+ return -ENODEV;
-+ }
-+ }
-+
-+ /* check limits (only registers with bcd values) */
-+ for (i = 0; i < ARRAY_SIZE(probe_limits_pattern); i++) {
-+ unsigned char reg, value;
-+
-+ unsigned char addr[2] = { 0, probe_limits_pattern[i].reg };
-+
-+ struct i2c_msg msgs[2] = {
-+ { client->addr, 0, 2, addr },
-+ { client->addr, I2C_M_RD, 1, &reg },
-+ };
-+
-+ xfer = i2c_transfer(client->adapter, msgs, 2);
-+
-+ if (xfer != 2) {
-+ dev_err(&client->adapter->dev,
-+ "%s: could not read register %x\n",
-+ __FUNCTION__, addr[1]);
-+
-+ return -EIO;
-+ }
-+
-+ value = BCD2BIN(reg & probe_limits_pattern[i].mask);
-+
-+ if (value > probe_limits_pattern[i].max ||
-+ value < probe_limits_pattern[i].min) {
-+ dev_dbg(&client->adapter->dev,
-+ "%s: register=%x, lim pattern=%d, value=%d\n",
-+ __FUNCTION__, addr[1], i, value);
-+
-+ return -ENODEV;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+static int x1205_rtc_read_alarm(struct device *dev,
-+ struct rtc_wkalrm *alrm)
-+{
-+ return x1205_get_datetime(to_i2c_client(dev),
-+ &alrm->time, X1205_ALM0_BASE);
-+}
-+
-+static int x1205_rtc_set_alarm(struct device *dev,
-+ struct rtc_wkalrm *alrm)
-+{
-+ return x1205_set_datetime(to_i2c_client(dev),
-+ &alrm->time, 1, X1205_ALM0_BASE);
-+}
-+
-+static int x1205_rtc_read_time(struct device *dev,
-+ struct rtc_time *tm)
-+{
-+ return x1205_get_datetime(to_i2c_client(dev),
-+ tm, X1205_CCR_BASE);
-+}
-+
-+static int x1205_rtc_set_time(struct device *dev,
-+ struct rtc_time *tm)
-+{
-+ return x1205_set_datetime(to_i2c_client(dev),
-+ tm, 1, X1205_CCR_BASE);
-+}
-+
-+static int x1205_rtc_set_mmss(struct device *dev, unsigned long secs)
-+{
-+ int err;
-+
-+ struct rtc_time new_tm, old_tm;
-+
-+ if ((err = x1205_rtc_read_time(dev, &old_tm) == 0))
-+ return err;
-+
-+ /* FIXME xtime.tv_nsec = old_tm.tm_sec * 10000000; */
-+ new_tm.tm_sec = secs % 60;
-+ secs /= 60;
-+ new_tm.tm_min = secs % 60;
-+ secs /= 60;
-+ new_tm.tm_hour = secs % 24;
-+
-+ /*
-+ * avoid writing when we're going to change the day
-+ * of the month. We will retry in the next minute.
-+ * This basically means that if the RTC must not drift
-+ * by more than 1 minute in 11 minutes.
-+ */
-+ if ((old_tm.tm_hour == 23 && old_tm.tm_min == 59) ||
-+ (new_tm.tm_hour == 23 && new_tm.tm_min == 59))
-+ return 1;
-+
-+ return x1205_rtc_set_time(dev, &new_tm);
-+}
-+
-+static int x1205_rtc_proc(struct device *dev, struct seq_file *seq)
-+{
-+ int err, dtrim, atrim;
-+
-+ seq_printf(seq, "24hr\t\t: yes\n");
-+
-+ err = x1205_get_dtrim(to_i2c_client(dev), &dtrim);
-+ if (err == 0)
-+ seq_printf(seq, "digital_trim\t: %d ppm\n", dtrim);
-+
-+ err = x1205_get_atrim(to_i2c_client(dev), &atrim);
-+ if (err == 0)
-+ seq_printf(seq, "analog_trim\t: %d.%02d pF\n",
-+ atrim / 1000, atrim % 1000);
-+ return 0;
-+}
-+
-+static struct rtc_class_ops x1205_rtc_ops = {
-+ .proc = x1205_rtc_proc,
-+ .read_time = x1205_rtc_read_time,
-+ .set_time = x1205_rtc_set_time,
-+ .read_alarm = x1205_rtc_read_alarm,
-+ .set_alarm = x1205_rtc_set_alarm,
-+ .set_mmss = x1205_rtc_set_mmss,
-+};
-+
-+static ssize_t x1205_sysfs_show_atrim(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ int atrim;
-+
-+ if (x1205_get_atrim(to_i2c_client(dev), &atrim) == 0) {
-+ return sprintf(buf, "%d.%02d pF\n",
-+ atrim / 1000, atrim % 1000); }
-+ return 0;
-+}
-+static DEVICE_ATTR(atrim, S_IRUGO, x1205_sysfs_show_atrim, NULL);
-+
-+static ssize_t x1205_sysfs_show_dtrim(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ int dtrim;
-+
-+ if (x1205_get_dtrim(to_i2c_client(dev), &dtrim) == 0) {
-+ return sprintf(buf, "%d ppm\n", dtrim);
-+ }
-+ return 0;
-+}
-+static DEVICE_ATTR(dtrim, S_IRUGO, x1205_sysfs_show_dtrim, NULL);
-+
-+
-+static int x1205_attach(struct i2c_adapter *adapter)
-+{
-+ dev_dbg(&adapter->dev, "%s\n", __FUNCTION__);
-+
-+ return i2c_probe(adapter, &addr_data, x1205_probe);
-+}
-+
-+static int x1205_probe(struct i2c_adapter *adapter, int address, int kind)
-+{
-+ int err = 0;
-+ unsigned char sr;
-+ struct i2c_client *client;
-+ struct rtc_device *rtc;
-+
-+ dev_dbg(&adapter->dev, "%s\n", __FUNCTION__);
-+
-+ if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) {
-+ err = -ENODEV;
-+ goto exit;
-+ }
-+
-+ if (!(client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL))) {
-+ err = -ENOMEM;
-+ goto exit;
-+ }
-+
-+ /* I2C client */
-+ client->addr = address;
-+ client->driver = &x1205_driver;
-+ client->adapter = adapter;
-+
-+ strlcpy(client->name, x1205_driver.name, I2C_NAME_SIZE);
-+
-+ /* Verify the chip is really an X1205 */
-+ if (kind < 0) {
-+ if (x1205_validate_client(client) < 0) {
-+ err = -ENODEV;
-+ goto exit_kfree;
-+ }
-+ }
-+
-+ /* Inform the i2c layer */
-+ if ((err = i2c_attach_client(client)))
-+ goto exit_kfree;
-+
-+ dev_info(&client->dev, "chip found, driver version " DRV_VERSION "\n");
-+
-+ rtc = rtc_device_register(x1205_driver.name, &client->dev,
-+ &x1205_rtc_ops, THIS_MODULE);
-+
-+ if (IS_ERR(rtc)) {
-+ err = PTR_ERR(rtc);
-+ dev_err(&client->dev,
-+ "unable to register the class device\n");
-+ goto exit_detach;
-+ }
-+
-+ i2c_set_clientdata(client, rtc);
-+
-+ /* Check for power failures and eventualy enable the osc */
-+ if ((err = x1205_get_status(client, &sr)) == 0) {
-+ if (sr & X1205_SR_RTCF) {
-+ dev_err(&client->dev,
-+ "power failure detected, "
-+ "please set the clock\n");
-+ udelay(50);
-+ x1205_fix_osc(client);
-+ }
-+ }
-+ else
-+ dev_err(&client->dev, "couldn't read status\n");
-+
-+ /* If requested, set the system time */
-+ if (hctosys) {
-+ if ((err = x1205_hctosys(client)) < 0)
-+ dev_err(&client->dev,
-+ "unable to set the system clock\n");
-+ }
-+
-+ device_create_file(&client->dev, &dev_attr_atrim);
-+ device_create_file(&client->dev, &dev_attr_dtrim);
-+
-+ return 0;
-+
-+exit_detach:
-+ i2c_detach_client(client);
-+
-+exit_kfree:
-+ kfree(client);
-+
-+exit:
-+ return err;
-+}
-+
-+static int x1205_detach(struct i2c_client *client)
-+{
-+ int err;
-+ struct rtc_device *rtc = i2c_get_clientdata(client);
-+
-+ dev_dbg(&client->dev, "%s\n", __FUNCTION__);
-+
-+ if (rtc)
-+ rtc_device_unregister(rtc);
-+
-+ if ((err = i2c_detach_client(client)))
-+ return err;
-+
-+ kfree(client);
-+
-+ return 0;
-+}
-+
-+static int __init x1205_init(void)
-+{
-+ return i2c_add_driver(&x1205_driver);
-+}
-+
-+static void __exit x1205_exit(void)
-+{
-+ i2c_del_driver(&x1205_driver);
-+}
-+
-+MODULE_AUTHOR(
-+ "Karen Spearel <kas11@tampabay.rr.com>, "
-+ "Alessandro Zummo <a.zummo@towertech.it>");
-+MODULE_DESCRIPTION("Xicor/Intersil X1205 RTC driver");
-+MODULE_LICENSE("GPL");
-+MODULE_VERSION(DRV_VERSION);
-+
-+module_init(x1205_init);
-+module_exit(x1205_exit);
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/rtc-test.c 2006-01-04 01:27:19.000000000 +0100
-@@ -0,0 +1,189 @@
-+/*
-+ * An RTC test device/driver
-+ * Copyright (C) 2005 Tower Technologies
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ *
-+ * 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 <linux/module.h>
-+#include <linux/err.h>
-+#include <linux/rtc.h>
-+#include <linux/platform_device.h>
-+
-+static int test_rtc_read_alarm(struct device *dev,
-+ struct rtc_wkalrm *alrm)
-+{
-+ return 0;
-+}
-+
-+static int test_rtc_set_alarm(struct device *dev,
-+ struct rtc_wkalrm *alrm)
-+{
-+ return 0;
-+}
-+
-+static int test_rtc_read_time(struct device *dev,
-+ struct rtc_time *tm)
-+{
-+ rtc_time_to_tm(get_seconds(), tm);
-+ return 0;
-+}
-+
-+static int test_rtc_set_time(struct device *dev,
-+ struct rtc_time *tm)
-+{
-+ return 0;
-+}
-+
-+static int test_rtc_set_mmss(struct device *dev, unsigned long secs)
-+{
-+ return 0;
-+}
-+
-+static int test_rtc_proc(struct device *dev, struct seq_file *seq)
-+{
-+ struct platform_device *plat_dev = to_platform_device(dev);
-+
-+ seq_printf(seq, "24hr\t\t: yes\n");
-+ seq_printf(seq, "test\t\t: yes\n");
-+ seq_printf(seq, "id\t\t: %d\n", plat_dev->id);
-+
-+ return 0;
-+}
-+
-+static int test_rtc_ioctl(struct device *dev, unsigned int cmd,
-+ unsigned long arg)
-+{
-+ /* We do support interrupts, they're generated
-+ * using the sysfs interface.
-+ */
-+ switch (cmd) {
-+ case RTC_PIE_ON:
-+ case RTC_PIE_OFF:
-+ case RTC_UIE_ON:
-+ case RTC_UIE_OFF:
-+ case RTC_AIE_ON:
-+ case RTC_AIE_OFF:
-+ return 0;
-+
-+ default:
-+ return -EINVAL;
-+ }
-+}
-+
-+static struct rtc_class_ops test_rtc_ops = {
-+ .proc = test_rtc_proc,
-+ .read_time = test_rtc_read_time,
-+ .set_time = test_rtc_set_time,
-+ .read_alarm = test_rtc_read_alarm,
-+ .set_alarm = test_rtc_set_alarm,
-+ .set_mmss = test_rtc_set_mmss,
-+ .ioctl = test_rtc_ioctl,
-+};
-+
-+static ssize_t test_irq_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ return sprintf(buf, "%d\n", 42);
-+}
-+static ssize_t test_irq_store(struct device *dev,
-+ struct device_attribute *attr,
-+ const char *buf, size_t count)
-+{
-+ int retval;
-+ struct platform_device *plat_dev = to_platform_device(dev);
-+ struct rtc_device *rtc = platform_get_drvdata(plat_dev);
-+
-+ retval = count;
-+ if (strncmp(buf, "tick", 4) == 0)
-+ rtc_update_irq(&rtc->class_dev, 1, RTC_PF | RTC_IRQF);
-+ else if (strncmp(buf, "alarm", 5) == 0)
-+ rtc_update_irq(&rtc->class_dev, 1, RTC_AF | RTC_IRQF);
-+ else if (strncmp(buf, "update", 6) == 0)
-+ rtc_update_irq(&rtc->class_dev, 1, RTC_UF | RTC_IRQF);
-+ else
-+ retval = -EINVAL;
-+
-+ return retval;
-+}
-+static DEVICE_ATTR(irq, S_IRUGO | S_IWUSR, test_irq_show, test_irq_store);
-+
-+static int test_probe(struct platform_device *plat_dev)
-+{
-+ int err;
-+ struct rtc_device *rtc = rtc_device_register("test", &plat_dev->dev,
-+ &test_rtc_ops, THIS_MODULE);
-+ if (IS_ERR(rtc)) {
-+ err = PTR_ERR(rtc);
-+ dev_err(&plat_dev->dev,
-+ "unable to register the class device\n");
-+ return err;
-+ }
-+ device_create_file(&plat_dev->dev, &dev_attr_irq);
-+
-+ platform_set_drvdata(plat_dev, rtc);
-+
-+ return 0;
-+}
-+
-+static int test_remove(struct platform_device *plat_dev)
-+{
-+ struct rtc_device *rtc = platform_get_drvdata(plat_dev);
-+
-+ rtc_device_unregister(rtc);
-+ device_remove_file(&plat_dev->dev, &dev_attr_irq);
-+
-+ return 0;
-+}
-+
-+static void test_release(struct device * dev)
-+{
-+}
-+
-+struct platform_device test_dev_zero = {
-+ .name = "rtc-test",
-+ .id = 0,
-+ .dev.release = test_release,
-+};
-+
-+struct platform_device test_dev_one = {
-+ .name = "rtc-test",
-+ .id = 1,
-+ .dev.release = test_release,
-+};
-+
-+struct platform_driver test_drv = {
-+ .probe = test_probe,
-+ .remove = test_remove,
-+ .driver = {
-+ .name = "rtc-test",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init test_init(void)
-+{
-+ platform_device_register(&test_dev_zero);
-+ platform_device_register(&test_dev_one);
-+ platform_driver_register(&test_drv);
-+
-+ return 0;
-+}
-+
-+static void __exit test_exit(void)
-+{
-+ platform_driver_unregister(&test_drv);
-+ platform_device_unregister(&test_dev_zero);
-+ platform_device_unregister(&test_dev_one);
-+}
-+
-+MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
-+MODULE_DESCRIPTION("RTC test driver/device");
-+MODULE_LICENSE("GPL");
-+
-+module_init(test_init);
-+module_exit(test_exit);
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/rtc-ds1672.c 2006-01-04 01:27:21.000000000 +0100
-@@ -0,0 +1,266 @@
-+/*
-+ * An rtc/i2c driver for the Dallas DS1672
-+ * Copyright 2005 Alessandro Zummo
-+ *
-+ * 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 <linux/module.h>
-+#include <linux/i2c.h>
-+#include <linux/rtc.h>
-+
-+#define DRV_VERSION "0.1"
-+
-+/* Addresses to scan: none. This chip cannot be detected. */
-+static unsigned short normal_i2c[] = { I2C_CLIENT_END };
-+
-+/* Insmod parameters */
-+I2C_CLIENT_INSMOD;
-+I2C_CLIENT_MODULE_PARM(hctosys,
-+ "Set the system time from the hardware clock upon initialization");
-+
-+/* Registers */
-+
-+#define DS1672_REG_CNT_BASE 0
-+#define DS1672_REG_CONTROL 4
-+#define DS1672_REG_TRICKLE 5
-+
-+
-+/* Prototypes */
-+static int ds1672_probe(struct i2c_adapter *adapter, int address, int kind);
-+
-+/*
-+ * In the routines that deal directly with the ds1672 hardware, we use
-+ * rtc_time -- month 0-11, hour 0-23, yr = calendar year-epoch
-+ * Epoch is initialized as 2000. Time is set to UTC.
-+ */
-+static int ds1672_get_datetime(struct i2c_client *client, struct rtc_time *tm)
-+{
-+ unsigned long time;
-+ unsigned char buf[4];
-+
-+ dev_dbg(&client->dev,
-+ "%s: raw read data - counters=%02x,%02x,%02x,%02x\n"
-+ __FUNCTION__,
-+ buf[0], buf[1], buf[2], buf[3]);
-+
-+ time = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0];
-+
-+ rtc_time_to_tm(time, tm);
-+
-+ dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, "
-+ "mday=%d, mon=%d, year=%d, wday=%d\n",
-+ __FUNCTION__,
-+ tm->tm_sec, tm->tm_min, tm->tm_hour,
-+ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
-+
-+ return 0;
-+}
-+
-+static int ds1672_set_mmss(struct i2c_client *client, unsigned long secs)
-+{
-+ int xfer;
-+ unsigned char buf[5];
-+
-+ buf[0] = DS1672_REG_CNT_BASE;
-+ buf[1] = secs & 0x000000FF;
-+ buf[2] = (secs & 0x0000FF00) >> 8;
-+ buf[3] = (secs & 0x00FF0000) >> 16;
-+ buf[4] = (secs & 0xFF000000) >> 24;
-+
-+ xfer = i2c_master_send(client, buf, 5);
-+ if (xfer != 5) {
-+ dev_err(&client->dev, "%s: send: %d\n", __FUNCTION__, xfer);
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+
-+static int ds1672_set_datetime(struct i2c_client *client, struct rtc_time *tm)
-+{
-+ unsigned long secs;
-+
-+ dev_dbg(&client->dev,
-+ "%s: secs=%d, mins=%d, hours=%d, ",
-+ "mday=%d, mon=%d, year=%d, wday=%d\n",
-+ __FUNCTION__,
-+ tm->tm_sec, tm->tm_min, tm->tm_hour,
-+ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
-+
-+ rtc_tm_to_time(tm, &secs);
-+
-+ return ds1672_set_mmss(client, secs);
-+}
-+
-+static int ds1672_hctosys(struct i2c_client *client)
-+{
-+ int err;
-+ struct rtc_time tm;
-+ struct timespec tv;
-+
-+ if ((err = ds1672_get_datetime(client, &tm)) != 0)
-+ return err;
-+
-+ /* IMPORTANT: the RTC only stores whole seconds. It is arbitrary
-+ * whether it stores the most close value or the value with partial
-+ * seconds truncated. However, it is important that we use it to store
-+ * the truncated value. This is because otherwise it is necessary,
-+ * in an rtc sync function, to read both xtime.tv_sec and
-+ * xtime.tv_nsec. On some processors (i.e. ARM), an atomic read
-+ * of >32bits is not possible. So storing the most close value would
-+ * slow down the sync API. So here we have the truncated value and
-+ * the best guess is to add 0.5s.
-+ */
-+
-+ tv.tv_nsec = NSEC_PER_SEC >> 1;
-+
-+ rtc_tm_to_time(&tm, &tv.tv_sec);
-+
-+ do_settimeofday(&tv);
-+
-+ dev_info(&client->dev,
-+ "setting the system clock to %d-%02d-%02d %02d:%02d:%02d\n",
-+ tm.tm_year + 1900, tm.tm_mon + 1,
-+ tm.tm_mday, tm.tm_hour, tm.tm_min,
-+ tm.tm_sec);
-+
-+ return 0;
-+}
-+
-+static int ds1672_rtc_read_time(struct device *dev, struct rtc_time *tm)
-+{
-+ return ds1672_get_datetime(to_i2c_client(dev), tm);
-+}
-+
-+static int ds1672_rtc_set_time(struct device *dev, struct rtc_time *tm)
-+{
-+ return ds1672_set_datetime(to_i2c_client(dev), tm);
-+}
-+
-+static int ds1672_rtc_set_mmss(struct device *dev, unsigned long secs)
-+{
-+ return ds1672_set_mmss(to_i2c_client(dev), secs);
-+}
-+
-+static struct rtc_class_ops ds1672_rtc_ops = {
-+ .read_time = ds1672_rtc_read_time,
-+ .set_time = ds1672_rtc_set_time,
-+ .set_mmss = ds1672_rtc_set_mmss,
-+};
-+
-+static int ds1672_attach(struct i2c_adapter *adapter)
-+{
-+ dev_dbg(&adapter->dev, "%s\n", __FUNCTION__);
-+
-+ return i2c_probe(adapter, &addr_data, ds1672_probe);
-+}
-+
-+static int ds1672_detach(struct i2c_client *client)
-+{
-+ int err;
-+ struct rtc_device *rtc = i2c_get_clientdata(client);
-+
-+ dev_dbg(&client->dev, "%s\n", __FUNCTION__);
-+
-+ if (rtc)
-+ rtc_device_unregister(rtc);
-+
-+ if ((err = i2c_detach_client(client)))
-+ return err;
-+
-+ kfree(client);
-+
-+ return 0;
-+}
-+
-+static struct i2c_driver ds1672_driver = {
-+ .owner = THIS_MODULE,
-+ .name = "ds1672",
-+ .flags = I2C_DF_NOTIFY,
-+ .attach_adapter = &ds1672_attach,
-+ .detach_client = &ds1672_detach,
-+};
-+
-+static int ds1672_probe(struct i2c_adapter *adapter, int address, int kind)
-+{
-+ int err = 0;
-+ struct i2c_client *client;
-+ struct rtc_device *rtc;
-+
-+ dev_dbg(&adapter->dev, "%s\n", __FUNCTION__);
-+
-+ if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) {
-+ err = -ENODEV;
-+ goto exit;
-+ }
-+
-+ if (!(client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL))) {
-+ err = -ENOMEM;
-+ goto exit;
-+ }
-+
-+ /* I2C client */
-+ client->addr = address;
-+ client->driver = &ds1672_driver;
-+ client->adapter = adapter;
-+
-+ strlcpy(client->name, ds1672_driver.name, I2C_NAME_SIZE);
-+
-+ /* Inform the i2c layer */
-+ if ((err = i2c_attach_client(client)))
-+ goto exit_kfree;
-+
-+ dev_info(&client->dev, "chip found, driver version " DRV_VERSION "\n");
-+
-+ rtc = rtc_device_register(ds1672_driver.name, &client->dev,
-+ &ds1672_rtc_ops, THIS_MODULE);
-+
-+ if (IS_ERR(rtc)) {
-+ err = PTR_ERR(rtc);
-+ dev_err(&client->dev,
-+ "unable to register the class device\n");
-+ goto exit_detach;
-+ }
-+
-+ i2c_set_clientdata(client, rtc);
-+
-+ /* If requested, set the system time */
-+ if (hctosys) {
-+ if ((err = ds1672_hctosys(client)) < 0)
-+ dev_err(&client->dev,
-+ "unable to set the system clock\n");
-+ }
-+
-+ return 0;
-+
-+exit_detach:
-+ i2c_detach_client(client);
-+
-+exit_kfree:
-+ kfree(client);
-+
-+exit:
-+ return err;
-+}
-+
-+static int __init ds1672_init(void)
-+{
-+ return i2c_add_driver(&ds1672_driver);
-+}
-+
-+static void __exit ds1672_exit(void)
-+{
-+ i2c_del_driver(&ds1672_driver);
-+}
-+
-+MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
-+MODULE_DESCRIPTION("Dallas/Maxim DS1672 timekeeper driver");
-+MODULE_LICENSE("GPL");
-+MODULE_VERSION(DRV_VERSION);
-+
-+module_init(ds1672_init);
-+module_exit(ds1672_exit);
diff --git a/packages/linux/nslu2-kernel/2.6.15/60-nslu2-beeper.patch b/packages/linux/nslu2-kernel/2.6.15/60-nslu2-beeper.patch
deleted file mode 100644
index 12fdc4d96e..0000000000
--- a/packages/linux/nslu2-kernel/2.6.15/60-nslu2-beeper.patch
+++ /dev/null
@@ -1,184 +0,0 @@
- drivers/input/misc/Kconfig | 12 +++
- drivers/input/misc/Makefile | 1
- drivers/input/misc/nslu2spkr.c | 148 +++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 161 insertions(+)
-
---- linux-2.6.15/drivers/input/misc/Kconfig 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/input/misc/Kconfig 1970-01-01 00:00:00.000000000 +0000
-@@ -40,6 +40,18 @@ config INPUT_M68K_BEEP
- tristate "M68k Beeper support"
- depends on M68K
-
-+config INPUT_NSLU2_BEEPER
-+ tristate "NSLU2 Beeper support"
-+ depends on MACH_NSLU2
-+ help
-+ Say Y here if you want the embedded beeper on the LinkSys NSLU2
-+ to be used for bells and whistles.
-+
-+ If unsure, say Y.
-+
-+ To compile this driver as a module, choose M here: the
-+ module will be called nslu2spkr.
-+
- config INPUT_UINPUT
- tristate "User level driver support"
- help
---- linux-2.6.15/drivers/input/misc/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/input/misc/Makefile 1970-01-01 00:00:00.000000000 +0000
-@@ -10,3 +10,4 @@ obj-$(CONFIG_INPUT_M68K_BEEP) += m68ksp
- obj-$(CONFIG_INPUT_98SPKR) += 98spkr.o
- obj-$(CONFIG_INPUT_UINPUT) += uinput.o
- obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o
-+obj-$(CONFIG_INPUT_NSLU2_BEEPER) += nslu2spkr.o
---- linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,148 @@
-+/*
-+ * drivers/input/misc/nslu2spkr.c
-+ *
-+ * NSLU2 Beeper driver
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ *
-+ * based on nslu2-io.c
-+ * Copyright (C) 2004 Karen Spearel
-+ *
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ * Maintainers: http://www.nslu2-linux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/input.h>
-+#include <linux/delay.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/irq.h>
-+#include <asm/mach-types.h>
-+
-+static unsigned int beep_on_startup = 1;
-+module_param(beep_on_startup, bool, 0);
-+MODULE_PARM_DESC(beep_on_startup, "Play a beep on module startup");
-+
-+DEFINE_SPINLOCK(beep_lock);
-+
-+static int nslu2_spkr_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
-+{
-+ unsigned int count = 0;
-+ unsigned long flags;
-+
-+ if (type != EV_SND)
-+ return -1;
-+
-+ switch (code) {
-+ case SND_BELL:
-+ if (value) value = 1000;
-+ case SND_TONE:
-+ break;
-+ default:
-+ return -1;
-+ }
-+
-+ if (value > 20 && value < 32767)
-+ count = (NSLU2_FREQ / (value*4)) - 1;
-+
-+ spin_lock_irqsave(&beep_lock, flags);
-+
-+ if (count) {
-+
-+ gpio_line_config(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_OUT);
-+ gpio_line_set(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_LOW);
-+
-+ *IXP4XX_OSRT2 = (count & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE;
-+
-+ } else {
-+
-+ gpio_line_config(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_IN);
-+ gpio_line_set(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_HIGH);
-+
-+ *IXP4XX_OSRT2 = 0;
-+ }
-+
-+ spin_unlock_irqrestore(&beep_lock, flags);
-+
-+ return 0;
-+}
-+
-+static struct input_dev nslu2_spkr_dev = {
-+ .phys = "ixp420/gpio4",
-+ .name = "NSLU2 Beeper",
-+ .evbit[0] = BIT(EV_SND),
-+ .sndbit[0] = BIT(SND_BELL) | BIT(SND_TONE),
-+ .event = nslu2_spkr_event,
-+ .id = {
-+ .bustype = BUS_HOST,
-+ .vendor = 0x001f,
-+ .product = 0x0001,
-+ .version = 0x0100
-+ }
-+};
-+
-+static irqreturn_t nslu2_spkr_handler(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ /* clear interrupt */
-+ *IXP4XX_OSST = IXP4XX_OSST_TIMER_2_PEND;
-+
-+ /* flip the beeper output */
-+ *IXP4XX_GPIO_GPOUTR ^= NSLU2_BZ_BM;
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int __init nslu2_spkr_init(void)
-+{
-+ if (!(machine_is_nslu2()))
-+ return -ENODEV;
-+
-+ if (request_irq(IRQ_IXP4XX_TIMER2, &nslu2_spkr_handler,
-+ SA_INTERRUPT | SA_TIMER, "nslu2-beeper", NULL < 0)) {
-+
-+ printk(KERN_INFO "NSLU2 beeper: IRQ %d not available\n",
-+ IRQ_IXP4XX_TIMER2);
-+
-+ return -EIO;
-+ }
-+
-+ input_register_device(&nslu2_spkr_dev);
-+
-+ /* do a little beep to tell the world we are alive */
-+ if (beep_on_startup)
-+ {
-+ nslu2_spkr_event(NULL, EV_SND, SND_TONE, 440);
-+ msleep(120);
-+ nslu2_spkr_event(NULL, EV_SND, SND_TONE, 0);
-+ }
-+
-+ printk(KERN_INFO "NSLU2: beeper\n");
-+ return 0;
-+}
-+
-+static void __exit nslu2_spkr_exit(void)
-+{
-+ input_unregister_device(&nslu2_spkr_dev);
-+
-+ disable_irq(IRQ_IXP4XX_TIMER2);
-+
-+ /* turn it off */
-+ nslu2_spkr_event(NULL, EV_SND, SND_BELL, 0);
-+
-+ free_irq(IRQ_IXP4XX_TIMER2, NULL);
-+}
-+
-+module_init(nslu2_spkr_init);
-+module_exit(nslu2_spkr_exit);
-+
-+MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
-+MODULE_DESCRIPTION("NSLU2 Beeper driver");
-+MODULE_LICENSE("GPL");
diff --git a/packages/linux/nslu2-kernel/2.6.15/75-nslu2-leds.patch b/packages/linux/nslu2-kernel/2.6.15/75-nslu2-leds.patch
deleted file mode 100644
index 7497409e77..0000000000
--- a/packages/linux/nslu2-kernel/2.6.15/75-nslu2-leds.patch
+++ /dev/null
@@ -1,272 +0,0 @@
- arch/arm/Kconfig | 8 -
- arch/arm/mach-ixp4xx/Makefile | 4
- arch/arm/mach-ixp4xx/nslu2-leds.c | 223 ++++++++++++++++++++++++++++++++++++++
- 3 files changed, 232 insertions(+), 3 deletions(-)
-
---- linux-2.6.15/arch/arm/Kconfig 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/Kconfig 1970-01-01 00:00:00.000000000 +0000
-@@ -418,7 +418,8 @@ config LEDS
- ARCH_EBSA285 || ARCH_IMX || ARCH_INTEGRATOR || \
- ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \
- ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \
-- ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE
-+ ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || \
-+ MACH_NSLU2
- help
- If you say Y here, the LEDs on your machine will be used
- to provide useful information about your current system status.
-@@ -432,7 +433,7 @@ config LEDS
-
- config LEDS_TIMER
- bool "Timer LED" if (!ARCH_CDB89712 && !ARCH_OMAP) || \
-- MACH_OMAP_H2 || MACH_OMAP_PERSEUS2
-+ MACH_OMAP_H2 || MACH_OMAP_PERSEUS2 || MACH_NSLU2
- depends on LEDS
- default y if ARCH_EBSA110
- help
-@@ -448,7 +449,8 @@ config LEDS_TIMER
-
- config LEDS_CPU
- bool "CPU usage LED" if (!ARCH_CDB89712 && !ARCH_EBSA110 && \
-- !ARCH_OMAP) || MACH_OMAP_H2 || MACH_OMAP_PERSEUS2
-+ !ARCH_OMAP) || MACH_OMAP_H2 || MACH_OMAP_PERSEUS2 \
-+ || MACH_NSLU2
- depends on LEDS
- help
- If you say Y here, the red LED will be used to give a good real
---- linux-2.6.15/arch/arm/mach-ixp4xx/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/mach-ixp4xx/Makefile 1970-01-01 00:00:00.000000000 +0000
-@@ -10,3 +10,7 @@ obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-
- obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o
- obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o
-
-+leds-$(CONFIG_MACH_NSLU2) += nslu2-leds.o
-+obj-$(CONFIG_LEDS) += $(leds-y)
-+
-+
---- linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-leds.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-leds.c 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,223 @@
-+/*
-+ * arch/arm/mach-ixp4xx/nslu2-leds.c
-+ *
-+ * NSLU2 LEDs driver
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ *
-+ * based on nslu2-io.c
-+ * Copyright (C) 2004 Karen Spearel
-+ * and arch/arm/mach-footbridge/netwinder-leds.c
-+ * Copyright (C) 1998-1999 Russell King
-+ *
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ * Maintainers: http://www.nslu2-linux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/spinlock.h>
-+#include <linux/notifier.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/leds.h>
-+#include <asm/mach-types.h>
-+#include <asm/system.h>
-+
-+#define LED_STATE_ENABLED 0x01
-+#define LED_STATE_CLAIMED 0x02
-+#define LED_STATE_IDLE 0x04
-+
-+static unsigned char led_state;
-+static unsigned int hw_led_state;
-+
-+#ifdef CONFIG_LEDS_TIMER
-+static const unsigned long idle_seq[4] = {
-+ NSLU2_LED_GRN_BM, 0,
-+ NSLU2_LED_GRN_BM, 0,
-+};
-+
-+static const unsigned long busy_seq[4] = {
-+ NSLU2_LED_GRN_BM, 0,
-+ NSLU2_LED_GRN_BM | NSLU2_LED_RED_BM, 0,
-+};
-+#endif
-+
-+static unsigned char led_count = 0;
-+
-+static DEFINE_SPINLOCK(leds_lock);
-+extern spinlock_t gpio_lock;
-+
-+static void nslu2_leds_event(led_event_t evt)
-+{
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&leds_lock, flags);
-+
-+ switch (evt) {
-+ case led_start:
-+ /* Let's rock! Red led on, all others off. Remember
-+ * that disk1/disk2 works inverted.
-+ */
-+ led_state = LED_STATE_ENABLED;
-+ hw_led_state = NSLU2_LED_DISK1_BM | NSLU2_LED_DISK2_BM
-+ | NSLU2_LED_RED_BM;
-+ break;
-+
-+ case led_stop:
-+ led_state &= ~LED_STATE_ENABLED;
-+ break;
-+
-+ case led_claim:
-+ /* The user claimed the interface, red and green off */
-+ led_state |= LED_STATE_CLAIMED;
-+ hw_led_state &= ~(NSLU2_LED_RED_BM | NSLU2_LED_GRN_BM);
-+ break;
-+
-+ case led_release:
-+ /* The user released the interface, preserve the last
-+ * status of the leds, except red/green.
-+ */
-+ led_state &= ~LED_STATE_CLAIMED;
-+ hw_led_state = *IXP4XX_GPIO_GPOUTR & 0x0000000C;
-+ break;
-+
-+#ifdef CONFIG_LEDS_TIMER
-+ case led_timer:
-+ /* Pulse green led */
-+ if (!(led_state & LED_STATE_CLAIMED))
-+ {
-+ /* clear red and green bits */
-+ hw_led_state &= ~(NSLU2_LED_RED_BM | NSLU2_LED_GRN_BM);
-+
-+ /* copy the right sequence in */
-+ if (led_state & LED_STATE_IDLE)
-+ hw_led_state |= idle_seq[led_count % 4];
-+ else
-+ hw_led_state |= busy_seq[led_count % 4];
-+
-+ led_count++;
-+ }
-+ break;
-+#endif
-+
-+#ifdef CONFIG_LEDS_CPU
-+ case led_idle_start:
-+ led_state |= LED_STATE_IDLE;
-+#ifndef CONFIG_LEDS_TIMER
-+ /* green on, red off */
-+ hw_led_state |= NSLU2_LED_GRN_BM;
-+ hw_led_state &= ~NSLU2_LED_RED_BM;
-+#endif
-+ break;
-+
-+ case led_idle_end:
-+ led_state &= ~LED_STATE_IDLE;
-+#ifndef CONFIG_LEDS_TIMER
-+ /* green on, red on -> amber on */
-+ hw_led_state |= NSLU2_LED_GRN_BM | NSLU2_LED_RED_BM;
-+#endif
-+ break;
-+#endif /* CONFIG_LEDS_CPU */
-+
-+ case led_halted:
-+ if (!(led_state & LED_STATE_CLAIMED))
-+ hw_led_state |= NSLU2_LED_RED_BM;
-+ break;
-+
-+ /* leds */
-+
-+ case led_green_on:
-+ if (led_state & LED_STATE_CLAIMED)
-+ hw_led_state |= NSLU2_LED_GRN_BM;
-+ break;
-+
-+ case led_green_off:
-+ if (led_state & LED_STATE_CLAIMED)
-+ hw_led_state &= ~NSLU2_LED_GRN_BM;
-+ break;
-+
-+ case led_amber_on:
-+ if (led_state & LED_STATE_CLAIMED)
-+ hw_led_state |= (NSLU2_LED_RED_BM | NSLU2_LED_GRN_BM);
-+ break;
-+
-+ case led_amber_off:
-+ if (led_state & LED_STATE_CLAIMED)
-+ hw_led_state &= ~(NSLU2_LED_RED_BM | NSLU2_LED_GRN_BM);
-+ break;
-+
-+ case led_red_on:
-+ if (led_state & LED_STATE_CLAIMED)
-+ hw_led_state |= NSLU2_LED_RED_BM;
-+ break;
-+
-+ case led_red_off:
-+ if (led_state & LED_STATE_CLAIMED)
-+ hw_led_state &= ~NSLU2_LED_RED_BM;
-+ break;
-+
-+ default:
-+ break;
-+ }
-+
-+ spin_unlock_irqrestore(&leds_lock, flags);
-+
-+ if (led_state & LED_STATE_ENABLED) {
-+ spin_lock_irqsave(&gpio_lock, flags);
-+ *IXP4XX_GPIO_GPOUTR = (*IXP4XX_GPIO_GPOUTR & 0xFFFFFFF0) | hw_led_state;
-+ spin_unlock_irqrestore(&gpio_lock, flags);
-+ }
-+}
-+
-+static int nslu2_leds_panic_event(struct notifier_block *this, unsigned long event,
-+ void *ptr)
-+{
-+#ifdef CONFIG_LEDS_TIMER
-+ leds_event(led_claim);
-+#endif
-+ leds_event(led_green_off);
-+ leds_event(led_red_on);
-+
-+ return NOTIFY_DONE;
-+}
-+
-+static struct notifier_block nslu2_leds_panic_block = {
-+ .notifier_call = nslu2_leds_panic_event,
-+};
-+
-+static int __init nslu2_leds_init(void)
-+{
-+ if (!(machine_is_nslu2()))
-+ return 0;
-+
-+ printk(KERN_INFO "NSLU2: leds\n");
-+
-+ /* register panic notifier */
-+ notifier_chain_register(&panic_notifier_list, &nslu2_leds_panic_block);
-+
-+ /* enable gpio 0-3 */
-+ gpio_line_config(NSLU2_LED_GRN, IXP4XX_GPIO_OUT);
-+ gpio_line_config(NSLU2_LED_RED, IXP4XX_GPIO_OUT);
-+ gpio_line_config(NSLU2_LED_DISK1, IXP4XX_GPIO_OUT);
-+ gpio_line_config(NSLU2_LED_DISK2, IXP4XX_GPIO_OUT);
-+
-+ leds_event = nslu2_leds_event;
-+
-+ /* this will also initialize the leds to the
-+ * default state.
-+ */
-+
-+ leds_event(led_start);
-+
-+ return 0;
-+}
-+
-+module_init(nslu2_leds_init);
diff --git a/packages/linux/nslu2-kernel/2.6.15/80-nslu2-io.patch b/packages/linux/nslu2-kernel/2.6.15/80-nslu2-io.patch
deleted file mode 100644
index 26031f6f00..0000000000
--- a/packages/linux/nslu2-kernel/2.6.15/80-nslu2-io.patch
+++ /dev/null
@@ -1,560 +0,0 @@
---- linux-2.6.15/arch/arm/mach-ixp4xx/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/mach-ixp4xx/Makefile 1970-01-01 00:00:00.000000000 +0000
-@@ -8,5 +8,5 @@ obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pc
- obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o
- obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o
- obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o
--obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o
-+obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o nslu2-io.o
-
---- linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-io.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-io.c 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,548 @@
-+//=============================================================================
-+//
-+// n2-io.c version 0.1.7
-+// Author: Karen Spearel <kas11 at tampabay.rr.com>
-+// please report problems/bugs directly to the address above
-+//
-+// Boilerplate to be added "real soon now"...it is and has always been GPL'ed per
-+// MODULE_LICENSE but is offered without warrantee of any sort..use at your own risk
-+//
-+// NOTE: THIS IS INCOMPLETE. INCLUDED ONLY TO KEEP FROM BREAKING THE BUILD,
-+// IT BEEPS AND SENDS A MESSAGE TO /proc/poweroff. EVENTUALLY IT
-+// WILL TALK TO THE n2_pbd DAEMON. EVENTUALLY THE LED DRIVER
-+// WILL TALK TO SOME USERLAND APP BUT ***NOT*** SET_LEDS.
-+//
-+//=============================================================================
-+// GPIO Function State
-+// 0 Red LED Status
-+// 1 Green LED Ready = 1
-+// 2 Disk 2 LED On = 0
-+// 3 Disk 1 LED On = 0
-+// 4 Buzzer
-+// 5 Power Button Pressed = 1
-+// 8 Power Down Output = 1 powers down NSLU2
-+// 12 Reset Pressed = 0
-+
-+#include <linux/config.h>
-+#include <linux/version.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/proc_fs.h>
-+#include <linux/device.h>
-+#include <linux/reboot.h>
-+
-+#include <asm/uaccess.h>
-+#include <asm-arm/irq.h>
-+#include <asm-arm/delay.h>
-+
-+/* Set this to 1 to output lots of debug messages. */
-+#define NSLU2_IO_DEBUG 0
-+
-+#if NSLU2_IO_DEBUG
-+#define nslu2_io_debug(args) printk args
-+#else
-+#define nslu2_io_debug(args) ((void)0)
-+#endif
-+
-+#define VERSION "0.1.7"
-+
-+#define NSLU2BZ_MAJOR 62 //buzzer
-+#define NSLU2LM_MAJOR 126
-+
-+
-+#define NSLU2_BEEP_DUR_LONG 2000
-+#define NSLU2_BEEP_DUR_MED 400
-+#define NSLU2_BEEP_DUR_SHORT 100
-+#define NSLU2_BEEP_PITCH_HIGH 250
-+#define NSLU2_BEEP_PITCH_MED 500
-+#define NSLU2_BEEP_PITCH_LOW 1000
-+#define NSLU2_LONG_DELAY 30000
-+
-+#define NSLU2_BZ_BM (1L << NSLU2_GPIO_BUZZ)
-+
-+// ioctls -- 'M" is used for sound cards...we don't got one so it seems safe
-+
-+#define NSLU2BZ_BEEP_STOP _IO('M',0) //stop multi-beep at end of audible
-+#define NSLU2BZ_BEEP _IO('M',1) //one beep at current defaults
-+#define NSLU2BZ_BEEPS _IOW('M',3,long) //param beeps at current defaults
-+#define NSLU2BZ_TONESET _IOW('M',4,long) //set tone: range is high=250 to low=2000
-+#define NSLU2BZ_ONTIME _IOW('M',5,long) //ontime for multi-beeps in jiffies
-+#define NSLU2BZ_SILENTTIME _IOW('M',6,long) //offtime for multi-beeps in jiffies
-+#define NSLU2BZ_REPEATCNT _IOW('M',7,long) //number of repeats for multi-beeps 0 = forever
-+#define NSLU2BZ_COMBINED _IOW('M',8,long) //combine all params in a long
-+
-+#define NSLU2LM_OFF _IOW('M',32,long)
-+#define NSLU2LM_ON _IOW('M',33,long)
-+#define NSLU2LM_BLINK _IOW('M',34,long)
-+#define NSLU2LM_ALT _IOW('M',35,long)
-+#define NSLU2LM_ALL_ON _IO('M',36)
-+#define NSLU2LM_ALL_OFF _IO('M',37)
-+
-+#define PHYS_LEDS 4
-+#define BLINK_DELAY 25
-+
-+// OR Masks to turn these LEDs ON
-+
-+#define RS_RED_ON 0x00000001 //0b0000 0000 0000 0010
-+#define RS_GRN_ON 0x00000002 //0b0000 0000 0000 0001
-+#define RS_YEL_ON 0x00000003 //0b0000 0000 0000 0011
-+
-+// AND Masks to turn these LEDs OFF
-+
-+#define RS_RED_OFF 0xfffffffe //0b1111 1111 1111 1101
-+#define RS_GRN_OFF 0xfffffffd //0b1111 1111 1111 1110
-+#define RS_YEL_OFF 0xfffffffc //0b1111 1111 1111 1100
-+
-+// AND Masks to turn these LEDs ON
-+
-+#define DISK1_ON 0xfffffff7 //0b1111 1111 1111 0111
-+#define DISK2_ON 0xfffffffb //0b1111 1111 1111 1011
-+
-+// Or Masks to turn these LEDs OFF
-+
-+#define DISK1_OFF 0x00000008 //0b0000 0000 0000 1000
-+#define DISK2_OFF 0x00000004 //0b0000 0000 0000 0100
-+
-+// EOR masks for toggling LEDs on/off
-+
-+#define RS_RG_ALT 0x00000003 //eor mask to toggle rs rg bits
-+#define RS_GRN_TGL 0x00000002
-+#define RS_RED_TGL 0x00000001
-+#define DISK1_TGL 0x00000008
-+#define DISK2_TGL 0x00000004
-+
-+// The LED names for switches
-+
-+#define LED_RS_RED 0
-+#define LED_RS_GRN 1
-+#define LED_DISK1 2
-+#define LED_DISK2 3
-+#define LED_ALL 4
-+
-+static unsigned long ontime = 50;
-+static unsigned long offtime = 450;
-+static unsigned long bz_repeatcnt = 10;
-+static unsigned long tone = 1000;
-+
-+static struct timer_list n2lm_rsg_timer; //rs green
-+static struct timer_list n2lm_rsr_timer; //rs red
-+static struct timer_list n2lm_d1_timer; //drive 1
-+static struct timer_list n2lm_d2_timer; //drive 2
-+static struct timer_list n2bz_timer; //beeper
-+
-+// sysfs class
-+static struct class *n2lm_class;
-+
-+//==================================================================================================
-+//
-+// Blinking is handled entirely by the 4 timer handlers. On timeout, the bit in the
-+// GPIO output register is xor'd with a mask corresponding to the selected led which simply
-+// flips that bit. No record of what any of the other leds is doing is needed.
-+//
-+//==================================================================================================
-+// this blinks rs green or green/yellow if rs red is on
-+#ifndef CONFIG_LEDS
-+static void n2lm_rsg_handler(unsigned long data)
-+{
-+ *IXP4XX_GPIO_GPOUTR ^= RS_GRN_TGL; //flip the led
-+ n2lm_rsg_timer.expires = jiffies + BLINK_DELAY; //next timeout
-+ add_timer(&n2lm_rsg_timer); //reinit timer
-+ return;
-+}
-+
-+// this blinks or alternates rs red green... inited wit green on/red off
-+static void n2lm_rsr_handler(unsigned long data)
-+{
-+ *IXP4XX_GPIO_GPOUTR ^= n2lm_rsr_timer.data;
-+ n2lm_rsr_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_rsr_timer);
-+ return;
-+}
-+// blinks disk 1
-+static void n2lm_d1_handler(unsigned long data)
-+{
-+ *IXP4XX_GPIO_GPOUTR ^= DISK1_TGL;
-+ n2lm_d1_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_d1_timer);
-+ return;
-+}
-+// blinks disk 2
-+static void n2lm_d2_handler(unsigned long data)
-+{
-+ *IXP4XX_GPIO_GPOUTR ^= DISK2_TGL;
-+ n2lm_d2_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_d2_timer);
-+ return;
-+}
-+
-+//==================================================================================================
-+
-+static void n2lm_timer_start(unsigned long led)
-+{
-+
-+ nslu2_io_debug((KERN_DEBUG "timer: %ld\n",led));
-+
-+ switch(led) {
-+ case LED_RS_RED:
-+ n2lm_rsr_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_rsr_timer);
-+ break;
-+
-+ case LED_RS_GRN:
-+ n2lm_rsg_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_rsg_timer);
-+ break;
-+
-+ case LED_DISK1:
-+ n2lm_d1_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_d1_timer);
-+ break;
-+
-+ case LED_DISK2:
-+ n2lm_d2_timer.expires = jiffies + BLINK_DELAY;
-+ add_timer(&n2lm_d2_timer);
-+ break;
-+
-+ default:
-+ break;
-+ }
-+ return;
-+}
-+
-+//==================================================================================================
-+
-+static void n2lm_timer_stop(unsigned long led)
-+{
-+ switch (led) {
-+ case LED_RS_RED:
-+ del_timer(&n2lm_rsr_timer);
-+ break;
-+ case LED_RS_GRN:
-+ del_timer(&n2lm_rsg_timer);
-+ break;
-+ case LED_DISK1:
-+ del_timer(&n2lm_d1_timer);
-+ break;
-+ case LED_DISK2:
-+ del_timer(&n2lm_d2_timer);
-+ break;
-+ default:
-+ break;
-+ }
-+ return;
-+}
-+
-+//--------------------------------------------------------------------------------------------------
-+
-+static void n2lm_timer_stop_all(void)
-+{
-+ del_timer(&n2lm_rsg_timer);
-+ del_timer(&n2lm_rsr_timer);
-+ del_timer(&n2lm_d1_timer);
-+ del_timer(&n2lm_d2_timer);
-+ return;
-+}
-+//--------------------------------------------------------------------------------------------------
-+
-+static void n2lm_ledon(unsigned long led)
-+{
-+
-+ nslu2_io_debug((KERN_DEBUG "ledon: %ld\n", led));
-+
-+ switch (led) {
-+ case LED_RS_RED:
-+ *IXP4XX_GPIO_GPOUTR |= RS_RED_ON; //1
-+ return;
-+ case LED_RS_GRN:
-+ *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON; //2
-+ return;
-+ case LED_DISK1:
-+ *IXP4XX_GPIO_GPOUTR &= DISK1_ON; //0xfffffff7
-+ return;
-+ case LED_DISK2:
-+ *IXP4XX_GPIO_GPOUTR &= DISK2_ON; //0xfffffffb
-+ return;
-+ case LED_ALL: //all green
-+ *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON;
-+ *IXP4XX_GPIO_GPOUTR &= (DISK1_ON & DISK2_ON);
-+ return;
-+ }
-+}
-+
-+//--------------------------------------------------------------------------------------------------
-+
-+static void n2lm_ledoff(unsigned long led)
-+{
-+
-+ switch (led) {
-+ case LED_RS_RED:
-+ *IXP4XX_GPIO_GPOUTR &= RS_RED_OFF; //0xffffffffe
-+ return;
-+ case LED_RS_GRN:
-+ *IXP4XX_GPIO_GPOUTR &= RS_GRN_OFF; //0xfffffffd
-+ return;
-+ case LED_DISK1:
-+ *IXP4XX_GPIO_GPOUTR |= DISK1_OFF; //0x00000008
-+ return;
-+ case LED_DISK2:
-+ *IXP4XX_GPIO_GPOUTR |= DISK2_OFF; //0x00000004
-+ return;
-+ case LED_ALL:
-+ *IXP4XX_GPIO_GPOUTR &= (RS_GRN_OFF & RS_RED_OFF);
-+ *IXP4XX_GPIO_GPOUTR |= (DISK1_OFF | DISK2_OFF);
-+ }
-+}
-+
-+//==================================================================================================
-+
-+static int n2lm_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long led)
-+{
-+
-+ nslu2_io_debug((KERN_DEBUG "cmd=%d, led=%ld\n", cmd, led));
-+
-+ if (led < 0 || led >= PHYS_LEDS)
-+ return -EINVAL;
-+
-+ switch (cmd ) {
-+ case NSLU2LM_ON:
-+ n2lm_timer_stop(led);
-+ n2lm_ledon(led);
-+ break;
-+
-+ case NSLU2LM_OFF:
-+ n2lm_timer_stop(led);
-+ n2lm_ledoff(led);
-+ break;
-+
-+ case NSLU2LM_BLINK:
-+ n2lm_ledon(led);
-+ if (led == LED_RS_RED)
-+ n2lm_rsr_timer.data = RS_RED_TGL;
-+ n2lm_timer_start(led);
-+ break;
-+
-+ case NSLU2LM_ALT:
-+ if (led == LED_RS_RED)
-+ {
-+ n2lm_ledon(LED_RS_GRN);
-+ n2lm_ledoff(LED_RS_RED);
-+ n2lm_rsr_timer.data = RS_RG_ALT;
-+ n2lm_timer_start(LED_RS_RED);
-+ break;
-+ } else
-+ return -EINVAL;
-+
-+ case NSLU2LM_ALL_ON:
-+ n2lm_timer_stop_all();
-+ n2lm_ledon(LED_ALL);
-+ break;
-+
-+ case NSLU2LM_ALL_OFF:
-+ n2lm_timer_stop_all();
-+ n2lm_ledoff(LED_ALL);
-+ break;
-+
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static struct file_operations n2lm_fops = {
-+ .owner = THIS_MODULE,
-+ .ioctl = n2lm_ioctl,
-+};
-+#endif
-+//==================================================================================================
-+// We can't do anything fancy here since the system tick rate is far below that required to
-+// generate a desirable tone. Therefore we haven't much choice but to use a busy loop until
-+// I get up to speed on the timers. The saving grace is that for the normal uses, nothing
-+// important should be haprepening.
-+//==================================================================================================
-+
-+static void n2_buzz(int tone_delay, int duration)
-+{
-+ int i;
-+
-+ *IXP4XX_GPIO_GPOER &= ~NSLU2_BZ_BM;
-+
-+ for (i = 1; i < duration; i++) {
-+ *IXP4XX_GPIO_GPOUTR &= ~NSLU2_BZ_BM;
-+ udelay(tone_delay);
-+ *IXP4XX_GPIO_GPOUTR |= NSLU2_BZ_BM;
-+ udelay(tone_delay);
-+ }
-+ *IXP4XX_GPIO_GPOER |= NSLU2_BZ_BM;
-+
-+ return;
-+}
-+//=================================================================================================
-+
-+// this handles the buzzer duty cycle
-+static void n2bz_handler(unsigned long data)
-+{
-+ if (--bz_repeatcnt > 0) { //if just one beep left to do
-+ n2bz_timer.expires = jiffies + ontime + offtime; //next timeout
-+ add_timer(&n2bz_timer); //reinit timer
-+ }
-+ n2_buzz(tone/2, ontime);
-+ nslu2_io_debug((KERN_DEBUG "Count = %d\tOntime = %d\n", bz_repeatcnt, ontime));
-+ return;
-+}
-+
-+//==================================================================================================
-+
-+static int n2bz_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long param)
-+{
-+ switch (cmd) {
-+ case NSLU2BZ_BEEP:
-+ n2_buzz(tone/2, ontime);
-+ break;
-+
-+ case NSLU2BZ_BEEP_STOP:
-+ del_timer(&n2bz_timer);
-+ break;
-+
-+ case NSLU2BZ_BEEPS:
-+ if (param == 0)
-+ bz_repeatcnt = 0xffffffff;
-+ else
-+ bz_repeatcnt = param;
-+ n2bz_handler(0);
-+ break;
-+
-+ case NSLU2BZ_TONESET:
-+ if (param >= 250 && param <= 2000)
-+ tone = param;
-+ break;
-+
-+ case NSLU2BZ_ONTIME:
-+ if (param > 4 && param < 201)
-+ ontime = param;
-+ break;
-+
-+ case NSLU2BZ_SILENTTIME:
-+ if (param > ontime) //enforce a reasonable duty cycle
-+ offtime = param;
-+ else
-+ offtime = ontime;
-+ break;
-+
-+ case NSLU2BZ_REPEATCNT:
-+ if (param == 0)
-+ bz_repeatcnt = 0xffffffff;
-+ else
-+ bz_repeatcnt = param;
-+ break;
-+
-+ case NSLU2BZ_COMBINED:
-+ bz_repeatcnt = (param & 0xF0000000) >> 28; //repeat 1 - 16
-+ ontime = (param & 0x0FF00000) >> 20; //ontime 1 - 256 jiffies
-+ offtime = (param & 0x000FFF00) >> 8; //offtime 1 - 4095 jiffies
-+ tone = (param & 0x000000FF) << 4; //tone (1 - 255) * 16
-+ break;
-+
-+ default:
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static struct file_operations n2bz_fops = {
-+ .owner = THIS_MODULE,
-+ .ioctl = n2bz_ioctl,
-+};
-+
-+static void n2iom_initarch(void)
-+{
-+#ifndef CONFIG_LEDS
-+ init_timer(&n2lm_rsg_timer);
-+ init_timer(&n2lm_rsr_timer);
-+ init_timer(&n2lm_d1_timer);
-+ init_timer(&n2lm_d2_timer);
-+
-+ n2lm_rsr_timer.function = n2lm_rsr_handler;
-+ n2lm_rsg_timer.function = n2lm_rsg_handler;
-+ n2lm_d2_timer.function = n2lm_d2_handler;
-+ n2lm_d1_timer.function = n2lm_d1_handler;
-+#endif
-+
-+ init_timer(&n2bz_timer);
-+ n2bz_timer.function = n2bz_handler;
-+
-+ n2lm_rsr_timer.data = n2lm_rsg_timer.data = n2lm_d1_timer.data = n2lm_d2_timer.data = n2bz_timer.data = 0;
-+
-+#ifndef CONFIG_LEDS
-+ *IXP4XX_GPIO_GPOER &= 0xfffffff0; //enable gpio 0-3
-+ *IXP4XX_GPIO_GPOUTR |= 0x00000003; //turn off the leds
-+ *IXP4XX_GPIO_GPOUTR &= 0xfffffffc;
-+ n2lm_ledon(LED_ALL);
-+ n2_buzz(NSLU2_BEEP_PITCH_MED, NSLU2_BEEP_DUR_SHORT);
-+ n2lm_ledoff(LED_ALL);
-+
-+ // Default the Ready/Status to Red during kernel boot, Turn Green at the end of sysvinit
-+ n2lm_ledon(LED_RS_RED);
-+#endif
-+
-+ return;
-+}
-+
-+//==================================================================================================
-+
-+static int __init n2iom_init(void)
-+{
-+ printk(KERN_INFO "NSLU2: i/o, %s\n", VERSION);
-+
-+ n2iom_initarch();
-+
-+ n2lm_class = class_create(THIS_MODULE, "nslu2");
-+
-+#ifndef CONFIG_LEDS
-+ if (register_chrdev(NSLU2LM_MAJOR, "n2_ledm", &n2lm_fops) < 0) {
-+ printk(KERN_DEBUG "Led Manager Major %d not available\n", NSLU2LM_MAJOR);
-+ return -EBUSY;
-+ }
-+ else {
-+ class_device_create(n2lm_class, NULL, MKDEV(NSLU2LM_MAJOR, 0), NULL, "leds");
-+ }
-+#endif
-+
-+ if (register_chrdev(NSLU2BZ_MAJOR, "n2_bzm", &n2bz_fops) < 0) {
-+ printk(KERN_DEBUG "Buzzer Major %d not available\n", NSLU2BZ_MAJOR);
-+ return -EBUSY;
-+ }
-+ else {
-+ class_device_create(n2lm_class, NULL, MKDEV(NSLU2BZ_MAJOR, 0), NULL, "buzzer");
-+ }
-+
-+ return 0;
-+}
-+
-+//==================================================================================================
-+
-+static void __exit n2iom_exit(void)
-+{
-+
-+#ifndef CONFIG_LEDS
-+ del_timer(&n2lm_rsg_timer);
-+ del_timer(&n2lm_rsr_timer);
-+ del_timer(&n2lm_d1_timer);
-+ del_timer(&n2lm_d2_timer);
-+
-+ unregister_chrdev(NSLU2LM_MAJOR, "n2lm" );
-+ class_device_destroy(n2lm_class, MKDEV(NSLU2LM_MAJOR, 0));
-+#endif
-+
-+ unregister_chrdev(NSLU2BZ_MAJOR, "n2bz");
-+ class_device_destroy(n2lm_class, MKDEV(NSLU2BZ_MAJOR, 0));
-+
-+ class_destroy(n2lm_class);
-+}
-+
-+module_init(n2iom_init);
-+module_exit(n2iom_exit);
-+
-+MODULE_AUTHOR("Karen Spearel <kas11@tampabay.rr.com>");
-+MODULE_DESCRIPTION("NSLU2 I/O driver");
-+MODULE_LICENSE("GPL");
diff --git a/packages/linux/nslu2-kernel/2.6.15/85-timer.patch b/packages/linux/nslu2-kernel/2.6.15/85-timer.patch
deleted file mode 100644
index 3d4a03f616..0000000000
--- a/packages/linux/nslu2-kernel/2.6.15/85-timer.patch
+++ /dev/null
@@ -1,285 +0,0 @@
---- linux-2.6.15/arch/arm/mach-ixp4xx/common.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/mach-ixp4xx/common.c 1970-01-01 00:00:00.000000000 +0000
-@@ -239,36 +239,165 @@ void __init ixp4xx_init_irq(void)
- * IXP4xx timer tick
- * We use OS timer1 on the CPU for the timer tick and the timestamp
- * counter as a source of real clock ticks to account for missed jiffies.
-+ *
-+ * 'CLOCK_TICK_RATE' is the nominal number of internal ticks per second,
-+ * this is significantly greater than the actual number on any ixp4xx
-+ * board. Neither this nor 'LATCH' are required by this code because
-+ * the only requirement is to generate HZ timer_tick calls per second.
- *************************************************************************/
-+#if TICK_NSEC * HZ != 1000000000
-+ /* This will cause the jiffies to drift unnecessarily. */
-+# error CLOCK_TICK_RATE should be a multiple of HZ for this code
-+#endif
-+
-+/* These are the control registers for the interrupt handler, they must
-+ * only be read and written by the interrupt handler and by the init
-+ * method (which sets them to 0).
-+ */
-+static volatile u32 last_timer_time;
-+static volatile int accumulated_error;
-+
-+/* Most ixp4xx boards have 66.6666MHz crystals, so default to this, reset
-+ * this from the board level code if required. The following variables
-+ * must be *written* only by set_board_tick_rate
-+ */
-+static u32 board_tick_rate;
-+static u32 board_tick_per_1000; /* board_tick_rate/1000 */
-+static u32 timer_count;
-+
-+/* The following symbol may be written to change the current tick rate,
-+ * it is read by the interrupt handler and used to reload the timer.
-+ * The 'real' value (the one in use) is 'board_tick_rate' above.
-+ * NOTE: this can be tweaked to match the actual crystal on a particular
-+ * machine.
-+ */
-+volatile u32 ixp4xx_board_tick_rate = 66666600;
-+EXPORT_SYMBOL(ixp4xx_board_tick_rate);
-+
-+/* The set API may run asynchronously in the presence of interrupts,
-+ * everything it does it is both atomic and complete (notice that it
-+ * doesn't change any of the 'volatile' values). The mathematics in
-+ * here require the following values. Changing the board tick rate
-+ * implies an unknown error in the current timestamp tick count.
-+ */
-+#if IXP4XX_OST_RELOAD_MASK != 3 || IXP4XX_OST_ENABLE != 1
-+# error unexpected value for timer reload mask
-+#endif
-+static void set_board_tick_rate(u32 rate) {
-+ u32 reload;
-+
-+ /* Store the two effectively informational rate values, the
-+ * error calculation is (rate - count*HZ) (above), and rate
-+ * is changed first, this can cause a temporary error which
-+ * will be corrected on the next interrupt.
-+ */
-+ board_tick_rate = rate;
-+ board_tick_per_1000 = (rate+500)/1000;
-+
-+ /* Calculate the correct value to load into the timer countdown
-+ * register, the low two bits must be b01 (to enable the timer).
-+ * Select the top bits to be as close to the desired value as
-+ * possible.
-+ *
-+ * First find the best value, regardless of the low two bits -
-+ * this is the value used in the interrupt calculation even though
-+ * it cannot necessarily be set into the register.
-+ */
-+ timer_count = (rate + (HZ/2))/HZ;
-+
-+ /* Now the timer_ticks are being generated at this rate, calculate
-+ * an appropriate value for the register. This stores a 30 bit
-+ * value which gives a period of 4*x+1, we want:
-+ *
-+ * 4*x+1 = board_tick_rate/HZ
-+ *
-+ * This needs to be rounded to the closest 4*HZ value:
-+ *
-+ * x = ((board_tick_rate-HZ) + (4*HZ)/2) / 4*HZ
-+ * x = (board_tick_rate+HZ) / (4*HZ);
-+ */
-+ reload = (board_tick_rate + HZ) / HZ;
-+ reload = (reload & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE;
-+ *IXP4XX_OSRT1 = reload;
-
--static unsigned volatile last_jiffy_time;
-+ /* If the clock is drifing, look in syslog: */
-+ printk(KERN_INFO "IXP4xx: FREQ=%d COUNT=%d\n", rate, reload);
-+}
-
--#define CLOCK_TICKS_PER_USEC ((CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC)
-+/* This returns the time in timer ticks since the 'last_timer_time'
-+ * recorded above. Use this to avoid arithmetic errors because of
-+ * the overflow when the timer wraps.
-+ */
-+static inline u32 ixp4xx_timer_delta(void)
-+{
-+ return *IXP4XX_OSTS - last_timer_time;
-+}
-
- /* IRQs are disabled before entering here from do_gettimeofday() */
- static unsigned long ixp4xx_gettimeoffset(void)
- {
-- u32 elapsed;
--
-- elapsed = *IXP4XX_OSTS - last_jiffy_time;
-+ /* Return the offset of the current time from the last time
-+ * timer tick in microseconds. This is only used for the
-+ * gettimeofday call.
-+ *
-+ * The result of this API is at most about 20000 (for a 50Hz
-+ * HZ - 20000 uS/tick), the input delta is at most about
-+ * 1.3M - 21 bits.
-+ */
-+ u32 delta = ixp4xx_timer_delta(); /* About 21 bits max */
-+ /* return delta * 1000000 / board_tick_rate; */
-+ return (delta * 1000 + board_tick_per_1000/2) / board_tick_per_1000;
-+}
-
-- return elapsed / CLOCK_TICKS_PER_USEC;
-+/* This is the correct adjustment to the counter to compensate for an
-+ * error iff timer_count-1 <= exact_count <= timer_count+1
-+ */
-+static inline int adjustment(int error) {
-+ if (error >= HZ)
-+ return 1;
-+ else if (error <= -HZ)
-+ return -1;
-+ return 0;
- }
-
- static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
- {
-+ u32 rate;
-+ u32 count;
-+ int error;
-+
- write_seqlock(&xtime_lock);
-
- /* Clear Pending Interrupt by writing '1' to it */
- *IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND;
-
-+ /* If the board tick rate has been changed update the cached
-+ * value.
-+ */
-+ if (ixp4xx_board_tick_rate != board_tick_rate) {
-+ set_board_tick_rate(ixp4xx_board_tick_rate);
-+ accumulated_error = 0;
-+ }
-+
- /*
- * Catch up with the real idea of time
-+ *
-+ * board_tick_rate: actual ixp4xx ticks/second, read-only
-+ * accumulated_error: aggregate error/tick * HZ, read/write
-+ * timer_count: best ixp4xx ticks per timer_tick, read-only
- */
-- while ((*IXP4XX_OSTS - last_jiffy_time) > LATCH) {
-+ rate = board_tick_rate;
-+ error = accumulated_error;
-+ count = timer_count;
-+ do {
-+ u32 adjusted_count = count + adjustment(error);
-+ if (ixp4xx_timer_delta() < adjusted_count)
-+ break;
- timer_tick(regs);
-- last_jiffy_time += LATCH;
-- }
-+ last_timer_time += adjusted_count;
-+ error += rate - adjusted_count*HZ;
-+ } while (1);
-+ accumulated_error = error;
-
- write_sequnlock(&xtime_lock);
-
-@@ -281,17 +410,30 @@ static struct irqaction ixp4xx_timer_irq
- .handler = ixp4xx_timer_interrupt,
- };
-
-+u32 ixp4xx_get_board_tick_rate(void) {
-+ return board_tick_rate;
-+}
-+
-+EXPORT_SYMBOL(ixp4xx_get_board_tick_rate);
-+
-+void ixp4xx_set_board_tick_rate(u32 rate) {
-+ ixp4xx_board_tick_rate = rate;
-+}
-+
-+EXPORT_SYMBOL(ixp4xx_set_board_tick_rate);
-+
- static void __init ixp4xx_timer_init(void)
- {
- /* Clear Pending Interrupt by writing '1' to it */
- *IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND;
-
- /* Setup the Timer counter value */
-- *IXP4XX_OSRT1 = (LATCH & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE;
-+ set_board_tick_rate(ixp4xx_board_tick_rate);
-
- /* Reset time-stamp counter */
- *IXP4XX_OSTS = 0;
-- last_jiffy_time = 0;
-+ last_timer_time = 0;
-+ accumulated_error = 0;
-
- /* Connect the interrupt handler and enable the interrupt */
- setup_irq(IRQ_IXP4XX_TIMER1, &ixp4xx_timer_irq);
-@@ -337,4 +479,3 @@ void __init ixp4xx_sys_init(void)
- ARRAY_SIZE(ixp46x_devices));
- }
- }
--
---- linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000
-@@ -119,6 +119,11 @@ static void nslu2_power_off(void)
-
- static void __init nslu2_init(void)
- {
-+ /* The NSLU2 has a 33MHz crystal on board - 1.01% different
-+ * from the typical value.
-+ */
-+ ixp4xx_set_board_tick_rate(66000000);
-+
- ixp4xx_sys_init();
-
- pm_power_off = nslu2_power_off;
---- linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000
-@@ -51,7 +51,7 @@ static int nslu2_spkr_event(struct input
- }
-
- if (value > 20 && value < 32767)
-- count = (NSLU2_FREQ / (value*4)) - 1;
-+ count = (ixp4xx_get_board_tick_rate() / (value*4)) - 1;
-
- spin_lock_irqsave(&beep_lock, flags);
-
---- linux-2.6.15/include/asm-arm/arch-ixp4xx/nslu2.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/include/asm-arm/arch-ixp4xx/nslu2.h 1970-01-01 00:00:00.000000000 +0000
-@@ -38,11 +38,6 @@
- #define NSLU2_PCI_INTD_PIN 8
-
-
--/* NSLU2 Timer */
--#define NSLU2_FREQ 66000000
--#define NSLU2_CLOCK_TICK_RATE (((NSLU2_FREQ / HZ & ~IXP4XX_OST_RELOAD_MASK) + 1) * HZ)
--#define NSLU2_CLOCK_TICKS_PER_USEC ((NSLU2_CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC)
--
- /* GPIO */
-
- #define NSLU2_GPIO0 0
---- linux-2.6.15/include/asm-arm/arch-ixp4xx/timex.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/include/asm-arm/arch-ixp4xx/timex.h 1970-01-01 00:00:00.000000000 +0000
-@@ -6,10 +6,23 @@
- #include <asm/hardware.h>
-
- /*
-- * We use IXP425 General purpose timer for our timer needs, it runs at
-- * 66.66... MHz. We do a convulted calculation of CLOCK_TICK_RATE b/c the
-- * timer register ignores the bottom 2 bits of the LATCH value.
-+ * In linux/timex.h 'LATCH' is defined as CLOCK_TICK_RATE/HZ and
-+ * is the number of internal counts per timer interrupt. Thus
-+ * CLOCK_TICK_RATE is LATCH*HZ.
-+ *
-+ * The actual values of these numbers do not matter, because they
-+ * are only used to calculate ACTHZ (rate/latch as a 24.8 fixed
-+ * point number), so the value here gives a LATCH of 1 and pretty
-+ * much guarantees to flush out any off-by-one errors.
-+ *
-+ * ACTHZ is equal to HZ, because CLOCK_TICK_RATE is a multiple of
-+ * HZ, this is checked in the ixp4xx/common.c code.
- */
--#define FREQ 66666666
--#define CLOCK_TICK_RATE (((FREQ / HZ & ~IXP4XX_OST_RELOAD_MASK) + 1) * HZ)
-+#define CLOCK_TICK_RATE HZ
-
-+/* The following allow the exact board tick rate to be set and
-+ * discovered. The value should be exactly twice the frequency
-+ * (in Hz) of the onboard crystal.
-+ */
-+extern u32 ixp4xx_get_board_tick_rate(void);
-+extern void ixp4xx_set_board_tick_rate(u32 new_rate);
diff --git a/packages/linux/nslu2-kernel/2.6.15/defconfig b/packages/linux/nslu2-kernel/2.6.15/defconfig
deleted file mode 100644
index 9f7bf76471..0000000000
--- a/packages/linux/nslu2-kernel/2.6.15/defconfig
+++ /dev/null
@@ -1,1617 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.15
-# Mon Nov 14 10:44:43 2005
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=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 is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-# CONFIG_KALLSYMS is not set
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-# CONFIG_BASE_FULL is not set
-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_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=1
-
-#
-# 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
-#
-
-#
-# 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_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-CONFIG_ARCH_IXP4XX=y
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 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_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
-
-#
-# Intel IXP4xx Implementation Options
-#
-
-#
-# IXP4xx Platforms
-#
-CONFIG_MACH_NSLU2=y
-# CONFIG_ARCH_AVILA is not set
-# CONFIG_ARCH_ADI_COYOTE is not set
-# CONFIG_ARCH_IXDP425 is not set
-# CONFIG_MACH_IXDPG425 is not set
-# CONFIG_MACH_IXDP465 is not set
-# CONFIG_ARCH_PRPMC1100 is not set
-# CONFIG_MACH_GTWX5715 is not set
-
-#
-# IXP4xx Options
-#
-CONFIG_IXP4XX_INDIRECT_PCI=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
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_XSCALE_PMU=y
-CONFIG_DMABOUNCE=y
-
-#
-# Bus support
-#
-CONFIG_ISA_DMA_API=y
-CONFIG_PCI=y
-# CONFIG_PCI_LEGACY_PROC is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_PREEMPT is not set
-# CONFIG_NO_IDLE_HZ 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_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="root=/dev/mtdblock4 rw rootfstype=jffs2 mem=32M@0x00000000 init=/linuxrc rtc-x1205.hctosys=1 rtc-x1205.probe=0,0x6f 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
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-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_TUNNEL=m
-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_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-
-#
-# 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_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=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_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_PHYSDEV=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_REALM=m
-# CONFIG_IP_NF_MATCH_SCTP is not set
-# CONFIG_IP_NF_MATCH_DCCP is not set
-CONFIG_IP_NF_MATCH_COMMENT=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-# CONFIG_IP_NF_MATCH_STRING is not set
-CONFIG_IP_NF_FILTER=m
-# CONFIG_IP_NF_TARGET_REJECT is not set
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_TARGET_NFQUEUE is not set
-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_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_CLASSIFY=m
-# CONFIG_IP_NF_TARGET_TTL is not set
-# CONFIG_IP_NF_RAW 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
-
-#
-# 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
-# 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=y
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# 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
-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 is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-
-#
-# 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 is not set
-# 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_XIP 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_BLKMTD 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 is not set
-# 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_INITRD=y
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE 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=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 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_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 is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_FC is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-CONFIG_SCSI_QLA2XXX=y
-# CONFIG_SCSI_QLA21XX is not set
-# CONFIG_SCSI_QLA22XX is not set
-# CONFIG_SCSI_QLA2300 is not set
-# CONFIG_SCSI_QLA2322 is not set
-# CONFIG_SCSI_QLA6312 is not set
-# CONFIG_SCSI_QLA24XX 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_RAID5=m
-CONFIG_MD_RAID6=m
-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_MACLIST=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_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 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE 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=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# CONFIG_AIRO 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_HOSTAP 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 is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# 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=m
-# 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_NSLU2_BEEPER=m
-# 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 is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_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=y
-CONFIG_LEGACY_PTY_COUNT=16
-
-#
-# 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=y
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC 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=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_IXP4XX=y
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_SCx200_ACB 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 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_RTC_X1205_I2C 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
-
-#
-# Hardware Monitoring support
-#
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID 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_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_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_W83781D 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_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-CONFIG_VIDEO_BT848=m
-# CONFIG_VIDEO_SAA6588 is not set
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=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_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_EM28XX is not set
-CONFIG_VIDEO_OVCAMCHIP=m
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO 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
-
-#
-# Graphics support
-#
-# 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_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_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_CS46XX is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_YMFPCI is not set
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_CMIPCI 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_MAESTRO3 is not set
-# CONFIG_SND_FM801 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_SONICVIBES is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_HDA_INTEL 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=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 is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-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_ONETOUCH is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# 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_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_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
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC 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_W9968CF is not set
-CONFIG_USB_PWC=m
-
-#
-# 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_ZD1201 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_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA 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_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_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_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-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_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
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_CLASS=y
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-CONFIG_RTC_DRV_X1205=y
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_TEST 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_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=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_RELAYFS_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_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=y
-# CONFIG_JFFS2_LITTLE_ENDIAN 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=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_XATTR=y
-CONFIG_CIFS_POSIX=y
-# 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_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_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_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 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/nslu2-kernel/2.6/40-scsi-idle.patch b/packages/linux/nslu2-kernel/2.6/40-scsi-idle.patch
deleted file mode 100644
index e04996e2a8..0000000000
--- a/packages/linux/nslu2-kernel/2.6/40-scsi-idle.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-diff -ur linux-2.6.12.2/drivers/scsi/sd.c linux-2.6.12.2_scsi-idle/drivers/scsi/sd.c
---- linux-2.6.12.2/drivers/scsi/sd.c 2005-08-27 06:12:31.000000000 +0200
-+++ linux-2.6.12.2_scsi-idle/drivers/scsi/sd.c 2005-08-27 06:26:50.000000000 +0200
-@@ -266,6 +266,9 @@
- "count=%d\n", disk->disk_name,
- (unsigned long long)block, this_count));
-
-+ /* Update idle-since time */
-+ sdp->idle = jiffies;
-+
- if (!sdp || !scsi_device_online(sdp) ||
- block + rq->nr_sectors > get_capacity(disk)) {
- SCSI_LOG_HLQUEUE(2, printk("Finishing %ld sectors\n",
-@@ -600,6 +603,8 @@
- case SCSI_IOCTL_GET_IDLUN:
- case SCSI_IOCTL_GET_BUS_NUMBER:
- return scsi_ioctl(sdp, cmd, p);
-+ case SCSI_IOCTL_IDLE:
-+ return (jiffies - sdp->idle) / HZ + 1;
- default:
- error = scsi_cmd_ioctl(filp, disk, cmd, p);
- if (error != -ENOTTY)
-diff -ur linux-2.6.12.2/include/scsi/scsi_device.h linux-2.6.12.2_scsi-idle/include/scsi/scsi_device.h
---- linux-2.6.12.2/include/scsi/scsi_device.h 2005-08-27 06:12:44.000000000 +0200
-+++ linux-2.6.12.2_scsi-idle/include/scsi/scsi_device.h 2005-08-27 06:27:09.000000000 +0200
-@@ -125,6 +125,7 @@
- atomic_t ioerr_cnt;
-
- int timeout;
-+ unsigned long idle; /* scsi idle time in jiffers */
-
- struct device sdev_gendev;
- struct class_device sdev_classdev;
-diff -ur linux-2.6.12.2/include/scsi/scsi_ioctl.h linux-2.6.12.2_scsi-idle/include/scsi/scsi_ioctl.h
---- linux-2.6.12.2/include/scsi/scsi_ioctl.h 2005-08-27 06:12:44.000000000 +0200
-+++ linux-2.6.12.2_scsi-idle/include/scsi/scsi_ioctl.h 2005-08-28 17:32:17.000000000 +0200
-@@ -7,6 +7,7 @@
- #define SCSI_IOCTL_SYNC 4 /* Request synchronous parameters */
- #define SCSI_IOCTL_START_UNIT 5
- #define SCSI_IOCTL_STOP_UNIT 6
-+#define SCSI_IOCTL_IDLE 4746 /* get idle time in jiffies */
- /* The door lock/unlock constants are compatible with Sun constants for
- the cdrom */
- #define SCSI_IOCTL_DOORLOCK 0x5380 /* lock the eject mechanism */
diff --git a/packages/linux/nslu2-kernel/2.6/91-maclist.patch b/packages/linux/nslu2-kernel/2.6/91-maclist.patch
deleted file mode 100644
index 27af1ea639..0000000000
--- a/packages/linux/nslu2-kernel/2.6/91-maclist.patch
+++ /dev/null
@@ -1,377 +0,0 @@
---- linux-2.6.15/include/net/maclist.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/include/net/maclist.h 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,23 @@
-+#ifndef _MACLIST_H
-+#define _MACLIST_H 1
-+/*
-+ * Interfaces to the MAC repository
-+ */
-+/*
-+ * Add a single entry, returns 0 on success else an error
-+ * code. Must *not* be called from an interrupt handler.
-+ */
-+extern int maclist_add(const u8 id_to_add[6]);
-+
-+/*
-+ * Return the current entry count (valid in any context).
-+ */
-+extern int maclist_count(void);
-+
-+/*
-+ * Return the ID from the n'th entry (valid in any context),
-+ * returns 0 on success, -EINVAL if 'n' is out of range.
-+ */
-+extern int maclist_read(u8 (*buffer_for_id)[6], int index_of_id_to_return);
-+
-+#endif /*_MACLIST_H*/
---- linux-2.6.15/drivers/net/maclist.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/net/maclist.c 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,314 @@
-+/*
-+ * drivers/net/maclist.c
-+ *
-+ * a simple driver to remember ethernet MAC values
-+ *
-+ * Some Ethernet hardware implementations have no built-in
-+ * storage for allocated MAC values - an example is the Intel
-+ * IXP420 chip which has support for Ethernet but no defined
-+ * way of storing allocated MAC values. With such hardware
-+ * different board level implementations store the allocated
-+ * MAC (or MACs) in different ways. Rather than put board
-+ * level code into a specific Ethernet driver this driver
-+ * provides a generally accessible repository for the MACs
-+ * which can be written by board level code and read by the
-+ * driver.
-+ *
-+ * The implementation also allows user level programs to
-+ * access the MAC information in /proc/net/maclist. This is
-+ * useful as it allows user space code to use the MAC if it
-+ * is not used by a built-in driver.
-+ *
-+ * Copyright (C) 2005 John Bowler
-+ * Author: John Bowler <jbowler@acm.org>
-+ * Maintainers: http://www.nslu2-linux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * version 2 as published by the Free Software Foundation.
-+ *
-+ * External interfaces:
-+ * Interfaces to linux kernel (and modules)
-+ * maclist_add: add a single MAC
-+ * maclist_count: total number of MACs stored
-+ * maclist_read: read a MAC 0..(maclist_count-1)
-+ */
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/etherdevice.h>
-+#include <linux/proc_fs.h>
-+#include <linux/errno.h>
-+
-+#include <net/maclist.h>
-+
-+#define MACLIST_NAME "maclist"
-+
-+MODULE_AUTHOR("John Bowler <jbowler@acm.org>");
-+MODULE_DESCRIPTION("MAC list repository");
-+MODULE_LICENSE("GPL");
-+
-+typedef struct maclist_entry {
-+ struct maclist_entry *next; /* Linked list, first first */
-+ u8 id[6]; /* 6 byte Ethernet MAC */
-+} maclist_entry_t;
-+
-+/* Access to this list is possible at any time - entries in
-+ * the list are never destroyed. Modification of the list is
-+ * safe only from the init code (i.e. modification must be
-+ * single threaded), but read from an interrupt at the same
-+ * time is possible and safe.
-+ */
-+static maclist_entry_t *maclist_list = 0;
-+
-+/*
-+ * External interfaces.
-+ *
-+ * Add a single entry, returns 0 on success else an error
-+ * code. Must be single threaded.
-+ */
-+int maclist_add(const u8 new_id[6]) {
-+ maclist_entry_t *new_entry, **tail;
-+
-+ if (new_id == 0 || !is_valid_ether_addr(new_id)) {
-+ printk(KERN_ERR MACLIST_NAME ": invalid ethernet address\n");
-+ return -EINVAL;
-+ }
-+ new_entry = kmalloc(sizeof *new_entry, GFP_KERNEL);
-+ if (new_entry == 0)
-+ return -ENOMEM;
-+ new_entry->next = 0;
-+ memcpy(new_entry->id, new_id, sizeof new_entry->id);
-+
-+ tail = &maclist_list;
-+ while (*tail != 0)
-+ tail = &(*tail)->next;
-+ *tail = new_entry;
-+ return 0;
-+}
-+EXPORT_SYMBOL(maclist_add);
-+
-+/*
-+ * Return the current entry count (valid in any context).
-+ */
-+int maclist_count(void) {
-+ maclist_entry_t *tail = maclist_list;
-+ int count = 0;
-+
-+ while (tail != 0) {
-+ tail = tail->next;
-+ ++count;
-+ }
-+
-+ return count;
-+}
-+EXPORT_SYMBOL(maclist_count);
-+
-+/*
-+ * Return the ID from the n'th entry (valid in any context),
-+ * returns 0 on success, -EINVAL if 'n' is out of range.
-+ */
-+int maclist_read(u8 (*id)[6], int n) {
-+ maclist_entry_t *entry = maclist_list;
-+
-+ while (n > 0 && entry != 0) {
-+ --n;
-+ entry = entry->next;
-+ }
-+
-+ if (n == 0 && entry != 0) {
-+ memcpy(id, entry->id, sizeof *id);
-+ return 0;
-+ }
-+
-+ printk(KERN_ERR MACLIST_NAME ": id does not exist\n");
-+ return -EINVAL;
-+}
-+EXPORT_SYMBOL(maclist_read);
-+
-+/*
-+ * Parameter parsing. The option string is a list of MAC
-+ * addresses, comma separated. (The parsing really should
-+ * be somewhere central...)
-+ */
-+static int __init maclist_setup(char *param) {
-+ int bytes = 0, seen_a_digit = 0;
-+ u8 id[6];
-+
-+ memset(id, 0, sizeof id);
-+
-+ if (param) do {
-+ int digit = -1;
-+ switch (*param) {
-+ case '0': digit = 0; break;
-+ case '1': digit = 1; break;
-+ case '2': digit = 2; break;
-+ case '3': digit = 3; break;
-+ case '4': digit = 4; break;
-+ case '5': digit = 5; break;
-+ case '6': digit = 6; break;
-+ case '7': digit = 7; break;
-+ case '8': digit = 8; break;
-+ case '9': digit = 9; break;
-+ case 'a': case 'A': digit = 10; break;
-+ case 'b': case 'B': digit = 11; break;
-+ case 'c': case 'C': digit = 12; break;
-+ case 'd': case 'D': digit = 13; break;
-+ case 'e': case 'E': digit = 14; break;
-+ case 'f': case 'F': digit = 15; break;
-+ case ':':
-+ if (seen_a_digit)
-+ bytes = (bytes+1) & ~1;
-+ else
-+ bytes += 2; /* i.e. ff::ff is ff:00:ff */
-+ seen_a_digit = 0;
-+ break;
-+ case 0:
-+ if (bytes == 0) /* nothing new seen so far */
-+ return 0;
-+ /*fall through*/
-+ case ',': case ';':
-+ if (bytes > 0)
-+ bytes = 12; /* i.e. all trailing bytes 0 */
-+ break;
-+ default:
-+ printk(KERN_ERR MACLIST_NAME ": invalid character <%c[%d]>\n",
-+ *param, *param);
-+ return -EINVAL;
-+ }
-+
-+ if (digit >= 0) {
-+ id[bytes>>1] = (id[bytes>>1] << 4) + digit; break;
-+ ++bytes;
-+ seen_a_digit = 1;
-+ }
-+
-+ if (bytes >= 12) {
-+ int rc = maclist_add(id);
-+ if (rc)
-+ return rc;
-+ bytes = 0;
-+ seen_a_digit = 0;
-+ memset(id, 0, sizeof id);
-+ if (*param == 0)
-+ return 0;
-+ }
-+ ++param;
-+ } while (1);
-+
-+ return 0;
-+}
-+
-+/*
-+ * procfs support, if compiled in.
-+ */
-+#ifdef CONFIG_PROC_FS
-+/*
-+ * Character device read
-+ */
-+static int maclist_getchar(off_t n) {
-+ static char xdigit[16] = "0123456789abcdef";
-+ maclist_entry_t *head = maclist_list;
-+ int b;
-+
-+ do {
-+ if (head == 0)
-+ return -1;
-+ if (n < 18)
-+ break;
-+ head = head->next;
-+ n -= 18;
-+ } while (1);
-+
-+ if (n == 17)
-+ return '\n';
-+
-+ b = n/3;
-+ switch (n - b*3) {
-+ case 0: return xdigit[head->id[b] >> 4];
-+ case 1: return xdigit[head->id[b] & 0xf];
-+ default: return ':';
-+ }
-+}
-+
-+/*
-+ * The extensively undocumented proc_read_t callback is implemented here.
-+ * Go look in fs/proc/generic.c:
-+ *
-+ * Prototype:
-+ * int f(char *buffer, char **start, off_t offset,
-+ * int count, int *peof, void *dat)
-+ *
-+ * Assume that the buffer is "count" bytes in size.
-+ *
-+ * 2) Set *start = an address within the buffer.
-+ * Put the data of the requested offset at *start.
-+ * Return the number of bytes of data placed there.
-+ * If this number is greater than zero and you
-+ * didn't signal eof and the reader is prepared to
-+ * take more data you will be called again with the
-+ * requested offset advanced by the number of bytes
-+ * absorbed.
-+ */
-+static int maclist_proc_read(char *buffer, char **start, off_t offset,
-+ int count, int *peof, void *dat) {
-+ int total;
-+
-+ *start = buffer;
-+ total = 0;
-+
-+ while (total < count) {
-+ int ch = maclist_getchar(offset++);
-+ if (ch == -1) {
-+ *peof = 1;
-+ break;
-+ }
-+ *buffer++ = ch;
-+ ++total;
-+ }
-+
-+ return total;
-+}
-+#endif
-+
-+/*
-+ * Finally, the init/exit functions.
-+ */
-+static void __exit maclist_exit(void)
-+{
-+ maclist_entry_t *list;
-+
-+ remove_proc_entry(MACLIST_NAME, proc_net);
-+
-+ list = maclist_list;
-+ maclist_list = 0;
-+
-+ while (list != 0) {
-+ maclist_entry_t *head = list;
-+ list = head->next;
-+ kfree(head);
-+ }
-+}
-+
-+#ifdef MODULE
-+static char ids[256];
-+module_param_string(ids, ids, sizeof ids, 0);
-+MODULE_PARM_DESC(ids, "comma separated list of MAC ids\n");
-+#else
-+__setup("maclist_ids=", maclist_setup);
-+#endif
-+
-+static int __init maclist_init(void)
-+{
-+# ifdef MODULE
-+ if (ids[0])
-+ maclist_setup(ids);
-+# endif
-+
-+ /* Ignore failure, the module will still work. */
-+ (void)create_proc_read_entry(MACLIST_NAME, S_IRUGO, proc_net, maclist_proc_read, NULL);
-+
-+ return 0;
-+}
-+
-+module_init(maclist_init);
-+module_exit(maclist_exit);
---- linux-2.6.15/drivers/net/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/net/Makefile 1970-01-01 00:00:00.000000000 +0000
-@@ -70,6 +70,7 @@ obj-$(CONFIG_RIONET) += rionet.o
- # end link order section
- #
-
-+obj-$(CONFIG_MACLIST) += maclist.o
- obj-$(CONFIG_MII) += mii.o
- obj-$(CONFIG_PHYLIB) += phy/
-
---- linux-2.6.15/drivers/net/Kconfig 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/net/Kconfig 1970-01-01 00:00:00.000000000 +0000
-@@ -166,6 +166,21 @@ config NET_ETHERNET
- kernel: saying N will just cause the configurator to skip all
- the questions about Ethernet network cards. If unsure, say N.
-
-+config MACLIST
-+ tristate "Ethernet MAC repository"
-+ depends on NET_ETHERNET
-+ help
-+ Some ethernet controllers have no built-in way of obtaining an
-+ appropriate Ethernet MAC address. Such controllers have to be
-+ initialised in a board-specific way, depending on how the allocated
-+ MAC is stored. The MAC repository provides a set of APIs and a
-+ proc entry (/proc/net/maclist) to store MAC values from the board
-+ so that such drivers can obtain a MAC address without board-specific
-+ code. You do not need to enable this device - it will be selected
-+ automatically by any device which requires it. It is only useful
-+ to enable it manually when building a device driver independently
-+ of the kernel build.
-+
- config MII
- tristate "Generic Media Independent Interface device support"
- depends on NET_ETHERNET
diff --git a/packages/linux/nslu2-kernel/2.6/92-nslu2-maclist.patch b/packages/linux/nslu2-kernel/2.6/92-nslu2-maclist.patch
deleted file mode 100644
index c8b8a9bede..0000000000
--- a/packages/linux/nslu2-kernel/2.6/92-nslu2-maclist.patch
+++ /dev/null
@@ -1,80 +0,0 @@
---- linux-2.6.15/arch/arm/mach-ixp4xx/Kconfig 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/mach-ixp4xx/Kconfig 1970-01-01 00:00:00.000000000 +0000
-@@ -11,8 +11,8 @@ comment "IXP4xx Platforms"
- # This entry is placed on top because otherwise it would have
- # been shown as a submenu.
- config MACH_NSLU2
-- bool
-- prompt "NSLU2" if !(MACH_IXDP465 || MACH_IXDPG425 || ARCH_IXDP425 || ARCH_ADI_COYOTE || ARCH_AVILA || ARCH_IXCDP1100 || ARCH_PRPMC1100 || MACH_GTWX5715)
-+ bool "NSLU2"
-+ select MACLIST
- help
- Say 'Y' here if you want your kernel to support Linksys's
- NSLU2 NAS device. For more information on this platform,
---- linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000
-@@ -16,11 +16,14 @@
- #include <linux/kernel.h>
- #include <linux/serial.h>
- #include <linux/serial_8250.h>
-+#include <linux/mtd/mtd.h>
-
- #include <asm/mach-types.h>
- #include <asm/mach/arch.h>
- #include <asm/mach/flash.h>
-
-+#include <net/maclist.h>
-+
- static struct flash_platform_data nslu2_flash_data = {
- .map_name = "cfi_probe",
- .width = 2,
-@@ -112,6 +115,37 @@ static void nslu2_power_off(void)
- gpio_line_set(NSLU2_PO_GPIO, IXP4XX_GPIO_HIGH);
- }
-
-+/*
-+ * When the RedBoot partition is added the MAC address is read from
-+ * it.
-+ */
-+void flash_add(struct mtd_info *mtd) {
-+ if (strcmp(mtd->name, "RedBoot") == 0) {
-+ size_t retlen;
-+ u_char mac[6];
-+
-+ /* The MAC is at a known offset... */
-+ if (mtd->read(mtd, 0x3FFB0, 6, &retlen, mac) == 0 && retlen == 6) {
-+ printk(KERN_INFO "NSLU2 MAC: %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
-+ mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
-+ maclist_add(mac);
-+ } else {
-+ printk(KERN_ERR "NSLU2 MAC: read failed\n");
-+ }
-+ }
-+}
-+
-+/*
-+ * Nothing to do on remove at present.
-+ */
-+void flash_remove(struct mtd_info *mtd) {
-+}
-+
-+struct mtd_notifier flash_notifier = {
-+ .add = flash_add,
-+ .remove = flash_remove,
-+};
-+
- static void __init nslu2_init(void)
- {
- /* The NSLU2 has a 33MHz crystal on board - 1.01% different
-@@ -119,6 +153,11 @@ static void __init nslu2_init(void)
- */
- ixp4xx_set_board_tick_rate(66000000);
-
-+ /* The flash has an ethernet MAC embedded in it which we need,
-+ * that is all this notifier does.
-+ */
-+ register_mtd_user(&flash_notifier);
-+
- ixp4xx_sys_init();
-
- pm_power_off = nslu2_power_off;
diff --git a/packages/linux/nslu2-kernel/2.6/compile-switches.patch b/packages/linux/nslu2-kernel/2.6/compile-switches.patch
deleted file mode 100644
index 4b7a688313..0000000000
--- a/packages/linux/nslu2-kernel/2.6/compile-switches.patch
+++ /dev/null
@@ -1,58 +0,0 @@
---- linux-2.6.11/arch/arm/Makefile.orig 2005-03-20 15:02:07.587138712 -0800
-+++ linux-2.6.11/arch/arm/Makefile 2005-03-20 15:10:36.546765088 -0800
-@@ -33,6 +33,12 @@
- AFLAGS += -mlittle-endian
- endif
-
-+ifeq ($(CONFIG_ARM_THUMB_INTERWORK),y)
-+CFLAGS += -mthumb-interwork
-+else
-+CFLAGS += -mno-thumb-interwork
-+endif
-+
- comma = ,
-
- # This selects which instruction set is used.
-@@ -43,6 +49,8 @@
- arch-$(CONFIG_CPU_32v5) :=-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4)
- arch-$(CONFIG_CPU_32v4) :=-D__LINUX_ARM_ARCH__=4 -march=armv4
- arch-$(CONFIG_CPU_32v3) :=-D__LINUX_ARM_ARCH__=3 -march=armv3
-+# The following overrides the CPU_32v5 setting if specified
-+arch-$(CONFIG_ARCH_XSCALE) :=-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=xscale,-march=armv5te)
-
- # This selects how we optimise for the processor.
- tune-$(CONFIG_CPU_ARM610) :=-mtune=arm610
---- linux-2.6.11/arch/arm/mm/Kconfig.orig 2005-03-20 14:54:07.927058128 -0800
-+++ linux-2.6.11/arch/arm/mm/Kconfig 2005-03-20 15:01:26.727350344 -0800
-@@ -366,6 +366,31 @@
-
- If you don't know what this all is, saying Y is a safe choice.
-
-+config ARM_THUMB_INTERWORK
-+ bool "Support Thumb code within the kernel"
-+ depends on CPU_ARM720T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020 || CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || CPU_XSCALE || CPU_V6
-+ default n
-+ help
-+ Say Y to compile the whole kernel with support for the interworking
-+ of the 16 bit thumb instruction set and 32 bit ARM instruction set.
-+
-+ You only need this if some parts of the kernel will be compiled
-+ as thumb code, this is not usual. It increases the total kernel
-+ size by about 3%.
-+
-+config ARCH_XSCALE
-+ bool "Use -march=xscale in preference to -march=armv5te"
-+ depends on CPU_XSCALE
-+ default y
-+ help
-+ Say yes to ask gcc to use the xscale architecture (instruction set)
-+ in preference to armv5te. This allows gcc to use the extra xscale
-+ instructions but means the code will not run on a standard (non-xscale)
-+ armv5te. At present this makes no difference - gcc 3.4.3 does not
-+ generate any xscale specific instructions - however gcc 3.4.3 does
-+ generate slightly more optimal instructions if this is specified (this
-+ is an error inside gcc 3.4.3 which should be fixed in 4.1.)
-+
- config CPU_BIG_ENDIAN
- bool "Build big-endian kernel"
- depends on ARCH_SUPPORTS_BIG_ENDIAN
diff --git a/packages/linux/nslu2-kernel/2.6/ixp4xx-regs.patch b/packages/linux/nslu2-kernel/2.6/ixp4xx-regs.patch
deleted file mode 100644
index 32f7e3ccb8..0000000000
--- a/packages/linux/nslu2-kernel/2.6/ixp4xx-regs.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- linux-2.6.11/.pc/2.6.patch/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 2005-03-01 23:37:49.000000000 -0800
-+++ linux-2.6.11/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 2005-06-17 17:51:32.569981939 -0700
-@@ -52,7 +52,7 @@
- * Expansion BUS Configuration registers
- */
- #define IXP4XX_EXP_CFG_BASE_PHYS (0xC4000000)
--#define IXP4XX_EXP_CFG_BASE_VIRT (0xFFBFD000)
-+#define IXP4XX_EXP_CFG_BASE_VIRT (0xFFBFE000)
- #define IXP4XX_EXP_CFG_REGION_SIZE (0x00001000)
-
- /*
diff --git a/packages/linux/nslu2-kernel/2.6/nslu2-io_rpbutton.patch b/packages/linux/nslu2-kernel/2.6/nslu2-io_rpbutton.patch
deleted file mode 100644
index b5ce101d68..0000000000
--- a/packages/linux/nslu2-kernel/2.6/nslu2-io_rpbutton.patch
+++ /dev/null
@@ -1,139 +0,0 @@
---- nslu2-io.c.old 2da1d3f5c0aa0804c5769588337077ddcb35c5e9
-+++ linux-2.6.12.2/arch/arm/mach-ixp4xx/nslu2-io.c e895da638b4aae16a11fafe52ae0b063645a9a12
-@@ -158,6 +158,8 @@
- #define LED_DISK2 3
- #define LED_ALL 4
-
-+static int nslu2_shutdown_in_progress = 0;
-+
- static unsigned long init_jiffy = 0; //jiffies at init time
- static unsigned long rb_presses = 0; //number of reset button presses
- static unsigned long ontime = 50;
-@@ -503,40 +505,20 @@
- static irqreturn_t n2pb_handler (int irq, void *dev_id, struct pt_regs *regs)
- {
- void *ret;
--
-- wake_up(&n2pb_waitq);
-- remove_proc_entry(PWR_OFF_STR, NULL); //no parent
-- n2_buzz(N2_BEEP_PITCH_MED, N2_BEEP_DUR_MED);
-- ret = create_proc_entry(PWR_OFF_STR, 0, NULL);
-- nslu2_io_debug((KERN_DEBUG "cpe ret = %p\n", ret));
--
--// WARNING: This is RUDE...it unconditionally pulls the power plug.
--// Your data will be at risk...since this is just a test system
--// I am leaving it enabled...eventually userland needs to get the
--// message, do an orderly shutdown and use an ioctl or something in
--// /proc/powerdowm to actually have us pull the plug.
--
-- machine_power_off();
--
-+ if (!nslu2_shutdown_in_progress++) {
-+ wake_up(&n2pb_waitq);
-+ remove_proc_entry(PWR_OFF_STR, NULL); //no parent
-+ n2_buzz(N2_BEEP_PITCH_HIGH, N2_BEEP_DUR_SHORT); // Short, high-pitched "OK"
-+ ret = create_proc_entry(PWR_OFF_STR, 0, NULL);
-+ nslu2_io_debug((KERN_DEBUG "Powerbutton pressed. Shutting down. cpe ret = %p\n", ret));
-+ kill_proc(1,SIGINT,1); // Signal init to shut down
-+ } else {
-+ n2_buzz(N2_BEEP_PITCH_LOW, N2_BEEP_DUR_MED); // Make a scary noise!
-+ nslu2_io_debug((KERN_DEBUG "Powerbutton pressed while already in shutdown")); // Whine!
-+ }
- return IRQ_HANDLED;
- }
-
--//==================================================================================================
--//
--//static void do_rb_timeout(unsigned long data)
--//{
--// int i;
--//
--// for (i = 0; i < rb_presses; i++)
--// n2_buzz(N2_BEEP_PITCH_MED,N2_BEEP_DUR_SHORT);
--// return;
--//}
--//
--//==================================================================================================
--// does nothing -- waiting for userland to define
--// This thing is sorta braindead...edge triggered IRQs aren't available in the drivers yet...so
--// we hang in a loop until the button is no longer pressed
--
- struct testr {
- int ctl;
- long param;
-@@ -544,72 +526,11 @@
-
- static irqreturn_t n2rb_handler (int irq, void *dev_id, struct pt_regs *regs)
- {
-+// This doesn't reset the NSLU2. It powers it off. Close enough, since reset is unreliable
-
-- static struct testr test[] = {
-- { N2LM_ALL_OFF,0 },
-- { N2LM_ON,0 },
-- { N2LM_OFF,0 },
-- { N2LM_ON,1 },
-- { N2LM_ALL_OFF,1 },
-- { N2LM_ON,2 },
-- { N2LM_OFF,2 },
-- { N2LM_ON,3 },
-- { N2LM_OFF,3 },
-- { N2LM_BLINK,0 },
-- { N2LM_OFF,0 },
-- { N2LM_BLINK,1 },
-- { N2LM_OFF,1 },
-- { N2LM_BLINK,2 },
-- { N2LM_OFF,2 },
-- { N2LM_BLINK,3 },
-- { N2LM_OFF,3 },
-- { N2LM_ALL_OFF,0 },
-- { N2LM_ALT,1 },
-- { N2LM_OFF,1 },
-- { N2LM_ALL_ON,0 }
-- };
--
-- nslu2_io_debug(("Reset Entry IRQ =%d Presses = %d Jiffies = %08lx\tIO = %x\tIOW = %x\n", irq, rb_presses, jiffies, (int)_IO('M',rb_presses), (int)_IOW('M',rb_presses,long)));
--
- wake_up(&n2rb_waitq);
-- while ((*IXP4XX_GPIO_GPINR & GPIO_RB_BM) == 0)
-- ; //wait for button release
--
-- if (rb_presses > 20)
-- rb_presses = 0;
-- tone = (rb_presses * 50) + 200;
-- ontime = (rb_presses*10) + 100;
-- offtime = 500 - (rb_presses*20);
-- nslu2_io_debug(("Ontime = %d\tOfftime = %d\tTone = %d\n",ontime,offtime,tone));
-- rb_presses++;
--
-- n2bz_ioctl(NULL,NULL, N2BZ_BEEPS, rb_presses);
-- n2lm_ioctl(NULL,NULL, test[rb_presses].ctl, test[rb_presses].param);
--// if (rb_presses == 0) {
--// init_jiffy = jiffies;
--// init_timer (&n2rb_timer);
--// n2rb_timer.function = do_rb_timeout;
--// };
--//
--// if (rb_presses == 8)
--// rb_presses = 0;
--// if (rb_presses & 1)
--// n2lm_ledon(test[rb_presses]);
--// else
--// n2lm_ledoff(test[rb_presses]);
--//
--// n2rb_timer.expires = (jiffies + RB_DELAY);
--// add_timer (&n2rb_timer);
--// if (rb_presses < 5) {
--// if (rb_presses > 0)
--// n2lm_ledoff(rb_presses);
--// n2lm_ledon(++rb_presses);
--// n2lm_timer_start(rb_presses);
--// };
--
-- nslu2_io_debug((KERN_DEBUG "Reset Exit IRQ=%d Presses= %d Jiffies= %08lx\n", irq, rb_presses, jiffies));
-- return IRQ_HANDLED;
--
-+ machine_power_off();
-+ return IRQ_HANDLED; // So we don't get a nobody cared error :-P
- }
-
- //==================================================================================================
diff --git a/packages/linux/nslu2-kernel/2.6/thumb-swi.patch b/packages/linux/nslu2-kernel/2.6/thumb-swi.patch
deleted file mode 100644
index 2e73bb103f..0000000000
--- a/packages/linux/nslu2-kernel/2.6/thumb-swi.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-# This patch changes the thumb swi handling for any thumb swi with
-# an immediate value != 0, those swis are mapped into the arm
-# specific swis. This implements a thumb breakpoint swi.
---- linux-2.6.12.2/arch/arm/kernel/entry-common.S.orig 2005-09-19 12:48:42.323365573 -0700
-+++ linux-2.6.12.2/arch/arm/kernel/entry-common.S 2005-09-19 13:31:19.004247358 -0700
-@@ -137,8 +137,11 @@
- */
- #ifdef CONFIG_ARM_THUMB
- tst r8, #PSR_T_BIT @ this is SPSR from save_user_regs
-- addne scno, r7, #__NR_SYSCALL_BASE @ put OS number in
-- ldreq scno, [lr, #-4]
-+ ldrneh ip, [lr, #-2] @ thumb swi instruction
-+ ldreq scno, [lr, #-4] @ arm swi instruction
-+ addne scno, r7, #__NR_SYSCALL_BASE @ put OS number in to thumb r7 value
-+ bicnes ip, ip, #0xff00 @ clear thumb swi bits
-+ addne scno, ip, #__ARM_NR_BASE @ thumb swi0->r7, swi!0->arm swi
- #else
- ldr scno, [lr, #-4] @ get SWI instruction
- #endif
diff --git a/packages/linux/nslu2-kernel/2.6/timer.patch b/packages/linux/nslu2-kernel/2.6/timer.patch
deleted file mode 100644
index 6279746e64..0000000000
--- a/packages/linux/nslu2-kernel/2.6/timer.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-# Fix for the NSLU2 timer problem (tickadj 10101.01 when it should be 10000)
-# Also contains a fix for the more generate problem on the ixp4xx in that the
-# Intel spec says to use a 33.33MHz crystal, not 33.333333Mhz
-
---- linux-2.6.12.2/include/asm-arm/arch-ixp4xx/timex.h.orig 2005-08-05 11:02:09.872690723 -0700
-+++ linux-2.6.12.2/include/asm-arm/arch-ixp4xx/timex.h 2005-08-05 11:45:08.786971567 -0700
-@@ -7,7 +7,14 @@
-
- /*
- * We use IXP425 General purpose timer for our timer needs, it runs at
-- * 66.66... MHz
-+ * 66.66 MHz (exactly) by the Intel specification.
- */
--#define CLOCK_TICK_RATE (66666666)
--
-+#if 0
-+#define CLOCK_TICK_RATE (66660000)
-+#else
-+/*
-+ * Unfortunately the NSLU2 has a 33MHz crystal, so the rate is not the
-+ * specified one.
-+ */
-+#define CLOCK_TICK_RATE (66000000)
-+#endif
diff --git a/packages/linux/nslu2-kernel/2.6/x1205-rtc.patch b/packages/linux/nslu2-kernel/2.6/x1205-rtc.patch
deleted file mode 100644
index 913f44e2ae..0000000000
--- a/packages/linux/nslu2-kernel/2.6/x1205-rtc.patch
+++ /dev/null
@@ -1,38 +0,0 @@
---- linux-2.6.11/.pc/2.6.patch/drivers/i2c/chips/Kconfig 2005-06-17 17:51:28.635578329 -0700
-+++ linux-2.6.11/drivers/i2c/chips/Kconfig 2005-06-17 17:51:32.565982545 -0700
-@@ -430,6 +430,15 @@
-
- This driver can also be built as a module. If so, the module
- will be called isp1301_omap.
-+config SENSORS_X1205
-+ tristate "Xicor X1205 RTC chip"
-+ depends on I2C && EXPERIMENTAL
-+ select I2C_SENSOR
-+ help
-+ If you say yes here you get support for the Xicor x1205 RTC chip.
-+
-+ This driver can also be built as a module. If so, the module
-+ will be called x1205-rtc
-
- config SENSORS_M41T00
- tristate "ST M41T00 RTC chip"
---- linux-2.6.11/.pc/2.6.patch/drivers/i2c/chips/Makefile 2005-06-17 17:51:28.636578177 -0700
-+++ linux-2.6.11/drivers/i2c/chips/Makefile 2005-06-17 17:51:32.566982394 -0700
-@@ -41,6 +41,7 @@
- obj-$(CONFIG_SENSORS_VIA686A) += via686a.o
- obj-$(CONFIG_SENSORS_W83L785TS) += w83l785ts.o
- obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o
-+obj-$(CONFIG_SENSORS_X1205) += x1205-rtc.o
-
- ifeq ($(CONFIG_I2C_DEBUG_CHIP),y)
- EXTRA_CFLAGS += -DDEBUG
---- linux-2.6.11/.pc/2.6.patch/include/linux/i2c-id.h 2005-06-17 17:51:31.358165630 -0700
-+++ linux-2.6.11/include/linux/i2c-id.h 2005-06-17 17:51:32.569981939 -0700
-@@ -108,6 +108,7 @@
- #define I2C_DRIVERID_TDA7313 62 /* TDA7313 audio processor */
- #define I2C_DRIVERID_MAX6900 63 /* MAX6900 real-time clock */
- #define I2C_DRIVERID_SAA7114H 64 /* video decoder */
-+#define I2C_DRIVERID_X1205 0xF0
-
-
- #define I2C_DRIVERID_EXP0 0xF0 /* experimental use id's */
diff --git a/packages/linux/nslu2-kernel/files/anonymiser.patch b/packages/linux/nslu2-kernel/files/anonymiser.patch
deleted file mode 100644
index 3384b15fe2..0000000000
--- a/packages/linux/nslu2-kernel/files/anonymiser.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- linux-2.6.11.2/scripts/mkcompile_h.orig 2005-05-07 05:27:02.440000000 +0000
-+++ linux-2.6.11.2/scripts/mkcompile_h 2005-05-07 05:28:30.360000000 +0000
-@@ -43,16 +43,9 @@
- echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
-
- echo \#define LINUX_COMPILE_TIME \"`LC_ALL=C LANG=C date +%T`\"
-- echo \#define LINUX_COMPILE_BY \"`whoami`\"
-- echo \#define LINUX_COMPILE_HOST \"`hostname | $UTS_TRUNCATE`\"
--
-- if [ -x /bin/dnsdomainname ]; then
-- echo \#define LINUX_COMPILE_DOMAIN \"`dnsdomainname | $UTS_TRUNCATE`\"
-- elif [ -x /bin/domainname ]; then
-- echo \#define LINUX_COMPILE_DOMAIN \"`domainname | $UTS_TRUNCATE`\"
-- else
-- echo \#define LINUX_COMPILE_DOMAIN
-- fi
-+ echo \#define LINUX_COMPILE_BY \"openslug\"
-+ echo \#define LINUX_COMPILE_HOST \"openslug.org\"
-+ echo \#define LINUX_COMPILE_DOMAIN \"openslug.org\"
-
- echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
- ) > .tmpcompile
diff --git a/packages/linux/nslu2-kernel_2.6.14-mm1.bb b/packages/linux/nslu2-kernel_2.6.14-mm1.bb
deleted file mode 100644
index dff6b0e4b0..0000000000
--- a/packages/linux/nslu2-kernel_2.6.14-mm1.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-# Kernel for NSLU2
-#
-# Increment PR_CONFIG for changes to the nslu2-kernel specific
-# defconfig (do *NOT* increment anything in here for changes
-# to other kernel configs!)
-PR_CONFIG = "0"
-#
-# Increment the number below (i.e. the digits after PR) when
-# making changes within this file or for changes to the patches
-# applied to the kernel.
-PR = "r1.${PR_CONFIG}"
-
-require nslu2-kernel.inc
-
-# N2K_PATCHES - full list of patches to apply
-N2K_PATCHES = "\
- file://00-memory-h-page-shift.patch;patch=1 \
- file://90-ixp4xx-pci-le.patch;patch=1 \
- file://18-ixp4xx-io-h-addr.patch;patch=1 \
- file://19-jffs2-force-be.patch;patch=1 \
- file://20-timer.patch;patch=1 \
- file://29-ipv4-route-c-spinlock.patch;patch=1 \
- file://30-i2c-x1205-mm1.patch;patch=1 \
- file://50-nslu2-arch.patch;patch=1 \
- file://55-nslu2-rtc.patch;patch=1 \
- file://60-nslu2-beeper.patch;patch=1 \
- file://70-nslu2-io.patch;patch=1 \
- file://75-nslu2-leds.patch;patch=1 \
- file://80-nslu2-class-device-create.patch;patch=1 \
- file://90-pegasus.patch;patch=1 \
- file://anonymiser.patch;patch=1 \
-"
-
-# These options get added to the kernel command line, only put things
-# specific to the bootstrap of *this* kernel in here - DISTRO specfic
-# config must be in CMDLINE_ROOT (see the full definition of CMDLINE
-# in nslu2-kernel.inc)
-CMDLINE_KERNEL_OPTIONS = "x1205.hctosys=1"
diff --git a/packages/linux/nslu2-kernel_2.6.14.5.bb b/packages/linux/nslu2-kernel_2.6.14.5.bb
deleted file mode 100644
index b7790be8be..0000000000
--- a/packages/linux/nslu2-kernel_2.6.14.5.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-# Kernel for NSLU2
-#
-# Increment PR_CONFIG for changes to the nslu2-kernel specific
-# defconfig (do *NOT* increment anything in here for changes
-# to other kernel configs!)
-PR_CONFIG = "0"
-#
-# Increment the number below (i.e. the digits after PR) when
-# making changes within this file or for changes to the patches
-# applied to the kernel.
-PR = "r0.${PR_CONFIG}"
-
-require nslu2-kernel.inc
-
-# N2K_PATCHES - full list of patches to apply
-N2K_PATCHES = "\
- file://90-ixp4xx-pci-le.patch;patch=1 \
- file://10-ixp4xx-copy-from.patch;patch=1 \
- file://10-ixp4xx-le.patch;patch=1 \
- file://10-mtdpart-redboot-fis-byteswap.patch;patch=1 \
- file://15-ixp4xx-writesb-l-w.patch;patch=1 \
- file://18-ixp4xx-io-h-addr.patch;patch=1 \
- file://19-jffs2-force-be.patch;patch=1 \
- file://29-ipv4-route-c-spinlock.patch;patch=1 \
- file://30-i2c-x1205.patch;patch=1 \
- file://50-nslu2-arch.patch;patch=1 \
- file://55-nslu2-rtc.patch;patch=1 \
- file://60-nslu2-beeper.patch;patch=1 \
- file://70-nslu2-io.patch;patch=1 \
- file://75-nslu2-leds.patch;patch=1 \
- file://90-pegasus.patch;patch=1 \
- file://20-timer.patch;patch=1 \
- file://91-maclist.patch;patch=1 \
- file://92-nslu2-maclist.patch;patch=1 \
- file://anonymiser.patch;patch=1 \
-"
-
-# These options get added to the kernel command line, only put things
-# specific to the bootstrap of *this* kernel in here - DISTRO specfic
-# config must be in CMDLINE_ROOT (see the full definition of CMDLINE
-# in nslu2-kernel.inc)
-CMDLINE_KERNEL_OPTIONS = "x1205.hctosys=1"
diff --git a/packages/linux/nslu2-kernel_2.6.15.bb b/packages/linux/nslu2-kernel_2.6.15.bb
deleted file mode 100644
index 68b2b56f1a..0000000000
--- a/packages/linux/nslu2-kernel_2.6.15.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-# Kernel for NSLU2
-#
-# Increment PR_CONFIG for changes to the nslu2-kernel specific
-# defconfig (do *NOT* increment anything in here for changes
-# to other kernel configs!)
-PR_CONFIG = "0"
-#
-# Increment the number below (i.e. the digits after PR) when
-# making changes within this file or for changes to the patches
-# applied to the kernel.
-PR = "r3.${PR_CONFIG}"
-
-require nslu2-kernel.inc
-
-# N2K_PATCHES - full list of patches to apply
-N2K_PATCHES = "\
- file://00-memory-h-page-shift.patch;patch=1 \
- file://10-mtdpart-redboot-fis-byteswap.patch;patch=1 \
- file://15-jffs2-endian-config.patch;patch=1 \
- file://40-rtc-class.patch;patch=1 \
- file://40-scsi-idle.patch;patch=1 \
- file://60-nslu2-beeper.patch;patch=1 \
- file://75-nslu2-leds.patch;patch=1 \
- file://80-nslu2-io.patch;patch=1 \
- file://85-timer.patch;patch=1 \
- file://91-maclist.patch;patch=1 \
- file://92-nslu2-maclist.patch;patch=1 \
- file://anonymiser.patch;patch=1 \
-"
-
-# These options get added to the kernel command line, only put things
-# specific to the bootstrap of *this* kernel in here - DISTRO specfic
-# config must be in CMDLINE_ROOT (see the full definition of CMDLINE
-# in nslu2-kernel.inc)
-CMDLINE_KERNEL_OPTIONS = "rtc-x1205.hctosys=1 rtc-x1205.probe=0,0x6f"
diff --git a/packages/linux/nslu2-linksys-kernel-2.4.22/nslu2/defconfig b/packages/linux/nslu2-linksys-kernel-2.4.22/nslu2/defconfig
deleted file mode 100644
index 5ed64cbff5..0000000000
--- a/packages/linux/nslu2-linksys-kernel-2.4.22/nslu2/defconfig
+++ /dev/null
@@ -1,973 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_ADVANCED_OPTIONS is not set
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_KMOD is not set
-
-#
-# System Type
-#
-# CONFIG_ARCH_ADIFCC is not set
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K 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_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP1200 is not set
-# CONFIG_ARCH_IXP2000 is not set
-CONFIG_ARCH_IXP425=y
-# CONFIG_ARCH_OMAHA is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_RISCSTATION is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ACCELENT is not set
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSAGC is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_ADSBITSYPLUS is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_H3XXX is not set
-# CONFIG_H3600_SLEEVE is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SIMPUTER is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_SA1100_SSP is not set
-
-#
-# IXP425 Implementation Options
-#
-CONFIG_ARCH_IXDP425=y
-# CONFIG_ARCH_IXCDP1100 is not set
-# CONFIG_ARCH_PRPMC1100 is not set
-# CONFIG_ARCH_IXP425_COYOTE is not set
-# CONFIG_ARCH_SE4000 is not set
-CONFIG_IXP425_SDRAM_SIZE=32
-# CONFIG_IXP425_LARGE_SDRAM is not set
-CONFIG_IXP425_PCI_ERRATA=y
-# CONFIG_IXP425_OS_TIMER1 is not set
-# CONFIG_XSCALE_PMU_TIMER is not set
-# CONFIG_IXP425_CSR is not set
-
-#
-# AT91RM9200 Implementations
-#
-# CONFIG_ARCH_AT91RM9200DK is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_GUIDEA07 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_ARM1026 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_ARM_THUMB=y
-# CONFIG_XSCALE_PMU_TIMER is not set
-# CONFIG_XSCALE_CACHE_ERRATA is not set
-# CONFIG_XSCALE_BDI2000 is not set
-# CONFIG_DISCONTIGMEM is not set
-CONFIG_CPU_BIG_ENDIAN=y
-
-#
-# General setup
-#
-CONFIG_PCI=y
-CONFIG_PCI_AUTOCONFIG=y
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-CONFIG_KERNEL_START=0xc0000000
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_PCI_NAMES=y
-# CONFIG_HOTPLUG is not set
-# CONFIG_PCMCIA is not set
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-CONFIG_BINFMT_AOUT=y
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_PM is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/ram0 initrd=0x01000000,10M mem=32M@0x00000000"
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL 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_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-# 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
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_DRAGONIX is not set
-# CONFIG_MTD_NETtel is not set
-# CONFIG_MTD_SNAPGEODE is not set
-# CONFIG_MTD_NETteluC is not set
-# CONFIG_MTD_MBVANILLA is not set
-# CONFIG_MTD_KeyTechnology is not set
-# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_AUTCPU12 is not set
-CONFIG_MTD_IXP425=y
-# CONFIG_MTD_IXP425_COYOTE is not set
-# CONFIG_MTD_SE4000 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_CEIVA is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_LOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=16384
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_RAMDISK_DATA is not set
-# CONFIG_BLK_DEV_BLKMEM is not set
-# CONFIG_BLK_STATS is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-# CONFIG_NETLINK_DEV is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-# CONFIG_IP_MULTIPLE_TABLES is not set
-# CONFIG_IP_ROUTE_MULTIPATH is not set
-# CONFIG_IP_ROUTE_MULTIPATH_SEQUENTIAL is not set
-# CONFIG_IP_ROUTE_TOS is not set
-# CONFIG_IP_ROUTE_VERBOSE is not set
-CONFIG_IP_PNP=y
-# CONFIG_IP_PNP_DHCP is not set
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_ARP_LIMIT 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_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-# CONFIG_IP_NF_CONNTRACK is not set
-# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
-# CONFIG_IP_NF_ARPTABLES is not set
-# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-# CONFIG_IPV6 is not set
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-# CONFIG_IPSEC is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
-# CONFIG_ARM_CIRRUS is not set
-# CONFIG_IXP425_ETH is not set
-# CONFIG_SUNLANCE is not set
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM 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
-# CONFIG_HP100 is not set
-# CONFIG_NET_ISA 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_APRICOT is not set
-# CONFIG_B44 is not set
-# CONFIG_CS89x0 is not set
-# CONFIG_TULIP is not set
-# CONFIG_DE4X5 is not set
-# CONFIG_DGRS is not set
-# CONFIG_DM9102 is not set
-# CONFIG_EEPRO100 is not set
-# CONFIG_EEPRO100_PIO is not set
-# CONFIG_E100 is not set
-# CONFIG_LNE390 is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_NE3210 is not set
-# CONFIG_ES3210 is not set
-# CONFIG_8139CP is not set
-# CONFIG_8139CP_EXTERNAL_PHY is not set
-CONFIG_8139CP_PHY_NUM=32
-# CONFIG_8139TOO is not set
-# CONFIG_8139TOO_PIO is not set
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET is not set
-# CONFIG_RTL8139 is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_SUNDANCE_MMIO is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_VIA_RHINE_FET is not set
-# CONFIG_VIA_RHINE_MMIO is not set
-# CONFIG_WINBOND_840 is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_FEC is not set
-# CONFIG_CS89x0 is not set
-# CONFIG_UCCS8900 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-# CONFIG_IRDA is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_SD_EXTRA_DEVS=40
-# 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_SCSI_DEBUG_QUEUES is not set
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_BLK_DEV_3W_XXXX_RAID 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_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_CPQFCTS is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO 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_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_NCR53C8XX is not set
-# CONFIG_SCSI_SYM53C8XX is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_ISP is not set
-# CONFIG_SCSI_QLOGIC_FC is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# IEEE 1394 (FireWire) support (EXPERIMENTAL)
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_PCI is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-# CONFIG_INPUT is not set
-# CONFIG_INPUT_KEYBDEV is not set
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-
-#
-# Character devices
-#
-# CONFIG_LEDMAN is not set
-# CONFIG_DS1302 is not set
-# CONFIG_VT is not set
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_PHILIPSPAR is not set
-# CONFIG_I2C_ELV is not set
-# CONFIG_I2C_VELLEMAN is not set
-# CONFIG_I2C_MCF_GPIO is not set
-CONFIG_I2C_IXP425=y
-# CONFIG_SCx200_I2C is not set
-# CONFIG_SCx200_ACB is not set
-# CONFIG_I2C_ALGOPCF is not set
-CONFIG_I2C_CHARDEV=y
-# CONFIG_I2C_PROC is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=y
-CONFIG_PSMOUSE=y
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_MK712_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_QIC02_TAPE is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_IPMI_PANIC_EVENT is not set
-# CONFIG_IPMI_DEVICE_INTERFACE is not set
-# CONFIG_IPMI_KCS is not set
-# CONFIG_IPMI_WATCHDOG is not set
-
-#
-# Controller Area Network Cards/Chips
-#
-# CONFIG_CAN4LINUX is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_SCx200_GPIO is not set
-# CONFIG_AMD_PM768 is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_X1226_RTC=m
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# File systems
-#
-CONFIG_QUOTA=y
-CONFIG_QFMT_V2=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW 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_BEFS_DEBUG is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=y
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=y
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-# CONFIG_JFFS2_FS is not set
-# CONFIG_CRAMFS is not set
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-# CONFIG_ISO9660_FS is not set
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_XFS_POSIX_ACL is not set
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_QUOTA is not set
-# CONFIG_XFS_DMAPI is not set
-# CONFIG_XFS_TRACE is not set
-# CONFIG_XFS_DEBUG is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-# CONFIG_NFS_FS is not set
-# CONFIG_NFS_V3 is not set
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_ROOT_NFS is not set
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_V3 is not set
-# CONFIG_NFSD_TCP is not set
-# CONFIG_SUNRPC is not set
-# CONFIG_LOCKD is not set
-CONFIG_SMB_FS=y
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-# CONFIG_COREDUMP_PRINTK is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-CONFIG_OSF_PARTITION=y
-# 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=y
-CONFIG_MINIX_SUBPARTITION=y
-CONFIG_SOLARIS_X86_PARTITION=y
-CONFIG_UNIXWARE_DISKLABEL=y
-# CONFIG_LDM_PARTITION is not set
-CONFIG_SGI_PARTITION=y
-# CONFIG_ULTRIX_PARTITION is not set
-CONFIG_SUN_PARTITION=y
-# CONFIG_EFI_PARTITION is not set
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# 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_ISO8859_1 is not set
-# 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
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# Misc devices
-#
-
-#
-# USB support
-#
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_BANDWIDTH is not set
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_UHCI=y
-# CONFIG_USB_UHCI_ALT is not set
-CONFIG_USB_OHCI=y
-# CONFIG_USB_SL811HS_ALT is not set
-# CONFIG_USB_SL811HS is not set
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_BLUETOOTH is not set
-# CONFIG_USB_MIDI is not set
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_HOTPLUG_SCSIDEV_NUMBER is not set
-CONFIG_USB_STORAGE_MAXTOR_ONETOUCH=y
-CONFIG_USB_STORAGE_MAXTOR_ONETOUCH_DEBUG=y
-# CONFIG_USB_STORAGE_MAXTOR_ONETOUCH_USB_EVENT is not set
-CONFIG_USB_STORAGE_MAXTOR_ONETOUCH_PERSO=y
-CONFIG_USB_STORAGE_MAXTOR_ONETOUCH_PERSO_APP_PATH="/sbin/onetouch"
-# 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_HP8200e 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_ACM is not set
-# CONFIG_USB_PRINTER is not set
-# CONFIG_USB_HID is not set
-# CONFIG_USB_HIDINPUT is not set
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_AX8817X is not set
-# CONFIG_USB_CDCETHER is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_TIGL is not set
-# CONFIG_USB_BRLVGER is not set
-# CONFIG_USB_LCD is not set
-
-#
-# Bluetooth support
-#
-# CONFIG_BLUEZ is not set
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
-
-#
-# Cryptographic options
-#
-# CONFIG_CRYPTO is not set
-
-#
-# Library routines
-#
-CONFIG_CRC32=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/nslu2-linksys-kernel_2.4.22.bb b/packages/linux/nslu2-linksys-kernel_2.4.22.bb
deleted file mode 100644
index 7132d411fb..0000000000
--- a/packages/linux/nslu2-linksys-kernel_2.4.22.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "Linux kernel for the Linksys NSLU2 device"
-LICENSE = "GPL"
-PR = "r2"
-
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.4/linux-2.4.22.tar.bz2 \
- http://nslu.sf.net/downloads/xfs-2.4.22-all-i386.bz2;patch=1 \
- http://nslu.sf.net/downloads/2.4.22-xfs-nslu2.patch.bz2;patch=1 \
- file://config-fixes.patch;patch=1 \
- file://nofpu.patch;patch=1 \
- file://short_loadbytes.patch;patch=1 \
- file://gcc3-userfuncs.patch;patch=1 \
- file://gcc-registerparanoia.patch;patch=1 \
- file://linux-2.4.24-attribute-used.patch;patch=1 \
- file://double_cpdo.patch;patch=1 \
- file://defconfig"
-S = "${WORKDIR}/linux-2.4.22"
-
-COMPATIBLE_HOST = 'arm.*-linux'
-COMPATIBLE_MACHINE = "nslu2"
-
-inherit kernel
-
-ARCH = "arm"
-KERNEL_IMAGETYPE = "zImage"
-KERNEL_SUFFIX ?= "nslu2-linksys"
-CMDLINE_CONSOLE ?= "ttyS0,115200"
-CMDLINE_ROOT = "root=/dev/ram0 initrd=0x01000000,10M mem=32M@0x00000000"
-CMDLINE = "${CMDLINE_CONSOLE} ${CMDLINE_ROOT}"
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
- echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
- rm -rf ${S}/include/asm-arm/arch ${S}/include/asm-arm/proc \
- ${S}/include/asm-arm/.proc ${S}/include/asm-arm/.arch
-}
-
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${KERNEL_SUFFIX}
-}
-
-do_deploy[dirs] = "${S}"
-
-addtask deploy before do_build after do_compile
diff --git a/packages/linux/nslu2-linksys-kernel-2.4.22/config-fixes.patch b/packages/linux/unslung-kernel/config-fixes.patch
index 2afbe66f0a..2afbe66f0a 100644
--- a/packages/linux/nslu2-linksys-kernel-2.4.22/config-fixes.patch
+++ b/packages/linux/unslung-kernel/config-fixes.patch
diff --git a/packages/linux/nslu2-linksys-kernel-2.4.22/double_cpdo.patch b/packages/linux/unslung-kernel/double_cpdo.patch
index 4069358db8..4069358db8 100644
--- a/packages/linux/nslu2-linksys-kernel-2.4.22/double_cpdo.patch
+++ b/packages/linux/unslung-kernel/double_cpdo.patch
diff --git a/packages/linux/nslu2-linksys-kernel-2.4.22/gcc-registerparanoia.patch b/packages/linux/unslung-kernel/gcc-registerparanoia.patch
index 7c3e538e1e..7c3e538e1e 100644
--- a/packages/linux/nslu2-linksys-kernel-2.4.22/gcc-registerparanoia.patch
+++ b/packages/linux/unslung-kernel/gcc-registerparanoia.patch
diff --git a/packages/linux/nslu2-linksys-kernel-2.4.22/gcc3-userfuncs.patch b/packages/linux/unslung-kernel/gcc3-userfuncs.patch
index 54726bf740..54726bf740 100644
--- a/packages/linux/nslu2-linksys-kernel-2.4.22/gcc3-userfuncs.patch
+++ b/packages/linux/unslung-kernel/gcc3-userfuncs.patch
diff --git a/packages/linux/nslu2-linksys-kernel-2.4.22/linux-2.4.24-attribute-used.patch b/packages/linux/unslung-kernel/linux-2.4.24-attribute-used.patch
index bcf1c10335..bcf1c10335 100644
--- a/packages/linux/nslu2-linksys-kernel-2.4.22/linux-2.4.24-attribute-used.patch
+++ b/packages/linux/unslung-kernel/linux-2.4.24-attribute-used.patch
diff --git a/packages/linux/nslu2-linksys-kernel-2.4.22/nofpu.patch b/packages/linux/unslung-kernel/nofpu.patch
index c23eceb506..c23eceb506 100644
--- a/packages/linux/nslu2-linksys-kernel-2.4.22/nofpu.patch
+++ b/packages/linux/unslung-kernel/nofpu.patch
diff --git a/packages/linux/nslu2-linksys-kernel-2.4.22/short_loadbytes.patch b/packages/linux/unslung-kernel/short_loadbytes.patch
index f0b514225c..f0b514225c 100644
--- a/packages/linux/nslu2-linksys-kernel-2.4.22/short_loadbytes.patch
+++ b/packages/linux/unslung-kernel/short_loadbytes.patch
diff --git a/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb b/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb
index 6a22591795..df3141725c 100644
--- a/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb
+++ b/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb
@@ -1,30 +1,61 @@
SECTION = "kernel"
+DESCRIPTION = "Vendor-compatible Linux kernel for the Linksys NSLU2 device"
+LICENSE = "GPL"
+PR = "r18"
+
+COMPATIBLE_HOST = 'arm.*-linux'
COMPATIBLE_MACHINE = "nslu2"
-require nslu2-linksys-kernel_2.4.22.bb
+UNSLUNG_KERNEL_EXTRA_SRC_URI ?= ""
-DESCRIPTION = "Unslung kernel for the Linksys NSLU2 device"
-PR = "r17"
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.4/linux-2.4.22.tar.bz2 \
+ http://nslu.sf.net/downloads/xfs-2.4.22-all-i386.bz2;patch=1 \
+ http://nslu.sf.net/downloads/2.4.22-xfs-nslu2.patch.bz2;patch=1 \
+ file://config-fixes.patch;patch=1 \
+ file://nofpu.patch;patch=1 \
+ file://short_loadbytes.patch;patch=1 \
+ file://gcc3-userfuncs.patch;patch=1 \
+ file://gcc-registerparanoia.patch;patch=1 \
+ file://linux-2.4.24-attribute-used.patch;patch=1 \
+ file://double_cpdo.patch;patch=1 \
+ file://linux-kernel-R25_to_R29.patch;patch=1 \
+ file://linux-kernel-R29_to_R63.patch;patch=1 \
+ file://flash-is-now-hdd.patch;patch=1 \
+ file://gl811e.patch;patch=1 \
+ file://usbnet.patch;patch=1 \
+ file://missing-usb-ioctls.patch;patch=1 \
+ file://anonymiser.patch;patch=1 \
+ file://ppp_mppe.patch;patch=1 \
+ file://nfs-blocksize.patch;patch=1 \
+ file://pl2303.patch;patch=1 \
+ file://pl2303_mdmctl.patch;patch=1 \
+ file://netconsole.patch;patch=1 \
+ file://ppp_mppe_no_fp_in_kernel.patch;patch=1 \
+ file://defconfig \
+ ${UNSLUNG_KERNEL_EXTRA_SRC_URI}"
+S = "${WORKDIR}/linux-2.4.22"
-KERNEL_SUFFIX = "unslung"
+inherit kernel
+ARCH = "arm"
+KERNEL_IMAGETYPE = "zImage"
+KERNEL_SUFFIX = "${MACHINE}"
+CMDLINE_CONSOLE ?= "ttyS0,115200"
CMDLINE_ROOT = "root=/dev/mtdblock4 rootfstype=jffs2 rw init=/linuxrc mem=32M@0x00000000"
+CMDLINE = "${CMDLINE_CONSOLE} ${CMDLINE_ROOT}"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+ echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
+ rm -rf ${S}/include/asm-arm/arch ${S}/include/asm-arm/proc \
+ ${S}/include/asm-arm/.proc ${S}/include/asm-arm/.arch
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${KERNEL_SUFFIX}
+}
+
+do_deploy[dirs] = "${S}"
-UNSLUNG_KERNEL_EXTRA_SRC_URI ?=
-
-SRC_URI += "file://linux-kernel-R25_to_R29.patch;patch=1 \
- file://linux-kernel-R29_to_R63.patch;patch=1 \
- file://flash-is-now-hdd.patch;patch=1 \
- file://gl811e.patch;patch=1 \
- file://usbnet.patch;patch=1 \
- file://missing-usb-ioctls.patch;patch=1 \
- file://anonymiser.patch;patch=1 \
- file://ppp_mppe.patch;patch=1 \
- file://nfs-blocksize.patch;patch=1 \
- file://pl2303.patch;patch=1 \
- file://pl2303_mdmctl.patch;patch=1 \
- file://netconsole.patch;patch=1 \
- file://ppp_mppe_no_fp_in_kernel.patch;patch=1 \
- ${UNSLUNG_KERNEL_EXTRA_SRC_URI}"
-
-FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/unslung-kernel', '${FILE_DIRNAME}/nslu2-linksys-kernel-2.4.22', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
+addtask deploy before do_build after do_compile
diff --git a/packages/linux/xanadux-un-2.6_2.6.12.bb b/packages/linux/xanadux-un-2.6_2.6.12.bb
index 219a467b69..a82e0abd3e 100644
--- a/packages/linux/xanadux-un-2.6_2.6.12.bb
+++ b/packages/linux/xanadux-un-2.6_2.6.12.bb
@@ -23,7 +23,7 @@ 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}.bin
- tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_VERSION}-${MACHINE}.tgz -C ${D} lib
}
do_deploy[dirs] = "${S}"
diff --git a/packages/lirc/lirc-modules_0.8.1+cvs20070307.bb b/packages/lirc/lirc-modules_0.8.1+cvs20070307.bb
new file mode 100644
index 0000000000..5b11f32369
--- /dev/null
+++ b/packages/lirc/lirc-modules_0.8.1+cvs20070307.bb
@@ -0,0 +1,46 @@
+DESCRIPTION = "LIRC is a package that allows you to decode and send infra-red signals of many commonly used remote controls. This package contains the lirc kernel modules."
+SECTION = "base"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.lirc.org"
+LICENSE = "GPL"
+DEPENDS = "virtual/kernel fakeroot-native setserial"
+RDEPENDS_nslu2 = "setserial"
+PR = "r0"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRCDATE=${@bb.data.getVar('PV', d, 1)[9:]}
+
+SRC_URI = "cvs://anonymous@lirc.cvs.sourceforge.net/cvsroot/lirc;module=lirc;method=pserver;cvsdate=${SRCDATE}"
+S = "${WORKDIR}/lirc"
+
+inherit autotools module
+
+require lirc-config.inc
+
+MAKE_TARGETS = "KERNEL_PATH=${STAGING_KERNEL_DIR} MAKE='make -e' -C drivers"
+
+fakeroot do_install() {
+ oe_runmake -C drivers DESTDIR="${D}" moduledir="/lib/modules/${KERNEL_VERSION}/lirc" install
+ rm -rf ${D}/dev
+}
+
+# nslu2 uses udev, so /dev/lirc0 will be created automatically
+# and /dev/lirc will be created by /etc/udev/rules.d/lirc.rules
+# (that's the kernel-2.6+udev solution)
+do_install_append_nslu2() {
+ install -d ${D}${sysconfdir}/modutils/
+ echo 'lirc_serial' > ${D}${sysconfdir}/modutils/lirc_serial
+ install -d ${D}${sysconfdir}/modprobe.d/
+ echo 'install lirc_serial /bin/setserial /dev/ttyS1 uart none; /sbin/leds ready on; /sbin/modprobe --ignore-install lirc_serial' >${D}${sysconfdir}/modprobe.d/lirc_serial
+ install -d ${D}${sysconfdir}/udev/rules.d/
+ echo 'KERNEL="lirc0", SYMLINK="lirc"' > ${D}${sysconfdir}/udev/rules.d/lirc.rules
+}
+
+# this is for distributions that don't use udev
+pkg_postinst_append() {
+if [ ! -c $D/dev/lirc -a ! -f /sbin/udevd ]; then mknod $D/dev/lirc c 61 0; fi
+}
+
+FILES_${PN} = "/lib/modules"
+FILES_${PN}_append_nslu2 = " ${sysconfdir}/modutils ${sysconfdir}/modprobe.d ${sysconfdir}/udev/rules.d"
diff --git a/packages/lirc/lirc-modules_0.8.1.bb b/packages/lirc/lirc-modules_0.8.1.bb
new file mode 100644
index 0000000000..0ef3713276
--- /dev/null
+++ b/packages/lirc/lirc-modules_0.8.1.bb
@@ -0,0 +1,42 @@
+DESCRIPTION = "LIRC is a package that allows you to decode and send infra-red signals of many commonly used remote controls. This package contains the lirc kernel modules."
+SECTION = "base"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.lirc.org"
+LICENSE = "GPL"
+DEPENDS = "virtual/kernel fakeroot-native setserial"
+RDEPENDS_nslu2 = "setserial"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/lirc/lirc-${PV}.tar.gz"
+S = "${WORKDIR}/lirc-${PV}"
+
+inherit autotools module
+
+require lirc-config.inc
+
+MAKE_TARGETS = "KERNEL_PATH=${STAGING_KERNEL_DIR} MAKE='make -e' -C drivers"
+
+fakeroot do_install() {
+ oe_runmake -C drivers DESTDIR="${D}" moduledir="/lib/modules/${KERNEL_VERSION}/lirc" install
+ rm -rf ${D}/dev
+}
+
+# nslu2 uses udev, so /dev/lirc0 will be created automatically
+# and /dev/lirc will be created by /etc/udev/rules.d/lirc.rules
+# (that's the kernel-2.6+udev solution)
+do_install_append_nslu2() {
+ install -d ${D}${sysconfdir}/modutils/
+ echo 'lirc_serial' > ${D}${sysconfdir}/modutils/lirc_serial
+ install -d ${D}${sysconfdir}/modprobe.d/
+ echo 'install lirc_serial /bin/setserial /dev/ttyS1 uart none; /sbin/leds ready on; /sbin/modprobe --ignore-install lirc_serial' >${D}${sysconfdir}/modprobe.d/lirc_serial
+ install -d ${D}${sysconfdir}/udev/rules.d/
+ echo 'KERNEL="lirc0", SYMLINK="lirc"' > ${D}${sysconfdir}/udev/rules.d/lirc.rules
+}
+
+# this is for distributions that don't use udev
+pkg_postinst_append() {
+if [ ! -c $D/dev/lirc -a ! -f /sbin/udevd ]; then mknod $D/dev/lirc c 61 0; fi
+}
+
+FILES_${PN} = "/lib/modules"
+FILES_${PN}_append_nslu2 = " ${sysconfdir}/modutils ${sysconfdir}/modprobe.d ${sysconfdir}/udev/rules.d"
diff --git a/packages/lirc/lirc_0.8.1+cvs20070307.bb b/packages/lirc/lirc_0.8.1+cvs20070307.bb
new file mode 100644
index 0000000000..2ba1ad8d73
--- /dev/null
+++ b/packages/lirc/lirc_0.8.1+cvs20070307.bb
@@ -0,0 +1,71 @@
+DESCRIPTION = "LIRC is a package that allows you to decode and send infra-red signals of many commonly used remote controls."
+DESCRIPTION_append_lirc = " This package contains the lirc daemon, libraries and tools."
+DESCRIPTION_append_lirc-x = " This package contains lirc tools for X11."
+DESCRIPTION_append_lirc-exec = " This package contains a daemon that runs programs on IR signals."
+DESCRIPTION_append_lirc-remotes = " This package contains some config files for remotes."
+DESCRIPTION_append_lirc-nslu2example = " This package contains a working config for RC5 remotes and a modified NSLU2."
+SECTION = "console/network"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.lirc.org"
+LICENSE = "GPL"
+DEPENDS = "virtual/kernel virtual/libx11 libxau libsm libice"
+DEPENDS_nslu2 = "virtual/kernel lirc-modules"
+RDEPENDS = "lirc-modules"
+RDEPENDS_lirc-x = "lirc"
+RDEPENDS_lirc-exec = "lirc"
+RDEPENDS_lirc-nslu2example = "lirc lirc-exec"
+RRECOMMENDS_lirc = "lirc-exec"
+PR = "r0"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRCDATE=${@bb.data.getVar('PV', d, 1)[9:]}
+
+SRC_URI = "cvs://anonymous@lirc.cvs.sourceforge.net/cvsroot/lirc;module=lirc;method=pserver;cvsdate=${SRCDATE} \
+ file://lircd.init file://lircmd.init file://lircexec.init"
+SRC_URI_append_nslu2 = " file://lircd.conf_nslu2 file://lircrc_nslu2"
+
+S = "${WORKDIR}/lirc"
+
+inherit autotools module-base update-rc.d
+
+INITSCRIPT_PACKAGES = "lirc lirc-exec"
+INITSCRIPT_NAME = "lircd"
+INITSCRIPT_PARAMS = "defaults 20"
+INITSCRIPT_NAME_lirc-exec = "lircexec"
+INITSCRIPT_PARAMS_lirc-exec = "defaults 21"
+
+require lirc-config.inc
+
+EXTRA_OEMAKE = 'SUBDIRS="daemons tools"'
+
+do_stage() {
+ oe_libinstall -so -C tools liblirc_client ${STAGING_LIBDIR}
+ install -d ${STAGING_INCDIR}/lirc/
+ install -m 0644 tools/lirc_client.h ${STAGING_INCDIR}/lirc/
+}
+
+do_install_append() {
+ install -d ${D}${sysconfdir}/init.d
+ install ${WORKDIR}/lircd.init ${D}${sysconfdir}/init.d/lircd
+ install ${WORKDIR}/lircexec.init ${D}${sysconfdir}/init.d/lircexec
+ install -d ${D}${datadir}/lirc/
+ cp -pPR ${S}/remotes ${D}${datadir}/lirc/
+ rm -rf ${D}/dev
+}
+
+do_install_append_nslu2() {
+ install -d ${D}${sysconfdir}
+ install ${WORKDIR}/lircd.conf_nslu2 ${D}${sysconfdir}/lircd.conf
+ install ${WORKDIR}/lircrc_nslu2 ${D}${sysconfdir}/lircrc
+}
+
+PACKAGES =+ "lirc-x lirc-exec lirc-remotes"
+PACKAGES_prepend_nslu2 = "lirc-nslu2example "
+
+FILES_${PN} = "${bindir} ${sbindir} ${libdir} ${sysconfdir}/init.d"
+FILES_lirc-x = "${bindir}/irxevent ${bindir}/xmode2"
+FILES_lirc-exec = "${bindir}/irexec ${sysconfdir}/init.d/lircexec"
+FILES_lirc-remotes = "${datadir}/lirc/remotes"
+FILES_lirc-nslu2example = "${sysconfdir}/lircd.conf ${sysconfdir}/lircrc"
+CONFFILES_lirc-nslu2example = "${FILES_lirc-nslu2example}"
diff --git a/packages/llvm/.mtn2git_empty b/packages/llvm/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/llvm/.mtn2git_empty
diff --git a/packages/llvm/llvm-native_1.9.bb b/packages/llvm/llvm-native_1.9.bb
new file mode 100644
index 0000000000..1493bab886
--- /dev/null
+++ b/packages/llvm/llvm-native_1.9.bb
@@ -0,0 +1,9 @@
+require llvm.inc
+
+inherit native
+
+S = "${WORKDIR}/llvm-${PV}"
+
+do_stage() {
+ install -m 755 ${S}/Release/bin/* ${STAGING_BINDIR_NATIVE}/
+}
diff --git a/packages/llvm/llvm-native_cvs.bb b/packages/llvm/llvm-native_cvs.bb
new file mode 100644
index 0000000000..b3dfdebb2c
--- /dev/null
+++ b/packages/llvm/llvm-native_cvs.bb
@@ -0,0 +1,13 @@
+require llvm.inc
+
+inherit native
+
+PV = "1.9+cvs${SRCDATE}"
+
+SRC_URI = "cvs://anon@llvm.org/var/cvs/llvm;module=llvm"
+
+S = "${WORKDIR}/llvm"
+
+do_stage() {
+ install -m 755 ${S}/Debug/bin/* ${STAGING_BINDIR_NATIVE}/
+}
diff --git a/packages/llvm/llvm.inc b/packages/llvm/llvm.inc
new file mode 100644
index 0000000000..d9664aeebd
--- /dev/null
+++ b/packages/llvm/llvm.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "The Low Level Virtual Machine"
+HOMEPAGE = "http://llvm.org"
+LICENSE = "various"
+
+SRC_URI = "http://llvm.org/releases/1.9/llvm-${PV}.tar.gz"
+
+inherit autotools
+
+do_configure() {
+ oe_runconf
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/lm_sensors/files/iconv.patch b/packages/lm_sensors/files/iconv.patch
new file mode 100644
index 0000000000..4aecafafb1
--- /dev/null
+++ b/packages/lm_sensors/files/iconv.patch
@@ -0,0 +1,13 @@
+Index: lm_sensors-2.10.1/prog/sensors/Module.mk
+===================================================================
+--- lm_sensors-2.10.1.orig/prog/sensors/Module.mk 2006-09-24 22:30:10.000000000 +0000
++++ lm_sensors-2.10.1/prog/sensors/Module.mk 2007-04-14 22:11:47.000000000 +0000
+@@ -36,7 +36,7 @@
+ REMOVESENSORSBIN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(BINDIR)/%,$(PROGSENSORSTARGETS))
+ REMOVESENSORSMAN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(PROGSENSORSMAN1DIR)/%,$(PROGSENSORSMAN1FILES))
+
+-LIBICONV := $(shell if /sbin/ldconfig -p | grep -q libiconv\\.so ; then echo \-liconv; else echo; fi)
++LIBICONV := -liconv
+
+ $(PROGSENSORSTARGETS): $(PROGSENSORSSOURCES:.c=.ro) lib/$(LIBSHBASENAME)
+ $(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) $(LIBICONV) -Llib -lsensors
diff --git a/packages/lm_sensors/lmsensors-apps_2.10.1.bb b/packages/lm_sensors/lmsensors-apps_2.10.1.bb
index 5902c95195..bbe484f74e 100644
--- a/packages/lm_sensors/lmsensors-apps_2.10.1.bb
+++ b/packages/lm_sensors/lmsensors-apps_2.10.1.bb
@@ -4,10 +4,12 @@
DESCRIPTION = "Hardware health monitoring applications"
HOMEPAGE = "http://secure.netroedge.com/~lm78/"
-DEPENDS = "sysfsutils"
+DEPENDS = "libsysfs virtual/libiconv"
LICENSE = "GPL"
+PR = "r1"
SRC_URI = "http://dl.lm-sensors.org/lm-sensors/releases/lm_sensors-${PV}.tar.gz \
+ file://iconv.patch;patch=1 \
file://add-sysfs-ldflags.patch;patch=1"
S = "${WORKDIR}/lm_sensors-${PV}"
diff --git a/packages/logrotate/.mtn2git_empty b/packages/logrotate/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/logrotate/.mtn2git_empty
diff --git a/packages/logrotate/files/.mtn2git_empty b/packages/logrotate/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/logrotate/files/.mtn2git_empty
diff --git a/packages/logrotate/files/logrotate-3.7.1.patch b/packages/logrotate/files/logrotate-3.7.1.patch
new file mode 100644
index 0000000000..e184977ece
--- /dev/null
+++ b/packages/logrotate/files/logrotate-3.7.1.patch
@@ -0,0 +1,20 @@
+--- logrotate-3.7.1.old/Makefile 2007-02-17 17:41:04.000000000 +1100
++++ logrotate-3.7.1/Makefile 2007-02-17 17:40:38.000000000 +1100
+@@ -3,7 +3,7 @@
+ CVSTAG = r$(subst .,-,$(VERSION))
+ OS_NAME = $(shell uname -s)
+ LFS = $(shell echo `getconf LFS_CFLAGS 2>/dev/null`)
+-CFLAGS = -Wall -D_GNU_SOURCE -D$(OS_NAME) -DVERSION=\"$(VERSION)\" $(RPM_OPT_FLAGS) $(LFS)
++CFLAGS += -Wall -D_GNU_SOURCE -D$(OS_NAME) -DVERSION=\"$(VERSION)\" $(RPM_OPT_FLAGS) $(LFS)
+ PROG = logrotate
+ MAN = logrotate.8
+ LOADLIBES = -lpopt
+@@ -69,7 +69,7 @@
+
+ ifeq ($(RPM_OPT_FLAGS),)
+ CFLAGS += -g
+-LDFLAGS = -g
++LDFLAGS += -g
+ endif
+
+ ifeq (.depend,$(wildcard .depend))
diff --git a/packages/logrotate/files/logrotate.conf b/packages/logrotate/files/logrotate.conf
new file mode 100644
index 0000000000..b370b392e7
--- /dev/null
+++ b/packages/logrotate/files/logrotate.conf
@@ -0,0 +1,30 @@
+# see "man logrotate" for details
+# rotate log files weekly
+weekly
+
+# keep 4 weeks worth of backlogs
+rotate 4
+
+# create new (empty) log files after rotating old ones
+create
+
+# uncomment this if you want your log files compressed
+#compress
+
+# ipk packages should drop log rotation information into this directory
+include /etc/logrotate.d
+
+# no packages own wtmp -- we'll rotate them here
+/var/log/wtmp {
+ monthly
+ create 0664 root root
+ rotate 1
+}
+
+# /var/log/messages {
+# rotate 5
+# postrotate
+# /bin/killall syslogd
+# /bin/killall klogd
+# endscript
+# }
diff --git a/packages/logrotate/logrotate_3.7.1.bb b/packages/logrotate/logrotate_3.7.1.bb
new file mode 100644
index 0000000000..b903e60201
--- /dev/null
+++ b/packages/logrotate/logrotate_3.7.1.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "Rotates, compresses, removes and mails system log files"
+HOMEPAGE = "http://packages.debian.org/unstable/admin/logrotate"
+RCONFLICTS = "logrotate-script"
+DEPENDS = "popt"
+RDEPENDS = "cron"
+SECTION = "admin"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "http://ftp.debian.org/debian/pool/main/l/logrotate/logrotate_${PV}.orig.tar.gz \
+ file://logrotate-3.7.1.patch;patch=1 \
+ file://logrotate.conf"
+
+CFLAGS_prepend += "-I${STAGING_INCDIR} "
+LDFLAGS_prepend += "-L${STAGING_LIBDIR} "
+EXTRA_OEMAKE = "-p"
+
+do_compile() {
+ oe_runmake
+}
+
+do_install () {
+ # Install the binary and conf file
+ install -D -s -m 0755 ${S}/logrotate ${D}${base_sbindir}/logrotate
+ install -D -m 0644 ${WORKDIR}/logrotate.conf ${D}${sysconfdir}/logrotate.conf
+ install -m 0755 -d ${D}${sysconfdir}/logrotate.d
+}
+
+pkg_postinst () {
+ # Add the logrotate line to /etc/crontab
+ grep -q "${base_sbindir}/logrotate" ${sysconfdir}/crontab || echo "*/5 * * * * ${base_sbindir}/logrotate ${sysconfdir}/logrotate.conf" >> ${sysconfdir}/crontab
+}
+
+pkg_postrm() {
+ # Remove the logrotate line from /etc/crontab
+ grep -v ${base_sbindir}/logrotate ${sysconfdir}/crontab > ${sysconfdir}/crontab.no-${PF}
+ mv ${sysconfdir}/crontab.no-${PF} ${sysconfdir}/crontab
+}
+
+CONFFILES += "${sysconfdir}/logrotate.conf"
diff --git a/packages/loudmouth/loudmouth_1.1.1.bb b/packages/loudmouth/loudmouth_1.1.1.bb
new file mode 100644
index 0000000000..7df03251ba
--- /dev/null
+++ b/packages/loudmouth/loudmouth_1.1.1.bb
@@ -0,0 +1,11 @@
+LICENSE = "LGPL"
+DEPENDS = "glib-2.0 gnutls check"
+DESCRIPTION = "Loudmouth is a lightweight and easy-to-use C library for programming with the Jabber protocol."
+
+SRC_URI = "http://ftp.imendio.com/pub/imendio/${PN}/src/${PN}-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/loudmouth/loudmouth_1.2.2.bb b/packages/loudmouth/loudmouth_1.2.2.bb
new file mode 100644
index 0000000000..d8f519b611
--- /dev/null
+++ b/packages/loudmouth/loudmouth_1.2.2.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Loudmouth is a lightweight and easy-to-use C library for programming with the Jabber protocol."
+HOMEPAGE = "http://www.loudmouth-project.org/"
+LICENSE = "LGPL"
+DEPENDS = "glib-2.0 gnutls check"
+
+SRC_URI = "http://ftp.imendio.com/pub/imendio/${PN}/src/${PN}-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/lrzsz/lrzsz_0.12.20.bb b/packages/lrzsz/lrzsz_0.12.20.bb
index 8110661ac1..0a194f9a05 100644
--- a/packages/lrzsz/lrzsz_0.12.20.bb
+++ b/packages/lrzsz/lrzsz_0.12.20.bb
@@ -3,7 +3,7 @@ SECTION = "console/network"
PRIORITY = "standard"
DESCRIPTION = "Tools for zmodem/xmodem/ymodem file transfer"
DEPENDS = ""
-PR = "r2"
+PR = "r3"
SRC_URI = "http://www.ohse.de/uwe/releases/lrzsz-${PV}.tar.gz \
file://autotools.patch;patch=1 \
@@ -15,10 +15,16 @@ inherit autotools gettext
do_install() {
install -d ${D}${bindir}/
install -m 0755 src/lrz src/lsz ${D}${bindir}/
- ln -sf ./lrz ${D}${bindir}/rz
- ln -sf ./lrz ${D}${bindir}/rx
- ln -sf ./lrz ${D}${bindir}/rb
- ln -sf ./lsz ${D}${bindir}/sz
- ln -sf ./lsz ${D}${bindir}/sx
- ln -sf ./lsz ${D}${bindir}/sb
}
+
+pkg_postinst() {
+ for util in rz rx rb sz sx sb; do
+ update-alternatives --install ${bindir}/$util $util lrz 100
+ done
+}
+
+pkg_postrm() {
+ for util in rz rx rb sz sx sb; do
+ update-alternatives --remove $util ${bindir}/lrz
+ done
+} \ No newline at end of file
diff --git a/packages/lsof/lsof_4.77.bb b/packages/lsof/lsof_4.77.bb
index ef82b6179f..054875b861 100644
--- a/packages/lsof/lsof_4.77.bb
+++ b/packages/lsof/lsof_4.77.bb
@@ -2,6 +2,7 @@ DESCRIPTION = "Lsof is a Unix-specific diagnostic tool. \
Its name stands for LiSt Open Files, and it does just that."
SECTION = "devel"
LICENSE = "BSD"
+PR = "r1"
SRC_URI = "ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_${PV}.tar.bz2"
LOCALSRC = "file://${WORKDIR}/lsof_${PV}/lsof_${PV}_src.tar"
@@ -20,7 +21,7 @@ LSOF_OS_linux-uclibc = "linux"
LSOF_OS_linux-gnueabi = "linux"
do_configure () {
- ./Configure ${LSOF_OS}
+ yes | ./Configure ${LSOF_OS}
}
export I = "${STAGING_INCDIR}"
diff --git a/packages/ltp/.mtn2git_empty b/packages/ltp/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ltp/.mtn2git_empty
diff --git a/packages/ltp/ltp-20070228/.mtn2git_empty b/packages/ltp/ltp-20070228/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ltp/ltp-20070228/.mtn2git_empty
diff --git a/packages/ltp/ltp-20070228/cross-compile.patch b/packages/ltp/ltp-20070228/cross-compile.patch
new file mode 100644
index 0000000000..ae956fd8bf
--- /dev/null
+++ b/packages/ltp/ltp-20070228/cross-compile.patch
@@ -0,0 +1,51 @@
+diff -urN ltp-full-20060615.orig/Makefile ltp-full-20060615/Makefile
+--- ltp-full-20060615.orig/Makefile 2006-02-24 10:16:55.000000000 +0800
++++ ltp-full-20060615/Makefile 2006-07-07 17:10:22.000000000 +0800
+@@ -30,11 +30,12 @@
+ endif
+ ifdef CROSS_COMPILER
+ CC=$(CROSS_COMPILER)gcc
++CPP=$(CROSS_COMPILER)g++
+ AR=$(CROSS_COMPILER)ar
+ endif
+
+ export CFLAGS += -Wall $(CROSS_CFLAGS)
+-export CC AR LDFLAGS
++export CC AR LDFLAGS CPP
+
+ -include config.mk
+
+diff -urN ltp-full-20060615.orig/testcases/ballista/ballista/Makefile ltp-full-20060615/testcases/ballista/ballista/Makefile
+--- ltp-full-20060615.orig/testcases/ballista/ballista/Makefile 2006-02-23 08:33:27.000000000 +0800
++++ ltp-full-20060615/testcases/ballista/ballista/Makefile 2006-07-07 17:11:29.000000000 +0800
+@@ -24,7 +24,7 @@
+ ########################
+
+ # compiler info for the host
+-CC = g++ -Wno-deprecated
++CC = $(CPP) -Wno-deprecated
+ CFLAGS = -w -O ${TARGET_DEF}
+ CLIBS = -lpthread -ldl -lnsl -rdynamic
+ TEST_MAN_FILE = selfHost
+diff -urN ltp-full-20060615.orig/testcases/network/nfs/cthon04/tests.init ltp-full-20060615/testcases/network/nfs/cthon04/tests.init
+--- ltp-full-20060615.orig/testcases/network/nfs/cthon04/tests.init 2005-09-01 04:27:17.000000000 +0800
++++ ltp-full-20060615/testcases/network/nfs/cthon04/tests.init 2006-07-07 17:12:28.000000000 +0800
+@@ -73,7 +73,7 @@
+ # Tru64 UNIX
+ # SVR4
+ # Linux
+-PATH=/bin:/usr/bin:/usr/ucb:/usr/ccs/bin:/sbin:/usr/sbin:.
++#PATH=/bin:/usr/bin:/usr/ucb:/usr/ccs/bin:/sbin:/usr/sbin:.
+
+ # Use this path for:
+ # DG/UX
+@@ -104,7 +104,9 @@
+ # Do not remove the following three lines. They may be overridden by
+ # other configuration parameters lower in this file, but these three
+ # variables must be defined.
++ifndef CC
+ CC=cc
++endif
+ CFLAGS=
+ LIBS=
+ LOCKTESTS=tlock
diff --git a/packages/ltp/ltp-20070228/ltp-run b/packages/ltp/ltp-20070228/ltp-run
new file mode 100644
index 0000000000..5d97f00532
--- /dev/null
+++ b/packages/ltp/ltp-20070228/ltp-run
@@ -0,0 +1,4 @@
+#!/bin/sh
+/usr/libexec/ltp/runltp -t 180s > /home/root/testlog.txt
+echo "Benchmark run finished...."
+touch /home/root/testfinished.flag
diff --git a/packages/ltp/ltp-20070228/runltp-path.patch b/packages/ltp/ltp-20070228/runltp-path.patch
new file mode 100644
index 0000000000..dfbbf353ec
--- /dev/null
+++ b/packages/ltp/ltp-20070228/runltp-path.patch
@@ -0,0 +1,13 @@
+Index: runltp
+===================================================================
+--- ltp-full-20060412.orig/runltp 2005-03-12 03:26:14.000000000 +0800
++++ ltp-full-20060412/runltp 2006-04-26 16:42:13.000000000 +0800
+@@ -43,7 +43,7 @@
+ echo "FATAL: unable to change directory to $(dirname $0)"
+ exit 1
+ }
+- export LTPROOT=${PWD}
++ export LTPROOT=/usr/libexec/ltp
+ export TMPBASE="/tmp"
+ export TMP="${TMPBASE}/ltp-$$"
+ export PATH="${PATH}:${LTPROOT}/testcases/bin"
diff --git a/packages/ltp/ltp_20070228.bb b/packages/ltp/ltp_20070228.bb
new file mode 100644
index 0000000000..400d642641
--- /dev/null
+++ b/packages/ltp/ltp_20070228.bb
@@ -0,0 +1,42 @@
+DESCRIPTION = "Linux Test Project"
+HOMEPAGE = "http://ltp.sourceforge.net"
+LICENSE = "GPL"
+SECTION = "console/utils"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/ltp/ltp-full-${PV}.tgz \
+ file://cross-compile.patch;patch=1 \
+ file://runltp-path.patch;patch=1 \
+ file://ltp-run"
+
+S = "${WORKDIR}/ltp-full-${PV}"
+
+EXTRA_OEMAKE_append = " CROSS_COMPILE=${HOST_PREFIX}"
+
+do_compile(){
+ oe_runmake CROSS_COMPILE=${HOST_PREFIX}
+}
+
+do_install(){
+ export CREATE=0
+ export LTPROOT=${D}/usr/libexec/ltp/testcases
+
+ oe_runmake install
+
+ install -d ${D}/usr/libexec/ltp/testcases
+ install -d ${D}/usr/libexec/ltp/pan
+
+ #install testcases
+ #install -m 0755 ${WORKDIR}/testcases ${D}/usr/libexec/ltp/testcases
+ #install -m 0755 ${WORKDIR}/testcases ${D}/usr/libexec/ltp/
+
+ # treecopy testcases pan/pan runtest ver_linux IDcheck.sh \
+ # ${D}/usr/libexec/ltp
+ cp testcases ${D}/usr/libexec/ltp/ -rfp
+ rm ${D}/usr/libexec/ltp/ballista -rf
+ cp pan/pan ${D}/usr/libexec/ltp/pan -p
+ cp runtest ${D}/usr/libexec/ltp/ -rfp
+ cp ver_linux ${D}/usr/libexec/ltp/ -p
+ cp runltp ${D}/usr/libexec/ltp/ -p
+ cp IDcheck.sh ${D}/usr/libexec/ltp/ -p
+}
+
diff --git a/packages/ltrace/files/.mtn2git_empty b/packages/ltrace/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ltrace/files/.mtn2git_empty
diff --git a/packages/ltrace/files/no-usr-include.patch b/packages/ltrace/files/no-usr-include.patch
new file mode 100644
index 0000000000..adadfa8032
--- /dev/null
+++ b/packages/ltrace/files/no-usr-include.patch
@@ -0,0 +1,16 @@
+--- ltrace-0.4.orig/configure.ac
++++ ltrace-0.4/configure.ac
+@@ -41,13 +41,6 @@
+ dnl AC_CHECK_FUNCS(gettimeofday strdup strerror strspn)
+ AC_CHECK_FUNCS(getopt getopt_long)
+
+-for path in /usr/include/elfutils /usr/local/include/elfutils \
+- /usr/include/libelf /usr/local/include/libelf; do
+- if test -f ${path}/gelf.h; then
+- CPPFLAGS="$CPPFLAGS -I ${path}"
+- fi
+-done
+-
+ AC_CHECK_HEADER(gelf.h,,AC_MSG_ERROR([***** gelf.h not found *****]))
+
+ AC_CHECK_LIB(elf,gelf_getdyn)
diff --git a/packages/ltrace/ltrace_0.4.bb b/packages/ltrace/ltrace_0.4.bb
index 4ef906f2f9..bae6d49b65 100644
--- a/packages/ltrace/ltrace_0.4.bb
+++ b/packages/ltrace/ltrace_0.4.bb
@@ -3,28 +3,61 @@ HOMEPAGE = "http://packages.debian.org/unstable/utils/ltrace.html"
SECTION = "devel"
DEPENDS = "libelf"
LICENSE = "GPL"
-PR = "r0"
+PR = "r1"
-SRC_URI = "ftp://ftp.debian.org/debian/pool/main/l/ltrace/ltrace_0.4.orig.tar.gz \
- ftp://ftp.debian.org/debian/pool/main/l/ltrace/ltrace_0.4-1.diff.gz;patch=1"
+SRC_URI = "${DEBIAN_MIRROR}/main/l/ltrace/ltrace_0.4.orig.tar.gz \
+ ${DEBIAN_MIRROR}/main/l/ltrace/ltrace_0.4-1.diff.gz;patch=1 \
+ file://no-usr-include.patch;patch=1"
inherit autotools
PARALLEL_MAKE = ""
-EXTRA_OEMAKE = "ARCH=${LTRACE_ARCH} \
- INSTALL_FILE='$(INSTALL) -p -m 0644' \
+EXTRA_OEMAKE = "INSTALL_FILE='$(INSTALL) -p -m 0644' \
INSTALL_PROGRAM='$(INSTALL) -p -m 0755' \
INSTALL_SCRIPT='$(INSTALL) -p -m 0755' \
INSTALL_DIR='$(INSTALL) -p -d -m 0755' "
export TARGET_CFLAGS = "${SELECTED_OPTIMIZATION} -isystem ${STAGING_DIR}/${TARGET_SYS}/include"
-LTRACE_ARCH = "${TARGET_ARCH}"
-LTRACE_ARCH_x86 = "i386"
-
do_configure_prepend() {
ln -sf ./linux-gnu sysdeps/linux-gnueabi
}
do_compile() {
- oe_runmake LDFLAGS=${TARGET_LDFLAGS} LIBS="-lsupc++ -liberty -Wl,-Bstatic -lelf -Wl,-Bdynamic" ${EXTRA_OEMAKE}
+ case ${TARGET_ARCH} in
+ alpha*) LTRACE_ARCH=alpha ;;
+ arm*) LTRACE_ARCH=arm ;;
+ cris*) LTRACE_ARCH=cris ;;
+ hppa*) LTRACE_ARCH=parisc ;;
+ i*86*) LTRACE_ARCH=i386 ;;
+ ia64*) LTRACE_ARCH=ia64 ;;
+ mips*) LTRACE_ARCH=mips ;;
+ m68k*) LTRACE_ARCH=m68k ;;
+ powerpc*) LTRACE_ARCH=ppc ;;
+ s390*) LTRACE_ARCH=s390 ;;
+ sh*) LTRACE_ARCH=sh ;;
+ sparc64*) LTRACE_ARCH=sparc64 ;;
+ sparc*) LTRACE_ARCH=sparc ;;
+ x86_64*) LTRACE_ARCH=x86_64 ;;
+ esac
+ oe_runmake LDFLAGS=${TARGET_LDFLAGS} LIBS="-lsupc++ -liberty -Wl,-Bstatic -lelf -Wl,-Bdynamic" ${EXTRA_OEMAKE} ARCH=${LTRACE_ARCH}
+}
+
+do_install() {
+ case ${TARGET_ARCH} in
+ alpha*) LTRACE_ARCH=alpha ;;
+ arm*) LTRACE_ARCH=arm ;;
+ cris*) LTRACE_ARCH=cris ;;
+ hppa*) LTRACE_ARCH=parisc ;;
+ i*86*) LTRACE_ARCH=i386 ;;
+ ia64*) LTRACE_ARCH=ia64 ;;
+ mips*) LTRACE_ARCH=mips ;;
+ m68k*) LTRACE_ARCH=m68k ;;
+ powerpc*) LTRACE_ARCH=ppc ;;
+ s390*) LTRACE_ARCH=s390 ;;
+ sh*) LTRACE_ARCH=sh ;;
+ sparc64*) LTRACE_ARCH=sparc64 ;;
+ sparc*) LTRACE_ARCH=sparc ;;
+ x86_64*) LTRACE_ARCH=x86_64 ;;
+ esac
+ oe_runmake install ${EXTRA_OEMAKE} ARCH=${LTRACE_ARCH} INSTALL=${STAGING_BINDIR_NATIVE}/install DESTDIR=${D}
}
diff --git a/packages/lvm2/lvm2_2.01.15.bb b/packages/lvm2/lvm2_2.01.15.bb
index f4e84fb064..ee726f7e6b 100644
--- a/packages/lvm2/lvm2_2.01.15.bb
+++ b/packages/lvm2/lvm2_2.01.15.bb
@@ -1,7 +1,7 @@
SECTION = "utils"
DESCRIPTION = "LVM2 is a set of utilities to manage logical volumes in Linux."
LICENSE = "GPL"
-PR = ""
+PR = "r0"
DEPENDS = "device-mapper"
S = "${WORKDIR}/LVM2.${PV}"
diff --git a/packages/lzo/lzo-native_1.08.bb b/packages/lzo/lzo-native_1.08.bb
new file mode 100644
index 0000000000..3de88e34bf
--- /dev/null
+++ b/packages/lzo/lzo-native_1.08.bb
@@ -0,0 +1,3 @@
+require lzo_${PV}.bb
+inherit native
+S = "${WORKDIR}/lzo-${PV}" \ No newline at end of file
diff --git a/packages/m4/m4-native_1.4.2.bb b/packages/m4/m4-native_1.4.4.bb
index 8beb8748e3..8beb8748e3 100644
--- a/packages/m4/m4-native_1.4.2.bb
+++ b/packages/m4/m4-native_1.4.4.bb
diff --git a/packages/m4/m4/make.patch b/packages/m4/m4/make.patch
deleted file mode 100644
index 3577b0b7db..0000000000
--- a/packages/m4/m4/make.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- m4-1.4.2/doc/Makefile.in~make
-+++ m4-1.4.2/doc/Makefile.in
-@@ -57,9 +57,9 @@
- date > $(srcdir)/stamp-vti
-
- install: all
-- $(srcdir)/../mkinstalldirs $(infodir)
-+ $(srcdir)/../mkinstalldirs $(DESTDIR)$(infodir)
- cd $(srcdir) && for file in m4.info*; do \
-- $(INSTALL_DATA) $$file $(infodir)/$$file; \
-+ $(INSTALL_DATA) $$file $(DESTDIR)$(infodir)/$$file; \
- done
-
- uninstall:
---- m4-1.4.2/src/Makefile.in~make
-+++ m4-1.4.2/src/Makefile.in
-@@ -35,7 +35,7 @@
- prefix = @prefix@
- exec_prefix = @exec_prefix@
- transform = @program_transform_name@
--bindir = $(exec_prefix)/bin
-+bindir = @bindir@
-
- COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
- LINK = $(CC) $(LDFLAGS) -o $@
-@@ -84,8 +84,8 @@
- $(LINK) ansi2knr.o $(LIBS)
-
- install: all
-- $(srcdir)/../mkinstalldirs $(bindir)
-- $(INSTALL_PROGRAM) m4 $(bindir)/`echo m4 | sed '$(transform)'`
-+ $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir)
-+ $(INSTALL_PROGRAM) m4 $(DESTDIR)$(bindir)/`echo m4 | sed '$(transform)'`
-
- uninstall:
- rm -f $(bindir)/`echo m4 | sed '$(transform)'`
diff --git a/packages/m4/m4_1.4.2.bb b/packages/m4/m4_1.4.2.bb
deleted file mode 100644
index 05a9b5b0a5..0000000000
--- a/packages/m4/m4_1.4.2.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "GNU m4 is an implementation of the traditional Unix macro \
-processor."
-LICENSE = "GPL"
-SRC_URI = "${GNU_MIRROR}/m4/m4-${PV}.tar.gz \
- file://make.patch;patch=1"
-S = "${WORKDIR}/m4-${PV}"
-
-inherit autotools
-
-EXTRA_AUTORECONF = "--exclude=autopoint,aclocal"
-EXTRA_OEMAKE += "'infodir=${infodir}'"
diff --git a/packages/m4/m4_1.4.4.bb b/packages/m4/m4_1.4.4.bb
new file mode 100644
index 0000000000..0c9f4c38ac
--- /dev/null
+++ b/packages/m4/m4_1.4.4.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "GNU m4 is an implementation of the traditional Unix macro \
+processor."
+LICENSE = "GPL"
+SRC_URI = "${GNU_MIRROR}/m4/m4-${PV}.tar.gz"
+S = "${WORKDIR}/m4-${PV}"
+
+inherit autotools
+
+EXTRA_AUTORECONF = "--exclude=autopoint,aclocal"
+EXTRA_OEMAKE += "'infodir=${infodir}'"
diff --git a/packages/m4/m4_1.4.8.bb b/packages/m4/m4_1.4.8.bb
new file mode 100644
index 0000000000..90f817d1f3
--- /dev/null
+++ b/packages/m4/m4_1.4.8.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "GNU m4 is an implementation of the traditional Unix macro \
+processor."
+LICENSE = "GPL"
+SRC_URI = "${GNU_MIRROR}/m4/m4-${PV}.tar.gz"
+S = "${WORKDIR}/m4-${PV}"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit autotools
+
+EXTRA_OEMAKE += "'infodir=${infodir}'"
+
+do_configure() {
+ oe_runconf
+}
diff --git a/packages/madfu/.mtn2git_empty b/packages/madfu/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/madfu/.mtn2git_empty
diff --git a/packages/madfu/files/.mtn2git_empty b/packages/madfu/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/madfu/files/.mtn2git_empty
diff --git a/packages/madfu/files/autofoo.patch b/packages/madfu/files/autofoo.patch
new file mode 100644
index 0000000000..a89d38b144
--- /dev/null
+++ b/packages/madfu/files/autofoo.patch
@@ -0,0 +1,54 @@
+--- madfuload-1.2/configure.org 2007-04-04 13:30:55.186393000 +0200
++++ madfuload-1.2/configure 2007-04-04 13:33:26.286393000 +0200
+@@ -2831,50 +2831,7 @@
+ else
+ udev_dir="/etc/udev"
+ fi;
+-as_ac_File=`echo "ac_cv_file_$udev_dir/udev.conf" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $udev_dir/udev.conf" >&5
+-echo $ECHO_N "checking for $udev_dir/udev.conf... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_File+set}\" = set"; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- test "$cross_compiling" = yes &&
+- { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
+-echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
+- { (exit 1); exit 1; }; }
+-if test -r "$udev_dir/udev.conf"; then
+- eval "$as_ac_File=yes"
+-else
+- eval "$as_ac_File=no"
+-fi
+-fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6
+-if test `eval echo '${'$as_ac_File'}'` = yes; then
+- udev_conf="$udev_dir/udev.conf"
+-else
+- udev_conf=""
+-fi
+-
+-
+-echo "$as_me:$LINENO: checking for udev rules directory" >&5
+-echo $ECHO_N "checking for udev rules directory... $ECHO_C" >&6
+-udev_rules=""
+-if test -r "$udev_conf"; then
+- udev_rules=`. "$udev_conf"; echo "$udev_rules"`
+-fi
+-if test -n "$udev_rules"; then
+- echo "$as_me:$LINENO: result: $udev_rules" >&5
+-echo "${ECHO_T}$udev_rules" >&6
+-else
+- udev_rules="$udev_dir/rules.d"
+- echo "$as_me:$LINENO: result: not found; assuming $udev_rules" >&5
+-echo "${ECHO_T}not found; assuming $udev_rules" >&6
+-fi
+-if test ! -d "$udev_rules"; then
+- { { echo "$as_me:$LINENO: error: $udev_rules not found" >&5
+-echo "$as_me: error: $udev_rules not found" >&2;}
+- { (exit 1); exit 1; }; }
+-fi
++udev_rules="$udev_dir/rules.d"
+ UDEV_RULES_DIR=$udev_rules
+
+
diff --git a/packages/madfu/madfu_1.2.bb b/packages/madfu/madfu_1.2.bb
new file mode 100644
index 0000000000..354e65aced
--- /dev/null
+++ b/packages/madfu/madfu_1.2.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Firmware loader for m-audio devices"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "http://heanet.dl.sourceforge.net/sourceforge/usb-midi-fw/madfuload-1.2.tar.gz \
+ file://autofoo.patch;patch=1"
+
+S = "${WORKDIR}/madfuload-1.2"
+
+inherit autotools
+
+do_configure() {
+ oe_runconf
+}
+do_compile() {
+ oe_runmake
+}
+do_install() {
+ install -d ${D}/${sbindir}
+ install -m 755 ${S}/madfuload ${D}/${sbindir}
+ install -d ${D}/${libdir}/firmware
+ install -m 644 ${S}/*.bin ${D}/${libdir}/firmware
+ install -d ${D}/${sysconfdir}/udev/rules
+ install -m 644 ${S}/42-madfuload.rules ${D}/${sysconfdir}/udev/rules
+}
+
+FILES_${PN} += "${libdir}/firmware/"
diff --git a/packages/madwifi/files/10-xscale-be-elf-copts.patch b/packages/madwifi/files/10-xscale-be-elf-copts.patch
index 84915e03e2..1a08f3756e 100644
--- a/packages/madwifi/files/10-xscale-be-elf-copts.patch
+++ b/packages/madwifi/files/10-xscale-be-elf-copts.patch
@@ -1,10 +1,10 @@
---- madwifi-ng/hal/public/xscale-be-elf.inc~ 2006-02-11 22:34:39.000000000 +1030
-+++ madwifi-ng/hal/public/xscale-be-elf.inc 2006-04-12 06:10:47.736463272 +0930
+--- madwifi.orig/hal/public/xscale-be-elf.inc 2007-01-03 23:42:09.000000000 -0600
++++ madwifi/hal/public/xscale-be-elf.inc 2007-01-03 23:48:50.000000000 -0600
@@ -77,5 +77,5 @@
LDOPTS= -EB
COPTS+= -DAH_BYTE_ORDER=AH_BIG_ENDIAN
-COPTS+= -march=armv4 -mbig-endian -fno-strict-aliasing -fno-common -mapcs-32 \
-- -mtune=xscale -mshort-load-bytes -msoft-float -mfp=2
+- -mtune=xscale -mshort-load-bytes
+COPTS+= -march=armv4 -mbig-endian -fno-strict-aliasing -fno-common \
-+ -mtune=xscale -msoft-float -mfp=2
++ -mtune=xscale
diff --git a/packages/madwifi/files/10-xscale-le-elf-copts.patch b/packages/madwifi/files/10-xscale-le-elf-copts.patch
index 7ab46e16b3..c4d9937220 100644
--- a/packages/madwifi/files/10-xscale-le-elf-copts.patch
+++ b/packages/madwifi/files/10-xscale-le-elf-copts.patch
@@ -1,8 +1,8 @@
---- madwifi-ng/hal/public/xscale-le-elf.inc~ 2006-04-12 06:09:56.669226672 +0930
-+++ madwifi-ng/hal/public/xscale-le-elf.inc 2006-04-12 05:52:11.658132968 +0930
+--- madwifi.orig/hal/public/xscale-le-elf.inc 2007-01-03 23:42:06.000000000 -0600
++++ madwifi/hal/public/xscale-le-elf.inc 2007-01-03 23:48:50.000000000 -0600
@@ -79,4 +79,4 @@
LDOPTS= -EL
COPTS+= -DAH_BYTE_ORDER=AH_LITTLE_ENDIAN
COPTS+= -march=armv4 -mlittle-endian -fno-strict-aliasing -fno-common \
-- -mapcs-32 -mtune=xscale -mshort-load-bytes -msoft-float -mfp=2
-+ -mtune=xscale -msoft-float -mfp=2
+- -mapcs-32 -mtune=xscale -mshort-load-bytes
++ -mtune=xscale
diff --git a/packages/madwifi/files/20-xscale-VFP-wackelf.patch b/packages/madwifi/files/20-xscale-VFP-wackelf.patch
new file mode 100644
index 0000000000..a47eed79e7
--- /dev/null
+++ b/packages/madwifi/files/20-xscale-VFP-wackelf.patch
@@ -0,0 +1,20 @@
+--- madwifi.orig/ath_hal/Makefile 2007-01-03 23:44:10.000000000 -0600
++++ madwifi/ath_hal/Makefile 2007-01-03 23:47:55.000000000 -0600
+@@ -81,12 +81,16 @@
+ quiet_cmd_uudecode = UUDECODE $@
+ cmd_uudecode = $(obj)/uudecode -o $@ $<
+
+-$(obj)/$(TARGET).hal.o: $(HAL)/public/$(TARGET).hal.o.uu $(obj)/uudecode
++$(obj)/wackelf: $(HAL)/public/wackelf.c
++ $(HOSTCC) $(HOSTCFLAGS) -o $@ $<
++
++$(obj)/$(TARGET).hal.o: $(HAL)/public/$(TARGET).hal.o.uu $(obj)/uudecode $(obj)/wackelf
+ ifdef LINUX24
+ $(Q)$(obj)/uudecode -o $@ $<
+ else
+ $(call if_changed,uudecode)
+ endif
++ $(Q)$(obj)/wackelf -fpa $@
+
+ install:
+ test -d $(DESTDIR)/$(KMODPATH) || mkdir -p $(DESTDIR)/$(KMODPATH)
diff --git a/packages/madwifi/madwifi-modules-0.9.3/.mtn2git_empty b/packages/madwifi/madwifi-modules-0.9.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/madwifi/madwifi-modules-0.9.3/.mtn2git_empty
diff --git a/packages/madwifi/madwifi-modules-0.9.3/madwifi-devname.patch b/packages/madwifi/madwifi-modules-0.9.3/madwifi-devname.patch
new file mode 100644
index 0000000000..8f56b0485e
--- /dev/null
+++ b/packages/madwifi/madwifi-modules-0.9.3/madwifi-devname.patch
@@ -0,0 +1,115 @@
+diff -uNr madwifi-0.9.3-orig/ath/if_ath.c madwifi-0.9.3/ath/if_ath.c
+--- madwifi-0.9.3-orig/ath/if_ath.c 2007-03-03 07:20:46.000000000 +0100
++++ madwifi-0.9.3/ath/if_ath.c 2007-03-27 20:02:15.004192220 +0200
+@@ -903,7 +903,8 @@
+
+ if (autocreatemode != -1) {
+ rtnl_lock();
+- error = ieee80211_create_vap(ic, "ath%d", dev,
++ /*error = ieee80211_create_vap(ic, "ath%d", dev,*/
++ error = ieee80211_create_vap(ic, "wlan%d", dev,
+ autocreatemode, IEEE80211_CLONE_BSSID);
+ rtnl_unlock();
+ if (error)
+@@ -9730,7 +9731,7 @@
+ };
+ static ctl_table ath_ath_table[] = {
+ { .ctl_name = DEV_ATH,
+- .procname = "ath",
++ .procname = "wlan",
+ .mode = 0555,
+ .child = ath_static_sysctls
+ }, { 0 }
+diff -uNr madwifi-0.9.3-orig/ath_hal/ah_os.c madwifi-0.9.3/ath_hal/ah_os.c
+--- madwifi-0.9.3-orig/ath_hal/ah_os.c 2007-02-21 07:46:24.000000000 +0100
++++ madwifi-0.9.3/ath_hal/ah_os.c 2007-03-27 20:02:05.571774828 +0200
+@@ -503,7 +503,7 @@
+ };
+ static ctl_table ath_ath_table[] = {
+ { .ctl_name = DEV_ATH,
+- .procname = "ath",
++ .procname = "wlan",
+ .mode = 0555,
+ .child = ath_hal_table
+ }, { 0 }
+diff -uNr madwifi-0.9.3-orig/ath_rate/amrr/amrr.c madwifi-0.9.3/ath_rate/amrr/amrr.c
+--- madwifi-0.9.3-orig/ath_rate/amrr/amrr.c 2007-02-21 07:46:24.000000000 +0100
++++ madwifi-0.9.3/ath_rate/amrr/amrr.c 2007-03-27 20:01:47.450972963 +0200
+@@ -530,7 +530,7 @@
+ };
+ static ctl_table ath_ath_table[] = {
+ { .ctl_name = DEV_ATH,
+- .procname = "ath",
++ .procname = "wlan",
+ .mode = 0555,
+ .child = ath_rate_table
+ }, { 0 }
+diff -uNr madwifi-0.9.3-orig/ath_rate/onoe/onoe.c madwifi-0.9.3/ath_rate/onoe/onoe.c
+--- madwifi-0.9.3-orig/ath_rate/onoe/onoe.c 2007-02-21 07:46:24.000000000 +0100
++++ madwifi-0.9.3/ath_rate/onoe/onoe.c 2007-03-27 20:01:35.362438027 +0200
+@@ -477,7 +477,7 @@
+ };
+ static ctl_table ath_ath_table[] = {
+ { .ctl_name = DEV_ATH,
+- .procname = "ath",
++ .procname = "wlan",
+ .mode = 0555,
+ .child = ath_rate_table
+ }, { 0 }
+diff -uNr madwifi-0.9.3-orig/tools/80211debug.c madwifi-0.9.3/tools/80211debug.c
+--- madwifi-0.9.3-orig/tools/80211debug.c 2006-12-08 18:20:08.000000000 +0100
++++ madwifi-0.9.3/tools/80211debug.c 2007-03-27 20:07:02.808926708 +0200
+@@ -183,7 +183,7 @@
+ int
+ main(int argc, char *argv[])
+ {
+- const char *ifname = "ath0";
++ const char *ifname = "wlan0";
+ const char *cp, *tp;
+ const char *sep;
+ int op, i;
+diff -uNr madwifi-0.9.3-orig/tools/80211stats.c madwifi-0.9.3/tools/80211stats.c
+--- madwifi-0.9.3-orig/tools/80211stats.c 2007-02-07 04:18:49.000000000 +0100
++++ madwifi-0.9.3/tools/80211stats.c 2007-03-27 20:04:16.297559340 +0200
+@@ -252,7 +252,7 @@
+ struct iwreq iwr;
+ int allnodes = 0;
+
+- const char *ifname = "ath0";
++ const char *ifname = "wlan0";
+
+ s = socket(AF_INET, SOCK_DGRAM, 0);
+ if (s < 0)
+diff -uNr madwifi-0.9.3-orig/tools/athdebug.c madwifi-0.9.3/tools/athdebug.c
+--- madwifi-0.9.3-orig/tools/athdebug.c 2006-12-08 18:20:08.000000000 +0100
++++ madwifi-0.9.3/tools/athdebug.c 2007-03-27 20:03:32.583625082 +0200
+@@ -185,7 +185,7 @@
+ #ifdef __linux__
+ const char *ifname = "wifi0";
+ #else
+- const char *ifname = "ath0";
++ const char *ifname = "wlan0";
+ #endif
+ const char *cp, *tp;
+ const char *sep;
+@@ -209,7 +209,7 @@
+ #ifdef __linux__
+ snprintf(oid, sizeof(oid), "dev.%s.debug", ifname);
+ #else
+- snprintf(oid, sizeof(oid), "dev.ath.%s.debug", ifname+3);
++ snprintf(oid, sizeof(oid), "dev.wlan.%s.debug", ifname+3);
+ #endif
+ debuglen = sizeof(debug);
+ if (sysctlbyname(oid, &debug, &debuglen, NULL, 0) < 0)
+diff -uNr madwifi-0.9.3-orig/tools/athstats.c madwifi-0.9.3/tools/athstats.c
+--- madwifi-0.9.3-orig/tools/athstats.c 2007-01-12 03:45:36.000000000 +0100
++++ madwifi-0.9.3/tools/athstats.c 2007-03-27 20:03:54.176580535 +0200
+@@ -229,7 +229,7 @@
+ #ifdef __linux__
+ const char *ifname = "wifi0";
+ #else
+- const char *ifname = "ath0";
++ const char *ifname = "wlan0";
+ #endif
+ int s;
+ struct ifreq ifr;
diff --git a/packages/madwifi/madwifi-modules-0.9.3/madwifi-skbpanic.patch b/packages/madwifi/madwifi-modules-0.9.3/madwifi-skbpanic.patch
new file mode 100644
index 0000000000..bad4989f60
--- /dev/null
+++ b/packages/madwifi/madwifi-modules-0.9.3/madwifi-skbpanic.patch
@@ -0,0 +1,16 @@
+--- madwifi-0.9.3-orig/ath/if_ath.c 2007-04-12 12:53:01.000000000 +0200
++++ madwifi-0.9.3/ath/if_ath.c 2007-04-12 12:40:37.078056016 +0200
+@@ -5634,6 +5634,13 @@
+ sc->sc_devstats.rx_packets++;
+ sc->sc_devstats.rx_bytes += len;
+
++ if((skb->tail + len) > skb->end) {
++ printk(" --------- found dodgy wifi rx skb_put\n");
++ dev_kfree_skb(skb);
++ skb = NULL;
++ goto rx_next;
++ }
++
+ skb_put(skb, len);
+ skb->protocol = __constant_htons(ETH_P_CONTROL);
+
diff --git a/packages/madwifi/madwifi-modules_0.9.3.bb b/packages/madwifi/madwifi-modules_0.9.3.bb
new file mode 100644
index 0000000000..523b01c9e0
--- /dev/null
+++ b/packages/madwifi/madwifi-modules_0.9.3.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "Linux driver for 802.11a/b/g universal NIC cards using Atheros chip sets"
+SECTION = "base"
+PRIORITY = "optional"
+LICENSE = "GPL"
+RDEPENDS = "kernel (${KERNEL_VERSION}) wireless-tools (>=27)"
+DEPENDS = "virtual/kernel"
+CONFLICTS = "hostap-daemon (<0.4.8)"
+SRCDATE = "20050803"
+PV = "0.9.3"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/madwifi/madwifi-${PV}.tar.bz2 \
+ file://madwifi-devname.patch;patch=1 \
+ file://madwifi-skbpanic.patch;patch=1"
+S = "${WORKDIR}/madwifi-${PV}"
+
+inherit module-base
+
+# Hack Alert :D
+ARCH_mipsel = "mips"
+EXTRA_OEMAKE_mtx-1 = "TARGET=mips-le-elf KERNELPATH=${STAGING_KERNEL_DIR} KERNELRELEASE=${KERNEL_VERSION} TOOLPREFIX=${TARGET_PREFIX} \
+COPTS='-G 0 -mno-abicalls -fno-pic -Wa,--trap -fno-strict-aliasing -fno-common -fomit-frame-pointer -mlong-calls -DATH_PCI'"
+EXTRA_OEMAKE_mtx-2 = "TARGET=mips-le-elf KERNELPATH=${STAGING_KERNEL_DIR} KERNELRELEASE=${KERNEL_VERSION} TOOLPREFIX=${TARGET_PREFIX} \
+COPTS='-G 0 -mno-abicalls -fno-pic -Wa,--trap -fno-strict-aliasing -fno-common -fomit-frame-pointer -mlong-calls -DATH_PCI'"
+
+do_compile() {
+ oe_runmake
+ cd tools; oe_runmake
+}
+
+do_install() {
+ oe_runmake DESTDIR=${D} install
+ install -d ${D}/${sbindir}
+ cd tools;
+ oe_runmake DESTDIR=${D} BINDIR=${sbindir} install
+ install -m 755 athchans athctrl athkey ${D}/${sbindir}
+}
+
+do_stage() {
+ # hostapd and wpa_supplicant need these files
+ install -d ${STAGING_INCDIR}/madwifi/net80211/ ${STAGING_INCDIR}/madwifi/include
+ install -m 0644 net80211/*.h ${STAGING_INCDIR}/madwifi/net80211/
+ install -m 0644 include/compat.h ${STAGING_INCDIR}/madwifi/include/
+ cd ${STAGING_INCDIR}/madwifi/net80211/
+ rm -f compat.h; ln -s ../include/compat.h .
+}
+
+pkg_postinst() {
+if test "x$D" != "x"; then
+ exit 1
+else
+ depmod -ae
+fi
+}
+
+PACKAGES = "madwifi-tools ${PN}"
+FILES_${PN} = "/lib/modules/"
+FILES_madwifi-tools = "/usr/sbin/"
diff --git a/packages/madwifi/madwifi-ng-r1844-20061208/10-xscale-be-elf-copts.patch b/packages/madwifi/madwifi-ng-r1844-20061208/10-xscale-be-elf-copts.patch
deleted file mode 100644
index f285540d06..0000000000
--- a/packages/madwifi/madwifi-ng-r1844-20061208/10-xscale-be-elf-copts.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: madwifi-ng-r1844-20061208/hal/public/xscale-be-elf.inc
-===================================================================
---- madwifi-ng-r1844-20061208.orig/hal/public/xscale-be-elf.inc
-+++ madwifi-ng-r1844-20061208/hal/public/xscale-be-elf.inc
-@@ -77,5 +77,5 @@ AH_REGOPS_FUNC=1
-
- LDOPTS= -EB
- COPTS+= -DAH_BYTE_ORDER=AH_BIG_ENDIAN
--COPTS+= -march=armv4 -mbig-endian -fno-strict-aliasing -fno-common -mapcs-32 \
-- -mtune=xscale -mshort-load-bytes
-+COPTS+= -march=armv4 -mbig-endian -fno-strict-aliasing -fno-common \
-+ -mtune=xscale -msoft-float -mfp=2
diff --git a/packages/madwifi/madwifi-ng-r1844-20061208/10-xscale-le-elf-copts.patch b/packages/madwifi/madwifi-ng-r1844-20061208/10-xscale-le-elf-copts.patch
deleted file mode 100644
index 3224324699..0000000000
--- a/packages/madwifi/madwifi-ng-r1844-20061208/10-xscale-le-elf-copts.patch
+++ /dev/null
@@ -1,10 +0,0 @@
-Index: madwifi-ng-r1844-20061208/hal/public/xscale-le-elf.inc
-===================================================================
---- madwifi-ng-r1844-20061208.orig/hal/public/xscale-le-elf.inc
-+++ madwifi-ng-r1844-20061208/hal/public/xscale-le-elf.inc
-@@ -79,4 +79,4 @@ AH_REGOPS_FUNC=1
- LDOPTS= -EL
- COPTS+= -DAH_BYTE_ORDER=AH_LITTLE_ENDIAN
- COPTS+= -march=armv4 -mlittle-endian -fno-strict-aliasing -fno-common \
-- -mapcs-32 -mtune=xscale -mshort-load-bytes
-+ -mtune=xscale -msoft-float -mfp=2
diff --git a/packages/madwifi/madwifi-ng_r.inc b/packages/madwifi/madwifi-ng_r.inc
index 215d8c2885..2f476a8b3c 100644
--- a/packages/madwifi/madwifi-ng_r.inc
+++ b/packages/madwifi/madwifi-ng_r.inc
@@ -4,20 +4,30 @@ PRIORITY = "optional"
LICENSE = "GPL"
RDEPENDS = "kernel (${KERNEL_VERSION})"
DEPENDS = "virtual/kernel"
-PR="r0"
+PR="r3"
+
+WACKELF_SRC_URI = ""
+WACKELF_SRC_URI_ixp4xx = " file://20-xscale-VFP-wackelf.patch;patch=1"
+WACKELF_SRC_URI_compulab-pxa270 = " file://20-xscale-VFP-wackelf.patch;patch=1"
SRC_URI = "http://snapshots.madwifi.org/${PN}/${PN}-${PV}.tar.gz \
file://10-xscale-be-elf-copts.patch;patch=1 \
file://10-xscale-le-elf-copts.patch;patch=1 \
- file://10-sh4-le-elf-copts.patch;patch=1"
+ file://10-sh4-le-elf-copts.patch;patch=1 \
+ ${WACKELF_SRC_URI}"
S = "${WORKDIR}/${PN}-${PV}"
inherit module-base
+ARCH_efika="powerpc"
+ARCH_dht-walnut="ppc"
+
EXTRA_OEMAKE = "LDFLAGS= KERNELPATH=${STAGING_KERNEL_DIR} KERNELRELEASE=${KERNEL_VERSION} TOOLPREFIX=${TARGET_PREFIX}"
-EXTRA_OEMAKE_prepend_slugos = "TARGET=xscale-${ARCH_BYTE_SEX}-elf "
+EXTRA_OEMAKE_prepend_ixp4xxle = "TARGET=xscale-le-elf "
+EXTRA_OEMAKE_prepend_ixp4xxbe = "TARGET=xscale-be-elf "
+
do_compile() {
oe_runmake all
diff --git a/packages/madwifi/madwifi-ng_r1527-20060425.bb b/packages/madwifi/madwifi-ng_r1527-20060425.bb
deleted file mode 100644
index 84af37257d..0000000000
--- a/packages/madwifi/madwifi-ng_r1527-20060425.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require madwifi-ng_r.inc
-PR="r0"
diff --git a/packages/madwifi/madwifi-ng_r1692-20060723.bb b/packages/madwifi/madwifi-ng_r1692-20060723.bb
deleted file mode 100644
index 6268f2b78f..0000000000
--- a/packages/madwifi/madwifi-ng_r1692-20060723.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require madwifi-ng_r.inc
-PR="r1"
diff --git a/packages/madwifi/madwifi-ng_r2100-20070210.bb b/packages/madwifi/madwifi-ng_r2100-20070210.bb
new file mode 100644
index 0000000000..42d8ccafe4
--- /dev/null
+++ b/packages/madwifi/madwifi-ng_r2100-20070210.bb
@@ -0,0 +1,3 @@
+PR = "r0"
+
+require madwifi-ng_r.inc
diff --git a/packages/madwifi/madwifi-ng_r2156-20070225.bb b/packages/madwifi/madwifi-ng_r2156-20070225.bb
new file mode 100644
index 0000000000..42d8ccafe4
--- /dev/null
+++ b/packages/madwifi/madwifi-ng_r2156-20070225.bb
@@ -0,0 +1,3 @@
+PR = "r0"
+
+require madwifi-ng_r.inc
diff --git a/packages/madwifi/madwifi-ng_r2182-20070308.bb b/packages/madwifi/madwifi-ng_r2182-20070308.bb
new file mode 100644
index 0000000000..42d8ccafe4
--- /dev/null
+++ b/packages/madwifi/madwifi-ng_r2182-20070308.bb
@@ -0,0 +1,3 @@
+PR = "r0"
+
+require madwifi-ng_r.inc
diff --git a/packages/madwifi/madwifi-ng_r2187-20070309.bb b/packages/madwifi/madwifi-ng_r2187-20070309.bb
new file mode 100644
index 0000000000..42d8ccafe4
--- /dev/null
+++ b/packages/madwifi/madwifi-ng_r2187-20070309.bb
@@ -0,0 +1,3 @@
+PR = "r0"
+
+require madwifi-ng_r.inc
diff --git a/packages/maemo-mapper/maemo-mapper-nohildon_svn.bb b/packages/maemo-mapper/maemo-mapper-nohildon_svn.bb
index b06df25359..ceda4ff811 100644
--- a/packages/maemo-mapper/maemo-mapper-nohildon_svn.bb
+++ b/packages/maemo-mapper/maemo-mapper-nohildon_svn.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "GPS navigation/map display software"
LICENSE = "GPL"
-DEPENDS = "sqlite3 gtk+ gnome-vfs-dbus dbus bluez-libs"
+DEPENDS = "sqlite3 gtk+ gnome-vfs dbus bluez-libs"
RDEPENDS = "bluez-utils"
PV = "1.2.4+svn${SRCDATE}"
PR = "r1"
diff --git a/packages/maemo/gconf-osso/free-entry-fix.diff b/packages/maemo/gconf-osso/free-entry-fix.diff
deleted file mode 100644
index 43e45a7be1..0000000000
--- a/packages/maemo/gconf-osso/free-entry-fix.diff
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -ur GConf-2.6.4/gconf/gconf-client.c GConf-2.6.4.new/gconf/gconf-client.c
---- GConf-2.6.4/gconf/gconf-client.c 2004-09-19 15:29:35.000000000 +0300
-+++ GConf-2.6.4.new/gconf/gconf-client.c 2005-04-08 10:59:46.268506800 +0300
-@@ -776,7 +776,6 @@
- static gboolean
- clear_cache_foreach (char* key, GConfEntry* entry, GConfClient* client)
- {
-- g_free (key);
- gconf_entry_free (entry);
-
- return TRUE;
diff --git a/packages/maemo/gconf-osso/gconf-daemon-dbus-oe.sh b/packages/maemo/gconf-osso/gconf-daemon-dbus-oe.sh
deleted file mode 100755
index 90dfdb7eb0..0000000000
--- a/packages/maemo/gconf-osso/gconf-daemon-dbus-oe.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-# GConf daemon startup script for D-BUS activation
-if [ -x /usr/sbin/dsmetool ]; then
- /usr/sbin/dsmetool -U messagebus -n -1 -t /usr/lib/gconf2/gconfd-2
-else
- exec /usr/libexec/gconfd-2
-fi
diff --git a/packages/maemo/gconf-osso/gconf-daemon-oe.sh b/packages/maemo/gconf-osso/gconf-daemon-oe.sh
deleted file mode 100644
index a14954de6e..0000000000
--- a/packages/maemo/gconf-osso/gconf-daemon-oe.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-# GConf daemon startup/shutdown script
-
-PROG=/usr/libexec/gconfd-2
-SVC="GConf daemon"
-
-case "$1" in
-start) START=TRUE
- ;;
-stop) START=FALSE
- ;;
-*) echo "Usage: $0 {start|stop}"
- exit 1
- ;;
-esac
-
-if [ $START = TRUE ]; then
- $LAUNCHWRAPPER start "$SVC" $PROG
-else
- $LAUNCHWRAPPER stop"$SVC" $PROG
-fi
diff --git a/packages/maemo/gconf-osso/gconf-update.patch b/packages/maemo/gconf-osso/gconf-update.patch
deleted file mode 100644
index 9870078b86..0000000000
--- a/packages/maemo/gconf-osso/gconf-update.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-? gconf/gconf.service
-Index: gconf/Makefile.am
-===================================================================
-RCS file: /cvs/gnome/gconf/gconf/Makefile.am,v
-retrieving revision 1.78.4.8
-diff -u -r1.78.4.8 Makefile.am
---- gconf/Makefile.am 21 Dec 2003 14:21:15 -0000 1.78.4.8
-+++ gconf/Makefile.am 22 Jan 2005 00:30:13 -0000
-@@ -155,6 +155,7 @@
-
- libgconf_2_la_LDFLAGS = -version-info $(GCONF_CURRENT):$(GCONF_REVISION):$(GCONF_AGE) -no-undefined
- libgconf_2_la_LIBADD = $(INTLLIBS) $(DEPENDENT_LIBS) $(GCONF_IPC_LIBS)
-+libgconf_2_la_CFLAGS = $(AM_CFLAGS)
-
- if HAVE_DBUS
- servicedir = $(DBUS_SERVICE_DIR)
-Index: backends/Makefile.am
-===================================================================
-RCS file: /cvs/gnome/gconf/backends/Makefile.am,v
-retrieving revision 1.30
-diff -u -r1.30 Makefile.am
---- backends/Makefile.am 3 Nov 2003 00:19:33 -0000 1.30
-+++ backends/Makefile.am 22 Jan 2005 00:30:14 -0000
-@@ -17,6 +17,7 @@
-
- libgconfbackend_oldxml_la_LDFLAGS = -avoid-version -module -no-undefined
- libgconfbackend_oldxml_la_LIBADD = $(DEPENDENT_WITH_XML_LIBS) $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+libgconfbackend_oldxml_la_CFLAGS = $(AM_CFLAGS)
-
- libgconfbackend_xml_la_SOURCES = \
- markup-backend.c \
diff --git a/packages/maemo/gconf-osso/no-po-no-examples.diff b/packages/maemo/gconf-osso/no-po-no-examples.diff
deleted file mode 100644
index a7411dfef7..0000000000
--- a/packages/maemo/gconf-osso/no-po-no-examples.diff
+++ /dev/null
@@ -1,34032 +0,0 @@
-diff -urN GConf-2.6.4/Makefile.am GConf-2.6.4.new/Makefile.am
---- GConf-2.6.4/Makefile.am 2004-09-20 00:42:59.000000000 +0300
-+++ GConf-2.6.4.new/Makefile.am 2005-03-05 11:06:46.000000000 +0200
-@@ -1,5 +1,5 @@
-
--SUBDIRS = gconf backends po doc examples
-+SUBDIRS = gconf backends doc
- DIST_SUBDIRS=tests $(SUBDIRS)
-
- DBUS_GCONF_CONF=gconfd.conf
-diff -urN GConf-2.6.4/Makefile.in GConf-2.6.4.new/Makefile.in
---- GConf-2.6.4/Makefile.in 2004-09-20 00:45:15.000000000 +0300
-+++ GConf-2.6.4.new/Makefile.in 2005-03-05 11:07:05.000000000 +0200
-@@ -1,6 +1,8 @@
--# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-+# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# @configure_input@
-
--# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
-+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-+# Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -10,69 +12,57 @@
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
-
--
--SHELL = @SHELL@
-+@SET_MAKE@
-
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
--prefix = @prefix@
--exec_prefix = @exec_prefix@
--
--bindir = @bindir@
--sbindir = @sbindir@
--libexecdir = @libexecdir@
--datadir = @datadir@
--sysconfdir = @sysconfdir@
--sharedstatedir = @sharedstatedir@
--localstatedir = @localstatedir@
--libdir = @libdir@
--infodir = @infodir@
--mandir = @mandir@
--includedir = @includedir@
--oldincludedir = /usr/include
--
--DESTDIR =
--
- pkgdatadir = $(datadir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
--
- top_builddir = .
-
--ACLOCAL = @ACLOCAL@
--AUTOCONF = @AUTOCONF@
--AUTOMAKE = @AUTOMAKE@
--AUTOHEADER = @AUTOHEADER@
--
-+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
--INSTALL_DATA = @INSTALL_DATA@
--INSTALL_SCRIPT = @INSTALL_SCRIPT@
--transform = @program_transform_name@
--
-+install_sh_DATA = $(install_sh) -c -m 644
-+install_sh_PROGRAM = $(install_sh) -c
-+install_sh_SCRIPT = $(install_sh) -c
-+INSTALL_HEADER = $(INSTALL_DATA)
-+transform = $(program_transform_name)
- NORMAL_INSTALL = :
- PRE_INSTALL = :
- POST_INSTALL = :
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
--host_alias = @host_alias@
- host_triplet = @host@
-+ACLOCAL = @ACLOCAL@
-+AMDEP_FALSE = @AMDEP_FALSE@
-+AMDEP_TRUE = @AMDEP_TRUE@
-+AMTAR = @AMTAR@
- AR = @AR@
- AS = @AS@
-+AUTOCONF = @AUTOCONF@
-+AUTOHEADER = @AUTOHEADER@
-+AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
--BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
- CATALOGS = @CATALOGS@
- CATOBJEXT = @CATOBJEXT@
- CC = @CC@
-+CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-+CPP = @CPP@
- CPPFLAGS = @CPPFLAGS@
- CXX = @CXX@
- CXXCPP = @CXXCPP@
-+CXXDEPMODE = @CXXDEPMODE@
-+CXXFLAGS = @CXXFLAGS@
-+CYGPATH_W = @CYGPATH_W@
- DATADIRNAME = @DATADIRNAME@
- DB2HTML = @DB2HTML@
- DBUS_SERVICE_DIR = @DBUS_SERVICE_DIR@
-+DEFS = @DEFS@
-+DEPDIR = @DEPDIR@
- DEPENDENT_CFLAGS = @DEPENDENT_CFLAGS@
- DEPENDENT_LIBS = @DEPENDENT_LIBS@
- DEPENDENT_WITH_GTK_CFLAGS = @DEPENDENT_WITH_GTK_CFLAGS@
-@@ -83,48 +73,73 @@
- DEPENDENT_WITH_XML_LIBS = @DEPENDENT_WITH_XML_LIBS@
- DLLTOOL = @DLLTOOL@
- ECHO = @ECHO@
-+ECHO_C = @ECHO_C@
-+ECHO_N = @ECHO_N@
-+ECHO_T = @ECHO_T@
- EGREP = @EGREP@
-+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
-+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
- EXEEXT = @EXEEXT@
- EXPANDED_SYSCONFDIR = @EXPANDED_SYSCONFDIR@
- F77 = @F77@
--GCJ = @GCJ@
--GCJFLAGS = @GCJFLAGS@
-+FFLAGS = @FFLAGS@
- GCONF_AGE = @GCONF_AGE@
- GCONF_CONFIG_SOURCE = @GCONF_CONFIG_SOURCE@
- GCONF_CURRENT = @GCONF_CURRENT@
-+GCONF_DBUS_CFLAGS = @GCONF_DBUS_CFLAGS@
-+GCONF_DBUS_LIBS = @GCONF_DBUS_LIBS@
- GCONF_IPC_CFLAGS = @GCONF_IPC_CFLAGS@
- GCONF_IPC_LIBS = @GCONF_IPC_LIBS@
-+GCONF_ORBIT_CFLAGS = @GCONF_ORBIT_CFLAGS@
-+GCONF_ORBIT_LIBS = @GCONF_ORBIT_LIBS@
- GCONF_REVISION = @GCONF_REVISION@
--GENCAT = @GENCAT@
- GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
- GMOFILES = @GMOFILES@
- GMSGFMT = @GMSGFMT@
- GTKDOC = @GTKDOC@
--GT_NO = @GT_NO@
--GT_YES = @GT_YES@
-+GTK_FALSE = @GTK_FALSE@
-+GTK_TRUE = @GTK_TRUE@
-+HAVE_DBUS_FALSE = @HAVE_DBUS_FALSE@
-+HAVE_DBUS_TRUE = @HAVE_DBUS_TRUE@
-+HAVE_DOCBOOK_FALSE = @HAVE_DOCBOOK_FALSE@
-+HAVE_DOCBOOK_TRUE = @HAVE_DOCBOOK_TRUE@
- HAVE_GTK_DOC = @HAVE_GTK_DOC@
--HAVE_LIB = @HAVE_LIB@
-+HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
-+HAVE_GTK_DOC_TRUE = @HAVE_GTK_DOC_TRUE@
-+HAVE_ORBIT_FALSE = @HAVE_ORBIT_FALSE@
-+HAVE_ORBIT_TRUE = @HAVE_ORBIT_TRUE@
- HTML_DIR = @HTML_DIR@
--INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
- INDENT = @INDENT@
-+INSTALL_DATA = @INSTALL_DATA@
- INSTALL_GCONF_CONFIG_SOURCE = @INSTALL_GCONF_CONFIG_SOURCE@
-+INSTALL_PROGRAM = @INSTALL_PROGRAM@
-+INSTALL_SCRIPT = @INSTALL_SCRIPT@
-+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- INSTOBJEXT = @INSTOBJEXT@
--INTLDEPS = @INTLDEPS@
- INTLLIBS = @INTLLIBS@
--INTLOBJS = @INTLOBJS@
- LDFLAGS = @LDFLAGS@
--LIB = @LIB@
-+LIBOBJS = @LIBOBJS@
-+LIBS = @LIBS@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
--LTLIB = @LTLIB@
-+LTLIBOBJS = @LTLIBOBJS@
- MAINT = @MAINT@
-+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
- MAJOR_VERSION = @MAJOR_VERSION@
- MAKEINFO = @MAKEINFO@
- MKINSTALLDIRS = @MKINSTALLDIRS@
-+MSGFMT = @MSGFMT@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- ORBIT_IDL = @ORBIT_IDL@
- PACKAGE = @PACKAGE@
-+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-+PACKAGE_NAME = @PACKAGE_NAME@
-+PACKAGE_STRING = @PACKAGE_STRING@
-+PACKAGE_TARNAME = @PACKAGE_TARNAME@
-+PACKAGE_VERSION = @PACKAGE_VERSION@
-+PATH_SEPARATOR = @PATH_SEPARATOR@
- PC_REQUIRES = @PC_REQUIRES@
- PERL = @PERL@
- PKG_CONFIG = @PKG_CONFIG@
-@@ -133,18 +148,65 @@
- POSUB = @POSUB@
- PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
- PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-+PTHREADS_FALSE = @PTHREADS_FALSE@
-+PTHREADS_TRUE = @PTHREADS_TRUE@
- RANLIB = @RANLIB@
--RC = @RC@
- REBUILD = @REBUILD@
-+SET_MAKE = @SET_MAKE@
-+SHELL = @SHELL@
- STRIP = @STRIP@
--USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
- USE_NLS = @USE_NLS@
-+USE_SYSTEM_BUS_FALSE = @USE_SYSTEM_BUS_FALSE@
-+USE_SYSTEM_BUS_TRUE = @USE_SYSTEM_BUS_TRUE@
- VERSION = @VERSION@
-+XGETTEXT = @XGETTEXT@
- absolute_top_srcdir = @absolute_top_srcdir@
-+ac_ct_AR = @ac_ct_AR@
-+ac_ct_AS = @ac_ct_AS@
-+ac_ct_CC = @ac_ct_CC@
-+ac_ct_CXX = @ac_ct_CXX@
-+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-+ac_ct_F77 = @ac_ct_F77@
-+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-+ac_ct_RANLIB = @ac_ct_RANLIB@
-+ac_ct_STRIP = @ac_ct_STRIP@
-+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-+am__include = @am__include@
-+am__leading_dot = @am__leading_dot@
-+am__quote = @am__quote@
-+bindir = @bindir@
-+build = @build@
-+build_alias = @build_alias@
-+build_cpu = @build_cpu@
-+build_os = @build_os@
-+build_vendor = @build_vendor@
-+datadir = @datadir@
-+exec_prefix = @exec_prefix@
- gconflocaledir = @gconflocaledir@
--l = @l@
-+host = @host@
-+host_alias = @host_alias@
-+host_cpu = @host_cpu@
-+host_os = @host_os@
-+host_vendor = @host_vendor@
-+includedir = @includedir@
-+infodir = @infodir@
-+install_sh = @install_sh@
-+libdir = @libdir@
-+libexecdir = @libexecdir@
-+localstatedir = @localstatedir@
-+mandir = @mandir@
-+oldincludedir = @oldincludedir@
-+prefix = @prefix@
-+program_transform_name = @program_transform_name@
-+sbindir = @sbindir@
-+sharedstatedir = @sharedstatedir@
-+sysconfdir = @sysconfdir@
-+target_alias = @target_alias@
-
--SUBDIRS = gconf backends po doc examples
-+SUBDIRS = gconf backends doc
- DIST_SUBDIRS = tests $(SUBDIRS)
-
- DBUS_GCONF_CONF = gconfd.conf
-@@ -152,112 +214,119 @@
- @USE_SYSTEM_BUS_TRUE@dbusconfdir = $(sysconfdir)/dbus-1/system.d
- @USE_SYSTEM_BUS_TRUE@dbusconf_DATA = $(DBUS_GCONF_CONF)
-
--EXTRA_DIST = gconf.m4.in TODO gconf-2.0.pc.in $(DBUS_GCONF_CONF)
-+EXTRA_DIST = gconf.m4.in TODO \
-+ gconf-2.0.pc.in \
-+ $(DBUS_GCONF_CONF)
-
-
- pkgconfigdir = $(libdir)/pkgconfig
- pkgconfig_DATA = gconf-2.0.pc
-+subdir = .
- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
- CONFIG_HEADER = config.h
--CONFIG_CLEAN_FILES = gconf.m4 gconf-2.0.pc
--DATA = $(dbusconf_DATA) $(pkgconfig_DATA)
--
--DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \
--INSTALL Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 \
--aclocal.m4 config.guess config.h.in config.sub configure configure.in \
--gconf-2.0.pc.in gconf.m4.in install-sh ltmain.sh missing mkinstalldirs
--
--
--DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-+CONFIG_CLEAN_FILES = gconf.m4 gconf-2.0.pc
-+DIST_SOURCES =
-+DATA = $(dbusconf_DATA) $(pkgconfig_DATA)
-+
-+
-+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
-+ ps-recursive install-info-recursive uninstall-info-recursive \
-+ all-recursive install-data-recursive install-exec-recursive \
-+ installdirs-recursive install-recursive uninstall-recursive \
-+ check-recursive installcheck-recursive
-+DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure \
-+ ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL Makefile.am NEWS \
-+ TODO acconfig.h acinclude.m4 aclocal.m4 config.guess \
-+ config.h.in config.sub configure configure.in depcomp \
-+ gconf-2.0.pc.in gconf.m4.in install-sh ltmain.sh missing \
-+ mkinstalldirs
-+all: config.h
-+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
-
--TAR = tar
--GZIP_ENV = --best
--all: all-redirect
- .SUFFIXES:
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-- cd $(top_builddir) \
-- && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
-+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
-+ configure.lineno
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-+ cd $(top_srcdir) && \
-+ $(AUTOMAKE) --gnu Makefile
-+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
-+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
-
--$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
-- cd $(srcdir) && $(ACLOCAL)
--
--config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-+$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- $(SHELL) ./config.status --recheck
--$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
-+$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
- cd $(srcdir) && $(AUTOCONF)
-
--config.h: stamp-h
-- @if test ! -f $@; then \
-- rm -f stamp-h; \
-- $(MAKE) stamp-h; \
-- else :; fi
--stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
-- cd $(top_builddir) \
-- && CONFIG_FILES= CONFIG_HEADERS=config.h \
-- $(SHELL) ./config.status
-- @echo timestamp > stamp-h 2> /dev/null
--$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@$(srcdir)/stamp-h.in
-+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
-+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-+
-+config.h: stamp-h1
- @if test ! -f $@; then \
-- rm -f $(srcdir)/stamp-h.in; \
-- $(MAKE) $(srcdir)/stamp-h.in; \
-+ rm -f stamp-h1; \
-+ $(MAKE) stamp-h1; \
- else :; fi
--$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h
-- cd $(top_srcdir) && $(AUTOHEADER)
-- @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
-
--mostlyclean-hdr:
-+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
-+ @rm -f stamp-h1
-+ cd $(top_builddir) && $(SHELL) ./config.status config.h
-
--clean-hdr:
-+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/acconfig.h
-+ cd $(top_srcdir) && $(AUTOHEADER)
-+ touch $(srcdir)/config.h.in
-
- distclean-hdr:
-- -rm -f config.h
--
--maintainer-clean-hdr:
-+ -rm -f config.h stamp-h1
- gconf.m4: $(top_builddir)/config.status gconf.m4.in
-- cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
-+ cd $(top_builddir) && $(SHELL) ./config.status $@
- gconf-2.0.pc: $(top_builddir)/config.status gconf-2.0.pc.in
-- cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
-+ cd $(top_builddir) && $(SHELL) ./config.status $@
-+
-+mostlyclean-libtool:
-+ -rm -f *.lo
-
-+clean-libtool:
-+ -rm -rf .libs _libs
-+
-+distclean-libtool:
-+ -rm -f libtool
-+uninstall-info-am:
-+dbusconfDATA_INSTALL = $(INSTALL_DATA)
- install-dbusconfDATA: $(dbusconf_DATA)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(dbusconfdir)
- @list='$(dbusconf_DATA)'; for p in $$list; do \
-- if test -f $(srcdir)/$$p; then \
-- echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(dbusconfdir)/$$p"; \
-- $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(dbusconfdir)/$$p; \
-- else if test -f $$p; then \
-- echo " $(INSTALL_DATA) $$p $(DESTDIR)$(dbusconfdir)/$$p"; \
-- $(INSTALL_DATA) $$p $(DESTDIR)$(dbusconfdir)/$$p; \
-- fi; fi; \
-+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-+ f="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " $(dbusconfDATA_INSTALL) $$d$$p $(DESTDIR)$(dbusconfdir)/$$f"; \
-+ $(dbusconfDATA_INSTALL) $$d$$p $(DESTDIR)$(dbusconfdir)/$$f; \
- done
-
- uninstall-dbusconfDATA:
- @$(NORMAL_UNINSTALL)
-- list='$(dbusconf_DATA)'; for p in $$list; do \
-- rm -f $(DESTDIR)$(dbusconfdir)/$$p; \
-+ @list='$(dbusconf_DATA)'; for p in $$list; do \
-+ f="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " rm -f $(DESTDIR)$(dbusconfdir)/$$f"; \
-+ rm -f $(DESTDIR)$(dbusconfdir)/$$f; \
- done
--
-+pkgconfigDATA_INSTALL = $(INSTALL_DATA)
- install-pkgconfigDATA: $(pkgconfig_DATA)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(pkgconfigdir)
- @list='$(pkgconfig_DATA)'; for p in $$list; do \
-- if test -f $(srcdir)/$$p; then \
-- echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgconfigdir)/$$p"; \
-- $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgconfigdir)/$$p; \
-- else if test -f $$p; then \
-- echo " $(INSTALL_DATA) $$p $(DESTDIR)$(pkgconfigdir)/$$p"; \
-- $(INSTALL_DATA) $$p $(DESTDIR)$(pkgconfigdir)/$$p; \
-- fi; fi; \
-+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-+ f="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " $(pkgconfigDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgconfigdir)/$$f"; \
-+ $(pkgconfigDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgconfigdir)/$$f; \
- done
-
- uninstall-pkgconfigDATA:
- @$(NORMAL_UNINSTALL)
-- list='$(pkgconfig_DATA)'; for p in $$list; do \
-- rm -f $(DESTDIR)$(pkgconfigdir)/$$p; \
-+ @list='$(pkgconfig_DATA)'; for p in $$list; do \
-+ f="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " rm -f $(DESTDIR)$(pkgconfigdir)/$$f"; \
-+ rm -f $(DESTDIR)$(pkgconfigdir)/$$f; \
- done
-
- # This directory's subdirectories are mostly independent; you can cd
-@@ -266,13 +335,8 @@
- # (1) if the variable is set in `config.status', edit `config.status'
- # (which will cause the Makefiles to be regenerated when you run `make');
- # (2) otherwise, pass the desired values on the `make' command line.
--
--@SET_MAKE@
--
--all-recursive install-data-recursive install-exec-recursive \
--installdirs-recursive install-recursive uninstall-recursive \
--check-recursive installcheck-recursive info-recursive dvi-recursive:
-- @set fnord $(MAKEFLAGS); amf=$$2; \
-+$(RECURSIVE_TARGETS):
-+ @set fnord $$MAKEFLAGS; amf=$$2; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
-@@ -292,13 +356,18 @@
-
- mostlyclean-recursive clean-recursive distclean-recursive \
- maintainer-clean-recursive:
-- @set fnord $(MAKEFLAGS); amf=$$2; \
-+ @set fnord $$MAKEFLAGS; amf=$$2; \
- dot_seen=no; \
-- rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
-- rev="$$subdir $$rev"; \
-- test "$$subdir" != "." || dot_seen=yes; \
-+ case "$@" in \
-+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-+ *) list='$(SUBDIRS)' ;; \
-+ esac; \
-+ rev=''; for subdir in $$list; do \
-+ if test "$$subdir" = "."; then :; else \
-+ rev="$$subdir $$rev"; \
-+ fi; \
- done; \
-- test "$$dot_seen" = "no" && rev=". $$rev"; \
-+ rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
-@@ -314,177 +383,303 @@
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-+ctags-recursive:
-+ list='$(SUBDIRS)'; for subdir in $$list; do \
-+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-+ done
-+
-+ETAGS = etags
-+ETAGSFLAGS =
-+
-+CTAGS = ctags
-+CTAGSFLAGS =
-
- tags: TAGS
-
--ID: $(HEADERS) $(SOURCES) $(LISP)
-- list='$(SOURCES) $(HEADERS)'; \
-- unique=`for i in $$list; do echo $$i; done | \
-- awk ' { files[$$0] = 1; } \
-+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
-- here=`pwd` && cd $(srcdir) \
-- && mkid -f$$here/ID $$unique $(LISP)
-+ mkid -fID $$unique
-
--TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
-+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
-+ if (etags --etags-include --version) >/dev/null 2>&1; then \
-+ include_option=--etags-include; \
-+ else \
-+ include_option=--include; \
-+ fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
-- if test "$$subdir" = .; then :; else \
-- test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
-- fi; \
-+ if test "$$subdir" = .; then :; else \
-+ test -f $$subdir/TAGS && \
-+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
-+ fi; \
- done; \
-- list='$(SOURCES) $(HEADERS)'; \
-- unique=`for i in $$list; do echo $$i; done | \
-- awk ' { files[$$0] = 1; } \
-+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
-- test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS)
--
--mostlyclean-tags:
--
--clean-tags:
-+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
-+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+ $$tags $$unique
-+
-+ctags: CTAGS
-+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
-+ tags=; \
-+ here=`pwd`; \
-+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
-+ END { for (i in files) print i; }'`; \
-+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
-+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-+ $$tags $$unique
-+
-+GTAGS:
-+ here=`$(am__cd) $(top_builddir) && pwd` \
-+ && cd $(top_srcdir) \
-+ && gtags -i $(GTAGS_ARGS) $$here
-
- distclean-tags:
-- -rm -f TAGS ID
--
--maintainer-clean-tags:
-+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-+top_distdir = .
- distdir = $(PACKAGE)-$(VERSION)
--top_distdir = $(distdir)
-
--# This target untars the dist file and tries a VPATH configuration. Then
--# it guarantees that the distribution is self-contained by making another
--# tarfile.
--distcheck: dist
-- -rm -rf $(distdir)
-- GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
-- mkdir $(distdir)/=build
-- mkdir $(distdir)/=inst
-- dc_install_base=`cd $(distdir)/=inst && pwd`; \
-- cd $(distdir)/=build \
-- && ../configure --srcdir=.. --prefix=$$dc_install_base \
-- && $(MAKE) $(AM_MAKEFLAGS) \
-- && $(MAKE) $(AM_MAKEFLAGS) dvi \
-- && $(MAKE) $(AM_MAKEFLAGS) check \
-- && $(MAKE) $(AM_MAKEFLAGS) install \
-- && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-- && $(MAKE) $(AM_MAKEFLAGS) dist
-- -rm -rf $(distdir)
-- @banner="$(distdir).tar.gz is ready for distribution"; \
-- dashes=`echo "$$banner" | sed s/./=/g`; \
-- echo "$$dashes"; \
-- echo "$$banner"; \
-- echo "$$dashes"
--dist: distdir
-- -chmod -R a+r $(distdir)
-- GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-- -rm -rf $(distdir)
--dist-all: distdir
-- -chmod -R a+r $(distdir)
-- GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-- -rm -rf $(distdir)
-+am__remove_distdir = \
-+ { test ! -d $(distdir) \
-+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
-+ && rm -fr $(distdir); }; }
-+
-+GZIP_ENV = --best
-+distuninstallcheck_listfiles = find . -type f -print
-+distcleancheck_listfiles = find . -type f -print
-+
- distdir: $(DISTFILES)
-- -rm -rf $(distdir)
-+ $(am__remove_distdir)
- mkdir $(distdir)
-- -chmod 777 $(distdir)
-- @for file in $(DISTFILES); do \
-- d=$(srcdir); \
-+ $(mkinstalldirs) $(distdir)/. $(distdir)/gconf $(distdir)/po
-+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-+ list='$(DISTFILES)'; for file in $$list; do \
-+ case $$file in \
-+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-+ esac; \
-+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-+ dir="/$$dir"; \
-+ $(mkinstalldirs) "$(distdir)$$dir"; \
-+ else \
-+ dir=''; \
-+ fi; \
- if test -d $$d/$$file; then \
-- cp -pr $$d/$$file $(distdir)/$$file; \
-+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-+ fi; \
-+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
-- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
-- || cp -p $$d/$$file $(distdir)/$$file || :; \
-+ || cp -p $$d/$$file $(distdir)/$$file \
-+ || exit 1; \
- fi; \
- done
-- for subdir in $(DIST_SUBDIRS); do \
-+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test -d $(distdir)/$$subdir \
- || mkdir $(distdir)/$$subdir \
- || exit 1; \
-- chmod 777 $(distdir)/$$subdir; \
-- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
-+ (cd $$subdir && \
-+ $(MAKE) $(AM_MAKEFLAGS) \
-+ top_distdir="$(top_distdir)" \
-+ distdir=../$(distdir)/$$subdir \
-+ distdir) \
- || exit 1; \
- fi; \
- done
--info-am:
--info: info-recursive
--dvi-am:
--dvi: dvi-recursive
-+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
-+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-+ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
-+ || chmod -R a+r $(distdir)
-+dist-gzip: distdir
-+ $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-+ $(am__remove_distdir)
-+
-+dist dist-all: distdir
-+ $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-+ $(am__remove_distdir)
-+
-+# This target untars the dist file and tries a VPATH configuration. Then
-+# it guarantees that the distribution is self-contained by making another
-+# tarfile.
-+distcheck: dist
-+ $(am__remove_distdir)
-+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
-+ chmod -R a-w $(distdir); chmod a+w $(distdir)
-+ mkdir $(distdir)/_build
-+ mkdir $(distdir)/_inst
-+ chmod a-w $(distdir)
-+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
-+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-+ && cd $(distdir)/_build \
-+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
-+ $(DISTCHECK_CONFIGURE_FLAGS) \
-+ && $(MAKE) $(AM_MAKEFLAGS) \
-+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
-+ && $(MAKE) $(AM_MAKEFLAGS) check \
-+ && $(MAKE) $(AM_MAKEFLAGS) install \
-+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
-+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-+ distuninstallcheck \
-+ && chmod -R a-w "$$dc_install_base" \
-+ && ({ \
-+ (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
-+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
-+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
-+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
-+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
-+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
-+ && rm -rf "$$dc_destdir" \
-+ && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
-+ && rm -f $(distdir).tar.gz \
-+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
-+ $(am__remove_distdir)
-+ @echo "$(distdir).tar.gz is ready for distribution" | \
-+ sed 'h;s/./=/g;p;x;p;x'
-+distuninstallcheck:
-+ @cd $(distuninstallcheck_dir) \
-+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
-+ || { echo "ERROR: files left after uninstall:" ; \
-+ if test -n "$(DESTDIR)"; then \
-+ echo " (check DESTDIR support)"; \
-+ fi ; \
-+ $(distuninstallcheck_listfiles) ; \
-+ exit 1; } >&2
-+distcleancheck: distclean
-+ @if test '$(srcdir)' = . ; then \
-+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
-+ exit 1 ; \
-+ fi
-+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
-+ || { echo "ERROR: files left in build directory after distclean:" ; \
-+ $(distcleancheck_listfiles) ; \
-+ exit 1; } >&2
- check-am: all-am
- check: check-recursive
--installcheck-am:
--installcheck: installcheck-recursive
--all-recursive-am: config.h
-- $(MAKE) $(AM_MAKEFLAGS) all-recursive
-+all-am: Makefile $(DATA) config.h
-+installdirs: installdirs-recursive
-+installdirs-am:
-+ $(mkinstalldirs) $(DESTDIR)$(dbusconfdir) $(DESTDIR)$(pkgconfigdir)
-
--install-exec-am:
-+install: install-recursive
- install-exec: install-exec-recursive
--
--install-data-am: install-dbusconfDATA install-pkgconfigDATA \
-- install-data-local
- install-data: install-data-recursive
-+uninstall: uninstall-recursive
-
- install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
--install: install-recursive
--uninstall-am: uninstall-dbusconfDATA uninstall-pkgconfigDATA
--uninstall: uninstall-recursive
--all-am: Makefile $(DATA) config.h
--all-redirect: all-recursive-am
--install-strip:
-- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
--installdirs: installdirs-recursive
--installdirs-am:
-- $(mkinstalldirs) $(DESTDIR)$(dbusconfdir) $(DESTDIR)$(pkgconfigdir)
--
-
-+installcheck: installcheck-recursive
-+install-strip:
-+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+ `test -z '$(STRIP)' || \
-+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
- mostlyclean-generic:
-
- clean-generic:
-
- distclean-generic:
-- -rm -f Makefile $(CONFIG_CLEAN_FILES)
-- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-+ -rm -f $(CONFIG_CLEAN_FILES)
-
- maintainer-clean-generic:
--mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic
-+ @echo "This command is intended for maintainers to use"
-+ @echo "it deletes files that may require special tools to rebuild."
-+clean: clean-recursive
-
--mostlyclean: mostlyclean-recursive
-+clean-am: clean-generic clean-libtool mostlyclean-am
-
--clean-am: clean-hdr clean-tags clean-generic mostlyclean-am
-+distclean: distclean-recursive
-+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-+ -rm -f Makefile
-+distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \
-+ distclean-tags
-
--clean: clean-recursive
-+dvi: dvi-recursive
-
--distclean-am: distclean-hdr distclean-tags distclean-generic clean-am
-- -rm -f libtool
-+dvi-am:
-
--distclean: distclean-recursive
-- -rm -f config.status
-+info: info-recursive
-
--maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \
-- maintainer-clean-generic distclean-am
-- @echo "This command is intended for maintainers to use;"
-- @echo "it deletes files that may require special tools to rebuild."
-+info-am:
-+
-+install-data-am: install-data-local install-dbusconfDATA \
-+ install-pkgconfigDATA
-+
-+install-exec-am:
-+
-+install-info: install-info-recursive
-+
-+install-man:
-+
-+installcheck-am:
-
- maintainer-clean: maintainer-clean-recursive
-- -rm -f config.status
-+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-+ -rm -rf $(top_srcdir)/autom4te.cache
-+ -rm -f Makefile
-+maintainer-clean-am: distclean-am maintainer-clean-generic
-+
-+mostlyclean: mostlyclean-recursive
-+
-+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
--.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
--uninstall-dbusconfDATA install-dbusconfDATA uninstall-pkgconfigDATA \
--install-pkgconfigDATA install-data-recursive uninstall-data-recursive \
--install-exec-recursive uninstall-exec-recursive installdirs-recursive \
--uninstalldirs-recursive all-recursive check-recursive \
--installcheck-recursive info-recursive dvi-recursive \
--mostlyclean-recursive distclean-recursive clean-recursive \
--maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \
--install-exec-am install-exec install-data-local install-data-am \
--install-data install-am install uninstall-am uninstall all-redirect \
--all-am all installdirs-am installdirs mostlyclean-generic \
--distclean-generic clean-generic maintainer-clean-generic clean \
--mostlyclean distclean maintainer-clean
-+pdf: pdf-recursive
-+
-+pdf-am:
-+
-+ps: ps-recursive
-+
-+ps-am:
-+
-+uninstall-am: uninstall-dbusconfDATA uninstall-info-am \
-+ uninstall-pkgconfigDATA
-+
-+uninstall-info: uninstall-info-recursive
-+
-+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
-+ clean-generic clean-libtool clean-recursive ctags \
-+ ctags-recursive dist dist-all dist-gzip distcheck distclean \
-+ distclean-generic distclean-hdr distclean-libtool \
-+ distclean-recursive distclean-tags distcleancheck distdir \
-+ distuninstallcheck dvi dvi-am dvi-recursive info info-am \
-+ info-recursive install install-am install-data install-data-am \
-+ install-data-local install-data-recursive install-dbusconfDATA \
-+ install-exec install-exec-am install-exec-recursive \
-+ install-info install-info-am install-info-recursive install-man \
-+ install-pkgconfigDATA install-recursive install-strip \
-+ installcheck installcheck-am installdirs installdirs-am \
-+ installdirs-recursive maintainer-clean maintainer-clean-generic \
-+ maintainer-clean-recursive mostlyclean mostlyclean-generic \
-+ mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
-+ pdf-recursive ps ps-am ps-recursive tags tags-recursive \
-+ uninstall uninstall-am uninstall-dbusconfDATA uninstall-info-am \
-+ uninstall-info-recursive uninstall-pkgconfigDATA \
-+ uninstall-recursive
-
-
- install-data-local:
-@@ -497,7 +692,6 @@
-
- install-schemas:
- (cd standard-schemas && $(MAKE) $(AM_MAKEFLAGS) install-schemas)
--
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
-diff -urN GConf-2.6.4/aclocal.m4 GConf-2.6.4.new/aclocal.m4
---- GConf-2.6.4/aclocal.m4 2004-09-20 00:43:07.000000000 +0300
-+++ GConf-2.6.4.new/aclocal.m4 2005-03-05 11:06:54.000000000 +0200
-@@ -1,14 +1,15 @@
--dnl aclocal.m4 generated automatically by aclocal 1.4-p6
-+# generated automatically by aclocal 1.7.9 -*- Autoconf -*-
-
--dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
--dnl This file is free software; the Free Software Foundation
--dnl gives unlimited permission to copy and/or distribute it,
--dnl with or without modifications, as long as this notice is preserved.
--
--dnl This program is distributed in the hope that it will be useful,
--dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
--dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
--dnl PARTICULAR PURPOSE.
-+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
-+# Free Software Foundation, Inc.
-+# This file is free software; the Free Software Foundation
-+# gives unlimited permission to copy and/or distribute it,
-+# with or without modifications, as long as this notice is preserved.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-+# PARTICULAR PURPOSE.
-
-
- # Macro to add for using GNU gettext.
-@@ -350,827 +351,6 @@
- < $srcdir/po/POTFILES.in > po/POTFILES
- ])
-
--# lib-prefix.m4 serial 3 (gettext-0.13)
--dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
--dnl This file is free software, distributed under the terms of the GNU
--dnl General Public License. As a special exception to the GNU General
--dnl Public License, this file may be distributed as part of a program
--dnl that contains a configuration script generated by Autoconf, under
--dnl the same distribution terms as the rest of that program.
--
--dnl From Bruno Haible.
--
--dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
--dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
--dnl require excessive bracketing.
--ifdef([AC_HELP_STRING],
--[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
--[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
--
--dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
--dnl to access previously installed libraries. The basic assumption is that
--dnl a user will want packages to use other packages he previously installed
--dnl with the same --prefix option.
--dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
--dnl libraries, but is otherwise very convenient.
--AC_DEFUN([AC_LIB_PREFIX],
--[
-- AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
-- AC_REQUIRE([AC_PROG_CC])
-- AC_REQUIRE([AC_CANONICAL_HOST])
-- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-- dnl By default, look in $includedir and $libdir.
-- use_additional=yes
-- AC_LIB_WITH_FINAL_PREFIX([
-- eval additional_includedir=\"$includedir\"
-- eval additional_libdir=\"$libdir\"
-- ])
-- AC_LIB_ARG_WITH([lib-prefix],
--[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
-- --without-lib-prefix don't search for libraries in includedir and libdir],
--[
-- if test "X$withval" = "Xno"; then
-- use_additional=no
-- else
-- if test "X$withval" = "X"; then
-- AC_LIB_WITH_FINAL_PREFIX([
-- eval additional_includedir=\"$includedir\"
-- eval additional_libdir=\"$libdir\"
-- ])
-- else
-- additional_includedir="$withval/include"
-- additional_libdir="$withval/lib"
-- fi
-- fi
--])
-- if test $use_additional = yes; then
-- dnl Potentially add $additional_includedir to $CPPFLAGS.
-- dnl But don't add it
-- dnl 1. if it's the standard /usr/include,
-- dnl 2. if it's already present in $CPPFLAGS,
-- dnl 3. if it's /usr/local/include and we are using GCC on Linux,
-- dnl 4. if it doesn't exist as a directory.
-- if test "X$additional_includedir" != "X/usr/include"; then
-- haveit=
-- for x in $CPPFLAGS; do
-- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-- if test "X$x" = "X-I$additional_includedir"; then
-- haveit=yes
-- break
-- fi
-- done
-- if test -z "$haveit"; then
-- if test "X$additional_includedir" = "X/usr/local/include"; then
-- if test -n "$GCC"; then
-- case $host_os in
-- linux*) haveit=yes;;
-- esac
-- fi
-- fi
-- if test -z "$haveit"; then
-- if test -d "$additional_includedir"; then
-- dnl Really add $additional_includedir to $CPPFLAGS.
-- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
-- fi
-- fi
-- fi
-- fi
-- dnl Potentially add $additional_libdir to $LDFLAGS.
-- dnl But don't add it
-- dnl 1. if it's the standard /usr/lib,
-- dnl 2. if it's already present in $LDFLAGS,
-- dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
-- dnl 4. if it doesn't exist as a directory.
-- if test "X$additional_libdir" != "X/usr/lib"; then
-- haveit=
-- for x in $LDFLAGS; do
-- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-- if test "X$x" = "X-L$additional_libdir"; then
-- haveit=yes
-- break
-- fi
-- done
-- if test -z "$haveit"; then
-- if test "X$additional_libdir" = "X/usr/local/lib"; then
-- if test -n "$GCC"; then
-- case $host_os in
-- linux*) haveit=yes;;
-- esac
-- fi
-- fi
-- if test -z "$haveit"; then
-- if test -d "$additional_libdir"; then
-- dnl Really add $additional_libdir to $LDFLAGS.
-- LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
-- fi
-- fi
-- fi
-- fi
-- fi
--])
--
--dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
--dnl acl_final_exec_prefix, containing the values to which $prefix and
--dnl $exec_prefix will expand at the end of the configure script.
--AC_DEFUN([AC_LIB_PREPARE_PREFIX],
--[
-- dnl Unfortunately, prefix and exec_prefix get only finally determined
-- dnl at the end of configure.
-- if test "X$prefix" = "XNONE"; then
-- acl_final_prefix="$ac_default_prefix"
-- else
-- acl_final_prefix="$prefix"
-- fi
-- if test "X$exec_prefix" = "XNONE"; then
-- acl_final_exec_prefix='${prefix}'
-- else
-- acl_final_exec_prefix="$exec_prefix"
-- fi
-- acl_save_prefix="$prefix"
-- prefix="$acl_final_prefix"
-- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
-- prefix="$acl_save_prefix"
--])
--
--dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
--dnl variables prefix and exec_prefix bound to the values they will have
--dnl at the end of the configure script.
--AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
--[
-- acl_save_prefix="$prefix"
-- prefix="$acl_final_prefix"
-- acl_save_exec_prefix="$exec_prefix"
-- exec_prefix="$acl_final_exec_prefix"
-- $1
-- exec_prefix="$acl_save_exec_prefix"
-- prefix="$acl_save_prefix"
--])
--
--# lib-link.m4 serial 4 (gettext-0.12)
--dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
--dnl This file is free software, distributed under the terms of the GNU
--dnl General Public License. As a special exception to the GNU General
--dnl Public License, this file may be distributed as part of a program
--dnl that contains a configuration script generated by Autoconf, under
--dnl the same distribution terms as the rest of that program.
--
--dnl From Bruno Haible.
--
--dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
--dnl the libraries corresponding to explicit and implicit dependencies.
--dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
--dnl augments the CPPFLAGS variable.
--AC_DEFUN([AC_LIB_LINKFLAGS],
--[
-- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-- AC_REQUIRE([AC_LIB_RPATH])
-- define([Name],[translit([$1],[./-], [___])])
-- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-- AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
-- AC_LIB_LINKFLAGS_BODY([$1], [$2])
-- ac_cv_lib[]Name[]_libs="$LIB[]NAME"
-- ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
-- ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
-- ])
-- LIB[]NAME="$ac_cv_lib[]Name[]_libs"
-- LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
-- INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
-- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-- AC_SUBST([LIB]NAME)
-- AC_SUBST([LTLIB]NAME)
-- dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
-- dnl results of this search when this library appears as a dependency.
-- HAVE_LIB[]NAME=yes
-- undefine([Name])
-- undefine([NAME])
--])
--
--dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
--dnl searches for libname and the libraries corresponding to explicit and
--dnl implicit dependencies, together with the specified include files and
--dnl the ability to compile and link the specified testcode. If found, it
--dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
--dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
--dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
--dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
--AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
--[
-- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-- AC_REQUIRE([AC_LIB_RPATH])
-- define([Name],[translit([$1],[./-], [___])])
-- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
--
-- dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
-- dnl accordingly.
-- AC_LIB_LINKFLAGS_BODY([$1], [$2])
--
-- dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
-- dnl because if the user has installed lib[]Name and not disabled its use
-- dnl via --without-lib[]Name-prefix, he wants to use it.
-- ac_save_CPPFLAGS="$CPPFLAGS"
-- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
--
-- AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
-- ac_save_LIBS="$LIBS"
-- LIBS="$LIBS $LIB[]NAME"
-- AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
-- LIBS="$ac_save_LIBS"
-- ])
-- if test "$ac_cv_lib[]Name" = yes; then
-- HAVE_LIB[]NAME=yes
-- AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
-- AC_MSG_CHECKING([how to link with lib[]$1])
-- AC_MSG_RESULT([$LIB[]NAME])
-- else
-- HAVE_LIB[]NAME=no
-- dnl If $LIB[]NAME didn't lead to a usable library, we don't need
-- dnl $INC[]NAME either.
-- CPPFLAGS="$ac_save_CPPFLAGS"
-- LIB[]NAME=
-- LTLIB[]NAME=
-- fi
-- AC_SUBST([HAVE_LIB]NAME)
-- AC_SUBST([LIB]NAME)
-- AC_SUBST([LTLIB]NAME)
-- undefine([Name])
-- undefine([NAME])
--])
--
--dnl Determine the platform dependent parameters needed to use rpath:
--dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
--dnl hardcode_direct, hardcode_minus_L.
--AC_DEFUN([AC_LIB_RPATH],
--[
-- AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
-- AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
-- AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
-- AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
-- AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
-- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
-- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
-- . ./conftest.sh
-- rm -f ./conftest.sh
-- acl_cv_rpath=done
-- ])
-- wl="$acl_cv_wl"
-- libext="$acl_cv_libext"
-- shlibext="$acl_cv_shlibext"
-- hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
-- hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
-- hardcode_direct="$acl_cv_hardcode_direct"
-- hardcode_minus_L="$acl_cv_hardcode_minus_L"
-- dnl Determine whether the user wants rpath handling at all.
-- AC_ARG_ENABLE(rpath,
-- [ --disable-rpath do not hardcode runtime library paths],
-- :, enable_rpath=yes)
--])
--
--dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
--dnl the libraries corresponding to explicit and implicit dependencies.
--dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
--AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
--[
-- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-- dnl By default, look in $includedir and $libdir.
-- use_additional=yes
-- AC_LIB_WITH_FINAL_PREFIX([
-- eval additional_includedir=\"$includedir\"
-- eval additional_libdir=\"$libdir\"
-- ])
-- AC_LIB_ARG_WITH([lib$1-prefix],
--[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
-- --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
--[
-- if test "X$withval" = "Xno"; then
-- use_additional=no
-- else
-- if test "X$withval" = "X"; then
-- AC_LIB_WITH_FINAL_PREFIX([
-- eval additional_includedir=\"$includedir\"
-- eval additional_libdir=\"$libdir\"
-- ])
-- else
-- additional_includedir="$withval/include"
-- additional_libdir="$withval/lib"
-- fi
-- fi
--])
-- dnl Search the library and its dependencies in $additional_libdir and
-- dnl $LDFLAGS. Using breadth-first-seach.
-- LIB[]NAME=
-- LTLIB[]NAME=
-- INC[]NAME=
-- rpathdirs=
-- ltrpathdirs=
-- names_already_handled=
-- names_next_round='$1 $2'
-- while test -n "$names_next_round"; do
-- names_this_round="$names_next_round"
-- names_next_round=
-- for name in $names_this_round; do
-- already_handled=
-- for n in $names_already_handled; do
-- if test "$n" = "$name"; then
-- already_handled=yes
-- break
-- fi
-- done
-- if test -z "$already_handled"; then
-- names_already_handled="$names_already_handled $name"
-- dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
-- dnl or AC_LIB_HAVE_LINKFLAGS call.
-- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
-- eval value=\"\$HAVE_LIB$uppername\"
-- if test -n "$value"; then
-- if test "$value" = yes; then
-- eval value=\"\$LIB$uppername\"
-- test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
-- eval value=\"\$LTLIB$uppername\"
-- test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
-- else
-- dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
-- dnl that this library doesn't exist. So just drop it.
-- :
-- fi
-- else
-- dnl Search the library lib$name in $additional_libdir and $LDFLAGS
-- dnl and the already constructed $LIBNAME/$LTLIBNAME.
-- found_dir=
-- found_la=
-- found_so=
-- found_a=
-- if test $use_additional = yes; then
-- if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
-- found_dir="$additional_libdir"
-- found_so="$additional_libdir/lib$name.$shlibext"
-- if test -f "$additional_libdir/lib$name.la"; then
-- found_la="$additional_libdir/lib$name.la"
-- fi
-- else
-- if test -f "$additional_libdir/lib$name.$libext"; then
-- found_dir="$additional_libdir"
-- found_a="$additional_libdir/lib$name.$libext"
-- if test -f "$additional_libdir/lib$name.la"; then
-- found_la="$additional_libdir/lib$name.la"
-- fi
-- fi
-- fi
-- fi
-- if test "X$found_dir" = "X"; then
-- for x in $LDFLAGS $LTLIB[]NAME; do
-- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-- case "$x" in
-- -L*)
-- dir=`echo "X$x" | sed -e 's/^X-L//'`
-- if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
-- found_dir="$dir"
-- found_so="$dir/lib$name.$shlibext"
-- if test -f "$dir/lib$name.la"; then
-- found_la="$dir/lib$name.la"
-- fi
-- else
-- if test -f "$dir/lib$name.$libext"; then
-- found_dir="$dir"
-- found_a="$dir/lib$name.$libext"
-- if test -f "$dir/lib$name.la"; then
-- found_la="$dir/lib$name.la"
-- fi
-- fi
-- fi
-- ;;
-- esac
-- if test "X$found_dir" != "X"; then
-- break
-- fi
-- done
-- fi
-- if test "X$found_dir" != "X"; then
-- dnl Found the library.
-- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
-- if test "X$found_so" != "X"; then
-- dnl Linking with a shared library. We attempt to hardcode its
-- dnl directory into the executable's runpath, unless it's the
-- dnl standard /usr/lib.
-- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
-- dnl No hardcoding is needed.
-- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-- else
-- dnl Use an explicit option to hardcode DIR into the resulting
-- dnl binary.
-- dnl Potentially add DIR to ltrpathdirs.
-- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
-- haveit=
-- for x in $ltrpathdirs; do
-- if test "X$x" = "X$found_dir"; then
-- haveit=yes
-- break
-- fi
-- done
-- if test -z "$haveit"; then
-- ltrpathdirs="$ltrpathdirs $found_dir"
-- fi
-- dnl The hardcoding into $LIBNAME is system dependent.
-- if test "$hardcode_direct" = yes; then
-- dnl Using DIR/libNAME.so during linking hardcodes DIR into the
-- dnl resulting binary.
-- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-- else
-- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
-- dnl Use an explicit option to hardcode DIR into the resulting
-- dnl binary.
-- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-- dnl Potentially add DIR to rpathdirs.
-- dnl The rpathdirs will be appended to $LIBNAME at the end.
-- haveit=
-- for x in $rpathdirs; do
-- if test "X$x" = "X$found_dir"; then
-- haveit=yes
-- break
-- fi
-- done
-- if test -z "$haveit"; then
-- rpathdirs="$rpathdirs $found_dir"
-- fi
-- else
-- dnl Rely on "-L$found_dir".
-- dnl But don't add it if it's already contained in the LDFLAGS
-- dnl or the already constructed $LIBNAME
-- haveit=
-- for x in $LDFLAGS $LIB[]NAME; do
-- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-- if test "X$x" = "X-L$found_dir"; then
-- haveit=yes
-- break
-- fi
-- done
-- if test -z "$haveit"; then
-- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
-- fi
-- if test "$hardcode_minus_L" != no; then
-- dnl FIXME: Not sure whether we should use
-- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-- dnl here.
-- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-- else
-- dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
-- dnl here, because this doesn't fit in flags passed to the
-- dnl compiler. So give up. No hardcoding. This affects only
-- dnl very old systems.
-- dnl FIXME: Not sure whether we should use
-- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-- dnl here.
-- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-- fi
-- fi
-- fi
-- fi
-- else
-- if test "X$found_a" != "X"; then
-- dnl Linking with a static library.
-- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
-- else
-- dnl We shouldn't come here, but anyway it's good to have a
-- dnl fallback.
-- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
-- fi
-- fi
-- dnl Assume the include files are nearby.
-- additional_includedir=
-- case "$found_dir" in
-- */lib | */lib/)
-- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
-- additional_includedir="$basedir/include"
-- ;;
-- esac
-- if test "X$additional_includedir" != "X"; then
-- dnl Potentially add $additional_includedir to $INCNAME.
-- dnl But don't add it
-- dnl 1. if it's the standard /usr/include,
-- dnl 2. if it's /usr/local/include and we are using GCC on Linux,
-- dnl 3. if it's already present in $CPPFLAGS or the already
-- dnl constructed $INCNAME,
-- dnl 4. if it doesn't exist as a directory.
-- if test "X$additional_includedir" != "X/usr/include"; then
-- haveit=
-- if test "X$additional_includedir" = "X/usr/local/include"; then
-- if test -n "$GCC"; then
-- case $host_os in
-- linux*) haveit=yes;;
-- esac
-- fi
-- fi
-- if test -z "$haveit"; then
-- for x in $CPPFLAGS $INC[]NAME; do
-- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-- if test "X$x" = "X-I$additional_includedir"; then
-- haveit=yes
-- break
-- fi
-- done
-- if test -z "$haveit"; then
-- if test -d "$additional_includedir"; then
-- dnl Really add $additional_includedir to $INCNAME.
-- INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
-- fi
-- fi
-- fi
-- fi
-- fi
-- dnl Look for dependencies.
-- if test -n "$found_la"; then
-- dnl Read the .la file. It defines the variables
-- dnl dlname, library_names, old_library, dependency_libs, current,
-- dnl age, revision, installed, dlopen, dlpreopen, libdir.
-- save_libdir="$libdir"
-- case "$found_la" in
-- */* | *\\*) . "$found_la" ;;
-- *) . "./$found_la" ;;
-- esac
-- libdir="$save_libdir"
-- dnl We use only dependency_libs.
-- for dep in $dependency_libs; do
-- case "$dep" in
-- -L*)
-- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
-- dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
-- dnl But don't add it
-- dnl 1. if it's the standard /usr/lib,
-- dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
-- dnl 3. if it's already present in $LDFLAGS or the already
-- dnl constructed $LIBNAME,
-- dnl 4. if it doesn't exist as a directory.
-- if test "X$additional_libdir" != "X/usr/lib"; then
-- haveit=
-- if test "X$additional_libdir" = "X/usr/local/lib"; then
-- if test -n "$GCC"; then
-- case $host_os in
-- linux*) haveit=yes;;
-- esac
-- fi
-- fi
-- if test -z "$haveit"; then
-- haveit=
-- for x in $LDFLAGS $LIB[]NAME; do
-- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-- if test "X$x" = "X-L$additional_libdir"; then
-- haveit=yes
-- break
-- fi
-- done
-- if test -z "$haveit"; then
-- if test -d "$additional_libdir"; then
-- dnl Really add $additional_libdir to $LIBNAME.
-- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
-- fi
-- fi
-- haveit=
-- for x in $LDFLAGS $LTLIB[]NAME; do
-- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-- if test "X$x" = "X-L$additional_libdir"; then
-- haveit=yes
-- break
-- fi
-- done
-- if test -z "$haveit"; then
-- if test -d "$additional_libdir"; then
-- dnl Really add $additional_libdir to $LTLIBNAME.
-- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
-- fi
-- fi
-- fi
-- fi
-- ;;
-- -R*)
-- dir=`echo "X$dep" | sed -e 's/^X-R//'`
-- if test "$enable_rpath" != no; then
-- dnl Potentially add DIR to rpathdirs.
-- dnl The rpathdirs will be appended to $LIBNAME at the end.
-- haveit=
-- for x in $rpathdirs; do
-- if test "X$x" = "X$dir"; then
-- haveit=yes
-- break
-- fi
-- done
-- if test -z "$haveit"; then
-- rpathdirs="$rpathdirs $dir"
-- fi
-- dnl Potentially add DIR to ltrpathdirs.
-- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
-- haveit=
-- for x in $ltrpathdirs; do
-- if test "X$x" = "X$dir"; then
-- haveit=yes
-- break
-- fi
-- done
-- if test -z "$haveit"; then
-- ltrpathdirs="$ltrpathdirs $dir"
-- fi
-- fi
-- ;;
-- -l*)
-- dnl Handle this in the next round.
-- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
-- ;;
-- *.la)
-- dnl Handle this in the next round. Throw away the .la's
-- dnl directory; it is already contained in a preceding -L
-- dnl option.
-- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
-- ;;
-- *)
-- dnl Most likely an immediate library name.
-- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
-- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
-- ;;
-- esac
-- done
-- fi
-- else
-- dnl Didn't find the library; assume it is in the system directories
-- dnl known to the linker and runtime loader. (All the system
-- dnl directories known to the linker should also be known to the
-- dnl runtime loader, otherwise the system is severely misconfigured.)
-- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
-- fi
-- fi
-- fi
-- done
-- done
-- if test "X$rpathdirs" != "X"; then
-- if test -n "$hardcode_libdir_separator"; then
-- dnl Weird platform: only the last -rpath option counts, the user must
-- dnl pass all path elements in one option. We can arrange that for a
-- dnl single library, but not when more than one $LIBNAMEs are used.
-- alldirs=
-- for found_dir in $rpathdirs; do
-- alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
-- done
-- dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
-- acl_save_libdir="$libdir"
-- libdir="$alldirs"
-- eval flag=\"$hardcode_libdir_flag_spec\"
-- libdir="$acl_save_libdir"
-- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-- else
-- dnl The -rpath options are cumulative.
-- for found_dir in $rpathdirs; do
-- acl_save_libdir="$libdir"
-- libdir="$found_dir"
-- eval flag=\"$hardcode_libdir_flag_spec\"
-- libdir="$acl_save_libdir"
-- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-- done
-- fi
-- fi
-- if test "X$ltrpathdirs" != "X"; then
-- dnl When using libtool, the option that works for both libraries and
-- dnl executables is -R. The -R options are cumulative.
-- for found_dir in $ltrpathdirs; do
-- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
-- done
-- fi
--])
--
--dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
--dnl unless already present in VAR.
--dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
--dnl contains two or three consecutive elements that belong together.
--AC_DEFUN([AC_LIB_APPENDTOVAR],
--[
-- for element in [$2]; do
-- haveit=
-- for x in $[$1]; do
-- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-- if test "X$x" = "X$element"; then
-- haveit=yes
-- break
-- fi
-- done
-- if test -z "$haveit"; then
-- [$1]="${[$1]}${[$1]:+ }$element"
-- fi
-- done
--])
--
--# lib-ld.m4 serial 3 (gettext-0.13)
--dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
--dnl This file is free software, distributed under the terms of the GNU
--dnl General Public License. As a special exception to the GNU General
--dnl Public License, this file may be distributed as part of a program
--dnl that contains a configuration script generated by Autoconf, under
--dnl the same distribution terms as the rest of that program.
--
--dnl Subroutines of libtool.m4,
--dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
--dnl with libtool.m4.
--
--dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
--AC_DEFUN([AC_LIB_PROG_LD_GNU],
--[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
--[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
--case `$LD -v 2>&1 </dev/null` in
--*GNU* | *'with BFD'*)
-- acl_cv_prog_gnu_ld=yes ;;
--*)
-- acl_cv_prog_gnu_ld=no ;;
--esac])
--with_gnu_ld=$acl_cv_prog_gnu_ld
--])
--
--dnl From libtool-1.4. Sets the variable LD.
--AC_DEFUN([AC_LIB_PROG_LD],
--[AC_ARG_WITH(gnu-ld,
--[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
--test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
--AC_REQUIRE([AC_PROG_CC])dnl
--AC_REQUIRE([AC_CANONICAL_HOST])dnl
--# Prepare PATH_SEPARATOR.
--# 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
--ac_prog=ld
--if test "$GCC" = yes; then
-- # Check if gcc -print-prog-name=ld gives a path.
-- AC_MSG_CHECKING([for ld used by GCC])
-- case $host in
-- *-*-mingw*)
-- # gcc leaves a trailing carriage return which upsets mingw
-- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-- *)
-- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-- esac
-- case $ac_prog in
-- # Accept absolute paths.
-- [[\\/]* | [A-Za-z]:[\\/]*)]
-- [re_direlt='/[^/][^/]*/\.\./']
-- # Canonicalize the path of ld
-- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
-- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
-- done
-- test -z "$LD" && LD="$ac_prog"
-- ;;
-- "")
-- # If it fails, then pretend we aren't using GCC.
-- ac_prog=ld
-- ;;
-- *)
-- # If it is relative, then search for the first ld in PATH.
-- with_gnu_ld=unknown
-- ;;
-- esac
--elif test "$with_gnu_ld" = yes; then
-- AC_MSG_CHECKING([for GNU ld])
--else
-- AC_MSG_CHECKING([for non-GNU ld])
--fi
--AC_CACHE_VAL(acl_cv_path_LD,
--[if test -z "$LD"; then
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-- for ac_dir in $PATH; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-- acl_cv_path_LD="$ac_dir/$ac_prog"
-- # Check to see if the program is GNU ld. I'd rather use --version,
-- # but apparently some GNU ld's only accept -v.
-- # Break only if it was the GNU/non-GNU ld that we prefer.
-- case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
-- *GNU* | *'with BFD'*)
-- test "$with_gnu_ld" != no && break ;;
-- *)
-- test "$with_gnu_ld" != yes && break ;;
-- esac
-- fi
-- done
-- IFS="$ac_save_ifs"
--else
-- acl_cv_path_LD="$LD" # Let the user override the test with a path.
--fi])
--LD="$acl_cv_path_LD"
--if test -n "$LD"; then
-- AC_MSG_RESULT($LD)
--else
-- AC_MSG_RESULT(no)
--fi
--test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
--AC_LIB_PROG_LD_GNU
--])
--
- # progtest.m4 serial 3 (gettext-0.12)
- dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
- dnl This file is free software, distributed under the terms of the GNU
-@@ -1258,129 +438,731 @@
- if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
- AC_MSG_RESULT([$]$1)
- else
-- AC_MSG_RESULT(no)
-+ AC_MSG_RESULT(no)
-+fi
-+AC_SUBST($1)dnl
-+])
-+
-+# isc-posix.m4 serial 2 (gettext-0.11.2)
-+dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
-+dnl This file is free software, distributed under the terms of the GNU
-+dnl General Public License. As a special exception to the GNU General
-+dnl Public License, this file may be distributed as part of a program
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
-+
-+# This test replaces the one in autoconf.
-+# Currently this macro should have the same name as the autoconf macro
-+# because gettext's gettext.m4 (distributed in the automake package)
-+# still uses it. Otherwise, the use in gettext.m4 makes autoheader
-+# give these diagnostics:
-+# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
-+# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
-+
-+undefine([AC_ISC_POSIX])
-+
-+AC_DEFUN([AC_ISC_POSIX],
-+ [
-+ dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
-+ AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
-+ ]
-+)
-+
-+# lcmessage.m4 serial 3 (gettext-0.11.3)
-+dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
-+dnl This file is free software, distributed under the terms of the GNU
-+dnl General Public License. As a special exception to the GNU General
-+dnl Public License, this file may be distributed as part of a program
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+dnl
-+dnl This file can can be used in projects which are not available under
-+dnl the GNU General Public License or the GNU Library General Public
-+dnl License but which still want to provide support for the GNU gettext
-+dnl functionality.
-+dnl Please note that the actual code of the GNU gettext library is covered
-+dnl by the GNU Library General Public License, and the rest of the GNU
-+dnl gettext package package is covered by the GNU General Public License.
-+dnl They are *not* in the public domain.
-+
-+dnl Authors:
-+dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
-+
-+# Check whether LC_MESSAGES is available in <locale.h>.
-+
-+AC_DEFUN([AM_LC_MESSAGES],
-+[
-+ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
-+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
-+ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
-+ if test $am_cv_val_LC_MESSAGES = yes; then
-+ AC_DEFINE(HAVE_LC_MESSAGES, 1,
-+ [Define if your <locale.h> file defines LC_MESSAGES.])
-+ fi
-+])
-+
-+# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*-
-+
-+# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, 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, 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.
-+
-+AC_PREREQ([2.52])
-+
-+# serial 6
-+
-+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
-+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
-+
-+# Do all the work for Automake. -*- Autoconf -*-
-+
-+# This macro actually does too much some checks are only needed if
-+# your package does certain things. But this isn't really a big deal.
-+
-+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-+# Free Software Foundation, 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, 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 10
-+
-+AC_PREREQ([2.54])
-+
-+# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow
-+# the ones we care about.
-+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-+
-+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-+# AM_INIT_AUTOMAKE([OPTIONS])
-+# -----------------------------------------------
-+# The call with PACKAGE and VERSION arguments is the old style
-+# call (pre autoconf-2.50), which is being phased out. PACKAGE
-+# and VERSION should now be passed to AC_INIT and removed from
-+# the call to AM_INIT_AUTOMAKE.
-+# We support both call styles for the transition. After
-+# the next Automake release, Autoconf can make the AC_INIT
-+# arguments mandatory, and then we can depend on a new Autoconf
-+# release and drop the old call support.
-+AC_DEFUN([AM_INIT_AUTOMAKE],
-+[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-+ AC_REQUIRE([AC_PROG_INSTALL])dnl
-+# test to see if srcdir already configured
-+if test "`cd $srcdir && pwd`" != "`pwd`" &&
-+ test -f $srcdir/config.status; then
-+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-+fi
-+
-+# test whether we have cygpath
-+if test -z "$CYGPATH_W"; then
-+ if (cygpath --version) >/dev/null 2>/dev/null; then
-+ CYGPATH_W='cygpath -w'
-+ else
-+ CYGPATH_W=echo
-+ fi
-+fi
-+AC_SUBST([CYGPATH_W])
-+
-+# Define the identity of the package.
-+dnl Distinguish between old-style and new-style calls.
-+m4_ifval([$2],
-+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
-+ AC_SUBST([PACKAGE], [$1])dnl
-+ AC_SUBST([VERSION], [$2])],
-+[_AM_SET_OPTIONS([$1])dnl
-+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
-+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-+
-+_AM_IF_OPTION([no-define],,
-+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
-+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
-+
-+# Some tools Automake needs.
-+AC_REQUIRE([AM_SANITY_CHECK])dnl
-+AC_REQUIRE([AC_ARG_PROGRAM])dnl
-+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-+AM_MISSING_PROG(AUTOCONF, autoconf)
-+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-+AM_MISSING_PROG(AUTOHEADER, autoheader)
-+AM_MISSING_PROG(MAKEINFO, makeinfo)
-+AM_MISSING_PROG(AMTAR, tar)
-+AM_PROG_INSTALL_SH
-+AM_PROG_INSTALL_STRIP
-+# We need awk for the "check" target. The system "awk" is bad on
-+# some platforms.
-+AC_REQUIRE([AC_PROG_AWK])dnl
-+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-+
-+_AM_IF_OPTION([no-dependencies],,
-+[AC_PROVIDE_IFELSE([AC_PROG_CC],
-+ [_AM_DEPENDENCIES(CC)],
-+ [define([AC_PROG_CC],
-+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-+AC_PROVIDE_IFELSE([AC_PROG_CXX],
-+ [_AM_DEPENDENCIES(CXX)],
-+ [define([AC_PROG_CXX],
-+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-+])
-+])
-+
-+
-+# When config.status generates a header, we must update the stamp-h file.
-+# This file resides in the same directory as the config header
-+# that is generated. The stamp files are numbered to have different names.
-+
-+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-+# loop where config.status creates the headers, so we can generate
-+# our stamp files there.
-+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-+[# Compute $1's index in $config_headers.
-+_am_stamp_count=1
-+for _am_header in $config_headers :; do
-+ case $_am_header in
-+ $1 | $1:* )
-+ break ;;
-+ * )
-+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-+ esac
-+done
-+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
-+
-+# Copyright 2002 Free Software Foundation, 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, 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
-+
-+# AM_AUTOMAKE_VERSION(VERSION)
-+# ----------------------------
-+# Automake X.Y traces this macro to ensure aclocal.m4 has been
-+# generated from the m4 files accompanying Automake X.Y.
-+AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
-+
-+# AM_SET_CURRENT_AUTOMAKE_VERSION
-+# -------------------------------
-+# Call AM_AUTOMAKE_VERSION so it can be traced.
-+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
-+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-+ [AM_AUTOMAKE_VERSION([1.7.9])])
-+
-+# Helper functions for option handling. -*- Autoconf -*-
-+
-+# Copyright 2001, 2002 Free Software Foundation, 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, 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 2
-+
-+# _AM_MANGLE_OPTION(NAME)
-+# -----------------------
-+AC_DEFUN([_AM_MANGLE_OPTION],
-+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-+
-+# _AM_SET_OPTION(NAME)
-+# ------------------------------
-+# Set option NAME. Presently that only means defining a flag for this option.
-+AC_DEFUN([_AM_SET_OPTION],
-+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-+
-+# _AM_SET_OPTIONS(OPTIONS)
-+# ----------------------------------
-+# OPTIONS is a space-separated list of Automake options.
-+AC_DEFUN([_AM_SET_OPTIONS],
-+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-+
-+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-+# -------------------------------------------
-+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-+AC_DEFUN([_AM_IF_OPTION],
-+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-+
-+#
-+# Check to make sure that the build environment is sane.
-+#
-+
-+# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, 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, 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 3
-+
-+# AM_SANITY_CHECK
-+# ---------------
-+AC_DEFUN([AM_SANITY_CHECK],
-+[AC_MSG_CHECKING([whether build environment is sane])
-+# Just in case
-+sleep 1
-+echo timestamp > conftest.file
-+# Do `set' in a subshell so we don't clobber the current shell's
-+# arguments. Must try -L first in case configure is actually a
-+# symlink; some systems play weird games with the mod time of symlinks
-+# (eg FreeBSD returns the mod time of the symlink's containing
-+# directory).
-+if (
-+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
-+ if test "$[*]" = "X"; then
-+ # -L didn't work.
-+ set X `ls -t $srcdir/configure conftest.file`
-+ fi
-+ rm -f conftest.file
-+ if test "$[*]" != "X $srcdir/configure conftest.file" \
-+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
-+
-+ # If neither matched, then we have a broken ls. This can happen
-+ # if, for instance, CONFIG_SHELL is bash and it inherits a
-+ # broken ls alias from the environment. This has actually
-+ # happened. Such a system could not be considered "sane".
-+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-+alias in your environment])
-+ fi
-+
-+ test "$[2]" = conftest.file
-+ )
-+then
-+ # Ok.
-+ :
-+else
-+ AC_MSG_ERROR([newly created file is older than distributed files!
-+Check your system clock])
-+fi
-+AC_MSG_RESULT(yes)])
-+
-+# -*- Autoconf -*-
-+
-+
-+# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, 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, 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 3
-+
-+# AM_MISSING_PROG(NAME, PROGRAM)
-+# ------------------------------
-+AC_DEFUN([AM_MISSING_PROG],
-+[AC_REQUIRE([AM_MISSING_HAS_RUN])
-+$1=${$1-"${am_missing_run}$2"}
-+AC_SUBST($1)])
-+
-+
-+# AM_MISSING_HAS_RUN
-+# ------------------
-+# Define MISSING if not defined so far and test if it supports --run.
-+# If it does, set am_missing_run to use it, otherwise, to nothing.
-+AC_DEFUN([AM_MISSING_HAS_RUN],
-+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
-+# Use eval to expand $SHELL
-+if eval "$MISSING --run true"; then
-+ am_missing_run="$MISSING --run "
-+else
-+ am_missing_run=
-+ AC_MSG_WARN([`missing' script is too old or missing])
-+fi
-+])
-+
-+# AM_AUX_DIR_EXPAND
-+
-+# Copyright 2001 Free Software Foundation, 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, 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.
-+
-+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
-+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
-+#
-+# Of course, Automake must honor this variable whenever it calls a
-+# tool from the auxiliary directory. The problem is that $srcdir (and
-+# therefore $ac_aux_dir as well) can be either absolute or relative,
-+# depending on how configure is run. This is pretty annoying, since
-+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-+# source directory, any form will work fine, but in subdirectories a
-+# relative path needs to be adjusted first.
-+#
-+# $ac_aux_dir/missing
-+# fails when called from a subdirectory if $ac_aux_dir is relative
-+# $top_srcdir/$ac_aux_dir/missing
-+# fails if $ac_aux_dir is absolute,
-+# fails when called from a subdirectory in a VPATH build with
-+# a relative $ac_aux_dir
-+#
-+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-+# are both prefixed by $srcdir. In an in-source build this is usually
-+# harmless because $srcdir is `.', but things will broke when you
-+# start a VPATH build or use an absolute $srcdir.
-+#
-+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
-+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-+# and then we would define $MISSING as
-+# MISSING="\${SHELL} $am_aux_dir/missing"
-+# This will work as long as MISSING is not called from configure, because
-+# unfortunately $(top_srcdir) has no meaning in configure.
-+# However there are other variables, like CC, which are often used in
-+# configure, and could therefore not use this "fixed" $ac_aux_dir.
-+#
-+# Another solution, used here, is to always expand $ac_aux_dir to an
-+# absolute PATH. The drawback is that using absolute paths prevent a
-+# configured tree to be moved without reconfiguration.
-+
-+# Rely on autoconf to set up CDPATH properly.
-+AC_PREREQ([2.50])
-+
-+AC_DEFUN([AM_AUX_DIR_EXPAND], [
-+# expand $ac_aux_dir to an absolute path
-+am_aux_dir=`cd $ac_aux_dir && pwd`
-+])
-+
-+# AM_PROG_INSTALL_SH
-+# ------------------
-+# Define $install_sh.
-+
-+# Copyright 2001 Free Software Foundation, 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, 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.
-+
-+AC_DEFUN([AM_PROG_INSTALL_SH],
-+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-+install_sh=${install_sh-"$am_aux_dir/install-sh"}
-+AC_SUBST(install_sh)])
-+
-+# AM_PROG_INSTALL_STRIP
-+
-+# Copyright 2001 Free Software Foundation, 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, 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.
-+
-+# One issue with vendor `install' (even GNU) is that you can't
-+# specify the program used to strip binaries. This is especially
-+# annoying in cross-compiling environments, where the build's strip
-+# is unlikely to handle the host's binaries.
-+# Fortunately install-sh will honor a STRIPPROG variable, so we
-+# always use install-sh in `make install-strip', and initialize
-+# STRIPPROG with the value of the STRIP variable (set by the user).
-+AC_DEFUN([AM_PROG_INSTALL_STRIP],
-+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-+# Installed binaries are usually stripped using `strip' when the user
-+# run `make install-strip'. However `strip' might not be the right
-+# tool to use in cross-compilation environments, therefore Automake
-+# will honor the `STRIP' environment variable to overrule this program.
-+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
-+if test "$cross_compiling" != no; then
-+ AC_CHECK_TOOL([STRIP], [strip], :)
-+fi
-+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
-+AC_SUBST([INSTALL_STRIP_PROGRAM])])
-+
-+# -*- Autoconf -*-
-+# Copyright (C) 2003 Free Software Foundation, 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, 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 1
-+
-+# Check whether the underlying file-system supports filenames
-+# with a leading dot. For instance MS-DOS doesn't.
-+AC_DEFUN([AM_SET_LEADING_DOT],
-+[rm -rf .tst 2>/dev/null
-+mkdir .tst 2>/dev/null
-+if test -d .tst; then
-+ am__leading_dot=.
-+else
-+ am__leading_dot=_
- fi
--AC_SUBST($1)dnl
--])
-+rmdir .tst 2>/dev/null
-+AC_SUBST([am__leading_dot])])
-
--# isc-posix.m4 serial 2 (gettext-0.11.2)
--dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
--dnl This file is free software, distributed under the terms of the GNU
--dnl General Public License. As a special exception to the GNU General
--dnl Public License, this file may be distributed as part of a program
--dnl that contains a configuration script generated by Autoconf, under
--dnl the same distribution terms as the rest of that program.
-+# serial 5 -*- Autoconf -*-
-
--# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
-+# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-
--# This test replaces the one in autoconf.
--# Currently this macro should have the same name as the autoconf macro
--# because gettext's gettext.m4 (distributed in the automake package)
--# still uses it. Otherwise, the use in gettext.m4 makes autoheader
--# give these diagnostics:
--# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
--# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2, or (at your option)
-+# any later version.
-
--undefine([AC_ISC_POSIX])
-+# 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.
-
--AC_DEFUN([AC_ISC_POSIX],
-- [
-- dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
-- AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
-- ]
--)
-+# 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.
-
--# lcmessage.m4 serial 3 (gettext-0.11.3)
--dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
--dnl This file is free software, distributed under the terms of the GNU
--dnl General Public License. As a special exception to the GNU General
--dnl Public License, this file may be distributed as part of a program
--dnl that contains a configuration script generated by Autoconf, under
--dnl the same distribution terms as the rest of that program.
--dnl
--dnl This file can can be used in projects which are not available under
--dnl the GNU General Public License or the GNU Library General Public
--dnl License but which still want to provide support for the GNU gettext
--dnl functionality.
--dnl Please note that the actual code of the GNU gettext library is covered
--dnl by the GNU Library General Public License, and the rest of the GNU
--dnl gettext package package is covered by the GNU General Public License.
--dnl They are *not* in the public domain.
-
--dnl Authors:
--dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
-+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
-+# written in clear, in which case automake, when reading aclocal.m4,
-+# will think it sees a *use*, and therefore will trigger all it's
-+# C support machinery. Also note that it means that autoscan, seeing
-+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
--# Check whether LC_MESSAGES is available in <locale.h>.
-
--AC_DEFUN([AM_LC_MESSAGES],
--[
-- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
-- [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
-- am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
-- if test $am_cv_val_LC_MESSAGES = yes; then
-- AC_DEFINE(HAVE_LC_MESSAGES, 1,
-- [Define if your <locale.h> file defines LC_MESSAGES.])
-- fi
--])
-
--# Like AC_CONFIG_HEADER, but automatically create stamp file.
-+# _AM_DEPENDENCIES(NAME)
-+# ----------------------
-+# See how the compiler implements dependency checking.
-+# NAME is "CC", "CXX", "GCJ", or "OBJC".
-+# We try a few techniques and use that to set a single cache variable.
-+#
-+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-+# dependency, and given that the user is not expected to run this macro,
-+# just rely on AC_PROG_CC.
-+AC_DEFUN([_AM_DEPENDENCIES],
-+[AC_REQUIRE([AM_SET_DEPDIR])dnl
-+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-+AC_REQUIRE([AM_DEP_TRACK])dnl
-+
-+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
-+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
-+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
-+ [depcc="$$1" am_compiler_list=])
-+
-+AC_CACHE_CHECK([dependency style of $depcc],
-+ [am_cv_$1_dependencies_compiler_type],
-+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-+ # We make a subdir and do the tests there. Otherwise we can end up
-+ # making bogus files that we don't know about and never remove. For
-+ # instance it was reported that on HP-UX the gcc test will end up
-+ # making a dummy file named `D' -- because `-MD' means `put the output
-+ # in D'.
-+ mkdir conftest.dir
-+ # Copy depcomp to subdir because otherwise we won't find it if we're
-+ # using a relative directory.
-+ cp "$am_depcomp" conftest.dir
-+ cd conftest.dir
-+ # We will build objects and dependencies in a subdirectory because
-+ # it helps to detect inapplicable dependency modes. For instance
-+ # both Tru64's cc and ICC support -MD to output dependencies as a
-+ # side effect of compilation, but ICC will put the dependencies in
-+ # the current directory while Tru64 will put them in the object
-+ # directory.
-+ mkdir sub
-+
-+ am_cv_$1_dependencies_compiler_type=none
-+ if test "$am_compiler_list" = ""; then
-+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-+ fi
-+ for depmode in $am_compiler_list; do
-+ # Setup a source with many dependencies, because some compilers
-+ # like to wrap large dependency lists on column 80 (with \), and
-+ # we should not choose a depcomp mode which is confused by this.
-+ #
-+ # We need to recreate these files for each test, as the compiler may
-+ # overwrite some of them when testing with obscure command lines.
-+ # This happens at least with the AIX C compiler.
-+ : > sub/conftest.c
-+ for i in 1 2 3 4 5 6; do
-+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
-+ : > sub/conftst$i.h
-+ done
-+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
--AC_DEFUN([AM_CONFIG_HEADER],
--[AC_PREREQ([2.12])
--AC_CONFIG_HEADER([$1])
--dnl When config.status generates a header, we must update the stamp-h file.
--dnl This file resides in the same directory as the config header
--dnl that is generated. We must strip everything past the first ":",
--dnl and everything past the last "/".
--AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
--ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
--<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
--<<am_indx=1
--for am_file in <<$1>>; do
-- case " <<$>>CONFIG_HEADERS " in
-- *" <<$>>am_file "*<<)>>
-- echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
-- ;;
-- esac
-- am_indx=`expr "<<$>>am_indx" + 1`
--done<<>>dnl>>)
--changequote([,]))])
--
--# Do all the work for Automake. This macro actually does too much --
--# some checks are only needed if your package does certain things.
--# But this isn't really a big deal.
-+ case $depmode in
-+ nosideeffect)
-+ # after this tag, mechanisms are not by side-effect, so they'll
-+ # only be used when explicitly requested
-+ if test "x$enable_dependency_tracking" = xyes; then
-+ continue
-+ else
-+ break
-+ fi
-+ ;;
-+ none) break ;;
-+ esac
-+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
-+ # mode. It turns out that the SunPro C++ compiler does not properly
-+ # handle `-M -o', and we need to detect this.
-+ if depmode=$depmode \
-+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
-+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
-+ >/dev/null 2>conftest.err &&
-+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
-+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-+ # icc doesn't choke on unknown options, it will just issue warnings
-+ # (even with -Werror). So we grep stderr for any message
-+ # that says an option was ignored.
-+ if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
-+ am_cv_$1_dependencies_compiler_type=$depmode
-+ break
-+ fi
-+ fi
-+ done
-
--# serial 1
-+ cd ..
-+ rm -rf conftest.dir
-+else
-+ am_cv_$1_dependencies_compiler_type=none
-+fi
-+])
-+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-+AM_CONDITIONAL([am__fastdep$1], [
-+ test "x$enable_dependency_tracking" != xno \
-+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-+])
-
--dnl Usage:
--dnl AM_INIT_AUTOMAKE(package,version, [no-define])
-
--AC_DEFUN([AM_INIT_AUTOMAKE],
--[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
--AC_REQUIRE([AC_PROG_INSTALL])
--PACKAGE=[$1]
--AC_SUBST(PACKAGE)
--VERSION=[$2]
--AC_SUBST(VERSION)
--dnl test to see if srcdir already configured
--if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
-- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-+# AM_SET_DEPDIR
-+# -------------
-+# Choose a directory name for dependency files.
-+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
-+AC_DEFUN([AM_SET_DEPDIR],
-+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-+])
-+
-+
-+# AM_DEP_TRACK
-+# ------------
-+AC_DEFUN([AM_DEP_TRACK],
-+[AC_ARG_ENABLE(dependency-tracking,
-+[ --disable-dependency-tracking Speeds up one-time builds
-+ --enable-dependency-tracking Do not reject slow dependency extractors])
-+if test "x$enable_dependency_tracking" != xno; then
-+ am_depcomp="$ac_aux_dir/depcomp"
-+ AMDEPBACKSLASH='\'
- fi
--ifelse([$3],,
--AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
--AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
--AC_REQUIRE([AM_SANITY_CHECK])
--AC_REQUIRE([AC_ARG_PROGRAM])
--dnl FIXME This is truly gross.
--missing_dir=`cd $ac_aux_dir && pwd`
--AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir)
--AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
--AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir)
--AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
--AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
--AC_REQUIRE([AC_PROG_MAKE_SET])])
-+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-+AC_SUBST([AMDEPBACKSLASH])
-+])
-
--# Copyright 2002 Free Software Foundation, Inc.
-+# Generate code to set up dependency tracking. -*- Autoconf -*-
-+
-+# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, 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
-@@ -1395,83 +1177,201 @@
- # 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.
-
--# AM_AUTOMAKE_VERSION(VERSION)
--# ----------------------------
--# Automake X.Y traces this macro to ensure aclocal.m4 has been
--# generated from the m4 files accompanying Automake X.Y.
--AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"])
-+#serial 2
-
--# AM_SET_CURRENT_AUTOMAKE_VERSION
--# -------------------------------
--# Call AM_AUTOMAKE_VERSION so it can be traced.
--# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
--AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-- [AM_AUTOMAKE_VERSION([1.4-p6])])
-+# _AM_OUTPUT_DEPENDENCY_COMMANDS
-+# ------------------------------
-+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-+[for mf in $CONFIG_FILES; do
-+ # Strip MF so we end up with the name of the file.
-+ mf=`echo "$mf" | sed -e 's/:.*$//'`
-+ # Check whether this is an Automake generated Makefile or not.
-+ # We used to match only the files named `Makefile.in', but
-+ # some people rename them; so instead we look at the file content.
-+ # Grep'ing the first line is not enough: some people post-process
-+ # each Makefile.in and add a new line on top of each file to say so.
-+ # So let's grep whole file.
-+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
-+ dirpart=`AS_DIRNAME("$mf")`
-+ else
-+ continue
-+ fi
-+ grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
-+ # Extract the definition of DEP_FILES from the Makefile without
-+ # running `make'.
-+ DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
-+ test -z "$DEPDIR" && continue
-+ # When using ansi2knr, U may be empty or an underscore; expand it
-+ U=`sed -n -e '/^U = / s///p' < "$mf"`
-+ test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-+ # We invoke sed twice because it is the simplest approach to
-+ # changing $(DEPDIR) to its actual value in the expansion.
-+ for file in `sed -n -e '
-+ /^DEP_FILES = .*\\\\$/ {
-+ s/^DEP_FILES = //
-+ :loop
-+ s/\\\\$//
-+ p
-+ n
-+ /\\\\$/ b loop
-+ p
-+ }
-+ /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
-+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-+ # Make sure the directory exists.
-+ test -f "$dirpart/$file" && continue
-+ fdir=`AS_DIRNAME(["$file"])`
-+ AS_MKDIR_P([$dirpart/$fdir])
-+ # echo "creating $dirpart/$file"
-+ echo '# dummy' > "$dirpart/$file"
-+ done
-+done
-+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-+
-+# AM_OUTPUT_DEPENDENCY_COMMANDS
-+# -----------------------------
-+# This macro should only be invoked once -- use via AC_REQUIRE.
- #
--# Check to make sure that the build environment is sane.
--#
-+# This code is only required when automatic dependency tracking
-+# is enabled. FIXME. This creates each `.P' file that we will
-+# need in order to bootstrap the dependency handling code.
-+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-+[AC_CONFIG_COMMANDS([depfiles],
-+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-+])
-
--AC_DEFUN([AM_SANITY_CHECK],
--[AC_MSG_CHECKING([whether build environment is sane])
--# Just in case
--sleep 1
--echo timestamp > conftestfile
--# Do `set' in a subshell so we don't clobber the current shell's
--# arguments. Must try -L first in case configure is actually a
--# symlink; some systems play weird games with the mod time of symlinks
--# (eg FreeBSD returns the mod time of the symlink's containing
--# directory).
--if (
-- set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
-- if test "[$]*" = "X"; then
-- # -L didn't work.
-- set X `ls -t $srcdir/configure conftestfile`
-- fi
-- if test "[$]*" != "X $srcdir/configure conftestfile" \
-- && test "[$]*" != "X conftestfile $srcdir/configure"; then
-+# Check to see how 'make' treats includes. -*- Autoconf -*-
-
-- # If neither matched, then we have a broken ls. This can happen
-- # if, for instance, CONFIG_SHELL is bash and it inherits a
-- # broken ls alias from the environment. This has actually
-- # happened. Such a system could not be considered "sane".
-- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
--alias in your environment])
-- fi
-+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
-
-- test "[$]2" = conftestfile
-- )
--then
-- # Ok.
-- :
--else
-- AC_MSG_ERROR([newly created file is older than distributed files!
--Check your system clock])
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2, or (at your option)
-+# any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-+# 02111-1307, USA.
-+
-+# serial 2
-+
-+# AM_MAKE_INCLUDE()
-+# -----------------
-+# Check to see how make treats includes.
-+AC_DEFUN([AM_MAKE_INCLUDE],
-+[am_make=${MAKE-make}
-+cat > confinc << 'END'
-+am__doit:
-+ @echo done
-+.PHONY: am__doit
-+END
-+# If we don't find an include directive, just comment out the code.
-+AC_MSG_CHECKING([for style of include used by $am_make])
-+am__include="#"
-+am__quote=
-+_am_result=none
-+# First try GNU make style include.
-+echo "include confinc" > confmf
-+# We grep out `Entering directory' and `Leaving directory'
-+# messages which can occur if `w' ends up in MAKEFLAGS.
-+# In particular we don't look at `^make:' because GNU make might
-+# be invoked under some other name (usually "gmake"), in which
-+# case it prints its new name instead of `make'.
-+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-+ am__include=include
-+ am__quote=
-+ _am_result=GNU
-+fi
-+# Now try BSD make style include.
-+if test "$am__include" = "#"; then
-+ echo '.include "confinc"' > confmf
-+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
-+ am__include=.include
-+ am__quote="\""
-+ _am_result=BSD
-+ fi
- fi
--rm -f conftest*
--AC_MSG_RESULT(yes)])
-+AC_SUBST([am__include])
-+AC_SUBST([am__quote])
-+AC_MSG_RESULT([$_am_result])
-+rm -f confinc confmf
-+])
-
--dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
--dnl The program must properly implement --version.
--AC_DEFUN([AM_MISSING_PROG],
--[AC_MSG_CHECKING(for working $2)
--# Run test in a subshell; some versions of sh will print an error if
--# an executable is not found, even if stderr is redirected.
--# Redirect stdin to placate older versions of autoconf. Sigh.
--if ($2 --version) < /dev/null > /dev/null 2>&1; then
-- $1=$2
-- AC_MSG_RESULT(found)
-+# AM_CONDITIONAL -*- Autoconf -*-
-+
-+# Copyright 1997, 2000, 2001 Free Software Foundation, 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, 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 5
-+
-+AC_PREREQ(2.52)
-+
-+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-+# -------------------------------------
-+# Define a conditional.
-+AC_DEFUN([AM_CONDITIONAL],
-+[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
-+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-+AC_SUBST([$1_TRUE])
-+AC_SUBST([$1_FALSE])
-+if $2; then
-+ $1_TRUE=
-+ $1_FALSE='#'
- else
-- $1="$3/missing $2"
-- AC_MSG_RESULT(missing)
-+ $1_TRUE='#'
-+ $1_FALSE=
- fi
--AC_SUBST($1)])
-+AC_CONFIG_COMMANDS_PRE(
-+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-+ AC_MSG_ERROR([conditional "$1" was never defined.
-+Usually this means the macro was only invoked conditionally.])
-+fi])])
-
- # Add --enable-maintainer-mode option to configure.
- # From Jim Meyering
-
--# serial 1
-+# Copyright 1996, 1998, 2000, 2001, 2002 Free Software Foundation, 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, 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 2
-
- AC_DEFUN([AM_MAINTAINER_MODE],
- [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
-@@ -1481,28 +1381,34 @@
- (and sometimes confusing) to the casual installer],
- USE_MAINTAINER_MODE=$enableval,
- USE_MAINTAINER_MODE=no)
-- AC_MSG_RESULT($USE_MAINTAINER_MODE)
-- AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
-+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
-+ AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
- MAINT=$MAINTAINER_MODE_TRUE
- AC_SUBST(MAINT)dnl
- ]
- )
-
--# Define a conditional.
-+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
-
--AC_DEFUN([AM_CONDITIONAL],
--[AC_SUBST($1_TRUE)
--AC_SUBST($1_FALSE)
--if $2; then
-- $1_TRUE=
-- $1_FALSE='#'
--else
-- $1_TRUE='#'
-- $1_FALSE=
--fi])
-
-+# Copyright 1996, 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-
--# serial 1
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2, or (at your option)
-+# any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-+# 02111-1307, USA.
-+
-+# serial 2
-
- # @defmac AC_PROG_CC_STDC
- # @maindex PROG_CC_STDC
-@@ -1529,7 +1435,7 @@
- dnl FIXME: can't do this because then AC_AIX won't work due to a
- dnl circular dependency.
- dnl AC_BEFORE([$0], [AC_PROG_CPP])
--AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
-+AC_MSG_CHECKING([for ${CC-cc} option to accept ANSI C])
- AC_CACHE_VAL(am_cv_prog_cc_stdc,
- [am_cv_prog_cc_stdc=no
- ac_save_CC="$CC"
-@@ -1537,9 +1443,10 @@
- # breaks some systems' header files.
- # AIX -qlanglvl=ansi
- # Ultrix and OSF/1 -std1
--# HP-UX -Aa -D_HPUX_SOURCE
-+# 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 "-Aa -D_HPUX_SOURCE" "-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"
- AC_TRY_COMPILE(
-@@ -1581,7 +1488,7 @@
- if test -z "$am_cv_prog_cc_stdc"; then
- AC_MSG_RESULT([none needed])
- else
-- AC_MSG_RESULT($am_cv_prog_cc_stdc)
-+ AC_MSG_RESULT([$am_cv_prog_cc_stdc])
- fi
- case "x$am_cv_prog_cc_stdc" in
- x|xno) ;;
-@@ -1589,9 +1496,12 @@
- esac
- ])
-
-+AU_DEFUN([fp_PROG_CC_STDC], [AM_PROG_CC_STDC])
-+
- # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-
- # serial 47 AC_PROG_LIBTOOL
-+# Debian $Rev: 203 $
-
-
- # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
-@@ -3010,27 +2920,10 @@
- # before this can be enabled.
- hardcode_into_libs=yes
-
-- # find out which ABI we are using
-- libsuff=
-- case "$host_cpu" in
-- x86_64*|s390x*|powerpc64*)
-- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-- if AC_TRY_EVAL(ac_compile); then
-- case `/usr/bin/file conftest.$ac_objext` in
-- *64-bit*)
-- libsuff=64
-- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
-- ;;
-- esac
-- fi
-- rm -rf conftest*
-- ;;
-- esac
--
- # Append ld.so.conf contents to the search path
- if test -f /etc/ld.so.conf; then
- lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '`
-- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
-+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
- fi
-
- # We used to test for /lib/ld.so.1 and disable shared libraries on
-@@ -3769,19 +3662,10 @@
-
- # This must be Linux ELF.
- linux*)
-- case $host_cpu in
-- alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*)
-- lt_cv_deplibs_check_method=pass_all ;;
-- *)
-- # glibc up to 2.1.1 does not perform some relocations on ARM
-- # this will be overridden with pass_all, but let us keep it just in case
-- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;;
-- esac
-- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
- lt_cv_deplibs_check_method=pass_all
- ;;
-
--netbsd*)
-+netbsd* | knetbsd*-gnu)
- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
- else
-@@ -4775,7 +4659,7 @@
- ;;
- esac
- ;;
-- netbsd*)
-+ netbsd* | knetbsd*-gnu)
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
- wlarc=
-@@ -6265,7 +6149,7 @@
- ;;
- esac
- ;;
-- netbsd*)
-+ netbsd* | knetbsd*-gnu)
- ;;
- osf3* | osf4* | osf5*)
- case $cc_basename in
-@@ -6576,6 +6460,9 @@
- cygwin* | mingw*)
- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
- ;;
-+ linux*)
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=no
-+ ;;
- *)
- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
- ;;
-@@ -6705,7 +6592,7 @@
- fi
- ;;
-
-- netbsd*)
-+ netbsd* | knetbsd*-gnu)
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
-@@ -6763,6 +6650,7 @@
- else
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds"
- fi
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=no
- else
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
- fi
-@@ -7122,7 +7010,7 @@
- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
- ;;
-
-- netbsd*)
-+ netbsd* | knetbsd*-gnu)
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
- else
-@@ -7573,7 +7461,7 @@
-
-
- # Copyright (C) 1995-2002 Free Software Foundation, Inc.
--# Copyright (C) 2001-2003 Red Hat, Inc.
-+# Copyright (C) 2001-2003,2004 Red Hat, Inc.
- #
- # This file is free software, distributed under the terms of the GNU
- # General Public License. As a special exception to the GNU General
-@@ -7596,7 +7484,9 @@
- #
- # Added better handling of ALL_LINGUAS from GNU gettext version
- # written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
--
-+#
-+# Modified to require ngettext
-+# Matthias Clasen <mclasen@redhat.com> 08/06/2004
- #
- # We need this here as well, since someone might use autoconf-2.5x
- # to configure GLib then an older version to configure a package
-@@ -7689,16 +7579,27 @@
- #
- # First check in libc
- #
-- AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
-+ AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
- [AC_TRY_LINK([
- #include <libintl.h>
- ],
-- [return (int) dgettext ("","")],
-- gt_cv_func_dgettext_libc=yes,
-- gt_cv_func_dgettext_libc=no)
-+ [return (int) ngettext ("","", 1)],
-+ gt_cv_func_ngettext_libc=yes,
-+ gt_cv_func_ngettext_libc=no)
- ])
-
-- if test "$gt_cv_func_dgettext_libc" = "yes" ; then
-+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
-+ AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
-+ [AC_TRY_LINK([
-+#include <libintl.h>
-+],
-+ [return (int) dgettext ("","")],
-+ gt_cv_func_dgettext_libc=yes,
-+ gt_cv_func_dgettext_libc=no)
-+ ])
-+ fi
-+
-+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
- AC_CHECK_FUNCS(bind_textdomain_codeset)
- fi
-
-@@ -7706,25 +7607,29 @@
- # If we don't have everything we want, check in libintl
- #
- if test "$gt_cv_func_dgettext_libc" != "yes" \
-+ || test "$gt_cv_func_ngettext_libc" != "yes" \
- || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
-
- AC_CHECK_LIB(intl, bindtextdomain,
-- [AC_CHECK_LIB(intl, dgettext,
-- gt_cv_func_dgettext_libintl=yes)])
-+ [AC_CHECK_LIB(intl, ngettext,
-+ [AC_CHECK_LIB(intl, dgettext,
-+ gt_cv_func_dgettext_libintl=yes)])])
-
- if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
- AC_MSG_CHECKING([if -liconv is needed to use gettext])
- AC_MSG_RESULT([])
-- AC_CHECK_LIB(intl, dcgettext,
-+ AC_CHECK_LIB(intl, ngettext,
-+ [AC_CHECK_LIB(intl, dcgettext,
- [gt_cv_func_dgettext_libintl=yes
- libintl_extra_libs=-liconv],
-- :,-liconv)
-+ :,-liconv)],
-+ :,-liconv)
- fi
-
- #
- # If we found libintl, then check in it for bind_textdomain_codeset();
- # we'll prefer libc if neither have bind_textdomain_codeset(),
-- # and both have dgettext
-+ # and both have dgettext and ngettext
- #
- if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
- glib_save_LIBS="$LIBS"
-@@ -7736,7 +7641,8 @@
- if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
- gt_cv_func_dgettext_libc=no
- else
-- if test "$gt_cv_func_dgettext_libc" = "yes"; then
-+ if test "$gt_cv_func_dgettext_libc" = "yes" \
-+ && test "$gt_cv_func_ngettext_libc" = "yes"; then
- gt_cv_func_dgettext_libintl=no
- fi
- fi
-diff -urN GConf-2.6.4/autom4te.cache/output.0 GConf-2.6.4.new/autom4te.cache/output.0
---- GConf-2.6.4/autom4te.cache/output.0 1970-01-01 02:00:00.000000000 +0200
-+++ GConf-2.6.4.new/autom4te.cache/output.0 2005-03-05 11:07:04.000000000 +0200
-@@ -0,0 +1,24375 @@
-+@%:@! /bin/sh
-+@%:@ Guess values for system-dependent variables and create Makefiles.
-+@%:@ Generated by GNU Autoconf 2.59.
-+@%:@
-+@%:@ Copyright (C) 2003 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
-+DUALCASE=1; export DUALCASE # for MKS sh
-+
-+# Support unset when possible.
-+if ( (MAIL=60; unset MAIL) || exit) >/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 -z "`(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
-+ test -d ./-p && rmdir ./-p
-+ as_mkdir_p=false
-+fi
-+
-+as_executable_p="test -f"
-+
-+# Sed expression to map a string onto a valid CPP name.
-+as_tr_cpp="eval 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="eval 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
-+
-+
-+
-+# Check that we are running under the correct shell.
-+SHELL=${CONFIG_SHELL-/bin/sh}
-+
-+case X$ECHO in
-+X*--fallback-echo)
-+ # Remove one level of quotation (which was required for Make).
-+ ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
-+ ;;
-+esac
-+
-+echo=${ECHO-echo}
-+if test "X$1" = X--no-reexec; then
-+ # Discard the --no-reexec flag, and continue.
-+ shift
-+elif test "X$1" = X--fallback-echo; then
-+ # Avoid inline document here, it may be left over
-+ :
-+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
-+ # Yippee, $echo works!
-+ :
-+else
-+ # Restart under the correct shell.
-+ exec $SHELL "$0" --no-reexec ${1+"$@"}
-+fi
-+
-+if test "X$1" = X--fallback-echo; then
-+ # used as fallback echo
-+ shift
-+ cat <<EOF
-+$*
-+EOF
-+ exit 0
-+fi
-+
-+# The HP-UX ksh and POSIX shell print the target directory to stdout
-+# if CDPATH is set.
-+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-+
-+if test -z "$ECHO"; then
-+if test "X${echo_test_string+set}" != Xset; then
-+# find a string as large as possible, as long as the shell can cope with it
-+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
-+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-+ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
-+ echo_test_string="`eval $cmd`" &&
-+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
-+ then
-+ break
-+ fi
-+ done
-+fi
-+
-+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ :
-+else
-+ # The Solaris, AIX, and Digital Unix default echo programs unquote
-+ # backslashes. This makes it impossible to quote backslashes using
-+ # echo "$something" | sed 's/\\/\\\\/g'
-+ #
-+ # So, first we look for a working echo in the user's PATH.
-+
-+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ for dir in $PATH /usr/ucb; do
-+ IFS="$lt_save_ifs"
-+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ echo="$dir/echo"
-+ break
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+
-+ if test "X$echo" = Xecho; then
-+ # We didn't find a better echo, so look for alternatives.
-+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ # This shell has a builtin print -r that does the trick.
-+ echo='print -r'
-+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
-+ test "X$CONFIG_SHELL" != X/bin/ksh; then
-+ # If we have ksh, try running configure again with it.
-+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-+ export ORIGINAL_CONFIG_SHELL
-+ CONFIG_SHELL=/bin/ksh
-+ export CONFIG_SHELL
-+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
-+ else
-+ # Try using printf.
-+ echo='printf %s\n'
-+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ # Cool, printf works
-+ :
-+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-+ test "X$echo_testing_string" = 'X\t' &&
-+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-+ export CONFIG_SHELL
-+ SHELL="$CONFIG_SHELL"
-+ export SHELL
-+ echo="$CONFIG_SHELL $0 --fallback-echo"
-+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-+ test "X$echo_testing_string" = 'X\t' &&
-+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ echo="$CONFIG_SHELL $0 --fallback-echo"
-+ else
-+ # maybe with a smaller string...
-+ prev=:
-+
-+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
-+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
-+ then
-+ break
-+ fi
-+ prev="$cmd"
-+ done
-+
-+ if test "$prev" != 'sed 50q "$0"'; then
-+ echo_test_string=`eval $prev`
-+ export echo_test_string
-+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
-+ else
-+ # Oops. We lost completely, so just stick with echo.
-+ echo=echo
-+ fi
-+ fi
-+ fi
-+ fi
-+fi
-+fi
-+
-+# Copy echo and quote the copy suitably for passing to libtool from
-+# the Makefile, instead of quoting the original, which is used later.
-+ECHO=$echo
-+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
-+ ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
-+fi
-+
-+
-+
-+
-+tagnames=${tagnames+${tagnames},}CXX
-+
-+tagnames=${tagnames+${tagnames},}F77
-+
-+# 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.
-+#
-+ac_default_prefix=/usr/local
-+ac_config_libobj_dir=.
-+cross_compiling=no
-+subdirs=
-+MFLAGS=
-+MAKEFLAGS=
-+SHELL=${CONFIG_SHELL-/bin/sh}
-+
-+# 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="gconf/gconf.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 INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CPP EGREP build build_cpu build_vendor build_os host host_cpu host_vendor host_os LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL MAJOR_VERSION GETTEXT_PACKAGE GCONF_CURRENT GCONF_REVISION GCONF_AGE EXPANDED_SYSCONFDIR GCONF_CONFIG_SOURCE INSTALL_GCONF_CONFIG_SOURCE HTML_DIR GTKDOC HAVE_GTK_DOC_TRUE HAVE_GTK_DOC_FALSE HAVE_GTK_DOC DB2HTML HAVE_DOCBOOK_TRUE HAVE_DOCBOOK_FALSE ENABLE_GTK_DOC_TRUE ENABLE_GTK_DOC_FALSE USE_SYSTEM_BUS_TRUE USE_SYSTEM_BUS_FALSE PKG_CONFIG GCONF_ORBIT_CFLAGS GCONF_ORBIT_LIBS ORBIT_IDL GCONF_DBUS_CFLAGS GCONF_DBUS_LIBS PC_REQUIRES HAVE_ORBIT_TRUE HAVE_ORBIT_FALSE HAVE_DBUS_TRUE HAVE_DBUS_FALSE GCONF_IPC_CFLAGS GCONF_IPC_LIBS DBUS_SERVICE_DIR DEPENDENT_CFLAGS DEPENDENT_LIBS DEPENDENT_WITH_XML_CFLAGS DEPENDENT_WITH_XML_LIBS DEPENDENT_WITH_GTK_CFLAGS DEPENDENT_WITH_GTK_LIBS DEPENDENT_WITH_XML_AND_GTK_CFLAGS DEPENDENT_WITH_XML_AND_GTK_LIBS GTK_TRUE GTK_FALSE POPT_LIBS PTHREADS_TRUE PTHREADS_FALSE USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS gconflocaledir absolute_top_srcdir PERL INDENT REBUILD LIB@&t@OBJS 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
-+exec_prefix=NONE
-+no_create=
-+no_recursion=
-+prefix=NONE
-+program_prefix=NONE
-+program_suffix=NONE
-+program_transform_name=s,x,x,
-+silent=
-+site=
-+srcdir=
-+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'
-+datadir='${prefix}/share'
-+sysconfdir='${prefix}/etc'
-+sharedstatedir='${prefix}/com'
-+localstatedir='${prefix}/var'
-+libdir='${exec_prefix}/lib'
-+includedir='${prefix}/include'
-+oldincludedir='/usr/include'
-+infodir='${prefix}/info'
-+mandir='${prefix}/man'
-+
-+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"
-+ ac_prev=
-+ continue
-+ fi
-+
-+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-+
-+ # Accept the important Cygnus configure options, so we can diagnose typos.
-+
-+ case $ac_option in
-+
-+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
-+ ac_prev=bindir ;;
-+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-+ bindir=$ac_optarg ;;
-+
-+ -build | --build | --buil | --bui | --bu)
-+ ac_prev=build_alias ;;
-+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-+ build_alias=$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 ;;
-+
-+ --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 ;;
-+
-+ -disable-* | --disable-*)
-+ ac_feature=`expr "x$ac_option" : 'x-*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" ;;
-+
-+ -enable-* | --enable-*)
-+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-+ # 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"`;;
-+ *) ac_optarg=yes ;;
-+ esac
-+ eval "enable_$ac_feature='$ac_optarg'" ;;
-+
-+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-+ | --exec | --exe | --ex)
-+ ac_prev=exec_prefix ;;
-+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-+ | --exec=* | --exe=* | --ex=*)
-+ 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 ;;
-+
-+ -host | --host | --hos | --ho)
-+ ac_prev=host_alias ;;
-+ -host=* | --host=* | --hos=* | --ho=*)
-+ host_alias=$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 ;;
-+
-+ -infodir | --infodir | --infodi | --infod | --info | --inf)
-+ ac_prev=infodir ;;
-+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-+ infodir=$ac_optarg ;;
-+
-+ -libdir | --libdir | --libdi | --libd)
-+ ac_prev=libdir ;;
-+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
-+ 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 ;;
-+
-+ -localstatedir | --localstatedir | --localstatedi | --localstated \
-+ | --localstate | --localstat | --localsta | --localst \
-+ | --locals | --local | --loca | --loc | --lo)
-+ ac_prev=localstatedir ;;
-+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-+ localstatedir=$ac_optarg ;;
-+
-+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-+ ac_prev=mandir ;;
-+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-+ 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_create=yes ;;
-+
-+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-+ no_recursion=yes ;;
-+
-+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-+ | --oldin | --oldi | --old | --ol | --o)
-+ ac_prev=oldincludedir ;;
-+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-+ oldincludedir=$ac_optarg ;;
-+
-+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-+ ac_prev=prefix ;;
-+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-+ 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-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-transform-name | --program-transform-name \
-+ | --program-transform-nam | --program-transform-na \
-+ | --program-transform-n | --program-transform- \
-+ | --program-transform | --program-transfor \
-+ | --program-transfo | --program-transf \
-+ | --program-trans | --program-tran \
-+ | --progr-tra | --program-tr | --program-t)
-+ ac_prev=program_transform_name ;;
-+ -program-transform-name=* | --program-transform-name=* \
-+ | --program-transform-nam=* | --program-transform-na=* \
-+ | --program-transform-n=* | --program-transform-=* \
-+ | --program-transform=* | --program-transfor=* \
-+ | --program-transfo=* | --program-transf=* \
-+ | --program-trans=* | --program-tran=* \
-+ | --progr-tra=* | --program-tr=* | --program-t=*)
-+ program_transform_name=$ac_optarg ;;
-+
-+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-+ | -silent | --silent | --silen | --sile | --sil)
-+ silent=yes ;;
-+
-+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-+ ac_prev=sbindir ;;
-+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-+ | --sbi=* | --sb=*)
-+ sbindir=$ac_optarg ;;
-+
-+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
-+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-+ | --sharedst | --shareds | --shared | --share | --shar \
-+ | --sha | --sh)
-+ ac_prev=sharedstatedir ;;
-+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-+ | --sha=* | --sh=*)
-+ sharedstatedir=$ac_optarg ;;
-+
-+ -site | --site | --sit)
-+ ac_prev=site ;;
-+ -site=* | --site=* | --sit=*)
-+ site=$ac_optarg ;;
-+
-+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-+ ac_prev=srcdir ;;
-+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-+ 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 ;;
-+
-+ -target | --target | --targe | --targ | --tar | --ta | --t)
-+ ac_prev=target_alias ;;
-+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-+ target_alias=$ac_optarg ;;
-+
-+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
-+ verbose=yes ;;
-+
-+ -version | --version | --versio | --versi | --vers | -V)
-+ ac_init_version=: ;;
-+
-+ -with-* | --with-*)
-+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-+ # 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'`
-+ case $ac_option in
-+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-+ *) ac_optarg=yes ;;
-+ esac
-+ eval "with_$ac_package='$ac_optarg'" ;;
-+
-+ -without-* | --without-*)
-+ ac_package=`expr "x$ac_option" : 'x-*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" ;;
-+
-+ --x)
-+ # Obsolete; use --with-x.
-+ with_x=yes ;;
-+
-+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-+ | --x-incl | --x-inc | --x-in | --x-i)
-+ 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-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 ;;
-+
-+ -*) { echo "$as_me: error: unrecognized option: $ac_option
-+Try \`$0 --help' for more information." >&2
-+ { (exit 1); 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}
-+ ;;
-+
-+ 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; }; }
-+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
-+
-+# Be sure to have absolute paths.
-+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
-+ localstatedir libdir includedir oldincludedir infodir mandir
-+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; }; };;
-+ 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
-+
-+# 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
-+
-+ac_tool_prefix=
-+test -n "$host_alias" && ac_tool_prefix=$host_alias-
-+
-+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'`
-+ srcdir=$ac_confdir
-+ if test ! -r $srcdir/$ac_unique_file; then
-+ srcdir=..
-+ fi
-+else
-+ ac_srcdir_defaulted=no
-+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; }; }
-+ else
-+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-+ { (exit 1); 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_CXX_set=${CXX+set}
-+ac_env_CXX_value=$CXX
-+ac_cv_env_CXX_set=${CXX+set}
-+ac_cv_env_CXX_value=$CXX
-+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
-+ac_env_CXXFLAGS_value=$CXXFLAGS
-+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
-+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
-+ac_env_CPP_set=${CPP+set}
-+ac_env_CPP_value=$CPP
-+ac_cv_env_CPP_set=${CPP+set}
-+ac_cv_env_CPP_value=$CPP
-+ac_env_CXXCPP_set=${CXXCPP+set}
-+ac_env_CXXCPP_value=$CXXCPP
-+ac_cv_env_CXXCPP_set=${CXXCPP+set}
-+ac_cv_env_CXXCPP_value=$CXXCPP
-+ac_env_F77_set=${F77+set}
-+ac_env_F77_value=$F77
-+ac_cv_env_F77_set=${F77+set}
-+ac_cv_env_F77_value=$F77
-+ac_env_FFLAGS_set=${FFLAGS+set}
-+ac_env_FFLAGS_value=$FFLAGS
-+ac_cv_env_FFLAGS_set=${FFLAGS+set}
-+ac_cv_env_FFLAGS_value=$FFLAGS
-+
-+#
-+# 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
-+
-+Program names:
-+ --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
-+
-+System types:
-+ --build=BUILD configure for building on BUILD [guessed]
-+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
-+_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]
-+ --enable-maintainer-mode enable make rules and dependencies not useful
-+ (and sometimes confusing) to the casual installer
-+ --disable-dependency-tracking Speeds up one-time builds
-+ --enable-dependency-tracking Do not reject slow dependency extractors
-+ --enable-shared@<:@=PKGS@:>@
-+ build shared libraries @<:@default=yes@:>@
-+ --enable-static@<:@=PKGS@:>@
-+ build static libraries @<:@default=yes@:>@
-+ --enable-fast-install@<:@=PKGS@:>@
-+ optimize for fast installation @<:@default=yes@:>@
-+ --disable-libtool-lock avoid locking (might break parallel builds)
-+ --enable-gconf-source=sourceaddress Where to install schema files.
-+ --enable-debug=no/yes/minimum Compile with debug checks.
-+ --enable-gtk-doc Use gtk-doc to build documentation default=auto
-+ --enable-gtk Enable GTK+ support (for gconf-sanity-check) default=auto
-+ --enable-system-bus Use the system bus instead of session bus
-+
-+Optional Packages:
-+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
-+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
-+ --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@
-+ --with-pic try to use only PIC/non-PIC objects @<:@default=use
-+ both@:>@
-+ --with-tags@<:@=TAGS@:>@
-+ include additional configurations @<:@automatic@:>@
-+ --with-html-dir=PATH path to installed docs
-+ --with-ipc=orbit/dbus/both choose ipc mechanism to use in the daemon, default=dbus
-+
-+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>
-+ CXX C++ compiler command
-+ CXXFLAGS C++ compiler flags
-+ CPP C preprocessor
-+ CXXCPP C++ preprocessor
-+ F77 Fortran 77 compiler command
-+ FFLAGS Fortran 77 compiler flags
-+
-+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
-+
-+# Do not use `cd foo && pwd` to compute absolute paths, because
-+# the directories may not exist.
-+case `pwd` in
-+.) ac_abs_builddir="$ac_dir";;
-+*)
-+ case "$ac_dir" in
-+ .) ac_abs_builddir=`pwd`;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_top_builddir=${ac_top_builddir}.;;
-+*)
-+ case ${ac_top_builddir}. in
-+ .) ac_abs_top_builddir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_srcdir=$ac_srcdir;;
-+*)
-+ case $ac_srcdir in
-+ .) ac_abs_srcdir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_top_srcdir=$ac_top_srcdir;;
-+*)
-+ case $ac_top_srcdir in
-+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-+ esac;;
-+esac
-+
-+ 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 (C) 2003 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.59. 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 &&
-+ 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
-+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-+ else
-+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-+ fi
-+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
-+ . "$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
-+else
-+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-+echo "$as_me: creating cache $cache_file" >&6;}
-+ >$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
-+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_config_headers="$ac_config_headers config.h"
-+
-+
-+am__api_version="1.7"
-+ac_aux_dir=
-+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
-+ if test -f $ac_dir/install-sh; then
-+ ac_aux_dir=$ac_dir
-+ ac_install_sh="$ac_aux_dir/install-sh -c"
-+ break
-+ elif test -f $ac_dir/install.sh; then
-+ 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; }; }
-+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.
-+
-+# 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:
-+# SysV /etc/install, /usr/sbin/install
-+# 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"
-+# OS/2's system install, which has a completely different semantic
-+# ./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
-+if test -z "$INSTALL"; then
-+if test "${ac_cv_path_install+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&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/* | \
-+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
-+ /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
-+ done
-+ done
-+ ;;
-+esac
-+done
-+
-+
-+fi
-+ if test "${ac_cv_path_install+set}" = set; then
-+ 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
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: $INSTALL" >&5
-+echo "${ECHO_T}$INSTALL" >&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_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-+
-+echo "$as_me:$LINENO: checking whether build environment is sane" >&5
-+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
-+# Just in case
-+sleep 1
-+echo timestamp > conftest.file
-+# Do `set' in a subshell so we don't clobber the current shell's
-+# arguments. Must try -L first in case configure is actually a
-+# symlink; some systems play weird games with the mod time of symlinks
-+# (eg FreeBSD returns the mod time of the symlink's containing
-+# directory).
-+if (
-+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
-+ if test "$*" = "X"; then
-+ # -L didn't work.
-+ set X `ls -t $srcdir/configure conftest.file`
-+ fi
-+ rm -f conftest.file
-+ if test "$*" != "X $srcdir/configure conftest.file" \
-+ && test "$*" != "X conftest.file $srcdir/configure"; then
-+
-+ # If neither matched, then we have a broken ls. This can happen
-+ # if, for instance, CONFIG_SHELL is bash and it inherits a
-+ # broken ls alias from the environment. This has actually
-+ # happened. Such a system could not be considered "sane".
-+ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
-+alias in your environment" >&5
-+echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
-+alias in your environment" >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+
-+ test "$2" = conftest.file
-+ )
-+then
-+ # Ok.
-+ :
-+else
-+ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-+Check your system clock" >&5
-+echo "$as_me: error: newly created file is older than distributed files!
-+Check your system clock" >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+test "$program_prefix" != NONE &&
-+ program_transform_name="s,^,$program_prefix,;$program_transform_name"
-+# Use a double $ so make ignores it.
-+test "$program_suffix" != NONE &&
-+ program_transform_name="s,\$,$program_suffix,;$program_transform_name"
-+# Double any \ or $. echo might interpret backslashes.
-+# By default was `s,x,x', remove it if useless.
-+cat <<\_ACEOF >conftest.sed
-+s/[\\$]/&&/g;s/;s,x,x,$//
-+_ACEOF
-+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
-+rm conftest.sed
-+
-+
-+# expand $ac_aux_dir to an absolute path
-+am_aux_dir=`cd $ac_aux_dir && pwd`
-+
-+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
-+# Use eval to expand $SHELL
-+if eval "$MISSING --run true"; then
-+ am_missing_run="$MISSING --run "
-+else
-+ am_missing_run=
-+ { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
-+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
-+fi
-+
-+for ac_prog in gawk mawk nawk awk
-+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_AWK+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$AWK"; then
-+ ac_cv_prog_AWK="$AWK" # 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_AWK="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+AWK=$ac_cv_prog_AWK
-+if test -n "$AWK"; then
-+ echo "$as_me:$LINENO: result: $AWK" >&5
-+echo "${ECHO_T}$AWK" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$AWK" && break
-+done
-+
-+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
-+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
-+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.make <<\_ACEOF
-+all:
-+ @echo 'ac_maketemp="$(MAKE)"'
-+_ACEOF
-+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
-+if test -n "$ac_maketemp"; then
-+ eval ac_cv_prog_make_${ac_make}_set=yes
-+else
-+ eval ac_cv_prog_make_${ac_make}_set=no
-+fi
-+rm -f conftest.make
-+fi
-+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ SET_MAKE=
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+ SET_MAKE="MAKE=${MAKE-make}"
-+fi
-+
-+rm -rf .tst 2>/dev/null
-+mkdir .tst 2>/dev/null
-+if test -d .tst; then
-+ am__leading_dot=.
-+else
-+ am__leading_dot=_
-+fi
-+rmdir .tst 2>/dev/null
-+
-+ # test to see if srcdir already configured
-+if test "`cd $srcdir && pwd`" != "`pwd`" &&
-+ test -f $srcdir/config.status; then
-+ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+# test whether we have cygpath
-+if test -z "$CYGPATH_W"; then
-+ if (cygpath --version) >/dev/null 2>/dev/null; then
-+ CYGPATH_W='cygpath -w'
-+ else
-+ CYGPATH_W=echo
-+ fi
-+fi
-+
-+
-+# Define the identity of the package.
-+ PACKAGE=GConf
-+ VERSION=2.6.4
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define PACKAGE "$PACKAGE"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define VERSION "$VERSION"
-+_ACEOF
-+
-+# Some tools Automake needs.
-+
-+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-+
-+
-+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-+
-+
-+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-+
-+
-+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-+
-+
-+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-+
-+
-+AMTAR=${AMTAR-"${am_missing_run}tar"}
-+
-+install_sh=${install_sh-"$am_aux_dir/install-sh"}
-+
-+# Installed binaries are usually stripped using `strip' when the user
-+# run `make install-strip'. However `strip' might not be the right
-+# tool to use in cross-compilation environments, therefore Automake
-+# will honor the `STRIP' environment variable to overrule this program.
-+if test "$cross_compiling" != no; then
-+ if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}strip; 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_STRIP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$STRIP"; then
-+ ac_cv_prog_STRIP="$STRIP" # 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_STRIP="${ac_tool_prefix}strip"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+STRIP=$ac_cv_prog_STRIP
-+if test -n "$STRIP"; then
-+ echo "$as_me:$LINENO: result: $STRIP" >&5
-+echo "${ECHO_T}$STRIP" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+fi
-+if test -z "$ac_cv_prog_STRIP"; then
-+ ac_ct_STRIP=$STRIP
-+ # Extract the first word of "strip", so it can be a program name with args.
-+set dummy strip; 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_STRIP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_STRIP"; then
-+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # 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_STRIP="strip"
-+ 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_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
-+fi
-+fi
-+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-+if test -n "$ac_ct_STRIP"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-+echo "${ECHO_T}$ac_ct_STRIP" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ STRIP=$ac_ct_STRIP
-+else
-+ STRIP="$ac_cv_prog_STRIP"
-+fi
-+
-+fi
-+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
-+
-+# We need awk for the "check" target. The system "awk" is bad on
-+# some platforms.
-+
-+
-+
-+
-+echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
-+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
-+ # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
-+if test "${enable_maintainer_mode+set}" = set; then
-+ enableval="$enable_maintainer_mode"
-+ USE_MAINTAINER_MODE=$enableval
-+else
-+ USE_MAINTAINER_MODE=no
-+fi;
-+ echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
-+echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
-+
-+
-+if test $USE_MAINTAINER_MODE = yes; then
-+ MAINTAINER_MODE_TRUE=
-+ MAINTAINER_MODE_FALSE='#'
-+else
-+ MAINTAINER_MODE_TRUE='#'
-+ MAINTAINER_MODE_FALSE=
-+fi
-+
-+ MAINT=$MAINTAINER_MODE_TRUE
-+
-+
-+
-+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.
-+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
-+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
-+
-+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 "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
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+ 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
-+
-+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
-+ # 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+' '}$@"
-+ fi
-+fi
-+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 "$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
-+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
-+
-+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
-+
-+ 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
-+ 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
-+
-+ test -n "$ac_ct_CC" && break
-+done
-+
-+ CC=$ac_ct_CC
-+fi
-+
-+fi
-+
-+
-+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
-+/* 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 file name" >&5
-+echo $ECHO_N "checking for C compiler default output file name... $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.
-+# 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
-+ 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
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+
-+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; }; }
-+fi
-+
-+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
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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
-+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; }; }
-+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
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+#ifndef __GNUC__
-+ choke me
-+#endif
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_compiler_gnu=no
-+fi
-+rm -f conftest.err 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
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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>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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_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.err 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
-+if test "$ac_test_CFLAGS" = set; then
-+ CFLAGS=$ac_save_CFLAGS
-+elif test $ac_cv_prog_cc_g = yes; then
-+ if test "$GCC" = yes; then
-+ CFLAGS="-g -O2"
-+ else
-+ CFLAGS="-g"
-+ fi
-+else
-+ if test "$GCC" = yes; then
-+ CFLAGS="-O2"
-+ else
-+ 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
-+/* 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;
-+}
-+
-+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
-+ function prototypes and stuff, but not '\xHH' hex character constants.
-+ These don't provoke an error unfortunately, instead are silently treated
-+ as 'x'. The following induces an error, until -std1 is added to get
-+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
-+ array size at least. It's necessary to write '\x00'==0 to get something
-+ that's true only with -std1. */
-+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-+
-+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>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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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.err 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>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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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 \
-+ '' \
-+ '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
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_declaration
-+@%:@include <stdlib.h>
-+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>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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+continue
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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>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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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.err 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.err 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
-+DEPDIR="${am__leading_dot}deps"
-+
-+ ac_config_commands="$ac_config_commands depfiles"
-+
-+
-+am_make=${MAKE-make}
-+cat > confinc << 'END'
-+am__doit:
-+ @echo done
-+.PHONY: am__doit
-+END
-+# If we don't find an include directive, just comment out the code.
-+echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
-+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
-+am__include="#"
-+am__quote=
-+_am_result=none
-+# First try GNU make style include.
-+echo "include confinc" > confmf
-+# We grep out `Entering directory' and `Leaving directory'
-+# messages which can occur if `w' ends up in MAKEFLAGS.
-+# In particular we don't look at `^make:' because GNU make might
-+# be invoked under some other name (usually "gmake"), in which
-+# case it prints its new name instead of `make'.
-+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-+ am__include=include
-+ am__quote=
-+ _am_result=GNU
-+fi
-+# Now try BSD make style include.
-+if test "$am__include" = "#"; then
-+ echo '.include "confinc"' > confmf
-+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
-+ am__include=.include
-+ am__quote="\""
-+ _am_result=BSD
-+ fi
-+fi
-+
-+
-+echo "$as_me:$LINENO: result: $_am_result" >&5
-+echo "${ECHO_T}$_am_result" >&6
-+rm -f confinc confmf
-+
-+# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
-+if test "${enable_dependency_tracking+set}" = set; then
-+ enableval="$enable_dependency_tracking"
-+
-+fi;
-+if test "x$enable_dependency_tracking" != xno; then
-+ am_depcomp="$ac_aux_dir/depcomp"
-+ AMDEPBACKSLASH='\'
-+fi
-+
-+
-+if test "x$enable_dependency_tracking" != xno; then
-+ AMDEP_TRUE=
-+ AMDEP_FALSE='#'
-+else
-+ AMDEP_TRUE='#'
-+ AMDEP_FALSE=
-+fi
-+
-+
-+
-+
-+depcc="$CC" am_compiler_list=
-+
-+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
-+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-+ # We make a subdir and do the tests there. Otherwise we can end up
-+ # making bogus files that we don't know about and never remove. For
-+ # instance it was reported that on HP-UX the gcc test will end up
-+ # making a dummy file named `D' -- because `-MD' means `put the output
-+ # in D'.
-+ mkdir conftest.dir
-+ # Copy depcomp to subdir because otherwise we won't find it if we're
-+ # using a relative directory.
-+ cp "$am_depcomp" conftest.dir
-+ cd conftest.dir
-+ # We will build objects and dependencies in a subdirectory because
-+ # it helps to detect inapplicable dependency modes. For instance
-+ # both Tru64's cc and ICC support -MD to output dependencies as a
-+ # side effect of compilation, but ICC will put the dependencies in
-+ # the current directory while Tru64 will put them in the object
-+ # directory.
-+ mkdir sub
-+
-+ am_cv_CC_dependencies_compiler_type=none
-+ if test "$am_compiler_list" = ""; then
-+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-+ fi
-+ for depmode in $am_compiler_list; do
-+ # Setup a source with many dependencies, because some compilers
-+ # like to wrap large dependency lists on column 80 (with \), and
-+ # we should not choose a depcomp mode which is confused by this.
-+ #
-+ # We need to recreate these files for each test, as the compiler may
-+ # overwrite some of them when testing with obscure command lines.
-+ # This happens at least with the AIX C compiler.
-+ : > sub/conftest.c
-+ for i in 1 2 3 4 5 6; do
-+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
-+ : > sub/conftst$i.h
-+ done
-+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-+
-+ case $depmode in
-+ nosideeffect)
-+ # after this tag, mechanisms are not by side-effect, so they'll
-+ # only be used when explicitly requested
-+ if test "x$enable_dependency_tracking" = xyes; then
-+ continue
-+ else
-+ break
-+ fi
-+ ;;
-+ none) break ;;
-+ esac
-+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
-+ # mode. It turns out that the SunPro C++ compiler does not properly
-+ # handle `-M -o', and we need to detect this.
-+ if depmode=$depmode \
-+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
-+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
-+ >/dev/null 2>conftest.err &&
-+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
-+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-+ # icc doesn't choke on unknown options, it will just issue warnings
-+ # (even with -Werror). So we grep stderr for any message
-+ # that says an option was ignored.
-+ if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
-+ am_cv_CC_dependencies_compiler_type=$depmode
-+ break
-+ fi
-+ fi
-+ done
-+
-+ cd ..
-+ rm -rf conftest.dir
-+else
-+ am_cv_CC_dependencies_compiler_type=none
-+fi
-+
-+fi
-+echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
-+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
-+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-+
-+
-+
-+if
-+ test "x$enable_dependency_tracking" != xno \
-+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-+ am__fastdepCC_TRUE=
-+ am__fastdepCC_FALSE='#'
-+else
-+ am__fastdepCC_TRUE='#'
-+ am__fastdepCC_FALSE=
-+fi
-+
-+
-+ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+if test -n "$ac_tool_prefix"; then
-+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
-+ 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_CXX+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CXX"; then
-+ ac_cv_prog_CXX="$CXX" # 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_CXX="$ac_tool_prefix$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+CXX=$ac_cv_prog_CXX
-+if test -n "$CXX"; then
-+ echo "$as_me:$LINENO: result: $CXX" >&5
-+echo "${ECHO_T}$CXX" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$CXX" && break
-+ done
-+fi
-+if test -z "$CXX"; then
-+ ac_ct_CXX=$CXX
-+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
-+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_CXX+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_CXX"; then
-+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # 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_CXX="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-+if test -n "$ac_ct_CXX"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-+echo "${ECHO_T}$ac_ct_CXX" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$ac_ct_CXX" && break
-+done
-+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
-+
-+ CXX=$ac_ct_CXX
-+fi
-+
-+
-+# 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); }
-+
-+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_cxx_compiler_gnu+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+#ifndef __GNUC__
-+ choke me
-+#endif
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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); } &&
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_compiler_gnu=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
-+GXX=`test $ac_compiler_gnu = yes && echo yes`
-+ac_test_CXXFLAGS=${CXXFLAGS+set}
-+ac_save_CXXFLAGS=$CXXFLAGS
-+CXXFLAGS="-g"
-+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
-+if test "${ac_cv_prog_cxx_g+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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>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); } &&
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_cxx_g=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_prog_cxx_g=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
-+if test "$ac_test_CXXFLAGS" = set; then
-+ CXXFLAGS=$ac_save_CXXFLAGS
-+elif test $ac_cv_prog_cxx_g = yes; then
-+ if test "$GXX" = yes; then
-+ CXXFLAGS="-g -O2"
-+ else
-+ CXXFLAGS="-g"
-+ fi
-+else
-+ if test "$GXX" = yes; then
-+ CXXFLAGS="-O2"
-+ else
-+ CXXFLAGS=
-+ fi
-+fi
-+for ac_declaration in \
-+ '' \
-+ '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
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_declaration
-+@%:@include <stdlib.h>
-+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>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); } &&
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+continue
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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>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); } &&
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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.err 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
-+
-+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
-+
-+depcc="$CXX" am_compiler_list=
-+
-+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
-+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-+ # We make a subdir and do the tests there. Otherwise we can end up
-+ # making bogus files that we don't know about and never remove. For
-+ # instance it was reported that on HP-UX the gcc test will end up
-+ # making a dummy file named `D' -- because `-MD' means `put the output
-+ # in D'.
-+ mkdir conftest.dir
-+ # Copy depcomp to subdir because otherwise we won't find it if we're
-+ # using a relative directory.
-+ cp "$am_depcomp" conftest.dir
-+ cd conftest.dir
-+ # We will build objects and dependencies in a subdirectory because
-+ # it helps to detect inapplicable dependency modes. For instance
-+ # both Tru64's cc and ICC support -MD to output dependencies as a
-+ # side effect of compilation, but ICC will put the dependencies in
-+ # the current directory while Tru64 will put them in the object
-+ # directory.
-+ mkdir sub
-+
-+ am_cv_CXX_dependencies_compiler_type=none
-+ if test "$am_compiler_list" = ""; then
-+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-+ fi
-+ for depmode in $am_compiler_list; do
-+ # Setup a source with many dependencies, because some compilers
-+ # like to wrap large dependency lists on column 80 (with \), and
-+ # we should not choose a depcomp mode which is confused by this.
-+ #
-+ # We need to recreate these files for each test, as the compiler may
-+ # overwrite some of them when testing with obscure command lines.
-+ # This happens at least with the AIX C compiler.
-+ : > sub/conftest.c
-+ for i in 1 2 3 4 5 6; do
-+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
-+ : > sub/conftst$i.h
-+ done
-+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-+
-+ case $depmode in
-+ nosideeffect)
-+ # after this tag, mechanisms are not by side-effect, so they'll
-+ # only be used when explicitly requested
-+ if test "x$enable_dependency_tracking" = xyes; then
-+ continue
-+ else
-+ break
-+ fi
-+ ;;
-+ none) break ;;
-+ esac
-+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
-+ # mode. It turns out that the SunPro C++ compiler does not properly
-+ # handle `-M -o', and we need to detect this.
-+ if depmode=$depmode \
-+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
-+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
-+ >/dev/null 2>conftest.err &&
-+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
-+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-+ # icc doesn't choke on unknown options, it will just issue warnings
-+ # (even with -Werror). So we grep stderr for any message
-+ # that says an option was ignored.
-+ if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
-+ am_cv_CXX_dependencies_compiler_type=$depmode
-+ break
-+ fi
-+ fi
-+ done
-+
-+ cd ..
-+ rm -rf conftest.dir
-+else
-+ am_cv_CXX_dependencies_compiler_type=none
-+fi
-+
-+fi
-+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
-+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
-+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
-+
-+
-+
-+if
-+ test "x$enable_dependency_tracking" != xno \
-+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
-+ am__fastdepCXX_TRUE=
-+ am__fastdepCXX_FALSE='#'
-+else
-+ am__fastdepCXX_TRUE='#'
-+ am__fastdepCXX_FALSE=
-+fi
-+
-+
-+
-+
-+ echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5
-+echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6
-+if test "${ac_cv_lib_cposix_strerror+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lcposix $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 strerror ();
-+int
-+main ()
-+{
-+strerror ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_cposix_strerror=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_cposix_strerror=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5
-+echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6
-+if test $ac_cv_lib_cposix_strerror = yes; then
-+ LIBS="$LIBS -lcposix"
-+fi
-+
-+
-+
-+
-+
-+
-+echo "$as_me:$LINENO: checking for ${CC-cc} option to accept ANSI C" >&5
-+echo $ECHO_N "checking for ${CC-cc} option to accept ANSI C... $ECHO_C" >&6
-+if test "${am_cv_prog_cc_stdc+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ am_cv_prog_cc_stdc=no
-+ac_save_CC="$CC"
-+# 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"
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ am_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.err conftest.$ac_objext conftest.$ac_ext
-+done
-+CC="$ac_save_CC"
-+
-+fi
-+
-+if test -z "$am_cv_prog_cc_stdc"; then
-+ echo "$as_me:$LINENO: result: none needed" >&5
-+echo "${ECHO_T}none needed" >&6
-+else
-+ echo "$as_me:$LINENO: result: $am_cv_prog_cc_stdc" >&5
-+echo "${ECHO_T}$am_cv_prog_cc_stdc" >&6
-+fi
-+case "x$am_cv_prog_cc_stdc" in
-+ x|xno) ;;
-+ *) CC="$CC $am_cv_prog_cc_stdc" ;;
-+esac
-+
-+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
-+# 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
-+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.
-+ # 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
-+/* 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
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_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
-+/* 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
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_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
-+/* 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
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_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
-+/* 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
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_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
-+ :
-+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; }; }
-+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
-+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
-+/* 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>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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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.err 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
-+/* 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
-+/* 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*
-+
-+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
-+ :
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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
-+fi
-+rm -f 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
-+
-+cat >>confdefs.h <<\_ACEOF
-+@%:@define STDC_HEADERS 1
-+_ACEOF
-+
-+fi
-+
-+
-+
-+
-+# Check whether --enable-shared or --disable-shared was given.
-+if test "${enable_shared+set}" = set; then
-+ enableval="$enable_shared"
-+ p=${PACKAGE-default}
-+ case $enableval in
-+ yes) enable_shared=yes ;;
-+ no) enable_shared=no ;;
-+ *)
-+ enable_shared=no
-+ # Look at the argument we got. We use all the common list separators.
-+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-+ for pkg in $enableval; do
-+ IFS="$lt_save_ifs"
-+ if test "X$pkg" = "X$p"; then
-+ enable_shared=yes
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+ ;;
-+ esac
-+else
-+ enable_shared=yes
-+fi;
-+
-+# Check whether --enable-static or --disable-static was given.
-+if test "${enable_static+set}" = set; then
-+ enableval="$enable_static"
-+ p=${PACKAGE-default}
-+ case $enableval in
-+ yes) enable_static=yes ;;
-+ no) enable_static=no ;;
-+ *)
-+ enable_static=no
-+ # Look at the argument we got. We use all the common list separators.
-+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-+ for pkg in $enableval; do
-+ IFS="$lt_save_ifs"
-+ if test "X$pkg" = "X$p"; then
-+ enable_static=yes
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+ ;;
-+ esac
-+else
-+ enable_static=yes
-+fi;
-+
-+# Check whether --enable-fast-install or --disable-fast-install was given.
-+if test "${enable_fast_install+set}" = set; then
-+ enableval="$enable_fast_install"
-+ p=${PACKAGE-default}
-+ case $enableval in
-+ yes) enable_fast_install=yes ;;
-+ no) enable_fast_install=no ;;
-+ *)
-+ enable_fast_install=no
-+ # Look at the argument we got. We use all the common list separators.
-+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-+ for pkg in $enableval; do
-+ IFS="$lt_save_ifs"
-+ if test "X$pkg" = "X$p"; then
-+ enable_fast_install=yes
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+ ;;
-+ esac
-+else
-+ enable_fast_install=yes
-+fi;
-+
-+# 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; }; }
-+
-+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 "$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; }; }
-+
-+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/'`
-+
-+
-+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
-+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
-+if test "${lt_cv_path_SED+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # Loop through the user's path and test for sed and gsed.
-+# Then use that list of sed's as ones to test for truncation.
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for lt_ac_prog in sed gsed; do
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-+ fi
-+ done
-+ done
-+done
-+lt_ac_max=0
-+lt_ac_count=0
-+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-+# along with /bin/sed that truncates output.
-+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-+ test ! -f $lt_ac_sed && break
-+ cat /dev/null > conftest.in
-+ lt_ac_count=0
-+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-+ # Check for GNU sed and select it if it is found.
-+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-+ lt_cv_path_SED=$lt_ac_sed
-+ break
-+ fi
-+ while true; do
-+ cat conftest.in conftest.in >conftest.tmp
-+ mv conftest.tmp conftest.in
-+ cp conftest.in conftest.nl
-+ echo >>conftest.nl
-+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-+ cmp -s conftest.out conftest.nl || break
-+ # 10000 chars as input seems more than enough
-+ test $lt_ac_count -gt 10 && break
-+ lt_ac_count=`expr $lt_ac_count + 1`
-+ if test $lt_ac_count -gt $lt_ac_max; then
-+ lt_ac_max=$lt_ac_count
-+ lt_cv_path_SED=$lt_ac_sed
-+ fi
-+ done
-+done
-+SED=$lt_cv_path_SED
-+
-+fi
-+
-+echo "$as_me:$LINENO: result: $SED" >&5
-+echo "${ECHO_T}$SED" >&6
-+
-+
-+# Check whether --with-gnu-ld or --without-gnu-ld was given.
-+if test "${with_gnu_ld+set}" = set; then
-+ withval="$with_gnu_ld"
-+ test "$withval" = no || with_gnu_ld=yes
-+else
-+ with_gnu_ld=no
-+fi;
-+ac_prog=ld
-+if test "$GCC" = yes; then
-+ # Check if gcc -print-prog-name=ld gives a path.
-+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
-+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
-+ case $host in
-+ *-*-mingw*)
-+ # gcc leaves a trailing carriage return which upsets mingw
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-+ *)
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-+ esac
-+ case $ac_prog in
-+ # Accept absolute paths.
-+ [\\/]* | ?:[\\/]*)
-+ re_direlt='/[^/][^/]*/\.\./'
-+ # Canonicalize the pathname of ld
-+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
-+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
-+ done
-+ test -z "$LD" && LD="$ac_prog"
-+ ;;
-+ "")
-+ # If it fails, then pretend we aren't using GCC.
-+ ac_prog=ld
-+ ;;
-+ *)
-+ # If it is relative, then search for the first ld in PATH.
-+ with_gnu_ld=unknown
-+ ;;
-+ esac
-+elif test "$with_gnu_ld" = yes; then
-+ echo "$as_me:$LINENO: checking for GNU ld" >&5
-+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
-+else
-+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
-+fi
-+if test "${lt_cv_path_LD+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -z "$LD"; then
-+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ for ac_dir in $PATH; do
-+ IFS="$lt_save_ifs"
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-+ lt_cv_path_LD="$ac_dir/$ac_prog"
-+ # Check to see if the program is GNU ld. I'd rather use --version,
-+ # but apparently some GNU ld's only accept -v.
-+ # Break only if it was the GNU/non-GNU ld that we prefer.
-+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-+ *GNU* | *'with BFD'*)
-+ test "$with_gnu_ld" != no && break
-+ ;;
-+ *)
-+ test "$with_gnu_ld" != yes && break
-+ ;;
-+ esac
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+else
-+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
-+fi
-+fi
-+
-+LD="$lt_cv_path_LD"
-+if test -n "$LD"; then
-+ echo "$as_me:$LINENO: result: $LD" >&5
-+echo "${ECHO_T}$LD" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
-+ { (exit 1); exit 1; }; }
-+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
-+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
-+if test "${lt_cv_prog_gnu_ld+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
-+case `$LD -v 2>&1 </dev/null` in
-+*GNU* | *'with BFD'*)
-+ lt_cv_prog_gnu_ld=yes
-+ ;;
-+*)
-+ lt_cv_prog_gnu_ld=no
-+ ;;
-+esac
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
-+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
-+with_gnu_ld=$lt_cv_prog_gnu_ld
-+
-+
-+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
-+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
-+if test "${lt_cv_ld_reload_flag+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_cv_ld_reload_flag='-r'
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
-+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
-+reload_flag=$lt_cv_ld_reload_flag
-+case $reload_flag in
-+"" | " "*) ;;
-+*) reload_flag=" $reload_flag" ;;
-+esac
-+reload_cmds='$LD$reload_flag -o $output$reload_objs'
-+
-+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
-+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
-+if test "${lt_cv_path_NM+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$NM"; then
-+ # Let the user override the test.
-+ lt_cv_path_NM="$NM"
-+else
-+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
-+ IFS="$lt_save_ifs"
-+ test -z "$ac_dir" && ac_dir=.
-+ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
-+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-+ # Check to see if the nm accepts a BSD-compat flag.
-+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
-+ # nm: unknown option "B" ignored
-+ # Tru64's nm complains that /dev/null is an invalid object file
-+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-+ */dev/null* | *'Invalid file or object type'*)
-+ lt_cv_path_NM="$tmp_nm -B"
-+ break
-+ ;;
-+ *)
-+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-+ */dev/null*)
-+ lt_cv_path_NM="$tmp_nm -p"
-+ break
-+ ;;
-+ *)
-+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-+ continue # so that we can try to find one that supports BSD flags
-+ ;;
-+ esac
-+ esac
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
-+fi
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
-+echo "${ECHO_T}$lt_cv_path_NM" >&6
-+NM="$lt_cv_path_NM"
-+
-+echo "$as_me:$LINENO: checking whether ln -s works" >&5
-+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
-+LN_S=$as_ln_s
-+if test "$LN_S" = "ln -s"; then
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+else
-+ echo "$as_me:$LINENO: result: no, using $LN_S" >&5
-+echo "${ECHO_T}no, using $LN_S" >&6
-+fi
-+
-+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
-+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
-+if test "${lt_cv_deplibs_check_method+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_cv_file_magic_cmd='$MAGIC_CMD'
-+lt_cv_file_magic_test_file=
-+lt_cv_deplibs_check_method='unknown'
-+# Need to set the preceding variable on all platforms that support
-+# interlibrary dependencies.
-+# 'none' -- dependencies not supported.
-+# `unknown' -- same as none, but documents that we really don't know.
-+# 'pass_all' -- all dependencies passed with no checks.
-+# 'test_compile' -- check by making test program.
-+# 'file_magic [[regex]]' -- check by looking for files in library path
-+# which responds to the $file_magic_cmd with a given extended regex.
-+# If you have `file' or equivalent on your system and you're not sure
-+# whether `pass_all' will *always* work, you probably want this one.
-+
-+case $host_os in
-+aix4* | aix5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+beos*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+bsdi4*)
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-+ lt_cv_file_magic_cmd='/usr/bin/file -L'
-+ lt_cv_file_magic_test_file=/shlib/libc.so
-+ ;;
-+
-+cygwin*)
-+ # func_win32_libid is a shell function defined in ltmain.sh
-+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-+ lt_cv_file_magic_cmd='func_win32_libid'
-+ ;;
-+
-+mingw* | pw32*)
-+ # Base MSYS/MinGW do not provide the 'file' command needed by
-+ # func_win32_libid shell function, so use a weaker test based on 'objdump'.
-+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ lt_cv_file_magic_cmd='$OBJDUMP -f'
-+ ;;
-+
-+darwin* | rhapsody*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+freebsd* | kfreebsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-+ case $host_cpu in
-+ i*86 )
-+ # Not sure whether the presence of OpenBSD here was a mistake.
-+ # Let's accept both of them until this is cleared up.
-+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ ;;
-+ esac
-+ else
-+ lt_cv_deplibs_check_method=pass_all
-+ fi
-+ ;;
-+
-+gnu*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+hpux10.20* | hpux11*)
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ case "$host_cpu" in
-+ ia64*)
-+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-+ ;;
-+ hppa*64*)
-+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
-+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-+ ;;
-+ *)
-+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
-+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
-+ ;;
-+ esac
-+ ;;
-+
-+irix5* | irix6* | nonstopux*)
-+ case $LD in
-+ *-32|*"-32 ") libmagic=32-bit;;
-+ *-n32|*"-n32 ") libmagic=N32;;
-+ *-64|*"-64 ") libmagic=64-bit;;
-+ *) libmagic=never-match;;
-+ esac
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+# This must be Linux ELF.
-+linux*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+netbsd* | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-+ else
-+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-+ fi
-+ ;;
-+
-+newos6*)
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
-+ ;;
-+
-+nto-qnx*)
-+ lt_cv_deplibs_check_method=unknown
-+ ;;
-+
-+openbsd*)
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
-+ else
-+ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
-+ fi
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+sco3.2v5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+solaris*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ case $host_vendor in
-+ motorola)
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-+ ;;
-+ ncr)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+ sequent)
-+ lt_cv_file_magic_cmd='/bin/file'
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-+ ;;
-+ sni)
-+ lt_cv_file_magic_cmd='/bin/file'
-+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-+ lt_cv_file_magic_test_file=/lib/libc.so
-+ ;;
-+ siemens)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+ esac
-+ ;;
-+
-+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+esac
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
-+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
-+file_magic_cmd=$lt_cv_file_magic_cmd
-+deplibs_check_method=$lt_cv_deplibs_check_method
-+test -z "$deplibs_check_method" && deplibs_check_method=unknown
-+
-+
-+
-+
-+# If no C compiler was specified, use CC.
-+LTCC=${LTCC-"$CC"}
-+
-+# Allow CC to be a program name with arguments.
-+compiler=$CC
-+
-+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
-+if test "${enable_libtool_lock+set}" = set; then
-+ enableval="$enable_libtool_lock"
-+
-+fi;
-+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-+
-+# Some flags need to be propagated to the compiler or linker for good
-+# libtool support.
-+case $host in
-+ia64-*-hpux*)
-+ # Find out which ABI we are using.
-+ echo 'int i;' > conftest.$ac_ext
-+ 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
-+ case `/usr/bin/file conftest.$ac_objext` in
-+ *ELF-32*)
-+ HPUX_IA64_MODE="32"
-+ ;;
-+ *ELF-64*)
-+ HPUX_IA64_MODE="64"
-+ ;;
-+ esac
-+ fi
-+ rm -rf conftest*
-+ ;;
-+*-*-irix6*)
-+ # Find out which ABI we are using.
-+ echo '#line __oline__ "configure"' > conftest.$ac_ext
-+ 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
-+ if test "$lt_cv_prog_gnu_ld" = yes; then
-+ case `/usr/bin/file conftest.$ac_objext` in
-+ *32-bit*)
-+ LD="${LD-ld} -melf32bsmip"
-+ ;;
-+ *N32*)
-+ LD="${LD-ld} -melf32bmipn32"
-+ ;;
-+ *64-bit*)
-+ LD="${LD-ld} -melf64bmip"
-+ ;;
-+ esac
-+ else
-+ case `/usr/bin/file conftest.$ac_objext` in
-+ *32-bit*)
-+ LD="${LD-ld} -32"
-+ ;;
-+ *N32*)
-+ LD="${LD-ld} -n32"
-+ ;;
-+ *64-bit*)
-+ LD="${LD-ld} -64"
-+ ;;
-+ esac
-+ fi
-+ fi
-+ rm -rf conftest*
-+ ;;
-+
-+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
-+ # Find out which ABI we are using.
-+ echo 'int i;' > conftest.$ac_ext
-+ 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
-+ case "`/usr/bin/file conftest.o`" in
-+ *32-bit*)
-+ case $host in
-+ x86_64-*linux*)
-+ LD="${LD-ld} -m elf_i386"
-+ ;;
-+ ppc64-*linux*|powerpc64-*linux*)
-+ LD="${LD-ld} -m elf32ppclinux"
-+ ;;
-+ s390x-*linux*)
-+ LD="${LD-ld} -m elf_s390"
-+ ;;
-+ sparc64-*linux*)
-+ LD="${LD-ld} -m elf32_sparc"
-+ ;;
-+ esac
-+ ;;
-+ *64-bit*)
-+ case $host in
-+ x86_64-*linux*)
-+ LD="${LD-ld} -m elf_x86_64"
-+ ;;
-+ ppc*-*linux*|powerpc*-*linux*)
-+ LD="${LD-ld} -m elf64ppc"
-+ ;;
-+ s390*-*linux*)
-+ LD="${LD-ld} -m elf64_s390"
-+ ;;
-+ sparc*-*linux*)
-+ LD="${LD-ld} -m elf64_sparc"
-+ ;;
-+ esac
-+ ;;
-+ esac
-+ fi
-+ rm -rf conftest*
-+ ;;
-+
-+*-*-sco3.2v5*)
-+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-+ SAVE_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -belf"
-+ echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
-+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
-+if test "${lt_cv_cc_needs_belf+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ 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
-+
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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 conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ lt_cv_cc_needs_belf=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+lt_cv_cc_needs_belf=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext 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
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
-+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
-+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-+ CFLAGS="$SAVE_CFLAGS"
-+ fi
-+ ;;
-+*-*-cygwin* | *-*-mingw* | *-*-pw32*)
-+ if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}dlltool; 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_DLLTOOL+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$DLLTOOL"; then
-+ ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_DLLTOOL="${ac_tool_prefix}dlltool"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+DLLTOOL=$ac_cv_prog_DLLTOOL
-+if test -n "$DLLTOOL"; then
-+ echo "$as_me:$LINENO: result: $DLLTOOL" >&5
-+echo "${ECHO_T}$DLLTOOL" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+fi
-+if test -z "$ac_cv_prog_DLLTOOL"; then
-+ ac_ct_DLLTOOL=$DLLTOOL
-+ # Extract the first word of "dlltool", so it can be a program name with args.
-+set dummy dlltool; 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_DLLTOOL+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_DLLTOOL"; then
-+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_DLLTOOL="dlltool"
-+ 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_DLLTOOL" && ac_cv_prog_ac_ct_DLLTOOL="false"
-+fi
-+fi
-+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-+if test -n "$ac_ct_DLLTOOL"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5
-+echo "${ECHO_T}$ac_ct_DLLTOOL" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ DLLTOOL=$ac_ct_DLLTOOL
-+else
-+ DLLTOOL="$ac_cv_prog_DLLTOOL"
-+fi
-+
-+ if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}as; 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_AS+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$AS"; then
-+ ac_cv_prog_AS="$AS" # 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_AS="${ac_tool_prefix}as"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+AS=$ac_cv_prog_AS
-+if test -n "$AS"; then
-+ echo "$as_me:$LINENO: result: $AS" >&5
-+echo "${ECHO_T}$AS" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+fi
-+if test -z "$ac_cv_prog_AS"; then
-+ ac_ct_AS=$AS
-+ # Extract the first word of "as", so it can be a program name with args.
-+set dummy as; 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_AS+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_AS"; then
-+ ac_cv_prog_ac_ct_AS="$ac_ct_AS" # 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_AS="as"
-+ 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_AS" && ac_cv_prog_ac_ct_AS="false"
-+fi
-+fi
-+ac_ct_AS=$ac_cv_prog_ac_ct_AS
-+if test -n "$ac_ct_AS"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
-+echo "${ECHO_T}$ac_ct_AS" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ AS=$ac_ct_AS
-+else
-+ AS="$ac_cv_prog_AS"
-+fi
-+
-+ if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}objdump; 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_OBJDUMP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$OBJDUMP"; then
-+ ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_OBJDUMP="${ac_tool_prefix}objdump"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+OBJDUMP=$ac_cv_prog_OBJDUMP
-+if test -n "$OBJDUMP"; then
-+ echo "$as_me:$LINENO: result: $OBJDUMP" >&5
-+echo "${ECHO_T}$OBJDUMP" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+fi
-+if test -z "$ac_cv_prog_OBJDUMP"; then
-+ ac_ct_OBJDUMP=$OBJDUMP
-+ # Extract the first word of "objdump", so it can be a program name with args.
-+set dummy objdump; 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_OBJDUMP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_OBJDUMP"; then
-+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_OBJDUMP="objdump"
-+ 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_OBJDUMP" && ac_cv_prog_ac_ct_OBJDUMP="false"
-+fi
-+fi
-+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-+if test -n "$ac_ct_OBJDUMP"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
-+echo "${ECHO_T}$ac_ct_OBJDUMP" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ OBJDUMP=$ac_ct_OBJDUMP
-+else
-+ OBJDUMP="$ac_cv_prog_OBJDUMP"
-+fi
-+
-+ ;;
-+
-+esac
-+
-+need_locks="$enable_libtool_lock"
-+
-+
-+# 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
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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>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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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.err 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
-+
-+
-+
-+for ac_header in dlfcn.h
-+do
-+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+ 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
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+else
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* 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>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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f conftest.err 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 $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+@%:@include <$ac_header>
-+_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
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+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:$ac_c_preproc_warn_flag in
-+ yes:no: )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
-+ ;;
-+ no:yes:* )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-+ (
-+ cat <<\_ASBOX
-+@%:@@%:@ ------------------------------------------ @%:@@%:@
-+@%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@
-+@%:@@%:@ ------------------------------------------ @%:@@%:@
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+esac
-+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
-+else
-+ eval "$as_ac_Header=\$ac_header_preproc"
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+
-+fi
-+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
-+
-+ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_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
-+if test -z "$CXXCPP"; then
-+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # Double quotes because CXXCPP needs to be expanded
-+ for CXXCPP in "$CXX -E" "/lib/cpp"
-+ do
-+ ac_preproc_ok=false
-+for ac_cxx_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
-+/* 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_cxx_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_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
-+/* 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_cxx_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_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_CXXCPP=$CXXCPP
-+
-+fi
-+ CXXCPP=$ac_cv_prog_CXXCPP
-+else
-+ ac_cv_prog_CXXCPP=$CXXCPP
-+fi
-+echo "$as_me:$LINENO: result: $CXXCPP" >&5
-+echo "${ECHO_T}$CXXCPP" >&6
-+ac_preproc_ok=false
-+for ac_cxx_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
-+/* 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_cxx_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_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
-+/* 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_cxx_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_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
-+ :
-+else
-+ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+
-+ac_ext=f
-+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
-+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-+if test -n "$ac_tool_prefix"; then
-+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
-+ 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_F77+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$F77"; then
-+ ac_cv_prog_F77="$F77" # 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_F77="$ac_tool_prefix$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+F77=$ac_cv_prog_F77
-+if test -n "$F77"; then
-+ echo "$as_me:$LINENO: result: $F77" >&5
-+echo "${ECHO_T}$F77" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$F77" && break
-+ done
-+fi
-+if test -z "$F77"; then
-+ ac_ct_F77=$F77
-+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
-+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_F77+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_F77"; then
-+ ac_cv_prog_ac_ct_F77="$ac_ct_F77" # 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_F77="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+ac_ct_F77=$ac_cv_prog_ac_ct_F77
-+if test -n "$ac_ct_F77"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
-+echo "${ECHO_T}$ac_ct_F77" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$ac_ct_F77" && break
-+done
-+
-+ F77=$ac_ct_F77
-+fi
-+
-+
-+# Provide some information about the compiler.
-+echo "$as_me:__oline__:" \
-+ "checking for Fortran 77 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); }
-+rm -f a.out
-+
-+# If we don't use `.F' as extension, the preprocessor is not run on the
-+# input file. (Note that this only needs to work for GNU compilers.)
-+ac_save_ext=$ac_ext
-+ac_ext=F
-+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
-+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
-+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+ program main
-+#ifndef __GNUC__
-+ choke me
-+#endif
-+
-+ end
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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); } &&
-+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_compiler_gnu=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
-+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
-+ac_ext=$ac_save_ext
-+ac_test_FFLAGS=${FFLAGS+set}
-+ac_save_FFLAGS=$FFLAGS
-+FFLAGS=
-+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
-+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
-+if test "${ac_cv_prog_f77_g+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ FFLAGS=-g
-+cat >conftest.$ac_ext <<_ACEOF
-+ program main
-+
-+ end
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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); } &&
-+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_f77_g=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_prog_f77_g=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
-+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
-+if test "$ac_test_FFLAGS" = set; then
-+ FFLAGS=$ac_save_FFLAGS
-+elif test $ac_cv_prog_f77_g = yes; then
-+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-+ FFLAGS="-g -O2"
-+ else
-+ FFLAGS="-g"
-+ fi
-+else
-+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-+ FFLAGS="-O2"
-+ else
-+ FFLAGS=
-+ fi
-+fi
-+
-+G77=`test $ac_compiler_gnu = yes && echo yes`
-+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
-+
-+
-+
-+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
-+
-+# find the maximum length of command line arguments
-+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
-+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
-+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ i=0
-+ teststring="ABCD"
-+
-+ case $build_os in
-+ msdosdjgpp*)
-+ # On DJGPP, this test can blow up pretty badly due to problems in libc
-+ # (any single argument exceeding 2000 bytes causes a buffer overrun
-+ # during glob expansion). Even if it were fixed, the result of this
-+ # check would be larger than it should be.
-+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
-+ ;;
-+
-+ gnu*)
-+ # Under GNU Hurd, this test is not required because there is
-+ # no limit to the length of command line arguments.
-+ # Libtool will interpret -1 as no limit whatsoever
-+ lt_cv_sys_max_cmd_len=-1;
-+ ;;
-+
-+ cygwin* | mingw*)
-+ # On Win9x/ME, this test blows up -- it succeeds, but takes
-+ # about 5 minutes as the teststring grows exponentially.
-+ # Worse, since 9x/ME are not pre-emptively multitasking,
-+ # you end up with a "frozen" computer, even though with patience
-+ # the test eventually succeeds (with a max line length of 256k).
-+ # Instead, let's just punt: use the minimum linelength reported by
-+ # all of the supported platforms: 8192 (on NT/2K/XP).
-+ lt_cv_sys_max_cmd_len=8192;
-+ ;;
-+
-+ amigaos*)
-+ # On AmigaOS with pdksh, this test takes hours, literally.
-+ # So we just punt and use a minimum line length of 8192.
-+ lt_cv_sys_max_cmd_len=8192;
-+ ;;
-+
-+ *)
-+ # If test is not a shell built-in, we'll probably end up computing a
-+ # maximum length that is only half of the actual maximum length, but
-+ # we can't tell.
-+ while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
-+ = "XX$teststring") >/dev/null 2>&1 &&
-+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
-+ lt_cv_sys_max_cmd_len=$new_result &&
-+ test $i != 17 # 1/2 MB should be enough
-+ do
-+ i=`expr $i + 1`
-+ teststring=$teststring$teststring
-+ done
-+ teststring=
-+ # Add a significant safety factor because C++ compilers can tack on massive
-+ # amounts of additional arguments before passing them to the linker.
-+ # It appears as though 1/2 is a usable value.
-+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-+ ;;
-+ esac
-+
-+fi
-+
-+if test -n $lt_cv_sys_max_cmd_len ; then
-+ echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
-+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
-+else
-+ echo "$as_me:$LINENO: result: none" >&5
-+echo "${ECHO_T}none" >&6
-+fi
-+
-+
-+
-+
-+# Check for command to grab the raw symbol name followed by C symbol from nm.
-+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
-+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
-+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+# These are sane defaults that work on at least a few old systems.
-+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-+
-+# Character class describing NM global symbol codes.
-+symcode='[BCDEGRST]'
-+
-+# Regexp to match symbols that can be accessed directly from C.
-+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-+
-+# Transform the above into a raw symbol and a C symbol.
-+symxfrm='\1 \2\3 \3'
-+
-+# Transform an extracted symbol line into a proper C declaration
-+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
-+
-+# Transform an extracted symbol line into symbol name and symbol address
-+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+
-+# Define system-specific variables.
-+case $host_os in
-+aix*)
-+ symcode='[BCDT]'
-+ ;;
-+cygwin* | mingw* | pw32*)
-+ symcode='[ABCDGISTW]'
-+ ;;
-+hpux*) # Its linker distinguishes data from code symbols
-+ if test "$host_cpu" = ia64; then
-+ symcode='[ABCDEGRST]'
-+ fi
-+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+ ;;
-+irix* | nonstopux*)
-+ symcode='[BCDEGRST]'
-+ ;;
-+osf*)
-+ symcode='[BCDEGQRST]'
-+ ;;
-+solaris* | sysv5*)
-+ symcode='[BDRT]'
-+ ;;
-+sysv4)
-+ symcode='[DFNSTU]'
-+ ;;
-+esac
-+
-+# Handle CRLF in mingw tool chain
-+opt_cr=
-+case $build_os in
-+mingw*)
-+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-+ ;;
-+esac
-+
-+# If we're using GNU nm, then use its standard symbol codes.
-+case `$NM -V 2>&1` in
-+*GNU* | *'with BFD'*)
-+ symcode='[ABCDGIRSTW]' ;;
-+esac
-+
-+# Try without a prefix undercore, then with it.
-+for ac_symprfx in "" "_"; do
-+
-+ # Write the raw and C identifiers.
-+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
-+
-+ # Check to see that the pipe works correctly.
-+ pipe_works=no
-+
-+ rm -f conftest*
-+ cat > conftest.$ac_ext <<EOF
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+char nm_test_var;
-+void nm_test_func(){}
-+#ifdef __cplusplus
-+}
-+#endif
-+int main(){nm_test_var='a';nm_test_func();return(0);}
-+EOF
-+
-+ 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
-+ # Now try to grab the symbols.
-+ nlist=conftest.nm
-+ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
-+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && test -s "$nlist"; then
-+ # Try sorting and uniquifying the output.
-+ if sort "$nlist" | uniq > "$nlist"T; then
-+ mv -f "$nlist"T "$nlist"
-+ else
-+ rm -f "$nlist"T
-+ fi
-+
-+ # Make sure that we snagged all the symbols we need.
-+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
-+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
-+ cat <<EOF > conftest.$ac_ext
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+EOF
-+ # Now generate the symbol file.
-+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
-+
-+ cat <<EOF >> conftest.$ac_ext
-+#if defined (__STDC__) && __STDC__
-+# define lt_ptr_t void *
-+#else
-+# define lt_ptr_t char *
-+# define const
-+#endif
-+
-+/* The mapping between symbol names and symbols. */
-+const struct {
-+ const char *name;
-+ lt_ptr_t address;
-+}
-+lt_preloaded_symbols[] =
-+{
-+EOF
-+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
-+ cat <<\EOF >> conftest.$ac_ext
-+ {0, (lt_ptr_t) 0}
-+};
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+EOF
-+ # Now try linking the two files.
-+ mv conftest.$ac_objext conftstm.$ac_objext
-+ lt_save_LIBS="$LIBS"
-+ lt_save_CFLAGS="$CFLAGS"
-+ LIBS="conftstm.$ac_objext"
-+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-+ 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); } && test -s conftest${ac_exeext}; then
-+ pipe_works=yes
-+ fi
-+ LIBS="$lt_save_LIBS"
-+ CFLAGS="$lt_save_CFLAGS"
-+ else
-+ echo "cannot find nm_test_func in $nlist" >&5
-+ fi
-+ else
-+ echo "cannot find nm_test_var in $nlist" >&5
-+ fi
-+ else
-+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-+ fi
-+ else
-+ echo "$progname: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ fi
-+ rm -f conftest* conftst*
-+
-+ # Do not use the global_symbol_pipe unless it works.
-+ if test "$pipe_works" = yes; then
-+ break
-+ else
-+ lt_cv_sys_global_symbol_pipe=
-+ fi
-+done
-+
-+fi
-+
-+if test -z "$lt_cv_sys_global_symbol_pipe"; then
-+ lt_cv_sys_global_symbol_to_cdecl=
-+fi
-+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-+ echo "$as_me:$LINENO: result: failed" >&5
-+echo "${ECHO_T}failed" >&6
-+else
-+ echo "$as_me:$LINENO: result: ok" >&5
-+echo "${ECHO_T}ok" >&6
-+fi
-+
-+echo "$as_me:$LINENO: checking for objdir" >&5
-+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
-+if test "${lt_cv_objdir+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ rm -f .libs 2>/dev/null
-+mkdir .libs 2>/dev/null
-+if test -d .libs; then
-+ lt_cv_objdir=.libs
-+else
-+ # MS-DOS does not allow filenames that begin with a dot.
-+ lt_cv_objdir=_libs
-+fi
-+rmdir .libs 2>/dev/null
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
-+echo "${ECHO_T}$lt_cv_objdir" >&6
-+objdir=$lt_cv_objdir
-+
-+
-+
-+
-+
-+case $host_os in
-+aix3*)
-+ # AIX sometimes has problems with the GCC collect2 program. For some
-+ # reason, if we set the COLLECT_NAMES environment variable, the problems
-+ # vanish in a puff of smoke.
-+ if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
-+ fi
-+ ;;
-+esac
-+
-+# Sed substitution that helps us do robust quoting. It backslashifies
-+# metacharacters that are still active within double-quoted strings.
-+Xsed='sed -e s/^X//'
-+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
-+
-+# Same as above, but do not quote variable references.
-+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
-+
-+# Sed substitution to delay expansion of an escaped shell variable in a
-+# double_quote_subst'ed string.
-+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-+
-+# Sed substitution to avoid accidental globbing in evaled expressions
-+no_glob_subst='s/\*/\\\*/g'
-+
-+# Constants:
-+rm="rm -f"
-+
-+# Global variables:
-+default_ofile=libtool
-+can_build_shared=yes
-+
-+# All known linkers require a `.a' archive for static linking (except M$VC,
-+# which needs '.lib').
-+libext=a
-+ltmain="$ac_aux_dir/ltmain.sh"
-+ofile="$default_ofile"
-+with_gnu_ld="$lt_cv_prog_gnu_ld"
-+
-+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.
-+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
-+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
-+
-+fi
-+fi
-+AR=$ac_cv_prog_AR
-+if test -n "$AR"; then
-+ echo "$as_me:$LINENO: result: $AR" >&5
-+echo "${ECHO_T}$AR" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&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
-+
-+ test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
-+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
-+else
-+ AR="$ac_cv_prog_AR"
-+fi
-+
-+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
-+
-+fi
-+fi
-+RANLIB=$ac_cv_prog_RANLIB
-+if test -n "$RANLIB"; then
-+ echo "$as_me:$LINENO: result: $RANLIB" >&5
-+echo "${ECHO_T}$RANLIB" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&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
-+
-+if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}strip; 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_STRIP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$STRIP"; then
-+ ac_cv_prog_STRIP="$STRIP" # 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_STRIP="${ac_tool_prefix}strip"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+STRIP=$ac_cv_prog_STRIP
-+if test -n "$STRIP"; then
-+ echo "$as_me:$LINENO: result: $STRIP" >&5
-+echo "${ECHO_T}$STRIP" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+fi
-+if test -z "$ac_cv_prog_STRIP"; then
-+ ac_ct_STRIP=$STRIP
-+ # Extract the first word of "strip", so it can be a program name with args.
-+set dummy strip; 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_STRIP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_STRIP"; then
-+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # 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_STRIP="strip"
-+ 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_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
-+fi
-+fi
-+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-+if test -n "$ac_ct_STRIP"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-+echo "${ECHO_T}$ac_ct_STRIP" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ STRIP=$ac_ct_STRIP
-+else
-+ STRIP="$ac_cv_prog_STRIP"
-+fi
-+
-+
-+old_CC="$CC"
-+old_CFLAGS="$CFLAGS"
-+
-+# Set sane defaults for various variables
-+test -z "$AR" && AR=ar
-+test -z "$AR_FLAGS" && AR_FLAGS=cru
-+test -z "$AS" && AS=as
-+test -z "$CC" && CC=cc
-+test -z "$LTCC" && LTCC=$CC
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+test -z "$LD" && LD=ld
-+test -z "$LN_S" && LN_S="ln -s"
-+test -z "$MAGIC_CMD" && MAGIC_CMD=file
-+test -z "$NM" && NM=nm
-+test -z "$SED" && SED=sed
-+test -z "$OBJDUMP" && OBJDUMP=objdump
-+test -z "$RANLIB" && RANLIB=:
-+test -z "$STRIP" && STRIP=:
-+test -z "$ac_objext" && ac_objext=o
-+
-+# Determine commands to create old-style static archives.
-+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
-+old_postinstall_cmds='chmod 644 $oldlib'
-+old_postuninstall_cmds=
-+
-+if test -n "$RANLIB"; then
-+ case $host_os in
-+ openbsd*)
-+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ *)
-+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ esac
-+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-+fi
-+
-+# Only perform the check for file, if the check method requires it
-+case $deplibs_check_method in
-+file_magic*)
-+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-+ echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
-+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
-+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $MAGIC_CMD in
-+[\\/*] | ?:[\\/]*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-+ ;;
-+*)
-+ lt_save_MAGIC_CMD="$MAGIC_CMD"
-+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-+ for ac_dir in $ac_dummy; do
-+ IFS="$lt_save_ifs"
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/${ac_tool_prefix}file; then
-+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-+ if test -n "$file_magic_test_file"; then
-+ case $deplibs_check_method in
-+ "file_magic "*)
-+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
-+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-+ $EGREP "$file_magic_regex" > /dev/null; then
-+ :
-+ else
-+ cat <<EOF 1>&2
-+
-+*** Warning: the command libtool uses to detect shared libraries,
-+*** $file_magic_cmd, produces output that libtool cannot recognize.
-+*** The result is that libtool may fail to recognize shared libraries
-+*** as such. This will affect the creation of libtool libraries that
-+*** depend on shared libraries, but programs linked with such libtool
-+*** libraries will work regardless of this problem. Nevertheless, you
-+*** may want to report the problem to your system manager and/or to
-+*** bug-libtool@gnu.org
-+
-+EOF
-+ fi ;;
-+ esac
-+ fi
-+ break
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+ MAGIC_CMD="$lt_save_MAGIC_CMD"
-+ ;;
-+esac
-+fi
-+
-+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+if test -n "$MAGIC_CMD"; then
-+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-+echo "${ECHO_T}$MAGIC_CMD" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+if test -z "$lt_cv_path_MAGIC_CMD"; then
-+ if test -n "$ac_tool_prefix"; then
-+ echo "$as_me:$LINENO: checking for file" >&5
-+echo $ECHO_N "checking for file... $ECHO_C" >&6
-+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $MAGIC_CMD in
-+[\\/*] | ?:[\\/]*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-+ ;;
-+*)
-+ lt_save_MAGIC_CMD="$MAGIC_CMD"
-+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-+ for ac_dir in $ac_dummy; do
-+ IFS="$lt_save_ifs"
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/file; then
-+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
-+ if test -n "$file_magic_test_file"; then
-+ case $deplibs_check_method in
-+ "file_magic "*)
-+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
-+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-+ $EGREP "$file_magic_regex" > /dev/null; then
-+ :
-+ else
-+ cat <<EOF 1>&2
-+
-+*** Warning: the command libtool uses to detect shared libraries,
-+*** $file_magic_cmd, produces output that libtool cannot recognize.
-+*** The result is that libtool may fail to recognize shared libraries
-+*** as such. This will affect the creation of libtool libraries that
-+*** depend on shared libraries, but programs linked with such libtool
-+*** libraries will work regardless of this problem. Nevertheless, you
-+*** may want to report the problem to your system manager and/or to
-+*** bug-libtool@gnu.org
-+
-+EOF
-+ fi ;;
-+ esac
-+ fi
-+ break
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+ MAGIC_CMD="$lt_save_MAGIC_CMD"
-+ ;;
-+esac
-+fi
-+
-+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+if test -n "$MAGIC_CMD"; then
-+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-+echo "${ECHO_T}$MAGIC_CMD" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ else
-+ MAGIC_CMD=:
-+ fi
-+fi
-+
-+ fi
-+ ;;
-+esac
-+
-+enable_dlopen=no
-+enable_win32_dll=yes
-+
-+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
-+if test "${enable_libtool_lock+set}" = set; then
-+ enableval="$enable_libtool_lock"
-+
-+fi;
-+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-+
-+
-+# Check whether --with-pic or --without-pic was given.
-+if test "${with_pic+set}" = set; then
-+ withval="$with_pic"
-+ pic_mode="$withval"
-+else
-+ pic_mode=default
-+fi;
-+test -z "$pic_mode" && pic_mode=default
-+
-+# Use C for the default configuration in the libtool script
-+tagname=
-+lt_save_CC="$CC"
-+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
-+
-+
-+# Source file extension for C test sources.
-+ac_ext=c
-+
-+# Object file extension for compiled C test sources.
-+objext=o
-+objext=$objext
-+
-+# Code to be used in simple compile tests
-+lt_simple_compile_test_code="int some_variable = 0;\n"
-+
-+# Code to be used in simple link tests
-+lt_simple_link_test_code='int main(){return(0);}\n'
-+
-+
-+# If no C compiler was specified, use CC.
-+LTCC=${LTCC-"$CC"}
-+
-+# Allow CC to be a program name with arguments.
-+compiler=$CC
-+
-+
-+#
-+# Check for any special shared library compilation flags.
-+#
-+lt_prog_cc_shlib=
-+if test "$GCC" = no; then
-+ case $host_os in
-+ sco3.2v5*)
-+ lt_prog_cc_shlib='-belf'
-+ ;;
-+ esac
-+fi
-+if test -n "$lt_prog_cc_shlib"; then
-+ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
-+echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
-+ if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then :
-+ else
-+ { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
-+echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
-+ lt_cv_prog_cc_can_build_shared=no
-+ fi
-+fi
-+
-+
-+#
-+# Check to make sure the static flag actually works.
-+#
-+echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
-+echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
-+if test "${lt_prog_compiler_static_works+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_prog_compiler_static_works=no
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
-+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
-+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s conftest.err; then
-+ # Append any errors to the config.log.
-+ cat conftest.err 1>&5
-+ else
-+ lt_prog_compiler_static_works=yes
-+ fi
-+ fi
-+ $rm conftest*
-+ LDFLAGS="$save_LDFLAGS"
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
-+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
-+
-+if test x"$lt_prog_compiler_static_works" = xyes; then
-+ :
-+else
-+ lt_prog_compiler_static=
-+fi
-+
-+
-+
-+
-+lt_prog_compiler_no_builtin_flag=
-+
-+if test "$GCC" = yes; then
-+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
-+
-+
-+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
-+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_cv_prog_compiler_rtti_exceptions=no
-+ ac_outfile=conftest.$ac_objext
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+ lt_compiler_flag="-fno-rtti -fno-exceptions"
-+ # Insert the option either (1) after the last *FLAGS variable, or
-+ # (2) before a word containing "conftest.", or (3) at the end.
-+ # Note that $ac_compile itself does not contain backslashes and begins
-+ # with a dollar sign (not a hyphen), so the echo should work correctly.
-+ # The option is referenced via a variable to avoid confusing sed.
-+ lt_compile=`echo "$ac_compile" | $SED \
-+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-+ -e 's:$: $lt_compiler_flag:'`
-+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
-+ (eval "$lt_compile" 2>conftest.err)
-+ ac_status=$?
-+ cat conftest.err >&5
-+ echo "$as_me:__oline__: \$? = $ac_status" >&5
-+ if (exit $ac_status) && test -s "$ac_outfile"; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test ! -s conftest.err; then
-+ lt_cv_prog_compiler_rtti_exceptions=yes
-+ fi
-+ fi
-+ $rm conftest*
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
-+
-+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-+else
-+ :
-+fi
-+
-+fi
-+
-+lt_prog_compiler_wl=
-+lt_prog_compiler_pic=
-+lt_prog_compiler_static=
-+
-+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
-+
-+ if test "$GCC" = yes; then
-+ lt_prog_compiler_wl='-Wl,'
-+ lt_prog_compiler_static='-static'
-+
-+ case $host_os in
-+ aix*)
-+ # All AIX code is PIC.
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ lt_prog_compiler_static='-Bstatic'
-+ fi
-+ ;;
-+
-+ amigaos*)
-+ # FIXME: we need at least 68020 code to build shared libraries, but
-+ # adding the `-m68020' flag to GCC prevents building anything better,
-+ # like `-m68040'.
-+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-+ ;;
-+
-+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-+ # PIC is the default for these OSes.
-+ ;;
-+
-+ mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_prog_compiler_pic='-DDLL_EXPORT'
-+ ;;
-+
-+ darwin* | rhapsody*)
-+ # PIC is the default on this platform
-+ # Common symbols not allowed in MH_DYLIB files
-+ lt_prog_compiler_pic='-fno-common'
-+ ;;
-+
-+ msdosdjgpp*)
-+ # Just because we use GCC doesn't mean we suddenly get shared libraries
-+ # on systems that don't support them.
-+ lt_prog_compiler_can_build_shared=no
-+ enable_shared=no
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ lt_prog_compiler_pic=-Kconform_pic
-+ fi
-+ ;;
-+
-+ hpux*)
-+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-+ # not for PA HP-UX.
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ # +Z the default
-+ ;;
-+ *)
-+ lt_prog_compiler_pic='-fPIC'
-+ ;;
-+ esac
-+ ;;
-+
-+ *)
-+ lt_prog_compiler_pic='-fPIC'
-+ ;;
-+ esac
-+ else
-+ # PORTME Check for flag to pass linker flags through the system compiler.
-+ case $host_os in
-+ aix*)
-+ lt_prog_compiler_wl='-Wl,'
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ lt_prog_compiler_static='-Bstatic'
-+ else
-+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-+ fi
-+ ;;
-+
-+ mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_prog_compiler_pic='-DDLL_EXPORT'
-+ ;;
-+
-+ hpux9* | hpux10* | hpux11*)
-+ lt_prog_compiler_wl='-Wl,'
-+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-+ # not for PA HP-UX.
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ # +Z the default
-+ ;;
-+ *)
-+ lt_prog_compiler_pic='+Z'
-+ ;;
-+ esac
-+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
-+ lt_prog_compiler_static='${wl}-a ${wl}archive'
-+ ;;
-+
-+ irix5* | irix6* | nonstopux*)
-+ lt_prog_compiler_wl='-Wl,'
-+ # PIC (with -KPIC) is the default.
-+ lt_prog_compiler_static='-non_shared'
-+ ;;
-+
-+ newsos6)
-+ lt_prog_compiler_pic='-KPIC'
-+ lt_prog_compiler_static='-Bstatic'
-+ ;;
-+
-+ linux*)
-+ case $CC in
-+ icc* | ecc*)
-+ lt_prog_compiler_wl='-Wl,'
-+ lt_prog_compiler_pic='-KPIC'
-+ lt_prog_compiler_static='-static'
-+ ;;
-+ ccc*)
-+ lt_prog_compiler_wl='-Wl,'
-+ # All Alpha code is PIC.
-+ lt_prog_compiler_static='-non_shared'
-+ ;;
-+ esac
-+ ;;
-+
-+ osf3* | osf4* | osf5*)
-+ lt_prog_compiler_wl='-Wl,'
-+ # All OSF/1 code is PIC.
-+ lt_prog_compiler_static='-non_shared'
-+ ;;
-+
-+ sco3.2v5*)
-+ lt_prog_compiler_pic='-Kpic'
-+ lt_prog_compiler_static='-dn'
-+ ;;
-+
-+ solaris*)
-+ lt_prog_compiler_wl='-Wl,'
-+ lt_prog_compiler_pic='-KPIC'
-+ lt_prog_compiler_static='-Bstatic'
-+ ;;
-+
-+ sunos4*)
-+ lt_prog_compiler_wl='-Qoption ld '
-+ lt_prog_compiler_pic='-PIC'
-+ lt_prog_compiler_static='-Bstatic'
-+ ;;
-+
-+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ lt_prog_compiler_wl='-Wl,'
-+ lt_prog_compiler_pic='-KPIC'
-+ lt_prog_compiler_static='-Bstatic'
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ lt_prog_compiler_pic='-Kconform_pic'
-+ lt_prog_compiler_static='-Bstatic'
-+ fi
-+ ;;
-+
-+ uts4*)
-+ lt_prog_compiler_pic='-pic'
-+ lt_prog_compiler_static='-Bstatic'
-+ ;;
-+
-+ *)
-+ lt_prog_compiler_can_build_shared=no
-+ ;;
-+ esac
-+ fi
-+
-+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
-+echo "${ECHO_T}$lt_prog_compiler_pic" >&6
-+
-+#
-+# Check to make sure the PIC flag actually works.
-+#
-+if test -n "$lt_prog_compiler_pic"; then
-+
-+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
-+if test "${lt_prog_compiler_pic_works+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_prog_compiler_pic_works=no
-+ ac_outfile=conftest.$ac_objext
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
-+ # Insert the option either (1) after the last *FLAGS variable, or
-+ # (2) before a word containing "conftest.", or (3) at the end.
-+ # Note that $ac_compile itself does not contain backslashes and begins
-+ # with a dollar sign (not a hyphen), so the echo should work correctly.
-+ # The option is referenced via a variable to avoid confusing sed.
-+ lt_compile=`echo "$ac_compile" | $SED \
-+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-+ -e 's:$: $lt_compiler_flag:'`
-+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
-+ (eval "$lt_compile" 2>conftest.err)
-+ ac_status=$?
-+ cat conftest.err >&5
-+ echo "$as_me:__oline__: \$? = $ac_status" >&5
-+ if (exit $ac_status) && test -s "$ac_outfile"; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test ! -s conftest.err; then
-+ lt_prog_compiler_pic_works=yes
-+ fi
-+ fi
-+ $rm conftest*
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
-+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
-+
-+if test x"$lt_prog_compiler_pic_works" = xyes; then
-+ case $lt_prog_compiler_pic in
-+ "" | " "*) ;;
-+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-+ esac
-+else
-+ lt_prog_compiler_pic=
-+ lt_prog_compiler_can_build_shared=no
-+fi
-+
-+fi
-+case "$host_os" in
-+ # For platforms which do not support PIC, -DPIC is meaningless:
-+ *djgpp*)
-+ lt_prog_compiler_pic=
-+ ;;
-+ *)
-+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-+ ;;
-+esac
-+
-+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
-+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_cv_prog_compiler_c_o=no
-+ $rm -r conftest 2>/dev/null
-+ mkdir conftest
-+ cd conftest
-+ mkdir out
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+
-+ lt_compiler_flag="-o out/conftest2.$ac_objext"
-+ # Insert the option either (1) after the last *FLAGS variable, or
-+ # (2) before a word containing "conftest.", or (3) at the end.
-+ # Note that $ac_compile itself does not contain backslashes and begins
-+ # with a dollar sign (not a hyphen), so the echo should work correctly.
-+ lt_compile=`echo "$ac_compile" | $SED \
-+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-+ -e 's:$: $lt_compiler_flag:'`
-+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
-+ (eval "$lt_compile" 2>out/conftest.err)
-+ ac_status=$?
-+ cat out/conftest.err >&5
-+ echo "$as_me:__oline__: \$? = $ac_status" >&5
-+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
-+ then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test ! -s out/conftest.err; then
-+ lt_cv_prog_compiler_c_o=yes
-+ fi
-+ fi
-+ chmod u+w .
-+ $rm conftest*
-+ # SGI C++ compiler will create directory out/ii_files/ for
-+ # template instantiation
-+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-+ $rm out/* && rmdir out
-+ cd ..
-+ rmdir conftest
-+ $rm conftest*
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
-+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
-+
-+
-+hard_links="nottested"
-+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
-+ # do not overwrite the value of need_locks provided by the user
-+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-+ hard_links=yes
-+ $rm conftest*
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ touch conftest.a
-+ ln conftest.a conftest.b 2>&5 || hard_links=no
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ echo "$as_me:$LINENO: result: $hard_links" >&5
-+echo "${ECHO_T}$hard_links" >&6
-+ if test "$hard_links" = no; then
-+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-+ need_locks=warn
-+ fi
-+else
-+ need_locks=no
-+fi
-+
-+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
-+
-+ runpath_var=
-+ allow_undefined_flag=
-+ enable_shared_with_static_runtimes=no
-+ archive_cmds=
-+ archive_expsym_cmds=
-+ old_archive_From_new_cmds=
-+ old_archive_from_expsyms_cmds=
-+ export_dynamic_flag_spec=
-+ whole_archive_flag_spec=
-+ thread_safe_flag_spec=
-+ hardcode_libdir_flag_spec=
-+ hardcode_libdir_flag_spec_ld=
-+ hardcode_libdir_separator=
-+ hardcode_direct=no
-+ hardcode_minus_L=no
-+ hardcode_shlibpath_var=unsupported
-+ link_all_deplibs=unknown
-+ hardcode_automatic=no
-+ module_cmds=
-+ module_expsym_cmds=
-+ always_export_symbols=no
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-+ # include_expsyms should be a list of space-separated symbols to be *always*
-+ # included in the symbol list
-+ include_expsyms=
-+ # exclude_expsyms can be an extended regexp of symbols to exclude
-+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
-+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-+ # as well as any symbol that contains `d'.
-+ exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
-+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-+ # platforms (ab)use it in PIC code, but their linkers get confused if
-+ # the symbol is explicitly referenced. Since portable code cannot
-+ # rely on this symbol name, it's probably fine to never include it in
-+ # preloaded symbol tables.
-+ extract_expsyms_cmds=
-+
-+ case $host_os in
-+ cygwin* | mingw* | pw32*)
-+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ if test "$GCC" != yes; then
-+ with_gnu_ld=no
-+ fi
-+ ;;
-+ openbsd*)
-+ with_gnu_ld=no
-+ ;;
-+ esac
-+
-+ ld_shlibs=yes
-+ if test "$with_gnu_ld" = yes; then
-+ # If archive_cmds runs LD, not CC, wlarc should be empty
-+ wlarc='${wl}'
-+
-+ # See if GNU ld supports shared libraries.
-+ case $host_os in
-+ aix3* | aix4* | aix5*)
-+ # On AIX/PPC, the GNU linker is very broken
-+ if test "$host_cpu" != ia64; then
-+ ld_shlibs=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-+*** to be unable to reliably create shared libraries on AIX.
-+*** Therefore, libtool is disabling shared libraries support. If you
-+*** really care for shared libraries, you may want to modify your PATH
-+*** so that a non-GNU linker is found, and then restart.
-+
-+EOF
-+ fi
-+ ;;
-+
-+ amigaos*)
-+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+
-+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-+ # that the semantics of dynamic libraries on AmigaOS, at least up
-+ # to version 4, is to share data among multiple programs linked
-+ # with the same dynamic library. Since this doesn't match the
-+ # behavior of shared libraries on other platforms, we can't use
-+ # them.
-+ ld_shlibs=no
-+ ;;
-+
-+ beos*)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ allow_undefined_flag=unsupported
-+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-+ # support --undefined. This deserves some investigation. FIXME
-+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-+ # as there is no search path for DLLs.
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=no
-+ enable_shared_with_static_runtimes=yes
-+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
-+
-+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-+ # If the export-symbols file already is a .def file (1st line
-+ # is EXPORTS), use it as is; otherwise, prepend...
-+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname.def;
-+ else
-+ echo EXPORTS > $output_objdir/$soname.def;
-+ cat $export_symbols >> $output_objdir/$soname.def;
-+ fi~
-+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ netbsd* | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-+ wlarc=
-+ else
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ fi
-+ ;;
-+
-+ solaris* | sysv5*)
-+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-+ ld_shlibs=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-+*** create shared libraries on Solaris systems. Therefore, libtool
-+*** is disabling shared libraries support. We urge you to upgrade GNU
-+*** binutils to release 2.9.1 or newer. Another option is to modify
-+*** your PATH or compiler configuration so that the native linker is
-+*** used, and then restart.
-+
-+EOF
-+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ sunos4*)
-+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ wlarc=
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ linux*)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_cmds="$tmp_archive_cmds"
-+ supports_anon_versioning=no
-+ case `$LD -v 2>/dev/null` in
-+ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-+ *\ 2.11.*) ;; # other 2.11 versions
-+ *) supports_anon_versioning=yes ;;
-+ esac
-+ if test $supports_anon_versioning = yes; then
-+ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
-+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-+$echo "local: *; };" >> $output_objdir/$libname.ver~
-+ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-+ else
-+ archive_expsym_cmds="$tmp_archive_cmds"
-+ fi
-+ link_all_deplibs=no
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ *)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+ esac
-+
-+ if test "$ld_shlibs" = yes; then
-+ runpath_var=LD_RUN_PATH
-+ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
-+ export_dynamic_flag_spec='${wl}--export-dynamic'
-+ # ancient GNU ld didn't support --whole-archive et. al.
-+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+ else
-+ whole_archive_flag_spec=
-+ fi
-+ fi
-+ else
-+ # PORTME fill in a description of your system's linker (not GNU ld)
-+ case $host_os in
-+ aix3*)
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-+ # Note: this linker hardcodes the directories in LIBPATH if there
-+ # are no directories specified by -L.
-+ hardcode_minus_L=yes
-+ if test "$GCC" = yes && test -z "$link_static_flag"; then
-+ # Neither direct hardcoding nor static linking is supported with a
-+ # broken collect2.
-+ hardcode_direct=unsupported
-+ fi
-+ ;;
-+
-+ aix4* | aix5*)
-+ if test "$host_cpu" = ia64; then
-+ # On IA64, the linker does run time linking by default, so we don't
-+ # have to do anything special.
-+ aix_use_runtimelinking=no
-+ exp_sym_flag='-Bexport'
-+ no_entry_flag=""
-+ else
-+ # If we're using GNU nm, then we don't want the "-C" option.
-+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
-+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-+ else
-+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-+ fi
-+ aix_use_runtimelinking=no
-+
-+ # Test if we are trying to use run time linking or normal
-+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-+ # need to do runtime linking.
-+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-+ for ld_flag in $LDFLAGS; do
-+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-+ aix_use_runtimelinking=yes
-+ break
-+ fi
-+ done
-+ esac
-+
-+ exp_sym_flag='-bexport'
-+ no_entry_flag='-bnoentry'
-+ fi
-+
-+ # When large executables or shared objects are built, AIX ld can
-+ # have problems creating the table of contents. If linking a library
-+ # or program results in "error TOC overflow" add -mminimal-toc to
-+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-+
-+ archive_cmds=''
-+ hardcode_direct=yes
-+ hardcode_libdir_separator=':'
-+ link_all_deplibs=yes
-+
-+ if test "$GCC" = yes; then
-+ case $host_os in aix4.012|aix4.012.*)
-+ # We only want to do this on AIX 4.2 and lower, the check
-+ # below for broken collect2 doesn't work under 4.3+
-+ collect2name=`${CC} -print-prog-name=collect2`
-+ if test -f "$collect2name" && \
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ then
-+ # We have reworked collect2
-+ hardcode_direct=yes
-+ else
-+ # We have old collect2
-+ hardcode_direct=unsupported
-+ # It fails to find uninstalled libraries when the uninstalled
-+ # path is not listed in the libpath. Setting hardcode_minus_L
-+ # to unsupported forces relinking
-+ hardcode_minus_L=yes
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_libdir_separator=
-+ fi
-+ esac
-+ shared_flag='-shared'
-+ else
-+ # not using gcc
-+ if test "$host_cpu" = ia64; then
-+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-+ # chokes on -Wl,-G. The following line is correct:
-+ shared_flag='-G'
-+ else
-+ if test "$aix_use_runtimelinking" = yes; then
-+ shared_flag='${wl}-G'
-+ else
-+ shared_flag='${wl}-bM:SRE'
-+ fi
-+ fi
-+ fi
-+
-+ # It seems that -bexpall does not export symbols beginning with
-+ # underscore (_), so it is better to generate a list of symbols to export.
-+ always_export_symbols=yes
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # Warning - without using the other runtime loading flags (-brtl),
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag='-berok'
-+ # Determine the default libpath from the value encoded in an empty executable.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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 conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+
-+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`
-+# Check for a 64-bit object if we didn't find anything.
-+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`; fi
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+
-+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-+ else
-+ if test "$host_cpu" = ia64; then
-+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-+ allow_undefined_flag="-z nodefs"
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ else
-+ # Determine the default libpath from the value encoded in an empty executable.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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 conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+
-+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`
-+# Check for a 64-bit object if we didn't find anything.
-+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`; fi
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+
-+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-+ # Warning - without using the other run time loading flags,
-+ # -berok will link without error, but may produce a broken library.
-+ no_undefined_flag=' ${wl}-bernotok'
-+ allow_undefined_flag=' ${wl}-berok'
-+ # -bexpall does not export symbols beginning with underscore (_)
-+ always_export_symbols=yes
-+ # Exported symbols can be pulled into shared objects from archives
-+ whole_archive_flag_spec=' '
-+ archive_cmds_need_lc=yes
-+ # This is similar to how AIX traditionally builds it's shared libraries.
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-+ fi
-+ fi
-+ ;;
-+
-+ amigaos*)
-+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ # see comment about different semantics on the GNU ld section
-+ ld_shlibs=no
-+ ;;
-+
-+ bsdi4*)
-+ export_dynamic_flag_spec=-rdynamic
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_From_new_cmds='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
-+ fix_srcfile_path='`cygpath -w "$srcfile"`'
-+ enable_shared_with_static_runtimes=yes
-+ ;;
-+
-+ darwin* | rhapsody*)
-+ if test "$GXX" = yes ; then
-+ archive_cmds_need_lc=no
-+ case "$host_os" in
-+ rhapsody* | darwin1.[012])
-+ allow_undefined_flag='-undefined suppress'
-+ ;;
-+ *) # Darwin 1.3 on
-+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-+ allow_undefined_flag='-flat_namespace -undefined suppress'
-+ else
-+ case ${MACOSX_DEPLOYMENT_TARGET} in
-+ 10.[012])
-+ allow_undefined_flag='-flat_namespace -undefined suppress'
-+ ;;
-+ 10.*)
-+ allow_undefined_flag='-undefined dynamic_lookup'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+ esac
-+ lt_int_apple_cc_single_mod=no
-+ output_verbose_link_cmd='echo'
-+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
-+ lt_int_apple_cc_single_mod=yes
-+ fi
-+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-+ archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-+ else
-+ archive_cmds='$CC -r ${wl}-bind_at_load -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'
-+ fi
-+ module_cmds='$CC ${wl}-bind_at_load $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
-+ archive_expsym_cmds='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}'
-+ else
-+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
-+ fi
-+ module_expsym_cmds='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}'
-+ hardcode_direct=no
-+ hardcode_automatic=yes
-+ hardcode_shlibpath_var=unsupported
-+ whole_archive_flag_spec='-all_load $convenience'
-+ link_all_deplibs=yes
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ dgux*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ freebsd1*)
-+ ld_shlibs=no
-+ ;;
-+
-+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-+ # support. Future versions do this automatically, but an explicit c++rt0.o
-+ # does not break anything, and helps significantly (at the cost of a little
-+ # extra space).
-+ freebsd2.2*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-+ freebsd2*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-+ freebsd* | kfreebsd*-gnu)
-+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ hpux9*)
-+ if test "$GCC" = yes; then
-+ archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ else
-+ archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ fi
-+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_direct=yes
-+
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ hardcode_minus_L=yes
-+ export_dynamic_flag_spec='${wl}-E'
-+ ;;
-+
-+ hpux10* | hpux11*)
-+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ ;;
-+ *)
-+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ ;;
-+ esac
-+ else
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ ;;
-+ *)
-+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-+ ;;
-+ esac
-+ fi
-+ if test "$with_gnu_ld" = no; then
-+ case "$host_cpu" in
-+ hppa*64*)
-+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_flag_spec_ld='+b $libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_direct=no
-+ hardcode_shlibpath_var=no
-+ ;;
-+ ia64*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_direct=no
-+ hardcode_shlibpath_var=no
-+
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ hardcode_minus_L=yes
-+ ;;
-+ *)
-+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_direct=yes
-+ export_dynamic_flag_spec='${wl}-E'
-+
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ hardcode_minus_L=yes
-+ ;;
-+ esac
-+ fi
-+ ;;
-+
-+ irix5* | irix6* | nonstopux*)
-+ if test "$GCC" = yes; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ else
-+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
-+ fi
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ link_all_deplibs=yes
-+ ;;
-+
-+ netbsd* | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-+ else
-+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-+ fi
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ newsos6)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ openbsd*)
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ export_dynamic_flag_spec='${wl}-E'
-+ else
-+ case $host_os in
-+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ ;;
-+ *)
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+
-+ os2*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ allow_undefined_flag=unsupported
-+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-+ old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-+ ;;
-+
-+ osf3*)
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ else
-+ allow_undefined_flag=' -expect_unresolved \*'
-+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ fi
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ ;;
-+
-+ osf4* | osf5*) # as osf3* with the addition of -msym flag
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ else
-+ allow_undefined_flag=' -expect_unresolved \*'
-+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
-+
-+ # Both c and cxx compiler support -rpath directly
-+ hardcode_libdir_flag_spec='-rpath $libdir'
-+ fi
-+ hardcode_libdir_separator=:
-+ ;;
-+
-+ sco3.2v5*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ export_dynamic_flag_spec='${wl}-Bexport'
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ ;;
-+
-+ solaris*)
-+ no_undefined_flag=' -z text'
-+ if test "$GCC" = yes; then
-+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
-+ else
-+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ fi
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_shlibpath_var=no
-+ case $host_os in
-+ solaris2.[0-5] | solaris2.[0-5].*) ;;
-+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
-+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
-+ esac
-+ link_all_deplibs=yes
-+ ;;
-+
-+ sunos4*)
-+ if test "x$host_vendor" = xsequent; then
-+ # Use $CC to link under sequent, because it throws in some extra .o
-+ # files that make .init and .fini sections work.
-+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-+ fi
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ sysv4)
-+ case $host_vendor in
-+ sni)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes # is this really true???
-+ ;;
-+ siemens)
-+ ## LD is ld it makes a PLAMLIB
-+ ## CC just makes a GrossModule.
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ reload_cmds='$CC -r -o $output$reload_objs'
-+ hardcode_direct=no
-+ ;;
-+ motorola)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-+ ;;
-+ esac
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ sysv4.3*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ export_dynamic_flag_spec='-Bexport'
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ ld_shlibs=yes
-+ fi
-+ ;;
-+
-+ sysv4.2uw2*)
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_minus_L=no
-+ hardcode_shlibpath_var=no
-+ hardcode_runpath_var=yes
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+
-+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
-+ no_undefined_flag='${wl}-z ${wl}text'
-+ if test "$GCC" = yes; then
-+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ fi
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ sysv5*)
-+ no_undefined_flag=' -z text'
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ hardcode_libdir_flag_spec=
-+ hardcode_shlibpath_var=no
-+ runpath_var='LD_RUN_PATH'
-+ ;;
-+
-+ uts4*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ *)
-+ ld_shlibs=no
-+ ;;
-+ esac
-+ fi
-+
-+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
-+echo "${ECHO_T}$ld_shlibs" >&6
-+test "$ld_shlibs" = no && can_build_shared=no
-+
-+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-+if test "$GCC" = yes; then
-+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-+fi
-+
-+#
-+# Do we need to explicitly link libc?
-+#
-+case "x$archive_cmds_need_lc" in
-+x|xyes)
-+ # Assume -lc should be added
-+ archive_cmds_need_lc=yes
-+
-+ if test "$enable_shared" = yes && test "$GCC" = yes; then
-+ case $archive_cmds in
-+ *'~'*)
-+ # FIXME: we may have to deal with multi-command sequences.
-+ ;;
-+ '$CC '*)
-+ # Test whether the compiler implicitly links with -lc since on some
-+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
-+ # to ld, don't add -lc before -lgcc.
-+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-+ $rm conftest*
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+
-+ 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); } 2>conftest.err; then
-+ soname=conftest
-+ lib=conftest
-+ libobjs=conftest.$ac_objext
-+ deplibs=
-+ wl=$lt_prog_compiler_wl
-+ compiler_flags=-v
-+ linker_flags=-v
-+ verstring=
-+ output_objdir=.
-+ libname=conftest
-+ lt_save_allow_undefined_flag=$allow_undefined_flag
-+ allow_undefined_flag=
-+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-+ (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+ then
-+ archive_cmds_need_lc=no
-+ else
-+ archive_cmds_need_lc=yes
-+ fi
-+ allow_undefined_flag=$lt_save_allow_undefined_flag
-+ else
-+ cat conftest.err 1>&5
-+ fi
-+ $rm conftest*
-+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
-+echo "${ECHO_T}$archive_cmds_need_lc" >&6
-+ ;;
-+ esac
-+ fi
-+ ;;
-+esac
-+
-+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
-+library_names_spec=
-+libname_spec='lib$name'
-+soname_spec=
-+shrext_cmds=".so"
-+postinstall_cmds=
-+postuninstall_cmds=
-+finish_cmds=
-+finish_eval=
-+shlibpath_var=
-+shlibpath_overrides_runpath=unknown
-+version_type=none
-+dynamic_linker="$host_os ld.so"
-+sys_lib_dlsearch_path_spec="/lib /usr/lib"
-+if test "$GCC" = yes; then
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-+ # if the path contains ";" then we assume it to be the separator
-+ # otherwise default to the standard path separator (i.e. ":") - it is
-+ # assumed that no part of a normal pathname contains ";" but that should
-+ # okay in the real world where ";" in dirpaths is itself problematic.
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+else
-+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+fi
-+need_lib_prefix=unknown
-+hardcode_into_libs=no
-+
-+# when you set need_version to no, make sure it does not cause -set_version
-+# flags to be left without arguments
-+need_version=unknown
-+
-+case $host_os in
-+aix3*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-+ shlibpath_var=LIBPATH
-+
-+ # AIX 3 has no versioning support, so we append a major version to the name.
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ ;;
-+
-+aix4* | aix5*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ hardcode_into_libs=yes
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 supports IA64
-+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ else
-+ # With GCC up to 2.95.x, collect2 would create an import file
-+ # for dependence libraries. The import file would start with
-+ # the line `#! .'. This would cause the generated library to
-+ # depend on `.', always an invalid library. This was fixed in
-+ # development snapshots of GCC prior to 3.0.
-+ case $host_os in
-+ aix4 | aix4.[01] | aix4.[01].*)
-+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-+ echo ' yes '
-+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-+ :
-+ else
-+ can_build_shared=no
-+ fi
-+ ;;
-+ esac
-+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-+ # soname into executable. Probably we can add versioning support to
-+ # collect2, so additional links can be useful in future.
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-+ # instead of lib<name>.a to let people know that these are not
-+ # typical AIX shared libraries.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ else
-+ # We preserve .a as extension for shared libraries through AIX4.2
-+ # and later when we are not doing run time linking.
-+ library_names_spec='${libname}${release}.a $libname.a'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ fi
-+ shlibpath_var=LIBPATH
-+ fi
-+ ;;
-+
-+amigaos*)
-+ library_names_spec='$libname.ixlibrary $libname.a'
-+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
-+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-+ ;;
-+
-+beos*)
-+ library_names_spec='${libname}${shared_ext}'
-+ dynamic_linker="$host_os ld.so"
-+ shlibpath_var=LIBRARY_PATH
-+ ;;
-+
-+bsdi4*)
-+ version_type=linux
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-+ # the default ld.so.conf also contains /usr/contrib/lib and
-+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-+ # libtool to hard-code these into programs
-+ ;;
-+
-+cygwin* | mingw* | pw32*)
-+ version_type=windows
-+ shrext_cmds=".dll"
-+ need_version=no
-+ need_lib_prefix=no
-+
-+ case $GCC,$host_os in
-+ yes,cygwin* | yes,mingw* | yes,pw32*)
-+ library_names_spec='$libname.dll.a'
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $rm \$dlpath'
-+ shlibpath_overrides_runpath=yes
-+
-+ case $host_os in
-+ cygwin*)
-+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-+ ;;
-+ mingw*)
-+ # MinGW DLLs use traditional 'lib' prefix
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
-+ # It is most probably a Windows format PATH printed by
-+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
-+ # path with ; separators, and with drive letters. We can handle the
-+ # drive letters (cygwin fileutils understands them), so leave them,
-+ # especially as we might pass files found there to a mingw objdump,
-+ # which wouldn't understand a cygwinified path. Ahh.
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+ ;;
-+ pw32*)
-+ # pw32 DLLs use 'pw' prefix rather than 'lib'
-+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
-+ ;;
-+ esac
-+ ;;
-+
-+ *)
-+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ ;;
-+ esac
-+ dynamic_linker='Win32 ld.exe'
-+ # FIXME: first we should search . and the directory the executable is in
-+ shlibpath_var=PATH
-+ ;;
-+
-+darwin* | rhapsody*)
-+ dynamic_linker="$host_os dyld"
-+ version_type=darwin
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-+ soname_spec='${libname}${release}${major}$shared_ext'
-+ shlibpath_overrides_runpath=yes
-+ shlibpath_var=DYLD_LIBRARY_PATH
-+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
-+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-+ if test "$GCC" = yes; then
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-+ else
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-+ fi
-+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-+ ;;
-+
-+dgux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+freebsd1*)
-+ dynamic_linker=no
-+ ;;
-+
-+kfreebsd*-gnu)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU ld.so'
-+ ;;
-+
-+freebsd*)
-+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
-+ version_type=freebsd-$objformat
-+ case $version_type in
-+ freebsd-elf*)
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-+ need_version=no
-+ need_lib_prefix=no
-+ ;;
-+ freebsd-*)
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-+ need_version=yes
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_os in
-+ freebsd2*)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ freebsd3.01* | freebsdelf3.01*)
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ ;;
-+ *) # from 3.2 on
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ ;;
-+ esac
-+ ;;
-+
-+gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ hardcode_into_libs=yes
-+ ;;
-+
-+hpux9* | hpux10* | hpux11*)
-+ # Give a soname corresponding to the major version so that dld.sl refuses to
-+ # link against other versions.
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ case "$host_cpu" in
-+ ia64*)
-+ shrext_cmds='.so'
-+ hardcode_into_libs=yes
-+ dynamic_linker="$host_os dld.so"
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ if test "X$HPUX_IA64_MODE" = X32; then
-+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-+ else
-+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-+ fi
-+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-+ ;;
-+ hppa*64*)
-+ shrext_cmds='.sl'
-+ hardcode_into_libs=yes
-+ dynamic_linker="$host_os dld.sl"
-+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-+ ;;
-+ *)
-+ shrext_cmds='.sl'
-+ dynamic_linker="$host_os dld.sl"
-+ shlibpath_var=SHLIB_PATH
-+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ ;;
-+ esac
-+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
-+ postinstall_cmds='chmod 555 $lib'
-+ ;;
-+
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ nonstopux*) version_type=nonstopux ;;
-+ *)
-+ if test "$lt_cv_prog_gnu_ld" = yes; then
-+ version_type=linux
-+ else
-+ version_type=irix
-+ fi ;;
-+ esac
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-+ case $host_os in
-+ irix5* | nonstopux*)
-+ libsuff= shlibsuff=
-+ ;;
-+ *)
-+ case $LD in # libtool.m4 will add one of these switches to LD
-+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-+ libsuff= shlibsuff= libmagic=32-bit;;
-+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-+ libsuff=32 shlibsuff=N32 libmagic=N32;;
-+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
-+ *) libsuff= shlibsuff= libmagic=never-match;;
-+ esac
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-+ hardcode_into_libs=yes
-+ ;;
-+
-+# No shared lib support for Linux oldld, aout, or coff.
-+linux*oldld* | linux*aout* | linux*coff*)
-+ dynamic_linker=no
-+ ;;
-+
-+# This must be Linux ELF.
-+linux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ # This implies no fast_install, which is unacceptable.
-+ # Some rework will be needed to allow for fast_install
-+ # before this can be enabled.
-+ hardcode_into_libs=yes
-+
-+ # Append ld.so.conf contents to the search path
-+ if test -f /etc/ld.so.conf; then
-+ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
-+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-+ fi
-+
-+ # We used to test for /lib/ld.so.1 and disable shared libraries on
-+ # powerpc, because MkLinux only supported shared libraries with the
-+ # GNU dynamic linker. Since this was broken with cross compilers,
-+ # most powerpc-linux boxes support dynamic linking these days and
-+ # people can always --disable-shared, the test was removed, and we
-+ # assume the GNU/Linux dynamic linker is in use.
-+ dynamic_linker='GNU/Linux ld.so'
-+ ;;
-+
-+knetbsd*-gnu)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU ld.so'
-+ ;;
-+
-+netbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ dynamic_linker='NetBSD (a.out) ld.so'
-+ else
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ dynamic_linker='NetBSD ld.elf_so'
-+ fi
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ ;;
-+
-+newsos6)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+
-+nto-qnx*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+
-+openbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=yes
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ case $host_os in
-+ openbsd2.[89] | openbsd2.[89].*)
-+ shlibpath_overrides_runpath=no
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ esac
-+ else
-+ shlibpath_overrides_runpath=yes
-+ fi
-+ ;;
-+
-+os2*)
-+ libname_spec='$name'
-+ shrext_cmds=".dll"
-+ need_lib_prefix=no
-+ library_names_spec='$libname${shared_ext} $libname.a'
-+ dynamic_linker='OS/2 ld.exe'
-+ shlibpath_var=LIBPATH
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ version_type=osf
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-+ ;;
-+
-+sco3.2v5*)
-+ version_type=osf
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+solaris*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ # ldd complains unless libraries are executable
-+ postinstall_cmds='chmod +x $lib'
-+ ;;
-+
-+sunos4*)
-+ version_type=sunos
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ if test "$with_gnu_ld" = yes; then
-+ need_lib_prefix=no
-+ fi
-+ need_version=yes
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_vendor in
-+ sni)
-+ shlibpath_overrides_runpath=no
-+ need_lib_prefix=no
-+ export_dynamic_flag_spec='${wl}-Blargedynsym'
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+ siemens)
-+ need_lib_prefix=no
-+ ;;
-+ motorola)
-+ need_lib_prefix=no
-+ need_version=no
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-+ ;;
-+ esac
-+ ;;
-+
-+sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ version_type=linux
-+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-+ soname_spec='$libname${shared_ext}.$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ fi
-+ ;;
-+
-+uts4*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+*)
-+ dynamic_linker=no
-+ ;;
-+esac
-+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-+echo "${ECHO_T}$dynamic_linker" >&6
-+test "$dynamic_linker" = no && can_build_shared=no
-+
-+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
-+hardcode_action=
-+if test -n "$hardcode_libdir_flag_spec" || \
-+ test -n "$runpath_var " || \
-+ test "X$hardcode_automatic"="Xyes" ; then
-+
-+ # We can hardcode non-existant directories.
-+ if test "$hardcode_direct" != no &&
-+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
-+ # have to relink, otherwise we might link with an installed library
-+ # when we should be linking with a yet-to-be-installed one
-+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
-+ test "$hardcode_minus_L" != no; then
-+ # Linking always hardcodes the temporary library directory.
-+ hardcode_action=relink
-+ else
-+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
-+ hardcode_action=immediate
-+ fi
-+else
-+ # We cannot hardcode anything, or else we can only hardcode existing
-+ # directories.
-+ hardcode_action=unsupported
-+fi
-+echo "$as_me:$LINENO: result: $hardcode_action" >&5
-+echo "${ECHO_T}$hardcode_action" >&6
-+
-+if test "$hardcode_action" = relink; then
-+ # Fast installation is not supported
-+ enable_fast_install=no
-+elif test "$shlibpath_overrides_runpath" = yes ||
-+ test "$enable_shared" = no; then
-+ # Fast installation is not necessary
-+ enable_fast_install=needless
-+fi
-+
-+striplib=
-+old_striplib=
-+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
-+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+else
-+# FIXME - insert some real tests, host_os isn't really good enough
-+ case $host_os in
-+ darwin*)
-+ if test -n "$STRIP" ; then
-+ striplib="$STRIP -x"
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+ ;;
-+ *)
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+ ;;
-+ esac
-+fi
-+
-+if test "x$enable_dlopen" != xyes; then
-+ enable_dlopen=unknown
-+ enable_dlopen_self=unknown
-+ enable_dlopen_self_static=unknown
-+else
-+ lt_cv_dlopen=no
-+ lt_cv_dlopen_libs=
-+
-+ case $host_os in
-+ beos*)
-+ lt_cv_dlopen="load_add_on"
-+ lt_cv_dlopen_libs=
-+ lt_cv_dlopen_self=yes
-+ ;;
-+
-+ mingw* | pw32*)
-+ lt_cv_dlopen="LoadLibrary"
-+ lt_cv_dlopen_libs=
-+ ;;
-+
-+ cygwin*)
-+ lt_cv_dlopen="dlopen"
-+ lt_cv_dlopen_libs=
-+ ;;
-+
-+ darwin*)
-+ # if libdl is installed we need to link against it
-+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldl $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dlopen ();
-+int
-+main ()
-+{
-+dlopen ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_dl_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dl_dlopen=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-+if test $ac_cv_lib_dl_dlopen = yes; then
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-+else
-+
-+ lt_cv_dlopen="dyld"
-+ lt_cv_dlopen_libs=
-+ lt_cv_dlopen_self=yes
-+
-+fi
-+
-+ ;;
-+
-+ *)
-+ echo "$as_me:$LINENO: checking for shl_load" >&5
-+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
-+if test "${ac_cv_func_shl_load+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define shl_load innocuous_shl_load
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char shl_load (); 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
-+
-+#undef shl_load
-+
-+/* 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 shl_load ();
-+/* 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_shl_load) || defined (__stub___shl_load)
-+choke me
-+#else
-+char (*f) () = shl_load;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != shl_load;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_shl_load=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_func_shl_load=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
-+if test $ac_cv_func_shl_load = yes; then
-+ lt_cv_dlopen="shl_load"
-+else
-+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
-+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldld $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 shl_load ();
-+int
-+main ()
-+{
-+shl_load ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_dld_shl_load=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dld_shl_load=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
-+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
-+if test $ac_cv_lib_dld_shl_load = yes; then
-+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
-+else
-+ echo "$as_me:$LINENO: checking for dlopen" >&5
-+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
-+if test "${ac_cv_func_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define dlopen innocuous_dlopen
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char dlopen (); 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
-+
-+#undef dlopen
-+
-+/* 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 dlopen ();
-+/* 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_dlopen) || defined (__stub___dlopen)
-+choke me
-+#else
-+char (*f) () = dlopen;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != dlopen;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_func_dlopen=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
-+if test $ac_cv_func_dlopen = yes; then
-+ lt_cv_dlopen="dlopen"
-+else
-+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldl $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dlopen ();
-+int
-+main ()
-+{
-+dlopen ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_dl_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dl_dlopen=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-+if test $ac_cv_lib_dl_dlopen = yes; then
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-+else
-+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
-+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
-+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lsvld $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dlopen ();
-+int
-+main ()
-+{
-+dlopen ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_svld_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_svld_dlopen=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
-+if test $ac_cv_lib_svld_dlopen = yes; then
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-+else
-+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
-+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
-+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldld $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dld_link ();
-+int
-+main ()
-+{
-+dld_link ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_dld_dld_link=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dld_dld_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
-+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
-+if test $ac_cv_lib_dld_dld_link = yes; then
-+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+ ;;
-+ esac
-+
-+ if test "x$lt_cv_dlopen" != xno; then
-+ enable_dlopen=yes
-+ else
-+ enable_dlopen=no
-+ fi
-+
-+ case $lt_cv_dlopen in
-+ dlopen)
-+ save_CPPFLAGS="$CPPFLAGS"
-+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-+
-+ save_LDFLAGS="$LDFLAGS"
-+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-+
-+ save_LIBS="$LIBS"
-+ LIBS="$lt_cv_dlopen_libs $LIBS"
-+
-+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
-+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
-+if test "${lt_cv_dlopen_self+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ lt_cv_dlopen_self=cross
-+else
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_status=$lt_dlunknown
-+ cat > conftest.$ac_ext <<EOF
-+#line __oline__ "configure"
-+#include "confdefs.h"
-+
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-+
-+#include <stdio.h>
-+
-+#ifdef RTLD_GLOBAL
-+# define LT_DLGLOBAL RTLD_GLOBAL
-+#else
-+# ifdef DL_GLOBAL
-+# define LT_DLGLOBAL DL_GLOBAL
-+# else
-+# define LT_DLGLOBAL 0
-+# endif
-+#endif
-+
-+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-+ find out it does not work in some platform. */
-+#ifndef LT_DLLAZY_OR_NOW
-+# ifdef RTLD_LAZY
-+# define LT_DLLAZY_OR_NOW RTLD_LAZY
-+# else
-+# ifdef DL_LAZY
-+# define LT_DLLAZY_OR_NOW DL_LAZY
-+# else
-+# ifdef RTLD_NOW
-+# define LT_DLLAZY_OR_NOW RTLD_NOW
-+# else
-+# ifdef DL_NOW
-+# define LT_DLLAZY_OR_NOW DL_NOW
-+# else
-+# define LT_DLLAZY_OR_NOW 0
-+# endif
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" void exit (int);
-+#endif
-+
-+void fnord() { int i=42;}
-+int main ()
-+{
-+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-+ int status = $lt_dlunknown;
-+
-+ if (self)
-+ {
-+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+ /* dlclose (self); */
-+ }
-+
-+ exit (status);
-+}
-+EOF
-+ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ (./conftest; exit; ) 2>/dev/null
-+ lt_status=$?
-+ case x$lt_status in
-+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
-+ esac
-+ else :
-+ # compilation failed
-+ lt_cv_dlopen_self=no
-+ fi
-+fi
-+rm -fr conftest*
-+
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
-+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
-+
-+ if test "x$lt_cv_dlopen_self" = xyes; then
-+ LDFLAGS="$LDFLAGS $link_static_flag"
-+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
-+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
-+if test "${lt_cv_dlopen_self_static+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ lt_cv_dlopen_self_static=cross
-+else
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_status=$lt_dlunknown
-+ cat > conftest.$ac_ext <<EOF
-+#line __oline__ "configure"
-+#include "confdefs.h"
-+
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-+
-+#include <stdio.h>
-+
-+#ifdef RTLD_GLOBAL
-+# define LT_DLGLOBAL RTLD_GLOBAL
-+#else
-+# ifdef DL_GLOBAL
-+# define LT_DLGLOBAL DL_GLOBAL
-+# else
-+# define LT_DLGLOBAL 0
-+# endif
-+#endif
-+
-+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-+ find out it does not work in some platform. */
-+#ifndef LT_DLLAZY_OR_NOW
-+# ifdef RTLD_LAZY
-+# define LT_DLLAZY_OR_NOW RTLD_LAZY
-+# else
-+# ifdef DL_LAZY
-+# define LT_DLLAZY_OR_NOW DL_LAZY
-+# else
-+# ifdef RTLD_NOW
-+# define LT_DLLAZY_OR_NOW RTLD_NOW
-+# else
-+# ifdef DL_NOW
-+# define LT_DLLAZY_OR_NOW DL_NOW
-+# else
-+# define LT_DLLAZY_OR_NOW 0
-+# endif
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" void exit (int);
-+#endif
-+
-+void fnord() { int i=42;}
-+int main ()
-+{
-+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-+ int status = $lt_dlunknown;
-+
-+ if (self)
-+ {
-+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+ /* dlclose (self); */
-+ }
-+
-+ exit (status);
-+}
-+EOF
-+ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ (./conftest; exit; ) 2>/dev/null
-+ lt_status=$?
-+ case x$lt_status in
-+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
-+ esac
-+ else :
-+ # compilation failed
-+ lt_cv_dlopen_self_static=no
-+ fi
-+fi
-+rm -fr conftest*
-+
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
-+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
-+ fi
-+
-+ CPPFLAGS="$save_CPPFLAGS"
-+ LDFLAGS="$save_LDFLAGS"
-+ LIBS="$save_LIBS"
-+ ;;
-+ esac
-+
-+ case $lt_cv_dlopen_self in
-+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-+ *) enable_dlopen_self=unknown ;;
-+ esac
-+
-+ case $lt_cv_dlopen_self_static in
-+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-+ *) enable_dlopen_self_static=unknown ;;
-+ esac
-+fi
-+
-+
-+# Report which librarie types wil actually be built
-+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
-+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
-+echo "$as_me:$LINENO: result: $can_build_shared" >&5
-+echo "${ECHO_T}$can_build_shared" >&6
-+
-+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
-+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
-+test "$can_build_shared" = "no" && enable_shared=no
-+
-+# On AIX, shared libraries and static libraries use the same namespace, and
-+# are all built from PIC.
-+case "$host_os" in
-+aix3*)
-+ test "$enable_shared" = yes && enable_static=no
-+ if test -n "$RANLIB"; then
-+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
-+ postinstall_cmds='$RANLIB $lib'
-+ fi
-+ ;;
-+
-+aix4* | aix5*)
-+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-+ test "$enable_shared" = yes && enable_static=no
-+ fi
-+ ;;
-+ darwin* | rhapsody*)
-+ if test "$GCC" = yes; then
-+ archive_cmds_need_lc=no
-+ case "$host_os" in
-+ rhapsody* | darwin1.[012])
-+ allow_undefined_flag='-undefined suppress'
-+ ;;
-+ *) # Darwin 1.3 on
-+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-+ allow_undefined_flag='-flat_namespace -undefined suppress'
-+ else
-+ case ${MACOSX_DEPLOYMENT_TARGET} in
-+ 10.[012])
-+ allow_undefined_flag='-flat_namespace -undefined suppress'
-+ ;;
-+ 10.*)
-+ allow_undefined_flag='-undefined dynamic_lookup'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+ esac
-+ output_verbose_link_cmd='echo'
-+ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
-+ module_cmds='$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
-+ archive_expsym_cmds='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}'
-+ module_expsym_cmds='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}'
-+ hardcode_direct=no
-+ hardcode_automatic=yes
-+ hardcode_shlibpath_var=unsupported
-+ whole_archive_flag_spec='-all_load $convenience'
-+ link_all_deplibs=yes
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+esac
-+echo "$as_me:$LINENO: result: $enable_shared" >&5
-+echo "${ECHO_T}$enable_shared" >&6
-+
-+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
-+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
-+# Make sure either enable_shared or enable_static is yes.
-+test "$enable_shared" = yes || enable_static=yes
-+echo "$as_me:$LINENO: result: $enable_static" >&5
-+echo "${ECHO_T}$enable_static" >&6
-+
-+# The else clause should only fire when bootstrapping the
-+# libtool distribution, otherwise you forgot to ship ltmain.sh
-+# with your package, and you will get complaints that there are
-+# no rules to generate ltmain.sh.
-+if test -f "$ltmain"; then
-+ # See if we are running on zsh, and set the options which allow our commands through
-+ # without removal of \ escapes.
-+ if test -n "${ZSH_VERSION+set}" ; then
-+ setopt NO_GLOB_SUBST
-+ fi
-+ # Now quote all the things that may contain metacharacters while being
-+ # careful not to overquote the AC_SUBSTed values. We take copies of the
-+ # variables and quote the copies for generation of the libtool script.
-+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
-+ SED SHELL STRIP \
-+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-+ deplibs_check_method reload_flag reload_cmds need_locks \
-+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-+ lt_cv_sys_global_symbol_to_c_name_address \
-+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-+ old_postinstall_cmds old_postuninstall_cmds \
-+ compiler \
-+ CC \
-+ LD \
-+ lt_prog_compiler_wl \
-+ lt_prog_compiler_pic \
-+ lt_prog_compiler_static \
-+ lt_prog_compiler_no_builtin_flag \
-+ export_dynamic_flag_spec \
-+ thread_safe_flag_spec \
-+ whole_archive_flag_spec \
-+ enable_shared_with_static_runtimes \
-+ old_archive_cmds \
-+ old_archive_from_new_cmds \
-+ predep_objects \
-+ postdep_objects \
-+ predeps \
-+ postdeps \
-+ compiler_lib_search_path \
-+ archive_cmds \
-+ archive_expsym_cmds \
-+ postinstall_cmds \
-+ postuninstall_cmds \
-+ old_archive_from_expsyms_cmds \
-+ allow_undefined_flag \
-+ no_undefined_flag \
-+ export_symbols_cmds \
-+ hardcode_libdir_flag_spec \
-+ hardcode_libdir_flag_spec_ld \
-+ hardcode_libdir_separator \
-+ hardcode_automatic \
-+ module_cmds \
-+ module_expsym_cmds \
-+ lt_cv_prog_compiler_c_o \
-+ exclude_expsyms \
-+ include_expsyms; do
-+
-+ case $var in
-+ old_archive_cmds | \
-+ old_archive_from_new_cmds | \
-+ archive_cmds | \
-+ archive_expsym_cmds | \
-+ module_cmds | \
-+ module_expsym_cmds | \
-+ old_archive_from_expsyms_cmds | \
-+ export_symbols_cmds | \
-+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
-+ postinstall_cmds | postuninstall_cmds | \
-+ old_postinstall_cmds | old_postuninstall_cmds | \
-+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-+ # Double-quote double-evaled strings.
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-+ ;;
-+ *)
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-+ ;;
-+ esac
-+ done
-+
-+ case $lt_echo in
-+ *'\$0 --fallback-echo"')
-+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-+ ;;
-+ esac
-+
-+cfgfile="${ofile}T"
-+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
-+ $rm -f "$cfgfile"
-+ { echo "$as_me:$LINENO: creating $ofile" >&5
-+echo "$as_me: creating $ofile" >&6;}
-+
-+ cat <<__EOF__ >> "$cfgfile"
-+#! $SHELL
-+
-+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
-+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-+#
-+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
-+# Free Software Foundation, Inc.
-+#
-+# This file is part of GNU Libtool:
-+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-+#
-+# 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.
-+#
-+# As a special exception to the GNU General Public License, if you
-+# distribute this file as part of a program that contains a
-+# configuration script generated by Autoconf, you may include it under
-+# the same distribution terms that you use for the rest of that program.
-+
-+# A sed program that does not truncate output.
-+SED=$lt_SED
-+
-+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-+Xsed="$SED -e s/^X//"
-+
-+# The HP-UX ksh and POSIX shell print the target directory to stdout
-+# if CDPATH is set.
-+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-+
-+# The names of the tagged configurations supported by this script.
-+available_tags=
-+
-+# ### BEGIN LIBTOOL CONFIG
-+
-+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-+
-+# Shell to use when invoking shell scripts.
-+SHELL=$lt_SHELL
-+
-+# Whether or not to build shared libraries.
-+build_libtool_libs=$enable_shared
-+
-+# Whether or not to build static libraries.
-+build_old_libs=$enable_static
-+
-+# Whether or not to add -lc for building shared libraries.
-+build_libtool_need_lc=$archive_cmds_need_lc
-+
-+# Whether or not to disallow shared libs when runtime libs are static
-+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-+
-+# Whether or not to optimize for fast installation.
-+fast_install=$enable_fast_install
-+
-+# The host system.
-+host_alias=$host_alias
-+host=$host
-+
-+# An echo program that does not interpret backslashes.
-+echo=$lt_echo
-+
-+# The archiver.
-+AR=$lt_AR
-+AR_FLAGS=$lt_AR_FLAGS
-+
-+# A C compiler.
-+LTCC=$lt_LTCC
-+
-+# A language-specific compiler.
-+CC=$lt_compiler
-+
-+# Is the compiler the GNU C compiler?
-+with_gcc=$GCC
-+
-+# An ERE matcher.
-+EGREP=$lt_EGREP
-+
-+# The linker used to build libraries.
-+LD=$lt_LD
-+
-+# Whether we need hard or soft links.
-+LN_S=$lt_LN_S
-+
-+# A BSD-compatible nm program.
-+NM=$lt_NM
-+
-+# A symbol stripping program
-+STRIP=$lt_STRIP
-+
-+# Used to examine libraries when file_magic_cmd begins "file"
-+MAGIC_CMD=$MAGIC_CMD
-+
-+# Used on cygwin: DLL creation program.
-+DLLTOOL="$DLLTOOL"
-+
-+# Used on cygwin: object dumper.
-+OBJDUMP="$OBJDUMP"
-+
-+# Used on cygwin: assembler.
-+AS="$AS"
-+
-+# The name of the directory that contains temporary libtool files.
-+objdir=$objdir
-+
-+# How to create reloadable object files.
-+reload_flag=$lt_reload_flag
-+reload_cmds=$lt_reload_cmds
-+
-+# How to pass a linker flag through the compiler.
-+wl=$lt_lt_prog_compiler_wl
-+
-+# Object file suffix (normally "o").
-+objext="$ac_objext"
-+
-+# Old archive suffix (normally "a").
-+libext="$libext"
-+
-+# Shared library suffix (normally ".so").
-+shrext_cmds='$shrext_cmds'
-+
-+# Executable file suffix (normally "").
-+exeext="$exeext"
-+
-+# Additional compiler flags for building library objects.
-+pic_flag=$lt_lt_prog_compiler_pic
-+pic_mode=$pic_mode
-+
-+# What is the maximum length of a command?
-+max_cmd_len=$lt_cv_sys_max_cmd_len
-+
-+# Does compiler simultaneously support -c and -o options?
-+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-+
-+# Must we lock files when doing compilation ?
-+need_locks=$lt_need_locks
-+
-+# Do we need the lib prefix for modules?
-+need_lib_prefix=$need_lib_prefix
-+
-+# Do we need a version for libraries?
-+need_version=$need_version
-+
-+# Whether dlopen is supported.
-+dlopen_support=$enable_dlopen
-+
-+# Whether dlopen of programs is supported.
-+dlopen_self=$enable_dlopen_self
-+
-+# Whether dlopen of statically linked programs is supported.
-+dlopen_self_static=$enable_dlopen_self_static
-+
-+# Compiler flag to prevent dynamic linking.
-+link_static_flag=$lt_lt_prog_compiler_static
-+
-+# Compiler flag to turn off builtin functions.
-+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-+
-+# Compiler flag to allow reflexive dlopens.
-+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-+
-+# Compiler flag to generate shared objects directly from archives.
-+whole_archive_flag_spec=$lt_whole_archive_flag_spec
-+
-+# Compiler flag to generate thread-safe objects.
-+thread_safe_flag_spec=$lt_thread_safe_flag_spec
-+
-+# Library versioning type.
-+version_type=$version_type
-+
-+# Format of library name prefix.
-+libname_spec=$lt_libname_spec
-+
-+# List of archive names. First name is the real one, the rest are links.
-+# The last name is the one that the linker finds with -lNAME.
-+library_names_spec=$lt_library_names_spec
-+
-+# The coded name of the library, if different from the real name.
-+soname_spec=$lt_soname_spec
-+
-+# Commands used to build and install an old-style archive.
-+RANLIB=$lt_RANLIB
-+old_archive_cmds=$lt_old_archive_cmds
-+old_postinstall_cmds=$lt_old_postinstall_cmds
-+old_postuninstall_cmds=$lt_old_postuninstall_cmds
-+
-+# Create an old-style archive from a shared archive.
-+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-+
-+# Create a temporary old-style archive to link instead of a shared archive.
-+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-+
-+# Commands used to build and install a shared archive.
-+archive_cmds=$lt_archive_cmds
-+archive_expsym_cmds=$lt_archive_expsym_cmds
-+postinstall_cmds=$lt_postinstall_cmds
-+postuninstall_cmds=$lt_postuninstall_cmds
-+
-+# Commands used to build a loadable module (assumed same as above if empty)
-+module_cmds=$lt_module_cmds
-+module_expsym_cmds=$lt_module_expsym_cmds
-+
-+# Commands to strip libraries.
-+old_striplib=$lt_old_striplib
-+striplib=$lt_striplib
-+
-+# Dependencies to place before the objects being linked to create a
-+# shared library.
-+predep_objects=$lt_predep_objects
-+
-+# Dependencies to place after the objects being linked to create a
-+# shared library.
-+postdep_objects=$lt_postdep_objects
-+
-+# Dependencies to place before the objects being linked to create a
-+# shared library.
-+predeps=$lt_predeps
-+
-+# Dependencies to place after the objects being linked to create a
-+# shared library.
-+postdeps=$lt_postdeps
-+
-+# The library search path used internally by the compiler when linking
-+# a shared library.
-+compiler_lib_search_path=$lt_compiler_lib_search_path
-+
-+# Method to check whether dependent libraries are shared objects.
-+deplibs_check_method=$lt_deplibs_check_method
-+
-+# Command to use when deplibs_check_method == file_magic.
-+file_magic_cmd=$lt_file_magic_cmd
-+
-+# Flag that allows shared libraries with undefined symbols to be built.
-+allow_undefined_flag=$lt_allow_undefined_flag
-+
-+# Flag that forces no undefined symbols.
-+no_undefined_flag=$lt_no_undefined_flag
-+
-+# Commands used to finish a libtool library installation in a directory.
-+finish_cmds=$lt_finish_cmds
-+
-+# Same as above, but a single script fragment to be evaled but not shown.
-+finish_eval=$lt_finish_eval
-+
-+# Take the output of nm and produce a listing of raw symbols and C names.
-+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-+
-+# Transform the output of nm in a proper C declaration
-+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-+
-+# Transform the output of nm in a C name address pair
-+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-+
-+# This is the shared library runtime path variable.
-+runpath_var=$runpath_var
-+
-+# This is the shared library path variable.
-+shlibpath_var=$shlibpath_var
-+
-+# Is shlibpath searched before the hard-coded library search path?
-+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-+
-+# How to hardcode a shared library path into an executable.
-+hardcode_action=$hardcode_action
-+
-+# Whether we should hardcode library paths into libraries.
-+hardcode_into_libs=$hardcode_into_libs
-+
-+# Flag to hardcode \$libdir into a binary during linking.
-+# This must work even if \$libdir does not exist.
-+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-+
-+# If ld is used when linking, flag to hardcode \$libdir into
-+# a binary during linking. This must work even if \$libdir does
-+# not exist.
-+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-+
-+# Whether we need a single -rpath flag with a separated argument.
-+hardcode_libdir_separator=$lt_hardcode_libdir_separator
-+
-+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_direct=$hardcode_direct
-+
-+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_minus_L=$hardcode_minus_L
-+
-+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-+# the resulting binary.
-+hardcode_shlibpath_var=$hardcode_shlibpath_var
-+
-+# Set to yes if building a shared library automatically hardcodes DIR into the library
-+# and all subsequent libraries and executables linked against it.
-+hardcode_automatic=$hardcode_automatic
-+
-+# Variables whose values should be saved in libtool wrapper scripts and
-+# restored at relink time.
-+variables_saved_for_relink="$variables_saved_for_relink"
-+
-+# Whether libtool must link a program against all its dependency libraries.
-+link_all_deplibs=$link_all_deplibs
-+
-+# Compile-time system search path for libraries
-+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-+
-+# Run-time system search path for libraries
-+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-+
-+# Fix the shell variable \$srcfile for the compiler.
-+fix_srcfile_path="$fix_srcfile_path"
-+
-+# Set to yes if exported symbols are required.
-+always_export_symbols=$always_export_symbols
-+
-+# The commands to list exported symbols.
-+export_symbols_cmds=$lt_export_symbols_cmds
-+
-+# The commands to extract the exported symbol list from a shared archive.
-+extract_expsyms_cmds=$lt_extract_expsyms_cmds
-+
-+# Symbols that should not be listed in the preloaded symbols.
-+exclude_expsyms=$lt_exclude_expsyms
-+
-+# Symbols that must always be exported.
-+include_expsyms=$lt_include_expsyms
-+
-+# ### END LIBTOOL CONFIG
-+
-+__EOF__
-+
-+
-+ case $host_os in
-+ aix3*)
-+ cat <<\EOF >> "$cfgfile"
-+
-+# AIX sometimes has problems with the GCC collect2 program. For some
-+# reason, if we set the COLLECT_NAMES environment variable, the problems
-+# vanish in a puff of smoke.
-+if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
-+fi
-+EOF
-+ ;;
-+ esac
-+
-+ # We use sed instead of cat because bash on DJGPP gets confused if
-+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
-+ # text mode, it properly converts lines to CR/LF. This bash problem
-+ # is reportedly fixed, but why not run on old versions too?
-+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
-+
-+ mv -f "$cfgfile" "$ofile" || \
-+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-+ chmod +x "$ofile"
-+
-+else
-+ # If there is no Makefile yet, we rely on a make rule to execute
-+ # `config.status --recheck' to rerun these tests and create the
-+ # libtool script then.
-+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-+ if test -f "$ltmain_in"; then
-+ test -f Makefile && make "$ltmain"
-+ fi
-+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
-+
-+CC="$lt_save_CC"
-+
-+
-+# Check whether --with-tags or --without-tags was given.
-+if test "${with_tags+set}" = set; then
-+ withval="$with_tags"
-+ tagnames="$withval"
-+fi;
-+
-+if test -f "$ltmain" && test -n "$tagnames"; then
-+ if test ! -f "${ofile}"; then
-+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
-+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
-+ fi
-+
-+ if test -z "$LTCC"; then
-+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
-+ if test -z "$LTCC"; then
-+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
-+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
-+ else
-+ { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
-+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
-+ fi
-+ fi
-+
-+ # Extract list of available tagged configurations in $ofile.
-+ # Note that this assumes the entire list is on one line.
-+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
-+
-+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-+ for tagname in $tagnames; do
-+ IFS="$lt_save_ifs"
-+ # Check whether tagname contains only valid characters
-+ case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
-+ "") ;;
-+ *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
-+echo "$as_me: error: invalid tag name: $tagname" >&2;}
-+ { (exit 1); exit 1; }; }
-+ ;;
-+ esac
-+
-+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
-+ then
-+ { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
-+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+
-+ # Update the list of available tags.
-+ if test -n "$tagname"; then
-+ echo appending configuration tag \"$tagname\" to $ofile
-+
-+ case $tagname in
-+ CXX)
-+ if test -n "$CXX" && test "X$CXX" != "Xno"; then
-+ ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+
-+
-+
-+archive_cmds_need_lc_CXX=no
-+allow_undefined_flag_CXX=
-+always_export_symbols_CXX=no
-+archive_expsym_cmds_CXX=
-+export_dynamic_flag_spec_CXX=
-+hardcode_direct_CXX=no
-+hardcode_libdir_flag_spec_CXX=
-+hardcode_libdir_flag_spec_ld_CXX=
-+hardcode_libdir_separator_CXX=
-+hardcode_minus_L_CXX=no
-+hardcode_automatic_CXX=no
-+module_cmds_CXX=
-+module_expsym_cmds_CXX=
-+link_all_deplibs_CXX=unknown
-+old_archive_cmds_CXX=$old_archive_cmds
-+no_undefined_flag_CXX=
-+whole_archive_flag_spec_CXX=
-+enable_shared_with_static_runtimes_CXX=no
-+
-+# Dependencies to place before and after the object being linked:
-+predep_objects_CXX=
-+postdep_objects_CXX=
-+predeps_CXX=
-+postdeps_CXX=
-+compiler_lib_search_path_CXX=
-+
-+# Source file extension for C++ test sources.
-+ac_ext=cc
-+
-+# Object file extension for compiled C++ test sources.
-+objext=o
-+objext_CXX=$objext
-+
-+# Code to be used in simple compile tests
-+lt_simple_compile_test_code="int some_variable = 0;\n"
-+
-+# Code to be used in simple link tests
-+lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
-+
-+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-+
-+# If no C compiler was specified, use CC.
-+LTCC=${LTCC-"$CC"}
-+
-+# Allow CC to be a program name with arguments.
-+compiler=$CC
-+
-+
-+# Allow CC to be a program name with arguments.
-+lt_save_CC=$CC
-+lt_save_LD=$LD
-+lt_save_GCC=$GCC
-+GCC=$GXX
-+lt_save_with_gnu_ld=$with_gnu_ld
-+lt_save_path_LD=$lt_cv_path_LD
-+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-+else
-+ unset lt_cv_prog_gnu_ld
-+fi
-+if test -n "${lt_cv_path_LDCXX+set}"; then
-+ lt_cv_path_LD=$lt_cv_path_LDCXX
-+else
-+ unset lt_cv_path_LD
-+fi
-+test -z "${LDCXX+set}" || LD=$LDCXX
-+CC=${CXX-"c++"}
-+compiler=$CC
-+compiler_CXX=$CC
-+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
-+
-+# We don't want -fno-exception wen compiling C++ code, so set the
-+# no_builtin_flag separately
-+if test "$GXX" = yes; then
-+ lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
-+else
-+ lt_prog_compiler_no_builtin_flag_CXX=
-+fi
-+
-+if test "$GXX" = yes; then
-+ # Set up default GNU C++ configuration
-+
-+
-+# Check whether --with-gnu-ld or --without-gnu-ld was given.
-+if test "${with_gnu_ld+set}" = set; then
-+ withval="$with_gnu_ld"
-+ test "$withval" = no || with_gnu_ld=yes
-+else
-+ with_gnu_ld=no
-+fi;
-+ac_prog=ld
-+if test "$GCC" = yes; then
-+ # Check if gcc -print-prog-name=ld gives a path.
-+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
-+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
-+ case $host in
-+ *-*-mingw*)
-+ # gcc leaves a trailing carriage return which upsets mingw
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-+ *)
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-+ esac
-+ case $ac_prog in
-+ # Accept absolute paths.
-+ [\\/]* | ?:[\\/]*)
-+ re_direlt='/[^/][^/]*/\.\./'
-+ # Canonicalize the pathname of ld
-+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
-+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
-+ done
-+ test -z "$LD" && LD="$ac_prog"
-+ ;;
-+ "")
-+ # If it fails, then pretend we aren't using GCC.
-+ ac_prog=ld
-+ ;;
-+ *)
-+ # If it is relative, then search for the first ld in PATH.
-+ with_gnu_ld=unknown
-+ ;;
-+ esac
-+elif test "$with_gnu_ld" = yes; then
-+ echo "$as_me:$LINENO: checking for GNU ld" >&5
-+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
-+else
-+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
-+fi
-+if test "${lt_cv_path_LD+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -z "$LD"; then
-+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ for ac_dir in $PATH; do
-+ IFS="$lt_save_ifs"
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-+ lt_cv_path_LD="$ac_dir/$ac_prog"
-+ # Check to see if the program is GNU ld. I'd rather use --version,
-+ # but apparently some GNU ld's only accept -v.
-+ # Break only if it was the GNU/non-GNU ld that we prefer.
-+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-+ *GNU* | *'with BFD'*)
-+ test "$with_gnu_ld" != no && break
-+ ;;
-+ *)
-+ test "$with_gnu_ld" != yes && break
-+ ;;
-+ esac
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+else
-+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
-+fi
-+fi
-+
-+LD="$lt_cv_path_LD"
-+if test -n "$LD"; then
-+ echo "$as_me:$LINENO: result: $LD" >&5
-+echo "${ECHO_T}$LD" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
-+ { (exit 1); exit 1; }; }
-+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
-+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
-+if test "${lt_cv_prog_gnu_ld+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
-+case `$LD -v 2>&1 </dev/null` in
-+*GNU* | *'with BFD'*)
-+ lt_cv_prog_gnu_ld=yes
-+ ;;
-+*)
-+ lt_cv_prog_gnu_ld=no
-+ ;;
-+esac
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
-+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
-+with_gnu_ld=$lt_cv_prog_gnu_ld
-+
-+
-+
-+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
-+ # archiving commands below assume that GNU ld is being used.
-+ if test "$with_gnu_ld" = yes; then
-+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+
-+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
-+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-+
-+ # If archive_cmds runs LD, not CC, wlarc should be empty
-+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-+ # investigate it a little bit more. (MM)
-+ wlarc='${wl}'
-+
-+ # ancient GNU ld didn't support --whole-archive et. al.
-+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
-+ grep 'no-whole-archive' > /dev/null; then
-+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+ else
-+ whole_archive_flag_spec_CXX=
-+ fi
-+ else
-+ with_gnu_ld=no
-+ wlarc=
-+
-+ # A generic and very simple default shared library creation
-+ # command for GNU C++ for the case where it uses the native
-+ # linker, instead of GNU ld. If possible, this setting should
-+ # overridden to take advantage of the native linker features on
-+ # the platform it is being used on.
-+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-+ fi
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-+
-+else
-+ GXX=no
-+ with_gnu_ld=no
-+ wlarc=
-+fi
-+
-+# PORTME: fill in a description of your system's C++ link characteristics
-+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
-+ld_shlibs_CXX=yes
-+case $host_os in
-+ aix3*)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ aix4* | aix5*)
-+ if test "$host_cpu" = ia64; then
-+ # On IA64, the linker does run time linking by default, so we don't
-+ # have to do anything special.
-+ aix_use_runtimelinking=no
-+ exp_sym_flag='-Bexport'
-+ no_entry_flag=""
-+ else
-+ aix_use_runtimelinking=no
-+
-+ # Test if we are trying to use run time linking or normal
-+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-+ # need to do runtime linking.
-+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-+ for ld_flag in $LDFLAGS; do
-+ case $ld_flag in
-+ *-brtl*)
-+ aix_use_runtimelinking=yes
-+ break
-+ ;;
-+ esac
-+ done
-+ esac
-+
-+ exp_sym_flag='-bexport'
-+ no_entry_flag='-bnoentry'
-+ fi
-+
-+ # When large executables or shared objects are built, AIX ld can
-+ # have problems creating the table of contents. If linking a library
-+ # or program results in "error TOC overflow" add -mminimal-toc to
-+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-+
-+ archive_cmds_CXX=''
-+ hardcode_direct_CXX=yes
-+ hardcode_libdir_separator_CXX=':'
-+ link_all_deplibs_CXX=yes
-+
-+ if test "$GXX" = yes; then
-+ case $host_os in aix4.012|aix4.012.*)
-+ # We only want to do this on AIX 4.2 and lower, the check
-+ # below for broken collect2 doesn't work under 4.3+
-+ collect2name=`${CC} -print-prog-name=collect2`
-+ if test -f "$collect2name" && \
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ then
-+ # We have reworked collect2
-+ hardcode_direct_CXX=yes
-+ else
-+ # We have old collect2
-+ hardcode_direct_CXX=unsupported
-+ # It fails to find uninstalled libraries when the uninstalled
-+ # path is not listed in the libpath. Setting hardcode_minus_L
-+ # to unsupported forces relinking
-+ hardcode_minus_L_CXX=yes
-+ hardcode_libdir_flag_spec_CXX='-L$libdir'
-+ hardcode_libdir_separator_CXX=
-+ fi
-+ esac
-+ shared_flag='-shared'
-+ else
-+ # not using gcc
-+ if test "$host_cpu" = ia64; then
-+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-+ # chokes on -Wl,-G. The following line is correct:
-+ shared_flag='-G'
-+ else
-+ if test "$aix_use_runtimelinking" = yes; then
-+ shared_flag='${wl}-G'
-+ else
-+ shared_flag='${wl}-bM:SRE'
-+ fi
-+ fi
-+ fi
-+
-+ # It seems that -bexpall does not export symbols beginning with
-+ # underscore (_), so it is better to generate a list of symbols to export.
-+ always_export_symbols_CXX=yes
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # Warning - without using the other runtime loading flags (-brtl),
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag_CXX='-berok'
-+ # Determine the default libpath from the value encoded in an empty executable.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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 conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+
-+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`
-+# Check for a 64-bit object if we didn't find anything.
-+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`; fi
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+
-+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-+
-+ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-+ else
-+ if test "$host_cpu" = ia64; then
-+ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
-+ allow_undefined_flag_CXX="-z nodefs"
-+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ else
-+ # Determine the default libpath from the value encoded in an empty executable.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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 conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+
-+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`
-+# Check for a 64-bit object if we didn't find anything.
-+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`; fi
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+
-+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-+ # Warning - without using the other run time loading flags,
-+ # -berok will link without error, but may produce a broken library.
-+ no_undefined_flag_CXX=' ${wl}-bernotok'
-+ allow_undefined_flag_CXX=' ${wl}-berok'
-+ # -bexpall does not export symbols beginning with underscore (_)
-+ always_export_symbols_CXX=yes
-+ # Exported symbols can be pulled into shared objects from archives
-+ whole_archive_flag_spec_CXX=' '
-+ archive_cmds_need_lc_CXX=yes
-+ # This is similar to how AIX traditionally builds it's shared libraries.
-+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-+ fi
-+ fi
-+ ;;
-+ chorus*)
-+ case $cc_basename in
-+ *)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ esac
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
-+ # as there is no search path for DLLs.
-+ hardcode_libdir_flag_spec_CXX='-L$libdir'
-+ allow_undefined_flag_CXX=unsupported
-+ always_export_symbols_CXX=no
-+ enable_shared_with_static_runtimes_CXX=yes
-+
-+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-+ # If the export-symbols file already is a .def file (1st line
-+ # is EXPORTS), use it as is; otherwise, prepend...
-+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname.def;
-+ else
-+ echo EXPORTS > $output_objdir/$soname.def;
-+ cat $export_symbols >> $output_objdir/$soname.def;
-+ fi~
-+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-+ else
-+ ld_shlibs_CXX=no
-+ fi
-+ ;;
-+
-+ darwin* | rhapsody*)
-+ if test "$GXX" = yes; then
-+ archive_cmds_need_lc_CXX=no
-+ case "$host_os" in
-+ rhapsody* | darwin1.[012])
-+ allow_undefined_flag_CXX='-undefined suppress'
-+ ;;
-+ *) # Darwin 1.3 on
-+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-+ allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
-+ else
-+ case ${MACOSX_DEPLOYMENT_TARGET} in
-+ 10.[012])
-+ allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
-+ ;;
-+ 10.*)
-+ allow_undefined_flag_CXX='-undefined dynamic_lookup'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+ esac
-+ lt_int_apple_cc_single_mod=no
-+ output_verbose_link_cmd='echo'
-+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
-+ lt_int_apple_cc_single_mod=yes
-+ fi
-+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-+ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-+ else
-+ archive_cmds_CXX='$CC -r ${wl}-bind_at_load -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'
-+ fi
-+ module_cmds_CXX='$CC ${wl}-bind_at_load $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
-+ archive_expsym_cmds_CXX='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}'
-+ else
-+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
-+ fi
-+ module_expsym_cmds_CXX='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}'
-+ hardcode_direct_CXX=no
-+ hardcode_automatic_CXX=yes
-+ hardcode_shlibpath_var_CXX=unsupported
-+ whole_archive_flag_spec_CXX='-all_load $convenience'
-+ link_all_deplibs_CXX=yes
-+ else
-+ ld_shlibs_CXX=no
-+ fi
-+ ;;
-+
-+ dgux*)
-+ case $cc_basename in
-+ ec++)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ ghcx)
-+ # Green Hills C++ Compiler
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ *)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ esac
-+ ;;
-+ freebsd12*)
-+ # C++ shared libraries reported to be fairly broken before switch to ELF
-+ ld_shlibs_CXX=no
-+ ;;
-+ freebsd-elf*)
-+ archive_cmds_need_lc_CXX=no
-+ ;;
-+ freebsd* | kfreebsd*-gnu)
-+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-+ # conventions
-+ ld_shlibs_CXX=yes
-+ ;;
-+ gnu*)
-+ ;;
-+ hpux9*)
-+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator_CXX=:
-+ export_dynamic_flag_spec_CXX='${wl}-E'
-+ hardcode_direct_CXX=yes
-+ hardcode_minus_L_CXX=yes # Not in the search PATH,
-+ # but as the default
-+ # location of the library.
-+
-+ case $cc_basename in
-+ CC)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ aCC)
-+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+ ;;
-+ *)
-+ if test "$GXX" = yes; then
-+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ else
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ fi
-+ ;;
-+ esac
-+ ;;
-+ hpux10*|hpux11*)
-+ if test $with_gnu_ld = no; then
-+ case "$host_cpu" in
-+ hppa*64*)
-+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
-+ hardcode_libdir_separator_CXX=:
-+ ;;
-+ ia64*)
-+ hardcode_libdir_flag_spec_CXX='-L$libdir'
-+ ;;
-+ *)
-+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator_CXX=:
-+ export_dynamic_flag_spec_CXX='${wl}-E'
-+ ;;
-+ esac
-+ fi
-+ case "$host_cpu" in
-+ hppa*64*)
-+ hardcode_direct_CXX=no
-+ hardcode_shlibpath_var_CXX=no
-+ ;;
-+ ia64*)
-+ hardcode_direct_CXX=no
-+ hardcode_shlibpath_var_CXX=no
-+ hardcode_minus_L_CXX=yes # Not in the search PATH,
-+ # but as the default
-+ # location of the library.
-+ ;;
-+ *)
-+ hardcode_direct_CXX=yes
-+ hardcode_minus_L_CXX=yes # Not in the search PATH,
-+ # but as the default
-+ # location of the library.
-+ ;;
-+ esac
-+
-+ case $cc_basename in
-+ CC)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ aCC)
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
-+ ;;
-+ *)
-+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-+ ;;
-+ esac
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+ ;;
-+ *)
-+ if test "$GXX" = yes; then
-+ if test $with_gnu_ld = no; then
-+ case "$host_cpu" in
-+ ia64*|hppa*64*)
-+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
-+ ;;
-+ *)
-+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-+ ;;
-+ esac
-+ fi
-+ else
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ fi
-+ ;;
-+ esac
-+ ;;
-+ irix5* | irix6*)
-+ case $cc_basename in
-+ CC)
-+ # SGI C++
-+ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
-+
-+ # Archives containing C++ object files must be created using
-+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
-+ # necessary to make sure instantiated templates are included
-+ # in the archive.
-+ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
-+ ;;
-+ *)
-+ if test "$GXX" = yes; then
-+ if test "$with_gnu_ld" = no; then
-+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
-+ else
-+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
-+ fi
-+ fi
-+ link_all_deplibs_CXX=yes
-+ ;;
-+ esac
-+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator_CXX=:
-+ ;;
-+ linux*)
-+ case $cc_basename in
-+ KCC)
-+ # Kuck and Associates, Inc. (KAI) C++ Compiler
-+
-+ # KCC will only create a shared library if the output file
-+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
-+ # to its proper name (with version) after linking.
-+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-+ archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+
-+ hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
-+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-+
-+ # Archives containing C++ object files must be created using
-+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
-+ ;;
-+ icpc)
-+ # Intel C++
-+ with_gnu_ld=yes
-+ archive_cmds_need_lc_CXX=no
-+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-+ ;;
-+ cxx)
-+ # Compaq C++
-+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-+
-+ runpath_var=LD_RUN_PATH
-+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-+ hardcode_libdir_separator_CXX=:
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+ ;;
-+ esac
-+ ;;
-+ lynxos*)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ m88k*)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ mvs*)
-+ case $cc_basename in
-+ cxx)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ *)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ esac
-+ ;;
-+ netbsd* | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-+ wlarc=
-+ hardcode_libdir_flag_spec_CXX='-R$libdir'
-+ hardcode_direct_CXX=yes
-+ hardcode_shlibpath_var_CXX=no
-+ fi
-+ # Workaround some broken pre-1.5 toolchains
-+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-+ ;;
-+ osf3*)
-+ case $cc_basename in
-+ KCC)
-+ # Kuck and Associates, Inc. (KAI) C++ Compiler
-+
-+ # KCC will only create a shared library if the output file
-+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
-+ # to its proper name (with version) after linking.
-+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-+
-+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-+ hardcode_libdir_separator_CXX=:
-+
-+ # Archives containing C++ object files must be created using
-+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
-+
-+ ;;
-+ RCC)
-+ # Rational C++ 2.4.1
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ cxx)
-+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
-+
-+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator_CXX=:
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+ ;;
-+ *)
-+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
-+
-+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator_CXX=:
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-+
-+ else
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ fi
-+ ;;
-+ esac
-+ ;;
-+ osf4* | osf5*)
-+ case $cc_basename in
-+ KCC)
-+ # Kuck and Associates, Inc. (KAI) C++ Compiler
-+
-+ # KCC will only create a shared library if the output file
-+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
-+ # to its proper name (with version) after linking.
-+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-+
-+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-+ hardcode_libdir_separator_CXX=:
-+
-+ # Archives containing C++ object files must be created using
-+ # the KAI C++ compiler.
-+ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
-+ ;;
-+ RCC)
-+ # Rational C++ 2.4.1
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ cxx)
-+ allow_undefined_flag_CXX=' -expect_unresolved \*'
-+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
-+ archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-+ echo "-hidden">> $lib.exp~
-+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
-+ $rm $lib.exp'
-+
-+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-+ hardcode_libdir_separator_CXX=:
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+ ;;
-+ *)
-+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
-+
-+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator_CXX=:
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-+
-+ else
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ fi
-+ ;;
-+ esac
-+ ;;
-+ psos*)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ sco*)
-+ archive_cmds_need_lc_CXX=no
-+ case $cc_basename in
-+ CC)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ *)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ esac
-+ ;;
-+ sunos4*)
-+ case $cc_basename in
-+ CC)
-+ # Sun C++ 4.x
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ lcc)
-+ # Lucid
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ *)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ esac
-+ ;;
-+ solaris*)
-+ case $cc_basename in
-+ CC)
-+ # Sun C++ 4.2, 5.x and Centerline C++
-+ no_undefined_flag_CXX=' -zdefs'
-+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-+
-+ hardcode_libdir_flag_spec_CXX='-R$libdir'
-+ hardcode_shlibpath_var_CXX=no
-+ case $host_os in
-+ solaris2.0-5 | solaris2.0-5.*) ;;
-+ *)
-+ # The C++ compiler is used as linker so we must use $wl
-+ # flag to pass the commands to the underlying system
-+ # linker.
-+ # Supported since Solaris 2.6 (maybe 2.5.1?)
-+ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-+ ;;
-+ esac
-+ link_all_deplibs_CXX=yes
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+
-+ # Archives containing C++ object files must be created using
-+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
-+ # necessary to make sure instantiated templates are included
-+ # in the archive.
-+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-+ ;;
-+ gcx)
-+ # Green Hills C++ Compiler
-+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-+
-+ # The C++ compiler must be used to create the archive.
-+ old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-+ ;;
-+ *)
-+ # GNU C++ compiler with Solaris linker
-+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-+ no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
-+ if $CC --version | grep -v '^2\.7' > /dev/null; then
-+ archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-+ else
-+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
-+ # platform.
-+ archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-+ fi
-+
-+ hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
-+ fi
-+ ;;
-+ esac
-+ ;;
-+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
-+ archive_cmds_need_lc_CXX=no
-+ ;;
-+ tandem*)
-+ case $cc_basename in
-+ NCC)
-+ # NonStop-UX NCC 3.20
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ *)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ esac
-+ ;;
-+ vxworks*)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+ *)
-+ # FIXME: insert proper C++ library support
-+ ld_shlibs_CXX=no
-+ ;;
-+esac
-+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
-+echo "${ECHO_T}$ld_shlibs_CXX" >&6
-+test "$ld_shlibs_CXX" = no && can_build_shared=no
-+
-+GCC_CXX="$GXX"
-+LD_CXX="$LD"
-+
-+
-+cat > conftest.$ac_ext <<EOF
-+class Foo
-+{
-+public:
-+ Foo (void) { a = 0; }
-+private:
-+ int a;
-+};
-+EOF
-+
-+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
-+ # Parse the compiler output and extract the necessary
-+ # objects, libraries and library flags.
-+
-+ # Sentinel used to keep track of whether or not we are before
-+ # the conftest object file.
-+ pre_test_object_deps_done=no
-+
-+ # The `*' in the case matches for architectures that use `case' in
-+ # $output_verbose_cmd can trigger glob expansion during the loop
-+ # eval without this substitution.
-+ output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
-+
-+ for p in `eval $output_verbose_link_cmd`; do
-+ case $p in
-+
-+ -L* | -R* | -l*)
-+ # Some compilers place space between "-{L,R}" and the path.
-+ # Remove the space.
-+ if test $p = "-L" \
-+ || test $p = "-R"; then
-+ prev=$p
-+ continue
-+ else
-+ prev=
-+ fi
-+
-+ if test "$pre_test_object_deps_done" = no; then
-+ case $p in
-+ -L* | -R*)
-+ # Internal compiler library paths should come after those
-+ # provided the user. The postdeps already come after the
-+ # user supplied libs so there is no need to process them.
-+ if test -z "$compiler_lib_search_path_CXX"; then
-+ compiler_lib_search_path_CXX="${prev}${p}"
-+ else
-+ compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
-+ fi
-+ ;;
-+ # The "-l" case would never come before the object being
-+ # linked, so don't bother handling this case.
-+ esac
-+ else
-+ if test -z "$postdeps_CXX"; then
-+ postdeps_CXX="${prev}${p}"
-+ else
-+ postdeps_CXX="${postdeps_CXX} ${prev}${p}"
-+ fi
-+ fi
-+ ;;
-+
-+ *.$objext)
-+ # This assumes that the test object file only shows up
-+ # once in the compiler output.
-+ if test "$p" = "conftest.$objext"; then
-+ pre_test_object_deps_done=yes
-+ continue
-+ fi
-+
-+ if test "$pre_test_object_deps_done" = no; then
-+ if test -z "$predep_objects_CXX"; then
-+ predep_objects_CXX="$p"
-+ else
-+ predep_objects_CXX="$predep_objects_CXX $p"
-+ fi
-+ else
-+ if test -z "$postdep_objects_CXX"; then
-+ postdep_objects_CXX="$p"
-+ else
-+ postdep_objects_CXX="$postdep_objects_CXX $p"
-+ fi
-+ fi
-+ ;;
-+
-+ *) ;; # Ignore the rest.
-+
-+ esac
-+ done
-+
-+ # Clean up.
-+ rm -f a.out a.exe
-+else
-+ echo "libtool.m4: error: problem compiling CXX test program"
-+fi
-+
-+$rm -f confest.$objext
-+
-+case " $postdeps_CXX " in
-+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
-+esac
-+
-+lt_prog_compiler_wl_CXX=
-+lt_prog_compiler_pic_CXX=
-+lt_prog_compiler_static_CXX=
-+
-+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
-+
-+ # C++ specific cases for pic, static, wl, etc.
-+ if test "$GXX" = yes; then
-+ lt_prog_compiler_wl_CXX='-Wl,'
-+ lt_prog_compiler_static_CXX='-static'
-+
-+ case $host_os in
-+ aix*)
-+ # All AIX code is PIC.
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ lt_prog_compiler_static_CXX='-Bstatic'
-+ fi
-+ ;;
-+ amigaos*)
-+ # FIXME: we need at least 68020 code to build shared libraries, but
-+ # adding the `-m68020' flag to GCC prevents building anything better,
-+ # like `-m68040'.
-+ lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
-+ ;;
-+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-+ # PIC is the default for these OSes.
-+ ;;
-+ mingw* | os2* | pw32*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-+ ;;
-+ darwin* | rhapsody*)
-+ # PIC is the default on this platform
-+ # Common symbols not allowed in MH_DYLIB files
-+ lt_prog_compiler_pic_CXX='-fno-common'
-+ ;;
-+ *djgpp*)
-+ # DJGPP does not support shared libraries at all
-+ lt_prog_compiler_pic_CXX=
-+ ;;
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ lt_prog_compiler_pic_CXX=-Kconform_pic
-+ fi
-+ ;;
-+ hpux*)
-+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-+ # not for PA HP-UX.
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ ;;
-+ *)
-+ lt_prog_compiler_pic_CXX='-fPIC'
-+ ;;
-+ esac
-+ ;;
-+ *)
-+ lt_prog_compiler_pic_CXX='-fPIC'
-+ ;;
-+ esac
-+ else
-+ case $host_os in
-+ aix4* | aix5*)
-+ # All AIX code is PIC.
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ lt_prog_compiler_static_CXX='-Bstatic'
-+ else
-+ lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
-+ fi
-+ ;;
-+ chorus*)
-+ case $cc_basename in
-+ cxch68)
-+ # Green Hills C++ Compiler
-+ # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-+ ;;
-+ esac
-+ ;;
-+ dgux*)
-+ case $cc_basename in
-+ ec++)
-+ lt_prog_compiler_pic_CXX='-KPIC'
-+ ;;
-+ ghcx)
-+ # Green Hills C++ Compiler
-+ lt_prog_compiler_pic_CXX='-pic'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ freebsd* | kfreebsd*-gnu)
-+ # FreeBSD uses GNU C++
-+ ;;
-+ hpux9* | hpux10* | hpux11*)
-+ case $cc_basename in
-+ CC)
-+ lt_prog_compiler_wl_CXX='-Wl,'
-+ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
-+ if test "$host_cpu" != ia64; then
-+ lt_prog_compiler_pic_CXX='+Z'
-+ fi
-+ ;;
-+ aCC)
-+ lt_prog_compiler_wl_CXX='-Wl,'
-+ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ # +Z the default
-+ ;;
-+ *)
-+ lt_prog_compiler_pic_CXX='+Z'
-+ ;;
-+ esac
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ irix5* | irix6* | nonstopux*)
-+ case $cc_basename in
-+ CC)
-+ lt_prog_compiler_wl_CXX='-Wl,'
-+ lt_prog_compiler_static_CXX='-non_shared'
-+ # CC pic flag -KPIC is the default.
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ linux*)
-+ case $cc_basename in
-+ KCC)
-+ # KAI C++ Compiler
-+ lt_prog_compiler_wl_CXX='--backend -Wl,'
-+ lt_prog_compiler_pic_CXX='-fPIC'
-+ ;;
-+ icpc)
-+ # Intel C++
-+ lt_prog_compiler_wl_CXX='-Wl,'
-+ lt_prog_compiler_pic_CXX='-KPIC'
-+ lt_prog_compiler_static_CXX='-static'
-+ ;;
-+ cxx)
-+ # Compaq C++
-+ # Make sure the PIC flag is empty. It appears that all Alpha
-+ # Linux and Compaq Tru64 Unix objects are PIC.
-+ lt_prog_compiler_pic_CXX=
-+ lt_prog_compiler_static_CXX='-non_shared'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ lynxos*)
-+ ;;
-+ m88k*)
-+ ;;
-+ mvs*)
-+ case $cc_basename in
-+ cxx)
-+ lt_prog_compiler_pic_CXX='-W c,exportall'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ netbsd* | knetbsd*-gnu)
-+ ;;
-+ osf3* | osf4* | osf5*)
-+ case $cc_basename in
-+ KCC)
-+ lt_prog_compiler_wl_CXX='--backend -Wl,'
-+ ;;
-+ RCC)
-+ # Rational C++ 2.4.1
-+ lt_prog_compiler_pic_CXX='-pic'
-+ ;;
-+ cxx)
-+ # Digital/Compaq C++
-+ lt_prog_compiler_wl_CXX='-Wl,'
-+ # Make sure the PIC flag is empty. It appears that all Alpha
-+ # Linux and Compaq Tru64 Unix objects are PIC.
-+ lt_prog_compiler_pic_CXX=
-+ lt_prog_compiler_static_CXX='-non_shared'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ psos*)
-+ ;;
-+ sco*)
-+ case $cc_basename in
-+ CC)
-+ lt_prog_compiler_pic_CXX='-fPIC'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ solaris*)
-+ case $cc_basename in
-+ CC)
-+ # Sun C++ 4.2, 5.x and Centerline C++
-+ lt_prog_compiler_pic_CXX='-KPIC'
-+ lt_prog_compiler_static_CXX='-Bstatic'
-+ lt_prog_compiler_wl_CXX='-Qoption ld '
-+ ;;
-+ gcx)
-+ # Green Hills C++ Compiler
-+ lt_prog_compiler_pic_CXX='-PIC'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ sunos4*)
-+ case $cc_basename in
-+ CC)
-+ # Sun C++ 4.x
-+ lt_prog_compiler_pic_CXX='-pic'
-+ lt_prog_compiler_static_CXX='-Bstatic'
-+ ;;
-+ lcc)
-+ # Lucid
-+ lt_prog_compiler_pic_CXX='-pic'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ tandem*)
-+ case $cc_basename in
-+ NCC)
-+ # NonStop-UX NCC 3.20
-+ lt_prog_compiler_pic_CXX='-KPIC'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ unixware*)
-+ ;;
-+ vxworks*)
-+ ;;
-+ *)
-+ lt_prog_compiler_can_build_shared_CXX=no
-+ ;;
-+ esac
-+ fi
-+
-+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
-+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
-+
-+#
-+# Check to make sure the PIC flag actually works.
-+#
-+if test -n "$lt_prog_compiler_pic_CXX"; then
-+
-+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
-+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
-+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_prog_compiler_pic_works_CXX=no
-+ ac_outfile=conftest.$ac_objext
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+ lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
-+ # Insert the option either (1) after the last *FLAGS variable, or
-+ # (2) before a word containing "conftest.", or (3) at the end.
-+ # Note that $ac_compile itself does not contain backslashes and begins
-+ # with a dollar sign (not a hyphen), so the echo should work correctly.
-+ # The option is referenced via a variable to avoid confusing sed.
-+ lt_compile=`echo "$ac_compile" | $SED \
-+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-+ -e 's:$: $lt_compiler_flag:'`
-+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
-+ (eval "$lt_compile" 2>conftest.err)
-+ ac_status=$?
-+ cat conftest.err >&5
-+ echo "$as_me:__oline__: \$? = $ac_status" >&5
-+ if (exit $ac_status) && test -s "$ac_outfile"; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test ! -s conftest.err; then
-+ lt_prog_compiler_pic_works_CXX=yes
-+ fi
-+ fi
-+ $rm conftest*
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
-+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
-+
-+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
-+ case $lt_prog_compiler_pic_CXX in
-+ "" | " "*) ;;
-+ *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
-+ esac
-+else
-+ lt_prog_compiler_pic_CXX=
-+ lt_prog_compiler_can_build_shared_CXX=no
-+fi
-+
-+fi
-+case "$host_os" in
-+ # For platforms which do not support PIC, -DPIC is meaningless:
-+ *djgpp*)
-+ lt_prog_compiler_pic_CXX=
-+ ;;
-+ *)
-+ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
-+ ;;
-+esac
-+
-+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
-+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_cv_prog_compiler_c_o_CXX=no
-+ $rm -r conftest 2>/dev/null
-+ mkdir conftest
-+ cd conftest
-+ mkdir out
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+
-+ lt_compiler_flag="-o out/conftest2.$ac_objext"
-+ # Insert the option either (1) after the last *FLAGS variable, or
-+ # (2) before a word containing "conftest.", or (3) at the end.
-+ # Note that $ac_compile itself does not contain backslashes and begins
-+ # with a dollar sign (not a hyphen), so the echo should work correctly.
-+ lt_compile=`echo "$ac_compile" | $SED \
-+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-+ -e 's:$: $lt_compiler_flag:'`
-+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
-+ (eval "$lt_compile" 2>out/conftest.err)
-+ ac_status=$?
-+ cat out/conftest.err >&5
-+ echo "$as_me:__oline__: \$? = $ac_status" >&5
-+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
-+ then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test ! -s out/conftest.err; then
-+ lt_cv_prog_compiler_c_o_CXX=yes
-+ fi
-+ fi
-+ chmod u+w .
-+ $rm conftest*
-+ # SGI C++ compiler will create directory out/ii_files/ for
-+ # template instantiation
-+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-+ $rm out/* && rmdir out
-+ cd ..
-+ rmdir conftest
-+ $rm conftest*
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
-+
-+
-+hard_links="nottested"
-+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
-+ # do not overwrite the value of need_locks provided by the user
-+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-+ hard_links=yes
-+ $rm conftest*
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ touch conftest.a
-+ ln conftest.a conftest.b 2>&5 || hard_links=no
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ echo "$as_me:$LINENO: result: $hard_links" >&5
-+echo "${ECHO_T}$hard_links" >&6
-+ if test "$hard_links" = no; then
-+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-+ need_locks=warn
-+ fi
-+else
-+ need_locks=no
-+fi
-+
-+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
-+
-+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-+ case $host_os in
-+ aix4* | aix5*)
-+ # If we're using GNU nm, then we don't want the "-C" option.
-+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
-+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-+ export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-+ else
-+ export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-+ fi
-+ ;;
-+ pw32*)
-+ export_symbols_cmds_CXX="$ltdll_cmds"
-+ ;;
-+ cygwin* | mingw*)
-+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
-+ ;;
-+ linux*)
-+ link_all_deplibs_CXX=no
-+ ;;
-+ *)
-+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-+ ;;
-+ esac
-+
-+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
-+echo "${ECHO_T}$ld_shlibs_CXX" >&6
-+test "$ld_shlibs_CXX" = no && can_build_shared=no
-+
-+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-+if test "$GCC" = yes; then
-+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-+fi
-+
-+#
-+# Do we need to explicitly link libc?
-+#
-+case "x$archive_cmds_need_lc_CXX" in
-+x|xyes)
-+ # Assume -lc should be added
-+ archive_cmds_need_lc_CXX=yes
-+
-+ if test "$enable_shared" = yes && test "$GCC" = yes; then
-+ case $archive_cmds_CXX in
-+ *'~'*)
-+ # FIXME: we may have to deal with multi-command sequences.
-+ ;;
-+ '$CC '*)
-+ # Test whether the compiler implicitly links with -lc since on some
-+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
-+ # to ld, don't add -lc before -lgcc.
-+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-+ $rm conftest*
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+
-+ 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); } 2>conftest.err; then
-+ soname=conftest
-+ lib=conftest
-+ libobjs=conftest.$ac_objext
-+ deplibs=
-+ wl=$lt_prog_compiler_wl_CXX
-+ compiler_flags=-v
-+ linker_flags=-v
-+ verstring=
-+ output_objdir=.
-+ libname=conftest
-+ lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
-+ allow_undefined_flag_CXX=
-+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-+ (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+ then
-+ archive_cmds_need_lc_CXX=no
-+ else
-+ archive_cmds_need_lc_CXX=yes
-+ fi
-+ allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
-+ else
-+ cat conftest.err 1>&5
-+ fi
-+ $rm conftest*
-+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
-+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
-+ ;;
-+ esac
-+ fi
-+ ;;
-+esac
-+
-+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
-+library_names_spec=
-+libname_spec='lib$name'
-+soname_spec=
-+shrext_cmds=".so"
-+postinstall_cmds=
-+postuninstall_cmds=
-+finish_cmds=
-+finish_eval=
-+shlibpath_var=
-+shlibpath_overrides_runpath=unknown
-+version_type=none
-+dynamic_linker="$host_os ld.so"
-+sys_lib_dlsearch_path_spec="/lib /usr/lib"
-+if test "$GCC" = yes; then
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-+ # if the path contains ";" then we assume it to be the separator
-+ # otherwise default to the standard path separator (i.e. ":") - it is
-+ # assumed that no part of a normal pathname contains ";" but that should
-+ # okay in the real world where ";" in dirpaths is itself problematic.
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+else
-+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+fi
-+need_lib_prefix=unknown
-+hardcode_into_libs=no
-+
-+# when you set need_version to no, make sure it does not cause -set_version
-+# flags to be left without arguments
-+need_version=unknown
-+
-+case $host_os in
-+aix3*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-+ shlibpath_var=LIBPATH
-+
-+ # AIX 3 has no versioning support, so we append a major version to the name.
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ ;;
-+
-+aix4* | aix5*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ hardcode_into_libs=yes
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 supports IA64
-+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ else
-+ # With GCC up to 2.95.x, collect2 would create an import file
-+ # for dependence libraries. The import file would start with
-+ # the line `#! .'. This would cause the generated library to
-+ # depend on `.', always an invalid library. This was fixed in
-+ # development snapshots of GCC prior to 3.0.
-+ case $host_os in
-+ aix4 | aix4.[01] | aix4.[01].*)
-+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-+ echo ' yes '
-+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-+ :
-+ else
-+ can_build_shared=no
-+ fi
-+ ;;
-+ esac
-+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-+ # soname into executable. Probably we can add versioning support to
-+ # collect2, so additional links can be useful in future.
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-+ # instead of lib<name>.a to let people know that these are not
-+ # typical AIX shared libraries.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ else
-+ # We preserve .a as extension for shared libraries through AIX4.2
-+ # and later when we are not doing run time linking.
-+ library_names_spec='${libname}${release}.a $libname.a'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ fi
-+ shlibpath_var=LIBPATH
-+ fi
-+ ;;
-+
-+amigaos*)
-+ library_names_spec='$libname.ixlibrary $libname.a'
-+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
-+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-+ ;;
-+
-+beos*)
-+ library_names_spec='${libname}${shared_ext}'
-+ dynamic_linker="$host_os ld.so"
-+ shlibpath_var=LIBRARY_PATH
-+ ;;
-+
-+bsdi4*)
-+ version_type=linux
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-+ # the default ld.so.conf also contains /usr/contrib/lib and
-+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-+ # libtool to hard-code these into programs
-+ ;;
-+
-+cygwin* | mingw* | pw32*)
-+ version_type=windows
-+ shrext_cmds=".dll"
-+ need_version=no
-+ need_lib_prefix=no
-+
-+ case $GCC,$host_os in
-+ yes,cygwin* | yes,mingw* | yes,pw32*)
-+ library_names_spec='$libname.dll.a'
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $rm \$dlpath'
-+ shlibpath_overrides_runpath=yes
-+
-+ case $host_os in
-+ cygwin*)
-+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-+ ;;
-+ mingw*)
-+ # MinGW DLLs use traditional 'lib' prefix
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
-+ # It is most probably a Windows format PATH printed by
-+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
-+ # path with ; separators, and with drive letters. We can handle the
-+ # drive letters (cygwin fileutils understands them), so leave them,
-+ # especially as we might pass files found there to a mingw objdump,
-+ # which wouldn't understand a cygwinified path. Ahh.
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+ ;;
-+ pw32*)
-+ # pw32 DLLs use 'pw' prefix rather than 'lib'
-+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
-+ ;;
-+ esac
-+ ;;
-+
-+ *)
-+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ ;;
-+ esac
-+ dynamic_linker='Win32 ld.exe'
-+ # FIXME: first we should search . and the directory the executable is in
-+ shlibpath_var=PATH
-+ ;;
-+
-+darwin* | rhapsody*)
-+ dynamic_linker="$host_os dyld"
-+ version_type=darwin
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-+ soname_spec='${libname}${release}${major}$shared_ext'
-+ shlibpath_overrides_runpath=yes
-+ shlibpath_var=DYLD_LIBRARY_PATH
-+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
-+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-+ if test "$GCC" = yes; then
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-+ else
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-+ fi
-+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-+ ;;
-+
-+dgux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+freebsd1*)
-+ dynamic_linker=no
-+ ;;
-+
-+kfreebsd*-gnu)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU ld.so'
-+ ;;
-+
-+freebsd*)
-+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
-+ version_type=freebsd-$objformat
-+ case $version_type in
-+ freebsd-elf*)
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-+ need_version=no
-+ need_lib_prefix=no
-+ ;;
-+ freebsd-*)
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-+ need_version=yes
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_os in
-+ freebsd2*)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ freebsd3.01* | freebsdelf3.01*)
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ ;;
-+ *) # from 3.2 on
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ ;;
-+ esac
-+ ;;
-+
-+gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ hardcode_into_libs=yes
-+ ;;
-+
-+hpux9* | hpux10* | hpux11*)
-+ # Give a soname corresponding to the major version so that dld.sl refuses to
-+ # link against other versions.
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ case "$host_cpu" in
-+ ia64*)
-+ shrext_cmds='.so'
-+ hardcode_into_libs=yes
-+ dynamic_linker="$host_os dld.so"
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ if test "X$HPUX_IA64_MODE" = X32; then
-+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-+ else
-+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-+ fi
-+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-+ ;;
-+ hppa*64*)
-+ shrext_cmds='.sl'
-+ hardcode_into_libs=yes
-+ dynamic_linker="$host_os dld.sl"
-+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-+ ;;
-+ *)
-+ shrext_cmds='.sl'
-+ dynamic_linker="$host_os dld.sl"
-+ shlibpath_var=SHLIB_PATH
-+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ ;;
-+ esac
-+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
-+ postinstall_cmds='chmod 555 $lib'
-+ ;;
-+
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ nonstopux*) version_type=nonstopux ;;
-+ *)
-+ if test "$lt_cv_prog_gnu_ld" = yes; then
-+ version_type=linux
-+ else
-+ version_type=irix
-+ fi ;;
-+ esac
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-+ case $host_os in
-+ irix5* | nonstopux*)
-+ libsuff= shlibsuff=
-+ ;;
-+ *)
-+ case $LD in # libtool.m4 will add one of these switches to LD
-+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-+ libsuff= shlibsuff= libmagic=32-bit;;
-+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-+ libsuff=32 shlibsuff=N32 libmagic=N32;;
-+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
-+ *) libsuff= shlibsuff= libmagic=never-match;;
-+ esac
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-+ hardcode_into_libs=yes
-+ ;;
-+
-+# No shared lib support for Linux oldld, aout, or coff.
-+linux*oldld* | linux*aout* | linux*coff*)
-+ dynamic_linker=no
-+ ;;
-+
-+# This must be Linux ELF.
-+linux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ # This implies no fast_install, which is unacceptable.
-+ # Some rework will be needed to allow for fast_install
-+ # before this can be enabled.
-+ hardcode_into_libs=yes
-+
-+ # Append ld.so.conf contents to the search path
-+ if test -f /etc/ld.so.conf; then
-+ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
-+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-+ fi
-+
-+ # We used to test for /lib/ld.so.1 and disable shared libraries on
-+ # powerpc, because MkLinux only supported shared libraries with the
-+ # GNU dynamic linker. Since this was broken with cross compilers,
-+ # most powerpc-linux boxes support dynamic linking these days and
-+ # people can always --disable-shared, the test was removed, and we
-+ # assume the GNU/Linux dynamic linker is in use.
-+ dynamic_linker='GNU/Linux ld.so'
-+ ;;
-+
-+knetbsd*-gnu)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU ld.so'
-+ ;;
-+
-+netbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ dynamic_linker='NetBSD (a.out) ld.so'
-+ else
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ dynamic_linker='NetBSD ld.elf_so'
-+ fi
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ ;;
-+
-+newsos6)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+
-+nto-qnx*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+
-+openbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=yes
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ case $host_os in
-+ openbsd2.[89] | openbsd2.[89].*)
-+ shlibpath_overrides_runpath=no
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ esac
-+ else
-+ shlibpath_overrides_runpath=yes
-+ fi
-+ ;;
-+
-+os2*)
-+ libname_spec='$name'
-+ shrext_cmds=".dll"
-+ need_lib_prefix=no
-+ library_names_spec='$libname${shared_ext} $libname.a'
-+ dynamic_linker='OS/2 ld.exe'
-+ shlibpath_var=LIBPATH
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ version_type=osf
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-+ ;;
-+
-+sco3.2v5*)
-+ version_type=osf
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+solaris*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ # ldd complains unless libraries are executable
-+ postinstall_cmds='chmod +x $lib'
-+ ;;
-+
-+sunos4*)
-+ version_type=sunos
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ if test "$with_gnu_ld" = yes; then
-+ need_lib_prefix=no
-+ fi
-+ need_version=yes
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_vendor in
-+ sni)
-+ shlibpath_overrides_runpath=no
-+ need_lib_prefix=no
-+ export_dynamic_flag_spec='${wl}-Blargedynsym'
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+ siemens)
-+ need_lib_prefix=no
-+ ;;
-+ motorola)
-+ need_lib_prefix=no
-+ need_version=no
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-+ ;;
-+ esac
-+ ;;
-+
-+sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ version_type=linux
-+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-+ soname_spec='$libname${shared_ext}.$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ fi
-+ ;;
-+
-+uts4*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+*)
-+ dynamic_linker=no
-+ ;;
-+esac
-+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-+echo "${ECHO_T}$dynamic_linker" >&6
-+test "$dynamic_linker" = no && can_build_shared=no
-+
-+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
-+hardcode_action_CXX=
-+if test -n "$hardcode_libdir_flag_spec_CXX" || \
-+ test -n "$runpath_var CXX" || \
-+ test "X$hardcode_automatic_CXX"="Xyes" ; then
-+
-+ # We can hardcode non-existant directories.
-+ if test "$hardcode_direct_CXX" != no &&
-+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
-+ # have to relink, otherwise we might link with an installed library
-+ # when we should be linking with a yet-to-be-installed one
-+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
-+ test "$hardcode_minus_L_CXX" != no; then
-+ # Linking always hardcodes the temporary library directory.
-+ hardcode_action_CXX=relink
-+ else
-+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
-+ hardcode_action_CXX=immediate
-+ fi
-+else
-+ # We cannot hardcode anything, or else we can only hardcode existing
-+ # directories.
-+ hardcode_action_CXX=unsupported
-+fi
-+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
-+echo "${ECHO_T}$hardcode_action_CXX" >&6
-+
-+if test "$hardcode_action_CXX" = relink; then
-+ # Fast installation is not supported
-+ enable_fast_install=no
-+elif test "$shlibpath_overrides_runpath" = yes ||
-+ test "$enable_shared" = no; then
-+ # Fast installation is not necessary
-+ enable_fast_install=needless
-+fi
-+
-+striplib=
-+old_striplib=
-+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
-+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+else
-+# FIXME - insert some real tests, host_os isn't really good enough
-+ case $host_os in
-+ darwin*)
-+ if test -n "$STRIP" ; then
-+ striplib="$STRIP -x"
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+ ;;
-+ *)
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+ ;;
-+ esac
-+fi
-+
-+if test "x$enable_dlopen" != xyes; then
-+ enable_dlopen=unknown
-+ enable_dlopen_self=unknown
-+ enable_dlopen_self_static=unknown
-+else
-+ lt_cv_dlopen=no
-+ lt_cv_dlopen_libs=
-+
-+ case $host_os in
-+ beos*)
-+ lt_cv_dlopen="load_add_on"
-+ lt_cv_dlopen_libs=
-+ lt_cv_dlopen_self=yes
-+ ;;
-+
-+ mingw* | pw32*)
-+ lt_cv_dlopen="LoadLibrary"
-+ lt_cv_dlopen_libs=
-+ ;;
-+
-+ cygwin*)
-+ lt_cv_dlopen="dlopen"
-+ lt_cv_dlopen_libs=
-+ ;;
-+
-+ darwin*)
-+ # if libdl is installed we need to link against it
-+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldl $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dlopen ();
-+int
-+main ()
-+{
-+dlopen ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_dl_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dl_dlopen=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-+if test $ac_cv_lib_dl_dlopen = yes; then
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-+else
-+
-+ lt_cv_dlopen="dyld"
-+ lt_cv_dlopen_libs=
-+ lt_cv_dlopen_self=yes
-+
-+fi
-+
-+ ;;
-+
-+ *)
-+ echo "$as_me:$LINENO: checking for shl_load" >&5
-+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
-+if test "${ac_cv_func_shl_load+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define shl_load innocuous_shl_load
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char shl_load (); 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
-+
-+#undef shl_load
-+
-+/* 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 shl_load ();
-+/* 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_shl_load) || defined (__stub___shl_load)
-+choke me
-+#else
-+char (*f) () = shl_load;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != shl_load;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_shl_load=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_func_shl_load=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
-+if test $ac_cv_func_shl_load = yes; then
-+ lt_cv_dlopen="shl_load"
-+else
-+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
-+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldld $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 shl_load ();
-+int
-+main ()
-+{
-+shl_load ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_dld_shl_load=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dld_shl_load=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
-+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
-+if test $ac_cv_lib_dld_shl_load = yes; then
-+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
-+else
-+ echo "$as_me:$LINENO: checking for dlopen" >&5
-+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
-+if test "${ac_cv_func_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define dlopen innocuous_dlopen
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char dlopen (); 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
-+
-+#undef dlopen
-+
-+/* 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 dlopen ();
-+/* 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_dlopen) || defined (__stub___dlopen)
-+choke me
-+#else
-+char (*f) () = dlopen;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != dlopen;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_func_dlopen=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
-+if test $ac_cv_func_dlopen = yes; then
-+ lt_cv_dlopen="dlopen"
-+else
-+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldl $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dlopen ();
-+int
-+main ()
-+{
-+dlopen ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_dl_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dl_dlopen=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-+if test $ac_cv_lib_dl_dlopen = yes; then
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-+else
-+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
-+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
-+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lsvld $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dlopen ();
-+int
-+main ()
-+{
-+dlopen ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_svld_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_svld_dlopen=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
-+if test $ac_cv_lib_svld_dlopen = yes; then
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-+else
-+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
-+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
-+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldld $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dld_link ();
-+int
-+main ()
-+{
-+dld_link ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_dld_dld_link=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dld_dld_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
-+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
-+if test $ac_cv_lib_dld_dld_link = yes; then
-+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+ ;;
-+ esac
-+
-+ if test "x$lt_cv_dlopen" != xno; then
-+ enable_dlopen=yes
-+ else
-+ enable_dlopen=no
-+ fi
-+
-+ case $lt_cv_dlopen in
-+ dlopen)
-+ save_CPPFLAGS="$CPPFLAGS"
-+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-+
-+ save_LDFLAGS="$LDFLAGS"
-+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-+
-+ save_LIBS="$LIBS"
-+ LIBS="$lt_cv_dlopen_libs $LIBS"
-+
-+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
-+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
-+if test "${lt_cv_dlopen_self+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ lt_cv_dlopen_self=cross
-+else
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_status=$lt_dlunknown
-+ cat > conftest.$ac_ext <<EOF
-+#line __oline__ "configure"
-+#include "confdefs.h"
-+
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-+
-+#include <stdio.h>
-+
-+#ifdef RTLD_GLOBAL
-+# define LT_DLGLOBAL RTLD_GLOBAL
-+#else
-+# ifdef DL_GLOBAL
-+# define LT_DLGLOBAL DL_GLOBAL
-+# else
-+# define LT_DLGLOBAL 0
-+# endif
-+#endif
-+
-+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-+ find out it does not work in some platform. */
-+#ifndef LT_DLLAZY_OR_NOW
-+# ifdef RTLD_LAZY
-+# define LT_DLLAZY_OR_NOW RTLD_LAZY
-+# else
-+# ifdef DL_LAZY
-+# define LT_DLLAZY_OR_NOW DL_LAZY
-+# else
-+# ifdef RTLD_NOW
-+# define LT_DLLAZY_OR_NOW RTLD_NOW
-+# else
-+# ifdef DL_NOW
-+# define LT_DLLAZY_OR_NOW DL_NOW
-+# else
-+# define LT_DLLAZY_OR_NOW 0
-+# endif
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" void exit (int);
-+#endif
-+
-+void fnord() { int i=42;}
-+int main ()
-+{
-+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-+ int status = $lt_dlunknown;
-+
-+ if (self)
-+ {
-+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+ /* dlclose (self); */
-+ }
-+
-+ exit (status);
-+}
-+EOF
-+ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ (./conftest; exit; ) 2>/dev/null
-+ lt_status=$?
-+ case x$lt_status in
-+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
-+ esac
-+ else :
-+ # compilation failed
-+ lt_cv_dlopen_self=no
-+ fi
-+fi
-+rm -fr conftest*
-+
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
-+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
-+
-+ if test "x$lt_cv_dlopen_self" = xyes; then
-+ LDFLAGS="$LDFLAGS $link_static_flag"
-+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
-+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
-+if test "${lt_cv_dlopen_self_static+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ lt_cv_dlopen_self_static=cross
-+else
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_status=$lt_dlunknown
-+ cat > conftest.$ac_ext <<EOF
-+#line __oline__ "configure"
-+#include "confdefs.h"
-+
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-+
-+#include <stdio.h>
-+
-+#ifdef RTLD_GLOBAL
-+# define LT_DLGLOBAL RTLD_GLOBAL
-+#else
-+# ifdef DL_GLOBAL
-+# define LT_DLGLOBAL DL_GLOBAL
-+# else
-+# define LT_DLGLOBAL 0
-+# endif
-+#endif
-+
-+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-+ find out it does not work in some platform. */
-+#ifndef LT_DLLAZY_OR_NOW
-+# ifdef RTLD_LAZY
-+# define LT_DLLAZY_OR_NOW RTLD_LAZY
-+# else
-+# ifdef DL_LAZY
-+# define LT_DLLAZY_OR_NOW DL_LAZY
-+# else
-+# ifdef RTLD_NOW
-+# define LT_DLLAZY_OR_NOW RTLD_NOW
-+# else
-+# ifdef DL_NOW
-+# define LT_DLLAZY_OR_NOW DL_NOW
-+# else
-+# define LT_DLLAZY_OR_NOW 0
-+# endif
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" void exit (int);
-+#endif
-+
-+void fnord() { int i=42;}
-+int main ()
-+{
-+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-+ int status = $lt_dlunknown;
-+
-+ if (self)
-+ {
-+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+ /* dlclose (self); */
-+ }
-+
-+ exit (status);
-+}
-+EOF
-+ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ (./conftest; exit; ) 2>/dev/null
-+ lt_status=$?
-+ case x$lt_status in
-+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
-+ esac
-+ else :
-+ # compilation failed
-+ lt_cv_dlopen_self_static=no
-+ fi
-+fi
-+rm -fr conftest*
-+
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
-+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
-+ fi
-+
-+ CPPFLAGS="$save_CPPFLAGS"
-+ LDFLAGS="$save_LDFLAGS"
-+ LIBS="$save_LIBS"
-+ ;;
-+ esac
-+
-+ case $lt_cv_dlopen_self in
-+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-+ *) enable_dlopen_self=unknown ;;
-+ esac
-+
-+ case $lt_cv_dlopen_self_static in
-+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-+ *) enable_dlopen_self_static=unknown ;;
-+ esac
-+fi
-+
-+
-+# The else clause should only fire when bootstrapping the
-+# libtool distribution, otherwise you forgot to ship ltmain.sh
-+# with your package, and you will get complaints that there are
-+# no rules to generate ltmain.sh.
-+if test -f "$ltmain"; then
-+ # See if we are running on zsh, and set the options which allow our commands through
-+ # without removal of \ escapes.
-+ if test -n "${ZSH_VERSION+set}" ; then
-+ setopt NO_GLOB_SUBST
-+ fi
-+ # Now quote all the things that may contain metacharacters while being
-+ # careful not to overquote the AC_SUBSTed values. We take copies of the
-+ # variables and quote the copies for generation of the libtool script.
-+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
-+ SED SHELL STRIP \
-+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-+ deplibs_check_method reload_flag reload_cmds need_locks \
-+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-+ lt_cv_sys_global_symbol_to_c_name_address \
-+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-+ old_postinstall_cmds old_postuninstall_cmds \
-+ compiler_CXX \
-+ CC_CXX \
-+ LD_CXX \
-+ lt_prog_compiler_wl_CXX \
-+ lt_prog_compiler_pic_CXX \
-+ lt_prog_compiler_static_CXX \
-+ lt_prog_compiler_no_builtin_flag_CXX \
-+ export_dynamic_flag_spec_CXX \
-+ thread_safe_flag_spec_CXX \
-+ whole_archive_flag_spec_CXX \
-+ enable_shared_with_static_runtimes_CXX \
-+ old_archive_cmds_CXX \
-+ old_archive_from_new_cmds_CXX \
-+ predep_objects_CXX \
-+ postdep_objects_CXX \
-+ predeps_CXX \
-+ postdeps_CXX \
-+ compiler_lib_search_path_CXX \
-+ archive_cmds_CXX \
-+ archive_expsym_cmds_CXX \
-+ postinstall_cmds_CXX \
-+ postuninstall_cmds_CXX \
-+ old_archive_from_expsyms_cmds_CXX \
-+ allow_undefined_flag_CXX \
-+ no_undefined_flag_CXX \
-+ export_symbols_cmds_CXX \
-+ hardcode_libdir_flag_spec_CXX \
-+ hardcode_libdir_flag_spec_ld_CXX \
-+ hardcode_libdir_separator_CXX \
-+ hardcode_automatic_CXX \
-+ module_cmds_CXX \
-+ module_expsym_cmds_CXX \
-+ lt_cv_prog_compiler_c_o_CXX \
-+ exclude_expsyms_CXX \
-+ include_expsyms_CXX; do
-+
-+ case $var in
-+ old_archive_cmds_CXX | \
-+ old_archive_from_new_cmds_CXX | \
-+ archive_cmds_CXX | \
-+ archive_expsym_cmds_CXX | \
-+ module_cmds_CXX | \
-+ module_expsym_cmds_CXX | \
-+ old_archive_from_expsyms_cmds_CXX | \
-+ export_symbols_cmds_CXX | \
-+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
-+ postinstall_cmds | postuninstall_cmds | \
-+ old_postinstall_cmds | old_postuninstall_cmds | \
-+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-+ # Double-quote double-evaled strings.
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-+ ;;
-+ *)
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-+ ;;
-+ esac
-+ done
-+
-+ case $lt_echo in
-+ *'\$0 --fallback-echo"')
-+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-+ ;;
-+ esac
-+
-+cfgfile="$ofile"
-+
-+ cat <<__EOF__ >> "$cfgfile"
-+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
-+
-+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-+
-+# Shell to use when invoking shell scripts.
-+SHELL=$lt_SHELL
-+
-+# Whether or not to build shared libraries.
-+build_libtool_libs=$enable_shared
-+
-+# Whether or not to build static libraries.
-+build_old_libs=$enable_static
-+
-+# Whether or not to add -lc for building shared libraries.
-+build_libtool_need_lc=$archive_cmds_need_lc_CXX
-+
-+# Whether or not to disallow shared libs when runtime libs are static
-+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
-+
-+# Whether or not to optimize for fast installation.
-+fast_install=$enable_fast_install
-+
-+# The host system.
-+host_alias=$host_alias
-+host=$host
-+
-+# An echo program that does not interpret backslashes.
-+echo=$lt_echo
-+
-+# The archiver.
-+AR=$lt_AR
-+AR_FLAGS=$lt_AR_FLAGS
-+
-+# A C compiler.
-+LTCC=$lt_LTCC
-+
-+# A language-specific compiler.
-+CC=$lt_compiler_CXX
-+
-+# Is the compiler the GNU C compiler?
-+with_gcc=$GCC_CXX
-+
-+# An ERE matcher.
-+EGREP=$lt_EGREP
-+
-+# The linker used to build libraries.
-+LD=$lt_LD_CXX
-+
-+# Whether we need hard or soft links.
-+LN_S=$lt_LN_S
-+
-+# A BSD-compatible nm program.
-+NM=$lt_NM
-+
-+# A symbol stripping program
-+STRIP=$lt_STRIP
-+
-+# Used to examine libraries when file_magic_cmd begins "file"
-+MAGIC_CMD=$MAGIC_CMD
-+
-+# Used on cygwin: DLL creation program.
-+DLLTOOL="$DLLTOOL"
-+
-+# Used on cygwin: object dumper.
-+OBJDUMP="$OBJDUMP"
-+
-+# Used on cygwin: assembler.
-+AS="$AS"
-+
-+# The name of the directory that contains temporary libtool files.
-+objdir=$objdir
-+
-+# How to create reloadable object files.
-+reload_flag=$lt_reload_flag
-+reload_cmds=$lt_reload_cmds
-+
-+# How to pass a linker flag through the compiler.
-+wl=$lt_lt_prog_compiler_wl_CXX
-+
-+# Object file suffix (normally "o").
-+objext="$ac_objext"
-+
-+# Old archive suffix (normally "a").
-+libext="$libext"
-+
-+# Shared library suffix (normally ".so").
-+shrext_cmds='$shrext_cmds'
-+
-+# Executable file suffix (normally "").
-+exeext="$exeext"
-+
-+# Additional compiler flags for building library objects.
-+pic_flag=$lt_lt_prog_compiler_pic_CXX
-+pic_mode=$pic_mode
-+
-+# What is the maximum length of a command?
-+max_cmd_len=$lt_cv_sys_max_cmd_len
-+
-+# Does compiler simultaneously support -c and -o options?
-+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
-+
-+# Must we lock files when doing compilation ?
-+need_locks=$lt_need_locks
-+
-+# Do we need the lib prefix for modules?
-+need_lib_prefix=$need_lib_prefix
-+
-+# Do we need a version for libraries?
-+need_version=$need_version
-+
-+# Whether dlopen is supported.
-+dlopen_support=$enable_dlopen
-+
-+# Whether dlopen of programs is supported.
-+dlopen_self=$enable_dlopen_self
-+
-+# Whether dlopen of statically linked programs is supported.
-+dlopen_self_static=$enable_dlopen_self_static
-+
-+# Compiler flag to prevent dynamic linking.
-+link_static_flag=$lt_lt_prog_compiler_static_CXX
-+
-+# Compiler flag to turn off builtin functions.
-+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
-+
-+# Compiler flag to allow reflexive dlopens.
-+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
-+
-+# Compiler flag to generate shared objects directly from archives.
-+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
-+
-+# Compiler flag to generate thread-safe objects.
-+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
-+
-+# Library versioning type.
-+version_type=$version_type
-+
-+# Format of library name prefix.
-+libname_spec=$lt_libname_spec
-+
-+# List of archive names. First name is the real one, the rest are links.
-+# The last name is the one that the linker finds with -lNAME.
-+library_names_spec=$lt_library_names_spec
-+
-+# The coded name of the library, if different from the real name.
-+soname_spec=$lt_soname_spec
-+
-+# Commands used to build and install an old-style archive.
-+RANLIB=$lt_RANLIB
-+old_archive_cmds=$lt_old_archive_cmds_CXX
-+old_postinstall_cmds=$lt_old_postinstall_cmds
-+old_postuninstall_cmds=$lt_old_postuninstall_cmds
-+
-+# Create an old-style archive from a shared archive.
-+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
-+
-+# Create a temporary old-style archive to link instead of a shared archive.
-+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
-+
-+# Commands used to build and install a shared archive.
-+archive_cmds=$lt_archive_cmds_CXX
-+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
-+postinstall_cmds=$lt_postinstall_cmds
-+postuninstall_cmds=$lt_postuninstall_cmds
-+
-+# Commands used to build a loadable module (assumed same as above if empty)
-+module_cmds=$lt_module_cmds_CXX
-+module_expsym_cmds=$lt_module_expsym_cmds_CXX
-+
-+# Commands to strip libraries.
-+old_striplib=$lt_old_striplib
-+striplib=$lt_striplib
-+
-+# Dependencies to place before the objects being linked to create a
-+# shared library.
-+predep_objects=$lt_predep_objects_CXX
-+
-+# Dependencies to place after the objects being linked to create a
-+# shared library.
-+postdep_objects=$lt_postdep_objects_CXX
-+
-+# Dependencies to place before the objects being linked to create a
-+# shared library.
-+predeps=$lt_predeps_CXX
-+
-+# Dependencies to place after the objects being linked to create a
-+# shared library.
-+postdeps=$lt_postdeps_CXX
-+
-+# The library search path used internally by the compiler when linking
-+# a shared library.
-+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
-+
-+# Method to check whether dependent libraries are shared objects.
-+deplibs_check_method=$lt_deplibs_check_method
-+
-+# Command to use when deplibs_check_method == file_magic.
-+file_magic_cmd=$lt_file_magic_cmd
-+
-+# Flag that allows shared libraries with undefined symbols to be built.
-+allow_undefined_flag=$lt_allow_undefined_flag_CXX
-+
-+# Flag that forces no undefined symbols.
-+no_undefined_flag=$lt_no_undefined_flag_CXX
-+
-+# Commands used to finish a libtool library installation in a directory.
-+finish_cmds=$lt_finish_cmds
-+
-+# Same as above, but a single script fragment to be evaled but not shown.
-+finish_eval=$lt_finish_eval
-+
-+# Take the output of nm and produce a listing of raw symbols and C names.
-+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-+
-+# Transform the output of nm in a proper C declaration
-+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-+
-+# Transform the output of nm in a C name address pair
-+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-+
-+# This is the shared library runtime path variable.
-+runpath_var=$runpath_var
-+
-+# This is the shared library path variable.
-+shlibpath_var=$shlibpath_var
-+
-+# Is shlibpath searched before the hard-coded library search path?
-+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-+
-+# How to hardcode a shared library path into an executable.
-+hardcode_action=$hardcode_action_CXX
-+
-+# Whether we should hardcode library paths into libraries.
-+hardcode_into_libs=$hardcode_into_libs
-+
-+# Flag to hardcode \$libdir into a binary during linking.
-+# This must work even if \$libdir does not exist.
-+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
-+
-+# If ld is used when linking, flag to hardcode \$libdir into
-+# a binary during linking. This must work even if \$libdir does
-+# not exist.
-+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
-+
-+# Whether we need a single -rpath flag with a separated argument.
-+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
-+
-+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_direct=$hardcode_direct_CXX
-+
-+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_minus_L=$hardcode_minus_L_CXX
-+
-+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-+# the resulting binary.
-+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
-+
-+# Set to yes if building a shared library automatically hardcodes DIR into the library
-+# and all subsequent libraries and executables linked against it.
-+hardcode_automatic=$hardcode_automatic_CXX
-+
-+# Variables whose values should be saved in libtool wrapper scripts and
-+# restored at relink time.
-+variables_saved_for_relink="$variables_saved_for_relink"
-+
-+# Whether libtool must link a program against all its dependency libraries.
-+link_all_deplibs=$link_all_deplibs_CXX
-+
-+# Compile-time system search path for libraries
-+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-+
-+# Run-time system search path for libraries
-+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-+
-+# Fix the shell variable \$srcfile for the compiler.
-+fix_srcfile_path="$fix_srcfile_path_CXX"
-+
-+# Set to yes if exported symbols are required.
-+always_export_symbols=$always_export_symbols_CXX
-+
-+# The commands to list exported symbols.
-+export_symbols_cmds=$lt_export_symbols_cmds_CXX
-+
-+# The commands to extract the exported symbol list from a shared archive.
-+extract_expsyms_cmds=$lt_extract_expsyms_cmds
-+
-+# Symbols that should not be listed in the preloaded symbols.
-+exclude_expsyms=$lt_exclude_expsyms_CXX
-+
-+# Symbols that must always be exported.
-+include_expsyms=$lt_include_expsyms_CXX
-+
-+# ### END LIBTOOL TAG CONFIG: $tagname
-+
-+__EOF__
-+
-+
-+else
-+ # If there is no Makefile yet, we rely on a make rule to execute
-+ # `config.status --recheck' to rerun these tests and create the
-+ # libtool script then.
-+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-+ if test -f "$ltmain_in"; then
-+ test -f Makefile && make "$ltmain"
-+ fi
-+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
-+
-+CC=$lt_save_CC
-+LDCXX=$LD
-+LD=$lt_save_LD
-+GCC=$lt_save_GCC
-+with_gnu_ldcxx=$with_gnu_ld
-+with_gnu_ld=$lt_save_with_gnu_ld
-+lt_cv_path_LDCXX=$lt_cv_path_LD
-+lt_cv_path_LD=$lt_save_path_LD
-+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-+
-+ else
-+ tagname=""
-+ fi
-+ ;;
-+
-+ F77)
-+ if test -n "$F77" && test "X$F77" != "Xno"; then
-+
-+ac_ext=f
-+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
-+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-+
-+
-+archive_cmds_need_lc_F77=no
-+allow_undefined_flag_F77=
-+always_export_symbols_F77=no
-+archive_expsym_cmds_F77=
-+export_dynamic_flag_spec_F77=
-+hardcode_direct_F77=no
-+hardcode_libdir_flag_spec_F77=
-+hardcode_libdir_flag_spec_ld_F77=
-+hardcode_libdir_separator_F77=
-+hardcode_minus_L_F77=no
-+hardcode_automatic_F77=no
-+module_cmds_F77=
-+module_expsym_cmds_F77=
-+link_all_deplibs_F77=unknown
-+old_archive_cmds_F77=$old_archive_cmds
-+no_undefined_flag_F77=
-+whole_archive_flag_spec_F77=
-+enable_shared_with_static_runtimes_F77=no
-+
-+# Source file extension for f77 test sources.
-+ac_ext=f
-+
-+# Object file extension for compiled f77 test sources.
-+objext=o
-+objext_F77=$objext
-+
-+# Code to be used in simple compile tests
-+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
-+
-+# Code to be used in simple link tests
-+lt_simple_link_test_code=" program t\n end\n"
-+
-+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-+
-+# If no C compiler was specified, use CC.
-+LTCC=${LTCC-"$CC"}
-+
-+# Allow CC to be a program name with arguments.
-+compiler=$CC
-+
-+
-+# Allow CC to be a program name with arguments.
-+lt_save_CC="$CC"
-+CC=${F77-"f77"}
-+compiler=$CC
-+compiler_F77=$CC
-+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
-+
-+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
-+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
-+echo "$as_me:$LINENO: result: $can_build_shared" >&5
-+echo "${ECHO_T}$can_build_shared" >&6
-+
-+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
-+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
-+test "$can_build_shared" = "no" && enable_shared=no
-+
-+# On AIX, shared libraries and static libraries use the same namespace, and
-+# are all built from PIC.
-+case "$host_os" in
-+aix3*)
-+ test "$enable_shared" = yes && enable_static=no
-+ if test -n "$RANLIB"; then
-+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
-+ postinstall_cmds='$RANLIB $lib'
-+ fi
-+ ;;
-+aix4* | aix5*)
-+ test "$enable_shared" = yes && enable_static=no
-+ ;;
-+esac
-+echo "$as_me:$LINENO: result: $enable_shared" >&5
-+echo "${ECHO_T}$enable_shared" >&6
-+
-+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
-+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
-+# Make sure either enable_shared or enable_static is yes.
-+test "$enable_shared" = yes || enable_static=yes
-+echo "$as_me:$LINENO: result: $enable_static" >&5
-+echo "${ECHO_T}$enable_static" >&6
-+
-+test "$ld_shlibs_F77" = no && can_build_shared=no
-+
-+GCC_F77="$G77"
-+LD_F77="$LD"
-+
-+lt_prog_compiler_wl_F77=
-+lt_prog_compiler_pic_F77=
-+lt_prog_compiler_static_F77=
-+
-+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
-+
-+ if test "$GCC" = yes; then
-+ lt_prog_compiler_wl_F77='-Wl,'
-+ lt_prog_compiler_static_F77='-static'
-+
-+ case $host_os in
-+ aix*)
-+ # All AIX code is PIC.
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ lt_prog_compiler_static_F77='-Bstatic'
-+ fi
-+ ;;
-+
-+ amigaos*)
-+ # FIXME: we need at least 68020 code to build shared libraries, but
-+ # adding the `-m68020' flag to GCC prevents building anything better,
-+ # like `-m68040'.
-+ lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
-+ ;;
-+
-+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-+ # PIC is the default for these OSes.
-+ ;;
-+
-+ mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-+ ;;
-+
-+ darwin* | rhapsody*)
-+ # PIC is the default on this platform
-+ # Common symbols not allowed in MH_DYLIB files
-+ lt_prog_compiler_pic_F77='-fno-common'
-+ ;;
-+
-+ msdosdjgpp*)
-+ # Just because we use GCC doesn't mean we suddenly get shared libraries
-+ # on systems that don't support them.
-+ lt_prog_compiler_can_build_shared_F77=no
-+ enable_shared=no
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ lt_prog_compiler_pic_F77=-Kconform_pic
-+ fi
-+ ;;
-+
-+ hpux*)
-+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-+ # not for PA HP-UX.
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ # +Z the default
-+ ;;
-+ *)
-+ lt_prog_compiler_pic_F77='-fPIC'
-+ ;;
-+ esac
-+ ;;
-+
-+ *)
-+ lt_prog_compiler_pic_F77='-fPIC'
-+ ;;
-+ esac
-+ else
-+ # PORTME Check for flag to pass linker flags through the system compiler.
-+ case $host_os in
-+ aix*)
-+ lt_prog_compiler_wl_F77='-Wl,'
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ lt_prog_compiler_static_F77='-Bstatic'
-+ else
-+ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
-+ fi
-+ ;;
-+
-+ mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-+ ;;
-+
-+ hpux9* | hpux10* | hpux11*)
-+ lt_prog_compiler_wl_F77='-Wl,'
-+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-+ # not for PA HP-UX.
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ # +Z the default
-+ ;;
-+ *)
-+ lt_prog_compiler_pic_F77='+Z'
-+ ;;
-+ esac
-+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
-+ lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
-+ ;;
-+
-+ irix5* | irix6* | nonstopux*)
-+ lt_prog_compiler_wl_F77='-Wl,'
-+ # PIC (with -KPIC) is the default.
-+ lt_prog_compiler_static_F77='-non_shared'
-+ ;;
-+
-+ newsos6)
-+ lt_prog_compiler_pic_F77='-KPIC'
-+ lt_prog_compiler_static_F77='-Bstatic'
-+ ;;
-+
-+ linux*)
-+ case $CC in
-+ icc* | ecc*)
-+ lt_prog_compiler_wl_F77='-Wl,'
-+ lt_prog_compiler_pic_F77='-KPIC'
-+ lt_prog_compiler_static_F77='-static'
-+ ;;
-+ ccc*)
-+ lt_prog_compiler_wl_F77='-Wl,'
-+ # All Alpha code is PIC.
-+ lt_prog_compiler_static_F77='-non_shared'
-+ ;;
-+ esac
-+ ;;
-+
-+ osf3* | osf4* | osf5*)
-+ lt_prog_compiler_wl_F77='-Wl,'
-+ # All OSF/1 code is PIC.
-+ lt_prog_compiler_static_F77='-non_shared'
-+ ;;
-+
-+ sco3.2v5*)
-+ lt_prog_compiler_pic_F77='-Kpic'
-+ lt_prog_compiler_static_F77='-dn'
-+ ;;
-+
-+ solaris*)
-+ lt_prog_compiler_wl_F77='-Wl,'
-+ lt_prog_compiler_pic_F77='-KPIC'
-+ lt_prog_compiler_static_F77='-Bstatic'
-+ ;;
-+
-+ sunos4*)
-+ lt_prog_compiler_wl_F77='-Qoption ld '
-+ lt_prog_compiler_pic_F77='-PIC'
-+ lt_prog_compiler_static_F77='-Bstatic'
-+ ;;
-+
-+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ lt_prog_compiler_wl_F77='-Wl,'
-+ lt_prog_compiler_pic_F77='-KPIC'
-+ lt_prog_compiler_static_F77='-Bstatic'
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ lt_prog_compiler_pic_F77='-Kconform_pic'
-+ lt_prog_compiler_static_F77='-Bstatic'
-+ fi
-+ ;;
-+
-+ uts4*)
-+ lt_prog_compiler_pic_F77='-pic'
-+ lt_prog_compiler_static_F77='-Bstatic'
-+ ;;
-+
-+ *)
-+ lt_prog_compiler_can_build_shared_F77=no
-+ ;;
-+ esac
-+ fi
-+
-+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
-+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
-+
-+#
-+# Check to make sure the PIC flag actually works.
-+#
-+if test -n "$lt_prog_compiler_pic_F77"; then
-+
-+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
-+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
-+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_prog_compiler_pic_works_F77=no
-+ ac_outfile=conftest.$ac_objext
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+ lt_compiler_flag="$lt_prog_compiler_pic_F77"
-+ # Insert the option either (1) after the last *FLAGS variable, or
-+ # (2) before a word containing "conftest.", or (3) at the end.
-+ # Note that $ac_compile itself does not contain backslashes and begins
-+ # with a dollar sign (not a hyphen), so the echo should work correctly.
-+ # The option is referenced via a variable to avoid confusing sed.
-+ lt_compile=`echo "$ac_compile" | $SED \
-+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-+ -e 's:$: $lt_compiler_flag:'`
-+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
-+ (eval "$lt_compile" 2>conftest.err)
-+ ac_status=$?
-+ cat conftest.err >&5
-+ echo "$as_me:__oline__: \$? = $ac_status" >&5
-+ if (exit $ac_status) && test -s "$ac_outfile"; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test ! -s conftest.err; then
-+ lt_prog_compiler_pic_works_F77=yes
-+ fi
-+ fi
-+ $rm conftest*
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
-+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
-+
-+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
-+ case $lt_prog_compiler_pic_F77 in
-+ "" | " "*) ;;
-+ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
-+ esac
-+else
-+ lt_prog_compiler_pic_F77=
-+ lt_prog_compiler_can_build_shared_F77=no
-+fi
-+
-+fi
-+case "$host_os" in
-+ # For platforms which do not support PIC, -DPIC is meaningless:
-+ *djgpp*)
-+ lt_prog_compiler_pic_F77=
-+ ;;
-+ *)
-+ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
-+ ;;
-+esac
-+
-+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
-+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_cv_prog_compiler_c_o_F77=no
-+ $rm -r conftest 2>/dev/null
-+ mkdir conftest
-+ cd conftest
-+ mkdir out
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+
-+ lt_compiler_flag="-o out/conftest2.$ac_objext"
-+ # Insert the option either (1) after the last *FLAGS variable, or
-+ # (2) before a word containing "conftest.", or (3) at the end.
-+ # Note that $ac_compile itself does not contain backslashes and begins
-+ # with a dollar sign (not a hyphen), so the echo should work correctly.
-+ lt_compile=`echo "$ac_compile" | $SED \
-+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-+ -e 's:$: $lt_compiler_flag:'`
-+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
-+ (eval "$lt_compile" 2>out/conftest.err)
-+ ac_status=$?
-+ cat out/conftest.err >&5
-+ echo "$as_me:__oline__: \$? = $ac_status" >&5
-+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
-+ then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test ! -s out/conftest.err; then
-+ lt_cv_prog_compiler_c_o_F77=yes
-+ fi
-+ fi
-+ chmod u+w .
-+ $rm conftest*
-+ # SGI C++ compiler will create directory out/ii_files/ for
-+ # template instantiation
-+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-+ $rm out/* && rmdir out
-+ cd ..
-+ rmdir conftest
-+ $rm conftest*
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
-+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
-+
-+
-+hard_links="nottested"
-+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
-+ # do not overwrite the value of need_locks provided by the user
-+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-+ hard_links=yes
-+ $rm conftest*
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ touch conftest.a
-+ ln conftest.a conftest.b 2>&5 || hard_links=no
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ echo "$as_me:$LINENO: result: $hard_links" >&5
-+echo "${ECHO_T}$hard_links" >&6
-+ if test "$hard_links" = no; then
-+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-+ need_locks=warn
-+ fi
-+else
-+ need_locks=no
-+fi
-+
-+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
-+
-+ runpath_var=
-+ allow_undefined_flag_F77=
-+ enable_shared_with_static_runtimes_F77=no
-+ archive_cmds_F77=
-+ archive_expsym_cmds_F77=
-+ old_archive_From_new_cmds_F77=
-+ old_archive_from_expsyms_cmds_F77=
-+ export_dynamic_flag_spec_F77=
-+ whole_archive_flag_spec_F77=
-+ thread_safe_flag_spec_F77=
-+ hardcode_libdir_flag_spec_F77=
-+ hardcode_libdir_flag_spec_ld_F77=
-+ hardcode_libdir_separator_F77=
-+ hardcode_direct_F77=no
-+ hardcode_minus_L_F77=no
-+ hardcode_shlibpath_var_F77=unsupported
-+ link_all_deplibs_F77=unknown
-+ hardcode_automatic_F77=no
-+ module_cmds_F77=
-+ module_expsym_cmds_F77=
-+ always_export_symbols_F77=no
-+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-+ # include_expsyms should be a list of space-separated symbols to be *always*
-+ # included in the symbol list
-+ include_expsyms_F77=
-+ # exclude_expsyms can be an extended regexp of symbols to exclude
-+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
-+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-+ # as well as any symbol that contains `d'.
-+ exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
-+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-+ # platforms (ab)use it in PIC code, but their linkers get confused if
-+ # the symbol is explicitly referenced. Since portable code cannot
-+ # rely on this symbol name, it's probably fine to never include it in
-+ # preloaded symbol tables.
-+ extract_expsyms_cmds=
-+
-+ case $host_os in
-+ cygwin* | mingw* | pw32*)
-+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ if test "$GCC" != yes; then
-+ with_gnu_ld=no
-+ fi
-+ ;;
-+ openbsd*)
-+ with_gnu_ld=no
-+ ;;
-+ esac
-+
-+ ld_shlibs_F77=yes
-+ if test "$with_gnu_ld" = yes; then
-+ # If archive_cmds runs LD, not CC, wlarc should be empty
-+ wlarc='${wl}'
-+
-+ # See if GNU ld supports shared libraries.
-+ case $host_os in
-+ aix3* | aix4* | aix5*)
-+ # On AIX/PPC, the GNU linker is very broken
-+ if test "$host_cpu" != ia64; then
-+ ld_shlibs_F77=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-+*** to be unable to reliably create shared libraries on AIX.
-+*** Therefore, libtool is disabling shared libraries support. If you
-+*** really care for shared libraries, you may want to modify your PATH
-+*** so that a non-GNU linker is found, and then restart.
-+
-+EOF
-+ fi
-+ ;;
-+
-+ amigaos*)
-+ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec_F77='-L$libdir'
-+ hardcode_minus_L_F77=yes
-+
-+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-+ # that the semantics of dynamic libraries on AmigaOS, at least up
-+ # to version 4, is to share data among multiple programs linked
-+ # with the same dynamic library. Since this doesn't match the
-+ # behavior of shared libraries on other platforms, we can't use
-+ # them.
-+ ld_shlibs_F77=no
-+ ;;
-+
-+ beos*)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ allow_undefined_flag_F77=unsupported
-+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-+ # support --undefined. This deserves some investigation. FIXME
-+ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ else
-+ ld_shlibs_F77=no
-+ fi
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
-+ # as there is no search path for DLLs.
-+ hardcode_libdir_flag_spec_F77='-L$libdir'
-+ allow_undefined_flag_F77=unsupported
-+ always_export_symbols_F77=no
-+ enable_shared_with_static_runtimes_F77=yes
-+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
-+
-+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-+ # If the export-symbols file already is a .def file (1st line
-+ # is EXPORTS), use it as is; otherwise, prepend...
-+ archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname.def;
-+ else
-+ echo EXPORTS > $output_objdir/$soname.def;
-+ cat $export_symbols >> $output_objdir/$soname.def;
-+ fi~
-+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ netbsd* | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-+ wlarc=
-+ else
-+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ fi
-+ ;;
-+
-+ solaris* | sysv5*)
-+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-+ ld_shlibs_F77=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-+*** create shared libraries on Solaris systems. Therefore, libtool
-+*** is disabling shared libraries support. We urge you to upgrade GNU
-+*** binutils to release 2.9.1 or newer. Another option is to modify
-+*** your PATH or compiler configuration so that the native linker is
-+*** used, and then restart.
-+
-+EOF
-+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs_F77=no
-+ fi
-+ ;;
-+
-+ sunos4*)
-+ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ wlarc=
-+ hardcode_direct_F77=yes
-+ hardcode_shlibpath_var_F77=no
-+ ;;
-+
-+ linux*)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_cmds_F77="$tmp_archive_cmds"
-+ supports_anon_versioning=no
-+ case `$LD -v 2>/dev/null` in
-+ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-+ *\ 2.11.*) ;; # other 2.11 versions
-+ *) supports_anon_versioning=yes ;;
-+ esac
-+ if test $supports_anon_versioning = yes; then
-+ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
-+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-+$echo "local: *; };" >> $output_objdir/$libname.ver~
-+ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-+ else
-+ archive_expsym_cmds_F77="$tmp_archive_cmds"
-+ fi
-+ link_all_deplibs_F77=no
-+ else
-+ ld_shlibs_F77=no
-+ fi
-+ ;;
-+
-+ *)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs_F77=no
-+ fi
-+ ;;
-+ esac
-+
-+ if test "$ld_shlibs_F77" = yes; then
-+ runpath_var=LD_RUN_PATH
-+ hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
-+ export_dynamic_flag_spec_F77='${wl}--export-dynamic'
-+ # ancient GNU ld didn't support --whole-archive et. al.
-+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-+ whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+ else
-+ whole_archive_flag_spec_F77=
-+ fi
-+ fi
-+ else
-+ # PORTME fill in a description of your system's linker (not GNU ld)
-+ case $host_os in
-+ aix3*)
-+ allow_undefined_flag_F77=unsupported
-+ always_export_symbols_F77=yes
-+ archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-+ # Note: this linker hardcodes the directories in LIBPATH if there
-+ # are no directories specified by -L.
-+ hardcode_minus_L_F77=yes
-+ if test "$GCC" = yes && test -z "$link_static_flag"; then
-+ # Neither direct hardcoding nor static linking is supported with a
-+ # broken collect2.
-+ hardcode_direct_F77=unsupported
-+ fi
-+ ;;
-+
-+ aix4* | aix5*)
-+ if test "$host_cpu" = ia64; then
-+ # On IA64, the linker does run time linking by default, so we don't
-+ # have to do anything special.
-+ aix_use_runtimelinking=no
-+ exp_sym_flag='-Bexport'
-+ no_entry_flag=""
-+ else
-+ # If we're using GNU nm, then we don't want the "-C" option.
-+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
-+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-+ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-+ else
-+ export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-+ fi
-+ aix_use_runtimelinking=no
-+
-+ # Test if we are trying to use run time linking or normal
-+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-+ # need to do runtime linking.
-+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-+ for ld_flag in $LDFLAGS; do
-+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-+ aix_use_runtimelinking=yes
-+ break
-+ fi
-+ done
-+ esac
-+
-+ exp_sym_flag='-bexport'
-+ no_entry_flag='-bnoentry'
-+ fi
-+
-+ # When large executables or shared objects are built, AIX ld can
-+ # have problems creating the table of contents. If linking a library
-+ # or program results in "error TOC overflow" add -mminimal-toc to
-+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-+
-+ archive_cmds_F77=''
-+ hardcode_direct_F77=yes
-+ hardcode_libdir_separator_F77=':'
-+ link_all_deplibs_F77=yes
-+
-+ if test "$GCC" = yes; then
-+ case $host_os in aix4.012|aix4.012.*)
-+ # We only want to do this on AIX 4.2 and lower, the check
-+ # below for broken collect2 doesn't work under 4.3+
-+ collect2name=`${CC} -print-prog-name=collect2`
-+ if test -f "$collect2name" && \
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ then
-+ # We have reworked collect2
-+ hardcode_direct_F77=yes
-+ else
-+ # We have old collect2
-+ hardcode_direct_F77=unsupported
-+ # It fails to find uninstalled libraries when the uninstalled
-+ # path is not listed in the libpath. Setting hardcode_minus_L
-+ # to unsupported forces relinking
-+ hardcode_minus_L_F77=yes
-+ hardcode_libdir_flag_spec_F77='-L$libdir'
-+ hardcode_libdir_separator_F77=
-+ fi
-+ esac
-+ shared_flag='-shared'
-+ else
-+ # not using gcc
-+ if test "$host_cpu" = ia64; then
-+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-+ # chokes on -Wl,-G. The following line is correct:
-+ shared_flag='-G'
-+ else
-+ if test "$aix_use_runtimelinking" = yes; then
-+ shared_flag='${wl}-G'
-+ else
-+ shared_flag='${wl}-bM:SRE'
-+ fi
-+ fi
-+ fi
-+
-+ # It seems that -bexpall does not export symbols beginning with
-+ # underscore (_), so it is better to generate a list of symbols to export.
-+ always_export_symbols_F77=yes
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # Warning - without using the other runtime loading flags (-brtl),
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag_F77='-berok'
-+ # Determine the default libpath from the value encoded in an empty executable.
-+ cat >conftest.$ac_ext <<_ACEOF
-+ program main
-+
-+ end
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+
-+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`
-+# Check for a 64-bit object if we didn't find anything.
-+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`; fi
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+
-+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-+ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-+ else
-+ if test "$host_cpu" = ia64; then
-+ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
-+ allow_undefined_flag_F77="-z nodefs"
-+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ else
-+ # Determine the default libpath from the value encoded in an empty executable.
-+ cat >conftest.$ac_ext <<_ACEOF
-+ program main
-+
-+ end
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+
-+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`
-+# Check for a 64-bit object if we didn't find anything.
-+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`; fi
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+
-+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-+ # Warning - without using the other run time loading flags,
-+ # -berok will link without error, but may produce a broken library.
-+ no_undefined_flag_F77=' ${wl}-bernotok'
-+ allow_undefined_flag_F77=' ${wl}-berok'
-+ # -bexpall does not export symbols beginning with underscore (_)
-+ always_export_symbols_F77=yes
-+ # Exported symbols can be pulled into shared objects from archives
-+ whole_archive_flag_spec_F77=' '
-+ archive_cmds_need_lc_F77=yes
-+ # This is similar to how AIX traditionally builds it's shared libraries.
-+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-+ fi
-+ fi
-+ ;;
-+
-+ amigaos*)
-+ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec_F77='-L$libdir'
-+ hardcode_minus_L_F77=yes
-+ # see comment about different semantics on the GNU ld section
-+ ld_shlibs_F77=no
-+ ;;
-+
-+ bsdi4*)
-+ export_dynamic_flag_spec_F77=-rdynamic
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec_F77=' '
-+ allow_undefined_flag_F77=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_From_new_cmds_F77='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
-+ fix_srcfile_path='`cygpath -w "$srcfile"`'
-+ enable_shared_with_static_runtimes_F77=yes
-+ ;;
-+
-+ darwin* | rhapsody*)
-+ if test "$GXX" = yes ; then
-+ archive_cmds_need_lc_F77=no
-+ case "$host_os" in
-+ rhapsody* | darwin1.[012])
-+ allow_undefined_flag_F77='-undefined suppress'
-+ ;;
-+ *) # Darwin 1.3 on
-+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-+ allow_undefined_flag_F77='-flat_namespace -undefined suppress'
-+ else
-+ case ${MACOSX_DEPLOYMENT_TARGET} in
-+ 10.[012])
-+ allow_undefined_flag_F77='-flat_namespace -undefined suppress'
-+ ;;
-+ 10.*)
-+ allow_undefined_flag_F77='-undefined dynamic_lookup'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+ esac
-+ lt_int_apple_cc_single_mod=no
-+ output_verbose_link_cmd='echo'
-+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
-+ lt_int_apple_cc_single_mod=yes
-+ fi
-+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-+ archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-+ else
-+ archive_cmds_F77='$CC -r ${wl}-bind_at_load -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'
-+ fi
-+ module_cmds_F77='$CC ${wl}-bind_at_load $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
-+ archive_expsym_cmds_F77='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}'
-+ else
-+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
-+ fi
-+ module_expsym_cmds_F77='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}'
-+ hardcode_direct_F77=no
-+ hardcode_automatic_F77=yes
-+ hardcode_shlibpath_var_F77=unsupported
-+ whole_archive_flag_spec_F77='-all_load $convenience'
-+ link_all_deplibs_F77=yes
-+ else
-+ ld_shlibs_F77=no
-+ fi
-+ ;;
-+
-+ dgux*)
-+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec_F77='-L$libdir'
-+ hardcode_shlibpath_var_F77=no
-+ ;;
-+
-+ freebsd1*)
-+ ld_shlibs_F77=no
-+ ;;
-+
-+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-+ # support. Future versions do this automatically, but an explicit c++rt0.o
-+ # does not break anything, and helps significantly (at the cost of a little
-+ # extra space).
-+ freebsd2.2*)
-+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-+ hardcode_libdir_flag_spec_F77='-R$libdir'
-+ hardcode_direct_F77=yes
-+ hardcode_shlibpath_var_F77=no
-+ ;;
-+
-+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-+ freebsd2*)
-+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct_F77=yes
-+ hardcode_minus_L_F77=yes
-+ hardcode_shlibpath_var_F77=no
-+ ;;
-+
-+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-+ freebsd* | kfreebsd*-gnu)
-+ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec_F77='-R$libdir'
-+ hardcode_direct_F77=yes
-+ hardcode_shlibpath_var_F77=no
-+ ;;
-+
-+ hpux9*)
-+ if test "$GCC" = yes; then
-+ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ else
-+ archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ fi
-+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator_F77=:
-+ hardcode_direct_F77=yes
-+
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ hardcode_minus_L_F77=yes
-+ export_dynamic_flag_spec_F77='${wl}-E'
-+ ;;
-+
-+ hpux10* | hpux11*)
-+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ ;;
-+ *)
-+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ ;;
-+ esac
-+ else
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ ;;
-+ *)
-+ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-+ ;;
-+ esac
-+ fi
-+ if test "$with_gnu_ld" = no; then
-+ case "$host_cpu" in
-+ hppa*64*)
-+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_flag_spec_ld_F77='+b $libdir'
-+ hardcode_libdir_separator_F77=:
-+ hardcode_direct_F77=no
-+ hardcode_shlibpath_var_F77=no
-+ ;;
-+ ia64*)
-+ hardcode_libdir_flag_spec_F77='-L$libdir'
-+ hardcode_direct_F77=no
-+ hardcode_shlibpath_var_F77=no
-+
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ hardcode_minus_L_F77=yes
-+ ;;
-+ *)
-+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator_F77=:
-+ hardcode_direct_F77=yes
-+ export_dynamic_flag_spec_F77='${wl}-E'
-+
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ hardcode_minus_L_F77=yes
-+ ;;
-+ esac
-+ fi
-+ ;;
-+
-+ irix5* | irix6* | nonstopux*)
-+ if test "$GCC" = yes; then
-+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ else
-+ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
-+ fi
-+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator_F77=:
-+ link_all_deplibs_F77=yes
-+ ;;
-+
-+ netbsd* | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-+ else
-+ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-+ fi
-+ hardcode_libdir_flag_spec_F77='-R$libdir'
-+ hardcode_direct_F77=yes
-+ hardcode_shlibpath_var_F77=no
-+ ;;
-+
-+ newsos6)
-+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct_F77=yes
-+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator_F77=:
-+ hardcode_shlibpath_var_F77=no
-+ ;;
-+
-+ openbsd*)
-+ hardcode_direct_F77=yes
-+ hardcode_shlibpath_var_F77=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-+ export_dynamic_flag_spec_F77='${wl}-E'
-+ else
-+ case $host_os in
-+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec_F77='-R$libdir'
-+ ;;
-+ *)
-+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+
-+ os2*)
-+ hardcode_libdir_flag_spec_F77='-L$libdir'
-+ hardcode_minus_L_F77=yes
-+ allow_undefined_flag_F77=unsupported
-+ archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-+ old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-+ ;;
-+
-+ osf3*)
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ else
-+ allow_undefined_flag_F77=' -expect_unresolved \*'
-+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ fi
-+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator_F77=:
-+ ;;
-+
-+ osf4* | osf5*) # as osf3* with the addition of -msym flag
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-+ else
-+ allow_undefined_flag_F77=' -expect_unresolved \*'
-+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
-+
-+ # Both c and cxx compiler support -rpath directly
-+ hardcode_libdir_flag_spec_F77='-rpath $libdir'
-+ fi
-+ hardcode_libdir_separator_F77=:
-+ ;;
-+
-+ sco3.2v5*)
-+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var_F77=no
-+ export_dynamic_flag_spec_F77='${wl}-Bexport'
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ ;;
-+
-+ solaris*)
-+ no_undefined_flag_F77=' -z text'
-+ if test "$GCC" = yes; then
-+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
-+ else
-+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ fi
-+ hardcode_libdir_flag_spec_F77='-R$libdir'
-+ hardcode_shlibpath_var_F77=no
-+ case $host_os in
-+ solaris2.[0-5] | solaris2.[0-5].*) ;;
-+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
-+ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
-+ esac
-+ link_all_deplibs_F77=yes
-+ ;;
-+
-+ sunos4*)
-+ if test "x$host_vendor" = xsequent; then
-+ # Use $CC to link under sequent, because it throws in some extra .o
-+ # files that make .init and .fini sections work.
-+ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-+ fi
-+ hardcode_libdir_flag_spec_F77='-L$libdir'
-+ hardcode_direct_F77=yes
-+ hardcode_minus_L_F77=yes
-+ hardcode_shlibpath_var_F77=no
-+ ;;
-+
-+ sysv4)
-+ case $host_vendor in
-+ sni)
-+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct_F77=yes # is this really true???
-+ ;;
-+ siemens)
-+ ## LD is ld it makes a PLAMLIB
-+ ## CC just makes a GrossModule.
-+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ reload_cmds_F77='$CC -r -o $output$reload_objs'
-+ hardcode_direct_F77=no
-+ ;;
-+ motorola)
-+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
-+ ;;
-+ esac
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var_F77=no
-+ ;;
-+
-+ sysv4.3*)
-+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var_F77=no
-+ export_dynamic_flag_spec_F77='-Bexport'
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var_F77=no
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ ld_shlibs_F77=yes
-+ fi
-+ ;;
-+
-+ sysv4.2uw2*)
-+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct_F77=yes
-+ hardcode_minus_L_F77=no
-+ hardcode_shlibpath_var_F77=no
-+ hardcode_runpath_var=yes
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+
-+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
-+ no_undefined_flag_F77='${wl}-z ${wl}text'
-+ if test "$GCC" = yes; then
-+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ fi
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var_F77=no
-+ ;;
-+
-+ sysv5*)
-+ no_undefined_flag_F77=' -z text'
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ hardcode_libdir_flag_spec_F77=
-+ hardcode_shlibpath_var_F77=no
-+ runpath_var='LD_RUN_PATH'
-+ ;;
-+
-+ uts4*)
-+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec_F77='-L$libdir'
-+ hardcode_shlibpath_var_F77=no
-+ ;;
-+
-+ *)
-+ ld_shlibs_F77=no
-+ ;;
-+ esac
-+ fi
-+
-+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
-+echo "${ECHO_T}$ld_shlibs_F77" >&6
-+test "$ld_shlibs_F77" = no && can_build_shared=no
-+
-+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-+if test "$GCC" = yes; then
-+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-+fi
-+
-+#
-+# Do we need to explicitly link libc?
-+#
-+case "x$archive_cmds_need_lc_F77" in
-+x|xyes)
-+ # Assume -lc should be added
-+ archive_cmds_need_lc_F77=yes
-+
-+ if test "$enable_shared" = yes && test "$GCC" = yes; then
-+ case $archive_cmds_F77 in
-+ *'~'*)
-+ # FIXME: we may have to deal with multi-command sequences.
-+ ;;
-+ '$CC '*)
-+ # Test whether the compiler implicitly links with -lc since on some
-+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
-+ # to ld, don't add -lc before -lgcc.
-+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-+ $rm conftest*
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+
-+ 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); } 2>conftest.err; then
-+ soname=conftest
-+ lib=conftest
-+ libobjs=conftest.$ac_objext
-+ deplibs=
-+ wl=$lt_prog_compiler_wl_F77
-+ compiler_flags=-v
-+ linker_flags=-v
-+ verstring=
-+ output_objdir=.
-+ libname=conftest
-+ lt_save_allow_undefined_flag=$allow_undefined_flag_F77
-+ allow_undefined_flag_F77=
-+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-+ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+ then
-+ archive_cmds_need_lc_F77=no
-+ else
-+ archive_cmds_need_lc_F77=yes
-+ fi
-+ allow_undefined_flag_F77=$lt_save_allow_undefined_flag
-+ else
-+ cat conftest.err 1>&5
-+ fi
-+ $rm conftest*
-+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
-+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
-+ ;;
-+ esac
-+ fi
-+ ;;
-+esac
-+
-+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
-+library_names_spec=
-+libname_spec='lib$name'
-+soname_spec=
-+shrext_cmds=".so"
-+postinstall_cmds=
-+postuninstall_cmds=
-+finish_cmds=
-+finish_eval=
-+shlibpath_var=
-+shlibpath_overrides_runpath=unknown
-+version_type=none
-+dynamic_linker="$host_os ld.so"
-+sys_lib_dlsearch_path_spec="/lib /usr/lib"
-+if test "$GCC" = yes; then
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-+ # if the path contains ";" then we assume it to be the separator
-+ # otherwise default to the standard path separator (i.e. ":") - it is
-+ # assumed that no part of a normal pathname contains ";" but that should
-+ # okay in the real world where ";" in dirpaths is itself problematic.
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+else
-+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+fi
-+need_lib_prefix=unknown
-+hardcode_into_libs=no
-+
-+# when you set need_version to no, make sure it does not cause -set_version
-+# flags to be left without arguments
-+need_version=unknown
-+
-+case $host_os in
-+aix3*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-+ shlibpath_var=LIBPATH
-+
-+ # AIX 3 has no versioning support, so we append a major version to the name.
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ ;;
-+
-+aix4* | aix5*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ hardcode_into_libs=yes
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 supports IA64
-+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ else
-+ # With GCC up to 2.95.x, collect2 would create an import file
-+ # for dependence libraries. The import file would start with
-+ # the line `#! .'. This would cause the generated library to
-+ # depend on `.', always an invalid library. This was fixed in
-+ # development snapshots of GCC prior to 3.0.
-+ case $host_os in
-+ aix4 | aix4.[01] | aix4.[01].*)
-+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-+ echo ' yes '
-+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-+ :
-+ else
-+ can_build_shared=no
-+ fi
-+ ;;
-+ esac
-+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-+ # soname into executable. Probably we can add versioning support to
-+ # collect2, so additional links can be useful in future.
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-+ # instead of lib<name>.a to let people know that these are not
-+ # typical AIX shared libraries.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ else
-+ # We preserve .a as extension for shared libraries through AIX4.2
-+ # and later when we are not doing run time linking.
-+ library_names_spec='${libname}${release}.a $libname.a'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ fi
-+ shlibpath_var=LIBPATH
-+ fi
-+ ;;
-+
-+amigaos*)
-+ library_names_spec='$libname.ixlibrary $libname.a'
-+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
-+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-+ ;;
-+
-+beos*)
-+ library_names_spec='${libname}${shared_ext}'
-+ dynamic_linker="$host_os ld.so"
-+ shlibpath_var=LIBRARY_PATH
-+ ;;
-+
-+bsdi4*)
-+ version_type=linux
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-+ # the default ld.so.conf also contains /usr/contrib/lib and
-+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-+ # libtool to hard-code these into programs
-+ ;;
-+
-+cygwin* | mingw* | pw32*)
-+ version_type=windows
-+ shrext_cmds=".dll"
-+ need_version=no
-+ need_lib_prefix=no
-+
-+ case $GCC,$host_os in
-+ yes,cygwin* | yes,mingw* | yes,pw32*)
-+ library_names_spec='$libname.dll.a'
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $rm \$dlpath'
-+ shlibpath_overrides_runpath=yes
-+
-+ case $host_os in
-+ cygwin*)
-+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-+ ;;
-+ mingw*)
-+ # MinGW DLLs use traditional 'lib' prefix
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
-+ # It is most probably a Windows format PATH printed by
-+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
-+ # path with ; separators, and with drive letters. We can handle the
-+ # drive letters (cygwin fileutils understands them), so leave them,
-+ # especially as we might pass files found there to a mingw objdump,
-+ # which wouldn't understand a cygwinified path. Ahh.
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+ ;;
-+ pw32*)
-+ # pw32 DLLs use 'pw' prefix rather than 'lib'
-+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
-+ ;;
-+ esac
-+ ;;
-+
-+ *)
-+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ ;;
-+ esac
-+ dynamic_linker='Win32 ld.exe'
-+ # FIXME: first we should search . and the directory the executable is in
-+ shlibpath_var=PATH
-+ ;;
-+
-+darwin* | rhapsody*)
-+ dynamic_linker="$host_os dyld"
-+ version_type=darwin
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-+ soname_spec='${libname}${release}${major}$shared_ext'
-+ shlibpath_overrides_runpath=yes
-+ shlibpath_var=DYLD_LIBRARY_PATH
-+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
-+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-+ if test "$GCC" = yes; then
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-+ else
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-+ fi
-+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-+ ;;
-+
-+dgux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+freebsd1*)
-+ dynamic_linker=no
-+ ;;
-+
-+kfreebsd*-gnu)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU ld.so'
-+ ;;
-+
-+freebsd*)
-+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
-+ version_type=freebsd-$objformat
-+ case $version_type in
-+ freebsd-elf*)
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-+ need_version=no
-+ need_lib_prefix=no
-+ ;;
-+ freebsd-*)
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-+ need_version=yes
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_os in
-+ freebsd2*)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ freebsd3.01* | freebsdelf3.01*)
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ ;;
-+ *) # from 3.2 on
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ ;;
-+ esac
-+ ;;
-+
-+gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ hardcode_into_libs=yes
-+ ;;
-+
-+hpux9* | hpux10* | hpux11*)
-+ # Give a soname corresponding to the major version so that dld.sl refuses to
-+ # link against other versions.
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ case "$host_cpu" in
-+ ia64*)
-+ shrext_cmds='.so'
-+ hardcode_into_libs=yes
-+ dynamic_linker="$host_os dld.so"
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ if test "X$HPUX_IA64_MODE" = X32; then
-+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-+ else
-+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-+ fi
-+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-+ ;;
-+ hppa*64*)
-+ shrext_cmds='.sl'
-+ hardcode_into_libs=yes
-+ dynamic_linker="$host_os dld.sl"
-+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-+ ;;
-+ *)
-+ shrext_cmds='.sl'
-+ dynamic_linker="$host_os dld.sl"
-+ shlibpath_var=SHLIB_PATH
-+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ ;;
-+ esac
-+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
-+ postinstall_cmds='chmod 555 $lib'
-+ ;;
-+
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ nonstopux*) version_type=nonstopux ;;
-+ *)
-+ if test "$lt_cv_prog_gnu_ld" = yes; then
-+ version_type=linux
-+ else
-+ version_type=irix
-+ fi ;;
-+ esac
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-+ case $host_os in
-+ irix5* | nonstopux*)
-+ libsuff= shlibsuff=
-+ ;;
-+ *)
-+ case $LD in # libtool.m4 will add one of these switches to LD
-+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-+ libsuff= shlibsuff= libmagic=32-bit;;
-+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-+ libsuff=32 shlibsuff=N32 libmagic=N32;;
-+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
-+ *) libsuff= shlibsuff= libmagic=never-match;;
-+ esac
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-+ hardcode_into_libs=yes
-+ ;;
-+
-+# No shared lib support for Linux oldld, aout, or coff.
-+linux*oldld* | linux*aout* | linux*coff*)
-+ dynamic_linker=no
-+ ;;
-+
-+# This must be Linux ELF.
-+linux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ # This implies no fast_install, which is unacceptable.
-+ # Some rework will be needed to allow for fast_install
-+ # before this can be enabled.
-+ hardcode_into_libs=yes
-+
-+ # Append ld.so.conf contents to the search path
-+ if test -f /etc/ld.so.conf; then
-+ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
-+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-+ fi
-+
-+ # We used to test for /lib/ld.so.1 and disable shared libraries on
-+ # powerpc, because MkLinux only supported shared libraries with the
-+ # GNU dynamic linker. Since this was broken with cross compilers,
-+ # most powerpc-linux boxes support dynamic linking these days and
-+ # people can always --disable-shared, the test was removed, and we
-+ # assume the GNU/Linux dynamic linker is in use.
-+ dynamic_linker='GNU/Linux ld.so'
-+ ;;
-+
-+knetbsd*-gnu)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU ld.so'
-+ ;;
-+
-+netbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ dynamic_linker='NetBSD (a.out) ld.so'
-+ else
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ dynamic_linker='NetBSD ld.elf_so'
-+ fi
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ ;;
-+
-+newsos6)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+
-+nto-qnx*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+
-+openbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=yes
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ case $host_os in
-+ openbsd2.[89] | openbsd2.[89].*)
-+ shlibpath_overrides_runpath=no
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ esac
-+ else
-+ shlibpath_overrides_runpath=yes
-+ fi
-+ ;;
-+
-+os2*)
-+ libname_spec='$name'
-+ shrext_cmds=".dll"
-+ need_lib_prefix=no
-+ library_names_spec='$libname${shared_ext} $libname.a'
-+ dynamic_linker='OS/2 ld.exe'
-+ shlibpath_var=LIBPATH
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ version_type=osf
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-+ ;;
-+
-+sco3.2v5*)
-+ version_type=osf
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+solaris*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ # ldd complains unless libraries are executable
-+ postinstall_cmds='chmod +x $lib'
-+ ;;
-+
-+sunos4*)
-+ version_type=sunos
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ if test "$with_gnu_ld" = yes; then
-+ need_lib_prefix=no
-+ fi
-+ need_version=yes
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_vendor in
-+ sni)
-+ shlibpath_overrides_runpath=no
-+ need_lib_prefix=no
-+ export_dynamic_flag_spec='${wl}-Blargedynsym'
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+ siemens)
-+ need_lib_prefix=no
-+ ;;
-+ motorola)
-+ need_lib_prefix=no
-+ need_version=no
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-+ ;;
-+ esac
-+ ;;
-+
-+sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ version_type=linux
-+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-+ soname_spec='$libname${shared_ext}.$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ fi
-+ ;;
-+
-+uts4*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+*)
-+ dynamic_linker=no
-+ ;;
-+esac
-+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-+echo "${ECHO_T}$dynamic_linker" >&6
-+test "$dynamic_linker" = no && can_build_shared=no
-+
-+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
-+hardcode_action_F77=
-+if test -n "$hardcode_libdir_flag_spec_F77" || \
-+ test -n "$runpath_var F77" || \
-+ test "X$hardcode_automatic_F77"="Xyes" ; then
-+
-+ # We can hardcode non-existant directories.
-+ if test "$hardcode_direct_F77" != no &&
-+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
-+ # have to relink, otherwise we might link with an installed library
-+ # when we should be linking with a yet-to-be-installed one
-+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
-+ test "$hardcode_minus_L_F77" != no; then
-+ # Linking always hardcodes the temporary library directory.
-+ hardcode_action_F77=relink
-+ else
-+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
-+ hardcode_action_F77=immediate
-+ fi
-+else
-+ # We cannot hardcode anything, or else we can only hardcode existing
-+ # directories.
-+ hardcode_action_F77=unsupported
-+fi
-+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
-+echo "${ECHO_T}$hardcode_action_F77" >&6
-+
-+if test "$hardcode_action_F77" = relink; then
-+ # Fast installation is not supported
-+ enable_fast_install=no
-+elif test "$shlibpath_overrides_runpath" = yes ||
-+ test "$enable_shared" = no; then
-+ # Fast installation is not necessary
-+ enable_fast_install=needless
-+fi
-+
-+striplib=
-+old_striplib=
-+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
-+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+else
-+# FIXME - insert some real tests, host_os isn't really good enough
-+ case $host_os in
-+ darwin*)
-+ if test -n "$STRIP" ; then
-+ striplib="$STRIP -x"
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+ ;;
-+ *)
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+ ;;
-+ esac
-+fi
-+
-+
-+
-+# The else clause should only fire when bootstrapping the
-+# libtool distribution, otherwise you forgot to ship ltmain.sh
-+# with your package, and you will get complaints that there are
-+# no rules to generate ltmain.sh.
-+if test -f "$ltmain"; then
-+ # See if we are running on zsh, and set the options which allow our commands through
-+ # without removal of \ escapes.
-+ if test -n "${ZSH_VERSION+set}" ; then
-+ setopt NO_GLOB_SUBST
-+ fi
-+ # Now quote all the things that may contain metacharacters while being
-+ # careful not to overquote the AC_SUBSTed values. We take copies of the
-+ # variables and quote the copies for generation of the libtool script.
-+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
-+ SED SHELL STRIP \
-+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-+ deplibs_check_method reload_flag reload_cmds need_locks \
-+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-+ lt_cv_sys_global_symbol_to_c_name_address \
-+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-+ old_postinstall_cmds old_postuninstall_cmds \
-+ compiler_F77 \
-+ CC_F77 \
-+ LD_F77 \
-+ lt_prog_compiler_wl_F77 \
-+ lt_prog_compiler_pic_F77 \
-+ lt_prog_compiler_static_F77 \
-+ lt_prog_compiler_no_builtin_flag_F77 \
-+ export_dynamic_flag_spec_F77 \
-+ thread_safe_flag_spec_F77 \
-+ whole_archive_flag_spec_F77 \
-+ enable_shared_with_static_runtimes_F77 \
-+ old_archive_cmds_F77 \
-+ old_archive_from_new_cmds_F77 \
-+ predep_objects_F77 \
-+ postdep_objects_F77 \
-+ predeps_F77 \
-+ postdeps_F77 \
-+ compiler_lib_search_path_F77 \
-+ archive_cmds_F77 \
-+ archive_expsym_cmds_F77 \
-+ postinstall_cmds_F77 \
-+ postuninstall_cmds_F77 \
-+ old_archive_from_expsyms_cmds_F77 \
-+ allow_undefined_flag_F77 \
-+ no_undefined_flag_F77 \
-+ export_symbols_cmds_F77 \
-+ hardcode_libdir_flag_spec_F77 \
-+ hardcode_libdir_flag_spec_ld_F77 \
-+ hardcode_libdir_separator_F77 \
-+ hardcode_automatic_F77 \
-+ module_cmds_F77 \
-+ module_expsym_cmds_F77 \
-+ lt_cv_prog_compiler_c_o_F77 \
-+ exclude_expsyms_F77 \
-+ include_expsyms_F77; do
-+
-+ case $var in
-+ old_archive_cmds_F77 | \
-+ old_archive_from_new_cmds_F77 | \
-+ archive_cmds_F77 | \
-+ archive_expsym_cmds_F77 | \
-+ module_cmds_F77 | \
-+ module_expsym_cmds_F77 | \
-+ old_archive_from_expsyms_cmds_F77 | \
-+ export_symbols_cmds_F77 | \
-+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
-+ postinstall_cmds | postuninstall_cmds | \
-+ old_postinstall_cmds | old_postuninstall_cmds | \
-+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-+ # Double-quote double-evaled strings.
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-+ ;;
-+ *)
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-+ ;;
-+ esac
-+ done
-+
-+ case $lt_echo in
-+ *'\$0 --fallback-echo"')
-+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-+ ;;
-+ esac
-+
-+cfgfile="$ofile"
-+
-+ cat <<__EOF__ >> "$cfgfile"
-+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
-+
-+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-+
-+# Shell to use when invoking shell scripts.
-+SHELL=$lt_SHELL
-+
-+# Whether or not to build shared libraries.
-+build_libtool_libs=$enable_shared
-+
-+# Whether or not to build static libraries.
-+build_old_libs=$enable_static
-+
-+# Whether or not to add -lc for building shared libraries.
-+build_libtool_need_lc=$archive_cmds_need_lc_F77
-+
-+# Whether or not to disallow shared libs when runtime libs are static
-+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
-+
-+# Whether or not to optimize for fast installation.
-+fast_install=$enable_fast_install
-+
-+# The host system.
-+host_alias=$host_alias
-+host=$host
-+
-+# An echo program that does not interpret backslashes.
-+echo=$lt_echo
-+
-+# The archiver.
-+AR=$lt_AR
-+AR_FLAGS=$lt_AR_FLAGS
-+
-+# A C compiler.
-+LTCC=$lt_LTCC
-+
-+# A language-specific compiler.
-+CC=$lt_compiler_F77
-+
-+# Is the compiler the GNU C compiler?
-+with_gcc=$GCC_F77
-+
-+# An ERE matcher.
-+EGREP=$lt_EGREP
-+
-+# The linker used to build libraries.
-+LD=$lt_LD_F77
-+
-+# Whether we need hard or soft links.
-+LN_S=$lt_LN_S
-+
-+# A BSD-compatible nm program.
-+NM=$lt_NM
-+
-+# A symbol stripping program
-+STRIP=$lt_STRIP
-+
-+# Used to examine libraries when file_magic_cmd begins "file"
-+MAGIC_CMD=$MAGIC_CMD
-+
-+# Used on cygwin: DLL creation program.
-+DLLTOOL="$DLLTOOL"
-+
-+# Used on cygwin: object dumper.
-+OBJDUMP="$OBJDUMP"
-+
-+# Used on cygwin: assembler.
-+AS="$AS"
-+
-+# The name of the directory that contains temporary libtool files.
-+objdir=$objdir
-+
-+# How to create reloadable object files.
-+reload_flag=$lt_reload_flag
-+reload_cmds=$lt_reload_cmds
-+
-+# How to pass a linker flag through the compiler.
-+wl=$lt_lt_prog_compiler_wl_F77
-+
-+# Object file suffix (normally "o").
-+objext="$ac_objext"
-+
-+# Old archive suffix (normally "a").
-+libext="$libext"
-+
-+# Shared library suffix (normally ".so").
-+shrext_cmds='$shrext_cmds'
-+
-+# Executable file suffix (normally "").
-+exeext="$exeext"
-+
-+# Additional compiler flags for building library objects.
-+pic_flag=$lt_lt_prog_compiler_pic_F77
-+pic_mode=$pic_mode
-+
-+# What is the maximum length of a command?
-+max_cmd_len=$lt_cv_sys_max_cmd_len
-+
-+# Does compiler simultaneously support -c and -o options?
-+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
-+
-+# Must we lock files when doing compilation ?
-+need_locks=$lt_need_locks
-+
-+# Do we need the lib prefix for modules?
-+need_lib_prefix=$need_lib_prefix
-+
-+# Do we need a version for libraries?
-+need_version=$need_version
-+
-+# Whether dlopen is supported.
-+dlopen_support=$enable_dlopen
-+
-+# Whether dlopen of programs is supported.
-+dlopen_self=$enable_dlopen_self
-+
-+# Whether dlopen of statically linked programs is supported.
-+dlopen_self_static=$enable_dlopen_self_static
-+
-+# Compiler flag to prevent dynamic linking.
-+link_static_flag=$lt_lt_prog_compiler_static_F77
-+
-+# Compiler flag to turn off builtin functions.
-+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
-+
-+# Compiler flag to allow reflexive dlopens.
-+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
-+
-+# Compiler flag to generate shared objects directly from archives.
-+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
-+
-+# Compiler flag to generate thread-safe objects.
-+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
-+
-+# Library versioning type.
-+version_type=$version_type
-+
-+# Format of library name prefix.
-+libname_spec=$lt_libname_spec
-+
-+# List of archive names. First name is the real one, the rest are links.
-+# The last name is the one that the linker finds with -lNAME.
-+library_names_spec=$lt_library_names_spec
-+
-+# The coded name of the library, if different from the real name.
-+soname_spec=$lt_soname_spec
-+
-+# Commands used to build and install an old-style archive.
-+RANLIB=$lt_RANLIB
-+old_archive_cmds=$lt_old_archive_cmds_F77
-+old_postinstall_cmds=$lt_old_postinstall_cmds
-+old_postuninstall_cmds=$lt_old_postuninstall_cmds
-+
-+# Create an old-style archive from a shared archive.
-+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
-+
-+# Create a temporary old-style archive to link instead of a shared archive.
-+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
-+
-+# Commands used to build and install a shared archive.
-+archive_cmds=$lt_archive_cmds_F77
-+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
-+postinstall_cmds=$lt_postinstall_cmds
-+postuninstall_cmds=$lt_postuninstall_cmds
-+
-+# Commands used to build a loadable module (assumed same as above if empty)
-+module_cmds=$lt_module_cmds_F77
-+module_expsym_cmds=$lt_module_expsym_cmds_F77
-+
-+# Commands to strip libraries.
-+old_striplib=$lt_old_striplib
-+striplib=$lt_striplib
-+
-+# Dependencies to place before the objects being linked to create a
-+# shared library.
-+predep_objects=$lt_predep_objects_F77
-+
-+# Dependencies to place after the objects being linked to create a
-+# shared library.
-+postdep_objects=$lt_postdep_objects_F77
-+
-+# Dependencies to place before the objects being linked to create a
-+# shared library.
-+predeps=$lt_predeps_F77
-+
-+# Dependencies to place after the objects being linked to create a
-+# shared library.
-+postdeps=$lt_postdeps_F77
-+
-+# The library search path used internally by the compiler when linking
-+# a shared library.
-+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
-+
-+# Method to check whether dependent libraries are shared objects.
-+deplibs_check_method=$lt_deplibs_check_method
-+
-+# Command to use when deplibs_check_method == file_magic.
-+file_magic_cmd=$lt_file_magic_cmd
-+
-+# Flag that allows shared libraries with undefined symbols to be built.
-+allow_undefined_flag=$lt_allow_undefined_flag_F77
-+
-+# Flag that forces no undefined symbols.
-+no_undefined_flag=$lt_no_undefined_flag_F77
-+
-+# Commands used to finish a libtool library installation in a directory.
-+finish_cmds=$lt_finish_cmds
-+
-+# Same as above, but a single script fragment to be evaled but not shown.
-+finish_eval=$lt_finish_eval
-+
-+# Take the output of nm and produce a listing of raw symbols and C names.
-+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-+
-+# Transform the output of nm in a proper C declaration
-+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-+
-+# Transform the output of nm in a C name address pair
-+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-+
-+# This is the shared library runtime path variable.
-+runpath_var=$runpath_var
-+
-+# This is the shared library path variable.
-+shlibpath_var=$shlibpath_var
-+
-+# Is shlibpath searched before the hard-coded library search path?
-+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-+
-+# How to hardcode a shared library path into an executable.
-+hardcode_action=$hardcode_action_F77
-+
-+# Whether we should hardcode library paths into libraries.
-+hardcode_into_libs=$hardcode_into_libs
-+
-+# Flag to hardcode \$libdir into a binary during linking.
-+# This must work even if \$libdir does not exist.
-+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
-+
-+# If ld is used when linking, flag to hardcode \$libdir into
-+# a binary during linking. This must work even if \$libdir does
-+# not exist.
-+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
-+
-+# Whether we need a single -rpath flag with a separated argument.
-+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
-+
-+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_direct=$hardcode_direct_F77
-+
-+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_minus_L=$hardcode_minus_L_F77
-+
-+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-+# the resulting binary.
-+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
-+
-+# Set to yes if building a shared library automatically hardcodes DIR into the library
-+# and all subsequent libraries and executables linked against it.
-+hardcode_automatic=$hardcode_automatic_F77
-+
-+# Variables whose values should be saved in libtool wrapper scripts and
-+# restored at relink time.
-+variables_saved_for_relink="$variables_saved_for_relink"
-+
-+# Whether libtool must link a program against all its dependency libraries.
-+link_all_deplibs=$link_all_deplibs_F77
-+
-+# Compile-time system search path for libraries
-+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-+
-+# Run-time system search path for libraries
-+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-+
-+# Fix the shell variable \$srcfile for the compiler.
-+fix_srcfile_path="$fix_srcfile_path_F77"
-+
-+# Set to yes if exported symbols are required.
-+always_export_symbols=$always_export_symbols_F77
-+
-+# The commands to list exported symbols.
-+export_symbols_cmds=$lt_export_symbols_cmds_F77
-+
-+# The commands to extract the exported symbol list from a shared archive.
-+extract_expsyms_cmds=$lt_extract_expsyms_cmds
-+
-+# Symbols that should not be listed in the preloaded symbols.
-+exclude_expsyms=$lt_exclude_expsyms_F77
-+
-+# Symbols that must always be exported.
-+include_expsyms=$lt_include_expsyms_F77
-+
-+# ### END LIBTOOL TAG CONFIG: $tagname
-+
-+__EOF__
-+
-+
-+else
-+ # If there is no Makefile yet, we rely on a make rule to execute
-+ # `config.status --recheck' to rerun these tests and create the
-+ # libtool script then.
-+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-+ if test -f "$ltmain_in"; then
-+ test -f Makefile && make "$ltmain"
-+ fi
-+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
-+
-+CC="$lt_save_CC"
-+
-+ else
-+ tagname=""
-+ fi
-+ ;;
-+
-+ GCJ)
-+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
-+
-+
-+
-+# Source file extension for Java test sources.
-+ac_ext=java
-+
-+# Object file extension for compiled Java test sources.
-+objext=o
-+objext_GCJ=$objext
-+
-+# Code to be used in simple compile tests
-+lt_simple_compile_test_code="class foo {}\n"
-+
-+# Code to be used in simple link tests
-+lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n'
-+
-+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-+
-+# If no C compiler was specified, use CC.
-+LTCC=${LTCC-"$CC"}
-+
-+# Allow CC to be a program name with arguments.
-+compiler=$CC
-+
-+
-+# Allow CC to be a program name with arguments.
-+lt_save_CC="$CC"
-+CC=${GCJ-"gcj"}
-+compiler=$CC
-+compiler_GCJ=$CC
-+
-+# GCJ did not exist at the time GCC didn't implicitly link libc in.
-+archive_cmds_need_lc_GCJ=no
-+
-+
-+lt_prog_compiler_no_builtin_flag_GCJ=
-+
-+if test "$GCC" = yes; then
-+ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
-+
-+
-+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
-+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_cv_prog_compiler_rtti_exceptions=no
-+ ac_outfile=conftest.$ac_objext
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+ lt_compiler_flag="-fno-rtti -fno-exceptions"
-+ # Insert the option either (1) after the last *FLAGS variable, or
-+ # (2) before a word containing "conftest.", or (3) at the end.
-+ # Note that $ac_compile itself does not contain backslashes and begins
-+ # with a dollar sign (not a hyphen), so the echo should work correctly.
-+ # The option is referenced via a variable to avoid confusing sed.
-+ lt_compile=`echo "$ac_compile" | $SED \
-+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-+ -e 's:$: $lt_compiler_flag:'`
-+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
-+ (eval "$lt_compile" 2>conftest.err)
-+ ac_status=$?
-+ cat conftest.err >&5
-+ echo "$as_me:__oline__: \$? = $ac_status" >&5
-+ if (exit $ac_status) && test -s "$ac_outfile"; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test ! -s conftest.err; then
-+ lt_cv_prog_compiler_rtti_exceptions=yes
-+ fi
-+ fi
-+ $rm conftest*
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
-+
-+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-+ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
-+else
-+ :
-+fi
-+
-+fi
-+
-+lt_prog_compiler_wl_GCJ=
-+lt_prog_compiler_pic_GCJ=
-+lt_prog_compiler_static_GCJ=
-+
-+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
-+
-+ if test "$GCC" = yes; then
-+ lt_prog_compiler_wl_GCJ='-Wl,'
-+ lt_prog_compiler_static_GCJ='-static'
-+
-+ case $host_os in
-+ aix*)
-+ # All AIX code is PIC.
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ lt_prog_compiler_static_GCJ='-Bstatic'
-+ fi
-+ ;;
-+
-+ amigaos*)
-+ # FIXME: we need at least 68020 code to build shared libraries, but
-+ # adding the `-m68020' flag to GCC prevents building anything better,
-+ # like `-m68040'.
-+ lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
-+ ;;
-+
-+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-+ # PIC is the default for these OSes.
-+ ;;
-+
-+ mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
-+ ;;
-+
-+ darwin* | rhapsody*)
-+ # PIC is the default on this platform
-+ # Common symbols not allowed in MH_DYLIB files
-+ lt_prog_compiler_pic_GCJ='-fno-common'
-+ ;;
-+
-+ msdosdjgpp*)
-+ # Just because we use GCC doesn't mean we suddenly get shared libraries
-+ # on systems that don't support them.
-+ lt_prog_compiler_can_build_shared_GCJ=no
-+ enable_shared=no
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ lt_prog_compiler_pic_GCJ=-Kconform_pic
-+ fi
-+ ;;
-+
-+ hpux*)
-+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-+ # not for PA HP-UX.
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ # +Z the default
-+ ;;
-+ *)
-+ lt_prog_compiler_pic_GCJ='-fPIC'
-+ ;;
-+ esac
-+ ;;
-+
-+ *)
-+ lt_prog_compiler_pic_GCJ='-fPIC'
-+ ;;
-+ esac
-+ else
-+ # PORTME Check for flag to pass linker flags through the system compiler.
-+ case $host_os in
-+ aix*)
-+ lt_prog_compiler_wl_GCJ='-Wl,'
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ lt_prog_compiler_static_GCJ='-Bstatic'
-+ else
-+ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
-+ fi
-+ ;;
-+
-+ mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
-+ ;;
-+
-+ hpux9* | hpux10* | hpux11*)
-+ lt_prog_compiler_wl_GCJ='-Wl,'
-+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-+ # not for PA HP-UX.
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ # +Z the default
-+ ;;
-+ *)
-+ lt_prog_compiler_pic_GCJ='+Z'
-+ ;;
-+ esac
-+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
-+ lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
-+ ;;
-+
-+ irix5* | irix6* | nonstopux*)
-+ lt_prog_compiler_wl_GCJ='-Wl,'
-+ # PIC (with -KPIC) is the default.
-+ lt_prog_compiler_static_GCJ='-non_shared'
-+ ;;
-+
-+ newsos6)
-+ lt_prog_compiler_pic_GCJ='-KPIC'
-+ lt_prog_compiler_static_GCJ='-Bstatic'
-+ ;;
-+
-+ linux*)
-+ case $CC in
-+ icc* | ecc*)
-+ lt_prog_compiler_wl_GCJ='-Wl,'
-+ lt_prog_compiler_pic_GCJ='-KPIC'
-+ lt_prog_compiler_static_GCJ='-static'
-+ ;;
-+ ccc*)
-+ lt_prog_compiler_wl_GCJ='-Wl,'
-+ # All Alpha code is PIC.
-+ lt_prog_compiler_static_GCJ='-non_shared'
-+ ;;
-+ esac
-+ ;;
-+
-+ osf3* | osf4* | osf5*)
-+ lt_prog_compiler_wl_GCJ='-Wl,'
-+ # All OSF/1 code is PIC.
-+ lt_prog_compiler_static_GCJ='-non_shared'
-+ ;;
-+
-+ sco3.2v5*)
-+ lt_prog_compiler_pic_GCJ='-Kpic'
-+ lt_prog_compiler_static_GCJ='-dn'
-+ ;;
-+
-+ solaris*)
-+ lt_prog_compiler_wl_GCJ='-Wl,'
-+ lt_prog_compiler_pic_GCJ='-KPIC'
-+ lt_prog_compiler_static_GCJ='-Bstatic'
-+ ;;
-+
-+ sunos4*)
-+ lt_prog_compiler_wl_GCJ='-Qoption ld '
-+ lt_prog_compiler_pic_GCJ='-PIC'
-+ lt_prog_compiler_static_GCJ='-Bstatic'
-+ ;;
-+
-+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ lt_prog_compiler_wl_GCJ='-Wl,'
-+ lt_prog_compiler_pic_GCJ='-KPIC'
-+ lt_prog_compiler_static_GCJ='-Bstatic'
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ lt_prog_compiler_pic_GCJ='-Kconform_pic'
-+ lt_prog_compiler_static_GCJ='-Bstatic'
-+ fi
-+ ;;
-+
-+ uts4*)
-+ lt_prog_compiler_pic_GCJ='-pic'
-+ lt_prog_compiler_static_GCJ='-Bstatic'
-+ ;;
-+
-+ *)
-+ lt_prog_compiler_can_build_shared_GCJ=no
-+ ;;
-+ esac
-+ fi
-+
-+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
-+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
-+
-+#
-+# Check to make sure the PIC flag actually works.
-+#
-+if test -n "$lt_prog_compiler_pic_GCJ"; then
-+
-+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
-+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
-+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_prog_compiler_pic_works_GCJ=no
-+ ac_outfile=conftest.$ac_objext
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+ lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
-+ # Insert the option either (1) after the last *FLAGS variable, or
-+ # (2) before a word containing "conftest.", or (3) at the end.
-+ # Note that $ac_compile itself does not contain backslashes and begins
-+ # with a dollar sign (not a hyphen), so the echo should work correctly.
-+ # The option is referenced via a variable to avoid confusing sed.
-+ lt_compile=`echo "$ac_compile" | $SED \
-+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-+ -e 's:$: $lt_compiler_flag:'`
-+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
-+ (eval "$lt_compile" 2>conftest.err)
-+ ac_status=$?
-+ cat conftest.err >&5
-+ echo "$as_me:__oline__: \$? = $ac_status" >&5
-+ if (exit $ac_status) && test -s "$ac_outfile"; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test ! -s conftest.err; then
-+ lt_prog_compiler_pic_works_GCJ=yes
-+ fi
-+ fi
-+ $rm conftest*
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
-+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
-+
-+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
-+ case $lt_prog_compiler_pic_GCJ in
-+ "" | " "*) ;;
-+ *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
-+ esac
-+else
-+ lt_prog_compiler_pic_GCJ=
-+ lt_prog_compiler_can_build_shared_GCJ=no
-+fi
-+
-+fi
-+case "$host_os" in
-+ # For platforms which do not support PIC, -DPIC is meaningless:
-+ *djgpp*)
-+ lt_prog_compiler_pic_GCJ=
-+ ;;
-+ *)
-+ lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
-+ ;;
-+esac
-+
-+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
-+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_cv_prog_compiler_c_o_GCJ=no
-+ $rm -r conftest 2>/dev/null
-+ mkdir conftest
-+ cd conftest
-+ mkdir out
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+
-+ lt_compiler_flag="-o out/conftest2.$ac_objext"
-+ # Insert the option either (1) after the last *FLAGS variable, or
-+ # (2) before a word containing "conftest.", or (3) at the end.
-+ # Note that $ac_compile itself does not contain backslashes and begins
-+ # with a dollar sign (not a hyphen), so the echo should work correctly.
-+ lt_compile=`echo "$ac_compile" | $SED \
-+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-+ -e 's:$: $lt_compiler_flag:'`
-+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
-+ (eval "$lt_compile" 2>out/conftest.err)
-+ ac_status=$?
-+ cat out/conftest.err >&5
-+ echo "$as_me:__oline__: \$? = $ac_status" >&5
-+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
-+ then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test ! -s out/conftest.err; then
-+ lt_cv_prog_compiler_c_o_GCJ=yes
-+ fi
-+ fi
-+ chmod u+w .
-+ $rm conftest*
-+ # SGI C++ compiler will create directory out/ii_files/ for
-+ # template instantiation
-+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-+ $rm out/* && rmdir out
-+ cd ..
-+ rmdir conftest
-+ $rm conftest*
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
-+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
-+
-+
-+hard_links="nottested"
-+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
-+ # do not overwrite the value of need_locks provided by the user
-+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-+ hard_links=yes
-+ $rm conftest*
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ touch conftest.a
-+ ln conftest.a conftest.b 2>&5 || hard_links=no
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ echo "$as_me:$LINENO: result: $hard_links" >&5
-+echo "${ECHO_T}$hard_links" >&6
-+ if test "$hard_links" = no; then
-+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-+ need_locks=warn
-+ fi
-+else
-+ need_locks=no
-+fi
-+
-+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
-+
-+ runpath_var=
-+ allow_undefined_flag_GCJ=
-+ enable_shared_with_static_runtimes_GCJ=no
-+ archive_cmds_GCJ=
-+ archive_expsym_cmds_GCJ=
-+ old_archive_From_new_cmds_GCJ=
-+ old_archive_from_expsyms_cmds_GCJ=
-+ export_dynamic_flag_spec_GCJ=
-+ whole_archive_flag_spec_GCJ=
-+ thread_safe_flag_spec_GCJ=
-+ hardcode_libdir_flag_spec_GCJ=
-+ hardcode_libdir_flag_spec_ld_GCJ=
-+ hardcode_libdir_separator_GCJ=
-+ hardcode_direct_GCJ=no
-+ hardcode_minus_L_GCJ=no
-+ hardcode_shlibpath_var_GCJ=unsupported
-+ link_all_deplibs_GCJ=unknown
-+ hardcode_automatic_GCJ=no
-+ module_cmds_GCJ=
-+ module_expsym_cmds_GCJ=
-+ always_export_symbols_GCJ=no
-+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-+ # include_expsyms should be a list of space-separated symbols to be *always*
-+ # included in the symbol list
-+ include_expsyms_GCJ=
-+ # exclude_expsyms can be an extended regexp of symbols to exclude
-+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
-+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-+ # as well as any symbol that contains `d'.
-+ exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
-+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-+ # platforms (ab)use it in PIC code, but their linkers get confused if
-+ # the symbol is explicitly referenced. Since portable code cannot
-+ # rely on this symbol name, it's probably fine to never include it in
-+ # preloaded symbol tables.
-+ extract_expsyms_cmds=
-+
-+ case $host_os in
-+ cygwin* | mingw* | pw32*)
-+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ if test "$GCC" != yes; then
-+ with_gnu_ld=no
-+ fi
-+ ;;
-+ openbsd*)
-+ with_gnu_ld=no
-+ ;;
-+ esac
-+
-+ ld_shlibs_GCJ=yes
-+ if test "$with_gnu_ld" = yes; then
-+ # If archive_cmds runs LD, not CC, wlarc should be empty
-+ wlarc='${wl}'
-+
-+ # See if GNU ld supports shared libraries.
-+ case $host_os in
-+ aix3* | aix4* | aix5*)
-+ # On AIX/PPC, the GNU linker is very broken
-+ if test "$host_cpu" != ia64; then
-+ ld_shlibs_GCJ=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-+*** to be unable to reliably create shared libraries on AIX.
-+*** Therefore, libtool is disabling shared libraries support. If you
-+*** really care for shared libraries, you may want to modify your PATH
-+*** so that a non-GNU linker is found, and then restart.
-+
-+EOF
-+ fi
-+ ;;
-+
-+ amigaos*)
-+ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
-+ hardcode_minus_L_GCJ=yes
-+
-+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-+ # that the semantics of dynamic libraries on AmigaOS, at least up
-+ # to version 4, is to share data among multiple programs linked
-+ # with the same dynamic library. Since this doesn't match the
-+ # behavior of shared libraries on other platforms, we can't use
-+ # them.
-+ ld_shlibs_GCJ=no
-+ ;;
-+
-+ beos*)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ allow_undefined_flag_GCJ=unsupported
-+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-+ # support --undefined. This deserves some investigation. FIXME
-+ archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ else
-+ ld_shlibs_GCJ=no
-+ fi
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
-+ # as there is no search path for DLLs.
-+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
-+ allow_undefined_flag_GCJ=unsupported
-+ always_export_symbols_GCJ=no
-+ enable_shared_with_static_runtimes_GCJ=yes
-+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
-+
-+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-+ # If the export-symbols file already is a .def file (1st line
-+ # is EXPORTS), use it as is; otherwise, prepend...
-+ archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname.def;
-+ else
-+ echo EXPORTS > $output_objdir/$soname.def;
-+ cat $export_symbols >> $output_objdir/$soname.def;
-+ fi~
-+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ netbsd* | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-+ wlarc=
-+ else
-+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ fi
-+ ;;
-+
-+ solaris* | sysv5*)
-+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-+ ld_shlibs_GCJ=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-+*** create shared libraries on Solaris systems. Therefore, libtool
-+*** is disabling shared libraries support. We urge you to upgrade GNU
-+*** binutils to release 2.9.1 or newer. Another option is to modify
-+*** your PATH or compiler configuration so that the native linker is
-+*** used, and then restart.
-+
-+EOF
-+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs_GCJ=no
-+ fi
-+ ;;
-+
-+ sunos4*)
-+ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ wlarc=
-+ hardcode_direct_GCJ=yes
-+ hardcode_shlibpath_var_GCJ=no
-+ ;;
-+
-+ linux*)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_cmds_GCJ="$tmp_archive_cmds"
-+ supports_anon_versioning=no
-+ case `$LD -v 2>/dev/null` in
-+ *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-+ *\ 2.11.*) ;; # other 2.11 versions
-+ *) supports_anon_versioning=yes ;;
-+ esac
-+ if test $supports_anon_versioning = yes; then
-+ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
-+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-+$echo "local: *; };" >> $output_objdir/$libname.ver~
-+ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-+ else
-+ archive_expsym_cmds_GCJ="$tmp_archive_cmds"
-+ fi
-+ link_all_deplibs_GCJ=no
-+ else
-+ ld_shlibs_GCJ=no
-+ fi
-+ ;;
-+
-+ *)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs_GCJ=no
-+ fi
-+ ;;
-+ esac
-+
-+ if test "$ld_shlibs_GCJ" = yes; then
-+ runpath_var=LD_RUN_PATH
-+ hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
-+ export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
-+ # ancient GNU ld didn't support --whole-archive et. al.
-+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-+ whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+ else
-+ whole_archive_flag_spec_GCJ=
-+ fi
-+ fi
-+ else
-+ # PORTME fill in a description of your system's linker (not GNU ld)
-+ case $host_os in
-+ aix3*)
-+ allow_undefined_flag_GCJ=unsupported
-+ always_export_symbols_GCJ=yes
-+ archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-+ # Note: this linker hardcodes the directories in LIBPATH if there
-+ # are no directories specified by -L.
-+ hardcode_minus_L_GCJ=yes
-+ if test "$GCC" = yes && test -z "$link_static_flag"; then
-+ # Neither direct hardcoding nor static linking is supported with a
-+ # broken collect2.
-+ hardcode_direct_GCJ=unsupported
-+ fi
-+ ;;
-+
-+ aix4* | aix5*)
-+ if test "$host_cpu" = ia64; then
-+ # On IA64, the linker does run time linking by default, so we don't
-+ # have to do anything special.
-+ aix_use_runtimelinking=no
-+ exp_sym_flag='-Bexport'
-+ no_entry_flag=""
-+ else
-+ # If we're using GNU nm, then we don't want the "-C" option.
-+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
-+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-+ export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-+ else
-+ export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-+ fi
-+ aix_use_runtimelinking=no
-+
-+ # Test if we are trying to use run time linking or normal
-+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-+ # need to do runtime linking.
-+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-+ for ld_flag in $LDFLAGS; do
-+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-+ aix_use_runtimelinking=yes
-+ break
-+ fi
-+ done
-+ esac
-+
-+ exp_sym_flag='-bexport'
-+ no_entry_flag='-bnoentry'
-+ fi
-+
-+ # When large executables or shared objects are built, AIX ld can
-+ # have problems creating the table of contents. If linking a library
-+ # or program results in "error TOC overflow" add -mminimal-toc to
-+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-+
-+ archive_cmds_GCJ=''
-+ hardcode_direct_GCJ=yes
-+ hardcode_libdir_separator_GCJ=':'
-+ link_all_deplibs_GCJ=yes
-+
-+ if test "$GCC" = yes; then
-+ case $host_os in aix4.012|aix4.012.*)
-+ # We only want to do this on AIX 4.2 and lower, the check
-+ # below for broken collect2 doesn't work under 4.3+
-+ collect2name=`${CC} -print-prog-name=collect2`
-+ if test -f "$collect2name" && \
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ then
-+ # We have reworked collect2
-+ hardcode_direct_GCJ=yes
-+ else
-+ # We have old collect2
-+ hardcode_direct_GCJ=unsupported
-+ # It fails to find uninstalled libraries when the uninstalled
-+ # path is not listed in the libpath. Setting hardcode_minus_L
-+ # to unsupported forces relinking
-+ hardcode_minus_L_GCJ=yes
-+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
-+ hardcode_libdir_separator_GCJ=
-+ fi
-+ esac
-+ shared_flag='-shared'
-+ else
-+ # not using gcc
-+ if test "$host_cpu" = ia64; then
-+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-+ # chokes on -Wl,-G. The following line is correct:
-+ shared_flag='-G'
-+ else
-+ if test "$aix_use_runtimelinking" = yes; then
-+ shared_flag='${wl}-G'
-+ else
-+ shared_flag='${wl}-bM:SRE'
-+ fi
-+ fi
-+ fi
-+
-+ # It seems that -bexpall does not export symbols beginning with
-+ # underscore (_), so it is better to generate a list of symbols to export.
-+ always_export_symbols_GCJ=yes
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # Warning - without using the other runtime loading flags (-brtl),
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag_GCJ='-berok'
-+ # Determine the default libpath from the value encoded in an empty executable.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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 conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+
-+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`
-+# Check for a 64-bit object if we didn't find anything.
-+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`; fi
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+
-+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
-+ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-+ else
-+ if test "$host_cpu" = ia64; then
-+ hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
-+ allow_undefined_flag_GCJ="-z nodefs"
-+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ else
-+ # Determine the default libpath from the value encoded in an empty executable.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* 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 conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+
-+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`
-+# Check for a 64-bit object if we didn't find anything.
-+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`; fi
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+
-+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
-+ # Warning - without using the other run time loading flags,
-+ # -berok will link without error, but may produce a broken library.
-+ no_undefined_flag_GCJ=' ${wl}-bernotok'
-+ allow_undefined_flag_GCJ=' ${wl}-berok'
-+ # -bexpall does not export symbols beginning with underscore (_)
-+ always_export_symbols_GCJ=yes
-+ # Exported symbols can be pulled into shared objects from archives
-+ whole_archive_flag_spec_GCJ=' '
-+ archive_cmds_need_lc_GCJ=yes
-+ # This is similar to how AIX traditionally builds it's shared libraries.
-+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-+ fi
-+ fi
-+ ;;
-+
-+ amigaos*)
-+ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
-+ hardcode_minus_L_GCJ=yes
-+ # see comment about different semantics on the GNU ld section
-+ ld_shlibs_GCJ=no
-+ ;;
-+
-+ bsdi4*)
-+ export_dynamic_flag_spec_GCJ=-rdynamic
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec_GCJ=' '
-+ allow_undefined_flag_GCJ=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_From_new_cmds_GCJ='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
-+ fix_srcfile_path='`cygpath -w "$srcfile"`'
-+ enable_shared_with_static_runtimes_GCJ=yes
-+ ;;
-+
-+ darwin* | rhapsody*)
-+ if test "$GXX" = yes ; then
-+ archive_cmds_need_lc_GCJ=no
-+ case "$host_os" in
-+ rhapsody* | darwin1.[012])
-+ allow_undefined_flag_GCJ='-undefined suppress'
-+ ;;
-+ *) # Darwin 1.3 on
-+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-+ allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
-+ else
-+ case ${MACOSX_DEPLOYMENT_TARGET} in
-+ 10.[012])
-+ allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
-+ ;;
-+ 10.*)
-+ allow_undefined_flag_GCJ='-undefined dynamic_lookup'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+ esac
-+ lt_int_apple_cc_single_mod=no
-+ output_verbose_link_cmd='echo'
-+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
-+ lt_int_apple_cc_single_mod=yes
-+ fi
-+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-+ archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-+ else
-+ archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -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'
-+ fi
-+ module_cmds_GCJ='$CC ${wl}-bind_at_load $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
-+ archive_expsym_cmds_GCJ='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}'
-+ else
-+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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}'
-+ fi
-+ module_expsym_cmds_GCJ='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}'
-+ hardcode_direct_GCJ=no
-+ hardcode_automatic_GCJ=yes
-+ hardcode_shlibpath_var_GCJ=unsupported
-+ whole_archive_flag_spec_GCJ='-all_load $convenience'
-+ link_all_deplibs_GCJ=yes
-+ else
-+ ld_shlibs_GCJ=no
-+ fi
-+ ;;
-+
-+ dgux*)
-+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
-+ hardcode_shlibpath_var_GCJ=no
-+ ;;
-+
-+ freebsd1*)
-+ ld_shlibs_GCJ=no
-+ ;;
-+
-+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-+ # support. Future versions do this automatically, but an explicit c++rt0.o
-+ # does not break anything, and helps significantly (at the cost of a little
-+ # extra space).
-+ freebsd2.2*)
-+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
-+ hardcode_direct_GCJ=yes
-+ hardcode_shlibpath_var_GCJ=no
-+ ;;
-+
-+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-+ freebsd2*)
-+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct_GCJ=yes
-+ hardcode_minus_L_GCJ=yes
-+ hardcode_shlibpath_var_GCJ=no
-+ ;;
-+
-+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-+ freebsd* | kfreebsd*-gnu)
-+ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
-+ hardcode_direct_GCJ=yes
-+ hardcode_shlibpath_var_GCJ=no
-+ ;;
-+
-+ hpux9*)
-+ if test "$GCC" = yes; then
-+ archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ else
-+ archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ fi
-+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator_GCJ=:
-+ hardcode_direct_GCJ=yes
-+
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ hardcode_minus_L_GCJ=yes
-+ export_dynamic_flag_spec_GCJ='${wl}-E'
-+ ;;
-+
-+ hpux10* | hpux11*)
-+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ ;;
-+ *)
-+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ ;;
-+ esac
-+ else
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ ;;
-+ *)
-+ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-+ ;;
-+ esac
-+ fi
-+ if test "$with_gnu_ld" = no; then
-+ case "$host_cpu" in
-+ hppa*64*)
-+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
-+ hardcode_libdir_separator_GCJ=:
-+ hardcode_direct_GCJ=no
-+ hardcode_shlibpath_var_GCJ=no
-+ ;;
-+ ia64*)
-+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
-+ hardcode_direct_GCJ=no
-+ hardcode_shlibpath_var_GCJ=no
-+
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ hardcode_minus_L_GCJ=yes
-+ ;;
-+ *)
-+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator_GCJ=:
-+ hardcode_direct_GCJ=yes
-+ export_dynamic_flag_spec_GCJ='${wl}-E'
-+
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ hardcode_minus_L_GCJ=yes
-+ ;;
-+ esac
-+ fi
-+ ;;
-+
-+ irix5* | irix6* | nonstopux*)
-+ if test "$GCC" = yes; then
-+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ else
-+ archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
-+ fi
-+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator_GCJ=:
-+ link_all_deplibs_GCJ=yes
-+ ;;
-+
-+ netbsd* | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-+ else
-+ archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-+ fi
-+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
-+ hardcode_direct_GCJ=yes
-+ hardcode_shlibpath_var_GCJ=no
-+ ;;
-+
-+ newsos6)
-+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct_GCJ=yes
-+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator_GCJ=:
-+ hardcode_shlibpath_var_GCJ=no
-+ ;;
-+
-+ openbsd*)
-+ hardcode_direct_GCJ=yes
-+ hardcode_shlibpath_var_GCJ=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
-+ export_dynamic_flag_spec_GCJ='${wl}-E'
-+ else
-+ case $host_os in
-+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
-+ ;;
-+ *)
-+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+
-+ os2*)
-+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
-+ hardcode_minus_L_GCJ=yes
-+ allow_undefined_flag_GCJ=unsupported
-+ archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-+ old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-+ ;;
-+
-+ osf3*)
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ else
-+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
-+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ fi
-+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator_GCJ=:
-+ ;;
-+
-+ osf4* | osf5*) # as osf3* with the addition of -msym flag
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
-+ else
-+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
-+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
-+
-+ # Both c and cxx compiler support -rpath directly
-+ hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
-+ fi
-+ hardcode_libdir_separator_GCJ=:
-+ ;;
-+
-+ sco3.2v5*)
-+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var_GCJ=no
-+ export_dynamic_flag_spec_GCJ='${wl}-Bexport'
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ ;;
-+
-+ solaris*)
-+ no_undefined_flag_GCJ=' -z text'
-+ if test "$GCC" = yes; then
-+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
-+ else
-+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ fi
-+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
-+ hardcode_shlibpath_var_GCJ=no
-+ case $host_os in
-+ solaris2.[0-5] | solaris2.[0-5].*) ;;
-+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
-+ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
-+ esac
-+ link_all_deplibs_GCJ=yes
-+ ;;
-+
-+ sunos4*)
-+ if test "x$host_vendor" = xsequent; then
-+ # Use $CC to link under sequent, because it throws in some extra .o
-+ # files that make .init and .fini sections work.
-+ archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-+ fi
-+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
-+ hardcode_direct_GCJ=yes
-+ hardcode_minus_L_GCJ=yes
-+ hardcode_shlibpath_var_GCJ=no
-+ ;;
-+
-+ sysv4)
-+ case $host_vendor in
-+ sni)
-+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct_GCJ=yes # is this really true???
-+ ;;
-+ siemens)
-+ ## LD is ld it makes a PLAMLIB
-+ ## CC just makes a GrossModule.
-+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ reload_cmds_GCJ='$CC -r -o $output$reload_objs'
-+ hardcode_direct_GCJ=no
-+ ;;
-+ motorola)
-+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
-+ ;;
-+ esac
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var_GCJ=no
-+ ;;
-+
-+ sysv4.3*)
-+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var_GCJ=no
-+ export_dynamic_flag_spec_GCJ='-Bexport'
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var_GCJ=no
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ ld_shlibs_GCJ=yes
-+ fi
-+ ;;
-+
-+ sysv4.2uw2*)
-+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct_GCJ=yes
-+ hardcode_minus_L_GCJ=no
-+ hardcode_shlibpath_var_GCJ=no
-+ hardcode_runpath_var=yes
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+
-+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
-+ no_undefined_flag_GCJ='${wl}-z ${wl}text'
-+ if test "$GCC" = yes; then
-+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ fi
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var_GCJ=no
-+ ;;
-+
-+ sysv5*)
-+ no_undefined_flag_GCJ=' -z text'
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ hardcode_libdir_flag_spec_GCJ=
-+ hardcode_shlibpath_var_GCJ=no
-+ runpath_var='LD_RUN_PATH'
-+ ;;
-+
-+ uts4*)
-+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
-+ hardcode_shlibpath_var_GCJ=no
-+ ;;
-+
-+ *)
-+ ld_shlibs_GCJ=no
-+ ;;
-+ esac
-+ fi
-+
-+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
-+echo "${ECHO_T}$ld_shlibs_GCJ" >&6
-+test "$ld_shlibs_GCJ" = no && can_build_shared=no
-+
-+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-+if test "$GCC" = yes; then
-+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-+fi
-+
-+#
-+# Do we need to explicitly link libc?
-+#
-+case "x$archive_cmds_need_lc_GCJ" in
-+x|xyes)
-+ # Assume -lc should be added
-+ archive_cmds_need_lc_GCJ=yes
-+
-+ if test "$enable_shared" = yes && test "$GCC" = yes; then
-+ case $archive_cmds_GCJ in
-+ *'~'*)
-+ # FIXME: we may have to deal with multi-command sequences.
-+ ;;
-+ '$CC '*)
-+ # Test whether the compiler implicitly links with -lc since on some
-+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
-+ # to ld, don't add -lc before -lgcc.
-+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-+ $rm conftest*
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+
-+ 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); } 2>conftest.err; then
-+ soname=conftest
-+ lib=conftest
-+ libobjs=conftest.$ac_objext
-+ deplibs=
-+ wl=$lt_prog_compiler_wl_GCJ
-+ compiler_flags=-v
-+ linker_flags=-v
-+ verstring=
-+ output_objdir=.
-+ libname=conftest
-+ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
-+ allow_undefined_flag_GCJ=
-+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-+ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+ then
-+ archive_cmds_need_lc_GCJ=no
-+ else
-+ archive_cmds_need_lc_GCJ=yes
-+ fi
-+ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
-+ else
-+ cat conftest.err 1>&5
-+ fi
-+ $rm conftest*
-+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
-+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
-+ ;;
-+ esac
-+ fi
-+ ;;
-+esac
-+
-+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
-+library_names_spec=
-+libname_spec='lib$name'
-+soname_spec=
-+shrext_cmds=".so"
-+postinstall_cmds=
-+postuninstall_cmds=
-+finish_cmds=
-+finish_eval=
-+shlibpath_var=
-+shlibpath_overrides_runpath=unknown
-+version_type=none
-+dynamic_linker="$host_os ld.so"
-+sys_lib_dlsearch_path_spec="/lib /usr/lib"
-+if test "$GCC" = yes; then
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-+ # if the path contains ";" then we assume it to be the separator
-+ # otherwise default to the standard path separator (i.e. ":") - it is
-+ # assumed that no part of a normal pathname contains ";" but that should
-+ # okay in the real world where ";" in dirpaths is itself problematic.
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+else
-+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+fi
-+need_lib_prefix=unknown
-+hardcode_into_libs=no
-+
-+# when you set need_version to no, make sure it does not cause -set_version
-+# flags to be left without arguments
-+need_version=unknown
-+
-+case $host_os in
-+aix3*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-+ shlibpath_var=LIBPATH
-+
-+ # AIX 3 has no versioning support, so we append a major version to the name.
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ ;;
-+
-+aix4* | aix5*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ hardcode_into_libs=yes
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 supports IA64
-+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ else
-+ # With GCC up to 2.95.x, collect2 would create an import file
-+ # for dependence libraries. The import file would start with
-+ # the line `#! .'. This would cause the generated library to
-+ # depend on `.', always an invalid library. This was fixed in
-+ # development snapshots of GCC prior to 3.0.
-+ case $host_os in
-+ aix4 | aix4.[01] | aix4.[01].*)
-+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-+ echo ' yes '
-+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-+ :
-+ else
-+ can_build_shared=no
-+ fi
-+ ;;
-+ esac
-+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-+ # soname into executable. Probably we can add versioning support to
-+ # collect2, so additional links can be useful in future.
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-+ # instead of lib<name>.a to let people know that these are not
-+ # typical AIX shared libraries.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ else
-+ # We preserve .a as extension for shared libraries through AIX4.2
-+ # and later when we are not doing run time linking.
-+ library_names_spec='${libname}${release}.a $libname.a'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ fi
-+ shlibpath_var=LIBPATH
-+ fi
-+ ;;
-+
-+amigaos*)
-+ library_names_spec='$libname.ixlibrary $libname.a'
-+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
-+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-+ ;;
-+
-+beos*)
-+ library_names_spec='${libname}${shared_ext}'
-+ dynamic_linker="$host_os ld.so"
-+ shlibpath_var=LIBRARY_PATH
-+ ;;
-+
-+bsdi4*)
-+ version_type=linux
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-+ # the default ld.so.conf also contains /usr/contrib/lib and
-+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-+ # libtool to hard-code these into programs
-+ ;;
-+
-+cygwin* | mingw* | pw32*)
-+ version_type=windows
-+ shrext_cmds=".dll"
-+ need_version=no
-+ need_lib_prefix=no
-+
-+ case $GCC,$host_os in
-+ yes,cygwin* | yes,mingw* | yes,pw32*)
-+ library_names_spec='$libname.dll.a'
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $rm \$dlpath'
-+ shlibpath_overrides_runpath=yes
-+
-+ case $host_os in
-+ cygwin*)
-+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-+ ;;
-+ mingw*)
-+ # MinGW DLLs use traditional 'lib' prefix
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
-+ # It is most probably a Windows format PATH printed by
-+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
-+ # path with ; separators, and with drive letters. We can handle the
-+ # drive letters (cygwin fileutils understands them), so leave them,
-+ # especially as we might pass files found there to a mingw objdump,
-+ # which wouldn't understand a cygwinified path. Ahh.
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+ ;;
-+ pw32*)
-+ # pw32 DLLs use 'pw' prefix rather than 'lib'
-+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
-+ ;;
-+ esac
-+ ;;
-+
-+ *)
-+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ ;;
-+ esac
-+ dynamic_linker='Win32 ld.exe'
-+ # FIXME: first we should search . and the directory the executable is in
-+ shlibpath_var=PATH
-+ ;;
-+
-+darwin* | rhapsody*)
-+ dynamic_linker="$host_os dyld"
-+ version_type=darwin
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-+ soname_spec='${libname}${release}${major}$shared_ext'
-+ shlibpath_overrides_runpath=yes
-+ shlibpath_var=DYLD_LIBRARY_PATH
-+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
-+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-+ if test "$GCC" = yes; then
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-+ else
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-+ fi
-+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-+ ;;
-+
-+dgux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+freebsd1*)
-+ dynamic_linker=no
-+ ;;
-+
-+kfreebsd*-gnu)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU ld.so'
-+ ;;
-+
-+freebsd*)
-+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
-+ version_type=freebsd-$objformat
-+ case $version_type in
-+ freebsd-elf*)
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-+ need_version=no
-+ need_lib_prefix=no
-+ ;;
-+ freebsd-*)
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-+ need_version=yes
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_os in
-+ freebsd2*)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ freebsd3.01* | freebsdelf3.01*)
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ ;;
-+ *) # from 3.2 on
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ ;;
-+ esac
-+ ;;
-+
-+gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ hardcode_into_libs=yes
-+ ;;
-+
-+hpux9* | hpux10* | hpux11*)
-+ # Give a soname corresponding to the major version so that dld.sl refuses to
-+ # link against other versions.
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ case "$host_cpu" in
-+ ia64*)
-+ shrext_cmds='.so'
-+ hardcode_into_libs=yes
-+ dynamic_linker="$host_os dld.so"
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ if test "X$HPUX_IA64_MODE" = X32; then
-+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-+ else
-+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-+ fi
-+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-+ ;;
-+ hppa*64*)
-+ shrext_cmds='.sl'
-+ hardcode_into_libs=yes
-+ dynamic_linker="$host_os dld.sl"
-+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-+ ;;
-+ *)
-+ shrext_cmds='.sl'
-+ dynamic_linker="$host_os dld.sl"
-+ shlibpath_var=SHLIB_PATH
-+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ ;;
-+ esac
-+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
-+ postinstall_cmds='chmod 555 $lib'
-+ ;;
-+
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ nonstopux*) version_type=nonstopux ;;
-+ *)
-+ if test "$lt_cv_prog_gnu_ld" = yes; then
-+ version_type=linux
-+ else
-+ version_type=irix
-+ fi ;;
-+ esac
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-+ case $host_os in
-+ irix5* | nonstopux*)
-+ libsuff= shlibsuff=
-+ ;;
-+ *)
-+ case $LD in # libtool.m4 will add one of these switches to LD
-+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-+ libsuff= shlibsuff= libmagic=32-bit;;
-+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-+ libsuff=32 shlibsuff=N32 libmagic=N32;;
-+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
-+ *) libsuff= shlibsuff= libmagic=never-match;;
-+ esac
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-+ hardcode_into_libs=yes
-+ ;;
-+
-+# No shared lib support for Linux oldld, aout, or coff.
-+linux*oldld* | linux*aout* | linux*coff*)
-+ dynamic_linker=no
-+ ;;
-+
-+# This must be Linux ELF.
-+linux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ # This implies no fast_install, which is unacceptable.
-+ # Some rework will be needed to allow for fast_install
-+ # before this can be enabled.
-+ hardcode_into_libs=yes
-+
-+ # Append ld.so.conf contents to the search path
-+ if test -f /etc/ld.so.conf; then
-+ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
-+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-+ fi
-+
-+ # We used to test for /lib/ld.so.1 and disable shared libraries on
-+ # powerpc, because MkLinux only supported shared libraries with the
-+ # GNU dynamic linker. Since this was broken with cross compilers,
-+ # most powerpc-linux boxes support dynamic linking these days and
-+ # people can always --disable-shared, the test was removed, and we
-+ # assume the GNU/Linux dynamic linker is in use.
-+ dynamic_linker='GNU/Linux ld.so'
-+ ;;
-+
-+knetbsd*-gnu)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU ld.so'
-+ ;;
-+
-+netbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ dynamic_linker='NetBSD (a.out) ld.so'
-+ else
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ dynamic_linker='NetBSD ld.elf_so'
-+ fi
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ ;;
-+
-+newsos6)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+
-+nto-qnx*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+
-+openbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=yes
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ case $host_os in
-+ openbsd2.[89] | openbsd2.[89].*)
-+ shlibpath_overrides_runpath=no
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ esac
-+ else
-+ shlibpath_overrides_runpath=yes
-+ fi
-+ ;;
-+
-+os2*)
-+ libname_spec='$name'
-+ shrext_cmds=".dll"
-+ need_lib_prefix=no
-+ library_names_spec='$libname${shared_ext} $libname.a'
-+ dynamic_linker='OS/2 ld.exe'
-+ shlibpath_var=LIBPATH
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ version_type=osf
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-+ ;;
-+
-+sco3.2v5*)
-+ version_type=osf
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+solaris*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ # ldd complains unless libraries are executable
-+ postinstall_cmds='chmod +x $lib'
-+ ;;
-+
-+sunos4*)
-+ version_type=sunos
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ if test "$with_gnu_ld" = yes; then
-+ need_lib_prefix=no
-+ fi
-+ need_version=yes
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_vendor in
-+ sni)
-+ shlibpath_overrides_runpath=no
-+ need_lib_prefix=no
-+ export_dynamic_flag_spec='${wl}-Blargedynsym'
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+ siemens)
-+ need_lib_prefix=no
-+ ;;
-+ motorola)
-+ need_lib_prefix=no
-+ need_version=no
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-+ ;;
-+ esac
-+ ;;
-+
-+sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ version_type=linux
-+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-+ soname_spec='$libname${shared_ext}.$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ fi
-+ ;;
-+
-+uts4*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+*)
-+ dynamic_linker=no
-+ ;;
-+esac
-+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-+echo "${ECHO_T}$dynamic_linker" >&6
-+test "$dynamic_linker" = no && can_build_shared=no
-+
-+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
-+hardcode_action_GCJ=
-+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
-+ test -n "$runpath_var GCJ" || \
-+ test "X$hardcode_automatic_GCJ"="Xyes" ; then
-+
-+ # We can hardcode non-existant directories.
-+ if test "$hardcode_direct_GCJ" != no &&
-+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
-+ # have to relink, otherwise we might link with an installed library
-+ # when we should be linking with a yet-to-be-installed one
-+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
-+ test "$hardcode_minus_L_GCJ" != no; then
-+ # Linking always hardcodes the temporary library directory.
-+ hardcode_action_GCJ=relink
-+ else
-+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
-+ hardcode_action_GCJ=immediate
-+ fi
-+else
-+ # We cannot hardcode anything, or else we can only hardcode existing
-+ # directories.
-+ hardcode_action_GCJ=unsupported
-+fi
-+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
-+echo "${ECHO_T}$hardcode_action_GCJ" >&6
-+
-+if test "$hardcode_action_GCJ" = relink; then
-+ # Fast installation is not supported
-+ enable_fast_install=no
-+elif test "$shlibpath_overrides_runpath" = yes ||
-+ test "$enable_shared" = no; then
-+ # Fast installation is not necessary
-+ enable_fast_install=needless
-+fi
-+
-+striplib=
-+old_striplib=
-+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
-+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+else
-+# FIXME - insert some real tests, host_os isn't really good enough
-+ case $host_os in
-+ darwin*)
-+ if test -n "$STRIP" ; then
-+ striplib="$STRIP -x"
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+ ;;
-+ *)
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+ ;;
-+ esac
-+fi
-+
-+if test "x$enable_dlopen" != xyes; then
-+ enable_dlopen=unknown
-+ enable_dlopen_self=unknown
-+ enable_dlopen_self_static=unknown
-+else
-+ lt_cv_dlopen=no
-+ lt_cv_dlopen_libs=
-+
-+ case $host_os in
-+ beos*)
-+ lt_cv_dlopen="load_add_on"
-+ lt_cv_dlopen_libs=
-+ lt_cv_dlopen_self=yes
-+ ;;
-+
-+ mingw* | pw32*)
-+ lt_cv_dlopen="LoadLibrary"
-+ lt_cv_dlopen_libs=
-+ ;;
-+
-+ cygwin*)
-+ lt_cv_dlopen="dlopen"
-+ lt_cv_dlopen_libs=
-+ ;;
-+
-+ darwin*)
-+ # if libdl is installed we need to link against it
-+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldl $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dlopen ();
-+int
-+main ()
-+{
-+dlopen ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_dl_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dl_dlopen=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-+if test $ac_cv_lib_dl_dlopen = yes; then
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-+else
-+
-+ lt_cv_dlopen="dyld"
-+ lt_cv_dlopen_libs=
-+ lt_cv_dlopen_self=yes
-+
-+fi
-+
-+ ;;
-+
-+ *)
-+ echo "$as_me:$LINENO: checking for shl_load" >&5
-+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
-+if test "${ac_cv_func_shl_load+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define shl_load innocuous_shl_load
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char shl_load (); 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
-+
-+#undef shl_load
-+
-+/* 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 shl_load ();
-+/* 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_shl_load) || defined (__stub___shl_load)
-+choke me
-+#else
-+char (*f) () = shl_load;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != shl_load;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_shl_load=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_func_shl_load=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
-+if test $ac_cv_func_shl_load = yes; then
-+ lt_cv_dlopen="shl_load"
-+else
-+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
-+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldld $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 shl_load ();
-+int
-+main ()
-+{
-+shl_load ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_dld_shl_load=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dld_shl_load=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
-+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
-+if test $ac_cv_lib_dld_shl_load = yes; then
-+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
-+else
-+ echo "$as_me:$LINENO: checking for dlopen" >&5
-+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
-+if test "${ac_cv_func_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define dlopen innocuous_dlopen
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char dlopen (); 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
-+
-+#undef dlopen
-+
-+/* 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 dlopen ();
-+/* 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_dlopen) || defined (__stub___dlopen)
-+choke me
-+#else
-+char (*f) () = dlopen;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != dlopen;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_func_dlopen=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
-+if test $ac_cv_func_dlopen = yes; then
-+ lt_cv_dlopen="dlopen"
-+else
-+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldl $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dlopen ();
-+int
-+main ()
-+{
-+dlopen ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_dl_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dl_dlopen=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-+if test $ac_cv_lib_dl_dlopen = yes; then
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-+else
-+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
-+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
-+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lsvld $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dlopen ();
-+int
-+main ()
-+{
-+dlopen ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_svld_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_svld_dlopen=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
-+if test $ac_cv_lib_svld_dlopen = yes; then
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-+else
-+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
-+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
-+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldld $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dld_link ();
-+int
-+main ()
-+{
-+dld_link ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_dld_dld_link=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dld_dld_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
-+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
-+if test $ac_cv_lib_dld_dld_link = yes; then
-+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+ ;;
-+ esac
-+
-+ if test "x$lt_cv_dlopen" != xno; then
-+ enable_dlopen=yes
-+ else
-+ enable_dlopen=no
-+ fi
-+
-+ case $lt_cv_dlopen in
-+ dlopen)
-+ save_CPPFLAGS="$CPPFLAGS"
-+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-+
-+ save_LDFLAGS="$LDFLAGS"
-+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-+
-+ save_LIBS="$LIBS"
-+ LIBS="$lt_cv_dlopen_libs $LIBS"
-+
-+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
-+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
-+if test "${lt_cv_dlopen_self+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ lt_cv_dlopen_self=cross
-+else
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_status=$lt_dlunknown
-+ cat > conftest.$ac_ext <<EOF
-+#line __oline__ "configure"
-+#include "confdefs.h"
-+
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-+
-+#include <stdio.h>
-+
-+#ifdef RTLD_GLOBAL
-+# define LT_DLGLOBAL RTLD_GLOBAL
-+#else
-+# ifdef DL_GLOBAL
-+# define LT_DLGLOBAL DL_GLOBAL
-+# else
-+# define LT_DLGLOBAL 0
-+# endif
-+#endif
-+
-+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-+ find out it does not work in some platform. */
-+#ifndef LT_DLLAZY_OR_NOW
-+# ifdef RTLD_LAZY
-+# define LT_DLLAZY_OR_NOW RTLD_LAZY
-+# else
-+# ifdef DL_LAZY
-+# define LT_DLLAZY_OR_NOW DL_LAZY
-+# else
-+# ifdef RTLD_NOW
-+# define LT_DLLAZY_OR_NOW RTLD_NOW
-+# else
-+# ifdef DL_NOW
-+# define LT_DLLAZY_OR_NOW DL_NOW
-+# else
-+# define LT_DLLAZY_OR_NOW 0
-+# endif
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" void exit (int);
-+#endif
-+
-+void fnord() { int i=42;}
-+int main ()
-+{
-+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-+ int status = $lt_dlunknown;
-+
-+ if (self)
-+ {
-+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+ /* dlclose (self); */
-+ }
-+
-+ exit (status);
-+}
-+EOF
-+ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ (./conftest; exit; ) 2>/dev/null
-+ lt_status=$?
-+ case x$lt_status in
-+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
-+ esac
-+ else :
-+ # compilation failed
-+ lt_cv_dlopen_self=no
-+ fi
-+fi
-+rm -fr conftest*
-+
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
-+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
-+
-+ if test "x$lt_cv_dlopen_self" = xyes; then
-+ LDFLAGS="$LDFLAGS $link_static_flag"
-+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
-+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
-+if test "${lt_cv_dlopen_self_static+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ lt_cv_dlopen_self_static=cross
-+else
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_status=$lt_dlunknown
-+ cat > conftest.$ac_ext <<EOF
-+#line __oline__ "configure"
-+#include "confdefs.h"
-+
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-+
-+#include <stdio.h>
-+
-+#ifdef RTLD_GLOBAL
-+# define LT_DLGLOBAL RTLD_GLOBAL
-+#else
-+# ifdef DL_GLOBAL
-+# define LT_DLGLOBAL DL_GLOBAL
-+# else
-+# define LT_DLGLOBAL 0
-+# endif
-+#endif
-+
-+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-+ find out it does not work in some platform. */
-+#ifndef LT_DLLAZY_OR_NOW
-+# ifdef RTLD_LAZY
-+# define LT_DLLAZY_OR_NOW RTLD_LAZY
-+# else
-+# ifdef DL_LAZY
-+# define LT_DLLAZY_OR_NOW DL_LAZY
-+# else
-+# ifdef RTLD_NOW
-+# define LT_DLLAZY_OR_NOW RTLD_NOW
-+# else
-+# ifdef DL_NOW
-+# define LT_DLLAZY_OR_NOW DL_NOW
-+# else
-+# define LT_DLLAZY_OR_NOW 0
-+# endif
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" void exit (int);
-+#endif
-+
-+void fnord() { int i=42;}
-+int main ()
-+{
-+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-+ int status = $lt_dlunknown;
-+
-+ if (self)
-+ {
-+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+ /* dlclose (self); */
-+ }
-+
-+ exit (status);
-+}
-+EOF
-+ 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); } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ (./conftest; exit; ) 2>/dev/null
-+ lt_status=$?
-+ case x$lt_status in
-+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
-+ esac
-+ else :
-+ # compilation failed
-+ lt_cv_dlopen_self_static=no
-+ fi
-+fi
-+rm -fr conftest*
-+
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
-+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
-+ fi
-+
-+ CPPFLAGS="$save_CPPFLAGS"
-+ LDFLAGS="$save_LDFLAGS"
-+ LIBS="$save_LIBS"
-+ ;;
-+ esac
-+
-+ case $lt_cv_dlopen_self in
-+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-+ *) enable_dlopen_self=unknown ;;
-+ esac
-+
-+ case $lt_cv_dlopen_self_static in
-+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-+ *) enable_dlopen_self_static=unknown ;;
-+ esac
-+fi
-+
-+
-+# The else clause should only fire when bootstrapping the
-+# libtool distribution, otherwise you forgot to ship ltmain.sh
-+# with your package, and you will get complaints that there are
-+# no rules to generate ltmain.sh.
-+if test -f "$ltmain"; then
-+ # See if we are running on zsh, and set the options which allow our commands through
-+ # without removal of \ escapes.
-+ if test -n "${ZSH_VERSION+set}" ; then
-+ setopt NO_GLOB_SUBST
-+ fi
-+ # Now quote all the things that may contain metacharacters while being
-+ # careful not to overquote the AC_SUBSTed values. We take copies of the
-+ # variables and quote the copies for generation of the libtool script.
-+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
-+ SED SHELL STRIP \
-+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-+ deplibs_check_method reload_flag reload_cmds need_locks \
-+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-+ lt_cv_sys_global_symbol_to_c_name_address \
-+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-+ old_postinstall_cmds old_postuninstall_cmds \
-+ compiler_GCJ \
-+ CC_GCJ \
-+ LD_GCJ \
-+ lt_prog_compiler_wl_GCJ \
-+ lt_prog_compiler_pic_GCJ \
-+ lt_prog_compiler_static_GCJ \
-+ lt_prog_compiler_no_builtin_flag_GCJ \
-+ export_dynamic_flag_spec_GCJ \
-+ thread_safe_flag_spec_GCJ \
-+ whole_archive_flag_spec_GCJ \
-+ enable_shared_with_static_runtimes_GCJ \
-+ old_archive_cmds_GCJ \
-+ old_archive_from_new_cmds_GCJ \
-+ predep_objects_GCJ \
-+ postdep_objects_GCJ \
-+ predeps_GCJ \
-+ postdeps_GCJ \
-+ compiler_lib_search_path_GCJ \
-+ archive_cmds_GCJ \
-+ archive_expsym_cmds_GCJ \
-+ postinstall_cmds_GCJ \
-+ postuninstall_cmds_GCJ \
-+ old_archive_from_expsyms_cmds_GCJ \
-+ allow_undefined_flag_GCJ \
-+ no_undefined_flag_GCJ \
-+ export_symbols_cmds_GCJ \
-+ hardcode_libdir_flag_spec_GCJ \
-+ hardcode_libdir_flag_spec_ld_GCJ \
-+ hardcode_libdir_separator_GCJ \
-+ hardcode_automatic_GCJ \
-+ module_cmds_GCJ \
-+ module_expsym_cmds_GCJ \
-+ lt_cv_prog_compiler_c_o_GCJ \
-+ exclude_expsyms_GCJ \
-+ include_expsyms_GCJ; do
-+
-+ case $var in
-+ old_archive_cmds_GCJ | \
-+ old_archive_from_new_cmds_GCJ | \
-+ archive_cmds_GCJ | \
-+ archive_expsym_cmds_GCJ | \
-+ module_cmds_GCJ | \
-+ module_expsym_cmds_GCJ | \
-+ old_archive_from_expsyms_cmds_GCJ | \
-+ export_symbols_cmds_GCJ | \
-+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
-+ postinstall_cmds | postuninstall_cmds | \
-+ old_postinstall_cmds | old_postuninstall_cmds | \
-+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-+ # Double-quote double-evaled strings.
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-+ ;;
-+ *)
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-+ ;;
-+ esac
-+ done
-+
-+ case $lt_echo in
-+ *'\$0 --fallback-echo"')
-+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-+ ;;
-+ esac
-+
-+cfgfile="$ofile"
-+
-+ cat <<__EOF__ >> "$cfgfile"
-+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
-+
-+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-+
-+# Shell to use when invoking shell scripts.
-+SHELL=$lt_SHELL
-+
-+# Whether or not to build shared libraries.
-+build_libtool_libs=$enable_shared
-+
-+# Whether or not to build static libraries.
-+build_old_libs=$enable_static
-+
-+# Whether or not to add -lc for building shared libraries.
-+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
-+
-+# Whether or not to disallow shared libs when runtime libs are static
-+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
-+
-+# Whether or not to optimize for fast installation.
-+fast_install=$enable_fast_install
-+
-+# The host system.
-+host_alias=$host_alias
-+host=$host
-+
-+# An echo program that does not interpret backslashes.
-+echo=$lt_echo
-+
-+# The archiver.
-+AR=$lt_AR
-+AR_FLAGS=$lt_AR_FLAGS
-+
-+# A C compiler.
-+LTCC=$lt_LTCC
-+
-+# A language-specific compiler.
-+CC=$lt_compiler_GCJ
-+
-+# Is the compiler the GNU C compiler?
-+with_gcc=$GCC_GCJ
-+
-+# An ERE matcher.
-+EGREP=$lt_EGREP
-+
-+# The linker used to build libraries.
-+LD=$lt_LD_GCJ
-+
-+# Whether we need hard or soft links.
-+LN_S=$lt_LN_S
-+
-+# A BSD-compatible nm program.
-+NM=$lt_NM
-+
-+# A symbol stripping program
-+STRIP=$lt_STRIP
-+
-+# Used to examine libraries when file_magic_cmd begins "file"
-+MAGIC_CMD=$MAGIC_CMD
-+
-+# Used on cygwin: DLL creation program.
-+DLLTOOL="$DLLTOOL"
-+
-+# Used on cygwin: object dumper.
-+OBJDUMP="$OBJDUMP"
-+
-+# Used on cygwin: assembler.
-+AS="$AS"
-+
-+# The name of the directory that contains temporary libtool files.
-+objdir=$objdir
-+
-+# How to create reloadable object files.
-+reload_flag=$lt_reload_flag
-+reload_cmds=$lt_reload_cmds
-+
-+# How to pass a linker flag through the compiler.
-+wl=$lt_lt_prog_compiler_wl_GCJ
-+
-+# Object file suffix (normally "o").
-+objext="$ac_objext"
-+
-+# Old archive suffix (normally "a").
-+libext="$libext"
-+
-+# Shared library suffix (normally ".so").
-+shrext_cmds='$shrext_cmds'
-+
-+# Executable file suffix (normally "").
-+exeext="$exeext"
-+
-+# Additional compiler flags for building library objects.
-+pic_flag=$lt_lt_prog_compiler_pic_GCJ
-+pic_mode=$pic_mode
-+
-+# What is the maximum length of a command?
-+max_cmd_len=$lt_cv_sys_max_cmd_len
-+
-+# Does compiler simultaneously support -c and -o options?
-+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
-+
-+# Must we lock files when doing compilation ?
-+need_locks=$lt_need_locks
-+
-+# Do we need the lib prefix for modules?
-+need_lib_prefix=$need_lib_prefix
-+
-+# Do we need a version for libraries?
-+need_version=$need_version
-+
-+# Whether dlopen is supported.
-+dlopen_support=$enable_dlopen
-+
-+# Whether dlopen of programs is supported.
-+dlopen_self=$enable_dlopen_self
-+
-+# Whether dlopen of statically linked programs is supported.
-+dlopen_self_static=$enable_dlopen_self_static
-+
-+# Compiler flag to prevent dynamic linking.
-+link_static_flag=$lt_lt_prog_compiler_static_GCJ
-+
-+# Compiler flag to turn off builtin functions.
-+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
-+
-+# Compiler flag to allow reflexive dlopens.
-+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
-+
-+# Compiler flag to generate shared objects directly from archives.
-+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
-+
-+# Compiler flag to generate thread-safe objects.
-+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
-+
-+# Library versioning type.
-+version_type=$version_type
-+
-+# Format of library name prefix.
-+libname_spec=$lt_libname_spec
-+
-+# List of archive names. First name is the real one, the rest are links.
-+# The last name is the one that the linker finds with -lNAME.
-+library_names_spec=$lt_library_names_spec
-+
-+# The coded name of the library, if different from the real name.
-+soname_spec=$lt_soname_spec
-+
-+# Commands used to build and install an old-style archive.
-+RANLIB=$lt_RANLIB
-+old_archive_cmds=$lt_old_archive_cmds_GCJ
-+old_postinstall_cmds=$lt_old_postinstall_cmds
-+old_postuninstall_cmds=$lt_old_postuninstall_cmds
-+
-+# Create an old-style archive from a shared archive.
-+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
-+
-+# Create a temporary old-style archive to link instead of a shared archive.
-+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
-+
-+# Commands used to build and install a shared archive.
-+archive_cmds=$lt_archive_cmds_GCJ
-+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
-+postinstall_cmds=$lt_postinstall_cmds
-+postuninstall_cmds=$lt_postuninstall_cmds
-+
-+# Commands used to build a loadable module (assumed same as above if empty)
-+module_cmds=$lt_module_cmds_GCJ
-+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
-+
-+# Commands to strip libraries.
-+old_striplib=$lt_old_striplib
-+striplib=$lt_striplib
-+
-+# Dependencies to place before the objects being linked to create a
-+# shared library.
-+predep_objects=$lt_predep_objects_GCJ
-+
-+# Dependencies to place after the objects being linked to create a
-+# shared library.
-+postdep_objects=$lt_postdep_objects_GCJ
-+
-+# Dependencies to place before the objects being linked to create a
-+# shared library.
-+predeps=$lt_predeps_GCJ
-+
-+# Dependencies to place after the objects being linked to create a
-+# shared library.
-+postdeps=$lt_postdeps_GCJ
-+
-+# The library search path used internally by the compiler when linking
-+# a shared library.
-+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
-+
-+# Method to check whether dependent libraries are shared objects.
-+deplibs_check_method=$lt_deplibs_check_method
-+
-+# Command to use when deplibs_check_method == file_magic.
-+file_magic_cmd=$lt_file_magic_cmd
-+
-+# Flag that allows shared libraries with undefined symbols to be built.
-+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
-+
-+# Flag that forces no undefined symbols.
-+no_undefined_flag=$lt_no_undefined_flag_GCJ
-+
-+# Commands used to finish a libtool library installation in a directory.
-+finish_cmds=$lt_finish_cmds
-+
-+# Same as above, but a single script fragment to be evaled but not shown.
-+finish_eval=$lt_finish_eval
-+
-+# Take the output of nm and produce a listing of raw symbols and C names.
-+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-+
-+# Transform the output of nm in a proper C declaration
-+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-+
-+# Transform the output of nm in a C name address pair
-+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-+
-+# This is the shared library runtime path variable.
-+runpath_var=$runpath_var
-+
-+# This is the shared library path variable.
-+shlibpath_var=$shlibpath_var
-+
-+# Is shlibpath searched before the hard-coded library search path?
-+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-+
-+# How to hardcode a shared library path into an executable.
-+hardcode_action=$hardcode_action_GCJ
-+
-+# Whether we should hardcode library paths into libraries.
-+hardcode_into_libs=$hardcode_into_libs
-+
-+# Flag to hardcode \$libdir into a binary during linking.
-+# This must work even if \$libdir does not exist.
-+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
-+
-+# If ld is used when linking, flag to hardcode \$libdir into
-+# a binary during linking. This must work even if \$libdir does
-+# not exist.
-+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
-+
-+# Whether we need a single -rpath flag with a separated argument.
-+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
-+
-+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_direct=$hardcode_direct_GCJ
-+
-+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_minus_L=$hardcode_minus_L_GCJ
-+
-+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-+# the resulting binary.
-+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
-+
-+# Set to yes if building a shared library automatically hardcodes DIR into the library
-+# and all subsequent libraries and executables linked against it.
-+hardcode_automatic=$hardcode_automatic_GCJ
-+
-+# Variables whose values should be saved in libtool wrapper scripts and
-+# restored at relink time.
-+variables_saved_for_relink="$variables_saved_for_relink"
-+
-+# Whether libtool must link a program against all its dependency libraries.
-+link_all_deplibs=$link_all_deplibs_GCJ
-+
-+# Compile-time system search path for libraries
-+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-+
-+# Run-time system search path for libraries
-+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-+
-+# Fix the shell variable \$srcfile for the compiler.
-+fix_srcfile_path="$fix_srcfile_path_GCJ"
-+
-+# Set to yes if exported symbols are required.
-+always_export_symbols=$always_export_symbols_GCJ
-+
-+# The commands to list exported symbols.
-+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
-+
-+# The commands to extract the exported symbol list from a shared archive.
-+extract_expsyms_cmds=$lt_extract_expsyms_cmds
-+
-+# Symbols that should not be listed in the preloaded symbols.
-+exclude_expsyms=$lt_exclude_expsyms_GCJ
-+
-+# Symbols that must always be exported.
-+include_expsyms=$lt_include_expsyms_GCJ
-+
-+# ### END LIBTOOL TAG CONFIG: $tagname
-+
-+__EOF__
-+
-+
-+else
-+ # If there is no Makefile yet, we rely on a make rule to execute
-+ # `config.status --recheck' to rerun these tests and create the
-+ # libtool script then.
-+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-+ if test -f "$ltmain_in"; then
-+ test -f Makefile && make "$ltmain"
-+ fi
-+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
-+
-+CC="$lt_save_CC"
-+
-+ else
-+ tagname=""
-+ fi
-+ ;;
-+
-+ RC)
-+
-+
-+
-+# Source file extension for RC test sources.
-+ac_ext=rc
-+
-+# Object file extension for compiled RC test sources.
-+objext=o
-+objext_RC=$objext
-+
-+# Code to be used in simple compile tests
-+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
-+
-+# Code to be used in simple link tests
-+lt_simple_link_test_code="$lt_simple_compile_test_code"
-+
-+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-+
-+# If no C compiler was specified, use CC.
-+LTCC=${LTCC-"$CC"}
-+
-+# Allow CC to be a program name with arguments.
-+compiler=$CC
-+
-+
-+# Allow CC to be a program name with arguments.
-+lt_save_CC="$CC"
-+CC=${RC-"windres"}
-+compiler=$CC
-+compiler_RC=$CC
-+lt_cv_prog_compiler_c_o_RC=yes
-+
-+# The else clause should only fire when bootstrapping the
-+# libtool distribution, otherwise you forgot to ship ltmain.sh
-+# with your package, and you will get complaints that there are
-+# no rules to generate ltmain.sh.
-+if test -f "$ltmain"; then
-+ # See if we are running on zsh, and set the options which allow our commands through
-+ # without removal of \ escapes.
-+ if test -n "${ZSH_VERSION+set}" ; then
-+ setopt NO_GLOB_SUBST
-+ fi
-+ # Now quote all the things that may contain metacharacters while being
-+ # careful not to overquote the AC_SUBSTed values. We take copies of the
-+ # variables and quote the copies for generation of the libtool script.
-+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
-+ SED SHELL STRIP \
-+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-+ deplibs_check_method reload_flag reload_cmds need_locks \
-+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-+ lt_cv_sys_global_symbol_to_c_name_address \
-+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-+ old_postinstall_cmds old_postuninstall_cmds \
-+ compiler_RC \
-+ CC_RC \
-+ LD_RC \
-+ lt_prog_compiler_wl_RC \
-+ lt_prog_compiler_pic_RC \
-+ lt_prog_compiler_static_RC \
-+ lt_prog_compiler_no_builtin_flag_RC \
-+ export_dynamic_flag_spec_RC \
-+ thread_safe_flag_spec_RC \
-+ whole_archive_flag_spec_RC \
-+ enable_shared_with_static_runtimes_RC \
-+ old_archive_cmds_RC \
-+ old_archive_from_new_cmds_RC \
-+ predep_objects_RC \
-+ postdep_objects_RC \
-+ predeps_RC \
-+ postdeps_RC \
-+ compiler_lib_search_path_RC \
-+ archive_cmds_RC \
-+ archive_expsym_cmds_RC \
-+ postinstall_cmds_RC \
-+ postuninstall_cmds_RC \
-+ old_archive_from_expsyms_cmds_RC \
-+ allow_undefined_flag_RC \
-+ no_undefined_flag_RC \
-+ export_symbols_cmds_RC \
-+ hardcode_libdir_flag_spec_RC \
-+ hardcode_libdir_flag_spec_ld_RC \
-+ hardcode_libdir_separator_RC \
-+ hardcode_automatic_RC \
-+ module_cmds_RC \
-+ module_expsym_cmds_RC \
-+ lt_cv_prog_compiler_c_o_RC \
-+ exclude_expsyms_RC \
-+ include_expsyms_RC; do
-+
-+ case $var in
-+ old_archive_cmds_RC | \
-+ old_archive_from_new_cmds_RC | \
-+ archive_cmds_RC | \
-+ archive_expsym_cmds_RC | \
-+ module_cmds_RC | \
-+ module_expsym_cmds_RC | \
-+ old_archive_from_expsyms_cmds_RC | \
-+ export_symbols_cmds_RC | \
-+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
-+ postinstall_cmds | postuninstall_cmds | \
-+ old_postinstall_cmds | old_postuninstall_cmds | \
-+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-+ # Double-quote double-evaled strings.
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-+ ;;
-+ *)
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-+ ;;
-+ esac
-+ done
-+
-+ case $lt_echo in
-+ *'\$0 --fallback-echo"')
-+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-+ ;;
-+ esac
-+
-+cfgfile="$ofile"
-+
-+ cat <<__EOF__ >> "$cfgfile"
-+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
-+
-+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-+
-+# Shell to use when invoking shell scripts.
-+SHELL=$lt_SHELL
-+
-+# Whether or not to build shared libraries.
-+build_libtool_libs=$enable_shared
-+
-+# Whether or not to build static libraries.
-+build_old_libs=$enable_static
-+
-+# Whether or not to add -lc for building shared libraries.
-+build_libtool_need_lc=$archive_cmds_need_lc_RC
-+
-+# Whether or not to disallow shared libs when runtime libs are static
-+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
-+
-+# Whether or not to optimize for fast installation.
-+fast_install=$enable_fast_install
-+
-+# The host system.
-+host_alias=$host_alias
-+host=$host
-+
-+# An echo program that does not interpret backslashes.
-+echo=$lt_echo
-+
-+# The archiver.
-+AR=$lt_AR
-+AR_FLAGS=$lt_AR_FLAGS
-+
-+# A C compiler.
-+LTCC=$lt_LTCC
-+
-+# A language-specific compiler.
-+CC=$lt_compiler_RC
-+
-+# Is the compiler the GNU C compiler?
-+with_gcc=$GCC_RC
-+
-+# An ERE matcher.
-+EGREP=$lt_EGREP
-+
-+# The linker used to build libraries.
-+LD=$lt_LD_RC
-+
-+# Whether we need hard or soft links.
-+LN_S=$lt_LN_S
-+
-+# A BSD-compatible nm program.
-+NM=$lt_NM
-+
-+# A symbol stripping program
-+STRIP=$lt_STRIP
-+
-+# Used to examine libraries when file_magic_cmd begins "file"
-+MAGIC_CMD=$MAGIC_CMD
-+
-+# Used on cygwin: DLL creation program.
-+DLLTOOL="$DLLTOOL"
-+
-+# Used on cygwin: object dumper.
-+OBJDUMP="$OBJDUMP"
-+
-+# Used on cygwin: assembler.
-+AS="$AS"
-+
-+# The name of the directory that contains temporary libtool files.
-+objdir=$objdir
-+
-+# How to create reloadable object files.
-+reload_flag=$lt_reload_flag
-+reload_cmds=$lt_reload_cmds
-+
-+# How to pass a linker flag through the compiler.
-+wl=$lt_lt_prog_compiler_wl_RC
-+
-+# Object file suffix (normally "o").
-+objext="$ac_objext"
-+
-+# Old archive suffix (normally "a").
-+libext="$libext"
-+
-+# Shared library suffix (normally ".so").
-+shrext_cmds='$shrext_cmds'
-+
-+# Executable file suffix (normally "").
-+exeext="$exeext"
-+
-+# Additional compiler flags for building library objects.
-+pic_flag=$lt_lt_prog_compiler_pic_RC
-+pic_mode=$pic_mode
-+
-+# What is the maximum length of a command?
-+max_cmd_len=$lt_cv_sys_max_cmd_len
-+
-+# Does compiler simultaneously support -c and -o options?
-+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
-+
-+# Must we lock files when doing compilation ?
-+need_locks=$lt_need_locks
-+
-+# Do we need the lib prefix for modules?
-+need_lib_prefix=$need_lib_prefix
-+
-+# Do we need a version for libraries?
-+need_version=$need_version
-+
-+# Whether dlopen is supported.
-+dlopen_support=$enable_dlopen
-+
-+# Whether dlopen of programs is supported.
-+dlopen_self=$enable_dlopen_self
-+
-+# Whether dlopen of statically linked programs is supported.
-+dlopen_self_static=$enable_dlopen_self_static
-+
-+# Compiler flag to prevent dynamic linking.
-+link_static_flag=$lt_lt_prog_compiler_static_RC
-+
-+# Compiler flag to turn off builtin functions.
-+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
-+
-+# Compiler flag to allow reflexive dlopens.
-+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
-+
-+# Compiler flag to generate shared objects directly from archives.
-+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
-+
-+# Compiler flag to generate thread-safe objects.
-+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
-+
-+# Library versioning type.
-+version_type=$version_type
-+
-+# Format of library name prefix.
-+libname_spec=$lt_libname_spec
-+
-+# List of archive names. First name is the real one, the rest are links.
-+# The last name is the one that the linker finds with -lNAME.
-+library_names_spec=$lt_library_names_spec
-+
-+# The coded name of the library, if different from the real name.
-+soname_spec=$lt_soname_spec
-+
-+# Commands used to build and install an old-style archive.
-+RANLIB=$lt_RANLIB
-+old_archive_cmds=$lt_old_archive_cmds_RC
-+old_postinstall_cmds=$lt_old_postinstall_cmds
-+old_postuninstall_cmds=$lt_old_postuninstall_cmds
-+
-+# Create an old-style archive from a shared archive.
-+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
-+
-+# Create a temporary old-style archive to link instead of a shared archive.
-+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
-+
-+# Commands used to build and install a shared archive.
-+archive_cmds=$lt_archive_cmds_RC
-+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
-+postinstall_cmds=$lt_postinstall_cmds
-+postuninstall_cmds=$lt_postuninstall_cmds
-+
-+# Commands used to build a loadable module (assumed same as above if empty)
-+module_cmds=$lt_module_cmds_RC
-+module_expsym_cmds=$lt_module_expsym_cmds_RC
-+
-+# Commands to strip libraries.
-+old_striplib=$lt_old_striplib
-+striplib=$lt_striplib
-+
-+# Dependencies to place before the objects being linked to create a
-+# shared library.
-+predep_objects=$lt_predep_objects_RC
-+
-+# Dependencies to place after the objects being linked to create a
-+# shared library.
-+postdep_objects=$lt_postdep_objects_RC
-+
-+# Dependencies to place before the objects being linked to create a
-+# shared library.
-+predeps=$lt_predeps_RC
-+
-+# Dependencies to place after the objects being linked to create a
-+# shared library.
-+postdeps=$lt_postdeps_RC
-+
-+# The library search path used internally by the compiler when linking
-+# a shared library.
-+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
-+
-+# Method to check whether dependent libraries are shared objects.
-+deplibs_check_method=$lt_deplibs_check_method
-+
-+# Command to use when deplibs_check_method == file_magic.
-+file_magic_cmd=$lt_file_magic_cmd
-+
-+# Flag that allows shared libraries with undefined symbols to be built.
-+allow_undefined_flag=$lt_allow_undefined_flag_RC
-+
-+# Flag that forces no undefined symbols.
-+no_undefined_flag=$lt_no_undefined_flag_RC
-+
-+# Commands used to finish a libtool library installation in a directory.
-+finish_cmds=$lt_finish_cmds
-+
-+# Same as above, but a single script fragment to be evaled but not shown.
-+finish_eval=$lt_finish_eval
-+
-+# Take the output of nm and produce a listing of raw symbols and C names.
-+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-+
-+# Transform the output of nm in a proper C declaration
-+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-+
-+# Transform the output of nm in a C name address pair
-+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-+
-+# This is the shared library runtime path variable.
-+runpath_var=$runpath_var
-+
-+# This is the shared library path variable.
-+shlibpath_var=$shlibpath_var
-+
-+# Is shlibpath searched before the hard-coded library search path?
-+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-+
-+# How to hardcode a shared library path into an executable.
-+hardcode_action=$hardcode_action_RC
-+
-+# Whether we should hardcode library paths into libraries.
-+hardcode_into_libs=$hardcode_into_libs
-+
-+# Flag to hardcode \$libdir into a binary during linking.
-+# This must work even if \$libdir does not exist.
-+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
-+
-+# If ld is used when linking, flag to hardcode \$libdir into
-+# a binary during linking. This must work even if \$libdir does
-+# not exist.
-+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
-+
-+# Whether we need a single -rpath flag with a separated argument.
-+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
-+
-+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_direct=$hardcode_direct_RC
-+
-+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_minus_L=$hardcode_minus_L_RC
-+
-+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-+# the resulting binary.
-+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
-+
-+# Set to yes if building a shared library automatically hardcodes DIR into the library
-+# and all subsequent libraries and executables linked against it.
-+hardcode_automatic=$hardcode_automatic_RC
-+
-+# Variables whose values should be saved in libtool wrapper scripts and
-+# restored at relink time.
-+variables_saved_for_relink="$variables_saved_for_relink"
-+
-+# Whether libtool must link a program against all its dependency libraries.
-+link_all_deplibs=$link_all_deplibs_RC
-+
-+# Compile-time system search path for libraries
-+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-+
-+# Run-time system search path for libraries
-+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-+
-+# Fix the shell variable \$srcfile for the compiler.
-+fix_srcfile_path="$fix_srcfile_path_RC"
-+
-+# Set to yes if exported symbols are required.
-+always_export_symbols=$always_export_symbols_RC
-+
-+# The commands to list exported symbols.
-+export_symbols_cmds=$lt_export_symbols_cmds_RC
-+
-+# The commands to extract the exported symbol list from a shared archive.
-+extract_expsyms_cmds=$lt_extract_expsyms_cmds
-+
-+# Symbols that should not be listed in the preloaded symbols.
-+exclude_expsyms=$lt_exclude_expsyms_RC
-+
-+# Symbols that must always be exported.
-+include_expsyms=$lt_include_expsyms_RC
-+
-+# ### END LIBTOOL TAG CONFIG: $tagname
-+
-+__EOF__
-+
-+
-+else
-+ # If there is no Makefile yet, we rely on a make rule to execute
-+ # `config.status --recheck' to rerun these tests and create the
-+ # libtool script then.
-+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-+ if test -f "$ltmain_in"; then
-+ test -f Makefile && make "$ltmain"
-+ fi
-+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
-+
-+CC="$lt_save_CC"
-+
-+ ;;
-+
-+ *)
-+ { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
-+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
-+ { (exit 1); exit 1; }; }
-+ ;;
-+ esac
-+
-+ # Append the new tag name to the list of available tags.
-+ if test -n "$tagname" ; then
-+ available_tags="$available_tags $tagname"
-+ fi
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+
-+ # Now substitute the updated list of available tags.
-+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
-+ mv "${ofile}T" "$ofile"
-+ chmod +x "$ofile"
-+ else
-+ rm -f "${ofile}T"
-+ { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
-+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+fi
-+
-+
-+
-+# This can be used to rebuild libtool when needed
-+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
-+
-+# Always use our own libtool.
-+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+
-+# Prevent multiple expansion
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+if test "x$GCC" = "xyes"; then
-+ case " $CFLAGS " in
-+ *[\ \ ]-Wall[\ \ ]*) ;;
-+ *) CFLAGS="$CFLAGS -Wall" ;;
-+ esac
-+
-+ if test "x$enable_ansi" = "xyes"; then
-+ case " $CFLAGS " in
-+ *[\ \ ]-ansi[\ \ ]*) ;;
-+ *) CFLAGS="$CFLAGS -ansi" ;;
-+ esac
-+
-+ case " $CFLAGS " in
-+ *[\ \ ]-pedantic[\ \ ]*) ;;
-+ *) CFLAGS="$CFLAGS -pedantic" ;;
-+ esac
-+ fi
-+fi
-+
-+MAJOR_VERSION=2
-+
-+
-+GETTEXT_PACKAGE=GConf$MAJOR_VERSION
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
-+_ACEOF
-+
-+
-+
-+GCONF_CURRENT=5
-+
-+GCONF_REVISION=0
-+
-+GCONF_AGE=1
-+
-+
-+
-+
-+
-+# find the actual value for $prefix that we'll end up with
-+REAL_PREFIX=
-+if test "x$prefix" = "xNONE"; then
-+ REAL_PREFIX=$ac_default_prefix
-+else
-+ REAL_PREFIX=$prefix
-+fi
-+
-+# Have to go $sysconfdir->$prefix/etc->/usr/local/etc
-+# if you actually know how to code shell then fix this :-)
-+SYSCONFDIR_TMP="$sysconfdir"
-+old_prefix=$prefix
-+prefix=$REAL_PREFIX
-+EXPANDED_SYSCONFDIR=`eval echo $SYSCONFDIR_TMP`
-+prefix=$old_prefix
-+
-+
-+ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
-+
-+
-+GCONF_CONFIG_SOURCE=
-+# Check whether --enable-gconf-source or --disable-gconf-source was given.
-+if test "${enable_gconf_source+set}" = set; then
-+ enableval="$enable_gconf_source"
-+ GCONF_CONFIG_SOURCE=$enable_gconf_source
-+fi;
-+
-+if test "x$GCONF_CONFIG_SOURCE" = "x"; then
-+ GCONF_CONFIG_SOURCE="xml::\${sysconfdir}/gconf/gconf.xml.defaults"
-+ INSTALL_GCONF_CONFIG_SOURCE="xml::\$(DESTDIR)\${sysconfdir}/gconf/gconf.xml.defaults"
-+ echo "FYI: " "Using default config source $GCONF_CONFIG_SOURCE for schema installation"
-+else
-+ echo "FYI: " "Using config source $GCONF_CONFIG_SOURCE for schema installation"
-+fi
-+
-+
-+
-+
-+# Check whether --enable-debug or --disable-debug was given.
-+if test "${enable_debug+set}" = set; then
-+ enableval="$enable_debug"
-+
-+else
-+ enable_debug=minimum
-+fi;
-+
-+if test "x$enable_debug" = "xyes"; then
-+ CFLAGS="$CFLAGS -DGCONF_ENABLE_DEBUG=1"
-+ echo "FYI: " "Will build with debugging spew and checks"
-+else
-+ if test "x$enable_debug" = "xno"; then
-+ CFLAGS="$CFLAGS -DG_DISABLE_CHECKS=1 -DG_DISABLE_ASSERT=1"
-+ echo "FYI: " "Will build without *any* debugging code"
-+ else
-+ echo "FYI: " "Will build with debug checks but no debug spew"
-+ fi
-+fi
-+
-+
-+# Check whether --with-html-dir or --without-html-dir was given.
-+if test "${with_html_dir+set}" = set; then
-+ withval="$with_html_dir"
-+
-+fi;
-+
-+if test "x$with_html_dir" = "x" ; then
-+ HTML_DIR='${datadir}/gtk-doc/html'
-+else
-+ HTML_DIR=$with_html_dir
-+fi
-+
-+
-+
-+
-+# Extract the first word of "gtkdoc-mkdb", so it can be a program name with args.
-+set dummy gtkdoc-mkdb; 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_GTKDOC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$GTKDOC"; then
-+ ac_cv_prog_GTKDOC="$GTKDOC" # 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_GTKDOC="true"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_prog_GTKDOC" && ac_cv_prog_GTKDOC="false"
-+fi
-+fi
-+GTKDOC=$ac_cv_prog_GTKDOC
-+if test -n "$GTKDOC"; then
-+ echo "$as_me:$LINENO: result: $GTKDOC" >&5
-+echo "${ECHO_T}$GTKDOC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+
-+gtk_doc_min_version=0.6
-+if $GTKDOC ; then
-+ gtk_doc_version=`gtkdoc-mkdb --version`
-+ echo "$as_me:$LINENO: checking gtk-doc version ($gtk_doc_version) >= $gtk_doc_min_version" >&5
-+echo $ECHO_N "checking gtk-doc version ($gtk_doc_version) >= $gtk_doc_min_version... $ECHO_C" >&6
-+
-+ IFS="${IFS= }"; gconf_save_IFS="$IFS"; IFS="."
-+ set $gtk_doc_version
-+ for min in $gtk_doc_min_version ; do
-+ cur=$1; shift
-+ if test -z $min ; then break; fi
-+ if test -z $cur ; then GTKDOC=false; break; fi
-+ if test $cur -gt $min ; then break ; fi
-+ if test $cur -lt $min ; then GTKDOC=false; break ; fi
-+ done
-+ IFS="$gconf_save_IFS"
-+
-+ if $GTKDOC ; then
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+ fi
-+fi
-+
-+
-+
-+if $GTKDOC; then
-+ HAVE_GTK_DOC_TRUE=
-+ HAVE_GTK_DOC_FALSE='#'
-+else
-+ HAVE_GTK_DOC_TRUE='#'
-+ HAVE_GTK_DOC_FALSE=
-+fi
-+
-+
-+
-+# Extract the first word of "db2html", so it can be a program name with args.
-+set dummy db2html; 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_DB2HTML+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$DB2HTML"; then
-+ ac_cv_prog_DB2HTML="$DB2HTML" # 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_DB2HTML="true"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_prog_DB2HTML" && ac_cv_prog_DB2HTML="false"
-+fi
-+fi
-+DB2HTML=$ac_cv_prog_DB2HTML
-+if test -n "$DB2HTML"; then
-+ echo "$as_me:$LINENO: result: $DB2HTML" >&5
-+echo "${ECHO_T}$DB2HTML" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+
-+
-+if $DB2HTML; then
-+ HAVE_DOCBOOK_TRUE=
-+ HAVE_DOCBOOK_FALSE='#'
-+else
-+ HAVE_DOCBOOK_TRUE='#'
-+ HAVE_DOCBOOK_FALSE=
-+fi
-+
-+
-+# Check whether --enable-gtk-doc or --disable-gtk-doc was given.
-+if test "${enable_gtk_doc+set}" = set; then
-+ enableval="$enable_gtk_doc"
-+ enable_gtk_doc="$enableval"
-+else
-+ enable_gtk_doc=auto
-+fi;
-+
-+if test x$enable_gtk_doc = xauto ; then
-+ if test x$GTKDOC = xtrue ; then
-+ enable_gtk_doc=yes
-+ else
-+ enable_gtk_doc=no
-+ fi
-+fi
-+
-+
-+
-+if test x$enable_gtk_doc = xyes; then
-+ ENABLE_GTK_DOC_TRUE=
-+ ENABLE_GTK_DOC_FALSE='#'
-+else
-+ ENABLE_GTK_DOC_TRUE='#'
-+ ENABLE_GTK_DOC_FALSE=
-+fi
-+
-+
-+# Check whether --enable-gtk or --disable-gtk was given.
-+if test "${enable_gtk+set}" = set; then
-+ enableval="$enable_gtk"
-+ enable_gtk="$enableval"
-+else
-+ enable_gtk=auto
-+fi;
-+
-+# Check whether --enable-system-bus or --disable-system-bus was given.
-+if test "${enable_system_bus+set}" = set; then
-+ enableval="$enable_system_bus"
-+ enable_system_bus="$enableval"
-+else
-+ enable_system_bus=no
-+fi;
-+
-+
-+
-+if test x$enable_system_bus = xyes; then
-+ USE_SYSTEM_BUS_TRUE=
-+ USE_SYSTEM_BUS_FALSE='#'
-+else
-+ USE_SYSTEM_BUS_TRUE='#'
-+ USE_SYSTEM_BUS_FALSE=
-+fi
-+
-+if test x$enable_system_bus = xyes; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+@%:@define USE_SYSTEM_BUS 1
-+_ACEOF
-+
-+fi
-+
-+
-+# Check whether --with-ipc or --without-ipc was given.
-+if test "${with_ipc+set}" = set; then
-+ withval="$with_ipc"
-+ with_ipc="$withval"
-+else
-+ with_ipc=dbus
-+fi;
-+
-+if test x$with_ipc = xorbit -o x$with_ipc = xboth; then
-+
-+ succeeded=no
-+
-+ if test -z "$PKG_CONFIG"; then
-+ # Extract the first word of "pkg-config", so it can be a program name with args.
-+set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $PKG_CONFIG in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
-+ ;;
-+esac
-+fi
-+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-+
-+if test -n "$PKG_CONFIG"; then
-+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
-+echo "${ECHO_T}$PKG_CONFIG" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ 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
-+ echo "$as_me:$LINENO: checking for ORBit-2.0 >= 2.4.0 linc >= 0.5.0" >&5
-+echo $ECHO_N "checking for ORBit-2.0 >= 2.4.0 linc >= 0.5.0... $ECHO_C" >&6
-+
-+ if $PKG_CONFIG --exists "ORBit-2.0 >= 2.4.0 linc >= 0.5.0" ; then
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ succeeded=yes
-+
-+ echo "$as_me:$LINENO: checking GCONF_ORBIT_CFLAGS" >&5
-+echo $ECHO_N "checking GCONF_ORBIT_CFLAGS... $ECHO_C" >&6
-+ GCONF_ORBIT_CFLAGS=`$PKG_CONFIG --cflags "ORBit-2.0 >= 2.4.0 linc >= 0.5.0"`
-+ echo "$as_me:$LINENO: result: $GCONF_ORBIT_CFLAGS" >&5
-+echo "${ECHO_T}$GCONF_ORBIT_CFLAGS" >&6
-+
-+ echo "$as_me:$LINENO: checking GCONF_ORBIT_LIBS" >&5
-+echo $ECHO_N "checking GCONF_ORBIT_LIBS... $ECHO_C" >&6
-+ GCONF_ORBIT_LIBS=`$PKG_CONFIG --libs "ORBit-2.0 >= 2.4.0 linc >= 0.5.0"`
-+ echo "$as_me:$LINENO: result: $GCONF_ORBIT_LIBS" >&5
-+echo "${ECHO_T}$GCONF_ORBIT_LIBS" >&6
-+ else
-+ GCONF_ORBIT_CFLAGS=""
-+ GCONF_ORBIT_LIBS=""
-+ ## If we have a custom action on failure, don't print errors, but
-+ ## do set a variable so people can do so.
-+ GCONF_ORBIT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ORBit-2.0 >= 2.4.0 linc >= 0.5.0"`
-+
-+ fi
-+
-+
-+
-+ 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
-+ have_orbit=yes
-+ else
-+ have_orbit=no
-+ fi
-+
-+ if test x$have_orbit = xno ; then
-+ { echo "$as_me:$LINENO: WARNING: ORBit development libraries not found" >&5
-+echo "$as_me: WARNING: ORBit development libraries not found" >&2;}
-+ have_orbit=no
-+ else
-+ ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0`"
-+
-+
-+cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_ORBIT 1
-+_ACEOF
-+
-+ fi
-+else
-+ have_orbit=no
-+fi
-+
-+PC_REQUIRES=ORBit-2.0
-+
-+if test x$with_ipc = xdbus -o x$with_ipc = xboth; then
-+
-+ succeeded=no
-+
-+ if test -z "$PKG_CONFIG"; then
-+ # Extract the first word of "pkg-config", so it can be a program name with args.
-+set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $PKG_CONFIG in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
-+ ;;
-+esac
-+fi
-+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-+
-+if test -n "$PKG_CONFIG"; then
-+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
-+echo "${ECHO_T}$PKG_CONFIG" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ 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
-+ echo "$as_me:$LINENO: checking for dbus-glib-1 >= 0.22" >&5
-+echo $ECHO_N "checking for dbus-glib-1 >= 0.22... $ECHO_C" >&6
-+
-+ if $PKG_CONFIG --exists "dbus-glib-1 >= 0.22" ; then
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ succeeded=yes
-+
-+ echo "$as_me:$LINENO: checking GCONF_DBUS_CFLAGS" >&5
-+echo $ECHO_N "checking GCONF_DBUS_CFLAGS... $ECHO_C" >&6
-+ GCONF_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-glib-1 >= 0.22"`
-+ echo "$as_me:$LINENO: result: $GCONF_DBUS_CFLAGS" >&5
-+echo "${ECHO_T}$GCONF_DBUS_CFLAGS" >&6
-+
-+ echo "$as_me:$LINENO: checking GCONF_DBUS_LIBS" >&5
-+echo $ECHO_N "checking GCONF_DBUS_LIBS... $ECHO_C" >&6
-+ GCONF_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-glib-1 >= 0.22"`
-+ echo "$as_me:$LINENO: result: $GCONF_DBUS_LIBS" >&5
-+echo "${ECHO_T}$GCONF_DBUS_LIBS" >&6
-+ else
-+ GCONF_DBUS_CFLAGS=""
-+ GCONF_DBUS_LIBS=""
-+ ## If we have a custom action on failure, don't print errors, but
-+ ## do set a variable so people can do so.
-+ GCONF_DBUS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "dbus-glib-1 >= 0.22"`
-+
-+ fi
-+
-+
-+
-+ 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
-+ have_dbus=yes
-+ else
-+ have_dbus=no
-+ fi
-+
-+ if test x$have_dbus = xyes; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_DBUS 1
-+_ACEOF
-+
-+ PC_REQUIRES="dbus-1 dbus-glib-1"
-+ fi
-+else
-+ have_dbus=no
-+fi
-+
-+
-+
-+if test x$have_orbit = xno -a x$have_dbus = xno; then
-+ { { echo "$as_me:$LINENO: error: You need either ORBit or D-BUS for IPC" >&5
-+echo "$as_me: error: You need either ORBit or D-BUS for IPC" >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+
-+
-+if test x$have_orbit = xyes; then
-+ HAVE_ORBIT_TRUE=
-+ HAVE_ORBIT_FALSE='#'
-+else
-+ HAVE_ORBIT_TRUE='#'
-+ HAVE_ORBIT_FALSE=
-+fi
-+
-+
-+
-+if test x$have_dbus = xyes; then
-+ HAVE_DBUS_TRUE=
-+ HAVE_DBUS_FALSE='#'
-+else
-+ HAVE_DBUS_TRUE='#'
-+ HAVE_DBUS_FALSE=
-+fi
-+
-+
-+GCONF_IPC_CFLAGS="$GCONF_ORBIT_CFLAGS $GCONF_DBUS_CFLAGS"
-+GCONF_IPC_LIBS="$GCONF_ORBIT_LIBS $GCONF_DBUS_LIBS"
-+
-+
-+
-+
-+DBUS_SERVICE_DIR=$libdir/dbus-1.0/services
-+
-+
-+PKGCONFIG_MODULES='gmodule-2.0 >= 2.0.1 gobject-2.0 >= 2.0.1'
-+PKGCONFIG_MODULES_WITH_XML="$PKGCONFIG_MODULES libxml-2.0"
-+PKGCONFIG_MODULES_WITH_GTK=" $PKGCONFIG_MODULES gtk+-2.0 >= 2.0.0"
-+PKGCONFIG_MODULES_WITH_XML_AND_GTK=" $PKGCONFIG_MODULES gtk+-2.0 libxml-2.0"
-+
-+
-+ succeeded=no
-+
-+ if test -z "$PKG_CONFIG"; then
-+ # Extract the first word of "pkg-config", so it can be a program name with args.
-+set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $PKG_CONFIG in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
-+ ;;
-+esac
-+fi
-+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-+
-+if test -n "$PKG_CONFIG"; then
-+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
-+echo "${ECHO_T}$PKG_CONFIG" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ 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
-+ echo "$as_me:$LINENO: checking for $PKGCONFIG_MODULES" >&5
-+echo $ECHO_N "checking for $PKGCONFIG_MODULES... $ECHO_C" >&6
-+
-+ if $PKG_CONFIG --exists "$PKGCONFIG_MODULES" ; then
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ succeeded=yes
-+
-+ echo "$as_me:$LINENO: checking DEPENDENT_CFLAGS" >&5
-+echo $ECHO_N "checking DEPENDENT_CFLAGS... $ECHO_C" >&6
-+ DEPENDENT_CFLAGS=`$PKG_CONFIG --cflags "$PKGCONFIG_MODULES"`
-+ echo "$as_me:$LINENO: result: $DEPENDENT_CFLAGS" >&5
-+echo "${ECHO_T}$DEPENDENT_CFLAGS" >&6
-+
-+ echo "$as_me:$LINENO: checking DEPENDENT_LIBS" >&5
-+echo $ECHO_N "checking DEPENDENT_LIBS... $ECHO_C" >&6
-+ DEPENDENT_LIBS=`$PKG_CONFIG --libs "$PKGCONFIG_MODULES"`
-+ echo "$as_me:$LINENO: result: $DEPENDENT_LIBS" >&5
-+echo "${ECHO_T}$DEPENDENT_LIBS" >&6
-+ else
-+ DEPENDENT_CFLAGS=""
-+ DEPENDENT_LIBS=""
-+ ## If we have a custom action on failure, don't print errors, but
-+ ## do set a variable so people can do so.
-+ DEPENDENT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$PKGCONFIG_MODULES"`
-+ echo $DEPENDENT_PKG_ERRORS
-+ fi
-+
-+
-+
-+ 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
-+ :
-+ else
-+ { { echo "$as_me:$LINENO: error: Library requirements ($PKGCONFIG_MODULES) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5
-+echo "$as_me: error: Library requirements ($PKGCONFIG_MODULES) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+
-+
-+ succeeded=no
-+
-+ if test -z "$PKG_CONFIG"; then
-+ # Extract the first word of "pkg-config", so it can be a program name with args.
-+set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $PKG_CONFIG in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
-+ ;;
-+esac
-+fi
-+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-+
-+if test -n "$PKG_CONFIG"; then
-+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
-+echo "${ECHO_T}$PKG_CONFIG" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ 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
-+ echo "$as_me:$LINENO: checking for $PKGCONFIG_MODULES_WITH_XML" >&5
-+echo $ECHO_N "checking for $PKGCONFIG_MODULES_WITH_XML... $ECHO_C" >&6
-+
-+ if $PKG_CONFIG --exists "$PKGCONFIG_MODULES_WITH_XML" ; then
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ succeeded=yes
-+
-+ echo "$as_me:$LINENO: checking DEPENDENT_WITH_XML_CFLAGS" >&5
-+echo $ECHO_N "checking DEPENDENT_WITH_XML_CFLAGS... $ECHO_C" >&6
-+ DEPENDENT_WITH_XML_CFLAGS=`$PKG_CONFIG --cflags "$PKGCONFIG_MODULES_WITH_XML"`
-+ echo "$as_me:$LINENO: result: $DEPENDENT_WITH_XML_CFLAGS" >&5
-+echo "${ECHO_T}$DEPENDENT_WITH_XML_CFLAGS" >&6
-+
-+ echo "$as_me:$LINENO: checking DEPENDENT_WITH_XML_LIBS" >&5
-+echo $ECHO_N "checking DEPENDENT_WITH_XML_LIBS... $ECHO_C" >&6
-+ DEPENDENT_WITH_XML_LIBS=`$PKG_CONFIG --libs "$PKGCONFIG_MODULES_WITH_XML"`
-+ echo "$as_me:$LINENO: result: $DEPENDENT_WITH_XML_LIBS" >&5
-+echo "${ECHO_T}$DEPENDENT_WITH_XML_LIBS" >&6
-+ else
-+ DEPENDENT_WITH_XML_CFLAGS=""
-+ DEPENDENT_WITH_XML_LIBS=""
-+ ## If we have a custom action on failure, don't print errors, but
-+ ## do set a variable so people can do so.
-+ DEPENDENT_WITH_XML_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$PKGCONFIG_MODULES_WITH_XML"`
-+ echo $DEPENDENT_WITH_XML_PKG_ERRORS
-+ fi
-+
-+
-+
-+ 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
-+ :
-+ else
-+ { { echo "$as_me:$LINENO: error: Library requirements ($PKGCONFIG_MODULES_WITH_XML) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5
-+echo "$as_me: error: Library requirements ($PKGCONFIG_MODULES_WITH_XML) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+
-+
-+if test "x$enable_gtk" != "xno"; then
-+
-+ succeeded=no
-+
-+ if test -z "$PKG_CONFIG"; then
-+ # Extract the first word of "pkg-config", so it can be a program name with args.
-+set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $PKG_CONFIG in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
-+ ;;
-+esac
-+fi
-+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-+
-+if test -n "$PKG_CONFIG"; then
-+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
-+echo "${ECHO_T}$PKG_CONFIG" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ 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
-+ echo "$as_me:$LINENO: checking for $PKGCONFIG_MODULES_WITH_GTK" >&5
-+echo $ECHO_N "checking for $PKGCONFIG_MODULES_WITH_GTK... $ECHO_C" >&6
-+
-+ if $PKG_CONFIG --exists "$PKGCONFIG_MODULES_WITH_GTK" ; then
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ succeeded=yes
-+
-+ echo "$as_me:$LINENO: checking DEPENDENT_WITH_GTK_CFLAGS" >&5
-+echo $ECHO_N "checking DEPENDENT_WITH_GTK_CFLAGS... $ECHO_C" >&6
-+ DEPENDENT_WITH_GTK_CFLAGS=`$PKG_CONFIG --cflags "$PKGCONFIG_MODULES_WITH_GTK"`
-+ echo "$as_me:$LINENO: result: $DEPENDENT_WITH_GTK_CFLAGS" >&5
-+echo "${ECHO_T}$DEPENDENT_WITH_GTK_CFLAGS" >&6
-+
-+ echo "$as_me:$LINENO: checking DEPENDENT_WITH_GTK_LIBS" >&5
-+echo $ECHO_N "checking DEPENDENT_WITH_GTK_LIBS... $ECHO_C" >&6
-+ DEPENDENT_WITH_GTK_LIBS=`$PKG_CONFIG --libs "$PKGCONFIG_MODULES_WITH_GTK"`
-+ echo "$as_me:$LINENO: result: $DEPENDENT_WITH_GTK_LIBS" >&5
-+echo "${ECHO_T}$DEPENDENT_WITH_GTK_LIBS" >&6
-+ else
-+ DEPENDENT_WITH_GTK_CFLAGS=""
-+ DEPENDENT_WITH_GTK_LIBS=""
-+ ## If we have a custom action on failure, don't print errors, but
-+ ## do set a variable so people can do so.
-+ DEPENDENT_WITH_GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$PKGCONFIG_MODULES_WITH_GTK"`
-+
-+ fi
-+
-+
-+
-+ 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
-+ HAVE_GTK=yes
-+ else
-+ HAVE_GTK=no
-+ fi
-+
-+
-+ succeeded=no
-+
-+ if test -z "$PKG_CONFIG"; then
-+ # Extract the first word of "pkg-config", so it can be a program name with args.
-+set dummy pkg-config; 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_path_PKG_CONFIG+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $PKG_CONFIG in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
-+ ;;
-+esac
-+fi
-+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-+
-+if test -n "$PKG_CONFIG"; then
-+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
-+echo "${ECHO_T}$PKG_CONFIG" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ 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
-+ echo "$as_me:$LINENO: checking for $PKGCONFIG_MODULES_WITH_XML_AND_GTK" >&5
-+echo $ECHO_N "checking for $PKGCONFIG_MODULES_WITH_XML_AND_GTK... $ECHO_C" >&6
-+
-+ if $PKG_CONFIG --exists "$PKGCONFIG_MODULES_WITH_XML_AND_GTK" ; then
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ succeeded=yes
-+
-+ echo "$as_me:$LINENO: checking DEPENDENT_WITH_XML_AND_GTK_CFLAGS" >&5
-+echo $ECHO_N "checking DEPENDENT_WITH_XML_AND_GTK_CFLAGS... $ECHO_C" >&6
-+ DEPENDENT_WITH_XML_AND_GTK_CFLAGS=`$PKG_CONFIG --cflags "$PKGCONFIG_MODULES_WITH_XML_AND_GTK"`
-+ echo "$as_me:$LINENO: result: $DEPENDENT_WITH_XML_AND_GTK_CFLAGS" >&5
-+echo "${ECHO_T}$DEPENDENT_WITH_XML_AND_GTK_CFLAGS" >&6
-+
-+ echo "$as_me:$LINENO: checking DEPENDENT_WITH_XML_AND_GTK_LIBS" >&5
-+echo $ECHO_N "checking DEPENDENT_WITH_XML_AND_GTK_LIBS... $ECHO_C" >&6
-+ DEPENDENT_WITH_XML_AND_GTK_LIBS=`$PKG_CONFIG --libs "$PKGCONFIG_MODULES_WITH_XML_AND_GTK"`
-+ echo "$as_me:$LINENO: result: $DEPENDENT_WITH_XML_AND_GTK_LIBS" >&5
-+echo "${ECHO_T}$DEPENDENT_WITH_XML_AND_GTK_LIBS" >&6
-+ else
-+ DEPENDENT_WITH_XML_AND_GTK_CFLAGS=""
-+ DEPENDENT_WITH_XML_AND_GTK_LIBS=""
-+ ## If we have a custom action on failure, don't print errors, but
-+ ## do set a variable so people can do so.
-+ DEPENDENT_WITH_XML_AND_GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$PKGCONFIG_MODULES_WITH_XML_AND_GTK"`
-+
-+ fi
-+
-+
-+
-+ 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
-+ :
-+ else
-+ DEPENDENT_WITH_XML_AND_GTK_CFLAGS=$DEPENDENT_WITH_XML_CFLAGS DEPENDENT_WITH_XML_AND_GTK_LIBS=$DEPENDENT_WITH_XML_LIBS
-+ fi
-+
-+
-+ if test "x$enable_gtk" = "xyes" && test "x$HAVE_GTK" = "xno"; then
-+ { { echo "$as_me:$LINENO: error:
-+*** Could not find GTK+ 2.0 or greater.
-+*** Go to http://www.gtk.org/ to get it." >&5
-+echo "$as_me: error:
-+*** Could not find GTK+ 2.0 or greater.
-+*** Go to http://www.gtk.org/ to get it." >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+else
-+ HAVE_GTK=no
-+ DEPENDENT_WITH_XML_AND_GTK_CFLAGS=$DEPENDENT_WITH_XML_CFLAGS
-+ DEPENDENT_WITH_XML_AND_GTK_LIBS=$DEPENDENT_WITH_XML_LIBS
-+fi
-+
-+
-+
-+if test x$HAVE_GTK != xno; then
-+ GTK_TRUE=
-+ GTK_FALSE='#'
-+else
-+ GTK_TRUE='#'
-+ GTK_FALSE=
-+fi
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+echo "$as_me:$LINENO: checking for poptGetArg in -lpopt" >&5
-+echo $ECHO_N "checking for poptGetArg in -lpopt... $ECHO_C" >&6
-+if test "${ac_cv_lib_popt_poptGetArg+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lpopt $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 poptGetArg ();
-+int
-+main ()
-+{
-+poptGetArg ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_popt_poptGetArg=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_popt_poptGetArg=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_popt_poptGetArg" >&5
-+echo "${ECHO_T}$ac_cv_lib_popt_poptGetArg" >&6
-+if test $ac_cv_lib_popt_poptGetArg = yes; then
-+ POPT_LIBS=-lpopt
-+else
-+ if test "${ac_cv_header_popt_h+set}" = set; then
-+ echo "$as_me:$LINENO: checking for popt.h" >&5
-+echo $ECHO_N "checking for popt.h... $ECHO_C" >&6
-+if test "${ac_cv_header_popt_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_popt_h" >&5
-+echo "${ECHO_T}$ac_cv_header_popt_h" >&6
-+else
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking popt.h usability" >&5
-+echo $ECHO_N "checking popt.h usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+@%:@include <popt.h>
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f conftest.err 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 popt.h presence" >&5
-+echo $ECHO_N "checking popt.h presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+@%:@include <popt.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
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+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:$ac_c_preproc_warn_flag in
-+ yes:no: )
-+ { echo "$as_me:$LINENO: WARNING: popt.h: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: popt.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: popt.h: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: popt.h: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
-+ ;;
-+ no:yes:* )
-+ { echo "$as_me:$LINENO: WARNING: popt.h: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: popt.h: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: popt.h: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: popt.h: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: popt.h: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: popt.h: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: popt.h: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: popt.h: section \"Present But Cannot Be Compiled\"" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: popt.h: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: popt.h: proceeding with the preprocessor's result" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: popt.h: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: popt.h: in the future, the compiler will take precedence" >&2;}
-+ (
-+ cat <<\_ASBOX
-+@%:@@%:@ ------------------------------------------ @%:@@%:@
-+@%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@
-+@%:@@%:@ ------------------------------------------ @%:@@%:@
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+esac
-+echo "$as_me:$LINENO: checking for popt.h" >&5
-+echo $ECHO_N "checking for popt.h... $ECHO_C" >&6
-+if test "${ac_cv_header_popt_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_header_popt_h=$ac_header_preproc
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_popt_h" >&5
-+echo "${ECHO_T}$ac_cv_header_popt_h" >&6
-+
-+fi
-+if test $ac_cv_header_popt_h = yes; then
-+ :
-+else
-+ { { echo "$as_me:$LINENO: error:
-+*** Couldn't find popt. Please download and install from
-+*** ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.0.x/ and try again." >&5
-+echo "$as_me: error:
-+*** Couldn't find popt. Please download and install from
-+*** ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.0.x/ and try again." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+
-+fi
-+
-+
-+
-+if test "${ac_cv_header_pthread_h+set}" = set; then
-+ echo "$as_me:$LINENO: checking for pthread.h" >&5
-+echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6
-+if test "${ac_cv_header_pthread_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5
-+echo "${ECHO_T}$ac_cv_header_pthread_h" >&6
-+else
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking pthread.h usability" >&5
-+echo $ECHO_N "checking pthread.h usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+@%:@include <pthread.h>
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f conftest.err 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 pthread.h presence" >&5
-+echo $ECHO_N "checking pthread.h presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+@%:@include <pthread.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
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+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:$ac_c_preproc_warn_flag in
-+ yes:no: )
-+ { echo "$as_me:$LINENO: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: pthread.h: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
-+ ;;
-+ no:yes:* )
-+ { echo "$as_me:$LINENO: WARNING: pthread.h: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: pthread.h: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: pthread.h: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: pthread.h: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: pthread.h: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: pthread.h: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: pthread.h: proceeding with the preprocessor's result" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: pthread.h: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: pthread.h: in the future, the compiler will take precedence" >&2;}
-+ (
-+ cat <<\_ASBOX
-+@%:@@%:@ ------------------------------------------ @%:@@%:@
-+@%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@
-+@%:@@%:@ ------------------------------------------ @%:@@%:@
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+esac
-+echo "$as_me:$LINENO: checking for pthread.h" >&5
-+echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6
-+if test "${ac_cv_header_pthread_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_header_pthread_h=$ac_header_preproc
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5
-+echo "${ECHO_T}$ac_cv_header_pthread_h" >&6
-+
-+fi
-+if test $ac_cv_header_pthread_h = yes; then
-+ have_pthreads=yes
-+fi
-+
-+
-+
-+
-+if test -n "$have_pthreads"; then
-+ PTHREADS_TRUE=
-+ PTHREADS_FALSE='#'
-+else
-+ PTHREADS_TRUE='#'
-+ PTHREADS_FALSE=
-+fi
-+
-+
-+
-+for ac_func in usleep
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char $ac_func (); 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
-+
-+#undef $ac_func
-+
-+/* 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 $ac_func ();
-+/* 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_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ eval "$as_ac_var=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+done
-+
-+
-+
-+for ac_func in flockfile
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char $ac_func (); 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
-+
-+#undef $ac_func
-+
-+/* 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 $ac_func ();
-+/* 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_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ eval "$as_ac_var=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+done
-+
-+
-+ALL_LINGUAS="am ar az be bg bn ca cs cy da de el en_GB es eu fa fi fr ga gl hi hr hu id it ja ko lt lv mk ml mn ms nl nn no pl pt pt_BR ro ru sk sl sq sr sr@Latn sv tr uk vi yi zh_CN zh_TW ta"
-+
-+
-+
-+for ac_header in locale.h
-+do
-+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+ 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
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+else
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* 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>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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f conftest.err 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 $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+@%:@include <$ac_header>
-+_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
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+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:$ac_c_preproc_warn_flag in
-+ yes:no: )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
-+ ;;
-+ no:yes:* )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-+ (
-+ cat <<\_ASBOX
-+@%:@@%:@ ------------------------------------------ @%:@@%:@
-+@%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@
-+@%:@@%:@ ------------------------------------------ @%:@@%:@
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+esac
-+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
-+else
-+ eval "$as_ac_Header=\$ac_header_preproc"
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+
-+fi
-+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_locale_h = yes; then
-+ echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
-+echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6
-+if test "${am_cv_val_LC_MESSAGES+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <locale.h>
-+int
-+main ()
-+{
-+return LC_MESSAGES
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ am_cv_val_LC_MESSAGES=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+am_cv_val_LC_MESSAGES=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
-+echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6
-+ if test $am_cv_val_LC_MESSAGES = yes; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_LC_MESSAGES 1
-+_ACEOF
-+
-+ fi
-+ fi
-+ USE_NLS=yes
-+
-+
-+ gt_cv_have_gettext=no
-+
-+ CATOBJEXT=NONE
-+ XGETTEXT=:
-+ INTLLIBS=
-+
-+ if test "${ac_cv_header_libintl_h+set}" = set; then
-+ echo "$as_me:$LINENO: checking for libintl.h" >&5
-+echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
-+if test "${ac_cv_header_libintl_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
-+echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
-+else
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking libintl.h usability" >&5
-+echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+@%:@include <libintl.h>
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f conftest.err 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 libintl.h presence" >&5
-+echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+@%:@include <libintl.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
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+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:$ac_c_preproc_warn_flag in
-+ yes:no: )
-+ { echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: libintl.h: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
-+ ;;
-+ no:yes:* )
-+ { echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: libintl.h: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: libintl.h: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: libintl.h: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: libintl.h: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;}
-+ (
-+ cat <<\_ASBOX
-+@%:@@%:@ ------------------------------------------ @%:@@%:@
-+@%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@
-+@%:@@%:@ ------------------------------------------ @%:@@%:@
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+esac
-+echo "$as_me:$LINENO: checking for libintl.h" >&5
-+echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
-+if test "${ac_cv_header_libintl_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_header_libintl_h=$ac_header_preproc
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
-+echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
-+
-+fi
-+if test $ac_cv_header_libintl_h = yes; then
-+ gt_cv_func_dgettext_libintl="no"
-+ libintl_extra_libs=""
-+
-+ #
-+ # First check in libc
-+ #
-+ echo "$as_me:$LINENO: checking for ngettext in libc" >&5
-+echo $ECHO_N "checking for ngettext in libc... $ECHO_C" >&6
-+if test "${gt_cv_func_ngettext_libc+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+#include <libintl.h>
-+
-+int
-+main ()
-+{
-+return (int) ngettext ("","", 1)
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ gt_cv_func_ngettext_libc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+gt_cv_func_ngettext_libc=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+echo "$as_me:$LINENO: result: $gt_cv_func_ngettext_libc" >&5
-+echo "${ECHO_T}$gt_cv_func_ngettext_libc" >&6
-+
-+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
-+ echo "$as_me:$LINENO: checking for dgettext in libc" >&5
-+echo $ECHO_N "checking for dgettext in libc... $ECHO_C" >&6
-+if test "${gt_cv_func_dgettext_libc+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+#include <libintl.h>
-+
-+int
-+main ()
-+{
-+return (int) dgettext ("","")
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ gt_cv_func_dgettext_libc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+gt_cv_func_dgettext_libc=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+echo "$as_me:$LINENO: result: $gt_cv_func_dgettext_libc" >&5
-+echo "${ECHO_T}$gt_cv_func_dgettext_libc" >&6
-+ fi
-+
-+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
-+
-+for ac_func in bind_textdomain_codeset
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char $ac_func (); 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
-+
-+#undef $ac_func
-+
-+/* 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 $ac_func ();
-+/* 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_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ eval "$as_ac_var=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+done
-+
-+ fi
-+
-+ #
-+ # If we don't have everything we want, check in libintl
-+ #
-+ if test "$gt_cv_func_dgettext_libc" != "yes" \
-+ || test "$gt_cv_func_ngettext_libc" != "yes" \
-+ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
-+
-+ echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
-+echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6
-+if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lintl $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 bindtextdomain ();
-+int
-+main ()
-+{
-+bindtextdomain ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_intl_bindtextdomain=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_intl_bindtextdomain=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
-+echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6
-+if test $ac_cv_lib_intl_bindtextdomain = yes; then
-+ echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5
-+echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6
-+if test "${ac_cv_lib_intl_ngettext+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lintl $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 ngettext ();
-+int
-+main ()
-+{
-+ngettext ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_intl_ngettext=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_intl_ngettext=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5
-+echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6
-+if test $ac_cv_lib_intl_ngettext = yes; then
-+ echo "$as_me:$LINENO: checking for dgettext in -lintl" >&5
-+echo $ECHO_N "checking for dgettext in -lintl... $ECHO_C" >&6
-+if test "${ac_cv_lib_intl_dgettext+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lintl $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dgettext ();
-+int
-+main ()
-+{
-+dgettext ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_intl_dgettext=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_intl_dgettext=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dgettext" >&5
-+echo "${ECHO_T}$ac_cv_lib_intl_dgettext" >&6
-+if test $ac_cv_lib_intl_dgettext = yes; then
-+ gt_cv_func_dgettext_libintl=yes
-+fi
-+
-+fi
-+
-+fi
-+
-+
-+ if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
-+ echo "$as_me:$LINENO: checking if -liconv is needed to use gettext" >&5
-+echo $ECHO_N "checking if -liconv is needed to use gettext... $ECHO_C" >&6
-+ echo "$as_me:$LINENO: result: " >&5
-+echo "${ECHO_T}" >&6
-+ echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5
-+echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6
-+if test "${ac_cv_lib_intl_ngettext+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lintl -liconv $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 ngettext ();
-+int
-+main ()
-+{
-+ngettext ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_intl_ngettext=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_intl_ngettext=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5
-+echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6
-+if test $ac_cv_lib_intl_ngettext = yes; then
-+ echo "$as_me:$LINENO: checking for dcgettext in -lintl" >&5
-+echo $ECHO_N "checking for dcgettext in -lintl... $ECHO_C" >&6
-+if test "${ac_cv_lib_intl_dcgettext+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lintl -liconv $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.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 dcgettext ();
-+int
-+main ()
-+{
-+dcgettext ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_lib_intl_dcgettext=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_intl_dcgettext=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dcgettext" >&5
-+echo "${ECHO_T}$ac_cv_lib_intl_dcgettext" >&6
-+if test $ac_cv_lib_intl_dcgettext = yes; then
-+ gt_cv_func_dgettext_libintl=yes
-+ libintl_extra_libs=-liconv
-+else
-+ :
-+fi
-+
-+else
-+ :
-+fi
-+
-+ fi
-+
-+ #
-+ # If we found libintl, then check in it for bind_textdomain_codeset();
-+ # we'll prefer libc if neither have bind_textdomain_codeset(),
-+ # and both have dgettext and ngettext
-+ #
-+ if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
-+ glib_save_LIBS="$LIBS"
-+ LIBS="$LIBS -lintl $libintl_extra_libs"
-+ unset ac_cv_func_bind_textdomain_codeset
-+
-+for ac_func in bind_textdomain_codeset
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char $ac_func (); 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
-+
-+#undef $ac_func
-+
-+/* 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 $ac_func ();
-+/* 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_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ eval "$as_ac_var=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+done
-+
-+ LIBS="$glib_save_LIBS"
-+
-+ if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
-+ gt_cv_func_dgettext_libc=no
-+ else
-+ if test "$gt_cv_func_dgettext_libc" = "yes" \
-+ && test "$gt_cv_func_ngettext_libc" = "yes"; then
-+ gt_cv_func_dgettext_libintl=no
-+ fi
-+ fi
-+ fi
-+ fi
-+
-+ if test "$gt_cv_func_dgettext_libc" = "yes" \
-+ || test "$gt_cv_func_dgettext_libintl" = "yes"; then
-+ gt_cv_have_gettext=yes
-+ fi
-+
-+ if test "$gt_cv_func_dgettext_libintl" = "yes"; then
-+ INTLLIBS="-lintl $libintl_extra_libs"
-+ fi
-+
-+ if test "$gt_cv_have_gettext" = "yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_GETTEXT 1
-+_ACEOF
-+
-+ # Extract the first word of "msgfmt", so it can be a program name with args.
-+set dummy msgfmt; 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_path_MSGFMT+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case "$MSGFMT" in
-+ /*)
-+ ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
-+ ac_cv_path_MSGFMT="$ac_dir/$ac_word"
-+ break
-+ fi
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no"
-+ ;;
-+esac
-+fi
-+MSGFMT="$ac_cv_path_MSGFMT"
-+if test "$MSGFMT" != "no"; then
-+ echo "$as_me:$LINENO: result: $MSGFMT" >&5
-+echo "${ECHO_T}$MSGFMT" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+ if test "$MSGFMT" != "no"; then
-+ glib_save_LIBS="$LIBS"
-+ LIBS="$LIBS $INTLLIBS"
-+
-+for ac_func in dcgettext
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char $ac_func (); 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
-+
-+#undef $ac_func
-+
-+/* 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 $ac_func ();
-+/* 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_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ eval "$as_ac_var=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+done
-+
-+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
-+set dummy gmsgfmt; 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_path_GMSGFMT+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $GMSGFMT in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ 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_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
-+ ;;
-+esac
-+fi
-+GMSGFMT=$ac_cv_path_GMSGFMT
-+
-+if test -n "$GMSGFMT"; then
-+ echo "$as_me:$LINENO: result: $GMSGFMT" >&5
-+echo "${ECHO_T}$GMSGFMT" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ # Extract the first word of "xgettext", so it can be a program name with args.
-+set dummy xgettext; 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_path_XGETTEXT+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case "$XGETTEXT" in
-+ /*)
-+ ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
-+ ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
-+ break
-+ fi
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
-+ ;;
-+esac
-+fi
-+XGETTEXT="$ac_cv_path_XGETTEXT"
-+if test "$XGETTEXT" != ":"; then
-+ echo "$as_me:$LINENO: result: $XGETTEXT" >&5
-+echo "${ECHO_T}$XGETTEXT" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+extern int _nl_msg_cat_cntr;
-+ return _nl_msg_cat_cntr
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ CATOBJEXT=.gmo
-+ DATADIRNAME=share
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+case $host in
-+ *-*-solaris*)
-+ echo "$as_me:$LINENO: checking for bind_textdomain_codeset" >&5
-+echo $ECHO_N "checking for bind_textdomain_codeset... $ECHO_C" >&6
-+if test "${ac_cv_func_bind_textdomain_codeset+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define bind_textdomain_codeset to an innocuous variant, in case <limits.h> declares bind_textdomain_codeset.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define bind_textdomain_codeset innocuous_bind_textdomain_codeset
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char bind_textdomain_codeset (); 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
-+
-+#undef bind_textdomain_codeset
-+
-+/* 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 bind_textdomain_codeset ();
-+/* 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_bind_textdomain_codeset) || defined (__stub___bind_textdomain_codeset)
-+choke me
-+#else
-+char (*f) () = bind_textdomain_codeset;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != bind_textdomain_codeset;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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_bind_textdomain_codeset=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_func_bind_textdomain_codeset=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_bind_textdomain_codeset" >&5
-+echo "${ECHO_T}$ac_cv_func_bind_textdomain_codeset" >&6
-+if test $ac_cv_func_bind_textdomain_codeset = yes; then
-+ CATOBJEXT=.gmo
-+ DATADIRNAME=share
-+else
-+ CATOBJEXT=.mo
-+ DATADIRNAME=lib
-+fi
-+
-+ ;;
-+ *)
-+ CATOBJEXT=.mo
-+ DATADIRNAME=lib
-+ ;;
-+ esac
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+ LIBS="$glib_save_LIBS"
-+ INSTOBJEXT=.mo
-+ else
-+ gt_cv_have_gettext=no
-+ fi
-+ fi
-+
-+fi
-+
-+
-+
-+ if test "$gt_cv_have_gettext" = "yes" ; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+@%:@define ENABLE_NLS 1
-+_ACEOF
-+
-+ fi
-+
-+ if test "$XGETTEXT" != ":"; then
-+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
-+ : ;
-+ else
-+ echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5
-+echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6
-+ XGETTEXT=":"
-+ fi
-+ fi
-+
-+ # We need to process the po/ directory.
-+ POSUB=po
-+
-+ ac_config_commands="$ac_config_commands default-1"
-+
-+
-+ for lang in $ALL_LINGUAS; do
-+ GMOFILES="$GMOFILES $lang.gmo"
-+ POFILES="$POFILES $lang.po"
-+ done
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ if test "$gt_cv_have_gettext" = "yes"; then
-+ if test "x$ALL_LINGUAS" = "x"; then
-+ LINGUAS=
-+ else
-+ echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
-+echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6
-+ NEW_LINGUAS=
-+ for presentlang in $ALL_LINGUAS; do
-+ useit=no
-+ if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
-+ desiredlanguages="$LINGUAS"
-+ else
-+ desiredlanguages="$ALL_LINGUAS"
-+ fi
-+ for desiredlang in $desiredlanguages; do
-+ # Use the presentlang catalog if desiredlang is
-+ # a. equal to presentlang, or
-+ # b. a variant of presentlang (because in this case,
-+ # presentlang can be used as a fallback for messages
-+ # which are not translated in the desiredlang catalog).
-+ case "$desiredlang" in
-+ "$presentlang"*) useit=yes;;
-+ esac
-+ done
-+ if test $useit = yes; then
-+ NEW_LINGUAS="$NEW_LINGUAS $presentlang"
-+ fi
-+ done
-+ LINGUAS=$NEW_LINGUAS
-+ echo "$as_me:$LINENO: result: $LINGUAS" >&5
-+echo "${ECHO_T}$LINGUAS" >&6
-+ fi
-+
-+ if test -n "$LINGUAS"; then
-+ for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
-+ fi
-+ fi
-+
-+ MKINSTALLDIRS=
-+ if test -n "$ac_aux_dir"; then
-+ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
-+ fi
-+ if test -z "$MKINSTALLDIRS"; then
-+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
-+ fi
-+
-+
-+ test -d po || mkdir po
-+ if test "x$srcdir" != "x."; then
-+ if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
-+ posrcprefix="$srcdir/"
-+ else
-+ posrcprefix="../$srcdir/"
-+ fi
-+ else
-+ posrcprefix="../"
-+ fi
-+ rm -f po/POTFILES
-+ sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
-+ < $srcdir/po/POTFILES.in > po/POTFILES
-+
-+
-+# AM_GNU_GETTEXT above substs $DATADIRNAME
-+# this is the directory where the *.{mo,gmo} files are installed
-+gconflocaledir='${prefix}/${DATADIRNAME}/locale'
-+
-+
-+
-+for ac_func in bind_textdomain_codeset
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char $ac_func (); 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
-+
-+#undef $ac_func
-+
-+/* 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 $ac_func ();
-+/* 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_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (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); }; } &&
-+ { 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
-+ eval "$as_ac_var=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+done
-+
-+
-+
-+
-+
-+
-+## Just for debugging purposes
-+absolute_top_srcdir=`pwd`
-+
-+
-+# define a MAINT-like variable REBUILD which is set if Perl
-+# and awk are found, so autogenerated sources can be rebuilt
-+
-+for ac_prog in gawk mawk nawk awk
-+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_AWK+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$AWK"; then
-+ ac_cv_prog_AWK="$AWK" # 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_AWK="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+AWK=$ac_cv_prog_AWK
-+if test -n "$AWK"; then
-+ echo "$as_me:$LINENO: result: $AWK" >&5
-+echo "${ECHO_T}$AWK" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$AWK" && break
-+done
-+
-+for ac_prog in perl5 perl
-+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_PERL+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$PERL"; then
-+ ac_cv_prog_PERL="$PERL" # 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_PERL="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+PERL=$ac_cv_prog_PERL
-+if test -n "$PERL"; then
-+ echo "$as_me:$LINENO: result: $PERL" >&5
-+echo "${ECHO_T}$PERL" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$PERL" && break
-+done
-+
-+
-+# We would like indent, but don't require it.
-+# Extract the first word of "indent", so it can be a program name with args.
-+set dummy indent; 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_INDENT+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$INDENT"; then
-+ ac_cv_prog_INDENT="$INDENT" # 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_INDENT="indent"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+INDENT=$ac_cv_prog_INDENT
-+if test -n "$INDENT"; then
-+ echo "$as_me:$LINENO: result: $INDENT" >&5
-+echo "${ECHO_T}$INDENT" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+
-+_found_perl=0
-+if test -n "$PERL" && $PERL -v | grep 'version 5.' > /dev/null ; then
-+ _found_perl=1
-+else
-+ # The version string for perl changed for 'version 5' to 'v5' in
-+ # perl 5.6 or therabouts
-+ if test -n "$PERL" && $PERL -v | grep 'v5.' > /dev/null ; then
-+ _found_perl=1
-+ fi
-+fi
-+
-+REBUILD=\#
-+if test $_found_perl -eq 1; then
-+ if test -n "$AWK" ; then
-+ REBUILD=
-+ fi
-+fi
-+
-+
-+ ac_config_files="$ac_config_files Makefile gconf.m4 gconf/Makefile gconf/default.path backends/Makefile po/Makefile.in doc/Makefile doc/gconf/Makefile examples/Makefile tests/Makefile gconf-2.0.pc"
-+cat >confcache <<\_ACEOF
-+# 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.
-+#
-+# 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
-+
-+# 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
-+ if test -w $cache_file; then
-+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
-+ cat confcache >$cache_file
-+ else
-+ echo "not updating unwritable cache $cache_file"
-+ fi
-+fi
-+rm -f confcache
-+
-+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).
-+if test "x$srcdir" = x.; then
-+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
-+s/:*\$(srcdir):*/:/;
-+s/:*\${srcdir}:*/:/;
-+s/:*@srcdir@:*/:/;
-+s/^\([^=]*=[ ]*\):*/\1/;
-+s/:*$//;
-+s/^[^=]*=[ ]*$//;
-+}'
-+fi
-+
-+DEFS=-DHAVE_CONFIG_H
-+
-+ac_libobjs=
-+ac_ltlibobjs=
-+for ac_i in : $LIB@&t@OBJS; 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
-+LIB@&t@OBJS=$ac_libobjs
-+
-+LTLIBOBJS=$ac_ltlibobjs
-+
-+
-+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
-+ { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-+ { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"AMDEP\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+if test -z "${HAVE_GTK_DOC_TRUE}" && test -z "${HAVE_GTK_DOC_FALSE}"; then
-+ { { echo "$as_me:$LINENO: error: conditional \"HAVE_GTK_DOC\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"HAVE_GTK_DOC\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+if test -z "${HAVE_DOCBOOK_TRUE}" && test -z "${HAVE_DOCBOOK_FALSE}"; then
-+ { { echo "$as_me:$LINENO: error: conditional \"HAVE_DOCBOOK\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"HAVE_DOCBOOK\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then
-+ { { echo "$as_me:$LINENO: error: conditional \"ENABLE_GTK_DOC\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"ENABLE_GTK_DOC\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+if test -z "${USE_SYSTEM_BUS_TRUE}" && test -z "${USE_SYSTEM_BUS_FALSE}"; then
-+ { { echo "$as_me:$LINENO: error: conditional \"USE_SYSTEM_BUS\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"USE_SYSTEM_BUS\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+if test -z "${HAVE_ORBIT_TRUE}" && test -z "${HAVE_ORBIT_FALSE}"; then
-+ { { echo "$as_me:$LINENO: error: conditional \"HAVE_ORBIT\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"HAVE_ORBIT\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+if test -z "${HAVE_DBUS_TRUE}" && test -z "${HAVE_DBUS_FALSE}"; then
-+ { { echo "$as_me:$LINENO: error: conditional \"HAVE_DBUS\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"HAVE_DBUS\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+if test -z "${GTK_TRUE}" && test -z "${GTK_FALSE}"; then
-+ { { echo "$as_me:$LINENO: error: conditional \"GTK\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"GTK\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+if test -z "${PTHREADS_TRUE}" && test -z "${PTHREADS_FALSE}"; then
-+ { { echo "$as_me:$LINENO: error: conditional \"PTHREADS\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"PTHREADS\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+: ${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.
-+# Run this file to recreate the current configuration.
-+# Compiler output produced by configure, useful for debugging
-+# 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
-+DUALCASE=1; export DUALCASE # for MKS sh
-+
-+# Support unset when possible.
-+if ( (MAIL=60; unset MAIL) || exit) >/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 -z "`(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:$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'
-+ 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
-+ test -d ./-p && rmdir ./-p
-+ as_mkdir_p=false
-+fi
-+
-+as_executable_p="test -f"
-+
-+# Sed expression to map a string onto a valid CPP name.
-+as_tr_cpp="eval 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="eval 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.59. 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
-+ --header=FILE[:TEMPLATE]
-+ instantiate the configuration header FILE
-+
-+Configuration files:
-+$config_files
-+
-+Configuration headers:
-+$config_headers
-+
-+Configuration commands:
-+$config_commands
-+
-+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.59,
-+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-+
-+Copyright (C) 2003 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"
-+fi
-+
-+_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
-+
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<_ACEOF
-+#
-+# INIT-COMMANDS section.
-+#
-+
-+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-+
-+
-+_ACEOF
-+
-+
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+for ac_config_target in $ac_config_targets
-+do
-+ case "$ac_config_target" in
-+ # Handling of arguments.
-+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-+ "gconf.m4" ) CONFIG_FILES="$CONFIG_FILES gconf.m4" ;;
-+ "gconf/Makefile" ) CONFIG_FILES="$CONFIG_FILES gconf/Makefile" ;;
-+ "gconf/default.path" ) CONFIG_FILES="$CONFIG_FILES gconf/default.path" ;;
-+ "backends/Makefile" ) CONFIG_FILES="$CONFIG_FILES backends/Makefile" ;;
-+ "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
-+ "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
-+ "doc/gconf/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/gconf/Makefile" ;;
-+ "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
-+ "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
-+ "gconf-2.0.pc" ) CONFIG_FILES="$CONFIG_FILES gconf-2.0.pc" ;;
-+ "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-+ "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
-+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-+ *) { { 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; }; };;
-+ 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
-+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-+fi
-+
-+# 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,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
-+s,@CYGPATH_W@,$CYGPATH_W,;t t
-+s,@PACKAGE@,$PACKAGE,;t t
-+s,@VERSION@,$VERSION,;t t
-+s,@ACLOCAL@,$ACLOCAL,;t t
-+s,@AUTOCONF@,$AUTOCONF,;t t
-+s,@AUTOMAKE@,$AUTOMAKE,;t t
-+s,@AUTOHEADER@,$AUTOHEADER,;t t
-+s,@MAKEINFO@,$MAKEINFO,;t t
-+s,@AMTAR@,$AMTAR,;t t
-+s,@install_sh@,$install_sh,;t t
-+s,@STRIP@,$STRIP,;t t
-+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
-+s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
-+s,@AWK@,$AWK,;t t
-+s,@SET_MAKE@,$SET_MAKE,;t t
-+s,@am__leading_dot@,$am__leading_dot,;t t
-+s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
-+s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
-+s,@MAINT@,$MAINT,;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,@DEPDIR@,$DEPDIR,;t t
-+s,@am__include@,$am__include,;t t
-+s,@am__quote@,$am__quote,;t t
-+s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
-+s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
-+s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
-+s,@CCDEPMODE@,$CCDEPMODE,;t t
-+s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
-+s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
-+s,@CXX@,$CXX,;t t
-+s,@CXXFLAGS@,$CXXFLAGS,;t t
-+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
-+s,@CXXDEPMODE@,$CXXDEPMODE,;t t
-+s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
-+s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
-+s,@CPP@,$CPP,;t t
-+s,@EGREP@,$EGREP,;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,@LN_S@,$LN_S,;t t
-+s,@ECHO@,$ECHO,;t t
-+s,@AR@,$AR,;t t
-+s,@ac_ct_AR@,$ac_ct_AR,;t t
-+s,@RANLIB@,$RANLIB,;t t
-+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
-+s,@DLLTOOL@,$DLLTOOL,;t t
-+s,@ac_ct_DLLTOOL@,$ac_ct_DLLTOOL,;t t
-+s,@AS@,$AS,;t t
-+s,@ac_ct_AS@,$ac_ct_AS,;t t
-+s,@OBJDUMP@,$OBJDUMP,;t t
-+s,@ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t
-+s,@CXXCPP@,$CXXCPP,;t t
-+s,@F77@,$F77,;t t
-+s,@FFLAGS@,$FFLAGS,;t t
-+s,@ac_ct_F77@,$ac_ct_F77,;t t
-+s,@LIBTOOL@,$LIBTOOL,;t t
-+s,@MAJOR_VERSION@,$MAJOR_VERSION,;t t
-+s,@GETTEXT_PACKAGE@,$GETTEXT_PACKAGE,;t t
-+s,@GCONF_CURRENT@,$GCONF_CURRENT,;t t
-+s,@GCONF_REVISION@,$GCONF_REVISION,;t t
-+s,@GCONF_AGE@,$GCONF_AGE,;t t
-+s,@EXPANDED_SYSCONFDIR@,$EXPANDED_SYSCONFDIR,;t t
-+s,@GCONF_CONFIG_SOURCE@,$GCONF_CONFIG_SOURCE,;t t
-+s,@INSTALL_GCONF_CONFIG_SOURCE@,$INSTALL_GCONF_CONFIG_SOURCE,;t t
-+s,@HTML_DIR@,$HTML_DIR,;t t
-+s,@GTKDOC@,$GTKDOC,;t t
-+s,@HAVE_GTK_DOC_TRUE@,$HAVE_GTK_DOC_TRUE,;t t
-+s,@HAVE_GTK_DOC_FALSE@,$HAVE_GTK_DOC_FALSE,;t t
-+s,@HAVE_GTK_DOC@,$HAVE_GTK_DOC,;t t
-+s,@DB2HTML@,$DB2HTML,;t t
-+s,@HAVE_DOCBOOK_TRUE@,$HAVE_DOCBOOK_TRUE,;t t
-+s,@HAVE_DOCBOOK_FALSE@,$HAVE_DOCBOOK_FALSE,;t t
-+s,@ENABLE_GTK_DOC_TRUE@,$ENABLE_GTK_DOC_TRUE,;t t
-+s,@ENABLE_GTK_DOC_FALSE@,$ENABLE_GTK_DOC_FALSE,;t t
-+s,@USE_SYSTEM_BUS_TRUE@,$USE_SYSTEM_BUS_TRUE,;t t
-+s,@USE_SYSTEM_BUS_FALSE@,$USE_SYSTEM_BUS_FALSE,;t t
-+s,@PKG_CONFIG@,$PKG_CONFIG,;t t
-+s,@GCONF_ORBIT_CFLAGS@,$GCONF_ORBIT_CFLAGS,;t t
-+s,@GCONF_ORBIT_LIBS@,$GCONF_ORBIT_LIBS,;t t
-+s,@ORBIT_IDL@,$ORBIT_IDL,;t t
-+s,@GCONF_DBUS_CFLAGS@,$GCONF_DBUS_CFLAGS,;t t
-+s,@GCONF_DBUS_LIBS@,$GCONF_DBUS_LIBS,;t t
-+s,@PC_REQUIRES@,$PC_REQUIRES,;t t
-+s,@HAVE_ORBIT_TRUE@,$HAVE_ORBIT_TRUE,;t t
-+s,@HAVE_ORBIT_FALSE@,$HAVE_ORBIT_FALSE,;t t
-+s,@HAVE_DBUS_TRUE@,$HAVE_DBUS_TRUE,;t t
-+s,@HAVE_DBUS_FALSE@,$HAVE_DBUS_FALSE,;t t
-+s,@GCONF_IPC_CFLAGS@,$GCONF_IPC_CFLAGS,;t t
-+s,@GCONF_IPC_LIBS@,$GCONF_IPC_LIBS,;t t
-+s,@DBUS_SERVICE_DIR@,$DBUS_SERVICE_DIR,;t t
-+s,@DEPENDENT_CFLAGS@,$DEPENDENT_CFLAGS,;t t
-+s,@DEPENDENT_LIBS@,$DEPENDENT_LIBS,;t t
-+s,@DEPENDENT_WITH_XML_CFLAGS@,$DEPENDENT_WITH_XML_CFLAGS,;t t
-+s,@DEPENDENT_WITH_XML_LIBS@,$DEPENDENT_WITH_XML_LIBS,;t t
-+s,@DEPENDENT_WITH_GTK_CFLAGS@,$DEPENDENT_WITH_GTK_CFLAGS,;t t
-+s,@DEPENDENT_WITH_GTK_LIBS@,$DEPENDENT_WITH_GTK_LIBS,;t t
-+s,@DEPENDENT_WITH_XML_AND_GTK_CFLAGS@,$DEPENDENT_WITH_XML_AND_GTK_CFLAGS,;t t
-+s,@DEPENDENT_WITH_XML_AND_GTK_LIBS@,$DEPENDENT_WITH_XML_AND_GTK_LIBS,;t t
-+s,@GTK_TRUE@,$GTK_TRUE,;t t
-+s,@GTK_FALSE@,$GTK_FALSE,;t t
-+s,@POPT_LIBS@,$POPT_LIBS,;t t
-+s,@PTHREADS_TRUE@,$PTHREADS_TRUE,;t t
-+s,@PTHREADS_FALSE@,$PTHREADS_FALSE,;t t
-+s,@USE_NLS@,$USE_NLS,;t t
-+s,@MSGFMT@,$MSGFMT,;t t
-+s,@GMSGFMT@,$GMSGFMT,;t t
-+s,@XGETTEXT@,$XGETTEXT,;t t
-+s,@CATALOGS@,$CATALOGS,;t t
-+s,@CATOBJEXT@,$CATOBJEXT,;t t
-+s,@DATADIRNAME@,$DATADIRNAME,;t t
-+s,@GMOFILES@,$GMOFILES,;t t
-+s,@INSTOBJEXT@,$INSTOBJEXT,;t t
-+s,@INTLLIBS@,$INTLLIBS,;t t
-+s,@PO_IN_DATADIR_TRUE@,$PO_IN_DATADIR_TRUE,;t t
-+s,@PO_IN_DATADIR_FALSE@,$PO_IN_DATADIR_FALSE,;t t
-+s,@POFILES@,$POFILES,;t t
-+s,@POSUB@,$POSUB,;t t
-+s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t
-+s,@gconflocaledir@,$gconflocaledir,;t t
-+s,@absolute_top_srcdir@,$absolute_top_srcdir,;t t
-+s,@PERL@,$PERL,;t t
-+s,@INDENT@,$INDENT,;t t
-+s,@REBUILD@,$REBUILD,;t t
-+s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;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
-+ 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 ;;
-+ 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; }; }; }
-+
-+ 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
-+
-+# Do not use `cd foo && pwd` to compute absolute paths, because
-+# the directories may not exist.
-+case `pwd` in
-+.) ac_abs_builddir="$ac_dir";;
-+*)
-+ case "$ac_dir" in
-+ .) ac_abs_builddir=`pwd`;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_top_builddir=${ac_top_builddir}.;;
-+*)
-+ case ${ac_top_builddir}. in
-+ .) ac_abs_top_builddir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_srcdir=$ac_srcdir;;
-+*)
-+ case $ac_srcdir in
-+ .) ac_abs_srcdir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_top_srcdir=$ac_top_srcdir;;
-+*)
-+ case $ac_top_srcdir in
-+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-+ esac;;
-+esac
-+
-+
-+ case $INSTALL in
-+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
-+ esac
-+
-+ # 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."
-+
-+ # 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; }
-+
-+ 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
-+_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
-+
-+done
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+#
-+# CONFIG_HEADER section.
-+#
-+
-+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-+# NAME is the cpp macro being defined and VALUE is the value it is being given.
-+#
-+# ac_d sets the value in "#define NAME VALUE" lines.
-+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-+ac_dB='[ ].*$,\1#\2'
-+ac_dC=' '
-+ac_dD=',;t'
-+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-+ac_uB='$,\1#\2define\3'
-+ac_uC=' '
-+ac_uD=',;t'
-+
-+for ac_file in : $CONFIG_HEADERS; 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 ;;
-+ esac
-+
-+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
-+echo "$as_me: creating $ac_file" >&6;}
-+
-+ # 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; }; }
-+ # Do quote $f, to prevent DOS paths from being IFS'd.
-+ 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; }
-+ # Remove the trailing spaces.
-+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
-+
-+_ACEOF
-+
-+# Transform confdefs.h into two sed scripts, `conftest.defines' and
-+# `conftest.undefs', that substitutes the proper values into
-+# config.h.in to produce config.h. The first handles `#define'
-+# templates, and the second `#undef' templates.
-+# And first: Protect against being on the right side of a sed subst in
-+# config.status. Protect against being in an unquoted here document
-+# in config.status.
-+rm -f conftest.defines conftest.undefs
-+# Using a here document instead of a string reduces the quoting nightmare.
-+# Putting comments in sed scripts is not portable.
-+#
-+# `end' is used to avoid that the second main sed command (meant for
-+# 0-ary CPP macros) applies to n-ary macro definitions.
-+# See the Autoconf documentation for `clear'.
-+cat >confdef2sed.sed <<\_ACEOF
-+s/[\\&,]/\\&/g
-+s,[\\$`],\\&,g
-+t clear
-+: clear
-+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
-+t end
-+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
-+: end
-+_ACEOF
-+# If some macros were called several times there might be several times
-+# the same #defines, which is useless. Nevertheless, we may not want to
-+# sort them, since we want the *last* AC-DEFINE to be honored.
-+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
-+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
-+rm -f confdef2sed.sed
-+
-+# This sed command replaces #undef with comments. This is necessary, for
-+# example, in the case of _POSIX_SOURCE, which is predefined and required
-+# on some systems where configure will not decide to define it.
-+cat >>conftest.undefs <<\_ACEOF
-+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
-+_ACEOF
-+
-+# Break up conftest.defines because some shells have a limit on the size
-+# of here documents, and old seds have small limits too (100 cmds).
-+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
-+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
-+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
-+echo ' :' >>$CONFIG_STATUS
-+rm -f conftest.tail
-+while grep . conftest.defines >/dev/null
-+do
-+ # Write a limited-size here document to $tmp/defines.sed.
-+ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
-+ # Speed up: don't consider the non `#define' lines.
-+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
-+ # Work around the forget-to-reset-the-flag bug.
-+ echo 't clr' >>$CONFIG_STATUS
-+ echo ': clr' >>$CONFIG_STATUS
-+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
-+ echo 'CEOF
-+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
-+ rm -f $tmp/in
-+ mv $tmp/out $tmp/in
-+' >>$CONFIG_STATUS
-+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
-+ rm -f conftest.defines
-+ mv conftest.tail conftest.defines
-+done
-+rm -f conftest.defines
-+echo ' fi # grep' >>$CONFIG_STATUS
-+echo >>$CONFIG_STATUS
-+
-+# Break up conftest.undefs because some shells have a limit on the size
-+# of here documents, and old seds have small limits too (100 cmds).
-+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
-+rm -f conftest.tail
-+while grep . conftest.undefs >/dev/null
-+do
-+ # Write a limited-size here document to $tmp/undefs.sed.
-+ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
-+ # Speed up: don't consider the non `#undef'
-+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
-+ # Work around the forget-to-reset-the-flag bug.
-+ echo 't clr' >>$CONFIG_STATUS
-+ echo ': clr' >>$CONFIG_STATUS
-+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
-+ echo 'CEOF
-+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
-+ rm -f $tmp/in
-+ mv $tmp/out $tmp/in
-+' >>$CONFIG_STATUS
-+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
-+ rm -f conftest.undefs
-+ mv conftest.tail conftest.undefs
-+done
-+rm -f conftest.undefs
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+ # 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
-+ echo "/* Generated by configure. */" >$tmp/config.h
-+ else
-+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
-+ fi
-+ cat $tmp/in >>$tmp/config.h
-+ rm -f $tmp/in
-+ if test x"$ac_file" != x-; then
-+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
-+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-+echo "$as_me: $ac_file is unchanged" >&6;}
-+ else
-+ 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; }; }; }
-+
-+ rm -f $ac_file
-+ mv $tmp/config.h $ac_file
-+ fi
-+ else
-+ cat $tmp/config.h
-+ rm -f $tmp/config.h
-+ fi
-+# Compute $ac_file's index in $config_headers.
-+_am_stamp_count=1
-+for _am_header in $config_headers :; do
-+ case $_am_header in
-+ $ac_file | $ac_file:* )
-+ break ;;
-+ * )
-+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-+ esac
-+done
-+echo "timestamp for $ac_file" >`(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'`/stamp-h$_am_stamp_count
-+done
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+#
-+# CONFIG_COMMANDS section.
-+#
-+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
-+ ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
-+ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
-+ ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
-+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$ac_dest" : 'X\(//\)[^/]' \| \
-+ X"$ac_dest" : 'X\(//\)$' \| \
-+ X"$ac_dest" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$ac_dest" |
-+ 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; }; }; }
-+
-+ 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
-+
-+# Do not use `cd foo && pwd` to compute absolute paths, because
-+# the directories may not exist.
-+case `pwd` in
-+.) ac_abs_builddir="$ac_dir";;
-+*)
-+ case "$ac_dir" in
-+ .) ac_abs_builddir=`pwd`;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_top_builddir=${ac_top_builddir}.;;
-+*)
-+ case ${ac_top_builddir}. in
-+ .) ac_abs_top_builddir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_srcdir=$ac_srcdir;;
-+*)
-+ case $ac_srcdir in
-+ .) ac_abs_srcdir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_top_srcdir=$ac_top_srcdir;;
-+*)
-+ case $ac_top_srcdir in
-+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-+ esac;;
-+esac
-+
-+
-+ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
-+echo "$as_me: executing $ac_dest commands" >&6;}
-+ case $ac_dest in
-+ depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
-+ # Strip MF so we end up with the name of the file.
-+ mf=`echo "$mf" | sed -e 's/:.*$//'`
-+ # Check whether this is an Automake generated Makefile or not.
-+ # We used to match only the files named `Makefile.in', but
-+ # some people rename them; so instead we look at the file content.
-+ # Grep'ing the first line is not enough: some people post-process
-+ # each Makefile.in and add a new line on top of each file to say so.
-+ # So let's grep whole file.
-+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
-+ dirpart=`(dirname "$mf") 2>/dev/null ||
-+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$mf" : 'X\(//\)[^/]' \| \
-+ X"$mf" : 'X\(//\)$' \| \
-+ X"$mf" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$mf" |
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-+ /^X\(\/\/\)$/{ s//\1/; q; }
-+ /^X\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+ else
-+ continue
-+ fi
-+ grep '^DEP_FILES *= *[^ @%:@]' < "$mf" > /dev/null || continue
-+ # Extract the definition of DEP_FILES from the Makefile without
-+ # running `make'.
-+ DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
-+ test -z "$DEPDIR" && continue
-+ # When using ansi2knr, U may be empty or an underscore; expand it
-+ U=`sed -n -e '/^U = / s///p' < "$mf"`
-+ test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-+ # We invoke sed twice because it is the simplest approach to
-+ # changing $(DEPDIR) to its actual value in the expansion.
-+ for file in `sed -n -e '
-+ /^DEP_FILES = .*\\\\$/ {
-+ s/^DEP_FILES = //
-+ :loop
-+ s/\\\\$//
-+ p
-+ n
-+ /\\\\$/ b loop
-+ p
-+ }
-+ /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
-+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-+ # Make sure the directory exists.
-+ test -f "$dirpart/$file" && continue
-+ fdir=`(dirname "$file") 2>/dev/null ||
-+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$file" : 'X\(//\)[^/]' \| \
-+ X"$file" : 'X\(//\)$' \| \
-+ X"$file" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$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 $dirpart/$fdir
-+ else
-+ as_dir=$dirpart/$fdir
-+ 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 $dirpart/$fdir" >&5
-+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
-+ { (exit 1); exit 1; }; }; }
-+
-+ # echo "creating $dirpart/$file"
-+ echo '# dummy' > "$dirpart/$file"
-+ done
-+done
-+ ;;
-+ default-1 ) case "$CONFIG_FILES" in *po/Makefile.in*)
-+ sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
-+ esac ;;
-+ esac
-+done
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+{ (exit 0); exit 0; }
-+_ACEOF
-+chmod +x $CONFIG_STATUS
-+ac_clean_files=$ac_clean_files_save
-+
-+
-+# 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
-+
-+
-diff -urN GConf-2.6.4/autom4te.cache/requests GConf-2.6.4.new/autom4te.cache/requests
---- GConf-2.6.4/autom4te.cache/requests 1970-01-01 02:00:00.000000000 +0200
-+++ GConf-2.6.4.new/autom4te.cache/requests 2005-03-05 11:07:04.000000000 +0200
-@@ -0,0 +1,117 @@
-+# This file was generated by Autom4te Sat Mar 13 12:27:59 PST 2004.
-+# It contains the lists of macros which have been traced.
-+# It can be safely removed.
-+
-+@request = (
-+ bless( [
-+ '0',
-+ 1,
-+ [
-+ '/usr/share/autoconf'
-+ ],
-+ [
-+ '/usr/share/autoconf/autoconf/autoconf.m4f',
-+ 'aclocal.m4',
-+ 'configure.in'
-+ ],
-+ {
-+ 'm4_pattern_forbid' => 1,
-+ 'AC_CONFIG_LIBOBJ_DIR' => 1,
-+ 'AC_TYPE_OFF_T' => 1,
-+ 'AC_C_VOLATILE' => 1,
-+ 'AC_FUNC_CLOSEDIR_VOID' => 1,
-+ 'AC_REPLACE_FNMATCH' => 1,
-+ 'AC_PROG_LIBTOOL' => 1,
-+ 'AC_FUNC_STAT' => 1,
-+ 'AC_HEADER_TIME' => 1,
-+ 'AC_FUNC_WAIT3' => 1,
-+ 'AC_STRUCT_TM' => 1,
-+ 'AC_FUNC_LSTAT' => 1,
-+ 'AM_AUTOMAKE_VERSION' => 1,
-+ 'AC_TYPE_MODE_T' => 1,
-+ 'AC_FUNC_GETMNTENT' => 1,
-+ 'AC_FUNC_STRTOD' => 1,
-+ 'AC_CHECK_HEADERS' => 1,
-+ 'AC_FUNC_STRNLEN' => 1,
-+ 'm4_sinclude' => 1,
-+ 'AC_PROG_CXX' => 1,
-+ 'AC_PATH_X' => 1,
-+ 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
-+ 'AC_PROG_AWK' => 1,
-+ '_m4_warn' => 1,
-+ 'AC_HEADER_STDC' => 1,
-+ 'AC_HEADER_MAJOR' => 1,
-+ 'AC_FUNC_ERROR_AT_LINE' => 1,
-+ 'AC_PROG_GCC_TRADITIONAL' => 1,
-+ 'AC_LIBSOURCE' => 1,
-+ 'AC_FUNC_MBRTOWC' => 1,
-+ 'AC_STRUCT_ST_BLOCKS' => 1,
-+ 'AC_TYPE_SIGNAL' => 1,
-+ 'AC_TYPE_UID_T' => 1,
-+ 'AC_PROG_MAKE_SET' => 1,
-+ 'AC_CONFIG_AUX_DIR' => 1,
-+ 'sinclude' => 1,
-+ 'm4_pattern_allow' => 1,
-+ 'AC_DEFINE_TRACE_LITERAL' => 1,
-+ 'AC_FUNC_STRERROR_R' => 1,
-+ 'AC_PROG_CC' => 1,
-+ 'AC_FUNC_FORK' => 1,
-+ 'AC_DECL_SYS_SIGLIST' => 1,
-+ 'AC_FUNC_VPRINTF' => 1,
-+ 'AC_FUNC_STRCOLL' => 1,
-+ 'AC_PROG_YACC' => 1,
-+ 'AC_STRUCT_TIMEZONE' => 1,
-+ 'AC_INIT' => 1,
-+ 'AC_FUNC_CHOWN' => 1,
-+ 'AC_SUBST' => 1,
-+ 'AC_FUNC_ALLOCA' => 1,
-+ 'AC_CANONICAL_HOST' => 1,
-+ 'AC_FUNC_GETPGRP' => 1,
-+ 'AC_PROG_RANLIB' => 1,
-+ 'AM_INIT_AUTOMAKE' => 1,
-+ 'AC_FUNC_SETPGRP' => 1,
-+ 'AC_CONFIG_SUBDIRS' => 1,
-+ 'AC_FUNC_MMAP' => 1,
-+ 'AC_FUNC_REALLOC' => 1,
-+ 'AC_TYPE_SIZE_T' => 1,
-+ 'AC_CONFIG_LINKS' => 1,
-+ 'AC_CHECK_TYPES' => 1,
-+ 'AC_CHECK_MEMBERS' => 1,
-+ 'AM_MAINTAINER_MODE' => 1,
-+ 'AC_FUNC_UTIME_NULL' => 1,
-+ 'AC_FUNC_SELECT_ARGTYPES' => 1,
-+ 'AC_FUNC_STRFTIME' => 1,
-+ 'AC_HEADER_STAT' => 1,
-+ 'AC_PROG_CPP' => 1,
-+ 'AC_C_INLINE' => 1,
-+ 'AC_TYPE_PID_T' => 1,
-+ 'AC_PROG_LEX' => 1,
-+ 'AC_C_CONST' => 1,
-+ 'AM_ENABLE_MULTILIB' => 1,
-+ 'AC_CONFIG_FILES' => 1,
-+ 'include' => 1,
-+ 'AC_FUNC_SETVBUF_REVERSED' => 1,
-+ 'AC_PROG_INSTALL' => 1,
-+ 'AM_GNU_GETTEXT' => 1,
-+ 'AC_CHECK_LIB' => 1,
-+ 'AC_FUNC_OBSTACK' => 1,
-+ 'AC_FUNC_MALLOC' => 1,
-+ 'AC_FUNC_GETGROUPS' => 1,
-+ 'AC_FUNC_GETLOADAVG' => 1,
-+ 'AH_OUTPUT' => 1,
-+ 'AC_FUNC_FSEEKO' => 1,
-+ 'AM_PROG_CC_C_O' => 1,
-+ 'AC_CANONICAL_SYSTEM' => 1,
-+ 'AM_CONDITIONAL' => 1,
-+ 'AC_FUNC_MKTIME' => 1,
-+ 'AC_CONFIG_HEADERS' => 1,
-+ 'AC_HEADER_SYS_WAIT' => 1,
-+ 'AC_PROG_LN_S' => 1,
-+ 'AC_FUNC_MEMCMP' => 1,
-+ 'm4_include' => 1,
-+ 'AC_HEADER_DIRENT' => 1,
-+ 'AC_CHECK_FUNCS' => 1
-+ }
-+ ], 'Autom4te::Request' )
-+ );
-+
-diff -urN GConf-2.6.4/autom4te.cache/traces.0 GConf-2.6.4.new/autom4te.cache/traces.0
---- GConf-2.6.4/autom4te.cache/traces.0 1970-01-01 02:00:00.000000000 +0200
-+++ GConf-2.6.4.new/autom4te.cache/traces.0 2005-03-05 11:07:04.000000000 +0200
-@@ -0,0 +1,683 @@
-+m4trace:aclocal.m4:561: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
-+m4trace:configure.in:3: -1- AC_INIT([gconf/gconf.h])
-+m4trace:configure.in:3: -1- m4_pattern_forbid([^_?A[CHUM]_])
-+m4trace:configure.in:3: -1- m4_pattern_forbid([_AC_])
-+m4trace:configure.in:3: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
-+m4trace:configure.in:3: -1- m4_pattern_allow([^AS_FLAGS$])
-+m4trace:configure.in:3: -1- m4_pattern_forbid([^_?m4_])
-+m4trace:configure.in:3: -1- m4_pattern_forbid([^dnl$])
-+m4trace:configure.in:3: -1- m4_pattern_forbid([^_?AS_])
-+m4trace:configure.in:3: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
-+m4trace:configure.in:3: -1- AC_SUBST([PATH_SEPARATOR])
-+m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
-+m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
-+m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
-+m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
-+m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
-+m4trace:configure.in:3: -1- AC_SUBST([exec_prefix], [NONE])
-+m4trace:configure.in:3: -1- AC_SUBST([prefix], [NONE])
-+m4trace:configure.in:3: -1- AC_SUBST([program_transform_name], [s,x,x,])
-+m4trace:configure.in:3: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
-+m4trace:configure.in:3: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
-+m4trace:configure.in:3: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
-+m4trace:configure.in:3: -1- AC_SUBST([datadir], ['${prefix}/share'])
-+m4trace:configure.in:3: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
-+m4trace:configure.in:3: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
-+m4trace:configure.in:3: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
-+m4trace:configure.in:3: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
-+m4trace:configure.in:3: -1- AC_SUBST([includedir], ['${prefix}/include'])
-+m4trace:configure.in:3: -1- AC_SUBST([oldincludedir], ['/usr/include'])
-+m4trace:configure.in:3: -1- AC_SUBST([infodir], ['${prefix}/info'])
-+m4trace:configure.in:3: -1- AC_SUBST([mandir], ['${prefix}/man'])
-+m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
-+m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
-+#undef PACKAGE_NAME])
-+m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
-+m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
-+#undef PACKAGE_TARNAME])
-+m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
-+m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
-+#undef PACKAGE_VERSION])
-+m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
-+m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
-+#undef PACKAGE_STRING])
-+m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
-+m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
-+#undef PACKAGE_BUGREPORT])
-+m4trace:configure.in:3: -1- AC_SUBST([build_alias])
-+m4trace:configure.in:3: -1- AC_SUBST([host_alias])
-+m4trace:configure.in:3: -1- AC_SUBST([target_alias])
-+m4trace:configure.in:3: -1- AC_SUBST([DEFS])
-+m4trace:configure.in:3: -1- AC_SUBST([ECHO_C])
-+m4trace:configure.in:3: -1- AC_SUBST([ECHO_N])
-+m4trace:configure.in:3: -1- AC_SUBST([ECHO_T])
-+m4trace:configure.in:3: -1- AC_SUBST([LIBS])
-+m4trace:configure.in:5: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete.
-+You should run autoupdate.], [aclocal.m4:530: AM_CONFIG_HEADER is expanded from...
-+configure.in:5: the top level])
-+m4trace:configure.in:5: -1- AC_CONFIG_HEADERS([config.h])
-+m4trace:configure.in:7: -1- AM_INIT_AUTOMAKE([GConf], [2.6.4])
-+m4trace:configure.in:7: -1- AM_AUTOMAKE_VERSION([1.7.9])
-+m4trace:configure.in:7: -1- AC_PROG_INSTALL
-+m4trace:configure.in:7: -1- AC_SUBST([INSTALL_PROGRAM])
-+m4trace:configure.in:7: -1- AC_SUBST([INSTALL_SCRIPT])
-+m4trace:configure.in:7: -1- AC_SUBST([INSTALL_DATA])
-+m4trace:configure.in:7: -1- AC_SUBST([CYGPATH_W])
-+m4trace:configure.in:7: -1- AC_SUBST([PACKAGE], [GConf])
-+m4trace:configure.in:7: -1- AC_SUBST([VERSION], [2.6.4])
-+m4trace:configure.in:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
-+m4trace:configure.in:7: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
-+#undef PACKAGE])
-+m4trace:configure.in:7: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
-+m4trace:configure.in:7: -1- AH_OUTPUT([VERSION], [/* Version number of package */
-+#undef VERSION])
-+m4trace:configure.in:7: -1- AC_SUBST([ACLOCAL])
-+m4trace:configure.in:7: -1- AC_SUBST([AUTOCONF])
-+m4trace:configure.in:7: -1- AC_SUBST([AUTOMAKE])
-+m4trace:configure.in:7: -1- AC_SUBST([AUTOHEADER])
-+m4trace:configure.in:7: -1- AC_SUBST([MAKEINFO])
-+m4trace:configure.in:7: -1- AC_SUBST([AMTAR])
-+m4trace:configure.in:7: -1- AC_SUBST([install_sh])
-+m4trace:configure.in:7: -1- AC_SUBST([STRIP])
-+m4trace:configure.in:7: -1- AC_SUBST([ac_ct_STRIP])
-+m4trace:configure.in:7: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
-+m4trace:configure.in:7: -1- AC_PROG_AWK
-+m4trace:configure.in:7: -1- AC_SUBST([AWK])
-+m4trace:configure.in:7: -1- AC_PROG_MAKE_SET
-+m4trace:configure.in:7: -1- AC_SUBST([SET_MAKE])
-+m4trace:configure.in:7: -1- AC_SUBST([am__leading_dot])
-+m4trace:configure.in:9: -1- AM_MAINTAINER_MODE
-+m4trace:configure.in:9: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
-+m4trace:configure.in:9: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
-+m4trace:configure.in:9: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
-+m4trace:configure.in:9: -1- AC_SUBST([MAINT])
-+m4trace:configure.in:11: -1- AC_PROG_CC
-+m4trace:configure.in:11: -1- AC_SUBST([CC])
-+m4trace:configure.in:11: -1- AC_SUBST([CFLAGS])
-+m4trace:configure.in:11: -1- AC_SUBST([LDFLAGS])
-+m4trace:configure.in:11: -1- AC_SUBST([CPPFLAGS])
-+m4trace:configure.in:11: -1- AC_SUBST([CC])
-+m4trace:configure.in:11: -1- AC_SUBST([ac_ct_CC])
-+m4trace:configure.in:11: -1- AC_SUBST([CC])
-+m4trace:configure.in:11: -1- AC_SUBST([ac_ct_CC])
-+m4trace:configure.in:11: -1- AC_SUBST([CC])
-+m4trace:configure.in:11: -1- AC_SUBST([CC])
-+m4trace:configure.in:11: -1- AC_SUBST([ac_ct_CC])
-+m4trace:configure.in:11: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
-+m4trace:configure.in:11: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
-+m4trace:configure.in:11: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
-+m4trace:configure.in:11: -1- AC_SUBST([am__include])
-+m4trace:configure.in:11: -1- AC_SUBST([am__quote])
-+m4trace:configure.in:11: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-+m4trace:configure.in:11: -1- AC_SUBST([AMDEP_TRUE])
-+m4trace:configure.in:11: -1- AC_SUBST([AMDEP_FALSE])
-+m4trace:configure.in:11: -1- AC_SUBST([AMDEPBACKSLASH])
-+m4trace:configure.in:11: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
-+m4trace:configure.in:11: -1- AM_CONDITIONAL([am__fastdepCC], [
-+ test "x$enable_dependency_tracking" != xno \
-+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
-+m4trace:configure.in:11: -1- AC_SUBST([am__fastdepCC_TRUE])
-+m4trace:configure.in:11: -1- AC_SUBST([am__fastdepCC_FALSE])
-+m4trace:configure.in:12: -1- AC_PROG_CXX
-+m4trace:configure.in:12: -1- AC_SUBST([CXX])
-+m4trace:configure.in:12: -1- AC_SUBST([CXXFLAGS])
-+m4trace:configure.in:12: -1- AC_SUBST([LDFLAGS])
-+m4trace:configure.in:12: -1- AC_SUBST([CPPFLAGS])
-+m4trace:configure.in:12: -1- AC_SUBST([CXX])
-+m4trace:configure.in:12: -1- AC_SUBST([ac_ct_CXX])
-+m4trace:configure.in:12: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
-+m4trace:configure.in:12: -1- AM_CONDITIONAL([am__fastdepCXX], [
-+ test "x$enable_dependency_tracking" != xno \
-+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
-+m4trace:configure.in:12: -1- AC_SUBST([am__fastdepCXX_TRUE])
-+m4trace:configure.in:12: -1- AC_SUBST([am__fastdepCXX_FALSE])
-+m4trace:configure.in:13: -1- AC_CHECK_LIB([cposix], [strerror], [LIBS="$LIBS -lcposix"])
-+m4trace:configure.in:14: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+aclocal.m4:1497: AM_PROG_CC_STDC is expanded from...
-+configure.in:14: the top level])
-+m4trace:configure.in:15: -1- AC_HEADER_STDC
-+m4trace:configure.in:15: -1- AC_PROG_CPP
-+m4trace:configure.in:15: -1- AC_SUBST([CPP])
-+m4trace:configure.in:15: -1- AC_SUBST([CPPFLAGS])
-+m4trace:configure.in:15: -1- AC_SUBST([CPP])
-+m4trace:configure.in:15: -1- AC_SUBST([EGREP])
-+m4trace:configure.in:15: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-+m4trace:configure.in:15: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
-+#undef STDC_HEADERS])
-+m4trace:configure.in:16: -1- _m4_warn([syntax], [AC_ARG_PROGRAM invoked multiple times], [])
-+m4trace:configure.in:18: -1- AC_PROG_LIBTOOL
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-+autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
-+aclocal.m4:3249: AC_ENABLE_SHARED is expanded from...
-+configure.in:18: AC_ENABLE_SHARED is required by...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-+autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
-+aclocal.m4:3288: AC_ENABLE_STATIC is expanded from...
-+configure.in:18: AC_ENABLE_STATIC is required by...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-+autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
-+aclocal.m4:3327: AC_ENABLE_FAST_INSTALL is expanded from...
-+configure.in:18: AC_ENABLE_FAST_INSTALL is required by...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- AC_CANONICAL_HOST
-+m4trace:configure.in:18: -1- AC_SUBST([build], [$ac_cv_build])
-+m4trace:configure.in:18: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
-+m4trace:configure.in:18: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
-+m4trace:configure.in:18: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
-+m4trace:configure.in:18: -1- AC_SUBST([host], [$ac_cv_host])
-+m4trace:configure.in:18: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
-+m4trace:configure.in:18: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
-+m4trace:configure.in:18: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-+autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
-+aclocal.m4:3524: AC_PROG_LD is expanded from...
-+configure.in:18: AC_PROG_LD is required by...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- AC_PROG_LN_S
-+m4trace:configure.in:18: -1- AC_SUBST([LN_S], [$as_ln_s])
-+m4trace:configure.in:18: -1- AC_SUBST([ECHO])
-+m4trace:configure.in:18: -1- AC_SUBST([AR])
-+m4trace:configure.in:18: -1- AC_SUBST([ac_ct_AR])
-+m4trace:configure.in:18: -1- AC_SUBST([RANLIB])
-+m4trace:configure.in:18: -1- AC_SUBST([ac_ct_RANLIB])
-+m4trace:configure.in:18: -1- AC_SUBST([STRIP])
-+m4trace:configure.in:18: -1- AC_SUBST([ac_ct_STRIP])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-+autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-+autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-+aclocal.m4:2038: _LT_AC_LOCK is expanded from...
-+configure.in:18: _LT_AC_LOCK is required by...
-+aclocal.m4:2469: AC_LIBTOOL_SYS_HARD_LINK_LOCKS is expanded from...
-+aclocal.m4:4071: _LT_AC_LANG_C_CONFIG is expanded from...
-+aclocal.m4:3938: AC_LIBTOOL_LANG_C_CONFIG is expanded from...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- AC_SUBST([DLLTOOL])
-+m4trace:configure.in:18: -1- AC_SUBST([ac_ct_DLLTOOL])
-+m4trace:configure.in:18: -1- AC_SUBST([AS])
-+m4trace:configure.in:18: -1- AC_SUBST([ac_ct_AS])
-+m4trace:configure.in:18: -1- AC_SUBST([OBJDUMP])
-+m4trace:configure.in:18: -1- AC_SUBST([ac_ct_OBJDUMP])
-+m4trace:configure.in:18: -1- AC_CHECK_HEADERS([dlfcn.h])
-+m4trace:configure.in:18: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
-+#undef HAVE_DLFCN_H])
-+m4trace:configure.in:18: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-+ inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
-+m4trace:configure.in:18: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
-+#undef HAVE_SYS_TYPES_H])
-+m4trace:configure.in:18: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
-+#undef HAVE_SYS_STAT_H])
-+m4trace:configure.in:18: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-+#undef HAVE_STDLIB_H])
-+m4trace:configure.in:18: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
-+#undef HAVE_STRING_H])
-+m4trace:configure.in:18: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
-+#undef HAVE_MEMORY_H])
-+m4trace:configure.in:18: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
-+#undef HAVE_STRINGS_H])
-+m4trace:configure.in:18: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
-+#undef HAVE_INTTYPES_H])
-+m4trace:configure.in:18: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
-+#undef HAVE_STDINT_H])
-+m4trace:configure.in:18: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
-+#undef HAVE_UNISTD_H])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [
-+ lt_cv_dlopen="dyld"
-+ lt_cv_dlopen_libs=
-+ lt_cv_dlopen_self=yes
-+ ])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
-+ [lt_cv_dlopen="dlopen"],
-+ [AC_CHECK_LIB([dl], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-+ [AC_CHECK_LIB([svld], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-+ [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
-+ ])
-+ ])
-+ ])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-+ [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
-+ ])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-+autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
-+aclocal.m4:3203: _LT_AC_TAGCONFIG is expanded from...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: error: tag name \"$tagname\" already exists], [aclocal.m4:3203: _LT_AC_TAGCONFIG is expanded from...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: error: tag name \"$tagname\" already exists], [aclocal.m4:3203: _LT_AC_TAGCONFIG is expanded from...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- AC_SUBST([CXXCPP])
-+m4trace:configure.in:18: -1- AC_SUBST([CPPFLAGS])
-+m4trace:configure.in:18: -1- AC_SUBST([CXXCPP])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [
-+ lt_cv_dlopen="dyld"
-+ lt_cv_dlopen_libs=
-+ lt_cv_dlopen_self=yes
-+ ])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
-+ [lt_cv_dlopen="dlopen"],
-+ [AC_CHECK_LIB([dl], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-+ [AC_CHECK_LIB([svld], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-+ [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
-+ ])
-+ ])
-+ ])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-+ [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
-+ ])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+m4trace:configure.in:18: -1- AC_SUBST([F77])
-+m4trace:configure.in:18: -1- AC_SUBST([FFLAGS])
-+m4trace:configure.in:18: -1- AC_SUBST([LDFLAGS])
-+m4trace:configure.in:18: -1- AC_SUBST([F77])
-+m4trace:configure.in:18: -1- AC_SUBST([ac_ct_F77])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
-+You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
-+aclocal.m4:5248: _LT_AC_LANG_GCJ_CONFIG is expanded from...
-+aclocal.m4:5205: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from...
-+aclocal.m4:3203: _LT_AC_TAGCONFIG is expanded from...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE',
-+and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
-+aclocal.m4:5248: _LT_AC_LANG_GCJ_CONFIG is expanded from...
-+aclocal.m4:5205: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from...
-+aclocal.m4:3203: _LT_AC_TAGCONFIG is expanded from...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [
-+ lt_cv_dlopen="dyld"
-+ lt_cv_dlopen_libs=
-+ lt_cv_dlopen_self=yes
-+ ])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
-+ [lt_cv_dlopen="dlopen"],
-+ [AC_CHECK_LIB([dl], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-+ [AC_CHECK_LIB([svld], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-+ [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
-+ ])
-+ ])
-+ ])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-+ [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
-+ ])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
-+m4trace:configure.in:18: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
-+You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from...
-+aclocal.m4:5248: _LT_AC_LANG_GCJ_CONFIG is expanded from...
-+aclocal.m4:5205: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from...
-+aclocal.m4:3203: _LT_AC_TAGCONFIG is expanded from...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
-+You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
-+aclocal.m4:5287: _LT_AC_LANG_RC_CONFIG is expanded from...
-+aclocal.m4:5256: AC_LIBTOOL_LANG_RC_CONFIG is expanded from...
-+aclocal.m4:3203: _LT_AC_TAGCONFIG is expanded from...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE',
-+and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
-+aclocal.m4:5287: _LT_AC_LANG_RC_CONFIG is expanded from...
-+aclocal.m4:5256: AC_LIBTOOL_LANG_RC_CONFIG is expanded from...
-+aclocal.m4:3203: _LT_AC_TAGCONFIG is expanded from...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
-+You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from...
-+aclocal.m4:5287: _LT_AC_LANG_RC_CONFIG is expanded from...
-+aclocal.m4:5256: AC_LIBTOOL_LANG_RC_CONFIG is expanded from...
-+aclocal.m4:3203: _LT_AC_TAGCONFIG is expanded from...
-+aclocal.m4:1711: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:18: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:1569: _AC_PROG_LIBTOOL is expanded from...
-+configure.in:18: _AC_PROG_LIBTOOL is required by...
-+aclocal.m4:1549: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:7323: AM_PROG_LIBTOOL is expanded from...
-+configure.in:18: the top level])
-+m4trace:configure.in:18: -1- AC_SUBST([LIBTOOL])
-+m4trace:configure.in:44: -1- AC_SUBST([MAJOR_VERSION])
-+m4trace:configure.in:47: -1- AC_SUBST([GETTEXT_PACKAGE])
-+m4trace:configure.in:48: -1- AC_DEFINE_TRACE_LITERAL([GETTEXT_PACKAGE])
-+m4trace:configure.in:48: -1- AH_OUTPUT([GETTEXT_PACKAGE], [/* Gettext package */
-+#undef GETTEXT_PACKAGE])
-+m4trace:configure.in:64: -1- AC_SUBST([GCONF_CURRENT])
-+m4trace:configure.in:65: -1- AC_SUBST([GCONF_REVISION])
-+m4trace:configure.in:66: -1- AC_SUBST([GCONF_AGE])
-+m4trace:configure.in:83: -1- AC_SUBST([EXPANDED_SYSCONFDIR])
-+m4trace:configure.in:102: -1- AC_SUBST([GCONF_CONFIG_SOURCE])
-+m4trace:configure.in:103: -1- AC_SUBST([INSTALL_GCONF_CONFIG_SOURCE])
-+m4trace:configure.in:129: -1- AC_SUBST([HTML_DIR])
-+m4trace:configure.in:132: -1- AC_SUBST([GTKDOC])
-+m4trace:configure.in:157: -1- AM_CONDITIONAL([HAVE_GTK_DOC], [$GTKDOC])
-+m4trace:configure.in:157: -1- AC_SUBST([HAVE_GTK_DOC_TRUE])
-+m4trace:configure.in:157: -1- AC_SUBST([HAVE_GTK_DOC_FALSE])
-+m4trace:configure.in:158: -1- AC_SUBST([HAVE_GTK_DOC])
-+m4trace:configure.in:160: -1- AC_SUBST([DB2HTML])
-+m4trace:configure.in:161: -1- AM_CONDITIONAL([HAVE_DOCBOOK], [$DB2HTML])
-+m4trace:configure.in:161: -1- AC_SUBST([HAVE_DOCBOOK_TRUE])
-+m4trace:configure.in:161: -1- AC_SUBST([HAVE_DOCBOOK_FALSE])
-+m4trace:configure.in:176: -1- AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
-+m4trace:configure.in:176: -1- AC_SUBST([ENABLE_GTK_DOC_TRUE])
-+m4trace:configure.in:176: -1- AC_SUBST([ENABLE_GTK_DOC_FALSE])
-+m4trace:configure.in:182: -1- AM_CONDITIONAL([USE_SYSTEM_BUS], [test x$enable_system_bus = xyes])
-+m4trace:configure.in:182: -1- AC_SUBST([USE_SYSTEM_BUS_TRUE])
-+m4trace:configure.in:182: -1- AC_SUBST([USE_SYSTEM_BUS_FALSE])
-+m4trace:configure.in:184: -1- AC_DEFINE_TRACE_LITERAL([USE_SYSTEM_BUS])
-+m4trace:configure.in:184: -1- AH_OUTPUT([USE_SYSTEM_BUS], [/* Use the system bus */
-+#undef USE_SYSTEM_BUS])
-+m4trace:configure.in:190: -1- AC_SUBST([PKG_CONFIG], [$ac_cv_path_PKG_CONFIG])
-+m4trace:configure.in:190: -1- AC_SUBST([GCONF_ORBIT_CFLAGS])
-+m4trace:configure.in:190: -1- AC_SUBST([GCONF_ORBIT_LIBS])
-+m4trace:configure.in:196: -1- AC_SUBST([ORBIT_IDL])
-+m4trace:configure.in:197: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ORBIT])
-+m4trace:configure.in:197: -1- AH_OUTPUT([HAVE_ORBIT], [/* ORBit support in the daemon */
-+#undef HAVE_ORBIT])
-+m4trace:configure.in:206: -1- AC_SUBST([PKG_CONFIG], [$ac_cv_path_PKG_CONFIG])
-+m4trace:configure.in:206: -1- AC_SUBST([GCONF_DBUS_CFLAGS])
-+m4trace:configure.in:206: -1- AC_SUBST([GCONF_DBUS_LIBS])
-+m4trace:configure.in:208: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DBUS])
-+m4trace:configure.in:208: -1- AH_OUTPUT([HAVE_DBUS], [/* D-BUS support in the daemon */
-+#undef HAVE_DBUS])
-+m4trace:configure.in:215: -1- AC_SUBST([PC_REQUIRES])
-+m4trace:configure.in:221: -1- AM_CONDITIONAL([HAVE_ORBIT], [test x$have_orbit = xyes])
-+m4trace:configure.in:221: -1- AC_SUBST([HAVE_ORBIT_TRUE])
-+m4trace:configure.in:221: -1- AC_SUBST([HAVE_ORBIT_FALSE])
-+m4trace:configure.in:222: -1- AM_CONDITIONAL([HAVE_DBUS], [test x$have_dbus = xyes])
-+m4trace:configure.in:222: -1- AC_SUBST([HAVE_DBUS_TRUE])
-+m4trace:configure.in:222: -1- AC_SUBST([HAVE_DBUS_FALSE])
-+m4trace:configure.in:228: -1- AC_SUBST([GCONF_IPC_CFLAGS])
-+m4trace:configure.in:229: -1- AC_SUBST([GCONF_IPC_LIBS])
-+m4trace:configure.in:232: -1- AC_SUBST([DBUS_SERVICE_DIR])
-+m4trace:configure.in:239: -1- AC_SUBST([PKG_CONFIG], [$ac_cv_path_PKG_CONFIG])
-+m4trace:configure.in:239: -1- AC_SUBST([DEPENDENT_CFLAGS])
-+m4trace:configure.in:239: -1- AC_SUBST([DEPENDENT_LIBS])
-+m4trace:configure.in:240: -1- AC_SUBST([PKG_CONFIG], [$ac_cv_path_PKG_CONFIG])
-+m4trace:configure.in:240: -1- AC_SUBST([DEPENDENT_WITH_XML_CFLAGS])
-+m4trace:configure.in:240: -1- AC_SUBST([DEPENDENT_WITH_XML_LIBS])
-+m4trace:configure.in:243: -1- AC_SUBST([PKG_CONFIG], [$ac_cv_path_PKG_CONFIG])
-+m4trace:configure.in:243: -1- AC_SUBST([DEPENDENT_WITH_GTK_CFLAGS])
-+m4trace:configure.in:243: -1- AC_SUBST([DEPENDENT_WITH_GTK_LIBS])
-+m4trace:configure.in:245: -1- AC_SUBST([PKG_CONFIG], [$ac_cv_path_PKG_CONFIG])
-+m4trace:configure.in:245: -1- AC_SUBST([DEPENDENT_WITH_XML_AND_GTK_CFLAGS])
-+m4trace:configure.in:245: -1- AC_SUBST([DEPENDENT_WITH_XML_AND_GTK_LIBS])
-+m4trace:configure.in:258: -1- AM_CONDITIONAL([GTK], [test x$HAVE_GTK != xno])
-+m4trace:configure.in:258: -1- AC_SUBST([GTK_TRUE])
-+m4trace:configure.in:258: -1- AC_SUBST([GTK_FALSE])
-+m4trace:configure.in:260: -1- AC_SUBST([DEPENDENT_LIBS])
-+m4trace:configure.in:261: -1- AC_SUBST([DEPENDENT_CFLAGS])
-+m4trace:configure.in:262: -1- AC_SUBST([DEPENDENT_WITH_XML_LIBS])
-+m4trace:configure.in:263: -1- AC_SUBST([DEPENDENT_WITH_XML_CFLAGS])
-+m4trace:configure.in:264: -1- AC_SUBST([DEPENDENT_WITH_GTK_LIBS])
-+m4trace:configure.in:265: -1- AC_SUBST([DEPENDENT_WITH_GTK_CFLAGS])
-+m4trace:configure.in:266: -1- AC_SUBST([DEPENDENT_WITH_XML_AND_GTK_LIBS])
-+m4trace:configure.in:267: -1- AC_SUBST([DEPENDENT_WITH_XML_AND_GTK_CFLAGS])
-+m4trace:configure.in:273: -1- AC_CHECK_LIB([popt], [poptGetArg], [POPT_LIBS=-lpopt], [AC_CHECK_HEADER(popt.h, , AC_MSG_ERROR([[
-+*** Couldn't find popt. Please download and install from
-+*** ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.0.x/ and try again.]]))])
-+m4trace:configure.in:274: -1- AC_SUBST([POPT_LIBS])
-+m4trace:configure.in:277: -1- AM_CONDITIONAL([PTHREADS], [test -n "$have_pthreads"])
-+m4trace:configure.in:277: -1- AC_SUBST([PTHREADS_TRUE])
-+m4trace:configure.in:277: -1- AC_SUBST([PTHREADS_FALSE])
-+m4trace:configure.in:279: -1- AC_CHECK_FUNCS([usleep])
-+m4trace:configure.in:279: -1- AH_OUTPUT([HAVE_USLEEP], [/* Define to 1 if you have the `usleep\' function. */
-+#undef HAVE_USLEEP])
-+m4trace:configure.in:281: -1- AC_CHECK_FUNCS([flockfile])
-+m4trace:configure.in:281: -1- AH_OUTPUT([HAVE_FLOCKFILE], [/* Define to 1 if you have the `flockfile\' function. */
-+#undef HAVE_FLOCKFILE])
-+m4trace:configure.in:285: -1- AC_CHECK_HEADERS([locale.h])
-+m4trace:configure.in:285: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
-+#undef HAVE_LOCALE_H])
-+m4trace:configure.in:285: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-+aclocal.m4:7520: GLIB_LC_MESSAGES is expanded from...
-+aclocal.m4:7831: GLIB_GNU_GETTEXT is expanded from...
-+aclocal.m4:7860: AM_GLIB_GNU_GETTEXT is expanded from...
-+configure.in:285: the top level])
-+m4trace:configure.in:285: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES])
-+m4trace:configure.in:285: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your <locale.h> file defines LC_MESSAGES. */
-+#undef HAVE_LC_MESSAGES])
-+m4trace:configure.in:285: -1- AC_SUBST([USE_NLS])
-+m4trace:configure.in:285: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-+autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from...
-+aclocal.m4:7748: GLIB_WITH_NLS is expanded from...
-+aclocal.m4:7831: GLIB_GNU_GETTEXT is expanded from...
-+aclocal.m4:7860: AM_GLIB_GNU_GETTEXT is expanded from...
-+configure.in:285: the top level])
-+m4trace:configure.in:285: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-+autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from...
-+aclocal.m4:7748: GLIB_WITH_NLS is expanded from...
-+aclocal.m4:7831: GLIB_GNU_GETTEXT is expanded from...
-+aclocal.m4:7860: AM_GLIB_GNU_GETTEXT is expanded from...
-+configure.in:285: the top level])
-+m4trace:configure.in:285: -1- AC_CHECK_FUNCS([bind_textdomain_codeset])
-+m4trace:configure.in:285: -1- AH_OUTPUT([HAVE_BIND_TEXTDOMAIN_CODESET], [/* Define to 1 if you have the `bind_textdomain_codeset\' function. */
-+#undef HAVE_BIND_TEXTDOMAIN_CODESET])
-+m4trace:configure.in:285: -1- AC_CHECK_LIB([intl], [bindtextdomain], [AC_CHECK_LIB(intl, ngettext,
-+ [AC_CHECK_LIB(intl, dgettext,
-+ gt_cv_func_dgettext_libintl=yes)])])
-+m4trace:configure.in:285: -1- AC_CHECK_LIB([intl], [ngettext], [AC_CHECK_LIB(intl, dgettext,
-+ gt_cv_func_dgettext_libintl=yes)])
-+m4trace:configure.in:285: -1- AC_CHECK_LIB([intl], [dgettext], [gt_cv_func_dgettext_libintl=yes])
-+m4trace:configure.in:285: -1- AC_CHECK_LIB([intl], [ngettext], [AC_CHECK_LIB(intl, dcgettext,
-+ [gt_cv_func_dgettext_libintl=yes
-+ libintl_extra_libs=-liconv],
-+ :,-liconv)], [:], [-liconv])
-+m4trace:configure.in:285: -1- AC_CHECK_LIB([intl], [dcgettext], [gt_cv_func_dgettext_libintl=yes
-+ libintl_extra_libs=-liconv], [:], [-liconv])
-+m4trace:configure.in:285: -1- AC_CHECK_FUNCS([bind_textdomain_codeset])
-+m4trace:configure.in:285: -1- AH_OUTPUT([HAVE_BIND_TEXTDOMAIN_CODESET], [/* Define to 1 if you have the `bind_textdomain_codeset\' function. */
-+#undef HAVE_BIND_TEXTDOMAIN_CODESET])
-+m4trace:configure.in:285: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT])
-+m4trace:configure.in:285: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */
-+#undef HAVE_GETTEXT])
-+m4trace:configure.in:285: -1- AC_SUBST([MSGFMT])
-+m4trace:configure.in:285: -1- AC_CHECK_FUNCS([dcgettext])
-+m4trace:configure.in:285: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the `dcgettext\' function. */
-+#undef HAVE_DCGETTEXT])
-+m4trace:configure.in:285: -1- AC_SUBST([GMSGFMT], [$ac_cv_path_GMSGFMT])
-+m4trace:configure.in:285: -1- AC_SUBST([XGETTEXT])
-+m4trace:configure.in:285: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
-+autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from...
-+aclocal.m4:7748: GLIB_WITH_NLS is expanded from...
-+aclocal.m4:7831: GLIB_GNU_GETTEXT is expanded from...
-+aclocal.m4:7860: AM_GLIB_GNU_GETTEXT is expanded from...
-+configure.in:285: the top level])
-+m4trace:configure.in:285: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS])
-+m4trace:configure.in:285: -1- AH_OUTPUT([ENABLE_NLS], [/* always defined to indicate that i18n is enabled */
-+#undef ENABLE_NLS])
-+m4trace:configure.in:285: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete.
-+You should run autoupdate.], [autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from...
-+aclocal.m4:7748: GLIB_WITH_NLS is expanded from...
-+aclocal.m4:7831: GLIB_GNU_GETTEXT is expanded from...
-+aclocal.m4:7860: AM_GLIB_GNU_GETTEXT is expanded from...
-+configure.in:285: the top level])
-+m4trace:configure.in:285: -3- _m4_warn([obsolete], [The macro `_AC_OUTPUT_COMMANDS_CNT' is obsolete.
-+You should run autoupdate.], [autoconf/status.m4:321: _AC_OUTPUT_COMMANDS_CNT is expanded from...
-+autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from...
-+aclocal.m4:7748: GLIB_WITH_NLS is expanded from...
-+aclocal.m4:7831: GLIB_GNU_GETTEXT is expanded from...
-+aclocal.m4:7860: AM_GLIB_GNU_GETTEXT is expanded from...
-+configure.in:285: the top level])
-+m4trace:configure.in:285: -1- AC_SUBST([CATALOGS])
-+m4trace:configure.in:285: -1- AC_SUBST([CATOBJEXT])
-+m4trace:configure.in:285: -1- AC_SUBST([DATADIRNAME])
-+m4trace:configure.in:285: -1- AC_SUBST([GMOFILES])
-+m4trace:configure.in:285: -1- AC_SUBST([INSTOBJEXT])
-+m4trace:configure.in:285: -1- AC_SUBST([INTLLIBS])
-+m4trace:configure.in:285: -1- AC_SUBST([PO_IN_DATADIR_TRUE])
-+m4trace:configure.in:285: -1- AC_SUBST([PO_IN_DATADIR_FALSE])
-+m4trace:configure.in:285: -1- AC_SUBST([POFILES])
-+m4trace:configure.in:285: -1- AC_SUBST([POSUB])
-+m4trace:configure.in:285: -1- AC_SUBST([MKINSTALLDIRS])
-+m4trace:configure.in:290: -1- AC_SUBST([gconflocaledir])
-+m4trace:configure.in:292: -1- AC_CHECK_FUNCS([bind_textdomain_codeset])
-+m4trace:configure.in:292: -1- AH_OUTPUT([HAVE_BIND_TEXTDOMAIN_CODESET], [/* Define to 1 if you have the `bind_textdomain_codeset\' function. */
-+#undef HAVE_BIND_TEXTDOMAIN_CODESET])
-+m4trace:configure.in:294: -1- AC_SUBST([CFLAGS])
-+m4trace:configure.in:295: -1- AC_SUBST([CPPFLAGS])
-+m4trace:configure.in:296: -1- AC_SUBST([LDFLAGS])
-+m4trace:configure.in:300: -1- AC_SUBST([absolute_top_srcdir])
-+m4trace:configure.in:305: -1- AC_PROG_AWK
-+m4trace:configure.in:305: -1- AC_SUBST([AWK])
-+m4trace:configure.in:306: -1- AC_SUBST([PERL])
-+m4trace:configure.in:309: -1- AC_SUBST([INDENT])
-+m4trace:configure.in:328: -1- AC_SUBST([REBUILD])
-+m4trace:configure.in:342: -1- AC_CONFIG_FILES([
-+Makefile
-+gconf.m4
-+gconf/Makefile
-+gconf/default.path
-+backends/Makefile
-+po/Makefile.in
-+doc/Makefile
-+doc/gconf/Makefile
-+examples/Makefile
-+tests/Makefile
-+gconf-2.0.pc
-+])
-+m4trace:configure.in:342: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
-+You should run autoupdate.], [])
-+m4trace:configure.in:342: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
-+m4trace:configure.in:342: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
-diff -urN GConf-2.6.4/backends/Makefile.in GConf-2.6.4.new/backends/Makefile.in
---- GConf-2.6.4/backends/Makefile.in 2004-09-20 00:45:19.000000000 +0300
-+++ GConf-2.6.4.new/backends/Makefile.in 2005-03-05 11:07:05.000000000 +0200
-@@ -1,6 +1,8 @@
--# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-+# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# @configure_input@
-
--# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
-+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-+# Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -10,69 +12,57 @@
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
-
--
--SHELL = @SHELL@
-+@SET_MAKE@
-
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
--prefix = @prefix@
--exec_prefix = @exec_prefix@
--
--bindir = @bindir@
--sbindir = @sbindir@
--libexecdir = @libexecdir@
--datadir = @datadir@
--sysconfdir = @sysconfdir@
--sharedstatedir = @sharedstatedir@
--localstatedir = @localstatedir@
--libdir = @libdir@
--infodir = @infodir@
--mandir = @mandir@
--includedir = @includedir@
--oldincludedir = /usr/include
--
--DESTDIR =
--
- pkgdatadir = $(datadir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
--
- top_builddir = ..
-
--ACLOCAL = @ACLOCAL@
--AUTOCONF = @AUTOCONF@
--AUTOMAKE = @AUTOMAKE@
--AUTOHEADER = @AUTOHEADER@
--
-+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
--INSTALL_DATA = @INSTALL_DATA@
--INSTALL_SCRIPT = @INSTALL_SCRIPT@
--transform = @program_transform_name@
--
-+install_sh_DATA = $(install_sh) -c -m 644
-+install_sh_PROGRAM = $(install_sh) -c
-+install_sh_SCRIPT = $(install_sh) -c
-+INSTALL_HEADER = $(INSTALL_DATA)
-+transform = $(program_transform_name)
- NORMAL_INSTALL = :
- PRE_INSTALL = :
- POST_INSTALL = :
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
--host_alias = @host_alias@
- host_triplet = @host@
-+ACLOCAL = @ACLOCAL@
-+AMDEP_FALSE = @AMDEP_FALSE@
-+AMDEP_TRUE = @AMDEP_TRUE@
-+AMTAR = @AMTAR@
- AR = @AR@
- AS = @AS@
-+AUTOCONF = @AUTOCONF@
-+AUTOHEADER = @AUTOHEADER@
-+AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
--BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
- CATALOGS = @CATALOGS@
- CATOBJEXT = @CATOBJEXT@
- CC = @CC@
-+CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-+CPP = @CPP@
- CPPFLAGS = @CPPFLAGS@
- CXX = @CXX@
- CXXCPP = @CXXCPP@
-+CXXDEPMODE = @CXXDEPMODE@
-+CXXFLAGS = @CXXFLAGS@
-+CYGPATH_W = @CYGPATH_W@
- DATADIRNAME = @DATADIRNAME@
- DB2HTML = @DB2HTML@
- DBUS_SERVICE_DIR = @DBUS_SERVICE_DIR@
-+DEFS = @DEFS@
-+DEPDIR = @DEPDIR@
- DEPENDENT_CFLAGS = @DEPENDENT_CFLAGS@
- DEPENDENT_LIBS = @DEPENDENT_LIBS@
- DEPENDENT_WITH_GTK_CFLAGS = @DEPENDENT_WITH_GTK_CFLAGS@
-@@ -83,48 +73,73 @@
- DEPENDENT_WITH_XML_LIBS = @DEPENDENT_WITH_XML_LIBS@
- DLLTOOL = @DLLTOOL@
- ECHO = @ECHO@
-+ECHO_C = @ECHO_C@
-+ECHO_N = @ECHO_N@
-+ECHO_T = @ECHO_T@
- EGREP = @EGREP@
-+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
-+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
- EXEEXT = @EXEEXT@
- EXPANDED_SYSCONFDIR = @EXPANDED_SYSCONFDIR@
- F77 = @F77@
--GCJ = @GCJ@
--GCJFLAGS = @GCJFLAGS@
-+FFLAGS = @FFLAGS@
- GCONF_AGE = @GCONF_AGE@
- GCONF_CONFIG_SOURCE = @GCONF_CONFIG_SOURCE@
- GCONF_CURRENT = @GCONF_CURRENT@
-+GCONF_DBUS_CFLAGS = @GCONF_DBUS_CFLAGS@
-+GCONF_DBUS_LIBS = @GCONF_DBUS_LIBS@
- GCONF_IPC_CFLAGS = @GCONF_IPC_CFLAGS@
- GCONF_IPC_LIBS = @GCONF_IPC_LIBS@
-+GCONF_ORBIT_CFLAGS = @GCONF_ORBIT_CFLAGS@
-+GCONF_ORBIT_LIBS = @GCONF_ORBIT_LIBS@
- GCONF_REVISION = @GCONF_REVISION@
--GENCAT = @GENCAT@
- GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
- GMOFILES = @GMOFILES@
- GMSGFMT = @GMSGFMT@
- GTKDOC = @GTKDOC@
--GT_NO = @GT_NO@
--GT_YES = @GT_YES@
-+GTK_FALSE = @GTK_FALSE@
-+GTK_TRUE = @GTK_TRUE@
-+HAVE_DBUS_FALSE = @HAVE_DBUS_FALSE@
-+HAVE_DBUS_TRUE = @HAVE_DBUS_TRUE@
-+HAVE_DOCBOOK_FALSE = @HAVE_DOCBOOK_FALSE@
-+HAVE_DOCBOOK_TRUE = @HAVE_DOCBOOK_TRUE@
- HAVE_GTK_DOC = @HAVE_GTK_DOC@
--HAVE_LIB = @HAVE_LIB@
-+HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
-+HAVE_GTK_DOC_TRUE = @HAVE_GTK_DOC_TRUE@
-+HAVE_ORBIT_FALSE = @HAVE_ORBIT_FALSE@
-+HAVE_ORBIT_TRUE = @HAVE_ORBIT_TRUE@
- HTML_DIR = @HTML_DIR@
--INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
- INDENT = @INDENT@
-+INSTALL_DATA = @INSTALL_DATA@
- INSTALL_GCONF_CONFIG_SOURCE = @INSTALL_GCONF_CONFIG_SOURCE@
-+INSTALL_PROGRAM = @INSTALL_PROGRAM@
-+INSTALL_SCRIPT = @INSTALL_SCRIPT@
-+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- INSTOBJEXT = @INSTOBJEXT@
--INTLDEPS = @INTLDEPS@
- INTLLIBS = @INTLLIBS@
--INTLOBJS = @INTLOBJS@
- LDFLAGS = @LDFLAGS@
--LIB = @LIB@
-+LIBOBJS = @LIBOBJS@
-+LIBS = @LIBS@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
--LTLIB = @LTLIB@
-+LTLIBOBJS = @LTLIBOBJS@
- MAINT = @MAINT@
-+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
- MAJOR_VERSION = @MAJOR_VERSION@
- MAKEINFO = @MAKEINFO@
- MKINSTALLDIRS = @MKINSTALLDIRS@
-+MSGFMT = @MSGFMT@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- ORBIT_IDL = @ORBIT_IDL@
- PACKAGE = @PACKAGE@
-+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-+PACKAGE_NAME = @PACKAGE_NAME@
-+PACKAGE_STRING = @PACKAGE_STRING@
-+PACKAGE_TARNAME = @PACKAGE_TARNAME@
-+PACKAGE_VERSION = @PACKAGE_VERSION@
-+PATH_SEPARATOR = @PATH_SEPARATOR@
- PC_REQUIRES = @PC_REQUIRES@
- PERL = @PERL@
- PKG_CONFIG = @PKG_CONFIG@
-@@ -133,31 +148,89 @@
- POSUB = @POSUB@
- PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
- PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-+PTHREADS_FALSE = @PTHREADS_FALSE@
-+PTHREADS_TRUE = @PTHREADS_TRUE@
- RANLIB = @RANLIB@
--RC = @RC@
- REBUILD = @REBUILD@
-+SET_MAKE = @SET_MAKE@
-+SHELL = @SHELL@
- STRIP = @STRIP@
--USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
- USE_NLS = @USE_NLS@
-+USE_SYSTEM_BUS_FALSE = @USE_SYSTEM_BUS_FALSE@
-+USE_SYSTEM_BUS_TRUE = @USE_SYSTEM_BUS_TRUE@
- VERSION = @VERSION@
-+XGETTEXT = @XGETTEXT@
- absolute_top_srcdir = @absolute_top_srcdir@
-+ac_ct_AR = @ac_ct_AR@
-+ac_ct_AS = @ac_ct_AS@
-+ac_ct_CC = @ac_ct_CC@
-+ac_ct_CXX = @ac_ct_CXX@
-+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-+ac_ct_F77 = @ac_ct_F77@
-+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-+ac_ct_RANLIB = @ac_ct_RANLIB@
-+ac_ct_STRIP = @ac_ct_STRIP@
-+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-+am__include = @am__include@
-+am__leading_dot = @am__leading_dot@
-+am__quote = @am__quote@
-+bindir = @bindir@
-+build = @build@
-+build_alias = @build_alias@
-+build_cpu = @build_cpu@
-+build_os = @build_os@
-+build_vendor = @build_vendor@
-+datadir = @datadir@
-+exec_prefix = @exec_prefix@
- gconflocaledir = @gconflocaledir@
--l = @l@
--
--INCLUDES = -I$(top_srcdir) -I$(top_builddir) -I$(top_builddir)/gconf $(DEPENDENT_WITH_XML_CFLAGS) -DGCONF_ENABLE_INTERNALS=1 -DG_LOG_DOMAIN=\"GConf-Backends\"
-+host = @host@
-+host_alias = @host_alias@
-+host_cpu = @host_cpu@
-+host_os = @host_os@
-+host_vendor = @host_vendor@
-+includedir = @includedir@
-+infodir = @infodir@
-+install_sh = @install_sh@
-+libdir = @libdir@
-+libexecdir = @libexecdir@
-+localstatedir = @localstatedir@
-+mandir = @mandir@
-+oldincludedir = @oldincludedir@
-+prefix = @prefix@
-+program_transform_name = @program_transform_name@
-+sbindir = @sbindir@
-+sharedstatedir = @sharedstatedir@
-+sysconfdir = @sysconfdir@
-+target_alias = @target_alias@
-+INCLUDES = -I$(top_srcdir) -I$(top_builddir) -I$(top_builddir)/gconf \
-+ $(DEPENDENT_WITH_XML_CFLAGS) \
-+ -DGCONF_ENABLE_INTERNALS=1 -DG_LOG_DOMAIN=\"GConf-Backends\"
-
-
- backenddir = $(pkglibdir)/$(MAJOR_VERSION)
-
- backend_LTLIBRARIES = libgconfbackend-xml.la libgconfbackend-oldxml.la
-
--libgconfbackend_oldxml_la_SOURCES = xml-cache.h xml-cache.c xml-dir.h xml-dir.c xml-entry.h xml-entry.c xml-backend.c
-+libgconfbackend_oldxml_la_SOURCES = \
-+ xml-cache.h \
-+ xml-cache.c \
-+ xml-dir.h \
-+ xml-dir.c \
-+ xml-entry.h \
-+ xml-entry.c \
-+ xml-backend.c
-
-
- libgconfbackend_oldxml_la_LDFLAGS = -avoid-version -module -no-undefined
- libgconfbackend_oldxml_la_LIBADD = $(DEPENDENT_WITH_XML_LIBS) $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-
--libgconfbackend_xml_la_SOURCES = markup-backend.c markup-tree.h markup-tree.c
-+libgconfbackend_xml_la_SOURCES = \
-+ markup-backend.c \
-+ markup-tree.h \
-+ markup-tree.c
-
-
- libgconfbackend_xml_la_LDFLAGS = -avoid-version -module -no-undefined
-@@ -171,117 +244,200 @@
- bin_PROGRAMS = gconf-merge-tree
- gconf_merge_tree_SOURCES = gconf-merge-tree.c
- gconf_merge_tree_LDADD = $(DEPENDENT_LIBS) $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+subdir = backends
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = ../config.h
--CONFIG_CLEAN_FILES =
--LTLIBRARIES = $(backend_LTLIBRARIES)
--
--
--DEFS = @DEFS@ -I. -I$(srcdir) -I..
--LIBS = @LIBS@
--libgconfbackend_xml_la_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--libgconfbackend_xml_la_OBJECTS = markup-backend.lo markup-tree.lo
--libgconfbackend_oldxml_la_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--libgconfbackend_oldxml_la_OBJECTS = xml-cache.lo xml-dir.lo \
--xml-entry.lo xml-backend.lo
--bin_PROGRAMS = gconf-merge-tree$(EXEEXT)
--noinst_PROGRAMS = xml-test$(EXEEXT)
--PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
--
--gconf_merge_tree_OBJECTS = gconf-merge-tree.$(OBJEXT)
--gconf_merge_tree_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--gconf_merge_tree_LDFLAGS =
--xml_test_OBJECTS = xml-cache.$(OBJEXT) xml-dir.$(OBJEXT) \
--xml-entry.$(OBJEXT) xml-backend.$(OBJEXT) xml-test.$(OBJEXT)
--xml_test_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--xml_test_LDFLAGS =
--COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES =
-+LTLIBRARIES = $(backend_LTLIBRARIES)
-+
-+libgconfbackend_oldxml_la_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+am_libgconfbackend_oldxml_la_OBJECTS = xml-cache.lo xml-dir.lo \
-+ xml-entry.lo xml-backend.lo
-+libgconfbackend_oldxml_la_OBJECTS = \
-+ $(am_libgconfbackend_oldxml_la_OBJECTS)
-+libgconfbackend_xml_la_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+am_libgconfbackend_xml_la_OBJECTS = markup-backend.lo markup-tree.lo
-+libgconfbackend_xml_la_OBJECTS = $(am_libgconfbackend_xml_la_OBJECTS)
-+bin_PROGRAMS = gconf-merge-tree$(EXEEXT)
-+noinst_PROGRAMS = xml-test$(EXEEXT)
-+PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
-+
-+am_gconf_merge_tree_OBJECTS = gconf-merge-tree.$(OBJEXT)
-+gconf_merge_tree_OBJECTS = $(am_gconf_merge_tree_OBJECTS)
-+gconf_merge_tree_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+gconf_merge_tree_LDFLAGS =
-+am__objects_1 = xml-cache.$(OBJEXT) xml-dir.$(OBJEXT) \
-+ xml-entry.$(OBJEXT) xml-backend.$(OBJEXT)
-+am_xml_test_OBJECTS = $(am__objects_1) xml-test.$(OBJEXT)
-+xml_test_OBJECTS = $(am_xml_test_OBJECTS)
-+xml_test_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+xml_test_LDFLAGS =
-+
-+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-+depcomp = $(SHELL) $(top_srcdir)/depcomp
-+am__depfiles_maybe = depfiles
-+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gconf-merge-tree.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/markup-backend.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/markup-tree.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/xml-backend.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/xml-backend.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/xml-cache.Plo ./$(DEPDIR)/xml-cache.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/xml-dir.Plo ./$(DEPDIR)/xml-dir.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/xml-entry.Plo ./$(DEPDIR)/xml-entry.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/xml-test.Po
-+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
-+ $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
- CCLD = $(CC)
--LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
--DIST_COMMON = Makefile.am Makefile.in
--
--
--DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+DIST_SOURCES = $(libgconfbackend_oldxml_la_SOURCES) \
-+ $(libgconfbackend_xml_la_SOURCES) $(gconf_merge_tree_SOURCES) \
-+ $(xml_test_SOURCES)
-+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
-+SOURCES = $(libgconfbackend_oldxml_la_SOURCES) $(libgconfbackend_xml_la_SOURCES) $(gconf_merge_tree_SOURCES) $(xml_test_SOURCES)
-
--TAR = tar
--GZIP_ENV = --best
--SOURCES = $(libgconfbackend_xml_la_SOURCES) $(libgconfbackend_oldxml_la_SOURCES) $(gconf_merge_tree_SOURCES) $(xml_test_SOURCES)
--OBJECTS = $(libgconfbackend_xml_la_OBJECTS) $(libgconfbackend_oldxml_la_OBJECTS) $(gconf_merge_tree_OBJECTS) $(xml_test_OBJECTS)
-+all: all-am
-
--all: all-redirect
- .SUFFIXES:
--.SUFFIXES: .S .c .lo .o .obj .s
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps backends/Makefile
--
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-- cd $(top_builddir) \
-- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
--
--
--mostlyclean-backendLTLIBRARIES:
--
--clean-backendLTLIBRARIES:
-- -test -z "$(backend_LTLIBRARIES)" || rm -f $(backend_LTLIBRARIES)
--
--distclean-backendLTLIBRARIES:
--
--maintainer-clean-backendLTLIBRARIES:
--
-+.SUFFIXES: .c .lo .o .obj
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-+ cd $(top_srcdir) && \
-+ $(AUTOMAKE) --gnu backends/Makefile
-+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
-+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-+backendLTLIBRARIES_INSTALL = $(INSTALL)
- install-backendLTLIBRARIES: $(backend_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(backenddir)
- @list='$(backend_LTLIBRARIES)'; for p in $$list; do \
- if test -f $$p; then \
-- echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(backenddir)/$$p"; \
-- $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(backenddir)/$$p; \
-+ f="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " $(LIBTOOL) --mode=install $(backendLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(backenddir)/$$f"; \
-+ $(LIBTOOL) --mode=install $(backendLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(backenddir)/$$f; \
- else :; fi; \
- done
-
- uninstall-backendLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
-- list='$(backend_LTLIBRARIES)'; for p in $$list; do \
-- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(backenddir)/$$p; \
-+ @list='$(backend_LTLIBRARIES)'; for p in $$list; do \
-+ p="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(backenddir)/$$p"; \
-+ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(backenddir)/$$p; \
- done
-
--.c.o:
-- $(COMPILE) -c $<
-+clean-backendLTLIBRARIES:
-+ -test -z "$(backend_LTLIBRARIES)" || rm -f $(backend_LTLIBRARIES)
-+ @list='$(backend_LTLIBRARIES)'; for p in $$list; do \
-+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-+ test "$$dir" = "$$p" && dir=.; \
-+ echo "rm -f \"$${dir}/so_locations\""; \
-+ rm -f "$${dir}/so_locations"; \
-+ done
-+libgconfbackend-oldxml.la: $(libgconfbackend_oldxml_la_OBJECTS) $(libgconfbackend_oldxml_la_DEPENDENCIES)
-+ $(LINK) -rpath $(backenddir) $(libgconfbackend_oldxml_la_LDFLAGS) $(libgconfbackend_oldxml_la_OBJECTS) $(libgconfbackend_oldxml_la_LIBADD) $(LIBS)
-+libgconfbackend-xml.la: $(libgconfbackend_xml_la_OBJECTS) $(libgconfbackend_xml_la_DEPENDENCIES)
-+ $(LINK) -rpath $(backenddir) $(libgconfbackend_xml_la_LDFLAGS) $(libgconfbackend_xml_la_OBJECTS) $(libgconfbackend_xml_la_LIBADD) $(LIBS)
-+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+install-binPROGRAMS: $(bin_PROGRAMS)
-+ @$(NORMAL_INSTALL)
-+ $(mkinstalldirs) $(DESTDIR)$(bindir)
-+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
-+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-+ if test -f $$p \
-+ || test -f $$p1 \
-+ ; then \
-+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
-+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
-+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
-+ else :; fi; \
-+ done
-
--# FIXME: We should only use cygpath when building on Windows,
--# and only if it is available.
--.c.obj:
-- $(COMPILE) -c `cygpath -w $<`
-+uninstall-binPROGRAMS:
-+ @$(NORMAL_UNINSTALL)
-+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
-+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
-+ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
-+ rm -f $(DESTDIR)$(bindir)/$$f; \
-+ done
-
--.s.o:
-- $(COMPILE) -c $<
-+clean-binPROGRAMS:
-+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
-+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-+ echo " rm -f $$p $$f"; \
-+ rm -f $$p $$f ; \
-+ done
-
--.S.o:
-- $(COMPILE) -c $<
-+clean-noinstPROGRAMS:
-+ @list='$(noinst_PROGRAMS)'; for p in $$list; do \
-+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-+ echo " rm -f $$p $$f"; \
-+ rm -f $$p $$f ; \
-+ done
-+gconf-merge-tree$(EXEEXT): $(gconf_merge_tree_OBJECTS) $(gconf_merge_tree_DEPENDENCIES)
-+ @rm -f gconf-merge-tree$(EXEEXT)
-+ $(LINK) $(gconf_merge_tree_LDFLAGS) $(gconf_merge_tree_OBJECTS) $(gconf_merge_tree_LDADD) $(LIBS)
-+xml-test$(EXEEXT): $(xml_test_OBJECTS) $(xml_test_DEPENDENCIES)
-+ @rm -f xml-test$(EXEEXT)
-+ $(LINK) $(xml_test_LDFLAGS) $(xml_test_OBJECTS) $(xml_test_LDADD) $(LIBS)
-
- mostlyclean-compile:
-- -rm -f *.o core *.core
-- -rm -f *.$(OBJEXT)
--
--clean-compile:
-+ -rm -f *.$(OBJEXT) core *.core
-
- distclean-compile:
- -rm -f *.tab.c
-
--maintainer-clean-compile:
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-merge-tree.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/markup-backend.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/markup-tree.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml-backend.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml-backend.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml-cache.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml-cache.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml-dir.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml-dir.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml-entry.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml-entry.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml-test.Po@am__quote@
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+.c.o:
-+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-+@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-+@am__fastdepCC_TRUE@ fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
-
--.s.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+.c.obj:
-+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-+@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-+@am__fastdepCC_TRUE@ fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-
--.S.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+.c.lo:
-+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-+@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
-+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-+@am__fastdepCC_TRUE@ fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
-
- mostlyclean-libtool:
- -rm -f *.lo
-@@ -290,227 +446,187 @@
- -rm -rf .libs _libs
-
- distclean-libtool:
-+ -rm -f libtool
-+uninstall-info-am:
-
--maintainer-clean-libtool:
--
--libgconfbackend-xml.la: $(libgconfbackend_xml_la_OBJECTS) $(libgconfbackend_xml_la_DEPENDENCIES)
-- $(LINK) -rpath $(backenddir) $(libgconfbackend_xml_la_LDFLAGS) $(libgconfbackend_xml_la_OBJECTS) $(libgconfbackend_xml_la_LIBADD) $(LIBS)
--
--libgconfbackend-oldxml.la: $(libgconfbackend_oldxml_la_OBJECTS) $(libgconfbackend_oldxml_la_DEPENDENCIES)
-- $(LINK) -rpath $(backenddir) $(libgconfbackend_oldxml_la_LDFLAGS) $(libgconfbackend_oldxml_la_OBJECTS) $(libgconfbackend_oldxml_la_LIBADD) $(LIBS)
--
--mostlyclean-binPROGRAMS:
--
--clean-binPROGRAMS:
-- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
--
--distclean-binPROGRAMS:
--
--maintainer-clean-binPROGRAMS:
--
--install-binPROGRAMS: $(bin_PROGRAMS)
-- @$(NORMAL_INSTALL)
-- $(mkinstalldirs) $(DESTDIR)$(bindir)
-- @list='$(bin_PROGRAMS)'; for p in $$list; do \
-- if test -f $$p; then \
-- echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
-- $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
-- else :; fi; \
-- done
--
--uninstall-binPROGRAMS:
-- @$(NORMAL_UNINSTALL)
-- list='$(bin_PROGRAMS)'; for p in $$list; do \
-- rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
-- done
--
--mostlyclean-noinstPROGRAMS:
--
--clean-noinstPROGRAMS:
-- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
--
--distclean-noinstPROGRAMS:
--
--maintainer-clean-noinstPROGRAMS:
--
--gconf-merge-tree$(EXEEXT): $(gconf_merge_tree_OBJECTS) $(gconf_merge_tree_DEPENDENCIES)
-- @rm -f gconf-merge-tree$(EXEEXT)
-- $(LINK) $(gconf_merge_tree_LDFLAGS) $(gconf_merge_tree_OBJECTS) $(gconf_merge_tree_LDADD) $(LIBS)
-+ETAGS = etags
-+ETAGSFLAGS =
-
--xml-test$(EXEEXT): $(xml_test_OBJECTS) $(xml_test_DEPENDENCIES)
-- @rm -f xml-test$(EXEEXT)
-- $(LINK) $(xml_test_LDFLAGS) $(xml_test_OBJECTS) $(xml_test_LDADD) $(LIBS)
-+CTAGS = ctags
-+CTAGSFLAGS =
-
- tags: TAGS
-
--ID: $(HEADERS) $(SOURCES) $(LISP)
-- list='$(SOURCES) $(HEADERS)'; \
-- unique=`for i in $$list; do echo $$i; done | \
-- awk ' { files[$$0] = 1; } \
-+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
-- here=`pwd` && cd $(srcdir) \
-- && mkid -f$$here/ID $$unique $(LISP)
-+ mkid -fID $$unique
-
--TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
-+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
-- list='$(SOURCES) $(HEADERS)'; \
-- unique=`for i in $$list; do echo $$i; done | \
-- awk ' { files[$$0] = 1; } \
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
-- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
--
--mostlyclean-tags:
--
--clean-tags:
-+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
-+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+ $$tags $$unique
-+
-+ctags: CTAGS
-+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
-+ tags=; \
-+ here=`pwd`; \
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
-+ END { for (i in files) print i; }'`; \
-+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
-+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-+ $$tags $$unique
-+
-+GTAGS:
-+ here=`$(am__cd) $(top_builddir) && pwd` \
-+ && cd $(top_srcdir) \
-+ && gtags -i $(GTAGS_ARGS) $$here
-
- distclean-tags:
-- -rm -f TAGS ID
--
--maintainer-clean-tags:
-+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
--distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
--
--subdir = backends
-+top_distdir = ..
-+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
- distdir: $(DISTFILES)
-- @for file in $(DISTFILES); do \
-- d=$(srcdir); \
-+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-+ list='$(DISTFILES)'; for file in $$list; do \
-+ case $$file in \
-+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-+ esac; \
-+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-+ dir="/$$dir"; \
-+ $(mkinstalldirs) "$(distdir)$$dir"; \
-+ else \
-+ dir=''; \
-+ fi; \
- if test -d $$d/$$file; then \
-- cp -pr $$d/$$file $(distdir)/$$file; \
-+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-+ fi; \
-+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
-- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
-- || cp -p $$d/$$file $(distdir)/$$file || :; \
-+ || cp -p $$d/$$file $(distdir)/$$file \
-+ || exit 1; \
- fi; \
- done
--gconf-merge-tree.o: gconf-merge-tree.c ../config.h markup-tree.c \
-- ../gconf/gconf-internals.h ../gconf/gconf-error.h \
-- ../gconf/gconf-value.h ../gconf/gconf-engine.h \
-- ../gconf/gconf-sources.h ../gconf/gconf-schema.h markup-tree.h
--markup-backend.lo markup-backend.o : markup-backend.c \
-- ../gconf/gconf-backend.h ../gconf/gconf-internals.h ../config.h \
-- ../gconf/gconf-error.h ../gconf/gconf-value.h \
-- ../gconf/gconf-engine.h ../gconf/gconf-sources.h \
-- ../gconf/gconf.h ../gconf/gconf-schema.h \
-- ../gconf/gconf-enum-types.h markup-tree.h
--markup-tree.lo markup-tree.o : markup-tree.c ../gconf/gconf-internals.h \
-- ../config.h ../gconf/gconf-error.h ../gconf/gconf-value.h \
-- ../gconf/gconf-engine.h ../gconf/gconf-sources.h \
-- ../gconf/gconf-schema.h markup-tree.h
--xml-backend.lo xml-backend.o : xml-backend.c ../gconf/gconf-backend.h \
-- ../gconf/gconf-internals.h ../config.h ../gconf/gconf-error.h \
-- ../gconf/gconf-value.h ../gconf/gconf-engine.h \
-- ../gconf/gconf-sources.h ../gconf/gconf.h \
-- ../gconf/gconf-schema.h ../gconf/gconf-enum-types.h xml-cache.h \
-- xml-dir.h
--xml-cache.lo xml-cache.o : xml-cache.c xml-cache.h ../gconf/gconf.h \
-- ../gconf/gconf-schema.h ../gconf/gconf-value.h \
-- ../gconf/gconf-error.h ../gconf/gconf-engine.h \
-- ../gconf/gconf-enum-types.h xml-dir.h \
-- ../gconf/gconf-internals.h ../config.h ../gconf/gconf-sources.h
--xml-dir.lo xml-dir.o : xml-dir.c xml-dir.h ../gconf/gconf.h \
-- ../gconf/gconf-schema.h ../gconf/gconf-value.h \
-- ../gconf/gconf-error.h ../gconf/gconf-engine.h \
-- ../gconf/gconf-enum-types.h xml-entry.h \
-- ../gconf/gconf-internals.h ../config.h ../gconf/gconf-sources.h
--xml-entry.lo xml-entry.o : xml-entry.c xml-entry.h ../gconf/gconf.h \
-- ../gconf/gconf-schema.h ../gconf/gconf-value.h \
-- ../gconf/gconf-error.h ../gconf/gconf-engine.h \
-- ../gconf/gconf-enum-types.h ../gconf/gconf-internals.h \
-- ../config.h ../gconf/gconf-sources.h
--xml-test.o: xml-test.c xml-entry.h ../gconf/gconf.h \
-- ../gconf/gconf-schema.h ../gconf/gconf-value.h \
-- ../gconf/gconf-error.h ../gconf/gconf-engine.h \
-- ../gconf/gconf-enum-types.h xml-dir.h xml-cache.h \
-- ../gconf/gconf-internals.h ../config.h ../gconf/gconf-sources.h \
-- ../gconf/gconf-backend.h
--
--info-am:
--info: info-am
--dvi-am:
--dvi: dvi-am
- check-am: all-am
- check: check-am
--installcheck-am:
--installcheck: installcheck-am
--install-exec-am: install-binPROGRAMS
--install-exec: install-exec-am
-+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS)
-
--install-data-am: install-backendLTLIBRARIES
-+installdirs:
-+ $(mkinstalldirs) $(DESTDIR)$(backenddir) $(DESTDIR)$(bindir)
-+install: install-am
-+install-exec: install-exec-am
- install-data: install-data-am
-+uninstall: uninstall-am
-
- install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
--install: install-am
--uninstall-am: uninstall-backendLTLIBRARIES uninstall-binPROGRAMS
--uninstall: uninstall-am
--all-am: Makefile $(LTLIBRARIES) $(PROGRAMS)
--all-redirect: all-am
--install-strip:
-- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
--installdirs:
-- $(mkinstalldirs) $(DESTDIR)$(backenddir) $(DESTDIR)$(bindir)
--
-
-+installcheck: installcheck-am
-+install-strip:
-+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+ `test -z '$(STRIP)' || \
-+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
- mostlyclean-generic:
-
- clean-generic:
-
- distclean-generic:
-- -rm -f Makefile $(CONFIG_CLEAN_FILES)
-- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-+ -rm -f $(CONFIG_CLEAN_FILES)
-
- maintainer-clean-generic:
--mostlyclean-am: mostlyclean-backendLTLIBRARIES mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-binPROGRAMS \
-- mostlyclean-noinstPROGRAMS mostlyclean-tags \
-- mostlyclean-generic
-+ @echo "This command is intended for maintainers to use"
-+ @echo "it deletes files that may require special tools to rebuild."
-+clean: clean-am
-
--mostlyclean: mostlyclean-am
-+clean-am: clean-backendLTLIBRARIES clean-binPROGRAMS clean-generic \
-+ clean-libtool clean-noinstPROGRAMS mostlyclean-am
-
--clean-am: clean-backendLTLIBRARIES clean-compile clean-libtool \
-- clean-binPROGRAMS clean-noinstPROGRAMS clean-tags \
-- clean-generic mostlyclean-am
-+distclean: distclean-am
-+ -rm -rf ./$(DEPDIR)
-+ -rm -f Makefile
-+distclean-am: clean-am distclean-compile distclean-generic \
-+ distclean-libtool distclean-tags
-
--clean: clean-am
-+dvi: dvi-am
-
--distclean-am: distclean-backendLTLIBRARIES distclean-compile \
-- distclean-libtool distclean-binPROGRAMS \
-- distclean-noinstPROGRAMS distclean-tags \
-- distclean-generic clean-am
-- -rm -f libtool
-+dvi-am:
-
--distclean: distclean-am
-+info: info-am
-
--maintainer-clean-am: maintainer-clean-backendLTLIBRARIES \
-- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-binPROGRAMS \
-- maintainer-clean-noinstPROGRAMS maintainer-clean-tags \
-- maintainer-clean-generic distclean-am
-- @echo "This command is intended for maintainers to use;"
-- @echo "it deletes files that may require special tools to rebuild."
-+info-am:
-+
-+install-data-am: install-backendLTLIBRARIES
-+
-+install-exec-am: install-binPROGRAMS
-+
-+install-info: install-info-am
-+
-+install-man:
-+
-+installcheck-am:
-
- maintainer-clean: maintainer-clean-am
-+ -rm -rf ./$(DEPDIR)
-+ -rm -f Makefile
-+maintainer-clean-am: distclean-am maintainer-clean-generic
-+
-+mostlyclean: mostlyclean-am
-+
-+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-+ mostlyclean-libtool
-+
-+pdf: pdf-am
-+
-+pdf-am:
-
--.PHONY: mostlyclean-backendLTLIBRARIES distclean-backendLTLIBRARIES \
--clean-backendLTLIBRARIES maintainer-clean-backendLTLIBRARIES \
--uninstall-backendLTLIBRARIES install-backendLTLIBRARIES \
--mostlyclean-compile distclean-compile clean-compile \
--maintainer-clean-compile mostlyclean-libtool distclean-libtool \
--clean-libtool maintainer-clean-libtool mostlyclean-binPROGRAMS \
--distclean-binPROGRAMS clean-binPROGRAMS maintainer-clean-binPROGRAMS \
--uninstall-binPROGRAMS install-binPROGRAMS mostlyclean-noinstPROGRAMS \
--distclean-noinstPROGRAMS clean-noinstPROGRAMS \
--maintainer-clean-noinstPROGRAMS tags mostlyclean-tags distclean-tags \
--clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \
--check-am installcheck-am installcheck install-exec-am install-exec \
--install-data-am install-data install-am install uninstall-am uninstall \
--all-redirect all-am all installdirs mostlyclean-generic \
--distclean-generic clean-generic maintainer-clean-generic clean \
--mostlyclean distclean maintainer-clean
-+ps: ps-am
-
-+ps-am:
-+
-+uninstall-am: uninstall-backendLTLIBRARIES uninstall-binPROGRAMS \
-+ uninstall-info-am
-+
-+.PHONY: CTAGS GTAGS all all-am check check-am clean \
-+ clean-backendLTLIBRARIES clean-binPROGRAMS clean-generic \
-+ clean-libtool clean-noinstPROGRAMS ctags distclean \
-+ distclean-compile distclean-generic distclean-libtool \
-+ distclean-tags distdir dvi dvi-am info info-am install \
-+ install-am install-backendLTLIBRARIES install-binPROGRAMS \
-+ install-data install-data-am install-exec install-exec-am \
-+ install-info install-info-am install-man install-strip \
-+ installcheck installcheck-am installdirs maintainer-clean \
-+ maintainer-clean-generic mostlyclean mostlyclean-compile \
-+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-+ tags uninstall uninstall-am uninstall-backendLTLIBRARIES \
-+ uninstall-binPROGRAMS uninstall-info-am
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
-diff -urN GConf-2.6.4/depcomp GConf-2.6.4.new/depcomp
---- GConf-2.6.4/depcomp 1970-01-01 02:00:00.000000000 +0200
-+++ GConf-2.6.4.new/depcomp 2005-03-05 11:07:05.000000000 +0200
-@@ -0,0 +1,479 @@
-+#! /bin/sh
-+
-+# depcomp - compile a program generating dependencies as side-effects
-+# Copyright 1999, 2000, 2003 Free Software Foundation, 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, 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.
-+
-+# As a special exception to the GNU General Public License, if you
-+# distribute this file as part of a program that contains a
-+# configuration script generated by Autoconf, you may include it under
-+# the same distribution terms that you use for the rest of that program.
-+
-+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-+
-+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
-+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
-+ exit 1
-+fi
-+# `libtool' can also be set to `yes' or `no'.
-+
-+if test -z "$depfile"; then
-+ base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
-+ dir=`echo "$object" | sed 's,/.*$,/,'`
-+ if test "$dir" = "$object"; then
-+ dir=
-+ fi
-+ # FIXME: should be _deps on DOS.
-+ depfile="$dir.deps/$base"
-+fi
-+
-+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-+
-+rm -f "$tmpdepfile"
-+
-+# Some modes work just like other modes, but use different flags. We
-+# parameterize here, but still list the modes in the big case below,
-+# to make depend.m4 easier to write. Note that we *cannot* use a case
-+# here, because this file can only contain one case statement.
-+if test "$depmode" = hp; then
-+ # HP compiler uses -M and no extra arg.
-+ gccflag=-M
-+ depmode=gcc
-+fi
-+
-+if test "$depmode" = dashXmstdout; then
-+ # This is just like dashmstdout with a different argument.
-+ dashmflag=-xM
-+ depmode=dashmstdout
-+fi
-+
-+case "$depmode" in
-+gcc3)
-+## gcc 3 implements dependency tracking that does exactly what
-+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
-+## it if -MD -MP comes after the -MF stuff. Hmm.
-+ "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
-+ stat=$?
-+ if test $stat -eq 0; then :
-+ else
-+ rm -f "$tmpdepfile"
-+ exit $stat
-+ fi
-+ mv "$tmpdepfile" "$depfile"
-+ ;;
-+
-+gcc)
-+## There are various ways to get dependency output from gcc. Here's
-+## why we pick this rather obscure method:
-+## - Don't want to use -MD because we'd like the dependencies to end
-+## up in a subdir. Having to rename by hand is ugly.
-+## (We might end up doing this anyway to support other compilers.)
-+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-+## -MM, not -M (despite what the docs say).
-+## - Using -M directly means running the compiler twice (even worse
-+## than renaming).
-+ if test -z "$gccflag"; then
-+ gccflag=-MD,
-+ fi
-+ "$@" -Wp,"$gccflag$tmpdepfile"
-+ stat=$?
-+ if test $stat -eq 0; then :
-+ else
-+ rm -f "$tmpdepfile"
-+ exit $stat
-+ fi
-+ rm -f "$depfile"
-+ echo "$object : \\" > "$depfile"
-+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-+## The second -e expression handles DOS-style file names with drive letters.
-+ sed -e 's/^[^:]*: / /' \
-+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-+## This next piece of magic avoids the `deleted header file' problem.
-+## The problem is that when a header file which appears in a .P file
-+## is deleted, the dependency causes make to die (because there is
-+## typically no way to rebuild the header). We avoid this by adding
-+## dummy dependencies for each header file. Too bad gcc doesn't do
-+## this for us directly.
-+ tr ' ' '
-+' < "$tmpdepfile" |
-+## Some versions of gcc put a space before the `:'. On the theory
-+## that the space means something, we add a space to the output as
-+## well.
-+## Some versions of the HPUX 10.20 sed can't process this invocation
-+## correctly. Breaking it into two sed invocations is a workaround.
-+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-+ rm -f "$tmpdepfile"
-+ ;;
-+
-+hp)
-+ # This case exists only to let depend.m4 do its work. It works by
-+ # looking at the text of this script. This case will never be run,
-+ # since it is checked for above.
-+ exit 1
-+ ;;
-+
-+sgi)
-+ if test "$libtool" = yes; then
-+ "$@" "-Wp,-MDupdate,$tmpdepfile"
-+ else
-+ "$@" -MDupdate "$tmpdepfile"
-+ fi
-+ stat=$?
-+ if test $stat -eq 0; then :
-+ else
-+ rm -f "$tmpdepfile"
-+ exit $stat
-+ fi
-+ rm -f "$depfile"
-+
-+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
-+ echo "$object : \\" > "$depfile"
-+
-+ # Clip off the initial element (the dependent). Don't try to be
-+ # clever and replace this with sed code, as IRIX sed won't handle
-+ # lines with more than a fixed number of characters (4096 in
-+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
-+ # the IRIX cc adds comments like `#:fec' to the end of the
-+ # dependency line.
-+ tr ' ' '
-+' < "$tmpdepfile" \
-+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-+ tr '
-+' ' ' >> $depfile
-+ echo >> $depfile
-+
-+ # The second pass generates a dummy entry for each header file.
-+ tr ' ' '
-+' < "$tmpdepfile" \
-+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-+ >> $depfile
-+ else
-+ # The sourcefile does not contain any dependencies, so just
-+ # store a dummy comment line, to avoid errors with the Makefile
-+ # "include basename.Plo" scheme.
-+ echo "#dummy" > "$depfile"
-+ fi
-+ rm -f "$tmpdepfile"
-+ ;;
-+
-+aix)
-+ # The C for AIX Compiler uses -M and outputs the dependencies
-+ # in a .u file. In older versions, this file always lives in the
-+ # current directory. Also, the AIX compiler puts `$object:' at the
-+ # start of each line; $object doesn't have directory information.
-+ # Version 6 uses the directory in both cases.
-+ stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
-+ tmpdepfile="$stripped.u"
-+ if test "$libtool" = yes; then
-+ "$@" -Wc,-M
-+ else
-+ "$@" -M
-+ fi
-+ stat=$?
-+
-+ if test -f "$tmpdepfile"; then :
-+ else
-+ stripped=`echo "$stripped" | sed 's,^.*/,,'`
-+ tmpdepfile="$stripped.u"
-+ fi
-+
-+ if test $stat -eq 0; then :
-+ else
-+ rm -f "$tmpdepfile"
-+ exit $stat
-+ fi
-+
-+ if test -f "$tmpdepfile"; then
-+ outname="$stripped.o"
-+ # Each line is of the form `foo.o: dependent.h'.
-+ # Do two passes, one to just change these to
-+ # `$object: dependent.h' and one to simply `dependent.h:'.
-+ sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
-+ sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
-+ else
-+ # The sourcefile does not contain any dependencies, so just
-+ # store a dummy comment line, to avoid errors with the Makefile
-+ # "include basename.Plo" scheme.
-+ echo "#dummy" > "$depfile"
-+ fi
-+ rm -f "$tmpdepfile"
-+ ;;
-+
-+icc)
-+ # Intel's C compiler understands `-MD -MF file'. However on
-+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-+ # ICC 7.0 will fill foo.d with something like
-+ # foo.o: sub/foo.c
-+ # foo.o: sub/foo.h
-+ # which is wrong. We want:
-+ # sub/foo.o: sub/foo.c
-+ # sub/foo.o: sub/foo.h
-+ # sub/foo.c:
-+ # sub/foo.h:
-+ # ICC 7.1 will output
-+ # foo.o: sub/foo.c sub/foo.h
-+ # and will wrap long lines using \ :
-+ # foo.o: sub/foo.c ... \
-+ # sub/foo.h ... \
-+ # ...
-+
-+ "$@" -MD -MF "$tmpdepfile"
-+ stat=$?
-+ if test $stat -eq 0; then :
-+ else
-+ rm -f "$tmpdepfile"
-+ exit $stat
-+ fi
-+ rm -f "$depfile"
-+ # Each line is of the form `foo.o: dependent.h',
-+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
-+ # Do two passes, one to just change these to
-+ # `$object: dependent.h' and one to simply `dependent.h:'.
-+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-+ # Some versions of the HPUX 10.20 sed can't process this invocation
-+ # correctly. Breaking it into two sed invocations is a workaround.
-+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-+ sed -e 's/$/ :/' >> "$depfile"
-+ rm -f "$tmpdepfile"
-+ ;;
-+
-+tru64)
-+ # The Tru64 compiler uses -MD to generate dependencies as a side
-+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
-+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-+ # dependencies in `foo.d' instead, so we check for that too.
-+ # Subdirectories are respected.
-+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-+ test "x$dir" = "x$object" && dir=
-+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-+
-+ if test "$libtool" = yes; then
-+ tmpdepfile1="$dir.libs/$base.lo.d"
-+ tmpdepfile2="$dir.libs/$base.d"
-+ "$@" -Wc,-MD
-+ else
-+ tmpdepfile1="$dir$base.o.d"
-+ tmpdepfile2="$dir$base.d"
-+ "$@" -MD
-+ fi
-+
-+ stat=$?
-+ if test $stat -eq 0; then :
-+ else
-+ rm -f "$tmpdepfile1" "$tmpdepfile2"
-+ exit $stat
-+ fi
-+
-+ if test -f "$tmpdepfile1"; then
-+ tmpdepfile="$tmpdepfile1"
-+ else
-+ tmpdepfile="$tmpdepfile2"
-+ fi
-+ if test -f "$tmpdepfile"; then
-+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-+ # That's a tab and a space in the [].
-+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-+ else
-+ echo "#dummy" > "$depfile"
-+ fi
-+ rm -f "$tmpdepfile"
-+ ;;
-+
-+#nosideeffect)
-+ # This comment above is used by automake to tell side-effect
-+ # dependency tracking mechanisms from slower ones.
-+
-+dashmstdout)
-+ # Important note: in order to support this mode, a compiler *must*
-+ # always write the preprocessed file to stdout, regardless of -o.
-+ "$@" || exit $?
-+
-+ # Remove the call to Libtool.
-+ if test "$libtool" = yes; then
-+ while test $1 != '--mode=compile'; do
-+ shift
-+ done
-+ shift
-+ fi
-+
-+ # Remove `-o $object'.
-+ IFS=" "
-+ for arg
-+ do
-+ case $arg in
-+ -o)
-+ shift
-+ ;;
-+ $object)
-+ shift
-+ ;;
-+ *)
-+ set fnord "$@" "$arg"
-+ shift # fnord
-+ shift # $arg
-+ ;;
-+ esac
-+ done
-+
-+ test -z "$dashmflag" && dashmflag=-M
-+ # Require at least two characters before searching for `:'
-+ # in the target name. This is to cope with DOS-style filenames:
-+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
-+ "$@" $dashmflag |
-+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
-+ rm -f "$depfile"
-+ cat < "$tmpdepfile" > "$depfile"
-+ tr ' ' '
-+' < "$tmpdepfile" | \
-+## Some versions of the HPUX 10.20 sed can't process this invocation
-+## correctly. Breaking it into two sed invocations is a workaround.
-+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-+ rm -f "$tmpdepfile"
-+ ;;
-+
-+dashXmstdout)
-+ # This case only exists to satisfy depend.m4. It is never actually
-+ # run, as this mode is specially recognized in the preamble.
-+ exit 1
-+ ;;
-+
-+makedepend)
-+ "$@" || exit $?
-+ # Remove any Libtool call
-+ if test "$libtool" = yes; then
-+ while test $1 != '--mode=compile'; do
-+ shift
-+ done
-+ shift
-+ fi
-+ # X makedepend
-+ shift
-+ cleared=no
-+ for arg in "$@"; do
-+ case $cleared in
-+ no)
-+ set ""; shift
-+ cleared=yes ;;
-+ esac
-+ case "$arg" in
-+ -D*|-I*)
-+ set fnord "$@" "$arg"; shift ;;
-+ # Strip any option that makedepend may not understand. Remove
-+ # the object too, otherwise makedepend will parse it as a source file.
-+ -*|$object)
-+ ;;
-+ *)
-+ set fnord "$@" "$arg"; shift ;;
-+ esac
-+ done
-+ obj_suffix="`echo $object | sed 's/^.*\././'`"
-+ touch "$tmpdepfile"
-+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
-+ rm -f "$depfile"
-+ cat < "$tmpdepfile" > "$depfile"
-+ sed '1,2d' "$tmpdepfile" | tr ' ' '
-+' | \
-+## Some versions of the HPUX 10.20 sed can't process this invocation
-+## correctly. Breaking it into two sed invocations is a workaround.
-+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-+ rm -f "$tmpdepfile" "$tmpdepfile".bak
-+ ;;
-+
-+cpp)
-+ # Important note: in order to support this mode, a compiler *must*
-+ # always write the preprocessed file to stdout.
-+ "$@" || exit $?
-+
-+ # Remove the call to Libtool.
-+ if test "$libtool" = yes; then
-+ while test $1 != '--mode=compile'; do
-+ shift
-+ done
-+ shift
-+ fi
-+
-+ # Remove `-o $object'.
-+ IFS=" "
-+ for arg
-+ do
-+ case $arg in
-+ -o)
-+ shift
-+ ;;
-+ $object)
-+ shift
-+ ;;
-+ *)
-+ set fnord "$@" "$arg"
-+ shift # fnord
-+ shift # $arg
-+ ;;
-+ esac
-+ done
-+
-+ "$@" -E |
-+ sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
-+ sed '$ s: \\$::' > "$tmpdepfile"
-+ rm -f "$depfile"
-+ echo "$object : \\" > "$depfile"
-+ cat < "$tmpdepfile" >> "$depfile"
-+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
-+ rm -f "$tmpdepfile"
-+ ;;
-+
-+msvisualcpp)
-+ # Important note: in order to support this mode, a compiler *must*
-+ # always write the preprocessed file to stdout, regardless of -o,
-+ # because we must use -o when running libtool.
-+ "$@" || exit $?
-+ IFS=" "
-+ for arg
-+ do
-+ case "$arg" in
-+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-+ set fnord "$@"
-+ shift
-+ shift
-+ ;;
-+ *)
-+ set fnord "$@" "$arg"
-+ shift
-+ shift
-+ ;;
-+ esac
-+ done
-+ "$@" -E |
-+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
-+ rm -f "$depfile"
-+ echo "$object : \\" > "$depfile"
-+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
-+ echo " " >> "$depfile"
-+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-+ rm -f "$tmpdepfile"
-+ ;;
-+
-+none)
-+ exec "$@"
-+ ;;
-+
-+*)
-+ echo "Unknown depmode $depmode" 1>&2
-+ exit 1
-+ ;;
-+esac
-+
-+exit 0
-diff -urN GConf-2.6.4/doc/Makefile.in GConf-2.6.4.new/doc/Makefile.in
---- GConf-2.6.4/doc/Makefile.in 2004-09-20 00:45:40.000000000 +0300
-+++ GConf-2.6.4.new/doc/Makefile.in 2005-03-05 11:07:06.000000000 +0200
-@@ -1,6 +1,8 @@
--# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-+# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# @configure_input@
-
--# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
-+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-+# Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -10,69 +12,57 @@
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
-
--
--SHELL = @SHELL@
-+@SET_MAKE@
-
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
--prefix = @prefix@
--exec_prefix = @exec_prefix@
--
--bindir = @bindir@
--sbindir = @sbindir@
--libexecdir = @libexecdir@
--datadir = @datadir@
--sysconfdir = @sysconfdir@
--sharedstatedir = @sharedstatedir@
--localstatedir = @localstatedir@
--libdir = @libdir@
--infodir = @infodir@
--mandir = @mandir@
--includedir = @includedir@
--oldincludedir = /usr/include
--
--DESTDIR =
--
- pkgdatadir = $(datadir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
--
- top_builddir = ..
-
--ACLOCAL = @ACLOCAL@
--AUTOCONF = @AUTOCONF@
--AUTOMAKE = @AUTOMAKE@
--AUTOHEADER = @AUTOHEADER@
--
-+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
--INSTALL_DATA = @INSTALL_DATA@
--INSTALL_SCRIPT = @INSTALL_SCRIPT@
--transform = @program_transform_name@
--
-+install_sh_DATA = $(install_sh) -c -m 644
-+install_sh_PROGRAM = $(install_sh) -c
-+install_sh_SCRIPT = $(install_sh) -c
-+INSTALL_HEADER = $(INSTALL_DATA)
-+transform = $(program_transform_name)
- NORMAL_INSTALL = :
- PRE_INSTALL = :
- POST_INSTALL = :
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
--host_alias = @host_alias@
- host_triplet = @host@
-+ACLOCAL = @ACLOCAL@
-+AMDEP_FALSE = @AMDEP_FALSE@
-+AMDEP_TRUE = @AMDEP_TRUE@
-+AMTAR = @AMTAR@
- AR = @AR@
- AS = @AS@
-+AUTOCONF = @AUTOCONF@
-+AUTOHEADER = @AUTOHEADER@
-+AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
--BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
- CATALOGS = @CATALOGS@
- CATOBJEXT = @CATOBJEXT@
- CC = @CC@
-+CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-+CPP = @CPP@
- CPPFLAGS = @CPPFLAGS@
- CXX = @CXX@
- CXXCPP = @CXXCPP@
-+CXXDEPMODE = @CXXDEPMODE@
-+CXXFLAGS = @CXXFLAGS@
-+CYGPATH_W = @CYGPATH_W@
- DATADIRNAME = @DATADIRNAME@
- DB2HTML = @DB2HTML@
- DBUS_SERVICE_DIR = @DBUS_SERVICE_DIR@
-+DEFS = @DEFS@
-+DEPDIR = @DEPDIR@
- DEPENDENT_CFLAGS = @DEPENDENT_CFLAGS@
- DEPENDENT_LIBS = @DEPENDENT_LIBS@
- DEPENDENT_WITH_GTK_CFLAGS = @DEPENDENT_WITH_GTK_CFLAGS@
-@@ -83,48 +73,73 @@
- DEPENDENT_WITH_XML_LIBS = @DEPENDENT_WITH_XML_LIBS@
- DLLTOOL = @DLLTOOL@
- ECHO = @ECHO@
-+ECHO_C = @ECHO_C@
-+ECHO_N = @ECHO_N@
-+ECHO_T = @ECHO_T@
- EGREP = @EGREP@
-+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
-+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
- EXEEXT = @EXEEXT@
- EXPANDED_SYSCONFDIR = @EXPANDED_SYSCONFDIR@
- F77 = @F77@
--GCJ = @GCJ@
--GCJFLAGS = @GCJFLAGS@
-+FFLAGS = @FFLAGS@
- GCONF_AGE = @GCONF_AGE@
- GCONF_CONFIG_SOURCE = @GCONF_CONFIG_SOURCE@
- GCONF_CURRENT = @GCONF_CURRENT@
-+GCONF_DBUS_CFLAGS = @GCONF_DBUS_CFLAGS@
-+GCONF_DBUS_LIBS = @GCONF_DBUS_LIBS@
- GCONF_IPC_CFLAGS = @GCONF_IPC_CFLAGS@
- GCONF_IPC_LIBS = @GCONF_IPC_LIBS@
-+GCONF_ORBIT_CFLAGS = @GCONF_ORBIT_CFLAGS@
-+GCONF_ORBIT_LIBS = @GCONF_ORBIT_LIBS@
- GCONF_REVISION = @GCONF_REVISION@
--GENCAT = @GENCAT@
- GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
- GMOFILES = @GMOFILES@
- GMSGFMT = @GMSGFMT@
- GTKDOC = @GTKDOC@
--GT_NO = @GT_NO@
--GT_YES = @GT_YES@
-+GTK_FALSE = @GTK_FALSE@
-+GTK_TRUE = @GTK_TRUE@
-+HAVE_DBUS_FALSE = @HAVE_DBUS_FALSE@
-+HAVE_DBUS_TRUE = @HAVE_DBUS_TRUE@
-+HAVE_DOCBOOK_FALSE = @HAVE_DOCBOOK_FALSE@
-+HAVE_DOCBOOK_TRUE = @HAVE_DOCBOOK_TRUE@
- HAVE_GTK_DOC = @HAVE_GTK_DOC@
--HAVE_LIB = @HAVE_LIB@
-+HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
-+HAVE_GTK_DOC_TRUE = @HAVE_GTK_DOC_TRUE@
-+HAVE_ORBIT_FALSE = @HAVE_ORBIT_FALSE@
-+HAVE_ORBIT_TRUE = @HAVE_ORBIT_TRUE@
- HTML_DIR = @HTML_DIR@
--INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
- INDENT = @INDENT@
-+INSTALL_DATA = @INSTALL_DATA@
- INSTALL_GCONF_CONFIG_SOURCE = @INSTALL_GCONF_CONFIG_SOURCE@
-+INSTALL_PROGRAM = @INSTALL_PROGRAM@
-+INSTALL_SCRIPT = @INSTALL_SCRIPT@
-+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- INSTOBJEXT = @INSTOBJEXT@
--INTLDEPS = @INTLDEPS@
- INTLLIBS = @INTLLIBS@
--INTLOBJS = @INTLOBJS@
- LDFLAGS = @LDFLAGS@
--LIB = @LIB@
-+LIBOBJS = @LIBOBJS@
-+LIBS = @LIBS@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
--LTLIB = @LTLIB@
-+LTLIBOBJS = @LTLIBOBJS@
- MAINT = @MAINT@
-+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
- MAJOR_VERSION = @MAJOR_VERSION@
- MAKEINFO = @MAKEINFO@
- MKINSTALLDIRS = @MKINSTALLDIRS@
-+MSGFMT = @MSGFMT@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- ORBIT_IDL = @ORBIT_IDL@
- PACKAGE = @PACKAGE@
-+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-+PACKAGE_NAME = @PACKAGE_NAME@
-+PACKAGE_STRING = @PACKAGE_STRING@
-+PACKAGE_TARNAME = @PACKAGE_TARNAME@
-+PACKAGE_VERSION = @PACKAGE_VERSION@
-+PATH_SEPARATOR = @PATH_SEPARATOR@
- PC_REQUIRES = @PC_REQUIRES@
- PERL = @PERL@
- PKG_CONFIG = @PKG_CONFIG@
-@@ -133,16 +148,63 @@
- POSUB = @POSUB@
- PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
- PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-+PTHREADS_FALSE = @PTHREADS_FALSE@
-+PTHREADS_TRUE = @PTHREADS_TRUE@
- RANLIB = @RANLIB@
--RC = @RC@
- REBUILD = @REBUILD@
-+SET_MAKE = @SET_MAKE@
-+SHELL = @SHELL@
- STRIP = @STRIP@
--USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
- USE_NLS = @USE_NLS@
-+USE_SYSTEM_BUS_FALSE = @USE_SYSTEM_BUS_FALSE@
-+USE_SYSTEM_BUS_TRUE = @USE_SYSTEM_BUS_TRUE@
- VERSION = @VERSION@
-+XGETTEXT = @XGETTEXT@
- absolute_top_srcdir = @absolute_top_srcdir@
-+ac_ct_AR = @ac_ct_AR@
-+ac_ct_AS = @ac_ct_AS@
-+ac_ct_CC = @ac_ct_CC@
-+ac_ct_CXX = @ac_ct_CXX@
-+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-+ac_ct_F77 = @ac_ct_F77@
-+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-+ac_ct_RANLIB = @ac_ct_RANLIB@
-+ac_ct_STRIP = @ac_ct_STRIP@
-+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-+am__include = @am__include@
-+am__leading_dot = @am__leading_dot@
-+am__quote = @am__quote@
-+bindir = @bindir@
-+build = @build@
-+build_alias = @build_alias@
-+build_cpu = @build_cpu@
-+build_os = @build_os@
-+build_vendor = @build_vendor@
-+datadir = @datadir@
-+exec_prefix = @exec_prefix@
- gconflocaledir = @gconflocaledir@
--l = @l@
-+host = @host@
-+host_alias = @host_alias@
-+host_cpu = @host_cpu@
-+host_os = @host_os@
-+host_vendor = @host_vendor@
-+includedir = @includedir@
-+infodir = @infodir@
-+install_sh = @install_sh@
-+libdir = @libdir@
-+libexecdir = @libexecdir@
-+localstatedir = @localstatedir@
-+mandir = @mandir@
-+oldincludedir = @oldincludedir@
-+prefix = @prefix@
-+program_transform_name = @program_transform_name@
-+sbindir = @sbindir@
-+sharedstatedir = @sharedstatedir@
-+sysconfdir = @sysconfdir@
-+target_alias = @target_alias@
-
- SUBDIRS = gconf
-
-@@ -151,38 +213,56 @@
-
- man_MANS = gconftool-2.1
-
--EXTRA_DIST = $(SchemasDTD_DATA) $(man_MANS) FAQ.txt gconf-1.0.dtd
-+EXTRA_DIST = \
-+ $(SchemasDTD_DATA) \
-+ $(man_MANS) \
-+ FAQ.txt gconf-1.0.dtd
-
-+subdir = doc
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = ../config.h
--CONFIG_CLEAN_FILES =
--man1dir = $(mandir)/man1
--MANS = $(man_MANS)
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES =
-+DIST_SOURCES =
-
- NROFF = nroff
--DATA = $(SchemasDTD_DATA)
--
--DIST_COMMON = Makefile.am Makefile.in
-+MANS = $(man_MANS)
-+DATA = $(SchemasDTD_DATA)
-
-
--DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
-+ ps-recursive install-info-recursive uninstall-info-recursive \
-+ all-recursive install-data-recursive install-exec-recursive \
-+ installdirs-recursive install-recursive uninstall-recursive \
-+ check-recursive installcheck-recursive
-+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
-+DIST_SUBDIRS = $(SUBDIRS)
-+all: all-recursive
-
--TAR = tar
--GZIP_ENV = --best
--all: all-redirect
- .SUFFIXES:
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/Makefile
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-+ cd $(top_srcdir) && \
-+ $(AUTOMAKE) --gnu doc/Makefile
-+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
-+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-- cd $(top_builddir) \
-- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-+mostlyclean-libtool:
-+ -rm -f *.lo
-
-+clean-libtool:
-+ -rm -rf .libs _libs
-+
-+distclean-libtool:
-+ -rm -f libtool
-+uninstall-info-am:
-
--install-man1:
-+man1dir = $(mandir)/man1
-+install-man1: $(man1_MANS) $(man_MANS)
-+ @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(man1dir)
-- @list='$(man1_MANS)'; \
-- l2='$(man_MANS)'; for i in $$l2; do \
-+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-+ for i in $$l2; do \
- case "$$i" in \
- *.1*) list="$$list $$i" ;; \
- esac; \
-@@ -191,50 +271,54 @@
- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
- else file=$$i; fi; \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-+ case "$$ext" in \
-+ 1*) ;; \
-+ *) ext='1' ;; \
-+ esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
- $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
- done
--
- uninstall-man1:
-- @list='$(man1_MANS)'; \
-- l2='$(man_MANS)'; for i in $$l2; do \
-+ @$(NORMAL_UNINSTALL)
-+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-+ for i in $$l2; do \
- case "$$i" in \
- *.1*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-+ case "$$ext" in \
-+ 1*) ;; \
-+ *) ext='1' ;; \
-+ esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
- rm -f $(DESTDIR)$(man1dir)/$$inst; \
- done
--install-man: $(MANS)
-- @$(NORMAL_INSTALL)
-- $(MAKE) $(AM_MAKEFLAGS) install-man1
--uninstall-man:
-- @$(NORMAL_UNINSTALL)
-- $(MAKE) $(AM_MAKEFLAGS) uninstall-man1
--
-+SchemasDTDDATA_INSTALL = $(INSTALL_DATA)
- install-SchemasDTDDATA: $(SchemasDTD_DATA)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(SchemasDTDdir)
- @list='$(SchemasDTD_DATA)'; for p in $$list; do \
-- if test -f $(srcdir)/$$p; then \
-- echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(SchemasDTDdir)/$$p"; \
-- $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(SchemasDTDdir)/$$p; \
-- else if test -f $$p; then \
-- echo " $(INSTALL_DATA) $$p $(DESTDIR)$(SchemasDTDdir)/$$p"; \
-- $(INSTALL_DATA) $$p $(DESTDIR)$(SchemasDTDdir)/$$p; \
-- fi; fi; \
-+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-+ f="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " $(SchemasDTDDATA_INSTALL) $$d$$p $(DESTDIR)$(SchemasDTDdir)/$$f"; \
-+ $(SchemasDTDDATA_INSTALL) $$d$$p $(DESTDIR)$(SchemasDTDdir)/$$f; \
- done
-
- uninstall-SchemasDTDDATA:
- @$(NORMAL_UNINSTALL)
-- list='$(SchemasDTD_DATA)'; for p in $$list; do \
-- rm -f $(DESTDIR)$(SchemasDTDdir)/$$p; \
-+ @list='$(SchemasDTD_DATA)'; for p in $$list; do \
-+ f="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " rm -f $(DESTDIR)$(SchemasDTDdir)/$$f"; \
-+ rm -f $(DESTDIR)$(SchemasDTDdir)/$$f; \
- done
-
- # This directory's subdirectories are mostly independent; you can cd
-@@ -243,13 +327,8 @@
- # (1) if the variable is set in `config.status', edit `config.status'
- # (which will cause the Makefiles to be regenerated when you run `make');
- # (2) otherwise, pass the desired values on the `make' command line.
--
--@SET_MAKE@
--
--all-recursive install-data-recursive install-exec-recursive \
--installdirs-recursive install-recursive uninstall-recursive \
--check-recursive installcheck-recursive info-recursive dvi-recursive:
-- @set fnord $(MAKEFLAGS); amf=$$2; \
-+$(RECURSIVE_TARGETS):
-+ @set fnord $$MAKEFLAGS; amf=$$2; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
-@@ -269,13 +348,18 @@
-
- mostlyclean-recursive clean-recursive distclean-recursive \
- maintainer-clean-recursive:
-- @set fnord $(MAKEFLAGS); amf=$$2; \
-+ @set fnord $$MAKEFLAGS; amf=$$2; \
- dot_seen=no; \
-- rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
-- rev="$$subdir $$rev"; \
-- test "$$subdir" != "." || dot_seen=yes; \
-+ case "$@" in \
-+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-+ *) list='$(SUBDIRS)' ;; \
-+ esac; \
-+ rev=''; for subdir in $$list; do \
-+ if test "$$subdir" = "."; then :; else \
-+ rev="$$subdir $$rev"; \
-+ fi; \
- done; \
-- test "$$dot_seen" = "no" && rev=". $$rev"; \
-+ rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
-@@ -291,137 +375,218 @@
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-+ctags-recursive:
-+ list='$(SUBDIRS)'; for subdir in $$list; do \
-+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-+ done
-+
-+ETAGS = etags
-+ETAGSFLAGS =
-+
-+CTAGS = ctags
-+CTAGSFLAGS =
-
- tags: TAGS
-
--ID: $(HEADERS) $(SOURCES) $(LISP)
-- list='$(SOURCES) $(HEADERS)'; \
-- unique=`for i in $$list; do echo $$i; done | \
-- awk ' { files[$$0] = 1; } \
-+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
-- here=`pwd` && cd $(srcdir) \
-- && mkid -f$$here/ID $$unique $(LISP)
-+ mkid -fID $$unique
-
--TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
-+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
-+ if (etags --etags-include --version) >/dev/null 2>&1; then \
-+ include_option=--etags-include; \
-+ else \
-+ include_option=--include; \
-+ fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
-- if test "$$subdir" = .; then :; else \
-- test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
-- fi; \
-+ if test "$$subdir" = .; then :; else \
-+ test -f $$subdir/TAGS && \
-+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
-+ fi; \
- done; \
-- list='$(SOURCES) $(HEADERS)'; \
-- unique=`for i in $$list; do echo $$i; done | \
-- awk ' { files[$$0] = 1; } \
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
-- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
--
--mostlyclean-tags:
--
--clean-tags:
-+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
-+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+ $$tags $$unique
-+
-+ctags: CTAGS
-+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
-+ tags=; \
-+ here=`pwd`; \
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
-+ END { for (i in files) print i; }'`; \
-+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
-+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-+ $$tags $$unique
-+
-+GTAGS:
-+ here=`$(am__cd) $(top_builddir) && pwd` \
-+ && cd $(top_srcdir) \
-+ && gtags -i $(GTAGS_ARGS) $$here
-
- distclean-tags:
-- -rm -f TAGS ID
-+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
--maintainer-clean-tags:
--
--distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
--
--subdir = doc
-+top_distdir = ..
-+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
- distdir: $(DISTFILES)
-- @for file in $(DISTFILES); do \
-- d=$(srcdir); \
-+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-+ list='$(DISTFILES)'; for file in $$list; do \
-+ case $$file in \
-+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-+ esac; \
-+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-+ dir="/$$dir"; \
-+ $(mkinstalldirs) "$(distdir)$$dir"; \
-+ else \
-+ dir=''; \
-+ fi; \
- if test -d $$d/$$file; then \
-- cp -pr $$d/$$file $(distdir)/$$file; \
-+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-+ fi; \
-+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
-- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
-- || cp -p $$d/$$file $(distdir)/$$file || :; \
-+ || cp -p $$d/$$file $(distdir)/$$file \
-+ || exit 1; \
- fi; \
- done
-- for subdir in $(SUBDIRS); do \
-+ list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test -d $(distdir)/$$subdir \
- || mkdir $(distdir)/$$subdir \
- || exit 1; \
-- chmod 777 $(distdir)/$$subdir; \
-- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \
-+ (cd $$subdir && \
-+ $(MAKE) $(AM_MAKEFLAGS) \
-+ top_distdir="$(top_distdir)" \
-+ distdir=../$(distdir)/$$subdir \
-+ distdir) \
- || exit 1; \
- fi; \
- done
--info-am:
--info: info-recursive
--dvi-am:
--dvi: dvi-recursive
- check-am: all-am
- check: check-recursive
--installcheck-am:
--installcheck: installcheck-recursive
--install-exec-am:
--install-exec: install-exec-recursive
-+all-am: Makefile $(MANS) $(DATA)
-+installdirs: installdirs-recursive
-+installdirs-am:
-+ $(mkinstalldirs) $(DESTDIR)$(man1dir) $(DESTDIR)$(SchemasDTDdir)
-
--install-data-am: install-man install-SchemasDTDDATA
-+install: install-recursive
-+install-exec: install-exec-recursive
- install-data: install-data-recursive
-+uninstall: uninstall-recursive
-
- install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
--install: install-recursive
--uninstall-am: uninstall-man uninstall-SchemasDTDDATA
--uninstall: uninstall-recursive
--all-am: Makefile $(MANS) $(DATA)
--all-redirect: all-recursive
--install-strip:
-- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
--installdirs: installdirs-recursive
--installdirs-am:
-- $(mkinstalldirs) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(SchemasDTDdir)
--
-
-+installcheck: installcheck-recursive
-+install-strip:
-+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+ `test -z '$(STRIP)' || \
-+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
- mostlyclean-generic:
-
- clean-generic:
-
- distclean-generic:
-- -rm -f Makefile $(CONFIG_CLEAN_FILES)
-- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-+ -rm -f $(CONFIG_CLEAN_FILES)
-
- maintainer-clean-generic:
--mostlyclean-am: mostlyclean-tags mostlyclean-generic
-+ @echo "This command is intended for maintainers to use"
-+ @echo "it deletes files that may require special tools to rebuild."
-+clean: clean-recursive
-
--mostlyclean: mostlyclean-recursive
-+clean-am: clean-generic clean-libtool mostlyclean-am
-
--clean-am: clean-tags clean-generic mostlyclean-am
-+distclean: distclean-recursive
-+ -rm -f Makefile
-+distclean-am: clean-am distclean-generic distclean-libtool \
-+ distclean-tags
-
--clean: clean-recursive
-+dvi: dvi-recursive
-
--distclean-am: distclean-tags distclean-generic clean-am
-- -rm -f libtool
-+dvi-am:
-
--distclean: distclean-recursive
-+info: info-recursive
-
--maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-- @echo "This command is intended for maintainers to use;"
-- @echo "it deletes files that may require special tools to rebuild."
-+info-am:
-+
-+install-data-am: install-SchemasDTDDATA install-man
-+
-+install-exec-am:
-+
-+install-info: install-info-recursive
-+
-+install-man: install-man1
-+
-+installcheck-am:
-
- maintainer-clean: maintainer-clean-recursive
-+ -rm -f Makefile
-+maintainer-clean-am: distclean-am maintainer-clean-generic
-+
-+mostlyclean: mostlyclean-recursive
-+
-+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-+
-+pdf: pdf-recursive
-+
-+pdf-am:
-
--.PHONY: install-man1 uninstall-man1 install-man uninstall-man \
--uninstall-SchemasDTDDATA install-SchemasDTDDATA install-data-recursive \
--uninstall-data-recursive install-exec-recursive \
--uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
--all-recursive check-recursive installcheck-recursive info-recursive \
--dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
--maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs-am \
--installdirs mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+ps: ps-recursive
-
-+ps-am:
-+
-+uninstall-am: uninstall-SchemasDTDDATA uninstall-info-am uninstall-man
-+
-+uninstall-info: uninstall-info-recursive
-+
-+uninstall-man: uninstall-man1
-+
-+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
-+ clean-generic clean-libtool clean-recursive ctags \
-+ ctags-recursive distclean distclean-generic distclean-libtool \
-+ distclean-recursive distclean-tags distdir dvi dvi-am \
-+ dvi-recursive info info-am info-recursive install \
-+ install-SchemasDTDDATA install-am install-data install-data-am \
-+ install-data-recursive install-exec install-exec-am \
-+ install-exec-recursive install-info install-info-am \
-+ install-info-recursive install-man install-man1 \
-+ install-recursive install-strip installcheck installcheck-am \
-+ installdirs installdirs-am installdirs-recursive \
-+ maintainer-clean maintainer-clean-generic \
-+ maintainer-clean-recursive mostlyclean mostlyclean-generic \
-+ mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
-+ pdf-recursive ps ps-am ps-recursive tags tags-recursive \
-+ uninstall uninstall-SchemasDTDDATA uninstall-am \
-+ uninstall-info-am uninstall-info-recursive uninstall-man \
-+ uninstall-man1 uninstall-recursive
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
-diff -urN GConf-2.6.4/doc/gconf/Makefile.in GConf-2.6.4.new/doc/gconf/Makefile.in
---- GConf-2.6.4/doc/gconf/Makefile.in 2004-09-20 00:45:41.000000000 +0300
-+++ GConf-2.6.4.new/doc/gconf/Makefile.in 2005-03-05 11:07:06.000000000 +0200
-@@ -1,6 +1,8 @@
--# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-+# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# @configure_input@
-
--# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
-+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-+# Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -10,71 +12,57 @@
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
-
--# The name of the module.
--
--
--SHELL = @SHELL@
-+@SET_MAKE@
-
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
--prefix = @prefix@
--exec_prefix = @exec_prefix@
--
--bindir = @bindir@
--sbindir = @sbindir@
--libexecdir = @libexecdir@
--datadir = @datadir@
--sysconfdir = @sysconfdir@
--sharedstatedir = @sharedstatedir@
--localstatedir = @localstatedir@
--libdir = @libdir@
--infodir = @infodir@
--mandir = @mandir@
--includedir = @includedir@
--oldincludedir = /usr/include
--
--DESTDIR =
--
- pkgdatadir = $(datadir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
--
- top_builddir = ../..
-
--ACLOCAL = @ACLOCAL@
--AUTOCONF = @AUTOCONF@
--AUTOMAKE = @AUTOMAKE@
--AUTOHEADER = @AUTOHEADER@
--
-+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
--INSTALL_DATA = @INSTALL_DATA@
--INSTALL_SCRIPT = @INSTALL_SCRIPT@
--transform = @program_transform_name@
--
-+install_sh_DATA = $(install_sh) -c -m 644
-+install_sh_PROGRAM = $(install_sh) -c
-+install_sh_SCRIPT = $(install_sh) -c
-+INSTALL_HEADER = $(INSTALL_DATA)
-+transform = $(program_transform_name)
- NORMAL_INSTALL = :
- PRE_INSTALL = :
- POST_INSTALL = :
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
--host_alias = @host_alias@
- host_triplet = @host@
-+ACLOCAL = @ACLOCAL@
-+AMDEP_FALSE = @AMDEP_FALSE@
-+AMDEP_TRUE = @AMDEP_TRUE@
-+AMTAR = @AMTAR@
- AR = @AR@
- AS = @AS@
-+AUTOCONF = @AUTOCONF@
-+AUTOHEADER = @AUTOHEADER@
-+AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
--BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
- CATALOGS = @CATALOGS@
- CATOBJEXT = @CATOBJEXT@
- CC = @CC@
-+CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-+CPP = @CPP@
- CPPFLAGS = @CPPFLAGS@
- CXX = @CXX@
- CXXCPP = @CXXCPP@
-+CXXDEPMODE = @CXXDEPMODE@
-+CXXFLAGS = @CXXFLAGS@
-+CYGPATH_W = @CYGPATH_W@
- DATADIRNAME = @DATADIRNAME@
- DB2HTML = @DB2HTML@
- DBUS_SERVICE_DIR = @DBUS_SERVICE_DIR@
-+DEFS = @DEFS@
-+DEPDIR = @DEPDIR@
- DEPENDENT_CFLAGS = @DEPENDENT_CFLAGS@
- DEPENDENT_LIBS = @DEPENDENT_LIBS@
- DEPENDENT_WITH_GTK_CFLAGS = @DEPENDENT_WITH_GTK_CFLAGS@
-@@ -85,48 +73,73 @@
- DEPENDENT_WITH_XML_LIBS = @DEPENDENT_WITH_XML_LIBS@
- DLLTOOL = @DLLTOOL@
- ECHO = @ECHO@
-+ECHO_C = @ECHO_C@
-+ECHO_N = @ECHO_N@
-+ECHO_T = @ECHO_T@
- EGREP = @EGREP@
-+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
-+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
- EXEEXT = @EXEEXT@
- EXPANDED_SYSCONFDIR = @EXPANDED_SYSCONFDIR@
- F77 = @F77@
--GCJ = @GCJ@
--GCJFLAGS = @GCJFLAGS@
-+FFLAGS = @FFLAGS@
- GCONF_AGE = @GCONF_AGE@
- GCONF_CONFIG_SOURCE = @GCONF_CONFIG_SOURCE@
- GCONF_CURRENT = @GCONF_CURRENT@
-+GCONF_DBUS_CFLAGS = @GCONF_DBUS_CFLAGS@
-+GCONF_DBUS_LIBS = @GCONF_DBUS_LIBS@
- GCONF_IPC_CFLAGS = @GCONF_IPC_CFLAGS@
- GCONF_IPC_LIBS = @GCONF_IPC_LIBS@
-+GCONF_ORBIT_CFLAGS = @GCONF_ORBIT_CFLAGS@
-+GCONF_ORBIT_LIBS = @GCONF_ORBIT_LIBS@
- GCONF_REVISION = @GCONF_REVISION@
--GENCAT = @GENCAT@
- GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
- GMOFILES = @GMOFILES@
- GMSGFMT = @GMSGFMT@
- GTKDOC = @GTKDOC@
--GT_NO = @GT_NO@
--GT_YES = @GT_YES@
-+GTK_FALSE = @GTK_FALSE@
-+GTK_TRUE = @GTK_TRUE@
-+HAVE_DBUS_FALSE = @HAVE_DBUS_FALSE@
-+HAVE_DBUS_TRUE = @HAVE_DBUS_TRUE@
-+HAVE_DOCBOOK_FALSE = @HAVE_DOCBOOK_FALSE@
-+HAVE_DOCBOOK_TRUE = @HAVE_DOCBOOK_TRUE@
- HAVE_GTK_DOC = @HAVE_GTK_DOC@
--HAVE_LIB = @HAVE_LIB@
-+HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
-+HAVE_GTK_DOC_TRUE = @HAVE_GTK_DOC_TRUE@
-+HAVE_ORBIT_FALSE = @HAVE_ORBIT_FALSE@
-+HAVE_ORBIT_TRUE = @HAVE_ORBIT_TRUE@
- HTML_DIR = @HTML_DIR@
--INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
- INDENT = @INDENT@
-+INSTALL_DATA = @INSTALL_DATA@
- INSTALL_GCONF_CONFIG_SOURCE = @INSTALL_GCONF_CONFIG_SOURCE@
-+INSTALL_PROGRAM = @INSTALL_PROGRAM@
-+INSTALL_SCRIPT = @INSTALL_SCRIPT@
-+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- INSTOBJEXT = @INSTOBJEXT@
--INTLDEPS = @INTLDEPS@
- INTLLIBS = @INTLLIBS@
--INTLOBJS = @INTLOBJS@
- LDFLAGS = @LDFLAGS@
--LIB = @LIB@
-+LIBOBJS = @LIBOBJS@
-+LIBS = @LIBS@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
--LTLIB = @LTLIB@
-+LTLIBOBJS = @LTLIBOBJS@
- MAINT = @MAINT@
-+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
- MAJOR_VERSION = @MAJOR_VERSION@
- MAKEINFO = @MAKEINFO@
- MKINSTALLDIRS = @MKINSTALLDIRS@
-+MSGFMT = @MSGFMT@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- ORBIT_IDL = @ORBIT_IDL@
- PACKAGE = @PACKAGE@
-+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-+PACKAGE_NAME = @PACKAGE_NAME@
-+PACKAGE_STRING = @PACKAGE_STRING@
-+PACKAGE_TARNAME = @PACKAGE_TARNAME@
-+PACKAGE_VERSION = @PACKAGE_VERSION@
-+PATH_SEPARATOR = @PATH_SEPARATOR@
- PC_REQUIRES = @PC_REQUIRES@
- PERL = @PERL@
- PKG_CONFIG = @PKG_CONFIG@
-@@ -135,17 +148,65 @@
- POSUB = @POSUB@
- PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
- PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-+PTHREADS_FALSE = @PTHREADS_FALSE@
-+PTHREADS_TRUE = @PTHREADS_TRUE@
- RANLIB = @RANLIB@
--RC = @RC@
- REBUILD = @REBUILD@
-+SET_MAKE = @SET_MAKE@
-+SHELL = @SHELL@
- STRIP = @STRIP@
--USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
- USE_NLS = @USE_NLS@
-+USE_SYSTEM_BUS_FALSE = @USE_SYSTEM_BUS_FALSE@
-+USE_SYSTEM_BUS_TRUE = @USE_SYSTEM_BUS_TRUE@
- VERSION = @VERSION@
-+XGETTEXT = @XGETTEXT@
- absolute_top_srcdir = @absolute_top_srcdir@
-+ac_ct_AR = @ac_ct_AR@
-+ac_ct_AS = @ac_ct_AS@
-+ac_ct_CC = @ac_ct_CC@
-+ac_ct_CXX = @ac_ct_CXX@
-+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-+ac_ct_F77 = @ac_ct_F77@
-+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-+ac_ct_RANLIB = @ac_ct_RANLIB@
-+ac_ct_STRIP = @ac_ct_STRIP@
-+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-+am__include = @am__include@
-+am__leading_dot = @am__leading_dot@
-+am__quote = @am__quote@
-+bindir = @bindir@
-+build = @build@
-+build_alias = @build_alias@
-+build_cpu = @build_cpu@
-+build_os = @build_os@
-+build_vendor = @build_vendor@
-+datadir = @datadir@
-+exec_prefix = @exec_prefix@
- gconflocaledir = @gconflocaledir@
--l = @l@
-+host = @host@
-+host_alias = @host_alias@
-+host_cpu = @host_cpu@
-+host_os = @host_os@
-+host_vendor = @host_vendor@
-+includedir = @includedir@
-+infodir = @infodir@
-+install_sh = @install_sh@
-+libdir = @libdir@
-+libexecdir = @libexecdir@
-+localstatedir = @localstatedir@
-+mandir = @mandir@
-+oldincludedir = @oldincludedir@
-+prefix = @prefix@
-+program_transform_name = @program_transform_name@
-+sbindir = @sbindir@
-+sharedstatedir = @sharedstatedir@
-+sysconfdir = @sysconfdir@
-+target_alias = @target_alias@
-
-+# The name of the module.
- DOC_MODULE = gconf
-
- # The top-level SGML file.
-@@ -204,114 +265,175 @@
-
- TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE)
-
--EXTRA_DIST = $(content_files) $(extra_files) $(HTML_IMAGES) $(DOC_MAIN_SGML_FILE) $(DOC_MODULE).types $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
--
--
--DOC_STAMPS = scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
--
--
--SCANOBJ_FILES = $(DOC_MODULE).args $(DOC_MODULE).hierarchy $(DOC_MODULE).signals
-+EXTRA_DIST = \
-+ $(content_files) \
-+ $(extra_files) \
-+ $(HTML_IMAGES) \
-+ $(DOC_MAIN_SGML_FILE) \
-+ $(DOC_MODULE).types \
-+ $(DOC_MODULE)-sections.txt \
-+ $(DOC_MODULE)-overrides.txt
-+
-+
-+DOC_STAMPS = scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
-+ $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
-+
-+
-+SCANOBJ_FILES = \
-+ $(DOC_MODULE).args \
-+ $(DOC_MODULE).hierarchy \
-+ $(DOC_MODULE).signals
-
-+subdir = doc/gconf
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = ../../config.h
--CONFIG_CLEAN_FILES =
--DIST_COMMON = Makefile.am Makefile.in
--
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES =
-+DIST_SOURCES =
-+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
-+all: all-am
-
--DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
--
--TAR = tar
--GZIP_ENV = --best
--all: all-redirect
- .SUFFIXES:
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/gconf/Makefile
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-+ cd $(top_srcdir) && \
-+ $(AUTOMAKE) --gnu doc/gconf/Makefile
-+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
-+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-+
-+mostlyclean-libtool:
-+ -rm -f *.lo
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-- cd $(top_builddir) \
-- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-+clean-libtool:
-+ -rm -rf .libs _libs
-
-+distclean-libtool:
-+ -rm -f libtool
-+uninstall-info-am:
- tags: TAGS
- TAGS:
-
-+ctags: CTAGS
-+CTAGS:
-
--distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
--subdir = doc/gconf
-+top_distdir = ../..
-+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
- distdir: $(DISTFILES)
-- @for file in $(DISTFILES); do \
-- d=$(srcdir); \
-+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-+ list='$(DISTFILES)'; for file in $$list; do \
-+ case $$file in \
-+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-+ esac; \
-+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-+ dir="/$$dir"; \
-+ $(mkinstalldirs) "$(distdir)$$dir"; \
-+ else \
-+ dir=''; \
-+ fi; \
- if test -d $$d/$$file; then \
-- cp -pr $$d/$$file $(distdir)/$$file; \
-+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-+ fi; \
-+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
-- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
-- || cp -p $$d/$$file $(distdir)/$$file || :; \
-+ || cp -p $$d/$$file $(distdir)/$$file \
-+ || exit 1; \
- fi; \
- done
-- $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
--info-am:
--info: info-am
--dvi-am:
--dvi: dvi-am
-+ $(MAKE) $(AM_MAKEFLAGS) \
-+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
-+ dist-hook
- check-am: all-am
- check: check-am
--installcheck-am:
--installcheck: installcheck-am
--install-exec-am:
--install-exec: install-exec-am
-+all-am: Makefile all-local
-
--install-data-am: install-data-local
-+installdirs:
-+install: install-am
-+install-exec: install-exec-am
- install-data: install-data-am
-+uninstall: uninstall-am
-
- install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
--install: install-am
--uninstall-am:
--uninstall: uninstall-am
--all-am: Makefile all-local
--all-redirect: all-am
--install-strip:
-- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
--installdirs:
--
-
-+installcheck: installcheck-am
-+install-strip:
-+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+ `test -z '$(STRIP)' || \
-+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
- mostlyclean-generic:
-
- clean-generic:
-
- distclean-generic:
-- -rm -f Makefile $(CONFIG_CLEAN_FILES)
-- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-+ -rm -f $(CONFIG_CLEAN_FILES)
-
- maintainer-clean-generic:
--mostlyclean-am: mostlyclean-generic
-+ @echo "This command is intended for maintainers to use"
-+ @echo "it deletes files that may require special tools to rebuild."
-+clean: clean-am
-
--mostlyclean: mostlyclean-am
-+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
-
--clean-am: clean-generic mostlyclean-am clean-local
-+distclean: distclean-am
-+ -rm -f Makefile
-+distclean-am: clean-am distclean-generic distclean-libtool
-
--clean: clean-am
-+dvi: dvi-am
-
--distclean-am: distclean-generic clean-am
-- -rm -f libtool
-+dvi-am:
-
--distclean: distclean-am
-+info: info-am
-
--maintainer-clean-am: maintainer-clean-generic distclean-am \
-- maintainer-clean-local
-- @echo "This command is intended for maintainers to use;"
-- @echo "it deletes files that may require special tools to rebuild."
-+info-am:
-+
-+install-data-am: install-data-local
-+
-+install-exec-am:
-+
-+install-info: install-info-am
-+
-+install-man:
-+
-+installcheck-am:
-
- maintainer-clean: maintainer-clean-am
-+ -rm -f Makefile
-+maintainer-clean-am: distclean-am maintainer-clean-generic \
-+ maintainer-clean-local
-+
-+mostlyclean: mostlyclean-am
-
--.PHONY: tags distdir info-am info dvi-am dvi check check-am \
--installcheck-am installcheck install-exec-am install-exec \
--install-data-local install-data-am install-data install-am install \
--uninstall-am uninstall all-local all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-+
-+pdf: pdf-am
-+
-+pdf-am:
-+
-+ps: ps-am
-+
-+ps-am:
-+
-+uninstall-am: uninstall-info-am
-+
-+.PHONY: all all-am all-local check check-am clean clean-generic \
-+ clean-libtool clean-local distclean distclean-generic \
-+ distclean-libtool distdir dvi dvi-am info info-am install \
-+ install-am install-data install-data-am install-data-local \
-+ install-exec install-exec-am install-info install-info-am \
-+ install-man install-strip installcheck installcheck-am \
-+ installdirs maintainer-clean maintainer-clean-generic \
-+ maintainer-clean-local mostlyclean mostlyclean-generic \
-+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-+ uninstall-info-am
-
-
- @ENABLE_GTK_DOC_TRUE@all-local: html-build.stamp
-@@ -407,7 +529,6 @@
- -cp $(srcdir)/html/* $(distdir)/html
-
- .PHONY : dist-hook-local
--
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
-diff -urN GConf-2.6.4/examples/Makefile.in GConf-2.6.4.new/examples/Makefile.in
---- GConf-2.6.4/examples/Makefile.in 2004-09-20 00:45:43.000000000 +0300
-+++ GConf-2.6.4.new/examples/Makefile.in 2005-03-05 11:07:06.000000000 +0200
-@@ -1,6 +1,8 @@
--# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-+# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# @configure_input@
-
--# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
-+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-+# Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -10,69 +12,57 @@
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
-
--
--SHELL = @SHELL@
-+@SET_MAKE@
-
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
--prefix = @prefix@
--exec_prefix = @exec_prefix@
--
--bindir = @bindir@
--sbindir = @sbindir@
--libexecdir = @libexecdir@
--datadir = @datadir@
--sysconfdir = @sysconfdir@
--sharedstatedir = @sharedstatedir@
--localstatedir = @localstatedir@
--libdir = @libdir@
--infodir = @infodir@
--mandir = @mandir@
--includedir = @includedir@
--oldincludedir = /usr/include
--
--DESTDIR =
--
- pkgdatadir = $(datadir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
--
- top_builddir = ..
-
--ACLOCAL = @ACLOCAL@
--AUTOCONF = @AUTOCONF@
--AUTOMAKE = @AUTOMAKE@
--AUTOHEADER = @AUTOHEADER@
--
-+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
--INSTALL_DATA = @INSTALL_DATA@
--INSTALL_SCRIPT = @INSTALL_SCRIPT@
--transform = @program_transform_name@
--
-+install_sh_DATA = $(install_sh) -c -m 644
-+install_sh_PROGRAM = $(install_sh) -c
-+install_sh_SCRIPT = $(install_sh) -c
-+INSTALL_HEADER = $(INSTALL_DATA)
-+transform = $(program_transform_name)
- NORMAL_INSTALL = :
- PRE_INSTALL = :
- POST_INSTALL = :
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
--host_alias = @host_alias@
- host_triplet = @host@
-+ACLOCAL = @ACLOCAL@
-+AMDEP_FALSE = @AMDEP_FALSE@
-+AMDEP_TRUE = @AMDEP_TRUE@
-+AMTAR = @AMTAR@
- AR = @AR@
- AS = @AS@
-+AUTOCONF = @AUTOCONF@
-+AUTOHEADER = @AUTOHEADER@
-+AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
--BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
- CATALOGS = @CATALOGS@
- CATOBJEXT = @CATOBJEXT@
- CC = @CC@
-+CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-+CPP = @CPP@
- CPPFLAGS = @CPPFLAGS@
- CXX = @CXX@
- CXXCPP = @CXXCPP@
-+CXXDEPMODE = @CXXDEPMODE@
-+CXXFLAGS = @CXXFLAGS@
-+CYGPATH_W = @CYGPATH_W@
- DATADIRNAME = @DATADIRNAME@
- DB2HTML = @DB2HTML@
- DBUS_SERVICE_DIR = @DBUS_SERVICE_DIR@
-+DEFS = @DEFS@
-+DEPDIR = @DEPDIR@
- DEPENDENT_CFLAGS = @DEPENDENT_CFLAGS@
- DEPENDENT_LIBS = @DEPENDENT_LIBS@
- DEPENDENT_WITH_GTK_CFLAGS = @DEPENDENT_WITH_GTK_CFLAGS@
-@@ -83,48 +73,73 @@
- DEPENDENT_WITH_XML_LIBS = @DEPENDENT_WITH_XML_LIBS@
- DLLTOOL = @DLLTOOL@
- ECHO = @ECHO@
-+ECHO_C = @ECHO_C@
-+ECHO_N = @ECHO_N@
-+ECHO_T = @ECHO_T@
- EGREP = @EGREP@
-+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
-+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
- EXEEXT = @EXEEXT@
- EXPANDED_SYSCONFDIR = @EXPANDED_SYSCONFDIR@
- F77 = @F77@
--GCJ = @GCJ@
--GCJFLAGS = @GCJFLAGS@
-+FFLAGS = @FFLAGS@
- GCONF_AGE = @GCONF_AGE@
- GCONF_CONFIG_SOURCE = @GCONF_CONFIG_SOURCE@
- GCONF_CURRENT = @GCONF_CURRENT@
-+GCONF_DBUS_CFLAGS = @GCONF_DBUS_CFLAGS@
-+GCONF_DBUS_LIBS = @GCONF_DBUS_LIBS@
- GCONF_IPC_CFLAGS = @GCONF_IPC_CFLAGS@
- GCONF_IPC_LIBS = @GCONF_IPC_LIBS@
-+GCONF_ORBIT_CFLAGS = @GCONF_ORBIT_CFLAGS@
-+GCONF_ORBIT_LIBS = @GCONF_ORBIT_LIBS@
- GCONF_REVISION = @GCONF_REVISION@
--GENCAT = @GENCAT@
- GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
- GMOFILES = @GMOFILES@
- GMSGFMT = @GMSGFMT@
- GTKDOC = @GTKDOC@
--GT_NO = @GT_NO@
--GT_YES = @GT_YES@
-+GTK_FALSE = @GTK_FALSE@
-+GTK_TRUE = @GTK_TRUE@
-+HAVE_DBUS_FALSE = @HAVE_DBUS_FALSE@
-+HAVE_DBUS_TRUE = @HAVE_DBUS_TRUE@
-+HAVE_DOCBOOK_FALSE = @HAVE_DOCBOOK_FALSE@
-+HAVE_DOCBOOK_TRUE = @HAVE_DOCBOOK_TRUE@
- HAVE_GTK_DOC = @HAVE_GTK_DOC@
--HAVE_LIB = @HAVE_LIB@
-+HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
-+HAVE_GTK_DOC_TRUE = @HAVE_GTK_DOC_TRUE@
-+HAVE_ORBIT_FALSE = @HAVE_ORBIT_FALSE@
-+HAVE_ORBIT_TRUE = @HAVE_ORBIT_TRUE@
- HTML_DIR = @HTML_DIR@
--INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
- INDENT = @INDENT@
-+INSTALL_DATA = @INSTALL_DATA@
- INSTALL_GCONF_CONFIG_SOURCE = @INSTALL_GCONF_CONFIG_SOURCE@
-+INSTALL_PROGRAM = @INSTALL_PROGRAM@
-+INSTALL_SCRIPT = @INSTALL_SCRIPT@
-+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- INSTOBJEXT = @INSTOBJEXT@
--INTLDEPS = @INTLDEPS@
- INTLLIBS = @INTLLIBS@
--INTLOBJS = @INTLOBJS@
- LDFLAGS = @LDFLAGS@
--LIB = @LIB@
-+LIBOBJS = @LIBOBJS@
-+LIBS = @LIBS@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
--LTLIB = @LTLIB@
-+LTLIBOBJS = @LTLIBOBJS@
- MAINT = @MAINT@
-+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
- MAJOR_VERSION = @MAJOR_VERSION@
- MAKEINFO = @MAKEINFO@
- MKINSTALLDIRS = @MKINSTALLDIRS@
-+MSGFMT = @MSGFMT@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- ORBIT_IDL = @ORBIT_IDL@
- PACKAGE = @PACKAGE@
-+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-+PACKAGE_NAME = @PACKAGE_NAME@
-+PACKAGE_STRING = @PACKAGE_STRING@
-+PACKAGE_TARNAME = @PACKAGE_TARNAME@
-+PACKAGE_VERSION = @PACKAGE_VERSION@
-+PATH_SEPARATOR = @PATH_SEPARATOR@
- PC_REQUIRES = @PC_REQUIRES@
- PERL = @PERL@
- PKG_CONFIG = @PKG_CONFIG@
-@@ -133,24 +148,73 @@
- POSUB = @POSUB@
- PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
- PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-+PTHREADS_FALSE = @PTHREADS_FALSE@
-+PTHREADS_TRUE = @PTHREADS_TRUE@
- RANLIB = @RANLIB@
--RC = @RC@
- REBUILD = @REBUILD@
-+SET_MAKE = @SET_MAKE@
-+SHELL = @SHELL@
- STRIP = @STRIP@
--USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
- USE_NLS = @USE_NLS@
-+USE_SYSTEM_BUS_FALSE = @USE_SYSTEM_BUS_FALSE@
-+USE_SYSTEM_BUS_TRUE = @USE_SYSTEM_BUS_TRUE@
- VERSION = @VERSION@
-+XGETTEXT = @XGETTEXT@
- absolute_top_srcdir = @absolute_top_srcdir@
-+ac_ct_AR = @ac_ct_AR@
-+ac_ct_AS = @ac_ct_AS@
-+ac_ct_CC = @ac_ct_CC@
-+ac_ct_CXX = @ac_ct_CXX@
-+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-+ac_ct_F77 = @ac_ct_F77@
-+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-+ac_ct_RANLIB = @ac_ct_RANLIB@
-+ac_ct_STRIP = @ac_ct_STRIP@
-+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-+am__include = @am__include@
-+am__leading_dot = @am__leading_dot@
-+am__quote = @am__quote@
-+bindir = @bindir@
-+build = @build@
-+build_alias = @build_alias@
-+build_cpu = @build_cpu@
-+build_os = @build_os@
-+build_vendor = @build_vendor@
-+datadir = @datadir@
-+exec_prefix = @exec_prefix@
- gconflocaledir = @gconflocaledir@
--l = @l@
--
--INCLUDES = -I$(top_srcdir) -I$(top_builddir) $(DEPENDENT_WITH_GTK_CFLAGS) -DGCONF_SRCDIR=\""$(absolute_top_srcdir)"\" -DGCONF_SYSCONFDIR=\""$(sysconfdir)"\"
-+host = @host@
-+host_alias = @host_alias@
-+host_cpu = @host_cpu@
-+host_os = @host_os@
-+host_vendor = @host_vendor@
-+includedir = @includedir@
-+infodir = @infodir@
-+install_sh = @install_sh@
-+libdir = @libdir@
-+libexecdir = @libexecdir@
-+localstatedir = @localstatedir@
-+mandir = @mandir@
-+oldincludedir = @oldincludedir@
-+prefix = @prefix@
-+program_transform_name = @program_transform_name@
-+sbindir = @sbindir@
-+sharedstatedir = @sharedstatedir@
-+sysconfdir = @sysconfdir@
-+target_alias = @target_alias@
-+INCLUDES = -I$(top_srcdir) -I$(top_builddir) \
-+ $(DEPENDENT_WITH_GTK_CFLAGS) \
-+ -DGCONF_SRCDIR=\""$(absolute_top_srcdir)"\" -DGCONF_SYSCONFDIR=\""$(sysconfdir)"\"
-
-
- EFENCE =
--@GTK_TRUE@GTK_EXAMPLES = basic-gconf-app simple-view simple-controller complex-gconf-app
- @GTK_FALSE@GTK_EXAMPLES =
-
-+@GTK_TRUE@GTK_EXAMPLES = basic-gconf-app simple-view simple-controller complex-gconf-app
-+
- noinst_PROGRAMS = $(GTK_EXAMPLES)
-
- GTK_EXAMPLES_LINK = $(EFENCE) $(INTLLIBS) $(DEPENDENT_WITH_GTK_LIBS) $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la $(EFENCE)
-@@ -170,101 +234,127 @@
- complex_gconf_app_SOURCES = basic-gconf-app.c
-
- complex_gconf_app_LDADD = $(GTK_EXAMPLES_LINK)
-+subdir = examples
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = ../config.h
--CONFIG_CLEAN_FILES =
--@GTK_FALSE@noinst_PROGRAMS =
--@GTK_TRUE@noinst_PROGRAMS = basic-gconf-app$(EXEEXT) \
--@GTK_TRUE@simple-view$(EXEEXT) simple-controller$(EXEEXT) \
--@GTK_TRUE@complex-gconf-app$(EXEEXT)
--PROGRAMS = $(noinst_PROGRAMS)
--
--
--DEFS = @DEFS@ -I. -I$(srcdir) -I..
--LIBS = @LIBS@
--basic_gconf_app_OBJECTS = basic-gconf-app.$(OBJEXT)
--basic_gconf_app_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--basic_gconf_app_LDFLAGS =
--simple_view_OBJECTS = simple-view.$(OBJEXT)
--simple_view_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--simple_view_LDFLAGS =
--simple_controller_OBJECTS = simple-controller.$(OBJEXT)
--simple_controller_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--simple_controller_LDFLAGS =
--complex_gconf_app_OBJECTS = basic-gconf-app.$(OBJEXT)
--complex_gconf_app_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--complex_gconf_app_LDFLAGS =
--COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES =
-+@GTK_TRUE@noinst_PROGRAMS = basic-gconf-app$(EXEEXT) \
-+@GTK_TRUE@ simple-view$(EXEEXT) simple-controller$(EXEEXT) \
-+@GTK_TRUE@ complex-gconf-app$(EXEEXT)
-+@GTK_FALSE@noinst_PROGRAMS =
-+PROGRAMS = $(noinst_PROGRAMS)
-+
-+am_basic_gconf_app_OBJECTS = basic-gconf-app.$(OBJEXT)
-+basic_gconf_app_OBJECTS = $(am_basic_gconf_app_OBJECTS)
-+basic_gconf_app_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+basic_gconf_app_LDFLAGS =
-+am_complex_gconf_app_OBJECTS = basic-gconf-app.$(OBJEXT)
-+complex_gconf_app_OBJECTS = $(am_complex_gconf_app_OBJECTS)
-+complex_gconf_app_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+complex_gconf_app_LDFLAGS =
-+am_simple_controller_OBJECTS = simple-controller.$(OBJEXT)
-+simple_controller_OBJECTS = $(am_simple_controller_OBJECTS)
-+simple_controller_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+simple_controller_LDFLAGS =
-+am_simple_view_OBJECTS = simple-view.$(OBJEXT)
-+simple_view_OBJECTS = $(am_simple_view_OBJECTS)
-+simple_view_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+simple_view_LDFLAGS =
-+
-+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-+depcomp = $(SHELL) $(top_srcdir)/depcomp
-+am__depfiles_maybe = depfiles
-+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/basic-gconf-app.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/simple-controller.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/simple-view.Po
-+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
-+ $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
- CCLD = $(CC)
--LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
--DIST_COMMON = Makefile.am Makefile.in
--
--
--DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+DIST_SOURCES = $(basic_gconf_app_SOURCES) $(complex_gconf_app_SOURCES) \
-+ $(simple_controller_SOURCES) $(simple_view_SOURCES)
-+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
-+SOURCES = $(basic_gconf_app_SOURCES) $(complex_gconf_app_SOURCES) $(simple_controller_SOURCES) $(simple_view_SOURCES)
-
--TAR = tar
--GZIP_ENV = --best
--SOURCES = $(basic_gconf_app_SOURCES) $(simple_view_SOURCES) $(simple_controller_SOURCES) $(complex_gconf_app_SOURCES)
--OBJECTS = $(basic_gconf_app_OBJECTS) $(simple_view_OBJECTS) $(simple_controller_OBJECTS) $(complex_gconf_app_OBJECTS)
-+all: all-am
-
--all: all-redirect
- .SUFFIXES:
--.SUFFIXES: .S .c .lo .o .obj .s
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps examples/Makefile
--
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-- cd $(top_builddir) \
-- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
--
--
--mostlyclean-noinstPROGRAMS:
-+.SUFFIXES: .c .lo .o .obj
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-+ cd $(top_srcdir) && \
-+ $(AUTOMAKE) --gnu examples/Makefile
-+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
-+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
- clean-noinstPROGRAMS:
-- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
--
--distclean-noinstPROGRAMS:
--
--maintainer-clean-noinstPROGRAMS:
--
--.c.o:
-- $(COMPILE) -c $<
--
--# FIXME: We should only use cygpath when building on Windows,
--# and only if it is available.
--.c.obj:
-- $(COMPILE) -c `cygpath -w $<`
--
--.s.o:
-- $(COMPILE) -c $<
--
--.S.o:
-- $(COMPILE) -c $<
-+ @list='$(noinst_PROGRAMS)'; for p in $$list; do \
-+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-+ echo " rm -f $$p $$f"; \
-+ rm -f $$p $$f ; \
-+ done
-+basic-gconf-app$(EXEEXT): $(basic_gconf_app_OBJECTS) $(basic_gconf_app_DEPENDENCIES)
-+ @rm -f basic-gconf-app$(EXEEXT)
-+ $(LINK) $(basic_gconf_app_LDFLAGS) $(basic_gconf_app_OBJECTS) $(basic_gconf_app_LDADD) $(LIBS)
-+complex-gconf-app$(EXEEXT): $(complex_gconf_app_OBJECTS) $(complex_gconf_app_DEPENDENCIES)
-+ @rm -f complex-gconf-app$(EXEEXT)
-+ $(LINK) $(complex_gconf_app_LDFLAGS) $(complex_gconf_app_OBJECTS) $(complex_gconf_app_LDADD) $(LIBS)
-+simple-controller$(EXEEXT): $(simple_controller_OBJECTS) $(simple_controller_DEPENDENCIES)
-+ @rm -f simple-controller$(EXEEXT)
-+ $(LINK) $(simple_controller_LDFLAGS) $(simple_controller_OBJECTS) $(simple_controller_LDADD) $(LIBS)
-+simple-view$(EXEEXT): $(simple_view_OBJECTS) $(simple_view_DEPENDENCIES)
-+ @rm -f simple-view$(EXEEXT)
-+ $(LINK) $(simple_view_LDFLAGS) $(simple_view_OBJECTS) $(simple_view_LDADD) $(LIBS)
-
- mostlyclean-compile:
-- -rm -f *.o core *.core
-- -rm -f *.$(OBJEXT)
--
--clean-compile:
-+ -rm -f *.$(OBJEXT) core *.core
-
- distclean-compile:
- -rm -f *.tab.c
-
--maintainer-clean-compile:
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic-gconf-app.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple-controller.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple-view.Po@am__quote@
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+.c.o:
-+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-+@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-+@am__fastdepCC_TRUE@ fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
-
--.s.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+.c.obj:
-+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-+@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-+@am__fastdepCC_TRUE@ fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-
--.S.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+.c.lo:
-+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-+@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
-+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-+@am__fastdepCC_TRUE@ fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
-
- mostlyclean-libtool:
- -rm -f *.lo
-@@ -273,159 +363,182 @@
- -rm -rf .libs _libs
-
- distclean-libtool:
-+ -rm -f libtool
-+uninstall-info-am:
-
--maintainer-clean-libtool:
--
--basic-gconf-app$(EXEEXT): $(basic_gconf_app_OBJECTS) $(basic_gconf_app_DEPENDENCIES)
-- @rm -f basic-gconf-app$(EXEEXT)
-- $(LINK) $(basic_gconf_app_LDFLAGS) $(basic_gconf_app_OBJECTS) $(basic_gconf_app_LDADD) $(LIBS)
--
--simple-view$(EXEEXT): $(simple_view_OBJECTS) $(simple_view_DEPENDENCIES)
-- @rm -f simple-view$(EXEEXT)
-- $(LINK) $(simple_view_LDFLAGS) $(simple_view_OBJECTS) $(simple_view_LDADD) $(LIBS)
--
--simple-controller$(EXEEXT): $(simple_controller_OBJECTS) $(simple_controller_DEPENDENCIES)
-- @rm -f simple-controller$(EXEEXT)
-- $(LINK) $(simple_controller_LDFLAGS) $(simple_controller_OBJECTS) $(simple_controller_LDADD) $(LIBS)
-+ETAGS = etags
-+ETAGSFLAGS =
-
--complex-gconf-app$(EXEEXT): $(complex_gconf_app_OBJECTS) $(complex_gconf_app_DEPENDENCIES)
-- @rm -f complex-gconf-app$(EXEEXT)
-- $(LINK) $(complex_gconf_app_LDFLAGS) $(complex_gconf_app_OBJECTS) $(complex_gconf_app_LDADD) $(LIBS)
-+CTAGS = ctags
-+CTAGSFLAGS =
-
- tags: TAGS
-
--ID: $(HEADERS) $(SOURCES) $(LISP)
-- list='$(SOURCES) $(HEADERS)'; \
-- unique=`for i in $$list; do echo $$i; done | \
-- awk ' { files[$$0] = 1; } \
-+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
-- here=`pwd` && cd $(srcdir) \
-- && mkid -f$$here/ID $$unique $(LISP)
-+ mkid -fID $$unique
-
--TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
-+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
-- list='$(SOURCES) $(HEADERS)'; \
-- unique=`for i in $$list; do echo $$i; done | \
-- awk ' { files[$$0] = 1; } \
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
-- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
--
--mostlyclean-tags:
--
--clean-tags:
-+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
-+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+ $$tags $$unique
-+
-+ctags: CTAGS
-+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
-+ tags=; \
-+ here=`pwd`; \
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
-+ END { for (i in files) print i; }'`; \
-+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
-+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-+ $$tags $$unique
-+
-+GTAGS:
-+ here=`$(am__cd) $(top_builddir) && pwd` \
-+ && cd $(top_srcdir) \
-+ && gtags -i $(GTAGS_ARGS) $$here
-
- distclean-tags:
-- -rm -f TAGS ID
--
--maintainer-clean-tags:
--
--distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
--subdir = examples
-+top_distdir = ..
-+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
- distdir: $(DISTFILES)
-- @for file in $(DISTFILES); do \
-- d=$(srcdir); \
-+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-+ list='$(DISTFILES)'; for file in $$list; do \
-+ case $$file in \
-+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-+ esac; \
-+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-+ dir="/$$dir"; \
-+ $(mkinstalldirs) "$(distdir)$$dir"; \
-+ else \
-+ dir=''; \
-+ fi; \
- if test -d $$d/$$file; then \
-- cp -pr $$d/$$file $(distdir)/$$file; \
-+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-+ fi; \
-+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
-- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
-- || cp -p $$d/$$file $(distdir)/$$file || :; \
-+ || cp -p $$d/$$file $(distdir)/$$file \
-+ || exit 1; \
- fi; \
- done
--basic-gconf-app.o: basic-gconf-app.c ../gconf/gconf-client.h \
-- ../gconf/gconf.h ../gconf/gconf-schema.h ../gconf/gconf-value.h \
-- ../gconf/gconf-error.h ../gconf/gconf-engine.h \
-- ../gconf/gconf-enum-types.h ../gconf/gconf-listeners.h \
-- ../gconf/gconf-changeset.h
--simple-controller.o: simple-controller.c ../gconf/gconf-client.h \
-- ../gconf/gconf.h ../gconf/gconf-schema.h ../gconf/gconf-value.h \
-- ../gconf/gconf-error.h ../gconf/gconf-engine.h \
-- ../gconf/gconf-enum-types.h ../gconf/gconf-listeners.h \
-- ../gconf/gconf-changeset.h
--simple-view.o: simple-view.c ../gconf/gconf-client.h ../gconf/gconf.h \
-- ../gconf/gconf-schema.h ../gconf/gconf-value.h \
-- ../gconf/gconf-error.h ../gconf/gconf-engine.h \
-- ../gconf/gconf-enum-types.h ../gconf/gconf-listeners.h \
-- ../gconf/gconf-changeset.h
--
--info-am:
--info: info-am
--dvi-am:
--dvi: dvi-am
- check-am: all-am
- check: check-am
--installcheck-am:
--installcheck: installcheck-am
--install-exec-am:
--install-exec: install-exec-am
-+all-am: Makefile $(PROGRAMS)
-
--install-data-am:
-+installdirs:
-+install: install-am
-+install-exec: install-exec-am
- install-data: install-data-am
-+uninstall: uninstall-am
-
- install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
--install: install-am
--uninstall-am:
--uninstall: uninstall-am
--all-am: Makefile $(PROGRAMS)
--all-redirect: all-am
--install-strip:
-- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
--installdirs:
--
-
-+installcheck: installcheck-am
-+install-strip:
-+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+ `test -z '$(STRIP)' || \
-+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
- mostlyclean-generic:
-
- clean-generic:
-
- distclean-generic:
-- -rm -f Makefile $(CONFIG_CLEAN_FILES)
-- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-+ -rm -f $(CONFIG_CLEAN_FILES)
-
- maintainer-clean-generic:
--mostlyclean-am: mostlyclean-noinstPROGRAMS mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-- mostlyclean-generic
-+ @echo "This command is intended for maintainers to use"
-+ @echo "it deletes files that may require special tools to rebuild."
-+clean: clean-am
-
--mostlyclean: mostlyclean-am
-+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-+ mostlyclean-am
-
--clean-am: clean-noinstPROGRAMS clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+distclean: distclean-am
-+ -rm -rf ./$(DEPDIR)
-+ -rm -f Makefile
-+distclean-am: clean-am distclean-compile distclean-generic \
-+ distclean-libtool distclean-tags
-
--clean: clean-am
-+dvi: dvi-am
-
--distclean-am: distclean-noinstPROGRAMS distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-- -rm -f libtool
-+dvi-am:
-
--distclean: distclean-am
-+info: info-am
-
--maintainer-clean-am: maintainer-clean-noinstPROGRAMS \
-- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-- @echo "This command is intended for maintainers to use;"
-- @echo "it deletes files that may require special tools to rebuild."
-+info-am:
-+
-+install-data-am:
-+
-+install-exec-am:
-+
-+install-info: install-info-am
-+
-+install-man:
-+
-+installcheck-am:
-
- maintainer-clean: maintainer-clean-am
-+ -rm -rf ./$(DEPDIR)
-+ -rm -f Makefile
-+maintainer-clean-am: distclean-am maintainer-clean-generic
-+
-+mostlyclean: mostlyclean-am
-+
-+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-+ mostlyclean-libtool
-+
-+pdf: pdf-am
-+
-+pdf-am:
-+
-+ps: ps-am
-+
-+ps-am:
-
--.PHONY: mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \
--clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \
--mostlyclean-compile distclean-compile clean-compile \
--maintainer-clean-compile mostlyclean-libtool distclean-libtool \
--clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+uninstall-am: uninstall-info-am
-
-+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-+ clean-libtool clean-noinstPROGRAMS ctags distclean \
-+ distclean-compile distclean-generic distclean-libtool \
-+ distclean-tags distdir dvi dvi-am info info-am install \
-+ install-am install-data install-data-am install-exec \
-+ install-exec-am install-info install-info-am install-man \
-+ install-strip installcheck installcheck-am installdirs \
-+ maintainer-clean maintainer-clean-generic mostlyclean \
-+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \
-+ pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
-diff -urN GConf-2.6.4/gconf/Makefile.am GConf-2.6.4.new/gconf/Makefile.am
---- GConf-2.6.4/gconf/Makefile.am 2004-09-19 15:29:35.000000000 +0300
-+++ GConf-2.6.4.new/gconf/Makefile.am 2005-03-05 11:06:26.000000000 +0200
-@@ -37,7 +37,7 @@
- lib_LTLIBRARIES = libgconf-2.la
-
- bin_PROGRAMS = gconftool-2
--libexec_PROGRAMS = gconfd-2 $(SANITY_CHECK)
-+libexec_PROGRAMS = gconfd-2
-
- if HAVE_ORBIT
- CORBA_SOURCECODE = GConfX-common.c GConfX-skels.c GConfX-stubs.c GConfX.h
-diff -urN GConf-2.6.4/gconf/Makefile.in GConf-2.6.4.new/gconf/Makefile.in
---- GConf-2.6.4/gconf/Makefile.in 2004-09-20 00:45:17.000000000 +0300
-+++ GConf-2.6.4.new/gconf/Makefile.in 2005-03-05 11:07:06.000000000 +0200
-@@ -1,6 +1,8 @@
--# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-+# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# @configure_input@
-
--# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
-+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-+# Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -10,69 +12,57 @@
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
-
--
--SHELL = @SHELL@
-+@SET_MAKE@
-
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
--prefix = @prefix@
--exec_prefix = @exec_prefix@
--
--bindir = @bindir@
--sbindir = @sbindir@
--libexecdir = @libexecdir@
--datadir = @datadir@
--sysconfdir = @sysconfdir@
--sharedstatedir = @sharedstatedir@
--localstatedir = @localstatedir@
--libdir = @libdir@
--infodir = @infodir@
--mandir = @mandir@
--includedir = @includedir@
--oldincludedir = /usr/include
--
--DESTDIR =
--
- pkgdatadir = $(datadir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
--
- top_builddir = ..
-
--ACLOCAL = @ACLOCAL@
--AUTOCONF = @AUTOCONF@
--AUTOMAKE = @AUTOMAKE@
--AUTOHEADER = @AUTOHEADER@
--
-+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
--INSTALL_DATA = @INSTALL_DATA@
--INSTALL_SCRIPT = @INSTALL_SCRIPT@
--transform = @program_transform_name@
--
-+install_sh_DATA = $(install_sh) -c -m 644
-+install_sh_PROGRAM = $(install_sh) -c
-+install_sh_SCRIPT = $(install_sh) -c
-+INSTALL_HEADER = $(INSTALL_DATA)
-+transform = $(program_transform_name)
- NORMAL_INSTALL = :
- PRE_INSTALL = :
- POST_INSTALL = :
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
--host_alias = @host_alias@
- host_triplet = @host@
-+ACLOCAL = @ACLOCAL@
-+AMDEP_FALSE = @AMDEP_FALSE@
-+AMDEP_TRUE = @AMDEP_TRUE@
-+AMTAR = @AMTAR@
- AR = @AR@
- AS = @AS@
-+AUTOCONF = @AUTOCONF@
-+AUTOHEADER = @AUTOHEADER@
-+AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
--BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
- CATALOGS = @CATALOGS@
- CATOBJEXT = @CATOBJEXT@
- CC = @CC@
-+CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-+CPP = @CPP@
- CPPFLAGS = @CPPFLAGS@
- CXX = @CXX@
- CXXCPP = @CXXCPP@
-+CXXDEPMODE = @CXXDEPMODE@
-+CXXFLAGS = @CXXFLAGS@
-+CYGPATH_W = @CYGPATH_W@
- DATADIRNAME = @DATADIRNAME@
- DB2HTML = @DB2HTML@
- DBUS_SERVICE_DIR = @DBUS_SERVICE_DIR@
-+DEFS = @DEFS@
-+DEPDIR = @DEPDIR@
- DEPENDENT_CFLAGS = @DEPENDENT_CFLAGS@
- DEPENDENT_LIBS = @DEPENDENT_LIBS@
- DEPENDENT_WITH_GTK_CFLAGS = @DEPENDENT_WITH_GTK_CFLAGS@
-@@ -83,48 +73,73 @@
- DEPENDENT_WITH_XML_LIBS = @DEPENDENT_WITH_XML_LIBS@
- DLLTOOL = @DLLTOOL@
- ECHO = @ECHO@
-+ECHO_C = @ECHO_C@
-+ECHO_N = @ECHO_N@
-+ECHO_T = @ECHO_T@
- EGREP = @EGREP@
-+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
-+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
- EXEEXT = @EXEEXT@
- EXPANDED_SYSCONFDIR = @EXPANDED_SYSCONFDIR@
- F77 = @F77@
--GCJ = @GCJ@
--GCJFLAGS = @GCJFLAGS@
-+FFLAGS = @FFLAGS@
- GCONF_AGE = @GCONF_AGE@
- GCONF_CONFIG_SOURCE = @GCONF_CONFIG_SOURCE@
- GCONF_CURRENT = @GCONF_CURRENT@
-+GCONF_DBUS_CFLAGS = @GCONF_DBUS_CFLAGS@
-+GCONF_DBUS_LIBS = @GCONF_DBUS_LIBS@
- GCONF_IPC_CFLAGS = @GCONF_IPC_CFLAGS@
- GCONF_IPC_LIBS = @GCONF_IPC_LIBS@
-+GCONF_ORBIT_CFLAGS = @GCONF_ORBIT_CFLAGS@
-+GCONF_ORBIT_LIBS = @GCONF_ORBIT_LIBS@
- GCONF_REVISION = @GCONF_REVISION@
--GENCAT = @GENCAT@
- GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
- GMOFILES = @GMOFILES@
- GMSGFMT = @GMSGFMT@
- GTKDOC = @GTKDOC@
--GT_NO = @GT_NO@
--GT_YES = @GT_YES@
-+GTK_FALSE = @GTK_FALSE@
-+GTK_TRUE = @GTK_TRUE@
-+HAVE_DBUS_FALSE = @HAVE_DBUS_FALSE@
-+HAVE_DBUS_TRUE = @HAVE_DBUS_TRUE@
-+HAVE_DOCBOOK_FALSE = @HAVE_DOCBOOK_FALSE@
-+HAVE_DOCBOOK_TRUE = @HAVE_DOCBOOK_TRUE@
- HAVE_GTK_DOC = @HAVE_GTK_DOC@
--HAVE_LIB = @HAVE_LIB@
-+HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
-+HAVE_GTK_DOC_TRUE = @HAVE_GTK_DOC_TRUE@
-+HAVE_ORBIT_FALSE = @HAVE_ORBIT_FALSE@
-+HAVE_ORBIT_TRUE = @HAVE_ORBIT_TRUE@
- HTML_DIR = @HTML_DIR@
--INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
- INDENT = @INDENT@
-+INSTALL_DATA = @INSTALL_DATA@
- INSTALL_GCONF_CONFIG_SOURCE = @INSTALL_GCONF_CONFIG_SOURCE@
-+INSTALL_PROGRAM = @INSTALL_PROGRAM@
-+INSTALL_SCRIPT = @INSTALL_SCRIPT@
-+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- INSTOBJEXT = @INSTOBJEXT@
--INTLDEPS = @INTLDEPS@
- INTLLIBS = @INTLLIBS@
--INTLOBJS = @INTLOBJS@
- LDFLAGS = @LDFLAGS@
--LIB = @LIB@
-+LIBOBJS = @LIBOBJS@
-+LIBS = @LIBS@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
--LTLIB = @LTLIB@
-+LTLIBOBJS = @LTLIBOBJS@
- MAINT = @MAINT@
-+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
- MAJOR_VERSION = @MAJOR_VERSION@
- MAKEINFO = @MAKEINFO@
- MKINSTALLDIRS = @MKINSTALLDIRS@
-+MSGFMT = @MSGFMT@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- ORBIT_IDL = @ORBIT_IDL@
- PACKAGE = @PACKAGE@
-+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-+PACKAGE_NAME = @PACKAGE_NAME@
-+PACKAGE_STRING = @PACKAGE_STRING@
-+PACKAGE_TARNAME = @PACKAGE_TARNAME@
-+PACKAGE_VERSION = @PACKAGE_VERSION@
-+PATH_SEPARATOR = @PATH_SEPARATOR@
- PC_REQUIRES = @PC_REQUIRES@
- PERL = @PERL@
- PKG_CONFIG = @PKG_CONFIG@
-@@ -133,79 +148,199 @@
- POSUB = @POSUB@
- PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
- PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-+PTHREADS_FALSE = @PTHREADS_FALSE@
-+PTHREADS_TRUE = @PTHREADS_TRUE@
- RANLIB = @RANLIB@
--RC = @RC@
- REBUILD = @REBUILD@
-+SET_MAKE = @SET_MAKE@
-+SHELL = @SHELL@
- STRIP = @STRIP@
--USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
- USE_NLS = @USE_NLS@
-+USE_SYSTEM_BUS_FALSE = @USE_SYSTEM_BUS_FALSE@
-+USE_SYSTEM_BUS_TRUE = @USE_SYSTEM_BUS_TRUE@
- VERSION = @VERSION@
-+XGETTEXT = @XGETTEXT@
- absolute_top_srcdir = @absolute_top_srcdir@
-+ac_ct_AR = @ac_ct_AR@
-+ac_ct_AS = @ac_ct_AS@
-+ac_ct_CC = @ac_ct_CC@
-+ac_ct_CXX = @ac_ct_CXX@
-+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-+ac_ct_F77 = @ac_ct_F77@
-+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-+ac_ct_RANLIB = @ac_ct_RANLIB@
-+ac_ct_STRIP = @ac_ct_STRIP@
-+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-+am__include = @am__include@
-+am__leading_dot = @am__leading_dot@
-+am__quote = @am__quote@
-+bindir = @bindir@
-+build = @build@
-+build_alias = @build_alias@
-+build_cpu = @build_cpu@
-+build_os = @build_os@
-+build_vendor = @build_vendor@
-+datadir = @datadir@
-+exec_prefix = @exec_prefix@
- gconflocaledir = @gconflocaledir@
--l = @l@
--
-+host = @host@
-+host_alias = @host_alias@
-+host_cpu = @host_cpu@
-+host_os = @host_os@
-+host_vendor = @host_vendor@
-+includedir = @includedir@
-+infodir = @infodir@
-+install_sh = @install_sh@
-+libdir = @libdir@
-+libexecdir = @libexecdir@
-+localstatedir = @localstatedir@
-+mandir = @mandir@
-+oldincludedir = @oldincludedir@
-+prefix = @prefix@
-+program_transform_name = @program_transform_name@
-+sbindir = @sbindir@
-+sharedstatedir = @sharedstatedir@
-+sysconfdir = @sysconfdir@
-+target_alias = @target_alias@
- NULL =
-
- GCONFD_BINARY_NAME = gconfd-2
-
- @HAVE_DBUS_TRUE@DBUS_API_SUBJECT_TO_CHANGE = -DDBUS_API_SUBJECT_TO_CHANGE=\"1\"
-
--INCLUDES = -I$(top_srcdir) -I$(top_builddir) $(DEPENDENT_WITH_XML_AND_GTK_CFLAGS) $(GCONF_IPC_CFLAGS) -DG_LOG_DOMAIN=\"GConf\" -DGCONF_LOCALE_DIR=\""$(gconflocaledir)"\" -DGCONF_SRCDIR=\""$(absolute_top_srcdir)"\" -DGCONF_CONFDIR=\""$(sysconfdir)/gconf/$(MAJOR_VERSION)"\" -DGCONF_ETCDIR=\""$(sysconfdir)/gconf"\" -DGCONF_BINDIR=\""$(bindir)"\" -DGCONF_SERVERDIR=\""$(libexecdir)"\" -DGCONF_BUILDDIR=\""$(top_builddir)"\" -DGCONF_BACKEND_DIR=\""$(pkglibdir)/$(MAJOR_VERSION)"\" -DVERSION=\""$(VERSION)"\" -DGCONF_ENABLE_INTERNALS=1 -DGCONFD=\""$(GCONFD_BINARY_NAME)"\" $(DBUS_API_SUBJECT_TO_CHANGE) $(NULL)
-+INCLUDES = \
-+ -I$(top_srcdir) \
-+ -I$(top_builddir) \
-+ $(DEPENDENT_WITH_XML_AND_GTK_CFLAGS) \
-+ $(GCONF_IPC_CFLAGS) \
-+ -DG_LOG_DOMAIN=\"GConf\" \
-+ -DGCONF_LOCALE_DIR=\""$(gconflocaledir)"\" \
-+ -DGCONF_SRCDIR=\""$(absolute_top_srcdir)"\" \
-+ -DGCONF_CONFDIR=\""$(sysconfdir)/gconf/$(MAJOR_VERSION)"\" \
-+ -DGCONF_ETCDIR=\""$(sysconfdir)/gconf"\" \
-+ -DGCONF_BINDIR=\""$(bindir)"\" \
-+ -DGCONF_SERVERDIR=\""$(libexecdir)"\" \
-+ -DGCONF_BUILDDIR=\""$(top_builddir)"\" \
-+ -DGCONF_BACKEND_DIR=\""$(pkglibdir)/$(MAJOR_VERSION)"\" \
-+ -DVERSION=\""$(VERSION)"\" \
-+ -DGCONF_ENABLE_INTERNALS=1 \
-+ -DGCONFD=\""$(GCONFD_BINARY_NAME)"\" \
-+ $(DBUS_API_SUBJECT_TO_CHANGE) \
-+ $(NULL)
-
-
- EFENCE =
--@GTK_TRUE@SANITY_CHECK = gconf-sanity-check-2
- @GTK_FALSE@SANITY_CHECK =
-
-+@GTK_TRUE@SANITY_CHECK = gconf-sanity-check-2
-+
- lib_LTLIBRARIES = libgconf-2.la
-
- bin_PROGRAMS = gconftool-2
--libexec_PROGRAMS = gconfd-2 $(SANITY_CHECK)
-+libexec_PROGRAMS = gconfd-2
-+
- @HAVE_ORBIT_TRUE@CORBA_SOURCECODE = GConfX-common.c GConfX-skels.c GConfX-stubs.c GConfX.h
- @HAVE_ORBIT_FALSE@CORBA_SOURCECODE =
-
--built_sourcecode = $(CORBA_SOURCECODE) gconfmarshal.h gconfmarshal.c
--
--
--CLEANFILES = $(built_sourcecode) stamp-gconfmarshal.h stamp-gconfmarshal.c stamp-gconfmarshal.h stamp-gconfmarshal.c gconf.service
-+built_sourcecode = \
-+ $(CORBA_SOURCECODE) \
-+ gconfmarshal.h \
-+ gconfmarshal.c
-
-
--gconf_headers = gconf.h gconf-changeset.h gconf-listeners.h gconf-schema.h gconf-value.h gconf-error.h gconf-engine.h gconf-client.h
-+CLEANFILES = \
-+ $(built_sourcecode) \
-+ stamp-gconfmarshal.h \
-+ stamp-gconfmarshal.c \
-+ stamp-gconfmarshal.h \
-+ stamp-gconfmarshal.c \
-+ gconf.service
-+
-+
-+gconf_headers = \
-+ gconf.h \
-+ gconf-changeset.h \
-+ gconf-listeners.h \
-+ gconf-schema.h \
-+ gconf-value.h \
-+ gconf-error.h \
-+ gconf-engine.h \
-+ gconf-client.h
-
-
- gconfincludedir = $(includedir)/gconf/$(MAJOR_VERSION)/gconf
--gconfinclude_HEADERS = $(gconf_headers) gconf-enum-types.h
-+gconfinclude_HEADERS = \
-+ $(gconf_headers) \
-+ gconf-enum-types.h
-
-+
-+# Only one client is supported at a time, if D-BUS is enabled we use that.
- @HAVE_DBUS_TRUE@gconf_ipc_sources = gconf-dbus.c gconf-dbus-utils.c gconf-dbus-utils.h
- @HAVE_DBUS_FALSE@gconf_ipc_sources = gconf-corba-utils.c gconf-corba-utils.h gconf-corba.c
--@HAVE_ORBIT_TRUE@gconfd_corba_sources = gconf-database-corba.c gconf-database-corba.h gconfd-corba.c gconfd-corba.h gconf-corba-utils.c gconf-corba-utils.h $(CORBA_SOURCECODE)
-+
-+@HAVE_ORBIT_TRUE@gconfd_corba_sources = gconf-database-corba.c gconf-database-corba.h \
-+@HAVE_ORBIT_TRUE@ gconfd-corba.c gconfd-corba.h gconf-corba-utils.c gconf-corba-utils.h \
-+@HAVE_ORBIT_TRUE@ $(CORBA_SOURCECODE)
-+
- @HAVE_ORBIT_FALSE@gconfd_corba_sources =
--@HAVE_DBUS_TRUE@gconfd_dbus_sources = gconfd-dbus.c gconfd-dbus.h gconf-database-dbus.c gconf-database-dbus.h gconf-dbus-utils.c gconf-dbus-utils.h
-+
-+@HAVE_DBUS_TRUE@gconfd_dbus_sources = gconfd-dbus.c gconfd-dbus.h gconf-database-dbus.c \
-+@HAVE_DBUS_TRUE@ gconf-database-dbus.h gconf-dbus-utils.c gconf-dbus-utils.h
-+
- @HAVE_DBUS_FALSE@gconfd_dbus_sources =
-
- gconfd_ipc_sources = $(gconfd_corba_sources) $(gconfd_dbus_sources)
-
--gconfd_2_SOURCES = gconf-database.h gconf-database.c $(gconfd_ipc_sources) gconf-sources.h gconfd.h gconfd.c
-+gconfd_2_SOURCES = \
-+ gconf-database.h \
-+ gconf-database.c \
-+ $(gconfd_ipc_sources) \
-+ gconf-sources.h \
-+ gconfd.h \
-+ gconfd.c
-
-
- gconfd_2_LDADD = $(EFENCE) $(INTLLIBS) $(DEPENDENT_LIBS) $(GCONF_IPC_LIBS) libgconf-$(MAJOR_VERSION).la
-
-+
- # gconf_testclient_SOURCES = \
- # testclient.c
-
- # gconf_testclient_LDADD = $(GLIB_LIBS) $(OAF_LIBS) libgconf-client.la
--
--gconftool_2_SOURCES = gconftool.c
-+gconftool_2_SOURCES = \
-+ gconftool.c
-
-
- gconftool_2_LDADD = $(EFENCE) $(INTLLIBS) $(DEPENDENT_WITH_XML_LIBS) $(GCONF_IPC_LIBS) $(POPT_LIBS) libgconf-$(MAJOR_VERSION).la
-
--gconf_sanity_check_2_SOURCES = gconf-sanity-check.c
-+gconf_sanity_check_2_SOURCES = \
-+ gconf-sanity-check.c
-
-
- gconf_sanity_check_2_LDADD = $(EFENCE) $(INTLLIBS) $(DEPENDENT_WITH_XML_AND_GTK_LIBS) $(POPT_LIBS) $(GCONF_IPC_LIBS) libgconf-$(MAJOR_VERSION).la
-
--libgconf_2_la_SOURCES = gconf-internals.c gconf-internals.h gconf.h gconf.c gconf-backend.h gconf-backend.c gconf-changeset.c gconf-error.c gconf-listeners.c gconf-locale.h gconf-locale.c gconf-schema.c gconf-sources.c gconf-value.c gconf-client.c gconf-enum-types.c $(CORBA_SOURCECODE) $(gconf_ipc_sources)
-+libgconf_2_la_SOURCES = \
-+ gconf-internals.c \
-+ gconf-internals.h \
-+ gconf.h \
-+ gconf.c \
-+ gconf-backend.h \
-+ gconf-backend.c \
-+ gconf-changeset.c \
-+ gconf-error.c \
-+ gconf-listeners.c \
-+ gconf-locale.h \
-+ gconf-locale.c \
-+ gconf-schema.c \
-+ gconf-sources.c \
-+ gconf-value.c \
-+ gconf-client.c \
-+ gconf-enum-types.c \
-+ $(CORBA_SOURCECODE) \
-+ $(gconf_ipc_sources)
-
-
- libgconf_2_la_LDFLAGS = -version-info $(GCONF_CURRENT):$(GCONF_REVISION):$(GCONF_AGE) -no-undefined
-@@ -216,519 +351,528 @@
- @HAVE_DBUS_TRUE@service_DATA = gconf.service
-
- EXTRA_DIST = GConfX.idl default.path.in gconfmarshal.list regenerate-enum-header.sh regenerate-enum-footer.sh gconf-corba.c gconf-corba.h gconf-corba-utils.c gconf-corba-utils.h gconf-database-corba.c gconf-database-corba.h gconfd-corba.c gconf-dbus.c gconf-database-dbus.c gconf-database-dbus.h gconfd-dbus.c gconfd-dbus.h gconf.service.in
-+subdir = gconf
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = ../config.h
--CONFIG_CLEAN_FILES = default.path
--LTLIBRARIES = $(lib_LTLIBRARIES)
--
--
--DEFS = @DEFS@ -I. -I$(srcdir) -I..
--LIBS = @LIBS@
--libgconf_2_la_DEPENDENCIES =
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_FALSE@libgconf_2_la_OBJECTS = \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_FALSE@gconf-internals.lo gconf.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_FALSE@gconf-backend.lo gconf-changeset.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_FALSE@gconf-error.lo gconf-listeners.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_FALSE@gconf-locale.lo gconf-schema.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_FALSE@gconf-sources.lo gconf-value.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_FALSE@gconf-client.lo gconf-enum-types.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_FALSE@gconf-corba-utils.lo gconf-corba.lo
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_TRUE@libgconf_2_la_OBJECTS = \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_TRUE@gconf-internals.lo gconf.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_TRUE@gconf-backend.lo gconf-changeset.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_TRUE@gconf-error.lo gconf-listeners.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_TRUE@gconf-locale.lo gconf-schema.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_TRUE@gconf-sources.lo gconf-value.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_TRUE@gconf-client.lo gconf-enum-types.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_TRUE@GConfX-common.lo GConfX-skels.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_TRUE@GConfX-stubs.lo gconf-corba-utils.lo \
--@HAVE_DBUS_FALSE@@HAVE_ORBIT_TRUE@gconf-corba.lo
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_FALSE@libgconf_2_la_OBJECTS = \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_FALSE@gconf-internals.lo gconf.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_FALSE@gconf-backend.lo gconf-changeset.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_FALSE@gconf-error.lo gconf-listeners.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_FALSE@gconf-locale.lo gconf-schema.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_FALSE@gconf-sources.lo gconf-value.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_FALSE@gconf-client.lo gconf-enum-types.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_FALSE@gconf-dbus.lo gconf-dbus-utils.lo
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_TRUE@libgconf_2_la_OBJECTS = \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_TRUE@gconf-internals.lo gconf.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_TRUE@gconf-backend.lo gconf-changeset.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_TRUE@gconf-error.lo gconf-listeners.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_TRUE@gconf-locale.lo gconf-schema.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_TRUE@gconf-sources.lo gconf-value.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_TRUE@gconf-client.lo gconf-enum-types.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_TRUE@GConfX-common.lo GConfX-skels.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_TRUE@GConfX-stubs.lo gconf-dbus.lo \
--@HAVE_DBUS_TRUE@@HAVE_ORBIT_TRUE@gconf-dbus-utils.lo
--bin_PROGRAMS = gconftool-2$(EXEEXT)
--@GTK_FALSE@libexec_PROGRAMS = gconfd-2$(EXEEXT)
--@GTK_TRUE@libexec_PROGRAMS = gconfd-2$(EXEEXT) \
--@GTK_TRUE@gconf-sanity-check-2$(EXEEXT)
--PROGRAMS = $(bin_PROGRAMS) $(libexec_PROGRAMS)
--
--gconftool_2_OBJECTS = gconftool.$(OBJEXT)
--gconftool_2_DEPENDENCIES = libgconf-$(MAJOR_VERSION).la
--gconftool_2_LDFLAGS =
--@HAVE_ORBIT_FALSE@@HAVE_DBUS_TRUE@gconfd_2_OBJECTS = \
--@HAVE_ORBIT_FALSE@@HAVE_DBUS_TRUE@gconf-database.$(OBJEXT) \
--@HAVE_ORBIT_FALSE@@HAVE_DBUS_TRUE@gconfd-dbus.$(OBJEXT) \
--@HAVE_ORBIT_FALSE@@HAVE_DBUS_TRUE@gconf-database-dbus.$(OBJEXT) \
--@HAVE_ORBIT_FALSE@@HAVE_DBUS_TRUE@gconf-dbus-utils.$(OBJEXT) \
--@HAVE_ORBIT_FALSE@@HAVE_DBUS_TRUE@gconfd.$(OBJEXT)
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_TRUE@gconfd_2_OBJECTS = \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_TRUE@gconf-database.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_TRUE@gconf-database-corba.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_TRUE@gconfd-corba.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_TRUE@gconf-corba-utils.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_TRUE@GConfX-common.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_TRUE@GConfX-skels.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_TRUE@GConfX-stubs.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_TRUE@gconfd-dbus.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_TRUE@gconf-database-dbus.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_TRUE@gconf-dbus-utils.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_TRUE@gconfd.$(OBJEXT)
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_FALSE@gconfd_2_OBJECTS = \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_FALSE@gconf-database.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_FALSE@gconf-database-corba.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_FALSE@gconfd-corba.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_FALSE@gconf-corba-utils.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_FALSE@GConfX-common.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_FALSE@GConfX-skels.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_FALSE@GConfX-stubs.$(OBJEXT) \
--@HAVE_ORBIT_TRUE@@HAVE_DBUS_FALSE@gconfd.$(OBJEXT)
--@HAVE_ORBIT_FALSE@@HAVE_DBUS_FALSE@gconfd_2_OBJECTS = \
--@HAVE_ORBIT_FALSE@@HAVE_DBUS_FALSE@gconf-database.$(OBJEXT) \
--@HAVE_ORBIT_FALSE@@HAVE_DBUS_FALSE@gconfd.$(OBJEXT)
--gconfd_2_DEPENDENCIES = libgconf-$(MAJOR_VERSION).la
--gconfd_2_LDFLAGS =
--gconf_sanity_check_2_OBJECTS = gconf-sanity-check.$(OBJEXT)
--gconf_sanity_check_2_DEPENDENCIES = libgconf-$(MAJOR_VERSION).la
--gconf_sanity_check_2_LDFLAGS =
--COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES = default.path
-+LTLIBRARIES = $(lib_LTLIBRARIES)
-+
-+libgconf_2_la_DEPENDENCIES =
-+am__libgconf_2_la_SOURCES_DIST = gconf-internals.c gconf-internals.h \
-+ gconf.h gconf.c gconf-backend.h gconf-backend.c \
-+ gconf-changeset.c gconf-error.c gconf-listeners.c \
-+ gconf-locale.h gconf-locale.c gconf-schema.c gconf-sources.c \
-+ gconf-value.c gconf-client.c gconf-enum-types.c GConfX-common.c \
-+ GConfX-skels.c GConfX-stubs.c GConfX.h gconf-dbus.c \
-+ gconf-dbus-utils.c gconf-dbus-utils.h gconf-corba-utils.c \
-+ gconf-corba-utils.h gconf-corba.c
-+@HAVE_ORBIT_TRUE@am__objects_1 = GConfX-common.lo GConfX-skels.lo \
-+@HAVE_ORBIT_TRUE@ GConfX-stubs.lo
-+@HAVE_ORBIT_FALSE@am__objects_1 =
-+@HAVE_DBUS_TRUE@am__objects_2 = gconf-dbus.lo gconf-dbus-utils.lo
-+@HAVE_DBUS_FALSE@am__objects_2 = gconf-corba-utils.lo gconf-corba.lo
-+am_libgconf_2_la_OBJECTS = gconf-internals.lo gconf.lo gconf-backend.lo \
-+ gconf-changeset.lo gconf-error.lo gconf-listeners.lo \
-+ gconf-locale.lo gconf-schema.lo gconf-sources.lo gconf-value.lo \
-+ gconf-client.lo gconf-enum-types.lo $(am__objects_1) \
-+ $(am__objects_2)
-+libgconf_2_la_OBJECTS = $(am_libgconf_2_la_OBJECTS)
-+bin_PROGRAMS = gconftool-2$(EXEEXT)
-+libexec_PROGRAMS = gconfd-2$(EXEEXT)
-+PROGRAMS = $(bin_PROGRAMS) $(libexec_PROGRAMS)
-+
-+am__gconfd_2_SOURCES_DIST = gconf-database.h gconf-database.c \
-+ gconf-database-corba.c gconf-database-corba.h gconfd-corba.c \
-+ gconfd-corba.h gconf-corba-utils.c gconf-corba-utils.h \
-+ GConfX-common.c GConfX-skels.c GConfX-stubs.c GConfX.h \
-+ gconfd-dbus.c gconfd-dbus.h gconf-database-dbus.c \
-+ gconf-database-dbus.h gconf-dbus-utils.c gconf-dbus-utils.h \
-+ gconf-sources.h gconfd.h gconfd.c
-+@HAVE_ORBIT_TRUE@am__objects_3 = GConfX-common.$(OBJEXT) \
-+@HAVE_ORBIT_TRUE@ GConfX-skels.$(OBJEXT) GConfX-stubs.$(OBJEXT)
-+@HAVE_ORBIT_FALSE@am__objects_3 =
-+@HAVE_ORBIT_TRUE@am__objects_4 = gconf-database-corba.$(OBJEXT) \
-+@HAVE_ORBIT_TRUE@ gconfd-corba.$(OBJEXT) \
-+@HAVE_ORBIT_TRUE@ gconf-corba-utils.$(OBJEXT) $(am__objects_3)
-+@HAVE_ORBIT_FALSE@am__objects_4 =
-+@HAVE_DBUS_TRUE@am__objects_5 = gconfd-dbus.$(OBJEXT) \
-+@HAVE_DBUS_TRUE@ gconf-database-dbus.$(OBJEXT) \
-+@HAVE_DBUS_TRUE@ gconf-dbus-utils.$(OBJEXT)
-+@HAVE_DBUS_FALSE@am__objects_5 =
-+am__objects_6 = $(am__objects_4) $(am__objects_5)
-+am_gconfd_2_OBJECTS = gconf-database.$(OBJEXT) $(am__objects_6) \
-+ gconfd.$(OBJEXT)
-+gconfd_2_OBJECTS = $(am_gconfd_2_OBJECTS)
-+gconfd_2_DEPENDENCIES = libgconf-$(MAJOR_VERSION).la
-+gconfd_2_LDFLAGS =
-+am_gconftool_2_OBJECTS = gconftool.$(OBJEXT)
-+gconftool_2_OBJECTS = $(am_gconftool_2_OBJECTS)
-+gconftool_2_DEPENDENCIES = libgconf-$(MAJOR_VERSION).la
-+gconftool_2_LDFLAGS =
-+
-+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-+depcomp = $(SHELL) $(top_srcdir)/depcomp
-+am__depfiles_maybe = depfiles
-+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/GConfX-common.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/GConfX-common.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/GConfX-skels.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/GConfX-skels.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/GConfX-stubs.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/GConfX-stubs.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-backend.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-changeset.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-client.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-corba-utils.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-corba-utils.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-corba.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-database-corba.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-database-dbus.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-database.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-dbus-utils.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-dbus-utils.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-dbus.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-enum-types.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-error.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-internals.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-listeners.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-locale.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-schema.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-sources.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconf-value.Plo ./$(DEPDIR)/gconf.Plo \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconfd-corba.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconfd-dbus.Po ./$(DEPDIR)/gconfd.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/gconftool.Po
-+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
-+ $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
- CCLD = $(CC)
--LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
--DATA = $(service_DATA)
--
--HEADERS = $(gconfinclude_HEADERS)
--
--DIST_COMMON = Makefile.am Makefile.in default.path.in
--
-+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+DIST_SOURCES = $(am__libgconf_2_la_SOURCES_DIST) \
-+ $(am__gconfd_2_SOURCES_DIST) $(gconftool_2_SOURCES)
-+DATA = $(service_DATA)
-+
-+HEADERS = $(gconfinclude_HEADERS)
-+
-+DIST_COMMON = $(gconfinclude_HEADERS) $(srcdir)/Makefile.in Makefile.am \
-+ default.path.in
-+SOURCES = $(libgconf_2_la_SOURCES) $(gconfd_2_SOURCES) $(gconftool_2_SOURCES)
-
--DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-+all: all-am
-
--TAR = tar
--GZIP_ENV = --best
--SOURCES = $(libgconf_2_la_SOURCES) $(gconftool_2_SOURCES) $(gconfd_2_SOURCES) $(gconf_sanity_check_2_SOURCES)
--OBJECTS = $(libgconf_2_la_OBJECTS) $(gconftool_2_OBJECTS) $(gconfd_2_OBJECTS) $(gconf_sanity_check_2_OBJECTS)
--
--all: all-redirect
- .SUFFIXES:
--.SUFFIXES: .S .c .lo .o .obj .s
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps gconf/Makefile
--
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-- cd $(top_builddir) \
-- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
--
-+.SUFFIXES: .c .lo .o .obj
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-+ cd $(top_srcdir) && \
-+ $(AUTOMAKE) --gnu gconf/Makefile
-+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
-+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
- default.path: $(top_builddir)/config.status default.path.in
-- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
--
--mostlyclean-libLTLIBRARIES:
--
--clean-libLTLIBRARIES:
-- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
--
--distclean-libLTLIBRARIES:
--
--maintainer-clean-libLTLIBRARIES:
--
-+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-+libLTLIBRARIES_INSTALL = $(INSTALL)
- install-libLTLIBRARIES: $(lib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(libdir)
- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- if test -f $$p; then \
-- echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
-- $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
-+ f="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \
-+ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \
- else :; fi; \
- done
-
- uninstall-libLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
-- list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
-+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-+ p="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \
-+ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
- done
-
--.c.o:
-- $(COMPILE) -c $<
--
--# FIXME: We should only use cygpath when building on Windows,
--# and only if it is available.
--.c.obj:
-- $(COMPILE) -c `cygpath -w $<`
--
--.s.o:
-- $(COMPILE) -c $<
--
--.S.o:
-- $(COMPILE) -c $<
--
--mostlyclean-compile:
-- -rm -f *.o core *.core
-- -rm -f *.$(OBJEXT)
--
--clean-compile:
--
--distclean-compile:
-- -rm -f *.tab.c
--
--maintainer-clean-compile:
--
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
--.s.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
--.S.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
--mostlyclean-libtool:
-- -rm -f *.lo
--
--clean-libtool:
-- -rm -rf .libs _libs
--
--distclean-libtool:
--
--maintainer-clean-libtool:
--
--libgconf-2.la: $(libgconf_2_la_OBJECTS) $(libgconf_2_la_DEPENDENCIES)
-+clean-libLTLIBRARIES:
-+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-+ test "$$dir" = "$$p" && dir=.; \
-+ echo "rm -f \"$${dir}/so_locations\""; \
-+ rm -f "$${dir}/so_locations"; \
-+ done
-+libgconf-2.la: $(libgconf_2_la_OBJECTS) $(libgconf_2_la_DEPENDENCIES)
- $(LINK) -rpath $(libdir) $(libgconf_2_la_LDFLAGS) $(libgconf_2_la_OBJECTS) $(libgconf_2_la_LIBADD) $(LIBS)
--
--mostlyclean-binPROGRAMS:
--
--clean-binPROGRAMS:
-- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
--
--distclean-binPROGRAMS:
--
--maintainer-clean-binPROGRAMS:
--
-+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
- install-binPROGRAMS: $(bin_PROGRAMS)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(bindir)
- @list='$(bin_PROGRAMS)'; for p in $$list; do \
-- if test -f $$p; then \
-- echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
-- $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
-+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-+ if test -f $$p \
-+ || test -f $$p1 \
-+ ; then \
-+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
-+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
-+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
- else :; fi; \
- done
-
- uninstall-binPROGRAMS:
- @$(NORMAL_UNINSTALL)
-- list='$(bin_PROGRAMS)'; for p in $$list; do \
-- rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
-+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
-+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
-+ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
-+ rm -f $(DESTDIR)$(bindir)/$$f; \
- done
-
--mostlyclean-libexecPROGRAMS:
--
--clean-libexecPROGRAMS:
-- -test -z "$(libexec_PROGRAMS)" || rm -f $(libexec_PROGRAMS)
--
--distclean-libexecPROGRAMS:
--
--maintainer-clean-libexecPROGRAMS:
--
-+clean-binPROGRAMS:
-+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
-+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-+ echo " rm -f $$p $$f"; \
-+ rm -f $$p $$f ; \
-+ done
-+libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
- install-libexecPROGRAMS: $(libexec_PROGRAMS)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(libexecdir)
- @list='$(libexec_PROGRAMS)'; for p in $$list; do \
-- if test -f $$p; then \
-- echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
-- $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
-+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-+ if test -f $$p \
-+ || test -f $$p1 \
-+ ; then \
-+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
-+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(libexecPROGRAMS_INSTALL) $$p $(DESTDIR)$(libexecdir)/$$f"; \
-+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(libexecPROGRAMS_INSTALL) $$p $(DESTDIR)$(libexecdir)/$$f || exit 1; \
- else :; fi; \
- done
-
- uninstall-libexecPROGRAMS:
- @$(NORMAL_UNINSTALL)
-- list='$(libexec_PROGRAMS)'; for p in $$list; do \
-- rm -f $(DESTDIR)$(libexecdir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
-+ @list='$(libexec_PROGRAMS)'; for p in $$list; do \
-+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
-+ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \
-+ rm -f $(DESTDIR)$(libexecdir)/$$f; \
- done
-
--gconftool-2$(EXEEXT): $(gconftool_2_OBJECTS) $(gconftool_2_DEPENDENCIES)
-+clean-libexecPROGRAMS:
-+ @list='$(libexec_PROGRAMS)'; for p in $$list; do \
-+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-+ echo " rm -f $$p $$f"; \
-+ rm -f $$p $$f ; \
-+ done
-+gconfd-2$(EXEEXT): $(gconfd_2_OBJECTS) $(gconfd_2_DEPENDENCIES)
-+ @rm -f gconfd-2$(EXEEXT)
-+ $(LINK) $(gconfd_2_LDFLAGS) $(gconfd_2_OBJECTS) $(gconfd_2_LDADD) $(LIBS)
-+gconftool-2$(EXEEXT): $(gconftool_2_OBJECTS) $(gconftool_2_DEPENDENCIES)
- @rm -f gconftool-2$(EXEEXT)
- $(LINK) $(gconftool_2_LDFLAGS) $(gconftool_2_OBJECTS) $(gconftool_2_LDADD) $(LIBS)
-
--gconfd-2$(EXEEXT): $(gconfd_2_OBJECTS) $(gconfd_2_DEPENDENCIES)
-- @rm -f gconfd-2$(EXEEXT)
-- $(LINK) $(gconfd_2_LDFLAGS) $(gconfd_2_OBJECTS) $(gconfd_2_LDADD) $(LIBS)
-+mostlyclean-compile:
-+ -rm -f *.$(OBJEXT) core *.core
-+
-+distclean-compile:
-+ -rm -f *.tab.c
-+
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GConfX-common.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GConfX-common.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GConfX-skels.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GConfX-skels.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GConfX-stubs.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GConfX-stubs.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-backend.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-changeset.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-client.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-corba-utils.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-corba-utils.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-corba.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-database-corba.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-database-dbus.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-database.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-dbus-utils.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-dbus-utils.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-dbus.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-enum-types.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-error.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-internals.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-listeners.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-locale.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-schema.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-sources.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf-value.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconf.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconfd-corba.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconfd-dbus.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconfd.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconftool.Po@am__quote@
-+
-+.c.o:
-+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-+@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-+@am__fastdepCC_TRUE@ fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
-
--gconf-sanity-check-2$(EXEEXT): $(gconf_sanity_check_2_OBJECTS) $(gconf_sanity_check_2_DEPENDENCIES)
-- @rm -f gconf-sanity-check-2$(EXEEXT)
-- $(LINK) $(gconf_sanity_check_2_LDFLAGS) $(gconf_sanity_check_2_OBJECTS) $(gconf_sanity_check_2_LDADD) $(LIBS)
-+.c.obj:
-+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-+@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-+@am__fastdepCC_TRUE@ fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-+
-+.c.lo:
-+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-+@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
-+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-+@am__fastdepCC_TRUE@ fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
-
-+mostlyclean-libtool:
-+ -rm -f *.lo
-+
-+clean-libtool:
-+ -rm -rf .libs _libs
-+
-+distclean-libtool:
-+ -rm -f libtool
-+uninstall-info-am:
-+serviceDATA_INSTALL = $(INSTALL_DATA)
- install-serviceDATA: $(service_DATA)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(servicedir)
- @list='$(service_DATA)'; for p in $$list; do \
-- if test -f $(srcdir)/$$p; then \
-- echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(servicedir)/$$p"; \
-- $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(servicedir)/$$p; \
-- else if test -f $$p; then \
-- echo " $(INSTALL_DATA) $$p $(DESTDIR)$(servicedir)/$$p"; \
-- $(INSTALL_DATA) $$p $(DESTDIR)$(servicedir)/$$p; \
-- fi; fi; \
-+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-+ f="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " $(serviceDATA_INSTALL) $$d$$p $(DESTDIR)$(servicedir)/$$f"; \
-+ $(serviceDATA_INSTALL) $$d$$p $(DESTDIR)$(servicedir)/$$f; \
- done
-
- uninstall-serviceDATA:
- @$(NORMAL_UNINSTALL)
-- list='$(service_DATA)'; for p in $$list; do \
-- rm -f $(DESTDIR)$(servicedir)/$$p; \
-+ @list='$(service_DATA)'; for p in $$list; do \
-+ f="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " rm -f $(DESTDIR)$(servicedir)/$$f"; \
-+ rm -f $(DESTDIR)$(servicedir)/$$f; \
- done
--
-+gconfincludeHEADERS_INSTALL = $(INSTALL_HEADER)
- install-gconfincludeHEADERS: $(gconfinclude_HEADERS)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(gconfincludedir)
- @list='$(gconfinclude_HEADERS)'; for p in $$list; do \
-- if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
-- echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(gconfincludedir)/$$p"; \
-- $(INSTALL_DATA) $$d$$p $(DESTDIR)$(gconfincludedir)/$$p; \
-+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-+ f="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " $(gconfincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(gconfincludedir)/$$f"; \
-+ $(gconfincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(gconfincludedir)/$$f; \
- done
-
- uninstall-gconfincludeHEADERS:
- @$(NORMAL_UNINSTALL)
-- list='$(gconfinclude_HEADERS)'; for p in $$list; do \
-- rm -f $(DESTDIR)$(gconfincludedir)/$$p; \
-+ @list='$(gconfinclude_HEADERS)'; for p in $$list; do \
-+ f="`echo $$p | sed -e 's|^.*/||'`"; \
-+ echo " rm -f $(DESTDIR)$(gconfincludedir)/$$f"; \
-+ rm -f $(DESTDIR)$(gconfincludedir)/$$f; \
- done
-
-+ETAGS = etags
-+ETAGSFLAGS =
-+
-+CTAGS = ctags
-+CTAGSFLAGS =
-+
- tags: TAGS
-
--ID: $(HEADERS) $(SOURCES) $(LISP)
-- list='$(SOURCES) $(HEADERS)'; \
-- unique=`for i in $$list; do echo $$i; done | \
-- awk ' { files[$$0] = 1; } \
-+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
-- here=`pwd` && cd $(srcdir) \
-- && mkid -f$$here/ID $$unique $(LISP)
-+ mkid -fID $$unique
-
--TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
-+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
-- list='$(SOURCES) $(HEADERS)'; \
-- unique=`for i in $$list; do echo $$i; done | \
-- awk ' { files[$$0] = 1; } \
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
-- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
--
--mostlyclean-tags:
--
--clean-tags:
-+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
-+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+ $$tags $$unique
-+
-+ctags: CTAGS
-+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
-+ tags=; \
-+ here=`pwd`; \
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
-+ END { for (i in files) print i; }'`; \
-+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
-+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-+ $$tags $$unique
-+
-+GTAGS:
-+ here=`$(am__cd) $(top_builddir) && pwd` \
-+ && cd $(top_srcdir) \
-+ && gtags -i $(GTAGS_ARGS) $$here
-
- distclean-tags:
-- -rm -f TAGS ID
--
--maintainer-clean-tags:
-+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
--distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
--
--subdir = gconf
-+top_distdir = ..
-+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
- distdir: $(DISTFILES)
-- @for file in $(DISTFILES); do \
-- d=$(srcdir); \
-+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-+ list='$(DISTFILES)'; for file in $$list; do \
-+ case $$file in \
-+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-+ esac; \
-+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-+ dir="/$$dir"; \
-+ $(mkinstalldirs) "$(distdir)$$dir"; \
-+ else \
-+ dir=''; \
-+ fi; \
- if test -d $$d/$$file; then \
-- cp -pr $$d/$$file $(distdir)/$$file; \
-+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-+ fi; \
-+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
-- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
-- || cp -p $$d/$$file $(distdir)/$$file || :; \
-+ || cp -p $$d/$$file $(distdir)/$$file \
-+ || exit 1; \
- fi; \
- done
-- $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
--gconf-backend.lo gconf-backend.o : gconf-backend.c gconf-backend.h \
-- gconf-internals.h ../config.h gconf-error.h gconf-value.h \
-- gconf-engine.h gconf-sources.h gconf-internals.h
--gconf-changeset.lo gconf-changeset.o : gconf-changeset.c \
-- gconf-changeset.h gconf.h gconf-schema.h gconf-value.h \
-- gconf-error.h gconf-engine.h gconf-enum-types.h \
-- gconf-internals.h ../config.h gconf-error.h gconf-value.h \
-- gconf-engine.h gconf-sources.h
--gconf-client.lo gconf-client.o : gconf-client.c gconf-client.h gconf.h \
-- gconf-schema.h gconf-value.h gconf-error.h gconf-engine.h \
-- gconf-enum-types.h gconf-listeners.h gconf-changeset.h \
-- gconf-internals.h ../config.h gconf-sources.h gconfmarshal.h \
-- gconfmarshal.c
--gconf-database-dbus.o: gconf-database-dbus.c ../config.h gconfd.h \
-- gconf-error.h gconf-database.h gconf-listeners.h \
-- gconf-sources.h gconf-value.h gconf-internals.h gconf-engine.h \
-- gconf-error.h gconf-locale.h gconf-dbus-utils.h gconf.h \
-- gconf-schema.h gconf-value.h gconf-engine.h gconf-enum-types.h \
-- gconfd-dbus.h gconf-database-dbus.h
--gconf-database.o: gconf-database.c gconf-database.h gconf-error.h \
-- gconf-listeners.h gconf-sources.h gconf-value.h \
-- gconf-internals.h ../config.h gconf-engine.h gconf-error.h \
-- gconf-locale.h gconfd.h gconfd-dbus.h gconf-database-dbus.h
--gconf-dbus-utils.lo gconf-dbus-utils.o : gconf-dbus-utils.c ../config.h \
-- gconf-dbus-utils.h gconf.h gconf-schema.h gconf-value.h \
-- gconf-error.h gconf-engine.h gconf-enum-types.h \
-- gconf-internals.h gconf-error.h gconf-value.h gconf-engine.h \
-- gconf-sources.h
--gconf-dbus.lo gconf-dbus.o : gconf-dbus.c ../config.h gconf.h \
-- gconf-schema.h gconf-value.h gconf-error.h gconf-engine.h \
-- gconf-enum-types.h gconf-dbus-utils.h gconf.h gconf-internals.h \
-- gconf-error.h gconf-value.h gconf-engine.h gconf-sources.h \
-- gconf-locale.h
--gconf-enum-types.lo gconf-enum-types.o : gconf-enum-types.c \
-- gconf-client.h gconf.h gconf-schema.h gconf-value.h \
-- gconf-error.h gconf-engine.h gconf-enum-types.h \
-- gconf-listeners.h gconf-changeset.h
--gconf-error.lo gconf-error.o : gconf-error.c gconf-error.h \
-- gconf-internals.h ../config.h gconf-value.h gconf-engine.h \
-- gconf-error.h gconf-sources.h
--gconf-internals.lo gconf-internals.o : gconf-internals.c ../config.h \
-- gconf-internals.h gconf-error.h gconf-value.h gconf-engine.h \
-- gconf-error.h gconf-sources.h gconf-backend.h gconf-internals.h \
-- gconf-sources.h gconf-schema.h gconf-value.h gconf.h \
-- gconf-schema.h gconf-engine.h gconf-enum-types.h
--gconf-listeners.lo gconf-listeners.o : gconf-listeners.c \
-- gconf-listeners.h gconf.h gconf-schema.h gconf-value.h \
-- gconf-error.h gconf-engine.h gconf-enum-types.h
--gconf-locale.lo gconf-locale.o : gconf-locale.c gconf-locale.h \
-- gconf-internals.h ../config.h gconf-error.h gconf-value.h \
-- gconf-engine.h gconf-error.h gconf-sources.h
--gconf-sanity-check.o: gconf-sanity-check.c gconf.h gconf-schema.h \
-- gconf-value.h gconf-error.h gconf-engine.h gconf-enum-types.h \
-- gconf-internals.h ../config.h gconf-error.h gconf-value.h \
-- gconf-engine.h gconf-sources.h gconf-backend.h \
-- gconf-internals.h gconf-sources.h
--gconf-schema.lo gconf-schema.o : gconf-schema.c gconf-schema.h \
-- gconf-value.h gconf-error.h gconf-internals.h ../config.h \
-- gconf-error.h gconf-value.h gconf-engine.h gconf-sources.h
--gconf-sources.lo gconf-sources.o : gconf-sources.c gconf-backend.h \
-- gconf-internals.h ../config.h gconf-error.h gconf-value.h \
-- gconf-engine.h gconf-sources.h gconf-sources.h \
-- gconf-internals.h gconf-schema.h gconf.h gconf-schema.h \
-- gconf-enum-types.h
--gconf-value.lo gconf-value.o : gconf-value.c gconf-value.h gconf-error.h \
-- gconf-schema.h gconf-value.h gconf-internals.h ../config.h \
-- gconf-engine.h gconf-error.h gconf-sources.h
--gconf.lo gconf.o : gconf.c gconf.h gconf-schema.h gconf-value.h \
-- gconf-error.h gconf-engine.h gconf-enum-types.h \
-- gconf-internals.h ../config.h gconf-error.h gconf-value.h \
-- gconf-engine.h gconf-sources.h
--gconfd-dbus.o: gconfd-dbus.c ../config.h gconf-database-dbus.h \
-- gconf-database.h gconf-error.h gconf-listeners.h \
-- gconf-sources.h gconf-value.h gconf-internals.h gconf-engine.h \
-- gconf-error.h gconf-locale.h gconf-dbus-utils.h gconf.h \
-- gconf-schema.h gconf-value.h gconf-engine.h gconf-enum-types.h \
-- gconfd.h gconfd-dbus.h
--gconfd.o: gconfd.c ../config.h gconf-internals.h gconf-error.h \
-- gconf-value.h gconf-engine.h gconf-error.h gconf-sources.h \
-- gconf-listeners.h gconf-locale.h gconf-schema.h gconf-value.h \
-- gconf.h gconf-schema.h gconf-engine.h gconf-enum-types.h \
-- gconfd.h gconf-database.h gconfd-dbus.h gconf-database-dbus.h
--gconftool.o: gconftool.c gconf.h gconf-schema.h gconf-value.h \
-- gconf-error.h gconf-engine.h gconf-enum-types.h \
-- gconf-internals.h ../config.h gconf-error.h gconf-value.h \
-- gconf-engine.h gconf-sources.h
--
--info-am:
--info: info-am
--dvi-am:
--dvi: dvi-am
-+ $(MAKE) $(AM_MAKEFLAGS) \
-+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
-+ dist-hook
- check-am: all-am
- check: check-am
--installcheck-am:
--installcheck: installcheck-am
--install-exec-am: install-libLTLIBRARIES install-binPROGRAMS \
-- install-libexecPROGRAMS
--install-exec: install-exec-am
-+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS)
-+install-binPROGRAMS: install-libLTLIBRARIES
-
--install-data-am: install-serviceDATA install-gconfincludeHEADERS \
-- install-data-local
--install-data: install-data-am
-
--install-am: all-am
-- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-+installdirs:
-+ $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) $(DESTDIR)$(libexecdir) $(DESTDIR)$(servicedir) $(DESTDIR)$(gconfincludedir)
- install: install-am
--uninstall-am: uninstall-libLTLIBRARIES uninstall-binPROGRAMS \
-- uninstall-libexecPROGRAMS uninstall-serviceDATA \
-- uninstall-gconfincludeHEADERS
-+install-exec: install-exec-am
-+install-data: install-data-am
- uninstall: uninstall-am
--all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS)
--all-redirect: all-am
--install-strip:
-- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
--installdirs:
-- $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) \
-- $(DESTDIR)$(libexecdir) $(DESTDIR)$(servicedir) \
-- $(DESTDIR)$(gconfincludedir)
-
-+install-am: all-am
-+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-+installcheck: installcheck-am
-+install-strip:
-+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+ `test -z '$(STRIP)' || \
-+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
- mostlyclean-generic:
-
- clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
- distclean-generic:
-- -rm -f Makefile $(CONFIG_CLEAN_FILES)
-- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-+ -rm -f $(CONFIG_CLEAN_FILES)
-
- maintainer-clean-generic:
--mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-binPROGRAMS \
-- mostlyclean-libexecPROGRAMS mostlyclean-tags \
-- mostlyclean-generic
-+ @echo "This command is intended for maintainers to use"
-+ @echo "it deletes files that may require special tools to rebuild."
-+clean: clean-am
-
--mostlyclean: mostlyclean-am
-+clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
-+ clean-libexecPROGRAMS clean-libtool mostlyclean-am
-
--clean-am: clean-libLTLIBRARIES clean-compile clean-libtool \
-- clean-binPROGRAMS clean-libexecPROGRAMS clean-tags \
-- clean-generic mostlyclean-am
-+distclean: distclean-am
-+ -rm -rf ./$(DEPDIR)
-+ -rm -f Makefile
-+distclean-am: clean-am distclean-compile distclean-generic \
-+ distclean-libtool distclean-tags
-
--clean: clean-am
-+dvi: dvi-am
-
--distclean-am: distclean-libLTLIBRARIES distclean-compile \
-- distclean-libtool distclean-binPROGRAMS \
-- distclean-libexecPROGRAMS distclean-tags \
-- distclean-generic clean-am
-- -rm -f libtool
-+dvi-am:
-
--distclean: distclean-am
-+info: info-am
-
--maintainer-clean-am: maintainer-clean-libLTLIBRARIES \
-- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-binPROGRAMS \
-- maintainer-clean-libexecPROGRAMS maintainer-clean-tags \
-- maintainer-clean-generic distclean-am
-- @echo "This command is intended for maintainers to use;"
-- @echo "it deletes files that may require special tools to rebuild."
-+info-am:
-+
-+install-data-am: install-data-local install-gconfincludeHEADERS \
-+ install-serviceDATA
-+
-+install-exec-am: install-binPROGRAMS install-libLTLIBRARIES \
-+ install-libexecPROGRAMS
-+
-+install-info: install-info-am
-+
-+install-man:
-+
-+installcheck-am:
-
- maintainer-clean: maintainer-clean-am
-+ -rm -rf ./$(DEPDIR)
-+ -rm -f Makefile
-+maintainer-clean-am: distclean-am maintainer-clean-generic
-
--.PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
--clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
--uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
--distclean-compile clean-compile maintainer-clean-compile \
--mostlyclean-libtool distclean-libtool clean-libtool \
--maintainer-clean-libtool mostlyclean-binPROGRAMS distclean-binPROGRAMS \
--clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \
--install-binPROGRAMS mostlyclean-libexecPROGRAMS \
--distclean-libexecPROGRAMS clean-libexecPROGRAMS \
--maintainer-clean-libexecPROGRAMS uninstall-libexecPROGRAMS \
--install-libexecPROGRAMS uninstall-serviceDATA install-serviceDATA \
--uninstall-gconfincludeHEADERS install-gconfincludeHEADERS tags \
--mostlyclean-tags distclean-tags clean-tags maintainer-clean-tags \
--distdir info-am info dvi-am dvi check check-am installcheck-am \
--installcheck install-exec-am install-exec install-data-local \
--install-data-am install-data install-am install uninstall-am uninstall \
--all-redirect all-am all installdirs mostlyclean-generic \
--distclean-generic clean-generic maintainer-clean-generic clean \
--mostlyclean distclean maintainer-clean
-+mostlyclean: mostlyclean-am
-+
-+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-+ mostlyclean-libtool
-+
-+pdf: pdf-am
-+
-+pdf-am:
-+
-+ps: ps-am
-+
-+ps-am:
-+
-+uninstall-am: uninstall-binPROGRAMS uninstall-gconfincludeHEADERS \
-+ uninstall-info-am uninstall-libLTLIBRARIES \
-+ uninstall-libexecPROGRAMS uninstall-serviceDATA
-+
-+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-+ clean-generic clean-libLTLIBRARIES clean-libexecPROGRAMS \
-+ clean-libtool ctags distclean distclean-compile \
-+ distclean-generic distclean-libtool distclean-tags distdir dvi \
-+ dvi-am info info-am install install-am install-binPROGRAMS \
-+ install-data install-data-am install-data-local install-exec \
-+ install-exec-am install-gconfincludeHEADERS install-info \
-+ install-info-am install-libLTLIBRARIES install-libexecPROGRAMS \
-+ install-man install-serviceDATA install-strip installcheck \
-+ installcheck-am installdirs maintainer-clean \
-+ maintainer-clean-generic mostlyclean mostlyclean-compile \
-+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-+ tags uninstall uninstall-am uninstall-binPROGRAMS \
-+ uninstall-gconfincludeHEADERS uninstall-info-am \
-+ uninstall-libLTLIBRARIES uninstall-libexecPROGRAMS \
-+ uninstall-serviceDATA
-
-
- $(libgconf_2_la_OBJECTS) $(gconftool_2_OBJECTS) $(gconfd_2_OBJECTS): $(built_sourcecode)
-@@ -767,7 +911,6 @@
- regenerate-built-sources:
- GCONF_SRCDIR=$(srcdir) $(srcdir)/regenerate-enum-header.sh $(gconf_headers)
- GCONF_SRCDIR=$(srcdir) $(srcdir)/regenerate-enum-footer.sh $(gconf_headers)
--
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
-diff -urN GConf-2.6.4/tests/Makefile.in GConf-2.6.4.new/tests/Makefile.in
---- GConf-2.6.4/tests/Makefile.in 2004-09-20 00:45:16.000000000 +0300
-+++ GConf-2.6.4.new/tests/Makefile.in 2005-03-05 11:07:06.000000000 +0200
-@@ -1,6 +1,8 @@
--# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-+# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# @configure_input@
-
--# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
-+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-+# Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -10,69 +12,57 @@
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
-
--
--SHELL = @SHELL@
-+@SET_MAKE@
-
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
--prefix = @prefix@
--exec_prefix = @exec_prefix@
--
--bindir = @bindir@
--sbindir = @sbindir@
--libexecdir = @libexecdir@
--datadir = @datadir@
--sysconfdir = @sysconfdir@
--sharedstatedir = @sharedstatedir@
--localstatedir = @localstatedir@
--libdir = @libdir@
--infodir = @infodir@
--mandir = @mandir@
--includedir = @includedir@
--oldincludedir = /usr/include
--
--DESTDIR =
--
- pkgdatadir = $(datadir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
--
- top_builddir = ..
-
--ACLOCAL = @ACLOCAL@
--AUTOCONF = @AUTOCONF@
--AUTOMAKE = @AUTOMAKE@
--AUTOHEADER = @AUTOHEADER@
--
-+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
--INSTALL_DATA = @INSTALL_DATA@
--INSTALL_SCRIPT = @INSTALL_SCRIPT@
--transform = @program_transform_name@
--
-+install_sh_DATA = $(install_sh) -c -m 644
-+install_sh_PROGRAM = $(install_sh) -c
-+install_sh_SCRIPT = $(install_sh) -c
-+INSTALL_HEADER = $(INSTALL_DATA)
-+transform = $(program_transform_name)
- NORMAL_INSTALL = :
- PRE_INSTALL = :
- POST_INSTALL = :
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
--host_alias = @host_alias@
- host_triplet = @host@
-+ACLOCAL = @ACLOCAL@
-+AMDEP_FALSE = @AMDEP_FALSE@
-+AMDEP_TRUE = @AMDEP_TRUE@
-+AMTAR = @AMTAR@
- AR = @AR@
- AS = @AS@
-+AUTOCONF = @AUTOCONF@
-+AUTOHEADER = @AUTOHEADER@
-+AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
--BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
- CATALOGS = @CATALOGS@
- CATOBJEXT = @CATOBJEXT@
- CC = @CC@
-+CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-+CPP = @CPP@
- CPPFLAGS = @CPPFLAGS@
- CXX = @CXX@
- CXXCPP = @CXXCPP@
-+CXXDEPMODE = @CXXDEPMODE@
-+CXXFLAGS = @CXXFLAGS@
-+CYGPATH_W = @CYGPATH_W@
- DATADIRNAME = @DATADIRNAME@
- DB2HTML = @DB2HTML@
- DBUS_SERVICE_DIR = @DBUS_SERVICE_DIR@
-+DEFS = @DEFS@
-+DEPDIR = @DEPDIR@
- DEPENDENT_CFLAGS = @DEPENDENT_CFLAGS@
- DEPENDENT_LIBS = @DEPENDENT_LIBS@
- DEPENDENT_WITH_GTK_CFLAGS = @DEPENDENT_WITH_GTK_CFLAGS@
-@@ -83,48 +73,73 @@
- DEPENDENT_WITH_XML_LIBS = @DEPENDENT_WITH_XML_LIBS@
- DLLTOOL = @DLLTOOL@
- ECHO = @ECHO@
-+ECHO_C = @ECHO_C@
-+ECHO_N = @ECHO_N@
-+ECHO_T = @ECHO_T@
- EGREP = @EGREP@
-+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
-+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
- EXEEXT = @EXEEXT@
- EXPANDED_SYSCONFDIR = @EXPANDED_SYSCONFDIR@
- F77 = @F77@
--GCJ = @GCJ@
--GCJFLAGS = @GCJFLAGS@
-+FFLAGS = @FFLAGS@
- GCONF_AGE = @GCONF_AGE@
- GCONF_CONFIG_SOURCE = @GCONF_CONFIG_SOURCE@
- GCONF_CURRENT = @GCONF_CURRENT@
-+GCONF_DBUS_CFLAGS = @GCONF_DBUS_CFLAGS@
-+GCONF_DBUS_LIBS = @GCONF_DBUS_LIBS@
- GCONF_IPC_CFLAGS = @GCONF_IPC_CFLAGS@
- GCONF_IPC_LIBS = @GCONF_IPC_LIBS@
-+GCONF_ORBIT_CFLAGS = @GCONF_ORBIT_CFLAGS@
-+GCONF_ORBIT_LIBS = @GCONF_ORBIT_LIBS@
- GCONF_REVISION = @GCONF_REVISION@
--GENCAT = @GENCAT@
- GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
- GMOFILES = @GMOFILES@
- GMSGFMT = @GMSGFMT@
- GTKDOC = @GTKDOC@
--GT_NO = @GT_NO@
--GT_YES = @GT_YES@
-+GTK_FALSE = @GTK_FALSE@
-+GTK_TRUE = @GTK_TRUE@
-+HAVE_DBUS_FALSE = @HAVE_DBUS_FALSE@
-+HAVE_DBUS_TRUE = @HAVE_DBUS_TRUE@
-+HAVE_DOCBOOK_FALSE = @HAVE_DOCBOOK_FALSE@
-+HAVE_DOCBOOK_TRUE = @HAVE_DOCBOOK_TRUE@
- HAVE_GTK_DOC = @HAVE_GTK_DOC@
--HAVE_LIB = @HAVE_LIB@
-+HAVE_GTK_DOC_FALSE = @HAVE_GTK_DOC_FALSE@
-+HAVE_GTK_DOC_TRUE = @HAVE_GTK_DOC_TRUE@
-+HAVE_ORBIT_FALSE = @HAVE_ORBIT_FALSE@
-+HAVE_ORBIT_TRUE = @HAVE_ORBIT_TRUE@
- HTML_DIR = @HTML_DIR@
--INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
- INDENT = @INDENT@
-+INSTALL_DATA = @INSTALL_DATA@
- INSTALL_GCONF_CONFIG_SOURCE = @INSTALL_GCONF_CONFIG_SOURCE@
-+INSTALL_PROGRAM = @INSTALL_PROGRAM@
-+INSTALL_SCRIPT = @INSTALL_SCRIPT@
-+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- INSTOBJEXT = @INSTOBJEXT@
--INTLDEPS = @INTLDEPS@
- INTLLIBS = @INTLLIBS@
--INTLOBJS = @INTLOBJS@
- LDFLAGS = @LDFLAGS@
--LIB = @LIB@
-+LIBOBJS = @LIBOBJS@
-+LIBS = @LIBS@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
--LTLIB = @LTLIB@
-+LTLIBOBJS = @LTLIBOBJS@
- MAINT = @MAINT@
-+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
- MAJOR_VERSION = @MAJOR_VERSION@
- MAKEINFO = @MAKEINFO@
- MKINSTALLDIRS = @MKINSTALLDIRS@
-+MSGFMT = @MSGFMT@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- ORBIT_IDL = @ORBIT_IDL@
- PACKAGE = @PACKAGE@
-+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-+PACKAGE_NAME = @PACKAGE_NAME@
-+PACKAGE_STRING = @PACKAGE_STRING@
-+PACKAGE_TARNAME = @PACKAGE_TARNAME@
-+PACKAGE_VERSION = @PACKAGE_VERSION@
-+PATH_SEPARATOR = @PATH_SEPARATOR@
- PC_REQUIRES = @PC_REQUIRES@
- PERL = @PERL@
- PKG_CONFIG = @PKG_CONFIG@
-@@ -133,20 +148,69 @@
- POSUB = @POSUB@
- PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
- PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-+PTHREADS_FALSE = @PTHREADS_FALSE@
-+PTHREADS_TRUE = @PTHREADS_TRUE@
- RANLIB = @RANLIB@
--RC = @RC@
- REBUILD = @REBUILD@
-+SET_MAKE = @SET_MAKE@
-+SHELL = @SHELL@
- STRIP = @STRIP@
--USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
- USE_NLS = @USE_NLS@
-+USE_SYSTEM_BUS_FALSE = @USE_SYSTEM_BUS_FALSE@
-+USE_SYSTEM_BUS_TRUE = @USE_SYSTEM_BUS_TRUE@
- VERSION = @VERSION@
-+XGETTEXT = @XGETTEXT@
- absolute_top_srcdir = @absolute_top_srcdir@
-+ac_ct_AR = @ac_ct_AR@
-+ac_ct_AS = @ac_ct_AS@
-+ac_ct_CC = @ac_ct_CC@
-+ac_ct_CXX = @ac_ct_CXX@
-+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-+ac_ct_F77 = @ac_ct_F77@
-+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-+ac_ct_RANLIB = @ac_ct_RANLIB@
-+ac_ct_STRIP = @ac_ct_STRIP@
-+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-+am__include = @am__include@
-+am__leading_dot = @am__leading_dot@
-+am__quote = @am__quote@
-+bindir = @bindir@
-+build = @build@
-+build_alias = @build_alias@
-+build_cpu = @build_cpu@
-+build_os = @build_os@
-+build_vendor = @build_vendor@
-+datadir = @datadir@
-+exec_prefix = @exec_prefix@
- gconflocaledir = @gconflocaledir@
--l = @l@
-+host = @host@
-+host_alias = @host_alias@
-+host_cpu = @host_cpu@
-+host_os = @host_os@
-+host_vendor = @host_vendor@
-+includedir = @includedir@
-+infodir = @infodir@
-+install_sh = @install_sh@
-+libdir = @libdir@
-+libexecdir = @libexecdir@
-+localstatedir = @localstatedir@
-+mandir = @mandir@
-+oldincludedir = @oldincludedir@
-+prefix = @prefix@
-+program_transform_name = @program_transform_name@
-+sbindir = @sbindir@
-+sharedstatedir = @sharedstatedir@
-+sysconfdir = @sysconfdir@
-+target_alias = @target_alias@
-
- EFENCE =
-
--INCLUDES = -I$(top_srcdir) -I$(top_builddir) $(DEPENDENT_CFLAGS) -DG_LOG_DOMAIN=\"GConf-Tests\" -DGCONF_ENABLE_INTERNALS=1
-+INCLUDES = -I$(top_srcdir) -I$(top_builddir) \
-+ $(DEPENDENT_CFLAGS) \
-+ -DG_LOG_DOMAIN=\"GConf-Tests\" -DGCONF_ENABLE_INTERNALS=1
-
-
- noinst_PROGRAMS = testgconf testlisteners testschemas testchangeset testencode testunique testpersistence testdirlist testaddress testbackend
-@@ -192,125 +256,191 @@
- testbackend_SOURCES = testbackend.c
-
- testbackend_LDADD = $(TESTLIBS)
-+subdir = tests
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = ../config.h
--CONFIG_CLEAN_FILES =
--noinst_PROGRAMS = testgconf$(EXEEXT) testlisteners$(EXEEXT) \
--testschemas$(EXEEXT) testchangeset$(EXEEXT) testencode$(EXEEXT) \
--testunique$(EXEEXT) testpersistence$(EXEEXT) testdirlist$(EXEEXT) \
--testaddress$(EXEEXT) testbackend$(EXEEXT)
--PROGRAMS = $(noinst_PROGRAMS)
--
--
--DEFS = @DEFS@ -I. -I$(srcdir) -I..
--LIBS = @LIBS@
--testgconf_OBJECTS = testgconf.$(OBJEXT)
--testgconf_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--testgconf_LDFLAGS =
--testlisteners_OBJECTS = testlisteners.$(OBJEXT)
--testlisteners_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--testlisteners_LDFLAGS =
--testschemas_OBJECTS = testschemas.$(OBJEXT)
--testschemas_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--testschemas_LDFLAGS =
--testchangeset_OBJECTS = testchangeset.$(OBJEXT)
--testchangeset_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--testchangeset_LDFLAGS =
--testencode_OBJECTS = testencode.$(OBJEXT)
--testencode_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--testencode_LDFLAGS =
--testunique_OBJECTS = testunique.$(OBJEXT)
--testunique_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--testunique_LDFLAGS =
--testpersistence_OBJECTS = testpersistence.$(OBJEXT)
--testpersistence_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--testpersistence_LDFLAGS =
--testdirlist_OBJECTS = testdirlist.$(OBJEXT)
--testdirlist_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--testdirlist_LDFLAGS =
--testaddress_OBJECTS = testaddress.$(OBJEXT)
--testaddress_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--testaddress_LDFLAGS =
--testbackend_OBJECTS = testbackend.$(OBJEXT)
--testbackend_DEPENDENCIES = \
--$(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
--testbackend_LDFLAGS =
--COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES =
-+noinst_PROGRAMS = testgconf$(EXEEXT) testlisteners$(EXEEXT) \
-+ testschemas$(EXEEXT) testchangeset$(EXEEXT) testencode$(EXEEXT) \
-+ testunique$(EXEEXT) testpersistence$(EXEEXT) \
-+ testdirlist$(EXEEXT) testaddress$(EXEEXT) testbackend$(EXEEXT)
-+PROGRAMS = $(noinst_PROGRAMS)
-+
-+am_testaddress_OBJECTS = testaddress.$(OBJEXT)
-+testaddress_OBJECTS = $(am_testaddress_OBJECTS)
-+testaddress_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+testaddress_LDFLAGS =
-+am_testbackend_OBJECTS = testbackend.$(OBJEXT)
-+testbackend_OBJECTS = $(am_testbackend_OBJECTS)
-+testbackend_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+testbackend_LDFLAGS =
-+am_testchangeset_OBJECTS = testchangeset.$(OBJEXT)
-+testchangeset_OBJECTS = $(am_testchangeset_OBJECTS)
-+testchangeset_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+testchangeset_LDFLAGS =
-+am_testdirlist_OBJECTS = testdirlist.$(OBJEXT)
-+testdirlist_OBJECTS = $(am_testdirlist_OBJECTS)
-+testdirlist_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+testdirlist_LDFLAGS =
-+am_testencode_OBJECTS = testencode.$(OBJEXT)
-+testencode_OBJECTS = $(am_testencode_OBJECTS)
-+testencode_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+testencode_LDFLAGS =
-+am_testgconf_OBJECTS = testgconf.$(OBJEXT)
-+testgconf_OBJECTS = $(am_testgconf_OBJECTS)
-+testgconf_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+testgconf_LDFLAGS =
-+am_testlisteners_OBJECTS = testlisteners.$(OBJEXT)
-+testlisteners_OBJECTS = $(am_testlisteners_OBJECTS)
-+testlisteners_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+testlisteners_LDFLAGS =
-+am_testpersistence_OBJECTS = testpersistence.$(OBJEXT)
-+testpersistence_OBJECTS = $(am_testpersistence_OBJECTS)
-+testpersistence_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+testpersistence_LDFLAGS =
-+am_testschemas_OBJECTS = testschemas.$(OBJEXT)
-+testschemas_OBJECTS = $(am_testschemas_OBJECTS)
-+testschemas_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+testschemas_LDFLAGS =
-+am_testunique_OBJECTS = testunique.$(OBJEXT)
-+testunique_OBJECTS = $(am_testunique_OBJECTS)
-+testunique_DEPENDENCIES = \
-+ $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+testunique_LDFLAGS =
-+
-+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-+depcomp = $(SHELL) $(top_srcdir)/depcomp
-+am__depfiles_maybe = depfiles
-+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/testaddress.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/testbackend.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/testchangeset.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/testdirlist.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/testencode.Po ./$(DEPDIR)/testgconf.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/testlisteners.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/testpersistence.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/testschemas.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/testunique.Po
-+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
-+ $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
- CCLD = $(CC)
--LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
--DIST_COMMON = Makefile.am Makefile.in
--
-+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+DIST_SOURCES = $(testaddress_SOURCES) $(testbackend_SOURCES) \
-+ $(testchangeset_SOURCES) $(testdirlist_SOURCES) \
-+ $(testencode_SOURCES) $(testgconf_SOURCES) \
-+ $(testlisteners_SOURCES) $(testpersistence_SOURCES) \
-+ $(testschemas_SOURCES) $(testunique_SOURCES)
-+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
-+SOURCES = $(testaddress_SOURCES) $(testbackend_SOURCES) $(testchangeset_SOURCES) $(testdirlist_SOURCES) $(testencode_SOURCES) $(testgconf_SOURCES) $(testlisteners_SOURCES) $(testpersistence_SOURCES) $(testschemas_SOURCES) $(testunique_SOURCES)
-
--DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-+all: all-am
-
--TAR = tar
--GZIP_ENV = --best
--SOURCES = $(testgconf_SOURCES) $(testlisteners_SOURCES) $(testschemas_SOURCES) $(testchangeset_SOURCES) $(testencode_SOURCES) $(testunique_SOURCES) $(testpersistence_SOURCES) $(testdirlist_SOURCES) $(testaddress_SOURCES) $(testbackend_SOURCES)
--OBJECTS = $(testgconf_OBJECTS) $(testlisteners_OBJECTS) $(testschemas_OBJECTS) $(testchangeset_OBJECTS) $(testencode_OBJECTS) $(testunique_OBJECTS) $(testpersistence_OBJECTS) $(testdirlist_OBJECTS) $(testaddress_OBJECTS) $(testbackend_OBJECTS)
--
--all: all-redirect
- .SUFFIXES:
--.SUFFIXES: .S .c .lo .o .obj .s
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps tests/Makefile
--
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-- cd $(top_builddir) \
-- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
--
--
--mostlyclean-noinstPROGRAMS:
-+.SUFFIXES: .c .lo .o .obj
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-+ cd $(top_srcdir) && \
-+ $(AUTOMAKE) --gnu tests/Makefile
-+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
-+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
- clean-noinstPROGRAMS:
-- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
--
--distclean-noinstPROGRAMS:
--
--maintainer-clean-noinstPROGRAMS:
--
--.c.o:
-- $(COMPILE) -c $<
--
--# FIXME: We should only use cygpath when building on Windows,
--# and only if it is available.
--.c.obj:
-- $(COMPILE) -c `cygpath -w $<`
--
--.s.o:
-- $(COMPILE) -c $<
--
--.S.o:
-- $(COMPILE) -c $<
-+ @list='$(noinst_PROGRAMS)'; for p in $$list; do \
-+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-+ echo " rm -f $$p $$f"; \
-+ rm -f $$p $$f ; \
-+ done
-+testaddress$(EXEEXT): $(testaddress_OBJECTS) $(testaddress_DEPENDENCIES)
-+ @rm -f testaddress$(EXEEXT)
-+ $(LINK) $(testaddress_LDFLAGS) $(testaddress_OBJECTS) $(testaddress_LDADD) $(LIBS)
-+testbackend$(EXEEXT): $(testbackend_OBJECTS) $(testbackend_DEPENDENCIES)
-+ @rm -f testbackend$(EXEEXT)
-+ $(LINK) $(testbackend_LDFLAGS) $(testbackend_OBJECTS) $(testbackend_LDADD) $(LIBS)
-+testchangeset$(EXEEXT): $(testchangeset_OBJECTS) $(testchangeset_DEPENDENCIES)
-+ @rm -f testchangeset$(EXEEXT)
-+ $(LINK) $(testchangeset_LDFLAGS) $(testchangeset_OBJECTS) $(testchangeset_LDADD) $(LIBS)
-+testdirlist$(EXEEXT): $(testdirlist_OBJECTS) $(testdirlist_DEPENDENCIES)
-+ @rm -f testdirlist$(EXEEXT)
-+ $(LINK) $(testdirlist_LDFLAGS) $(testdirlist_OBJECTS) $(testdirlist_LDADD) $(LIBS)
-+testencode$(EXEEXT): $(testencode_OBJECTS) $(testencode_DEPENDENCIES)
-+ @rm -f testencode$(EXEEXT)
-+ $(LINK) $(testencode_LDFLAGS) $(testencode_OBJECTS) $(testencode_LDADD) $(LIBS)
-+testgconf$(EXEEXT): $(testgconf_OBJECTS) $(testgconf_DEPENDENCIES)
-+ @rm -f testgconf$(EXEEXT)
-+ $(LINK) $(testgconf_LDFLAGS) $(testgconf_OBJECTS) $(testgconf_LDADD) $(LIBS)
-+testlisteners$(EXEEXT): $(testlisteners_OBJECTS) $(testlisteners_DEPENDENCIES)
-+ @rm -f testlisteners$(EXEEXT)
-+ $(LINK) $(testlisteners_LDFLAGS) $(testlisteners_OBJECTS) $(testlisteners_LDADD) $(LIBS)
-+testpersistence$(EXEEXT): $(testpersistence_OBJECTS) $(testpersistence_DEPENDENCIES)
-+ @rm -f testpersistence$(EXEEXT)
-+ $(LINK) $(testpersistence_LDFLAGS) $(testpersistence_OBJECTS) $(testpersistence_LDADD) $(LIBS)
-+testschemas$(EXEEXT): $(testschemas_OBJECTS) $(testschemas_DEPENDENCIES)
-+ @rm -f testschemas$(EXEEXT)
-+ $(LINK) $(testschemas_LDFLAGS) $(testschemas_OBJECTS) $(testschemas_LDADD) $(LIBS)
-+testunique$(EXEEXT): $(testunique_OBJECTS) $(testunique_DEPENDENCIES)
-+ @rm -f testunique$(EXEEXT)
-+ $(LINK) $(testunique_LDFLAGS) $(testunique_OBJECTS) $(testunique_LDADD) $(LIBS)
-
- mostlyclean-compile:
-- -rm -f *.o core *.core
-- -rm -f *.$(OBJEXT)
--
--clean-compile:
-+ -rm -f *.$(OBJEXT) core *.core
-
- distclean-compile:
- -rm -f *.tab.c
-
--maintainer-clean-compile:
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testaddress.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testbackend.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testchangeset.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testdirlist.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testencode.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testgconf.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlisteners.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpersistence.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testschemas.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testunique.Po@am__quote@
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+.c.o:
-+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-+@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-+@am__fastdepCC_TRUE@ fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
-
--.s.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+.c.obj:
-+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-+@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-+@am__fastdepCC_TRUE@ fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-
--.S.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+.c.lo:
-+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-+@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
-+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-+@am__fastdepCC_TRUE@ fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
-
- mostlyclean-libtool:
- -rm -f *.lo
-@@ -319,168 +449,182 @@
- -rm -rf .libs _libs
-
- distclean-libtool:
-+ -rm -f libtool
-+uninstall-info-am:
-
--maintainer-clean-libtool:
--
--testgconf$(EXEEXT): $(testgconf_OBJECTS) $(testgconf_DEPENDENCIES)
-- @rm -f testgconf$(EXEEXT)
-- $(LINK) $(testgconf_LDFLAGS) $(testgconf_OBJECTS) $(testgconf_LDADD) $(LIBS)
--
--testlisteners$(EXEEXT): $(testlisteners_OBJECTS) $(testlisteners_DEPENDENCIES)
-- @rm -f testlisteners$(EXEEXT)
-- $(LINK) $(testlisteners_LDFLAGS) $(testlisteners_OBJECTS) $(testlisteners_LDADD) $(LIBS)
--
--testschemas$(EXEEXT): $(testschemas_OBJECTS) $(testschemas_DEPENDENCIES)
-- @rm -f testschemas$(EXEEXT)
-- $(LINK) $(testschemas_LDFLAGS) $(testschemas_OBJECTS) $(testschemas_LDADD) $(LIBS)
--
--testchangeset$(EXEEXT): $(testchangeset_OBJECTS) $(testchangeset_DEPENDENCIES)
-- @rm -f testchangeset$(EXEEXT)
-- $(LINK) $(testchangeset_LDFLAGS) $(testchangeset_OBJECTS) $(testchangeset_LDADD) $(LIBS)
--
--testencode$(EXEEXT): $(testencode_OBJECTS) $(testencode_DEPENDENCIES)
-- @rm -f testencode$(EXEEXT)
-- $(LINK) $(testencode_LDFLAGS) $(testencode_OBJECTS) $(testencode_LDADD) $(LIBS)
--
--testunique$(EXEEXT): $(testunique_OBJECTS) $(testunique_DEPENDENCIES)
-- @rm -f testunique$(EXEEXT)
-- $(LINK) $(testunique_LDFLAGS) $(testunique_OBJECTS) $(testunique_LDADD) $(LIBS)
--
--testpersistence$(EXEEXT): $(testpersistence_OBJECTS) $(testpersistence_DEPENDENCIES)
-- @rm -f testpersistence$(EXEEXT)
-- $(LINK) $(testpersistence_LDFLAGS) $(testpersistence_OBJECTS) $(testpersistence_LDADD) $(LIBS)
--
--testdirlist$(EXEEXT): $(testdirlist_OBJECTS) $(testdirlist_DEPENDENCIES)
-- @rm -f testdirlist$(EXEEXT)
-- $(LINK) $(testdirlist_LDFLAGS) $(testdirlist_OBJECTS) $(testdirlist_LDADD) $(LIBS)
--
--testaddress$(EXEEXT): $(testaddress_OBJECTS) $(testaddress_DEPENDENCIES)
-- @rm -f testaddress$(EXEEXT)
-- $(LINK) $(testaddress_LDFLAGS) $(testaddress_OBJECTS) $(testaddress_LDADD) $(LIBS)
-+ETAGS = etags
-+ETAGSFLAGS =
-
--testbackend$(EXEEXT): $(testbackend_OBJECTS) $(testbackend_DEPENDENCIES)
-- @rm -f testbackend$(EXEEXT)
-- $(LINK) $(testbackend_LDFLAGS) $(testbackend_OBJECTS) $(testbackend_LDADD) $(LIBS)
-+CTAGS = ctags
-+CTAGSFLAGS =
-
- tags: TAGS
-
--ID: $(HEADERS) $(SOURCES) $(LISP)
-- list='$(SOURCES) $(HEADERS)'; \
-- unique=`for i in $$list; do echo $$i; done | \
-- awk ' { files[$$0] = 1; } \
-+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
-- here=`pwd` && cd $(srcdir) \
-- && mkid -f$$here/ID $$unique $(LISP)
-+ mkid -fID $$unique
-
--TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
-+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
-- list='$(SOURCES) $(HEADERS)'; \
-- unique=`for i in $$list; do echo $$i; done | \
-- awk ' { files[$$0] = 1; } \
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
-- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
--
--mostlyclean-tags:
--
--clean-tags:
-+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
-+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+ $$tags $$unique
-+
-+ctags: CTAGS
-+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
-+ tags=; \
-+ here=`pwd`; \
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
-+ END { for (i in files) print i; }'`; \
-+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
-+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-+ $$tags $$unique
-+
-+GTAGS:
-+ here=`$(am__cd) $(top_builddir) && pwd` \
-+ && cd $(top_srcdir) \
-+ && gtags -i $(GTAGS_ARGS) $$here
-
- distclean-tags:
-- -rm -f TAGS ID
--
--maintainer-clean-tags:
--
--distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
--subdir = tests
-+top_distdir = ..
-+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
- distdir: $(DISTFILES)
-- @for file in $(DISTFILES); do \
-- d=$(srcdir); \
-+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-+ list='$(DISTFILES)'; for file in $$list; do \
-+ case $$file in \
-+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-+ esac; \
-+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-+ dir="/$$dir"; \
-+ $(mkinstalldirs) "$(distdir)$$dir"; \
-+ else \
-+ dir=''; \
-+ fi; \
- if test -d $$d/$$file; then \
-- cp -pr $$d/$$file $(distdir)/$$file; \
-+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-+ fi; \
-+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
-- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
-- || cp -p $$d/$$file $(distdir)/$$file || :; \
-+ || cp -p $$d/$$file $(distdir)/$$file \
-+ || exit 1; \
- fi; \
- done
--
--info-am:
--info: info-am
--dvi-am:
--dvi: dvi-am
- check-am: all-am
- check: check-am
--installcheck-am:
--installcheck: installcheck-am
--install-exec-am:
--install-exec: install-exec-am
-+all-am: Makefile $(PROGRAMS)
-
--install-data-am:
-+installdirs:
-+install: install-am
-+install-exec: install-exec-am
- install-data: install-data-am
-+uninstall: uninstall-am
-
- install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
--install: install-am
--uninstall-am:
--uninstall: uninstall-am
--all-am: Makefile $(PROGRAMS)
--all-redirect: all-am
--install-strip:
-- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
--installdirs:
--
-
-+installcheck: installcheck-am
-+install-strip:
-+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+ `test -z '$(STRIP)' || \
-+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
- mostlyclean-generic:
-
- clean-generic:
-
- distclean-generic:
-- -rm -f Makefile $(CONFIG_CLEAN_FILES)
-- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-+ -rm -f $(CONFIG_CLEAN_FILES)
-
- maintainer-clean-generic:
--mostlyclean-am: mostlyclean-noinstPROGRAMS mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-- mostlyclean-generic
-+ @echo "This command is intended for maintainers to use"
-+ @echo "it deletes files that may require special tools to rebuild."
-+clean: clean-am
-
--mostlyclean: mostlyclean-am
-+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-+ mostlyclean-am
-
--clean-am: clean-noinstPROGRAMS clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+distclean: distclean-am
-+ -rm -rf ./$(DEPDIR)
-+ -rm -f Makefile
-+distclean-am: clean-am distclean-compile distclean-generic \
-+ distclean-libtool distclean-tags
-
--clean: clean-am
-+dvi: dvi-am
-
--distclean-am: distclean-noinstPROGRAMS distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-- -rm -f libtool
-+dvi-am:
-
--distclean: distclean-am
-+info: info-am
-
--maintainer-clean-am: maintainer-clean-noinstPROGRAMS \
-- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-- @echo "This command is intended for maintainers to use;"
-- @echo "it deletes files that may require special tools to rebuild."
-+info-am:
-+
-+install-data-am:
-+
-+install-exec-am:
-+
-+install-info: install-info-am
-+
-+install-man:
-+
-+installcheck-am:
-
- maintainer-clean: maintainer-clean-am
-+ -rm -rf ./$(DEPDIR)
-+ -rm -f Makefile
-+maintainer-clean-am: distclean-am maintainer-clean-generic
-+
-+mostlyclean: mostlyclean-am
-+
-+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-+ mostlyclean-libtool
-+
-+pdf: pdf-am
-+
-+pdf-am:
-+
-+ps: ps-am
-+
-+ps-am:
-
--.PHONY: mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \
--clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \
--mostlyclean-compile distclean-compile clean-compile \
--maintainer-clean-compile mostlyclean-libtool distclean-libtool \
--clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+uninstall-am: uninstall-info-am
-
-+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-+ clean-libtool clean-noinstPROGRAMS ctags distclean \
-+ distclean-compile distclean-generic distclean-libtool \
-+ distclean-tags distdir dvi dvi-am info info-am install \
-+ install-am install-data install-data-am install-exec \
-+ install-exec-am install-info install-info-am install-man \
-+ install-strip installcheck installcheck-am installdirs \
-+ maintainer-clean maintainer-clean-generic mostlyclean \
-+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \
-+ pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/packages/maemo/gconf-osso/service-file.diff b/packages/maemo/gconf-osso/service-file.diff
deleted file mode 100644
index 7de17fd05f..0000000000
--- a/packages/maemo/gconf-osso/service-file.diff
+++ /dev/null
@@ -1,9 +0,0 @@
-diff -ur GConf-2.6.4/gconf/gconf.service.in GConf-2.6.4.new/gconf/gconf.service.in
---- GConf-2.6.4/gconf/gconf.service.in 2004-09-19 15:29:37.000000000 +0300
-+++ GConf-2.6.4.new/gconf/gconf.service.in 2005-03-14 17:33:08.474147816 +0200
-@@ -1,3 +1,3 @@
- [D-BUS Service]
- Name=org.gnome.GConf
--Exec=@libexecdir@/gconfd-2
-+Exec=/etc/osso-af-init/gconf-daemon-dbus.sh
-Only in GConf-2.6.4.new/gconf: gconf.service.in~
diff --git a/packages/maemo/gconf-osso_2.6.4-3.1osso13.bb b/packages/maemo/gconf-osso_2.6.4-3.1osso13.bb
deleted file mode 100644
index 6b7eddb03b..0000000000
--- a/packages/maemo/gconf-osso_2.6.4-3.1osso13.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SECTION = "x11/utils"
-DEPENDS = "gtk+ glib-2.0 dbus libxml2 popt"
-DESCRIPTION = "Settings daemon using DBUS for communication (osso version)."
-LICENSE = "GPL"
-PROVIDES = "gconf"
-RPROVIDES = "gconf"
-
-PR = "r3"
-
-SRC_URI = "http://repository.maemo.org/pool/maemo/ossw/source/g/gconf2/gconf2_${PV}.tar.gz \
- file://gconf-update.patch;patch=1;pnum=0 \
- file://free-entry-fix.diff;patch=1 \
- file://no-po-no-examples.diff;patch=1 \
- file://service-file.diff;patch=1 \
- file://gconf-daemon-dbus-oe.sh \
- file://gconf-daemon-oe.sh"
-
-S = "${WORKDIR}/gconf2-2.6.4/GConf-2.6.4"
-
-
-inherit pkgconfig autotools
-
-FILES_${PN} += "${sysconfdir} ${libdir}/dbus-1.0/ ${libdir}/GConf ${datadir}/sgml"
-
-EXTRA_OECONF = " --with-ipc=dbus --disable-gtk-doc --enable-gtk --host=${HOST_SYS} --enable-shared --disable-static"
-
-HEADERS = "gconf.h gconf-changeset.h gconf-listeners.h gconf-schema.h gconf-value.h gconf-error.h gconf-engine.h gconf-client.h gconf-enum-types.h"
-
-do_install_append () {
- install -d ${D}/${sysconfdir}/osso-af-init
- install -m755 ${WORKDIR}/gconf-daemon-oe.sh ${D}${sysconfdir}/osso-af-init/gconf-daemon.sh
- install -m755 ${WORKDIR}/gconf-daemon-dbus-oe.sh ${D}${sysconfdir}/osso-af-init/gconf-daemon-dbus.sh
- install -d ${D}${sysconfdir}/osso-af-init/gconf-dir
- install -d ${D}/var/lib/gconf
-}
-
-do_stage() {
- oe_libinstall -so -C gconf libgconf-2 ${STAGING_LIBDIR}
- install -d ${STAGING_INCDIR}/gconf/2/gconf/
- ( cd gconf; for i in ${HEADERS}; do install -m 0644 $i ${STAGING_INCDIR}/gconf/2/gconf/$i; done )
- install -m 0644 gconf.m4 ${STAGING_DATADIR}/aclocal/gconf-2.m4
-}
diff --git a/packages/maemo/osso-gnome-vfs2/gconftool-lossage.patch b/packages/maemo/osso-gnome-vfs2/gconftool-lossage.patch
deleted file mode 100644
index 3dbc130ddc..0000000000
--- a/packages/maemo/osso-gnome-vfs2/gconftool-lossage.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gnome-vfs-2.6.0/configure.in~ 2004-03-22 12:36:23.000000000 +0000
-+++ gnome-vfs-2.6.0/configure.in 2004-06-07 16:04:34.000000000 +0100
-@@ -154,7 +154,7 @@
- AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
-
- if test x"$GCONFTOOL" = xno; then
-- AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf])
-+ AC_MSG_WARN([gconftool-2 executable not found in your path - should be installed with GConf])
- fi
-
- AM_GCONF_SOURCE_2
diff --git a/packages/maemo3/.mtn2git_empty b/packages/maemo3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/maemo3/.mtn2git_empty
diff --git a/packages/maemo3/hildon-base-lib_0.11.1.bb b/packages/maemo3/hildon-base-lib_0.11.1.bb
new file mode 100644
index 0000000000..ce3f667a00
--- /dev/null
+++ b/packages/maemo3/hildon-base-lib_0.11.1.bb
@@ -0,0 +1,13 @@
+LICENSE = "LGPL"
+
+DEPENDS = "gtk+ virtual/libx11"
+
+SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-1.tar.gz"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/maemo3/hildon-lgpl_0.12.1.bb b/packages/maemo3/hildon-lgpl_0.12.1.bb
new file mode 100644
index 0000000000..02bbad9dd2
--- /dev/null
+++ b/packages/maemo3/hildon-lgpl_0.12.1.bb
@@ -0,0 +1,10 @@
+LICENSE = "LGPL"
+
+SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-4.tar.gz"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/maemo3/libgpsbt_0.1.bb b/packages/maemo3/libgpsbt_0.1.bb
new file mode 100644
index 0000000000..59d0db9fbc
--- /dev/null
+++ b/packages/maemo3/libgpsbt_0.1.bb
@@ -0,0 +1,13 @@
+LICENSE = "nokia"
+
+DEPENDS = "libgpsmgr dbus-glib"
+
+SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-18.tar.gz"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/maemo3/libgpsmgr_0.1.bb b/packages/maemo3/libgpsmgr_0.1.bb
new file mode 100644
index 0000000000..f0fc14bae9
--- /dev/null
+++ b/packages/maemo3/libgpsmgr_0.1.bb
@@ -0,0 +1,11 @@
+LICENSE = "nokia"
+
+SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-10.tar.gz"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/maemo3/libosso-gsf_1.11.10.4.bb b/packages/maemo3/libosso-gsf_1.11.10.4.bb
new file mode 100644
index 0000000000..8888ac7780
--- /dev/null
+++ b/packages/maemo3/libosso-gsf_1.11.10.4.bb
@@ -0,0 +1,20 @@
+LICENSE = "GPL"
+
+DEPENDS = "glib-2.0 zlib"
+
+SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-1.tar.gz"
+
+inherit autotools pkgconfig
+
+
+do_configure() {
+ gnu-configize
+ libtoolize --force
+ oe_runconf
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/maemo3/libosso_1.20.bb b/packages/maemo3/libosso_1.20.bb
new file mode 100644
index 0000000000..13daf0b10c
--- /dev/null
+++ b/packages/maemo3/libosso_1.20.bb
@@ -0,0 +1,19 @@
+LICENSE = "LGPL"
+
+DEPENDS = "dbus-glib glib-2.0 outo"
+
+SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-1.tar.gz"
+
+inherit autotools pkgconfig
+
+
+do_configure_prepend() {
+ # remove Werror from OSSO_CFLAGS
+ sed -i s:-Werror::g configure.ac
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/maemo3/mce-dev_1.5.6.bb b/packages/maemo3/mce-dev_1.5.6.bb
new file mode 100644
index 0000000000..dd1fcf364a
--- /dev/null
+++ b/packages/maemo3/mce-dev_1.5.6.bb
@@ -0,0 +1,15 @@
+LICENSE = "LGPL"
+
+SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+do_compile() {
+ sed -i 's:@$(DOXYGEN):echo:g' Makefile
+ sed -i 's:-o\ root\ -g\ root::' Makefile
+}
+
+do_stage() {
+ autotools_stage_includes
+}
+
diff --git a/packages/maemo/outo_0.1.1.bb b/packages/maemo3/outo_0.1.1.bb
index 7fe0343691..7fe0343691 100644
--- a/packages/maemo/outo_0.1.1.bb
+++ b/packages/maemo3/outo_0.1.1.bb
diff --git a/packages/matchbox-common/matchbox_0.9.1.bb b/packages/matchbox-common/matchbox_0.9.1.bb
index 701c2bc302..cda90dfb50 100644
--- a/packages/matchbox-common/matchbox_0.9.1.bb
+++ b/packages/matchbox-common/matchbox_0.9.1.bb
@@ -1,7 +1,8 @@
DESCRIPTION = "Metapackage for Matchbox suite"
LICENSE = "GPL"
-DEPENDS = "matchbox-common matchbox-wm matchbox-panel matchbox-desktop"
RDEPENDS = "matchbox-common matchbox-wm matchbox-panel matchbox-desktop"
SECTION = "x11/wm"
-PACKAGES= "${PN}"
+PACKAGES = "${PN}"
+PR = "r1"
+
ALLOW_EMPTY = "1"
diff --git a/packages/matchbox-keyboard/files/.mtn2git_empty b/packages/matchbox-keyboard/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/matchbox-keyboard/files/.mtn2git_empty
diff --git a/packages/matchbox-keyboard/files/smallscreen-fontsize.patch b/packages/matchbox-keyboard/files/smallscreen-fontsize.patch
new file mode 100644
index 0000000000..9a5f7a32a1
--- /dev/null
+++ b/packages/matchbox-keyboard/files/smallscreen-fontsize.patch
@@ -0,0 +1,22 @@
+--- matchbox-keyboard-0.1/src/matchbox-keyboard.c.orig 2006-11-04 00:41:52.000000000 +0100
++++ matchbox-keyboard-0.1/src/matchbox-keyboard.c 2006-11-04 00:29:25.000000000 +0100
+@@ -77,7 +77,7 @@
+ kb->key_pad = 0;
+ kb->col_spacing = 0;
+ kb->row_spacing = 0;
+- kb->font_pt_size = 8;
++ kb->font_pt_size = 5;
+ }
+
+ if (!mb_kbd_config_load(kb, variant))
+--- matchbox-keyboard-0.1/src/matchbox-keyboard-ui.c.org 2006-07-14 00:50:25.000000000 +0000
++++ matchbox-keyboard-0.1/src/matchbox-keyboard-ui.c 2007-02-09 17:38:19.000000000 +0000
+@@ -291,7 +291,7 @@
+ /* FIXME: hack for small displays */
+ if (mb_kbd_ui_display_height(ui) <= 320)
+ {
+- *height += 4;
++ *height += 1;
+ }
+
+ }
diff --git a/packages/matchbox-keyboard/matchbox-keyboard_svn.bb b/packages/matchbox-keyboard/matchbox-keyboard_svn.bb
index e0c3e4d578..8c7584d4f4 100644
--- a/packages/matchbox-keyboard/matchbox-keyboard_svn.bb
+++ b/packages/matchbox-keyboard/matchbox-keyboard_svn.bb
@@ -3,9 +3,10 @@ LICENSE = "GPL"
DEPENDS = "libfakekey expat libxft"
SECTION = "x11"
PV = "0.0+svn${SRCDATE}"
-PR="r2"
+PR="r3"
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http"
+SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \
+ file://smallscreen-fontsize.patch;patch=1"
S = "${WORKDIR}/${PN}"
diff --git a/packages/matchbox-panel/matchbox-panel.inc b/packages/matchbox-panel/matchbox-panel.inc
index 44bbae6870..d81d38b285 100644
--- a/packages/matchbox-panel/matchbox-panel.inc
+++ b/packages/matchbox-panel/matchbox-panel.inc
@@ -3,21 +3,14 @@ LICENSE = "GPL"
DEPENDS = "libmatchbox virtual/libx11 libxext libxpm apmd startup-notification virtual/kernel wireless-tools"
SECTION = "x11/wm"
-PR = "r1"
+PR = "r3"
inherit autotools pkgconfig gettext
CFLAGS += "-D_GNU_SOURCE"
EXTRA_OECONF = " --enable-startup-notification --enable-dnotify "
-EXTRA_OECONF_append_h3600 = " --enable-small-icons "
-EXTRA_OECONF_append_h3900 = " --enable-small-icons "
-EXTRA_OECONF_append_h2200 = " --enable-small-icons "
-EXTRA_OECONF_append_h4000 = " --enable-small-icons "
-EXTRA_OECONF_append_collie = " --enable-small-icons "
-EXTRA_OECONF_append_poodle = " --enable-small-icons "
-EXTRA_OECONF_append_mnci = " --enable-small-icons "
-EXTRA_OECONF_append_integral13 = " --enable-small-icons "
+EXTRA_OECONF_append = '${@base_conditional("GUI_MACHINE_CLASS", "bigscreen", "", " --enable-small-icons ", d)}'
PACKAGE_ARCH = "${MACHINE}"
FILES_${PN} = "${bindir}/* \
diff --git a/packages/matchbox-panel/matchbox-panel_0.9.3.bb b/packages/matchbox-panel/matchbox-panel_0.9.3.bb
index 7eb3a1be42..c6b0ee305e 100644
--- a/packages/matchbox-panel/matchbox-panel_0.9.3.bb
+++ b/packages/matchbox-panel/matchbox-panel_0.9.3.bb
@@ -1,4 +1,4 @@
require matchbox-panel.inc
-PR="r0"
+PR="r3"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/${PN}/0.9/${PN}-${PV}.tar.gz \
file://mb-applet-battery-repaint-093.patch;patch=1"
diff --git a/packages/matchbox-themes-extra/matchbox-theme-sato_svn.bb b/packages/matchbox-themes-extra/matchbox-theme-sato_svn.bb
new file mode 100644
index 0000000000..5d91a47984
--- /dev/null
+++ b/packages/matchbox-themes-extra/matchbox-theme-sato_svn.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Matchbox window manager Sato theme"
+LICENSE = "GPL"
+DEPENDS = "matchbox-wm"
+SECTION = "x11/wm"
+
+PV = "0.0.1+svn${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "svn://svn.o-hand.com/repos/sato/trunk;module=matchbox-sato;proto=http"
+S = "${WORKDIR}/matchbox-sato"
+FILES_${PN} = "${datadir}/themes/Sato"
+
+inherit autotools pkgconfig
+
+
diff --git a/packages/matchbox-wm/matchbox-wm/gconf-2.m4 b/packages/matchbox-wm/matchbox-wm/gconf-2.m4
new file mode 100644
index 0000000000..aca7c7da45
--- /dev/null
+++ b/packages/matchbox-wm/matchbox-wm/gconf-2.m4
@@ -0,0 +1,39 @@
+dnl AM_GCONF_SOURCE_2
+dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas
+dnl (i.e. pass to gconftool-2
+dnl Defines GCONF_SCHEMA_FILE_DIR which is a filesystem directory where
+dnl you should install foo.schemas files
+dnl
+
+AC_DEFUN([AM_GCONF_SOURCE_2],
+[
+ if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
+ GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
+ else
+ GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
+ fi
+
+ AC_ARG_WITH(gconf-source,
+ [ --with-gconf-source=sourceaddress Config database for installing schema files.],GCONF_SCHEMA_CONFIG_SOURCE="$withval",)
+
+ AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE)
+ AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation])
+
+ if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
+ GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
+ fi
+
+ AC_ARG_WITH(gconf-schema-file-dir,
+ [ --with-gconf-schema-file-dir=dir Directory for installing schema files.],GCONF_SCHEMA_FILE_DIR="$withval",)
+
+ AC_SUBST(GCONF_SCHEMA_FILE_DIR)
+ AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files])
+
+ AC_ARG_ENABLE(schemas-install,
+ [ --disable-schemas-install Disable the schemas installation],
+ [case ${enableval} in
+ yes|no) ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-schemas-install) ;;
+ esac])
+ AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [test "$enable_schemas_install" != no])
+])
diff --git a/packages/matchbox-wm/matchbox-wm_1.2.bb b/packages/matchbox-wm/matchbox-wm_1.2.bb
new file mode 100644
index 0000000000..ad7c31d3ed
--- /dev/null
+++ b/packages/matchbox-wm/matchbox-wm_1.2.bb
@@ -0,0 +1,41 @@
+require matchbox-wm.inc
+
+DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf gconf-native matchbox-common"
+RDEPENDS = "matchbox-common"
+
+PR="r0"
+
+SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/1.2/matchbox-window-manager-${PV}.tar.bz2 \
+ file://gconf-2.m4 \
+ file://kbdconfig"
+
+S = "${WORKDIR}/matchbox-window-manager-${PV}"
+
+inherit autotools pkgconfig update-alternatives
+
+FILES_${PN} = "${bindir}/* \
+ ${datadir}/matchbox \
+ ${sysconfdir}/matchbox \
+ ${datadir}/themes/blondie/matchbox \
+ ${datadir}/themes/Default/matchbox \
+ ${datadir}/themes/MBOpus/matchbox"
+
+ALTERNATIVE_NAME = "x-window-manager"
+ALTERNATIVE_LINK = "${bindir}/x-window-manager"
+ALTERNATIVE_PATH = "${bindir}/matchbox-session"
+ALTERNATIVE_PRIORITY = "10"
+
+EXTRA_OECONF = " \
+ --enable-startup-notification\
+ --enable-gconf \
+ --enable-expat \
+ --disable-xrm"
+
+do_configure_prepend () {
+ cp ${WORKDIR}/gconf-2.m4 ${S}/
+}
+
+do_install_prepend() {
+ install ${WORKDIR}/kbdconfig ${S}/data/kbdconfig
+}
+
diff --git a/packages/matchbox2/.mtn2git_empty b/packages/matchbox2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/matchbox2/.mtn2git_empty
diff --git a/packages/matchbox2/files/.mtn2git_empty b/packages/matchbox2/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/matchbox2/files/.mtn2git_empty
diff --git a/packages/matchbox2/files/glib-2.8-backport.patch b/packages/matchbox2/files/glib-2.8-backport.patch
new file mode 100644
index 0000000000..339477de70
--- /dev/null
+++ b/packages/matchbox2/files/glib-2.8-backport.patch
@@ -0,0 +1,110 @@
+Index: matchbox-panel-2/applets/windowselector/windowselector.c
+===================================================================
+--- matchbox-panel-2.orig/applets/windowselector/windowselector.c 2007-01-24 19:24:27.000000000 +0100
++++ matchbox-panel-2/applets/windowselector/windowselector.c 2007-01-25 02:34:21.000000000 +0100
+@@ -56,7 +56,7 @@
+ applet);
+ }
+
+- g_slice_free (WindowSelectorApplet, applet);
++ g_free (applet);
+ }
+
+ /* Retrieves the UTF-8 property @atom from @window */
+@@ -673,7 +673,7 @@
+ GtkWidget *menu_bar, *menu_item, *image;
+
+ /* Create applet data structure */
+- applet = g_slice_new (WindowSelectorApplet);
++ applet = g_new (WindowSelectorApplet,1);
+
+ applet->root_window = NULL;
+ applet->menu = NULL;
+Index: matchbox-panel-2/applets/battery/battery.c
+===================================================================
+--- matchbox-panel-2.orig/applets/battery/battery.c 2007-01-24 19:24:28.000000000 +0100
++++ matchbox-panel-2/applets/battery/battery.c 2007-01-25 02:34:21.000000000 +0100
+@@ -24,7 +24,7 @@
+ {
+ g_source_remove (applet->timeout_id);
+
+- g_slice_free (BatteryApplet, applet);
++ g_free (applet);
+ }
+
+ /* Called every 5 minutes */
+@@ -97,7 +97,7 @@
+ }
+
+ /* Create applet data structure */
+- applet = g_slice_new (BatteryApplet);
++ applet = g_new (BatteryApplet,1);
+
+ applet->last_icon = NULL;
+
+Index: matchbox-panel-2/applets/showdesktop/showdesktop.c
+===================================================================
+--- matchbox-panel-2.orig/applets/showdesktop/showdesktop.c 2007-01-24 19:24:28.000000000 +0100
++++ matchbox-panel-2/applets/showdesktop/showdesktop.c 2007-01-25 02:34:21.000000000 +0100
+@@ -36,7 +36,7 @@
+ applet);
+ }
+
+- g_slice_free (ShowDesktopApplet, applet);
++ g_free (applet);
+ }
+
+ /* Sync @applet with the _NET_SHOWING_DESKTOP root window property */
+@@ -180,7 +180,7 @@
+ GtkWidget *button, *image;
+
+ /* Create applet data structure */
+- applet = g_slice_new (ShowDesktopApplet);
++ applet = g_new (ShowDesktopApplet,1);
+
+ applet->block_toggle = FALSE;
+ applet->root_window = NULL;
+Index: matchbox-panel-2/applets/launcher/launcher.c
+===================================================================
+--- matchbox-panel-2.orig/applets/launcher/launcher.c 2007-01-24 19:24:27.000000000 +0100
++++ matchbox-panel-2/applets/launcher/launcher.c 2007-01-25 02:35:40.000000000 +0100
+@@ -36,7 +36,7 @@
+ g_free (applet->name);
+ g_strfreev (applet->argv);
+
+- g_slice_free (LauncherApplet, applet);
++ g_free (applet);
+ }
+
+ /* Convert command line to argv array, stripping % conversions on the way */
+@@ -335,7 +335,7 @@
+ gtk_container_add (GTK_CONTAINER (event_box), image);
+
+ /* Set up applet structure */
+- applet = g_slice_new (LauncherApplet);
++ applet = g_new (LauncherApplet,1);
+
+ applet->image = GTK_IMAGE (image);
+
+Index: matchbox-panel-2/applets/clock/clock.c
+===================================================================
+--- matchbox-panel-2.orig/applets/clock/clock.c 2007-01-24 19:24:28.000000000 +0100
++++ matchbox-panel-2/applets/clock/clock.c 2007-01-25 02:35:25.000000000 +0100
+@@ -21,7 +21,7 @@
+ {
+ g_source_remove (applet->timeout_id);
+
+- g_slice_free (ClockApplet, applet);
++ g_free (applet);
+ }
+
+ /* Called every minute */
+@@ -67,7 +67,7 @@
+ struct tm *local_time;
+
+ /* Create applet data structure */
+- applet = g_slice_new (ClockApplet);
++ applet = g_new (ClockApplet,1);
+
+ /* Create label */
+ label = gtk_label_new (NULL);
diff --git a/packages/matchbox2/matchbox-panel-2_svn.bb b/packages/matchbox2/matchbox-panel-2_svn.bb
new file mode 100644
index 0000000000..be2e7f39cf
--- /dev/null
+++ b/packages/matchbox2/matchbox-panel-2_svn.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "matchbox-panel-2 is a lightweight dock (system tray) application based on Gtk+"
+LICENSE = "GPL"
+SECTION = "x11/panels"
+DEPENDS = "gtk+"
+
+PV = "0.1+svn${SRCDATE}"
+PR = "r6"
+
+SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http"
+S = "${WORKDIR}/${PN}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-startup-notification --disable-libnotify"
+
+# matchbox-<anything>-2 aims to replace their -1 counterpart, but at this point in time it's unfinished and unusable, so make it parallel installable
+do_install_append() {
+ mv ${D}${bindir}/matchbox-panel ${D}${bindir}/matchbox-panel-2
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+PACKAGES += "${PN}-applets"
+FILES_${PN}-applets = "${libdir}/matchbox-panel/lib*.so* ${datadir}/*"
+
diff --git a/packages/mb-desktop-xine/mb-desktop-xine_0.4.bb b/packages/mb-desktop-xine/mb-desktop-xine_0.4.bb
index 885177de01..e7a933ee0c 100644
--- a/packages/mb-desktop-xine/mb-desktop-xine_0.4.bb
+++ b/packages/mb-desktop-xine/mb-desktop-xine_0.4.bb
@@ -1,8 +1,6 @@
DESCRIPTION = "foo"
-LICENSE = "GPL"
HOMEPAGE = "http://projects.o-hand.com/matchbox/"
-
-SRC_URI="http://projects.o-hand.com/matchbox/sources/mb-desktop-xine/0.4/mb-desktop-xine-${PV}.tar.bz2"
+LICENSE = "GPL"
DEPENDS = "matchbox-desktop libxine-x11"
RDEPENDS = "libxine-plugin-vo-out-xshm \
libxine-plugin-vo-out-none \
@@ -27,10 +25,11 @@ RDEPENDS = "libxine-plugin-vo-out-xshm \
libxine-plugin-dmx-avi \
libxine-plugin-ao-out-oss \
matchbox-desktop "
+PR = "r1"
+SRC_URI="http://projects.o-hand.com/matchbox/sources/mb-desktop-xine/0.4/mb-desktop-xine-${PV}.tar.bz2"
FILES_${PN} += " /usr/share/themes/mbmediabox/matchbox/ \
/usr/share/matchbox/desktop/modules/*.so"
-
inherit autotools pkgconfig
diff --git a/packages/mc/mc.inc b/packages/mc/mc.inc
new file mode 100644
index 0000000000..039fea6a61
--- /dev/null
+++ b/packages/mc/mc.inc
@@ -0,0 +1,52 @@
+DESCRIPTION = "GNU Midnight Commander is a file \
+manager for free operating systems."
+HOMEPAGE = "http://www.ibiblio.org/mc/"
+LICENSE = "GPLv2"
+SECTION = "console/utils"
+PRIORITY = "optional"
+DEPENDS = "ncurses glib-2.0"
+RDEPENDS = "ncurses-terminfo"
+
+SRC_URI = "http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-${PV}.tar.gz"
+
+inherit autotools
+
+EXTRA_OECONF = "--disable-glibtest --without-x --without-samba \
+--without-nfs --without-gpm-mouse --with-screen=ncurses"
+
+PACKAGES += "${PN}-extfs ${PN}-hilite"
+FILES_${PN} = "${bindir}/ ${libdir}/ ${datadir}/mc/*.*"
+FILES_${PN}-extfs = "${datadir}/mc/extfs/"
+FILES_${PN}-hilite = "${datadir}/mc/syntax/"
+RRECOMMENDS_${PN} += "${PN}-extfs ${PN}-hilite"
+RDEPENDS_${PN}-extfs = "${PN}"
+RDEPENDS_${PN}-hilite = "${PN}"
+PACKAGE_ARCH_${PN}-extfs = "all"
+PACKAGE_ARCH_${PN}-hilite = "all"
+
+
+do_configure() {
+ gnu-configize
+ oe_runconf
+}
+
+do_install() {
+ cd src
+ oe_runmake 'DESTDIR=${D}' install
+ cd ../syntax
+ oe_runmake 'DESTDIR=${D}' install
+ cd ../po
+ oe_runmake 'DESTDIR=${D}' install
+ cd ../vfs
+ oe_runmake 'DESTDIR=${D}' install
+ cd ..
+
+ install -m 0644 lib/cedit.menu ${D}${datadir}/mc/
+ install -m 0644 lib/edit.indent.rc ${D}${datadir}/mc/
+ install -m 0644 lib/edit.spell.rc ${D}${datadir}/mc/
+ install -m 0644 lib/mc.charsets ${D}${datadir}/mc/
+ install -m 0644 lib/mc.ext ${D}${datadir}/mc/
+ install -m 0644 lib/mc.lib ${D}${datadir}/mc/
+ install -m 0644 lib/mc.menu ${D}${datadir}/mc/
+ install -m 0644 lib/mc.menu.sr ${D}${datadir}/mc/
+}
diff --git a/packages/mc/mc_4.6.0.bb b/packages/mc/mc_4.6.0.bb
index 74d5d8d191..e5c18784be 100644
--- a/packages/mc/mc_4.6.0.bb
+++ b/packages/mc/mc_4.6.0.bb
@@ -1,33 +1,2 @@
-DESCRIPTION = "GNU Midnight Commander is a file \
-manager for free operating systems."
-HOMEPAGE = "http://www.ibiblio.org/mc/"
-LICENSE = "GPLv2"
-SECTION = "console/utils"
-PRIORITY = "optional"
-DEPENDS = "ncurses glib-2.0"
-RDEPENDS = "ncurses-terminfo"
-PR ="r1"
-
-SRC_URI = "http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-${PV}.tar.gz"
-
-inherit autotools
-
-EXTRA_OECONF = "--disable-glibtest --without-x --without-samba \
---without-nfs --without-gpm-mouse --with-screen=ncurses"
-
-do_configure() {
- gnu-configize
- oe_runconf
-}
-
-do_install() {
- cd src
- oe_runmake 'DESTDIR=${D}' install
- cd ../syntax
- oe_runmake 'DESTDIR=${D}' install
- cd ../po
- oe_runmake 'DESTDIR=${D}' install
- cd ../vfs
- oe_runmake 'DESTDIR=${D}' install
- cd ..
-}
+require mc.inc
+PR = "r2"
diff --git a/packages/mc/mc_4.6.1.bb b/packages/mc/mc_4.6.1.bb
index 58a8fdf51b..e5c18784be 100644
--- a/packages/mc/mc_4.6.1.bb
+++ b/packages/mc/mc_4.6.1.bb
@@ -1,42 +1,2 @@
-DESCRIPTION = "GNU Midnight Commander is a file \
-manager for free operating systems."
-HOMEPAGE = "http://www.ibiblio.org/mc/"
-LICENSE = "GPLv2"
-SECTION = "console/utils"
-PRIORITY = "optional"
-DEPENDS = "ncurses glib-2.0"
-RDEPENDS = "ncurses-terminfo"
-PR ="r1"
-
-SRC_URI = "http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-${PV}.tar.gz"
-
-inherit autotools
-
-EXTRA_OECONF = "--disable-glibtest --without-x --without-samba \
---without-nfs --without-gpm-mouse --with-screen=ncurses"
-
-do_configure() {
- gnu-configize
- oe_runconf
-}
-
-do_install() {
- cd src
- oe_runmake 'DESTDIR=${D}' install
- cd ../syntax
- oe_runmake 'DESTDIR=${D}' install
- cd ../po
- oe_runmake 'DESTDIR=${D}' install
- cd ../vfs
- oe_runmake 'DESTDIR=${D}' install
- cd ..
-
- install -m 0644 lib/cedit.menu ${D}${datadir}/mc/
- install -m 0644 lib/edit.indent.rc ${D}${datadir}/mc/
- install -m 0644 lib/edit.spell.rc ${D}${datadir}/mc/
- install -m 0644 lib/mc.charsets ${D}${datadir}/mc/
- install -m 0644 lib/mc.ext ${D}${datadir}/mc/
- install -m 0644 lib/mc.lib ${D}${datadir}/mc/
- install -m 0644 lib/mc.menu ${D}${datadir}/mc/
- install -m 0644 lib/mc.menu.sr ${D}${datadir}/mc/
-}
+require mc.inc
+PR = "r2"
diff --git a/packages/mdk/.mtn2git_empty b/packages/mdk/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mdk/.mtn2git_empty
diff --git a/packages/mdk/files/.mtn2git_empty b/packages/mdk/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mdk/files/.mtn2git_empty
diff --git a/packages/mdk/files/mdk2-ppcfix.patch b/packages/mdk/files/mdk2-ppcfix.patch
new file mode 100644
index 0000000000..b9d86b6ae1
--- /dev/null
+++ b/packages/mdk/files/mdk2-ppcfix.patch
@@ -0,0 +1,12 @@
+Only in mdk2-v33-ppcfix: mdk2
+diff -ur mdk2-v33/mdk2.c mdk2-v33-ppcfix/mdk2.c
+--- mdk2-v33/mdk2.c 2007-02-22 13:39:43.000000000 -0500
++++ mdk2-v33-ppcfix/mdk2.c 2007-03-03 15:56:50.000000000 -0500
+@@ -7,6 +7,7 @@
+ #include <sys/ioctl.h>
+ #include <netpacket/packet.h>
+ #include <linux/if_ether.h>
++#include <linux/if.h>
+ #include <linux/wireless.h>
+ #include <unistd.h>
+ #include <string.h>
diff --git a/packages/mdk/mdk2_v33.bb b/packages/mdk/mdk2_v33.bb
new file mode 100644
index 0000000000..bd665e2ccd
--- /dev/null
+++ b/packages/mdk/mdk2_v33.bb
@@ -0,0 +1,23 @@
+SECTION = "console/network"
+DESCRIPTION = "ASPj is drunk"
+HOMEPAGE = "http://homepages.tu-darmstadt.de/~p_larbig/wlan/"
+LICENSE = "GPLv2"
+MAINTAINER = "Zero_Chaos <sidhayn@gmail.com>"
+DEPENDS = ""
+RDEPENDS = ""
+PR="r1"
+
+SRC_URI = "http://homepages.tu-darmstadt.de/~p_larbig/wlan/mdk2-${PV}.tar.bz2 \
+ file://mdk2-ppcfix.patch"
+
+LDFLAGS_append = " -lpthread"
+CFLAGS_append = " -I${STAGING_KERNEL_DIR}/include -O3 -pthread"
+
+oe_compile() {
+ oe_runmake CC="${CC}" CXX="${CXX}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LD="${LD}" LDFLAGS="${LDFLAGS}"
+}
+
+do_install() {
+ install -d ${D}/${sbindir}
+ install -m 0755 mdk2 ${D}/${sbindir}
+}
diff --git a/packages/mediatomb/mediatomb_0.8+0.9.0-pre.bb b/packages/mediatomb/mediatomb_0.8+0.9.0-pre.bb
new file mode 100644
index 0000000000..c903321b70
--- /dev/null
+++ b/packages/mediatomb/mediatomb_0.8+0.9.0-pre.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "MediaTomb - UPnP AV MediaServer for Linux"
+HOMEPAGE = "http://mediatomb.cc/"
+LICENSE = "GPLv2"
+DEPENDS = "sqlite3 libexif js zlib file id3lib"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/mediatomb/mediatomb-0.9.0-pre.tar.gz"
+
+S = "${WORKDIR}/${PN}-0.9.0-pre"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-mysql \
+ --disable-rpl-malloc \
+ --enable-sqlite3 \
+ --enable-libjs \
+ --enable-libmagic \
+ --enable-id3lib \
+ --enable-libexif \
+ --disable-largefile \
+ --with-sqlite3-h=${STAGING_INCDIR} \
+ --with-sqlite3-libs=${STAGING_LIBDIR} \
+ --with-magic-h=${STAGING_INCDIR} \
+ --with-magic-libs=${STAGING_LIBDIR} \
+ --with-exif-h=${STAGING_INCDIR} \
+ --with-exif-libs=${STAGING_LIBDIR} \
+ --with-zlib-h=${STAGING_INCDIR} \
+ --with-zlib-libs=${STAGING_LIBDIR} \
+ --with-js-h=${STAGING_INCDIR}/js \
+ --with-js-libs=${STAGING_LIBDIR} \
+ --with-id3lib-h=${STAGING_INCDIR} \
+ --with-id3lib-libs=${STAGING_LIBDIR}"
diff --git a/packages/mediatomb/mediatomb_0.9.0.bb b/packages/mediatomb/mediatomb_0.9.0.bb
new file mode 100644
index 0000000000..f3ea9f54dd
--- /dev/null
+++ b/packages/mediatomb/mediatomb_0.9.0.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "MediaTomb - UPnP AV MediaServer for Linux"
+HOMEPAGE = "http://mediatomb.cc/"
+LICENSE = "GPLv2"
+DEPENDS = "sqlite3 libexif js zlib file id3lib"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/mediatomb/mediatomb-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-mysql \
+ --disable-rpl-malloc \
+ --enable-sqlite3 \
+ --enable-libjs \
+ --enable-libmagic \
+ --enable-id3lib \
+ --enable-libexif \
+ --disable-largefile \
+ --with-sqlite3-h=${STAGING_INCDIR} \
+ --with-sqlite3-libs=${STAGING_LIBDIR} \
+ --with-magic-h=${STAGING_INCDIR} \
+ --with-magic-libs=${STAGING_LIBDIR} \
+ --with-exif-h=${STAGING_INCDIR} \
+ --with-exif-libs=${STAGING_LIBDIR} \
+ --with-zlib-h=${STAGING_INCDIR} \
+ --with-zlib-libs=${STAGING_LIBDIR} \
+ --with-js-h=${STAGING_INCDIR}/js \
+ --with-js-libs=${STAGING_LIBDIR} \
+ --with-id3lib-h=${STAGING_INCDIR} \
+ --with-id3lib-libs=${STAGING_LIBDIR}"
diff --git a/packages/mediatomb/mediatomb_svn.bb b/packages/mediatomb/mediatomb_svn.bb
index 2515356b39..0283eb6ae7 100644
--- a/packages/mediatomb/mediatomb_svn.bb
+++ b/packages/mediatomb/mediatomb_svn.bb
@@ -1,9 +1,9 @@
DESCRIPTION = "MediaTomb - UPnP AV MediaServer for Linux"
HOMEPAGE = "http://mediatomb.org/"
LICENSE = "GPLv2"
-DEPENDS = "sqlite3 libexif js zlib file taglib"
+DEPENDS = "sqlite3 libexif js zlib file id3lib"
PV = "0.8+0.9pre1+svn${SRCDATE}-sqlite"
-PR = "r1"
+PR = "r2"
SRC_URI = "svn://mediatomb.svn.sourceforge.net/svnroot/mediatomb/trunk;proto=https;module=mediatomb"
@@ -16,17 +16,18 @@ EXTRA_OECONF = "--disable-mysql \
--enable-sqlite3 \
--enable-libjs \
--enable-libmagic \
- --enable-taglib \
+ --enable-id3lib \
--enable-libexif \
--disable-largefile \
- --with-sqlite3-h=${STAGING_DIR}/${TARGET_SYS}/include \
- --with-sqlite3-libs=${STAGING_DIR}/${TARGET_SYS}/lib \
- --with-magic-h=${STAGING_DIR}/${TARGET_SYS}/include \
- --with-magic-libs=${STAGING_DIR}/${TARGET_SYS}/lib \
- --with-exif-h=${STAGING_DIR}/${TARGET_SYS}/include \
- --with-exif-libs=${STAGING_DIR}/${TARGET_SYS}/lib \
- --with-zlib-h=${STAGING_DIR}/${TARGET_SYS}/include \
- --with-zlib-libs=${STAGING_DIR}/${TARGET_SYS}/lib \
- --with-js-h=${STAGING_DIR}/${TARGET_SYS}/include/js \
- --with-js-libs=${STAGING_DIR}/${TARGET_SYS}/lib \
- --with-taglib-cfg=${STAGING_DIR}/${BUILD_SYS}/bin/taglib-config"
+ --with-sqlite3-h=${STAGING_INCDIR} \
+ --with-sqlite3-libs=${STAGING_LIBDIR} \
+ --with-magic-h=${STAGING_INCDIR} \
+ --with-magic-libs=${STAGING_LIBDIR} \
+ --with-exif-h=${STAGING_INCDIR} \
+ --with-exif-libs=${STAGING_LIBDIR} \
+ --with-zlib-h=${STAGING_INCDIR} \
+ --with-zlib-libs=${STAGING_LIBDIR} \
+ --with-js-h=${STAGING_INCDIR}/js \
+ --with-js-libs=${STAGING_LIBDIR} \
+ --with-id3lib-h=${STAGING_INCDIR} \
+ --with-id3lib-libs=${STAGING_LIBDIR}"
diff --git a/packages/memtester/memtester_4.0.5.bb b/packages/memtester/memtester_4.0.5.bb
index ec0fbf2216..6a84471cee 100644
--- a/packages/memtester/memtester_4.0.5.bb
+++ b/packages/memtester/memtester_4.0.5.bb
@@ -1,9 +1,9 @@
SECTION = "console/utils"
DESCRIPTION = "Utility to test for faulty memory subsystem"
LICENSE = "GPLv2"
-PR = "r1"
+PR = "r2"
-SRC_URI = "http://pyropus.ca/software/memtester/memtester-${PV}.tar.gz"
+SRC_URI = "http://pyropus.ca/software/memtester/old-versions/memtester-${PV}.tar.gz"
SRC_URI += "file://Makefile.patch;patch=1"
S = "${WORKDIR}/memtester-${PV}"
diff --git a/packages/memtester/memtester_4.0.6.bb b/packages/memtester/memtester_4.0.6.bb
new file mode 100644
index 0000000000..1fb4541eb6
--- /dev/null
+++ b/packages/memtester/memtester_4.0.6.bb
@@ -0,0 +1,22 @@
+SECTION = "console/utils"
+DESCRIPTION = "Utility to test for faulty memory subsystem"
+LICENSE = "GPLv2"
+PR = "r0"
+
+SRC_URI = "http://pyropus.ca/software/memtester/old-versions/memtester-${PV}.tar.gz"
+SRC_URI += "file://Makefile.patch;patch=1"
+
+S = "${WORKDIR}/memtester-${PV}"
+
+do_compile () {
+ echo '${CC} ${CFLAGS} -DPOSIX -c' > conf-cc
+ echo '${CC} ${LDFLAGS}' > conf-ld
+ oe_runmake
+}
+
+do_install () {
+ install -d ${D}${bindir}
+ install -d ${D}${mandir}/man8
+ install -m 0755 memtester ${D}${bindir}/
+ install -m 0755 memtester.8 ${D}${mandir}/man8/
+}
diff --git a/packages/mesa/mesa-6.0.1/.mtn2git_empty b/packages/mesa/mesa-6.0.1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mesa/mesa-6.0.1/.mtn2git_empty
diff --git a/packages/mesa/Make-config.patch b/packages/mesa/mesa-6.0.1/Make-config.patch
index cfe8890e3b..cfe8890e3b 100644
--- a/packages/mesa/Make-config.patch
+++ b/packages/mesa/mesa-6.0.1/Make-config.patch
diff --git a/packages/mesa/mklib.patch b/packages/mesa/mesa-6.0.1/mklib.patch
index 7dc1ec76a7..7dc1ec76a7 100644
--- a/packages/mesa/mklib.patch
+++ b/packages/mesa/mesa-6.0.1/mklib.patch
diff --git a/packages/mesa/mesa-6.5.2/.mtn2git_empty b/packages/mesa/mesa-6.5.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mesa/mesa-6.5.2/.mtn2git_empty
diff --git a/packages/mesa/mesa-6.5.2/mklib-rpath-link.patch b/packages/mesa/mesa-6.5.2/mklib-rpath-link.patch
new file mode 100644
index 0000000000..e59513abfe
--- /dev/null
+++ b/packages/mesa/mesa-6.5.2/mklib-rpath-link.patch
@@ -0,0 +1,23 @@
+--- Mesa/bin/mklib.orig 2006-06-04 20:56:22.000000000 -0600
++++ Mesa/bin/mklib 2006-06-04 20:57:04.000000000 -0600
+@@ -98,6 +98,9 @@
+ -L*)
+ DEPS="$DEPS $1"
+ ;;
++ -Wl*)
++ DEPS="$DEPS $1"
++ ;;
+ '-cplusplus')
+ CPLUSPLUS=1
+ ;;
+--- Mesa-6.5.2/configs/default.old 2007-01-26 11:49:32.000000000 +0000
++++ Mesa-6.5.2/configs/default 2007-01-26 11:49:49.000000000 +0000
+@@ -73,7 +73,7 @@
+ GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lm
+ GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) $(EXTRA_LIB_PATH) -lX11 -lXmu -lXt -lXi -lm
+ GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) $(EXTRA_LIB_PATH) -lXt -lX11
+-APP_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm
++APP_LIB_DEPS = -L$(TOP)/$(LIB_DIR) $(EXTRA_LIB_PATH) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm
+
+
+
diff --git a/packages/mesa/mesa-common.inc b/packages/mesa/mesa-common.inc
new file mode 100644
index 0000000000..18e9b4ebed
--- /dev/null
+++ b/packages/mesa/mesa-common.inc
@@ -0,0 +1,9 @@
+SECTION = "x11"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/mesa3d/MesaLib-${PV}.tar.bz2 \
+ file://mklib-rpath-link.patch;patch=1"
+S = "${WORKDIR}/Mesa-${PV}"
+
+LICENSE = "LGPL"
+
+DEPENDS = "makedepend-native xf86vidmodeproto glproto virtual/libx11 libxext libxxf86vm libxi libxmu libice"
diff --git a/packages/mesa/mesa-dri_6.5.2.bb b/packages/mesa/mesa-dri_6.5.2.bb
new file mode 100644
index 0000000000..9255a926e9
--- /dev/null
+++ b/packages/mesa/mesa-dri_6.5.2.bb
@@ -0,0 +1,37 @@
+include mesa-common.inc
+
+FILESPATH = "${FILE_DIRNAME}/mesa-${PV}:${FILE_DIRNAME}/files:${FILE_DIRNAME}"
+
+PACKAGES_DYNAMIC = "mesa-dri-driver-*"
+
+PR = "r0"
+
+DEPENDS += "libdrm"
+
+do_configure() {
+ cd configs
+
+ ln -sf linux-dri current
+ sed -e "s%CC *= *.*%CC = ${CC}%" -i current
+ sed -e "s%CXX *= *.*%CXX = ${CXX}%" -i current
+ sed -e "s%LD *= *.*%LD = ${LD}%" -i current
+ sed -e "s%OPT_FLAGS *= *.*%OPT_FLAGS = ${TARGET_CFLAGS}%" -i current
+ sed -e "s%X11_INCLUDES *= *.*%X11_INCLUDES = -I${STAGING_INCDIR}/X11%" -i current
+ sed -e "s%EXTRA_LIB_PATH *= *.*%EXTRA_LIB_PATH = ${LDFLAGS}%" -i current
+ sed -i s:\$\(CC\):gcc:g ../src/mesa/x86/Makefile
+ echo "SRC_DIRS = mesa" >> current
+ echo "DRI_DRIVER_INSTALL_DIR = ${D}${libdir}/dri" >> current
+}
+
+do_install() {
+ oe_runmake -C src/mesa/drivers/dri install
+}
+
+FILES_${PN}-dbg += "${libdir}/dri/.debug"
+
+python populate_packages_prepend () {
+ import re, os.path
+
+ do_split_packages(d, root=bb.data.expand('${libdir}/dri', d), file_regex='(.*)_dri\.so', output_pattern='mesa-dri-driver-%s', description='%s DRI driver')
+}
+
diff --git a/packages/mesa/mesa-mesa.inc b/packages/mesa/mesa-mesa.inc
new file mode 100644
index 0000000000..a4163f576e
--- /dev/null
+++ b/packages/mesa/mesa-mesa.inc
@@ -0,0 +1,41 @@
+include mesa-common.inc
+
+PACKAGES =+ "libglu libglu-dev libosmesa libosmesa-dev libgl libgl-dev"
+
+FILES_libgl = "${libdir}/libGL.so.*"
+FILES_libglu = "${libdir}/libGLU.so.*"
+FILES_libosmesa = "${libdir}/libOSMesa.so.*"
+
+FILES_libgl-dev = "${libdir}/libGL.* ${includedir}/GL"
+FILES_libglu-dev = "${libdir}/libGLU.* ${includedir}/GL/glu*.h"
+FILES_libosmesa-dev = "${libdir}/libOSMesa.* ${includedir}/osmesa.h"
+
+do_configure() {
+ cd configs
+
+ ln -sf linux current
+ sed -e "s%CC *= *.*%CC = ${CC}%" -i current
+ sed -e "s%CXX *= *.*%CXX = ${CXX}%" -i current
+ sed -e "s%LD *= *.*%LD = ${LD}%" -i current
+ sed -e "s%OPT_FLAGS *= *.*%OPT_FLAGS = ${TARGET_CFLAGS}%" -i current
+ sed -e "s%X11_INCLUDES *= *.*%X11_INCLUDES = -I${STAGING_INCDIR}/X11%" -i current
+ sed -e "s%EXTRA_LIB_PATH *= *.*%EXTRA_LIB_PATH = ${LDFLAGS}%" -i current
+ sed -i s:\$\(CC\):gcc:g ../src/mesa/x86/Makefile
+ echo "SRC_DIRS = mesa glu glut/glx" >> current
+}
+
+do_compile() {
+ oe_runmake default
+}
+
+do_install() {
+ install -d ${D}${libdir}
+ cp -pP lib/* ${D}${libdir}/
+ install -d ${D}${includedir}
+ cp -R include/GL ${D}${includedir}/
+}
+
+do_stage() {
+ cp -pP lib/* ${STAGING_LIBDIR}/
+ cp -R include/GL ${STAGING_INCDIR}/
+}
diff --git a/packages/mesa/mesa_6.5.2.bb b/packages/mesa/mesa_6.5.2.bb
new file mode 100644
index 0000000000..1c245f003b
--- /dev/null
+++ b/packages/mesa/mesa_6.5.2.bb
@@ -0,0 +1,3 @@
+PR = "r0"
+
+include mesa-mesa.inc
diff --git a/packages/meta/foonas-packages.bb b/packages/meta/foonas-packages.bb
new file mode 100644
index 0000000000..edadb63a1c
--- /dev/null
+++ b/packages/meta/foonas-packages.bb
@@ -0,0 +1,167 @@
+DESCRIPTION = "Packages that are compatible with FooNAS"
+LICENSE = "MIT"
+PR = "r1"
+CONFLICTS = "db3"
+PROVIDES += "${FOONAS_IMAGENAME}-packages"
+
+EXCLUDE_FROM_WORLD = "1"
+INHIBIT_DEFAULT_DEPS = "1"
+ALLOW_EMPTY = "1"
+
+FOONAS_PACKAGES = "\
+ adns \
+ alsa-lib \
+ alsa-utils \
+ apache2 \
+ asterisk \
+ audiofile \
+ aumix \
+ autoconf \
+ automake \
+ bash \
+ bash-completion \
+ bc \
+ beep \
+ bind \
+ binutils \
+ bison \
+ bridge-utils \
+ bonnie++ \
+ bzflag \
+ bzip2 \
+ ccxstream \
+ cdparanoia \
+ cdstatus \
+ cherokee \
+ chillispot \
+ coreutils \
+ cpusage \
+ cpuspeed \
+ cron \
+ ctorrent \
+ cvs \
+ dash \
+ db \
+ dbench \
+ devlabel \
+ dhcpcd \
+ dialog \
+ diffstat \
+ diffutils \
+ dircproxy \
+ dnsmasq \
+ dosfstools \
+ e2fsprogs \
+ e2fsprogs-libs \
+ e2tools \
+ eb \
+ ebtables \
+ elvis \
+ expat \
+ ez-ipupdate \
+ fetchmail \
+ file \
+ findutils \
+ flex \
+ flite \
+ gawk \
+ gcc \
+ gdbm \
+ gnu-config \
+ grep \
+ gtk-doc \
+ gzip \
+ hdparm \
+ ipkg-utils \
+ iptables \
+ ircp \
+ joe \
+ jpeg \
+ less \
+ libao \
+ libid3tag \
+ liblockfile \
+ libmad \
+ libmikmod \
+ libogg \
+ libol \
+ libpng \
+ libtool \
+ libupnp \
+ libusb \
+ libvorbis \
+ litestream \
+ lrzsz \
+ lsof \
+ lvm2 \
+ m4 \
+ madplay \
+ mailx \
+ make \
+ mdadm \
+ mgetty \
+ miau \
+ microcom \
+ minicom \
+ modphp \
+ mt-daapd \
+ mtd-utils \
+ mutt \
+ nail \
+ nano \
+ ncftp \
+ ncurses \
+ netcat \
+ nmap \
+ ntp \
+ openobex-apps \
+ openldap \
+ openntpd \
+ openobex \
+ openssh \
+ openvpn \
+ patch \
+ pciutils \
+ libpcre \
+ perl \
+ pkgconfig \
+ postgresql \
+ ppp \
+ procps \
+ quilt \
+ rng-tools \
+ rsync \
+ sed \
+ setserial \
+ smartmontools \
+ ssmtp \
+ strace \
+ streamripper \
+ sysfsutils \
+ syslog-ng \
+ tar \
+ thttpd \
+ tzdata \
+ tiff \
+ unzip \
+ usbutils \
+ util-linux \
+ vim \
+ vlan \
+ watchdog \
+ wget \
+ wireless-tools \
+ zip \
+ zlib \
+ "
+
+FOONAS_EXTRA_PACKAGES ?= ""
+
+# The package-index at the end causes regeneration of the Packages.gz and
+# other control files.
+DEPENDS = "\
+ foonas-image \
+ ${FOONAS_PACKAGES} \
+ ${FOONAS_EXTRA_PACKAGES} \
+ package-index \
+ "
diff --git a/packages/meta/meta-e-x11-core.bb b/packages/meta/meta-e-x11-core.bb
index 21960c6573..cdc76402e1 100644
--- a/packages/meta/meta-e-x11-core.bb
+++ b/packages/meta/meta-e-x11-core.bb
@@ -4,7 +4,7 @@ ALLOW_EMPTY = "1"
PR = "r1"
PACKAGE_ARCH = "all"
LICENSE = "MIT"
-BUILD_ALL_DEPS="1"
-DEPENDS = "task-e-x11-core"
RDEPENDS = "task-e-x11-core"
+
+inherit meta \ No newline at end of file
diff --git a/packages/meta/meta-e-x11.bb b/packages/meta/meta-e-x11.bb
index 0edfd43496..1182b0cf42 100644
--- a/packages/meta/meta-e-x11.bb
+++ b/packages/meta/meta-e-x11.bb
@@ -4,7 +4,7 @@ ALLOW_EMPTY = "1"
PR = "r1"
PACKAGE_ARCH = "all"
LICENSE = "MIT"
-BUILD_ALL_DEPS = "1"
-DEPENDS = "task-e-x11"
RDEPENDS = "task-e-x11"
+
+inherit meta \ No newline at end of file
diff --git a/packages/meta/meta-gpe-extras.bb b/packages/meta/meta-gpe-extras.bb
index 0adb7c4e05..b4425a682e 100644
--- a/packages/meta/meta-gpe-extras.bb
+++ b/packages/meta/meta-gpe-extras.bb
@@ -2,15 +2,10 @@ DESCRIPTION = "Meta-package of extra applications for the GPE Palmtop Environmen
LICENSE = "MIT"
PR="r2"
-ALLOW_EMPTY = "1"
-BUILD_ALL_DEPS = "1"
-
-DEPENDS = "task-gpe"
-
RDEPENDS = "\
gpe-task-apps-extra \
gpe-task-games \
gpe-task-web \
gpe-task-desktopapps"
-
+inherit meta
diff --git a/packages/meta/meta-gpe.bb b/packages/meta/meta-gpe.bb
index 2360db447f..d6e199f6d6 100644
--- a/packages/meta/meta-gpe.bb
+++ b/packages/meta/meta-gpe.bb
@@ -2,11 +2,6 @@ DESCRIPTION = "Meta-package for GPE Palmtop Environment"
LICENSE = "MIT"
PR = "r42"
-ALLOW_EMPTY = "1"
-BUILD_ALL_DEPS = "1"
-
-DEPENDS = "task-gpe"
-
RDEPENDS = "\
gpe-base-depends \
gpe-task-base \
@@ -15,3 +10,5 @@ RDEPENDS = "\
gpe-task-apps \
gpe-task-games \
gpe-task-connectivity"
+
+inherit meta
diff --git a/packages/meta/meta-gpephone.bb b/packages/meta/meta-gpephone.bb
new file mode 100644
index 0000000000..a0bd51e5fc
--- /dev/null
+++ b/packages/meta/meta-gpephone.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Meta-package for GPE Palmtop Environment Phone packages"
+LICENSE = "MIT"
+PR = "r0"
+
+RDEPENDS = "\
+ gpe-base-depends \
+ gpephone-task-base \
+ gpephone-task-settings \
+ gpephone-task-pim \
+ gpeph-task-connectivity"
+
+inherit meta \ No newline at end of file
diff --git a/packages/meta/meta-opie-all.bb b/packages/meta/meta-opie-all.bb
index 6f315d3306..ccdbbe973d 100644
--- a/packages/meta/meta-opie-all.bb
+++ b/packages/meta/meta-opie-all.bb
@@ -1,14 +1,16 @@
DESCRIPTION = "Meta-package for QPE stuff"
SECTION = "opie/base"
-ALLOW_EMPTY = "1"
-PACKAGE_ARCH = "all"
LICENSE = "MIT"
-DEPENDS = "task-qpe"
PR = "r3"
-BUILD_ALL_DEPS = "1"
-
-RDEPENDS = "task-qpe-applets task-qpe-games task-qpe-inputmethods \
- task-qpe-multimedia task-qpe-emulators task-qpe-applications \
- task-qpe-fonts task-qpe-settings"
+RDEPENDS = " \
+ task-qpe-applets \
+ task-qpe-games \
+ task-qpe-inputmethods \
+ task-qpe-multimedia \
+ task-qpe-emulators \
+ task-qpe-applications \
+ task-qpe-fonts \
+ task-qpe-settings"
+inherit meta \ No newline at end of file
diff --git a/packages/meta/meta-opie.bb b/packages/meta/meta-opie.bb
index 1158d859a0..6a9c35c5e3 100644
--- a/packages/meta/meta-opie.bb
+++ b/packages/meta/meta-opie.bb
@@ -1,12 +1,8 @@
DESCRIPTION = "Meta-package for Opie"
SECTION = "opie/base"
-ALLOW_EMPTY = "1"
PR = "r34"
-PACKAGE_ARCH = "all"
LICENSE = "MIT"
-BUILD_ALL_DEPS = "1"
-DEPENDS = "task-opie"
RDEPENDS = "task-opie-applets task-opie-apps task-opie-base \
task-opie-base-applets task-opie-base-apps \
task-opie-base-decorations task-opie-base-inputmethods \
@@ -19,3 +15,4 @@ RDEPENDS = "task-opie-applets task-opie-apps task-opie-base \
task-opie-multimedia task-opie-pim task-opie-settings \
task-opie-styles task-opie-todayplugins task-opie-wlan"
+inherit meta \ No newline at end of file
diff --git a/packages/meta/meta-sdk-gpe.bb b/packages/meta/meta-sdk-gpe.bb
new file mode 100644
index 0000000000..5dd6b5cc0c
--- /dev/null
+++ b/packages/meta/meta-sdk-gpe.bb
@@ -0,0 +1,101 @@
+DESCRIPTION = "Meta package for SDK including GPE"
+LICENSE = "MIT"
+DEPENDS = "ipkg-native ipkg-utils-native fakeroot-native sed-native"
+PR = "r0"
+
+inherit 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() {
+ touch ${DEPLOY_DIR_IPK}/Packages
+ ipkg-make-index -r ${DEPLOY_DIR_IPK}/Packages -p ${DEPLOY_DIR_IPK}/Packages -l ${DEPLOY_DIR_IPK}/Packages.filelist -m ${DEPLOY_DIR_IPK}
+
+ rm -rf ${SDK_OUTPUT}
+ mkdir -p ${SDK_OUTPUT}
+
+ cat <<EOF >${SDK_DIR}/ipkg-host.conf
+src oe file:${DEPLOY_DIR_IPK}
+arch ${BUILD_ARCH} 1
+EOF
+ 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)
+ 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_ARCH}-${TARGET_OS}/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_ARCH}-${TARGET_OS}/lib/*.la
+
+ # fix pkgconfig data files
+ cd ${SDK_OUTPUT}/${prefix}/${TARGET_ARCH}-${TARGET_OS}/lib/pkgconfig
+ for f in *.pc ; do
+ sed -i 's%=/usr%=${prefix}/${TARGET_ARCH}-${TARGET_OS}%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-sdk-sbox-gpe.bb b/packages/meta/meta-sdk-sbox-gpe.bb
new file mode 100644
index 0000000000..c9b7737af2
--- /dev/null
+++ b/packages/meta/meta-sdk-sbox-gpe.bb
@@ -0,0 +1,101 @@
+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
+ rootfs_ipk_do_indexes
+ 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
new file mode 100644
index 0000000000..c0cb27d404
--- /dev/null
+++ b/packages/meta/meta-sdk-sbox.bb
@@ -0,0 +1,97 @@
+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
+ rootfs_ipk_do_indexes
+ 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
index 7bf8606418..e793c08de0 100644
--- a/packages/meta/meta-sdk.bb
+++ b/packages/meta/meta-sdk.bb
@@ -1,11 +1,9 @@
-DESCRIPTION = "Meta package for SDK including GPE and Opie"
+DESCRIPTION = "Meta package for bare SDK package"
LICENSE = "MIT"
DEPENDS = "ipkg-native ipkg-utils-native fakeroot-native sed-native"
-PR = "r11"
+PR = "r13"
-PACKAGES = ""
-
-inherit sdk
+inherit sdk meta
SDK_DIR = "${WORKDIR}/sdk"
SDK_OUTPUT = "${SDK_DIR}/image"
@@ -18,15 +16,12 @@ HOST_INSTALL = "\
binutils-cross-sdk \
gcc-cross-sdk \
gdb-cross"
+
TARGET_INSTALL = "\
- task-sdk-base \
- task-sdk-opie \
- task-sdk-x11 \
- task-sdk-x11-ext \
- task-sdk-gpe"
+ task-sdk-bare \
+ "
RDEPENDS = "${TARGET_INSTALL} ${HOST_INSTALL}"
-BUILD_ALL_DEPS = "1"
do_populate_sdk() {
touch ${DEPLOY_DIR_IPK}/Packages
@@ -75,22 +70,22 @@ EOF
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}/../arm-linux/lib/ipkg/status ${SDK_OUTPUT}/${prefix}/package-status
+ mv ${SDK_OUTPUT}${libdir}/../${TARGET_ARCH}-${TARGET_OS}/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}/arm-linux/lib/*.la
+ rm ${SDK_OUTPUT}/${prefix}/${TARGET_ARCH}-${TARGET_OS}/lib/*.la
# fix pkgconfig data files
- cd ${SDK_OUTPUT}/${prefix}/arm-linux/lib/pkgconfig
+ cd ${SDK_OUTPUT}/${prefix}/${TARGET_ARCH}-${TARGET_OS}/lib/pkgconfig
for f in *.pc ; do
- sed -i 's%=/usr%=${prefix}/arm-linux%g' "$f"
+ sed -i 's%=/usr%=${prefix}/${TARGET_ARCH}-${TARGET_OS}%g' "$f"
done
for f in *.pc ; do
- sed -i 's%${STAGING_DIR}%/usr/local/arm/oe%g' "$f"
+ sed -i 's%${STAGING_DIR}%/usr/local/${TARGET_ARCH}/oe%g' "$f"
done
mkdir -p ${SDK_DEPLOY}
@@ -99,4 +94,5 @@ EOF
}
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-sdl.bb b/packages/meta/meta-sdl.bb
index cb19cb6834..a1ab3918b7 100644
--- a/packages/meta/meta-sdl.bb
+++ b/packages/meta/meta-sdl.bb
@@ -1,15 +1,7 @@
DESCRIPTION = "Meta-package for SDL"
LICENSE = "MIT"
-RDEPENDS = "task-sdl-libs task-sdl-games task-sdl-emulators"
PR = "r2"
-ALLOW_EMPTY = "1"
-BUILD_ALL_DEPS = "1"
-
-# no need to add libsdl as all libsdl-* already rdepend on it
-RDEPENDS_task-sdl-libs = "libsdl-gfx libsdl-image libsdl-mixer libsdl-ttf libsdl-net"
-
-RDEPENDS_task-sdl-games = "abuse freedroid lbreakout2 openttd prboom quake1 rott supertux xmame"
-
-RDEPENDS_task-sdl-emulators = "dgen-sdl e-uae frodo snes9x"
+RDEPENDS = "task-sdl-libs task-sdl-games task-sdl-emulators"
+inherit meta \ No newline at end of file
diff --git a/packages/meta/meta-sectest-gpe.bb b/packages/meta/meta-sectest-gpe.bb
index 70bcfc4bc5..a73559ab1a 100644
--- a/packages/meta/meta-sectest-gpe.bb
+++ b/packages/meta/meta-sectest-gpe.bb
@@ -2,11 +2,6 @@ DESCRIPTION = "Meta-package for GPE Security Testing Image"
LICENSE = "MIT"
PR = "r6"
-ALLOW_EMPTY = "1"
-BUILD_ALL_DEPS = "1"
-
-DEPENDS = "task-gpe"
-
RDEPENDS = "\
gpe-task-base \
gpe-base-depends \
@@ -14,3 +9,5 @@ RDEPENDS = "\
gpe-task-settings \
gpe-task-pim \
gpe-task-sectest"
+
+inherit meta \ No newline at end of file
diff --git a/packages/meta/meta-toolchain.bb b/packages/meta/meta-toolchain.bb
index 7995ac3cb8..35dbe9f4cb 100644
--- a/packages/meta/meta-toolchain.bb
+++ b/packages/meta/meta-toolchain.bb
@@ -3,9 +3,7 @@ LICENSE = "MIT"
DEPENDS = "ipkg-native ipkg-utils-native fakeroot-native sed-native"
PR = "r0"
-PACKAGES = ""
-
-inherit sdk
+inherit sdk meta
SDK_DIR = "${WORKDIR}/sdk"
SDK_OUTPUT = "${SDK_DIR}/image"
@@ -23,7 +21,6 @@ TARGET_INSTALL = "\
"
RDEPENDS = "${TARGET_INSTALL} ${HOST_INSTALL}"
-BUILD_ALL_DEPS = "1"
do_populate_sdk() {
touch ${DEPLOY_DIR_IPK}/Packages
@@ -96,4 +93,5 @@ EOF
}
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/nylon-feed.bb b/packages/meta/nylon-feed.bb
index e07b41be77..2cc11814d9 100644
--- a/packages/meta/nylon-feed.bb
+++ b/packages/meta/nylon-feed.bb
@@ -29,13 +29,16 @@ DEPENDS = "${NYLON_FEED} \
rp-pppoe \
simple-firewall \
thttpd \
- vsftpd \
wget \
wlan-ng-modules \
zlib \
"
+# vsftpd \
+#
+
do_index() {
+ touch ${DEPLOY_DIR_IPK}/Packages
ipkg-make-index -r ${DEPLOY_DIR_IPK}/Packages -p ${DEPLOY_DIR_IPK}/Packages -l ${DEPLOY_DIR_IPK}/Packages.filelist -m ${DEPLOY_DIR_IPK}
}
diff --git a/packages/meta/nylon-feed.inc b/packages/meta/nylon-feed.inc
index 1983bb7336..de1a7ff484 100644
--- a/packages/meta/nylon-feed.inc
+++ b/packages/meta/nylon-feed.inc
@@ -20,7 +20,6 @@ initscripts \
iperf \
ipkg \
iptables \
-kismet \
ksymoops \
less \
linux-hotplug \
@@ -68,3 +67,5 @@ yamonenv \
# gdb-cross: install paths, sdk?
# screen: sgttyb?
+#kismet \
+#
diff --git a/packages/meta/openprotium-packages.bb b/packages/meta/openprotium-packages.bb
index 47f0cfe39f..9a1d928a77 100644
--- a/packages/meta/openprotium-packages.bb
+++ b/packages/meta/openprotium-packages.bb
@@ -36,6 +36,7 @@ ALLOW_EMPTY = "1"
# wpa-supplicant \
# bluez-utils-nodbus \
# libxml2 \
+# libdvb \
# madwifi-ng \
# motion \
# ftpd-topfield \
@@ -105,7 +106,6 @@ OPENPROTIUM_PACKAGES = "\
lcdproc \
less \
libao \
- libdvb \
libid3tag \
liblockfile \
libmad \
diff --git a/packages/meta/package-index.bb b/packages/meta/package-index.bb
index eebc4efcc7..842a02a544 100644
--- a/packages/meta/package-index.bb
+++ b/packages/meta/package-index.bb
@@ -1,13 +1,13 @@
DESCRIPTION = "Rebuild the package index"
LICENSE = "MIT"
-PR = "r0"
-
-DEPENDS = "ipkg-native"
+PR = "r3"
INHIBIT_DEFAULT_DEPS = "1"
ALLOW_EMPTY = "1"
PACKAGES = ""
+inherit rootfs_ipk
+
do_fetch() {
}
do_unpack() {
@@ -27,7 +27,6 @@ do_build[nostamp] = "1"
do_build[dirs] = "${DEPLOY_DIR_IPK}"
do_build() {
set -ex
- touch Packages
- ipkg-make-index -r Packages -p Packages -l Packages.filelist -m .
+ rootfs_ipk_do_indexes
set +ex
}
diff --git a/packages/meta/slugos-native.bb b/packages/meta/slugos-native.bb
index 5c155555b0..281310a2dd 100644
--- a/packages/meta/slugos-native.bb
+++ b/packages/meta/slugos-native.bb
@@ -11,7 +11,6 @@ INHIBIT_DEFAULT_DEPS = "1"
EXCLUDE_FROM_WORLD = "1"
ALLOW_EMPTY = "1"
PACKAGES = "${PN}"
-PROVIDES += "${SLUGOS_IMAGENAME}-native"
# Run-time only (RDEPENDS) stuff - no package explicitly provides
# these targets.
@@ -36,7 +35,7 @@ SLUGOS_NATIVE_RT = "\
# Run-time and DEPENDS
SLUGOS_NATIVE_prepend_linux = "\
- libc6-dev \
+ glibc \
"
SLUGOS_NATIVE_prepend_linux-uclibc = "\
libiconv \
@@ -79,9 +78,12 @@ SLUGOS_NATIVE = "\
# even on a thumb system (and this can be set in the tool's .bb file),
# however even this doesn't work for very large programs at present
# (only monotone!)
-SLUGOS_NATIVE_THUMB_BROKEN = "\
- monotone-6 \
- "
+####### *-*-* TEMPORARY: mwester - remove monotone as it wont' build.
+#SLUGOS_NATIVE_THUMB_BROKEN = "\
+# monotone-6 \
+# "
+SLUGOS_NATIVE_THUMB_BROKEN = ""
+###### *-*-*
SLUGOS_NATIVE_THUMB_BROKEN_thumb = ""
diff --git a/packages/meta/slugos-packages.bb b/packages/meta/slugos-packages.bb
index 3f878aaf5c..6f6d3140c5 100644
--- a/packages/meta/slugos-packages.bb
+++ b/packages/meta/slugos-packages.bb
@@ -5,9 +5,8 @@
DESCRIPTION = "Packages that are compatible with the SlugOS firmware"
HOMEPAGE = "http://www.nslu2-linux.org"
LICENSE = "MIT"
-PR = "r15"
+PR = "r33"
CONFLICTS = "db3"
-PROVIDES += "${SLUGOS_IMAGENAME}-packages"
COMPATIBLE_MACHINE = "nslu2"
EXCLUDE_FROM_WORLD = "1"
@@ -28,13 +27,14 @@ SLUGOS_PACKAGES = "\
audiofile \
aumix \
autoconf \
+ autofs \
automake \
bash \
beep \
bind \
binutils \
bison \
- bluez-utils-nodbus \
+ bluez-utils \
bridge-utils \
bzip2 \
ccxstream \
@@ -45,8 +45,10 @@ SLUGOS_PACKAGES = "\
cron \
ctorrent \
cvs \
+ cyrus-imapd \
cyrus-sasl \
db \
+ devio \
devlabel \
diffstat \
diffutils \
@@ -64,14 +66,15 @@ SLUGOS_PACKAGES = "\
flex \
flite \
ftpd-topfield \
+ fuse \
gawk \
gcc \
gdb \
gdbm \
glib-2.0 \
gnu-config \
- gphoto2 \
grep \
+ gspcav1 \
gtk-doc \
gzip \
hdparm \
@@ -85,7 +88,6 @@ SLUGOS_PACKAGES = "\
less \
libao \
libdvb \
- libgphoto2 \
libid3tag \
liblockfile \
libmad \
@@ -115,7 +117,6 @@ SLUGOS_PACKAGES = "\
microcom \
minicom \
motion \
- mpd \
mt-daapd \
mtd-utils \
mutt \
@@ -124,9 +125,13 @@ SLUGOS_PACKAGES = "\
ncftp \
ncurses \
netcat \
- netpbm \
+ nfs-utils \
nmap \
+ ntfs-3g \
ntp \
+ ntpclient \
+ obexftp \
+ obexpush \
openobex-apps \
openldap \
openntpd \
@@ -137,58 +142,76 @@ SLUGOS_PACKAGES = "\
pciutils \
libpcre \
perl \
+ picocom \
pkgconfig \
ppp \
procps \
puppy \
- pvrusb2-mci \
python \
quilt \
reiserfsprogs reiser4progs \
rng-tools \
rsync \
samba \
- sane-backends \
sed \
setpwc \
setserial \
sipsak \
+ slugimage \
smartmontools \
ssmtp \
strace \
streamripper \
sysfsutils \
- syslog-ng \
tar \
+ task-mokogateway-everything \
thttpd \
tiff \
+ tzdata \
unzip \
+ upslug2 \
usbutils \
util-linux \
vim \
vlan \
vsftpd \
+ w3cam \
wakelan \
watchdog \
+ webcam-server \
wget \
wireless-tools \
+ wireshark \
wpa-supplicant \
- zd1211 \
+ zd1211-firmware \
zip \
zlib \
"
# Packages currently broken on all platforms
SLUGOS_BROKEN_PACKAGES = "\
- irssi \
bwmon \
- obexftp \
+ gphoto2 \
+ irssi \
+ libgphoto2 \
+ logrotate \
+ madfu \
+ mediatomb \
+ mpd \
+ netpbm \
+ pvrusb2-mci \
qc-usb-messenger \
+ syslog-ng \
+ sane-backends \
unionfs-modules \
unionfs-utils \
- cyrus-imapd \
lirc \
pwc \
+ task-native-sdk \
+ zd1211 \
+ mysql \
+ wview-sim-mysql wview-vpro-mysql \
+ wview-wxt510-mysql \
"
# These packages will never build because uclibc lacks (and always will lack)
@@ -198,21 +221,24 @@ SLUGOS_BROKEN_PACKAGES = "\
# calls often still have 'yp' in the name).
# NOTE: rng-tools is only here until argp-standalone can be built!
+# nfs-utils \
+
UCLIBC_UNSUPPORTABLE_PACKAGES = "\
libpam \
- nfs-utils \
rng-tools \
postfix \
yp-tools ypbind ypserv \
"
# These packages work with glibc, but break on uclibc.
+# erlang \
+
UCLIBC_BROKEN_PACKAGES = "\
apr \
bogofilter \
boost \
- erlang \
linphone \
+ yeaphone \
sudo \
ushare \
"
@@ -231,20 +257,12 @@ SLUGOS_PACKAGES_append_linux = "\
screen \
timezones \
wview-sim wview-vpro wview-wxt510 \
- wview-sim-mysql wview-vpro-mysql \
- wview-wxt510-mysql \
xinetd \
"
SLUGOS_PACKAGES_append_linux-uclibc = "\
"
-# These packages are not in the build because they have a significant compilation
-# time, add them to SLUGOS_EXTRA_PACKAGES if required
-SLUGOS_OPTIONAL_PACKAGES = "\
- mysql \
- "
-
SLUGOS_EXTRA_PACKAGES ?= ""
# The package-index at the end causes regeneration of the Packages.gz and
diff --git a/packages/meta/xbase-clients.bb b/packages/meta/xbase-clients.bb
index 4297440074..5f3c640f00 100644
--- a/packages/meta/xbase-clients.bb
+++ b/packages/meta/xbase-clients.bb
@@ -1,4 +1,5 @@
DESCRIPTION = "Basic X clients (meta package)"
+LICENSE = "MIT"
PR = "r1"
ALLOW_EMPTY = "1"
@@ -9,4 +10,4 @@ RDEPENDS = 'xauth \
xmodmap \
xrdb \
xset'
-LICENSE = "MIT"
+
diff --git a/packages/miconapl/.mtn2git_empty b/packages/miconapl/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/miconapl/.mtn2git_empty
diff --git a/packages/miconapl/miconapl_0.0.1.bb b/packages/miconapl/miconapl_0.0.1.bb
new file mode 100644
index 0000000000..c5e27ee004
--- /dev/null
+++ b/packages/miconapl/miconapl_0.0.1.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "miconapl daemon for ARM Linkstations"
+SECTION = "console/network"
+DEPENDS = ""
+PR = "r2"
+LICENSE = "GPL"
+COMPATIBLE_MACHINE = "lsarm"
+
+SRC_URI = "http://downloads.linkstationwiki.net/Users/timtimred/lsarm/miconapl.tar.gz"
+
+inherit autotools gettext update-rc.d
+
+S = ${WORKDIR}/miconapl
+
+FILES_${PN} += "/usr/lib/libbuffalo_bin.so"
+
+INITSCRIPT_NAME = "miconapl"
+INITSCRIPT_PARAMS = "defaults 95"
+
+do_configure() {
+}
+
+do_compile() {
+}
+
+do_install() {
+ mkdir -p ${D}/usr/lib
+ install -D -m 0755 ${S}/usr/lib/libbuffalo_bin.so ${D}/usr/lib/
+ install -D -m 0755 ${S}/usr/local/sbin/miconapl ${D}${sbindir}/miconapl
+ install -D -m 0755 ${S}/etc/init.d/miconapl ${D}${sysconfdir}/init.d/miconapl
+ install -D -m 0755 ${S}/etc/init.d/logtag ${D}${sysconfdir}/init.d/logtag
+}
diff --git a/packages/micro-evtd/.mtn2git_empty b/packages/micro-evtd/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/micro-evtd/.mtn2git_empty
diff --git a/packages/micro-evtd/micro-evtd_0.0.1.bb b/packages/micro-evtd/micro-evtd_0.0.1.bb
new file mode 100644
index 0000000000..c66975c6ae
--- /dev/null
+++ b/packages/micro-evtd/micro-evtd_0.0.1.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "micro_evtd daemon for ARM Linkstations"
+SECTION = "console/network"
+PR = "r2"
+LICENSE = "GPL"
+COMPATIBLE_MACHINE = "(lsarm)"
+
+SRC_URI = "http://downloads.linkstationwiki.net/Users/timtimred/lsarm/micro_evtd.tar.gz"
+
+inherit autotools gettext update-rc.d
+
+S = ${WORKDIR}/micro_evtd
+
+INITSCRIPT_NAME = "microevtd"
+INITSCRIPT_PARAMS = "defaults 92"
+
+do_configure() {
+}
+
+do_install() {
+ install -D -m 0755 ${S}/micro_evtd ${D}${sbindir}/micro_evtd
+ install -D -m 0755 ${S}/init ${D}${sysconfdir}/init.d/microevtd
+}
diff --git a/packages/miniclipboard/miniclipboard-0.3/makefile.patch b/packages/miniclipboard/miniclipboard-0.3/makefile.patch
new file mode 100644
index 0000000000..790b82f305
--- /dev/null
+++ b/packages/miniclipboard/miniclipboard-0.3/makefile.patch
@@ -0,0 +1,26 @@
+Index: Makefile
+===================================================================
+--- Makefile (Revision 9102)
++++ Makefile (Arbeitskopie)
+@@ -6,16 +6,16 @@
+
+ MEMBERS = miniclipboard mbpixbuf mbtray
+
+-CFLAGS += -Wall
++PACKAGE_CFLAGS += -Wall `pkg-config --cflags x11`
+ ifeq ($(DEBUG),yes)
+-CFLAGS += -O2 -g
+-LDFLAGS = -g #-lefence
++PACKAGE_CFLAGS += -O2 -g
++LDFLAGS = -g
+ else
+-CFLAGS += -Os -fomit-frame-pointer
++PACKAGE_CFLAGS += -Os -fomit-frame-pointer
+ endif
+ CPPFLAGS += -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\"
+
+-PACKAGE_LDFLAGS += $(STANDARD_LDFLAGS) -L/usr/X11R6/lib -lX11 -lXpm -lXext
++PACKAGE_LDFLAGS += $(STANDARD_LDFLAGS) $(`pkg-config --libs x11`) -lXpm -lXext
+
+ OBJS = $(patsubst %,%.o,$(MEMBERS))
+
diff --git a/packages/miniclipboard/miniclipboard_0.3.bb b/packages/miniclipboard/miniclipboard_0.3.bb
index ba35902db7..1e4eef3eea 100644
--- a/packages/miniclipboard/miniclipboard_0.3.bb
+++ b/packages/miniclipboard/miniclipboard_0.3.bb
@@ -1,12 +1,13 @@
SECTION = "x11/utils"
inherit gpe
-LICENSE = "LGPL"
+LICENSE = "GPL"
DESCRIPTION = "Clipboard management application"
DEPENDS = "virtual/libx11"
RDEPENDS = "gdk-pixbuf-loader-xpm"
-PR = "r1"
+PR = "r2"
-SRC_URI += "file://miniclipboard.desktop"
+SRC_URI += "file://miniclipboard.desktop \
+ file://makefile.patch;patch=1;pnum=0"
do_install() {
install -d ${D}${bindir}
diff --git a/packages/minipredict/minipredict.bb b/packages/minipredict/minipredict.bb
index be5b58e772..41b24400ac 100644
--- a/packages/minipredict/minipredict.bb
+++ b/packages/minipredict/minipredict.bb
@@ -13,7 +13,7 @@ SRC_URI = "http://handhelds.org/~paxanima/files/${PN}.tar.gz \
S = "${WORKDIR}/${PN}"
-FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications"
+FILES_${PN} = "${bindir}/* ${datadir}/pixmaps ${datadir}/applications"
do_install() {
install -d ${D}/${bindir}
diff --git a/packages/modphp/modphp5.inc b/packages/modphp/modphp5.inc
index 11e7bc3a87..b4bdd15f5b 100644
--- a/packages/modphp/modphp5.inc
+++ b/packages/modphp/modphp5.inc
@@ -14,7 +14,7 @@ FILES_${PN} = "${libdir}/apache2 /etc"
FILES_${PN}-dbg = "${libdir}/apache2/modules/.debug"
CFLAGS += " -g -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
-EXTRA_OECONF = "--with-apxs2=${STAGING_BINDIR}/apxs \
+EXTRA_OECONF = "--with-apxs2=${STAGING_BINDIR_NATIVE}/apxs \
--without-mysql \
--enable-force-cgi-redirect \
--disable-cgi \
diff --git a/packages/modphp/modphp_5.1.6.bb b/packages/modphp/modphp_5.1.6.bb
index cc0287b102..382789975d 100644
--- a/packages/modphp/modphp_5.1.6.bb
+++ b/packages/modphp/modphp_5.1.6.bb
@@ -1,2 +1,2 @@
include modphp5.inc
-PR='r1'
+PR='r2'
diff --git a/packages/modutils/modutils-collateral.bb b/packages/modutils/modutils-collateral.bb
index 5c502021f9..6d010a5754 100644
--- a/packages/modutils/modutils-collateral.bb
+++ b/packages/modutils/modutils-collateral.bb
@@ -1,6 +1,6 @@
SECTION = "base"
DESCRIPTION = "modutils configuration files"
-PR = "r2"
+PR = "r3"
LICENSE = "MIT"
SRC_URI = "file://modules \
@@ -12,5 +12,10 @@ do_compile () {
do_install () {
install -d ${D}${sysconfdir}
install -m 0644 ${WORKDIR}/modules ${D}${sysconfdir}/modules
- install -m 0644 ${WORKDIR}/modules.conf ${D}${sysconfdir}/modules.conf
+ if [ ${MAJOR_KERNEL_VERSION}=2.6 ]; then
+ install -d ${D}${sysconfdir}/modprobe.d
+ else
+ install -m 0644 ${WORKDIR}/modules.conf ${D}${sysconfdir}/modules.conf
+ fi
+
}
diff --git a/packages/mono/.mtn2git_empty b/packages/mono/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mono/.mtn2git_empty
diff --git a/packages/mono/files/.mtn2git_empty b/packages/mono/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mono/files/.mtn2git_empty
diff --git a/packages/mono/files/cpu-arm.h b/packages/mono/files/cpu-arm.h
new file mode 100644
index 0000000000..29ece47036
--- /dev/null
+++ b/packages/mono/files/cpu-arm.h
@@ -0,0 +1,756 @@
+/* File automatically generated by genmdesc, don't change */
+
+const char * const arm_cpu_desc [OP_LAST] = {
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* nop */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* break */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldarg.0 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldarg.1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldarg.2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldarg.3 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldloc.0 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldloc.1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldloc.2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldloc.3 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stloc.0 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stloc.1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stloc.2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stloc.3 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldarg.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldarga.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* starg.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldloc.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldloca.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stloc.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldnull */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.i4.m1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.i4.0 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.i4.1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.i4.2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.i4.3 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.i4.4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.i4.5 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.i4.6 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.i4.7 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.i4.8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.i4.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.i4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.i8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.r4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldc.r8 */
+ NULL, /* unused99 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* dup */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* pop */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x5c" "", /* jmp */
+ "a\x0" "\x0" "\x0" "c\x0" "\x0" "\x0" "\x14" "", /* call */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* calli */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ret */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* br.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* brfalse.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* brtrue.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* beq.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* bge.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* bgt.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ble.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* blt.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* bne.un.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* bge.un.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* bgt.un.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ble.un.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* blt.un.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* br */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* brfalse */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* brtrue */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* beq */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* bge */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* bgt */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* ble */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* blt */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* bne.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* bge.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* bgt.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* ble.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* blt.un */
+ "\x0" "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* switch */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* ldind.i1 */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* ldind.u1 */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* ldind.i2 */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* ldind.u2 */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* ldind.i4 */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* ldind.u4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldind.i8 */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* ldind.i */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldind.r4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldind.r8 */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* ldind.ref */
+ "\x0" "bi\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stind.ref */
+ "\x0" "bi\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stind.i1 */
+ "\x0" "bi\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stind.i2 */
+ "\x0" "bi\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stind.i4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stind.i8 */
+ "\x0" "bf\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stind.r4 */
+ "\x0" "bf\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stind.r8 */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* add */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* sub */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* mul */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x28" "", /* div */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* div.un */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "0", /* rem */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x18" "", /* rem.un */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* and */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* or */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* xor */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* shl */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* shr */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* shr.un */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* neg */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* not */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* conv.i1 */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* conv.i2 */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* conv.i4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.i8 */
+ "fi\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x24" "", /* conv.r4 */
+ "fi\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x24" "", /* conv.r8 */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.u4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.u8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* callvirt */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* cpobj */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldobj */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldstr */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* newobj */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* castclass */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* isinst */
+ "fi\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "8", /* conv.r.un */
+ NULL, /* unused58 */
+ NULL, /* unused1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* unbox */
+ "\x0" "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* throw */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldfld */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldflda */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stfld */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldsfld */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldsflda */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stsfld */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stobj */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.i1.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.i2.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.i4.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.i8.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.u1.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.u2.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.u4.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.u8.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.i.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.u.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* box */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* newarr */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldlen */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldelema */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldelem.i1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldelem.u1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldelem.i2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldelem.u2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldelem.i4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldelem.u4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldelem.i8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldelem.i */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldelem.r4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldelem.r8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldelem.ref */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stelem.i */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stelem.i1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stelem.i2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stelem.i4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stelem.i8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stelem.r4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stelem.r8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stelem.ref */
+ NULL, /* ldelem.any */
+ NULL, /* stelem.any */
+ NULL, /* unbox.any */
+ NULL, /* unused5 */
+ NULL, /* unused6 */
+ NULL, /* unused7 */
+ NULL, /* unused8 */
+ NULL, /* unused9 */
+ NULL, /* unused10 */
+ NULL, /* unused11 */
+ NULL, /* unused12 */
+ NULL, /* unused13 */
+ NULL, /* unused14 */
+ NULL, /* unused15 */
+ NULL, /* unused16 */
+ NULL, /* unused17 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.i1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.u1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.i2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.u2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.i4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.u4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.i8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.u8 */
+ NULL, /* unused50 */
+ NULL, /* unused18 */
+ NULL, /* unused19 */
+ NULL, /* unused20 */
+ NULL, /* unused21 */
+ NULL, /* unused22 */
+ NULL, /* unused23 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* refanyval */
+ "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x18" "", /* ckfinite */
+ NULL, /* unused24 */
+ NULL, /* unused25 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* mkrefany */
+ NULL, /* unused59 */
+ NULL, /* unused60 */
+ NULL, /* unused61 */
+ NULL, /* unused62 */
+ NULL, /* unused63 */
+ NULL, /* unused64 */
+ NULL, /* unused65 */
+ NULL, /* unused66 */
+ NULL, /* unused67 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldtoken */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* conv.u2 */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* conv.u1 */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* conv.i */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.i */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* conv.ovf.u */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* add.ovf */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* add.ovf.un */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* mul.ovf */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* mul.ovf.un */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* sub.ovf */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* sub.ovf.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* endfinally */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* leave */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* leave.s */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stind.i */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* conv.u */
+ NULL, /* unused26 */
+ NULL, /* unused27 */
+ NULL, /* unused28 */
+ NULL, /* unused29 */
+ NULL, /* unused30 */
+ NULL, /* unused31 */
+ NULL, /* unused32 */
+ NULL, /* unused33 */
+ NULL, /* unused34 */
+ NULL, /* unused35 */
+ NULL, /* unused36 */
+ NULL, /* unused37 */
+ NULL, /* unused38 */
+ NULL, /* unused39 */
+ NULL, /* unused40 */
+ NULL, /* unused41 */
+ NULL, /* unused42 */
+ NULL, /* unused43 */
+ NULL, /* unused44 */
+ NULL, /* unused45 */
+ NULL, /* unused46 */
+ NULL, /* unused47 */
+ NULL, /* unused48 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* prefix7 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* prefix6 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* prefix5 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* prefix4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* prefix3 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* prefix2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* prefix1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* prefixref */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* arglist */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* ceq */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* cgt */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* cgt.un */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* clt */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* clt.un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldftn */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldvirtftn */
+ NULL, /* unused56 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldarg */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldarga */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* starg */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldloc */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldloca */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* stloc */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x3c" "", /* localloc */
+ NULL, /* unused57 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* endfilter */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* unaligned. */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* volatile. */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* tail. */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* initobj */
+ NULL, /* constrained. */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* cpblk */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* initblk */
+ NULL, /* no. */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* rethrow */
+ NULL, /* unused */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* sizeof */
+ NULL, /* refanytype */
+ NULL, /* readonly. */
+ NULL, /* unused53 */
+ NULL, /* unused54 */
+ NULL, /* unused55 */
+ NULL, /* unused70 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* illegal */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* endmac */
+ NULL, /* mono_icall */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* mono_objaddr */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* mono_ldptr */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* mono_vtaddr */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* mono_newobj */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* mono_retobj */
+ NULL, /* mono_ldnativeobj */
+ NULL, /* mono_cisinst */
+ NULL, /* mono_ccastclass */
+ NULL, /* mono_save_lmf */
+ NULL, /* mono_restore_lmf */
+ NULL, /* mono_classconst */
+ NULL, /* mono_not_taken */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* load */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* ldaddr */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* store */
+ NULL, /* objaddr */
+ NULL, /* vtaddr */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* phi */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* rename */
+ "\x0" "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* compare */
+ "\x0" "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* compare_imm */
+ "\x0" "ff\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* fcompare */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* lcompare */
+ NULL, /* icompare */
+ NULL, /* icompare_imm */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* local */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* arg */
+ "\x0" "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* oparglist */
+ "\x0" "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x1" "", /* outarg */
+ NULL, /* outarg_reg */
+ NULL, /* outarg_freg */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* outarg_imm */
+ NULL, /* outarg_r4 */
+ NULL, /* outarg_r8 */
+ NULL, /* outarg_vt */
+ NULL, /* outarg_membase */
+ NULL, /* inarg_vt */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* retarg */
+ "ai\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* setret */
+ NULL, /* setfret */
+ "\x0" "ii\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* setlret */
+ "ii\x0" "\x0" "r\x0" "\x0" "\x0" "\x4" "", /* setreg */
+ "i\x0" "\x0" "\x0" "r\x0" "\x0" "\x0" "\x10" "", /* setregimm */
+ "ff\x0" "\x0" "r\x0" "\x0" "\x0" "\x4" "", /* setfreg */
+ "\x0" "b\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* checkthis */
+ "\x0" "\x0" "\x0" "\x0" "c\x0" "\x0" "\x0" "\x14" "", /* voidcall */
+ NULL, /* voidcallvirt */
+ "\x0" "i\x0" "\x0" "c\x0" "\x0" "\x0" "\x8" "", /* voidcall_reg */
+ "\x0" "b\x0" "\x0" "c\x0" "\x0" "\x0" "\xc" "", /* voidcall_membase */
+ "g\x0" "\x0" "\x0" "c\x0" "\x0" "\x0" "\x14" "", /* fcall */
+ NULL, /* fcallvirt */
+ "gi\x0" "\x0" "c\x0" "\x0" "\x0" "\x8" "", /* fcall_reg */
+ "gb\x0" "\x0" "c\x0" "\x0" "\x0" "\xc" "", /* fcall_membase */
+ "l\x0" "\x0" "\x0" "c\x0" "\x0" "\x0" "\x14" "", /* lcall */
+ NULL, /* lcallvirt */
+ "li\x0" "\x0" "c\x0" "\x0" "\x0" "\x8" "", /* lcall_reg */
+ "lb\x0" "\x0" "c\x0" "\x0" "\x0" "\xc" "", /* lcall_membase */
+ "\x0" "\x0" "\x0" "\x0" "c\x0" "\x0" "\x0" "\x14" "", /* vcall */
+ NULL, /* vcallvirt */
+ "\x0" "i\x0" "\x0" "c\x0" "\x0" "\x0" "\x8" "", /* vcall_reg */
+ "\x0" "b\x0" "\x0" "c\x0" "\x0" "\x0" "\xc" "", /* vcall_membase */
+ "ai\x0" "\x0" "c\x0" "\x0" "\x0" "\x8" "", /* call_reg */
+ "ab\x0" "\x0" "c\x0" "\x0" "\x0" "\xc" "", /* call_membase */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* trap */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* iconst */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* i8const */
+ "f\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* r4const */
+ "f\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* r8const */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* regvar */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* reg */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* regoffset */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* label */
+ NULL, /* check_array_type */
+ NULL, /* array_rank */
+ NULL, /* throw_or_null */
+ "\x0" "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* op_rethrow */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* refanytype */
+ NULL, /* op_newobj */
+ "b\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* store_membase_imm */
+ "bi\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* store_membase_reg */
+ "b\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* storei1_membase_imm */
+ "bi\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* storei1_membase_reg */
+ "b\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* storei2_membase_imm */
+ "bi\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* storei2_membase_reg */
+ "b\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* storei4_membase_imm */
+ "bi\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* storei4_membase_reg */
+ "b\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* storei8_membase_imm */
+ "bi\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* storei8_membase_reg */
+ "bf\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* storer4_membase_reg */
+ "bf\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* storer8_membase_reg */
+ "ib\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* load_membase */
+ "ib\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadi1_membase */
+ "ib\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadu1_membase */
+ "ib\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadi2_membase */
+ "ib\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadu2_membase */
+ "ib\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadi4_membase */
+ "ib\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadu4_membase */
+ "ib\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* loadi8_membase */
+ "fb\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadr4_membase */
+ "fb\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadr8_membase */
+ "ibi\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* load_memindex */
+ "ibi\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadi1_memindex */
+ "ibi\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadu1_memindex */
+ "ibi\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadi2_memindex */
+ "ibi\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadu2_memindex */
+ "ibi\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadi4_memindex */
+ "ibi\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* loadu4_memindex */
+ NULL, /* loadi8_memindex */
+ NULL, /* loadr4_memindex */
+ NULL, /* loadr8_memindex */
+ "bii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* store_memindex */
+ "bii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* storei1_memindex */
+ "bii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* storei2_memindex */
+ "bii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* storei4_memindex */
+ NULL, /* storei8_memindex */
+ NULL, /* storer4_memindex */
+ NULL, /* storer8_memindex */
+ NULL, /* loadr8_spill_membase */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* loadu4_mem */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* move */
+ "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* fmove */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* add_imm */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* sub_imm */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* mul_imm */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* div_imm */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* div_un_imm */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x1c" "", /* rem_imm */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* rem_un_imm */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* and_imm */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* or_imm */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* xor_imm */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* shl_imm */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* shr_imm */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* shr_un_imm */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* cond_exc_eq */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* cond_exc_ge */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* cond_exc_gt */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* cond_exc_le */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* cond_exc_lt */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* cond_exc_ne_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* cond_exc_ge_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* cond_exc_gt_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* cond_exc_le_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* cond_exc_lt_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* cond_exc_ov */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* cond_exc_no */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* cond_exc_c */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* cond_exc_nc */
+ NULL, /* cond_exc_ieq */
+ NULL, /* cond_exc_ige */
+ NULL, /* cond_exc_igt */
+ NULL, /* cond_exc_ile */
+ NULL, /* cond_exc_ilt */
+ NULL, /* cond_exc_ine_un */
+ NULL, /* cond_exc_ige_un */
+ NULL, /* cond_exc_igt_un */
+ NULL, /* cond_exc_ile_un */
+ NULL, /* cond_exc_ilt_un */
+ NULL, /* cond_exc_iov */
+ NULL, /* cond_exc_ino */
+ NULL, /* cond_exc_ic */
+ NULL, /* cond_exc_inc */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_add */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_sub */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_mul */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_div */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_div_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_rem */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_rem_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_and */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_or */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_xor */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_shl */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_shr */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_shr_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_neg */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_not */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_i1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_i2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_i4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_i8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_r4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_r8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_u4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_u8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_u2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_u1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_i */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x1e" "", /* long_conv_to_ovf_i */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_u */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_add_ovf */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_add_ovf_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_mul_ovf */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_mul_ovf_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_sub_ovf */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_sub_ovf_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_i1_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_i2_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_i4_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_i8_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_u1_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_u2_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_u4_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_u8_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_i_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_u_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_i1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_u1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_i2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_u2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_i4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_u4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_i8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_ovf_u8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_ceq */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_cgt */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_cgt_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_clt */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_clt_un */
+ "fii\x0" "\x0" "\x0" "\x0" "\x0" "\x25" "", /* long_conv_to_r_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_conv_to_u */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_shr_imm */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_shr_un_imm */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_shl_imm */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_add_imm */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_sub_imm */
+ NULL, /* long_mul_imm */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_beq */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_bne_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_blt */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_blt_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_bgt */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_btg_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_bge */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_bge_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_ble */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* long_ble_un */
+ NULL, /* long_shr_un_32 */
+ NULL, /* int_add */
+ NULL, /* int_sub */
+ NULL, /* int_mul */
+ NULL, /* int_div */
+ NULL, /* int_div_un */
+ NULL, /* int_rem */
+ NULL, /* int_rem_un */
+ NULL, /* int_and */
+ NULL, /* int_or */
+ NULL, /* int_xor */
+ NULL, /* int_shl */
+ NULL, /* int_shr */
+ NULL, /* int_shr_un */
+ NULL, /* int_neg */
+ NULL, /* int_not */
+ NULL, /* int_conv_to_i1 */
+ NULL, /* int_conv_to_i2 */
+ NULL, /* int_conv_to_i4 */
+ NULL, /* int_conv_to_i8 */
+ NULL, /* int_conv_to_r4 */
+ NULL, /* int_conv_to_r8 */
+ NULL, /* int_conv_to_u4 */
+ NULL, /* int_conv_to_u8 */
+ NULL, /* int_conv_to_u2 */
+ NULL, /* int_conv_to_u1 */
+ NULL, /* int_conv_to_i */
+ NULL, /* int_conv_to_ovf_i */
+ NULL, /* int_conv_to_ovf_u */
+ NULL, /* int_add_ovf */
+ NULL, /* int_add_ovf_un */
+ NULL, /* int_mul_ovf */
+ NULL, /* int_mul_ovf_un */
+ NULL, /* int_sub_ovf */
+ NULL, /* int_sub_ovf_un */
+ NULL, /* int_conv_to_ovf_i1_un */
+ NULL, /* int_conv_to_ovf_i2_un */
+ NULL, /* int_conv_to_ovf_i4_un */
+ NULL, /* int_conv_to_ovf_i8_un */
+ NULL, /* int_conv_to_ovf_u1_un */
+ NULL, /* int_conv_to_ovf_u2_un */
+ NULL, /* int_conv_to_ovf_u4_un */
+ NULL, /* int_conv_to_ovf_u8_un */
+ NULL, /* int_conv_to_ovf_i_un */
+ NULL, /* int_conv_to_ovf_u_un */
+ NULL, /* int_conv_to_ovf_i1 */
+ NULL, /* int_conv_to_ovf_u1 */
+ NULL, /* int_conv_to_ovf_i2 */
+ NULL, /* int_conv_to_ovf_u2 */
+ NULL, /* int_conv_to_ovf_i4 */
+ NULL, /* int_conv_to_ovf_u4 */
+ NULL, /* int_conv_to_ovf_i8 */
+ NULL, /* int_conv_to_ovf_u8 */
+ NULL, /* int_adc */
+ NULL, /* int_adc_imm */
+ NULL, /* int_sbb */
+ NULL, /* int_sbb_imm */
+ NULL, /* int_addcc */
+ NULL, /* int_subcc */
+ NULL, /* int_add_imm */
+ NULL, /* int_sub_imm */
+ NULL, /* int_mul_imm */
+ NULL, /* int_div_imm */
+ NULL, /* int_div_un_imm */
+ NULL, /* int_rem_imm */
+ NULL, /* int_rem_un_imm */
+ NULL, /* int_and_imm */
+ NULL, /* int_or_imm */
+ NULL, /* int_xor_imm */
+ NULL, /* int_shl_imm */
+ NULL, /* int_shr_imm */
+ NULL, /* int_shr_un_imm */
+ NULL, /* int_ceq */
+ NULL, /* int_cgt */
+ NULL, /* int_cgt_un */
+ NULL, /* int_clt */
+ NULL, /* int_clt_un */
+ NULL, /* int_beq */
+ NULL, /* int_bne_un */
+ NULL, /* int_blt */
+ NULL, /* int_blt_un */
+ NULL, /* int_bgt */
+ NULL, /* int_bgt_un */
+ NULL, /* int_bge */
+ NULL, /* int_bge_un */
+ NULL, /* int_ble */
+ NULL, /* int_ble_un */
+ "\x0" "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* float_beq */
+ "\x0" "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* float_bne_un */
+ "\x0" "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* float_blt */
+ "\x0" "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* float_blt_un */
+ "\x0" "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* float_bgt */
+ "\x0" "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* float_btg_un */
+ "\x0" "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* float_bge */
+ "\x0" "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* float_bge_un */
+ "\x0" "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* float_ble */
+ "\x0" "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* float_ble_un */
+ "fff\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* float_add */
+ "fff\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* float_sub */
+ "fff\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* float_mul */
+ "fff\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* float_div */
+ "fff\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* float_div_un */
+ "fff\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* float_rem */
+ "fff\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* float_rem_un */
+ "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* float_neg */
+ "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* float_not */
+ "if\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x28" "", /* float_conv_to_i1 */
+ "if\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x28" "", /* float_conv_to_i2 */
+ "if\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x28" "", /* float_conv_to_i4 */
+ "lf\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x28" "", /* float_conv_to_i8 */
+ "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* float_conv_to_r4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_r8 */
+ "if\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x28" "", /* float_conv_to_u4 */
+ "lf\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x28" "", /* float_conv_to_u8 */
+ "if\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x28" "", /* float_conv_to_u2 */
+ "if\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x28" "", /* float_conv_to_u1 */
+ "if\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x28" "", /* float_conv_to_i */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_i */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovd_u */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_add_ovf */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_add_ovf_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_mul_ovf */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_mul_ovf_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_sub_ovf */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_sub_ovf_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_i1_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_i2_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_i4_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_i8_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_u1_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_u2_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_u4_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_u8_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_i_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_u_un */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_i1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_u1 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_i2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_u2 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_i4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_u4 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_i8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "", /* float_conv_to_ovf_u8 */
+ "iff\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* float_ceq */
+ "iff\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* float_cgt */
+ "iff\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* float_cgt_un */
+ "iff\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* float_clt */
+ "iff\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* float_clt_un */
+ NULL, /* float_ceq_membase */
+ NULL, /* float_cgt_membase */
+ NULL, /* float_cgt_un_membase */
+ NULL, /* float_clt_membase */
+ NULL, /* float_clt_un_membase */
+ "if\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x24" "", /* float_conv_to_u */
+ NULL, /* group */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* aot_const */
+ NULL, /* patch_info */
+ NULL, /* got_entry */
+ NULL, /* unboxcast */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* call_handler */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x14" "", /* start_handler */
+ "\x0" "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* op_endfilter */
+ "lii\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* op_bigmul */
+ "lii\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* op_bigmul_un */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* adc */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* adc_imm */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* sbb */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* sbb_imm */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* addcc */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* addcc_imm */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* subcc */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\xc" "", /* subcc_imm */
+ "\x0" "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* br_reg */
+ NULL, /* sext_i1 */
+ NULL, /* sext_i2 */
+ NULL, /* sext_i4 */
+ NULL, /* zext_i1 */
+ NULL, /* zext_i2 */
+ NULL, /* zext_i4 */
+ NULL, /* cne */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* add_ovf_carry */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* sub_ovf_carry */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* add_ovf_un_carry */
+ "iii\x0" "\x0" "\x0" "\x0" "\x0" "\x10" "", /* sub_ovf_un_carry */
+ NULL, /* sin */
+ NULL, /* cos */
+ NULL, /* abs */
+ NULL, /* tan */
+ NULL, /* atan */
+ "ff\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* sqrt */
+ NULL, /* getchar */
+ NULL, /* str_char_addr */
+ NULL, /* strlen */
+ NULL, /* gettype */
+ NULL, /* gethashcode */
+ NULL, /* getldelema2 */
+ NULL, /* memcpy */
+ NULL, /* memset */
+ NULL, /* cisinst */
+ NULL, /* ccastclass */
+ NULL, /* save_lmf */
+ NULL, /* restore_lmf */
+ "i\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x8" "", /* tls_get */
+ NULL, /* load_gotaddr */
+ NULL, /* dummy_use */
+ NULL, /* dummy_store */
+ NULL, /* not_reached */
+ NULL, /* atomic_add_i4 */
+ NULL, /* atomic_add_new_i4 */
+ NULL, /* atomic_add_imm_i4 */
+ NULL, /* atomic_add_imm_new_i4 */
+ NULL, /* atomic_exchange_i4 */
+ NULL, /* atomic_add_i8 */
+ NULL, /* atomic_add_new_i8 */
+ NULL, /* atomic_add_imm_i8 */
+ NULL, /* atomic_add_imm_new_i8 */
+ NULL, /* atomic_exchange_i8 */
+ "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* memory_barrier */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* arm_rsbs_imm */
+ "ii\x0" "\x0" "\x0" "\x0" "\x0" "\x0" "\x4" "", /* arm_rsc_imm */
+};
+
diff --git a/packages/mono/mono-native_1.2.2.1.bb b/packages/mono/mono-native_1.2.2.1.bb
new file mode 100644
index 0000000000..67651ae565
--- /dev/null
+++ b/packages/mono/mono-native_1.2.2.1.bb
@@ -0,0 +1,5 @@
+require mono.inc
+
+DEPENDS = "glib-2.0-native"
+
+inherit native
diff --git a/packages/mono/mono.inc b/packages/mono/mono.inc
new file mode 100644
index 0000000000..444427ea4a
--- /dev/null
+++ b/packages/mono/mono.inc
@@ -0,0 +1,17 @@
+DESCRIPTION = "Mono Programming Language"
+SECTION = "devel/mono"
+LICENSE = "GPL LGPL X11"
+
+SRC_URI = "http://go-mono.com/sources/mono/mono-${PV}.tar.gz \
+ file://cpu-arm.h"
+
+S = "${WORKDIR}/mono-${PV}"
+
+inherit autotools
+
+EXTRA_OECONF = "--disable-mcs-build"
+EXTRA_OECONF_arm = "--without-tls"
+
+do_compile_prepend() {
+ cp ${WORKDIR}/cpu-arm.h ${S}/mono/mini/
+}
diff --git a/packages/mono/mono_1.2.2.1.bb b/packages/mono/mono_1.2.2.1.bb
new file mode 100644
index 0000000000..7d7134e2b2
--- /dev/null
+++ b/packages/mono/mono_1.2.2.1.bb
@@ -0,0 +1,17 @@
+require mono.inc
+DEPENDS = "mono-native glib-2.0"
+
+PR = "r1"
+
+#We only have a cpu-${arch}.h from arm, so let's mask out non-working architectures
+COMPATIBLE_HOST = "arm.*-linux"
+
+do_install_append() {
+ install -d ${D}${libdir}/mono/1.0/
+ cp ${S}/mcs/class/lib/monolite/* ${D}${libdir}/mono/1.0/
+}
+
+PACKAGES =+ "mono-dll"
+FILES_mono-dll = "${libdir}/mono/1.0/"
+
+
diff --git a/packages/monotone/monotone-6_0.33.bb b/packages/monotone/monotone-6_0.33.bb
new file mode 100644
index 0000000000..64b1d1699e
--- /dev/null
+++ b/packages/monotone/monotone-6_0.33.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 = "r1"
+
+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/monotone/monotone-6_0.34.bb b/packages/monotone/monotone-6_0.34.bb
new file mode 100644
index 0000000000..0442e0232e
--- /dev/null
+++ b/packages/monotone/monotone-6_0.34.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/files/arm/.mtn2git_empty b/packages/mozilla/files/arm/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mozilla/files/arm/.mtn2git_empty
diff --git a/packages/mozilla/files/arm/jsautocfg.h b/packages/mozilla/files/arm/jsautocfg.h
new file mode 100644
index 0000000000..7e8171fc23
--- /dev/null
+++ b/packages/mozilla/files/arm/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/files/eabi-fix.patch b/packages/mozilla/files/eabi-fix.patch
new file mode 100644
index 0000000000..fd3bb88683
--- /dev/null
+++ b/packages/mozilla/files/eabi-fix.patch
@@ -0,0 +1,66 @@
+http://lists.debian.org/debian-arm/2007/05/msg00039.html
+
+From: Lennert Buytenhek <buytenh@wantstofly.org>
+
+Hi,
+
+The reason that building nss (i.e., firefox) would segfault on ARM EABI
+systems is an assumption about the layout of the jmp_buf structure in
+the nspr library (which nss depends on) that does hold on old-ABI but
+no longer holds on EABI. The attached patch fixes this assumption,
+and fixes the shlibsign segfault during the building of nss (it also
+fixes a floating point byte order assumption.)
+
+Looks sane?
+
+It's of course a stupid idea to depend on a particular layout of the
+jmp_buf structure in application programs, but oh well. People write
+ugly buggy code, film at 11.
+
+
+--- mozilla/nsprpub/pr/src/misc/prdtoa.c.orig 2007-05-06 02:39:00.000000000 +0200
++++ mozilla/nsprpub/pr/src/misc/prdtoa.c 2007-05-06 02:39:22.000000000 +0200
+@@ -59,8 +59,8 @@
+ /* FIXME: deal with freelist and p5s. */
+ }
+
+-#if defined(__arm) || defined(__arm__) || defined(__arm26__) \
+- || defined(__arm32__)
++#if (defined(__arm) || defined(__arm__) || defined(__arm26__) \
++ || defined(__arm32__)) && !defined(__ARM_EABI__) && !defined(__ARMEB__)
+ #define IEEE_ARM
+ #elif defined(IS_LITTLE_ENDIAN)
+ #define IEEE_8087
+--- mozilla/nsprpub/pr/include/md/_linux.h.orig 2007-05-06 02:39:45.000000000 +0200
++++ mozilla/nsprpub/pr/include/md/_linux.h 2007-05-06 02:40:57.000000000 +0200
+@@ -346,7 +346,7 @@
+ #error "Linux/MIPS pre-glibc2 not supported yet"
+ #endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */
+
+-#elif defined(__arm__)
++#elif defined(__arm__) && !defined(__ARM_EABI__)
+ /* ARM/Linux */
+ #if defined(__GLIBC__) && __GLIBC__ >= 2
+ #define _MD_GET_SP(_t) (_t)->md.context[0].__jmpbuf[20]
+@@ -358,6 +358,18 @@
+ #error "ARM/Linux pre-glibc2 not supported yet"
+ #endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */
+
++#elif defined(__arm__) && defined(__ARM_EABI__)
++/* ARM/Linux */
++#if defined(__GLIBC__) && __GLIBC__ >= 2
++#define _MD_GET_SP(_t) (_t)->md.context[0].__jmpbuf[8]
++#define _MD_SET_FP(_t, val) ((_t)->md.context[0].__jmpbuf[7] = (val))
++#define _MD_GET_SP_PTR(_t) &(_MD_GET_SP(_t))
++#define _MD_GET_FP_PTR(_t) (&(_t)->md.context[0].__jmpbuf[7])
++#define _MD_SP_TYPE __ptr_t
++#else
++#error "ARM/Linux pre-glibc2 not supported yet"
++#endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */
++
+ #else
+
+ #error "Unknown CPU architecture"
+
+
+
diff --git a/packages/mozilla/files/eabi-fix2.patch b/packages/mozilla/files/eabi-fix2.patch
new file mode 100644
index 0000000000..5f64e7f796
--- /dev/null
+++ b/packages/mozilla/files/eabi-fix2.patch
@@ -0,0 +1,56 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=369722
+
+Index: js/src/jsnum.h
+===================================================================
+RCS file: /cvsroot/mozilla/js/src/jsnum.h,v
+retrieving revision 3.27
+diff -p -u -8 -r3.27 jsnum.h
+--- mozilla/js/src/jsnum.h 21 Dec 2006 01:00:32 -0000 3.27
++++ mozilla/js/src/jsnum.h 8 Feb 2007 12:13:01 -0000
+@@ -52,23 +52,24 @@ JS_BEGIN_EXTERN_C
+
+ /*
+ * Stefan Hanske <sh990154@mail.uni-greifswald.de> reports:
+ * ARM is a little endian architecture but 64 bit double words are stored
+ * differently: the 32 bit words are in little endian byte order, the two words
+ * are stored in big endian`s way.
+ */
+
+-#if defined(__arm) || defined(__arm32__) || defined(__arm26__) || defined(__arm__)
+-#define CPU_IS_ARM
++#if !defined(__ARM_EABI__) && \
++ (defined(__arm) || defined(__arm32__) || defined(__arm26__) || defined(__arm__))
++#define IEEE_ARM
+ #endif
+
+ typedef union jsdpun {
+ struct {
+-#if defined(IS_LITTLE_ENDIAN) && !defined(CPU_IS_ARM)
++#if defined(IS_LITTLE_ENDIAN) && !defined(IEEE_ARM)
+ uint32 lo, hi;
+ #else
+ uint32 hi, lo;
+ #endif
+ } s;
+ jsdouble d;
+ } jsdpun;
+
+@@ -87,17 +88,17 @@ typedef union jsdpun {
+
+ #else /* not or old GNUC */
+
+ /*
+ * We don't know of any non-gcc compilers that perform alias optimization,
+ * so this code should work.
+ */
+
+-#if defined(IS_LITTLE_ENDIAN) && !defined(CPU_IS_ARM)
++#if defined(IS_LITTLE_ENDIAN) && !defined(IEEE_ARM)
+ #define JSDOUBLE_HI32(x) (((uint32 *)&(x))[1])
+ #define JSDOUBLE_LO32(x) (((uint32 *)&(x))[0])
+ #else
+ #define JSDOUBLE_HI32(x) (((uint32 *)&(x))[0])
+ #define JSDOUBLE_LO32(x) (((uint32 *)&(x))[1])
+ #endif
+
+ #define JSDOUBLE_SET_HI32(x, y) (JSDOUBLE_HI32(x)=(y))
diff --git a/packages/mozilla/files/eabi-fix3.patch b/packages/mozilla/files/eabi-fix3.patch
new file mode 100644
index 0000000000..8bf8c2f4da
--- /dev/null
+++ b/packages/mozilla/files/eabi-fix3.patch
@@ -0,0 +1,15 @@
+From: Marcin Juszkiewicz <openembedded@hrw.one.pl>
+
+Index: mozilla/extensions/transformiix/source/base/Double.cpp
+===================================================================
+--- mozilla.orig/extensions/transformiix/source/base/Double.cpp 2007-05-09 11:21:34.000000000 +0200
++++ mozilla/extensions/transformiix/source/base/Double.cpp 2007-05-09 11:23:59.000000000 +0200
+@@ -71,7 +71,7 @@
+ * are stored in big endian`s way.
+ */
+
+-#if defined(__arm) || defined(__arm32__) || defined(_arm26__) || defined(__arm__)
++#if !defined(__ARM_EABI__) && defined(__arm) || defined(__arm32__) || defined(_arm26__) || defined(__arm__)
+ #define CPU_IS_ARM
+ #endif
+
diff --git a/packages/mozilla/files/powerpc/.mtn2git_empty b/packages/mozilla/files/powerpc/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mozilla/files/powerpc/.mtn2git_empty
diff --git a/packages/mozilla/files/powerpc/jsautocfg.h b/packages/mozilla/files/powerpc/jsautocfg.h
new file mode 100644
index 0000000000..93d03744f2
--- /dev/null
+++ b/packages/mozilla/files/powerpc/jsautocfg.h
@@ -0,0 +1,52 @@
+#ifndef js_cpucfg___
+#define js_cpucfg___
+
+/* AUTOMATICALLY GENERATED - DO NOT EDIT */
+
+#undef IS_LITTLE_ENDIAN
+#define IS_BIG_ENDIAN 1
+
+#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/firefox-1.0.7/jsautocfg.h b/packages/mozilla/firefox-1.0.7/jsautocfg.h
deleted file mode 100644
index 05f3dad50a..0000000000
--- a/packages/mozilla/firefox-1.0.7/jsautocfg.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef js_cpucfg___
-#define js_cpucfg___
-
-/* Lovingly crafted by hand avoiding Mozilla stupidity */
-
-#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 4L
-#define JS_ALIGN_OF_FLOAT 4L
-#define JS_ALIGN_OF_DOUBLE 4L
-#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 2L
-
-#define JS_STACK_GROWTH_DIRECTION (-1)
-
-#endif /* js_cpucfg___ */
diff --git a/packages/mozilla/firefox-1.0.7/mozilla-eabi.patch b/packages/mozilla/firefox-1.0.7/mozilla-eabi.patch
new file mode 100644
index 0000000000..c12f6ef04e
--- /dev/null
+++ b/packages/mozilla/firefox-1.0.7/mozilla-eabi.patch
@@ -0,0 +1,28 @@
+Index: mozilla/nsprpub/pr/src/misc/prdtoa.c
+===================================================================
+--- mozilla.orig/nsprpub/pr/src/misc/prdtoa.c 2004-03-12 07:30:50.000000000 +0000
++++ mozilla/nsprpub/pr/src/misc/prdtoa.c 2007-05-07 11:35:10.000000000 +0100
+@@ -132,8 +132,8 @@
+ * is not strictly legal and can cause trouble with aggressively
+ * optimizing compilers (e.g., gcc 2.95.1 under -O2).
+ */
+-#if defined(__arm) || defined(__arm__) || defined(__arm26__) \
+- || defined(__arm32__)
++#if (defined(__arm) || defined(__arm__) || defined(__arm26__) \
++ || defined(__arm32__)) && !defined(__ARM_EABI__) && !defined(__ARMEB__)
+ #define IEEE_ARM
+ #elif defined(IS_LITTLE_ENDIAN)
+ #define IEEE_8087
+Index: mozilla/nsprpub/pr/include/md/_linux.h
+===================================================================
+--- mozilla.orig/nsprpub/pr/include/md/_linux.h 2005-05-04 19:06:17.000000000 +0100
++++ mozilla/nsprpub/pr/include/md/_linux.h 2007-05-07 11:34:16.000000000 +0100
+@@ -285,7 +285,7 @@
+ #error "Linux/MIPS pre-glibc2 not supported yet"
+ #endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */
+
+-#elif defined(__arm__)
++#elif defined(__arm__) && !defined(__ARM_EABI__)
+ /* ARM/Linux */
+ #if defined(__GLIBC__) && __GLIBC__ >= 2
+ #define _MD_GET_SP(_t) (_t)->md.context[0].__jmpbuf[20]
diff --git a/packages/mozilla/firefox-1.0.7/xptcinvoke-arm.patch b/packages/mozilla/firefox-1.0.7/xptcinvoke-arm.patch
new file mode 100644
index 0000000000..bc0c6f4e5c
--- /dev/null
+++ b/packages/mozilla/firefox-1.0.7/xptcinvoke-arm.patch
@@ -0,0 +1,11 @@
+--- iceweasel-2.0.0.1+dfsg.orig/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp
++++ iceweasel-2.0.0.1+dfsg/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp
+@@ -212,7 +212,7 @@
+ "add sp, sp, r4 \n\t" /* restore stack pointer */
+ "mov %0, r0 \n\t" /* the result... */
+ : "=r" (result)
+- : "r" (&my_params)
++ : "r" (&my_params), "m" (my_params)
+ : "r0", "r1", "r2", "r3", "r4", "ip", "lr", "sp"
+ );
+
diff --git a/packages/mozilla/firefox-1.5.0.6/jsautocfg.h b/packages/mozilla/firefox-1.5.0.6/jsautocfg.h
deleted file mode 100644
index 05f3dad50a..0000000000
--- a/packages/mozilla/firefox-1.5.0.6/jsautocfg.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef js_cpucfg___
-#define js_cpucfg___
-
-/* Lovingly crafted by hand avoiding Mozilla stupidity */
-
-#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 4L
-#define JS_ALIGN_OF_FLOAT 4L
-#define JS_ALIGN_OF_DOUBLE 4L
-#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 2L
-
-#define JS_STACK_GROWTH_DIRECTION (-1)
-
-#endif /* js_cpucfg___ */
diff --git a/packages/mozilla/firefox-1.5.0.6/mozconfig b/packages/mozilla/firefox-1.5.0.6/mozconfig
deleted file mode 100644
index 025b396ac7..0000000000
--- a/packages/mozilla/firefox-1.5.0.6/mozconfig
+++ /dev/null
@@ -1,53 +0,0 @@
-. $topsrcdir/browser/config/mozconfig
-
-# use GTK+-2 widget set with XFT font rendering
-ac_add_options --enable-default-toolkit=gtk2
-ac_add_options --enable-xft
-ac_add_options --disable-freetype2
-
-# enable minimal profile support
-ac_add_options --disable-profilesharing
-ac_add_options --disable-profilelocking
-ac_add_options --enable-single-profile
-
-ac_add_options --with-system-zlib
-ac_add_options --with-system-jpeg
-ac_add_options --with-system-png
-
-ac_add_options --disable-accessibility
-ac_add_options --disable-composer
-#ac_add_options --enable-plaintext-editor-only
-ac_add_options --disable-mailnews
-ac_add_options --disable-ldap
-#ac_add_options --disable-postscript
-ac_add_options --disable-mathml
-ac_add_options --disable-jsd
-ac_add_options --disable-installer
-ac_add_options --disable-xprint
-ac_add_options --disable-necko-disk-cache
-
-# configure necko to allocate smaller network buffers
-ac_add_options --enable-necko-small-buffers
-
-# disable debug logging and tests
-#ac_add_options --disable-dtd-debug
-ac_add_options --disable-logging
-ac_add_options --disable-debug
-ac_add_options --disable-gtktest
-ac_add_options --disable-tests
-
-# build crypto module (PSM + NSS)
-ac_add_options --enable-crypto
-
-# build minimal set of protocol handlers
-ac_add_options --enable-necko-protocols=http,file,res,jar,ftp,about,viewsource
-
-# build minimal set of image decoders
-ac_add_options --enable-image-decoders=png,gif,jpeg
-
-#ac_add_options --enable-reorder
-#ac_add_options --enable-elf-dynstr-gc
-
-# enable static build
-#ac_add_options --disable-shared
-#ac_add_options --enable-static
diff --git a/packages/mozilla/firefox-2.0.0.3/.mtn2git_empty b/packages/mozilla/firefox-2.0.0.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mozilla/firefox-2.0.0.3/.mtn2git_empty
diff --git a/packages/mozilla/firefox-2.0/jsautocfg-dontoverwrite.patch b/packages/mozilla/firefox-2.0.0.3/jsautocfg-dontoverwrite.patch
index 39978cfd11..39978cfd11 100644
--- a/packages/mozilla/firefox-2.0/jsautocfg-dontoverwrite.patch
+++ b/packages/mozilla/firefox-2.0.0.3/jsautocfg-dontoverwrite.patch
diff --git a/packages/mozilla/firefox-2.0.0.3/jsdtoa-float-type.patch b/packages/mozilla/firefox-2.0.0.3/jsdtoa-float-type.patch
new file mode 100644
index 0000000000..028900fa1b
--- /dev/null
+++ b/packages/mozilla/firefox-2.0.0.3/jsdtoa-float-type.patch
@@ -0,0 +1,13 @@
+Index: mozilla/js/src/jsdtoa.c
+===================================================================
+--- mozilla.orig/js/src/jsdtoa.c
++++ mozilla/js/src/jsdtoa.c
+@@ -175,7 +175,7 @@
+ * #define NO_IEEE_Scale to disable new (Feb. 1997) logic in strtod that
+ * avoids underflows on inputs whose result does not underflow.
+ */
+-#ifdef IS_LITTLE_ENDIAN
++#if defined(IS_LITTLE_ENDIAN) && (!defined(__arm__) || defined(__VFP_FP__))
+ #define IEEE_8087
+ #else
+ #define IEEE_MC68k
diff --git a/packages/mozilla/firefox-2.0.0.3/mozconfig b/packages/mozilla/firefox-2.0.0.3/mozconfig
new file mode 100644
index 0000000000..9737330a77
--- /dev/null
+++ b/packages/mozilla/firefox-2.0.0.3/mozconfig
@@ -0,0 +1,57 @@
+. $topsrcdir/browser/config/mozconfig
+
+# use GTK+-2 widget set with XFT font rendering
+ac_add_options --enable-default-toolkit=gtk2
+ac_add_options --enable-xft
+ac_add_options --disable-freetype2
+
+# enable minimal profile support
+ac_add_options --disable-profilesharing
+ac_add_options --disable-profilelocking
+ac_add_options --enable-single-profile
+
+ac_add_options --with-system-zlib
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-png
+
+ac_add_options --disable-accessibility
+ac_add_options --disable-composer
+#ac_add_options --enable-plaintext-editor-only
+ac_add_options --disable-mailnews
+ac_add_options --disable-ldap
+#ac_add_options --disable-postscript
+ac_add_options --disable-mathml
+ac_add_options --disable-jsd
+ac_add_options --disable-installer
+ac_add_options --disable-xprint
+ac_add_options --disable-necko-disk-cache
+
+# configure necko to allocate smaller network buffers
+ac_add_options --enable-necko-small-buffers
+
+# disable debug logging and tests
+#ac_add_options --disable-dtd-debug
+ac_add_options --disable-logging
+ac_add_options --enable-debug=-ggdb
+ac_add_options --disable-gtktest
+ac_add_options --disable-tests
+ac_add_options --disable-printing
+ac_add_options --disable-gnomevfs
+ac_add_options --disable-gnomeui
+
+# build crypto module (PSM + NSS)
+ac_add_options --enable-crypto
+
+# build minimal set of protocol handlers
+ac_add_options --enable-necko-protocols=http,file,res,jar,ftp,about,viewsource
+
+# build minimal set of image decoders
+ac_add_options --enable-image-decoders=png,gif,jpeg
+
+#ac_add_options --enable-reorder
+#ac_add_options --enable-elf-dynstr-gc
+
+# enable static build
+#ac_add_options --disable-shared
+#ac_add_options --enable-static
+ac_add_options --enable-optimize=-O1
diff --git a/packages/mozilla/firefox-2.0.0.3/mozilla-eabi.patch b/packages/mozilla/firefox-2.0.0.3/mozilla-eabi.patch
new file mode 100644
index 0000000000..fe9adf088e
--- /dev/null
+++ b/packages/mozilla/firefox-2.0.0.3/mozilla-eabi.patch
@@ -0,0 +1,42 @@
+--- nspr-4.6.6/mozilla/nsprpub/pr/src/misc/prdtoa.c.orig 2007-05-06 02:39:00.000000000 +0200
++++ nspr-4.6.6/mozilla/nsprpub/pr/src/misc/prdtoa.c 2007-05-06 02:39:22.000000000 +0200
+@@ -59,8 +59,8 @@
+ /* FIXME: deal with freelist and p5s. */
+ }
+
+-#if defined(__arm) || defined(__arm__) || defined(__arm26__) \
+- || defined(__arm32__)
++#if (defined(__arm) || defined(__arm__) || defined(__arm26__) \
++ || defined(__arm32__)) && !defined(__ARM_EABI__) && !defined(__ARMEB__)
+ #define IEEE_ARM
+ #elif defined(IS_LITTLE_ENDIAN)
+ #define IEEE_8087
+--- nspr-4.6.6/mozilla/nsprpub/pr/include/md/_linux.h.orig 2007-05-06 02:39:45.000000000 +0200
++++ nspr-4.6.6/mozilla/nsprpub/pr/include/md/_linux.h 2007-05-06 02:40:57.000000000 +0200
+@@ -346,7 +346,7 @@
+ #error "Linux/MIPS pre-glibc2 not supported yet"
+ #endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */
+
+-#elif defined(__arm__)
++#elif defined(__arm__) && !defined(__ARM_EABI__)
+ /* ARM/Linux */
+ #if defined(__GLIBC__) && __GLIBC__ >= 2
+ #define _MD_GET_SP(_t) (_t)->md.context[0].__jmpbuf[20]
+ <at> <at> -358,6 +358,18 <at> <at>
+ #error "ARM/Linux pre-glibc2 not supported yet"
+ #endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */
+
++#elif defined(__arm__) && defined(__ARM_EABI__)
++/* ARM/Linux */
++#if defined(__GLIBC__) && __GLIBC__ >= 2
++#define _MD_GET_SP(_t) (_t)->md.context[0].__jmpbuf[8]
++#define _MD_SET_FP(_t, val) ((_t)->md.context[0].__jmpbuf[7] = (val))
++#define _MD_GET_SP_PTR(_t) &(_MD_GET_SP(_t))
++#define _MD_GET_FP_PTR(_t) (&(_t)->md.context[0].__jmpbuf[7])
++#define _MD_SP_TYPE __ptr_t
++#else
++#error "ARM/Linux pre-glibc2 not supported yet"
++#endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */
++
+ #else
+
diff --git a/packages/mozilla/firefox-2.0.0.3/mult-crash-fix.patch b/packages/mozilla/firefox-2.0.0.3/mult-crash-fix.patch
new file mode 100644
index 0000000000..cb30f896ed
--- /dev/null
+++ b/packages/mozilla/firefox-2.0.0.3/mult-crash-fix.patch
@@ -0,0 +1,14 @@
+$OpenBSD: patch-nsprpub_pr_src_misc_prdtoa_c,v 1.1 2005/11/03 00:59:43 pvalchev Exp $
+Index: mozilla/nsprpub/pr/src/misc/prdtoa.c
+===================================================================
+--- mozilla.orig/nsprpub/pr/src/misc/prdtoa.c
++++ mozilla/nsprpub/pr/src/misc/prdtoa.c
+@@ -855,7 +855,7 @@ mult
+ wc = wa + wb;
+ if (wc > a->maxwds)
+ k++;
+- c = Balloc(k);
++ c = Balloc(k*2);
+ for(x = c->x, xa = x + wc; x < xa; x++)
+ *x = 0;
+ xa = a->x;
diff --git a/packages/mozilla/firefox-2.0/security-cross.patch b/packages/mozilla/firefox-2.0.0.3/security-cross.patch
index 56c8d04a9e..56c8d04a9e 100644
--- a/packages/mozilla/firefox-2.0/security-cross.patch
+++ b/packages/mozilla/firefox-2.0.0.3/security-cross.patch
diff --git a/packages/mozilla/firefox-2.0.0.3/xptcinvoke-arm.patch b/packages/mozilla/firefox-2.0.0.3/xptcinvoke-arm.patch
new file mode 100644
index 0000000000..bc0c6f4e5c
--- /dev/null
+++ b/packages/mozilla/firefox-2.0.0.3/xptcinvoke-arm.patch
@@ -0,0 +1,11 @@
+--- iceweasel-2.0.0.1+dfsg.orig/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp
++++ iceweasel-2.0.0.1+dfsg/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp
+@@ -212,7 +212,7 @@
+ "add sp, sp, r4 \n\t" /* restore stack pointer */
+ "mov %0, r0 \n\t" /* the result... */
+ : "=r" (result)
+- : "r" (&my_params)
++ : "r" (&my_params), "m" (my_params)
+ : "r0", "r1", "r2", "r3", "r4", "ip", "lr", "sp"
+ );
+
diff --git a/packages/mozilla/firefox-2.0.0.3/xptcstubs.patch b/packages/mozilla/firefox-2.0.0.3/xptcstubs.patch
new file mode 100644
index 0000000000..f2645690f4
--- /dev/null
+++ b/packages/mozilla/firefox-2.0.0.3/xptcstubs.patch
@@ -0,0 +1,13 @@
+--- iceweasel-2.0.0.1+dfsg.orig/xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp
++++ iceweasel-2.0.0.1+dfsg/xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp
+@@ -45,7 +45,8 @@
+ #endif
+
+ /* Specify explicitly a symbol for this function, don't try to guess the c++ mangled symbol. */
+-static nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args) asm("_PrepareAndDispatch");
++static nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args) asm("_PrepareAndDispatch")
++__attribute__((used));
+
+ static nsresult
+ PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args)
+
diff --git a/packages/mozilla/firefox-2.0/arm/jsautocfg.h b/packages/mozilla/firefox-2.0/arm/jsautocfg.h
deleted file mode 100644
index 05f3dad50a..0000000000
--- a/packages/mozilla/firefox-2.0/arm/jsautocfg.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef js_cpucfg___
-#define js_cpucfg___
-
-/* Lovingly crafted by hand avoiding Mozilla stupidity */
-
-#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 4L
-#define JS_ALIGN_OF_FLOAT 4L
-#define JS_ALIGN_OF_DOUBLE 4L
-#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 2L
-
-#define JS_STACK_GROWTH_DIRECTION (-1)
-
-#endif /* js_cpucfg___ */
diff --git a/packages/mozilla/firefox-2.0/mozconfig b/packages/mozilla/firefox-2.0/mozconfig
deleted file mode 100644
index 025b396ac7..0000000000
--- a/packages/mozilla/firefox-2.0/mozconfig
+++ /dev/null
@@ -1,53 +0,0 @@
-. $topsrcdir/browser/config/mozconfig
-
-# use GTK+-2 widget set with XFT font rendering
-ac_add_options --enable-default-toolkit=gtk2
-ac_add_options --enable-xft
-ac_add_options --disable-freetype2
-
-# enable minimal profile support
-ac_add_options --disable-profilesharing
-ac_add_options --disable-profilelocking
-ac_add_options --enable-single-profile
-
-ac_add_options --with-system-zlib
-ac_add_options --with-system-jpeg
-ac_add_options --with-system-png
-
-ac_add_options --disable-accessibility
-ac_add_options --disable-composer
-#ac_add_options --enable-plaintext-editor-only
-ac_add_options --disable-mailnews
-ac_add_options --disable-ldap
-#ac_add_options --disable-postscript
-ac_add_options --disable-mathml
-ac_add_options --disable-jsd
-ac_add_options --disable-installer
-ac_add_options --disable-xprint
-ac_add_options --disable-necko-disk-cache
-
-# configure necko to allocate smaller network buffers
-ac_add_options --enable-necko-small-buffers
-
-# disable debug logging and tests
-#ac_add_options --disable-dtd-debug
-ac_add_options --disable-logging
-ac_add_options --disable-debug
-ac_add_options --disable-gtktest
-ac_add_options --disable-tests
-
-# build crypto module (PSM + NSS)
-ac_add_options --enable-crypto
-
-# build minimal set of protocol handlers
-ac_add_options --enable-necko-protocols=http,file,res,jar,ftp,about,viewsource
-
-# build minimal set of image decoders
-ac_add_options --enable-image-decoders=png,gif,jpeg
-
-#ac_add_options --enable-reorder
-#ac_add_options --enable-elf-dynstr-gc
-
-# enable static build
-#ac_add_options --disable-shared
-#ac_add_options --enable-static
diff --git a/packages/mozilla/firefox_1.0.7.bb b/packages/mozilla/firefox_1.0.7.bb
index 3a82dafd92..dd4d734f89 100644
--- a/packages/mozilla/firefox_1.0.7.bb
+++ b/packages/mozilla/firefox_1.0.7.bb
@@ -5,7 +5,9 @@ SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${PV}/source/
file://firefox-cc-fix.patch;patch=1 \
file://jsautocfg.h \
file://extensions-hack.patch;patch=1 \
- file://firefox-1.0-gcc4-compile.patch;patch=1;pnum=0"
+ file://firefox-1.0-gcc4-compile.patch;patch=1;pnum=0 \
+ file://xptcinvoke-arm.patch;patch=1 \
+ file://mozilla-eabi.patch;patch=1"
S = "${WORKDIR}/mozilla"
@@ -13,6 +15,8 @@ inherit mozilla
require firefox.inc
+EXTRA_OECONF += " --with-gssapi=${STAGINGLIBDIR}/../"
+
do_compile_prepend() {
cp ${WORKDIR}/jsautocfg.h ${S}/js/src/
}
diff --git a/packages/mozilla/firefox_1.5.0.6.bb b/packages/mozilla/firefox_1.5.0.6.bb
deleted file mode 100644
index 5f21212bd5..0000000000
--- a/packages/mozilla/firefox_1.5.0.6.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-PR = "r1"
-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"
-
-S = "${WORKDIR}/mozilla"
-DEFAULT_PREFERENCE = "-1"
-
-inherit mozilla
-
-require firefox.inc
-
-do_compile_prepend() {
- cp ${WORKDIR}/jsautocfg.h ${S}/js/src/
-}
-
diff --git a/packages/mozilla/firefox_2.0.0.3.bb b/packages/mozilla/firefox_2.0.0.3.bb
new file mode 100644
index 0000000000..ede30a6b05
--- /dev/null
+++ b/packages/mozilla/firefox_2.0.0.3.bb
@@ -0,0 +1,39 @@
+PR = "r2"
+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 \
+ "
+S = "${WORKDIR}/mozilla"
+DEFAULT_PREFERENCE = "-1"
+
+inherit mozilla
+
+require firefox.inc
+
+do_compile_prepend() {
+ cp ${WORKDIR}/jsautocfg.h ${S}/js/src/
+
+ sed -i "s|CPU_ARCH =|CPU_ARCH = ${TARGET_ARCH}|" security/coreconf/Linux.mk
+}
+
+do_stage() {
+
+ install -d ${STAGING_INCDIR}/${P}
+ cd dist/sdk/include
+ headers=`find . -name "*.h"`
+ for f in $headers
+ do
+ install -D -m 0644 $f ${STAGING_INCDIR}/${P}/$f
+ done
+ # removes 2 lines that call absent headers
+ sed -e '178,179d' ${STAGING_INCDIR}/${P}/nsIServiceManager.h
+}
+
diff --git a/packages/mozilla/firefox_2.0.bb b/packages/mozilla/firefox_2.0.bb
deleted file mode 100644
index c8fbccc2bf..0000000000
--- a/packages/mozilla/firefox_2.0.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-PR = "r1"
-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"
-
-S = "${WORKDIR}/mozilla"
-DEFAULT_PREFERENCE = "-1"
-
-inherit mozilla
-
-require firefox.inc
-
-do_compile_prepend() {
- cp ${WORKDIR}/jsautocfg.h ${S}/js/src/
-
- sed -i "s|CPU_ARCH =|CPU_ARCH = ${TARGET_ARCH}|" security/coreconf/Linux.mk
-}
-
-do_stage() {
-
- install -d ${STAGING_INCDIR}/${P}
- cd dist/sdk/include
- headers=`find . -name "*.h"`
- for f in $headers
- do
- install -m 0644 $f ${STAGING_INCDIR}/${P}/$f
- done
- # removes 2 lines that call absent headers
- sed -e '178,179d' ${STAGING_INCDIR}/${P}/nsIServiceManager.h
-}
-
diff --git a/packages/mozilla/minimo/minimo.patch b/packages/mozilla/minimo/minimo.patch
index a1f9291167..8894ee7f45 100644
--- a/packages/mozilla/minimo/minimo.patch
+++ b/packages/mozilla/minimo/minimo.patch
@@ -1,567 +1,356 @@
Index: mozilla/content/html/content/src/nsFormSubmission.cpp
===================================================================
-RCS file: /cvsroot/mozilla/content/html/content/src/nsFormSubmission.cpp,v
-retrieving revision 1.46
-diff --context=3 -r1.46 nsFormSubmission.cpp
-*** mozilla/content/html/content/src/nsFormSubmission.cpp 13 Jul 2005 16:55:59 -0000 1.46
---- mozilla/content/html/content/src/nsFormSubmission.cpp 21 Jul 2006 00:27:14 -0000
-***************
-*** 1315,1325 ****
- nsresult rv = NS_OK;
-
- nsCAutoString charset(aCharset);
-- // canonical name is passed so that we just have to check against
-- // *our* canonical names listed in charsetaliases.properties
-- if (charset.EqualsLiteral("ISO-8859-1")) {
-- charset.AssignLiteral("windows-1252");
-- }
-
- // use UTF-8 for UTF-16* and UTF-32* (per WHATWG and existing practice of
- // MS IE/Opera).
---- 1315,1320 ----
+--- mozilla.orig/content/html/content/src/nsFormSubmission.cpp 2005-07-13 18:55:59.000000000 +0200
++++ mozilla/content/html/content/src/nsFormSubmission.cpp 2007-05-10 12:11:20.000000000 +0200
+@@ -1315,11 +1315,6 @@
+ nsresult rv = NS_OK;
+
+ nsCAutoString charset(aCharset);
+- // canonical name is passed so that we just have to check against
+- // *our* canonical names listed in charsetaliases.properties
+- if (charset.EqualsLiteral("ISO-8859-1")) {
+- charset.AssignLiteral("windows-1252");
+- }
+
+ // use UTF-8 for UTF-16* and UTF-32* (per WHATWG and existing practice of
+ // MS IE/Opera).
Index: mozilla/embedding/base/Makefile.in
===================================================================
-RCS file: /cvsroot/mozilla/embedding/base/Makefile.in,v
-retrieving revision 1.34.8.2
-diff --context=3 -r1.34.8.2 Makefile.in
-*** mozilla/embedding/base/Makefile.in 14 Feb 2006 05:28:31 -0000 1.34.8.2
---- mozilla/embedding/base/Makefile.in 21 Jul 2006 00:27:14 -0000
-***************
-*** 43,48 ****
---- 43,49 ----
-
- MODULE = embed_base
- LIBRARY_NAME = embed_base_s
-+ EXPORT_LIBRARY = 1
- XPIDL_MODULE = embed_base
-
- include $(DEPTH)/config/autoconf.mk
+--- mozilla.orig/embedding/base/Makefile.in 2006-02-14 06:28:31.000000000 +0100
++++ mozilla/embedding/base/Makefile.in 2007-05-10 12:11:20.000000000 +0200
+@@ -43,6 +43,7 @@
+
+ MODULE = embed_base
+ LIBRARY_NAME = embed_base_s
++EXPORT_LIBRARY = 1
+ XPIDL_MODULE = embed_base
+
+ include $(DEPTH)/config/autoconf.mk
Index: mozilla/js/src/Makefile.in
===================================================================
-RCS file: /cvsroot/mozilla/js/src/Makefile.in,v
-retrieving revision 3.95.4.4
-diff --context=3 -r3.95.4.4 Makefile.in
-*** mozilla/js/src/Makefile.in 7 Jul 2006 02:12:02 -0000 3.95.4.4
---- mozilla/js/src/Makefile.in 21 Jul 2006 00:27:14 -0000
-***************
-*** 46,51 ****
---- 46,52 ----
-
- MODULE = js
- LIBRARY_NAME = mozjs
-+ EXPORT_LIBRARY = 1
- LIB_IS_C_ONLY = 1
- GRE_MODULE = 1
-
+--- mozilla.orig/js/src/Makefile.in 2006-07-28 00:56:20.000000000 +0200
++++ mozilla/js/src/Makefile.in 2007-05-10 12:11:21.000000000 +0200
+@@ -46,6 +46,7 @@
+
+ MODULE = js
+ LIBRARY_NAME = mozjs
++EXPORT_LIBRARY = 1
+ LIB_IS_C_ONLY = 1
+ GRE_MODULE = 1
+
Index: mozilla/minimo/Makefile.in
===================================================================
-RCS file: /cvsroot/mozilla/minimo/Makefile.in,v
-retrieving revision 1.1.2.2
-diff --context=3 -r1.1.2.2 Makefile.in
-*** mozilla/minimo/Makefile.in 29 Jun 2006 06:11:30 -0000 1.1.2.2
---- mozilla/minimo/Makefile.in 21 Jul 2006 00:27:14 -0000
-***************
-*** 41,46 ****
-
- include $(DEPTH)/config/autoconf.mk
-
-! DIRS = config components chrome locales customization base
-
- include $(topsrcdir)/config/rules.mk
---- 41,46 ----
-
- include $(DEPTH)/config/autoconf.mk
-
-! DIRS = config chrome locales customization base
-
- include $(topsrcdir)/config/rules.mk
+--- mozilla.orig/minimo/Makefile.in 2006-07-24 21:40:53.000000000 +0200
++++ mozilla/minimo/Makefile.in 2007-05-10 12:13:46.000000000 +0200
+@@ -41,6 +41,6 @@
+
+ include $(DEPTH)/config/autoconf.mk
+
+-DIRS = config components chrome locales customization base extensions
++DIRS = config chrome locales customization base extensions
+
+ include $(topsrcdir)/config/rules.mk
Index: mozilla/minimo/base/Makefile.in
===================================================================
-RCS file: /cvsroot/mozilla/minimo/base/Makefile.in,v
-retrieving revision 1.3.2.7
-diff --context=3 -r1.3.2.7 Makefile.in
-*** mozilla/minimo/base/Makefile.in 18 Apr 2006 21:04:38 -0000 1.3.2.7
---- mozilla/minimo/base/Makefile.in 21 Jul 2006 00:27:14 -0000
-***************
-*** 95,101 ****
-
- # this should move into the toolkit!
- LOCAL_INCLUDES = -I$(srcdir) -I$(topsrcdir)/xpfe/browser/src/
-- CPPSRCS += nsBrowserStatusFilter.cpp nsBrowserInstance.cpp
-
- ifdef WINCE
- RCINCLUDE = wince/SplashScreen.rc
---- 95,100 ----
-***************
-*** 139,148 ****
- endif
-
-
-- FINAL_LINK_COMPS=$(topsrcdir)/minimo/base/$(FINAL_PLATFORM)/minimo-link-comps
-- FINAL_LINK_COMP_NAMES=$(topsrcdir)/minimo/base/$(FINAL_PLATFORM)/minimo-link-names
-- FINAL_LINK_LIBS=$(topsrcdir)/minimo/base/$(FINAL_PLATFORM)/minimo-link-libs
--
- include $(topsrcdir)/config/static-config.mk
-
- EXTRA_DEPS += $(STATIC_EXTRA_DEPS)
---- 138,143 ----
-***************
-*** 176,189 ****
- # (same as in mozilla/js/src/Makefile.in)
- ifdef WINCE
- LDFLAGS += -OPT:NOICF
- endif
-
-- export::
-- $(NSINSTALL) $(topsrcdir)/xpfe/browser/src/nsBrowserStatusFilter.cpp .
-- $(NSINSTALL) $(topsrcdir)/xpfe/browser/src/nsBrowserInstance.cpp .
--
--
-- GARBAGE += nsBrowserStatusFilter.cpp nsBrowserInstance.cpp
-
- ifdef WINCE
- package::
---- 171,181 ----
- # (same as in mozilla/js/src/Makefile.in)
- ifdef WINCE
- LDFLAGS += -OPT:NOICF
-+ else
-+ # Hack to work around libxpcom_core.a / libunicharutil_s.a link order problem.
-+ LDFLAGS += -u NS_StringGetData_P -u NS_StringGetMutableData_P
- endif
-
-
- ifdef WINCE
- package::
+--- mozilla.orig/minimo/base/Makefile.in 2006-08-09 17:42:26.000000000 +0200
++++ mozilla/minimo/base/Makefile.in 2007-05-10 12:11:21.000000000 +0200
+@@ -96,7 +96,6 @@
+
+ # this should move into the toolkit!
+ LOCAL_INCLUDES = -I$(srcdir) -I$(topsrcdir)/xpfe/browser/src/
+-CPPSRCS += nsBrowserStatusFilter.cpp nsBrowserInstance.cpp
+
+ ifdef WINCE
+ RCINCLUDE = wince/SplashScreen.rc
+@@ -143,10 +142,6 @@
+ endif
+
+
+-FINAL_LINK_COMPS=$(topsrcdir)/minimo/base/$(FINAL_PLATFORM)/minimo-link-comps
+-FINAL_LINK_COMP_NAMES=$(topsrcdir)/minimo/base/$(FINAL_PLATFORM)/minimo-link-names
+-FINAL_LINK_LIBS=$(topsrcdir)/minimo/base/$(FINAL_PLATFORM)/minimo-link-libs
+-
+ include $(topsrcdir)/config/static-config.mk
+
+ EXTRA_DEPS += $(STATIC_EXTRA_DEPS)
+@@ -180,14 +175,11 @@
+ # (same as in mozilla/js/src/Makefile.in)
+ ifdef WINCE
+ LDFLAGS += -OPT:NOICF
++else
++# Hack to work around libxpcom_core.a / libunicharutil_s.a link order problem.
++LDFLAGS += -u NS_StringGetData_P -u NS_StringGetMutableData_P
+ endif
+
+-export::
+- $(NSINSTALL) $(topsrcdir)/xpfe/browser/src/nsBrowserStatusFilter.cpp .
+- $(NSINSTALL) $(topsrcdir)/xpfe/browser/src/nsBrowserInstance.cpp .
+-
+-
+-GARBAGE += nsBrowserStatusFilter.cpp nsBrowserInstance.cpp
+
+ ifdef WINCE
+ package::
Index: mozilla/minimo/base/Minimo.cpp
===================================================================
-RCS file: /cvsroot/mozilla/minimo/base/Minimo.cpp,v
-retrieving revision 1.1.2.11
-diff --context=3 -r1.1.2.11 Minimo.cpp
-*** mozilla/minimo/base/Minimo.cpp 11 Jul 2006 19:37:05 -0000 1.1.2.11
---- mozilla/minimo/base/Minimo.cpp 21 Jul 2006 00:27:15 -0000
-***************
-*** 781,789 ****
- CreateListenerWindow();
- #endif
-
-! #ifdef MOZ_WIDGET_GTK2
- gtk_set_locale();
- gtk_init(&argc, &argv);
- #endif
-
- #ifdef HACKY_PRE_LOAD_LIBRARY
---- 781,794 ----
- CreateListenerWindow();
- #endif
-
-! #if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_GTK2)
-! #if defined(MOZ_WIDGET_GTK)
- gtk_set_locale();
-+ #endif
- gtk_init(&argc, &argv);
-+
-+ gtk_widget_set_default_visual(gdk_rgb_get_visual());
-+ gtk_widget_set_default_colormap(gdk_rgb_get_cmap());
- #endif
-
- #ifdef HACKY_PRE_LOAD_LIBRARY
+--- mozilla.orig/minimo/base/Minimo.cpp 2006-10-27 22:30:36.000000000 +0200
++++ mozilla/minimo/base/Minimo.cpp 2007-05-10 12:13:21.000000000 +0200
+@@ -813,6 +813,8 @@
+ #ifdef MOZ_WIDGET_GTK2
+ gtk_set_locale();
+ gtk_init(&argc, &argv);
++ gtk_widget_set_default_visual(gdk_rgb_get_visual());
++ gtk_widget_set_default_colormap(gdk_rgb_get_cmap());
+ #endif
+
+ #ifdef HACKY_PRE_LOAD_LIBRARY
Index: mozilla/minimo/base/SplashScreen.cpp
===================================================================
-RCS file: /cvsroot/mozilla/minimo/base/SplashScreen.cpp,v
-retrieving revision 1.1.2.3
-diff --context=3 -r1.1.2.3 SplashScreen.cpp
-*** mozilla/minimo/base/SplashScreen.cpp 11 Jul 2006 18:44:17 -0000 1.1.2.3
---- mozilla/minimo/base/SplashScreen.cpp 21 Jul 2006 00:27:15 -0000
-***************
-*** 180,188 ****
---- 180,203 ----
- void KillSplashScreen() {}
- void GetScreenSize(unsigned long* x, unsigned long* y)
- {
-+ #ifdef MOZ_WIDGET_GTK2
-+ GdkDisplay* display = gdk_display_get_default();
-+ if (display != NULL)
-+ {
-+ GdkScreen *screen;
-+ screen = gdk_display_get_default_screen(display);
-+ *x = gdk_screen_get_width(screen);
-+ *y = gdk_screen_get_height(screen);
-+ }
-+ else
-+ {
-+ #endif
- // we need to figure this out.
- *x = 240;
- *y = 320;
-+ #ifdef MOZ_WIDGET_GTK2
-+ }
-+ #endif
- }
-
-
-Index: mozilla/minimo/chrome/content/minimo.js
-===================================================================
-RCS file: /cvsroot/mozilla/minimo/chrome/content/minimo.js,v
-retrieving revision 1.9.2.90
-diff --context=3 -r1.9.2.90 minimo.js
-*** mozilla/minimo/chrome/content/minimo.js 11 Jul 2006 19:37:04 -0000 1.9.2.90
---- mozilla/minimo/chrome/content/minimo.js 21 Jul 2006 00:27:16 -0000
-***************
-*** 1313,1319 ****
- 43 const FIND_LINKS = 2;
- http://lxr.mozilla.org/mozilla/source/toolkit/components/typeaheadfind/content/findBar.js
- */
-! gBrowser.fastFind.find(vQuery,0);
- }
- } catch (e) {
- onErrorHandler(e);
---- 1313,1319 ----
- 43 const FIND_LINKS = 2;
- http://lxr.mozilla.org/mozilla/source/toolkit/components/typeaheadfind/content/findBar.js
- */
-! gBrowser.fastFind.find(vQuery,0,this.mHasFocus);
- }
- } catch (e) {
- onErrorHandler(e);
-***************
-*** 1324,1330 ****
-
- function DoBrowserFindNext() {
- try {
-! gBrowser.fastFind.findNext();
- } catch (e) {
- onErrorHandler(e);
- }
---- 1324,1330 ----
-
- function DoBrowserFindNext() {
- try {
-! gBrowser.fastFind.findNext(this.mHasFocus);
- } catch (e) {
- onErrorHandler(e);
- }
+--- mozilla.orig/minimo/base/SplashScreen.cpp 2006-08-21 21:00:24.000000000 +0200
++++ mozilla/minimo/base/SplashScreen.cpp 2007-05-10 12:11:22.000000000 +0200
+@@ -202,9 +202,24 @@
+ void KillSplashScreen() {}
+ void GetScreenSize(unsigned long* x, unsigned long* y)
+ {
++#ifdef MOZ_WIDGET_GTK2
++ GdkDisplay* display = gdk_display_get_default();
++ if (display != NULL)
++ {
++ GdkScreen *screen;
++ screen = gdk_display_get_default_screen(display);
++ *x = gdk_screen_get_width(screen);
++ *y = gdk_screen_get_height(screen);
++ }
++ else
++ {
++#endif
+ // we need to figure this out.
+ *x = 240;
+ *y = 320;
++#ifdef MOZ_WIDGET_GTK2
++ }
++#endif
+ }
+
+
Index: mozilla/minimo/config/linux_package.sh
===================================================================
-RCS file: /cvsroot/mozilla/minimo/config/linux_package.sh,v
-retrieving revision 1.8.2.3
-diff --context=3 -r1.8.2.3 linux_package.sh
-*** mozilla/minimo/config/linux_package.sh 30 Jun 2006 16:35:19 -0000 1.8.2.3
---- mozilla/minimo/config/linux_package.sh 21 Jul 2006 00:27:16 -0000
-***************
-*** 29,37 ****
- cp -pRL bin/libnssckbi.so minimo
- cp -pRL bin/libsmime3.so minimo
- cp -pRL bin/libsoftokn3.so minimo
-- cp -pRL bin/libsoftokn3.chk minimo
- cp -pRL bin/libfreebl3.so minimo
-- cp -pRL bin/libfreebl3.chk minimo
- cp -pRL bin/libssl3.so minimo
-
- mkdir -p minimo/chrome
---- 29,35 ----
-***************
-*** 62,69 ****
- cp -pRL bin/components/nsHelperAppDlg.js minimo/components
- cp -pRL bin/components/nsProgressDialog.js minimo/components
-
-- cp -pRL bin/extensions/spatial-navigation@extensions.mozilla.org/components/* minimo/components
--
- mkdir -p minimo/greprefs
- cp -pRL bin/greprefs/* minimo/greprefs
-
---- 60,65 ----
-***************
-*** 80,86 ****
-
- echo Linking XPT files.
-
-! bin/xpt_link minimo/components/all.xpt bin/components/*.xpt
-
- echo Chewing on chrome
-
---- 76,82 ----
-
- echo Linking XPT files.
-
-! host/bin/host_xpt_link minimo/components/all.xpt bin/components/*.xpt
-
- echo Chewing on chrome
-
+--- mozilla.orig/minimo/config/linux_package.sh 2006-06-30 18:35:19.000000000 +0200
++++ mozilla/minimo/config/linux_package.sh 2007-05-10 12:11:22.000000000 +0200
+@@ -29,9 +29,7 @@
+ cp -pRL bin/libnssckbi.so minimo
+ cp -pRL bin/libsmime3.so minimo
+ cp -pRL bin/libsoftokn3.so minimo
+-cp -pRL bin/libsoftokn3.chk minimo
+ cp -pRL bin/libfreebl3.so minimo
+-cp -pRL bin/libfreebl3.chk minimo
+ cp -pRL bin/libssl3.so minimo
+
+ mkdir -p minimo/chrome
+@@ -62,8 +60,6 @@
+ cp -pRL bin/components/nsHelperAppDlg.js minimo/components
+ cp -pRL bin/components/nsProgressDialog.js minimo/components
+
+-cp -pRL bin/extensions/spatial-navigation@extensions.mozilla.org/components/* minimo/components
+-
+ mkdir -p minimo/greprefs
+ cp -pRL bin/greprefs/* minimo/greprefs
+
+@@ -80,7 +76,7 @@
+
+ echo Linking XPT files.
+
+-bin/xpt_link minimo/components/all.xpt bin/components/*.xpt
++host/bin/host_xpt_link minimo/components/all.xpt bin/components/*.xpt
+
+ echo Chewing on chrome
+
Index: mozilla/profile/dirserviceprovider/src/Makefile.in
===================================================================
-RCS file: /cvsroot/mozilla/profile/dirserviceprovider/src/Makefile.in,v
-retrieving revision 1.7
-diff --context=3 -r1.7 Makefile.in
-*** mozilla/profile/dirserviceprovider/src/Makefile.in 6 Apr 2005 03:35:21 -0000 1.7
---- mozilla/profile/dirserviceprovider/src/Makefile.in 21 Jul 2006 00:27:16 -0000
-***************
-*** 44,49 ****
---- 44,50 ----
-
- MODULE = profdirserviceprovider
- LIBRARY_NAME = profdirserviceprovider_s
-+ EXPORT_LIBRARY = 1
- MOZILLA_INTERNAL_API = 1
-
- REQUIRES = xpcom \
+--- mozilla.orig/profile/dirserviceprovider/src/Makefile.in 2005-04-06 05:35:21.000000000 +0200
++++ mozilla/profile/dirserviceprovider/src/Makefile.in 2007-05-10 12:11:23.000000000 +0200
+@@ -44,6 +44,7 @@
+
+ MODULE = profdirserviceprovider
+ LIBRARY_NAME = profdirserviceprovider_s
++EXPORT_LIBRARY = 1
+ MOZILLA_INTERNAL_API = 1
+
+ REQUIRES = xpcom \
Index: mozilla/security/coreconf/Linux.mk
===================================================================
-RCS file: /cvsroot/mozilla/security/coreconf/Linux.mk,v
-retrieving revision 1.18.18.1
-diff --context=3 -r1.18.18.1 Linux.mk
-*** mozilla/security/coreconf/Linux.mk 3 Feb 2006 22:26:36 -0000 1.18.18.1
---- mozilla/security/coreconf/Linux.mk 21 Jul 2006 00:27:16 -0000
-***************
-*** 117,122 ****
---- 117,126 ----
- OS_REL_CFLAGS = -DLINUX1_2 -D_XOPEN_SOURCE
- CPU_ARCH = mips
- else
-+ ifeq ($(OS_TEST),arm)
-+ OS_REL_CFLAGS = -DLINUX1_2 -D_XOPEN_SOURCE
-+ CPU_ARCH = arm
-+ else
- OS_REL_CFLAGS = -DLINUX1_2 -Di386 -D_XOPEN_SOURCE
- CPU_ARCH = x86
- endif
-***************
-*** 133,138 ****
---- 137,143 ----
- endif
- endif
- endif
-+ endif
-
-
- LIBC_TAG = _glibc
+--- mozilla.orig/security/coreconf/Linux.mk 2006-02-03 23:26:36.000000000 +0100
++++ mozilla/security/coreconf/Linux.mk 2007-05-10 12:11:23.000000000 +0200
+@@ -117,6 +117,10 @@
+ OS_REL_CFLAGS = -DLINUX1_2 -D_XOPEN_SOURCE
+ CPU_ARCH = mips
+ else
++ifeq ($(OS_TEST),arm)
++ OS_REL_CFLAGS = -DLINUX1_2 -D_XOPEN_SOURCE
++ CPU_ARCH = arm
++else
+ OS_REL_CFLAGS = -DLINUX1_2 -Di386 -D_XOPEN_SOURCE
+ CPU_ARCH = x86
+ endif
+@@ -133,6 +137,7 @@
+ endif
+ endif
+ endif
++endif
+
+
+ LIBC_TAG = _glibc
Index: mozilla/security/coreconf/arch.mk
===================================================================
-RCS file: /cvsroot/mozilla/security/coreconf/arch.mk,v
-retrieving revision 1.17.14.2
-diff --context=3 -r1.17.14.2 arch.mk
-*** mozilla/security/coreconf/arch.mk 3 Feb 2006 22:26:36 -0000 1.17.14.2
---- mozilla/security/coreconf/arch.mk 21 Jul 2006 00:27:16 -0000
-***************
-*** 60,77 ****
- 64BIT_TAG=
- endif
-
-! OS_ARCH := $(subst /,_,$(shell uname -s))
-
- #
- # Attempt to differentiate between sparc and x86 Solaris
- #
-
-! OS_TEST := $(shell uname -m)
-! ifeq ($(OS_TEST),i86pc)
-! OS_RELEASE := $(shell uname -r)_$(OS_TEST)
-! else
-! OS_RELEASE := $(shell uname -r)
-! endif
-
- #
- # Force the IRIX64 machines to use IRIX.
---- 60,73 ----
- 64BIT_TAG=
- endif
-
-! OS_ARCH := Linux
-
- #
- # Attempt to differentiate between sparc and x86 Solaris
- #
-
-! OS_TEST := arm
-! OS_RELEASE := 2.6
-
- #
- # Force the IRIX64 machines to use IRIX.
+--- mozilla.orig/security/coreconf/arch.mk 2006-02-03 23:26:36.000000000 +0100
++++ mozilla/security/coreconf/arch.mk 2007-05-10 12:11:24.000000000 +0200
+@@ -60,18 +60,14 @@
+ 64BIT_TAG=
+ endif
+
+-OS_ARCH := $(subst /,_,$(shell uname -s))
++OS_ARCH := Linux
+
+ #
+ # Attempt to differentiate between sparc and x86 Solaris
+ #
+
+-OS_TEST := $(shell uname -m)
+-ifeq ($(OS_TEST),i86pc)
+- OS_RELEASE := $(shell uname -r)_$(OS_TEST)
+-else
+- OS_RELEASE := $(shell uname -r)
+-endif
++OS_TEST := arm
++OS_RELEASE := 2.6
+
+ #
+ # Force the IRIX64 machines to use IRIX.
Index: mozilla/toolkit/components/build/Makefile.in
===================================================================
-RCS file: /cvsroot/mozilla/toolkit/components/build/Makefile.in,v
-retrieving revision 1.24.2.10
-diff --context=3 -r1.24.2.10 Makefile.in
-*** mozilla/toolkit/components/build/Makefile.in 13 Jul 2006 20:08:29 -0000 1.24.2.10
---- mozilla/toolkit/components/build/Makefile.in 21 Jul 2006 00:27:17 -0000
-***************
-*** 112,118 ****
- $(NULL)
-
- SHARED_LIBRARY_LIBS = \
-- ../startup/src/$(LIB_PREFIX)appstartup_s.$(LIB_SUFFIX) \
- $(NULL)
-
- ifdef MOZ_XPINSTALL
---- 112,117 ----
+--- mozilla.orig/toolkit/components/build/Makefile.in 2006-07-13 22:08:29.000000000 +0200
++++ mozilla/toolkit/components/build/Makefile.in 2007-05-10 12:11:27.000000000 +0200
+@@ -112,7 +112,6 @@
+ $(NULL)
+
+ SHARED_LIBRARY_LIBS = \
+- ../startup/src/$(LIB_PREFIX)appstartup_s.$(LIB_SUFFIX) \
+ $(NULL)
+
+ ifdef MOZ_XPINSTALL
Index: mozilla/toolkit/components/startup/src/Makefile.in
===================================================================
-RCS file: /cvsroot/mozilla/toolkit/components/startup/src/Makefile.in,v
-retrieving revision 1.7
-diff --context=3 -r1.7 Makefile.in
-*** mozilla/toolkit/components/startup/src/Makefile.in 27 Jul 2005 20:42:44 -0000 1.7
---- mozilla/toolkit/components/startup/src/Makefile.in 21 Jul 2006 00:27:17 -0000
-***************
-*** 43,48 ****
---- 43,49 ----
-
- MODULE = toolkitcomps
- LIBRARY_NAME = appstartup_s
-+ EXPORT_LIBRARY = 1
- FORCE_STATIC_LIB = 1
- LIBXUL_LIBRARY = 1
-
+--- mozilla.orig/toolkit/components/startup/src/Makefile.in 2005-07-27 22:42:44.000000000 +0200
++++ mozilla/toolkit/components/startup/src/Makefile.in 2007-05-10 12:11:27.000000000 +0200
+@@ -43,6 +43,7 @@
+
+ MODULE = toolkitcomps
+ LIBRARY_NAME = appstartup_s
++EXPORT_LIBRARY = 1
+ FORCE_STATIC_LIB = 1
+ LIBXUL_LIBRARY = 1
+
Index: mozilla/toolkit/xre/Makefile.in
===================================================================
-RCS file: /cvsroot/mozilla/toolkit/xre/Makefile.in,v
-retrieving revision 1.48.2.3
-diff --context=3 -r1.48.2.3 Makefile.in
-*** mozilla/toolkit/xre/Makefile.in 30 Sep 2005 19:52:44 -0000 1.48.2.3
---- mozilla/toolkit/xre/Makefile.in 21 Jul 2006 00:27:17 -0000
-***************
-*** 45,51 ****
-
- MODULE = xulapp
- LIBRARY_NAME = xulapp_s
-- EXPORT_LIBRARY = 1
- LIBXUL_LIBRARY = 1
-
- REQUIRES = \
---- 45,50 ----
-***************
-*** 176,189 ****
-
- include $(topsrcdir)/config/rules.mk
-
-- ifdef BUILD_STATIC_LIBS
-- export::
-- @$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl $(FINAL_LINK_COMP_NAMES) Apprunner
-- # embedding/browser/gtk/src/Makefile.in sucks! we need to add an empty line to
-- # FINAL_LINK_COMPS to keep the two lists in sync :-(
-- @$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl $(FINAL_LINK_COMPS) ""
-- endif
--
- LOCAL_INCLUDES += \
- -I$(srcdir) \
- -I$(topsrcdir)/xpfe/bootstrap \
---- 175,180 ----
+--- mozilla.orig/toolkit/xre/Makefile.in 2007-02-06 08:13:20.000000000 +0100
++++ mozilla/toolkit/xre/Makefile.in 2007-05-10 12:11:27.000000000 +0200
+@@ -45,7 +45,6 @@
+
+ MODULE = xulapp
+ LIBRARY_NAME = xulapp_s
+-EXPORT_LIBRARY = 1
+ LIBXUL_LIBRARY = 1
+
+ REQUIRES = \
+@@ -180,14 +179,6 @@
+
+ include $(topsrcdir)/config/rules.mk
+
+-ifdef BUILD_STATIC_LIBS
+-export::
+- @$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl $(FINAL_LINK_COMP_NAMES) Apprunner
+-# embedding/browser/gtk/src/Makefile.in sucks! we need to add an empty line to
+-# FINAL_LINK_COMPS to keep the two lists in sync :-(
+- @$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl $(FINAL_LINK_COMPS) ""
+-endif
+-
+ LOCAL_INCLUDES += \
+ -I$(srcdir) \
+ -I$(topsrcdir)/xpfe/bootstrap \
Index: mozilla/xpcom/build/Makefile.in
===================================================================
-RCS file: /cvsroot/mozilla/xpcom/build/Makefile.in,v
-retrieving revision 1.90.2.2
-diff --context=3 -r1.90.2.2 Makefile.in
-*** mozilla/xpcom/build/Makefile.in 29 Jan 2006 16:51:02 -0000 1.90.2.2
---- mozilla/xpcom/build/Makefile.in 21 Jul 2006 00:27:17 -0000
-***************
-*** 61,67 ****
- endif
-
- # Do not set EXPORT_LIBRARY as we do not want xpcom in the static libs list
-! #EXPORT_LIBRARY = 1
- GRE_MODULE = 1
- MOZILLA_INTERNAL_API = 1
-
---- 61,67 ----
- endif
-
- # Do not set EXPORT_LIBRARY as we do not want xpcom in the static libs list
-! EXPORT_LIBRARY = 1
- GRE_MODULE = 1
- MOZILLA_INTERNAL_API = 1
-
+--- mozilla.orig/xpcom/build/Makefile.in 2006-01-29 17:51:02.000000000 +0100
++++ mozilla/xpcom/build/Makefile.in 2007-05-10 12:11:27.000000000 +0200
+@@ -61,7 +61,7 @@
+ endif
+
+ # Do not set EXPORT_LIBRARY as we do not want xpcom in the static libs list
+-#EXPORT_LIBRARY = 1
++EXPORT_LIBRARY = 1
+ GRE_MODULE = 1
+ MOZILLA_INTERNAL_API = 1
+
Index: mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp
===================================================================
-RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp,v
-retrieving revision 1.7
-diff --context=3 -r1.7 xptcstubs_arm.cpp
-*** mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp 18 Apr 2004 14:18:18 -0000 1.7
---- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp 21 Jul 2006 00:27:17 -0000
-***************
-*** 45,53 ****
- #endif
-
- /* Specify explicitly a symbol for this function, don't try to guess the c++ mangled symbol. */
-! static nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args) asm("_PrepareAndDispatch");
-
-! static nsresult
- PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args)
- {
- #define PARAM_BUFFER_COUNT 16
---- 45,53 ----
- #endif
-
- /* Specify explicitly a symbol for this function, don't try to guess the c++ mangled symbol. */
-! nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args) asm("_PrepareAndDispatch");
-
-! nsresult
- PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args)
- {
- #define PARAM_BUFFER_COUNT 16
+--- mozilla.orig/xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp 2004-04-18 16:18:18.000000000 +0200
++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp 2007-05-10 12:11:27.000000000 +0200
+@@ -45,9 +45,9 @@
+ #endif
+
+ /* Specify explicitly a symbol for this function, don't try to guess the c++ mangled symbol. */
+-static nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args) asm("_PrepareAndDispatch");
++nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args) asm("_PrepareAndDispatch");
+
+-static nsresult
++nsresult
+ PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args)
+ {
+ #define PARAM_BUFFER_COUNT 16
Index: mozilla/xpfe/browser/src/Makefile.in
===================================================================
-RCS file: /cvsroot/mozilla/xpfe/browser/src/Makefile.in,v
-retrieving revision 1.70
-diff --context=3 -r1.70 Makefile.in
-*** mozilla/xpfe/browser/src/Makefile.in 18 Mar 2005 21:23:45 -0000 1.70
---- mozilla/xpfe/browser/src/Makefile.in 21 Jul 2006 00:27:17 -0000
-***************
-*** 44,49 ****
---- 44,50 ----
-
- MODULE = browser
- LIBRARY_NAME = mozbrwsr_s
-+ EXPORT_LIBRARY = 1
- FORCE_STATIC_LIB = 1
- LIBXUL_LIBRARY = 1
- MODULE_NAME = nsBrowserModule
+--- mozilla.orig/xpfe/browser/src/Makefile.in 2005-03-18 22:23:45.000000000 +0100
++++ mozilla/xpfe/browser/src/Makefile.in 2007-05-10 12:11:27.000000000 +0200
+@@ -44,6 +44,7 @@
+
+ MODULE = browser
+ LIBRARY_NAME = mozbrwsr_s
++EXPORT_LIBRARY = 1
+ FORCE_STATIC_LIB = 1
+ LIBXUL_LIBRARY = 1
+ MODULE_NAME = nsBrowserModule
Index: mozilla/xpfe/components/build/Makefile.in
===================================================================
-RCS file: /cvsroot/mozilla/xpfe/components/build/Makefile.in,v
-retrieving revision 1.69.8.1
-diff --context=3 -r1.69.8.1 Makefile.in
-*** mozilla/xpfe/components/build/Makefile.in 27 Sep 2005 00:15:25 -0000 1.69.8.1
---- mozilla/xpfe/components/build/Makefile.in 21 Jul 2006 00:27:17 -0000
-***************
-*** 44,50 ****
-
- MODULE = appcomps
- LIBRARY_NAME = appcomps
-- EXPORT_LIBRARY = 1
- IS_COMPONENT = 1
- MODULE_NAME = application
- LIBXUL_LIBRARY = 1
---- 44,49 ----
+--- mozilla.orig/xpfe/components/build/Makefile.in 2005-09-27 02:15:25.000000000 +0200
++++ mozilla/xpfe/components/build/Makefile.in 2007-05-10 12:11:27.000000000 +0200
+@@ -44,7 +44,6 @@
+
+ MODULE = appcomps
+ LIBRARY_NAME = appcomps
+-EXPORT_LIBRARY = 1
+ IS_COMPONENT = 1
+ MODULE_NAME = application
+ LIBXUL_LIBRARY = 1
Index: mozilla/xpfe/components/filepicker/src/Makefile.in
===================================================================
-RCS file: /cvsroot/mozilla/xpfe/components/filepicker/src/Makefile.in,v
-retrieving revision 1.9.8.1
-diff --context=3 -r1.9.8.1 Makefile.in
-*** mozilla/xpfe/components/filepicker/src/Makefile.in 22 May 2006 16:29:32 -0000 1.9.8.1
---- mozilla/xpfe/components/filepicker/src/Makefile.in 21 Jul 2006 00:27:17 -0000
-***************
-*** 47,53 ****
- MODULE = filepicker
- LIBRARY_NAME = fileview
- SHORT_LIBNAME = fileview
-- EXPORT_LIBRARY = 1
- IS_COMPONENT = 1
- MODULE_NAME = nsFileViewModule
- MOZILLA_INTERNAL_API = 1
---- 47,52 ----
+--- mozilla.orig/xpfe/components/filepicker/src/Makefile.in 2006-05-22 18:29:32.000000000 +0200
++++ mozilla/xpfe/components/filepicker/src/Makefile.in 2007-05-10 12:11:27.000000000 +0200
+@@ -47,7 +47,6 @@
+ MODULE = filepicker
+ LIBRARY_NAME = fileview
+ SHORT_LIBNAME = fileview
+-EXPORT_LIBRARY = 1
+ IS_COMPONENT = 1
+ MODULE_NAME = nsFileViewModule
+ MOZILLA_INTERNAL_API = 1
Index: mozilla/xpfe/components/find/src/Makefile.in
===================================================================
-RCS file: /cvsroot/mozilla/xpfe/components/find/src/Makefile.in,v
-retrieving revision 1.37
-diff --context=3 -r1.37 Makefile.in
-*** mozilla/xpfe/components/find/src/Makefile.in 18 Mar 2005 21:23:46 -0000 1.37
---- mozilla/xpfe/components/find/src/Makefile.in 21 Jul 2006 00:27:17 -0000
-***************
-*** 45,51 ****
- MODULE = appcomps
- XPIDL_MODULE = mozfind
- LIBRARY_NAME = mozfind
-- EXPORT_LIBRARY = 1
- IS_COMPONENT = 1
- MODULE_NAME = nsFindComponent
- LIBXUL_LIBRARY = 1
---- 45,50 ----
+--- mozilla.orig/xpfe/components/find/src/Makefile.in 2005-03-18 22:23:46.000000000 +0100
++++ mozilla/xpfe/components/find/src/Makefile.in 2007-05-10 12:11:27.000000000 +0200
+@@ -45,7 +45,6 @@
+ MODULE = appcomps
+ XPIDL_MODULE = mozfind
+ LIBRARY_NAME = mozfind
+-EXPORT_LIBRARY = 1
+ IS_COMPONENT = 1
+ MODULE_NAME = nsFindComponent
+ LIBXUL_LIBRARY = 1
diff --git a/packages/mozilla/minimo_0.016+cvs.bb b/packages/mozilla/minimo_0.016+cvs.bb
deleted file mode 100644
index a5f8c73094..0000000000
--- a/packages/mozilla/minimo_0.016+cvs.bb
+++ /dev/null
@@ -1,147 +0,0 @@
-DESCRIPTION = "A minimal version of the Mozilla web browser for mobile devices"
-SECTION = "x11/network"
-LICENSE = "MPL/GPL/LGPL"
-HOMEPAGE = "http://www.mozilla.org/projects/minimo/"
-PRIORITY = "optional"
-
-DEPENDS = "libxrender xt xft fontconfig freetype libidl dbus-glib pango atk gtk+"
-
-CVSSVR="cvs-mirror.mozilla.org"
-BRTAG = "MOZILLA_1_8_BRANCH"
-MOZDATE = "20060720"
-
-PV = "0.016+cvs${MOZDATE}"
-PR = "r4"
-
-SRC_URI = "cvs://anonymous@${CVSSVR}/cvsroot;module=mozilla;tag=${BRTAG};date=${MOZDATE} \
- file://minimo.patch;patch=1 \
- file://bug-322806.diff;patch=1 \
- file://mozconfig file://minimo \
- file://minimo.desktop file://minimo.png"
-
-inherit autotools
-
-S = "${WORKDIR}/mozilla"
-
-export MOZCONFIG = "${WORKDIR}/mozconfig"
-
-export CROSS_COMPILE="1"
-export ac_cv_prog_HOST_CC="${BUILD_CC}"
-export ac_cv_prog_HOST_CFLAGS="${BUILD_CFLAGS}"
-export ac_cv_prog_HOST_CXX="${BUILD_CXX}"
-export ac_cv_prog_HOST_CXXFLAGS="${BUILD_CXXFLAGS}"
-
-mozdir="${libdir}/mozilla-minimo"
-
-EXTRA_OECONF += "--build=${BUILD_SYS} --host=${BUILD_SYS} --target=${TARGET_SYS} "
-
-do_configure() {
- cd ${S}
- oe_runmake -f client.mk CONFIGURE_ARGS="${EXTRA_OECONF}" configure
- sed -i s:${TARGET_PREFIX}strip:echo:g config/autoconf.mk
-}
-
-do_compile() {
- cd ${S}
- oe_runmake -f client.mk build
-}
-
-do_install() {
- cd ${WORKDIR}
-
- install -d ${D}${bindir}
- install -m 0755 minimo ${D}${bindir}
-
- install -d ${D}${datadir}/applications
- install -m 0644 minimo.desktop ${D}${datadir}/applications
-
- install -d ${D}/${datadir}/pixmaps
- install -m 0644 minimo.png ${D}${datadir}/pixmaps
-
- cd ${S}
-
- ./minimo/config/linux_package.sh ${S} ${S}/minimo/config
-
- cd dist/minimo
-
- install -d ${D}${mozdir}
- install -m 0755 minimo ${D}${mozdir}
- install -m 0755 libfreebl3.so ${D}${mozdir}
- install -m 0755 libnspr4.so ${D}${mozdir}
- install -m 0755 libnss3.so ${D}${mozdir}
- install -m 0755 libnssckbi.so ${D}${mozdir}
- install -m 0755 libplc4.so ${D}${mozdir}
- install -m 0755 libplds4.so ${D}${mozdir}
- install -m 0755 libsmime3.so ${D}${mozdir}
- install -m 0755 libsoftokn3.so ${D}${mozdir}
- install -m 0755 libssl3.so ${D}${mozdir}
-
- install -d ${D}${mozdir}/chrome
- install -m 0644 chrome/classic.jar ${D}${mozdir}/chrome
- install -m 0644 chrome/classic.manifest ${D}${mozdir}/chrome
- install -m 0644 chrome/en-US.jar ${D}${mozdir}/chrome
- install -m 0644 chrome/en-US.manifest ${D}${mozdir}/chrome
- install -m 0644 chrome/minimo-skin-vga.jar ${D}${mozdir}/chrome
- install -m 0644 chrome/minimo-skin-vga.manifest ${D}${mozdir}/chrome
- install -m 0644 chrome/minimo-skin.jar ${D}${mozdir}/chrome
- install -m 0644 chrome/minimo-skin.manifest ${D}${mozdir}/chrome
- install -m 0644 chrome/minimo.jar ${D}${mozdir}/chrome
- install -m 0644 chrome/minimo.manifest ${D}${mozdir}/chrome
- install -m 0644 chrome/pippki.jar ${D}${mozdir}/chrome
- install -m 0644 chrome/pippki.manifest ${D}${mozdir}/chrome
- install -m 0644 chrome/toolkit.jar ${D}${mozdir}/chrome
- install -m 0644 chrome/toolkit.manifest ${D}${mozdir}/chrome
-
- install -d ${D}${mozdir}/components
- install -m 0644 components/all.xpt ${D}${mozdir}/components
- install -m 0644 components/nsHelperAppDlg.js ${D}${mozdir}/components
- install -m 0644 components/nsProgressDialog.js ${D}${mozdir}/components
-
- install -d ${D}${mozdir}/greprefs
- install -m 0644 greprefs/all.js ${D}${mozdir}/greprefs
- install -m 0644 greprefs/security-prefs.js ${D}${mozdir}/greprefs
-
- install -d ${D}${mozdir}/res
- install -m 0644 res/forms.css ${D}${mozdir}/res
- install -m 0644 res/html.css ${D}${mozdir}/res
- install -m 0644 res/quirk.css ${D}${mozdir}/res
- install -m 0644 res/ua.css ${D}${mozdir}/res
- install -m 0644 res/arrow.gif ${D}${mozdir}/res
- install -m 0644 res/arrowd.gif ${D}${mozdir}/res
- install -m 0644 res/broken-image.gif ${D}${mozdir}/res
- install -m 0644 res/loading-image.gif ${D}${mozdir}/res
- install -m 0644 res/charsetData.properties ${D}${mozdir}/res
- install -m 0644 res/charsetalias.properties ${D}${mozdir}/res
- install -m 0644 res/langGroups.properties ${D}${mozdir}/res
- install -m 0644 res/language.properties ${D}${mozdir}/res
- install -m 0644 res/unixcharset.properties ${D}${mozdir}/res
-
- install -d ${D}${mozdir}/res/dtd
- install -m 0644 res/dtd/xhtml11.dtd ${D}${mozdir}/res/dtd
-
- install -d ${D}${mozdir}/res/entityTables
- install -m 0644 res/entityTables/html40Latin1.properties ${D}${mozdir}/res/entityTables
- install -m 0644 res/entityTables/html40Special.properties ${D}${mozdir}/res/entityTables
- install -m 0644 res/entityTables/html40Symbols.properties ${D}${mozdir}/res/entityTables
- install -m 0644 res/entityTables/htmlEntityVersions.properties ${D}${mozdir}/res/entityTables
- install -m 0644 res/entityTables/transliterate.properties ${D}${mozdir}/res/entityTables
-
- install -d ${D}${mozdir}/res/fonts
- install -m 0644 res/fonts/fontEncoding.properties ${D}${mozdir}/res/fonts
- install -m 0644 res/fonts/pangoFontEncoding.properties ${D}${mozdir}/res/fonts
-
- install -d ${D}${mozdir}/res/html
- install -m 0644 res/html/gopher-audio.gif ${D}${mozdir}/res/html
- install -m 0644 res/html/gopher-binary.gif ${D}${mozdir}/res/html
- install -m 0644 res/html/gopher-find.gif ${D}${mozdir}/res/html
- install -m 0644 res/html/gopher-image.gif ${D}${mozdir}/res/html
- install -m 0644 res/html/gopher-menu.gif ${D}${mozdir}/res/html
- install -m 0644 res/html/gopher-movie.gif ${D}${mozdir}/res/html
- install -m 0644 res/html/gopher-sound.gif ${D}${mozdir}/res/html
- install -m 0644 res/html/gopher-telnet.gif ${D}${mozdir}/res/html
- install -m 0644 res/html/gopher-text.gif ${D}${mozdir}/res/html
- install -m 0644 res/html/gopher-unknown.gif ${D}${mozdir}/res/html
-}
-
-FILES_${PN}-dbg += "${libdir}/mozilla-minimo/.debug*"
-FILES_${PN} += "${mozdir}"
diff --git a/packages/mozilla/minimo_cvs.bb b/packages/mozilla/minimo_cvs.bb
index 2d6744a6c1..834192ad0f 100644
--- a/packages/mozilla/minimo_cvs.bb
+++ b/packages/mozilla/minimo_cvs.bb
@@ -1,49 +1,151 @@
-DESCRIPTION = "A minimal version of the Mozilla web browser"
-HOMEPAGE="http://www.mozilla.org/projects/minimo/"
-SRC_URI = "cvs://anonymous@cvs-mirror.mozilla.org/cvsroot;module=mozilla \
- file://no-xmb.patch;patch=1 \
- file://host_ldflags_fix.patch;patch=1 \
- file://minimo.png file://minimo.desktop"
-S = "${WORKDIR}/mozilla"
-SECTION = "x11"
+DESCRIPTION = "A minimal version of the Mozilla web browser for mobile devices"
+SECTION = "x11/network"
+LICENSE = "MPL/GPL/LGPL"
+HOMEPAGE = "http://www.mozilla.org/projects/minimo/"
PRIORITY = "optional"
-PV = "0.0+cvs${SRCDATE}"
-FILES_${PN} += "${libdir}/mozilla-minimo"
-PR = "r8"
-LICENSE = "MPL/LGPL/GPL"
-inherit mozilla
+DEPENDS = "libxrender xt xft fontconfig freetype libidl dbus-glib pango atk gtk+ libidl-native"
+
+CVSSVR="cvs-mirror.mozilla.org"
+BRTAG = "MOZILLA_1_8_BRANCH"
+MOZDATE = "20070510"
+
+PV = "0.02+cvs${MOZDATE}"
+PE = "1"
+
+SRC_URI = "cvs://anonymous@${CVSSVR}/cvsroot;module=mozilla;tag=${BRTAG};date=${MOZDATE} \
+ file://minimo.patch;patch=1 \
+ file://bug-322806.diff;patch=1 \
+ file://mozconfig file://minimo \
+ file://eabi-fix.patch;patch=1 \
+ file://eabi-fix2.patch;patch=1 \
+ file://eabi-fix3.patch;patch=1 \
+ file://minimo.desktop file://minimo.png"
+
+inherit autotools
+
+S = "${WORKDIR}/mozilla"
+
+export MOZCONFIG = "${WORKDIR}/mozconfig"
-EXTRA_OECONF += "--enable-application=minimo --disable-native-uconv"
-export MOZ_CO_PROJECT="minimo"
+export CROSS_COMPILE="1"
+export ac_cv_prog_HOST_CC="${BUILD_CC}"
+export ac_cv_prog_HOST_CFLAGS="${BUILD_CFLAGS}"
+export ac_cv_prog_HOST_CXX="${BUILD_CXX}"
+export ac_cv_prog_HOST_CXXFLAGS="${BUILD_CXXFLAGS}"
+export HOST_LIBIDL_CONFIG = "libIDL-config-2"
-export MINIMO="1"
-export MOZ_OBJDIR="${WORKDIR}/build-${TARGET_SYS}"
+mozdir="${libdir}/mozilla-minimo"
-require mozilla-cvs.inc
+EXTRA_OECONF += "--build=${BUILD_SYS} --host=${BUILD_SYS} --target=${TARGET_SYS} "
-do_compile () {
- mozilla_do_compile
+do_configure() {
+ cd ${S}
+ oe_runmake -f client.mk CONFIGURE_ARGS="${EXTRA_OECONF}" configure
+ sed -i s:${TARGET_PREFIX}strip:echo:g config/autoconf.mk
}
-mozdir="${D}${libdir}/mozilla-minimo"
+do_compile() {
+ cd ${S}
+ oe_runmake -f client.mk build
+}
+
+do_install() {
+ cd ${WORKDIR}
+
+ install -d ${D}${bindir}
+ install -m 0755 minimo ${D}${bindir}
+
+ install -d ${D}${datadir}/applications
+ install -m 0644 minimo.desktop ${D}${datadir}/applications
+
+ install -d ${D}/${datadir}/pixmaps
+ install -m 0644 minimo.png ${D}${datadir}/pixmaps
-do_install () {
- cd $MOZ_OBJDIR/minimo/base
- oe_runmake package
cd ${S}
- mkdir -p ${mozdir}
- cp -RL $MOZ_OBJDIR/dist/minimo/* ${mozdir}/
- mkdir -p ${D}${datadir}/applications
- install -m 0644 ${WORKDIR}/minimo.desktop ${D}${datadir}/applications/minimo.desktop
- mkdir -p ${D}${datadir}/pixmaps
- install -m 0644 ${WORKDIR}/minimo.png ${D}${datadir}/pixmaps/minimo.png
- mkdir -p ${D}${bindir}
- echo "#!/bin/sh" > ${D}${bindir}/Minimo
- cat >>${D}${bindir}/Minimo << EOF
-cd ${libdir}/mozilla-minimo
-export LD_LIBRARY_PATH=${libdir}/mozilla-minimo
-exec ./minimo
-EOF
- chmod 755 ${D}${bindir}/Minimo
+
+ ./minimo/config/linux_package.sh ${S} ${S}/minimo/config
+
+ cd dist/minimo
+
+ install -d ${D}${mozdir}
+ install -m 0755 minimo ${D}${mozdir}
+ install -m 0755 libfreebl3.so ${D}${mozdir}
+ install -m 0755 libnspr4.so ${D}${mozdir}
+ install -m 0755 libnss3.so ${D}${mozdir}
+ install -m 0755 libnssckbi.so ${D}${mozdir}
+ install -m 0755 libplc4.so ${D}${mozdir}
+ install -m 0755 libplds4.so ${D}${mozdir}
+ install -m 0755 libsmime3.so ${D}${mozdir}
+ install -m 0755 libsoftokn3.so ${D}${mozdir}
+ install -m 0755 libssl3.so ${D}${mozdir}
+
+ install -d ${D}${mozdir}/chrome
+ install -m 0644 chrome/classic.jar ${D}${mozdir}/chrome
+ install -m 0644 chrome/classic.manifest ${D}${mozdir}/chrome
+ install -m 0644 chrome/en-US.jar ${D}${mozdir}/chrome
+ install -m 0644 chrome/en-US.manifest ${D}${mozdir}/chrome
+ install -m 0644 chrome/minimo-skin-vga.jar ${D}${mozdir}/chrome
+ install -m 0644 chrome/minimo-skin-vga.manifest ${D}${mozdir}/chrome
+ install -m 0644 chrome/minimo-skin.jar ${D}${mozdir}/chrome
+ install -m 0644 chrome/minimo-skin.manifest ${D}${mozdir}/chrome
+ install -m 0644 chrome/minimo.jar ${D}${mozdir}/chrome
+ install -m 0644 chrome/minimo.manifest ${D}${mozdir}/chrome
+ install -m 0644 chrome/pippki.jar ${D}${mozdir}/chrome
+ install -m 0644 chrome/pippki.manifest ${D}${mozdir}/chrome
+ install -m 0644 chrome/toolkit.jar ${D}${mozdir}/chrome
+ install -m 0644 chrome/toolkit.manifest ${D}${mozdir}/chrome
+
+ install -d ${D}${mozdir}/components
+ install -m 0644 components/all.xpt ${D}${mozdir}/components
+ install -m 0644 components/nsHelperAppDlg.js ${D}${mozdir}/components
+ install -m 0644 components/nsProgressDialog.js ${D}${mozdir}/components
+
+ install -d ${D}${mozdir}/greprefs
+ install -m 0644 greprefs/all.js ${D}${mozdir}/greprefs
+ install -m 0644 greprefs/security-prefs.js ${D}${mozdir}/greprefs
+
+ install -d ${D}${mozdir}/res
+ install -m 0644 res/forms.css ${D}${mozdir}/res
+ install -m 0644 res/html.css ${D}${mozdir}/res
+ install -m 0644 res/quirk.css ${D}${mozdir}/res
+ install -m 0644 res/ua.css ${D}${mozdir}/res
+ install -m 0644 res/arrow.gif ${D}${mozdir}/res
+ install -m 0644 res/arrowd.gif ${D}${mozdir}/res
+ install -m 0644 res/broken-image.gif ${D}${mozdir}/res
+ install -m 0644 res/loading-image.gif ${D}${mozdir}/res
+ install -m 0644 res/charsetData.properties ${D}${mozdir}/res
+ install -m 0644 res/charsetalias.properties ${D}${mozdir}/res
+ install -m 0644 res/langGroups.properties ${D}${mozdir}/res
+ install -m 0644 res/language.properties ${D}${mozdir}/res
+ install -m 0644 res/unixcharset.properties ${D}${mozdir}/res
+
+ install -d ${D}${mozdir}/res/dtd
+ install -m 0644 res/dtd/xhtml11.dtd ${D}${mozdir}/res/dtd
+
+ install -d ${D}${mozdir}/res/entityTables
+ install -m 0644 res/entityTables/html40Latin1.properties ${D}${mozdir}/res/entityTables
+ install -m 0644 res/entityTables/html40Special.properties ${D}${mozdir}/res/entityTables
+ install -m 0644 res/entityTables/html40Symbols.properties ${D}${mozdir}/res/entityTables
+ install -m 0644 res/entityTables/htmlEntityVersions.properties ${D}${mozdir}/res/entityTables
+ install -m 0644 res/entityTables/transliterate.properties ${D}${mozdir}/res/entityTables
+
+ install -d ${D}${mozdir}/res/fonts
+ install -m 0644 res/fonts/fontEncoding.properties ${D}${mozdir}/res/fonts
+ install -m 0644 res/fonts/pangoFontEncoding.properties ${D}${mozdir}/res/fonts
+
+ install -d ${D}${mozdir}/res/html
+ install -m 0644 res/html/gopher-audio.gif ${D}${mozdir}/res/html
+ install -m 0644 res/html/gopher-binary.gif ${D}${mozdir}/res/html
+ install -m 0644 res/html/gopher-find.gif ${D}${mozdir}/res/html
+ install -m 0644 res/html/gopher-image.gif ${D}${mozdir}/res/html
+ install -m 0644 res/html/gopher-menu.gif ${D}${mozdir}/res/html
+ install -m 0644 res/html/gopher-movie.gif ${D}${mozdir}/res/html
+ install -m 0644 res/html/gopher-sound.gif ${D}${mozdir}/res/html
+ install -m 0644 res/html/gopher-telnet.gif ${D}${mozdir}/res/html
+ install -m 0644 res/html/gopher-text.gif ${D}${mozdir}/res/html
+ install -m 0644 res/html/gopher-unknown.gif ${D}${mozdir}/res/html
}
+
+FILES_${PN}-dbg += "${libdir}/mozilla-minimo/.debug*"
+FILES_${PN} += "${mozdir}"
diff --git a/packages/mp3blaster/mp3blaster-3.2.3/.mtn2git_empty b/packages/mp3blaster/mp3blaster-3.2.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mp3blaster/mp3blaster-3.2.3/.mtn2git_empty
diff --git a/packages/mp3blaster/mp3blaster-3.2.3/includedir.patch b/packages/mp3blaster/mp3blaster-3.2.3/includedir.patch
new file mode 100644
index 0000000000..f37dc0b54e
--- /dev/null
+++ b/packages/mp3blaster/mp3blaster-3.2.3/includedir.patch
@@ -0,0 +1,37 @@
+Index: mp3blaster-3.2.3/mpegsound/Makefile.am
+===================================================================
+--- mp3blaster-3.2.3.orig/mpegsound/Makefile.am 2007-01-07 02:32:21.000000000 +0100
++++ mp3blaster-3.2.3/mpegsound/Makefile.am 2007-01-07 02:32:31.000000000 +0100
+@@ -12,5 +12,5 @@
+
+ noinst_HEADERS = mpegsound.h mpegsound_locals.h
+
+-INCLUDES = -I$(srcdir) -I$(includedir)
++INCLUDES = -I$(srcdir)
+ AM_CXXFLAGS = @NAS_CFLAGS@
+Index: mp3blaster-3.2.3/nmixer/Makefile.am
+===================================================================
+--- mp3blaster-3.2.3.orig/nmixer/Makefile.am 2007-01-07 02:32:22.000000000 +0100
++++ mp3blaster-3.2.3/nmixer/Makefile.am 2007-01-07 02:32:36.000000000 +0100
+@@ -2,7 +2,7 @@
+ nmixer_SOURCES = main.cc
+ nmixer_DEPENDENCIES = libnmixer.a
+ LDADD = @NCURSES_LIBS@ @NAS_LIBS@ @LIBNMIXER@
+-INCLUDES = -I/usr/include/ncurses -I$(srcdir) -I$(includedir)
++INCLUDES = -I$(srcdir)
+ noinst_LIBRARIES = libnmixer.a
+ libnmixer_a_SOURCES = nmixer.cc mixers.cc ossmixer.cc nasmixer.cc nmixer.h \
+ getopt.c getopt1.c getopt_local.h nullmixer.cc
+Index: mp3blaster-3.2.3/src/Makefile.am
+===================================================================
+--- mp3blaster-3.2.3.orig/src/Makefile.am 2007-01-07 02:32:22.000000000 +0100
++++ mp3blaster-3.2.3/src/Makefile.am 2007-01-07 02:32:49.000000000 +0100
+@@ -35,7 +35,7 @@
+ mp3tag_DEPENDENCIES = ../mpegsound/libmpegsound.a ../nmixer/libnmixer.a
+ mp3tag_LDADD = @LIBMPEGSOUND@ @LIBESD@ @LIBSDL@
+ mp3blaster_DEPENDENCIES = ../mpegsound/libmpegsound.a ../nmixer/libnmixer.a
+-INCLUDES = -I$(top_srcdir)/mpegsound -I/usr/include/ncurses -I$(top_srcdir)/nmixer -I$(includedir)
++INCLUDES = -I$(top_srcdir)/mpegsound -I$(top_srcdir)/nmixer
+ mp3blaster_LDADD = @LIBMPEGSOUND@ @LIBNMIXER@ @NAS_LIBS@ @SID_LIBS@ @OGG_LIBS@ @LIRC_LIBS@ @NCURSES_LIBS@ @LIBESD@ @LIBSDL@
+ EXTRA_DIST = FILES
+ AM_CXXFLAGS = @NAS_CFLAGS@ -DMP3BLASTER_DOCDIR=\"${pkgdatadir}\"
diff --git a/packages/mp3blaster/mp3blaster_3.2.3.bb b/packages/mp3blaster/mp3blaster_3.2.3.bb
new file mode 100644
index 0000000000..c766c459ea
--- /dev/null
+++ b/packages/mp3blaster/mp3blaster_3.2.3.bb
@@ -0,0 +1,10 @@
+LICENSE = "GPL"
+SECTION = "console/multimedia"
+DESCRIPTION = "A console MP3 player based on ncurses"
+DEPENDS = "ncurses libogg libvorbis"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/mp3blaster/mp3blaster-${PV}.tar.gz file://includedir.patch;patch=1"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-x=no --without-sidplay --with-oggvorbis --without-pth --without-mysql --without-nas"
diff --git a/packages/mplayer/files/Makefile-codec-cfg.patch b/packages/mplayer/files/Makefile-codec-cfg.patch
index f1fe636df2..e6cb7247f8 100644
--- a/packages/mplayer/files/Makefile-codec-cfg.patch
+++ b/packages/mplayer/files/Makefile-codec-cfg.patch
@@ -2,12 +2,12 @@ Index: trunk/Makefile
===================================================================
--- trunk.orig/Makefile
+++ trunk/Makefile
-@@ -239,7 +239,7 @@ mencoder$(EXESUF): $(MENCODER_DEPS)
+@@ -235,7 +235,7 @@ mencoder$(EXESUF): $(MENCODER_DEPS)
$(CC) -o $@ $^ $(LDFLAGS_MENCODER)
codec-cfg$(EXESUF): codec-cfg.c codec-cfg.h help_mp.h
-- $(HOST_CC) -I. -DCODECS2HTML codec-cfg.c -o $@
-+ $(BUILD_CC) -I. -DCODECS2HTML codec-cfg.c -o $@
+- $(HOST_CC) -I. -DCODECS2HTML $< -o $@
++ $(BUILD_CC) -I. -DCODECS2HTML $< -o $@
codecs.conf.h: codec-cfg$(EXESUF) etc/codecs.conf
./codec-cfg$(EXESUF) ./etc/codecs.conf > $@
diff --git a/packages/mplayer/files/makefile-nostrip-svn.patch b/packages/mplayer/files/makefile-nostrip-svn.patch
index 0c3180c728..44087e7dca 100644
--- a/packages/mplayer/files/makefile-nostrip-svn.patch
+++ b/packages/mplayer/files/makefile-nostrip-svn.patch
@@ -2,25 +2,30 @@ Index: trunk/Makefile
===================================================================
--- trunk.orig/Makefile
+++ trunk/Makefile
-@@ -253,10 +253,10 @@ install: $(ALL_PRG)
- ifeq ($(VIDIX),yes)
- $(MAKE) -C libdha install
- mkdir -p $(LIBDIR)/mplayer/vidix
-- -install -m 755 $(INSTALLSTRIP) -p vidix/drivers/*.so $(LIBDIR)/mplayer/vidix
-+ -install -m 755 -p vidix/drivers/*.so $(LIBDIR)/mplayer/vidix
- endif
- $(INSTALL) -d $(BINDIR)
-- $(INSTALL) -m 755 $(INSTALLSTRIP) mplayer$(EXESUF) \
-+ $(INSTALL) -m 755 mplayer$(EXESUF) \
- $(BINDIR)/mplayer$(EXESUF)
- ifeq ($(GUI),yes)
- -ln -sf mplayer$(EXESUF) $(BINDIR)/gmplayer$(EXESUF)
-@@ -271,7 +271,7 @@ endif
- fi ; \
+@@ -264,7 +264,7 @@ install-dirs:
+ if test -f $(CONFDIR)/codecs.conf ; then mv -f $(CONFDIR)/codecs.conf $(CONFDIR)/codecs.conf.old ; fi
+
+ install-mplayer: mplayer$(EXESUF)
+- $(INSTALL) -m 755 $(INSTALLSTRIP) mplayer$(EXESUF) $(BINDIR)
++ $(INSTALL) -m 755 mplayer$(EXESUF) $(BINDIR)
+
+ install-mplayer-man:
+ for i in $(MAN_LANG); do \
+@@ -277,7 +277,7 @@ install-mplayer-man:
done
- ifeq ($(MENCODER),yes)
-- $(INSTALL) -m 755 $(INSTALLSTRIP) mencoder$(EXESUF) \
-+ $(INSTALL) -m 755 mencoder$(EXESUF) \
- $(BINDIR)/mencoder$(EXESUF)
+
+ install-mencoder: mencoder$(EXESUF)
+- $(INSTALL) -m 755 $(INSTALLSTRIP) mencoder$(EXESUF) $(BINDIR)
++ $(INSTALL) -m 755 mencoder$(EXESUF) $(BINDIR)
for i in $(MAN_LANG); do \
if test "$$i" = en ; then \
+ cd $(MANDIR)/man1 && ln -sf mplayer.1 mencoder.1 ; \
+@@ -299,7 +299,7 @@ install-gui:
+ install-vidix:
+ $(MAKE) -C libdha install
+ mkdir -p $(LIBDIR)/mplayer/vidix
+- $(INSTALL) -m 755 $(INSTALLSTRIP) -p vidix/drivers/*.so $(LIBDIR)/mplayer/vidix
++ $(INSTALL) -m 755 -p vidix/drivers/*.so $(LIBDIR)/mplayer/vidix
+
+ uninstall:
+ -rm -f $(BINDIR)/mplayer$(EXESUF) $(BINDIR)/gmplayer$(EXESUF)
diff --git a/packages/mplayer/files/mplayer-imageon-svn.patch b/packages/mplayer/files/mplayer-imageon-svn.patch
new file mode 100644
index 0000000000..c8bb8709cd
--- /dev/null
+++ b/packages/mplayer/files/mplayer-imageon-svn.patch
@@ -0,0 +1,366 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+Index: trunk/configure
+===================================================================
+--- trunk.orig/configure
++++ trunk/configure
+@@ -519,6 +519,7 @@ _svga=auto
+ _vesa=auto
+ _fbdev=auto
+ _w100=no
++_imageon=no
+ _dvb=auto
+ _dvbhead=auto
+ _dxr2=auto
+@@ -820,6 +821,8 @@ for ac_option do
+ --disable-fbdev) _fbdev=no ;;
+ --enable-w100) _w100=yes ;;
+ --disable-w100) _w100=no ;;
++ --enable-imageon) _imageon=yes ;;
++ --disable-imageon) _imageon=no ;;
+ --enable-dvb) _dvb=yes ;;
+ --disable-dvb) _dvb=no ;;
+ --enable-dvbhead) _dvbhead=yes ;;
+@@ -4329,6 +4332,18 @@ else
+ fi
+ echores "$_w100"
+
++echocheck "ATI Imageon 100 (imageon)"
++if test "$_imageon" = yes ; then
++ _def_imageon='#define HAVE_IMAGEON 1'
++ _ld_imageon='-lw100'
++ _vosrc="$_vosrc vo_imageon.c"
++ _vomodules="imageon $_vomodules"
++else
++ _def_imageon='#undef HAVE_IMAGEON'
++ _novomodules="imageon $_novomodules"
++fi
++echores "$_imageon"
++
+
+ echocheck "DVB"
+ if test "$_dvb" = auto ; then
+@@ -8355,6 +8370,7 @@ $_def_xmga
+ $_def_syncfb
+ $_def_fbdev
+ $_def_w100
++$_def_imageon
+ $_def_dxr2
+ $_def_dxr3
+ $_def_ivtv
+Index: trunk/libvo/vo_imageon.c
+===================================================================
+--- /dev/null
++++ trunk/libvo/vo_imageon.c
+@@ -0,0 +1,308 @@
++#include <stdio.h>
++#include <stdlib.h>
++#include <inttypes.h>
++#include <string.h>
++
++#include <mp_msg.h>
++#include <video_out.h>
++#include <video_out_internal.h>
++
++static vo_info_t info =
++{
++ "ATI IMAGEON 100 driver",
++ "imageon",
++ "Manuel Teira",
++ "C760-Openzaurus Testing version"
++};
++
++LIBVO_EXTERN(imageon)
++
++#include <acapi.h>
++
++static struct w100privdata_t {
++ uint8_t config;
++ ac_device_t *dev;
++ uint16_t xres;
++ uint16_t yres;
++ uint16_t ovwidth;
++ uint16_t ovheight;
++ ac_surface_t insurface;
++ ac_surface_t ovsurface;
++ uint16_t srcwidth;
++ uint16_t srcheight;
++ uint8_t rotate;
++ uint8_t scale;
++ ac_point_t ovdst;
++ ac_point_t dstpos;
++ ac_overlayprops_t ovprops;
++ uint32_t format;
++} w100_privdata;
++
++static int preinit(const char *arg)
++{
++ //Perhaps libw100 should include some code to query the framebuffer
++ struct w100privdata_t *pdata = &w100_privdata;
++
++ pdata->config = 0;
++ pdata->xres = 640;
++ pdata->yres = 480;
++ pdata->dev = ac_init(pdata->xres, pdata->yres, AC_ROT90);
++ if (pdata->dev) {
++ return 0;
++ } else {
++ //Put a log message here
++ return 1;
++ }
++}
++
++
++static void draw_osd(void)
++{
++}
++
++void check_events(void)
++{
++ mp_msg(MSGT_VO, MSGL_V, "check_events got called\n");
++}
++
++static int config(uint32_t srcwidth, uint32_t srcheight,
++ uint32_t dstwidth, uint32_t dstheight,
++ uint32_t flags, char *title, uint32_t format)
++{
++ struct w100privdata_t *pdata = &w100_privdata;
++ uint8_t xscale, yscale;
++ uint16_t scaledwidth, scaledheight;
++
++ mp_msg(MSGT_VO, MSGL_V,
++ "vo_imageon: srcwidth:%d, srcheight:%d, "
++ "dstwidth:%d, dstheight:%d\n",
++ srcwidth, srcheight, dstwidth, dstheight);
++
++ if (pdata->config) {
++ ac_overlay_disable(pdata->dev);
++ ac_free_surface(pdata->dev, &pdata->insurface);
++ ac_free_surface(pdata->dev, &pdata->ovsurface);
++ }
++
++ pdata->srcwidth = srcwidth;
++ pdata->srcheight = srcheight;
++
++ //By the moment, only YUV420 supported
++ pdata->ovprops.format = OVLFORMAT_YUV420;
++ pdata->ovprops.portrait_mode = 0;
++ pdata->ovprops.inv_hor = 0;
++ pdata->ovprops.inv_ver = 0;
++ pdata->ovprops.yuv2rgb = 0;
++
++ pdata->rotate = AC_ROT90;
++
++ if (flags & VOFLAG_FULLSCREEN) {
++ pdata->ovwidth = 240;
++ pdata->ovheight = 320;
++ xscale = ac_get_scaler(pdata->ovheight, srcwidth);
++ yscale = ac_get_scaler(pdata->ovwidth, srcheight);
++ pdata->scale = (xscale > yscale) ? xscale : yscale;
++ pdata->ovdst.x = 0;
++ pdata->ovdst.y = 0;
++ pdata->ovprops.video_hor_exp = 1;
++ pdata->ovprops.video_ver_exp = 1;
++ } else {
++ pdata->ovwidth = (dstheight + 0xf) & ~0xf;
++ pdata->ovheight = (dstwidth + 0xf) & ~0xf;
++ xscale = ac_get_scaler(dstwidth, srcwidth);
++ yscale = ac_get_scaler(dstheight, srcheight);
++ pdata->ovdst.x = (pdata->xres - pdata->ovheight) / 2;
++ pdata->ovdst.y = (pdata->yres - pdata->ovwidth) / 2;
++ pdata->ovprops.video_hor_exp = 0;
++ pdata->ovprops.video_ver_exp = 0;
++ }
++
++ pdata->scale = (xscale > yscale) ? xscale : yscale;
++ scaledwidth = ac_apply_scaler(srcwidth, pdata->scale);
++ scaledheight = ac_apply_scaler(srcheight, pdata->scale);
++ pdata->dstpos.x = (pdata->ovwidth - scaledheight) / 2;
++ pdata->dstpos.y = (pdata->ovheight - scaledwidth) / 2;
++
++ if (ac_alloc_surface(pdata->dev, &pdata->ovsurface,
++ FMT_YUV420,
++ pdata->ovwidth,
++ pdata->ovheight,
++ AC_MEM_INTERNAL) == NULL) {
++ mp_msg(MSGT_VO, MSGL_FATAL, "Unable to allocate ov surface\n");
++ return -1;
++ }
++
++ if (ac_alloc_surface(pdata->dev, &pdata->insurface,
++ FMT_YUV420, srcwidth, srcheight,
++ AC_MEM_INTERNAL) == NULL) {
++ mp_msg(MSGT_VO, MSGL_WARN,
++ "No room in internal memory for insurface\n");
++ if (ac_alloc_surface(pdata->dev, &pdata->insurface,
++ FMT_YUV420, srcwidth, srcheight,
++ AC_MEM_EXTERNAL) == NULL) {
++ mp_msg(MSGT_VO, MSGL_FATAL,
++ "Unable to allocate surface\n");
++ ac_free_surface(pdata->dev, &pdata->ovsurface);
++ return -1;
++ }
++ }
++
++ ac_clear_surface(pdata->dev, &pdata->ovsurface);
++ ac_clear_surface(pdata->dev, &pdata->insurface);
++
++
++ mp_msg(MSGT_VO, MSGL_V,
++ "vo_imageon: rotate:%d scale:%d ovwidth:%d, ovheight:%d, "
++ "ovdst(x:%d, y:%d) dstpos(x:%d,y:%d)\n",
++ pdata->rotate,
++ pdata->scale,
++ pdata->ovwidth,
++ pdata->ovheight,
++ pdata->ovdst.x,
++ pdata->ovdst.y,
++ pdata->dstpos.x,
++ pdata->dstpos.y);
++
++ ac_overlay_setup(pdata->dev, &pdata->ovsurface, &pdata->ovsurface.rect,
++ &pdata->ovprops, 0);
++ ac_overlay_setpos(pdata->dev, &pdata->ovdst);
++ ac_overlay_enable(pdata->dev);
++
++ pdata->config = 1;
++ return 0;
++}
++
++static int draw_slice(uint8_t *image[], int stride[],
++ int w, int h, int x, int y)
++{
++ struct w100privdata_t *pdata = &w100_privdata;
++ ac_rect_t dstrect;
++ ac_surface_t *dstsurface = &pdata->insurface;
++ int plane;
++ mp_msg(MSGT_VO, MSGL_V,
++ "vo_imageon: draw_slice(w:%d,h:%d,x:%d,y:%d)\n",
++ w, h, x, y);
++
++ ac_reset_ctx(pdata->dev);
++ for (plane = 0; plane <= V_PLANE; plane++) {
++ mp_msg(MSGT_VO, MSGL_V, "Plane: %d, Stride: %d\n",
++ plane, stride[plane]);
++ dstrect.x = x;
++ dstrect.y = y;
++ dstrect.w = w;
++ dstrect.h = h;
++ ac_host2planerect(pdata->dev,
++ image[plane],
++ &dstrect,
++ &pdata->insurface,
++ plane);
++ }
++ return 0;
++}
++
++static int draw_frame(uint8_t *frame[])
++{
++ struct w100privdata_t *pdata = &w100_privdata;
++ mp_msg(MSGT_VO, MSGL_V, "vo_imageon: draw_frame() not implemented!\n");
++
++}
++
++static void flip_page(void)
++{
++ struct w100privdata_t *pdata = &w100_privdata;
++ int plane;
++ ac_rect_t srcrect;
++ ac_point_t dstpoint;
++ ac_surface_t *insurface = &pdata->insurface;
++ ac_surface_t *ovsurface = &pdata->ovsurface;
++ ac_surfspec_t *surfspec = &ac_surfspecs[ovsurface->format];
++
++ mp_msg(MSGT_VO, MSGL_V, "vo_imageon: flip_page\n");
++
++ srcrect.x = 0;
++ srcrect.y = 0;
++
++ ac_reset_ctx(pdata->dev);
++ if (pdata->rotate != AC_ROT0) {
++ ac_set_xform(pdata->dev, pdata->rotate, AC_NOMIRROR);
++ }
++ ac_disable_dbuf_update(pdata->dev);
++ ac_waitidle(pdata->dev);
++ for (plane = Y_PLANE; plane < surfspec->nplanes; plane++) {
++ ac_setsrcplane(pdata->dev, insurface, plane);
++ ac_setdstplane(pdata->dev, ovsurface, plane);
++ ac_prepare_scaleblt(pdata->dev, DP_DST_8BPP);
++ srcrect.w = pdata->srcwidth / surfspec->planes[plane].xsubsampling;
++ srcrect.h = pdata->srcheight / surfspec->planes[plane].ysubsampling;
++ dstpoint.x = pdata->dstpos.x / surfspec->planes[plane].xsubsampling;
++ dstpoint.y = pdata->dstpos.y / surfspec->planes[plane].ysubsampling;
++ mp_msg(MSGT_VO, MSGL_V,
++ "vo_imageon: scaleblt src(x:%d,y:%d,w:%d,h:%d)"
++ "dst(%d,%d)"
++ "scale(%d)\n",
++ srcrect.x, srcrect.y,
++ srcrect.w, srcrect.h,
++ dstpoint.x, dstpoint.y,
++ pdata->scale);
++ ac_scaleblt(pdata->dev, &srcrect, &dstpoint,
++ pdata->scale, pdata->scale);
++ }
++ ac_enable_dbuf_update(pdata->dev);
++}
++
++static void uninit(void)
++{
++ struct w100privdata_t *pdata = &w100_privdata;
++ ac_overlay_disable(pdata->dev);
++ ac_finish(pdata->dev);
++}
++
++static int control(uint32_t request, void *data, ...)
++{
++ struct w100privdata_t *pdata = &w100_privdata;
++ switch (request) {
++ case VOCTRL_QUERY_FORMAT:
++ return query_format(*((uint32_t *)data));
++ case VOCTRL_FULLSCREEN:
++ mp_msg(MSGT_VO, MSGL_V, "vo_imageon: Asked for fullscreen\n");
++ }
++ return VO_NOTIMPL;
++}
++
++static int query_format(uint32_t format)
++{
++ mp_msg(MSGT_VO, MSGL_V,
++ "vo_imageon: query_format was called: %x (%s)\n",
++ format, vo_format_name(format));
++
++ if (IMGFMT_IS_RGB(format)) {
++ return 0;
++
++ switch (IMGFMT_RGB_DEPTH(format)) {
++ case 16:
++ return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW |
++ VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN |
++ VFCAP_OSD | VFCAP_ACCEPT_STRIDE;
++ break;
++ }
++ } else {
++ /* Planar YUV Formats */
++ switch (format) {
++ case IMGFMT_YV12:
++ case IMGFMT_IYUV:
++ case IMGFMT_I420:
++ case IMGFMT_YVU9:
++ case IMGFMT_IF09:
++ case IMGFMT_Y8:
++ case IMGFMT_Y800:
++ return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW |
++ VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN |
++ VFCAP_OSD | VFCAP_ACCEPT_STRIDE;
++ break;
++ }
++ }
++
++ return 0;
++}
++
++
diff --git a/packages/mplayer/files/powerpc-is-ppc.diff b/packages/mplayer/files/powerpc-is-ppc.diff
new file mode 100644
index 0000000000..f8143c460e
--- /dev/null
+++ b/packages/mplayer/files/powerpc-is-ppc.diff
@@ -0,0 +1,11 @@
+--- /tmp/configure 2007-03-30 19:40:34.000000000 +0200
++++ MPlayer-1.0rc1/configure 2007-03-30 19:40:58.795251000 +0200
+@@ -1213,7 +1213,7 @@
+ _optimizing=''
+ ;;
+
+- ppc)
++ ppc|powerpc)
+ _def_arch='#define ARCH_POWERPC 1'
+ _def_dcbzl='#define NO_DCBZL 1'
+ _target_arch='TARGET_ARCH_POWERPC = yes'
diff --git a/packages/mplayer/files/pxa-video_out.patch b/packages/mplayer/files/pxa-video_out.patch
new file mode 100644
index 0000000000..0c4c4feb8c
--- /dev/null
+++ b/packages/mplayer/files/pxa-video_out.patch
@@ -0,0 +1,22 @@
+Index: MPlayer-1.0rc1/libvo/video_out.c
+===================================================================
+--- MPlayer-1.0rc1.orig/libvo/video_out.c
++++ MPlayer-1.0rc1/libvo/video_out.c
+@@ -87,6 +87,7 @@ extern vo_functions_t video_out_fbdev;
+ extern vo_functions_t video_out_fbdev2;
+ extern vo_functions_t video_out_w100;
+ extern vo_functions_t video_out_imageon;
++extern vo_functions_t video_out_pxa;
+ extern vo_functions_t video_out_svga;
+ extern vo_functions_t video_out_png;
+ extern vo_functions_t video_out_ggi;
+@@ -206,6 +207,9 @@ vo_functions_t* video_out_drivers[] =
+ #ifdef HAVE_IMAGEON
+ &video_out_imageon,
+ #endif
++#ifdef HAVE_PXA
++ &video_out_pxa,
++#endif
+ #ifdef HAVE_SVGALIB
+ &video_out_svga,
+ #endif
diff --git a/packages/mplayer/files/pxa_configure.patch b/packages/mplayer/files/pxa_configure.patch
new file mode 100644
index 0000000000..85530b77c5
--- /dev/null
+++ b/packages/mplayer/files/pxa_configure.patch
@@ -0,0 +1,47 @@
+Index: MPlayer-1.0rc1/configure
+===================================================================
+--- MPlayer-1.0rc1.orig/configure
++++ MPlayer-1.0rc1/configure
+@@ -1600,6 +1600,7 @@ _vesa=auto
+ _fbdev=auto
+ _w100=no
+ _imageon=no
++_pxa=no
+ _dvb=auto
+ _dvbhead=auto
+ _dxr2=auto
+@@ -1803,6 +1804,8 @@ for ac_option do
+ --disable-w100) _w100=no ;;
+ --enable-imageon) _imageon=yes ;;
+ --disable-imageon) _imageon=no ;;
++ --enable-pxa) _pxa=yes ;;
++ --disable-pxa) _pxa=no ;;
+ --enable-dvb) _dvb=yes ;;
+ --disable-dvb) _dvb=no ;;
+ --enable-dvbhead) _dvbhead=yes ;;
+@@ -4296,6 +4299,17 @@ else
+ fi
+ echores "$_imageon"
+
++echocheck "PXA27x Overlay Support"
++if test "$_pxa" = yes ; then
++ _def_imageon='#define HAVE_PXA 1'
++ _vosrc="$_vosrc vo_pxa.c"
++ _vomodules="pxa $_vomodules"
++else
++ _def_imageon='#undef HAVE_IMAGEON'
++ _novomodules="pxa $_novomodules"
++fi
++echores "$_pxa"
++
+
+ echocheck "DVB"
+ if test "$_dvb" = auto ; then
+@@ -8398,6 +8412,7 @@ $_def_syncfb
+ $_def_fbdev
+ $_def_w100
+ $_def_imageon
++$_def_pxa
+ $_def_dxr2
+ $_def_dxr3
+ $_def_ivtv
diff --git a/packages/mplayer/files/vo_pxa.c b/packages/mplayer/files/vo_pxa.c
new file mode 100644
index 0000000000..1488d14064
--- /dev/null
+++ b/packages/mplayer/files/vo_pxa.c
@@ -0,0 +1,980 @@
+/*
+ * Video driver for PXA 27x Overlay 2, in conjunction with kernel driver
+ * by Tim Chick <tim (DOT) chick (AT) csr (DOT) com>
+ * (C) 2007
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+#include "config.h"
+#include "video_out.h"
+#include "video_out_internal.h"
+#include "sub.h"
+#include "aspect.h"
+#include "mp_msg.h"
+#include "subopt-helper.h"
+
+#include "vo_pxa.h"
+
+static vo_info_t info = {
+ "PXA 27x Framebuffer",
+ "pxa",
+ "Tim Chick <tim (DOT) chick (AT) csr (DOT) com>",
+ "For Sharp Zaurus SL-C1000 etc"
+};
+
+LIBVO_EXTERN(pxa);
+
+static pxa_priv_t st_pxa_priv;
+
+/*****************************************************************************
+ * preinit
+ *
+ * Preinitializes driver
+ * arg - currently it's vo_subdevice
+ * returns: zero on successful initialization, non-zero on error.
+ *
+ ****************************************************************************/
+static int preinit(const char *vo_subdevice)
+{
+ pxa_priv_t *priv = &st_pxa_priv;
+ int rc;
+
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: preinit() was called\n");
+
+ /* fill pxa_priv_t information */
+ memset(priv, 0, sizeof(*priv));
+ priv->fd = -1;
+
+ /* We need to open the base framebuffer device, to change and restore modes */
+ priv->base_fd = open( "/dev/fb0", O_RDWR );
+
+ if( priv->base_fd < 0 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: Could not open base framebuffer device\n");
+ return -1;
+ }
+
+ /* Get the base fb var data, so we can restore if we change video modes */
+ rc = ioctl( priv->base_fd, FBIOGET_VSCREENINFO, &(priv->base_orig_fb_var) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: FBIOGET_VSCREENINFO preinit base_fd failed %d\n",
+ errno );
+
+ /* If this failed, close down the FD so we don't try to set this again */
+ close( priv->base_fd );
+ priv->base_fd = -1;
+
+ return -1;
+ }
+
+ return 0;
+}
+
+
+/*****************************************************************************
+ * config
+ *
+ * Config the display driver.
+ * params:
+ * src_width,srcheight: image source size
+ * dst_width,dst_height: size of the requested window size, just a hint
+ * fullscreen: flag, 0=windowd 1=fullscreen, just a hint
+ * title: window title, if available
+ * format: fourcc of pixel format
+ * returns : zero on successful initialization, non-zero on error.
+ *
+ ****************************************************************************/
+static int config(uint32_t src_width, uint32_t src_height,
+ uint32_t dst_width, uint32_t dst_height, uint32_t flags,
+ char *title, uint32_t format)
+{
+ pxa_priv_t *priv = &st_pxa_priv;
+ int rc;
+ int i;
+
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: config() src_width:%d, src_height:%d, dst_width:%d, dst_height:%d\n",
+ src_width, src_height, dst_width, dst_height);
+
+ /* Check format */
+ if( !vo_pxa_query_format(format) )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: unsupported fourcc for this driver: %x (%s)\n",
+ format, vo_format_name(format) );
+ goto err_out;
+ }
+ priv->format = format;
+
+ /* Change resolution? */
+ priv->vm = flags & VOFLAG_MODESWITCHING;
+ if( priv->vm )
+ {
+ priv->my_fb_var = priv->base_orig_fb_var;
+
+ /* Hard coded values suck, never mind */
+ priv->my_fb_var.xres = 240;
+ priv->my_fb_var.yres = 320;
+ priv->my_fb_var.pixclock = 134617;
+ priv->my_fb_var.left_margin = 20;
+ priv->my_fb_var.right_margin = 46;
+ priv->my_fb_var.upper_margin = 1;
+ priv->my_fb_var.lower_margin = 0;
+ priv->my_fb_var.hsync_len = 20;
+ priv->my_fb_var.vsync_len = 2;
+
+ rc = ioctl( priv->base_fd, FBIOPUT_VSCREENINFO, &(priv->my_fb_var) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: config() Set FBIOPUT_VSCREENINFO on base_fd failed %d\n",
+ errno );
+ priv->vm = 0;
+ goto err_out;
+ }
+
+ /* We need this sleep, to make the change in resolution actually happen, before we open the overlay */
+ sleep(1);
+ }
+
+
+ /* Open up the overlay fbdev */
+ priv->fd = open( "/dev/fb2", O_RDWR );
+
+ if( priv->fd < 0 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: Could not open /dev/fb2: %d\n", errno );
+ goto err_out;
+ }
+
+ /* Read in fb var data */
+ rc = ioctl( priv->fd, FBIOGET_VSCREENINFO, &(priv->my_fb_var) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: config() FBIOGET_VSCREENINFO from fd failed %d\n",
+ errno );
+ goto err_out;
+ }
+
+ /* Store away the source dimensions, so we can place in centre of screen later in vm mode */
+ priv->src_width = src_width;
+ priv->src_height = src_height;
+
+ /* Set up the buffer */
+ if( priv->vm )
+ {
+ /* Ignore size, as the rest of the screen is toast. Use max size */
+ priv->my_fb_var.xres = 240;
+ priv->my_fb_var.yres = 320;
+
+ /* Do we need to rotate? */
+ if( priv->src_width > priv->src_height )
+ {
+ /* Yes */
+ priv->rotate = 1;
+ }
+
+ priv->width = 240;
+ priv->height = 320;
+ }
+ else
+ {
+ priv->my_fb_var.xres = src_width;
+ priv->my_fb_var.yres = src_height;
+ priv->width = src_width;
+ priv->height = src_height;
+ }
+
+ priv->my_fb_var.nonstd = ( 4 << 20) /* Format YV12 */
+ | ( 0 << 0) /* x position */
+ | ( 0 << 10); /* y position */
+ /* We have to set the bits per pixel to a valid value, even though it is
+ * incorrect for YV12
+ */
+ priv->my_fb_var.bits_per_pixel = 16;
+
+ rc = ioctl( priv->fd, FBIOPUT_VSCREENINFO, &(priv->my_fb_var) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: config() FBIOPUT_VSCREENINFO to fd failed: %d\n",
+ errno );
+ goto err_out;
+ }
+
+ /* Next get the fixed fbvars, so we can mmap the data for all 3 planes */
+ rc = ioctl( priv->fd, FBIOGET_FSCREENINFO, &(priv->my_fb_fix) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: config() FBIOGET_FSCREENINFO from fd failed: %d\n",
+ errno );
+ goto err_out;
+ }
+
+ priv->fb_mem_base = mmap( NULL, priv->my_fb_fix.smem_len, (PROT_READ | PROT_WRITE ),
+ MAP_SHARED,
+ priv->fd,
+ 0 );
+
+ if( priv->fb_mem_base == MAP_FAILED )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: mmap fd buffer failed: %d\n", errno );
+ goto err_out;
+ }
+
+ /* Finally, find the offsets of each plane by getting the var data again */
+ rc = ioctl( priv->fd, FBIOGET_VSCREENINFO, &(priv->my_fb_var) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: config() FBIOGET_VSCREENINFO from fd (2) failed %d\n",
+ errno );
+ goto err_out;
+ }
+
+ /* Fill the overlay with black */
+ memset( priv->fb_mem_base + priv->my_fb_var.red.offset, 16, priv->my_fb_var.red.length );
+ memset( priv->fb_mem_base + priv->my_fb_var.green.offset, 128, priv->my_fb_var.green.length );
+ memset( priv->fb_mem_base + priv->my_fb_var.blue.offset, 128, priv->my_fb_var.blue.length );
+
+ /* Now open the OSD overlay - overlay 1, and fill with transparent */
+ sleep( 1 );
+
+ priv->overlay_fd = open( "/dev/fb1", O_RDWR );
+
+ if( priv->overlay_fd < 0 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: Could not open /dev/fb1: %d\n", errno );
+ goto err_out;
+ }
+
+ /* Read in fb var data */
+ rc = ioctl( priv->overlay_fd, FBIOGET_VSCREENINFO, &(priv->osd_fb_var) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: config() FBIOGET_VSCREENINFO from overlay_fd failed; %d\n",
+ errno );
+ goto err_out;
+ }
+
+ priv->osd_fb_var.xres = priv->width;
+ priv->osd_fb_var.yres = priv->height;
+ priv->osd_fb_var.nonstd = ( 0 << 0) /* x position */
+ | ( 0 << 10); /* y position */
+ /* Use 15 bit mode, with top bit transparency */
+ priv->osd_fb_var.bits_per_pixel = 16;
+
+ rc = ioctl( priv->overlay_fd, FBIOPUT_VSCREENINFO, &(priv->osd_fb_var) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: config() FBIOPUT_VSCREENINFO to overlay_fd failed: %d\n",
+ errno );
+ goto err_out;
+ }
+
+ /* Next get the fixed fbvars, so we can mmap the data */
+ rc = ioctl( priv->overlay_fd, FBIOGET_FSCREENINFO, &(priv->osd_fb_fix) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: config() FBIOGET_FSCREENINFO from overlay_fd failed %d\n",
+ errno );
+ goto err_out;
+ }
+
+ priv->osd_mem_base = mmap( NULL, priv->osd_fb_fix.smem_len, (PROT_READ | PROT_WRITE ),
+ MAP_SHARED,
+ priv->overlay_fd,
+ 0 );
+
+ if( priv->osd_mem_base == MAP_FAILED )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: mmap osd_mem_base failed: %d\n", errno );
+ goto err_out;
+ }
+
+ /* Fill the overlay with transparent */
+ vo_pxa_clear_osd( priv->osd_mem_base, priv->osd_fb_fix.smem_len );
+
+ /* We are good to go! */
+ mp_msg( MSGT_VO, MSGL_V, "vo_pxa: Opened video overlay %d x %d fourcc %s\n",
+ priv->my_fb_var.xres,
+ priv->my_fb_var.yres,
+ vo_format_name(format) );
+
+ return 0;
+
+ err_out:
+
+ /* Don't do anything here for the moment */
+ return -1;
+}
+
+
+/*****************************************************************************
+ *
+ * control
+ *
+ * Control display
+ *
+ ****************************************************************************/
+static int control(uint32_t request, void *data, ...)
+{
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: control %08x\n", request );
+
+ switch( request )
+ {
+ case VOCTRL_QUERY_FORMAT:
+ return( vo_pxa_query_format( *(uint32_t *)data ) );
+ break;
+ }
+
+ return VO_NOTIMPL;
+}
+
+
+/*****************************************************************************
+ *
+ * draw_frame
+ *
+ * Display a new RGB/BGR frame of the video to the screen.
+ * params:
+ * src[0] - pointer to the image
+ *
+ ****************************************************************************/
+int draw_frame(uint8_t *src[])
+{
+ /* This is not implimented */
+ mp_msg(MSGT_VO, MSGL_ERR, "vo_pxa: dummy draw_frame() was called\n");
+ return -1;
+}
+
+
+/*****************************************************************************
+ *
+ * draw_slice
+ *
+ * Draw a planar YUV slice to the buffer:
+ * params:
+ * src[3] = source image planes (Y,U,V)
+ * stride[3] = source image planes line widths (in bytes)
+ * w,h = width*height of area to be copied (in Y pixels)
+ * x,y = position at the destination image (in Y pixels)
+ *
+ ****************************************************************************/
+int draw_slice(uint8_t *src[], int stride[], int w,int h, int x,int y)
+{
+ pxa_priv_t *priv = &st_pxa_priv;
+
+ /* This routine is only display routine actually implimented */
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: draw_slice() w %d h %d x %d y %d stride %d %d %d\n",
+ w, h, x, y, stride[0], stride[1], stride[2] );
+
+ /* It would be faster to check if source and dest have same geometry and copy
+ * whole block
+ * For the moment we just copy a line at a time
+ */
+
+ /* In vm mode rotate if wider than long */
+ if( priv->vm )
+ {
+ /* Do we nee to rotate? */
+ if( priv->rotate )
+ {
+ /* Yes, rotated version */
+ int dst_x_offset = 0;
+ int dst_y_offset = 0;
+ int src_x_offset = 0;
+ int src_y_offset = 0;
+
+ /* Figure out dst offset */
+ if( priv->src_width < 320 )
+ {
+ dst_x_offset = ( ( 320 - priv->src_width ) / 2 );
+ /* Make it a multiple of 16 */
+ dst_x_offset &= ~(0xf);
+ }
+
+ if( priv->src_height < 240 )
+ {
+ dst_y_offset = ( ( 240 - priv->src_height ) / 2 );
+ /* Make it a multiple of 16 */
+ dst_y_offset &= ~(0xf);
+ }
+
+ dst_x_offset += x;
+ dst_y_offset += y;
+
+ if( ( dst_x_offset >= 320 ) || ( dst_y_offset >= 240 ) )
+ {
+ /* Nothing to do - drawing off the screen! */
+ return( 0 );
+ }
+
+ /* Limit to drawable area */
+ if( ( w + dst_x_offset ) > 320 )
+ {
+ w = ( 320 - dst_x_offset );
+ }
+
+ if( ( h + dst_y_offset ) > 240 )
+ {
+ h = ( 240 - dst_y_offset );
+ }
+
+ /* And source offset */
+ if( priv->src_width > 320 )
+ {
+ src_x_offset = ( ( priv->src_width - 320 ) / 2 );
+ /* Make it a multiple of 16 */
+ src_x_offset &= ~(0xf);
+ }
+
+ if( priv->src_height > 240 )
+ {
+ src_y_offset = ( ( priv->src_height - 240 ) / 2 );
+ /* Make it a multiple of 16 */
+ src_y_offset &= ~(0xf);
+ }
+
+
+ /* Y first */
+ vo_pxa_copy_and_rotate( src[0] + src_x_offset + (src_y_offset * stride[0]), stride[0],
+ priv->fb_mem_base + priv->my_fb_var.red.offset + (240 * dst_x_offset) + (240 - dst_y_offset - h),
+ w, h, 240 );
+ /* Now U */
+ vo_pxa_copy_and_rotate( src[1] + src_x_offset/2 + (src_y_offset/2 * stride[1]), stride[1],
+ priv->fb_mem_base + priv->my_fb_var.green.offset + (120 * dst_x_offset/2) + (120 - dst_y_offset/2 - h/2),
+ w/2, h/2, 120 );
+ vo_pxa_copy_and_rotate( src[2] + src_x_offset/2 + (src_y_offset/2 * stride[2]), stride[2],
+ priv->fb_mem_base + priv->my_fb_var.blue.offset + (120 * dst_x_offset/2) + (120 - dst_y_offset/2 - h/2),
+ w/2, h/2, 120 );
+ }
+ else
+ {
+ /* Don't rotate */
+ int i;
+ uint8_t *my_src;
+ uint8_t *dest;
+ int dst_x_offset = 0;
+ int dst_y_offset = 0;
+ int src_x_offset = 0;
+ int src_y_offset = 0;
+
+ /* Figure out dst offset */
+ if( priv->src_width < 240 )
+ {
+ dst_x_offset = ( ( 240 - priv->src_width ) / 2 );
+ /* Make it a multiple of 16 */
+ dst_x_offset &= ~(0xf);
+ }
+
+ if( priv->src_height < 320 )
+ {
+ dst_y_offset = ( ( 320 - priv->src_height ) / 2 );
+ /* Make it a multiple of 16 */
+ dst_y_offset &= ~(0xf);
+ }
+
+ dst_x_offset += x;
+ dst_y_offset += y;
+
+ if( ( dst_x_offset >= 240 ) || ( dst_y_offset >= 320 ) )
+ {
+ /* Nothing to do - drawing off the screen! */
+ return( 0 );
+ }
+
+ /* Limit to drawable area */
+ if( ( w + dst_x_offset ) > 240 )
+ {
+ w = ( 240 - dst_x_offset );
+ }
+
+ if( ( h + dst_y_offset ) > 320 )
+ {
+ h = ( 320 - dst_y_offset );
+ }
+
+ /* And source offset */
+ if( priv->src_width > 240 )
+ {
+ src_x_offset = ( ( priv->src_width - 240 ) / 2 );
+ /* Make it a multiple of 16 */
+ src_x_offset &= ~(0xf);
+ }
+
+ if( priv->src_height > 320 )
+ {
+ src_y_offset = ( ( priv->src_height - 320 ) / 2 );
+ /* Make it a multiple of 16 */
+ src_y_offset &= ~(0xf);
+ }
+
+ /* First Y */
+ for( i = 0; i<h; i++ )
+ {
+ dest = priv->fb_mem_base +
+ priv->my_fb_var.red.offset +
+ ( (dst_y_offset+i) * priv->my_fb_fix.line_length ) +
+ dst_x_offset;
+ my_src = src[0] + src_x_offset + (stride[0] * (i+src_y_offset));
+ memcpy( dest, my_src, w );
+ }
+
+ /* Now U */
+ for( i = 0; i<(h/2); i++ )
+ {
+ dest = priv->fb_mem_base +
+ priv->my_fb_var.green.offset +
+ ( ((dst_y_offset/2)+i) * (priv->my_fb_fix.line_length/2) ) +
+ dst_x_offset/2;
+ my_src = src[1] + src_x_offset/2 + (stride[1] * (i+(src_y_offset/2)));
+ memcpy( dest, my_src, w/2 );
+ }
+
+ /* Finaly V */
+ for( i = 0; i<(h/2); i++ )
+ {
+ dest = priv->fb_mem_base +
+ priv->my_fb_var.blue.offset +
+ ( ((dst_y_offset/2)+i) * (priv->my_fb_fix.line_length/2) ) +
+ dst_x_offset/2;
+ my_src = src[2] + src_x_offset/2 + (stride[2] * (i+(src_y_offset/2)));
+ memcpy( dest, my_src, w/2 );
+ }
+
+ }
+ }
+ else
+ {
+ /* Not full screen mode */
+ uint8_t *my_src;
+ uint8_t *dest;
+ size_t length;
+ int i;
+
+ /* It would be faster to check if source and dest have same geometry and copy
+ * whole block
+ * For the moment we just copy a line at a time
+ */
+
+ /* Limit area written to */
+ if( x >= priv->my_fb_fix.line_length )
+ {
+ return 0;
+ }
+
+ if( w + x > priv->my_fb_fix.line_length )
+ {
+ w = priv->my_fb_fix.line_length - x;
+ }
+
+ if( y>= priv->my_fb_var.yres )
+ {
+ return 0;
+ }
+
+ if( h + y > priv->my_fb_var.yres )
+ {
+ h = priv->my_fb_var.yres - y;
+ }
+
+ /* First Y */
+ for( i = 0; i<h; i++ )
+ {
+ dest = priv->fb_mem_base +
+ priv->my_fb_var.red.offset +
+ ( (y+i) * priv->my_fb_fix.line_length ) +
+ x;
+ my_src = src[0] + stride[0] * i;
+ memcpy( dest, my_src, w );
+ }
+
+ /* Now U */
+ for( i = 0; i<(h/2); i++ )
+ {
+ dest = priv->fb_mem_base +
+ priv->my_fb_var.green.offset +
+ ( ((y/2)+i) * (priv->my_fb_fix.line_length/2) ) +
+ x;
+ my_src = src[1] + stride[1] * i;
+ memcpy( dest, my_src, w/2 );
+ }
+
+ /* Finaly V */
+ for( i = 0; i<(h/2); i++ )
+ {
+ dest = priv->fb_mem_base +
+ priv->my_fb_var.blue.offset +
+ ( ((y/2)+i) * (priv->my_fb_fix.line_length/2) ) +
+ x;
+ my_src = src[2] + stride[2] * i;
+ memcpy( dest, my_src, w/2 );
+ }
+ }
+ return 0;
+}
+
+static void draw_osd(void)
+{
+ pxa_priv_t *priv = &st_pxa_priv;
+ int osd_has_changed;
+
+ /* This gets called every frame, so systems which do the OSD without a
+ * seperate overlay can mix in the image. We need to find out if the osd
+ * has actually been updated!
+ */
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: draw_osd() was called\n");
+
+ osd_has_changed = vo_update_osd( priv->width, priv->height);
+
+ if(osd_has_changed)
+ {
+ int i;
+
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: Clear and update OSD\n");
+
+ /* Fill with transparent */
+ vo_pxa_clear_osd( priv->osd_mem_base, priv->osd_fb_fix.smem_len );
+
+ priv->osd_cleared = 1;
+
+ /* now update */
+ if( priv->rotate )
+ {
+ vo_draw_text( priv->width, priv->height, vo_pxa_draw_alpha_with_rotate );
+ }
+ else
+ {
+ vo_draw_text( priv->width, priv->height, vo_pxa_draw_alpha );
+ }
+ }
+}
+
+/*****************************************************************************
+ *
+ * flip_page
+ *
+ * Blit/Flip buffer to the screen. Must be called after each frame!
+ *
+ *
+ ****************************************************************************/
+static void flip_page(void)
+{
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: flip_page() was called\n");
+}
+
+/*****************************************************************************
+ *
+ * check_events
+ *
+ *
+ ****************************************************************************/
+static void check_events(void)
+{
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: check_events() was called\n");
+}
+
+/*****************************************************************************
+ *
+ * uninit
+ *
+ *
+ ****************************************************************************/
+static void uninit(void)
+{
+ pxa_priv_t *priv = &st_pxa_priv;
+ int rc;
+
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: uninit() was called\n");
+
+ if( priv->vm )
+ {
+ /* We need these sleeps, to make the change in resolution actually happen */
+ sleep(1);
+
+ /* Restore original resolution */
+ if( priv->base_fd >= 0 )
+ {
+ rc = ioctl( priv->base_fd, FBIOPUT_VSCREENINFO, &(priv->base_orig_fb_var) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: uninit() FBIOPUT_VSCREENINFO to base_fd failed %d\n",
+ errno );
+ }
+ }
+ /* We need these sleeps, to make the change in resolution actually happen */
+ /* For some reason, if we change the reolution the overlay buffer never gets deleted? */
+ sleep(1);
+ }
+
+
+ /* We need to force the overlays to be really disabled, otherwise they
+ * will come back as zombies after suspend, resume
+ * This trick seems to work, but will not be needed once kernel driver
+ * is fixed
+ */
+ if( priv->fd >= 0 )
+ {
+ rc = ioctl( priv->fd, FBIOGET_VSCREENINFO, &(priv->my_fb_var) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: uninit() FBIOGET_VSCREENINFO from fd failed %d\n",
+ errno );
+ }
+ priv->my_fb_var.bits_per_pixel = 0;
+
+ rc = ioctl( priv->fd, FBIOPUT_VSCREENINFO, &(priv->my_fb_var) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: uninit() FBIOPUT_VSCREENINFO from fd failed %d\n",
+ errno );
+ }
+ }
+
+ if( priv->overlay_fd >= 0 )
+ {
+ rc = ioctl( priv->overlay_fd, FBIOGET_VSCREENINFO, &(priv->my_fb_var) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: uninit() FBIOGET_VSCREENINFO from overlay_fd failed %d\n",
+ errno );
+ }
+ priv->my_fb_var.bits_per_pixel = 0;
+
+ rc = ioctl( priv->overlay_fd, FBIOPUT_VSCREENINFO, &(priv->my_fb_var) );
+
+ if( rc == -1 )
+ {
+ mp_msg( MSGT_VO, MSGL_ERR, "vo_pxa: uninit() FBIOPUT_VSCREENINFO from overlay_fd failed %d\n",
+ errno );
+ }
+ }
+
+ if( priv->base_fd >= 0 )
+ {
+ close( priv->base_fd );
+ priv->base_fd = -1;
+ }
+}
+
+/*****************************************************************************
+ *
+ * Internal functions, not part of mplayer API
+ *
+ ****************************************************************************/
+
+static int vo_pxa_query_format( uint32_t format )
+{
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: vo_pxa_query_format was called: %x (%s)\n",
+ format, vo_format_name(format));
+
+ switch (format)
+ {
+ /* Planar YUV Formats */
+ /* Warning! dropthrough */
+ case IMGFMT_YV12:
+ case IMGFMT_IYUV:
+ case IMGFMT_I420:
+ return( VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW
+ | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN | VFCAP_OSD
+ | VFCAP_ACCEPT_STRIDE );
+ break;
+ }
+
+ return 0;
+}
+
+static void vo_pxa_copy_and_rotate( uint8_t *src, int stride, uint8_t *dst, int w, int h, int dst_stride )
+{
+ int i,j;
+ uint8_t *my_src, *my_dst;
+ Vo_Pxa_Pixel_Data8 *img_dst_pixel_data8;
+
+ /* Loop so writing consectuive data in rotated image */
+ /* This produces some pretty good assembler - better than the handcoded stuff in w100 */
+ for( j=0; j<w; j++ )
+ {
+ my_src = src + j + ( stride * (h - 1) );
+
+ img_dst_pixel_data8 = (Vo_Pxa_Pixel_Data8 *)dst;
+
+ /* Allow for src not multiple of 8 by running off the end a little. Should not matter */
+ for( i=0; i<((h+7)/8); i++ )
+ {
+ register Vo_Pxa_Pixel_Data8 build_pixels;
+
+ build_pixels.a = *my_src;
+ my_src -= stride;
+ build_pixels.a |= (*my_src<<8);
+ my_src -= stride;
+ build_pixels.a |= (*my_src<<16);
+ my_src -= stride;
+ build_pixels.a |= (*my_src<<24);
+ my_src -= stride;
+
+ build_pixels.b = *my_src;
+ my_src -= stride;
+ build_pixels.b |= (*my_src<<8);
+ my_src -= stride;
+ build_pixels.b |= (*my_src<<16);
+ my_src -= stride;
+ build_pixels.b |= (*my_src<<24);
+ my_src -= stride;
+
+ *img_dst_pixel_data8++ = build_pixels;
+ }
+
+ /* Allow source not as big as dest */
+ dst += dst_stride;
+ }
+}
+
+static void vo_pxa_draw_alpha( int x, int y, int w, int h, unsigned char *src,
+ unsigned char *srca, int stride )
+{
+ /* Dump data into our 15bit buffer with transparency */
+ pxa_priv_t *priv = &st_pxa_priv;
+ int i,j;
+ unsigned char *src_ptr = src;
+ unsigned char *a_ptr = srca;
+ unsigned short *out_ptr;
+
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: vo_pxa_draw_alpha() w %d y %d w %d h %d\n", x, y, w, h );
+
+ /* We ignore the alpha channel, other than off or on */
+ for( i=0; i<h; i++ )
+ {
+ out_ptr = priv->osd_mem_base + x + ( priv->width * ( y + i ) );
+ src_ptr = src + ( i * stride );
+ a_ptr = srca + ( i * stride );
+
+ for( j=0; j<w; j++ )
+ {
+ /* The srca is a 0-255 transpaency level, where 0 is transparent.
+ * We only support transparent on or off
+ */
+ if( *a_ptr++ )
+ {
+ unsigned int grey;
+ /* The src is a greylevel from 0 - 255 */
+ /* We may as well use this value */
+ grey = *src_ptr++ >> 3;
+ *out_ptr++ = grey | (grey << 5) | (grey<<10);
+ }
+ else
+ {
+ *out_ptr++ = 0x8000;
+ src_ptr++;
+ }
+
+ }
+ }
+}
+
+static void vo_pxa_draw_alpha_with_rotate( int x, int y, int w, int h, unsigned char *src,
+ unsigned char *srca, int stride )
+{
+ /* Dump data into our 15bit buffer with transparency */
+ pxa_priv_t *priv = &st_pxa_priv;
+ int i,j;
+ unsigned char *src_ptr = src;
+ unsigned char *a_ptr = srca;
+ unsigned short *out_ptr;
+
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: vo_pxa_draw_alpha_with_rotate() x %d y %d w %d h %d\n", x, y, w, h );
+
+ if( x >= 320 )
+ {
+ /* Off the screen */
+ return;
+ }
+
+ /* Limit to size of screen/memory */
+ if( ( w + x ) > 320 )
+ {
+ w = 320 - x;
+ }
+
+ if( y >= 240 )
+ {
+ /* Off the screen */
+ return;
+ }
+
+ /* Limit to size of screen/memory */
+ if( ( y + h ) > 240 )
+ {
+ h = 240 - y;
+ }
+
+
+ /* We ignore the alpha channel, other than off or on */
+ for( i=0; i<w; i++ )
+ {
+ out_ptr = priv->osd_mem_base + y + ( priv->width * ( x + i ) );
+ src_ptr = src + i + ( stride * (h - 1));
+ a_ptr = srca + i + ( stride * (h - 1));
+
+ for( j=0; j<h; j++ )
+ {
+ /* The srca is a 0-255 transpaency level, where 0 is transparent.
+ * We only support transparent on or off
+ */
+ if( *a_ptr )
+ {
+ unsigned int grey;
+ /* The src is a greylevel from 0 - 255 */
+ /* We may as well use this value */
+ grey = *src_ptr >> 3;
+ *out_ptr++ = grey | (grey << 5) | (grey<<10);
+ }
+ else
+ {
+ *out_ptr++ = 0x8000;
+ src_ptr;
+ }
+ a_ptr -= stride;
+ src_ptr -= stride;
+ }
+ }
+}
+
+static void vo_pxa_clear_osd( uint16_t *mem_base, int len )
+{
+ /* fill whole area with 0x8000 -> trsnaparent.
+ * assume area is word aligned, and a mulitple of 16 bytes in length
+ * However I tried I could not get the compiler to generate this.
+ * It always wanted to to do ldmia 4 words from stack followed by
+ * stmia 4 words. This seems odd!
+ */
+ __asm__ __volatile__ (
+ "mov r4, %0 \n\t"
+ "mov r5, %1, lsr #4 \n\t"
+ "subs r5, r5, #1\n\t"
+ "mov r0, #0x80000000 \n\t"
+ "orr r0, r0, #0x00008000 \n\t"
+ "mov r1, r0 \n\t"
+ "mov r2, r0 \n\t"
+ "mov r3, r0 \n\t"
+ "1: \n\t"
+ "subs r5, r5, #1\n\t"
+ "stmia r4!, {r0, r1, r2, r3} \n\t"
+ "bne 1b \n\t"
+ :
+ : "r"(mem_base), "r"(len)
+ : "memory", "r0", "r1", "r2", "r3", "r4", "r5", "cc" );
+}
diff --git a/packages/mplayer/files/vo_pxa.h b/packages/mplayer/files/vo_pxa.h
new file mode 100644
index 0000000000..31cc1a7862
--- /dev/null
+++ b/packages/mplayer/files/vo_pxa.h
@@ -0,0 +1,51 @@
+/*
+ * Video driver for PXA 27x Overlay 2, in conjunction with kernel driver
+ * by Tim Chick <tim (DOT) chick (AT) csr (DOT) com>
+ * (C) 2007
+ */
+
+#include <linux/fb.h>
+
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <fcntl.h>
+
+typedef struct pxa_priv_s {
+ uint8_t *fb_mem_base;
+ uint16_t *osd_mem_base;
+
+ int fd;
+ int base_fd;
+ int overlay_fd;
+ struct fb_var_screeninfo my_fb_var;
+ struct fb_fix_screeninfo my_fb_fix;
+ struct fb_var_screeninfo base_orig_fb_var;
+ struct fb_var_screeninfo osd_fb_var;
+ struct fb_fix_screeninfo osd_fb_fix;
+ int vm;
+ uint32_t format;
+ int src_width;
+ int src_height;
+ int width;
+ int height;
+ int rotate;
+ int osd_cleared;
+} pxa_priv_t;
+
+typedef struct vo_pxa_pixel_data8 {
+ unsigned int a,b;
+} Vo_Pxa_Pixel_Data8;
+
+#define UNUSED(v) ((void)(v))
+
+/* Internal API */
+static int vo_pxa_query_format( uint32_t format );
+static void vo_pxa_copy_and_rotate( uint8_t *src, int stride, uint8_t *dst, int w, int h, int dst_stride );
+static void vo_pxa_draw_alpha( int x, int y, int w, int h, unsigned char *src,
+ unsigned char *srca, int stride );
+static void vo_pxa_draw_alpha_with_rotate( int x, int y, int w, int h, unsigned char *src,
+ unsigned char *srca, int stride );
+
+static void vo_pxa_clear_osd( uint16_t *mem_base, int len );
diff --git a/packages/mplayer/mplayer-common.bb b/packages/mplayer/mplayer-common.bb
index 4b9570abbf..cf1ced294f 100644
--- a/packages/mplayer/mplayer-common.bb
+++ b/packages/mplayer/mplayer-common.bb
@@ -1,6 +1,6 @@
#
# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+# License: MIT (see COPYING.MIT)
#
# Filename: mplayer-common.bb
# Date: 26-Mar-06
diff --git a/packages/mplayer/mplayer_0.0+1.0rc1.bb b/packages/mplayer/mplayer_0.0+1.0rc1.bb
index 3a63413d7a..2910cbd0a4 100644
--- a/packages/mplayer/mplayer_0.0+1.0rc1.bb
+++ b/packages/mplayer/mplayer_0.0+1.0rc1.bb
@@ -2,13 +2,15 @@ DESCRIPTION = "Open Source multimedia player."
SECTION = "multimedia"
PRIORITY = "optional"
HOMEPAGE = "http://www.mplayerhq.hu/"
-DEPENDS = "virtual/libsdl libmad zlib libpng jpeg liba52 freetype fontconfig alsa-lib lzo ncurses lame"
+DEPENDS = "virtual/libsdl libmad zlib libpng jpeg liba52 freetype fontconfig alsa-lib lzo ncurses lame libxv virtual/libx11"
RDEPENDS = "mplayer-common"
LICENSE = "GPL"
SRC_URI = "http://www1.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc1.tar.bz2 \
file://vo_w100.c \
file://vo_w100_api.h \
file://vo_w100_fb.h \
+ file://vo_pxa.c \
+ file://vo_pxa.h \
file://Makefile.patch;patch=1 \
file://w100-configure.patch;patch=1 \
file://w100-Makefile.patch;patch=1 \
@@ -17,7 +19,10 @@ SRC_URI = "http://www1.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc1.tar.bz2 \
file://pld-onlyarm5.patch;patch=1 \
file://makefile-nostrip.patch;patch=1 \
${SOURCEFORGE_MIRROR}/libw100/mplayer-imageon.patch;patch=1 \
- file://imageon-video_out.patch;patch=1"
+ file://imageon-video_out.patch;patch=1 \
+ file://powerpc-is-ppc.diff;patch=1 \
+ file://pxa_configure.patch;patch=1 \
+ file://pxa-video_out.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
@@ -29,7 +34,7 @@ PACKAGE_ARCH_mencoder_collie = "collie"
RCONFLICTS_${PN} = "mplayer-atty"
RREPLACES_${PN} = "mplayer-atty"
-PR = "r4"
+PR = "r12"
PARALLEL_MAKE = ""
@@ -40,7 +45,7 @@ S = "${WORKDIR}/MPlayer-1.0rc1"
PACKAGES =+ "mencoder"
-FILES_${PN} = "${bindir}/mplayer"
+FILES_${PN} = "${bindir}/mplayer ${libdir}"
FILES_mencoder = "${bindir}/mencoder"
inherit autotools pkgconfig
@@ -135,11 +140,11 @@ EXTRA_OECONF = " \
--disable-dvbhead \
--disable-mga \
--disable-xmga \
- --disable-xv \
+ --enable-xv \
--disable-xvmc \
--disable-vm \
--disable-xinerama \
- --disable-x11 \
+ --enable-x11 \
--enable-fbdev \
--disable-mlib \
--disable-3dfx \
@@ -169,13 +174,23 @@ EXTRA_OECONF = " \
--disable-runtime-cpudetection \
"
+EXTRA_OECONF_append_arm = " --disable-decoder=vorbis_decoder \
+ --disable-encoder=vorbis_encoder"
+
EXTRA_OECONF_append_c7x0 = " --enable-w100 --enable-imageon "
EXTRA_OECONF_append_hx4700 = " --enable-imageon "
+EXTRA_OECONF_append_progear = " --disable-sse --disable-3dnow --disable-mmxext --disable-sse2"
+EXTRA_OECONF_append_spitz = " --enable-pxa "
+
+TARGET_CC_ARCH_spitz = "-march=iwmmxt -mtune=iwmmxt"
+PACKAGE_ARCH_spitz = "iwmmxt"
do_configure() {
cp ${WORKDIR}/vo_w100.c ${S}/libvo
cp ${WORKDIR}/vo_w100_api.h ${S}/libvo
cp ${WORKDIR}/vo_w100_fb.h ${S}/libvo
+ cp ${WORKDIR}/vo_pxa.c ${S}/libvo
+ cp ${WORKDIR}/vo_pxa.h ${S}/libvo
sed -i 's|/usr/include|${STAGING_INCDIR}|g' ${S}/configure
sed -i 's|/usr/lib|${STAGING_LIBDIR}|g' ${S}/configure
diff --git a/packages/mplayer/mplayer_svn.bb b/packages/mplayer/mplayer_svn.bb
index 5dca7401c9..886dbb072f 100644
--- a/packages/mplayer/mplayer_svn.bb
+++ b/packages/mplayer/mplayer_svn.bb
@@ -9,12 +9,18 @@ SRC_URI = "svn://svn.mplayerhq.hu/mplayer;module=trunk \
file://vo_w100.c \
file://vo_w100_api.h \
file://vo_w100_fb.h \
+ file://vo_pxa.c \
+ file://vo_pxa.h \
file://Makefile-codec-cfg.patch;patch=1 \
file://w100-configure-svn.patch;patch=1 \
file://w100-video_out.patch;patch=1 \
file://w100-mplayer.patch;patch= \
file://pld-onlyarm5.patch;patch=1 \
- file://makefile-nostrip-svn.patch;patch=1"
+ file://makefile-nostrip-svn.patch;patch=1 \
+ 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 "
RCONFLICTS_${PN} = "mplayer-atty"
RREPLACES_${PN} = "mplayer-atty"
@@ -79,7 +85,7 @@ EXTRA_OECONF = " \
--enable-png \
--enable-jpeg \
--disable-libcdio \
- --enable-liblzo \
+ --disable-liblzo \
--disable-win32 \
--disable-qtx \
--disable-xanim \
@@ -161,13 +167,33 @@ EXTRA_OECONF = " \
--disable-runtime-cpudetection \
"
+EXTRA_OECONF_append_progear = " --disable-sse --disable-3dnow --disable-mmxext --disable-sse2"
+
+#enable support for the ati imageon series (w100 and w3220)
EXTRA_OECONF_append_c7x0 = " --enable-w100 "
+EXTRA_OECONF_append_hx4700 = " --enable-imageon "
+
+#enable pxa270 overlay support
+EXTRA_OECONF_append_spitz = " --enable-pxa "
+EXTRA_OECONF_append_a780 = " --enable-pxa "
+
+#build with support for the iwmmxt instruction support (pxa270 and up)
+TARGET_CC_ARCH_spitz = "-march=iwmmxt -mtune=iwmmxt"
+PACKAGE_ARCH_spitz = "iwmmxt"
+TARGET_CC_ARCH_a780 = "-march=iwmmxt -mtune=iwmmxt"
+PACKAGE_ARCH_a780 = "iwmmxt"
+TARGET_CC_ARCH_hx4700 = "-march=iwmmxt -mtune=iwmmxt"
+PACKAGE_ARCH_hx4700= "iwmmxt"
+
do_configure() {
cp ${WORKDIR}/vo_w100.c ${S}/libvo
cp ${WORKDIR}/vo_w100_api.h ${S}/libvo
cp ${WORKDIR}/vo_w100_fb.h ${S}/libvo
- ./configure ${EXTRA_OECONF}
+ cp ${WORKDIR}/vo_pxa.c ${S}/libvo
+ cp ${WORKDIR}/vo_pxa.h ${S}/libvo
+
+ ./configure ${EXTRA_OECONF}
}
do_compile () {
diff --git a/packages/mrxvt/files/fix-compile.patch b/packages/mrxvt/files/fix-compile.patch
index 25794dc5fd..c849ffd35e 100644
--- a/packages/mrxvt/files/fix-compile.patch
+++ b/packages/mrxvt/files/fix-compile.patch
@@ -1,19 +1,16 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- mrxvt-0.4.1/src/rxvt.h~fix-compile
-+++ mrxvt-0.4.1/src/rxvt.h
-@@ -387,15 +387,8 @@
- ** which in turn is unsafe without checking.
- ** Untainted defines the type of data that is safe.
- */
+Index: mrxvt-0.5.2/src/rxvt.h
+===================================================================
+--- mrxvt-0.5.2.orig/src/rxvt.h
++++ mrxvt-0.5.2/src/rxvt.h
+@@ -488,15 +488,8 @@ typedef char* XPointer;
+ * turn is unsafe without checking. Untainted defines the type of data that is
+ * safe.
+ */
-#ifdef __GNUC__
-# define $tainted
-# define $untainted
--# define TAINTED $tainted
--# define UNTAINTED $untainted
+-# define TAINTED $tainted
+-# define UNTAINTED $untainted
-#else
-# define TAINTED
-# define UNTAINTED
diff --git a/packages/mrxvt/mrxvt_0.4.1.bb b/packages/mrxvt/mrxvt_0.4.1.bb
deleted file mode 100644
index 153d226f97..0000000000
--- a/packages/mrxvt/mrxvt_0.4.1.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "MRXVT is a lightweight and powerful X terminal emulator based on aterm and rxvt"
-HOMEPAGE = "http://materm.sourceforge.net"
-AUTHOR = "Jimmy Zhou <jimmyzhou@users.sf.net>"
-LICENSE = "GPL"
-SECTION = "x11/apps"
-DEPENDS = "virtual/libx11 libxext libxpm jpeg libpng"
-PR = "r0"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/materm/mrxvt-${PV}.tar.gz \
- file://fix-compile.patch;patch=1"
-
-inherit autotools
-
-EXTRA_OECONF = "--enable-everything --disable-debug"
diff --git a/packages/mrxvt/mrxvt_0.5.2.bb b/packages/mrxvt/mrxvt_0.5.2.bb
new file mode 100644
index 0000000000..4a5b71f0c9
--- /dev/null
+++ b/packages/mrxvt/mrxvt_0.5.2.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "MRXVT is a lightweight and powerful X terminal emulator based on aterm and rxvt"
+HOMEPAGE = "http://materm.sourceforge.net"
+AUTHOR = "Jimmy Zhou <jimmyzhou@users.sf.net>"
+LICENSE = "GPL"
+SECTION = "x11/applications"
+RDEPENDS = "freetype fontconfig libxft"
+DEPENDS = "freetype fontconfig libxft virtual/libx11"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/materm/mrxvt-${PV}.tar.gz \
+ file://fix-compile.patch;patch=1"
+
+inherit autotools
+
+EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
+ --x-libraries=${STAGING_LIBDIR} \
+ --enable-everything \
+ --disable-debug"
diff --git a/packages/msmtp/.mtn2git_empty b/packages/msmtp/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/msmtp/.mtn2git_empty
diff --git a/packages/msmtp/msmtp_1.4.10.bb b/packages/msmtp/msmtp_1.4.10.bb
new file mode 100644
index 0000000000..6fe33c707a
--- /dev/null
+++ b/packages/msmtp/msmtp_1.4.10.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "A sendmail replacement for use in MTAs like mutt"
+HOMEPAGE = "http://msmtp.sourceforge.net/"
+SECTION = "console/network"
+LICENSE = "GPLv2"
+DEPENDS = "zlib gnutls"
+PR = "r0"
+SRC_URI = "${SOURCEFORGE_MIRROR}/msmtp/msmtp-${PV}.tar.bz2"
+
+inherit autotools
+
diff --git a/packages/mtd/mtd-utils-native.inc b/packages/mtd/mtd-utils-native.inc
new file mode 100644
index 0000000000..da9759f02f
--- /dev/null
+++ b/packages/mtd/mtd-utils-native.inc
@@ -0,0 +1,10 @@
+inherit native
+DEPENDS = "zlib-native lzo-native"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/mtd-utils"
+
+do_stage () {
+ for binary in ${mtd_utils}; do
+ install -m 0755 $binary ${STAGING_BINDIR}
+ done
+}
+ \ No newline at end of file
diff --git a/packages/mtd/mtd-utils-native_0.0.0+cvs20050801.bb b/packages/mtd/mtd-utils-native_0.0.0+cvs20050801.bb
deleted file mode 100644
index ac060ecef2..0000000000
--- a/packages/mtd/mtd-utils-native_0.0.0+cvs20050801.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-LICENSE = "GPLv2"
-SECTION = "base"
-require mtd-utils_${PV}.bb
-inherit native
-DEPENDS = "zlib-native"
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/mtd-utils"
-
-do_stage () {
- for binary in ${mtd_utils}; do
- install -m 0755 util/$binary ${STAGING_BINDIR}/
- done
-}
diff --git a/packages/mtd/mtd-utils-native_0.0.0+cvs20060223.bb b/packages/mtd/mtd-utils-native_0.0.0+cvs20060223.bb
index ac060ecef2..6f9d71e10c 100644
--- a/packages/mtd/mtd-utils-native_0.0.0+cvs20060223.bb
+++ b/packages/mtd/mtd-utils-native_0.0.0+cvs20060223.bb
@@ -1,12 +1,2 @@
-LICENSE = "GPLv2"
-SECTION = "base"
require mtd-utils_${PV}.bb
-inherit native
-DEPENDS = "zlib-native"
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/mtd-utils"
-
-do_stage () {
- for binary in ${mtd_utils}; do
- install -m 0755 util/$binary ${STAGING_BINDIR}/
- done
-}
+require mtd-utils-native.inc
diff --git a/packages/mtd/mtd-utils-native_1.0.0+git.bb b/packages/mtd/mtd-utils-native_1.0.0+git.bb
new file mode 100644
index 0000000000..6f9d71e10c
--- /dev/null
+++ b/packages/mtd/mtd-utils-native_1.0.0+git.bb
@@ -0,0 +1,2 @@
+require mtd-utils_${PV}.bb
+require mtd-utils-native.inc
diff --git a/packages/mtd/mtd-utils-native_1.0.0.bb b/packages/mtd/mtd-utils-native_1.0.0.bb
new file mode 100644
index 0000000000..6f9d71e10c
--- /dev/null
+++ b/packages/mtd/mtd-utils-native_1.0.0.bb
@@ -0,0 +1,2 @@
+require mtd-utils_${PV}.bb
+require mtd-utils-native.inc
diff --git a/packages/mtd/mtd-utils/add-exclusion-to-mkfs-jffs2-git.patch b/packages/mtd/mtd-utils/add-exclusion-to-mkfs-jffs2-git.patch
new file mode 100644
index 0000000000..5504a11e8a
--- /dev/null
+++ b/packages/mtd/mtd-utils/add-exclusion-to-mkfs-jffs2-git.patch
@@ -0,0 +1,106 @@
+---
+ mkfs.jffs2.c | 45 ++++++++++++++++++++++++++++++++++++++++++---
+ 1 file changed, 42 insertions(+), 3 deletions(-)
+
+Index: git/mkfs.jffs2.c
+===================================================================
+--- git.orig/mkfs.jffs2.c 2007-01-23 15:42:34.000000000 +0000
++++ git/mkfs.jffs2.c 2007-01-23 15:46:08.000000000 +0000
+@@ -97,7 +97,12 @@ struct filesystem_entry {
+ struct filesystem_entry *files; /* Only relevant to directories */
+ };
+
+-
++struct ignorepath_entry {
++ struct ignorepath_entry* next; /* Points to the next ignorepath element */
++ char name[PATH_MAX]; /* Name of the entry */
++};
++
++static struct ignorepath_entry* ignorepath = 0;
+ static int out_fd = -1;
+ static int in_fd = -1;
+ static char default_rootdir[] = ".";
+@@ -372,7 +377,7 @@ static struct filesystem_entry *recursiv
+ char *hpath, *tpath;
+ struct dirent *dp, **namelist;
+ struct filesystem_entry *entry;
+-
++ struct ignorepath_entry* element = ignorepath;
+
+ if (lstat(hostpath, &sb)) {
+ perror_msg_and_die("%s", hostpath);
+@@ -381,6 +386,15 @@ static struct filesystem_entry *recursiv
+ entry = add_host_filesystem_entry(targetpath, hostpath,
+ sb.st_uid, sb.st_gid, sb.st_mode, 0, parent);
+
++ while ( element ) {
++ if ( strcmp( element->name, targetpath ) == 0 ) {
++ printf( "Note: ignoring directories below '%s'\n", targetpath );
++ return entry;
++ break;
++ }
++ element = element->next;
++ }
++
+ n = scandir(hostpath, &namelist, 0, alphasort);
+ if (n < 0) {
+ perror_msg_and_die("opening directory %s", hostpath);
+@@ -1405,6 +1419,7 @@ static struct option long_options[] = {
+ {"root", 1, NULL, 'r'},
+ {"pagesize", 1, NULL, 's'},
+ {"eraseblock", 1, NULL, 'e'},
++ {"ignore", 1, NULL, 'I'},
+ {"output", 1, NULL, 'o'},
+ {"help", 0, NULL, 'h'},
+ {"verbose", 0, NULL, 'v'},
+@@ -1452,6 +1467,7 @@ static char *helptext =
+ " -L, --list-compressors Show the list of the avaiable compressors\n"
+ " -t, --test-compression Call decompress and compare with the original (for test)\n"
+ " -n, --no-cleanmarkers Don't add a cleanmarker to every eraseblock\n"
++" -I, --ignore=PATH Ignore sub directory and file tree below PATH when recursing over the file system\n"
+ " -o, --output=FILE Output to FILE (default: stdout)\n"
+ " -l, --little-endian Create a little-endian filesystem\n"
+ " -b, --big-endian Create a big-endian filesystem\n"
+@@ -1617,11 +1633,12 @@ int main(int argc, char **argv)
+ struct filesystem_entry *root;
+ char *compr_name = NULL;
+ int compr_prior = -1;
++ struct ignorepath_entry* element = ignorepath;
+
+ jffs2_compressors_init();
+
+ while ((opt = getopt_long(argc, argv,
+- "D:d:r:s:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:i:", long_options, &c)) >= 0)
++ "D:d:r:s:I:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:i:", long_options, &c)) >= 0)
+ {
+ switch (opt) {
+ case 'D':
+@@ -1644,6 +1661,28 @@ int main(int argc, char **argv)
+ page_size = strtol(optarg, NULL, 0);
+ break;
+
++ case 'I':
++ printf( "Note: Adding '%s' to ignore Path\n", optarg );
++ element = ignorepath;
++ if ( !ignorepath ) {
++ ignorepath = xmalloc( sizeof( struct ignorepath_entry ) );
++ ignorepath->next = 0;
++ strcpy( &ignorepath->name[0], optarg );
++ } else {
++ while ( element->next ) element = element->next;
++ element->next = xmalloc( sizeof( struct ignorepath_entry ) );
++ element->next->next = 0;
++ strcpy( &element->next->name[0], optarg );
++ }
++ printf( "--------- Dumping ignore path list ----------------\n" );
++ element = ignorepath;
++ while ( element ) {
++ printf( " * '%s'\n", &element->name[0] );
++ element = element->next;
++ }
++ printf( "---------------------------------------------------\n" );
++ break;
++
+ case 'o':
+ if (out_fd != -1) {
+ error_msg_and_die("output filename specified more than once");
diff --git a/packages/mtd/mtd-utils/add_lzo.patch b/packages/mtd/mtd-utils/add_lzo.patch
new file mode 100644
index 0000000000..9afd1ca46b
--- /dev/null
+++ b/packages/mtd/mtd-utils/add_lzo.patch
@@ -0,0 +1,220 @@
+Add LZO support to mtd-utils to generate LZO compressed jffs2 images
+
+Unlike the kernel version, the standard lzo userspace library is used
+along with lzo1x_999_compress rather than the lzo1x_1_compress version
+since better compression ratios can be obtained (at no significant cost
+to decompression time).
+
+Signed-off-by: Richard Purdie <rpurdie@openedhand.com>
+
+---
+ Makefile | 3 -
+ compr.c | 6 ++
+ compr.h | 6 ++
+ compr_lzo.c | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ include/linux/jffs2.h | 1
+ 5 files changed, 135 insertions(+), 1 deletion(-)
+
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile 2007-03-01 11:57:58.000000000 +0000
++++ git/Makefile 2007-03-01 11:58:01.000000000 +0000
+@@ -58,8 +58,9 @@ $(BUILDDIR)/mkfs.jffs2: $(BUILDDIR)/crc3
+ $(BUILDDIR)/compr_rtime.o \
+ $(BUILDDIR)/mkfs.jffs2.o \
+ $(BUILDDIR)/compr_zlib.o \
++ $(BUILDDIR)/compr_lzo.o \
+ $(BUILDDIR)/compr.o
+- $(CC) $(LDFLAGS) -o $@ $^ -lz
++ $(CC) $(LDFLAGS) -o $@ $^ -lz -llzo
+
+ $(BUILDDIR)/flash_eraseall: $(BUILDDIR)/crc32.o $(BUILDDIR)/flash_eraseall.o
+ $(CC) $(LDFLAGS) -o $@ $^
+Index: git/compr.c
+===================================================================
+--- git.orig/compr.c 2007-03-01 11:57:58.000000000 +0000
++++ git/compr.c 2007-03-01 11:58:01.000000000 +0000
+@@ -474,6 +474,9 @@ int jffs2_compressors_init(void)
+ #ifdef CONFIG_JFFS2_RTIME
+ jffs2_rtime_init();
+ #endif
++#ifdef CONFIG_JFFS2_LZO
++ jffs2_lzo_init();
++#endif
+ return 0;
+ }
+
+@@ -485,5 +488,8 @@ int jffs2_compressors_exit(void)
+ #ifdef CONFIG_JFFS2_ZLIB
+ jffs2_zlib_exit();
+ #endif
++#ifdef CONFIG_JFFS2_LZO
++ jffs2_lzo_exit();
++#endif
+ return 0;
+ }
+Index: git/compr.h
+===================================================================
+--- git.orig/compr.h 2007-03-01 11:57:58.000000000 +0000
++++ git/compr.h 2007-03-01 11:58:01.000000000 +0000
+@@ -21,11 +21,13 @@
+
+ #define CONFIG_JFFS2_ZLIB
+ #define CONFIG_JFFS2_RTIME
++#define CONFIG_JFFS2_LZO
+
+ #define JFFS2_RUBINMIPS_PRIORITY 10
+ #define JFFS2_DYNRUBIN_PRIORITY 20
+ #define JFFS2_RTIME_PRIORITY 50
+ #define JFFS2_ZLIB_PRIORITY 60
++#define JFFS2_LZO_PRIORITY 80
+
+ #define JFFS2_COMPR_MODE_NONE 0
+ #define JFFS2_COMPR_MODE_PRIORITY 1
+@@ -111,5 +113,9 @@ void jffs2_zlib_exit(void);
+ int jffs2_rtime_init(void);
+ void jffs2_rtime_exit(void);
+ #endif
++#ifdef CONFIG_JFFS2_LZO
++int jffs2_lzo_init(void);
++void jffs2_lzo_exit(void);
++#endif
+
+ #endif /* __JFFS2_COMPR_H__ */
+Index: git/compr_lzo.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/compr_lzo.c 2007-03-01 11:58:01.000000000 +0000
+@@ -0,0 +1,120 @@
++/*
++ * JFFS2 LZO Compression Interface.
++ *
++ * Copyright (C) 2007 Nokia Corporation. All rights reserved.
++ *
++ * Author: Richard Purdie <rpurdie@openedhand.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.
++ *
++ * 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., 51 Franklin St, Fifth Floor, Boston, MA
++ * 02110-1301 USA
++ *
++ */
++
++#include <stdint.h>
++#include <stdio.h>
++#include <string.h>
++#include <asm/types.h>
++#include <linux/jffs2.h>
++#include <lzo1x.h>
++#include "compr.h"
++
++extern int page_size;
++
++static void *lzo_mem;
++static void *lzo_compress_buf;
++
++/*
++ * Note about LZO compression.
++ *
++ * We want to use the _999_ compression routine which gives better compression
++ * rates at the expense of time. Decompression time is unaffected. We might as
++ * well use the standard lzo library routines for this but they will overflow
++ * the destination buffer since they don't check the destination size.
++ *
++ * We therefore compress to a temporary buffer and copy if it will fit.
++ *
++ */
++static int jffs2_lzo_cmpr(unsigned char *data_in, unsigned char *cpage_out,
++ uint32_t *sourcelen, uint32_t *dstlen, void *model)
++{
++ uint32_t compress_size;
++ int ret;
++
++ ret = lzo1x_999_compress(data_in, *sourcelen, lzo_compress_buf, &compress_size, lzo_mem);
++
++ if (ret != LZO_E_OK)
++ return -1;
++
++ if (compress_size > *dstlen)
++ return -1;
++
++ memcpy(cpage_out, lzo_compress_buf, compress_size);
++ *dstlen = compress_size;
++
++ return 0;
++}
++
++static int jffs2_lzo_decompress(unsigned char *data_in, unsigned char *cpage_out,
++ uint32_t srclen, uint32_t destlen, void *model)
++{
++ int ret;
++ uint32_t dl;
++
++ ret = lzo1x_decompress_safe(data_in,srclen,cpage_out,&dl,NULL);
++
++ if (ret != LZO_E_OK || dl != destlen)
++ return -1;
++
++ return 0;
++}
++
++static struct jffs2_compressor jffs2_lzo_comp = {
++ .priority = JFFS2_LZO_PRIORITY,
++ .name = "lzo",
++ .compr = JFFS2_COMPR_LZO,
++ .compress = &jffs2_lzo_cmpr,
++ .decompress = &jffs2_lzo_decompress,
++ .disabled = 0,
++};
++
++int jffs2_lzo_init(void)
++{
++ int ret;
++
++ lzo_mem = malloc(LZO1X_999_MEM_COMPRESS);
++ if (!lzo_mem)
++ return -1;
++
++ /* Worse case LZO compression size from their FAQ */
++ lzo_compress_buf = malloc(page_size + (page_size / 64) + 16 + 3);
++ if (!lzo_compress_buf) {
++ free(lzo_mem);
++ return -1;
++ }
++
++ ret = jffs2_register_compressor(&jffs2_lzo_comp);
++ if (ret < 0) {
++ free(lzo_compress_buf);
++ free(lzo_mem);
++ }
++
++ return ret;
++}
++
++void jffs2_lzo_exit(void)
++{
++ jffs2_unregister_compressor(&jffs2_lzo_comp);
++ free(lzo_compress_buf);
++ free(lzo_mem);
++}
+Index: git/include/linux/jffs2.h
+===================================================================
+--- git.orig/include/linux/jffs2.h 2007-03-01 11:57:58.000000000 +0000
++++ git/include/linux/jffs2.h 2007-03-01 11:58:01.000000000 +0000
+@@ -46,6 +46,7 @@
+ #define JFFS2_COMPR_COPY 0x04
+ #define JFFS2_COMPR_DYNRUBIN 0x05
+ #define JFFS2_COMPR_ZLIB 0x06
++#define JFFS2_COMPR_LZO 0x07
+ /* Compatibility flags. */
+ #define JFFS2_COMPAT_MASK 0xc000 /* What do to if an unknown nodetype is found */
+ #define JFFS2_NODE_ACCURATE 0x2000
diff --git a/packages/mtd/mtd-utils/favour_lzo.patch b/packages/mtd/mtd-utils/favour_lzo.patch
new file mode 100644
index 0000000000..9e55d5f4b3
--- /dev/null
+++ b/packages/mtd/mtd-utils/favour_lzo.patch
@@ -0,0 +1,136 @@
+Add a favourlzo compression mode to mtd-utils
+
+This allows lzo compression to be used in the cases where the
+compression ratio isn't quite as good zlib. This can make sense in
+certain use cases because LZO decompression is much faster than zlib.
+
+Signed-off-by: Richard Purdie <rpurdie@openedhand.com>
+
+---
+ compr.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++---
+ compr.h | 1 +
+ 2 files changed, 50 insertions(+), 3 deletions(-)
+
+Index: git/compr.c
+===================================================================
+--- git.orig/compr.c 2007-03-01 11:58:01.000000000 +0000
++++ git/compr.c 2007-03-01 11:58:09.000000000 +0000
+@@ -16,6 +16,8 @@
+ #include <stdlib.h>
+ #include <linux/jffs2.h>
+
++#define FAVOUR_LZO_PERCENT 80
++
+ extern int page_size;
+
+ /* LIST IMPLEMENTATION (from linux/list.h) */
+@@ -166,6 +168,33 @@ static void jffs2_decompression_test(str
+ }
+ }
+
++/*
++ * Return 1 to use this compression
++ */
++static int jffs2_is_best_compression(struct jffs2_compressor *this,
++ struct jffs2_compressor *best, uint32_t size, uint32_t bestsize)
++{
++ switch (jffs2_compression_mode) {
++ case JFFS2_COMPR_MODE_SIZE:
++ if (bestsize > size)
++ return 1;
++ return 0;
++ case JFFS2_COMPR_MODE_FAVOURLZO:
++ if ((this->compr == JFFS2_COMPR_LZO) && (bestsize > size))
++ return 1;
++ if ((best->compr != JFFS2_COMPR_LZO) && (bestsize > size))
++ return 1;
++ if ((this->compr == JFFS2_COMPR_LZO) && (bestsize > (size * FAVOUR_LZO_PERCENT / 100)))
++ return 1;
++ if ((bestsize * FAVOUR_LZO_PERCENT / 100) > size)
++ return 1;
++
++ return 0;
++ }
++ /* Shouldn't happen */
++ return 0;
++}
++
+ /* jffs2_compress:
+ * @data: Pointer to uncompressed data
+ * @cdata: Pointer to returned pointer to buffer for compressed data
+@@ -231,21 +260,29 @@ uint16_t jffs2_compress( unsigned char *
+ }
+ if (ret == JFFS2_COMPR_NONE) free(output_buf);
+ break;
++ case JFFS2_COMPR_MODE_FAVOURLZO:
+ case JFFS2_COMPR_MODE_SIZE:
+ orig_slen = *datalen;
+ orig_dlen = *cdatalen;
+ list_for_each_entry(this, &jffs2_compressor_list, list) {
++ uint32_t needed_buf_size;
++
++ if (jffs2_compression_mode == JFFS2_COMPR_MODE_FAVOURLZO)
++ needed_buf_size = orig_slen+jffs2_compression_check;
++ else
++ needed_buf_size = orig_dlen+jffs2_compression_check;
++
+ /* Skip decompress-only backwards-compatibility and disabled modules */
+ if ((!this->compress)||(this->disabled))
+ continue;
+ /* Allocating memory for output buffer if necessary */
+- if ((this->compr_buf_size<orig_dlen+jffs2_compression_check)&&(this->compr_buf)) {
++ if ((this->compr_buf_size < needed_buf_size) && (this->compr_buf)) {
+ free(this->compr_buf);
+ this->compr_buf_size=0;
+ this->compr_buf=NULL;
+ }
+ if (!this->compr_buf) {
+- tmp_buf = malloc(orig_dlen+jffs2_compression_check);
++ tmp_buf = malloc(needed_buf_size);
+ if (!tmp_buf) {
+ fprintf(stderr,"mkfs.jffs2: No memory for compressor allocation. (%d bytes)\n",orig_dlen);
+ continue;
+@@ -265,7 +302,8 @@ uint16_t jffs2_compress( unsigned char *
+ if (!compr_ret) {
+ if (jffs2_compression_check)
+ jffs2_decompression_test(this, data_in, this->compr_buf, *cdatalen, *datalen, this->compr_buf_size);
+- if ((!best_dlen)||(best_dlen>*cdatalen)) {
++ if (((!best_dlen) || jffs2_is_best_compression(this, best, *cdatalen, best_dlen))
++ && (*cdatalen < *datalen)) {
+ best_dlen = *cdatalen;
+ best_slen = *datalen;
+ best = this;
+@@ -377,6 +415,9 @@ char *jffs2_stats(void)
+ case JFFS2_COMPR_MODE_SIZE:
+ act_buf += sprintf(act_buf,"size");
+ break;
++ case JFFS2_COMPR_MODE_FAVOURLZO:
++ act_buf += sprintf(act_buf,"favourlzo");
++ break;
+ default:
+ act_buf += sprintf(act_buf,"unkown");
+ break;
+@@ -413,6 +454,11 @@ int jffs2_set_compression_mode_name(cons
+ jffs2_compression_mode = JFFS2_COMPR_MODE_SIZE;
+ return 0;
+ }
++ if (!strcmp("favourlzo", name)) {
++ jffs2_compression_mode = JFFS2_COMPR_MODE_FAVOURLZO;
++ return 0;
++ }
++
+ return 1;
+ }
+
+Index: git/compr.h
+===================================================================
+--- git.orig/compr.h 2007-03-01 11:58:01.000000000 +0000
++++ git/compr.h 2007-03-01 11:58:09.000000000 +0000
+@@ -32,6 +32,7 @@
+ #define JFFS2_COMPR_MODE_NONE 0
+ #define JFFS2_COMPR_MODE_PRIORITY 1
+ #define JFFS2_COMPR_MODE_SIZE 2
++#define JFFS2_COMPR_MODE_FAVOURLZO 3
+
+ #define kmalloc(a,b) malloc(a)
+ #define kfree(a) free(a)
diff --git a/packages/mtd/mtd-utils/fix-ignoreerrors-git.patch b/packages/mtd/mtd-utils/fix-ignoreerrors-git.patch
new file mode 100644
index 0000000000..bec60a18c1
--- /dev/null
+++ b/packages/mtd/mtd-utils/fix-ignoreerrors-git.patch
@@ -0,0 +1,26 @@
+---
+ nanddump.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: git/nanddump.c
+===================================================================
+--- git.orig/nanddump.c 2007-01-23 15:42:34.000000000 +0000
++++ git/nanddump.c 2007-01-23 15:47:57.000000000 +0000
+@@ -281,7 +281,7 @@ int main(int argc, char **argv)
+ }
+ }
+
+- if (badblock) {
++ if (badblock && !ignoreerrors) {
+ if (omitbad)
+ continue;
+ memset (readbuf, 0xff, bs);
+@@ -335,7 +335,7 @@ int main(int argc, char **argv)
+ if (omitoob)
+ continue;
+
+- if (badblock) {
++ if (badblock && !ignoreerrors) {
+ memset (readbuf, 0xff, meminfo.oobsize);
+ } else {
+ /* Read OOB data and exit on failure */
diff --git a/packages/mtd/mtd-utils/more-verbosity.patch b/packages/mtd/mtd-utils/more-verbosity.patch
deleted file mode 100644
index cdc842a8f9..0000000000
--- a/packages/mtd/mtd-utils/more-verbosity.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- mtd/util/mkfs.jffs2.c~more-verbosity.patch
-+++ mtd/util/mkfs.jffs2.c
-@@ -374,6 +374,9 @@
- struct filesystem_entry *entry;
- struct ignorepath_entry* element = ignorepath;
-
-+ if (verbose) {
-+ printf( "mkfs.jffs2: scanning '%s'...\n", targetpath );
-+ }
-
- if (lstat(hostpath, &sb)) {
- perror_msg_and_die("%s", hostpath);
diff --git a/packages/mtd/mtd-utils/target-endian.patch b/packages/mtd/mtd-utils/target-endian.patch
deleted file mode 100644
index 567730ce31..0000000000
--- a/packages/mtd/mtd-utils/target-endian.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- mtd/util/flash_eraseall.c 2004-09-12 00:00:13.000000000 +0200
-+++ mtd-new/util/flash_eraseall.c 2005-08-16 11:36:46.262783496 +0200
-@@ -54,7 +54,7 @@
- static void display_help (void);
- static void display_version (void);
- static struct jffs2_unknown_node cleanmarker;
--static int target_endian = __BYTE_ORDER;
-+int target_endian = __BYTE_ORDER;
-
- int main (int argc, char *argv[])
- {
diff --git a/packages/mtd/mtd-utils_0.0.0+cvs20041113.bb b/packages/mtd/mtd-utils_0.0.0+cvs20041113.bb
deleted file mode 100644
index 3cc1878431..0000000000
--- a/packages/mtd/mtd-utils_0.0.0+cvs20041113.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-DESCRIPTION = "Tools for managing memory technology devices."
-SECTION = "base"
-DEPENDS = "zlib"
-HOMEPAGE = "http://www.linux-mtd.infradead.org/"
-LICENSE = "GPLv2"
-PR = "r2"
-SRCDATE = "20041113"
-
-SRC_URI = "cvs://anoncvs:anoncvs@cvs.infradead.org/home/cvs;module=mtd \
- file://add-exclusion-to-mkfs-jffs2-20041113.patch;patch=1" \
- file://target-endian.patch;patch=1"
-
-S = "${WORKDIR}/mtd"
-
-
-CFLAGS_prepend = "-I${S}/include "
-
-do_compile () {
- oe_runmake -C util
-}
-
-do_stage () {
- install -d ${STAGING_INCDIR}/mtd
- for f in ${S}/include/mtd/*.h; do
- install -m 0644 $f ${STAGING_INCDIR}/mtd/
- done
-}
-
-do_install () {
- install -d ${D}${bindir}
- for binary in ftl_format flash_erase flash_eraseall nanddump doc_loadbios \
- mkfs.jffs ftl_check mkfs.jffs2 flash_lock flash_unlock flash_info mtd_debug \
- flashcp nandwrite jffs2dump; do
- install -m 0755 util/$binary ${D}${bindir}
- done
-}
diff --git a/packages/mtd/mtd-utils_0.0.0+cvs20050801.bb b/packages/mtd/mtd-utils_0.0.0+cvs20050801.bb
deleted file mode 100644
index d66ca4bb7c..0000000000
--- a/packages/mtd/mtd-utils_0.0.0+cvs20050801.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-DESCRIPTION = "Tools for managing memory technology devices."
-SECTION = "base"
-DEPENDS = "zlib"
-HOMEPAGE = "http://www.linux-mtd.infradead.org/"
-LICENSE = "GPLv2"
-PR = "r0"
-SRCDATE = "20050801"
-
-SRC_URI = "cvs://anoncvs:anoncvs@cvs.infradead.org/home/cvs;module=mtd \
- file://add-exclusion-to-mkfs-jffs2.patch;patch=1 \
- file://more-verbosity.patch;patch=1 \
- file://fix-ignoreerrors.patch;patch=1"
-S = "${WORKDIR}/mtd/"
-
-CFLAGS_prepend = "-I${S}/include "
-
-do_compile () {
- oe_runmake -C util ${mtd_utils}
-}
-
-do_stage () {
- install -d ${STAGING_INCDIR}/mtd
- for f in ${S}/include/mtd/*.h; do
- install -m 0644 $f ${STAGING_INCDIR}/mtd/
- done
-}
-
-mtd_utils = "ftl_format flash_erase flash_eraseall nanddump doc_loadbios \
- mkfs.jffs ftl_check mkfs.jffs2 flash_lock flash_unlock flash_info mtd_debug \
- flashcp nandwrite jffs2dump"
-
-do_install () {
- install -d ${D}${bindir}
- for binary in ${mtd_utils}; do
- install -m 0755 util/$binary ${D}${bindir}
- done
-}
diff --git a/packages/mtd/mtd-utils_0.0.0+cvs20060223.bb b/packages/mtd/mtd-utils_0.0.0+cvs20060223.bb
index 7ace1c194c..96199f1602 100644
--- a/packages/mtd/mtd-utils_0.0.0+cvs20060223.bb
+++ b/packages/mtd/mtd-utils_0.0.0+cvs20060223.bb
@@ -6,7 +6,7 @@ LICENSE = "GPLv2"
PR = "r0"
SRCDATE = "20060223"
-SRC_URI = "cvs://anoncvs:anoncvs@cvs.infradead.org/home/cvs;module=mtd \
+SRC_URI = "cvs://anoncvs:anoncvs@cvs.infradead.org/home/cvs;module=mtd \
file://add-exclusion-to-mkfs-jffs2-20060131.patch;patch=1 \
file://fix-ignoreerrors-20060131.patch;patch=1"
S = "${WORKDIR}/mtd/"
@@ -22,6 +22,9 @@ do_stage () {
for f in ${S}/include/mtd/*.h; do
install -m 0644 $f ${STAGING_INCDIR}/mtd/
done
+ for binary in ${mtd_utils}; do
+ install -m 0755 util/$binary ${STAGING_BINDIR}
+ done
}
mtd_utils = "ftl_format flash_erase flash_eraseall nanddump doc_loadbios \
diff --git a/packages/mtd/mtd-utils_1.0.0+git.bb b/packages/mtd/mtd-utils_1.0.0+git.bb
new file mode 100644
index 0000000000..62a2c0630b
--- /dev/null
+++ b/packages/mtd/mtd-utils_1.0.0+git.bb
@@ -0,0 +1,37 @@
+DESCRIPTION = "Tools for managing memory technology devices."
+SECTION = "base"
+DEPENDS = "zlib lzo"
+HOMEPAGE = "http://www.linux-mtd.infradead.org/"
+LICENSE = "GPLv2"
+PR = "r2"
+
+SRC_URI = "git://git.infradead.org/mtd-utils.git;protocol=git;tag=master \
+ file://add_lzo.patch;patch=1 \
+ file://favour_lzo.patch;patch=1 \
+ file://add-exclusion-to-mkfs-jffs2-git.patch;patch=1 \
+ file://fix-ignoreerrors-git.patch;patch=1"
+
+S = "${WORKDIR}/git/"
+
+EXTRA_OEMAKE = "'CC=${CC}' 'CFLAGS=${CFLAGS} -I${S}/include -DWITHOUT_XATTR'"
+
+do_stage () {
+ install -d ${STAGING_INCDIR}/mtd
+ for f in ${S}/include/mtd/*.h; do
+ install -m 0644 $f ${STAGING_INCDIR}/mtd/
+ done
+ for binary in ${mtd_utils}; do
+ install -m 0755 $binary ${STAGING_BINDIR}
+ done
+}
+
+mtd_utils = "ftl_format flash_erase flash_eraseall nanddump doc_loadbios \
+ mkfs.jffs ftl_check mkfs.jffs2 flash_lock flash_unlock flash_info mtd_debug \
+ flashcp nandwrite jffs2dump sumtool"
+
+do_install () {
+ install -d ${D}${bindir}
+ for binary in ${mtd_utils}; do
+ install -m 0755 $binary ${D}${bindir}
+ done
+}
diff --git a/packages/mtd/mtd-utils_1.0.0.bb b/packages/mtd/mtd-utils_1.0.0.bb
index aae722b987..0ebb47fb22 100644
--- a/packages/mtd/mtd-utils_1.0.0.bb
+++ b/packages/mtd/mtd-utils_1.0.0.bb
@@ -10,6 +10,7 @@ PR = "r0"
DEFAULT_PREFERENCE = "-1"
SRC_URI = "ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-1.0.0.tar.gz"
+S = "${WORKDIR}/mtd-utils-${PV}"
CFLAGS_prepend = "-I${WORKDIR}/mtd-utils-${PV}/include "
diff --git a/packages/mtpaint/.mtn2git_empty b/packages/mtpaint/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mtpaint/.mtn2git_empty
diff --git a/packages/mtpaint/mtpaint_3.02.bb b/packages/mtpaint/mtpaint_3.02.bb
new file mode 100644
index 0000000000..5add7e437f
--- /dev/null
+++ b/packages/mtpaint/mtpaint_3.02.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "mtPaint is a simple painting program"
+SECTION = "x11/graphics"
+DEPENDS = "gtk+ jpeg"
+HOMEPAGE = "http://mtpaint.sf.net"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/mtpaint/mtpaint-3.02.tar.bz2"
+
+do_configure() {
+ ./configure gtk2
+ cat > _conf.txt <<EOF
+CC = ${CC}
+MT_VERSION=mtPaint 3.02
+MT_DATE=2006-10-14
+LDFLAG = ${LDFLAGS} `pkg-config --libs gtk+-2.0` -ljpeg
+CFLAG = ${CFLAGS} `pkg-config --cflags gtk+-2.0` -DVERSION="\"mtPaint 3.02"\" -DU_JPEG
+subdirs = src
+BIN_INSTALL="/usr/local/bin"
+EOF
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 src/mtpaint ${D}${bindir}
+}
+
diff --git a/packages/musicpd/glurp_0.11.3.bb b/packages/musicpd/glurp_0.11.3.bb
new file mode 100644
index 0000000000..59cea4f8c9
--- /dev/null
+++ b/packages/musicpd/glurp_0.11.3.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "glurp - frontend for mpd"
+HOMEPAGE = "http://www.musicpd.org/glurp.shtml"
+SECTION = "x11/multimedia"
+LICENSE = "GPLv2"
+DEPENDS = "gtk+ libglade"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/glurp/glurp-${PV}.tar.gz"
+
+LDFLAGS += "-export-dynamic"
+
+inherit autotools
diff --git a/packages/musicpd/glurp_0.11.6.bb b/packages/musicpd/glurp_0.11.6.bb
deleted file mode 100644
index 4d9449c904..0000000000
--- a/packages/musicpd/glurp_0.11.6.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-DESCRIPTION = "glurp - frontend for mpd"
-HOMEPAGE = "http://www.musicpd.org/glurp.shtml"
-LICENSE = "GPLv2"
-SECTION = "gnome/multimedia"
-DEPENDS = "gtk+ libglade"
-PR = "r0"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/glurp/glurp-${PV}.tar.gz"
-
-LDFLAGS += "-export-dynamic"
-
-inherit autotools
diff --git a/packages/musicpd/gmpc_0.11.2.bb b/packages/musicpd/gmpc_0.11.2.bb
index 9468a07249..6ed2ada569 100644
--- a/packages/musicpd/gmpc_0.11.2.bb
+++ b/packages/musicpd/gmpc_0.11.2.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "GTK+ Frontend for mpd"
HOMEPAGE = "http://www.musicpd.org/gmpc.shtml"
+SECTION = "x11/multimedia"
LICENSE = "GPLv2"
-SECTION = "gnome/multimedia"
DEPENDS = "gtk+ libglade gnome-vfs"
PR = "r1"
diff --git a/packages/musicpd/gmpc_0.13.0.bb b/packages/musicpd/gmpc_0.13.0.bb
new file mode 100644
index 0000000000..f8c99efb36
--- /dev/null
+++ b/packages/musicpd/gmpc_0.13.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "GTK+ Frontend for mpd"
+HOMEPAGE = "http://www.musicpd.org/gmpc.shtml"
+SECTION = "x11/multimedia"
+LICENSE = "GPLv2"
+DEPENDS = "libmpd gtk+ libglade gnome-vfs"
+PR = "r0"
+
+SRC_URI = "http://download.qballcow.nl/programs/gmpc-0.13/gmpc-${PV}.tar.gz"
+
+LDFLAGS += "-export-dynamic"
+
+inherit autotools
diff --git a/packages/musicpd/gmpc_svn.bb b/packages/musicpd/gmpc_svn.bb
new file mode 100644
index 0000000000..72fd3af1b6
--- /dev/null
+++ b/packages/musicpd/gmpc_svn.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "GTK+ Frontend for mpd"
+HOMEPAGE = "http://www.musicpd.org/gmpc.shtml"
+SECTION = "x11/multimedia"
+LICENSE = "GPLv2"
+DEPENDS = "libmpd gtk+ libglade gnome-vfs gob2 curl"
+SRCDATE = "20070120"
+PV = "0.13.0+svn${SRCDATE}"
+
+SRC_URI = "svn://svn.musicpd.org/gmpc;module=trunk;proto=https"
+S = "${WORKDIR}/trunk"
+
+LDFLAGS += "-export-dynamic"
+
+inherit autotools
diff --git a/packages/musicpd/libmpd_svn.bb b/packages/musicpd/libmpd_svn.bb
new file mode 100644
index 0000000000..4c78eb15f4
--- /dev/null
+++ b/packages/musicpd/libmpd_svn.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Music Player Daemon (mpd) library"
+HOMEPAGE = "http://www.musicpd.org"
+SECTION = "libs/multimedia"
+LICENSE = "GPLv2"
+SRCDATE = "20070120"
+PV = "0.0.0+svn${SRCDATE}"
+
+SRC_URI = "svn://svn.musicpd.org/libmpd;module=trunk;proto=https"
+S = "${WORKDIR}/trunk"
+
+inherit autotools pkgconfig
+
+do_stage_append() {
+ oe_libinstall -C src libmpd ${STAGING_LIBDIR}
+ install -d ${STAGING_INCDIR}/libmpd
+ cd src
+ for i in *.h; do
+ install -m 0644 $i ${STAGING_INCDIR}/libmpd/$i
+ done
+ cd ..
+}
diff --git a/packages/musicpd/mpc_0.11.2.bb b/packages/musicpd/mpc_0.11.2.bb
index 256a2e5ea2..8d3eaa183a 100644
--- a/packages/musicpd/mpc_0.11.2.bb
+++ b/packages/musicpd/mpc_0.11.2.bb
@@ -1,9 +1,11 @@
DESCRIPTION = "Command-line (scriptable) Music Player Daemon (mpd) Client"
HOMEPAGE = "http://www.musicpd.org/mpc.shtml"
-LICENSE = "GPLv2"
SECTION = "console/multimedia"
-PR = "r0"
+LICENSE = "GPLv2"
+PR = "r1"
SRC_URI = "http://mercury.chem.pitt.edu/~shank/mpc-${PV}.tar.gz"
+EXTRA_OECONF = "--with-iconv-libraries=${STAGING_LIBDIR} \
+ --with-iconv-includes=${STAGING_INCDIR}"
inherit autotools
diff --git a/packages/musicpd/mpc_0.12.0.bb b/packages/musicpd/mpc_0.12.0.bb
new file mode 100644
index 0000000000..ccd6926fcd
--- /dev/null
+++ b/packages/musicpd/mpc_0.12.0.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "Command-line (scriptable) Music Player Daemon (mpd) Client"
+HOMEPAGE = "http://www.musicpd.org/mpc.shtml"
+SECTION = "console/multimedia"
+LICENSE = "GPLv2"
+
+SRC_URI = "http://www.musicpd.org/uploads/files/mpc-${PV}.tar.bz2"
+EXTRA_OECONF = "--with-iconv-libraries=${STAGING_LIBDIR} \
+ --with-iconv-includes=${STAGING_INCDIR}"
+
+inherit autotools
diff --git a/packages/musicpd/mpd-alsa_0.11.5.bb b/packages/musicpd/mpd-alsa_0.11.5.bb
index 1ba1fabd16..939ecec836 100644
--- a/packages/musicpd/mpd-alsa_0.11.5.bb
+++ b/packages/musicpd/mpd-alsa_0.11.5.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Music Player Daemon (mpd). This version is configured for alsa support"
HOMEPAGE = "http://www.musicpd.org"
-LICENSE = "GPLv2"
SECTION = "console/multimedia"
+LICENSE = "GPLv2"
DEPENDS = "libvorbis libogg libid3tag libao-alsa zlib libmikmod libmad flac audiofile virtual/libiconv"
RDEPENDS = "libao-alsa"
PR = "r3"
diff --git a/packages/musicpd/mpd/fix-mod-support.patch b/packages/musicpd/mpd/fix-mod-support.patch
new file mode 100644
index 0000000000..f9010abd9b
--- /dev/null
+++ b/packages/musicpd/mpd/fix-mod-support.patch
@@ -0,0 +1,23 @@
+Index: mpd/src/inputPlugins/mod_plugin.c
+===================================================================
+--- mpd.orig/src/inputPlugins/mod_plugin.c
++++ mpd/src/inputPlugins/mod_plugin.c
+@@ -62,10 +62,16 @@ static MDRIVER drv_mpd = {
+ NULL,
+ "MPD",
+ "MPD Output Driver v0.1",
++
+ 0,
+ 255,
+- "mpd",
+- NULL,
++#if (LIBMIKMOD_VERSION > 0x030106)
++ "mpd", /* alias */
++ NULL, /* cmd help line*/
++#endif
++#if (LIBMIKMOD_VERSION >= 0x030200)
++ NULL, /*Command Line */
++#endif
+ mod_mpd_IsThere,
+ VC_SampleLoad,
+ VC_SampleUnload,
diff --git a/packages/musicpd/mpd_0.11.2.bb b/packages/musicpd/mpd_0.11.2.bb
index 493f677a50..9d3c5f90b0 100644
--- a/packages/musicpd/mpd_0.11.2.bb
+++ b/packages/musicpd/mpd_0.11.2.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Music Player Daemon (mpd)"
HOMEPAGE = "http://www.musicpd.org"
-LICENSE = "GPLv2"
SECTION = "console/multimedia"
+LICENSE = "GPLv2"
DEPENDS = "libvorbis libogg libid3tag libao zlib libmikmod libmad flac audiofile"
PR = "r2"
diff --git a/packages/musicpd/mpd_0.11.5.bb b/packages/musicpd/mpd_0.11.5.bb
index d501d0e478..7a1d17ef5d 100644
--- a/packages/musicpd/mpd_0.11.5.bb
+++ b/packages/musicpd/mpd_0.11.5.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Music Player Daemon (mpd)"
HOMEPAGE = "http://www.musicpd.org"
-LICENSE = "GPLv2"
SECTION = "console/multimedia"
+LICENSE = "GPLv2"
DEPENDS = "libvorbis libogg libid3tag libao zlib libmikmod libmad flac audiofile virtual/libiconv faad2"
PR = "r8"
diff --git a/packages/musicpd/mpd_svn.bb b/packages/musicpd/mpd_svn.bb
new file mode 100644
index 0000000000..04ddf8fdc3
--- /dev/null
+++ b/packages/musicpd/mpd_svn.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "Music Player Daemon (mpd)"
+HOMEPAGE = "http://www.musicpd.org"
+SECTION = "console/multimedia"
+LICENSE = "GPLv2"
+DEPENDS = "libvorbis libogg libid3tag libao zlib libmikmod libmad flac audiofile virtual/libiconv faad2 pulseaudio"
+SRCDATE = "20070120"
+PV = "0.12.1+svn${SRCDATE}"
+PR = "r2"
+
+SRC_URI = "svn://svn.musicpd.org/mpd;module=trunk;proto=https \
+ file://fix-mod-support.patch;patch=1;maxdate=20070302"
+# file://save-volume-state.patch;patch=1"
+S = "${WORKDIR}/trunk"
+
+inherit autotools
+
+# Setting --enable-mpd-{mad,id3tag} causes local caches of the libraries to
+# be built, instead we use the OE built versions which should be installed
+# in staging - remove the --with and replace with --enable to use the local
+# versions.
+
+EXTRA_OECONF = "--enable-ogg \
+ --with-id3tag-libraries=${STAGING_LIBDIR} \
+ --with-id3tag-includes=${STAGING_INCDIR} \
+ --with-mad-libraries=${STAGING_LIBDIR} \
+ --with-mad-includes=${STAGING_INCDIR} \
+ --with-faad-libraries=${STAGING_LIBDIR} \
+ --with-faad-includes=${STAGING_INCDIR} \
+ --disable-jack \
+ --enable-pulse \
+ --enable-mod \
+ --disable-oggflac"
+
+do_compile_prepend() {
+ find -name Makefile | xargs sed -i 's~-I/usr/include~-I${STAGING_INCDIR}~g'
+}
diff --git a/packages/musicpd/ncmpc_0.11.1.bb b/packages/musicpd/ncmpc_0.11.1.bb
index c687f9ea02..32195ccb9d 100644
--- a/packages/musicpd/ncmpc_0.11.1.bb
+++ b/packages/musicpd/ncmpc_0.11.1.bb
@@ -1,9 +1,8 @@
DESCRIPTION = "Ncurses based Music Player Daemon (mpd) Client"
HOMEPAGE = "http://www.musicpd.org/ncmpc.shtml"
-LICENSE = "GPLv2"
SECTION = "console/multimedia"
+LICENSE = "GPLv2"
DEPENDS = "ncurses glib-2.0"
-PR = "r0"
SRC_URI = "http://mercury.chem.pitt.edu/~shank/ncmpc-${PV}.tar.gz"
diff --git a/packages/musicpd/py-libmpdclient_0.10.0.bb b/packages/musicpd/py-libmpdclient_0.10.0.bb
new file mode 100644
index 0000000000..92423f0c88
--- /dev/null
+++ b/packages/musicpd/py-libmpdclient_0.10.0.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "Python library for Music Player Daemon (mpd)"
+HOMEPAGE = "http://www.musicpd.org/py-libmpdclient.shtml"
+SECTION = "libs/multimedia"
+LICENSE = "GPLv2"
+DEPENDS = "libmpd python"
+
+SRC_URI = "http://mercury.chem.pitt.edu/~shank/py-libmpdclient-${PV}.tar.gz"
+
+inherit distutils
diff --git a/packages/mutt/mutt-1.5.15/.mtn2git_empty b/packages/mutt/mutt-1.5.15/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mutt/mutt-1.5.15/.mtn2git_empty
diff --git a/packages/mutt/mutt-1.5.15/makedoc.patch b/packages/mutt/mutt-1.5.15/makedoc.patch
new file mode 100644
index 0000000000..275c325769
--- /dev/null
+++ b/packages/mutt/mutt-1.5.15/makedoc.patch
@@ -0,0 +1,26 @@
+Index: mutt-1.5.15/makedoc.c
+===================================================================
+--- mutt-1.5.15.orig/makedoc.c 2007-04-01 22:58:56.000000000 +0100
++++ mutt-1.5.15/makedoc.c 2007-04-19 09:33:17.000000000 +0100
+@@ -49,7 +49,7 @@
+ #ifndef HAVE_STRERROR
+ #ifndef STDC_HEADERS
+ extern int sys_nerr;
+-extern char *sys_errlist[];
++extern __const char *__const sys_errlist[];
+ #endif
+
+ #define strerror(x) ((x) > 0 && (x) < sys_nerr) ? sys_errlist[(x)] : 0
+Index: mutt-1.5.15/Makefile.am
+===================================================================
+--- mutt-1.5.15.orig/Makefile.am 2007-04-19 09:33:30.000000000 +0100
++++ mutt-1.5.15/Makefile.am 2007-04-19 09:33:54.000000000 +0100
+@@ -49,6 +49,8 @@
+ # @rm -rf makedoc
+ # $(HOST_CC) $(AM_CFLAGS) $(LDFLAGS) $(makedoc_LDFLAGS) $(makedoc_OBJECTS) $(makedoc_LDADD) -o makedoc
+
++makedoc : $(makedoc_SOURCES)
++
+ DEFS=-DPKGDATADIR=\"$(pkgdatadir)\" -DSYSCONFDIR=\"$(sysconfdir)\" \
+ -DBINDIR=\"$(bindir)\" -DMUTTLOCALEDIR=\"$(datadir)/locale\" \
+ -DHAVE_CONFIG_H=1
diff --git a/packages/mutt/mutt-1.5.15/patch-1.5.15.sidebar.20070408.txt b/packages/mutt/mutt-1.5.15/patch-1.5.15.sidebar.20070408.txt
new file mode 100644
index 0000000000..a2f7810ad8
--- /dev/null
+++ b/packages/mutt/mutt-1.5.15/patch-1.5.15.sidebar.20070408.txt
@@ -0,0 +1,1347 @@
+Index: mutt-1.5.15/buffy.c
+===================================================================
+--- mutt-1.5.15.orig/buffy.c 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/buffy.c 2007-04-18 09:28:14.000000000 +0100
+@@ -259,7 +259,7 @@
+ char path[_POSIX_PATH_MAX];
+ struct stat contex_sb;
+ time_t t;
+-
++ CONTEXT *ctx;
+ #ifdef USE_IMAP
+ /* update postponed count as well, on force */
+ if (force)
+@@ -297,6 +297,8 @@
+
+ for (tmp = Incoming; tmp; tmp = tmp->next)
+ {
++ if ( tmp->new == 1 )
++ tmp->has_new = 1;
+ #ifdef USE_IMAP
+ if (tmp->magic != M_IMAP)
+ #endif
+@@ -354,48 +356,108 @@
+ case M_MBOX:
+ case M_MMDF:
+
+- if (STAT_CHECK)
++ {
++ if (STAT_CHECK || tmp->msgcount == 0)
+ {
+- BuffyCount++;
+- tmp->new = 1;
++ BUFFY b = *tmp;
++ int msgcount = 0;
++ int msg_unread = 0;
++ /* parse the mailbox, to see how much mail there is */
++ ctx = mx_open_mailbox( tmp->path, M_READONLY | M_QUIET | M_NOSORT | M_PEEK, NULL);
++ if(ctx)
++ {
++ msgcount = ctx->msgcount;
++ msg_unread = ctx->unread;
++ mx_close_mailbox(ctx, 0);
++ }
++ *tmp = b;
++ tmp->msgcount = msgcount;
++ tmp->msg_unread = msg_unread;
++ if(STAT_CHECK) {
++ tmp->has_new = tmp->new = 1;
++ BuffyCount++;
++ }
+ }
+ else if (option(OPTCHECKMBOXSIZE))
+ {
+ /* some other program has deleted mail from the folder */
+ tmp->size = (long) sb.st_size;
+ }
+- if (tmp->newly_created &&
+- (sb.st_ctime != sb.st_mtime || sb.st_ctime != sb.st_atime))
+- tmp->newly_created = 0;
+-
+- break;
++ if (tmp->newly_created &&
++ (sb.st_ctime != sb.st_mtime || sb.st_ctime != sb.st_atime))
++ tmp->newly_created = 0;
++ }
++ break;
+
+ case M_MAILDIR:
+
++ /* count new message */
+ snprintf (path, sizeof (path), "%s/new", tmp->path);
+ if ((dirp = opendir (path)) == NULL)
+ {
+ tmp->magic = 0;
+ break;
+ }
++ tmp->msgcount = 0;
++ tmp->msg_unread = 0;
+ while ((de = readdir (dirp)) != NULL)
+ {
+ char *p;
+ if (*de->d_name != '.' &&
+ (!(p = strstr (de->d_name, ":2,")) || !strchr (p + 3, 'T')))
+ {
+- /* one new and undeleted message is enough */
+- BuffyCount++;
+- tmp->new = 1;
+- break;
++ tmp->has_new = tmp->new = 1;
++ tmp->msgcount++;
++ tmp->msg_unread++;
++ }
++ }
++ if(tmp->msg_unread)
++ BuffyCount++;
++
++ closedir (dirp);
++
++ /*
++ * count read messages (for folderlist (sidebar) we also need to count
++ * messages in cur so that we the total number of messages
++ */
++ snprintf (path, sizeof (path), "%s/cur", tmp->path);
++ if ((dirp = opendir (path)) == NULL)
++ {
++ tmp->magic = 0;
++ break;
++ }
++ while ((de = readdir (dirp)) != NULL)
++ {
++ char *p;
++ if (*de->d_name != '.' &&
++ (!(p = strstr (de->d_name, ":2,")) || !strchr (p + 3, 'T')))
++ {
++ tmp->msgcount++;
+ }
+ }
+ closedir (dirp);
+ break;
+
+ case M_MH:
+- if ((tmp->new = mh_buffy (tmp->path)) > 0)
+- BuffyCount++;
++ {
++ DIR *dp;
++ struct dirent *de;
++ if ((tmp->new = mh_buffy (tmp->path)) > 0)
++ BuffyCount++;
++
++ if ((dp = opendir (path)) == NULL)
++ break;
++ tmp->msgcount = 0;
++ while ((de = readdir (dp)))
++ {
++ if (mh_valid_message (de->d_name))
++ {
++ tmp->msgcount++;
++ tmp->has_new = tmp->new = 1;
++ }
++ }
++ closedir (dp);
++ }
+ break;
+ }
+ }
+Index: mutt-1.5.15/buffy.h
+===================================================================
+--- mutt-1.5.15.orig/buffy.h 2007-04-01 22:58:55.000000000 +0100
++++ mutt-1.5.15/buffy.h 2007-04-18 09:28:14.000000000 +0100
+@@ -25,7 +25,11 @@
+ char *path;
+ long size;
+ struct buffy_t *next;
++ struct buffy_t *prev;
+ short new; /* mailbox has new mail */
++ short has_new; /* set it new if new and not read */
++ int msgcount; /* total number of messages */
++ int msg_unread; /* number of unread messages */
+ short notified; /* user has been notified */
+ short magic; /* mailbox type */
+ short newly_created; /* mbox or mmdf just popped into existence */
+Index: mutt-1.5.15/color.c
+===================================================================
+--- mutt-1.5.15.orig/color.c 2007-04-01 22:58:55.000000000 +0100
++++ mutt-1.5.15/color.c 2007-04-18 09:28:14.000000000 +0100
+@@ -93,6 +93,7 @@
+ { "bold", MT_COLOR_BOLD },
+ { "underline", MT_COLOR_UNDERLINE },
+ { "index", MT_COLOR_INDEX },
++ { "sidebar_new", MT_COLOR_NEW },
+ { NULL, 0 }
+ };
+
+Index: mutt-1.5.15/compose.c
+===================================================================
+--- mutt-1.5.15.orig/compose.c 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/compose.c 2007-04-18 09:32:54.000000000 +0100
+@@ -80,7 +80,7 @@
+
+ #define HDR_XOFFSET 14
+ #define TITLE_FMT "%14s" /* Used for Prompts, which are ASCII */
+-#define W (COLS - HDR_XOFFSET)
++#define W (COLS - HDR_XOFFSET - SidebarWidth)
+
+ static char *Prompts[] =
+ {
+@@ -146,16 +146,16 @@
+ if ((WithCrypto & APPLICATION_PGP) && (WithCrypto & APPLICATION_SMIME))
+ {
+ if (!msg->security)
+- mvaddstr (HDR_CRYPT, 0, " Security: ");
++ mvaddstr (HDR_CRYPT, SidebarWidth, " Security: ");
+ else if (msg->security & APPLICATION_SMIME)
+- mvaddstr (HDR_CRYPT, 0, " S/MIME: ");
++ mvaddstr (HDR_CRYPT, SidebarWidth, " S/MIME: ");
+ else if (msg->security & APPLICATION_PGP)
+- mvaddstr (HDR_CRYPT, 0, " PGP: ");
++ mvaddstr (HDR_CRYPT, SidebarWidth, " PGP: ");
+ }
+ else if ((WithCrypto & APPLICATION_SMIME))
+- mvaddstr (HDR_CRYPT, 0, " S/MIME: ");
++ mvaddstr (HDR_CRYPT, SidebarWidth, " S/MIME: ");
+ else if ((WithCrypto & APPLICATION_PGP))
+- mvaddstr (HDR_CRYPT, 0, " PGP: ");
++ mvaddstr (HDR_CRYPT, SidebarWidth, " PGP: ");
+ else
+ return;
+
+@@ -179,7 +179,7 @@
+ }
+ clrtoeol ();
+
+- move (HDR_CRYPTINFO, 0);
++ move (HDR_CRYPTINFO, SidebarWidth);
+ clrtoeol ();
+ if ((WithCrypto & APPLICATION_PGP)
+ && msg->security & APPLICATION_PGP && msg->security & SIGN)
+@@ -195,7 +195,7 @@
+ && (msg->security & ENCRYPT)
+ && SmimeCryptAlg
+ && *SmimeCryptAlg) {
+- mvprintw (HDR_CRYPTINFO, 40, "%s%s", _("Encrypt with: "),
++ mvprintw (HDR_CRYPTINFO, SidebarWidth + 40, "%s%s", _("Encrypt with: "),
+ NONULL(SmimeCryptAlg));
+ off = 20;
+ }
+@@ -209,7 +209,7 @@
+ int c;
+ char *t;
+
+- mvaddstr (HDR_MIX, 0, " Mix: ");
++ mvaddstr (HDR_MIX, SidebarWidth, " Mix: ");
+
+ if (!chain)
+ {
+@@ -224,7 +224,7 @@
+ if (t && t[0] == '0' && t[1] == '\0')
+ t = "<random>";
+
+- if (c + mutt_strlen (t) + 2 >= COLS)
++ if (c + mutt_strlen (t) + 2 >= COLS - SidebarWidth)
+ break;
+
+ addstr (NONULL(t));
+@@ -276,7 +276,7 @@
+
+ buf[0] = 0;
+ rfc822_write_address (buf, sizeof (buf), addr, 1);
+- mvprintw (line, 0, TITLE_FMT, Prompts[line - 1]);
++ mvprintw (line, SidebarWidth, TITLE_FMT, Prompts[line - 1]);
+ mutt_paddstr (W, buf);
+ }
+
+@@ -294,21 +294,21 @@
+ }
+ else
+ {
+- mvprintw (HDR_TO, 0, TITLE_FMT , Prompts[HDR_NEWSGROUPS - 1]);
++ mvprintw (HDR_TO, SidebarWidth, TITLE_FMT , Prompts[HDR_NEWSGROUPS - 1]);
+ mutt_paddstr (W, NONULL (msg->env->newsgroups));
+- mvprintw (HDR_CC, 0, TITLE_FMT , Prompts[HDR_FOLLOWUPTO - 1]);
++ mvprintw (HDR_CC, SidebarWidth, TITLE_FMT , Prompts[HDR_FOLLOWUPTO - 1]);
+ mutt_paddstr (W, NONULL (msg->env->followup_to));
+ if (option (OPTXCOMMENTTO))
+ {
+- mvprintw (HDR_BCC, 0, TITLE_FMT , Prompts[HDR_XCOMMENTTO - 1]);
++ mvprintw (HDR_BCC, SidebarWidth, TITLE_FMT , Prompts[HDR_XCOMMENTTO - 1]);
+ mutt_paddstr (W, NONULL (msg->env->x_comment_to));
+ }
+ }
+ #endif
+- mvprintw (HDR_SUBJECT, 0, TITLE_FMT, Prompts[HDR_SUBJECT - 1]);
++ mvprintw (HDR_SUBJECT, SidebarWidth, TITLE_FMT, Prompts[HDR_SUBJECT - 1]);
+ mutt_paddstr (W, NONULL (msg->env->subject));
+ draw_envelope_addr (HDR_REPLYTO, msg->env->reply_to);
+- mvprintw (HDR_FCC, 0, TITLE_FMT, Prompts[HDR_FCC - 1]);
++ mvprintw (HDR_FCC, SidebarWidth, TITLE_FMT, Prompts[HDR_FCC - 1]);
+ mutt_paddstr (W, fcc);
+
+ if (WithCrypto)
+@@ -319,7 +319,7 @@
+ #endif
+
+ SETCOLOR (MT_COLOR_STATUS);
+- mvaddstr (HDR_ATTACH - 1, 0, _("-- Attachments"));
++ mvaddstr (HDR_ATTACH - 1, SidebarWidth, _("-- Attachments"));
+ BKGDSET (MT_COLOR_STATUS);
+ clrtoeol ();
+
+@@ -357,7 +357,7 @@
+ /* redraw the expanded list so the user can see the result */
+ buf[0] = 0;
+ rfc822_write_address (buf, sizeof (buf), *addr, 1);
+- move (line, HDR_XOFFSET);
++ move (line, HDR_XOFFSET+SidebarWidth);
+ mutt_paddstr (W, buf);
+
+ return 0;
+@@ -687,7 +687,7 @@
+ if (mutt_get_field ("Subject: ", buf, sizeof (buf), 0) == 0)
+ {
+ mutt_str_replace (&msg->env->subject, buf);
+- move (HDR_SUBJECT, HDR_XOFFSET);
++ move (HDR_SUBJECT, HDR_XOFFSET + SidebarWidth);
+ clrtoeol ();
+ if (msg->env->subject)
+ mutt_paddstr (W, msg->env->subject);
+@@ -704,7 +704,7 @@
+ {
+ strfcpy (fcc, buf, _POSIX_PATH_MAX);
+ mutt_pretty_mailbox (fcc);
+- move (HDR_FCC, HDR_XOFFSET);
++ move (HDR_FCC, HDR_XOFFSET + SidebarWidth);
+ mutt_paddstr (W, fcc);
+ fccSet = 1;
+ }
+Index: mutt-1.5.15/curs_main.c
+===================================================================
+--- mutt-1.5.15.orig/curs_main.c 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/curs_main.c 2007-04-18 09:28:14.000000000 +0100
+@@ -30,6 +30,7 @@
+ #include "sort.h"
+ #include "buffy.h"
+ #include "mx.h"
++#include "sidebar.h"
+
+ #ifdef USE_POP
+ #include "pop.h"
+@@ -555,8 +556,13 @@
+ menu->redraw |= REDRAW_STATUS;
+ if (do_buffy_notify)
+ {
+- if (mutt_buffy_notify () && option (OPTBEEPNEW))
+- beep ();
++ if (mutt_buffy_notify ())
++ {
++ menu->redraw |= REDRAW_FULL;
++ if (option (OPTBEEPNEW))
++ beep ();
++ }
++
+ }
+ else
+ do_buffy_notify = 1;
+@@ -568,6 +574,7 @@
+ if (menu->redraw & REDRAW_FULL)
+ {
+ menu_redraw_full (menu);
++ draw_sidebar(menu->menu);
+ mutt_show_error ();
+ }
+
+@@ -590,10 +597,13 @@
+
+ if (menu->redraw & REDRAW_STATUS)
+ {
++ DrawFullLine = 1;
+ menu_status_line (buf, sizeof (buf), menu, NONULL (Status));
++ DrawFullLine = 0;
+ CLEARLINE (option (OPTSTATUSONTOP) ? 0 : LINES-2);
+ SETCOLOR (MT_COLOR_STATUS);
+ BKGDSET (MT_COLOR_STATUS);
++ set_buffystats(Context);
+ mutt_paddstr (COLS, buf);
+ SETCOLOR (MT_COLOR_NORMAL);
+ BKGDSET (MT_COLOR_NORMAL);
+@@ -607,7 +617,7 @@
+ menu->oldcurrent = -1;
+
+ if (option (OPTARROWCURSOR))
+- move (menu->current - menu->top + menu->offset, 2);
++ move (menu->current - menu->top + menu->offset, SidebarWidth + 2);
+ else if (option (OPTBRAILLEFRIENDLY))
+ move (menu->current - menu->top + menu->offset, 0);
+ else
+@@ -1214,6 +1224,7 @@
+ menu->redraw = REDRAW_FULL;
+ break;
+
++ case OP_SIDEBAR_OPEN:
+ case OP_MAIN_CHANGE_FOLDER:
+ case OP_MAIN_CHANGE_FOLDER_READONLY:
+ #ifdef USE_NNTP
+@@ -1254,7 +1265,11 @@
+ #endif
+ mutt_buffy (buf, sizeof (buf));
+
+- if (mutt_enter_fname (cp, buf, sizeof (buf), &menu->redraw, 1) == -1)
++ if ( op == OP_SIDEBAR_OPEN ) {
++ if(!CurBuffy)
++ break;
++ strncpy( buf, CurBuffy->path, sizeof(buf) );
++ } else if (mutt_enter_fname (cp, buf, sizeof (buf), &menu->redraw, 1) == -1)
+ {
+ if (menu->menu == MENU_PAGER)
+ {
+@@ -1279,6 +1294,7 @@
+ else
+ #endif
+ mutt_expand_path (buf, sizeof (buf));
++ set_curbuffy(buf);
+ if (mx_get_magic (buf) <= 0)
+ {
+ mutt_error (_("%s is not a mailbox."), buf);
+@@ -2424,6 +2440,12 @@
+ mutt_what_key();
+ break;
+
++ case OP_SIDEBAR_SCROLL_UP:
++ case OP_SIDEBAR_SCROLL_DOWN:
++ case OP_SIDEBAR_NEXT:
++ case OP_SIDEBAR_PREV:
++ scroll_sidebar(op, menu->menu);
++ break;
+ default:
+ if (menu->menu == MENU_MAIN)
+ km_error_key (MENU_MAIN);
+Index: mutt-1.5.15/flags.c
+===================================================================
+--- mutt-1.5.15.orig/flags.c 2007-04-01 22:58:55.000000000 +0100
++++ mutt-1.5.15/flags.c 2007-04-18 09:28:14.000000000 +0100
+@@ -22,8 +22,10 @@
+
+ #include "mutt.h"
+ #include "mutt_curses.h"
++#include "mutt_menu.h"
+ #include "sort.h"
+ #include "mx.h"
++#include "sidebar.h"
+
+ #ifdef USE_IMAP
+ #include "imap_private.h"
+@@ -251,6 +253,7 @@
+ */
+ if (h->searched && (changed != h->changed || deleted != ctx->deleted || tagged != ctx->tagged || flagged != ctx->flagged))
+ h->searched = 0;
++ draw_sidebar(0);
+ }
+
+ void mutt_tag_set_flag (int flag, int bf)
+Index: mutt-1.5.15/functions.h
+===================================================================
+--- mutt-1.5.15.orig/functions.h 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/functions.h 2007-04-18 09:28:14.000000000 +0100
+@@ -186,6 +186,11 @@
+ { "decrypt-save", OP_DECRYPT_SAVE, NULL },
+
+
++ { "sidebar-scroll-up", OP_SIDEBAR_SCROLL_UP, NULL },
++ { "sidebar-scroll-down", OP_SIDEBAR_SCROLL_DOWN, NULL },
++ { "sidebar-next", OP_SIDEBAR_NEXT, NULL },
++ { "sidebar-prev", OP_SIDEBAR_PREV, NULL },
++ { "sidebar-open", OP_SIDEBAR_OPEN, NULL },
+ { NULL, 0, NULL }
+ };
+
+@@ -293,6 +298,11 @@
+ { "decrypt-save", OP_DECRYPT_SAVE, NULL },
+
+
++ { "sidebar-scroll-up", OP_SIDEBAR_SCROLL_UP, NULL },
++ { "sidebar-scroll-down", OP_SIDEBAR_SCROLL_DOWN, NULL },
++ { "sidebar-next", OP_SIDEBAR_NEXT, NULL },
++ { "sidebar-prev", OP_SIDEBAR_PREV, NULL },
++ { "sidebar-open", OP_SIDEBAR_OPEN, NULL },
+ { NULL, 0, NULL }
+ };
+
+Index: mutt-1.5.15/globals.h
+===================================================================
+--- mutt-1.5.15.orig/globals.h 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/globals.h 2007-04-18 09:28:14.000000000 +0100
+@@ -126,6 +126,7 @@
+ WHERE char *SendCharset;
+ WHERE char *Sendmail;
+ WHERE char *Shell;
++WHERE char *SidebarDelim;
+ WHERE char *Signature;
+ WHERE char *SimpleSearch;
+ #if USE_SMTP
+@@ -222,6 +223,9 @@
+ WHERE short ScoreThresholdRead;
+ WHERE short ScoreThresholdFlag;
+
++WHERE struct buffy_t *CurBuffy INITVAL(0);
++WHERE short DrawFullLine INITVAL(0);
++WHERE short SidebarWidth;
+ #ifdef USE_IMAP
+ WHERE short ImapKeepalive;
+ #endif
+Index: mutt-1.5.15/init.h
+===================================================================
+--- mutt-1.5.15.orig/init.h 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/init.h 2007-04-18 09:28:14.000000000 +0100
+@@ -1614,6 +1614,22 @@
+ ** If ``no'', never attempt to verify cryptographic signatures.
+ ** (Crypto only)
+ */
++ {"sidebar_delim", DT_STR, R_BOTH, UL &SidebarDelim, "|"},
++ /*
++ ** .pp
++ ** This specifies the delimiter between the sidebar (if visible) and
++ ** other screens.
++ */
++ { "sidebar_visible", DT_BOOL, R_BOTH, OPTSIDEBAR, 0 },
++ /*
++ ** .pp
++ ** This specifies whether or not to show sidebar (left-side list of folders).
++ */
++ { "sidebar_width", DT_NUM, R_BOTH, UL &SidebarWidth, 0 },
++ /*
++ ** .pp
++ ** The width of the sidebar.
++ */
+ { "smime_is_default", DT_BOOL, R_NONE, OPTSMIMEISDEFAULT, 0},
+ /*
+ ** .pp
+Index: mutt-1.5.15/mailbox.h
+===================================================================
+--- mutt-1.5.15.orig/mailbox.h 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/mailbox.h 2007-04-18 09:28:14.000000000 +0100
+@@ -27,6 +27,7 @@
+ #define M_NEWFOLDER (1<<4) /* create a new folder - same as M_APPEND, but uses
+ * safe_fopen() for mbox-style folders.
+ */
++#define M_PEEK (1<<5) /* revert atime back after taking a look (if applicable) */
+
+ /* mx_open_new_message() */
+ #define M_ADD_FROM 1 /* add a From_ line */
+Index: mutt-1.5.15/Makefile.am
+===================================================================
+--- mutt-1.5.15.orig/Makefile.am 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/Makefile.am 2007-04-18 09:28:14.000000000 +0100
+@@ -29,7 +29,8 @@
+ score.c send.c sendlib.c signal.c sort.c \
+ status.c system.c thread.c charset.c history.c lib.c \
+ muttlib.c editmsg.c mbyte.c \
+- url.c ascii.c mutt_idna.c crypt-mod.c crypt-mod.h
++ url.c ascii.c mutt_idna.c crypt-mod.c crypt-mod.h \
++ sidebar.c
+
+ mutt_LDADD = @MUTT_LIB_OBJECTS@ @LIBOBJS@ $(LIBIMAP) $(MUTTLIBS) \
+ $(INTLLIBS) $(LIBICONV) $(GPGME_LIBS)
+Index: mutt-1.5.15/Makefile.in
+===================================================================
+--- mutt-1.5.15.orig/Makefile.in 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/Makefile.in 2007-04-18 09:28:14.000000000 +0100
+@@ -91,7 +91,8 @@
+ thread.$(OBJEXT) charset.$(OBJEXT) history.$(OBJEXT) \
+ lib.$(OBJEXT) muttlib.$(OBJEXT) editmsg.$(OBJEXT) \
+ mbyte.$(OBJEXT) url.$(OBJEXT) ascii.$(OBJEXT) \
+- mutt_idna.$(OBJEXT) crypt-mod.$(OBJEXT)
++ mutt_idna.$(OBJEXT) crypt-mod.$(OBJEXT) \
++ sidebar.$(OBJEXT)
+ mutt_OBJECTS = $(am_mutt_OBJECTS)
+ am__DEPENDENCIES_1 =
+ am_mutt_dotlock_OBJECTS = mutt_dotlock.$(OBJEXT)
+@@ -312,7 +313,8 @@
+ score.c send.c sendlib.c signal.c sort.c \
+ status.c system.c thread.c charset.c history.c lib.c \
+ muttlib.c editmsg.c mbyte.c \
+- url.c ascii.c mutt_idna.c crypt-mod.c crypt-mod.h
++ url.c ascii.c mutt_idna.c crypt-mod.c crypt-mod.h \
++ sidebar.c
+
+ mutt_LDADD = @MUTT_LIB_OBJECTS@ @LIBOBJS@ $(LIBIMAP) $(MUTTLIBS) \
+ $(INTLLIBS) $(LIBICONV) $(GPGME_LIBS)
+@@ -348,7 +350,7 @@
+ makedoc.c makedoc-defs.h stamp-doc-rc README.SSL smime.h \
+ muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \
+ ChangeLog ChangeLog.old mkchangelog.sh cvslog2changelog.pl mutt_idna.h \
+- snprintf.c regex.c crypt-gpgme.h hcachever.sh
++ snprintf.c regex.c crypt-gpgme.h sidebar.h hcachever.sh
+
+ EXTRA_SCRIPTS = smime_keys
+ mutt_dotlock_SOURCES = mutt_dotlock.c
+Index: mutt-1.5.15/mbox.c
+===================================================================
+--- mutt-1.5.15.orig/mbox.c 2007-04-01 22:58:56.000000000 +0100
++++ mutt-1.5.15/mbox.c 2007-04-18 09:28:14.000000000 +0100
+@@ -100,6 +100,7 @@
+ mutt_perror (ctx->path);
+ return (-1);
+ }
++ ctx->atime = sb.st_atime;
+ ctx->mtime = sb.st_mtime;
+ ctx->size = sb.st_size;
+
+@@ -251,6 +252,7 @@
+
+ ctx->size = sb.st_size;
+ ctx->mtime = sb.st_mtime;
++ ctx->atime = sb.st_atime;
+
+ #ifdef NFS_ATTRIBUTE_HACK
+ if (sb.st_mtime > sb.st_atime)
+Index: mutt-1.5.15/menu.c
+===================================================================
+--- mutt-1.5.15.orig/menu.c 2007-04-01 22:58:56.000000000 +0100
++++ mutt-1.5.15/menu.c 2007-04-18 09:28:14.000000000 +0100
+@@ -24,6 +24,7 @@
+ #include "mutt_curses.h"
+ #include "mutt_menu.h"
+ #include "mbyte.h"
++#include "sidebar.h"
+
+ #ifdef USE_IMAP
+ #include "imap.h"
+@@ -158,7 +159,7 @@
+ {
+ char *scratch = safe_strdup (s);
+ int shift = option (OPTARROWCURSOR) ? 3 : 0;
+- int cols = COLS - shift;
++ int cols = COLS - shift - SidebarWidth;
+
+ mutt_format_string (s, n, cols, cols, 0, ' ', scratch, mutt_strlen (scratch), 1);
+ s[n - 1] = 0;
+@@ -209,6 +210,7 @@
+ char buf[STRING];
+ int i;
+
++ draw_sidebar(1);
+ for (i = menu->top; i < menu->top + menu->pagelen; i++)
+ {
+ if (i < menu->max)
+@@ -219,7 +221,7 @@
+ if (option (OPTARROWCURSOR))
+ {
+ attrset (menu->color (i));
+- CLEARLINE (i - menu->top + menu->offset);
++ CLEARLINE_WIN (i - menu->top + menu->offset);
+
+ if (i == menu->current)
+ {
+@@ -248,14 +250,14 @@
+ BKGDSET (MT_COLOR_INDICATOR);
+ }
+
+- CLEARLINE (i - menu->top + menu->offset);
++ CLEARLINE_WIN (i - menu->top + menu->offset);
+ print_enriched_string (menu->color(i), (unsigned char *) buf, i != menu->current);
+ SETCOLOR (MT_COLOR_NORMAL);
+ BKGDSET (MT_COLOR_NORMAL);
+ }
+ }
+ else
+- CLEARLINE (i - menu->top + menu->offset);
++ CLEARLINE_WIN (i - menu->top + menu->offset);
+ }
+ menu->redraw = 0;
+ }
+@@ -270,7 +272,7 @@
+ return;
+ }
+
+- move (menu->oldcurrent + menu->offset - menu->top, 0);
++ move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth);
+ SETCOLOR (MT_COLOR_NORMAL);
+ BKGDSET (MT_COLOR_NORMAL);
+
+@@ -285,13 +287,13 @@
+ clrtoeol ();
+ menu_make_entry (buf, sizeof (buf), menu, menu->oldcurrent);
+ menu_pad_string (buf, sizeof (buf));
+- move (menu->oldcurrent + menu->offset - menu->top, 3);
++ move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth + 3);
+ print_enriched_string (menu->color(menu->oldcurrent), (unsigned char *) buf, 1);
+ SETCOLOR (MT_COLOR_NORMAL);
+ }
+
+ /* now draw it in the new location */
+- move (menu->current + menu->offset - menu->top, 0);
++ move (menu->current + menu->offset - menu->top, SidebarWidth);
+ attrset (menu->color (menu->current));
+ ADDCOLOR (MT_COLOR_INDICATOR);
+ addstr ("->");
+@@ -312,7 +314,7 @@
+ attrset (menu->color (menu->current));
+ ADDCOLOR (MT_COLOR_INDICATOR);
+ BKGDSET (MT_COLOR_INDICATOR);
+- CLEARLINE (menu->current - menu->top + menu->offset);
++ CLEARLINE_WIN (menu->current - menu->top + menu->offset);
+ print_enriched_string (menu->color(menu->current), (unsigned char *) buf, 0);
+ SETCOLOR (MT_COLOR_NORMAL);
+ BKGDSET (MT_COLOR_NORMAL);
+@@ -324,7 +326,7 @@
+ {
+ char buf[STRING];
+
+- move (menu->current + menu->offset - menu->top, 0);
++ move (menu->current + menu->offset - menu->top, SidebarWidth);
+ menu_make_entry (buf, sizeof (buf), menu, menu->current);
+ menu_pad_string (buf, sizeof (buf));
+
+@@ -867,7 +869,7 @@
+
+
+ if (option (OPTARROWCURSOR))
+- move (menu->current - menu->top + menu->offset, 2);
++ move (menu->current - menu->top + menu->offset, SidebarWidth + 2);
+ else if (option (OPTBRAILLEFRIENDLY))
+ move (menu->current - menu->top + menu->offset, 0);
+ else
+Index: mutt-1.5.15/mutt_curses.h
+===================================================================
+--- mutt-1.5.15.orig/mutt_curses.h 2007-04-01 22:58:56.000000000 +0100
++++ mutt-1.5.15/mutt_curses.h 2007-04-18 09:28:14.000000000 +0100
+@@ -64,6 +64,7 @@
+ #undef lines
+ #endif /* lines */
+
++#define CLEARLINE_WIN(x) move(x,SidebarWidth), clrtoeol()
+ #define CLEARLINE(x) move(x,0), clrtoeol()
+ #define CENTERLINE(x,y) move(y, (COLS-strlen(x))/2), addstr(x)
+ #define BEEP() do { if (option (OPTBEEP)) beep(); } while (0)
+@@ -126,6 +127,7 @@
+ MT_COLOR_BOLD,
+ MT_COLOR_UNDERLINE,
+ MT_COLOR_INDEX,
++ MT_COLOR_NEW,
+ MT_COLOR_MAX
+ };
+
+Index: mutt-1.5.15/mutt.h
+===================================================================
+--- mutt-1.5.15.orig/mutt.h 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/mutt.h 2007-04-18 09:28:14.000000000 +0100
+@@ -443,6 +443,7 @@
+ OPTSAVEEMPTY,
+ OPTSAVENAME,
+ OPTSCORE,
++ OPTSIDEBAR,
+ OPTSIGDASHES,
+ OPTSIGONTOP,
+ OPTSORTRE,
+@@ -904,6 +905,7 @@
+ {
+ char *path;
+ FILE *fp;
++ time_t atime;
+ time_t mtime;
+ off_t size;
+ off_t vsize;
+@@ -938,6 +940,7 @@
+ unsigned int quiet : 1; /* inhibit status messages? */
+ unsigned int collapsed : 1; /* are all threads collapsed? */
+ unsigned int closing : 1; /* mailbox is being closed */
++ unsigned int peekonly : 1; /* just taking a glance, revert atime */
+
+ /* driver hooks */
+ void *data; /* driver specific data */
+Index: mutt-1.5.15/muttlib.c
+===================================================================
+--- mutt-1.5.15.orig/muttlib.c 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/muttlib.c 2007-04-18 09:28:14.000000000 +0100
+@@ -1206,7 +1206,10 @@
+ ch = *src++; /* pad char */
+ /* calculate space left on line. if we've already written more data
+ than will fit on the line, ignore the rest of the line */
+- count = (COLS < destlen ? COLS : destlen);
++ if ( DrawFullLine )
++ count = (COLS < destlen ? COLS : destlen);
++ else
++ count = ((COLS-SidebarWidth) < destlen ? COLS - SidebarWidth : destlen);
+ if (count > col)
+ {
+ count -= col; /* how many columns left on this line */
+Index: mutt-1.5.15/Muttrc
+===================================================================
+--- mutt-1.5.15.orig/Muttrc 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/Muttrc 2007-04-18 09:28:14.000000000 +0100
+@@ -2235,6 +2235,26 @@
+ # function.
+ #
+ #
++# set sidebar_visible=no
++#
++# Name: sidebar_visible
++# Type: boolean
++# Default: no
++#
++#
++# This specifies whether or not to show sidebar (left-side list of folders).
++#
++#
++# set sidebar_width=0
++#
++# Name: sidebar_width
++# Type: number
++# Default: 0
++#
++#
++# The width of the sidebar.
++#
++#
+ # set crypt_autosign=no
+ #
+ # Name: crypt_autosign
+Index: mutt-1.5.15/mx.c
+===================================================================
+--- mutt-1.5.15.orig/mx.c 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/mx.c 2007-04-18 09:28:14.000000000 +0100
+@@ -637,6 +637,7 @@
+ * M_APPEND open mailbox for appending
+ * M_READONLY open mailbox in read-only mode
+ * M_QUIET only print error messages
++ * M_PEEK revert atime where applicable
+ * ctx if non-null, context struct to use
+ */
+ CONTEXT *mx_open_mailbox (const char *path, int flags, CONTEXT *pctx)
+@@ -659,6 +660,8 @@
+ ctx->quiet = 1;
+ if (flags & M_READONLY)
+ ctx->readonly = 1;
++ if (flags & M_PEEK)
++ ctx->peekonly = 1;
+
+ if (flags & (M_APPEND|M_NEWFOLDER))
+ {
+@@ -764,9 +767,21 @@
+ void mx_fastclose_mailbox (CONTEXT *ctx)
+ {
+ int i;
++#ifndef BUFFY_SIZE
++ struct utimbuf ut;
++#endif
+
+ if(!ctx)
+ return;
++#ifndef BUFFY_SIZE
++ /* fix up the times so buffy won't get confused */
++ if (ctx->peekonly && ctx->path && ctx->mtime > ctx->atime)
++ {
++ ut.actime = ctx->atime;
++ ut.modtime = ctx->mtime;
++ utime (ctx->path, &ut);
++ }
++#endif
+
+ if (ctx->mx_close)
+ ctx->mx_close (ctx);
+Index: mutt-1.5.15/OPS
+===================================================================
+--- mutt-1.5.15.orig/OPS 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/OPS 2007-04-18 09:28:14.000000000 +0100
+@@ -196,3 +196,8 @@
+ OP_MAIN_SHOW_LIMIT "show currently active limit pattern"
+ OP_MAIN_COLLAPSE_THREAD "collapse/uncollapse current thread"
+ OP_MAIN_COLLAPSE_ALL "collapse/uncollapse all threads"
++OP_SIDEBAR_SCROLL_UP "scroll the mailbox pane up 1 page"
++OP_SIDEBAR_SCROLL_DOWN "scroll the mailbox pane down 1 page"
++OP_SIDEBAR_NEXT "go down to next mailbox"
++OP_SIDEBAR_PREV "go to previous mailbox"
++OP_SIDEBAR_OPEN "open hilighted mailbox"
+Index: mutt-1.5.15/pager.c
+===================================================================
+--- mutt-1.5.15.orig/pager.c 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/pager.c 2007-04-18 09:28:14.000000000 +0100
+@@ -30,6 +30,7 @@
+ #include "pager.h"
+ #include "attach.h"
+ #include "mbyte.h"
++#include "sidebar.h"
+
+ #include "mx.h"
+
+@@ -1073,6 +1074,8 @@
+
+ int wrap_cols = mutt_term_width (Wrap);
+
++ wrap_cols -= SidebarWidth;
++
+ /* FIXME: this should come from lineInfo */
+ memset(&mbstate, 0, sizeof(mbstate));
+
+@@ -1723,7 +1726,7 @@
+ if ((redraw & REDRAW_BODY) || topline != oldtopline)
+ {
+ do {
+- move (bodyoffset, 0);
++ move (bodyoffset, SidebarWidth);
+ curline = oldtopline = topline;
+ lines = 0;
+ force_redraw = 0;
+@@ -1736,6 +1739,7 @@
+ &QuoteList, &q_level, &force_redraw, &SearchRE) > 0)
+ lines++;
+ curline++;
++ move(lines + bodyoffset, SidebarWidth);
+ }
+ last_offset = lineInfo[curline].offset;
+ } while (force_redraw);
+@@ -1749,6 +1753,7 @@
+ addch ('~');
+ addch ('\n');
+ lines++;
++ move(lines + bodyoffset, SidebarWidth);
+ }
+ /* We are going to update the pager status bar, so it isn't
+ * necessary to reset to normal color now. */
+@@ -1761,22 +1766,22 @@
+ /* print out the pager status bar */
+ SETCOLOR (MT_COLOR_STATUS);
+ BKGDSET (MT_COLOR_STATUS);
+- CLEARLINE (statusoffset);
++ CLEARLINE_WIN(statusoffset);
+ if (IsHeader (extra))
+ {
+- size_t l1 = (COLS - 9) * MB_LEN_MAX;
++ size_t l1 = ((COLS - 9) * MB_LEN_MAX) - (SidebarWidth * MB_LEN_MAX);
+ size_t l2 = sizeof (buffer);
+ _mutt_make_string (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt),
+ Context, extra->hdr, M_FORMAT_MAKEPRINT);
+ }
+ else if (IsMsgAttach (extra))
+ {
+- size_t l1 = (COLS - 9) * MB_LEN_MAX;
++ size_t l1 = (COLS - 9) * MB_LEN_MAX - (SidebarWidth * MB_LEN_MAX);
+ size_t l2 = sizeof (buffer);
+ _mutt_make_string (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt),
+ Context, extra->bdy->hdr, M_FORMAT_MAKEPRINT);
+ }
+- mutt_paddstr (COLS-10, IsHeader (extra) || IsMsgAttach (extra) ?
++ mutt_paddstr (COLS-10-SidebarWidth, IsHeader (extra) || IsMsgAttach (extra) ?
+ buffer : banner);
+ addstr (" -- (");
+ if (last_pos < sb.st_size - 1)
+@@ -1792,18 +1797,24 @@
+ /* redraw the pager_index indicator, because the
+ * flags for this message might have changed. */
+ menu_redraw_current (index);
++ draw_sidebar(MENU_PAGER);
+
+ /* print out the index status bar */
+ menu_status_line (buffer, sizeof (buffer), index, NONULL(Status));
+
+- move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), 0);
++ move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)),
++ SidebarWidth);
+ SETCOLOR (MT_COLOR_STATUS);
+ BKGDSET (MT_COLOR_STATUS);
+- mutt_paddstr (COLS, buffer);
++ mutt_paddstr (COLS-SidebarWidth, buffer);
+ SETCOLOR (MT_COLOR_NORMAL);
+ BKGDSET (MT_COLOR_NORMAL);
+ }
+
++ /* if we're not using the index, update every time */
++ if ( index == 0 )
++ draw_sidebar(MENU_PAGER);
++
+ redraw = 0;
+
+ if (option(OPTBRAILLEFRIENDLY)) {
+@@ -2739,6 +2750,12 @@
+ redraw = REDRAW_FULL;
+ break;
+
++ case OP_SIDEBAR_SCROLL_UP:
++ case OP_SIDEBAR_SCROLL_DOWN:
++ case OP_SIDEBAR_NEXT:
++ case OP_SIDEBAR_PREV:
++ scroll_sidebar(ch, MENU_PAGER);
++ break;
+ default:
+ ch = -1;
+ break;
+Index: mutt-1.5.15/PATCHES
+===================================================================
+--- mutt-1.5.15.orig/PATCHES 2007-04-18 09:28:14.000000000 +0100
++++ mutt-1.5.15/PATCHES 2007-04-18 09:28:14.000000000 +0100
+@@ -1,3 +1,4 @@
++patch-1.5.15.sidebar.20070408.txt
+ vvv.quote
+ vvv.initials
+ vvv.nntp
+Index: mutt-1.5.15/sidebar.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ mutt-1.5.15/sidebar.c 2007-04-18 09:28:14.000000000 +0100
+@@ -0,0 +1,294 @@
++/*
++ * Copyright (C) ????-2004 Justin Hibbits <jrh29@po.cwru.edu>
++ * Copyright (C) 2004 Thomer M. Gil <mutt@thomer.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, USA.
++ */
++
++
++#if HAVE_CONFIG_H
++# include "config.h"
++#endif
++
++#include "mutt.h"
++#include "mutt_menu.h"
++#include "mutt_curses.h"
++#include "sidebar.h"
++#include "buffy.h"
++#include <libgen.h>
++#include "keymap.h"
++#include <stdbool.h>
++
++/*BUFFY *CurBuffy = 0;*/
++static BUFFY *TopBuffy = 0;
++static BUFFY *BottomBuffy = 0;
++static int known_lines = 0;
++
++static int quick_log10(int n)
++{
++ char string[32];
++ sprintf(string, "%d", n);
++ return strlen(string);
++}
++
++void calc_boundaries (int menu)
++{
++ BUFFY *tmp = Incoming;
++
++ if ( known_lines != LINES ) {
++ TopBuffy = BottomBuffy = 0;
++ known_lines = LINES;
++ }
++ for ( ; tmp->next != 0; tmp = tmp->next )
++ tmp->next->prev = tmp;
++
++ if ( TopBuffy == 0 && BottomBuffy == 0 )
++ TopBuffy = Incoming;
++ if ( BottomBuffy == 0 ) {
++ int count = LINES - 2 - (menu != MENU_PAGER || option(OPTSTATUSONTOP));
++ BottomBuffy = TopBuffy;
++ while ( --count && BottomBuffy->next )
++ BottomBuffy = BottomBuffy->next;
++ }
++ else if ( TopBuffy == CurBuffy->next ) {
++ int count = LINES - 2 - (menu != MENU_PAGER);
++ BottomBuffy = CurBuffy;
++ tmp = BottomBuffy;
++ while ( --count && tmp->prev)
++ tmp = tmp->prev;
++ TopBuffy = tmp;
++ }
++ else if ( BottomBuffy == CurBuffy->prev ) {
++ int count = LINES - 2 - (menu != MENU_PAGER);
++ TopBuffy = CurBuffy;
++ tmp = TopBuffy;
++ while ( --count && tmp->next )
++ tmp = tmp->next;
++ BottomBuffy = tmp;
++ }
++}
++
++char *make_sidebar_entry(char *box, int size, int new)
++{
++ static char *entry = 0;
++ char *c;
++ int i = 0;
++ int delim_len = strlen(SidebarDelim);
++
++ c = realloc(entry, SidebarWidth - delim_len + 2);
++ if ( c ) entry = c;
++ entry[SidebarWidth - delim_len + 1] = 0;
++ for (; i < SidebarWidth - delim_len + 1; entry[i++] = ' ' );
++ i = strlen(box);
++ strncpy( entry, box, i < (SidebarWidth - delim_len + 1) ? i : (SidebarWidth - delim_len + 1) );
++
++ if (size == -1)
++ sprintf(entry + SidebarWidth - delim_len - 3, "?");
++ else if ( new )
++ sprintf(
++ entry + SidebarWidth - delim_len - 3 - quick_log10(size) - quick_log10(new),
++ "% d(%d)", size, new);
++ else
++ sprintf( entry + SidebarWidth - delim_len - 1 - quick_log10(size), "% d", size);
++ return entry;
++}
++
++void set_curbuffy(char buf[LONG_STRING])
++{
++ BUFFY* tmp = CurBuffy = Incoming;
++
++ if (!Incoming)
++ return;
++
++ while(1) {
++ if(!strcmp(tmp->path, buf)) {
++ CurBuffy = tmp;
++ break;
++ }
++
++ if(tmp->next)
++ tmp = tmp->next;
++ else
++ break;
++ }
++}
++
++int draw_sidebar(int menu) {
++
++ int lines = option(OPTHELP) ? 1 : 0;
++ BUFFY *tmp;
++#ifndef USE_SLANG_CURSES
++ attr_t attrs;
++#endif
++ short delim_len = strlen(SidebarDelim);
++ short color_pair;
++
++ static bool initialized = false;
++ static int prev_show_value;
++ static short saveSidebarWidth;
++
++ /* initialize first time */
++ if(!initialized) {
++ prev_show_value = option(OPTSIDEBAR);
++ saveSidebarWidth = SidebarWidth;
++ if(!option(OPTSIDEBAR)) SidebarWidth = 0;
++ initialized = true;
++ }
++
++ /* save or restore the value SidebarWidth */
++ if(prev_show_value != option(OPTSIDEBAR)) {
++ if(prev_show_value && !option(OPTSIDEBAR)) {
++ saveSidebarWidth = SidebarWidth;
++ SidebarWidth = 0;
++ } else if(!prev_show_value && option(OPTSIDEBAR)) {
++ SidebarWidth = saveSidebarWidth;
++ }
++ prev_show_value = option(OPTSIDEBAR);
++ }
++
++
++// if ( SidebarWidth == 0 ) return 0;
++ if (SidebarWidth > 0 && option (OPTSIDEBAR)
++ && delim_len >= SidebarWidth) {
++ unset_option (OPTSIDEBAR);
++ /* saveSidebarWidth = SidebarWidth; */
++ if (saveSidebarWidth > delim_len) {
++ SidebarWidth = saveSidebarWidth;
++ mutt_error (_("Value for sidebar_delim is too long. Disabling sidebar."));
++ sleep (2);
++ } else {
++ SidebarWidth = 0;
++ mutt_error (_("Value for sidebar_delim is too long. Disabling sidebar. Please set your sidebar_width to a sane value."));
++ sleep (4); /* the advise to set a sane value should be seen long enough */
++ }
++ saveSidebarWidth = 0;
++ return (0);
++ }
++
++ if ( SidebarWidth == 0 || !option(OPTSIDEBAR)) {
++ if (SidebarWidth > 0) {
++ saveSidebarWidth = SidebarWidth;
++ SidebarWidth = 0;
++ }
++ unset_option(OPTSIDEBAR);
++ return 0;
++ }
++
++ /* get attributes for divider */
++ SETCOLOR(MT_COLOR_STATUS);
++#ifndef USE_SLANG_CURSES
++ attr_get(&attrs, &color_pair, 0);
++#else
++ color_pair = attr_get();
++#endif
++ SETCOLOR(MT_COLOR_NORMAL);
++
++ /* draw the divider */
++
++ for ( ; lines < LINES-1-(menu != MENU_PAGER || option(OPTSTATUSONTOP)); lines++ ) {
++ move(lines, SidebarWidth - delim_len);
++ addstr(NONULL(SidebarDelim));
++#ifndef USE_SLANG_CURSES
++ mvchgat(lines, SidebarWidth - delim_len, delim_len, 0, color_pair, NULL);
++#endif
++ }
++
++ if ( Incoming == 0 ) return 0;
++ lines = option(OPTHELP) ? 1 : 0; /* go back to the top */
++
++ if ( known_lines != LINES || TopBuffy == 0 || BottomBuffy == 0 )
++ calc_boundaries(menu);
++ if ( CurBuffy == 0 ) CurBuffy = Incoming;
++
++ tmp = TopBuffy;
++
++ SETCOLOR(MT_COLOR_NORMAL);
++
++ for ( ; tmp && lines < LINES-1 - (menu != MENU_PAGER || option(OPTSTATUSONTOP)); tmp = tmp->next ) {
++ if ( tmp == CurBuffy )
++ SETCOLOR(MT_COLOR_INDICATOR);
++ else if ( tmp->msg_unread > 0 )
++ SETCOLOR(MT_COLOR_NEW);
++ else
++ SETCOLOR(MT_COLOR_NORMAL);
++
++ move( lines, 0 );
++ if ( Context && !strcmp( tmp->path, Context->path ) ) {
++ tmp->msg_unread = Context->unread;
++ tmp->msgcount = Context->msgcount;
++ }
++ printw( "%.*s", SidebarWidth - delim_len + 1,
++ make_sidebar_entry(basename(tmp->path), tmp->msgcount,
++ tmp->msg_unread));
++ lines++;
++ }
++ SETCOLOR(MT_COLOR_NORMAL);
++ for ( ; lines < LINES-1 - (menu != MENU_PAGER || option(OPTSTATUSONTOP)); lines++ ) {
++ int i = 0;
++ move( lines, 0 );
++ for ( ; i < SidebarWidth - delim_len - 1; i++ )
++ addch(' ');
++ }
++ return 0;
++}
++
++
++void set_buffystats(CONTEXT* Context)
++{
++ BUFFY *tmp = Incoming;
++ while(tmp) {
++ if(Context && !strcmp(tmp->path, Context->path)) {
++ tmp->msg_unread = Context->unread;
++ tmp->msgcount = Context->msgcount;
++ break;
++ }
++ tmp = tmp->next;
++ }
++}
++
++void scroll_sidebar(int op, int menu)
++{
++ if(!SidebarWidth) return;
++ if(!CurBuffy) return;
++
++ switch (op) {
++ case OP_SIDEBAR_NEXT:
++ if ( CurBuffy->next == NULL ) return;
++ CurBuffy = CurBuffy->next;
++ break;
++ case OP_SIDEBAR_PREV:
++ if ( CurBuffy->prev == NULL ) return;
++ CurBuffy = CurBuffy->prev;
++ break;
++ case OP_SIDEBAR_SCROLL_UP:
++ CurBuffy = TopBuffy;
++ if ( CurBuffy != Incoming ) {
++ calc_boundaries(menu);
++ CurBuffy = CurBuffy->prev;
++ }
++ break;
++ case OP_SIDEBAR_SCROLL_DOWN:
++ CurBuffy = BottomBuffy;
++ if ( CurBuffy->next ) {
++ calc_boundaries(menu);
++ CurBuffy = CurBuffy->next;
++ }
++ break;
++ default:
++ return;
++ }
++ calc_boundaries(menu);
++ draw_sidebar(menu);
++}
+Index: mutt-1.5.15/sidebar.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ mutt-1.5.15/sidebar.h 2007-04-18 09:28:14.000000000 +0100
+@@ -0,0 +1,36 @@
++/*
++ * Copyright (C) ????-2004 Justin Hibbits <jrh29@po.cwru.edu>
++ * Copyright (C) 2004 Thomer M. Gil <mutt@thomer.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, USA.
++ */
++
++#ifndef SIDEBAR_H
++#define SIDEBAR_H
++
++struct MBOX_LIST {
++ char *path;
++ int msgcount;
++ int new;
++} MBLIST;
++
++/* parameter is whether or not to go to the status line */
++/* used for omitting the last | that covers up the status bar in the index */
++int draw_sidebar(int);
++void scroll_sidebar(int, int);
++void set_curbuffy(char*);
++void set_buffystats(CONTEXT*);
++
++#endif /* SIDEBAR_H */
+Index: mutt-1.5.15/imap/imap.c
+===================================================================
+--- mutt-1.5.15.orig/imap/imap.c 2007-04-06 20:52:53.000000000 +0100
++++ mutt-1.5.15/imap/imap.c 2007-04-18 09:28:14.000000000 +0100
+@@ -1483,7 +1483,7 @@
+
+ imap_munge_mbox_name (munged, sizeof (munged), name);
+ snprintf (command, sizeof (command),
+- "STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT)", munged);
++ "STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT MESSAGES)", munged);
+
+ if (imap_cmd_queue (idata, command) < 0)
+ {
+Index: mutt-1.5.15/imap/command.c
+===================================================================
+--- mutt-1.5.15.orig/imap/command.c 2007-04-05 16:58:57.000000000 +0100
++++ mutt-1.5.15/imap/command.c 2007-04-18 09:28:14.000000000 +0100
+@@ -914,6 +914,13 @@
+ opened */
+ status->uidnext = oldun;
+
++ /* Added to make the sidebar show the correct numbers */
++ if (status->messages)
++ {
++ inc->msgcount = status->messages;
++ inc->msg_unread = status->unseen;
++ }
++
+ FREE (&value);
+ return;
+ }
diff --git a/packages/mutt/mutt_1.5.15.bb b/packages/mutt/mutt_1.5.15.bb
new file mode 100644
index 0000000000..83d8d770d7
--- /dev/null
+++ b/packages/mutt/mutt_1.5.15.bb
@@ -0,0 +1,27 @@
+SECTION = "console/network"
+DEPENDS = "ncurses gnutls gpgme"
+DESCRIPTION = "Mutt is a small but very powerful text-based \
+MIME mail client. It is highly configurable, and is well-suited \
+to the mail power user with advanced features like key \
+bindings, keyboard macros, mail threading, regular expression \
+searches, and a powerful pattern matching language for selecting \
+groups of messages."
+LICENSE = "GPL"
+PR = "r0"
+SRC_URI = "ftp://ftp.mutt.org/mutt/devel/mutt-${PV}.tar.gz \
+ http://mutt.org.ua/download/mutt-1.5.15/patch-1.5.15.vvv.nntp.2.gz;patch=1 \
+ http://mutt.org.ua/download/mutt-1.5.15/patch-1.5.15.vvv.initials.gz;patch=1 \
+ http://mutt.org.ua/download/mutt-1.5.15/patch-1.5.15.vvv.quote.gz;patch=1 \
+ file://patch-1.5.15.sidebar.20070408.txt;patch=1 \
+ file://makedoc.patch;patch=1 "
+
+S = "${WORKDIR}/mutt-1.5.15"
+
+inherit autotools
+
+EXTRA_OECONF = "--enable-gpgme --with-curses=${STAGING_LIBDIR}/.. \
+ --enable-pop --enable-imap --with-gnutls --enable-nntp"
+
+do_compile_prepend () {
+ ${BUILD_CC} makedoc.c -o makedoc
+}
diff --git a/packages/mysql/mysql-native_4.1.18.bb b/packages/mysql/mysql-native_4.1.18.bb
index ebef572fbb..9a81bc8f00 100644
--- a/packages/mysql/mysql-native_4.1.18.bb
+++ b/packages/mysql/mysql-native_4.1.18.bb
@@ -1,13 +1,16 @@
SECTION = "console/network"
require mysql_${PV}.bb
inherit native
+PR="r3"
+
+RDEPENDS_${PN} = ""
PACKAGES = ""
DEPENDS = "ncurses-native"
EXTRA_OEMAKE = ""
EXTRA_OECONF = " --with-embedded-server "
-do_stage() {
+do_stage_append() {
install -m 0755 sql/gen_lex_hash ${STAGING_BINDIR}/
}
diff --git a/packages/mythfront/mythfront-config.bb b/packages/mythfront/mythfront-config.bb
index 2cb7362ae8..b87e0be8ad 100644
--- a/packages/mythfront/mythfront-config.bb
+++ b/packages/mythfront/mythfront-config.bb
@@ -1,8 +1,7 @@
-PV = "1.8"
+PV = "1.10"
PR = "r0"
-DEPENDS = "xfonts-xorg"
-RDEPENDS_${PN} = "xfonts-xorg"
+RDEPENDS_${PN} = "font-misc-misc"
LICENSE = "MIT"
SRC_URI = "file://tftp.sh file://xorg.conf"
diff --git a/packages/mythfront/mythfront-config/tftp.sh b/packages/mythfront/mythfront-config/tftp.sh
index 51ccb79161..8ac4bf8020 100755
--- a/packages/mythfront/mythfront-config/tftp.sh
+++ b/packages/mythfront/mythfront-config/tftp.sh
@@ -16,8 +16,8 @@ mkdir /var/lib/config
cd /var/lib/config
for fn in $files; do
- if ! tftp -g $serverid -r $bootdir/mythfront/$ip/$fn -l $fn; then
- if ! tftp -g $serverid -r $bootdir/mythfront/default/$fn -l $fn; then
+ if ! tftp -g $siaddr -r $bootdir/mythfront/$ip/$fn -l $fn; then
+ if ! tftp -g $siaddr -r $bootdir/mythfront/default/$fn -l $fn; then
rm -f $fn
fi
fi
diff --git a/packages/mythtv/mythtv-0.20/.mtn2git_empty b/packages/mythtv/mythtv-0.20/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mythtv/mythtv-0.20/.mtn2git_empty
diff --git a/packages/mythtv/mythtv-0.20/configure.patch b/packages/mythtv/mythtv-0.20/configure.patch
new file mode 100644
index 0000000000..03281eb7e5
--- /dev/null
+++ b/packages/mythtv/mythtv-0.20/configure.patch
@@ -0,0 +1,90 @@
+--- mythtv-0.20/configure 2006-08-28 17:18:08.000000000 +0100
++++ mythtv-0.20/configure 2007-01-16 14:42:18.000000000 +0000
+@@ -1225,49 +1225,50 @@
+
+ has_library()
+ {
+- if test -f /etc/ld.so.conf ; then
+- LIBPATHS=`cat /etc/ld.so.conf | grep -v "#" | grep -v "include"`
++ lib=`echo $1 | sed 's/^lib//'`
++ tmpfile=/tmp/conftest.$$
++ rm -f $tmpfile $tmpfile.c
++ cat >$tmpfile.c <<EOF
++int main() { return 0; }
++EOF
++ echo "cc=$cc $LDFLAGS"
++ echo -n "checking for lib$lib... "
++ if $cc $LDFLAGS -o $tmpfile $tmpfile.c -l$lib; then
++ echo "yes"
++ result=0
+ else
+- LIBPATHS=''
++ echo "no"
++ result=1
+ fi
+- LIBPATHS="$LIBPATHS `echo $LD_LIBRARY_PATH | sed s/':'/' '/g` "
+- # Mac OS X has a different variable for this:
+- LIBPATHS="$LIBPATHS `echo $DYLD_LIBRARY_PATH | sed s/':'/' '/g` "
+-
+- # recurse down just one level, should be enough in most cases
+- if test -f /etc/ld.so.conf ; then
+- INCL=`cat /etc/ld.so.conf | grep -v "#" | grep "^include"`
+- SRCH=`echo "$INCL" | sed '{ s/^include \//\//; s/^include /\/etc\//}'`
+- for x in $SRCH ; do
+- LP_APPEND=`cat $x | grep -v "#" | grep -v "^include"`
+- LIBPATHS="$LIBPATHS $LP_APPEND"
+- done
+- fi
+-
+- LIBPATHS="`echo $LIBPATHS /$libdir_name /usr/$libdir_name /usr/local/$libdir_name /usr/X11R6/$libdir_name | sed s/'\/ '/' '/g` "
+-
+- HAS_IT="no"
+- for LIBPATH in $LIBPATHS ; do
+- if test x`ls $LIBPATH/$1* 2> /dev/null | head -n 1` != x"" ; then
+- HAS_IT="yes"
+- fi
+- done
+- expr $HAS_IT : "yes" > /dev/null
++ rm -f $tmpfile $tmpfile.c
++ return $result
+ }
+
+ has_header()
+ {
+- HPATHS="/usr/local/include /usr/include /usr/include/g++-v3 /usr/X11R6/include"
+- INCL=`echo $DYLD_LIBRARY_PATH $LD_LIBRARY_PATH | sed s/':'/' '/g`
+- HPATHS="$HPATHS `echo $INCL | sed s/$libdir_name/include/g` "
+-
+- HAS_IT="no"
+- for HPATH in $HPATHS ; do
+- if test x`ls $HPATH/$1* 2> /dev/null | head -n 1` != x"" ; then
+- HAS_IT="yes"
+- fi
+- done
+- expr $HAS_IT : "yes" > /dev/null
++ header=$1
++ tmpfile=/tmp/conftest.$$
++ rm -f $tmpfile.o $tmpfile.c
++ case $header in
++ X11/*) extra_incs="#include <X11/Xlib.h>" ;;
++ *) extra_incs="" ;;
++ esac
++ cat >$tmpfile.c <<EOF
++$extra_incs
++#include <$header>
++int main() { return 0; }
++EOF
++ echo "cc=$cc $CPPFLAGS $CFLAGS"
++ echo -n "checking for <$header>... "
++ if $cc $CPPFLAGS $CFLAGS -c -o $tmpfile.o $tmpfile.c; then
++ echo "yes"
++ result=0
++ else
++ echo "no"
++ result=1
++ fi
++ rm -f $tmpfile.o $tmpfile.c
++ return $result
+ }
+
+ CCONFIG="$CCONFIG $compile_type"
diff --git a/packages/mythtv/mythtv-0.20/libmyth-libdir.patch b/packages/mythtv/mythtv-0.20/libmyth-libdir.patch
new file mode 100644
index 0000000000..0ecfddcb53
--- /dev/null
+++ b/packages/mythtv/mythtv-0.20/libmyth-libdir.patch
@@ -0,0 +1,11 @@
+--- mythtv-0.20/libs/libmyth/libmyth.pro 2006-08-20 07:45:34.000000000 +0100
++++ mythtv-0.20/libs/libmyth/libmyth.pro 2007-01-16 14:54:59.000000000 +0000
+@@ -33,6 +33,8 @@
+ SOURCES += DisplayResScreen.cpp util-x11.cpp qmdcodec.cpp
+ SOURCES += virtualkeyboard.cpp mythobservable.cpp mythsocket.cpp
+
++DEFINES += LIBDIR=\"$${LIBDIR}\"
++
+ INCLUDEPATH += ../libmythsamplerate ../libmythsoundtouch ../.. ../
+ DEPENDPATH += ../libmythsamplerate ../libmythsoundtouch ../ ../libmythui
+
diff --git a/packages/mythtv/mythtv.inc b/packages/mythtv/mythtv.inc
new file mode 100644
index 0000000000..4ceda5d421
--- /dev/null
+++ b/packages/mythtv/mythtv.inc
@@ -0,0 +1,32 @@
+DESCRIPTION = "A full featured personal video recorder system."
+HOMEPAGE = "http://www.mythtv.org"
+LICENSE = "GPL"
+SECTION = "x11/multimedia"
+DEPENDS = "libxinerama lame libxv libxxf86vm libxvmc lirc qt-x11-free"
+RDEPENDS_${PN} = "qt-x11-plugins-sqldrivers qt-x11-plugins-imageformats"
+
+SRC_URI = "http://www.mythtv.org/mc/mythtv-${PV}.tar.bz2"
+
+inherit qmake qt3x11
+
+# there is a -march=586 somewhere in the source tree
+COMPATIBLE_HOST = 'i.86.*-linux'
+
+QMAKE_PROFILES = "mythtv.pro"
+
+def mythtv_arch(d):
+ import bb, re
+ arch = bb.data.getVar('TARGET_ARCH', d, 1)
+ if re.match("^i.86$", arch):
+ arch = "x86"
+ elif arch == "x86_64":
+ arch = "x86"
+ elif arch == "arm":
+ arch = "armv4l"
+ return arch
+
+MYTHTV_ARCH := "${@mythtv_arch(d)}"
+
+do_install() {
+ oe_runmake INSTALL_ROOT=${D} install
+}
diff --git a/packages/mythtv/mythtv_0.18.1.bb b/packages/mythtv/mythtv_0.18.1.bb
index 2686fa86a2..1602ce0e42 100644
--- a/packages/mythtv/mythtv_0.18.1.bb
+++ b/packages/mythtv/mythtv_0.18.1.bb
@@ -1,34 +1,10 @@
-DESCRIPTION = "A full featured personal video recorder system."
-HOMEPAGE = "http://www.mythtv.org"
-LICENSE = "GPL"
-SECTION = "x11/multimedia"
-DEPENDS = "libxinerama lame libxv libxxf86vm libxvmc lirc qt-x11-free"
-RDEPENDS = "qt-x11-plugins-sqldrivers qt-x11-plugins-imageformats"
-PR = "r1"
-
-SRC_URI = "http://www.mythtv.org/mc/mythtv-${PV}.tar.bz2 \
- file://msmpeg-underscore-pic.patch;patch=1 \
- file://settings.pro"
-
-inherit qmake qt3x11
-
-# there is a -march=586 somewhere in the source tree
-COMPATIBLE_HOST = 'i.86.*-linux'
+require mythtv.inc
-QMAKE_PROFILES = "mythtv.pro"
+PR = "r1"
-def mythtv_arch(d):
- import bb, re
- arch = bb.data.getVar('TARGET_ARCH', d, 1)
- if re.match("^i.86$", arch):
- arch = "x86"
- elif arch == "x86_64":
- arch = "x86"
- elif arch == "arm":
- arch = "armv4l"
- return arch
+SRC_URI += "file://msmpeg-underscore-pic.patch;patch=1 \
+ file://settings.pro"
-MYTHTV_ARCH := "${@mythtv_arch(d)}"
do_configure_prepend() {
# it's not autotools anyway, so we call ./configure directly
@@ -70,8 +46,3 @@ do_configure_prepend() {
sed 's!PREFIX =.*!PREFIX = ${prefix}!' < settings.pro > settings.pro.new
mv settings.pro.new settings.pro
}
-
-do_install() {
- oe_runmake INSTALL_ROOT=${D} install
-}
-
diff --git a/packages/mythtv/mythtv_0.20.bb b/packages/mythtv/mythtv_0.20.bb
new file mode 100644
index 0000000000..c9e2fdc431
--- /dev/null
+++ b/packages/mythtv/mythtv_0.20.bb
@@ -0,0 +1,71 @@
+require mythtv.inc
+
+DEPENDS += "openchrome"
+PR = "r0"
+
+SRC_URI += "file://configure.patch;patch=1 \
+ file://libmyth-libdir.patch;patch=1"
+
+# Seen on the mythtv web page:
+# http://www.mythtv.org/mc/fix-mythweb-in-0.20.diff;patch=1
+
+QMAKE_PROFILES = "mythtv.pro"
+
+mythlibs = "mythavutil mythavcodec mythavformat myth mythtv mythui mythfreemheg mythupnp mythlivemedia"
+PACKAGES =+ "mythtv-backend mythtv-frontend mythtv-bin mythtv-filters mythtv-data"
+
+FILES_mythtv-backend = "${bindir}/mythbackend ${bindir}/mythcommflag ${bindir}/mythfilldatabase ${bindir}/mythtranscode"
+FILES_mythtv-frontend = "${bindir}/mythfrontend ${datadir}/mythtv/i18n/mythfrontend_* ${datadir}/mythtv/*.ttf"
+RDEPENDS_mythtv-frontend = "qt-x11-plugins-sqldrivers qt-x11-plugins-imageformats"
+FILES_mythtv-bin = "${bindir}"
+FILES_mythtv-filters = "${libdir}/mythtv/filters"
+FILES_mythtv-data = "${datadir}"
+RDEPENDS_${PN} = "mythtv-backend mythtv-frontend mythtv-bin mythtv-filters mythtv-data"
+ALLOW_EMPTY_${PN} = "1"
+
+PACKAGES_DYNAMIC = "mythtv-theme-*"
+
+python __anonymous () {
+ import bb
+
+ mythlibs = bb.data.getVar('mythlibs', d).split()
+ pv = bb.data.expand(bb.data.getVar("PV", d), d)
+
+ for m in mythlibs:
+ bb.data.setVar("FILES_lib%s%s" % (m, pv), "${libdir}/lib%s-%s.so.*" % (m, pv), d)
+ bb.data.setVar("FILES_lib%s%s-dev" % (m, pv), "${libdir}/lib%s-%s.*" % (m, pv), d)
+
+ packages = " ".join(map(lambda x: "lib%s%s lib%s%s-dev" % (x, pv, x, pv), mythlibs) + bb.data.getVar("PACKAGES", d).split())
+
+ bb.data.setVar("PACKAGES", packages, d)
+}
+do_configure_prepend() {
+# it's not autotools anyway, so we call ./configure directly
+ find . -name "Makefile"|xargs rm -f
+ ./configure --prefix=/usr \
+ --mandir=/usr/man \
+ --cpu=${MYTHTV_ARCH} \
+ --enable-mmx \
+ --disable-altivec \
+ --enable-v4l \
+ --enable-audio-oss \
+ --enable-proc-opt \
+ --enable-xvmc \
+ --enable-xvmc-pro \
+ --enable-dvb \
+ --dvb-path=${STAGING_INCDIR}
+
+ sed 's!PREFIX =.*!PREFIX = ${prefix}!;/INCLUDEPATH += $${PREFIX}\/include/d' < settings.pro > settings.pro.new
+ mv settings.pro.new settings.pro
+}
+
+python populate_packages_prepend () {
+ new_packages = []
+
+ def the_hook(file, pkg, pattern, format, basename):
+ new_packages.append(pkg)
+
+ do_split_packages(d, root=bb.data.expand('${datadir}/mythtv/themes', d), file_regex='(.*)', output_pattern='mythtv-theme-%s', description='MythTV theme %s', allow_dirs=True, hook=the_hook, prepend=True)
+
+ bb.data.setVar("RDEPENDS_${PN}", "%s %s" % (bb.data.getVar("RDEPENDS_${PN}", d), " ".join(new_packages)), d)
+}
diff --git a/packages/nasm/nasm_0.98.38.bb b/packages/nasm/nasm_0.98.38.bb
index 3b9bf36e17..86e7f2b935 100644
--- a/packages/nasm/nasm_0.98.38.bb
+++ b/packages/nasm/nasm_0.98.38.bb
@@ -1,8 +1,7 @@
-SECTION = "devel"
DESCRIPTION = "General-purpose x86 assembler"
-COMPATIBLE_HOST = '(x86_64|i.86.*)-(linux|freebsd.*)'
+SECTION = "devel"
LICENSE = "GPL"
-SECTION = "dev-lang"
+COMPATIBLE_HOST = '(x86_64|i.86.*)-(linux|freebsd.*)'
SRC_URI = "${SOURCEFORGE_MIRROR}/nasm/nasm-${PV}.tar.bz2"
diff --git a/packages/nbd/files/cross-compile.patch b/packages/nbd/files/cross-compile.patch
index 654a3d7a48..1d0a135bb9 100644
--- a/packages/nbd/files/cross-compile.patch
+++ b/packages/nbd/files/cross-compile.patch
@@ -3,11 +3,11 @@ Cross Compile fixes:
let us define those.
-Index: nbd-2.8.4/configure.ac
+Index: nbd-2.8.7/configure.ac
===================================================================
---- nbd-2.8.4.orig/configure.ac 2006-02-26 15:52:03.000000000 +0100
-+++ nbd-2.8.4/configure.ac 2006-05-25 21:35:26.000000000 +0200
-@@ -68,7 +68,8 @@
+--- nbd-2.8.7.orig/configure.ac 2006-10-17 19:42:11.000000000 +0200
++++ nbd-2.8.7/configure.ac 2007-01-19 14:19:09.000000000 +0100
+@@ -68,15 +68,16 @@
man8_MANS=nbd-client.8
AC_MSG_RESULT(yes)
;;
@@ -17,21 +17,20 @@ Index: nbd-2.8.4/configure.ac
esac
AC_MSG_CHECKING(where to find a working nbd.h)
dnl We need to check for NBD_CMD_DISC, but that's part of an enum, it is not
-@@ -82,8 +83,8 @@
- [int foo=NBD_CMD_DISC],
- [AC_DEFINE(NBD_H_LOCAL, 1, Set to 1 if a (kernel 2.6) nbd.h can be found in the current directory)
- NBD_H='"nbd.h"'],
-- AC_TRY_COMPILE([#define u32 int
+ dnl #define'd. Therefore, we check for something which is differently #define'd
+ dnl in the old or new versions, even if we don't really care about that.
+ dnl This might break at some time, but it should work for now, so...
+-AC_TRY_COMPILE([#define u32 int
-#define u64 int
-+ AC_TRY_COMPILE([#define __u32 int
++AC_TRY_COMPILE([#define __u32 int
+#define __u64 int
- #include <linux/nbd.h>
- ],
- [int foo=NBD_CMD_DISC],
-Index: nbd-2.8.4/cliserv.h
+ #define __be32 int
+ #define __be64 int
+ #include "nbd.h"
+Index: nbd-2.8.7/cliserv.h
===================================================================
---- nbd-2.8.4.orig/cliserv.h 2006-01-06 18:02:03.000000000 +0100
-+++ nbd-2.8.4/cliserv.h 2006-05-25 21:41:25.000000000 +0200
+--- nbd-2.8.7.orig/cliserv.h 2006-10-17 19:29:12.000000000 +0200
++++ nbd-2.8.7/cliserv.h 2007-01-19 14:17:15.000000000 +0100
@@ -17,20 +17,26 @@
#if SIZEOF_UNSIGNED_SHORT_INT==4
diff --git a/packages/nbd/nbd_2.8.4.bb b/packages/nbd/nbd_2.8.4.bb
deleted file mode 100644
index 103c2053c7..0000000000
--- a/packages/nbd/nbd_2.8.4.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "Network Block Device"
-LICENSE = "GPLv2"
-HOMEPAGE = "http://nbd.sourceforge.net"
-
-DEPENDS = "glib-2.0"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.bz2;md5sum=1b5a0866d025b98d1c24fe19a4f628c3 \
- file://cross-compile.patch;patch=1 "
-
-inherit autotools
-
-
-PACKAGES = "nbd-client nbd-server"
-PACKAGES += "nbd-client-doc nbd-server-doc"
-
-FILES_nbd-client = "/usr/sbin/nbd-client"
-FILES_nbd-server = "/usr/bin/nbd-server"
-FILES_nbd-client-doc = "/usr/share/man/man8/*"
-FILES_nbd-server-doc = "/usr/share/man/man1/*"
diff --git a/packages/nbd/nbd_2.8.7.bb b/packages/nbd/nbd_2.8.7.bb
new file mode 100644
index 0000000000..2241fea71e
--- /dev/null
+++ b/packages/nbd/nbd_2.8.7.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Network Block Device"
+LICENSE = "GPLv2"
+HOMEPAGE = "http://nbd.sourceforge.net"
+
+DEPENDS = "glib-2.0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.bz2;md5sum=bc7995b4961385269abc645575bcaf4d \
+ file://cross-compile.patch;patch=1 "
+
+inherit autotools
+
+
+PACKAGES = "nbd-client nbd-server nbd-client-dbg nbd-server-dbg"
+PACKAGES += "nbd-client-doc nbd-server-doc"
+
+FILES_nbd-client = "/usr/sbin/nbd-client"
+FILES_nbd-server = "/usr/bin/nbd-server"
+FILES_nbd-client-dbg = "/usr/sbin/.debug/nbd-client"
+FILES_nbd-server-dbg = "/usr/bin/.debug/nbd-server"
+FILES_nbd-client-doc = "/usr/share/man/man8/*"
+FILES_nbd-server-doc = "/usr/share/man/man1/*"
diff --git a/packages/neon/files/gnutls-force-and-detect.patch b/packages/neon/files/gnutls-force-and-detect.patch
new file mode 100644
index 0000000000..4c794ba138
--- /dev/null
+++ b/packages/neon/files/gnutls-force-and-detect.patch
@@ -0,0 +1,23 @@
+diff --git a/macros/neon.m4 b/macros/neon.m4
+index 01072b9..6d3258f 100644
+--- a/macros/neon.m4
++++ b/macros/neon.m4
+@@ -886,15 +886,11 @@ yes|openssl)
+ NEON_EXTRAOBJS="$NEON_EXTRAOBJS ne_openssl"
+ ;;
+ gnutls)
+- AC_MSG_ERROR([GNU TLS support is not yet complete])
++ dnl AC_MSG_ERROR([GNU TLS support is not yet complete])
+
+- AC_PATH_PROG(GNUTLS_CONFIG, libgnutls-config, no)
++ GNUTLS_CONFIG="pkg-config gnutls"
+
+- if test "$GNUTLS_CONFIG" = "no"; then
+- AC_MSG_ERROR([could not find libgnutls-config in \$PATH])
+- fi
+-
+- ne_gnutls_ver=`$GNUTLS_CONFIG --version`
++ ne_gnutls_ver=`$GNUTLS_CONFIG --modversion`
+ case $ne_gnutls_ver in
+ 1.0.?|1.0.1?|1.0.20|1.0.21)
+ AC_MSG_ERROR([GNU TLS version $ne_gnutls_ver is too old -- 1.0.22 or later required]) ;;
diff --git a/packages/neon/neon_0.25.5.bb b/packages/neon/neon_0.25.5.bb
index d73081e249..f935fdb222 100644
--- a/packages/neon/neon_0.25.5.bb
+++ b/packages/neon/neon_0.25.5.bb
@@ -2,15 +2,16 @@ DESCRIPTION = "neon is an HTTP and WebDAV client library, with a C interface."
HOMEPAGE = "http://www.webdav.org/neon"
SECTION = "libs"
LICENSE = "LGPL"
-DEPENDS = "zlib libxml2 expat time"
+DEPENDS = "zlib libxml2 expat time gnutls"
-PR = "r1"
+PR = "r3"
-SRC_URI = "http://be.lunar-linux.org/lunar/cache/neon-${PV}.tar.gz"
+SRC_URI = "http://www.webdav.org/${PN}/${P}.tar.gz \
+ file://gnutls-force-and-detect.patch;patch=1"
-inherit autotools binconfig lib_package
+inherit autotools binconfig lib_package pkgconfig
-EXTRA_OECONF = "--without-ssl --with-libxml2 --with-expat --enable-shared"
+EXTRA_OECONF = "--with-ssl=gnutls --with-libxml2 --with-expat --enable-shared"
do_stage() {
autotools_stage_all
diff --git a/packages/net-snmp/net-snmp_5.1.2.bb b/packages/net-snmp/net-snmp_5.1.2.bb
index 302e7eed52..330e13e0ef 100644
--- a/packages/net-snmp/net-snmp_5.1.2.bb
+++ b/packages/net-snmp/net-snmp_5.1.2.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Various tools relating to the Simple Network Management Protocol"
HOMEPAGE = "http://www.net-snmp.org/"
LICENSE = "BSD"
DEPENDS = "openssl"
-PR = "r2"
+PR = "r3"
SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \
file://uclibc-fix.patch;patch=1 \
@@ -13,7 +13,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \
inherit autotools
PARALLEL_MAKE = ""
-EXTRA_OECONF = "--enable-shared --disable-manuals"
+EXTRA_OECONF = "--enable-shared --disable-manuals --with-defaults"
EXTRA_OEMAKE = "INSTALL_PREFIX=${D}"
do_configure() {
diff --git a/packages/netatalk/.mtn2git_empty b/packages/netatalk/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netatalk/.mtn2git_empty
diff --git a/packages/netatalk/files/.mtn2git_empty b/packages/netatalk/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netatalk/files/.mtn2git_empty
diff --git a/packages/netatalk/files/init b/packages/netatalk/files/init
new file mode 100755
index 0000000000..926f9bbb1e
--- /dev/null
+++ b/packages/netatalk/files/init
@@ -0,0 +1,111 @@
+#!/sbin/runscript
+
+# AppleTalk daemons. Make sure not to start atalkd in the background:
+# its data structures must have time to stablize before running the
+# other processes.
+
+depend() {
+ need net
+ use logger dns
+}
+
+atalk_startup () {
+# . /etc/netatalk/netatalk.conf
+
+ if [ "${ATALKD_RUN}" != "no" ]; then
+ ebegin "Starting atalkd"
+ start-stop-daemon --start --quiet --exec /usr/sbin/atalkd
+ eend $?
+
+ for reg in \
+ "${ATALK_NAME}:Workstation${ATALK_ZONE}" \
+ "${ATALK_NAME}:netatalk${ATALK_ZONE}"
+ do
+ ebegin " Registering $reg"
+ /usr/bin/nbprgstr "$reg"
+ eend $?
+ done
+
+ if [ "${PAPD_RUN}" = "yes" ]; then
+ ebegin " Starting papd"
+ start-stop-daemon --start --quiet --exec /usr/sbin/papd
+ eend $?
+ fi
+
+ fi
+
+ if [ "${CNID_METAD_RUN}" = "yes" ] ; then
+ ebegin "Starting cnid_metad"
+ start-stop-daemon --start --quiet --exec /usr/sbin/cnid_metad
+ eend $?
+ fi
+
+
+ if [ "${AFPD_RUN}" = "yes" ]; then
+ ebegin "Starting afpd"
+ start-stop-daemon --start --quiet --exec /usr/sbin/afpd -- \
+ ${AFPD_UAMLIST} -g ${AFPD_GUEST} -c ${AFPD_MAX_CLIENTS} \
+ -n "${ATALK_NAME}${ATALK_ZONE}"
+ eend $?
+ fi
+
+ if [ "${TIMELORD_RUN}" = "yes" ]; then
+ ebegin "Starting timelord"
+ start-stop-daemon --start --quiet --exec /usr/sbin/timelord
+ eend $?
+ fi
+}
+
+start () {
+ . /etc/netatalk/netatalk.conf
+
+ if [ x"${ATALK_BGROUND}" = x"yes" ]; then
+ echo "Starting netatalk in the background ... "
+ atalk_startup >& /dev/null &
+ else
+ atalk_startup
+ fi
+}
+
+stop () {
+ . /etc/netatalk/netatalk.conf
+
+ if [ "${AFPD_RUN}" = "yes" ]; then
+ ebegin "Stopping afpd"
+ start-stop-daemon --stop --quiet --exec /usr/sbin/afpd
+ eend $?
+ fi
+
+ if [ "${TIMELORD_RUN}" = "yes" ]; then
+ ebegin "Stopping timelord"
+ start-stop-daemon --stop --quiet --exec /usr/sbin/timelord
+ eend $?
+ fi
+
+ if [ "${ATALKD_RUN}" != "no" ]; then
+ if [ "${PAPD_RUN}" = "yes" ]; then
+ ebegin "Stopping papd"
+ start-stop-daemon --stop --quiet --exec /usr/sbin/papd
+ eend $?
+ fi
+
+ for reg in \
+ "${ATALK_NAME}:Workstation${ATALK_ZONE}" \
+ "${ATALK_NAME}:netatalk${ATALK_ZONE}"
+ do
+ ebegin "Unregistering $reg"
+ /usr/bin/nbpunrgstr "$reg"
+ eend $?
+ done
+
+ ebegin "Stopping atalkd"
+ start-stop-daemon --stop --quiet --exec /usr/sbin/atalkd
+ eend $?
+ fi
+
+ if [ "${CNID_METAD_RUN}" = "yes" ] ; then
+ ebegin "Stopping cnid_metad"
+ start-stop-daemon --stop --quiet --exec /usr/sbin/cnid_metad
+ eend $?
+ fi
+}
diff --git a/packages/netatalk/netatalk-2.0.3/.mtn2git_empty b/packages/netatalk/netatalk-2.0.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netatalk/netatalk-2.0.3/.mtn2git_empty
diff --git a/packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-db43.patch b/packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-db43.patch
new file mode 100644
index 0000000000..93d3e4b9ea
--- /dev/null
+++ b/packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-db43.patch
@@ -0,0 +1,32 @@
+Index: netatalk-2.0.3/bin/cnid/cnid_index.c
+===================================================================
+--- netatalk-2.0.3.orig/bin/cnid/cnid_index.c
++++ netatalk-2.0.3/bin/cnid/cnid_index.c
+@@ -274,7 +274,11 @@ static int dbif_count(const int dbi, u_i
+ DB_BTREE_STAT *sp;
+ DB *db = db_table[dbi].db;
+
++#if DB_VERSION_MAJOR > 4 || ( DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3 )
++ ret = db->stat(db, db_txn, &sp, 0);
++#else
+ ret = db->stat(db, &sp, 0);
++#endif
+
+ if (ret) {
+ LOG(log_error, logtype_cnid, "error getting stat infotmation on database: %s", db_strerror(errno));
+Index: netatalk-2.0.3/etc/cnid_dbd/dbif.c
+===================================================================
+--- netatalk-2.0.3.orig/etc/cnid_dbd/dbif.c
++++ netatalk-2.0.3/etc/cnid_dbd/dbif.c
+@@ -514,7 +514,11 @@ int dbif_count(const int dbi, u_int32_t
+ DB_BTREE_STAT *sp;
+ DB *db = db_table[dbi].db;
+
++#if DB_VERSION_MAJOR > 4 || ( DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3 )
++ ret = db->stat(db, db_txn, &sp, 0);
++#else
+ ret = db->stat(db, &sp, 0);
++#endif
+
+ if (ret) {
+ LOG(log_error, logtype_cnid, "error getting stat infotmation on database: %s", db_strerror(errno));
diff --git a/packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-newerdb.patch b/packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-newerdb.patch
new file mode 100644
index 0000000000..f64c8cf5eb
--- /dev/null
+++ b/packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-newerdb.patch
@@ -0,0 +1,28 @@
+Index: netatalk-2.0.3/macros/db3-check.m4
+===================================================================
+--- netatalk-2.0.3.orig/macros/db3-check.m4
++++ netatalk-2.0.3/macros/db3-check.m4
+@@ -115,6 +115,14 @@ int main(void) {
+ AC_DEFUN([NETATALK_BERKELEY_LINK],
+ [
+ atalk_cv_lib_db=no
++NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_dot_4,[-ldb-4.4])
++NETATALK_BDB_LINK_TRY(atalk_cv_db_db44,[-ldb44])
++NETATALK_BDB_LINK_TRY(atalk_cv_db_db_44,[-ldb-44])
++NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_4,[-ldb-4-4])
++NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_dot_3,[-ldb-4.3])
++NETATALK_BDB_LINK_TRY(atalk_cv_db_db43,[-ldb43])
++NETATALK_BDB_LINK_TRY(atalk_cv_db_db_43,[-ldb-43])
++NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_3,[-ldb-4-3])
+ NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_dot_2,[-ldb-4.2])
+ NETATALK_BDB_LINK_TRY(atalk_cv_db_db42,[-ldb42])
+ NETATALK_BDB_LINK_TRY(atalk_cv_db_db_42,[-ldb-42])
+@@ -134,7 +142,7 @@ AC_DEFUN([AC_PATH_BDB],
+ trybdbdir=""
+ dobdbsearch=yes
+ bdb_search_dirs="/usr/local/include /usr/include"
+- search_subdirs="/db4.2 /db42 /db4.1 /db41 /db4 /"
++ search_subdirs="/db4.4 /db44 /db4.3 /db43 /db4.2 /db42 /db4.1 /db41 /db4 /"
+
+ dnl required BDB version
+ DB_MAJOR_REQ=4
diff --git a/packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-setXid.patch b/packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-setXid.patch
new file mode 100644
index 0000000000..70170c134d
--- /dev/null
+++ b/packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-setXid.patch
@@ -0,0 +1,14 @@
+Index: netatalk-2.0.3/bin/afppasswd/Makefile.am
+===================================================================
+--- netatalk-2.0.3.orig/bin/afppasswd/Makefile.am
++++ netatalk-2.0.3/bin/afppasswd/Makefile.am
+@@ -12,7 +12,8 @@ afppasswd_SOURCES = afppasswd.c
+ afppasswd_LDADD = $(top_builddir)/libatalk/libatalk.la @SSL_LIBS@
+
+ CFLAGS = @CFLAGS@ @SSL_CFLAGS@ -I$(top_srcdir)/sys \
+- -D_PATH_AFPDPWFILE=\"$(pkgconfdir)/afppasswd\"
++ -D_PATH_AFPDPWFILE=\"$(pkgconfdir)/afppasswd\" \
++ @BINDNOW_FLAGS@
+
+ install-exec-hook:
+ if USE_DHX
diff --git a/packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-xfs.patch b/packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-xfs.patch
new file mode 100644
index 0000000000..e91ebcebd2
--- /dev/null
+++ b/packages/netatalk/netatalk-2.0.3/netatalk-2.0.3-xfs.patch
@@ -0,0 +1,22 @@
+Index: netatalk-2.0.3/configure.in
+===================================================================
+--- netatalk-2.0.3.orig/configure.in
++++ netatalk-2.0.3/configure.in
+@@ -694,12 +694,16 @@ fi
+ # AC_MSG_RESULT([enabling quotactl wrapper])
+ # )
+
++AC_ARG_WITH([xfs],
++ AS_HELP_STRING([--without-xfs], [Build without XFS filesystem quota support]))
++
++if test "x$with_xfs" != "xno"; then
+ # For quotas on Linux XFS filesystems
+ AC_CHECK_HEADERS(linux/xqm.h linux/xfs_fs.h)
+ AC_CHECK_HEADERS(xfs/libxfs.h xfs/xqm.h xfs/xfs_fs.h)
+ # For linux > 2.5.56
+ AC_CHECK_HEADERS(linux/dqblk_xfs.h)
+-
++fi
+
+ dnl ----- as far as I can tell, dbtob always does the wrong thing
+ dnl ----- on every single version of linux I've ever played with.
diff --git a/packages/netatalk/netatalk_2.0.3.bb b/packages/netatalk/netatalk_2.0.3.bb
new file mode 100644
index 0000000000..74cfd84042
--- /dev/null
+++ b/packages/netatalk/netatalk_2.0.3.bb
@@ -0,0 +1,39 @@
+DESCRIPTION = "Appletalk protocol suite"
+SECTION = "net"
+PR = "r0"
+LICENSE = "GPL"
+
+DEPENDS = "cups db openssl libpam"
+
+SRC_URI = "http://ovh.dl.sourceforge.net/sourceforge/netatalk/netatalk-${PV}.tar.gz \
+ file://netatalk-2.0.3-db43.patch;patch=1 \
+ file://netatalk-2.0.3-newerdb.patch;patch=1 \
+ file://netatalk-2.0.3-xfs.patch;patch=1 \
+ file://init \
+ "
+INITSCRIPT_NAME = "atalk"
+INITSCRIPT_PARAMS = "defaults 65"
+
+inherit autotools update-rc.d
+
+do_configure () {
+ autoreconf
+ ac_cv_header_rpcsvc_rquota_h=no LDFLAGS="-lpthread -L${STAGING_DIR}/${TARGET_SYS}/lib" ./configure \
+ --build=${BUILD_SYS} \
+ --host=${HOST_SYS} \
+ --target=${TARGET_SYS} \
+ --prefix=${prefix} \
+ --with-bdb=${STAGING_DIR}/${TARGET_SYS} \
+ --with-ssl-dir=${STAGING_DIR}/${TARGET_SYS} \
+ --without-shadow \
+ --sysconfdir=${sysconfdir} \
+ --disable-nls \
+ --disable-static \
+ --with-pam \
+ --mandir=${mandir}
+ cp ${STAGING_DIR}/${BUILD_SYS}/bin/${TARGET_SYS}-libtool ./${TARGET_SYS}-libtool
+}
+
+do_install_append() {
+ install -D -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/atalk
+}
diff --git a/packages/netbase/netbase/fic-gta01/.mtn2git_empty b/packages/netbase/netbase/fic-gta01/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/fic-gta01/.mtn2git_empty
diff --git a/packages/netbase/netbase/fic-gta01/interfaces b/packages/netbase/netbase/fic-gta01/interfaces
new file mode 100644
index 0000000000..090c18aa07
--- /dev/null
+++ b/packages/netbase/netbase/fic-gta01/interfaces
@@ -0,0 +1,28 @@
+# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
+
+# The loopback interface
+auto lo
+iface lo inet loopback
+
+# Wireless interfaces
+iface wlan0 inet dhcp
+wireless_mode managed
+wireless_essid any
+iface atml0 inet dhcp
+
+# Wired or wireless interfaces
+iface eth0 inet dhcp
+iface eth1 inet dhcp
+
+# Ethernet/RNDIS gadget (g_ether)
+# ... or on host side, usbnet and random hwaddr
+auto usb0
+iface usb0 inet static
+ address 192.168.0.202
+ netmask 255.255.255.0
+ network 192.168.0.0
+ gateway 192.168.0.200
+
+# Bluetooth networking
+iface bnep0 inet dhcp
+
diff --git a/packages/netbase/netbase/foonas/.mtn2git_empty b/packages/netbase/netbase/foonas/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/foonas/.mtn2git_empty
diff --git a/packages/netbase/netbase/foonas/interfaces b/packages/netbase/netbase/foonas/interfaces
new file mode 100644
index 0000000000..314715bba7
--- /dev/null
+++ b/packages/netbase/netbase/foonas/interfaces
@@ -0,0 +1,13 @@
+# /etc/network/interfaces
+# configuration file for ifup(8), ifdown(8)
+#
+# The loopback interface
+auto lo
+iface lo inet loopback
+
+#
+# The interface used by default during boot
+auto eth0
+iface eth0 inet dhcp
+ address 192.168.1.16
+
diff --git a/packages/netbase/netbase/if-down.d/.mtn2git_empty b/packages/netbase/netbase/if-down.d/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/if-down.d/.mtn2git_empty
diff --git a/packages/netbase/netbase/if-post-down.d/.mtn2git_empty b/packages/netbase/netbase/if-post-down.d/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/if-post-down.d/.mtn2git_empty
diff --git a/packages/netbase/netbase/if-pre-up.d/.mtn2git_empty b/packages/netbase/netbase/if-pre-up.d/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/if-pre-up.d/.mtn2git_empty
diff --git a/packages/netbase/netbase/if-up.d/.mtn2git_empty b/packages/netbase/netbase/if-up.d/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/if-up.d/.mtn2git_empty
diff --git a/packages/netbase/netbase/oplinux-uclibc/.mtn2git_empty b/packages/netbase/netbase/oplinux-uclibc/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/oplinux-uclibc/.mtn2git_empty
diff --git a/packages/netbase/netbase/oplinux-uclibc/interfaces b/packages/netbase/netbase/oplinux-uclibc/interfaces
new file mode 100644
index 0000000000..673618f636
--- /dev/null
+++ b/packages/netbase/netbase/oplinux-uclibc/interfaces
@@ -0,0 +1,10 @@
+# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
+
+# The loopback interface
+auto lo
+iface lo inet loopback
+
+# Ethernet
+auto eth0
+iface eth0 inet dhcp
+
diff --git a/packages/netbase/netbase/oplinux-uclibc/options b/packages/netbase/netbase/oplinux-uclibc/options
new file mode 100644
index 0000000000..14380f4376
--- /dev/null
+++ b/packages/netbase/netbase/oplinux-uclibc/options
@@ -0,0 +1,3 @@
+ip_forward=yes
+spoofprotect=yes
+syncookies=no
diff --git a/packages/netbase/netbase/oplinux/.mtn2git_empty b/packages/netbase/netbase/oplinux/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/oplinux/.mtn2git_empty
diff --git a/packages/netbase/netbase/oplinux/interfaces b/packages/netbase/netbase/oplinux/interfaces
new file mode 100644
index 0000000000..673618f636
--- /dev/null
+++ b/packages/netbase/netbase/oplinux/interfaces
@@ -0,0 +1,10 @@
+# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
+
+# The loopback interface
+auto lo
+iface lo inet loopback
+
+# Ethernet
+auto eth0
+iface eth0 inet dhcp
+
diff --git a/packages/netbase/netbase/oplinux/options b/packages/netbase/netbase/oplinux/options
new file mode 100644
index 0000000000..14380f4376
--- /dev/null
+++ b/packages/netbase/netbase/oplinux/options
@@ -0,0 +1,3 @@
+ip_forward=yes
+spoofprotect=yes
+syncookies=no
diff --git a/packages/netbase/netbase/slugos/.mtn2git_empty b/packages/netbase/netbase/slugos/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/slugos/.mtn2git_empty
diff --git a/packages/netbase/netbase/slugos/if-down.d/.mtn2git_empty b/packages/netbase/netbase/slugos/if-down.d/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/slugos/if-down.d/.mtn2git_empty
diff --git a/packages/netbase/netbase/slugos/if-post-down.d/.mtn2git_empty b/packages/netbase/netbase/slugos/if-post-down.d/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/slugos/if-post-down.d/.mtn2git_empty
diff --git a/packages/netbase/netbase/slugos/if-pre-up.d/.mtn2git_empty b/packages/netbase/netbase/slugos/if-pre-up.d/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/slugos/if-pre-up.d/.mtn2git_empty
diff --git a/packages/netbase/netbase/slugos/if-pre-up.d/udhcpc-fix b/packages/netbase/netbase/slugos/if-pre-up.d/udhcpc-fix
new file mode 100644
index 0000000000..7d2e9705ea
--- /dev/null
+++ b/packages/netbase/netbase/slugos/if-pre-up.d/udhcpc-fix
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# This works around a problem where udhcpc times out w/o getting a lease
+# due to slow auto-negotiate.
+
+if test "$IFACE" = "eth0" -a "$METHOD" = "dhcp"
+then
+ echo -n "[sleeping 5s]..."
+ ifconfig eth0 up
+ sleep 5
+fi
+
diff --git a/packages/netbase/netbase/slugos/if-up.d/.mtn2git_empty b/packages/netbase/netbase/slugos/if-up.d/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/slugos/if-up.d/.mtn2git_empty
diff --git a/packages/netbase/netbase_4.21.bb b/packages/netbase/netbase_4.21.bb
index 8c0652daec..53c9f3d17c 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 = "r12"
+PR = "r16"
inherit update-rc.d
@@ -18,7 +18,11 @@ SRC_URI = "${DEBIAN_MIRROR}/main/n/netbase/netbase_${PV}.tar.gz \
file://options \
file://init \
file://hosts \
- file://interfaces"
+ file://interfaces \
+ file://if-pre-up.d \
+ file://if-up.d \
+ file://if-down.d \
+ file://if-post-down.d"
do_install () {
install -d ${D}${sysconfdir}/init.d \
@@ -28,6 +32,15 @@ do_install () {
${D}${sysconfdir}/network/if-up.d \
${D}${sysconfdir}/network/if-down.d \
${D}${sysconfdir}/network/if-post-down.d
+
+ for dir in if-pre-up.d if-up.d if-down.d if-post-down.d
+ do
+ for script in `ls -1 "${WORKDIR}/${dir}"`
+ do
+ install -m 0755 "${WORKDIR}/${dir}/${script}" "${D}${sysconfdir}/network/${dir}"
+ done
+ done
+
install -m 0644 ${WORKDIR}/options ${D}${sysconfdir}/network/options
install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/networking
install -m 0644 ${WORKDIR}/hosts ${D}${sysconfdir}/hosts
diff --git a/packages/netcat/netcat_0.7.1.bb b/packages/netcat/netcat_0.7.1.bb
index a6361f0731..c7ceccddf2 100644
--- a/packages/netcat/netcat_0.7.1.bb
+++ b/packages/netcat/netcat_0.7.1.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "GNU Netcat"
HOMEPAGE = "http://netcat.sourceforge.net"
+SECTION = "console/network"
LICENSE = "GPLv2"
-SECTION = "console/networking"
PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/netcat/netcat-${PV}.tar.bz2"
diff --git a/packages/netpbm/netpbm_10.28.bb b/packages/netpbm/netpbm_10.28.bb
index dde0d17d57..cfe2a5cc88 100644
--- a/packages/netpbm/netpbm_10.28.bb
+++ b/packages/netpbm/netpbm_10.28.bb
@@ -1,14 +1,14 @@
-# bitbake configuration file for NetPBM, a command line image (sampled
-# data) processing package derived from PBMPlus
-#
-# For documentation see: http://netpbm.sourceforge.net/doc/
+DESCRIPTION = "Netpbm is a toolkit for manipulation of graphic images, including\
+conversion of images between a variety of different formats. There\
+are over 220 separate tools in the package including converters for\
+about 100 graphics formats."
+HOMEPAGE = "http://netpbm.sourceforge.net"
+SECTION = "console/utils"
LICENSE = "GPL MIT Artistic"
# NOTE: individual command line utilities are covered by different
# licenses. The compiled and linked command line utilties are
# subject to the licenses of the libraries they use too - including
# libpng libz, IJG, and libtiff licenses
-
-SECTION = "console/utils"
DEPENDS = "jpeg zlib libpng tiff install-native flex-native"
RDEPENDS = "perl\
perl-module-cwd\
@@ -25,12 +25,7 @@ RDEPENDS = "perl\
RDEPENDS += "perl-module-exporter-heavy"
RDEPENDS += "perl-module-file-spec-unix"
-HOMEPAGE = "http://netpbm.sourceforge.net"
-DESCRIPTION = "Netpbm is a toolkit for manipulation of graphic images, including\
-conversion of images between a variety of different formats. There\
-are over 220 separate tools in the package including converters for\
-about 100 graphics formats."
-PR = "r3"
+PR = "r4"
SRC_URI = "${SOURCEFORGE_MIRROR}/netpbm/netpbm-${PV}.tgz \
file://ppmtojpeg.patch;patch=42 \
diff --git a/packages/networkmanager/files/99_networkmanager b/packages/networkmanager/files/99_networkmanager
index b3e7f94657..20cbcc1bca 100644
--- a/packages/networkmanager/files/99_networkmanager
+++ b/packages/networkmanager/files/99_networkmanager
@@ -1 +1 @@
-d root root 0700 /var/run/NetworkManager
+d root root 0700 /var/run/NetworkManager none
diff --git a/packages/networkmanager/networkmanager_0.6.4.bb b/packages/networkmanager/networkmanager_0.6.4.bb
index 95e85002b0..737d9544d0 100644
--- a/packages/networkmanager/networkmanager_0.6.4.bb
+++ b/packages/networkmanager/networkmanager_0.6.4.bb
@@ -1,12 +1,12 @@
DESCRIPTION = "GNOME NetworkManager port"
-SECTION = "net/misc"
+SECTION = "network/misc"
LICENSE = "GPL"
HOMEPAGE = "http://www.gnome.org"
PRIORITY = "optional"
DEPENDS = "libnl dbus dbus-glib libhal-nm libgpewidget gnome-keyring gconf-dbus wireless-tools libglade"
RDEPENDS = "wpa-supplicant iproute2 dhcdbd gnome-keyring hicolor-icon-theme"
-PR = "r4"
+PR = "r5"
SRC_URI="http://www.handhelds.org/~mmp/files/NetworkManager-${PV}-gpe.tar.gz \
file://dbus-api-fix.patch;patch=1 \
diff --git a/packages/nfs-utils/files/nfsserver b/packages/nfs-utils/files/nfsserver
index 1f1794f760..4ff75916d0 100644
--- a/packages/nfs-utils/files/nfsserver
+++ b/packages/nfs-utils/files/nfsserver
@@ -53,7 +53,7 @@ create_directories(){
#mountd
start_mountd(){
echo -n 'starting mountd: '
- start-stop-daemon --start --exec "$NFS_MOUNTD" -- "$@"
+ start-stop-daemon --start --exec "$NFS_MOUNTD" -- "-f /etc/exports $@"
echo done
}
stop_mountd(){
diff --git a/packages/nfs-utils/nfs-utils-1.0.6/kernel-2.6.18+.patch b/packages/nfs-utils/nfs-utils-1.0.6/kernel-2.6.18+.patch
new file mode 100644
index 0000000000..219bed094b
--- /dev/null
+++ b/packages/nfs-utils/nfs-utils-1.0.6/kernel-2.6.18+.patch
@@ -0,0 +1,13 @@
+--- nfs-utils-1.0.6/tools/getkversion/getkversion.c.orig 2007-02-22 12:33:54.000000000 +0000
++++ nfs-utils-1.0.6/tools/getkversion/getkversion.c 2007-02-22 12:33:56.000000000 +0000
+@@ -12,6 +12,10 @@
+ int
+ main(void) /* This is for Dan Popp ;) */
+ {
++
++#ifdef UTS_RELEASE
+ printf("%s\n", UTS_RELEASE);
++#endif
++
+ return 0;
+ }
diff --git a/packages/nfs-utils/nfs-utils_1.0.6.bb b/packages/nfs-utils/nfs-utils_1.0.6.bb
index 2072bd3157..a941843488 100644
--- a/packages/nfs-utils/nfs-utils_1.0.6.bb
+++ b/packages/nfs-utils/nfs-utils_1.0.6.bb
@@ -2,13 +2,14 @@ DESCRIPTION = "userspace utilities for kernel nfs"
PRIORITY = "optional"
SECTION = "console/network"
LICENSE = "GPL"
-PR = "r7"
+PR = "r9"
SRC_URI = "${SOURCEFORGE_MIRROR}/nfs/nfs-utils-${PV}.tar.gz \
file://acinclude-lossage.patch;patch=1 \
file://rpcgen-lossage.patch;patch=1 \
file://stat-include.patch;patch=1 \
file://nfs-utils-1.0.6-uclibc.patch;patch=1 \
+ file://kernel-2.6.18+.patch;patch=1 \
file://nfsserver \
file://forgotten-defines"
diff --git a/packages/nis/nis-all.bb b/packages/nis/nis-all.bb
index a0af47b0cb..181a06cd2e 100644
--- a/packages/nis/nis-all.bb
+++ b/packages/nis/nis-all.bb
@@ -1,12 +1,12 @@
# This meta package is a convenience to build all of the
# NIS packages.
#
-PR = "r0"
+
DESCRIPTION="NIS services"
HOMEPAGE="http://www.linux-nis.org/nis/"
-SECTION = "console/networking"
+SECTION = "console/network"
PRIORITY = "optional"
-LICENSE = "GPL-2"
+LICENSE = "GPLv2"
INHIBIT_DEFAULT_DEPS = "1"
diff --git a/packages/nis/nis.inc b/packages/nis/nis.inc
index 45232881cb..90f7ff50a0 100644
--- a/packages/nis/nis.inc
+++ b/packages/nis/nis.inc
@@ -5,9 +5,9 @@
# the rpcsvc functionality is not present in uclibc
DESCRIPTION ?= "NIS Server and Tools"
HOMEPAGE ?= "http://www.linux-nis.org/nis/"
-SECTION ?= "console/networking"
+SECTION ?= "console/network"
PRIORITY ?= "optional"
-LICENSE ?= "GPL-2"
+LICENSE ?= "GPLv2"
# Override these *after* the include file if necessary!
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/net/NIS/${P}.tar.bz2"
diff --git a/packages/nmap/nmap_3.81.bb b/packages/nmap/nmap_3.81.bb
index 478474645b..7aa5928191 100644
--- a/packages/nmap/nmap_3.81.bb
+++ b/packages/nmap/nmap_3.81.bb
@@ -3,11 +3,11 @@ HOMEPAGE = "http://www.insecure.org/nmap/"
SECTION = "console/network"
LICENSE = "GPL"
DEPENDS = "libpcap libpcre"
-PR = "r1"
+PR = "r2"
inherit autotools
-SRC_URI = "http://download.insecure.org/nmap/dist/nmap-${PV}.tar.bz2 \
+SRC_URI = "http://download.insecure.org/nmap/dist-old/nmap-${PV}.tar.bz2 \
file://autofoo.patch;patch=1 \
file://remove_gtk.patch;patch=1"
S = "${WORKDIR}/nmap-${PV}"
diff --git a/packages/nonworking/bluez-bluefw/bluez-bluefw_0.9.bb b/packages/nonworking/bluez-bluefw/bluez-bluefw_0.9.bb
index 5983b05935..0d6cfb020f 100644
--- a/packages/nonworking/bluez-bluefw/bluez-bluefw_0.9.bb
+++ b/packages/nonworking/bluez-bluefw/bluez-bluefw_0.9.bb
@@ -1,7 +1,7 @@
-SECTION="libs"
+SECTION = "libs"
SRC_URI = "http://bluez.sourceforge.net/download/${PN}-${PV}.tar.gz"
-S=${WORKDIR}/${P}
+S = ${WORKDIR}/${P}
inherit autotools
diff --git a/packages/nonworking/exult/exult_1.2.bb b/packages/nonworking/exult/exult_1.2.bb
index 2158fe5b37..449bc67eaa 100644
--- a/packages/nonworking/exult/exult_1.2.bb
+++ b/packages/nonworking/exult/exult_1.2.bb
@@ -2,15 +2,15 @@ DESCRIPTION = "Exult is a project to create an Ultima 7 game engine that runs on
capable of using the data and graphics files that come with the game. Qt/E based Palmtop Environments Edition w/ SDL"
SECTION = "opie/games"
PRIORITY = "optional"
-DEPENDS = "libsdl-qpe libsdl-mixer zlib"
+DEPENDS = "libsdl-qpe libsdl-mixer zlib freetype"
SRC_URI = "${SOURCEFORGE_MIRROR}/exult/exult-${PV}.tar.gz"
-
inherit autotools
#FIXME: Add compatible host or so, it is zaurus specific atm.
+export SDL_CONFIG = "${STAGING_BINDIR_CROSS}/sdl-config"
+
EXTRA_OECONF = "-host=arm-embeddix-linux-gnu \
- --with-sdl-prefix=${STAGING_BINDIR}/.. \
--disable-exult-studio-support \
--disable-debug \
--disable-exult-studio \
@@ -22,7 +22,7 @@ EXTRA_OECONF = "-host=arm-embeddix-linux-gnu \
--disable-kmid \
--with-vorbis-prefix=${STAGING_LIBDIR}/.. \
--with-mpeg2-prefix=${STAGING_LIBDIR}/.. \
- --with-mad-prefix=${STAGING_BINDIR}/.. "
+ --with-mad-prefix=${STAGING_BINDIR_CROSS}/.. "
#CXXFLAGS_append = " -Dmain=SDL_main"
#CFLAGS_append = " -Dmain=SDL_main"
diff --git a/packages/nonworking/icecast/icecast_2.2.0.bb b/packages/nonworking/icecast/icecast_2.2.0.bb
index c4738cb46f..c0f500ac4a 100644
--- a/packages/nonworking/icecast/icecast_2.2.0.bb
+++ b/packages/nonworking/icecast/icecast_2.2.0.bb
@@ -1,5 +1,5 @@
PR = "r4"
-LICENSE = "GPL-2"
+LICENSE = "GPLv2"
DEPENDS = "libvorbis libogg libxslt"
diff --git a/packages/nonworking/lufs/lufs_0.9.7.bb b/packages/nonworking/lufs/lufs_0.9.7.bb
index a7494318c9..58c1aa135e 100644
--- a/packages/nonworking/lufs/lufs_0.9.7.bb
+++ b/packages/nonworking/lufs/lufs_0.9.7.bb
@@ -1,16 +1,16 @@
-DESCRIPTION=Linux Userland File Systems
-SECTION=base
-PRIORITY=optional
-LICENSE=GPL
+DESCRIPTION = "Linux Userland File Systems"
+SECTION = "base"
+PRIORITY = "optional"
+LICENSE = "GPL"
-SRC_URI = ${SOURCEFORGE_MIRROR}/lufs/lufs-${PV}.tar.gz
-S = ${WORKDIR}/lufs-${PV}
+SRC_URI = "${SOURCEFORGE_MIRROR}/lufs/lufs-${PV}.tar.gz"
+S = "${WORKDIR}/lufs-${PV}"
inherit autotools
-KERNEL_VERSION=`cat ${STAGING_DIR}/target/kernel/kernel-version`
-KERNEL_SOURCE=`cat ${STAGING_DIR}/target/kernel/kernel-source`
-KERNEL_PATH=${STAGING_DIR}/target/kernel
+KERNEL_VERSION = "`cat ${STAGING_DIR}/target/kernel/kernel-version`"
+KERNEL_SOURCE = "`cat ${STAGING_DIR}/target/kernel/kernel-source`"
+KERNEL_PATH = "${STAGING_DIR}/target/kernel"
-EXTRA_OECONF = --with-kernel=${KERNEL_VERSION} --with-kheaders=${STAGING_DIR}/target/kernel/include
+EXTRA_OECONF = " --with-kernel=${KERNEL_VERSION} --with-kheaders=${STAGING_DIR}/target/kernel/include"
diff --git a/packages/nonworking/pixdev/pixdev-stable_0.1.bb b/packages/nonworking/pixdev/pixdev-stable_0.1.bb
index 4c7eccf659..9542c668b9 100644
--- a/packages/nonworking/pixdev/pixdev-stable_0.1.bb
+++ b/packages/nonworking/pixdev/pixdev-stable_0.1.bb
@@ -1,11 +1,11 @@
-DESCRIPTION="Pixil Operating Environment"
-SECTION="gui"
-PRIORITY="optional"
-RDEPENDS="microwindows"
-DEPENDS="microwindows"
+DESCRIPTION = "Pixil Operating Environment"
+SECTION = "gui"
+PRIORITY = "optional"
+DEPENDS = "microwindows"
+RDEPENDS = "microwindows"
-SRC_URI="${SOURCEFORGE_MIRROR}/pixdev/pixdev-stable-${PV}.tar.gz \
- file://${FILESDIR}/braces.patch;patch=1"
+SRC_URI = "${SOURCEFORGE_MIRROR}/pixdev/pixdev-stable-${PV}.tar.gz \
+ file://${FILESDIR}/braces.patch;patch=1"
export EXTRA_OEMAKE=
inherit autotools
diff --git a/packages/nonworking/python/python-gsl_0.2.0.bb b/packages/nonworking/python/python-gsl_0.2.0.bb
index f607a29acb..ddb901532d 100644
--- a/packages/nonworking/python/python-gsl_0.2.0.bb
+++ b/packages/nonworking/python/python-gsl_0.2.0.bb
@@ -1,13 +1,13 @@
-DESCRIPTION=GNU Scientific Library Python Bindings
-SECTION=base
-PRIORITY=optional
-RDEPENDS=python-core gsl
-DEPENDS=gsl
-SRCNAME=pygsl
+DESCRIPTION = "GNU Scientific Library Python Bindings"
+SECTION = "base"
+PRIORITY = "optional"
+DEPENDS = "gsl"
+RDEPENDS = "python-core gsl"
+SRCNAME = "pygsl"
-SRC_URI = ${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
- file://${FILESDIR}/cross-compile.patch;patch=1
-S = ${WORKDIR}/${SRCNAME}-${PV}
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
+ file://${FILESDIR}/cross-compile.patch;patch=1"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
inherit distutils
diff --git a/packages/nonworking/qualendar/qualendar_0.8.0.bb b/packages/nonworking/qualendar/qualendar_0.8.0.bb
index 0d6a5cbb99..67d6f9cae9 100644
--- a/packages/nonworking/qualendar/qualendar_0.8.0.bb
+++ b/packages/nonworking/qualendar/qualendar_0.8.0.bb
@@ -1,10 +1,10 @@
-DESCRIPTION="DVI Viewer for Opie/Qtopia"
-SECTION="base"
-PRIORITY="optional"
-LICENSE="GPL"
+DESCRIPTION= " DVI Viewer for Opie/Qtopia"
+SECTION = "base"
+PRIORITY = "optional"
+LICENSE = "GPL"
-SRC_URI = http://ichitokumei.hp.infoseek.co.jp/${PN}/source/${P}.tar.gz
-S = ${WORKDIR}/${PN}/src
+SRC_URI = "http://ichitokumei.hp.infoseek.co.jp/${PN}/source/${P}.tar.gz"
+S = "${WORKDIR}/${PN}/src"
inherit palmtop
diff --git a/packages/nonworking/snmpz/snmpz_1.1.bb b/packages/nonworking/snmpz/snmpz_1.1.bb
index b49989f89c..0e3cd74c69 100644
--- a/packages/nonworking/snmpz/snmpz_1.1.bb
+++ b/packages/nonworking/snmpz/snmpz_1.1.bb
@@ -1,9 +1,9 @@
-DESCRIPTION="A MIB Browser for Opie/Qtopia"
-SECTION="base"
-PRIORITY="optional"
-LICENSE="GPL"
-DEPENDS=virtual/libqpe snmp++
+DESCRIPTION = "A MIB Browser for Opie/Qtopia"
+SECTION = "base"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "virtual/libqpe snmp++"
-SRC_URI = ${SOURCEFORGE_MIRROR}/${PN}/SNMPz-${PV}.tar.gz
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/SNMPz-${PV}.tar.gz"
S = "${WORKDIR}/SNMPz-${PV}"
diff --git a/packages/nonworking/unison/unison_2.9.1.bb b/packages/nonworking/unison/unison_2.9.1.bb
index 8405019317..326fb39b08 100644
--- a/packages/nonworking/unison/unison_2.9.1.bb
+++ b/packages/nonworking/unison/unison_2.9.1.bb
@@ -1,6 +1,6 @@
-DESCRIPTION=Unison is a file-synchronization tool for Unix and Windows.
-SECTION=net
-PRIORITY=optional
+DESCRIPTION = "Unison is a file-synchronization tool for Unix and Windows."
+SECTION = "net"
+PRIORITY = "optional"
-SRC_URI = ${DEBIAN_MIRROR}/main/u/${PN}/${PN}_${PV}.orig.tar.gz \
- file://${FILESDIR}/debian.patch;patch=1
+SRC_URI = "${DEBIAN_MIRROR}/main/u/${PN}/${PN}_${PV}.orig.tar.gz \
+ file://${FILESDIR}/debian.patch;patch=1"
diff --git a/packages/nonworking/xfree86/xfree86_4.3.0.bb b/packages/nonworking/xfree86/xfree86_4.3.0.bb
index 8fc7a0868b..02ef88f326 100644
--- a/packages/nonworking/xfree86/xfree86_4.3.0.bb
+++ b/packages/nonworking/xfree86/xfree86_4.3.0.bb
@@ -1,6 +1,6 @@
-SECTION="base"
-PRIORITY="required"
-DEPENDS=zlib tslib ncurses
+SECTION = "base"
+PRIORITY = "required"
+DEPENDS = "zlib tslib ncurses"
SRC_URI = "ftp://ftp.xfree86.org/pub/XFree86/4.3.0/source/X430src-1.tgz;"
SRC_URI_append =" ftp://ftp.xfree86.org/pub/XFree86/4.3.0/source/X430src-2.tgz;"
@@ -9,7 +9,7 @@ SRC_URI_append =" file://${FILESDIR}/tinyx-kbd-enable-fix.patch;patch=1"
SRC_URI_append =" file://${FILESDIR}/tinyx-tslib-reset-and-vt-switch-fixes.patch;patch=1"
SRC_URI_append =" file://${FILESDIR}/dirty-3.2-xterm-breakage-fix.patch;patch=1"
-S=${WORKDIR}/xc
+S = "${WORKDIR}/xc"
do_configure() {
diff --git a/packages/notification-daemon/files/.mtn2git_empty b/packages/notification-daemon/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/notification-daemon/files/.mtn2git_empty
diff --git a/packages/notification-daemon/files/dbus-glib-tool-prefix.patch b/packages/notification-daemon/files/dbus-glib-tool-prefix.patch
new file mode 100644
index 0000000000..bfe06f7737
--- /dev/null
+++ b/packages/notification-daemon/files/dbus-glib-tool-prefix.patch
@@ -0,0 +1,13 @@
+Index: notification-daemon-0.3.6/src/Makefile.am
+===================================================================
+--- notification-daemon-0.3.6.orig/src/Makefile.am 2007-01-15 16:25:37.000000000 +0100
++++ notification-daemon-0.3.6/src/Makefile.am 2007-01-15 16:26:01.000000000 +0100
+@@ -13,7 +13,7 @@
+ BUILT_SOURCES = notificationdaemon-dbus-glue.h
+
+ notificationdaemon-dbus-glue.h: notificationdaemon.xml
+- dbus-binding-tool --mode=glib-server \
++ dbus-binding-tool --mode=glib-server --prefix= \
+ $(srcdir)/notificationdaemon.xml > notificationdaemon-dbus-glue.h
+
+ INCLUDES = \
diff --git a/packages/notification-daemon/notification-daemon_0.3.4.bb b/packages/notification-daemon/notification-daemon_0.3.4.bb
deleted file mode 100644
index 8acabfae73..0000000000
--- a/packages/notification-daemon/notification-daemon_0.3.4.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "a dbus service that listens to desktop notification requests and displays them"
-HOMEPAGE = "http://www.galago-project.org/"
-LICENSE = "GPL"
-DEPENDS = "gettext dbus gtk+ libsexy gconf libwnck"
-
-PACKAGES = "${PN}"
-FILES_${PN} = "${libexecdir}/notification-daemon \
- ${datadir}/dbus-1/services/notification-daemon.service \
- ${libdir}/notification-daemon-1.0/engines/libstandard.so \
- ${sysconfdir}/gconf/schemas/notification-daemon.schemas"
-
-SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${P}.tar.gz"
-EXTRA_OECONF = "--disable-binreloc"
-
-inherit autotools pkgconfig
diff --git a/packages/notification-daemon/notification-daemon_0.3.5.bb b/packages/notification-daemon/notification-daemon_0.3.5.bb
index 8acabfae73..791c285aed 100644
--- a/packages/notification-daemon/notification-daemon_0.3.5.bb
+++ b/packages/notification-daemon/notification-daemon_0.3.5.bb
@@ -1,7 +1,7 @@
-DESCRIPTION = "a dbus service that listens to desktop notification requests and displays them"
-HOMEPAGE = "http://www.galago-project.org/"
-LICENSE = "GPL"
-DEPENDS = "gettext dbus gtk+ libsexy gconf libwnck"
+DESCRIPTION = "a dbus service that listens to desktop notification requests and displays them"
+HOMEPAGE = "http://www.galago-project.org/"
+LICENSE = "GPL"
+DEPENDS = "gettext dbus gtk+ libsexy gconf libwnck"
PACKAGES = "${PN}"
FILES_${PN} = "${libexecdir}/notification-daemon \
@@ -9,7 +9,7 @@ FILES_${PN} = "${libexecdir}/notification-daemon \
${libdir}/notification-daemon-1.0/engines/libstandard.so \
${sysconfdir}/gconf/schemas/notification-daemon.schemas"
-SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${P}.tar.gz"
-EXTRA_OECONF = "--disable-binreloc"
+SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${P}.tar.gz"
+EXTRA_OECONF = "--disable-binreloc"
inherit autotools pkgconfig
diff --git a/packages/notification-daemon/notification-daemon_0.3.6.bb b/packages/notification-daemon/notification-daemon_0.3.6.bb
new file mode 100644
index 0000000000..8ee89ea847
--- /dev/null
+++ b/packages/notification-daemon/notification-daemon_0.3.6.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "a dbus service that listens to desktop notification requests and displays them"
+HOMEPAGE = "http://www.galago-project.org/"
+LICENSE = "GPL"
+DEPENDS = "gettext dbus gtk+ libsexy gconf libwnck"
+
+PACKAGES = "${PN}"
+FILES_${PN} = "${libexecdir}/notification-daemon \
+ ${datadir}/dbus-1/services/notification-daemon.service \
+ ${libdir}/notification-daemon-1.0/engines/libstandard.so \
+ ${sysconfdir}/gconf/schemas/notification-daemon.schemas"
+
+SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${P}.tar.gz \
+ file://dbus-glib-tool-prefix.patch;patch=1"
+EXTRA_OECONF = "--disable-binreloc"
+
+inherit autotools pkgconfig
diff --git a/packages/nslu2-binary-only/unslung-rootfs/unsling b/packages/nslu2-binary-only/unslung-rootfs/unsling
index 6c4dc4ca52..539a1d2b58 100755
--- a/packages/nslu2-binary-only/unslung-rootfs/unsling
+++ b/packages/nslu2-binary-only/unslung-rootfs/unsling
@@ -182,9 +182,7 @@ if ! [ -d $targ/public ] || ! [ -f $targconf/.dongle ] || ! [ -f $targconf/passw
echo "the device, or the formatting of the device."
exit 1
fi
-# /usr/bin/find / -xdev -print | /usr/bin/cpio -p -d -m -u $targ
-# rm -rf $targ/dev ; mv $targ/dev.state $targ/dev
-# rm -rf $targ/var ; mv $targ/var.state $targ/var
+
echo "./var/tmp" > /tmp/xfile
echo "./dev.state" >> /tmp/xfile
echo "./var.state" >> /tmp/xfile
diff --git a/packages/ntfs-3g/.mtn2git_empty b/packages/ntfs-3g/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ntfs-3g/.mtn2git_empty
diff --git a/packages/ntfs-3g/ntfs-3g_1.0.bb b/packages/ntfs-3g/ntfs-3g_1.0.bb
new file mode 100644
index 0000000000..7d73b79ac9
--- /dev/null
+++ b/packages/ntfs-3g/ntfs-3g_1.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "The NTFS-3G driver is an open source, freely available NTFS driver for Linux with read and write support."
+HOMEPAGE = "http://www.ntfs-3g.org/"
+LICENSE = "GPLv2"
+DEPENDS = "fuse"
+RDEPENDS = "fuse"
+PR = "r0"
+
+SRC_URI = http://www.ntfs-3g.org/ntfs-3g-${PV}.tgz
+
+inherit autotools
+
+EXTRA_OEMAKE = "LDCONFIG=echo"
diff --git a/packages/ntpclient/.mtn2git_empty b/packages/ntpclient/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ntpclient/.mtn2git_empty
diff --git a/packages/ntpclient/files/.mtn2git_empty b/packages/ntpclient/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ntpclient/files/.mtn2git_empty
diff --git a/packages/ntpclient/files/init b/packages/ntpclient/files/init
new file mode 100644
index 0000000000..7b859026cd
--- /dev/null
+++ b/packages/ntpclient/files/init
@@ -0,0 +1,42 @@
+#! /bin/sh
+#
+# This is an init script for openembedded
+# Copy it to /etc/init.d/ntpclient and type
+# > update-rc.d ntpclient defaults 60
+#
+ntpclient=/sbin/ntpclient
+test -x "$ntpclient" || exit 0
+# Seconds Between Time Checks
+ntpinterval=600
+# Upstream NTP Server Name
+ntpserver=pool.ntp.org
+
+case "$1" in
+ start)
+ echo -n "Starting NTP Client"
+ start-stop-daemon --start --quiet --background --make-pidfile --pidfile /var/run/ntpclient.pid --exec $ntpclient -- -l -i $ntpinterval -h $ntpserver
+ echo "."
+ ;;
+ stop)
+ echo -n "Stopping NTP Client"
+ start-stop-daemon --stop --quiet --pidfile /var/run/ntpclient.pid
+ echo "."
+ ;;
+ reload|force-reload)
+ start-stop-daemon --stop --quiet --signal 1 --exec $ntpclient
+ ;;
+ restart)
+ echo -n "Stopping NTP Client"
+ start-stop-daemon --stop --quiet --pidfile /var/run/ntpclient.pid
+ echo "."
+ sleep 1
+ echo -n "Starting NTP Client"
+ start-stop-daemon --start --quiet --background --make-pidfile --pidfile /var/run/ntpclient.pid --exec $ntpclient -- -l -i $ntpinterval -h $ntpserver
+ echo "."
+ ;;
+ *)
+ echo "Usage: /etc/init.d/ntpclient {start|stop|reload|restart|force-reload}"
+ exit 1
+esac
+
+exit 0
diff --git a/packages/ntpclient/ntpclient_2003_194.bb b/packages/ntpclient/ntpclient_2003_194.bb
new file mode 100644
index 0000000000..52143baee0
--- /dev/null
+++ b/packages/ntpclient/ntpclient_2003_194.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "NTP (RFC-1305) client for unix-alike computers"
+HOMEPAGE = "http://doolittle.icarus.com/ntpclient"
+AUTHOR = "Larry Doolittle <larry@doolittle.boa.org>"
+RDEPENDS = "busybox"
+SECTION = "admin"
+LICENSE = "GPL/v2"
+PR = "r1"
+# The ntpclient package uses version numbers that include an underscore :(
+PV = "2003_194"
+# ntpclient unpacks into a directory that doesn't include version info :(
+S = "${WORKDIR}/${PN}"
+
+SRC_URI = "http://doolittle.icarus.com/ntpclient/ntpclient_${PV}.tar.gz \
+ file://init"
+
+INITSCRIPT_NAME = "ntpclient"
+INITSCRIPT_PARAMS = "defaults 65"
+inherit update-rc.d
+
+do_compile() {
+ oe_runmake ntpclient
+ oe_runmake adjtimex
+}
+
+do_install () {
+ # Install the binary and tools
+ install -D -m 0755 ${S}/ntpclient ${D}${base_sbindir}/ntpclient
+ install -D -m 0755 ${S}/adjtimex ${D}${base_sbindir}/adjtimex
+ install -D -m 0755 ${S}/rate.awk ${D}${sbindir}/ntpclient-drift-rate.awk
+ install -D -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/ntpclient
+}
+
diff --git a/packages/nunome/nunome_1.0.1.bb b/packages/nunome/nunome_1.0.1.bb
deleted file mode 100644
index 373f30f571..0000000000
--- a/packages/nunome/nunome_1.0.1.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "Japanese input method plugin"
-SECTION = "opie/inputmethods"
-PRIORITY = "optional"
-LICENSE = "GPL"
-HOMEPAGE = "http://www.sikigami.com/nunome-Qtopia-1.0/"
-RDEPENDS = "virtual/japanese-font"
-PR = "r1"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/gakusei/nunome-Qtopia-src-cleaned.tar.bz2 \
- file://nunome.patch;patch=1"
-S = "${WORKDIR}/nunome"
-
-inherit opie
-
-EXTRA_QMAKEVARS_POST += "INCLUDEPATH+=${S}/Nnmlib INCLUDEPATH+=${S}/ui LIBS+=-L${S}"
-OE_QMAKE_CXXFLAGS := "${@oe_filter_out('-fno-rtti', '${OE_QMAKE_CXXFLAGS}', d)}"
-PARALLEL_MAKE = ""
-
-do_configure_prepend() {
- echo -e "TEMPLATE=subdirs\nSUBDIRS=Nnmlib server ui dicman ui" >nunome.pro
- pushd Nnmlib && qmake -project -t lib && popd
- pushd server && qmake -project && echo -e "LIBS+=-lNnmlib\nTARGET=server.bin" >> server.pro && popd
- pushd dicman && qmake -project && echo -e "LIBS+=-lnunome -lNnmlib\nTARGET=dicman.bin" >> dicman.pro && popd
- pushd ui && qmake -project -t lib && echo -e "LIBS+=-lNnmlib\nTARGET=nunome" >> ui.pro && popd
- find . -name "moc*"|xargs rm -f
- find . -name "Makefile"|xargs rm -f
-}
-
-do_install() {
- install -d ${D}${palmtopdir}/lib
- install -d ${D}${palmtopdir}/bin
- install -d ${D}${palmtopdir}/i18n/ja
- install -d ${D}${palmtopdir}/share/nunome
-
- oe_libinstall -so libNnmlib ${D}${palmtopdir}/lib
- install -m 644 nunome_uni.dic ${D}${palmtopdir}/share/nunome
- install -m 755 server/nnmsrv ${D}${palmtopdir}/bin
- install -m 755 dicman/nnmDicman ${D}${palmtopdir}/bin
- install -m 644 ui/nunome.qm ${D}${palmtopdir}/i18n/ja
- install -m 644 dicman/nnmDicman.qm ${D}${palmtopdir}/i18n/ja
-}
diff --git a/packages/nunome/nunome_1.0.2.bb b/packages/nunome/nunome_1.0.2.bb
new file mode 100644
index 0000000000..ae29277291
--- /dev/null
+++ b/packages/nunome/nunome_1.0.2.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "Japanese input method plugin"
+SECTION = "opie/inputmethods"
+PRIORITY = "optional"
+LICENSE = "GPL"
+HOMEPAGE = "http://www.sikigami.com/nunome-Qtopia-1.0/"
+RDEPENDS = "virtual/japanese-font"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/gakusei/nunome-${PV}.tar.bz2 \
+ file://nunome.patch;patch=1"
+S = "${WORKDIR}/nunome"
+
+inherit opie
+
+EXTRA_QMAKEVARS_POST += "INCLUDEPATH+=${S}/Nnmlib INCLUDEPATH+=${S}/ui LIBS+=-L${S}"
+OE_QMAKE_CXXFLAGS := "${@oe_filter_out('-fno-rtti', '${OE_QMAKE_CXXFLAGS}', d)}"
+PARALLEL_MAKE = ""
+
+do_configure_prepend() {
+ echo -e "TEMPLATE=subdirs\nSUBDIRS=Nnmlib server ui dicman ui" >nunome.pro
+ pushd Nnmlib && qmake -project -t lib && popd
+ pushd server && qmake -project && echo -e "LIBS+=-lNnmlib\nTARGET=server.bin" >> server.pro && popd
+ pushd dicman && qmake -project && echo -e "LIBS+=-lnunome -lNnmlib\nTARGET=dicman.bin" >> dicman.pro && popd
+ pushd ui && qmake -project -t lib && echo -e "LIBS+=-lNnmlib\nTARGET=nunome" >> ui.pro && popd
+ find . -name "moc*"|xargs rm -f
+ find . -name "Makefile"|xargs rm -f
+}
+
+do_install() {
+ install -d ${D}${palmtopdir}/lib
+ install -d ${D}${palmtopdir}/bin
+ install -d ${D}${palmtopdir}/i18n/ja
+ install -d ${D}${palmtopdir}/share/nunome
+
+ oe_libinstall -so libNnmlib ${D}${palmtopdir}/lib
+ install -m 644 nunome_uni.dic ${D}${palmtopdir}/share/nunome
+ install -m 755 server.bin ${D}${palmtopdir}/bin/nnmsrv
+ install -m 755 dicman.bin ${D}${palmtopdir}/bin/nnmDicman
+ install -m 644 ui/nunome.qm ${D}${palmtopdir}/i18n/ja
+ install -m 644 dicman/nnmDicman.qm ${D}${palmtopdir}/i18n/ja
+}
diff --git a/packages/nylon/simple-firewall.bb b/packages/nylon/simple-firewall.bb
index 4a99d8a851..4f51f88277 100644
--- a/packages/nylon/simple-firewall.bb
+++ b/packages/nylon/simple-firewall.bb
@@ -1,18 +1,17 @@
DESCRIPTION = "simple firewall configuratiopn script"
SECTION = "base"
PRIORITY = "optional"
+MAINTAINER = "Bruno Randolf <bruno.randolf@4g-systems.biz>"
LICENSE = "GPL"
DEPENDS = "virtual/kernel"
-SRCDATE = "20060810"
+#SRCDATE = "20060114"
+SRCDATE = "20070130"
+#SRCDATE = "${TOMORROW}"
PV = "cvs${SRCDATE}"
-
-INHIBIT_PACKAGE_STRIP = "1"
-
-SRC_URI = "http://meshcube.org/nylon/unstable/sources/${PN}_gruen.4g__${SRCDATE}.tar.gz"
+SRC_URI = "svn://gruen.4g/svn/trunk/application;module=${PN};proto=http"
S = "${WORKDIR}/${PN}"
do_install() {
- install -d -m 755 ${D}
(cd ${S}; tar -c --exclude .svn -f - . ) | tar -C ${D} -xpf -
}
diff --git a/packages/obsolete/libsdl/.mtn2git_empty b/packages/obsolete/libsdl/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/libsdl/.mtn2git_empty
diff --git a/packages/obsolete/libsdl/libsdl-qpe-1.2.7/.mtn2git_empty b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/.mtn2git_empty
diff --git a/packages/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch
index b47a127398..b47a127398 100644
--- a/packages/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch
diff --git a/packages/libsdl/libsdl-qpe-1.2.7/acinclude.m4 b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/acinclude.m4
index ca2df9d5e5..ca2df9d5e5 100644
--- a/packages/libsdl/libsdl-qpe-1.2.7/acinclude.m4
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/acinclude.m4
diff --git a/packages/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch
index 7f3622ea4c..7f3622ea4c 100644
--- a/packages/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch
diff --git a/packages/libsdl/libsdl-qpe-1.2.7/fixlibs.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/fixlibs.patch
index 899e31482c..899e31482c 100644
--- a/packages/libsdl/libsdl-qpe-1.2.7/fixlibs.patch
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/fixlibs.patch
diff --git a/packages/libsdl/libsdl-qpe-1.2.7/gcc34.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/gcc34.patch
index e3738e961e..e3738e961e 100644
--- a/packages/libsdl/libsdl-qpe-1.2.7/gcc34.patch
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/gcc34.patch
diff --git a/packages/libsdl/libsdl-qpe-1.2.7/ipaq.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/ipaq.patch
index bf57953c08..bf57953c08 100644
--- a/packages/libsdl/libsdl-qpe-1.2.7/ipaq.patch
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/ipaq.patch
diff --git a/packages/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch
index 9629583f9b..9629583f9b 100644
--- a/packages/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch
diff --git a/packages/libsdl/libsdl-qpe-1.2.7/mouse.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/mouse.patch
index 99320fad0d..99320fad0d 100644
--- a/packages/libsdl/libsdl-qpe-1.2.7/mouse.patch
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/mouse.patch
diff --git a/packages/libsdl/libsdl-qpe-1.2.7/pygame.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/pygame.patch
index 4b39267a8a..4b39267a8a 100644
--- a/packages/libsdl/libsdl-qpe-1.2.7/pygame.patch
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/pygame.patch
diff --git a/packages/libsdl/libsdl-qpe_1.2.7.bb b/packages/obsolete/libsdl/libsdl-qpe_1.2.7.bb
index 60c2a9d385..60c2a9d385 100644
--- a/packages/libsdl/libsdl-qpe_1.2.7.bb
+++ b/packages/obsolete/libsdl/libsdl-qpe_1.2.7.bb
diff --git a/packages/obsolete/maemo/.mtn2git_empty b/packages/obsolete/maemo/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/maemo/.mtn2git_empty
diff --git a/packages/obsolete/maemo/gconf-osso/.mtn2git_empty b/packages/obsolete/maemo/gconf-osso/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/maemo/gconf-osso/.mtn2git_empty
diff --git a/packages/obsolete/maemo/osso-gnome-vfs2/.mtn2git_empty b/packages/obsolete/maemo/osso-gnome-vfs2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/maemo/osso-gnome-vfs2/.mtn2git_empty
diff --git a/packages/gnome/gnome-vfs-dbus/gconftool-lossage.patch b/packages/obsolete/maemo/osso-gnome-vfs2/gconftool-lossage.patch
index 3dbc130ddc..3dbc130ddc 100644
--- a/packages/gnome/gnome-vfs-dbus/gconftool-lossage.patch
+++ b/packages/obsolete/maemo/osso-gnome-vfs2/gconftool-lossage.patch
diff --git a/packages/maemo/osso-gnome-vfs2_2.8.4.4-1.bb b/packages/obsolete/maemo/osso-gnome-vfs2_2.8.4.4-1.bb
index e0f258decd..e0f258decd 100644
--- a/packages/maemo/osso-gnome-vfs2_2.8.4.4-1.bb
+++ b/packages/obsolete/maemo/osso-gnome-vfs2_2.8.4.4-1.bb
diff --git a/packages/openchrome/.mtn2git_empty b/packages/openchrome/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openchrome/.mtn2git_empty
diff --git a/packages/openchrome/configure.patch b/packages/openchrome/configure.patch
new file mode 100644
index 0000000000..a2f236470d
--- /dev/null
+++ b/packages/openchrome/configure.patch
@@ -0,0 +1,42 @@
+--- trunk/configure.ac 2007-01-16 16:58:44.000000000 +0000
++++ trunk/configure.ac 2007-01-16 18:09:26.000000000 +0000
+@@ -69,11 +69,11 @@
+ AC_HEADER_STDC
+
+ if test "$DRI" != no; then
+- AC_CHECK_FILE([${sdkdir}/dri.h],
++ AC_CHECK_BUILD_FILE([${sdkdir}/dri.h],
+ [have_dri_h="yes"], [have_dri_h="no"])
+- AC_CHECK_FILE([${sdkdir}/sarea.h],
++ AC_CHECK_BUILD_FILE([${sdkdir}/sarea.h],
+ [have_sarea_h="yes"], [have_sarea_h="no"])
+- AC_CHECK_FILE([${sdkdir}/dristruct.h],
++ AC_CHECK_BUILD_FILE([${sdkdir}/dristruct.h],
+ [have_dristruct_h="yes"], [have_dristruct_h="no"])
+ fi
+
+@@ -113,7 +113,7 @@
+
+ AM_CONDITIONAL(XVMC, test x$XVMC = xyes)
+
+-AC_CHECK_FILE([${sdkdir}/xf86Module.h],
++AC_CHECK_BUILD_FILE([${sdkdir}/xf86Module.h],
+ [have_xf86Module_h="yes"], [have_xf86Module_h="no"])
+
+ # Check the ABI_VIDEODRV_VERSION
+--- /dev/null 2003-09-15 14:40:47.000000000 +0100
++++ trunk/m4/check-build.m4 2007-01-16 18:07:37.000000000 +0000
+@@ -0,0 +1,13 @@
++# Check for the existence of FILE.
++AC_DEFUN([AC_CHECK_BUILD_FILE],
++[AS_VAR_PUSHDEF([ac_File], [ac_cv_file_$1])dnl
++AC_CACHE_CHECK([for $1], ac_File,
++[if test -r "$1"; then
++ AS_VAR_SET(ac_File, yes)
++else
++ AS_VAR_SET(ac_File, no)
++fi])
++AS_IF([test AS_VAR_GET(ac_File) = yes], [$2], [$3])[]dnl
++AS_VAR_POPDEF([ac_File])dnl
++])# AC_CHECK_BUILD_FILE
++
diff --git a/packages/openchrome/openchrome_svn.bb b/packages/openchrome/openchrome_svn.bb
new file mode 100644
index 0000000000..d4e2da5ebe
--- /dev/null
+++ b/packages/openchrome/openchrome_svn.bb
@@ -0,0 +1,21 @@
+SRC_URI = "svn://svn.openchrome.org/svn;module=trunk;proto=http \
+ file://configure.patch;patch=1"
+S = "${WORKDIR}/trunk"
+
+PACKAGES = "libviaXvMC libviaXvMCPro libviaXvMC-dev libviaXvMCPro-dev libviaXvMC-dbg libviaXvMCPro-dbg ${PN}-doc"
+PACKAGES_DYNAMIC = "xorg-driver-via"
+
+FILES_libviaXvMC = "${libdir}/libviaXvMC.so.*"
+FILES_libviaXvMCPro = "${libdir}/libviaXvMCPro.so.*"
+FILES_libviaXvMC-dev = "${libdir}/libviaXvMC.so ${libdir}/libviaXvMC.la"
+FILES_libviaXvMCPro-dev = "${libdir}/libviaXvMCPro.so ${libdir}/libviaXvMCPro.la"
+FILES_libviaXvMC-dbg = "${libdir}/.debug/libviaXvMC.so.*"
+FILES_libviaXvMCPro-dbg = "${libdir}/.debug/libviaXvMCPro.so.*"
+
+DEPENDS = "xserver-xorg libxvmc"
+
+inherit autotools xorg-module
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/openmoko-apps/.mtn2git_empty b/packages/openmoko-apps/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openmoko-apps/.mtn2git_empty
diff --git a/packages/openmoko-apps/files/.mtn2git_empty b/packages/openmoko-apps/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openmoko-apps/files/.mtn2git_empty
diff --git a/packages/openmoko-apps/files/unbreak-messages.patch b/packages/openmoko-apps/files/unbreak-messages.patch
new file mode 100644
index 0000000000..c8d3413c0b
--- /dev/null
+++ b/packages/openmoko-apps/files/unbreak-messages.patch
@@ -0,0 +1,29 @@
+Index: sms-membership-window.c
+===================================================================
+--- sms-membership-window.c (wersja 1565)
++++ openmoko-messages/src/sms-membership-window.c (kopia robocza)
+@@ -36,9 +36,6 @@
+ #define SMS_MEMBERSHIP_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SMS_TYPE_MEMBERSHIP_WINDOW, SmsMembershipWindowPrivate))
+
+ typedef struct _SmsMembershipWindowPrivate SmsMembershipWindowPrivate;
+-typedef gboolean (*GtkTreeModelFilterVisibleFunc) (GtkTreeModel *model,
+- GtkTreeIter *iter,
+- gpointer data);
+
+ struct _SmsMembershipWindowPrivate
+ {
+Index: main.c
+===================================================================
+--- main.c (wersja 1565)
++++ openmoko-messages/src/main.c (kopia robocza)
+@@ -41,10 +41,6 @@
+
+ #include <gtk/gtk.h>
+
+-typedef gboolean (*GtkTreeModelFilterVisibleFunc) (GtkTreeModel *model,
+- GtkTreeIter *iter,
+- gpointer data);
+-
+ gboolean init_dbus (MessengerData* d)
+ {
+ DBusError error;
diff --git a/packages/openmoko-apps/openmoko-appmanager_svn.bb b/packages/openmoko-apps/openmoko-appmanager_svn.bb
new file mode 100644
index 0000000000..d7a708b85c
--- /dev/null
+++ b/packages/openmoko-apps/openmoko-appmanager_svn.bb
@@ -0,0 +1,7 @@
+DESCRIPTION = "The OpenMoko Application Manager"
+SECTION = "openmoko/applications"
+DEPENDS += "ipkg"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko
+
diff --git a/packages/openmoko-apps/openmoko-dialer_svn.bb b/packages/openmoko-apps/openmoko-dialer_svn.bb
new file mode 100644
index 0000000000..75abce2274
--- /dev/null
+++ b/packages/openmoko-apps/openmoko-dialer_svn.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "The OpenMoko Dialer"
+SECTION = "openmoko/applications"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko
+
+DEPENDS += " eds-dbus libgsmd"
+
+
diff --git a/packages/openmoko-apps/openmoko-footer_svn.bb b/packages/openmoko-apps/openmoko-footer_svn.bb
new file mode 100644
index 0000000000..fed6f99455
--- /dev/null
+++ b/packages/openmoko-apps/openmoko-footer_svn.bb
@@ -0,0 +1,6 @@
+DESCRIPTION = "The OpenMoko Footer"
+SECTION = "openmoko/applications"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko
+
diff --git a/packages/openmoko-apps/openmoko-mainmenu_svn.bb b/packages/openmoko-apps/openmoko-mainmenu_svn.bb
new file mode 100644
index 0000000000..d819e60d23
--- /dev/null
+++ b/packages/openmoko-apps/openmoko-mainmenu_svn.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "The OpenMoko Main Menu"
+SECTION = "openmoko/applications"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko
+
+do_compile_prepend() {
+ sed -i -e 's:$(AM_LDFLAGS):$(AM_LDFLAGS)\ -lmb:' src/Makefile
+}
diff --git a/packages/openmoko-apps/openmoko-messages_svn.bb b/packages/openmoko-apps/openmoko-messages_svn.bb
new file mode 100644
index 0000000000..948560bd52
--- /dev/null
+++ b/packages/openmoko-apps/openmoko-messages_svn.bb
@@ -0,0 +1,7 @@
+DESCRIPTION = "The OpenMoko Messaging Application"
+SECTION = "openmoko/applications"
+
+PV = "0.0.1+svn${SRCDATE}"
+PR = "r2"
+
+inherit openmoko
diff --git a/packages/openmoko-apps/openmoko-rssreader_svn.bb b/packages/openmoko-apps/openmoko-rssreader_svn.bb
new file mode 100644
index 0000000000..6e58b17c5b
--- /dev/null
+++ b/packages/openmoko-apps/openmoko-rssreader_svn.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "The OpenMoko RSS Reader"
+SECTION = "openmoko/applications"
+DEPENDS += "libmrss check"
+
+PV = "0.0.1+svn${SRCDATE}"
+PR = "r1"
+
+inherit openmoko
+
diff --git a/packages/openmoko-apps/openmoko-simplemediaplayer_svn.bb b/packages/openmoko-apps/openmoko-simplemediaplayer_svn.bb
new file mode 100644
index 0000000000..0d1456541d
--- /dev/null
+++ b/packages/openmoko-apps/openmoko-simplemediaplayer_svn.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "The OpenMoko Media Player"
+SECTION = "openmoko/applications"
+DEPENDS += "alsa-lib dbus-glib id3lib libvorbis"
+PV = "0.0.1+svn${SRCDATE}"
+PR = "r1"
+
+inherit openmoko
+
+PARALLEL_MAKE =""
+
+do_install_prepend() {
+ touch mkinstalldirs
+}
+
+
+FILES_${PN} += " \
+ ${datadir}/images \
+ ${libdir}/bmp/*/*.so \
+ "
diff --git a/packages/openmoko-apps/openmoko-taskmanager_svn.bb b/packages/openmoko-apps/openmoko-taskmanager_svn.bb
new file mode 100644
index 0000000000..5f313f170e
--- /dev/null
+++ b/packages/openmoko-apps/openmoko-taskmanager_svn.bb
@@ -0,0 +1,6 @@
+DESCRIPTION = "The OpenMoko Task Manager"
+SECTION = "openmoko/applications"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko
+
diff --git a/packages/openmoko-base/.mtn2git_empty b/packages/openmoko-base/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openmoko-base/.mtn2git_empty
diff --git a/packages/openmoko-base/files/.mtn2git_empty b/packages/openmoko-base/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openmoko-base/files/.mtn2git_empty
diff --git a/packages/openmoko-base/files/session b/packages/openmoko-base/files/session
new file mode 100644
index 0000000000..1ac858f7b9
--- /dev/null
+++ b/packages/openmoko-base/files/session
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+SHOWCURSOR="no"
+
+matchbox-desktop --icon-size 96 \
+ --icon-padding 60 \
+ --font sans-16 \
+ --titlefont sans-20:bold \
+ --bg img-tiled:/usr/share/themes/openmoko-standard/gtk-2.0/mokopanedwindow-upper-enclosing.png &
+# --bg col-gradient-vertical:#000000,#aaaaaa &
+matchbox-panel-2 --start-applets=openmoko-panel-mainmenu,showdesktop,systray,windowselector --end-applets=openmoko-panel-battery,openmoko-panel-clock,openmoko-panel-gsm &
+
+#start some old-style panel plugins to get a keyboard and battery status
+mbinputmgr &
+
+openmoko-footer &
+openmoko-dialer &
+exec matchbox-window-manager -use_titlebar no -use_cursor $SHOWCURSOR $@
+
diff --git a/packages/openmoko-base/openmoko-common_svn.bb b/packages/openmoko-base/openmoko-common_svn.bb
new file mode 100644
index 0000000000..e72d325bb9
--- /dev/null
+++ b/packages/openmoko-base/openmoko-common_svn.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Common files for the OpenMoko distribution"
+SECTION = "openmoko/base"
+PV = "0.0+svn${SRCDATE}"
+PR = "r1"
+
+inherit openmoko-base
+
+SRC_URI = "${OPENMOKO_MIRROR}/src/target/${OPENMOKO_RELEASE}/artwork;module=images;proto=http"
+S = "${WORKDIR}"
+
+dirs = "images/pixmaps"
+
+do_install() {
+ find ${WORKDIR} -name ".svn" | xargs rm -rf
+ install -d ${D}${datadir}/openmoko/
+ for i in ${dirs}; do
+ cp -fpPR ${S}/$i ${D}${datadir}/openmoko/
+ done
+}
+
+FILES_${PN} = "${datadir}"
diff --git a/packages/openmoko-base/openmoko-icon-theme-standard_svn.bb b/packages/openmoko-base/openmoko-icon-theme-standard_svn.bb
new file mode 100644
index 0000000000..8be6211d68
--- /dev/null
+++ b/packages/openmoko-base/openmoko-icon-theme-standard_svn.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Standard Gtk+ icon theme for the OpenMoko distribution"
+SECTION = "openmoko/base"
+PV = "0.0+svn${SRCDATE}"
+PR = "r0"
+
+inherit openmoko-base autotools
+
+SRC_URI = "${OPENMOKO_MIRROR}/src/target/${OPENMOKO_RELEASE}/artwork;module=icons;proto=http"
+S = "${WORKDIR}/icons"
+
+PACKAGE_ARCH = "all"
diff --git a/packages/openmoko-base/openmoko-libs_svn.bb b/packages/openmoko-base/openmoko-libs_svn.bb
new file mode 100644
index 0000000000..4e6446f96a
--- /dev/null
+++ b/packages/openmoko-base/openmoko-libs_svn.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "openmoko-libs is a set of libraries implementing a Gtk+ based application framework for mobile communication applications"
+SECTION = "openmoko/libs"
+LICENSE = "LGPL"
+DEPENDS += "gtk+ eds-dbus libgsmd"
+PV = "0.0.1+svn${SRCDATE}"
+PR = "r5"
+
+inherit openmoko
+
+do_stage() {
+ autotools_stage_all
+}
+
+PACKAGES =+ " \
+ libmokojournal libmokojournal-dev libmokojournal-dbg \
+ libmokogsmd libmokogsmd-dev libmokogsmd-dbg \
+ libmokocore libmokocore-dev libmokocore-dbg \
+ libmokoui libmokoui-dev libmokoui-dbg \
+ "
+
+FILES_libmokojournal = "${libdir}/libmokojournal.so.*"
+FILES_libmokojournal-dev = "${libdir}/libmokojournal.so ${libdir}/libmokojournal.*a ${includedir}/${PN}/libmokojournal"
+FILES_libmokojournal-dbg = "${libdir}/.debug/libmokojournal.so.*"
+
+FILES_libmokogsmd = "${libdir}/libmokogsmd.so.*"
+FILES_libmokogsmd-dev = "${libdir}/libmokogsmd.so ${libdir}/libmokogsmd.*a ${includedir}/${PN}/libmokogsmd"
+FILES_libmokogsmd-dbg = "${libdir}/.debug/libmokogsmd.so.*"
+
+FILES_libmokocore = "${libdir}/libmokocore.so.*"
+FILES_libmokocore-dev = "${libdir}/libmokocore.so ${libdir}/libmokocore.*a ${includedir}/${PN}/libmokocore"
+FILES_libmokocore-dbg = "${libdir}/.debug/libmokocore.so.*"
+
+FILES_libmokoui = "${libdir}/libmokoui.so.*"
+FILES_libmokoui-dev = "${libdir}/libmokoui.so ${libdir}/libmokoui.*a ${includedir}/${PN}/libmokoui"
+FILES_libmokoui-dbg = "${libdir}/.debug/libmokoui.so.*"
+
diff --git a/packages/openmoko-base/openmoko-session_svn.bb b/packages/openmoko-base/openmoko-session_svn.bb
new file mode 100644
index 0000000000..6daacb2842
--- /dev/null
+++ b/packages/openmoko-base/openmoko-session_svn.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "Matchbox session files for OpenMoko"
+SECTION = "openmoko/base"
+RDEPENDS = "matchbox-panel-2 matchbox-wm gconf matchbox-applet-startup-monitor gtk-theme-clearlooks"
+PV = "0.0+svn${SRCDATE}"
+PR = "r9"
+
+inherit openmoko-base
+
+SRC_URI = "${OPENMOKO_MIRROR}/src/target/${OPENMOKO_RELEASE};module=etc;proto=http \
+ file://session"
+S = "${WORKDIR}"
+
+do_install() {
+ cp -R ${S}/etc ${D}/${sysconfdir}
+ rm -fR ${D}/${sysconfdir}/.svn
+ rm -fR ${D}/${sysconfdir}/matchbox/.svn
+ chmod -R 755 ${D}/${sysconfdir}
+ # DEMO only!
+ install -m 0755 ${WORKDIR}/session ${D}/${sysconfdir}/matchbox/session
+}
+
+pkg_postinst_openmoko-session () {
+#!/bin/sh -e
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+gconftool-2 --config-source=xml::$D${sysconfdir}/gconf/gconf.xml.defaults --direct --type string --set /desktop/openmoko/interface/theme Clearlooks
+}
diff --git a/packages/openmoko-base/openmoko-theme-standard-qvga_svn.bb b/packages/openmoko-base/openmoko-theme-standard-qvga_svn.bb
new file mode 100644
index 0000000000..44c296f258
--- /dev/null
+++ b/packages/openmoko-base/openmoko-theme-standard-qvga_svn.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Standard Gtk+ theme for the OpenMoko distribution, qvga version"
+SECTION = "openmoko/base"
+PV = "0.0+svn${SRCDATE}"
+PR = "r0"
+
+inherit openmoko-base
+
+SRC_URI = "${OPENMOKO_MIRROR}/src/target/${OPENMOKO_RELEASE}/artwork;module=themes;proto=http"
+S = "${WORKDIR}"
+
+dirs = "themes/openmoko-standard-qvga"
+
+do_install() {
+ find ${WORKDIR} -name ".svn" | xargs rm -rf
+ install -d ${D}${datadir}/themes/
+ for i in ${dirs}; do
+ cp -fpPR ${WORKDIR}/$i ${D}${datadir}/themes/
+ done
+
+ install -d ${D}${sysconfdir}/gtk-2.0
+ echo 'include "${datadir}/themes/openmoko-standard-qvga/gtk-2.0/gtkrc"' >> ${D}${sysconfdir}/gtk-2.0/gtkrc
+}
+
+PACKAGE_ARCH = "all"
+FILES_${PN} = "${datadir} ${sysconfdir}"
diff --git a/packages/openmoko-base/openmoko-theme-standard_svn.bb b/packages/openmoko-base/openmoko-theme-standard_svn.bb
new file mode 100644
index 0000000000..6265526de6
--- /dev/null
+++ b/packages/openmoko-base/openmoko-theme-standard_svn.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Standard Gtk+ theme for the OpenMoko distribution"
+SECTION = "openmoko/base"
+PV = "0.0+svn${SRCDATE}"
+PR = "r4"
+
+inherit openmoko-base
+
+SRC_URI = "${OPENMOKO_MIRROR}/src/target/${OPENMOKO_RELEASE}/artwork;module=themes;proto=http"
+S = "${WORKDIR}"
+
+dirs = "themes/openmoko-standard"
+
+do_install() {
+ find ${WORKDIR} -name ".svn" | xargs rm -rf
+ install -d ${D}${datadir}/themes/
+ for i in ${dirs}; do
+ cp -fpPR ${WORKDIR}/$i ${D}${datadir}/themes/
+ done
+
+ install -d ${D}${sysconfdir}/gtk-2.0
+ echo 'include "${datadir}/themes/openmoko-standard/gtk-2.0/gtkrc"' >> ${D}${sysconfdir}/gtk-2.0/gtkrc
+}
+
+PACKAGE_ARCH = "all"
+FILES_${PN} = "${datadir} ${sysconfdir}"
diff --git a/packages/openmoko-examples/.mtn2git_empty b/packages/openmoko-examples/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openmoko-examples/.mtn2git_empty
diff --git a/packages/openmoko-examples/openmoko-finger-demo_svn.bb b/packages/openmoko-examples/openmoko-finger-demo_svn.bb
new file mode 100644
index 0000000000..e54f8c06bc
--- /dev/null
+++ b/packages/openmoko-examples/openmoko-finger-demo_svn.bb
@@ -0,0 +1,6 @@
+DESCRIPTION = "An example finger application for OpenMoko"
+SECTION = "openmoko/examples"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko
+
diff --git a/packages/openmoko-examples/openmoko-panel-demo-simple_svn.bb b/packages/openmoko-examples/openmoko-panel-demo-simple_svn.bb
new file mode 100644
index 0000000000..9f80fbf7dc
--- /dev/null
+++ b/packages/openmoko-examples/openmoko-panel-demo-simple_svn.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "A simple example panel plugin for OpenMoko"
+SECTION = "openmoko/examples"
+DEPENDS += "libmatchbox"
+PV = "0.0.1+svn${SRCDATE}"
+
+PR = "r1"
+
+inherit openmoko
+
+do_configure_prepend() {
+ sed -i -e s:-Werror::g src/Makefile.am
+}
+
+
+FILES_${PN} += "${libdir}/matchbox-panel/*.so.*"
+FILES_${PN}-dev += "${libdir}/matchbox-panel/*.so \
+ ${libdir}/matchbox-panel/*.la"
+FILES_${PN}-dbg += "${libdir}/matchbox-panel/.debug"
+
diff --git a/packages/openmoko-examples/openmoko-panel-demo_svn.bb b/packages/openmoko-examples/openmoko-panel-demo_svn.bb
new file mode 100644
index 0000000000..6121bcccbc
--- /dev/null
+++ b/packages/openmoko-examples/openmoko-panel-demo_svn.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "An example panel plugin for OpenMoko"
+SECTION = "openmoko/examples"
+DEPENDS += "libmatchbox"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko
+
+PARALLEL_MAKE = ""
+
diff --git a/packages/openmoko-examples/openmoko-stylus-demo-simple_svn.bb b/packages/openmoko-examples/openmoko-stylus-demo-simple_svn.bb
new file mode 100644
index 0000000000..1ba2f95072
--- /dev/null
+++ b/packages/openmoko-examples/openmoko-stylus-demo-simple_svn.bb
@@ -0,0 +1,6 @@
+DESCRIPTION = "A simple stylus application example for OpenMoko"
+SECTION = "openmoko/examples"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko
+
diff --git a/packages/openmoko-examples/openmoko-stylus-demo_svn.bb b/packages/openmoko-examples/openmoko-stylus-demo_svn.bb
new file mode 100644
index 0000000000..a0ec4721c2
--- /dev/null
+++ b/packages/openmoko-examples/openmoko-stylus-demo_svn.bb
@@ -0,0 +1,6 @@
+DESCRIPTION = "An example stylus application for OpenMoko"
+SECTION = "openmoko/examples"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko
+
diff --git a/packages/openmoko-inputmethods/.mtn2git_empty b/packages/openmoko-inputmethods/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openmoko-inputmethods/.mtn2git_empty
diff --git a/packages/openmoko-inputmethods/openmoko-keyboard_svn.bb b/packages/openmoko-inputmethods/openmoko-keyboard_svn.bb
new file mode 100644
index 0000000000..58f25ab0b6
--- /dev/null
+++ b/packages/openmoko-inputmethods/openmoko-keyboard_svn.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Matchbox virtual keyboard for X11 - OpenMoko fork"
+LICENSE = "GPL"
+DEPENDS = "libfakekey expat libxft"
+SECTION = "openmoko/inputmethods"
+PV = "0.0+svn${SRCDATE}"
+PR = "r1"
+
+inherit openmoko autotools pkgconfig gettext
+
+SRC_URI = "${OPENMOKO_MIRROR}/src/target/${OPENMOKO_RELEASE}/inputmethods;module=${PN};proto=http"
+
+S = "${WORKDIR}/${PN}"
+
+EXTRA_OECONF = "--disable-cairo"
+
+FILES_${PN} = "${bindir}/* \
+ ${datadir}/applications \
+ ${datadir}/pixmaps \
+ ${datadir}/openmoko-keyboard"
+
diff --git a/packages/openmoko-panel-plugins/.mtn2git_empty b/packages/openmoko-panel-plugins/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openmoko-panel-plugins/.mtn2git_empty
diff --git a/packages/openmoko-panel-plugins/openmoko-panel-battery_svn.bb b/packages/openmoko-panel-plugins/openmoko-panel-battery_svn.bb
new file mode 100644
index 0000000000..c9dd8c4817
--- /dev/null
+++ b/packages/openmoko-panel-plugins/openmoko-panel-battery_svn.bb
@@ -0,0 +1,6 @@
+DESCRIPTION = "Shows the battery/AC status in the OpenMoko panel"
+DEPENDS = "apmd"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko-panel-plugin
+
diff --git a/packages/openmoko-panel-plugins/openmoko-panel-bt_svn.bb b/packages/openmoko-panel-plugins/openmoko-panel-bt_svn.bb
new file mode 100644
index 0000000000..786c2de657
--- /dev/null
+++ b/packages/openmoko-panel-plugins/openmoko-panel-bt_svn.bb
@@ -0,0 +1,6 @@
+DESCRIPTION = "Shows the bluetooth status in the OpenMoko panel"
+DEPENDS = "bluez-libs"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko-panel-plugin
+
diff --git a/packages/openmoko-panel-plugins/openmoko-panel-clock_svn.bb b/packages/openmoko-panel-plugins/openmoko-panel-clock_svn.bb
new file mode 100644
index 0000000000..389a6f2691
--- /dev/null
+++ b/packages/openmoko-panel-plugins/openmoko-panel-clock_svn.bb
@@ -0,0 +1,5 @@
+DESCRIPTION = "Shows the current time in the OpenMoko panel"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko-panel-plugin
+
diff --git a/packages/openmoko-panel-plugins/openmoko-panel-gps_svn.bb b/packages/openmoko-panel-plugins/openmoko-panel-gps_svn.bb
new file mode 100644
index 0000000000..8002a05fc4
--- /dev/null
+++ b/packages/openmoko-panel-plugins/openmoko-panel-gps_svn.bb
@@ -0,0 +1,6 @@
+DESCRIPTION = "Shows the GPS status in the OpenMoko panel"
+DEPENDS = "gpsd"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko-panel-plugin
+
diff --git a/packages/openmoko-panel-plugins/openmoko-panel-gsm_svn.bb b/packages/openmoko-panel-plugins/openmoko-panel-gsm_svn.bb
new file mode 100644
index 0000000000..6170da7c0c
--- /dev/null
+++ b/packages/openmoko-panel-plugins/openmoko-panel-gsm_svn.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "Shows the GSM status in the OpenMoko panel"
+PV = "0.0.1+svn${SRCDATE}"
+PR = "r1"
+
+DEPENDS_append = " libgsmd"
+
+inherit openmoko-panel-plugin
+
+FILES_${PN} += "${bindir}/${PN}"
+
diff --git a/packages/openmoko-panel-plugins/openmoko-panel-mainmenu_svn.bb b/packages/openmoko-panel-plugins/openmoko-panel-mainmenu_svn.bb
new file mode 100644
index 0000000000..a6f90417c7
--- /dev/null
+++ b/packages/openmoko-panel-plugins/openmoko-panel-mainmenu_svn.bb
@@ -0,0 +1,5 @@
+DESCRIPTION = "Main menu for the OpenMoko panel"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko-panel-plugin
+
diff --git a/packages/openmoko-panel-plugins/openmoko-panel-usb_svn.bb b/packages/openmoko-panel-plugins/openmoko-panel-usb_svn.bb
new file mode 100644
index 0000000000..8dc478c40b
--- /dev/null
+++ b/packages/openmoko-panel-plugins/openmoko-panel-usb_svn.bb
@@ -0,0 +1,5 @@
+DESCRIPTION = "USB applet for the OpenMoko panel"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko-panel-plugin
+
diff --git a/packages/openmoko-pim/.mtn2git_empty b/packages/openmoko-pim/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openmoko-pim/.mtn2git_empty
diff --git a/packages/openmoko-pim/openmoko-contacts/.mtn2git_empty b/packages/openmoko-pim/openmoko-contacts/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openmoko-pim/openmoko-contacts/.mtn2git_empty
diff --git a/packages/contacts/files/index.theme b/packages/openmoko-pim/openmoko-contacts/index.theme
index 4e9cf67820..4e9cf67820 100644
--- a/packages/contacts/files/index.theme
+++ b/packages/openmoko-pim/openmoko-contacts/index.theme
diff --git a/packages/openmoko-pim/openmoko-contacts/intltool-update.in b/packages/openmoko-pim/openmoko-contacts/intltool-update.in
new file mode 100644
index 0000000000..0342a2740c
--- /dev/null
+++ b/packages/openmoko-pim/openmoko-contacts/intltool-update.in
@@ -0,0 +1,1089 @@
+#!@INTLTOOL_PERL@
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+
+#
+# The Intltool Message Updater
+#
+# Copyright (C) 2000-2003 Free Software Foundation.
+#
+# Intltool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# version 2 published by the Free Software Foundation.
+#
+# Intltool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+#
+# Authors: Kenneth Christiansen <kenneth@gnu.org>
+# Maciej Stachowiak
+# Darin Adler <darin@bentspoon.com>
+
+## Release information
+my $PROGRAM = "intltool-update";
+my $VERSION = "0.35.0";
+my $PACKAGE = "intltool";
+
+## Loaded modules
+use strict;
+use Getopt::Long;
+use Cwd;
+use File::Copy;
+use File::Find;
+
+## Scalars used by the option stuff
+my $HELP_ARG = 0;
+my $VERSION_ARG = 0;
+my $DIST_ARG = 0;
+my $POT_ARG = 0;
+my $HEADERS_ARG = 0;
+my $MAINTAIN_ARG = 0;
+my $REPORT_ARG = 0;
+my $VERBOSE = 0;
+my $GETTEXT_PACKAGE = "";
+my $OUTPUT_FILE = "";
+
+my @languages;
+my %varhash = ();
+my %po_files_by_lang = ();
+
+# Regular expressions to categorize file types.
+# FIXME: Please check if the following is correct
+
+my $xml_support =
+"xml(?:\\.in)*|". # http://www.w3.org/XML/ (Note: .in is not required)
+"ui|". # Bonobo specific - User Interface desc. files
+"lang|". # ?
+"glade2?(?:\\.in)*|". # Glade specific - User Interface desc. files (Note: .in is not required)
+"scm(?:\\.in)*|". # ? (Note: .in is not required)
+"oaf(?:\\.in)+|". # DEPRECATED: Replaces by Bonobo .server files
+"etspec|". # ?
+"server(?:\\.in)+|". # Bonobo specific
+"sheet(?:\\.in)+|". # ?
+"schemas(?:\\.in)+|". # GConf specific
+"pong(?:\\.in)+|". # DEPRECATED: PONG is not used [by GNOME] any longer.
+"kbd(?:\\.in)+"; # GOK specific.
+
+my $ini_support =
+"icon(?:\\.in)+|". # http://www.freedesktop.org/Standards/icon-theme-spec
+"desktop(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec
+"caves(?:\\.in)+|". # GNOME Games specific
+"directory(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec
+"soundlist(?:\\.in)+|". # GNOME specific
+"keys(?:\\.in)+|". # GNOME Mime database specific
+"theme(?:\\.in)+|". # http://www.freedesktop.org/Standards/icon-theme-spec
+"service(?:\\.in)+"; # DBus specific
+
+my $buildin_gettext_support =
+"c|y|cs|cc|cpp|c\\+\\+|h|hh|gob|py";
+
+## Always flush buffer when printing
+$| = 1;
+
+## Sometimes the source tree will be rooted somewhere else.
+my $SRCDIR = ".";
+my $POTFILES_in;
+
+$SRCDIR = $ENV{"srcdir"} if $ENV{"srcdir"};
+$POTFILES_in = "<$SRCDIR/POTFILES.in";
+
+my $devnull = ($^O eq 'MSWin32' ? 'NUL:' : '/dev/null');
+
+## Handle options
+GetOptions
+(
+ "help" => \$HELP_ARG,
+ "version" => \$VERSION_ARG,
+ "dist|d" => \$DIST_ARG,
+ "pot|p" => \$POT_ARG,
+ "headers|s" => \$HEADERS_ARG,
+ "maintain|m" => \$MAINTAIN_ARG,
+ "report|r" => \$REPORT_ARG,
+ "verbose|x" => \$VERBOSE,
+ "gettext-package|g=s" => \$GETTEXT_PACKAGE,
+ "output-file|o=s" => \$OUTPUT_FILE,
+ ) or &Console_WriteError_InvalidOption;
+
+&Console_Write_IntltoolHelp if $HELP_ARG;
+&Console_Write_IntltoolVersion if $VERSION_ARG;
+
+my $arg_count = ($DIST_ARG > 0)
+ + ($POT_ARG > 0)
+ + ($HEADERS_ARG > 0)
+ + ($MAINTAIN_ARG > 0)
+ + ($REPORT_ARG > 0);
+
+&Console_Write_IntltoolHelp if $arg_count > 1;
+
+# --version and --help don't require a module name
+my $MODULE = $GETTEXT_PACKAGE || &FindPackageName || "unknown";
+
+if ($POT_ARG)
+{
+ &GenerateHeaders;
+ &GeneratePOTemplate;
+}
+elsif ($HEADERS_ARG)
+{
+ &GenerateHeaders;
+}
+elsif ($MAINTAIN_ARG)
+{
+ &FindLeftoutFiles;
+}
+elsif ($REPORT_ARG)
+{
+ &GenerateHeaders;
+ &GeneratePOTemplate;
+ &Console_Write_CoverageReport;
+}
+elsif ((defined $ARGV[0]) && $ARGV[0] =~ /^[a-z]/)
+{
+ my $lang = $ARGV[0];
+
+ ## Report error if the language file supplied
+ ## to the command line is non-existent
+ &Console_WriteError_NotExisting("$SRCDIR/$lang.po")
+ if ! -s "$SRCDIR/$lang.po";
+
+ if (!$DIST_ARG)
+ {
+ print "Working, please wait..." if $VERBOSE;
+ &GenerateHeaders;
+ &GeneratePOTemplate;
+ }
+ &POFile_Update ($lang, $OUTPUT_FILE);
+ &Console_Write_TranslationStatus ($lang, $OUTPUT_FILE);
+}
+else
+{
+ &Console_Write_IntltoolHelp;
+}
+
+exit;
+
+#########
+
+sub Console_Write_IntltoolVersion
+{
+ print <<_EOF_;
+${PROGRAM} (${PACKAGE}) $VERSION
+Written by Kenneth Christiansen, Maciej Stachowiak, and Darin Adler.
+
+Copyright (C) 2000-2003 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+_EOF_
+ exit;
+}
+
+sub Console_Write_IntltoolHelp
+{
+ print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... LANGCODE
+Updates PO template files and merge them with the translations.
+
+Mode of operation (only one is allowed):
+ -p, --pot generate the PO template only
+ -s, --headers generate the header files in POTFILES.in
+ -m, --maintain search for left out files from POTFILES.in
+ -r, --report display a status report for the module
+ -d, --dist merge LANGCODE.po with existing PO template
+
+Extra options:
+ -g, --gettext-package=NAME override PO template name, useful with --pot
+ -o, --output-file=FILE write merged translation to FILE
+ -x, --verbose display lots of feedback
+ --help display this help and exit
+ --version output version information and exit
+
+Examples of use:
+${PROGRAM} --pot just create a new PO template
+${PROGRAM} xy create new PO template and merge xy.po with it
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+ exit;
+}
+
+sub echo_n
+{
+ my $str = shift;
+ my $ret = `echo "$str"`;
+
+ $ret =~ s/\n$//; # do we need the "s" flag?
+
+ return $ret;
+}
+
+sub POFile_DetermineType ($)
+{
+ my $type = $_;
+ my $gettext_type;
+
+ my $xml_regex = "(?:" . $xml_support . ")";
+ my $ini_regex = "(?:" . $ini_support . ")";
+ my $buildin_regex = "(?:" . $buildin_gettext_support . ")";
+
+ if ($type =~ /\[type: gettext\/([^\]].*)]/)
+ {
+ $gettext_type=$1;
+ }
+ elsif ($type =~ /schemas(\.in)+$/)
+ {
+ $gettext_type="schemas";
+ }
+ elsif ($type =~ /glade2?(\.in)*$/)
+ {
+ $gettext_type="glade";
+ }
+ elsif ($type =~ /scm(\.in)*$/)
+ {
+ $gettext_type="scheme";
+ }
+ elsif ($type =~ /keys(\.in)+$/)
+ {
+ $gettext_type="keys";
+ }
+
+ # bucket types
+
+ elsif ($type =~ /$xml_regex$/)
+ {
+ $gettext_type="xml";
+ }
+ elsif ($type =~ /$ini_regex$/)
+ {
+ $gettext_type="ini";
+ }
+ elsif ($type =~ /$buildin_regex$/)
+ {
+ $gettext_type="buildin";
+ }
+ else
+ {
+ $gettext_type="unknown";
+ }
+
+ return "gettext\/$gettext_type";
+}
+
+sub TextFile_DetermineEncoding ($)
+{
+ my $gettext_code="ASCII"; # All files are ASCII by default
+ my $filetype=`file $_ | cut -d ' ' -f 2`;
+
+ if ($? eq "0")
+ {
+ if ($filetype =~ /^(ISO|UTF)/)
+ {
+ chomp ($gettext_code = $filetype);
+ }
+ elsif ($filetype =~ /^XML/)
+ {
+ $gettext_code="UTF-8"; # We asume that .glade and other .xml files are UTF-8
+ }
+ }
+
+ return $gettext_code;
+}
+
+sub isNotValidMissing
+{
+ my ($file) = @_;
+
+ return if $file =~ /^\{arch\}\/.*$/;
+ return if $file =~ /^$varhash{"PACKAGE"}-$varhash{"VERSION"}\/.*$/;
+}
+
+sub FindLeftoutFiles
+{
+ my (@buf_i18n_plain,
+ @buf_i18n_xml,
+ @buf_i18n_xml_unmarked,
+ @buf_i18n_ini,
+ @buf_potfiles,
+ @buf_potfiles_ignore,
+ @buf_allfiles,
+ @buf_allfiles_sorted,
+ @buf_potfiles_sorted
+ );
+
+ ## Search and find all translatable files
+ find sub {
+ push @buf_i18n_plain, "$File::Find::name" if /\.($buildin_gettext_support)$/;
+ push @buf_i18n_xml, "$File::Find::name" if /\.($xml_support)$/;
+ push @buf_i18n_ini, "$File::Find::name" if /\.($ini_support)$/;
+ push @buf_i18n_xml_unmarked, "$File::Find::name" if /\.(schemas(\.in)+)$/;
+ }, "..";
+
+
+ open POTFILES, $POTFILES_in or die "$PROGRAM: there's no POTFILES.in!\n";
+ @buf_potfiles = grep !/^(#|\s*$)/, <POTFILES>;
+ close POTFILES;
+
+ foreach (@buf_potfiles) {
+ s/^\[.*]\s*//;
+ }
+
+ print "Searching for missing translatable files...\n" if $VERBOSE;
+
+ ## Check if we should ignore some found files, when
+ ## comparing with POTFILES.in
+ foreach my $ignore ("POTFILES.skip", "POTFILES.ignore")
+ {
+ (-s $ignore) or next;
+
+ if ("$ignore" eq "POTFILES.ignore")
+ {
+ print "The usage of POTFILES.ignore is deprecated. Please consider moving the\n".
+ "content of this file to POTFILES.skip.\n";
+ }
+
+ print "Found $ignore: Ignoring files...\n" if $VERBOSE;
+ open FILE, "<$ignore" or die "ERROR: Failed to open $ignore!\n";
+
+ while (<FILE>)
+ {
+ push @buf_potfiles_ignore, $_ unless /^(#|\s*$)/;
+ }
+ close FILE;
+
+ @buf_potfiles = (@buf_potfiles_ignore, @buf_potfiles);
+ }
+
+ foreach my $file (@buf_i18n_plain)
+ {
+ my $in_comment = 0;
+ my $in_macro = 0;
+
+ open FILE, "<$file";
+ while (<FILE>)
+ {
+ # Handle continued multi-line comment.
+ if ($in_comment)
+ {
+ next unless s-.*\*/--;
+ $in_comment = 0;
+ }
+
+ # Handle continued macro.
+ if ($in_macro)
+ {
+ $in_macro = 0 unless /\\$/;
+ next;
+ }
+
+ # Handle start of macro (or any preprocessor directive).
+ if (/^\s*\#/)
+ {
+ $in_macro = 1 if /^([^\\]|\\.)*\\$/;
+ next;
+ }
+
+ # Handle comments and quoted text.
+ while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy
+ {
+ my $match = $1;
+ if ($match eq "/*")
+ {
+ if (!s-/\*.*?\*/--)
+ {
+ s-/\*.*--;
+ $in_comment = 1;
+ }
+ }
+ elsif ($match eq "//")
+ {
+ s-//.*--;
+ }
+ else # ' or "
+ {
+ if (!s-$match([^\\]|\\.)*?$match-QUOTEDTEXT-)
+ {
+ warn "mismatched quotes at line $. in $file\n";
+ s-$match.*--;
+ }
+ }
+ }
+
+ if (/\.GetString ?\(QUOTEDTEXT/)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ ## Remove the first 3 chars and add newline
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ last;
+ }
+
+ if (/_\(QUOTEDTEXT/)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ ## Remove the first 3 chars and add newline
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ last;
+ }
+ }
+ close FILE;
+ }
+
+ foreach my $file (@buf_i18n_xml)
+ {
+ open FILE, "<$file";
+
+ while (<FILE>)
+ {
+ # FIXME: share the pattern matching code with intltool-extract
+ if (/\s_[-A-Za-z0-9._:]+\s*=\s*\"([^"]+)\"/ || /<_[^>]+>/ || /translatable=\"yes\"/)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ last;
+ }
+ }
+ close FILE;
+ }
+
+ foreach my $file (@buf_i18n_ini)
+ {
+ open FILE, "<$file";
+ while (<FILE>)
+ {
+ if (/_(.*)=/)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ last;
+ }
+ }
+ close FILE;
+ }
+
+ foreach my $file (@buf_i18n_xml_unmarked)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ }
+
+
+ @buf_allfiles_sorted = sort (@buf_allfiles);
+ @buf_potfiles_sorted = sort (@buf_potfiles);
+
+ my %in2;
+ foreach (@buf_potfiles_sorted)
+ {
+ $in2{$_} = 1;
+ }
+
+ my @result;
+
+ foreach (@buf_allfiles_sorted)
+ {
+ if (!exists($in2{$_}))
+ {
+ push @result, $_
+ }
+ }
+
+ my @buf_potfiles_notexist;
+
+ foreach (@buf_potfiles_sorted)
+ {
+ chomp (my $dummy = $_);
+ if ("$dummy" ne "" and ! -f "../$dummy")
+ {
+ push @buf_potfiles_notexist, $_;
+ }
+ }
+
+ ## Save file with information about the files missing
+ ## if any, and give information about this procedure.
+ if (@result + @buf_potfiles_notexist > 0)
+ {
+ if (@result)
+ {
+ print "\n" if $VERBOSE;
+ unlink "missing";
+ open OUT, ">missing";
+ print OUT @result;
+ close OUT;
+ warn "\e[1mThe following files contain translations and are currently not in use. Please\e[0m\n".
+ "\e[1mconsider adding these to the POTFILES.in file, located in the po/ directory.\e[0m\n\n";
+ print STDERR @result, "\n";
+ warn "If some of these files are left out on purpose then please add them to\n".
+ "POTFILES.skip instead of POTFILES.in. A file \e[1m'missing'\e[0m containing this list\n".
+ "of left out files has been written in the current directory.\n";
+ }
+ if (@buf_potfiles_notexist)
+ {
+ unlink "notexist";
+ open OUT, ">notexist";
+ print OUT @buf_potfiles_notexist;
+ close OUT;
+ warn "\n" if ($VERBOSE or @result);
+ warn "\e[1mThe following files do not exist anymore:\e[0m\n\n";
+ warn @buf_potfiles_notexist, "\n";
+ warn "Please remove them from POTFILES.in or POTFILES.skip. A file \e[1m'notexist'\e[0m\n".
+ "containing this list of absent files has been written in the current directory.\n";
+ }
+ }
+
+ ## If there is nothing to complain about, notify the user
+ else {
+ print "\nAll files containing translations are present in POTFILES.in.\n" if $VERBOSE;
+ }
+}
+
+sub Console_WriteError_InvalidOption
+{
+ ## Handle invalid arguments
+ print STDERR "Try `${PROGRAM} --help' for more information.\n";
+ exit 1;
+}
+
+sub GenerateHeaders
+{
+ my $EXTRACT = "@INTLTOOL_EXTRACT@";
+ chomp $EXTRACT;
+
+ $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} if $ENV{"INTLTOOL_EXTRACT"};
+
+ ## Generate the .h header files, so we can allow glade and
+ ## xml translation support
+ if (! -x "$EXTRACT")
+ {
+ print STDERR "\n *** The intltool-extract script wasn't found!"
+ ."\n *** Without it, intltool-update can not generate files.\n";
+ exit;
+ }
+ else
+ {
+ open (FILE, $POTFILES_in) or die "$PROGRAM: POTFILES.in not found.\n";
+
+ while (<FILE>)
+ {
+ chomp;
+ next if /^\[\s*encoding/;
+
+ ## Find xml files in POTFILES.in and generate the
+ ## files with help from the extract script
+
+ my $gettext_type= &POFile_DetermineType ($1);
+
+ if (/\.($xml_support|$ini_support)$/ || /^\[/)
+ {
+ s/^\[[^\[].*]\s*//;
+
+ my $filename = "../$_";
+
+ if ($VERBOSE)
+ {
+ system ($EXTRACT, "--update", "--srcdir=$SRCDIR",
+ "--type=$gettext_type", $filename);
+ }
+ else
+ {
+ system ($EXTRACT, "--update", "--type=$gettext_type",
+ "--srcdir=$SRCDIR", "--quiet", $filename);
+ }
+ }
+ }
+ close FILE;
+ }
+}
+
+#
+# Generate .pot file from POTFILES.in
+#
+sub GeneratePOTemplate
+{
+ my $XGETTEXT = $ENV{"XGETTEXT"} || "@INTLTOOL_XGETTEXT@";
+ my $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} || '';
+ chomp $XGETTEXT;
+
+ if (! -x $XGETTEXT)
+ {
+ print STDERR " *** xgettext is not found on this system!\n".
+ " *** Without it, intltool-update can not extract strings.\n";
+ exit;
+ }
+
+ print "Building $MODULE.pot...\n" if $VERBOSE;
+
+ open INFILE, $POTFILES_in;
+ unlink "POTFILES.in.temp";
+ open OUTFILE, ">POTFILES.in.temp" or die("Cannot open POTFILES.in.temp for writing");
+
+ my $gettext_support_nonascii = 0;
+
+ # checks for GNU gettext >= 0.12
+ my $dummy = `$XGETTEXT --version --from-code=UTF-8 >$devnull 2>$devnull`;
+ if ($? == 0)
+ {
+ $gettext_support_nonascii = 1;
+ }
+ else
+ {
+ # urge everybody to upgrade gettext
+ print STDERR "WARNING: This version of gettext does not support extracting non-ASCII\n".
+ " strings. That means you should install a version of gettext\n".
+ " that supports non-ASCII strings (such as GNU gettext >= 0.12),\n".
+ " or have to let non-ASCII strings untranslated. (If there is any)\n";
+ }
+
+ my $encoding = "ASCII";
+ my $forced_gettext_code;
+ my @temp_headers;
+ my $encoding_problem_is_reported = 0;
+
+ while (<INFILE>)
+ {
+ next if (/^#/ or /^\s*$/);
+
+ chomp;
+
+ my $gettext_code;
+
+ if (/^\[\s*encoding:\s*(.*)\s*\]/)
+ {
+ $forced_gettext_code=$1;
+ }
+ elsif (/\.($xml_support|$ini_support)$/ || /^\[/)
+ {
+ s/^\[.*]\s*//;
+ print OUTFILE "../$_.h\n";
+ push @temp_headers, "../$_.h";
+ $gettext_code = &TextFile_DetermineEncoding ("../$_.h") if ($gettext_support_nonascii and not defined $forced_gettext_code);
+ }
+ else
+ {
+ if ($SRCDIR eq ".") {
+ print OUTFILE "../$_\n";
+ } else {
+ print OUTFILE "$SRCDIR/../$_\n";
+ }
+ $gettext_code = &TextFile_DetermineEncoding ("../$_") if ($gettext_support_nonascii and not defined $forced_gettext_code);
+ }
+
+ next if (! $gettext_support_nonascii);
+
+ if (defined $forced_gettext_code)
+ {
+ $encoding=$forced_gettext_code;
+ }
+ elsif (defined $gettext_code and "$encoding" ne "$gettext_code")
+ {
+ if ($encoding eq "ASCII")
+ {
+ $encoding=$gettext_code;
+ }
+ elsif ($gettext_code ne "ASCII")
+ {
+ # Only report once because the message is quite long
+ if (! $encoding_problem_is_reported)
+ {
+ print STDERR "WARNING: You should use the same file encoding for all your project files,\n".
+ " but $PROGRAM thinks that most of the source files are in\n".
+ " $encoding encoding, while \"$_\" is (likely) in\n".
+ " $gettext_code encoding. If you are sure that all translatable strings\n".
+ " are in same encoding (say UTF-8), please \e[1m*prepend*\e[0m the following\n".
+ " line to POTFILES.in:\n\n".
+ " [encoding: UTF-8]\n\n".
+ " and make sure that configure.in/ac checks for $PACKAGE >= 0.27 .\n".
+ "(such warning message will only be reported once.)\n";
+ $encoding_problem_is_reported = 1;
+ }
+ }
+ }
+ }
+
+ close OUTFILE;
+ close INFILE;
+
+ unlink "$MODULE.pot";
+ my @xgettext_argument=("$XGETTEXT",
+ "--add-comments",
+ "--directory\=\.",
+ "--output\=$MODULE\.pot",
+ "--files-from\=\.\/POTFILES\.in\.temp");
+ my $XGETTEXT_KEYWORDS = &FindPOTKeywords;
+ push @xgettext_argument, $XGETTEXT_KEYWORDS;
+ my $MSGID_BUGS_ADDRESS = &FindMakevarsBugAddress;
+ push @xgettext_argument, "--msgid-bugs-address\=$MSGID_BUGS_ADDRESS" if $MSGID_BUGS_ADDRESS;
+ push @xgettext_argument, "--from-code\=$encoding" if ($gettext_support_nonascii);
+ push @xgettext_argument, $XGETTEXT_ARGS if $XGETTEXT_ARGS;
+ my $xgettext_command = join ' ', @xgettext_argument;
+
+ # intercept xgettext error message
+ print "Running $xgettext_command\n" if $VERBOSE;
+ my $xgettext_error_msg = `$xgettext_command 2>\&1`;
+ my $command_failed = $?;
+
+ unlink "POTFILES.in.temp";
+
+ print "Removing generated header (.h) files..." if $VERBOSE;
+ unlink foreach (@temp_headers);
+ print "done.\n" if $VERBOSE;
+
+ if (! $command_failed)
+ {
+ if (! -e "$MODULE.pot")
+ {
+ print "None of the files in POTFILES.in contain strings marked for translation.\n" if $VERBOSE;
+ }
+ else
+ {
+ print "Wrote $MODULE.pot\n" if $VERBOSE;
+ }
+ }
+ else
+ {
+ if ($xgettext_error_msg =~ /--from-code/)
+ {
+ # replace non-ASCII error message with a more useful one.
+ print STDERR "ERROR: xgettext failed to generate PO template file because there is non-ASCII\n".
+ " string marked for translation. Please make sure that all strings marked\n".
+ " for translation are in uniform encoding (say UTF-8), then \e[1m*prepend*\e[0m the\n".
+ " following line to POTFILES.in and rerun $PROGRAM:\n\n".
+ " [encoding: UTF-8]\n\n";
+ }
+ else
+ {
+ print STDERR "$xgettext_error_msg";
+ if (-e "$MODULE.pot")
+ {
+ # is this possible?
+ print STDERR "ERROR: xgettext failed but still managed to generate PO template file.\n".
+ " Please consult error message above if there is any.\n";
+ }
+ else
+ {
+ print STDERR "ERROR: xgettext failed to generate PO template file. Please consult\n".
+ " error message above if there is any.\n";
+ }
+ }
+ exit (1);
+ }
+}
+
+sub POFile_Update
+{
+ -f "$MODULE.pot" or die "$PROGRAM: $MODULE.pot does not exist.\n";
+
+ my $MSGMERGE = $ENV{"MSGMERGE"} || "@INTLTOOL_MSGMERGE@";
+ my ($lang, $outfile) = @_;
+
+ print "Merging $SRCDIR/$lang.po with $MODULE.pot..." if $VERBOSE;
+
+ my $infile = "$SRCDIR/$lang.po";
+ $outfile = "$SRCDIR/$lang.po" if ($outfile eq "");
+
+ # I think msgmerge won't overwrite old file if merge is not successful
+ system ("$MSGMERGE", "-o", $outfile, $infile, "$MODULE.pot");
+}
+
+sub Console_WriteError_NotExisting
+{
+ my ($file) = @_;
+
+ ## Report error if supplied language file is non-existing
+ print STDERR "$PROGRAM: $file does not exist!\n";
+ print STDERR "Try '$PROGRAM --help' for more information.\n";
+ exit;
+}
+
+sub GatherPOFiles
+{
+ my @po_files = glob ("./*.po");
+
+ @languages = map (&POFile_GetLanguage, @po_files);
+
+ foreach my $lang (@languages)
+ {
+ $po_files_by_lang{$lang} = shift (@po_files);
+ }
+}
+
+sub POFile_GetLanguage ($)
+{
+ s/^(.*\/)?(.+)\.po$/$2/;
+ return $_;
+}
+
+sub Console_Write_TranslationStatus
+{
+ my ($lang, $output_file) = @_;
+ my $MSGFMT = $ENV{"MSGFMT"} || "@INTLTOOL_MSGFMT@";
+
+ $output_file = "$SRCDIR/$lang.po" if ($output_file eq "");
+
+ system ("$MSGFMT", "-o", "$devnull", "--verbose", $output_file);
+}
+
+sub Console_Write_CoverageReport
+{
+ my $MSGFMT = $ENV{"MSGFMT"} || "@INTLTOOL_MSGFMT@";
+
+ &GatherPOFiles;
+
+ foreach my $lang (@languages)
+ {
+ print "$lang: ";
+ &POFile_Update ($lang, "");
+ }
+
+ print "\n\n * Current translation support in $MODULE \n\n";
+
+ foreach my $lang (@languages)
+ {
+ print "$lang: ";
+ system ("$MSGFMT", "-o", "$devnull", "--verbose", "$SRCDIR/$lang.po");
+ }
+}
+
+sub SubstituteVariable
+{
+ my ($str) = @_;
+
+ # always need to rewind file whenever it has been accessed
+ seek (CONF, 0, 0);
+
+ # cache each variable. varhash is global to we can add
+ # variables elsewhere.
+ while (<CONF>)
+ {
+ if (/^(\w+)=(.*)$/)
+ {
+ ($varhash{$1} = $2) =~ s/^["'](.*)["']$/$1/;
+ }
+ }
+
+ if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/)
+ {
+ my $rest = $3;
+ my $untouched = $1;
+ my $sub = "";
+ # Ignore recursive definitions of variables
+ $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\${?$2}?/;
+
+ return SubstituteVariable ("$untouched$sub$rest");
+ }
+
+ # We're using Perl backticks ` and "echo -n" here in order to
+ # expand any shell escapes (such as backticks themselves) in every variable
+ return echo_n ($str);
+}
+
+sub CONF_Handle_Open
+{
+ my $base_dirname = getcwd();
+ $base_dirname =~ s@.*/@@;
+
+ my ($conf_in, $src_dir);
+
+ if ($base_dirname =~ /^po(-.+)?$/)
+ {
+ if (-f "Makevars")
+ {
+ my $makefile_source;
+
+ local (*IN);
+ open (IN, "<Makevars") || die "can't open Makevars: $!";
+
+ while (<IN>)
+ {
+ if (/^top_builddir[ \t]*=/)
+ {
+ $src_dir = $_;
+ $src_dir =~ s/^top_builddir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/;
+
+ chomp $src_dir;
+ if (-f "$src_dir" . "/configure.ac") {
+ $conf_in = "$src_dir" . "/configure.ac" . "\n";
+ } else {
+ $conf_in = "$src_dir" . "/configure.in" . "\n";
+ }
+ last;
+ }
+ }
+ close IN;
+
+ $conf_in || die "Cannot find top_builddir in Makevars.";
+ }
+ elsif (-f "../configure.ac")
+ {
+ $conf_in = "../configure.ac";
+ }
+ elsif (-f "../configure.in")
+ {
+ $conf_in = "../configure.in";
+ }
+ else
+ {
+ my $makefile_source;
+
+ local (*IN);
+ open (IN, "<Makefile") || return;
+
+ while (<IN>)
+ {
+ if (/^top_srcdir[ \t]*=/)
+ {
+ $src_dir = $_;
+ $src_dir =~ s/^top_srcdir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/;
+
+ chomp $src_dir;
+ $conf_in = "$src_dir" . "/configure.in" . "\n";
+
+ last;
+ }
+ }
+ close IN;
+
+ $conf_in || die "Cannot find top_srcdir in Makefile.";
+ }
+
+ open (CONF, "<$conf_in");
+ }
+ else
+ {
+ print STDERR "$PROGRAM: Unable to proceed.\n" .
+ "Make sure to run this script inside the po directory.\n";
+ exit;
+ }
+}
+
+sub FindPackageName
+{
+ my $version;
+ my $domain = &FindMakevarsDomain;
+ my $name = $domain || "untitled";
+
+ &CONF_Handle_Open;
+
+ my $conf_source; {
+ local (*IN);
+ open (IN, "<&CONF") || return $name;
+ seek (IN, 0, 0);
+ local $/; # slurp mode
+ $conf_source = <IN>;
+ close IN;
+ }
+
+ # priority for getting package name:
+ # 1. GETTEXT_PACKAGE
+ # 2. first argument of AC_INIT (with >= 2 arguments)
+ # 3. first argument of AM_INIT_AUTOMAKE (with >= 2 argument)
+
+ # /^AM_INIT_AUTOMAKE\([\s\[]*([^,\)\s\]]+)/m
+ # the \s makes this not work, why?
+ if ($conf_source =~ /^AM_INIT_AUTOMAKE\(([^,\)]+),([^,\)]+)/m)
+ {
+ ($name, $version) = ($1, $2);
+ $name =~ s/[\[\]\s]//g;
+ $version =~ s/[\[\]\s]//g;
+ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
+ $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
+ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
+ $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
+ }
+
+ if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)/m)
+ {
+ ($name, $version) = ($1, $2);
+ $name =~ s/[\[\]\s]//g;
+ $version =~ s/[\[\]\s]//g;
+ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
+ $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
+ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
+ $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
+ }
+
+ # \s makes this not work, why?
+ $name = $1 if $conf_source =~ /^GETTEXT_PACKAGE=\[?([^\n\]]+)/m;
+
+ # m4 macros AC_PACKAGE_NAME, AC_PACKAGE_VERSION etc. have same value
+ # as corresponding $PACKAGE_NAME, $PACKAGE_VERSION etc. shell variables.
+ $name =~ s/\bAC_PACKAGE_/\$PACKAGE_/g;
+
+ $name = $domain if $domain;
+
+ $name = SubstituteVariable ($name);
+ $name =~ s/^["'](.*)["']$/$1/;
+
+ return $name if $name;
+}
+
+
+sub FindPOTKeywords
+{
+
+ my $keywords = "--keyword\=\_ --keyword\=N\_ --keyword\=U\_ --keyword\=Q\_";
+ my $varname = "XGETTEXT_OPTIONS";
+ my $make_source; {
+ local (*IN);
+ open (IN, "<Makevars") || (open(IN, "<Makefile.in.in") && ($varname = "XGETTEXT_KEYWORDS")) || return $keywords;
+ seek (IN, 0, 0);
+ local $/; # slurp mode
+ $make_source = <IN>;
+ close IN;
+ }
+
+ $keywords = $1 if $make_source =~ /^$varname[ ]*=\[?([^\n\]]+)/m;
+
+ return $keywords;
+}
+
+sub FindMakevarsDomain
+{
+
+ my $domain = "";
+ my $makevars_source; {
+ local (*IN);
+ open (IN, "<Makevars") || return $domain;
+ seek (IN, 0, 0);
+ local $/; # slurp mode
+ $makevars_source = <IN>;
+ close IN;
+ }
+
+ $domain = $1 if $makevars_source =~ /^DOMAIN[ ]*=\[?([^\n\]\$]+)/m;
+ $domain =~ s/^\s+//;
+ $domain =~ s/\s+$//;
+
+ return $domain;
+}
+
+sub FindMakevarsBugAddress
+{
+
+ my $address = "";
+ my $makevars_source; {
+ local (*IN);
+ open (IN, "<Makevars") || return undef;
+ seek (IN, 0, 0);
+ local $/; # slurp mode
+ $makevars_source = <IN>;
+ close IN;
+ }
+
+ $address = $1 if $makevars_source =~ /^MSGID_BUGS_ADDRESS[ ]*=\[?([^\n\]\$]+)/m;
+ $address =~ s/^\s+//;
+ $address =~ s/\s+$//;
+
+ return $address;
+}
diff --git a/packages/contacts/files/stock_contact.png b/packages/openmoko-pim/openmoko-contacts/stock_contact.png
index 123b4485ac..123b4485ac 100644
--- a/packages/contacts/files/stock_contact.png
+++ b/packages/openmoko-pim/openmoko-contacts/stock_contact.png
Binary files differ
diff --git a/packages/contacts/files/stock_person.png b/packages/openmoko-pim/openmoko-contacts/stock_person.png
index 2b1328b4e2..2b1328b4e2 100644
--- a/packages/contacts/files/stock_person.png
+++ b/packages/openmoko-pim/openmoko-contacts/stock_person.png
Binary files differ
diff --git a/packages/openmoko-pim/openmoko-contacts_svn.bb b/packages/openmoko-pim/openmoko-contacts_svn.bb
new file mode 100644
index 0000000000..0ee27ef73c
--- /dev/null
+++ b/packages/openmoko-pim/openmoko-contacts_svn.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "The OpenMoko address book"
+LICENSE = "GPL"
+SECTION = "openmoko/pim"
+DEPENDS += "glib-2.0 gtk+ libglade eds-dbus gnome-vfs openmoko-libs"
+RDEPENDS = "gnome-vfs-plugin-file libedata-book"
+RRECOMMENDS = "gnome-vfs-plugin-http"
+PV = "0.1+svn${SRCDATE}"
+PR = "r3"
+
+inherit openmoko
+
+SRC_URI += "\
+ file://intltool-update.in \
+ file://stock_contact.png \
+ file://stock_person.png"
+
+EXTRA_OECONF = "--enable-gnome-vfs"
+
+do_configure_prepend() {
+ install -m 644 ${WORKDIR}/intltool-update.in ${S}
+}
+
+do_install_append () {
+ install -d ${D}/${datadir}/pixmaps
+ install -m 0644 ${WORKDIR}/stock_contact.png ${D}/${datadir}/pixmaps
+ install -m 0644 ${WORKDIR}/stock_person.png ${D}/${datadir}/pixmaps
+}
+
+FILES_${PN} += "${datadir}/pixmaps/stock_contact.png \
+ ${datadir}/pixmaps/stock_person.png"
+
diff --git a/packages/openmoko-pim/openmoko-dates/.mtn2git_empty b/packages/openmoko-pim/openmoko-dates/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openmoko-pim/openmoko-dates/.mtn2git_empty
diff --git a/packages/openmoko-pim/openmoko-dates/compile-fix.patch b/packages/openmoko-pim/openmoko-dates/compile-fix.patch
new file mode 100644
index 0000000000..41b1f173c2
--- /dev/null
+++ b/packages/openmoko-pim/openmoko-dates/compile-fix.patch
@@ -0,0 +1,12 @@
+Index: omoko/src/dates_navigator.c
+===================================================================
+--- omoko.orig/src/dates_navigator.c 2007-02-06 16:49:45.000000000 +0100
++++ omoko/src/dates_navigator.c 2007-02-06 16:51:18.000000000 +0100
+@@ -18,7 +18,6 @@
+
+ #include <string.h>
+
+-#include <libedataserver/e-data-server-util.h>
+ #include <libecal/e-cal.h>
+ #include <libecal/e-cal-time-util.h>
+ #include <libical/ical.h>
diff --git a/packages/openmoko-pim/openmoko-dates/intltool-update.in b/packages/openmoko-pim/openmoko-dates/intltool-update.in
new file mode 100644
index 0000000000..661d8fe6ac
--- /dev/null
+++ b/packages/openmoko-pim/openmoko-dates/intltool-update.in
@@ -0,0 +1,1089 @@
+#!@INTLTOOL_PERL@ -w
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+
+#
+# The Intltool Message Updater
+#
+# Copyright (C) 2000-2003 Free Software Foundation.
+#
+# Intltool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# version 2 published by the Free Software Foundation.
+#
+# Intltool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+#
+# Authors: Kenneth Christiansen <kenneth@gnu.org>
+# Maciej Stachowiak
+# Darin Adler <darin@bentspoon.com>
+
+## Release information
+my $PROGRAM = "intltool-update";
+my $VERSION = "0.35.0";
+my $PACKAGE = "intltool";
+
+## Loaded modules
+use strict;
+use Getopt::Long;
+use Cwd;
+use File::Copy;
+use File::Find;
+
+## Scalars used by the option stuff
+my $HELP_ARG = 0;
+my $VERSION_ARG = 0;
+my $DIST_ARG = 0;
+my $POT_ARG = 0;
+my $HEADERS_ARG = 0;
+my $MAINTAIN_ARG = 0;
+my $REPORT_ARG = 0;
+my $VERBOSE = 0;
+my $GETTEXT_PACKAGE = "";
+my $OUTPUT_FILE = "";
+
+my @languages;
+my %varhash = ();
+my %po_files_by_lang = ();
+
+# Regular expressions to categorize file types.
+# FIXME: Please check if the following is correct
+
+my $xml_support =
+"xml(?:\\.in)*|". # http://www.w3.org/XML/ (Note: .in is not required)
+"ui|". # Bonobo specific - User Interface desc. files
+"lang|". # ?
+"glade2?(?:\\.in)*|". # Glade specific - User Interface desc. files (Note: .in is not required)
+"scm(?:\\.in)*|". # ? (Note: .in is not required)
+"oaf(?:\\.in)+|". # DEPRECATED: Replaces by Bonobo .server files
+"etspec|". # ?
+"server(?:\\.in)+|". # Bonobo specific
+"sheet(?:\\.in)+|". # ?
+"schemas(?:\\.in)+|". # GConf specific
+"pong(?:\\.in)+|". # DEPRECATED: PONG is not used [by GNOME] any longer.
+"kbd(?:\\.in)+"; # GOK specific.
+
+my $ini_support =
+"icon(?:\\.in)+|". # http://www.freedesktop.org/Standards/icon-theme-spec
+"desktop(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec
+"caves(?:\\.in)+|". # GNOME Games specific
+"directory(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec
+"soundlist(?:\\.in)+|". # GNOME specific
+"keys(?:\\.in)+|". # GNOME Mime database specific
+"theme(?:\\.in)+|". # http://www.freedesktop.org/Standards/icon-theme-spec
+"service(?:\\.in)+"; # DBus specific
+
+my $buildin_gettext_support =
+"c|y|cs|cc|cpp|c\\+\\+|h|hh|gob|py";
+
+## Always flush buffer when printing
+$| = 1;
+
+## Sometimes the source tree will be rooted somewhere else.
+my $SRCDIR = ".";
+my $POTFILES_in;
+
+$SRCDIR = $ENV{"srcdir"} if $ENV{"srcdir"};
+$POTFILES_in = "<$SRCDIR/POTFILES.in";
+
+my $devnull = ($^O eq 'MSWin32' ? 'NUL:' : '/dev/null');
+
+## Handle options
+GetOptions
+(
+ "help" => \$HELP_ARG,
+ "version" => \$VERSION_ARG,
+ "dist|d" => \$DIST_ARG,
+ "pot|p" => \$POT_ARG,
+ "headers|s" => \$HEADERS_ARG,
+ "maintain|m" => \$MAINTAIN_ARG,
+ "report|r" => \$REPORT_ARG,
+ "verbose|x" => \$VERBOSE,
+ "gettext-package|g=s" => \$GETTEXT_PACKAGE,
+ "output-file|o=s" => \$OUTPUT_FILE,
+ ) or &Console_WriteError_InvalidOption;
+
+&Console_Write_IntltoolHelp if $HELP_ARG;
+&Console_Write_IntltoolVersion if $VERSION_ARG;
+
+my $arg_count = ($DIST_ARG > 0)
+ + ($POT_ARG > 0)
+ + ($HEADERS_ARG > 0)
+ + ($MAINTAIN_ARG > 0)
+ + ($REPORT_ARG > 0);
+
+&Console_Write_IntltoolHelp if $arg_count > 1;
+
+# --version and --help don't require a module name
+my $MODULE = $GETTEXT_PACKAGE || &FindPackageName || "unknown";
+
+if ($POT_ARG)
+{
+ &GenerateHeaders;
+ &GeneratePOTemplate;
+}
+elsif ($HEADERS_ARG)
+{
+ &GenerateHeaders;
+}
+elsif ($MAINTAIN_ARG)
+{
+ &FindLeftoutFiles;
+}
+elsif ($REPORT_ARG)
+{
+ &GenerateHeaders;
+ &GeneratePOTemplate;
+ &Console_Write_CoverageReport;
+}
+elsif ((defined $ARGV[0]) && $ARGV[0] =~ /^[a-z]/)
+{
+ my $lang = $ARGV[0];
+
+ ## Report error if the language file supplied
+ ## to the command line is non-existent
+ &Console_WriteError_NotExisting("$SRCDIR/$lang.po")
+ if ! -s "$SRCDIR/$lang.po";
+
+ if (!$DIST_ARG)
+ {
+ print "Working, please wait..." if $VERBOSE;
+ &GenerateHeaders;
+ &GeneratePOTemplate;
+ }
+ &POFile_Update ($lang, $OUTPUT_FILE);
+ &Console_Write_TranslationStatus ($lang, $OUTPUT_FILE);
+}
+else
+{
+ &Console_Write_IntltoolHelp;
+}
+
+exit;
+
+#########
+
+sub Console_Write_IntltoolVersion
+{
+ print <<_EOF_;
+${PROGRAM} (${PACKAGE}) $VERSION
+Written by Kenneth Christiansen, Maciej Stachowiak, and Darin Adler.
+
+Copyright (C) 2000-2003 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+_EOF_
+ exit;
+}
+
+sub Console_Write_IntltoolHelp
+{
+ print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... LANGCODE
+Updates PO template files and merge them with the translations.
+
+Mode of operation (only one is allowed):
+ -p, --pot generate the PO template only
+ -s, --headers generate the header files in POTFILES.in
+ -m, --maintain search for left out files from POTFILES.in
+ -r, --report display a status report for the module
+ -d, --dist merge LANGCODE.po with existing PO template
+
+Extra options:
+ -g, --gettext-package=NAME override PO template name, useful with --pot
+ -o, --output-file=FILE write merged translation to FILE
+ -x, --verbose display lots of feedback
+ --help display this help and exit
+ --version output version information and exit
+
+Examples of use:
+${PROGRAM} --pot just create a new PO template
+${PROGRAM} xy create new PO template and merge xy.po with it
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+ exit;
+}
+
+sub echo_n
+{
+ my $str = shift;
+ my $ret = `echo "$str"`;
+
+ $ret =~ s/\n$//; # do we need the "s" flag?
+
+ return $ret;
+}
+
+sub POFile_DetermineType ($)
+{
+ my $type = $_;
+ my $gettext_type;
+
+ my $xml_regex = "(?:" . $xml_support . ")";
+ my $ini_regex = "(?:" . $ini_support . ")";
+ my $buildin_regex = "(?:" . $buildin_gettext_support . ")";
+
+ if ($type =~ /\[type: gettext\/([^\]].*)]/)
+ {
+ $gettext_type=$1;
+ }
+ elsif ($type =~ /schemas(\.in)+$/)
+ {
+ $gettext_type="schemas";
+ }
+ elsif ($type =~ /glade2?(\.in)*$/)
+ {
+ $gettext_type="glade";
+ }
+ elsif ($type =~ /scm(\.in)*$/)
+ {
+ $gettext_type="scheme";
+ }
+ elsif ($type =~ /keys(\.in)+$/)
+ {
+ $gettext_type="keys";
+ }
+
+ # bucket types
+
+ elsif ($type =~ /$xml_regex$/)
+ {
+ $gettext_type="xml";
+ }
+ elsif ($type =~ /$ini_regex$/)
+ {
+ $gettext_type="ini";
+ }
+ elsif ($type =~ /$buildin_regex$/)
+ {
+ $gettext_type="buildin";
+ }
+ else
+ {
+ $gettext_type="unknown";
+ }
+
+ return "gettext\/$gettext_type";
+}
+
+sub TextFile_DetermineEncoding ($)
+{
+ my $gettext_code="ASCII"; # All files are ASCII by default
+ my $filetype=`file $_ | cut -d ' ' -f 2`;
+
+ if ($? eq "0")
+ {
+ if ($filetype =~ /^(ISO|UTF)/)
+ {
+ chomp ($gettext_code = $filetype);
+ }
+ elsif ($filetype =~ /^XML/)
+ {
+ $gettext_code="UTF-8"; # We asume that .glade and other .xml files are UTF-8
+ }
+ }
+
+ return $gettext_code;
+}
+
+sub isNotValidMissing
+{
+ my ($file) = @_;
+
+ return if $file =~ /^\{arch\}\/.*$/;
+ return if $file =~ /^$varhash{"PACKAGE"}-$varhash{"VERSION"}\/.*$/;
+}
+
+sub FindLeftoutFiles
+{
+ my (@buf_i18n_plain,
+ @buf_i18n_xml,
+ @buf_i18n_xml_unmarked,
+ @buf_i18n_ini,
+ @buf_potfiles,
+ @buf_potfiles_ignore,
+ @buf_allfiles,
+ @buf_allfiles_sorted,
+ @buf_potfiles_sorted
+ );
+
+ ## Search and find all translatable files
+ find sub {
+ push @buf_i18n_plain, "$File::Find::name" if /\.($buildin_gettext_support)$/;
+ push @buf_i18n_xml, "$File::Find::name" if /\.($xml_support)$/;
+ push @buf_i18n_ini, "$File::Find::name" if /\.($ini_support)$/;
+ push @buf_i18n_xml_unmarked, "$File::Find::name" if /\.(schemas(\.in)+)$/;
+ }, "..";
+
+
+ open POTFILES, $POTFILES_in or die "$PROGRAM: there's no POTFILES.in!\n";
+ @buf_potfiles = grep !/^(#|\s*$)/, <POTFILES>;
+ close POTFILES;
+
+ foreach (@buf_potfiles) {
+ s/^\[.*]\s*//;
+ }
+
+ print "Searching for missing translatable files...\n" if $VERBOSE;
+
+ ## Check if we should ignore some found files, when
+ ## comparing with POTFILES.in
+ foreach my $ignore ("POTFILES.skip", "POTFILES.ignore")
+ {
+ (-s $ignore) or next;
+
+ if ("$ignore" eq "POTFILES.ignore")
+ {
+ print "The usage of POTFILES.ignore is deprecated. Please consider moving the\n".
+ "content of this file to POTFILES.skip.\n";
+ }
+
+ print "Found $ignore: Ignoring files...\n" if $VERBOSE;
+ open FILE, "<$ignore" or die "ERROR: Failed to open $ignore!\n";
+
+ while (<FILE>)
+ {
+ push @buf_potfiles_ignore, $_ unless /^(#|\s*$)/;
+ }
+ close FILE;
+
+ @buf_potfiles = (@buf_potfiles_ignore, @buf_potfiles);
+ }
+
+ foreach my $file (@buf_i18n_plain)
+ {
+ my $in_comment = 0;
+ my $in_macro = 0;
+
+ open FILE, "<$file";
+ while (<FILE>)
+ {
+ # Handle continued multi-line comment.
+ if ($in_comment)
+ {
+ next unless s-.*\*/--;
+ $in_comment = 0;
+ }
+
+ # Handle continued macro.
+ if ($in_macro)
+ {
+ $in_macro = 0 unless /\\$/;
+ next;
+ }
+
+ # Handle start of macro (or any preprocessor directive).
+ if (/^\s*\#/)
+ {
+ $in_macro = 1 if /^([^\\]|\\.)*\\$/;
+ next;
+ }
+
+ # Handle comments and quoted text.
+ while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy
+ {
+ my $match = $1;
+ if ($match eq "/*")
+ {
+ if (!s-/\*.*?\*/--)
+ {
+ s-/\*.*--;
+ $in_comment = 1;
+ }
+ }
+ elsif ($match eq "//")
+ {
+ s-//.*--;
+ }
+ else # ' or "
+ {
+ if (!s-$match([^\\]|\\.)*?$match-QUOTEDTEXT-)
+ {
+ warn "mismatched quotes at line $. in $file\n";
+ s-$match.*--;
+ }
+ }
+ }
+
+ if (/\.GetString ?\(QUOTEDTEXT/)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ ## Remove the first 3 chars and add newline
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ last;
+ }
+
+ if (/_\(QUOTEDTEXT/)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ ## Remove the first 3 chars and add newline
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ last;
+ }
+ }
+ close FILE;
+ }
+
+ foreach my $file (@buf_i18n_xml)
+ {
+ open FILE, "<$file";
+
+ while (<FILE>)
+ {
+ # FIXME: share the pattern matching code with intltool-extract
+ if (/\s_[-A-Za-z0-9._:]+\s*=\s*\"([^"]+)\"/ || /<_[^>]+>/ || /translatable=\"yes\"/)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ last;
+ }
+ }
+ close FILE;
+ }
+
+ foreach my $file (@buf_i18n_ini)
+ {
+ open FILE, "<$file";
+ while (<FILE>)
+ {
+ if (/_(.*)=/)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ last;
+ }
+ }
+ close FILE;
+ }
+
+ foreach my $file (@buf_i18n_xml_unmarked)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ }
+
+
+ @buf_allfiles_sorted = sort (@buf_allfiles);
+ @buf_potfiles_sorted = sort (@buf_potfiles);
+
+ my %in2;
+ foreach (@buf_potfiles_sorted)
+ {
+ $in2{$_} = 1;
+ }
+
+ my @result;
+
+ foreach (@buf_allfiles_sorted)
+ {
+ if (!exists($in2{$_}))
+ {
+ push @result, $_
+ }
+ }
+
+ my @buf_potfiles_notexist;
+
+ foreach (@buf_potfiles_sorted)
+ {
+ chomp (my $dummy = $_);
+ if ("$dummy" ne "" and ! -f "../$dummy")
+ {
+ push @buf_potfiles_notexist, $_;
+ }
+ }
+
+ ## Save file with information about the files missing
+ ## if any, and give information about this procedure.
+ if (@result + @buf_potfiles_notexist > 0)
+ {
+ if (@result)
+ {
+ print "\n" if $VERBOSE;
+ unlink "missing";
+ open OUT, ">missing";
+ print OUT @result;
+ close OUT;
+ warn "\e[1mThe following files contain translations and are currently not in use. Please\e[0m\n".
+ "\e[1mconsider adding these to the POTFILES.in file, located in the po/ directory.\e[0m\n\n";
+ print STDERR @result, "\n";
+ warn "If some of these files are left out on purpose then please add them to\n".
+ "POTFILES.skip instead of POTFILES.in. A file \e[1m'missing'\e[0m containing this list\n".
+ "of left out files has been written in the current directory.\n";
+ }
+ if (@buf_potfiles_notexist)
+ {
+ unlink "notexist";
+ open OUT, ">notexist";
+ print OUT @buf_potfiles_notexist;
+ close OUT;
+ warn "\n" if ($VERBOSE or @result);
+ warn "\e[1mThe following files do not exist anymore:\e[0m\n\n";
+ warn @buf_potfiles_notexist, "\n";
+ warn "Please remove them from POTFILES.in or POTFILES.skip. A file \e[1m'notexist'\e[0m\n".
+ "containing this list of absent files has been written in the current directory.\n";
+ }
+ }
+
+ ## If there is nothing to complain about, notify the user
+ else {
+ print "\nAll files containing translations are present in POTFILES.in.\n" if $VERBOSE;
+ }
+}
+
+sub Console_WriteError_InvalidOption
+{
+ ## Handle invalid arguments
+ print STDERR "Try `${PROGRAM} --help' for more information.\n";
+ exit 1;
+}
+
+sub GenerateHeaders
+{
+ my $EXTRACT = "@INTLTOOL_EXTRACT@";
+ chomp $EXTRACT;
+
+ $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} if $ENV{"INTLTOOL_EXTRACT"};
+
+ ## Generate the .h header files, so we can allow glade and
+ ## xml translation support
+ if (! -x "$EXTRACT")
+ {
+ print STDERR "\n *** The intltool-extract script wasn't found!"
+ ."\n *** Without it, intltool-update can not generate files.\n";
+ exit;
+ }
+ else
+ {
+ open (FILE, $POTFILES_in) or die "$PROGRAM: POTFILES.in not found.\n";
+
+ while (<FILE>)
+ {
+ chomp;
+ next if /^\[\s*encoding/;
+
+ ## Find xml files in POTFILES.in and generate the
+ ## files with help from the extract script
+
+ my $gettext_type= &POFile_DetermineType ($1);
+
+ if (/\.($xml_support|$ini_support)$/ || /^\[/)
+ {
+ s/^\[[^\[].*]\s*//;
+
+ my $filename = "../$_";
+
+ if ($VERBOSE)
+ {
+ system ($EXTRACT, "--update", "--srcdir=$SRCDIR",
+ "--type=$gettext_type", $filename);
+ }
+ else
+ {
+ system ($EXTRACT, "--update", "--type=$gettext_type",
+ "--srcdir=$SRCDIR", "--quiet", $filename);
+ }
+ }
+ }
+ close FILE;
+ }
+}
+
+#
+# Generate .pot file from POTFILES.in
+#
+sub GeneratePOTemplate
+{
+ my $XGETTEXT = $ENV{"XGETTEXT"} || "@INTLTOOL_XGETTEXT@";
+ my $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} || '';
+ chomp $XGETTEXT;
+
+ if (! -x $XGETTEXT)
+ {
+ print STDERR " *** xgettext is not found on this system!\n".
+ " *** Without it, intltool-update can not extract strings.\n";
+ exit;
+ }
+
+ print "Building $MODULE.pot...\n" if $VERBOSE;
+
+ open INFILE, $POTFILES_in;
+ unlink "POTFILES.in.temp";
+ open OUTFILE, ">POTFILES.in.temp" or die("Cannot open POTFILES.in.temp for writing");
+
+ my $gettext_support_nonascii = 0;
+
+ # checks for GNU gettext >= 0.12
+ my $dummy = `$XGETTEXT --version --from-code=UTF-8 >$devnull 2>$devnull`;
+ if ($? == 0)
+ {
+ $gettext_support_nonascii = 1;
+ }
+ else
+ {
+ # urge everybody to upgrade gettext
+ print STDERR "WARNING: This version of gettext does not support extracting non-ASCII\n".
+ " strings. That means you should install a version of gettext\n".
+ " that supports non-ASCII strings (such as GNU gettext >= 0.12),\n".
+ " or have to let non-ASCII strings untranslated. (If there is any)\n";
+ }
+
+ my $encoding = "ASCII";
+ my $forced_gettext_code;
+ my @temp_headers;
+ my $encoding_problem_is_reported = 0;
+
+ while (<INFILE>)
+ {
+ next if (/^#/ or /^\s*$/);
+
+ chomp;
+
+ my $gettext_code;
+
+ if (/^\[\s*encoding:\s*(.*)\s*\]/)
+ {
+ $forced_gettext_code=$1;
+ }
+ elsif (/\.($xml_support|$ini_support)$/ || /^\[/)
+ {
+ s/^\[.*]\s*//;
+ print OUTFILE "../$_.h\n";
+ push @temp_headers, "../$_.h";
+ $gettext_code = &TextFile_DetermineEncoding ("../$_.h") if ($gettext_support_nonascii and not defined $forced_gettext_code);
+ }
+ else
+ {
+ if ($SRCDIR eq ".") {
+ print OUTFILE "../$_\n";
+ } else {
+ print OUTFILE "$SRCDIR/../$_\n";
+ }
+ $gettext_code = &TextFile_DetermineEncoding ("../$_") if ($gettext_support_nonascii and not defined $forced_gettext_code);
+ }
+
+ next if (! $gettext_support_nonascii);
+
+ if (defined $forced_gettext_code)
+ {
+ $encoding=$forced_gettext_code;
+ }
+ elsif (defined $gettext_code and "$encoding" ne "$gettext_code")
+ {
+ if ($encoding eq "ASCII")
+ {
+ $encoding=$gettext_code;
+ }
+ elsif ($gettext_code ne "ASCII")
+ {
+ # Only report once because the message is quite long
+ if (! $encoding_problem_is_reported)
+ {
+ print STDERR "WARNING: You should use the same file encoding for all your project files,\n".
+ " but $PROGRAM thinks that most of the source files are in\n".
+ " $encoding encoding, while \"$_\" is (likely) in\n".
+ " $gettext_code encoding. If you are sure that all translatable strings\n".
+ " are in same encoding (say UTF-8), please \e[1m*prepend*\e[0m the following\n".
+ " line to POTFILES.in:\n\n".
+ " [encoding: UTF-8]\n\n".
+ " and make sure that configure.in/ac checks for $PACKAGE >= 0.27 .\n".
+ "(such warning message will only be reported once.)\n";
+ $encoding_problem_is_reported = 1;
+ }
+ }
+ }
+ }
+
+ close OUTFILE;
+ close INFILE;
+
+ unlink "$MODULE.pot";
+ my @xgettext_argument=("$XGETTEXT",
+ "--add-comments",
+ "--directory\=\.",
+ "--output\=$MODULE\.pot",
+ "--files-from\=\.\/POTFILES\.in\.temp");
+ my $XGETTEXT_KEYWORDS = &FindPOTKeywords;
+ push @xgettext_argument, $XGETTEXT_KEYWORDS;
+ my $MSGID_BUGS_ADDRESS = &FindMakevarsBugAddress;
+ push @xgettext_argument, "--msgid-bugs-address\=$MSGID_BUGS_ADDRESS" if $MSGID_BUGS_ADDRESS;
+ push @xgettext_argument, "--from-code\=$encoding" if ($gettext_support_nonascii);
+ push @xgettext_argument, $XGETTEXT_ARGS if $XGETTEXT_ARGS;
+ my $xgettext_command = join ' ', @xgettext_argument;
+
+ # intercept xgettext error message
+ print "Running $xgettext_command\n" if $VERBOSE;
+ my $xgettext_error_msg = `$xgettext_command 2>\&1`;
+ my $command_failed = $?;
+
+ unlink "POTFILES.in.temp";
+
+ print "Removing generated header (.h) files..." if $VERBOSE;
+ unlink foreach (@temp_headers);
+ print "done.\n" if $VERBOSE;
+
+ if (! $command_failed)
+ {
+ if (! -e "$MODULE.pot")
+ {
+ print "None of the files in POTFILES.in contain strings marked for translation.\n" if $VERBOSE;
+ }
+ else
+ {
+ print "Wrote $MODULE.pot\n" if $VERBOSE;
+ }
+ }
+ else
+ {
+ if ($xgettext_error_msg =~ /--from-code/)
+ {
+ # replace non-ASCII error message with a more useful one.
+ print STDERR "ERROR: xgettext failed to generate PO template file because there is non-ASCII\n".
+ " string marked for translation. Please make sure that all strings marked\n".
+ " for translation are in uniform encoding (say UTF-8), then \e[1m*prepend*\e[0m the\n".
+ " following line to POTFILES.in and rerun $PROGRAM:\n\n".
+ " [encoding: UTF-8]\n\n";
+ }
+ else
+ {
+ print STDERR "$xgettext_error_msg";
+ if (-e "$MODULE.pot")
+ {
+ # is this possible?
+ print STDERR "ERROR: xgettext failed but still managed to generate PO template file.\n".
+ " Please consult error message above if there is any.\n";
+ }
+ else
+ {
+ print STDERR "ERROR: xgettext failed to generate PO template file. Please consult\n".
+ " error message above if there is any.\n";
+ }
+ }
+ exit (1);
+ }
+}
+
+sub POFile_Update
+{
+ -f "$MODULE.pot" or die "$PROGRAM: $MODULE.pot does not exist.\n";
+
+ my $MSGMERGE = $ENV{"MSGMERGE"} || "@INTLTOOL_MSGMERGE@";
+ my ($lang, $outfile) = @_;
+
+ print "Merging $SRCDIR/$lang.po with $MODULE.pot..." if $VERBOSE;
+
+ my $infile = "$SRCDIR/$lang.po";
+ $outfile = "$SRCDIR/$lang.po" if ($outfile eq "");
+
+ # I think msgmerge won't overwrite old file if merge is not successful
+ system ("$MSGMERGE", "-o", $outfile, $infile, "$MODULE.pot");
+}
+
+sub Console_WriteError_NotExisting
+{
+ my ($file) = @_;
+
+ ## Report error if supplied language file is non-existing
+ print STDERR "$PROGRAM: $file does not exist!\n";
+ print STDERR "Try '$PROGRAM --help' for more information.\n";
+ exit;
+}
+
+sub GatherPOFiles
+{
+ my @po_files = glob ("./*.po");
+
+ @languages = map (&POFile_GetLanguage, @po_files);
+
+ foreach my $lang (@languages)
+ {
+ $po_files_by_lang{$lang} = shift (@po_files);
+ }
+}
+
+sub POFile_GetLanguage ($)
+{
+ s/^(.*\/)?(.+)\.po$/$2/;
+ return $_;
+}
+
+sub Console_Write_TranslationStatus
+{
+ my ($lang, $output_file) = @_;
+ my $MSGFMT = $ENV{"MSGFMT"} || "@INTLTOOL_MSGFMT@";
+
+ $output_file = "$SRCDIR/$lang.po" if ($output_file eq "");
+
+ system ("$MSGFMT", "-o", "$devnull", "--verbose", $output_file);
+}
+
+sub Console_Write_CoverageReport
+{
+ my $MSGFMT = $ENV{"MSGFMT"} || "@INTLTOOL_MSGFMT@";
+
+ &GatherPOFiles;
+
+ foreach my $lang (@languages)
+ {
+ print "$lang: ";
+ &POFile_Update ($lang, "");
+ }
+
+ print "\n\n * Current translation support in $MODULE \n\n";
+
+ foreach my $lang (@languages)
+ {
+ print "$lang: ";
+ system ("$MSGFMT", "-o", "$devnull", "--verbose", "$SRCDIR/$lang.po");
+ }
+}
+
+sub SubstituteVariable
+{
+ my ($str) = @_;
+
+ # always need to rewind file whenever it has been accessed
+ seek (CONF, 0, 0);
+
+ # cache each variable. varhash is global to we can add
+ # variables elsewhere.
+ while (<CONF>)
+ {
+ if (/^(\w+)=(.*)$/)
+ {
+ ($varhash{$1} = $2) =~ s/^["'](.*)["']$/$1/;
+ }
+ }
+
+ if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/)
+ {
+ my $rest = $3;
+ my $untouched = $1;
+ my $sub = "";
+ # Ignore recursive definitions of variables
+ $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\${?$2}?/;
+
+ return SubstituteVariable ("$untouched$sub$rest");
+ }
+
+ # We're using Perl backticks ` and "echo -n" here in order to
+ # expand any shell escapes (such as backticks themselves) in every variable
+ return echo_n ($str);
+}
+
+sub CONF_Handle_Open
+{
+ my $base_dirname = getcwd();
+ $base_dirname =~ s@.*/@@;
+
+ my ($conf_in, $src_dir);
+
+ if ($base_dirname =~ /^po(-.+)?$/)
+ {
+ if (-f "Makevars")
+ {
+ my $makefile_source;
+
+ local (*IN);
+ open (IN, "<Makevars") || die "can't open Makevars: $!";
+
+ while (<IN>)
+ {
+ if (/^top_builddir[ \t]*=/)
+ {
+ $src_dir = $_;
+ $src_dir =~ s/^top_builddir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/;
+
+ chomp $src_dir;
+ if (-f "$src_dir" . "/configure.ac") {
+ $conf_in = "$src_dir" . "/configure.ac" . "\n";
+ } else {
+ $conf_in = "$src_dir" . "/configure.in" . "\n";
+ }
+ last;
+ }
+ }
+ close IN;
+
+ $conf_in || die "Cannot find top_builddir in Makevars.";
+ }
+ elsif (-f "../configure.ac")
+ {
+ $conf_in = "../configure.ac";
+ }
+ elsif (-f "../configure.in")
+ {
+ $conf_in = "../configure.in";
+ }
+ else
+ {
+ my $makefile_source;
+
+ local (*IN);
+ open (IN, "<Makefile") || return;
+
+ while (<IN>)
+ {
+ if (/^top_srcdir[ \t]*=/)
+ {
+ $src_dir = $_;
+ $src_dir =~ s/^top_srcdir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/;
+
+ chomp $src_dir;
+ $conf_in = "$src_dir" . "/configure.in" . "\n";
+
+ last;
+ }
+ }
+ close IN;
+
+ $conf_in || die "Cannot find top_srcdir in Makefile.";
+ }
+
+ open (CONF, "<$conf_in");
+ }
+ else
+ {
+ print STDERR "$PROGRAM: Unable to proceed.\n" .
+ "Make sure to run this script inside the po directory.\n";
+ exit;
+ }
+}
+
+sub FindPackageName
+{
+ my $version;
+ my $domain = &FindMakevarsDomain;
+ my $name = $domain || "untitled";
+
+ &CONF_Handle_Open;
+
+ my $conf_source; {
+ local (*IN);
+ open (IN, "<&CONF") || return $name;
+ seek (IN, 0, 0);
+ local $/; # slurp mode
+ $conf_source = <IN>;
+ close IN;
+ }
+
+ # priority for getting package name:
+ # 1. GETTEXT_PACKAGE
+ # 2. first argument of AC_INIT (with >= 2 arguments)
+ # 3. first argument of AM_INIT_AUTOMAKE (with >= 2 argument)
+
+ # /^AM_INIT_AUTOMAKE\([\s\[]*([^,\)\s\]]+)/m
+ # the \s makes this not work, why?
+ if ($conf_source =~ /^AM_INIT_AUTOMAKE\(([^,\)]+),([^,\)]+)/m)
+ {
+ ($name, $version) = ($1, $2);
+ $name =~ s/[\[\]\s]//g;
+ $version =~ s/[\[\]\s]//g;
+ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
+ $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
+ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
+ $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
+ }
+
+ if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)/m)
+ {
+ ($name, $version) = ($1, $2);
+ $name =~ s/[\[\]\s]//g;
+ $version =~ s/[\[\]\s]//g;
+ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
+ $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
+ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
+ $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
+ }
+
+ # \s makes this not work, why?
+ $name = $1 if $conf_source =~ /^GETTEXT_PACKAGE=\[?([^\n\]]+)/m;
+
+ # m4 macros AC_PACKAGE_NAME, AC_PACKAGE_VERSION etc. have same value
+ # as corresponding $PACKAGE_NAME, $PACKAGE_VERSION etc. shell variables.
+ $name =~ s/\bAC_PACKAGE_/\$PACKAGE_/g;
+
+ $name = $domain if $domain;
+
+ $name = SubstituteVariable ($name);
+ $name =~ s/^["'](.*)["']$/$1/;
+
+ return $name if $name;
+}
+
+
+sub FindPOTKeywords
+{
+
+ my $keywords = "--keyword\=\_ --keyword\=N\_ --keyword\=U\_ --keyword\=Q\_";
+ my $varname = "XGETTEXT_OPTIONS";
+ my $make_source; {
+ local (*IN);
+ open (IN, "<Makevars") || (open(IN, "<Makefile.in.in") && ($varname = "XGETTEXT_KEYWORDS")) || return $keywords;
+ seek (IN, 0, 0);
+ local $/; # slurp mode
+ $make_source = <IN>;
+ close IN;
+ }
+
+ $keywords = $1 if $make_source =~ /^$varname[ ]*=\[?([^\n\]]+)/m;
+
+ return $keywords;
+}
+
+sub FindMakevarsDomain
+{
+
+ my $domain = "";
+ my $makevars_source; {
+ local (*IN);
+ open (IN, "<Makevars") || return $domain;
+ seek (IN, 0, 0);
+ local $/; # slurp mode
+ $makevars_source = <IN>;
+ close IN;
+ }
+
+ $domain = $1 if $makevars_source =~ /^DOMAIN[ ]*=\[?([^\n\]\$]+)/m;
+ $domain =~ s/^\s+//;
+ $domain =~ s/\s+$//;
+
+ return $domain;
+}
+
+sub FindMakevarsBugAddress
+{
+
+ my $address = "";
+ my $makevars_source; {
+ local (*IN);
+ open (IN, "<Makevars") || return undef;
+ seek (IN, 0, 0);
+ local $/; # slurp mode
+ $makevars_source = <IN>;
+ close IN;
+ }
+
+ $address = $1 if $makevars_source =~ /^MSGID_BUGS_ADDRESS[ ]*=\[?([^\n\]\$]+)/m;
+ $address =~ s/^\s+//;
+ $address =~ s/\s+$//;
+
+ return $address;
+}
diff --git a/packages/openmoko-pim/openmoko-dates/om-dates-temp-buildfix_20070308.patch b/packages/openmoko-pim/openmoko-dates/om-dates-temp-buildfix_20070308.patch
new file mode 100644
index 0000000000..04d6b4b8c1
--- /dev/null
+++ b/packages/openmoko-pim/openmoko-dates/om-dates-temp-buildfix_20070308.patch
@@ -0,0 +1,8 @@
+--- openmoko/po/LINGUAS.orig 2007-03-08 11:07:44.000000000 +0000
++++ openmoko/po/LINGUAS 2007-03-08 11:07:52.000000000 +0000
+@@ -1,5 +1,4 @@
+ et
+ fr
+ nl
+-pl
+ ru
diff --git a/packages/openmoko-pim/openmoko-dates/remove-bogus-include.patch b/packages/openmoko-pim/openmoko-dates/remove-bogus-include.patch
new file mode 100644
index 0000000000..4740612a8b
--- /dev/null
+++ b/packages/openmoko-pim/openmoko-dates/remove-bogus-include.patch
@@ -0,0 +1,10 @@
+--- /tmp/dates_navigator.c 2007-02-15 13:36:27.000000000 +0100
++++ omoko/src/dates_navigator.c 2007-02-15 13:36:35.435251000 +0100
+@@ -21,7 +21,6 @@
+ #include <libecal/e-cal.h>
+ #include <libecal/e-cal-time-util.h>
+ #include <libical/ical.h>
+-#include <libedataserver/e-data-server-util.h>
+
+ #include <gtk/gtk.h>
+ #include <glib/gi18n.h>
diff --git a/packages/openmoko-pim/openmoko-dates_svn.bb b/packages/openmoko-pim/openmoko-dates_svn.bb
new file mode 100644
index 0000000000..58f07c7eb5
--- /dev/null
+++ b/packages/openmoko-pim/openmoko-dates_svn.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Dates is a calendar application."
+SECTION = "openmoko/pim"
+LICENSE = "GPL"
+DEPENDS = "glib-2.0 gtk+ libglade eds-dbus openmoko-libs"
+RDEPENDS = "libedata-cal"
+RCONFLICTS_${PN} = "dates"
+PV = "0.1+svn${SRCDATE}"
+PR = "r8"
+
+inherit gnome autotools pkgconfig gtk-icon-cache
+
+SRC_URI = "svn://svn.o-hand.com/repos/dates/branches/;module=openmoko;proto=http \
+ file://om-dates-temp-buildfix_20070308.patch;maxdate=20070406;patch=p1"
+
+S = "${WORKDIR}/openmoko"
+
+EXTRA_OECONF = "--enable-omoko"
+
+do_install_append () {
+ install -d ${D}/${datadir}/pixmaps
+ install -m 0644 ${D}/${datadir}/icons/hicolor/48x48/apps/dates.png ${D}/${datadir}/pixmaps/
+}
+
+FILES_${PN} += "${datadir}/pixmaps/dates.png \
+ ${datadir}/dates/"
+
+PRIVATE_LIBS = "libgtkdatesview.so.0"
diff --git a/packages/openmoko-pim/openmoko-today_svn.bb b/packages/openmoko-pim/openmoko-today_svn.bb
new file mode 100644
index 0000000000..74e79b85f1
--- /dev/null
+++ b/packages/openmoko-pim/openmoko-today_svn.bb
@@ -0,0 +1,8 @@
+DESCRIPTION = "OpenMoko Today application."
+SECTION = "openmoko/pim"
+LICENSE = "GPL"
+DEPENDS = "openmoko-libs eds-dbus"
+PV = "0.1+svn${SRCDATE}"
+
+inherit autotools pkgconfig gtk-icon-cache openmoko
+
diff --git a/packages/openmoko-tools/.mtn2git_empty b/packages/openmoko-tools/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openmoko-tools/.mtn2git_empty
diff --git a/packages/openmoko-tools/openmoko-chordmaster_svn.bb b/packages/openmoko-tools/openmoko-chordmaster_svn.bb
new file mode 100644
index 0000000000..5dd6056239
--- /dev/null
+++ b/packages/openmoko-tools/openmoko-chordmaster_svn.bb
@@ -0,0 +1,6 @@
+DESCRIPTION = "A guitar chord database for OpenMoko"
+SECTION = "openmoko/tools"
+PV = "0.0.1+svn${SRCDATE}"
+
+inherit openmoko
+
diff --git a/packages/openobex/openobex_1.2.bb b/packages/openobex/openobex_1.2.bb
index 0c8d118cff..e6ec335978 100644
--- a/packages/openobex/openobex_1.2.bb
+++ b/packages/openobex/openobex_1.2.bb
@@ -5,7 +5,7 @@ SECTION = "libs"
PROVIDES = "openobex-apps"
DEPENDS = "libusb bluez-libs"
LICENSE = "GPL"
-PR = "r3"
+PR = "r5"
SRC_URI = "${SOURCEFORGE_MIRROR}/openobex/openobex-${PV}.tar.gz \
file://disable-cable-test.patch;patch=1" \
@@ -30,3 +30,4 @@ PACKAGES += "openobex-apps"
FILES_${PN} = "${libdir}/lib*.so.*"
FILES_${PN}-dev += "${bindir}/openobex-config"
FILES_${PN}-apps = "${bindir}/*"
+DEBIAN_NOAUTONAME_${PN}-apps = "1"
diff --git a/packages/openocd/openocd-native_svn.bb b/packages/openocd/openocd-native_svn.bb
new file mode 100644
index 0000000000..5e77400671
--- /dev/null
+++ b/packages/openocd/openocd-native_svn.bb
@@ -0,0 +1,10 @@
+require openocd_${PV}.bb
+
+inherit native
+
+DEPENDS = "libftdi-native"
+
+do_stage() {
+ install -m 0755 src/openocd ${STAGING_BINDIR}
+}
+
diff --git a/packages/openocd/openocd_svn.bb b/packages/openocd/openocd_svn.bb
index 3523cfce33..ccbf8951fb 100644
--- a/packages/openocd/openocd_svn.bb
+++ b/packages/openocd/openocd_svn.bb
@@ -1,14 +1,14 @@
-HOMEPAGE = "http://openocd.berlios.de/"
DESCRIPTION = "Free and Open On-Chip Debugging, In-System Programming and Boundary-Scan Testing"
+HOMEPAGE = "http://openocd.berlios.de/"
LICENSE = "GPL"
-
PV = "0.0+svn${SRCDATE}"
-inherit autotools
+DEPENDS = "libftdi"
-SRC_URI = "svn://svn.berlios.de/;module=${PN}"
+SRC_URI = "svn://svn.berlios.de/;module=openocd"
-S = "${WORKDIR}/${PN}/trunk"
-EXTRA_OECONF = " --disable-ftdi2232 --disable-ftd2xx"
+S = "${WORKDIR}/openocd/trunk"
+inherit autotools
+EXTRA_OECONF = "--enable-ft2232_libftdi --enable-parport-ppdev"
diff --git a/packages/openpbx/.mtn2git_empty b/packages/openpbx/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openpbx/.mtn2git_empty
diff --git a/packages/openpbx/files/.mtn2git_empty b/packages/openpbx/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openpbx/files/.mtn2git_empty
diff --git a/packages/openpbx/files/init b/packages/openpbx/files/init
new file mode 100644
index 0000000000..0ce88c4626
--- /dev/null
+++ b/packages/openpbx/files/init
@@ -0,0 +1,75 @@
+#! /bin/sh
+#
+# This is an init script for openembedded
+# Copy it to /etc/init.d/openpbx and type
+# > update-rc.d openpbx defaults 60
+#
+openpbx=/usr/sbin/openpbx
+pidfile=/var/run/openpbx.org/openpbx.pid
+
+test -x "$openpbx" || exit 0
+
+case "$1" in
+ start)
+ echo -n "Starting OpenPBX"
+ start-stop-daemon --start --quiet --exec $openpbx -- -npq
+ echo "."
+ ;;
+ stop)
+ echo -n "Stopping OpenPBX"
+ $openpbx -rx "stop gracefully"
+ sleep 4
+ if [ -f $pidfile ]; then
+ start-stop-daemon --stop --quiet --pidfile $pidfile
+ fi
+ echo "."
+ ;;
+ force-stop)
+ echo -n "Stopping OpenPBX"
+ $openpbx -rx "stop now"
+ sleep 2
+ if [ -f $pidfile ]; then
+ start-stop-daemon --stop --quiet --pidfile $pidfile
+ fi
+ echo "."
+ ;;
+ restart)
+ echo -n "Restarting OpenPBX"
+ if [ -f $pidfile ]; then
+ $openpbx -rx "restart gracefully"
+ sleep 2
+ else
+ start-stop-daemon --start --quiet --exec $openpbx -- -npq
+ fi
+ ;;
+ force-restart)
+ echo -n "Forcibly Restarting OpenPBX"
+ if [ -f $pidfile ]; then
+ $openpbx -rx "restart now"
+ sleep 2
+ else
+ start-stop-daemon --start --quiet --exec $openpbx -- -npq
+ fi
+ ;;
+ reload)
+ echo -n "Reloading OpenPBX Configuration"
+ if [ -f $pidfile ]; then
+ $openpbx -rx "reload"
+ else
+ start-stop-daemon --start --quiet --exec $openpbx -- -npq
+ fi
+ echo "."
+ ;;
+ logger-reload)
+# echo -n "Restating OpenPBX Logger"
+ if [ -f $pidfile ]; then
+ $openpbx -rx "logger reload"
+ fi
+# echo "."
+ ;;
+ *)
+ echo "Usage: /etc/init.d/openpbx {start|stop|force-stop|restart|force-restart|reload|logger-reload}"
+ exit 1
+esac
+
+exit 0
diff --git a/packages/openpbx/files/logrotate b/packages/openpbx/files/logrotate
new file mode 100644
index 0000000000..a0192538a3
--- /dev/null
+++ b/packages/openpbx/files/logrotate
@@ -0,0 +1,13 @@
+/var/log/openpbx.org/cdr-csv/Master.csv /var/log/openpbx.org/queue_log /var/log/openpbx.org/event_log /var/log/openpbx.org/messages
+/var/log/openpbx.org/full {
+ daily
+ missingok
+ compress
+ delaycompress
+ rotate 30
+ sharedscripts
+ postrotate
+ /etc/init.d/openpbx logger-reload
+ endscript
+}
+
diff --git a/packages/openpbx/files/volatiles b/packages/openpbx/files/volatiles
new file mode 100644
index 0000000000..716d469e86
--- /dev/null
+++ b/packages/openpbx/files/volatiles
@@ -0,0 +1,6 @@
+d openpbx openpbx 0775 /var/run/openpbx.org none
+d openpbx openpbx 0775 /var/lib/openpbx.org none
+d openpbx openpbx 0775 /var/log/openpbx.org/cdr-csv none
+d openpbx openpbx 0775 /var/log/openpbx.org/cdr-custom none
+d openpbx openpbx 0775 /var/spool/openpbx.org/outgoing none
+d openpbx openpbx 0775 /var/spool/openpbx.org/voicemail none
diff --git a/packages/openpbx/openpbx.org-1.2_rc3/.mtn2git_empty b/packages/openpbx/openpbx.org-1.2_rc3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openpbx/openpbx.org-1.2_rc3/.mtn2git_empty
diff --git a/packages/openpbx/openpbx.org-1.2_rc3/bootstrap.patch b/packages/openpbx/openpbx.org-1.2_rc3/bootstrap.patch
new file mode 100644
index 0000000000..7f89772efa
--- /dev/null
+++ b/packages/openpbx/openpbx.org-1.2_rc3/bootstrap.patch
@@ -0,0 +1,37 @@
+*** openpbx.org-1.2_rc3.old/bootstrap.sh Mon Feb 26 16:02:40 2007
+--- openpbx.org-1.2_rc3/bootstrap.sh Mon Feb 26 16:04:11 2007
+***************
+*** 89,104 ****
+ # Check for required version and die if unhappy
+
+ if [ "x$UNAME" = "xFreeBSD" ]; then
+! version_compare libtoolize 1 5 20 || exit 1
+! version_compare automake19 1 9 6 || exit 1
+ version_compare autoconf259 2 59 || exit 1
+ ACLOCAL=aclocal19
+ AUTOHEADER=autoheader259
+ AUTOMAKE=automake19
+ AUTOCONF=autoconf259
+ else
+! version_compare libtoolize 1 5 20 || exit 1
+! version_compare automake 1 9 6 || exit 1
+ version_compare autoconf 2 59 || exit 1
+ ACLOCAL=aclocal
+ AUTOHEADER=autoheader
+--- 89,104 ----
+ # Check for required version and die if unhappy
+
+ if [ "x$UNAME" = "xFreeBSD" ]; then
+! version_compare libtoolize 1 5 10 || exit 1
+! version_compare automake19 1 9 3 || exit 1
+ version_compare autoconf259 2 59 || exit 1
+ ACLOCAL=aclocal19
+ AUTOHEADER=autoheader259
+ AUTOMAKE=automake19
+ AUTOCONF=autoconf259
+ else
+! version_compare libtoolize 1 5 10 || exit 1
+! version_compare automake 1 9 3 || exit 1
+ version_compare autoconf 2 59 || exit 1
+ ACLOCAL=aclocal
+ AUTOHEADER=autoheader
diff --git a/packages/openpbx/openpbx.org-1.2_rc3/openssl.m4.patch b/packages/openpbx/openpbx.org-1.2_rc3/openssl.m4.patch
new file mode 100644
index 0000000000..55d0d33832
--- /dev/null
+++ b/packages/openpbx/openpbx.org-1.2_rc3/openssl.m4.patch
@@ -0,0 +1,46 @@
+*** openpbx.org-1.2_rc3.old/acmacros/openssl.m4 Tue Mar 6 15:21:39 2007
+--- openpbx.org-1.2_rc3/acmacros/openssl.m4 Tue Mar 6 15:23:18 2007
+***************
+*** 3,13 ****
+ #
+ AC_DEFUN([CHECK_SSL],
+ [AC_MSG_CHECKING(if ssl is wanted)
+! # AC_ARG_WITH(ssl,
+! # [ --with-ssl enable ssl [will check /usr/local/ssl
+! # /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr /usr/sfw ]
+! # ],
+! #[ AC_MSG_RESULT(yes)
+ for dir in $withval /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr /usr/sfw; do
+ ssldir="$dir"
+ if test -f "$dir/include/openssl/ssl.h"; then
+--- 3,13 ----
+ #
+ AC_DEFUN([CHECK_SSL],
+ [AC_MSG_CHECKING(if ssl is wanted)
+! AC_ARG_WITH(ssl,
+! [ --with-ssl enable ssl [will check /usr/local/ssl
+! /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr /usr/sfw ]
+! ],
+! [ AC_MSG_RESULT(yes)
+ for dir in $withval /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr /usr/sfw; do
+ ssldir="$dir"
+ if test -f "$dir/include/openssl/ssl.h"; then
+***************
+*** 33,40 ****
+ AC_SUBST([HAVE_SSL])
+ AC_SUBST([SSL_LIBS])
+ AC_SUBST([SSL_CFLAGS])
+! #],
+! #[
+! # AC_MSG_RESULT(no)
+! #])
+ ])dnl
+--- 33,40 ----
+ AC_SUBST([HAVE_SSL])
+ AC_SUBST([SSL_LIBS])
+ AC_SUBST([SSL_CFLAGS])
+! ],
+! [
+! AC_MSG_RESULT(no)
+! ])
+ ])dnl
diff --git a/packages/openpbx/openpbx.org-perl.bb b/packages/openpbx/openpbx.org-perl.bb
new file mode 100644
index 0000000000..124dfcfc8b
--- /dev/null
+++ b/packages/openpbx/openpbx.org-perl.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "Openpbx::OGI Perl Gateway Interface Module"
+HOMEPAGE = "http://www.openpbx.org"
+SECTION = "libs"
+LICENSE = "GPL"
+DEPENDS = "install-native"
+RDEPENDS = "perl openpbx.org-ogi"
+PR = "r0"
+
+OPBXV = "openpbx.org-1.2_rc3"
+
+SRC_URI = "http://www.openpbx.org/releases/${OPBXV}.tar.gz"
+
+S = "${WORKDIR}/${OPBXV}/contrib/ogi-perl/openpbx-perl-${PV}"
+
+inherit cpan
+
+do_install_append () {
+ install -d ${D}${datadir}/openpbx.org/ogi/perl
+ install ${S}/examples/* ${D}${datadir}/openpbx.org/ogi/perl
+}
+
+PACKAGES =+ "${PN}-examples"
+
+FILES_${PN}-examples = "${datadir}/openpbx.org/ogi/perl"
diff --git a/packages/openpbx/openpbx.org_1.2_rc3.bb b/packages/openpbx/openpbx.org_1.2_rc3.bb
new file mode 100644
index 0000000000..e343eb8729
--- /dev/null
+++ b/packages/openpbx/openpbx.org_1.2_rc3.bb
@@ -0,0 +1,139 @@
+DESCRIPTION = "A flexible VOIP soft switch/PBX."
+DESCRIPTION_${PN}-ogi = "OpenPBX Gateway Inerface for scripted PBX call processing"
+DESCRIPTION_${PN}-fax = "Fax send/receive file and T.38 support for OpenPBX"
+DESCRIPTION_${PN}-ldap = "LDAP Directory services interface for OpenPBX"
+DESCRIPTION_${PN}-sounds = "Standard set of audio prompts for OpenPBX"
+HOMEPAGE = "http://www.openpbx.org"
+RDEPENDS = "ssmtp"
+SECTION = "voip"
+LICENSE = "GPL"
+DEPENDS = "openssl zlib tiff libcap spandsp speex readline js \
+ sox-native findutils-native"
+DEPENDS_${PN}-ldap = "openldap"
+RRECOMMENDS = "logrotate"
+RRECOMMENDS_${PN}-ogi = "perl perl-module-strict openpbx.org-perl"
+PV = "1.2_rc3"
+PR = "r2"
+
+SRC_URI = "http://www.openpbx.org/releases/${P}.tar.gz \
+ svn://svn.openpbx.org/openpbx-sounds/trunk/sounds/en_US;module=MelanieTaylor;proto=svn \
+ file://bootstrap.patch;patch=1 \
+ file://openssl.m4.patch;patch=1 \
+ file://logrotate \
+ file://volatiles \
+ file://init"
+
+PARALLEL_MAKE = ""
+INITSCRIPT_NAME = "openpbx"
+INITSCRIPT_PARAMS = "defaults 60"
+
+inherit autotools update-rc.d
+
+EXTRA_OECONF = " --with-ssl=${STAGING_DIR}/${HOST_SYS} --enable-low_memory \
+ --disable-zaptel --with-directory-layout=lsb --enable-t38 \
+ --with-codec-speex=${STAGING_DIR}/${HOST_SYS} --with-app_ldap \
+ --with-perl-shebang='#!${bindir}/perl' --with-jabber --with-res_jabber \
+ --with-javascript --with-res_js \
+ --bindir=${bindir} --datadir=${datadir} --sysconfdir=${sysconfdir} \
+ --includedir=${includedir} --infodir=${infodir} --mandir=${mandir} \
+ --localstatedir=${localstatedir} --libdir=${libdir}"
+
+do_configure_prepend () {
+ ${S}/bootstrap.sh
+ # Fix some stupidness with the VoiceMail app naming. Case Matters!
+ sed -i 's:Voicemail:VoiceMail:' ${S}/configs/extensions.conf.sample
+ sed -i 's:/var:${localstatedir}:' ${WORKDIR}/volatiles
+ sed -i 's:/var:${localstatedir}:' ${WORKDIR}/logrotate
+ sed -i 's:/etc/init.d:${sysconfdir}/init.d:' ${WORKDIR}/logrotate
+}
+
+do_install_append() {
+ install -c -D -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/openpbx
+ install -c -D -m 644 ${WORKDIR}/logrotate ${D}${sysconfdir}/logrotate.d/openpbx
+ install -c -D -m 644 ${WORKDIR}/volatiles ${D}${sysconfdir}/default/volatiles/openpbx
+ # And now for sounds...
+ for file in `find ${WORKDIR}/MelanieTaylor -name \*.wav`; do
+ echo $file
+ sox -V $file -t raw -s -r 8000 -c 1 -w `echo $file|sed -e s/\.wav$/.sln/` resample -ql;
+ sox -V $file -t raw -U -r 8000 -c 1 -b `echo $file|sed -e s/\.wav$/.ulaw/` resample -ql;
+ sox -V $file -t raw -A -r 8000 -c 1 -b `echo $file|sed -e s/\.wav$/.alaw/` resample -ql;
+ sox -V $file -t gsm -r 8000 -c 1 -b `echo $file|sed -e s/\.wav$/.gsm/` resample -ql;
+ relfile=`echo $file|sed -e s:^${WORKDIR}/MelanieTaylor/::`
+ relfile2=`echo $relfile|sed -e s:\.wav$::`
+ install -c -D -m 644 ${WORKDIR}/MelanieTaylor/$relfile2.sln ${D}${datadir}/openpbx.org/sounds/$relfile2.sln
+ install -c -D -m 644 ${WORKDIR}/MelanieTaylor/$relfile2.ulaw ${D}${datadir}/openpbx.org/sounds/$relfile2.ulaw
+ install -c -D -m 644 ${WORKDIR}/MelanieTaylor/$relfile2.alaw ${D}${datadir}/openpbx.org/sounds/$relfile2.alaw
+ install -c -D -m 644 ${WORKDIR}/MelanieTaylor/$relfile2.gsm ${D}${datadir}/openpbx.org/sounds/$relfile2.gsm
+ done
+}
+
+PACKAGES = "${PN}-sounds ${PN}-fax ${PN}-ogi ${PN}-ldap ${PN}-doc ${PN}-dev ${PN}"
+
+FILES_${PN}-sounds = "${datadir}/openpbx.org/sounds/*"
+FILES_${PN}-dev = "${libdir}/openpbx.org/modules/*.la \
+ ${libdir}/openpbx.org/*.la \
+ ${includedir}/openpbx/*"
+FILES_${PN}-fax = "${libdir}/openpbx.org/modules/app_backgrounddetect.so \
+ ${libdir}/openpbx.org/modules/app_faxdetect.so \
+ ${libdir}/openpbx.org/modules/app_rxfax.so \
+ ${libdir}/openpbx.org/modules/app_txfax.so"
+FILES_${PN}-ogi = "${libdir}/openpbx.org/modules/res_ogi.so \
+ ${datadir}/openpbx.org/ogi/*"
+FILES_${PN}-ldap = "${libdir}/openpbx.org/modules/app_ldap.*"
+
+pkg_postinst_prepend() {
+ grep -q openpbx ${sysconfdir}/group || addgroup --system openpbx
+ grep -q openpbx ${sysconfdir}/passwd || adduser --system --home ${localstatedir}/run/openpbx.org --no-create-home --disabled-password --ingroup openpbx -s ${base_bindir}/false openpbx
+ chown -R openpbx:openpbx ${libdir}/openpbx.org ${localstatedir}/lib/openpbx.org ${localstatedir}/spool/openpbx.org ${localstatedir}/log/openpbx.org ${localstatedir}/run/openpbx.org ${sysconfdir}/openpbx.org ${datadir}/openpbx.org
+ /etc/init.d/populate-volatile.sh update
+}
+
+pkg_postinst_${PN}-fax () {
+ chown -R openpbx:openpbx ${libdir}/openpbx.org
+}
+
+pkg_postinst_${PN}-ldap () {
+ chown -R openpbx:openpbx ${libdir}/openpbx.org
+}
+
+pkg_postinst_${PN}-sounds () {
+ chown -R openpbx:openpbx ${datadir}/openpbx.org
+}
+
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/musiconhold.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/adsi.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/adtranvofr.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/agents.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/cdr.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/cdr_custom.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/cdr_manager.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/cdr_tds.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/codecs.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/dnsmgr.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/dundi.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/enum.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/extconfig.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/extensions.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/extensions.ael"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/features.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/iax.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/indications.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/logger.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/manager.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/meetme.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/mgcp.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/modem.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/modules.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/muted.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/openpbx.adsi"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/openpbx.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/osp.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/privacy.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/queues.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/rpt.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/rtp.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/sip.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/sip_notify.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/udptl.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/voicemail.conf"
+CONFFILES_${PN} += "${sysconfdir}/openpbx.org/woomera.conf"
diff --git a/packages/openssh/openssh_4.3p2.bb b/packages/openssh/openssh_4.3p2.bb
index 114657536a..c3117802a7 100644
--- a/packages/openssh/openssh_4.3p2.bb
+++ b/packages/openssh/openssh_4.3p2.bb
@@ -14,7 +14,7 @@ It is intended as a replacement for rlogin, rsh and rcp, and can be \
used to provide applications with a secure communication channel."
HOMEPAGE = "http://www.openssh.org/"
LICENSE = "BSD"
-PR = "r0"
+PR = "r1"
SRC_URI = "ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar.gz \
file://sshd_config \
@@ -56,12 +56,14 @@ do_install_append() {
}
PACKAGES =+ " openssh-scp openssh-ssh openssh-sshd openssh-sftp openssh-misc"
+FILES_openssh-dbg +=${bindir}/.debug ${libdir}exec/.debug"
FILES_openssh-scp = "${bindir}/scp.${PN}"
FILES_openssh-ssh = "${bindir}/ssh.${PN} ${bindir}/slogin /${sysconfdir}/ssh/ssh_config"
FILES_openssh-sshd = "${sbindir}/sshd /${sysconfdir}/init.d/sshd ${bindir}/ssh-keygen"
FILES_openssh-sshd += " /${sysconfdir}/ssh/moduli /${sysconfdir}/ssh/sshd_config /var/run/sshd"
FILES_openssh-sftp = "${bindir}/sftp ${libdir}exec/sftp-server"
-FILES_openssh-misc = "${bindir} ${libdir}exec/"
+FILES_openssh-misc = "${bindir}/ssh* ${libdir}exec/ssh*"
+
RDEPENDS_openssh += " openssh-scp openssh-ssh openssh-sshd"
DEPENDS_openssh-sshd += " update-rc.d"
RDEPENDS_openssh-sshd += " update-rc.d"
diff --git a/packages/openssl/openssl-native_0.9.7g.bb b/packages/openssl/openssl-native_0.9.7g.bb
index dd4ba1a5ef..115d4011d9 100644
--- a/packages/openssl/openssl-native_0.9.7g.bb
+++ b/packages/openssl/openssl-native_0.9.7g.bb
@@ -2,7 +2,7 @@ inherit pkgconfig native
require openssl.inc
-PR = "r0"
+PR = "r1"
SRC_URI += "file://debian.patch;patch=1 \
file://armeb.patch;patch=1;pnum=0 \
diff --git a/packages/openssl/openssl.inc b/packages/openssl/openssl.inc
index e7e3b37e3c..9c648f0ba8 100644
--- a/packages/openssl/openssl.inc
+++ b/packages/openssl/openssl.inc
@@ -18,8 +18,8 @@ export EX_LIBS = "-lgcc -ldl -L${STAGING_LIBDIR}"
export AS = "${CC} -c"
PACKAGES =+ "libcrypto libssl"
-FILES_libcrypto = "${libdir}/libcrypto.so*"
-FILES_libssl = "${libdir}/libssl.so*"
+FILES_libcrypto = "${libdir}/libcrypto.so.*"
+FILES_libssl = "${libdir}/libssl.so.*"
do_compile () {
cd util
diff --git a/packages/openssl/openssl_0.9.7e.bb b/packages/openssl/openssl_0.9.7e.bb
index d9b8d91cdc..a7d3670758 100644
--- a/packages/openssl/openssl_0.9.7e.bb
+++ b/packages/openssl/openssl_0.9.7e.bb
@@ -1,6 +1,6 @@
require openssl.inc
-PR = "r4"
+PR = "r5"
SRC_URI += "file://debian.patch;patch=1 \
file://armeb.patch;patch=1 \
diff --git a/packages/openssl/openssl_0.9.7g.bb b/packages/openssl/openssl_0.9.7g.bb
index 4af1fbfd48..cc9162c1cf 100644
--- a/packages/openssl/openssl_0.9.7g.bb
+++ b/packages/openssl/openssl_0.9.7g.bb
@@ -2,7 +2,7 @@ inherit pkgconfig
require openssl.inc
-PR = "r2"
+PR = "r3"
SRC_URI += "file://debian.patch;patch=1 \
file://armeb.patch;patch=1;pnum=0 \
diff --git a/packages/opensync/libopensync-plugin-evo2-sync_0.22.bb b/packages/opensync/libopensync-plugin-evo2-sync_0.22.bb
new file mode 100644
index 0000000000..6b2609902a
--- /dev/null
+++ b/packages/opensync/libopensync-plugin-evo2-sync_0.22.bb
@@ -0,0 +1,6 @@
+PLUGIN_ARCHIVE = "evolution2"
+
+require libopensync-plugin.inc
+require libopensync-plugin_0.22.inc
+
+DEPENDS += " eds-dbus"
diff --git a/packages/opensync/libopensync-plugin-evo2-sync_svn.bb b/packages/opensync/libopensync-plugin-evo2-sync_svn.bb
new file mode 100644
index 0000000000..0a8084e519
--- /dev/null
+++ b/packages/opensync/libopensync-plugin-evo2-sync_svn.bb
@@ -0,0 +1,8 @@
+
+SRC_URI = "svn://svn.opensync.org/plugins;module=evolution2;proto=http"
+S = "${WORKDIR}/evolution2"
+
+require libopensync-plugin.inc
+
+DEPENDS += " eds-dbus"
+
diff --git a/packages/opensync/libopensync-plugin-file-sync_0.22.bb b/packages/opensync/libopensync-plugin-file-sync_0.22.bb
new file mode 100644
index 0000000000..d34473127d
--- /dev/null
+++ b/packages/opensync/libopensync-plugin-file-sync_0.22.bb
@@ -0,0 +1,2 @@
+require libopensync-plugin.inc
+require libopensync-plugin_0.22.inc
diff --git a/packages/opensync/libopensync-plugin-file-sync_svn.bb b/packages/opensync/libopensync-plugin-file-sync_svn.bb
new file mode 100644
index 0000000000..ae300b402f
--- /dev/null
+++ b/packages/opensync/libopensync-plugin-file-sync_svn.bb
@@ -0,0 +1,5 @@
+
+SRC_URI = "svn://svn.opensync.org/plugins;module=file-sync;proto=http"
+S = "${WORKDIR}/file-sync"
+
+require libopensync-plugin.inc
diff --git a/packages/opensync/libopensync-plugin-irmc-sync_0.22.bb b/packages/opensync/libopensync-plugin-irmc-sync_0.22.bb
new file mode 100644
index 0000000000..55df4e4d78
--- /dev/null
+++ b/packages/opensync/libopensync-plugin-irmc-sync_0.22.bb
@@ -0,0 +1,4 @@
+require libopensync-plugin.inc
+require libopensync-plugin_0.22.inc
+
+DEPENDS += "openobex bluez-libs"
diff --git a/packages/opensync/libopensync-plugin-syncml-client-plugin-0.1/.mtn2git_empty b/packages/opensync/libopensync-plugin-syncml-client-plugin-0.1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opensync/libopensync-plugin-syncml-client-plugin-0.1/.mtn2git_empty
diff --git a/packages/opensync/libopensync-plugin-syncml-client-plugin-0.1/missing-syncml-config.patch b/packages/opensync/libopensync-plugin-syncml-client-plugin-0.1/missing-syncml-config.patch
new file mode 100644
index 0000000000..0fac67e5d9
--- /dev/null
+++ b/packages/opensync/libopensync-plugin-syncml-client-plugin-0.1/missing-syncml-config.patch
@@ -0,0 +1,8 @@
+--- tmp/src/missing-syncml-client-plugin 2007-01-09 12:55:48.000000000 +0000
++++ tmp/src/syncml-client-plugin 2007-01-09 12:55:48.000000000 +0000
+@@ -0,0 +1,5 @@
++<config>
++ <gconf-uri>/apps/syncml-client</gconf-uri>
++ <object-type>contact</object-type>
++ <sync-source-name>card</sync-source-name>
++</config>
diff --git a/packages/opensync/libopensync-plugin-syncml-client-plugin-0.1/syncml-client-plugin-cpp.patch b/packages/opensync/libopensync-plugin-syncml-client-plugin-0.1/syncml-client-plugin-cpp.patch
new file mode 100644
index 0000000000..7b659ce7c3
--- /dev/null
+++ b/packages/opensync/libopensync-plugin-syncml-client-plugin-0.1/syncml-client-plugin-cpp.patch
@@ -0,0 +1,11 @@
+--- tmp/src/syncml-client-plugin.cpp.orig 2007-01-09 12:27:33.000000000 +0000
++++ tmp/src/syncml-client-plugin.cpp 2007-01-09 12:27:33.000000000 +0000
+@@ -94,7 +94,7 @@
+ /**
+ * Initialize the plugin environment, read config data.
+ */
+-extern "C" static void* smc_initialize(OSyncMember *member, OSyncError **error)
++extern "C" void* smc_initialize(OSyncMember *member, OSyncError **error)
+ {
+ char *configData;
+ int configSize;
diff --git a/packages/opensync/libopensync-plugin-syncml-client-plugin_0.1.bb b/packages/opensync/libopensync-plugin-syncml-client-plugin_0.1.bb
new file mode 100644
index 0000000000..a81417bf7e
--- /dev/null
+++ b/packages/opensync/libopensync-plugin-syncml-client-plugin_0.1.bb
@@ -0,0 +1,13 @@
+PR = "r1"
+
+SRC_URI = "svn://svn.opensync.org/plugins/syncml-client/plugin/tags;module=release-${PV};proto=http \
+ file://missing-syncml-config.patch;patch=1 \
+ file://syncml-client-plugin-cpp.patch;patch=1"
+
+
+S = "${WORKDIR}/release-${PV}"
+
+require libopensync-plugin.inc
+
+DEPENDS += "syncml-client"
+
diff --git a/packages/opensync/libopensync-plugin-syncml-plugin.bb b/packages/opensync/libopensync-plugin-syncml-plugin.bb
new file mode 100644
index 0000000000..0a7d82db74
--- /dev/null
+++ b/packages/opensync/libopensync-plugin-syncml-plugin.bb
@@ -0,0 +1,16 @@
+
+SRC_URI = "svn://svn.opensync.org/plugins;module=syncml;proto=http"
+S = "${WORKDIR}/syncml"
+
+require libopensync-plugin.inc
+
+DEPENDS += " libsyncml"
+
+do_install() {
+ install -d ${D}${datadir}/opensync/defaults
+ install -d ${D}${libdir}/opensync/plugins
+ install -m 644 src/syncml-http-server ${D}${datadir}/opensync/defaults
+ install -m 644 src/syncml-obex-client ${D}${datadir}/opensync/defaults
+ install -m 755 src/.libs/${PLUGIN_SONAME} ${D}${libdir}/opensync/plugins/
+}
+
diff --git a/packages/opensync/libopensync-plugin-syncml_0.22.bb b/packages/opensync/libopensync-plugin-syncml_0.22.bb
new file mode 100644
index 0000000000..2a26eb1674
--- /dev/null
+++ b/packages/opensync/libopensync-plugin-syncml_0.22.bb
@@ -0,0 +1,13 @@
+
+require libopensync-plugin.inc
+
+DEPENDS += " libsyncml"
+
+do_install() {
+ install -d ${D}${datadir}/opensync/defaults
+ install -d ${D}${libdir}/opensync/plugins
+ install -m 644 src/syncml-http-server ${D}${datadir}/opensync/defaults
+ install -m 644 src/syncml-obex-client ${D}${datadir}/opensync/defaults
+ install -m 755 src/.libs/${PLUGIN_SONAME} ${D}${libdir}/opensync/plugins/
+}
+
diff --git a/packages/opensync/libopensync-plugin.inc b/packages/opensync/libopensync-plugin.inc
new file mode 100644
index 0000000000..b1986a9e64
--- /dev/null
+++ b/packages/opensync/libopensync-plugin.inc
@@ -0,0 +1,24 @@
+
+PV = "0.22+svn${SRCDATE}"
+PLUGIN_NAME ?= "${@bb.data.getVar('PN', d, 1).replace('libopensync-plugin-','')}"
+PLUGIN_SONAME ?= "${@bb.data.getVar('PLUGIN_NAME', d, 1).replace('-','_')}.so"
+SRC_URI ?= "svn://svn.opensync.org/plugins;module=${PLUGIN_NAME};proto=http"
+S ?= "${WORKDIR}/${PLUGIN_NAME}"
+
+LICENSE ?= "LGPL"
+DEPENDS += " libopensync"
+RRECOMMENDS += " msynctool"
+HOMEPAGE ?= "http://www.opensync.org/"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "${datadir} ${libdir}/opensync/plugins/*.so"
+FILES_${PN}-dbg += "${libdir}/opensync/plugins/.debug"
+
+do_install() {
+ install -d ${D}${datadir}/opensync/defaults
+ install -d ${D}${libdir}/opensync/plugins
+ install -m 644 src/${PLUGIN_NAME} ${D}${datadir}/opensync/defaults
+ install -m 755 src/.libs/${PLUGIN_SONAME} ${D}${libdir}/opensync/plugins/
+}
+
diff --git a/packages/opensync/libopensync-plugin_0.22.inc b/packages/opensync/libopensync-plugin_0.22.inc
new file mode 100644
index 0000000000..03857dce53
--- /dev/null
+++ b/packages/opensync/libopensync-plugin_0.22.inc
@@ -0,0 +1,12 @@
+PV = "0.22"
+PLUGIN_ARCHIVE ?= "${@bb.data.getVar('PLUGIN_NAME', d, 1).replace('-sync','')}"
+SRC_URI = "http://www.opensync.org/attachment/wiki/download/libopensync-plugin-${PLUGIN_ARCHIVE}-${PV}.tar.bz2?format=raw"
+
+S = "${WORKDIR}/libopensync-plugin-${PLUGIN_ARCHIVE}-${PV}/"
+
+do_unpack2() {
+ cd ${WORKDIR} && tar jxf libopensync-plugin-${PLUGIN_ARCHIVE}-${PV}.tar.bz2?format=raw
+}
+
+addtask unpack2 after do_unpack before do_patch
+
diff --git a/packages/opensync/libopensync_0.22.bb b/packages/opensync/libopensync_0.22.bb
new file mode 100644
index 0000000000..ed4ef740bc
--- /dev/null
+++ b/packages/opensync/libopensync_0.22.bb
@@ -0,0 +1,21 @@
+LICENSE = "LGPL"
+HOMEPAGE = "http://www.opensync.org/"
+
+DEPENDS = "sqlite3 libxml2 zlib glib-2.0"
+
+SRC_URI = "http://www.opensync.org/attachment/wiki/download/libopensync-0.22.tar.bz2?format=raw"
+
+inherit autotools pkgconfig lib_package
+
+EXTRA_OECONF = "--disable-python"
+LEAD_SONAME = "libopensync.so"
+
+FILES_${PN} += " ${libdir}/opensync/formats/*.so"
+FILES_${PN}-dbg += " ${libdir}/opensync/formats/.debug/*.so"
+
+require opensync-unpack.inc
+
+do_stage() {
+autotools_stage_all
+}
+
diff --git a/packages/opensync/libopensync_svn.bb b/packages/opensync/libopensync_svn.bb
new file mode 100644
index 0000000000..ac7da051c8
--- /dev/null
+++ b/packages/opensync/libopensync_svn.bb
@@ -0,0 +1,18 @@
+LICENSE = "LGPL"
+HOMEPAGE = "http://www.opensync.org/"
+DEPENDS = "sqlite3 libxml2 zlib glib-2.0"
+PV = "0.22+svn${SRCDATE}"
+SRC_URI = "svn://svn.opensync.org;module=trunk;proto=http"
+
+inherit autotools pkgconfig lib_package
+
+S = "${WORKDIR}/trunk"
+EXTRA_OECONF = "--disable-python"
+LEAD_SONAME = "libopensync.so"
+
+FILES_${PN} += " ${libdir}/opensync/formats/*.so"
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/opensync/libsyncml_svn.bb b/packages/opensync/libsyncml_svn.bb
new file mode 100644
index 0000000000..17b2537e85
--- /dev/null
+++ b/packages/opensync/libsyncml_svn.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "Libsyncml is a implementation of the SyncML protocol."
+HOMEPAGE = "http://libsyncml.opensync.org/"
+LICENSE = "LGPL"
+
+DEPENDS = "sed-native wbxml2 libsoup libxml2 bluez-libs openobex"
+
+PV = "0.4.2+svn${SRCDATE}"
+SRC_URI = "svn://svn.opensync.org/libsyncml;module=trunk;proto=http"
+S = "${WORKDIR}/trunk"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = " --enable-http \
+ --enable-obex \
+ --enable-bluetooth \
+ --enable-tools \
+ --with-wbxml"
+
+CFLAGS += "-I${STAGING_INCDIR}/libsoup-2.2"
+
+do_configure_append() {
+ sed -i s:-I/usr/include/:-I/foo/:g Makefile
+ sed -i s:-I/usr/include/:-I/foo/:g */Makefile
+ sed -i s:-I/usr/include/:-I/foo/:g */*/Makefile
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+PACKAGES += "${PN}-tools"
+
+FILES_${PN}-tools = "${bindir}"
+FILES_${PN} = "${libdir}/*.so.*"
+
diff --git a/packages/opensync/msynctool_0.22.bb b/packages/opensync/msynctool_0.22.bb
new file mode 100644
index 0000000000..018c227e36
--- /dev/null
+++ b/packages/opensync/msynctool_0.22.bb
@@ -0,0 +1,9 @@
+SRC_URI = "http://www.opensync.org/attachment/wiki/download/msynctool-0.22.tar.bz2?format=raw"
+
+LICENSE = "GPL"
+DEPENDS = "libopensync"
+HOMEPAGE = "http://www.opensync.org/"
+
+inherit autotools pkgconfig
+
+require opensync-unpack.inc
diff --git a/packages/opensync/msynctool_svn.bb b/packages/opensync/msynctool_svn.bb
new file mode 100644
index 0000000000..319cf39d05
--- /dev/null
+++ b/packages/opensync/msynctool_svn.bb
@@ -0,0 +1,10 @@
+PV = "0.22+svn${SRCDATE}"
+SRC_URI = "svn://svn.opensync.org/multisync;module=trunk;proto=http"
+S = "${WORKDIR}/trunk"
+
+LICENSE = "GPL"
+DEPENDS = "libopensync"
+HOMEPAGE = "http://www.opensync.org/"
+
+inherit autotools pkgconfig
+
diff --git a/packages/opensync/opensync-unpack.inc b/packages/opensync/opensync-unpack.inc
new file mode 100644
index 0000000000..d5443187bd
--- /dev/null
+++ b/packages/opensync/opensync-unpack.inc
@@ -0,0 +1,5 @@
+do_unpack2() {
+ cd ${WORKDIR} && tar jxf ${PN}-${PV}.tar.bz2?format=raw
+}
+
+addtask unpack2 after do_unpack before do_patch
diff --git a/packages/opensync/syncml-client-0.1/.mtn2git_empty b/packages/opensync/syncml-client-0.1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opensync/syncml-client-0.1/.mtn2git_empty
diff --git a/packages/opensync/syncml-client-0.1/syncml-client-pc-in-cross.patch b/packages/opensync/syncml-client-0.1/syncml-client-pc-in-cross.patch
new file mode 100644
index 0000000000..364f7643c5
--- /dev/null
+++ b/packages/opensync/syncml-client-0.1/syncml-client-pc-in-cross.patch
@@ -0,0 +1,10 @@
+--- tmp/syncml-client.pc.in.orig 2007-01-09 09:43:18.000000000 +0000
++++ tmp/syncml-client.pc.in 2007-01-09 09:43:18.000000000 +0000
+@@ -8,6 +8,6 @@
+ Version: @VERSION@
+ Requires: libcurl, gconf-2.0
+ Libs: @SYNCML_LIBS@ -lsyncmlclient
+-Cflags: @SYNCML_CFLAGS@ -I@includedir@/syncml-client
++Cflags: @SYNCML_CFLAGS@ -I${includedir}/syncml-client
+ ~
+
diff --git a/packages/opensync/syncml-client-0.1/syncml-client-plugin-h.patch b/packages/opensync/syncml-client-0.1/syncml-client-plugin-h.patch
new file mode 100644
index 0000000000..c936445a95
--- /dev/null
+++ b/packages/opensync/syncml-client-0.1/syncml-client-plugin-h.patch
@@ -0,0 +1,11 @@
+--- tmp/src/syncml-client.h.orig 2007-01-09 12:15:41.000000000 +0000
++++ tmp/src/syncml-client-plugin.h 2007-01-09 12:15:41.000000000 +0000
+@@ -20,7 +20,7 @@
+ #define SYNCML_CLIENT_PLUGIN
+
+ #include <opensync/opensync.h>
+-#include <syncml-client.h>
++#include <syncml-client/syncml-client.h>
+ #include "SmcSyncSource.h"
+ #include "SmcConfig.h"
+
diff --git a/packages/opensync/syncml-client_0.1.bb b/packages/opensync/syncml-client_0.1.bb
index 729ac9a559..95a4e339c7 100644
--- a/packages/opensync/syncml-client_0.1.bb
+++ b/packages/opensync/syncml-client_0.1.bb
@@ -1,8 +1,14 @@
-SRC_URI = "http://hem.bredband.net/miko22/${P}.tar.gz"
-
LICENSE = "GPL"
DEPENDS = "gtk+ curl gconf"
HOMEPAGE = "http://hem.bredband.net/miko22/"
-DESCRIPTION = "Linux port of the Funambol C++ SyncML client connector."
+DESCRIPTION = "Linux port of the Funambol C++ SyncML client connector."
+PR="r1"
+
+SRC_URI = "http://hem.bredband.net/miko22/${P}.tar.gz \
+ file://syncml-client-pc-in-cross.patch;patch=1 "
inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/openzaurus/openzaurus-version.bb b/packages/openzaurus/openzaurus-version.bb
deleted file mode 100644
index 406a871acd..0000000000
--- a/packages/openzaurus/openzaurus-version.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-PV = "${DISTRO_VERSION}"
-
-do_compile() {
- mkdir -p ${D}${sysconfdir}
- echo "OpenZaurus ${DISTRO_VERSION}" > ${D}${sysconfdir}/openzaurus-version
-
-}
diff --git a/packages/opie-bartender/opie-bartender.inc b/packages/opie-bartender/opie-bartender.inc
index 633dcc0c91..5b020d5cfa 100644
--- a/packages/opie-bartender/opie-bartender.inc
+++ b/packages/opie-bartender/opie-bartender.inc
@@ -1,4 +1,4 @@
-DESCRIPTION = "Bartender drink receipe database"
+DESCRIPTION = "Bartender drink recipe database"
SECTION = "opie/applications"
PRIORITY = "optional"
LICENSE = "GPL"
diff --git a/packages/opie-bluetoothapplet/files/.mtn2git_empty b/packages/opie-bluetoothapplet/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-bluetoothapplet/files/.mtn2git_empty
diff --git a/packages/opie-bluetoothapplet/files/sysconfig-bluetooth.patch b/packages/opie-bluetoothapplet/files/sysconfig-bluetooth.patch
new file mode 100644
index 0000000000..83ee765b12
--- /dev/null
+++ b/packages/opie-bluetoothapplet/files/sysconfig-bluetooth.patch
@@ -0,0 +1,40 @@
+--- applet.org/bluezapplet.cpp.org 2007-02-11 16:48:06.000000000 +0000
++++ applet/bluezapplet.cpp 2007-02-11 16:56:57.000000000 +0000
+@@ -52,6 +52,8 @@
+ #include <qtimer.h>
+ #include <qpopupmenu.h>
+ #include <qmessagebox.h>
++#include <qfile.h>
++#include <qtextstream.h>
+
+ /* STD */
+ #include <device.h>
+@@ -124,6 +126,28 @@
+ int BluezApplet::setBluezStatus(int c, bool sync) {
+
+ if ( c == 1 ) {
++
++ QFile cfg("/etc/sysconfig/bluetooth");
++ if(cfg.open(IO_ReadOnly)) {
++ QTextStream stream (&cfg);
++ QString streamIn = stream.read();
++ QStringList list = QStringList::split("\n", streamIn);
++ cfg.close();
++ if(list.grep("BLUETOOTH_PORT=").count() > 0 &&
++ list.grep("BLUETOOTH_PROTOCOL=").count() > 0 &&
++ list.grep("BLUETOOTH_SPEED=").count() > 0) {
++ btDevice = new Device( list.grep("BLUETOOTH_PORT=")[0].
++ replace((QString)"BLUETOOTH_PORT=", ""),
++ list.grep("BLUETOOTH_PROTOCOL=")[0].
++ replace((QString)"BLUETOOTH_PROTOCOL=", ""),
++ list.grep("BLUETOOTH_SPEED=")[0].
++ replace((QString)"BLUETOOTH_SPEED=", ""));
++ return 0;
++ }
++ }
++
++ // Device-specific stuff - should be removed
++
+ switch ( ODevice::inst()->model() ) {
+ case Model_iPAQ_H39xx:
+ btDevice = new Device( "/dev/tts/1", "bcsp", "921600" );
diff --git a/packages/opie-bluetoothapplet/opie-bluetoothapplet_cvs.bb b/packages/opie-bluetoothapplet/opie-bluetoothapplet_cvs.bb
index bf9cc5689b..98ac64a4c1 100644
--- a/packages/opie-bluetoothapplet/opie-bluetoothapplet_cvs.bb
+++ b/packages/opie-bluetoothapplet/opie-bluetoothapplet_cvs.bb
@@ -1,6 +1,9 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
+PR = "r2"
SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/net/opietooth/applet \
${HANDHELDS_CVS};module=opie/pics/bluetoothapplet"
+
+# file://sysconfig-bluetooth.patch;patch=1"
diff --git a/packages/opie-button-settings/opie-button-settings.inc b/packages/opie-button-settings/opie-button-settings.inc
index fe611a5202..7ceb13a981 100644
--- a/packages/opie-button-settings/opie-button-settings.inc
+++ b/packages/opie-button-settings/opie-button-settings.inc
@@ -19,7 +19,13 @@ do_install() {
PACKAGES_prepend = "opie-button-settings-pics "
PACKAGE_ARCH_opie-button-settings-pics = "${MACHINE_ARCH}"
FILES_opie-button-settings-pics = "${palmtopdir}/pics/devicebuttons/z*"
+FILES_opie-button-settings-pics_h1910 = "${palmtopdir}/pics/devicebuttons/ipaq*"
+FILES_opie-button-settings-pics_h1940 = "${palmtopdir}/pics/devicebuttons/ipaq*"
FILES_opie-button-settings-pics_h3600 = "${palmtopdir}/pics/devicebuttons/ipaq*"
FILES_opie-button-settings-pics_h3900 = "${palmtopdir}/pics/devicebuttons/ipaq*"
-FILES_opie-button-settings-pics_h1910 = "${palmtopdir}/pics/devicebuttons/ipaq*"
+FILES_opie-button-settings-pics_h4000 = "${palmtopdir}/pics/devicebuttons/ipaq*"
+FILES_opie-button-settings-pics_h5000 = "${palmtopdir}/pics/devicebuttons/ipaq*"
+FILES_opie-button-settings-pics_h6300 = "${palmtopdir}/pics/devicebuttons/ipaq*"
+FILES_opie-button-settings-pics_hx2000 = "${palmtopdir}/pics/devicebuttons/ipaq*"
+FILES_opie-button-settings-pics_hx4700 = "${palmtopdir}/pics/devicebuttons/ipaq*"
FILES_opie-button-settings-pics_simpad = "${palmtopdir}/pics/devicebuttons/simpad*"
diff --git a/packages/opie-dagger/files/.mtn2git_empty b/packages/opie-dagger/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-dagger/files/.mtn2git_empty
diff --git a/packages/opie-dagger/files/opie-dagger-missing-include.patch b/packages/opie-dagger/files/opie-dagger-missing-include.patch
new file mode 100644
index 0000000000..f874e0bcf0
--- /dev/null
+++ b/packages/opie-dagger/files/opie-dagger-missing-include.patch
@@ -0,0 +1,11 @@
+diff -Naur dagger.orig/opentextdlg.h dagger/opentextdlg.h
+--- dagger.orig/opentextdlg.h 2004-04-06 18:00:07.000000000 +0200
++++ dagger/opentextdlg.h 2007-03-12 15:09:02.000000000 +0100
+@@ -22,6 +22,7 @@
+ #include <qlistview.h>
+
+ #include <swmgr.h>
++#include <swmodule.h>
+
+ class QPixmap;
+
diff --git a/packages/opie-dagger/opie-dagger_cvs.bb b/packages/opie-dagger/opie-dagger_cvs.bb
index 6649fd81a0..d9191e26a9 100644
--- a/packages/opie-dagger/opie-dagger_cvs.bb
+++ b/packages/opie-dagger/opie-dagger_cvs.bb
@@ -1,7 +1,10 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/apps/dagger \
${HANDHELDS_CVS};module=opie/pics \
${HANDHELDS_CVS};module=opie/apps"
+
+SRC_URI += " file://opie-dagger-missing-include.patch;patch=1"
diff --git a/packages/opie-dasher/opie-dasher.inc b/packages/opie-dasher/opie-dasher.inc
index 9bc990947c..9903dd9a56 100644
--- a/packages/opie-dasher/opie-dasher.inc
+++ b/packages/opie-dasher/opie-dasher.inc
@@ -38,7 +38,7 @@ do_install() {
done
}
-PACKAGES = " opie-dasher-english opie-dasher "
+PACKAGES += " opie-dasher-english "
FILES_opie-dasher = "${palmtopdir}/plugins/inputmethods/libqdasher.so*"
FILES_opie-dasher-english = "${palmtopdir}/share/dasher/training_english_GB.txt"
diff --git a/packages/opie-dasher/opie-dasher_1.2.2.bb b/packages/opie-dasher/opie-dasher_1.2.2.bb
index 3a2e814fe1..88c009d775 100644
--- a/packages/opie-dasher/opie-dasher_1.2.2.bb
+++ b/packages/opie-dasher/opie-dasher_1.2.2.bb
@@ -1,5 +1,5 @@
require ${PN}.inc
-
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/inputmethods/dasher \
diff --git a/packages/opie-dasher/opie-dasher_cvs.bb b/packages/opie-dasher/opie-dasher_cvs.bb
index d53cfc9e1b..10cca07fd6 100644
--- a/packages/opie-dasher/opie-dasher_cvs.bb
+++ b/packages/opie-dasher/opie-dasher_cvs.bb
@@ -1,4 +1,5 @@
require ${PN}.inc
+PR = "r1"
PV = "${OPIE_CVS_PV}"
diff --git a/packages/opie-handwriting/opie-handwriting.inc b/packages/opie-handwriting/opie-handwriting.inc
index caecc65d58..86b9ab51c6 100644
--- a/packages/opie-handwriting/opie-handwriting.inc
+++ b/packages/opie-handwriting/opie-handwriting.inc
@@ -3,6 +3,7 @@ SECTION = "opie/inputmethods"
PRIORITY = "optional"
LICENSE = "GPL"
APPNAME = "qhandwriting"
+PR = "r1"
S = "${WORKDIR}/handwriting"
@@ -35,9 +36,9 @@ do_install() {
done
}
-PACKAGES = " opie-handwriting-classicset opie-handwriting-graffitiset opie-handwriting "
+PACKAGES += " opie-handwriting-classicset opie-handwriting-graffitiset "
-FILES_opie-handwriting = "${palmtopdir}/plugins/inputmethods/libqhandwriting.so*"
+FILES_${PN} = "${palmtopdir}/plugins/inputmethods/libqhandwriting.so*"
FILES_opie-handwriting-classicset = "${palmtopdir}/etc/qimpen/default.conf \
${palmtopdir}/etc/qimpen/combining.qpt \
${palmtopdir}/etc/qimpen/asciilower.qpt \
diff --git a/packages/opie-help-en/opie-help-en_cvs.bb b/packages/opie-help-en/opie-help-en_cvs.bb
index 787b40833f..ccd75ca89a 100644
--- a/packages/opie-help-en/opie-help-en_cvs.bb
+++ b/packages/opie-help-en/opie-help-en_cvs.bb
@@ -1,6 +1,5 @@
require ${PN}.inc
-# Remove the dash below when 1.2.1 changes in PV
-PV = "1.2.2+cvs-${SRCDATE}"
+PV = "${OPIE_CVS_PV}"
SRC_URI = "${HANDHELDS_CVS};module=opie/help/en/html "
diff --git a/packages/opie-i18n/opie-i18n_cvs.bb b/packages/opie-i18n/opie-i18n_cvs.bb
index 3e269e73ef..6532cd170c 100644
--- a/packages/opie-i18n/opie-i18n_cvs.bb
+++ b/packages/opie-i18n/opie-i18n_cvs.bb
@@ -1,7 +1,6 @@
require ${PN}.inc
-# Remove the dash below when 1.2.1 changes in PV
-PV = "1.2.2+cvs-${SRCDATE}"
+PV = "${OPIE_CVS_PV}"
SRC_URI = "${HANDHELDS_CVS};module=opie/i18n \
${HANDHELDS_CVS};module=opie/etc/dict"
diff --git a/packages/opie-i18n/opie-lrelease-native_cvs.bb b/packages/opie-i18n/opie-lrelease-native_cvs.bb
index 94401fab78..9bce52188f 100644
--- a/packages/opie-i18n/opie-lrelease-native_cvs.bb
+++ b/packages/opie-i18n/opie-lrelease-native_cvs.bb
@@ -1,6 +1,6 @@
require ${PN}.inc
-# Remove the dash below when 1.2.1 changes in PV
-PV = "1.2.2+cvs-${SRCDATE}"
+PV = "${OPIE_CVS_PV}"
+
SRC_URI = "${HANDHELDS_CVS};module=opie/development/translation/opie-lrelease \
${HANDHELDS_CVS};module=opie/development/translation/shared"
diff --git a/packages/opie-i18n/opie-lupdate-native_cvs.bb b/packages/opie-i18n/opie-lupdate-native_cvs.bb
index 5f2d834b74..e7c33b6da0 100644
--- a/packages/opie-i18n/opie-lupdate-native_cvs.bb
+++ b/packages/opie-i18n/opie-lupdate-native_cvs.bb
@@ -1,6 +1,6 @@
require ${PN}.inc
-# Remove the dash below when 1.2.1 changes in PV
-PV = "1.2.2+cvs-${SRCDATE}"
+PV = "${OPIE_CVS_PV}"
+
SRC_URI = "${HANDHELDS_CVS};module=opie/development/translation/opie-lupdate \
${HANDHELDS_CVS};module=opie/development/translation/shared"
diff --git a/packages/opie-icon-reload/opie-icon-reload.inc b/packages/opie-icon-reload/opie-icon-reload.inc
index 894577b1a4..01f8247f50 100644
--- a/packages/opie-icon-reload/opie-icon-reload.inc
+++ b/packages/opie-icon-reload/opie-icon-reload.inc
@@ -1,8 +1,10 @@
-SECTION = "opie/settings"
DESCRIPTION = "Reload .desktop files on the fly"
+SECTION = "opie/settings"
PRIORITY = "optional"
LICENSE = "GPL"
+PACKAGE_ARCH = "all"
+
SRC_URI = "file://icon-reload.desktop \
file://icon-reload.sh \
file://reload.png"
diff --git a/packages/opie-icon-reload/opie-icon-reload_0.0.1.bb b/packages/opie-icon-reload/opie-icon-reload_0.0.1.bb
deleted file mode 100644
index 9d87f74817..0000000000
--- a/packages/opie-icon-reload/opie-icon-reload_0.0.1.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SECTION = "opie/settings"
-DESCRIPTION = "Reload .desktop files on the fly"
-PRIORITY = "optional"
-LICENSE = "GPL"
-
-PR = "r3"
-
-SRC_URI = "file://icon-reload.desktop \
- file://icon-reload.sh \
- file://reload.png"
-
-FILES_${PN} += "/opt"
-
-do_install() {
- install -d ${D}${palmtopdir}/apps/Settings
- install -d ${D}${palmtopdir}/bin
- install -d ${D}${palmtopdir}/pics
-
- install -m 0644 ${WORKDIR}/icon-reload.desktop ${D}${palmtopdir}/apps/Settings
- install -m 0755 ${WORKDIR}/icon-reload.sh ${D}${palmtopdir}/bin
- install -m 0644 ${WORKDIR}/reload.png ${D}${palmtopdir}/pics
-}
-
diff --git a/packages/opie-icon-reload/opie-icon-reload_cvs.bb b/packages/opie-icon-reload/opie-icon-reload_cvs.bb
deleted file mode 100644
index 7c49fdd77b..0000000000
--- a/packages/opie-icon-reload/opie-icon-reload_cvs.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require ${PN}.inc
-
-#Remove the dash below when 1.2.1 changes
-PV = "1.2.2+cvs-${SRCDATE}"
-
diff --git a/packages/opie-init/.mtn2git_empty b/packages/opie-init/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-init/.mtn2git_empty
diff --git a/packages/opie-init/opie-init.inc b/packages/opie-init/opie-init.inc
new file mode 100644
index 0000000000..d8003925f6
--- /dev/null
+++ b/packages/opie-init/opie-init.inc
@@ -0,0 +1,43 @@
+DESCRIPTION = "Opie Startup scripts and config"
+SECTION = "opie/base"
+PRIORITY = "optional"
+LICENSE = "GPL"
+#APPNAME = "qpe"
+
+#S = "${WORKDIR}/launcher"
+
+#inherit opie
+inherit update-rc.d
+
+INITSCRIPT_NAME = "opie"
+INITSCRIPT_PARAMS = "start 99 5 . stop 20 0 1 6 ."
+
+do_install() {
+ install -d ${D}${sysconfdir}/init.d
+ install -d ${D}${sysconfdir}/profile.d
+ install -d ${D}${palmtopdir}/bin
+ install -d ${D}${palmtopdir}/etc/skel
+
+ install -m 0755 ${WORKDIR}/opie ${D}${sysconfdir}/init.d/opie
+ install -m 0644 ${WORKDIR}/opie_defaults ${D}${sysconfdir}/profile.d/
+
+ install -m 0755 ${WORKDIR}/opie-reorgfiles ${D}${palmtopdir}/bin/
+ install -m 0644 ${WORKDIR}/qpe.conf ${D}${palmtopdir}/etc/skel/
+
+ if [ -s ${WORKDIR}/locale.conf ]; then
+ install -m 0644 ${WORKDIR}/locale.conf ${D}${palmtopdir}/etc/skel/
+ fi
+
+ case ${MACHINE} in
+ c7x0)
+ install -d ${D}${sysconfdir}/apm/event.d/
+ install -m 0755 ${WORKDIR}/qpe-suspend-resume ${D}${sysconfdir}/apm/event.d/00-qpe-suspend-resume.sh
+ ;;
+ *)
+ ;;
+ esac
+}
+
+FILES_opie-init_append = " ${sysconfdir} ${palmtopdir}"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/packages/opie-init/opie-init/.mtn2git_empty b/packages/opie-init/opie-init/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-init/opie-init/.mtn2git_empty
diff --git a/packages/opie-init/opie-init/akita/.mtn2git_empty b/packages/opie-init/opie-init/akita/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-init/opie-init/akita/.mtn2git_empty
diff --git a/packages/opie-taskbar/opie-taskbar/akita/qpe.conf b/packages/opie-init/opie-init/akita/qpe.conf
index e9922e4d86..e9922e4d86 100644
--- a/packages/opie-taskbar/opie-taskbar/akita/qpe.conf
+++ b/packages/opie-init/opie-init/akita/qpe.conf
diff --git a/packages/opie-init/opie-init/c7x0/.mtn2git_empty b/packages/opie-init/opie-init/c7x0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-init/opie-init/c7x0/.mtn2git_empty
diff --git a/packages/opie-init/opie-init/c7x0/opie b/packages/opie-init/opie-init/c7x0/opie
new file mode 100755
index 0000000000..84f3b3e673
--- /dev/null
+++ b/packages/opie-init/opie-init/c7x0/opie
@@ -0,0 +1,85 @@
+#!/bin/sh
+#
+[ -z $LOGNAME ] && export LOGNAME=root && export HOME=/home/root
+[ -z $HOME ] && export HOME=/home/$LOGNAME
+
+# we need to tinker directly with qws_display until the ODevice
+# default (which is now W100:Rot0:0) works flawlessly with rotation
+# and survives a suspend/resume cycle
+export QWS_DISPLAY=Transformed:Rot0:0
+# export QWS_DISPLAY=W100:Rot0:0
+export QTDIR=/opt/QtPalmtop
+export OPIEDIR=/opt/QtPalmtop
+export QPEDIR=/opt/QtPalmtop
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OPIEDIR/lib
+export PATH=$PATH:$OPIEDIR/bin
+
+if [ ! -x "$OPIEDIR/bin/qpe" ] ; then
+ echo Opie not installed
+ exit 0
+fi
+
+. /etc/profile
+
+for conf in $OPIEDIR/etc/skel/*.conf; do
+ conf_basename=`basename $conf`
+ if [ ! -e "$HOME/Settings/$conf_basename" ] ; then
+ echo "Copying default $conf_basename into $HOME/Settings/"
+ mkdir -p $HOME/Settings/
+ cat $conf >$HOME/Settings/$conf_basename
+ fi
+done
+
+if [ ! -e "$HOME/systeminfo/linkver" ] ; then
+ mkdir -p $HOME/systeminfo/
+ echo "1.13" >$HOME/systeminfo/linkver
+fi
+
+if [ ! -e "/opt/Qtopia" ] ; then
+ ln -sf /opt/QtPalmtop /opt/Qtopia
+fi
+
+case $1 in
+'start')
+ #/sbin/getkey 5 "Starting Opie in 5 seconds... press key to interrupt." && exit 0
+
+ if [ -x "$OPIEDIR/bin/opie-login" ]; then
+ echo Starting Opie-login....
+ $OPIEDIR/bin/opie-login -terminal 2
+ else
+ $OPIEDIR/bin/opie-reorgfiles
+ if [ -x /usr/bin/ssh-agent ]; then
+ SSHAGENT=/usr/bin/ssh-agent
+ else
+ SSHAGENT=""
+ fi
+
+ if [ -x "$OPIEDIR/bin/opie-sh-ssh-askpass.sh" ]; then
+ export SSH_ASKPASS=$OPIEDIR/bin/opie-sh-ssh-askpass.sh
+ fi
+ echo Starting Opie....
+ $SSHAGENT $OPIEDIR/bin/qpe -terminal 2
+ fi
+
+ ;;
+
+'stop')
+ echo "Stopping Opie..."
+ killall qpe 2>/dev/null
+ killall opie-login 2>/dev/null
+ killall quicklauncher 2>/dev/null
+
+ ;;
+
+'restart')
+ $0 stop && $0 start
+
+ ;;
+
+*)
+ echo "usage: $0 { start | stop | restart }"
+
+ ;;
+
+esac
+
diff --git a/packages/opie-taskbar/opie-taskbar/c7x0/qpe-suspend-resume b/packages/opie-init/opie-init/c7x0/qpe-suspend-resume
index be37519512..be37519512 100644
--- a/packages/opie-taskbar/opie-taskbar/c7x0/qpe-suspend-resume
+++ b/packages/opie-init/opie-init/c7x0/qpe-suspend-resume
diff --git a/packages/opie-taskbar/opie-taskbar/c7x0/qpe.conf b/packages/opie-init/opie-init/c7x0/qpe.conf
index e9922e4d86..e9922e4d86 100644
--- a/packages/opie-taskbar/opie-taskbar/c7x0/qpe.conf
+++ b/packages/opie-init/opie-init/c7x0/qpe.conf
diff --git a/packages/opie-init/opie-init/htcuniversal/.mtn2git_empty b/packages/opie-init/opie-init/htcuniversal/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-init/opie-init/htcuniversal/.mtn2git_empty
diff --git a/packages/opie-taskbar/opie-taskbar/htcuniversal/qpe.conf b/packages/opie-init/opie-init/htcuniversal/qpe.conf
index e9922e4d86..e9922e4d86 100644
--- a/packages/opie-taskbar/opie-taskbar/htcuniversal/qpe.conf
+++ b/packages/opie-init/opie-init/htcuniversal/qpe.conf
diff --git a/packages/opie-init/opie-init/locale.conf b/packages/opie-init/opie-init/locale.conf
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-init/opie-init/locale.conf
diff --git a/packages/opie-init/opie-init/mnci/.mtn2git_empty b/packages/opie-init/opie-init/mnci/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-init/opie-init/mnci/.mtn2git_empty
diff --git a/packages/opie-taskbar/opie-taskbar/mnci/opie b/packages/opie-init/opie-init/mnci/opie
index d5e2955b10..d5e2955b10 100755
--- a/packages/opie-taskbar/opie-taskbar/mnci/opie
+++ b/packages/opie-init/opie-init/mnci/opie
diff --git a/packages/opie-taskbar/opie-taskbar/mnci/qpe.conf b/packages/opie-init/opie-init/mnci/qpe.conf
index 8efe771ad0..8efe771ad0 100644
--- a/packages/opie-taskbar/opie-taskbar/mnci/qpe.conf
+++ b/packages/opie-init/opie-init/mnci/qpe.conf
diff --git a/packages/opie-init/opie-init/opie b/packages/opie-init/opie-init/opie
new file mode 100755
index 0000000000..63eeb7b47d
--- /dev/null
+++ b/packages/opie-init/opie-init/opie
@@ -0,0 +1,101 @@
+#!/bin/sh
+#
+[ -z $LOGNAME ] && export LOGNAME=root && export HOME=/home/root
+[ -z $HOME ] && export HOME=/home/$LOGNAME
+
+export QTDIR=/opt/QtPalmtop
+export OPIEDIR=/opt/QtPalmtop
+export QPEDIR=/opt/QtPalmtop
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OPIEDIR/lib
+export PATH=$PATH:$OPIEDIR/bin
+
+if [ ! -x "$OPIEDIR/bin/qpe" ] ; then
+ echo Opie not installed
+ exit 0
+fi
+
+. /etc/profile
+
+if [ ! -e $TSLIB_TSDEVICE ]; then
+ export QWS_MOUSE_PROTO=MouseMan:/dev/input/mice
+fi
+
+for conf in $OPIEDIR/etc/skel/*.conf; do
+ conf_basename=`basename $conf`
+ if [ ! -e "$HOME/Settings/$conf_basename" ] ; then
+ echo "Copying default $conf_basename into $HOME/Settings/"
+ mkdir -p $HOME/Settings/
+ cat $conf >$HOME/Settings/$conf_basename
+ fi
+done
+
+if [ ! -e "$HOME/systeminfo/linkver" ] ; then
+ mkdir -p $HOME/systeminfo/
+ echo "1.13" >$HOME/systeminfo/linkver
+fi
+
+if [ ! -e "/opt/Qtopia" ] ; then
+ ln -sf /opt/QtPalmtop /opt/Qtopia
+fi
+
+case $1 in
+'start')
+ #/sbin/getkey 5 "Starting Opie in 5 seconds... press key to interrupt." && exit 0
+
+ # Turn off psplash if any - sleep is required for anti-race
+ if [ -e /mnt/.psplash ]; then
+ TMPDIR=/mnt/.psplash psplash-write "QUIT" || true
+ sleep 1
+ fi
+
+ if [ -x "$OPIEDIR/bin/opie-login" ]; then
+ echo Starting Opie-login....
+ $OPIEDIR/bin/opie-login -terminal 3
+ else
+ $OPIEDIR/bin/opie-reorgfiles
+ if [ -x /usr/bin/ssh-agent ]; then
+ SSHAGENT=/usr/bin/ssh-agent
+ else
+ SSHAGENT=""
+ fi
+
+ if [ -x "$OPIEDIR/bin/opie-sh-ssh-askpass.sh" ]; then
+ export SSH_ASKPASS=$OPIEDIR/bin/opie-sh-ssh-askpass.sh
+ fi
+ echo Starting Opie....
+ $SSHAGENT $OPIEDIR/bin/qpe -terminal 3
+ echo -n >/var/log/opie-qss.log
+ test -x $OPIEDIR/bin/qpe && { for attempt in 0 1 2 3 4 5 6 7 8 9 a b c d e f ; do
+ sleep 1
+ echo "Waiting for qcop to startup: $attempt ..." >>/var/log/opie-qss.log
+ $OPIEDIR/bin/qcop QPE/System 'ping()' || continue
+ echo "Starting qss" >>/var/log/opie-qss.log
+ $OPIEDIR/bin/qss </dev/null >>/var/log/opie-qss.log 2>&1
+ echo "qss exited, will try to restart" >>/var/log/opie-qss.log
+ done; } &
+ fi
+
+ ;;
+
+'stop')
+ echo "Stopping Opie..."
+ killall qss 2>/dev/null
+ killall qpe 2>/dev/null
+ killall opie-login 2>/dev/null
+ killall quicklauncher 2>/dev/null
+ true
+
+ ;;
+
+'restart')
+ $0 stop && $0 start
+
+ ;;
+
+*)
+ echo "usage: $0 { start | stop | restart }"
+
+ ;;
+
+esac
+
diff --git a/packages/opie-taskbar/opie-taskbar/opie-reorgfiles b/packages/opie-init/opie-init/opie-reorgfiles
index 96b3e29da4..96b3e29da4 100755
--- a/packages/opie-taskbar/opie-taskbar/opie-reorgfiles
+++ b/packages/opie-init/opie-init/opie-reorgfiles
diff --git a/packages/opie-init/opie-init/opie_defaults b/packages/opie-init/opie-init/opie_defaults
new file mode 100644
index 0000000000..7de76e4276
--- /dev/null
+++ b/packages/opie-init/opie-init/opie_defaults
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+MACHINE="`cat /proc/cpuinfo | sed -n "/^Hardware/s/.*\:\(.*\)/\1/;s/^\ //p"`"
+KVER="`uname -r | sed -n "s/\([0-9]\)\.\([0-9]\)\..*/\1.\2/p"`"
+
+case "$MACHINE" in
+*Poodle) test "$KVER" = "2.6" && export QWS_CURSOR_ROTATION=90;;
+esac
+
+export QTDIR="/opt/QtPalmtop"
+export OPIEDIR="$QTDIR"
+export QPEDIR="$QTDIR"
+export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$OPIEDIR/lib"
+export PATH="$PATH:$OPIEDIR/bin"
+
diff --git a/packages/opie-taskbar/opie-taskbar/qpe.conf b/packages/opie-init/opie-init/qpe.conf
index 59bb20c762..59bb20c762 100644
--- a/packages/opie-taskbar/opie-taskbar/qpe.conf
+++ b/packages/opie-init/opie-init/qpe.conf
diff --git a/packages/opie-init/opie-init/simpad/.mtn2git_empty b/packages/opie-init/opie-init/simpad/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-init/opie-init/simpad/.mtn2git_empty
diff --git a/packages/opie-taskbar/opie-taskbar/simpad/qpe.conf b/packages/opie-init/opie-init/simpad/qpe.conf
index b10d90b94e..b10d90b94e 100644
--- a/packages/opie-taskbar/opie-taskbar/simpad/qpe.conf
+++ b/packages/opie-init/opie-init/simpad/qpe.conf
diff --git a/packages/opie-init/opie-init/spitz/.mtn2git_empty b/packages/opie-init/opie-init/spitz/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-init/opie-init/spitz/.mtn2git_empty
diff --git a/packages/opie-taskbar/opie-taskbar/spitz/qpe.conf b/packages/opie-init/opie-init/spitz/qpe.conf
index e9922e4d86..e9922e4d86 100644
--- a/packages/opie-taskbar/opie-taskbar/spitz/qpe.conf
+++ b/packages/opie-init/opie-init/spitz/qpe.conf
diff --git a/packages/opie-init/opie-init/tosa/.mtn2git_empty b/packages/opie-init/opie-init/tosa/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-init/opie-init/tosa/.mtn2git_empty
diff --git a/packages/opie-taskbar/opie-taskbar/tosa/qpe.conf b/packages/opie-init/opie-init/tosa/qpe.conf
index e9922e4d86..e9922e4d86 100644
--- a/packages/opie-taskbar/opie-taskbar/tosa/qpe.conf
+++ b/packages/opie-init/opie-init/tosa/qpe.conf
diff --git a/packages/opie-init/opie-init_1.2.2.bb b/packages/opie-init/opie-init_1.2.2.bb
new file mode 100644
index 0000000000..bc1a4bc4e6
--- /dev/null
+++ b/packages/opie-init/opie-init_1.2.2.bb
@@ -0,0 +1,10 @@
+require ${PN}.inc
+PR = "r2"
+
+SRC_URI = "file://opie-reorgfiles \
+ file://opie \
+ file://qpe.conf \
+ file://locale.conf \
+ file://opie_defaults"
+
+SRC_URI_append_c7x0 = " file://qpe-suspend-resume"
diff --git a/packages/opie-irdaapplet/files/.mtn2git_empty b/packages/opie-irdaapplet/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-irdaapplet/files/.mtn2git_empty
diff --git a/packages/opie-irdaapplet/files/learning-cpp.patch b/packages/opie-irdaapplet/files/learning-cpp.patch
new file mode 100644
index 0000000000..60e46fd133
--- /dev/null
+++ b/packages/opie-irdaapplet/files/learning-cpp.patch
@@ -0,0 +1,13 @@
+diff --git a/irda.cpp b/irda.cpp
+index d57104b..848ddb4 100644
+--- a/irda.cpp
++++ b/irda.cpp
+@@ -54,7 +54,7 @@ IrdaApplet::IrdaApplet ( QWidget *parent, const char *name ) :
+ setFixedHeight( AppLnk::smallIconSize() );
+ setFixedWidth( AppLnk::smallIconSize() );
+
+- if (m_sockfd = ::socket ( PF_INET, SOCK_DGRAM, IPPROTO_IP ) == -1)
++ if ( ( m_sockfd = ::socket ( PF_INET, SOCK_DGRAM, IPPROTO_IP ) ) == -1)
+ perror ( "failed grabbing IrDA socket" );
+
+ m_irdaOnPixmap =
diff --git a/packages/opie-irdaapplet/opie-irdaapplet_cvs.bb b/packages/opie-irdaapplet/opie-irdaapplet_cvs.bb
index 539d4555e1..c841c50fe6 100644
--- a/packages/opie-irdaapplet/opie-irdaapplet_cvs.bb
+++ b/packages/opie-irdaapplet/opie-irdaapplet_cvs.bb
@@ -1,8 +1,10 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
+PR = r1
SRC_URI = "${HANDHELDS_CVS};module=opie/core/applets/irdaapplet \
${HANDHELDS_CVS};module=opie/pics \
${HANDHELDS_CVS};module=opie/sounds \
- ${HANDHELDS_CVS};module=opie/apps"
+ ${HANDHELDS_CVS};module=opie/apps \
+ file://learning-cpp.patch;patch=1"
diff --git a/packages/opie-keytabs/opie-keytabs_cvs.bb b/packages/opie-keytabs/opie-keytabs_cvs.bb
index d18339a046..c81cd23eb9 100644
--- a/packages/opie-keytabs/opie-keytabs_cvs.bb
+++ b/packages/opie-keytabs/opie-keytabs_cvs.bb
@@ -1,6 +1,5 @@
require ${PN}.inc
-# Remove the dash below when 1.2.1 changes in PV
-PV = "1.2.2+cvs-${SRCDATE}"
+PV = "${OPIE_CVS_PV}"
SRC_URI = "${HANDHELDS_CVS};module=opie/etc"
diff --git a/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin.inc b/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin.inc
index 14aec8d351..4066f63737 100644
--- a/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin.inc
+++ b/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin.inc
@@ -2,8 +2,8 @@ DESCRIPTION = "MP3 file plugin for opie-mediaplayer11 using libmad"
SECTION = "opie/codecs"
PRIORITY = "optional"
LICENSE = "GPL"
-DEPENDS = "opie-mediaplayer1 libmad"
-RDEPENDS = "opie-mediaplayer1"
+DEPENDS = "opie-mediaplayer1-core libmad"
+RDEPENDS = "opie-mediaplayer1-core"
APPNAME = "madplugin"
diff --git a/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_1.2.2.bb b/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_1.2.2.bb
index 8c8ea5f9fb..19b507a2bc 100644
--- a/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_1.2.2.bb
+++ b/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_1.2.2.bb
@@ -1,5 +1,5 @@
require ${PN}.inc
-
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/multimedia/opieplayer \
diff --git a/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_cvs.bb b/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_cvs.bb
index c30822ab46..9edc355d68 100644
--- a/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_cvs.bb
+++ b/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_cvs.bb
@@ -1,6 +1,7 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};module=opie/core/multimedia/opieplayer \
file://libmadplugin.pro"
diff --git a/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin.inc b/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin.inc
index a3631755e7..16cc11e4e9 100644
--- a/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin.inc
+++ b/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin.inc
@@ -2,8 +2,8 @@ DESCRIPTION = "MOD/XM/S3M/IT plugin using libmodplug"
SECTION = "opie/codecs"
PRIORITY = "optional"
LICENSE = "GPL"
-DEPENDS = "opie-mediaplayer1"
-RDEPENDS = "opie-mediaplayer1"
+DEPENDS = "opie-mediaplayer1-core"
+RDEPENDS = "opie-mediaplayer1-core"
APPNAME = "modplugin"
diff --git a/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_1.2.2.bb b/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_1.2.2.bb
index d5702318c9..5c49fb824f 100644
--- a/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_1.2.2.bb
+++ b/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_1.2.2.bb
@@ -1,5 +1,5 @@
require ${PN}.inc
-
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/multimedia/opieplayer "
diff --git a/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_cvs.bb b/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_cvs.bb
index 4cf1ac926d..427793481e 100644
--- a/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_cvs.bb
+++ b/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_cvs.bb
@@ -1,5 +1,6 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};module=opie/core/multimedia/opieplayer "
diff --git a/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin.inc b/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin.inc
index b5949be74d..f55d0eb3fd 100644
--- a/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin.inc
+++ b/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin.inc
@@ -2,8 +2,8 @@ DESCRIPTION = "Ogg file plugin using tremor"
SECTION = "opie/codecs"
PRIORITY = "optional"
LICENSE = "GPL"
-DEPENDS = "opie-mediaplayer1 tremor"
-RDEPENDS = "opie-mediaplayer1"
+DEPENDS = "opie-mediaplayer1-core tremor"
+RDEPENDS = "opie-mediaplayer1-core"
APPNAME = "tremorplugin"
diff --git a/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_1.2.2.bb b/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_1.2.2.bb
index e49bc44f41..0407a8ab16 100644
--- a/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_1.2.2.bb
+++ b/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_1.2.2.bb
@@ -1,5 +1,5 @@
require ${PN}.inc
-
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/multimedia/opieplayer \
diff --git a/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_cvs.bb b/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_cvs.bb
index f1a3d8a92e..459f59debe 100644
--- a/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_cvs.bb
+++ b/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_cvs.bb
@@ -1,6 +1,7 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};module=opie/core/multimedia/opieplayer \
file://vorbis.pro "
diff --git a/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin.inc b/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin.inc
index c8d81c1ef4..858f8b3040 100644
--- a/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin.inc
+++ b/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin.inc
@@ -2,8 +2,8 @@ DESCRIPTION = "WAV file plugin"
SECTION = "opie/codecs"
PRIORITY = "optional"
LICENSE = "GPL"
-DEPENDS = "opie-mediaplayer1"
-RDEPENDS = "opie-mediaplayer1"
+DEPENDS = "opie-mediaplayer1-core"
+RDEPENDS = "opie-mediaplayer1-core"
APPNAME = "wavplugin"
diff --git a/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_1.2.2.bb b/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_1.2.2.bb
index d5702318c9..5c49fb824f 100644
--- a/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_1.2.2.bb
+++ b/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_1.2.2.bb
@@ -1,5 +1,5 @@
require ${PN}.inc
-
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/multimedia/opieplayer "
diff --git a/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_cvs.bb b/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_cvs.bb
index 4cf1ac926d..427793481e 100644
--- a/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_cvs.bb
+++ b/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_cvs.bb
@@ -1,5 +1,6 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};module=opie/core/multimedia/opieplayer "
diff --git a/packages/opie-mediaplayer1/opie-mediaplayer1-core.inc b/packages/opie-mediaplayer1/opie-mediaplayer1-core.inc
new file mode 100644
index 0000000000..de9ea19368
--- /dev/null
+++ b/packages/opie-mediaplayer1/opie-mediaplayer1-core.inc
@@ -0,0 +1,20 @@
+DESCRIPTION = "The classic Opie media player (core)"
+SECTION = "opie/multimedia"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "libqtaux2"
+RDEPENDS = "opie-mediaplayer2-skin-default"
+APPNAME = "opieplayer"
+APPTYPE = "binary"
+
+
+S = "${WORKDIR}/${APPNAME}"
+
+inherit opie
+
+# FILES bin/opieplayer pics/opieplayer apps/Applications/opieplayer.desktop
+do_install() {
+ install -d ${D}${palmtopdir}/pics/${APPNAME}/skins/default/
+ install -m 0644 ${WORKDIR}/pics/${APPNAME}/*.png ${D}${palmtopdir}/pics/${APPNAME}/
+}
+
diff --git a/packages/opie-mediaplayer1/opie-mediaplayer1-core_1.2.2.bb b/packages/opie-mediaplayer1/opie-mediaplayer1-core_1.2.2.bb
new file mode 100644
index 0000000000..ca0beacb47
--- /dev/null
+++ b/packages/opie-mediaplayer1/opie-mediaplayer1-core_1.2.2.bb
@@ -0,0 +1,6 @@
+require ${PN}.inc
+
+SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/multimedia/opieplayer \
+ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \
+ ${HANDHELDS_CVS};tag=${TAG};module=opie/apps"
+
diff --git a/packages/opie-mediaplayer1/opie-mediaplayer1_cvs.bb b/packages/opie-mediaplayer1/opie-mediaplayer1-core_cvs.bb
index 16d71b2333..16d71b2333 100644
--- a/packages/opie-mediaplayer1/opie-mediaplayer1_cvs.bb
+++ b/packages/opie-mediaplayer1/opie-mediaplayer1-core_cvs.bb
diff --git a/packages/opie-mediaplayer1/opie-mediaplayer1-ogg-mp3_0.1.0.bb b/packages/opie-mediaplayer1/opie-mediaplayer1-ogg-mp3_0.1.0.bb
deleted file mode 100644
index 5f1f6b041f..0000000000
--- a/packages/opie-mediaplayer1/opie-mediaplayer1-ogg-mp3_0.1.0.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-DESCRIPTION = "OPIE Mediaplayer1 OGG+MP3 pseudo package."
-LICENSE = "GPL"
-ALLOW_EMPTY = "1"
-PACKAGES = "${PN}"
-PACKAGE_ARCH = "all"
-RDEPENDS = "opie-mediaplayer1 opie-mediaplayer1-libtremorplugin opie-mediaplayer1-libmadplugin"
-PR = "r1"
diff --git a/packages/opie-mediaplayer1/opie-mediaplayer1.inc b/packages/opie-mediaplayer1/opie-mediaplayer1.inc
deleted file mode 100644
index 7c20be565b..0000000000
--- a/packages/opie-mediaplayer1/opie-mediaplayer1.inc
+++ /dev/null
@@ -1,22 +0,0 @@
-DESCRIPTION = "The classic Opie media player"
-SECTION = "opie/multimedia"
-PRIORITY = "optional"
-LICENSE = "GPL"
-DEPENDS = "libqtaux2"
-RDEPENDS = "opie-mediaplayer2-skin-default"
-RRECOMMENDS = "opie-mediaplayer1-libmadplugin opie-mediaplayer1-libwavplugin \
-opie-mediaplayer1-libmodplugin opie-mediaplayer1-libtremorplugin"
-APPNAME = "opieplayer"
-APPTYPE = "binary"
-
-
-S = "${WORKDIR}/${APPNAME}"
-
-inherit opie
-
-# FILES bin/opieplayer pics/opieplayer apps/Applications/opieplayer.desktop
-do_install() {
- install -d ${D}${palmtopdir}/pics/${APPNAME}/skins/default/
- install -m 0644 ${WORKDIR}/pics/${APPNAME}/*.png ${D}${palmtopdir}/pics/${APPNAME}/
-}
-
diff --git a/packages/opie-mediaplayer1/opie-mediaplayer1_1.2.2.bb b/packages/opie-mediaplayer1/opie-mediaplayer1_1.2.2.bb
index ca0beacb47..0ceaac41e4 100644
--- a/packages/opie-mediaplayer1/opie-mediaplayer1_1.2.2.bb
+++ b/packages/opie-mediaplayer1/opie-mediaplayer1_1.2.2.bb
@@ -1,6 +1,10 @@
-require ${PN}.inc
-
-SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/multimedia/opieplayer \
- ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \
- ${HANDHELDS_CVS};tag=${TAG};module=opie/apps"
+DESCRIPTION = "The classic Opie media player (core+plugins)."
+LICENSE = "GPL"
+ALLOW_EMPTY = "1"
+PACKAGES = "${PN}"
+PACKAGE_ARCH = "all"
+RDEPENDS = "opie-mediaplayer1-core"
+RRECOMMENDS = "opie-mediaplayer1-libmadplugin opie-mediaplayer1-libwavplugin \
+opie-mediaplayer1-libmodplugin opie-mediaplayer1-libtremorplugin"
+PR = "r2"
diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_cvs.bb b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_cvs.bb
index 3cb7f8551e..23898147b1 100644
--- a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_cvs.bb
+++ b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_cvs.bb
@@ -2,9 +2,8 @@ DESCRIPTION = "Skin for opie-mediaplayer2"
SECTION = "opie/multimedia"
PRIORITY = "optional"
LICENSE = "GPL"
-# Remove the dash below when 1.2.1 changes in PV
-PV = "1.2.2+cvs-${SRCDATE}"
APPNAME = "opieplayer2"
+PV = "${OPIE_CVS_PV}"
RPROVIDES = "opie-mediaplayer2-skin"
diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_cvs.bb b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_cvs.bb
index b2e826ae59..bbfbd25e2b 100644
--- a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_cvs.bb
+++ b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_cvs.bb
@@ -2,9 +2,8 @@ DESCRIPTION = "Skin for opie-mediaplayer2"
SECTION = "opie/multimedia"
PRIORITY = "optional"
LICENSE = "GPL"
-# Remove the dash below when 1.2.1 changes in PV
-PV = "1.2.2+cvs-${SRCDATE}"
APPNAME = "opieplayer2"
+PV = "${OPIE_CVS_PV}"
RPROVIDES = "opie-mediaplayer2-skin"
diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_cvs.bb b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_cvs.bb
index d091f50903..ac3f961b3c 100644
--- a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_cvs.bb
+++ b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_cvs.bb
@@ -2,9 +2,8 @@ DESCRIPTION = "Skin for opie-mediaplayer2"
SECTION = "opie/multimedia"
PRIORITY = "optional"
LICENSE = "GPL"
-# Remove the dash below when 1.2.1 changes in PV
-PV = "1.2.2+cvs-${SRCDATE}"
APPNAME = "opieplayer2"
+PV = "${OPIE_CVS_PV}"
RPROVIDES = "opie-mediaplayer2-skin"
diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_cvs.bb b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_cvs.bb
index ca44bfc3af..10a119a48a 100644
--- a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_cvs.bb
+++ b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_cvs.bb
@@ -2,9 +2,8 @@ DESCRIPTION = "Skin for opie-mediaplayer2"
SECTION = "opie/multimedia"
PRIORITY = "optional"
LICENSE = "GPL"
-# Remove the dash below when 1.2.1 changes in PV
-PV = "1.2.2+cvs-${SRCDATE}"
APPNAME = "opieplayer2"
+PV = "${OPIE_CVS_PV}"
RPROVIDES = "opie-mediaplayer2-skin"
diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2_cvs.bb b/packages/opie-mediaplayer2/opie-mediaplayer2_cvs.bb
index 2badc15abd..b080b3ce92 100644
--- a/packages/opie-mediaplayer2/opie-mediaplayer2_cvs.bb
+++ b/packages/opie-mediaplayer2/opie-mediaplayer2_cvs.bb
@@ -1,7 +1,6 @@
require ${PN}.inc
-# Remove the dash below when 1.2.1 changes in PV
-PV = "1.2.2+cvs-${SRCDATE}"
+PV = "${OPIE_CVS_PV}"
SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/multimedia/opieplayer2 \
${HANDHELDS_CVS};module=opie/pics \
diff --git a/packages/opie-multikey/files/.mtn2git_empty b/packages/opie-multikey/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-multikey/files/.mtn2git_empty
diff --git a/packages/opie-multikey/files/friendly-button-names.patch b/packages/opie-multikey/files/friendly-button-names.patch
new file mode 100644
index 0000000000..148204e5b3
--- /dev/null
+++ b/packages/opie-multikey/files/friendly-button-names.patch
@@ -0,0 +1,16 @@
+--- multikey/configdlg.cpp.org 2005-06-15 22:54:50.000000000 +0000
++++ multikey/configdlg.cpp 2007-01-11 19:51:09.000000000 +0000
+@@ -144,11 +144,11 @@
+ add_remove_grid->setMargin(3);
+ add_remove_grid->setSpacing(3);
+
+- add_button = new QPushButton(tr("Add"), add_remove_grid);
++ add_button = new QPushButton(tr("Add custom..."), add_remove_grid);
+ add_button->setFlat(TRUE);
+ connect(add_button, SIGNAL(clicked()), SLOT(addMap()));
+
+- remove_button = new QPushButton(tr("Remove"), add_remove_grid);
++ remove_button = new QPushButton(tr("Remove custom"), add_remove_grid);
+ remove_button->setFlat(TRUE);
+ if (keymaps->currentItem() == 0 || default_maps.find(QFileInfo(current_map).fileName()) != default_maps.end())
+ remove_button->setDisabled(true);
diff --git a/packages/opie-multikey/opie-multikey.inc b/packages/opie-multikey/opie-multikey.inc
index 40cc884715..e936072b4c 100644
--- a/packages/opie-multikey/opie-multikey.inc
+++ b/packages/opie-multikey/opie-multikey.inc
@@ -4,6 +4,7 @@ PRIORITY = "optional"
LICENSE = "GPL"
DEPENDS = "libqtaux2 opie-pickboard"
RDEPENDS = "opie-pics opie-pickboard"
+RRECOMMENDS = "opie-multikeyapplet"
APPNAME = "qmultikey"
S = "${WORKDIR}/multikey"
diff --git a/packages/opie-multikey/opie-multikey_1.2.2.bb b/packages/opie-multikey/opie-multikey_1.2.2.bb
index 7cd1ac6914..9217992acc 100644
--- a/packages/opie-multikey/opie-multikey_1.2.2.bb
+++ b/packages/opie-multikey/opie-multikey_1.2.2.bb
@@ -1,6 +1,7 @@
require ${PN}.inc
-
+PR = "r2"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/inputmethods/multikey \
- ${HANDHELDS_CVS};tag=${TAG};module=opie/share"
+ ${HANDHELDS_CVS};tag=${TAG};module=opie/share \
+ file://friendly-button-names.patch;patch=1"
diff --git a/packages/opie-multikey/opie-multikey_cvs.bb b/packages/opie-multikey/opie-multikey_cvs.bb
index 93d37edfac..53d8db91b4 100644
--- a/packages/opie-multikey/opie-multikey_cvs.bb
+++ b/packages/opie-multikey/opie-multikey_cvs.bb
@@ -1,6 +1,9 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
+PR = "r3"
SRC_URI = "${HANDHELDS_CVS};module=opie/inputmethods/multikey \
${HANDHELDS_CVS};module=opie/share"
+
+# file://friendly-button-names.patch;patch=1"
diff --git a/packages/opie-networksettings/files/.mtn2git_empty b/packages/opie-networksettings/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-networksettings/files/.mtn2git_empty
diff --git a/packages/opie-networksettings/files/wireless.patch b/packages/opie-networksettings/files/wireless.patch
new file mode 100644
index 0000000000..5d8d42af58
--- /dev/null
+++ b/packages/opie-networksettings/files/wireless.patch
@@ -0,0 +1,13 @@
+diff --git a/wlan/wextensions.h b/wlan/wextensions.h
+index a89e33a..356aada 100644
+--- a/wlan/wextensions.h
++++ b/wlan/wextensions.h
+@@ -4,6 +4,8 @@
+ #include <qstring.h>
+
+ #include <netinet/ip.h>
++#include <linux/if.h>
++#include <linux/types.h>
+ #include <linux/wireless.h>
+
+ class WExtensions {
diff --git a/packages/opie-networksettings/opie-networksettings_cvs.bb b/packages/opie-networksettings/opie-networksettings_cvs.bb
index 47eecac791..5207b97c1d 100644
--- a/packages/opie-networksettings/opie-networksettings_cvs.bb
+++ b/packages/opie-networksettings/opie-networksettings_cvs.bb
@@ -1,8 +1,10 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/settings/networksettings \
${HANDHELDS_CVS};module=opie/pics \
${HANDHELDS_CVS};module=opie/apps \
- ${HANDHELDS_CVS};module=opie/root"
+ ${HANDHELDS_CVS};module=opie/root \
+ file://wireless.patch;patch=1"
diff --git a/packages/opie-pics/opie-pics.inc b/packages/opie-pics/opie-pics.inc
index 26c0bd04c7..1bd67a8077 100644
--- a/packages/opie-pics/opie-pics.inc
+++ b/packages/opie-pics/opie-pics.inc
@@ -2,15 +2,12 @@ DESCRIPTION = "Common Opie pictures usable from all applications"
SECTION = "opie/base"
PRIORITY = "optional"
LICENSE = "GPL"
+PR = "r2"
S = "${WORKDIR}"
SHIP_INLINE_PICS = "yes"
-INLINE_PICS = "pics/inline"
-INLINE_PICS_tosa = "pics-hires/inline"
-INLINE_PICS_c7x0 = "pics-hires/inline"
-INLINE_PICS_spitz = "pics-hires/inline"
-INLINE_PICS_akita = "pics-hires/inline"
+INLINE_PICS = '${@base_conditional("GUI_MACHINE_CLASS", "bigscreen", "pics-hires/inline", "pics/inline", d)}'
do_install() {
install -d ${D}${palmtopdir}/pics/addressbook/
diff --git a/packages/opie-pics/opie-pics_cvs.bb b/packages/opie-pics/opie-pics_cvs.bb
index 593ea5bf9c..185ff2f338 100644
--- a/packages/opie-pics/opie-pics_cvs.bb
+++ b/packages/opie-pics/opie-pics_cvs.bb
@@ -1,7 +1,6 @@
require ${PN}.inc
-# Remove the dash below when 1.2.1 changes in PV
-PV = "1.2.2+cvs-${SRCDATE}"
+PV = "${OPIE_CVS_PV}"
SRC_URI = "${HANDHELDS_CVS};module=opie/pics \
${HANDHELDS_CVS};module=opie/pics-hires"
diff --git a/packages/opie-sh-snes/opie-sh-snes.inc b/packages/opie-sh-snes/opie-sh-snes.inc
index 14c1dcd242..1f1787624a 100644
--- a/packages/opie-sh-snes/opie-sh-snes.inc
+++ b/packages/opie-sh-snes/opie-sh-snes.inc
@@ -5,6 +5,7 @@ LICENSE = "GPL"
RDEPENDS = "opie-sh"
+inherit opie
FILES_${PN} = "/opt/QtPalmtop"
diff --git a/packages/opie-sh-snes/opie-sh-snes_cvs.bb b/packages/opie-sh-snes/opie-sh-snes_cvs.bb
index 7c49fdd77b..5f36686636 100644
--- a/packages/opie-sh-snes/opie-sh-snes_cvs.bb
+++ b/packages/opie-sh-snes/opie-sh-snes_cvs.bb
@@ -1,5 +1,4 @@
require ${PN}.inc
-#Remove the dash below when 1.2.1 changes
-PV = "1.2.2+cvs-${SRCDATE}"
-
+PV = "${OPIE_CVS_PV}"
+PR = "r1"
diff --git a/packages/opie-sh/opie-sh.inc b/packages/opie-sh/opie-sh.inc
index 7fe8e79df9..dbc032ecc6 100644
--- a/packages/opie-sh/opie-sh.inc
+++ b/packages/opie-sh/opie-sh.inc
@@ -1,9 +1,10 @@
DESCRIPTION = "A QDialog shell frontend"
-SECTION = "opie/Shell"
+SECTION = "opie/shell"
PRIORITY = "optional"
LICENSE = "GPL"
APPNAME = "opie-sh"
APPTYPE = "binary"
+PR = "r2"
S = "${WORKDIR}/${APPNAME}"
@@ -26,10 +27,10 @@ do_install() {
install -m 0644 ${WORKDIR}/share/config/*.cfg ${D}${palmtopdir}/share/config/
}
-PACKAGES = " opie-sh-microkbd opie-sh-diskfree opie-sh-fsmounter opie-sh-hostlist \
+PACKAGES += " opie-sh-microkbd opie-sh-diskfree opie-sh-fsmounter opie-sh-hostlist \
opie-sh-killproc opie-sh-launcher-refresh opie-sh-logviewer opie-sh-rsynchelper \
opie-sh-servicemanager opie-sh-ssh-askpass opie-sh-stowawayctrl opie-sh-usbnetctrl \
-opie-sh-wavelanchooser ${PN}"
+opie-sh-wavelanchooser "
RDEPENDS_opie-sh-microkbd = "opie-sh"
RDEPENDS_opie-sh-diskfree = "opie-sh"
diff --git a/packages/opie-sounds/opie-sounds_cvs.bb b/packages/opie-sounds/opie-sounds_cvs.bb
index 818a1c48f1..bbd3046b64 100644
--- a/packages/opie-sounds/opie-sounds_cvs.bb
+++ b/packages/opie-sounds/opie-sounds_cvs.bb
@@ -1,6 +1,5 @@
require ${PN}.inc
-# Remove the dash below when 1.2.1 changes in PV
-PV = "1.2.2+cvs-${SRCDATE}"
+PV = "${OPIE_CVS_PV}"
SRC_URI = "${HANDHELDS_CVS};module=opie/sounds"
diff --git a/packages/opie-sysinfo/opie-sysinfo_1.2.2.bb b/packages/opie-sysinfo/opie-sysinfo_1.2.2.bb
index 597f28970d..3a8954bebe 100644
--- a/packages/opie-sysinfo/opie-sysinfo_1.2.2.bb
+++ b/packages/opie-sysinfo/opie-sysinfo_1.2.2.bb
@@ -1,9 +1,10 @@
require ${PN}.inc
-
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/settings/sysinfo \
${HANDHELDS_CVS};tag=${TAG};module=opie/pics \
${HANDHELDS_CVS};tag=${TAG};module=opie/apps \
- ${HANDHELDS_CVS};tag=${TAG};module=opie/share \
- file://jornada-6xx-7xx.patch;patch=1"
+ ${HANDHELDS_CVS};tag=${TAG};module=opie/share"
+
+SRC_URI_append_jlime = "file://jornada-6xx-7xx.patch;patch=1"
diff --git a/packages/opie-taskbar/opie-taskbar.inc b/packages/opie-taskbar/opie-taskbar.inc
index edc2c7a479..8dae3b2484 100644
--- a/packages/opie-taskbar/opie-taskbar.inc
+++ b/packages/opie-taskbar/opie-taskbar.inc
@@ -23,12 +23,11 @@ PIXMAP_SIZE_spitz = "-640x480"
PIXMAP_SIZE_akita = "-640x480"
PIXMAP_SIZE_tosa = "-480x640"
PIXMAP_SIZE_simpad = "-800x600"
+PIXMAP_SIZE_asus730 = "-480x640"
PIXMAP_SIZE_htcuniversal= "-480x640"
+PIXMAP_SIZE_hx4700 = "-480x640"
-inherit opie update-rc.d
-
-INITSCRIPT_NAME = "opie"
-INITSCRIPT_PARAMS = "start 99 5 . stop 20 0 1 6 ."
+inherit opie
do_configure_prepend() {
ln -s ${WORKDIR}/calibrate ${S}/calibrate
@@ -54,16 +53,13 @@ do_install() {
install -d ${D}${palmtopdir}/pics/launcher
install -d ${D}${palmtopdir}/pics/logo
install -d ${D}${palmtopdir}/pics/RoH/star/
- install -d ${D}${sysconfdir}/init.d
- install -d ${D}${sysconfdir}/profile.d
install -d ${D}${palmtopdir}/etc/colors
install -d ${D}${palmtopdir}/etc/skel
+ install -d ${D}${sysconfdir}
install -m 0755 ${S}/qpe ${D}${palmtopdir}/bin/qpe
- install -m 0755 ${WORKDIR}/opie-reorgfiles ${D}${palmtopdir}/bin/
install -m 0644 ${WORKDIR}/apps/Settings/calibrate.desktop ${D}${palmtopdir}/apps/Settings/
install -m 0644 ${WORKDIR}/apps/Settings/quit.desktop ${D}${palmtopdir}/apps/Settings/
- install -m 0644 ${WORKDIR}/opie_defaults ${D}${sysconfdir}/profile.d/
for p in ${PICS}
do
@@ -78,33 +74,8 @@ do_install() {
install -m 0644 ${WORKDIR}/etc/colors/*.scheme ${D}${palmtopdir}/etc/colors/
install -m 0644 ${WORKDIR}/etc/mime.types ${D}${sysconfdir}/
- install -m 0755 ${WORKDIR}/opie ${D}${sysconfdir}/init.d/opie
- install -m 0644 ${WORKDIR}/qpe.conf ${D}${palmtopdir}/etc/skel/
-
- if [ -s ${WORKDIR}/locale.conf ]; then
- install -m 0644 ${WORKDIR}/locale.conf ${D}${palmtopdir}/etc/skel/
- fi
-
install -m 0644 ${WORKDIR}/pics/capslock.xpm ${D}${palmtopdir}/pics/
install -m 0644 ${WORKDIR}/pics/numlock.xpm ${D}${palmtopdir}/pics/
-
- case ${MACHINE} in
- c7x0)
- install -d ${D}${sysconfdir}/apm/event.d/
- install -m 0755 ${WORKDIR}/qpe-suspend-resume ${D}${sysconfdir}/apm/event.d/00-qpe-suspend-resume.sh
- ;;
- *)
- ;;
- esac
-}
-
-updatercd_postinst_mnci() {
-if test "x$D" != "x"; then
- D="-r $D"
-else
- D="" # do not autostart at installation time
-fi
-update-rc.d $D ${INITSCRIPT_NAME} ${INITSCRIPT_PARAMS}
}
FILES_opie-taskbar_append = " ${sysconfdir} ${palmtopdir}/apps ${palmtopdir}/pics"
diff --git a/packages/opie-taskbar/opie-taskbar/c7x0/opie b/packages/opie-taskbar/opie-taskbar/c7x0/opie
deleted file mode 100755
index dddb7caa0d..0000000000
--- a/packages/opie-taskbar/opie-taskbar/c7x0/opie
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/bin/sh
-#
-[ -z $LOGNAME ] && export LOGNAME=root && export HOME=/home/root
-[ -z $HOME ] && export HOME=/home/$LOGNAME
-
-# we need to tinker directly with qws_display until the ODevice
-# default (which is now W100:Rot0:0) works flawlessly with rotation
-# and survives a suspend/resume cycle
-export QWS_DISPLAY=Transformed:Rot0:0
-# export QWS_DISPLAY=W100:Rot0:0
-export QTDIR=/opt/QtPalmtop
-export OPIEDIR=/opt/QtPalmtop
-export QPEDIR=/opt/QtPalmtop
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OPIEDIR/lib
-export PATH=$PATH:$OPIEDIR/bin
-
-if [ ! -x "$OPIEDIR/bin/qpe" ] ; then
- echo Opie not installed
- exit 0
-fi
-
-. /etc/profile
-
-for conf in $OPIEDIR/etc/skel/*.conf; do
- conf_basename=`basename $conf`
- if [ ! -e "$HOME/Settings/$conf_basename" ] ; then
- echo "Copying default $conf_basename into $HOME/Settings/"
- mkdir -p $HOME/Settings/
- cat $conf >$HOME/Settings/$conf_basename
- fi
-done
-
-if [ ! -e "$HOME/systeminfo/linkver" ] ; then
- mkdir -p $HOME/systeminfo/
- echo "1.13" >$HOME/systeminfo/linkver
-fi
-
-if [ ! -e "/opt/Qtopia" ] ; then
- ln -sf /opt/QtPalmtop /opt/Qtopia
-fi
-
-case $1 in
-'start')
- /sbin/getkey 5 "Starting Opie in 5 seconds... press key to interrupt." && exit 0
-
- if [ -x "$OPIEDIR/bin/opie-login" ]; then
- echo Starting Opie-login....
- $OPIEDIR/bin/opie-login -terminal 2
- else
- $OPIEDIR/bin/opie-reorgfiles
- if [ -x /usr/bin/ssh-agent ]; then
- SSHAGENT=/usr/bin/ssh-agent
- else
- SSHAGENT=""
- fi
-
- if [ -x "$OPIEDIR/bin/opie-sh-ssh-askpass.sh" ]; then
- export SSH_ASKPASS=$OPIEDIR/bin/opie-sh-ssh-askpass.sh
- fi
- echo Starting Opie....
- $SSHAGENT $OPIEDIR/bin/qpe -terminal 2
- fi
-
- ;;
-
-'stop')
- echo "Stopping Opie..."
- killall qpe 2>/dev/null
- killall opie-login 2>/dev/null
- killall quicklauncher 2>/dev/null
-
- ;;
-
-'restart')
- $0 stop && $0 start
-
- ;;
-
-*)
- echo "usage: $0 { start | stop | restart }"
-
- ;;
-
-esac
-
diff --git a/packages/opie-taskbar/opie-taskbar/htcuniversal/opie b/packages/opie-taskbar/opie-taskbar/htcuniversal/opie
deleted file mode 100644
index fc39fff358..0000000000
--- a/packages/opie-taskbar/opie-taskbar/htcuniversal/opie
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/sh
-#
-[ -z $LOGNAME ] && export LOGNAME=root && export HOME=/home/root
-[ -z $HOME ] && export HOME=/home/$LOGNAME
-
-export QTDIR=/opt/QtPalmtop
-export OPIEDIR=/opt/QtPalmtop
-export QPEDIR=/opt/QtPalmtop
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OPIEDIR/lib
-export PATH=$PATH:$OPIEDIR/bin
-export QWS_MOUSE_PROTO=TPanel:`detect-stylus --device`
-export QWS_KEYBOARD=USB:/dev/input/event1
-
-if [ ! -x "$OPIEDIR/bin/qpe" ] ; then
- echo Opie not installed
- exit 0
-fi
-
-. /etc/profile
-
-for conf in $OPIEDIR/etc/skel/*.conf; do
- conf_basename=`basename $conf`
- if [ ! -e "$HOME/Settings/$conf_basename" ] ; then
- echo "Copying default $conf_basename into $HOME/Settings/"
- mkdir -p $HOME/Settings/
- cat $conf >$HOME/Settings/$conf_basename
- fi
-done
-
-if [ ! -e "$HOME/systeminfo/linkver" ] ; then
- mkdir -p $HOME/systeminfo/
- echo "1.13" >$HOME/systeminfo/linkver
-fi
-
-if [ ! -e "/opt/Qtopia" ] ; then
- ln -sf /opt/QtPalmtop /opt/Qtopia
-fi
-
-case $1 in
-'start')
- /sbin/getkey 5 "Starting Opie in 5 seconds... press key to interrupt." && exit 0
-
- if [ -x "$OPIEDIR/bin/opie-login" ]; then
- echo Starting Opie-login....
- $OPIEDIR/bin/opie-login -terminal 2
- else
- $OPIEDIR/bin/opie-reorgfiles
- if [ -x /usr/bin/ssh-agent ]; then
- SSHAGENT=/usr/bin/ssh-agent
- else
- SSHAGENT=""
- fi
-
- if [ -x "$OPIEDIR/bin/opie-sh-ssh-askpass.sh" ]; then
- export SSH_ASKPASS=$OPIEDIR/bin/opie-sh-ssh-askpass.sh
- fi
- echo Starting Opie....
- $SSHAGENT $OPIEDIR/bin/qpe -terminal 2
- fi
-
- ;;
-
-'stop')
- echo "Stopping Opie..."
- killall qpe 2>/dev/null
- killall opie-login 2>/dev/null
- killall quicklauncher 2>/dev/null
-
- ;;
-
-'restart')
- $0 stop && $0 start
-
- ;;
-
-*)
- echo "usage: $0 { start | stop | restart }"
-
- ;;
-
-esac
-
diff --git a/packages/opie-taskbar/opie-taskbar/no-builtin-qss-startup.patch b/packages/opie-taskbar/opie-taskbar/no-builtin-qss-startup.patch
new file mode 100644
index 0000000000..349b28675b
--- /dev/null
+++ b/packages/opie-taskbar/opie-taskbar/no-builtin-qss-startup.patch
@@ -0,0 +1,11 @@
+--- launcher/server.cpp.org 2007-05-01 20:55:01.000000000 +0000
++++ launcher/server.cpp 2007-05-03 04:48:45.000000000 +0000
+@@ -1009,6 +1009,8 @@
+ }
+
+ void Server::startSoundServer() {
++ owarn << "Sound server (qss) now needs to be started standalone" << oendl;
++ return;
+ if ( !process ) {
+ process = new Opie::Core::OProcess( this );
+ connect(process, SIGNAL(processExited(Opie::Core::OProcess*)),
diff --git a/packages/opie-taskbar/opie-taskbar/opie b/packages/opie-taskbar/opie-taskbar/opie
deleted file mode 100755
index 0d9452523e..0000000000
--- a/packages/opie-taskbar/opie-taskbar/opie
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/sh
-#
-[ -z $LOGNAME ] && export LOGNAME=root && export HOME=/home/root
-[ -z $HOME ] && export HOME=/home/$LOGNAME
-
-export QTDIR=/opt/QtPalmtop
-export OPIEDIR=/opt/QtPalmtop
-export QPEDIR=/opt/QtPalmtop
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OPIEDIR/lib
-export PATH=$PATH:$OPIEDIR/bin
-
-if [ ! -x "$OPIEDIR/bin/qpe" ] ; then
- echo Opie not installed
- exit 0
-fi
-
-. /etc/profile
-
-for conf in $OPIEDIR/etc/skel/*.conf; do
- conf_basename=`basename $conf`
- if [ ! -e "$HOME/Settings/$conf_basename" ] ; then
- echo "Copying default $conf_basename into $HOME/Settings/"
- mkdir -p $HOME/Settings/
- cat $conf >$HOME/Settings/$conf_basename
- fi
-done
-
-if [ ! -e "$HOME/systeminfo/linkver" ] ; then
- mkdir -p $HOME/systeminfo/
- echo "1.13" >$HOME/systeminfo/linkver
-fi
-
-if [ ! -e "/opt/Qtopia" ] ; then
- ln -sf /opt/QtPalmtop /opt/Qtopia
-fi
-
-case $1 in
-'start')
- /sbin/getkey 5 "Starting Opie in 5 seconds... press key to interrupt." && exit 0
-
- if [ -x "$OPIEDIR/bin/opie-login" ]; then
- echo Starting Opie-login....
- $OPIEDIR/bin/opie-login -terminal 2
- else
- $OPIEDIR/bin/opie-reorgfiles
- if [ -x /usr/bin/ssh-agent ]; then
- SSHAGENT=/usr/bin/ssh-agent
- else
- SSHAGENT=""
- fi
-
- if [ -x "$OPIEDIR/bin/opie-sh-ssh-askpass.sh" ]; then
- export SSH_ASKPASS=$OPIEDIR/bin/opie-sh-ssh-askpass.sh
- fi
- echo Starting Opie....
- $SSHAGENT $OPIEDIR/bin/qpe -terminal 2
- fi
-
- ;;
-
-'stop')
- echo "Stopping Opie..."
- killall qpe 2>/dev/null
- killall opie-login 2>/dev/null
- killall quicklauncher 2>/dev/null
-
- ;;
-
-'restart')
- $0 stop && $0 start
-
- ;;
-
-*)
- echo "usage: $0 { start | stop | restart }"
-
- ;;
-
-esac
-
diff --git a/packages/opie-taskbar/opie-taskbar/opie_defaults b/packages/opie-taskbar/opie-taskbar/opie_defaults
deleted file mode 100644
index f560889927..0000000000
--- a/packages/opie-taskbar/opie-taskbar/opie_defaults
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-MACHINE="`cat /proc/cpuinfo | sed -n "/^Hardware/s/.*\:\(.*\)/\1/;s/^\ //p"`"
-KVER="`uname -r | sed -n "s/\([0-9]\)\.\([0-9]\)\..*/\1.\2/p"`"
-
-case "$MACHINE" in
-*Poodle) test "$KVER" = "2.6" && export QWS_CURSOR_ROTATION=90;;
-esac
-
-export PATH="$PATH:/opt/QtPalmtop/bin"
-export QTDIR="/opt/QtPalmtop"
-
diff --git a/packages/opie-taskbar/opie-taskbar_1.2.2.bb b/packages/opie-taskbar/opie-taskbar_1.2.2.bb
index 9b1cd8c461..497bff0953 100644
--- a/packages/opie-taskbar/opie-taskbar_1.2.2.bb
+++ b/packages/opie-taskbar/opie-taskbar_1.2.2.bb
@@ -1,5 +1,5 @@
require ${PN}.inc
-PR = "r1"
+PR = "r7"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/apps/calibrate \
${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/settings/mediummount \
@@ -10,10 +10,4 @@ SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/apps/calibrate \
${HANDHELDS_CVS};tag=${TAG};module=opie/etc \
file://nomax.patch;patch=1;pnum=3 \
file://server.pro \
- file://opie-reorgfiles \
- file://opie \
- file://qpe.conf \
- file://locale.conf \
- file://opie_defaults"
-
-SRC_URI_append_c7x0 = " file://qpe-suspend-resume"
+ "
diff --git a/packages/opie-taskbar/opie-taskbar_cvs.bb b/packages/opie-taskbar/opie-taskbar_cvs.bb
index 799d8a1d30..81e2131be9 100644
--- a/packages/opie-taskbar/opie-taskbar_cvs.bb
+++ b/packages/opie-taskbar/opie-taskbar_cvs.bb
@@ -1,6 +1,6 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
-PR = "r1"
+PR = "r8"
SRC_URI = "${HANDHELDS_CVS};module=opie/core/apps/calibrate \
${HANDHELDS_CVS};module=opie/noncore/settings/mediummount \
@@ -10,11 +10,6 @@ SRC_URI = "${HANDHELDS_CVS};module=opie/core/apps/calibrate \
${HANDHELDS_CVS};module=opie/root \
${HANDHELDS_CVS};module=opie/etc \
file://nomax.patch;patch=1;pnum=3 \
+ file://no-builtin-qss-startup.patch;patch=1 \
file://server.pro \
- file://opie-reorgfiles \
- file://opie \
- file://qpe.conf \
- file://locale.conf \
- file://opie_defaults"
-
-SRC_URI_append_c7x0 = " file://qpe-suspend-resume"
+ "
diff --git a/packages/opie-theme/opie-theme.inc b/packages/opie-theme/opie-theme.inc
index efb72b3d55..0017154a56 100644
--- a/packages/opie-theme/opie-theme.inc
+++ b/packages/opie-theme/opie-theme.inc
@@ -33,7 +33,8 @@ do_install() {
done
}
-PACKAGES = " opie-theme-cleannsimple opie-theme-grade8 opie-theme-ixpe opie-theme-lumonmarble opie-theme-lumonwave opie-theme-luna opie-theme "
+PACKAGES += " opie-theme-cleannsimple opie-theme-grade8 opie-theme-ixpe opie-theme-lumonmarble \
+ opie-theme-lumonwave opie-theme-luna "
FILES_opie-theme = " ${palmtopdir}/plugins/styles/libtheme.so*"
FILES_opie-theme-cleannsimple = " ${palmtopdir}/plugins/styles/themes/cleannsimple.themerc ${palmtopdir}/plugins/styles/pixmaps/cleannsimple/*.png"
diff --git a/packages/opie-theme/opie-theme_1.2.2.bb b/packages/opie-theme/opie-theme_1.2.2.bb
index d765a9ffc4..fc20e7fd60 100644
--- a/packages/opie-theme/opie-theme_1.2.2.bb
+++ b/packages/opie-theme/opie-theme_1.2.2.bb
@@ -1,5 +1,5 @@
require ${PN}.inc
-
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/styles/theme \
diff --git a/packages/opie-theme/opie-theme_cvs.bb b/packages/opie-theme/opie-theme_cvs.bb
index 31e66d220b..5b9a33142d 100644
--- a/packages/opie-theme/opie-theme_cvs.bb
+++ b/packages/opie-theme/opie-theme_cvs.bb
@@ -1,4 +1,5 @@
require ${PN}.inc
+PR = "r1"
PV = "${OPIE_CVS_PV}"
diff --git a/packages/opie-todo/files/.mtn2git_empty b/packages/opie-todo/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/opie-todo/files/.mtn2git_empty
diff --git a/packages/opie-todo/files/unbreak-logging.patch b/packages/opie-todo/files/unbreak-logging.patch
new file mode 100644
index 0000000000..20e0bd0ff7
--- /dev/null
+++ b/packages/opie-todo/files/unbreak-logging.patch
@@ -0,0 +1,21 @@
+Index: todo/main.cpp
+===================================================================
+RCS file: /cvs/opie/core/pim/todo/main.cpp,v
+retrieving revision 1.11
+diff -u -r1.11 main.cpp
+--- main.cpp 6 Apr 2005 21:39:47 -0000 1.11
++++ main.cpp 3 May 2007 02:57:14 -0000
+@@ -34,13 +34,8 @@
+
+ #include <qpe/qpeapplication.h>
+
+-void myMessages( QtMsgType, const char* ) {
+-
+-}
+-
+ int main( int argc, char **argv )
+ {
+- qInstallMsgHandler( myMessages );
+ QPEApplication a( argc, argv );
+
+ QTime time;
diff --git a/packages/opie-todo/opie-todo_cvs.bb b/packages/opie-todo/opie-todo_cvs.bb
index dabbdfd4fb..164c13f25b 100644
--- a/packages/opie-todo/opie-todo_cvs.bb
+++ b/packages/opie-todo/opie-todo_cvs.bb
@@ -1,6 +1,8 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
+PR = "r2"
SRC_URI = "${HANDHELDS_CVS};module=opie/core/pim/todo \
- ${HANDHELDS_CVS};module=opie/apps"
+ ${HANDHELDS_CVS};module=opie/apps \
+ file://unbreak-logging.patch;patch=1"
diff --git a/packages/ossie/ossie-c-wavloader_svn.bb b/packages/ossie/ossie-c-wavloader_svn.bb
index 5fdc9332cf..8f79f4667e 100644
--- a/packages/ossie/ossie-c-wavloader_svn.bb
+++ b/packages/ossie/ossie-c-wavloader_svn.bb
@@ -1,8 +1,9 @@
-PR = "r0"
DESCRIPTION = "OSSIE Waveform Loader"
SECTION = "apps"
PRIORITY = "optional"
LICENSE = "GPL"
+PV = "0.0.0+svn${SRCDATE}"
+PR = "r0"
DEPENDS = "ossiecf expat"
diff --git a/packages/ossie/ossie-channeldemo_svn.bb b/packages/ossie/ossie-channeldemo_svn.bb
index 93a41b6c3c..c7b6ffebff 100644
--- a/packages/ossie/ossie-channeldemo_svn.bb
+++ b/packages/ossie/ossie-channeldemo_svn.bb
@@ -1,12 +1,12 @@
-PR = "r0"
DESCRIPTION = "OSSIE Demo channel component"
SECTION = "apps"
PRIORITY = "optional"
LICENSE = "GPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "ossiecf"
-S="${WORKDIR}/ChannelDemo"
+S = "${WORKDIR}/ChannelDemo"
SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/components/ChannelDemo/trunk;module=ChannelDemo;proto=https"
diff --git a/packages/ossie/ossie-demo_svn.bb b/packages/ossie/ossie-demo_svn.bb
index d2777ecc10..cef94f40a2 100644
--- a/packages/ossie/ossie-demo_svn.bb
+++ b/packages/ossie/ossie-demo_svn.bb
@@ -1,13 +1,13 @@
-PR = "r0"
DESCRIPTION = "OSSIE Demo waveform"
SECTION = "apps"
PRIORITY = "optional"
LICENSE = "GPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "ossiecf ossie-channeldemo ossie-rxdemo"
RDEPENDS = "ossie-channeldemo ossie-rxdemo"
-S="${WORKDIR}/ossie_demo"
+S = "${WORKDIR}/ossie_demo"
SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/waveforms/ossie_demo/trunk;module=ossie_demo;proto=https"
diff --git a/packages/ossie/ossie-gpp-device_svn.bb b/packages/ossie/ossie-gpp-device_svn.bb
index 39adc0a74c..24099746b0 100644
--- a/packages/ossie/ossie-gpp-device_svn.bb
+++ b/packages/ossie/ossie-gpp-device_svn.bb
@@ -1,13 +1,13 @@
-PR = "r0"
DESCRIPTION = "OSSIE General Purpose Processor device"
SECTION = "apps"
PRIORITY = "optional"
MAINTAINER = "Philip Balister philip@balister.org"
LICENSE = "GPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "ossiecf"
-S="${WORKDIR}/GPP"
+S = "${WORKDIR}/GPP"
SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/platform/GPP/trunk;module=GPP;proto=https"
diff --git a/packages/ossie/ossie-interpolator_svn.bb b/packages/ossie/ossie-interpolator_svn.bb
index ca561fe0a1..24d641d0a2 100644
--- a/packages/ossie/ossie-interpolator_svn.bb
+++ b/packages/ossie/ossie-interpolator_svn.bb
@@ -1,12 +1,12 @@
-PR = "r0"
DESCRIPTION = "OSSIE Interpolator component"
SECTION = "apps"
PRIORITY = "optional"
LICENSE = "GPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "ossiecf ossie-standardinterfaces ossie-sigproc"
-S="${WORKDIR}/Interpolator"
+S = "${WORKDIR}/Interpolator"
SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/components/Interpolator/trunk;module=Interpolator;proto=https"
diff --git a/packages/ossie/ossie-modulator_svn.bb b/packages/ossie/ossie-modulator_svn.bb
index c6ac6afe73..bead988782 100644
--- a/packages/ossie/ossie-modulator_svn.bb
+++ b/packages/ossie/ossie-modulator_svn.bb
@@ -1,12 +1,12 @@
-PR = "r0"
DESCRIPTION = "OSSIE Modulator component"
SECTION = "apps"
PRIORITY = "optional"
LICENSE = "GPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "ossiecf ossie-standardinterfaces ossie-sigproc"
-S="${WORKDIR}/Modulator"
+S = "${WORKDIR}/Modulator"
SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/components/Modulator/trunk;module=Modulator;proto=https"
diff --git a/packages/ossie/ossie-nodebooter_svn.bb b/packages/ossie/ossie-nodebooter_svn.bb
index 5a941550db..f37df3da74 100644
--- a/packages/ossie/ossie-nodebooter_svn.bb
+++ b/packages/ossie/ossie-nodebooter_svn.bb
@@ -1,12 +1,12 @@
-PR = "r0"
DESCRIPTION = "OSSIE Node Booter"
SECTION = "apps"
PRIORITY = "optional"
LICENSE = "GPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "ossiecf"
-S="${WORKDIR}/nodebooter"
+S = "${WORKDIR}/nodebooter"
SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/platform/nodebooter/trunk;module=nodebooter;proto=https"
diff --git a/packages/ossie/ossie-randombits_svn.bb b/packages/ossie/ossie-randombits_svn.bb
index a3ddc23185..6f9185910a 100644
--- a/packages/ossie/ossie-randombits_svn.bb
+++ b/packages/ossie/ossie-randombits_svn.bb
@@ -1,13 +1,12 @@
-PR = "r0"
DESCRIPTION = "OSSIE Random bit generator component"
SECTION = "apps"
PRIORITY = "optional"
LICENSE = "GPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "ossiecf ossie-standardinterfaces ossie-sigproc"
-S="${WORKDIR}/RandomBits"
-
+S = "${WORKDIR}/RandomBits"
SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/components/RandomBits/trunk;module=RandomBits;proto=https"
diff --git a/packages/ossie/ossie-rxdemo_svn.bb b/packages/ossie/ossie-rxdemo_svn.bb
index 34619b3845..2260cb9956 100644
--- a/packages/ossie/ossie-rxdemo_svn.bb
+++ b/packages/ossie/ossie-rxdemo_svn.bb
@@ -1,12 +1,12 @@
-PR = "r0"
DESCRIPTION = "OSSIE Demo receiver component"
SECTION = "apps"
PRIORITY = "optional"
LICENSE = "GPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "ossiecf"
-S="${WORKDIR}/RxDemo"
+S = "${WORKDIR}/RxDemo"
SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/components/RxDemo/trunk;module=RxDemo;proto=https"
diff --git a/packages/ossie/ossie-sigproc_svn.bb b/packages/ossie/ossie-sigproc_svn.bb
index 5d3643bfde..20fe0b6460 100644
--- a/packages/ossie/ossie-sigproc_svn.bb
+++ b/packages/ossie/ossie-sigproc_svn.bb
@@ -1,12 +1,12 @@
-PR = "r0"
DESCRIPTION = "OSSIE Signal Processing routines"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "LGPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "ossiecf"
-S="${WORKDIR}/SigProc"
+S = "${WORKDIR}/SigProc"
SRCDATE = "now"
SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/SigProc/trunk;module=SigProc;proto=https"
@@ -15,6 +15,8 @@ inherit autotools pkgconfig
EXTRA_OECONF_append_arm = " --enable-fpm=arm"
+CXXFLAGS_powerpc = "-lstdc++"
+
do_stage () {
autotools_stage_all
}
diff --git a/packages/ossie/ossie-soundout-device_svn.bb b/packages/ossie/ossie-soundout-device_svn.bb
index 2af60db834..83daa5b013 100644
--- a/packages/ossie/ossie-soundout-device_svn.bb
+++ b/packages/ossie/ossie-soundout-device_svn.bb
@@ -1,13 +1,13 @@
-PR = "r0"
DESCRIPTION = "OSSIE sound playback device"
SECTION = "apps"
PRIORITY = "optional"
MAINTAINER = "Philip Balister philip@balister.org"
LICENSE = "GPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "alsa-lib ossiecf ossie-standardinterfaces"
-S="${WORKDIR}/Sound_out"
+S = "${WORKDIR}/Sound_out"
SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/platform/Sound_out/trunk;module=Sound_out;proto=https"
@@ -15,6 +15,8 @@ prefix="/home/sca"
inherit autotools
+EXTRA_OECONF = "--with-omniorb=${STAGING_BINDIR}/.. IDL=${STAGING_BINDIR_NATIVE}/omniidl"
+
FILES_${PN} += "/home/sca/xml/soundCard/*xml"
BROKEN = "1"
diff --git a/packages/ossie/ossie-standardinterfaces_svn.bb b/packages/ossie/ossie-standardinterfaces_svn.bb
index 7482430ec8..44e2f3899e 100644
--- a/packages/ossie/ossie-standardinterfaces_svn.bb
+++ b/packages/ossie/ossie-standardinterfaces_svn.bb
@@ -1,18 +1,22 @@
-PR = "r0"
DESCRIPTION = "OSSIE Standard port interfaces"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "LGPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "ossiecf"
-S="${WORKDIR}/standardInterfaces"
+S = "${WORKDIR}/standardInterfaces"
SRCDATE = "now"
SRC_URI = "svn://ossie-dev.mprg.org/repos/ossie/standardInterfaces/trunk;module=standardInterfaces;proto=https"
inherit autotools pkgconfig
+EXTRA_OECONF = "--with-omniorb=${STAGING_BINDIR}/.. IDL=${STAGING_BINDIR_NATIVE}/omniidl"
+
+CXXFLAGS_powerpc += "-lstdc++"
+
do_stage () {
autotools_stage_all
}
diff --git a/packages/ossie/ossie-tx-random-data_svn.bb b/packages/ossie/ossie-tx-random-data_svn.bb
index 1597f5ec94..744e505679 100644
--- a/packages/ossie/ossie-tx-random-data_svn.bb
+++ b/packages/ossie/ossie-tx-random-data_svn.bb
@@ -1,13 +1,13 @@
-PR = "r0"
DESCRIPTION = "OSSIE transmit random bits waveform"
SECTION = "apps"
PRIORITY = "optional"
LICENSE = "GPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "ossiecf ossie-randombits ossie-modulator ossie-interpolator ossie-usrp-tx-control ossie-usrp-device ossie-gpp-device"
RDEPENDS = "ossie-randombits ossie-modulator ossie-interpolator ossie-usrp-tx-control ossie-usrp-device ossie-gpp-device"
-S="${WORKDIR}/TX_Random_data"
+S = "${WORKDIR}/TX_Random_data"
SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/waveforms/TX_Random_data/trunk;module=TX_Random_data;proto=https"
diff --git a/packages/ossie/ossie-usrp-device_svn.bb b/packages/ossie/ossie-usrp-device_svn.bb
index 943b53a464..e28996ce15 100644
--- a/packages/ossie/ossie-usrp-device_svn.bb
+++ b/packages/ossie/ossie-usrp-device_svn.bb
@@ -1,13 +1,13 @@
-PR = "r0"
DESCRIPTION = "OSSIE General Purpose Processor device"
SECTION = "apps"
PRIORITY = "optional"
MAINTAINER = "Philip Balister philip@balister.org"
LICENSE = "GPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "ossiecf usrp ossie-standardinterfaces"
-S="${WORKDIR}/USRP"
+S = "${WORKDIR}/USRP"
SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/platform/USRP/trunk;module=USRP;proto=https"
diff --git a/packages/ossie/ossie-usrp-tx-control_svn.bb b/packages/ossie/ossie-usrp-tx-control_svn.bb
index b3fca8fe9b..756fce9d61 100644
--- a/packages/ossie/ossie-usrp-tx-control_svn.bb
+++ b/packages/ossie/ossie-usrp-tx-control_svn.bb
@@ -1,15 +1,15 @@
-PR = "r0"
DESCRIPTION = "OSSIE USRP TX side control component"
SECTION = "apps"
PRIORITY = "optional"
LICENSE = "GPL"
+PV = "0.0.0+svn${SRCDATE}"
DEPENDS = "ossiecf ossie-standardinterfaces"
-S="${WORKDIR}/USRP_TX_Control"
+S = "${WORKDIR}/USRP_TX_Control"
-SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/waveforms/USRP_TX_Control/trunk;module=USRP_TX_Control;proto=https"
+SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/components/USRP_TX_Control/trunk;module=USRP_TX_Control;proto=https"
prefix="/home/sca"
diff --git a/packages/ossie/ossiecf_svn.bb b/packages/ossie/ossiecf_svn.bb
index d78b546ba0..35bf7523f0 100644
--- a/packages/ossie/ossiecf_svn.bb
+++ b/packages/ossie/ossiecf_svn.bb
@@ -1,17 +1,20 @@
-PR = "r0"
DESCRIPTION = "OSSIE Core Framework"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "LGPL"
-
DEPENDS = "xerces-c omniorb libtool-cross"
+PV = "0.0.0+svn${SRCDATE}"
-S="${WORKDIR}/ossie"
+S = "${WORKDIR}/ossie"
SRC_URI = "svn://oe:oe@ossie-dev.mprg.org/repos/ossie/ossie/trunk;module=ossie;proto=https"
inherit autotools pkgconfig
+EXTRA_OECONF = "--with-omniorb=${STAGING_BINDIR}/.. IDL=${STAGING_BINDIR_NATIVE}/omniidl"
+
+CXXFLAGS_powerpc += "-lstdc++"
+
do_stage () {
autotools_stage_all
}
diff --git a/packages/pam/libpam_0.79.bb b/packages/pam/libpam_0.79.bb
index c19d0ff9c8..14dab423f8 100644
--- a/packages/pam/libpam_0.79.bb
+++ b/packages/pam/libpam_0.79.bb
@@ -17,7 +17,7 @@ Administrators' Guide."
HOMEPAGE = "http://www.kernel.org/pub/linux/libs/pam"
SECTION = "libs"
PRIORITY = "optional"
-LICENSE = "GPL-2"
+LICENSE = "GPLv2"
PR = "r1"
# The project is actually called Linux-PAM but that gives
diff --git a/packages/pango/pango-1.16.0/.mtn2git_empty b/packages/pango/pango-1.16.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pango/pango-1.16.0/.mtn2git_empty
diff --git a/packages/pango/pango-1.16.0/no-tests.patch b/packages/pango/pango-1.16.0/no-tests.patch
new file mode 100644
index 0000000000..dafcb20c3b
--- /dev/null
+++ b/packages/pango/pango-1.16.0/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.16.2/.mtn2git_empty b/packages/pango/pango-1.16.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pango/pango-1.16.2/.mtn2git_empty
diff --git a/packages/pango/pango-1.16.2/no-tests.patch b/packages/pango/pango-1.16.2/no-tests.patch
new file mode 100644
index 0000000000..dafcb20c3b
--- /dev/null
+++ b/packages/pango/pango-1.16.2/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.16.4/.mtn2git_empty b/packages/pango/pango-1.16.4/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pango/pango-1.16.4/.mtn2git_empty
diff --git a/packages/pango/pango-1.16.4/no-tests.patch b/packages/pango/pango-1.16.4/no-tests.patch
new file mode 100644
index 0000000000..dafcb20c3b
--- /dev/null
+++ b/packages/pango/pango-1.16.4/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.16.0.bb b/packages/pango/pango_1.16.0.bb
new file mode 100644
index 0000000000..8e3e8e7d3a
--- /dev/null
+++ b/packages/pango/pango_1.16.0.bb
@@ -0,0 +1 @@
+require pango.inc
diff --git a/packages/pango/pango_1.16.2.bb b/packages/pango/pango_1.16.2.bb
new file mode 100644
index 0000000000..8e3e8e7d3a
--- /dev/null
+++ b/packages/pango/pango_1.16.2.bb
@@ -0,0 +1 @@
+require pango.inc
diff --git a/packages/pango/pango_1.16.4.bb b/packages/pango/pango_1.16.4.bb
new file mode 100644
index 0000000000..2749b0ba1e
--- /dev/null
+++ b/packages/pango/pango_1.16.4.bb
@@ -0,0 +1,4 @@
+DEFAULT_PREFERENCE = "-1"
+
+require pango.inc
+
diff --git a/packages/parted/parted-1.8.0/.mtn2git_empty b/packages/parted/parted-1.8.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/parted/parted-1.8.0/.mtn2git_empty
diff --git a/packages/parted/parted-1.8.0/memory_allocation.patch b/packages/parted/parted-1.8.0/memory_allocation.patch
new file mode 100644
index 0000000000..ba3709680b
--- /dev/null
+++ b/packages/parted/parted-1.8.0/memory_allocation.patch
@@ -0,0 +1,42 @@
+--- parted-1.8.0/libparted/exception.c_orig 2006-12-11 19:44:23.000000000 +0000
++++ parted-1.8.0/libparted/exception.c 2006-12-11 19:47:53.000000000 +0000
+@@ -231,6 +231,9 @@
+ PedExceptionOption ex_opts, const char* message, ...)
+ {
+ va_list arg_list;
++ int result;
++ static int size = 1000;
++
+
+ if (ex)
+ ped_exception_catch ();
+@@ -239,16 +242,22 @@
+ if (!ex)
+ goto no_memory;
+
+- ex->message = (char*) malloc (8192);
+- if (!ex->message)
+- goto no_memory;
+-
+ ex->type = ex_type;
+ ex->options = ex_opts;
+
+- va_start (arg_list, message);
+- vsnprintf (ex->message, 8192, message, arg_list);
+- va_end (arg_list);
++ while (1) {
++ ex->message = (char*) malloc (size);
++ if (!ex->message)
++ goto no_memory;
++ va_start (arg_list, message);
++ result = vsnprintf (ex->message, size, message, arg_list);
++ va_end (arg_list);
++
++ if (result > -1 && result < size)
++ break;
++ size += 10;
++ }
++
+
+ return do_throw ();
+
diff --git a/packages/parted/parted_1.8.0.bb b/packages/parted/parted_1.8.0.bb
index 8681055855..bff27a62e8 100644
--- a/packages/parted/parted_1.8.0.bb
+++ b/packages/parted/parted_1.8.0.bb
@@ -5,7 +5,8 @@ SECTION = "console/tools"
DEPENDS = "readline e2fsprogs-libs"
PR = "r0"
-SRC_URI = "${GNU_MIRROR}/parted/parted-${PV}.tar.gz"
+SRC_URI = "${GNU_MIRROR}/parted/parted-${PV}.tar.gz \
+ file://memory_allocation.patch;patch=0"
EXTRA_OECONF = "--disable-Werror"
#export CFLAGS = "-mstructure-size-boundary=8"
diff --git a/packages/parted/parted_1.8.2.bb b/packages/parted/parted_1.8.2.bb
new file mode 100644
index 0000000000..1185014aa3
--- /dev/null
+++ b/packages/parted/parted_1.8.2.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "parted, the GNU partition resizing program"
+HOMEPAGE = "http://www.gnu.org/software/parted/parted.html"
+LICENSE = "GPLv2"
+SECTION = "console/tools"
+DEPENDS = "readline e2fsprogs-libs"
+PR = "r0"
+
+SRC_URI = "${GNU_MIRROR}/parted/parted-${PV}.tar.gz"
+
+#EXTRA_OECONF = "--disable-Werror"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/pciutils/pciutils-2.2.4/configure-uclibc.patch b/packages/pciutils/pciutils-2.2.4/configure-uclibc.patch
new file mode 100644
index 0000000000..0e6e774f91
--- /dev/null
+++ b/packages/pciutils/pciutils-2.2.4/configure-uclibc.patch
@@ -0,0 +1,14 @@
+--- /lib/orig-configure 2007-02-13 16:36:54.000000000 +0200
++++ /lib/configure 2007-02-13 16:37:33.000000000 +0200
+@@ -39,6 +39,11 @@
+ sys=linux
+ fi
+
++if [ "$host" = "linux--uclibc" ]
++then
++ sys=linux
++fi
++
+ c=config.h
+ m=config.mk
+ echo >$c "#define PCI_ARCH_`echo $cpu | tr 'a-z' 'A-Z'`"
diff --git a/packages/pciutils/pciutils_2.2.4.bb b/packages/pciutils/pciutils_2.2.4.bb
index 57d9e2089f..0cd335eb32 100644
--- a/packages/pciutils/pciutils_2.2.4.bb
+++ b/packages/pciutils/pciutils_2.2.4.bb
@@ -6,12 +6,15 @@ HOMEPAGE = "http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml"
LICENSE = "GPLv2"
DEPENDS = "zlib"
-SRC_URI = "${KERNELORG_MIRROR}/pub/software/utils/pciutils/pciutils-${PV}.tar.bz2 \
+SRC_URI = "ftp://ftp.kernel.org/pub/software/utils/pciutils/pciutils-${PV}.tar.bz2 \
file://configure.patch;patch=1 \
+ file://configure-uclibc.patch;patch=1 \
file://pcimodules-pciutils.diff;patch=1"
PARALLEL_MAKE = ""
+PR="r1"
+
do_configure () {
(cd lib && ./configure ${datadir} ${PV} ${TARGET_OS} 2.4.21 ${TARGET_ARCH})
}
diff --git a/packages/perl/files/letgcc-find-errno.patch b/packages/perl/files/letgcc-find-errno.patch
new file mode 100644
index 0000000000..24722ee964
--- /dev/null
+++ b/packages/perl/files/letgcc-find-errno.patch
@@ -0,0 +1,42 @@
+This removes all the logic that perl uses to locate an appropriate
+errno.h for the target. Instead we simple create a file that does
+
+ #include "errno.h"
+
+and use that as the file to parse. This is needed when using an
+external toolchain since perl will search in ${STAGING_INCDIR} for
+errno.h (when using gcc) and that isn't where it's located - its
+wherever the external toolchain keeps it's headers.
+
+--- perl-5.8.8/ext/Errno/Errno_pm.PL 2007/04/30 14:10:10 1.1
++++ perl-5.8.8/ext/Errno/Errno_pm.PL 2007/04/30 14:21:35
+@@ -11,8 +11,18 @@
+ open OUT, ">Errno.pm" or die "Cannot open Errno.pm: $!";
+ select OUT;
+ my $file;
+-my @files = get_files();
+-if ($Config{gccversion} ne '' && $^O eq 'MSWin32') {
++#my @files = get_files();
++my @files = ("errno.h");
++
++if (1) {
++ open INCS, '>includes.c' or
++ die "Cannot open includes.c";
++ print INCS qq[#include "errno.h"\n];
++ close INCS;
++ process_file('includes.c');
++ unlink 'includes.c';
++}
++elsif ($Config{gccversion} ne '' && $^O eq 'MSWin32') {
+ # MinGW complains "warning: #pragma system_header ignored outside include
+ # file" if the header files are processed individually, so include them
+ # all in .c file and process that instead.
+@@ -44,7 +54,7 @@
+ chomp($file = `cygpath -w "$file"`);
+ }
+
+- return unless defined $file and -f $file;
++# return unless defined $file and -f $file;
+ # warn "Processing $file\n";
+
+ local *FH;
diff --git a/packages/perl/files/perl-5.8.8-gcc-4.2.patch b/packages/perl/files/perl-5.8.8-gcc-4.2.patch
new file mode 100644
index 0000000000..d9869e1974
--- /dev/null
+++ b/packages/perl/files/perl-5.8.8-gcc-4.2.patch
@@ -0,0 +1,13 @@
+See http://bugs.openembedded.org/show_bug.cgi?id=2168
+Fix for gcc 4.2
+
+--- perl-5.8.8/makedepend.SH.ark 2006-11-01 16:32:05.000000000 +0100
++++ perl-5.8.8/makedepend.SH 2006-11-01 16:32:15.000000000 +0100
+@@ -167,6 +167,7 @@
+ -e '/^#.*<builtin>/d' \
+ -e '/^#.*<built-in>/d' \
+ -e '/^#.*<command line>/d' \
++ -e '/^#.*<command-line>/d' \
+ -e '/^#.*"-"/d' \
+ -e '/: file path prefix .* never used$/d' \
+ -e 's#\.[0-9][0-9]*\.c#'"$file.c#" \
diff --git a/packages/perl/libalgorithm-diff-perl_1.1902.bb b/packages/perl/libalgorithm-diff-perl_1.1902.bb
index 1021b4c77c..947b1a1191 100644
--- a/packages/perl/libalgorithm-diff-perl_1.1902.bb
+++ b/packages/perl/libalgorithm-diff-perl_1.1902.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-exporter perl-module-strict perl-module-vars \
perl-module-strict perl-module-vars"
-PR = "r0"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TY/TYEMQ/Algorithm-Diff-${PV}.tar.gz"
diff --git a/packages/perl/libarchive-tar-perl_1.30.bb b/packages/perl/libarchive-tar-perl_1.30.bb
index b58506688b..1c7a1d88c9 100644
--- a/packages/perl/libarchive-tar-perl_1.30.bb
+++ b/packages/perl/libarchive-tar-perl_1.30.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS += "libio-zlib-perl-native"
RDEPENDS += "libio-zlib-perl"
-PR = "r1"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/K/KA/KANE/Archive-Tar-${PV}.tar.gz"
diff --git a/packages/perl/libcache-cache-perl_1.05.bb b/packages/perl/libcache-cache-perl_1.05.bb
index c90e9fed53..2a810b7815 100644
--- a/packages/perl/libcache-cache-perl_1.05.bb
+++ b/packages/perl/libcache-cache-perl_1.05.bb
@@ -4,7 +4,7 @@ LICENSE = "Artistic|GPL"
DEPENDS = "libdigest-sha1-perl-native liberror-perl-native \
libipc-sharelite-perl-native"
RDEPENDS = "libdigest-sha1-perl liberror-perl libipc-sharelite-perl"
-PR = "r3"
+PR = "r5"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DC/DCLINTON/Cache-Cache-${PV}.tar.gz"
diff --git a/packages/perl/libclass-container-perl_0.12.bb b/packages/perl/libclass-container-perl_0.12.bb
index 6395cfc890..7122d83601 100644
--- a/packages/perl/libclass-container-perl_0.12.bb
+++ b/packages/perl/libclass-container-perl_0.12.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "libparams-validate-perl-native"
RDEPENDS = "libparams-validate-perl"
-PR = "r3"
+PR = "r5"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/Class-Container-${PV}.tar.gz"
diff --git a/packages/perl/libclass-data-inheritable-perl_0.06.bb b/packages/perl/libclass-data-inheritable-perl_0.06.bb
index 71a1f76526..837968f93a 100644
--- a/packages/perl/libclass-data-inheritable-perl_0.06.bb
+++ b/packages/perl/libclass-data-inheritable-perl_0.06.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Class::Data::Inheritable - Inheritable, overridable class data"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r3"
+PR = "r5"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TM/TMTM/Class-Data-Inheritable-${PV}.tar.gz"
diff --git a/packages/perl/libcompress-zlib-perl_1.42.bb b/packages/perl/libcompress-zlib-perl_1.42.bb
index 8631e1da02..f30692f576 100644
--- a/packages/perl/libcompress-zlib-perl_1.42.bb
+++ b/packages/perl/libcompress-zlib-perl_1.42.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Compress::Zlib - Interface to zlib compression library"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r3"
+PR = "r7"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Zlib-${PV}.tar.gz"
@@ -9,7 +9,5 @@ S = "${WORKDIR}/Compress-Zlib-${PV}"
inherit cpan
-FILES_${PN} = "${libdir}/perl5/*/*/auto/Compress/Zlib/* \
- ${libdir}/perl5/*/*/auto/Compress/Zlib/.packlist \
- ${libdir}/perl5/*/*/Compress"
-FILES_${PN}-dbg += "${libdir}/perl5/*/*/auto/Compress/Zlib/.debug"
+FILES_${PN} = "${PERLLIBDIRS}/auto/Compress/Zlib/* \
+ ${PERLLIBDIRS}/Compress"
diff --git a/packages/perl/libdata-optlist-perl_0.101.bb b/packages/perl/libdata-optlist-perl_0.101.bb
index 40a2da46a7..2b3cc2a979 100644
--- a/packages/perl/libdata-optlist-perl_0.101.bb
+++ b/packages/perl/libdata-optlist-perl_0.101.bb
@@ -4,7 +4,7 @@ LICENSE = "Artistic|GPL"
DEPENDS += "libsub-install-perl-native libparams-util-perl-native"
RDEPENDS += "perl-module-list-util libparams-util-perl perl-module-strict \
libsub-install-perl perl-module-warnings "
-PR = "r0"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/Data-OptList-${PV}.tar.gz"
diff --git a/packages/perl/libdevel-stacktrace-perl_1.13.bb b/packages/perl/libdevel-stacktrace-perl_1.13.bb
index e5414895b0..e5e3dcaada 100644
--- a/packages/perl/libdevel-stacktrace-perl_1.13.bb
+++ b/packages/perl/libdevel-stacktrace-perl_1.13.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Devel::StackTrace - Stack trace and stack trace frame objects"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r3"
+PR = "r5"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Devel-StackTrace-${PV}.tar.gz"
diff --git a/packages/perl/libdigest-sha1-perl_2.11.bb b/packages/perl/libdigest-sha1-perl_2.11.bb
index 5e482164bb..fa9f2bcbcc 100644
--- a/packages/perl/libdigest-sha1-perl_2.11.bb
+++ b/packages/perl/libdigest-sha1-perl_2.11.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Digest::SHA1 - Perl interface to the SHA-1 algorithm"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r7"
+PR = "r11"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-SHA1-${PV}.tar.gz"
@@ -9,7 +9,5 @@ S = "${WORKDIR}/Digest-SHA1-${PV}"
inherit cpan
-FILES_${PN} = "${libdir}/perl5/*/*/auto/Digest/SHA1/* \
- ${libdir}/perl5/*/*/auto/Digest/SHA1/.packlist \
- ${libdir}/perl5/*/*/Digest"
-FILES_${PN}-dbg += "${libdir}/perl5/*/*/auto/Digest/SHA1/.debug"
+FILES_${PN} = "${PERLLIBDIRS}/auto/Digest/SHA1/* \
+ ${PERLLIBDIRS}/Digest"
diff --git a/packages/perl/liberror-perl_0.17004.bb b/packages/perl/liberror-perl_0.17004.bb
index b41b4ce50e..a2ba120148 100644
--- a/packages/perl/liberror-perl_0.17004.bb
+++ b/packages/perl/liberror-perl_0.17004.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Error - Error/exception handling in an OO-ish way"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r4"
+PR = "r6"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/P/PE/PEVANS/Error-${PV}.tar.gz"
diff --git a/packages/perl/libexception-class-perl_1.23.bb b/packages/perl/libexception-class-perl_1.23.bb
index 3255fc582d..62df7e58c6 100644
--- a/packages/perl/libexception-class-perl_1.23.bb
+++ b/packages/perl/libexception-class-perl_1.23.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "libclass-data-inheritable-perl-native libdevel-stacktrace-perl-native"
RDEPENDS = "libclass-data-inheritable-perl libdevel-stacktrace-perl"
-PR = "r4"
+PR = "r6"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Exception-Class-${PV}.tar.gz"
diff --git a/packages/perl/libextutils-cbuilder-perl_0.18.bb b/packages/perl/libextutils-cbuilder-perl_0.18.bb
index bf6df4cc16..d446c9934a 100644
--- a/packages/perl/libextutils-cbuilder-perl_0.18.bb
+++ b/packages/perl/libextutils-cbuilder-perl_0.18.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "ExtUtils::CBuilder - Compile and link C code for Perl modules"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r1"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/ExtUtils-CBuilder-${PV}.tar.gz"
diff --git a/packages/perl/libextutils-parsexs-perl_2.16.bb b/packages/perl/libextutils-parsexs-perl_2.16.bb
index abd92a34ba..bf18dadd38 100644
--- a/packages/perl/libextutils-parsexs-perl_2.16.bb
+++ b/packages/perl/libextutils-parsexs-perl_2.16.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "ExtUtils::ParseXS - converts Perl XS code into C code"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r1"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/ExtUtils-ParseXS-${PV}.tar.gz"
diff --git a/packages/perl/libintl-perl_1.16.bb b/packages/perl/libintl-perl_1.16.bb
index 723ef0abe1..e987934c65 100644
--- a/packages/perl/libintl-perl_1.16.bb
+++ b/packages/perl/libintl-perl_1.16.bb
@@ -3,6 +3,7 @@ LICENSE = "Artistic|GPL"
RDEPENDS = "perl-module-vars perl-module-locale perl-module-io-handle \
perl-module-symbol perl-module-selectsaver perl-module-io \
perl-module-integer perl-module-exporter-heavy"
+PR = "r2"
SRC_URI = "http://www.cpan.org/authors/id/G/GU/GUIDO/libintl-perl-${PV}.tar.gz"
diff --git a/packages/perl/libio-zlib-perl_1.04.bb b/packages/perl/libio-zlib-perl_1.04.bb
index aa6680bc84..1c99166e16 100644
--- a/packages/perl/libio-zlib-perl_1.04.bb
+++ b/packages/perl/libio-zlib-perl_1.04.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "libcompress-zlib-perl-native"
RDEPENDS += "libcompress-zlib-perl"
-PR = "r1"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TO/TOMHUGHES/IO-Zlib-${PV}.tar.gz"
diff --git a/packages/perl/libipc-sharelite-perl_0.09.bb b/packages/perl/libipc-sharelite-perl_0.09.bb
index cd7c19fb2a..d56f0a99d4 100644
--- a/packages/perl/libipc-sharelite-perl_0.09.bb
+++ b/packages/perl/libipc-sharelite-perl_0.09.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "IPC::ShareLite - Light-weight interface to shared memory"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r7"
+PR = "r11"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MA/MAURICE/IPC-ShareLite-${PV}.tar.gz"
@@ -9,7 +9,5 @@ S = "${WORKDIR}/IPC-ShareLite-${PV}"
inherit cpan
-FILES_${PN} = "${libdir}/perl5/*/*/auto/IPC/ShareLite/* \
- ${libdir}/perl5/*/*/auto/IPC/ShareLite/.packlist \
- ${libdir}/perl5/*/*/IPC"
-FILES_${PN}-dbg += "${libdir}/perl5/*/*/auto/IPC/ShareLite/.debug"
+FILES_${PN} = "${PERLLIBDIRS}/auto/IPC/ShareLite/* \
+ ${PERLLIBDIRS}/IPC"
diff --git a/packages/perl/liblocale-gettext-perl_1.05.bb b/packages/perl/liblocale-gettext-perl_1.05.bb
index b4fe0b2f2c..f9490c0c41 100644
--- a/packages/perl/liblocale-gettext-perl_1.05.bb
+++ b/packages/perl/liblocale-gettext-perl_1.05.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Locale::gettext - message handling functions"
SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "virtual/libintl"
-PR = "r3"
+PR = "r7"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/P/PV/PVANDRY/gettext-${PV}.tar.gz"
@@ -10,7 +10,5 @@ S = "${WORKDIR}/gettext-${PV}"
inherit cpan
-FILES_${PN} = "${libdir}/perl5/*/*/auto/Locale/gettext/* \
- ${libdir}/perl5/*/*/auto/Locale/gettext/.packlist \
- ${libdir}/perl5/*/*/Locale"
-FILES_${PN}-dbg += "${libdir}/perl5/*/*/auto/Locale/gettext/.debug"
+FILES_${PN} = "${PERLLIBDIRS}/auto/Locale/gettext/* \
+ ${PERLLIBDIRS}/Locale"
diff --git a/packages/perl/liblog-dispatch-perl_2.13.bb b/packages/perl/liblog-dispatch-perl_2.13.bb
index d44aea9329..85fdf7e616 100644
--- a/packages/perl/liblog-dispatch-perl_2.13.bb
+++ b/packages/perl/liblog-dispatch-perl_2.13.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Log::Dispatch - Dispatches messages to one or more outputs"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Log-Dispatch-${PV}.tar.gz"
diff --git a/packages/perl/liblog-log4perl-perl_1.06.bb b/packages/perl/liblog-log4perl-perl_1.06.bb
index 75060cce6a..16ec9f57f9 100644
--- a/packages/perl/liblog-log4perl-perl_1.06.bb
+++ b/packages/perl/liblog-log4perl-perl_1.06.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Log::Log4perl - Log4j implementation for Perl"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r1"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MS/MSCHILLI/Log-Log4perl-${PV}.tar.gz"
diff --git a/packages/perl/libmail-sendmail-perl_0.79.bb b/packages/perl/libmail-sendmail-perl_0.79.bb
index 73c157d613..1ed84fd150 100644
--- a/packages/perl/libmail-sendmail-perl_0.79.bb
+++ b/packages/perl/libmail-sendmail-perl_0.79.bb
@@ -1,6 +1,6 @@
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r1"
+PR = "r3"
SRC_URI = "http://www.cpan.org/modules/by-module/Mail/Mail-Sendmail-${PV}.tar.gz"
diff --git a/packages/perl/libmath-bigint-gmp-perl_1.18.bb b/packages/perl/libmath-bigint-gmp-perl_1.18.bb
index d850ab71f1..3eb24eda10 100644
--- a/packages/perl/libmath-bigint-gmp-perl_1.18.bb
+++ b/packages/perl/libmath-bigint-gmp-perl_1.18.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS += "gmp-native"
RDEPENDS += "gmp"
-PR = "r1"
+PR = "r5"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TE/TELS/math/Math-BigInt-GMP-${PV}.tar.gz"
@@ -11,7 +11,5 @@ S = "${WORKDIR}/Math-BigInt-GMP-${PV}"
inherit cpan
-FILES_${PN} = "${libdir}/perl5/*/*/auto/Math/BigInt/GMP/* \
- ${libdir}/perl5/*/*/auto/Math/BigInt/GMP/.packlist \
- ${libdir}/perl5/*/*/Math"
-FILES_${PN}-dbg += "${libdir}/perl5/*/*/auto/Math/BigInt/GMP/.debug"
+FILES_${PN} = "${PERLLIBDIRS}/auto/Math/BigInt/GMP/* \
+ ${PERLLIBDIRS}/Math"
diff --git a/packages/perl/libmodule-build-perl_0.2805.bb b/packages/perl/libmodule-build-perl_0.2805.bb
index 2c6a772bca..ae7ac7e973 100644
--- a/packages/perl/libmodule-build-perl_0.2805.bb
+++ b/packages/perl/libmodule-build-perl_0.2805.bb
@@ -8,7 +8,7 @@ DEPENDS = "libyaml-perl-native libversion-perl-native \
libarchive-tar-perl-native"
RDEPENDS = "libyaml-perl libversion-perl libextutils-cbuilder-perl \
libextutils-parsexs-perl libarchive-tar-perl"
-PR = "r3"
+PR = "r4"
S = "${WORKDIR}/Module-Build-${PV}"
diff --git a/packages/perl/libnet-ip-perl_1.25.bb b/packages/perl/libnet-ip-perl_1.25.bb
index 183acc8eef..f51cc18fc7 100644
--- a/packages/perl/libnet-ip-perl_1.25.bb
+++ b/packages/perl/libnet-ip-perl_1.25.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS += "libio-zlib-perl-native"
RDEPENDS += "libio-zlib-perl perl-module-math-bigint"
-PR = "r2"
+PR = "r4"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MA/MANU/Net-IP-${PV}.tar.gz"
diff --git a/packages/perl/libnetserver-generic-perl_1.03.bb b/packages/perl/libnetserver-generic-perl_1.03.bb
index 95b7e55a32..5b0ecb1800 100644
--- a/packages/perl/libnetserver-generic-perl_1.03.bb
+++ b/packages/perl/libnetserver-generic-perl_1.03.bb
@@ -1,6 +1,6 @@
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r1"
+PR = "r3"
SRC_URI = "http://www.cpan.org/modules/by-module/NetServer/NetServer-Generic-${PV}.tar.gz"
diff --git a/packages/perl/libparams-util-perl_0.20.bb b/packages/perl/libparams-util-perl_0.20.bb
index deb3c58b31..b6d1feabaf 100644
--- a/packages/perl/libparams-util-perl_0.20.bb
+++ b/packages/perl/libparams-util-perl_0.20.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-exporter perl-module-overload \
perl-module-scalar-util perl-module-strict perl-module-vars"
-PR = "r0"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/A/AD/ADAMK/Params-Util-${PV}.tar.gz"
diff --git a/packages/perl/libparams-validate-perl_0.86.bb b/packages/perl/libparams-validate-perl_0.86.bb
index 8b1f9583ed..f3a11d2d60 100644
--- a/packages/perl/libparams-validate-perl_0.86.bb
+++ b/packages/perl/libparams-validate-perl_0.86.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Params::Validate - Validate method/function parameters"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r7"
+PR = "r11"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Params-Validate-${PV}.tar.gz"
@@ -9,8 +9,6 @@ S = "${WORKDIR}/Params-Validate-${PV}"
inherit cpan
-FILES_${PN} = "${libdir}/perl5/*/*/auto/Params/Validate/* \
- ${libdir}/perl5/*/*/auto/Params/Validate/.packlist \
- ${libdir}/perl5/*/*/Params \
- ${libdir}/perl5/*/*/Attribute"
-FILES_${PN}-dbg += "${libdir}/perl5/*/*/auto/Params/Validate/.debug"
+FILES_${PN} = "${PERLLIBDIRS}/auto/Params/Validate/* \
+ ${PERLLIBDIRS}/Params \
+ ${PERLLIBDIRS}/Attribute"
diff --git a/packages/perl/libperl6-junction-perl_1.10.bb b/packages/perl/libperl6-junction-perl_1.10.bb
index dda3cf4be3..81840b0b11 100644
--- a/packages/perl/libperl6-junction-perl_1.10.bb
+++ b/packages/perl/libperl6-junction-perl_1.10.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Perl6::Junction - Perl6 style Junction operators in Perl5."
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r0"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/C/CF/CFRANKS/Perl6-Junction-${PV}.tar.gz"
diff --git a/packages/perl/libsub-exporter-perl_0.970.bb b/packages/perl/libsub-exporter-perl_0.970.bb
index 5d56090549..b6ac2b17ee 100644
--- a/packages/perl/libsub-exporter-perl_0.970.bb
+++ b/packages/perl/libsub-exporter-perl_0.970.bb
@@ -5,7 +5,7 @@ DEPENDS += "libdata-optlist-perl-native libsub-install-perl-native \
libparams-util-perl-native"
RDEPENDS += "perl-module-carp libdata-optlist-perl libparams-util-perl \
perl-module-strict libsub-install-perl perl-module-warnings"
-PR = "r0"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/Sub-Exporter-${PV}.tar.gz"
diff --git a/packages/perl/libsub-install-perl_0.922.bb b/packages/perl/libsub-install-perl_0.922.bb
index ef8607312f..119094bf95 100644
--- a/packages/perl/libsub-install-perl_0.922.bb
+++ b/packages/perl/libsub-install-perl_0.922.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-carp perl-module-scalar-util perl-module-strict \
perl-module-warnings"
-PR = "r0"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/Sub-Install-${PV}.tar.gz"
diff --git a/packages/perl/libsub-uplevel-perl_0.13.bb b/packages/perl/libsub-uplevel-perl_0.13.bb
index 8c66f49031..38d3fcd593 100644
--- a/packages/perl/libsub-uplevel-perl_0.13.bb
+++ b/packages/perl/libsub-uplevel-perl_0.13.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Sub::Uplevel - apparently run a function in a higher stack frame"
SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-exporter perl-module-strict perl-module-vars"
-PR = "r0"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Sub-Uplevel-${PV}.tar.gz"
diff --git a/packages/perl/libtest-builder-tester-perl_1.01.bb b/packages/perl/libtest-builder-tester-perl_1.01.bb
index 860194ebb8..1fd884cfff 100644
--- a/packages/perl/libtest-builder-tester-perl_1.01.bb
+++ b/packages/perl/libtest-builder-tester-perl_1.01.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-strict perl-module-carp perl-module-exporter \
perl-module-symbol perl-module-vars"
-PR = "r0"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MA/MARKF/Test-Builder-Tester-${PV}.tar.gz"
diff --git a/packages/perl/libtest-differences-perl_0.47.bb b/packages/perl/libtest-differences-perl_0.47.bb
index baf0c4c6e3..a66a39182e 100644
--- a/packages/perl/libtest-differences-perl_0.47.bb
+++ b/packages/perl/libtest-differences-perl_0.47.bb
@@ -4,7 +4,7 @@ LICENSE = "Artistic|GPL"
DEPENDS += "libtext-diff-perl-native"
RDEPENDS += "perl-module-carp perl-module-constant perl-module-exporter \
perl-module-strict libtext-diff-perl"
-PR = "r0"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RB/RBS/Test-Differences-${PV}.tar.gz"
diff --git a/packages/perl/libtest-exception-perl_0.22.bb b/packages/perl/libtest-exception-perl_0.22.bb
index c87f6a803f..b095ea3e4a 100644
--- a/packages/perl/libtest-exception-perl_0.22.bb
+++ b/packages/perl/libtest-exception-perl_0.22.bb
@@ -5,7 +5,7 @@ DEPENDS += "libsub-uplevel-perl-native"
RDEPENDS += "perl-module-base perl-module-carp perl-module-strict \
libsub-uplevel-perl perl-module-test-builder \
perl-module-warnings"
-PR = "r0"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/A/AD/ADIE/Test-Exception-${PV}.tar.gz"
diff --git a/packages/perl/libtest-mockmodule-perl_0.05.bb b/packages/perl/libtest-mockmodule-perl_0.05.bb
index 41f35b7a82..e30a81cb18 100644
--- a/packages/perl/libtest-mockmodule-perl_0.05.bb
+++ b/packages/perl/libtest-mockmodule-perl_0.05.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-carp perl-module-scalar-util perl-module-strict \
perl-module-vars "
-PR = "r0"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/S/SI/SIMONFLK/Test-MockModule-${PV}.tar.gz"
diff --git a/packages/perl/libtest-output-perl_0.10.bb b/packages/perl/libtest-output-perl_0.10.bb
index bce6b9e1b3..fb5bebdefe 100644
--- a/packages/perl/libtest-output-perl_0.10.bb
+++ b/packages/perl/libtest-output-perl_0.10.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS += "libsub-exporter-perl-native"
RDEPENDS += "libsub-exporter-perl"
-PR = "r0"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/S/SS/SSORICHE/Test-Output-${PV}.tar.gz"
diff --git a/packages/perl/libtext-diff-perl_0.35.bb b/packages/perl/libtext-diff-perl_0.35.bb
index 40a6373a8f..126d091d8e 100644
--- a/packages/perl/libtext-diff-perl_0.35.bb
+++ b/packages/perl/libtext-diff-perl_0.35.bb
@@ -5,7 +5,7 @@ DEPENDS += "libalgorithm-diff-perl-native"
RDEPENDS += "libalgorithm-diff-perl perl-module-carp perl-module-constant \
perl-module-exporter perl-module-strict perl-module-carp \
perl-module-strict "
-PR = "r0"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RB/RBS/Text-Diff-${PV}.tar.gz"
diff --git a/packages/perl/libversion-perl_0.6701.bb b/packages/perl/libversion-perl_0.6701.bb
index b78397e9e6..1081d98135 100644
--- a/packages/perl/libversion-perl_0.6701.bb
+++ b/packages/perl/libversion-perl_0.6701.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "version - Perl extension for Version Objects"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r2"
+PR = "r6"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/J/JP/JPEACOCK/version-${PV}.tar.gz"
@@ -9,8 +9,6 @@ S = "${WORKDIR}/version-${PV}"
inherit cpan
-FILES_${PN} = "${libdir}/perl5/*/*/auto/version/vxs/* \
- ${libdir}/perl5/*/*/auto/version/.packlist \
- ${libdir}/perl5/*/*/version/* \
- ${libdir}/perl5/*/*/version.pm"
-FILES_${PN}-dbg += "${libdir}/perl5/*/*/auto/version/vxs/.debug"
+FILES_${PN} = "${PERLLIBDIRS}/auto/version/vxs/* \
+ ${PERLLIBDIRS}/version/* \
+ ${PERLLIBDIRS}/version.pm"
diff --git a/packages/perl/libxml-parser-perl_2.34.bb b/packages/perl/libxml-parser-perl_2.34.bb
index 25fec1e093..b1676bb2fd 100644
--- a/packages/perl/libxml-parser-perl_2.34.bb
+++ b/packages/perl/libxml-parser-perl_2.34.bb
@@ -1,14 +1,15 @@
SECTION = "libs"
LICENSE = "Artistic"
-PR = "r2"
+DEPENDS += "expat-native"
+PR = "r7"
SRC_URI = "http://www.cpan.org/modules/by-module/XML/XML-Parser-${PV}.tar.gz"
S = "${WORKDIR}/XML-Parser-${PV}"
+EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}"
+
inherit cpan
-FILES_${PN} = "${libdir}/perl5/*/*/auto/XML/Parser/Expat/* \
- ${libdir}/perl5/*/*/auto/XML/Parser/.packlist \
- ${libdir}/perl5/*/*/XML"
-FILES_${PN}-dbg += "${libdir}/perl5/*/*/auto/XML/Parser/Expat/.debug"
+FILES_${PN} = "${PERLLIBDIRS}/auto/XML/Parser/Expat/* \
+ ${PERLLIBDIRS}/XML"
diff --git a/packages/perl/libyaml-perl_0.62.bb b/packages/perl/libyaml-perl_0.62.bb
index 31ebc53040..f8b75b10b7 100644
--- a/packages/perl/libyaml-perl_0.62.bb
+++ b/packages/perl/libyaml-perl_0.62.bb
@@ -4,7 +4,7 @@ LICENSE = "Artistic|GPL"
DEPENDS = "libdigest-sha1-perl-native liberror-perl-native \
libipc-sharelite-perl-native"
RDEPENDS = "libdigest-sha1-perl liberror-perl libipc-sharelite-perl"
-PR = "r1"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/I/IN/INGY/YAML-${PV}.tar.gz"
diff --git a/packages/perl/perl-5.8.4/.mtn2git_empty b/packages/perl/perl-5.8.4/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/perl/perl-5.8.4/.mtn2git_empty
diff --git a/packages/perl/files/Makefile.SH.patch b/packages/perl/perl-5.8.4/Makefile.SH.patch
index 35a4e6dfde..35a4e6dfde 100644
--- a/packages/perl/files/Makefile.SH.patch
+++ b/packages/perl/perl-5.8.4/Makefile.SH.patch
diff --git a/packages/perl/files/Makefile.patch b/packages/perl/perl-5.8.4/Makefile.patch
index eec127643b..eec127643b 100644
--- a/packages/perl/files/Makefile.patch
+++ b/packages/perl/perl-5.8.4/Makefile.patch
diff --git a/packages/perl/files/config.sh-arm-linux.patch b/packages/perl/perl-5.8.4/config.sh-arm-linux.patch
index 44d8b1a89d..44d8b1a89d 100644
--- a/packages/perl/files/config.sh-arm-linux.patch
+++ b/packages/perl/perl-5.8.4/config.sh-arm-linux.patch
diff --git a/packages/perl/files/config.sh-i686-linux b/packages/perl/perl-5.8.4/config.sh-i686-linux
index 0978100abc..0978100abc 100644
--- a/packages/perl/files/config.sh-i686-linux
+++ b/packages/perl/perl-5.8.4/config.sh-i686-linux
diff --git a/packages/perl/files/config.sh-mipsel-linux b/packages/perl/perl-5.8.4/config.sh-mipsel-linux
index eedf443f04..eedf443f04 100644
--- a/packages/perl/files/config.sh-mipsel-linux
+++ b/packages/perl/perl-5.8.4/config.sh-mipsel-linux
diff --git a/packages/perl/files/uclibc.patch b/packages/perl/perl-5.8.4/uclibc.patch
index ce8fe80ff2..ce8fe80ff2 100644
--- a/packages/perl/files/uclibc.patch
+++ b/packages/perl/perl-5.8.4/uclibc.patch
diff --git a/packages/perl/perl-5.8.7/config.sh-powerpc-linux b/packages/perl/perl-5.8.7/config.sh-powerpc-linux
index d0b79ae484..67f7aa3166 100644
--- a/packages/perl/perl-5.8.7/config.sh-powerpc-linux
+++ b/packages/perl/perl-5.8.7/config.sh-powerpc-linux
@@ -53,10 +53,10 @@ byteorder='4321'
c='\c'
castflags='0'
cat='cat'
-cc='cc'
+cc='gcc'
cccdlflags='-fpic'
-ccdlflags='-Wl,-E,-Wl,-rpath,/usr/lib/perl5/5.8.7/powerpc-linux/CORE'
-ccflags='-fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.7/powerpc-linux/CORE'
+ccflags=''-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
ccname='gcc'
ccsymbols='__gnu_linux__=1 __linux=1 __linux__=1 __unix=1 __unix__=1 system=linux system=posix system=unix'
@@ -77,12 +77,12 @@ cpio=''
cpp='cpp'
cpp_stuff='42'
cppccsymbols='linux=1 unix=1'
-cppflags='-fno-strict-aliasing -pipe'
+cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe'
cpplast='-'
cppminus='-'
-cpprun='cc -E'
-cppstdin='cc -E'
-cppsymbols='_BIG_ENDIAN=1 __BIG_ENDIAN__=1 __ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=4 __GNUC__=4 __GNUC_MINOR__=1 __GNU_LIBRARY__=6 _LARGEFILE_SOURCE=1 _POSIX_C_SOURCE=200112 _POSIX_SOURCE=1 __STDC__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_SVID=1 __linux=1 __linux__=1 __unix=1 __unix__=1'
+cpprun='gcc -E'
+cppstdin='gcc -E'
+cppsymbols='_BIG_ENDIAN=1 __BIG_ENDIAN__=1 __ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=5 __GNUC__=4 __GNUC_MINOR__=1 __GNU_LIBRARY__=6 _LARGEFILE_SOURCE=1 _POSIX_C_SOURCE=200112 _POSIX_SOURCE=1 __STDC__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_SVID=1 __linux=1 __linux__=1 __unix=1 __unix__=1'
crypt_r_proto='0'
cryptlib=''
csh='csh'
@@ -131,7 +131,7 @@ d_const='define'
d_copysignl='define'
d_crypt='define'
d_crypt_r='undef'
-d_csh='undef'
+d_csh='define'
d_ctermid_r='undef'
d_ctime_r='undef'
d_cuserid='define'
@@ -147,7 +147,7 @@ d_dosuid='undef'
d_drand48_r='undef'
d_drand48proto='define'
d_dup2='define'
-d_eaccess='define'
+d_eaccess='undef'
d_endgrent='define'
d_endgrent_r='undef'
d_endhent='define'
@@ -162,7 +162,7 @@ d_endsent='define'
d_endservent_r='undef'
d_eofnblk='define'
d_eunice='undef'
-d_faststdio='undef'
+d_faststdio='define'
d_fchdir='define'
d_fchmod='define'
d_fchown='define'
@@ -170,7 +170,7 @@ d_fcntl='define'
d_fcntl_can_lock='define'
d_fd_macros='define'
d_fd_set='define'
-d_fds_bits='undef'
+d_fds_bits='define'
d_fgetpos='define'
d_finite='define'
d_finitel='define'
@@ -293,7 +293,7 @@ d_mktime='define'
d_mmap='define'
d_modfl='define'
d_modfl_pow32_bug='undef'
-d_modflproto='define'
+d_modflproto='undef'
d_mprotect='define'
d_msg='define'
d_msg_ctrunc='define'
@@ -312,7 +312,7 @@ d_mymalloc='undef'
d_nice='define'
d_nl_langinfo='define'
d_nv_preserves_uv='define'
-d_off64_t='undef'
+d_off64_t='define'
d_old_pthread_create_joinable='undef'
d_oldpthreads='undef'
d_oldsock='undef'
@@ -325,9 +325,9 @@ d_pipe='define'
d_poll='define'
d_portable='define'
d_procselfexe='define'
-d_pthread_atfork='undef'
+d_pthread_atfork='define'
d_pthread_attr_setscope='define'
-d_pthread_yield='undef'
+d_pthread_yield='define'
d_pwage='undef'
d_pwchange='undef'
d_pwclass='undef'
@@ -359,7 +359,7 @@ d_seekdir='define'
d_select='define'
d_sem='define'
d_semctl='define'
-d_semctl_semid_ds='undef'
+d_semctl_semid_ds='define'
d_semctl_semun='define'
d_semget='define'
d_semop='define'
@@ -422,12 +422,12 @@ d_statfs_f_flags='undef'
d_statfs_s='define'
d_statvfs='define'
d_stdio_cnt_lval='undef'
-d_stdio_ptr_lval='undef'
+d_stdio_ptr_lval='define'
d_stdio_ptr_lval_nochange_cnt='undef'
-d_stdio_ptr_lval_sets_cnt='undef'
+d_stdio_ptr_lval_sets_cnt='define'
d_stdio_stream_array='undef'
-d_stdiobase='undef'
-d_stdstdio='undef'
+d_stdiobase='define'
+d_stdstdio='define'
d_strchr='define'
d_strcoll='define'
d_strctcpy='define'
@@ -521,7 +521,7 @@ exe_ext=''
expr='expr'
extensions='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared Errno'
extras=''
-fflushNULL='undef'
+fflushNULL='define'
fflushall='undef'
find=''
firstmakefile='makefile'
@@ -667,7 +667,7 @@ i_varargs='undef'
i_varhdr='stdarg.h'
i_vfork='undef'
ignore_versioned_solibs='y'
-inc_version_list=' '
+inc_version_list=''
inc_version_list_init='0'
incpath=''
inews=''
@@ -706,7 +706,7 @@ ivsize='4'
ivtype='long'
known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared'
ksh=''
-ld='cc'
+ld='gcc'
lddlflags='-shared'
ldflags=''
ldflags_uselargefiles=''
@@ -716,9 +716,9 @@ lib_ext='.a'
libc='/lib/libc-2.5.so'
libperl='libperl.so'
libpth='/lib /usr/lib'
-libs='-lnsl -ldl -lm -lcrypt -lutil -lc'
+libs='-lresolv -lnsl -ldl -lm -lpthread -lcrypt -lutil -lc'
libsdirs=''
-libsfiles=''
+libsfiles=' libresolv.so libnsl.so libdl.so libm.so libpthread.so libcrypt.so libutil.so libc.so'
libsfound=''
libspath=' /lib /usr/lib'
libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m crypt sec util c cposix posix ucb BSD'
@@ -764,15 +764,15 @@ myarchname='powerpc-linux'
mydomain='.nonet'
myhostname='brokenslug'
myuname='linux brokenslug 2.6.12.6 #1 tue oct 24 01:06:22 pdt 2006 ppc unknown unknown gnulinux '
-n=''
-need_va_copy='define'
+n='-n'
+need_va_copy='undef'
netdb_hlen_type='size_t'
netdb_host_type='const void *'
netdb_name_type='const char *'
netdb_net_type='in_addr_t'
nm='nm'
nm_opt=''
-nm_so_opt=''
+nm_so_opt='--dynamic'
nonxs_ext='Errno'
nroff='nroff'
nvEUformat='"E"'
@@ -787,8 +787,8 @@ nvtype='double'
o_nonblock='O_NONBLOCK'
obj_ext='.o'
old_pthread_create_joinable=''
-optimize='-Os'
-orderlib='true'
+optimize='-O2'
+orderlib='false'
osname='linux'
osvers='2.6.12.6'
otherlibdirs=' '
@@ -801,7 +801,7 @@ perl5='hostperl'
perl=''
perl_patchlevel=''
perladmin='root@brokenslug.nonet'
-perllibs='-lnsl -ldl -lm -lcrypt -lutil -lc'
+perllibs='-lresolv -lnsl -ldl -lm -lpthread -lcrypt -lutil -lc'
perlpath='/usr/bin/perl'
pg='pg'
phostname='hostname'
@@ -958,7 +958,7 @@ use64bitint='undef'
usecrosscompile='undef'
usedl='define'
usefaststdio='define'
-useithreads='undef'
+useithreads='define'
uselargefiles='define'
uselongdouble='undef'
usemallocwrap='define'
@@ -974,7 +974,7 @@ usesfio='false'
useshrplib='true'
usesitecustomize='undef'
usesocks='undef'
-usethreads='undef'
+usethreads='define'
usevendorprefix='undef'
usevfork='false'
usrinc='/usr/include'
diff --git a/packages/perl/perl-5.8.7/config.sh-x86_64-linux b/packages/perl/perl-5.8.7/config.sh-x86_64-linux
index 89c830e79a..06a5f0f621 100644
--- a/packages/perl/perl-5.8.7/config.sh-x86_64-linux
+++ b/packages/perl/perl-5.8.7/config.sh-x86_64-linux
@@ -30,30 +30,30 @@ afs='false'
afsroot='/afs'
alignbytes='8'
ansi2knr=''
-aphostname='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin/hostname'
+aphostname='/bin/hostname'
api_revision='5'
api_subversion='0'
api_version='8'
api_versionstring='5.8.0'
ar='ar'
-archlib='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib/perl5/5.8.7/x86_64-linux-thread-multi'
-archlibexp='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib/perl5/5.8.7/x86_64-linux-thread-multi'
+archlib='/usr/lib/perl5/5.8.7/x86_64-linux-thread-multi'
+archlibexp='/usr/lib/perl5/5.8.7/x86_64-linux-thread-multi'
archname64=''
archname='x86_64-linux-thread-multi'
archobjs=''
-asctime_r_proto='REENTRANT_PROTO_B_SB'
+asctime_r_proto='0'
awk='awk'
baserev='5.0'
bash=''
-bin='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin'
-binexp='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin'
+bin='/usr/bin'
+binexp='/usr/bin'
bison='bison'
byacc='byacc'
byteorder='12345678'
c=''
castflags='0'
cat='cat'
-cc='ccache gcc '
+cc='cc'
cccdlflags='-fpic'
ccdlflags='-Wl,-E'
ccflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
@@ -83,11 +83,11 @@ cppminus='-'
cpprun='ccache gcc -E'
cppstdin='ccache gcc -E'
cppsymbols='__ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=3 __GNUC__=4 __GNUC_MINOR__=1 __GNU_LIBRARY__=6 _GNU_SOURCE=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 _LP64=1 __LP64__=1 _POSIX_C_SOURCE=199506 _POSIX_SOURCE=1 _REENTRANT=1 __STDC__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE=1 __USE_LARGEFILE64=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_REENTRANT=1 __USE_SVID=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 _XOPEN_SOURCE=600 _XOPEN_SOURCE_EXTENDED=1 __amd64=1 __amd64__=1 linux=1 __linux=1 __linux__=1 unix=1 __unix=1 __unix__=1'
-crypt_r_proto='REENTRANT_PROTO_B_CCS'
+crypt_r_proto='0'
cryptlib=''
csh='csh'
ctermid_r_proto='0'
-ctime_r_proto='REENTRANT_PROTO_B_SB'
+ctime_r_proto='0'
d_Gconvert='gcvt((x),(n),(b))'
d_PRIEUldbl='define'
d_PRIFUldbl='define'
@@ -503,7 +503,7 @@ dlext='so'
dlsrc='dl_dlopen.xs'
doublesize='8'
drand01='drand48()'
-drand48_r_proto='REENTRANT_PROTO_I_ST'
+drand48_r_proto='0'
dynamic_ext='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared'
eagain='EAGAIN'
ebcdic='undef'
@@ -536,33 +536,33 @@ full_sed='/bin/sed'
gccansipedantic=''
gccosandvers=''
gccversion='4.1.2 20061028 (prerelease) (Debian 4.1.1-19)'
-getgrent_r_proto='REENTRANT_PROTO_I_SBWR'
-getgrgid_r_proto='REENTRANT_PROTO_I_TSBWR'
-getgrnam_r_proto='REENTRANT_PROTO_I_CSBWR'
-gethostbyaddr_r_proto='REENTRANT_PROTO_I_TsISBWRE'
-gethostbyname_r_proto='REENTRANT_PROTO_I_CSBWRE'
-gethostent_r_proto='REENTRANT_PROTO_I_SBWRE'
-getlogin_r_proto='REENTRANT_PROTO_I_BW'
-getnetbyaddr_r_proto='REENTRANT_PROTO_I_uISBWRE'
-getnetbyname_r_proto='REENTRANT_PROTO_I_CSBWRE'
-getnetent_r_proto='REENTRANT_PROTO_I_SBWRE'
-getprotobyname_r_proto='REENTRANT_PROTO_I_CSBWR'
-getprotobynumber_r_proto='REENTRANT_PROTO_I_ISBWR'
-getprotoent_r_proto='REENTRANT_PROTO_I_SBWR'
-getpwent_r_proto='REENTRANT_PROTO_I_SBWR'
-getpwnam_r_proto='REENTRANT_PROTO_I_CSBWR'
-getpwuid_r_proto='REENTRANT_PROTO_I_TSBWR'
-getservbyname_r_proto='REENTRANT_PROTO_I_CCSBWR'
-getservbyport_r_proto='REENTRANT_PROTO_I_ICSBWR'
-getservent_r_proto='REENTRANT_PROTO_I_SBWR'
-getspnam_r_proto='REENTRANT_PROTO_I_CSBWR'
+getgrent_r_proto='0'
+getgrgid_r_proto='0'
+getgrnam_r_proto='0'
+gethostbyaddr_r_proto='0'
+gethostbyname_r_proto='0'
+gethostent_r_proto='0'
+getlogin_r_proto='0'
+getnetbyaddr_r_proto='0'
+getnetbyname_r_proto='0'
+getnetent_r_proto='0'
+getprotobyname_r_proto='0'
+getprotobynumber_r_proto='0'
+getprotoent_r_proto='0'
+getpwent_r_proto='0'
+getpwnam_r_proto='0'
+getpwuid_r_proto='0'
+getservbyname_r_proto='0'
+getservbyport_r_proto='0'
+getservent_r_proto='0'
+getspnam_r_proto='0'
gidformat='"u"'
gidsign='1'
gidsize='4'
gidtype='gid_t'
glibpth='/usr/shlib /lib /usr/lib /lib64 /usr/lib64 /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib '
gmake='gmake'
-gmtime_r_proto='REENTRANT_PROTO_S_TS'
+gmtime_r_proto='0'
gnulibc_version='2.3.6'
grep='grep'
groupcat='cat /etc/group'
@@ -671,64 +671,62 @@ inc_version_list=' '
inc_version_list_init='0'
incpath=''
inews=''
-installarchlib='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib/perl5/5.8.7/x86_64-linux-thread-multi'
-installbin='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin'
+installarchlib='./install_me_here/usr/lib/perl5/5.8.7/x86_64-linux-thread-multi'
+installbin='./install_me_here/usr/bin'
installhtml1dir=''
installhtml3dir=''
-installman1dir='/home/hrw/devel/build/native/tmp/staging/man/man1'
-installman3dir='/home/hrw/devel/build/native/tmp/staging/man/man3'
-installprefix='/home/hrw/devel/build/native/tmp/staging'
-installprefixexp='/home/hrw/devel/build/native/tmp/staging'
-installprivlib='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib/perl5/5.8.7'
-installscript='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin'
-installsitearch='/home/hrw/devel/build/native/tmp/staging/local/lib/perl5/site_perl/5.8.7/x86_64-linux-thread-multi'
-installsitebin='/home/hrw/devel/build/native/tmp/staging/local/bin'
+installman1dir='./install_me_here/usr/share/man/man1'
+installman3dir='./install_me_here/usr/share/man/man3'
+installprefix='./install_me_here/usr'
+installprefixexp='./install_me_here/usr'
+installprivlib='./install_me_here/usr/lib/perl5/5.8.7'
+installscript='./install_me_here/usr/bin'
installsitehtml1dir=''
installsitehtml3dir=''
-installsitelib='/home/hrw/devel/build/native/tmp/staging/local/lib/perl5/site_perl/5.8.7'
-installsiteman1dir='/home/hrw/devel/build/native/tmp/staging/local/man/man1'
-installsiteman3dir='/home/hrw/devel/build/native/tmp/staging/local/man/man3'
-installsitescript='/home/hrw/devel/build/native/tmp/staging/local/bin'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.8.7'
+installsiteman1dir='./install_me_here/usr/share/man/man1'
+installsiteman3dir='./install_me_here/usr/share/man/man3'
+installsitescript='./install_me_here/usr/bin'
installstyle='lib/perl5'
installusrbinperl='undef'
-installvendorarch='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi'
-installvendorbin='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin'
+installvendorarch=''
+installvendorbin=''
installvendorhtml1dir=''
installvendorhtml3dir=''
-installvendorlib='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib/perl5/vendor_perl/5.8.7'
-installvendorman1dir='/home/hrw/devel/build/native/tmp/staging/man/man1'
-installvendorman3dir='/home/hrw/devel/build/native/tmp/staging/man/man3'
-installvendorscript='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin'
+installvendorlib=''
+installvendorman1dir=''
+installvendorman3dir=''
+installvendorscript=''
intsize='4'
-issymlink='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin/test -h'
+issymlink='/bin/test -h'
ivdformat='"ld"'
ivsize='8'
ivtype='long'
known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared'
ksh=''
-ld='ccache gcc '
-lddlflags='-shared -L/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib -L/usr/local/lib'
-ldflags='-L/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib -Wl,-rpath-link,/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib -Wl,-rpath,/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib -Wl,-O1} -L/usr/local/lib'
+ld='cc'
+lddlflags='-shared'
+ldflags=''
ldflags_uselargefiles=''
ldlibpthname='LD_LIBRARY_PATH'
less='less'
lib_ext='.a'
libc='/lib/libc-2.3.6.so'
libperl='libperl.a'
-libpth='/usr/local/lib /lib /usr/lib /lib64 /usr/lib64'
+libpth='/lib /usr/lib /lib64 /usr/lib64'
libs='-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc'
libsdirs=' /usr/lib'
libsfiles=' libnsl.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
-libsfound=' /usr/lib/libnsl.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
-libspath=' /usr/local/lib /lib /usr/lib /lib64 /usr/lib64'
+libsfound=''
+libspath=' /lib /usr/lib /lib64 /usr/lib64'
libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m crypt sec util pthread c cposix posix ucb BSD'
libswanted_uselargefiles=''
line=''
lint=''
lkflags=''
ln='ln'
-lns='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin/ln -s'
-localtime_r_proto='REENTRANT_PROTO_S_TS'
+lns='/bin/ln -s'
+localtime_r_proto='0'
locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
longdblsize='16'
@@ -746,12 +744,12 @@ make_set_make='#'
mallocobj=''
mallocsrc=''
malloctype='void *'
-man1dir='/home/hrw/devel/build/native/tmp/staging/man/man1'
-man1direxp='/home/hrw/devel/build/native/tmp/staging/man/man1'
+man1dir='/usr/share/man/man1'
+man1direxp='/usr/share/man/man1'
man1ext='1'
-man3dir='/home/hrw/devel/build/native/tmp/staging/man/man3'
-man3direxp='/home/hrw/devel/build/native/tmp/staging/man/man3'
-man3ext='3perl'
+man3dir='/usr/share/man/man3'
+man3direxp='/usr/share/man/man3'
+man3ext='3'
mips_type=''
mistrustnm=''
mkdir='mkdir'
@@ -802,17 +800,17 @@ perl=''
perl_patchlevel=''
perladmin='hrw@home.lan'
perllibs='-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc'
-perlpath='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin/perl'
+perlpath='/usr/bin/perl'
pg='pg'
phostname='hostname'
pidtype='pid_t'
plibpth=''
pmake=''
pr=''
-prefix='/home/hrw/devel/build/native/tmp/staging'
-prefixexp='/home/hrw/devel/build/native/tmp/staging'
-privlib='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib/perl5/5.8.7'
-privlibexp='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib/perl5/5.8.7'
+prefix='/usr'
+prefixexp='/usr'
+privlib='/usr/lib/perl5/5.8.7'
+privlibexp='/usr/lib/perl5/5.8.7'
procselfexe='"/proc/self/exe"'
prototype='define'
ptrsize='8'
@@ -820,12 +818,12 @@ quadkind='2'
quadtype='long'
randbits='48'
randfunc='drand48'
-random_r_proto='REENTRANT_PROTO_I_St'
+random_r_proto='0'
randseedtype='long'
ranlib=':'
rd_nodata='-1'
-readdir64_r_proto='REENTRANT_PROTO_I_TSR'
-readdir_r_proto='REENTRANT_PROTO_I_TSR'
+readdir64_r_proto='0'
+readdir_r_proto='0'
revision='5'
rm='rm'
rmail=''
@@ -845,8 +843,8 @@ sPRIu64='"lu"'
sPRIx64='"lx"'
sSCNfldbl='"Lf"'
sched_yield='sched_yield()'
-scriptdir='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin'
-scriptdirexp='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin'
+scriptdir='/usr/bin'
+scriptdirexp='/usr/bin'
sed='sed'
seedfunc='srand48'
selectminbits='64'
@@ -873,25 +871,25 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 31, 0'
sig_size='69'
signal_t='void'
-sitearch='/home/hrw/devel/build/native/tmp/staging/local/lib/perl5/site_perl/5.8.7/x86_64-linux-thread-multi'
-sitearchexp='/home/hrw/devel/build/native/tmp/staging/local/lib/perl5/site_perl/5.8.7/x86_64-linux-thread-multi'
-sitebin='/home/hrw/devel/build/native/tmp/staging/local/bin'
-sitebinexp='/home/hrw/devel/build/native/tmp/staging/local/bin'
+sitearch='/usr/lib/perl5/site_perl/5.8.7/x86_64-linux-thread-multi'
+sitearchexp='/usr/lib/perl5/site_perl/5.8.7/x86_64-linux-thread-multi'
+sitebin='/usr/bin'
+sitebinexp='/usr/bin'
sitehtml1dir=''
sitehtml1direxp=''
sitehtml3dir=''
sitehtml3direxp=''
-sitelib='/home/hrw/devel/build/native/tmp/staging/local/lib/perl5/site_perl/5.8.7'
-sitelib_stem='/home/hrw/devel/build/native/tmp/staging/local/lib/perl5/site_perl'
-sitelibexp='/home/hrw/devel/build/native/tmp/staging/local/lib/perl5/site_perl/5.8.7'
-siteman1dir='/home/hrw/devel/build/native/tmp/staging/local/man/man1'
-siteman1direxp='/home/hrw/devel/build/native/tmp/staging/local/man/man1'
-siteman3dir='/home/hrw/devel/build/native/tmp/staging/local/man/man3'
-siteman3direxp='/home/hrw/devel/build/native/tmp/staging/local/man/man3'
-siteprefix='/home/hrw/devel/build/native/tmp/staging/local'
-siteprefixexp='/home/hrw/devel/build/native/tmp/staging/local'
-sitescript='/home/hrw/devel/build/native/tmp/staging/local/bin'
-sitescriptexp='/home/hrw/devel/build/native/tmp/staging/local/bin'
+sitelib='/usr/lib/perl5/site_perl/5.8.7'
+sitelib_stem='/usr/lib/perl5/site_perl'
+sitelibexp='/usr/lib/perl5/site_perl/5.8.7'
+siteman1dir='/usr/share/man/man1'
+siteman1direxp='/usr/share/man/man1'
+siteman3dir='/usr/share/man/man3'
+siteman3direxp='/usr/share/man/man3'
+siteprefix='/usr'
+siteprefixexp='/usr'
+sitescript='/usr/bin'
+sitescriptexp='/usr/bin'
sizesize='8'
sizetype='size_t'
sleep=''
@@ -903,11 +901,11 @@ socksizetype='socklen_t'
sort='sort'
spackage='Perl5'
spitshell='cat'
-srand48_r_proto='REENTRANT_PROTO_I_LS'
-srandom_r_proto='REENTRANT_PROTO_I_TS'
+srand48_r_proto='0'
+srandom_r_proto='0'
src='.'
ssizetype='ssize_t'
-startperl='#!/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin/perl'
+startperl='#!/usr/bin/perl'
startsh='#!/bin/sh'
static_ext=' '
stdchar='char'
@@ -917,7 +915,7 @@ stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
stdio_filbuf=''
stdio_ptr='((fp)->_IO_read_ptr)'
stdio_stream_array=''
-strerror_r_proto='REENTRANT_PROTO_B_IBW'
+strerror_r_proto='0'
strings='/usr/include/string.h'
submit=''
subversion='7'
@@ -930,13 +928,13 @@ tee=''
test='test'
timeincl='/usr/include/sys/time.h /usr/include/time.h '
timetype='time_t'
-tmpnam_r_proto='REENTRANT_PROTO_B_B'
+tmpnam_r_proto='0'
to=':'
touch='touch'
tr='tr'
trnl='\n'
troff=''
-ttyname_r_proto='REENTRANT_PROTO_I_IBW'
+ttyname_r_proto='0'
u16size='2'
u16type='unsigned short'
u32size='4'
@@ -985,25 +983,25 @@ uvsize='8'
uvtype='unsigned long'
uvuformat='"lu"'
uvxformat='"lx"'
-vendorarch='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi'
-vendorarchexp='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi'
-vendorbin='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin'
-vendorbinexp='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin'
+vendorarch=''
+vendorarchexp=''
+vendorbin=''
+vendorbinexp=''
vendorhtml1dir=' '
vendorhtml1direxp=''
vendorhtml3dir=' '
vendorhtml3direxp=''
-vendorlib='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib/perl5/vendor_perl/5.8.7'
-vendorlib_stem='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib/perl5/vendor_perl'
-vendorlibexp='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib/perl5/vendor_perl/5.8.7'
-vendorman1dir='/home/hrw/devel/build/native/tmp/staging/man/man1'
-vendorman1direxp='/home/hrw/devel/build/native/tmp/staging/man/man1'
-vendorman3dir='/home/hrw/devel/build/native/tmp/staging/man/man3'
-vendorman3direxp='/home/hrw/devel/build/native/tmp/staging/man/man3'
-vendorprefix='/home/hrw/devel/build/native/tmp/staging'
-vendorprefixexp='/home/hrw/devel/build/native/tmp/staging'
-vendorscript='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin'
-vendorscriptexp='/home/hrw/devel/build/native/tmp/staging/x86_64-linux/bin'
+vendorlib='/usr/lib/perl5/vendor_perl/5.8.7'
+vendorlib_stem='/usr/lib/perl5/vendor_perl'
+vendorlibexp='/usr/lib/perl5/vendor_perl/5.8.7'
+vendorman1dir='/usr/share/man/man1'
+vendorman1direxp='/usr/share/man/man1'
+vendorman3dir='/usr/share/man/man3'
+vendorman3direxp='/usr/share/man/man3'
+vendorprefix=''
+vendorprefixexp=''
+vendorscript='/usr/bin'
+vendorscriptexp='/usr/bin'
version='5.8.7'
version_patchlevel_string='version 8 subversion 7'
versiononly='undef'
@@ -1015,24 +1013,9 @@ yaccflags=''
zcat=''
zip='zip'
# Configure command line arguments.
-config_arg0='./Configure'
-config_args='-Dcc=ccache gcc -Dcflags=-isystem/home/hrw/devel/build/native/tmp/staging/x86_64-linux/include -O2 -Dldflags=-L/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib -Wl,-rpath-link,/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib -Wl,-rpath,/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib -Wl,-O1} -Dusethreads -Duselargefiles -Dprefix=/home/hrw/devel/build/native/tmp/staging -Dvendorprefix=/home/hrw/devel/build/native/tmp/staging -Dsiteprefix=/home/hrw/devel/build/native/tmp/staging/local -Dman1ext=1 -Dman3ext=3perl -Uafs -Ud_csh -Uusesfio -Uusenm -des'
-config_argc=15
-config_arg1='-Dcc=ccache gcc '
-config_arg2='-Dcflags=-isystem/home/hrw/devel/build/native/tmp/staging/x86_64-linux/include -O2'
-config_arg3='-Dldflags=-L/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib -Wl,-rpath-link,/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib -Wl,-rpath,/home/hrw/devel/build/native/tmp/staging/x86_64-linux/lib -Wl,-O1}'
-config_arg4='-Dusethreads'
-config_arg5='-Duselargefiles'
-config_arg6='-Dprefix=/home/hrw/devel/build/native/tmp/staging'
-config_arg7='-Dvendorprefix=/home/hrw/devel/build/native/tmp/staging'
-config_arg8='-Dsiteprefix=/home/hrw/devel/build/native/tmp/staging/local'
-config_arg9='-Dman1ext=1'
-config_arg10='-Dman3ext=3perl'
-config_arg11='-Uafs'
-config_arg12='-Ud_csh'
-config_arg13='-Uusesfio'
-config_arg14='-Uusenm'
-config_arg15='-des'
+config_arg0='Configure'
+config_args=''
+config_argc=0
PERL_REVISION=5
PERL_VERSION=8
PERL_SUBVERSION=7
diff --git a/packages/perl/perl-5.8.8/.mtn2git_empty b/packages/perl/perl-5.8.8/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/perl/perl-5.8.8/.mtn2git_empty
diff --git a/packages/perl/perl-5.8.8/09_fix_installperl.patch b/packages/perl/perl-5.8.8/09_fix_installperl.patch
new file mode 100644
index 0000000000..f550537d02
--- /dev/null
+++ b/packages/perl/perl-5.8.8/09_fix_installperl.patch
@@ -0,0 +1,32 @@
+Correctly identify arch-specific modules in ext/ where the .pm files
+are under lib.
+
+Ensure that POSIX/SigAction is kept with the rest of the POSIX module
+under archlib.
+
+diff --exclude=debian -Naur perl-5.8.8.orig/installperl perl-5.8.8/installperl
+--- perl-5.8.8.orig/installperl 2006-01-29 02:35:28.000000000 +1100
++++ perl-5.8.8/installperl 2006-05-31 22:54:41.000000000 +1000
+@@ -156,11 +156,8 @@
+ if ("$File::Find::dir/$_" =~ m{^ext\b(.*)/([^/]+)\.pm$}) {
+ my($path, $modname) = ($1,$2);
+
+- # strip trailing component first
+- $path =~ s{/[^/]*$}{};
+-
+- # strip optional "/lib";
+- $path =~ s{/lib\b}{};
++ # strip to optional "/lib", or remove trailing component
++ $path =~ s{.*/lib\b}{} or $path =~ s{/[^/]*$}{};
+
+ # strip any leading /
+ $path =~ s{^/}{};
+@@ -851,7 +848,7 @@
+ }
+
+ if (-f $_) {
+- if (/\.(?:al|ix)$/ && !($dir =~ m[^auto/(.*)$] && $archpms{$1})) {
++ if (/\.(?:al|ix)$/ && !($dir =~ m[^auto/(.*)$])) {
+ $installlib = $installprivlib;
+ #We're installing *.al and *.ix files into $installprivlib,
+ #but we have to delete old *.al and *.ix files from the 5.000
diff --git a/packages/perl/perl-5.8.8/52_debian_extutils_hacks.patch b/packages/perl/perl-5.8.8/52_debian_extutils_hacks.patch
new file mode 100644
index 0000000000..8a964f9338
--- /dev/null
+++ b/packages/perl/perl-5.8.8/52_debian_extutils_hacks.patch
@@ -0,0 +1,234 @@
+Various debian-specific ExtUtils changes:
+
+ * Respect umask during installation, and set as appropriate for each of
+ perl, vendor and site (policy requires group writable site dirs).
+
+ * Don't install .packlist or perllocal.pod for perl or vendor.
+ * Fiddle with *PREFIX and variables written to the makefile so that
+ install directories may be changed when make is run by passing
+ PREFIX= to the "make install" command (used when packaging
+ modules).
+
+ * Set location of libperl.a to /usr/lib.
+ * Note that libperl-dev package is required for embedded linking.
+
+diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/Embed.pm perl-5.8.8/lib/ExtUtils/Embed.pm
+--- perl-5.8.8.orig/lib/ExtUtils/Embed.pm 2004-08-03 20:41:49.000000000 +1000
++++ perl-5.8.8/lib/ExtUtils/Embed.pm 2006-02-05 10:42:11.000000000 +1100
+@@ -300,6 +300,9 @@
+ Typically, an application B<Makefile> will invoke ExtUtils::Embed
+ functions while building your application.
+
++Note that on Debian systems the B<libperl-dev> package is required for
++compiling applications which embed an interpreter.
++
+ =head1 @EXPORT
+
+ ExtUtils::Embed exports the following functions:
+diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/Install.pm perl-5.8.8/lib/ExtUtils/Install.pm
+--- perl-5.8.8.orig/lib/ExtUtils/Install.pm 2005-10-21 22:00:01.000000000 +1000
++++ perl-5.8.8/lib/ExtUtils/Install.pm 2006-02-05 10:42:11.000000000 +1100
+@@ -173,8 +173,8 @@
+ if (-f $targetfile){
+ forceunlink($targetfile) unless $nonono;
+ } else {
+- mkpath($targetdir,0,0755) unless $nonono;
+- print "mkpath($targetdir,0,0755)\n" if $verbose>1;
++ mkpath($targetdir) unless $nonono;
++ print "mkpath($targetdir)\n" if $verbose>1;
+ }
+ copy($sourcefile, $targetfile) unless $nonono;
+ print "Installing $targetfile\n";
+diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/MM_Any.pm perl-5.8.8/lib/ExtUtils/MM_Any.pm
+--- perl-5.8.8.orig/lib/ExtUtils/MM_Any.pm 2005-04-13 17:49:53.000000000 +1000
++++ perl-5.8.8/lib/ExtUtils/MM_Any.pm 2006-02-05 11:17:52.000000000 +1100
+@@ -645,8 +645,6 @@
+ sub manifypods_target {
+ my($self) = shift;
+
+- my $man1pods = '';
+- my $man3pods = '';
+ my $dependencies = '';
+
+ # populate manXpods & dependencies:
+@@ -666,7 +664,7 @@
+ foreach my $section (qw(1 3)) {
+ my $pods = $self->{"MAN${section}PODS"};
+ push @man_cmds, $self->split_command(<<CMD, %$pods);
+- \$(NOECHO) \$(POD2MAN) --section=$section --perm_rw=\$(PERM_RW)
++ \$(NOECHO) \$(POD2MAN) --section=\$(MAN${section}EXT) --perm_rw=\$(PERM_RW)
+ CMD
+ }
+
+@@ -1080,9 +1078,11 @@
+ $self->{SITEPREFIX} ||= $sprefix;
+ $self->{VENDORPREFIX} ||= $vprefix;
+
+- # Lots of MM extension authors like to use $(PREFIX) so we
+- # put something sensible in there no matter what.
+- $self->{PREFIX} = '$('.uc $self->{INSTALLDIRS}.'PREFIX)';
++ my $p = $self->{PREFIX} = $self->{PERLPREFIX};
++ for my $t (qw/PERL SITE VENDOR/)
++ {
++ $self->{"${t}PREFIX"} =~ s!^\Q$p\E(?=/|$)!\$(PREFIX)!;
++ }
+ }
+
+ my $arch = $Config{archname};
+diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm perl-5.8.8/lib/ExtUtils/MM_Unix.pm
+--- perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm 2005-05-21 19:42:56.000000000 +1000
++++ perl-5.8.8/lib/ExtUtils/MM_Unix.pm 2006-02-05 17:40:19.000000000 +1100
+@@ -2054,9 +2054,7 @@
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+ pure_perl_install ::
+- $(NOECHO) $(MOD_INSTALL) \
+- read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
+- write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
++ $(NOECHO) umask 022; $(MOD_INSTALL) \
+ $(INST_LIB) $(DESTINSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+ $(INST_BIN) $(DESTINSTALLBIN) \
+@@ -2068,7 +2066,7 @@
+
+
+ pure_site_install ::
+- $(NOECHO) $(MOD_INSTALL) \
++ $(NOECHO) umask 02; $(MOD_INSTALL) \
+ read }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
+ write }.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \
+ $(INST_LIB) $(DESTINSTALLSITELIB) \
+@@ -2081,9 +2079,7 @@
+ }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{
+
+ pure_vendor_install ::
+- $(NOECHO) $(MOD_INSTALL) \
+- read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
+- write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \
++ $(NOECHO) umask 022; $(MOD_INSTALL) \
+ $(INST_LIB) $(DESTINSTALLVENDORLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+ $(INST_BIN) $(DESTINSTALLVENDORBIN) \
+@@ -2092,37 +2088,19 @@
+ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+ doc_perl_install ::
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
+- "Module" "$(NAME)" \
+- "installed into" "$(INSTALLPRIVLIB)" \
+- LINKTYPE "$(LINKTYPE)" \
+- VERSION "$(VERSION)" \
+- EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+
+ doc_site_install ::
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
++ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
++ -$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH)
++ -$(NOECHO) umask 02; $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
++ >> }.$self->catfile('$(DESTINSTALLSITEARCH)','perllocal.pod').q{
+
+ doc_vendor_install ::
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
+- "Module" "$(NAME)" \
+- "installed into" "$(INSTALLVENDORLIB)" \
+- LINKTYPE "$(LINKTYPE)" \
+- VERSION "$(VERSION)" \
+- EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+
+ };
+
+@@ -2131,13 +2109,12 @@
+ $(NOECHO) $(NOOP)
+
+ uninstall_from_perldirs ::
+- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{
+
+ uninstall_from_sitedirs ::
+ $(NOECHO) $(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{
+
+ uninstall_from_vendordirs ::
+- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{
++
+ };
+
+ join("",@m);
+@@ -2415,7 +2392,7 @@
+ ($lperl = $libperl) =~ s/\$\(A\)/$self->{LIB_EXT}/;
+ }
+ unless ($libperl && -f $lperl) { # Ilya's code...
+- my $dir = $self->{PERL_SRC} || "$self->{PERL_ARCHLIB}/CORE";
++ my $dir = $self->{PERL_SRC} || "/usr/lib";
+ $dir = "$self->{PERL_ARCHLIB}/.." if $self->{UNINSTALLED_PERL};
+ $libperl ||= "libperl$self->{LIB_EXT}";
+ $libperl = "$dir/$libperl";
+@@ -3007,8 +2984,7 @@
+ print STDERR " prefixify $var => $path\n" if $Verbose >= 2;
+ print STDERR " from $sprefix to $rprefix\n" if $Verbose >= 2;
+
+- if( $self->{ARGS}{PREFIX} && $self->file_name_is_absolute($path) &&
+- $path !~ s{^\Q$sprefix\E\b}{$rprefix}s )
++ if( $path !~ s{^\Q$sprefix\E\b}{$rprefix}s && $self->{ARGS}{PREFIX} )
+ {
+
+ print STDERR " cannot prefix, using default.\n" if $Verbose >= 2;
+diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/t/INST.t perl-5.8.8/lib/ExtUtils/t/INST.t
+--- perl-5.8.8.orig/lib/ExtUtils/t/INST.t 2005-10-21 19:12:39.000000000 +1000
++++ perl-5.8.8/lib/ExtUtils/t/INST.t 2006-02-05 17:48:56.000000000 +1100
+@@ -65,9 +65,7 @@
+ is( $mm->{NAME}, 'Big::Dummy', 'NAME' );
+ is( $mm->{VERSION}, 0.01, 'VERSION' );
+
+-my $config_prefix = $Config{installprefixexp} || $Config{installprefix} ||
+- $Config{prefixexp} || $Config{prefix};
+-is( $mm->{PERLPREFIX}, $config_prefix, 'PERLPREFIX' );
++is( $mm->{PERLPREFIX}, '$(PREFIX)', 'PERLPREFIX' );
+
+ is( !!$mm->{PERL_CORE}, !!$ENV{PERL_CORE}, 'PERL_CORE' );
+
+diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/t/INST_PREFIX.t perl-5.8.8/lib/ExtUtils/t/INST_PREFIX.t
+--- perl-5.8.8.orig/lib/ExtUtils/t/INST_PREFIX.t 2005-10-21 22:00:19.000000000 +1000
++++ perl-5.8.8/lib/ExtUtils/t/INST_PREFIX.t 2006-02-05 17:48:06.000000000 +1100
+@@ -16,7 +16,7 @@
+ }
+
+ use strict;
+-use Test::More tests => 52;
++use Test::More tests => 47;
+ use MakeMaker::Test::Utils;
+ use MakeMaker::Test::Setup::BFD;
+ use ExtUtils::MakeMaker;
+@@ -62,16 +62,16 @@
+ Writing\ $Makefile\ for\ Big::Dummy\n
+ }x );
+
+-is( $mm->{PREFIX}, '$(SITEPREFIX)', 'PREFIX set based on INSTALLDIRS' );
++#is( $mm->{PREFIX}, '$(SITEPREFIX)', 'PREFIX set based on INSTALLDIRS' );
+
+ isa_ok( $mm, 'ExtUtils::MakeMaker' );
+
+ is( $mm->{NAME}, 'Big::Dummy', 'NAME' );
+ is( $mm->{VERSION}, 0.01, 'VERSION' );
+
+-foreach my $prefix (qw(PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX)) {
+- unlike( $mm->{$prefix}, qr/\$\(PREFIX\)/ );
+-}
++#foreach my $prefix (qw(PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX)) {
++# unlike( $mm->{$prefix}, qr/\$\(PREFIX\)/ );
++#}
+
+
+ my $PREFIX = File::Spec->catdir('foo', 'bar');
diff --git a/packages/perl/perl-5.8.8/53_debian_mod_paths.patch b/packages/perl/perl-5.8.8/53_debian_mod_paths.patch
new file mode 100644
index 0000000000..df74bc598d
--- /dev/null
+++ b/packages/perl/perl-5.8.8/53_debian_mod_paths.patch
@@ -0,0 +1,107 @@
+Tweak @INC so that the ordering is:
+
+ etc (for config files)
+ site (5.8.1)
+ vendor (all)
+ core (5.8.1)
+ site (version-indep)
+ site (pre-5.8.1)
+
+The rationale being that an admin (via site), or module packager
+(vendor) can chose to shadow core modules when there is a newer
+version than is included in core.
+
+diff -Naur --exclude=debian perl-5.8.8.orig/perl.c perl-5.8.8/perl.c
+--- perl-5.8.8.orig/perl.c 2006-01-31 23:34:47.000000000 +1100
++++ perl-5.8.8/perl.c 2006-02-02 23:36:38.000000000 +1100
+@@ -4776,9 +4776,14 @@
+ incpush(APPLLIB_EXP, TRUE, TRUE, TRUE);
+ #endif
+
++#if 1
++ /* for configuration where /usr is mounted ro (CPAN::Config, Net::Config) */
++ incpush("/etc/perl", FALSE, FALSE, FALSE);
++#else
+ #ifdef ARCHLIB_EXP
+ incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE);
+ #endif
++#endif
+ #ifdef MACOS_TRADITIONAL
+ {
+ Stat_t tmpstatbuf;
+@@ -4803,11 +4808,13 @@
+ #ifndef PRIVLIB_EXP
+ # define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl"
+ #endif
++#if 0
+ #if defined(WIN32)
+ incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE);
+ #else
+ incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE);
+ #endif
++#endif
+
+ #ifdef SITEARCH_EXP
+ /* sitearch is always relative to sitelib on Windows for
+@@ -4850,6 +4857,61 @@
+ incpush(PERL_VENDORLIB_STEM, FALSE, TRUE, TRUE);
+ #endif
+
++#if 1
++ incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE);
++ incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE);
++
++ /* Non-versioned site directory for local modules and for
++ compatability with the previous packages' site dirs */
++ incpush("/usr/local/lib/site_perl", TRUE, FALSE, FALSE);
++
++#ifdef PERL_INC_VERSION_LIST
++ {
++ struct stat s;
++
++ /* add small buffer in case old versions are longer than the
++ current version */
++ char sitearch[sizeof(SITEARCH_EXP)+16] = SITEARCH_EXP;
++ char sitelib[sizeof(SITELIB_EXP)+16] = SITELIB_EXP;
++ char const *vers[] = { PERL_INC_VERSION_LIST };
++ char const **p;
++
++ char *arch_vers = strrchr(sitearch, '/');
++ char *lib_vers = strrchr(sitelib, '/');
++
++ if (arch_vers && isdigit(*++arch_vers))
++ *arch_vers = 0;
++ else
++ arch_vers = 0;
++
++ if (lib_vers && isdigit(*++lib_vers))
++ *lib_vers = 0;
++ else
++ lib_vers = 0;
++
++ /* there is some duplication here as incpush does something
++ similar internally, but required as sitearch is not a
++ subdirectory of sitelib */
++ for (p = vers; *p; p++)
++ {
++ if (arch_vers)
++ {
++ strcpy(arch_vers, *p);
++ if (PerlLIO_stat(sitearch, &s) >= 0 && S_ISDIR(s.st_mode))
++ incpush(sitearch, FALSE, FALSE, FALSE);
++ }
++
++ if (lib_vers)
++ {
++ strcpy(lib_vers, *p);
++ if (PerlLIO_stat(sitelib, &s) >= 0 && S_ISDIR(s.st_mode))
++ incpush(sitelib, FALSE, FALSE, FALSE);
++ }
++ }
++ }
++#endif
++#endif
++
+ #ifdef PERL_OTHERLIBDIRS
+ incpush(PERL_OTHERLIBDIRS, TRUE, TRUE, TRUE);
+ #endif
diff --git a/packages/perl/perl-5.8.8/54_debian_perldoc-r.patch b/packages/perl/perl-5.8.8/54_debian_perldoc-r.patch
new file mode 100644
index 0000000000..432cd857a7
--- /dev/null
+++ b/packages/perl/perl-5.8.8/54_debian_perldoc-r.patch
@@ -0,0 +1,16 @@
+In a Debian installation, not all directories in @INC need exist (the
+site directories for example are created on demand).
+
+Suggested by Joey Hess <joeyh@debian.org>.
+
+diff -Naur --exclude=debian perl-5.8.8.orig/lib/Pod/Perldoc.pm perl-5.8.8/lib/Pod/Perldoc.pm
+--- perl-5.8.8.orig/lib/Pod/Perldoc.pm 2004-12-29 23:15:33.000000000 +1100
++++ perl-5.8.8/lib/Pod/Perldoc.pm 2006-02-02 23:38:49.000000000 +1100
+@@ -1533,6 +1533,7 @@
+ $self->{'target'} = (splitdir $s)[-1]; # XXX: why not use File::Basename?
+ for ($i=0; $i<@dirs; $i++) {
+ $dir = $dirs[$i];
++ next unless -d $dir; # some dirs in @INC are optional
+ ($dir = VMS::Filespec::unixpath($dir)) =~ s!/\z!! if IS_VMS;
+ if ( (! $self->opt_m && ( $ret = $self->check_file($dir,"$s.pod")))
+ or ( $ret = $self->check_file($dir,"$s.pm"))
diff --git a/packages/perl/perl-5.8.8/58_debian_cpan_config_path.patch b/packages/perl/perl-5.8.8/58_debian_cpan_config_path.patch
new file mode 100644
index 0000000000..b38c70c515
--- /dev/null
+++ b/packages/perl/perl-5.8.8/58_debian_cpan_config_path.patch
@@ -0,0 +1,14 @@
+Set location of CPAN::Config to /etc/perl as /usr may not be writable.
+
+diff -Naur --exclude=debian perl-5.8.8.orig/lib/CPAN.pm perl-5.8.8/lib/CPAN.pm
+--- perl-5.8.8.orig/lib/CPAN.pm 2006-02-01 01:11:22.000000000 +1100
++++ perl-5.8.8/lib/CPAN.pm 2006-02-02 23:49:26.000000000 +1100
+@@ -1246,7 +1246,7 @@
+ $configpm = $INC{"CPAN/MyConfig.pm"};
+ $redo++;
+ } else {
+- my($path_to_cpan) = File::Basename::dirname($INC{"CPAN.pm"});
++ my($path_to_cpan) = '/etc/perl';
+ my($configpmdir) = File::Spec->catdir($path_to_cpan,"CPAN");
+ my($configpmtest) = File::Spec->catfile($configpmdir,"Config.pm");
+ if (-d $configpmdir or File::Path::mkpath($configpmdir)) {
diff --git a/packages/perl/perl-5.8.8/60_debian_libnet_config_path.patch b/packages/perl/perl-5.8.8/60_debian_libnet_config_path.patch
new file mode 100644
index 0000000000..7842ce115c
--- /dev/null
+++ b/packages/perl/perl-5.8.8/60_debian_libnet_config_path.patch
@@ -0,0 +1,16 @@
+Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
+
+diff -Naur --exclude=debian perl-5.8.8.orig/lib/Net/Config.pm perl-5.8.8/lib/Net/Config.pm
+--- perl-5.8.8.orig/lib/Net/Config.pm 2002-03-01 01:04:31.000000000 +1100
++++ perl-5.8.8/lib/Net/Config.pm 2006-02-03 00:00:55.000000000 +1100
+@@ -57,9 +57,8 @@
+ }
+ TRY_INTERNET_CONFIG
+
+-my $file = __FILE__;
++my $file = '/etc/perl/Net/libnet.cfg';
+ my $ref;
+-$file =~ s/Config.pm/libnet.cfg/;
+ if ( -f $file ) {
+ $ref = eval { local $SIG{__DIE__}; do $file };
+ if (ref($ref) eq 'HASH') {
diff --git a/packages/perl/perl-5.8.8/62_debian_cpan_definstalldirs.patch b/packages/perl/perl-5.8.8/62_debian_cpan_definstalldirs.patch
new file mode 100644
index 0000000000..682061dd8b
--- /dev/null
+++ b/packages/perl/perl-5.8.8/62_debian_cpan_definstalldirs.patch
@@ -0,0 +1,16 @@
+Some modules which are included in core set INSTALLDIRS => 'perl'
+explicitly in Makefile.PL. This makes sense for the normal @INC
+ordering, but not ours. Provide a sensible default.
+
+diff -Naur --exclude=debian perl-5.8.8.orig/lib/CPAN/FirstTime.pm perl-5.8.8/lib/CPAN/FirstTime.pm
+--- perl-5.8.8.orig/lib/CPAN/FirstTime.pm 2006-01-31 08:08:57.000000000 +1100
++++ perl-5.8.8/lib/CPAN/FirstTime.pm 2006-02-03 00:05:24.000000000 +1100
+@@ -358,7 +358,7 @@
+
+ };
+
+- $default = $CPAN::Config->{makepl_arg} || "";
++ $default = $CPAN::Config->{makepl_arg} || "INSTALLDIRS=site";
+ $CPAN::Config->{makepl_arg} =
+ prompt("Parameters for the 'perl Makefile.PL' command?
+ Typical frequently used settings:
diff --git a/packages/perl/perl-5.8.8/64_debian_enc2xs_inc.patch b/packages/perl/perl-5.8.8/64_debian_enc2xs_inc.patch
new file mode 100644
index 0000000000..c207a9380a
--- /dev/null
+++ b/packages/perl/perl-5.8.8/64_debian_enc2xs_inc.patch
@@ -0,0 +1,28 @@
+Tweak enc2xs to handle Debian @INC: ignore missing directories,
+follow symlinks (/usr/share/perl/5.8 -> 5.8.4).
+
+diff -Naur --exclude=debian perl-5.8.8.orig/ext/Encode/bin/enc2xs perl-5.8.8/ext/Encode/bin/enc2xs
+--- perl-5.8.8.orig/ext/Encode/bin/enc2xs 2004-09-03 01:53:51.000000000 +1000
++++ perl-5.8.8/ext/Encode/bin/enc2xs 2006-02-03 00:21:32.000000000 +1100
+@@ -909,10 +909,11 @@
+ eval { require File::Find; };
+ my (@inc, %e2x_dir);
+ for my $inc (@INC){
++ next unless -d $inc; # skip non-existent directories
+ push @inc, $inc unless $inc eq '.'; #skip current dir
+ }
+ File::Find::find(
+- sub {
++ { wanted => sub {
+ my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
+ $atime,$mtime,$ctime,$blksize,$blocks)
+ = lstat($_) or return;
+@@ -922,7 +923,7 @@
+ $e2x_dir{$File::Find::dir} ||= $mtime;
+ }
+ return;
+- }, @inc);
++ }, follow => 1}, @inc);
+ warn join("\n", keys %e2x_dir), "\n";
+ for my $d (sort {$e2x_dir{$a} <=> $e2x_dir{$b}} keys %e2x_dir){
+ $_E2X = $d;
diff --git a/packages/perl/perl-5.8.8/Makefile.SH.patch b/packages/perl/perl-5.8.8/Makefile.SH.patch
new file mode 100644
index 0000000000..c674ce9ee5
--- /dev/null
+++ b/packages/perl/perl-5.8.8/Makefile.SH.patch
@@ -0,0 +1,222 @@
+--- perl-5.8.8/Makefile.SH 2007/04/20 12:43:33 1.1
++++ perl-5.8.8/Makefile.SH 2007/04/20 15:20:40
+@@ -129,18 +129,7 @@
+ # INSTALL file, under "Building a shared perl library".
+ # If there is no pre-existing $libperl, we don't need
+ # to do anything further.
+- if test -f $archlib/CORE/$libperl; then
+- rm -f preload
+- cat <<'EOT' > preload
+-#! /bin/sh
+-lib=$1
+-shift
+-test -r $lib && export LD_PRELOAD="$lib $LD_PRELOAD"
+-exec "$@"
+-EOT
+- chmod 755 preload
+- ldlibpth="$ldlibpth `pwd`/preload `pwd`/$libperl"
+- fi
++ echo linux libraries overwritten by cross-compile patches
+ ;;
+ os390) test -f /bin/env && ldlibpth="/bin/env $ldlibpth"
+ ;;
+@@ -401,9 +390,19 @@
+ .c.s:
+ $(CCCMDSRC) -S $*.c
+
+-all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT) extra.pods $(private) $(unidatafiles) $(public) $(dynamic_ext) $(nonxs_ext) extras.make
+- @echo " ";
+- @echo " Everything is up to date. Type '$(MAKE) test' to run test suite."
++#all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT) extra.pods $(private) $(unidatafiles) $(public) $(dynamic_ext) $(nonxs_ext) extras.make
++# @echo " ";
++# @echo " Everything is up to date. Type '$(MAKE) test' to run test suite."
++
++all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT)
++
++more: extra.pods $(private) $(public)
++
++more2: $(dynamic_ext)
++
++more3: $(nonxs_ext)
++
++more4: extras.make
+
+ .PHONY: all compile translators utilities
+
+@@ -413,10 +412,10 @@
+ cd x2p; $(MAKE) compile;
+ cd pod; $(MAKE) compile;
+
+-translators: miniperl$(EXE_EXT) $(CONFIGPM) FORCE
++translators: $(CONFIGPM) FORCE
+ @echo " "; echo " Making x2p stuff"; cd x2p; $(LDLIBPTH) $(MAKE) all
+
+-utilities: miniperl$(EXE_EXT) $(CONFIGPM) $(plextract) lib/lib.pm FORCE
++utilities: $(CONFIGPM) $(plextract) lib/lib.pm FORCE
+ @echo " "; echo " Making utilities"; cd utils; $(LDLIBPTH) $(MAKE) all
+
+
+@@ -550,7 +549,7 @@
+ case "$useshrplib" in
+ true)
+ $spitshell >>Makefile <<'!NO!SUBS!'
+- $(LD) -o $@ $(SHRPLDFLAGS) perl$(OBJ_EXT) $(obj) $(libs)
++ $(LD) -o $@ $(SHRPLDFLAGS) perl$(OBJ_EXT) $(obj) $(libs) -Wl,-soname,libperl.so.5
+ !NO!SUBS!
+ case "$osname" in
+ aix)
+@@ -591,7 +590,9 @@
+ $(CC) -o miniperl $(CLDFLAGS) \
+ `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
+ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perl$(OBJ_EXT) $(libs)
+- $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
++ mv -f miniperl miniperl-target
++ ln -s hostperl miniperl
++# $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ !NO!SUBS!
+ ;;
+ next4*)
+@@ -599,7 +600,9 @@
+ miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
+ $(CC) -o miniperl `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
+ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perl$(OBJ_EXT) $(libs)
+- $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
++ mv -f miniperl miniperl-target
++ ln -s hostperl miniperl
++# $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ !NO!SUBS!
+ ;;
+ darwin*)
+@@ -620,7 +623,9 @@
+ -@rm -f miniperl.xok
+ $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o miniperl \
+ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs)
+- $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
++ mv -f miniperl miniperl-target
++ ln -s hostperl miniperl
++# $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ !NO!SUBS!
+ ;;
+ *)
+@@ -629,7 +634,9 @@
+ -@rm -f miniperl.xok
+ $(LDLIBPTH) $(CC) $(CLDFLAGS) -o miniperl \
+ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs)
+- $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
++ mv -f miniperl miniperl-target
++ ln -s hostperl miniperl
++# $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ !NO!SUBS!
+ ;;
+ esac
+@@ -766,7 +773,7 @@
+ # We need to autosplit in two steps because VOS can't handle so many args
+ #
+ .PHONY: preplibrary
+-preplibrary: miniperl$(EXE_EXT) $(CONFIGPM) lib/lib.pm $(PREPLIBRARY_LIBPERL)
++preplibrary: $(CONFIGPM) lib/lib.pm $(PREPLIBRARY_LIBPERL)
+ @sh ./makedir lib/auto
+ @echo " AutoSplitting perl library"
+ $(LDLIBPTH) ./miniperl -Ilib -e 'use AutoSplit; \
+@@ -775,35 +782,35 @@
+ autosplit_lib_modules(@ARGV)' lib/*/*.pm
+ $(MAKE) lib/re.pm
+
+-lib/Config.pod: config.sh miniperl$(EXE_EXT) configpm Porting/Glossary
++lib/Config.pod: config.sh configpm Porting/Glossary
+ $(LDLIBPTH) ./miniperl -Ilib configpm --heavy=lib/Config_heavy.pl lib/Config.pm
+
+ $(CONFIGPM): lib/Config.pod
+
+-lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl$(EXE_EXT) minimod.pl $(CONFIGPM)
++lib/ExtUtils/Miniperl.pm: miniperlmain.c minimod.pl $(CONFIGPM)
+ $(LDLIBPTH) ./miniperl minimod.pl > lib/ExtUtils/Miniperl.pm
+
+ lib/re.pm: ext/re/re.pm
+ cp ext/re/re.pm lib/re.pm
+
+-$(plextract): miniperl$(EXE_EXT) $(CONFIGPM) x2p/s2p
++$(plextract): $(CONFIGPM) x2p/s2p
+ @-rm -f $@
+ $(LDLIBPTH) ./miniperl -I`pwd`/lib $@.PL
+
+-x2p/s2p: miniperl$(EXE_EXT) $(CONFIGPM) x2p/s2p.PL
++x2p/s2p: $(CONFIGPM) x2p/s2p.PL
+ cd x2p; $(LDLIBPTH) $(MAKE) s2p
+
+-lib/lib.pm: miniperl$(EXE_EXT) $(CONFIGPM)
++lib/lib.pm: $(CONFIGPM)
+ @-rm -f $@
+ $(LDLIBPTH) ./miniperl -Ilib lib/lib_pm.PL
+
+ unidatafiles $(unidatafiles): uni.data
+
+-uni.data: miniperl$(EXE_EXT) $(CONFIGPM) lib/unicore/mktables
++uni.data: $(CONFIGPM) lib/unicore/mktables
+ cd lib/unicore && $(LDLIBPTH) ../../miniperl -I../../lib mktables -w
+ touch uni.data
+
+-extra.pods: miniperl$(EXE_EXT)
++extra.pods:
+ -@test -f extra.pods && rm -f `cat extra.pods`
+ -@rm -f extra.pods
+ -@for x in `grep -l '^=[a-z]' README.* | grep -v README.vms` ; do \
+@@ -850,18 +857,7 @@
+ INSTALL_DEPENDENCE = all
+
+ install.perl: $(INSTALL_DEPENDENCE) installperl
+- if [ -n "$(COMPILE)" ]; \
+- then \
+- cd utils; $(MAKE) compile; \
+- cd ../x2p; $(MAKE) compile; \
+- cd ../pod; $(MAKE) compile; \
+- else :; \
+- fi
+- $(LDLIBPTH) ./perl installperl --destdir=$(DESTDIR) $(INSTALLFLAGS) $(STRIPFLAGS)
+- $(MAKE) extras.install
+-
+-install.man: all installman
+- $(LDLIBPTH) ./perl installman --destdir=$(DESTDIR) $(INSTALLFLAGS)
++ ./hostperl -Ifake_config_library -Ilib -MConfig installperl $(INSTALLFLAGS) $(STRIPFLAGS)
+
+ # XXX Experimental. Hardwired values, but useful for testing.
+ # Eventually Configure could ask for some of these values.
+@@ -978,16 +974,16 @@
+ #
+ # DynaLoader may be needed for extensions that use Makefile.PL.
+
+-$(DYNALOADER): miniperl$(EXE_EXT) preplibrary FORCE
++$(DYNALOADER): preplibrary FORCE
+ @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
+
+-d_dummy $(dynamic_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
++d_dummy $(dynamic_ext): preplibrary $(DYNALOADER) FORCE
+ @$(LDLIBPTH) sh ext/util/make_ext dynamic $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
+
+-s_dummy $(static_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
++s_dummy $(static_ext): preplibrary $(DYNALOADER) FORCE
+ @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
+
+-n_dummy $(nonxs_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
++n_dummy $(nonxs_ext): preplibrary $(DYNALOADER) FORCE
+ @$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
+
+ .PHONY: clean _tidy _mopup _cleaner1 _cleaner2 \
+@@ -1125,7 +1121,7 @@
+
+ test_prep_pre: preplibrary utilities $(nonxs_ext)
+
+-test_prep: test_prep_pre miniperl$(EXE_EXT) $(unidatafiles) perl$(EXE_EXT) $(dynamic_ext) $(TEST_PERL_DLL)
++test_prep: test_prep_pre $(unidatafiles) perl$(EXE_EXT) $(dynamic_ext) $(TEST_PERL_DLL)
+ PERL=./perl $(MAKE) _test_prep
+
+ _test_tty:
+@@ -1238,7 +1234,7 @@
+
+ # Can't depend on lib/Config.pm because that might be where miniperl
+ # is crashing.
+-minitest: miniperl$(EXE_EXT) lib/re.pm minitest.prep
++minitest: lib/re.pm minitest.prep
+ - cd t && (rm -f perl$(EXE_EXT); $(LNS) ../miniperl$(EXE_EXT) perl$(EXE_EXT)) \
+ && $(LDLIBPTH) ./perl TEST -minitest base/*.t comp/*.t cmd/*.t run/*.t io/*.t op/*.t uni/*.t </dev/tty
+
diff --git a/packages/perl/perl-5.8.8/Makefile.patch b/packages/perl/perl-5.8.8/Makefile.patch
new file mode 100644
index 0000000000..c78a39b178
--- /dev/null
+++ b/packages/perl/perl-5.8.8/Makefile.patch
@@ -0,0 +1,27 @@
+--- perl-5.8.8/Cross/Makefile 2007/04/06 00:47:46 1.1
++++ perl-5.8.8/Cross/Makefile 2007/04/06 00:48:04
+@@ -12,7 +12,7 @@
+
+ export CC = $(CROSS)gcc
+ export CXX = $(CROSS)g++
+-export LD = $(CROSS)ld
++export LD = $(CC)
+ export STRIP = $(CROSS)strip
+ export AR = $(CROSS)ar
+ export RANLIB = $(CROSS)ranlib
+@@ -58,11 +58,11 @@
+ $(TOPDIR)/generate_config_sh config.sh-$(SYS) > $(TOPDIR)/../config.sh
+ cd $(TOPDIR)/.. ; ./Configure -S ; make depend ; make ; make more
+ cd $(TOPDIR)/.. ; mkdir -p fake_config_library ; cp lib/Config.pm fake_config_library
+- cd $(TOPDIR)/.. ; $(MAKE) more2 "PERLRUN=/usr/bin/perl -I$(TOPDIR)/../fake_config_library -MConfig"
+- cd $(TOPDIR)/.. ; $(MAKE) more3 "PERLRUN=/usr/bin/perl -I$(TOPDIR)/../fake_config_library -MConfig"
+- cd $(TOPDIR)/.. ; $(MAKE) more4 "PERLRUN=/usr/bin/perl -I$(TOPDIR)/../fake_config_library -MConfig"
++ cd $(TOPDIR)/.. ; $(MAKE) more2 "PERLRUN=hostperl -I$(TOPDIR)/../fake_config_library -MConfig"
++ cd $(TOPDIR)/.. ; $(MAKE) more3 "PERLRUN=hostperl -I$(TOPDIR)/../fake_config_library -MConfig"
++ cd $(TOPDIR)/.. ; $(MAKE) more4 "PERLRUN=hostperl -I$(TOPDIR)/../fake_config_library -MConfig"
+ cd $(TOPDIR)/.. ; rm -rf install_me_here
+- cd $(TOPDIR)/.. ; make install-strip
++# cd $(TOPDIR)/.. ; make install-strip
+ cd $(TOPDIR)/.. ; sh -x Cross/warp
+
+
diff --git a/packages/perl/perl-5.8.8/config.sh b/packages/perl/perl-5.8.8/config.sh
new file mode 100644
index 0000000000..ac8d237cac
--- /dev/null
+++ b/packages/perl/perl-5.8.8/config.sh
@@ -0,0 +1,1021 @@
+#!/bin/sh
+#
+# This file was produced by running the Configure script. It holds all the
+# definitions figured out by Configure. Should you modify one of these values,
+# do not forget to propagate your changes by running "Configure -der". You may
+# instead choose to run each of the .SH files by yourself, or "Configure -S".
+#
+
+# Package name : perl5
+# Source directory : .
+# Configuration time: Thu Apr 5 19:20:23 EST 2007
+# Configured by : Open Embedded
+# Target system : linux birgitte 2.6.21-rc5 #63 tue mar 27 14:41:54 est 2007 i686 gnulinux
+
+Author=''
+Date='$Date'
+Header=''
+Id='$Id'
+Locker=''
+Log='$Log'
+Mcc='Mcc'
+RCSfile='$RCSfile'
+Revision='$Revision'
+Source=''
+State=''
+_a='.a'
+_exe=''
+_o='.o'
+afs='false'
+afsroot='/afs'
+ansi2knr=''
+aphostname=''
+api_revision='5'
+api_subversion='0'
+api_version='8'
+api_versionstring='5.8.0'
+ar='ar'
+archlib='/usr/lib/perl/5.8'
+archlibexp='/usr/lib/perl/5.8'
+archname64=''
+archname='@ARCH@-thread-multi'
+archobjs=''
+asctime_r_proto='REENTRANT_PROTO_B_SB'
+awk='awk'
+baserev='5.0'
+bash=''
+bin='/usr/bin'
+binexp='/usr/bin'
+bison='bison'
+byacc='byacc'
+c=''
+castflags='0'
+cat='cat'
+cc='gcc'
+cccdlflags='-fPIC'
+ccdlflags='-Wl,-E'
+ccname='gcc'
+ccversion=''
+cf_by='Open Embedded'
+cf_email='Open Embedded@localhost.localdomain'
+cf_time='Thu Apr 5 23:06:39 EST 2007'
+charsize='1'
+chgrp=''
+chmod='chmod'
+chown=''
+clocktype='clock_t'
+comm='comm'
+compress=''
+contains='grep'
+cp='cp'
+cpio=''
+cpp='cpp'
+cpp_stuff='42'
+cpplast='-'
+cppminus='-'
+cpprun='gcc -E'
+cppstdin='gcc -E'
+crypt_r_proto='REENTRANT_PROTO_B_CCS'
+cryptlib=''
+csh='csh'
+ctermid_r_proto='0'
+ctime_r_proto='REENTRANT_PROTO_B_SB'
+d_Gconvert='gcvt((x),(n),(b))'
+d_PRIEUldbl='define'
+d_PRIFUldbl='define'
+d_PRIGUldbl='define'
+d_PRIXU64='define'
+d_PRId64='define'
+d_PRIeldbl='define'
+d_PRIfldbl='define'
+d_PRIgldbl='define'
+d_PRIi64='define'
+d_PRIo64='define'
+d_PRIu64='define'
+d_PRIx64='define'
+d_SCNfldbl='define'
+d__fwalk='undef'
+d_access='define'
+d_accessx='undef'
+d_aintl='undef'
+d_alarm='define'
+d_archlib='define'
+d_asctime_r='define'
+d_atolf='undef'
+d_atoll='define'
+d_attribute_format='define'
+d_attribute_malloc='define'
+d_attribute_nonnull='define'
+d_attribute_noreturn='define'
+d_attribute_pure='define'
+d_attribute_unused='define'
+d_attribute_warn_unused_result='undef'
+d_bcmp='define'
+d_bcopy='define'
+d_bsd='undef'
+d_bsdgetpgrp='undef'
+d_bsdsetpgrp='undef'
+d_bzero='define'
+d_casti32='undef'
+d_castneg='define'
+d_charvspr='define'
+d_chown='define'
+d_chroot='define'
+d_chsize='undef'
+d_class='undef'
+d_clearenv='define'
+d_closedir='define'
+d_cmsghdr_s='define'
+d_const='define'
+d_copysignl='define'
+d_crypt='define'
+d_crypt_r='define'
+d_csh='undef'
+d_ctermid_r='undef'
+d_ctime_r='define'
+d_cuserid='define'
+d_dbl_dig='define'
+d_dbminitproto='undef'
+d_difftime='define'
+d_dirfd='define'
+d_dirnamlen='undef'
+d_dlerror='define'
+d_dlopen='define'
+d_dlsymun='undef'
+d_dosuid='undef'
+d_drand48_r='define'
+d_drand48proto='define'
+d_dup2='define'
+d_eaccess='undef'
+d_endgrent='define'
+d_endgrent_r='undef'
+d_endhent='define'
+d_endhostent_r='undef'
+d_endnent='define'
+d_endnetent_r='undef'
+d_endpent='define'
+d_endprotoent_r='undef'
+d_endpwent='define'
+d_endpwent_r='undef'
+d_endsent='define'
+d_endservent_r='undef'
+d_eofnblk='define'
+d_eunice='undef'
+d_faststdio='undef'
+d_fchdir='define'
+d_fchmod='define'
+d_fchown='define'
+d_fcntl='define'
+d_fcntl_can_lock='define'
+d_fd_macros='define'
+d_fd_set='define'
+d_fds_bits='define'
+d_fgetpos='define'
+d_finite='define'
+d_finitel='define'
+d_flexfnam='define'
+d_flock='define'
+d_flockproto='define'
+d_fork='define'
+d_fp_class='undef'
+d_fpathconf='define'
+d_fpclass='undef'
+d_fpclassify='undef'
+d_fpclassl='undef'
+d_fpos64_t='undef'
+d_frexpl='define'
+d_fs_data_s='undef'
+d_fseeko='define'
+d_fsetpos='define'
+d_fstatfs='define'
+d_fstatvfs='define'
+d_fsync='define'
+d_ftello='define'
+d_ftime='undef'
+d_futimes='define'
+d_getcwd='define'
+d_getespwnam='undef'
+d_getfsstat='undef'
+d_getgrent='define'
+d_getgrent_r='define'
+d_getgrgid_r='define'
+d_getgrnam_r='define'
+d_getgrps='define'
+d_gethbyaddr='define'
+d_gethbyname='define'
+d_gethent='define'
+d_gethname='define'
+d_gethostbyaddr_r='define'
+d_gethostbyname_r='define'
+d_gethostent_r='define'
+d_gethostprotos='define'
+d_getitimer='define'
+d_getlogin='define'
+d_getlogin_r='define'
+d_getmnt='undef'
+d_getmntent='define'
+d_getnbyaddr='define'
+d_getnbyname='define'
+d_getnent='define'
+d_getnetbyaddr_r='define'
+d_getnetbyname_r='define'
+d_getnetent_r='define'
+d_getnetprotos='define'
+d_getpagsz='define'
+d_getpbyname='define'
+d_getpbynumber='define'
+d_getpent='define'
+d_getpgid='define'
+d_getpgrp2='undef'
+d_getpgrp='define'
+d_getppid='define'
+d_getprior='define'
+d_getprotobyname_r='define'
+d_getprotobynumber_r='define'
+d_getprotoent_r='define'
+d_getprotoprotos='define'
+d_getprpwnam='undef'
+d_getpwent='define'
+d_getpwent_r='define'
+d_getpwnam_r='define'
+d_getpwuid_r='define'
+d_getsbyname='define'
+d_getsbyport='define'
+d_getsent='define'
+d_getservbyname_r='define'
+d_getservbyport_r='define'
+d_getservent_r='define'
+d_getservprotos='define'
+d_getspnam='define'
+d_getspnam_r='undef'
+d_gettimeod='define'
+d_gmtime_r='define'
+d_gnulibc='define'
+d_grpasswd='define'
+d_hasmntopt='define'
+d_htonl='define'
+d_ilogbl='define'
+d_index='undef'
+d_inetaton='define'
+d_int64_t='define'
+d_isascii='define'
+d_isfinite='undef'
+d_isinf='define'
+d_isnan='define'
+d_isnanl='define'
+d_killpg='define'
+d_lchown='define'
+d_ldbl_dig='define'
+d_libm_lib_version='define'
+d_link='define'
+d_localtime_r='define'
+d_locconv='define'
+d_lockf='define'
+d_longdbl='define'
+d_longlong='define'
+d_lseekproto='define'
+d_lstat='define'
+d_madvise='define'
+d_malloc_good_size='undef'
+d_malloc_size='undef'
+d_mblen='define'
+d_mbstowcs='define'
+d_mbtowc='define'
+d_memchr='define'
+d_memcmp='define'
+d_memcpy='define'
+d_memmove='define'
+d_memset='define'
+d_mkdir='define'
+d_mkdtemp='define'
+d_mkfifo='define'
+d_mkstemp='define'
+d_mkstemps='undef'
+d_mktime='define'
+d_mmap='define'
+d_modfl='define'
+d_modfl_pow32_bug='undef'
+d_modflproto='define'
+d_mprotect='define'
+d_msg='define'
+d_msg_ctrunc='define'
+d_msg_dontroute='define'
+d_msg_oob='define'
+d_msg_peek='define'
+d_msg_proxy='define'
+d_msgctl='define'
+d_msgget='define'
+d_msghdr_s='define'
+d_msgrcv='define'
+d_msgsnd='define'
+d_msync='define'
+d_munmap='define'
+d_mymalloc='undef'
+d_nice='define'
+d_nl_langinfo='define'
+d_nv_zero_is_allbits_zero='define'
+d_off64_t='define'
+d_old_pthread_create_joinable='undef'
+d_oldpthreads='undef'
+d_oldsock='undef'
+d_open3='define'
+d_pathconf='define'
+d_pause='define'
+d_perl_otherlibdirs='define'
+d_phostname='undef'
+d_pipe='define'
+d_poll='define'
+d_portable='define'
+d_procselfexe='define'
+d_pthread_atfork='define'
+d_pthread_attr_setscope='define'
+d_pthread_yield='define'
+d_pwage='undef'
+d_pwchange='undef'
+d_pwclass='undef'
+d_pwcomment='undef'
+d_pwexpire='undef'
+d_pwgecos='define'
+d_pwpasswd='define'
+d_pwquota='undef'
+d_qgcvt='define'
+d_quad='define'
+d_random_r='define'
+d_readdir64_r='define'
+d_readdir='define'
+d_readdir_r='define'
+d_readlink='define'
+d_readv='define'
+d_recvmsg='define'
+d_rename='define'
+d_rewinddir='define'
+d_rmdir='define'
+d_safebcpy='undef'
+d_safemcpy='undef'
+d_sanemcmp='define'
+d_sbrkproto='define'
+d_scalbnl='define'
+d_sched_yield='define'
+d_scm_rights='define'
+d_seekdir='define'
+d_select='define'
+d_sem='define'
+d_semctl='define'
+d_semctl_semid_ds='define'
+d_semctl_semun='define'
+d_semget='define'
+d_semop='define'
+d_sendmsg='define'
+d_setegid='define'
+d_seteuid='define'
+d_setgrent='define'
+d_setgrent_r='undef'
+d_setgrps='define'
+d_sethent='define'
+d_sethostent_r='undef'
+d_setitimer='define'
+d_setlinebuf='define'
+d_setlocale='define'
+d_setlocale_r='undef'
+d_setnent='define'
+d_setnetent_r='undef'
+d_setpent='define'
+d_setpgid='define'
+d_setpgrp2='undef'
+d_setpgrp='define'
+d_setprior='define'
+d_setproctitle='undef'
+d_setprotoent_r='undef'
+d_setpwent='define'
+d_setpwent_r='undef'
+d_setregid='define'
+d_setresgid='define'
+d_setresuid='define'
+d_setreuid='define'
+d_setrgid='undef'
+d_setruid='undef'
+d_setsent='define'
+d_setservent_r='undef'
+d_setsid='define'
+d_setvbuf='define'
+d_sfio='undef'
+d_shm='define'
+d_shmat='define'
+d_shmatprototype='define'
+d_shmctl='define'
+d_shmdt='define'
+d_shmget='define'
+d_sigaction='define'
+d_sigprocmask='define'
+d_sigsetjmp='define'
+d_sockatmark='define'
+d_sockatmarkproto='define'
+d_socket='define'
+d_socklen_t='define'
+d_sockpair='define'
+d_socks5_init='undef'
+d_sprintf_returns_strlen='define'
+d_sqrtl='define'
+d_srand48_r='define'
+d_srandom_r='define'
+d_sresgproto='define'
+d_sresuproto='define'
+d_statblks='define'
+d_statfs_f_flags='undef'
+d_statfs_s='define'
+d_statvfs='define'
+d_stdio_cnt_lval='undef'
+d_stdio_ptr_lval='undef'
+d_stdio_ptr_lval_nochange_cnt='undef'
+d_stdio_ptr_lval_sets_cnt='undef'
+d_stdio_stream_array='undef'
+d_stdiobase='undef'
+d_stdstdio='undef'
+d_strchr='define'
+d_strcoll='define'
+d_strctcpy='define'
+d_strerrm='strerror(e)'
+d_strerror='define'
+d_strerror_r='define'
+d_strftime='define'
+d_strlcat='undef'
+d_strlcpy='undef'
+d_strtod='define'
+d_strtol='define'
+d_strtold='define'
+d_strtoll='define'
+d_strtoq='define'
+d_strtoul='define'
+d_strtoull='define'
+d_strtouq='define'
+d_strxfrm='define'
+d_suidsafe='undef'
+d_symlink='define'
+d_syscall='define'
+d_syscallproto='define'
+d_sysconf='define'
+d_sysernlst=''
+d_syserrlst='define'
+d_system='define'
+d_tcgetpgrp='define'
+d_tcsetpgrp='define'
+d_telldir='define'
+d_telldirproto='define'
+d_time='define'
+d_times='define'
+d_tm_tm_gmtoff='define'
+d_tm_tm_zone='define'
+d_tmpnam_r='define'
+d_truncate='define'
+d_ttyname_r='define'
+d_tzname='define'
+d_ualarm='define'
+d_umask='define'
+d_uname='define'
+d_union_semun='undef'
+d_unordered='undef'
+d_unsetenv='define'
+d_usleep='define'
+d_usleepproto='define'
+d_ustat='define'
+d_vendorarch='define'
+d_vendorbin='define'
+d_vendorlib='define'
+d_vendorscript='define'
+d_vfork='undef'
+d_void_closedir='undef'
+d_voidsig='define'
+d_voidtty=''
+d_volatile='define'
+d_vprintf='define'
+d_wait4='define'
+d_waitpid='define'
+d_wcstombs='define'
+d_wctomb='define'
+d_writev='define'
+d_xenix='undef'
+date='date'
+db_hashtype='u_int32_t'
+db_prefixtype='size_t'
+db_version_major=''
+db_version_minor=''
+db_version_patch=''
+defvoidused='15'
+direntrytype='struct dirent'
+dlext='so'
+dlsrc='dl_dlopen.xs'
+doublesize='8'
+drand01='drand48()'
+drand48_r_proto='REENTRANT_PROTO_I_ST'
+dynamic_ext='attrs B ByteLoader Cwd Data/Dumper Devel/DProf Devel/Peek Devel/PPPort Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode PerlIO/encoding PerlIO/scalar PerlIO/via POSIX re SDBM_File Socket Storable Sys/Hostname Sys/Syslog threads Time/HiRes Unicode/Normalize XS/APItest XS/Typemap threads/shared'
+eagain='EAGAIN'
+ebcdic='undef'
+echo='echo'
+egrep='egrep'
+emacs=''
+endgrent_r_proto='0'
+endhostent_r_proto='0'
+endnetent_r_proto='0'
+endprotoent_r_proto='0'
+endpwent_r_proto='0'
+endservent_r_proto='0'
+eunicefix=':'
+exe_ext=''
+expr='expr'
+extensions='attrs B ByteLoader Cwd Data/Dumper Devel/DProf Devel/Peek Devel/PPPort Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode PerlIO/encoding PerlIO/scalar PerlIO/via POSIX re SDBM_File Socket Storable Sys/Hostname Sys/Syslog threads Time/HiRes Unicode/Normalize XS/APItest XS/Typemap threads/shared Errno'
+extras=''
+fflushNULL='define'
+fflushall='undef'
+find=''
+firstmakefile='makefile'
+flex=''
+fpossize='16'
+fpostype='fpos_t'
+freetype='void'
+from=':'
+full_ar='/usr/bin/ar'
+full_csh='/bin/csh'
+full_sed='/bin/sed'
+gccansipedantic=''
+gccosandvers=''
+getgrent_r_proto='REENTRANT_PROTO_I_SBWR'
+getgrgid_r_proto='REENTRANT_PROTO_I_TSBWR'
+getgrnam_r_proto='REENTRANT_PROTO_I_CSBWR'
+gethostbyaddr_r_proto='REENTRANT_PROTO_I_TsISBWRE'
+gethostbyname_r_proto='REENTRANT_PROTO_I_CSBWRE'
+gethostent_r_proto='REENTRANT_PROTO_I_SBWRE'
+getlogin_r_proto='REENTRANT_PROTO_I_BW'
+getnetbyaddr_r_proto='REENTRANT_PROTO_I_uISBWRE'
+getnetbyname_r_proto='REENTRANT_PROTO_I_CSBWRE'
+getnetent_r_proto='REENTRANT_PROTO_I_SBWRE'
+getprotobyname_r_proto='REENTRANT_PROTO_I_CSBWR'
+getprotobynumber_r_proto='REENTRANT_PROTO_I_ISBWR'
+getprotoent_r_proto='REENTRANT_PROTO_I_SBWR'
+getpwent_r_proto='REENTRANT_PROTO_I_SBWR'
+getpwnam_r_proto='REENTRANT_PROTO_I_CSBWR'
+getpwuid_r_proto='REENTRANT_PROTO_I_TSBWR'
+getservbyname_r_proto='REENTRANT_PROTO_I_CCSBWR'
+getservbyport_r_proto='REENTRANT_PROTO_I_ICSBWR'
+getservent_r_proto='REENTRANT_PROTO_I_SBWR'
+gidsign='1'
+gidsize='4'
+gidtype='gid_t'
+glibpth='/usr/shlib /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib '
+gmake='gmake'
+gmtime_r_proto='REENTRANT_PROTO_S_TS'
+grep='grep'
+groupcat='cat /etc/group'
+groupstype='gid_t'
+gzip='gzip'
+h_fcntl='false'
+h_sysfile='true'
+hint='recommended'
+hostcat='cat /etc/hosts'
+html1dir=' '
+html1direxp=''
+html3dir=' '
+html3direxp=''
+i16size='2'
+i16type='short'
+i32size='4'
+i64size='8'
+i8size='1'
+i8type='char'
+i_arpainet='define'
+i_bsdioctl=''
+i_crypt='define'
+i_db='undef'
+i_dbm='undef'
+i_dirent='define'
+i_dld='undef'
+i_dlfcn='define'
+i_fcntl='undef'
+i_float='define'
+i_fp='undef'
+i_fp_class='undef'
+i_gdbm='undef'
+i_grp='define'
+i_ieeefp='undef'
+i_inttypes='define'
+i_langinfo='define'
+i_libutil='undef'
+i_limits='define'
+i_locale='define'
+i_machcthr='undef'
+i_malloc='define'
+i_math='define'
+i_memory='undef'
+i_mntent='define'
+i_ndbm='undef'
+i_netdb='define'
+i_neterrno='undef'
+i_netinettcp='define'
+i_niin='define'
+i_poll='define'
+i_prot='undef'
+i_pthread='define'
+i_pwd='define'
+i_rpcsvcdbm='undef'
+i_sfio='undef'
+i_sgtty='undef'
+i_shadow='define'
+i_socks='undef'
+i_stdarg='define'
+i_stddef='define'
+i_stdlib='define'
+i_string='define'
+i_sunmath='undef'
+i_sysaccess='undef'
+i_sysdir='define'
+i_sysfile='define'
+i_sysfilio='undef'
+i_sysin='undef'
+i_sysioctl='define'
+i_syslog='define'
+i_sysmman='define'
+i_sysmode='undef'
+i_sysmount='define'
+i_sysndir='undef'
+i_sysparam='define'
+i_sysresrc='define'
+i_syssecrt='undef'
+i_sysselct='define'
+i_syssockio='undef'
+i_sysstat='define'
+i_sysstatfs='define'
+i_sysstatvfs='define'
+i_systime='define'
+i_systimek='undef'
+i_systimes='define'
+i_systypes='define'
+i_sysuio='define'
+i_sysun='define'
+i_sysutsname='define'
+i_sysvfs='define'
+i_syswait='define'
+i_termio='undef'
+i_termios='define'
+i_time='define'
+i_unistd='define'
+i_ustat='define'
+i_utime='define'
+i_values='define'
+i_varargs='undef'
+i_varhdr='stdarg.h'
+i_vfork='undef'
+ignore_versioned_solibs='y'
+inc_version_list=' '
+inc_version_list_init='0'
+incpath=''
+inews=''
+installarchlib='@DESTDIR@/usr/lib/perl/5.8'
+installbin='@DESTDIR@/usr/bin'
+installhtml1dir=''
+installhtml3dir=''
+installman1dir='@DESTDIR@/usr/share/man/man1'
+installman3dir='@DESTDIR@/usr/share/man/man3'
+installprefix='@DESTDIR@/usr'
+installprefixexp='@DESTDIR@/usr'
+installprivlib='@DESTDIR@/usr/share/perl/5.8'
+installscript='@DESTDIR@/usr/bin'
+installsitearch='@DESTDIR@/usr/local/lib/perl/5.8.8'
+installsitebin='@DESTDIR@/usr/local/bin'
+installsitehtml1dir=''
+installsitehtml3dir=''
+installsitelib='@DESTDIR@/usr/local/share/perl/5.8.8'
+installsiteman1dir='@DESTDIR@/usr/local/man/man1'
+installsiteman3dir='@DESTDIR@/usr/local/man/man3'
+installsitescript='@DESTDIR@/usr/local/bin'
+installstyle='lib/perl5'
+installusrbinperl='define'
+installvendorarch='@DESTDIR@/usr/lib/perl5'
+installvendorbin='@DESTDIR@/usr/bin'
+installvendorhtml1dir=''
+installvendorhtml3dir=''
+installvendorlib='@DESTDIR@/usr/share/perl5'
+installvendorman1dir='@DESTDIR@/usr/share/man/man1'
+installvendorman3dir='@DESTDIR@/usr/share/man/man3'
+installvendorscript='@DESTDIR@/usr/bin'
+intsize='4'
+issymlink='test -h'
+ivdformat='"ld"'
+ivtype='long'
+known_extensions='attrs B ByteLoader Cwd Data/Dumper DB_File Devel/DProf Devel/Peek Devel/PPPort Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode PerlIO/encoding PerlIO/scalar PerlIO/via POSIX re SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread threads Time/HiRes Unicode/Normalize XS/APItest XS/Typemap threads/shared'
+ksh=''
+ld='gcc'
+lddlflags='-shared -L/usr/local/lib'
+ldflags=' -L/usr/local/lib'
+ldflags_uselargefiles=''
+ldlibpthname='LD_LIBRARY_PATH'
+less='less'
+lib_ext='.a'
+libperl='libperl.so'
+libpth='/usr/local/lib /lib /usr/lib'
+line=''
+lint=''
+lkflags=''
+ln='ln'
+lns='/bin/ln -s'
+localtime_r_proto='REENTRANT_PROTO_S_TS'
+locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
+loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
+longlongsize='8'
+lp=''
+lpr=''
+ls='ls'
+lseeksize='8'
+lseektype='off_t'
+mail=''
+mailx=''
+make='make'
+make_set_make='#'
+mallocobj=''
+mallocsrc=''
+malloctype='void *'
+man1dir='/usr/share/man/man1'
+man1direxp='/usr/share/man/man1'
+man1ext='1'
+man3dir='/usr/share/man/man3'
+man3direxp='/usr/share/man/man3'
+man3ext='3pm'
+mips_type=''
+mistrustnm=''
+mkdir='mkdir'
+mmaptype='void *'
+modetype='mode_t'
+more='more'
+multiarch='undef'
+mv=''
+myarchname='@ARCH@'
+mydomain='.localdomain'
+myhostname='localhost'
+n='-n'
+need_va_copy='undef'
+netdb_hlen_type='size_t'
+netdb_host_type='const void *'
+netdb_name_type='const char *'
+netdb_net_type='in_addr_t'
+nm='nm'
+nm_opt=''
+nm_so_opt='--dynamic'
+nonxs_ext='Errno'
+nroff='nroff'
+nvEUformat='"E"'
+nvFUformat='"F"'
+nvGUformat='"G"'
+nveformat='"e"'
+nvfformat='"f"'
+nvgformat='"g"'
+nvsize='8'
+nvtype='double'
+o_nonblock='O_NONBLOCK'
+obj_ext='.o'
+old_pthread_create_joinable=''
+optimize='-O2'
+orderlib='false'
+osname='linux'
+otherlibdirs=' '
+package='perl5'
+pager='/usr/bin/less -isr'
+passcat='cat /etc/passwd'
+patchlevel='8'
+path_sep=':'
+perl5='hostperl'
+perl=''
+perl_patchlevel=''
+perladmin='root@localhost'
+perllibs='-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc'
+perlpath='hostperl'
+pg='pg'
+phostname=''
+pidtype='pid_t'
+plibpth=''
+pmake=''
+pr=''
+prefix='/usr'
+prefixexp='/usr'
+privlib='/usr/share/perl/5.8'
+privlibexp='/usr/share/perl/5.8'
+procselfexe='"/proc/self/exe"'
+prototype='define'
+randbits='48'
+randfunc='drand48'
+random_r_proto='REENTRANT_PROTO_I_St'
+randseedtype='long'
+ranlib=':'
+rd_nodata='-1'
+readdir64_r_proto='REENTRANT_PROTO_I_TSR'
+readdir_r_proto='REENTRANT_PROTO_I_TSR'
+revision='5'
+rm='rm'
+rmail=''
+run=''
+runnm='false'
+sPRIEUldbl='"LE"'
+sPRIFUldbl='"LF"'
+sPRIGUldbl='"LG"'
+sPRIeldbl='"Le"'
+sPRIfldbl='"Lf"'
+sPRIgldbl='"Lg"'
+sSCNfldbl='"Lf"'
+sched_yield='sched_yield()'
+scriptdir='/usr/bin'
+scriptdirexp='/usr/bin'
+sed='sed'
+seedfunc='srand48'
+selecttype='fd_set *'
+sendmail=''
+setgrent_r_proto='0'
+sethostent_r_proto='0'
+setlocale_r_proto='0'
+setnetent_r_proto='0'
+setprotoent_r_proto='0'
+setpwent_r_proto='0'
+setservent_r_proto='0'
+sh='/bin/sh'
+shar=''
+sharpbang='#!'
+shmattype='void *'
+shortsize='2'
+shrpenv=''
+shsharp='true'
+sig_count='65'
+sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 6 17 29 31 '
+sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 31, 0'
+sig_size='69'
+sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS NUM32 NUM33 RTMIN NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 NUM60 NUM61 NUM62 NUM63 RTMAX IOT CLD POLL UNUSED '
+sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SYS", "NUM32", "NUM33", "RTMIN", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM54", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "NUM62", "NUM63", "RTMAX", "IOT", "CLD", "POLL", "UNUSED", 0'
+signal_t='void'
+sitearch='/usr/local/lib/perl/5.8.8'
+sitearchexp='/usr/local/lib/perl/5.8.8'
+sitebin='/usr/local/bin'
+sitebinexp='/usr/local/bin'
+sitehtml1dir=''
+sitehtml1direxp=''
+sitehtml3dir=''
+sitehtml3direxp=''
+sitelib='/usr/local/share/perl/5.8.8'
+sitelib_stem=''
+sitelibexp='/usr/local/share/perl/5.8.8'
+siteman1dir='/usr/local/man/man1'
+siteman1direxp='/usr/local/man/man1'
+siteman3dir='/usr/local/man/man3'
+siteman3direxp='/usr/local/man/man3'
+siteprefix='/usr/local'
+siteprefixexp='/usr/local'
+sitescript='/usr/local/bin'
+sitescriptexp='/usr/local/bin'
+sizetype='size_t'
+sleep=''
+smail=''
+so='so'
+sockethdr=''
+socketlib=''
+socksizetype='socklen_t'
+sort='sort'
+spackage='Perl5'
+spitshell='cat'
+srand48_r_proto='REENTRANT_PROTO_I_LS'
+srandom_r_proto='REENTRANT_PROTO_I_TS'
+src='.'
+ssizetype='ssize_t'
+startperl='#!/usr/bin/perl'
+startsh='#!/bin/sh'
+static_ext=' '
+stdchar='char'
+stdio_base='((fp)->_IO_read_base)'
+stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)'
+stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
+stdio_filbuf=''
+stdio_ptr='((fp)->_IO_read_ptr)'
+stdio_stream_array=''
+strerror_r_proto='REENTRANT_PROTO_B_IBW'
+strings='/usr/include/string.h'
+submit=''
+subversion='8'
+sysman='/usr/share/man/man1'
+tail=''
+tar=''
+targetarch=''
+tbl=''
+tee=''
+test='test'
+timeincl='/usr/include/sys/time.h /usr/include/time.h '
+timetype='time_t'
+tmpnam_r_proto='REENTRANT_PROTO_B_B'
+to=':'
+touch='touch'
+tr='tr'
+trnl='\n'
+troff=''
+ttyname_r_proto='REENTRANT_PROTO_I_IBW'
+u16size='2'
+u16type='unsigned short'
+u32size='4'
+u64size='8'
+u8size='1'
+u8type='unsigned char'
+uidsign='1'
+uidsize='4'
+uidtype='uid_t'
+uname='uname'
+uniq='uniq'
+use5005threads='undef'
+usecrosscompile='undef'
+usedl='define'
+usefaststdio='define'
+useithreads='define'
+uselargefiles='define'
+uselongdouble='undef'
+usemallocwrap='define'
+usemorebits='undef'
+usemultiplicity='define'
+usemymalloc='n'
+usenm='false'
+useopcode='true'
+useperlio='define'
+useposix='true'
+usereentrant='undef'
+usesfio='false'
+useshrplib='true'
+usesitecustomize='undef'
+usesocks='undef'
+usethreads='define'
+usevendorprefix='define'
+usevfork='false'
+usrinc='/usr/include'
+uuname=''
+uvXUformat='"lX"'
+uvoformat='"lo"'
+uvtype='unsigned long'
+uvuformat='"lu"'
+uvxformat='"lx"'
+vendorarch='/usr/lib/perl5'
+vendorarchexp='/usr/lib/perl5'
+vendorbin='/usr/bin'
+vendorbinexp='/usr/bin'
+vendorhtml1dir=' '
+vendorhtml1direxp=''
+vendorhtml3dir=' '
+vendorhtml3direxp=''
+vendorlib='/usr/share/perl5'
+vendorlib_stem=''
+vendorlibexp='/usr/share/perl5'
+vendorman1dir='/usr/share/man/man1'
+vendorman1direxp='/usr/share/man/man1'
+vendorman3dir='/usr/share/man/man3'
+vendorman3direxp='/usr/share/man/man3'
+vendorprefix='/usr'
+vendorprefixexp='/usr'
+vendorscript='/usr/bin'
+vendorscriptexp='/usr/bin'
+version='5.8.8'
+version_patchlevel_string='version 8 subversion 8'
+versiononly='undef'
+vi=''
+voidflags='15'
+xlibpth='/usr/lib/386 /lib/386'
+yacc='yacc'
+yaccflags=''
+zcat=''
+zip='zip'
+# Configure command line arguments.
+config_arg0='Configure'
+config_args='-des -Doptimize=-O2 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Open Embedded -Dinstallprefix=@DESTDIR@ -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr -Dotherlibdirs=/usr/lib/perl5/5.8.8 -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Ud_dosuid -Dd_semctl_semun -Ui_db -Ui_ndbm -Ui_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr'
+config_argc=28
+config_arg1='-des'
+config_arg2='-Doptimize=-O2'
+config_arg3='-Dmyhostname=localhost'
+config_arg4='-Dperladmin=root@localhost'
+config_arg5='-Dcc=gcc'
+config_arg6='-Dcf_by=Open Embedded'
+config_arg7='-Dinstallprefix=@DESTDIR@'
+config_arg8='-Dprefix=/usr'
+config_arg9='-Dvendorprefix=/usr'
+config_arg10='-Dsiteprefix=/usr'
+config_arg11='-Dotherlibdirs=/usr/lib/perl5/5.8.8'
+config_arg12='-Duseshrplib'
+config_arg13='-Dusethreads'
+config_arg14='-Duseithreads'
+config_arg15='-Duselargefiles'
+config_arg16='-Ud_dosuid'
+config_arg17='-Dd_semctl_semun'
+config_arg18='-Ui_db'
+config_arg19='-Ui_ndbm'
+config_arg20='-Ui_gdbm'
+config_arg21='-Di_shadow'
+config_arg22='-Di_syslog'
+config_arg23='-Dman3ext=3pm'
+config_arg24='-Duseperlio'
+config_arg25='-Dinstallusrbinperl'
+config_arg26='-Ubincompat5005'
+config_arg27='-Uversiononly'
+config_arg28='-Dpager=/usr/bin/less -isr'
+PERL_REVISION=5
+PERL_VERSION=8
+PERL_SUBVERSION=8
+PERL_API_REVISION=5
+PERL_API_VERSION=8
+PERL_API_SUBVERSION=0
+PERL_PATCHLEVEL=
+PERL_CONFIG_SH=true
diff --git a/packages/perl/perl-5.8.8/config.sh-32 b/packages/perl/perl-5.8.8/config.sh-32
new file mode 100644
index 0000000000..e22d71d8ee
--- /dev/null
+++ b/packages/perl/perl-5.8.8/config.sh-32
@@ -0,0 +1,58 @@
+alignbytes='4'
+ccflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+yaccflags=''
+ccsymbols='__GNUC_PATCHLEVEL__=5'
+cppccsymbols='__GNUC__=3 __GNUC_MINOR__=3'
+cppccsymbols='__GNUC__=3 __GNUC_MINOR__=3'
+cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -I/usr/local/include'
+cppsymbols='__ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=3 __GNU_LIBRARY__=6 _GNU_SOURCE=1 i386=1 __i386=1 __i386__=1 __i486=1 __i486__=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 linux=1 __linux=1 __linux__=1 _POSIX_C_SOURCE=199506L _POSIX_SOURCE=1 _REENTRANT=1 __STDC__=1 unix=1 __unix=1 __unix__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE=1 __USE_LARGEFILE64=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_REENTRANT=1 __USE_SVID=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 _XOPEN_SOURCE=600 _XOPEN_SOURCE_EXTENDED=1'
+d_nv_preserves_uv='define'
+d_u32align='undef'
+gccversion='3.3.5 (Debian 1:3.3.5-13)'
+getspnam_r_proto='0'
+gidformat='"lu"'
+gnulibc_version='2.3.2'
+i32type='long'
+i64type='long long'
+ivsize='4'
+gnulibc_version='2.3.2'
+libc='/lib/libc-2.3.2.so'
+libsfiles=' libnsl.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
+libsfound=' /usr/lib/libnsl.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
+ignore_versioned_solibs='y'
+libs='-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc'
+libsdirs=' /usr/lib'
+libsfiles=' libnsl.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
+libsfound=' /usr/lib/libnsl.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
+libspath=' /usr/local/lib /lib /usr/lib'
+libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m crypt sec util pthread c cposix posix ucb BSD'
+libswanted_uselargefiles=''
+perllibs='-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc'
+libsfiles=' libnsl.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
+libsfound=' /usr/lib/libnsl.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
+longdblsize='12'
+longlongsize='8'
+longsize='4'
+myuname='linux birgitte 2.6.21-rc5 #63 tue mar 27 14:41:54 est 2007 i686 gnulinux '
+nv_preserves_uv_bits='32'
+osvers='2.6.21-rc5'
+ptrsize='4'
+quadkind='3'
+quadtype='long long'
+uquadtype='unsigned long long'
+sPRIXU64='"LX"'
+sPRId64='"Ld"'
+sPRIi64='"Li"'
+sPRIo64='"Lo"'
+sPRIu64='"Lu"'
+sPRIx64='"Lx"'
+selectminbits='32'
+sizesize='4'
+u32type='unsigned long'
+u64type='unsigned long long'
+uidformat='"lu"'
+uquadtype='unsigned long long'
+use64bitall='undef'
+use64bitint='undef'
+uvsize='4'
diff --git a/packages/perl/perl-5.8.8/config.sh-32-be b/packages/perl/perl-5.8.8/config.sh-32-be
new file mode 100644
index 0000000000..a59a9abb5e
--- /dev/null
+++ b/packages/perl/perl-5.8.8/config.sh-32-be
@@ -0,0 +1 @@
+byteorder='4321'
diff --git a/packages/perl/perl-5.8.8/config.sh-32-le b/packages/perl/perl-5.8.8/config.sh-32-le
new file mode 100644
index 0000000000..10e4226567
--- /dev/null
+++ b/packages/perl/perl-5.8.8/config.sh-32-le
@@ -0,0 +1 @@
+byteorder='1234'
diff --git a/packages/perl/perl-5.8.8/config.sh-64 b/packages/perl/perl-5.8.8/config.sh-64
new file mode 100644
index 0000000000..6e58fa71a3
--- /dev/null
+++ b/packages/perl/perl-5.8.8/config.sh-64
@@ -0,0 +1,58 @@
+alignbytes='8'
+ccflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+yaccflags=''
+ccsymbols=''
+cppccsymbols=''
+cppccsymbols=''
+cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -Wdeclaration-after-statement'
+cppsymbols='__amd64=1 __amd64__=1 __ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=4 __GNUC__=4 __GNUC_MINOR__=1 __GNU_LIBRARY__=6 _GNU_SOURCE=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 linux=1 __linux=1 __linux__=1 _LP64=1 __LP64__=1 _POSIX_C_SOURCE=199506L _POSIX_SOURCE=1 _REENTRANT=1 __STDC__=1 unix=1 __unix=1 __unix__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE=1 __USE_LARGEFILE64=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_REENTRANT=1 __USE_SVID=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __x86_64=1 __x86_64__=1 _XOPEN_SOURCE=600 _XOPEN_SOURCE_EXTENDED=1'
+d_nv_preserves_uv='undef'
+d_u32align='define'
+gccversion='4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)'
+getspnam_r_proto='REENTRANT_PROTO_I_CSBWR'
+gidformat='"u"'
+gnulibc_version='2.4'
+i32type='int'
+i64type='long'
+ivsize='8'
+gnulibc_version='2.4'
+libc='/lib/libc-2.4.so'
+libsfiles=' libnsl.so libdb.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
+libsfound=' /usr/lib/libnsl.so /usr/lib/libdb.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
+ignore_versioned_solibs='y'
+libs='-lnsl -ldb -ldl -lm -lcrypt -lutil -lpthread -lc'
+libsdirs=' /usr/lib'
+libsfiles=' libnsl.so libdb.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
+libsfound=' /usr/lib/libnsl.so /usr/lib/libdb.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
+libspath=' /usr/local/lib /lib /usr/lib'
+libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m crypt sec util pthread c cposix posix ucb BSD'
+libswanted_uselargefiles=''
+perllibs='-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc'
+libsfiles=' libnsl.so libdb.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
+libsfound=' /usr/lib/libnsl.so /usr/lib/libdb.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
+longdblsize='16'
+longlongsize='8'
+longsize='8'
+myuname='linux nynaeve 2.6.20.4 #29 smp thu mar 29 15:35:30 est 2007 x86_64 gnulinux '
+nv_preserves_uv_bits='53'
+osvers='2.6.20.4'
+ptrsize='8'
+quadkind='2'
+quadtype='long'
+uquadtype='unsigned long'
+sPRIXU64='"lX"'
+sPRId64='"ld"'
+sPRIi64='"li"'
+sPRIo64='"lo"'
+sPRIu64='"lu"'
+sPRIx64='"lx"'
+selectminbits='64'
+sizesize='8'
+u32type='unsigned int'
+u64type='unsigned long'
+uidformat='"u"'
+uquadtype='unsigned long'
+use64bitall='define'
+use64bitint='define'
+uvsize='8'
diff --git a/packages/perl/perl-5.8.8/config.sh-64-be b/packages/perl/perl-5.8.8/config.sh-64-be
new file mode 100644
index 0000000000..c08ce3c431
--- /dev/null
+++ b/packages/perl/perl-5.8.8/config.sh-64-be
@@ -0,0 +1 @@
+byteorder='87654321'
diff --git a/packages/perl/perl-5.8.8/config.sh-64-le b/packages/perl/perl-5.8.8/config.sh-64-le
new file mode 100644
index 0000000000..277d2a9bee
--- /dev/null
+++ b/packages/perl/perl-5.8.8/config.sh-64-le
@@ -0,0 +1 @@
+byteorder='12345678'
diff --git a/packages/perl/perl-5.8.8/generate-sh.patch b/packages/perl/perl-5.8.8/generate-sh.patch
new file mode 100644
index 0000000000..4c2b0bd752
--- /dev/null
+++ b/packages/perl/perl-5.8.8/generate-sh.patch
@@ -0,0 +1,16 @@
+Use the ld flags from the supplied configuration file. For sh we need the
+flags that specify to build PIC code so that the shared libraries work.
+
+--- perl-5.8.7/Cross/generate_config_sh~ 2006-09-25 16:34:09.000000000 +1000
++++ perl-5.8.7/Cross/generate_config_sh 2006-09-25 16:34:09.000000000 +1000
+@@ -19,8 +19,8 @@
+ $callbacks->{'ar'} = [\&simple_process, ["AR", "arm-linux-ar"]];
+ $callbacks->{'archname'} = [\&simple_process, ["SYS", "armv4l-linux"]];
+ $callbacks->{'cc'} = [\&simple_process, ["CC", "arm-linux-gcc"]];
+-$callbacks->{'cccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
+-$callbacks->{'ccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
++#$callbacks->{'cccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
++#$callbacks->{'ccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
+ $callbacks->{'ccflags'} = [\&simple_process, ["CFLAGS", "-fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
+ $callbacks->{'ccflags_uselargefiles'} = [\&simple_process, ["CFLAGS", "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
+ $callbacks->{'ccname'} = [\&simple_process, ["CC", "arm-linux-gcc"]];
diff --git a/packages/perl/perl-5.8.8/native-no-gdbminc.patch b/packages/perl/perl-5.8.8/native-no-gdbminc.patch
new file mode 100644
index 0000000000..f00fa2cc17
--- /dev/null
+++ b/packages/perl/perl-5.8.8/native-no-gdbminc.patch
@@ -0,0 +1,18 @@
+If you have a /usr/include/gdbm/ndbm.h host on the header then the configure
+script adds -I/usr/include/gdbm to the ccflags even though gdbm support is
+disabled. Prevent perl from doing this so we don't get cross compile badness
+errors while building perl.
+
+--- perl-5.8.8/Configure 2007/05/06 23:42:18 1.1
++++ perl-5.8.8/Configure 2007/05/06 23:42:48
+@@ -20033,8 +20033,8 @@
+ # ndbm.h header in /usr/include/gdbm/ndbm.h.
+ if $test -f /usr/include/gdbm/ndbm.h; then
+ echo '<gdbm/ndbm.h> found.'
+- ccflags="$ccflags -I/usr/include/gdbm"
+- cppflags="$cppflags -I/usr/include/gdbm"
++# ccflags="$ccflags -I/usr/include/gdbm"
++# cppflags="$cppflags -I/usr/include/gdbm"
+ t_ndbm=$define
+ fi
+ ;;
diff --git a/packages/perl/perl-5.8.8/native-nopacklist.patch b/packages/perl/perl-5.8.8/native-nopacklist.patch
new file mode 100644
index 0000000000..a0ba269e00
--- /dev/null
+++ b/packages/perl/perl-5.8.8/native-nopacklist.patch
@@ -0,0 +1,84 @@
+Part of 52_debian_extutils_hacks.patch just to exclude the installation of .packlist files
+
+diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm perl-5.8.8/lib/ExtUtils/MM_Unix.pm
+--- perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm 2005-05-21 19:42:56.000000000 +1000
++++ perl-5.8.8/lib/ExtUtils/MM_Unix.pm 2006-02-05 17:40:19.000000000 +1100
+@@ -2054,9 +2054,7 @@
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+ pure_perl_install ::
+- $(NOECHO) $(MOD_INSTALL) \
+- read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
+- write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
++ $(NOECHO) $(MOD_INSTALL) \
+ $(INST_LIB) $(DESTINSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+ $(INST_BIN) $(DESTINSTALLBIN) \
+@@ -2081,9 +2079,7 @@
+ }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{
+
+ pure_vendor_install ::
+- $(NOECHO) $(MOD_INSTALL) \
+- read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
+- write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \
++ $(NOECHO) $(MOD_INSTALL) \
+ $(INST_LIB) $(DESTINSTALLVENDORLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+ $(INST_BIN) $(DESTINSTALLVENDORBIN) \
+@@ -2092,37 +2088,19 @@
+ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+ doc_perl_install ::
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
+- "Module" "$(NAME)" \
+- "installed into" "$(INSTALLPRIVLIB)" \
+- LINKTYPE "$(LINKTYPE)" \
+- VERSION "$(VERSION)" \
+- EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+
+ doc_site_install ::
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
++ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
++ -$(NOECHO) $(MKPATH) $(DESTINSTALLSITEARCH)
++ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
++ >> }.$self->catfile('$(DESTINSTALLSITEARCH)','perllocal.pod').q{
+
+ doc_vendor_install ::
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
+- "Module" "$(NAME)" \
+- "installed into" "$(INSTALLVENDORLIB)" \
+- LINKTYPE "$(LINKTYPE)" \
+- VERSION "$(VERSION)" \
+- EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+
+ };
+
+@@ -2131,13 +2109,12 @@
+ $(NOECHO) $(NOOP)
+
+ uninstall_from_perldirs ::
+- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{
+
+ uninstall_from_sitedirs ::
+ $(NOECHO) $(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{
+
+ uninstall_from_vendordirs ::
+- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{
++
+ };
+
+ join("",@m);
diff --git a/packages/perl/perl-5.8.8/perl-configpm-switch.patch b/packages/perl/perl-5.8.8/perl-configpm-switch.patch
new file mode 100644
index 0000000000..1aacd35189
--- /dev/null
+++ b/packages/perl/perl-5.8.8/perl-configpm-switch.patch
@@ -0,0 +1,34 @@
+This patch is used for perl-native only. It enables the switching of
+configuration files between Config_heavy.pl and
+Config_heavy-target.pl by setting the environment variables
+PERLCONFIGTARGET - the later containing settings for the target while
+the former contains those for the host. This will allow cpan.bbclass
+to use the settings appropriate for the native and/or target builds
+as required. This also disables the use of the cache since the cached
+values would be valid for the host only.
+
+--- perl-5.8.8/configpm 2007/04/30 03:10:43 1.1
++++ perl-5.8.8/configpm 2007/04/30 03:11:56
+@@ -374,7 +374,7 @@
+ my($self, $key) = @_;
+
+ # check for cached value (which may be undef so we use exists not defined)
+- return $self->{$key} if exists $self->{$key};
++ #return $self->{$key} if exists $self->{$key};
+
+ return $self->fetch_string($key);
+ }
+@@ -530,7 +530,12 @@
+ sub DESTROY { }
+
+ sub AUTOLOAD {
+- require 'Config_heavy.pl';
++ my $cfgfile = 'Config_heavy.pl';
++ if (defined $ENV{PERLCONFIGTARGET} and $ENV{PERLCONFIGTARGET} eq "yes")
++ {
++ $cfgfile = 'Config_heavy-target.pl';
++ }
++ require $cfgfile;
+ goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/;
+ die "&Config::AUTOLOAD failed on $Config::AUTOLOAD";
+ }
diff --git a/packages/perl/perl-5.8.8/perl-configure.sh b/packages/perl/perl-5.8.8/perl-configure.sh
new file mode 100755
index 0000000000..9800394b63
--- /dev/null
+++ b/packages/perl/perl-5.8.8/perl-configure.sh
@@ -0,0 +1,43 @@
+ls#! /bin/sh
+
+#
+# Generate the common perl configuration
+# Needs to be run on a host that matches the bitsize of the target platform
+#
+
+echo sh Configure -des \
+ -Doptimize=-O2 \
+ -Dmyhostname=localhost \
+ -Dperladmin=root@localhost \
+ -Dcc=gcc \
+ -Dcf_by='Open Embedded' \
+ -Dinstallprefix=@DESTDIR@ \
+ -Dprefix=/usr \
+ -Dvendorprefix=/usr \
+ -Dsiteprefix=/usr \
+ -Dotherlibdirs=/usr/lib/perl5/5.8.8 \
+ -Duseshrplib \
+ -Dusethreads \
+ -Duseithreads \
+ -Duselargefiles \
+ -Ud_dosuid \
+ -Dd_semctl_semun \
+ -Ui_db \
+ -Ui_ndbm \
+ -Ui_gdbm \
+ -Di_shadow \
+ -Di_syslog \
+ -Dman3ext=3pm \
+ -Duseperlio \
+ -Dinstallusrbinperl \
+ -Ubincompat5005 \
+ -Uversiononly \
+ -Dpager='/usr/bin/less -isr'
+
+cp -f config.sh config.sh.COMMON
+
+TARGETOS=$(grep myarchname config.sh.COMMON | sed "s#.*'\(.*\)'.*#\1#")
+
+sed -r -i config.sh.COMMON \
+ -e "s#(install.*=')(/usr)/local(.*')#\1@DESTDIR@\2\3#g" \
+ -e 's#'$TARGETOS'#@ARCH@#g'
diff --git a/packages/perl/perl-5.8.8/perl-dynloader.patch b/packages/perl/perl-5.8.8/perl-dynloader.patch
new file mode 100644
index 0000000000..e2dc774d5e
--- /dev/null
+++ b/packages/perl/perl-5.8.8/perl-dynloader.patch
@@ -0,0 +1,23 @@
+Allow the location that .so files are searched for for dynamic
+loading to be changed via an environment variable. This is to allow
+us to load .so's from the host system while building for the target
+system.
+
+--- perl-5.8.8/ext/DynaLoader/XSLoader_pm.PL 2007/04/20 09:03:08 1.1
++++ perl-5.8.8/ext/DynaLoader/XSLoader_pm.PL 2007/04/20 09:41:28
+@@ -65,6 +65,15 @@
+ print OUT <<'EOT';
+ my $modpname = join('/',@modparts);
+ my $modlibname = (caller())[1];
++ # OE: Allow env to form dynamic loader to look in a different place
++ # This is so it finds the host .so files, not the targets
++ if (defined $ENV{PERLHOSTLIB})
++ {
++ my $hostlib = $ENV{PERLHOSTLIB};
++ print STDERR "*** Module name IN: $modlibname\n";
++ $modlibname =~ s#(?<!/)(\.\./)*lib/#$hostlib#g;
++ print STDERR "*** Module name OUT: $modlibname\n";
++ }
+ my $c = @modparts;
+ $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename
+ my $file = "$modlibname/auto/$modpname/$modfname.$dl_dlext";
diff --git a/packages/perl/perl-5.8.8/perl-moreconfig.patch b/packages/perl/perl-5.8.8/perl-moreconfig.patch
new file mode 100644
index 0000000000..590c72536b
--- /dev/null
+++ b/packages/perl/perl-5.8.8/perl-moreconfig.patch
@@ -0,0 +1,16 @@
+We need ld in the fake config library, but it's not included by default. So
+expand the number of items included. While this works it indicates that the
+rest of the config items are not being picked up and/or are being picked up
+from the host. More investigation needed.
+
+--- perl-5.8.8/configpm 2007/04/20 09:48:05 1.1
++++ perl-5.8.8/configpm 2007/04/20 09:57:12
+@@ -2,7 +2,7 @@
+ use strict;
+ use vars qw(%Config $Config_SH_expanded);
+
+-my $how_many_common = 22;
++my $how_many_common = 50;
+
+ # commonly used names to precache (and hence lookup fastest)
+ my %Common;
diff --git a/packages/perl/perl-native_5.8.7.bb b/packages/perl/perl-native_5.8.7.bb
index eeef2a2bc4..ebb10e5580 100644
--- a/packages/perl/perl-native_5.8.7.bb
+++ b/packages/perl/perl-native_5.8.7.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Perl is a popular scripting language."
HOMEPAGE = "http://www.perl.org/"
LICENSE = "Artistic|GPL"
-PR = "r3"
+PR = "r5"
SECTION = "libs"
inherit native
@@ -9,6 +9,7 @@ inherit native
DEPENDS = "virtual/db-native gdbm-native"
SRC_URI = "http://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz \
+ file://perl-5.8.8-gcc-4.2.patch;patch=1 \
file://Configure-multilib.patch;patch=1"
S = "${WORKDIR}/perl-${PV}"
diff --git a/packages/perl/perl-native_5.8.8.bb b/packages/perl/perl-native_5.8.8.bb
new file mode 100644
index 0000000000..c9d9b51771
--- /dev/null
+++ b/packages/perl/perl-native_5.8.8.bb
@@ -0,0 +1,55 @@
+DESCRIPTION = "Perl is a popular scripting language."
+HOMEPAGE = "http://www.perl.org/"
+SECTION = "libs"
+LICENSE = "Artistic|GPL"
+DEPENDS = "virtual/db-native gdbm-native"
+PR = "r7"
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/perl-${PV}"
+
+SRC_URI = "http://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz \
+ file://perl-5.8.8-gcc-4.2.patch;patch=1 \
+ file://Configure-multilib.patch;patch=1 \
+ file://perl-configpm-switch.patch;patch=1 \
+ file://native-nopacklist.patch;patch=1 \
+ file://native-no-gdbminc.patch;patch=1"
+
+S = "${WORKDIR}/perl-${PV}"
+
+inherit native
+
+do_configure () {
+ ./Configure \
+ -Dcc="${CC}" \
+ -Dcflags="${CFLAGS}" \
+ -Dldflags="${LDFLAGS}" \
+ -Dcf_by="Open Embedded" \
+ -Dprefix=${prefix} \
+ -Dvendorprefix=${prefix} \
+ -Dsiteprefix=${prefix}/local \
+ -Duseshrplib \
+ -Dusethreads \
+ -Duseithreads \
+ -Duselargefiles \
+ -Ud_dosuid \
+ -Ui_db \
+ -Ui_ndbm \
+ -Ui_gdbm \
+ -Di_shadow \
+ -Di_syslog \
+ -Duseperlio \
+ -Dman3ext=3pm \
+ -Uafs \
+ -Ud_csh \
+ -Uusesfio \
+ -Uusenm -des
+ sed 's!${STAGING_DIR}/bin!${STAGING_BINDIR}!;
+ s!${STAGING_DIR}/lib!${STAGING_LIBDIR}!' < config.sh > config.sh.new
+ mv config.sh.new config.sh
+}
+do_stage_append() {
+ # We need a hostperl link for building perl
+ ln -sf ${STAGING_BINDIR_NATIVE}/perl${PV} ${STAGING_BINDIR_NATIVE}/hostperl
+}
+
+PARALLEL_MAKE = ""
diff --git a/packages/perl/perl-rdepends_5.8.8.inc b/packages/perl/perl-rdepends_5.8.8.inc
new file mode 100644
index 0000000000..1ce5ad0375
--- /dev/null
+++ b/packages/perl/perl-rdepends_5.8.8.inc
@@ -0,0 +1,1145 @@
+# To create/update the perl-rdepends_${PV}.inc use this piece of ugly script (modified for your arch/paths etc):
+# daka@DaKa2:/home/slug/slugos/tmp/work/perl-5.8.7-r14/install$ egrep -r "use|require" * | grep ";$" | egrep ".pm:use |.pm:require " | grep -v v5.6.0 | grep -v 5.00 | grep -v \$module | sed -e "s, \+, ,g" | cut -f1,2 -d" " | sed -e "s,;, ,g" | sed -e "s,(), ,g" | sed -e "s,::,-,g" | sort | uniq | tr [:upper:] [:lower:] | sed -e "s,/[^ ]\+ , += \"perl-module-,g" | sed -e "s, \?$, \",g" | sed -e "s,_,-,g" | sed -e "s,^,RDEPENDS_,g" | sed -e "s,armeb-linux,\$\{TARGET_ARCH\}-\$\{TARGET_OS\},g" | egrep -v "perl-module-5|perl-module-tk|perl-module-mac-internetconfig|perl-module-ndbm-file|perl-module-html-treebuilder|perl-module-lwp-simple|perl-module-vms-filespec|perl-module-fcgi|perl-module-vms-stdio|perl-module-mac-buildtools" > /home/slug/openembedded/packages/perl/rdepends.tmp
+
+# Some additional dependencies that the above doesn't manage to figure out
+RDEPENDS_perl-module-math-bigint += "perl-module-math-bigint-calc "
+RDEPENDS_perl-module-math-bigint-calc += "perl-module-integer "
+
+# Depends list
+RDEPENDS_perl-misc += "perl-module-exporter "
+RDEPENDS_perl-misc += "perl-module-strict "
+RDEPENDS_perl-misc += "perl-module-warnings "
+RDEPENDS_perl-module-attribute-handlers-demo-demo += "perl-module-attribute-handlers "
+RDEPENDS_perl-module-attribute-handlers-demo-descriptions += "perl-module-attribute-handlers "
+RDEPENDS_perl-module-attribute-handlers-demo-myclass += "perl-module-base "
+RDEPENDS_perl-module-attribute-handlers += "perl-module-carp "
+RDEPENDS_perl-module-attribute-handlers += "perl-module-warnings "
+RDEPENDS_perl-module-attributes += "perl-module-strict "
+RDEPENDS_perl-module-attrs += "perl-module-xsloader "
+RDEPENDS_perl-module-autoloader += "perl-module-strict "
+RDEPENDS_perl-module-autosplit += "perl-module-carp "
+RDEPENDS_perl-module-autosplit += "perl-module-config "
+RDEPENDS_perl-module-autosplit += "perl-module-exporter "
+RDEPENDS_perl-module-autosplit += "perl-module-file-basename "
+RDEPENDS_perl-module-autosplit += "perl-module-file-path "
+RDEPENDS_perl-module-autosplit += "perl-module-file-spec-functions "
+RDEPENDS_perl-module-autosplit += "perl-module-strict "
+RDEPENDS_perl-module-base += "perl-module-strict "
+RDEPENDS_perl-module-base += "perl-module-vars "
+RDEPENDS_perl-module-b-asmdata += "perl-module-exporter "
+RDEPENDS_perl-module-b-assembler += "perl-module-b "
+RDEPENDS_perl-module-b-assembler += "perl-module-b-asmdata "
+RDEPENDS_perl-module-b-assembler += "perl-module-config "
+RDEPENDS_perl-module-b-assembler += "perl-module-exporter "
+RDEPENDS_perl-module-b-assembler += "perl-module-strict "
+RDEPENDS_perl-module-b-bblock += "perl-module-b-concise "
+RDEPENDS_perl-module-b-bblock += "perl-module-exporter "
+RDEPENDS_perl-module-b-bblock += "perl-module-strict "
+RDEPENDS_perl-module-b-bytecode += "perl-module-b-asmdata "
+RDEPENDS_perl-module-b-bytecode += "perl-module-b-assembler "
+RDEPENDS_perl-module-b-bytecode += "perl-module-config "
+RDEPENDS_perl-module-b-bytecode += "perl-module-strict "
+RDEPENDS_perl-module-b-cc += "perl-module-b-bblock "
+RDEPENDS_perl-module-b-cc += "perl-module-b-stackobj "
+RDEPENDS_perl-module-b-cc += "perl-module-config "
+RDEPENDS_perl-module-b-cc += "perl-module-strict "
+RDEPENDS_perl-module-b-c += "perl-module-b "
+RDEPENDS_perl-module-b-c += "perl-module-base "
+RDEPENDS_perl-module-b-c += "perl-module-b-asmdata "
+RDEPENDS_perl-module-b-c += "perl-module-carp "
+RDEPENDS_perl-module-b-c += "perl-module-config "
+RDEPENDS_perl-module-b-c += "perl-module-exporter "
+RDEPENDS_perl-module-b-c += "perl-module-filehandle "
+RDEPENDS_perl-module-b-c += "perl-module-strict "
+RDEPENDS_perl-module-b-debug += "perl-module-b-asmdata "
+RDEPENDS_perl-module-b-debug += "perl-module-strict "
+RDEPENDS_perl-module-b-deparse += "perl-module-bytes "
+RDEPENDS_perl-module-b-deparse += "perl-module-carp "
+RDEPENDS_perl-module-b-deparse += "perl-module-integer "
+RDEPENDS_perl-module-b-deparse += "perl-module-re "
+RDEPENDS_perl-module-b-deparse += "perl-module-strict "
+RDEPENDS_perl-module-b-deparse += "perl-module-utf8 "
+RDEPENDS_perl-module-b-deparse += "perl-module-warnings "
+RDEPENDS_perl-module-b-deparse += "perl-module-warnings "
+RDEPENDS_perl-module-b-deparse += "perl-module-vars "
+RDEPENDS_perl-module-b-disassembler += "perl-module-b "
+RDEPENDS_perl-module-b-disassembler += "perl-module-b-asmdata "
+RDEPENDS_perl-module-b-disassembler += "perl-module-carp "
+RDEPENDS_perl-module-b-disassembler += "perl-module-config "
+RDEPENDS_perl-module-b-disassembler += "perl-module-exporter "
+RDEPENDS_perl-module-b-disassembler += "perl-module-filehandle "
+RDEPENDS_perl-module-b-disassembler += "perl-module-strict "
+RDEPENDS_perl-module-benchmark += "perl-module-carp "
+RDEPENDS_perl-module-benchmark += "perl-module-exporter "
+RDEPENDS_perl-module-benchmark += "perl-module-strict "
+RDEPENDS_perl-module-bigint += "perl-module-exporter "
+RDEPENDS_perl-module-bigint += "perl-module-overload "
+RDEPENDS_perl-module-bigint += "perl-module-strict "
+RDEPENDS_perl-module-bignum += "perl-module-exporter "
+RDEPENDS_perl-module-bignum += "perl-module-strict "
+RDEPENDS_perl-module-bigrat += "perl-module-exporter "
+RDEPENDS_perl-module-bigrat += "perl-module-strict "
+RDEPENDS_perl-module-blib += "perl-module-cwd "
+RDEPENDS_perl-module-blib += "perl-module-file-spec "
+RDEPENDS_perl-module-blib += "perl-module-vars "
+RDEPENDS_perl-module-b-lint += "perl-module-strict "
+RDEPENDS_perl-module-b-showlex += "perl-module-b "
+RDEPENDS_perl-module-b-showlex += "perl-module-b-concise "
+RDEPENDS_perl-module-b-showlex += "perl-module-b-terse "
+RDEPENDS_perl-module-b-showlex += "perl-module-strict "
+RDEPENDS_perl-module-b-stackobj += "perl-module-b "
+RDEPENDS_perl-module-b-stackobj += "perl-module-carp "
+RDEPENDS_perl-module-b-stackobj += "perl-module-exporter "
+RDEPENDS_perl-module-b-stackobj += "perl-module-strict "
+RDEPENDS_perl-module-b-terse += "perl-module-b "
+RDEPENDS_perl-module-b-terse += "perl-module-b-asmdata "
+RDEPENDS_perl-module-b-terse += "perl-module-b-concise "
+RDEPENDS_perl-module-b-terse += "perl-module-carp "
+RDEPENDS_perl-module-b-terse += "perl-module-strict "
+RDEPENDS_perl-module-b += "perl-module-exporter "
+RDEPENDS_perl-module-b += "perl-module-strict "
+RDEPENDS_perl-module-b += "perl-module-xsloader "
+RDEPENDS_perl-module-b-xref += "perl-module-config "
+RDEPENDS_perl-module-b-xref += "perl-module-strict "
+RDEPENDS_perl-module-byteloader += "perl-module-xsloader "
+RDEPENDS_perl-module-carp-heavy += "perl-module-carp "
+RDEPENDS_perl-module-carp += "perl-module-exporter "
+RDEPENDS_perl-module-cgi-apache += "perl-module-cgi "
+RDEPENDS_perl-module-cgi-carp += "perl-module-exporter "
+RDEPENDS_perl-module-cgi-carp += "perl-module-file-spec "
+RDEPENDS_perl-module-cgi-cookie += "perl-module-cgi-util "
+RDEPENDS_perl-module-cgi-fast += "perl-module-cgi "
+RDEPENDS_perl-module-cgi-fast += "perl-module-vars "
+RDEPENDS_perl-module-cgi-pretty += "perl-module-cgi "
+RDEPENDS_perl-module-cgi-pretty += "perl-module-strict "
+RDEPENDS_perl-module-cgi-push += "perl-module-cgi "
+RDEPENDS_perl-module-cgi-push += "perl-module-cgi-util "
+RDEPENDS_perl-module-cgi-switch += "perl-module-cgi "
+RDEPENDS_perl-module-cgi += "perl-module-carp "
+RDEPENDS_perl-module-cgi += "perl-module-cgi-util "
+RDEPENDS_perl-module-cgi += "perl-module-constant "
+RDEPENDS_perl-module-cgi-util += "perl-module-exporter "
+RDEPENDS_perl-module-cgi-util += "perl-module-strict "
+RDEPENDS_perl-module-cgi-util += "perl-module-vars "
+RDEPENDS_perl-module-charnames += "perl-module-carp "
+RDEPENDS_perl-module-charnames += "perl-module-file-spec "
+RDEPENDS_perl-module-charnames += "perl-module-strict "
+RDEPENDS_perl-module-charnames += "perl-module-warnings "
+RDEPENDS_perl-module-class-isa += "perl-module-strict "
+RDEPENDS_perl-module-class-isa += "perl-module-vars "
+RDEPENDS_perl-module-class-struct += "perl-module-exporter "
+RDEPENDS_perl-module-class-struct += "perl-module-carp "
+RDEPENDS_perl-module-class-struct += "perl-module-strict "
+RDEPENDS_perl-module-class-struct += "perl-module-warnings-register "
+RDEPENDS_perl-module-config += "perl-module-strict "
+RDEPENDS_perl-module-constant += "perl-module-strict "
+RDEPENDS_perl-module-constant += "perl-module-warnings-register "
+RDEPENDS_perl-module-cpan-firsttime += "perl-module-extutils-makemaker "
+RDEPENDS_perl-module-cpan-firsttime += "perl-module-file-basename "
+RDEPENDS_perl-module-cpan-firsttime += "perl-module-filehandle "
+RDEPENDS_perl-module-cpan-firsttime += "perl-module-file-path "
+RDEPENDS_perl-module-cpan-firsttime += "perl-module-file-spec "
+RDEPENDS_perl-module-cpan-firsttime += "perl-module-strict "
+RDEPENDS_perl-module-cpan-firsttime += "perl-module-vars "
+RDEPENDS_perl-module-cpan-nox += "perl-module-base "
+RDEPENDS_perl-module-cpan-nox += "perl-module-cpan "
+RDEPENDS_perl-module-cpan-nox += "perl-module-strict "
+RDEPENDS_perl-module-cpan-nox += "perl-module-vars "
+RDEPENDS_perl-module-cpan += "perl-module-carp "
+RDEPENDS_perl-module-cpan += "perl-module-config "
+RDEPENDS_perl-module-cpan += "perl-module-cwd "
+RDEPENDS_perl-module-cpan += "perl-module-dirhandle "
+RDEPENDS_perl-module-cpan += "perl-module-exporter "
+RDEPENDS_perl-module-cpan += "perl-module-extutils-makemaker "
+RDEPENDS_perl-module-cpan += "perl-module-extutils-makemaker "
+RDEPENDS_perl-module-cpan += "perl-module-file-basename "
+RDEPENDS_perl-module-cpan += "perl-module-file-copy "
+RDEPENDS_perl-module-cpan += "perl-module-file-find "
+RDEPENDS_perl-module-cpan += "perl-module-filehandle "
+RDEPENDS_perl-module-cpan += "perl-module-file-path "
+RDEPENDS_perl-module-cpan += "perl-module-file-spec "
+RDEPENDS_perl-module-cpan += "perl-module-overload "
+RDEPENDS_perl-module-cpan += "perl-module-safe "
+RDEPENDS_perl-module-cpan += "perl-module-strict "
+RDEPENDS_perl-module-cpan += "perl-module-sys-hostname "
+RDEPENDS_perl-module-cpan += "perl-module-text-parsewords "
+RDEPENDS_perl-module-cpan += "perl-module-text-wrap "
+RDEPENDS_perl-module-cpan += "perl-module-vars "
+RDEPENDS_perl-module-cwd += "perl-module-exporter "
+RDEPENDS_perl-module-cwd += "perl-module-strict "
+RDEPENDS_perl-module-cwd += "perl-module-vars "
+RDEPENDS_perl-module-data-dumper += "perl-module-exporter "
+RDEPENDS_perl-module-data-dumper += "perl-module-overload "
+RDEPENDS_perl-module-data-dumper += "perl-module-carp "
+RDEPENDS_perl-module-dbm-filter-compress += "perl-module-carp "
+RDEPENDS_perl-module-dbm-filter-compress += "perl-module-strict "
+RDEPENDS_perl-module-dbm-filter-compress += "perl-module-warnings "
+RDEPENDS_perl-module-dbm-filter-encode += "perl-module-carp "
+RDEPENDS_perl-module-dbm-filter-encode += "perl-module-strict "
+RDEPENDS_perl-module-dbm-filter-encode += "perl-module-warnings "
+RDEPENDS_perl-module-dbm-filter-int32 += "perl-module-strict "
+RDEPENDS_perl-module-dbm-filter-int32 += "perl-module-warnings "
+RDEPENDS_perl-module-dbm-filter-null += "perl-module-strict "
+RDEPENDS_perl-module-dbm-filter-null += "perl-module-warnings "
+RDEPENDS_perl-module-dbm-filter += "perl-module-carp "
+RDEPENDS_perl-module-dbm-filter += "perl-module-strict "
+RDEPENDS_perl-module-dbm-filter += "perl-module-warnings "
+RDEPENDS_perl-module-dbm-filter-utf8 += "perl-module-carp "
+RDEPENDS_perl-module-dbm-filter-utf8 += "perl-module-strict "
+RDEPENDS_perl-module-dbm-filter-utf8 += "perl-module-warnings "
+RDEPENDS_perl-module-devel-dprof += "perl-module-xsloader "
+RDEPENDS_perl-module-devel-peek += "perl-module-exporter "
+RDEPENDS_perl-module-devel-peek += "perl-module-xsloader "
+RDEPENDS_perl-module-devel-ppport += "perl-module-dynaloader "
+RDEPENDS_perl-module-devel-ppport += "perl-module-strict "
+RDEPENDS_perl-module-devel-ppport += "perl-module-vars "
+RDEPENDS_perl-module-devel-selfstubber += "perl-module-selfloader "
+RDEPENDS_perl-module-devel-selfstubber += "perl-module-file-spec "
+RDEPENDS_perl-module-diagnostics += "perl-module-carp "
+RDEPENDS_perl-module-diagnostics += "perl-module-config "
+RDEPENDS_perl-module-diagnostics += "perl-module-strict "
+RDEPENDS_perl-module-digest-base += "perl-module-strict "
+RDEPENDS_perl-module-digest-base += "perl-module-vars "
+RDEPENDS_perl-module-digest-file += "perl-module-carp "
+RDEPENDS_perl-module-digest-file += "perl-module-digest "
+RDEPENDS_perl-module-digest-file += "perl-module-exporter "
+RDEPENDS_perl-module-digest-file += "perl-module-strict "
+RDEPENDS_perl-module-digest-file += "perl-module-vars "
+RDEPENDS_perl-module-digest-md5 += "perl-module-dynaloader "
+RDEPENDS_perl-module-digest-md5 += "perl-module-exporter "
+RDEPENDS_perl-module-digest-md5 += "perl-module-strict "
+RDEPENDS_perl-module-digest-md5 += "perl-module-vars "
+RDEPENDS_perl-module-digest += "perl-module-strict "
+RDEPENDS_perl-module-digest += "perl-module-vars "
+RDEPENDS_perl-module-dirhandle += "perl-module-carp "
+RDEPENDS_perl-module-dirhandle += "perl-module-symbol "
+RDEPENDS_perl-module-dumpvalue += "perl-module-strict "
+RDEPENDS_perl-module-dynaloader += "perl-module-autoloader "
+RDEPENDS_perl-module-dynaloader += "perl-module-config "
+RDEPENDS_perl-module-dynaloader += "perl-module-vars "
+RDEPENDS_perl-module-encode-alias += "perl-module-base "
+RDEPENDS_perl-module-encode-alias += "perl-module-encode "
+RDEPENDS_perl-module-encode-alias += "perl-module-strict "
+RDEPENDS_perl-module-encode-byte += "perl-module-encode "
+RDEPENDS_perl-module-encode-byte += "perl-module-xsloader "
+RDEPENDS_perl-module-encode-cjkconstants += "perl-module-exporter "
+RDEPENDS_perl-module-encode-cjkconstants += "perl-module-carp "
+RDEPENDS_perl-module-encode-cjkconstants += "perl-module-strict "
+RDEPENDS_perl-module-encode-cn-hz += "perl-module-base "
+RDEPENDS_perl-module-encode-cn-hz += "perl-module-encode "
+RDEPENDS_perl-module-encode-cn-hz += "perl-module-strict "
+RDEPENDS_perl-module-encode-cn-hz += "perl-module-vars "
+RDEPENDS_perl-module-encode-cn += "perl-module-encode "
+RDEPENDS_perl-module-encode-cn += "perl-module-encode-cn-hz "
+RDEPENDS_perl-module-encode-cn += "perl-module-xsloader "
+RDEPENDS_perl-module-encode-config += "perl-module-strict "
+RDEPENDS_perl-module-encode-ebcdic += "perl-module-encode "
+RDEPENDS_perl-module-encode-ebcdic += "perl-module-xsloader "
+RDEPENDS_perl-module-encode-encoder += "perl-module-exporter "
+RDEPENDS_perl-module-encode-encoder += "perl-module-carp "
+RDEPENDS_perl-module-encode-encoder += "perl-module-encode "
+RDEPENDS_perl-module-encode-encoder += "perl-module-strict "
+RDEPENDS_perl-module-encode-encoder += "perl-module-warnings "
+RDEPENDS_perl-module-encode-encoding += "perl-module-encode "
+RDEPENDS_perl-module-encode-encoding += "perl-module-strict "
+RDEPENDS_perl-module-encode-guess += "perl-module-base "
+RDEPENDS_perl-module-encode-guess += "perl-module-encode "
+RDEPENDS_perl-module-encode-guess += "perl-module-strict "
+RDEPENDS_perl-module-encode-jp-h2z += "perl-module-encode-cjkconstants "
+RDEPENDS_perl-module-encode-jp-h2z += "perl-module-strict "
+RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-base "
+RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-encode "
+RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-encode-cjkconstants "
+RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-strict "
+RDEPENDS_perl-module-encode-jp += "perl-module-encode "
+RDEPENDS_perl-module-encode-jp += "perl-module-encode-jp-jis7 "
+RDEPENDS_perl-module-encode-jp += "perl-module-xsloader "
+RDEPENDS_perl-module-encode-kr-2022-kr += "perl-module-base "
+RDEPENDS_perl-module-encode-kr-2022-kr += "perl-module-encode "
+RDEPENDS_perl-module-encode-kr-2022-kr += "perl-module-encode-cjkconstants "
+RDEPENDS_perl-module-encode-kr-2022-kr += "perl-module-strict "
+RDEPENDS_perl-module-encode-kr += "perl-module-encode "
+RDEPENDS_perl-module-encode-kr += "perl-module-encode-kr-2022-kr "
+RDEPENDS_perl-module-encode-kr += "perl-module-xsloader "
+RDEPENDS_perl-module-encode-mime-header += "perl-module-base "
+RDEPENDS_perl-module-encode-mime-header += "perl-module-carp "
+RDEPENDS_perl-module-encode-mime-header += "perl-module-constant "
+RDEPENDS_perl-module-encode-mime-header += "perl-module-encode "
+RDEPENDS_perl-module-encode-mime-header += "perl-module-mime-base64 "
+RDEPENDS_perl-module-encode-mime-header += "perl-module-strict "
+RDEPENDS_perl-module-encode-symbol += "perl-module-encode "
+RDEPENDS_perl-module-encode-symbol += "perl-module-xsloader "
+RDEPENDS_perl-module-encode-tw += "perl-module-encode "
+RDEPENDS_perl-module-encode-tw += "perl-module-xsloader "
+RDEPENDS_perl-module-encode-unicode += "perl-module-encode "
+RDEPENDS_perl-module-encode-unicode += "perl-module-base "
+RDEPENDS_perl-module-encode-unicode += "perl-module-strict "
+RDEPENDS_perl-module-encode-unicode += "perl-module-warnings "
+RDEPENDS_perl-module-encode-unicode += "perl-module-xsloader "
+RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-base "
+RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-encode "
+RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-mime-base64 "
+RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-strict "
+RDEPENDS_perl-module-encode += "perl-module-encode-config "
+RDEPENDS_perl-module-encode += "perl-module-exporter "
+RDEPENDS_perl-module-encode += "perl-module-base "
+RDEPENDS_perl-module-encode += "perl-module-encode-alias "
+RDEPENDS_perl-module-encode += "perl-module-strict "
+RDEPENDS_perl-module-encode += "perl-module-xsloader "
+RDEPENDS_perl-module-encoding += "perl-module-encode "
+RDEPENDS_perl-module-encoding += "perl-module-strict "
+RDEPENDS_perl-module-english += "perl-module-exporter "
+RDEPENDS_perl-module-env += "perl-module-config "
+RDEPENDS_perl-module-env += "perl-module-tie-array "
+RDEPENDS_perl-module-errno += "perl-module-config "
+RDEPENDS_perl-module-errno += "perl-module-exporter "
+RDEPENDS_perl-module-errno += "perl-module-strict "
+RDEPENDS_perl-module-exporter-heavy += "perl-module-exporter "
+RDEPENDS_perl-module-exporter-heavy += "perl-module-strict "
+RDEPENDS_perl-module-extutils-command-mm += "perl-module-exporter "
+RDEPENDS_perl-module-extutils-command-mm += "perl-module-strict "
+RDEPENDS_perl-module-extutils-command-mm += "perl-module-vars "
+RDEPENDS_perl-module-extutils-command += "perl-module-exporter "
+RDEPENDS_perl-module-extutils-command += "perl-module-carp "
+RDEPENDS_perl-module-extutils-command += "perl-module-file-basename "
+RDEPENDS_perl-module-extutils-command += "perl-module-file-compare "
+RDEPENDS_perl-module-extutils-command += "perl-module-file-copy "
+RDEPENDS_perl-module-extutils-command += "perl-module-file-path "
+RDEPENDS_perl-module-extutils-command += "perl-module-strict "
+RDEPENDS_perl-module-extutils-command += "perl-module-vars "
+RDEPENDS_perl-module-extutils-constant-base += "perl-module-carp "
+RDEPENDS_perl-module-extutils-constant-base += "perl-module-extutils-constant-utils "
+RDEPENDS_perl-module-extutils-constant-base += "perl-module-strict "
+RDEPENDS_perl-module-extutils-constant-base += "perl-module-text-wrap "
+RDEPENDS_perl-module-extutils-constant-base += "perl-module-vars "
+RDEPENDS_perl-module-extutils-constant += "perl-module-carp "
+RDEPENDS_perl-module-extutils-constant += "perl-module-exporter "
+RDEPENDS_perl-module-extutils-constant += "perl-module-extutils-constant-utils "
+RDEPENDS_perl-module-extutils-constant += "perl-module-extutils-constant-xs "
+RDEPENDS_perl-module-extutils-constant += "perl-module-strict "
+RDEPENDS_perl-module-extutils-constant += "perl-module-vars "
+RDEPENDS_perl-module-extutils-constant-utils += "perl-module-carp "
+RDEPENDS_perl-module-extutils-constant-utils += "perl-module-strict "
+RDEPENDS_perl-module-extutils-constant-utils += "perl-module-vars "
+RDEPENDS_perl-module-extutils-constant-xs += "perl-module-extutils-constant-base "
+RDEPENDS_perl-module-extutils-constant-xs += "perl-module-carp "
+RDEPENDS_perl-module-extutils-constant-xs += "perl-module-extutils-constant "
+RDEPENDS_perl-module-extutils-constant-xs += "perl-module-extutils-constant-utils "
+RDEPENDS_perl-module-extutils-constant-xs += "perl-module-strict "
+RDEPENDS_perl-module-extutils-constant-xs += "perl-module-vars "
+RDEPENDS_perl-module-extutils-embed += "perl-module-exporter "
+RDEPENDS_perl-module-extutils-embed += "perl-module-filehandle "
+RDEPENDS_perl-module-extutils-embed += "perl-module-config "
+RDEPENDS_perl-module-extutils-embed += "perl-module-file-spec "
+RDEPENDS_perl-module-extutils-embed += "perl-module-getopt-std "
+RDEPENDS_perl-module-extutils-embed += "perl-module-strict "
+RDEPENDS_perl-module-extutils-installed += "perl-module-carp "
+RDEPENDS_perl-module-extutils-installed += "perl-module-config "
+RDEPENDS_perl-module-extutils-installed += "perl-module-extutils-makemaker "
+RDEPENDS_perl-module-extutils-installed += "perl-module-extutils-packlist "
+RDEPENDS_perl-module-extutils-installed += "perl-module-file-basename "
+RDEPENDS_perl-module-extutils-installed += "perl-module-file-find "
+RDEPENDS_perl-module-extutils-installed += "perl-module-file-spec "
+RDEPENDS_perl-module-extutils-installed += "perl-module-strict "
+RDEPENDS_perl-module-extutils-installed += "perl-module-vars "
+RDEPENDS_perl-module-extutils-install += "perl-module-carp "
+RDEPENDS_perl-module-extutils-install += "perl-module-config "
+RDEPENDS_perl-module-extutils-install += "perl-module-exporter "
+RDEPENDS_perl-module-extutils-install += "perl-module-file-spec "
+RDEPENDS_perl-module-extutils-install += "perl-module-vars "
+RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-config "
+RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-cwd "
+RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-file-basename "
+RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-file-spec "
+RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-strict "
+RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-vars "
+RDEPENDS_perl-module-extutils-liblist += "perl-module-extutils-liblist-kid "
+RDEPENDS_perl-module-extutils-liblist += "perl-module-file-spec "
+RDEPENDS_perl-module-extutils-liblist += "perl-module-vars "
+RDEPENDS_perl-module-extutils-makemaker-bytes += "perl-module-vars "
+RDEPENDS_perl-module-extutils-makemaker += "perl-module-exporter "
+RDEPENDS_perl-module-extutils-makemaker += "perl-module-carp "
+RDEPENDS_perl-module-extutils-makemaker += "perl-module-config "
+RDEPENDS_perl-module-extutils-makemaker += "perl-module-file-path "
+RDEPENDS_perl-module-extutils-makemaker += "perl-module-strict "
+RDEPENDS_perl-module-extutils-makemaker-vmsish += "perl-module-vmsish "
+RDEPENDS_perl-module-extutils-makemaker-vmsish += "perl-module-vars "
+RDEPENDS_perl-module-extutils-manifest += "perl-module-exporter "
+RDEPENDS_perl-module-extutils-manifest += "perl-module-carp "
+RDEPENDS_perl-module-extutils-manifest += "perl-module-config "
+RDEPENDS_perl-module-extutils-manifest += "perl-module-file-copy "
+RDEPENDS_perl-module-extutils-manifest += "perl-module-file-find "
+RDEPENDS_perl-module-extutils-manifest += "perl-module-file-spec "
+RDEPENDS_perl-module-extutils-manifest += "perl-module-strict "
+RDEPENDS_perl-module-extutils-miniperl += "perl-module-exporter "
+RDEPENDS_perl-module-extutils-mkbootstrap += "perl-module-config "
+RDEPENDS_perl-module-extutils-mkbootstrap += "perl-module-exporter "
+RDEPENDS_perl-module-extutils-mksymlists += "perl-module-carp "
+RDEPENDS_perl-module-extutils-mksymlists += "perl-module-config "
+RDEPENDS_perl-module-extutils-mksymlists += "perl-module-exporter "
+RDEPENDS_perl-module-extutils-mksymlists += "perl-module-strict "
+RDEPENDS_perl-module-extutils-mksymlists += "perl-module-vars "
+RDEPENDS_perl-module-extutils-mm-any += "perl-module-config "
+RDEPENDS_perl-module-extutils-mm-any += "perl-module-file-spec "
+RDEPENDS_perl-module-extutils-mm-any += "perl-module-strict "
+RDEPENDS_perl-module-extutils-mm-any += "perl-module-vars "
+RDEPENDS_perl-module-extutils-mm-beos += "perl-module-extutils-mm-any "
+RDEPENDS_perl-module-extutils-mm-beos += "perl-module-extutils-mm-unix "
+RDEPENDS_perl-module-extutils-mm-beos += "perl-module-config "
+RDEPENDS_perl-module-extutils-mm-beos += "perl-module-file-spec "
+RDEPENDS_perl-module-extutils-mm-beos += "perl-module-vars "
+RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-extutils-mm-any "
+RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-extutils-mm-unix "
+RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-config "
+RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-file-spec "
+RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-strict "
+RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-vars "
+RDEPENDS_perl-module-extutils-mm-dos += "perl-module-extutils-mm-any "
+RDEPENDS_perl-module-extutils-mm-dos += "perl-module-extutils-mm-unix "
+RDEPENDS_perl-module-extutils-mm-dos += "perl-module-strict "
+RDEPENDS_perl-module-extutils-mm-dos += "perl-module-vars "
+RDEPENDS_perl-module-extutils-mm-macos += "perl-module-exporter "
+RDEPENDS_perl-module-extutils-mm-macos += "perl-module-extutils-mm-any "
+RDEPENDS_perl-module-extutils-mm-macos += "perl-module-extutils-mm-unix "
+RDEPENDS_perl-module-extutils-mm-macos += "perl-module-config "
+RDEPENDS_perl-module-extutils-mm-macos += "perl-module-cwd "
+RDEPENDS_perl-module-extutils-mm-macos += "perl-module-extutils-makemaker "
+RDEPENDS_perl-module-extutils-mm-macos += "perl-module-file-basename "
+RDEPENDS_perl-module-extutils-mm-macos += "perl-module-vars "
+RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-extutils-mm-win32 "
+RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-config "
+RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-extutils-makemaker "
+RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-file-basename "
+RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-strict "
+RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-vars "
+RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-extutils-mm-any "
+RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-extutils-mm-unix "
+RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-extutils-makemaker "
+RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-file-spec "
+RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-strict "
+RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-vars "
+RDEPENDS_perl-module-extutils-mm-unix += "perl-module-extutils-mm-any "
+RDEPENDS_perl-module-extutils-mm-unix += "perl-module-carp "
+RDEPENDS_perl-module-extutils-mm-unix += "perl-module-config "
+RDEPENDS_perl-module-extutils-mm-unix += "perl-module-dirhandle "
+RDEPENDS_perl-module-extutils-mm-unix += "perl-module-exporter "
+RDEPENDS_perl-module-extutils-mm-unix += "perl-module-extutils-makemaker "
+RDEPENDS_perl-module-extutils-mm-unix += "perl-module-file-basename "
+RDEPENDS_perl-module-extutils-mm-unix += "perl-module-strict "
+RDEPENDS_perl-module-extutils-mm += "perl-module-extutils-liblist "
+RDEPENDS_perl-module-extutils-mm += "perl-module-extutils-makemaker "
+RDEPENDS_perl-module-extutils-mm += "perl-module-config "
+RDEPENDS_perl-module-extutils-mm += "perl-module-strict "
+RDEPENDS_perl-module-extutils-mm += "perl-module-vars "
+RDEPENDS_perl-module-extutils-mm-uwin += "perl-module-extutils-mm-unix "
+RDEPENDS_perl-module-extutils-mm-uwin += "perl-module-strict "
+RDEPENDS_perl-module-extutils-mm-uwin += "perl-module-vars "
+RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-extutils-mm-any "
+RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-extutils-mm-unix "
+RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-config "
+RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-extutils-makemaker "
+RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-file-basename "
+RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-file-spec "
+RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-strict "
+RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-vars "
+RDEPENDS_perl-module-extutils-mm-win95 += "perl-module-extutils-mm-win32 "
+RDEPENDS_perl-module-extutils-mm-win95 += "perl-module-config "
+RDEPENDS_perl-module-extutils-mm-win95 += "perl-module-vars "
+RDEPENDS_perl-module-extutils-mm-vms += "perl-module-exporter "
+RDEPENDS_perl-module-extutils-mm-vms += "perl-module-extutils-mm-any "
+RDEPENDS_perl-module-extutils-mm-vms += "perl-module-extutils-mm-unix "
+RDEPENDS_perl-module-extutils-mm-vms += "perl-module-config "
+RDEPENDS_perl-module-extutils-mm-vms += "perl-module-extutils-makemaker "
+RDEPENDS_perl-module-extutils-mm-vms += "perl-module-file-basename "
+RDEPENDS_perl-module-extutils-mm-vms += "perl-module-strict "
+RDEPENDS_perl-module-extutils-mm-vms += "perl-module-vars "
+RDEPENDS_perl-module-extutils-my += "perl-module-extutils-mm "
+RDEPENDS_perl-module-extutils-my += "perl-module-strict "
+RDEPENDS_perl-module-extutils-my += "perl-module-vars "
+RDEPENDS_perl-module-extutils-packlist += "perl-module-carp "
+RDEPENDS_perl-module-extutils-packlist += "perl-module-strict "
+RDEPENDS_perl-module-extutils-packlist += "perl-module-vars "
+RDEPENDS_perl-module-extutils-testlib += "perl-module-cwd "
+RDEPENDS_perl-module-extutils-testlib += "perl-module-file-spec "
+RDEPENDS_perl-module-extutils-testlib += "perl-module-lib "
+RDEPENDS_perl-module-fatal += "perl-module-carp "
+RDEPENDS_perl-module-fatal += "perl-module-strict "
+RDEPENDS_perl-module-fcntl += "perl-module-exporter "
+RDEPENDS_perl-module-fcntl += "perl-module-xsloader "
+RDEPENDS_perl-module-fields += "perl-module-strict "
+RDEPENDS_perl-module-fields += "perl-module-vars "
+RDEPENDS_perl-module-file-basename += "perl-module-exporter "
+RDEPENDS_perl-module-file-basename += "perl-module-warnings "
+RDEPENDS_perl-module-filecache += "perl-module-base "
+RDEPENDS_perl-module-filecache += "perl-module-carp "
+RDEPENDS_perl-module-filecache += "perl-module-config "
+RDEPENDS_perl-module-filecache += "perl-module-strict "
+RDEPENDS_perl-module-filecache += "perl-module-vars "
+RDEPENDS_perl-module-file-checktree += "perl-module-cwd "
+RDEPENDS_perl-module-file-checktree += "perl-module-exporter "
+RDEPENDS_perl-module-file-checktree += "perl-module-file-spec "
+RDEPENDS_perl-module-file-checktree += "perl-module-strict "
+RDEPENDS_perl-module-file-checktree += "perl-module-warnings "
+RDEPENDS_perl-module-file-compare += "perl-module-exporter "
+RDEPENDS_perl-module-file-compare += "perl-module-carp "
+RDEPENDS_perl-module-file-compare += "perl-module-strict "
+RDEPENDS_perl-module-file-compare += "perl-module-warnings "
+RDEPENDS_perl-module-file-copy += "perl-module-exporter "
+RDEPENDS_perl-module-file-copy += "perl-module-carp "
+RDEPENDS_perl-module-file-copy += "perl-module-config "
+RDEPENDS_perl-module-file-copy += "perl-module-file-spec "
+RDEPENDS_perl-module-file-copy += "perl-module-strict "
+RDEPENDS_perl-module-file-copy += "perl-module-warnings "
+RDEPENDS_perl-module-file-dosglob += "perl-module-strict "
+RDEPENDS_perl-module-file-dosglob += "perl-module-warnings "
+RDEPENDS_perl-module-file-find += "perl-module-cwd "
+RDEPENDS_perl-module-file-find += "perl-module-exporter "
+RDEPENDS_perl-module-file-find += "perl-module-file-basename "
+RDEPENDS_perl-module-file-find += "perl-module-file-spec "
+RDEPENDS_perl-module-file-find += "perl-module-strict "
+RDEPENDS_perl-module-file-find += "perl-module-warnings "
+RDEPENDS_perl-module-file-find += "perl-module-warnings-register "
+RDEPENDS_perl-module-file-glob += "perl-module-strict "
+RDEPENDS_perl-module-file-glob += "perl-module-xsloader "
+RDEPENDS_perl-module-filehandle += "perl-module-io-file "
+RDEPENDS_perl-module-filehandle += "perl-module-strict "
+RDEPENDS_perl-module-file-path += "perl-module-carp "
+RDEPENDS_perl-module-file-path += "perl-module-exporter "
+RDEPENDS_perl-module-file-path += "perl-module-file-basename "
+RDEPENDS_perl-module-file-path += "perl-module-strict "
+RDEPENDS_perl-module-file-path += "perl-module-warnings "
+RDEPENDS_perl-module-file-spec-cygwin += "perl-module-file-spec-unix "
+RDEPENDS_perl-module-file-spec-cygwin += "perl-module-strict "
+RDEPENDS_perl-module-file-spec-cygwin += "perl-module-vars "
+RDEPENDS_perl-module-file-spec-epoc += "perl-module-file-spec-unix "
+RDEPENDS_perl-module-file-spec-epoc += "perl-module-strict "
+RDEPENDS_perl-module-file-spec-epoc += "perl-module-vars "
+RDEPENDS_perl-module-file-spec-functions += "perl-module-exporter "
+RDEPENDS_perl-module-file-spec-functions += "perl-module-file-spec "
+RDEPENDS_perl-module-file-spec-functions += "perl-module-strict "
+RDEPENDS_perl-module-file-spec-functions += "perl-module-vars "
+RDEPENDS_perl-module-file-spec-mac += "perl-module-file-spec-unix "
+RDEPENDS_perl-module-file-spec-mac += "perl-module-strict "
+RDEPENDS_perl-module-file-spec-mac += "perl-module-vars "
+RDEPENDS_perl-module-file-spec-os2 += "perl-module-file-spec-unix "
+RDEPENDS_perl-module-file-spec-os2 += "perl-module-strict "
+RDEPENDS_perl-module-file-spec-os2 += "perl-module-vars "
+RDEPENDS_perl-module-file-spec-unix += "perl-module-strict "
+RDEPENDS_perl-module-file-spec-unix += "perl-module-vars "
+RDEPENDS_perl-module-file-spec += "perl-module-strict "
+RDEPENDS_perl-module-file-spec += "perl-module-vars "
+RDEPENDS_perl-module-file-spec-win32 += "perl-module-file-spec-unix "
+RDEPENDS_perl-module-file-spec-win32 += "perl-module-strict "
+RDEPENDS_perl-module-file-spec-win32 += "perl-module-vars "
+RDEPENDS_perl-module-file-spec-vms += "perl-module-file-spec-unix "
+RDEPENDS_perl-module-file-spec-vms += "perl-module-file-basename "
+RDEPENDS_perl-module-file-spec-vms += "perl-module-strict "
+RDEPENDS_perl-module-file-spec-vms += "perl-module-vars "
+RDEPENDS_perl-module-file-stat += "perl-module-class-struct "
+RDEPENDS_perl-module-file-stat += "perl-module-strict "
+RDEPENDS_perl-module-file-stat += "perl-module-warnings "
+RDEPENDS_perl-module-file-stat += "perl-module-vars "
+RDEPENDS_perl-module-file-temp += "perl-module-base "
+RDEPENDS_perl-module-file-temp += "perl-module-carp "
+RDEPENDS_perl-module-file-temp += "perl-module-constant "
+RDEPENDS_perl-module-file-temp += "perl-module-errno "
+RDEPENDS_perl-module-file-temp += "perl-module-fcntl "
+RDEPENDS_perl-module-file-temp += "perl-module-file-path "
+RDEPENDS_perl-module-file-temp += "perl-module-file-spec "
+RDEPENDS_perl-module-file-temp += "perl-module-overload "
+RDEPENDS_perl-module-file-temp += "perl-module-strict "
+RDEPENDS_perl-module-file-temp += "perl-module-vars "
+RDEPENDS_perl-module-filter-simple += "perl-module-carp "
+RDEPENDS_perl-module-filter-simple += "perl-module-filter-util-call "
+RDEPENDS_perl-module-filter-simple += "perl-module-text-balanced "
+RDEPENDS_perl-module-filter-simple += "perl-module-vars "
+RDEPENDS_perl-module-filter-util-call += "perl-module-dynaloader "
+RDEPENDS_perl-module-filter-util-call += "perl-module-exporter "
+RDEPENDS_perl-module-filter-util-call += "perl-module-carp "
+RDEPENDS_perl-module-filter-util-call += "perl-module-strict "
+RDEPENDS_perl-module-filter-util-call += "perl-module-warnings "
+RDEPENDS_perl-module-filter-util-call += "perl-module-vars "
+RDEPENDS_perl-module-findbin += "perl-module-exporter "
+RDEPENDS_perl-module-findbin += "perl-module-carp "
+RDEPENDS_perl-module-findbin += "perl-module-config "
+RDEPENDS_perl-module-findbin += "perl-module-cwd "
+RDEPENDS_perl-module-findbin += "perl-module-file-basename "
+RDEPENDS_perl-module-findbin += "perl-module-file-spec "
+RDEPENDS_perl-module-getopt-long += "perl-module-constant "
+RDEPENDS_perl-module-getopt-long += "perl-module-exporter "
+RDEPENDS_perl-module-getopt-long += "perl-module-strict "
+RDEPENDS_perl-module-getopt-long += "perl-module-vars "
+RDEPENDS_perl-module-getopt-std += "perl-module-exporter "
+RDEPENDS_perl-module-hash-util += "perl-module-exporter "
+RDEPENDS_perl-module-hash-util += "perl-module-carp "
+RDEPENDS_perl-module-hash-util += "perl-module-strict "
+RDEPENDS_perl-module-i18n-collate += "perl-module-exporter "
+RDEPENDS_perl-module-i18n-collate += "perl-module-posix "
+RDEPENDS_perl-module-i18n-collate += "perl-module-strict "
+RDEPENDS_perl-module-i18n-collate += "perl-module-warnings-register "
+RDEPENDS_perl-module-i18n-langinfo += "perl-module-dynaloader "
+RDEPENDS_perl-module-i18n-langinfo += "perl-module-exporter "
+RDEPENDS_perl-module-i18n-langinfo += "perl-module-autoloader "
+RDEPENDS_perl-module-i18n-langinfo += "perl-module-carp "
+RDEPENDS_perl-module-i18n-langinfo += "perl-module-strict "
+RDEPENDS_perl-module-i18n-langinfo += "perl-module-warnings "
+RDEPENDS_perl-module-i18n-langtags-detect += "perl-module-i18n-langtags "
+RDEPENDS_perl-module-i18n-langtags-detect += "perl-module-strict "
+RDEPENDS_perl-module-i18n-langtags-list += "perl-module-strict "
+RDEPENDS_perl-module-i18n-langtags-list += "perl-module-vars "
+RDEPENDS_perl-module-i18n-langtags += "perl-module-exporter "
+RDEPENDS_perl-module-i18n-langtags += "perl-module-strict "
+RDEPENDS_perl-module-i18n-langtags += "perl-module-vars "
+RDEPENDS_perl-module-io-dir += "perl-module-carp "
+RDEPENDS_perl-module-io-dir += "perl-module-exporter "
+RDEPENDS_perl-module-io-dir += "perl-module-file-spec "
+RDEPENDS_perl-module-io-dir += "perl-module-file-stat "
+RDEPENDS_perl-module-io-dir += "perl-module-io-file "
+RDEPENDS_perl-module-io-dir += "perl-module-strict "
+RDEPENDS_perl-module-io-dir += "perl-module-symbol "
+RDEPENDS_perl-module-io-dir += "perl-module-tie-hash "
+RDEPENDS_perl-module-io-file += "perl-module-exporter "
+RDEPENDS_perl-module-io-file += "perl-module-carp "
+RDEPENDS_perl-module-io-file += "perl-module-file-spec "
+RDEPENDS_perl-module-io-file += "perl-module-io-seekable "
+RDEPENDS_perl-module-io-file += "perl-module-selectsaver "
+RDEPENDS_perl-module-io-file += "perl-module-strict "
+RDEPENDS_perl-module-io-file += "perl-module-symbol "
+RDEPENDS_perl-module-io-handle += "perl-module-exporter "
+RDEPENDS_perl-module-io-handle += "perl-module-carp "
+RDEPENDS_perl-module-io-handle += "perl-module-selectsaver "
+RDEPENDS_perl-module-io-handle += "perl-module-strict "
+RDEPENDS_perl-module-io-handle += "perl-module-symbol "
+RDEPENDS_perl-module-io-pipe += "perl-module-carp "
+RDEPENDS_perl-module-io-pipe += "perl-module-io-handle "
+RDEPENDS_perl-module-io-pipe += "perl-module-strict "
+RDEPENDS_perl-module-io-pipe += "perl-module-symbol "
+RDEPENDS_perl-module-io-poll += "perl-module-exporter "
+RDEPENDS_perl-module-io-poll += "perl-module-io-handle "
+RDEPENDS_perl-module-io-poll += "perl-module-strict "
+RDEPENDS_perl-module-io-seekable += "perl-module-exporter "
+RDEPENDS_perl-module-io-seekable += "perl-module-carp "
+RDEPENDS_perl-module-io-seekable += "perl-module-fcntl "
+RDEPENDS_perl-module-io-seekable += "perl-module-io-handle "
+RDEPENDS_perl-module-io-seekable += "perl-module-strict "
+RDEPENDS_perl-module-io-select += "perl-module-exporter "
+RDEPENDS_perl-module-io-select += "perl-module-strict "
+RDEPENDS_perl-module-io-select += "perl-module-warnings-register "
+RDEPENDS_perl-module-io-select += "perl-module-vars "
+RDEPENDS_perl-module-io-socket-inet += "perl-module-carp "
+RDEPENDS_perl-module-io-socket-inet += "perl-module-errno "
+RDEPENDS_perl-module-io-socket-inet += "perl-module-exporter "
+RDEPENDS_perl-module-io-socket-inet += "perl-module-io-socket "
+RDEPENDS_perl-module-io-socket-inet += "perl-module-socket "
+RDEPENDS_perl-module-io-socket-inet += "perl-module-strict "
+RDEPENDS_perl-module-io-socket-unix += "perl-module-carp "
+RDEPENDS_perl-module-io-socket-unix += "perl-module-io-socket "
+RDEPENDS_perl-module-io-socket-unix += "perl-module-socket "
+RDEPENDS_perl-module-io-socket-unix += "perl-module-strict "
+RDEPENDS_perl-module-io-socket += "perl-module-io-socket-inet "
+RDEPENDS_perl-module-io-socket += "perl-module-io-socket-unix "
+RDEPENDS_perl-module-io-socket += "perl-module-carp "
+RDEPENDS_perl-module-io-socket += "perl-module-errno "
+RDEPENDS_perl-module-io-socket += "perl-module-exporter "
+RDEPENDS_perl-module-io-socket += "perl-module-io-handle "
+RDEPENDS_perl-module-io-socket += "perl-module-socket "
+RDEPENDS_perl-module-io-socket += "perl-module-strict "
+RDEPENDS_perl-module-io += "perl-module-carp "
+RDEPENDS_perl-module-io += "perl-module-strict "
+RDEPENDS_perl-module-io += "perl-module-warnings "
+RDEPENDS_perl-module-io += "perl-module-xsloader "
+RDEPENDS_perl-module-ipc-msg += "perl-module-carp "
+RDEPENDS_perl-module-ipc-msg += "perl-module-ipc-sysv "
+RDEPENDS_perl-module-ipc-msg += "perl-module-strict "
+RDEPENDS_perl-module-ipc-msg += "perl-module-vars "
+RDEPENDS_perl-module-ipc-open2 += "perl-module-exporter "
+RDEPENDS_perl-module-ipc-open2 += "perl-module-ipc-open3 "
+RDEPENDS_perl-module-ipc-open2 += "perl-module-strict "
+RDEPENDS_perl-module-ipc-open3 += "perl-module-exporter "
+RDEPENDS_perl-module-ipc-open3 += "perl-module-carp "
+RDEPENDS_perl-module-ipc-open3 += "perl-module-strict "
+RDEPENDS_perl-module-ipc-open3 += "perl-module-symbol "
+RDEPENDS_perl-module-ipc-semaphore += "perl-module-carp "
+RDEPENDS_perl-module-ipc-semaphore += "perl-module-strict "
+RDEPENDS_perl-module-ipc-semaphore += "perl-module-vars "
+RDEPENDS_perl-module-ipc-sysv += "perl-module-exporter "
+RDEPENDS_perl-module-ipc-sysv += "perl-module-carp "
+RDEPENDS_perl-module-ipc-sysv += "perl-module-config "
+RDEPENDS_perl-module-ipc-sysv += "perl-module-strict "
+RDEPENDS_perl-module-ipc-sysv += "perl-module-vars "
+RDEPENDS_perl-module-lib += "perl-module-config "
+RDEPENDS_perl-module-lib += "perl-module-strict "
+RDEPENDS_perl-module-list-util += "perl-module-exporter "
+RDEPENDS_perl-module-list-util += "perl-module-vars "
+RDEPENDS_perl-module-locale-constants += "perl-module-exporter "
+RDEPENDS_perl-module-locale-constants += "perl-module-constant "
+RDEPENDS_perl-module-locale-constants += "perl-module-strict "
+RDEPENDS_perl-module-locale-constants += "perl-module-vars "
+RDEPENDS_perl-module-locale-country += "perl-module-exporter "
+RDEPENDS_perl-module-locale-country += "perl-module-carp "
+RDEPENDS_perl-module-locale-country += "perl-module-locale-constants "
+RDEPENDS_perl-module-locale-country += "perl-module-strict "
+RDEPENDS_perl-module-locale-country += "perl-module-vars "
+RDEPENDS_perl-module-locale-currency += "perl-module-exporter "
+RDEPENDS_perl-module-locale-currency += "perl-module-strict "
+RDEPENDS_perl-module-locale-currency += "perl-module-vars "
+RDEPENDS_perl-module-locale-language += "perl-module-exporter "
+RDEPENDS_perl-module-locale-language += "perl-module-strict "
+RDEPENDS_perl-module-locale-language += "perl-module-vars "
+RDEPENDS_perl-module-locale-maketext-gutsloader += "perl-module-strict "
+RDEPENDS_perl-module-locale-maketext-guts += "perl-module-strict "
+RDEPENDS_perl-module-locale-maketext-guts += "perl-module-utf8 "
+RDEPENDS_perl-module-locale-maketext-guts += "perl-module-vars "
+RDEPENDS_perl-module-locale-maketext += "perl-module-carp "
+RDEPENDS_perl-module-locale-maketext += "perl-module-i18n-langtags "
+RDEPENDS_perl-module-locale-maketext += "perl-module-locale-maketext-gutsloader "
+RDEPENDS_perl-module-locale-maketext += "perl-module-strict "
+RDEPENDS_perl-module-locale-script += "perl-module-exporter "
+RDEPENDS_perl-module-locale-script += "perl-module-carp "
+RDEPENDS_perl-module-locale-script += "perl-module-locale-constants "
+RDEPENDS_perl-module-locale-script += "perl-module-strict "
+RDEPENDS_perl-module-locale-script += "perl-module-vars "
+RDEPENDS_perl-module-math-bigfloat-trace += "perl-module-exporter "
+RDEPENDS_perl-module-math-bigfloat-trace += "perl-module-math-bigfloat "
+RDEPENDS_perl-module-math-bigfloat-trace += "perl-module-strict "
+RDEPENDS_perl-module-math-bigfloat += "perl-module-exporter "
+RDEPENDS_perl-module-math-bigfloat += "perl-module-strict "
+RDEPENDS_perl-module-math-bigint-calcemu += "perl-module-strict "
+RDEPENDS_perl-module-math-bigint-calcemu += "perl-module-vars "
+RDEPENDS_perl-module-math-bigint-calc += "perl-module-strict "
+RDEPENDS_perl-module-math-bigint-calc += "perl-module-vars "
+RDEPENDS_perl-module-math-bigint-trace += "perl-module-exporter "
+RDEPENDS_perl-module-math-bigint-trace += "perl-module-math-bigint "
+RDEPENDS_perl-module-math-bigint-trace += "perl-module-strict "
+RDEPENDS_perl-module-math-bigint += "perl-module-strict "
+RDEPENDS_perl-module-math-bigrat += "perl-module-math-bigfloat "
+RDEPENDS_perl-module-math-bigrat += "perl-module-strict "
+RDEPENDS_perl-module-math-complex += "perl-module-exporter "
+RDEPENDS_perl-module-math-complex += "perl-module-strict "
+RDEPENDS_perl-module-math-trig += "perl-module-exporter "
+RDEPENDS_perl-module-math-trig += "perl-module-math-complex "
+RDEPENDS_perl-module-math-trig += "perl-module-strict "
+RDEPENDS_perl-module-memoize-anydbm-file += "perl-module-vars "
+RDEPENDS_perl-module-memoize-expirefile += "perl-module-carp "
+RDEPENDS_perl-module-memoize-expire += "perl-module-carp "
+RDEPENDS_perl-module-memoize-sdbm-file += "perl-module-sdbm-file "
+RDEPENDS_perl-module-memoize-storable += "perl-module-storable "
+RDEPENDS_perl-module-memoize += "perl-module-carp "
+RDEPENDS_perl-module-memoize += "perl-module-exporter "
+RDEPENDS_perl-module-memoize += "perl-module-strict "
+RDEPENDS_perl-module-memoize += "perl-module-vars "
+RDEPENDS_perl-module-mime-base64 += "perl-module-dynaloader "
+RDEPENDS_perl-module-mime-base64 += "perl-module-exporter "
+RDEPENDS_perl-module-mime-base64 += "perl-module-strict "
+RDEPENDS_perl-module-mime-base64 += "perl-module-vars "
+RDEPENDS_perl-module-mime-quotedprint += "perl-module-exporter "
+RDEPENDS_perl-module-mime-quotedprint += "perl-module-strict "
+RDEPENDS_perl-module-mime-quotedprint += "perl-module-vars "
+RDEPENDS_perl-module-net-cmd += "perl-module-exporter "
+RDEPENDS_perl-module-net-cmd += "perl-module-carp "
+RDEPENDS_perl-module-net-cmd += "perl-module-strict "
+RDEPENDS_perl-module-net-cmd += "perl-module-symbol "
+RDEPENDS_perl-module-net-cmd += "perl-module-vars "
+RDEPENDS_perl-module-net-config += "perl-module-exporter "
+RDEPENDS_perl-module-net-config += "perl-module-socket "
+RDEPENDS_perl-module-net-config += "perl-module-strict "
+RDEPENDS_perl-module-net-config += "perl-module-vars "
+RDEPENDS_perl-module-net-domain += "perl-module-exporter "
+RDEPENDS_perl-module-net-domain += "perl-module-carp "
+RDEPENDS_perl-module-net-domain += "perl-module-net-config "
+RDEPENDS_perl-module-net-domain += "perl-module-strict "
+RDEPENDS_perl-module-net-domain += "perl-module-vars "
+RDEPENDS_perl-module-net-ftp-a += "perl-module-net-ftp-dataconn "
+RDEPENDS_perl-module-net-ftp-a += "perl-module-carp "
+RDEPENDS_perl-module-net-ftp-a += "perl-module-strict "
+RDEPENDS_perl-module-net-ftp-a += "perl-module-vars "
+RDEPENDS_perl-module-net-ftp-dataconn += "perl-module-carp "
+RDEPENDS_perl-module-net-ftp-dataconn += "perl-module-errno "
+RDEPENDS_perl-module-net-ftp-dataconn += "perl-module-net-cmd "
+RDEPENDS_perl-module-net-ftp-dataconn += "perl-module-vars "
+RDEPENDS_perl-module-net-ftp-e += "perl-module-net-ftp-i "
+RDEPENDS_perl-module-net-ftp-i += "perl-module-net-ftp-dataconn "
+RDEPENDS_perl-module-net-ftp-i += "perl-module-carp "
+RDEPENDS_perl-module-net-ftp-i += "perl-module-vars "
+RDEPENDS_perl-module-net-ftp-l += "perl-module-net-ftp-i "
+RDEPENDS_perl-module-net-ftp += "perl-module-carp "
+RDEPENDS_perl-module-net-ftp += "perl-module-fcntl "
+RDEPENDS_perl-module-net-ftp += "perl-module-io-socket "
+RDEPENDS_perl-module-net-ftp += "perl-module-net-cmd "
+RDEPENDS_perl-module-net-ftp += "perl-module-net-config "
+RDEPENDS_perl-module-net-ftp += "perl-module-socket "
+RDEPENDS_perl-module-net-ftp += "perl-module-strict "
+RDEPENDS_perl-module-net-ftp += "perl-module-time-local "
+RDEPENDS_perl-module-net-ftp += "perl-module-vars "
+RDEPENDS_perl-module-net-hostent += "perl-module-class-struct "
+RDEPENDS_perl-module-net-hostent += "perl-module-strict "
+RDEPENDS_perl-module-net-hostent += "perl-module-vars "
+RDEPENDS_perl-module-net-netent += "perl-module-class-struct "
+RDEPENDS_perl-module-net-netent += "perl-module-strict "
+RDEPENDS_perl-module-net-netent += "perl-module-vars "
+RDEPENDS_perl-module-net-netrc += "perl-module-carp "
+RDEPENDS_perl-module-net-netrc += "perl-module-filehandle "
+RDEPENDS_perl-module-net-netrc += "perl-module-strict "
+RDEPENDS_perl-module-net-netrc += "perl-module-vars "
+RDEPENDS_perl-module-net-nntp += "perl-module-carp "
+RDEPENDS_perl-module-net-nntp += "perl-module-io-socket "
+RDEPENDS_perl-module-net-nntp += "perl-module-net-cmd "
+RDEPENDS_perl-module-net-nntp += "perl-module-net-config "
+RDEPENDS_perl-module-net-nntp += "perl-module-strict "
+RDEPENDS_perl-module-net-nntp += "perl-module-time-local "
+RDEPENDS_perl-module-net-nntp += "perl-module-vars "
+RDEPENDS_perl-module-net-ping += "perl-module-exporter "
+RDEPENDS_perl-module-net-ping += "perl-module-carp "
+RDEPENDS_perl-module-net-ping += "perl-module-constant "
+RDEPENDS_perl-module-net-ping += "perl-module-fcntl "
+RDEPENDS_perl-module-net-ping += "perl-module-filehandle "
+RDEPENDS_perl-module-net-ping += "perl-module-posix "
+RDEPENDS_perl-module-net-ping += "perl-module-strict "
+RDEPENDS_perl-module-net-pop3 += "perl-module-carp "
+RDEPENDS_perl-module-net-pop3 += "perl-module-io-socket "
+RDEPENDS_perl-module-net-pop3 += "perl-module-net-cmd "
+RDEPENDS_perl-module-net-pop3 += "perl-module-net-config "
+RDEPENDS_perl-module-net-pop3 += "perl-module-strict "
+RDEPENDS_perl-module-net-pop3 += "perl-module-vars "
+RDEPENDS_perl-module-net-protoent += "perl-module-class-struct "
+RDEPENDS_perl-module-net-protoent += "perl-module-strict "
+RDEPENDS_perl-module-net-protoent += "perl-module-vars "
+RDEPENDS_perl-module-net-servent += "perl-module-class-struct "
+RDEPENDS_perl-module-net-servent += "perl-module-strict "
+RDEPENDS_perl-module-net-servent += "perl-module-vars "
+RDEPENDS_perl-module-net-smtp += "perl-module-carp "
+RDEPENDS_perl-module-net-smtp += "perl-module-io-socket "
+RDEPENDS_perl-module-net-smtp += "perl-module-net-cmd "
+RDEPENDS_perl-module-net-smtp += "perl-module-net-config "
+RDEPENDS_perl-module-net-smtp += "perl-module-socket "
+RDEPENDS_perl-module-net-smtp += "perl-module-strict "
+RDEPENDS_perl-module-net-smtp += "perl-module-vars "
+RDEPENDS_perl-module-net-time += "perl-module-exporter "
+RDEPENDS_perl-module-net-time += "perl-module-carp "
+RDEPENDS_perl-module-net-time += "perl-module-io-select "
+RDEPENDS_perl-module-net-time += "perl-module-io-socket "
+RDEPENDS_perl-module-net-time += "perl-module-net-config "
+RDEPENDS_perl-module-net-time += "perl-module-strict "
+RDEPENDS_perl-module-net-time += "perl-module-vars "
+RDEPENDS_perl-module-next += "perl-module-carp "
+RDEPENDS_perl-module-next += "perl-module-strict "
+RDEPENDS_perl-module-opcode += "perl-module-carp "
+RDEPENDS_perl-module-opcode += "perl-module-exporter "
+RDEPENDS_perl-module-opcode += "perl-module-strict "
+RDEPENDS_perl-module-opcode += "perl-module-subs "
+RDEPENDS_perl-module-opcode += "perl-module-xsloader "
+RDEPENDS_perl-module-open += "perl-module-carp "
+RDEPENDS_perl-module-open += "perl-module-warnings "
+RDEPENDS_perl-module-ops += "perl-module-opcode "
+RDEPENDS_perl-module-o += "perl-module-b "
+RDEPENDS_perl-module-o += "perl-module-carp "
+RDEPENDS_perl-module-overload += "perl-module-warnings-register "
+RDEPENDS_perl-module-perlio-encoding += "perl-module-strict "
+RDEPENDS_perl-module-perlio-encoding += "perl-module-xsloader "
+RDEPENDS_perl-module-perlio-scalar += "perl-module-xsloader "
+RDEPENDS_perl-module-perlio-via-quotedprint += "perl-module-strict "
+RDEPENDS_perl-module-perlio-via += "perl-module-xsloader "
+RDEPENDS_perl-module-pod-checker += "perl-module-carp "
+RDEPENDS_perl-module-pod-checker += "perl-module-exporter "
+RDEPENDS_perl-module-pod-checker += "perl-module-pod-parser "
+RDEPENDS_perl-module-pod-checker += "perl-module-strict "
+RDEPENDS_perl-module-pod-checker += "perl-module-vars "
+RDEPENDS_perl-module-pod-find += "perl-module-carp "
+RDEPENDS_perl-module-pod-find += "perl-module-cwd "
+RDEPENDS_perl-module-pod-find += "perl-module-exporter "
+RDEPENDS_perl-module-pod-find += "perl-module-file-find "
+RDEPENDS_perl-module-pod-find += "perl-module-file-spec "
+RDEPENDS_perl-module-pod-find += "perl-module-strict "
+RDEPENDS_perl-module-pod-find += "perl-module-vars "
+RDEPENDS_perl-module-pod-functions += "perl-module-exporter "
+RDEPENDS_perl-module-pod-functions += "perl-module-strict "
+RDEPENDS_perl-module-pod-html += "perl-module-exporter "
+RDEPENDS_perl-module-pod-html += "perl-module-carp "
+RDEPENDS_perl-module-pod-html += "perl-module-config "
+RDEPENDS_perl-module-pod-html += "perl-module-cwd "
+RDEPENDS_perl-module-pod-html += "perl-module-file-spec "
+RDEPENDS_perl-module-pod-html += "perl-module-file-spec-unix "
+RDEPENDS_perl-module-pod-html += "perl-module-getopt-long "
+RDEPENDS_perl-module-pod-html += "perl-module-strict "
+RDEPENDS_perl-module-pod-html += "perl-module-vars "
+RDEPENDS_perl-module-pod-inputobjects += "perl-module-strict "
+RDEPENDS_perl-module-pod-inputobjects += "perl-module-vars "
+RDEPENDS_perl-module-pod-latex += "perl-module-pod-parseutils "
+RDEPENDS_perl-module-pod-latex += "perl-module-base "
+RDEPENDS_perl-module-pod-latex += "perl-module-carp "
+RDEPENDS_perl-module-pod-latex += "perl-module-strict "
+RDEPENDS_perl-module-pod-latex += "perl-module-vars "
+RDEPENDS_perl-module-pod-man += "perl-module-carp "
+RDEPENDS_perl-module-pod-man += "perl-module-pod-parselink "
+RDEPENDS_perl-module-pod-man += "perl-module-pod-parser "
+RDEPENDS_perl-module-pod-man += "perl-module-strict "
+RDEPENDS_perl-module-pod-man += "perl-module-subs "
+RDEPENDS_perl-module-pod-man += "perl-module-vars "
+RDEPENDS_perl-module-pod-parselink += "perl-module-exporter "
+RDEPENDS_perl-module-pod-parselink += "perl-module-strict "
+RDEPENDS_perl-module-pod-parselink += "perl-module-vars "
+RDEPENDS_perl-module-pod-parser += "perl-module-carp "
+RDEPENDS_perl-module-pod-parser += "perl-module-exporter "
+RDEPENDS_perl-module-pod-parser += "perl-module-pod-inputobjects "
+RDEPENDS_perl-module-pod-parser += "perl-module-strict "
+RDEPENDS_perl-module-pod-parser += "perl-module-vars "
+RDEPENDS_perl-module-pod-parseutils += "perl-module-carp "
+RDEPENDS_perl-module-pod-parseutils += "perl-module-vars "
+RDEPENDS_perl-module-pod-perldoc-baseto += "perl-module-strict "
+RDEPENDS_perl-module-pod-perldoc-baseto += "perl-module-warnings "
+RDEPENDS_perl-module-pod-perldoc-getoptsoo += "perl-module-strict "
+RDEPENDS_perl-module-pod-perldoc-tochecker += "perl-module-strict "
+RDEPENDS_perl-module-pod-perldoc-tochecker += "perl-module-warnings "
+RDEPENDS_perl-module-pod-perldoc-tochecker += "perl-module-vars "
+RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-base "
+RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-file-spec-functions "
+RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-strict "
+RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-warnings "
+RDEPENDS_perl-module-pod-perldoc-tonroff += "perl-module-base "
+RDEPENDS_perl-module-pod-perldoc-tonroff += "perl-module-pod-man "
+RDEPENDS_perl-module-pod-perldoc-tonroff += "perl-module-strict "
+RDEPENDS_perl-module-pod-perldoc-tonroff += "perl-module-warnings "
+RDEPENDS_perl-module-pod-perldoc-topod += "perl-module-base "
+RDEPENDS_perl-module-pod-perldoc-topod += "perl-module-strict "
+RDEPENDS_perl-module-pod-perldoc-topod += "perl-module-warnings "
+RDEPENDS_perl-module-pod-perldoc-tortf += "perl-module-base "
+RDEPENDS_perl-module-pod-perldoc-tortf += "perl-module-strict "
+RDEPENDS_perl-module-pod-perldoc-tortf += "perl-module-warnings "
+RDEPENDS_perl-module-pod-perldoc-tortf += "perl-module-vars "
+RDEPENDS_perl-module-pod-perldoc-totext += "perl-module-base "
+RDEPENDS_perl-module-pod-perldoc-totext += "perl-module-pod-text "
+RDEPENDS_perl-module-pod-perldoc-totext += "perl-module-strict "
+RDEPENDS_perl-module-pod-perldoc-totext += "perl-module-warnings "
+RDEPENDS_perl-module-pod-perldoc-totk += "perl-module-base "
+RDEPENDS_perl-module-pod-perldoc-totk += "perl-module-file-spec-functions "
+RDEPENDS_perl-module-pod-perldoc-totk += "perl-module-pod-perldoc "
+RDEPENDS_perl-module-pod-perldoc-totk += "perl-module-strict "
+RDEPENDS_perl-module-pod-perldoc-totk += "perl-module-warnings "
+RDEPENDS_perl-module-pod-perldoc-toxml += "perl-module-base "
+RDEPENDS_perl-module-pod-perldoc-toxml += "perl-module-strict "
+RDEPENDS_perl-module-pod-perldoc-toxml += "perl-module-warnings "
+RDEPENDS_perl-module-pod-perldoc-toxml += "perl-module-vars "
+RDEPENDS_perl-module-pod-perldoc += "perl-module-config "
+RDEPENDS_perl-module-pod-perldoc += "perl-module-file-spec-functions "
+RDEPENDS_perl-module-pod-perldoc += "perl-module-strict "
+RDEPENDS_perl-module-pod-perldoc += "perl-module-warnings "
+RDEPENDS_perl-module-pod-plainer += "perl-module-pod-parser "
+RDEPENDS_perl-module-pod-plainer += "perl-module-strict "
+RDEPENDS_perl-module-pod-plaintext += "perl-module-carp "
+RDEPENDS_perl-module-pod-plaintext += "perl-module-pod-select "
+RDEPENDS_perl-module-pod-plaintext += "perl-module-strict "
+RDEPENDS_perl-module-pod-plaintext += "perl-module-vars "
+RDEPENDS_perl-module-pod-select += "perl-module-carp "
+RDEPENDS_perl-module-pod-select += "perl-module-pod-parser "
+RDEPENDS_perl-module-pod-select += "perl-module-strict "
+RDEPENDS_perl-module-pod-select += "perl-module-vars "
+RDEPENDS_perl-module-pod-text-color += "perl-module-pod-text "
+RDEPENDS_perl-module-pod-text-color += "perl-module-strict "
+RDEPENDS_perl-module-pod-text-color += "perl-module-term-ansicolor "
+RDEPENDS_perl-module-pod-text-color += "perl-module-vars "
+RDEPENDS_perl-module-pod-text-overstrike += "perl-module-pod-text "
+RDEPENDS_perl-module-pod-text-overstrike += "perl-module-strict "
+RDEPENDS_perl-module-pod-text-overstrike += "perl-module-vars "
+RDEPENDS_perl-module-pod-text-termcap += "perl-module-pod-text "
+RDEPENDS_perl-module-pod-text-termcap += "perl-module-posix "
+RDEPENDS_perl-module-pod-text-termcap += "perl-module-strict "
+RDEPENDS_perl-module-pod-text-termcap += "perl-module-term-cap "
+RDEPENDS_perl-module-pod-text-termcap += "perl-module-vars "
+RDEPENDS_perl-module-pod-text += "perl-module-carp "
+RDEPENDS_perl-module-pod-text += "perl-module-exporter "
+RDEPENDS_perl-module-pod-text += "perl-module-pod-parselink "
+RDEPENDS_perl-module-pod-text += "perl-module-pod-select "
+RDEPENDS_perl-module-pod-text += "perl-module-strict "
+RDEPENDS_perl-module-pod-text += "perl-module-vars "
+RDEPENDS_perl-module-pod-usage += "perl-module-carp "
+RDEPENDS_perl-module-pod-usage += "perl-module-config "
+RDEPENDS_perl-module-pod-usage += "perl-module-exporter "
+RDEPENDS_perl-module-pod-usage += "perl-module-file-spec "
+RDEPENDS_perl-module-pod-usage += "perl-module-strict "
+RDEPENDS_perl-module-pod-usage += "perl-module-vars "
+RDEPENDS_perl-module-posix += "perl-module-exporter "
+RDEPENDS_perl-module-posix += "perl-module-autoloader "
+RDEPENDS_perl-module-posix += "perl-module-autoloader "
+RDEPENDS_perl-module-posix += "perl-module-xsloader "
+RDEPENDS_perl-module-safe += "perl-module-carp "
+RDEPENDS_perl-module-safe += "perl-module-carp-heavy "
+RDEPENDS_perl-module-safe += "perl-module-strict "
+RDEPENDS_perl-module-scalar-util += "perl-module-exporter "
+RDEPENDS_perl-module-sdbm-file += "perl-module-tie-hash "
+RDEPENDS_perl-module-sdbm-file += "perl-module-strict "
+RDEPENDS_perl-module-sdbm-file += "perl-module-warnings "
+RDEPENDS_perl-module-sdbm-file += "perl-module-xsloader "
+RDEPENDS_perl-module-search-dict += "perl-module-exporter "
+RDEPENDS_perl-module-search-dict += "perl-module-strict "
+RDEPENDS_perl-module-selectsaver += "perl-module-carp "
+RDEPENDS_perl-module-selectsaver += "perl-module-symbol "
+RDEPENDS_perl-module-selfloader += "perl-module-exporter "
+RDEPENDS_perl-module-shell += "perl-module-file-spec-functions "
+RDEPENDS_perl-module-shell += "perl-module-strict "
+RDEPENDS_perl-module-shell += "perl-module-warnings "
+RDEPENDS_perl-module-sigtrap += "perl-module-carp "
+RDEPENDS_perl-module-socket += "perl-module-exporter "
+RDEPENDS_perl-module-socket += "perl-module-carp "
+RDEPENDS_perl-module-socket += "perl-module-warnings-register "
+RDEPENDS_perl-module-socket += "perl-module-xsloader "
+RDEPENDS_perl-module-sort += "perl-module-strict "
+RDEPENDS_perl-module-storable += "perl-module-carp "
+RDEPENDS_perl-module-storable += "perl-module-dynaloader "
+RDEPENDS_perl-module-storable += "perl-module-exporter "
+RDEPENDS_perl-module-storable += "perl-module-autoloader "
+RDEPENDS_perl-module-storable += "perl-module-vars "
+RDEPENDS_perl-module-switch += "perl-module-carp "
+RDEPENDS_perl-module-switch += "perl-module-filter-util-call "
+RDEPENDS_perl-module-switch += "perl-module-strict "
+RDEPENDS_perl-module-switch += "perl-module-text-balanced "
+RDEPENDS_perl-module-switch += "perl-module-vars "
+RDEPENDS_perl-module-symbol += "perl-module-exporter "
+RDEPENDS_perl-module-sys-hostname += "perl-module-autoloader "
+RDEPENDS_perl-module-sys-hostname += "perl-module-exporter "
+RDEPENDS_perl-module-sys-hostname += "perl-module-carp "
+RDEPENDS_perl-module-sys-hostname += "perl-module-strict "
+RDEPENDS_perl-module-sys-syslog += "perl-module-dynaloader "
+RDEPENDS_perl-module-sys-syslog += "perl-module-exporter "
+RDEPENDS_perl-module-sys-syslog += "perl-module-carp "
+RDEPENDS_perl-module-sys-syslog += "perl-module-socket "
+RDEPENDS_perl-module-sys-syslog += "perl-module-strict "
+RDEPENDS_perl-module-sys-syslog += "perl-module-sys-hostname "
+RDEPENDS_perl-module-term-ansicolor += "perl-module-exporter "
+RDEPENDS_perl-module-term-ansicolor += "perl-module-strict "
+RDEPENDS_perl-module-term-cap += "perl-module-strict "
+RDEPENDS_perl-module-term-cap += "perl-module-vars "
+RDEPENDS_perl-module-term-complete += "perl-module-exporter "
+RDEPENDS_perl-module-term-complete += "perl-module-strict "
+RDEPENDS_perl-module-term-readline += "perl-module-strict "
+RDEPENDS_perl-module-test-builder += "perl-module-strict "
+RDEPENDS_perl-module-test-builder += "perl-module-vars "
+RDEPENDS_perl-module-test-harness-assert += "perl-module-exporter "
+RDEPENDS_perl-module-test-harness-assert += "perl-module-strict "
+RDEPENDS_perl-module-test-harness-assert += "perl-module-vars "
+RDEPENDS_perl-module-test-harness-iterator += "perl-module-strict "
+RDEPENDS_perl-module-test-harness-iterator += "perl-module-vars "
+RDEPENDS_perl-module-test-harness-point += "perl-module-strict "
+RDEPENDS_perl-module-test-harness-point += "perl-module-vars "
+RDEPENDS_perl-module-test-harness-straps += "perl-module-config "
+RDEPENDS_perl-module-test-harness-straps += "perl-module-strict "
+RDEPENDS_perl-module-test-harness-straps += "perl-module-test-harness-assert "
+RDEPENDS_perl-module-test-harness-straps += "perl-module-test-harness-iterator "
+RDEPENDS_perl-module-test-harness-straps += "perl-module-test-harness-point "
+RDEPENDS_perl-module-test-harness-straps += "perl-module-vars "
+RDEPENDS_perl-module-test-harness += "perl-module-benchmark "
+RDEPENDS_perl-module-test-harness += "perl-module-config "
+RDEPENDS_perl-module-test-harness += "perl-module-exporter "
+RDEPENDS_perl-module-test-harness += "perl-module-strict "
+RDEPENDS_perl-module-test-harness += "perl-module-test-harness-assert "
+RDEPENDS_perl-module-test-harness += "perl-module-test-harness-straps "
+RDEPENDS_perl-module-test-more += "perl-module-exporter "
+RDEPENDS_perl-module-test-more += "perl-module-strict "
+RDEPENDS_perl-module-test-more += "perl-module-test-builder "
+RDEPENDS_perl-module-test-more += "perl-module-vars "
+RDEPENDS_perl-module-test-simple += "perl-module-strict "
+RDEPENDS_perl-module-test-simple += "perl-module-test-builder "
+RDEPENDS_perl-module-test-simple += "perl-module-vars "
+RDEPENDS_perl-module-test += "perl-module-exporter "
+RDEPENDS_perl-module-test += "perl-module-carp "
+RDEPENDS_perl-module-test += "perl-module-strict "
+RDEPENDS_perl-module-text-abbrev += "perl-module-exporter "
+RDEPENDS_perl-module-text-balanced += "perl-module-exporter "
+RDEPENDS_perl-module-text-balanced += "perl-module-overload "
+RDEPENDS_perl-module-text-balanced += "perl-module-selfloader "
+RDEPENDS_perl-module-text-balanced += "perl-module-strict "
+RDEPENDS_perl-module-text-balanced += "perl-module-vars "
+RDEPENDS_perl-module-text-parsewords += "perl-module-exporter "
+RDEPENDS_perl-module-text-parsewords += "perl-module-vars "
+RDEPENDS_perl-module-text-soundex += "perl-module-exporter "
+RDEPENDS_perl-module-text-tabs += "perl-module-exporter "
+RDEPENDS_perl-module-text-tabs += "perl-module-strict "
+RDEPENDS_perl-module-text-tabs += "perl-module-vars "
+RDEPENDS_perl-module-text-wrap += "perl-module-exporter "
+RDEPENDS_perl-module-text-wrap += "perl-module-strict "
+RDEPENDS_perl-module-text-wrap += "perl-module-text-tabs "
+RDEPENDS_perl-module-thread-queue += "perl-module-strict "
+RDEPENDS_perl-module-thread-queue += "perl-module-threads-shared "
+RDEPENDS_perl-module-thread-semaphore += "perl-module-threads-shared "
+RDEPENDS_perl-module-threads-shared += "perl-module-strict "
+RDEPENDS_perl-module-threads-shared += "perl-module-warnings "
+RDEPENDS_perl-module-threads += "perl-module-dynaloader "
+RDEPENDS_perl-module-threads += "perl-module-exporter "
+RDEPENDS_perl-module-threads += "perl-module-config "
+RDEPENDS_perl-module-threads += "perl-module-strict "
+RDEPENDS_perl-module-threads += "perl-module-warnings "
+RDEPENDS_perl-module-thread += "perl-module-exporter "
+RDEPENDS_perl-module-thread += "perl-module-strict "
+RDEPENDS_perl-module-thread += "perl-module-xsloader "
+RDEPENDS_perl-module-tie-array += "perl-module-carp "
+RDEPENDS_perl-module-tie-array += "perl-module-strict "
+RDEPENDS_perl-module-tie-array += "perl-module-vars "
+RDEPENDS_perl-module-tie-file += "perl-module-carp "
+RDEPENDS_perl-module-tie-file += "perl-module-fcntl "
+RDEPENDS_perl-module-tie-file += "perl-module-posix "
+RDEPENDS_perl-module-tie-file += "perl-module-strict "
+RDEPENDS_perl-module-tie-handle += "perl-module-carp "
+RDEPENDS_perl-module-tie-handle += "perl-module-warnings-register "
+RDEPENDS_perl-module-tie-hash += "perl-module-carp "
+RDEPENDS_perl-module-tie-hash += "perl-module-warnings-register "
+RDEPENDS_perl-module-tie-memoize += "perl-module-strict "
+RDEPENDS_perl-module-tie-memoize += "perl-module-tie-hash "
+RDEPENDS_perl-module-tie-refhash += "perl-module-strict "
+RDEPENDS_perl-module-tie-refhash += "perl-module-tie-hash "
+RDEPENDS_perl-module-tie-refhash += "perl-module-vars "
+RDEPENDS_perl-module-tie-scalar += "perl-module-carp "
+RDEPENDS_perl-module-tie-scalar += "perl-module-warnings-register "
+RDEPENDS_perl-module-tie-substrhash += "perl-module-carp "
+RDEPENDS_perl-module-time-gmtime += "perl-module-strict "
+RDEPENDS_perl-module-time-gmtime += "perl-module-time-tm "
+RDEPENDS_perl-module-time-gmtime += "perl-module-vars "
+RDEPENDS_perl-module-time-hires += "perl-module-dynaloader "
+RDEPENDS_perl-module-time-hires += "perl-module-exporter "
+RDEPENDS_perl-module-time-hires += "perl-module-strict "
+RDEPENDS_perl-module-time-hires += "perl-module-vars "
+RDEPENDS_perl-module-time-localtime += "perl-module-strict "
+RDEPENDS_perl-module-time-localtime += "perl-module-time-tm "
+RDEPENDS_perl-module-time-localtime += "perl-module-vars "
+RDEPENDS_perl-module-time-local += "perl-module-exporter "
+RDEPENDS_perl-module-time-local += "perl-module-carp "
+RDEPENDS_perl-module-time-local += "perl-module-config "
+RDEPENDS_perl-module-time-local += "perl-module-integer "
+RDEPENDS_perl-module-time-local += "perl-module-strict "
+RDEPENDS_perl-module-time-local += "perl-module-vars "
+RDEPENDS_perl-module-time-tm += "perl-module-class-struct "
+RDEPENDS_perl-module-time-tm += "perl-module-strict "
+RDEPENDS_perl-module-unicode-collate += "perl-module-carp "
+RDEPENDS_perl-module-unicode-collate += "perl-module-constant "
+RDEPENDS_perl-module-unicode-collate += "perl-module-file-spec "
+RDEPENDS_perl-module-unicode-collate += "perl-module-strict "
+RDEPENDS_perl-module-unicode-collate += "perl-module-warnings "
+RDEPENDS_perl-module-unicode-normalize += "perl-module-dynaloader "
+RDEPENDS_perl-module-unicode-normalize += "perl-module-exporter "
+RDEPENDS_perl-module-unicode-normalize += "perl-module-carp "
+RDEPENDS_perl-module-unicode-normalize += "perl-module-constant "
+RDEPENDS_perl-module-unicode-normalize += "perl-module-strict "
+RDEPENDS_perl-module-unicode-normalize += "perl-module-warnings "
+RDEPENDS_perl-module-unicode-ucd += "perl-module-exporter "
+RDEPENDS_perl-module-unicode-ucd += "perl-module-carp "
+RDEPENDS_perl-module-unicode-ucd += "perl-module-storable "
+RDEPENDS_perl-module-unicode-ucd += "perl-module-strict "
+RDEPENDS_perl-module-unicode-ucd += "perl-module-warnings "
+RDEPENDS_perl-module-universal += "perl-module-exporter "
+RDEPENDS_perl-module-user-grent += "perl-module-class-struct "
+RDEPENDS_perl-module-user-grent += "perl-module-strict "
+RDEPENDS_perl-module-user-grent += "perl-module-vars "
+RDEPENDS_perl-module-user-pwent += "perl-module-carp "
+RDEPENDS_perl-module-user-pwent += "perl-module-class-struct "
+RDEPENDS_perl-module-user-pwent += "perl-module-config "
+RDEPENDS_perl-module-user-pwent += "perl-module-strict "
+RDEPENDS_perl-module-user-pwent += "perl-module-warnings "
+RDEPENDS_perl-module-user-pwent += "perl-module-vars "
+RDEPENDS_perl-module-warnings-register += "perl-module-warnings "
+RDEPENDS_perl-module-warnings += "perl-module-carp "
+RDEPENDS_perl-module-vars += "perl-module-strict "
+RDEPENDS_perl-module-vars += "perl-module-warnings-register "
+RDEPENDS_perl-module-xs-apitest += "perl-module-base "
+RDEPENDS_perl-module-xs-apitest += "perl-module-carp "
+RDEPENDS_perl-module-xs-apitest += "perl-module-strict "
+RDEPENDS_perl-module-xs-apitest += "perl-module-warnings "
+RDEPENDS_perl-module-xs-typemap += "perl-module-base "
+RDEPENDS_perl-module-xs-typemap += "perl-module-vars "
diff --git a/packages/perl/perl-rprovides.inc b/packages/perl/perl-rprovides.inc
new file mode 100644
index 0000000000..637c993156
--- /dev/null
+++ b/packages/perl/perl-rprovides.inc
@@ -0,0 +1,45 @@
+#
+# Some packages changed names in 5.8.7-r14, RPROVIDE them for things that
+# depend on the old name
+#
+RPROVIDES_perl-module-b-asmdata = "perl-module-${TARGET_SYS}-b-asmdata"
+RPROVIDES_perl-module-b-assembler = "perl-module-${TARGET_SYS}-b-assembler"
+RPROVIDES_perl-module-b-bblock = "perl-module-${TARGET_SYS}-b-bblock"
+RPROVIDES_perl-module-b-bytecode = "perl-module-${TARGET_SYS}-b-bytecode"
+RPROVIDES_perl-module-b-cc = "perl-module-${TARGET_SYS}-b-cc"
+RPROVIDES_perl-module-b-concise = "perl-module-${TARGET_SYS}-b-concise"
+RPROVIDES_perl-module-b-debug = "perl-module-${TARGET_SYS}-b-debug"
+RPROVIDES_perl-module-b-deparse = "perl-module-${TARGET_SYS}-b-deparse"
+RPROVIDES_perl-module-b-disassembler = "perl-module-${TARGET_SYS}-b-disassembler"
+RPROVIDES_perl-module-b-lint = "perl-module-${TARGET_SYS}-b-lint"
+RPROVIDES_perl-module-b-showlex = "perl-module-${TARGET_SYS}-b-showlex"
+RPROVIDES_perl-module-b-stackobj = "perl-module-${TARGET_SYS}-b-stackobj"
+RPROVIDES_perl-module-b-stash = "perl-module-${TARGET_SYS}-b-stash"
+RPROVIDES_perl-module-b-terse = "perl-module-${TARGET_SYS}-b-terse"
+RPROVIDES_perl-module-b-xref = "perl-module-${TARGET_SYS}-b-xref"
+RPROVIDES_perl-module-config = "perl-module-${TARGET_SYS}-config"
+RPROVIDES_perl-module-config-heavy = "perl-module-${TARGET_SYS}-config-heavy"
+RPROVIDES_perl-module-encode-alias = "perl-module-${TARGET_SYS}-encode-alias"
+RPROVIDES_perl-module-encode-cjkconstants = "perl-module-${TARGET_SYS}-encode-cjkconstants"
+RPROVIDES_perl-module-encode-config = "perl-module-${TARGET_SYS}-encode-config"
+RPROVIDES_perl-module-encode-encoder = "perl-module-${TARGET_SYS}-encode-encoder"
+RPROVIDES_perl-module-encode-encoding = "perl-module-${TARGET_SYS}-encode-encoding"
+RPROVIDES_perl-module-encode-guess = "perl-module-${TARGET_SYS}-encode-guess"
+RPROVIDES_perl-module-encoding = "perl-module-${TARGET_SYS}-encoding"
+RPROVIDES_perl-module-errno = "perl-module-${TARGET_SYS}-errno"
+RPROVIDES_perl-module-io-dir = "perl-module-${TARGET_SYS}-io-dir"
+RPROVIDES_perl-module-io-file = "perl-module-${TARGET_SYS}-io-file"
+RPROVIDES_perl-module-io-handle = "perl-module-${TARGET_SYS}-io-handle"
+RPROVIDES_perl-module-io-pipe = "perl-module-${TARGET_SYS}-io-pipe"
+RPROVIDES_perl-module-io-poll = "perl-module-${TARGET_SYS}-io-poll"
+RPROVIDES_perl-module-io-seekable = "perl-module-${TARGET_SYS}-io-seekable"
+RPROVIDES_perl-module-io-select = "perl-module-${TARGET_SYS}-io-select"
+RPROVIDES_perl-module-io-socket = "perl-module-${TARGET_SYS}-io-socket"
+RPROVIDES_perl-module-ipc-msg = "perl-module-${TARGET_SYS}-ipc-msg"
+RPROVIDES_perl-module-ipc-semaphore = "perl-module-${TARGET_SYS}-ipc-semaphore"
+RPROVIDES_perl-module-lib = "perl-module-${TARGET_SYS}-lib"
+RPROVIDES_perl-module-mime-quotedprint = "perl-module-${TARGET_SYS}-mime-quotedprint"
+RPROVIDES_perl-module-o = "perl-module-${TARGET_SYS}-o"
+RPROVIDES_perl-module-ops = "perl-module-${TARGET_SYS}-ops"
+RPROVIDES_perl-module-safe = "perl-module-${TARGET_SYS}-safe"
+RPROVIDES_perl-module-xsloader = "perl-module-${TARGET_SYS}-xsloader"
diff --git a/packages/perl/perl.inc b/packages/perl/perl.inc
index 4f42d78ded..9e20ae63e6 100644
--- a/packages/perl/perl.inc
+++ b/packages/perl/perl.inc
@@ -9,43 +9,23 @@ SRC_URI = "ftp://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz \
file://Makefile.patch;patch=1 \
file://config.sh-arm-linux.patch;patch=1 \
file://libperl-5.8.3-create-libperl-soname.patch;patch=1;pnum=0 \
- file://uclibc.patch;patch=1 \
- file://Makefile.SH.patch \
- file://config.sh-mipsel-linux \
- file://config.sh-i686-linux"
+ file://Makefile.SH.patch"
HOSTPERL="${STAGING_BINDIR_NATIVE}/perl${PV}"
-do_configure() {
- ln -sf ${HOSTPERL} ${STAGING_BINDIR_NATIVE}/hostperl
- cp ${HOSTPERL} hostperl
- cd Cross
- rm -f Makefile.SH.patch
- cp ${WORKDIR}/Makefile.SH.patch .
- cp ${WORKDIR}/config.sh-mipsel-linux .
- cp ${WORKDIR}/config.sh-i686-linux .
- cat config.sh-arm-linux | sed -e "s,arm-linux,armeb-linux,g" > config.sh-armeb-linux
- for i in config.sh-*-linux; do
- a="`echo $i|sed -e 's,^config.sh-,,; s,-linux$,,'`"
- newfile="`echo $i|sed -e 's,-linux$,-linux-uclibc,g'`"
- cat $i | sed -e "s,${a}-linux,${a}-linux-uclibc,g; \
- s,d_sockatmark='define',d_sockatmark='undef',g;" > $newfile
- done
- sed -i -e 's,./install_me_here,${D},g' config.sh-${TARGET_ARCH}-${TARGET_OS}
- rm -f config
- echo "ARCH = ${TARGET_ARCH}" > config
- echo "OS = ${TARGET_OS}" >> config
- oe_runmake patch
-}
-
do_compile() {
sed -i -e 's|/usr/include|${STAGING_INCDIR}|g' ext/Errno/Errno_pm.PL
cd Cross
# You must use gcc to link on sh
OPTIONS=""
if test ${TARGET_ARCH} = "sh3" -o ${TARGET_ARCH} = "sh4"; then
- OPTIONS="LD=${TARGET_ARCH}-${TARGET_OS}-gcc"
+ OPTIONS="LD=${TARGET_SYS}-gcc"
fi
+ # You must use gcc to link on powerpc also
+ if test ${TARGET_ARCH} = "powerpc" ; then
+ OPTIONS="LD=${TARGET_SYS}-gcc"
+ fi
+
oe_runmake perl $OPTIONS
}
diff --git a/packages/perl/perl_5.8.4.bb b/packages/perl/perl_5.8.4.bb
index 7509f1b66b..10a871c8dd 100644
--- a/packages/perl/perl_5.8.4.bb
+++ b/packages/perl/perl_5.8.4.bb
@@ -1,3 +1,29 @@
require perl.inc
PR = "r5"
+
+SRC_URI += "file://uclibc.patch;patch=1 \
+ file://config.sh-mipsel-linux \
+ file://config.sh-i686-linux"
+
+do_configure() {
+ ln -sf ${HOSTPERL} ${STAGING_BINDIR_NATIVE}/hostperl
+ cp ${HOSTPERL} hostperl
+ cd Cross
+ rm -f Makefile.SH.patch
+ cp ${WORKDIR}/Makefile.SH.patch .
+ cp ${WORKDIR}/config.sh-mipsel-linux .
+ cp ${WORKDIR}/config.sh-i686-linux .
+ cat config.sh-arm-linux | sed -e "s,arm-linux,armeb-linux,g" > config.sh-armeb-linux
+ for i in config.sh-*-linux; do
+ a="`echo $i|sed -e 's,^config.sh-,,; s,-linux$,,'`"
+ newfile="`echo $i|sed -e 's,-linux$,-linux-uclibc,g'`"
+ cat $i | sed -e "s,${a}-linux,${a}-linux-uclibc,g; \
+ s,d_sockatmark='define',d_sockatmark='undef',g;" > $newfile
+ done
+ sed -i -e 's,./install_me_here,${D},g' config.sh-${TARGET_ARCH}-${TARGET_OS}
+ rm -f config
+ echo "ARCH = ${TARGET_ARCH}" > config
+ echo "OS = ${TARGET_OS}" >> config
+ oe_runmake patch
+}
diff --git a/packages/perl/perl_5.8.7.bb b/packages/perl/perl_5.8.7.bb
index 2f37e6ccbe..6589180ff2 100644
--- a/packages/perl/perl_5.8.7.bb
+++ b/packages/perl/perl_5.8.7.bb
@@ -7,6 +7,7 @@ require perl.inc
SRC_URI += "file://config.sh-armeb-linux \
file://config.sh-arm-linux \
file://config.sh-powerpc-linux \
+ file://config.sh-mipsel-linux \
file://config.sh-i386-linux \
file://config.sh-i486-linux \
file://config.sh-i586-linux \
@@ -15,16 +16,17 @@ SRC_URI += "file://config.sh-armeb-linux \
file://config.sh-sh3-linux \
file://config.sh-sh4-linux"
-# Patches for sh3/sh4, use gcc to link and override generaet.sh to
-# use PIC mode for compiling shared library objects.
-SRC_URI_append_sh4 += "file://override-generate-sh.patch;patch=1"
-SRC_URI_append_sh4 += "file://makefile-usegcc-to-link.patch;patch=1"
-SRC_URI_append_sh3 += "file://override-generate-sh.patch;patch=1"
-SRC_URI_append_sh3 += "file://makefile-usegcc-to-link.patch;patch=1"
+# Use gcc to link and use PIC mode for compiling shared libs
+GCCLINK_SRC = "file://override-generate-sh.patch;patch=1 \
+ file://makefile-usegcc-to-link.patch;patch=1"
+
+SRC_URI_append_sh4 += " ${GCCLINK_SRC}"
+SRC_URI_append_sh3 += " ${GCCLINK_SRC}"
+SRC_URI_append_powerpc += " ${GCCLINK_SRC}"
PARALLEL_MAKE = ""
-PR = "r21"
+PR = "r22"
do_configure() {
ln -sf ${HOSTPERL} ${STAGING_BINDIR_NATIVE}/hostperl
@@ -44,6 +46,7 @@ do_configure() {
cp ${WORKDIR}/config.sh-sh4-linux .
#perl insists on an extra config.sh for arm EABI
cp config.sh-arm-linux config.sh-arm-linux-gnueabi
+ cp config.sh-armeb-linux config.sh-armeb-linux-gnueabi
# nslu2 LE uclibc builds do not work with the default config.sh
if test "${MACHINE}" = nslu2
then
@@ -92,45 +95,4 @@ require perl-rdepends_${PV}.inc
DEPENDS_perl-module-math-bigint += "perl-module-math-bigint-calc "
DEPENDS_perl-module-math-bigint-calc += "perl-module-integer "
-# Some packages changed names in 5.8.7-r14, RPROVIDE them
-RPROVIDES_perl-module-b-asmdata = "perl-module-${TARGET_SYS}-b-asmdata"
-RPROVIDES_perl-module-b-assembler = "perl-module-${TARGET_SYS}-b-assembler"
-RPROVIDES_perl-module-b-bblock = "perl-module-${TARGET_SYS}-b-bblock"
-RPROVIDES_perl-module-b-bytecode = "perl-module-${TARGET_SYS}-b-bytecode"
-RPROVIDES_perl-module-b-cc = "perl-module-${TARGET_SYS}-b-cc"
-RPROVIDES_perl-module-b-concise = "perl-module-${TARGET_SYS}-b-concise"
-RPROVIDES_perl-module-b-debug = "perl-module-${TARGET_SYS}-b-debug"
-RPROVIDES_perl-module-b-deparse = "perl-module-${TARGET_SYS}-b-deparse"
-RPROVIDES_perl-module-b-disassembler = "perl-module-${TARGET_SYS}-b-disassembler"
-RPROVIDES_perl-module-b-lint = "perl-module-${TARGET_SYS}-b-lint"
-RPROVIDES_perl-module-b-showlex = "perl-module-${TARGET_SYS}-b-showlex"
-RPROVIDES_perl-module-b-stackobj = "perl-module-${TARGET_SYS}-b-stackobj"
-RPROVIDES_perl-module-b-stash = "perl-module-${TARGET_SYS}-b-stash"
-RPROVIDES_perl-module-b-terse = "perl-module-${TARGET_SYS}-b-terse"
-RPROVIDES_perl-module-b-xref = "perl-module-${TARGET_SYS}-b-xref"
-RPROVIDES_perl-module-config = "perl-module-${TARGET_SYS}-config"
-RPROVIDES_perl-module-config-heavy = "perl-module-${TARGET_SYS}-config-heavy"
-RPROVIDES_perl-module-encode-alias = "perl-module-${TARGET_SYS}-encode-alias"
-RPROVIDES_perl-module-encode-cjkconstants = "perl-module-${TARGET_SYS}-encode-cjkconstants"
-RPROVIDES_perl-module-encode-config = "perl-module-${TARGET_SYS}-encode-config"
-RPROVIDES_perl-module-encode-encoder = "perl-module-${TARGET_SYS}-encode-encoder"
-RPROVIDES_perl-module-encode-encoding = "perl-module-${TARGET_SYS}-encode-encoding"
-RPROVIDES_perl-module-encode-guess = "perl-module-${TARGET_SYS}-encode-guess"
-RPROVIDES_perl-module-encoding = "perl-module-${TARGET_SYS}-encoding"
-RPROVIDES_perl-module-errno = "perl-module-${TARGET_SYS}-errno"
-RPROVIDES_perl-module-io-dir = "perl-module-${TARGET_SYS}-io-dir"
-RPROVIDES_perl-module-io-file = "perl-module-${TARGET_SYS}-io-file"
-RPROVIDES_perl-module-io-handle = "perl-module-${TARGET_SYS}-io-handle"
-RPROVIDES_perl-module-io-pipe = "perl-module-${TARGET_SYS}-io-pipe"
-RPROVIDES_perl-module-io-poll = "perl-module-${TARGET_SYS}-io-poll"
-RPROVIDES_perl-module-io-seekable = "perl-module-${TARGET_SYS}-io-seekable"
-RPROVIDES_perl-module-io-select = "perl-module-${TARGET_SYS}-io-select"
-RPROVIDES_perl-module-io-socket = "perl-module-${TARGET_SYS}-io-socket"
-RPROVIDES_perl-module-ipc-msg = "perl-module-${TARGET_SYS}-ipc-msg"
-RPROVIDES_perl-module-ipc-semaphore = "perl-module-${TARGET_SYS}-ipc-semaphore"
-RPROVIDES_perl-module-lib = "perl-module-${TARGET_SYS}-lib"
-RPROVIDES_perl-module-mime-quotedprint = "perl-module-${TARGET_SYS}-mime-quotedprint"
-RPROVIDES_perl-module-o = "perl-module-${TARGET_SYS}-o"
-RPROVIDES_perl-module-ops = "perl-module-${TARGET_SYS}-ops"
-RPROVIDES_perl-module-safe = "perl-module-${TARGET_SYS}-safe"
-RPROVIDES_perl-module-xsloader = "perl-module-${TARGET_SYS}-xsloader"
+require perl-rprovides.inc
diff --git a/packages/perl/perl_5.8.8.bb b/packages/perl/perl_5.8.8.bb
new file mode 100644
index 0000000000..c8e7afebc7
--- /dev/null
+++ b/packages/perl/perl_5.8.8.bb
@@ -0,0 +1,187 @@
+DESCRIPTION = "Perl is a popular scripting language."
+HOMEPAGE = "http://www.perl.org/"
+SECTION = "devel"
+LICENSE = "Artistic|GPL"
+PRIORITY = "optional"
+# We need gnugrep (for -I)
+DEPENDS = "virtual/db perl-native grep-native"
+PR = "r16"
+
+# Major part of version
+PVM = "5.8"
+
+SRC_URI = "ftp://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz \
+ file://Makefile.patch;patch=1 \
+ file://Makefile.SH.patch \
+ file://perl-dynloader.patch;patch=1 \
+ file://perl-moreconfig.patch;patch=1 \
+ file://letgcc-find-errno.patch;patch=1 \
+ file://generate-sh.patch;patch=1 \
+ file://09_fix_installperl.patch;patch=1 \
+ file://52_debian_extutils_hacks.patch;patch=1 \
+ file://53_debian_mod_paths.patch;patch=1 \
+ file://54_debian_perldoc-r.patch;patch=1 \
+ file://58_debian_cpan_config_path.patch;patch=1 \
+ file://60_debian_libnet_config_path.patch;patch=1 \
+ file://62_debian_cpan_definstalldirs.patch;patch=1 \
+ file://64_debian_enc2xs_inc.patch;patch=1 \
+ file://config.sh \
+ file://config.sh-32 \
+ file://config.sh-32-le \
+ file://config.sh-32-be \
+ file://config.sh-64 \
+ file://config.sh-64-le \
+ file://config.sh-64-be"
+
+# Where to find the native perl
+HOSTPERL = "${STAGING_BINDIR_NATIVE}/perl${PV}"
+
+# Where to find .so files - use the -native versions not those from the target build
+export PERLHOSTLIB = "${STAGING_DIR}/${BUILD_SYS}/lib/perl5/${PV}/${BUILD_ARCH}-${BUILD_OS}-thread-multi/"
+
+do_configure() {
+ # Make hostperl in build directory be the native perl
+ cp -f ${HOSTPERL} hostperl
+
+ # This is silly - should just patch Makefile.SH directly
+ cd Cross
+ cp -f ${WORKDIR}/Makefile.SH.patch .
+
+ # Generate configuration
+ rm -f config.sh-${TARGET_ARCH}-${TARGET_OS}
+ for i in ${WORKDIR}/config.sh \
+ ${WORKDIR}/config.sh-${@siteinfo_get_bits(d)} \
+ ${WORKDIR}/config.sh-${@siteinfo_get_bits(d)}-${@siteinfo_get_endianess(d)}; do
+ cat $i >> config.sh-${TARGET_ARCH}-${TARGET_OS}
+ done
+
+ # Fixups for uclibc
+ if [ "${TARGET_OS}" = "linux-uclibc" -o "${TARGET_OS}" = "linux-uclibcgnueabi" ]; then
+ sed -i -e "s,\(d_crypt_r=\)'define',\1'undef',g" \
+ -e "s,\(d_getnetbyname_r=\)'define',\1'undef',g" \
+ -e "s,\(d_getnetbyaddr_r=\)'define',\1'undef',g" \
+ -e "s,\(d_getnetent_r=\)'define',\1'undef',g" \
+ -e "s,\(d_sockatmark=\)'define',\1'undef',g" \
+ config.sh-${TARGET_ARCH}-${TARGET_OS}
+ fi
+
+ # Update some paths in the configuration
+ sed -i -e 's,@DESTDIR@,${D},g' \
+ -e 's,@ARCH@,${TARGET_ARCH}-${TARGET_OS},g' \
+ -e "s%/usr/include/%${STAGING_INCDIR}/%g" \
+ config.sh-${TARGET_ARCH}-${TARGET_OS}
+
+ if test "${MACHINE}" != "native"; then
+ # These are strewn all over the source tree
+ for foo in `grep -I -m1 \/usr\/include\/.*\\.h ${WORKDIR}/* -r | cut -f 1 -d ":"` ; do
+ echo Fixing: $foo
+ sed -e "s%/usr/include/%${STAGING_INCDIR}/%g" -i $foo
+ done
+ fi
+
+ rm -f config
+ echo "ARCH = ${TARGET_ARCH}" > config
+ echo "OS = ${TARGET_OS}" >> config
+
+ oe_runmake patch
+}
+do_compile() {
+ if test "${MACHINE}" != "native"; then
+ sed -i -e 's|/usr/include|${STAGING_INCDIR}|g' ext/Errno/Errno_pm.PL
+ fi
+ cd Cross
+ oe_runmake perl LD="${TARGET_SYS}-gcc"
+}
+do_install() {
+ oe_runmake install
+
+ # Add perl pointing at current version
+ ln -sf perl${PV} ${D}/usr/bin/perl
+
+ # Fix up versioned directories
+ mv ${D}/${libdir}/perl/${PVM} ${D}/${libdir}/perl/${PV}
+ mv ${D}/${datadir}/perl/${PVM} ${D}/${datadir}/perl/${PV}
+ ln -sf ${PV} ${D}/${libdir}/perl/${PVM}
+ ln -sf ${PV} ${D}/${datadir}/perl/${PVM}
+
+ # Remove unwanted file
+ rm -f ${D}/${libdir}/perl/${PV}/.packlist
+
+ # Fix up shared library
+ mv -f ${D}/${libdir}/perl/${PV}/CORE/libperl.so ${D}/${libdir}/libperl.so.${PV}
+ ln -sf libperl.so.${PV} ${D}/${libdir}/libperl.so.5
+
+ # Fix up installed configuration
+ if test "${MACHINE}" != "native"; then
+ sed -i -e "s,${D},,g" \
+ -e "s,-isystem${STAGING_INCDIR} ,,g" \
+ -e "s,${STAGING_LIBDIR},${libdir},g" \
+ -e "s,${STAGING_INCDIR},${includedir},g" \
+ ${D}/${libdir}/perl/${PV}/Config_heavy.pl
+ fi
+}
+do_stage() {
+ install -d ${STAGING_DIR}/${HOST_SYS}/perl/
+ install config.sh ${STAGING_DIR}/${HOST_SYS}/perl/
+ install lib/Config_heavy.pl ${STAGING_DIR}/${BUILD_SYS}/lib/perl5/${PV}/Config_heavy-target.pl
+}
+
+PACKAGES = "perl-dbg perl perl-misc perl-lib perl-dev perl-pod perl-doc"
+FILES_${PN} = "${bindir}/perl ${bindir}/perl${PV}"
+FILES_${PN}-lib = "${libdir}/libperl.so* ${libdir}/perl/${PVM} ${datadir}/perl/${PVM}"
+FILES_${PN}-dev = "${libdir}/perl/${PV}/CORE"
+FILES_${PN}-pod = "${datadir}/perl/${PV}/pod \
+ ${datadir}/perl/${PV}/*/*.pod \
+ ${datadir}/perl/${PV}/*/*/*.pod \
+ ${libdir}/perl/${PV}/*.pod"
+FILES_perl-misc = "${bindir}/*"
+FILES_${PN}-dbg += "${libdir}/perl/${PV}/auto/*/.debug \
+ ${libdir}/perl/${PV}/auto/*/*/.debug \
+ ${libdir}/perl/${PV}/auto/*/*/*/.debug \
+ ${datadir}/perl/${PV}/auto/*/.debug \
+ ${datadir}/perl/${PV}/auto/*/*/.debug \
+ ${datadir}/perl/${PV}/auto/*/*/*/.debug \
+ ${libdir}/perl/${PV}/CORE/.debug"
+FILES_${PN}-doc = "${datadir}/perl/${PV}/*/*.txt \
+ ${datadir}/perl/${PV}/*/*/*.txt \
+ ${datadir}/perl/${PV}/Net/*.eg \
+ ${datadir}/perl/${PV}/CGI/eg \
+ ${datadir}/perl/${PV}/ExtUtils/PATCHING \
+ ${datadir}/perl/${PV}/ExtUtils/NOTES \
+ ${datadir}/perl/${PV}/ExtUtils/typemap \
+ ${datadir}/perl/${PV}/ExtUtils/MANIFEST.SKIP \
+ ${datadir}/perl/${PV}/CPAN/SIGNATURE \
+ ${datadir}/perl/${PV}/CPAN/PAUSE2003.pub \
+ ${datadir}/perl/${PV}/B/assemble \
+ ${datadir}/perl/${PV}/B/makeliblinks \
+ ${datadir}/perl/${PV}/B/disassemble \
+ ${datadir}/perl/${PV}/B/cc_harness \
+ ${datadir}/perl/${PV}/ExtUtils/xsubpp \
+ ${datadir}/perl/${PV}/Encode/encode.h \
+ ${datadir}/perl/${PV}/unicore/mktables \
+ ${datadir}/perl/${PV}/unicore/mktables.lst \
+ ${datadir}/perl/${PV}/unicore/version"
+
+RPROVIDES_perl-lib = "perl-lib"
+
+# Create a perl-modules package recommending all the other perl
+# packages (actually the non modules packages and not created too)
+ALLOW_EMPTY_perl-modules = "1"
+PACKAGES_append = " perl-modules "
+RRECOMMENDS_perl-modules = "${@bb.data.getVar('PACKAGES', d, 1).replace('perl-modules ', '').replace('perl-dbg ', '').replace('perl-misc ', '').replace('perl-dev ', '').replace('perl-pod ', '').replace('perl-doc ', '')}"
+
+python populate_packages_prepend () {
+ libdir = bb.data.expand('${libdir}/perl/${PV}', d)
+ do_split_packages(d, libdir, 'auto/(.*)(?!\.debug)/', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True)
+ do_split_packages(d, libdir, '(.*)\.(pm|pl|e2x)', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True)
+ datadir = bb.data.expand('${datadir}/perl/${PV}', d)
+ do_split_packages(d, datadir, 'auto/(.*)(?!\.debug)/', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True)
+ do_split_packages(d, datadir, '(.*)\.(pm|pl|e2x)', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True)
+}
+
+PACKAGES_DYNAMIC = "perl-module-*"
+
+require perl-rdepends_${PV}.inc
+require perl-rprovides.inc
+
+PARALLEL_MAKE = ""
diff --git a/packages/php/php-5.1.4/acinclude-xml2-config.patch b/packages/php/php-5.1.4/acinclude-xml2-config.patch
new file mode 100644
index 0000000000..84d180ea8c
--- /dev/null
+++ b/packages/php/php-5.1.4/acinclude-xml2-config.patch
@@ -0,0 +1,18 @@
+--- /orig-acinclude.m4 2007-02-20 15:03:25.000000000 +0200
++++ /acinclude.m4 2007-02-20 15:03:24.000000000 +0200
+@@ -2359,12 +2359,9 @@
+ AC_DEFUN([PHP_SETUP_LIBXML], [
+ AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path,
+ [
+- for i in $PHP_LIBXML_DIR /usr/local /usr; do
+- if test -x "$i/bin/xml2-config"; then
+- ac_cv_php_xml2_config_path="$i/bin/xml2-config"
+- break
+- fi
+- done
++
++ ac_cv_php_xml2_config_path="$PHP_LIBXML_DIR/xml2-config"
++
+ ])
+
+ if test -x "$ac_cv_php_xml2_config_path"; then
diff --git a/packages/php/php-5.2.0/.mtn2git_empty b/packages/php/php-5.2.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/php/php-5.2.0/.mtn2git_empty
diff --git a/packages/php/php-5.2.0/acinclude-xml2-config.patch b/packages/php/php-5.2.0/acinclude-xml2-config.patch
new file mode 100644
index 0000000000..bf519d2934
--- /dev/null
+++ b/packages/php/php-5.2.0/acinclude-xml2-config.patch
@@ -0,0 +1,18 @@
+--- /orig-acinclude.m4 2007-02-20 15:03:25.000000000 +0200
++++ /acinclude.m4 2007-02-20 15:03:24.000000000 +0200
+@@ -2359,12 +2359,9 @@
+ AC_DEFUN([PHP_SETUP_LIBXML], [
+ AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path,
+ [
+- for i in $PHP_LIBXML_DIR /usr/local /usr; do
+- if test -x "$i/bin/xml2-config"; then
+- ac_cv_php_xml2_config_path="$i/bin/xml2-config"
+- break
+- fi
+- done
++
++ ac_cv_php_xml2_config_path="$PHP_LIBXML_DIR/xml2-config"
++
+ ])
+
+ if test -x "$ac_cv_php_xml2_config_path"; then
diff --git a/packages/php/php-5.2.0/autotools.patch b/packages/php/php-5.2.0/autotools.patch
new file mode 100644
index 0000000000..9f1289fd11
--- /dev/null
+++ b/packages/php/php-5.2.0/autotools.patch
@@ -0,0 +1,95 @@
+diff -u'rNF^function' php-5.1.4~/acinclude.m4 php-5.1.4/acinclude.m4
+--- php-5.1.4~/acinclude.m4 2006-04-10 08:17:36.000000000 -0400
++++ php-5.1.4/acinclude.m4 2006-08-16 22:32:58.000000000 -0400
+@@ -818,10 +818,10 @@
+ OVERALL_TARGET=[]ifelse($1,,php,$1)
+ php_c_pre='$(LIBTOOL) --mode=compile $(CC)'
+ php_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS)'
+- php_c_post=
++ php_c_post=' && echo "[#] Generated by PHP badness - GNU libtool" > $[@] && echo "pic_object=none" >> $[@] && echo "non_pic_object=$[@]" | sed -e "s,=.*/,=,; s,\.lo,\.o,g" >> $[@]'
+ php_cxx_pre='$(LIBTOOL) --mode=compile $(CXX)'
+ php_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS)'
+- php_cxx_post=
++ php_cxx_post=' && echo "[#] Generated by PHP badness - GNU libtool" > $[@] && echo "pic_object=none" >> $[@] && echo "non_pic_object=$[@]" | sed -e "s,=.*/,=,; s,\.lo,\.o,g" >> $[@]'
+ php_lo=lo
+
+ case $with_pic in
+@@ -1670,6 +1670,7 @@
+ have_fopen_cookie=yes
+
+ dnl even newer glibcs have a different seeker definition...
++AC_CACHE_CHECK([if cookie io functions use off64_t], php_cv_lib_cookie_io_functions_use_off64_t,
+ AC_TRY_RUN([
+ #define _GNU_SOURCE
+ #include <stdio.h>
+@@ -1702,10 +1703,11 @@
+ cookie_io_functions_use_off64_t=yes
+ ], [
+ cookie_io_functions_use_off64_t=no
+-], [
+- cookie_io_functions_use_off64_t=no
+-])
+-
++],
++[ php_cv_lib_cookie_io_functions_use_off64_t=yes ],
++[ php_cv_lib_cookie_io_functions_use_off64_t=no ] ))
++
++
+ else
+
+ dnl older glibc versions (up to 2.1.2 ?)
+diff -u'rNF^function' php-5.1.4~/configure.in php-5.1.4/configure.in
+--- php-5.1.4~/configure.in 2006-05-03 19:30:02.000000000 -0400
++++ php-5.1.4/configure.in 2006-08-16 20:39:19.000000000 -0400
+@@ -209,6 +209,7 @@
+
+ sinclude(Zend/Zend.m4)
+ sinclude(TSRM/tsrm.m4)
++sinclude(TSRM/threads.m4)
+
+
+ divert(2)
+@@ -255,11 +255,6 @@
+ PTHREADS_FLAGS
+ fi
+
+-if test "$PHP_ENABLE_FASTCGI" = "yes"; then
+- PHP_CONFIGURE_PART(Running FastCGI checks)
+- sinclude(sapi/cgi/libfcgi/acinclude.m4)
+- sinclude(sapi/cgi/libfcgi/libfcgi.m4)
+-fi
+
+ divert(3)
+
+diff -u'rNF^function' php-5.1.4~/scripts/phpize.m4 php-5.1.4/scripts/phpize.m4
+--- php-5.1.4~/scripts/phpize.m4 2006-04-10 08:16:17.000000000 -0400
++++ php-5.1.4/scripts/phpize.m4 2006-08-16 20:39:19.000000000 -0400
+@@ -3,7 +3,6 @@
+ divert(1)
+
+ AC_PREREQ(2.13)
+-AC_INIT(config.m4)
+
+ PHP_CONFIG_NICE(config.nice)
+
+@@ -69,8 +68,6 @@
+ PHP_PROG_RE2C
+ PHP_PROG_AWK
+
+-sinclude(config.m4)
+-
+ enable_static=no
+ enable_shared=yes
+
+diff -u'rNF^function' php-5.1.4~/TSRM/threads.m4 php-5.1.4/TSRM/threads.m4
+--- php-5.1.4~/TSRM/threads.m4 2005-04-27 09:22:18.000000000 -0400
++++ php-5.1.4/TSRM/threads.m4 2006-08-16 20:39:19.000000000 -0400
+@@ -86,7 +86,7 @@
+ pthreads_working=no
+ ], [
+ dnl For cross compiling running this test is of no use. NetWare supports pthreads
+- pthreads_working=no
++ pthreads_working=yes
+ case $host_alias in
+ *netware*)
+ pthreads_working=yes
diff --git a/packages/php/php-5.2.0/pear-makefile.patch b/packages/php/php-5.2.0/pear-makefile.patch
new file mode 100644
index 0000000000..26de98a48f
--- /dev/null
+++ b/packages/php/php-5.2.0/pear-makefile.patch
@@ -0,0 +1,11 @@
+--- /pear/orig-Makefile.frag 2007-03-16 12:18:33.000000000 +0200
++++ /pear/Makefile.frag 2007-03-16 12:35:48.000000000 +0200
+@@ -6,7 +6,7 @@
+ PEAR_INSTALL_FLAGS = -n -dshort_open_tag=0 -dsafe_mode=0 -dopen_basedir= -derror_reporting=E_ALL -dmemory_limit=-1 -ddetect_unicode=0
+
+ install-pear-installer: $(SAPI_CLI_PATH)
+- @$(top_builddir)/sapi/cli/php $(PEAR_INSTALL_FLAGS) $(builddir)/install-pear-nozlib.phar -d "$(peardir)" -b "$(bindir)"
++ @$(PHP_NATIVE_DIR)/php $(PEAR_INSTALL_FLAGS) $(builddir)/install-pear-nozlib.phar -d "$(peardir)" -b "$(bindir)"
+
+ install-pear:
+ @echo "Installing PEAR environment: $(INSTALL_ROOT)$(peardir)/"
diff --git a/packages/php/php-native_4.3.6.bb b/packages/php/php-native_4.3.6.bb
deleted file mode 100644
index c90aa83c01..0000000000
--- a/packages/php/php-native_4.3.6.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-SECTION = "console/network"
-require php_${PV}.bb
-inherit native
-FILESPATH = "${FILE_DIRNAME}/php-${PV}:${FILE_DIRNAME}/php:${FILE_DIRNAME}/files"
-DEPENDS = "zlib-native"
diff --git a/packages/php/php-native_4.3.10.bb b/packages/php/php-native_4.4.4.bb
index c90aa83c01..c90aa83c01 100644
--- a/packages/php/php-native_4.3.10.bb
+++ b/packages/php/php-native_4.4.4.bb
diff --git a/packages/php/php-native_5.2.0.bb b/packages/php/php-native_5.2.0.bb
new file mode 100644
index 0000000000..7f5bc9fd94
--- /dev/null
+++ b/packages/php/php-native_5.2.0.bb
@@ -0,0 +1,9 @@
+SECTION = "console/network"
+require php_${PV}.bb
+inherit autotools native pkgconfig
+export LIBS=" -lxml2 "
+export LD_LIBRARY_PATH = "${STAGING_LIBDIR}"
+
+FILESPATH = "${FILE_DIRNAME}/php-${PV}:${FILE_DIRNAME}/php:${FILE_DIRNAME}/files"
+DEPENDS = "zlib-native libxml2-native"
+
diff --git a/packages/php/php_4.3.6.bb b/packages/php/php_4.3.6.bb
deleted file mode 100644
index c15a9ee486..0000000000
--- a/packages/php/php_4.3.6.bb
+++ /dev/null
@@ -1 +0,0 @@
-require php.inc
diff --git a/packages/php/php_4.3.10.bb b/packages/php/php_4.4.4.bb
index c15a9ee486..c15a9ee486 100644
--- a/packages/php/php_4.3.10.bb
+++ b/packages/php/php_4.4.4.bb
diff --git a/packages/php/php_5.1.4.bb b/packages/php/php_5.1.4.bb
index 025f112dcd..34d6ea677d 100644
--- a/packages/php/php_5.1.4.bb
+++ b/packages/php/php_5.1.4.bb
@@ -2,10 +2,13 @@ SECTION = "console/network"
DESCRIPTION = "A server-side, HTML-embedded scripting language. This package provides the CGI."
LICENSE = "PHP"
DEPENDS = "zlib libxml2 mysql libiconv"
-SRC_URI = "http://us2.php.net/distributions/php-${PV}.tar.bz2\
- file://autotools.patch;patch=1"
+
+SRC_URI = "http://us2.php.net/distributions/php-${PV}.tar.bz2\
+ file://autotools.patch;patch=1 \
+ file://acinclude-xml2-config.patch;patch=1"
+
S = "${WORKDIR}/php-${PV}"
-PR = "r1"
+PR = "r2"
inherit autotools
@@ -14,13 +17,13 @@ export LIBS=" -lpthread "
CFLAGS += " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
EXTRA_OECONF = "--without-iconv \
- --enable-discard-path \
- --enable-sockets \
- --enable-memory-limit \
- --enable-wddx \
- --with-zlib"
+ --enable-discard-path \
+ --enable-sockets \
+ --enable-memory-limit \
+ --enable-wddx \
+ --with-zlib"
-EXTRA_OECONF += " --without-pear"
+EXTRA_OECONF += " --without-pear --with-libxml-dir=${STAGING_BINDIR} "
# Uncomment the following two lines, and comment the above to enable PEAR
#EXTRA_OECONF += " --with-pear-php-cli=${STAGING_BINDIR_NATIVE}/php"
#DEPENDS += " php-native"
diff --git a/packages/php/php_5.2.0.bb b/packages/php/php_5.2.0.bb
new file mode 100644
index 0000000000..a4674f08ef
--- /dev/null
+++ b/packages/php/php_5.2.0.bb
@@ -0,0 +1,92 @@
+SECTION = "console/network"
+DESCRIPTION = "A server-side, HTML-embedded scripting language. This package provides the CGI."
+LICENSE = "PHP"
+DEPENDS = "zlib libxml2 mysql libiconv php-native"
+
+SRC_URI = "http://us2.php.net/distributions/php-${PV}.tar.bz2\
+ file://autotools.patch;patch=1 \
+ file://acinclude-xml2-config.patch;patch=1 \
+ file://pear-makefile.patch;patch=1 \
+ "
+S = "${WORKDIR}/php-${PV}"
+PR = "r1"
+
+inherit autotools
+
+export THREADS="pthread"
+export LIBS=" -lpthread "
+
+CFLAGS += " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
+EXTRA_OECONF = " --without-iconv \
+ --enable-discard-path \
+ --enable-sockets \
+ --enable-memory-limit \
+ --enable-wddx \
+ --enable-embedded-mysqli \
+ --enable-magic-quotes \
+ --with-zlib \
+ --with-mysql="${STAGING_DIR}/${TARGET_SYS}" \
+ --with-mysqli="${STAGING_BINDIR_NATIVE}/mysql_config" \
+"
+
+
+
+
+# Uncomment the following two lines, and comment the above to enable PEAR
+EXTRA_OECONF += " --with-pear-php-cli=${STAGING_BINDIR} --with-libxml-dir=${STAGING_BINDIR}"
+
+export LD_LIBRARY_PATH = "${STAGING_LIBDIR}"
+export PHP_NATIVE_DIR="${STAGING_BINDIR_NATIVE}"
+export PHP_PEAR_PHP_BIN="/usr/bin/php"
+
+acpaths = ""
+
+do_configure_append() {
+ find ${S} -type f | xargs sed -i 's:I/usr/include:I${STAGING_INCDIR}:g'
+}
+
+do_install () {
+ oe_runmake 'INSTALL_ROOT=${D}' install
+}
+
+
+
+PACKAGES = "${PN}-dbg \
+ ${PN}-cli \
+ ${PN}-pear \
+ ${PN}-dev \
+ ${PN} \
+"
+
+
+FILES_${PN}-dbg ="/usr/bin/.debug"
+
+FILES_${PN}-cli ="/usr/bin/php"
+
+FILES_${PN}-pear ="/usr/bin/pear* /usr/bin/pecl \
+ /usr/lib/php/PEAR \
+ /usr/lib/php/PEAR.php \
+ /usr/lib/php/System.php /usr/lib/php/peclcmd.php /usr/lib/php/pearcmd.php \
+ /usr/lib/php/.channels /usr/lib/php/.channels/.alias \
+ /usr/lib/php/.channels\__uri.reg \
+ /usr/lib/php/.channels\pear.php.net.reg /usr/lib/php/.channels/pecl.php.net.reg \
+ /usr/lib/php/.registry \
+ /usr/lib/php/Archive/Tar.php \
+ /usr/lib/php/Console/Getopt.php /usr/lib/php/OS/Guess.php \
+ /usr/lib/php/.depdb /usr/lib/php/.depdblock /usr/lib/php/.filemap \
+ /usr/lib/php/.lock"
+
+
+FILES_${PN}-dev ="/usr/include/php /usr/include/build \
+ /usr/bin/phpize /usr/bin/php-config"
+
+FILES_${PN} ="/usr/lib/php"
+FILES_${PN} +="/usr/bin"
+
+
+
+RDEPENDS_${PN}-pear =${PN}
+RDEPENDS_${PN}-cli =${PN}
+RDEPENDS_${PN}-dev =${PN}
+
+
diff --git a/packages/picocom/picocom/.mtn2git_empty b/packages/picocom/picocom/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/picocom/picocom/.mtn2git_empty
diff --git a/packages/picocom/picocom/gcc4.patch b/packages/picocom/picocom/gcc4.patch
new file mode 100644
index 0000000000..867ca11bf3
--- /dev/null
+++ b/packages/picocom/picocom/gcc4.patch
@@ -0,0 +1,12 @@
+Index: picocom-1.4/picocom.c
+===================================================================
+--- picocom-1.4.orig/picocom.c 2004-08-12 13:45:11.000000000 +0200
++++ picocom-1.4/picocom.c 2007-03-08 14:40:30.000000000 +0100
+@@ -37,6 +37,7 @@
+ #include <sys/stat.h>
+ #include <sys/wait.h>
+ #include <limits.h>
++#include <bits/posix1_lim.h>
+
+ #define _GNU_SOURCE
+ #include <getopt.h>
diff --git a/packages/picocom/picocom/nolock.patch b/packages/picocom/picocom/nolock.patch
new file mode 100644
index 0000000000..42ca57f927
--- /dev/null
+++ b/packages/picocom/picocom/nolock.patch
@@ -0,0 +1,35 @@
+diff -Naur picocom-1.4.orig/picocom.c picocom-1.4/picocom.c
+--- picocom-1.4.orig/picocom.c 2004-08-12 13:45:11.000000000 +0200
++++ picocom-1.4/picocom.c 2007-03-12 00:23:01.000000000 +0100
+@@ -790,7 +790,9 @@
+ {"escape", required_argument, 0, 'e'},
+ {"noinit", no_argument, 0, 'i'},
+ {"noreset", no_argument, 0, 'r'},
++#ifdef UUCP_LOCK_DIR
+ {"nolock", no_argument, 0, 'l'},
++#endif
+ {"flow", required_argument, 0, 'f'},
+ {"baud", required_argument, 0, 'b'},
+ {"parity", required_argument, 0, 'p'},
+@@ -827,9 +829,11 @@
+ case 'r':
+ opts.noreset = 1;
+ break;
++#ifdef UUCP_LOCK_DIR
+ case 'l':
+ opts.nolock = 1;
+ break;
++#endif
+ case 'e':
+ if ( isupper(optarg[0]) )
+ opts.escape = optarg[0] - 'A' + 1;
+@@ -930,7 +934,9 @@
+ printf("escape is : C-%c\n", 'a' + opts.escape - 1);
+ printf("noinit is : %s\n", opts.noinit ? "yes" : "no");
+ printf("noreset is : %s\n", opts.noreset ? "yes" : "no");
++#ifdef UUCP_LOCK_DIR
+ printf("nolock is : %s\n", opts.nolock ? "yes" : "no");
++#endif
+ printf("send_cmd is : %s\n", opts.send_cmd);
+ printf("receive_cmd is : %s\n", opts.receive_cmd);
+ printf("\n");
diff --git a/packages/picocom/picocom_1.4.bb b/packages/picocom/picocom_1.4.bb
index 04640903b5..c13bdabcc3 100644
--- a/packages/picocom/picocom_1.4.bb
+++ b/packages/picocom/picocom_1.4.bb
@@ -1,8 +1,12 @@
-DESCRIPTION = "Picocom is a lightweight and minimal (~20K) dumb-terminal emulation program. "
+DESCRIPTION = "Lightweight and minimal (~20K) dumb-terminal emulation program."
SECTION = "console/utils"
PRIORITY = "optional"
LICENSE = "GPL"
-SRC_URI = "http://efault.net/npat/hacks/picocom/dist/picocom-${PV}.tar.gz"
+PR = "r2"
+
+SRC_URI = "http://efault.net/npat/hacks/picocom/dist/picocom-${PV}.tar.gz \
+ file://nolock.patch;patch=1 \
+ file://gcc4.patch;patch=1"
CFLAGS_append = ' -DVERSION_STR=\\"${PV}\\"'
diff --git a/packages/pimlico/.mtn2git_empty b/packages/pimlico/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pimlico/.mtn2git_empty
diff --git a/packages/pimlico/contacts.inc b/packages/pimlico/contacts.inc
new file mode 100644
index 0000000000..5fa493fab3
--- /dev/null
+++ b/packages/pimlico/contacts.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "Address-book application."
+LICENSE = "LGPL"
+SECTION = "x11"
+DEPENDS = "glib-2.0 gtk+ eds-dbus"
+RDEPENDS = "libedata-book"
+
+inherit autotools pkgconfig
+
+do_install_append () {
+ install -d ${D}/${datadir}/pixmaps
+ install -m 0644 ${WORKDIR}/stock_contact.png ${D}/${datadir}/pixmaps
+ install -m 0644 ${WORKDIR}/stock_person.png ${D}/${datadir}/pixmaps
+}
+
+FILES_${PN} += "${datadir}/pixmaps/stock_contact.png \
+ ${datadir}/pixmaps/stock_person.png"
diff --git a/packages/pimlico/contacts_0.5.bb b/packages/pimlico/contacts_0.5.bb
new file mode 100644
index 0000000000..6f771e99bf
--- /dev/null
+++ b/packages/pimlico/contacts_0.5.bb
@@ -0,0 +1,5 @@
+require contacts.inc
+
+SRC_URI = "http://pimlico-project.org/sources/${PN}/${PN}-${PV}.tar.gz \
+ file://stock_contact.png \
+ file://stock_person.png"
diff --git a/packages/pimlico/contacts_svn.bb b/packages/pimlico/contacts_svn.bb
new file mode 100644
index 0000000000..5169690781
--- /dev/null
+++ b/packages/pimlico/contacts_svn.bb
@@ -0,0 +1,17 @@
+require contacts.inc
+
+#DEPENDS += "gnome-vfs"
+#RDEPENDS += "gnome-vfs-plugin-file"
+#RRECOMMENDS += "gnome-vfs-plugin-http"
+
+PV = "0.5+svn${SRCDATE}"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http \
+ file://stock_contact.png \
+ file://stock_person.png"
+
+S = "${WORKDIR}/trunk"
+
+#EXTRA_OECONF = "--enable-gnome-vfs"
diff --git a/packages/pimlico/dates.inc b/packages/pimlico/dates.inc
new file mode 100644
index 0000000000..d4debfd28d
--- /dev/null
+++ b/packages/pimlico/dates.inc
@@ -0,0 +1,20 @@
+DESCRIPTION = "Dates is a calendar application."
+LICENSE = "LGPL"
+SECTION = "x11"
+DEPENDS = "glib-2.0 gtk+ libglade eds-dbus"
+RDEPENDS = "libedata-cal"
+RCONFLICTS_${PN} = "openmoko-dates"
+
+inherit autotools pkgconfig gtk-icon-cache
+
+# EXTRA_OECONF = "--disable-debug"
+EXTRA_OECONF = "--enable-owl=true"
+
+FILES_${PN} += "${datadir}/pixmaps/dates.png"
+
+do_install_append () {
+ install -d ${D}/${datadir}/pixmaps
+ install -m 0644 ${D}/${datadir}/icons/hicolor/48x48/apps/dates.png ${D}/${datadir}/pixmaps/
+}
+
+PRIVATE_LIBS = "libgtkdatesview.so.0"
diff --git a/packages/pimlico/dates_0.4.2.bb b/packages/pimlico/dates_0.4.2.bb
new file mode 100644
index 0000000000..d7f0185b86
--- /dev/null
+++ b/packages/pimlico/dates_0.4.2.bb
@@ -0,0 +1,3 @@
+require dates.inc
+
+SRC_URI = "http://projects.o-hand.com/sources/dates/dates-${PV}.tar.gz"
diff --git a/packages/pimlico/dates_svn.bb b/packages/pimlico/dates_svn.bb
new file mode 100644
index 0000000000..facafe0a2a
--- /dev/null
+++ b/packages/pimlico/dates_svn.bb
@@ -0,0 +1,8 @@
+require dates.inc
+
+DEFAULT_PREFERENCE = "-1"
+
+PV = "0.4.2+svn${SRCDATE}"
+S = "${WORKDIR}/trunk"
+
+SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http"
diff --git a/packages/pimlico/files/.mtn2git_empty b/packages/pimlico/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pimlico/files/.mtn2git_empty
diff --git a/packages/pimlico/files/stock_contact.png b/packages/pimlico/files/stock_contact.png
new file mode 100644
index 0000000000..123b4485ac
--- /dev/null
+++ b/packages/pimlico/files/stock_contact.png
Binary files differ
diff --git a/packages/pimlico/files/stock_person.png b/packages/pimlico/files/stock_person.png
new file mode 100644
index 0000000000..2b1328b4e2
--- /dev/null
+++ b/packages/pimlico/files/stock_person.png
Binary files differ
diff --git a/packages/pimlico/files/tasks-single.diff b/packages/pimlico/files/tasks-single.diff
new file mode 100644
index 0000000000..dd807ea256
--- /dev/null
+++ b/packages/pimlico/files/tasks-single.diff
@@ -0,0 +1,9 @@
+Index: tasks/data/tasks.desktop.in
+===================================================================
+--- tasks/data/tasks.desktop.in (revision 115)
++++ tasks/data/tasks.desktop.in (working copy)
+@@ -9,3 +9,4 @@
+ Categories=GTK;Application;Office;ProjectManagement;
+ Terminal=false
+ StartupNotify=true
++SingleInstance=true
diff --git a/packages/pimlico/tasks.inc b/packages/pimlico/tasks.inc
new file mode 100644
index 0000000000..9b7c245ad3
--- /dev/null
+++ b/packages/pimlico/tasks.inc
@@ -0,0 +1,6 @@
+DESCRIPTION = "Task list application"
+LICENSE = "GPL"
+SECTION = "x11"
+DEPENDS = "glib-2.0 gtk+ eds-dbus"
+
+inherit autotools pkgconfig gtk-icon-cache
diff --git a/packages/pimlico/tasks_0.4.bb b/packages/pimlico/tasks_0.4.bb
new file mode 100644
index 0000000000..9601abae47
--- /dev/null
+++ b/packages/pimlico/tasks_0.4.bb
@@ -0,0 +1,6 @@
+require tasks.inc
+
+PR = "r1"
+
+SRC_URI = "http://pimlico-project.org/sources/${PN}/${PN}-${PV}.tar.gz \
+ file://tasks-single.diff;patch=1"
diff --git a/packages/pimlico/tasks_svn.bb b/packages/pimlico/tasks_svn.bb
new file mode 100644
index 0000000000..9d9786cbdd
--- /dev/null
+++ b/packages/pimlico/tasks_svn.bb
@@ -0,0 +1,8 @@
+require tasks.inc
+
+DEFAULT_PREFERENCE = "-1"
+
+PV = "0.4+svn${SRCDATE}"
+S = "${WORKDIR}/trunk"
+
+SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http"
diff --git a/packages/pipepanic/files/fix-datadir.patch b/packages/pipepanic/files/fix-datadir.patch
index b7df38a3fb..479b266efe 100644
--- a/packages/pipepanic/files/fix-datadir.patch
+++ b/packages/pipepanic/files/fix-datadir.patch
@@ -10,7 +10,7 @@
#define TRUE 1
#define VERSION "0.1.1"
-#define DATADIR "/opt/QtPalmtop/share/pipepanic/"
-+#define DATADIR "/usr/share"
++#define DATADIR "/usr/share/pipepanic/"
#define DIGITS24BMP "digits24.bmp"
#define DIGITS48BMP "digits48.bmp"
#define TILES24BMP "tiles24.bmp"
diff --git a/packages/pipepanic/pipepanic_0.1.1.bb b/packages/pipepanic/pipepanic_0.1.1.bb
index d1505b3b7a..91d53b9524 100644
--- a/packages/pipepanic/pipepanic_0.1.1.bb
+++ b/packages/pipepanic/pipepanic_0.1.1.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Pipepanic is a pipe connecting game using libSDL. \
Connect as many different shaped pipes together as possible within the time given."
HOMEPAGE = "http://www.users.waitrose.com/~thunor/pipepanic/"
LICENSE = "GPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://www.users.waitrose.com/~thunor/pipepanic/dload/pipepanic-${PV}-source.tar.gz \
file://fix-datadir.patch;patch=1"
diff --git a/packages/poboxserver/poboxserver_1.2.5.bb b/packages/poboxserver/poboxserver_1.2.5.bb
index 6278c920be..e582ce0ccf 100644
--- a/packages/poboxserver/poboxserver_1.2.5.bb
+++ b/packages/poboxserver/poboxserver_1.2.5.bb
@@ -1,8 +1,8 @@
DESCRIPTION = "OpenPOBox is an open source implementation of a 'Predictive Operation Based On eXample'"
-SECTION = "libs/inputmethods"
+SECTION = "inputmethods"
LICENSE = "GPL"
DEPENDS = "perl-native ruby-native nkf-native"
-PR = "r2"
+PR = "r3"
SRC_URI = "${SOURCEFORGE_MIRROR}/gakusei/pobox-${PV}.tar.bz2 \
http://www.vanille.de/mirror/pbserver-${PV}.tar.gz \
diff --git a/packages/poppler/poppler.inc b/packages/poppler/poppler.inc
index 14ae8220a8..c33d6f0ea1 100644
--- a/packages/poppler/poppler.inc
+++ b/packages/poppler/poppler.inc
@@ -1,7 +1,7 @@
DESCRIPTION = "Poppler is a PDF rendering library based on the xpdf-3.0 code base."
DEPENDS = "fontconfig jpeg zlib gtk+ cairo"
LICENSE = "GPL"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://poppler.freedesktop.org/${PN}-${PV}.tar.gz"
@@ -9,7 +9,7 @@ inherit autotools pkgconfig
EXTRA_OECONF = " --enable-xpdf-headers \
--disable-gtk-test \
- --disable-poppler-qt \
+ --disable-poppler-qt --disable-poppler-qt4 \
--enable-zlib \
"
diff --git a/packages/poppler/poppler_0.5.1.bb b/packages/poppler/poppler_0.5.1.bb
deleted file mode 100644
index d18a99f733..0000000000
--- a/packages/poppler/poppler_0.5.1.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "Poppler is a PDF rendering library based on the xpdf-3.0 code base."
-DEPENDS = "fontconfig jpeg gtk+ cairo"
-LICENSE = "GPL"
-PR = "r1"
-
-SRC_URI = "http://poppler.freedesktop.org/${PN}-${PV}.tar.gz"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--enable-xpdf-headers --disable-gtk-test --disable-poppler-qt"
-
-do_stage() {
- autotools_stage_all
-}
diff --git a/packages/poppler/poppler_0.5.3.bb b/packages/poppler/poppler_0.5.3.bb
deleted file mode 100644
index d18a99f733..0000000000
--- a/packages/poppler/poppler_0.5.3.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "Poppler is a PDF rendering library based on the xpdf-3.0 code base."
-DEPENDS = "fontconfig jpeg gtk+ cairo"
-LICENSE = "GPL"
-PR = "r1"
-
-SRC_URI = "http://poppler.freedesktop.org/${PN}-${PV}.tar.gz"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--enable-xpdf-headers --disable-gtk-test --disable-poppler-qt"
-
-do_stage() {
- autotools_stage_all
-}
diff --git a/packages/poppler/poppler_0.5.4.bb b/packages/poppler/poppler_0.5.4.bb
index ade41a276a..92c25bc0ac 100644
--- a/packages/poppler/poppler_0.5.4.bb
+++ b/packages/poppler/poppler_0.5.4.bb
@@ -1,2 +1,2 @@
require poppler.inc
-PR = "r1"
+PR = "r2"
diff --git a/packages/poptop/poptop_1.3.0.bb b/packages/poptop/poptop_1.3.0.bb
index 0ad4588ac4..da7ebe6a24 100644
--- a/packages/poptop/poptop_1.3.0.bb
+++ b/packages/poptop/poptop_1.3.0.bb
@@ -6,7 +6,7 @@ For more info visit http://www.poptop.org/"
HOMEPAGE = "http://www.poptop.org/"
LICENSE = "GPL"
-SECTION = "network"
+SECTION = "network"
PRIORITY = "optional"
DEPENDS = "ppp"
RDEPENDS = "ppp"
diff --git a/packages/portmap/portmap-5-25/.mtn2git_empty b/packages/portmap/portmap-5-25/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/portmap/portmap-5-25/.mtn2git_empty
diff --git a/packages/portmap/portmap-5-24/make.patch b/packages/portmap/portmap-5-25/make.patch
index 7726846b7c..7726846b7c 100644
--- a/packages/portmap/portmap-5-24/make.patch
+++ b/packages/portmap/portmap-5-25/make.patch
diff --git a/packages/portmap/portmap-5-26/.mtn2git_empty b/packages/portmap/portmap-5-26/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/portmap/portmap-5-26/.mtn2git_empty
diff --git a/packages/portmap/portmap-5-26/make.patch b/packages/portmap/portmap-5-26/make.patch
new file mode 100644
index 0000000000..7726846b7c
--- /dev/null
+++ b/packages/portmap/portmap-5-26/make.patch
@@ -0,0 +1,73 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+Index: portmap_5beta/Makefile
+===================================================================
+--- portmap_5beta.orig/Makefile 2006-12-19 10:32:58.000000000 +0000
++++ portmap_5beta/Makefile 2006-12-19 10:35:54.000000000 +0000
+@@ -110,6 +110,13 @@
+ #
+ #CONST = -Dconst=
+
++DESTDIR =
++prefix = /usr
++sbindir = /sbin
++datadir = $(prefix)/share
++mandir = $(datadir)/man
++docdir = $(datadir)/doc/portmap
++
+ ### End of configurable stuff.
+ ##############################
+
+@@ -127,7 +134,7 @@
+ COPT = $(CONST) $(HOSTS_ACCESS) $(CHECK_PORT) \
+ $(SYS) -DFACILITY=$(FACILITY) $(ULONG) $(ZOMBIES) $(BROKEN_PIPE) \
+ $(SA_LEN) $(LOOPBACK) $(SETPGRP)
+-CFLAGS = -Wall $(COPT) -O2 $(NSARCHS)
++CFLAGS = -Wall -O2 $(NSARCHS)
+ OBJECTS = portmap.o pmap_check.o from_local.o $(AUX)
+
+ all: portmap pmap_dump pmap_set
+@@ -142,20 +149,23 @@
+ $(CC) $(CFLAGS) -o $@ $? $(LIBS)
+
+ from_local: from_local.c
+- cc $(CFLAGS) -DTEST -o $@ from_local.c
++ $(CC) $(COPT) -DTEST $(CFLAGS) $(LDFLAGS) -o $@ from_local.c
+
+ get_myaddress: get_myaddress.c
+- cc $(CFLAGS) -DTEST -o $@ get_myaddress.c $(LIBS)
++ $(CC) $(COPT) -DTEST $(CFLAGS) $(LDFLAGS) -o $@ get_myaddress.c $(LIBS)
+
+ install: all
+- install -o root -g root -m 0755 -s portmap ${BASEDIR}/sbin
+- install -o root -g root -m 0755 -s pmap_dump ${BASEDIR}/sbin
+- install -o root -g root -m 0755 -s pmap_set ${BASEDIR}/sbin
+- install -o root -g root -m 0644 portmap.8 ${BASEDIR}/usr/share/man/man8
+- install -o root -g root -m 0644 pmap_dump.8 ${BASEDIR}/usr/share/man/man8
+- install -o root -g root -m 0644 pmap_set.8 ${BASEDIR}/usr/share/man/man8
+- cat BLURB >${BASEDIR}/usr/share/doc/portmap/portmapper.txt
+- gzip -9f ${BASEDIR}/usr/share/doc/portmap/portmapper.txt
++ install -d $(DESTDIR)/$(sbindir) \
++ $(DESTDIR)/$(docdir) \
++ $(DESTDIR)/$(mandir)/man8
++ install -m 0755 portmap ${DESTDIR}/sbin
++ install -m 0755 pmap_dump ${DESTDIR}/sbin
++ install -m 0755 pmap_set ${DESTDIR}/sbin
++ install -m 0644 portmap.8 ${DESTDIR}/usr/share/man/man8
++ install -m 0644 pmap_dump.8 ${DESTDIR}/usr/share/man/man8
++ install -m 0644 pmap_set.8 ${DESTDIR}/usr/share/man/man8
++ cat BLURB >${DESTDIR}/usr/share/doc/portmap/portmapper.txt
++ gzip -9f ${DESTDIR}/usr/share/doc/portmap/portmapper.txt
+
+
+ lint:
+@@ -181,3 +191,6 @@
+ portmap.o: portmap.c
+ portmap.o: pmap_check.h Makefile
+ strerror.o: strerror.c
++
++%.o: %.c
++ $(CC) $(COPT) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $*.c -o $*.o
diff --git a/packages/portmap/portmap-unslung_5-9.bb b/packages/portmap/portmap-unslung_5-9.bb
index ee6c648e9b..c86ae1e892 100644
--- a/packages/portmap/portmap-unslung_5-9.bb
+++ b/packages/portmap/portmap-unslung_5-9.bb
@@ -4,8 +4,8 @@ LICENSE = "GPL"
PR = "r2"
COMPATIBLE_MACHINE = "nslu2"
-SRC_URI = "http://www.uk.debian.org/debian/pool/main/p/portmap/portmap_5.orig.tar.gz \
- http://www.uk.debian.org/debian/pool/main/p/portmap/portmap_${PV}.diff.gz;patch=1 \
+SRC_URI = "${DEBIAN_MIRROR}/main/p/portmap/portmap_5.orig.tar.gz \
+ ${DEBIAN_MIRROR}/main/p/portmap/portmap_${PV}.diff.gz;patch=1 \
file://no-libwrap.patch;patch=1;pnum=0 \
file://portmap.init \
file://make.patch;patch=1"
@@ -18,6 +18,5 @@ do_compile() {
}
do_install() {
- oe_runmake 'docdir=${datadir}/doc/portmap' \
- 'DESTDIR=${D}' install
+ oe_runmake 'docdir=${datadir}/doc/portmap' 'DESTDIR=${D}' install
}
diff --git a/packages/portmap/portmap.inc b/packages/portmap/portmap.inc
index ad477828fb..bb9d2b6652 100644
--- a/packages/portmap/portmap.inc
+++ b/packages/portmap/portmap.inc
@@ -2,17 +2,13 @@ DESCRIPTION = "RPC program number mapper."
SECTION = "console/network"
LICENSE = "GPL"
-SRC_URI = "http://www.uk.debian.org/debian/pool/main/p/portmap/portmap_5.orig.tar.gz \
- http://www.uk.debian.org/debian/pool/main/p/portmap/portmap_${PV}.diff.gz;patch=1 \
+SRC_URI = "${DEBIAN_MIRROR}/main/p/portmap/portmap_5.orig.tar.gz \
+ ${DEBIAN_MIRROR}/main/p/portmap/portmap_${PV}.diff.gz;patch=1 \
file://no-libwrap.patch;patch=1;pnum=0 \
file://portmap.init \
file://make.patch;patch=1"
S = "${WORKDIR}/portmap_5beta"
-PACKAGES =+ "portmap-utils"
-FILES_portmap-utils = "/sbin/pmap_set /sbin/pmap_dump"
-FILES_${PN}-doc += "${docdir}"
-
INITSCRIPT_NAME = "portmap"
INITSCRIPT_PARAMS = "start 43 S . start 32 0 6 . stop 81 1 ."
@@ -27,6 +23,9 @@ do_compile() {
do_install() {
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/portmap.init ${D}${sysconfdir}/init.d/portmap
- oe_runmake 'docdir=${docdir}/portmap' \
- 'DESTDIR=${D}' install
+ oe_runmake 'docdir=${docdir}/portmap' 'DESTDIR=${D}' install
}
+
+PACKAGES =+ "portmap-utils"
+FILES_portmap-utils = "/sbin/pmap_set /sbin/pmap_dump"
+FILES_${PN}-doc += "${docdir}"
diff --git a/packages/portmap/portmap_5-24.bb b/packages/portmap/portmap_5-25.bb
index 064679e7f0..064679e7f0 100644
--- a/packages/portmap/portmap_5-24.bb
+++ b/packages/portmap/portmap_5-25.bb
diff --git a/packages/portmap/portmap_5-26.bb b/packages/portmap/portmap_5-26.bb
new file mode 100644
index 0000000000..064679e7f0
--- /dev/null
+++ b/packages/portmap/portmap_5-26.bb
@@ -0,0 +1 @@
+require portmap.inc
diff --git a/packages/postfix/files/internal_recipient b/packages/postfix/files/internal_recipient
new file mode 100644
index 0000000000..0d11944beb
--- /dev/null
+++ b/packages/postfix/files/internal_recipient
@@ -0,0 +1,2 @@
+root@ permit_mynetworks,reject
+
diff --git a/packages/postfix/files/main.cf_2.0 b/packages/postfix/files/main.cf_2.0
index 002f681217..1a6ddabbf3 100644
--- a/packages/postfix/files/main.cf_2.0
+++ b/packages/postfix/files/main.cf_2.0
@@ -2,6 +2,7 @@
cat <<EOF
# Configure your domain and accounts
mydomain=sample.com
+mynetworks = 127.0.0.1/32 192.168.1.0/24
virtual_mailbox_domains = sample.com, other.net
virtual_mailbox_maps = hash:/etc/postfix/virtual
@@ -35,4 +36,66 @@ debug_peer_level = 2
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
+
+smtpd_data_restrictions =
+ permit_mynetworks,
+ reject_unauth_pipelining,
+ permit
+
+smtpd_client_restrictions =
+ permit_mynetworks,
+ # reject_unknown_client, # This can cause a lot of false rejects.
+ reject_invalid_hostname,
+ reject_rbl_client list.dsbl.org,
+ reject_rbl_client sbl.spamhaus.org,
+ reject_rbl_client cbl.abuseat.org,
+ reject_rbl_client dul.dnsbl.sorbs.net,
+ permit
+
+smtpd_helo_required = yes
+smtpd_helo_restrictions =
+ permit_mynetworks,
+ reject_unauth_pipelining,
+ # reject_non_fqdn_hostname, # This can cause a lot of false rejects.
+ # reject_unknown_hostname, # This can cause a lot of false rejects.
+ reject_invalid_hostname,
+ permit
+
+smtpd_sender_restrictions =
+ permit_mynetworks,
+ reject_non_fqdn_sender,
+ # check_sender_access hash:/etc/postfix/access_domains,
+ reject_unknown_sender_domain,
+ permit
+
+smtpd_recipient_restrictions =
+ permit_mynetworks,
+ permit_sasl_authenticated,
+ reject_unauth_destination,
+
+ # check_recipient_access pcre:/etc/postfix/recipient_checks.pcre,
+ # check_helo_access pcre:/etc/postfix/helo_checks.pcre,
+
+ # check_client_access hash:/etc/postfix/maps/access_client,
+ # check_client_access hash:/etc/postfix/maps/exceptions_client,
+ # check_helo_access hash:/etc/postfix/maps/access_helo,
+ # check_helo_access hash:/etc/postfix/maps/verify_helo,
+ # check_sender_access hash:/etc/postfix/maps/access_sender,
+ # check_sender_access hash:/etc/postfix/maps/verify_sender,
+ # check_recipient_access hash:/etc/postfix/maps/access_recipient,
+
+ # reject_multi_recipient_bounce,
+ reject_non_fqdn_recipient,
+ reject_unknown_recipient_domain,
+ # reject_unlisted_recipient,
+ #check_policy_service unix:private/policy,
+
+ # check_sender_access hash:/etc/postfix/maps/no_verify_sender,
+ # check_sender_access hash:/etc/postfix/access_domains,
+ # reject_unverified_sender,
+ # reject_unverified_recipient
+ check_recipient_access hash:/etc/postfix/internal_recipient
+
+disable_vrfy_command = yes
+
EOF
diff --git a/packages/postfix/files/volatiles b/packages/postfix/files/volatiles
index cb111cd4c0..bc330c99bd 100644
--- a/packages/postfix/files/volatiles
+++ b/packages/postfix/files/volatiles
@@ -1,15 +1,15 @@
-d postfix nogroup 2755 /var/spool/mail
-d root postfix 0755 /var/spool/postfix
-d postfix root 0700 /var/spool/postfix/active
-d postfix root 0700 /var/spool/postfix/bounce
-d postfix root 0700 /var/spool/postfix/corrupt
-d postfix root 0700 /var/spool/postfix/defer
-d postfix root 0700 /var/spool/postfix/deferred
-d postfix root 0700 /var/spool/postfix/flush
-d postfix root 0700 /var/spool/postfix/hold
-d postfix root 0700 /var/spool/postfix/incoming
-d postfix postdrop 0730 /var/spool/postfix/maildrop
-d root root 0755 /var/spool/postfix/pid
-d postfix root 0700 /var/spool/postfix/private
-d postfix postdrop 0710 /var/spool/postfix/public
-d root root 0755 /var/spool/vmail
+d postfix nogroup 2755 /var/spool/mail none
+d root postfix 0755 /var/spool/postfix none
+d postfix root 0700 /var/spool/postfix/active none
+d postfix root 0700 /var/spool/postfix/bounce none
+d postfix root 0700 /var/spool/postfix/corrupt none
+d postfix root 0700 /var/spool/postfix/defer none
+d postfix root 0700 /var/spool/postfix/deferred none
+d postfix root 0700 /var/spool/postfix/flush none
+d postfix root 0700 /var/spool/postfix/hold none
+d postfix root 0700 /var/spool/postfix/incoming none
+d postfix postdrop 0730 /var/spool/postfix/maildrop none
+d root root 0755 /var/spool/postfix/pid none
+d postfix root 0700 /var/spool/postfix/private none
+d postfix postdrop 0710 /var/spool/postfix/public none
+d root root 0755 /var/spool/vmail none
diff --git a/packages/postfix/postfix_2.0.20.bb b/packages/postfix/postfix_2.0.20.bb
index 117fd2fc61..280f073333 100644
--- a/packages/postfix/postfix_2.0.20.bb
+++ b/packages/postfix/postfix_2.0.20.bb
@@ -1,7 +1,7 @@
SECTION = "console/network"
DEPENDS = "virtual/db libpcre postfix-native"
LICENSE = "IPL"
-PR = "r10"
+PR = "r11"
SRC_URI = "ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-${PV}.tar.gz \
file://${FILESDIR}/makedefs.patch;patch=1 \
@@ -9,6 +9,7 @@ SRC_URI = "ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-${PV
file://main.cf_2.0 \
file://volatiles \
file://postfix \
+ file://internal_recipient \
"
S = "${WORKDIR}/postfix-${PV}"
@@ -47,6 +48,7 @@ do_install () {
install -m 755 ${WORKDIR}/main.cf_2.0 ${D}${localstatedir}/tmp/main_cf.sh
install -m 644 ${WORKDIR}/volatiles ${D}${sysconfdir}/default/volatiles/01_postfix
install -m 755 ${WORKDIR}/postfix ${D}${sysconfdir}/init.d/postfix
+ install -m 644 ${WORKDIR}/internal_recipient ${D}${sysconfdir}/postfix/internal_recipient
mv ${D}${sbindir}/sendmail ${D}${sbindir}/sendmail.${PN}
}
diff --git a/packages/postgresql/postgresql_8.1.4.bb b/packages/postgresql/postgresql_8.1.4.bb
index 5843b2b3df..083fed5a21 100644
--- a/packages/postgresql/postgresql_8.1.4.bb
+++ b/packages/postgresql/postgresql_8.1.4.bb
@@ -5,7 +5,7 @@ DEPENDS = "zlib readline"
#WARNING: this recipe assumes you have the timezone compiler present in /usr/sbin/zic
-SRC_URI = "ftp://ftp.nl.postgresql.org/pub/mirror/postgresql/source/v${PV}/${P}.tar.bz2"
+SRC_URI = "ftp://ftp-archives.postgresql.org/pub/source/v${PV}/${P}.tar.bz2"
inherit autotools pkgconfig
diff --git a/packages/postgresql/postgresql_8.1.8.bb b/packages/postgresql/postgresql_8.1.8.bb
new file mode 100644
index 0000000000..be44052437
--- /dev/null
+++ b/packages/postgresql/postgresql_8.1.8.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "PostgreSQL is a powerful, open source relational database system."
+HOMEPAGE = "http://www.postgresql.com"
+LICENSE = "BSD"
+DEPENDS = "zlib readline"
+
+#WARNING: this recipe assumes you have the timezone compiler present in /usr/sbin/zic
+
+SRC_URI = "ftp://ftp.us.postgresql.org/pub/mirrors/postgresql/source/v${PV}/${P}.tar.bz2"
+
+
+inherit autotools pkgconfig
+
+FILES_${PN}-doc += "${prefix}/doc/"
+
+do_compile_append() {
+cp /usr/sbin/zic ${S}/src/timezone/
+}
+
+
+
diff --git a/packages/povray/povray_3.6.1.bb b/packages/povray/povray_3.6.1.bb
index 914d2eaad6..107c86cfb8 100644
--- a/packages/povray/povray_3.6.1.bb
+++ b/packages/povray/povray_3.6.1.bb
@@ -3,11 +3,10 @@ HOMEPAGE = "http://www.povray.org"
SECTION = "console/graphics"
#Make this a weak assigment to allow branding of the povray binary
LICENSE = "povray"
-
DEPENDS = "virtual/libx11 zlib jpeg libpng tiff"
RDEPENDS = ""
-PR = "r1"
+PR = "r2"
#We apply a patch that subverts the checks for jpeg, zlib, png and tiff because we know OE has the required versions, but it is still a hack.
SRC_URI = "http://www.povray.org/redirect/www.povray.org/ftp/pub/povray/Official/Unix/${P}.tar.bz2 \
@@ -19,7 +18,7 @@ PARALLEL_MAKE = ""
#autoreconf breaks, so we'll skip that. The added advantage is that the patch to ./configure actually has effect
do_configure() {
- oe_runconf
+ oe_runconf COMPILED_BY="${MAINTAINER}"
}
PACKAGES += "${PN}-scenes ${PN}-ini ${PN}-icons ${PN}-scripts ${PN}-includes"
diff --git a/packages/ppp/ppp_2.4.3.bb b/packages/ppp/ppp_2.4.3.bb
index ee41bcc646..98a7251a7e 100644
--- a/packages/ppp/ppp_2.4.3.bb
+++ b/packages/ppp/ppp_2.4.3.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "Point-to-Point Protocol (PPP) daemon"
HOMEPAGE = "http://samba.org/ppp/"
DEPENDS = "libpcap"
LICENSE = "BSD GPLv2"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://ppp.samba.org/ftp/ppp/ppp-${PV}.tar.gz \
file://makefile.patch;patch=1 \
@@ -47,6 +47,7 @@ CONFFILES_${PN} = "${sysconfdir}/ppp/pap-secrets ${sysconfdir}/ppp/chap-secrets
PACKAGES += "ppp-oa ppp-oe ppp-radius ppp-winbind ppp-minconn ppp-password ppp-tools"
FILES_${PN} = "/etc /usr/bin /usr/sbin/chat /usr/sbin/pppd"
FILES_${PN}_nylon = "/etc /usr/bin /usr/sbin/chat /usr/sbin/pppd /usr/sbin/tdbread"
+FILES_${PN}-dbg += "${libdir}/pppd/2.4.3/.debug"
FILES_ppp-oa = "/usr/lib/pppd/2.4.3/pppoatm.so"
FILES_ppp-oe = "/usr/sbin/pppoe-discovery /usr/lib/pppd/2.4.3/rp-pppoe.so"
FILES_ppp-radius = "/usr/lib/pppd/2.4.3/radius.so /usr/lib/pppd/2.4.3/radattr.so /usr/lib/pppd/2.4.3/radrealms.so"
diff --git a/packages/pptp-linux/pptp-linux_1.5.0.bb b/packages/pptp-linux/pptp-linux_1.5.0.bb
index 7fdcd4d316..68551443fa 100644
--- a/packages/pptp-linux/pptp-linux_1.5.0.bb
+++ b/packages/pptp-linux/pptp-linux_1.5.0.bb
@@ -4,7 +4,7 @@ Tunneling Protocol, PPTP. Allows connection to a PPTP based \
Virtual Private Network (VPN) as used by employers and some \
cable and ADSL internet service providers."
LICENSE = "GPL"
-SECTION = "network"
+SECTION = "network"
PRIORITY = "optional"
DEPENDS = "ppp "
diff --git a/packages/prism3-support/files/hostap-fw-load b/packages/prism3-support/files/hostap-fw-load
index 707030c6a7..1f37aaf744 100644
--- a/packages/prism3-support/files/hostap-fw-load
+++ b/packages/prism3-support/files/hostap-fw-load
@@ -1,7 +1,7 @@
#!/bin/sh
# dont handle non-wireless interfaces
-if [ -n `cat /proc/net/wireless|grep $IFACE` ]; then
+if [ -z "`grep $IFACE /proc/net/wireless`" ]; then
exit 0
fi
@@ -23,4 +23,4 @@ fi
# lets hope that run-parts obeys the order :D
-exit 0 \ No newline at end of file
+exit 0
diff --git a/packages/prism3-support/prism3-support_1.0.0.bb b/packages/prism3-support/prism3-support_1.0.0.bb
index b3c00e422f..bcf571e093 100644
--- a/packages/prism3-support/prism3-support_1.0.0.bb
+++ b/packages/prism3-support/prism3-support_1.0.0.bb
@@ -4,7 +4,7 @@ LICENSE = "GPL"
DEPENDS = "prism3-firmware hostap-utils"
RDEPENDS = "prism3-firmware hostap-utils"
PACKAGE_ARCH = "all"
-PR = "r3"
+PR = "r5"
SRC_URI = "file://hostap-fw-load"
diff --git a/packages/prismstumbler/prismstumbler-0.7.3+0.7.4pre1/.mtn2git_empty b/packages/prismstumbler/prismstumbler-0.7.3+0.7.4pre1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/prismstumbler/prismstumbler-0.7.3+0.7.4pre1/.mtn2git_empty
diff --git a/packages/prismstumbler/prismstumbler-0.7.3+0.7.4pre1/gpsapi.patch b/packages/prismstumbler/prismstumbler-0.7.3+0.7.4pre1/gpsapi.patch
new file mode 100644
index 0000000000..638a877b77
--- /dev/null
+++ b/packages/prismstumbler/prismstumbler-0.7.3+0.7.4pre1/gpsapi.patch
@@ -0,0 +1,13 @@
+--- prismstumbler-0.7.4pre1/src/daemon/gpsctl.c~ 2007-04-04 00:10:03.000000000 +0200
++++ prismstumbler-0.7.4pre1/src/daemon/gpsctl.c 2007-04-04 00:10:03.000000000 +0200
+@@ -30,8 +30,8 @@
+ if(!gps_conn)
+ return 0;
+
+- *lat = (float) gps_conn->newdata.latitude;
+- *lon = (float) gps_conn->newdata.longitude;
++ *lat = (float) gps_conn->fix.latitude;
++ *lon = (float) gps_conn->fix.longitude;
+ return 1;
+ }
+
diff --git a/packages/prismstumbler/prismstumbler-0.7.3/crosscompile.patch b/packages/prismstumbler/prismstumbler-0.7.3/crosscompile.patch
new file mode 100644
index 0000000000..63e9f677a5
--- /dev/null
+++ b/packages/prismstumbler/prismstumbler-0.7.3/crosscompile.patch
@@ -0,0 +1,166 @@
+Index: prismstumbler-0.7.3/src/gpsd/Makefile.in
+===================================================================
+--- prismstumbler-0.7.3.orig/src/gpsd/Makefile.in
++++ prismstumbler-0.7.3/src/gpsd/Makefile.in
+@@ -128,8 +128,8 @@ xgpsspeed: $(XGPSOBJS)
+ $(LINK.c) -o $@ $(XGPSOBJS) -L. -lgpsd $(LIBXAW) $(ALL_X_LIBS) $(LIBS)
+
+ libgpsd.a: $(LIB_OBJECTS)
+- ar -r libgpsd.a $(LIB_OBJECTS)
+- ranlib libgpsd.a
++ $(AR) -r libgpsd.a $(LIB_OBJECTS)
++ $(RANLIB) libgpsd.a
+
+ clean:
+ rm -f *.o *.a gpsd gps *~ config.status
+Index: prismstumbler-0.7.3/src/gpsd/Makefile
+===================================================================
+--- prismstumbler-0.7.3.orig/src/gpsd/Makefile
++++ prismstumbler-0.7.3/src/gpsd/Makefile
+@@ -1,4 +1,3 @@
+-# Generated automatically from Makefile.in by configure.
+ # Makefile.in
+ # $Modified: Thu Jan 22 11:55:32 1998 by brook $
+
+@@ -7,10 +6,10 @@
+
+ # What we use to compile C files.
+ # CC = cc
+-CC = gcc
++CC = ccache arm-angstrom-linux-gnueabi-gcc -march=armv5te -mtune=xscale
+
+ # The flags we use to compile C files.
+-CFLAGS = -g -O2
++CFLAGS = -I/home/papercrane/oe/angstrom.build/tmp/work/armv5te-angstrom-linux-gnueabi/prismstumbler-0.7.3-r5/prismstumbler-0.7.3/include -D_GNU_SOURCE -isystem/home/papercrane/oe/angstrom.build/tmp/staging/arm-angstrom-linux-gnueabi/include -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os
+
+
+ ## The C preprocessor.
+@@ -19,7 +18,7 @@ CFLAGS = -g -O2
+ CPP = @CPP_TRADITIONAL@
+
+ # Flags passed to the C preprocessor. ()
+-CPPFLAGS =
++CPPFLAGS = -isystem/home/papercrane/oe/angstrom.build/tmp/staging/arm-angstrom-linux-gnueabi/include
+
+ # Definitions to be passed to the C preprocessor. (-DHAVE_CONFIG_H)
+ DEFS = -DHAVE_CONFIG_H
+@@ -28,10 +27,10 @@ DEFS = -DHAVE_CONFIG_H
+ ## The Linker.
+
+ # Flags passed to the linker. (-g -O)
+-LDFLAGS =
++LDFLAGS = -L/home/papercrane/oe/angstrom.build/tmp/staging/arm-angstrom-linux-gnueabi/lib -Wl,-rpath-link,/home/papercrane/oe/angstrom.build/tmp/staging/arm-angstrom-linux-gnueabi/lib -Wl,-O1
+
+ # Use this for building statically linked executables with GCC.
+-# LDFLAGS = -static
++# LDFLAGS = -static -L/home/papercrane/oe/angstrom.build/tmp/staging/arm-angstrom-linux-gnueabi/lib -Wl,-rpath-link,/home/papercrane/oe/angstrom.build/tmp/staging/arm-angstrom-linux-gnueabi/lib -Wl,-O1
+
+
+ ## Local libraries
+@@ -52,7 +51,7 @@ NETLIBS = $(LIBNSL) $(LIBSOCKET)
+ ## X Libraries
+
+ # Special flags for linking with X. (-L/usr/X11R5/lib)
+-X_LDFLAGS = -L/usr/X11R6/lib
++X_LDFLAGS = -L/usr/lib -L/home/papercrane/oe/angstrom.build/tmp/staging/arm-angstrom-linux-gnueabi/lib
+
+ # Motif library. (-lXm)
+ LIBXM =
+@@ -62,10 +61,10 @@ LIBXM =
+ # LIBXM = -Wl,-Bstatic -Wl,-Bdynamic
+
+ # X extension library; needed for Athena and Motif >= 2.0. (-lXext)
+-LIBXEXT = -lXext
++LIBXEXT =
+
+ # Xpm library; needed for DDD and sometimes for Motif >= 2.0. (-lXpm)
+-LIBXPM = -lXpm
++LIBXPM =
+
+ # Xp library; sometimes needed for Motif >= 2.1. (-lXp)
+ LIBXP =
+@@ -74,13 +73,13 @@ LIBXP =
+ LIBGEN =
+
+ # X toolkit library. (-lXt)
+-LIBXT = -lXt
++LIBXT =
+
+ # Xaw library. (-lXaw)
+-LIBXAW = -lXaw
++LIBXAW =
+
+ # X library. (-lSM -lICE -lX11 -lnsl -lsocket)
+-LIBX11 = -lSM -lICE -lX11
++LIBX11 = -lSM -lICE
+
+ # All libraries shown above
+ ALL_X_LIBS = $(X_LDFLAGS) $(LIBXM) $(LIBXP) $(LIBXPM) $(LIBXEXT) \
+@@ -94,7 +93,7 @@ COMPILE_AND_LINK.c = \
+ $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) $(LDFLAGS)
+
+ ## Where to look for X include files. (-I/usr/X11R5/include)
+-X_INCLUDE = -I/usr/X11R6/include
++X_INCLUDE = -I/usr/include -I/home/papercrane/oe/angstrom.build/tmp/staging/arm-angstrom-linux-gnueabi/include/X11
+
+ ## Where to look for include files.
+ INCLUDE = -I. $(X_INCLUDE)
+@@ -129,8 +128,8 @@ xgpsspeed: $(XGPSOBJS)
+ $(LINK.c) -o $@ $(XGPSOBJS) -L. -lgpsd $(LIBXAW) $(ALL_X_LIBS) $(LIBS)
+
+ libgpsd.a: $(LIB_OBJECTS)
+- ar -r libgpsd.a $(LIB_OBJECTS)
+- ranlib libgpsd.a
++ $(AR) -r libgpsd.a $(LIB_OBJECTS)
++ $(RANLIB) libgpsd.a
+
+ clean:
+ rm -f *.o *.a gpsd gps *~ config.status
+Index: prismstumbler-0.7.3/src/gpsd/Makefile.arm
+===================================================================
+--- prismstumbler-0.7.3.orig/src/gpsd/Makefile.arm
++++ prismstumbler-0.7.3/src/gpsd/Makefile.arm
+@@ -94,7 +94,7 @@ COMPILE_AND_LINK.c = \
+ $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) $(LDFLAGS)
+
+ ## Where to look for X include files. (-I/usr/X11R5/include)
+-X_INCLUDE = -I/skiff/local/arm-linux/include/X11
++X_INCLUDE = @X_CFLAGS@
+
+ ## Where to look for include files.
+ INCLUDE = -I. $(X_INCLUDE)
+@@ -129,8 +129,8 @@ xgpsspeed: $(XGPSOBJS)
+ $(LINK.c) -o $@ $(XGPSOBJS) -L. -lgpsd $(LIBXAW) $(ALL_X_LIBS) $(LIBS)
+
+ libgpsd.a: $(LIB_OBJECTS)
+- ar -r libgpsd.a $(LIB_OBJECTS)
+- ranlib libgpsd.a
++ $(AR) -r libgpsd.a $(LIB_OBJECTS)
++ $(RANLIB) libgpsd.a
+
+ clean:
+ rm -f *.o *.a gpsd gps *~ config.status
+Index: prismstumbler-0.7.3/src/gpsd/Makefile.i386
+===================================================================
+--- prismstumbler-0.7.3.orig/src/gpsd/Makefile.i386
++++ prismstumbler-0.7.3/src/gpsd/Makefile.i386
+@@ -94,7 +94,7 @@ COMPILE_AND_LINK.c = \
+ $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) $(LDFLAGS)
+
+ ## Where to look for X include files. (-I/usr/X11R5/include)
+-X_INCLUDE = -I/usr/X11R6/include
++X_INCLUDE = @X_CFLAGS@
+
+ ## Where to look for include files.
+ INCLUDE = -I. $(X_INCLUDE)
+@@ -129,8 +129,8 @@ xgpsspeed: $(XGPSOBJS)
+ $(LINK.c) -o $@ $(XGPSOBJS) -L. -lgpsd $(LIBXAW) $(ALL_X_LIBS) $(LIBS)
+
+ libgpsd.a: $(LIB_OBJECTS)
+- ar -r libgpsd.a $(LIB_OBJECTS)
+- ranlib libgpsd.a
++ $(AR) -r libgpsd.a $(LIB_OBJECTS)
++ $(RANLIB) libgpsd.a
+
+ clean:
+ rm -f *.o *.a gpsd gps *~ config.status
diff --git a/packages/prismstumbler/prismstumbler-0.7.3/fix-includes.patch b/packages/prismstumbler/prismstumbler-0.7.3/fix-includes.patch
deleted file mode 100644
index 9aef61e9d3..0000000000
--- a/packages/prismstumbler/prismstumbler-0.7.3/fix-includes.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- prismstumbler-0.7.3/src/gpsd/Makefile.in~fix-includes
-+++ prismstumbler-0.7.3/src/gpsd/Makefile.in
-@@ -92,18 +92,6 @@
- COMPILE_AND_LINK.c = \
- $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) $(LDFLAGS)
-
--## Where to look for X include files. (-I/usr/X11R5/include)
--X_INCLUDE = @X_CFLAGS@
--
--## Where to look for include files.
--INCLUDE = -I. $(X_INCLUDE)
--
--## Implicit rules.
--.SUFFIXES: .c
--.c.o:
-- $(COMPILE.c) $(INCLUDE) -o $@ $<
--
--
- ## Libraries and object files
- LIB_OBJECTS = netlib.o nmea_parse.o serial.o tm.o em.o $(MOTIF_OBJECTS)
-
diff --git a/packages/prismstumbler/prismstumbler-0.7.3/wireless.patch b/packages/prismstumbler/prismstumbler-0.7.3/wireless.patch
new file mode 100644
index 0000000000..729a88d0c3
--- /dev/null
+++ b/packages/prismstumbler/prismstumbler-0.7.3/wireless.patch
@@ -0,0 +1,21 @@
+--- prismstumbler-0.7.3/src/iface-wlan-14.c.orig 2007-04-30 22:22:11.000000000 +0200
++++ prismstumbler-0.7.3/src/iface-wlan-14.c 2007-04-30 22:22:40.000000000 +0200
+@@ -26,6 +26,7 @@
+ #include <string.h>
+ #include <errno.h>
+
++#include <net/if.h>
+ #include <sys/ioctl.h>
+ #include <sys/socket.h>
+ #include <linux/types.h> /* for "__kernel_caddr_t" et al */
+--- prismstumbler-0.7.3/src/cards.c.orig 2007-04-30 22:23:06.000000000 +0200
++++ prismstumbler-0.7.3/src/cards.c 2007-04-30 22:23:33.000000000 +0200
+@@ -9,6 +9,8 @@
+
+ #include <stdio.h>
+ #include <sys/socket.h>
++#include <linux/types.h>
++#include <net/if.h>
+ #include <linux/wireless.h>
+ #include <glib.h>
+ #include <string.h>
diff --git a/packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb b/packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb
new file mode 100644
index 0000000000..9311f894d0
--- /dev/null
+++ b/packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb
@@ -0,0 +1,42 @@
+SECTION = "x11/network"
+PR = "r1"
+
+PACKAGES = "prismstumbler prismstumbler-frontend prismstumbler-doc"
+DESCRIPTION = "Prismstumbler wireless LAN scanner"
+DESCRIPTION_prismstumbler-frontend = "Prismstumbler wireless LAN scanner GTK frontend"
+LICENSE = "GPL"
+DEPENDS = "libpcap gtk+ wireless-tools sqlite zlib dbus-glib gpsd"
+RDEPENDS = "wireless-tools"
+RRECOMMENDS = "gpsd"
+
+SRC_URI = "http://projects.linuxtogo.org/frs/download.php/14/${PN}-0.7.4pre1.tar.gz \
+ file://gpsapi.patch;patch=1"
+
+S = "${WORKDIR}/${PN}-0.7.4pre1"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
+ --x-libraries=${STAGING_LIBDIR} \
+ --with-libgps=${STAGING_DIR}/${HOST_SYS} \
+ --with-libpcap=${STAGING_DIR}/${HOST_SYS} \
+ --with-sqlite-includes=${STAGING_INCDIR} \
+ --with-sqlite-libs=${STAGING_LIBDIR} \
+ --without-athena --enable-dbus \
+ --with-libiw=${STAGING_DIR}/${HOST_SYS}"
+
+CFLAGS =+ "-I${S}/include"
+LDFLAGS += "-lz"
+
+FILES_${PN} = "${bindir}/prismstumbler"
+
+FILES_prismstumbler-frontend = "${bindir}/psfront ${bindir}/pst \
+ ${datadir}/applications \
+ ${datadir}/pixmaps ${docdir}/prismstumbler/help.txt \
+ ${sysconfdir}"
+RDEPENDS_prismstumbler-frontend = "${PN}"
+
+
+do_install_append() {
+ chmod a+s ${D}${bindir}/prismstumbler
+}
diff --git a/packages/prismstumbler/prismstumbler_0.7.3.bb b/packages/prismstumbler/prismstumbler_0.7.3.bb
index 8699e5668b..c0bfdcc5be 100644
--- a/packages/prismstumbler/prismstumbler_0.7.3.bb
+++ b/packages/prismstumbler/prismstumbler_0.7.3.bb
@@ -1,5 +1,5 @@
SECTION = "x11/network"
-PR = "r4"
+PR = "r5"
PACKAGES = "prismstumbler prismstumbler-frontend prismstumbler-doc"
DESCRIPTION = "Prismstumbler wireless LAN scanner"
@@ -9,12 +9,20 @@ RDEPENDS = "wireless-tools"
SRC_URI = "${SOURCEFORGE_MIRROR}/prismstumbler/${PN}-${PV}.tar.bz2 \
file://bogoconf.patch;patch=1 \
- file://fix-includes.patch;patch=1 \
- file://libz.patch;patch=1;pnum=0"
+ file://crosscompile.patch;patch=1 \
+ file://libz.patch;patch=1;pnum=0 \
+ file://wireless.patch;patch=1"
inherit autotools pkgconfig
-EXTRA_OECONF = "--with-libpcap=${STAGING_DIR}/${HOST_SYS} --with-sqlite-libs=${STAGING_LIBDIR} --with-sqlite-includes=${STAGING_INCDIR}"
+EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
+ --x-libraries=${STAGING_LIBDIR} \
+ --with-libpcap=${STAGING_DIR}/${HOST_SYS} \
+ --with-sqlite-includes=${STAGING_INCDIR} \
+ --with-sqlite-libs=${STAGING_LIBDIR} \
+ --without-athena \
+ --without-motif"
+
CFLAGS =+ "-I${S}/include -D_GNU_SOURCE"
FILES_${PN} = "${bindir}/prismstumbler"
diff --git a/packages/procps/procps.inc b/packages/procps/procps.inc
new file mode 100644
index 0000000000..ddc8030077
--- /dev/null
+++ b/packages/procps/procps.inc
@@ -0,0 +1,14 @@
+DESCRIPTION = "Procps is the package that has a bunch \
+of small useful utilities that give information \
+about processes using the /proc filesystem. The package \
+includes the programs ps, top, vmstat, w, kill, and skill."
+HOMEPAGE = "http://procps.sf.net"
+SECTION = "base"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "ncurses"
+
+SRC_URI = "http://procps.sourceforge.net/procps-${PV}.tar.gz \
+ file://install.patch;patch=1"
+
+inherit autotools
diff --git a/packages/procps/procps_3.1.15.bb b/packages/procps/procps_3.1.15.bb
index 12d6a43fd2..01114e80dc 100644
--- a/packages/procps/procps_3.1.15.bb
+++ b/packages/procps/procps_3.1.15.bb
@@ -1,17 +1,6 @@
-LICENSE = "GPL"
-DESCRIPTION = "Procps is the package that has a bunch \
-of small useful utilities that give information \
-about processes using the /proc filesystem. The package \
-includes the programs ps, top, vmstat, w, kill, and skill."
-SECTION = "base"
-PRIORITY = "optional"
-DEPENDS = "ncurses"
+require procps.inc
-SRC_URI = "http://procps.sourceforge.net/procps-${PV}.tar.gz \
- file://procps_${PV}-2.diff;patch=1 \
- file://install.patch;patch=1"
-
-inherit autotools
+SRC_URI += "file://procps_${PV}-2.diff;patch=1"
EXTRA_OEMAKE = "CFLAGS=-I${STAGING_INCDIR} \
LDFLAGS=-L${STAGING_LIBDIR} -Wl,--rpath-link,${STAGING_LIBDIR} \
diff --git a/packages/procps/procps_3.2.1.bb b/packages/procps/procps_3.2.1.bb
index 3c0aaf547a..33df399c5f 100644
--- a/packages/procps/procps_3.2.1.bb
+++ b/packages/procps/procps_3.2.1.bb
@@ -1,18 +1,8 @@
-LICENSE = "GPL"
-DESCRIPTION = "Procps is the package that has a bunch \
-of small useful utilities that give information \
-about processes using the /proc filesystem. The package \
-includes the programs ps, top, vmstat, w, kill, and skill."
-SECTION = "base"
-PRIORITY = "optional"
-DEPENDS = "ncurses"
-PR = "r1"
+require procps.inc
-SRC_URI = "http://procps.sourceforge.net/procps-${PV}.tar.gz \
- file://install.patch;patch=1 \
- file://pagesz-not-constant.patch;patch=1"
+PR = "r1"
-inherit autotools
+SRC_URI += "file://pagesz-not-constant.patch;patch=1"
EXTRA_OEMAKE = "CFLAGS=-I${STAGING_INCDIR} \
LDFLAGS=-L${STAGING_LIBDIR} -Wl,--rpath-link,${STAGING_LIBDIR} \
diff --git a/packages/procps/procps_3.2.5.bb b/packages/procps/procps_3.2.5.bb
index 5101874a5b..de7524b2cb 100644
--- a/packages/procps/procps_3.2.5.bb
+++ b/packages/procps/procps_3.2.5.bb
@@ -1,21 +1,10 @@
-LICENSE = "GPL"
-DESCRIPTION = "Procps is the package that has a bunch \
-of small useful utilities that give information \
-about processes using the /proc filesystem. The package \
-includes the programs ps, top, vmstat, w, kill, and skill."
-SECTION = "base"
-PRIORITY = "optional"
-DEPENDS = "ncurses"
-PR = "r5"
-
-SRC_URI = "http://procps.sourceforge.net/procps-${PV}.tar.gz \
- file://install.patch;patch=1 \
- file://procmodule.patch;patch=1 \
- file://psmodule.patch;patch=1"
+require procps.inc
+PR = "r5"
+SRC_URI += "file://procmodule.patch;patch=1 \
+ file://psmodule.patch;patch=1"
-inherit autotools
FILES = "${bindir}/top.${PN} ${base_bindir}/ps.${PN} ${bindir}/uptime.${PN} ${base_bindir}/kill.${PN} \
${bindir}/free.${PN} ${bindir}/w ${bindir}/watch ${bindir}/pgrep ${bindir}/pmap ${bindir}/pwdx \
${bindir}/snice ${bindir}/vmstat ${bindir}/slabtop ${bindir}/pkill ${bindir}/skill ${bindir}/tload \
diff --git a/packages/procps/procps_3.2.7.bb b/packages/procps/procps_3.2.7.bb
index 5101874a5b..de7524b2cb 100644
--- a/packages/procps/procps_3.2.7.bb
+++ b/packages/procps/procps_3.2.7.bb
@@ -1,21 +1,10 @@
-LICENSE = "GPL"
-DESCRIPTION = "Procps is the package that has a bunch \
-of small useful utilities that give information \
-about processes using the /proc filesystem. The package \
-includes the programs ps, top, vmstat, w, kill, and skill."
-SECTION = "base"
-PRIORITY = "optional"
-DEPENDS = "ncurses"
-PR = "r5"
-
-SRC_URI = "http://procps.sourceforge.net/procps-${PV}.tar.gz \
- file://install.patch;patch=1 \
- file://procmodule.patch;patch=1 \
- file://psmodule.patch;patch=1"
+require procps.inc
+PR = "r5"
+SRC_URI += "file://procmodule.patch;patch=1 \
+ file://psmodule.patch;patch=1"
-inherit autotools
FILES = "${bindir}/top.${PN} ${base_bindir}/ps.${PN} ${bindir}/uptime.${PN} ${base_bindir}/kill.${PN} \
${bindir}/free.${PN} ${bindir}/w ${bindir}/watch ${bindir}/pgrep ${bindir}/pmap ${bindir}/pwdx \
${bindir}/snice ${bindir}/vmstat ${bindir}/slabtop ${bindir}/pkill ${bindir}/skill ${bindir}/tload \
diff --git a/packages/progear/.mtn2git_empty b/packages/progear/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/progear/.mtn2git_empty
diff --git a/packages/progear/progear-ac/.mtn2git_empty b/packages/progear/progear-ac/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/progear/progear-ac/.mtn2git_empty
diff --git a/packages/progear/progear-ac/paths.patch b/packages/progear/progear-ac/paths.patch
new file mode 100644
index 0000000000..f5ccfbae0d
--- /dev/null
+++ b/packages/progear/progear-ac/paths.patch
@@ -0,0 +1,20 @@
+Index: progear-ac-0.1/Makefile
+===================================================================
+--- progear-ac-0.1.orig/Makefile 2007-01-04 21:58:28.000000000 +0100
++++ progear-ac-0.1/Makefile 2007-01-04 21:58:39.000000000 +0100
+@@ -2,12 +2,12 @@
+ KERNELDIR := /lib/modules/$(shell uname -r)
+
+ all :
+- $(MAKE) -C $(KERNELDIR)/build M=$(PWD) modules
++ $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
+
+ clean :
+- $(MAKE) -C $(KERNELDIR)/build M=$(PWD) clean
++ $(MAKE) -C $(KERNELDIR) M=$(PWD) clean
+
+ install :
+- $(MAKE) INSTALL_MOD_DIR=kernel/drivers/acpi -C $(KERNELDIR)/build M=$(PWD) modules_install
++ $(MAKE) INSTALL_MOD_DIR=kernel/drivers/acpi -C $(KERNELDIR) M=$(PWD) modules_install
+ depmod -a
+
diff --git a/packages/progear/progear-ac_0.1.bb b/packages/progear/progear-ac_0.1.bb
new file mode 100644
index 0000000000..8a2c608746
--- /dev/null
+++ b/packages/progear/progear-ac_0.1.bb
@@ -0,0 +1,3 @@
+require progear.inc
+
+DESCRIPTION += "AC detection support"
diff --git a/packages/progear/progear-battery/.mtn2git_empty b/packages/progear/progear-battery/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/progear/progear-battery/.mtn2git_empty
diff --git a/packages/progear/progear-battery/kernel-update.patch b/packages/progear/progear-battery/kernel-update.patch
new file mode 100644
index 0000000000..89e83aa6ef
--- /dev/null
+++ b/packages/progear/progear-battery/kernel-update.patch
@@ -0,0 +1,13 @@
+Index: progear-battery-0.3/progear-sbs.c
+===================================================================
+--- progear-battery-0.3.orig/progear-sbs.c 2007-01-04 22:11:19.000000000 +0100
++++ progear-battery-0.3/progear-sbs.c 2007-01-04 22:11:30.000000000 +0100
+@@ -129,8 +129,6 @@
+
+ static struct i2c_driver sbs_driver =
+ {
+- .name ="Progear ACPI-SBS Interface",
+- .flags =I2C_DF_NOTIFY,
+ .attach_adapter =&sbs_attach_adapter,
+ .detach_client =&sbs_detach_client
+ };
diff --git a/packages/progear/progear-battery/paths.patch b/packages/progear/progear-battery/paths.patch
new file mode 100644
index 0000000000..850db7fbab
--- /dev/null
+++ b/packages/progear/progear-battery/paths.patch
@@ -0,0 +1,20 @@
+Index: progear-battery-0.3/Makefile
+===================================================================
+--- progear-battery-0.3.orig/Makefile 2007-01-04 22:10:23.000000000 +0100
++++ progear-battery-0.3/Makefile 2007-01-04 22:10:31.000000000 +0100
+@@ -2,12 +2,12 @@
+ KERNELDIR := /lib/modules/$(shell uname -r)
+
+ all :
+- $(MAKE) -C $(KERNELDIR)/build M=$(PWD) modules
++ $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
+
+ clean :
+- $(MAKE) -C $(KERNELDIR)/build M=$(PWD) clean
++ $(MAKE) -C $(KERNELDIR) M=$(PWD) clean
+
+ install :
+- $(MAKE) INSTALL_MOD_DIR=kernel/drivers/acpi -C $(KERNELDIR)/build M=$(PWD) modules_install
++ $(MAKE) INSTALL_MOD_DIR=kernel/drivers/acpi -C $(KERNELDIR) M=$(PWD) modules_install
+ depmod -a
+
diff --git a/packages/progear/progear-battery_0.3.bb b/packages/progear/progear-battery_0.3.bb
new file mode 100644
index 0000000000..65d682e43c
--- /dev/null
+++ b/packages/progear/progear-battery_0.3.bb
@@ -0,0 +1,5 @@
+require progear.inc
+
+DESCRIPTION += "Battery support"
+
+SRC_URI += "file://kernel-update.patch;patch=1"
diff --git a/packages/progear/progear.inc b/packages/progear/progear.inc
new file mode 100644
index 0000000000..2dbfcdafbe
--- /dev/null
+++ b/packages/progear/progear.inc
@@ -0,0 +1,19 @@
+DESCRIPTION = "Progear support module:"
+LICENSE = "GPL"
+SECTION = "kernel/modules"
+HOMEPAGE = "http://spe.midco.net/mschacht/LinuxOnProgear/"
+AUTHOR = "Mike Schacht <mschacht at alumni dot washington dot edu>"
+
+COMPATIBLE_MACHINE = "progear"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/progear/${PN}-${PV}.tar.gz \
+ file://paths.patch;patch=1"
+
+inherit module
+
+EXTRA_OEMAKE += "KERNELDIR=${STAGING_KERNEL_DIR}"
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/progear/
+ install -m 0644 *${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/progear/
+}
diff --git a/packages/psplash/files/psplash-init b/packages/psplash/files/psplash-init
index a966638074..2bd83cfb07 100644
--- a/packages/psplash/files/psplash-init
+++ b/packages/psplash/files/psplash-init
@@ -9,8 +9,13 @@ for x in $(cat /proc/cmdline); do
esac
done
+psplash_args=''
+case "`grep ^Hardware /proc/cpuinfo|cut -d: -f2 |tr A-Z a-z`" in
+ "hp ipaq h3100"|"hp ipaq h3800") pspash_args='-a 90' ;;
+ "hp ipaq 3600"|"hp ipaq 3700"|"hp ipaq h3900"|"htc universal"|*collie|*poodle|*akita|*spitz|*borzoi) psplash_args='-a 270' ;;
+esac
+
export TMPDIR=/mnt/.psplash
mount tmpfs -t tmpfs $TMPDIR -o,size=40k
-/usr/bin/psplash &
-
+/usr/bin/psplash $psplash_args &
diff --git a/packages/psplash/files/zzapsplash-init b/packages/psplash/files/zzapsplash-init
new file mode 100644
index 0000000000..5a713e5701
--- /dev/null
+++ b/packages/psplash/files/zzapsplash-init
@@ -0,0 +1,4 @@
+#!/bin/sh
+TMPDIR=/mnt/.psplash psplash-write "QUIT" || true
+sleep 1
+umount /mnt/.psplash >/dev/null 2>/dev/null
diff --git a/packages/psplash/psplash-zap_1.0.bb b/packages/psplash/psplash-zap_1.0.bb
new file mode 100644
index 0000000000..58fa3ed52b
--- /dev/null
+++ b/packages/psplash/psplash-zap_1.0.bb
@@ -0,0 +1,13 @@
+
+SRC_URI = "file://zzapsplash-init"
+
+do_install_prepend() {
+ install -d "${D}${sysconfdir}/init.d/"
+ install -m 0755 "${WORKDIR}/zzapsplash-init" "${D}${sysconfdir}/init.d/zzapsplash"
+}
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "zzapsplash"
+INITSCRIPT_PARAMS = "start 99 5 S ."
+
diff --git a/packages/psplash/psplash_svn.bb b/packages/psplash/psplash_svn.bb
index eebe2179da..6b51d33597 100644
--- a/packages/psplash/psplash_svn.bb
+++ b/packages/psplash/psplash_svn.bb
@@ -3,7 +3,7 @@ SECTION = "base"
LICENSE = "GPL"
PV = "0.0+svn${SRCDATE}"
-PR = "r2"
+PR = "r3"
# You can create your own pslash-hand-img.h by doing
# ./make-image-header.sh <file>.png HAND
diff --git a/packages/pulseaudio/files/.mtn2git_empty b/packages/pulseaudio/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pulseaudio/files/.mtn2git_empty
diff --git a/packages/pulseaudio/files/volatiles.04_pulse b/packages/pulseaudio/files/volatiles.04_pulse
new file mode 100644
index 0000000000..5b1998032b
--- /dev/null
+++ b/packages/pulseaudio/files/volatiles.04_pulse
@@ -0,0 +1,2 @@
+# <type> <owner> <group> <mode> <path> <linksource>
+d pulse pulse 0755 /var/run/pulse none
diff --git a/packages/pulseaudio/pulseaudio_0.9.2.bb b/packages/pulseaudio/pulseaudio_0.9.2.bb
deleted file mode 100644
index abfc42957f..0000000000
--- a/packages/pulseaudio/pulseaudio_0.9.2.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-DESCRIPTION = "Pulseaudio is a sound server for Linux and Unix-like operating systems."
-HOMEPAGE = "http://www.pulseaudio.org"
-AUTHOR = "Lennart Poettering"
-SECTION = "libs/multimedia"
-LICENSE = "LGPL"
-DEPENDS = "liboil libsamplerate0 libsndfile1 libtool"
-# optional
-DEPENDS += "alsa-lib"
-PR = "r1"
-
-SRC_URI = "http://0pointer.de/lennart/projects/pulseaudio/pulseaudio-${PV}.tar.gz"
-
-inherit autotools
-
-EXTRA_OECONF = "--disable-lynx --without-x --without-glib --without-jack --with-alsa --with-oss"
-
-PARALLEL_MAKE = ""
-
-LEAD_SONAME = "libpulse.so"
-PACKAGES =+ "${PN}-conf ${PN}-bin"
-PACKAGES_DYNAMIC = "pulseaudio-module-* pulseaudio-lib-*"
-FILES_${PN}-conf = "${sysconfdir}"
-FILES_${PN}-bin = "${bindir}"
-
-python populate_packages_prepend() {
- #bb.data.setVar('PKG_pulseaudio', 'pulseaudio', d)
-
- plugindir = bb.data.expand('${libdir}/pulse-0.9/modules/', d)
- do_split_packages(d, plugindir, '^module-(.*)\.so$', 'pulseaudio-module-%s', 'PulseAudio module for %s', extra_depends='' )
- do_split_packages(d, plugindir, '^lib(.*)\.so$', 'pulseaudio-lib-%s', 'PulseAudio library for %s', extra_depends='' )
-}
diff --git a/packages/pulseaudio/pulseaudio_0.9.5.bb b/packages/pulseaudio/pulseaudio_0.9.5.bb
new file mode 100644
index 0000000000..35fd9a8342
--- /dev/null
+++ b/packages/pulseaudio/pulseaudio_0.9.5.bb
@@ -0,0 +1,95 @@
+DESCRIPTION = "Pulseaudio is a sound server for Linux and Unix-like operating systems."
+HOMEPAGE = "http://www.pulseaudio.org"
+AUTHOR = "Lennart Poettering"
+SECTION = "libs/multimedia"
+LICENSE = "LGPL"
+
+DEPENDS = "liboil avahi libsamplerate0 libsndfile1 libtool"
+# optional
+DEPENDS += "alsa-lib"
+
+
+PR = "r7"
+
+SRC_URI = "http://0pointer.de/lennart/projects/pulseaudio/pulseaudio-${PV}.tar.gz"
+
+SRC_URI += "file://volatiles.04_pulse"
+
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "\
+ --disable-lynx \
+ --without-x \
+ --without-glib \
+ --without-jack \
+ --with-alsa \
+ --with-oss \
+ "
+
+PARALLEL_MAKE = ""
+
+export TARGET_FPU="${TARGET_FPU}"
+
+do_install_append() {
+ install -d ${D}${sysconfdir}/default/volatiles
+ install -m 0644 ${WORKDIR}/volatiles.04_pulse ${D}${sysconfdir}/default/volatiles/volatiles.04_pulse
+
+ if [ "x${TARGET_FPU}" == "xsoft" ] ; then
+ sed -i -e s:\;\ resample-method\ =\ sinc-fastest:resample-method\ =\ trivial: ${D}${sysconfdir}/pulse/daemon.conf
+ fi
+}
+
+
+LEAD_SONAME = "libpulse.so"
+
+PACKAGES =+ "${PN}-bin ${PN}-conf"
+PACKAGES_DYNAMIC = "pulseaudio-module-* pulseaudio-lib-*"
+
+FILES_${PN}-dbg += "${libexecdir}/pulse/.debug \
+ ${libdir}/pulse-0.9/modules/.debug"
+FILES_${PN}-dev += "${libdir}/pulse-0.9/modules/*.la"
+FILES_${PN}-conf = "${sysconfdir}"
+FILES_${PN}-bin = "${bindir}/* \
+ ${sysconfdir}/default/volatiles/volatiles.04_pulse"
+
+CONFFILES_${PN}-conf = "\
+ ${sysconfdir}/pulse/default.pa \
+ ${sysconfdir}/pulse/daemon.conf \
+ ${sysconfdir}/pulse/client.conf \
+ "
+pkg_postinst_${PN}-bin() {
+if test "x$D" != "x"; then
+ exit 1
+else
+ grep -q pulse: /etc/group || addgroup pulse
+ grep -q pulse: /etc/passwd || \
+ adduser --disabled-password --home=/var/run/pulse/ --system \
+ --ingroup pulse --no-create-home -g "Pulse audio daemon" pulse
+ /etc/init.d/populate-volatile.sh update
+fi
+}
+
+pkg_postrm${PN}-bin() {
+if test "x$D" != "x"; then
+ exit 1
+else
+ deluser pulse
+fi
+}
+
+
+
+
+do_stage() {
+ autotools_stage_all
+}
+
+
+python populate_packages_prepend() {
+ #bb.data.setVar('PKG_pulseaudio', 'pulseaudio', d)
+
+ plugindir = bb.data.expand('${libdir}/pulse-0.9/modules/', d)
+ do_split_packages(d, plugindir, '^module-(.*)\.so$', 'pulseaudio-module-%s', 'PulseAudio module for %s', extra_depends='' )
+ do_split_packages(d, plugindir, '^lib(.*)\.so$', 'pulseaudio-lib-%s', 'PulseAudio library for %s', extra_depends='' )
+}
diff --git a/packages/puppy/files/.mtn2git_empty b/packages/puppy/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/puppy/files/.mtn2git_empty
diff --git a/packages/puppy/files/usb-header.patch b/packages/puppy/files/usb-header.patch
new file mode 100644
index 0000000000..3768ff8ff6
--- /dev/null
+++ b/packages/puppy/files/usb-header.patch
@@ -0,0 +1,20 @@
+--- puppy/usb_io.h.~1.14.~ 2007-02-01 16:39:20.000000000 +1030
++++ puppy/usb_io.h 2007-03-23 11:47:21.000000000 +1030
+@@ -30,12 +30,13 @@
+ #include <linux/types.h>
+ #include <linux/version.h>
+
+-#include <linux/usb.h>
+-#include <linux/usbdevice_fs.h>
+-
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++/* linux/usb_ch9.h wasn't separated out until 2.4.23 */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,23)
+ #include "usb_ch9.h"
++#else
++#include "usb.h"
+ #endif
++#include <linux/usbdevice_fs.h>
+
+ #include "mjd.h"
+ #include "tf_bytes.h"
diff --git a/packages/puppy/puppy_1.11.bb b/packages/puppy/puppy_1.11.bb
index 94e90d216d..ee9254bd01 100644
--- a/packages/puppy/puppy_1.11.bb
+++ b/packages/puppy/puppy_1.11.bb
@@ -3,9 +3,10 @@ SECTION = "network"
PRIORITY = "optional"
HOMEPAGE = "http://sf.net/projects/puppy/"
LICENSE = "GPL"
-PR = "r2"
+PR = "r3"
-SRC_URI = "cvs://anonymous:@puppy.cvs.sourceforge.net/cvsroot/puppy;module=puppy;tag=PUPPY_1_11"
+SRC_URI = "cvs://anonymous:@puppy.cvs.sourceforge.net/cvsroot/puppy;module=puppy;tag=PUPPY_1_11 \
+ file://usb-header.patch;patch=1"
S = "${WORKDIR}/puppy"
inherit autotools
diff --git a/packages/puzzles/puzzles_r6915.bb b/packages/puzzles/puzzles_r6915.bb
deleted file mode 100644
index 4349a4154b..0000000000
--- a/packages/puzzles/puzzles_r6915.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-
-DEPENDS = "gtk+"
-PR = "r2"
-
-SRC_URI = "http://www.chiark.greenend.org.uk/~sgtatham/puzzles/puzzles-${PV}.tar.gz \
- file://game.png"
-
-do_compile_prepend = " \
- export XLDFLAGS='${LDFLAGS} `${STAGING_BINDIR_NATIVE}/pkg-config gtk+-2.0 --libs`'; \
- export CFLAGS='${CFLAGS} -I./ `${STAGING_BINDIR_NATIVE}/pkg-config gtk+-2.0 --cflags`'; "
-
-FILES_${PN} = "${prefix}/games/* ${datadir}/applications/* ${datadir}/pixmaps"
-FILES_${PN}-dbg += "${prefix}/games/.debug"
-
-do_install () {
- rm -rf ${D}/*
- export prefix=${D}
- export DESTDIR=${D}
- install -d ${D}/${prefix}/
- install -d ${D}/${prefix}/games/
- oe_runmake install
-
- install -d ${D}/${datadir}/
- install -d ${D}/${datadir}/applications/
- install -d ${D}/${datadir}/pixmaps/
-
- install ${WORKDIR}/game.png ${D}/${datadir}/pixmaps/
-
- cd ${D}/${prefix}/games
- for prog in *; do
- if [ -x $prog ]; then
- echo "making ${D}/${datadir}/applications/$prog.desktop"
- cat <<STOP > ${D}/${datadir}/applications/$prog.desktop
-[Desktop Entry]
-Encoding=UTF-8
-Name=$prog
-Exec=${prefix}/games/$prog
-Icon=game.png
-Terminal=false
-Type=Application
-Categories=Game
-StartupNotify=true
-SingleInstance=true
-STOP
- fi
- done
-}
diff --git a/packages/puzzles/puzzles_r7436.bb b/packages/puzzles/puzzles_r7436.bb
new file mode 100644
index 0000000000..fc2997fcf8
--- /dev/null
+++ b/packages/puzzles/puzzles_r7436.bb
@@ -0,0 +1,56 @@
+
+DEPENDS = "gtk+ libxt"
+
+PR = "r3"
+
+SVN_REV = "${@bb.data.getVar('PV',d,1).replace('r', '')}"
+
+SRC_URI = "svn://ixion.tartarus.org/main;module=puzzles;proto=svn;rev=${SVN_REV} \
+ file://game.png"
+
+S = "${WORKDIR}/puzzles"
+
+do_configure () {
+ ./mkfiles.pl
+}
+
+do_compile_prepend = " \
+ export XLDFLAGS='${LDFLAGS} `${STAGING_BINDIR_NATIVE}/pkg-config gtk+-2.0 --libs`'; \
+ export CFLAGS='${CFLAGS} -I./ `${STAGING_BINDIR_NATIVE}/pkg-config gtk+-2.0 --cflags`'; "
+
+FILES_${PN} = "${prefix}/games/* ${datadir}/applications/* ${datadir}/pixmaps"
+FILES_${PN}-dbg += "${prefix}/games/.debug"
+
+do_install () {
+ rm -rf ${D}/*
+ export prefix=${D}
+ export DESTDIR=${D}
+ install -d ${D}/${prefix}/
+ install -d ${D}/${prefix}/games/
+ oe_runmake install
+
+ install -d ${D}/${datadir}/
+ install -d ${D}/${datadir}/applications/
+ install -d ${D}/${datadir}/pixmaps/
+
+ install ${WORKDIR}/game.png ${D}/${datadir}/pixmaps/
+
+ cd ${D}/${prefix}/games
+ for prog in *; do
+ if [ -x $prog ]; then
+ echo "making ${D}/${datadir}/applications/$prog.desktop"
+ cat <<STOP > ${D}/${datadir}/applications/$prog.desktop
+[Desktop Entry]
+Encoding=UTF-8
+Name=$prog
+Exec=${prefix}/games/$prog
+Icon=game.png
+Terminal=false
+Type=Application
+Categories=Game
+StartupNotify=true
+SingleInstance=true
+STOP
+ fi
+ done
+}
diff --git a/packages/puzzles/puzzles_svn.bb b/packages/puzzles/puzzles_svn.bb
new file mode 100644
index 0000000000..536aa445b7
--- /dev/null
+++ b/packages/puzzles/puzzles_svn.bb
@@ -0,0 +1,53 @@
+DEFAULT_PREFERENCE = "-1"
+
+DEPENDS = "gtk+ libxt"
+PV = "r7436+svn${SRCDATE}"
+
+SRC_URI = "svn://ixion.tartarus.org/main;module=puzzles;proto=svn \
+ file://game.png"
+S = "${WORKDIR}/puzzles"
+
+do_configure () {
+ ./mkfiles.pl
+}
+
+do_compile_prepend = " \
+ export XLDFLAGS='${LDFLAGS} `${STAGING_BINDIR_NATIVE}/pkg-config gtk+-2.0 --libs`'; \
+ export CFLAGS='${CFLAGS} -I./ `${STAGING_BINDIR_NATIVE}/pkg-config gtk+-2.0 --cflags`'; "
+
+FILES_${PN} = "${prefix}/games/* ${datadir}/applications/* ${datadir}/pixmaps"
+FILES_${PN}-dbg += "${prefix}/games/.debug"
+
+do_install () {
+ rm -rf ${D}/*
+ export prefix=${D}
+ export DESTDIR=${D}
+ install -d ${D}/${prefix}/
+ install -d ${D}/${prefix}/games/
+ oe_runmake install
+
+ install -d ${D}/${datadir}/
+ install -d ${D}/${datadir}/applications/
+ install -d ${D}/${datadir}/pixmaps/
+
+ install ${WORKDIR}/game.png ${D}/${datadir}/pixmaps/
+
+ cd ${D}/${prefix}/games
+ for prog in *; do
+ if [ -x $prog ]; then
+ echo "making ${D}/${datadir}/applications/$prog.desktop"
+ cat <<STOP > ${D}/${datadir}/applications/$prog.desktop
+[Desktop Entry]
+Encoding=UTF-8
+Name=$prog
+Exec=${prefix}/games/$prog
+Icon=game.png
+Terminal=false
+Type=Application
+Categories=Game
+StartupNotify=true
+SingleInstance=true
+STOP
+ fi
+ done
+}
diff --git a/packages/python/python-2.4.4-manifest.inc b/packages/python/python-2.4.4-manifest.inc
index 35017aefe7..33f5bac2f2 100644
--- a/packages/python/python-2.4.4-manifest.inc
+++ b/packages/python/python-2.4.4-manifest.inc
@@ -8,9 +8,18 @@
########################################################################################################################
-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-resource python-devel python-math python-hotshot python-unixadmin python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-syslog python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-tests python-unittest python-stringold python-lib-old-and-deprecated python-compile 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-pickle python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-resource python-devel python-math python-hotshot python-unixadmin python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-syslog python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-tests python-unittest python-stringold python-lib-old-and-deprecated python-compile python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio python-misc"
-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-resource python-devel python-math python-hotshot python-unixadmin python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-syslog python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-tests python-unittest python-stringold python-lib-old-and-deprecated python-compile 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-resource python-devel python-math python-hotshot python-unixadmin python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-syslog python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-tests python-unittest python-stringold python-lib-old-and-deprecated python-compile python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio python-misc-dbg python-misc"
+
+DESCRIPTION_python-misc-dbg="Misc Python debug files"
+FILES_python-misc-dbg="${libdir}/python2.4/lib-dynload/.debug"
+RDEPENDS_python-misc-dbg="python-core"
+
+DESCRIPTION_python-misc="Misc Python files"
+PR_python-misc="ml1"
+FILES_python-misc="${libdir}/python2.4/"
+RDEPENDS_python-misc="python-core"
DESCRIPTION_python-profile="Python Basic Profiling Support"
PR_python-profile="ml0"
diff --git a/packages/python/python-fuse_cvs.bb b/packages/python/python-fuse_cvs.bb
index e803b7fc62..d017e28536 100644
--- a/packages/python/python-fuse_cvs.bb
+++ b/packages/python/python-fuse_cvs.bb
@@ -1,11 +1,15 @@
DESCRIPTION = "FUSE Python bindings."
LICENSE = "GPLv2"
+DEPENDS = "fuse"
PV = "0.0+cvs${SRCDATE}"
+PR = "r1"
+
SRC_URI = "cvs://anonymous@fuse.cvs.sourceforge.net/cvsroot/fuse;module=python"
inherit distutils
S = "${WORKDIR}/python"
+FILES_${PN}-dbg += "${libdir}/python*/site-packages/fuseparts/.debu*"
diff --git a/packages/python/python-gst/.mtn2git_empty b/packages/python/python-gst/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/python/python-gst/.mtn2git_empty
diff --git a/packages/python/python-gst/python-path.patch b/packages/python/python-gst/python-path.patch
new file mode 100644
index 0000000000..465d5b180a
--- /dev/null
+++ b/packages/python/python-gst/python-path.patch
@@ -0,0 +1,24 @@
+Index: gst-python-0.10.7/acinclude.m4
+===================================================================
+--- gst-python-0.10.7.orig/acinclude.m4 2007-03-02 14:10:28.652128590 +0100
++++ gst-python-0.10.7/acinclude.m4 2007-03-02 14:41:00.106728708 +0100
+@@ -43,12 +43,19 @@
+ [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"
diff --git a/packages/python/python-gst_0.10.7.bb b/packages/python/python-gst_0.10.7.bb
new file mode 100644
index 0000000000..d206c0ab12
--- /dev/null
+++ b/packages/python/python-gst_0.10.7.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "Python Gstreamer bindings"
+SECTION = "devel/python"
+LICENSE = "LGPL"
+DEPENDS = "gstreamer"
+
+SRC_URI = "http://gstreamer.freedesktop.org/src/gst-python/gst-python-${PV}.tar.bz2 \
+ file://python-path.patch;patch=1"
+
+S = "${WORKDIR}/gst-python-${PV}"
+
+inherit autotools distutils-base pkgconfig
+
+EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
+
+do_configure_prepend() {
+ install -d ${S}/m4
+ install -m 0644 ${S}/common/m4/*.m4 ${S}/m4/
+}
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/python/python-pygobject-native_2.12.3.bb b/packages/python/python-pygobject-native_2.12.3.bb
new file mode 100644
index 0000000000..86d778c5ab
--- /dev/null
+++ b/packages/python/python-pygobject-native_2.12.3.bb
@@ -0,0 +1,7 @@
+require python-pygobject_${PV}.bb
+
+DEPENDS = "python-native"
+
+SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/2.12/pygobject-${PV}.tar.bz2 "
+
+inherit native
diff --git a/packages/python/python-pygobject/.mtn2git_empty b/packages/python/python-pygobject/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/python/python-pygobject/.mtn2git_empty
diff --git a/packages/python/python-pygobject/python-path.patch b/packages/python/python-pygobject/python-path.patch
new file mode 100644
index 0000000000..2ab7bdce6e
--- /dev/null
+++ b/packages/python/python-pygobject/python-path.patch
@@ -0,0 +1,23 @@
+Index: pygobject-2.12.3/m4/python.m4
+===================================================================
+--- pygobject-2.12.3.orig/m4/python.m4 2007-03-02 15:00:20.945635455 +0100
++++ pygobject-2.12.3/m4/python.m4 2007-03-02 15:00:43.532189734 +0100
+@@ -43,12 +43,18 @@
+ [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"
diff --git a/packages/python/python-pygobject_2.12.3.bb b/packages/python/python-pygobject_2.12.3.bb
new file mode 100644
index 0000000000..04ba363857
--- /dev/null
+++ b/packages/python/python-pygobject_2.12.3.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "Python GObject bindings"
+SECTION = "devel/python"
+LICENSE = "LGPL"
+DEPENDS = "python-pygobject-native"
+PR = "r1"
+
+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
+
+EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
+
+do_stage() {
+ autotools_stage_all
+ install -d ${STAGING_LIBDIR}/../share/pygobject/
+ cp -dpfR docs/* ${STAGING_LIBDIR}/../share/pygobject/
+ install -d ${STAGING_LIBDIR}/../share/gtk-doc/html/pygobject/
+ cp docs/style.css ${STAGING_LIBDIR}/../share/gtk-doc/html/pygobject/
+}
diff --git a/packages/python/python-pygtk2/acinclude.m4 b/packages/python/python-pygtk2/acinclude.m4
index eec3758afc..53518fb2eb 100644
--- a/packages/python/python-pygtk2/acinclude.m4
+++ b/packages/python/python-pygtk2/acinclude.m4
@@ -43,12 +43,18 @@ 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"
diff --git a/packages/python/python-pygtk2_2.10.3.bb b/packages/python/python-pygtk2_2.10.3.bb
index d040299a0e..f7366af401 100644
--- a/packages/python/python-pygtk2_2.10.3.bb
+++ b/packages/python/python-pygtk2_2.10.3.bb
@@ -13,6 +13,7 @@ SRC_URI = "ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.10/${SRCNAME}-${PV}.tar
S = "${WORKDIR}/${SRCNAME}-${PV}"
EXTRA_OECONF = "--disable-docs"
+EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
inherit autotools pkgconfig distutils-base
diff --git a/packages/python/python-pygtk2_2.6.3.bb b/packages/python/python-pygtk2_2.6.3.bb
new file mode 100644
index 0000000000..ffd837f0da
--- /dev/null
+++ b/packages/python/python-pygtk2_2.6.3.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "Python GTK+ Bindings"
+SECTION = "devel/python"
+# needs gtk+-2.6.x
+DEPENDS = "gtk+ libglade"
+RDEPENDS = "python-shell"
+SRCNAME = "pygtk"
+LICENSE = "LGPL"
+PR = "ml0"
+
+SRC_URI = "ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.6/${SRCNAME}-${PV}.tar.bz2 \
+ file://acinclude.m4"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+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() {
+ install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
+}
+
+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-pygtk2_2.8.6.bb b/packages/python/python-pygtk2_2.8.6.bb
index ab571bdfd9..b3d8c93584 100644
--- a/packages/python/python-pygtk2_2.8.6.bb
+++ b/packages/python/python-pygtk2_2.8.6.bb
@@ -1,11 +1,11 @@
DESCRIPTION = "Python GTK+ Bindings"
SECTION = "devel/python"
-# needs gtk+-2.8.x
+PRIORITY = "optional"
DEPENDS = "gtk+ libglade"
RDEPENDS = "python-shell"
SRCNAME = "pygtk"
LICENSE = "LGPL"
-PR = "ml0"
+PR = "r1"
SRC_URI = "ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.8/${SRCNAME}-${PV}.tar.bz2 \
file://acinclude.m4"
@@ -13,6 +13,8 @@ S = "${WORKDIR}/${SRCNAME}-${PV}"
inherit autotools pkgconfig distutils-base
+EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
+
do_configure_prepend() {
install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
}
diff --git a/packages/python/python-pylirc_0.0.5.bb b/packages/python/python-pylirc_0.0.5.bb
new file mode 100644
index 0000000000..fc5e8af430
--- /dev/null
+++ b/packages/python/python-pylirc_0.0.5.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Python lirc module. See http://www.lirc.org for more info on lirc"
+SECTION = "devel/python"
+PRIORITY = "optional"
+DEPENDS = "lirc"
+LICENSE = "LGPL"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pylirc/pylirc-${PV}.tar.gz"
+S = "${WORKDIR}/pylirc-${PV}"
+
+inherit distutils
diff --git a/packages/python/python_2.4.4.bb b/packages/python/python_2.4.4.bb
index 1a565875c8..303f956721 100644
--- a/packages/python/python_2.4.4.bb
+++ b/packages/python/python_2.4.4.bb
@@ -5,7 +5,7 @@ SECTION = "devel/python"
PRIORITY = "optional"
DEPENDS = "python-native readline zlib gdbm openssl tcl tk"
DEPENDS_sharprom = "python-native readline zlib gdbm openssl"
-PR = "ml0"
+PR = "ml1"
PYTHON_MAJMIN = "2.4"
diff --git a/packages/qiv/qiv_1.9.bb b/packages/qiv/qiv_1.9.bb
index c3aeb05bd2..17138452a5 100644
--- a/packages/qiv/qiv_1.9.bb
+++ b/packages/qiv/qiv_1.9.bb
@@ -12,6 +12,9 @@ inherit pkgconfig binconfig
CFLAGS += " -lSM -lICE -lXdmcp"
do_install() {
- install -s -m 0755 qiv ${D}${bindir}/qiv
+ install -d ${D}${bindir}
+ install -d ${D}${mandir}/man1/
+
+ install -s -m 0755 qiv ${D}${bindir}/qiv
install -m 0644 qiv.1 ${D}${mandir}/man1/qiv.1
}
diff --git a/packages/qmake/files/linux-oe-qmake.conf b/packages/qmake/files/linux-oe-qmake.conf
index 287dbeba19..205b693fda 100644
--- a/packages/qmake/files/linux-oe-qmake.conf
+++ b/packages/qmake/files/linux-oe-qmake.conf
@@ -56,7 +56,8 @@ QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11)
QMAKE_LIBS_X11SM =
QMAKE_LIBS_QT = -l$(OE_QMAKE_LIBS_QT)
QMAKE_LIBS_QT_THREAD = -l$(OE_QMAKE_LIBS_QT)-mt
-QMAKE_LIBS_QT_OPENGL = -lqgl
+QMAKE_LIBS_OPENGL = $(OE_QMAKE_LIBS_OPENGL)
+QMAKE_LIBS_OPENGL_QT = $(OE_QMAKE_LIBS_OPENGL_QT)
QMAKE_LIBS_THREAD = -lpthread
QMAKE_MOC = $(OE_QMAKE_MOC)
diff --git a/packages/qmake/qmake-native_1.07a.bb b/packages/qmake/qmake-native_1.07a.bb
index a5c164c08a..29f736dea1 100644
--- a/packages/qmake/qmake-native_1.07a.bb
+++ b/packages/qmake/qmake-native_1.07a.bb
@@ -3,7 +3,7 @@ PRIORITY = "optional"
HOMEPAGE = "http://www.trolltech.com"
SECTION = "devel"
LICENSE = "GPL QPL"
-PR = "r3"
+PR = "r4"
QTEVER = "qt-embedded-free-3.3.5"
diff --git a/packages/qmake/qmake2-native-2.01a/.mtn2git_empty b/packages/qmake/qmake2-native-2.01a/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qmake/qmake2-native-2.01a/.mtn2git_empty
diff --git a/packages/qmake/qmake2-native-2.00a/linux-oe-qmake.conf b/packages/qmake/qmake2-native-2.01a/linux-oe-qmake.conf
index d803f036fc..d803f036fc 100644
--- a/packages/qmake/qmake2-native-2.00a/linux-oe-qmake.conf
+++ b/packages/qmake/qmake2-native-2.01a/linux-oe-qmake.conf
diff --git a/packages/qmake/qmake2-native_2.00a.bb b/packages/qmake/qmake2-native_2.00a.bb
deleted file mode 100644
index 2dcabe3261..0000000000
--- a/packages/qmake/qmake2-native_2.00a.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-DESCRIPTION = "TrollTech Makefile Generator"
-PRIORITY = "optional"
-HOMEPAGE = "http://www.trolltech.com"
-SECTION = "devel"
-LICENSE = "GPL QPL"
-PR = "r1"
-
-QTVER = "qt-x11-opensource-src-4.1.1"
-
-SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/${QTVER}.tar.gz \
- file://linux-oe-qmake.conf"
-S = "${WORKDIR}/${QTVER}"
-
-# we need the real target system here
-CROSS_SYS := "${TARGET_SYS}"
-inherit autotools native
-
-export QTDIR = "${S}"
-EXTRA_OEMAKE = "-e"
-
-do_configure() {
- # Install the OE build templates
- for template in linux-oe-g++ linux-uclibc-oe-g++ linux-gnueabi-oe-g++
- do
- install -d ${S}/mkspecs/$template
- install -m 0644 ${WORKDIR}/linux-oe-qmake.conf ${S}/mkspecs/$template/qmake.conf
- ln -sf ../linux-g++/qplatformdefs.h ${S}/mkspecs/$template/qplatformdefs.h
- done
-
- QMAKESPEC=
- PLATFORM=${HOST_OS}-oe-g++
- export PLATFORM
- # yes, TARGET_SYS is correct, because this is a 'cross'-qmake-native :) :M:
- echo yes | ./configure -prefix ${STAGING_DIR}/${CROSS_SYS}/qt4 ${EXTRA_OECONF} || die "Configuring qt failed"
-}
-
-do_compile() {
- :
-}
-
-do_stage() {
- install -m 0755 bin/qmake ${STAGING_BINDIR}/qmake2
- install -d ${STAGING_DIR}/${CROSS_SYS}/qt4/
- cp -PfR mkspecs ${STAGING_DIR}/${CROSS_SYS}/qt4/
-}
-
-do_install() {
- :
-}
diff --git a/packages/qmake/qmake2-native_2.01a.bb b/packages/qmake/qmake2-native_2.01a.bb
new file mode 100644
index 0000000000..dab5b6a3b4
--- /dev/null
+++ b/packages/qmake/qmake2-native_2.01a.bb
@@ -0,0 +1,49 @@
+DESCRIPTION = "TrollTech Makefile Generator"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.trolltech.com"
+SECTION = "devel"
+LICENSE = "GPL QPL"
+
+QTVER = "qt-x11-opensource-src-4.2.3"
+
+SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/${QTVER}.tar.gz \
+ file://linux-oe-qmake.conf"
+S = "${WORKDIR}/${QTVER}"
+
+# we need the real target system here
+CROSS_SYS := "${TARGET_SYS}"
+inherit autotools native
+
+export QTDIR = "${S}"
+EXTRA_OEMAKE = "-e"
+
+do_configure() {
+ # Install the OE build templates
+ for template in linux-oe-g++ linux-uclibc-oe-g++ linux-gnueabi-oe-g++
+ do
+ install -d ${S}/mkspecs/$template
+ install -m 0644 ${WORKDIR}/linux-oe-qmake.conf ${S}/mkspecs/$template/qmake.conf
+ ln -sf ../linux-g++/qplatformdefs.h ${S}/mkspecs/$template/qplatformdefs.h
+ done
+
+ QMAKESPEC=
+ PLATFORM=${HOST_OS}-oe-g++
+ export PLATFORM
+ # yes, TARGET_SYS is correct, because this is a 'cross'-qmake-native :) :M:
+ echo yes | ./configure -prefix ${STAGING_DIR}/${CROSS_SYS}/qt4 ${EXTRA_OECONF} || die "Configuring qt failed"
+}
+
+do_compile() {
+ :
+}
+
+do_stage() {
+ install -m 0755 bin/qmake ${STAGING_BINDIR}/qmake2
+ install -m 0755 bin/qmake ${STAGING_BINDIR}/qmake-qt4
+ install -d ${STAGING_DIR}/${CROSS_SYS}/qt4/
+ cp -PfR mkspecs ${STAGING_DIR}/${CROSS_SYS}/qt4/
+}
+
+do_install() {
+ :
+}
diff --git a/packages/qof/qof_0.7.2.bb b/packages/qof/qof_0.7.2.bb
index 985e8d6cfd..e6bae9e5c9 100644
--- a/packages/qof/qof_0.7.2.bb
+++ b/packages/qof/qof_0.7.2.bb
@@ -1,6 +1,8 @@
-HOMEPAGE = "http://qof.sourceforge.net/"
+DESCRIPTION = "set of C Language utilities for performing generic structured \
+complex queries on a set of data held by a set of C/C++ objects."
+AUTHOR = "Linas Vepstas, Neil Williams"
+HOMEPAGE = "http://qof.sf.net/"
LICENSE = "GPL"
-
DEPENDS = "glib-2.0 libxml2 libtool zlib"
SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz \
diff --git a/packages/qpe-games/hexatrolic_1.0beta3.bb b/packages/qpe-games/hexatrolic_1.0beta3.bb
index 123810cfef..e0ca1a4084 100644
--- a/packages/qpe-games/hexatrolic_1.0beta3.bb
+++ b/packages/qpe-games/hexatrolic_1.0beta3.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Hexatrolic a Ball Game"
-SECTION = "opie/games"
+SECTION = "opie/games"
PRIORITY = "optional"
LICENSE = "GPL"
AUTHOR = "Helge Plehn"
@@ -14,6 +14,7 @@ S = "${WORKDIR}/${APPNAME}"
do_install () {
+ install -d ${D}${palmtopdir}/apps/Games/
install -d ${D}${palmtopdir}/pics/${APPNAME}/
install -m 0644 ${S}/pics/*.png ${D}${palmtopdir}/pics/${APPNAME}/
install -m 0644 ${S}/${APPNAME}.desktop ${D}${palmtopdir}/apps/Games
diff --git a/packages/qpe-games/labyrinth_0.7.bb b/packages/qpe-games/labyrinth_0.7.bb
index 9075b010eb..0a43be2795 100644
--- a/packages/qpe-games/labyrinth_0.7.bb
+++ b/packages/qpe-games/labyrinth_0.7.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "A traditional (german?) boardgame"
-SECTION = "opie/games"
+SECTION = "opie/games"
PRIORITY = "optional"
LICENSE = "GPL"
AUTHOR = "Helge Plehn"
@@ -12,6 +12,7 @@ SRC_URI = "http://handhelds.org/~zecke/oe_packages/labyrinth-0.7-zecke1.tar.gz"
S = "${WORKDIR}/${APPNAME}"
do_install () {
+ install -d ${D}${palmtopdir}/apps/Games/
install -d ${D}${palmtopdir}/pics/${APPNAME}/
install -d ${D}${palmtopdir}/share/games/${APPNAME}/
diff --git a/packages/qpe-games/win4_1.0.1.bb b/packages/qpe-games/win4_1.0.1.bb
index 3541ac9610..9813b33435 100644
--- a/packages/qpe-games/win4_1.0.1.bb
+++ b/packages/qpe-games/win4_1.0.1.bb
@@ -22,6 +22,7 @@ do_compile_prepend() {
}
do_install () {
+ install -d ${D}${palmtopdir}/apps/Games/
install -d ${D}${palmtopdir}/pics/${APPNAME}/
install -m 0644 ${S}/*.png ${D}${palmtopdir}/pics/${APPNAME}/
install -m 0644 ${S}/${APPNAME}.desktop ${D}${palmtopdir}/apps/Games
diff --git a/packages/qpe-games/ziq_1.1ern.bb b/packages/qpe-games/ziq_1.1ern.bb
index 626f03d53d..f51805f1d8 100644
--- a/packages/qpe-games/ziq_1.1ern.bb
+++ b/packages/qpe-games/ziq_1.1ern.bb
@@ -10,6 +10,7 @@ SRC_URI = "http://handhelds.org/~zecke/oe_packages/ziq_V1.1ern.tar.gz \
file://ziq.patch;patch=1"
PV = "1.1ern"
+PR = "r1"
S = "${WORKDIR}/ziq_V${PV}"
@@ -19,7 +20,9 @@ APPDESKTOP = "${S}"
do_install () {
+ install -d ${D}${palmtopdir}/apps/Games/
install -d ${D}${palmtopdir}/pics/${APPNAME}/
+ install -d ${D}${palmtopdir}/apps/Games
install -m 0644 ${S}/*.png ${D}${palmtopdir}/pics/${APPNAME}/
install -m 0644 ${S}/${APPNAME}.desktop ${D}${palmtopdir}/apps/Games
}
diff --git a/packages/qpe-games/zsubhunt_1.0.0ern.bb b/packages/qpe-games/zsubhunt_1.0.0ern.bb
index d486058bab..0a52c0017a 100644
--- a/packages/qpe-games/zsubhunt_1.0.0ern.bb
+++ b/packages/qpe-games/zsubhunt_1.0.0ern.bb
@@ -18,6 +18,7 @@ APPDESKTOP = "${S}"
do_install () {
+ install -d ${D}${palmtopdir}/apps/Games/
install -d ${D}${palmtopdir}/pics/${APPNAME}/
install -m 0644 ${S}/pics/*.png ${D}${palmtopdir}/pics/${APPNAME}/
install -m 0644 ${S}/${APPNAME}.desktop ${D}${palmtopdir}/apps/Games
diff --git a/packages/qpe-games/ztappy_0.9.3ern.bb b/packages/qpe-games/ztappy_0.9.3ern.bb
index 1fe3c5187a..d64a17a7cb 100644
--- a/packages/qpe-games/ztappy_0.9.3ern.bb
+++ b/packages/qpe-games/ztappy_0.9.3ern.bb
@@ -18,6 +18,7 @@ APPTYPE = "binary"
APPDESKTOP = "${S}"
do_install () {
+ install -d ${D}${palmtopdir}/apps/Games/
install -d ${D}${palmtopdir}/pics/${APPNAME}/
install -m 0644 ${S}/pics/*.png ${D}${palmtopdir}/pics/${APPNAME}/
install -m 0644 ${S}/${APPNAME}.desktop ${D}${palmtopdir}/apps/Games
diff --git a/packages/qpegps/qpegps_0.9.3.bb b/packages/qpegps/qpegps_0.9.3.bb
new file mode 100644
index 0000000000..a4712f3dea
--- /dev/null
+++ b/packages/qpegps/qpegps_0.9.3.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "Navigation application for use with GPS adapters"
+SECTION = "opie/applications"
+PRIORITY = "optional"
+
+RRECOMMENDS = "gpsd"
+LICENSE = "GPL"
+HOMEPAGE = "http://qpegps.sourceforge.net/"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/qpegps/qpegps_${PV}_src.zip \
+ file://qpegps.desktop \
+ file://qpegps.png"
+S = "${WORKDIR}/qpegps"
+
+inherit palmtop
+
+QMAKE_PROFILES = "qpegps.pro"
+EXTRA_QMAKEVARS_POST = "LIBS=-lqpe LIBS+=-lgps"
+
+do_install() {
+ install -d ${D}${palmtopdir}/bin \
+ ${D}${palmtopdir}/apps/Applications \
+ ${D}${palmtopdir}/pics/qpegps \
+ ${D}${palmtopdir}/help/html/qpegps_icons \
+ ${D}${palmtopdir}/qpegps/maps \
+ ${D}${palmtopdir}/qpegps/icons \
+ ${D}${palmtopdir}/qpegps/tracks
+ install -m 0755 qpegps ${D}${palmtopdir}/bin/
+ install -m 0644 ${WORKDIR}/qpegps.desktop ${D}${palmtopdir}/apps/Applications/
+ install -m 0644 ${WORKDIR}/qpegps.png ${D}${palmtopdir}/pics/qpegps/
+ install -m 0644 doc/qpegps.html ${D}${palmtopdir}/help/html/
+ install -m 0644 doc/qpegps_icons/*.png ${D}${palmtopdir}/help/html/qpegps_icons/
+ install -m 0644 icons/*.xpm ${D}${palmtopdir}/qpegps/icons/
+ install -m 0644 datum/*.dat ${D}${palmtopdir}/qpegps/
+}
diff --git a/packages/qpf-fonts/qpf-qte_2.3.10.bb b/packages/qpf-fonts/qpf-qte_2.3.10.bb
index 33e7d87e32..4d7d739f79 100644
--- a/packages/qpf-fonts/qpf-qte_2.3.10.bb
+++ b/packages/qpf-fonts/qpf-qte_2.3.10.bb
@@ -20,6 +20,8 @@ PROVIDES += "qte-font-smoothserif-140 qte-font-smoothserif-180 qte-font-smooths
PROVIDES += "qte-font-smoothtimes-100 qte-font-smoothtimes-160 qte-font-smoothtimes-170"
PROVIDES += "qte-font-smoothtimes-220 qte-font-smoothtimes-250 qte-font-smoothtimes-440"
PROVIDES += "qte-font-unifont"
+RPROVIDES_qte-font-unifont += "virtual/japanese-font"
+RPROVIDES_qte-font-japanese += "virtual/japanese-font"
SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-${PV}-free.tar.gz"
S = "${WORKDIR}/qt-${PV}"
diff --git a/packages/qpf-fonts/qpf-unifont_1.0.bb b/packages/qpf-fonts/qpf-unifont_1.0.bb
index 6eefff1c20..ec3a9de4ca 100644
--- a/packages/qpf-fonts/qpf-unifont_1.0.bb
+++ b/packages/qpf-fonts/qpf-unifont_1.0.bb
@@ -2,6 +2,7 @@ DESCRIPTION = "Unicode fonts - QPF Edition"
LICENSE = "GPL QPL"
SECTION = "opie/fonts"
PRIORITY = "optional"
+RPROVIDES = "virtual/japanese-font"
PACKAGE_ARCH = "all"
PR = "r1"
diff --git a/packages/qpf-fonts/qpf-unismall_1.0.0.bb b/packages/qpf-fonts/qpf-unismall_1.0.0.bb
index 9c5600cb9d..20f47f9665 100644
--- a/packages/qpf-fonts/qpf-unismall_1.0.0.bb
+++ b/packages/qpf-fonts/qpf-unismall_1.0.0.bb
@@ -4,9 +4,9 @@ PRIORITY = "optional"
LICENSE = "GPL"
HOMEPAGE = "http://sourceforge.jp/projects/zaurus-ja/"
RPROVIDES = "virtual/japanese-font"
-PR = "r1"
+PR = "r2"
-SRC_URI = "http://prdownloads.sourceforge.jp/zaurus-ja/773/unismall-1.0.0.tar.gz"
+SRC_URI = "http://osdn.dl.sourceforge.jp/zaurus-ja/773/unismall-${PV}.tar.gz"
S = "${WORKDIR}"
diff --git a/packages/qpf-fonts/terminus.bb b/packages/qpf-fonts/terminus.bb
index 23c00e1ac2..6d2e4ab85f 100644
--- a/packages/qpf-fonts/terminus.bb
+++ b/packages/qpf-fonts/terminus.bb
@@ -6,7 +6,8 @@ LICENSE = "GPL"
PACKAGE_ARCH = "all"
PR = "r2"
-SRC_URI = "http://www.mn-solutions.de/downloads/mnci/terminus-fonts.tar.bz2"
+#SRC_URI = "http://www.mn-solutions.de/downloads/mnci/terminus-fonts.tar.bz2" -> 404 error
+SRC_URI = "http://openzaurus.linuxtogo.org/download/3.5.4/sources/terminus-fonts.tar.bz2"
S = "${WORKDIR}/terminus-fonts"
do_install() {
diff --git a/packages/qt/qt-x11-free-common.inc b/packages/qt/qt-x11-free-common.inc
new file mode 100644
index 0000000000..d052b54c47
--- /dev/null
+++ b/packages/qt/qt-x11-free-common.inc
@@ -0,0 +1,88 @@
+DESCRIPTION = "Qt/X11 Version ${PV} is a full fledged cross-platform application framework"
+SECTION = "x11/libs"
+PRIORITY = "optional"
+LICENSE = "GPL QPL"
+HOMEPAGE = "http://www.trolltech.com"
+
+S = "${WORKDIR}/qt-x11-free-${PV}"
+
+inherit qmake-base qt3x11
+
+export QTDIR = "${S}"
+STAGING_QT_DIR = "${STAGING_DIR}/${HOST_SYS}/qt3"
+ARCH_i686 = "x86"
+EXTRA_OEMAKE = "-e"
+
+QT_CONFIG_FLAGS = "-release -shared -qt-zlib -no-nas-sound -no-sm -qt-libpng -no-gif -no-xinerama \
+ -no-tablet -no-xkb -no-dlopen-opengl -no-nis -no-cups -thread -plugin-sql-mysql -verbose"
+
+EXTRA_ENV = 'QMAKE="${STAGING_BINDIR_NATIVE}/qmake -after INCPATH+=${STAGING_INCDIR} \
+ INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \
+ QMAKESPEC="${QMAKESPEC}" LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \
+ AR="${TARGET_PREFIX}ar cqs" \
+ MOC="${STAGING_BINDIR_NATIVE}/moc3" UIC="${STAGING_BINDIR_NATIVE}/uic3" MAKE="make -e"'
+
+do_configure() {
+ echo "yes" | ./configure -prefix ${prefix} ${QT_CONFIG_FLAGS} -fast \
+ -L${STAGING_LIBDIR} -I${STAGING_INCDIR} -I${STAGING_INCDIR}/freetype2 -I${STAGING_INCDIR}/mysql
+ # force regenerate
+ rm -f src/qtmain.pro
+ cat Makefile >makefile
+ find . -name "Makefile"|xargs rm -f
+ (cd src && qmake -spec ${QMAKESPEC} )
+ (cd plugins/src && qmake -spec ${QMAKESPEC} )
+ (cd tools && qmake -spec ${QMAKESPEC} )
+ (cd tools/qvfb && qmake -spec ${QMAKESPEC} )
+}
+
+do_compile() {
+ unset CFLAGS
+ unset CXXFLAGS
+ oe_runmake -C src ${EXTRA_ENV}
+ oe_runmake -C plugins/src ${EXTRA_ENV}
+ oe_runmake -C tools ${EXTRA_ENV}
+ oe_runmake -C tools/qvfb ${EXTRA_ENV}
+}
+
+do_stage() {
+ install -d ${STAGING_QT_DIR}/bin
+ ln -sf ${STAGING_BINDIR_NATIVE}/moc3 ${STAGING_QT_DIR}/bin/moc
+ ln -sf ${STAGING_BINDIR_NATIVE}/uic3 ${STAGING_QT_DIR}/bin/uic
+ ln -sf ${STAGING_BINDIR_NATIVE}/qmake ${STAGING_QT_DIR}/bin/qmake
+ install -d ${STAGING_QT_DIR}/lib
+ oe_soinstall lib/libqt-mt.so.${PV} ${STAGING_QT_DIR}/lib
+ install -d ${STAGING_QT_DIR}/include/private
+ for f in include/*.h
+ do
+ install -m 0644 $f ${STAGING_QT_DIR}/include/
+ done
+ for f in include/private/*.h
+ do
+ install -m 0644 $f ${STAGING_QT_DIR}/include/private
+ done
+ for f in lib/*.prl
+ do
+ install -m 0644 $f ${STAGING_QT_DIR}/lib
+ done
+}
+
+do_install() {
+ install -d ${D}${libdir}/
+ oe_soinstall lib/libqt-mt.so.${PV} ${D}${libdir}/
+ install -d ${D}${bindir}/
+ install -m 0755 bin/designer bin/assistant tools/qvfb/qvfb bin/qtconfig ${D}${bindir}
+ install -d ${D}${prefix}/plugins/
+ cp -pPR plugins/imageformats plugins/sqldrivers plugins/designer ${D}${prefix}/plugins/
+}
+
+PACKAGES =+ "qt-x11-plugins-imageformats qt-x11-plugins-sqldrivers qt-x11-plugins-designer \
+ qt-x11-designer qt-x11-assistant qt-x11-qvfb qt-x11-qtconfig qt-x11-plugins-debug"
+FILES_qt-x11-plugins-imageformats = "${prefix}/plugins/imageformats/*.so"
+FILES_qt-x11-plugins-sqldrivers = "${prefix}/plugins/sqldrivers/*.so"
+FILES_qt-x11-plugins-designer = "${prefix}/plugins/designer/*.so"
+FILES_qt-x11-designer = "${bindir}/designer"
+FILES_qt-x11-assistant = "${bindir}/assistant"
+FILES_qt-x11-qvfb = "${bindir}/qvfb"
+FILES_qt-x11-qtconfig = "${bindir}/qtconfig"
+FILES_qt-x11-plugins-debug += "${prefix}/plugins/*/.debug"
+
diff --git a/packages/qt/qt-x11-free/configure.patch b/packages/qt/qt-x11-free/configure.patch
index a56c621abb..9d6c1e8ef7 100644
--- a/packages/qt/qt-x11-free/configure.patch
+++ b/packages/qt/qt-x11-free/configure.patch
@@ -5,15 +5,6 @@
--- qt-x11-free-3.3.2/configure~configure.patch
+++ qt-x11-free-3.3.2/configure
-@@ -219,7 +219,7 @@
- # licensed modules depend on type of commercial license
- MODULES="styles tools kernel widgets dialogs iconview workspace"
- [ "$PLATFORM_QWS" = "yes" ] && [ "$Products" = "qt-professional" ] && MODULES="$MODULES network"
--[ "$Products" != "qt-professional" ] && MODULES="$MODULES network canvas table xml opengl sql"
-+[ "$Products" != "qt-professional" ] && MODULES="$MODULES network canvas table xml sql"
- CFG_MODULES_AVAILABLE=$MODULES
- QMAKE_VARS="$QMAKE_VARS \"QT_PRODUCT=$Products\""
- QMAKE_VARS="$QMAKE_VARS \"styles += windows motif mac platinum sgi cde motifplus\""
@@ -1754,21 +1754,14 @@
CFG_FREETYPE=yes
fi
diff --git a/packages/qt/qt-x11-free_3.3.6.bb b/packages/qt/qt-x11-free_3.3.6.bb
index 5a1c014e6d..719215c5d2 100644
--- a/packages/qt/qt-x11-free_3.3.6.bb
+++ b/packages/qt/qt-x11-free_3.3.6.bb
@@ -1,93 +1,10 @@
-DESCRIPTION = "Qt/X11 Version ${PV} is a full fledged cross-platform application framework"
-SECTION = "x11/libs"
-PRIORITY = "optional"
-LICENSE = "GPL QPL"
-HOMEPAGE = "http://www.trolltech.com"
-DEPENDS = "uicmoc3-native freetype virtual/libx11 xft libxext libxrender libxrandr libxcursor mysql"
+DEPENDS = "uicmoc3-native freetype virtual/libx11 xft libxext libxrender libxrandr libxcursor mysql mesa"
PROVIDES = "qt3x11"
-PR = "r0"
+PR = "r2"
SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-free-${PV}.tar.bz2 \
file://configure.patch;patch=1 \
file://no-examples.patch;patch=1 \
file://gcc4_1-HACK.patch;patch=1"
-S = "${WORKDIR}/qt-x11-free-${PV}"
-inherit qmake-base qt3x11
-
-export QTDIR = "${S}"
-STAGING_QT_DIR = "${STAGING_DIR}/${HOST_SYS}/qt3"
-ARCH_i686 = "x86"
-EXTRA_OEMAKE = "-e"
-
-QT_CONFIG_FLAGS = "-release -shared -qt-zlib -no-nas-sound -no-sm -qt-libpng -no-gif -no-xinerama \
- -no-tablet -no-xkb -no-dlopen-opengl -no-nis -no-cups -thread -plugin-sql-mysql -verbose"
-
-EXTRA_ENV = 'QMAKE="${STAGING_BINDIR_NATIVE}/qmake -after INCPATH+=${STAGING_INCDIR} \
- INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \
- QMAKESPEC="${QMAKESPEC}" LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \
- AR="${TARGET_PREFIX}ar cqs" \
- MOC="${STAGING_BINDIR_NATIVE}/moc3" UIC="${STAGING_BINDIR_NATIVE}/uic3" MAKE="make -e"'
-
-do_configure() {
- echo "yes" | ./configure -prefix ${prefix} ${QT_CONFIG_FLAGS} -fast \
- -L${STAGING_LIBDIR} -I${STAGING_INCDIR} -I${STAGING_INCDIR}/freetype2 -I${STAGING_INCDIR}/mysql
- # force regenerate
- rm -f src/qtmain.pro
- cat Makefile >makefile
- find . -name "Makefile"|xargs rm -f
- (cd src && qmake -spec ${QMAKESPEC} )
- (cd plugins/src && qmake -spec ${QMAKESPEC} )
- (cd tools && qmake -spec ${QMAKESPEC} )
- (cd tools/qvfb && qmake -spec ${QMAKESPEC} )
-}
-
-do_compile() {
- unset CFLAGS
- unset CXXFLAGS
- oe_runmake -C src ${EXTRA_ENV}
- oe_runmake -C plugins/src ${EXTRA_ENV}
- oe_runmake -C tools ${EXTRA_ENV}
- oe_runmake -C tools/qvfb ${EXTRA_ENV}
-}
-
-do_stage() {
- install -d ${STAGING_QT_DIR}/bin
- ln -sf ${STAGING_BINDIR_NATIVE}/moc3 ${STAGING_QT_DIR}/bin/moc
- ln -sf ${STAGING_BINDIR_NATIVE}/uic3 ${STAGING_QT_DIR}/bin/uic
- ln -sf ${STAGING_BINDIR_NATIVE}/qmake ${STAGING_QT_DIR}/bin/qmake
- install -d ${STAGING_QT_DIR}/lib
- oe_soinstall lib/libqt-mt.so.${PV} ${STAGING_QT_DIR}/lib
- install -d ${STAGING_QT_DIR}/include/private
- for f in include/*.h
- do
- install -m 0644 $f ${STAGING_QT_DIR}/include/
- done
- for f in include/private/*.h
- do
- install -m 0644 $f ${STAGING_QT_DIR}/include/private
- done
- for f in lib/*.prl
- do
- install -m 0644 $f ${STAGING_QT_DIR}/lib
- done
-}
-
-do_install() {
- install -d ${D}${libdir}/
- oe_soinstall lib/libqt-mt.so.${PV} ${D}${libdir}/
- install -d ${D}${bindir}/
- install -m 0755 bin/designer bin/assistant tools/qvfb/qvfb bin/qtconfig ${D}${bindir}
- install -d ${D}${prefix}/plugins/
- cp -pPR plugins/imageformats plugins/sqldrivers plugins/designer ${D}${prefix}/plugins/
-}
-
-PACKAGES =+ "qt-x11-plugins-imageformats qt-x11-plugins-sqldrivers qt-x11-plugins-designer \
- qt-x11-designer qt-x11-assistant qt-x11-qvfb qt-x11-qtconfig"
-FILES_qt-x11-plugins-imageformats = "${prefix}/plugins/imageformats"
-FILES_qt-x11-plugins-sqldrivers = "${prefix}/plugins/sqldrivers"
-FILES_qt-x11-plugins-designer = "${prefix}/plugins/designer"
-FILES_qt-x11-designer = "${bindir}/designer"
-FILES_qt-x11-assistant = "${bindir}/assistant"
-FILES_qt-x11-qvfb = "${bindir}/qvfb"
-FILES_qt-x11-qtconfig = "${bindir}/qtconfig"
+require qt-x11-free-common.inc
diff --git a/packages/qt/qt-x11-free_3.3.7.bb b/packages/qt/qt-x11-free_3.3.7.bb
new file mode 100644
index 0000000000..d5df55cbb4
--- /dev/null
+++ b/packages/qt/qt-x11-free_3.3.7.bb
@@ -0,0 +1,10 @@
+DEPENDS = "uicmoc3-native freetype virtual/libx11 xft libxext libxrender libxrandr libxcursor mysql mesa"
+PROVIDES = "qt3x11"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-free-${PV}.tar.bz2 \
+ file://configure.patch;patch=1 \
+ file://no-examples.patch;patch=1 \
+ file://gcc4_1-HACK.patch;patch=1"
+
+require qt-x11-free-common.inc
diff --git a/packages/qte/qte-2.3.10/c700-hardware.patch b/packages/qte/qte-2.3.10/c700-hardware.patch
index 5527ab4a88..fa4bd25f37 100644
--- a/packages/qte/qte-2.3.10/c700-hardware.patch
+++ b/packages/qte/qte-2.3.10/c700-hardware.patch
@@ -3,26 +3,6 @@
# Patch managed by http://www.holgerschurig.de/patcher.html
#
---- qt-2.3.9-snapshot-20050114/src/kernel/qwindowsystem_qws.cpp~c700-hardware
-+++ qt-2.3.9-snapshot-20050114/src/kernel/qwindowsystem_qws.cpp
-@@ -178,7 +178,7 @@
- static QRect maxwindow_rect;
- extern Q_EXPORT QRect qt_maxWindowRect;
- static const char *defaultMouse =
--#if defined(QT_QWS_CASSIOPEIA) || defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_YOPY) || defined(QWS_CUSTOMTOUCHPANEL)
-+#if defined(QT_QWS_CASSIOPEIA) || defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_SLC700) || defined(QT_QWS_YOPY) || defined(QWS_CUSTOMTOUCHPANEL)
- "TPanel"
- #elif defined(QT_KEYPAD_MODE)
- "None"
-@@ -3308,7 +3308,7 @@
- void QWSServer::screenSaverSleep()
- {
- qt_screen->blank(TRUE);
--#if !defined(QT_QWS_IPAQ) && !defined(QT_QWS_SL5XXX)
-+#if !defined(QT_QWS_IPAQ) && !defined(QT_QWS_SL5XXX) && !defined(QT_QWS_SLC700)
- d->screensavertimer->stop();
- #else
- if ( screensaverinterval ) {
--- qt-2.3.9-snapshot-20050114/src/kernel/qwsmouse_qws.cpp~c700-hardware
+++ qt-2.3.9-snapshot-20050114/src/kernel/qwsmouse_qws.cpp
@@ -87,6 +87,19 @@
@@ -45,66 +25,3 @@
#endif
#ifndef QT_QWS_TP_SAMPLE_SIZE
-@@ -592,7 +605,7 @@
- sub[nsub++] = new QAutoMouseSubHandler_intellimouse(fd);
- notify(fd);
- }
--#if !defined(QT_QWS_IPAQ) && !defined(QT_QWS_SL5XXX) && !defined(QT_QWS_K2)
-+#if !defined(QT_QWS_IPAQ) && !defined(QT_QWS_SL5XXX) && !defined(QT_QWS_K2) && !defined(QT_QWS_SLC700)
- char fn[] = "/dev/ttyS?";
- for (int ch='0'; ch<='3'; ch++) {
- fn[9] = ch;
-@@ -1274,7 +1287,7 @@
- numSamples(0), skipCount(0)
- {
- Q_UNUSED(dev);
--#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2)
-+#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2) || defined(QT_QWS_SLC700)
- #if defined(QT_QWS_IPAQ)
- # ifdef QT_QWS_IPAQ_RAW
- if ((mouseFD = open( "/dev/h3600_tsraw", O_RDONLY | O_NDELAY)) < 0) {
-@@ -1284,7 +1297,7 @@
- qWarning( "Cannot open /dev/h3600_ts (%s)", strerror(errno));
- return;
- }
--#elif defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2)
-+#elif defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2) || defined(QT_QWS_SLC700)
- //# ifdef QT_QWS_SL5XXX_TSRAW
- # if 0
- if ((mouseFD = open( "/dev/tsraw", O_RDONLY | O_NDELAY)) < 0) {
-@@ -1310,7 +1323,7 @@
-
- QTPanelHandlerPrivate::~QTPanelHandlerPrivate()
- {
--#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2)
-+#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2) || defined(QT_QWS_SLC700)
- if (mouseFD >= 0)
- close(mouseFD);
- #endif
-@@ -1318,7 +1331,7 @@
-
- void QTPanelHandlerPrivate::readMouseData()
- {
--#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2)
-+#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2) || defined(QT_QWS_SLC700)
- if(!qt_screen)
- return;
-
-@@ -1337,7 +1350,7 @@
- uchar *mb = mouseBuf+idx;
- data = (TS_EVENT *) mb;
- if(data->pressure >= QT_QWS_TP_PRESSURE_THRESHOLD) {
--#ifdef QT_QWS_SL5XXX
-+#if defined(QT_QWS_SL5XXX) || defined(QT_QWS_SLC700)
- samples[currSample] = QPoint( 1000 - data->x, data->y );
- #else
- samples[currSample] = QPoint( data->x, data->y );
-@@ -1997,7 +2010,7 @@
- handler = new QTSLibHandlerPrivate();
- #elif defined(QT_QWS_YOPY)
- handler = new QYopyTPanelHandlerPrivate(mouseProtocol,mouseDev);
--#elif defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2)
-+#elif defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2) || defined(QT_QWS_SLC700)
- handler = new QTPanelHandlerPrivate(mouseProtocol,mouseDev);
- #elif defined(QT_QWS_CASSIOPEIA)
- handler = new QVrTPanelHandlerPrivate( mouseProtocol, mouseDev );
diff --git a/packages/qte/qte-2.3.10/deprecated/.mtn2git_empty b/packages/qte/qte-2.3.10/deprecated/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qte/qte-2.3.10/deprecated/.mtn2git_empty
diff --git a/packages/qte/qte-2.3.10/mnci-touchscreen.patch b/packages/qte/qte-2.3.10/deprecated/mnci-touchscreen.patch
index 570c2ff290..570c2ff290 100644
--- a/packages/qte/qte-2.3.10/mnci-touchscreen.patch
+++ b/packages/qte/qte-2.3.10/deprecated/mnci-touchscreen.patch
diff --git a/packages/qte/qte-2.3.10/mnci.patch b/packages/qte/qte-2.3.10/deprecated/mnci.patch
index c2e0e079d9..c2e0e079d9 100644
--- a/packages/qte/qte-2.3.10/mnci.patch
+++ b/packages/qte/qte-2.3.10/deprecated/mnci.patch
diff --git a/packages/qte/qte-2.3.10/deprecated/openmn/.mtn2git_empty b/packages/qte/qte-2.3.10/deprecated/openmn/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qte/qte-2.3.10/deprecated/openmn/.mtn2git_empty
diff --git a/packages/qte/qte-2.3.10/openmn/qkeyboard_qws.cpp b/packages/qte/qte-2.3.10/deprecated/openmn/qkeyboard_qws.cpp
index 9917675a43..9917675a43 100644
--- a/packages/qte/qte-2.3.10/openmn/qkeyboard_qws.cpp
+++ b/packages/qte/qte-2.3.10/deprecated/openmn/qkeyboard_qws.cpp
diff --git a/packages/qte/qte-2.3.10/openmn/qkeyboard_qws.h b/packages/qte/qte-2.3.10/deprecated/openmn/qkeyboard_qws.h
index aa459d1448..aa459d1448 100644
--- a/packages/qte/qte-2.3.10/openmn/qkeyboard_qws.h
+++ b/packages/qte/qte-2.3.10/deprecated/openmn/qkeyboard_qws.h
diff --git a/packages/qte/qte-2.3.10/kernel-asm-page.patch b/packages/qte/qte-2.3.10/kernel-asm-page.patch
new file mode 100644
index 0000000000..bad2d95967
--- /dev/null
+++ b/packages/qte/qte-2.3.10/kernel-asm-page.patch
@@ -0,0 +1,20 @@
+diff --git a/src/kernel/qpixmapcache.cpp b/src/kernel/qpixmapcache.cpp
+index c2e7d9b..8d39585 100644
+--- a/src/kernel/qpixmapcache.cpp
++++ b/src/kernel/qpixmapcache.cpp
+@@ -123,9 +123,13 @@ void cleanup_pixmap_cache();
+ #ifdef THROW_AWAY_UNUSED_PAGES
+ # include <sys/mman.h> // madvise
+ # include <asm/page.h> // PAGE_SIZE,PAGE_MASK,PAGE_ALIGN
++# include <unistd.h> // getpagesize()
++# if (!defined(PAGE_ALIGN)) && defined(PAGE_SIZE) && defined(PAGE_MASK)
++# define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)
++# endif
+ # ifndef PAGE_ALIGN
+-# define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)
+-# endif // PAGE_ALIGN
++# define PAGE_ALIGN(addr) (((addr)+getpagesize()-1)&~(getpagesize()-1))
++# endif
+ #endif // THROW_AWAY_UNUSED_PAGES
+
+
diff --git a/packages/qte/qte-2.3.10/kernel-keymap.patch b/packages/qte/qte-2.3.10/kernel-keymap.patch
index 79c0bd07ad..0111c83b45 100644
--- a/packages/qte/qte-2.3.10/kernel-keymap.patch
+++ b/packages/qte/qte-2.3.10/kernel-keymap.patch
@@ -1,8 +1,6 @@
-Index: src/kernel/kernelkeyboard.cpp
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ src/kernel/kernelkeyboard.cpp 2006-04-01 23:42:35.154645456 +0200
-@@ -0,0 +1,701 @@
+--- /dev/null 2004-07-13 00:58:01.000000000 +0000
++++ qte/src/kernel/kernelkeyboard.cpp 2007-04-07 01:00:36.000000000 +0000
+@@ -0,0 +1,769 @@
+/*
+
+ Copyright (C) 2003 Chris Larson
@@ -73,6 +71,22 @@ Index: src/kernel/kernelkeyboard.cpp
+ */
+
+/*
++ Paul Sokolovsky, 2007-04:
++
++ 1. Added support for nicely named and extensible key bindings.
++ E.g., in loadkeys do:
++ keycode 155 = F100
++ string F100 = "power"
++ where 155 is keycode a power button happens to have on your machine, F100 is
++ arbitrary function key (please use F100-F120), and "power" is OPIE binding.
++ Currently defined bindings are "power", "backlight", "record"
++ 2. K_DO ("Do") keycode is mapped to OPIE power button by default. Kernel uses
++ K_DO for KEY_POWER input subsystem keycode. So, if your device does the right
++ thing, it will work out of the box.
++ 3. Implemented NumLock handling for numeric keypad.
++ */
++
++/*
+ This is an alternative implementation of the QWSTtyKeyboardHandler
+ of Trolltech's QtE.
+
@@ -179,6 +193,24 @@ Index: src/kernel/kernelkeyboard.cpp
+ return;
+}
+
++static Qt::Key getSpecialKey(int fKey)
++{
++ struct kbsentry kbs;
++ kbs.kb_func = fKey;
++
++ if (ioctl(kbdFD, KDGKBSENT, &kbs) != 0)
++ return Qt::Key_unknown;
++ const char *str = (const char *)kbs.kb_string;
++
++ if (!strcmp("record", str))
++ return Qt::Key_F24;
++ else if (!strcmp("power", str))
++ return Qt::Key_F34;
++ else if (!strcmp("backlight", str))
++ return Qt::Key_F35;
++
++ return Qt::Key_unknown;
++}
+
+void QWSTtyKeyboardHandler::readKeyboardMap()
+{
@@ -221,7 +253,12 @@ Index: src/kernel/kernelkeyboard.cpp
+ kernel_map[map][key] = KeyMap( static_cast<Qt::Key>( Qt::Key_F1 + kval ), kval );
+ else if ( kval >= 30 && kval <= 44)
+ kernel_map[map][key] = KeyMap( static_cast<Qt::Key>( Qt::Key_F21 + (kval - 30) ), kval );
-+ else
++ else {
++ Qt::Key specialKey = getSpecialKey(kval);
++ if (specialKey != Qt::Key_unknown) {
++ kernel_map[map][key] = KeyMap( specialKey, kval );
++ }
++ else
+ switch(kbe.kb_value ) {
+ case K_INSERT:
+ kernel_map[map][key] = KeyMap( Qt::Key_Insert, kval );
@@ -251,10 +288,13 @@ Index: src/kernel/kernelkeyboard.cpp
+ kernel_map[map][key] = KeyMap( Qt::Key_Home, kval );
+ break;
+ case K_DO:
++ kernel_map[map][key] = KeyMap( Qt::Key_F34, kval );
++ break;
+ default:
+ kernel_map[map][key] = KeyMap( Qt::Key_unknown, kval );
+ break;
+ }
++ }
+ break;
+
+ case KT_SPEC:
@@ -302,56 +342,58 @@ Index: src/kernel/kernelkeyboard.cpp
+ */
+ switch(kbe.kb_value ) {
+ case K_P0:
-+ kernel_map[map][key] = KeyMap( Qt::Key_0, 48 );
++ kernel_map[map][key] = KeyMap( Qt::Key_0, kbe.kb_value );
+ break;
+ case K_P1:
-+ kernel_map[map][key] = KeyMap( Qt::Key_1, 49 );
++ kernel_map[map][key] = KeyMap( Qt::Key_1, kbe.kb_value );
+ break;
+ case K_P2:
-+ kernel_map[map][key] = KeyMap( Qt::Key_2, 50 );
++ kernel_map[map][key] = KeyMap( Qt::Key_2, kbe.kb_value );
+ break;
+ case K_P3:
-+ kernel_map[map][key] = KeyMap( Qt::Key_3, 51 );
++ kernel_map[map][key] = KeyMap( Qt::Key_3, kbe.kb_value );
+ break;
+ case K_P4:
-+ kernel_map[map][key] = KeyMap( Qt::Key_4, 52 );
++ kernel_map[map][key] = KeyMap( Qt::Key_4, kbe.kb_value );
+ break;
+ case K_P5:
-+ kernel_map[map][key] = KeyMap( Qt::Key_5, 53 );
++ kernel_map[map][key] = KeyMap( Qt::Key_5, kbe.kb_value );
+ break;
+ case K_P6:
-+ kernel_map[map][key] = KeyMap( Qt::Key_6, 54 );
++ kernel_map[map][key] = KeyMap( Qt::Key_6, kbe.kb_value );
+ break;
+ case K_P7:
-+ kernel_map[map][key] = KeyMap( Qt::Key_7, 55 );
++ kernel_map[map][key] = KeyMap( Qt::Key_7, kbe.kb_value );
+ break;
+ case K_P8:
-+ kernel_map[map][key] = KeyMap( Qt::Key_8, 56 );
++ kernel_map[map][key] = KeyMap( Qt::Key_8, kbe.kb_value );
+ break;
+ case K_P9:
-+ kernel_map[map][key] = KeyMap( Qt::Key_9, 57 );
++ kernel_map[map][key] = KeyMap( Qt::Key_9, kbe.kb_value );
+ break;
+ case K_PPLUS:
-+ kernel_map[map][key] = KeyMap( Qt::Key_Plus, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_Plus, '+' );
+ break;
+ case K_PMINUS:
-+ kernel_map[map][key] = KeyMap( Qt::Key_Minus, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_Minus, '-' );
+ break;
+ case K_PSTAR:
-+ kernel_map[map][key] = KeyMap( Qt::Key_multiply, 42 );
++ kernel_map[map][key] = KeyMap( Qt::Key_multiply, '*' );
+ break;
+ case K_PSLASH:
-+ kernel_map[map][key] = KeyMap( Qt::Key_division, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_division, '/' );
+ break;
+ case K_PENTER:
+ kernel_map[map][key] = KeyMap( Qt::Key_Enter, kval );
+ break;
+ case K_PCOMMA:
-+ kernel_map[map][key] = KeyMap( Qt::Key_Comma, kval ) ;
++ kernel_map[map][key] = KeyMap( Qt::Key_Comma, '.' ) ;
+ break;
+ case K_PPLUSMINUS:
+ kernel_map[map][key] = KeyMap( Qt::Key_plusminus, kval );
++ break;
+ case K_PDOT:
++ kernel_map[map][key] = KeyMap( Qt::Key_Comma, '.' ) ;
+ break;
+ case K_PPARENL:
+ kernel_map[map][key] = KeyMap( Qt::Key_ParenLeft, kval );
@@ -511,6 +553,19 @@ Index: src/kernel/kernelkeyboard.cpp
+ }
+}
+
++static Qt::Key numpad2cursor[NR_PAD] = {
++ Qt::Key_Insert,
++ Qt::Key_End,
++ Qt::Key_Down,
++ Qt::Key_Next,
++ Qt::Key_Left,
++ Qt::Key_5,
++ Qt::Key_Right,
++ Qt::Key_Home,
++ Qt::Key_Up,
++ Qt::Key_Prior,
++};
++
+void QWSTtyKeyboardHandler::handleKey(unsigned int code, bool release)
+{
+ int old_modifier = modifier;
@@ -522,7 +577,9 @@ Index: src/kernel/kernelkeyboard.cpp
+ key_map = kernel_map[0][code];
+ }
+
-+ unsigned short unicode = acm[key_map.code] & 0xff;
++ unsigned short unicode = 0xffff;
++ if (key_map.code < 0x100)
++ unicode = acm[key_map.code & 0xff] & 0xff;
+ unsigned int qtKeyCode = key_map.key;
+
+// if ( !release )
@@ -599,6 +656,15 @@ Index: src/kernel/kernelkeyboard.cpp
+
+ handleExtra( qtKeyCode, release );
+
++ // Do NumLock
++ if (KTYP(key_map.code) == KT_PAD) {
++ if (!numlock) {
++ qtKeyCode = numpad2cursor[KVAL(key_map.code)];
++ } else {
++ unicode = KVAL(key_map.code) + '0';
++ }
++ }
++
+ /*
+ * do not repeat modifier keys
+ */
@@ -706,8 +772,8 @@ Index: src/kernel/kernelkeyboard.cpp
+}
Index: src/kernel/qkeyboard_qws.cpp
===================================================================
---- src/kernel/qkeyboard_qws.cpp.orig 2006-04-01 23:36:22.499297680 +0200
-+++ src/kernel/qkeyboard_qws.cpp 2006-04-01 23:38:19.913448016 +0200
+--- qte/src/kernel/qkeyboard_qws.cpp.orig 2006-04-01 23:36:22.499297680 +0200
++++ qte/src/kernel/qkeyboard_qws.cpp 2006-04-01 23:38:19.913448016 +0200
@@ -45,15 +45,18 @@
#include <ctype.h>
@@ -960,7 +1026,7 @@ Index: src/kernel/qkeyboard_qws.cpp
Index: src/kernel/keyboard_linux_to_qt.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ src/kernel/keyboard_linux_to_qt.h 2006-04-01 23:37:03.928999408 +0200
++++ qte/src/kernel/keyboard_linux_to_qt.h 2006-04-01 23:37:03.928999408 +0200
@@ -0,0 +1,263 @@
+/*
+ * Generated with a small python utility found at
diff --git a/packages/qte/qte-2.3.10/qpe.patch b/packages/qte/qte-2.3.10/qpe.patch
index af2e31664a..554c42c9ad 100644
--- a/packages/qte/qte-2.3.10/qpe.patch
+++ b/packages/qte/qte-2.3.10/qpe.patch
@@ -39,7 +39,7 @@
+#define QT_DLL // Internal
+#endif
+
-+#define QT_NO_QWS_CURSOR
++#undef QT_NO_QWS_CURSOR
+#define QT_NO_QWS_MOUSE_AUTO
+#ifndef QT_NO_CODECS
+#define QT_NO_CODECS
diff --git a/packages/qte/qte-2.3.10/simpad.patch b/packages/qte/qte-2.3.10/simpad.patch
index bdca2e79a0..8a728ef74a 100644
--- a/packages/qte/qte-2.3.10/simpad.patch
+++ b/packages/qte/qte-2.3.10/simpad.patch
@@ -74,39 +74,6 @@
#ifdef QT_QWS_SL5XXX
#include <asm/sharp_char.h>
#endif
-@@ -165,9 +220,9 @@
- current = 0;
- }
-
-- void setAutoRepeat(int d, int p) { if ( d > 0 ) repeatdelay=d;
-+ void setAutoRepeat(int d, int p) { if ( d > 0 ) repeatdelay=d;
- if ( p > 0 ) repeatperiod=p;}
-- void getAutoRepeat(int *d ,int *p ) { if (d) *d=repeatdelay;
-+ void getAutoRepeat(int *d ,int *p ) { if (d) *d=repeatdelay;
- if (p) *p=repeatperiod; }
-
- void stop()
-@@ -551,9 +606,9 @@
-
- void doKey(uchar scancode);
-
--
-+
- void restoreLeds();
--
-+
- private:
- bool shift;
- bool alt;
-@@ -809,7 +864,7 @@
-
- #if !defined(QT_QWS_SL5XXX)
- if (code == 224
--#if defined(QT_QWS_IPAQ)
-+#if defined(QT_QWS_IPAQ)
- && !ipaq_return_pressed
- #endif
- ) {
@@ -1775,9 +1830,11 @@
} else {
type = spec;
@@ -371,30 +338,3 @@
#endif
QSocketNotifier *mouseNotifier;
-@@ -1323,7 +1330,7 @@
-
- QTPanelHandlerPrivate::~QTPanelHandlerPrivate()
- {
--#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2) || defined(QT_QWS_SLC700)
-+#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2) || defined(QT_QWS_SLC700) || defined(QT_QWS_SIMPAD)
- if (mouseFD >= 0)
- close(mouseFD);
- #endif
-@@ -1331,7 +1338,7 @@
-
- void QTPanelHandlerPrivate::readMouseData()
- {
--#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2) || defined(QT_QWS_SLC700)
-+#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2) || defined(QT_QWS_SLC700) || defined(QT_QWS_SIMPAD)
- if(!qt_screen)
- return;
-
-@@ -2013,7 +2020,7 @@
- handler = new QTSLibHandlerPrivate();
- #elif defined(QT_QWS_YOPY)
- handler = new QYopyTPanelHandlerPrivate(mouseProtocol,mouseDev);
--#elif defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2) || defined(QT_QWS_SLC700)
-+#elif defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2) || defined(QT_QWS_SLC700) || defined(QT_QWS_SIMPAD)
- handler = new QTPanelHandlerPrivate(mouseProtocol,mouseDev);
- #elif defined(QT_QWS_CASSIOPEIA)
- handler = new QVrTPanelHandlerPrivate( mouseProtocol, mouseDev );
diff --git a/packages/qte/qte-common_2.3.10.inc b/packages/qte/qte-common_2.3.10.inc
index 35f8df60c8..7e9cc8ea83 100644
--- a/packages/qte/qte-common_2.3.10.inc
+++ b/packages/qte/qte-common_2.3.10.inc
@@ -4,7 +4,6 @@ PRIORITY = "optional"
HOMEPAGE = "http://www.trolltech.com"
LICENSE = "GPL"
DEPENDS = "zlib libpng jpeg tslib uicmoc-native"
-DEPENDS_mnci = "zlib libpng jpeg uicmoc-native"
DEPENDS_append_c7x0 = " sharp-aticore-oss"
PROVIDES = "virtual/libqte2"
@@ -47,6 +46,8 @@ SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-${PV}-free.tar.gz;m
file://simpad-defaultkbd.patch;patch=1 \
file://fix-errno-exception-spec.patch;patch=1 \
file://keyboardless-buttonmap.patch;patch=1 \
+ file://kernel-keymap.patch;patch=1 \
+ file://kernel-asm-page.patch;patch=1 \
file://sharp_char.h \
file://switches.h "
@@ -54,24 +55,15 @@ SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-${PV}-free.tar.gz;m
# add device specific patches here
#
SRC_URI_append_simpad = "file://devfs.patch;patch=1 "
-SRC_URI_append_c7x0 = "file://kernel-keymap.patch;patch=1;pnum=0 file://kernel-keymap-corgi.patch;patch=1 \
+SRC_URI_append_c7x0 = "file://kernel-keymap-corgi.patch;patch=1 \
file://c7x0-w100-accel.patch;patch=1 file://suspend-resume-hooks.patch;patch=1 "
-SRC_URI_append_spitz = "file://kernel-keymap.patch;patch=1;pnum=0 file://kernel-keymap-corgi.patch;patch=1 \
+SRC_URI_append_spitz = "file://kernel-keymap-corgi.patch;patch=1 \
file://kernel-keymap-CXK.patch;patch=1 "
-SRC_URI_append_akita = "file://kernel-keymap.patch;patch=1;pnum=0 file://kernel-keymap-corgi.patch;patch=1 \
+SRC_URI_append_akita = "file://kernel-keymap-corgi.patch;patch=1 \
file://kernel-keymap-CXK.patch;patch=1 "
-SRC_URI_append_poodle = "file://kernel-keymap.patch;patch=1;pnum=0 "
-SRC_URI_append_a780 = "file://kernel-keymap.patch;patch=1;pnum=0 "
-SRC_URI_append_e680 = "file://kernel-keymap.patch;patch=1;pnum=0 "
-SRC_URI_append_tosa = "file://kernel-keymap.patch;patch=1;pnum=0 file://kernel-keymap-tosa.patch;patch=1 "
-SRC_URI_append_jornada6xx = "file://kernel-keymap.patch;patch=1;pnum=0 "
-SRC_URI_append_jornada7xx = "file://kernel-keymap.patch;patch=1;pnum=0 file://ipaq_sound_fix.patch;patch=1 "
-SRC_URI_append_jornada56x = "file://kernel-keymap.patch;patch=1;pnum=0 file://ipaq_sound_fix.patch;patch=1 "
-SRC_URI_append_mnci = "file://devfs.patch;patch=1 \
- file://mnci.patch;patch=1 \
- file://mnci-touchscreen.patch;patch=1 \
- file://qkeyboard_qws.h \
- file://qkeyboard_qws.cpp "
+SRC_URI_append_tosa = "file://kernel-keymap-tosa.patch;patch=1 "
+SRC_URI_append_jornada7xx = "file://ipaq_sound_fix.patch;patch=1 "
+SRC_URI_append_jornada56x = "file://ipaq_sound_fix.patch;patch=1 "
#SRC_URI_append_h1910 = "file://ipaq-keyboard.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
#SRC_URI_append_h1940 = "file://ipaq-keyboard.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
#SRC_URI_append_h2200 = "file://ipaq-keyboard.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
@@ -104,11 +96,8 @@ EXTRA_OEMAKE = "-e"
# add device flags here
#
EXTRA_DEFINES = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DWARNING_UNKNOWN_DEVICE"
-EXTRA_DEFINES_collie = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SL5XXX"
-EXTRA_DEFINES_poodle = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SL5XXX"
-EXTRA_DEFINES_a780 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ -DQT_QWS_EZX"
-EXTRA_DEFINES_e680 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ -DQT_QWS_EZX"
-EXTRA_DEFINES_tosa = "-DQT_QWS_TSLIB -DQT_QWS_SL5XXX -DQT_QWS_SL6000"
+EXTRA_DEFINES_a780 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_e680 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
EXTRA_DEFINES_h1910 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
EXTRA_DEFINES_h1940 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
EXTRA_DEFINES_h2200 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
@@ -120,15 +109,25 @@ EXTRA_DEFINES_h5000 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
EXTRA_DEFINES_h6300 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
EXTRA_DEFINES_hx2000 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
EXTRA_DEFINES_hx4700 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
-EXTRA_DEFINES_a716 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_rx3000 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_asus716 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_asus730 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_htcuniversal = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_htcblueangel = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_htchimalaya = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_magician = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
EXTRA_DEFINES_jornada56x = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
EXTRA_DEFINES_jornada6xx = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
EXTRA_DEFINES_jornada7xx = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_palmld = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_palmtx = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
EXTRA_DEFINES_simpad = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ -DQT_QWS_SIMPAD -DQT_QWS_DEVFS"
-EXTRA_DEFINES_c7x0 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SLC700 -DQT_QWS_SL5XXX"
-EXTRA_DEFINES_spitz = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SLC700 -DQT_QWS_SL5XXX -DQT_QWS_SLCXK"
-EXTRA_DEFINES_akita = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SLC700 -DQT_QWS_SL5XXX -DQT_QWS_SLCXK"
-EXTRA_DEFINES_mnci = " -DQT_QWS_RAMSES -DQT_QWS_DEVFS"
+EXTRA_DEFINES_c7x0 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SL5XXX -DQT_QWS_SLC700"
+EXTRA_DEFINES_spitz = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SL5XXX -DQT_QWS_SLC700 -DQT_QWS_SLCXK"
+EXTRA_DEFINES_akita = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SL5XXX -DQT_QWS_SLC700 -DQT_QWS_SLCXK"
+EXTRA_DEFINES_collie = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SL5XXX"
+EXTRA_DEFINES_poodle = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SL5XXX"
+EXTRA_DEFINES_tosa = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SL5XXX -DQT_QWS_SL6000"
#
# don't touch anything below here
@@ -143,19 +142,9 @@ export SYSCONF_CXXFLAGS = "${CXXFLAGS} -pipe -DQWS -fno-exceptions -frtti -DNO_D
# enable if gcc supports visibility
#export SYSCONF_CXXFLAGS = "${CXXFLAGS} -pipe -DQWS -fno-exceptions -frtti -fvisibility=hidden -DGCC_SUPPORTS_VISIBILITY -DNO_DEBUG ${EXTRA_DEFINES} -DUSE_BIDI"
export SYSCONF_LFLAGS = "${LDFLAGS} -lts"
-export SYSCONF_LFLAGS_mnci = "${LDFLAGS}"
export SYSCONF_MOC = "${STAGING_BINDIR_NATIVE}/moc"
export SYSCONF_UIC = "${STAGING_BINDIR_NATIVE}/uic"
-do_configure_prepend_mnci() {
- chmod -R a+w ${S}/src/kernel
- cp ${WORKDIR}/qkeyboard_qws.h ${S}/src/kernel
- cp ${WORKDIR}/qkeyboard_qws.cpp ${S}/src/kernel
- mkdir bin
- ln -sf ${STAGING_BINDIR_NATIVE}/moc bin/moc
- ln -sf ${STAGING_BINDIR_NATIVE}/uic bin/uic
-}
-
# generate uclibc and eabi configurations
do_configure() {
for f in ${S}/configs/linux-*-g++-shared; do
diff --git a/packages/qte/qte-common_2.3.12.inc b/packages/qte/qte-common_2.3.12.inc
index 97c3dc4c41..cf812de460 100644
--- a/packages/qte/qte-common_2.3.12.inc
+++ b/packages/qte/qte-common_2.3.12.inc
@@ -41,11 +41,6 @@ SRC_URI_append_e680 = "file://kernel-keymap.patch;patch=1;pnum=0 "
SRC_URI_append_tosa = "file://kernel-keymap.patch;patch=1;pnum=0 file://kernel-keymap-tosa.patch;patch=1 "
SRC_URI_append_jornada7xx = "file://kernel-keymap.patch;patch=1;pnum=0 file://ipaq_sound_fix.patch;patch=1 "
SRC_URI_append_jornada56x = "file://kernel-keymap.patch;patch=1;pnum=0 file://ipaq_sound_fix.patch;patch=1 "
-SRC_URI_append_mnci = "file://devfs.patch;patch=1 \
- file://mnci.patch;patch=1 \
- file://mnci-touchscreen.patch;patch=1 \
- file://qkeyboard_qws.h \
- file://qkeyboard_qws.cpp "
SRC_URI_append_h3600 = "file://ipaq-keyboard.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
SRC_URI_append_h3900 = "file://ipaq-keyboard.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
SRC_URI_append_h1910 = "file://ipaq-keyboard.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
diff --git a/packages/qte/qte-mt-static_2.3.10.bb b/packages/qte/qte-mt-static_2.3.10.bb
index 446b601adb..cb9e5aaceb 100644
--- a/packages/qte/qte-mt-static_2.3.10.bb
+++ b/packages/qte/qte-mt-static_2.3.10.bb
@@ -1,5 +1,5 @@
require qte-common_${PV}.inc
-PR = "r5"
+PR = "r7"
EXTRA_OECONF += "-static -thread"
diff --git a/packages/qte/qte-mt-static_2.3.12.bb b/packages/qte/qte-mt-static_2.3.12.bb
index c6e4f72667..9210d85dc3 100644
--- a/packages/qte/qte-mt-static_2.3.12.bb
+++ b/packages/qte/qte-mt-static_2.3.12.bb
@@ -1,6 +1,8 @@
require qte-common_${PV}.inc
PR = "r4"
+DEFAULT_PREFERENCE = "-1"
+
EXTRA_OECONF += "-static -thread"
do_stage() {
diff --git a/packages/qte/qte-mt_2.3.10.bb b/packages/qte/qte-mt_2.3.10.bb
index f9a6186c6c..d9ebc7ccfd 100644
--- a/packages/qte/qte-mt_2.3.10.bb
+++ b/packages/qte/qte-mt_2.3.10.bb
@@ -1,5 +1,5 @@
require qte-common_${PV}.inc
-PR = "r5"
+PR = "r13"
EXTRA_OECONF += "-thread"
diff --git a/packages/qte/qte-mt_2.3.12.bb b/packages/qte/qte-mt_2.3.12.bb
index 90e84fe38d..704081e639 100644
--- a/packages/qte/qte-mt_2.3.12.bb
+++ b/packages/qte/qte-mt_2.3.12.bb
@@ -1,6 +1,8 @@
require qte-common_${PV}.inc
PR = "r2"
+DEFAULT_PREFERENCE = "-1"
+
EXTRA_OECONF += "-thread"
PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/packages/qte/qte_2.3.10.bb b/packages/qte/qte_2.3.10.bb
index 8a18de98ae..3a21a12ca1 100644
--- a/packages/qte/qte_2.3.10.bb
+++ b/packages/qte/qte_2.3.10.bb
@@ -1,3 +1,3 @@
require qte-common_${PV}.inc
-PR = "r45"
+PR = "r51"
diff --git a/packages/quagga/files/volatiles.03_quagga b/packages/quagga/files/volatiles.03_quagga
new file mode 100644
index 0000000000..672fec6b92
--- /dev/null
+++ b/packages/quagga/files/volatiles.03_quagga
@@ -0,0 +1,2 @@
+# <type> <owner> <group> <mode> <path> <linksource>
+d quagga quagga 0755 /var/run/quagga none
diff --git a/packages/quagga/quagga.inc b/packages/quagga/quagga.inc
index e3c00c3f08..811eb15ea9 100644
--- a/packages/quagga/quagga.inc
+++ b/packages/quagga/quagga.inc
@@ -20,8 +20,6 @@ RDEPENDS_${PN}-doc = ""
RDEPENDS_${PN}-watchquagga = "${PN}"
# the "ip" command from busybox is not sufficient (flush by protocol flushes all routes)
RDEPENDS_${PN} += "iproute2"
-# These are required for vtysh
-RDEPENDS_${PN} += "ncurses readline"
# ${QUAGGASUBDIR} is deal with old versions. Set to "/attic" for old
# versions and leave it empty for recent versions.
@@ -30,7 +28,8 @@ SRC_URI = "http://www.quagga.net/download${QUAGGASUBDIR}/quagga-${PV}.tar.gz \
file://quagga.init \
file://quagga.default \
file://watchquagga.init \
- file://watchquagga.default"
+ file://watchquagga.default \
+ file://volatiles.03_quagga"
inherit autotools update-rc.d
@@ -60,11 +59,13 @@ EXTRA_OECONF = "--prefix=${prefix} \
do_install () {
# Install init script and default settings
- install -m 0755 -d ${D}${sysconfdir}/default ${D}${sysconfdir}/init.d ${D}${sysconfdir}/quagga
+ install -m 0755 -d ${D}${sysconfdir}/default ${D}${sysconfdir}/init.d \
+ ${D}${sysconfdir}/quagga ${D}${sysconfdir}/default/volatiles
install -m 0644 ${WORKDIR}/quagga.default ${D}${sysconfdir}/default/quagga
install -m 0644 ${WORKDIR}/watchquagga.default ${D}${sysconfdir}/default/watchquagga
install -m 0755 ${WORKDIR}/quagga.init ${D}${sysconfdir}/init.d/quagga
install -m 0755 ${WORKDIR}/watchquagga.init ${D}${sysconfdir}/init.d/watchquagga
+ install -m 0644 ${WORKDIR}/volatiles.03_quagga ${D}${sysconfdir}/default/volatiles/volatiles.03_quagga
# Install quagga
oe_runmake install DESTDIR=${D} prefix=${prefix} \
libexecdir=${libexecdir}/quagga \
@@ -90,6 +91,7 @@ FILES_${PN}-doc = "/usr/share/doc /usr/share/man /usr/share/info"
FILES_${PN}-watchquagga = "${libdir}/quagga/watchquagga ${sysconfdir}/default/watchquagga \
${sysconfdir}/init.d/watchquagga"
FILES_${PN} = "${bindir}/vtysh ${libdir}/quagga/zebra /usr/lib/libzebra*.so.* \
+ ${sysconfdir}/default/volatiles/volatiles.03_quagga \
${sysconfdir}/quagga \
${sysconfdir}/default/quagga ${sysconfdir}/init.d/quagga"
@@ -98,8 +100,8 @@ CONFFILES_${PN} = "${sysconfdir}/default/quagga"
CONFFILES_${PN}-watchquagga = "${sysconfdir}/default/watchquagga"
# Stop the names being rewritten due to the internal shared libraries
-PKG_${PN}-ospfd = "${PN}-ospfd"
-PKG_${PN}-ospfclient = "${PN}-ospfclient"
+DEBIAN_NOAUTONAME_${PN}-ospfd = "1"
+DEBIAN_NOAUTONAME_${PN}-ospfclient = "1"
# Main init script starts all deamons
# Seperate init script for watchquagga
@@ -113,7 +115,10 @@ INITSCRIPT_PARAMS_${PN}-watchquagga = "defaults 90 10"
pkg_postinst_${PN} () {
grep -q quagga: /etc/group || addgroup quagga
grep -q quaggavty: /etc/group || addgroup quaggavty
- grep -q quagga: /etc/passwd || adduser --disabled-password --home=/var/run/quagga/ --ingroup quagga -g "Quagga routing suite" quagga
+ grep -q quagga: /etc/passwd || \
+ adduser --disabled-password --home=/var/run/quagga/ --system \
+ --ingroup quagga --no-create-home -g "Quagga routing suite" quagga
+ /etc/init.d/populate-volatile.sh update
}
# Stop apps before uninstall
diff --git a/packages/quagga/quagga_0.99.4.bb b/packages/quagga/quagga_0.99.4.bb
index 138c8ce98f..5231a5da55 100644
--- a/packages/quagga/quagga_0.99.4.bb
+++ b/packages/quagga/quagga_0.99.4.bb
@@ -1,3 +1,3 @@
-PR = "r3"
+PR = "r5"
require quagga.inc
diff --git a/packages/quagga/quagga_0.99.6.bb b/packages/quagga/quagga_0.99.6.bb
index 6bcc251730..0595a3c94b 100644
--- a/packages/quagga/quagga_0.99.6.bb
+++ b/packages/quagga/quagga_0.99.6.bb
@@ -1,3 +1,3 @@
-PR = "r0"
+PR = "r2"
require quagga.inc
diff --git a/packages/quagga/quagga_0.99.7.bb b/packages/quagga/quagga_0.99.7.bb
new file mode 100644
index 0000000000..6bcc251730
--- /dev/null
+++ b/packages/quagga/quagga_0.99.7.bb
@@ -0,0 +1,3 @@
+PR = "r0"
+
+require quagga.inc
diff --git a/packages/quilt/quilt-native.inc b/packages/quilt/quilt-native.inc
index b7ddd8bce8..5861b2229c 100644
--- a/packages/quilt/quilt-native.inc
+++ b/packages/quilt/quilt-native.inc
@@ -1,7 +1,7 @@
require quilt_${PV}.inc
SRC_URI_append_build-darwin = "? file://non-gnu.patch;patch=1 "
-RDEPENDS_${PN} = "diffstat-native patch-native bzip2-native"
+RDEPENDS_${PN} = "diffstat-native patch-native bzip2-native util-linux-native"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/quilt-${PV}"
INHIBIT_AUTOTOOLS_DEPS = "1"
diff --git a/packages/quilt/quilt.inc b/packages/quilt/quilt.inc
index b1d19daf45..ee90455fca 100644
--- a/packages/quilt/quilt.inc
+++ b/packages/quilt/quilt.inc
@@ -2,6 +2,7 @@ DESCRIPTION = "Tool to work with series of patches."
HOMEPAGE = "http://savannah.nongnu.org/projects/quilt/"
SECTION = "devel"
LICENSE = "GPL"
+PR = "r1"
SRC_URI = "http://download.savannah.gnu.org/releases/quilt/quilt-${PV}.tar.gz "
diff --git a/packages/quilt/quilt_0.39.bb b/packages/quilt/quilt_0.39.bb
index 9a08b19abd..5d8ae086c2 100644
--- a/packages/quilt/quilt_0.39.bb
+++ b/packages/quilt/quilt_0.39.bb
@@ -1,4 +1,4 @@
-RDEPENDS_${PN} += "patch diffstat bzip2"
+RDEPENDS_${PN} += "patch diffstat bzip2 util-linux"
require quilt_${PV}.inc
diff --git a/packages/quilt/quilt_0.45.bb b/packages/quilt/quilt_0.45.bb
index cf96cc9bc9..d809c83518 100644
--- a/packages/quilt/quilt_0.45.bb
+++ b/packages/quilt/quilt_0.45.bb
@@ -1,4 +1,4 @@
-RDEPENDS_${PN} += "patch diffstat bzip2"
+RDEPENDS_${PN} += "patch diffstat bzip2 util-linux"
require quilt_${PV}.inc
diff --git a/packages/radlib/radlib-common.inc b/packages/radlib/radlib-common.inc
index bb289bf74a..1eb9bc0d5f 100644
--- a/packages/radlib/radlib-common.inc
+++ b/packages/radlib/radlib-common.inc
@@ -1,7 +1,7 @@
-SECTION = "libs"
-LICENSE = "BSD"
DESCRIPTION = "radlib is a rapid application development library for unix interprocess communications, sockets, SHA utilities, CRC utilities and much more."
HOMEPAGE = "http://www.radlib.teel.ws/"
+SECTION = "libs"
+LICENSE = "BSD"
SRC_URI = "${SOURCEFORGE_MIRROR}/radlib/radlib-${PV}.tar.gz \
file://Makefile.am.patch;patch=1"
@@ -17,32 +17,32 @@ do_compile_prepend() {
rm -f ${STAGING_LIBDIR}/librad.so.0.0.0
}
-headers = "radbuffers.h \
- radconffile.h \
- radcrc.h \
- raddebug.h \
- radevents.h \
- radlist.h \
- radmsgLog.h \
- radmsgRouter.h \
- radprocess.h \
- radproclist.h \
- radprocutils.h \
- radqueue.h \
- radsemaphores.h \
- radsha.h \
- radshmem.h \
- radsocket.h \
- radsortlist.h \
- radstack.h \
- radstates.h \
- radsysdefs.h \
- radsystem.h \
- radsysutils.h \
- radtimers.h \
- radtimeUtils.h \
- raddatabase.h \
- radUDPsocket.h"
+headers = "radbuffers.h \
+ radconffile.h \
+ radcrc.h \
+ raddebug.h \
+ radevents.h \
+ radlist.h \
+ radmsgLog.h \
+ radmsgRouter.h \
+ radprocess.h \
+ radproclist.h \
+ radprocutils.h \
+ radqueue.h \
+ radsemaphores.h \
+ radsha.h \
+ radshmem.h \
+ radsocket.h \
+ radsortlist.h \
+ radstack.h \
+ radstates.h \
+ radsysdefs.h \
+ radsystem.h \
+ radsysutils.h \
+ radtimers.h \
+ radtimeUtils.h \
+ raddatabase.h \
+ radUDPsocket.h"
do_stage () {
cd ${S}/src/.libs
diff --git a/packages/radvd/files/.mtn2git_empty b/packages/radvd/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/radvd/files/.mtn2git_empty
diff --git a/packages/radvd/files/radvd.conf.empty b/packages/radvd/files/radvd.conf.empty
new file mode 100644
index 0000000000..c006f86313
--- /dev/null
+++ b/packages/radvd/files/radvd.conf.empty
@@ -0,0 +1,18 @@
+# NOTE: there is no such thing as a working "by-default" configuration file.
+# At least the prefix needs to be specified. Please consult the radvd.conf(5)
+# man page and/or /usr/share/doc/radvd-*/radvd.conf.example for help.
+#
+#
+#interface eth0
+#{
+# AdvSendAdvert on;
+# MinRtrAdvInterval 30;
+# MaxRtrAdvInterval 100;
+# prefix 2001:db8:1:0::/64
+# {
+# AdvOnLink on;
+# AdvAutonomous on;
+# AdvRouterAddr off;
+# };
+#
+#};
diff --git a/packages/radvd/files/radvd.init b/packages/radvd/files/radvd.init
new file mode 100755
index 0000000000..5415230285
--- /dev/null
+++ b/packages/radvd/files/radvd.init
@@ -0,0 +1,115 @@
+#! /bin/sh
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/radvd
+NAME=radvd
+DESC=radvd
+CONFIG=/etc/radvd.conf
+SAVED_SETTINGS=/var/run/radvd/saved-settings
+PIDFILE=/var/run/radvd/radvd.pid
+OPTIONS="-u radvd -p $PIDFILE"
+
+test -x $DAEMON || exit 0
+
+set -e
+
+# Check for IPv6 support in kernel
+if test \! -e /proc/sys/net/ipv6; then
+ echo "IPv6 support must be enabled in the kernel for $DESC to work."
+ exit
+fi
+
+save_settings()
+{
+ local file=$1
+
+ rm -f $file
+ for if_conf in /proc/sys/net/ipv6/conf/*; do
+ echo -e "$if_conf/forwarding\t `cat $if_conf/forwarding`" >> $file
+ done
+ return 0
+}
+
+restore_settings()
+{
+ file=$1
+
+ if [ ! -f $file ]; then
+ echo "$0: warning: cannot restore settings"
+ return
+ fi
+
+ (
+ while read f value; do
+ if [ -w $f ]; then
+ echo $value > $f
+ fi
+ done
+ ) < $file
+}
+
+chkconfig() {
+ if [ ! -e $CONFIG -o ! -s $CONFIG ]; then
+ echo ""
+ echo "* $CONFIG does not exist or is empty."
+ echo "* See /usr/share/doc/radvd/examples/simple-radvd.conf for a simple"
+ echo "* configuration suitable for most systems, and radvd.conf(5)"
+ echo "* for configuration file syntax. radvd will *not* be started."
+ exit 0
+ fi
+}
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ chkconfig
+ save_settings $SAVED_SETTINGS
+
+ # We must enable IPv6 forwarding for radvd to work
+ echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
+
+ # Check for stale pidfile; radvd won't start if one is lying around
+ if [ -f $PIDFILE ] && ! ps `cat $PIDFILE` > /dev/null; then
+ rm -f $PIDFILE
+ fi
+ if ! start-stop-daemon --oknodo --start --pidfile $PIDFILE \
+ --exec $DAEMON -- $OPTIONS; then
+ echo "failed." && exit 1
+ fi
+ echo "$NAME."
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --oknodo --stop --pidfile $PIDFILE \
+ --exec $DAEMON
+ restore_settings $SAVED_SETTINGS
+ rm -f $SAVED_SETTINGS
+ echo "$NAME."
+ ;;
+ reload|force-reload)
+ echo "Reloading $DESC configuration files."
+ start-stop-daemon --stop --signal HUP --quiet --pidfile \
+ $PIDFILE --exec $DAEMON
+ ;;
+ restart)
+ chkconfig
+ echo -n "Restarting $DESC: "
+ if ! start-stop-daemon --stop --quiet --pidfile \
+ $PIDFILE --exec $DAEMON; then
+ # stop failed, so we were not running
+ save_settings $SAVED_SETTINGS
+ echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
+ fi
+ sleep 1
+ start-stop-daemon --start --quiet --pidfile \
+ $PIDFILE --exec $DAEMON -- $OPTIONS
+ echo "$NAME."
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/packages/radvd/files/volatiles.03_radvd b/packages/radvd/files/volatiles.03_radvd
new file mode 100644
index 0000000000..89256a40e4
--- /dev/null
+++ b/packages/radvd/files/volatiles.03_radvd
@@ -0,0 +1,2 @@
+# <type> <owner> <group> <mode> <path> <linksource>
+d radvd root 0755 /var/run/radvd none
diff --git a/packages/radvd/radvd.inc b/packages/radvd/radvd.inc
new file mode 100644
index 0000000000..f73f8c0583
--- /dev/null
+++ b/packages/radvd/radvd.inc
@@ -0,0 +1,41 @@
+DESCRIPTION = "IPv6 router advertisement daemon"
+HOMEPAGE = "http://www.litech.org/radvd/"
+SECTION = "console/network"
+LICENSE = "BSD"
+DEPENDS = "flex-native"
+
+SRC_URI = "http://v6web.litech.org/radvd/dist/radvd-${PV}.tar.gz;md5sum=${MD5SUM} \
+ file://radvd.init \
+ file://volatiles.03_radvd \
+ file://radvd.conf.empty"
+
+S = "${WORKDIR}/radvd-${PV}"
+
+inherit autotools update-rc.d
+
+do_install_append () {
+ install -m 0755 -d ${D}${sysconfdir}/init.d \
+ ${D}${sysconfdir}/default/volatiles \
+ ${D}${docdir}/radvd
+ # Install init script and volatiles
+ install -m 0755 ${WORKDIR}/radvd.init ${D}${sysconfdir}/init.d/radvd
+ install -m 0644 ${WORKDIR}/volatiles.03_radvd ${D}${sysconfdir}/default/volatiles/volatiles.03_radvd
+ # Initial configuration
+ # install -m 0644 ${WORKDIR}/radvd.conf.empty ${D}${sysconfdir}/radvd.conf
+ # Documentation
+ for i in ${WORKDIR}/radvd.conf.empty radvd.conf.example README; do \
+ install -m 0644 $i ${D}${docdir}/radvd; \
+ done
+}
+
+#CONFFILES_${PN} = "${sysconfdir}/radvd.conf"
+
+INITSCRIPT_NAME = "radvd"
+INITSCRIPT_PARAMS = "defaults 20 80"
+
+pkg_postinst_${PN} () {
+ grep -q radvd: /etc/passwd || \
+ adduser --disabled-password --home=/var/run/radvd/ --system \
+ --ingroup nogroup --no-create-home -g "IPv6 router advertisement daemon" radvd
+ /etc/init.d/populate-volatile.sh update
+}
diff --git a/packages/radvd/radvd_0.7.2.bb b/packages/radvd/radvd_0.7.2.bb
index f11e81c7d3..e22cc5e96b 100644
--- a/packages/radvd/radvd_0.7.2.bb
+++ b/packages/radvd/radvd_0.7.2.bb
@@ -1,9 +1,7 @@
-SECTION = "console/network"
-DESCRIPTION = "IPv6 router advertisement daemon"
-LICENSE = "BSD"
-SRC_URI = "http://v6web.litech.org/radvd/dist/radvd-${PV}.tar.gz \
- file://automake.patch;patch=1"
-S = "${WORKDIR}/radvd-${PV}"
-DEPENDS = "flex"
+PR = "r2"
-inherit autotools
+SRC_URI_append += "file://automake.patch;patch=1 "
+
+require radvd.inc
+
+MD5SUM = "26ea468b2323e44cf827ae5f84d18dc8"
diff --git a/packages/radvd/radvd_1.0.bb b/packages/radvd/radvd_1.0.bb
new file mode 100644
index 0000000000..6d44ff2f94
--- /dev/null
+++ b/packages/radvd/radvd_1.0.bb
@@ -0,0 +1,5 @@
+PR = "r1"
+
+require radvd.inc
+
+MD5SUM = "8bce4a21757cf069f5a69e2f9bee9e5b"
diff --git a/packages/redboot-utils/.mtn2git_empty b/packages/redboot-utils/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/redboot-utils/.mtn2git_empty
diff --git a/packages/redboot-utils/fconfig_20060419.bb b/packages/redboot-utils/fconfig_20060419.bb
new file mode 100644
index 0000000000..561718f9b2
--- /dev/null
+++ b/packages/redboot-utils/fconfig_20060419.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Tool to edit the Redboot config from userspace"
+PR = "r1"
+
+SRC_URI = "http://andrzejekiert.ovh.org/software/fconfig/fconfig-20060419.tar.gz"
+
+S = ${WORKDIR}/fconfig
+do_compile() {
+ ${MAKE}
+}
+
+do_install() {
+ install -d ${D}/${sbindir}
+ install -m 755 ${S}/fconfig ${D}/${sbindir}
+}
diff --git a/packages/redboot-utils/fis_1.0.bb b/packages/redboot-utils/fis_1.0.bb
new file mode 100644
index 0000000000..d1170b6ba8
--- /dev/null
+++ b/packages/redboot-utils/fis_1.0.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Tool to edit the Redboot FIS partition layout from userspace"
+PR = "r2"
+
+SRC_URI = "http://svn.chezphil.org/utils/trunk/fis.c \
+ svn://svn.chezphil.org/;module=libpbe;proto=http"
+
+do_compile() {
+ ${CC} --std=c99 -Os -W -o fis ${WORKDIR}/fis.c
+}
+
+do_install() {
+ ${STRIP} ${WORKDIR}/fis-${PV}/fis
+
+ install -d ${D}/${sbindir}
+ install -m 755 ${WORKDIR}/fis-${PV}/fis ${D}/${sbindir}
+}
diff --git a/packages/reiser4progs/reiser4progs_1.0.4.bb b/packages/reiser4progs/reiser4progs_1.0.4.bb
index 8185b8df89..c54b2f1ba4 100644
--- a/packages/reiser4progs/reiser4progs_1.0.4.bb
+++ b/packages/reiser4progs/reiser4progs_1.0.4.bb
@@ -5,7 +5,7 @@ PR = "r1"
DESCRIPTION = "User-level tools for Reiser4 filesystems"
HOMEPAGE = "http://www.namesys.com"
SECTION = "base"
-LICENSE = "GPL-2"
+LICENSE = "GPLv2"
SRC_URI = "ftp://ftp.namesys.com/pub/${PN}/old-versions/${P}.tar.gz \
file://oid40.c.patch;patch=1 \
diff --git a/packages/rfakeap/.mtn2git_empty b/packages/rfakeap/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/rfakeap/.mtn2git_empty
diff --git a/packages/rfakeap/rfakeap_0.2.bb b/packages/rfakeap/rfakeap_0.2.bb
new file mode 100644
index 0000000000..1854e20286
--- /dev/null
+++ b/packages/rfakeap/rfakeap_0.2.bb
@@ -0,0 +1,23 @@
+SECTION = "console/network"
+DESCRIPTION = "Raw Fake AP"
+HOMEPAGE = "http://rfakeap.tuxfamily.org/"
+LICENSE = "GPLv2"
+MAINTAINER = "Zero_Chaos <sidhayn@hotmail.com>"
+DEPENDS = "libpcap"
+PV="0.2"
+PR="r1"
+
+SRC_URI = "http://rfakeap.tuxfamily.org/rfakeap-0.2.tar.gz"
+
+#EXTRA_OEMAKE = "CFLAGS='${CFLAGS} -O3'"
+
+oe_compile() {
+ oe_runmake CC="${CC}" CXX="${CXX}" CFLAGS="-O3 ${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LD="${LD}" LDFLAGS="${LDFLAGS}"
+}
+
+do_install() {
+ install -d ${D}/${sbindir}
+ install -d ${D}/${sysconfdir}
+ install -m 0755 ${WORKDIR}/${PN}-${PV}/rfakeap ${D}/${sbindir}
+# install -m 0644 ap_manuf ${D}/${sysconfdir}
+}
diff --git a/packages/rglueap/.mtn2git_empty b/packages/rglueap/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/rglueap/.mtn2git_empty
diff --git a/packages/rglueap/rglueap_0.1.bb b/packages/rglueap/rglueap_0.1.bb
new file mode 100644
index 0000000000..c26bf31eaa
--- /dev/null
+++ b/packages/rglueap/rglueap_0.1.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Raw Glue AP, wireless intrusion detection"
+AUTHOR = "Laurent Butti"
+HOMEPAGE = "http://rfakeap.tuxfamily.org/#Raw_Glue_AP"
+SECTION = "console/network"
+PRIORITY = "optional"
+LICENSE = "GPLv2"
+DEPENDS = "libpcap"
+
+SRC_URI = "http://rfakeap.tuxfamily.org/${P}.tar.gz"
+
+LDFLAGS += "-lpcap"
+
+do_install() {
+ install -d ${D}/${sbindir}
+ install -m 0755 rglueap ${D}/${sbindir}
+}
+
diff --git a/packages/rp-pppoe/rp-pppoe-3.8/.mtn2git_empty b/packages/rp-pppoe/rp-pppoe-3.8/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/rp-pppoe/rp-pppoe-3.8/.mtn2git_empty
diff --git a/packages/rp-pppoe/rp-pppoe-3.8/configure_in_cross.patch b/packages/rp-pppoe/rp-pppoe-3.8/configure_in_cross.patch
new file mode 100644
index 0000000000..4ea5908737
--- /dev/null
+++ b/packages/rp-pppoe/rp-pppoe-3.8/configure_in_cross.patch
@@ -0,0 +1,86 @@
+--- rp-pppoe-3.8/src/configure.in 2007/04/30 07:21:25 1.1
++++ rp-pppoe-3.8/src/configure.in 2007/04/30 07:22:06
+@@ -5,6 +5,12 @@
+ dnl pppd directory for kernel-mode PPPoE
+ PPPD_DIR=ppp-2.4.1.pppoe2
+
++dnl hard code some paths
++PPPD=/usr/sbin/pppd
++ID=/usr/bin/id
++AC_ARG_VAR(PPPD)
++AC_ARG_VAR(ID)
++
+ AC_CONFIG_HEADER(config.h)
+
+ AC_PREFIX_DEFAULT(/usr)
+@@ -131,15 +137,10 @@
+ AC_CHECK_SIZEOF(unsigned int)
+ AC_CHECK_SIZEOF(unsigned long)
+
+-dnl Check for location of pppd
+-AC_PATH_PROG(PPPD, pppd, NOTFOUND, $PATH:/sbin:/usr/sbin:/usr/local/sbin)
+ AC_PATH_PROG(ECHO, echo, echo)
+
+-dnl Check for setsid (probably Linux-specific)
+-AC_PATH_PROG(SETSID, setsid, "", $PATH:/sbin:/usr/sbin:/usr/local/sbin)
+-
+ dnl Check for an "id" which accepts "-u" option -- hack for Solaris.
+-AC_PATH_PROG(ID, id, "", /usr/xpg4/bin:$PATH)
++dnl AC_PATH_PROG(ID, id, "", /usr/xpg4/bin:$PATH)
+
+ dnl Check for Linux-specific kernel support for PPPoE
+ AC_MSG_CHECKING(for Linux 2.4.X kernel-mode PPPoE support)
+@@ -183,44 +184,8 @@
+ CFLAGS="$CFLAGS -Wall -Wstrict-prototypes -ansi"
+ fi
+
+-dnl If we couldn't find pppd, die
+-if test "$PPPD" = "NOTFOUND"; then
+- AC_MSG_WARN([*** Oops! I couldn't find pppd, the PPP daemon anywhere.])
+- AC_MSG_WARN([*** You must install pppd, version 2.3.10 or later.])
+- AC_MSG_WARN([*** I will keep going, but it may not work.])
+- PPPD=pppd
+-fi
+-
+-dnl Figure out pppd version. 2.3.7 to 2.3.9 -- issue warning. Less than
+-dnl 2.3.7 -- stop
+-
+-PPPD_VERSION=`$PPPD --version 2>&1 | awk ' /version/ {print $NF}'`
+-
+-case "$PPPD_VERSION" in
+-1.*|2.0.*|2.1.*|2.2.*|2.3.0|2.3.1|2.3.2|2.3.3|2.3.4|2.3.5|2.3.6)
+- AC_MSG_WARN([*** Oops! Your version of pppd is $PPPD_VERSION, which is too old.])
+- AC_MSG_WARN([*** You need at least 2.3.7 (2.3.10 or newer recommended.])
+- AC_MSG_WARN([*** I will keep going, but it may not work.])
+- ;;
+-
+-2.3.7|2.3.8|2.3.9)
+- AC_MSG_WARN([*** Warning. Your version of pppd is $PPPD_VERSION. You will])
+- AC_MSG_WARN([*** not be able to use connect-on-demand. Upgrade to pppd])
+- AC_MSG_WARN([*** 2.3.10 or newer if you need connect-on-demand.])
+- ;;
+-
+-2*|3*|4*|5*|6*|7*|8*|9*)
+- ;;
+-
+-*)
+- AC_MSG_WARN([*** Oops. I cannot figure out what version of pppd you have.])
+- AC_MSG_WARN([*** All I got back was '$PPPD_VERSION'])
+- AC_MSG_WARN([*** I will keep going, but it may not work.])
+- ;;
+-esac
+-
+ dnl Figure out packing order of structures
+-AC_MSG_CHECKING([packing order of bit fields])
++AC_CACHE_CHECK([packing order of bit fields],rpppoe_cv_pack_bitfields,[
+ AC_TRY_RUN([
+ union foo {
+ struct bar {
+@@ -245,6 +210,7 @@
+ }
+ }], rpppoe_cv_pack_bitfields=normal, rpppoe_cv_pack_bitfields=rev,
+ $ECHO "no defaults for cross-compiling"; exit 0)
++])
+
+ if test "$rpppoe_cv_pack_bitfields" = "rev" ; then
+ AC_MSG_RESULT(reversed)
diff --git a/packages/rp-pppoe/rp-pppoe-3.8/pppoe-no-timeout.patch b/packages/rp-pppoe/rp-pppoe-3.8/pppoe-no-timeout.patch
new file mode 100644
index 0000000000..a10a1b87e9
--- /dev/null
+++ b/packages/rp-pppoe/rp-pppoe-3.8/pppoe-no-timeout.patch
@@ -0,0 +1,16 @@
+Don't time out and give up re-trying PPPoE. We want PPPD to control
+if we give up or not. From debian. This fixes lots of bugs and makes
+it compatible with the default debian version.
+
+
+--- rp-pppoe-3.8.orig/configs/pppoe.conf
++++ rp-pppoe-3.8/configs/pppoe.conf
+@@ -66,7 +66,7 @@
+ # to connect forever after pppoe-start is called. Otherwise, it will
+ # give out after CONNECT_TIMEOUT seconds and will not attempt to
+ # connect again, making it impossible to reach.
+-CONNECT_TIMEOUT=30
++CONNECT_TIMEOUT=0
+
+ # How often in seconds pppoe-start polls to check if link is up
+ CONNECT_POLL=2
diff --git a/packages/rp-pppoe/rp-pppoe-3.8/pppoe-src-restrictions.patch b/packages/rp-pppoe/rp-pppoe-3.8/pppoe-src-restrictions.patch
new file mode 100644
index 0000000000..e7e1c2ee36
--- /dev/null
+++ b/packages/rp-pppoe/rp-pppoe-3.8/pppoe-src-restrictions.patch
@@ -0,0 +1,18 @@
+Relax restrictions on the PPPoE src address, as per debian bug
+293811:
+
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=293811
+
+--- rp-pppoe-3.8.orig/src/discovery.c
++++ rp-pppoe-3.8/src/discovery.c
+@@ -376,8 +376,8 @@
+ if (!packetIsForMe(conn, &packet)) continue;
+
+ if (packet.code == CODE_PADO) {
+- if (NOT_UNICAST(packet.ethHdr.h_source)) {
+- printErr("Ignoring PADO packet from non-unicast MAC address");
++ if (BROADCAST(packet.ethHdr.h_source)) {
++ printErr("Ignoring broadcast PADO packet");
+ continue;
+ }
+ parsePacket(&packet, parsePADOTags, &pc);
diff --git a/packages/rp-pppoe/rp-pppoe_3.8.bb b/packages/rp-pppoe/rp-pppoe_3.8.bb
new file mode 100644
index 0000000000..c4d5ff88d2
--- /dev/null
+++ b/packages/rp-pppoe/rp-pppoe_3.8.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "A user-mode PPPoE client and server suite for Linux"
+HOMEPAGE = "http://www.roaringpenguin.com/en/penguin/openSourceProducts/rpPppoe"
+SECTION = "console/network"
+LICENSE = "GPLv2"
+RDEPENDS = "ppp"
+PR = "r0"
+
+SRC_URI = "http://www.roaringpenguin.com/files/download/${P}.tar.gz \
+ file://configure_in_cross.patch;patch=1;pnum=2 \
+ file://pppoe-src-restrictions.patch;patch=1;pnum=2"
+
+S = "${WORKDIR}/${P}/src"
+
+inherit autotools
+
+do_install() {
+ # Set timeout to 0. Fixes lots of reconnect issues
+ # Can't patch this in because it's outside of what we have {S} set to.
+ sed -i -e 's,\(CONNECT_TIMEOUT=\)30,\10,g' ${S}/../configs/pppoe.conf
+ # Install
+ oe_runmake -C ${S} RPM_INSTALL_ROOT=${D} docdir=${docdir} install
+}
+
+pkg_postinst() {
+ if [ x"$D" != "x" ]; then
+ exit 1
+ fi
+ chmod 4755 ${sbindir}/pppoe
+}
diff --git a/packages/ruby/files/.mtn2git_empty b/packages/ruby/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ruby/files/.mtn2git_empty
diff --git a/packages/ruby/files/disable_wide_getaddrinfo_check.patch b/packages/ruby/files/disable_wide_getaddrinfo_check.patch
new file mode 100644
index 0000000000..82137896b9
--- /dev/null
+++ b/packages/ruby/files/disable_wide_getaddrinfo_check.patch
@@ -0,0 +1,16 @@
+--- packages/ruby/ruby-1.8.5/disable_wide_getaddrinfo_check.patch f667776fd8760b7048cc9617930112347b0ef2c0
++++ packages/ruby/ruby-1.8.5/disable_wide_getaddrinfo_check.patch f667776fd8760b7048cc9617930112347b0ef2c0
+@@ -0,0 +1,13 @@
++--- ruby-1.8.5/ext/socket/extconf.rb.orig 2006-12-30 15:12:31.000000000 +1100
+++++ ruby-1.8.5/ext/socket/extconf.rb 2006-12-30 15:16:24.000000000 +1100
++@@ -216,6 +216,10 @@
++ }
++ EOF
++ end
+++# Ignore the actual result of the above test and assume that
+++# everything is OK.
+++getaddr_info_ok = true
+++
++ if ipv6 and not getaddr_info_ok
++ abort <<EOS
++
diff --git a/packages/ruby/files/extmk_run.patch b/packages/ruby/files/extmk_run.patch
new file mode 100644
index 0000000000..57926f51b0
--- /dev/null
+++ b/packages/ruby/files/extmk_run.patch
@@ -0,0 +1,15 @@
+============================================================
+--- packages/ruby/ruby-1.8.5/extmk_run.patch d9738b5a71e2f9a98d009af9fd0ef1ceaff9ef48
++++ packages/ruby/ruby-1.8.5/extmk_run.patch d9738b5a71e2f9a98d009af9fd0ef1ceaff9ef48
+@@ -0,0 +1,11 @@
++--- ruby-1.8.5/common.mk.orig 2006-12-30 13:07:32.000000000 +1100
+++++ ruby-1.8.5/common.mk 2006-12-30 13:08:32.000000000 +1100
++@@ -56,7 +56,7 @@
++ --make="$(MAKE)" \
++ --mflags="$(MFLAGS)" \
++ --make-flags="$(MAKEFLAGS)"
++-EXTMK_ARGS = $(SCRIPT_ARGS) --extout="$(EXTOUT)" --extension $(EXTS) --extstatic $(EXTSTATIC) --
+++EXTMK_ARGS = $(SCRIPT_ARGS) --with-ldflags="%%TARGET_LDFLAGS%%" --with-cflags="%%TARGET_CFLAGS%%" --extout="$(EXTOUT)" --extension $(EXTS) --extstatic $(EXTSTATIC) --
++
++ all: $(MKFILES) $(PREP) $(RBCONFIG) $(LIBRUBY)
++ @$(MINIRUBY) $(srcdir)/ext/extmk.rb $(EXTMK_ARGS)
diff --git a/packages/ruby/ruby-native_1.8.4.bb b/packages/ruby/ruby-native_1.8.4.bb
deleted file mode 100644
index c73e905ef4..0000000000
--- a/packages/ruby/ruby-native_1.8.4.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require ruby_${PV}.bb
-inherit native
-DEPENDS = ""
diff --git a/packages/ruby/ruby-native_1.8.5.bb b/packages/ruby/ruby-native_1.8.5.bb
index d5ccae8262..e4d2a3361e 100644
--- a/packages/ruby/ruby-native_1.8.5.bb
+++ b/packages/ruby/ruby-native_1.8.5.bb
@@ -1,3 +1,2 @@
-include ruby_${PV}.bb
+require ruby.inc
inherit native
-DEPENDS = ""
diff --git a/packages/ruby/ruby.inc b/packages/ruby/ruby.inc
new file mode 100644
index 0000000000..9fe8333f6f
--- /dev/null
+++ b/packages/ruby/ruby.inc
@@ -0,0 +1,25 @@
+DESCRIPTION = "Ruby is an interpreted scripting language \
+for quick and easy object-oriented programming."
+SECTION = "devel/ruby"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+SRC_URI = "ftp://ftp.ruby-lang.org/pub/ruby/ruby-${PV}.tar.gz \
+ file://extmk_run.patch;patch=1 \
+ file://disable_wide_getaddrinfo_check.patch;patch=1"
+
+S = "${WORKDIR}/ruby-${PV}"
+
+inherit autotools
+
+# This snippet lets compiled extensions which rely on external libraries,
+# such as zlib, compile properly. If we don't do this, then when extmk.rb
+# runs, it uses the native libraries instead of the target libraries, and so
+# none of the linking operations succeed -- which makes extconf.rb think
+# that the libraries aren't available and hence that the extension can't be
+# built.
+
+do_configure_prepend() {
+ sed -i "s#%%TARGET_CFLAGS%%#$TARGET_CFLAGS#; s#%%TARGET_LDFLAGS%%#$TARGET_LDFLAGS#" ${S}/common.mk
+ rm -rf ${S}/ruby/
+}
diff --git a/packages/ruby/ruby_1.8.3.bb b/packages/ruby/ruby_1.8.3.bb
deleted file mode 100644
index 981f826dc6..0000000000
--- a/packages/ruby/ruby_1.8.3.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "Ruby is an interpreted scripting language \
-for quick and easy object-oriented programming."
-SECTION = "devel/ruby"
-DEPENDS = "ruby-native"
-PRIORITY = "optional"
-LICENSE = "GPL"
-
-SRC_URI = "ftp://ftp.ruby-lang.org/pub/ruby/ruby-${PV}.tar.gz"
-S = "${WORKDIR}/ruby-${PV}"
-
-inherit autotools
diff --git a/packages/ruby/ruby_1.8.4.bb b/packages/ruby/ruby_1.8.4.bb
deleted file mode 100644
index 981f826dc6..0000000000
--- a/packages/ruby/ruby_1.8.4.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "Ruby is an interpreted scripting language \
-for quick and easy object-oriented programming."
-SECTION = "devel/ruby"
-DEPENDS = "ruby-native"
-PRIORITY = "optional"
-LICENSE = "GPL"
-
-SRC_URI = "ftp://ftp.ruby-lang.org/pub/ruby/ruby-${PV}.tar.gz"
-S = "${WORKDIR}/ruby-${PV}"
-
-inherit autotools
diff --git a/packages/ruby/ruby_1.8.5.bb b/packages/ruby/ruby_1.8.5.bb
index 981f826dc6..d06e9e0943 100644
--- a/packages/ruby/ruby_1.8.5.bb
+++ b/packages/ruby/ruby_1.8.5.bb
@@ -1,11 +1,2 @@
-DESCRIPTION = "Ruby is an interpreted scripting language \
-for quick and easy object-oriented programming."
-SECTION = "devel/ruby"
-DEPENDS = "ruby-native"
-PRIORITY = "optional"
-LICENSE = "GPL"
-
-SRC_URI = "ftp://ftp.ruby-lang.org/pub/ruby/ruby-${PV}.tar.gz"
-S = "${WORKDIR}/ruby-${PV}"
-
-inherit autotools
+require ruby.inc
+DEPENDS = "ruby-native zlib openssl"
diff --git a/packages/rxvt-unicode/rxvt-unicode_cvs.bb b/packages/rxvt-unicode/rxvt-unicode_cvs.bb
index fca5be9370..0ee35f78c8 100644
--- a/packages/rxvt-unicode/rxvt-unicode_cvs.bb
+++ b/packages/rxvt-unicode/rxvt-unicode_cvs.bb
@@ -7,7 +7,7 @@ output. It also supports mixing multiple fonts at the \
same time, including Xft fonts."
DEFAULT_PREFERENCE = "-1"
LICENSE = "GPL"
-SRC_URI = "cvs://anonymous@cvs.schmorp.de/schmorpforge;module=rxvt-unicode \
+SRC_URI = "cvs://anonymous@cvs.schmorp.de/schmorpforge;module=rxvt-unicode;port=636 \
file://xwc.patch;patch=1 \
file://signedchar.patch;patch=1 \
file://makefile.patch;patch=1"
diff --git a/packages/s3c2410-utils/.mtn2git_empty b/packages/s3c2410-utils/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/s3c2410-utils/.mtn2git_empty
diff --git a/packages/s3c2410-utils/files/.mtn2git_empty b/packages/s3c2410-utils/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/s3c2410-utils/files/.mtn2git_empty
diff --git a/packages/s3c2410-utils/files/s3c2410_boot_usb-20060807.tar.bz2 b/packages/s3c2410-utils/files/s3c2410_boot_usb-20060807.tar.bz2
new file mode 100644
index 0000000000..8ddb3cc83d
--- /dev/null
+++ b/packages/s3c2410-utils/files/s3c2410_boot_usb-20060807.tar.bz2
Binary files differ
diff --git a/packages/s3c2410-utils/files/sjf2410-linux-20060807.tar.bz2 b/packages/s3c2410-utils/files/sjf2410-linux-20060807.tar.bz2
new file mode 100644
index 0000000000..3458364699
--- /dev/null
+++ b/packages/s3c2410-utils/files/sjf2410-linux-20060807.tar.bz2
Binary files differ
diff --git a/packages/s3c2410-utils/s3c2410-boot-usb-native_20060807.bb b/packages/s3c2410-utils/s3c2410-boot-usb-native_20060807.bb
new file mode 100644
index 0000000000..ee8534dc01
--- /dev/null
+++ b/packages/s3c2410-utils/s3c2410-boot-usb-native_20060807.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Boots a S3C2410 device with a user supplied kernel zImage"
+DEPENDS = "libusb-native"
+SECTION = "devel"
+AUTHOR = "Harald Welte"
+MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "file://s3c2410_boot_usb-20060807.tar.bz2"
+S = "${WORKDIR}/s3c2410_boot_usb"
+
+inherit native
+
+do_compile() {
+ ${CC} ${CFLAGS} ${LDFLAGS} -lusb -o s3c2410-boot-usb boot_usb.c
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0755 s3c2410-boot-usb ${DEPLOY_DIR_IMAGE}
+}
+
+do_stage() {
+ :
+}
+
+do_install() {
+ :
+}
+
+addtask deploy before do_build after do_compile
diff --git a/packages/s3c2410-utils/s3c2410-boot-usb-native_svn.bb b/packages/s3c2410-utils/s3c2410-boot-usb-native_svn.bb
new file mode 100644
index 0000000000..c7b89647f5
--- /dev/null
+++ b/packages/s3c2410-utils/s3c2410-boot-usb-native_svn.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Boots a S3C2410 device with a user supplied kernel zImage"
+DEPENDS = "libusb-native"
+SECTION = "devel"
+AUTHOR = "Harald Welte"
+LICENSE = "GPL"
+PV = "0.1.0+svn${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "svn://svn.openmoko.org/trunk/src/host/;module=s3c2410_boot_usb;proto=https"
+S = "${WORKDIR}/s3c2410_boot_usb"
+
+inherit native
+
+do_compile() {
+ ${CC} ${CFLAGS} ${LDFLAGS} -lusb -o s3c2410-boot-usb boot_usb.c
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0755 s3c2410-boot-usb ${DEPLOY_DIR_IMAGE}
+}
+
+do_stage() {
+ :
+}
+
+do_install() {
+ :
+}
+
+addtask deploy before do_build after do_compile
diff --git a/packages/s3c2410-utils/sjf2410-linux-native_20060807.bb b/packages/s3c2410-utils/sjf2410-linux-native_20060807.bb
new file mode 100644
index 0000000000..53b2d0c8e0
--- /dev/null
+++ b/packages/s3c2410-utils/sjf2410-linux-native_20060807.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "Jtag utility to interface w/ a S3C2410 device"
+SECTION = "devel"
+AUTHOR = "Harald Welte"
+MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "file://sjf2410-linux-20060807.tar.bz2"
+S = "${WORKDIR}/sjf2410-linux"
+
+inherit native
+
+CFLAGS += "-DLINUX_PPDEV"
+
+do_compile() {
+ oe_runmake
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0755 sjf2410 ${DEPLOY_DIR_IMAGE}/sjf2410
+}
+
+do_stage() {
+ :
+}
+
+do_install() {
+ :
+}
+
+addtask deploy before do_package after do_install
diff --git a/packages/s3c2410-utils/sjf2410-linux-native_svn.bb b/packages/s3c2410-utils/sjf2410-linux-native_svn.bb
new file mode 100644
index 0000000000..60cce4a3e2
--- /dev/null
+++ b/packages/s3c2410-utils/sjf2410-linux-native_svn.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "JTAG utility to interface w/ a S3C2410 device"
+SECTION = "devel"
+AUTHOR = "Harald Welte"
+LICENSE = "GPL"
+PV = "0.1+svn${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "svn://svn.openmoko.org/trunk/src/host/;module=sjf2410-linux;proto=https"
+S = "${WORKDIR}/sjf2410-linux"
+
+inherit native
+
+CFLAGS += "-DLINUX_PPDEV"
+
+do_compile() {
+ oe_runmake
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0755 sjf2410 ${DEPLOY_DIR_IMAGE}/sjf2410
+}
+
+do_stage() {
+ :
+}
+
+do_install() {
+ :
+}
+
+addtask deploy before do_package after do_install
diff --git a/packages/samba/samba-essential.inc b/packages/samba/samba-essential.inc
index fca08d1735..d718fc8a96 100644
--- a/packages/samba/samba-essential.inc
+++ b/packages/samba/samba-essential.inc
@@ -1,10 +1,15 @@
SECTION = "console/network"
-DEPENDS = "readline"
LICENSE = "GPL"
+DEPENDS = "readline"
+SRC_URI = "http://samba.org/samba/ftp/stable/samba-${PV}.tar.gz \
+ file://configure.patch;patch=1 \
+ file://cifs.patch;patch=1"
+S = "${WORKDIR}/samba-${PV}/source"
+
inherit autotools
-EXTRA_OECONF='--disable-cups --with-readline=${STAGING_LIBDIR}/.. \
+EXTRA_OECONF = '--disable-cups --with-readline=${STAGING_LIBDIR}/.. \
--without-ads --without-automount --without-smbmount --without-syslog \
--without-ldapsam --without-quotas --without-nisplus-home \
--without-sys-quotas --without-libsmbclient --without-winbind \
diff --git a/packages/samba/samba-essential_3.0.20.bb b/packages/samba/samba-essential_3.0.20.bb
index 365d208028..75febf4ab1 100644
--- a/packages/samba/samba-essential_3.0.20.bb
+++ b/packages/samba/samba-essential_3.0.20.bb
@@ -1,22 +1,17 @@
+require samba-essential.inc
+inherit update-rc.d
+
PR = "r5"
-SRC_URI = "http://us2.samba.org/samba/ftp/stable/samba-${PV}.tar.gz \
- file://configure.patch;patch=1 \
- file://cifs.patch;patch=1 \
- file://config-lfs.patch;patch=1 \
+SRC_URI = "file://config-lfs.patch;patch=1 \
file://init-essential \
file://quota.patch;patch=1;pnum=0 \
file://smb-essential.conf \
file://smb-essential-inactive.conf \
file://Managing-Samba.txt"
-S := "${WORKDIR}/samba-${PV}/source"
-
RCONFLICTS = "samba"
-require samba-essential.inc
-inherit update-rc.d
-
INITSCRIPT_NAME = "samba"
# No dependencies, goes in at level 20 (NOTE: take care with the
# level, later levels put the shutdown later too - see the links
diff --git a/packages/samba/samba.inc b/packages/samba/samba.inc
index f9dce44072..aa3083d1f6 100644
--- a/packages/samba/samba.inc
+++ b/packages/samba/samba.inc
@@ -1,6 +1,16 @@
SECTION = "console/network"
-DEPENDS = "readline"
LICENSE = "GPL"
+DEPENDS = "readline"
+
+SRC_URI = "http://samba.org/samba/ftp/stable/samba-${PV}.tar.gz \
+ file://configure.patch;patch=1 \
+ file://cifs.patch;patch=1"
+S = "${WORKDIR}/samba-${PV}/source"
+
+inherit autotools
+
+EXTRA_OECONF='--disable-cups --with-readline=${STAGING_LIBDIR}/.. \
+ --without-ads --without-automount --with-smbmount'
PACKAGES =+ "libsmbclient libsmbclient-dev cifs cifs-doc"
FILES_cifs = "${bindir}/mount.cifs"
@@ -8,10 +18,6 @@ FILES_cifs-doc = "${docdir}/mount.cifs.8"
FILES_libsmbclient = "${libdir}/libsmbclient.so.*"
FILES_libsmbclient-dev = "${libdir}/libsmbclient.so ${includedir}"
-inherit autotools
-
-EXTRA_OECONF='--disable-cups --with-readline=${STAGING_LIBDIR}/.. \
- --without-ads --without-automount --with-smbmount'
do_configure_prepend () {
./script/mkversion.sh
if [ ! -e acinclude.m4 ]; then
diff --git a/packages/samba/samba_3.0.10.bb b/packages/samba/samba_3.0.10.bb
index 4aa262920c..895ce6b337 100644
--- a/packages/samba/samba_3.0.10.bb
+++ b/packages/samba/samba_3.0.10.bb
@@ -1,6 +1 @@
-SRC_URI := "http://us2.samba.org/samba/ftp/stable/samba-${PV}.tar.gz \
- file://${FILESDIR}/configure.patch;patch=1 \
- file://${FILESDIR}/cifs.patch;patch=1"
-S := "${WORKDIR}/${P}/source"
-
require samba.inc
diff --git a/packages/samba/samba_3.0.14a.bb b/packages/samba/samba_3.0.14a.bb
index 08d3c390e7..d191363cd6 100644
--- a/packages/samba/samba_3.0.14a.bb
+++ b/packages/samba/samba_3.0.14a.bb
@@ -1,16 +1,12 @@
+require samba.inc
+inherit update-rc.d
+
PR = "r15"
-SRC_URI = "http://us2.samba.org/samba/ftp/stable/samba-${PV}.tar.gz \
- file://configure.patch;patch=1 \
- file://cifs.patch;patch=1 \
- file://config-lfs.patch;patch=1 \
+SRC_URI += "file://config-lfs.patch;patch=1 \
file://init \
file://quota.patch;patch=1;pnum=0 \
"
-S = "${WORKDIR}/${P}/source"
-
-require samba.inc
-inherit update-rc.d
INITSCRIPT_NAME = "samba"
# No dependencies, goes in at level 20 (NOTE: take care with the
diff --git a/packages/samba/samba_3.0.20.bb b/packages/samba/samba_3.0.20.bb
index 7aa3d53626..fb2407c74f 100644
--- a/packages/samba/samba_3.0.20.bb
+++ b/packages/samba/samba_3.0.20.bb
@@ -1,16 +1,12 @@
+require samba.inc
+inherit update-rc.d
+
PR = "r5"
-SRC_URI = "http://us2.samba.org/samba/ftp/stable/samba-${PV}.tar.gz \
- file://configure.patch;patch=1 \
- file://cifs.patch;patch=1 \
- file://config-lfs.patch;patch=1 \
+SRC_URI += "file://config-lfs.patch;patch=1 \
file://init \
file://quota.patch;patch=1;pnum=0 \
"
-S = "${WORKDIR}/${P}/source"
-
-require samba.inc
-inherit update-rc.d
INITSCRIPT_NAME = "samba"
# No dependencies, goes in at level 20 (NOTE: take care with the
diff --git a/packages/samba/samba_3.0.23c.bb b/packages/samba/samba_3.0.23c.bb
index acec5afdd8..5317bcc62a 100644
--- a/packages/samba/samba_3.0.23c.bb
+++ b/packages/samba/samba_3.0.23c.bb
@@ -1,16 +1,10 @@
-PR = "r0"
+require samba.inc
+inherit update-rc.d
-SRC_URI = "http://us2.samba.org/samba/ftp/stable/samba-${PV}.tar.gz \
- file://configure.patch;patch=1 \
- file://cifs.patch;patch=1 \
- file://config-lfs.patch;patch=1 \
+SRC_URI += "file://config-lfs.patch;patch=1 \
file://init \
file://quota.patch;patch=1;pnum=0 \
"
-S = "${WORKDIR}/${P}/source"
-
-include samba.inc
-inherit update-rc.d
INITSCRIPT_NAME = "samba"
# No dependencies, goes in at level 20 (NOTE: take care with the
diff --git a/packages/samba/samba_3.0.5.bb b/packages/samba/samba_3.0.5.bb
index 4aa262920c..895ce6b337 100644
--- a/packages/samba/samba_3.0.5.bb
+++ b/packages/samba/samba_3.0.5.bb
@@ -1,6 +1 @@
-SRC_URI := "http://us2.samba.org/samba/ftp/stable/samba-${PV}.tar.gz \
- file://${FILESDIR}/configure.patch;patch=1 \
- file://${FILESDIR}/cifs.patch;patch=1"
-S := "${WORKDIR}/${P}/source"
-
require samba.inc
diff --git a/packages/samba/samba_3.0.9.bb b/packages/samba/samba_3.0.9.bb
index 4aa262920c..895ce6b337 100644
--- a/packages/samba/samba_3.0.9.bb
+++ b/packages/samba/samba_3.0.9.bb
@@ -1,6 +1 @@
-SRC_URI := "http://us2.samba.org/samba/ftp/stable/samba-${PV}.tar.gz \
- file://${FILESDIR}/configure.patch;patch=1 \
- file://${FILESDIR}/cifs.patch;patch=1"
-S := "${WORKDIR}/${P}/source"
-
require samba.inc
diff --git a/packages/sapwood/sapwood/sockets.patch b/packages/sapwood/sapwood/sockets.patch
index 1568206e2a..4e3a8e2d41 100644
--- a/packages/sapwood/sapwood/sockets.patch
+++ b/packages/sapwood/sapwood/sockets.patch
@@ -1,9 +1,12 @@
---- configure.in.old 2005-06-10 17:04:52.000000000 +0200
-+++ configure.in 2005-06-10 17:20:47.000000000 +0200
-@@ -13,61 +13,61 @@
+Index: sapwood/configure.in
+===================================================================
+--- sapwood.orig/configure.in 2007-03-29 16:04:12.000000000 +0200
++++ sapwood/configure.in 2007-03-29 16:04:15.000000000 +0200
+@@ -13,63 +13,6 @@
+ AC_PROG_INSTALL
AC_PROG_MAKE_SET
- dnl abstract sockets namespace checks, from dbus
+-dnl abstract sockets namespace checks, from dbus
-AC_ARG_ENABLE(abstract-sockets,
- [AC_HELP_STRING([--enable-abstract-sockets],
- [use abstract socket namespace (linux only)])],
@@ -13,21 +16,12 @@
-AC_MSG_CHECKING(abstract socket namespace)
-AC_RUN_IFELSE([AC_LANG_PROGRAM(
-[[
-+#AC_ARG_ENABLE(abstract-sockets,
-+# [AC_HELP_STRING([--enable-abstract-sockets],
-+# [use abstract socket namespace (linux only)])],
-+# [enable_abstract_sockets=$enableval],
-+# [enable_abstract_sockets=no])
-+#
-+#AC_MSG_CHECKING(abstract socket namespace)
-+#AC_RUN_IFELSE([AC_LANG_PROGRAM(
-+#[[
- #include <sys/types.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <sys/socket.h>
- #include <sys/un.h>
- #include <errno.h>
+-#include <sys/types.h>
+-#include <stdlib.h>
+-#include <stdio.h>
+-#include <sys/socket.h>
+-#include <sys/un.h>
+-#include <errno.h>
-]],
-[[
- int listen_fd;
@@ -68,46 +62,7 @@
-if test x$enable_abstract_sockets = xno; then
- have_abstract_sockets=no
-fi
-+#]],
-+#[[
-+# int listen_fd;
-+# struct sockaddr_un addr;
-+#
-+# listen_fd = socket (PF_UNIX, SOCK_STREAM, 0);
-+
-+# if (listen_fd < 0)
-+# {
-+# fprintf (stderr, "socket() failed: %s\n", strerror (errno));
-+# exit (1);
-+# }
-+#
-+# memset (&addr, '\0', sizeof (addr));
-+# addr.sun_family = AF_UNIX;
-+# strcpy (addr.sun_path, "X/tmp/sapwood-fake-socket-path-used-in-configure-test");
-+# addr.sun_path[0] = '\0'; /* this is what makes it abstract */
-+#
-+# if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0)
-+# {
-+# fprintf (stderr, "Abstract socket namespace bind() failed: %s\n",
-+# strerror (errno));
-+# exit (1);
-+# }
-+# else
-+# exit (0);
-+#]])],
-+# [have_abstract_sockets=no],
-+# [have_abstract_sockets=no])
-+#AC_MSG_RESULT($have_abstract_sockets)
-+
-+#if test x$enable_abstract_sockets = xyes; then
-+# if test x$have_abstract_sockets = xno; then
-+# AC_MSG_ERROR([Abstract sockets explicitly required, and support not detected.])
-+# fi
-+#fi
-+
-+#if test x$enable_abstract_sockets = xno; then
-+have_abstract_sockets=no
-+#fi
-
+-
if test x$have_abstract_sockets = xyes; then
AC_DEFINE(HAVE_ABSTRACT_SOCKETS,1,[Have abstract socket namespace])
+ fi
diff --git a/packages/sapwood/sapwood_svn.bb b/packages/sapwood/sapwood_svn.bb
index 9651ff3916..39ccacb6f6 100644
--- a/packages/sapwood/sapwood_svn.bb
+++ b/packages/sapwood/sapwood_svn.bb
@@ -1,9 +1,8 @@
DESCRIPTION = "GTK theme engine Sapwood"
LICENSE = "LGPL"
-
DEPENDS = "gtk+"
-
PV = "2.43+svn${SRCDATE}"
+PR = "r1"
SRC_URI = "svn://stage.maemo.org/svn/maemo/projects/haf/trunk/;module=sapwood;proto=https \
file://sockets.patch;patch=1 \
@@ -20,5 +19,5 @@ do_install_append () {
install -m755 ${S}/debian/sapwood-server.sh ${D}${sysconfdir}/osso-af-init/sapwood-server.sh
}
-FILES_${PN} += "${libdir}/gtk-2.0/2.10.0/engines/"
-
+FILES_${PN} += "${libdir}/gtk-2.0/*/engines/libsapwood.so"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/*/engines/.debug/libsapwood.so"
diff --git a/packages/sccd/sccd_1.0.bb b/packages/sccd/sccd_1.0.bb
index e9c80360d6..5eeaeef343 100644
--- a/packages/sccd/sccd_1.0.bb
+++ b/packages/sccd/sccd_1.0.bb
@@ -1,8 +1,7 @@
-SECTION = "utility"
DECSCRIPTION = "StorCenter Control Daemon - controls the leds, fans, softpower"
+SECTION = "utils"
LICENSE = "BSD"
-
-PR = "r2"
+PR = "r3"
SRC_URI = "file://scc.h \
file://scc.c \
diff --git a/packages/scummvm/scummvm.inc b/packages/scummvm/scummvm.inc
index 313b8e3d51..24b1e5a12a 100644
--- a/packages/scummvm/scummvm.inc
+++ b/packages/scummvm/scummvm.inc
@@ -9,7 +9,7 @@ inherit autotools
EXTRA_OECONF = "--host=${HOST_SYS} \
--backend=sdl \
- --with-sdl-prefix=${STAGING_BINDIR}/.. \
+ --with-sdl-prefix=${STAGING_BINDIR_NATIVE}/.. \
--disable-alsa \
--with-ogg-prefix=${STAGING_LIBDIR}/.. \
--with-vorbis-prefix=${STAGING_LIBDIR}/.. \
diff --git a/packages/settings-daemon/settings-daemon_svn.bb b/packages/settings-daemon/settings-daemon_svn.bb
index b81c6c3e16..b427176c79 100644
--- a/packages/settings-daemon/settings-daemon_svn.bb
+++ b/packages/settings-daemon/settings-daemon_svn.bb
@@ -1,16 +1,17 @@
-DESCRIPTION = "Settings-daemon is a bridge between xst/gpe-confd and gconf"
+DESCRIPTION = "Settings-daemon provides a bridge between gconf and xsettings"
LICENSE = "GPL"
-DEPENDS = "gconf xst glib-2.0"
+DEPENDS = "gconf glib-2.0"
+RDEPENDS = "xrdb"
SECTION = "x11"
-
-PR = "r1"
+PV = "0.0+svn${SRCDATE}"
+PR = "r2"
SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \
file://70settings-daemon"
S = "${WORKDIR}/${PN}"
-inherit autotools pkgconfig gettext
+inherit autotools pkgconfig gettext gconf
FILES_${PN} = "${bindir}/* ${sysconfdir}"
@@ -18,3 +19,4 @@ do_install_append () {
install -d ${D}/${sysconfdir}/X11/Xsession.d
install -m 755 ${WORKDIR}/70settings-daemon ${D}/${sysconfdir}/X11/Xsession.d/
}
+
diff --git a/packages/shared-mime-info/shared-mime-info_0.16.bb b/packages/shared-mime-info/shared-mime-info_0.16.bb
deleted file mode 100644
index fe68d3167d..0000000000
--- a/packages/shared-mime-info/shared-mime-info_0.16.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SECTION = "base"
-PR = "r1"
-
-DEPENDS = "libxml2 intltool-native"
-
-SRC_URI = "http://freedesktop.org/~jrb/shared-mime-info-${PV}.tar.gz"
-LICENSE = "GPL"
-inherit autotools pkgconfig gettext
-
-FILES_${PN} += "${datadir}/mime"
-#FILES_${PN}-doc += " ${datadir}/gtk-doc"
-
-EXTRA_OECONF = "--disable-update-mimedb"
-
-pkg_postinst () {
- echo "Updating MIME database... this may take a while."
- ${bindir}/update-mime-database ${datadir}/mime
-}
diff --git a/packages/shared-mime-info/shared-mime-info_0.20.bb b/packages/shared-mime-info/shared-mime-info_0.20.bb
new file mode 100644
index 0000000000..60993adcc2
--- /dev/null
+++ b/packages/shared-mime-info/shared-mime-info_0.20.bb
@@ -0,0 +1,18 @@
+SECTION = "base"
+LICENSE = "GPL"
+DEPENDS = "libxml2 intltool-native"
+PR = "r0"
+
+SRC_URI = "http://freedesktop.org/~hadess/shared-mime-info-${PV}.tar.bz2"
+
+inherit autotools pkgconfig gettext
+
+EXTRA_OECONF = "--disable-update-mimedb"
+
+FILES_${PN} += "${datadir}/mime"
+FILES_${PN}-dev += "${datadir}/pkgconfig/shared-mime-info.pc"
+
+pkg_postinst () {
+ echo "Updating MIME database... this may take a while."
+ ${bindir}/update-mime-database ${datadir}/mime
+}
diff --git a/packages/shasum/.mtn2git_empty b/packages/shasum/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/shasum/.mtn2git_empty
diff --git a/packages/shasum/files/.mtn2git_empty b/packages/shasum/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/shasum/files/.mtn2git_empty
diff --git a/packages/shasum/files/main.c b/packages/shasum/files/main.c
new file mode 100644
index 0000000000..0748a94f3a
--- /dev/null
+++ b/packages/shasum/files/main.c
@@ -0,0 +1,60 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "mhash_sha256.h"
+
+/*
+ * from driver.c of mhash
+ */
+static const char hexconvtab[] = "0123456789abcdef";
+
+static char *
+bin2hex(const unsigned char *old, const size_t oldlen, size_t * newlen)
+{
+ unsigned char *new = NULL;
+ int i, j;
+
+ new = (char *) malloc(oldlen * 2 * sizeof(char) + 1);
+ if (!new)
+ return (new);
+
+ for (i = j = 0; i < oldlen; i++) {
+ new[j++] = hexconvtab[old[i] >> 4];
+ new[j++] = hexconvtab[old[i] & 15];
+ }
+ new[j] = '\0';
+
+ if (newlen)
+ *newlen = oldlen * 2 * sizeof(char);
+
+ return (new);
+}
+
+
+int main(int argc, char** argv)
+{
+ FILE *file;
+ size_t n;
+ SHA256_CTX ctx;
+ unsigned char buf[1024];
+ byte output[33];
+
+ if ( argc <= 1 ) {
+ return EXIT_FAILURE;
+ }
+
+ if ( (file=fopen(argv[1], "rb")) == NULL ) {
+ return EXIT_FAILURE;
+ }
+
+ sha256_init(&ctx);
+
+ while ( (n=fread( buf, 1, sizeof(buf), file)) > 0 )
+ sha256_update(&ctx, buf, n );
+
+ sha256_final(&ctx);
+ sha256_digest(&ctx, output);
+
+ printf("%s ?%s\n", bin2hex(output, 32, &n), argv[1]);
+ return EXIT_SUCCESS;
+}
diff --git a/packages/shasum/files/mhash_sha256.h b/packages/shasum/files/mhash_sha256.h
new file mode 100644
index 0000000000..46090c5f3e
--- /dev/null
+++ b/packages/shasum/files/mhash_sha256.h
@@ -0,0 +1,64 @@
+/* sha.h
+ *
+ * The sha1 and sha256 hash functions.
+ */
+
+/* nettle, low-level cryptographics library
+ *
+ * Copyright (C) 2001 Niels Möller
+ *
+ * The nettle 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.
+ *
+ * The nettle 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 nettle library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#ifndef NETTLE_SHA_H_INCLUDED
+#define NETTLE_SHA_H_INCLUDED
+
+#include <inttypes.h>
+
+typedef uint32_t word32;
+typedef unsigned char byte;
+
+
+/* SHA256 */
+
+#define SHA256_DIGEST_SIZE 32
+#define SHA256_DATA_SIZE 64
+
+/* Digest is kept internally as 8 32-bit words. */
+#define _SHA256_DIGEST_LENGTH 8
+
+typedef struct sha256_ctx
+{
+ word32 state[_SHA256_DIGEST_LENGTH]; /* State variables */
+ word32 count_low, count_high; /* 64-bit block count */
+ byte block[SHA256_DATA_SIZE]; /* SHA256 data buffer */
+ unsigned int index; /* index into buffer */
+} SHA256_CTX;
+
+void
+sha256_init(struct sha256_ctx *ctx);
+
+void
+sha256_update(struct sha256_ctx *ctx, const byte *data, unsigned length);
+
+void
+sha256_final(struct sha256_ctx *ctx);
+
+void
+sha256_digest(const struct sha256_ctx *ctx, byte *digest);
+
+
+#endif /* NETTLE_SHA_H_INCLUDED */
diff --git a/packages/shasum/files/sha256.c b/packages/shasum/files/sha256.c
new file mode 100644
index 0000000000..e2ee2c6b4e
--- /dev/null
+++ b/packages/shasum/files/sha256.c
@@ -0,0 +1,322 @@
+/* sha256.h
+ *
+ * The sha256 hash function.
+ */
+
+/* nettle, low-level cryptographics library
+ *
+ * Copyright (C) 2001 Niels Möller
+ *
+ * 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.
+ *
+ * The nettle 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 nettle library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+/* Modelled after the sha1.c code by Peter Gutmann. */
+
+#include "mhash_sha256.h"
+#include <stdlib.h>
+#include <string.h>
+
+
+#ifndef EXTRACT_UCHAR
+#define EXTRACT_UCHAR(p) (*(unsigned char *)(p))
+#endif
+
+#define STRING2INT(s) ((((((EXTRACT_UCHAR(s) << 8) \
+ | EXTRACT_UCHAR(s+1)) << 8) \
+ | EXTRACT_UCHAR(s+2)) << 8) \
+ | EXTRACT_UCHAR(s+3))
+
+/* This has been modified in order to fit in mhash.
+ * --nmav.
+ */
+
+/* A block, treated as a sequence of 32-bit words. */
+#define SHA256_DATA_LENGTH 16
+
+#define ROTR(n,x) ((x)>>(n) | ((x)<<(32-(n))))
+#define SHR(n,x) ((x)>>(n))
+
+/* The SHA256 functions. The Choice function is the same as the SHA1
+ function f1, and the majority function is the same as the SHA1 f3
+ function. They can be optimized to save one boolean operation each
+ - thanks to Rich Schroeppel, rcs@cs.arizona.edu for discovering
+ this */
+
+/* #define Choice(x,y,z) ( ( (x) & (y) ) | ( ~(x) & (z) ) ) */
+#define Choice(x,y,z) ( (z) ^ ( (x) & ( (y) ^ (z) ) ) )
+/* #define Majority(x,y,z) ( ((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)) ) */
+#define Majority(x,y,z) ( ((x) & (y)) ^ ((z) & ((x) ^ (y))) )
+
+#define S0(x) (ROTR(2,(x)) ^ ROTR(13,(x)) ^ ROTR(22,(x)))
+#define S1(x) (ROTR(6,(x)) ^ ROTR(11,(x)) ^ ROTR(25,(x)))
+
+#define s0(x) (ROTR(7,(x)) ^ ROTR(18,(x)) ^ SHR(3,(x)))
+#define s1(x) (ROTR(17,(x)) ^ ROTR(19,(x)) ^ SHR(10,(x)))
+
+/* Generated by the shadata program. */
+static const word32 K[64] = {
+ 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL,
+ 0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL,
+ 0xd807aa98UL, 0x12835b01UL, 0x243185beUL, 0x550c7dc3UL,
+ 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, 0xc19bf174UL,
+ 0xe49b69c1UL, 0xefbe4786UL, 0xfc19dc6UL, 0x240ca1ccUL,
+ 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL,
+ 0x983e5152UL, 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL,
+ 0xc6e00bf3UL, 0xd5a79147UL, 0x6ca6351UL, 0x14292967UL,
+ 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, 0x53380d13UL,
+ 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL,
+ 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL,
+ 0xd192e819UL, 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL,
+ 0x19a4c116UL, 0x1e376c08UL, 0x2748774cUL, 0x34b0bcb5UL,
+ 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, 0x682e6ff3UL,
+ 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL,
+ 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL,
+};
+
+/* The initial expanding function. The hash function is defined over an
+ 64-word expanded input array W, where the first 16 are copies of the input
+ data, and the remaining 64 are defined by
+
+ W[ t ] = s1(W[t-2] + W[t-7] + s0(W[i-15] + W[i-16]
+
+ This implementation generates these values on the fly in a circular
+ buffer - thanks to Colin Plumb, colin@nyx10.cs.du.edu for this
+ optimization.
+*/
+
+#define EXPAND(W,i) \
+( W[(i) & 15 ] += (s1(W[((i)-2) & 15]) + W[((i)-7) & 15] + s0(W[((i)-15) & 15])) )
+
+/* The prototype SHA sub-round. The fundamental sub-round is:
+
+ T1 = h + S1(e) + Choice(e,f,g) + K[t] + W[t]
+ T2 = S0(a) + Majority(a,b,c)
+ a' = T1+T2
+ b' = a
+ c' = b
+ d' = c
+ e' = d + T1
+ f' = e
+ g' = f
+ h' = g
+
+ but this is implemented by unrolling the loop 8 times and renaming
+ the variables
+ ( h, a, b, c, d, e, f, g ) = ( a, b, c, d, e, f, g, h ) each
+ iteration. This code is then replicated 8, using the next 8 values
+ from the W[] array each time */
+
+/* FIXME: We can probably reorder this to optimize away at least one
+ * of T1 and T2. It's crucial that DATA is only used once, as that
+ * argument will have side effects. */
+#define ROUND(a,b,c,d,e,f,g,h,k,data) do { \
+ word32 T1 = h + S1(e) + Choice(e,f,g) + k + data; \
+ word32 T2 = S0(a) + Majority(a,b,c); \
+ d += T1; \
+ h = T1 + T2; \
+} while (0)
+
+/* Initialize the SHA values */
+
+void sha256_init(struct sha256_ctx *ctx)
+{
+ /* Initial values, also generated by the shadata program. */
+ static const word32 H0[_SHA256_DIGEST_LENGTH] = {
+ 0x6a09e667UL, 0xbb67ae85UL, 0x3c6ef372UL, 0xa54ff53aUL,
+ 0x510e527fUL, 0x9b05688cUL, 0x1f83d9abUL, 0x5be0cd19UL,
+ };
+
+ memcpy(ctx->state, H0, sizeof(H0));
+
+ /* Initialize bit count */
+ ctx->count_low = ctx->count_high = 0;
+
+ /* Initialize buffer */
+ ctx->index = 0;
+}
+
+/* Perform the SHA transformation. Note that this code, like MD5, seems to
+ break some optimizing compilers due to the complexity of the expressions
+ and the size of the basic block. It may be necessary to split it into
+ sections, e.g. based on the four subrounds
+
+ Note that this function destroys the data area */
+
+static void sha256_transform(word32 * state, word32 * data)
+{
+ word32 A, B, C, D, E, F, G, H; /* Local vars */
+ unsigned i;
+ const word32 *k;
+ word32 *d;
+
+ /* Set up first buffer and local data buffer */
+ A = state[0];
+ B = state[1];
+ C = state[2];
+ D = state[3];
+ E = state[4];
+ F = state[5];
+ G = state[6];
+ H = state[7];
+
+ /* Heavy mangling */
+ /* First 16 subrounds that act on the original data */
+
+ for (i = 0, k = K, d = data; i < 16; i += 8, k += 8, d += 8) {
+ ROUND(A, B, C, D, E, F, G, H, k[0], d[0]);
+ ROUND(H, A, B, C, D, E, F, G, k[1], d[1]);
+ ROUND(G, H, A, B, C, D, E, F, k[2], d[2]);
+ ROUND(F, G, H, A, B, C, D, E, k[3], d[3]);
+ ROUND(E, F, G, H, A, B, C, D, k[4], d[4]);
+ ROUND(D, E, F, G, H, A, B, C, k[5], d[5]);
+ ROUND(C, D, E, F, G, H, A, B, k[6], d[6]);
+ ROUND(B, C, D, E, F, G, H, A, k[7], d[7]);
+ }
+
+ for (; i < 64; i += 16, k += 16) {
+ ROUND(A, B, C, D, E, F, G, H, k[0], EXPAND(data, 0));
+ ROUND(H, A, B, C, D, E, F, G, k[1], EXPAND(data, 1));
+ ROUND(G, H, A, B, C, D, E, F, k[2], EXPAND(data, 2));
+ ROUND(F, G, H, A, B, C, D, E, k[3], EXPAND(data, 3));
+ ROUND(E, F, G, H, A, B, C, D, k[4], EXPAND(data, 4));
+ ROUND(D, E, F, G, H, A, B, C, k[5], EXPAND(data, 5));
+ ROUND(C, D, E, F, G, H, A, B, k[6], EXPAND(data, 6));
+ ROUND(B, C, D, E, F, G, H, A, k[7], EXPAND(data, 7));
+ ROUND(A, B, C, D, E, F, G, H, k[8], EXPAND(data, 8));
+ ROUND(H, A, B, C, D, E, F, G, k[9], EXPAND(data, 9));
+ ROUND(G, H, A, B, C, D, E, F, k[10], EXPAND(data, 10));
+ ROUND(F, G, H, A, B, C, D, E, k[11], EXPAND(data, 11));
+ ROUND(E, F, G, H, A, B, C, D, k[12], EXPAND(data, 12));
+ ROUND(D, E, F, G, H, A, B, C, k[13], EXPAND(data, 13));
+ ROUND(C, D, E, F, G, H, A, B, k[14], EXPAND(data, 14));
+ ROUND(B, C, D, E, F, G, H, A, k[15], EXPAND(data, 15));
+ }
+
+ /* Update state */
+ state[0] += A;
+ state[1] += B;
+ state[2] += C;
+ state[3] += D;
+ state[4] += E;
+ state[5] += F;
+ state[6] += G;
+ state[7] += H;
+}
+
+static void sha256_block(struct sha256_ctx *ctx, const byte * block)
+{
+ word32 data[SHA256_DATA_LENGTH];
+ int i;
+
+ /* Update block count */
+ if (!++ctx->count_low)
+ ++ctx->count_high;
+
+ /* Endian independent conversion */
+ for (i = 0; i < SHA256_DATA_LENGTH; i++, block += 4)
+ data[i] = STRING2INT(block);
+
+ sha256_transform(ctx->state, data);
+}
+
+void
+sha256_update(struct sha256_ctx *ctx, const byte * buffer, unsigned length)
+{
+ if (ctx->index) { /* Try to fill partial block */
+ unsigned left = SHA256_DATA_SIZE - ctx->index;
+ if (length < left) {
+ memcpy(ctx->block + ctx->index, buffer, length);
+ ctx->index += length;
+ return; /* Finished */
+ } else {
+ memcpy(ctx->block + ctx->index, buffer, left);
+ sha256_block(ctx, ctx->block);
+ buffer += left;
+ length -= left;
+ }
+ }
+ while (length >= SHA256_DATA_SIZE) {
+ sha256_block(ctx, buffer);
+ buffer += SHA256_DATA_SIZE;
+ length -= SHA256_DATA_SIZE;
+ }
+ /* Buffer leftovers */
+ /* NOTE: The corresponding sha1 code checks for the special case length == 0.
+ * That seems supoptimal, as I suspect it increases the number of branches. */
+
+ memcpy(ctx->block, buffer, length);
+ ctx->index = length;
+}
+
+/* Final wrapup - pad to SHA1_DATA_SIZE-byte boundary with the bit pattern
+ 1 0* (64-bit count of bits processed, MSB-first) */
+
+void sha256_final(struct sha256_ctx *ctx)
+{
+ word32 data[SHA256_DATA_LENGTH];
+ int i;
+ int words;
+
+ i = ctx->index;
+
+ /* Set the first char of padding to 0x80. This is safe since there is
+ always at least one byte free */
+
+/* assert(i < SHA256_DATA_SIZE);
+ */
+ ctx->block[i++] = 0x80;
+
+ /* Fill rest of word */
+ for (; i & 3; i++)
+ ctx->block[i] = 0;
+
+ /* i is now a multiple of the word size 4 */
+ words = i >> 2;
+ for (i = 0; i < words; i++)
+ data[i] = STRING2INT(ctx->block + 4 * i);
+
+ if (words > (SHA256_DATA_LENGTH - 2)) { /* No room for length in this block. Process it and
+ * pad with another one */
+ for (i = words; i < SHA256_DATA_LENGTH; i++)
+ data[i] = 0;
+ sha256_transform(ctx->state, data);
+ for (i = 0; i < (SHA256_DATA_LENGTH - 2); i++)
+ data[i] = 0;
+ } else
+ for (i = words; i < SHA256_DATA_LENGTH - 2; i++)
+ data[i] = 0;
+
+ /* There are 512 = 2^9 bits in one block */
+ data[SHA256_DATA_LENGTH - 2] =
+ (ctx->count_high << 9) | (ctx->count_low >> 23);
+ data[SHA256_DATA_LENGTH - 1] =
+ (ctx->count_low << 9) | (ctx->index << 3);
+ sha256_transform(ctx->state, data);
+}
+
+void sha256_digest(const struct sha256_ctx *ctx, byte * s)
+{
+ int i;
+
+ if (s!=NULL)
+ for (i = 0; i < _SHA256_DIGEST_LENGTH; i++) {
+ *s++ = ctx->state[i] >> 24;
+ *s++ = 0xff & (ctx->state[i] >> 16);
+ *s++ = 0xff & (ctx->state[i] >> 8);
+ *s++ = 0xff & ctx->state[i];
+ }
+}
+
diff --git a/packages/shasum/shasum-native.bb b/packages/shasum/shasum-native.bb
new file mode 100644
index 0000000000..2b9dd9a09d
--- /dev/null
+++ b/packages/shasum/shasum-native.bb
@@ -0,0 +1,11 @@
+require shasum.inc
+
+inherit native
+
+INHIBIT_DEFAULT_DEPS = "1"
+PATCHTOOL = "patch"
+
+do_fetch[depends] = ""
+do_populate_staging() {
+ install ${S}/oe_sha256sum ${STAGING_BINDIR}
+}
diff --git a/packages/shasum/shasum.inc b/packages/shasum/shasum.inc
new file mode 100644
index 0000000000..343a2d288e
--- /dev/null
+++ b/packages/shasum/shasum.inc
@@ -0,0 +1,20 @@
+SUMMARY = "A simple tool to create sha256 hashes from a file"
+LICENSE = "LGPL"
+
+PR = "r1"
+
+S = "${WORKDIR}"
+
+
+SRC_URI = "file://main.c \
+ file://mhash_sha256.h \
+ file://sha256.c "
+
+
+do_configure() {
+ :
+}
+
+do_compile() {
+ $CC $CFLAGS $CPPFLAGS -o oe_sha256sum main.c sha256.c
+}
diff --git a/packages/slugos-init/files/boot/disk b/packages/slugos-init/files/boot/disk
index ff55baa04c..a991bc50ac 100644
--- a/packages/slugos-init/files/boot/disk
+++ b/packages/slugos-init/files/boot/disk
@@ -21,9 +21,12 @@ then
# load USB & SCSI storage modules (/proc required!)
echo "boot: loading modules required for disk boot"
loaddiskmods
- # waiting for disk (FIXME)
- sleep=6
- test "$sleep" -gt 0 && sleep "$sleep"
+ # waiting for disk
+ if test "$sleep" -gt 0
+ then
+ echo "Waiting $sleep seconds for disk"
+ sleep "$sleep"
+ fi
#
# fire the boot
echo "boot: rootfs: mount $* $device [$UUID]"
diff --git a/packages/slugos-init/files/leds b/packages/slugos-init/files/leds
index f5011f8bad..8043dae682 100644
--- a/packages/slugos-init/files/leds
+++ b/packages/slugos-init/files/leds
@@ -18,8 +18,9 @@ esac
# handle the 'user' setting.
led_user_default(){
case "$(machine)" in
- nslu2) echo -n "cpu-idle";;
- *) echo -n "cpu";;
+ nslu2) echo -n "cpu-idle";;
+ nas100d) echo -n "on";;
+ *) echo -n "cpu";;
esac
}
#
diff --git a/packages/slugos-init/files/turnup b/packages/slugos-init/files/turnup
index ff1397e4c1..c852f911c8 100644
--- a/packages/slugos-init/files/turnup
+++ b/packages/slugos-init/files/turnup
@@ -153,7 +153,7 @@ copy_rootfs() {
# /var/*
echo "turnup: copying root file system" >&2
( cd "$1"
- find . -mount -print |
+ find . -xdev -print |
sed '\@^./dev/@d;\@^./boot/@d;\@^./boot$@d;\@^./linuxrc@d;\@^./var/@d' |
cpio -p -d -m -u "$2"
) || {
@@ -450,7 +450,7 @@ disk() {
local setup_type sleep init device uuid new ffs fst fso
setup_type=disk
- sleep=0
+ sleep=10
init=
while test $# -gt 0
do
diff --git a/packages/slugos-init/slugos-init_0.10.bb b/packages/slugos-init/slugos-init_0.10.bb
index b75511ec67..ac6f6c3ac0 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 = "r77"
+PR = "r83"
SRC_URI = "file://boot/flash \
file://boot/disk \
@@ -29,7 +29,6 @@ SRC_URI = "file://boot/flash \
file://leds \
file://turnup \
file://reflash \
- file://links.conf \
"
SBINPROGS = ""
@@ -97,10 +96,6 @@ do_install() {
done
#
- # Udev configuration files
- install -m 0644 links.conf ${D}${sysconfdir}/udev
-
- #
# Boot scripts
for p in ${BOOTSCRIPTS}
do
diff --git a/packages/snes9x/snes9x-sdl-qpe_1.39.bb b/packages/snes9x/snes9x-sdl-qpe_1.39.bb
index 4e8a294d2b..adf49650d9 100644
--- a/packages/snes9x/snes9x-sdl-qpe_1.39.bb
+++ b/packages/snes9x/snes9x-sdl-qpe_1.39.bb
@@ -3,7 +3,7 @@ SECTION = "opie/games"
PRIORITY = "optional"
DEPENDS = "libsdl-qpe"
LICENSE = "snes9x"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://www.vanille.de/mirror/snes9x-sdl-${PV}.tar.bz2 \
file://compile.patch;patch=1"
@@ -13,10 +13,12 @@ FILESPATH = "${FILE_DIRNAME}/${PN}-${PV}:${FILE_DIRNAME}/snes9x-sdl-${PV}:${FILE
inherit qmake-base
+QT_LIBRARY = '${@base_conditional("PALMTOP_USE_MULTITHREADED_QT", "yes", "qte-mt", "qte",d)}'
+
do_compile() {
oe_runmake CC="${CC}" CCC="${CXX}" \
INCLUDES="-I${STAGING_INCDIR} `sdl-config --cflags`" \
- LDLIBS="`sdl-config --libs` -L${OE_QMAKE_LIBDIR_QT} -Wl,-rpath-link,${STAGING_LIBDIR} -lqpe -lqte"
+ LDLIBS="`sdl-config --libs` -L${OE_QMAKE_LIBDIR_QT} -Wl,-rpath-link,${STAGING_LIBDIR} -lqpe -l${QT_LIBRARY}"
}
do_install() {
diff --git a/packages/snes9x/snes9x-sdl/gcc-4.1.patch b/packages/snes9x/snes9x-sdl/gcc-4.1.patch
new file mode 100644
index 0000000000..a63c0519d3
--- /dev/null
+++ b/packages/snes9x/snes9x-sdl/gcc-4.1.patch
@@ -0,0 +1,28 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- snes9x-sdl-1.39/dsp1.h~gcc-4.1
++++ snes9x-sdl-1.39/dsp1.h
+@@ -233,8 +233,8 @@
+ void S9xResetDSP1 ();
+ uint8 S9xGetDSP (uint16 Address);
+ void S9xSetDSP (uint8 Byte, uint16 Address);
+-END_EXTERN_C
+
+ extern struct SDSP1 DSP1;
++END_EXTERN_C
+
+ #endif
+--- snes9x-sdl-1.39/unix/unix.cpp~gcc-4.1
++++ snes9x-sdl-1.39/unix/unix.cpp
+@@ -1046,7 +1046,7 @@
+ {
+ }
+
+-static uint8 Buf[MAX_BUFFER_SIZE];
++static uint8 Buf[MAX_BUFFER_SIZE] __attribute__((aligned(4)));
+
+ #define FIXED_POINT 0x10000
+ #define FIXED_POINT_SHIFT 16
diff --git a/packages/snes9x/snes9x-sdl_1.39.bb b/packages/snes9x/snes9x-sdl_1.39.bb
index ce6f5fa265..ea4eb44666 100644
--- a/packages/snes9x/snes9x-sdl_1.39.bb
+++ b/packages/snes9x/snes9x-sdl_1.39.bb
@@ -3,10 +3,11 @@ SECTION = "games"
PRIORITY = "optional"
DEPENDS = "virtual/libsdl zlib"
LICENSE = "snes9x"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://www.vanille.de/mirror/snes9x-sdl-${PV}.tar.bz2 \
- file://compile.patch;patch=1"
+ file://compile.patch;patch=1 \
+ file://gcc-4.1.patch;patch=1"
S = "${WORKDIR}/snes9x-sdl-${PV}"
do_compile() {
diff --git a/packages/soundtracker/soundtracker-gtk2_0.6.7.bb b/packages/soundtracker/soundtracker-gtk2_0.6.7.bb
index a71abda875..8070b89270 100644
--- a/packages/soundtracker/soundtracker-gtk2_0.6.7.bb
+++ b/packages/soundtracker/soundtracker-gtk2_0.6.7.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Music composition program in the style of AMIGA Impulse Tracker"
-DEPENDS = "gtk+ libgnomeui audiofile esound-gpe alsa-lib"
+DEPENDS = "gtk+ libgnomeui audiofile esound alsa-lib"
LICENSE = "GPL"
SECTION = "x11/multimedia"
PR = "r1"
diff --git a/packages/sox/sox-native_13.0.0.bb b/packages/sox/sox-native_13.0.0.bb
new file mode 100644
index 0000000000..9b4dd29433
--- /dev/null
+++ b/packages/sox/sox-native_13.0.0.bb
@@ -0,0 +1,19 @@
+include sox_${PV}.bb
+
+S = "${WORKDIR}/sox-${PV}"
+
+inherit native
+
+do_patch() {
+ true
+}
+
+do_stage() {
+ make bindir="${STAGING_BINDIR}" libdir="${STAGING_LIBDIR}" mandir="${STAGING_DIR}/${HOST_SYS}/man" includedir="${STAGING_INCDIR}" install
+ rm ${STAGING_BINDIR}/rec
+ ln -s ${STAGING_BINDIR}/play ${STAGING_BINDIR}/rec
+}
+
+do_install() {
+ true
+}
diff --git a/packages/sox/sox/src-Makefile.am.patch b/packages/sox/sox/src-Makefile.am.patch
new file mode 100644
index 0000000000..b5ffd398ae
--- /dev/null
+++ b/packages/sox/sox/src-Makefile.am.patch
@@ -0,0 +1,11 @@
+--- sox-13.0.0.old/src/Makefile.am 2007-03-18 22:19:52.296535098 -0400
++++ sox-13.0.0/src/Makefile.am 2007-03-18 22:21:48.968947731 -0400
+@@ -42,7 +42,7 @@
+ $(MAKE) -C libgsm
+
+ play rec: sox$(EXEEXT)
+- ./sox --help > /dev/null
++# ./sox --help > /dev/null
+ test -f .libs/lt-sox && ( $(RM) $@ && $(LN_S) .libs/lt-sox $@ ) || $(LN_S) sox$(EXEEXT) $@
+
+ install-exec-hook:
diff --git a/packages/sox/sox_12.17.5.bb b/packages/sox/sox_12.17.5.bb
index 6c70eaad7b..a3cd84e726 100644
--- a/packages/sox/sox_12.17.5.bb
+++ b/packages/sox/sox_12.17.5.bb
@@ -4,7 +4,7 @@
DESCRIPTION="SoX is the Swiss Army knife of sound processing tools. \
It converts audio files among various standard audio file formats \
-and can apply different effects and filters to the audio data."
+and can apply different effects and filters to the audio data."
LICENSE="GPL"
HOMEPAGE="http://sox.sourceforge.net"
diff --git a/packages/sox/sox_13.0.0.bb b/packages/sox/sox_13.0.0.bb
new file mode 100644
index 0000000000..f5c554799d
--- /dev/null
+++ b/packages/sox/sox_13.0.0.bb
@@ -0,0 +1,18 @@
+DESCRIPTION="SoX is the Swiss Army knife of sound processing tools. \
+It converts audio files among various standard audio file formats \
+and can apply different effects and filters to the audio data."
+HOMEPAGE = "http://sox.sourceforge.net"
+SECTION = "audio"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/sox/sox-${PV}.tar.gz \
+ file://src-Makefile.am.patch;patch=1"
+
+inherit autotools
+
+do_install() {
+ make bindir="${D}${bindir}" libdir="${D}${libdir}" mandir="${D}/${mandir}" includedir="${D}${includedir}" install
+ rm ${D}${bindir}/rec
+ ln -s /usr/bin/play ${D}${bindir}/rec
+}
diff --git a/packages/spandsp/.mtn2git_empty b/packages/spandsp/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/spandsp/.mtn2git_empty
diff --git a/packages/spandsp/spandsp_0.0.2+0.0.3pre27.bb b/packages/spandsp/spandsp_0.0.2+0.0.3pre27.bb
new file mode 100644
index 0000000000..2c0ffa0845
--- /dev/null
+++ b/packages/spandsp/spandsp_0.0.2+0.0.3pre27.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "A library of many DSP functions for telephony."
+HOMEPAGE = "http://www.soft-switch.org"
+DEPENDS = "tiff libxml2"
+SECTION = "voip"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://www.soft-switch.org/downloads/snapshots/spandsp/spandsp-20070123.tar.gz"
+S = "${WORKDIR}/${PN}-0.0.3"
+
+inherit autotools
+
+PARALLEL_MAKE = ""
+
+do_stage () {
+ autotools_stage_all
+} \ No newline at end of file
diff --git a/packages/spandsp/spandsp_0.0.3.bb b/packages/spandsp/spandsp_0.0.3.bb
new file mode 100644
index 0000000000..26702f998b
--- /dev/null
+++ b/packages/spandsp/spandsp_0.0.3.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "A library of many DSP functions for telephony."
+HOMEPAGE = "http://www.soft-switch.org"
+DEPENDS = "tiff libxml2"
+SECTION = "voip"
+LICENSE = "GPL"
+PV = "0.0.3"
+PSUBV = "pre27"
+PR = "r0"
+
+SRC_URI = "http://www.soft-switch.org/downloads/snapshots/spandsp/spandsp-20070123.tar.gz"
+
+inherit autotools
+
+PARALLEL_MAKE = ""
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/speex/speex_1.1.12+1.2beta1.bb b/packages/speex/speex_1.1.12+1.2beta1.bb
index d0f33bf681..01bd93909e 100644
--- a/packages/speex/speex_1.1.12+1.2beta1.bb
+++ b/packages/speex/speex_1.1.12+1.2beta1.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "BSD"
HOMEPAGE = "http://www.speex.org"
DEPENDS = "libogg"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://downloads.us.xiph.org/releases/speex/speex-1.2beta1.tar.gz"
S = "${WORKDIR}/${PN}-1.2beta1"
@@ -22,6 +22,7 @@ inherit autotools pkgconfig
EXTRA_OECONF_append_openmn = " --enable-arm5e-asm --enable-fixed-point"
EXTRA_OECONF_append_amsdelta = " --enable-arm4-asm --enable-fixed-point"
EXTRA_OECONF_append_arm = " --enable-fixed-point "
+EXTRA_OECONF_append_dht-walnut = " --enable-fixed-point "
do_configure_append() {
sed -i s/"^OGG_CFLAGS.*$"/"OGG_CFLAGS = "/g Makefile */Makefile */*/Makefile
diff --git a/packages/sqlite/sqlite3-3.3.12/.mtn2git_empty b/packages/sqlite/sqlite3-3.3.12/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sqlite/sqlite3-3.3.12/.mtn2git_empty
diff --git a/packages/sqlite/sqlite3-3.3.7/cross-compile.patch b/packages/sqlite/sqlite3-3.3.12/cross-compile.patch
index 31d4f0d162..31d4f0d162 100644
--- a/packages/sqlite/sqlite3-3.3.7/cross-compile.patch
+++ b/packages/sqlite/sqlite3-3.3.12/cross-compile.patch
diff --git a/packages/sqlite/sqlite3-3.3.12/ldflags.patch b/packages/sqlite/sqlite3-3.3.12/ldflags.patch
new file mode 100644
index 0000000000..fb78ab9d87
--- /dev/null
+++ b/packages/sqlite/sqlite3-3.3.12/ldflags.patch
@@ -0,0 +1,70 @@
+Index: sqlite-3.3.9/Makefile.in
+===================================================================
+--- sqlite-3.3.9.orig/Makefile.in 2007-01-08 19:37:52.000000000 +0100
++++ sqlite-3.3.9/Makefile.in 2007-01-08 19:41:54.000000000 +0100
+@@ -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.
+@@ -276,17 +280,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)
+
+@@ -474,13 +478,13 @@
+
+ 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 \
+ -DSQLITE_NO_SYNC=1 $(TEMP_STORE) \
+ -o testfixture $(TESTSRC) $(TOP)/src/tclsqlite.c \
+- libsqlite3.la $(LIBTCL)
++ libsqlite3.la $(TARGET_LFLAGS) $(LIBTCL)
+
+
+ fulltest: testfixture$(TEXE) sqlite3$(TEXE)
+@@ -490,7 +494,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' \
+@@ -500,7 +504,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-3.3.7/libtool.patch b/packages/sqlite/sqlite3-3.3.12/libtool.patch
index ccf9993ed2..ccf9993ed2 100644
--- a/packages/sqlite/sqlite3-3.3.7/libtool.patch
+++ b/packages/sqlite/sqlite3-3.3.12/libtool.patch
diff --git a/packages/sqlite/sqlite3-3.3.13/.mtn2git_empty b/packages/sqlite/sqlite3-3.3.13/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sqlite/sqlite3-3.3.13/.mtn2git_empty
diff --git a/packages/sqlite/sqlite3-3.3.13/cross-compile.patch b/packages/sqlite/sqlite3-3.3.13/cross-compile.patch
new file mode 100644
index 0000000000..31d4f0d162
--- /dev/null
+++ b/packages/sqlite/sqlite3-3.3.13/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-3.3.13/ldflags.patch b/packages/sqlite/sqlite3-3.3.13/ldflags.patch
new file mode 100644
index 0000000000..fb78ab9d87
--- /dev/null
+++ b/packages/sqlite/sqlite3-3.3.13/ldflags.patch
@@ -0,0 +1,70 @@
+Index: sqlite-3.3.9/Makefile.in
+===================================================================
+--- sqlite-3.3.9.orig/Makefile.in 2007-01-08 19:37:52.000000000 +0100
++++ sqlite-3.3.9/Makefile.in 2007-01-08 19:41:54.000000000 +0100
+@@ -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.
+@@ -276,17 +280,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)
+
+@@ -474,13 +478,13 @@
+
+ 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 \
+ -DSQLITE_NO_SYNC=1 $(TEMP_STORE) \
+ -o testfixture $(TESTSRC) $(TOP)/src/tclsqlite.c \
+- libsqlite3.la $(LIBTCL)
++ libsqlite3.la $(TARGET_LFLAGS) $(LIBTCL)
+
+
+ fulltest: testfixture$(TEXE) sqlite3$(TEXE)
+@@ -490,7 +494,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' \
+@@ -500,7 +504,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-3.3.13/libtool.patch b/packages/sqlite/sqlite3-3.3.13/libtool.patch
new file mode 100644
index 0000000000..ccf9993ed2
--- /dev/null
+++ b/packages/sqlite/sqlite3-3.3.13/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.3.7/ldflags.patch b/packages/sqlite/sqlite3-3.3.7/ldflags.patch
deleted file mode 100644
index ee5105ffff..0000000000
--- a/packages/sqlite/sqlite3-3.3.7/ldflags.patch
+++ /dev/null
@@ -1,67 +0,0 @@
---- 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_3.3.12.bb b/packages/sqlite/sqlite3_3.3.12.bb
new file mode 100644
index 0000000000..59c13ee01f
--- /dev/null
+++ b/packages/sqlite/sqlite3_3.3.12.bb
@@ -0,0 +1,2 @@
+require sqlite3.inc
+PR = "r0"
diff --git a/packages/sqlite/sqlite3_3.3.13.bb b/packages/sqlite/sqlite3_3.3.13.bb
new file mode 100644
index 0000000000..59c13ee01f
--- /dev/null
+++ b/packages/sqlite/sqlite3_3.3.13.bb
@@ -0,0 +1,2 @@
+require sqlite3.inc
+PR = "r0"
diff --git a/packages/sqlite/sqlite3_3.3.7.bb b/packages/sqlite/sqlite3_3.3.7.bb
deleted file mode 100644
index d21fb6ad3e..0000000000
--- a/packages/sqlite/sqlite3_3.3.7.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require sqlite3.inc
-PR = "r2"
diff --git a/packages/starling/starling_0.1.bb b/packages/starling/starling_0.1.bb
index edd78558c3..fab79342ac 100644
--- a/packages/starling/starling_0.1.bb
+++ b/packages/starling/starling_0.1.bb
@@ -6,19 +6,16 @@ PR = "r1"
inherit gpe autotools
DESCRIPTION = "Starling audio player for GPE"
-DEPENDS = "gtk+ libgpewidget gstreamer gst-plugins-good gst-plugins-bad esound-gpe"
+DEPENDS = "gtk+ libgpewidget gstreamer gst-plugins-good gst-plugins-bad esound sqlite3 libsoup"
RDEPENDS = "esd \
- gst-plugins \
- gst-plugin-audio \
gst-plugin-audioconvert \
- gst-plugin-audiofile \
gst-plugin-esd \
gst-plugin-typefindfunctions \
gst-plugin-decodebin \
gst-plugin-volume"
RRECOMMENDS = "gst-plugin-mad \
- gst-plugin-tagedit \
+ gst-plugin-modplug \
gst-plugin-ivorbis \
gst-plugin-tcp"
diff --git a/packages/starling/starling_svn.bb b/packages/starling/starling_svn.bb
new file mode 100644
index 0000000000..25d445f6ee
--- /dev/null
+++ b/packages/starling/starling_svn.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "Starling audio player for GPE"
+SECTION = "gpe/multimedia"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libgpewidget gstreamer gst-plugins-good gst-plugins-bad esound sqlite3 libsoup"
+RDEPENDS = "esd \
+ gst-plugin-audioconvert \
+ gst-plugin-esd \
+ gst-plugin-typefindfunctions \
+ gst-plugin-decodebin \
+ gst-plugin-volume"
+RRECOMMENDS = "gst-plugin-mad \
+ gst-plugin-modplug \
+ gst-plugin-ivorbis \
+ gst-plugin-tcp"
+
+PV = "0.1+svn${SRCDATE}"
+
+
+inherit gpe autotools
+
+SRC_URI = "${GPE_EXTRA_SVN}"
+
+S = "${WORKDIR}/${PN}"
diff --git a/packages/subversion/files/neon-detection.patch b/packages/subversion/files/neon-detection.patch
new file mode 100644
index 0000000000..b567d5c050
--- /dev/null
+++ b/packages/subversion/files/neon-detection.patch
@@ -0,0 +1,36 @@
+diff --git a/build/ac-macros/neon.m4 b/build/ac-macros/neon.m4
+index 9fcf859..8d964f3 100644
+--- a/build/ac-macros/neon.m4
++++ b/build/ac-macros/neon.m4
+@@ -38,7 +38,7 @@ AC_DEFUN(SVN_LIB_NEON,
+ if test "$withval" = "yes" ; then
+ AC_MSG_ERROR([--with-neon requires an argument.])
+ else
+- neon_config="$withval/bin/neon-config"
++ neon_config="env env PKG_CONFIG_PATH=${withval}:${PKG_CONFIG_PATH} pkg-config neon"
+ fi
+
+ SVN_NEON_CONFIG()
+@@ -117,10 +117,10 @@ dnl SVN_NEON_CONFIG()
+ dnl neon-config found, gather relevant information from it
+ AC_DEFUN(SVN_NEON_CONFIG,
+ [
+- if test -f "$neon_config"; then
+- if test "$neon_config" != ""; then
++ if true; then
++ if true; then
+ AC_MSG_CHECKING([neon library version])
+- NEON_VERSION=`$neon_config --version | sed -e 's/^neon //'`
++ NEON_VERSION=`$neon_config --modversion | sed -e 's/^neon //'`
+ AC_MSG_RESULT([$NEON_VERSION])
+
+ if test -n "`echo \"$NEON_VERSION\" | grep '^0\.25\.'`" ; then
+@@ -133,7 +133,7 @@ AC_DEFUN(SVN_NEON_CONFIG,
+ test "$svn_allowed_neon" = "any"; then
+ svn_allowed_neon_on_system="yes"
+ SVN_NEON_INCLUDES=[`$neon_config --cflags | sed -e 's/-D[^ ]*//g'`]
+- NEON_LIBS=`$neon_config --la-file`
++ NEON_LIBS=`$neon_config --libs`
+ CFLAGS=["$CFLAGS `$neon_config --cflags | sed -e 's/-I[^ ]*//g'`"]
+ svn_lib_neon="yes"
+ break
diff --git a/packages/subversion/subversion_1.4.0.bb b/packages/subversion/subversion_1.4.0.bb
index 3c65d1d0a8..a608aac063 100644
--- a/packages/subversion/subversion_1.4.0.bb
+++ b/packages/subversion/subversion_1.4.0.bb
@@ -1,14 +1,16 @@
DESCRIPTION = "The Subversion (svn) client"
SECTION = "console/network"
DEPENDS = "apr-util neon"
+RDEPENDS = "neon"
LICENSE = "Apache/BSD"
HOMEPAGE = "http://subversion.tigris.org"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://subversion.tigris.org/downloads/${P}.tar.bz2 \
- file://disable-revision-install.patch;patch=1"
+ file://disable-revision-install.patch;patch=1 \
+ file://neon-detection.patch;patch=1"
-EXTRA_OECONF = "--with-neon=${STAGING_DIR}/${BUILD_SYS} \
+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}"
@@ -21,5 +23,6 @@ export LDFLAGS += " -L${STAGING_LIBDIR} "
do_configure() {
gnu-configize
libtoolize --force
+ aclocal -I build/ -I build/ac-macros/ && autoconf
oe_runconf
}
diff --git a/packages/subversion/subversion_1.4.3.bb b/packages/subversion/subversion_1.4.3.bb
new file mode 100644
index 0000000000..c0a2a02e08
--- /dev/null
+++ b/packages/subversion/subversion_1.4.3.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "The Subversion (svn) client"
+SECTION = "console/network"
+DEPENDS = "apr-util neon"
+RDEPENDS = "neon"
+LICENSE = "Apache/BSD"
+HOMEPAGE = "http://subversion.tigris.org"
+
+DEFAULT_PREFERENCE = "-1"
+
+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
+}
diff --git a/packages/suspend-desktop/suspend-desktop_1.0.bb b/packages/suspend-desktop/suspend-desktop_1.0.bb
index ba74337116..fa9efba84b 100644
--- a/packages/suspend-desktop/suspend-desktop_1.0.bb
+++ b/packages/suspend-desktop/suspend-desktop_1.0.bb
@@ -1,4 +1,4 @@
-SECTION = "gpe"
+SECTION = "gpe"
PRIORITY = "optional"
DESCRIPTION = "Suspend feature for the application launcher menu."
LICENSE = "GPL"
diff --git a/packages/swig/swig-native_1.3.24.bb b/packages/swig/swig-native_1.3.31.bb
index 8210bb9cfb..8210bb9cfb 100644
--- a/packages/swig/swig-native_1.3.24.bb
+++ b/packages/swig/swig-native_1.3.31.bb
diff --git a/packages/swig/swig_1.3.24.bb b/packages/swig/swig_1.3.24.bb
deleted file mode 100644
index 74bbb633f1..0000000000
--- a/packages/swig/swig_1.3.24.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-DESCRIPTION = "SWIG - Simplified Wrapper and Interface Generator"
-HOMEPAGE = "http://swig.sourceforge.net/"
-LICENSE = "BSD"
-SECTION = "devel"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/swig/swig-${PV}.tar.gz"
-S = "${WORKDIR}/SWIG-${PV}"
-
-inherit autotools
-
-EXTRA_OECONF = "--with-python=${STAGING_BINDIR_NATIVE} --with-swiglibdir=${STAGING_DIR}/${BUILD_SYS}/swig"
-
-do_configure() {
- oe_runconf
-}
-
diff --git a/packages/swig/swig_1.3.31.bb b/packages/swig/swig_1.3.31.bb
new file mode 100644
index 0000000000..c8f595be07
--- /dev/null
+++ b/packages/swig/swig_1.3.31.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "SWIG - Simplified Wrapper and Interface Generator"
+HOMEPAGE = "http://swig.sourceforge.net/"
+LICENSE = "BSD"
+SECTION = "devel"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/swig/swig-${PV}.tar.gz"
+S = "${WORKDIR}/swig-${PV}"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-python=${STAGING_BINDIR_NATIVE} --with-swiglibdir=${STAGING_DIR}/${BUILD_SYS}/swig"
+
+do_configure() {
+ oe_runconf
+}
+
diff --git a/packages/sword/sword-1.5.9/.mtn2git_empty b/packages/sword/sword-1.5.9/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sword/sword-1.5.9/.mtn2git_empty
diff --git a/packages/sword/sword-1.5.9/gcc-visibility.patch b/packages/sword/sword-1.5.9/gcc-visibility.patch
new file mode 100644
index 0000000000..f23a66767f
--- /dev/null
+++ b/packages/sword/sword-1.5.9/gcc-visibility.patch
@@ -0,0 +1,26 @@
+diff --git a/include/rawtext.h b/include/rawtext.h
+index 32986fe..1304bf7 100644
+--- a/include/rawtext.h
++++ b/include/rawtext.h
+@@ -43,7 +43,7 @@ public:
+ virtual ~RawText();
+ virtual SWBuf &getRawEntryBuf();
+ virtual void increment(int steps = 1);
+- virtual void decrement(int steps = 1) { increment(-steps); }
++ virtual __attribute__((visibility("default"))) void decrement(int steps = 1) { increment(-steps); }
+ virtual signed char createSearchFramework(
+ void (*percent) (char, void *) = &nullPercent,
+ void *percentUserData = 0);
+diff --git a/include/versekey.h b/include/versekey.h
+index 0ca5e47..53084d9 100644
+--- a/include/versekey.h
++++ b/include/versekey.h
+@@ -253,7 +253,7 @@ public:
+ */
+ virtual const char *getText() const;
+ virtual const char *getShortText() const;
+- virtual void setText(const char *ikey) { SWKey::setText(ikey); parse (); }
++ virtual __attribute__((visibility("default"))) void setText(const char *ikey) { SWKey::setText(ikey); parse (); }
+ virtual void copyFrom(const SWKey &ikey);
+
+ /** Equates this VerseKey to another VerseKey
diff --git a/packages/sword/sword_1.5.9.bb b/packages/sword/sword_1.5.9.bb
index 362b75e57c..2c180ac7e3 100644
--- a/packages/sword/sword_1.5.9.bb
+++ b/packages/sword/sword_1.5.9.bb
@@ -7,7 +7,8 @@ PRIORITY = "optional"
LICENSE = "GPL"
PR = "r0"
-SRC_URI = "http://www.crosswire.org/ftpmirror/pub/sword/source/v1.5/sword-${PV}.tar.gz"
+SRC_URI = "http://www.crosswire.org/ftpmirror/pub/sword/source/v1.5/sword-${PV}.tar.gz \
+ file://gcc-visibility.patch;patch=1"
inherit autotools pkgconfig
diff --git a/packages/sylpheed/claws-mail_2.6.1.bb b/packages/sylpheed/claws-mail_2.6.1.bb
deleted file mode 100644
index bed205766b..0000000000
--- a/packages/sylpheed/claws-mail_2.6.1.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SECTION = "x11/network"
-DESCRIPTION = "Mail user agent"
-DEPENDS = "gtk+ gpgme libetpan libgnomeprint aspell"
-LICENSE = "GPL"
-PR = "r0"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/sylpheed-claws/claws-mail-${PV}.tar.bz2"
-
-FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications"
-
-EXTRA_OECONF = "--disable-openssl --disable-aspell-test \
- --disable-dillo-viewer-plugin --with-aspell-prefix=${STAGING_DIR}/${HOST_SYS} \
- --enable-aspell"
-
-CFLAGS += "-D_GNU_SOURCE"
-
-inherit autotools pkgconfig
-
-do_configure() {
- gnu-configize
- libtoolize --force
- oe_runconf
-}
-
-do_install_append() {
- install -d ${D}${datadir}/applications
- install -m 0644 claws-mail.desktop ${D}${datadir}/applications/
- install -d ${D}${datadir}/pixmaps
- install -m 0644 claws-mail.png ${D}${datadir}/pixmaps/
- mv ${D}${bindir}/${TARGET_SYS}-claws-mail ${D}${bindir}/${PN}
-}
-
-do_stage () {
- autotools_stage_all
-}
-
-python populate_packages_prepend () {
- abiword_libdir = bb.data.expand('${libdir}/claws-mail/plugins', d)
-
- do_split_packages(d, abiword_libdir, '^(.*)\.so$', 'claws-mail-plugin-%s', 'Claws plugin for %s', extra_depends='')
-}
diff --git a/packages/sylpheed/claws-mail_2.7.2.bb b/packages/sylpheed/claws-mail_2.7.2.bb
new file mode 100644
index 0000000000..6a698e1914
--- /dev/null
+++ b/packages/sylpheed/claws-mail_2.7.2.bb
@@ -0,0 +1,41 @@
+SECTION = "x11/network"
+DESCRIPTION = "Mail user agent"
+DEPENDS = "gtk+ gpgme libetpan libgnomeprint aspell openssl"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/sylpheed-claws/claws-mail-${PV}.tar.bz2"
+
+FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications"
+
+EXTRA_OECONF = "--disable-aspell-test \
+ --disable-dillo-viewer-plugin --with-aspell-prefix=${STAGING_DIR}/${HOST_SYS} \
+ --enable-aspell"
+
+CFLAGS += "-D_GNU_SOURCE"
+
+inherit autotools pkgconfig
+
+do_configure() {
+ gnu-configize
+ libtoolize --force
+ oe_runconf
+}
+
+do_install_append() {
+ install -d ${D}${datadir}/applications
+ install -m 0644 claws-mail.desktop ${D}${datadir}/applications/
+ install -d ${D}${datadir}/pixmaps
+ install -m 0644 claws-mail.png ${D}${datadir}/pixmaps/
+ mv ${D}${bindir}/${TARGET_SYS}-claws-mail ${D}${bindir}/${PN}
+}
+
+do_stage () {
+ autotools_stage_all
+}
+
+python populate_packages_prepend () {
+ abiword_libdir = bb.data.expand('${libdir}/claws-mail/plugins', d)
+
+ do_split_packages(d, abiword_libdir, '^(.*)\.so$', 'claws-mail-plugin-%s', 'Claws plugin for %s', extra_depends='')
+}
diff --git a/packages/sylpheed/claws-plugin-gtkhtml2-viewer_0.14.1.bb b/packages/sylpheed/claws-plugin-gtkhtml2-viewer_0.14.1.bb
new file mode 100644
index 0000000000..5ca95d9dfb
--- /dev/null
+++ b/packages/sylpheed/claws-plugin-gtkhtml2-viewer_0.14.1.bb
@@ -0,0 +1,20 @@
+SECTION = "x11/network"
+DESCRIPTION = "Mail user agent plugins"
+DEPENDS = "claws-mail gtkhtml2 curl"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://www.claws-mail.org/downloads/plugins/gtkhtml2_viewer-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+S = "${WORKDIR}/gtkhtml2_viewer-${PV}"
+
+do_configure() {
+ gnu-configize
+ libtoolize --force
+ oe_runconf
+}
+
+FILES_${PN} = "${libdir}/claws-mail/plugins/*.so"
+
diff --git a/packages/sylpheed/claws-plugin-maildir_0.24.4.bb b/packages/sylpheed/claws-plugin-maildir_0.24.4.bb
new file mode 100644
index 0000000000..6032e09918
--- /dev/null
+++ b/packages/sylpheed/claws-plugin-maildir_0.24.4.bb
@@ -0,0 +1,20 @@
+SECTION = "x11/network"
+DESCRIPTION = "Mail user agent plugins"
+DEPENDS = "claws-mail db"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://www.claws-mail.org/downloads/plugins/maildir-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+S = "${WORKDIR}/maildir-${PV}"
+
+do_configure() {
+ gnu-configize
+ libtoolize --force
+ oe_runconf
+}
+
+FILES_${PN} = "${libdir}/claws-mail/plugins/*.so"
+
diff --git a/packages/sylpheed/claws-plugin-mailmbox_1.12.4.bb b/packages/sylpheed/claws-plugin-mailmbox_1.12.4.bb
new file mode 100644
index 0000000000..d1f9e22d22
--- /dev/null
+++ b/packages/sylpheed/claws-plugin-mailmbox_1.12.4.bb
@@ -0,0 +1,20 @@
+SECTION = "x11/network"
+DESCRIPTION = "Mail user agent plugins"
+DEPENDS = "claws-mail"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://www.claws-mail.org/downloads/plugins/mailmbox-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+S = "${WORKDIR}/mailmbox-${PV}"
+
+do_configure() {
+ gnu-configize
+ libtoolize --force
+ oe_runconf
+}
+
+FILES_${PN} = "${libdir}/claws-mail/plugins/*.so"
+
diff --git a/packages/sylpheed/claws-plugin-rssyl_0.10.bb b/packages/sylpheed/claws-plugin-rssyl_0.10.bb
new file mode 100644
index 0000000000..29fc245ac4
--- /dev/null
+++ b/packages/sylpheed/claws-plugin-rssyl_0.10.bb
@@ -0,0 +1,20 @@
+SECTION = "x11/network"
+DESCRIPTION = "Mail user agent plugins"
+DEPENDS = "claws-mail libxml2 curl glib-2.0 gtk+"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://www.claws-mail.org/downloads/plugins/rssyl-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+S = "${WORKDIR}/rssyl-${PV}"
+
+do_configure() {
+ gnu-configize
+ libtoolize --force
+ oe_runconf
+}
+
+FILES_${PN} = "${libdir}/claws-mail/plugins/*.so"
+
diff --git a/packages/sylpheed/sylpheed-claws-extra-plugins.inc b/packages/sylpheed/sylpheed-claws-extra-plugins.inc
deleted file mode 100644
index 93596ab4d8..0000000000
--- a/packages/sylpheed/sylpheed-claws-extra-plugins.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-SECTION = "x11/network"
-DESCRIPTION = "Mail user agent plugins"
-DEPENDS = "sylpheed-claws"
-LICENSE = "GPL"
-PR = "r0"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/sylpheed-claws/sylpheed-claws-extra-plugins-${PV}.tar.bz2"
-
-
-inherit autotools pkgconfig
-
-FILES_${PN} = "${libdir}/sylpheed-claws/plugins/*.so"
-
diff --git a/packages/sylpheed/sylpheed-claws-plugin-gtkhtml2-viewer-0.10.1_2.3.0.bb b/packages/sylpheed/sylpheed-claws-plugin-gtkhtml2-viewer-0.10.1_2.3.0.bb
deleted file mode 100644
index 4fbafbb277..0000000000
--- a/packages/sylpheed/sylpheed-claws-plugin-gtkhtml2-viewer-0.10.1_2.3.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require sylpheed-claws-extra-plugins.inc
-
-DEPENDS_append = " gtkhtml2"
-
-S = "${WORKDIR}/sylpheed-claws-extra-plugins-${PV}/gtkhtml2_viewer-0.10.1"
-
diff --git a/packages/sylpheed/sylpheed-claws-plugin-gtkhtml2-viewer-0.10.2_2.4.0.bb b/packages/sylpheed/sylpheed-claws-plugin-gtkhtml2-viewer-0.10.2_2.4.0.bb
deleted file mode 100644
index 0689fc6208..0000000000
--- a/packages/sylpheed/sylpheed-claws-plugin-gtkhtml2-viewer-0.10.2_2.4.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require sylpheed-claws-extra-plugins.inc
-
-DEPENDS_append = " gtkhtml2"
-
-S = "${WORKDIR}/sylpheed-claws-extra-plugins-${PV}/gtkhtml2_viewer-0.10.2"
-
diff --git a/packages/sylpheed/sylpheed-claws-plugin-maildir-0.24.1_2.3.0.bb b/packages/sylpheed/sylpheed-claws-plugin-maildir-0.24.1_2.3.0.bb
deleted file mode 100644
index 7f5cfca263..0000000000
--- a/packages/sylpheed/sylpheed-claws-plugin-maildir-0.24.1_2.3.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require sylpheed-claws-extra-plugins.inc
-
-DEPENDS_append = " db"
-
-S = "${WORKDIR}/sylpheed-claws-extra-plugins-${PV}/maildir-0.24.1"
-
diff --git a/packages/sylpheed/sylpheed-claws-plugin-maildir-0.24.1_2.4.0.bb b/packages/sylpheed/sylpheed-claws-plugin-maildir-0.24.1_2.4.0.bb
deleted file mode 100644
index 7f5cfca263..0000000000
--- a/packages/sylpheed/sylpheed-claws-plugin-maildir-0.24.1_2.4.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require sylpheed-claws-extra-plugins.inc
-
-DEPENDS_append = " db"
-
-S = "${WORKDIR}/sylpheed-claws-extra-plugins-${PV}/maildir-0.24.1"
-
diff --git a/packages/sylpheed/sylpheed-claws-plugin-mailmbox_1.12.1.bb b/packages/sylpheed/sylpheed-claws-plugin-mailmbox_1.12.1.bb
deleted file mode 100644
index 29ba157c89..0000000000
--- a/packages/sylpheed/sylpheed-claws-plugin-mailmbox_1.12.1.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require sylpheed-claws-extra-plugins.inc
-
-SRC_URI = "http://www.sylpheed-claws.net/downloads/plugins/mailmbox-1.12.1.tar.gz"
-S = "${WORKDIR}/mailmbox-1.12.1"
-
diff --git a/packages/sylpheed/sylpheed-claws-plugin-rssyl-0.5_2.3.0.bb b/packages/sylpheed/sylpheed-claws-plugin-rssyl-0.5_2.3.0.bb
deleted file mode 100644
index 83346105dc..0000000000
--- a/packages/sylpheed/sylpheed-claws-plugin-rssyl-0.5_2.3.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require sylpheed-claws-extra-plugins.inc
-
-DEPENDS_append = " libxml2 curl glib-2.0 gtk+"
-
-S = "${WORKDIR}/sylpheed-claws-extra-plugins-${PV}/rssyl-0.5"
-
diff --git a/packages/sylpheed/sylpheed-claws-plugin-rssyl-0.6_2.4.0.bb b/packages/sylpheed/sylpheed-claws-plugin-rssyl-0.6_2.4.0.bb
deleted file mode 100644
index fecf8763a2..0000000000
--- a/packages/sylpheed/sylpheed-claws-plugin-rssyl-0.6_2.4.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require sylpheed-claws-extra-plugins.inc
-
-DEPENDS_append = " libxml2 curl glib-2.0 gtk+"
-
-S = "${WORKDIR}/sylpheed-claws-extra-plugins-${PV}/rssyl-0.6"
-
diff --git a/packages/sylpheed/sylpheed-claws_2.3.1.bb b/packages/sylpheed/sylpheed-claws_2.3.1.bb
deleted file mode 100644
index e6231fcc75..0000000000
--- a/packages/sylpheed/sylpheed-claws_2.3.1.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SECTION = "x11/network"
-DESCRIPTION = "Mail user agent"
-DEPENDS = "gtk+ gpgme libetpan libgnomeprint aspell"
-LICENSE = "GPL"
-PR = "r0"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/sylpheed-claws/sylpheed-claws-${PV}.tar.bz2"
-
-
-FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications"
-
-EXTRA_OECONF = "--disable-aspell --disable-openssl --disable-aspell-test \
- --disable-dillo-viewer-plugin --with-aspell-prefix=${STAGING_DIR}/${HOST_SYS} \
- --enable-aspell"
-
-CFLAGS += "-D_GNU_SOURCE"
-
-do_configure_prepend() {
- mkdir -p m4
-}
-
-inherit autotools pkgconfig
-
-do_install_append() {
- install -d ${D}${datadir}/applications
- install -m 0644 sylpheed-claws.desktop ${D}${datadir}/applications/
- install -d ${D}${datadir}/pixmaps
- install -m 0644 sylpheed-claws.png ${D}${datadir}/pixmaps/
-}
-
-do_stage () {
- autotools_stage_all
-}
-
diff --git a/packages/sylpheed/sylpheed-claws_2.4.0.bb b/packages/sylpheed/sylpheed-claws_2.4.0.bb
deleted file mode 100644
index e6231fcc75..0000000000
--- a/packages/sylpheed/sylpheed-claws_2.4.0.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SECTION = "x11/network"
-DESCRIPTION = "Mail user agent"
-DEPENDS = "gtk+ gpgme libetpan libgnomeprint aspell"
-LICENSE = "GPL"
-PR = "r0"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/sylpheed-claws/sylpheed-claws-${PV}.tar.bz2"
-
-
-FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications"
-
-EXTRA_OECONF = "--disable-aspell --disable-openssl --disable-aspell-test \
- --disable-dillo-viewer-plugin --with-aspell-prefix=${STAGING_DIR}/${HOST_SYS} \
- --enable-aspell"
-
-CFLAGS += "-D_GNU_SOURCE"
-
-do_configure_prepend() {
- mkdir -p m4
-}
-
-inherit autotools pkgconfig
-
-do_install_append() {
- install -d ${D}${datadir}/applications
- install -m 0644 sylpheed-claws.desktop ${D}${datadir}/applications/
- install -d ${D}${datadir}/pixmaps
- install -m 0644 sylpheed-claws.png ${D}${datadir}/pixmaps/
-}
-
-do_stage () {
- autotools_stage_all
-}
-
diff --git a/packages/sylpheed/sylpheed_2.2.7.bb b/packages/sylpheed/sylpheed_2.2.7.bb
deleted file mode 100644
index b22512b32f..0000000000
--- a/packages/sylpheed/sylpheed_2.2.7.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SECTION = "x11/network"
-DESCRIPTION = "Mail user agent"
-DEPENDS = "gtk+ gpgme gnutls"
-LICENSE = "GPL"
-PR = "r0"
-
-SRC_URI = "http://sylpheed.good-day.net/sylpheed/v2.2/sylpheed-${PV}.tar.bz2 \
- file://sylpheed-2.2.2-libsylph-Makefile-am.patch;patch=1 \
- file://sylpheed-2.2.2-src-Makefile-am.patch;patch=1 \
- file://sylpheed-gnutls_2.2.4.patch;patch=1"
-
-
-FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications"
-FILES_${PN}-doc += "${datadir}"
-
-EXTRA_OECONF = "--disable-ssl --enable-gnutls"
-
-CFLAGS += "-D_GNU_SOURCE"
-
-do_configure_prepend() {
- mkdir -p m4
-}
-
-inherit autotools
-
-do_install_append() {
- install -d ${D}${datadir}/applications
- install -m 0644 sylpheed.desktop ${D}${datadir}/applications/
- install -d ${D}${datadir}/pixmaps
- install -m 0644 sylpheed.png ${D}${datadir}/pixmaps/
-}
-
diff --git a/packages/sysconf/.mtn2git_empty b/packages/sysconf/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sysconf/.mtn2git_empty
diff --git a/packages/sysconf/files/.mtn2git_empty b/packages/sysconf/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sysconf/files/.mtn2git_empty
diff --git a/packages/sysconf/files/conffiles b/packages/sysconf/files/conffiles
new file mode 100644
index 0000000000..d99047ce24
--- /dev/null
+++ b/packages/sysconf/files/conffiles
@@ -0,0 +1,56 @@
+# conffiles
+# Known configuration files. These files are preserved on
+# a flash upgrade. Other configuration files, found from:
+#
+# /usr/lib/ipkg/*.conffiles
+# /etc/*.conf
+#
+# are preserved too with an operation of 'diff' if they have been
+# changed since /etc/.configured was created.
+#
+# Lines starting with # are comments, other lines have
+# two fields:
+#
+# operation file
+#
+# The file must *NOT* have a leading /
+#
+# operation may be:
+# ignore Do not preserve this file
+# preserve Preserve this file unconditionally
+# diff Compare file with the new version, ask if different
+#
+preserve linuxrc
+preserve etc/.configured
+preserve etc/TZ
+diff etc/default/conffiles
+diff etc/default/devpts
+preserve etc/default/rcS
+preserve etc/default/sysconf
+diff etc/default/usbd
+preserve etc/defaultdomain
+preserve etc/dropbear/dropbear_dss_host_key
+preserve etc/dropbear/dropbear_rsa_host_key
+preserve etc/ssh/ssh_host_dsa_key
+preserve etc/ssh/ssh_host_dsa_key.pub
+preserve etc/ssh/ssh_host_rsa_key
+preserve etc/ssh/ssh_host_rsa_key.pub
+preserve etc/fstab
+preserve etc/group
+preserve etc/gshadow
+preserve etc/hostname
+preserve etc/hosts
+preserve etc/localtime
+ignore etc/modules
+ignore etc/modules.conf
+preserve etc/motd
+preserve etc/network/interfaces
+preserve etc/ntp.drift
+preserve etc/passwd
+preserve etc/profile
+preserve etc/resolv.conf
+preserve etc/shadow
+preserve etc/syslog.conf
+preserve etc/timezone
+preserve root/.ssh/authorized_keys
+preserve home/root/.ssh/authorized_keys
diff --git a/packages/sysconf/files/sysconf b/packages/sysconf/files/sysconf
new file mode 100644
index 0000000000..9499b4daa9
--- /dev/null
+++ b/packages/sysconf/files/sysconf
@@ -0,0 +1,1041 @@
+#!/bin/sh
+# sysconf
+#
+# Utility to manipulate system configuration information held
+# in a System Configuration partition
+#
+
+# hardware
+# the 'Hardware' string from cpuinfo
+hardware(){
+ sed -n 's!^Hardware *: !!p' /proc/cpuinfo
+}
+#
+# machine
+# outputs an identifier of the current machine - i.e. the board
+# slugos is running on.
+machine(){
+ case "$(hardware)" in
+ *Coyote*) echo coyote;;
+ *IXDPG425*) echo ixdpg425;;
+ *WRV54G*) echo wrv54g;;
+ *IXDP425*) echo ixdp425;;
+ *IXDP465*) echo ixdp465;;
+ *IXCDP1100*) echo ixcdp1100*;;
+ *Avila*) echo avila;;
+ *Loft*) echo loft;;
+ *NAS?100d*) echo nas100d;;
+ *DSM?G600*) echo dsmg600;;
+ *NSLU2*) echo nslu2;;
+ *FSG?3*) echo fsg3;;
+ *) echo unknown;;
+ esac
+}
+
+# NSLU2 flash layout is non-standard.
+case "$(machine)" in
+nslu2)
+ kpart="Kernel"
+ syspart="SysConf"
+ ffspart="Flashdisk";;
+*)
+ kpart="kernel"
+ syspart="sysconfig"
+ ffspart="filesystem";;
+esac
+
+#
+# mtblockdev "name"
+# return (output) the block device name for flash parition "name"
+# /proc/mtd has the general form:
+# dev: size erasesize name
+# mtd5: 00020000 00020000 "FIS directory"
+# use this rather than hard-wiring the device because the partition
+# table can change - looking in /proc/mtd is more reliable.
+mtblockdev(){
+ sed -n 's!^mtd\([0-9][0-9]*\):[^"]*"'"$1"'"$!/dev/mtdblock\1!p' /proc/mtd
+}
+
+#
+# sysconf_valid
+# return true if the SysConf partition exists and seems to be
+# potentially valid (it starts with a reasonable length).
+sysconf_valid(){
+ local sysdev
+ sysdev="$(mtblockdev $syspart)"
+ test -n "$sysdev" -a -b "$sysdev" &&
+ devio "<<$sysdev" '!! b.10>s32768<&!'
+}
+
+#
+# sysvalmatch "section" "name" 'pattern' "configuration file"
+# sysvalof "section" "name" "configuration file"
+# sysval "section" "name"
+# outputs the value of the SysConf variable 'name' from section 'section',
+# if there are multiple definitions only the last is output
+# NOTE: these functions should only be used internally, add entries to 'config'
+# below if necessary. This is because 'config' does the defaulting.
+sysvalmatch(){
+ sed -n '/^\['"$1"'\]$/,/^\[.*\]$/s/^'"$2"'=\('"$3"'\)$/\1/p' "$4" | sed -n '$p'
+}
+sysvalof(){
+ sysvalmatch "$1" "$2" '.*' "$3"
+}
+sysval(){
+ test -r "$config_root/etc/default/sysconf" &&
+ sysvalof "$1" "$2" "$config_root/etc/default/sysconf"
+}
+#
+# syssection "section"
+# outputs all the values from the given section changed to the format "name value"
+# (i.e. the '=' is dropped).
+syssection(){
+ test -r "$config_root/etc/default/sysconf" &&
+ sed -n '/^\['"$1"'\]$/,/^\[.*\]$/s/^\([^=]*\)=\(.*\)$/\1 \2/p' "$config_root/etc/default/sysconf"
+}
+#
+# config "value"
+# convenience callers for specific values to avoid mis-typing in scripts
+# NOTE: this function does the defaulting, 'sysval' does not!
+# config_root: if set this will override the root where config/sysval
+# looks for /etc/default/sysconf
+config(){
+ case "$1" in
+ host) if test -n "$(sysval network disk_server_name)"
+ then
+ sysval network disk_server_name
+ elif test -n "$(sysval network default_server_name)"
+ then
+ sysval network default_server_name
+ else
+ # because we want the name to remain constant:
+ echo "brokenslug"
+ fi;;
+ domain) sysval network w_d_name;;
+ iface) if test -n "$(sysval network lan_interface)"
+ then
+ sysval network lan_interface
+ else
+ echo eth0
+ fi;;
+ ip) if test -n "$(sysval network ip_addr)"
+ then
+ sysval network ip_addr
+ else
+ echo 192.168.1.77
+ fi;;
+ netmask)sysval network netmask;;
+ gateway)sysval network gateway;;
+ dns) sysval network dns_server1;;
+ dns2) sysval network dns_server2;;
+ dns3) sysval network dns_server3;;
+ boot) if test -n "$(sysval network bootproto)"
+ then
+ sysval network bootproto
+ else
+ echo dhcp
+ fi;;
+ valid) test -r "$config_root/etc/default/sysconf";;
+ *) return 1;;
+ esac
+}
+
+#
+# sysconf_read [prefix]
+# read the $syspart partition (if present) writing the result into
+# /etc/default/sysconf, if the result is empty it will be removed.
+sysconf_read(){
+ local sysdev sedcmd config_root
+ config_root="$1"
+ rm -f /tmp/sysconf.new
+ sysdev="$(mtblockdev $syspart)"
+ if sysconf_valid
+ then
+ # Read the defined part of $syspart into /etc/default/sysconf.
+ # $syspart has lines of two forms:
+ #
+ # [section]
+ # name=value
+ #
+ # In practice $syspart also contains other stuff, use the command:
+ #
+ # devio '<</dev/mtd1;cpb'
+ #
+ # to examine the current settings. The badly formatted stuff
+ # is removed (to be exact, the sed script selects only lines
+ # which match one of the two above). The lan interface, which
+ # on NSLU2 defaults to ixp0, is changed to the correct value for
+ # slugos, eth0. The bootproto, which LinkSys sets to static in
+ # manufacturing, is reset to dhcp if the IP is still the
+ # original (192.168.1.77)
+ sedcmd='/^\[[^][]*\]$/p;'
+ # only do the ip_addr and lan_interface fixups on NSLU2
+ if test "$(machine)" = nslu2
+ then
+ sedcmd="$sedcmd"'
+ s/^lan_interface=ixp0$/lan_interface=eth0/;
+ /^ip_addr=192\.168\.1\.77$/,/^bootproto/s/^bootproto=static$/bootproto=dhcp/;'
+ fi
+ # and only print lines of the correct form
+ sedcmd="$sedcmd"'
+ /^[-a-zA-Z0-9_][-a-zA-Z0-9_]*=/p'
+
+ devio "<<$sysdev" cpb fb1,10 | sed -n "$sedcmd" >/tmp/sysconf.new
+ fi
+ #
+ # test the result - sysconf must be non-empty
+ if test -s /tmp/sysconf.new
+ then
+ mv /tmp/sysconf.new "$config_root/etc/default/sysconf"
+ else
+ rm -f /tmp/sysconf.new
+ return 1
+ fi
+}
+
+#
+# sysconf_default [prefix]
+# Provde a default /etc/default/sysconf when there is no $syspart partition,
+# or when it is invalid, this function will read from an existing sysconf,
+# copying the values into the new one.
+# sysconf_line tag config-tag
+# write an appropriate line if the config value is non-empty
+sysconf_line(){
+ config "$2" | {
+ local value
+ read value
+ test -n "$value" && echo "$1"="$value"
+ }
+}
+#
+sysconf_default(){
+ local config_root
+ config_root="$1"
+ { echo '[network]'
+ sysconf_line disk_server_name host
+ sysconf_line w_d_name domain
+ sysconf_line lan_interface iface
+ sysconf_line ip_addr ip
+ sysconf_line netmask netmask
+ sysconf_line gateway gateway
+ sysconf_line dns_server1 dns
+ sysconf_line dns_server2 dns2
+ sysconf_line dns_server3 dns3
+ sysconf_line bootproto boot
+ } >/tmp/sysconf.new
+ mv /tmp/sysconf.new "$config_root/etc/default/sysconf"
+}
+
+#
+# sysconf_reload [prefix]
+# read the values from /etc/default/sysconf and use these values to set
+# up the following system files:
+#
+# /etc/hostname
+# /etc/defaultdomain
+# /etc/resolv.conf
+# /etc/network/interfaces
+# /etc/motd
+#
+sysconf_reload(){
+ local config_root host domain iface boot ip netmask gateway ifname iftype
+ config_root="$1"
+ host="$(config host)"
+ test -n "$host" && echo "$host" >"$config_root/etc/hostname"
+ domain="$(config domain)"
+ test -n "$domain" && echo "$domain" >"$config_root/etc/defaultdomain"
+ #
+ # The DNS server information gives up to three nameservers,
+ # but this currently only binds in the first.
+ {
+ test -n "$domain" && echo "search $domain"
+ test -n "$(config dns)" && echo "nameserver $(config dns)"
+ test -n "$(config dns2)" && echo "nameserver $(config dns2)"
+ test -n "$(config dns3)" && echo "nameserver $(config dns3)"
+ } >"$config_root/etc/resolv.conf"
+ #
+ # Ethernet information. This goes into /etc/network/interfaces,
+ # however this is only used for static setup (and this is not
+ # the default). With dhcp the slugos udhcp script,
+ # /etc/udhcpc.d/50default, loads the values from sysconf.
+ iface="$(config iface)"
+ boot="$(config boot)"
+ # Only dhcp and static are supported at present - bootp
+ # support requires installation of appropriate packages
+ # dhcp is the fail-safe
+ case "$boot" in
+ dhcp|static) ;;
+ *) boot=dhcp;;
+ esac
+ #
+ ip="$(config ip)"
+ netmask="$(config netmask)"
+ gateway="$(config gateway)"
+ {
+ echo "# /etc/network/interfaces"
+ echo "# configuration file for ifup(8), ifdown(8)"
+ echo "#"
+ echo "# The loopback interface"
+ echo "auto lo"
+ echo "iface lo inet loopback"
+ echo "#"
+ echo "# The interface used by default during boot"
+ echo "auto $iface"
+ echo "# Automatically generated from /etc/default/sysconf"
+ echo "# address, netmask and gateway are ignored for 'dhcp'"
+ echo "# but required for 'static'"
+ echo "iface $iface inet $boot"
+ # The following are ignored for DHCP but are harmless
+ test -n "$ip" && echo " address $ip"
+ test -n "$netmask" && echo " netmask $netmask"
+ test -n "$gateway" && echo " gateway $gateway"
+ #
+ # Now read all the other ARPHRD_ETHER (type=1) interfaces
+ # and add an entry for each.
+ for ifname in $(test -d /sys/class/net && ls /sys/class/net)
+ do
+ if test -r "/sys/class/net/$ifname/type" -a "$ifname" != "$iface"
+ then
+ read iftype <"/sys/class/net/$ifname/type"
+ case "$iftype" in
+ 1) echo "#"
+ echo "# /sys/class/net/$ifname:"
+ echo "auto $ifname"
+ echo "iface $ifname inet dhcp";;
+ esac
+ fi
+ done
+ } >"$config_root/etc/network/interfaces"
+ #
+ # Finally rewrite /etc/motd
+ { echo "Host name: $host"
+ echo "Domain name: $domain"
+ echo "Network boot method: $boot"
+ case "$boot" in
+ static) echo "Host IP address: $ip";;
+ esac
+ echo "Use 'sysconf init' to reset the configuration"
+ echo "Use 'sysconf save' to save the configuration permanently"
+ echo "Use 'sysconf restore' to restore a previously saved configuration"
+ echo "Use 'sysconf help' for more information"
+ } >"$config_root/etc/motd"
+}
+
+#
+# sysconf_save_conffiles <flash-directory> <dest> <list>
+# preserve the configuration files in a directory or in a CPIO archive
+# (which is *not* compressed). If <dest> is a directory the files are
+# copied, otherwise a CPIO archive is made with that name. <list> is
+# the listing file giving the preserved files and the processing option.
+sysconf_save_conffiles(){
+ local ffsdir dest list file
+ ffsdir="$1"
+ saved="$2"
+ list="$3"
+ test -n "$ffsdir" -a -r "$ffsdir/etc/default/conffiles" -a -n "$saved" -a -n "$list" || {
+ echo "sysconf_save_conffiles: invalid arguments: '$*'" >&2
+ echo " usage sysconf_save_conffiles <flash-directory> <dest> <list>" >&2
+ return 1
+ }
+ #
+ ( cd "$ffsdir"
+ find etc/*.conf $(sed 's!^/!!' usr/lib/ipkg/info/*.conffiles) ! -type d -newer etc/.configured -print |
+ sed 's/^/diff /'
+ exec sed 's/#.*$//;/^[ ]*$/d' etc/default/conffiles
+ ) | sed 's!^/*!!' |
+ awk '{ op=$1; $1=""; file[$0]=op }
+ END{ for (f in file) if (file[f] != "ignore") print file[f] f }' |
+ while read op file
+ do
+ if test -e "$ffsdir/$file"
+ then
+ echo "$op $file" >&3
+ echo "$file"
+ fi
+ done 3>"$list" | (
+ cd "$ffsdir"
+ if test -d "$saved"
+ then
+ exec cpio -p -d -m -u "$saved"
+ else
+ exec cpio -o -H crc >"$saved"
+ fi
+ )
+}
+
+#
+# sysconf_verify file
+# this is called with the name of a 'diff' file which is, indeed,
+# different and with all the std streams connected to the tty. It
+# returns a status code to say whether (0) or not (1) to copy the
+# file over.
+#
+# globals: the following must be defined in the calling context!
+# saved: the directory containing the unpacked saved files
+# ffsdir: the flash directory to which the files are being restored (/)
+#
+sysconf_verify_help() {
+ echo "Please specify how to handle this file or link, the options are as follows,"
+ echo "two character abbreviations may be used:"
+ echo
+ echo " keep: retain the old file, overwrite the new flash image file"
+ echo " upgrade: retain the new file, the old (saved) file is not used"
+ echo " diff: display the differences between the old and the new using diff -u"
+ echo " shell: temporarily start an interactive shell (sh -i), exit to continue"
+ echo " skip: ignore this file for the moment. The file is left in the directory"
+ echo " $saved and many be handled after this script has completed"
+}
+#
+sysconf_verify() {
+ local command file
+
+ # return 1 here causes the file not to be overwritten,
+ # control should never get here!
+ test -n "$sysconf_noninteractive" && {
+ echo "$0: $*: changed file cannot be handled non-interactively" >&2
+ return 1
+ }
+
+ file="$1"
+ echo "$0: $file: configuration file changed."
+ sysconf_verify_help "$file"
+ while :
+ do
+ echo -n "option: "
+ read command
+ case "$command" in
+ ke*) return 0;;
+ up*) rm "$saved/$file"
+ return 1;;
+ di*) echo "DIFF OLD($saved) NEW($ffsdir)"
+ diff -u "$saved/$file" "$ffsdir/$file";;
+ sh*) PS1="$file: " sh -i;;
+ sk*) return 1;;
+ *) sysconf_verify_help "$file";;
+ esac
+ done
+}
+# the same, but for a link
+sysconf_verify_link() {
+ local command link
+
+ # return 1 here causes the file not to be overwritten,
+ # control should never get here!
+ test -n "$sysconf_noninteractive" && {
+ echo "$0: $*: changed link cannot be handled non-interactively" >&2
+ return 1
+ }
+
+ link="$1"
+ echo "reflash: $link: configuration link changed."
+ sysconf_verify_help "$link"
+ while :
+ do
+ echo -n "option: "
+ read command
+ case "$command" in
+ ke*) return 0;;
+ up*) rm "$saved/$link"
+ return 1;;
+ di*) echo "DIFF:"
+ echo "OLD($saved): $link -> $(readlink "$saved/$link")"
+ echo "NEW($ffsdir): $link -> $(readlink "$ffsdir/$link")";;
+ sh*) PS1="$link: " sh -i;;
+ sk*) return 1;;
+ *) sysconf_verify_help "$link";;
+ esac
+ done
+}
+
+#
+# sysconf_restore_conffiles <flash-directory> <source-dir> <restore>
+# restore the configuration files from a directory. 'source-dir'
+# If <source> is a directory of files from sysconf_save_conffiles. The
+# list of files restored is written to the third argument (restore),
+# but is not required (/dev/null would be ok).
+#
+# the list of files to restore is read from stdin, along with the
+# processing option for each file (the format is as produced by
+# sysconf_save_conffiles in the 'list' output).
+sysconf_restore_conffiles(){
+ local ffsdir saved restore
+ # these are the globals used by the above function
+ ffsdir="$1"
+ saved="$2"
+ restore="$3"
+ test -n "$ffsdir" -a -r "$ffsdir/etc/default/conffiles" -a -d "$saved" -a -n "$restore" || {
+ echo "restore_conffiles: invalid arguments: '$*'" >&2
+ echo " usage sysconf_restore_conffiles <flash-directory> <source-dir> <list>" >&2
+ return 1
+ }
+ #
+ # read the list and process each given file
+ while read op file
+ do
+ # handle .configured specially (to preserve the original datestamp)
+ if test "$file" = "etc/.configured"
+ then
+ # this should definately not fail because of the test above!
+ if cp -a "$saved/$file" "$ffsdir/$file"
+ then
+ echo "$file" >&3
+ else
+ echo "sysconf_restore_conffiles: $file: timestamp copy failed (ignored)" >&2
+ fi
+ elif test -h "$saved/file" -o -h "$ffsdir/$file"
+ then
+ # new or old symbolic link
+ if test -h "$saved/$file" -a -h "$ffsdir/$file" &&
+ test "$(readlink "$saved/$file")" = "$(readlink "$ffsdir/$file")"
+ then
+ # no change
+ echo "$file" >&3
+ else
+ # assume a change regardless
+ case "$op" in
+ preserve)
+ echo "$file"
+ echo "$file" >&3;;
+ diff) # need user input
+ if sysconf_verify_link "$file" <>/dev/tty >&0 2>&0
+ then
+ echo "$file"
+ echo "$file" >&3
+ fi;;
+ esac
+ fi
+ else
+ # only overwrite if necessary
+ if test -e "$ffsdir/$file" && cmp -s "$saved/$file" "$ffsdir/$file"
+ then
+ # do not overwrite
+ echo "$file" >&3
+ elif test ! -e "$ffsdir/$file"
+ then
+ # always preserve
+ echo "$file"
+ echo "$file" >&3
+ else
+ case "$op" in
+ preserve)
+ echo "$file"
+ echo "$file" >&3;;
+ diff) # the files are different, get user input
+ if sysconf_verify "$file" <>/dev/tty >&0 2>&0
+ then
+ echo "$file"
+ echo "$file" >&3
+ fi;;
+ esac
+ fi
+ fi
+ done 3>"$restore" | (cd "$saved"; exec cpio -p -d -u "$ffsdir")
+}
+
+#
+# sysconf_test_restore <flash-directory> <source-dir>
+# return true only if the restore does not need to do an interactive
+# compare
+sysconf_test_restore(){
+ local ffsdir saved
+ # these are the globals used by the above function
+ ffsdir="$1"
+ saved="$2"
+ # this is an error case, but return 0 so that the error is
+ # detected later
+ test -n "$ffsdir" -a -r "$ffsdir/etc/default/conffiles" -a -d "$saved" ||
+ return 0
+ #
+ # read the list and check each diff file (this is just a copy of the
+ # logic above with all the work removed!)
+ while read op file
+ do
+ # handle .configured specially (to preserve the original datestamp)
+ if test "$op" != diff
+ then
+ : # no diff required
+ elif test "$file" = "etc/.configured"
+ then
+ : # special handling
+ elif test -h "$saved/file" -o -h "$ffsdir/$file"
+ then
+ # new or old symbolic link
+ if test -h "$saved/$file" -a -h "$ffsdir/$file" &&
+ test "$(readlink "$saved/$file")" = "$(readlink "$ffsdir/$file")"
+ then
+ : # no change
+ else
+ # assume a change regardless
+ return 1
+ fi
+ else
+ # only overwrite if necessary
+ if test -e "$ffsdir/$file" && cmp -s "$saved/$file" "$ffsdir/$file"
+ then
+ : # do not overwrite
+ elif test ! -e "$ffsdir/$file"
+ then
+ : # always preserve
+ else
+ # a change
+ return 1
+ fi
+ fi
+ done
+
+ return 0
+}
+
+#
+# mountflash "flash device" "flash root directory" {mount options}
+# Finds and mounts the flash file system on the given directory
+mountflash(){
+ local ffsdev ffsdir
+
+ ffsdev="$1"
+ test -n "$ffsdev" -a -b "$ffsdev" || {
+ echo "$0: unable to find flash file system to copy ($ffsdev)" >&2
+ return 1
+ }
+ shift
+
+ ffsdir="$1"
+ test -n "$ffsdir" -a -d "$ffsdir" || {
+ echo "$0: mountflash $ffsdir: not a directory (internal error)" >&2
+ return 1
+ }
+ shift
+
+ mount -t jffs2 "$@" "$ffsdev" "$ffsdir" || {
+ echo "$0: $ffsdev: unable to mount flash file system on $ffsdir" >&2
+ return 1
+ }
+ return 0
+}
+
+#
+# umountflash [-r] "flash device"
+# unmount any instance of the given flash device, if -r is specified a mount on
+# root is an error, otherwise a mount on root is ignored (and remains).
+umountflash(){
+ local rootok ffsno ffsdev
+ rootok=1
+ case "$1" in
+ -r) rootok=
+ shift;;
+ esac
+ #
+ # The argument is ffsdev
+ ffsdev="$1"
+ ffsno="$(devio "<<$ffsdev" prd)"
+ test -n "$ffsno" -a "$ffsno" -ge 0 || {
+ echo "$0: $ffsdev: device number $ffsno is not valid, cannot continue." >&2
+ return 1
+ }
+ #
+ # Make sure that Flashdisk isn't mounted on /
+ if test -z "$rootok" -a "$(devio "<</etc/init.d/sysconfsetup" prd)" -eq "$ffsno"
+ then
+ echo "$0: $ffsdev is mounted on /, unable to continue" >&2
+ return 1
+ fi
+ #
+ # The function is currently always used interactively, so output
+ echo "$0: umounting any existing mount of $ffsdev" >&2
+ #
+ # check each mount point, do this last first because otherwise nested
+ # mounts of ffsdev cannot be umounted.
+ ffs_umount() {
+ local device mp type options stuff
+
+ read device mp type options stuff
+ test -z "$device" && return 0
+
+ # handle following entries first
+ ffs_umount || return 1
+
+ # handle this entry, since this is currently only used for unmounting
+ # the flash root partition we know a file which must exist...
+ case "$mp/$type" in
+ //jffs2);; # skip /
+ */jffs2)test "$(devio "<<$mp/etc/init.d/sysconfsetup" prd 2>/dev/null)" -ne "$ffsno" ||
+ umount "$mp" || {
+ echo "$0: $mp: unable to umount $ffsdev" >&2
+ return 1
+ };;
+ esac
+
+ return 0
+ }
+ #
+ ffs_umount </proc/mounts || {
+ echo "$0: umount $ffsdev from all mount points then re-run $0" >&2
+ return 1
+ }
+
+ return 0
+}
+
+#
+# sysconf_save
+# save the system configuration to $syspart - $syspart must exist and
+# there must be a writeable device for it.
+sysconf_save(){
+ local sysdev ffsdev ffsdir saved list size status
+ ffsdev="$(mtblockdev $ffspart)"
+ sysdev="$(mtblockdev $syspart)"
+ status=1
+ if test -n "$sysdev" -a -b "$sysdev" -a -n "$ffsdev" -a -b "$ffsdev"
+ then
+ # this will succeed silently if the flash device is on /
+ umountflash "$ffsdev" || exit 1
+ #
+ # Everything is umounted, now remount on a temporary directory.
+ ffsdir="/tmp/flashdisk.$$"
+ mkdir "$ffsdir" || {
+ echo "$0: $ffsdir: failed to create temporary directory" >&2
+ exit 1
+ }
+ #
+ mountflash "$ffsdev" "$ffsdir" -o ro || {
+ rmdir "$ffsdir"
+ exit 1
+ }
+ # need temporary files for the cpio output and the listing
+ saved=/tmp/cpio.$$
+ list=/tmp/preserve.$$
+ rm -rf "$saved" "$list"
+ sysconf_save_conffiles "$ffsdir" "$saved" "$list" || {
+ echo "$0: $saved: archive of saved configuration files failed" >&2
+ rm -rf "$saved"
+ rm "$list"
+ umount "$ffsdir" && rmdir "$ffsdir" ||
+ echo "$0: $ffsdir: temporary directory cleanup failed" >&2
+ return 1
+ }
+ # ignore the error in this case:
+ umount "$ffsdir" && rmdir "$ffsdir" ||
+ echo "$0: $ffsdir: temporary directory cleanup failed" >&2
+ #
+ # we now have:
+ # /etc/default/sysconf the basic config
+ # /tmp/preserve.$$ the list of saved files
+ # /tmp/cpio.$$ the CPIO archive of those files
+ #
+ # make one big file with the sysconf data followed by the
+ # compressed archive in /tmp/sysconf.$$
+ { { cat /etc/default/sysconf
+ echo '[preserve]'
+ } | sed -n '1,/^\[preserve\]^/p'
+ while read op file
+ do
+ echo "$op"="$file"
+ done <"$list"
+ } >/tmp/sysconf.$$
+ size="$(devio "<</tmp/sysconf.$$" 'pr$')"
+ gzip -9 <"$saved" >>/tmp/sysconf.$$
+ #
+ # more cleanup, then try to write the new sysconf to $syspart
+ # the format is a 4 byte big-endian length then the text data
+ # if the data won't fit exit with error code 7
+ rm "$saved" "$list"
+ devio -p "<</tmp/sysconf.$$" ">>$sysdev" '
+ $( $4+ # >
+ !! 7
+ $) 0
+ wb '"$size"',4
+ cp $'
+ case $? in
+ 0) echo " done" >&2
+ status=0;;
+ 1) echo " failed" >&2
+ echo " $syspart could not be written (no changes made)" >&2;;
+ 3) echo " failed" >&2
+ echo " $syspart partially written, you may want to reset it" >&2;;
+ 7) echo " failed" >&2
+ echo " $syspart is too small: $size bytes required" >&2
+ echo " No change made" >&2;;
+ *) echo " failed" >&2
+ echo " Internal error writing $syspart" >&2;;
+ esac
+ #
+ rm -f /tmp/sysconf.$$
+ else
+ echo "sysconf save: $syspart or $ffspart partition not found" >&2
+ echo " A RedBoot partition named '$syspart' must exist in the system" >&2
+ echo " flash memory for this command to work, and there must be a" >&2
+ echo " block device to access this partition (udev will normally" >&2
+ echo " create this automatically. The flash partition contents must" >&2
+ echo " also be accessible in a partition called '$ffspart'" >&2
+ echo
+ echo " To create the $syspart partition use the 'fis create' command" >&2
+ echo " in the RedBoot boot loader, it is sufficient to make the" >&2
+ echo " partition one erase block in size unless you have substantially" >&2
+ echo " increased the size of the files listed in /etc/default/conffiles" >&2
+ fi
+
+ return $status
+}
+
+#
+# sysconf_restore [auto]
+# restore previously saved configuration information from $syspart
+sysconf_restore_error(){
+ local root
+ root="$1"
+ shift
+ # -------------------------------------------------------------------------------
+ { echo " WARNING: saved configuration files not restored"
+ test -n "$1" && echo "$*"
+ echo
+ echo "The configuration of this machine has been reinitialised using the values"
+ echo "from /etc/default/sysconf, however configuration files saved in the $syspart"
+ echo "partition have not been restored."
+ echo
+ echo "You can restore these files by correcting any reported errors then running"
+ echo
+ echo " sysconf restore"
+ echo
+ echo "from the command line. This will completely reinitialise the configuration"
+ echo "using the information in the $syspart partition."
+ } >"$root/etc/motd"
+ cat "$root/etc/motd" >&2
+}
+#
+sysconf_restore(){
+ local sysdev ffsdev ffsdir saved restore size status sysconf_noninteractive config_root
+
+ # if set this means 'do no diff' - this avoids the code above which
+ # would open /dev/tty and therefore allows this stuff to be done from
+ # an init script
+ sysconf_noninteractive=
+ test "$1" = auto && sysconf_noninteractive=1
+
+ ffsdev="$(mtblockdev $ffspart)"
+ sysdev="$(mtblockdev $syspart)"
+ status=1
+ if test -n "$sysdev" -a -b "$sysdev" -a -n "$ffsdev" -a -b "$ffsdev" &&
+ sysconf_valid
+ then
+ # this will succeed silently if the flash device is on /
+ umountflash "$ffsdev" || exit 1
+ #
+ # Everything is umounted, now remount on a temporary directory.
+ ffsdir="/tmp/flashdisk.$$"
+ config_root="$ffsdir"
+ mkdir "$ffsdir" || {
+ echo "$0: $ffsdir: failed to create temporary directory" >&2
+ exit 1
+ }
+ #
+ mountflash "$ffsdev" "$ffsdir" || {
+ rmdir "$ffsdir"
+ exit 1
+ }
+ #
+ # first restore the $syspart section
+ sysconf_read "$ffsdir" || sysconf_default "$ffsdir"
+ #
+ # now use this to regenerate the system files
+ sysconf_reload "$ffsdir"
+ #
+ # now examine the [preserve] section, if it is there restore
+ # it if possible.
+ if test -n "$(syssection preserve)"
+ then
+ # 'saved' is a directory, 'restore' is a file (which is
+ # used to detect unrestored files). The directory needs
+ # to be populated with files.
+ saved=/tmp/cpio.$$
+ restore=/tmp/restore.$$
+ rm -rf "$saved" "$restore"
+ #
+ mkdir "$saved" || {
+ sysconf_restore_error "$ffsdir" "$saved: failed to create temporary directory"
+ return 1
+ }
+ #
+ # the CPIO archive is gzip compressed after the text part
+ # of sysconf, gzip will handle the LZ stream termination
+ # correctly (and break the pipe) so we don't need to know
+ # the real length of the data
+ devio "<<$sysdev" '<=b4+.' 'cp $s-' | gunzip | (
+ cd "$saved"
+ exec cpio -i -d -m -u
+ ) || {
+ rm -rf "$saved"
+ sysconf_restore_error "$ffsdir" "$saved: cpio -i failed"
+ return 1
+ }
+ # either there must be no 'diff' files or it must
+ # be possible to interact with a real user.
+ if test -z "$sysconf_noninteractive" ||
+ syssection preserve | sysconf_test_restore "$ffsdir" "$saved"
+ then
+ #
+ # remove the 'init' motd from sysconf_reload
+ rm "$ffsdir/etc/motd"
+ #
+ # now restore from the directory, using the information in
+ # the preserve section, if this fails in a non-interactive
+ # setting the system might not reboot
+ syssection preserve |
+ sysconf_restore_conffiles "$ffsdir" "$saved" "$restore" || {
+ # there is a chance of the user cleaning this up
+#------------------------------------------------------------------------------
+ sysconf_restore_error "$ffsdir" \
+"$0: $saved: restore of saved configuration files failed.
+ The flash file system is mounted on $ffsdir.
+ The saved files are in $saved and the list of files selected for
+ restore is in $restore.
+ You should restore any required configuration from $saved, then umount
+ $ffsdir and reboot."
+ # this prevents cleanup/umount
+ return 1
+ }
+ #
+ # remove the copied files (i.e. the ones which were preserved)
+ ( cd "$saved"
+ exec rm $(cat "$restore")
+ )
+ rm "$restore"
+ #
+ # clean up, files left in $saved need to be handled by the user
+ files="$(find "$saved" ! -type d -print)"
+ if test -n "$files"
+ then
+#------------------------------------------------------------------------------
+ sysconf_restore_error "$ffsdir" \
+"$0: some saved configuration files have not been handled:
+
+$files
+
+These files can be examined in $saved and restored to
+$ffsdir if required. The saved files are in a temporary
+directory and will not be retained across a reboot - copy then elsewhere if
+you are unsure whether they are needed."
+ return 1
+ fi
+ #
+ # so this is safe now (no files, links etc)
+ rm -rf "$saved"
+ else
+ rm -rf "$saved"
+ # non-interactive and some changed diff files
+ sysconf_restore_error "$ffsdir" \
+"$0: some of the saved configuration files must be
+examined before restoration"
+ # but continue to the umount
+ fi
+ fi
+ #
+ # ignore the error in this case:
+ umount "$ffsdir" && rmdir "$ffsdir" ||
+ echo "$0: $ffsdir: temporary directory cleanup failed" >&2
+ status=0
+ else
+ echo "sysconf restore: $syspart or $ffspart partition not found" >&2
+ echo " You must have used 'sysconf save' to save configuration data" >&2
+ echo " into the $syspart partition before using this command. The command" >&2
+ echo " will restore the configuration data to the flash root partition" >&2
+ echo " named '$ffspart' - this must also be accessible." >&2
+ fi
+
+ return $status
+}
+
+#
+# read_one 'prompt' 'group' 'name'
+# read a single value
+read_one() {
+ local n o
+ o="$(sysval "$2" "$3")"
+ echo -n "$1 [$o]: " >/dev/tty
+ read n </dev/tty
+ test -z "$n" && n="$o"
+ eval "$3='$n'"
+}
+
+#
+# sysconf_init
+# Change the network initialisation
+sysconf_init() {
+ read_one "Host name" network disk_server_name
+ read_one "Domain name" network w_d_name
+ read_one "Boot protocol (dhcp|static)" network bootproto
+ case "$bootproto" in
+ static) read_one "IP address" network ip_addr
+ read_one "IP netmask" network netmask
+ read_one "IP gateway" network gateway
+ read_one "First DNS server" network dns_server1
+ read_one "Second DNS server" network dns_server2
+ read_one "Third DNS server" network dns_server3
+ echo "$ip_addr $disk_server_name" >> /etc/hosts
+ ;;
+ dhcp) sed -i -e "s/localhost\$/localhost $disk_server_name/" /etc/hosts
+ ;;
+ *) bootproto=dhcp;;
+ esac
+ #
+ # The other stuff which cannot be changed
+ lan_interface="$(config iface)"
+ #
+ # Write this out to a new sysconf
+ { echo "[network]"
+ echo "lan_interface=$lan_interface"
+ test -n "$disk_server_name" && echo "disk_server_name=$disk_server_name"
+ test -n "$w_d_name" && echo "w_d_name=$w_d_name"
+ echo "bootproto=$bootproto"
+ case "$bootproto" in
+ static) echo "ip_addr=$ip_addr"
+ test -n "$netmask" && echo "netmask=$netmask"
+ test -n "$gateway" && echo "gateway=$gateway"
+ test -n "$dns_server1" && echo "dns_server1=$dns_server1"
+ test -n "$dns_server2" && echo "dns_server2=$dns_server2"
+ test -n "$dns_server3" && echo "dns_server3=$dns_server3"
+ ;;
+ esac
+ } >/etc/default/sysconf
+ #
+ # And reload the result
+ sysconf_reload
+ #
+ # The remove the spurious 'init' motd
+ rm /etc/motd
+}
+
+#
+# sysconf_help
+# help text
+sysconf_help(){
+ # -------------------------------------------------------------------------------
+ echo "sysconf: usage: sysconf init|read|default|reload|save|restore" >&2
+ echo " init: initialise network information when DHCP is not available" >&2
+ echo " read: the current $syspart partition is read into /etc/default/sysconf" >&2
+ echo " default: a default /etc/default/sysconf is created" >&2
+ echo " reload: system configuration files are recreated from /etc/default/sysconf" >&2
+ echo " save: /etc/default/sysconf and the files listed in /etc/default/conffiles" >&2
+ echo " are written to the $syspart partition" >&2
+ echo " restore: the configuration information in the $syspart partition saved by" >&2
+ echo " 'sysconf save' is restored" >&2
+}
+
+#
+# the real commands
+sysconf_command="$1"
+test $# -gt 0 && shift
+case "$sysconf_command" in
+init) sysconf_init "$@";;
+read) sysconf_read "$@";;
+default)sysconf_default "$@";;
+reload) sysconf_reload "$@";;
+save) sysconf_save "$@";;
+restore)sysconf_restore "$@";;
+valid) sysconf_valid "$@";;
+
+sysconf)# just load the functions
+ ;;
+
+*) # help text
+ sysconf_help "$@";;
+esac
diff --git a/packages/sysconf/files/sysconfsetup b/packages/sysconf/files/sysconfsetup
new file mode 100644
index 0000000000..7b91a0e331
--- /dev/null
+++ b/packages/sysconf/files/sysconfsetup
@@ -0,0 +1,59 @@
+#!/bin/sh
+# This script is run once when the system first boots. Its sole
+# purpose is to create /etc/default/sysconf (the overall system
+# configuration file) and other files derived from this.
+#
+# The script runs immediately after S10checkroot.sh - this is the
+# point at which the rootfs will be mounted rw even if the kernel
+# booted with it ro.
+#
+# rm or mv the file (/etc/default/sysconf) to recreate it, run this
+# script with the reload option to overwrite the system files. The
+# configuration files described in sysconf_reload (in
+# /sbin/sysconf) will be overwritten on reload.
+#
+# start: standard startup, do a complete (auto) restore if necessary
+# reinit: always do a complete auto restore
+# reload: just reload sysconf (no config files!)
+#
+# /etc/default/functions contains useful utility functions - it's
+# in a separate file so that it can be loaded by any script
+# load_functions "source"
+# load the functions in '/sbin/source' - relies on /sbin/source being
+# a shell script and having support for this function.
+
+# load_functions "source"
+# load the functions in '/sbin/source' - relies on /sbin/source being
+# a shell script and having support for this function.
+load_functions(){
+ test -n "$1" -a -x "/sbin/$1" && . "/sbin/$1" || {
+ echo "$0: /sbin/$1: script not found" >&2
+ return 1
+ }
+}
+
+load_functions sysconf || exit 1
+
+case "$1" in
+start) test -s /etc/default/sysconf || {
+ if sysconf_read
+ then
+ if sysconf_valid
+ then
+ sysconf_restore auto
+ else
+ sysconf_reload
+ fi
+ else
+ sysconf_default
+ sysconf_reload
+ fi
+ };;
+
+reload) test -s /etc/default/sysconf || sysconf_read || sysconf_default
+ sysconf_reload;;
+
+reinit) sysconf_restore auto;;
+
+*) ;;
+esac
diff --git a/packages/sysconf/sysconf_0.1.bb b/packages/sysconf/sysconf_0.1.bb
new file mode 100644
index 0000000000..fd37cd01f7
--- /dev/null
+++ b/packages/sysconf/sysconf_0.1.bb
@@ -0,0 +1,52 @@
+DESCRIPTION = "System Configuration save/restore functionality"
+SECTION = "base"
+PRIORITY = "optional"
+LICENSE = "GPL"
+RDEPENDS = "devio cpio findutils diffutils"
+PR = "r8"
+
+# Currently, the scripts only support ixp4xx machines.
+# Feel free to add to the scripts ...
+COMPATIBLE_MACHINE = '(ixp4xx|nslu2)'
+
+SRC_URI = "file://sysconfsetup \
+ file://conffiles \
+ file://sysconf \
+ "
+
+SCRIPTS = "sysconf"
+INITSCRIPTS = "sysconfsetup"
+
+# This just makes things easier...
+S="${WORKDIR}"
+
+do_install() {
+ # Directories
+ install -d ${D}${sysconfdir} \
+ ${D}${sysconfdir}/default \
+ ${D}${sysconfdir}/init.d \
+ ${D}${base_sbindir}
+
+ # Init scripts
+ install -m 0755 sysconfsetup ${D}${sysconfdir}/init.d/
+
+ # Configuration files
+ install -m 0644 conffiles ${D}${sysconfdir}/default
+
+ # Shell scripts
+ install -m 0755 sysconf ${D}${base_sbindir}/sysconf
+}
+
+pkg_postinst() {
+ opt=
+ test -n "$D" && opt="-r $D"
+ update-rc.d $opt sysconfsetup start 12 S .
+}
+
+pkg_postrm() {
+ opt=
+ test -n "$D" && opt="-r $D"
+ update-rc.d $opt sysconfsetup remove
+}
+
+CONFFILES = "${sysconfdir}/default/conffiles"
diff --git a/packages/syslinux/syslinux-native_2.11.bb b/packages/syslinux/syslinux-native_2.11.bb
index 3d0c5e5ad8..a05728f0a5 100644
--- a/packages/syslinux/syslinux-native_2.11.bb
+++ b/packages/syslinux/syslinux-native_2.11.bb
@@ -1,38 +1,10 @@
-# syslinux-native OE build file
-# Copyright (C) 2004-2006, Advanced Micro Devices, Inc. All Rights Reserved
-# Released under the MIT license (see packages/COPYING)
-
-DESCRIPTION="A multi-purpose linux bootloader"
-HOMEPAGE="http://syslinux.zytor.com/"
-LICENSE="GPL"
-
PR="r1"
SRC_URI="${KERNELORG_MIRROR}/pub/linux/utils/boot/syslinux/Old/syslinux-${PV}.tar.bz2 \
-file://edx_assume_zero.patch;patch=1"
-
-S="${WORKDIR}/syslinux-${PV}"
-
-# If you really want to run syslinux, you need mtools. We just want the
-# ldlinux.* stuff for now, so skip mtools-native
-
-DEPENDS="nasm-native"
+ file://edx_assume_zero.patch;patch=1"
-inherit native
+require syslinux.inc
do_compile() {
oe_runmake syslinux
}
-
-do_stage() {
- install -d ${STAGING_BINDIR}
- install -m 755 ${S}/syslinux ${STAGING_BINDIR}
-
- # When building media, the syslinux binary isn't nearly as useful
- # as the DOS data files, so we copy those into a special location
- # for usage during a image build stage
-
- install -d ${STAGING_DATADIR}/syslinux
- install -m 644 ${S}/ldlinux.sys ${STAGING_DATADIR}/syslinux/ldlinux.sys
- install -m 644 ${S}/ldlinux.bss ${STAGING_DATADIR}/syslinux/ldlinux.bss
-}
diff --git a/packages/syslinux/syslinux-native_3.11.bb b/packages/syslinux/syslinux-native_3.11.bb
index 90395a7ab2..28d750aab5 100644
--- a/packages/syslinux/syslinux-native_3.11.bb
+++ b/packages/syslinux/syslinux-native_3.11.bb
@@ -1,39 +1,5 @@
-# syslinux-native OE build file
-# Copyright (C) 2004-2006, Advanced Micro Devices, Inc. All Rights Reserved
-# Released under the MIT license (see packages/COPYING)
-
-DESCRIPTION="A multi-purpose linux bootloader"
-HOMEPAGE="http://syslinux.zytor.com/"
-LICENSE="GPL"
-
PR="r1"
-SRC_URI="${KERNELORG_MIRROR}/pub/linux/utils/boot/syslinux/syslinux-${PV}.tar.bz2 "
-
-S="${WORKDIR}/syslinux-${PV}"
-
-# If you really want to run syslinux, you need mtools. We just want the
-# ldlinux.* stuff for now, so skip mtools-native
-
-DEPENDS="nasm-native"
-
-inherit native
-
-STAGE_TEMP="${WORKDIR}/stage_temp"
-
-do_stage() {
- install -d ${STAGE_TEMP}
- oe_runmake install INSTALLROOT="${STAGE_TEMP}"
-
- install -d ${STAGING_BINDIR}
- install -m 755 ${STAGE_TEMP}/usr/bin/syslinux ${STAGING_BINDIR}
-
- # When building media, the syslinux binary isn't nearly as useful
- # as the DOS data files, so we copy those into a special location
- # for usage during a image build stage
+SRC_URI="${KERNELORG_MIRROR}/pub/linux/utils/boot/syslinux/Old/syslinux-${PV}.tar.bz2 "
- install -d ${STAGING_DATADIR}/syslinux
- install -m 0644 ${STAGE_TEMP}/usr/lib/syslinux/isolinux.bin ${STAGING_DATADIR}/syslinux/isolinux.bin
- install -m 644 ${S}/ldlinux.sys ${STAGING_DATADIR}/syslinux/ldlinux.sys
- install -m 644 ${S}/ldlinux.bss ${STAGING_DATADIR}/syslinux/ldlinux.bss
-}
+require syslinux3.inc
diff --git a/packages/syslinux/syslinux-native_3.31.bb b/packages/syslinux/syslinux-native_3.31.bb
new file mode 100644
index 0000000000..6971874ea3
--- /dev/null
+++ b/packages/syslinux/syslinux-native_3.31.bb
@@ -0,0 +1,3 @@
+SRC_URI="${KERNELORG_MIRROR}/pub/linux/utils/boot/syslinux/syslinux-${PV}.tar.bz2 "
+
+require syslinux3.inc
diff --git a/packages/syslinux/syslinux-native_3.36.bb b/packages/syslinux/syslinux-native_3.36.bb
new file mode 100644
index 0000000000..d9019a4ab4
--- /dev/null
+++ b/packages/syslinux/syslinux-native_3.36.bb
@@ -0,0 +1,3 @@
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/boot/syslinux/syslinux-${PV}.tar.bz2 "
+
+require syslinux3.inc
diff --git a/packages/syslinux/syslinux.inc b/packages/syslinux/syslinux.inc
new file mode 100644
index 0000000000..41be168d12
--- /dev/null
+++ b/packages/syslinux/syslinux.inc
@@ -0,0 +1,29 @@
+# syslinux-native OE build file
+# Copyright (C) 2004-2006, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+DESCRIPTION="A multi-purpose linux bootloader"
+HOMEPAGE="http://syslinux.zytor.com/"
+LICENSE="GPL"
+
+# If you really want to run syslinux, you need mtools. We just want the
+# ldlinux.* stuff for now, so skip mtools-native
+DEPENDS="nasm-native"
+
+S="${WORKDIR}/syslinux-${PV}"
+
+
+inherit native
+
+do_stage() {
+ install -d ${STAGING_BINDIR}
+ install -m 755 ${S}/syslinux ${STAGING_BINDIR}
+
+ # When building media, the syslinux binary isn't nearly as useful
+ # as the DOS data files, so we copy those into a special location
+ # for usage during a image build stage
+
+ install -d ${STAGING_DATADIR}/syslinux
+ install -m 644 ${S}/ldlinux.sys ${STAGING_DATADIR}/syslinux/ldlinux.sys
+ install -m 644 ${S}/ldlinux.bss ${STAGING_DATADIR}/syslinux/ldlinux.bss
+}
diff --git a/packages/syslinux/syslinux3.inc b/packages/syslinux/syslinux3.inc
new file mode 100644
index 0000000000..95124d6160
--- /dev/null
+++ b/packages/syslinux/syslinux3.inc
@@ -0,0 +1,21 @@
+require syslinux.inc
+
+STAGE_TEMP="${WORKDIR}/stage_temp"
+
+do_stage() {
+ install -d ${STAGE_TEMP}
+ oe_runmake install INSTALLROOT="${STAGE_TEMP}"
+
+ install -d ${STAGING_BINDIR}
+ install -m 755 ${STAGE_TEMP}/usr/bin/syslinux ${STAGING_BINDIR}
+ install -m 755 ${STAGE_TEMP}/sbin/extlinux ${STAGING_BINDIR}
+
+ # When building media, the syslinux binary isn't nearly as useful
+ # as the DOS data files, so we copy those into a special location
+ # for usage during a image build stage
+
+ install -d ${STAGING_DATADIR}/syslinux
+ install -m 0644 ${STAGE_TEMP}/usr/lib/syslinux/isolinux.bin ${STAGING_DATADIR}/syslinux/isolinux.bin
+ install -m 644 ${S}/ldlinux.sys ${STAGING_DATADIR}/syslinux/ldlinux.sys
+ install -m 644 ${S}/ldlinux.bss ${STAGING_DATADIR}/syslinux/ldlinux.bss
+}
diff --git a/packages/sysvinit/sysvinit/angstrom/rc b/packages/sysvinit/sysvinit/angstrom/rc
index 7716a52099..30b69ad516 100755
--- a/packages/sysvinit/sysvinit/angstrom/rc
+++ b/packages/sysvinit/sysvinit/angstrom/rc
@@ -1,5 +1,4 @@
#!/bin/sh
-
#
# rc This file is responsible for starting/stopping
# services when the runlevel changes.
@@ -21,13 +20,12 @@ export VERBOSE
startup_progress() {
step=$(($step + $step_change))
-
- if [ $(($num_steps + $first_step)) -lt 1 ]; then
- numsteps="1"
- first_step="0"
+ if [ "$num_steps" != "0" ]; then
+ progress=$((($step * $progress_size / $num_steps) + $first_step))
+ else
+ progress=$progress_size
fi
-
- progress=$(($step * $progress_size / $num_steps + $first_step))
+ #echo "PROGRESS is $progress $runlevel $first_step + ($step of $num_steps) $step_change $progress_size"
if type psplash-write >/dev/null 2>&1; then
TMPDIR=/mnt/.psplash psplash-write "PROGRESS $progress" || true
fi
@@ -93,10 +91,10 @@ startup() {
case "$runlevel" in
0|6)
- # Count down from 0 to -100 and use the entire bar
- first_step=0
+ # Count down from -100 to 0 and use the entire bar
+ first_step=-100
progress_size=100
- step_change=-1
+ step_change=1
;;
S)
# Begin where the initramfs left off and use 2/3
@@ -113,6 +111,17 @@ startup() {
;;
esac
+ num_steps=0
+ for s in /etc/rc$runlevel.d/[SK]*; do
+ case "${s##/etc/rc$runlevel.d/S??}" in
+ gdm|xdm|kdm|reboot|halt)
+ break
+ ;;
+ esac
+ num_steps=$(($num_steps + 1))
+ done
+ step=0
+
# First, run the KILL scripts.
if [ $previous != N ]
then
@@ -126,18 +135,6 @@ startup() {
done
fi
- num_steps=0
- for s in /etc/rc$runlevel.d/[SK]*; do
- case "${s##/etc/rc$runlevel.d/S??}" in
- gdm|xdm|kdm|reboot|halt)
- break
- ;;
- esac
- num_steps=$(($num_steps + 1))
- done
-
- step=0
-
# Now run the START scripts for this runlevel.
for i in /etc/rc$runlevel.d/S*
do
@@ -170,9 +167,10 @@ startup() {
done
fi
-if [ "x$runlevel" != "xS" ]; then
- if type psplash-write >/dev/null 2>&1; then
- TMPDIR=/mnt/.psplash psplash-write "QUIT" || true
- umount /mnt/.psplash
- fi
-fi
+#Uncomment to cause psplash to exit manually, otherwise it exits when it sees a VC switch
+#if [ "x$runlevel" != "xS" ]; then
+# if type psplash-write >/dev/null 2>&1; then
+# TMPDIR=/mnt/.psplash psplash-write "QUIT" || true
+# umount /mnt/.psplash
+# fi
+#fi
diff --git a/packages/sysvinit/sysvinit/htcuniversal/inittab b/packages/sysvinit/sysvinit/htcuniversal/inittab
deleted file mode 100644
index 6abbdf4558..0000000000
--- a/packages/sysvinit/sysvinit/htcuniversal/inittab
+++ /dev/null
@@ -1,30 +0,0 @@
-# /etc/inittab: init(8) configuration.
-# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $
-
-# The default runlevel.
-id:5:initdefault:
-
-# Boot-time system configuration/initialization script.
-# This is run first except when booting in emergency (-b) mode.
-si::sysinit:/etc/init.d/rcS
-
-# What to do in single-user mode.
-~~:S:wait:/sbin/sulogin
-
-# /etc/init.d executes the S and K scripts upon change
-# of runlevel.
-#
-# Runlevel 0 is halt.
-# Runlevel 1 is single-user.
-# Runlevels 2-5 are multi-user.
-# Runlevel 6 is reboot.
-
-l0:0:wait:/etc/init.d/rc 0
-l1:1:wait:/etc/init.d/rc 1
-l2:2:wait:/etc/init.d/rc 2
-l3:3:wait:/etc/init.d/rc 3
-l4:4:wait:/etc/init.d/rc 4
-l5:5:wait:/etc/init.d/rc 5
-l6:6:wait:/etc/init.d/rc 6
-# Normally not reached, but fallthrough in case of emergency.
-z6:6:respawn:/sbin/sulogin
diff --git a/packages/sysvinit/sysvinit/oplinux-uclibc/.mtn2git_empty b/packages/sysvinit/sysvinit/oplinux-uclibc/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sysvinit/sysvinit/oplinux-uclibc/.mtn2git_empty
diff --git a/packages/sysvinit/sysvinit/oplinux-uclibc/inittab b/packages/sysvinit/sysvinit/oplinux-uclibc/inittab
new file mode 100644
index 0000000000..1bb7c45254
--- /dev/null
+++ b/packages/sysvinit/sysvinit/oplinux-uclibc/inittab
@@ -0,0 +1,39 @@
+# /etc/inittab: init(8) configuration.
+# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $
+
+# The default runlevel.
+id:2:initdefault:
+
+# Boot-time system configuration/initialization script.
+# This is run first except when booting in emergency (-b) mode.
+si::sysinit:/etc/init.d/rcS
+
+# What to do in single-user mode.
+~~:S:wait:/sbin/sulogin
+
+# /etc/init.d executes the S and K scripts upon change
+# of runlevel.
+#
+# Runlevel 0 is halt.
+# Runlevel 1 is single-user.
+# Runlevels 2-5 are multi-user.
+# Runlevel 6 is reboot.
+
+l0:0:wait:/etc/init.d/rc 0
+l1:1:wait:/etc/init.d/rc 1
+l2:2:wait:/etc/init.d/rc 2
+l3:3:wait:/etc/init.d/rc 3
+l4:4:wait:/etc/init.d/rc 4
+l5:5:wait:/etc/init.d/rc 5
+l6:6:wait:/etc/init.d/rc 6
+# Normally not reached, but fallthrough in case of emergency.
+z6:6:respawn:/sbin/sulogin
+
+
+1:2345:respawn:/sbin/getty 115200 tty1
+2:23:respawn:/sbin/getty 115200 tty2
+3:23:respawn:/sbin/getty 115200 tty3
+4:23:respawn:/sbin/getty 115200 tty4
+5:23:respawn:/sbin/getty 115200 tty5
+6:23:respawn:/sbin/getty 115200 tty6
+
diff --git a/packages/sysvinit/sysvinit/oplinux/.mtn2git_empty b/packages/sysvinit/sysvinit/oplinux/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sysvinit/sysvinit/oplinux/.mtn2git_empty
diff --git a/packages/sysvinit/sysvinit/oplinux/inittab b/packages/sysvinit/sysvinit/oplinux/inittab
new file mode 100644
index 0000000000..1bb7c45254
--- /dev/null
+++ b/packages/sysvinit/sysvinit/oplinux/inittab
@@ -0,0 +1,39 @@
+# /etc/inittab: init(8) configuration.
+# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $
+
+# The default runlevel.
+id:2:initdefault:
+
+# Boot-time system configuration/initialization script.
+# This is run first except when booting in emergency (-b) mode.
+si::sysinit:/etc/init.d/rcS
+
+# What to do in single-user mode.
+~~:S:wait:/sbin/sulogin
+
+# /etc/init.d executes the S and K scripts upon change
+# of runlevel.
+#
+# Runlevel 0 is halt.
+# Runlevel 1 is single-user.
+# Runlevels 2-5 are multi-user.
+# Runlevel 6 is reboot.
+
+l0:0:wait:/etc/init.d/rc 0
+l1:1:wait:/etc/init.d/rc 1
+l2:2:wait:/etc/init.d/rc 2
+l3:3:wait:/etc/init.d/rc 3
+l4:4:wait:/etc/init.d/rc 4
+l5:5:wait:/etc/init.d/rc 5
+l6:6:wait:/etc/init.d/rc 6
+# Normally not reached, but fallthrough in case of emergency.
+z6:6:respawn:/sbin/sulogin
+
+
+1:2345:respawn:/sbin/getty 115200 tty1
+2:23:respawn:/sbin/getty 115200 tty2
+3:23:respawn:/sbin/getty 115200 tty3
+4:23:respawn:/sbin/getty 115200 tty4
+5:23:respawn:/sbin/getty 115200 tty5
+6:23:respawn:/sbin/getty 115200 tty6
+
diff --git a/packages/sysvinit/sysvinit_2.86.bb b/packages/sysvinit/sysvinit_2.86.bb
index aa7aa83351..c8ce5ba191 100644
--- a/packages/sysvinit/sysvinit_2.86.bb
+++ b/packages/sysvinit/sysvinit_2.86.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "System-V like init."
SECTION = "base"
LICENSE = "GPL"
HOMEPAGE = "http://freshmeat.net/projects/sysvinit/"
-PR = "r31"
+PR = "r34"
# USE_VT and SERIAL_CONSOLE are generally defined by the MACHINE .conf.
# Set PACKAGE_ARCH appropriately.
@@ -62,7 +62,7 @@ do_install () {
if [ ! -z "${SERIAL_CONSOLE}" ]; then
echo "S:2345:respawn:${base_sbindir}/getty ${SERIAL_CONSOLE}" >> ${D}${sysconfdir}/inittab
fi
- if [ "${USE_VT}" == "1" ]; then
+ if [ "${USE_VT}" = "1" ]; then
cat <<EOF >>${D}${sysconfdir}/inittab
# ${base_sbindir}/getty invocations for the runlevels.
#
diff --git a/packages/tapioca/libjingle-tapioca_0.3.10.bb b/packages/tapioca/libjingle-tapioca_0.3.10.bb
new file mode 100644
index 0000000000..9ea27e691b
--- /dev/null
+++ b/packages/tapioca/libjingle-tapioca_0.3.10.bb
@@ -0,0 +1,14 @@
+LICENSE = "BERKLEY"
+DEPENDS = "openssl ortp speex expat"
+PROVIDES = "libjingle"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/tapioca-voip/libjingle-${PV}.tar.gz"
+
+S = "${WORKDIR}/libjingle-${PV}"
+
+inherit autotools pkgconfig
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/tapioca/libjingle-tapioca_svn.bb b/packages/tapioca/libjingle-tapioca_svn.bb
deleted file mode 100644
index de3fc0271b..0000000000
--- a/packages/tapioca/libjingle-tapioca_svn.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-PR = "r0"
-LICENSE = "BERKLEY"
-DEPENDS = "openssl ortp speex expat"
-PROVIDES = "libjingle"
-CVSDATE = "20060322"
-SRCDATE = "${CVSDATE}"
-PV = "0.3.0+tapiocasvn${SRCDATE}"
-
-inherit autotools pkgconfig
-
-SRC_URI = "svn://svn.sourceforge.net/svnroot/tapioca-voip/trunk;module=libjingle;proto=https"
-
-S = "${WORKDIR}/libjingle"
-
-do_stage () {
- autotools_stage_all
-}
diff --git a/packages/tapioca/tapioca-xmpp_0.3.0.bb b/packages/tapioca/tapioca-xmpp_0.3.0.bb
deleted file mode 100644
index bd85743b00..0000000000
--- a/packages/tapioca/tapioca-xmpp_0.3.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-PR = "r1"
-HOMEPAGE = "http://tapioca-voip.sourceforge.net/wiki/index.php/Tapioca"
-LICENSE = "LGPL"
-DEPENDS = "glib-2.0 dbus libjingle openssl tapioca"
-inherit autotools pkgconfig
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/tapioca-voip/${P}.tar.gz"
-
-FILES_${PN} += "${datadir}/dbus* ${datadir}/tapioca* "
-
-do_stage () {
- autotools_stage_all
-}
diff --git a/packages/tapioca/tapioca-xmpp_0.3.9.bb b/packages/tapioca/tapioca-xmpp_0.3.9.bb
new file mode 100644
index 0000000000..1d9e02f7d6
--- /dev/null
+++ b/packages/tapioca/tapioca-xmpp_0.3.9.bb
@@ -0,0 +1,12 @@
+HOMEPAGE = "http://tapioca-voip.sourceforge.net/wiki/index.php/Tapioca"
+LICENSE = "LGPL"
+DEPENDS = "glib-2.0 dbus libjingle openssl tapioca"
+inherit autotools pkgconfig
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/tapioca-voip/${P}.tar.gz"
+
+FILES_${PN} += "${datadir}/dbus* ${datadir}/tapioca* "
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/tapioca/tapioca_0.3.0.bb b/packages/tapioca/tapioca_0.3.0.bb
deleted file mode 100644
index f0f3b00ced..0000000000
--- a/packages/tapioca/tapioca_0.3.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-PR = "r1"
-HOMEPAGE = "http://tapioca-voip.sourceforge.net/wiki/index.php/Tapioca"
-LICENSE = "LGPL"
-DEPENDS = "glib-2.0 dbus"
-
-inherit autotools pkgconfig
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/tapioca-voip/${P}.tar.gz"
-FILES_${PN} += "${datadir}/dbus*"
-
-do_stage () {
- autotools_stage_all
- install -d ${STAGING_INCDIR}/tapioca/core/
- install -d ${STAGING_INCDIR}/tapioca/client/
-
- install -m 644 tapioca/core/*.h ${STAGING_INCDIR}/tapioca/core/
- install -m 644 tapioca/client/*.h ${STAGING_INCDIR}/tapioca/client/
-}
diff --git a/packages/tapioca/tapioca_0.3.9.bb b/packages/tapioca/tapioca_0.3.9.bb
new file mode 100644
index 0000000000..2487826998
--- /dev/null
+++ b/packages/tapioca/tapioca_0.3.9.bb
@@ -0,0 +1,17 @@
+HOMEPAGE = "http://tapioca-voip.sourceforge.net/wiki/index.php/Tapioca"
+LICENSE = "LGPL"
+DEPENDS = "glib-2.0 dbus"
+
+inherit autotools pkgconfig
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/tapioca-voip/${P}.tar.gz"
+FILES_${PN} += "${datadir}/dbus*"
+
+do_stage () {
+ autotools_stage_all
+ install -d ${STAGING_INCDIR}/tapioca/core/
+ install -d ${STAGING_INCDIR}/tapioca/client/
+
+ install -m 644 tapioca/core/*.h ${STAGING_INCDIR}/tapioca/core/
+ install -m 644 tapioca/client/*.h ${STAGING_INCDIR}/tapioca/client/
+}
diff --git a/packages/tapioca/tapiocaui_0.3.0.bb b/packages/tapioca/tapiocaui_0.3.0.bb
deleted file mode 100644
index 7781324b8d..0000000000
--- a/packages/tapioca/tapiocaui_0.3.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-HOMEPAGE = "http://tapioca-voip.sourceforge.net/wiki/index.php/Tapioca"
-LICENSE = "LGPL"
-DEPENDS = "gtk+ glib-2.0 dbus gconf tapioca-xmpp tapioca farsight gst-plugins-farsight"
-RDEPENDS = "tapioca-xmpp"
-PR = "r1"
-
-inherit autotools pkgconfig
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/tapioca-voip/${P}.tar.gz"
-
-FILES_${PN} += "${datadir}/dbus*"
diff --git a/packages/tapioca/tapiocaui_0.3.9.1.bb b/packages/tapioca/tapiocaui_0.3.9.1.bb
new file mode 100644
index 0000000000..5cbae99477
--- /dev/null
+++ b/packages/tapioca/tapiocaui_0.3.9.1.bb
@@ -0,0 +1,11 @@
+HOMEPAGE = "http://tapioca-voip.sourceforge.net/wiki/index.php/Tapioca"
+LICENSE = "LGPL"
+DEPENDS = "gtk+ glib-2.0 dbus gconf tapioca-xmpp tapioca farsight gst-plugins-farsight"
+RDEPENDS = "tapioca-xmpp"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/tapioca-voip/${P}.tar.gz"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "${datadir}/dbus*"
diff --git a/packages/tasks/task-base.bb b/packages/tasks/task-base.bb
index 09908b1f23..5bb5aa6423 100644
--- a/packages/tasks/task-base.bb
+++ b/packages/tasks/task-base.bb
@@ -1,197 +1,233 @@
DESCRIPTION = "Merge machine and distro options to create a basic machine task/package"
-PR = "r15"
-
-PACKAGES = "task-base \
- task-base-minimal \
- task-base-oh-minimal \
- task-base-core-default"
+PR = "r28"
+
+PACKAGES = 'task-boot \
+ task-base \
+ task-distro-base \
+ task-machine-base \
+ \
+ task-base-acpi \
+ task-base-alsa \
+ task-base-apm \
+ 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("MACHINE_FEATURES","kernel26","task-base-kernel26","task-base-kernel24",d)} \
+ '
ALLOW_EMPTY = "1"
-PACKAGE_ARCH = "${MACHINE_ARCH}"
+PACKAGE_ARCH = "all"
-# Valid only in MACHINE_FEATURES:
#
-# kernel24
-# kernel26
-# apm
-# keyboard
-# touchscreen
-# screen
-# pci
-# acpi
+# packages which content depend on MACHINE_FEATURES need to be MACHINE_ARCH
+#
+PACKAGE_ARCH_task-base = "${MACHINE_ARCH}"
+PACKAGE_ARCH_task-boot = "${MACHINE_ARCH}"
+PACKAGE_ARCH_task-machine-base = "${MACHINE_ARCH}"
+PACKAGE_ARCH_task-base-apm = "${MACHINE_ARCH}"
+PACKAGE_ARCH_task-base-pcmcia = "${MACHINE_ARCH}"
-# Valid only in DISTRO_FEATURES:
#
-# nfs
-# smbfs
-# ipsec
-# wifi
-# ppp
+# udev, devfsd, mdev (from busybox) or none
+#
+DISTRO_DEV_MANAGER ?= "${@base_contains("MACHINE_FEATURES", "kernel26", "udev","",d)} "
-# Valid COMBINED_FEATURES:
-# (These features need to be supported by both the machine and the distro)
#
-# alsa
-# bluetooth
-# ext2
-# irda
-# pci
-# pcmcia
-# usbgadget
-# usbhost
+# sysvinit, upstart
+#
+DISTRO_INIT_MANAGER ?= "sysvinit"
-DISTRO_CORE_PACKAGE ?= "task-base-core-default"
+#
+# tinylogin, getty
+#
+DISTRO_LOGIN_MANAGER ?= "tinylogin"
#
-# task-base
+# linux-hotplug or none
#
-RDEPENDS_task-base = "\
- ${DISTRO_CORE_PACKAGE} \
- kernel \
- ${@base_contains("MACHINE_FEATURES", "kernel24", "${task-base-kernel24-rdepends}", "",d)} \
- ${@base_contains("MACHINE_FEATURES", "kernel26", "${task-base-kernel26-rdepends}", "",d)} \
- ${@base_contains("MACHINE_FEATURES", "apm", "${task-base-apm-rdepends}", "",d)} \
- ${@base_contains("MACHINE_FEATURES", "acpi", "${task-base-acpi-rdepends}", "",d)} \
- ${@base_contains("MACHINE_FEATURES", "keyboard", "${task-base-keyboard-rdepends}", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "alsa", "${task-base-alsa-rdepends}", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "ext2", "${task-base-ext2-rdepends}", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "irda", "${task-base-irda-rdepends}", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "pci", "${task-base-pci-rdepends}", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "pcmcia", "${task-base-pcmcia-rdepends}", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "usbhost", "${task-base-usbhost-rdepends}", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "nfs", "${task-distro-nfs-rdepends}", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "ipsec", "${task-distro-ipsec-rdepends}", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "ppp", "${task-distro-ppp-rdepends}", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "wifi", "${task-distro-wifi-rdepends}", "",d)} \
- ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS} \
- ${MACHINE_EXTRA_RDEPENDS} \
- ${DISTRO_EXTRA_RDEPENDS}"
-
-RRECOMMENDS_task-base = "\
- ${@base_contains("MACHINE_FEATURES", "kernel26", "${task-base-kernel26-extras-rrecommends}", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "alsa", "${task-base-alsa-rrecommends}", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "pcmcia", "${task-base-pcmcia-rrecommends}", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "bluetooth", "${task-base-bluetooth-rrecommends}", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "irda", "${task-base-irda-rrecommends}", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "usbgadget", "${task-base-usbgadget-rrecommends}", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "usbhost", "${task-base-usbhost-rrecommends}", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "ppp", "${task-distro-ppp-rrecommends}", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "nfs", "${task-distro-nfs-rrecommends}", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "ipsec", "${task-distro-ipsec-rrecommends}", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "wifi", "${task-distro-wifi-rrecommends}", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "cramfs", "${task-distro-cramfs-rrecommends}", "",d)} \
- ${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS} \
- ${MACHINE_EXTRA_RRECOMMENDS} \
- ${DISTRO_EXTRA_RRECOMMENDS}"
-
-
-#
-# task-base-oh-minimal
-# An example of a small cut down machine configuration
-#
-RDEPENDS_task-base-oh-minimal = "\
- kernel \
- ${@base_contains("MACHINE_FEATURES", "kernel26", "${task-base-kernel26-rdepends}", "",d)} \
- ${@base_contains("MACHINE_FEATURES", "apm", "${task-base-apm-rdepends}", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "pcmcia", "${PCMCIA_MANAGER}", "",d)} \
- ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}"
+HOTPLUG ?= "${@base_contains("MACHINE_FEATURES", "kernel24", "linux-hotplug","",d)} "
-RRECOMMENDS_task-base-minimal = "\
- ${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS}"
+#
+# dropbear, openssh or none
+#
+DISTRO_SSH_DAEMON ?= "dropbear"
+#
+# pcmciautils for >= 2.6.13-rc1, pcmcia-cs for others
+#
+PCMCIA_MANAGER ?= "${@base_contains('MACHINE_FEATURES', 'kernel26','pcmciautils','pcmcia-cs',d)} "
+#
+# those ones can be set in machine config to supply packages needed to get machine booting
+#
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= ""
+MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= ""
+
+#
+# task-base contain stuff needed for base system (machine related)
+#
+RDEPENDS_task-base = "\
+ task-boot \
+ task-distro-base \
+ task-machine-base \
+ ${DISTRO_SSH_DAEMON} \
+ ${HOTPLUG} \
+ \
+ ${@base_contains('MACHINE_FEATURES', 'kernel26','task-base-kernel26','task-base-kernel24',d)} \
+ ${@base_contains('MACHINE_FEATURES', 'apm', 'task-base-apm', '',d)} \
+ ${@base_contains('MACHINE_FEATURES', 'acpi', 'task-base-acpi', '',d)} \
+ ${@base_contains('MACHINE_FEATURES', 'keyboard', 'task-base-keyboard', '',d)} \
+ \
+ ${@base_contains('COMBINED_FEATURES', 'alsa', 'task-base-alsa', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'ext2', 'task-base-ext2', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'irda', 'task-base-irda', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'pci', 'task-base-pci', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'pcmcia', 'task-base-pcmcia', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'usbgadget', 'task-base-usbgadget', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'usbhost', 'task-base-usbhost', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'bluetooth', 'task-base-bluetooth', '',d)} \
+ ${@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('DISTRO_FEATURES', 'nfs', 'task-base-nfs', '',d)} \
+ ${@base_contains('DISTRO_FEATURES', 'ipv6', 'task-base-ipv6', '',d)} \
+ ${@base_contains('DISTRO_FEATURES', 'ipsec', 'task-base-ipsec', '',d)} \
+ ${@base_contains('DISTRO_FEATURES', 'ppp', 'task-base-ppp', '',d)} \
+ ${@base_contains('DISTRO_FEATURES', 'raid', 'task-base-raid', '',d)} \
+ "
-HOTPLUG ?= "linux-hotplug"
+#
+# packages added by distribution
+#
+RDEPENDS_task-distro-base = "${DISTRO_EXTRA_RDEPENDS}"
+RRECOMMENDS_task-distro-base = "${DISTRO_EXTRA_RRECOMMENDS}"
-RDEPENDS_task-base-core-default = '\
+#
+# packages added by machine config
+#
+RDEPENDS_task-machine-base = "${MACHINE_EXTRA_RDEPENDS}"
+RRECOMMENDS_task-machine-base = "${MACHINE_EXTRA_RRECOMMENDS}"
+
+#
+# minimal set of packages - needed to boot
+#
+RDEPENDS_task-boot = "\
+ kernel \
base-files \
base-passwd \
busybox \
initscripts \
- netbase \
- sysvinit \
- sysvinit-pidof \
- tinylogin \
modutils-initscripts \
- fuser \
- setserial'
-# Lets see if we can kill off hotplug...
-# ${HOTPLUG}
-# ${@bootstrap_modutils_rdepends(d)}
-
+ netbase \
+ ${DISTRO_DEV_MANAGER} \
+ ${DISTRO_INIT_MANAGER} \
+ ${DISTRO_LOGIN_MANAGER} \
+ ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}"
-RRECOMMENDS_task-base-core-default = '\
- dropbear '
+RRECOMMENDS_task-boot = "\
+ ${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS}"
-task-base-kernel24-rdepends = "\
- modutils-depmod \
- linux-hotplug "
+RDEPENDS_task-base-kernel24 = "\
+ modutils-depmod"
-task-base-kernel26-rdepends = "\
- udev \
+RDEPENDS_task-base-kernel26 = "\
sysfsutils \
module-init-tools"
-task-base-keyboard-rdepends = "\
- keymaps"
-
-task-base-pci-rdepends = "\
- pciutils"
+RRECOMMENDS_task-base-kernel24 = "\
+ kernel-module-input \
+ kernel-module-uinput"
-task-base-kernel26-extras-rrecommends = "\
+RRECOMMENDS_task-base-kernel26 = "\
kernel-module-input \
kernel-module-uinput"
-task-base-acpi-rdepends = "\
+RDEPENDS_task-base-keyboard = "\
+ keymaps"
+
+RDEPENDS_task-base-pci = "\
+ pciutils"
+
+RDEPENDS_task-base-acpi = "\
acpid"
-task-base-apm-rdepends = "\
+RDEPENDS_task-base-apm = "\
apm \
apmd \
- ${@base_contains("MACHINE_FEATURES", "kernel24", "network-suspend-scripts", "",d)}"
+ ${@base_contains('MACHINE_FEATURES', 'kernel24', 'network-suspend-scripts', '',d)}"
-task-base-ext2-rdepends = "\
+RDEPENDS_task-base-ext2 = "\
hdparm \
e2fsprogs \
e2fsprogs-e2fsck \
e2fsprogs-mke2fs"
-task-base-alsa-rdepends = "\
+RDEPENDS_task-base-alsa = "\
alsa-utils-alsactl \
- alsa-utils-alsamixer \
- alsa-conf"
+ alsa-utils-alsamixer"
-task-base-alsa-rrecommends = "\
+#
+# alsa-state is machine related so can be missing in feed, OSS support is optional
+#
+RRECOMMENDS_task-base-alsa = "\
+ alsa-state \
kernel-module-snd-mixer-oss \
kernel-module-snd-pcm-oss"
-task-base-pcmcia-rdepends = "\
+RDEPENDS_task-base-pcmcia = "\
${PCMCIA_MANAGER} \
- ${@base_contains("DISTRO_FEATURES", "wifi", "prism3-firmware", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "wifi", "prism3-support", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "wifi", "spectrum-fw", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "wifi", "hostap-conf", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "wifi", "orinoco-conf", "",d)}"
-
-task-base-pcmcia-rrecommends = "\
+ ${@base_contains('DISTRO_FEATURES', 'wifi', 'prism3-firmware', '',d)} \
+ ${@base_contains('DISTRO_FEATURES', 'wifi', 'prism3-support', '',d)} \
+ ${@base_contains('DISTRO_FEATURES', 'wifi', 'spectrum-fw', '',d)} \
+ ${@base_contains('DISTRO_FEATURES', 'wifi', 'hostap-conf', '',d)} \
+ ${@base_contains('DISTRO_FEATURES', 'wifi', 'orinoco-conf', '',d)} \
+ "
+
+RRECOMMENDS_task-base-pcmcia = "\
+ ${@base_contains('MACHINE_FEATURES', 'kernel26', '${task-base-pcmcia26}', '${task-base-pcmcia24}',d)} \
kernel-module-pcmcia \
kernel-module-airo-cs \
kernel-module-pcnet-cs \
kernel-module-serial-cs \
kernel-module-ide-cs \
- ${@base_contains("MACHINE_FEATURES", "kernel26", "${task-base-pcmcia26-rrecommends}", "${task-base-pcmcia24-rrecommends}",d)} "
+ kernel-module-ide-disk \
+ "
-task-base-pcmcia24-rrecommends = "\
- ${@base_contains("DISTRO_FEATURES", "wifi", "hostap-modules-cs", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "wifi", "orinoco-modules-cs", "",d)}"
+task-base-pcmcia24 = "\
+ ${@base_contains('DISTRO_FEATURES', 'wifi', 'hostap-modules-cs', '',d)} \
+ ${@base_contains('DISTRO_FEATURES', 'wifi', 'orinoco-modules-cs', '',d)} \
+ "
-task-base-pcmcia26-rrecommends = "\
- ${@base_contains("DISTRO_FEATURES", "wifi", "kernel-module-hostap-cs", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "wifi", "kernel-module-orinoco-cs", "",d)} \
- ${@base_contains("DISTRO_FEATURES", "wifi", "kernel-module-spectrum-cs", "",d)}"
+task-base-pcmcia26 = "\
+ ${@base_contains('DISTRO_FEATURES', 'wifi', 'kernel-module-hostap-cs', '',d)} \
+ ${@base_contains('DISTRO_FEATURES', 'wifi', 'kernel-module-orinoco-cs', '',d)} \
+ ${@base_contains('DISTRO_FEATURES', 'wifi', 'kernel-module-spectrum-cs', '',d)}"
-task-base-bluetooth-rrecommends = "\
+RDEPENDS_task-base-bluetooth = "\
+ blueprobe \
+ bluez-utils"
+
+RRECOMMENDS_task-base-bluetooth = "\
kernel-module-bluetooth \
kernel-module-l2cap \
kernel-module-rfcomm \
@@ -200,38 +236,42 @@ task-base-bluetooth-rrecommends = "\
kernel-module-hidp \
kernel-module-hci-uart \
kernel-module-sco \
- ${@base_contains("COMBINED_FEATURES", "usbhost", "kernel-module-hci-usb", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "pcmcia", "kernel-module-bluetooth3c-cs", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "pcmcia", "kernel-module-bluecard-cs", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "pcmcia", "kernel-module-bluetoothuart-cs", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "pcmcia", "kernel-module-dtl1-cs", "",d)}"
+ ${@base_contains('COMBINED_FEATURES', 'usbhost', 'kernel-module-hci-usb', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'pcmcia', 'kernel-module-bluetooth3c-cs', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'pcmcia', 'kernel-module-bluecard-cs', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'pcmcia', 'kernel-module-bluetoothuart-cs', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'pcmcia', 'kernel-module-dtl1-cs', '',d)}"
-task-base-irda-rdepends = "\
+RDEPENDS_task-base-irda = "\
irda-utils"
-task-base-irda-rrecommends = "\
+RRECOMMENDS_task-base-irda = "\
kernel-module-pxaficp-ir \
kernel-module-irda \
kernel-module-ircomm \
kernel-module-ircomm-tty \
kernel-module-irlan \
- ${@base_contains("DISTRO_FEATURES", "ppp", "kernel-module-irnet", "",d)} \
+ ${@base_contains('DISTRO_FEATURES', 'ppp', 'kernel-module-irnet', '',d)} \
kernel-module-irport \
kernel-module-irtty \
- ${@base_contains("COMBINED_FEATURES", "usbhost", "kernel-module-ir-usb", "",d)} "
+ kernel-module-irtty-sir \
+ kernel-module-sir-dev \
+ ${@base_contains('COMBINED_FEATURES', 'usbhost', 'kernel-module-ir-usb', '',d)} "
-task-base-usbgadget-rrecommends = "\
+RRECOMMENDS_task-base-usbgadget = "\
kernel-module-pxa27x_udc \
kernel-module-gadgetfs \
kernel-module-g-file-storage \
kernel-module-g-serial \
kernel-module-g-ether"
-task-base-usbhost-rdepends = "\
+RDEPENDS_task-base-usbhost = "\
usbutils "
-task-base-usbhost-rrecommends = "\
+RRECOMMENDS_task-base-usbhost = "\
+ kernel-module-uhci-hcd \
kernel-module-ohci-hcd \
+ kernel-module-ehci-hcd \
kernel-module-usbcore \
kernel-module-usbhid \
kernel-module-usbnet \
@@ -242,58 +282,93 @@ task-base-usbhost-rrecommends = "\
kernel-module-usbserial \
kernel-module-usb-storage "
-task-distro-ppp-rdepends = "\
+RDEPENDS_task-base-uboot = "\
+ uboot-utils"
+
+RDEPENDS_task-base-redboot = "\
+ fis"
+
+RDEPENDS_task-base-ppp = "\
ppp \
ppp-dialin"
-task-distro-ppp-rrecommends = "\
+RRECOMMENDS_task-base-ppp = "\
kernel-module-ppp-async \
kernel-module-ppp-deflate \
kernel-module-ppp-mppe"
-task-distro-ipsec-rdepends = "\
+RDEPENDS_task-base-ipsec = "\
openswan"
-task-distro-ipsec-rrecommends = "\
+RRECOMMENDS_task-base-ipsec = "\
kernel-module-ipsec"
-task-distro-wifi-rdepends = "\
+#
+# task-base-wifi contain everything needed to get WiFi working
+# WEP/WPA connection needs to be supported out-of-box
+#
+RDEPENDS_task-base-wifi = "\
wireless-tools \
- ${@base_contains("COMBINED_FEATURES", "pcmcia", "hostap-utils", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "pci", "hostap-utils", "",d)} \
+ ${@base_contains('COMBINED_FEATURES', 'pcmcia', 'hostap-utils', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'pci', 'hostap-utils', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'pci', 'madwifi-ng-tools', '',d)} \
wpa-supplicant"
-task-distro-wifi-rrecommends = "\
+RRECOMMENDS_task-base-wifi = "\
+ ${@base_contains('COMBINED_FEATURES', 'pci', 'madwifi-ng-modules', '',d)} \
+ ${@base_contains('COMBINED_FEATURES', 'usbhost', 'kernel-module-zd1211rw', '',d)} \
kernel-module-ieee80211-crypt \
kernel-module-ieee80211-crypt-ccmp \
kernel-module-ieee80211-crypt-tkip \
kernel-module-ieee80211-crypt-wep \
+ kernel-module-ecb \
kernel-module-arc4 \
kernel-module-michael-mic \
kernel-module-aes"
-task-distro-smbfs-rrecommends = "\
+RRECOMMENDS_task-base-smbfs = "\
kernel-module-cifs \
kernel-module-smbfs"
-task-distro-cramfs-rrecommends = "\
+RRECOMMENDS_task-base-cramfs = "\
kernel-module-cramfs"
-task-distro-nfs-rdepends = "\
+#
+# task-base-nfs provides ONLY client support - server is in nfs-utils package
+#
+RDEPENDS_task-base-nfs = "\
portmap"
-task-distro-nfs-rrecommends = "\
- kernel-module-nfs \
- kernel-module-lockd \
- kernel-module-sunrpc"
+RRECOMMENDS_task-base-nfs = "\
+ kernel-module-nfs "
+
+RDEPENDS_task-base-raid = "\
+ "
+RDEPENDS_task-base-screen = "\
+ "
+
+#
+# GPE/OPIE/OpenMoko provide own touchscreen calibration utils
+#
+RDEPENDS_task-base-touchscreen = "\
+ tslib-tests \
+ tslib-calibrate "
+
+RDEPENDS_task-base-ipv6 = "\
+ "
+
+RRECOMMENDS_task-base-ipv6 = "\
+ kernel-module-ipv6 "
+
+RDEPENDS_task-base-serial = "\
+ setserial \
+ lrzsz "
# Tosort
-# kernel-module-ipv6
# kernel-module-nvrd
# kernel-module-mip6-mn
# kernel-module-tun
-# kernel-module-ide-disk
# kernel-module-ide-probe-mo
# kernel-module-loop
# kernel-module-vfat
@@ -307,4 +382,3 @@ task-distro-nfs-rrecommends = "\
# kernel-module-md5
# kernel-module-8250
# Should be DISTRO_EXTRA_RRECOMMENDS: lrzsz
-
diff --git a/packages/tasks/task-gmae.bb b/packages/tasks/task-gmae.bb
new file mode 100644
index 0000000000..ac794102f2
--- /dev/null
+++ b/packages/tasks/task-gmae.bb
@@ -0,0 +1,43 @@
+DESCRIPTION = "GNOME Mobile & Embedded Initiative"
+PR = "r0"
+
+PACKAGES = 'gmae-core \
+ gmae-toolkit \
+ gmae-user \
+ task-gmae \
+ '
+
+ALLOW_EMPTY = "1"
+
+PACKAGE_ARCH = "all"
+
+
+RDEPENDS_gmae-core = " \
+ ${XSERVER} \
+ glib-2.0 \
+ gtk+ \
+ "
+
+RDEPENDS_gmae-toolkit = " \
+ pango \
+ cairo \
+ atk \
+ "
+
+RDEPENDS_gmae-user = " \
+ bluez-utils \
+ eds-dbus \
+ telepathy-gabble libtelepathy \
+ avahi-utils \
+ gstreamer \
+ matchbox-wm matchbox-panel \
+ gconf-dbus \
+ gnome-vfs \
+ "
+
+RDEPENDS_task-gmae = " \
+ gmae-core \
+ gmae-toolkit \
+ gmae-user \
+ "
+
diff --git a/packages/tasks/task-gpe.bb b/packages/tasks/task-gpe.bb
index b93c5b7165..ed9460ef13 100644
--- a/packages/tasks/task-gpe.bb
+++ b/packages/tasks/task-gpe.bb
@@ -16,11 +16,11 @@ PACKAGES = "\
gpe-task-desktopapps \
gpe-task-sectest"
-RDEPENDS_gpe-base-depends := "\
+RDEPENDS_gpe-base-depends = "\
diet-x11 \
virtual/xserver"
-RDEPENDS_gpe-task-base := "\
+RDEPENDS_gpe-task-base = "\
gpe-bootsplash \
bluez-utils-dbus \
matchbox \
@@ -49,7 +49,7 @@ RDEPENDS_gpe-task-base := "\
pango-module-basic-x \
pango-module-basic-fc"
-RDEPENDS_gpe-task-pim := "\
+RDEPENDS_gpe-task-pim = "\
gpe-timesheet \
gpe-todo \
gpe-calendar \
@@ -58,7 +58,7 @@ RDEPENDS_gpe-task-pim := "\
gpe-today \
gpesyncd"
-RDEPENDS_gpe-task-settings := "\
+RDEPENDS_gpe-task-settings = "\
matchbox-panel-manager \
gpe-bluetooth \
gpe-beam \
@@ -75,7 +75,7 @@ RDEPENDS_gpe-task-settings := "\
minimix \
xmonobut"
-RDEPENDS_gpe-task-apps := "\
+RDEPENDS_gpe-task-apps = "\
gpe-edit \
gpe-gallery \
gpe-calculator \
@@ -91,7 +91,7 @@ RDEPENDS_gpe-task-apps := "\
gpe-scap \
gpe-windowlist"
-RDEPENDS_gpe-task-games := "\
+RDEPENDS_gpe-task-games = "\
gpe-go \
gpe-lights \
gpe-othello \
@@ -99,22 +99,22 @@ RDEPENDS_gpe-task-games := "\
gsoko \
xdemineur"
-RDEPENDS_gpe-task-connectivity := "\
+RDEPENDS_gpe-task-connectivity = "\
gpe-mini-browser"
# gaim
# linphone-hh
-RDEPENDS_gpe-task-apps-extra := "\
+RDEPENDS_gpe-task-apps-extra = "\
gpe-filemanager \
gpe-soundbite \
mbmerlin"
-RDEPENDS_gpe-task-web := "\
+RDEPENDS_gpe-task-web = "\
gpe-irc \
minimo \
gaim"
-RDEPENDS_gpe-task-desktopapps := "\
+RDEPENDS_gpe-task-desktopapps = "\
firefox \
thunderbird \
galculator \
@@ -122,7 +122,7 @@ RDEPENDS_gpe-task-desktopapps := "\
gpdf \
totem"
-RDEPENDS_gpe-task-sectest := "\
+RDEPENDS_gpe-task-sectest = "\
mbmerlin \
nmap \
ettercap \
@@ -134,5 +134,5 @@ RDEPENDS_gpe-task-sectest := "\
kismet \
hydra \
thcrut \
- driftnet \
miniclipboard"
+# driftnet \
diff --git a/packages/tasks/task-gpephone.bb b/packages/tasks/task-gpephone.bb
new file mode 100644
index 0000000000..96a27e6ed2
--- /dev/null
+++ b/packages/tasks/task-gpephone.bb
@@ -0,0 +1,96 @@
+DESCRIPTION = "Task packages for GPE Palmtop Environment Phone Edition"
+PR = "r4"
+LICENSE = "MIT"
+ALLOW_EMPTY = "1"
+
+PACKAGES = "\
+ gpephone-base-depends \
+ gpephone-task-base \
+ gpephone-task-settings \
+ gpephone-task-pim \
+ gpephone-task-connectivity \
+ gpephone-task-apps \
+ gpephone-task-development"
+
+RDEPENDS_gpephone-base-depends = "\
+ diet-x11 \
+ virtual/xserver"
+
+RDEPENDS_gpephone-task-development = "\
+ rxvt-unicode \
+ xmonobut \
+ gpe-terminal \
+ gpe-edit \
+ gdb \
+ strace \
+ e2fsprogs"
+
+RDEPENDS_gpephone-task-base = "\
+ cms92init \
+ gsmmux \
+ connect \
+ phoneserver \
+ soundserver \
+ voicecall \
+ sms \
+ audioplayer \
+ videoplayer \
+ addressbook \
+ calendar \
+ gpe-applauncher \
+ gpe-phonepanel \
+ gpe-bootsplash \
+ gpe-bootsplash-theme-gpephone \
+ bluez-utils-dbus \
+ matchbox \
+ xcursor-transparent-theme \
+ gtk2-theme-angelistic \
+ matchbox-themes-gtk \
+ xst \
+ xhost \
+ xrdb \
+ gpe-soundserver \
+ ttf-bitstream-vera \
+ ttf-dejavu-sans \
+ ttf-dejavu-sans-mono \
+ gpe-dm \
+ gpe-login \
+ gpe-session-scripts-phone \
+ gpe-icons \
+ gpe-confd \
+ gpe-autostarter \
+ xauth \
+ gdk-pixbuf-loader-png \
+ gdk-pixbuf-loader-xpm \
+ gdk-pixbuf-loader-jpeg \
+ gdk-pixbuf-loader-gif \
+ pango-module-basic-x \
+ pango-module-basic-fc \
+ detect-stylus \
+ ptim-manager \
+ ptim-helper \
+ ptim-engine \
+ ${@base_contains("MACHINE_FEATURES", "touchscreen", "libgtkstylus xtscal", "",d)} \
+"
+
+RDEPENDS_gpephone-task-pim = "\
+ gpesyncd"
+
+RDEPENDS_gpephone-task-settings = "\
+ gpe-su \
+ gpe-conf \
+ gpe-clock \
+ gpe-mixer \
+ gpe-taskmanager \
+ keylaunch \
+ minilite"
+
+RDEPENDS_gpephone-task-apps = "\
+ gpe-watch \
+ gpe-what \
+ matchbox-panel-hacks \
+ gpe-scap \
+ gpe-windowlist"
+
+RDEPENDS_gpephone-task-connectivity = "\
+"
diff --git a/packages/tasks/task-mokogateway.bb b/packages/tasks/task-mokogateway.bb
new file mode 100644
index 0000000000..fe8672381a
--- /dev/null
+++ b/packages/tasks/task-mokogateway.bb
@@ -0,0 +1,82 @@
+DESCRIPTION = "MokoGateway: Tasks for a companion server for the OpenMoko Linux Distribution"
+ALLOW_EMPTY = "1"
+PACKAGE_ARCH = "all"
+LICENSE = "MIT"
+PROVIDES = "task-mokogateway-everything"
+PR = "r3"
+
+PACKAGES = "\
+ task-mokogateway-everything \
+ ${MOKOGATEWAY_PACKAGES} \
+"
+
+MOKOGATEWAY_PACKAGES = "\
+ task-mokogateway-usbnet \
+ task-mokogateway-bluetooth \
+ task-mokogateway-wifi \
+ task-mokogateway-debug \
+"
+
+RDEPENDS_task-mokogateway-everything = "${MOKOGATEWAY_PACKAGES}"
+
+DESCRIPTION_task-mokogateway-usbnet = "MokoGateway: USB Networking"
+RDEPENDS_task-mokogateway-usbnet = "\
+ iptables \
+"
+RRECOMMENDS_task-mokogateway-usbnet = "\
+ kernel-module-usbnet \
+ kernel-module-cdc-acm \
+ kernel-module-cdc-ether \
+ kernel-module-iptable-nat \
+ kernel-module-ipt-masquerade \
+"
+
+DESCRIPTION_task-mokogateway-bluetooth = "MokoGateway: Bluetooth"
+RDEPENDS_task-mokogateway-bluetooth = "\
+ bluez-utils \
+"
+RRECOMMENDS_task-mokogateway-bluetooth = "\
+ kernel-module-bluetooth \
+ kernel-module-l2cap \
+ kernel-module-rfcomm \
+ kernel-module-hci-vhci \
+ kernel-module-bnep \
+ kernel-module-hidp \
+ kernel-module-hci-uart \
+ kernel-module-sco \
+ ${@base_contains("COMBINED_FEATURES", "usbhost", "kernel-module-hci-usb", "",d)} \
+ ${@base_contains("COMBINED_FEATURES", "pcmcia", "kernel-module-bluetooth3c-cs", "",d)} \
+ ${@base_contains("COMBINED_FEATURES", "pcmcia", "kernel-module-bluecard-cs", "",d)} \
+ ${@base_contains("COMBINED_FEATURES", "pcmcia", "kernel-module-bluetoothuart-cs", "",d)} \
+ ${@base_contains("COMBINED_FEATURES", "pcmcia", "kernel-module-dtl1-cs", "",d)} \
+"
+
+DESCRIPTION_task-mokogateway-wifi = "MokoGateway: WiFi"
+RDEPENDS_task-mokogateway-wifi = "\
+ bridge-utils \
+ wireless-tools \
+ ${@base_contains("COMBINED_FEATURES", "pci", "madwifi-ng-modules", "",d)} \
+ ${@base_contains("COMBINED_FEATURES", "pci", "madwifi-ng-tools", "",d)} \
+ wpa-supplicant \
+"
+RRECOMMENDS_task-mokogateway-wifi = "\
+ kernel-module-ieee80211-crypt \
+ kernel-module-ieee80211-crypt-ccmp \
+ kernel-module-ieee80211-crypt-tkip \
+ kernel-module-ieee80211-crypt-wep \
+ kernel-module-arc4 \
+ kernel-module-michael-mic \
+ kernel-module-aes \
+ ${@base_contains("COMBINED_FEATURES", "usbhost", "kernel-module-zd1211rw", "",d)} \
+ ${@base_contains("COMBINED_FEATURES", "usbhost", "zd1211-firmware", "",d)} \
+"
+
+DESCRIPTION_task-mokogateway-debug = "MokoGateway: Debug"
+RDEPENDS_task-mokogateway-debug = "\
+ dfu-util \
+ ftdi-eeprom \
+ openocd \
+"
+RRECOMMENDS_task-mokogateway-debug = "\
+"
+
diff --git a/packages/tasks/task-mythfront.bb b/packages/tasks/task-mythfront.bb
index b86ade69f3..c99647ecb5 100644
--- a/packages/tasks/task-mythfront.bb
+++ b/packages/tasks/task-mythfront.bb
@@ -1,9 +1,11 @@
PACKAGES = "${PN}"
DESCRIPTION = "Meta-package for MythTV diskless frontend"
ALLOW_EMPTY = "1"
-PR = "r6"
+PR = "r13"
-RDEPENDS = "xserver-xorg mythtv lirc lirc-modules drm-module-via ttf-bitstream-vera fontconfig-utils setserial snes9x ntp mythfront-config gpe-dm mythfront-session bootlogd drm-module-drm"
+RDEPENDS = "xserver-xorg mythtv-frontend mythtv-filters mythtv-theme-g.a.n.t. mythtv-theme-default lirc lirc-modules ttf-bitstream-vera fontconfig-utils setserial snes9x ntp mythfront-config gpe-dm mythfront-session bootlogd font-cursor-misc font-misc-misc xf86-input-keyboard xf86-input-mouse"
+
+RDEPENDS_append_epia = " xorg-driver-via mesa-dri-driver-unichrome"
LICENSE = "MIT"
diff --git a/packages/tasks/task-openmoko.bb b/packages/tasks/task-openmoko.bb
new file mode 100644
index 0000000000..51ccf96bb7
--- /dev/null
+++ b/packages/tasks/task-openmoko.bb
@@ -0,0 +1,243 @@
+DESCRIPTION = "OpenMoko: Tasks for the OpenMoko Linux Distribution"
+SECTION = "openmoko/base"
+ALLOW_EMPTY = "1"
+PACKAGE_ARCH = "all"
+LICENSE = "MIT"
+PROVIDES = "task-openmoko-everything"
+
+PR = "r35"
+
+PACKAGES = "\
+ task-openmoko-linux \
+ task-openmoko-ui \
+ task-openmoko-base \
+ task-openmoko-phone \
+ task-openmoko-finger \
+ task-openmoko-pim \
+ task-openmoko-net \
+ \
+ task-openmoko-demo \
+ task-openmoko-examples \
+ task-openmoko-debug \
+"
+
+RDEPENDS_task-openmoko-everything := "${PACKAGES}"
+
+#
+# task-openmoko-core
+#
+DESCRIPTION_task-openmoko-linux = "OpenMoko: Linux Core Services"
+RDEPENDS_task-openmoko-linux = "\
+ task-base \
+ sysfsutils \
+ modutils-initscripts \
+ module-init-tools-depmod \
+ rsync \
+# update-alternatives \
+"
+
+#
+# task-openmoko-base
+#
+DESCRIPTION_task-openmoko-base = "OpenMoko: Main-Menu Launcher, and Panel"
+RDEPENDS_task-openmoko-base = "\
+"
+
+#
+# task-openmoko-phone
+#
+DESCRIPTION_task-openmoko-phone = "OpenMoko: GSM Phone Services"
+RDEPENDS_task-openmoko-phone = "\
+ gsmd \
+ libgsmd-tools \
+ openmoko-dialer \
+"
+
+#
+# task-openmoko-ui
+#
+DESCRIPTION_task-openmoko-ui = "OpenMoko: The X11/Gtk+2 based native User Interface"
+RDEPENDS_task-openmoko-ui = "\
+ gdk-pixbuf-loader-png \
+ gdk-pixbuf-loader-gif \
+ gdk-pixbuf-loader-xpm \
+ gdk-pixbuf-loader-jpeg \
+ pango-module-basic-x \
+ pango-module-basic-fc \
+ gtk+ \
+ matchbox-common \
+ matchbox-wm \
+ matchbox-panel-2 \
+ xserver-kdrive-fbdev \
+ xserver-kdrive-common \
+ xserver-nodm-init \
+ ttf-bitstream-vera \
+ xauth \
+ xhost \
+ xset \
+ xrandr \
+ openmoko-common \
+ openmoko-session \
+ openmoko-theme-standard \
+ openmoko-icon-theme-standard \
+ settings-daemon \
+# psplash \
+"
+
+#
+# task-openmoko-base
+#
+DESCRIPTION_task-openmoko-base = "OpenMoko: Main-Menu Launcher, Top Panel, and Footer"
+RDEPENDS_task-openmoko-base = "\
+ openmoko-mainmenu \
+ matchbox-panel-2 \
+ openmoko-footer \
+ openmoko-taskmanager \
+ openmoko-panel-mainmenu \
+ openmoko-panel-battery \
+ openmoko-panel-bt \
+ openmoko-panel-clock \
+ openmoko-panel-usb \
+ openmoko-panel-gps \
+"
+
+#
+# task-openmoko-phone
+#
+DESCRIPTION_task-openmoko-phone = "OpenMoko: GSM and GPRS Phone Services"
+RDEPENDS_task-openmoko-phone = "\
+ gsmd \
+ libgsmd-tools \
+ openmoko-dialer \
+ openmoko-panel-gsm \
+# ppp \
+"
+
+#
+# task-openmoko-finger
+#
+DESCRIPTION_task-openmoko-finger = "OpenMoko: Finger UI Applications"
+RDEPENDS_task-openmoko-finger = "\
+"
+
+#
+# task-openmoko-pim
+#
+DESCRIPTION_task-openmoko-pim = "OpenMoko: PIM Applications"
+RDEPENDS_task-openmoko-pim = "\
+ eds-dbus \
+ openmoko-contacts \
+ openmoko-dates \
+ openmoko-today \
+"
+
+#
+# task-openmoko-net
+#
+DESCRIPTION_task-openmoko-net = "OpenMoko: Linux Advanced Networking"
+RDEPENDS_task-openmoko-net = "\
+ bluez-utils \
+"
+
+#
+# task-openmoko-demo
+#
+DESCRIPTION_task-openmoko-demo = "OpenMoko: Demo Applications"
+RDEPENDS_task-openmoko-demo = "\
+ matchbox-desktop \
+ matchbox-keyboard \
+ openmoko-keyboard \
+ matchbox-stroke \
+ matchbox-config-gtk \
+ matchbox-panel-2-applets \
+ matchbox-themes-extra \
+ matchbox-themes-gtk \
+ openmoko-panel-battery \
+ openmoko-panel-clock \
+ openmoko-panel-gsm \
+ openmoko-panel-mainmenu \
+ openmoko-rssreader \
+ openmoko-messages \
+ openmoko-today \
+ xcursor-transparent-theme \
+ web \
+ rxvt-unicode \
+ gpe-terminal \
+ mtpaint \
+"
+
+#
+# task-openmoko-examples
+#
+DESCRIPTION_task-openmoko-examples = "OpenMoko: Example Applications"
+RDEPENDS_task-openmoko-examples = "\
+ openmoko-chordmaster"
+
+#
+# task-openmoko-debug
+#
+DESCRIPTION_task-openmoko-debug = "OpenMoko: Debugging Tools"
+RDEPENDS_task-openmoko-debug = "\
+ alsa-utils-amixer \
+ alsa-utils-aplay \
+ alsa-utils-aconnect \
+ alsa-utils-alsamixer \
+ alsa-utils-speakertest \
+ madplay \
+ vorbis-tools \
+ strace \
+# ltrace \
+ gdb \
+ gdbserver \
+ tcpdump \
+ tslib-calibrate \
+ tslib-tests \
+ fstests \
+ lsof \
+ lrzsz \
+ udev-utils \
+ usbutils \
+ uucp \
+ cu \
+ sensors-i2cdetect sensors-i2cdump sensors-i2cset \
+ xev \
+"
+
+#
+# task-openmoko-sdk-native
+#
+DESCRIPTION_task-openmoko-native-sdk = "OpenMoko: Native SDK"
+RDEPENDS_task-openmoko-native-sdk = "\
+ binutils \
+ binutils-symlinks \
+ gcc \
+ gcc-symlinks \
+ cpp \
+ cpp-symlinks \
+ libc6-dev \
+ libgcc-dev \
+ libgcc-s-dev \
+ glibc-utils \
+ ldd \
+ g++ \
+ g++-symlinks \
+ libstdc++-dev \
+ \
+ make \
+ flex \
+ flex-dev \
+ bison \
+ gawk \
+ grep \
+ sed \
+ automake \
+ autoconf \
+ patch \
+ patchutils \
+ diffstat \
+ diffutils \
+ libtool \
+ pkgconfig \
+ \
+ xoo \
+"
diff --git a/packages/tasks/task-opie.bb b/packages/tasks/task-opie.bb
index 616968ea36..960770ef7c 100644
--- a/packages/tasks/task-opie.bb
+++ b/packages/tasks/task-opie.bb
@@ -5,7 +5,7 @@ ALLOW_EMPTY = "1"
LICENSE = "MIT"
PROVIDES = "task-opie-everything"
-PR = "r5"
+PR = "r7"
PACKAGES = "task-opie-applets task-opie-apps task-opie-base \
task-opie-base-applets task-opie-base-apps \
@@ -27,9 +27,9 @@ PACKAGES += "task-opie-everything"
#
# Dependencies to get the launcher up and running
#
-RDEPENDS_task-opie-base = "opie-alarm opie-qcop opie-quicklauncher opie-taskbar \
- opie-pics opie-sounds opie-freetype ttf-dejavu-sans \
- ttf-dejavu-sans-mono"
+RDEPENDS_task-opie-base = "opie-init opie-alarm opie-qcop opie-qss opie-quicklauncher \
+ opie-taskbar opie-pics opie-sounds opie-freetype \
+ ttf-dejavu-sans ttf-dejavu-sans-mono"
#
# things for reasonable bootstrap image
diff --git a/packages/tasks/task-ossie.bb b/packages/tasks/task-ossie.bb
index cd050342aa..b550d709ff 100644
--- a/packages/tasks/task-ossie.bb
+++ b/packages/tasks/task-ossie.bb
@@ -12,4 +12,4 @@ PACKAGE_INSTALL = "${OSSIE_BASE} ${OSSIE_PLATFORM} ${OSSIE_COMPONENTS} ${OSSIE_W
OSSIE_BASE = "screen procps xerces-c omniorb usrp"
OSSIE_PLATFORM = "ossiecf ossie-standardinterfaces ossie-nodebooter ossie-c-wavloader"
OSSIE_COMPONENTS = "ossie-gpp-device ossie-usrp-device ossie-soundout-device"
-OSSIE_WAVEFORMS = "ossie-demo ossie-tx-random-data"
+OSSIE_WAVEFORMS = "ossie-demo ossie-tx-random-data ossie-log-data"
diff --git a/packages/tasks/task-sdk-base.bb b/packages/tasks/task-sdk-base.bb
new file mode 100644
index 0000000000..52956239eb
--- /dev/null
+++ b/packages/tasks/task-sdk-base.bb
@@ -0,0 +1,53 @@
+DESCRIPTION = "Basic SDK development packages"
+PR = "r0"
+LICENSE = "MIT"
+ALLOW_EMPTY = "1"
+
+DEPENDS = "task-sdk"
+
+RDEPENDS = "\
+ task-sdk-bare \
+ glibc \
+ glibc-dev \
+ libgcc1 \
+ alsa-dev \
+ audiofile-dev \
+ bluez-libs-dev \
+ dbus-dev \
+ expat-dev \
+ fontconfig-dev \
+ freetype-dev \
+ glib-2.0-dev \
+ gstreamer-dev \
+ libice-dev \
+ ipkg-dev \
+ jpeg-dev \
+ libapm-dev \
+ alsa-lib-dev \
+ libdisplaymigration-dev \
+ libetpan-dev \
+ libgcrypt-dev \
+ libglade-dev \
+ gnutls-dev \
+ libgpg-error-dev \
+ libidl-dev \
+ libiw-dev \
+ libmimedir-dev \
+ libpcap-dev \
+ libpixman-dev \
+ libpng-dev \
+ libschedule-dev \
+ libsm-dev \
+ libsoundgen-dev \
+ libsoup-dev \
+ libsvg-dev \
+ libtododb-dev \
+ libts-dev \
+ libxml2-dev \
+ ncurses-dev \
+ openobex-dev \
+ popt-dev \
+ readline-dev \
+ libsqlite-dev \
+ zlib-dev \
+ libxmu-dev"
diff --git a/packages/tasks/task-sdk-extra.bb b/packages/tasks/task-sdk-extra.bb
new file mode 100644
index 0000000000..33f8e3a5e8
--- /dev/null
+++ b/packages/tasks/task-sdk-extra.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "SDK packages"
+PR = "r7"
+LICENSE = "MIT"
+ALLOW_EMPTY = "1"
+
+PACKAGES = "\
+ task-sdk-x11 \
+ task-sdk-x11-ext \
+ task-sdk-gpe"
+
+RDEPENDS_task-sdk-x11 = "\
+ atk-dev \
+ cairo-dev \
+ gconf-dbus-dev \
+ gtk+-dev \
+ gtk-engines-dev \
+ libsvg-cairo-dev \
+ libmatchbox-dev \
+ matchbox-desktop-dev \
+ pango-dev \
+ startup-notification-dev"
+
+RDEPENDS_task-sdk-x11-ext = "\
+ libxcursor-dev \
+ libxdmcp-dev \
+ libxft-dev \
+ libxrandr-dev \
+ libxrender-dev \
+ libxsettings-client-dev \
+ randrext-dev \
+ resourceext-dev \
+ libx11-dev \
+ libxau-dev \
+ libxcalibrate-dev \
+ xcalibrateext-dev \
+ libxcomposite-dev \
+ libxdamage-dev \
+ libxext-dev \
+ xextproto-dev \
+ libxfont-dev \
+ libxpm-dev \
+ xproto-dev \
+ libxt-dev \
+ xtrans-dev \
+ libxtst-dev"
+
+
+RDEPENDS_task-sdk-gpe = "\
+ libcontactsdb-dev \
+ esound-dev \
+ libeventdb-dev \
+ libgpepimc-dev \
+ libgpevtype-dev \
+ libgpelaunch-dev \
+ libgpewidget-dev \
+ libhandoff-dev"
+
diff --git a/packages/tasks/task-sdk-gpephone.bb b/packages/tasks/task-sdk-gpephone.bb
new file mode 100644
index 0000000000..56b398b04e
--- /dev/null
+++ b/packages/tasks/task-sdk-gpephone.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "SDK task for GPE Phone Edition"
+PR = "r0"
+LICENSE = "MIT"
+ALLOW_EMPTY = "1"
+
+RDEPENDS = "\
+ libidn-dev \
+ libim-dev \
+ gloox-dev \
+ libabenabler-dev \
+ libcalenabler-dev \
+ libchenabler-dev \
+ libgemwidget-dev \
+ libiac-dev \
+ libim-dev \
+ liblipsevent-dev \
+ libmsgenabler-dev \
+ librecord-dev \
+ libvocenabler-dev \
+ linphone-dev \
+ " \ No newline at end of file
diff --git a/packages/tasks/task-sdk-opie.bb b/packages/tasks/task-sdk-opie.bb
new file mode 100644
index 0000000000..0c4c1f6558
--- /dev/null
+++ b/packages/tasks/task-sdk-opie.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "SDK packages for Opie"
+PR = "r6"
+LICENSE = "MIT"
+ALLOW_EMPTY = "1"
+
+PACKAGES = "task-sdk-opie"
+
+RDEPENDS_task-sdk-opie = "\
+ libopiebluez2 \
+ libopiedb2 \
+ libopiecore2 \
+ libopienet2 \
+ libopiepim2 \
+ libopieui2 \
+ libqpe1 \
+ qte \
+ libqtaux2 \
+ libmailwrapper"
diff --git a/packages/tasks/task-sdk-sbox-gpe.bb b/packages/tasks/task-sdk-sbox-gpe.bb
new file mode 100644
index 0000000000..930de7cd2e
--- /dev/null
+++ b/packages/tasks/task-sdk-sbox-gpe.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "SDK task for Scratchbox rootstraps incuding GPE/GTK bits"
+PR = "r0"
+LICENSE = "MIT"
+ALLOW_EMPTY = "1"
+
+RDEPENDS = "\
+ glib-2.0-utils \
+ gdk-pixbuf-loader-png \
+ gdk-pixbuf-loader-jpeg \
+ gdk-pixbuf-loader-gif \
+ gdk-pixbuf-loader-xpm \
+ intltool \
+ intltool-dev \
+ ipkg \
+ ipkg-utils \
+ gettext-dev \
+ pkgconfig-dev \
+ autoconf \
+ automake \
+ "
diff --git a/packages/tasks/task-sdk-sbox.bb b/packages/tasks/task-sdk-sbox.bb
new file mode 100644
index 0000000000..2d73fe2716
--- /dev/null
+++ b/packages/tasks/task-sdk-sbox.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "SDK task for Scratchbox rootstraps incuding GPE/GTK bits"
+PR = "r6"
+LICENSE = "MIT"
+ALLOW_EMPTY = "1"
+
+RDEPENDS = "\
+ strace \
+ gdb \
+ sbrsh \
+ fakeroot \
+ ipkg \
+ ipkg-utils \
+ "
diff --git a/packages/tasks/task-sdk.bb b/packages/tasks/task-sdk.bb
index d7e4d20076..fee2be51b8 100644
--- a/packages/tasks/task-sdk.bb
+++ b/packages/tasks/task-sdk.bb
@@ -1,129 +1,14 @@
-DESCRIPTION = "SDK packages for Opie and GPE"
-PR = "r5"
+DESCRIPTION = "SDK packages"
+PR = "r7"
LICENSE = "MIT"
ALLOW_EMPTY = "1"
PACKAGES = "\
task-sdk-bare \
- task-sdk-base \
- task-sdk-opie \
- task-sdk-x11 \
- task-sdk-x11-ext \
- task-sdk-gpe"
-
-RDEPENDS_task-sdk-bare := "\
- glibc \
- glibc-dev \
- libgcc1 \
"
-RDEPENDS_task-sdk-base := "\
+RDEPENDS_task-sdk-bare = "\
glibc \
glibc-dev \
libgcc1 \
- alsa-dev \
- audiofile-dev \
- bluez-libs-dev \
- dbus-dev \
- expat-dev \
- fontconfig-dev \
- freetype-dev \
- glib-2.0-dev \
- gstreamer-dev \
- libice-dev \
- ipkg-dev \
- jpeg-dev \
- libapm-dev \
- libasound \
- libdisplaymigration-dev \
- libetpan-dev \
- libgcrypt-dev \
- libglade-dev \
- gnutls-dev \
- libgpg-error-dev \
- libidl-dev \
- libiw-dev \
- libmimedir-dev \
- libpcap-dev \
- libpixman-dev \
- libpng-dev \
- libschedule-dev \
- libsm-dev \
- libsoundgen-dev \
- libsoup-dev \
- libsvg-dev \
- libtododb-dev \
- libts-dev \
- libxml2-dev \
- ncurses-dev \
- openobex-dev \
- popt-dev \
- readline-dev \
- sqlite-dev \
- zlib-dev \
- libxmu-dev"
-
-RDEPENDS_task-sdk-x11 := "\
- atk-dev \
- cairo-dev \
- gconf-dbus-dev \
- gtk+-dev \
- gtk-engines-dev \
- libsvg-cairo-dev \
- libmatchbox-dev \
- matchbox-desktop-dev \
- pango-dev \
- startup-notification-dev"
-
-RDEPENDS_task-sdk-x11-ext := "\
- compositeext-dev \
- damageext-dev \
- fixesext-dev \
- libxcursor-dev \
- libxdmcp-dev \
- libxfixes-dev \
- libxft-dev \
- libxrandr-dev \
- libxrender-dev \
- libxsettings-client-dev \
- randrext-dev \
- recordext-dev \
- renderext-dev \
- resourceext-dev \
- libx11-dev \
- libxau-dev \
- libxcalibrate-dev \
- xcalibrateext-dev \
- libxcomposite-dev \
- libxdamage-dev \
- libxext-dev \
- xextproto-dev \
- libxfont-dev \
- libxpm-dev \
- xproto-dev \
- libxt-dev \
- xtrans-dev \
- libxtst-dev"
-# libxss-dev \
-
-RDEPENDS_task-sdk-gpe := "\
- libcontactsdb-dev \
- esound-gpe-dev \
- libeventdb-dev \
- libgpepimc-dev \
- libgpevtype-dev \
- libgpelaunch-dev \
- libgpewidget-dev \
- libhandoff-dev"
-
-RDEPENDS_task-sdk-opie := "\
- libopiebluez2 \
- libopiedb2 \
- libopiecore2 \
- libopienet2 \
- libopiepim2 \
- libopieui2 \
- libqpe1 \
- qte \
- libqtaux2 \
- libmailwrapper"
+ " \ No newline at end of file
diff --git a/packages/tasks/task-slugos.bb b/packages/tasks/task-slugos.bb
new file mode 100644
index 0000000000..acb6bcaae5
--- /dev/null
+++ b/packages/tasks/task-slugos.bb
@@ -0,0 +1,130 @@
+# This describes a generic SlugOS image, even though the bb file is
+# called 'slugos-image.bb' the distro specific configuration is
+# done in conf/distro/${DISTRO}.conf (which should always include
+# conf/distro/slugos.conf to get the standard settings).
+#
+DESCRIPTION = "Task packages for the SlugOS distribution"
+HOMEPAGE = "http://www.nslu2-linux.org"
+LICENSE = "MIT"
+PR = "r9"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+ALLOW_EMPTY = "1"
+
+#----------------------------------------------------------------------------------
+# FIRMWARE CONFIGURATION
+#----------------------------------------------------------------------------------
+# EXTRA PACKAGES
+# --------------
+# The standard firmware contents and additional packages built as requirements
+# of the firmware are defined here in SLUGOS_STANDARD_RDEPENDS.
+SLUGOS_STANDARD_RDEPENDS = ""
+SLUGOS_STANDARD_RRECOMMENDS = ""
+
+# diff, cpio and find are required for reflash and turnup ram.
+# Removing these probably leaves the system bootable, but standard
+# openslug and ucslugc stuff won't work, so only take these out in
+# very non-standard turnkey slugos builds.
+#
+# udev is the default way of handling devices, there is no guarantee
+# that the static device table is completely correct (it is just
+# known to be sufficient for boot.)
+SLUGOS_STANDARD_RRECOMMENDS += "diffutils cpio findutils udev"
+
+# These lines add support for formatting ext2 and ext3 file systems
+# on a hard disk attached to the NSLU2. ext3 is the standard Linux
+# file system.
+SLUGOS_STANDARD_RRECOMMENDS += "e2fsprogs-mke2fs e2fsprogs-fsck e2fsprogs-e2fsck e2fsprogs-badblocks"
+
+# These lines add support for an X/Y/ZModem package called lrzsz
+# (this is of use for people with modified NSLU2 hardware which
+# supports a serial port.)
+SLUGOS_STANDARD_RRECOMMENDS += "lrzsz"
+
+# Filesystem selection. Adding entries here adds the module to the
+# image. The module must be built as part of nslu2-kernel (i.e. it
+# must be specified as a module in the defconfig file). The NLS
+# support charset modules must be given explicitly and must match
+# the codepage/iocharset and NLS handling for the file systems which
+# require them. The installed lanugage set is minimal but sufficient
+# for any file system (since it uses utf8). See
+# http://www.nslu2-linux.orgwiki/HowTo/MountFATFileSystems
+# for more information on the language behaviour of the DOS file
+# systems.
+#
+# KERNEL LEVEL FILE SYSTEM SUPPORT
+# --------------------------------
+# NOTE: removing kernel-module-nfs from this list will prevent NFS
+# boot (however you can do a simple flash file system boot - no
+# attached disk - and install the nfs modules from ssh.)
+# The altboot mechanism requires kernel-module-loop.
+SLUGOS_STANDARD_RRECOMMENDS += "\
+kernel-module-ext2 \
+kernel-module-jbd \
+kernel-module-ext3 \
+kernel-module-vfat \
+kernel-module-isofs \
+kernel-module-udf \
+kernel-module-nfs \
+kernel-module-loop \
+kernel-module-nls-cp437 \
+kernel-module-nls-utf8 \
+"
+
+
+# Add daemon required for HW RNG support
+SLUGOS_RNG_TOOLS_PACKAGE = "rng-tools"
+SLUGOS_RNG_TOOLS_PACKAGE_linux-uclibc = ""
+SLUGOS_STANDARD_RRECOMMENDS += "\
+${SLUGOS_RNG_TOOLS_PACKAGE} \
+"
+
+# Add modules required for usb support
+SLUGOS_STANDARD_RRECOMMENDS += "\
+kernel-module-ohci-hcd \
+kernel-module-uhci-hcd \
+"
+
+# Add modules required for IDE support
+SLUGOS_STANDARD_RRECOMMENDS += "\
+kernel-module-libata \
+kernel-module-pata-artop \
+"
+
+# Add modules required for Network support
+SLUGOS_STANDARD_RRECOMMENDS += "\
+kernel-module-via-velocity \
+"
+
+# Add modules required for Network Console support
+# NOTE: This module is desirable for systems lacking a physical
+# console, but is usually only enabled if specific needs or issues
+# arise. If space in the flash is at a premium, it can be omitted.
+SLUGOS_STANDARD_RRECOMMENDS += "\
+kernel-module-netconsole \
+"
+
+DISTRO_EXTRA_DEPENDS ?= ""
+DEPENDS += "${DISTRO_EXTRA_DEPENDS}"
+
+DISTRO_EXTRA_RDEPENDS ?= ""
+RDEPENDS += "\
+ kernel ixp4xx-npe \
+ base-files base-passwd netbase \
+ busybox initscripts-slugos slugos-init \
+ update-modules sysvinit tinylogin \
+ module-init-tools modutils-initscripts \
+ ipkg-collateral ipkg ipkg-link \
+ portmap \
+ beep \
+ e2fsprogs-blkid \
+ util-linux-mount \
+ util-linux-umount \
+ util-linux-swaponoff \
+ util-linux-losetup \
+ ${SLUGOS_STANDARD_RDEPENDS} \
+ ${DISTRO_EXTRA_RDEPENDS}"
+
+RRECOMMENDS += "\
+ dropbear \
+ ${SLUGOS_STANDARD_RRECOMMENDS} \
+ ${DISTRO_EXTRA_RRECOMMENDS}"
diff --git a/packages/tasks/task-xfce-base.bb b/packages/tasks/task-xfce-base.bb
index 71aec2a8b0..3a4081199b 100644
--- a/packages/tasks/task-xfce-base.bb
+++ b/packages/tasks/task-xfce-base.bb
@@ -3,12 +3,13 @@
# Released under the MIT license (see packages/COPYING)
DESCRIPTION = "All packages required for an base XFCE installation"
+LICENSE = "MIT"
ALLOW_EMPTY = "1"
PACKAGES = "${PN}"
-PR = "r1"
+PR = "r2"
-RDEPENDS= "xfce-mcs-manager xfwm4 xfwm4-theme-default xfce-utils xfdesktop \
+RDEPENDS = "xfce-mcs-manager xfwm4 xfwm4-theme-default xfce-utils xfdesktop \
xfce4-panel xfce4-panel-plugins xfce-mcs-plugins xfwm4-mcs-plugins \
- xfce-utils-mcs-plugins xfce4-panel-mcs-plugins \
+ xfce4-panel-mcs-plugins \
xfdesktop-mcs-plugins"
-LICENSE = "MIT"
+RRECOMMENDS = "xfce-utils-mcs-plugins"
diff --git a/packages/tcltk/tcl_8.4.11.bb b/packages/tcltk/tcl_8.4.11.bb
index d6d6fe7487..963bc30fc8 100644
--- a/packages/tcltk/tcl_8.4.11.bb
+++ b/packages/tcltk/tcl_8.4.11.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Tool Command Language"
LICENSE = "tcl"
SECTION = "devel/tcltk"
HOMEPAGE = "http://tcl.sourceforge.net"
-PR = "r4"
+PR = "r5"
SRC_URI = "${SOURCEFORGE_MIRROR}/tcl/tcl${PV}-src.tar.gz \
file://tcl-add-soname.patch;patch=1 \
@@ -27,6 +27,7 @@ do_stage() {
oe_libinstall -a libtclstub8.4 ${STAGING_LIBDIR}
oe_libinstall -so libtcl8.4 ${STAGING_LIBDIR}
sed -i "s+${WORKDIR}+${STAGING_INCDIR}+g" tclConfig.sh
+ install -d ${STAGING_BINDIR_CROSS}/
install -m 0755 tclConfig.sh ${STAGING_BINDIR_CROSS}
cd ..
for dir in compat generic unix
diff --git a/packages/telepathy/empathy-0.1/.mtn2git_empty b/packages/telepathy/empathy-0.1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/telepathy/empathy-0.1/.mtn2git_empty
diff --git a/packages/telepathy/empathy-0.1/no-gnome.diff b/packages/telepathy/empathy-0.1/no-gnome.diff
new file mode 100644
index 0000000000..4dd4a96354
--- /dev/null
+++ b/packages/telepathy/empathy-0.1/no-gnome.diff
@@ -0,0 +1,39 @@
+diff -ur empathy-0.1.orig/configure.ac empathy-0.1/configure.ac
+--- empathy-0.1.orig/configure.ac 2007-04-25 23:05:40.000000000 +0100
++++ empathy-0.1/configure.ac 2007-04-27 17:10:29.000000000 +0100
+@@ -39,12 +39,12 @@
+
+ PKG_CHECK_MODULES(EMPATHY,
+ [
++ libxml-2.0
+ glib-2.0 >= $GLIB_REQUIRED
+ gobject-2.0
+ gtk+-2.0 >= $GTK_REQUIRED
+ gconf-2.0 >= $GCONF_REQUIRED
+ libglade-2.0 >= $LIBGLADE_REQUIRED
+- libgnomeui-2.0
+ libtelepathy >= $TELEPATHY_REQUIRED
+ libmissioncontrol >= $MISSION_CONTROL_REQUIRED
+ ])
+Only in empathy-0.1: configure.ac~
+diff -ur empathy-0.1.orig/libempathy-gtk/gossip-ui-utils.c empathy-0.1/libempathy-gtk/gossip-ui-utils.c
+--- empathy-0.1.orig/libempathy-gtk/gossip-ui-utils.c 2007-04-25 23:05:40.000000000 +0100
++++ empathy-0.1/libempathy-gtk/gossip-ui-utils.c 2007-04-27 17:06:48.000000000 +0100
+@@ -31,7 +31,6 @@
+ #include <glib/gi18n.h>
+ #include <gtk/gtk.h>
+ #include <glade/glade.h>
+-#include <libgnome/libgnome.h>
+
+ #include <libmissioncontrol/mc-profile.h>
+
+@@ -1307,7 +1306,7 @@
+ GError *error = NULL;
+
+ real_url = fixup_url (url);
+- gnome_url_show (real_url, &error);
++ g_warning ("TODO: gnome_url_show (real_url, &error);");
+ if (error) {
+ g_warning ("Couldn't show URL:'%s'", real_url);
+ g_error_free (error);
+Only in empathy-0.1/libempathy-gtk: gossip-ui-utils.c~
diff --git a/packages/telepathy/empathy_0.1.bb b/packages/telepathy/empathy_0.1.bb
new file mode 100644
index 0000000000..410acd01e3
--- /dev/null
+++ b/packages/telepathy/empathy_0.1.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Empathy: a Telepathy based IM client"
+HOMEPAGE = "http://blogs.gnome.org/view/xclaesse/2007/04/26/0"
+LICENSE = "GPL"
+DEPENDS = "telepathy-mission-control libtelepathy gtk+ gconf libglade"
+RDEPENDS = "telepathy-mission-control"
+RRECOMMENDS = "telepathy-gabble"
+
+PR="r1"
+
+SRC_URI = "http://projects.collabora.co.uk/~xclaesse/empathy-0.1.tar.gz \
+ file://no-gnome.diff;patch=1"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "/usr/share/mission-control/profiles/*.profile \
+ /usr/share/dbus-1/services/*.service \
+ /usr/share/telepathy/managers/*.chandler"
diff --git a/packages/telepathy/libtelepathy_0.0.53.bb b/packages/telepathy/libtelepathy_0.0.53.bb
new file mode 100644
index 0000000000..f3e4f37521
--- /dev/null
+++ b/packages/telepathy/libtelepathy_0.0.53.bb
@@ -0,0 +1,15 @@
+HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
+DEPENDS = "glib-2.0 dbus"
+LICENSE = "LGPL"
+PR = "r1"
+
+SRC_URI = "http://telepathy.freedesktop.org/releases/libtelepathy/libtelepathy-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "${datadir}/telepathy \
+ ${datadir}/dbus-1"
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/telepathy/telepathy-gabble-0.5.10/.mtn2git_empty b/packages/telepathy/telepathy-gabble-0.5.10/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/telepathy/telepathy-gabble-0.5.10/.mtn2git_empty
diff --git a/packages/telepathy/telepathy-gabble-0.5.10/gabble.manager b/packages/telepathy/telepathy-gabble-0.5.10/gabble.manager
new file mode 100644
index 0000000000..9000cd41cc
--- /dev/null
+++ b/packages/telepathy/telepathy-gabble-0.5.10/gabble.manager
@@ -0,0 +1,33 @@
+
+[ConnectionManager]
+BusName=org.freedesktop.Telepathy.ConnectionManager.gabble
+ObjectPath=/org/freedesktop/Telepathy/ConnectionManager/gabble
+
+[Protocol jabber]
+param-account=s required register
+param-password=s required register
+param-server=s
+param-resource=s
+param-priority=n
+param-port=q
+param-old-ssl=b
+param-register=b
+param-low-bandwidth=b
+param-https-proxy-server=s
+param-https-proxy-port=q
+param-fallback-conference-server=s
+param-stun-server=s
+param-stun-port=q
+param-ignore-ssl-errors=b
+param-alias=s
+param-mac=s
+param-btid=s
+default-resource=Telepathy
+default-priority=0
+default-port=5222
+default-old-ssl=false
+default-register=false
+default-low-bandwidth=false
+default-https-proxy-port=443
+default-stun-port=3478
+default-ignore-ssl-errors=false
diff --git a/packages/telepathy/telepathy-gabble_0.3.0.bb b/packages/telepathy/telepathy-gabble_0.3.0.bb
deleted file mode 100644
index b9675031e2..0000000000
--- a/packages/telepathy/telepathy-gabble_0.3.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-DESCRIPTION = "Gabble: a Jabber/XMPP connection manager"
-HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
-DEPENDS = "glib-2.0 dbus loudmouth"
-LICENSE = "lgpl"
-
-SRC_URI = "http://telepathy.freedesktop.org/releases/telepathy-gabble/${P}.tar.gz"
-
-inherit autotools pkgconfig
-
-
-FILES_${PN} += "${datadir}/telepathy \
- ${datadir}/dbus-1"
diff --git a/packages/telepathy/telepathy-gabble_0.5.10.bb b/packages/telepathy/telepathy-gabble_0.5.10.bb
new file mode 100644
index 0000000000..fbc209eeb5
--- /dev/null
+++ b/packages/telepathy/telepathy-gabble_0.5.10.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Gabble: a Jabber/XMPP connection manager"
+HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
+DEPENDS = "glib-2.0 dbus loudmouth telepathy-glib"
+LICENSE = "LGPL"
+
+# gabble.manager needs to get regenerated every release, so please don't copy it over blindly
+SRC_URI = "http://telepathy.freedesktop.org/releases/telepathy-gabble/${P}.tar.gz \
+ file://gabble.manager"
+
+inherit autotools pkgconfig
+
+do_compile_prepend() {
+ cp ${WORKDIR}/gabble.manager ${S}/data/
+}
+
+FILES_${PN} += "${datadir}/telepathy \
+ ${datadir}/dbus-1"
diff --git a/packages/telepathy/telepathy-glib_0.5.10.bb b/packages/telepathy/telepathy-glib_0.5.10.bb
new file mode 100644
index 0000000000..f6b6a6c6b3
--- /dev/null
+++ b/packages/telepathy/telepathy-glib_0.5.10.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "Telepathy framework - GLib library"
+HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
+DEPENDS = "glib-2.0 dbus python-native dbus-native"
+LICENSE = "LGPL"
+
+SRC_URI = "http://telepathy.freedesktop.org/releases/telepathy-glib/${P}.tar.gz "
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "${datadir}/telepathy \
+ ${datadir}/dbus-1"
+
+do_stage() {
+ #
+ # copied autotools_stage_all because telepathy-glib has one lib only built as static
+ # so it can not be oe_libinstalled
+ #
+ rm -rf ${STAGE_TEMP}
+ mkdir -p ${STAGE_TEMP}
+ oe_runmake DESTDIR="${STAGE_TEMP}" install
+ if [ -d ${STAGE_TEMP}/${includedir} ]; then
+ cp -fpPR ${STAGE_TEMP}/${includedir}/* ${STAGING_INCDIR}
+ fi
+ if [ -d ${STAGE_TEMP}/${libdir} ]
+ then
+ for i in ${STAGE_TEMP}/${libdir}/*.la
+ do
+ if [ ! -f "$i" ]; then
+ cp -fpPR ${STAGE_TEMP}/${libdir}/* ${STAGING_LIBDIR}
+ break
+ fi
+ done
+ oe_libinstall -so -C telepathy-glib/.libs libtelepathy-glib ${STAGING_LIBDIR}
+ fi
+ if [ -d ${STAGE_TEMP}/${datadir}/aclocal ]; then
+ install -d ${STAGING_DATADIR}/aclocal
+ cp -fpPR ${STAGE_TEMP}/${datadir}/aclocal/* ${STAGING_DATADIR}/aclocal
+ fi
+ rm -rf ${STAGE_TEMP}
+}
diff --git a/packages/telepathy/telepathy-mission-control_4.21.bb b/packages/telepathy/telepathy-mission-control_4.21.bb
new file mode 100644
index 0000000000..e604d8cea7
--- /dev/null
+++ b/packages/telepathy/telepathy-mission-control_4.21.bb
@@ -0,0 +1,42 @@
+DESCRIPTION = "Telepathy Mission Control"
+HOMEPAGE = "http://mission-control.sourceforge.net/"
+LICENSE = "LGPL"
+SECTION = "libs"
+DEPENDS = "libtelepathy dbus-glib gconf"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/mission-control/telepathy-mission-control-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+PACKAGES =+ " \
+ libmissioncontrol \
+ libmissioncontrol-config \
+ libmissioncontrol-server \
+ libmissioncontrol-dev \
+ libmissioncontrol-config-dev \
+ libmissioncontrol-server-dev \
+ libmissioncontrol-dbg \
+ libmissioncontrol-config-dbg \
+ libmissioncontrol-server-dbg \
+"
+
+FILES_${PN} += "${datadir}/dbus*"
+
+FILES_libmissioncontrol = "${libdir}/libmissioncontrol.so.*"
+FILES_libmissioncontrol-config = "${libdir}/libmissioncontrol-config.so.*"
+FILES_libmissioncontrol-server = "${libdir}/libmissioncontrol-server.so.*"
+
+FILES_libmissioncontrol-dev = "${libdir}/libmissioncontrol.* \
+ ${includedir}/libmissioncontrol/ \
+ ${libdir}/pkgconfig/libmissioncontrol.pc"
+FILES_libmissioncontrol-config-dev = "${libdir}/libmissioncontrol-config.*"
+FILES_libmissioncontrol-server-dev = "${libdir}/libmissioncontrol-server.*"
+
+FILES_libmissioncontrol-dbg = "${libdir}/.debug/libmissioncontrol.so.*"
+FILES_libmissioncontrol-config-dbg = "${libdir}/.debug/libmissioncontrol-config.so.*"
+FILES_libmissioncontrol-server-dbg = "${libdir}/.debug/libmissioncontrol-server.so.*"
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/testdisk/.mtn2git_empty b/packages/testdisk/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/testdisk/.mtn2git_empty
diff --git a/packages/testdisk/testdisk_6.5+6.6-WIP.bb b/packages/testdisk/testdisk_6.5+6.6-WIP.bb
new file mode 100644
index 0000000000..278c41cc99
--- /dev/null
+++ b/packages/testdisk/testdisk_6.5+6.6-WIP.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "TestDisk is a powerful free data recovery software! It was primarily designed to help recover lost partitions and/or make non-booting disks bootable again when these symptoms are caused by faulty software, certain types of viruses or human error (such as accidentally deleting your Partition Table)."
+LICENSE = "GPLv2"
+
+DEPENDS = "jpeg ncurses e2fsprogs-libs"
+
+SRC_URI = "http://www.cgsecurity.org/testdisk-6.6-WIP.tar.bz2"
+S = "${WORKDIR}/testdisk-6.6-WIP"
+
+inherit autotools pkgconfig
+
+PACKAGES =+ "photorec"
+
+DESCRIPTION_photorec = "Photorec is file data recovery software designed to recover lost files including video, documents and archives from Hard Disks and CDRom and lost pictures (Photo Recovery) from digital camera memory."
+FILES_photorec = "${sbindir}/photorec"
diff --git a/packages/texmaker/texmaker_1.3.bb b/packages/texmaker/texmaker_1.3.bb
index 7f14e90b34..5682338f31 100644
--- a/packages/texmaker/texmaker_1.3.bb
+++ b/packages/texmaker/texmaker_1.3.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "TeXmaker is a free cross-platform LaTeX editor"
HOMEPAGE = "http://www.xm1math.net/texmaker"
-SECTION = "x11/apps"
+SECTION = "x11/applications"
LICENSE = "GPL"
SRC_URI = "http://www.xm1math.net/texmaker/texmaker-${PV}.tar.bz2"
diff --git a/packages/thttpd/files/htpasswd_shared.diff b/packages/thttpd/files/htpasswd_shared.diff
new file mode 100644
index 0000000000..7ee2cd27dc
--- /dev/null
+++ b/packages/thttpd/files/htpasswd_shared.diff
@@ -0,0 +1,11 @@
+--- thttpd-2.25b/extras/Makefile.in.orig 2007-03-17 22:30:47.356393000 +0100
++++ thttpd-2.25b/extras/Makefile.in 2007-03-17 22:31:34.566393000 +0100
+@@ -36,7 +36,7 @@
+ DEFS = @DEFS@
+ INCLS = -I..
+ CFLAGS = $(CCOPT) $(DEFS) $(INCLS)
+-STATICFLAG = @V_STATICFLAG@
++STATICFLAG =
+ LDFLAGS = @LDFLAGS@
+ LIBS = @LIBS@
+ NETLIBS = @V_NETLIBS@
diff --git a/packages/thttpd/thttpd_2.25b.bb b/packages/thttpd/thttpd_2.25b.bb
index c5d15269ea..c8520f84af 100644
--- a/packages/thttpd/thttpd_2.25b.bb
+++ b/packages/thttpd/thttpd_2.25b.bb
@@ -1,12 +1,13 @@
DESCRIPTION = "A simple, small, portable, fast, and secure HTTP server."
LICENSE = "BSD"
HOMEPAGE = "http://www.acme.com/software/thttpd/"
-PR="r5"
+PR="r6"
SRC_URI = "http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz \
file://install.patch;patch=1 \
file://acinclude.m4 \
- file://init"
+ file://init \
+ file://htpasswd_shared.diff;patch=1"
S = "${WORKDIR}/thttpd-${PV}"
INITSCRIPT_NAME = "thttpd"
diff --git a/packages/tin/files/configure.patch b/packages/tin/files/configure.patch
deleted file mode 100644
index 4059fe086f..0000000000
--- a/packages/tin/files/configure.patch
+++ /dev/null
@@ -1,205 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- tin-1.7.3/configure.in~configure
-+++ tin-1.7.3/configure.in
-@@ -34,8 +34,9 @@
- dnl
- dnl Process this file with autoconf to produce a configure script.
-
--AC_PREREQ(2.13.20020210)
--AC_INIT(include/tin.h)
-+AC_PREREQ(2.57)
-+AC_INIT
-+AC_CONFIG_SRCDIR([include/tin.h])
- AC_CONFIG_HEADER(include/autoconf.h:include/autoconf.hin)
- AC_PREFIX_DEFAULT(/usr/local)
-
-@@ -406,7 +407,7 @@
- CF_NCURSES_LIBS(ncursesw)
- CF_NCURSES_VERSION
- CF_XOPEN_CURSES
-- test "$cf_cv_need_xopen_extension" = unknown && AC_ERROR(X/Open curses not found)
-+ test "$cf_cv_need_xopen_extension" = unknown && AC_MSG_ERROR([X/Open curses not found])
- ;;
- curses) #(vi
- CF_CURSES_CPPFLAGS
-@@ -432,25 +433,25 @@
- fi
-
- ## debugging libraries (do this after other libraries)
--AC_MSG_CHECKING(if you want dbmalloc library)
-+AC_MSG_CHECKING([if you want dbmalloc library])
- debug_malloc=none
--AC_ARG_WITH(dbmalloc,
-+AC_ARG_WITH([dbmalloc],
- [ --with-dbmalloc use Conor Cahill's dbmalloc library],
-- [AC_MSG_RESULT(yes)
-- AC_CHECK_LIB(dbmalloc,debug_malloc,
-- AC_CHECK_HEADER(dbmalloc.h,debug_malloc=DBMALLOC))],
-- AC_MSG_RESULT(no))
-+ [AC_MSG_RESULT([yes])
-+ AC_CHECK_LIB([dbmalloc],[debug_malloc],[
-+ AC_CHECK_HEADER([dbmalloc.h],[debug_malloc=DBMALLOC])])],
-+ AC_MSG_RESULT([no]))
-
--AC_MSG_CHECKING(if you want dmalloc library)
--AC_ARG_WITH(dmalloc,
-+AC_MSG_CHECKING([if you want dmalloc library])
-+AC_ARG_WITH([dmalloc],
- [ --with-dmalloc use Gray Watson's dmalloc library],
- [AC_MSG_RESULT(yes)
-- AC_CHECK_LIB(dmalloc,dmalloc_debug,
-- AC_CHECK_HEADER(dmalloc.h,debug_malloc=DMALLOC))],
-+ AC_CHECK_LIB([dmalloc],[dmalloc_debug],[
-+ AC_CHECK_HEADER([dmalloc.h],[debug_malloc=DMALLOC])])],
- AC_MSG_RESULT(no))
-
--AC_MSG_CHECKING(if you want debugging-trace)
--AC_ARG_WITH(trace,
-+AC_MSG_CHECKING([if you want debugging-trace])
-+AC_ARG_WITH([trace],
- [ --with-trace use debugging/traces],
- [use_trace=yes],
- [use_trace=no])
-@@ -667,7 +668,7 @@
-
- ### checks for compiler characteristics
- CF_MAKEFLAGS
--AC_LANG_C
-+AC_LANG([C])
- AC_C_CONST
- AC_C_INLINE
- CF_CPP_EXPANDS
-@@ -763,14 +764,13 @@
-
- dnl test to see if quad_t is defined
- AC_MSG_CHECKING(for quad_t)
--AC_TRY_COMPILE([
-+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #include <sys/types.h>
- #if 0
- #include <stdlib.h>
- #include <stddef.h>
- #endif /* 0 */
--],[quad_t x; x = 0],
--ac_cv_quad_t=yes, ac_cv_quad_t=no)
-+]], [[quad_t x; x = 0]])],[ac_cv_quad_t=yes],[ac_cv_quad_t=no])
- AC_MSG_RESULT($ac_cv_quad_t)
- if test $ac_cv_quad_t = yes; then
- AC_DEFINE(HAVE_QUAD_T)
-@@ -778,10 +778,9 @@
-
- dnl test to see if long long is defined
- AC_MSG_CHECKING(for long long)
--AC_TRY_COMPILE([
-+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #include <sys/types.h>
--],[long long x; x = 0],
--ac_cv_long_long=yes, ac_cv_long_long=no)
-+]], [[long long x; x = 0]])],[ac_cv_long_long=yes],[ac_cv_long_long=no])
- AC_MSG_RESULT($ac_cv_long_long)
- if test $ac_cv_long_long = yes; then
- AC_DEFINE(HAVE_LONG_LONG)
-@@ -789,7 +788,7 @@
-
- dnl test to see if nl_item is defined
- AC_MSG_CHECKING(for nl_item)
--AC_TRY_COMPILE([
-+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #ifdef HAVE_LANGINFO_H
- #include <langinfo.h>
- #else
-@@ -797,8 +796,7 @@
- #include <nl_types.h>
- #endif
- #endif
--],[nl_item x; x = 0],
--ac_cv_nl_item=yes, ac_cv_nl_item=no)
-+]], [[nl_item x; x = 0]])],[ac_cv_nl_item=yes],[ac_cv_nl_item=no])
- AC_MSG_RESULT($ac_cv_nl_item)
- if test $ac_cv_nl_item = yes; then
- AC_DEFINE(HAVE_NL_ITEM)
-@@ -845,14 +843,13 @@
- cf_save_LIBS="$LIBS"
- cf_try_icuuc="no"
- LIBS="$LIBS -licuuc"
-- AC_TRY_LINK([#include <unicode/unorm.h>], [
-+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <unicode/unorm.h>]], [[
- int32_t needed, ustr = NULL;
- UErrorCode status;
-- needed = unorm_normalize(ustr, -1, UNORM_DEFAULT, 0, NULL, 0, &status);], [
-+ needed = unorm_normalize(ustr, -1, UNORM_DEFAULT, 0, NULL, 0, &status);]])],[
- AC_DEFINE(HAVE_LIBICUUC)
-- cf_try_icuuc="yes"],
-- LIBS=$cf_save_LIBS
-- )
-+ cf_try_icuuc="yes"],[LIBS=$cf_save_LIBS
-+ ])
- AC_MSG_RESULT($cf_try_icuuc)
- ])
- ])
-@@ -866,15 +863,13 @@
- AC_MSG_CHECKING(if we should include termcap.h)
- cf_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -I$srcdir/include"
-- AC_TRY_COMPILE([
-+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #define HAVE_TERMCAP_H 1
--#include <tcurses.h>],[
-+#include <tcurses.h>]], [[
- #ifdef NCURSES_VERSION
- make an error
- #endif
--],
-- [cf_result=yes],
-- [cf_result=no])
-+]])],[cf_result=yes],[cf_result=no])
- AC_MSG_RESULT($cf_result)
- CFLAGS="$cf_save_CFLAGS"
- test $cf_result = yes && AC_DEFINE(HAVE_TERMCAP_H)
-@@ -889,8 +884,7 @@
- cf_tc_externs="$cf_tc_funcs tgoto tigetstr tputs tigetflag"
- elif test ".$cf_cv_termlib" = .termcap ; then
- # BSD 'tputs()' may need 'PC' to be set.
-- AC_TRY_LINK([],[extern char PC; PC = 0],
-- [AC_DEFINE(HAVE_EXTERN_TCAP_PC)])
-+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[extern char PC; PC = 0]])],[AC_DEFINE(HAVE_EXTERN_TCAP_PC)],[])
- cf_tc_funcs="tgetint tgetnum tparam tparm"
- cf_tc_externs="$cf_tc_funcs tgoto tgetstr tputs tgetent tgetflag"
- fi
-@@ -1172,7 +1166,7 @@
-
- CF_CHECK_HEADERS(iconv.h)
- AC_MSG_CHECKING(for iconv_open() //TRANSLIT extension)
--AC_TRY_RUN([
-+AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #ifdef HAVE_ICONV_H
- # include <iconv.h>
- #endif /* HAVE_ICONV_H */
-@@ -1185,11 +1179,8 @@
- if ((cd = iconv_open("US-ASCII//TRANSLIT", "ISO-8859-1")) == (iconv_t) (-1))
- exit(1);
- exit(0);
--}],
-- AC_DEFINE(HAVE_ICONV_OPEN_TRANSLIT) AC_MSG_RESULT(yes),
-- AC_MSG_RESULT(no),
-- AC_MSG_RESULT(unknown)
--)
-+}]])],[AC_DEFINE(HAVE_ICONV_OPEN_TRANSLIT) AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(unknown)
-+])
-
-
- # tin has mkdirs.sh instead of mkinstalldirs, overwrite the result of test
-@@ -1223,6 +1214,7 @@
- CF_DEFINE_STRING(TIN_LDFLAGS, "$LDFLAGS")
- CF_DEFINE_STRING(TIN_LIBS, "$LIBS")
-
--AC_OUTPUT($PCRE_MAKEFILE
-+AC_CONFIG_FILES([$PCRE_MAKEFILE
- $SUB_MAKEFILE
-- src/Makefile)
-+ src/Makefile])
-+AC_OUTPUT
diff --git a/packages/tin/files/makecfg-buildcc.patch b/packages/tin/files/makecfg-buildcc.patch
deleted file mode 100644
index 2b3dba44f9..0000000000
--- a/packages/tin/files/makecfg-buildcc.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- tin-1.7.3/src/Makefile.in~makecfg-buildcc
-+++ tin-1.7.3/src/Makefile.in
-@@ -462,7 +462,7 @@
- ./makecfg $(SRCDIR)/tincfg.tbl tincfg.h
-
- makecfg$(EXEEXT): $(OBJDIR)/makecfg.o
-- $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/makecfg.o @LIBS@
-+ $(BUILD_CC) $(BUILD_LDFLAGS) -o $@ $(OBJDIR)/makecfg.o
-
- $(OBJDIR)/active.o: $(SRCDIR)/active.c $(TIN_DEP)
- $(OBJDIR)/art.o: $(SRCDIR)/art.c $(TIN_DEP) \
-@@ -519,6 +519,7 @@
- $(OBJDIR)/main.o: $(SRCDIR)/main.c $(TIN_DEP) \
- $(INCDIR)/version.h
- $(OBJDIR)/makecfg.o: $(SRCDIR)/makecfg.c $(TIN_DEP)
-+ $(BUILD_CC) $(BUILD_CFLAGS) -c -I../include -I../pcre -o $@ $(SRCDIR)/makecfg.c
- $(OBJDIR)/memory.o: $(SRCDIR)/memory.c $(TIN_DEP) \
- $(INCDIR)/rfc2046.h
- $(OBJDIR)/mimetypes.o: $(SRCDIR)/mimetypes.c $(TIN_DEP)
diff --git a/packages/tin/tin.inc b/packages/tin/tin.inc
new file mode 100644
index 0000000000..683962838c
--- /dev/null
+++ b/packages/tin/tin.inc
@@ -0,0 +1,8 @@
+DESCRIPTION = "Tin is a powerful text mode news reader."
+SECTION = "console/network"
+DEPENDS = "ncurses libpcre"
+LICENSE = "BSD"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-screen=ncurses --with-pcre=${STAGING_LIBDIR}/.."
diff --git a/packages/tin/tin_1.7.3.bb b/packages/tin/tin_1.7.3.bb
deleted file mode 100644
index 58726d7a27..0000000000
--- a/packages/tin/tin_1.7.3.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION = "Tin is a powerful text mode news reader."
-SECTION = "console/network"
-DEPENDS = "ncurses"
-LICENSE = "GPL"
-PR = "r3"
-
-SRC_URI = "ftp://ftp.tin.org/pub/news/clients/tin/unstable/tin-${PV}.tar.gz \
- file://makecfg-buildcc.patch;patch=1 \
- file://m4.patch;patch=1 \
- file://configure.patch;patch=1"
-
-inherit autotools
-
-EXTRA_OECONF = "--with-screen=ncurses"
-CFLAGS += "-DM_UNIX"
-
-do_compile() {
- ${BUILD_CC} -DLINK_SIZE=2 -I${S}/include -c pcre/dftables.c
- ${BUILD_CC} dftables.o -o pcre/dftables
- oe_runmake build
-}
diff --git a/packages/tin/tin_1.9.1.bb b/packages/tin/tin_1.9.1.bb
index dcf53bd8b5..3adfc536df 100644
--- a/packages/tin/tin_1.9.1.bb
+++ b/packages/tin/tin_1.9.1.bb
@@ -1,16 +1,11 @@
-DESCRIPTION = "Tin is a powerful text mode news reader."
-SECTION = "console/network"
-DEPENDS = "ncurses pcre"
-LICENSE = "GPL"
-PR = "r0"
+require tin.inc
-SRC_URI = "ftp://ftp.tin.org/pub/news/clients/tin/unstable/tin-${PV}.tar.gz \
- file://m4.patch;patch=1"
+PR = "r1"
-inherit autotools
+SRC_URI = "ftp://ftp.tin.org/pub/news/clients/tin/v1.9/tin-${PV}.tar.gz \
+ file://m4.patch;patch=1"
PARALLEL_MAKE = ""
-EXTRA_OECONF = "--with-screen=ncurses --with-pcre=${STAGING_LIBDIR}/.."
export BUILD_CFLAGS += "-I${S}/include -DHAVE_CONFIG_H"
diff --git a/packages/tinymail/tinymail_svn.bb b/packages/tinymail/tinymail_svn.bb
index 2a379d9343..f48c84bbaa 100644
--- a/packages/tinymail/tinymail_svn.bb
+++ b/packages/tinymail/tinymail_svn.bb
@@ -1,8 +1,7 @@
-SECTION = "x11/utils"
-DEPENDS = "gtk+ glib-2.0 gnome-vfs-dbus gconf-dbus libgnomeui"
DESCRIPTION = "TinyMail is an attempt to create an E-mail framework for mobile devices"
+SECTION = "x11/utils"
LICENSE = "GPL"
-
+DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libgnomeui"
PV = "0.0+svn${SRCDATE}"
PR = "r3"
diff --git a/packages/tor/tor-0.1.1.26/.mtn2git_empty b/packages/tor/tor-0.1.1.26/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/tor/tor-0.1.1.26/.mtn2git_empty
diff --git a/packages/tor/tor-0.1.1.23/compat.patch b/packages/tor/tor-0.1.1.26/compat.patch
index 6c54032667..6c54032667 100644
--- a/packages/tor/tor-0.1.1.23/compat.patch
+++ b/packages/tor/tor-0.1.1.26/compat.patch
diff --git a/packages/tor/tor-0.1.1.23/configure.patch b/packages/tor/tor-0.1.1.26/configure.patch
index dcd214feb2..dcd214feb2 100644
--- a/packages/tor/tor-0.1.1.23/configure.patch
+++ b/packages/tor/tor-0.1.1.26/configure.patch
diff --git a/packages/tor/tor-0.1.1.23/make.patch b/packages/tor/tor-0.1.1.26/make.patch
index 8b8851b22b..8b8851b22b 100644
--- a/packages/tor/tor-0.1.1.23/make.patch
+++ b/packages/tor/tor-0.1.1.26/make.patch
diff --git a/packages/tor/tor-0.1.1.23/openssl.patch b/packages/tor/tor-0.1.1.26/openssl.patch
index e413486273..e413486273 100644
--- a/packages/tor/tor-0.1.1.23/openssl.patch
+++ b/packages/tor/tor-0.1.1.26/openssl.patch
diff --git a/packages/tor/tor_0.1.1.23.bb b/packages/tor/tor_0.1.1.23.bb
deleted file mode 100644
index 29cda6945f..0000000000
--- a/packages/tor/tor_0.1.1.23.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-DESCRIPTION = "Tor is a network of virtual tunnels that allows people and groups \
- to improve their privacy and security on the Internet."
-SECTION = "console/network"
-PRIORITY = "optional"
-HOMEPAGE = "http://tor.eff.org"
-LICENSE = "BSD"
-PR="r0"
-DEPENDS = "libevent openssl zlib"
-
-SRC_URI = "http://tor.eff.org/dist/tor-0.1.1.23.tar.gz \
- file://configure.patch;patch=1;pnum=1 \
- file://make.patch;patch=1;pnum=1 \
- file://compat.patch;patch=1;pnum=1 \
- file://tor.init"
-
-
-inherit autotools update-rc.d
-
-INITSCRIPT_NAME = "tor"
-
-do_install_append() {
- install -d ${D}${sysconfdir}/init.d
- install ${WORKDIR}/tor.init ${D}${sysconfdir}/init.d/tor
-}
diff --git a/packages/tor/tor_0.1.1.26.bb b/packages/tor/tor_0.1.1.26.bb
new file mode 100644
index 0000000000..51ff1001dd
--- /dev/null
+++ b/packages/tor/tor_0.1.1.26.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Tor is a network of virtual tunnels that allows people and groups \
+ to improve their privacy and security on the Internet."
+HOMEPAGE = "http://tor.eff.org"
+SECTION = "console/network"
+PRIORITY = "optional"
+LICENSE = "BSD"
+DEPENDS = "libevent openssl zlib"
+
+SRC_URI = "http://tor.eff.org/dist/${P}.tar.gz \
+ file://configure.patch;patch=1;pnum=1 \
+ file://make.patch;patch=1;pnum=1 \
+ file://compat.patch;patch=1;pnum=1 \
+ file://tor.init"
+
+
+inherit autotools update-rc.d
+
+INITSCRIPT_NAME = "tor"
+
+do_install_append() {
+ install -d ${D}${sysconfdir}/init.d
+ install ${WORKDIR}/tor.init ${D}${sysconfdir}/init.d/tor
+}
diff --git a/packages/tracker/.mtn2git_empty b/packages/tracker/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/tracker/.mtn2git_empty
diff --git a/packages/tracker/files/.mtn2git_empty b/packages/tracker/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/tracker/files/.mtn2git_empty
diff --git a/packages/tracker/files/no-ioprio.patch b/packages/tracker/files/no-ioprio.patch
new file mode 100644
index 0000000000..2ce4990bd4
--- /dev/null
+++ b/packages/tracker/files/no-ioprio.patch
@@ -0,0 +1,22 @@
+--- /tmp/configure.ac 2007-04-30 13:34:39.000000000 +0200
++++ tracker-0.5.4/configure.ac 2007-04-30 13:37:48.405251000 +0200
+@@ -513,19 +513,6 @@
+
+ AC_MSG_CHECKING([[checking ioprio support]])
+ ioprio_support=no
+-AC_RUN_IFELSE([ AC_LANG_PROGRAM([[
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <sys/syscall.h>
+-#include <unistd.h>
+-inline int ioprio_get (int which, int who)
+-{
+- return syscall (__NR_ioprio_get, which, who);
+-}
+- ]], [[
+-exit(ioprio_get(1,0));
+- ]]) ],
+- [ AC_DEFINE(IOPRIO_SUPPORT,[],[Define ioprio support]) ioprio_support=yes ])
+ AC_MSG_RESULT([$ioprio_support])
+
+ #####################################################
diff --git a/packages/tracker/tracker_0.5.4.bb b/packages/tracker/tracker_0.5.4.bb
new file mode 100644
index 0000000000..d10a2a646b
--- /dev/null
+++ b/packages/tracker/tracker_0.5.4.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Tracker is a tool designed to extract information and metadata about your personal data so that it can be searched easily and quickly."
+LICENSE = "GPLv2"
+DEPENDS = "file gtk+ gstreamer gamin libgmime dbus poppler libexif libgsf"
+
+SRC_URI = "http://www.gnome.org/~jamiemcc/tracker/tracker-${PV}.tar.gz \
+ file://no-ioprio.patch;patch=1"
+
+inherit autotools pkgconfig
+
+do_install_append() {
+ cp -dPr ${D}${STAGING_DATADIR}/* ${D}${datadir}/
+}
+
+FILES_${PN} += "${datadir}/dbus-1/"
diff --git a/packages/treecc/treecc_0.3.6.bb b/packages/treecc/treecc_0.3.6.bb
index 9a6c7c8eda..e54beb4810 100644
--- a/packages/treecc/treecc_0.3.6.bb
+++ b/packages/treecc/treecc_0.3.6.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Tree Compiler-Compiler from dotGNU"
SECTION = "devel"
-LICENSE = "GPL-2"
+LICENSE = "GPLv2"
HOMEPAGE = "http://www.southern-storm.com.au/treecc.html"
PRIORITY = "optional"
diff --git a/packages/tslib/tslib-1.0/.mtn2git_empty b/packages/tslib/tslib-1.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/tslib/tslib-1.0/.mtn2git_empty
diff --git a/packages/tslib/tslib-1.0/fic-gta01/.mtn2git_empty b/packages/tslib/tslib-1.0/fic-gta01/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/tslib/tslib-1.0/fic-gta01/.mtn2git_empty
diff --git a/packages/tslib/tslib-1.0/fic-gta01/ts.conf b/packages/tslib/tslib-1.0/fic-gta01/ts.conf
new file mode 100644
index 0000000000..82f712ef41
--- /dev/null
+++ b/packages/tslib/tslib-1.0/fic-gta01/ts.conf
@@ -0,0 +1,25 @@
+# Uncomment if you wish to use the linux input layer event interface
+module_raw input grab_events=1
+
+# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d
+# module_raw collie
+
+# Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860
+# module_raw corgi
+
+# Uncomment if you're using a device with a UCB1200/1300/1400 TS interface
+# module_raw ucb1x00
+
+# Uncomment if you're using an HP iPaq h3600 or similar
+# module_raw h3600
+
+# Uncomment if you're using a Hitachi Webpad
+# module_raw mk712
+
+# Uncomment if you're using an IBM Arctic II
+# module_raw arctic2
+
+module pthres pmin=1
+module variance delta=30
+module dejitter delta=100
+module linear
diff --git a/packages/tslib/tslib-1.0/ts.conf b/packages/tslib/tslib-1.0/ts.conf
new file mode 100644
index 0000000000..1abde2fc7f
--- /dev/null
+++ b/packages/tslib/tslib-1.0/ts.conf
@@ -0,0 +1,25 @@
+# Uncomment if you wish to use the linux input layer event interface
+module_raw input grab_events=0
+
+# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d
+# module_raw collie
+
+# Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860
+# module_raw corgi
+
+# Uncomment if you're using a device with a UCB1200/1300/1400 TS interface
+# module_raw ucb1x00
+
+# Uncomment if you're using an HP iPaq h3600 or similar
+# module_raw h3600
+
+# Uncomment if you're using a Hitachi Webpad
+# module_raw mk712
+
+# Uncomment if you're using an IBM Arctic II
+# module_raw arctic2
+
+module pthres pmin=1
+module variance delta=30
+module dejitter delta=100
+module linear
diff --git a/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch b/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch
new file mode 100644
index 0000000000..4bd0a05531
--- /dev/null
+++ b/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch
@@ -0,0 +1,120 @@
+This patch adds support for "EVIOCGRAB" on the input device, which
+tells the kernel _not_ to deliver events of the touchscreen to
+/dev/input/mice.
+
+This is probably what most people want, since unprocessed raw touchscreen
+events should not be converted to emulated PS/2 mouse movements.
+
+Signed-off-by: Harald Welte <laforge@openmoko.org>
+
+Index: a/plugins/input-raw.c
+===================================================================
+--- a/plugins/input-raw.c (revision 49)
++++ b/plugins/input-raw.c (working copy)
+@@ -18,6 +18,7 @@
+
+ #include <errno.h>
+ #include <stdio.h>
++#include <limits.h>
+
+ #include <stdlib.h>
+ #ifdef HAVE_UNISTD_H
+@@ -33,6 +34,9 @@
+
+ #include "tslib-private.h"
+
++#define GRAB_EVENTS_WANTED 1
++#define GRAB_EVENTS_ACTIVE 2
++
+ struct tslib_input {
+ struct tslib_module_info module;
+
+@@ -42,6 +46,7 @@
+
+ int sane_fd;
+ int using_syn;
++ int grab_events;
+ };
+
+ static int check_fd(struct tslib_input *i)
+@@ -64,6 +69,14 @@
+
+ if (bit & (1 << EV_SYN))
+ i->using_syn = 1;
++
++ if (i->grab_events == GRAB_EVENTS_WANTED) {
++ if (ioctl(ts->fd, EVIOCGRAB, (void *)1)) {
++ fprintf(stderr, "Unable to grab selected input device\n");
++ return -1;
++ }
++ i->grab_events = GRAB_EVENTS_ACTIVE;
++ }
+
+ return 0;
+ }
+@@ -222,6 +235,15 @@
+
+ static int ts_input_fini(struct tslib_module_info *inf)
+ {
++ struct tslib_input *i = (struct tslib_input *)inf;
++ struct tsdev *ts = inf->dev;
++
++ if (i->grab_events == GRAB_EVENTS_ACTIVE) {
++ if (ioctl(ts->fd, EVIOCGRAB, (void *)0)) {
++ fprintf(stderr, "Unable to un-grab selected input device\n");
++ }
++ }
++
+ free(inf);
+ return 0;
+ }
+@@ -231,6 +253,36 @@
+ .fini = ts_input_fini,
+ };
+
++static int parse_raw_grab(struct tslib_module_info *inf, char *str, void *data)
++{
++ struct tslib_input *i = (struct tslib_input *)inf;
++ unsigned long v;
++ int err = errno;
++
++ v = strtoul(str, NULL, 0);
++
++ if (v == ULONG_MAX && errno == ERANGE)
++ return -1;
++
++ errno = err;
++ switch ((int)data) {
++ case 1:
++ if (v)
++ i->grab_events = GRAB_EVENTS_WANTED;
++ break;
++ default:
++ return -1;
++ }
++ return 0;
++}
++
++static const struct tslib_vars raw_vars[] =
++{
++ { "grab_events", (void *)1, parse_raw_grab },
++};
++
++#define NR_VARS (sizeof(raw_vars) / sizeof(raw_vars[0]))
++
+ TSAPI struct tslib_module_info *mod_init(struct tsdev *dev, const char *params)
+ {
+ struct tslib_input *i;
+@@ -245,5 +297,12 @@
+ i->current_p = 0;
+ i->sane_fd = 0;
+ i->using_syn = 0;
++ i->grab_events = 0;
++
++ if (tslib_parse_vars(&i->module, raw_vars, NR_VARS, params)) {
++ free(i);
++ return NULL;
++ }
++
+ return &(i->module);
+ }
diff --git a/packages/tslib/tslib/a780/tslib.sh b/packages/tslib/tslib/a780/tslib.sh
deleted file mode 100644
index 51cd0f1f36..0000000000
--- a/packages/tslib/tslib/a780/tslib.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-TSLIB_TSDEVICE=/dev/input/event1
-TSLIB_CONFFILE=/etc/ts.conf
-
-export TSLIB_TSDEVICE TSLIB_CONFFILE
diff --git a/packages/tslib/tslib/htctornado/.mtn2git_empty b/packages/tslib/tslib/htctornado/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/tslib/tslib/htctornado/.mtn2git_empty
diff --git a/packages/tslib/tslib/htctornado/tslib.sh b/packages/tslib/tslib/htctornado/tslib.sh
new file mode 100644
index 0000000000..33c8c11d4f
--- /dev/null
+++ b/packages/tslib/tslib/htctornado/tslib.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+# This indicates that we have no pointing device at all
+TSLIB_TSDEVICE=/dev/null
+
+export TSLIB_TSDEVICE
+
diff --git a/packages/tslib/tslib_1.0.bb b/packages/tslib/tslib_1.0.bb
index 0ece5b0331..7ccfdd82c7 100644
--- a/packages/tslib/tslib_1.0.bb
+++ b/packages/tslib/tslib_1.0.bb
@@ -4,9 +4,10 @@ AUTHOR = "Russell King w/ plugins by Chris Larson et. al."
SECTION = "base"
LICENSE = "LGPL"
-PR = "r7"
+PR = "r11"
SRC_URI = "http://download.berlios.de/tslib/tslib-1.0.tar.bz2 \
+ file://tslib-input_raw-grab_events.patch;patch=1 \
file://ts.conf \
file://ts.conf-simpad-2.4 \
file://ts.conf-collie-2.4 \
@@ -76,6 +77,6 @@ RDEPENDS_${PN} = "tslib-conf"
FILES_${PN}-dbg += "${libdir}/ts/.debug*"
FILES_tslib-conf = "${sysconfdir}/ts.conf ${sysconfdir}/profile.d/tslib.sh ${datadir}/tslib"
FILES_${PN} = "${libdir}/*.so.* ${libdir}/ts/*.so*"
-FILES_libts-dev = "${FILES_tslib-dev}"
+FILES_libts-dev = "${FILES_tslib-dev} ${libdir}/ts/*.la"
FILES_tslib-calibrate += "${bindir}/ts_calibrate"
FILES_tslib-tests = "${bindir}/ts_harvest ${bindir}/ts_print ${bindir}/ts_print_raw ${bindir}/ts_test"
diff --git a/packages/ttf-fonts/ttf-dejavu_2.12.bb b/packages/ttf-fonts/ttf-dejavu_2.15.bb
index c1b743aa1b..c1b743aa1b 100644
--- a/packages/ttf-fonts/ttf-dejavu_2.12.bb
+++ b/packages/ttf-fonts/ttf-dejavu_2.15.bb
diff --git a/packages/ttf-fonts/ttf-sazanami_20040629.bb b/packages/ttf-fonts/ttf-sazanami_20040629.bb
index d1c4882d14..a51036155d 100644
--- a/packages/ttf-fonts/ttf-sazanami_20040629.bb
+++ b/packages/ttf-fonts/ttf-sazanami_20040629.bb
@@ -1,16 +1,18 @@
+require ttf.inc
+
DESCRIPTION = "Sazanami Gothic/Mincho Japanese TrueType fonts"
DESCRIPTION_ttf-sazanami-gothic = "Sazanami Gothic Japanese TrueType font"
DESCRIPTION_ttf-sazanami-mincho = "Sazanami Mincho Japanese TrueType font"
-LICENSE = "${PN}"
-SRC_DISTRIBUTE_LICENSES += "${PN}"
AUTHOR = "Electronic Font Open Laboratory (/efont/)"
HOMEPAGE = "http://sourceforge.jp/projects/efont/"
+LICENSE = "${PN}"
+SRC_DISTRIBUTE_LICENSES += "${PN}"
+RPROVIDES = "virtual/japanese-font"
+PR = "r1"
SRC_URI = "http://download.sourceforge.jp/efont/10087/sazanami-20040629.tar.bz2"
S = "${WORKDIR}/sazanami-20040629"
-require ttf.inc
-
PACKAGES = "ttf-sazanami-gothic ttf-sazanami-mincho"
FILES_ttf-sazanami-gothic = "${datadir}/fonts/truetype/sazanami-gothic.ttf \
${datadir}/doc/ttf-sazanami-gothic/README"
diff --git a/packages/ttyrec/.mtn2git_empty b/packages/ttyrec/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ttyrec/.mtn2git_empty
diff --git a/packages/ttyrec/files/.mtn2git_empty b/packages/ttyrec/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ttyrec/files/.mtn2git_empty
diff --git a/packages/ttyrec/files/Makefile.patch b/packages/ttyrec/files/Makefile.patch
new file mode 100644
index 0000000000..4c2f5774af
--- /dev/null
+++ b/packages/ttyrec/files/Makefile.patch
@@ -0,0 +1,8 @@
+--- ttyrec-1.0.8/Makefile.orig 2007-04-03 02:08:25.000000000 +0000
++++ ttyrec-1.0.8/Makefile 2007-04-03 02:08:42.000000000 +0000
+@@ -1,5 +1,3 @@
+-CC = gcc
+-CFLAGS = -O2
+ VERSION = 1.0.8
+
+ TARGET = ttyrec ttyplay ttytime
diff --git a/packages/ttyrec/ttyrec_1.0.8.bb b/packages/ttyrec/ttyrec_1.0.8.bb
new file mode 100644
index 0000000000..324751b4ba
--- /dev/null
+++ b/packages/ttyrec/ttyrec_1.0.8.bb
@@ -0,0 +1,42 @@
+#! /bin/sh
+#
+# 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)
+#
+# Filename: ttyrec_1.0.8.bb
+# Date: 20070403 (YMD)
+
+DESCRIPTION = "ttyrec is a tty recorder. Recorded data can be played back with the included ttyplay command."
+MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
+HOMEPAGE = "http://0xcc.net/ttyrec/index.html.en"
+
+######################################################################################
+
+PR = "r0"
+
+######################################################################################
+
+SRC_URI = "http://0xcc.net/ttyrec/${PN}-${PV}.tar.gz \
+ file://Makefile.patch;patch=1"
+
+######################################################################################
+
+inherit autotools
+
+######################################################################################
+
+S = "${WORKDIR}/${PN}-${PV}"
+
+######################################################################################
+
+do_install() {
+ install -d ${D}/usr/bin
+ install -d ${D}/usr/share/man/man1
+
+ for binary in ttyrec ttyplay ttytime
+ do
+ install -m 0755 ${S}/${binary} ${D}/usr/bin/
+ install -m 0644 ${S}/${binary}.1 ${D}/usr/share/man/man1
+ done
+}
diff --git a/packages/tzcode/.mtn2git_empty b/packages/tzcode/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/tzcode/.mtn2git_empty
diff --git a/packages/tzcode/tzcode-native_2007e.bb b/packages/tzcode/tzcode-native_2007e.bb
new file mode 100644
index 0000000000..8e721d6d9a
--- /dev/null
+++ b/packages/tzcode/tzcode-native_2007e.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "tzcode, timezone zoneinfo utils -- zic, zdump, tzselect"
+
+PR = "r0"
+
+SRC_URI = "ftp://elsie.nci.nih.gov/pub/tzcode${PV}.tar.gz \
+ ftp://elsie.nci.nih.gov/pub/tzdata${PV}.tar.gz"
+
+S = "${WORKDIR}"
+
+inherit native
+
+do_stage () {
+ install -d ${STAGING_BINDIR_NATIVE}
+ install -m 755 zic ${STAGING_BINDIR_NATIVE}/
+ install -m 755 zdump ${STAGING_BINDIR_NATIVE}/
+ install -m 755 tzselect ${STAGING_BINDIR_NATIVE}/
+}
+
+do_install () {
+ :
+}
diff --git a/packages/tzdata/.mtn2git_empty b/packages/tzdata/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/tzdata/.mtn2git_empty
diff --git a/packages/tzdata/tzdata_2007e.bb b/packages/tzdata/tzdata_2007e.bb
new file mode 100644
index 0000000000..46d941c269
--- /dev/null
+++ b/packages/tzdata/tzdata_2007e.bb
@@ -0,0 +1,158 @@
+DESCRIPTION = "Timezone data"
+SECTION = "base"
+PRIORITY = "optional"
+DEPENDS = "tzcode-native"
+
+PR = "r0"
+
+PROVIDES = "tzdata tzdata-misc tzdata-posix tzdata-right tzdata-africa \
+ tzdata-americas tzdata-antarctica tzdata-arctic tzdata-asia \
+ tzdata-atlantic tzdata-australia tzdata-europe tzdata-pacific"
+RPROVIDES = "tzdata"
+RCONFLICTS= "timezones timezone-africa timezone-america timezone-antarctica \
+ timezone-arctic timezone-asia timezone-atlantic \
+ timezone-australia timezone-europe timezone-indian \
+ timezone-iso3166.tab timezone-pacific timezone-zone.tab"
+
+SRC_URI = "ftp://elsie.nci.nih.gov/pub/tzdata${PV}.tar.gz"
+
+S = "${WORKDIR}"
+
+TZONES= "africa antarctica asia australasia europe northamerica southamerica \
+ factory solar87 solar88 solar89 etcetera backward systemv \
+# pacificnew \
+ "
+
+do_compile () {
+ for zone in ${TZONES}; do \
+ ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo -L /dev/null \
+ -y ${S}/yearistype.sh ${S}/${zone} ; \
+ ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo/posix -L /dev/null \
+ -y ${S}/yearistype.sh ${S}/${zone} ; \
+ ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo/right -L ${S}/leapseconds \
+ -y ${S}/yearistype.sh ${S}/${zone} ; \
+ done
+}
+
+do_install () {
+ install -d ${D}/usr ${D}${datadir}/zoneinfo
+ cp -pPR ${S}/usr ${D}/
+}
+
+# Packages primarily organized by directory with a major city
+# in most time zones in the base package
+
+PACKAGES = "tzdata tzdata-misc tzdata-posix tzdata-right tzdata-africa \
+ tzdata-americas tzdata-antarctica tzdata-arctic tzdata-asia \
+ tzdata-atlantic tzdata-australia tzdata-europe tzdata-pacific"
+
+FILES_tzdata-africa += "${datadir}/zoneinfo/Africa/*"
+RPROVIDES_tzdata-africa = "tzdata-africa"
+
+FILES_tzdata-americas += "${datadir}/zoneinfo/America/* \
+ ${datadir}/zoneinfo/US/* \
+ ${datadir}/zoneinfo/Brazil/* \
+ ${datadir}/zoneinfo/Canada/* \
+ ${datadir}/zoneinfo/Mexico/* \
+ ${datadir}/zoneinfo/Chile/*"
+RPROVIDES_tzdata-americas = "tzdata-americas"
+
+FILES_tzdata-antarctica += "${datadir}/zoneinfo/Antarctica/*"
+RPROVIDES_tzdata-antarctica = "tzdata-antarctica"
+
+FILES_tzdata-arctic += "${datadir}/zoneinfo/Arctic/*"
+RPROVIDES_tzdata-arctic = "tzdata-arctic"
+
+FILES_tzdata-asia += "${datadir}/zoneinfo/Asia/* \
+ ${datadir}/zoneinfo/Indian/* \
+ ${datadir}/zoneinfo/Mideast/*"
+RPROVIDES_tzdata-asia = "tzdata-asia"
+
+FILES_tzdata-atlantic += "${datadir}/zoneinfo/Atlantic/*"
+RPROVIDES_tzdata-atlantic = "tzdata-atlantic"
+
+FILES_tzdata-australia += "${datadir}/zoneinfo/Australia/*"
+RPROVIDES_tzdata-australia = "tzdata-australia"
+
+FILES_tzdata-europe += "${datadir}/zoneinfo/Europe/*"
+RPROVIDES_tzdata-europe = "tzdata-europe"
+
+FILES_tzdata-pacific += "${datadir}/zoneinfo/Pacific/*"
+RPROVIDES_tzdata-pacific = "tzdata-pacific"
+
+FILES_tzdata-posix += "${datadir}/zoneinfo/posix/*"
+RPROVIDES_tzdata-posix = "tzdata-posix"
+
+FILES_tzdata-right += "${datadir}/zoneinfo/right/*"
+RPROVIDES_tzdata-right = "tzdata-right"
+
+
+FILES_tzdata-misc += "${datadir}/zoneinfo/Cuba \
+ ${datadir}/zoneinfo/Egypt \
+ ${datadir}/zoneinfo/Eire \
+ ${datadir}/zoneinfo/Factory \
+ ${datadir}/zoneinfo/GB-Eire \
+ ${datadir}/zoneinfo/Hongkong \
+ ${datadir}/zoneinfo/Iceland \
+ ${datadir}/zoneinfo/Iran \
+ ${datadir}/zoneinfo/Israel \
+ ${datadir}/zoneinfo/Jamaica \
+ ${datadir}/zoneinfo/Japan \
+ ${datadir}/zoneinfo/Kwajalein \
+ ${datadir}/zoneinfo/Libya \
+ ${datadir}/zoneinfo/Navajo \
+ ${datadir}/zoneinfo/Poland \
+ ${datadir}/zoneinfo/Portugal \
+ ${datadir}/zoneinfo/Singapore \
+ ${datadir}/zoneinfo/Turkey"
+RPROVIDES_tzdata-misc = "tzdata-misc"
+
+
+FILES_${PN} += "${datadir}/zoneinfo/Pacific/Honolulu \
+ ${datadir}/zoneinfo/America/Anchorage \
+ ${datadir}/zoneinfo/America/Los_Angeles \
+ ${datadir}/zoneinfo/America/Denver \
+ ${datadir}/zoneinfo/America/Chicago \
+ ${datadir}/zoneinfo/America/New_York \
+ ${datadir}/zoneinfo/America/Caracas \
+ ${datadir}/zoneinfo/America/Sao_Paulo \
+ ${datadir}/zoneinfo/Europe/London \
+ ${datadir}/zoneinfo/Europe/Paris \
+ ${datadir}/zoneinfo/Africa/Cairo \
+ ${datadir}/zoneinfo/Europe/Moscow \
+ ${datadir}/zoneinfo/Asia/Dubai \
+ ${datadir}/zoneinfo/Asia/Karachi \
+ ${datadir}/zoneinfo/Asia/Dhaka \
+ ${datadir}/zoneinfo/Asia/Bankok \
+ ${datadir}/zoneinfo/Asia/Hong_Kong \
+ ${datadir}/zoneinfo/Asia/Tokyo \
+ ${datadir}/zoneinfo/Australia/Sydney \
+ ${datadir}/zoneinfo/Pacific/Noumea \
+ ${datadir}/zoneinfo/CET \
+ ${datadir}/zoneinfo/CST6CDT \
+ ${datadir}/zoneinfo/EET \
+ ${datadir}/zoneinfo/EST \
+ ${datadir}/zoneinfo/EST5EDT \
+ ${datadir}/zoneinfo/GB \
+ ${datadir}/zoneinfo/GMT \
+ ${datadir}/zoneinfo/GMT+0 \
+ ${datadir}/zoneinfo/GMT-0 \
+ ${datadir}/zoneinfo/GMT0 \
+ ${datadir}/zoneinfo/Greenwich \
+ ${datadir}/zoneinfo/HST \
+ ${datadir}/zoneinfo/MET \
+ ${datadir}/zoneinfo/MST \
+ ${datadir}/zoneinfo/MST7MDT \
+ ${datadir}/zoneinfo/NZ \
+ ${datadir}/zoneinfo/NZ-CHAT \
+ ${datadir}/zoneinfo/PRC \
+ ${datadir}/zoneinfo/PST8PDT \
+ ${datadir}/zoneinfo/ROC \
+ ${datadir}/zoneinfo/ROK \
+ ${datadir}/zoneinfo/UCT \
+ ${datadir}/zoneinfo/UTC \
+ ${datadir}/zoneinfo/Universal \
+ ${datadir}/zoneinfo/W-SU \
+ ${datadir}/zoneinfo/WET \
+ ${datadir}/zoneinfo/Zulu \
+ ${datadir}/zoneinfo/Etc/*"
diff --git a/packages/uboot-utils/fw_env.h.patch b/packages/uboot-utils/fw_env.h.patch
deleted file mode 100644
index 2ef2bb83c4..0000000000
--- a/packages/uboot-utils/fw_env.h.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- u-boot-1.1.2.orig/tools/env/fw_env.h 2003-06-27 14:32:49.000000000 -0700
-+++ u-boot-1.1.2/tools/env/fw_env.h 2006-11-16 10:51:01.000000000 -0800
-@@ -27,14 +27,15 @@
- * See included "fw_env.config" sample file (TRAB board)
- * for notes on configuration.
- */
--#define CONFIG_FILE "/etc/fw_env.config"
-
--#define HAVE_REDUND /* For systems with 2 env sectors */
--#define DEVICE1_NAME "/dev/mtd1"
-+/* #define CONFIG_FILE "/etc/fw_env.config" */
-+
-+#undef HAVE_REDUND /* For systems with 2 env sectors */
-+#define DEVICE1_NAME "/dev/mtd/3"
- #define DEVICE2_NAME "/dev/mtd2"
--#define DEVICE1_OFFSET 0x0000
--#define ENV1_SIZE 0x4000
--#define DEVICE1_ESIZE 0x4000
-+#define DEVICE1_OFFSET 0x30000
-+#define ENV1_SIZE 0x10000
-+#define DEVICE1_ESIZE 0x10000
- #define DEVICE2_OFFSET 0x0000
- #define ENV2_SIZE 0x4000
- #define DEVICE2_ESIZE 0x4000
diff --git a/packages/uboot-utils/uboot-utils_1.1.2.bb b/packages/uboot-utils/uboot-utils_1.1.2.bb
deleted file mode 100644
index 638f1cb713..0000000000
--- a/packages/uboot-utils/uboot-utils_1.1.2.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-DESCRIPTION = "U-boot bootloader OS env. access tools for PPC"
-PRIORITY = "optional"
-LICENSE = "GPL"
-DEPENDS = "mtd-utils"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/u-boot/u-boot-${PV}.tar.bz2 \
- file://fw_env.h.patch;patch=1 \
- file://fw_env.c.patch;patch=1 \
- file://tools-Makefile.patch;patch=1 \
- file://env-Makefile.patch;patch=1 "
-
-S = "${WORKDIR}/u-boot-${PV}"
-EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
-TARGET_LDFLAGS = ""
-
-UBOOT_MACHINE ?= "${MACHINE}_config"
-
-inherit base
-
-do_configure() {
- :
-}
-
-do_compile () {
- oe_runmake Sandpoint8240_config
- oe_runmake tools
-}
-
-# install mkimage for the kernel makefile
-do_stage() {
- install -m 755 ${S}/tools/mkimage ${STAGING_BINDIR_NATIVE}
-}
-
-do_install () {
- install -d ${D}/sbin
- install -m 755 ${S}/tools/env/fw_printenv ${D}/sbin/fw_printenv
- install -m 755 ${S}/tools/env/fw_printenv ${D}/sbin/fw_setenv
-}
diff --git a/packages/uboot/files/fix-arm920t-eabi.patch b/packages/uboot/files/fix-arm920t-eabi.patch
new file mode 100644
index 0000000000..9896388c8f
--- /dev/null
+++ b/packages/uboot/files/fix-arm920t-eabi.patch
@@ -0,0 +1,9 @@
+--- /tmp/config.mk 2007-02-14 17:23:15.000000000 +0100
++++ git/cpu/arm920t/config.mk 2007-02-14 17:23:38.475251000 +0100
+@@ -30,5 +30,5 @@
+ # Supply options according to compiler version
+ #
+ # =========================================================================
+-PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
++PLATFORM_CPPFLAGS +=$(call cc-option)
+ PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
diff --git a/packages/uboot/files/gta01_nand.h b/packages/uboot/files/gta01_nand.h
new file mode 100644
index 0000000000..04cb743158
--- /dev/null
+++ b/packages/uboot/files/gta01_nand.h
@@ -0,0 +1,233 @@
+/*
+ * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
+ *
+ * Configuation settings for the FIC GTA01 Linux GSM phone
+ *
+ * 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
+
+/* we want to start u-boot directly from within NAND flash */
+#define CONFIG_S3C2410_NAND_BOOT 1
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
+#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
+#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
+
+/* input clock of PLL */
+#define CONFIG_SYS_CLK_FREQ 12000000/* the GTA01 has 12MHz input clock */
+
+
+#define USE_920T_MMU 1
+#define CONFIG_USE_IRQ 1
+
+/*
+ * Size of malloc() pool
+ */
+#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
+#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
+
+/*
+ * Hardware drivers
+ */
+
+/*
+ * select serial console configuration
+ */
+#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on GTA01 */
+//#define CONFIG_HWFLOW 1
+
+/************************************************************
+ * RTC
+ ************************************************************/
+#define CONFIG_RTC_S3C24X0 1
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_BAUDRATE 115200
+
+/***********************************************************
+ * Command definition
+ ***********************************************************/
+#define CONFIG_COMMANDS (\
+ CFG_CMD_BDI | \
+ CFG_CMD_LOADS | \
+ CFG_CMD_LAODB | \
+ CFG_CMD_IMI | \
+ CFG_CMD_CACHE | \
+ CFG_CMD_MEMORY | \
+ CFG_CMD_ENV | \
+ /* CFG_CMD_IRQ | */ \
+ CFG_CMD_BOOTD | \
+ CFG_CMD_CONSOLE | \
+ CFG_CMD_ASKENV | \
+ CFG_CMD_RUN | \
+ CFG_CMD_ECHO | \
+ CFG_CMD_I2C | \
+ CFG_CMD_REGINFO | \
+ CFG_CMD_IMMAP | \
+ CFG_CMD_DATE | \
+ CFG_CMD_AUTOSCRIPT | \
+ CFG_CMD_BSP | \
+ CFG_CMD_ELF | \
+ CFG_CMD_MISC | \
+ CFG_CMD_USB | \
+ CFG_CMD_JFFS2 | \
+ CFG_CMD_DIAG | \
+ /* CFG_CMD_HWFLOW | */ \
+ CFG_CMD_SAVES | \
+ CFG_CMD_NAND | \
+ CFG_CMD_PORTIO | \
+ CFG_CMD_MMC | \
+ CFG_CMD_FAT | \
+ CFG_CMD_EXT2 | \
+ 0)
+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+#include <cmd_confdefs.h>
+
+#define CONFIG_BOOTDELAY 3
+#define CONFIG_BOOTARGS "rootfstype=jffs2 root=/dev/mtdblock4 console=ttySAC0,115200 console=tty0 loglevel=8"
+/*#define CONFIG_BOOTFILE "elinos-lart" */
+#define CONFIG_BOOTCOMMAND "nand load 0x32000000 0x34000 0x200000; bootm 0x32000000"
+
+#define CONFIG_DOS_PARTITION 1
+
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
+/* what's this ? it's not used anywhere */
+#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
+#endif
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CFG_LONGHELP /* undef to save memory */
+#define CFG_PROMPT "GTA01 # " /* Monitor Command Prompt */
+#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
+#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 0x30000000 /* memtest works on */
+#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
+
+#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
+
+#define CFG_LOAD_ADDR 0x33000000 /* default load address */
+
+/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
+/* it to wrap 100 times (total 1562500) to get 1 sec. */
+#define CFG_HZ 1562500
+
+/* valid baudrates */
+#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
+
+/*-----------------------------------------------------------------------
+ * Stack sizes
+ *
+ * The stack sizes are set up in start.S using the settings below
+ */
+#define CONFIG_STACKSIZE (128*1024) /* regular stack */
+#ifdef CONFIG_USE_IRQ
+#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
+#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
+#endif
+
+#define CONFIG_USB_OHCI 1
+
+/*-----------------------------------------------------------------------
+ * Physical Memory Map
+ */
+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
+#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
+#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
+#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
+
+/*-----------------------------------------------------------------------
+ * FLASH and environment organization
+ */
+
+#if 1
+#define CFG_NO_FLASH 1
+#else
+#define CFG_MAX_FLASH_SECT 1
+#define CFG_MAX_FLASH_BANKS 1
+#endif
+
+#define CFG_ENV_IS_IN_NAND 1
+#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
+#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
+
+#define NAND_MAX_CHIPS 1
+#define CFG_NAND_BASE 0x4e000000
+#define CFG_MAX_NAND_DEVICE 1
+
+#define CONFIG_MMC 1
+#define CFG_MMC_BASE 0xff000000
+
+/* EXT2 driver */
+#define CONFIG_EXT2 1
+
+/* FAT driver in u-boot is broken currently */
+#define CONFIG_FAT 1
+#define CONFIG_SUPPORT_VFAT 1
+
+/* JFFS2 driver */
+#define CONFIG_JFFS2_NAND 1
+#define CONFIG_JFFS2_NAND_DEV 0
+#define CONFIG_JFFS2_NAND_OFF 0x634000
+#define CONFIG_JFFS2_NAND_SIZE 0x39cc000
+
+/* ATAG configuration */
+#define CONFIG_INITRD_TAG 1
+#define CONFIG_SETUP_MEMORY_TAGS 1
+#define CONFIG_CMDLINE_TAG 1
+#if 0
+#define CONFIG_SERIAL_TAG 1
+#define CONFIG_REVISION_TAG 1
+#endif
+
+#define CONFIG_DRIVER_S3C24X0_I2C 1
+#define CONFIG_HARD_I2C 1
+#define CFG_I2C_SPEED 400000 /* 400kHz according to PCF50707 data sheet */
+#define CFG_I2C_SLAVE 0x7f
+
+
+#if 0
+#define CONFIG_VIDEO
+#define CONFIG_VIDEO_S3C2410
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+
+#define VIDEO_KBD_INIT_FCT 0
+#define VIDEO_TSTC_FCT serial_tstc
+#define VIDEO_GETC_FCT serial_getc
+
+#define LCD_VIDEO_ADDR 0x33d00000
+#endif
+
+#endif /* __CONFIG_H */
diff --git a/packages/uboot/files/qt2410.h b/packages/uboot/files/qt2410.h
new file mode 100644
index 0000000000..627f365f86
--- /dev/null
+++ b/packages/uboot/files/qt2410.h
@@ -0,0 +1,256 @@
+/*
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger@sysgo.de>
+ * Gary Jennejohn <gj@denx.de>
+ * David Mueller <d.mueller@elsoft.ch>
+ *
+ * Configuation settings for the SAMSUNG SMDK2410 board.
+ *
+ * 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
+/* If we want to start u-boot from usb bootloader in NOR flash */
+#define CONFIG_SKIP_RELOCATE_UBOOT 1
+#define CONFIG_SKIP_LOWLEVEL_INIT 1
+#else
+/* If we want to start u-boot directly from within NAND flash */
+#define CONFIG_S3C2410_NAND_BOOT 1
+#endif
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
+#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
+#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
+
+/* input clock of PLL */
+#define CONFIG_SYS_CLK_FREQ 12000000/* the SMDK2410 has 12MHz input clock */
+
+
+#define USE_920T_MMU 1
+#define CONFIG_USE_IRQ 1
+//#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
+
+/*
+ * Size of malloc() pool
+ */
+#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
+#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
+
+/*
+ * Hardware drivers
+ */
+#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
+#define CS8900_BASE 0x19000300
+#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */
+
+/*
+ * select serial console configuration
+ */
+#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK2410 */
+#define CONFIG_HWFLOW 1
+
+/************************************************************
+ * RTC
+ ************************************************************/
+#define CONFIG_RTC_S3C24X0 1
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_BAUDRATE 115200
+
+/***********************************************************
+ * Command definition
+ ***********************************************************/
+#define CONFIG_COMMANDS \
+ (CONFIG_CMD_DFL | \
+ CFG_CMD_BSP | \
+ CFG_CMD_CACHE | \
+ CFG_CMD_DATE | \
+ CFG_CMD_DHCP | \
+ CFG_CMD_DIAG | \
+ CFG_CMD_ELF | \
+ CFG_CMD_EXT2 | \
+ CFG_CMD_FAT | \
+ CFG_CMD_HWFLOW | \
+ /* CFG_CMD_IDE | */ \
+ /* CFG_CMD_IRQ | */ \
+ CFG_CMD_JFFS2 | \
+ CFG_CMD_MMC | \
+ CFG_CMD_NAND | \
+ CFG_CMD_PING | \
+ CFG_CMD_PORTIO | \
+ CFG_CMD_REGINFO | \
+ CFG_CMD_SAVES | \
+ CFG_CMD_USB)
+
+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+#include <cmd_confdefs.h>
+
+#define CONFIG_BOOTDELAY 3
+#define CONFIG_BOOTARGS "root=/dev/sda1 console=ttySAC0,115200 loglevel=8 rootdelay=10"
+/*#define CONFIG_ETHADDR 08:00:3e:26:0a:5b */
+#define CONFIG_NETMASK 255.255.255.0
+#define CONFIG_IPADDR 10.0.0.110
+#define CONFIG_SERVERIP 10.0.0.1
+/*#define CONFIG_BOOTFILE "elinos-lart" */
+#define CONFIG_BOOTCOMMAND "mmcinit; ext2load mmc 0 0x32000000 uImage; bootm 0x32000000"
+
+#define CONFIG_DOS_PARTITION 1
+
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
+/* what's this ? it's not used anywhere */
+#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
+#endif
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CFG_LONGHELP /* undef to save memory */
+#define CFG_PROMPT "QT2410 # " /* Monitor Command Prompt */
+#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
+#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 0x30000000 /* memtest works on */
+#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
+
+#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
+
+#define CFG_LOAD_ADDR 0x33000000 /* default load address */
+
+/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
+/* it to wrap 100 times (total 1562500) to get 1 sec. */
+#define CFG_HZ 1562500
+
+/* valid baudrates */
+#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
+
+/*-----------------------------------------------------------------------
+ * Stack sizes
+ *
+ * The stack sizes are set up in start.S using the settings below
+ */
+#define CONFIG_STACKSIZE (128*1024) /* regular stack */
+#ifdef CONFIG_USE_IRQ
+#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
+#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
+#endif
+
+/* IDE/ATA config */
+
+#if 0
+#define CFG_IDE_MAXBUS 1
+#define CFG_IDE_MAXDEVICE 2
+#define CFG_IDE_PREINIT 0
+
+#define CFG_ATA_BASE_ADDR
+#endif
+
+#define CONFIG_USB_OHCI 1
+
+/*-----------------------------------------------------------------------
+ * Physical Memory Map
+ */
+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
+#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
+#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
+#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
+
+#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
+
+#define CFG_FLASH_BASE PHYS_FLASH_1
+
+/*-----------------------------------------------------------------------
+ * FLASH and environment organization
+ */
+
+#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */
+#if 0
+#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */
+#endif
+
+#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
+#ifdef CONFIG_AMD_LV800
+#define PHYS_FLASH_SIZE 0x00100000 /* 1MB */
+#define CFG_MAX_FLASH_SECT (19) /* max number of sectors on one chip */
+#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
+#endif
+#ifdef CONFIG_AMD_LV400
+#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */
+#define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */
+#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x070000) /* addr of environment */
+#endif
+
+/* timeout values are in ticks */
+#define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */
+#define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */
+
+#define CFG_ENV_IS_IN_NAND 1
+#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
+#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
+
+#define NAND_MAX_CHIPS 1
+#define CFG_NAND_BASE 0x4e000000
+#define CFG_MAX_NAND_DEVICE 1
+
+#define CONFIG_MMC 1
+#define CFG_MMC_BASE 0xff000000
+
+#define CONFIG_EXT2 1
+
+/* FAT driver in u-boot is broken currently */
+#define CONFIG_FAT 1
+#define CONFIG_SUPPORT_VFAT
+
+/* ATAG configuration */
+#define CONFIG_INITRD_TAG 1
+#define CONFIG_SETUP_MEMORY_TAGS 1
+#define CONFIG_CMDLINE_TAG 1
+#if 0
+#define CONFIG_SERIAL_TAG 1
+#define CONFIG_REVISION_TAG 1
+#endif
+
+
+#if 0
+#define CONFIG_VIDEO
+#define CONFIG_VIDEO_S3C2410
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+
+#define VIDEO_KBD_INIT_FCT 0
+#define VIDEO_TSTC_FCT serial_tstc
+#define VIDEO_GETC_FCT serial_getc
+
+#define LCD_VIDEO_ADDR 0x33d00000
+#endif
+
+#endif /* __CONFIG_H */
diff --git a/packages/uboot/files/qt2410_nand.h b/packages/uboot/files/qt2410_nand.h
new file mode 100644
index 0000000000..627f365f86
--- /dev/null
+++ b/packages/uboot/files/qt2410_nand.h
@@ -0,0 +1,256 @@
+/*
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger@sysgo.de>
+ * Gary Jennejohn <gj@denx.de>
+ * David Mueller <d.mueller@elsoft.ch>
+ *
+ * Configuation settings for the SAMSUNG SMDK2410 board.
+ *
+ * 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
+/* If we want to start u-boot from usb bootloader in NOR flash */
+#define CONFIG_SKIP_RELOCATE_UBOOT 1
+#define CONFIG_SKIP_LOWLEVEL_INIT 1
+#else
+/* If we want to start u-boot directly from within NAND flash */
+#define CONFIG_S3C2410_NAND_BOOT 1
+#endif
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
+#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
+#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
+
+/* input clock of PLL */
+#define CONFIG_SYS_CLK_FREQ 12000000/* the SMDK2410 has 12MHz input clock */
+
+
+#define USE_920T_MMU 1
+#define CONFIG_USE_IRQ 1
+//#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
+
+/*
+ * Size of malloc() pool
+ */
+#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
+#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
+
+/*
+ * Hardware drivers
+ */
+#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
+#define CS8900_BASE 0x19000300
+#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */
+
+/*
+ * select serial console configuration
+ */
+#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK2410 */
+#define CONFIG_HWFLOW 1
+
+/************************************************************
+ * RTC
+ ************************************************************/
+#define CONFIG_RTC_S3C24X0 1
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_BAUDRATE 115200
+
+/***********************************************************
+ * Command definition
+ ***********************************************************/
+#define CONFIG_COMMANDS \
+ (CONFIG_CMD_DFL | \
+ CFG_CMD_BSP | \
+ CFG_CMD_CACHE | \
+ CFG_CMD_DATE | \
+ CFG_CMD_DHCP | \
+ CFG_CMD_DIAG | \
+ CFG_CMD_ELF | \
+ CFG_CMD_EXT2 | \
+ CFG_CMD_FAT | \
+ CFG_CMD_HWFLOW | \
+ /* CFG_CMD_IDE | */ \
+ /* CFG_CMD_IRQ | */ \
+ CFG_CMD_JFFS2 | \
+ CFG_CMD_MMC | \
+ CFG_CMD_NAND | \
+ CFG_CMD_PING | \
+ CFG_CMD_PORTIO | \
+ CFG_CMD_REGINFO | \
+ CFG_CMD_SAVES | \
+ CFG_CMD_USB)
+
+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+#include <cmd_confdefs.h>
+
+#define CONFIG_BOOTDELAY 3
+#define CONFIG_BOOTARGS "root=/dev/sda1 console=ttySAC0,115200 loglevel=8 rootdelay=10"
+/*#define CONFIG_ETHADDR 08:00:3e:26:0a:5b */
+#define CONFIG_NETMASK 255.255.255.0
+#define CONFIG_IPADDR 10.0.0.110
+#define CONFIG_SERVERIP 10.0.0.1
+/*#define CONFIG_BOOTFILE "elinos-lart" */
+#define CONFIG_BOOTCOMMAND "mmcinit; ext2load mmc 0 0x32000000 uImage; bootm 0x32000000"
+
+#define CONFIG_DOS_PARTITION 1
+
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
+/* what's this ? it's not used anywhere */
+#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
+#endif
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CFG_LONGHELP /* undef to save memory */
+#define CFG_PROMPT "QT2410 # " /* Monitor Command Prompt */
+#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
+#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 0x30000000 /* memtest works on */
+#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
+
+#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
+
+#define CFG_LOAD_ADDR 0x33000000 /* default load address */
+
+/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
+/* it to wrap 100 times (total 1562500) to get 1 sec. */
+#define CFG_HZ 1562500
+
+/* valid baudrates */
+#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
+
+/*-----------------------------------------------------------------------
+ * Stack sizes
+ *
+ * The stack sizes are set up in start.S using the settings below
+ */
+#define CONFIG_STACKSIZE (128*1024) /* regular stack */
+#ifdef CONFIG_USE_IRQ
+#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
+#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
+#endif
+
+/* IDE/ATA config */
+
+#if 0
+#define CFG_IDE_MAXBUS 1
+#define CFG_IDE_MAXDEVICE 2
+#define CFG_IDE_PREINIT 0
+
+#define CFG_ATA_BASE_ADDR
+#endif
+
+#define CONFIG_USB_OHCI 1
+
+/*-----------------------------------------------------------------------
+ * Physical Memory Map
+ */
+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
+#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
+#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
+#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
+
+#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
+
+#define CFG_FLASH_BASE PHYS_FLASH_1
+
+/*-----------------------------------------------------------------------
+ * FLASH and environment organization
+ */
+
+#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */
+#if 0
+#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */
+#endif
+
+#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
+#ifdef CONFIG_AMD_LV800
+#define PHYS_FLASH_SIZE 0x00100000 /* 1MB */
+#define CFG_MAX_FLASH_SECT (19) /* max number of sectors on one chip */
+#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
+#endif
+#ifdef CONFIG_AMD_LV400
+#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */
+#define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */
+#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x070000) /* addr of environment */
+#endif
+
+/* timeout values are in ticks */
+#define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */
+#define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */
+
+#define CFG_ENV_IS_IN_NAND 1
+#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
+#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
+
+#define NAND_MAX_CHIPS 1
+#define CFG_NAND_BASE 0x4e000000
+#define CFG_MAX_NAND_DEVICE 1
+
+#define CONFIG_MMC 1
+#define CFG_MMC_BASE 0xff000000
+
+#define CONFIG_EXT2 1
+
+/* FAT driver in u-boot is broken currently */
+#define CONFIG_FAT 1
+#define CONFIG_SUPPORT_VFAT
+
+/* ATAG configuration */
+#define CONFIG_INITRD_TAG 1
+#define CONFIG_SETUP_MEMORY_TAGS 1
+#define CONFIG_CMDLINE_TAG 1
+#if 0
+#define CONFIG_SERIAL_TAG 1
+#define CONFIG_REVISION_TAG 1
+#endif
+
+
+#if 0
+#define CONFIG_VIDEO
+#define CONFIG_VIDEO_S3C2410
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+
+#define VIDEO_KBD_INIT_FCT 0
+#define VIDEO_TSTC_FCT serial_tstc
+#define VIDEO_GETC_FCT serial_getc
+
+#define LCD_VIDEO_ADDR 0x33d00000
+#endif
+
+#endif /* __CONFIG_H */
diff --git a/packages/uboot/files/qt2410_ram.h b/packages/uboot/files/qt2410_ram.h
new file mode 100644
index 0000000000..62cc88eaf0
--- /dev/null
+++ b/packages/uboot/files/qt2410_ram.h
@@ -0,0 +1,256 @@
+/*
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger@sysgo.de>
+ * Gary Jennejohn <gj@denx.de>
+ * David Mueller <d.mueller@elsoft.ch>
+ *
+ * Configuation settings for the SAMSUNG SMDK2410 board.
+ *
+ * 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 1
+/* If we want to start u-boot from usb bootloader in NOR flash */
+#define CONFIG_SKIP_RELOCATE_UBOOT 1
+#define CONFIG_SKIP_LOWLEVEL_INIT 1
+#else
+/* If we want to start u-boot directly from within NAND flash */
+#define CONFIG_S3C2410_NAND_BOOT 1
+#endif
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
+#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
+#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
+
+/* input clock of PLL */
+#define CONFIG_SYS_CLK_FREQ 12000000/* the SMDK2410 has 12MHz input clock */
+
+
+#define USE_920T_MMU 1
+#define CONFIG_USE_IRQ 1
+//#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
+
+/*
+ * Size of malloc() pool
+ */
+#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
+#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
+
+/*
+ * Hardware drivers
+ */
+#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
+#define CS8900_BASE 0x19000300
+#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */
+
+/*
+ * select serial console configuration
+ */
+#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK2410 */
+#define CONFIG_HWFLOW 1
+
+/************************************************************
+ * RTC
+ ************************************************************/
+#define CONFIG_RTC_S3C24X0 1
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_BAUDRATE 115200
+
+/***********************************************************
+ * Command definition
+ ***********************************************************/
+#define CONFIG_COMMANDS \
+ (CONFIG_CMD_DFL | \
+ CFG_CMD_BSP | \
+ CFG_CMD_CACHE | \
+ CFG_CMD_DATE | \
+ CFG_CMD_DHCP | \
+ CFG_CMD_DIAG | \
+ CFG_CMD_ELF | \
+ CFG_CMD_EXT2 | \
+ CFG_CMD_FAT | \
+ CFG_CMD_HWFLOW | \
+ /* CFG_CMD_IDE | */ \
+ /* CFG_CMD_IRQ | */ \
+ CFG_CMD_JFFS2 | \
+ CFG_CMD_MMC | \
+ CFG_CMD_NAND | \
+ CFG_CMD_PING | \
+ CFG_CMD_PORTIO | \
+ CFG_CMD_REGINFO | \
+ CFG_CMD_SAVES | \
+ CFG_CMD_USB)
+
+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+#include <cmd_confdefs.h>
+
+#define CONFIG_BOOTDELAY 3
+#define CONFIG_BOOTARGS "root=/dev/sda1 console=ttySAC0,115200 loglevel=8 rootdelay=10"
+/*#define CONFIG_ETHADDR 08:00:3e:26:0a:5b */
+#define CONFIG_NETMASK 255.255.255.0
+#define CONFIG_IPADDR 10.0.0.110
+#define CONFIG_SERVERIP 10.0.0.1
+/*#define CONFIG_BOOTFILE "elinos-lart" */
+#define CONFIG_BOOTCOMMAND "mmcinit; ext2load mmc 0 0x32000000 uImage; bootm 0x32000000"
+
+#define CONFIG_DOS_PARTITION 1
+
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
+/* what's this ? it's not used anywhere */
+#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
+#endif
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CFG_LONGHELP /* undef to save memory */
+#define CFG_PROMPT "QT2410 # " /* Monitor Command Prompt */
+#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
+#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 0x30000000 /* memtest works on */
+#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
+
+#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
+
+#define CFG_LOAD_ADDR 0x33000000 /* default load address */
+
+/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
+/* it to wrap 100 times (total 1562500) to get 1 sec. */
+#define CFG_HZ 1562500
+
+/* valid baudrates */
+#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
+
+/*-----------------------------------------------------------------------
+ * Stack sizes
+ *
+ * The stack sizes are set up in start.S using the settings below
+ */
+#define CONFIG_STACKSIZE (128*1024) /* regular stack */
+#ifdef CONFIG_USE_IRQ
+#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
+#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
+#endif
+
+/* IDE/ATA config */
+
+#if 0
+#define CFG_IDE_MAXBUS 1
+#define CFG_IDE_MAXDEVICE 2
+#define CFG_IDE_PREINIT 0
+
+#define CFG_ATA_BASE_ADDR
+#endif
+
+#define CONFIG_USB_OHCI 1
+
+/*-----------------------------------------------------------------------
+ * Physical Memory Map
+ */
+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
+#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
+#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
+#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
+
+#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
+
+#define CFG_FLASH_BASE PHYS_FLASH_1
+
+/*-----------------------------------------------------------------------
+ * FLASH and environment organization
+ */
+
+#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */
+#if 0
+#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */
+#endif
+
+#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
+#ifdef CONFIG_AMD_LV800
+#define PHYS_FLASH_SIZE 0x00100000 /* 1MB */
+#define CFG_MAX_FLASH_SECT (19) /* max number of sectors on one chip */
+#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
+#endif
+#ifdef CONFIG_AMD_LV400
+#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */
+#define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */
+#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x070000) /* addr of environment */
+#endif
+
+/* timeout values are in ticks */
+#define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */
+#define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */
+
+#define CFG_ENV_IS_IN_NAND 1
+#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
+#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
+
+#define NAND_MAX_CHIPS 1
+#define CFG_NAND_BASE 0x4e000000
+#define CFG_MAX_NAND_DEVICE 1
+
+#define CONFIG_MMC 1
+#define CFG_MMC_BASE 0xff000000
+
+#define CONFIG_EXT2 1
+
+/* FAT driver in u-boot is broken currently */
+#define CONFIG_FAT 1
+#define CONFIG_SUPPORT_VFAT
+
+/* ATAG configuration */
+#define CONFIG_INITRD_TAG 1
+#define CONFIG_SETUP_MEMORY_TAGS 1
+#define CONFIG_CMDLINE_TAG 1
+#if 0
+#define CONFIG_SERIAL_TAG 1
+#define CONFIG_REVISION_TAG 1
+#endif
+
+
+#if 0
+#define CONFIG_VIDEO
+#define CONFIG_VIDEO_S3C2410
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+
+#define VIDEO_KBD_INIT_FCT 0
+#define VIDEO_TSTC_FCT serial_tstc
+#define VIDEO_GETC_FCT serial_getc
+
+#define LCD_VIDEO_ADDR 0x33d00000
+#endif
+
+#endif /* __CONFIG_H */
diff --git a/packages/uboot/files/u-boot-20060807-qt2410.patch b/packages/uboot/files/u-boot-20060807-qt2410.patch
new file mode 100644
index 0000000000..ed9f987c81
--- /dev/null
+++ b/packages/uboot/files/u-boot-20060807-qt2410.patch
@@ -0,0 +1,8435 @@
+diff --git a/Makefile b/Makefile
+index 128ae59..5d7b5bb 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1638,6 +1638,9 @@ omap730p2_cs3boot_config : unconfig
+ sbc2410x_config: unconfig
+ @./mkconfig $(@:_config=) arm arm920t sbc2410x NULL s3c24x0
+
++qt2410_config : unconfig
++ @./mkconfig $(@:_config=) arm arm920t qt2410 NULL s3c24x0
++
+ scb9328_config : unconfig
+ @./mkconfig $(@:_config=) arm arm920t scb9328 NULL imx
+
+diff --git a/board/qt2410/Makefile b/board/qt2410/Makefile
+new file mode 100644
+index 0000000..407b256
+--- /dev/null
++++ b/board/qt2410/Makefile
+@@ -0,0 +1,47 @@
++#
++# (C) Copyright 2000, 2001, 2002
++# 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 = lib$(BOARD).a
++
++OBJS := qt2410.o flash.o
++SOBJS := lowlevel_init.o
++
++$(LIB): $(OBJS) $(SOBJS)
++ $(AR) crv $@ $(OBJS) $(SOBJS)
++
++clean:
++ rm -f $(SOBJS) $(OBJS)
++
++distclean: clean
++ rm -f $(LIB) core *.bak .depend
++
++#########################################################################
++
++.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
++ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
++
++-include .depend
++
++#########################################################################
+diff --git a/board/qt2410/config.mk b/board/qt2410/config.mk
+new file mode 100644
+index 0000000..1af85da
+--- /dev/null
++++ b/board/qt2410/config.mk
+@@ -0,0 +1,25 @@
++#
++# (C) Copyright 2002
++# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
++# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
++#
++# SAMSUNG SMDK2410 board with S3C2410X (ARM920T) cpu
++#
++# see http://www.samsung.com/ for more information on SAMSUNG
++#
++
++#
++# SMDK2410 has 1 bank of 64 MB DRAM
++#
++# 3000'0000 to 3400'0000
++#
++# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
++# optionally with a ramdisk at 3080'0000
++#
++# we load ourself to 33F8'0000
++#
++# download area is 3300'0000
++#
++
++
++TEXT_BASE = 0x33F80000
+diff --git a/board/qt2410/flash.c b/board/qt2410/flash.c
+new file mode 100644
+index 0000000..993946b
+--- /dev/null
++++ b/board/qt2410/flash.c
+@@ -0,0 +1,433 @@
++/*
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Alex Zuepke <azu@sysgo.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>
++
++ulong myflush (void);
++
++
++#define FLASH_BANK_SIZE PHYS_FLASH_SIZE
++#define MAIN_SECT_SIZE 0x10000 /* 64 KB */
++
++flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
++
++
++#define CMD_READ_ARRAY 0x000000F0
++#define CMD_UNLOCK1 0x000000AA
++#define CMD_UNLOCK2 0x00000055
++#define CMD_ERASE_SETUP 0x00000080
++#define CMD_ERASE_CONFIRM 0x00000030
++#define CMD_PROGRAM 0x000000A0
++#define CMD_UNLOCK_BYPASS 0x00000020
++
++#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00000555 << 1)))
++#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x000002AA << 1)))
++
++#define BIT_ERASE_DONE 0x00000080
++#define BIT_RDY_MASK 0x00000080
++#define BIT_PROGRAM_ERROR 0x00000020
++#define BIT_TIMEOUT 0x80000000 /* our flag */
++
++#define READY 1
++#define ERR 2
++#define TMO 4
++
++/*-----------------------------------------------------------------------
++ */
++
++ulong flash_init (void)
++{
++ int i, j;
++ ulong size = 0;
++
++ for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
++ ulong flashbase = 0;
++
++ flash_info[i].flash_id =
++#if defined(CONFIG_AMD_LV400)
++ (AMD_MANUFACT & FLASH_VENDMASK) |
++ (AMD_ID_LV400B & FLASH_TYPEMASK);
++#elif defined(CONFIG_AMD_LV800)
++ (AMD_MANUFACT & FLASH_VENDMASK) |
++ (AMD_ID_LV800B & FLASH_TYPEMASK);
++#else
++#error "Unknown flash configured"
++#endif
++ flash_info[i].size = FLASH_BANK_SIZE;
++ flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
++ memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
++ if (i == 0)
++ flashbase = PHYS_FLASH_1;
++ else
++ panic ("configured too many flash banks!\n");
++ for (j = 0; j < flash_info[i].sector_count; j++) {
++ if (j <= 3) {
++ /* 1st one is 16 KB */
++ if (j == 0) {
++ flash_info[i].start[j] =
++ flashbase + 0;
++ }
++
++ /* 2nd and 3rd are both 8 KB */
++ if ((j == 1) || (j == 2)) {
++ flash_info[i].start[j] =
++ flashbase + 0x4000 + (j -
++ 1) *
++ 0x2000;
++ }
++
++ /* 4th 32 KB */
++ if (j == 3) {
++ flash_info[i].start[j] =
++ flashbase + 0x8000;
++ }
++ } else {
++ flash_info[i].start[j] =
++ flashbase + (j - 3) * MAIN_SECT_SIZE;
++ }
++ }
++ size += flash_info[i].size;
++ }
++
++ flash_protect (FLAG_PROTECT_SET,
++ CFG_FLASH_BASE,
++ CFG_FLASH_BASE + monitor_flash_len - 1,
++ &flash_info[0]);
++
++ flash_protect (FLAG_PROTECT_SET,
++ CFG_ENV_ADDR,
++ CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
++
++ return size;
++}
++
++/*-----------------------------------------------------------------------
++ */
++void flash_print_info (flash_info_t * info)
++{
++ int i;
++
++ switch (info->flash_id & FLASH_VENDMASK) {
++ case (AMD_MANUFACT & FLASH_VENDMASK):
++ printf ("AMD: ");
++ break;
++ default:
++ printf ("Unknown Vendor ");
++ break;
++ }
++
++ switch (info->flash_id & FLASH_TYPEMASK) {
++ case (AMD_ID_LV400B & FLASH_TYPEMASK):
++ printf ("1x Amd29LV400BB (4Mbit)\n");
++ break;
++ case (AMD_ID_LV800B & FLASH_TYPEMASK):
++ printf ("1x Amd29LV800BB (8Mbit)\n");
++ break;
++ default:
++ printf ("Unknown Chip Type\n");
++ goto Done;
++ break;
++ }
++
++ printf (" Size: %ld MB in %d Sectors\n",
++ info->size >> 20, info->sector_count);
++
++ printf (" Sector Start Addresses:");
++ for (i = 0; i < info->sector_count; i++) {
++ if ((i % 5) == 0) {
++ printf ("\n ");
++ }
++ printf (" %08lX%s", info->start[i],
++ info->protect[i] ? " (RO)" : " ");
++ }
++ printf ("\n");
++
++ Done:;
++}
++
++/*-----------------------------------------------------------------------
++ */
++
++int flash_erase (flash_info_t * info, int s_first, int s_last)
++{
++ ushort result;
++ int iflag, cflag, prot, sect;
++ int rc = ERR_OK;
++ int chip;
++
++ /* first look for protection bits */
++
++ if (info->flash_id == FLASH_UNKNOWN)
++ return ERR_UNKNOWN_FLASH_TYPE;
++
++ if ((s_first < 0) || (s_first > s_last)) {
++ return ERR_INVAL;
++ }
++
++ if ((info->flash_id & FLASH_VENDMASK) !=
++ (AMD_MANUFACT & FLASH_VENDMASK)) {
++ return ERR_UNKNOWN_FLASH_VENDOR;
++ }
++
++ prot = 0;
++ for (sect = s_first; sect <= s_last; ++sect) {
++ if (info->protect[sect]) {
++ prot++;
++ }
++ }
++ if (prot)
++ return ERR_PROTECTED;
++
++ /*
++ * Disable interrupts which might cause a timeout
++ * here. Remember that our exception vectors are
++ * at address 0 in the flash, and we don't want a
++ * (ticker) exception to happen while the flash
++ * chip is in programming mode.
++ */
++ cflag = icache_status ();
++ icache_disable ();
++ iflag = disable_interrupts ();
++
++ /* Start erase on unprotected sectors */
++ for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
++ printf ("Erasing sector %2d ... ", sect);
++
++ /* arm simple, non interrupt dependent timer */
++ reset_timer_masked ();
++
++ if (info->protect[sect] == 0) { /* not protected */
++ vu_short *addr = (vu_short *) (info->start[sect]);
++
++ MEM_FLASH_ADDR1 = CMD_UNLOCK1;
++ MEM_FLASH_ADDR2 = CMD_UNLOCK2;
++ MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
++
++ MEM_FLASH_ADDR1 = CMD_UNLOCK1;
++ MEM_FLASH_ADDR2 = CMD_UNLOCK2;
++ *addr = CMD_ERASE_CONFIRM;
++
++ /* wait until flash is ready */
++ chip = 0;
++
++ do {
++ result = *addr;
++
++ /* check timeout */
++ if (get_timer_masked () >
++ CFG_FLASH_ERASE_TOUT) {
++ MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
++ chip = TMO;
++ break;
++ }
++
++ if (!chip
++ && (result & 0xFFFF) & BIT_ERASE_DONE)
++ chip = READY;
++
++ if (!chip
++ && (result & 0xFFFF) & BIT_PROGRAM_ERROR)
++ chip = ERR;
++
++ } while (!chip);
++
++ MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
++
++ if (chip == ERR) {
++ rc = ERR_PROG_ERROR;
++ goto outahere;
++ }
++ if (chip == TMO) {
++ rc = ERR_TIMOUT;
++ goto outahere;
++ }
++
++ printf ("ok.\n");
++ } else { /* it was protected */
++
++ printf ("protected!\n");
++ }
++ }
++
++ if (ctrlc ())
++ printf ("User Interrupt!\n");
++
++ outahere:
++ /* allow flash to settle - wait 10 ms */
++ udelay_masked (10000);
++
++ if (iflag)
++ enable_interrupts ();
++
++ if (cflag)
++ icache_enable ();
++
++ return rc;
++}
++
++/*-----------------------------------------------------------------------
++ * Copy memory to flash
++ */
++
++volatile static int write_hword (flash_info_t * info, ulong dest, ushort data)
++{
++ vu_short *addr = (vu_short *) dest;
++ ushort result;
++ int rc = ERR_OK;
++ int cflag, iflag;
++ int chip;
++
++ /*
++ * Check if Flash is (sufficiently) erased
++ */
++ result = *addr;
++ if ((result & data) != data)
++ return ERR_NOT_ERASED;
++
++
++ /*
++ * Disable interrupts which might cause a timeout
++ * here. Remember that our exception vectors are
++ * at address 0 in the flash, and we don't want a
++ * (ticker) exception to happen while the flash
++ * chip is in programming mode.
++ */
++ cflag = icache_status ();
++ icache_disable ();
++ iflag = disable_interrupts ();
++
++ MEM_FLASH_ADDR1 = CMD_UNLOCK1;
++ MEM_FLASH_ADDR2 = CMD_UNLOCK2;
++ MEM_FLASH_ADDR1 = CMD_UNLOCK_BYPASS;
++ *addr = CMD_PROGRAM;
++ *addr = data;
++
++ /* arm simple, non interrupt dependent timer */
++ reset_timer_masked ();
++
++ /* wait until flash is ready */
++ chip = 0;
++ do {
++ result = *addr;
++
++ /* check timeout */
++ if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
++ chip = ERR | TMO;
++ break;
++ }
++ if (!chip && ((result & 0x80) == (data & 0x80)))
++ chip = READY;
++
++ if (!chip && ((result & 0xFFFF) & BIT_PROGRAM_ERROR)) {
++ result = *addr;
++
++ if ((result & 0x80) == (data & 0x80))
++ chip = READY;
++ else
++ chip = ERR;
++ }
++
++ } while (!chip);
++
++ *addr = CMD_READ_ARRAY;
++
++ if (chip == ERR || *addr != data)
++ rc = ERR_PROG_ERROR;
++
++ if (iflag)
++ enable_interrupts ();
++
++ if (cflag)
++ icache_enable ();
++
++ return rc;
++}
++
++/*-----------------------------------------------------------------------
++ * Copy memory to flash.
++ */
++
++int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
++{
++ ulong cp, wp;
++ int l;
++ int i, rc;
++ ushort data;
++
++ wp = (addr & ~1); /* get lower word aligned address */
++
++ /*
++ * handle unaligned start bytes
++ */
++ if ((l = addr - wp) != 0) {
++ data = 0;
++ for (i = 0, cp = wp; i < l; ++i, ++cp) {
++ data = (data >> 8) | (*(uchar *) cp << 8);
++ }
++ for (; i < 2 && cnt > 0; ++i) {
++ data = (data >> 8) | (*src++ << 8);
++ --cnt;
++ ++cp;
++ }
++ for (; cnt == 0 && i < 2; ++i, ++cp) {
++ data = (data >> 8) | (*(uchar *) cp << 8);
++ }
++
++ if ((rc = write_hword (info, wp, data)) != 0) {
++ return (rc);
++ }
++ wp += 2;
++ }
++
++ /*
++ * handle word aligned part
++ */
++ while (cnt >= 2) {
++ data = *((vu_short *) src);
++ if ((rc = write_hword (info, wp, data)) != 0) {
++ return (rc);
++ }
++ src += 2;
++ wp += 2;
++ cnt -= 2;
++ }
++
++ if (cnt == 0) {
++ return ERR_OK;
++ }
++
++ /*
++ * handle unaligned tail bytes
++ */
++ data = 0;
++ for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
++ data = (data >> 8) | (*src++ << 8);
++ --cnt;
++ }
++ for (; i < 2; ++i, ++cp) {
++ data = (data >> 8) | (*(uchar *) cp << 8);
++ }
++
++ return write_hword (info, wp, data);
++}
+diff --git a/board/qt2410/lowlevel_init.S b/board/qt2410/lowlevel_init.S
+new file mode 100644
+index 0000000..310f2a0
+--- /dev/null
++++ b/board/qt2410/lowlevel_init.S
+@@ -0,0 +1,167 @@
++/*
++ * Memory Setup stuff - taken from blob memsetup.S
++ *
++ * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
++ * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
++ *
++ * Modified for the Samsung SMDK2410 by
++ * (C) Copyright 2002
++ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
++ *
++ * 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 <config.h>
++#include <version.h>
++
++
++/* some parameters for the board */
++
++/*
++ *
++ * Taken from linux/arch/arm/boot/compressed/head-s3c2410.S
++ *
++ * Copyright (C) 2002 Samsung Electronics SW.LEE <hitchcar@sec.samsung.com>
++ *
++ */
++
++#define BWSCON 0x48000000
++
++/* BWSCON */
++#define DW8 (0x0)
++#define DW16 (0x1)
++#define DW32 (0x2)
++#define WAIT (0x1<<2)
++#define UBLB (0x1<<3)
++
++#define B1_BWSCON (DW32)
++#define B2_BWSCON (DW16)
++#define B3_BWSCON (DW16 + WAIT + UBLB)
++#define B4_BWSCON (DW16)
++#define B5_BWSCON (DW16)
++#define B6_BWSCON (DW32)
++#define B7_BWSCON (DW32)
++
++/* BANK0CON */
++#define B0_Tacs 0x0 /* 0clk */
++#define B0_Tcos 0x0 /* 0clk */
++#define B0_Tacc 0x7 /* 14clk */
++#define B0_Tcoh 0x0 /* 0clk */
++#define B0_Tah 0x0 /* 0clk */
++#define B0_Tacp 0x0
++#define B0_PMC 0x0 /* normal */
++
++/* BANK1CON */
++#define B1_Tacs 0x0 /* 0clk */
++#define B1_Tcos 0x0 /* 0clk */
++#define B1_Tacc 0x7 /* 14clk */
++#define B1_Tcoh 0x0 /* 0clk */
++#define B1_Tah 0x0 /* 0clk */
++#define B1_Tacp 0x0
++#define B1_PMC 0x0
++
++#define B2_Tacs 0x0
++#define B2_Tcos 0x0
++#define B2_Tacc 0x7
++#define B2_Tcoh 0x0
++#define B2_Tah 0x0
++#define B2_Tacp 0x0
++#define B2_PMC 0x0
++
++#define B3_Tacs 0x0 /* 0clk */
++#define B3_Tcos 0x3 /* 4clk */
++#define B3_Tacc 0x7 /* 14clk */
++#define B3_Tcoh 0x1 /* 1clk */
++#define B3_Tah 0x0 /* 0clk */
++#define B3_Tacp 0x3 /* 6clk */
++#define B3_PMC 0x0 /* normal */
++
++#define B4_Tacs 0x0 /* 0clk */
++#define B4_Tcos 0x0 /* 0clk */
++#define B4_Tacc 0x7 /* 14clk */
++#define B4_Tcoh 0x0 /* 0clk */
++#define B4_Tah 0x0 /* 0clk */
++#define B4_Tacp 0x0
++#define B4_PMC 0x0 /* normal */
++
++#define B5_Tacs 0x0 /* 0clk */
++#define B5_Tcos 0x0 /* 0clk */
++#define B5_Tacc 0x7 /* 14clk */
++#define B5_Tcoh 0x0 /* 0clk */
++#define B5_Tah 0x0 /* 0clk */
++#define B5_Tacp 0x0
++#define B5_PMC 0x0 /* normal */
++
++#define B6_MT 0x3 /* SDRAM */
++#define B6_Trcd 0x1
++#define B6_SCAN 0x1 /* 9bit */
++
++#define B7_MT 0x3 /* SDRAM */
++#define B7_Trcd 0x1 /* 3clk */
++#define B7_SCAN 0x1 /* 9bit */
++
++/* REFRESH parameter */
++#define REFEN 0x1 /* Refresh enable */
++#define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */
++#define Trp 0x0 /* 2clk */
++#define Trc 0x3 /* 7clk */
++#define Tchr 0x2 /* 3clk */
++#define REFCNT 1113 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
++/**************************************/
++
++_TEXT_BASE:
++ .word TEXT_BASE
++
++.globl lowlevel_init
++lowlevel_init:
++ /* memory control configuration */
++ /* make r0 relative the current location so that it */
++ /* reads SMRDATA out of FLASH rather than memory ! */
++ ldr r0, =SMRDATA
++ ldr r1, _TEXT_BASE
++ sub r0, r0, r1
++ ldr r1, =BWSCON /* Bus Width Status Controller */
++ add r2, r0, #13*4
++0:
++ ldr r3, [r0], #4
++ str r3, [r1], #4
++ cmp r2, r0
++ bne 0b
++
++ /* everything is fine now */
++ mov pc, lr
++
++ .ltorg
++/* the literal pools origin */
++
++SMRDATA:
++ .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
++ .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
++ .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
++ .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
++ .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
++ .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
++ .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
++ .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
++ .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
++ .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
++ .word 0x32
++ .word 0x30
++ .word 0x30
+diff --git a/board/qt2410/qt2410.c b/board/qt2410/qt2410.c
+new file mode 100644
+index 0000000..133b748
+--- /dev/null
++++ b/board/qt2410/qt2410.c
+@@ -0,0 +1,130 @@
++/*
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Marius Groeger <mgroeger@sysgo.de>
++ *
++ * (C) Copyright 2002
++ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
++ *
++ * 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 <s3c2410.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#define FCLK_SPEED 1
++
++#if FCLK_SPEED==0 /* Fout = 203MHz, Fin = 12MHz for Audio */
++#define M_MDIV 0xC3
++#define M_PDIV 0x4
++#define M_SDIV 0x1
++#elif FCLK_SPEED==1 /* Fout = 202.8MHz */
++#if 0
++#define M_MDIV 0xA1
++#define M_PDIV 0x3
++#define M_SDIV 0x1
++#else
++#define M_MDIV 0x5c
++#define M_PDIV 0x4
++#define M_SDIV 0x0
++#endif
++#endif
++
++#define USB_CLOCK 1
++
++#if USB_CLOCK==0
++#define U_M_MDIV 0xA1
++#define U_M_PDIV 0x3
++#define U_M_SDIV 0x1
++#elif USB_CLOCK==1
++#define U_M_MDIV 0x48
++#define U_M_PDIV 0x3
++#define U_M_SDIV 0x2
++#endif
++
++static inline void delay (unsigned long loops)
++{
++ __asm__ volatile ("1:\n"
++ "subs %0, %1, #1\n"
++ "bne 1b":"=r" (loops):"0" (loops));
++}
++
++/*
++ * Miscellaneous platform dependent initialisations
++ */
++
++int board_init (void)
++{
++ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
++ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
++
++ /* to reduce PLL lock time, adjust the LOCKTIME register */
++ clk_power->LOCKTIME = 0xFFFFFF;
++
++ /* configure MPLL */
++ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
++
++ /* some delay between MPLL and UPLL */
++ delay (4000);
++
++ /* configure UPLL */
++ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
++
++ /* some delay between MPLL and UPLL */
++ delay (8000);
++
++ /* set up the I/O ports */
++ gpio->GPACON = 0x007FFFFF;
++ gpio->GPBCON = 0x00044555;
++ gpio->GPBUP = 0x000007FF;
++ gpio->GPCCON = 0xAAAAAAAA;
++ gpio->GPCUP = 0x0000FFFF;
++ gpio->GPDCON = 0xAAAAAAAA;
++ gpio->GPDUP = 0x0000FFFF;
++ gpio->GPECON = 0xAAAAAAAA;
++ gpio->GPEUP = 0x0000FFFF;
++ gpio->GPFCON = 0x000055AA;
++ gpio->GPFUP = 0x000000FF;
++ gpio->GPGCON = 0xFF95FFBA;
++ //gpio->GPGUP = 0x0000FFFF;
++ gpio->GPGUP = 0x0000AFEF;
++ gpio->GPHCON = 0x0028FAAA;
++ gpio->GPHUP = 0x000007FF;
++
++ /* arch number of SMDK2410-Board */
++ gd->bd->bi_arch_number = MACH_TYPE_QT2410;
++
++ /* adress of boot parameters */
++ gd->bd->bi_boot_params = 0x30000100;
++
++ icache_enable();
++ dcache_enable();
++
++ return 0;
++}
++
++int dram_init (void)
++{
++ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
++ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
++
++ return 0;
++}
+diff --git a/board/qt2410/u-boot.lds b/board/qt2410/u-boot.lds
+new file mode 100644
+index 0000000..f4fbf96
+--- /dev/null
++++ b/board/qt2410/u-boot.lds
+@@ -0,0 +1,57 @@
++/*
++ * (C) Copyright 2002
++ * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
++/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
++OUTPUT_ARCH(arm)
++ENTRY(_start)
++SECTIONS
++{
++ . = 0x00000000;
++
++ . = ALIGN(4);
++ .text :
++ {
++ cpu/arm920t/start.o (.text)
++ *(.text)
++ }
++
++ . = ALIGN(4);
++ .rodata : { *(.rodata) }
++
++ . = ALIGN(4);
++ .data : { *(.data) }
++
++ . = ALIGN(4);
++ .got : { *(.got) }
++
++ . = .;
++ __u_boot_cmd_start = .;
++ .u_boot_cmd : { *(.u_boot_cmd) }
++ __u_boot_cmd_end = .;
++
++ . = ALIGN(4);
++ __bss_start = .;
++ .bss : { *(.bss) }
++ _end = .;
++}
+diff --git a/cpu/arm920t/s3c24x0/Makefile b/cpu/arm920t/s3c24x0/Makefile
+index af9e4ef..10f33f2 100644
+--- a/cpu/arm920t/s3c24x0/Makefile
++++ b/cpu/arm920t/s3c24x0/Makefile
+@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
+ LIB = lib$(SOC).a
+
+ OBJS = i2c.o interrupts.o serial.o speed.o \
+- usb_ohci.o
++ usb_ohci.o mmc.o nand_read.o nand.o
+
+ all: .depend $(LIB)
+
+diff --git a/cpu/arm920t/s3c24x0/mmc.c b/cpu/arm920t/s3c24x0/mmc.c
+new file mode 100644
+index 0000000..b7057e2
+--- /dev/null
++++ b/cpu/arm920t/s3c24x0/mmc.c
+@@ -0,0 +1,568 @@
++/*
++ * u-boot S3C2410 MMC/SD card driver
++ * (C) Copyright 2006 by Harald Welte <laforge@gnumonks.org>
++ *
++ * based on u-boot pxa MMC driver and linux/drivers/mmc/s3c2410mci.c
++ * (C) 2005-2005 Thomas Kleffel
++ *
++ * 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 <config.h>
++#include <common.h>
++#include <mmc.h>
++#include <asm/errno.h>
++#include <asm/io.h>
++#include <s3c2410.h>
++#include <part.h>
++
++#ifdef CONFIG_MMC
++
++#define CONFIG_MMC_WIDE
++
++//#define MMC_DEBUG
++
++#ifdef MMC_DEBUG
++#ifdef debug
++#undef debug
++#endif
++#define debug printf
++#endif
++
++static S3C2410_SDI *sdi;
++
++extern int
++fat_register_device(block_dev_desc_t *dev_desc, int part_no);
++
++static block_dev_desc_t mmc_dev;
++
++block_dev_desc_t * mmc_get_dev(int dev)
++{
++ return ((block_dev_desc_t *)&mmc_dev);
++}
++
++/*
++ * FIXME needs to read cid and csd info to determine block size
++ * and other parameters
++ */
++static uchar mmc_buf[MMC_BLOCK_SIZE];
++static mmc_csd_t mmc_csd;
++static int mmc_ready = 0;
++static int wide = 0;
++
++
++#define CMD_F_RESP 0x01
++#define CMD_F_RESP_LONG 0x02
++
++static u_int32_t *
++/****************************************************/
++mmc_cmd(ushort cmd, ulong arg, ushort flags)
++/****************************************************/
++{
++ static u_int32_t resp[5];
++ ulong status;
++ int i;
++
++ u_int32_t ccon, csta;
++ u_int32_t csta_rdy_bit = S3C2410_SDICMDSTAT_CMDSENT;
++
++ memset(resp, 0, sizeof(resp));
++
++ debug("mmc_cmd CMD%d arg=0x%08x flags=%x\n", cmd, arg, flags);
++
++ sdi->SDICSTA = 0xffffffff;
++ sdi->SDIDSTA = 0xffffffff;
++ sdi->SDIFSTA = 0xffffffff;
++
++ sdi->SDICARG = arg;
++
++ ccon = cmd & S3C2410_SDICMDCON_INDEX;
++ ccon |= S3C2410_SDICMDCON_SENDERHOST|S3C2410_SDICMDCON_CMDSTART;
++
++ if (flags & CMD_F_RESP) {
++ ccon |= S3C2410_SDICMDCON_WAITRSP;
++ csta_rdy_bit = S3C2410_SDICMDSTAT_RSPFIN; /* 1 << 9 */
++ }
++
++ if (flags & CMD_F_RESP_LONG)
++ ccon |= S3C2410_SDICMDCON_LONGRSP;
++
++ sdi->SDICCON = ccon;
++
++ while (1) {
++ csta = sdi->SDICSTA;
++ if (csta & csta_rdy_bit)
++ break;
++ if (csta & S3C2410_SDICMDSTAT_CMDTIMEOUT) {
++ printf("===============> MMC CMD Timeout\n");
++ sdi->SDICSTA |= S3C2410_SDICMDSTAT_CMDTIMEOUT;
++ break;
++ }
++ }
++
++ debug("final MMC CMD status 0x%x\n", csta);
++
++ sdi->SDICSTA |= csta_rdy_bit;
++
++ if (flags & CMD_F_RESP) {
++ resp[0] = sdi->SDIRSP0;
++ resp[1] = sdi->SDIRSP1;
++ resp[2] = sdi->SDIRSP2;
++ resp[3] = sdi->SDIRSP3;
++ }
++
++#if 0
++ for (i=0; i<4; i ++) {
++ debug("MMC resp[%d] = 0x%08x\n", i, resp[i]);
++ }
++#endif
++
++ return resp;
++}
++
++#define FIFO_FILL(host) ((host->SDIFSTA & S3C2410_SDIFSTA_COUNTMASK) >> 2)
++
++static int
++/****************************************************/
++mmc_block_read(uchar *dst, ulong src, ulong len)
++/****************************************************/
++{
++ u_int32_t dcon, fifo;
++ u_int32_t *dst_u32 = (u_int32_t *)dst;
++ u_int32_t *resp;
++
++ if (len == 0) {
++ return 0;
++ }
++
++ debug("mmc_block_rd dst %lx src %lx len %d\n", (ulong)dst, src, len);
++
++ /* set block len */
++ resp = mmc_cmd(MMC_CMD_SET_BLOCKLEN, len, CMD_F_RESP);
++ sdi->SDIBSIZE = len;
++
++ //sdi->SDIPRE = 0xff;
++
++ /* setup data */
++ dcon = (len >> 9) & S3C2410_SDIDCON_BLKNUM_MASK;
++ dcon |= S3C2410_SDIDCON_BLOCKMODE;
++ dcon |= S3C2410_SDIDCON_RXAFTERCMD|S3C2410_SDIDCON_XFER_RXSTART;
++ if (wide)
++ dcon |= S3C2410_SDIDCON_WIDEBUS;
++ sdi->SDIDCON = dcon;
++
++ /* send read command */
++ resp = mmc_cmd(MMC_CMD_READ_BLOCK, src, CMD_F_RESP);
++
++ while (len > 0) {
++ u_int32_t sdidsta = sdi->SDIDSTA;
++ fifo = FIFO_FILL(sdi);
++ if (sdidsta & (S3C2410_SDIDSTA_FIFOFAIL|
++ S3C2410_SDIDSTA_CRCFAIL|
++ S3C2410_SDIDSTA_RXCRCFAIL|
++ S3C2410_SDIDSTA_DATATIMEOUT)) {
++ printf("mmc_block_read: err SDIDSTA=0x%08x\n", sdidsta);
++ return -EIO;
++ }
++
++ while (fifo--) {
++ //debug("dst_u32 = 0x%08x\n", dst_u32);
++ *(dst_u32++) = sdi->SDIDAT;
++ if (len >= 4)
++ len -= 4;
++ else {
++ len = 0;
++ break;
++ }
++ }
++ }
++
++#if 1
++ debug("waiting for SDIDSTA (currently 0x%08x\n", sdi->SDIDSTA);
++ while (!(sdi->SDIDSTA & (1 << 4))) {}
++ debug("done waiting for SDIDSTA (currently 0x%08x\n", sdi->SDIDSTA);
++#endif
++
++ sdi->SDIDCON = 0;
++
++#if 0
++ if (!(sdi->SDIDSTA & S3C2410_SDIDSTA_XFERFINISH))
++ printf("mmc_block_read; transfer not finished!\n");
++#endif
++
++ return 0;
++}
++
++static int
++/****************************************************/
++mmc_block_write(ulong dst, uchar *src, int len)
++/****************************************************/
++{
++#if 0
++ uchar *resp;
++ ushort argh, argl;
++ ulong status;
++
++ if (len == 0) {
++ return 0;
++ }
++
++ debug("mmc_block_wr dst %lx src %lx len %d\n", dst, (ulong)src, len);
++
++ argh = len >> 16;
++ argl = len & 0xffff;
++
++ /* set block len */
++ resp = mmc_cmd(MMC_CMD_SET_BLOCKLEN, argh, argl, CMD_F_RESP);
++
++ /* send write command */
++ argh = dst >> 16;
++ argl = dst & 0xffff;
++ MMC_STRPCL = MMC_STRPCL_STOP_CLK;
++ MMC_NOB = 1;
++ MMC_BLKLEN = len;
++ resp = mmc_cmd(MMC_CMD_WRITE_BLOCK, dst, CMD_F_RESP,
++ MMC_CMDAT_R1|MMC_CMDAT_WRITE|MMC_CMDAT_BLOCK|MMC_CMDAT_DATA_EN);
++
++ MMC_I_MASK = ~MMC_I_MASK_TXFIFO_WR_REQ;
++ while (len) {
++ if (MMC_I_REG & MMC_I_REG_TXFIFO_WR_REQ) {
++ int i, bytes = min(32,len);
++
++ for (i=0; i<bytes; i++) {
++ MMC_TXFIFO = *src++;
++ }
++ if (bytes < 32) {
++ MMC_PRTBUF = MMC_PRTBUF_BUF_PART_FULL;
++ }
++ len -= bytes;
++ }
++ status = MMC_STAT;
++ if (status & MMC_STAT_ERRORS) {
++ printf("MMC_STAT error %lx\n", status);
++ return -1;
++ }
++ }
++ MMC_I_MASK = ~MMC_I_MASK_DATA_TRAN_DONE;
++ while (!(MMC_I_REG & MMC_I_REG_DATA_TRAN_DONE));
++ MMC_I_MASK = ~MMC_I_MASK_PRG_DONE;
++ while (!(MMC_I_REG & MMC_I_REG_PRG_DONE));
++ status = MMC_STAT;
++ if (status & MMC_STAT_ERRORS) {
++ printf("MMC_STAT error %lx\n", status);
++ return -1;
++ }
++#endif
++ return 0;
++}
++
++
++int
++/****************************************************/
++mmc_read(ulong src, uchar *dst, int size)
++/****************************************************/
++{
++ ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
++ ulong mmc_block_size, mmc_block_address;
++
++ if (size == 0) {
++ return 0;
++ }
++
++ if (!mmc_ready) {
++ printf("Please initialize the MMC first\n");
++ return -1;
++ }
++
++ mmc_block_size = MMC_BLOCK_SIZE;
++ mmc_block_address = ~(mmc_block_size - 1);
++
++ src -= CFG_MMC_BASE;
++ end = src + size;
++ part_start = ~mmc_block_address & src;
++ part_end = ~mmc_block_address & end;
++ aligned_start = mmc_block_address & src;
++ aligned_end = mmc_block_address & end;
++
++ /* all block aligned accesses */
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if (part_start) {
++ part_len = mmc_block_size - part_start;
++ debug("ps src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if ((mmc_block_read(mmc_buf, aligned_start, mmc_block_size)) < 0) {
++ return -1;
++ }
++ memcpy(dst, mmc_buf+part_start, part_len);
++ dst += part_len;
++ src += part_len;
++ }
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ for (; src < aligned_end; src += mmc_block_size, dst += mmc_block_size) {
++ debug("al src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if ((mmc_block_read((uchar *)(dst), src, mmc_block_size)) < 0) {
++ return -1;
++ }
++ }
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if (part_end && src < end) {
++ debug("pe src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if ((mmc_block_read(mmc_buf, aligned_end, mmc_block_size)) < 0) {
++ return -1;
++ }
++ memcpy(dst, mmc_buf, part_end);
++ }
++ return 0;
++}
++
++int
++/****************************************************/
++mmc_write(uchar *src, ulong dst, int size)
++/****************************************************/
++{
++ ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
++ ulong mmc_block_size, mmc_block_address;
++
++ if (size == 0) {
++ return 0;
++ }
++
++ if (!mmc_ready) {
++ printf("Please initialize the MMC first\n");
++ return -1;
++ }
++
++ mmc_block_size = MMC_BLOCK_SIZE;
++ mmc_block_address = ~(mmc_block_size - 1);
++
++ dst -= CFG_MMC_BASE;
++ end = dst + size;
++ part_start = ~mmc_block_address & dst;
++ part_end = ~mmc_block_address & end;
++ aligned_start = mmc_block_address & dst;
++ aligned_end = mmc_block_address & end;
++
++ /* all block aligned accesses */
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if (part_start) {
++ part_len = mmc_block_size - part_start;
++ debug("ps src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (ulong)src, dst, end, part_start, part_end, aligned_start, aligned_end);
++ if ((mmc_block_read(mmc_buf, aligned_start, mmc_block_size)) < 0) {
++ return -1;
++ }
++ memcpy(mmc_buf+part_start, src, part_len);
++ if ((mmc_block_write(aligned_start, mmc_buf, mmc_block_size)) < 0) {
++ return -1;
++ }
++ dst += part_len;
++ src += part_len;
++ }
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ for (; dst < aligned_end; src += mmc_block_size, dst += mmc_block_size) {
++ debug("al src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if ((mmc_block_write(dst, (uchar *)src, mmc_block_size)) < 0) {
++ return -1;
++ }
++ }
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if (part_end && dst < end) {
++ debug("pe src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if ((mmc_block_read(mmc_buf, aligned_end, mmc_block_size)) < 0) {
++ return -1;
++ }
++ memcpy(mmc_buf, src, part_end);
++ if ((mmc_block_write(aligned_end, mmc_buf, mmc_block_size)) < 0) {
++ return -1;
++ }
++ }
++ return 0;
++}
++
++ulong
++/****************************************************/
++mmc_bread(int dev_num, ulong blknr, ulong blkcnt, ulong *dst)
++/****************************************************/
++{
++ int mmc_block_size = MMC_BLOCK_SIZE;
++ ulong src = blknr * mmc_block_size + CFG_MMC_BASE;
++
++ mmc_read(src, (uchar *)dst, blkcnt*mmc_block_size);
++ return blkcnt;
++}
++
++static u_int16_t rca = MMC_DEFAULT_RCA;
++
++static u_int32_t mmc_size(const struct mmc_csd *csd)
++{
++ u_int32_t block_len, mult, blocknr;
++
++ block_len = csd->read_bl_len << 12;
++ mult = csd->c_size_mult1 << 8;
++ blocknr = (csd->c_size+1) * mult;
++
++ return blocknr * block_len;
++}
++
++int
++/****************************************************/
++mmc_init(int verbose)
++/****************************************************/
++{
++ int retries, rc = -ENODEV;
++ int is_sd = 0;
++ u_int32_t *resp;
++ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
++
++ sdi = S3C2410_GetBase_SDI();
++
++ debug("mmc_init(PCLK=%u)\n", get_PCLK());
++
++ clk_power->CLKCON |= (1 << 9);
++
++ /* S3C2410 has some bug that prevents reliable operation at higher speed */
++ //sdi->SDIPRE = 0x3e; /* SDCLK = PCLK/2 / (SDIPRE+1) = 396kHz */
++ sdi->SDIPRE = 0x02; /* SDCLK = PCLK/2 / (SDIPRE+1) = 396kHz */
++ sdi->SDIBSIZE = 512;
++ sdi->SDIDTIMER = 0xffff;
++ sdi->SDIIMSK = 0x0;
++ sdi->SDICON = S3C2410_SDICON_FIFORESET|S3C2440_SDICON_MMCCLOCK;
++ udelay(125000); /* FIXME: 74 SDCLK cycles */
++
++ mmc_csd.c_size = 0;
++
++ /* reset */
++ retries = 10;
++ resp = mmc_cmd(MMC_CMD_RESET, 0, 0);
++
++ printf("trying to detect SD Card...\n");
++ while (retries--) {
++ int i;
++ udelay(100000);
++ resp = mmc_cmd(55, 0x00000000, CMD_F_RESP);
++ resp = mmc_cmd(41, 0x00300000, CMD_F_RESP);
++
++ if (resp[0] & (1 << 31)) {
++ is_sd = 1;
++ break;
++ }
++ }
++
++ if (retries == 0 && !is_sd) {
++ retries = 10;
++ printf("failed to detect SD Card, trying MMC\n");
++ resp = mmc_cmd(MMC_CMD_SEND_OP_COND, 0x00ffc000, CMD_F_RESP);
++ while (retries-- && resp && !(resp[4] & 0x80)) {
++ debug("resp %x %x\n", resp[0], resp[1]);
++ udelay(50);
++ resp = mmc_cmd(1, 0x00ffff00, CMD_F_RESP);
++ }
++ }
++
++ /* try to get card id */
++ resp = mmc_cmd(MMC_CMD_ALL_SEND_CID, 0, CMD_F_RESP|CMD_F_RESP_LONG);
++ if (resp) {
++ /* TODO configure mmc driver depending on card attributes */
++ mmc_cid_t *cid = (mmc_cid_t *)resp;
++ if (verbose) {
++ printf("MMC found. Card desciption is:\n");
++ printf("Manufacturer ID = %02x%02x%02x\n",
++ cid->id[0], cid->id[1], cid->id[2]);
++ printf("HW/FW Revision = %x %x\n",cid->hwrev, cid->fwrev);
++ cid->hwrev = cid->fwrev = 0; /* null terminate string */
++ printf("Product Name = %s\n",cid->name);
++ printf("Serial Number = %02x%02x%02x\n",
++ cid->sn[0], cid->sn[1], cid->sn[2]);
++ printf("Month = %d\n",cid->month);
++ printf("Year = %d\n",1997 + cid->year);
++ }
++ /* fill in device description */
++ mmc_dev.if_type = IF_TYPE_MMC;
++ mmc_dev.part_type = PART_TYPE_DOS;
++ mmc_dev.dev = 0;
++ mmc_dev.lun = 0;
++ mmc_dev.type = 0;
++ /* FIXME fill in the correct size (is set to 32MByte) */
++ mmc_dev.blksz = 512;
++ mmc_dev.lba = 0x10000;
++ sprintf(mmc_dev.vendor,"Man %02x%02x%02x Snr %02x%02x%02x",
++ cid->id[0], cid->id[1], cid->id[2],
++ cid->sn[0], cid->sn[1], cid->sn[2]);
++ sprintf(mmc_dev.product,"%s",cid->name);
++ sprintf(mmc_dev.revision,"%x %x",cid->hwrev, cid->fwrev);
++ mmc_dev.removable = 0;
++ mmc_dev.block_read = mmc_bread;
++
++ /* MMC exists, get CSD too */
++ resp = mmc_cmd(MMC_CMD_SET_RCA, MMC_DEFAULT_RCA, CMD_F_RESP);
++ if (is_sd)
++ rca = resp[0] >> 16;
++
++ resp = mmc_cmd(MMC_CMD_SEND_CSD, rca<<16, CMD_F_RESP|CMD_F_RESP_LONG);
++ if (resp) {
++ mmc_csd_t *csd = (mmc_csd_t *)resp;
++ memcpy(&mmc_csd, csd, sizeof(csd));
++ rc = 0;
++ mmc_ready = 1;
++ /* FIXME add verbose printout for csd */
++ printf("READ_BL_LEN=%u, C_SIZE_MULT=%u, C_SIZE=%u\n",
++ csd->read_bl_len, csd->c_size_mult1, csd->c_size);
++ printf("size = %u\n", mmc_size(csd));
++ }
++ }
++
++ resp = mmc_cmd(MMC_CMD_SELECT_CARD, rca<<16, CMD_F_RESP);
++
++#ifdef CONFIG_MMC_WIDE
++ if (is_sd) {
++ resp = mmc_cmd(55, rca<<16, CMD_F_RESP);
++ resp = mmc_cmd(6, 0x02, CMD_F_RESP);
++ wide = 1;
++ }
++#endif
++
++ fat_register_device(&mmc_dev,1); /* partitions start counting with 1 */
++
++ return rc;
++}
++
++int
++mmc_ident(block_dev_desc_t *dev)
++{
++ return 0;
++}
++
++int
++mmc2info(ulong addr)
++{
++ /* FIXME hard codes to 32 MB device */
++ if (addr >= CFG_MMC_BASE && addr < CFG_MMC_BASE + 0x02000000) {
++ return 1;
++ }
++ return 0;
++}
++
++#endif /* CONFIG_MMC */
+diff --git a/cpu/arm920t/s3c24x0/nand.c b/cpu/arm920t/s3c24x0/nand.c
+new file mode 100644
+index 0000000..f720229
+--- /dev/null
++++ b/cpu/arm920t/s3c24x0/nand.c
+@@ -0,0 +1,212 @@
++/*
++ * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
++ *
++ * 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 0
++#define DEBUGN printf
++#else
++#define DEBUGN(x, args ...) {}
++#endif
++
++#if (CONFIG_COMMANDS & CFG_CMD_NAND)
++#if !defined(CFG_NAND_LEGACY)
++
++#include <nand.h>
++#include <s3c2410.h>
++
++#define __REGb(x) (*(volatile unsigned char *)(x))
++#define __REGi(x) (*(volatile unsigned int *)(x))
++
++#define NF_BASE 0x4e000000
++#define NFCONF __REGi(NF_BASE + 0x0)
++#define NFCMD __REGb(NF_BASE + 0x4)
++#define NFADDR __REGb(NF_BASE + 0x8)
++#define NFDATA __REGb(NF_BASE + 0xc)
++#define NFSTAT __REGb(NF_BASE + 0x10)
++
++#define S3C2410_NFCONF_EN (1<<15)
++#define S3C2410_NFCONF_512BYTE (1<<14)
++#define S3C2410_NFCONF_4STEP (1<<13)
++#define S3C2410_NFCONF_INITECC (1<<12)
++#define S3C2410_NFCONF_nFCE (1<<11)
++#define S3C2410_NFCONF_TACLS(x) ((x)<<8)
++#define S3C2410_NFCONF_TWRPH0(x) ((x)<<4)
++#define S3C2410_NFCONF_TWRPH1(x) ((x)<<0)
++
++static u16 s3c2410_read_word(struct mtd_info *mtd)
++{
++ unsigned char byte = 0;
++
++ printf("s3c2410_read_word: WARNING, this function is not implemented yet\n");
++ return byte;
++}
++
++static void s3c2410_write_word(struct mtd_info *mtd, u16 word)
++{
++ printf("s3c2410_write_word: WARNING, this function is not implemented yet\n");
++}
++
++static void s3c2410_hwcontrol(struct mtd_info *mtd, int cmd)
++{
++ struct nand_chip *chip = mtd->priv;
++
++ DEBUGN("hwcontrol(): 0x%02x: ", cmd);
++
++ switch (cmd) {
++ case NAND_CTL_SETNCE:
++ NFCONF &= ~S3C2410_NFCONF_nFCE;
++ DEBUGN("NFCONF=0x%08x\n", NFCONF);
++ break;
++ case NAND_CTL_CLRNCE:
++ NFCONF |= S3C2410_NFCONF_nFCE;
++ DEBUGN("NFCONF=0x%08x\n", NFCONF);
++ break;
++ case NAND_CTL_SETALE:
++ chip->IO_ADDR_W = NF_BASE + 0x8;
++ DEBUGN("SETALE\n");
++ break;
++ case NAND_CTL_SETCLE:
++ chip->IO_ADDR_W = NF_BASE + 0x4;
++ DEBUGN("SETCLE\n");
++ break;
++ default:
++ chip->IO_ADDR_W = NF_BASE + 0xc;
++ break;
++ }
++ return;
++}
++
++static int s3c2410_dev_ready(struct mtd_info *mtd)
++{
++ DEBUGN("dev_ready\n");
++ return (NFSTAT & 0x01);
++}
++
++static void s3c2410_cmdfunc(struct mtd_info *mtd, unsigned cmd,
++ int column, int page_addr)
++{
++ DEBUGN("cmdfunc(): 0x%02x, col=%d, page=%d\n", cmd, column, page_addr);
++
++ switch (cmd) {
++ case NAND_CMD_READ0:
++ case NAND_CMD_READ1:
++ case NAND_CMD_READOOB:
++ NFCMD = cmd;
++ NFADDR = column & 0xff;
++ NFADDR = page_addr & 0xff;
++ NFADDR = (page_addr >> 8) & 0xff;
++ NFADDR = (page_addr >> 16) & 0xff;
++ break;
++ case NAND_CMD_READID:
++ NFCMD = cmd;
++ NFADDR = 0;
++ break;
++ case NAND_CMD_PAGEPROG:
++ NFCMD = cmd;
++ printf("PAGEPROG not implemented\n");
++ break;
++ case NAND_CMD_ERASE1:
++ NFCMD = cmd;
++ NFADDR = page_addr & 0xff;
++ NFADDR = (page_addr >> 8) & 0xff;
++ NFADDR = (page_addr >> 16) & 0xff;
++ break;
++ case NAND_CMD_ERASE2:
++ NFCMD = cmd;
++ break;
++ case NAND_CMD_SEQIN:
++ printf("SEQIN not implemented\n");
++ break;
++ case NAND_CMD_STATUS:
++ NFCMD = cmd;
++ break;
++ case NAND_CMD_RESET:
++ NFCMD = cmd;
++ break;
++ default:
++ break;
++ }
++
++ while (!s3c2410_dev_ready(mtd));
++}
++
++void board_nand_init(struct nand_chip *nand)
++{
++ u_int32_t cfg;
++ u_int8_t tacls, twrph0, twrph1;
++ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
++
++ DEBUGN("board_nand_init()\n");
++
++ clk_power->CLKCON |= (1 << 4);
++
++ /* initialize hardware */
++ twrph0 = 3; twrph1 = 0; tacls = 0;
++
++ /* default timings: maximum */
++ //twrph0 = 8; twrph1 = 8; tacls = 8;
++
++ cfg = S3C2410_NFCONF_EN;
++ cfg |= S3C2410_NFCONF_TACLS(tacls - 1);
++ cfg |= S3C2410_NFCONF_TWRPH0(twrph0 - 1);
++ cfg |= S3C2410_NFCONF_TWRPH1(twrph1 - 1);
++
++ //NFCONF = cfg;
++ NFCONF = 0xf842;
++
++ /* initialize nand_chip data structure */
++ nand->IO_ADDR_R = nand->IO_ADDR_W = 0x4e00000c;
++
++ /* read_buf and write_buf are default */
++ /* read_byte and write_byte are default */
++
++ /* need to override word read/write since default routines try 16bit wide
++ * register access of an (in our case) 8bit register */
++ nand->read_word = s3c2410_read_word;
++ nand->write_word = s3c2410_write_word;
++
++ /* hwcontrol always must be implemented */
++ nand->hwcontrol = s3c2410_hwcontrol;
++
++ nand->dev_ready = s3c2410_dev_ready;
++
++ nand->eccmode = NAND_ECC_SOFT;
++ nand->options = 0;
++ //nand->waitfunc = dfc_wait;
++
++ //nand->cmdfunc = s3c2410_cmdfunc;
++ //nand->autooob = &delta_oob;
++ //nand->badblock_pattern = &delta_bbt_descr;
++
++#if 0
++ /* reset */
++ nand->hwcontrol(NULL, NAND_CTL_SETNCE);
++ nand->cmdfunc(NULL, NAND_CMD_RESET, -1, -1);
++ while (nand->dev_ready(NULL) == 0) {}
++ nand->hwcontrol(NULL, NAND_CTL_CLRNCE);
++#endif
++
++ DEBUGN("end of nand_init\n");
++}
++
++#else
++ #error "U-Boot legacy NAND support not available for S3C2410"
++#endif
++#endif
+diff --git a/cpu/arm920t/s3c24x0/nand_read.c b/cpu/arm920t/s3c24x0/nand_read.c
+new file mode 100644
+index 0000000..9d97932
+--- /dev/null
++++ b/cpu/arm920t/s3c24x0/nand_read.c
+@@ -0,0 +1,75 @@
++/*
++ * nand_read.c: Simple NAND read functions for booting from NAND
++ *
++ * Taken from GPLv2 licensed vivi bootloader,
++ * Copyright (C) 2002 MIZI Research, Inc.
++ *
++ * Author: Hwang, Chideok <hwang@mizi.com>
++ * Date : $Date: 2004/02/04 10:37:37 $
++ *
++ * u-boot integration (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
++ */
++
++#include <common.h>
++
++#ifdef CONFIG_S3C2410_NAND_BOOT
++
++#define __REGb(x) (*(volatile unsigned char *)(x))
++#define __REGi(x) (*(volatile unsigned int *)(x))
++#define NF_BASE 0x4e000000
++#define NFCONF __REGi(NF_BASE + 0x0)
++#define NFCMD __REGb(NF_BASE + 0x4)
++#define NFADDR __REGb(NF_BASE + 0x8)
++#define NFDATA __REGb(NF_BASE + 0xc)
++#define NFSTAT __REGb(NF_BASE + 0x10)
++
++#define BUSY 1
++inline void wait_idle(void) {
++ int i;
++
++ while(!(NFSTAT & BUSY))
++ for(i=0; i<10; i++);
++}
++
++#define NAND_SECTOR_SIZE 512
++#define NAND_BLOCK_MASK (NAND_SECTOR_SIZE - 1)
++
++/* low level nand read function */
++int
++nand_read_ll(unsigned char *buf, unsigned long start_addr, int size)
++{
++ int i, j;
++
++ if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK)) {
++ return -1; /* invalid alignment */
++ }
++
++ /* chip Enable */
++ NFCONF &= ~0x800;
++ for(i=0; i<10; i++);
++
++ for(i=start_addr; i < (start_addr + size);) {
++ /* READ0 */
++ NFCMD = 0;
++
++ /* Write Address */
++ NFADDR = i & 0xff;
++ NFADDR = (i >> 9) & 0xff;
++ NFADDR = (i >> 17) & 0xff;
++ NFADDR = (i >> 25) & 0xff;
++
++ wait_idle();
++
++ for(j=0; j < NAND_SECTOR_SIZE; j++, i++) {
++ *buf = (NFDATA & 0xff);
++ buf++;
++ }
++ }
++
++ /* chip Disable */
++ NFCONF |= 0x800; /* chip disable */
++
++ return 0;
++}
++
++#endif /* CONFIG_S3C2410_NAND_BOOT */
+diff --git a/cpu/arm920t/start.S b/cpu/arm920t/start.S
+index 346f0d0..232e2c2 100644
+--- a/cpu/arm920t/start.S
++++ b/cpu/arm920t/start.S
+@@ -5,6 +5,10 @@
+ * Copyright (c) 2002 Alex Züpke <azu@sysgo.de>
+ * Copyright (c) 2002 Gary Jennejohn <gj@denx.de>
+ *
++ * S3C2410 NAND portions
++ * Copyright (c) 2001 MIZI Research, Inc.
++ * Copyright (c) 2006 Harald Welte <hwelte@hmw-consulting.de>
++ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+@@ -27,6 +31,7 @@
+
+ #include <config.h>
+ #include <version.h>
++#include <s3c2410.h>
+
+
+ /*
+@@ -161,6 +166,7 @@ #ifndef CONFIG_SKIP_LOWLEVEL_INIT
+ #endif
+
+ #ifndef CONFIG_SKIP_RELOCATE_UBOOT
++#ifndef CONFIG_S3C2410_NAND_BOOT
+ relocate: /* relocate U-Boot to RAM */
+ adr r0, _start /* r0 <- current position of code */
+ ldr r1, _TEXT_BASE /* test if we run from flash or RAM */
+@@ -177,6 +183,93 @@ copy_loop:
+ stmia r1!, {r3-r10} /* copy to target address [r1] */
+ cmp r0, r2 /* until source end addreee [r2] */
+ ble copy_loop
++#else /* NAND_BOOT */
++relocate:
++copy_myself:
++ /* mov r10, lr */
++
++ @ reset NAND
++ mov r1, #S3C2410_NAND_BASE
++ ldr r2, =0xf842 @ initial value enable tacls=3,rph0=6,rph1=0
++ str r2, [r1, #oNFCONF]
++ ldr r2, [r1, #oNFCONF]
++ bic r2, r2, #0x800 @ enable chip
++ str r2, [r1, #oNFCONF]
++ mov r2, #0xff @ RESET command
++ strb r2, [r1, #oNFCMD]
++ mov r3, #0 @ wait
++1: add r3, r3, #0x1
++ cmp r3, #0xa
++ blt 1b
++2: ldr r2, [r1, #oNFSTAT] @ wait ready
++ tst r2, #0x1
++ beq 2b
++ ldr r2, [r1, #oNFCONF]
++ orr r2, r2, #0x800 @ disable chip
++ str r2, [r1, #oNFCONF]
++
++#if 0
++ @ get ready to call C functions (for nand_read())
++ ldr sp, DW_STACK_START @ setup stack pointer
++ mov fp, #0 @ no previous frame, so fp=0
++#else
++ ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */
++ sub r0, r0, #CFG_MALLOC_LEN /* malloc area */
++ sub r0, r0, #CFG_GBL_DATA_SIZE /* bdinfo */
++#ifdef CONFIG_USE_IRQ
++ sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
++#endif
++ sub sp, r0, #12 /* leave 3 words for abort-stack */
++#endif
++
++ @ copy u-boot to RAM
++ ldr r0, _TEXT_BASE
++ mov r1, #0x0
++ mov r2, #0x30000
++ bl nand_read_ll
++
++ tst r0, #0x0
++ beq ok_nand_read
++#ifdef CONFIG_DEBUG_LL
++bad_nand_read:
++ ldr r0, STR_FAIL
++ ldr r1, SerBase
++ bl PrintWord
++1: b 1b @ infinite loop
++#endif
++
++ok_nand_read:
++#ifdef CONFIG_DEBUG_LL
++ ldr r0, STR_OK
++ ldr r1, SerBase
++ bl PrintWord
++#endif
++
++ @ verify
++ mov r0, #0
++ @ldr r1, =0x33f00000
++ ldr r1, _TEXT_BASE
++ mov r2, #0x400 @ 4 bytes * 1024 = 4K-bytes
++go_next:
++ ldr r3, [r0], #4
++ ldr r4, [r1], #4
++ teq r3, r4
++ bne notmatch
++ subs r2, r2, #4
++ beq done_nand_read
++ bne go_next
++notmatch:
++#ifdef CONFIG_DEBUG_LL
++ sub r0, r0, #4
++ ldr r1, SerBase
++ bl PrintHexWord
++ ldr r0, STR_FAIL
++ ldr r1, SerBase
++ bl PrintWord
++#endif
++1: b 1b
++done_nand_read:
++#endif /* NAND_BOOT */
+ #endif /* CONFIG_SKIP_RELOCATE_UBOOT */
+
+ /* Set up the stack */
+diff --git a/drivers/Makefile b/drivers/Makefile
+index 9be95c7..eef266a 100644
+--- a/drivers/Makefile
++++ b/drivers/Makefile
+@@ -50,7 +50,7 @@ OBJS = 3c589.o 5701rls.o ali512x.o \
+ videomodes.o w83c553f.o \
+ ks8695eth.o \
+ pxa_pcmcia.o mpc8xx_pcmcia.o tqm8xx_pcmcia.o \
+- rpx_pcmcia.o
++ rpx_pcmcia.o s3c2410_fb.o
+
+ all: $(LIB)
+
+diff --git a/drivers/cs8900.c b/drivers/cs8900.c
+index 082434c..1cce622 100644
+--- a/drivers/cs8900.c
++++ b/drivers/cs8900.c
+@@ -120,6 +120,7 @@ void cs8900_get_enetaddr (uchar * addr)
+ unsigned char env_enetaddr[6];
+ char *tmp = getenv ("ethaddr");
+ char *end;
++ unsigned short chip_id;
+
+ for (i=0; i<6; i++) {
+ env_enetaddr[i] = tmp ? simple_strtoul(tmp, &end, 16) : 0;
+@@ -128,7 +129,9 @@ void cs8900_get_enetaddr (uchar * addr)
+ }
+
+ /* verify chip id */
+- if (get_reg_init_bus (PP_ChipID) != 0x630e)
++ chip_id = get_reg_init_bus (PP_ChipID);
++ printf("\ncs8900a chipid 0x%04x\n", chip_id);
++ if (chip_id != 0x630e)
+ return;
+ eth_reset ();
+ if ((get_reg (PP_SelfST) & (PP_SelfSTAT_EEPROM | PP_SelfSTAT_EEPROM_OK)) ==
+diff --git a/drivers/s3c2410_fb.c b/drivers/s3c2410_fb.c
+new file mode 100644
+index 0000000..fc389a9
+--- /dev/null
++++ b/drivers/s3c2410_fb.c
+@@ -0,0 +1,182 @@
++/*
++ * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
++ *
++ * 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 defined(CONFIG_VIDEO_S3C2410)
++
++#include <video_fb.h>
++#include "videomodes.h"
++#include <s3c2410.h>
++/*
++ * Export Graphic Device
++ */
++GraphicDevice smi;
++
++#define VIDEO_MEM_SIZE 0x200000
++
++/*******************************************************************************
++ *
++ * Init video chip with common Linux graphic modes (lilo)
++ */
++void *video_hw_init (void)
++{
++ S3C24X0_LCD * const lcd = S3C24X0_GetBase_LCD();
++ GraphicDevice *pGD = (GraphicDevice *)&smi;
++ int videomode;
++ unsigned long t1, hsynch, vsynch;
++ char *penv;
++ int tmp, i, bits_per_pixel;
++ struct ctfb_res_modes *res_mode;
++ struct ctfb_res_modes var_mode;
++ unsigned char videoout;
++ unsigned int *vm;
++
++ /* Search for video chip */
++ printf("Video: ");
++
++ tmp = 0;
++
++ videomode = CFG_DEFAULT_VIDEO_MODE;
++ /* get video mode via environment */
++ if ((penv = getenv ("videomode")) != NULL) {
++ /* deceide if it is a string */
++ if (penv[0] <= '9') {
++ videomode = (int) simple_strtoul (penv, NULL, 16);
++ tmp = 1;
++ }
++ } else {
++ tmp = 1;
++ }
++ if (tmp) {
++ /* parameter are vesa modes */
++ /* search params */
++ for (i = 0; i < VESA_MODES_COUNT; i++) {
++ if (vesa_modes[i].vesanr == videomode)
++ break;
++ }
++ if (i == VESA_MODES_COUNT) {
++ printf ("no VESA Mode found, switching to mode 0x%x ", CFG_DEFAULT_VIDEO_MODE);
++ i = 0;
++ }
++ res_mode =
++ (struct ctfb_res_modes *) &res_mode_init[vesa_modes[i].
++ resindex];
++ bits_per_pixel = vesa_modes[i].bits_per_pixel;
++ } else {
++
++ res_mode = (struct ctfb_res_modes *) &var_mode;
++ bits_per_pixel = video_get_params (res_mode, penv);
++ }
++
++ /* calculate hsynch and vsynch freq (info only) */
++ t1 = (res_mode->left_margin + res_mode->xres +
++ res_mode->right_margin + res_mode->hsync_len) / 8;
++ t1 *= 8;
++ t1 *= res_mode->pixclock;
++ t1 /= 1000;
++ hsynch = 1000000000L / t1;
++ t1 *=
++ (res_mode->upper_margin + res_mode->yres +
++ res_mode->lower_margin + res_mode->vsync_len);
++ t1 /= 1000;
++ vsynch = 1000000000L / t1;
++
++ /* fill in Graphic device struct */
++ sprintf (pGD->modeIdent, "%dx%dx%d %ldkHz %ldHz", res_mode->xres,
++ res_mode->yres, bits_per_pixel, (hsynch / 1000),
++ (vsynch / 1000));
++ printf ("%s\n", pGD->modeIdent);
++ pGD->winSizeX = res_mode->xres;
++ pGD->winSizeY = res_mode->yres;
++ pGD->plnSizeX = res_mode->xres;
++ pGD->plnSizeY = res_mode->yres;
++ switch (bits_per_pixel) {
++ case 8:
++ pGD->gdfBytesPP = 1;
++ pGD->gdfIndex = GDF__8BIT_INDEX;
++ break;
++ case 15:
++ pGD->gdfBytesPP = 2;
++ pGD->gdfIndex = GDF_15BIT_555RGB;
++ break;
++ case 16:
++ pGD->gdfBytesPP = 2;
++ pGD->gdfIndex = GDF_16BIT_565RGB;
++ break;
++ case 24:
++ pGD->gdfBytesPP = 3;
++ pGD->gdfIndex = GDF_24BIT_888RGB;
++ break;
++ }
++
++#if 0
++ pGD->isaBase = CFG_ISA_IO;
++ pGD->pciBase = pci_mem_base;
++ pGD->dprBase = (pci_mem_base + 0x400000 + 0x8000);
++ pGD->vprBase = (pci_mem_base + 0x400000 + 0xc000);
++ pGD->cprBase = (pci_mem_base + 0x400000 + 0xe000);
++#endif
++ pGD->frameAdrs = LCD_VIDEO_ADDR;
++ pGD->memSize = VIDEO_MEM_SIZE;
++
++ lcd->LCDSADDR1 = LCD_VIDEO_ADDR >> 1;
++ lcd->LCDSADDR2 = (LCD_VIDEO_ADDR + 0x4b000) >> 1;
++ lcd->LCDSADDR3 = 0x000000f0;
++
++ lcd->LCDCON1 = 0x00000479;
++ lcd->LCDCON2 = 0x014fc183;
++ lcd->LCDCON3 = 0x0060ef07;
++ lcd->LCDCON4 = 0x00000003;
++ lcd->LCDCON5 = 0x00000b09;
++ lcd->LPCSEL = 0x00000cf0;
++
++ pGD->winSizeX = pGD->plnSizeX = 240;
++ pGD->winSizeY = pGD->plnSizeY = 320;
++ pGD->gdfBytesPP = 2;
++ pGD->gdfIndex = GDF_16BIT_565RGB;
++
++ /* Enable Display */
++ videoout = 2; /* Default output is CRT */
++ if ((penv = getenv ("videoout")) != NULL) {
++ /* deceide if it is a string */
++ videoout = (int) simple_strtoul (penv, NULL, 16);
++ }
++
++ printf("clearing video memory\n");
++ /* Clear video memory */
++ i = pGD->memSize/4;
++ vm = (unsigned int *)pGD->frameAdrs;
++ while(i--)
++ *vm++ = 0;
++
++ printf("returning from video_hw_init\n");
++ return ((void*)&smi);
++}
++
++void
++video_set_lut (unsigned int index, /* color number */
++ unsigned char r, /* red */
++ unsigned char g, /* green */
++ unsigned char b /* blue */
++ )
++{
++}
++
++#endif /* CONFIG_VIDEO_S3C2410 */
+diff --git a/drivers/usbdcore_s3c2410.c b/drivers/usbdcore_s3c2410.c
+new file mode 100644
+index 0000000..143fdf2
+--- /dev/null
++++ b/drivers/usbdcore_s3c2410.c
+@@ -0,0 +1,1609 @@
++/*
++ * (C) Copyright 2003
++ * Gerry Hamel, geh@ti.com, Texas Instruments
++ *
++ * Based on
++ * linux/drivers/usb/device/bi/omap.c
++ * TI OMAP1510 USB bus interface driver
++ *
++ * Author: MontaVista Software, Inc.
++ * source@mvista.com
++ * (C) Copyright 2002
++ *
++ * 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 defined(CONFIG_S3C2410) && defined(CONFIG_USB_DEVICE)
++
++#include <asm/io.h>
++
++#include "usbdcore.h"
++#include "usbdcore_s3c2410.h"
++#include "usbdcore_ep0.h"
++
++
++#define UDC_INIT_MDELAY 80 /* Device settle delay */
++#define UDC_MAX_ENDPOINTS 31 /* Number of endpoints on this UDC */
++
++/* Some kind of debugging output... */
++#if 1
++#define UDCDBG(str)
++#define UDCDBGA(fmt,args...)
++#else /* The bugs still exists... */
++#define UDCDBG(str) serial_printf("[%s] %s:%d: " str "\n", __FILE__,__FUNCTION__,__LINE__)
++#define UDCDBGA(fmt,args...) serial_printf("[%s] %s:%d: " fmt "\n", __FILE__,__FUNCTION__,__LINE__, ##args)
++#endif
++
++#if 1
++#define UDCREG(name)
++#define UDCREGL(name)
++#else /* The bugs still exists... */
++#define UDCREG(name) serial_printf("%s():%d: %s[%08x]=%.4x\n",__FUNCTION__,__LINE__, (#name), name, inw(name)) /* For 16-bit regs */
++#define UDCREGL(name) serial_printf("%s():%d: %s[%08x]=%.8x\n",__FUNCTION__,__LINE__, (#name), name, inl(name)) /* For 32-bit regs */
++#endif
++
++
++static struct urb *ep0_urb = NULL;
++
++static struct usb_device_instance *udc_device; /* Used in interrupt handler */
++static u16 udc_devstat = 0; /* UDC status (DEVSTAT) */
++static u32 udc_interrupts = 0;
++
++static void udc_stall_ep (unsigned int ep_addr);
++
++
++static struct usb_endpoint_instance *s3c2410_find_ep (int ep)
++{
++ int i;
++
++ for (i = 0; i < udc_device->bus->max_endpoints; i++) {
++ if (udc_device->bus->endpoint_array[i].endpoint_address == ep)
++ return &udc_device->bus->endpoint_array[i];
++ }
++ return NULL;
++}
++
++/* ************************************************************************** */
++/* IO
++ */
++
++/*
++ * omap1510_prepare_endpoint_for_rx
++ *
++ * This function implements TRM Figure 14-11.
++ *
++ * The endpoint to prepare for transfer is specified as a physical endpoint
++ * number. For OUT (rx) endpoints 1 through 15, the corresponding endpoint
++ * configuration register is checked to see if the endpoint is ISO or not.
++ * If the OUT endpoint is valid and is non-ISO then its FIFO is enabled.
++ * No action is taken for endpoint 0 or for IN (tx) endpoints 16 through 30.
++ */
++static void omap1510_prepare_endpoint_for_rx (int ep_addr)
++{
++ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
++
++ UDCDBGA ("omap1510_prepare_endpoint %x", ep_addr);
++ if (((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT)) {
++ if ((inw (UDC_EP_RX (ep_num)) &
++ (UDC_EPn_RX_Valid | UDC_EPn_RX_Iso)) ==
++ UDC_EPn_RX_Valid) {
++ /* rx endpoint is valid, non-ISO, so enable its FIFO */
++ outw (UDC_EP_Sel | ep_num, UDC_EP_NUM);
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ outw (0, UDC_EP_NUM);
++ }
++ }
++}
++
++/* omap1510_configure_endpoints
++ *
++ * This function implements TRM Figure 14-10.
++ */
++static void omap1510_configure_endpoints (struct usb_device_instance *device)
++{
++ int ep;
++ struct usb_bus_instance *bus;
++ struct usb_endpoint_instance *endpoint;
++ unsigned short ep_ptr;
++ unsigned short ep_size;
++ unsigned short ep_isoc;
++ unsigned short ep_doublebuffer;
++ int ep_addr;
++ int packet_size;
++ int buffer_size;
++ int attributes;
++
++ bus = device->bus;
++
++ /* There is a dedicated 2048 byte buffer for USB packets that may be
++ * arbitrarily partitioned among the endpoints on 8-byte boundaries.
++ * The first 8 bytes are reserved for receiving setup packets on
++ * endpoint 0.
++ */
++ ep_ptr = 8; /* reserve the first 8 bytes for the setup fifo */
++
++ for (ep = 0; ep < bus->max_endpoints; ep++) {
++ endpoint = bus->endpoint_array + ep;
++ ep_addr = endpoint->endpoint_address;
++ if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++ /* IN endpoint */
++ packet_size = endpoint->tx_packetSize;
++ attributes = endpoint->tx_attributes;
++ } else {
++ /* OUT endpoint */
++ packet_size = endpoint->rcv_packetSize;
++ attributes = endpoint->rcv_attributes;
++ }
++
++ switch (packet_size) {
++ case 0:
++ ep_size = 0;
++ break;
++ case 8:
++ ep_size = 0;
++ break;
++ case 16:
++ ep_size = 1;
++ break;
++ case 32:
++ ep_size = 2;
++ break;
++ case 64:
++ ep_size = 3;
++ break;
++ case 128:
++ ep_size = 4;
++ break;
++ case 256:
++ ep_size = 5;
++ break;
++ case 512:
++ ep_size = 6;
++ break;
++ default:
++ UDCDBGA ("ep 0x%02x has bad packet size %d",
++ ep_addr, packet_size);
++ packet_size = 0;
++ ep_size = 0;
++ break;
++ }
++
++ switch (attributes & USB_ENDPOINT_XFERTYPE_MASK) {
++ case USB_ENDPOINT_XFER_CONTROL:
++ case USB_ENDPOINT_XFER_BULK:
++ case USB_ENDPOINT_XFER_INT:
++ default:
++ /* A non-isochronous endpoint may optionally be
++ * double-buffered. For now we disable
++ * double-buffering.
++ */
++ ep_doublebuffer = 0;
++ ep_isoc = 0;
++ if (packet_size > 64)
++ packet_size = 0;
++ if (!ep || !ep_doublebuffer)
++ buffer_size = packet_size;
++ else
++ buffer_size = packet_size * 2;
++ break;
++ case USB_ENDPOINT_XFER_ISOC:
++ /* Isochronous endpoints are always double-
++ * buffered, but the double-buffering bit
++ * in the endpoint configuration register
++ * becomes the msb of the endpoint size so we
++ * set the double-buffering flag to zero.
++ */
++ ep_doublebuffer = 0;
++ ep_isoc = 1;
++ buffer_size = packet_size * 2;
++ break;
++ }
++
++ /* check to see if our packet buffer RAM is exhausted */
++ if ((ep_ptr + buffer_size) > 2048) {
++ UDCDBGA ("out of packet RAM for ep 0x%02x buf size %d", ep_addr, buffer_size);
++ buffer_size = packet_size = 0;
++ }
++
++ /* force a default configuration for endpoint 0 since it is
++ * always enabled
++ */
++ if (!ep && ((packet_size < 8) || (packet_size > 64))) {
++ buffer_size = packet_size = 64;
++ ep_size = 3;
++ }
++
++ if (!ep) {
++ /* configure endpoint 0 */
++ outw ((ep_size << 12) | (ep_ptr >> 3), UDC_EP0);
++ /*UDCDBGA("ep 0 buffer offset 0x%03x packet size 0x%03x", */
++ /* ep_ptr, packet_size); */
++ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++ /* IN endpoint */
++ if (packet_size) {
++ outw ((1 << 15) | (ep_doublebuffer << 14) |
++ (ep_size << 12) | (ep_isoc << 11) |
++ (ep_ptr >> 3),
++ UDC_EP_TX (ep_addr &
++ USB_ENDPOINT_NUMBER_MASK));
++ UDCDBGA ("IN ep %d buffer offset 0x%03x"
++ " packet size 0x%03x",
++ ep_addr & USB_ENDPOINT_NUMBER_MASK,
++ ep_ptr, packet_size);
++ } else {
++ outw (0,
++ UDC_EP_TX (ep_addr &
++ USB_ENDPOINT_NUMBER_MASK));
++ }
++ } else {
++ /* OUT endpoint */
++ if (packet_size) {
++ outw ((1 << 15) | (ep_doublebuffer << 14) |
++ (ep_size << 12) | (ep_isoc << 11) |
++ (ep_ptr >> 3),
++ UDC_EP_RX (ep_addr &
++ USB_ENDPOINT_NUMBER_MASK));
++ UDCDBGA ("OUT ep %d buffer offset 0x%03x"
++ " packet size 0x%03x",
++ ep_addr & USB_ENDPOINT_NUMBER_MASK,
++ ep_ptr, packet_size);
++ } else {
++ outw (0,
++ UDC_EP_RX (ep_addr &
++ USB_ENDPOINT_NUMBER_MASK));
++ }
++ }
++ ep_ptr += buffer_size;
++ }
++}
++
++static void s3c2410_deconfigure_device (void)
++{
++ int epnum;
++
++ UDCDBG ("clear Cfg_Lock");
++ outw (inw (UDC_SYSCON1) & ~UDC_Cfg_Lock, UDC_SYSCON1);
++ UDCREG (UDC_SYSCON1);
++
++ /* deconfigure all endpoints */
++ for (epnum = 1; epnum <= 15; epnum++) {
++ outw (0, UDC_EP_RX (epnum));
++ outw (0, UDC_EP_TX (epnum));
++ }
++}
++
++static void s3c2410_configure_device (struct usb_device_instance *device)
++{
++ u_int32_t tmp;
++
++ s3c2410_configure_endpoints(device);
++
++ /* disable EP0-4 SUBD interrupts ? */
++ outw(0x00, S3C2410_UDC_USB_INT_EN_REG);
++
++ /* UPLL already configured by board-level init code */
++
++ /* configure USB pads to device mode */
++ tmp = inw(S3C2410_MISCCR);
++ tmp &= ~(S3C2410_MISCCR_USBHOST|S3C2410_MISCCR_USBSUSPND1);
++ outw(tmp, S3C2410_MISCCR);
++
++ tmp = inb(S3C2410_CLKSLOW);
++ tmp &= ~S3C2410_CLKSLOW_USB_CLK_DISABLE;
++ outw(tmp, S3C2410_CLKSLOW);
++
++ /* clear interrupt registers */
++ inb(S3C2410_UDC_EP_INT_REG);
++ inb(S3C2410_UDC_USB_INT_REG);
++
++ /* enable USB interrupts for RESET and SUSPEND/RESUME */
++ outb(S3C2410_UDC_USBINT_RESET|S3C2410_UDC_USBINT_SUSPEND,
++ S3C2410_UDC_USB_INT_EN_REG);
++
++}
++
++/* omap1510_write_noniso_tx_fifo
++ *
++ * This function implements TRM Figure 14-30.
++ *
++ * If the endpoint has an active tx_urb, then the next packet of data from the
++ * URB is written to the tx FIFO. The total amount of data in the urb is given
++ * by urb->actual_length. The maximum amount of data that can be sent in any
++ * one packet is given by endpoint->tx_packetSize. The number of data bytes
++ * from this URB that have already been transmitted is given by endpoint->sent.
++ * endpoint->last is updated by this routine with the number of data bytes
++ * transmitted in this packet.
++ *
++ * In accordance with Figure 14-30, the EP_NUM register must already have been
++ * written with the value to select the appropriate tx FIFO before this routine
++ * is called.
++ */
++static void omap1510_write_noniso_tx_fifo (struct usb_endpoint_instance
++ *endpoint)
++{
++ struct urb *urb = endpoint->tx_urb;
++
++ if (urb) {
++ unsigned int last, i;
++
++ UDCDBGA ("urb->buffer %p, buffer_length %d, actual_length %d",
++ urb->buffer, urb->buffer_length, urb->actual_length);
++ if ((last =
++ MIN (urb->actual_length - endpoint->sent,
++ endpoint->tx_packetSize))) {
++ u8 *cp = urb->buffer + endpoint->sent;
++
++ UDCDBGA ("endpoint->sent %d, tx_packetSize %d, last %d", endpoint->sent, endpoint->tx_packetSize, last);
++
++ if (((u32) cp & 1) == 0) { /* word aligned? */
++ outsw (UDC_DATA, cp, last >> 1);
++ } else { /* byte aligned. */
++ for (i = 0; i < (last >> 1); i++) {
++ u16 w = ((u16) cp[2 * i + 1] << 8) |
++ (u16) cp[2 * i];
++ outw (w, UDC_DATA);
++ }
++ }
++ if (last & 1) {
++ outb (*(cp + last - 1), UDC_DATA);
++ }
++ }
++ endpoint->last = last;
++ }
++}
++
++/* omap1510_read_noniso_rx_fifo
++ *
++ * This function implements TRM Figure 14-28.
++ *
++ * If the endpoint has an active rcv_urb, then the next packet of data is read
++ * from the rcv FIFO and written to rcv_urb->buffer at offset
++ * rcv_urb->actual_length to append the packet data to the data from any
++ * previous packets for this transfer. We assume that there is sufficient room
++ * left in the buffer to hold an entire packet of data.
++ *
++ * The return value is the number of bytes read from the FIFO for this packet.
++ *
++ * In accordance with Figure 14-28, the EP_NUM register must already have been
++ * written with the value to select the appropriate rcv FIFO before this routine
++ * is called.
++ */
++static int omap1510_read_noniso_rx_fifo (struct usb_endpoint_instance
++ *endpoint)
++{
++ struct urb *urb = endpoint->rcv_urb;
++ int len = 0;
++
++ if (urb) {
++ len = inw (UDC_RXFSTAT);
++
++ if (len) {
++ unsigned char *cp = urb->buffer + urb->actual_length;
++
++ insw (UDC_DATA, cp, len >> 1);
++ if (len & 1)
++ *(cp + len - 1) = inb (UDC_DATA);
++ }
++ }
++ return len;
++}
++
++/* omap1510_prepare_for_control_write_status
++ *
++ * This function implements TRM Figure 14-17.
++ *
++ * We have to deal here with non-autodecoded control writes that haven't already
++ * been dealt with by ep0_recv_setup. The non-autodecoded standard control
++ * write requests are: set/clear endpoint feature, set configuration, set
++ * interface, and set descriptor. ep0_recv_setup handles set/clear requests for
++ * ENDPOINT_HALT by halting the endpoint for a set request and resetting the
++ * endpoint for a clear request. ep0_recv_setup returns an error for
++ * SET_DESCRIPTOR requests which causes them to be terminated with a stall by
++ * the setup handler. A SET_INTERFACE request is handled by ep0_recv_setup by
++ * generating a DEVICE_SET_INTERFACE event. This leaves only the
++ * SET_CONFIGURATION event for us to deal with here.
++ *
++ */
++static void omap1510_prepare_for_control_write_status (struct urb *urb)
++{
++ struct usb_device_request *request = &urb->device_request;;
++
++ /* check for a SET_CONFIGURATION request */
++ if (request->bRequest == USB_REQ_SET_CONFIGURATION) {
++ int configuration = le16_to_cpu (request->wValue) & 0xff;
++ unsigned short devstat = inw (UDC_DEVSTAT);
++
++ if ((devstat & (UDC_ADD | UDC_CFG)) == UDC_ADD) {
++ /* device is currently in ADDRESSED state */
++ if (configuration) {
++ /* Assume the specified non-zero configuration
++ * value is valid and switch to the CONFIGURED
++ * state.
++ */
++ outw (UDC_Dev_Cfg, UDC_SYSCON2);
++ }
++ } else if ((devstat & UDC_CFG) == UDC_CFG) {
++ /* device is currently in CONFIGURED state */
++ if (!configuration) {
++ /* Switch to ADDRESSED state. */
++ outw (UDC_Clr_Cfg, UDC_SYSCON2);
++ }
++ }
++ }
++
++ /* select EP0 tx FIFO */
++ outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
++ /* clear endpoint (no data bytes in status stage) */
++ outw (UDC_Clr_EP, UDC_CTRL);
++ /* enable the EP0 tx FIFO */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ /* deselect the endpoint */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++}
++
++/* udc_state_transition_up
++ * udc_state_transition_down
++ *
++ * Helper functions to implement device state changes. The device states and
++ * the events that transition between them are:
++ *
++ * STATE_ATTACHED
++ * || /\
++ * \/ ||
++ * DEVICE_HUB_CONFIGURED DEVICE_HUB_RESET
++ * || /\
++ * \/ ||
++ * STATE_POWERED
++ * || /\
++ * \/ ||
++ * DEVICE_RESET DEVICE_POWER_INTERRUPTION
++ * || /\
++ * \/ ||
++ * STATE_DEFAULT
++ * || /\
++ * \/ ||
++ * DEVICE_ADDRESS_ASSIGNED DEVICE_RESET
++ * || /\
++ * \/ ||
++ * STATE_ADDRESSED
++ * || /\
++ * \/ ||
++ * DEVICE_CONFIGURED DEVICE_DE_CONFIGURED
++ * || /\
++ * \/ ||
++ * STATE_CONFIGURED
++ *
++ * udc_state_transition_up transitions up (in the direction from STATE_ATTACHED
++ * to STATE_CONFIGURED) from the specified initial state to the specified final
++ * state, passing through each intermediate state on the way. If the initial
++ * state is at or above (i.e. nearer to STATE_CONFIGURED) the final state, then
++ * no state transitions will take place.
++ *
++ * udc_state_transition_down transitions down (in the direction from
++ * STATE_CONFIGURED to STATE_ATTACHED) from the specified initial state to the
++ * specified final state, passing through each intermediate state on the way.
++ * If the initial state is at or below (i.e. nearer to STATE_ATTACHED) the final
++ * state, then no state transitions will take place.
++ *
++ * These functions must only be called with interrupts disabled.
++ */
++static void udc_state_transition_up (usb_device_state_t initial,
++ usb_device_state_t final)
++{
++ if (initial < final) {
++ switch (initial) {
++ case STATE_ATTACHED:
++ usbd_device_event_irq (udc_device,
++ DEVICE_HUB_CONFIGURED, 0);
++ if (final == STATE_POWERED)
++ break;
++ case STATE_POWERED:
++ usbd_device_event_irq (udc_device, DEVICE_RESET, 0);
++ if (final == STATE_DEFAULT)
++ break;
++ case STATE_DEFAULT:
++ usbd_device_event_irq (udc_device,
++ DEVICE_ADDRESS_ASSIGNED, 0);
++ if (final == STATE_ADDRESSED)
++ break;
++ case STATE_ADDRESSED:
++ usbd_device_event_irq (udc_device, DEVICE_CONFIGURED,
++ 0);
++ case STATE_CONFIGURED:
++ break;
++ default:
++ break;
++ }
++ }
++}
++
++static void udc_state_transition_down (usb_device_state_t initial,
++ usb_device_state_t final)
++{
++ if (initial > final) {
++ switch (initial) {
++ case STATE_CONFIGURED:
++ usbd_device_event_irq (udc_device, DEVICE_DE_CONFIGURED, 0);
++ if (final == STATE_ADDRESSED)
++ break;
++ case STATE_ADDRESSED:
++ usbd_device_event_irq (udc_device, DEVICE_RESET, 0);
++ if (final == STATE_DEFAULT)
++ break;
++ case STATE_DEFAULT:
++ usbd_device_event_irq (udc_device, DEVICE_POWER_INTERRUPTION, 0);
++ if (final == STATE_POWERED)
++ break;
++ case STATE_POWERED:
++ usbd_device_event_irq (udc_device, DEVICE_HUB_RESET, 0);
++ case STATE_ATTACHED:
++ break;
++ default:
++ break;
++ }
++ }
++}
++
++/* Handle all device state changes.
++ * This function implements TRM Figure 14-21.
++ */
++static void omap1510_udc_state_changed (void)
++{
++ u16 bits;
++ u16 devstat = inw (UDC_DEVSTAT);
++
++ UDCDBGA ("state changed, devstat %x, old %x", devstat, udc_devstat);
++
++ bits = devstat ^ udc_devstat;
++ if (bits) {
++ if (bits & UDC_ATT) {
++ if (devstat & UDC_ATT) {
++ UDCDBG ("device attached and powered");
++ udc_state_transition_up (udc_device->device_state, STATE_POWERED);
++ } else {
++ UDCDBG ("device detached or unpowered");
++ udc_state_transition_down (udc_device->device_state, STATE_ATTACHED);
++ }
++ }
++ if (bits & UDC_USB_Reset) {
++ if (devstat & UDC_USB_Reset) {
++ UDCDBG ("device reset in progess");
++ udc_state_transition_down (udc_device->device_state, STATE_POWERED);
++ } else {
++ UDCDBG ("device reset completed");
++ }
++ }
++ if (bits & UDC_DEF) {
++ if (devstat & UDC_DEF) {
++ UDCDBG ("device entering default state");
++ udc_state_transition_up (udc_device->device_state, STATE_DEFAULT);
++ } else {
++ UDCDBG ("device leaving default state");
++ udc_state_transition_down (udc_device->device_state, STATE_POWERED);
++ }
++ }
++ if (bits & UDC_SUS) {
++ if (devstat & UDC_SUS) {
++ UDCDBG ("entering suspended state");
++ usbd_device_event_irq (udc_device, DEVICE_BUS_INACTIVE, 0);
++ } else {
++ UDCDBG ("leaving suspended state");
++ usbd_device_event_irq (udc_device, DEVICE_BUS_ACTIVITY, 0);
++ }
++ }
++ if (bits & UDC_R_WK_OK) {
++ UDCDBGA ("remote wakeup %s", (devstat & UDC_R_WK_OK)
++ ? "enabled" : "disabled");
++ }
++ if (bits & UDC_ADD) {
++ if (devstat & UDC_ADD) {
++ UDCDBG ("default -> addressed");
++ udc_state_transition_up (udc_device->device_state, STATE_ADDRESSED);
++ } else {
++ UDCDBG ("addressed -> default");
++ udc_state_transition_down (udc_device->device_state, STATE_DEFAULT);
++ }
++ }
++ if (bits & UDC_CFG) {
++ if (devstat & UDC_CFG) {
++ UDCDBG ("device configured");
++ /* The ep0_recv_setup function generates the
++ * DEVICE_CONFIGURED event when a
++ * USB_REQ_SET_CONFIGURATION setup packet is
++ * received, so we should already be in the
++ * state STATE_CONFIGURED.
++ */
++ udc_state_transition_up (udc_device->device_state, STATE_CONFIGURED);
++ } else {
++ UDCDBG ("device deconfigured");
++ udc_state_transition_down (udc_device->device_state, STATE_ADDRESSED);
++ }
++ }
++ }
++
++ /* Clear interrupt source */
++ outw (UDC_DS_Chg, UDC_IRQ_SRC);
++
++ /* Save current DEVSTAT */
++ udc_devstat = devstat;
++}
++
++static void s3c2410_udc_ep0(void)
++{
++ u_int8_t ep0csr;
++
++ UDCDBG("-> Entering EP0 handler");
++
++ S3C2410_UDC_SETIX(EP0);
++ ep0csr = inb(S3C2410_UDC_IN_CSR1_REG);
++
++ /* clear stall status */
++ if (ep0csr & S3C2410_UDC_EP0_CSR_SENTSTL) {
++ clear_sp0_sst;
++ /* FIXME */
++ ep0_idle();
++ }
++
++ if (ep0csr & S3C2410_UDC_EP0_CSR_SE
++ && dev->ep0state != EP0_IDLE) {
++ clear_ep0_se;
++ ep0_idle();
++ }
++
++ switch (dev->ep0state) {
++ case EP0_IDLE:
++ if (ep0crs & S3C2410_UDC_EP0_CSR_OPKRDY) {
++ }
++ break;
++ case EP0_IN_DATA_PHASE:
++ break;
++ case EP0_OUT_DATA_PHASE:
++ break;
++ case EP0_END_XFER:
++ break;
++ case EP0_STALL:
++ set_ep0_ss;
++ break;
++ }
++}
++
++
++}
++
++/* Handle SETUP USB interrupt.
++ * This function implements TRM Figure 14-14.
++ */
++static void omap1510_udc_setup (struct usb_endpoint_instance *endpoint)
++{
++ UDCDBG ("-> Entering device setup");
++
++ do {
++ const int setup_pktsize = 8;
++ unsigned char *datap =
++ (unsigned char *) &ep0_urb->device_request;
++
++ /* Gain access to EP 0 setup FIFO */
++ outw (UDC_Setup_Sel, UDC_EP_NUM);
++
++ /* Read control request data */
++ insb (UDC_DATA, datap, setup_pktsize);
++
++ UDCDBGA ("EP0 setup read [%x %x %x %x %x %x %x %x]",
++ *(datap + 0), *(datap + 1), *(datap + 2),
++ *(datap + 3), *(datap + 4), *(datap + 5),
++ *(datap + 6), *(datap + 7));
++
++ /* Reset EP0 setup FIFO */
++ outw (0, UDC_EP_NUM);
++ } while (inw (UDC_IRQ_SRC) & UDC_Setup);
++
++ /* Try to process setup packet */
++ if (ep0_recv_setup (ep0_urb)) {
++ /* Not a setup packet, stall next EP0 transaction */
++ udc_stall_ep (0);
++ UDCDBG ("can't parse setup packet, still waiting for setup");
++ return;
++ }
++
++ /* Check direction */
++ if ((ep0_urb->device_request.bmRequestType & USB_REQ_DIRECTION_MASK)
++ == USB_REQ_HOST2DEVICE) {
++ UDCDBG ("control write on EP0");
++ if (le16_to_cpu (ep0_urb->device_request.wLength)) {
++ /* We don't support control write data stages.
++ * The only standard control write request with a data
++ * stage is SET_DESCRIPTOR, and ep0_recv_setup doesn't
++ * support that so we just stall those requests. A
++ * function driver might support a non-standard
++ * write request with a data stage, but it isn't
++ * obvious what we would do with the data if we read it
++ * so we'll just stall it. It seems like the API isn't
++ * quite right here.
++ */
++#if 0
++ /* Here is what we would do if we did support control
++ * write data stages.
++ */
++ ep0_urb->actual_length = 0;
++ outw (0, UDC_EP_NUM);
++ /* enable the EP0 rx FIFO */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++#else
++ /* Stall this request */
++ UDCDBG ("Stalling unsupported EP0 control write data "
++ "stage.");
++ udc_stall_ep (0);
++#endif
++ } else {
++ omap1510_prepare_for_control_write_status (ep0_urb);
++ }
++ } else {
++ UDCDBG ("control read on EP0");
++ /* The ep0_recv_setup function has already placed our response
++ * packet data in ep0_urb->buffer and the packet length in
++ * ep0_urb->actual_length.
++ */
++ endpoint->tx_urb = ep0_urb;
++ endpoint->sent = 0;
++ /* select the EP0 tx FIFO */
++ outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
++ /* Write packet data to the FIFO. omap1510_write_noniso_tx_fifo
++ * will update endpoint->last with the number of bytes written
++ * to the FIFO.
++ */
++ omap1510_write_noniso_tx_fifo (endpoint);
++ /* enable the FIFO to start the packet transmission */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ /* deselect the EP0 tx FIFO */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++ }
++
++ UDCDBG ("<- Leaving device setup");
++}
++
++/* Handle endpoint 0 RX interrupt
++ * This routine implements TRM Figure 14-16.
++ */
++static void omap1510_udc_ep0_rx (struct usb_endpoint_instance *endpoint)
++{
++ unsigned short status;
++
++ UDCDBG ("RX on EP0");
++ /* select EP0 rx FIFO */
++ outw (UDC_EP_Sel, UDC_EP_NUM);
++
++ status = inw (UDC_STAT_FLG);
++
++ if (status & UDC_ACK) {
++ /* Check direction */
++ if ((ep0_urb->device_request.bmRequestType
++ & USB_REQ_DIRECTION_MASK) == USB_REQ_HOST2DEVICE) {
++ /* This rx interrupt must be for a control write data
++ * stage packet.
++ *
++ * We don't support control write data stages.
++ * We should never end up here.
++ */
++
++ /* clear the EP0 rx FIFO */
++ outw (UDC_Clr_EP, UDC_CTRL);
++
++ /* deselect the EP0 rx FIFO */
++ outw (0, UDC_EP_NUM);
++
++ UDCDBG ("Stalling unexpected EP0 control write "
++ "data stage packet");
++ udc_stall_ep (0);
++ } else {
++ /* This rx interrupt must be for a control read status
++ * stage packet.
++ */
++ UDCDBG ("ACK on EP0 control read status stage packet");
++ /* deselect EP0 rx FIFO */
++ outw (0, UDC_EP_NUM);
++ }
++ } else if (status & UDC_STALL) {
++ UDCDBG ("EP0 stall during RX");
++ /* deselect EP0 rx FIFO */
++ outw (0, UDC_EP_NUM);
++ } else {
++ /* deselect EP0 rx FIFO */
++ outw (0, UDC_EP_NUM);
++ }
++}
++
++/* Handle endpoint 0 TX interrupt
++ * This routine implements TRM Figure 14-18.
++ */
++static void omap1510_udc_ep0_tx (struct usb_endpoint_instance *endpoint)
++{
++ unsigned short status;
++ struct usb_device_request *request = &ep0_urb->device_request;
++
++ UDCDBG ("TX on EP0");
++ /* select EP0 TX FIFO */
++ outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
++
++ status = inw (UDC_STAT_FLG);
++ if (status & UDC_ACK) {
++ /* Check direction */
++ if ((request->bmRequestType & USB_REQ_DIRECTION_MASK) ==
++ USB_REQ_HOST2DEVICE) {
++ /* This tx interrupt must be for a control write status
++ * stage packet.
++ */
++ UDCDBG ("ACK on EP0 control write status stage packet");
++ /* deselect EP0 TX FIFO */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++ } else {
++ /* This tx interrupt must be for a control read data
++ * stage packet.
++ */
++ int wLength = le16_to_cpu (request->wLength);
++
++ /* Update our count of bytes sent so far in this
++ * transfer.
++ */
++ endpoint->sent += endpoint->last;
++
++ /* We are finished with this transfer if we have sent
++ * all of the bytes in our tx urb (urb->actual_length)
++ * unless we need a zero-length terminating packet. We
++ * need a zero-length terminating packet if we returned
++ * fewer bytes than were requested (wLength) by the host,
++ * and the number of bytes we returned is an exact
++ * multiple of the packet size endpoint->tx_packetSize.
++ */
++ if ((endpoint->sent == ep0_urb->actual_length)
++ && ((ep0_urb->actual_length == wLength)
++ || (endpoint->last !=
++ endpoint->tx_packetSize))) {
++ /* Done with control read data stage. */
++ UDCDBG ("control read data stage complete");
++ /* deselect EP0 TX FIFO */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++ /* select EP0 RX FIFO to prepare for control
++ * read status stage.
++ */
++ outw (UDC_EP_Sel, UDC_EP_NUM);
++ /* clear the EP0 RX FIFO */
++ outw (UDC_Clr_EP, UDC_CTRL);
++ /* enable the EP0 RX FIFO */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ /* deselect the EP0 RX FIFO */
++ outw (0, UDC_EP_NUM);
++ } else {
++ /* We still have another packet of data to send
++ * in this control read data stage or else we
++ * need a zero-length terminating packet.
++ */
++ UDCDBG ("ACK control read data stage packet");
++ omap1510_write_noniso_tx_fifo (endpoint);
++ /* enable the EP0 tx FIFO to start transmission */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ /* deselect EP0 TX FIFO */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++ }
++ }
++ } else if (status & UDC_STALL) {
++ UDCDBG ("EP0 stall during TX");
++ /* deselect EP0 TX FIFO */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++ } else {
++ /* deselect EP0 TX FIFO */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++ }
++}
++
++/* Handle RX transaction on non-ISO endpoint.
++ * This function implements TRM Figure 14-27.
++ * The ep argument is a physical endpoint number for a non-ISO OUT endpoint
++ * in the range 1 to 15.
++ */
++static void omap1510_udc_epn_rx (int ep)
++{
++ unsigned short status;
++
++ /* Check endpoint status */
++ status = inw (UDC_STAT_FLG);
++
++ if (status & UDC_ACK) {
++ int nbytes;
++ struct usb_endpoint_instance *endpoint =
++ omap1510_find_ep (ep);
++
++ nbytes = omap1510_read_noniso_rx_fifo (endpoint);
++ usbd_rcv_complete (endpoint, nbytes, 0);
++
++ /* enable rx FIFO to prepare for next packet */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ } else if (status & UDC_STALL) {
++ UDCDBGA ("STALL on RX endpoint %d", ep);
++ } else if (status & UDC_NAK) {
++ UDCDBGA ("NAK on RX ep %d", ep);
++ } else {
++ serial_printf ("omap-bi: RX on ep %d with status %x", ep,
++ status);
++ }
++}
++
++/* Handle TX transaction on non-ISO endpoint.
++ * This function implements TRM Figure 14-29.
++ * The ep argument is a physical endpoint number for a non-ISO IN endpoint
++ * in the range 16 to 30.
++ */
++static void omap1510_udc_epn_tx (int ep)
++{
++ unsigned short status;
++
++ /*serial_printf("omap1510_udc_epn_tx( %x )\n",ep); */
++
++ /* Check endpoint status */
++ status = inw (UDC_STAT_FLG);
++
++ if (status & UDC_ACK) {
++ struct usb_endpoint_instance *endpoint =
++ omap1510_find_ep (ep);
++
++ /* We need to transmit a terminating zero-length packet now if
++ * we have sent all of the data in this URB and the transfer
++ * size was an exact multiple of the packet size.
++ */
++ if (endpoint->tx_urb
++ && (endpoint->last == endpoint->tx_packetSize)
++ && (endpoint->tx_urb->actual_length - endpoint->sent -
++ endpoint->last == 0)) {
++ /* Prepare to transmit a zero-length packet. */
++ endpoint->sent += endpoint->last;
++ /* write 0 bytes of data to FIFO */
++ omap1510_write_noniso_tx_fifo (endpoint);
++ /* enable tx FIFO to start transmission */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ } else if (endpoint->tx_urb
++ && endpoint->tx_urb->actual_length) {
++ /* retire the data that was just sent */
++ usbd_tx_complete (endpoint);
++ /* Check to see if we have more data ready to transmit
++ * now.
++ */
++ if (endpoint->tx_urb
++ && endpoint->tx_urb->actual_length) {
++ /* write data to FIFO */
++ omap1510_write_noniso_tx_fifo (endpoint);
++ /* enable tx FIFO to start transmission */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ }
++ }
++ } else if (status & UDC_STALL) {
++ UDCDBGA ("STALL on TX endpoint %d", ep);
++ } else if (status & UDC_NAK) {
++ UDCDBGA ("NAK on TX endpoint %d", ep);
++ } else {
++ /*serial_printf("omap-bi: TX on ep %d with status %x\n", ep, status); */
++ }
++}
++
++
++/*
++-------------------------------------------------------------------------------
++*/
++
++/* Handle general USB interrupts and dispatch according to type.
++ * This function implements TRM Figure 14-13.
++ */
++void s3c2410_udc_irq (void)
++{
++ u_int8_t save_idx = inb(S3C2410_UDC_INDEX_REG);
++ u_int8_t usb_status = inb(S3C2410_UDC_USB_INT_REG);
++ u_int8_t usbd_status = inb(S3C2410_UDC_EP_INT_REG);
++
++ UDCDBGA("< IRQ usbs=0x%02x, usbds=0x%02x start >", usb_status,
++ usbd_status);
++
++ if (usb_status & S3C2410_UDC_USBINT_RESET) {
++ valid_irq++;
++ }
++
++ if (usb_status & S3C2410_UDC_USBINT_RESUME) {
++ valid_irq++;
++
++ }
++
++ if (usb_status & S3C2410_UDC_USBINT_SUSPEND) {
++ valid_irq++;
++
++ }
++
++ /* Endpoint Interrupts */
++ if (usbd_status) {
++ int i;
++
++ if (usbd_status & S3C2410_UDC_INT_EP0) {
++ s3c2410_udc_ep0();
++ outb(S3C2410_UDC_INT_EP0, S3C2410_UDC_EP_INT_REG);
++ valid_irq++;
++ }
++
++ for (i = 1; i < 5; i++) {
++ u_int32_t tmp = 1 << i;
++
++ if (usbd_status & tmp) {
++ /* FIXME: Handle EP X */
++ s3c2410_udc_epn(i);
++ outb(tmp, S3C2410_UDC_EP_INT_REG);
++ valid_irq++;
++ }
++ }
++ }
++ outb(save_idx, S3C2410_UDC_INDEX_REG);
++
++#if 0
++ if (!(irq_src & ~UDC_SOF_Flg)) /* ignore SOF interrupts ) */
++ return;
++
++ UDCDBGA ("< IRQ #%d start >- %x", udc_interrupts, irq_src);
++ /*serial_printf("< IRQ #%d start >- %x\n", udc_interrupts, irq_src); */
++
++ if (irq_src & UDC_DS_Chg) {
++ /* Device status changed */
++ omap1510_udc_state_changed ();
++ valid_irq++;
++ }
++ if (irq_src & UDC_EP0_RX) {
++ /* Endpoint 0 receive */
++ outw (UDC_EP0_RX, UDC_IRQ_SRC); /* ack interrupt */
++ omap1510_udc_ep0_rx (udc_device->bus->endpoint_array + 0);
++ valid_irq++;
++ }
++ if (irq_src & UDC_EP0_TX) {
++ /* Endpoint 0 transmit */
++ outw (UDC_EP0_TX, UDC_IRQ_SRC); /* ack interrupt */
++ omap1510_udc_ep0_tx (udc_device->bus->endpoint_array + 0);
++ valid_irq++;
++ }
++ if (irq_src & UDC_Setup) {
++ /* Device setup */
++ omap1510_udc_setup (udc_device->bus->endpoint_array + 0);
++ valid_irq++;
++ }
++ /*if (!valid_irq) */
++ /* serial_printf("unknown interrupt, IRQ_SRC %.4x\n", irq_src); */
++#endif
++ UDCDBGA ("< IRQ end >", udc_interrupts);
++
++ udc_interrupts++;
++}
++
++/* This function implements TRM Figure 14-26. */
++void omap1510_udc_noniso_irq (void)
++{
++ unsigned short epnum;
++ unsigned short irq_src = inw (UDC_IRQ_SRC);
++ int valid_irq = 0;
++
++ if (!(irq_src & (UDC_EPn_RX | UDC_EPn_TX)))
++ return;
++
++ UDCDBGA ("non-ISO IRQ, IRQ_SRC %x", inw (UDC_IRQ_SRC));
++
++ if (irq_src & UDC_EPn_RX) { /* Endpoint N OUT transaction */
++ /* Determine the endpoint number for this interrupt */
++ epnum = (inw (UDC_EPN_STAT) & 0x0f00) >> 8;
++ UDCDBGA ("RX on ep %x", epnum);
++
++ /* acknowledge interrupt */
++ outw (UDC_EPn_RX, UDC_IRQ_SRC);
++
++ if (epnum) {
++ /* select the endpoint FIFO */
++ outw (UDC_EP_Sel | epnum, UDC_EP_NUM);
++
++ omap1510_udc_epn_rx (epnum);
++
++ /* deselect the endpoint FIFO */
++ outw (epnum, UDC_EP_NUM);
++ }
++ valid_irq++;
++ }
++ if (irq_src & UDC_EPn_TX) { /* Endpoint N IN transaction */
++ /* Determine the endpoint number for this interrupt */
++ epnum = (inw (UDC_EPN_STAT) & 0x000f) | USB_DIR_IN;
++ UDCDBGA ("TX on ep %x", epnum);
++
++ /* acknowledge interrupt */
++ outw (UDC_EPn_TX, UDC_IRQ_SRC);
++
++ if (epnum) {
++ /* select the endpoint FIFO */
++ outw (UDC_EP_Sel | UDC_EP_Dir | epnum, UDC_EP_NUM);
++
++ omap1510_udc_epn_tx (epnum);
++
++ /* deselect the endpoint FIFO */
++ outw (UDC_EP_Dir | epnum, UDC_EP_NUM);
++ }
++ valid_irq++;
++ }
++ if (!valid_irq)
++ serial_printf (": unknown non-ISO interrupt, IRQ_SRC %.4x\n",
++ irq_src);
++}
++
++/*
++-------------------------------------------------------------------------------
++*/
++
++
++/*
++ * Start of public functions.
++ */
++
++/* Called to start packet transmission. */
++void udc_endpoint_write (struct usb_endpoint_instance *endpoint)
++{
++ unsigned short epnum =
++ endpoint->endpoint_address & USB_ENDPOINT_NUMBER_MASK;
++
++ UDCDBGA ("Starting transmit on ep %x", epnum);
++
++ if (endpoint->tx_urb) {
++ /* select the endpoint FIFO */
++ outw (UDC_EP_Sel | UDC_EP_Dir | epnum, UDC_EP_NUM);
++ /* write data to FIFO */
++ omap1510_write_noniso_tx_fifo (endpoint);
++ /* enable tx FIFO to start transmission */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ /* deselect the endpoint FIFO */
++ outw (UDC_EP_Dir | epnum, UDC_EP_NUM);
++ }
++}
++
++/* Start to initialize h/w stuff */
++int udc_init (void)
++{
++ u16 udc_rev;
++ uchar value;
++ ulong gpio;
++ int i;
++
++ /* Let the device settle down before we start */
++ for (i = 0; i < UDC_INIT_MDELAY; i++) udelay(1000);
++
++ udc_device = NULL;
++
++ UDCDBG ("starting");
++
++ /* Check peripheral reset. Must be 1 to make sure
++ MPU TIPB peripheral reset is inactive */
++ UDCREG (ARM_RSTCT2);
++
++ /* Set and check clock control.
++ * We might ought to be using the clock control API to do
++ * this instead of fiddling with the clock registers directly
++ * here.
++ */
++ outw ((1 << 4) | (1 << 5), CLOCK_CTRL);
++ UDCREG (CLOCK_CTRL);
++ /* Set and check APLL */
++ outw (0x0008, APLL_CTRL);
++ UDCREG (APLL_CTRL);
++ /* Set and check DPLL */
++ outw (0x2210, DPLL_CTRL);
++ UDCREG (DPLL_CTRL);
++ /* Set and check SOFT */
++ outw ((1 << 4) | (1 << 3) | 1, SOFT_REQ);
++ /* Short delay to wait for DPLL */
++ udelay (1000);
++
++ /* Print banner with device revision */
++ udc_rev = inw (UDC_REV) & 0xff;
++ printf ("USB: TI OMAP1510 USB function module rev %d.%d\n",
++ udc_rev >> 4, udc_rev & 0xf);
++
++#ifdef CONFIG_OMAP_SX1
++ i2c_read (0x32, 0x04, 1, &value, 1);
++ value |= 0x04;
++ i2c_write (0x32, 0x04, 1, &value, 1);
++
++ i2c_read (0x32, 0x03, 1, &value, 1);
++ value |= 0x01;
++ i2c_write (0x32, 0x03, 1, &value, 1);
++
++ gpio = inl(GPIO_PIN_CONTROL_REG);
++ gpio |= 0x0002; /* A_IRDA_OFF */
++ gpio |= 0x0800; /* A_SWITCH */
++ gpio |= 0x8000; /* A_USB_ON */
++ outl (gpio, GPIO_PIN_CONTROL_REG);
++
++ gpio = inl(GPIO_DIR_CONTROL_REG);
++ gpio &= ~0x0002; /* A_IRDA_OFF */
++ gpio &= ~0x0800; /* A_SWITCH */
++ gpio &= ~0x8000; /* A_USB_ON */
++ outl (gpio, GPIO_DIR_CONTROL_REG);
++
++ gpio = inl(GPIO_DATA_OUTPUT_REG);
++ gpio |= 0x0002; /* A_IRDA_OFF */
++ gpio &= ~0x0800; /* A_SWITCH */
++ gpio &= ~0x8000; /* A_USB_ON */
++ outl (gpio, GPIO_DATA_OUTPUT_REG);
++#endif
++
++ /* The VBUS_MODE bit selects whether VBUS detection is done via
++ * software (1) or hardware (0). When software detection is
++ * selected, VBUS_CTRL selects whether USB is not connected (0)
++ * or connected (1).
++ */
++ outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_MODE, FUNC_MUX_CTRL_0);
++ outl (inl (FUNC_MUX_CTRL_0) & ~UDC_VBUS_CTRL, FUNC_MUX_CTRL_0);
++ UDCREGL (FUNC_MUX_CTRL_0);
++
++ /*
++ * At this point, device is ready for configuration...
++ */
++
++ UDCDBG ("disable USB interrupts");
++ outw (0, UDC_IRQ_EN);
++ UDCREG (UDC_IRQ_EN);
++
++ UDCDBG ("disable USB DMA");
++ outw (0, UDC_DMA_IRQ_EN);
++ UDCREG (UDC_DMA_IRQ_EN);
++
++ UDCDBG ("initialize SYSCON1");
++ outw (UDC_Self_Pwr | UDC_Pullup_En, UDC_SYSCON1);
++ UDCREG (UDC_SYSCON1);
++
++ return 0;
++}
++
++/* Stall endpoint */
++static void udc_stall_ep (unsigned int ep_addr)
++{
++ /*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
++ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
++
++ UDCDBGA ("stall ep_addr %d", ep_addr);
++
++ /* REVISIT?
++ * The OMAP TRM section 14.2.4.2 says we must check that the FIFO
++ * is empty before halting the endpoint. The current implementation
++ * doesn't check that the FIFO is empty.
++ */
++
++ if (!ep_num) {
++ outw (UDC_Stall_Cmd, UDC_SYSCON2);
++ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) {
++ if (inw (UDC_EP_RX (ep_num)) & UDC_EPn_RX_Valid) {
++ /* we have a valid rx endpoint, so halt it */
++ outw (UDC_EP_Sel | ep_num, UDC_EP_NUM);
++ outw (UDC_Set_Halt, UDC_CTRL);
++ outw (ep_num, UDC_EP_NUM);
++ }
++ } else {
++ if (inw (UDC_EP_TX (ep_num)) & UDC_EPn_TX_Valid) {
++ /* we have a valid tx endpoint, so halt it */
++ outw (UDC_EP_Sel | UDC_EP_Dir | ep_num, UDC_EP_NUM);
++ outw (UDC_Set_Halt, UDC_CTRL);
++ outw (ep_num, UDC_EP_NUM);
++ }
++ }
++}
++
++/* Reset endpoint */
++#if 0
++static void udc_reset_ep (unsigned int ep_addr)
++{
++ /*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
++ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
++
++ UDCDBGA ("reset ep_addr %d", ep_addr);
++
++ if (!ep_num) {
++ /* control endpoint 0 can't be reset */
++ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) {
++ UDCDBGA ("UDC_EP_RX(%d) = 0x%04x", ep_num,
++ inw (UDC_EP_RX (ep_num)));
++ if (inw (UDC_EP_RX (ep_num)) & UDC_EPn_RX_Valid) {
++ /* we have a valid rx endpoint, so reset it */
++ outw (ep_num | UDC_EP_Sel, UDC_EP_NUM);
++ outw (UDC_Reset_EP, UDC_CTRL);
++ outw (ep_num, UDC_EP_NUM);
++ UDCDBGA ("OUT endpoint %d reset", ep_num);
++ }
++ } else {
++ UDCDBGA ("UDC_EP_TX(%d) = 0x%04x", ep_num,
++ inw (UDC_EP_TX (ep_num)));
++ /* Resetting of tx endpoints seems to be causing the USB function
++ * module to fail, which causes problems when the driver is
++ * uninstalled. We'll skip resetting tx endpoints for now until
++ * we figure out what the problem is.
++ */
++#if 0
++ if (inw (UDC_EP_TX (ep_num)) & UDC_EPn_TX_Valid) {
++ /* we have a valid tx endpoint, so reset it */
++ outw (ep_num | UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
++ outw (UDC_Reset_EP, UDC_CTRL);
++ outw (ep_num | UDC_EP_Dir, UDC_EP_NUM);
++ UDCDBGA ("IN endpoint %d reset", ep_num);
++ }
++#endif
++ }
++}
++#endif
++
++/* ************************************************************************** */
++
++/**
++ * udc_check_ep - check logical endpoint
++ *
++ * Return physical endpoint number to use for this logical endpoint or zero if not valid.
++ */
++#if 0
++int udc_check_ep (int logical_endpoint, int packetsize)
++{
++ if ((logical_endpoint == 0x80) ||
++ ((logical_endpoint & 0x8f) != logical_endpoint)) {
++ return 0;
++ }
++
++ switch (packetsize) {
++ case 8:
++ case 16:
++ case 32:
++ case 64:
++ case 128:
++ case 256:
++ case 512:
++ break;
++ default:
++ return 0;
++ }
++
++ return EP_ADDR_TO_PHYS_EP (logical_endpoint);
++}
++#endif
++
++/*
++ * udc_setup_ep - setup endpoint
++ *
++ * Associate a physical endpoint with endpoint_instance
++ */
++void udc_setup_ep (struct usb_device_instance *device,
++ unsigned int ep, struct usb_endpoint_instance *endpoint)
++{
++ UDCDBGA ("setting up endpoint addr %x", endpoint->endpoint_address);
++
++ /* This routine gets called by bi_modinit for endpoint 0 and from
++ * bi_config for all of the other endpoints. bi_config gets called
++ * during the DEVICE_CREATE, DEVICE_CONFIGURED, and
++ * DEVICE_SET_INTERFACE events. We need to reconfigure the OMAP packet
++ * RAM after bi_config scans the selected device configuration and
++ * initializes the endpoint structures, but before this routine enables
++ * the OUT endpoint FIFOs. Since bi_config calls this routine in a
++ * loop for endpoints 1 through UDC_MAX_ENDPOINTS, we reconfigure our
++ * packet RAM here when ep==1.
++ * I really hate to do this here, but it seems like the API exported
++ * by the USB bus interface controller driver to the usbd-bi module
++ * isn't quite right so there is no good place to do this.
++ */
++ if (ep == 1) {
++ omap1510_deconfigure_device ();
++ omap1510_configure_device (device);
++ }
++
++ if (endpoint && (ep < UDC_MAX_ENDPOINTS)) {
++ int ep_addr = endpoint->endpoint_address;
++
++ if (!ep_addr) {
++ /* nothing to do for endpoint 0 */
++ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++ /* nothing to do for IN (tx) endpoints */
++ } else { /* OUT (rx) endpoint */
++ if (endpoint->rcv_packetSize) {
++ /*struct urb* urb = &(urb_out_array[ep&0xFF]); */
++ /*urb->endpoint = endpoint; */
++ /*urb->device = device; */
++ /*urb->buffer_length = sizeof(urb->buffer); */
++
++ /*endpoint->rcv_urb = urb; */
++ omap1510_prepare_endpoint_for_rx (ep_addr);
++ }
++ }
++ }
++}
++
++/**
++ * udc_disable_ep - disable endpoint
++ * @ep:
++ *
++ * Disable specified endpoint
++ */
++#if 0
++void udc_disable_ep (unsigned int ep_addr)
++{
++ /*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
++ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
++ struct usb_endpoint_instance *endpoint = omap1510_find_ep (ep_addr); /*udc_device->bus->endpoint_array + ep; */
++
++ UDCDBGA ("disable ep_addr %d", ep_addr);
++
++ if (!ep_num) {
++ /* nothing to do for endpoint 0 */ ;
++ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++ if (endpoint->tx_packetSize) {
++ /* we have a valid tx endpoint */
++ /*usbd_flush_tx(endpoint); */
++ endpoint->tx_urb = NULL;
++ }
++ } else {
++ if (endpoint->rcv_packetSize) {
++ /* we have a valid rx endpoint */
++ /*usbd_flush_rcv(endpoint); */
++ endpoint->rcv_urb = NULL;
++ }
++ }
++}
++#endif
++
++/* ************************************************************************** */
++
++/**
++ * udc_connected - is the USB cable connected
++ *
++ * Return non-zero if cable is connected.
++ */
++#if 0
++int udc_connected (void)
++{
++ return ((inw (UDC_DEVSTAT) & UDC_ATT) == UDC_ATT);
++}
++#endif
++
++/* Turn on the USB connection by enabling the pullup resistor */
++void udc_connect (void)
++{
++ UDCDBG ("connect, enable Pullup");
++}
++
++/* Turn off the USB connection by disabling the pullup resistor */
++void udc_disconnect (void)
++{
++ UDCDBG ("disconnect, disable Pullup");
++}
++
++/* ************************************************************************** */
++
++
++/*
++ * udc_disable_interrupts - disable interrupts
++ * switch off interrupts
++ */
++#if 0
++void udc_disable_interrupts (struct usb_device_instance *device)
++{
++ UDCDBG ("disabling all interrupts");
++ outw (0, UDC_IRQ_EN);
++}
++#endif
++
++/* ************************************************************************** */
++
++/**
++ * udc_ep0_packetsize - return ep0 packetsize
++ */
++#if 0
++int udc_ep0_packetsize (void)
++{
++ return EP0_PACKETSIZE;
++}
++#endif
++
++/* Switch on the UDC */
++void udc_enable (struct usb_device_instance *device)
++{
++ UDCDBGA ("enable device %p, status %d", device, device->status);
++
++ /* initialize driver state variables */
++ udc_devstat = 0;
++
++ /* Save the device structure pointer */
++ udc_device = device;
++
++ /* Setup ep0 urb */
++ if (!ep0_urb) {
++ ep0_urb =
++ usbd_alloc_urb (udc_device,
++ udc_device->bus->endpoint_array);
++ } else {
++ serial_printf ("udc_enable: ep0_urb already allocated %p\n",
++ ep0_urb);
++ }
++
++#ifdef FIXME
++ /* The VBUS_MODE bit selects whether VBUS detection is done via
++ * software (1) or hardware (0). When software detection is
++ * selected, VBUS_CTRL selects whether USB is not connected (0)
++ * or connected (1).
++ */
++ outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_CTRL | UDC_VBUS_MODE,
++ FUNC_MUX_CTRL_0);
++ UDCREGL (FUNC_MUX_CTRL_0);
++#endif
++
++ s3c2410_configure_device(device);
++}
++
++/* Switch off the UDC */
++void udc_disable (void)
++{
++ UDCDBG ("disable UDC");
++
++ s3c2410_deconfigure_device();
++
++#ifdef FIXME
++ /* The VBUS_MODE bit selects whether VBUS detection is done via
++ * software (1) or hardware (0). When software detection is
++ * selected, VBUS_CTRL selects whether USB is not connected (0)
++ * or connected (1).
++ */
++ outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_MODE, FUNC_MUX_CTRL_0);
++ outl (inl (FUNC_MUX_CTRL_0) & ~UDC_VBUS_CTRL, FUNC_MUX_CTRL_0);
++ UDCREGL (FUNC_MUX_CTRL_0);
++#endif
++
++ /* Free ep0 URB */
++ if (ep0_urb) {
++ /*usbd_dealloc_urb(ep0_urb); */
++ ep0_urb = NULL;
++ }
++
++ /* Reset device pointer.
++ * We ought to do this here to balance the initialization of udc_device
++ * in udc_enable, but some of our other exported functions get called
++ * by the bus interface driver after udc_disable, so we have to hang on
++ * to the device pointer to avoid a null pointer dereference. */
++ /* udc_device = NULL; */
++}
++
++/**
++ * udc_startup - allow udc code to do any additional startup
++ */
++void udc_startup_events (struct usb_device_instance *device)
++{
++ /* The DEVICE_INIT event puts the USB device in the state STATE_INIT. */
++ usbd_device_event_irq (device, DEVICE_INIT, 0);
++
++ /* The DEVICE_CREATE event puts the USB device in the state
++ * STATE_ATTACHED.
++ */
++ usbd_device_event_irq (device, DEVICE_CREATE, 0);
++
++ /* Some USB controller driver implementations signal
++ * DEVICE_HUB_CONFIGURED and DEVICE_RESET events here.
++ * DEVICE_HUB_CONFIGURED causes a transition to the state STATE_POWERED,
++ * and DEVICE_RESET causes a transition to the state STATE_DEFAULT.
++ * The OMAP USB client controller has the capability to detect when the
++ * USB cable is connected to a powered USB bus via the ATT bit in the
++ * DEVSTAT register, so we will defer the DEVICE_HUB_CONFIGURED and
++ * DEVICE_RESET events until later.
++ */
++
++ udc_enable (device);
++}
++
++#endif
+diff --git a/examples/Makefile b/examples/Makefile
+index a342d75..082e52e 100644
+--- a/examples/Makefile
++++ b/examples/Makefile
+@@ -60,7 +60,7 @@ endif
+ include $(TOPDIR)/config.mk
+
+ SREC = hello_world.srec
+-BIN = hello_world.bin hello_world
++BIN = hello_world hello_world.bin
+
+ ifeq ($(CPU),mpc8xx)
+ SREC = test_burst.srec
+@@ -122,7 +122,7 @@ clibdir := $(shell dirname `$(CC) $(CFLA
+
+ CPPFLAGS += -I..
+
+-all: .depend $(OBJS) $(LIB) $(SREC) $(BIN)
++all: .depend $(OBJS) $(LIB) $(BIN) $(SREC)
+
+ #########################################################################
+ $(LIB): .depend $(LIBOBJS)
+diff --git a/include/asm-arm/arch-s3c24x0/mmc.h b/include/asm-arm/arch-s3c24x0/mmc.h
+new file mode 100644
+index 0000000..d9178f3
+--- /dev/null
++++ b/include/asm-arm/arch-s3c24x0/mmc.h
+@@ -0,0 +1,112 @@
++/*
++ * linux/drivers/mmc/mmc_pxa.h
++ *
++ * Author: Vladimir Shebordaev, Igor Oblakov
++ * Copyright: MontaVista Software Inc.
++ *
++ * $Id: mmc_pxa.h,v 0.3.1.6 2002/09/25 19:25:48 ted Exp ted $
++ *
++ * 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.
++ */
++#ifndef __MMC_PXA_P_H__
++#define __MMC_PXA_P_H__
++
++#include <asm/arch/regs-sdi.h>
++
++#define MMC_DEFAULT_RCA (1<<16)
++
++#define MMC_BLOCK_SIZE 512
++#define MMC_CMD_RESET 0
++#define MMC_CMD_SEND_OP_COND 1
++#define MMC_CMD_ALL_SEND_CID 2
++#define MMC_CMD_SET_RCA 3
++#define MMC_CMD_SELECT_CARD 7
++#define MMC_CMD_SEND_CSD 9
++#define MMC_CMD_SEND_CID 10
++#define MMC_CMD_SEND_STATUS 13
++#define MMC_CMD_SET_BLOCKLEN 16
++#define MMC_CMD_READ_BLOCK 17
++#define MMC_CMD_RD_BLK_MULTI 18
++#define MMC_CMD_WRITE_BLOCK 24
++
++#define MMC_MAX_BLOCK_SIZE 512
++
++#define MMC_R1_IDLE_STATE 0x01
++#define MMC_R1_ERASE_STATE 0x02
++#define MMC_R1_ILLEGAL_CMD 0x04
++#define MMC_R1_COM_CRC_ERR 0x08
++#define MMC_R1_ERASE_SEQ_ERR 0x01
++#define MMC_R1_ADDR_ERR 0x02
++#define MMC_R1_PARAM_ERR 0x04
++
++#define MMC_R1B_WP_ERASE_SKIP 0x0002
++#define MMC_R1B_ERR 0x0004
++#define MMC_R1B_CC_ERR 0x0008
++#define MMC_R1B_CARD_ECC_ERR 0x0010
++#define MMC_R1B_WP_VIOLATION 0x0020
++#define MMC_R1B_ERASE_PARAM 0x0040
++#define MMC_R1B_OOR 0x0080
++#define MMC_R1B_IDLE_STATE 0x0100
++#define MMC_R1B_ERASE_RESET 0x0200
++#define MMC_R1B_ILLEGAL_CMD 0x0400
++#define MMC_R1B_COM_CRC_ERR 0x0800
++#define MMC_R1B_ERASE_SEQ_ERR 0x1000
++#define MMC_R1B_ADDR_ERR 0x2000
++#define MMC_R1B_PARAM_ERR 0x4000
++
++typedef struct mmc_cid
++{
++/* FIXME: BYTE_ORDER */
++ uchar year:4,
++ month:4;
++ uchar sn[3];
++ uchar fwrev:4,
++ hwrev:4;
++ uchar name[6];
++ uchar id[3];
++} mmc_cid_t;
++
++typedef struct mmc_csd
++{
++ uchar ecc:2,
++ file_format:2,
++ tmp_write_protect:1,
++ perm_write_protect:1,
++ copy:1,
++ file_format_grp:1;
++ uint64_t content_prot_app:1,
++ rsvd3:4,
++ write_bl_partial:1,
++ write_bl_len:4,
++ r2w_factor:3,
++ default_ecc:2,
++ wp_grp_enable:1,
++ wp_grp_size:5,
++ erase_grp_mult:5,
++ erase_grp_size:5,
++ c_size_mult1:3,
++ vdd_w_curr_max:3,
++ vdd_w_curr_min:3,
++ vdd_r_curr_max:3,
++ vdd_r_curr_min:3,
++ c_size:12,
++ rsvd2:2,
++ dsr_imp:1,
++ read_blk_misalign:1,
++ write_blk_misalign:1,
++ read_bl_partial:1;
++
++ ushort read_bl_len:4,
++ ccc:12;
++ uchar tran_speed;
++ uchar nsac;
++ uchar taac;
++ uchar rsvd1:2,
++ spec_vers:4,
++ csd_structure:2;
++} mmc_csd_t;
++
++
++#endif /* __MMC_PXA_P_H__ */
+diff --git a/include/asm-arm/arch-s3c24x0/regs-sdi.h b/include/asm-arm/arch-s3c24x0/regs-sdi.h
+new file mode 100644
+index 0000000..9b5b9d1
+--- /dev/null
++++ b/include/asm-arm/arch-s3c24x0/regs-sdi.h
+@@ -0,0 +1,110 @@
++/* linux/include/asm/arch-s3c2410/regs-sdi.h
++ *
++ * Copyright (c) 2004 Simtec Electronics <linux@simtec.co.uk>
++ * http://www.simtec.co.uk/products/SWLINUX/
++ *
++ * 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.
++ *
++ * S3C2410 MMC/SDIO register definitions
++ *
++ * Changelog:
++ * 18-Aug-2004 Ben Dooks Created initial file
++ * 29-Nov-2004 Koen Martens Added some missing defines, fixed duplicates
++ * 29-Nov-2004 Ben Dooks Updated Koen's patch
++*/
++
++#ifndef __ASM_ARM_REGS_SDI
++#define __ASM_ARM_REGS_SDI "regs-sdi.h"
++
++#define S3C2440_SDICON_SDRESET (1<<8)
++#define S3C2440_SDICON_MMCCLOCK (1<<5)
++#define S3C2410_SDICON_BYTEORDER (1<<4)
++#define S3C2410_SDICON_SDIOIRQ (1<<3)
++#define S3C2410_SDICON_RWAITEN (1<<2)
++#define S3C2410_SDICON_FIFORESET (1<<1)
++#define S3C2410_SDICON_CLOCKTYPE (1<<0)
++
++#define S3C2410_SDICMDCON_ABORT (1<<12)
++#define S3C2410_SDICMDCON_WITHDATA (1<<11)
++#define S3C2410_SDICMDCON_LONGRSP (1<<10)
++#define S3C2410_SDICMDCON_WAITRSP (1<<9)
++#define S3C2410_SDICMDCON_CMDSTART (1<<8)
++#define S3C2410_SDICMDCON_SENDERHOST (1<<6)
++#define S3C2410_SDICMDCON_INDEX (0x3f)
++
++#define S3C2410_SDICMDSTAT_CRCFAIL (1<<12)
++#define S3C2410_SDICMDSTAT_CMDSENT (1<<11)
++#define S3C2410_SDICMDSTAT_CMDTIMEOUT (1<<10)
++#define S3C2410_SDICMDSTAT_RSPFIN (1<<9)
++#define S3C2410_SDICMDSTAT_XFERING (1<<8)
++#define S3C2410_SDICMDSTAT_INDEX (0xff)
++
++#define S3C2440_SDIDCON_DS_BYTE (0<<22)
++#define S3C2440_SDIDCON_DS_HALFWORD (1<<22)
++#define S3C2440_SDIDCON_DS_WORD (2<<22)
++#define S3C2410_SDIDCON_IRQPERIOD (1<<21)
++#define S3C2410_SDIDCON_TXAFTERRESP (1<<20)
++#define S3C2410_SDIDCON_RXAFTERCMD (1<<19)
++#define S3C2410_SDIDCON_BUSYAFTERCMD (1<<18)
++#define S3C2410_SDIDCON_BLOCKMODE (1<<17)
++#define S3C2410_SDIDCON_WIDEBUS (1<<16)
++#define S3C2410_SDIDCON_DMAEN (1<<15)
++#define S3C2410_SDIDCON_STOP (1<<14)
++#define S3C2440_SDIDCON_DATSTART (1<<14)
++#define S3C2410_SDIDCON_DATMODE (3<<12)
++#define S3C2410_SDIDCON_BLKNUM (0x7ff)
++
++/* constants for S3C2410_SDIDCON_DATMODE */
++#define S3C2410_SDIDCON_XFER_READY (0<<12)
++#define S3C2410_SDIDCON_XFER_CHKSTART (1<<12)
++#define S3C2410_SDIDCON_XFER_RXSTART (2<<12)
++#define S3C2410_SDIDCON_XFER_TXSTART (3<<12)
++
++#define S3C2410_SDIDCON_BLKNUM_MASK (0xFFF)
++#define S3C2410_SDIDCNT_BLKNUM_SHIFT (12)
++
++#define S3C2410_SDIDSTA_RDYWAITREQ (1<<10)
++#define S3C2410_SDIDSTA_SDIOIRQDETECT (1<<9)
++#define S3C2410_SDIDSTA_FIFOFAIL (1<<8) /* reserved on 2440 */
++#define S3C2410_SDIDSTA_CRCFAIL (1<<7)
++#define S3C2410_SDIDSTA_RXCRCFAIL (1<<6)
++#define S3C2410_SDIDSTA_DATATIMEOUT (1<<5)
++#define S3C2410_SDIDSTA_XFERFINISH (1<<4)
++#define S3C2410_SDIDSTA_BUSYFINISH (1<<3)
++#define S3C2410_SDIDSTA_SBITERR (1<<2) /* reserved on 2410a/2440 */
++#define S3C2410_SDIDSTA_TXDATAON (1<<1)
++#define S3C2410_SDIDSTA_RXDATAON (1<<0)
++
++#define S3C2440_SDIFSTA_FIFORESET (1<<16)
++#define S3C2440_SDIFSTA_FIFOFAIL (3<<14) /* 3 is correct (2 bits) */
++#define S3C2410_SDIFSTA_TFDET (1<<13)
++#define S3C2410_SDIFSTA_RFDET (1<<12)
++#define S3C2410_SDIFSTA_TFHALF (1<<11)
++#define S3C2410_SDIFSTA_TFEMPTY (1<<10)
++#define S3C2410_SDIFSTA_RFLAST (1<<9)
++#define S3C2410_SDIFSTA_RFFULL (1<<8)
++#define S3C2410_SDIFSTA_RFHALF (1<<7)
++#define S3C2410_SDIFSTA_COUNTMASK (0x7f)
++
++#define S3C2410_SDIIMSK_RESPONSECRC (1<<17)
++#define S3C2410_SDIIMSK_CMDSENT (1<<16)
++#define S3C2410_SDIIMSK_CMDTIMEOUT (1<<15)
++#define S3C2410_SDIIMSK_RESPONSEND (1<<14)
++#define S3C2410_SDIIMSK_READWAIT (1<<13)
++#define S3C2410_SDIIMSK_SDIOIRQ (1<<12)
++#define S3C2410_SDIIMSK_FIFOFAIL (1<<11)
++#define S3C2410_SDIIMSK_CRCSTATUS (1<<10)
++#define S3C2410_SDIIMSK_DATACRC (1<<9)
++#define S3C2410_SDIIMSK_DATATIMEOUT (1<<8)
++#define S3C2410_SDIIMSK_DATAFINISH (1<<7)
++#define S3C2410_SDIIMSK_BUSYFINISH (1<<6)
++#define S3C2410_SDIIMSK_SBITERR (1<<5) /* reserved 2440/2410a */
++#define S3C2410_SDIIMSK_TXFIFOHALF (1<<4)
++#define S3C2410_SDIIMSK_TXFIFOEMPTY (1<<3)
++#define S3C2410_SDIIMSK_RXFIFOLAST (1<<2)
++#define S3C2410_SDIIMSK_RXFIFOFULL (1<<1)
++#define S3C2410_SDIIMSK_RXFIFOHALF (1<<0)
++
++#endif /* __ASM_ARM_REGS_SDI */
+diff --git a/include/asm-arm/mach-types.h b/include/asm-arm/mach-types.h
+index 7d7888e..4e9c6d9 100644
+--- a/include/asm-arm/mach-types.h
++++ b/include/asm-arm/mach-types.h
+@@ -424,7 +424,7 @@ #define MACH_TYPE_MT02 4
+ #define MACH_TYPE_MPORT3S 411
+ #define MACH_TYPE_RA_ALPHA 412
+ #define MACH_TYPE_XCEP 413
+-#define MACH_TYPE_ARCOM_MERCURY 414
++#define MACH_TYPE_ARCOM_VULCAN 414
+ #define MACH_TYPE_STARGATE 415
+ #define MACH_TYPE_ARMADILLOJ 416
+ #define MACH_TYPE_ELROY_JACK 417
+@@ -457,7 +457,7 @@ #define MACH_TYPE_ESL_SARVA 4
+ #define MACH_TYPE_XM250 444
+ #define MACH_TYPE_T6TC1XB 445
+ #define MACH_TYPE_ESS710 446
+-#define MACH_TYPE_MX3ADS 447
++#define MACH_TYPE_MX31ADS 447
+ #define MACH_TYPE_HIMALAYA 448
+ #define MACH_TYPE_BOLFENK 449
+ #define MACH_TYPE_AT91RM9200KR 450
+@@ -736,7 +736,308 @@ #define MACH_TYPE_ADSPORTAL 7
+ #define MACH_TYPE_LN2410SBC 725
+ #define MACH_TYPE_CB3RUFC 726
+ #define MACH_TYPE_MP2USB 727
+-#define MACH_TYPE_PDNB3 1002
++#define MACH_TYPE_NTNP425C 728
++#define MACH_TYPE_COLIBRI 729
++#define MACH_TYPE_PCM7220 730
++#define MACH_TYPE_GATEWAY7001 731
++#define MACH_TYPE_PCM027 732
++#define MACH_TYPE_CMPXA 733
++#define MACH_TYPE_ANUBIS 734
++#define MACH_TYPE_ITE8152 735
++#define MACH_TYPE_LPC3XXX 736
++#define MACH_TYPE_PUPPETEER 737
++#define MACH_TYPE_MACH_VADATECH 738
++#define MACH_TYPE_E570 739
++#define MACH_TYPE_X50 740
++#define MACH_TYPE_RECON 741
++#define MACH_TYPE_XBOARDGP8 742
++#define MACH_TYPE_FPIC2 743
++#define MACH_TYPE_AKITA 744
++#define MACH_TYPE_A81 745
++#define MACH_TYPE_SVM_SC25X 746
++#define MACH_TYPE_VADATECH020 747
++#define MACH_TYPE_TLI 748
++#define MACH_TYPE_EDB9315LC 749
++#define MACH_TYPE_PASSEC 750
++#define MACH_TYPE_DS_TIGER 751
++#define MACH_TYPE_E310 752
++#define MACH_TYPE_E330 753
++#define MACH_TYPE_RT3000 754
++#define MACH_TYPE_NOKIA770 755
++#define MACH_TYPE_PNX0106 756
++#define MACH_TYPE_HX21XX 757
++#define MACH_TYPE_FARADAY 758
++#define MACH_TYPE_SBC9312 759
++#define MACH_TYPE_BATMAN 760
++#define MACH_TYPE_JPD201 761
++#define MACH_TYPE_MIPSA 762
++#define MACH_TYPE_KACOM 763
++#define MACH_TYPE_SWARCOCPU 764
++#define MACH_TYPE_SWARCODSL 765
++#define MACH_TYPE_BLUEANGEL 766
++#define MACH_TYPE_HAIRYGRAMA 767
++#define MACH_TYPE_BANFF 768
++#define MACH_TYPE_CARMEVA 769
++#define MACH_TYPE_SAM255 770
++#define MACH_TYPE_PPM10 771
++#define MACH_TYPE_EDB9315A 772
++#define MACH_TYPE_SUNSET 773
++#define MACH_TYPE_STARGATE2 774
++#define MACH_TYPE_INTELMOTE2 775
++#define MACH_TYPE_TRIZEPS4 776
++#define MACH_TYPE_MAINSTONE2 777
++#define MACH_TYPE_EZ_IXP42X 778
++#define MACH_TYPE_TAPWAVE_ZODIAC 779
++#define MACH_TYPE_UNIVERSALMETER 780
++#define MACH_TYPE_HICOARM9 781
++#define MACH_TYPE_PNX4008 782
++#define MACH_TYPE_KWS6000 783
++#define MACH_TYPE_PORTUX920T 784
++#define MACH_TYPE_EZ_X5 785
++#define MACH_TYPE_OMAP_RUDOLPH 786
++#define MACH_TYPE_CPUAT91 787
++#define MACH_TYPE_REA9200 788
++#define MACH_TYPE_ACTS_PUNE_SA1110 789
++#define MACH_TYPE_IXP425 790
++#define MACH_TYPE_ARGONPLUSODYSSEY 791
++#define MACH_TYPE_PERCH 792
++#define MACH_TYPE_EIS05R1 793
++#define MACH_TYPE_PEPPERPAD 794
++#define MACH_TYPE_SB3010 795
++#define MACH_TYPE_RM9200 796
++#define MACH_TYPE_DMA03 797
++#define MACH_TYPE_ROAD_S101 798
++#define MACH_TYPE_IQ_NEXTGEN_A 799
++#define MACH_TYPE_IQ_NEXTGEN_B 800
++#define MACH_TYPE_IQ_NEXTGEN_C 801
++#define MACH_TYPE_IQ_NEXTGEN_D 802
++#define MACH_TYPE_IQ_NEXTGEN_E 803
++#define MACH_TYPE_MALLOW_AT91 804
++#define MACH_TYPE_CYBERTRACKER_I 805
++#define MACH_TYPE_GESBC931X 806
++#define MACH_TYPE_CENTIPAD 807
++#define MACH_TYPE_ARMSOC 808
++#define MACH_TYPE_SE4200 809
++#define MACH_TYPE_EMS197A 810
++#define MACH_TYPE_MICRO9 811
++#define MACH_TYPE_MICRO9L 812
++#define MACH_TYPE_UC5471DSP 813
++#define MACH_TYPE_SJ5471ENG 814
++#define MACH_TYPE_CMPXA26X 815
++#define MACH_TYPE_NC 816
++#define MACH_TYPE_OMAP_PALMTE 817
++#define MACH_TYPE_AJAX52X 818
++#define MACH_TYPE_SIRIUSTAR 819
++#define MACH_TYPE_IODATA_HDLG 820
++#define MACH_TYPE_AT91RM9200UTL 821
++#define MACH_TYPE_BIOSAFE 822
++#define MACH_TYPE_MP1000 823
++#define MACH_TYPE_PARSY 824
++#define MACH_TYPE_CCXP 825
++#define MACH_TYPE_OMAP_GSAMPLE 826
++#define MACH_TYPE_REALVIEW_EB 827
++#define MACH_TYPE_SAMOA 828
++#define MACH_TYPE_T3XSCALE 829
++#define MACH_TYPE_I878 830
++#define MACH_TYPE_BORZOI 831
++#define MACH_TYPE_GECKO 832
++#define MACH_TYPE_DS101 833
++#define MACH_TYPE_OMAP_PALMTT2 834
++#define MACH_TYPE_XSCALE_PALMLD 835
++#define MACH_TYPE_CC9C 836
++#define MACH_TYPE_SBC1670 837
++#define MACH_TYPE_IXDP28X5 838
++#define MACH_TYPE_OMAP_PALMTT 839
++#define MACH_TYPE_ML696K 840
++#define MACH_TYPE_ARCOM_ZEUS 841
++#define MACH_TYPE_OSIRIS 842
++#define MACH_TYPE_MAESTRO 843
++#define MACH_TYPE_TUNGE2 844
++#define MACH_TYPE_IXBBM 845
++#define MACH_TYPE_MX27 846
++#define MACH_TYPE_AX8004 847
++#define MACH_TYPE_AT91SAM9261EK 848
++#define MACH_TYPE_LOFT 849
++#define MACH_TYPE_MAGPIE 850
++#define MACH_TYPE_MX21 851
++#define MACH_TYPE_MB87M3400 852
++#define MACH_TYPE_MGUARD_DELTA 853
++#define MACH_TYPE_DAVINCI_DVDP 854
++#define MACH_TYPE_HTCUNIVERSAL 855
++#define MACH_TYPE_TPAD 856
++#define MACH_TYPE_ROVERP3 857
++#define MACH_TYPE_JORNADA928 858
++#define MACH_TYPE_MV88FXX81 859
++#define MACH_TYPE_STMP36XX 860
++#define MACH_TYPE_SXNI79524 861
++#define MACH_TYPE_AMS_DELTA 862
++#define MACH_TYPE_URANIUM 863
++#define MACH_TYPE_UCON 864
++#define MACH_TYPE_NAS100D 865
++#define MACH_TYPE_L083_1000 866
++#define MACH_TYPE_EZX 867
++#define MACH_TYPE_PNX5220 868
++#define MACH_TYPE_BUTTE 869
++#define MACH_TYPE_SRM2 870
++#define MACH_TYPE_DSBR 871
++#define MACH_TYPE_CRYSTALBALL 872
++#define MACH_TYPE_TINYPXA27X 873
++#define MACH_TYPE_HERBIE 874
++#define MACH_TYPE_MAGICIAN 875
++#define MACH_TYPE_CM4002 876
++#define MACH_TYPE_B4 877
++#define MACH_TYPE_MAUI 878
++#define MACH_TYPE_CYBERTRACKER_G 879
++#define MACH_TYPE_NXDKN 880
++#define MACH_TYPE_MIO8390 881
++#define MACH_TYPE_OMI_BOARD 882
++#define MACH_TYPE_MX21CIV 883
++#define MACH_TYPE_MAHI_CDAC 884
++#define MACH_TYPE_XSCALE_PALMTX 885
++#define MACH_TYPE_S3C2413 887
++#define MACH_TYPE_SAMSYS_EP0 888
++#define MACH_TYPE_WG302V1 889
++#define MACH_TYPE_WG302V2 890
++#define MACH_TYPE_EB42X 891
++#define MACH_TYPE_IQ331ES 892
++#define MACH_TYPE_COSYDSP 893
++#define MACH_TYPE_UPLAT7D 894
++#define MACH_TYPE_PTDAVINCI 895
++#define MACH_TYPE_MBUS 896
++#define MACH_TYPE_NADIA2VB 897
++#define MACH_TYPE_R1000 898
++#define MACH_TYPE_HW90250 899
++#define MACH_TYPE_OMAP_2430SDP 900
++#define MACH_TYPE_DAVINCI_EVM 901
++#define MACH_TYPE_OMAP_TORNADO 902
++#define MACH_TYPE_OLOCREEK 903
++#define MACH_TYPE_PALMZ72 904
++#define MACH_TYPE_NXDB500 905
++#define MACH_TYPE_APF9328 906
++#define MACH_TYPE_OMAP_WIPOQ 907
++#define MACH_TYPE_OMAP_TWIP 908
++#define MACH_TYPE_XSCALE_PALMTREO650 909
++#define MACH_TYPE_ACUMEN 910
++#define MACH_TYPE_XP100 911
++#define MACH_TYPE_FS2410 912
++#define MACH_TYPE_PXA270_CERF 913
++#define MACH_TYPE_SQ2FTLPALM 914
++#define MACH_TYPE_BSEMSERVER 915
++#define MACH_TYPE_NETCLIENT 916
++#define MACH_TYPE_XSCALE_PALMTT5 917
++#define MACH_TYPE_OMAP_PALMTC 918
++#define MACH_TYPE_OMAP_APOLLON 919
++#define MACH_TYPE_ARGONLVEVB 920
++#define MACH_TYPE_REA_2D 921
++#define MACH_TYPE_TI3E524 922
++#define MACH_TYPE_ATEB9200 923
++#define MACH_TYPE_AUCKLAND 924
++#define MACH_TYPE_AK3320M 925
++#define MACH_TYPE_DURAMAX 926
++#define MACH_TYPE_N35 927
++#define MACH_TYPE_PRONGHORN 928
++#define MACH_TYPE_FUNDY 929
++#define MACH_TYPE_LOGICPD_PXA270 930
++#define MACH_TYPE_CPU777 931
++#define MACH_TYPE_SIMICON9201 932
++#define MACH_TYPE_LEAP2_HPM 933
++#define MACH_TYPE_CM922TXA10 934
++#define MACH_TYPE_PXA 935
++#define MACH_TYPE_SANDGATE2 936
++#define MACH_TYPE_SANDGATE2G 937
++#define MACH_TYPE_SANDGATE2P 938
++#define MACH_TYPE_FRED_JACK 939
++#define MACH_TYPE_TTG_COLOR1 940
++#define MACH_TYPE_NXEB500HMI 941
++#define MACH_TYPE_NETDCU8 942
++#define MACH_TYPE_ML675050_CPU_BOA 943
++#define MACH_TYPE_NG_FVX538 944
++#define MACH_TYPE_NG_FVS338 945
++#define MACH_TYPE_PNX4103 946
++#define MACH_TYPE_HESDB 947
++#define MACH_TYPE_XSILO 948
++#define MACH_TYPE_ESPRESSO 949
++#define MACH_TYPE_EMLC 950
++#define MACH_TYPE_SISTERON 951
++#define MACH_TYPE_RX1950 952
++#define MACH_TYPE_TSC_VENUS 953
++#define MACH_TYPE_DS101J 954
++#define MACH_TYPE_MXC30030ADS 955
++#define MACH_TYPE_FUJITSU_WIMAXSOC 956
++#define MACH_TYPE_DUALPCMODEM 957
++#define MACH_TYPE_GESBC9312 958
++#define MACH_TYPE_HTCAPACHE 959
++#define MACH_TYPE_IXDP435 960
++#define MACH_TYPE_CATPROVT100 961
++#define MACH_TYPE_PICOTUX1XX 962
++#define MACH_TYPE_PICOTUX2XX 963
++#define MACH_TYPE_DSMG600 964
++#define MACH_TYPE_EMPC2 965
++#define MACH_TYPE_VENTURA 966
++#define MACH_TYPE_PHIDGET_SBC 967
++#define MACH_TYPE_IJ3K 968
++#define MACH_TYPE_PISGAH 969
++#define MACH_TYPE_OMAP_FSAMPLE 970
++#define MACH_TYPE_SG720 971
++#define MACH_TYPE_REDFOX 972
++#define MACH_TYPE_MYSH_EP9315_1 973
++#define MACH_TYPE_TPF106 974
++#define MACH_TYPE_AT91RM9200KG 975
++#define MACH_TYPE_SLEDB 976
++#define MACH_TYPE_ONTRACK 977
++#define MACH_TYPE_PM1200 978
++#define MACH_TYPE_ESS24XXX 979
++#define MACH_TYPE_COREMP7 980
++#define MACH_TYPE_NEXCODER_6446 981
++#define MACH_TYPE_STVC8380 982
++#define MACH_TYPE_TEKLYNX 983
++#define MACH_TYPE_CARBONADO 984
++#define MACH_TYPE_SYSMOS_MP730 985
++#define MACH_TYPE_SNAPPER_CL15 986
++#define MACH_TYPE_PGIGIM 987
++#define MACH_TYPE_PTX9160P2 988
++#define MACH_TYPE_DCORE1 989
++#define MACH_TYPE_VICTORPXA 990
++#define MACH_TYPE_MX2DTB 991
++#define MACH_TYPE_PXA_IREX_ER0100 992
++#define MACH_TYPE_OMAP_PALMZ71 993
++#define MACH_TYPE_BARTEC_DEG 994
++#define MACH_TYPE_HW50251 995
++#define MACH_TYPE_IBOX 996
++#define MACH_TYPE_ATLASLH7A404 997
++#define MACH_TYPE_PT2026 998
++#define MACH_TYPE_HTCALPINE 999
++#define MACH_TYPE_BARTEC_VTU 1000
++#define MACH_TYPE_VCOREII 1001
++#define MACH_TYPE_PDNB3 1002
++#define MACH_TYPE_HTCBEETLES 1003
++#define MACH_TYPE_S3C6400 1004
++#define MACH_TYPE_S3C2443 1005
++#define MACH_TYPE_OMAP_LDK 1006
++#define MACH_TYPE_SMDK2460 1007
++#define MACH_TYPE_SMDK2440 1008
++#define MACH_TYPE_SMDK2412 1009
++#define MACH_TYPE_WEBBOX 1010
++#define MACH_TYPE_CWWNDP 1011
++#define MACH_TYPE_DRAGON 1012
++#define MACH_TYPE_OPENDO_CPU_BOARD 1013
++#define MACH_TYPE_CCM2200 1014
++#define MACH_TYPE_ETWARM 1015
++#define MACH_TYPE_M93030 1016
++#define MACH_TYPE_CC7U 1017
++#define MACH_TYPE_MTT_RANGER 1018
++#define MACH_TYPE_NEXUS 1019
++#define MACH_TYPE_DESMAN 1020
++#define MACH_TYPE_BKDE303 1021
++#define MACH_TYPE_SMDK2413 1022
++#define MACH_TYPE_AML_M7200 1023
++#define MACH_TYPE_AML_M5900 1024
++#define MACH_TYPE_SG640 1025
++#define MACH_TYPE_EDG79524 1026
++#define MACH_TYPE_AI2410 1027
++#define MACH_TYPE_IXP465 1028
++#define MACH_TYPE_BALLOON3 1029
++#define MACH_TYPE_QT2410 1108
+
+ #ifdef CONFIG_ARCH_EBSA110
+ # ifdef machine_arch_type
+@@ -3541,9 +3842,9 @@ # define machine_arch_type __machine_ar
+ # else
+ # define machine_arch_type MACH_TYPE_RAMSES
+ # endif
+-# define machine_is_ramses() (machine_arch_type == MACH_TYPE_RAMSES)
++# define machine_is_mnci() (machine_arch_type == MACH_TYPE_RAMSES)
+ #else
+-# define machine_is_ramses() (0)
++# define machine_is_mnci() (0)
+ #endif
+
+ #ifdef CONFIG_ARCH_S28X
+@@ -4501,9 +4802,9 @@ # define machine_arch_type __machine_ar
+ # else
+ # define machine_arch_type MACH_TYPE_M825XX
+ # endif
+-# define machine_is_m825xx() (machine_arch_type == MACH_TYPE_M825XX)
++# define machine_is_comcerto() (machine_arch_type == MACH_TYPE_M825XX)
+ #else
+-# define machine_is_m825xx() (0)
++# define machine_is_comcerto() (0)
+ #endif
+
+ #ifdef CONFIG_SA1100_M7100
+@@ -5658,16 +5959,16 @@ #else
+ # define machine_is_xcep() (0)
+ #endif
+
+-#ifdef CONFIG_MACH_ARCOM_MERCURY
++#ifdef CONFIG_MACH_ARCOM_VULCAN
+ # ifdef machine_arch_type
+ # undef machine_arch_type
+ # define machine_arch_type __machine_arch_type
+ # else
+-# define machine_arch_type MACH_TYPE_ARCOM_MERCURY
++# define machine_arch_type MACH_TYPE_ARCOM_VULCAN
+ # endif
+-# define machine_is_arcom_mercury() (machine_arch_type == MACH_TYPE_ARCOM_MERCURY)
++# define machine_is_arcom_vulcan() (machine_arch_type == MACH_TYPE_ARCOM_VULCAN)
+ #else
+-# define machine_is_arcom_mercury() (0)
++# define machine_is_arcom_vulcan() (0)
+ #endif
+
+ #ifdef CONFIG_MACH_STARGATE
+@@ -6054,16 +6355,16 @@ #else
+ # define machine_is_ess710() (0)
+ #endif
+
+-#ifdef CONFIG_MACH_MX3ADS
++#ifdef CONFIG_MACH_MX31ADS
+ # ifdef machine_arch_type
+ # undef machine_arch_type
+ # define machine_arch_type __machine_arch_type
+ # else
+-# define machine_arch_type MACH_TYPE_MX3ADS
++# define machine_arch_type MACH_TYPE_MX31ADS
+ # endif
+-# define machine_is_mx3ads() (machine_arch_type == MACH_TYPE_MX3ADS)
++# define machine_is_mx31ads() (machine_arch_type == MACH_TYPE_MX31ADS)
+ #else
+-# define machine_is_mx3ads() (0)
++# define machine_is_mx31ads() (0)
+ #endif
+
+ #ifdef CONFIG_MACH_HIMALAYA
+@@ -7333,9 +7634,9 @@ # define machine_arch_type __machine_ar
+ # else
+ # define machine_arch_type MACH_TYPE_ARGONPLUSEVB
+ # endif
+-# define machine_is_argonplusevb() (machine_arch_type == MACH_TYPE_ARGONPLUSEVB)
++# define machine_is_i30030evb() (machine_arch_type == MACH_TYPE_ARGONPLUSEVB)
+ #else
+-# define machine_is_argonplusevb() (0)
++# define machine_is_i30030evb() (0)
+ #endif
+
+ #ifdef CONFIG_MACH_SCMA11EVB
+@@ -7345,9 +7646,9 @@ # define machine_arch_type __machine_ar
+ # else
+ # define machine_arch_type MACH_TYPE_SCMA11EVB
+ # endif
+-# define machine_is_scma11evb() (machine_arch_type == MACH_TYPE_SCMA11EVB)
++# define machine_is_mxc27530evb() (machine_arch_type == MACH_TYPE_SCMA11EVB)
+ #else
+-# define machine_is_scma11evb() (0)
++# define machine_is_mxc27530evb() (0)
+ #endif
+
+ #ifdef CONFIG_MACH_SMDK2800
+@@ -8305,9 +8606,9 @@ # define machine_arch_type __machine_ar
+ # else
+ # define machine_arch_type MACH_TYPE_SCMA11BB
+ # endif
+-# define machine_is_scma11bb() (machine_arch_type == MACH_TYPE_SCMA11BB)
++# define machine_is_mxc27530ads() (machine_arch_type == MACH_TYPE_SCMA11BB)
+ #else
+-# define machine_is_scma11bb() (0)
++# define machine_is_mxc27530ads() (0)
+ #endif
+
+ #ifdef CONFIG_MACH_TRIZEPS3
+@@ -9193,9 +9494,9 @@ # define machine_arch_type __machine_ar
+ # else
+ # define machine_arch_type MACH_TYPE_ZEUSEVB
+ # endif
+-# define machine_is_zeusevb() (machine_arch_type == MACH_TYPE_ZEUSEVB)
++# define machine_is_mxc91131evb() (machine_arch_type == MACH_TYPE_ZEUSEVB)
+ #else
+-# define machine_is_zeusevb() (0)
++# define machine_is_mxc91131evb() (0)
+ #endif
+
+ #ifdef CONFIG_MACH_P700
+@@ -9402,6 +9703,3630 @@ #else
+ # define machine_is_mp2usb() (0)
+ #endif
+
++#ifdef CONFIG_MACH_NTNP425C
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NTNP425C
++# endif
++# define machine_is_ntnp425c() (machine_arch_type == MACH_TYPE_NTNP425C)
++#else
++# define machine_is_ntnp425c() (0)
++#endif
++
++#ifdef CONFIG_MACH_COLIBRI
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_COLIBRI
++# endif
++# define machine_is_colibri() (machine_arch_type == MACH_TYPE_COLIBRI)
++#else
++# define machine_is_colibri() (0)
++#endif
++
++#ifdef CONFIG_MACH_PCM7220
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PCM7220
++# endif
++# define machine_is_pcm7220() (machine_arch_type == MACH_TYPE_PCM7220)
++#else
++# define machine_is_pcm7220() (0)
++#endif
++
++#ifdef CONFIG_MACH_GATEWAY7001
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_GATEWAY7001
++# endif
++# define machine_is_gateway7001() (machine_arch_type == MACH_TYPE_GATEWAY7001)
++#else
++# define machine_is_gateway7001() (0)
++#endif
++
++#ifdef CONFIG_MACH_PCM027
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PCM027
++# endif
++# define machine_is_pcm027() (machine_arch_type == MACH_TYPE_PCM027)
++#else
++# define machine_is_pcm027() (0)
++#endif
++
++#ifdef CONFIG_MACH_CMPXA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CMPXA
++# endif
++# define machine_is_cmpxa() (machine_arch_type == MACH_TYPE_CMPXA)
++#else
++# define machine_is_cmpxa() (0)
++#endif
++
++#ifdef CONFIG_MACH_ANUBIS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ANUBIS
++# endif
++# define machine_is_anubis() (machine_arch_type == MACH_TYPE_ANUBIS)
++#else
++# define machine_is_anubis() (0)
++#endif
++
++#ifdef CONFIG_MACH_ITE8152
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ITE8152
++# endif
++# define machine_is_ite8152() (machine_arch_type == MACH_TYPE_ITE8152)
++#else
++# define machine_is_ite8152() (0)
++#endif
++
++#ifdef CONFIG_MACH_LPC3XXX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_LPC3XXX
++# endif
++# define machine_is_lpc3xxx() (machine_arch_type == MACH_TYPE_LPC3XXX)
++#else
++# define machine_is_lpc3xxx() (0)
++#endif
++
++#ifdef CONFIG_MACH_PUPPETEER
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PUPPETEER
++# endif
++# define machine_is_puppeteer() (machine_arch_type == MACH_TYPE_PUPPETEER)
++#else
++# define machine_is_puppeteer() (0)
++#endif
++
++#ifdef CONFIG_MACH_MACH_VADATECH
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MACH_VADATECH
++# endif
++# define machine_is_vt001() (machine_arch_type == MACH_TYPE_MACH_VADATECH)
++#else
++# define machine_is_vt001() (0)
++#endif
++
++#ifdef CONFIG_MACH_E570
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_E570
++# endif
++# define machine_is_e570() (machine_arch_type == MACH_TYPE_E570)
++#else
++# define machine_is_e570() (0)
++#endif
++
++#ifdef CONFIG_MACH_X50
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_X50
++# endif
++# define machine_is_x50() (machine_arch_type == MACH_TYPE_X50)
++#else
++# define machine_is_x50() (0)
++#endif
++
++#ifdef CONFIG_MACH_RECON
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_RECON
++# endif
++# define machine_is_recon() (machine_arch_type == MACH_TYPE_RECON)
++#else
++# define machine_is_recon() (0)
++#endif
++
++#ifdef CONFIG_MACH_XBOARDGP8
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XBOARDGP8
++# endif
++# define machine_is_xboardgp8() (machine_arch_type == MACH_TYPE_XBOARDGP8)
++#else
++# define machine_is_xboardgp8() (0)
++#endif
++
++#ifdef CONFIG_MACH_FPIC2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_FPIC2
++# endif
++# define machine_is_fpic2() (machine_arch_type == MACH_TYPE_FPIC2)
++#else
++# define machine_is_fpic2() (0)
++#endif
++
++#ifdef CONFIG_MACH_AKITA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AKITA
++# endif
++# define machine_is_akita() (machine_arch_type == MACH_TYPE_AKITA)
++#else
++# define machine_is_akita() (0)
++#endif
++
++#ifdef CONFIG_MACH_A81
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_A81
++# endif
++# define machine_is_a81() (machine_arch_type == MACH_TYPE_A81)
++#else
++# define machine_is_a81() (0)
++#endif
++
++#ifdef CONFIG_MACH_SVM_SC25X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SVM_SC25X
++# endif
++# define machine_is_svm_sc25x() (machine_arch_type == MACH_TYPE_SVM_SC25X)
++#else
++# define machine_is_svm_sc25x() (0)
++#endif
++
++#ifdef CONFIG_MACH_VADATECH020
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_VADATECH020
++# endif
++# define machine_is_vt020() (machine_arch_type == MACH_TYPE_VADATECH020)
++#else
++# define machine_is_vt020() (0)
++#endif
++
++#ifdef CONFIG_MACH_TLI
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TLI
++# endif
++# define machine_is_tli() (machine_arch_type == MACH_TYPE_TLI)
++#else
++# define machine_is_tli() (0)
++#endif
++
++#ifdef CONFIG_MACH_EDB9315LC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EDB9315LC
++# endif
++# define machine_is_edb9315lc() (machine_arch_type == MACH_TYPE_EDB9315LC)
++#else
++# define machine_is_edb9315lc() (0)
++#endif
++
++#ifdef CONFIG_MACH_PASSEC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PASSEC
++# endif
++# define machine_is_passec() (machine_arch_type == MACH_TYPE_PASSEC)
++#else
++# define machine_is_passec() (0)
++#endif
++
++#ifdef CONFIG_MACH_DS_TIGER
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DS_TIGER
++# endif
++# define machine_is_ds_tiger() (machine_arch_type == MACH_TYPE_DS_TIGER)
++#else
++# define machine_is_ds_tiger() (0)
++#endif
++
++#ifdef CONFIG_MACH_E310
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_E310
++# endif
++# define machine_is_e310() (machine_arch_type == MACH_TYPE_E310)
++#else
++# define machine_is_e310() (0)
++#endif
++
++#ifdef CONFIG_MACH_E330
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_E330
++# endif
++# define machine_is_e330() (machine_arch_type == MACH_TYPE_E330)
++#else
++# define machine_is_e330() (0)
++#endif
++
++#ifdef CONFIG_MACH_RT3000
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_RT3000
++# endif
++# define machine_is_rt3000() (machine_arch_type == MACH_TYPE_RT3000)
++#else
++# define machine_is_rt3000() (0)
++#endif
++
++#ifdef CONFIG_MACH_NOKIA770
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NOKIA770
++# endif
++# define machine_is_nokia770() (machine_arch_type == MACH_TYPE_NOKIA770)
++#else
++# define machine_is_nokia770() (0)
++#endif
++
++#ifdef CONFIG_MACH_PNX0106
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PNX0106
++# endif
++# define machine_is_pnx0106() (machine_arch_type == MACH_TYPE_PNX0106)
++#else
++# define machine_is_pnx0106() (0)
++#endif
++
++#ifdef CONFIG_MACH_HX21XX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HX21XX
++# endif
++# define machine_is_hx21xx() (machine_arch_type == MACH_TYPE_HX21XX)
++#else
++# define machine_is_hx21xx() (0)
++#endif
++
++#ifdef CONFIG_MACH_FARADAY
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_FARADAY
++# endif
++# define machine_is_faraday() (machine_arch_type == MACH_TYPE_FARADAY)
++#else
++# define machine_is_faraday() (0)
++#endif
++
++#ifdef CONFIG_MACH_SBC9312
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SBC9312
++# endif
++# define machine_is_sbc9312() (machine_arch_type == MACH_TYPE_SBC9312)
++#else
++# define machine_is_sbc9312() (0)
++#endif
++
++#ifdef CONFIG_MACH_BATMAN
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BATMAN
++# endif
++# define machine_is_batman() (machine_arch_type == MACH_TYPE_BATMAN)
++#else
++# define machine_is_batman() (0)
++#endif
++
++#ifdef CONFIG_MACH_JPD201
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_JPD201
++# endif
++# define machine_is_jpd201() (machine_arch_type == MACH_TYPE_JPD201)
++#else
++# define machine_is_jpd201() (0)
++#endif
++
++#ifdef CONFIG_MACH_MIPSA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MIPSA
++# endif
++# define machine_is_mipsa() (machine_arch_type == MACH_TYPE_MIPSA)
++#else
++# define machine_is_mipsa() (0)
++#endif
++
++#ifdef CONFIG_MACH_KACOM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_KACOM
++# endif
++# define machine_is_kacom() (machine_arch_type == MACH_TYPE_KACOM)
++#else
++# define machine_is_kacom() (0)
++#endif
++
++#ifdef CONFIG_MACH_SWARCOCPU
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SWARCOCPU
++# endif
++# define machine_is_swarcocpu() (machine_arch_type == MACH_TYPE_SWARCOCPU)
++#else
++# define machine_is_swarcocpu() (0)
++#endif
++
++#ifdef CONFIG_MACH_SWARCODSL
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SWARCODSL
++# endif
++# define machine_is_swarcodsl() (machine_arch_type == MACH_TYPE_SWARCODSL)
++#else
++# define machine_is_swarcodsl() (0)
++#endif
++
++#ifdef CONFIG_MACH_BLUEANGEL
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BLUEANGEL
++# endif
++# define machine_is_blueangel() (machine_arch_type == MACH_TYPE_BLUEANGEL)
++#else
++# define machine_is_blueangel() (0)
++#endif
++
++#ifdef CONFIG_MACH_HAIRYGRAMA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HAIRYGRAMA
++# endif
++# define machine_is_hairygrama() (machine_arch_type == MACH_TYPE_HAIRYGRAMA)
++#else
++# define machine_is_hairygrama() (0)
++#endif
++
++#ifdef CONFIG_MACH_BANFF
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BANFF
++# endif
++# define machine_is_banff() (machine_arch_type == MACH_TYPE_BANFF)
++#else
++# define machine_is_banff() (0)
++#endif
++
++#ifdef CONFIG_MACH_CARMEVA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CARMEVA
++# endif
++# define machine_is_carmeva() (machine_arch_type == MACH_TYPE_CARMEVA)
++#else
++# define machine_is_carmeva() (0)
++#endif
++
++#ifdef CONFIG_MACH_SAM255
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SAM255
++# endif
++# define machine_is_sam255() (machine_arch_type == MACH_TYPE_SAM255)
++#else
++# define machine_is_sam255() (0)
++#endif
++
++#ifdef CONFIG_MACH_PPM10
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PPM10
++# endif
++# define machine_is_ppm10() (machine_arch_type == MACH_TYPE_PPM10)
++#else
++# define machine_is_ppm10() (0)
++#endif
++
++#ifdef CONFIG_MACH_EDB9315A
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EDB9315A
++# endif
++# define machine_is_edb9315a() (machine_arch_type == MACH_TYPE_EDB9315A)
++#else
++# define machine_is_edb9315a() (0)
++#endif
++
++#ifdef CONFIG_MACH_SUNSET
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SUNSET
++# endif
++# define machine_is_sunset() (machine_arch_type == MACH_TYPE_SUNSET)
++#else
++# define machine_is_sunset() (0)
++#endif
++
++#ifdef CONFIG_MACH_STARGATE2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_STARGATE2
++# endif
++# define machine_is_stargate2() (machine_arch_type == MACH_TYPE_STARGATE2)
++#else
++# define machine_is_stargate2() (0)
++#endif
++
++#ifdef CONFIG_MACH_INTELMOTE2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_INTELMOTE2
++# endif
++# define machine_is_intelmote2() (machine_arch_type == MACH_TYPE_INTELMOTE2)
++#else
++# define machine_is_intelmote2() (0)
++#endif
++
++#ifdef CONFIG_MACH_TRIZEPS4
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TRIZEPS4
++# endif
++# define machine_is_trizeps4() (machine_arch_type == MACH_TYPE_TRIZEPS4)
++#else
++# define machine_is_trizeps4() (0)
++#endif
++
++#ifdef CONFIG_MACH_MAINSTONE2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MAINSTONE2
++# endif
++# define machine_is_mainstone2() (machine_arch_type == MACH_TYPE_MAINSTONE2)
++#else
++# define machine_is_mainstone2() (0)
++#endif
++
++#ifdef CONFIG_MACH_EZ_IXP42X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EZ_IXP42X
++# endif
++# define machine_is_ez_ixp42x() (machine_arch_type == MACH_TYPE_EZ_IXP42X)
++#else
++# define machine_is_ez_ixp42x() (0)
++#endif
++
++#ifdef CONFIG_MACH_TAPWAVE_ZODIAC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TAPWAVE_ZODIAC
++# endif
++# define machine_is_tapwave_zodiac() (machine_arch_type == MACH_TYPE_TAPWAVE_ZODIAC)
++#else
++# define machine_is_tapwave_zodiac() (0)
++#endif
++
++#ifdef CONFIG_MACH_UNIVERSALMETER
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_UNIVERSALMETER
++# endif
++# define machine_is_universalmeter() (machine_arch_type == MACH_TYPE_UNIVERSALMETER)
++#else
++# define machine_is_universalmeter() (0)
++#endif
++
++#ifdef CONFIG_MACH_HICOARM9
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HICOARM9
++# endif
++# define machine_is_hicoarm9() (machine_arch_type == MACH_TYPE_HICOARM9)
++#else
++# define machine_is_hicoarm9() (0)
++#endif
++
++#ifdef CONFIG_MACH_PNX4008
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PNX4008
++# endif
++# define machine_is_pnx4008() (machine_arch_type == MACH_TYPE_PNX4008)
++#else
++# define machine_is_pnx4008() (0)
++#endif
++
++#ifdef CONFIG_MACH_KWS6000
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_KWS6000
++# endif
++# define machine_is_kws6000() (machine_arch_type == MACH_TYPE_KWS6000)
++#else
++# define machine_is_kws6000() (0)
++#endif
++
++#ifdef CONFIG_MACH_PORTUX920T
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PORTUX920T
++# endif
++# define machine_is_portux920t() (machine_arch_type == MACH_TYPE_PORTUX920T)
++#else
++# define machine_is_portux920t() (0)
++#endif
++
++#ifdef CONFIG_MACH_EZ_X5
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EZ_X5
++# endif
++# define machine_is_ez_x5() (machine_arch_type == MACH_TYPE_EZ_X5)
++#else
++# define machine_is_ez_x5() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_RUDOLPH
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_RUDOLPH
++# endif
++# define machine_is_omap_rudolph() (machine_arch_type == MACH_TYPE_OMAP_RUDOLPH)
++#else
++# define machine_is_omap_rudolph() (0)
++#endif
++
++#ifdef CONFIG_MACH_CPUAT91
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CPUAT91
++# endif
++# define machine_is_cpuat91() (machine_arch_type == MACH_TYPE_CPUAT91)
++#else
++# define machine_is_cpuat91() (0)
++#endif
++
++#ifdef CONFIG_MACH_REA9200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_REA9200
++# endif
++# define machine_is_rea9200() (machine_arch_type == MACH_TYPE_REA9200)
++#else
++# define machine_is_rea9200() (0)
++#endif
++
++#ifdef CONFIG_MACH_ACTS_PUNE_SA1110
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ACTS_PUNE_SA1110
++# endif
++# define machine_is_acts_pune_sa1110() (machine_arch_type == MACH_TYPE_ACTS_PUNE_SA1110)
++#else
++# define machine_is_acts_pune_sa1110() (0)
++#endif
++
++#ifdef CONFIG_MACH_IXP425
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IXP425
++# endif
++# define machine_is_ixp425() (machine_arch_type == MACH_TYPE_IXP425)
++#else
++# define machine_is_ixp425() (0)
++#endif
++
++#ifdef CONFIG_MACH_ARGONPLUSODYSSEY
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ARGONPLUSODYSSEY
++# endif
++# define machine_is_i30030ads() (machine_arch_type == MACH_TYPE_ARGONPLUSODYSSEY)
++#else
++# define machine_is_i30030ads() (0)
++#endif
++
++#ifdef CONFIG_MACH_PERCH
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PERCH
++# endif
++# define machine_is_perch() (machine_arch_type == MACH_TYPE_PERCH)
++#else
++# define machine_is_perch() (0)
++#endif
++
++#ifdef CONFIG_MACH_EIS05R1
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EIS05R1
++# endif
++# define machine_is_eis05r1() (machine_arch_type == MACH_TYPE_EIS05R1)
++#else
++# define machine_is_eis05r1() (0)
++#endif
++
++#ifdef CONFIG_MACH_PEPPERPAD
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PEPPERPAD
++# endif
++# define machine_is_pepperpad() (machine_arch_type == MACH_TYPE_PEPPERPAD)
++#else
++# define machine_is_pepperpad() (0)
++#endif
++
++#ifdef CONFIG_MACH_SB3010
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SB3010
++# endif
++# define machine_is_sb3010() (machine_arch_type == MACH_TYPE_SB3010)
++#else
++# define machine_is_sb3010() (0)
++#endif
++
++#ifdef CONFIG_MACH_RM9200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_RM9200
++# endif
++# define machine_is_rm9200() (machine_arch_type == MACH_TYPE_RM9200)
++#else
++# define machine_is_rm9200() (0)
++#endif
++
++#ifdef CONFIG_MACH_DMA03
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DMA03
++# endif
++# define machine_is_dma03() (machine_arch_type == MACH_TYPE_DMA03)
++#else
++# define machine_is_dma03() (0)
++#endif
++
++#ifdef CONFIG_MACH_ROAD_S101
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ROAD_S101
++# endif
++# define machine_is_road_s101() (machine_arch_type == MACH_TYPE_ROAD_S101)
++#else
++# define machine_is_road_s101() (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_A
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_A
++# endif
++# define machine_is_iq_nextgen_a() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_A)
++#else
++# define machine_is_iq_nextgen_a() (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_B
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_B
++# endif
++# define machine_is_iq_nextgen_b() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_B)
++#else
++# define machine_is_iq_nextgen_b() (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_C
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_C
++# endif
++# define machine_is_iq_nextgen_c() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_C)
++#else
++# define machine_is_iq_nextgen_c() (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_D
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_D
++# endif
++# define machine_is_iq_nextgen_d() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_D)
++#else
++# define machine_is_iq_nextgen_d() (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_E
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_E
++# endif
++# define machine_is_iq_nextgen_e() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_E)
++#else
++# define machine_is_iq_nextgen_e() (0)
++#endif
++
++#ifdef CONFIG_MACH_MALLOW_AT91
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MALLOW_AT91
++# endif
++# define machine_is_mallow_at91() (machine_arch_type == MACH_TYPE_MALLOW_AT91)
++#else
++# define machine_is_mallow_at91() (0)
++#endif
++
++#ifdef CONFIG_MACH_CYBERTRACKER_I
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CYBERTRACKER_I
++# endif
++# define machine_is_cybertracker_i() (machine_arch_type == MACH_TYPE_CYBERTRACKER_I)
++#else
++# define machine_is_cybertracker_i() (0)
++#endif
++
++#ifdef CONFIG_MACH_GESBC931X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_GESBC931X
++# endif
++# define machine_is_gesbc931x() (machine_arch_type == MACH_TYPE_GESBC931X)
++#else
++# define machine_is_gesbc931x() (0)
++#endif
++
++#ifdef CONFIG_MACH_CENTIPAD
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CENTIPAD
++# endif
++# define machine_is_centipad() (machine_arch_type == MACH_TYPE_CENTIPAD)
++#else
++# define machine_is_centipad() (0)
++#endif
++
++#ifdef CONFIG_MACH_ARMSOC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ARMSOC
++# endif
++# define machine_is_armsoc() (machine_arch_type == MACH_TYPE_ARMSOC)
++#else
++# define machine_is_armsoc() (0)
++#endif
++
++#ifdef CONFIG_MACH_SE4200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SE4200
++# endif
++# define machine_is_se4200() (machine_arch_type == MACH_TYPE_SE4200)
++#else
++# define machine_is_se4200() (0)
++#endif
++
++#ifdef CONFIG_MACH_EMS197A
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EMS197A
++# endif
++# define machine_is_ems197a() (machine_arch_type == MACH_TYPE_EMS197A)
++#else
++# define machine_is_ems197a() (0)
++#endif
++
++#ifdef CONFIG_MACH_MICRO9
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MICRO9
++# endif
++# define machine_is_micro9() (machine_arch_type == MACH_TYPE_MICRO9)
++#else
++# define machine_is_micro9() (0)
++#endif
++
++#ifdef CONFIG_MACH_MICRO9L
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MICRO9L
++# endif
++# define machine_is_micro9l() (machine_arch_type == MACH_TYPE_MICRO9L)
++#else
++# define machine_is_micro9l() (0)
++#endif
++
++#ifdef CONFIG_MACH_UC5471DSP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_UC5471DSP
++# endif
++# define machine_is_uc5471dsp() (machine_arch_type == MACH_TYPE_UC5471DSP)
++#else
++# define machine_is_uc5471dsp() (0)
++#endif
++
++#ifdef CONFIG_MACH_SJ5471ENG
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SJ5471ENG
++# endif
++# define machine_is_sj5471eng() (machine_arch_type == MACH_TYPE_SJ5471ENG)
++#else
++# define machine_is_sj5471eng() (0)
++#endif
++
++#ifdef CONFIG_MACH_CMPXA26X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CMPXA26X
++# endif
++# define machine_is_none() (machine_arch_type == MACH_TYPE_CMPXA26X)
++#else
++# define machine_is_none() (0)
++#endif
++
++#ifdef CONFIG_MACH_NC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NC
++# endif
++# define machine_is_nc1() (machine_arch_type == MACH_TYPE_NC)
++#else
++# define machine_is_nc1() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_PALMTE
++# endif
++# define machine_is_omap_palmte() (machine_arch_type == MACH_TYPE_OMAP_PALMTE)
++#else
++# define machine_is_omap_palmte() (0)
++#endif
++
++#ifdef CONFIG_MACH_AJAX52X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AJAX52X
++# endif
++# define machine_is_ajax52x() (machine_arch_type == MACH_TYPE_AJAX52X)
++#else
++# define machine_is_ajax52x() (0)
++#endif
++
++#ifdef CONFIG_MACH_SIRIUSTAR
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SIRIUSTAR
++# endif
++# define machine_is_siriustar() (machine_arch_type == MACH_TYPE_SIRIUSTAR)
++#else
++# define machine_is_siriustar() (0)
++#endif
++
++#ifdef CONFIG_MACH_IODATA_HDLG
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IODATA_HDLG
++# endif
++# define machine_is_iodata_hdlg() (machine_arch_type == MACH_TYPE_IODATA_HDLG)
++#else
++# define machine_is_iodata_hdlg() (0)
++#endif
++
++#ifdef CONFIG_MACH_AT91RM9200UTL
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AT91RM9200UTL
++# endif
++# define machine_is_at91rm9200utl() (machine_arch_type == MACH_TYPE_AT91RM9200UTL)
++#else
++# define machine_is_at91rm9200utl() (0)
++#endif
++
++#ifdef CONFIG_MACH_BIOSAFE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BIOSAFE
++# endif
++# define machine_is_biosafe() (machine_arch_type == MACH_TYPE_BIOSAFE)
++#else
++# define machine_is_biosafe() (0)
++#endif
++
++#ifdef CONFIG_MACH_MP1000
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MP1000
++# endif
++# define machine_is_mp1000() (machine_arch_type == MACH_TYPE_MP1000)
++#else
++# define machine_is_mp1000() (0)
++#endif
++
++#ifdef CONFIG_MACH_PARSY
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PARSY
++# endif
++# define machine_is_parsy() (machine_arch_type == MACH_TYPE_PARSY)
++#else
++# define machine_is_parsy() (0)
++#endif
++
++#ifdef CONFIG_MACH_CCXP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CCXP
++# endif
++# define machine_is_ccxp270() (machine_arch_type == MACH_TYPE_CCXP)
++#else
++# define machine_is_ccxp270() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_GSAMPLE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_GSAMPLE
++# endif
++# define machine_is_omap_gsample() (machine_arch_type == MACH_TYPE_OMAP_GSAMPLE)
++#else
++# define machine_is_omap_gsample() (0)
++#endif
++
++#ifdef CONFIG_MACH_REALVIEW_EB
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_REALVIEW_EB
++# endif
++# define machine_is_realview_eb() (machine_arch_type == MACH_TYPE_REALVIEW_EB)
++#else
++# define machine_is_realview_eb() (0)
++#endif
++
++#ifdef CONFIG_MACH_SAMOA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SAMOA
++# endif
++# define machine_is_samoa() (machine_arch_type == MACH_TYPE_SAMOA)
++#else
++# define machine_is_samoa() (0)
++#endif
++
++#ifdef CONFIG_MACH_T3XSCALE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_T3XSCALE
++# endif
++# define machine_is_t3xscale() (machine_arch_type == MACH_TYPE_T3XSCALE)
++#else
++# define machine_is_t3xscale() (0)
++#endif
++
++#ifdef CONFIG_MACH_I878
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_I878
++# endif
++# define machine_is_i878() (machine_arch_type == MACH_TYPE_I878)
++#else
++# define machine_is_i878() (0)
++#endif
++
++#ifdef CONFIG_MACH_BORZOI
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BORZOI
++# endif
++# define machine_is_borzoi() (machine_arch_type == MACH_TYPE_BORZOI)
++#else
++# define machine_is_borzoi() (0)
++#endif
++
++#ifdef CONFIG_MACH_GECKO
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_GECKO
++# endif
++# define machine_is_gecko() (machine_arch_type == MACH_TYPE_GECKO)
++#else
++# define machine_is_gecko() (0)
++#endif
++
++#ifdef CONFIG_MACH_DS101
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DS101
++# endif
++# define machine_is_ds101() (machine_arch_type == MACH_TYPE_DS101)
++#else
++# define machine_is_ds101() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTT2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_PALMTT2
++# endif
++# define machine_is_omap_palmtt2() (machine_arch_type == MACH_TYPE_OMAP_PALMTT2)
++#else
++# define machine_is_omap_palmtt2() (0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMLD
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XSCALE_PALMLD
++# endif
++# define machine_is_xscale_palmld() (machine_arch_type == MACH_TYPE_XSCALE_PALMLD)
++#else
++# define machine_is_xscale_palmld() (0)
++#endif
++
++#ifdef CONFIG_MACH_CC9C
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CC9C
++# endif
++# define machine_is_cc9c() (machine_arch_type == MACH_TYPE_CC9C)
++#else
++# define machine_is_cc9c() (0)
++#endif
++
++#ifdef CONFIG_MACH_SBC1670
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SBC1670
++# endif
++# define machine_is_sbc1670() (machine_arch_type == MACH_TYPE_SBC1670)
++#else
++# define machine_is_sbc1670() (0)
++#endif
++
++#ifdef CONFIG_MACH_IXDP28X5
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IXDP28X5
++# endif
++# define machine_is_ixdp28x5() (machine_arch_type == MACH_TYPE_IXDP28X5)
++#else
++# define machine_is_ixdp28x5() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTT
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_PALMTT
++# endif
++# define machine_is_omap_palmtt() (machine_arch_type == MACH_TYPE_OMAP_PALMTT)
++#else
++# define machine_is_omap_palmtt() (0)
++#endif
++
++#ifdef CONFIG_MACH_ML696K
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ML696K
++# endif
++# define machine_is_ml696k() (machine_arch_type == MACH_TYPE_ML696K)
++#else
++# define machine_is_ml696k() (0)
++#endif
++
++#ifdef CONFIG_MACH_ARCOM_ZEUS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ARCOM_ZEUS
++# endif
++# define machine_is_arcom_zeus() (machine_arch_type == MACH_TYPE_ARCOM_ZEUS)
++#else
++# define machine_is_arcom_zeus() (0)
++#endif
++
++#ifdef CONFIG_MACH_OSIRIS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OSIRIS
++# endif
++# define machine_is_osiris() (machine_arch_type == MACH_TYPE_OSIRIS)
++#else
++# define machine_is_osiris() (0)
++#endif
++
++#ifdef CONFIG_MACH_MAESTRO
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MAESTRO
++# endif
++# define machine_is_maestro() (machine_arch_type == MACH_TYPE_MAESTRO)
++#else
++# define machine_is_maestro() (0)
++#endif
++
++#ifdef CONFIG_MACH_TUNGE2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TUNGE2
++# endif
++# define machine_is_tunge2() (machine_arch_type == MACH_TYPE_TUNGE2)
++#else
++# define machine_is_tunge2() (0)
++#endif
++
++#ifdef CONFIG_MACH_IXBBM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IXBBM
++# endif
++# define machine_is_ixbbm() (machine_arch_type == MACH_TYPE_IXBBM)
++#else
++# define machine_is_ixbbm() (0)
++#endif
++
++#ifdef CONFIG_MACH_MX27
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MX27
++# endif
++# define machine_is_mx27ads() (machine_arch_type == MACH_TYPE_MX27)
++#else
++# define machine_is_mx27ads() (0)
++#endif
++
++#ifdef CONFIG_MACH_AX8004
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AX8004
++# endif
++# define machine_is_ax8004() (machine_arch_type == MACH_TYPE_AX8004)
++#else
++# define machine_is_ax8004() (0)
++#endif
++
++#ifdef CONFIG_MACH_AT91SAM9261EK
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AT91SAM9261EK
++# endif
++# define machine_is_at91sam9261ek() (machine_arch_type == MACH_TYPE_AT91SAM9261EK)
++#else
++# define machine_is_at91sam9261ek() (0)
++#endif
++
++#ifdef CONFIG_MACH_LOFT
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_LOFT
++# endif
++# define machine_is_loft() (machine_arch_type == MACH_TYPE_LOFT)
++#else
++# define machine_is_loft() (0)
++#endif
++
++#ifdef CONFIG_MACH_MAGPIE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MAGPIE
++# endif
++# define machine_is_magpie() (machine_arch_type == MACH_TYPE_MAGPIE)
++#else
++# define machine_is_magpie() (0)
++#endif
++
++#ifdef CONFIG_MACH_MX21
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MX21
++# endif
++# define machine_is_mx21ads() (machine_arch_type == MACH_TYPE_MX21)
++#else
++# define machine_is_mx21ads() (0)
++#endif
++
++#ifdef CONFIG_MACH_MB87M3400
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MB87M3400
++# endif
++# define machine_is_mb87m3400() (machine_arch_type == MACH_TYPE_MB87M3400)
++#else
++# define machine_is_mb87m3400() (0)
++#endif
++
++#ifdef CONFIG_MACH_MGUARD_DELTA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MGUARD_DELTA
++# endif
++# define machine_is_mguard_delta() (machine_arch_type == MACH_TYPE_MGUARD_DELTA)
++#else
++# define machine_is_mguard_delta() (0)
++#endif
++
++#ifdef CONFIG_MACH_DAVINCI_DVDP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DAVINCI_DVDP
++# endif
++# define machine_is_davinci_dvdp() (machine_arch_type == MACH_TYPE_DAVINCI_DVDP)
++#else
++# define machine_is_davinci_dvdp() (0)
++#endif
++
++#ifdef CONFIG_MACH_HTCUNIVERSAL
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HTCUNIVERSAL
++# endif
++# define machine_is_htcuniversal() (machine_arch_type == MACH_TYPE_HTCUNIVERSAL)
++#else
++# define machine_is_htcuniversal() (0)
++#endif
++
++#ifdef CONFIG_MACH_TPAD
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TPAD
++# endif
++# define machine_is_tpad() (machine_arch_type == MACH_TYPE_TPAD)
++#else
++# define machine_is_tpad() (0)
++#endif
++
++#ifdef CONFIG_MACH_ROVERP3
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ROVERP3
++# endif
++# define machine_is_roverp3() (machine_arch_type == MACH_TYPE_ROVERP3)
++#else
++# define machine_is_roverp3() (0)
++#endif
++
++#ifdef CONFIG_MACH_JORNADA928
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_JORNADA928
++# endif
++# define machine_is_jornada928() (machine_arch_type == MACH_TYPE_JORNADA928)
++#else
++# define machine_is_jornada928() (0)
++#endif
++
++#ifdef CONFIG_MACH_MV88FXX81
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MV88FXX81
++# endif
++# define machine_is_mv88fxx81() (machine_arch_type == MACH_TYPE_MV88FXX81)
++#else
++# define machine_is_mv88fxx81() (0)
++#endif
++
++#ifdef CONFIG_MACH_STMP36XX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_STMP36XX
++# endif
++# define machine_is_stmp36xx() (machine_arch_type == MACH_TYPE_STMP36XX)
++#else
++# define machine_is_stmp36xx() (0)
++#endif
++
++#ifdef CONFIG_MACH_SXNI79524
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SXNI79524
++# endif
++# define machine_is_sxni79524() (machine_arch_type == MACH_TYPE_SXNI79524)
++#else
++# define machine_is_sxni79524() (0)
++#endif
++
++#ifdef CONFIG_MACH_AMS_DELTA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AMS_DELTA
++# endif
++# define machine_is_ams_delta() (machine_arch_type == MACH_TYPE_AMS_DELTA)
++#else
++# define machine_is_ams_delta() (0)
++#endif
++
++#ifdef CONFIG_MACH_URANIUM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_URANIUM
++# endif
++# define machine_is_uranium() (machine_arch_type == MACH_TYPE_URANIUM)
++#else
++# define machine_is_uranium() (0)
++#endif
++
++#ifdef CONFIG_MACH_UCON
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_UCON
++# endif
++# define machine_is_ucon() (machine_arch_type == MACH_TYPE_UCON)
++#else
++# define machine_is_ucon() (0)
++#endif
++
++#ifdef CONFIG_MACH_NAS100D
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NAS100D
++# endif
++# define machine_is_nas100d() (machine_arch_type == MACH_TYPE_NAS100D)
++#else
++# define machine_is_nas100d() (0)
++#endif
++
++#ifdef CONFIG_MACH_L083_1000
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_L083_1000
++# endif
++# define machine_is_l083() (machine_arch_type == MACH_TYPE_L083_1000)
++#else
++# define machine_is_l083() (0)
++#endif
++
++#ifdef CONFIG_MACH_EZX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EZX
++# endif
++# define machine_is_ezx() (machine_arch_type == MACH_TYPE_EZX)
++#else
++# define machine_is_ezx() (0)
++#endif
++
++#ifdef CONFIG_MACH_PNX5220
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PNX5220
++# endif
++# define machine_is_pnx5220() (machine_arch_type == MACH_TYPE_PNX5220)
++#else
++# define machine_is_pnx5220() (0)
++#endif
++
++#ifdef CONFIG_MACH_BUTTE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BUTTE
++# endif
++# define machine_is_butte() (machine_arch_type == MACH_TYPE_BUTTE)
++#else
++# define machine_is_butte() (0)
++#endif
++
++#ifdef CONFIG_MACH_SRM2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SRM2
++# endif
++# define machine_is_srm2() (machine_arch_type == MACH_TYPE_SRM2)
++#else
++# define machine_is_srm2() (0)
++#endif
++
++#ifdef CONFIG_MACH_DSBR
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DSBR
++# endif
++# define machine_is_dsbr() (machine_arch_type == MACH_TYPE_DSBR)
++#else
++# define machine_is_dsbr() (0)
++#endif
++
++#ifdef CONFIG_MACH_CRYSTALBALL
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CRYSTALBALL
++# endif
++# define machine_is_crystalball() (machine_arch_type == MACH_TYPE_CRYSTALBALL)
++#else
++# define machine_is_crystalball() (0)
++#endif
++
++#ifdef CONFIG_MACH_TINYPXA27X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TINYPXA27X
++# endif
++# define machine_is_tinypxa27x() (machine_arch_type == MACH_TYPE_TINYPXA27X)
++#else
++# define machine_is_tinypxa27x() (0)
++#endif
++
++#ifdef CONFIG_MACH_HERBIE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HERBIE
++# endif
++# define machine_is_herbie() (machine_arch_type == MACH_TYPE_HERBIE)
++#else
++# define machine_is_herbie() (0)
++#endif
++
++#ifdef CONFIG_MACH_MAGICIAN
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MAGICIAN
++# endif
++# define machine_is_magician() (machine_arch_type == MACH_TYPE_MAGICIAN)
++#else
++# define machine_is_magician() (0)
++#endif
++
++#ifdef CONFIG_MACH_CM4002
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CM4002
++# endif
++# define machine_is_cm4002() (machine_arch_type == MACH_TYPE_CM4002)
++#else
++# define machine_is_cm4002() (0)
++#endif
++
++#ifdef CONFIG_MACH_B4
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_B4
++# endif
++# define machine_is_b4() (machine_arch_type == MACH_TYPE_B4)
++#else
++# define machine_is_b4() (0)
++#endif
++
++#ifdef CONFIG_MACH_MAUI
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MAUI
++# endif
++# define machine_is_maui() (machine_arch_type == MACH_TYPE_MAUI)
++#else
++# define machine_is_maui() (0)
++#endif
++
++#ifdef CONFIG_MACH_CYBERTRACKER_G
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CYBERTRACKER_G
++# endif
++# define machine_is_cybertracker_g() (machine_arch_type == MACH_TYPE_CYBERTRACKER_G)
++#else
++# define machine_is_cybertracker_g() (0)
++#endif
++
++#ifdef CONFIG_MACH_NXDKN
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NXDKN
++# endif
++# define machine_is_nxdkn() (machine_arch_type == MACH_TYPE_NXDKN)
++#else
++# define machine_is_nxdkn() (0)
++#endif
++
++#ifdef CONFIG_MACH_MIO8390
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MIO8390
++# endif
++# define machine_is_mio8390() (machine_arch_type == MACH_TYPE_MIO8390)
++#else
++# define machine_is_mio8390() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMI_BOARD
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMI_BOARD
++# endif
++# define machine_is_omi_board() (machine_arch_type == MACH_TYPE_OMI_BOARD)
++#else
++# define machine_is_omi_board() (0)
++#endif
++
++#ifdef CONFIG_MACH_MX21CIV
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MX21CIV
++# endif
++# define machine_is_mx21civ() (machine_arch_type == MACH_TYPE_MX21CIV)
++#else
++# define machine_is_mx21civ() (0)
++#endif
++
++#ifdef CONFIG_MACH_MAHI_CDAC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MAHI_CDAC
++# endif
++# define machine_is_mahi_cdac() (machine_arch_type == MACH_TYPE_MAHI_CDAC)
++#else
++# define machine_is_mahi_cdac() (0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMTX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XSCALE_PALMTX
++# endif
++# define machine_is_xscale_palmtx() (machine_arch_type == MACH_TYPE_XSCALE_PALMTX)
++#else
++# define machine_is_xscale_palmtx() (0)
++#endif
++
++#ifdef CONFIG_MACH_S3C2413
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_S3C2413
++# endif
++# define machine_is_s3c2413() (machine_arch_type == MACH_TYPE_S3C2413)
++#else
++# define machine_is_s3c2413() (0)
++#endif
++
++#ifdef CONFIG_MACH_SAMSYS_EP0
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SAMSYS_EP0
++# endif
++# define machine_is_samsys_ep0() (machine_arch_type == MACH_TYPE_SAMSYS_EP0)
++#else
++# define machine_is_samsys_ep0() (0)
++#endif
++
++#ifdef CONFIG_MACH_WG302V1
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_WG302V1
++# endif
++# define machine_is_wg302v1() (machine_arch_type == MACH_TYPE_WG302V1)
++#else
++# define machine_is_wg302v1() (0)
++#endif
++
++#ifdef CONFIG_MACH_WG302V2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_WG302V2
++# endif
++# define machine_is_wg302v2() (machine_arch_type == MACH_TYPE_WG302V2)
++#else
++# define machine_is_wg302v2() (0)
++#endif
++
++#ifdef CONFIG_MACH_EB42X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EB42X
++# endif
++# define machine_is_eb42x() (machine_arch_type == MACH_TYPE_EB42X)
++#else
++# define machine_is_eb42x() (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ331ES
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IQ331ES
++# endif
++# define machine_is_iq331es() (machine_arch_type == MACH_TYPE_IQ331ES)
++#else
++# define machine_is_iq331es() (0)
++#endif
++
++#ifdef CONFIG_MACH_COSYDSP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_COSYDSP
++# endif
++# define machine_is_cosydsp() (machine_arch_type == MACH_TYPE_COSYDSP)
++#else
++# define machine_is_cosydsp() (0)
++#endif
++
++#ifdef CONFIG_MACH_UPLAT7D
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_UPLAT7D
++# endif
++# define machine_is_uplat7d_proto() (machine_arch_type == MACH_TYPE_UPLAT7D)
++#else
++# define machine_is_uplat7d_proto() (0)
++#endif
++
++#ifdef CONFIG_MACH_PTDAVINCI
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PTDAVINCI
++# endif
++# define machine_is_ptdavinci() (machine_arch_type == MACH_TYPE_PTDAVINCI)
++#else
++# define machine_is_ptdavinci() (0)
++#endif
++
++#ifdef CONFIG_MACH_MBUS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MBUS
++# endif
++# define machine_is_mbus() (machine_arch_type == MACH_TYPE_MBUS)
++#else
++# define machine_is_mbus() (0)
++#endif
++
++#ifdef CONFIG_MACH_NADIA2VB
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NADIA2VB
++# endif
++# define machine_is_nadia2vb() (machine_arch_type == MACH_TYPE_NADIA2VB)
++#else
++# define machine_is_nadia2vb() (0)
++#endif
++
++#ifdef CONFIG_MACH_R1000
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_R1000
++# endif
++# define machine_is_r1000() (machine_arch_type == MACH_TYPE_R1000)
++#else
++# define machine_is_r1000() (0)
++#endif
++
++#ifdef CONFIG_MACH_HW90250
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HW90250
++# endif
++# define machine_is_hw90250() (machine_arch_type == MACH_TYPE_HW90250)
++#else
++# define machine_is_hw90250() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_2430SDP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_2430SDP
++# endif
++# define machine_is_omap_2430sdp() (machine_arch_type == MACH_TYPE_OMAP_2430SDP)
++#else
++# define machine_is_omap_2430sdp() (0)
++#endif
++
++#ifdef CONFIG_MACH_DAVINCI_EVM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DAVINCI_EVM
++# endif
++# define machine_is_davinci_evm() (machine_arch_type == MACH_TYPE_DAVINCI_EVM)
++#else
++# define machine_is_davinci_evm() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_TORNADO
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_TORNADO
++# endif
++# define machine_is_omap_tornado() (machine_arch_type == MACH_TYPE_OMAP_TORNADO)
++#else
++# define machine_is_omap_tornado() (0)
++#endif
++
++#ifdef CONFIG_MACH_OLOCREEK
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OLOCREEK
++# endif
++# define machine_is_olocreek() (machine_arch_type == MACH_TYPE_OLOCREEK)
++#else
++# define machine_is_olocreek() (0)
++#endif
++
++#ifdef CONFIG_MACH_PALMZ72
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PALMZ72
++# endif
++# define machine_is_palmz72() (machine_arch_type == MACH_TYPE_PALMZ72)
++#else
++# define machine_is_palmz72() (0)
++#endif
++
++#ifdef CONFIG_MACH_NXDB500
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NXDB500
++# endif
++# define machine_is_nxdb500() (machine_arch_type == MACH_TYPE_NXDB500)
++#else
++# define machine_is_nxdb500() (0)
++#endif
++
++#ifdef CONFIG_MACH_APF9328
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_APF9328
++# endif
++# define machine_is_apf9328() (machine_arch_type == MACH_TYPE_APF9328)
++#else
++# define machine_is_apf9328() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_WIPOQ
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_WIPOQ
++# endif
++# define machine_is_omap_wipoq() (machine_arch_type == MACH_TYPE_OMAP_WIPOQ)
++#else
++# define machine_is_omap_wipoq() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_TWIP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_TWIP
++# endif
++# define machine_is_omap_twip() (machine_arch_type == MACH_TYPE_OMAP_TWIP)
++#else
++# define machine_is_omap_twip() (0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMTREO650
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XSCALE_PALMTREO650
++# endif
++# define machine_is_xscale_treo650() (machine_arch_type == MACH_TYPE_XSCALE_PALMTREO650)
++#else
++# define machine_is_xscale_treo650() (0)
++#endif
++
++#ifdef CONFIG_MACH_ACUMEN
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ACUMEN
++# endif
++# define machine_is_acumen() (machine_arch_type == MACH_TYPE_ACUMEN)
++#else
++# define machine_is_acumen() (0)
++#endif
++
++#ifdef CONFIG_MACH_XP100
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XP100
++# endif
++# define machine_is_xp100() (machine_arch_type == MACH_TYPE_XP100)
++#else
++# define machine_is_xp100() (0)
++#endif
++
++#ifdef CONFIG_MACH_FS2410
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_FS2410
++# endif
++# define machine_is_fs2410() (machine_arch_type == MACH_TYPE_FS2410)
++#else
++# define machine_is_fs2410() (0)
++#endif
++
++#ifdef CONFIG_MACH_PXA270_CERF
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PXA270_CERF
++# endif
++# define machine_is_pxa270_cerf() (machine_arch_type == MACH_TYPE_PXA270_CERF)
++#else
++# define machine_is_pxa270_cerf() (0)
++#endif
++
++#ifdef CONFIG_MACH_SQ2FTLPALM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SQ2FTLPALM
++# endif
++# define machine_is_sq2ftlpalm() (machine_arch_type == MACH_TYPE_SQ2FTLPALM)
++#else
++# define machine_is_sq2ftlpalm() (0)
++#endif
++
++#ifdef CONFIG_MACH_BSEMSERVER
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BSEMSERVER
++# endif
++# define machine_is_bsemserver() (machine_arch_type == MACH_TYPE_BSEMSERVER)
++#else
++# define machine_is_bsemserver() (0)
++#endif
++
++#ifdef CONFIG_MACH_NETCLIENT
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NETCLIENT
++# endif
++# define machine_is_netclient() (machine_arch_type == MACH_TYPE_NETCLIENT)
++#else
++# define machine_is_netclient() (0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMTT5
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XSCALE_PALMTT5
++# endif
++# define machine_is_xscale_palmtt5() (machine_arch_type == MACH_TYPE_XSCALE_PALMTT5)
++#else
++# define machine_is_xscale_palmtt5() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_PALMTC
++# endif
++# define machine_is_xscale_palmtc() (machine_arch_type == MACH_TYPE_OMAP_PALMTC)
++#else
++# define machine_is_xscale_palmtc() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_APOLLON
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_APOLLON
++# endif
++# define machine_is_omap_apollon() (machine_arch_type == MACH_TYPE_OMAP_APOLLON)
++#else
++# define machine_is_omap_apollon() (0)
++#endif
++
++#ifdef CONFIG_MACH_ARGONLVEVB
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ARGONLVEVB
++# endif
++# define machine_is_mxc30030evb() (machine_arch_type == MACH_TYPE_ARGONLVEVB)
++#else
++# define machine_is_mxc30030evb() (0)
++#endif
++
++#ifdef CONFIG_MACH_REA_2D
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_REA_2D
++# endif
++# define machine_is_rea_2d() (machine_arch_type == MACH_TYPE_REA_2D)
++#else
++# define machine_is_rea_2d() (0)
++#endif
++
++#ifdef CONFIG_MACH_TI3E524
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TI3E524
++# endif
++# define machine_is_eti3e524() (machine_arch_type == MACH_TYPE_TI3E524)
++#else
++# define machine_is_eti3e524() (0)
++#endif
++
++#ifdef CONFIG_MACH_ATEB9200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ATEB9200
++# endif
++# define machine_is_ateb9200() (machine_arch_type == MACH_TYPE_ATEB9200)
++#else
++# define machine_is_ateb9200() (0)
++#endif
++
++#ifdef CONFIG_MACH_AUCKLAND
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AUCKLAND
++# endif
++# define machine_is_auckland() (machine_arch_type == MACH_TYPE_AUCKLAND)
++#else
++# define machine_is_auckland() (0)
++#endif
++
++#ifdef CONFIG_MACH_AK3320M
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AK3320M
++# endif
++# define machine_is_ak3220m() (machine_arch_type == MACH_TYPE_AK3320M)
++#else
++# define machine_is_ak3220m() (0)
++#endif
++
++#ifdef CONFIG_MACH_DURAMAX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DURAMAX
++# endif
++# define machine_is_duramax() (machine_arch_type == MACH_TYPE_DURAMAX)
++#else
++# define machine_is_duramax() (0)
++#endif
++
++#ifdef CONFIG_MACH_N35
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_N35
++# endif
++# define machine_is_n35() (machine_arch_type == MACH_TYPE_N35)
++#else
++# define machine_is_n35() (0)
++#endif
++
++#ifdef CONFIG_MACH_PRONGHORN
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PRONGHORN
++# endif
++# define machine_is_pronghorn() (machine_arch_type == MACH_TYPE_PRONGHORN)
++#else
++# define machine_is_pronghorn() (0)
++#endif
++
++#ifdef CONFIG_MACH_FUNDY
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_FUNDY
++# endif
++# define machine_is_fundy() (machine_arch_type == MACH_TYPE_FUNDY)
++#else
++# define machine_is_fundy() (0)
++#endif
++
++#ifdef CONFIG_MACH_LOGICPD_PXA270
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_LOGICPD_PXA270
++# endif
++# define machine_is_logicpd_pxa270() (machine_arch_type == MACH_TYPE_LOGICPD_PXA270)
++#else
++# define machine_is_logicpd_pxa270() (0)
++#endif
++
++#ifdef CONFIG_MACH_CPU777
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CPU777
++# endif
++# define machine_is_cpu777() (machine_arch_type == MACH_TYPE_CPU777)
++#else
++# define machine_is_cpu777() (0)
++#endif
++
++#ifdef CONFIG_MACH_SIMICON9201
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SIMICON9201
++# endif
++# define machine_is_simicon9201() (machine_arch_type == MACH_TYPE_SIMICON9201)
++#else
++# define machine_is_simicon9201() (0)
++#endif
++
++#ifdef CONFIG_MACH_LEAP2_HPM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_LEAP2_HPM
++# endif
++# define machine_is_leap2_hpm() (machine_arch_type == MACH_TYPE_LEAP2_HPM)
++#else
++# define machine_is_leap2_hpm() (0)
++#endif
++
++#ifdef CONFIG_MACH_CM922TXA10
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CM922TXA10
++# endif
++# define machine_is_cm922txa10() (machine_arch_type == MACH_TYPE_CM922TXA10)
++#else
++# define machine_is_cm922txa10() (0)
++#endif
++
++#ifdef CONFIG_MACH_PXA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PXA
++# endif
++# define machine_is_sandgate() (machine_arch_type == MACH_TYPE_PXA)
++#else
++# define machine_is_sandgate() (0)
++#endif
++
++#ifdef CONFIG_MACH_SANDGATE2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SANDGATE2
++# endif
++# define machine_is_sandgate2() (machine_arch_type == MACH_TYPE_SANDGATE2)
++#else
++# define machine_is_sandgate2() (0)
++#endif
++
++#ifdef CONFIG_MACH_SANDGATE2G
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SANDGATE2G
++# endif
++# define machine_is_sandgate2g() (machine_arch_type == MACH_TYPE_SANDGATE2G)
++#else
++# define machine_is_sandgate2g() (0)
++#endif
++
++#ifdef CONFIG_MACH_SANDGATE2P
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SANDGATE2P
++# endif
++# define machine_is_sandgate2p() (machine_arch_type == MACH_TYPE_SANDGATE2P)
++#else
++# define machine_is_sandgate2p() (0)
++#endif
++
++#ifdef CONFIG_MACH_FRED_JACK
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_FRED_JACK
++# endif
++# define machine_is_fred_jack() (machine_arch_type == MACH_TYPE_FRED_JACK)
++#else
++# define machine_is_fred_jack() (0)
++#endif
++
++#ifdef CONFIG_MACH_TTG_COLOR1
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TTG_COLOR1
++# endif
++# define machine_is_ttg_color1() (machine_arch_type == MACH_TYPE_TTG_COLOR1)
++#else
++# define machine_is_ttg_color1() (0)
++#endif
++
++#ifdef CONFIG_MACH_NXEB500HMI
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NXEB500HMI
++# endif
++# define machine_is_nxeb500hmi() (machine_arch_type == MACH_TYPE_NXEB500HMI)
++#else
++# define machine_is_nxeb500hmi() (0)
++#endif
++
++#ifdef CONFIG_MACH_NETDCU8
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NETDCU8
++# endif
++# define machine_is_netdcu8() (machine_arch_type == MACH_TYPE_NETDCU8)
++#else
++# define machine_is_netdcu8() (0)
++#endif
++
++#ifdef CONFIG_MACH_ML675050_CPU_BOA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ML675050_CPU_BOA
++# endif
++# define machine_is_ml675050_cpu_boa() (machine_arch_type == MACH_TYPE_ML675050_CPU_BOA)
++#else
++# define machine_is_ml675050_cpu_boa() (0)
++#endif
++
++#ifdef CONFIG_MACH_NG_FVX538
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NG_FVX538
++# endif
++# define machine_is_ng_fvx538() (machine_arch_type == MACH_TYPE_NG_FVX538)
++#else
++# define machine_is_ng_fvx538() (0)
++#endif
++
++#ifdef CONFIG_MACH_NG_FVS338
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NG_FVS338
++# endif
++# define machine_is_ng_fvs338() (machine_arch_type == MACH_TYPE_NG_FVS338)
++#else
++# define machine_is_ng_fvs338() (0)
++#endif
++
++#ifdef CONFIG_MACH_PNX4103
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PNX4103
++# endif
++# define machine_is_pnx4103() (machine_arch_type == MACH_TYPE_PNX4103)
++#else
++# define machine_is_pnx4103() (0)
++#endif
++
++#ifdef CONFIG_MACH_HESDB
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HESDB
++# endif
++# define machine_is_hesdb() (machine_arch_type == MACH_TYPE_HESDB)
++#else
++# define machine_is_hesdb() (0)
++#endif
++
++#ifdef CONFIG_MACH_XSILO
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XSILO
++# endif
++# define machine_is_xsilo() (machine_arch_type == MACH_TYPE_XSILO)
++#else
++# define machine_is_xsilo() (0)
++#endif
++
++#ifdef CONFIG_MACH_ESPRESSO
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ESPRESSO
++# endif
++# define machine_is_espresso() (machine_arch_type == MACH_TYPE_ESPRESSO)
++#else
++# define machine_is_espresso() (0)
++#endif
++
++#ifdef CONFIG_MACH_EMLC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EMLC
++# endif
++# define machine_is_emlc() (machine_arch_type == MACH_TYPE_EMLC)
++#else
++# define machine_is_emlc() (0)
++#endif
++
++#ifdef CONFIG_MACH_SISTERON
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SISTERON
++# endif
++# define machine_is_sisteron() (machine_arch_type == MACH_TYPE_SISTERON)
++#else
++# define machine_is_sisteron() (0)
++#endif
++
++#ifdef CONFIG_MACH_RX1950
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_RX1950
++# endif
++# define machine_is_rx1950() (machine_arch_type == MACH_TYPE_RX1950)
++#else
++# define machine_is_rx1950() (0)
++#endif
++
++#ifdef CONFIG_MACH_TSC_VENUS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TSC_VENUS
++# endif
++# define machine_is_tsc_venus() (machine_arch_type == MACH_TYPE_TSC_VENUS)
++#else
++# define machine_is_tsc_venus() (0)
++#endif
++
++#ifdef CONFIG_MACH_DS101J
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DS101J
++# endif
++# define machine_is_ds101j() (machine_arch_type == MACH_TYPE_DS101J)
++#else
++# define machine_is_ds101j() (0)
++#endif
++
++#ifdef CONFIG_MACH_MXC30030ADS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MXC30030ADS
++# endif
++# define machine_is_mxc30030ads() (machine_arch_type == MACH_TYPE_MXC30030ADS)
++#else
++# define machine_is_mxc30030ads() (0)
++#endif
++
++#ifdef CONFIG_MACH_FUJITSU_WIMAXSOC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_FUJITSU_WIMAXSOC
++# endif
++# define machine_is_fujitsu_wimaxsoc() (machine_arch_type == MACH_TYPE_FUJITSU_WIMAXSOC)
++#else
++# define machine_is_fujitsu_wimaxsoc() (0)
++#endif
++
++#ifdef CONFIG_MACH_DUALPCMODEM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DUALPCMODEM
++# endif
++# define machine_is_dualpcmodem() (machine_arch_type == MACH_TYPE_DUALPCMODEM)
++#else
++# define machine_is_dualpcmodem() (0)
++#endif
++
++#ifdef CONFIG_MACH_GESBC9312
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_GESBC9312
++# endif
++# define machine_is_gesbc9312() (machine_arch_type == MACH_TYPE_GESBC9312)
++#else
++# define machine_is_gesbc9312() (0)
++#endif
++
++#ifdef CONFIG_MACH_HTCAPACHE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HTCAPACHE
++# endif
++# define machine_is_htcapache() (machine_arch_type == MACH_TYPE_HTCAPACHE)
++#else
++# define machine_is_htcapache() (0)
++#endif
++
++#ifdef CONFIG_MACH_IXDP435
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IXDP435
++# endif
++# define machine_is_ixdp435() (machine_arch_type == MACH_TYPE_IXDP435)
++#else
++# define machine_is_ixdp435() (0)
++#endif
++
++#ifdef CONFIG_MACH_CATPROVT100
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CATPROVT100
++# endif
++# define machine_is_catprovt100() (machine_arch_type == MACH_TYPE_CATPROVT100)
++#else
++# define machine_is_catprovt100() (0)
++#endif
++
++#ifdef CONFIG_MACH_PICOTUX1XX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PICOTUX1XX
++# endif
++# define machine_is_picotux1xx() (machine_arch_type == MACH_TYPE_PICOTUX1XX)
++#else
++# define machine_is_picotux1xx() (0)
++#endif
++
++#ifdef CONFIG_MACH_PICOTUX2XX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PICOTUX2XX
++# endif
++# define machine_is_picotux2xx() (machine_arch_type == MACH_TYPE_PICOTUX2XX)
++#else
++# define machine_is_picotux2xx() (0)
++#endif
++
++#ifdef CONFIG_MACH_DSMG600
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DSMG600
++# endif
++# define machine_is_dsmg600() (machine_arch_type == MACH_TYPE_DSMG600)
++#else
++# define machine_is_dsmg600() (0)
++#endif
++
++#ifdef CONFIG_MACH_EMPC2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EMPC2
++# endif
++# define machine_is_empc2() (machine_arch_type == MACH_TYPE_EMPC2)
++#else
++# define machine_is_empc2() (0)
++#endif
++
++#ifdef CONFIG_MACH_VENTURA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_VENTURA
++# endif
++# define machine_is_ventura() (machine_arch_type == MACH_TYPE_VENTURA)
++#else
++# define machine_is_ventura() (0)
++#endif
++
++#ifdef CONFIG_MACH_PHIDGET_SBC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PHIDGET_SBC
++# endif
++# define machine_is_phidget_sbc() (machine_arch_type == MACH_TYPE_PHIDGET_SBC)
++#else
++# define machine_is_phidget_sbc() (0)
++#endif
++
++#ifdef CONFIG_MACH_IJ3K
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IJ3K
++# endif
++# define machine_is_ij3k() (machine_arch_type == MACH_TYPE_IJ3K)
++#else
++# define machine_is_ij3k() (0)
++#endif
++
++#ifdef CONFIG_MACH_PISGAH
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PISGAH
++# endif
++# define machine_is_pisgah() (machine_arch_type == MACH_TYPE_PISGAH)
++#else
++# define machine_is_pisgah() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_FSAMPLE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_FSAMPLE
++# endif
++# define machine_is_omap_fsample() (machine_arch_type == MACH_TYPE_OMAP_FSAMPLE)
++#else
++# define machine_is_omap_fsample() (0)
++#endif
++
++#ifdef CONFIG_MACH_SG720
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SG720
++# endif
++# define machine_is_sg720() (machine_arch_type == MACH_TYPE_SG720)
++#else
++# define machine_is_sg720() (0)
++#endif
++
++#ifdef CONFIG_MACH_REDFOX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_REDFOX
++# endif
++# define machine_is_redfox() (machine_arch_type == MACH_TYPE_REDFOX)
++#else
++# define machine_is_redfox() (0)
++#endif
++
++#ifdef CONFIG_MACH_MYSH_EP9315_1
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MYSH_EP9315_1
++# endif
++# define machine_is_mysh_ep9315_1() (machine_arch_type == MACH_TYPE_MYSH_EP9315_1)
++#else
++# define machine_is_mysh_ep9315_1() (0)
++#endif
++
++#ifdef CONFIG_MACH_TPF106
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TPF106
++# endif
++# define machine_is_tpf106() (machine_arch_type == MACH_TYPE_TPF106)
++#else
++# define machine_is_tpf106() (0)
++#endif
++
++#ifdef CONFIG_MACH_AT91RM9200KG
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AT91RM9200KG
++# endif
++# define machine_is_at91rm9200kg() (machine_arch_type == MACH_TYPE_AT91RM9200KG)
++#else
++# define machine_is_at91rm9200kg() (0)
++#endif
++
++#ifdef CONFIG_MACH_SLEDB
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SLEDB
++# endif
++# define machine_is_racemt2() (machine_arch_type == MACH_TYPE_SLEDB)
++#else
++# define machine_is_racemt2() (0)
++#endif
++
++#ifdef CONFIG_MACH_ONTRACK
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ONTRACK
++# endif
++# define machine_is_ontrack() (machine_arch_type == MACH_TYPE_ONTRACK)
++#else
++# define machine_is_ontrack() (0)
++#endif
++
++#ifdef CONFIG_MACH_PM1200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PM1200
++# endif
++# define machine_is_pm1200() (machine_arch_type == MACH_TYPE_PM1200)
++#else
++# define machine_is_pm1200() (0)
++#endif
++
++#ifdef CONFIG_MACH_ESS24XXX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ESS24XXX
++# endif
++# define machine_is_ess24562() (machine_arch_type == MACH_TYPE_ESS24XXX)
++#else
++# define machine_is_ess24562() (0)
++#endif
++
++#ifdef CONFIG_MACH_COREMP7
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_COREMP7
++# endif
++# define machine_is_coremp7() (machine_arch_type == MACH_TYPE_COREMP7)
++#else
++# define machine_is_coremp7() (0)
++#endif
++
++#ifdef CONFIG_MACH_NEXCODER_6446
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NEXCODER_6446
++# endif
++# define machine_is_nexcoder_6446() (machine_arch_type == MACH_TYPE_NEXCODER_6446)
++#else
++# define machine_is_nexcoder_6446() (0)
++#endif
++
++#ifdef CONFIG_MACH_STVC8380
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_STVC8380
++# endif
++# define machine_is_stvc8380() (machine_arch_type == MACH_TYPE_STVC8380)
++#else
++# define machine_is_stvc8380() (0)
++#endif
++
++#ifdef CONFIG_MACH_TEKLYNX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TEKLYNX
++# endif
++# define machine_is_teklynx() (machine_arch_type == MACH_TYPE_TEKLYNX)
++#else
++# define machine_is_teklynx() (0)
++#endif
++
++#ifdef CONFIG_MACH_CARBONADO
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CARBONADO
++# endif
++# define machine_is_carbonado() (machine_arch_type == MACH_TYPE_CARBONADO)
++#else
++# define machine_is_carbonado() (0)
++#endif
++
++#ifdef CONFIG_MACH_SYSMOS_MP730
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SYSMOS_MP730
++# endif
++# define machine_is_sysmos_mp730() (machine_arch_type == MACH_TYPE_SYSMOS_MP730)
++#else
++# define machine_is_sysmos_mp730() (0)
++#endif
++
++#ifdef CONFIG_MACH_SNAPPER_CL15
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SNAPPER_CL15
++# endif
++# define machine_is_snapper_cl15() (machine_arch_type == MACH_TYPE_SNAPPER_CL15)
++#else
++# define machine_is_snapper_cl15() (0)
++#endif
++
++#ifdef CONFIG_MACH_PGIGIM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PGIGIM
++# endif
++# define machine_is_pgigim() (machine_arch_type == MACH_TYPE_PGIGIM)
++#else
++# define machine_is_pgigim() (0)
++#endif
++
++#ifdef CONFIG_MACH_PTX9160P2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PTX9160P2
++# endif
++# define machine_is_ptx9160p2() (machine_arch_type == MACH_TYPE_PTX9160P2)
++#else
++# define machine_is_ptx9160p2() (0)
++#endif
++
++#ifdef CONFIG_MACH_DCORE1
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DCORE1
++# endif
++# define machine_is_dcore1() (machine_arch_type == MACH_TYPE_DCORE1)
++#else
++# define machine_is_dcore1() (0)
++#endif
++
++#ifdef CONFIG_MACH_VICTORPXA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_VICTORPXA
++# endif
++# define machine_is_victorpxa() (machine_arch_type == MACH_TYPE_VICTORPXA)
++#else
++# define machine_is_victorpxa() (0)
++#endif
++
++#ifdef CONFIG_MACH_MX2DTB
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MX2DTB
++# endif
++# define machine_is_mx2dtb() (machine_arch_type == MACH_TYPE_MX2DTB)
++#else
++# define machine_is_mx2dtb() (0)
++#endif
++
++#ifdef CONFIG_MACH_PXA_IREX_ER0100
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PXA_IREX_ER0100
++# endif
++# define machine_is_pxa_irex_er0100() (machine_arch_type == MACH_TYPE_PXA_IREX_ER0100)
++#else
++# define machine_is_pxa_irex_er0100() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMZ71
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_PALMZ71
++# endif
++# define machine_is_omap_palmz71() (machine_arch_type == MACH_TYPE_OMAP_PALMZ71)
++#else
++# define machine_is_omap_palmz71() (0)
++#endif
++
++#ifdef CONFIG_MACH_BARTEC_DEG
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BARTEC_DEG
++# endif
++# define machine_is_bartec_deg() (machine_arch_type == MACH_TYPE_BARTEC_DEG)
++#else
++# define machine_is_bartec_deg() (0)
++#endif
++
++#ifdef CONFIG_MACH_HW50251
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HW50251
++# endif
++# define machine_is_hw50251() (machine_arch_type == MACH_TYPE_HW50251)
++#else
++# define machine_is_hw50251() (0)
++#endif
++
++#ifdef CONFIG_MACH_IBOX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IBOX
++# endif
++# define machine_is_ibox() (machine_arch_type == MACH_TYPE_IBOX)
++#else
++# define machine_is_ibox() (0)
++#endif
++
++#ifdef CONFIG_MACH_ATLASLH7A404
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ATLASLH7A404
++# endif
++# define machine_is_atlaslh7a404() (machine_arch_type == MACH_TYPE_ATLASLH7A404)
++#else
++# define machine_is_atlaslh7a404() (0)
++#endif
++
++#ifdef CONFIG_MACH_PT2026
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PT2026
++# endif
++# define machine_is_pt2026() (machine_arch_type == MACH_TYPE_PT2026)
++#else
++# define machine_is_pt2026() (0)
++#endif
++
++#ifdef CONFIG_MACH_HTCALPINE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HTCALPINE
++# endif
++# define machine_is_htcalpine() (machine_arch_type == MACH_TYPE_HTCALPINE)
++#else
++# define machine_is_htcalpine() (0)
++#endif
++
++#ifdef CONFIG_MACH_BARTEC_VTU
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BARTEC_VTU
++# endif
++# define machine_is_bartec_vtu() (machine_arch_type == MACH_TYPE_BARTEC_VTU)
++#else
++# define machine_is_bartec_vtu() (0)
++#endif
++
++#ifdef CONFIG_MACH_VCOREII
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_VCOREII
++# endif
++# define machine_is_vcoreii() (machine_arch_type == MACH_TYPE_VCOREII)
++#else
++# define machine_is_vcoreii() (0)
++#endif
++
++#ifdef CONFIG_MACH_PDNB3
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PDNB3
++# endif
++# define machine_is_pdnb3() (machine_arch_type == MACH_TYPE_PDNB3)
++#else
++# define machine_is_pdnb3() (0)
++#endif
++
++#ifdef CONFIG_MACH_HTCBEETLES
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HTCBEETLES
++# endif
++# define machine_is_htcbeetles() (machine_arch_type == MACH_TYPE_HTCBEETLES)
++#else
++# define machine_is_htcbeetles() (0)
++#endif
++
++#ifdef CONFIG_MACH_S3C6400
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_S3C6400
++# endif
++# define machine_is_s3c6400() (machine_arch_type == MACH_TYPE_S3C6400)
++#else
++# define machine_is_s3c6400() (0)
++#endif
++
++#ifdef CONFIG_MACH_S3C2443
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_S3C2443
++# endif
++# define machine_is_s3c2443() (machine_arch_type == MACH_TYPE_S3C2443)
++#else
++# define machine_is_s3c2443() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_LDK
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_LDK
++# endif
++# define machine_is_omap_ldk() (machine_arch_type == MACH_TYPE_OMAP_LDK)
++#else
++# define machine_is_omap_ldk() (0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2460
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SMDK2460
++# endif
++# define machine_is_smdk2460() (machine_arch_type == MACH_TYPE_SMDK2460)
++#else
++# define machine_is_smdk2460() (0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2440
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SMDK2440
++# endif
++# define machine_is_smdk2440() (machine_arch_type == MACH_TYPE_SMDK2440)
++#else
++# define machine_is_smdk2440() (0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2412
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SMDK2412
++# endif
++# define machine_is_smdk2412() (machine_arch_type == MACH_TYPE_SMDK2412)
++#else
++# define machine_is_smdk2412() (0)
++#endif
++
++#ifdef CONFIG_MACH_WEBBOX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_WEBBOX
++# endif
++# define machine_is_webbox() (machine_arch_type == MACH_TYPE_WEBBOX)
++#else
++# define machine_is_webbox() (0)
++#endif
++
++#ifdef CONFIG_MACH_CWWNDP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CWWNDP
++# endif
++# define machine_is_cwwndp() (machine_arch_type == MACH_TYPE_CWWNDP)
++#else
++# define machine_is_cwwndp() (0)
++#endif
++
++#ifdef CONFIG_MACH_DRAGON
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DRAGON
++# endif
++# define machine_is_dragon() (machine_arch_type == MACH_TYPE_DRAGON)
++#else
++# define machine_is_dragon() (0)
++#endif
++
++#ifdef CONFIG_MACH_OPENDO_CPU_BOARD
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OPENDO_CPU_BOARD
++# endif
++# define machine_is_opendo_cpu_board() (machine_arch_type == MACH_TYPE_OPENDO_CPU_BOARD)
++#else
++# define machine_is_opendo_cpu_board() (0)
++#endif
++
++#ifdef CONFIG_MACH_CCM2200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CCM2200
++# endif
++# define machine_is_ccm2200() (machine_arch_type == MACH_TYPE_CCM2200)
++#else
++# define machine_is_ccm2200() (0)
++#endif
++
++#ifdef CONFIG_MACH_ETWARM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ETWARM
++# endif
++# define machine_is_etwarm() (machine_arch_type == MACH_TYPE_ETWARM)
++#else
++# define machine_is_etwarm() (0)
++#endif
++
++#ifdef CONFIG_MACH_M93030
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_M93030
++# endif
++# define machine_is_m93030() (machine_arch_type == MACH_TYPE_M93030)
++#else
++# define machine_is_m93030() (0)
++#endif
++
++#ifdef CONFIG_MACH_CC7U
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CC7U
++# endif
++# define machine_is_cc7u() (machine_arch_type == MACH_TYPE_CC7U)
++#else
++# define machine_is_cc7u() (0)
++#endif
++
++#ifdef CONFIG_MACH_MTT_RANGER
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MTT_RANGER
++# endif
++# define machine_is_mtt_ranger() (machine_arch_type == MACH_TYPE_MTT_RANGER)
++#else
++# define machine_is_mtt_ranger() (0)
++#endif
++
++#ifdef CONFIG_MACH_NEXUS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NEXUS
++# endif
++# define machine_is_nexus() (machine_arch_type == MACH_TYPE_NEXUS)
++#else
++# define machine_is_nexus() (0)
++#endif
++
++#ifdef CONFIG_MACH_DESMAN
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DESMAN
++# endif
++# define machine_is_desman() (machine_arch_type == MACH_TYPE_DESMAN)
++#else
++# define machine_is_desman() (0)
++#endif
++
++#ifdef CONFIG_MACH_BKDE303
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BKDE303
++# endif
++# define machine_is_bkde303() (machine_arch_type == MACH_TYPE_BKDE303)
++#else
++# define machine_is_bkde303() (0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2413
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SMDK2413
++# endif
++# define machine_is_smdk2413() (machine_arch_type == MACH_TYPE_SMDK2413)
++#else
++# define machine_is_smdk2413() (0)
++#endif
++
++#ifdef CONFIG_MACH_AML_M7200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AML_M7200
++# endif
++# define machine_is_aml_m7200() (machine_arch_type == MACH_TYPE_AML_M7200)
++#else
++# define machine_is_aml_m7200() (0)
++#endif
++
++#ifdef CONFIG_MACH_AML_M5900
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AML_M5900
++# endif
++# define machine_is_aml_m5900() (machine_arch_type == MACH_TYPE_AML_M5900)
++#else
++# define machine_is_aml_m5900() (0)
++#endif
++
++#ifdef CONFIG_MACH_SG640
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SG640
++# endif
++# define machine_is_sg640() (machine_arch_type == MACH_TYPE_SG640)
++#else
++# define machine_is_sg640() (0)
++#endif
++
++#ifdef CONFIG_MACH_EDG79524
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EDG79524
++# endif
++# define machine_is_edg79524() (machine_arch_type == MACH_TYPE_EDG79524)
++#else
++# define machine_is_edg79524() (0)
++#endif
++
++#ifdef CONFIG_MACH_AI2410
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AI2410
++# endif
++# define machine_is_ai2410() (machine_arch_type == MACH_TYPE_AI2410)
++#else
++# define machine_is_ai2410() (0)
++#endif
++
++#ifdef CONFIG_MACH_IXP465
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IXP465
++# endif
++# define machine_is_ixp465() (machine_arch_type == MACH_TYPE_IXP465)
++#else
++# define machine_is_ixp465() (0)
++#endif
++
++#ifdef CONFIG_MACH_BALLOON3
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BALLOON3
++# endif
++# define machine_is_balloon3() (machine_arch_type == MACH_TYPE_BALLOON3)
++#else
++# define machine_is_balloon3() (0)
++#endif
++
++#ifdef CONFIG_MACH_QT2410
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_QT2410
++# endif
++# define machine_is_qt2410() (machine_arch_type == MACH_TYPE_QT2410)
++#else
++# define machine_is_qt2410() (0)
++#endif
++
+ /*
+ * These have not yet been registered
+ */
+diff --git a/include/configs/qt2410.h b/include/configs/qt2410.h
+new file mode 100644
+index 0000000..627f365
+--- /dev/null
++++ b/include/configs/qt2410.h
+@@ -0,0 +1,256 @@
++/*
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Marius Groeger <mgroeger@sysgo.de>
++ * Gary Jennejohn <gj@denx.de>
++ * David Mueller <d.mueller@elsoft.ch>
++ *
++ * Configuation settings for the SAMSUNG SMDK2410 board.
++ *
++ * 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
++/* If we want to start u-boot from usb bootloader in NOR flash */
++#define CONFIG_SKIP_RELOCATE_UBOOT 1
++#define CONFIG_SKIP_LOWLEVEL_INIT 1
++#else
++/* If we want to start u-boot directly from within NAND flash */
++#define CONFIG_S3C2410_NAND_BOOT 1
++#endif
++
++/*
++ * High Level Configuration Options
++ * (easy to change)
++ */
++#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
++#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
++#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
++
++/* input clock of PLL */
++#define CONFIG_SYS_CLK_FREQ 12000000/* the SMDK2410 has 12MHz input clock */
++
++
++#define USE_920T_MMU 1
++#define CONFIG_USE_IRQ 1
++//#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
++
++/*
++ * Size of malloc() pool
++ */
++#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
++#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
++
++/*
++ * Hardware drivers
++ */
++#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
++#define CS8900_BASE 0x19000300
++#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */
++
++/*
++ * select serial console configuration
++ */
++#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK2410 */
++#define CONFIG_HWFLOW 1
++
++/************************************************************
++ * RTC
++ ************************************************************/
++#define CONFIG_RTC_S3C24X0 1
++
++/* allow to overwrite serial and ethaddr */
++#define CONFIG_ENV_OVERWRITE
++
++#define CONFIG_BAUDRATE 115200
++
++/***********************************************************
++ * Command definition
++ ***********************************************************/
++#define CONFIG_COMMANDS \
++ (CONFIG_CMD_DFL | \
++ CFG_CMD_BSP | \
++ CFG_CMD_CACHE | \
++ CFG_CMD_DATE | \
++ CFG_CMD_DHCP | \
++ CFG_CMD_DIAG | \
++ CFG_CMD_ELF | \
++ CFG_CMD_EXT2 | \
++ CFG_CMD_FAT | \
++ CFG_CMD_HWFLOW | \
++ /* CFG_CMD_IDE | */ \
++ /* CFG_CMD_IRQ | */ \
++ CFG_CMD_JFFS2 | \
++ CFG_CMD_MMC | \
++ CFG_CMD_NAND | \
++ CFG_CMD_PING | \
++ CFG_CMD_PORTIO | \
++ CFG_CMD_REGINFO | \
++ CFG_CMD_SAVES | \
++ CFG_CMD_USB)
++
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++#define CONFIG_BOOTDELAY 3
++#define CONFIG_BOOTARGS "root=/dev/sda1 console=ttySAC0,115200 loglevel=8 rootdelay=10"
++/*#define CONFIG_ETHADDR 08:00:3e:26:0a:5b */
++#define CONFIG_NETMASK 255.255.255.0
++#define CONFIG_IPADDR 10.0.0.110
++#define CONFIG_SERVERIP 10.0.0.1
++/*#define CONFIG_BOOTFILE "elinos-lart" */
++#define CONFIG_BOOTCOMMAND "mmcinit; ext2load mmc 0 0x32000000 uImage; bootm 0x32000000"
++
++#define CONFIG_DOS_PARTITION 1
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
++/* what's this ? it's not used anywhere */
++#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
++#endif
++
++/*
++ * Miscellaneous configurable options
++ */
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_PROMPT "QT2410 # " /* Monitor Command Prompt */
++#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
++#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 0x30000000 /* memtest works on */
++#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
++
++#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
++
++#define CFG_LOAD_ADDR 0x33000000 /* default load address */
++
++/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
++/* it to wrap 100 times (total 1562500) to get 1 sec. */
++#define CFG_HZ 1562500
++
++/* valid baudrates */
++#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
++
++/*-----------------------------------------------------------------------
++ * Stack sizes
++ *
++ * The stack sizes are set up in start.S using the settings below
++ */
++#define CONFIG_STACKSIZE (128*1024) /* regular stack */
++#ifdef CONFIG_USE_IRQ
++#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
++#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
++#endif
++
++/* IDE/ATA config */
++
++#if 0
++#define CFG_IDE_MAXBUS 1
++#define CFG_IDE_MAXDEVICE 2
++#define CFG_IDE_PREINIT 0
++
++#define CFG_ATA_BASE_ADDR
++#endif
++
++#define CONFIG_USB_OHCI 1
++
++/*-----------------------------------------------------------------------
++ * Physical Memory Map
++ */
++#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
++#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
++#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
++#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
++
++#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
++
++#define CFG_FLASH_BASE PHYS_FLASH_1
++
++/*-----------------------------------------------------------------------
++ * FLASH and environment organization
++ */
++
++#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */
++#if 0
++#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */
++#endif
++
++#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
++#ifdef CONFIG_AMD_LV800
++#define PHYS_FLASH_SIZE 0x00100000 /* 1MB */
++#define CFG_MAX_FLASH_SECT (19) /* max number of sectors on one chip */
++#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
++#endif
++#ifdef CONFIG_AMD_LV400
++#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */
++#define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */
++#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x070000) /* addr of environment */
++#endif
++
++/* timeout values are in ticks */
++#define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */
++#define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */
++
++#define CFG_ENV_IS_IN_NAND 1
++#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
++#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
++
++#define NAND_MAX_CHIPS 1
++#define CFG_NAND_BASE 0x4e000000
++#define CFG_MAX_NAND_DEVICE 1
++
++#define CONFIG_MMC 1
++#define CFG_MMC_BASE 0xff000000
++
++#define CONFIG_EXT2 1
++
++/* FAT driver in u-boot is broken currently */
++#define CONFIG_FAT 1
++#define CONFIG_SUPPORT_VFAT
++
++/* ATAG configuration */
++#define CONFIG_INITRD_TAG 1
++#define CONFIG_SETUP_MEMORY_TAGS 1
++#define CONFIG_CMDLINE_TAG 1
++#if 0
++#define CONFIG_SERIAL_TAG 1
++#define CONFIG_REVISION_TAG 1
++#endif
++
++
++#if 0
++#define CONFIG_VIDEO
++#define CONFIG_VIDEO_S3C2410
++#define CONFIG_CFB_CONSOLE
++#define CONFIG_VIDEO_LOGO
++#define CONFIG_VGA_AS_SINGLE_DEVICE
++
++#define VIDEO_KBD_INIT_FCT 0
++#define VIDEO_TSTC_FCT serial_tstc
++#define VIDEO_GETC_FCT serial_getc
++
++#define LCD_VIDEO_ADDR 0x33d00000
++#endif
++
++#endif /* __CONFIG_H */
+diff --git a/include/s3c2410.h b/include/s3c2410.h
+index 86495f6..913521d 100644
+--- a/include/s3c2410.h
++++ b/include/s3c2410.h
+@@ -38,12 +38,6 @@ #define S3C24X0_SPI_CHANNELS 2
+ #define S3C2410_ECCSIZE 512
+ #define S3C2410_ECCBYTES 3
+
+-typedef enum {
+- S3C24X0_UART0,
+- S3C24X0_UART1,
+- S3C24X0_UART2
+-} S3C24X0_UARTS_NR;
+-
+ /* S3C2410 device base addresses */
+ #define S3C24X0_MEMCTL_BASE 0x48000000
+ #define S3C24X0_USB_HOST_BASE 0x49000000
+@@ -65,9 +59,23 @@ #define S3C24X0_SPI_BASE 0x59000000
+ #define S3C2410_SDI_BASE 0x5A000000
+
+
++#define oNFCONF 0x00
++#define oNFCMD 0x04
++#define oNFADDR 0x08
++#define oNFDATA 0x0C
++#define oNFSTAT 0x10
++#define oNFECC 0x14
++
++#ifndef __ASSEMBLER__
++
+ /* include common stuff */
+ #include <s3c24x0.h>
+
++typedef enum {
++ S3C24X0_UART0,
++ S3C24X0_UART1,
++ S3C24X0_UART2
++} S3C24X0_UARTS_NR;
+
+ static inline S3C24X0_MEMCTL * const S3C24X0_GetBase_MEMCTL(void)
+ {
+@@ -142,6 +150,7 @@ static inline S3C2410_SDI * const S3C241
+ return (S3C2410_SDI * const)S3C2410_SDI_BASE;
+ }
+
++#endif
+
+ /* ISR */
+ #define pISR_RESET (*(unsigned *)(_ISR_STARTADDRESS+0x0))
+diff --git a/include/s3c24x0.h b/include/s3c24x0.h
+index 71f35a5..557b91f 100644
+--- a/include/s3c24x0.h
++++ b/include/s3c24x0.h
+@@ -637,13 +637,7 @@ typedef struct {
+ S3C24X0_REG32 SDIDCNT;
+ S3C24X0_REG32 SDIDSTA;
+ S3C24X0_REG32 SDIFSTA;
+-#ifdef __BIG_ENDIAN
+- S3C24X0_REG8 res[3];
+- S3C24X0_REG8 SDIDAT;
+-#else
+- S3C24X0_REG8 SDIDAT;
+- S3C24X0_REG8 res[3];
+-#endif
++ S3C24X0_REG32 SDIDAT;
+ S3C24X0_REG32 SDIIMSK;
+ } /*__attribute__((__packed__))*/ S3C2410_SDI;
+
+@@ -1123,11 +1117,7 @@ #define rSDIDatCon (*(volatile unsigned
+ #define rSDIDatCnt (*(volatile unsigned *)0x5A000030)
+ #define rSDIDatSta (*(volatile unsigned *)0x5A000034)
+ #define rSDIFSTA (*(volatile unsigned *)0x5A000038)
+-#ifdef __BIG_ENDIAN
+-#define rSDIDAT (*(volatile unsigned char *)0x5A00003F)
+-#else
+-#define rSDIDAT (*(volatile unsigned char *)0x5A00003C)
+-#endif
++#define rSDIDAT (*(volatile unsigned *)0x5A00003C)
+ #define rSDIIntMsk (*(volatile unsigned *)0x5A000040)
+
+ #endif
diff --git a/packages/uboot/files/u-boot-20060907-gta01.patch b/packages/uboot/files/u-boot-20060907-gta01.patch
new file mode 100644
index 0000000000..6aa54fa208
--- /dev/null
+++ b/packages/uboot/files/u-boot-20060907-gta01.patch
@@ -0,0 +1,901 @@
+diff --exclude .git -Nru u-boot/Makefile u-boot.new/Makefile
+--- u-boot/Makefile 2006-08-11 23:19:07.000000000 +0200
++++ u-boot.new/Makefile 2006-10-26 13:02:41.000000000 +0200
+@@ -1641,6 +1641,9 @@
+ qt2410_config : unconfig
+ @./mkconfig $(@:_config=) arm arm920t qt2410 NULL s3c24x0
+
++gta01_config : unconfig
++ @./mkconfig $(@:_config=) arm arm920t gta01 NULL s3c24x0
++
+ scb9328_config : unconfig
+ @./mkconfig $(@:_config=) arm arm920t scb9328 NULL imx
+
+diff --exclude .git -Nru u-boot/board/gta01/Makefile u-boot.new/board/gta01/Makefile
+--- u-boot/board/gta01/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ u-boot.new/board/gta01/Makefile 2006-10-25 17:21:44.000000000 +0200
+@@ -0,0 +1,47 @@
++#
++# (C) Copyright 2000, 2001, 2002
++# 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 = lib$(BOARD).a
++
++OBJS := gta01.o
++SOBJS := lowlevel_init.o
++
++$(LIB): $(OBJS) $(SOBJS)
++ $(AR) crv $@ $(OBJS) $(SOBJS)
++
++clean:
++ rm -f $(SOBJS) $(OBJS)
++
++distclean: clean
++ rm -f $(LIB) core *.bak .depend
++
++#########################################################################
++
++.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
++ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
++
++-include .depend
++
++#########################################################################
+diff --exclude .git -Nru u-boot/board/gta01/config.mk u-boot.new/board/gta01/config.mk
+--- u-boot/board/gta01/config.mk 1970-01-01 01:00:00.000000000 +0100
++++ u-boot.new/board/gta01/config.mk 2006-10-25 17:22:09.000000000 +0200
+@@ -0,0 +1,25 @@
++#
++# (C) Copyright 2002
++# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
++# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
++#
++# FIC GTA01 board with S3C2410X (ARM920T) cpu
++#
++# see http://www.samsung.com/ for more information on SAMSUNG
++#
++
++#
++# GTA01 has 1 bank of 64 MB DRAM
++#
++# 3000'0000 to 3400'0000
++#
++# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
++# optionally with a ramdisk at 3080'0000
++#
++# we load ourself to 33F8'0000
++#
++# download area is 3300'0000
++#
++
++
++TEXT_BASE = 0x33F80000
+diff --exclude .git -Nru u-boot/board/gta01/gta01.c u-boot.new/board/gta01/gta01.c
+--- u-boot/board/gta01/gta01.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot.new/board/gta01/gta01.c 2006-10-25 17:27:50.000000000 +0200
+@@ -0,0 +1,133 @@
++/*
++ * (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
++ *
++ * based on existing S3C2410 startup code in u-boot:
++ *
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Marius Groeger <mgroeger@sysgo.de>
++ *
++ * (C) Copyright 2002
++ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
++ *
++ * 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 <s3c2410.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#if 1
++//#define M_MDIV 0xA1 /* Fout = 202.8MHz */
++//#define M_PDIV 0x3
++//#define M_SDIV 0x1
++#define M_MDIV 0x90 /* Fout = 202.8MHz */
++#define M_PDIV 0x7
++#define M_SDIV 0x0
++#else
++#define M_MDIV 0x5c /* Fout = 150.0MHz */
++#define M_PDIV 0x4
++#define M_SDIV 0x0
++#endif
++
++#if 1
++#define U_M_MDIV 0x78
++#define U_M_PDIV 0x2
++#define U_M_SDIV 0x3
++#else
++#define U_M_MDIV 0x48
++#define U_M_PDIV 0x3
++#define U_M_SDIV 0x2
++#endif
++
++static inline void delay (unsigned long loops)
++{
++ __asm__ volatile ("1:\n"
++ "subs %0, %1, #1\n"
++ "bne 1b":"=r" (loops):"0" (loops));
++}
++
++/*
++ * Miscellaneous platform dependent initialisations
++ */
++
++int board_init (void)
++{
++ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
++ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
++
++ /* to reduce PLL lock time, adjust the LOCKTIME register */
++ clk_power->LOCKTIME = 0xFFFFFF;
++
++ /* configure MPLL */
++ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
++
++ /* some delay between MPLL and UPLL */
++ delay (4000);
++
++ /* configure UPLL */
++ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
++
++ /* some delay between MPLL and UPLL */
++ delay (8000);
++
++ /* set up the I/O ports */
++ gpio->GPACON = 0x007FFFFF;
++
++ gpio->GPBCON = 0x00005056;
++ gpio->GPBUP = 0x000007FF;
++
++ gpio->GPCCON = 0xAAAA12A8;
++ gpio->GPCUP = 0x0000FFFF;
++
++ gpio->GPDCON = 0xAAAAAAAA;
++ gpio->GPDUP = 0x0000FFFF;
++
++ gpio->GPECON = 0xAAAAAAAA;
++ gpio->GPEUP = 0x0000FFFF;
++
++ gpio->GPFCON = 0x00002AA9;
++ gpio->GPFUP = 0x000000FF;
++
++ gpio->GPGCON = 0xA846F0C0;
++ gpio->GPGUP = 0x0000AFEF;
++
++ gpio->GPHCON = 0x0008FAAA;
++ gpio->GPHUP = 0x000007FF;
++
++ /* arch number of SMDK2410-Board */
++ gd->bd->bi_arch_number = MACH_TYPE_GTA01;
++
++ /* adress of boot parameters */
++ gd->bd->bi_boot_params = 0x30000100;
++
++ icache_enable();
++ dcache_enable();
++
++ return 0;
++}
++
++int dram_init (void)
++{
++ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
++ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
++
++ return 0;
++}
+diff --exclude .git -Nru u-boot/board/gta01/lowlevel_init.S u-boot.new/board/gta01/lowlevel_init.S
+--- u-boot/board/gta01/lowlevel_init.S 1970-01-01 01:00:00.000000000 +0100
++++ u-boot.new/board/gta01/lowlevel_init.S 2006-10-25 17:20:42.000000000 +0200
+@@ -0,0 +1,171 @@
++/*
++ * Memory Setup stuff - taken from blob memsetup.S
++ *
++ * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
++ * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
++ *
++ * Modified for the FIC GTA01 by Harald Welte <hwelte@hmw-consulting.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 <config.h>
++#include <version.h>
++
++
++/* some parameters for the board */
++
++/*
++ *
++ * Taken from linux/arch/arm/boot/compressed/head-s3c2410.S
++ *
++ * Copyright (C) 2002 Samsung Electronics SW.LEE <hitchcar@sec.samsung.com>
++ *
++ */
++
++#define BWSCON 0x48000000
++
++/* BWSCON */
++#define DW8 (0x0)
++#define DW16 (0x1)
++#define DW32 (0x2)
++#define WAIT (0x1<<2)
++#define UBLB (0x1<<3)
++
++#define B1_BWSCON (DW32)
++#define B2_BWSCON (DW16)
++#define B3_BWSCON (DW16 + WAIT + UBLB)
++#define B4_BWSCON (DW16)
++#define B5_BWSCON (DW16)
++#define B6_BWSCON (DW32)
++#define B7_BWSCON (DW32)
++
++/* BANK0CON */
++#define B0_Tacs 0x0 /* 0clk */
++#define B0_Tcos 0x0 /* 0clk */
++#define B0_Tacc 0x7 /* 14clk */
++#define B0_Tcoh 0x0 /* 0clk */
++#define B0_Tah 0x0 /* 0clk */
++#define B0_Tacp 0x0
++#define B0_PMC 0x0 /* normal */
++
++/* BANK1CON */
++#define B1_Tacs 0x0 /* 0clk */
++#define B1_Tcos 0x0 /* 0clk */
++#define B1_Tacc 0x7 /* 14clk */
++#define B1_Tcoh 0x0 /* 0clk */
++#define B1_Tah 0x0 /* 0clk */
++#define B1_Tacp 0x0
++#define B1_PMC 0x0
++
++#define B2_Tacs 0x0
++#define B2_Tcos 0x0
++#define B2_Tacc 0x7
++#define B2_Tcoh 0x0
++#define B2_Tah 0x0
++#define B2_Tacp 0x0
++#define B2_PMC 0x0
++
++#define B3_Tacs 0x0 /* 0clk */
++#define B3_Tcos 0x3 /* 4clk */
++#define B3_Tacc 0x7 /* 14clk */
++#define B3_Tcoh 0x1 /* 1clk */
++#define B3_Tah 0x0 /* 0clk */
++#define B3_Tacp 0x3 /* 6clk */
++#define B3_PMC 0x0 /* normal */
++
++#define B4_Tacs 0x0 /* 0clk */
++#define B4_Tcos 0x0 /* 0clk */
++#define B4_Tacc 0x7 /* 14clk */
++#define B4_Tcoh 0x0 /* 0clk */
++#define B4_Tah 0x0 /* 0clk */
++#define B4_Tacp 0x0
++#define B4_PMC 0x0 /* normal */
++
++#define B5_Tacs 0x0 /* 0clk */
++#define B5_Tcos 0x0 /* 0clk */
++#define B5_Tacc 0x7 /* 14clk */
++#define B5_Tcoh 0x0 /* 0clk */
++#define B5_Tah 0x0 /* 0clk */
++#define B5_Tacp 0x0
++#define B5_PMC 0x0 /* normal */
++
++#define B6_MT 0x3 /* SDRAM */
++#define B6_Trcd 0x1
++#define B6_SCAN 0x1 /* 9bit */
++
++#define B7_MT 0x3 /* SDRAM */
++#define B7_Trcd 0x1 /* 3clk */
++#define B7_SCAN 0x1 /* 9bit */
++
++/* REFRESH parameter */
++#define REFEN 0x1 /* Refresh enable */
++#define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */
++#define Trp 0x1 /* 3clk */
++#define Trc 0x3 /* 7clk */
++#define Tchr 0x2 /* 3clk */
++//#define REFCNT 1113 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
++#define REFCNT 997 /* period=17.5us, HCLK=60Mhz, (2048+1-15.6*60) */
++/**************************************/
++
++_TEXT_BASE:
++ .word TEXT_BASE
++
++.globl lowlevel_init
++lowlevel_init:
++ /* memory control configuration */
++ /* make r0 relative the current location so that it */
++ /* reads SMRDATA out of FLASH rather than memory ! */
++ ldr r0, =SMRDATA
++ ldr r1, _TEXT_BASE
++ sub r0, r0, r1
++ ldr r1, =BWSCON /* Bus Width Status Controller */
++ add r2, r0, #13*4
++0:
++ ldr r3, [r0], #4
++ str r3, [r1], #4
++ cmp r2, r0
++ bne 0b
++
++ /* setup asynchronous bus mode */
++ mrc p15, 0, r1 ,c1 ,c0, 0
++ orr r1, r1, #0xc0000000
++ mcr p15, 0, r1, c1, c0, 0
++
++ /* everything is fine now */
++ mov pc, lr
++
++ .ltorg
++/* the literal pools origin */
++
++SMRDATA:
++ .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
++ .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
++ .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
++ .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
++ .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
++ .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
++ .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
++ .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
++ .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
++ .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
++ .word 0xb2
++ .word 0x30
++ .word 0x30
+diff --exclude .git -Nru u-boot/board/gta01/u-boot.lds u-boot.new/board/gta01/u-boot.lds
+--- u-boot/board/gta01/u-boot.lds 1970-01-01 01:00:00.000000000 +0100
++++ u-boot.new/board/gta01/u-boot.lds 2006-10-25 17:28:02.000000000 +0200
+@@ -0,0 +1,57 @@
++/*
++ * (C) Copyright 2002
++ * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
++/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
++OUTPUT_ARCH(arm)
++ENTRY(_start)
++SECTIONS
++{
++ . = 0x00000000;
++
++ . = ALIGN(4);
++ .text :
++ {
++ cpu/arm920t/start.o (.text)
++ *(.text)
++ }
++
++ . = ALIGN(4);
++ .rodata : { *(.rodata) }
++
++ . = ALIGN(4);
++ .data : { *(.data) }
++
++ . = ALIGN(4);
++ .got : { *(.got) }
++
++ . = .;
++ __u_boot_cmd_start = .;
++ .u_boot_cmd : { *(.u_boot_cmd) }
++ __u_boot_cmd_end = .;
++
++ . = ALIGN(4);
++ __bss_start = .;
++ .bss : { *(.bss) }
++ _end = .;
++}
+diff --exclude .git -Nru u-boot/board/qt2410/qt2410.c.old u-boot.new/board/qt2410/qt2410.c.old
+--- u-boot/board/qt2410/qt2410.c.old 1970-01-01 01:00:00.000000000 +0100
++++ u-boot.new/board/qt2410/qt2410.c.old 2006-10-10 11:09:43.000000000 +0200
+@@ -0,0 +1,127 @@
++/*
++ * (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
++ *
++ * based on existing S3C2410 startup code in u-boot:
++ *
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Marius Groeger <mgroeger@sysgo.de>
++ *
++ * (C) Copyright 2002
++ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
++ *
++ * 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 <s3c2410.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#if 1
++#define M_MDIV 0xA1 /* Fout = 202.8MHz */
++#define M_PDIV 0x3
++#define M_SDIV 0x1
++//#define M_MDIV 0x90 /* Fout = 202.8MHz */
++//#define M_PDIV 0x7
++//#define M_SDIV 0x0
++#else
++#define M_MDIV 0x5c /* Fout = 150.0MHz */
++#define M_PDIV 0x4
++#define M_SDIV 0x0
++#endif
++
++#if 1
++#define U_M_MDIV 0x78
++#define U_M_PDIV 0x2
++#define U_M_SDIV 0x3
++#else
++#define U_M_MDIV 0x48
++#define U_M_PDIV 0x3
++#define U_M_SDIV 0x2
++#endif
++
++static inline void delay (unsigned long loops)
++{
++ __asm__ volatile ("1:\n"
++ "subs %0, %1, #1\n"
++ "bne 1b":"=r" (loops):"0" (loops));
++}
++
++/*
++ * Miscellaneous platform dependent initialisations
++ */
++
++int board_init (void)
++{
++ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
++ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
++
++ /* to reduce PLL lock time, adjust the LOCKTIME register */
++ clk_power->LOCKTIME = 0xFFFFFF;
++
++ /* configure MPLL */
++ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
++
++ /* some delay between MPLL and UPLL */
++ delay (4000);
++
++ /* configure UPLL */
++ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
++
++ /* some delay between MPLL and UPLL */
++ delay (8000);
++
++ /* set up the I/O ports */
++ gpio->GPACON = 0x007FFFFF;
++ gpio->GPBCON = 0x00044555;
++ gpio->GPBUP = 0x000007FF;
++ gpio->GPCCON = 0xAAAAAAAA;
++ gpio->GPCUP = 0x0000FFFF;
++ gpio->GPDCON = 0xAAAAAAAA;
++ gpio->GPDUP = 0x0000FFFF;
++ gpio->GPECON = 0xAAAAAAAA;
++ gpio->GPEUP = 0x0000FFFF;
++ gpio->GPFCON = 0x000055AA;
++ gpio->GPFUP = 0x000000FF;
++ gpio->GPGCON = 0xFF95FFBA;
++ //gpio->GPGUP = 0x0000FFFF;
++ gpio->GPGUP = 0x0000AFEF;
++ gpio->GPHCON = 0x0028FAAA;
++ gpio->GPHUP = 0x000007FF;
++
++ /* arch number of SMDK2410-Board */
++ gd->bd->bi_arch_number = MACH_TYPE_QT2410;
++
++ /* adress of boot parameters */
++ gd->bd->bi_boot_params = 0x30000100;
++
++ icache_enable();
++ dcache_enable();
++
++ return 0;
++}
++
++int dram_init (void)
++{
++ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
++ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
++
++ return 0;
++}
+diff --exclude .git -Nru u-boot/fs/cramfs/cramfs.c u-boot.new/fs/cramfs/cramfs.c
+--- u-boot/fs/cramfs/cramfs.c 2006-07-14 12:41:02.000000000 +0200
++++ u-boot.new/fs/cramfs/cramfs.c 2006-10-26 14:01:41.000000000 +0200
+@@ -27,7 +27,7 @@
+ #include <common.h>
+ #include <malloc.h>
+
+-#if (CONFIG_COMMANDS & CFG_CMD_JFFS2)
++#if (CONFIG_COMMANDS & CFG_CMD_CRAMFS)
+
+ #include <asm/byteorder.h>
+ #include <linux/stat.h>
+@@ -343,5 +343,22 @@
+ }
+ return 1;
+ }
+-
++#else
++int cramfs_load (char *loadoffset, struct part_info *info, char *filename)
++{
++ return -1;
++}
++int cramfs_ls (struct part_info *info, char *filename)
++{
++ return 0;
++}
++int cramfs_info (struct part_info *info)
++{
++ return 0;
++}
++int cramfs_check (struct part_info *info)
++{
++ return 0;
++}
+ #endif /* CFG_FS_CRAMFS */
++
+diff --exclude .git -Nru u-boot/include/asm-arm/mach-types.h u-boot.new/include/asm-arm/mach-types.h
+--- u-boot/include/asm-arm/mach-types.h 2006-08-11 23:19:07.000000000 +0200
++++ u-boot.new/include/asm-arm/mach-types.h 2006-10-25 23:55:00.000000000 +0200
+@@ -1038,6 +1038,7 @@
+ #define MACH_TYPE_IXP465 1028
+ #define MACH_TYPE_BALLOON3 1029
+ #define MACH_TYPE_QT2410 1108
++#define MACH_TYPE_GTA01 1182
+
+ #ifdef CONFIG_ARCH_EBSA110
+ # ifdef machine_arch_type
+@@ -13327,6 +13328,19 @@
+ # define machine_is_qt2410() (0)
+ #endif
+
++#ifdef CONFIG_MACH_GTA01
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_GTA01
++# endif
++# define machine_is_gta01() (machine_arch_type == MACH_TYPE_GTA01)
++#else
++# define machine_is_gta01() (0)
++#endif
++
++
+ /*
+ * These have not yet been registered
+ */
+diff --exclude .git -Nru u-boot/include/configs/gta01.h u-boot.new/include/configs/gta01.h
+--- u-boot/include/configs/gta01.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot.new/include/configs/gta01.h 2006-10-26 20:21:30.000000000 +0200
+@@ -0,0 +1,233 @@
++/*
++ * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
++ *
++ * Configuation settings for the FIC GTA01 Linux GSM phone
++ *
++ * 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
++
++/* we want to start u-boot directly from within NAND flash */
++#define CONFIG_S3C2410_NAND_BOOT 1
++
++/*
++ * High Level Configuration Options
++ * (easy to change)
++ */
++#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
++#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
++#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
++
++/* input clock of PLL */
++#define CONFIG_SYS_CLK_FREQ 12000000/* the GTA01 has 12MHz input clock */
++
++
++#define USE_920T_MMU 1
++#define CONFIG_USE_IRQ 1
++
++/*
++ * Size of malloc() pool
++ */
++#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
++#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
++
++/*
++ * Hardware drivers
++ */
++
++/*
++ * select serial console configuration
++ */
++#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on GTA01 */
++//#define CONFIG_HWFLOW 1
++
++/************************************************************
++ * RTC
++ ************************************************************/
++#define CONFIG_RTC_S3C24X0 1
++
++/* allow to overwrite serial and ethaddr */
++#define CONFIG_ENV_OVERWRITE
++
++#define CONFIG_BAUDRATE 115200
++
++/***********************************************************
++ * Command definition
++ ***********************************************************/
++#define CONFIG_COMMANDS (\
++ CFG_CMD_BDI | \
++ CFG_CMD_LOADS | \
++ CFG_CMD_LAODB | \
++ CFG_CMD_IMI | \
++ CFG_CMD_CACHE | \
++ CFG_CMD_MEMORY | \
++ CFG_CMD_ENV | \
++ /* CFG_CMD_IRQ | */ \
++ CFG_CMD_BOOTD | \
++ CFG_CMD_CONSOLE | \
++ CFG_CMD_ASKENV | \
++ CFG_CMD_RUN | \
++ CFG_CMD_ECHO | \
++ CFG_CMD_I2C | \
++ CFG_CMD_REGINFO | \
++ CFG_CMD_IMMAP | \
++ CFG_CMD_DATE | \
++ CFG_CMD_AUTOSCRIPT | \
++ CFG_CMD_BSP | \
++ CFG_CMD_ELF | \
++ CFG_CMD_MISC | \
++ CFG_CMD_USB | \
++ CFG_CMD_JFFS2 | \
++ CFG_CMD_DIAG | \
++ /* CFG_CMD_HWFLOW | */ \
++ CFG_CMD_SAVES | \
++ CFG_CMD_NAND | \
++ CFG_CMD_PORTIO | \
++ CFG_CMD_MMC | \
++ CFG_CMD_FAT | \
++ CFG_CMD_EXT2 | \
++ 0)
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++#define CONFIG_BOOTDELAY 3
++#define CONFIG_BOOTARGS "rootfstype=jffs2 root=/dev/mtdblock4 console=ttySAC0,115200 console=tty0 loglevel=8"
++/*#define CONFIG_BOOTFILE "elinos-lart" */
++#define CONFIG_BOOTCOMMAND "nand load 0x32000000 0x34000 0x200000; bootm 0x32000000"
++
++#define CONFIG_DOS_PARTITION 1
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
++/* what's this ? it's not used anywhere */
++#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
++#endif
++
++/*
++ * Miscellaneous configurable options
++ */
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_PROMPT "GTA01 # " /* Monitor Command Prompt */
++#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
++#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 0x30000000 /* memtest works on */
++#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
++
++#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
++
++#define CFG_LOAD_ADDR 0x33000000 /* default load address */
++
++/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
++/* it to wrap 100 times (total 1562500) to get 1 sec. */
++#define CFG_HZ 1562500
++
++/* valid baudrates */
++#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
++
++/*-----------------------------------------------------------------------
++ * Stack sizes
++ *
++ * The stack sizes are set up in start.S using the settings below
++ */
++#define CONFIG_STACKSIZE (128*1024) /* regular stack */
++#ifdef CONFIG_USE_IRQ
++#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
++#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
++#endif
++
++#define CONFIG_USB_OHCI 1
++
++/*-----------------------------------------------------------------------
++ * Physical Memory Map
++ */
++#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
++#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
++#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
++#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
++
++/*-----------------------------------------------------------------------
++ * FLASH and environment organization
++ */
++
++#if 1
++#define CFG_NO_FLASH 1
++#else
++#define CFG_MAX_FLASH_SECT 1
++#define CFG_MAX_FLASH_BANKS 1
++#endif
++
++#define CFG_ENV_IS_IN_NAND 1
++#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
++#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
++
++#define NAND_MAX_CHIPS 1
++#define CFG_NAND_BASE 0x4e000000
++#define CFG_MAX_NAND_DEVICE 1
++
++#define CONFIG_MMC 1
++#define CFG_MMC_BASE 0xff000000
++
++/* EXT2 driver */
++#define CONFIG_EXT2 1
++
++/* FAT driver in u-boot is broken currently */
++#define CONFIG_FAT 1
++#define CONFIG_SUPPORT_VFAT 1
++
++/* JFFS2 driver */
++#define CONFIG_JFFS2_NAND 1
++#define CONFIG_JFFS2_NAND_DEV 0
++#define CONFIG_JFFS2_NAND_OFF 0x634000
++#define CONFIG_JFFS2_NAND_SIZE 0x39cc000
++
++/* ATAG configuration */
++#define CONFIG_INITRD_TAG 1
++#define CONFIG_SETUP_MEMORY_TAGS 1
++#define CONFIG_CMDLINE_TAG 1
++#if 0
++#define CONFIG_SERIAL_TAG 1
++#define CONFIG_REVISION_TAG 1
++#endif
++
++#define CONFIG_DRIVER_S3C24X0_I2C 1
++#define CONFIG_HARD_I2C 1
++#define CFG_I2C_SPEED 400000 /* 400kHz according to PCF50707 data sheet */
++#define CFG_I2C_SLAVE 0x7f
++
++
++#if 0
++#define CONFIG_VIDEO
++#define CONFIG_VIDEO_S3C2410
++#define CONFIG_CFB_CONSOLE
++#define CONFIG_VIDEO_LOGO
++#define CONFIG_VGA_AS_SINGLE_DEVICE
++
++#define VIDEO_KBD_INIT_FCT 0
++#define VIDEO_TSTC_FCT serial_tstc
++#define VIDEO_GETC_FCT serial_getc
++
++#define LCD_VIDEO_ADDR 0x33d00000
++#endif
++
++#endif /* __CONFIG_H */
diff --git a/packages/uboot/files/u-boot-20061030-ext2load_hex.patch b/packages/uboot/files/u-boot-20061030-ext2load_hex.patch
new file mode 100644
index 0000000000..3cecb7485d
--- /dev/null
+++ b/packages/uboot/files/u-boot-20061030-ext2load_hex.patch
@@ -0,0 +1,14 @@
+This patch adds the hex-printing of the file size read by 'ext2load'
+Index: u-boot.git/common/cmd_ext2.c
+===================================================================
+--- u-boot.git.orig/common/cmd_ext2.c 2007-01-02 18:26:17.000000000 +0100
++++ u-boot.git/common/cmd_ext2.c 2007-01-02 18:26:27.000000000 +0100
+@@ -279,7 +279,7 @@
+ /* Loading ok, update default load address */
+ load_addr = addr;
+
+- printf ("\n%ld bytes read\n", filelen);
++ printf ("\n%ld (0x%lx) bytes read\n", filelen, filelen);
+ sprintf(buf, "%lX", filelen);
+ setenv("filesize", buf);
+
diff --git a/packages/uboot/files/u-boot-20061030-gta01bv2.patch b/packages/uboot/files/u-boot-20061030-gta01bv2.patch
new file mode 100644
index 0000000000..9e2d19338e
--- /dev/null
+++ b/packages/uboot/files/u-boot-20061030-gta01bv2.patch
@@ -0,0 +1,246 @@
+This patch adds support for the GTA01Bv2 variant of the FIC GTA01 (Neo1973) phone
+
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile 2007-01-04 12:22:12.000000000 +0100
++++ git/Makefile 2007-01-04 12:22:16.000000000 +0100
+@@ -1918,6 +1918,7 @@
+
+ gta01_config \
+ gta01v3_config \
++gta01bv2_config \
+ gta01v4_config : unconfig
+ @board/gta01/split_by_variant.sh $@
+
+Index: git/board/gta01/gta01.c
+===================================================================
+--- git.orig/board/gta01/gta01.c 2007-01-04 12:22:12.000000000 +0100
++++ git/board/gta01/gta01.c 2007-01-04 12:22:16.000000000 +0100
+@@ -35,28 +35,29 @@
+
+ DECLARE_GLOBAL_DATA_PTR;
+
+-#if 1
++#if defined(CONFIG_ARCH_GTA01_v3) || defined(CONFIG_ARCH_GTA01_v4)
+ //#define M_MDIV 0xA1 /* Fout = 202.8MHz */
+ //#define M_PDIV 0x3
+ //#define M_SDIV 0x1
+ #define M_MDIV 0x90 /* Fout = 202.8MHz */
+ #define M_PDIV 0x7
+ #define M_SDIV 0x0
+-#else
+-#define M_MDIV 0x5c /* Fout = 150.0MHz */
+-#define M_PDIV 0x4
++#elif defined(CONFIG_ARCH_GTA01B_v2)
++#if 0
++#define M_MDIV 0x7d /* Fout = 266MHz */
++#define M_PDIV 0x1
++#define M_SDIV 0x1
++#endif
++#define M_MDIV 0x90 /* Fout = 202.8MHz */
++#define M_PDIV 0x7
+ #define M_SDIV 0x0
++#else
++#error Please define GTA01 revision
+ #endif
+
+-#if 1
+ #define U_M_MDIV 0x78
+ #define U_M_PDIV 0x2
+ #define U_M_SDIV 0x3
+-#else
+-#define U_M_MDIV 0x48
+-#define U_M_PDIV 0x3
+-#define U_M_SDIV 0x2
+-#endif
+
+ static inline void delay (unsigned long loops)
+ {
+@@ -137,7 +138,31 @@
+
+ gpio->GPHCON = 0x0000FAAA;
+ gpio->GPHUP = 0x000007FF;
++#elif defined(CONFIG_ARCH_GTA01B_v2)
++ gpio->GPACON = 0x005E47FF;
+
++ gpio->GPBCON = 0x00145416;
++ gpio->GPBUP = 0x000007FF;
++ gpio->GPBDAT |= 0x4; /* Set GBP2 to high (Flash power-up) */
++
++ gpio->GPCCON = 0xAAAA12A9;
++ gpio->GPCUP = 0x0000FFFF;
++
++ gpio->GPDCON = 0xAAAAAAAA;
++ gpio->GPDUP = 0x0000FFFF;
++
++ gpio->GPECON = 0xA02AAAAA;
++ gpio->GPEUP = 0x0000FFFF;
++
++ gpio->GPFCON = 0x0000aa19;
++ gpio->GPFUP = 0x000000FF;
++ gpio->GPFDAT |= 0x4; /* Set GBF2 to high (nGSM_EN) */
++
++ gpio->GPGCON = 0xFF40F0C1;
++ gpio->GPGUP = 0x0000AFEF;
++
++ gpio->GPHCON = 0x0000FAAA;
++ gpio->GPHUP = 0x000007FF;
+ #else
+ #error Please define GTA01 version
+ #endif
+@@ -156,9 +181,11 @@
+
+ int board_late_init(void)
+ {
++#if defined(CONFIG_ARCH_GTA01_v3) || defined(CONFIG_ARCH_GTA01_v4)
+ const char mmc_power = 0x8f;
+- /* enable D3REG 3.3V (SC/MMC power) */
++ /* enable D2REG 3.3V (SC/MMC power) */
+ i2c_write(0x08, 0x25, 1, &mmc_power, 1);
++#endif
+ return 0;
+ }
+
+@@ -176,5 +203,7 @@
+ return 0x00000130;
+ #elif defined(CONFIG_ARCH_GTA01_v4)
+ return 0x00000140;
++#elif defined(CONFIG_ARCH_GTA01B_v2)
++ return 0x00000220;
+ #endif
+ }
+Index: git/board/gta01/split_by_variant.sh
+===================================================================
+--- git.orig/board/gta01/split_by_variant.sh 2007-01-04 12:22:12.000000000 +0100
++++ git/board/gta01/split_by_variant.sh 2007-01-04 12:22:16.000000000 +0100
+@@ -15,16 +15,23 @@
+ case "$1" in
+ gta01v4_config)
+ echo "#define CONFIG_ARCH_GTA01_v4" > ${obj}include/config.h
++ echo "GTA01_BIG_FLASH=n" > ${obj}board/gta01/config.tmp
+ ;;
+
+ gta01v3_config)
+ echo "#define CONFIG_ARCH_GTA01_v3" > ${obj}include/config.h
++ echo "GTA01_BIG_FLASH=n" > ${obj}board/gta01/config.tmp
+ ;;
+
++ gta01bv2_config)
++ echo "#define CONFIG_ARCH_GTA01B_v2" > ${obj}include/config.h
++ echo "GTA01_BIG_FLASH=y" > ${obj}board/gta01/config.tmp
++ ;;
+
+ *)
+ echo "$0:: Unrecognised config - using gta01v3_config"
+ echo "#define CONFIG_ARCH_GTA01_v3" > ${obj}include/config.h
++ echo "GTA01_BIG_FLASH=n" > ${obj}board/gta01/config.tmp
+ ;;
+
+ esac
+Index: git/include/configs/gta01.h
+===================================================================
+--- git.orig/include/configs/gta01.h 2007-01-04 12:22:12.000000000 +0100
++++ git/include/configs/gta01.h 2007-01-04 12:22:16.000000000 +0100
+@@ -128,6 +128,8 @@
+ #define CFG_PROMPT "GTA01v3 # " /* Monitor Command Prompt */
+ #elif defined(CONFIG_ARCH_GTA01_v4)
+ #define CFG_PROMPT "GTA01v4 # " /* Monitor Command Prompt */
++#elif defined(CONFIG_ARCH_GTA01B_v2)
++#define CFG_PROMPT "GTA01Bv2 # " /* Monitor Command Prompt */
+ #endif
+ #define CFG_CBSIZE 256 /* Console I/O Buffer Size */
+ #define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
+@@ -166,7 +168,13 @@
+ */
+ #define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
+ #define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
++#if defined(CONFIG_ARCH_GTA01_v3) || defined(CONFIG_ARCH_GTA01_v4)
+ #define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
++#elif defined(CONFIG_ARCH_GTA01B_v2)
++#define PHYS_SDRAM_1_SIZE 0x08000000 /* 128 MB */
++#else
++#error Please define GTA01 variant
++#endif
+ #define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
+
+ /*-----------------------------------------------------------------------
+Index: git/board/gta01/lowlevel_init.S
+===================================================================
+--- git.orig/board/gta01/lowlevel_init.S 2007-01-04 12:22:07.000000000 +0100
++++ git/board/gta01/lowlevel_init.S 2007-01-04 12:22:16.000000000 +0100
+@@ -108,12 +108,16 @@
+ #define B5_PMC 0x0 /* normal */
+
+ #define B6_MT 0x3 /* SDRAM */
+-#define B6_Trcd 0x1
++#define B6_Trcd 0x1 /* 3clk */
++#if defined (CONFIG_ARCH_GTA01_v3) || defined(CONFIG_ARCH_GTA01_v4)
+ #define B6_SCAN 0x1 /* 9bit */
++#elif defined(CONFIG_ARCH_GTA01B_v2)
++#define B6_SCAN 0x2 /* 10bit */
++#endif
+
+ #define B7_MT 0x3 /* SDRAM */
+ #define B7_Trcd 0x1 /* 3clk */
+-#define B7_SCAN 0x1 /* 9bit */
++#define B7_SCAN 0x2 /* 10bit */
+
+ /* REFRESH parameter */
+ #define REFEN 0x1 /* Refresh enable */
+@@ -149,6 +153,19 @@
+ orr r1, r1, #0xc0000000
+ mcr p15, 0, r1, c1, c0, 0
+
++#if defined(CONFIG_ARCH_GTA01_v4) || defined(CONFIG_ARCH_GTA01B_v2)
++ /* switch on power for NAND */
++ ldr r0, =0x56000010 /* GPBCON */
++ ldr r1, [r0]
++ orr r1, r1, #0x10
++ str r1, [r0]
++
++ ldr r0, =0x56000014 /* GPBDAT */
++ ldr r1, [r0]
++ orr r1, r1, #(1 <<2)
++ str r1, [r0]
++#endif
++
+ /* everything is fine now */
+ mov pc, lr
+
+Index: git/board/gta01/config.mk
+===================================================================
+--- git.orig/board/gta01/config.mk 2007-01-04 12:22:07.000000000 +0100
++++ git/board/gta01/config.mk 2007-01-04 12:22:16.000000000 +0100
+@@ -8,18 +8,26 @@
+ # see http://www.samsung.com/ for more information on SAMSUNG
+ #
+
++# GTA01v3 has 1 bank of 64 MB SDRAM
++# GTA01v4 has 1 bank of 64 MB SDRAM
+ #
+-# GTA01 has 1 bank of 64 MB DRAM
++# 3000'0000 to 3400'0000
++# we load ourself to 33F8'0000
++#
++# GTA01Bv2 or later has 1 bank of 128 MB SDRAM
+ #
+-# 3000'0000 to 3400'0000
++# 3000'0000 to 3800'0000
++# we load ourself to 37F8'0000
+ #
+ # Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
+ # optionally with a ramdisk at 3080'0000
+ #
+-# we load ourself to 33F8'0000
+-#
+-# download area is 3300'0000
+-#
++# download area is 3200'0000 or 3300'0000
+
++sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
+
++ifeq ($(GTA01_BIG_RAM),y)
++TEXT_BASE = 0x37F80000
++else
+ TEXT_BASE = 0x33F80000
++endif
diff --git a/packages/uboot/files/u-boot-20061030-gta01v4.patch b/packages/uboot/files/u-boot-20061030-gta01v4.patch
new file mode 100644
index 0000000000..8910dcf831
--- /dev/null
+++ b/packages/uboot/files/u-boot-20061030-gta01v4.patch
@@ -0,0 +1,132 @@
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile 2007-01-04 12:22:08.000000000 +0100
++++ git/Makefile 2007-01-04 12:22:12.000000000 +0100
+@@ -1916,8 +1916,10 @@
+ qt2410_config : unconfig
+ @./mkconfig $(@:_config=) arm arm920t qt2410 NULL s3c24x0
+
+-gta01_config : unconfig
+- @./mkconfig $(@:_config=) arm arm920t gta01 NULL s3c24x0
++gta01_config \
++gta01v3_config \
++gta01v4_config : unconfig
++ @board/gta01/split_by_variant.sh $@
+
+ scb9328_config : unconfig
+ @$(MKCONFIG) $(@:_config=) arm arm920t scb9328 NULL imx
+Index: git/board/gta01/gta01.c
+===================================================================
+--- git.orig/board/gta01/gta01.c 2007-01-04 12:22:08.000000000 +0100
++++ git/board/gta01/gta01.c 2007-01-04 12:22:12.000000000 +0100
+@@ -90,6 +90,7 @@
+ delay (8000);
+
+ /* set up the I/O ports */
++#if defined(CONFIG_ARCH_GTA01_v3)
+ gpio->GPACON = 0x007FFFFF;
+
+ gpio->GPBCON = 0x00005056;
+@@ -112,6 +113,34 @@
+
+ gpio->GPHCON = 0x0008FAAA;
+ gpio->GPHUP = 0x000007FF;
++#elif defined(CONFIG_ARCH_GTA01_v4)
++ gpio->GPACON = 0x007FFFFF; //0x005E47FF;
++
++ gpio->GPBDAT |= 0x4; /* Set GBP2 to high (Flash power-up) */
++ gpio->GPBCON = 0x00005056; //0x00045016;
++ gpio->GPBUP = 0x000007FF;
++
++ gpio->GPCCON = 0xAAAA12A9;
++ gpio->GPCUP = 0x0000FFFF;
++
++ gpio->GPDCON = 0xAAAAAAAA;
++ gpio->GPDUP = 0x0000FFFF;
++
++ gpio->GPECON = 0xA02AAAAA;
++ gpio->GPEUP = 0x0000FFFF;
++
++ gpio->GPFCON = 0x0000aa09;
++ gpio->GPFUP = 0x000000FF;
++
++ gpio->GPGCON = 0xFF40F0C1;
++ gpio->GPGUP = 0x0000FFFF;
++
++ gpio->GPHCON = 0x0000FAAA;
++ gpio->GPHUP = 0x000007FF;
++
++#else
++#error Please define GTA01 version
++#endif
+
+ /* arch number of SMDK2410-Board */
+ gd->bd->bi_arch_number = MACH_TYPE_GTA01;
+@@ -143,5 +172,9 @@
+
+ u_int32_t get_board_rev(void)
+ {
++#if defined(CONFIG_ARCH_GTA01_v3)
+ return 0x00000130;
++#elif defined(CONFIG_ARCH_GTA01_v4)
++ return 0x00000140;
++#endif
+ }
+Index: git/board/gta01/split_by_variant.sh
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/board/gta01/split_by_variant.sh 2007-01-04 12:22:12.000000000 +0100
+@@ -0,0 +1,36 @@
++#!/bin/sh
++# ---------------------------------------------------------
++# Set the core module defines according to Core Module
++# ---------------------------------------------------------
++# ---------------------------------------------------------
++# Set up the GTA01 type define
++# ---------------------------------------------------------
++
++mkdir -p ${obj}include
++if [ "$1" == "" ]
++then
++ echo "$0:: No parameters - using GTA01v3 config"
++ echo "#define CONFIG_ARCH_GTA01_v3" > ${obj}include/config.h
++else
++ case "$1" in
++ gta01v4_config)
++ echo "#define CONFIG_ARCH_GTA01_v4" > ${obj}include/config.h
++ ;;
++
++ gta01v3_config)
++ echo "#define CONFIG_ARCH_GTA01_v3" > ${obj}include/config.h
++ ;;
++
++
++ *)
++ echo "$0:: Unrecognised config - using gta01v3_config"
++ echo "#define CONFIG_ARCH_GTA01_v3" > ${obj}include/config.h
++ ;;
++
++ esac
++
++fi
++# ---------------------------------------------------------
++# Complete the configuration
++# ---------------------------------------------------------
++$MKCONFIG -a gta01 arm arm920t gta01 NULL s3c24x0
+Index: git/include/configs/gta01.h
+===================================================================
+--- git.orig/include/configs/gta01.h 2007-01-04 12:22:08.000000000 +0100
++++ git/include/configs/gta01.h 2007-01-04 12:22:12.000000000 +0100
+@@ -124,7 +124,11 @@
+ * Miscellaneous configurable options
+ */
+ #define CFG_LONGHELP /* undef to save memory */
+-#define CFG_PROMPT "GTA01 # " /* Monitor Command Prompt */
++#if defined(CONFIG_ARCH_GTA01_v3)
++#define CFG_PROMPT "GTA01v3 # " /* Monitor Command Prompt */
++#elif defined(CONFIG_ARCH_GTA01_v4)
++#define CFG_PROMPT "GTA01v4 # " /* Monitor Command Prompt */
++#endif
+ #define CFG_CBSIZE 256 /* Console I/O Buffer Size */
+ #define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
+ #define CFG_MAXARGS 16 /* max number of command args */
diff --git a/packages/uboot/files/u-boot-20061030-qt2410-gta01.patch b/packages/uboot/files/u-boot-20061030-qt2410-gta01.patch
new file mode 100644
index 0000000000..91f85479bc
--- /dev/null
+++ b/packages/uboot/files/u-boot-20061030-qt2410-gta01.patch
@@ -0,0 +1,9272 @@
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile 2007-01-04 12:21:15.000000000 +0100
++++ git/Makefile 2007-01-04 12:21:18.000000000 +0100
+@@ -1913,6 +1913,12 @@
+ sbc2410x_config: unconfig
+ @$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s3c24x0
+
++qt2410_config : unconfig
++ @./mkconfig $(@:_config=) arm arm920t qt2410 NULL s3c24x0
++
++gta01_config : unconfig
++ @./mkconfig $(@:_config=) arm arm920t gta01 NULL s3c24x0
++
+ scb9328_config : unconfig
+ @$(MKCONFIG) $(@:_config=) arm arm920t scb9328 NULL imx
+
+Index: git/board/gta01/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/board/gta01/Makefile 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,47 @@
++#
++# (C) Copyright 2000, 2001, 2002
++# 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 = lib$(BOARD).a
++
++OBJS := gta01.o
++SOBJS := lowlevel_init.o
++
++$(LIB): $(OBJS) $(SOBJS)
++ $(AR) crv $@ $(OBJS) $(SOBJS)
++
++clean:
++ rm -f $(SOBJS) $(OBJS)
++
++distclean: clean
++ rm -f $(LIB) core *.bak .depend
++
++#########################################################################
++
++.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
++ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
++
++-include .depend
++
++#########################################################################
+Index: git/board/gta01/config.mk
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/board/gta01/config.mk 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,25 @@
++#
++# (C) Copyright 2002
++# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
++# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
++#
++# FIC GTA01 board with S3C2410X (ARM920T) cpu
++#
++# see http://www.samsung.com/ for more information on SAMSUNG
++#
++
++#
++# GTA01 has 1 bank of 64 MB DRAM
++#
++# 3000'0000 to 3400'0000
++#
++# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
++# optionally with a ramdisk at 3080'0000
++#
++# we load ourself to 33F8'0000
++#
++# download area is 3300'0000
++#
++
++
++TEXT_BASE = 0x33F80000
+Index: git/board/gta01/gta01.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/board/gta01/gta01.c 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,147 @@
++/*
++ * (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
++ *
++ * based on existing S3C2410 startup code in u-boot:
++ *
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Marius Groeger <mgroeger@sysgo.de>
++ *
++ * (C) Copyright 2002
++ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
++ *
++ * 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 <s3c2410.h>
++#include <i2c.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#if 1
++//#define M_MDIV 0xA1 /* Fout = 202.8MHz */
++//#define M_PDIV 0x3
++//#define M_SDIV 0x1
++#define M_MDIV 0x90 /* Fout = 202.8MHz */
++#define M_PDIV 0x7
++#define M_SDIV 0x0
++#else
++#define M_MDIV 0x5c /* Fout = 150.0MHz */
++#define M_PDIV 0x4
++#define M_SDIV 0x0
++#endif
++
++#if 1
++#define U_M_MDIV 0x78
++#define U_M_PDIV 0x2
++#define U_M_SDIV 0x3
++#else
++#define U_M_MDIV 0x48
++#define U_M_PDIV 0x3
++#define U_M_SDIV 0x2
++#endif
++
++static inline void delay (unsigned long loops)
++{
++ __asm__ volatile ("1:\n"
++ "subs %0, %1, #1\n"
++ "bne 1b":"=r" (loops):"0" (loops));
++}
++
++/*
++ * Miscellaneous platform dependent initialisations
++ */
++
++int board_init (void)
++{
++ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
++ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
++
++ /* to reduce PLL lock time, adjust the LOCKTIME register */
++ clk_power->LOCKTIME = 0xFFFFFF;
++
++ /* configure MPLL */
++ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
++
++ /* some delay between MPLL and UPLL */
++ delay (4000);
++
++ /* configure UPLL */
++ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
++
++ /* some delay between MPLL and UPLL */
++ delay (8000);
++
++ /* set up the I/O ports */
++ gpio->GPACON = 0x007FFFFF;
++
++ gpio->GPBCON = 0x00005056;
++ gpio->GPBUP = 0x000007FF;
++
++ gpio->GPCCON = 0xAAAA12A8;
++ gpio->GPCUP = 0x0000FFFF;
++
++ gpio->GPDCON = 0xAAAAAAAA;
++ gpio->GPDUP = 0x0000FFFF;
++
++ gpio->GPECON = 0xAAAAAAAA;
++ gpio->GPEUP = 0x0000FFFF;
++
++ gpio->GPFCON = 0x00002AA9;
++ gpio->GPFUP = 0x000000FF;
++
++ gpio->GPGCON = 0xA846F0C0;
++ gpio->GPGUP = 0x0000AFEF;
++
++ gpio->GPHCON = 0x0008FAAA;
++ gpio->GPHUP = 0x000007FF;
++
++ /* arch number of SMDK2410-Board */
++ gd->bd->bi_arch_number = MACH_TYPE_GTA01;
++
++ /* adress of boot parameters */
++ gd->bd->bi_boot_params = 0x30000100;
++
++ icache_enable();
++ dcache_enable();
++
++ return 0;
++}
++
++int board_late_init(void)
++{
++ const char mmc_power = 0x8f;
++ /* enable D3REG 3.3V (SC/MMC power) */
++ i2c_write(0x08, 0x25, 1, &mmc_power, 1);
++ return 0;
++}
++
++int dram_init (void)
++{
++ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
++ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
++
++ return 0;
++}
++
++u_int32_t get_board_rev(void)
++{
++ return 0x00000130;
++}
+Index: git/board/gta01/lowlevel_init.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/board/gta01/lowlevel_init.S 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,171 @@
++/*
++ * Memory Setup stuff - taken from blob memsetup.S
++ *
++ * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
++ * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
++ *
++ * Modified for the FIC GTA01 by Harald Welte <hwelte@hmw-consulting.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 <config.h>
++#include <version.h>
++
++
++/* some parameters for the board */
++
++/*
++ *
++ * Taken from linux/arch/arm/boot/compressed/head-s3c2410.S
++ *
++ * Copyright (C) 2002 Samsung Electronics SW.LEE <hitchcar@sec.samsung.com>
++ *
++ */
++
++#define BWSCON 0x48000000
++
++/* BWSCON */
++#define DW8 (0x0)
++#define DW16 (0x1)
++#define DW32 (0x2)
++#define WAIT (0x1<<2)
++#define UBLB (0x1<<3)
++
++#define B1_BWSCON (DW32)
++#define B2_BWSCON (DW16)
++#define B3_BWSCON (DW16 + WAIT + UBLB)
++#define B4_BWSCON (DW16)
++#define B5_BWSCON (DW16)
++#define B6_BWSCON (DW32)
++#define B7_BWSCON (DW32)
++
++/* BANK0CON */
++#define B0_Tacs 0x0 /* 0clk */
++#define B0_Tcos 0x0 /* 0clk */
++#define B0_Tacc 0x7 /* 14clk */
++#define B0_Tcoh 0x0 /* 0clk */
++#define B0_Tah 0x0 /* 0clk */
++#define B0_Tacp 0x0
++#define B0_PMC 0x0 /* normal */
++
++/* BANK1CON */
++#define B1_Tacs 0x0 /* 0clk */
++#define B1_Tcos 0x0 /* 0clk */
++#define B1_Tacc 0x7 /* 14clk */
++#define B1_Tcoh 0x0 /* 0clk */
++#define B1_Tah 0x0 /* 0clk */
++#define B1_Tacp 0x0
++#define B1_PMC 0x0
++
++#define B2_Tacs 0x0
++#define B2_Tcos 0x0
++#define B2_Tacc 0x7
++#define B2_Tcoh 0x0
++#define B2_Tah 0x0
++#define B2_Tacp 0x0
++#define B2_PMC 0x0
++
++#define B3_Tacs 0x0 /* 0clk */
++#define B3_Tcos 0x3 /* 4clk */
++#define B3_Tacc 0x7 /* 14clk */
++#define B3_Tcoh 0x1 /* 1clk */
++#define B3_Tah 0x0 /* 0clk */
++#define B3_Tacp 0x3 /* 6clk */
++#define B3_PMC 0x0 /* normal */
++
++#define B4_Tacs 0x0 /* 0clk */
++#define B4_Tcos 0x0 /* 0clk */
++#define B4_Tacc 0x7 /* 14clk */
++#define B4_Tcoh 0x0 /* 0clk */
++#define B4_Tah 0x0 /* 0clk */
++#define B4_Tacp 0x0
++#define B4_PMC 0x0 /* normal */
++
++#define B5_Tacs 0x0 /* 0clk */
++#define B5_Tcos 0x0 /* 0clk */
++#define B5_Tacc 0x7 /* 14clk */
++#define B5_Tcoh 0x0 /* 0clk */
++#define B5_Tah 0x0 /* 0clk */
++#define B5_Tacp 0x0
++#define B5_PMC 0x0 /* normal */
++
++#define B6_MT 0x3 /* SDRAM */
++#define B6_Trcd 0x1
++#define B6_SCAN 0x1 /* 9bit */
++
++#define B7_MT 0x3 /* SDRAM */
++#define B7_Trcd 0x1 /* 3clk */
++#define B7_SCAN 0x1 /* 9bit */
++
++/* REFRESH parameter */
++#define REFEN 0x1 /* Refresh enable */
++#define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */
++#define Trp 0x1 /* 3clk */
++#define Trc 0x3 /* 7clk */
++#define Tchr 0x2 /* 3clk */
++//#define REFCNT 1113 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
++#define REFCNT 997 /* period=17.5us, HCLK=60Mhz, (2048+1-15.6*60) */
++/**************************************/
++
++_TEXT_BASE:
++ .word TEXT_BASE
++
++.globl lowlevel_init
++lowlevel_init:
++ /* memory control configuration */
++ /* make r0 relative the current location so that it */
++ /* reads SMRDATA out of FLASH rather than memory ! */
++ ldr r0, =SMRDATA
++ ldr r1, _TEXT_BASE
++ sub r0, r0, r1
++ ldr r1, =BWSCON /* Bus Width Status Controller */
++ add r2, r0, #13*4
++0:
++ ldr r3, [r0], #4
++ str r3, [r1], #4
++ cmp r2, r0
++ bne 0b
++
++ /* setup asynchronous bus mode */
++ mrc p15, 0, r1 ,c1 ,c0, 0
++ orr r1, r1, #0xc0000000
++ mcr p15, 0, r1, c1, c0, 0
++
++ /* everything is fine now */
++ mov pc, lr
++
++ .ltorg
++/* the literal pools origin */
++
++SMRDATA:
++ .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
++ .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
++ .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
++ .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
++ .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
++ .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
++ .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
++ .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
++ .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
++ .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
++ .word 0xb2
++ .word 0x30
++ .word 0x30
+Index: git/board/gta01/u-boot.lds
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/board/gta01/u-boot.lds 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,57 @@
++/*
++ * (C) Copyright 2002
++ * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
++/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
++OUTPUT_ARCH(arm)
++ENTRY(_start)
++SECTIONS
++{
++ . = 0x00000000;
++
++ . = ALIGN(4);
++ .text :
++ {
++ cpu/arm920t/start.o (.text)
++ *(.text)
++ }
++
++ . = ALIGN(4);
++ .rodata : { *(.rodata) }
++
++ . = ALIGN(4);
++ .data : { *(.data) }
++
++ . = ALIGN(4);
++ .got : { *(.got) }
++
++ . = .;
++ __u_boot_cmd_start = .;
++ .u_boot_cmd : { *(.u_boot_cmd) }
++ __u_boot_cmd_end = .;
++
++ . = ALIGN(4);
++ __bss_start = .;
++ .bss : { *(.bss) }
++ _end = .;
++}
+Index: git/board/qt2410/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/board/qt2410/Makefile 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,47 @@
++#
++# (C) Copyright 2000, 2001, 2002
++# 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 = lib$(BOARD).a
++
++OBJS := qt2410.o flash.o
++SOBJS := lowlevel_init.o
++
++$(LIB): $(OBJS) $(SOBJS)
++ $(AR) crv $@ $(OBJS) $(SOBJS)
++
++clean:
++ rm -f $(SOBJS) $(OBJS)
++
++distclean: clean
++ rm -f $(LIB) core *.bak .depend
++
++#########################################################################
++
++.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
++ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
++
++-include .depend
++
++#########################################################################
+Index: git/board/qt2410/config.mk
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/board/qt2410/config.mk 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,25 @@
++#
++# (C) Copyright 2002
++# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
++# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
++#
++# SAMSUNG SMDK2410 board with S3C2410X (ARM920T) cpu
++#
++# see http://www.samsung.com/ for more information on SAMSUNG
++#
++
++#
++# SMDK2410 has 1 bank of 64 MB DRAM
++#
++# 3000'0000 to 3400'0000
++#
++# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
++# optionally with a ramdisk at 3080'0000
++#
++# we load ourself to 33F8'0000
++#
++# download area is 3300'0000
++#
++
++
++TEXT_BASE = 0x33F80000
+Index: git/board/qt2410/flash.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/board/qt2410/flash.c 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,435 @@
++/*
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Alex Zuepke <azu@sysgo.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>
++
++ulong myflush (void);
++
++
++#define FLASH_BANK_SIZE PHYS_FLASH_SIZE
++#define MAIN_SECT_SIZE 0x10000 /* 64 KB */
++
++flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
++
++
++#define CMD_READ_ARRAY 0x000000F0
++#define CMD_UNLOCK1 0x000000AA
++#define CMD_UNLOCK2 0x00000055
++#define CMD_ERASE_SETUP 0x00000080
++#define CMD_ERASE_CONFIRM 0x00000030
++#define CMD_PROGRAM 0x000000A0
++#define CMD_UNLOCK_BYPASS 0x00000020
++
++#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00000555 << 1)))
++#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x000002AA << 1)))
++
++#define BIT_ERASE_DONE 0x00000080
++#define BIT_RDY_MASK 0x00000080
++#define BIT_PROGRAM_ERROR 0x00000020
++#define BIT_TIMEOUT 0x80000000 /* our flag */
++
++#define READY 1
++#define ERR 2
++#define TMO 4
++
++/*-----------------------------------------------------------------------
++ */
++
++ulong flash_init (void)
++{
++ int i, j;
++ ulong size = 0;
++
++ for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
++ ulong flashbase = 0;
++
++ flash_info[i].flash_id =
++#if defined(CONFIG_AMD_LV400)
++ (AMD_MANUFACT & FLASH_VENDMASK) |
++ (AMD_ID_LV400B & FLASH_TYPEMASK);
++#elif defined(CONFIG_AMD_LV800)
++ (AMD_MANUFACT & FLASH_VENDMASK) |
++ (AMD_ID_LV800B & FLASH_TYPEMASK);
++#else
++#error "Unknown flash configured"
++#endif
++ flash_info[i].size = FLASH_BANK_SIZE;
++ flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
++ memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
++ if (i == 0)
++ flashbase = PHYS_FLASH_1;
++ else
++ panic ("configured too many flash banks!\n");
++ for (j = 0; j < flash_info[i].sector_count; j++) {
++ if (j <= 3) {
++ /* 1st one is 16 KB */
++ if (j == 0) {
++ flash_info[i].start[j] =
++ flashbase + 0;
++ }
++
++ /* 2nd and 3rd are both 8 KB */
++ if ((j == 1) || (j == 2)) {
++ flash_info[i].start[j] =
++ flashbase + 0x4000 + (j -
++ 1) *
++ 0x2000;
++ }
++
++ /* 4th 32 KB */
++ if (j == 3) {
++ flash_info[i].start[j] =
++ flashbase + 0x8000;
++ }
++ } else {
++ flash_info[i].start[j] =
++ flashbase + (j - 3) * MAIN_SECT_SIZE;
++ }
++ }
++ size += flash_info[i].size;
++ }
++
++ flash_protect (FLAG_PROTECT_SET,
++ CFG_FLASH_BASE,
++ CFG_FLASH_BASE + monitor_flash_len - 1,
++ &flash_info[0]);
++
++#if 0
++ flash_protect (FLAG_PROTECT_SET,
++ CFG_ENV_ADDR,
++ CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
++#endif
++
++ return size;
++}
++
++/*-----------------------------------------------------------------------
++ */
++void flash_print_info (flash_info_t * info)
++{
++ int i;
++
++ switch (info->flash_id & FLASH_VENDMASK) {
++ case (AMD_MANUFACT & FLASH_VENDMASK):
++ printf ("AMD: ");
++ break;
++ default:
++ printf ("Unknown Vendor ");
++ break;
++ }
++
++ switch (info->flash_id & FLASH_TYPEMASK) {
++ case (AMD_ID_LV400B & FLASH_TYPEMASK):
++ printf ("1x Amd29LV400BB (4Mbit)\n");
++ break;
++ case (AMD_ID_LV800B & FLASH_TYPEMASK):
++ printf ("1x Amd29LV800BB (8Mbit)\n");
++ break;
++ default:
++ printf ("Unknown Chip Type\n");
++ goto Done;
++ break;
++ }
++
++ printf (" Size: %ld MB in %d Sectors\n",
++ info->size >> 20, info->sector_count);
++
++ printf (" Sector Start Addresses:");
++ for (i = 0; i < info->sector_count; i++) {
++ if ((i % 5) == 0) {
++ printf ("\n ");
++ }
++ printf (" %08lX%s", info->start[i],
++ info->protect[i] ? " (RO)" : " ");
++ }
++ printf ("\n");
++
++ Done:;
++}
++
++/*-----------------------------------------------------------------------
++ */
++
++int flash_erase (flash_info_t * info, int s_first, int s_last)
++{
++ ushort result;
++ int iflag, cflag, prot, sect;
++ int rc = ERR_OK;
++ int chip;
++
++ /* first look for protection bits */
++
++ if (info->flash_id == FLASH_UNKNOWN)
++ return ERR_UNKNOWN_FLASH_TYPE;
++
++ if ((s_first < 0) || (s_first > s_last)) {
++ return ERR_INVAL;
++ }
++
++ if ((info->flash_id & FLASH_VENDMASK) !=
++ (AMD_MANUFACT & FLASH_VENDMASK)) {
++ return ERR_UNKNOWN_FLASH_VENDOR;
++ }
++
++ prot = 0;
++ for (sect = s_first; sect <= s_last; ++sect) {
++ if (info->protect[sect]) {
++ prot++;
++ }
++ }
++ if (prot)
++ return ERR_PROTECTED;
++
++ /*
++ * Disable interrupts which might cause a timeout
++ * here. Remember that our exception vectors are
++ * at address 0 in the flash, and we don't want a
++ * (ticker) exception to happen while the flash
++ * chip is in programming mode.
++ */
++ cflag = icache_status ();
++ icache_disable ();
++ iflag = disable_interrupts ();
++
++ /* Start erase on unprotected sectors */
++ for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
++ printf ("Erasing sector %2d ... ", sect);
++
++ /* arm simple, non interrupt dependent timer */
++ reset_timer_masked ();
++
++ if (info->protect[sect] == 0) { /* not protected */
++ vu_short *addr = (vu_short *) (info->start[sect]);
++
++ MEM_FLASH_ADDR1 = CMD_UNLOCK1;
++ MEM_FLASH_ADDR2 = CMD_UNLOCK2;
++ MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
++
++ MEM_FLASH_ADDR1 = CMD_UNLOCK1;
++ MEM_FLASH_ADDR2 = CMD_UNLOCK2;
++ *addr = CMD_ERASE_CONFIRM;
++
++ /* wait until flash is ready */
++ chip = 0;
++
++ do {
++ result = *addr;
++
++ /* check timeout */
++ if (get_timer_masked () >
++ CFG_FLASH_ERASE_TOUT) {
++ MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
++ chip = TMO;
++ break;
++ }
++
++ if (!chip
++ && (result & 0xFFFF) & BIT_ERASE_DONE)
++ chip = READY;
++
++ if (!chip
++ && (result & 0xFFFF) & BIT_PROGRAM_ERROR)
++ chip = ERR;
++
++ } while (!chip);
++
++ MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
++
++ if (chip == ERR) {
++ rc = ERR_PROG_ERROR;
++ goto outahere;
++ }
++ if (chip == TMO) {
++ rc = ERR_TIMOUT;
++ goto outahere;
++ }
++
++ printf ("ok.\n");
++ } else { /* it was protected */
++
++ printf ("protected!\n");
++ }
++ }
++
++ if (ctrlc ())
++ printf ("User Interrupt!\n");
++
++ outahere:
++ /* allow flash to settle - wait 10 ms */
++ udelay_masked (10000);
++
++ if (iflag)
++ enable_interrupts ();
++
++ if (cflag)
++ icache_enable ();
++
++ return rc;
++}
++
++/*-----------------------------------------------------------------------
++ * Copy memory to flash
++ */
++
++volatile static int write_hword (flash_info_t * info, ulong dest, ushort data)
++{
++ vu_short *addr = (vu_short *) dest;
++ ushort result;
++ int rc = ERR_OK;
++ int cflag, iflag;
++ int chip;
++
++ /*
++ * Check if Flash is (sufficiently) erased
++ */
++ result = *addr;
++ if ((result & data) != data)
++ return ERR_NOT_ERASED;
++
++
++ /*
++ * Disable interrupts which might cause a timeout
++ * here. Remember that our exception vectors are
++ * at address 0 in the flash, and we don't want a
++ * (ticker) exception to happen while the flash
++ * chip is in programming mode.
++ */
++ cflag = icache_status ();
++ icache_disable ();
++ iflag = disable_interrupts ();
++
++ MEM_FLASH_ADDR1 = CMD_UNLOCK1;
++ MEM_FLASH_ADDR2 = CMD_UNLOCK2;
++ MEM_FLASH_ADDR1 = CMD_UNLOCK_BYPASS;
++ *addr = CMD_PROGRAM;
++ *addr = data;
++
++ /* arm simple, non interrupt dependent timer */
++ reset_timer_masked ();
++
++ /* wait until flash is ready */
++ chip = 0;
++ do {
++ result = *addr;
++
++ /* check timeout */
++ if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
++ chip = ERR | TMO;
++ break;
++ }
++ if (!chip && ((result & 0x80) == (data & 0x80)))
++ chip = READY;
++
++ if (!chip && ((result & 0xFFFF) & BIT_PROGRAM_ERROR)) {
++ result = *addr;
++
++ if ((result & 0x80) == (data & 0x80))
++ chip = READY;
++ else
++ chip = ERR;
++ }
++
++ } while (!chip);
++
++ *addr = CMD_READ_ARRAY;
++
++ if (chip == ERR || *addr != data)
++ rc = ERR_PROG_ERROR;
++
++ if (iflag)
++ enable_interrupts ();
++
++ if (cflag)
++ icache_enable ();
++
++ return rc;
++}
++
++/*-----------------------------------------------------------------------
++ * Copy memory to flash.
++ */
++
++int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
++{
++ ulong cp, wp;
++ int l;
++ int i, rc;
++ ushort data;
++
++ wp = (addr & ~1); /* get lower word aligned address */
++
++ /*
++ * handle unaligned start bytes
++ */
++ if ((l = addr - wp) != 0) {
++ data = 0;
++ for (i = 0, cp = wp; i < l; ++i, ++cp) {
++ data = (data >> 8) | (*(uchar *) cp << 8);
++ }
++ for (; i < 2 && cnt > 0; ++i) {
++ data = (data >> 8) | (*src++ << 8);
++ --cnt;
++ ++cp;
++ }
++ for (; cnt == 0 && i < 2; ++i, ++cp) {
++ data = (data >> 8) | (*(uchar *) cp << 8);
++ }
++
++ if ((rc = write_hword (info, wp, data)) != 0) {
++ return (rc);
++ }
++ wp += 2;
++ }
++
++ /*
++ * handle word aligned part
++ */
++ while (cnt >= 2) {
++ data = *((vu_short *) src);
++ if ((rc = write_hword (info, wp, data)) != 0) {
++ return (rc);
++ }
++ src += 2;
++ wp += 2;
++ cnt -= 2;
++ }
++
++ if (cnt == 0) {
++ return ERR_OK;
++ }
++
++ /*
++ * handle unaligned tail bytes
++ */
++ data = 0;
++ for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
++ data = (data >> 8) | (*src++ << 8);
++ --cnt;
++ }
++ for (; i < 2; ++i, ++cp) {
++ data = (data >> 8) | (*(uchar *) cp << 8);
++ }
++
++ return write_hword (info, wp, data);
++}
+Index: git/board/qt2410/lowlevel_init.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/board/qt2410/lowlevel_init.S 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,173 @@
++/*
++ * Memory Setup stuff - taken from blob memsetup.S
++ *
++ * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
++ * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
++ *
++ * Modified for the Samsung SMDK2410 by
++ * (C) Copyright 2002
++ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
++ *
++ * 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 <config.h>
++#include <version.h>
++
++
++/* some parameters for the board */
++
++/*
++ *
++ * Taken from linux/arch/arm/boot/compressed/head-s3c2410.S
++ *
++ * Copyright (C) 2002 Samsung Electronics SW.LEE <hitchcar@sec.samsung.com>
++ *
++ */
++
++#define BWSCON 0x48000000
++
++/* BWSCON */
++#define DW8 (0x0)
++#define DW16 (0x1)
++#define DW32 (0x2)
++#define WAIT (0x1<<2)
++#define UBLB (0x1<<3)
++
++#define B1_BWSCON (DW32)
++#define B2_BWSCON (DW16)
++#define B3_BWSCON (DW16 + WAIT + UBLB)
++#define B4_BWSCON (DW16)
++#define B5_BWSCON (DW16)
++#define B6_BWSCON (DW32)
++#define B7_BWSCON (DW32)
++
++/* BANK0CON */
++#define B0_Tacs 0x0 /* 0clk */
++#define B0_Tcos 0x0 /* 0clk */
++#define B0_Tacc 0x7 /* 14clk */
++#define B0_Tcoh 0x0 /* 0clk */
++#define B0_Tah 0x0 /* 0clk */
++#define B0_Tacp 0x0
++#define B0_PMC 0x0 /* normal */
++
++/* BANK1CON */
++#define B1_Tacs 0x0 /* 0clk */
++#define B1_Tcos 0x0 /* 0clk */
++#define B1_Tacc 0x7 /* 14clk */
++#define B1_Tcoh 0x0 /* 0clk */
++#define B1_Tah 0x0 /* 0clk */
++#define B1_Tacp 0x0
++#define B1_PMC 0x0
++
++#define B2_Tacs 0x0
++#define B2_Tcos 0x0
++#define B2_Tacc 0x7
++#define B2_Tcoh 0x0
++#define B2_Tah 0x0
++#define B2_Tacp 0x0
++#define B2_PMC 0x0
++
++#define B3_Tacs 0x0 /* 0clk */
++#define B3_Tcos 0x3 /* 4clk */
++#define B3_Tacc 0x7 /* 14clk */
++#define B3_Tcoh 0x1 /* 1clk */
++#define B3_Tah 0x0 /* 0clk */
++#define B3_Tacp 0x3 /* 6clk */
++#define B3_PMC 0x0 /* normal */
++
++#define B4_Tacs 0x0 /* 0clk */
++#define B4_Tcos 0x0 /* 0clk */
++#define B4_Tacc 0x7 /* 14clk */
++#define B4_Tcoh 0x0 /* 0clk */
++#define B4_Tah 0x0 /* 0clk */
++#define B4_Tacp 0x0
++#define B4_PMC 0x0 /* normal */
++
++#define B5_Tacs 0x0 /* 0clk */
++#define B5_Tcos 0x0 /* 0clk */
++#define B5_Tacc 0x7 /* 14clk */
++#define B5_Tcoh 0x0 /* 0clk */
++#define B5_Tah 0x0 /* 0clk */
++#define B5_Tacp 0x0
++#define B5_PMC 0x0 /* normal */
++
++#define B6_MT 0x3 /* SDRAM */
++#define B6_Trcd 0x1
++#define B6_SCAN 0x1 /* 9bit */
++
++#define B7_MT 0x3 /* SDRAM */
++#define B7_Trcd 0x1 /* 3clk */
++#define B7_SCAN 0x1 /* 9bit */
++
++/* REFRESH parameter */
++#define REFEN 0x1 /* Refresh enable */
++#define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */
++#define Trp 0x1 /* 3clk */
++#define Trc 0x3 /* 7clk */
++#define Tchr 0x2 /* 3clk */
++//#define REFCNT 1113 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
++#define REFCNT 997 /* period=17.5us, HCLK=60Mhz, (2048+1-15.6*60) */
++/**************************************/
++
++_TEXT_BASE:
++ .word TEXT_BASE
++
++.globl lowlevel_init
++lowlevel_init:
++ /* memory control configuration */
++ /* make r0 relative the current location so that it */
++ /* reads SMRDATA out of FLASH rather than memory ! */
++ ldr r0, =SMRDATA
++ ldr r1, _TEXT_BASE
++ sub r0, r0, r1
++ ldr r1, =BWSCON /* Bus Width Status Controller */
++ add r2, r0, #13*4
++0:
++ ldr r3, [r0], #4
++ str r3, [r1], #4
++ cmp r2, r0
++ bne 0b
++
++ /* setup asynchronous bus mode */
++ mrc p15, 0, r1 ,c1 ,c0, 0
++ orr r1, r1, #0xc0000000
++ mcr p15, 0, r1, c1, c0, 0
++
++ /* everything is fine now */
++ mov pc, lr
++
++ .ltorg
++/* the literal pools origin */
++
++SMRDATA:
++ .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
++ .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
++ .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
++ .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
++ .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
++ .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
++ .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
++ .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
++ .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
++ .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
++ .word 0xb2
++ .word 0x30
++ .word 0x30
+Index: git/board/qt2410/qt2410.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/board/qt2410/qt2410.c 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,127 @@
++/*
++ * (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
++ *
++ * based on existing S3C2410 startup code in u-boot:
++ *
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Marius Groeger <mgroeger@sysgo.de>
++ *
++ * (C) Copyright 2002
++ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
++ *
++ * 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 <s3c2410.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#if 1
++//#define M_MDIV 0xA1 /* Fout = 202.8MHz */
++//#define M_PDIV 0x3
++//#define M_SDIV 0x1
++#define M_MDIV 0x90 /* Fout = 202.8MHz */
++#define M_PDIV 0x7
++#define M_SDIV 0x0
++#else
++#define M_MDIV 0x5c /* Fout = 150.0MHz */
++#define M_PDIV 0x4
++#define M_SDIV 0x0
++#endif
++
++#if 1
++#define U_M_MDIV 0x78
++#define U_M_PDIV 0x2
++#define U_M_SDIV 0x3
++#else
++#define U_M_MDIV 0x48
++#define U_M_PDIV 0x3
++#define U_M_SDIV 0x2
++#endif
++
++static inline void delay (unsigned long loops)
++{
++ __asm__ volatile ("1:\n"
++ "subs %0, %1, #1\n"
++ "bne 1b":"=r" (loops):"0" (loops));
++}
++
++/*
++ * Miscellaneous platform dependent initialisations
++ */
++
++int board_init (void)
++{
++ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
++ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
++
++ /* to reduce PLL lock time, adjust the LOCKTIME register */
++ clk_power->LOCKTIME = 0xFFFFFF;
++
++ /* configure MPLL */
++ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
++
++ /* some delay between MPLL and UPLL */
++ delay (4000);
++
++ /* configure UPLL */
++ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
++
++ /* some delay between MPLL and UPLL */
++ delay (8000);
++
++ /* set up the I/O ports */
++ gpio->GPACON = 0x007FFFFF;
++ gpio->GPBCON = 0x00044555;
++ gpio->GPBUP = 0x000007FF;
++ gpio->GPCCON = 0xAAAAAAAA;
++ gpio->GPCUP = 0x0000FFFF;
++ gpio->GPDCON = 0xAAAAAAAA;
++ gpio->GPDUP = 0x0000FFFF;
++ gpio->GPECON = 0xAAAAAAAA;
++ gpio->GPEUP = 0x0000FFFF;
++ gpio->GPFCON = 0x000055AA;
++ gpio->GPFUP = 0x000000FF;
++ gpio->GPGCON = 0xFF95FFBA;
++ //gpio->GPGUP = 0x0000FFFF;
++ gpio->GPGUP = 0x0000AFEF;
++ gpio->GPHCON = 0x0028FAAA;
++ gpio->GPHUP = 0x000007FF;
++
++ /* arch number of SMDK2410-Board */
++ gd->bd->bi_arch_number = MACH_TYPE_QT2410;
++
++ /* adress of boot parameters */
++ gd->bd->bi_boot_params = 0x30000100;
++
++ icache_enable();
++ dcache_enable();
++
++ return 0;
++}
++
++int dram_init (void)
++{
++ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
++ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
++
++ return 0;
++}
+Index: git/board/qt2410/u-boot.lds
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/board/qt2410/u-boot.lds 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,57 @@
++/*
++ * (C) Copyright 2002
++ * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
++/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
++OUTPUT_ARCH(arm)
++ENTRY(_start)
++SECTIONS
++{
++ . = 0x00000000;
++
++ . = ALIGN(4);
++ .text :
++ {
++ cpu/arm920t/start.o (.text)
++ *(.text)
++ }
++
++ . = ALIGN(4);
++ .rodata : { *(.rodata) }
++
++ . = ALIGN(4);
++ .data : { *(.data) }
++
++ . = ALIGN(4);
++ .got : { *(.got) }
++
++ . = .;
++ __u_boot_cmd_start = .;
++ .u_boot_cmd : { *(.u_boot_cmd) }
++ __u_boot_cmd_end = .;
++
++ . = ALIGN(4);
++ __bss_start = .;
++ .bss : { *(.bss) }
++ _end = .;
++}
+Index: git/common/Makefile
+===================================================================
+--- git.orig/common/Makefile 2007-01-04 12:21:15.000000000 +0100
++++ git/common/Makefile 2007-01-04 12:21:18.000000000 +0100
+@@ -28,7 +28,7 @@
+ AOBJS =
+
+ COBJS = main.o ACEX1K.o altera.o bedbug.o circbuf.o \
+- cmd_ace.o cmd_autoscript.o \
++ cmd_ace.o cmd_arm920.o cmd_autoscript.o \
+ cmd_bdinfo.o cmd_bedbug.o cmd_bmp.o cmd_boot.o cmd_bootm.o \
+ cmd_cache.o cmd_console.o \
+ cmd_date.o cmd_dcr.o cmd_diag.o cmd_display.o cmd_doc.o cmd_dtt.o \
+Index: git/common/cmd_arm920.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/common/cmd_arm920.c 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,64 @@
++/*
++ * (C) Copyright 2003
++ * 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
++ */
++
++/*
++ * Boot support
++ */
++#include <common.h>
++#include <command.h>
++#include <net.h> /* for print_IPaddr */
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#if (CONFIG_COMMANDS & CFG_CMD_BDI)
++
++extern unsigned long read_p15_c1(void);
++extern void write_p15_c1(unsigned long);
++
++int do_arm920 ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
++{
++ int i;
++
++ if (strcmp(argv[1], "cp15c1")) {
++ printf("Usage:\n%s\n", cmdtp->usage);
++ return 1;
++ }
++
++ if (!strcmp(argv[2], "write")) {
++ ulong val = simple_strtoul(argv[3], NULL, 16);
++ printf("setting cp15c1 to 0x%08x\n", val);
++ write_p15_c1(val);
++ } else if (!strcmp(argv[2], "read"))
++ printf("cp15c1 = 0x%08x\n", read_p15_c1());
++
++ return 0;
++}
++
++/* -------------------------------------------------------------------- */
++
++U_BOOT_CMD(
++ arm920, 4, 1, do_arm920,
++ "arm920_cp15 - print cp15",
++ NULL
++);
++#endif /* CFG_CMD_BDI */
+Index: git/cpu/arm920t/cpu.c
+===================================================================
+--- git.orig/cpu/arm920t/cpu.c 2007-01-04 12:21:15.000000000 +0100
++++ git/cpu/arm920t/cpu.c 2007-01-04 12:21:18.000000000 +0100
+@@ -38,7 +38,7 @@
+ #endif
+
+ /* read co-processor 15, register #1 (control register) */
+-static unsigned long read_p15_c1 (void)
++unsigned long read_p15_c1 (void)
+ {
+ unsigned long value;
+
+@@ -55,7 +55,7 @@
+ }
+
+ /* write to co-processor 15, register #1 (control register) */
+-static void write_p15_c1 (unsigned long value)
++void write_p15_c1 (unsigned long value)
+ {
+ #ifdef MMU_DEBUG
+ printf ("write %08lx to p15/c1\n", value);
+Index: git/cpu/arm920t/s3c24x0/Makefile
+===================================================================
+--- git.orig/cpu/arm920t/s3c24x0/Makefile 2007-01-04 12:21:15.000000000 +0100
++++ git/cpu/arm920t/s3c24x0/Makefile 2007-01-04 12:21:18.000000000 +0100
+@@ -26,7 +26,7 @@
+ LIB = $(obj)lib$(SOC).a
+
+ COBJS = i2c.o interrupts.o serial.o speed.o \
+- usb_ohci.o
++ usb_ohci.o mmc.o nand_read.o nand.o
+
+ SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+ OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+Index: git/cpu/arm920t/s3c24x0/mmc.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/cpu/arm920t/s3c24x0/mmc.c 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,568 @@
++/*
++ * u-boot S3C2410 MMC/SD card driver
++ * (C) Copyright 2006 by Harald Welte <laforge@gnumonks.org>
++ *
++ * based on u-boot pxa MMC driver and linux/drivers/mmc/s3c2410mci.c
++ * (C) 2005-2005 Thomas Kleffel
++ *
++ * 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 <config.h>
++#include <common.h>
++#include <mmc.h>
++#include <asm/errno.h>
++#include <asm/io.h>
++#include <s3c2410.h>
++#include <part.h>
++
++#ifdef CONFIG_MMC
++
++#define CONFIG_MMC_WIDE
++
++//#define MMC_DEBUG
++
++#ifdef MMC_DEBUG
++#ifdef debug
++#undef debug
++#endif
++#define debug printf
++#endif
++
++static S3C2410_SDI *sdi;
++
++extern int
++fat_register_device(block_dev_desc_t *dev_desc, int part_no);
++
++static block_dev_desc_t mmc_dev;
++
++block_dev_desc_t * mmc_get_dev(int dev)
++{
++ return ((block_dev_desc_t *)&mmc_dev);
++}
++
++/*
++ * FIXME needs to read cid and csd info to determine block size
++ * and other parameters
++ */
++static uchar mmc_buf[MMC_BLOCK_SIZE];
++static mmc_csd_t mmc_csd;
++static int mmc_ready = 0;
++static int wide = 0;
++
++
++#define CMD_F_RESP 0x01
++#define CMD_F_RESP_LONG 0x02
++
++static u_int32_t *
++/****************************************************/
++mmc_cmd(ushort cmd, ulong arg, ushort flags)
++/****************************************************/
++{
++ static u_int32_t resp[5];
++ ulong status;
++ int i;
++
++ u_int32_t ccon, csta;
++ u_int32_t csta_rdy_bit = S3C2410_SDICMDSTAT_CMDSENT;
++
++ memset(resp, 0, sizeof(resp));
++
++ debug("mmc_cmd CMD%d arg=0x%08x flags=%x\n", cmd, arg, flags);
++
++ sdi->SDICSTA = 0xffffffff;
++ sdi->SDIDSTA = 0xffffffff;
++ sdi->SDIFSTA = 0xffffffff;
++
++ sdi->SDICARG = arg;
++
++ ccon = cmd & S3C2410_SDICMDCON_INDEX;
++ ccon |= S3C2410_SDICMDCON_SENDERHOST|S3C2410_SDICMDCON_CMDSTART;
++
++ if (flags & CMD_F_RESP) {
++ ccon |= S3C2410_SDICMDCON_WAITRSP;
++ csta_rdy_bit = S3C2410_SDICMDSTAT_RSPFIN; /* 1 << 9 */
++ }
++
++ if (flags & CMD_F_RESP_LONG)
++ ccon |= S3C2410_SDICMDCON_LONGRSP;
++
++ sdi->SDICCON = ccon;
++
++ while (1) {
++ csta = sdi->SDICSTA;
++ if (csta & csta_rdy_bit)
++ break;
++ if (csta & S3C2410_SDICMDSTAT_CMDTIMEOUT) {
++ printf("===============> MMC CMD Timeout\n");
++ sdi->SDICSTA |= S3C2410_SDICMDSTAT_CMDTIMEOUT;
++ break;
++ }
++ }
++
++ debug("final MMC CMD status 0x%x\n", csta);
++
++ sdi->SDICSTA |= csta_rdy_bit;
++
++ if (flags & CMD_F_RESP) {
++ resp[0] = sdi->SDIRSP0;
++ resp[1] = sdi->SDIRSP1;
++ resp[2] = sdi->SDIRSP2;
++ resp[3] = sdi->SDIRSP3;
++ }
++
++#if 0
++ for (i=0; i<4; i ++) {
++ debug("MMC resp[%d] = 0x%08x\n", i, resp[i]);
++ }
++#endif
++
++ return resp;
++}
++
++#define FIFO_FILL(host) ((host->SDIFSTA & S3C2410_SDIFSTA_COUNTMASK) >> 2)
++
++static int
++/****************************************************/
++mmc_block_read(uchar *dst, ulong src, ulong len)
++/****************************************************/
++{
++ u_int32_t dcon, fifo;
++ u_int32_t *dst_u32 = (u_int32_t *)dst;
++ u_int32_t *resp;
++
++ if (len == 0) {
++ return 0;
++ }
++
++ debug("mmc_block_rd dst %lx src %lx len %d\n", (ulong)dst, src, len);
++
++ /* set block len */
++ resp = mmc_cmd(MMC_CMD_SET_BLOCKLEN, len, CMD_F_RESP);
++ sdi->SDIBSIZE = len;
++
++ //sdi->SDIPRE = 0xff;
++
++ /* setup data */
++ dcon = (len >> 9) & S3C2410_SDIDCON_BLKNUM_MASK;
++ dcon |= S3C2410_SDIDCON_BLOCKMODE;
++ dcon |= S3C2410_SDIDCON_RXAFTERCMD|S3C2410_SDIDCON_XFER_RXSTART;
++ if (wide)
++ dcon |= S3C2410_SDIDCON_WIDEBUS;
++ sdi->SDIDCON = dcon;
++
++ /* send read command */
++ resp = mmc_cmd(MMC_CMD_READ_BLOCK, src, CMD_F_RESP);
++
++ while (len > 0) {
++ u_int32_t sdidsta = sdi->SDIDSTA;
++ fifo = FIFO_FILL(sdi);
++ if (sdidsta & (S3C2410_SDIDSTA_FIFOFAIL|
++ S3C2410_SDIDSTA_CRCFAIL|
++ S3C2410_SDIDSTA_RXCRCFAIL|
++ S3C2410_SDIDSTA_DATATIMEOUT)) {
++ printf("mmc_block_read: err SDIDSTA=0x%08x\n", sdidsta);
++ return -EIO;
++ }
++
++ while (fifo--) {
++ //debug("dst_u32 = 0x%08x\n", dst_u32);
++ *(dst_u32++) = sdi->SDIDAT;
++ if (len >= 4)
++ len -= 4;
++ else {
++ len = 0;
++ break;
++ }
++ }
++ }
++
++#if 1
++ debug("waiting for SDIDSTA (currently 0x%08x\n", sdi->SDIDSTA);
++ while (!(sdi->SDIDSTA & (1 << 4))) {}
++ debug("done waiting for SDIDSTA (currently 0x%08x\n", sdi->SDIDSTA);
++#endif
++
++ sdi->SDIDCON = 0;
++
++#if 0
++ if (!(sdi->SDIDSTA & S3C2410_SDIDSTA_XFERFINISH))
++ printf("mmc_block_read; transfer not finished!\n");
++#endif
++
++ return 0;
++}
++
++static int
++/****************************************************/
++mmc_block_write(ulong dst, uchar *src, int len)
++/****************************************************/
++{
++#if 0
++ uchar *resp;
++ ushort argh, argl;
++ ulong status;
++
++ if (len == 0) {
++ return 0;
++ }
++
++ debug("mmc_block_wr dst %lx src %lx len %d\n", dst, (ulong)src, len);
++
++ argh = len >> 16;
++ argl = len & 0xffff;
++
++ /* set block len */
++ resp = mmc_cmd(MMC_CMD_SET_BLOCKLEN, argh, argl, CMD_F_RESP);
++
++ /* send write command */
++ argh = dst >> 16;
++ argl = dst & 0xffff;
++ MMC_STRPCL = MMC_STRPCL_STOP_CLK;
++ MMC_NOB = 1;
++ MMC_BLKLEN = len;
++ resp = mmc_cmd(MMC_CMD_WRITE_BLOCK, dst, CMD_F_RESP,
++ MMC_CMDAT_R1|MMC_CMDAT_WRITE|MMC_CMDAT_BLOCK|MMC_CMDAT_DATA_EN);
++
++ MMC_I_MASK = ~MMC_I_MASK_TXFIFO_WR_REQ;
++ while (len) {
++ if (MMC_I_REG & MMC_I_REG_TXFIFO_WR_REQ) {
++ int i, bytes = min(32,len);
++
++ for (i=0; i<bytes; i++) {
++ MMC_TXFIFO = *src++;
++ }
++ if (bytes < 32) {
++ MMC_PRTBUF = MMC_PRTBUF_BUF_PART_FULL;
++ }
++ len -= bytes;
++ }
++ status = MMC_STAT;
++ if (status & MMC_STAT_ERRORS) {
++ printf("MMC_STAT error %lx\n", status);
++ return -1;
++ }
++ }
++ MMC_I_MASK = ~MMC_I_MASK_DATA_TRAN_DONE;
++ while (!(MMC_I_REG & MMC_I_REG_DATA_TRAN_DONE));
++ MMC_I_MASK = ~MMC_I_MASK_PRG_DONE;
++ while (!(MMC_I_REG & MMC_I_REG_PRG_DONE));
++ status = MMC_STAT;
++ if (status & MMC_STAT_ERRORS) {
++ printf("MMC_STAT error %lx\n", status);
++ return -1;
++ }
++#endif
++ return 0;
++}
++
++
++int
++/****************************************************/
++mmc_read(ulong src, uchar *dst, int size)
++/****************************************************/
++{
++ ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
++ ulong mmc_block_size, mmc_block_address;
++
++ if (size == 0) {
++ return 0;
++ }
++
++ if (!mmc_ready) {
++ printf("Please initialize the MMC first\n");
++ return -1;
++ }
++
++ mmc_block_size = MMC_BLOCK_SIZE;
++ mmc_block_address = ~(mmc_block_size - 1);
++
++ src -= CFG_MMC_BASE;
++ end = src + size;
++ part_start = ~mmc_block_address & src;
++ part_end = ~mmc_block_address & end;
++ aligned_start = mmc_block_address & src;
++ aligned_end = mmc_block_address & end;
++
++ /* all block aligned accesses */
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if (part_start) {
++ part_len = mmc_block_size - part_start;
++ debug("ps src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if ((mmc_block_read(mmc_buf, aligned_start, mmc_block_size)) < 0) {
++ return -1;
++ }
++ memcpy(dst, mmc_buf+part_start, part_len);
++ dst += part_len;
++ src += part_len;
++ }
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ for (; src < aligned_end; src += mmc_block_size, dst += mmc_block_size) {
++ debug("al src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if ((mmc_block_read((uchar *)(dst), src, mmc_block_size)) < 0) {
++ return -1;
++ }
++ }
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if (part_end && src < end) {
++ debug("pe src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if ((mmc_block_read(mmc_buf, aligned_end, mmc_block_size)) < 0) {
++ return -1;
++ }
++ memcpy(dst, mmc_buf, part_end);
++ }
++ return 0;
++}
++
++int
++/****************************************************/
++mmc_write(uchar *src, ulong dst, int size)
++/****************************************************/
++{
++ ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
++ ulong mmc_block_size, mmc_block_address;
++
++ if (size == 0) {
++ return 0;
++ }
++
++ if (!mmc_ready) {
++ printf("Please initialize the MMC first\n");
++ return -1;
++ }
++
++ mmc_block_size = MMC_BLOCK_SIZE;
++ mmc_block_address = ~(mmc_block_size - 1);
++
++ dst -= CFG_MMC_BASE;
++ end = dst + size;
++ part_start = ~mmc_block_address & dst;
++ part_end = ~mmc_block_address & end;
++ aligned_start = mmc_block_address & dst;
++ aligned_end = mmc_block_address & end;
++
++ /* all block aligned accesses */
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if (part_start) {
++ part_len = mmc_block_size - part_start;
++ debug("ps src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (ulong)src, dst, end, part_start, part_end, aligned_start, aligned_end);
++ if ((mmc_block_read(mmc_buf, aligned_start, mmc_block_size)) < 0) {
++ return -1;
++ }
++ memcpy(mmc_buf+part_start, src, part_len);
++ if ((mmc_block_write(aligned_start, mmc_buf, mmc_block_size)) < 0) {
++ return -1;
++ }
++ dst += part_len;
++ src += part_len;
++ }
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ for (; dst < aligned_end; src += mmc_block_size, dst += mmc_block_size) {
++ debug("al src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if ((mmc_block_write(dst, (uchar *)src, mmc_block_size)) < 0) {
++ return -1;
++ }
++ }
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if (part_end && dst < end) {
++ debug("pe src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++ if ((mmc_block_read(mmc_buf, aligned_end, mmc_block_size)) < 0) {
++ return -1;
++ }
++ memcpy(mmc_buf, src, part_end);
++ if ((mmc_block_write(aligned_end, mmc_buf, mmc_block_size)) < 0) {
++ return -1;
++ }
++ }
++ return 0;
++}
++
++ulong
++/****************************************************/
++mmc_bread(int dev_num, ulong blknr, ulong blkcnt, ulong *dst)
++/****************************************************/
++{
++ int mmc_block_size = MMC_BLOCK_SIZE;
++ ulong src = blknr * mmc_block_size + CFG_MMC_BASE;
++
++ mmc_read(src, (uchar *)dst, blkcnt*mmc_block_size);
++ return blkcnt;
++}
++
++static u_int16_t rca = MMC_DEFAULT_RCA;
++
++static u_int32_t mmc_size(const struct mmc_csd *csd)
++{
++ u_int32_t block_len, mult, blocknr;
++
++ block_len = csd->read_bl_len << 12;
++ mult = csd->c_size_mult1 << 8;
++ blocknr = (csd->c_size+1) * mult;
++
++ return blocknr * block_len;
++}
++
++int
++/****************************************************/
++mmc_init(int verbose)
++/****************************************************/
++{
++ int retries, rc = -ENODEV;
++ int is_sd = 0;
++ u_int32_t *resp;
++ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
++
++ sdi = S3C2410_GetBase_SDI();
++
++ debug("mmc_init(PCLK=%u)\n", get_PCLK());
++
++ clk_power->CLKCON |= (1 << 9);
++
++ /* S3C2410 has some bug that prevents reliable operation at higher speed */
++ //sdi->SDIPRE = 0x3e; /* SDCLK = PCLK/2 / (SDIPRE+1) = 396kHz */
++ sdi->SDIPRE = 0x02; /* SDCLK = PCLK/2 / (SDIPRE+1) = 396kHz */
++ sdi->SDIBSIZE = 512;
++ sdi->SDIDTIMER = 0xffff;
++ sdi->SDIIMSK = 0x0;
++ sdi->SDICON = S3C2410_SDICON_FIFORESET|S3C2440_SDICON_MMCCLOCK;
++ udelay(125000); /* FIXME: 74 SDCLK cycles */
++
++ mmc_csd.c_size = 0;
++
++ /* reset */
++ retries = 10;
++ resp = mmc_cmd(MMC_CMD_RESET, 0, 0);
++
++ printf("trying to detect SD Card...\n");
++ while (retries--) {
++ int i;
++ udelay(100000);
++ resp = mmc_cmd(55, 0x00000000, CMD_F_RESP);
++ resp = mmc_cmd(41, 0x00300000, CMD_F_RESP);
++
++ if (resp[0] & (1 << 31)) {
++ is_sd = 1;
++ break;
++ }
++ }
++
++ if (retries == 0 && !is_sd) {
++ retries = 10;
++ printf("failed to detect SD Card, trying MMC\n");
++ resp = mmc_cmd(MMC_CMD_SEND_OP_COND, 0x00ffc000, CMD_F_RESP);
++ while (retries-- && resp && !(resp[4] & 0x80)) {
++ debug("resp %x %x\n", resp[0], resp[1]);
++ udelay(50);
++ resp = mmc_cmd(1, 0x00ffff00, CMD_F_RESP);
++ }
++ }
++
++ /* try to get card id */
++ resp = mmc_cmd(MMC_CMD_ALL_SEND_CID, 0, CMD_F_RESP|CMD_F_RESP_LONG);
++ if (resp) {
++ /* TODO configure mmc driver depending on card attributes */
++ mmc_cid_t *cid = (mmc_cid_t *)resp;
++ if (verbose) {
++ printf("MMC found. Card desciption is:\n");
++ printf("Manufacturer ID = %02x%02x%02x\n",
++ cid->id[0], cid->id[1], cid->id[2]);
++ printf("HW/FW Revision = %x %x\n",cid->hwrev, cid->fwrev);
++ cid->hwrev = cid->fwrev = 0; /* null terminate string */
++ printf("Product Name = %s\n",cid->name);
++ printf("Serial Number = %02x%02x%02x\n",
++ cid->sn[0], cid->sn[1], cid->sn[2]);
++ printf("Month = %d\n",cid->month);
++ printf("Year = %d\n",1997 + cid->year);
++ }
++ /* fill in device description */
++ mmc_dev.if_type = IF_TYPE_MMC;
++ mmc_dev.part_type = PART_TYPE_DOS;
++ mmc_dev.dev = 0;
++ mmc_dev.lun = 0;
++ mmc_dev.type = 0;
++ /* FIXME fill in the correct size (is set to 32MByte) */
++ mmc_dev.blksz = 512;
++ mmc_dev.lba = 0x10000;
++ sprintf(mmc_dev.vendor,"Man %02x%02x%02x Snr %02x%02x%02x",
++ cid->id[0], cid->id[1], cid->id[2],
++ cid->sn[0], cid->sn[1], cid->sn[2]);
++ sprintf(mmc_dev.product,"%s",cid->name);
++ sprintf(mmc_dev.revision,"%x %x",cid->hwrev, cid->fwrev);
++ mmc_dev.removable = 0;
++ mmc_dev.block_read = mmc_bread;
++
++ /* MMC exists, get CSD too */
++ resp = mmc_cmd(MMC_CMD_SET_RCA, MMC_DEFAULT_RCA, CMD_F_RESP);
++ if (is_sd)
++ rca = resp[0] >> 16;
++
++ resp = mmc_cmd(MMC_CMD_SEND_CSD, rca<<16, CMD_F_RESP|CMD_F_RESP_LONG);
++ if (resp) {
++ mmc_csd_t *csd = (mmc_csd_t *)resp;
++ memcpy(&mmc_csd, csd, sizeof(csd));
++ rc = 0;
++ mmc_ready = 1;
++ /* FIXME add verbose printout for csd */
++ printf("READ_BL_LEN=%u, C_SIZE_MULT=%u, C_SIZE=%u\n",
++ csd->read_bl_len, csd->c_size_mult1, csd->c_size);
++ printf("size = %u\n", mmc_size(csd));
++ }
++ }
++
++ resp = mmc_cmd(MMC_CMD_SELECT_CARD, rca<<16, CMD_F_RESP);
++
++#ifdef CONFIG_MMC_WIDE
++ if (is_sd) {
++ resp = mmc_cmd(55, rca<<16, CMD_F_RESP);
++ resp = mmc_cmd(6, 0x02, CMD_F_RESP);
++ wide = 1;
++ }
++#endif
++
++ fat_register_device(&mmc_dev,1); /* partitions start counting with 1 */
++
++ return rc;
++}
++
++int
++mmc_ident(block_dev_desc_t *dev)
++{
++ return 0;
++}
++
++int
++mmc2info(ulong addr)
++{
++ /* FIXME hard codes to 32 MB device */
++ if (addr >= CFG_MMC_BASE && addr < CFG_MMC_BASE + 0x02000000) {
++ return 1;
++ }
++ return 0;
++}
++
++#endif /* CONFIG_MMC */
+Index: git/cpu/arm920t/s3c24x0/nand.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/cpu/arm920t/s3c24x0/nand.c 2007-01-04 12:21:45.000000000 +0100
+@@ -0,0 +1,213 @@
++/*
++ * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
++ *
++ * 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 0
++#define DEBUGN printf
++#else
++#define DEBUGN(x, args ...) {}
++#endif
++
++#if (CONFIG_COMMANDS & CFG_CMD_NAND)
++#if !defined(CFG_NAND_LEGACY)
++
++#include <nand.h>
++#include <s3c2410.h>
++
++#define __REGb(x) (*(volatile unsigned char *)(x))
++#define __REGi(x) (*(volatile unsigned int *)(x))
++
++#define NF_BASE 0x4e000000
++#define NFCONF __REGi(NF_BASE + 0x0)
++#define NFCMD __REGb(NF_BASE + 0x4)
++#define NFADDR __REGb(NF_BASE + 0x8)
++#define NFDATA __REGb(NF_BASE + 0xc)
++#define NFSTAT __REGb(NF_BASE + 0x10)
++
++#define S3C2410_NFCONF_EN (1<<15)
++#define S3C2410_NFCONF_512BYTE (1<<14)
++#define S3C2410_NFCONF_4STEP (1<<13)
++#define S3C2410_NFCONF_INITECC (1<<12)
++#define S3C2410_NFCONF_nFCE (1<<11)
++#define S3C2410_NFCONF_TACLS(x) ((x)<<8)
++#define S3C2410_NFCONF_TWRPH0(x) ((x)<<4)
++#define S3C2410_NFCONF_TWRPH1(x) ((x)<<0)
++
++static u16 s3c2410_read_word(struct mtd_info *mtd)
++{
++ unsigned char byte = 0;
++
++ printf("s3c2410_read_word: WARNING, this function is not implemented yet\n");
++ return byte;
++}
++
++static void s3c2410_write_word(struct mtd_info *mtd, u16 word)
++{
++ printf("s3c2410_write_word: WARNING, this function is not implemented yet\n");
++}
++
++static void s3c2410_hwcontrol(struct mtd_info *mtd, int cmd)
++{
++ struct nand_chip *chip = mtd->priv;
++
++ DEBUGN("hwcontrol(): 0x%02x: ", cmd);
++
++ switch (cmd) {
++ case NAND_CTL_SETNCE:
++ NFCONF &= ~S3C2410_NFCONF_nFCE;
++ DEBUGN("NFCONF=0x%08x\n", NFCONF);
++ break;
++ case NAND_CTL_CLRNCE:
++ NFCONF |= S3C2410_NFCONF_nFCE;
++ DEBUGN("NFCONF=0x%08x\n", NFCONF);
++ break;
++ case NAND_CTL_SETALE:
++ chip->IO_ADDR_W = NF_BASE + 0x8;
++ DEBUGN("SETALE\n");
++ break;
++ case NAND_CTL_SETCLE:
++ chip->IO_ADDR_W = NF_BASE + 0x4;
++ DEBUGN("SETCLE\n");
++ break;
++ default:
++ chip->IO_ADDR_W = NF_BASE + 0xc;
++ break;
++ }
++ return;
++}
++
++static int s3c2410_dev_ready(struct mtd_info *mtd)
++{
++ DEBUGN("dev_ready\n");
++ return (NFSTAT & 0x01);
++}
++
++static void s3c2410_cmdfunc(struct mtd_info *mtd, unsigned cmd,
++ int column, int page_addr)
++{
++ DEBUGN("cmdfunc(): 0x%02x, col=%d, page=%d\n", cmd, column, page_addr);
++
++ switch (cmd) {
++ case NAND_CMD_READ0:
++ case NAND_CMD_READ1:
++ case NAND_CMD_READOOB:
++ NFCMD = cmd;
++ NFADDR = column & 0xff;
++ NFADDR = page_addr & 0xff;
++ NFADDR = (page_addr >> 8) & 0xff;
++ NFADDR = (page_addr >> 16) & 0xff;
++ break;
++ case NAND_CMD_READID:
++ NFCMD = cmd;
++ NFADDR = 0;
++ break;
++ case NAND_CMD_PAGEPROG:
++ NFCMD = cmd;
++ printf("PAGEPROG not implemented\n");
++ break;
++ case NAND_CMD_ERASE1:
++ NFCMD = cmd;
++ NFADDR = page_addr & 0xff;
++ NFADDR = (page_addr >> 8) & 0xff;
++ NFADDR = (page_addr >> 16) & 0xff;
++ break;
++ case NAND_CMD_ERASE2:
++ NFCMD = cmd;
++ break;
++ case NAND_CMD_SEQIN:
++ printf("SEQIN not implemented\n");
++ break;
++ case NAND_CMD_STATUS:
++ NFCMD = cmd;
++ break;
++ case NAND_CMD_RESET:
++ NFCMD = cmd;
++ break;
++ default:
++ break;
++ }
++
++ while (!s3c2410_dev_ready(mtd));
++}
++
++int board_nand_init(struct nand_chip *nand)
++{
++ u_int32_t cfg;
++ u_int8_t tacls, twrph0, twrph1;
++ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
++
++ DEBUGN("board_nand_init()\n");
++
++ clk_power->CLKCON |= (1 << 4);
++
++ /* initialize hardware */
++ twrph0 = 3; twrph1 = 0; tacls = 0;
++
++ /* default timings: maximum */
++ //twrph0 = 8; twrph1 = 8; tacls = 8;
++
++ cfg = S3C2410_NFCONF_EN;
++ cfg |= S3C2410_NFCONF_TACLS(tacls - 1);
++ cfg |= S3C2410_NFCONF_TWRPH0(twrph0 - 1);
++ cfg |= S3C2410_NFCONF_TWRPH1(twrph1 - 1);
++
++ //NFCONF = cfg;
++ NFCONF = 0xf842;
++
++ /* initialize nand_chip data structure */
++ nand->IO_ADDR_R = nand->IO_ADDR_W = 0x4e00000c;
++
++ /* read_buf and write_buf are default */
++ /* read_byte and write_byte are default */
++
++ /* need to override word read/write since default routines try 16bit wide
++ * register access of an (in our case) 8bit register */
++ nand->read_word = s3c2410_read_word;
++ nand->write_word = s3c2410_write_word;
++
++ /* hwcontrol always must be implemented */
++ nand->hwcontrol = s3c2410_hwcontrol;
++
++ nand->dev_ready = s3c2410_dev_ready;
++
++ nand->eccmode = NAND_ECC_SOFT;
++ nand->options = 0;
++ //nand->waitfunc = dfc_wait;
++
++ //nand->cmdfunc = s3c2410_cmdfunc;
++ //nand->autooob = &delta_oob;
++ //nand->badblock_pattern = &delta_bbt_descr;
++
++#if 0
++ /* reset */
++ nand->hwcontrol(NULL, NAND_CTL_SETNCE);
++ nand->cmdfunc(NULL, NAND_CMD_RESET, -1, -1);
++ while (nand->dev_ready(NULL) == 0) {}
++ nand->hwcontrol(NULL, NAND_CTL_CLRNCE);
++#endif
++
++ DEBUGN("end of nand_init\n");
++ return 0;
++}
++
++#else
++ #error "U-Boot legacy NAND support not available for S3C2410"
++#endif
++#endif
+Index: git/cpu/arm920t/s3c24x0/nand_read.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/cpu/arm920t/s3c24x0/nand_read.c 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,75 @@
++/*
++ * nand_read.c: Simple NAND read functions for booting from NAND
++ *
++ * Taken from GPLv2 licensed vivi bootloader,
++ * Copyright (C) 2002 MIZI Research, Inc.
++ *
++ * Author: Hwang, Chideok <hwang@mizi.com>
++ * Date : $Date: 2004/02/04 10:37:37 $
++ *
++ * u-boot integration (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
++ */
++
++#include <common.h>
++
++#ifdef CONFIG_S3C2410_NAND_BOOT
++
++#define __REGb(x) (*(volatile unsigned char *)(x))
++#define __REGi(x) (*(volatile unsigned int *)(x))
++#define NF_BASE 0x4e000000
++#define NFCONF __REGi(NF_BASE + 0x0)
++#define NFCMD __REGb(NF_BASE + 0x4)
++#define NFADDR __REGb(NF_BASE + 0x8)
++#define NFDATA __REGb(NF_BASE + 0xc)
++#define NFSTAT __REGb(NF_BASE + 0x10)
++
++#define BUSY 1
++inline void wait_idle(void) {
++ int i;
++
++ while(!(NFSTAT & BUSY))
++ for(i=0; i<10; i++);
++}
++
++#define NAND_SECTOR_SIZE 512
++#define NAND_BLOCK_MASK (NAND_SECTOR_SIZE - 1)
++
++/* low level nand read function */
++int
++nand_read_ll(unsigned char *buf, unsigned long start_addr, int size)
++{
++ int i, j;
++
++ if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK)) {
++ return -1; /* invalid alignment */
++ }
++
++ /* chip Enable */
++ NFCONF &= ~0x800;
++ for(i=0; i<10; i++);
++
++ for(i=start_addr; i < (start_addr + size);) {
++ /* READ0 */
++ NFCMD = 0;
++
++ /* Write Address */
++ NFADDR = i & 0xff;
++ NFADDR = (i >> 9) & 0xff;
++ NFADDR = (i >> 17) & 0xff;
++ NFADDR = (i >> 25) & 0xff;
++
++ wait_idle();
++
++ for(j=0; j < NAND_SECTOR_SIZE; j++, i++) {
++ *buf = (NFDATA & 0xff);
++ buf++;
++ }
++ }
++
++ /* chip Disable */
++ NFCONF |= 0x800; /* chip disable */
++
++ return 0;
++}
++
++#endif /* CONFIG_S3C2410_NAND_BOOT */
+Index: git/cpu/arm920t/start.S
+===================================================================
+--- git.orig/cpu/arm920t/start.S 2007-01-04 12:21:15.000000000 +0100
++++ git/cpu/arm920t/start.S 2007-01-04 12:21:18.000000000 +0100
+@@ -5,6 +5,10 @@
+ * Copyright (c) 2002 Alex Züpke <azu@sysgo.de>
+ * Copyright (c) 2002 Gary Jennejohn <gj@denx.de>
+ *
++ * S3C2410 NAND portions
++ * Copyright (c) 2001 MIZI Research, Inc.
++ * Copyright (c) 2006 Harald Welte <hwelte@hmw-consulting.de>
++ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+@@ -27,6 +31,7 @@
+
+ #include <config.h>
+ #include <version.h>
++#include <s3c2410.h>
+
+
+ /*
+@@ -158,9 +163,17 @@
+ */
+ #ifndef CONFIG_SKIP_LOWLEVEL_INIT
+ bl cpu_init_crit
++#else
++ /* QT2410: configure bank 3 correctly to make ethernet work */
++ ldr r1, =0x48000000
++ ldr r2, =0x00001f4c
++ str r2, [r1, #0x10]
++ ldr r2, =0x2211d122
++ str r2, [r1]
+ #endif
+
+ #ifndef CONFIG_SKIP_RELOCATE_UBOOT
++#ifndef CONFIG_S3C2410_NAND_BOOT
+ relocate: /* relocate U-Boot to RAM */
+ adr r0, _start /* r0 <- current position of code */
+ ldr r1, _TEXT_BASE /* test if we run from flash or RAM */
+@@ -177,6 +190,93 @@
+ stmia r1!, {r3-r10} /* copy to target address [r1] */
+ cmp r0, r2 /* until source end addreee [r2] */
+ ble copy_loop
++#else /* NAND_BOOT */
++relocate:
++copy_myself:
++ /* mov r10, lr */
++
++ @ reset NAND
++ mov r1, #S3C2410_NAND_BASE
++ ldr r2, =0xf842 @ initial value enable tacls=3,rph0=6,rph1=0
++ str r2, [r1, #oNFCONF]
++ ldr r2, [r1, #oNFCONF]
++ bic r2, r2, #0x800 @ enable chip
++ str r2, [r1, #oNFCONF]
++ mov r2, #0xff @ RESET command
++ strb r2, [r1, #oNFCMD]
++ mov r3, #0 @ wait
++1: add r3, r3, #0x1
++ cmp r3, #0xa
++ blt 1b
++2: ldr r2, [r1, #oNFSTAT] @ wait ready
++ tst r2, #0x1
++ beq 2b
++ ldr r2, [r1, #oNFCONF]
++ orr r2, r2, #0x800 @ disable chip
++ str r2, [r1, #oNFCONF]
++
++#if 0
++ @ get ready to call C functions (for nand_read())
++ ldr sp, DW_STACK_START @ setup stack pointer
++ mov fp, #0 @ no previous frame, so fp=0
++#else
++ ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */
++ sub r0, r0, #CFG_MALLOC_LEN /* malloc area */
++ sub r0, r0, #CFG_GBL_DATA_SIZE /* bdinfo */
++#ifdef CONFIG_USE_IRQ
++ sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
++#endif
++ sub sp, r0, #12 /* leave 3 words for abort-stack */
++#endif
++
++ @ copy u-boot to RAM
++ ldr r0, _TEXT_BASE
++ mov r1, #0x0
++ mov r2, #0x30000
++ bl nand_read_ll
++
++ tst r0, #0x0
++ beq ok_nand_read
++#ifdef CONFIG_DEBUG_LL
++bad_nand_read:
++ ldr r0, STR_FAIL
++ ldr r1, SerBase
++ bl PrintWord
++1: b 1b @ infinite loop
++#endif
++
++ok_nand_read:
++#ifdef CONFIG_DEBUG_LL
++ ldr r0, STR_OK
++ ldr r1, SerBase
++ bl PrintWord
++#endif
++
++ @ verify
++ mov r0, #0
++ @ldr r1, =0x33f00000
++ ldr r1, _TEXT_BASE
++ mov r2, #0x400 @ 4 bytes * 1024 = 4K-bytes
++go_next:
++ ldr r3, [r0], #4
++ ldr r4, [r1], #4
++ teq r3, r4
++ bne notmatch
++ subs r2, r2, #4
++ beq done_nand_read
++ bne go_next
++notmatch:
++#ifdef CONFIG_DEBUG_LL
++ sub r0, r0, #4
++ ldr r1, SerBase
++ bl PrintHexWord
++ ldr r0, STR_FAIL
++ ldr r1, SerBase
++ bl PrintWord
++#endif
++1: b 1b
++done_nand_read:
++#endif /* NAND_BOOT */
+ #endif /* CONFIG_SKIP_RELOCATE_UBOOT */
+
+ /* Set up the stack */
+Index: git/drivers/Makefile
+===================================================================
+--- git.orig/drivers/Makefile 2007-01-04 12:21:15.000000000 +0100
++++ git/drivers/Makefile 2007-01-04 12:21:18.000000000 +0100
+@@ -51,7 +51,7 @@
+ ks8695eth.o \
+ pxa_pcmcia.o mpc8xx_pcmcia.o tqm8xx_pcmcia.o \
+ rpx_pcmcia.o \
+- fsl_i2c.o
++ fsl_i2c.o s3c2410_fb.o
+
+ SRCS := $(COBJS:.o=.c)
+ OBJS := $(addprefix $(obj),$(COBJS))
+Index: git/drivers/cs8900.c
+===================================================================
+--- git.orig/drivers/cs8900.c 2007-01-04 12:21:15.000000000 +0100
++++ git/drivers/cs8900.c 2007-01-04 12:21:18.000000000 +0100
+@@ -120,6 +120,7 @@
+ unsigned char env_enetaddr[6];
+ char *tmp = getenv ("ethaddr");
+ char *end;
++ unsigned short chip_id;
+
+ for (i=0; i<6; i++) {
+ env_enetaddr[i] = tmp ? simple_strtoul(tmp, &end, 16) : 0;
+@@ -128,7 +129,9 @@
+ }
+
+ /* verify chip id */
+- if (get_reg_init_bus (PP_ChipID) != 0x630e)
++ chip_id = get_reg_init_bus (PP_ChipID);
++ printf("\ncs8900a chipid 0x%04x\n", chip_id);
++ if (chip_id != 0x630e)
+ return;
+ eth_reset ();
+ if ((get_reg (PP_SelfST) & (PP_SelfSTAT_EEPROM | PP_SelfSTAT_EEPROM_OK)) ==
+Index: git/drivers/s3c2410_fb.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/drivers/s3c2410_fb.c 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,182 @@
++/*
++ * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
++ *
++ * 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 defined(CONFIG_VIDEO_S3C2410)
++
++#include <video_fb.h>
++#include "videomodes.h"
++#include <s3c2410.h>
++/*
++ * Export Graphic Device
++ */
++GraphicDevice smi;
++
++#define VIDEO_MEM_SIZE 0x200000
++
++/*******************************************************************************
++ *
++ * Init video chip with common Linux graphic modes (lilo)
++ */
++void *video_hw_init (void)
++{
++ S3C24X0_LCD * const lcd = S3C24X0_GetBase_LCD();
++ GraphicDevice *pGD = (GraphicDevice *)&smi;
++ int videomode;
++ unsigned long t1, hsynch, vsynch;
++ char *penv;
++ int tmp, i, bits_per_pixel;
++ struct ctfb_res_modes *res_mode;
++ struct ctfb_res_modes var_mode;
++ unsigned char videoout;
++ unsigned int *vm;
++
++ /* Search for video chip */
++ printf("Video: ");
++
++ tmp = 0;
++
++ videomode = CFG_DEFAULT_VIDEO_MODE;
++ /* get video mode via environment */
++ if ((penv = getenv ("videomode")) != NULL) {
++ /* deceide if it is a string */
++ if (penv[0] <= '9') {
++ videomode = (int) simple_strtoul (penv, NULL, 16);
++ tmp = 1;
++ }
++ } else {
++ tmp = 1;
++ }
++ if (tmp) {
++ /* parameter are vesa modes */
++ /* search params */
++ for (i = 0; i < VESA_MODES_COUNT; i++) {
++ if (vesa_modes[i].vesanr == videomode)
++ break;
++ }
++ if (i == VESA_MODES_COUNT) {
++ printf ("no VESA Mode found, switching to mode 0x%x ", CFG_DEFAULT_VIDEO_MODE);
++ i = 0;
++ }
++ res_mode =
++ (struct ctfb_res_modes *) &res_mode_init[vesa_modes[i].
++ resindex];
++ bits_per_pixel = vesa_modes[i].bits_per_pixel;
++ } else {
++
++ res_mode = (struct ctfb_res_modes *) &var_mode;
++ bits_per_pixel = video_get_params (res_mode, penv);
++ }
++
++ /* calculate hsynch and vsynch freq (info only) */
++ t1 = (res_mode->left_margin + res_mode->xres +
++ res_mode->right_margin + res_mode->hsync_len) / 8;
++ t1 *= 8;
++ t1 *= res_mode->pixclock;
++ t1 /= 1000;
++ hsynch = 1000000000L / t1;
++ t1 *=
++ (res_mode->upper_margin + res_mode->yres +
++ res_mode->lower_margin + res_mode->vsync_len);
++ t1 /= 1000;
++ vsynch = 1000000000L / t1;
++
++ /* fill in Graphic device struct */
++ sprintf (pGD->modeIdent, "%dx%dx%d %ldkHz %ldHz", res_mode->xres,
++ res_mode->yres, bits_per_pixel, (hsynch / 1000),
++ (vsynch / 1000));
++ printf ("%s\n", pGD->modeIdent);
++ pGD->winSizeX = res_mode->xres;
++ pGD->winSizeY = res_mode->yres;
++ pGD->plnSizeX = res_mode->xres;
++ pGD->plnSizeY = res_mode->yres;
++ switch (bits_per_pixel) {
++ case 8:
++ pGD->gdfBytesPP = 1;
++ pGD->gdfIndex = GDF__8BIT_INDEX;
++ break;
++ case 15:
++ pGD->gdfBytesPP = 2;
++ pGD->gdfIndex = GDF_15BIT_555RGB;
++ break;
++ case 16:
++ pGD->gdfBytesPP = 2;
++ pGD->gdfIndex = GDF_16BIT_565RGB;
++ break;
++ case 24:
++ pGD->gdfBytesPP = 3;
++ pGD->gdfIndex = GDF_24BIT_888RGB;
++ break;
++ }
++
++#if 0
++ pGD->isaBase = CFG_ISA_IO;
++ pGD->pciBase = pci_mem_base;
++ pGD->dprBase = (pci_mem_base + 0x400000 + 0x8000);
++ pGD->vprBase = (pci_mem_base + 0x400000 + 0xc000);
++ pGD->cprBase = (pci_mem_base + 0x400000 + 0xe000);
++#endif
++ pGD->frameAdrs = LCD_VIDEO_ADDR;
++ pGD->memSize = VIDEO_MEM_SIZE;
++
++ lcd->LCDSADDR1 = LCD_VIDEO_ADDR >> 1;
++ lcd->LCDSADDR2 = (LCD_VIDEO_ADDR + 0x4b000) >> 1;
++ lcd->LCDSADDR3 = 0x000000f0;
++
++ lcd->LCDCON1 = 0x00000479;
++ lcd->LCDCON2 = 0x014fc183;
++ lcd->LCDCON3 = 0x0060ef07;
++ lcd->LCDCON4 = 0x00000003;
++ lcd->LCDCON5 = 0x00000b09;
++ lcd->LPCSEL = 0x00000cf0;
++
++ pGD->winSizeX = pGD->plnSizeX = 240;
++ pGD->winSizeY = pGD->plnSizeY = 320;
++ pGD->gdfBytesPP = 2;
++ pGD->gdfIndex = GDF_16BIT_565RGB;
++
++ /* Enable Display */
++ videoout = 2; /* Default output is CRT */
++ if ((penv = getenv ("videoout")) != NULL) {
++ /* deceide if it is a string */
++ videoout = (int) simple_strtoul (penv, NULL, 16);
++ }
++
++ printf("clearing video memory\n");
++ /* Clear video memory */
++ i = pGD->memSize/4;
++ vm = (unsigned int *)pGD->frameAdrs;
++ while(i--)
++ *vm++ = 0;
++
++ printf("returning from video_hw_init\n");
++ return ((void*)&smi);
++}
++
++void
++video_set_lut (unsigned int index, /* color number */
++ unsigned char r, /* red */
++ unsigned char g, /* green */
++ unsigned char b /* blue */
++ )
++{
++}
++
++#endif /* CONFIG_VIDEO_S3C2410 */
+Index: git/drivers/usbdcore_s3c2410.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/drivers/usbdcore_s3c2410.c 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,1609 @@
++/*
++ * (C) Copyright 2003
++ * Gerry Hamel, geh@ti.com, Texas Instruments
++ *
++ * Based on
++ * linux/drivers/usb/device/bi/omap.c
++ * TI OMAP1510 USB bus interface driver
++ *
++ * Author: MontaVista Software, Inc.
++ * source@mvista.com
++ * (C) Copyright 2002
++ *
++ * 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 defined(CONFIG_S3C2410) && defined(CONFIG_USB_DEVICE)
++
++#include <asm/io.h>
++
++#include "usbdcore.h"
++#include "usbdcore_s3c2410.h"
++#include "usbdcore_ep0.h"
++
++
++#define UDC_INIT_MDELAY 80 /* Device settle delay */
++#define UDC_MAX_ENDPOINTS 31 /* Number of endpoints on this UDC */
++
++/* Some kind of debugging output... */
++#if 1
++#define UDCDBG(str)
++#define UDCDBGA(fmt,args...)
++#else /* The bugs still exists... */
++#define UDCDBG(str) serial_printf("[%s] %s:%d: " str "\n", __FILE__,__FUNCTION__,__LINE__)
++#define UDCDBGA(fmt,args...) serial_printf("[%s] %s:%d: " fmt "\n", __FILE__,__FUNCTION__,__LINE__, ##args)
++#endif
++
++#if 1
++#define UDCREG(name)
++#define UDCREGL(name)
++#else /* The bugs still exists... */
++#define UDCREG(name) serial_printf("%s():%d: %s[%08x]=%.4x\n",__FUNCTION__,__LINE__, (#name), name, inw(name)) /* For 16-bit regs */
++#define UDCREGL(name) serial_printf("%s():%d: %s[%08x]=%.8x\n",__FUNCTION__,__LINE__, (#name), name, inl(name)) /* For 32-bit regs */
++#endif
++
++
++static struct urb *ep0_urb = NULL;
++
++static struct usb_device_instance *udc_device; /* Used in interrupt handler */
++static u16 udc_devstat = 0; /* UDC status (DEVSTAT) */
++static u32 udc_interrupts = 0;
++
++static void udc_stall_ep (unsigned int ep_addr);
++
++
++static struct usb_endpoint_instance *s3c2410_find_ep (int ep)
++{
++ int i;
++
++ for (i = 0; i < udc_device->bus->max_endpoints; i++) {
++ if (udc_device->bus->endpoint_array[i].endpoint_address == ep)
++ return &udc_device->bus->endpoint_array[i];
++ }
++ return NULL;
++}
++
++/* ************************************************************************** */
++/* IO
++ */
++
++/*
++ * omap1510_prepare_endpoint_for_rx
++ *
++ * This function implements TRM Figure 14-11.
++ *
++ * The endpoint to prepare for transfer is specified as a physical endpoint
++ * number. For OUT (rx) endpoints 1 through 15, the corresponding endpoint
++ * configuration register is checked to see if the endpoint is ISO or not.
++ * If the OUT endpoint is valid and is non-ISO then its FIFO is enabled.
++ * No action is taken for endpoint 0 or for IN (tx) endpoints 16 through 30.
++ */
++static void omap1510_prepare_endpoint_for_rx (int ep_addr)
++{
++ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
++
++ UDCDBGA ("omap1510_prepare_endpoint %x", ep_addr);
++ if (((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT)) {
++ if ((inw (UDC_EP_RX (ep_num)) &
++ (UDC_EPn_RX_Valid | UDC_EPn_RX_Iso)) ==
++ UDC_EPn_RX_Valid) {
++ /* rx endpoint is valid, non-ISO, so enable its FIFO */
++ outw (UDC_EP_Sel | ep_num, UDC_EP_NUM);
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ outw (0, UDC_EP_NUM);
++ }
++ }
++}
++
++/* omap1510_configure_endpoints
++ *
++ * This function implements TRM Figure 14-10.
++ */
++static void omap1510_configure_endpoints (struct usb_device_instance *device)
++{
++ int ep;
++ struct usb_bus_instance *bus;
++ struct usb_endpoint_instance *endpoint;
++ unsigned short ep_ptr;
++ unsigned short ep_size;
++ unsigned short ep_isoc;
++ unsigned short ep_doublebuffer;
++ int ep_addr;
++ int packet_size;
++ int buffer_size;
++ int attributes;
++
++ bus = device->bus;
++
++ /* There is a dedicated 2048 byte buffer for USB packets that may be
++ * arbitrarily partitioned among the endpoints on 8-byte boundaries.
++ * The first 8 bytes are reserved for receiving setup packets on
++ * endpoint 0.
++ */
++ ep_ptr = 8; /* reserve the first 8 bytes for the setup fifo */
++
++ for (ep = 0; ep < bus->max_endpoints; ep++) {
++ endpoint = bus->endpoint_array + ep;
++ ep_addr = endpoint->endpoint_address;
++ if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++ /* IN endpoint */
++ packet_size = endpoint->tx_packetSize;
++ attributes = endpoint->tx_attributes;
++ } else {
++ /* OUT endpoint */
++ packet_size = endpoint->rcv_packetSize;
++ attributes = endpoint->rcv_attributes;
++ }
++
++ switch (packet_size) {
++ case 0:
++ ep_size = 0;
++ break;
++ case 8:
++ ep_size = 0;
++ break;
++ case 16:
++ ep_size = 1;
++ break;
++ case 32:
++ ep_size = 2;
++ break;
++ case 64:
++ ep_size = 3;
++ break;
++ case 128:
++ ep_size = 4;
++ break;
++ case 256:
++ ep_size = 5;
++ break;
++ case 512:
++ ep_size = 6;
++ break;
++ default:
++ UDCDBGA ("ep 0x%02x has bad packet size %d",
++ ep_addr, packet_size);
++ packet_size = 0;
++ ep_size = 0;
++ break;
++ }
++
++ switch (attributes & USB_ENDPOINT_XFERTYPE_MASK) {
++ case USB_ENDPOINT_XFER_CONTROL:
++ case USB_ENDPOINT_XFER_BULK:
++ case USB_ENDPOINT_XFER_INT:
++ default:
++ /* A non-isochronous endpoint may optionally be
++ * double-buffered. For now we disable
++ * double-buffering.
++ */
++ ep_doublebuffer = 0;
++ ep_isoc = 0;
++ if (packet_size > 64)
++ packet_size = 0;
++ if (!ep || !ep_doublebuffer)
++ buffer_size = packet_size;
++ else
++ buffer_size = packet_size * 2;
++ break;
++ case USB_ENDPOINT_XFER_ISOC:
++ /* Isochronous endpoints are always double-
++ * buffered, but the double-buffering bit
++ * in the endpoint configuration register
++ * becomes the msb of the endpoint size so we
++ * set the double-buffering flag to zero.
++ */
++ ep_doublebuffer = 0;
++ ep_isoc = 1;
++ buffer_size = packet_size * 2;
++ break;
++ }
++
++ /* check to see if our packet buffer RAM is exhausted */
++ if ((ep_ptr + buffer_size) > 2048) {
++ UDCDBGA ("out of packet RAM for ep 0x%02x buf size %d", ep_addr, buffer_size);
++ buffer_size = packet_size = 0;
++ }
++
++ /* force a default configuration for endpoint 0 since it is
++ * always enabled
++ */
++ if (!ep && ((packet_size < 8) || (packet_size > 64))) {
++ buffer_size = packet_size = 64;
++ ep_size = 3;
++ }
++
++ if (!ep) {
++ /* configure endpoint 0 */
++ outw ((ep_size << 12) | (ep_ptr >> 3), UDC_EP0);
++ /*UDCDBGA("ep 0 buffer offset 0x%03x packet size 0x%03x", */
++ /* ep_ptr, packet_size); */
++ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++ /* IN endpoint */
++ if (packet_size) {
++ outw ((1 << 15) | (ep_doublebuffer << 14) |
++ (ep_size << 12) | (ep_isoc << 11) |
++ (ep_ptr >> 3),
++ UDC_EP_TX (ep_addr &
++ USB_ENDPOINT_NUMBER_MASK));
++ UDCDBGA ("IN ep %d buffer offset 0x%03x"
++ " packet size 0x%03x",
++ ep_addr & USB_ENDPOINT_NUMBER_MASK,
++ ep_ptr, packet_size);
++ } else {
++ outw (0,
++ UDC_EP_TX (ep_addr &
++ USB_ENDPOINT_NUMBER_MASK));
++ }
++ } else {
++ /* OUT endpoint */
++ if (packet_size) {
++ outw ((1 << 15) | (ep_doublebuffer << 14) |
++ (ep_size << 12) | (ep_isoc << 11) |
++ (ep_ptr >> 3),
++ UDC_EP_RX (ep_addr &
++ USB_ENDPOINT_NUMBER_MASK));
++ UDCDBGA ("OUT ep %d buffer offset 0x%03x"
++ " packet size 0x%03x",
++ ep_addr & USB_ENDPOINT_NUMBER_MASK,
++ ep_ptr, packet_size);
++ } else {
++ outw (0,
++ UDC_EP_RX (ep_addr &
++ USB_ENDPOINT_NUMBER_MASK));
++ }
++ }
++ ep_ptr += buffer_size;
++ }
++}
++
++static void s3c2410_deconfigure_device (void)
++{
++ int epnum;
++
++ UDCDBG ("clear Cfg_Lock");
++ outw (inw (UDC_SYSCON1) & ~UDC_Cfg_Lock, UDC_SYSCON1);
++ UDCREG (UDC_SYSCON1);
++
++ /* deconfigure all endpoints */
++ for (epnum = 1; epnum <= 15; epnum++) {
++ outw (0, UDC_EP_RX (epnum));
++ outw (0, UDC_EP_TX (epnum));
++ }
++}
++
++static void s3c2410_configure_device (struct usb_device_instance *device)
++{
++ u_int32_t tmp;
++
++ s3c2410_configure_endpoints(device);
++
++ /* disable EP0-4 SUBD interrupts ? */
++ outw(0x00, S3C2410_UDC_USB_INT_EN_REG);
++
++ /* UPLL already configured by board-level init code */
++
++ /* configure USB pads to device mode */
++ tmp = inw(S3C2410_MISCCR);
++ tmp &= ~(S3C2410_MISCCR_USBHOST|S3C2410_MISCCR_USBSUSPND1);
++ outw(tmp, S3C2410_MISCCR);
++
++ tmp = inb(S3C2410_CLKSLOW);
++ tmp &= ~S3C2410_CLKSLOW_USB_CLK_DISABLE;
++ outw(tmp, S3C2410_CLKSLOW);
++
++ /* clear interrupt registers */
++ inb(S3C2410_UDC_EP_INT_REG);
++ inb(S3C2410_UDC_USB_INT_REG);
++
++ /* enable USB interrupts for RESET and SUSPEND/RESUME */
++ outb(S3C2410_UDC_USBINT_RESET|S3C2410_UDC_USBINT_SUSPEND,
++ S3C2410_UDC_USB_INT_EN_REG);
++
++}
++
++/* omap1510_write_noniso_tx_fifo
++ *
++ * This function implements TRM Figure 14-30.
++ *
++ * If the endpoint has an active tx_urb, then the next packet of data from the
++ * URB is written to the tx FIFO. The total amount of data in the urb is given
++ * by urb->actual_length. The maximum amount of data that can be sent in any
++ * one packet is given by endpoint->tx_packetSize. The number of data bytes
++ * from this URB that have already been transmitted is given by endpoint->sent.
++ * endpoint->last is updated by this routine with the number of data bytes
++ * transmitted in this packet.
++ *
++ * In accordance with Figure 14-30, the EP_NUM register must already have been
++ * written with the value to select the appropriate tx FIFO before this routine
++ * is called.
++ */
++static void omap1510_write_noniso_tx_fifo (struct usb_endpoint_instance
++ *endpoint)
++{
++ struct urb *urb = endpoint->tx_urb;
++
++ if (urb) {
++ unsigned int last, i;
++
++ UDCDBGA ("urb->buffer %p, buffer_length %d, actual_length %d",
++ urb->buffer, urb->buffer_length, urb->actual_length);
++ if ((last =
++ MIN (urb->actual_length - endpoint->sent,
++ endpoint->tx_packetSize))) {
++ u8 *cp = urb->buffer + endpoint->sent;
++
++ UDCDBGA ("endpoint->sent %d, tx_packetSize %d, last %d", endpoint->sent, endpoint->tx_packetSize, last);
++
++ if (((u32) cp & 1) == 0) { /* word aligned? */
++ outsw (UDC_DATA, cp, last >> 1);
++ } else { /* byte aligned. */
++ for (i = 0; i < (last >> 1); i++) {
++ u16 w = ((u16) cp[2 * i + 1] << 8) |
++ (u16) cp[2 * i];
++ outw (w, UDC_DATA);
++ }
++ }
++ if (last & 1) {
++ outb (*(cp + last - 1), UDC_DATA);
++ }
++ }
++ endpoint->last = last;
++ }
++}
++
++/* omap1510_read_noniso_rx_fifo
++ *
++ * This function implements TRM Figure 14-28.
++ *
++ * If the endpoint has an active rcv_urb, then the next packet of data is read
++ * from the rcv FIFO and written to rcv_urb->buffer at offset
++ * rcv_urb->actual_length to append the packet data to the data from any
++ * previous packets for this transfer. We assume that there is sufficient room
++ * left in the buffer to hold an entire packet of data.
++ *
++ * The return value is the number of bytes read from the FIFO for this packet.
++ *
++ * In accordance with Figure 14-28, the EP_NUM register must already have been
++ * written with the value to select the appropriate rcv FIFO before this routine
++ * is called.
++ */
++static int omap1510_read_noniso_rx_fifo (struct usb_endpoint_instance
++ *endpoint)
++{
++ struct urb *urb = endpoint->rcv_urb;
++ int len = 0;
++
++ if (urb) {
++ len = inw (UDC_RXFSTAT);
++
++ if (len) {
++ unsigned char *cp = urb->buffer + urb->actual_length;
++
++ insw (UDC_DATA, cp, len >> 1);
++ if (len & 1)
++ *(cp + len - 1) = inb (UDC_DATA);
++ }
++ }
++ return len;
++}
++
++/* omap1510_prepare_for_control_write_status
++ *
++ * This function implements TRM Figure 14-17.
++ *
++ * We have to deal here with non-autodecoded control writes that haven't already
++ * been dealt with by ep0_recv_setup. The non-autodecoded standard control
++ * write requests are: set/clear endpoint feature, set configuration, set
++ * interface, and set descriptor. ep0_recv_setup handles set/clear requests for
++ * ENDPOINT_HALT by halting the endpoint for a set request and resetting the
++ * endpoint for a clear request. ep0_recv_setup returns an error for
++ * SET_DESCRIPTOR requests which causes them to be terminated with a stall by
++ * the setup handler. A SET_INTERFACE request is handled by ep0_recv_setup by
++ * generating a DEVICE_SET_INTERFACE event. This leaves only the
++ * SET_CONFIGURATION event for us to deal with here.
++ *
++ */
++static void omap1510_prepare_for_control_write_status (struct urb *urb)
++{
++ struct usb_device_request *request = &urb->device_request;;
++
++ /* check for a SET_CONFIGURATION request */
++ if (request->bRequest == USB_REQ_SET_CONFIGURATION) {
++ int configuration = le16_to_cpu (request->wValue) & 0xff;
++ unsigned short devstat = inw (UDC_DEVSTAT);
++
++ if ((devstat & (UDC_ADD | UDC_CFG)) == UDC_ADD) {
++ /* device is currently in ADDRESSED state */
++ if (configuration) {
++ /* Assume the specified non-zero configuration
++ * value is valid and switch to the CONFIGURED
++ * state.
++ */
++ outw (UDC_Dev_Cfg, UDC_SYSCON2);
++ }
++ } else if ((devstat & UDC_CFG) == UDC_CFG) {
++ /* device is currently in CONFIGURED state */
++ if (!configuration) {
++ /* Switch to ADDRESSED state. */
++ outw (UDC_Clr_Cfg, UDC_SYSCON2);
++ }
++ }
++ }
++
++ /* select EP0 tx FIFO */
++ outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
++ /* clear endpoint (no data bytes in status stage) */
++ outw (UDC_Clr_EP, UDC_CTRL);
++ /* enable the EP0 tx FIFO */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ /* deselect the endpoint */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++}
++
++/* udc_state_transition_up
++ * udc_state_transition_down
++ *
++ * Helper functions to implement device state changes. The device states and
++ * the events that transition between them are:
++ *
++ * STATE_ATTACHED
++ * || /\
++ * \/ ||
++ * DEVICE_HUB_CONFIGURED DEVICE_HUB_RESET
++ * || /\
++ * \/ ||
++ * STATE_POWERED
++ * || /\
++ * \/ ||
++ * DEVICE_RESET DEVICE_POWER_INTERRUPTION
++ * || /\
++ * \/ ||
++ * STATE_DEFAULT
++ * || /\
++ * \/ ||
++ * DEVICE_ADDRESS_ASSIGNED DEVICE_RESET
++ * || /\
++ * \/ ||
++ * STATE_ADDRESSED
++ * || /\
++ * \/ ||
++ * DEVICE_CONFIGURED DEVICE_DE_CONFIGURED
++ * || /\
++ * \/ ||
++ * STATE_CONFIGURED
++ *
++ * udc_state_transition_up transitions up (in the direction from STATE_ATTACHED
++ * to STATE_CONFIGURED) from the specified initial state to the specified final
++ * state, passing through each intermediate state on the way. If the initial
++ * state is at or above (i.e. nearer to STATE_CONFIGURED) the final state, then
++ * no state transitions will take place.
++ *
++ * udc_state_transition_down transitions down (in the direction from
++ * STATE_CONFIGURED to STATE_ATTACHED) from the specified initial state to the
++ * specified final state, passing through each intermediate state on the way.
++ * If the initial state is at or below (i.e. nearer to STATE_ATTACHED) the final
++ * state, then no state transitions will take place.
++ *
++ * These functions must only be called with interrupts disabled.
++ */
++static void udc_state_transition_up (usb_device_state_t initial,
++ usb_device_state_t final)
++{
++ if (initial < final) {
++ switch (initial) {
++ case STATE_ATTACHED:
++ usbd_device_event_irq (udc_device,
++ DEVICE_HUB_CONFIGURED, 0);
++ if (final == STATE_POWERED)
++ break;
++ case STATE_POWERED:
++ usbd_device_event_irq (udc_device, DEVICE_RESET, 0);
++ if (final == STATE_DEFAULT)
++ break;
++ case STATE_DEFAULT:
++ usbd_device_event_irq (udc_device,
++ DEVICE_ADDRESS_ASSIGNED, 0);
++ if (final == STATE_ADDRESSED)
++ break;
++ case STATE_ADDRESSED:
++ usbd_device_event_irq (udc_device, DEVICE_CONFIGURED,
++ 0);
++ case STATE_CONFIGURED:
++ break;
++ default:
++ break;
++ }
++ }
++}
++
++static void udc_state_transition_down (usb_device_state_t initial,
++ usb_device_state_t final)
++{
++ if (initial > final) {
++ switch (initial) {
++ case STATE_CONFIGURED:
++ usbd_device_event_irq (udc_device, DEVICE_DE_CONFIGURED, 0);
++ if (final == STATE_ADDRESSED)
++ break;
++ case STATE_ADDRESSED:
++ usbd_device_event_irq (udc_device, DEVICE_RESET, 0);
++ if (final == STATE_DEFAULT)
++ break;
++ case STATE_DEFAULT:
++ usbd_device_event_irq (udc_device, DEVICE_POWER_INTERRUPTION, 0);
++ if (final == STATE_POWERED)
++ break;
++ case STATE_POWERED:
++ usbd_device_event_irq (udc_device, DEVICE_HUB_RESET, 0);
++ case STATE_ATTACHED:
++ break;
++ default:
++ break;
++ }
++ }
++}
++
++/* Handle all device state changes.
++ * This function implements TRM Figure 14-21.
++ */
++static void omap1510_udc_state_changed (void)
++{
++ u16 bits;
++ u16 devstat = inw (UDC_DEVSTAT);
++
++ UDCDBGA ("state changed, devstat %x, old %x", devstat, udc_devstat);
++
++ bits = devstat ^ udc_devstat;
++ if (bits) {
++ if (bits & UDC_ATT) {
++ if (devstat & UDC_ATT) {
++ UDCDBG ("device attached and powered");
++ udc_state_transition_up (udc_device->device_state, STATE_POWERED);
++ } else {
++ UDCDBG ("device detached or unpowered");
++ udc_state_transition_down (udc_device->device_state, STATE_ATTACHED);
++ }
++ }
++ if (bits & UDC_USB_Reset) {
++ if (devstat & UDC_USB_Reset) {
++ UDCDBG ("device reset in progess");
++ udc_state_transition_down (udc_device->device_state, STATE_POWERED);
++ } else {
++ UDCDBG ("device reset completed");
++ }
++ }
++ if (bits & UDC_DEF) {
++ if (devstat & UDC_DEF) {
++ UDCDBG ("device entering default state");
++ udc_state_transition_up (udc_device->device_state, STATE_DEFAULT);
++ } else {
++ UDCDBG ("device leaving default state");
++ udc_state_transition_down (udc_device->device_state, STATE_POWERED);
++ }
++ }
++ if (bits & UDC_SUS) {
++ if (devstat & UDC_SUS) {
++ UDCDBG ("entering suspended state");
++ usbd_device_event_irq (udc_device, DEVICE_BUS_INACTIVE, 0);
++ } else {
++ UDCDBG ("leaving suspended state");
++ usbd_device_event_irq (udc_device, DEVICE_BUS_ACTIVITY, 0);
++ }
++ }
++ if (bits & UDC_R_WK_OK) {
++ UDCDBGA ("remote wakeup %s", (devstat & UDC_R_WK_OK)
++ ? "enabled" : "disabled");
++ }
++ if (bits & UDC_ADD) {
++ if (devstat & UDC_ADD) {
++ UDCDBG ("default -> addressed");
++ udc_state_transition_up (udc_device->device_state, STATE_ADDRESSED);
++ } else {
++ UDCDBG ("addressed -> default");
++ udc_state_transition_down (udc_device->device_state, STATE_DEFAULT);
++ }
++ }
++ if (bits & UDC_CFG) {
++ if (devstat & UDC_CFG) {
++ UDCDBG ("device configured");
++ /* The ep0_recv_setup function generates the
++ * DEVICE_CONFIGURED event when a
++ * USB_REQ_SET_CONFIGURATION setup packet is
++ * received, so we should already be in the
++ * state STATE_CONFIGURED.
++ */
++ udc_state_transition_up (udc_device->device_state, STATE_CONFIGURED);
++ } else {
++ UDCDBG ("device deconfigured");
++ udc_state_transition_down (udc_device->device_state, STATE_ADDRESSED);
++ }
++ }
++ }
++
++ /* Clear interrupt source */
++ outw (UDC_DS_Chg, UDC_IRQ_SRC);
++
++ /* Save current DEVSTAT */
++ udc_devstat = devstat;
++}
++
++static void s3c2410_udc_ep0(void)
++{
++ u_int8_t ep0csr;
++
++ UDCDBG("-> Entering EP0 handler");
++
++ S3C2410_UDC_SETIX(EP0);
++ ep0csr = inb(S3C2410_UDC_IN_CSR1_REG);
++
++ /* clear stall status */
++ if (ep0csr & S3C2410_UDC_EP0_CSR_SENTSTL) {
++ clear_sp0_sst;
++ /* FIXME */
++ ep0_idle();
++ }
++
++ if (ep0csr & S3C2410_UDC_EP0_CSR_SE
++ && dev->ep0state != EP0_IDLE) {
++ clear_ep0_se;
++ ep0_idle();
++ }
++
++ switch (dev->ep0state) {
++ case EP0_IDLE:
++ if (ep0crs & S3C2410_UDC_EP0_CSR_OPKRDY) {
++ }
++ break;
++ case EP0_IN_DATA_PHASE:
++ break;
++ case EP0_OUT_DATA_PHASE:
++ break;
++ case EP0_END_XFER:
++ break;
++ case EP0_STALL:
++ set_ep0_ss;
++ break;
++ }
++}
++
++
++}
++
++/* Handle SETUP USB interrupt.
++ * This function implements TRM Figure 14-14.
++ */
++static void omap1510_udc_setup (struct usb_endpoint_instance *endpoint)
++{
++ UDCDBG ("-> Entering device setup");
++
++ do {
++ const int setup_pktsize = 8;
++ unsigned char *datap =
++ (unsigned char *) &ep0_urb->device_request;
++
++ /* Gain access to EP 0 setup FIFO */
++ outw (UDC_Setup_Sel, UDC_EP_NUM);
++
++ /* Read control request data */
++ insb (UDC_DATA, datap, setup_pktsize);
++
++ UDCDBGA ("EP0 setup read [%x %x %x %x %x %x %x %x]",
++ *(datap + 0), *(datap + 1), *(datap + 2),
++ *(datap + 3), *(datap + 4), *(datap + 5),
++ *(datap + 6), *(datap + 7));
++
++ /* Reset EP0 setup FIFO */
++ outw (0, UDC_EP_NUM);
++ } while (inw (UDC_IRQ_SRC) & UDC_Setup);
++
++ /* Try to process setup packet */
++ if (ep0_recv_setup (ep0_urb)) {
++ /* Not a setup packet, stall next EP0 transaction */
++ udc_stall_ep (0);
++ UDCDBG ("can't parse setup packet, still waiting for setup");
++ return;
++ }
++
++ /* Check direction */
++ if ((ep0_urb->device_request.bmRequestType & USB_REQ_DIRECTION_MASK)
++ == USB_REQ_HOST2DEVICE) {
++ UDCDBG ("control write on EP0");
++ if (le16_to_cpu (ep0_urb->device_request.wLength)) {
++ /* We don't support control write data stages.
++ * The only standard control write request with a data
++ * stage is SET_DESCRIPTOR, and ep0_recv_setup doesn't
++ * support that so we just stall those requests. A
++ * function driver might support a non-standard
++ * write request with a data stage, but it isn't
++ * obvious what we would do with the data if we read it
++ * so we'll just stall it. It seems like the API isn't
++ * quite right here.
++ */
++#if 0
++ /* Here is what we would do if we did support control
++ * write data stages.
++ */
++ ep0_urb->actual_length = 0;
++ outw (0, UDC_EP_NUM);
++ /* enable the EP0 rx FIFO */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++#else
++ /* Stall this request */
++ UDCDBG ("Stalling unsupported EP0 control write data "
++ "stage.");
++ udc_stall_ep (0);
++#endif
++ } else {
++ omap1510_prepare_for_control_write_status (ep0_urb);
++ }
++ } else {
++ UDCDBG ("control read on EP0");
++ /* The ep0_recv_setup function has already placed our response
++ * packet data in ep0_urb->buffer and the packet length in
++ * ep0_urb->actual_length.
++ */
++ endpoint->tx_urb = ep0_urb;
++ endpoint->sent = 0;
++ /* select the EP0 tx FIFO */
++ outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
++ /* Write packet data to the FIFO. omap1510_write_noniso_tx_fifo
++ * will update endpoint->last with the number of bytes written
++ * to the FIFO.
++ */
++ omap1510_write_noniso_tx_fifo (endpoint);
++ /* enable the FIFO to start the packet transmission */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ /* deselect the EP0 tx FIFO */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++ }
++
++ UDCDBG ("<- Leaving device setup");
++}
++
++/* Handle endpoint 0 RX interrupt
++ * This routine implements TRM Figure 14-16.
++ */
++static void omap1510_udc_ep0_rx (struct usb_endpoint_instance *endpoint)
++{
++ unsigned short status;
++
++ UDCDBG ("RX on EP0");
++ /* select EP0 rx FIFO */
++ outw (UDC_EP_Sel, UDC_EP_NUM);
++
++ status = inw (UDC_STAT_FLG);
++
++ if (status & UDC_ACK) {
++ /* Check direction */
++ if ((ep0_urb->device_request.bmRequestType
++ & USB_REQ_DIRECTION_MASK) == USB_REQ_HOST2DEVICE) {
++ /* This rx interrupt must be for a control write data
++ * stage packet.
++ *
++ * We don't support control write data stages.
++ * We should never end up here.
++ */
++
++ /* clear the EP0 rx FIFO */
++ outw (UDC_Clr_EP, UDC_CTRL);
++
++ /* deselect the EP0 rx FIFO */
++ outw (0, UDC_EP_NUM);
++
++ UDCDBG ("Stalling unexpected EP0 control write "
++ "data stage packet");
++ udc_stall_ep (0);
++ } else {
++ /* This rx interrupt must be for a control read status
++ * stage packet.
++ */
++ UDCDBG ("ACK on EP0 control read status stage packet");
++ /* deselect EP0 rx FIFO */
++ outw (0, UDC_EP_NUM);
++ }
++ } else if (status & UDC_STALL) {
++ UDCDBG ("EP0 stall during RX");
++ /* deselect EP0 rx FIFO */
++ outw (0, UDC_EP_NUM);
++ } else {
++ /* deselect EP0 rx FIFO */
++ outw (0, UDC_EP_NUM);
++ }
++}
++
++/* Handle endpoint 0 TX interrupt
++ * This routine implements TRM Figure 14-18.
++ */
++static void omap1510_udc_ep0_tx (struct usb_endpoint_instance *endpoint)
++{
++ unsigned short status;
++ struct usb_device_request *request = &ep0_urb->device_request;
++
++ UDCDBG ("TX on EP0");
++ /* select EP0 TX FIFO */
++ outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
++
++ status = inw (UDC_STAT_FLG);
++ if (status & UDC_ACK) {
++ /* Check direction */
++ if ((request->bmRequestType & USB_REQ_DIRECTION_MASK) ==
++ USB_REQ_HOST2DEVICE) {
++ /* This tx interrupt must be for a control write status
++ * stage packet.
++ */
++ UDCDBG ("ACK on EP0 control write status stage packet");
++ /* deselect EP0 TX FIFO */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++ } else {
++ /* This tx interrupt must be for a control read data
++ * stage packet.
++ */
++ int wLength = le16_to_cpu (request->wLength);
++
++ /* Update our count of bytes sent so far in this
++ * transfer.
++ */
++ endpoint->sent += endpoint->last;
++
++ /* We are finished with this transfer if we have sent
++ * all of the bytes in our tx urb (urb->actual_length)
++ * unless we need a zero-length terminating packet. We
++ * need a zero-length terminating packet if we returned
++ * fewer bytes than were requested (wLength) by the host,
++ * and the number of bytes we returned is an exact
++ * multiple of the packet size endpoint->tx_packetSize.
++ */
++ if ((endpoint->sent == ep0_urb->actual_length)
++ && ((ep0_urb->actual_length == wLength)
++ || (endpoint->last !=
++ endpoint->tx_packetSize))) {
++ /* Done with control read data stage. */
++ UDCDBG ("control read data stage complete");
++ /* deselect EP0 TX FIFO */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++ /* select EP0 RX FIFO to prepare for control
++ * read status stage.
++ */
++ outw (UDC_EP_Sel, UDC_EP_NUM);
++ /* clear the EP0 RX FIFO */
++ outw (UDC_Clr_EP, UDC_CTRL);
++ /* enable the EP0 RX FIFO */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ /* deselect the EP0 RX FIFO */
++ outw (0, UDC_EP_NUM);
++ } else {
++ /* We still have another packet of data to send
++ * in this control read data stage or else we
++ * need a zero-length terminating packet.
++ */
++ UDCDBG ("ACK control read data stage packet");
++ omap1510_write_noniso_tx_fifo (endpoint);
++ /* enable the EP0 tx FIFO to start transmission */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ /* deselect EP0 TX FIFO */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++ }
++ }
++ } else if (status & UDC_STALL) {
++ UDCDBG ("EP0 stall during TX");
++ /* deselect EP0 TX FIFO */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++ } else {
++ /* deselect EP0 TX FIFO */
++ outw (UDC_EP_Dir, UDC_EP_NUM);
++ }
++}
++
++/* Handle RX transaction on non-ISO endpoint.
++ * This function implements TRM Figure 14-27.
++ * The ep argument is a physical endpoint number for a non-ISO OUT endpoint
++ * in the range 1 to 15.
++ */
++static void omap1510_udc_epn_rx (int ep)
++{
++ unsigned short status;
++
++ /* Check endpoint status */
++ status = inw (UDC_STAT_FLG);
++
++ if (status & UDC_ACK) {
++ int nbytes;
++ struct usb_endpoint_instance *endpoint =
++ omap1510_find_ep (ep);
++
++ nbytes = omap1510_read_noniso_rx_fifo (endpoint);
++ usbd_rcv_complete (endpoint, nbytes, 0);
++
++ /* enable rx FIFO to prepare for next packet */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ } else if (status & UDC_STALL) {
++ UDCDBGA ("STALL on RX endpoint %d", ep);
++ } else if (status & UDC_NAK) {
++ UDCDBGA ("NAK on RX ep %d", ep);
++ } else {
++ serial_printf ("omap-bi: RX on ep %d with status %x", ep,
++ status);
++ }
++}
++
++/* Handle TX transaction on non-ISO endpoint.
++ * This function implements TRM Figure 14-29.
++ * The ep argument is a physical endpoint number for a non-ISO IN endpoint
++ * in the range 16 to 30.
++ */
++static void omap1510_udc_epn_tx (int ep)
++{
++ unsigned short status;
++
++ /*serial_printf("omap1510_udc_epn_tx( %x )\n",ep); */
++
++ /* Check endpoint status */
++ status = inw (UDC_STAT_FLG);
++
++ if (status & UDC_ACK) {
++ struct usb_endpoint_instance *endpoint =
++ omap1510_find_ep (ep);
++
++ /* We need to transmit a terminating zero-length packet now if
++ * we have sent all of the data in this URB and the transfer
++ * size was an exact multiple of the packet size.
++ */
++ if (endpoint->tx_urb
++ && (endpoint->last == endpoint->tx_packetSize)
++ && (endpoint->tx_urb->actual_length - endpoint->sent -
++ endpoint->last == 0)) {
++ /* Prepare to transmit a zero-length packet. */
++ endpoint->sent += endpoint->last;
++ /* write 0 bytes of data to FIFO */
++ omap1510_write_noniso_tx_fifo (endpoint);
++ /* enable tx FIFO to start transmission */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ } else if (endpoint->tx_urb
++ && endpoint->tx_urb->actual_length) {
++ /* retire the data that was just sent */
++ usbd_tx_complete (endpoint);
++ /* Check to see if we have more data ready to transmit
++ * now.
++ */
++ if (endpoint->tx_urb
++ && endpoint->tx_urb->actual_length) {
++ /* write data to FIFO */
++ omap1510_write_noniso_tx_fifo (endpoint);
++ /* enable tx FIFO to start transmission */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ }
++ }
++ } else if (status & UDC_STALL) {
++ UDCDBGA ("STALL on TX endpoint %d", ep);
++ } else if (status & UDC_NAK) {
++ UDCDBGA ("NAK on TX endpoint %d", ep);
++ } else {
++ /*serial_printf("omap-bi: TX on ep %d with status %x\n", ep, status); */
++ }
++}
++
++
++/*
++-------------------------------------------------------------------------------
++*/
++
++/* Handle general USB interrupts and dispatch according to type.
++ * This function implements TRM Figure 14-13.
++ */
++void s3c2410_udc_irq (void)
++{
++ u_int8_t save_idx = inb(S3C2410_UDC_INDEX_REG);
++ u_int8_t usb_status = inb(S3C2410_UDC_USB_INT_REG);
++ u_int8_t usbd_status = inb(S3C2410_UDC_EP_INT_REG);
++
++ UDCDBGA("< IRQ usbs=0x%02x, usbds=0x%02x start >", usb_status,
++ usbd_status);
++
++ if (usb_status & S3C2410_UDC_USBINT_RESET) {
++ valid_irq++;
++ }
++
++ if (usb_status & S3C2410_UDC_USBINT_RESUME) {
++ valid_irq++;
++
++ }
++
++ if (usb_status & S3C2410_UDC_USBINT_SUSPEND) {
++ valid_irq++;
++
++ }
++
++ /* Endpoint Interrupts */
++ if (usbd_status) {
++ int i;
++
++ if (usbd_status & S3C2410_UDC_INT_EP0) {
++ s3c2410_udc_ep0();
++ outb(S3C2410_UDC_INT_EP0, S3C2410_UDC_EP_INT_REG);
++ valid_irq++;
++ }
++
++ for (i = 1; i < 5; i++) {
++ u_int32_t tmp = 1 << i;
++
++ if (usbd_status & tmp) {
++ /* FIXME: Handle EP X */
++ s3c2410_udc_epn(i);
++ outb(tmp, S3C2410_UDC_EP_INT_REG);
++ valid_irq++;
++ }
++ }
++ }
++ outb(save_idx, S3C2410_UDC_INDEX_REG);
++
++#if 0
++ if (!(irq_src & ~UDC_SOF_Flg)) /* ignore SOF interrupts ) */
++ return;
++
++ UDCDBGA ("< IRQ #%d start >- %x", udc_interrupts, irq_src);
++ /*serial_printf("< IRQ #%d start >- %x\n", udc_interrupts, irq_src); */
++
++ if (irq_src & UDC_DS_Chg) {
++ /* Device status changed */
++ omap1510_udc_state_changed ();
++ valid_irq++;
++ }
++ if (irq_src & UDC_EP0_RX) {
++ /* Endpoint 0 receive */
++ outw (UDC_EP0_RX, UDC_IRQ_SRC); /* ack interrupt */
++ omap1510_udc_ep0_rx (udc_device->bus->endpoint_array + 0);
++ valid_irq++;
++ }
++ if (irq_src & UDC_EP0_TX) {
++ /* Endpoint 0 transmit */
++ outw (UDC_EP0_TX, UDC_IRQ_SRC); /* ack interrupt */
++ omap1510_udc_ep0_tx (udc_device->bus->endpoint_array + 0);
++ valid_irq++;
++ }
++ if (irq_src & UDC_Setup) {
++ /* Device setup */
++ omap1510_udc_setup (udc_device->bus->endpoint_array + 0);
++ valid_irq++;
++ }
++ /*if (!valid_irq) */
++ /* serial_printf("unknown interrupt, IRQ_SRC %.4x\n", irq_src); */
++#endif
++ UDCDBGA ("< IRQ end >", udc_interrupts);
++
++ udc_interrupts++;
++}
++
++/* This function implements TRM Figure 14-26. */
++void omap1510_udc_noniso_irq (void)
++{
++ unsigned short epnum;
++ unsigned short irq_src = inw (UDC_IRQ_SRC);
++ int valid_irq = 0;
++
++ if (!(irq_src & (UDC_EPn_RX | UDC_EPn_TX)))
++ return;
++
++ UDCDBGA ("non-ISO IRQ, IRQ_SRC %x", inw (UDC_IRQ_SRC));
++
++ if (irq_src & UDC_EPn_RX) { /* Endpoint N OUT transaction */
++ /* Determine the endpoint number for this interrupt */
++ epnum = (inw (UDC_EPN_STAT) & 0x0f00) >> 8;
++ UDCDBGA ("RX on ep %x", epnum);
++
++ /* acknowledge interrupt */
++ outw (UDC_EPn_RX, UDC_IRQ_SRC);
++
++ if (epnum) {
++ /* select the endpoint FIFO */
++ outw (UDC_EP_Sel | epnum, UDC_EP_NUM);
++
++ omap1510_udc_epn_rx (epnum);
++
++ /* deselect the endpoint FIFO */
++ outw (epnum, UDC_EP_NUM);
++ }
++ valid_irq++;
++ }
++ if (irq_src & UDC_EPn_TX) { /* Endpoint N IN transaction */
++ /* Determine the endpoint number for this interrupt */
++ epnum = (inw (UDC_EPN_STAT) & 0x000f) | USB_DIR_IN;
++ UDCDBGA ("TX on ep %x", epnum);
++
++ /* acknowledge interrupt */
++ outw (UDC_EPn_TX, UDC_IRQ_SRC);
++
++ if (epnum) {
++ /* select the endpoint FIFO */
++ outw (UDC_EP_Sel | UDC_EP_Dir | epnum, UDC_EP_NUM);
++
++ omap1510_udc_epn_tx (epnum);
++
++ /* deselect the endpoint FIFO */
++ outw (UDC_EP_Dir | epnum, UDC_EP_NUM);
++ }
++ valid_irq++;
++ }
++ if (!valid_irq)
++ serial_printf (": unknown non-ISO interrupt, IRQ_SRC %.4x\n",
++ irq_src);
++}
++
++/*
++-------------------------------------------------------------------------------
++*/
++
++
++/*
++ * Start of public functions.
++ */
++
++/* Called to start packet transmission. */
++void udc_endpoint_write (struct usb_endpoint_instance *endpoint)
++{
++ unsigned short epnum =
++ endpoint->endpoint_address & USB_ENDPOINT_NUMBER_MASK;
++
++ UDCDBGA ("Starting transmit on ep %x", epnum);
++
++ if (endpoint->tx_urb) {
++ /* select the endpoint FIFO */
++ outw (UDC_EP_Sel | UDC_EP_Dir | epnum, UDC_EP_NUM);
++ /* write data to FIFO */
++ omap1510_write_noniso_tx_fifo (endpoint);
++ /* enable tx FIFO to start transmission */
++ outw (UDC_Set_FIFO_En, UDC_CTRL);
++ /* deselect the endpoint FIFO */
++ outw (UDC_EP_Dir | epnum, UDC_EP_NUM);
++ }
++}
++
++/* Start to initialize h/w stuff */
++int udc_init (void)
++{
++ u16 udc_rev;
++ uchar value;
++ ulong gpio;
++ int i;
++
++ /* Let the device settle down before we start */
++ for (i = 0; i < UDC_INIT_MDELAY; i++) udelay(1000);
++
++ udc_device = NULL;
++
++ UDCDBG ("starting");
++
++ /* Check peripheral reset. Must be 1 to make sure
++ MPU TIPB peripheral reset is inactive */
++ UDCREG (ARM_RSTCT2);
++
++ /* Set and check clock control.
++ * We might ought to be using the clock control API to do
++ * this instead of fiddling with the clock registers directly
++ * here.
++ */
++ outw ((1 << 4) | (1 << 5), CLOCK_CTRL);
++ UDCREG (CLOCK_CTRL);
++ /* Set and check APLL */
++ outw (0x0008, APLL_CTRL);
++ UDCREG (APLL_CTRL);
++ /* Set and check DPLL */
++ outw (0x2210, DPLL_CTRL);
++ UDCREG (DPLL_CTRL);
++ /* Set and check SOFT */
++ outw ((1 << 4) | (1 << 3) | 1, SOFT_REQ);
++ /* Short delay to wait for DPLL */
++ udelay (1000);
++
++ /* Print banner with device revision */
++ udc_rev = inw (UDC_REV) & 0xff;
++ printf ("USB: TI OMAP1510 USB function module rev %d.%d\n",
++ udc_rev >> 4, udc_rev & 0xf);
++
++#ifdef CONFIG_OMAP_SX1
++ i2c_read (0x32, 0x04, 1, &value, 1);
++ value |= 0x04;
++ i2c_write (0x32, 0x04, 1, &value, 1);
++
++ i2c_read (0x32, 0x03, 1, &value, 1);
++ value |= 0x01;
++ i2c_write (0x32, 0x03, 1, &value, 1);
++
++ gpio = inl(GPIO_PIN_CONTROL_REG);
++ gpio |= 0x0002; /* A_IRDA_OFF */
++ gpio |= 0x0800; /* A_SWITCH */
++ gpio |= 0x8000; /* A_USB_ON */
++ outl (gpio, GPIO_PIN_CONTROL_REG);
++
++ gpio = inl(GPIO_DIR_CONTROL_REG);
++ gpio &= ~0x0002; /* A_IRDA_OFF */
++ gpio &= ~0x0800; /* A_SWITCH */
++ gpio &= ~0x8000; /* A_USB_ON */
++ outl (gpio, GPIO_DIR_CONTROL_REG);
++
++ gpio = inl(GPIO_DATA_OUTPUT_REG);
++ gpio |= 0x0002; /* A_IRDA_OFF */
++ gpio &= ~0x0800; /* A_SWITCH */
++ gpio &= ~0x8000; /* A_USB_ON */
++ outl (gpio, GPIO_DATA_OUTPUT_REG);
++#endif
++
++ /* The VBUS_MODE bit selects whether VBUS detection is done via
++ * software (1) or hardware (0). When software detection is
++ * selected, VBUS_CTRL selects whether USB is not connected (0)
++ * or connected (1).
++ */
++ outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_MODE, FUNC_MUX_CTRL_0);
++ outl (inl (FUNC_MUX_CTRL_0) & ~UDC_VBUS_CTRL, FUNC_MUX_CTRL_0);
++ UDCREGL (FUNC_MUX_CTRL_0);
++
++ /*
++ * At this point, device is ready for configuration...
++ */
++
++ UDCDBG ("disable USB interrupts");
++ outw (0, UDC_IRQ_EN);
++ UDCREG (UDC_IRQ_EN);
++
++ UDCDBG ("disable USB DMA");
++ outw (0, UDC_DMA_IRQ_EN);
++ UDCREG (UDC_DMA_IRQ_EN);
++
++ UDCDBG ("initialize SYSCON1");
++ outw (UDC_Self_Pwr | UDC_Pullup_En, UDC_SYSCON1);
++ UDCREG (UDC_SYSCON1);
++
++ return 0;
++}
++
++/* Stall endpoint */
++static void udc_stall_ep (unsigned int ep_addr)
++{
++ /*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
++ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
++
++ UDCDBGA ("stall ep_addr %d", ep_addr);
++
++ /* REVISIT?
++ * The OMAP TRM section 14.2.4.2 says we must check that the FIFO
++ * is empty before halting the endpoint. The current implementation
++ * doesn't check that the FIFO is empty.
++ */
++
++ if (!ep_num) {
++ outw (UDC_Stall_Cmd, UDC_SYSCON2);
++ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) {
++ if (inw (UDC_EP_RX (ep_num)) & UDC_EPn_RX_Valid) {
++ /* we have a valid rx endpoint, so halt it */
++ outw (UDC_EP_Sel | ep_num, UDC_EP_NUM);
++ outw (UDC_Set_Halt, UDC_CTRL);
++ outw (ep_num, UDC_EP_NUM);
++ }
++ } else {
++ if (inw (UDC_EP_TX (ep_num)) & UDC_EPn_TX_Valid) {
++ /* we have a valid tx endpoint, so halt it */
++ outw (UDC_EP_Sel | UDC_EP_Dir | ep_num, UDC_EP_NUM);
++ outw (UDC_Set_Halt, UDC_CTRL);
++ outw (ep_num, UDC_EP_NUM);
++ }
++ }
++}
++
++/* Reset endpoint */
++#if 0
++static void udc_reset_ep (unsigned int ep_addr)
++{
++ /*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
++ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
++
++ UDCDBGA ("reset ep_addr %d", ep_addr);
++
++ if (!ep_num) {
++ /* control endpoint 0 can't be reset */
++ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) {
++ UDCDBGA ("UDC_EP_RX(%d) = 0x%04x", ep_num,
++ inw (UDC_EP_RX (ep_num)));
++ if (inw (UDC_EP_RX (ep_num)) & UDC_EPn_RX_Valid) {
++ /* we have a valid rx endpoint, so reset it */
++ outw (ep_num | UDC_EP_Sel, UDC_EP_NUM);
++ outw (UDC_Reset_EP, UDC_CTRL);
++ outw (ep_num, UDC_EP_NUM);
++ UDCDBGA ("OUT endpoint %d reset", ep_num);
++ }
++ } else {
++ UDCDBGA ("UDC_EP_TX(%d) = 0x%04x", ep_num,
++ inw (UDC_EP_TX (ep_num)));
++ /* Resetting of tx endpoints seems to be causing the USB function
++ * module to fail, which causes problems when the driver is
++ * uninstalled. We'll skip resetting tx endpoints for now until
++ * we figure out what the problem is.
++ */
++#if 0
++ if (inw (UDC_EP_TX (ep_num)) & UDC_EPn_TX_Valid) {
++ /* we have a valid tx endpoint, so reset it */
++ outw (ep_num | UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
++ outw (UDC_Reset_EP, UDC_CTRL);
++ outw (ep_num | UDC_EP_Dir, UDC_EP_NUM);
++ UDCDBGA ("IN endpoint %d reset", ep_num);
++ }
++#endif
++ }
++}
++#endif
++
++/* ************************************************************************** */
++
++/**
++ * udc_check_ep - check logical endpoint
++ *
++ * Return physical endpoint number to use for this logical endpoint or zero if not valid.
++ */
++#if 0
++int udc_check_ep (int logical_endpoint, int packetsize)
++{
++ if ((logical_endpoint == 0x80) ||
++ ((logical_endpoint & 0x8f) != logical_endpoint)) {
++ return 0;
++ }
++
++ switch (packetsize) {
++ case 8:
++ case 16:
++ case 32:
++ case 64:
++ case 128:
++ case 256:
++ case 512:
++ break;
++ default:
++ return 0;
++ }
++
++ return EP_ADDR_TO_PHYS_EP (logical_endpoint);
++}
++#endif
++
++/*
++ * udc_setup_ep - setup endpoint
++ *
++ * Associate a physical endpoint with endpoint_instance
++ */
++void udc_setup_ep (struct usb_device_instance *device,
++ unsigned int ep, struct usb_endpoint_instance *endpoint)
++{
++ UDCDBGA ("setting up endpoint addr %x", endpoint->endpoint_address);
++
++ /* This routine gets called by bi_modinit for endpoint 0 and from
++ * bi_config for all of the other endpoints. bi_config gets called
++ * during the DEVICE_CREATE, DEVICE_CONFIGURED, and
++ * DEVICE_SET_INTERFACE events. We need to reconfigure the OMAP packet
++ * RAM after bi_config scans the selected device configuration and
++ * initializes the endpoint structures, but before this routine enables
++ * the OUT endpoint FIFOs. Since bi_config calls this routine in a
++ * loop for endpoints 1 through UDC_MAX_ENDPOINTS, we reconfigure our
++ * packet RAM here when ep==1.
++ * I really hate to do this here, but it seems like the API exported
++ * by the USB bus interface controller driver to the usbd-bi module
++ * isn't quite right so there is no good place to do this.
++ */
++ if (ep == 1) {
++ omap1510_deconfigure_device ();
++ omap1510_configure_device (device);
++ }
++
++ if (endpoint && (ep < UDC_MAX_ENDPOINTS)) {
++ int ep_addr = endpoint->endpoint_address;
++
++ if (!ep_addr) {
++ /* nothing to do for endpoint 0 */
++ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++ /* nothing to do for IN (tx) endpoints */
++ } else { /* OUT (rx) endpoint */
++ if (endpoint->rcv_packetSize) {
++ /*struct urb* urb = &(urb_out_array[ep&0xFF]); */
++ /*urb->endpoint = endpoint; */
++ /*urb->device = device; */
++ /*urb->buffer_length = sizeof(urb->buffer); */
++
++ /*endpoint->rcv_urb = urb; */
++ omap1510_prepare_endpoint_for_rx (ep_addr);
++ }
++ }
++ }
++}
++
++/**
++ * udc_disable_ep - disable endpoint
++ * @ep:
++ *
++ * Disable specified endpoint
++ */
++#if 0
++void udc_disable_ep (unsigned int ep_addr)
++{
++ /*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
++ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
++ struct usb_endpoint_instance *endpoint = omap1510_find_ep (ep_addr); /*udc_device->bus->endpoint_array + ep; */
++
++ UDCDBGA ("disable ep_addr %d", ep_addr);
++
++ if (!ep_num) {
++ /* nothing to do for endpoint 0 */ ;
++ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++ if (endpoint->tx_packetSize) {
++ /* we have a valid tx endpoint */
++ /*usbd_flush_tx(endpoint); */
++ endpoint->tx_urb = NULL;
++ }
++ } else {
++ if (endpoint->rcv_packetSize) {
++ /* we have a valid rx endpoint */
++ /*usbd_flush_rcv(endpoint); */
++ endpoint->rcv_urb = NULL;
++ }
++ }
++}
++#endif
++
++/* ************************************************************************** */
++
++/**
++ * udc_connected - is the USB cable connected
++ *
++ * Return non-zero if cable is connected.
++ */
++#if 0
++int udc_connected (void)
++{
++ return ((inw (UDC_DEVSTAT) & UDC_ATT) == UDC_ATT);
++}
++#endif
++
++/* Turn on the USB connection by enabling the pullup resistor */
++void udc_connect (void)
++{
++ UDCDBG ("connect, enable Pullup");
++}
++
++/* Turn off the USB connection by disabling the pullup resistor */
++void udc_disconnect (void)
++{
++ UDCDBG ("disconnect, disable Pullup");
++}
++
++/* ************************************************************************** */
++
++
++/*
++ * udc_disable_interrupts - disable interrupts
++ * switch off interrupts
++ */
++#if 0
++void udc_disable_interrupts (struct usb_device_instance *device)
++{
++ UDCDBG ("disabling all interrupts");
++ outw (0, UDC_IRQ_EN);
++}
++#endif
++
++/* ************************************************************************** */
++
++/**
++ * udc_ep0_packetsize - return ep0 packetsize
++ */
++#if 0
++int udc_ep0_packetsize (void)
++{
++ return EP0_PACKETSIZE;
++}
++#endif
++
++/* Switch on the UDC */
++void udc_enable (struct usb_device_instance *device)
++{
++ UDCDBGA ("enable device %p, status %d", device, device->status);
++
++ /* initialize driver state variables */
++ udc_devstat = 0;
++
++ /* Save the device structure pointer */
++ udc_device = device;
++
++ /* Setup ep0 urb */
++ if (!ep0_urb) {
++ ep0_urb =
++ usbd_alloc_urb (udc_device,
++ udc_device->bus->endpoint_array);
++ } else {
++ serial_printf ("udc_enable: ep0_urb already allocated %p\n",
++ ep0_urb);
++ }
++
++#ifdef FIXME
++ /* The VBUS_MODE bit selects whether VBUS detection is done via
++ * software (1) or hardware (0). When software detection is
++ * selected, VBUS_CTRL selects whether USB is not connected (0)
++ * or connected (1).
++ */
++ outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_CTRL | UDC_VBUS_MODE,
++ FUNC_MUX_CTRL_0);
++ UDCREGL (FUNC_MUX_CTRL_0);
++#endif
++
++ s3c2410_configure_device(device);
++}
++
++/* Switch off the UDC */
++void udc_disable (void)
++{
++ UDCDBG ("disable UDC");
++
++ s3c2410_deconfigure_device();
++
++#ifdef FIXME
++ /* The VBUS_MODE bit selects whether VBUS detection is done via
++ * software (1) or hardware (0). When software detection is
++ * selected, VBUS_CTRL selects whether USB is not connected (0)
++ * or connected (1).
++ */
++ outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_MODE, FUNC_MUX_CTRL_0);
++ outl (inl (FUNC_MUX_CTRL_0) & ~UDC_VBUS_CTRL, FUNC_MUX_CTRL_0);
++ UDCREGL (FUNC_MUX_CTRL_0);
++#endif
++
++ /* Free ep0 URB */
++ if (ep0_urb) {
++ /*usbd_dealloc_urb(ep0_urb); */
++ ep0_urb = NULL;
++ }
++
++ /* Reset device pointer.
++ * We ought to do this here to balance the initialization of udc_device
++ * in udc_enable, but some of our other exported functions get called
++ * by the bus interface driver after udc_disable, so we have to hang on
++ * to the device pointer to avoid a null pointer dereference. */
++ /* udc_device = NULL; */
++}
++
++/**
++ * udc_startup - allow udc code to do any additional startup
++ */
++void udc_startup_events (struct usb_device_instance *device)
++{
++ /* The DEVICE_INIT event puts the USB device in the state STATE_INIT. */
++ usbd_device_event_irq (device, DEVICE_INIT, 0);
++
++ /* The DEVICE_CREATE event puts the USB device in the state
++ * STATE_ATTACHED.
++ */
++ usbd_device_event_irq (device, DEVICE_CREATE, 0);
++
++ /* Some USB controller driver implementations signal
++ * DEVICE_HUB_CONFIGURED and DEVICE_RESET events here.
++ * DEVICE_HUB_CONFIGURED causes a transition to the state STATE_POWERED,
++ * and DEVICE_RESET causes a transition to the state STATE_DEFAULT.
++ * The OMAP USB client controller has the capability to detect when the
++ * USB cable is connected to a powered USB bus via the ATT bit in the
++ * DEVSTAT register, so we will defer the DEVICE_HUB_CONFIGURED and
++ * DEVICE_RESET events until later.
++ */
++
++ udc_enable (device);
++}
++
++#endif
+Index: git/fs/cramfs/cramfs.c
+===================================================================
+--- git.orig/fs/cramfs/cramfs.c 2007-01-04 12:21:15.000000000 +0100
++++ git/fs/cramfs/cramfs.c 2007-01-04 12:21:18.000000000 +0100
+@@ -27,7 +27,7 @@
+ #include <common.h>
+ #include <malloc.h>
+
+-#if (CONFIG_COMMANDS & CFG_CMD_JFFS2)
++#if (CONFIG_COMMANDS & CFG_CMD_CRAMFS)
+
+ #include <asm/byteorder.h>
+ #include <linux/stat.h>
+@@ -343,5 +343,22 @@
+ }
+ return 1;
+ }
+-
++#else
++int cramfs_load (char *loadoffset, struct part_info *info, char *filename)
++{
++ return -1;
++}
++int cramfs_ls (struct part_info *info, char *filename)
++{
++ return 0;
++}
++int cramfs_info (struct part_info *info)
++{
++ return 0;
++}
++int cramfs_check (struct part_info *info)
++{
++ return 0;
++}
+ #endif /* CFG_FS_CRAMFS */
++
+Index: git/include/asm-arm/arch-s3c24x0/mmc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/include/asm-arm/arch-s3c24x0/mmc.h 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,112 @@
++/*
++ * linux/drivers/mmc/mmc_pxa.h
++ *
++ * Author: Vladimir Shebordaev, Igor Oblakov
++ * Copyright: MontaVista Software Inc.
++ *
++ * $Id: mmc_pxa.h,v 0.3.1.6 2002/09/25 19:25:48 ted Exp ted $
++ *
++ * 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.
++ */
++#ifndef __MMC_PXA_P_H__
++#define __MMC_PXA_P_H__
++
++#include <asm/arch/regs-sdi.h>
++
++#define MMC_DEFAULT_RCA (1<<16)
++
++#define MMC_BLOCK_SIZE 512
++#define MMC_CMD_RESET 0
++#define MMC_CMD_SEND_OP_COND 1
++#define MMC_CMD_ALL_SEND_CID 2
++#define MMC_CMD_SET_RCA 3
++#define MMC_CMD_SELECT_CARD 7
++#define MMC_CMD_SEND_CSD 9
++#define MMC_CMD_SEND_CID 10
++#define MMC_CMD_SEND_STATUS 13
++#define MMC_CMD_SET_BLOCKLEN 16
++#define MMC_CMD_READ_BLOCK 17
++#define MMC_CMD_RD_BLK_MULTI 18
++#define MMC_CMD_WRITE_BLOCK 24
++
++#define MMC_MAX_BLOCK_SIZE 512
++
++#define MMC_R1_IDLE_STATE 0x01
++#define MMC_R1_ERASE_STATE 0x02
++#define MMC_R1_ILLEGAL_CMD 0x04
++#define MMC_R1_COM_CRC_ERR 0x08
++#define MMC_R1_ERASE_SEQ_ERR 0x01
++#define MMC_R1_ADDR_ERR 0x02
++#define MMC_R1_PARAM_ERR 0x04
++
++#define MMC_R1B_WP_ERASE_SKIP 0x0002
++#define MMC_R1B_ERR 0x0004
++#define MMC_R1B_CC_ERR 0x0008
++#define MMC_R1B_CARD_ECC_ERR 0x0010
++#define MMC_R1B_WP_VIOLATION 0x0020
++#define MMC_R1B_ERASE_PARAM 0x0040
++#define MMC_R1B_OOR 0x0080
++#define MMC_R1B_IDLE_STATE 0x0100
++#define MMC_R1B_ERASE_RESET 0x0200
++#define MMC_R1B_ILLEGAL_CMD 0x0400
++#define MMC_R1B_COM_CRC_ERR 0x0800
++#define MMC_R1B_ERASE_SEQ_ERR 0x1000
++#define MMC_R1B_ADDR_ERR 0x2000
++#define MMC_R1B_PARAM_ERR 0x4000
++
++typedef struct mmc_cid
++{
++/* FIXME: BYTE_ORDER */
++ uchar year:4,
++ month:4;
++ uchar sn[3];
++ uchar fwrev:4,
++ hwrev:4;
++ uchar name[6];
++ uchar id[3];
++} mmc_cid_t;
++
++typedef struct mmc_csd
++{
++ uchar ecc:2,
++ file_format:2,
++ tmp_write_protect:1,
++ perm_write_protect:1,
++ copy:1,
++ file_format_grp:1;
++ uint64_t content_prot_app:1,
++ rsvd3:4,
++ write_bl_partial:1,
++ write_bl_len:4,
++ r2w_factor:3,
++ default_ecc:2,
++ wp_grp_enable:1,
++ wp_grp_size:5,
++ erase_grp_mult:5,
++ erase_grp_size:5,
++ c_size_mult1:3,
++ vdd_w_curr_max:3,
++ vdd_w_curr_min:3,
++ vdd_r_curr_max:3,
++ vdd_r_curr_min:3,
++ c_size:12,
++ rsvd2:2,
++ dsr_imp:1,
++ read_blk_misalign:1,
++ write_blk_misalign:1,
++ read_bl_partial:1;
++
++ ushort read_bl_len:4,
++ ccc:12;
++ uchar tran_speed;
++ uchar nsac;
++ uchar taac;
++ uchar rsvd1:2,
++ spec_vers:4,
++ csd_structure:2;
++} mmc_csd_t;
++
++
++#endif /* __MMC_PXA_P_H__ */
+Index: git/include/asm-arm/arch-s3c24x0/regs-sdi.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/include/asm-arm/arch-s3c24x0/regs-sdi.h 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,110 @@
++/* linux/include/asm/arch-s3c2410/regs-sdi.h
++ *
++ * Copyright (c) 2004 Simtec Electronics <linux@simtec.co.uk>
++ * http://www.simtec.co.uk/products/SWLINUX/
++ *
++ * 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.
++ *
++ * S3C2410 MMC/SDIO register definitions
++ *
++ * Changelog:
++ * 18-Aug-2004 Ben Dooks Created initial file
++ * 29-Nov-2004 Koen Martens Added some missing defines, fixed duplicates
++ * 29-Nov-2004 Ben Dooks Updated Koen's patch
++*/
++
++#ifndef __ASM_ARM_REGS_SDI
++#define __ASM_ARM_REGS_SDI "regs-sdi.h"
++
++#define S3C2440_SDICON_SDRESET (1<<8)
++#define S3C2440_SDICON_MMCCLOCK (1<<5)
++#define S3C2410_SDICON_BYTEORDER (1<<4)
++#define S3C2410_SDICON_SDIOIRQ (1<<3)
++#define S3C2410_SDICON_RWAITEN (1<<2)
++#define S3C2410_SDICON_FIFORESET (1<<1)
++#define S3C2410_SDICON_CLOCKTYPE (1<<0)
++
++#define S3C2410_SDICMDCON_ABORT (1<<12)
++#define S3C2410_SDICMDCON_WITHDATA (1<<11)
++#define S3C2410_SDICMDCON_LONGRSP (1<<10)
++#define S3C2410_SDICMDCON_WAITRSP (1<<9)
++#define S3C2410_SDICMDCON_CMDSTART (1<<8)
++#define S3C2410_SDICMDCON_SENDERHOST (1<<6)
++#define S3C2410_SDICMDCON_INDEX (0x3f)
++
++#define S3C2410_SDICMDSTAT_CRCFAIL (1<<12)
++#define S3C2410_SDICMDSTAT_CMDSENT (1<<11)
++#define S3C2410_SDICMDSTAT_CMDTIMEOUT (1<<10)
++#define S3C2410_SDICMDSTAT_RSPFIN (1<<9)
++#define S3C2410_SDICMDSTAT_XFERING (1<<8)
++#define S3C2410_SDICMDSTAT_INDEX (0xff)
++
++#define S3C2440_SDIDCON_DS_BYTE (0<<22)
++#define S3C2440_SDIDCON_DS_HALFWORD (1<<22)
++#define S3C2440_SDIDCON_DS_WORD (2<<22)
++#define S3C2410_SDIDCON_IRQPERIOD (1<<21)
++#define S3C2410_SDIDCON_TXAFTERRESP (1<<20)
++#define S3C2410_SDIDCON_RXAFTERCMD (1<<19)
++#define S3C2410_SDIDCON_BUSYAFTERCMD (1<<18)
++#define S3C2410_SDIDCON_BLOCKMODE (1<<17)
++#define S3C2410_SDIDCON_WIDEBUS (1<<16)
++#define S3C2410_SDIDCON_DMAEN (1<<15)
++#define S3C2410_SDIDCON_STOP (1<<14)
++#define S3C2440_SDIDCON_DATSTART (1<<14)
++#define S3C2410_SDIDCON_DATMODE (3<<12)
++#define S3C2410_SDIDCON_BLKNUM (0x7ff)
++
++/* constants for S3C2410_SDIDCON_DATMODE */
++#define S3C2410_SDIDCON_XFER_READY (0<<12)
++#define S3C2410_SDIDCON_XFER_CHKSTART (1<<12)
++#define S3C2410_SDIDCON_XFER_RXSTART (2<<12)
++#define S3C2410_SDIDCON_XFER_TXSTART (3<<12)
++
++#define S3C2410_SDIDCON_BLKNUM_MASK (0xFFF)
++#define S3C2410_SDIDCNT_BLKNUM_SHIFT (12)
++
++#define S3C2410_SDIDSTA_RDYWAITREQ (1<<10)
++#define S3C2410_SDIDSTA_SDIOIRQDETECT (1<<9)
++#define S3C2410_SDIDSTA_FIFOFAIL (1<<8) /* reserved on 2440 */
++#define S3C2410_SDIDSTA_CRCFAIL (1<<7)
++#define S3C2410_SDIDSTA_RXCRCFAIL (1<<6)
++#define S3C2410_SDIDSTA_DATATIMEOUT (1<<5)
++#define S3C2410_SDIDSTA_XFERFINISH (1<<4)
++#define S3C2410_SDIDSTA_BUSYFINISH (1<<3)
++#define S3C2410_SDIDSTA_SBITERR (1<<2) /* reserved on 2410a/2440 */
++#define S3C2410_SDIDSTA_TXDATAON (1<<1)
++#define S3C2410_SDIDSTA_RXDATAON (1<<0)
++
++#define S3C2440_SDIFSTA_FIFORESET (1<<16)
++#define S3C2440_SDIFSTA_FIFOFAIL (3<<14) /* 3 is correct (2 bits) */
++#define S3C2410_SDIFSTA_TFDET (1<<13)
++#define S3C2410_SDIFSTA_RFDET (1<<12)
++#define S3C2410_SDIFSTA_TFHALF (1<<11)
++#define S3C2410_SDIFSTA_TFEMPTY (1<<10)
++#define S3C2410_SDIFSTA_RFLAST (1<<9)
++#define S3C2410_SDIFSTA_RFFULL (1<<8)
++#define S3C2410_SDIFSTA_RFHALF (1<<7)
++#define S3C2410_SDIFSTA_COUNTMASK (0x7f)
++
++#define S3C2410_SDIIMSK_RESPONSECRC (1<<17)
++#define S3C2410_SDIIMSK_CMDSENT (1<<16)
++#define S3C2410_SDIIMSK_CMDTIMEOUT (1<<15)
++#define S3C2410_SDIIMSK_RESPONSEND (1<<14)
++#define S3C2410_SDIIMSK_READWAIT (1<<13)
++#define S3C2410_SDIIMSK_SDIOIRQ (1<<12)
++#define S3C2410_SDIIMSK_FIFOFAIL (1<<11)
++#define S3C2410_SDIIMSK_CRCSTATUS (1<<10)
++#define S3C2410_SDIIMSK_DATACRC (1<<9)
++#define S3C2410_SDIIMSK_DATATIMEOUT (1<<8)
++#define S3C2410_SDIIMSK_DATAFINISH (1<<7)
++#define S3C2410_SDIIMSK_BUSYFINISH (1<<6)
++#define S3C2410_SDIIMSK_SBITERR (1<<5) /* reserved 2440/2410a */
++#define S3C2410_SDIIMSK_TXFIFOHALF (1<<4)
++#define S3C2410_SDIIMSK_TXFIFOEMPTY (1<<3)
++#define S3C2410_SDIIMSK_RXFIFOLAST (1<<2)
++#define S3C2410_SDIIMSK_RXFIFOFULL (1<<1)
++#define S3C2410_SDIIMSK_RXFIFOHALF (1<<0)
++
++#endif /* __ASM_ARM_REGS_SDI */
+Index: git/include/asm-arm/mach-types.h
+===================================================================
+--- git.orig/include/asm-arm/mach-types.h 2007-01-04 12:21:15.000000000 +0100
++++ git/include/asm-arm/mach-types.h 2007-01-04 12:21:18.000000000 +0100
+@@ -424,7 +424,7 @@
+ #define MACH_TYPE_MPORT3S 411
+ #define MACH_TYPE_RA_ALPHA 412
+ #define MACH_TYPE_XCEP 413
+-#define MACH_TYPE_ARCOM_MERCURY 414
++#define MACH_TYPE_ARCOM_VULCAN 414
+ #define MACH_TYPE_STARGATE 415
+ #define MACH_TYPE_ARMADILLOJ 416
+ #define MACH_TYPE_ELROY_JACK 417
+@@ -457,7 +457,7 @@
+ #define MACH_TYPE_XM250 444
+ #define MACH_TYPE_T6TC1XB 445
+ #define MACH_TYPE_ESS710 446
+-#define MACH_TYPE_MX3ADS 447
++#define MACH_TYPE_MX31ADS 447
+ #define MACH_TYPE_HIMALAYA 448
+ #define MACH_TYPE_BOLFENK 449
+ #define MACH_TYPE_AT91RM9200KR 450
+@@ -736,7 +736,309 @@
+ #define MACH_TYPE_LN2410SBC 725
+ #define MACH_TYPE_CB3RUFC 726
+ #define MACH_TYPE_MP2USB 727
+-#define MACH_TYPE_PDNB3 1002
++#define MACH_TYPE_NTNP425C 728
++#define MACH_TYPE_COLIBRI 729
++#define MACH_TYPE_PCM7220 730
++#define MACH_TYPE_GATEWAY7001 731
++#define MACH_TYPE_PCM027 732
++#define MACH_TYPE_CMPXA 733
++#define MACH_TYPE_ANUBIS 734
++#define MACH_TYPE_ITE8152 735
++#define MACH_TYPE_LPC3XXX 736
++#define MACH_TYPE_PUPPETEER 737
++#define MACH_TYPE_MACH_VADATECH 738
++#define MACH_TYPE_E570 739
++#define MACH_TYPE_X50 740
++#define MACH_TYPE_RECON 741
++#define MACH_TYPE_XBOARDGP8 742
++#define MACH_TYPE_FPIC2 743
++#define MACH_TYPE_AKITA 744
++#define MACH_TYPE_A81 745
++#define MACH_TYPE_SVM_SC25X 746
++#define MACH_TYPE_VADATECH020 747
++#define MACH_TYPE_TLI 748
++#define MACH_TYPE_EDB9315LC 749
++#define MACH_TYPE_PASSEC 750
++#define MACH_TYPE_DS_TIGER 751
++#define MACH_TYPE_E310 752
++#define MACH_TYPE_E330 753
++#define MACH_TYPE_RT3000 754
++#define MACH_TYPE_NOKIA770 755
++#define MACH_TYPE_PNX0106 756
++#define MACH_TYPE_HX21XX 757
++#define MACH_TYPE_FARADAY 758
++#define MACH_TYPE_SBC9312 759
++#define MACH_TYPE_BATMAN 760
++#define MACH_TYPE_JPD201 761
++#define MACH_TYPE_MIPSA 762
++#define MACH_TYPE_KACOM 763
++#define MACH_TYPE_SWARCOCPU 764
++#define MACH_TYPE_SWARCODSL 765
++#define MACH_TYPE_BLUEANGEL 766
++#define MACH_TYPE_HAIRYGRAMA 767
++#define MACH_TYPE_BANFF 768
++#define MACH_TYPE_CARMEVA 769
++#define MACH_TYPE_SAM255 770
++#define MACH_TYPE_PPM10 771
++#define MACH_TYPE_EDB9315A 772
++#define MACH_TYPE_SUNSET 773
++#define MACH_TYPE_STARGATE2 774
++#define MACH_TYPE_INTELMOTE2 775
++#define MACH_TYPE_TRIZEPS4 776
++#define MACH_TYPE_MAINSTONE2 777
++#define MACH_TYPE_EZ_IXP42X 778
++#define MACH_TYPE_TAPWAVE_ZODIAC 779
++#define MACH_TYPE_UNIVERSALMETER 780
++#define MACH_TYPE_HICOARM9 781
++#define MACH_TYPE_PNX4008 782
++#define MACH_TYPE_KWS6000 783
++#define MACH_TYPE_PORTUX920T 784
++#define MACH_TYPE_EZ_X5 785
++#define MACH_TYPE_OMAP_RUDOLPH 786
++#define MACH_TYPE_CPUAT91 787
++#define MACH_TYPE_REA9200 788
++#define MACH_TYPE_ACTS_PUNE_SA1110 789
++#define MACH_TYPE_IXP425 790
++#define MACH_TYPE_ARGONPLUSODYSSEY 791
++#define MACH_TYPE_PERCH 792
++#define MACH_TYPE_EIS05R1 793
++#define MACH_TYPE_PEPPERPAD 794
++#define MACH_TYPE_SB3010 795
++#define MACH_TYPE_RM9200 796
++#define MACH_TYPE_DMA03 797
++#define MACH_TYPE_ROAD_S101 798
++#define MACH_TYPE_IQ_NEXTGEN_A 799
++#define MACH_TYPE_IQ_NEXTGEN_B 800
++#define MACH_TYPE_IQ_NEXTGEN_C 801
++#define MACH_TYPE_IQ_NEXTGEN_D 802
++#define MACH_TYPE_IQ_NEXTGEN_E 803
++#define MACH_TYPE_MALLOW_AT91 804
++#define MACH_TYPE_CYBERTRACKER_I 805
++#define MACH_TYPE_GESBC931X 806
++#define MACH_TYPE_CENTIPAD 807
++#define MACH_TYPE_ARMSOC 808
++#define MACH_TYPE_SE4200 809
++#define MACH_TYPE_EMS197A 810
++#define MACH_TYPE_MICRO9 811
++#define MACH_TYPE_MICRO9L 812
++#define MACH_TYPE_UC5471DSP 813
++#define MACH_TYPE_SJ5471ENG 814
++#define MACH_TYPE_CMPXA26X 815
++#define MACH_TYPE_NC 816
++#define MACH_TYPE_OMAP_PALMTE 817
++#define MACH_TYPE_AJAX52X 818
++#define MACH_TYPE_SIRIUSTAR 819
++#define MACH_TYPE_IODATA_HDLG 820
++#define MACH_TYPE_AT91RM9200UTL 821
++#define MACH_TYPE_BIOSAFE 822
++#define MACH_TYPE_MP1000 823
++#define MACH_TYPE_PARSY 824
++#define MACH_TYPE_CCXP 825
++#define MACH_TYPE_OMAP_GSAMPLE 826
++#define MACH_TYPE_REALVIEW_EB 827
++#define MACH_TYPE_SAMOA 828
++#define MACH_TYPE_T3XSCALE 829
++#define MACH_TYPE_I878 830
++#define MACH_TYPE_BORZOI 831
++#define MACH_TYPE_GECKO 832
++#define MACH_TYPE_DS101 833
++#define MACH_TYPE_OMAP_PALMTT2 834
++#define MACH_TYPE_XSCALE_PALMLD 835
++#define MACH_TYPE_CC9C 836
++#define MACH_TYPE_SBC1670 837
++#define MACH_TYPE_IXDP28X5 838
++#define MACH_TYPE_OMAP_PALMTT 839
++#define MACH_TYPE_ML696K 840
++#define MACH_TYPE_ARCOM_ZEUS 841
++#define MACH_TYPE_OSIRIS 842
++#define MACH_TYPE_MAESTRO 843
++#define MACH_TYPE_TUNGE2 844
++#define MACH_TYPE_IXBBM 845
++#define MACH_TYPE_MX27 846
++#define MACH_TYPE_AX8004 847
++#define MACH_TYPE_AT91SAM9261EK 848
++#define MACH_TYPE_LOFT 849
++#define MACH_TYPE_MAGPIE 850
++#define MACH_TYPE_MX21 851
++#define MACH_TYPE_MB87M3400 852
++#define MACH_TYPE_MGUARD_DELTA 853
++#define MACH_TYPE_DAVINCI_DVDP 854
++#define MACH_TYPE_HTCUNIVERSAL 855
++#define MACH_TYPE_TPAD 856
++#define MACH_TYPE_ROVERP3 857
++#define MACH_TYPE_JORNADA928 858
++#define MACH_TYPE_MV88FXX81 859
++#define MACH_TYPE_STMP36XX 860
++#define MACH_TYPE_SXNI79524 861
++#define MACH_TYPE_AMS_DELTA 862
++#define MACH_TYPE_URANIUM 863
++#define MACH_TYPE_UCON 864
++#define MACH_TYPE_NAS100D 865
++#define MACH_TYPE_L083_1000 866
++#define MACH_TYPE_EZX 867
++#define MACH_TYPE_PNX5220 868
++#define MACH_TYPE_BUTTE 869
++#define MACH_TYPE_SRM2 870
++#define MACH_TYPE_DSBR 871
++#define MACH_TYPE_CRYSTALBALL 872
++#define MACH_TYPE_TINYPXA27X 873
++#define MACH_TYPE_HERBIE 874
++#define MACH_TYPE_MAGICIAN 875
++#define MACH_TYPE_CM4002 876
++#define MACH_TYPE_B4 877
++#define MACH_TYPE_MAUI 878
++#define MACH_TYPE_CYBERTRACKER_G 879
++#define MACH_TYPE_NXDKN 880
++#define MACH_TYPE_MIO8390 881
++#define MACH_TYPE_OMI_BOARD 882
++#define MACH_TYPE_MX21CIV 883
++#define MACH_TYPE_MAHI_CDAC 884
++#define MACH_TYPE_XSCALE_PALMTX 885
++#define MACH_TYPE_S3C2413 887
++#define MACH_TYPE_SAMSYS_EP0 888
++#define MACH_TYPE_WG302V1 889
++#define MACH_TYPE_WG302V2 890
++#define MACH_TYPE_EB42X 891
++#define MACH_TYPE_IQ331ES 892
++#define MACH_TYPE_COSYDSP 893
++#define MACH_TYPE_UPLAT7D 894
++#define MACH_TYPE_PTDAVINCI 895
++#define MACH_TYPE_MBUS 896
++#define MACH_TYPE_NADIA2VB 897
++#define MACH_TYPE_R1000 898
++#define MACH_TYPE_HW90250 899
++#define MACH_TYPE_OMAP_2430SDP 900
++#define MACH_TYPE_DAVINCI_EVM 901
++#define MACH_TYPE_OMAP_TORNADO 902
++#define MACH_TYPE_OLOCREEK 903
++#define MACH_TYPE_PALMZ72 904
++#define MACH_TYPE_NXDB500 905
++#define MACH_TYPE_APF9328 906
++#define MACH_TYPE_OMAP_WIPOQ 907
++#define MACH_TYPE_OMAP_TWIP 908
++#define MACH_TYPE_XSCALE_PALMTREO650 909
++#define MACH_TYPE_ACUMEN 910
++#define MACH_TYPE_XP100 911
++#define MACH_TYPE_FS2410 912
++#define MACH_TYPE_PXA270_CERF 913
++#define MACH_TYPE_SQ2FTLPALM 914
++#define MACH_TYPE_BSEMSERVER 915
++#define MACH_TYPE_NETCLIENT 916
++#define MACH_TYPE_XSCALE_PALMTT5 917
++#define MACH_TYPE_OMAP_PALMTC 918
++#define MACH_TYPE_OMAP_APOLLON 919
++#define MACH_TYPE_ARGONLVEVB 920
++#define MACH_TYPE_REA_2D 921
++#define MACH_TYPE_TI3E524 922
++#define MACH_TYPE_ATEB9200 923
++#define MACH_TYPE_AUCKLAND 924
++#define MACH_TYPE_AK3320M 925
++#define MACH_TYPE_DURAMAX 926
++#define MACH_TYPE_N35 927
++#define MACH_TYPE_PRONGHORN 928
++#define MACH_TYPE_FUNDY 929
++#define MACH_TYPE_LOGICPD_PXA270 930
++#define MACH_TYPE_CPU777 931
++#define MACH_TYPE_SIMICON9201 932
++#define MACH_TYPE_LEAP2_HPM 933
++#define MACH_TYPE_CM922TXA10 934
++#define MACH_TYPE_PXA 935
++#define MACH_TYPE_SANDGATE2 936
++#define MACH_TYPE_SANDGATE2G 937
++#define MACH_TYPE_SANDGATE2P 938
++#define MACH_TYPE_FRED_JACK 939
++#define MACH_TYPE_TTG_COLOR1 940
++#define MACH_TYPE_NXEB500HMI 941
++#define MACH_TYPE_NETDCU8 942
++#define MACH_TYPE_ML675050_CPU_BOA 943
++#define MACH_TYPE_NG_FVX538 944
++#define MACH_TYPE_NG_FVS338 945
++#define MACH_TYPE_PNX4103 946
++#define MACH_TYPE_HESDB 947
++#define MACH_TYPE_XSILO 948
++#define MACH_TYPE_ESPRESSO 949
++#define MACH_TYPE_EMLC 950
++#define MACH_TYPE_SISTERON 951
++#define MACH_TYPE_RX1950 952
++#define MACH_TYPE_TSC_VENUS 953
++#define MACH_TYPE_DS101J 954
++#define MACH_TYPE_MXC30030ADS 955
++#define MACH_TYPE_FUJITSU_WIMAXSOC 956
++#define MACH_TYPE_DUALPCMODEM 957
++#define MACH_TYPE_GESBC9312 958
++#define MACH_TYPE_HTCAPACHE 959
++#define MACH_TYPE_IXDP435 960
++#define MACH_TYPE_CATPROVT100 961
++#define MACH_TYPE_PICOTUX1XX 962
++#define MACH_TYPE_PICOTUX2XX 963
++#define MACH_TYPE_DSMG600 964
++#define MACH_TYPE_EMPC2 965
++#define MACH_TYPE_VENTURA 966
++#define MACH_TYPE_PHIDGET_SBC 967
++#define MACH_TYPE_IJ3K 968
++#define MACH_TYPE_PISGAH 969
++#define MACH_TYPE_OMAP_FSAMPLE 970
++#define MACH_TYPE_SG720 971
++#define MACH_TYPE_REDFOX 972
++#define MACH_TYPE_MYSH_EP9315_1 973
++#define MACH_TYPE_TPF106 974
++#define MACH_TYPE_AT91RM9200KG 975
++#define MACH_TYPE_SLEDB 976
++#define MACH_TYPE_ONTRACK 977
++#define MACH_TYPE_PM1200 978
++#define MACH_TYPE_ESS24XXX 979
++#define MACH_TYPE_COREMP7 980
++#define MACH_TYPE_NEXCODER_6446 981
++#define MACH_TYPE_STVC8380 982
++#define MACH_TYPE_TEKLYNX 983
++#define MACH_TYPE_CARBONADO 984
++#define MACH_TYPE_SYSMOS_MP730 985
++#define MACH_TYPE_SNAPPER_CL15 986
++#define MACH_TYPE_PGIGIM 987
++#define MACH_TYPE_PTX9160P2 988
++#define MACH_TYPE_DCORE1 989
++#define MACH_TYPE_VICTORPXA 990
++#define MACH_TYPE_MX2DTB 991
++#define MACH_TYPE_PXA_IREX_ER0100 992
++#define MACH_TYPE_OMAP_PALMZ71 993
++#define MACH_TYPE_BARTEC_DEG 994
++#define MACH_TYPE_HW50251 995
++#define MACH_TYPE_IBOX 996
++#define MACH_TYPE_ATLASLH7A404 997
++#define MACH_TYPE_PT2026 998
++#define MACH_TYPE_HTCALPINE 999
++#define MACH_TYPE_BARTEC_VTU 1000
++#define MACH_TYPE_VCOREII 1001
++#define MACH_TYPE_PDNB3 1002
++#define MACH_TYPE_HTCBEETLES 1003
++#define MACH_TYPE_S3C6400 1004
++#define MACH_TYPE_S3C2443 1005
++#define MACH_TYPE_OMAP_LDK 1006
++#define MACH_TYPE_SMDK2460 1007
++#define MACH_TYPE_SMDK2440 1008
++#define MACH_TYPE_SMDK2412 1009
++#define MACH_TYPE_WEBBOX 1010
++#define MACH_TYPE_CWWNDP 1011
++#define MACH_TYPE_DRAGON 1012
++#define MACH_TYPE_OPENDO_CPU_BOARD 1013
++#define MACH_TYPE_CCM2200 1014
++#define MACH_TYPE_ETWARM 1015
++#define MACH_TYPE_M93030 1016
++#define MACH_TYPE_CC7U 1017
++#define MACH_TYPE_MTT_RANGER 1018
++#define MACH_TYPE_NEXUS 1019
++#define MACH_TYPE_DESMAN 1020
++#define MACH_TYPE_BKDE303 1021
++#define MACH_TYPE_SMDK2413 1022
++#define MACH_TYPE_AML_M7200 1023
++#define MACH_TYPE_AML_M5900 1024
++#define MACH_TYPE_SG640 1025
++#define MACH_TYPE_EDG79524 1026
++#define MACH_TYPE_AI2410 1027
++#define MACH_TYPE_IXP465 1028
++#define MACH_TYPE_BALLOON3 1029
++#define MACH_TYPE_QT2410 1108
++#define MACH_TYPE_GTA01 1182
+
+ #ifdef CONFIG_ARCH_EBSA110
+ # ifdef machine_arch_type
+@@ -3541,9 +3843,9 @@
+ # else
+ # define machine_arch_type MACH_TYPE_RAMSES
+ # endif
+-# define machine_is_ramses() (machine_arch_type == MACH_TYPE_RAMSES)
++# define machine_is_mnci() (machine_arch_type == MACH_TYPE_RAMSES)
+ #else
+-# define machine_is_ramses() (0)
++# define machine_is_mnci() (0)
+ #endif
+
+ #ifdef CONFIG_ARCH_S28X
+@@ -4501,9 +4803,9 @@
+ # else
+ # define machine_arch_type MACH_TYPE_M825XX
+ # endif
+-# define machine_is_m825xx() (machine_arch_type == MACH_TYPE_M825XX)
++# define machine_is_comcerto() (machine_arch_type == MACH_TYPE_M825XX)
+ #else
+-# define machine_is_m825xx() (0)
++# define machine_is_comcerto() (0)
+ #endif
+
+ #ifdef CONFIG_SA1100_M7100
+@@ -5658,16 +5960,16 @@
+ # define machine_is_xcep() (0)
+ #endif
+
+-#ifdef CONFIG_MACH_ARCOM_MERCURY
++#ifdef CONFIG_MACH_ARCOM_VULCAN
+ # ifdef machine_arch_type
+ # undef machine_arch_type
+ # define machine_arch_type __machine_arch_type
+ # else
+-# define machine_arch_type MACH_TYPE_ARCOM_MERCURY
++# define machine_arch_type MACH_TYPE_ARCOM_VULCAN
+ # endif
+-# define machine_is_arcom_mercury() (machine_arch_type == MACH_TYPE_ARCOM_MERCURY)
++# define machine_is_arcom_vulcan() (machine_arch_type == MACH_TYPE_ARCOM_VULCAN)
+ #else
+-# define machine_is_arcom_mercury() (0)
++# define machine_is_arcom_vulcan() (0)
+ #endif
+
+ #ifdef CONFIG_MACH_STARGATE
+@@ -6054,16 +6356,16 @@
+ # define machine_is_ess710() (0)
+ #endif
+
+-#ifdef CONFIG_MACH_MX3ADS
++#ifdef CONFIG_MACH_MX31ADS
+ # ifdef machine_arch_type
+ # undef machine_arch_type
+ # define machine_arch_type __machine_arch_type
+ # else
+-# define machine_arch_type MACH_TYPE_MX3ADS
++# define machine_arch_type MACH_TYPE_MX31ADS
+ # endif
+-# define machine_is_mx3ads() (machine_arch_type == MACH_TYPE_MX3ADS)
++# define machine_is_mx31ads() (machine_arch_type == MACH_TYPE_MX31ADS)
+ #else
+-# define machine_is_mx3ads() (0)
++# define machine_is_mx31ads() (0)
+ #endif
+
+ #ifdef CONFIG_MACH_HIMALAYA
+@@ -7333,9 +7635,9 @@
+ # else
+ # define machine_arch_type MACH_TYPE_ARGONPLUSEVB
+ # endif
+-# define machine_is_argonplusevb() (machine_arch_type == MACH_TYPE_ARGONPLUSEVB)
++# define machine_is_i30030evb() (machine_arch_type == MACH_TYPE_ARGONPLUSEVB)
+ #else
+-# define machine_is_argonplusevb() (0)
++# define machine_is_i30030evb() (0)
+ #endif
+
+ #ifdef CONFIG_MACH_SCMA11EVB
+@@ -7345,9 +7647,9 @@
+ # else
+ # define machine_arch_type MACH_TYPE_SCMA11EVB
+ # endif
+-# define machine_is_scma11evb() (machine_arch_type == MACH_TYPE_SCMA11EVB)
++# define machine_is_mxc27530evb() (machine_arch_type == MACH_TYPE_SCMA11EVB)
+ #else
+-# define machine_is_scma11evb() (0)
++# define machine_is_mxc27530evb() (0)
+ #endif
+
+ #ifdef CONFIG_MACH_SMDK2800
+@@ -8305,9 +8607,9 @@
+ # else
+ # define machine_arch_type MACH_TYPE_SCMA11BB
+ # endif
+-# define machine_is_scma11bb() (machine_arch_type == MACH_TYPE_SCMA11BB)
++# define machine_is_mxc27530ads() (machine_arch_type == MACH_TYPE_SCMA11BB)
+ #else
+-# define machine_is_scma11bb() (0)
++# define machine_is_mxc27530ads() (0)
+ #endif
+
+ #ifdef CONFIG_MACH_TRIZEPS3
+@@ -9193,9 +9495,9 @@
+ # else
+ # define machine_arch_type MACH_TYPE_ZEUSEVB
+ # endif
+-# define machine_is_zeusevb() (machine_arch_type == MACH_TYPE_ZEUSEVB)
++# define machine_is_mxc91131evb() (machine_arch_type == MACH_TYPE_ZEUSEVB)
+ #else
+-# define machine_is_zeusevb() (0)
++# define machine_is_mxc91131evb() (0)
+ #endif
+
+ #ifdef CONFIG_MACH_P700
+@@ -9402,6 +9704,3643 @@
+ # define machine_is_mp2usb() (0)
+ #endif
+
++#ifdef CONFIG_MACH_NTNP425C
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NTNP425C
++# endif
++# define machine_is_ntnp425c() (machine_arch_type == MACH_TYPE_NTNP425C)
++#else
++# define machine_is_ntnp425c() (0)
++#endif
++
++#ifdef CONFIG_MACH_COLIBRI
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_COLIBRI
++# endif
++# define machine_is_colibri() (machine_arch_type == MACH_TYPE_COLIBRI)
++#else
++# define machine_is_colibri() (0)
++#endif
++
++#ifdef CONFIG_MACH_PCM7220
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PCM7220
++# endif
++# define machine_is_pcm7220() (machine_arch_type == MACH_TYPE_PCM7220)
++#else
++# define machine_is_pcm7220() (0)
++#endif
++
++#ifdef CONFIG_MACH_GATEWAY7001
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_GATEWAY7001
++# endif
++# define machine_is_gateway7001() (machine_arch_type == MACH_TYPE_GATEWAY7001)
++#else
++# define machine_is_gateway7001() (0)
++#endif
++
++#ifdef CONFIG_MACH_PCM027
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PCM027
++# endif
++# define machine_is_pcm027() (machine_arch_type == MACH_TYPE_PCM027)
++#else
++# define machine_is_pcm027() (0)
++#endif
++
++#ifdef CONFIG_MACH_CMPXA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CMPXA
++# endif
++# define machine_is_cmpxa() (machine_arch_type == MACH_TYPE_CMPXA)
++#else
++# define machine_is_cmpxa() (0)
++#endif
++
++#ifdef CONFIG_MACH_ANUBIS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ANUBIS
++# endif
++# define machine_is_anubis() (machine_arch_type == MACH_TYPE_ANUBIS)
++#else
++# define machine_is_anubis() (0)
++#endif
++
++#ifdef CONFIG_MACH_ITE8152
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ITE8152
++# endif
++# define machine_is_ite8152() (machine_arch_type == MACH_TYPE_ITE8152)
++#else
++# define machine_is_ite8152() (0)
++#endif
++
++#ifdef CONFIG_MACH_LPC3XXX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_LPC3XXX
++# endif
++# define machine_is_lpc3xxx() (machine_arch_type == MACH_TYPE_LPC3XXX)
++#else
++# define machine_is_lpc3xxx() (0)
++#endif
++
++#ifdef CONFIG_MACH_PUPPETEER
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PUPPETEER
++# endif
++# define machine_is_puppeteer() (machine_arch_type == MACH_TYPE_PUPPETEER)
++#else
++# define machine_is_puppeteer() (0)
++#endif
++
++#ifdef CONFIG_MACH_MACH_VADATECH
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MACH_VADATECH
++# endif
++# define machine_is_vt001() (machine_arch_type == MACH_TYPE_MACH_VADATECH)
++#else
++# define machine_is_vt001() (0)
++#endif
++
++#ifdef CONFIG_MACH_E570
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_E570
++# endif
++# define machine_is_e570() (machine_arch_type == MACH_TYPE_E570)
++#else
++# define machine_is_e570() (0)
++#endif
++
++#ifdef CONFIG_MACH_X50
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_X50
++# endif
++# define machine_is_x50() (machine_arch_type == MACH_TYPE_X50)
++#else
++# define machine_is_x50() (0)
++#endif
++
++#ifdef CONFIG_MACH_RECON
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_RECON
++# endif
++# define machine_is_recon() (machine_arch_type == MACH_TYPE_RECON)
++#else
++# define machine_is_recon() (0)
++#endif
++
++#ifdef CONFIG_MACH_XBOARDGP8
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XBOARDGP8
++# endif
++# define machine_is_xboardgp8() (machine_arch_type == MACH_TYPE_XBOARDGP8)
++#else
++# define machine_is_xboardgp8() (0)
++#endif
++
++#ifdef CONFIG_MACH_FPIC2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_FPIC2
++# endif
++# define machine_is_fpic2() (machine_arch_type == MACH_TYPE_FPIC2)
++#else
++# define machine_is_fpic2() (0)
++#endif
++
++#ifdef CONFIG_MACH_AKITA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AKITA
++# endif
++# define machine_is_akita() (machine_arch_type == MACH_TYPE_AKITA)
++#else
++# define machine_is_akita() (0)
++#endif
++
++#ifdef CONFIG_MACH_A81
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_A81
++# endif
++# define machine_is_a81() (machine_arch_type == MACH_TYPE_A81)
++#else
++# define machine_is_a81() (0)
++#endif
++
++#ifdef CONFIG_MACH_SVM_SC25X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SVM_SC25X
++# endif
++# define machine_is_svm_sc25x() (machine_arch_type == MACH_TYPE_SVM_SC25X)
++#else
++# define machine_is_svm_sc25x() (0)
++#endif
++
++#ifdef CONFIG_MACH_VADATECH020
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_VADATECH020
++# endif
++# define machine_is_vt020() (machine_arch_type == MACH_TYPE_VADATECH020)
++#else
++# define machine_is_vt020() (0)
++#endif
++
++#ifdef CONFIG_MACH_TLI
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TLI
++# endif
++# define machine_is_tli() (machine_arch_type == MACH_TYPE_TLI)
++#else
++# define machine_is_tli() (0)
++#endif
++
++#ifdef CONFIG_MACH_EDB9315LC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EDB9315LC
++# endif
++# define machine_is_edb9315lc() (machine_arch_type == MACH_TYPE_EDB9315LC)
++#else
++# define machine_is_edb9315lc() (0)
++#endif
++
++#ifdef CONFIG_MACH_PASSEC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PASSEC
++# endif
++# define machine_is_passec() (machine_arch_type == MACH_TYPE_PASSEC)
++#else
++# define machine_is_passec() (0)
++#endif
++
++#ifdef CONFIG_MACH_DS_TIGER
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DS_TIGER
++# endif
++# define machine_is_ds_tiger() (machine_arch_type == MACH_TYPE_DS_TIGER)
++#else
++# define machine_is_ds_tiger() (0)
++#endif
++
++#ifdef CONFIG_MACH_E310
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_E310
++# endif
++# define machine_is_e310() (machine_arch_type == MACH_TYPE_E310)
++#else
++# define machine_is_e310() (0)
++#endif
++
++#ifdef CONFIG_MACH_E330
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_E330
++# endif
++# define machine_is_e330() (machine_arch_type == MACH_TYPE_E330)
++#else
++# define machine_is_e330() (0)
++#endif
++
++#ifdef CONFIG_MACH_RT3000
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_RT3000
++# endif
++# define machine_is_rt3000() (machine_arch_type == MACH_TYPE_RT3000)
++#else
++# define machine_is_rt3000() (0)
++#endif
++
++#ifdef CONFIG_MACH_NOKIA770
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NOKIA770
++# endif
++# define machine_is_nokia770() (machine_arch_type == MACH_TYPE_NOKIA770)
++#else
++# define machine_is_nokia770() (0)
++#endif
++
++#ifdef CONFIG_MACH_PNX0106
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PNX0106
++# endif
++# define machine_is_pnx0106() (machine_arch_type == MACH_TYPE_PNX0106)
++#else
++# define machine_is_pnx0106() (0)
++#endif
++
++#ifdef CONFIG_MACH_HX21XX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HX21XX
++# endif
++# define machine_is_hx21xx() (machine_arch_type == MACH_TYPE_HX21XX)
++#else
++# define machine_is_hx21xx() (0)
++#endif
++
++#ifdef CONFIG_MACH_FARADAY
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_FARADAY
++# endif
++# define machine_is_faraday() (machine_arch_type == MACH_TYPE_FARADAY)
++#else
++# define machine_is_faraday() (0)
++#endif
++
++#ifdef CONFIG_MACH_SBC9312
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SBC9312
++# endif
++# define machine_is_sbc9312() (machine_arch_type == MACH_TYPE_SBC9312)
++#else
++# define machine_is_sbc9312() (0)
++#endif
++
++#ifdef CONFIG_MACH_BATMAN
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BATMAN
++# endif
++# define machine_is_batman() (machine_arch_type == MACH_TYPE_BATMAN)
++#else
++# define machine_is_batman() (0)
++#endif
++
++#ifdef CONFIG_MACH_JPD201
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_JPD201
++# endif
++# define machine_is_jpd201() (machine_arch_type == MACH_TYPE_JPD201)
++#else
++# define machine_is_jpd201() (0)
++#endif
++
++#ifdef CONFIG_MACH_MIPSA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MIPSA
++# endif
++# define machine_is_mipsa() (machine_arch_type == MACH_TYPE_MIPSA)
++#else
++# define machine_is_mipsa() (0)
++#endif
++
++#ifdef CONFIG_MACH_KACOM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_KACOM
++# endif
++# define machine_is_kacom() (machine_arch_type == MACH_TYPE_KACOM)
++#else
++# define machine_is_kacom() (0)
++#endif
++
++#ifdef CONFIG_MACH_SWARCOCPU
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SWARCOCPU
++# endif
++# define machine_is_swarcocpu() (machine_arch_type == MACH_TYPE_SWARCOCPU)
++#else
++# define machine_is_swarcocpu() (0)
++#endif
++
++#ifdef CONFIG_MACH_SWARCODSL
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SWARCODSL
++# endif
++# define machine_is_swarcodsl() (machine_arch_type == MACH_TYPE_SWARCODSL)
++#else
++# define machine_is_swarcodsl() (0)
++#endif
++
++#ifdef CONFIG_MACH_BLUEANGEL
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BLUEANGEL
++# endif
++# define machine_is_blueangel() (machine_arch_type == MACH_TYPE_BLUEANGEL)
++#else
++# define machine_is_blueangel() (0)
++#endif
++
++#ifdef CONFIG_MACH_HAIRYGRAMA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HAIRYGRAMA
++# endif
++# define machine_is_hairygrama() (machine_arch_type == MACH_TYPE_HAIRYGRAMA)
++#else
++# define machine_is_hairygrama() (0)
++#endif
++
++#ifdef CONFIG_MACH_BANFF
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BANFF
++# endif
++# define machine_is_banff() (machine_arch_type == MACH_TYPE_BANFF)
++#else
++# define machine_is_banff() (0)
++#endif
++
++#ifdef CONFIG_MACH_CARMEVA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CARMEVA
++# endif
++# define machine_is_carmeva() (machine_arch_type == MACH_TYPE_CARMEVA)
++#else
++# define machine_is_carmeva() (0)
++#endif
++
++#ifdef CONFIG_MACH_SAM255
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SAM255
++# endif
++# define machine_is_sam255() (machine_arch_type == MACH_TYPE_SAM255)
++#else
++# define machine_is_sam255() (0)
++#endif
++
++#ifdef CONFIG_MACH_PPM10
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PPM10
++# endif
++# define machine_is_ppm10() (machine_arch_type == MACH_TYPE_PPM10)
++#else
++# define machine_is_ppm10() (0)
++#endif
++
++#ifdef CONFIG_MACH_EDB9315A
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EDB9315A
++# endif
++# define machine_is_edb9315a() (machine_arch_type == MACH_TYPE_EDB9315A)
++#else
++# define machine_is_edb9315a() (0)
++#endif
++
++#ifdef CONFIG_MACH_SUNSET
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SUNSET
++# endif
++# define machine_is_sunset() (machine_arch_type == MACH_TYPE_SUNSET)
++#else
++# define machine_is_sunset() (0)
++#endif
++
++#ifdef CONFIG_MACH_STARGATE2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_STARGATE2
++# endif
++# define machine_is_stargate2() (machine_arch_type == MACH_TYPE_STARGATE2)
++#else
++# define machine_is_stargate2() (0)
++#endif
++
++#ifdef CONFIG_MACH_INTELMOTE2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_INTELMOTE2
++# endif
++# define machine_is_intelmote2() (machine_arch_type == MACH_TYPE_INTELMOTE2)
++#else
++# define machine_is_intelmote2() (0)
++#endif
++
++#ifdef CONFIG_MACH_TRIZEPS4
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TRIZEPS4
++# endif
++# define machine_is_trizeps4() (machine_arch_type == MACH_TYPE_TRIZEPS4)
++#else
++# define machine_is_trizeps4() (0)
++#endif
++
++#ifdef CONFIG_MACH_MAINSTONE2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MAINSTONE2
++# endif
++# define machine_is_mainstone2() (machine_arch_type == MACH_TYPE_MAINSTONE2)
++#else
++# define machine_is_mainstone2() (0)
++#endif
++
++#ifdef CONFIG_MACH_EZ_IXP42X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EZ_IXP42X
++# endif
++# define machine_is_ez_ixp42x() (machine_arch_type == MACH_TYPE_EZ_IXP42X)
++#else
++# define machine_is_ez_ixp42x() (0)
++#endif
++
++#ifdef CONFIG_MACH_TAPWAVE_ZODIAC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TAPWAVE_ZODIAC
++# endif
++# define machine_is_tapwave_zodiac() (machine_arch_type == MACH_TYPE_TAPWAVE_ZODIAC)
++#else
++# define machine_is_tapwave_zodiac() (0)
++#endif
++
++#ifdef CONFIG_MACH_UNIVERSALMETER
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_UNIVERSALMETER
++# endif
++# define machine_is_universalmeter() (machine_arch_type == MACH_TYPE_UNIVERSALMETER)
++#else
++# define machine_is_universalmeter() (0)
++#endif
++
++#ifdef CONFIG_MACH_HICOARM9
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HICOARM9
++# endif
++# define machine_is_hicoarm9() (machine_arch_type == MACH_TYPE_HICOARM9)
++#else
++# define machine_is_hicoarm9() (0)
++#endif
++
++#ifdef CONFIG_MACH_PNX4008
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PNX4008
++# endif
++# define machine_is_pnx4008() (machine_arch_type == MACH_TYPE_PNX4008)
++#else
++# define machine_is_pnx4008() (0)
++#endif
++
++#ifdef CONFIG_MACH_KWS6000
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_KWS6000
++# endif
++# define machine_is_kws6000() (machine_arch_type == MACH_TYPE_KWS6000)
++#else
++# define machine_is_kws6000() (0)
++#endif
++
++#ifdef CONFIG_MACH_PORTUX920T
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PORTUX920T
++# endif
++# define machine_is_portux920t() (machine_arch_type == MACH_TYPE_PORTUX920T)
++#else
++# define machine_is_portux920t() (0)
++#endif
++
++#ifdef CONFIG_MACH_EZ_X5
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EZ_X5
++# endif
++# define machine_is_ez_x5() (machine_arch_type == MACH_TYPE_EZ_X5)
++#else
++# define machine_is_ez_x5() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_RUDOLPH
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_RUDOLPH
++# endif
++# define machine_is_omap_rudolph() (machine_arch_type == MACH_TYPE_OMAP_RUDOLPH)
++#else
++# define machine_is_omap_rudolph() (0)
++#endif
++
++#ifdef CONFIG_MACH_CPUAT91
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CPUAT91
++# endif
++# define machine_is_cpuat91() (machine_arch_type == MACH_TYPE_CPUAT91)
++#else
++# define machine_is_cpuat91() (0)
++#endif
++
++#ifdef CONFIG_MACH_REA9200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_REA9200
++# endif
++# define machine_is_rea9200() (machine_arch_type == MACH_TYPE_REA9200)
++#else
++# define machine_is_rea9200() (0)
++#endif
++
++#ifdef CONFIG_MACH_ACTS_PUNE_SA1110
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ACTS_PUNE_SA1110
++# endif
++# define machine_is_acts_pune_sa1110() (machine_arch_type == MACH_TYPE_ACTS_PUNE_SA1110)
++#else
++# define machine_is_acts_pune_sa1110() (0)
++#endif
++
++#ifdef CONFIG_MACH_IXP425
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IXP425
++# endif
++# define machine_is_ixp425() (machine_arch_type == MACH_TYPE_IXP425)
++#else
++# define machine_is_ixp425() (0)
++#endif
++
++#ifdef CONFIG_MACH_ARGONPLUSODYSSEY
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ARGONPLUSODYSSEY
++# endif
++# define machine_is_i30030ads() (machine_arch_type == MACH_TYPE_ARGONPLUSODYSSEY)
++#else
++# define machine_is_i30030ads() (0)
++#endif
++
++#ifdef CONFIG_MACH_PERCH
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PERCH
++# endif
++# define machine_is_perch() (machine_arch_type == MACH_TYPE_PERCH)
++#else
++# define machine_is_perch() (0)
++#endif
++
++#ifdef CONFIG_MACH_EIS05R1
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EIS05R1
++# endif
++# define machine_is_eis05r1() (machine_arch_type == MACH_TYPE_EIS05R1)
++#else
++# define machine_is_eis05r1() (0)
++#endif
++
++#ifdef CONFIG_MACH_PEPPERPAD
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PEPPERPAD
++# endif
++# define machine_is_pepperpad() (machine_arch_type == MACH_TYPE_PEPPERPAD)
++#else
++# define machine_is_pepperpad() (0)
++#endif
++
++#ifdef CONFIG_MACH_SB3010
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SB3010
++# endif
++# define machine_is_sb3010() (machine_arch_type == MACH_TYPE_SB3010)
++#else
++# define machine_is_sb3010() (0)
++#endif
++
++#ifdef CONFIG_MACH_RM9200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_RM9200
++# endif
++# define machine_is_rm9200() (machine_arch_type == MACH_TYPE_RM9200)
++#else
++# define machine_is_rm9200() (0)
++#endif
++
++#ifdef CONFIG_MACH_DMA03
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DMA03
++# endif
++# define machine_is_dma03() (machine_arch_type == MACH_TYPE_DMA03)
++#else
++# define machine_is_dma03() (0)
++#endif
++
++#ifdef CONFIG_MACH_ROAD_S101
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ROAD_S101
++# endif
++# define machine_is_road_s101() (machine_arch_type == MACH_TYPE_ROAD_S101)
++#else
++# define machine_is_road_s101() (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_A
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_A
++# endif
++# define machine_is_iq_nextgen_a() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_A)
++#else
++# define machine_is_iq_nextgen_a() (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_B
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_B
++# endif
++# define machine_is_iq_nextgen_b() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_B)
++#else
++# define machine_is_iq_nextgen_b() (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_C
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_C
++# endif
++# define machine_is_iq_nextgen_c() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_C)
++#else
++# define machine_is_iq_nextgen_c() (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_D
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_D
++# endif
++# define machine_is_iq_nextgen_d() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_D)
++#else
++# define machine_is_iq_nextgen_d() (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_E
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_E
++# endif
++# define machine_is_iq_nextgen_e() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_E)
++#else
++# define machine_is_iq_nextgen_e() (0)
++#endif
++
++#ifdef CONFIG_MACH_MALLOW_AT91
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MALLOW_AT91
++# endif
++# define machine_is_mallow_at91() (machine_arch_type == MACH_TYPE_MALLOW_AT91)
++#else
++# define machine_is_mallow_at91() (0)
++#endif
++
++#ifdef CONFIG_MACH_CYBERTRACKER_I
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CYBERTRACKER_I
++# endif
++# define machine_is_cybertracker_i() (machine_arch_type == MACH_TYPE_CYBERTRACKER_I)
++#else
++# define machine_is_cybertracker_i() (0)
++#endif
++
++#ifdef CONFIG_MACH_GESBC931X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_GESBC931X
++# endif
++# define machine_is_gesbc931x() (machine_arch_type == MACH_TYPE_GESBC931X)
++#else
++# define machine_is_gesbc931x() (0)
++#endif
++
++#ifdef CONFIG_MACH_CENTIPAD
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CENTIPAD
++# endif
++# define machine_is_centipad() (machine_arch_type == MACH_TYPE_CENTIPAD)
++#else
++# define machine_is_centipad() (0)
++#endif
++
++#ifdef CONFIG_MACH_ARMSOC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ARMSOC
++# endif
++# define machine_is_armsoc() (machine_arch_type == MACH_TYPE_ARMSOC)
++#else
++# define machine_is_armsoc() (0)
++#endif
++
++#ifdef CONFIG_MACH_SE4200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SE4200
++# endif
++# define machine_is_se4200() (machine_arch_type == MACH_TYPE_SE4200)
++#else
++# define machine_is_se4200() (0)
++#endif
++
++#ifdef CONFIG_MACH_EMS197A
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EMS197A
++# endif
++# define machine_is_ems197a() (machine_arch_type == MACH_TYPE_EMS197A)
++#else
++# define machine_is_ems197a() (0)
++#endif
++
++#ifdef CONFIG_MACH_MICRO9
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MICRO9
++# endif
++# define machine_is_micro9() (machine_arch_type == MACH_TYPE_MICRO9)
++#else
++# define machine_is_micro9() (0)
++#endif
++
++#ifdef CONFIG_MACH_MICRO9L
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MICRO9L
++# endif
++# define machine_is_micro9l() (machine_arch_type == MACH_TYPE_MICRO9L)
++#else
++# define machine_is_micro9l() (0)
++#endif
++
++#ifdef CONFIG_MACH_UC5471DSP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_UC5471DSP
++# endif
++# define machine_is_uc5471dsp() (machine_arch_type == MACH_TYPE_UC5471DSP)
++#else
++# define machine_is_uc5471dsp() (0)
++#endif
++
++#ifdef CONFIG_MACH_SJ5471ENG
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SJ5471ENG
++# endif
++# define machine_is_sj5471eng() (machine_arch_type == MACH_TYPE_SJ5471ENG)
++#else
++# define machine_is_sj5471eng() (0)
++#endif
++
++#ifdef CONFIG_MACH_CMPXA26X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CMPXA26X
++# endif
++# define machine_is_none() (machine_arch_type == MACH_TYPE_CMPXA26X)
++#else
++# define machine_is_none() (0)
++#endif
++
++#ifdef CONFIG_MACH_NC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NC
++# endif
++# define machine_is_nc1() (machine_arch_type == MACH_TYPE_NC)
++#else
++# define machine_is_nc1() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_PALMTE
++# endif
++# define machine_is_omap_palmte() (machine_arch_type == MACH_TYPE_OMAP_PALMTE)
++#else
++# define machine_is_omap_palmte() (0)
++#endif
++
++#ifdef CONFIG_MACH_AJAX52X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AJAX52X
++# endif
++# define machine_is_ajax52x() (machine_arch_type == MACH_TYPE_AJAX52X)
++#else
++# define machine_is_ajax52x() (0)
++#endif
++
++#ifdef CONFIG_MACH_SIRIUSTAR
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SIRIUSTAR
++# endif
++# define machine_is_siriustar() (machine_arch_type == MACH_TYPE_SIRIUSTAR)
++#else
++# define machine_is_siriustar() (0)
++#endif
++
++#ifdef CONFIG_MACH_IODATA_HDLG
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IODATA_HDLG
++# endif
++# define machine_is_iodata_hdlg() (machine_arch_type == MACH_TYPE_IODATA_HDLG)
++#else
++# define machine_is_iodata_hdlg() (0)
++#endif
++
++#ifdef CONFIG_MACH_AT91RM9200UTL
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AT91RM9200UTL
++# endif
++# define machine_is_at91rm9200utl() (machine_arch_type == MACH_TYPE_AT91RM9200UTL)
++#else
++# define machine_is_at91rm9200utl() (0)
++#endif
++
++#ifdef CONFIG_MACH_BIOSAFE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BIOSAFE
++# endif
++# define machine_is_biosafe() (machine_arch_type == MACH_TYPE_BIOSAFE)
++#else
++# define machine_is_biosafe() (0)
++#endif
++
++#ifdef CONFIG_MACH_MP1000
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MP1000
++# endif
++# define machine_is_mp1000() (machine_arch_type == MACH_TYPE_MP1000)
++#else
++# define machine_is_mp1000() (0)
++#endif
++
++#ifdef CONFIG_MACH_PARSY
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PARSY
++# endif
++# define machine_is_parsy() (machine_arch_type == MACH_TYPE_PARSY)
++#else
++# define machine_is_parsy() (0)
++#endif
++
++#ifdef CONFIG_MACH_CCXP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CCXP
++# endif
++# define machine_is_ccxp270() (machine_arch_type == MACH_TYPE_CCXP)
++#else
++# define machine_is_ccxp270() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_GSAMPLE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_GSAMPLE
++# endif
++# define machine_is_omap_gsample() (machine_arch_type == MACH_TYPE_OMAP_GSAMPLE)
++#else
++# define machine_is_omap_gsample() (0)
++#endif
++
++#ifdef CONFIG_MACH_REALVIEW_EB
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_REALVIEW_EB
++# endif
++# define machine_is_realview_eb() (machine_arch_type == MACH_TYPE_REALVIEW_EB)
++#else
++# define machine_is_realview_eb() (0)
++#endif
++
++#ifdef CONFIG_MACH_SAMOA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SAMOA
++# endif
++# define machine_is_samoa() (machine_arch_type == MACH_TYPE_SAMOA)
++#else
++# define machine_is_samoa() (0)
++#endif
++
++#ifdef CONFIG_MACH_T3XSCALE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_T3XSCALE
++# endif
++# define machine_is_t3xscale() (machine_arch_type == MACH_TYPE_T3XSCALE)
++#else
++# define machine_is_t3xscale() (0)
++#endif
++
++#ifdef CONFIG_MACH_I878
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_I878
++# endif
++# define machine_is_i878() (machine_arch_type == MACH_TYPE_I878)
++#else
++# define machine_is_i878() (0)
++#endif
++
++#ifdef CONFIG_MACH_BORZOI
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BORZOI
++# endif
++# define machine_is_borzoi() (machine_arch_type == MACH_TYPE_BORZOI)
++#else
++# define machine_is_borzoi() (0)
++#endif
++
++#ifdef CONFIG_MACH_GECKO
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_GECKO
++# endif
++# define machine_is_gecko() (machine_arch_type == MACH_TYPE_GECKO)
++#else
++# define machine_is_gecko() (0)
++#endif
++
++#ifdef CONFIG_MACH_DS101
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DS101
++# endif
++# define machine_is_ds101() (machine_arch_type == MACH_TYPE_DS101)
++#else
++# define machine_is_ds101() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTT2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_PALMTT2
++# endif
++# define machine_is_omap_palmtt2() (machine_arch_type == MACH_TYPE_OMAP_PALMTT2)
++#else
++# define machine_is_omap_palmtt2() (0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMLD
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XSCALE_PALMLD
++# endif
++# define machine_is_xscale_palmld() (machine_arch_type == MACH_TYPE_XSCALE_PALMLD)
++#else
++# define machine_is_xscale_palmld() (0)
++#endif
++
++#ifdef CONFIG_MACH_CC9C
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CC9C
++# endif
++# define machine_is_cc9c() (machine_arch_type == MACH_TYPE_CC9C)
++#else
++# define machine_is_cc9c() (0)
++#endif
++
++#ifdef CONFIG_MACH_SBC1670
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SBC1670
++# endif
++# define machine_is_sbc1670() (machine_arch_type == MACH_TYPE_SBC1670)
++#else
++# define machine_is_sbc1670() (0)
++#endif
++
++#ifdef CONFIG_MACH_IXDP28X5
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IXDP28X5
++# endif
++# define machine_is_ixdp28x5() (machine_arch_type == MACH_TYPE_IXDP28X5)
++#else
++# define machine_is_ixdp28x5() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTT
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_PALMTT
++# endif
++# define machine_is_omap_palmtt() (machine_arch_type == MACH_TYPE_OMAP_PALMTT)
++#else
++# define machine_is_omap_palmtt() (0)
++#endif
++
++#ifdef CONFIG_MACH_ML696K
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ML696K
++# endif
++# define machine_is_ml696k() (machine_arch_type == MACH_TYPE_ML696K)
++#else
++# define machine_is_ml696k() (0)
++#endif
++
++#ifdef CONFIG_MACH_ARCOM_ZEUS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ARCOM_ZEUS
++# endif
++# define machine_is_arcom_zeus() (machine_arch_type == MACH_TYPE_ARCOM_ZEUS)
++#else
++# define machine_is_arcom_zeus() (0)
++#endif
++
++#ifdef CONFIG_MACH_OSIRIS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OSIRIS
++# endif
++# define machine_is_osiris() (machine_arch_type == MACH_TYPE_OSIRIS)
++#else
++# define machine_is_osiris() (0)
++#endif
++
++#ifdef CONFIG_MACH_MAESTRO
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MAESTRO
++# endif
++# define machine_is_maestro() (machine_arch_type == MACH_TYPE_MAESTRO)
++#else
++# define machine_is_maestro() (0)
++#endif
++
++#ifdef CONFIG_MACH_TUNGE2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TUNGE2
++# endif
++# define machine_is_tunge2() (machine_arch_type == MACH_TYPE_TUNGE2)
++#else
++# define machine_is_tunge2() (0)
++#endif
++
++#ifdef CONFIG_MACH_IXBBM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IXBBM
++# endif
++# define machine_is_ixbbm() (machine_arch_type == MACH_TYPE_IXBBM)
++#else
++# define machine_is_ixbbm() (0)
++#endif
++
++#ifdef CONFIG_MACH_MX27
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MX27
++# endif
++# define machine_is_mx27ads() (machine_arch_type == MACH_TYPE_MX27)
++#else
++# define machine_is_mx27ads() (0)
++#endif
++
++#ifdef CONFIG_MACH_AX8004
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AX8004
++# endif
++# define machine_is_ax8004() (machine_arch_type == MACH_TYPE_AX8004)
++#else
++# define machine_is_ax8004() (0)
++#endif
++
++#ifdef CONFIG_MACH_AT91SAM9261EK
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AT91SAM9261EK
++# endif
++# define machine_is_at91sam9261ek() (machine_arch_type == MACH_TYPE_AT91SAM9261EK)
++#else
++# define machine_is_at91sam9261ek() (0)
++#endif
++
++#ifdef CONFIG_MACH_LOFT
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_LOFT
++# endif
++# define machine_is_loft() (machine_arch_type == MACH_TYPE_LOFT)
++#else
++# define machine_is_loft() (0)
++#endif
++
++#ifdef CONFIG_MACH_MAGPIE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MAGPIE
++# endif
++# define machine_is_magpie() (machine_arch_type == MACH_TYPE_MAGPIE)
++#else
++# define machine_is_magpie() (0)
++#endif
++
++#ifdef CONFIG_MACH_MX21
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MX21
++# endif
++# define machine_is_mx21ads() (machine_arch_type == MACH_TYPE_MX21)
++#else
++# define machine_is_mx21ads() (0)
++#endif
++
++#ifdef CONFIG_MACH_MB87M3400
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MB87M3400
++# endif
++# define machine_is_mb87m3400() (machine_arch_type == MACH_TYPE_MB87M3400)
++#else
++# define machine_is_mb87m3400() (0)
++#endif
++
++#ifdef CONFIG_MACH_MGUARD_DELTA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MGUARD_DELTA
++# endif
++# define machine_is_mguard_delta() (machine_arch_type == MACH_TYPE_MGUARD_DELTA)
++#else
++# define machine_is_mguard_delta() (0)
++#endif
++
++#ifdef CONFIG_MACH_DAVINCI_DVDP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DAVINCI_DVDP
++# endif
++# define machine_is_davinci_dvdp() (machine_arch_type == MACH_TYPE_DAVINCI_DVDP)
++#else
++# define machine_is_davinci_dvdp() (0)
++#endif
++
++#ifdef CONFIG_MACH_HTCUNIVERSAL
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HTCUNIVERSAL
++# endif
++# define machine_is_htcuniversal() (machine_arch_type == MACH_TYPE_HTCUNIVERSAL)
++#else
++# define machine_is_htcuniversal() (0)
++#endif
++
++#ifdef CONFIG_MACH_TPAD
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TPAD
++# endif
++# define machine_is_tpad() (machine_arch_type == MACH_TYPE_TPAD)
++#else
++# define machine_is_tpad() (0)
++#endif
++
++#ifdef CONFIG_MACH_ROVERP3
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ROVERP3
++# endif
++# define machine_is_roverp3() (machine_arch_type == MACH_TYPE_ROVERP3)
++#else
++# define machine_is_roverp3() (0)
++#endif
++
++#ifdef CONFIG_MACH_JORNADA928
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_JORNADA928
++# endif
++# define machine_is_jornada928() (machine_arch_type == MACH_TYPE_JORNADA928)
++#else
++# define machine_is_jornada928() (0)
++#endif
++
++#ifdef CONFIG_MACH_MV88FXX81
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MV88FXX81
++# endif
++# define machine_is_mv88fxx81() (machine_arch_type == MACH_TYPE_MV88FXX81)
++#else
++# define machine_is_mv88fxx81() (0)
++#endif
++
++#ifdef CONFIG_MACH_STMP36XX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_STMP36XX
++# endif
++# define machine_is_stmp36xx() (machine_arch_type == MACH_TYPE_STMP36XX)
++#else
++# define machine_is_stmp36xx() (0)
++#endif
++
++#ifdef CONFIG_MACH_SXNI79524
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SXNI79524
++# endif
++# define machine_is_sxni79524() (machine_arch_type == MACH_TYPE_SXNI79524)
++#else
++# define machine_is_sxni79524() (0)
++#endif
++
++#ifdef CONFIG_MACH_AMS_DELTA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AMS_DELTA
++# endif
++# define machine_is_ams_delta() (machine_arch_type == MACH_TYPE_AMS_DELTA)
++#else
++# define machine_is_ams_delta() (0)
++#endif
++
++#ifdef CONFIG_MACH_URANIUM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_URANIUM
++# endif
++# define machine_is_uranium() (machine_arch_type == MACH_TYPE_URANIUM)
++#else
++# define machine_is_uranium() (0)
++#endif
++
++#ifdef CONFIG_MACH_UCON
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_UCON
++# endif
++# define machine_is_ucon() (machine_arch_type == MACH_TYPE_UCON)
++#else
++# define machine_is_ucon() (0)
++#endif
++
++#ifdef CONFIG_MACH_NAS100D
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NAS100D
++# endif
++# define machine_is_nas100d() (machine_arch_type == MACH_TYPE_NAS100D)
++#else
++# define machine_is_nas100d() (0)
++#endif
++
++#ifdef CONFIG_MACH_L083_1000
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_L083_1000
++# endif
++# define machine_is_l083() (machine_arch_type == MACH_TYPE_L083_1000)
++#else
++# define machine_is_l083() (0)
++#endif
++
++#ifdef CONFIG_MACH_EZX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EZX
++# endif
++# define machine_is_ezx() (machine_arch_type == MACH_TYPE_EZX)
++#else
++# define machine_is_ezx() (0)
++#endif
++
++#ifdef CONFIG_MACH_PNX5220
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PNX5220
++# endif
++# define machine_is_pnx5220() (machine_arch_type == MACH_TYPE_PNX5220)
++#else
++# define machine_is_pnx5220() (0)
++#endif
++
++#ifdef CONFIG_MACH_BUTTE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BUTTE
++# endif
++# define machine_is_butte() (machine_arch_type == MACH_TYPE_BUTTE)
++#else
++# define machine_is_butte() (0)
++#endif
++
++#ifdef CONFIG_MACH_SRM2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SRM2
++# endif
++# define machine_is_srm2() (machine_arch_type == MACH_TYPE_SRM2)
++#else
++# define machine_is_srm2() (0)
++#endif
++
++#ifdef CONFIG_MACH_DSBR
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DSBR
++# endif
++# define machine_is_dsbr() (machine_arch_type == MACH_TYPE_DSBR)
++#else
++# define machine_is_dsbr() (0)
++#endif
++
++#ifdef CONFIG_MACH_CRYSTALBALL
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CRYSTALBALL
++# endif
++# define machine_is_crystalball() (machine_arch_type == MACH_TYPE_CRYSTALBALL)
++#else
++# define machine_is_crystalball() (0)
++#endif
++
++#ifdef CONFIG_MACH_TINYPXA27X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TINYPXA27X
++# endif
++# define machine_is_tinypxa27x() (machine_arch_type == MACH_TYPE_TINYPXA27X)
++#else
++# define machine_is_tinypxa27x() (0)
++#endif
++
++#ifdef CONFIG_MACH_HERBIE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HERBIE
++# endif
++# define machine_is_herbie() (machine_arch_type == MACH_TYPE_HERBIE)
++#else
++# define machine_is_herbie() (0)
++#endif
++
++#ifdef CONFIG_MACH_MAGICIAN
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MAGICIAN
++# endif
++# define machine_is_magician() (machine_arch_type == MACH_TYPE_MAGICIAN)
++#else
++# define machine_is_magician() (0)
++#endif
++
++#ifdef CONFIG_MACH_CM4002
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CM4002
++# endif
++# define machine_is_cm4002() (machine_arch_type == MACH_TYPE_CM4002)
++#else
++# define machine_is_cm4002() (0)
++#endif
++
++#ifdef CONFIG_MACH_B4
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_B4
++# endif
++# define machine_is_b4() (machine_arch_type == MACH_TYPE_B4)
++#else
++# define machine_is_b4() (0)
++#endif
++
++#ifdef CONFIG_MACH_MAUI
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MAUI
++# endif
++# define machine_is_maui() (machine_arch_type == MACH_TYPE_MAUI)
++#else
++# define machine_is_maui() (0)
++#endif
++
++#ifdef CONFIG_MACH_CYBERTRACKER_G
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CYBERTRACKER_G
++# endif
++# define machine_is_cybertracker_g() (machine_arch_type == MACH_TYPE_CYBERTRACKER_G)
++#else
++# define machine_is_cybertracker_g() (0)
++#endif
++
++#ifdef CONFIG_MACH_NXDKN
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NXDKN
++# endif
++# define machine_is_nxdkn() (machine_arch_type == MACH_TYPE_NXDKN)
++#else
++# define machine_is_nxdkn() (0)
++#endif
++
++#ifdef CONFIG_MACH_MIO8390
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MIO8390
++# endif
++# define machine_is_mio8390() (machine_arch_type == MACH_TYPE_MIO8390)
++#else
++# define machine_is_mio8390() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMI_BOARD
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMI_BOARD
++# endif
++# define machine_is_omi_board() (machine_arch_type == MACH_TYPE_OMI_BOARD)
++#else
++# define machine_is_omi_board() (0)
++#endif
++
++#ifdef CONFIG_MACH_MX21CIV
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MX21CIV
++# endif
++# define machine_is_mx21civ() (machine_arch_type == MACH_TYPE_MX21CIV)
++#else
++# define machine_is_mx21civ() (0)
++#endif
++
++#ifdef CONFIG_MACH_MAHI_CDAC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MAHI_CDAC
++# endif
++# define machine_is_mahi_cdac() (machine_arch_type == MACH_TYPE_MAHI_CDAC)
++#else
++# define machine_is_mahi_cdac() (0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMTX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XSCALE_PALMTX
++# endif
++# define machine_is_xscale_palmtx() (machine_arch_type == MACH_TYPE_XSCALE_PALMTX)
++#else
++# define machine_is_xscale_palmtx() (0)
++#endif
++
++#ifdef CONFIG_MACH_S3C2413
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_S3C2413
++# endif
++# define machine_is_s3c2413() (machine_arch_type == MACH_TYPE_S3C2413)
++#else
++# define machine_is_s3c2413() (0)
++#endif
++
++#ifdef CONFIG_MACH_SAMSYS_EP0
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SAMSYS_EP0
++# endif
++# define machine_is_samsys_ep0() (machine_arch_type == MACH_TYPE_SAMSYS_EP0)
++#else
++# define machine_is_samsys_ep0() (0)
++#endif
++
++#ifdef CONFIG_MACH_WG302V1
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_WG302V1
++# endif
++# define machine_is_wg302v1() (machine_arch_type == MACH_TYPE_WG302V1)
++#else
++# define machine_is_wg302v1() (0)
++#endif
++
++#ifdef CONFIG_MACH_WG302V2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_WG302V2
++# endif
++# define machine_is_wg302v2() (machine_arch_type == MACH_TYPE_WG302V2)
++#else
++# define machine_is_wg302v2() (0)
++#endif
++
++#ifdef CONFIG_MACH_EB42X
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EB42X
++# endif
++# define machine_is_eb42x() (machine_arch_type == MACH_TYPE_EB42X)
++#else
++# define machine_is_eb42x() (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ331ES
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IQ331ES
++# endif
++# define machine_is_iq331es() (machine_arch_type == MACH_TYPE_IQ331ES)
++#else
++# define machine_is_iq331es() (0)
++#endif
++
++#ifdef CONFIG_MACH_COSYDSP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_COSYDSP
++# endif
++# define machine_is_cosydsp() (machine_arch_type == MACH_TYPE_COSYDSP)
++#else
++# define machine_is_cosydsp() (0)
++#endif
++
++#ifdef CONFIG_MACH_UPLAT7D
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_UPLAT7D
++# endif
++# define machine_is_uplat7d_proto() (machine_arch_type == MACH_TYPE_UPLAT7D)
++#else
++# define machine_is_uplat7d_proto() (0)
++#endif
++
++#ifdef CONFIG_MACH_PTDAVINCI
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PTDAVINCI
++# endif
++# define machine_is_ptdavinci() (machine_arch_type == MACH_TYPE_PTDAVINCI)
++#else
++# define machine_is_ptdavinci() (0)
++#endif
++
++#ifdef CONFIG_MACH_MBUS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MBUS
++# endif
++# define machine_is_mbus() (machine_arch_type == MACH_TYPE_MBUS)
++#else
++# define machine_is_mbus() (0)
++#endif
++
++#ifdef CONFIG_MACH_NADIA2VB
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NADIA2VB
++# endif
++# define machine_is_nadia2vb() (machine_arch_type == MACH_TYPE_NADIA2VB)
++#else
++# define machine_is_nadia2vb() (0)
++#endif
++
++#ifdef CONFIG_MACH_R1000
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_R1000
++# endif
++# define machine_is_r1000() (machine_arch_type == MACH_TYPE_R1000)
++#else
++# define machine_is_r1000() (0)
++#endif
++
++#ifdef CONFIG_MACH_HW90250
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HW90250
++# endif
++# define machine_is_hw90250() (machine_arch_type == MACH_TYPE_HW90250)
++#else
++# define machine_is_hw90250() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_2430SDP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_2430SDP
++# endif
++# define machine_is_omap_2430sdp() (machine_arch_type == MACH_TYPE_OMAP_2430SDP)
++#else
++# define machine_is_omap_2430sdp() (0)
++#endif
++
++#ifdef CONFIG_MACH_DAVINCI_EVM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DAVINCI_EVM
++# endif
++# define machine_is_davinci_evm() (machine_arch_type == MACH_TYPE_DAVINCI_EVM)
++#else
++# define machine_is_davinci_evm() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_TORNADO
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_TORNADO
++# endif
++# define machine_is_omap_tornado() (machine_arch_type == MACH_TYPE_OMAP_TORNADO)
++#else
++# define machine_is_omap_tornado() (0)
++#endif
++
++#ifdef CONFIG_MACH_OLOCREEK
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OLOCREEK
++# endif
++# define machine_is_olocreek() (machine_arch_type == MACH_TYPE_OLOCREEK)
++#else
++# define machine_is_olocreek() (0)
++#endif
++
++#ifdef CONFIG_MACH_PALMZ72
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PALMZ72
++# endif
++# define machine_is_palmz72() (machine_arch_type == MACH_TYPE_PALMZ72)
++#else
++# define machine_is_palmz72() (0)
++#endif
++
++#ifdef CONFIG_MACH_NXDB500
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NXDB500
++# endif
++# define machine_is_nxdb500() (machine_arch_type == MACH_TYPE_NXDB500)
++#else
++# define machine_is_nxdb500() (0)
++#endif
++
++#ifdef CONFIG_MACH_APF9328
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_APF9328
++# endif
++# define machine_is_apf9328() (machine_arch_type == MACH_TYPE_APF9328)
++#else
++# define machine_is_apf9328() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_WIPOQ
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_WIPOQ
++# endif
++# define machine_is_omap_wipoq() (machine_arch_type == MACH_TYPE_OMAP_WIPOQ)
++#else
++# define machine_is_omap_wipoq() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_TWIP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_TWIP
++# endif
++# define machine_is_omap_twip() (machine_arch_type == MACH_TYPE_OMAP_TWIP)
++#else
++# define machine_is_omap_twip() (0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMTREO650
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XSCALE_PALMTREO650
++# endif
++# define machine_is_xscale_treo650() (machine_arch_type == MACH_TYPE_XSCALE_PALMTREO650)
++#else
++# define machine_is_xscale_treo650() (0)
++#endif
++
++#ifdef CONFIG_MACH_ACUMEN
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ACUMEN
++# endif
++# define machine_is_acumen() (machine_arch_type == MACH_TYPE_ACUMEN)
++#else
++# define machine_is_acumen() (0)
++#endif
++
++#ifdef CONFIG_MACH_XP100
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XP100
++# endif
++# define machine_is_xp100() (machine_arch_type == MACH_TYPE_XP100)
++#else
++# define machine_is_xp100() (0)
++#endif
++
++#ifdef CONFIG_MACH_FS2410
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_FS2410
++# endif
++# define machine_is_fs2410() (machine_arch_type == MACH_TYPE_FS2410)
++#else
++# define machine_is_fs2410() (0)
++#endif
++
++#ifdef CONFIG_MACH_PXA270_CERF
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PXA270_CERF
++# endif
++# define machine_is_pxa270_cerf() (machine_arch_type == MACH_TYPE_PXA270_CERF)
++#else
++# define machine_is_pxa270_cerf() (0)
++#endif
++
++#ifdef CONFIG_MACH_SQ2FTLPALM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SQ2FTLPALM
++# endif
++# define machine_is_sq2ftlpalm() (machine_arch_type == MACH_TYPE_SQ2FTLPALM)
++#else
++# define machine_is_sq2ftlpalm() (0)
++#endif
++
++#ifdef CONFIG_MACH_BSEMSERVER
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BSEMSERVER
++# endif
++# define machine_is_bsemserver() (machine_arch_type == MACH_TYPE_BSEMSERVER)
++#else
++# define machine_is_bsemserver() (0)
++#endif
++
++#ifdef CONFIG_MACH_NETCLIENT
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NETCLIENT
++# endif
++# define machine_is_netclient() (machine_arch_type == MACH_TYPE_NETCLIENT)
++#else
++# define machine_is_netclient() (0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMTT5
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XSCALE_PALMTT5
++# endif
++# define machine_is_xscale_palmtt5() (machine_arch_type == MACH_TYPE_XSCALE_PALMTT5)
++#else
++# define machine_is_xscale_palmtt5() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_PALMTC
++# endif
++# define machine_is_xscale_palmtc() (machine_arch_type == MACH_TYPE_OMAP_PALMTC)
++#else
++# define machine_is_xscale_palmtc() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_APOLLON
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_APOLLON
++# endif
++# define machine_is_omap_apollon() (machine_arch_type == MACH_TYPE_OMAP_APOLLON)
++#else
++# define machine_is_omap_apollon() (0)
++#endif
++
++#ifdef CONFIG_MACH_ARGONLVEVB
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ARGONLVEVB
++# endif
++# define machine_is_mxc30030evb() (machine_arch_type == MACH_TYPE_ARGONLVEVB)
++#else
++# define machine_is_mxc30030evb() (0)
++#endif
++
++#ifdef CONFIG_MACH_REA_2D
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_REA_2D
++# endif
++# define machine_is_rea_2d() (machine_arch_type == MACH_TYPE_REA_2D)
++#else
++# define machine_is_rea_2d() (0)
++#endif
++
++#ifdef CONFIG_MACH_TI3E524
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TI3E524
++# endif
++# define machine_is_eti3e524() (machine_arch_type == MACH_TYPE_TI3E524)
++#else
++# define machine_is_eti3e524() (0)
++#endif
++
++#ifdef CONFIG_MACH_ATEB9200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ATEB9200
++# endif
++# define machine_is_ateb9200() (machine_arch_type == MACH_TYPE_ATEB9200)
++#else
++# define machine_is_ateb9200() (0)
++#endif
++
++#ifdef CONFIG_MACH_AUCKLAND
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AUCKLAND
++# endif
++# define machine_is_auckland() (machine_arch_type == MACH_TYPE_AUCKLAND)
++#else
++# define machine_is_auckland() (0)
++#endif
++
++#ifdef CONFIG_MACH_AK3320M
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AK3320M
++# endif
++# define machine_is_ak3220m() (machine_arch_type == MACH_TYPE_AK3320M)
++#else
++# define machine_is_ak3220m() (0)
++#endif
++
++#ifdef CONFIG_MACH_DURAMAX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DURAMAX
++# endif
++# define machine_is_duramax() (machine_arch_type == MACH_TYPE_DURAMAX)
++#else
++# define machine_is_duramax() (0)
++#endif
++
++#ifdef CONFIG_MACH_N35
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_N35
++# endif
++# define machine_is_n35() (machine_arch_type == MACH_TYPE_N35)
++#else
++# define machine_is_n35() (0)
++#endif
++
++#ifdef CONFIG_MACH_PRONGHORN
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PRONGHORN
++# endif
++# define machine_is_pronghorn() (machine_arch_type == MACH_TYPE_PRONGHORN)
++#else
++# define machine_is_pronghorn() (0)
++#endif
++
++#ifdef CONFIG_MACH_FUNDY
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_FUNDY
++# endif
++# define machine_is_fundy() (machine_arch_type == MACH_TYPE_FUNDY)
++#else
++# define machine_is_fundy() (0)
++#endif
++
++#ifdef CONFIG_MACH_LOGICPD_PXA270
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_LOGICPD_PXA270
++# endif
++# define machine_is_logicpd_pxa270() (machine_arch_type == MACH_TYPE_LOGICPD_PXA270)
++#else
++# define machine_is_logicpd_pxa270() (0)
++#endif
++
++#ifdef CONFIG_MACH_CPU777
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CPU777
++# endif
++# define machine_is_cpu777() (machine_arch_type == MACH_TYPE_CPU777)
++#else
++# define machine_is_cpu777() (0)
++#endif
++
++#ifdef CONFIG_MACH_SIMICON9201
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SIMICON9201
++# endif
++# define machine_is_simicon9201() (machine_arch_type == MACH_TYPE_SIMICON9201)
++#else
++# define machine_is_simicon9201() (0)
++#endif
++
++#ifdef CONFIG_MACH_LEAP2_HPM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_LEAP2_HPM
++# endif
++# define machine_is_leap2_hpm() (machine_arch_type == MACH_TYPE_LEAP2_HPM)
++#else
++# define machine_is_leap2_hpm() (0)
++#endif
++
++#ifdef CONFIG_MACH_CM922TXA10
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CM922TXA10
++# endif
++# define machine_is_cm922txa10() (machine_arch_type == MACH_TYPE_CM922TXA10)
++#else
++# define machine_is_cm922txa10() (0)
++#endif
++
++#ifdef CONFIG_MACH_PXA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PXA
++# endif
++# define machine_is_sandgate() (machine_arch_type == MACH_TYPE_PXA)
++#else
++# define machine_is_sandgate() (0)
++#endif
++
++#ifdef CONFIG_MACH_SANDGATE2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SANDGATE2
++# endif
++# define machine_is_sandgate2() (machine_arch_type == MACH_TYPE_SANDGATE2)
++#else
++# define machine_is_sandgate2() (0)
++#endif
++
++#ifdef CONFIG_MACH_SANDGATE2G
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SANDGATE2G
++# endif
++# define machine_is_sandgate2g() (machine_arch_type == MACH_TYPE_SANDGATE2G)
++#else
++# define machine_is_sandgate2g() (0)
++#endif
++
++#ifdef CONFIG_MACH_SANDGATE2P
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SANDGATE2P
++# endif
++# define machine_is_sandgate2p() (machine_arch_type == MACH_TYPE_SANDGATE2P)
++#else
++# define machine_is_sandgate2p() (0)
++#endif
++
++#ifdef CONFIG_MACH_FRED_JACK
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_FRED_JACK
++# endif
++# define machine_is_fred_jack() (machine_arch_type == MACH_TYPE_FRED_JACK)
++#else
++# define machine_is_fred_jack() (0)
++#endif
++
++#ifdef CONFIG_MACH_TTG_COLOR1
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TTG_COLOR1
++# endif
++# define machine_is_ttg_color1() (machine_arch_type == MACH_TYPE_TTG_COLOR1)
++#else
++# define machine_is_ttg_color1() (0)
++#endif
++
++#ifdef CONFIG_MACH_NXEB500HMI
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NXEB500HMI
++# endif
++# define machine_is_nxeb500hmi() (machine_arch_type == MACH_TYPE_NXEB500HMI)
++#else
++# define machine_is_nxeb500hmi() (0)
++#endif
++
++#ifdef CONFIG_MACH_NETDCU8
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NETDCU8
++# endif
++# define machine_is_netdcu8() (machine_arch_type == MACH_TYPE_NETDCU8)
++#else
++# define machine_is_netdcu8() (0)
++#endif
++
++#ifdef CONFIG_MACH_ML675050_CPU_BOA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ML675050_CPU_BOA
++# endif
++# define machine_is_ml675050_cpu_boa() (machine_arch_type == MACH_TYPE_ML675050_CPU_BOA)
++#else
++# define machine_is_ml675050_cpu_boa() (0)
++#endif
++
++#ifdef CONFIG_MACH_NG_FVX538
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NG_FVX538
++# endif
++# define machine_is_ng_fvx538() (machine_arch_type == MACH_TYPE_NG_FVX538)
++#else
++# define machine_is_ng_fvx538() (0)
++#endif
++
++#ifdef CONFIG_MACH_NG_FVS338
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NG_FVS338
++# endif
++# define machine_is_ng_fvs338() (machine_arch_type == MACH_TYPE_NG_FVS338)
++#else
++# define machine_is_ng_fvs338() (0)
++#endif
++
++#ifdef CONFIG_MACH_PNX4103
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PNX4103
++# endif
++# define machine_is_pnx4103() (machine_arch_type == MACH_TYPE_PNX4103)
++#else
++# define machine_is_pnx4103() (0)
++#endif
++
++#ifdef CONFIG_MACH_HESDB
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HESDB
++# endif
++# define machine_is_hesdb() (machine_arch_type == MACH_TYPE_HESDB)
++#else
++# define machine_is_hesdb() (0)
++#endif
++
++#ifdef CONFIG_MACH_XSILO
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_XSILO
++# endif
++# define machine_is_xsilo() (machine_arch_type == MACH_TYPE_XSILO)
++#else
++# define machine_is_xsilo() (0)
++#endif
++
++#ifdef CONFIG_MACH_ESPRESSO
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ESPRESSO
++# endif
++# define machine_is_espresso() (machine_arch_type == MACH_TYPE_ESPRESSO)
++#else
++# define machine_is_espresso() (0)
++#endif
++
++#ifdef CONFIG_MACH_EMLC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EMLC
++# endif
++# define machine_is_emlc() (machine_arch_type == MACH_TYPE_EMLC)
++#else
++# define machine_is_emlc() (0)
++#endif
++
++#ifdef CONFIG_MACH_SISTERON
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SISTERON
++# endif
++# define machine_is_sisteron() (machine_arch_type == MACH_TYPE_SISTERON)
++#else
++# define machine_is_sisteron() (0)
++#endif
++
++#ifdef CONFIG_MACH_RX1950
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_RX1950
++# endif
++# define machine_is_rx1950() (machine_arch_type == MACH_TYPE_RX1950)
++#else
++# define machine_is_rx1950() (0)
++#endif
++
++#ifdef CONFIG_MACH_TSC_VENUS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TSC_VENUS
++# endif
++# define machine_is_tsc_venus() (machine_arch_type == MACH_TYPE_TSC_VENUS)
++#else
++# define machine_is_tsc_venus() (0)
++#endif
++
++#ifdef CONFIG_MACH_DS101J
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DS101J
++# endif
++# define machine_is_ds101j() (machine_arch_type == MACH_TYPE_DS101J)
++#else
++# define machine_is_ds101j() (0)
++#endif
++
++#ifdef CONFIG_MACH_MXC30030ADS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MXC30030ADS
++# endif
++# define machine_is_mxc30030ads() (machine_arch_type == MACH_TYPE_MXC30030ADS)
++#else
++# define machine_is_mxc30030ads() (0)
++#endif
++
++#ifdef CONFIG_MACH_FUJITSU_WIMAXSOC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_FUJITSU_WIMAXSOC
++# endif
++# define machine_is_fujitsu_wimaxsoc() (machine_arch_type == MACH_TYPE_FUJITSU_WIMAXSOC)
++#else
++# define machine_is_fujitsu_wimaxsoc() (0)
++#endif
++
++#ifdef CONFIG_MACH_DUALPCMODEM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DUALPCMODEM
++# endif
++# define machine_is_dualpcmodem() (machine_arch_type == MACH_TYPE_DUALPCMODEM)
++#else
++# define machine_is_dualpcmodem() (0)
++#endif
++
++#ifdef CONFIG_MACH_GESBC9312
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_GESBC9312
++# endif
++# define machine_is_gesbc9312() (machine_arch_type == MACH_TYPE_GESBC9312)
++#else
++# define machine_is_gesbc9312() (0)
++#endif
++
++#ifdef CONFIG_MACH_HTCAPACHE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HTCAPACHE
++# endif
++# define machine_is_htcapache() (machine_arch_type == MACH_TYPE_HTCAPACHE)
++#else
++# define machine_is_htcapache() (0)
++#endif
++
++#ifdef CONFIG_MACH_IXDP435
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IXDP435
++# endif
++# define machine_is_ixdp435() (machine_arch_type == MACH_TYPE_IXDP435)
++#else
++# define machine_is_ixdp435() (0)
++#endif
++
++#ifdef CONFIG_MACH_CATPROVT100
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CATPROVT100
++# endif
++# define machine_is_catprovt100() (machine_arch_type == MACH_TYPE_CATPROVT100)
++#else
++# define machine_is_catprovt100() (0)
++#endif
++
++#ifdef CONFIG_MACH_PICOTUX1XX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PICOTUX1XX
++# endif
++# define machine_is_picotux1xx() (machine_arch_type == MACH_TYPE_PICOTUX1XX)
++#else
++# define machine_is_picotux1xx() (0)
++#endif
++
++#ifdef CONFIG_MACH_PICOTUX2XX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PICOTUX2XX
++# endif
++# define machine_is_picotux2xx() (machine_arch_type == MACH_TYPE_PICOTUX2XX)
++#else
++# define machine_is_picotux2xx() (0)
++#endif
++
++#ifdef CONFIG_MACH_DSMG600
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DSMG600
++# endif
++# define machine_is_dsmg600() (machine_arch_type == MACH_TYPE_DSMG600)
++#else
++# define machine_is_dsmg600() (0)
++#endif
++
++#ifdef CONFIG_MACH_EMPC2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EMPC2
++# endif
++# define machine_is_empc2() (machine_arch_type == MACH_TYPE_EMPC2)
++#else
++# define machine_is_empc2() (0)
++#endif
++
++#ifdef CONFIG_MACH_VENTURA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_VENTURA
++# endif
++# define machine_is_ventura() (machine_arch_type == MACH_TYPE_VENTURA)
++#else
++# define machine_is_ventura() (0)
++#endif
++
++#ifdef CONFIG_MACH_PHIDGET_SBC
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PHIDGET_SBC
++# endif
++# define machine_is_phidget_sbc() (machine_arch_type == MACH_TYPE_PHIDGET_SBC)
++#else
++# define machine_is_phidget_sbc() (0)
++#endif
++
++#ifdef CONFIG_MACH_IJ3K
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IJ3K
++# endif
++# define machine_is_ij3k() (machine_arch_type == MACH_TYPE_IJ3K)
++#else
++# define machine_is_ij3k() (0)
++#endif
++
++#ifdef CONFIG_MACH_PISGAH
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PISGAH
++# endif
++# define machine_is_pisgah() (machine_arch_type == MACH_TYPE_PISGAH)
++#else
++# define machine_is_pisgah() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_FSAMPLE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_FSAMPLE
++# endif
++# define machine_is_omap_fsample() (machine_arch_type == MACH_TYPE_OMAP_FSAMPLE)
++#else
++# define machine_is_omap_fsample() (0)
++#endif
++
++#ifdef CONFIG_MACH_SG720
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SG720
++# endif
++# define machine_is_sg720() (machine_arch_type == MACH_TYPE_SG720)
++#else
++# define machine_is_sg720() (0)
++#endif
++
++#ifdef CONFIG_MACH_REDFOX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_REDFOX
++# endif
++# define machine_is_redfox() (machine_arch_type == MACH_TYPE_REDFOX)
++#else
++# define machine_is_redfox() (0)
++#endif
++
++#ifdef CONFIG_MACH_MYSH_EP9315_1
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MYSH_EP9315_1
++# endif
++# define machine_is_mysh_ep9315_1() (machine_arch_type == MACH_TYPE_MYSH_EP9315_1)
++#else
++# define machine_is_mysh_ep9315_1() (0)
++#endif
++
++#ifdef CONFIG_MACH_TPF106
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TPF106
++# endif
++# define machine_is_tpf106() (machine_arch_type == MACH_TYPE_TPF106)
++#else
++# define machine_is_tpf106() (0)
++#endif
++
++#ifdef CONFIG_MACH_AT91RM9200KG
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AT91RM9200KG
++# endif
++# define machine_is_at91rm9200kg() (machine_arch_type == MACH_TYPE_AT91RM9200KG)
++#else
++# define machine_is_at91rm9200kg() (0)
++#endif
++
++#ifdef CONFIG_MACH_SLEDB
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SLEDB
++# endif
++# define machine_is_racemt2() (machine_arch_type == MACH_TYPE_SLEDB)
++#else
++# define machine_is_racemt2() (0)
++#endif
++
++#ifdef CONFIG_MACH_ONTRACK
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ONTRACK
++# endif
++# define machine_is_ontrack() (machine_arch_type == MACH_TYPE_ONTRACK)
++#else
++# define machine_is_ontrack() (0)
++#endif
++
++#ifdef CONFIG_MACH_PM1200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PM1200
++# endif
++# define machine_is_pm1200() (machine_arch_type == MACH_TYPE_PM1200)
++#else
++# define machine_is_pm1200() (0)
++#endif
++
++#ifdef CONFIG_MACH_ESS24XXX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ESS24XXX
++# endif
++# define machine_is_ess24562() (machine_arch_type == MACH_TYPE_ESS24XXX)
++#else
++# define machine_is_ess24562() (0)
++#endif
++
++#ifdef CONFIG_MACH_COREMP7
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_COREMP7
++# endif
++# define machine_is_coremp7() (machine_arch_type == MACH_TYPE_COREMP7)
++#else
++# define machine_is_coremp7() (0)
++#endif
++
++#ifdef CONFIG_MACH_NEXCODER_6446
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NEXCODER_6446
++# endif
++# define machine_is_nexcoder_6446() (machine_arch_type == MACH_TYPE_NEXCODER_6446)
++#else
++# define machine_is_nexcoder_6446() (0)
++#endif
++
++#ifdef CONFIG_MACH_STVC8380
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_STVC8380
++# endif
++# define machine_is_stvc8380() (machine_arch_type == MACH_TYPE_STVC8380)
++#else
++# define machine_is_stvc8380() (0)
++#endif
++
++#ifdef CONFIG_MACH_TEKLYNX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_TEKLYNX
++# endif
++# define machine_is_teklynx() (machine_arch_type == MACH_TYPE_TEKLYNX)
++#else
++# define machine_is_teklynx() (0)
++#endif
++
++#ifdef CONFIG_MACH_CARBONADO
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CARBONADO
++# endif
++# define machine_is_carbonado() (machine_arch_type == MACH_TYPE_CARBONADO)
++#else
++# define machine_is_carbonado() (0)
++#endif
++
++#ifdef CONFIG_MACH_SYSMOS_MP730
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SYSMOS_MP730
++# endif
++# define machine_is_sysmos_mp730() (machine_arch_type == MACH_TYPE_SYSMOS_MP730)
++#else
++# define machine_is_sysmos_mp730() (0)
++#endif
++
++#ifdef CONFIG_MACH_SNAPPER_CL15
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SNAPPER_CL15
++# endif
++# define machine_is_snapper_cl15() (machine_arch_type == MACH_TYPE_SNAPPER_CL15)
++#else
++# define machine_is_snapper_cl15() (0)
++#endif
++
++#ifdef CONFIG_MACH_PGIGIM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PGIGIM
++# endif
++# define machine_is_pgigim() (machine_arch_type == MACH_TYPE_PGIGIM)
++#else
++# define machine_is_pgigim() (0)
++#endif
++
++#ifdef CONFIG_MACH_PTX9160P2
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PTX9160P2
++# endif
++# define machine_is_ptx9160p2() (machine_arch_type == MACH_TYPE_PTX9160P2)
++#else
++# define machine_is_ptx9160p2() (0)
++#endif
++
++#ifdef CONFIG_MACH_DCORE1
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DCORE1
++# endif
++# define machine_is_dcore1() (machine_arch_type == MACH_TYPE_DCORE1)
++#else
++# define machine_is_dcore1() (0)
++#endif
++
++#ifdef CONFIG_MACH_VICTORPXA
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_VICTORPXA
++# endif
++# define machine_is_victorpxa() (machine_arch_type == MACH_TYPE_VICTORPXA)
++#else
++# define machine_is_victorpxa() (0)
++#endif
++
++#ifdef CONFIG_MACH_MX2DTB
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MX2DTB
++# endif
++# define machine_is_mx2dtb() (machine_arch_type == MACH_TYPE_MX2DTB)
++#else
++# define machine_is_mx2dtb() (0)
++#endif
++
++#ifdef CONFIG_MACH_PXA_IREX_ER0100
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PXA_IREX_ER0100
++# endif
++# define machine_is_pxa_irex_er0100() (machine_arch_type == MACH_TYPE_PXA_IREX_ER0100)
++#else
++# define machine_is_pxa_irex_er0100() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMZ71
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_PALMZ71
++# endif
++# define machine_is_omap_palmz71() (machine_arch_type == MACH_TYPE_OMAP_PALMZ71)
++#else
++# define machine_is_omap_palmz71() (0)
++#endif
++
++#ifdef CONFIG_MACH_BARTEC_DEG
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BARTEC_DEG
++# endif
++# define machine_is_bartec_deg() (machine_arch_type == MACH_TYPE_BARTEC_DEG)
++#else
++# define machine_is_bartec_deg() (0)
++#endif
++
++#ifdef CONFIG_MACH_HW50251
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HW50251
++# endif
++# define machine_is_hw50251() (machine_arch_type == MACH_TYPE_HW50251)
++#else
++# define machine_is_hw50251() (0)
++#endif
++
++#ifdef CONFIG_MACH_IBOX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IBOX
++# endif
++# define machine_is_ibox() (machine_arch_type == MACH_TYPE_IBOX)
++#else
++# define machine_is_ibox() (0)
++#endif
++
++#ifdef CONFIG_MACH_ATLASLH7A404
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ATLASLH7A404
++# endif
++# define machine_is_atlaslh7a404() (machine_arch_type == MACH_TYPE_ATLASLH7A404)
++#else
++# define machine_is_atlaslh7a404() (0)
++#endif
++
++#ifdef CONFIG_MACH_PT2026
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PT2026
++# endif
++# define machine_is_pt2026() (machine_arch_type == MACH_TYPE_PT2026)
++#else
++# define machine_is_pt2026() (0)
++#endif
++
++#ifdef CONFIG_MACH_HTCALPINE
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HTCALPINE
++# endif
++# define machine_is_htcalpine() (machine_arch_type == MACH_TYPE_HTCALPINE)
++#else
++# define machine_is_htcalpine() (0)
++#endif
++
++#ifdef CONFIG_MACH_BARTEC_VTU
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BARTEC_VTU
++# endif
++# define machine_is_bartec_vtu() (machine_arch_type == MACH_TYPE_BARTEC_VTU)
++#else
++# define machine_is_bartec_vtu() (0)
++#endif
++
++#ifdef CONFIG_MACH_VCOREII
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_VCOREII
++# endif
++# define machine_is_vcoreii() (machine_arch_type == MACH_TYPE_VCOREII)
++#else
++# define machine_is_vcoreii() (0)
++#endif
++
++#ifdef CONFIG_MACH_PDNB3
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_PDNB3
++# endif
++# define machine_is_pdnb3() (machine_arch_type == MACH_TYPE_PDNB3)
++#else
++# define machine_is_pdnb3() (0)
++#endif
++
++#ifdef CONFIG_MACH_HTCBEETLES
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_HTCBEETLES
++# endif
++# define machine_is_htcbeetles() (machine_arch_type == MACH_TYPE_HTCBEETLES)
++#else
++# define machine_is_htcbeetles() (0)
++#endif
++
++#ifdef CONFIG_MACH_S3C6400
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_S3C6400
++# endif
++# define machine_is_s3c6400() (machine_arch_type == MACH_TYPE_S3C6400)
++#else
++# define machine_is_s3c6400() (0)
++#endif
++
++#ifdef CONFIG_MACH_S3C2443
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_S3C2443
++# endif
++# define machine_is_s3c2443() (machine_arch_type == MACH_TYPE_S3C2443)
++#else
++# define machine_is_s3c2443() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_LDK
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OMAP_LDK
++# endif
++# define machine_is_omap_ldk() (machine_arch_type == MACH_TYPE_OMAP_LDK)
++#else
++# define machine_is_omap_ldk() (0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2460
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SMDK2460
++# endif
++# define machine_is_smdk2460() (machine_arch_type == MACH_TYPE_SMDK2460)
++#else
++# define machine_is_smdk2460() (0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2440
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SMDK2440
++# endif
++# define machine_is_smdk2440() (machine_arch_type == MACH_TYPE_SMDK2440)
++#else
++# define machine_is_smdk2440() (0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2412
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SMDK2412
++# endif
++# define machine_is_smdk2412() (machine_arch_type == MACH_TYPE_SMDK2412)
++#else
++# define machine_is_smdk2412() (0)
++#endif
++
++#ifdef CONFIG_MACH_WEBBOX
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_WEBBOX
++# endif
++# define machine_is_webbox() (machine_arch_type == MACH_TYPE_WEBBOX)
++#else
++# define machine_is_webbox() (0)
++#endif
++
++#ifdef CONFIG_MACH_CWWNDP
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CWWNDP
++# endif
++# define machine_is_cwwndp() (machine_arch_type == MACH_TYPE_CWWNDP)
++#else
++# define machine_is_cwwndp() (0)
++#endif
++
++#ifdef CONFIG_MACH_DRAGON
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DRAGON
++# endif
++# define machine_is_dragon() (machine_arch_type == MACH_TYPE_DRAGON)
++#else
++# define machine_is_dragon() (0)
++#endif
++
++#ifdef CONFIG_MACH_OPENDO_CPU_BOARD
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_OPENDO_CPU_BOARD
++# endif
++# define machine_is_opendo_cpu_board() (machine_arch_type == MACH_TYPE_OPENDO_CPU_BOARD)
++#else
++# define machine_is_opendo_cpu_board() (0)
++#endif
++
++#ifdef CONFIG_MACH_CCM2200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CCM2200
++# endif
++# define machine_is_ccm2200() (machine_arch_type == MACH_TYPE_CCM2200)
++#else
++# define machine_is_ccm2200() (0)
++#endif
++
++#ifdef CONFIG_MACH_ETWARM
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_ETWARM
++# endif
++# define machine_is_etwarm() (machine_arch_type == MACH_TYPE_ETWARM)
++#else
++# define machine_is_etwarm() (0)
++#endif
++
++#ifdef CONFIG_MACH_M93030
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_M93030
++# endif
++# define machine_is_m93030() (machine_arch_type == MACH_TYPE_M93030)
++#else
++# define machine_is_m93030() (0)
++#endif
++
++#ifdef CONFIG_MACH_CC7U
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_CC7U
++# endif
++# define machine_is_cc7u() (machine_arch_type == MACH_TYPE_CC7U)
++#else
++# define machine_is_cc7u() (0)
++#endif
++
++#ifdef CONFIG_MACH_MTT_RANGER
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_MTT_RANGER
++# endif
++# define machine_is_mtt_ranger() (machine_arch_type == MACH_TYPE_MTT_RANGER)
++#else
++# define machine_is_mtt_ranger() (0)
++#endif
++
++#ifdef CONFIG_MACH_NEXUS
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_NEXUS
++# endif
++# define machine_is_nexus() (machine_arch_type == MACH_TYPE_NEXUS)
++#else
++# define machine_is_nexus() (0)
++#endif
++
++#ifdef CONFIG_MACH_DESMAN
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_DESMAN
++# endif
++# define machine_is_desman() (machine_arch_type == MACH_TYPE_DESMAN)
++#else
++# define machine_is_desman() (0)
++#endif
++
++#ifdef CONFIG_MACH_BKDE303
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BKDE303
++# endif
++# define machine_is_bkde303() (machine_arch_type == MACH_TYPE_BKDE303)
++#else
++# define machine_is_bkde303() (0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2413
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SMDK2413
++# endif
++# define machine_is_smdk2413() (machine_arch_type == MACH_TYPE_SMDK2413)
++#else
++# define machine_is_smdk2413() (0)
++#endif
++
++#ifdef CONFIG_MACH_AML_M7200
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AML_M7200
++# endif
++# define machine_is_aml_m7200() (machine_arch_type == MACH_TYPE_AML_M7200)
++#else
++# define machine_is_aml_m7200() (0)
++#endif
++
++#ifdef CONFIG_MACH_AML_M5900
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AML_M5900
++# endif
++# define machine_is_aml_m5900() (machine_arch_type == MACH_TYPE_AML_M5900)
++#else
++# define machine_is_aml_m5900() (0)
++#endif
++
++#ifdef CONFIG_MACH_SG640
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SG640
++# endif
++# define machine_is_sg640() (machine_arch_type == MACH_TYPE_SG640)
++#else
++# define machine_is_sg640() (0)
++#endif
++
++#ifdef CONFIG_MACH_EDG79524
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_EDG79524
++# endif
++# define machine_is_edg79524() (machine_arch_type == MACH_TYPE_EDG79524)
++#else
++# define machine_is_edg79524() (0)
++#endif
++
++#ifdef CONFIG_MACH_AI2410
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_AI2410
++# endif
++# define machine_is_ai2410() (machine_arch_type == MACH_TYPE_AI2410)
++#else
++# define machine_is_ai2410() (0)
++#endif
++
++#ifdef CONFIG_MACH_IXP465
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_IXP465
++# endif
++# define machine_is_ixp465() (machine_arch_type == MACH_TYPE_IXP465)
++#else
++# define machine_is_ixp465() (0)
++#endif
++
++#ifdef CONFIG_MACH_BALLOON3
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_BALLOON3
++# endif
++# define machine_is_balloon3() (machine_arch_type == MACH_TYPE_BALLOON3)
++#else
++# define machine_is_balloon3() (0)
++#endif
++
++#ifdef CONFIG_MACH_QT2410
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_QT2410
++# endif
++# define machine_is_qt2410() (machine_arch_type == MACH_TYPE_QT2410)
++#else
++# define machine_is_qt2410() (0)
++#endif
++
++#ifdef CONFIG_MACH_GTA01
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_GTA01
++# endif
++# define machine_is_gta01() (machine_arch_type == MACH_TYPE_GTA01)
++#else
++# define machine_is_gta01() (0)
++#endif
++
++
+ /*
+ * These have not yet been registered
+ */
+Index: git/include/configs/gta01.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/include/configs/gta01.h 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,233 @@
++/*
++ * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
++ *
++ * Configuation settings for the FIC GTA01 Linux GSM phone
++ *
++ * 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
++
++/* we want to start u-boot directly from within NAND flash */
++#define CONFIG_S3C2410_NAND_BOOT 1
++
++/*
++ * High Level Configuration Options
++ * (easy to change)
++ */
++#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
++#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
++#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
++
++/* input clock of PLL */
++#define CONFIG_SYS_CLK_FREQ 12000000/* the GTA01 has 12MHz input clock */
++
++
++#define USE_920T_MMU 1
++#define CONFIG_USE_IRQ 1
++
++/*
++ * Size of malloc() pool
++ */
++#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
++#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
++
++/*
++ * Hardware drivers
++ */
++
++/*
++ * select serial console configuration
++ */
++#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on GTA01 */
++//#define CONFIG_HWFLOW 1
++
++/************************************************************
++ * RTC
++ ************************************************************/
++#define CONFIG_RTC_S3C24X0 1
++
++/* allow to overwrite serial and ethaddr */
++#define CONFIG_ENV_OVERWRITE
++
++#define CONFIG_BAUDRATE 115200
++
++/***********************************************************
++ * Command definition
++ ***********************************************************/
++#define CONFIG_COMMANDS (\
++ CFG_CMD_BDI | \
++ CFG_CMD_LOADS | \
++ CFG_CMD_LAODB | \
++ CFG_CMD_IMI | \
++ CFG_CMD_CACHE | \
++ CFG_CMD_MEMORY | \
++ CFG_CMD_ENV | \
++ /* CFG_CMD_IRQ | */ \
++ CFG_CMD_BOOTD | \
++ CFG_CMD_CONSOLE | \
++ CFG_CMD_ASKENV | \
++ CFG_CMD_RUN | \
++ CFG_CMD_ECHO | \
++ CFG_CMD_I2C | \
++ CFG_CMD_REGINFO | \
++ CFG_CMD_IMMAP | \
++ CFG_CMD_DATE | \
++ CFG_CMD_AUTOSCRIPT | \
++ CFG_CMD_BSP | \
++ CFG_CMD_ELF | \
++ CFG_CMD_MISC | \
++ CFG_CMD_USB | \
++ CFG_CMD_JFFS2 | \
++ CFG_CMD_DIAG | \
++ /* CFG_CMD_HWFLOW | */ \
++ CFG_CMD_SAVES | \
++ CFG_CMD_NAND | \
++ CFG_CMD_PORTIO | \
++ CFG_CMD_MMC | \
++ CFG_CMD_FAT | \
++ CFG_CMD_EXT2 | \
++ 0)
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++#define CONFIG_BOOTDELAY 3
++#define CONFIG_BOOTARGS "rootfstype=jffs2 root=/dev/mtdblock4 console=ttySAC0,115200 console=tty0 loglevel=8"
++#define CONFIG_BOOTCOMMAND "nand read 0x32000000 0x34000 0x200000; bootm 0x32000000"
++
++#define CONFIG_DOS_PARTITION 1
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
++/* what's this ? it's not used anywhere */
++#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
++#endif
++
++/*
++ * Miscellaneous configurable options
++ */
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_PROMPT "GTA01 # " /* Monitor Command Prompt */
++#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
++#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 0x30000000 /* memtest works on */
++#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
++
++#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
++
++#define CFG_LOAD_ADDR 0x33000000 /* default load address */
++
++/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
++/* it to wrap 100 times (total 1562500) to get 1 sec. */
++#define CFG_HZ 1562500
++
++/* valid baudrates */
++#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
++
++/*-----------------------------------------------------------------------
++ * Stack sizes
++ *
++ * The stack sizes are set up in start.S using the settings below
++ */
++#define CONFIG_STACKSIZE (128*1024) /* regular stack */
++#ifdef CONFIG_USE_IRQ
++#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
++#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
++#endif
++
++#define CONFIG_USB_OHCI 1
++
++/*-----------------------------------------------------------------------
++ * Physical Memory Map
++ */
++#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
++#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
++#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
++#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
++
++/*-----------------------------------------------------------------------
++ * FLASH and environment organization
++ */
++
++/* No NOR flash in this device */
++#define CFG_NO_FLASH 1
++
++#define CFG_ENV_IS_IN_NAND 1
++#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
++#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
++
++#define NAND_MAX_CHIPS 1
++#define CFG_NAND_BASE 0x4e000000
++#define CFG_MAX_NAND_DEVICE 1
++
++#define CONFIG_MMC 1
++#define CFG_MMC_BASE 0xff000000
++
++/* EXT2 driver */
++#define CONFIG_EXT2 1
++
++#if 0
++/* FAT driver in u-boot is broken currently */
++#define CONFIG_FAT 1
++#define CONFIG_SUPPORT_VFAT 1
++#endif
++
++/* JFFS2 driver */
++#define CONFIG_JFFS2_CMDLINE 1
++#define CONFIG_JFFS2_NAND 1
++#define CONFIG_JFFS2_NAND_DEV 0
++#define CONFIG_JFFS2_NAND_OFF 0x634000
++#define CONFIG_JFFS2_NAND_SIZE 0x39cc000
++
++/* ATAG configuration */
++#define CONFIG_INITRD_TAG 1
++#define CONFIG_SETUP_MEMORY_TAGS 1
++#define CONFIG_CMDLINE_TAG 1
++#define CONFIG_REVISION_TAG 1
++#if 0
++#define CONFIG_SERIAL_TAG 1
++#endif
++
++#define CONFIG_DRIVER_S3C24X0_I2C 1
++#define CONFIG_HARD_I2C 1
++#define CFG_I2C_SPEED 400000 /* 400kHz according to PCF50606 data sheet */
++#define CFG_I2C_SLAVE 0x7f
++
++/* we have a board_late_init() function */
++#define BOARD_LATE_INIT 1
++
++#if 0
++#define CONFIG_VIDEO
++#define CONFIG_VIDEO_S3C2410
++#define CONFIG_CFB_CONSOLE
++#define CONFIG_VIDEO_LOGO
++#define CONFIG_VGA_AS_SINGLE_DEVICE
++
++#define VIDEO_KBD_INIT_FCT 0
++#define VIDEO_TSTC_FCT serial_tstc
++#define VIDEO_GETC_FCT serial_getc
++
++#define LCD_VIDEO_ADDR 0x33d00000
++#endif
++
++#endif /* __CONFIG_H */
+Index: git/include/configs/qt2410.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/include/configs/qt2410.h 2007-01-04 12:21:18.000000000 +0100
+@@ -0,0 +1,245 @@
++/*
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Marius Groeger <mgroeger@sysgo.de>
++ * Gary Jennejohn <gj@denx.de>
++ * David Mueller <d.mueller@elsoft.ch>
++ *
++ * Configuation settings for the SAMSUNG SMDK2410 board.
++ *
++ * 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 1
++/* If we want to start u-boot from usb bootloader in NOR flash */
++#define CONFIG_SKIP_RELOCATE_UBOOT 1
++#define CONFIG_SKIP_LOWLEVEL_INIT 1
++#else
++/* If we want to start u-boot directly from within NAND flash */
++#define CONFIG_S3C2410_NAND_BOOT 1
++#endif
++
++/*
++ * High Level Configuration Options
++ * (easy to change)
++ */
++#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
++#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
++#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
++
++/* input clock of PLL */
++#define CONFIG_SYS_CLK_FREQ 12000000/* the SMDK2410 has 12MHz input clock */
++
++
++#define USE_920T_MMU 1
++#define CONFIG_USE_IRQ 1
++//#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
++
++/*
++ * Size of malloc() pool
++ */
++#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
++#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
++
++/*
++ * Hardware drivers
++ */
++#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
++#define CS8900_BASE 0x19000300
++#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */
++
++/*
++ * select serial console configuration
++ */
++#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK2410 */
++#define CONFIG_HWFLOW 1
++
++/************************************************************
++ * RTC
++ ************************************************************/
++#define CONFIG_RTC_S3C24X0 1
++
++/* allow to overwrite serial and ethaddr */
++#define CONFIG_ENV_OVERWRITE
++
++#define CONFIG_BAUDRATE 115200
++
++/***********************************************************
++ * Command definition
++ ***********************************************************/
++#define CONFIG_COMMANDS \
++ (CONFIG_CMD_DFL | \
++ CFG_CMD_BSP | \
++ CFG_CMD_CACHE | \
++ CFG_CMD_DATE | \
++ CFG_CMD_DHCP | \
++ CFG_CMD_DIAG | \
++ CFG_CMD_ELF | \
++ CFG_CMD_EXT2 | \
++ CFG_CMD_FAT | \
++ CFG_CMD_HWFLOW | \
++ /* CFG_CMD_IDE | */ \
++ /* CFG_CMD_IRQ | */ \
++ CFG_CMD_JFFS2 | \
++ CFG_CMD_MMC | \
++ CFG_CMD_NAND | \
++ CFG_CMD_PING | \
++ CFG_CMD_PORTIO | \
++ CFG_CMD_REGINFO | \
++ CFG_CMD_SAVES | \
++ CFG_CMD_USB)
++
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++#define CONFIG_BOOTDELAY 3
++#define CONFIG_BOOTARGS "rootfstype=jffs2 root=/dev/mtdblock4 console=ttySAC0,115200 console=tty0 loglevel=8"
++#define CONFIG_ETHADDR 01:ab:cd:ef:fe:dc
++#define CONFIG_NETMASK 255.255.255.0
++#define CONFIG_IPADDR 10.0.0.110
++#define CONFIG_SERVERIP 10.0.0.1
++/*#define CONFIG_BOOTFILE "elinos-lart" */
++#define CONFIG_BOOTCOMMAND "nand load 0x32000000 0x34000 0x200000; bootm 0x32000000"
++
++#define CONFIG_DOS_PARTITION 1
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
++/* what's this ? it's not used anywhere */
++#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
++#endif
++
++/*
++ * Miscellaneous configurable options
++ */
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_PROMPT "QT2410 # " /* Monitor Command Prompt */
++#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
++#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 0x30000000 /* memtest works on */
++#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
++
++#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
++
++#define CFG_LOAD_ADDR 0x33000000 /* default load address */
++
++/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
++/* it to wrap 100 times (total 1562500) to get 1 sec. */
++#define CFG_HZ 1562500
++
++/* valid baudrates */
++#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
++
++/*-----------------------------------------------------------------------
++ * Stack sizes
++ *
++ * The stack sizes are set up in start.S using the settings below
++ */
++#define CONFIG_STACKSIZE (128*1024) /* regular stack */
++#ifdef CONFIG_USE_IRQ
++#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
++#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
++#endif
++
++/* IDE/ATA config */
++
++#if 0
++#define CFG_IDE_MAXBUS 1
++#define CFG_IDE_MAXDEVICE 2
++#define CFG_IDE_PREINIT 0
++
++#define CFG_ATA_BASE_ADDR
++#endif
++
++#define CONFIG_USB_OHCI 1
++
++/*-----------------------------------------------------------------------
++ * Physical Memory Map
++ */
++#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
++#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
++#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
++#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
++
++#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
++
++#define CFG_FLASH_BASE PHYS_FLASH_1
++
++/*-----------------------------------------------------------------------
++ * FLASH and environment organization
++ */
++
++#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */
++
++#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
++#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */
++#define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */
++
++/* timeout values are in ticks */
++#define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */
++#define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */
++
++#define CFG_ENV_IS_IN_NAND 1
++#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
++#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
++
++#define NAND_MAX_CHIPS 1
++#define CFG_NAND_BASE 0x4e000000
++#define CFG_MAX_NAND_DEVICE 1
++
++#define CONFIG_MMC 1
++#define CFG_MMC_BASE 0xff000000
++
++#define CONFIG_EXT2 1
++
++/* FAT driver in u-boot is broken currently */
++#define CONFIG_FAT 1
++#define CONFIG_SUPPORT_VFAT 1
++
++/* ATAG configuration */
++#define CONFIG_INITRD_TAG 1
++#define CONFIG_SETUP_MEMORY_TAGS 1
++#define CONFIG_CMDLINE_TAG 1
++#if 0
++#define CONFIG_SERIAL_TAG 1
++#define CONFIG_REVISION_TAG 1
++#endif
++
++
++#if 0
++#define CONFIG_VIDEO
++#define CONFIG_VIDEO_S3C2410
++#define CONFIG_CFB_CONSOLE
++#define CONFIG_VIDEO_LOGO
++#define CONFIG_VGA_AS_SINGLE_DEVICE
++
++#define VIDEO_KBD_INIT_FCT 0
++#define VIDEO_TSTC_FCT serial_tstc
++#define VIDEO_GETC_FCT serial_getc
++
++#define LCD_VIDEO_ADDR 0x33d00000
++#endif
++
++#endif /* __CONFIG_H */
+Index: git/include/s3c2410.h
+===================================================================
+--- git.orig/include/s3c2410.h 2007-01-04 12:21:15.000000000 +0100
++++ git/include/s3c2410.h 2007-01-04 12:21:18.000000000 +0100
+@@ -38,12 +38,6 @@
+ #define S3C2410_ECCSIZE 512
+ #define S3C2410_ECCBYTES 3
+
+-typedef enum {
+- S3C24X0_UART0,
+- S3C24X0_UART1,
+- S3C24X0_UART2
+-} S3C24X0_UARTS_NR;
+-
+ /* S3C2410 device base addresses */
+ #define S3C24X0_MEMCTL_BASE 0x48000000
+ #define S3C24X0_USB_HOST_BASE 0x49000000
+@@ -65,9 +59,23 @@
+ #define S3C2410_SDI_BASE 0x5A000000
+
+
++#define oNFCONF 0x00
++#define oNFCMD 0x04
++#define oNFADDR 0x08
++#define oNFDATA 0x0C
++#define oNFSTAT 0x10
++#define oNFECC 0x14
++
++#ifndef __ASSEMBLER__
++
+ /* include common stuff */
+ #include <s3c24x0.h>
+
++typedef enum {
++ S3C24X0_UART0,
++ S3C24X0_UART1,
++ S3C24X0_UART2
++} S3C24X0_UARTS_NR;
+
+ static inline S3C24X0_MEMCTL * const S3C24X0_GetBase_MEMCTL(void)
+ {
+@@ -142,6 +150,7 @@
+ return (S3C2410_SDI * const)S3C2410_SDI_BASE;
+ }
+
++#endif
+
+ /* ISR */
+ #define pISR_RESET (*(unsigned *)(_ISR_STARTADDRESS+0x0))
+Index: git/include/s3c24x0.h
+===================================================================
+--- git.orig/include/s3c24x0.h 2007-01-04 12:21:15.000000000 +0100
++++ git/include/s3c24x0.h 2007-01-04 12:21:18.000000000 +0100
+@@ -637,13 +637,7 @@
+ S3C24X0_REG32 SDIDCNT;
+ S3C24X0_REG32 SDIDSTA;
+ S3C24X0_REG32 SDIFSTA;
+-#ifdef __BIG_ENDIAN
+- S3C24X0_REG8 res[3];
+- S3C24X0_REG8 SDIDAT;
+-#else
+- S3C24X0_REG8 SDIDAT;
+- S3C24X0_REG8 res[3];
+-#endif
++ S3C24X0_REG32 SDIDAT;
+ S3C24X0_REG32 SDIIMSK;
+ } /*__attribute__((__packed__))*/ S3C2410_SDI;
+
+@@ -1123,11 +1117,7 @@
+ #define rSDIDatCnt (*(volatile unsigned *)0x5A000030)
+ #define rSDIDatSta (*(volatile unsigned *)0x5A000034)
+ #define rSDIFSTA (*(volatile unsigned *)0x5A000038)
+-#ifdef __BIG_ENDIAN
+-#define rSDIDAT (*(volatile unsigned char *)0x5A00003F)
+-#else
+-#define rSDIDAT (*(volatile unsigned char *)0x5A00003C)
+-#endif
++#define rSDIDAT (*(volatile unsigned *)0x5A00003C)
+ #define rSDIIntMsk (*(volatile unsigned *)0x5A000040)
+
+ #endif
diff --git a/packages/uboot/u-boot-1.1.2/u-boot-emetec.patch b/packages/uboot/u-boot-1.1.2/u-boot-emetec.patch
new file mode 100644
index 0000000000..ab3f106e71
--- /dev/null
+++ b/packages/uboot/u-boot-1.1.2/u-boot-emetec.patch
@@ -0,0 +1,2170 @@
+diff -uNr u-boot-1.1.2/.pc/.version u-boot-emetec-1.1.2/.pc/.version
+--- u-boot-1.1.2/.pc/.version 2007-04-20 00:01:06.000000000 +0300
++++ u-boot-emetec-1.1.2/.pc/.version 1970-01-01 02:00:00.000000000 +0200
+@@ -1 +0,0 @@
+-2
+diff -uNr u-boot-1.1.2/.pc/applied-patches u-boot-emetec-1.1.2/.pc/applied-patches
+--- u-boot-1.1.2/.pc/applied-patches 2007-04-20 00:01:06.000000000 +0300
++++ u-boot-emetec-1.1.2/.pc/applied-patches 1970-01-01 02:00:00.000000000 +0200
+@@ -1 +0,0 @@
+-arm_flags.patch
+diff -uNr u-boot-1.1.2/.pc/arm_flags.patch/cpu/pxa/config.mk u-boot-emetec-1.1.2/.pc/arm_flags.patch/cpu/pxa/config.mk
+--- u-boot-1.1.2/.pc/arm_flags.patch/cpu/pxa/config.mk 2003-05-23 15:36:21.000000000 +0300
++++ u-boot-emetec-1.1.2/.pc/arm_flags.patch/cpu/pxa/config.mk 1970-01-01 02:00:00.000000000 +0200
+@@ -1,28 +0,0 @@
+-#
+-# (C) Copyright 2002
+-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+-# Marius Groeger <mgroeger@sysgo.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
+-#
+-
+-PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8 \
+- -mshort-load-bytes -msoft-float
+-
+-PLATFORM_CPPFLAGS += -mapcs-32 -march=armv4 -mtune=strongarm1100
+diff -uNr u-boot-1.1.2/MAKEALL u-boot-emetec-1.1.2/MAKEALL
+--- u-boot-1.1.2/MAKEALL 2004-12-31 11:32:48.000000000 +0200
++++ u-boot-emetec-1.1.2/MAKEALL 2005-03-11 22:23:47.000000000 +0200
+@@ -69,7 +69,7 @@
+ ml300 OCOTEA OCRTC ORSG \
+ PCI405 PIP405 PLU405 PMC405 \
+ PPChameleonEVB VOH405 W7OLMC W7OLMG \
+- WALNUT405 WUH405 XPEDITE1K \
++ WALNUT405 WUH405 XPEDITE1K EMETEC405 \
+ "
+
+ #########################################################################
+diff -uNr u-boot-1.1.2/Makefile u-boot-emetec-1.1.2/Makefile
+--- u-boot-1.1.2/Makefile 2004-12-19 11:58:11.000000000 +0200
++++ u-boot-emetec-1.1.2/Makefile 2005-03-14 22:43:56.000000000 +0200
+@@ -54,7 +54,7 @@
+ CROSS_COMPILE =
+ else
+ ifeq ($(ARCH),ppc)
+-CROSS_COMPILE = ppc_8xx-
++CROSS_COMPILE = ppc_4xx-
+ endif
+ ifeq ($(ARCH),arm)
+ CROSS_COMPILE = arm-linux-
+@@ -127,7 +127,6 @@
+ # The "tools" are needed early, so put this first
+ # Don't include stuff already done in $(LIBS)
+ SUBDIRS = tools \
+- examples \
+ post \
+ post/cpu
+ .PHONY : $(SUBDIRS)
+@@ -838,6 +837,9 @@
+
+ VOM405_config: unconfig
+ @./mkconfig $(@:_config=) ppc ppc4xx vom405 esd
++
++EMETEC405_config: unconfig
++ @./mkconfig $(@:_config=) ppc ppc4xx emetec405
+
+ W7OLMC_config \
+ W7OLMG_config: unconfig
+diff -uNr u-boot-1.1.2/board/emetec405/Makefile u-boot-emetec-1.1.2/board/emetec405/Makefile
+--- u-boot-1.1.2/board/emetec405/Makefile 1970-01-01 02:00:00.000000000 +0200
++++ u-boot-emetec-1.1.2/board/emetec405/Makefile 2005-04-26 22:34:53.000000000 +0300
+@@ -0,0 +1,46 @@
++#
++# (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
++#
++
++include $(TOPDIR)/config.mk
++
++LIB = lib$(BOARD).a
++
++OBJS = $(BOARD).o flash.o
++
++$(LIB): $(OBJS) $(SOBJS)
++ $(AR) crv $@ $(OBJS)
++
++clean:
++ rm -f $(SOBJS) $(OBJS)
++
++distclean: clean
++ rm -f $(LIB) core *.bak .depend
++
++#########################################################################
++
++.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
++ $(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
++
++sinclude .depend
++
++#########################################################################
+diff -uNr u-boot-1.1.2/board/emetec405/config.mk u-boot-emetec-1.1.2/board/emetec405/config.mk
+--- u-boot-1.1.2/board/emetec405/config.mk 1970-01-01 02:00:00.000000000 +0200
++++ u-boot-emetec-1.1.2/board/emetec405/config.mk 2005-03-11 22:26:43.000000000 +0200
+@@ -0,0 +1,28 @@
++#
++# (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
++#
++
++#
++# emetec EMETEC405 boards
++#
++
++TEXT_BASE = 0xFFFC0000
+diff -uNr u-boot-1.1.2/board/emetec405/emetec405.c u-boot-emetec-1.1.2/board/emetec405/emetec405.c
+--- u-boot-1.1.2/board/emetec405/emetec405.c 1970-01-01 02:00:00.000000000 +0200
++++ u-boot-emetec-1.1.2/board/emetec405/emetec405.c 2005-04-26 23:02:01.000000000 +0300
+@@ -0,0 +1,106 @@
++/*
++ * (C) Copyright 2001-2003
++ * Stefan Roese, esd gmbh germany, stefan.roese@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
++ */
++
++#include <common.h>
++#include <asm/processor.h>
++#include <command.h>
++#include <malloc.h>
++
++
++int board_early_init_f (void)
++{
++ /*-------------------------------------------------------------------------+
++ | Interrupt controller setup for the Walnut board.
++ | Note: IRQ 0-15 405GP internally generated; active high; level sensitive
++ | IRQ 16 405GP internally generated; active low; level sensitive
++ | IRQ 17-24 RESERVED
++ | IRQ 25 (EXT IRQ 0) FPGA; active high; level sensitive
++ | IRQ 26 (EXT IRQ 1) SMI; active high; level sensitive
++ | IRQ 27 (EXT IRQ 2) Not Used
++ | IRQ 28 (EXT IRQ 3) PCI SLOT 3; active low; level sensitive
++ | IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
++ | IRQ 30 (EXT IRQ 5) PCI SLOT 1; active low; level sensitive
++ | IRQ 31 (EXT IRQ 6) PCI SLOT 0; active low; level sensitive
++ | Note for Walnut board:
++ | An interrupt taken for the FPGA (IRQ 25) indicates that either
++ | the Mouse, Keyboard, IRDA, or External Expansion caused the
++ | interrupt. The FPGA must be read to determine which device
++ | caused the interrupt. The default setting of the FPGA clears
++ |
++ +-------------------------------------------------------------------------*/
++
++ mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
++ mtdcr (uicer, 0x00000000); /* disable all ints */
++ mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
++ mtdcr (uicpr, 0xFFFFFFE0); /* set int polarities */
++ mtdcr (uictr, 0x10000000); /* set int trigger levels */
++ mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
++ mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
++
++ return 0;
++}
++
++
++int misc_init_f (void)
++{
++ return 0; /* dummy implementation */
++}
++
++
++int misc_init_r (void)
++{
++ return 0; /* dummy implementation */
++}
++
++
++/*
++ * Check Board Identity:
++ */
++int checkboard (void)
++{
++ unsigned char str[64];
++
++ puts ("Board: MAGICBOX\n");
++
++ return 0;
++}
++
++
++long int initdram (int board_type)
++{
++ unsigned long val;
++
++ mtdcr(memcfga, mem_mb0cf);
++ val = mfdcr(memcfgd);
++
++ return (4*1024*1024 << ((val & 0x000e0000) >> 17));
++}
++
++
++int testdram (void)
++{
++ printf ("test: 32 MB - ok\n");
++
++ return (0);
++}
++
+diff -uNr u-boot-1.1.2/board/emetec405/flash.c u-boot-emetec-1.1.2/board/emetec405/flash.c
+--- u-boot-1.1.2/board/emetec405/flash.c 1970-01-01 02:00:00.000000000 +0200
++++ u-boot-emetec-1.1.2/board/emetec405/flash.c 2005-05-25 10:14:13.000000000 +0300
+@@ -0,0 +1,544 @@
++/*
++ * (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
++ */
++#include <common.h>
++#include <ppc4xx.h>
++#include <asm/processor.h>
++
++flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
++
++/*-----------------------------------------------------------------------
++ * Functions
++ */
++static ulong flash_get_size (vu_long * addr, flash_info_t * info);
++static void flash_get_offsets (ulong base, flash_info_t * info);
++
++/*-----------------------------------------------------------------------
++ */
++unsigned long flash_init (void)
++{
++ unsigned long size_b0;
++ int i;
++ uint pbcr;
++ unsigned long base_b0;
++ int size_val = 0;
++
++ /* Init: no FLASHes known */
++ for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
++ flash_info[i].flash_id = FLASH_UNKNOWN;
++ }
++
++ /* Static FLASH Bank configuration here - FIXME XXX */
++
++ size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
++
++ if (flash_info[0].flash_id == FLASH_UNKNOWN) {
++ printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
++ size_b0, size_b0<<20);
++ }
++
++ /* Setup offsets */
++ flash_get_offsets (-size_b0, &flash_info[0]);
++
++ /* Re-do sizing to get full correct info */
++ mtdcr(ebccfga, pb0cr);
++ pbcr = mfdcr(ebccfgd);
++ mtdcr(ebccfga, pb0cr);
++ base_b0 = -size_b0;
++ switch (size_b0) {
++ case 1 << 20:
++ size_val = 0;
++ break;
++ case 2 << 20:
++ size_val = 1;
++ break;
++ case 4 << 20:
++ size_val = 2;
++ break;
++ case 8 << 20:
++ size_val = 3;
++ break;
++ case 16 << 20:
++ size_val = 4;
++ break;
++ }
++ pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
++ mtdcr(ebccfgd, pbcr);
++
++ /* Monitor protection ON by default */
++ (void)flash_protect(FLAG_PROTECT_SET,
++ -CFG_MONITOR_LEN,
++ 0xffffffff,
++ &flash_info[0]);
++
++ flash_info[0].size = size_b0;
++
++ return (size_b0);
++}
++
++/*-----------------------------------------------------------------------
++ */
++static void flash_get_offsets (ulong base, flash_info_t *info)
++{
++ int i;
++ short n;
++
++ base += info->size;
++ i = info->sector_count;
++
++ switch (info->flash_id & FLASH_TYPEMASK)
++ {
++ case FLASH_STMW320DT :
++ /* 1 x 16k boot sector */
++ base -= 16 << 10;
++ --i;
++ info->start[i] = base;
++ /* 2 x 8k boot sectors */
++ for (n=0; n<2; ++n) {
++ base -= 8 << 10;
++ --i;
++ info->start[i] = base;
++ }
++ /* 1 x 32k boot sector */
++ base -= 32 << 10;
++ --i;
++ info->start[i] = base;
++ break;
++
++ case FLASH_STMW640DT :
++ /* 8 x 8k boot sectors */
++ for (n=0; n<8; ++n) {
++ base -= 8 << 10;
++ --i;
++ info->start[i] = base;
++ }
++ break;
++ };
++ /* 64k regular sectors */
++ while (i > 0) {
++ base -= 64 << 10;
++ --i;
++ info->start[i] = base;
++ }
++}
++
++/*-----------------------------------------------------------------------
++ */
++static ulong flash_get_size (vu_long *addr, flash_info_t *info)
++{
++ short i;
++ short n;
++ CFG_FLASH_WORD_SIZE value;
++ ulong base = (ulong)addr;
++ volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *)addr;
++
++ /* Write auto select command: read Manufacturer ID */
++ addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
++ addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
++ addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00900090;
++
++ value = addr2[CFG_FLASH_READ0];
++
++ switch (value) {
++ 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;
++ default:
++ info->flash_id = FLASH_UNKNOWN;
++ info->sector_count = 0;
++ info->size = 0;
++ return (0);
++ }
++
++ value = addr2[CFG_FLASH_READ1]; /* device ID */
++
++ switch (value) {
++ case (CFG_FLASH_WORD_SIZE)STM_ID_29W320DT:
++ info->flash_id += FLASH_STMW320DT;
++ info->sector_count = 67;
++ info->size = 0x00400000;
++
++ /* set up sector start address table for FLASH_STMW320DT */
++ /* set sector offsets for top boot block type */
++ base += info->size;
++ i = info->sector_count;
++ /* 1 x 16k boot sector */
++ base -= 16 << 10;
++ --i;
++ info->start[i] = base;
++ /* 2 x 8k boot sectors */
++ for (n=0; n<2; ++n) {
++ base -= 8 << 10;
++ --i;
++ info->start[i] = base;
++ };
++ /* 1 x 32k boot sector */
++ base -= 32 << 10;
++ --i;
++ info->start[i] = base;
++
++ /* 64k regular sectors */
++ while (i > 0)
++ {
++ base -= 64 << 10;
++ --i;
++ info->start[i] = base;
++ };
++ break; /* => 4 MB */
++
++ case (CFG_FLASH_WORD_SIZE)STM_ID_29W640DT:
++ info->flash_id += FLASH_STMW640DT;
++ info->sector_count = 135;
++ info->size = 0x00800000;
++
++ /* set up sector start address table for FLASH_STMW640DT */
++ /* set sector offsets for top boot block type */
++ base += info->size;
++ i = info->sector_count;
++ /* 8 x 8k boot sectors */
++ for (n=0; n<8; ++n) {
++ base -= 8 << 10;
++ --i;
++ info->start[i] = base;
++ };
++
++ /* 64k regular sectors */
++ while (i > 0)
++ {
++ base -= 64 << 10;
++ --i;
++ info->start[i] = base;
++ };
++
++ break; /* => 8 MB */
++ default:
++ info->flash_id = FLASH_UNKNOWN;
++ return (0); /* => no or unknown flash */
++ }
++
++ /* check for protected sectors */
++ for (i = 0; i < info->sector_count; i++) {
++ /* read sector protection at sector address, (A7 .. A0) = 0x02 */
++ /* D0 = 1 if protected */
++ addr2 = (volatile CFG_FLASH_WORD_SIZE *)(info->start[i]);
++ if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST)
++ info->protect[i] = 0;
++ else
++ info->protect[i] = addr2[CFG_FLASH_READ2] & 1;
++ }
++
++ /*
++ * Prevent writes to uninitialized FLASH.
++ */
++ if (info->flash_id != FLASH_UNKNOWN) {
++ addr2 = (CFG_FLASH_WORD_SIZE *)info->start[0];
++ *addr2 = (CFG_FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
++ }
++
++ return (info->size);
++}
++
++/*-----------------------------------------------------------------------
++ */
++void flash_print_info (flash_info_t *info)
++{
++ int i;
++ int k;
++ int size;
++ int erased;
++ volatile unsigned long *flash;
++
++ switch (info->flash_id & FLASH_TYPEMASK)
++ {
++ case FLASH_STMW320DT :
++ printf ("ST M29W320DT (32 M, top sector)\n");
++ break;
++ case FLASH_STMW640DT :
++ printf ("ST M29W640DT (64 M, top sector)\n");
++ break;
++ default :
++ printf ("Missing or unknown FLASH type\n");
++ return;
++ };
++ printf (" Size: %ld MB in %d Sectors\n", info->size >> 20, info->sector_count);
++
++ printf (" Sector Start Addresses:");
++ for (i=0; i<info->sector_count; ++i) {
++ /*
++ * Check if whole sector is erased
++ */
++ if (i != (info->sector_count-1))
++ size = info->start[i+1] - info->start[i];
++ else
++ size = info->start[0] + info->size - info->start[i];
++ erased = 1;
++ flash = (volatile unsigned long *)info->start[i];
++ size = size >> 2; /* divide by 4 for longword access */
++ for (k=0; k<size; k++)
++ {
++ if (*flash++ != 0xffffffff)
++ {
++ erased = 0;
++ break;
++ }
++ }
++
++ if ((i % 5) == 0)
++ printf ("\n ");
++ printf (" %08lX%s%s",
++ info->start[i],
++ erased ? " E" : " ",
++ info->protect[i] ? "RO " : " "
++ );
++ }
++ printf ("\n");
++ return;
++}
++
++/*-----------------------------------------------------------------------
++ */
++
++int flash_erase (flash_info_t *info, int s_first, int s_last)
++{
++ volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *)(info->start[0]);
++ volatile CFG_FLASH_WORD_SIZE *addr2;
++ int flag, prot, sect, l_sect;
++ ulong start, now, last;
++ int i;
++
++ if ((s_first < 0) || (s_first > s_last)) {
++ if (info->flash_id == FLASH_UNKNOWN) {
++ printf ("- missing\n");
++ } else {
++ printf ("- no sectors to erase\n");
++ }
++ return 1;
++ }
++
++ if (info->flash_id == FLASH_UNKNOWN) {
++ printf ("Can't erase unknown flash type - aborted\n");
++ return 1;
++ }
++
++ prot = 0;
++ for (sect=s_first; sect<=s_last; ++sect) {
++ if (info->protect[sect]) {
++ prot++;
++ }
++ }
++
++ if (prot) {
++ printf ("- Warning: %d protected sectors will not be erased!\n",
++ prot);
++ } else {
++ printf ("\n");
++ }
++
++ l_sect = -1;
++
++ /* Disable interrupts which might cause a timeout here */
++ flag = disable_interrupts();
++
++ /* Start erase on unprotected sectors */
++ for (sect = s_first; sect<=s_last; sect++) {
++ if (info->protect[sect] == 0) { /* not protected */
++ addr2 = (CFG_FLASH_WORD_SIZE *)(info->start[sect]);
++ if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
++ addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
++ addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
++ addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00800080;
++ addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
++ addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
++ addr2[0] = (CFG_FLASH_WORD_SIZE)0x00500050; /* block erase */
++ for (i=0; i<50; i++)
++ udelay(1000); /* wait 1 ms */
++ } else {
++ if (sect == s_first) {
++ addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
++ addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
++ addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00800080;
++ addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
++ addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
++ }
++ addr2[0] = (CFG_FLASH_WORD_SIZE)0x00300030; /* sector erase */
++ }
++ l_sect = sect;
++ }
++ }
++
++ /* re-enable interrupts if necessary */
++ if (flag)
++ enable_interrupts();
++
++ /* wait at least 80us - let's wait 1 ms */
++ udelay (1000);
++
++ /*
++ * We wait for the last triggered sector
++ */
++ if (l_sect < 0)
++ goto DONE;
++
++ start = get_timer (0);
++ last = start;
++ addr = (CFG_FLASH_WORD_SIZE *)(info->start[l_sect]);
++ while ((addr[0] & (CFG_FLASH_WORD_SIZE)0x00800080) != (CFG_FLASH_WORD_SIZE)0x00800080) {
++ if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
++ printf ("Timeout\n");
++ return 1;
++ }
++ /* show that we're waiting */
++ if ((now - last) > 1000) { /* every second */
++ putc ('.');
++ last = now;
++ }
++ }
++
++DONE:
++ /* reset to read mode */
++ addr = (CFG_FLASH_WORD_SIZE *)info->start[0];
++ addr[0] = (CFG_FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
++
++ printf (" done\n");
++ return 0;
++}
++
++/*-----------------------------------------------------------------------
++ * Copy memory to flash, returns:
++ * 0 - OK
++ * 1 - write timeout
++ * 2 - Flash not erased
++ */
++
++int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
++{
++ ulong cp, wp, data;
++ int i, l, rc;
++
++ wp = (addr & ~3); /* get lower word aligned address */
++
++ /*
++ * handle unaligned start bytes
++ */
++ if ((l = addr - wp) != 0) {
++ data = 0;
++ for (i=0, cp=wp; i<l; ++i, ++cp) {
++ data = (data << 8) | (*(uchar *)cp);
++ }
++ for (; i<4 && cnt>0; ++i) {
++ data = (data << 8) | *src++;
++ --cnt;
++ ++cp;
++ }
++ for (; cnt==0 && i<4; ++i, ++cp) {
++ data = (data << 8) | (*(uchar *)cp);
++ }
++
++ if ((rc = write_word(info, wp, data)) != 0) {
++ return (rc);
++ }
++ wp += 4;
++ }
++
++ /*
++ * handle word aligned part
++ */
++ while (cnt >= 4) {
++ data = 0;
++ for (i=0; i<4; ++i) {
++ data = (data << 8) | *src++;
++ }
++ if ((rc = write_word(info, wp, data)) != 0) {
++ return (rc);
++ }
++ wp += 4;
++ cnt -= 4;
++ }
++
++ if (cnt == 0) {
++ return (0);
++ }
++
++ /*
++ * handle unaligned tail bytes
++ */
++ data = 0;
++ for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
++ data = (data << 8) | *src++;
++ --cnt;
++ }
++ for (; i<4; ++i, ++cp) {
++ data = (data << 8) | (*(uchar *)cp);
++ }
++
++ return (write_word(info, wp, data));
++}
++
++/*-----------------------------------------------------------------------
++ * Write a word to Flash, returns:
++ * 0 - OK
++ * 1 - write timeout
++ * 2 - Flash not erased
++ */
++static int write_word (flash_info_t *info, ulong dest, ulong data)
++{
++ volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *)(info->start[0]);
++ volatile CFG_FLASH_WORD_SIZE *dest2 = (CFG_FLASH_WORD_SIZE *)dest;
++ volatile CFG_FLASH_WORD_SIZE *data2 = (CFG_FLASH_WORD_SIZE *)&data;
++ ulong start;
++ int flag;
++ int i;
++
++ /* Check if Flash is (sufficiently) erased */
++ if ((*((volatile ulong *)dest) & data) != data) {
++ return (2);
++ }
++ /* Disable interrupts which might cause a timeout here */
++ flag = disable_interrupts();
++
++ for (i=0; i<4/sizeof(CFG_FLASH_WORD_SIZE); i++)
++ {
++ addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
++ addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
++ addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00A000A0;
++
++ dest2[i] = data2[i];
++
++ /* re-enable interrupts if necessary */
++ if (flag)
++ enable_interrupts();
++
++ /* data polling for D7 */
++ start = get_timer (0);
++ while ((dest2[i] & (CFG_FLASH_WORD_SIZE)0x00800080) !=
++ (data2[i] & (CFG_FLASH_WORD_SIZE)0x00800080)) {
++ if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
++ return (1);
++ }
++ }
++ }
++
++ return (0);
++}
+diff -uNr u-boot-1.1.2/board/emetec405/pllmr.c u-boot-emetec-1.1.2/board/emetec405/pllmr.c
+--- u-boot-1.1.2/board/emetec405/pllmr.c 1970-01-01 02:00:00.000000000 +0200
++++ u-boot-emetec-1.1.2/board/emetec405/pllmr.c 2005-03-14 22:32:04.000000000 +0200
+@@ -0,0 +1,19 @@
++#define PLL_CPUDIV_1 0x00000000
++#define PLL_PLBDIV_2 0x00010000
++#define PLL_OPBDIV_2 0x00001000
++#define PLL_EXTBUSDIV_3 0x00000100
++#define PLL_MALDIV_1 0x00000000
++#define PLL_PCIDIV_4 0x00000003
++
++#define PLL_FBKDIV_8 0x00800000
++#define PLL_FWDDIVA_4 0x00040000
++#define PLL_FWDDIVB_4 0x00004000
++#define PLL_TUNE_15_M_40 0x0000023E /* 14 < M <= 40 */
++#define PLL_TUNE_VCO_LOW 0x00000000 /* 500MHz <= VCO <= 800MHz */
++
++#define PLLMR0_200_100_50_25 (PLL_CPUDIV_1 | PLL_PLBDIV_2 | \
++ PLL_OPBDIV_2 | PLL_EXTBUSDIV_3 | \
++ PLL_MALDIV_1 | PLL_PCIDIV_4)
++#define PLLMR1_200_100_50_25 (PLL_FBKDIV_8 | \
++ PLL_FWDDIVA_4 | PLL_FWDDIVB_4 | \
++ PLL_TUNE_15_M_40 | PLL_TUNE_VCO_LOW)
+diff -uNr u-boot-1.1.2/board/emetec405/u-boot.lds u-boot-emetec-1.1.2/board/emetec405/u-boot.lds
+--- u-boot-1.1.2/board/emetec405/u-boot.lds 1970-01-01 02:00:00.000000000 +0200
++++ u-boot-emetec-1.1.2/board/emetec405/u-boot.lds 2003-09-12 11:41:39.000000000 +0300
+@@ -0,0 +1,147 @@
++/*
++ * (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
++ */
++
++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
++
++ /* 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)
++ 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)
++ cpu/ppc4xx/405gp_enet.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)
++ }
++ .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 -uNr u-boot-1.1.2/copy.sh u-boot-emetec-1.1.2/copy.sh
+--- u-boot-1.1.2/copy.sh 1970-01-01 02:00:00.000000000 +0200
++++ u-boot-emetec-1.1.2/copy.sh 2005-03-17 23:26:42.000000000 +0200
+@@ -0,0 +1,2 @@
++cp u-boot.bin /home/admin/uboot/uboot_v6.bin
++cp u-boot.srec /home/admin/uboot/uboot_v6.srec
+diff -uNr u-boot-1.1.2/cpu/ppc4xx/405gp_enet.c u-boot-emetec-1.1.2/cpu/ppc4xx/405gp_enet.c
+--- u-boot-1.1.2/cpu/ppc4xx/405gp_enet.c 2004-07-02 17:36:35.000000000 +0300
++++ u-boot-emetec-1.1.2/cpu/ppc4xx/405gp_enet.c 2005-05-06 18:07:02.000000000 +0300
+@@ -133,7 +133,7 @@
+ /*-----------------------------------------------------------------------------+
+ * Prototypes and externals.
+ *-----------------------------------------------------------------------------*/
+-static void enet_rcv (struct eth_device *dev, unsigned long malisr);
++static void enet_rcv (struct eth_device *dev, unsigned long malisr);
+
+ int enetInt (struct eth_device *dev);
+ static void mal_err (struct eth_device *dev, unsigned long isr,
+@@ -190,11 +190,15 @@
+ unsigned short reg_short;
+
+ EMAC_405_HW_PST hw_p = dev->priv;
++
++ puts ("Test 1\n");
+ /* before doing anything, figure out if we have a MAC address */
+ /* if not, bail */
+ if (memcmp (dev->enetaddr, "\0\0\0\0\0\0", 6) == 0)
+ return -1;
+
++ puts ("Test 2\n");
++
+ msr = mfmsr ();
+ mtmsr (msr & ~(MSR_EE)); /* disable interrupts */
+
+@@ -1023,6 +1027,8 @@
+ #else
+ emac0_dev = dev;
+ #endif
++ // print device name
++ printf("%s\n", dev->name);
+
+ } /* end for each supported device */
+
+diff -uNr u-boot-1.1.2/cpu/pxa/config.mk u-boot-emetec-1.1.2/cpu/pxa/config.mk
+--- u-boot-1.1.2/cpu/pxa/config.mk 2007-04-20 00:01:06.000000000 +0300
++++ u-boot-emetec-1.1.2/cpu/pxa/config.mk 2003-05-23 15:36:21.000000000 +0300
+@@ -23,6 +23,6 @@
+ #
+
+ PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8 \
+- -msoft-float
++ -mshort-load-bytes -msoft-float
+
+ PLATFORM_CPPFLAGS += -mapcs-32 -march=armv4 -mtune=strongarm1100
+diff -uNr u-boot-1.1.2/include/configs/EMETEC405.h u-boot-emetec-1.1.2/include/configs/EMETEC405.h
+--- u-boot-1.1.2/include/configs/EMETEC405.h 1970-01-01 02:00:00.000000000 +0200
++++ u-boot-emetec-1.1.2/include/configs/EMETEC405.h 2005-05-25 10:08:39.000000000 +0300
+@@ -0,0 +1,349 @@
++/*
++ * (C) Copyright 2001-2003
++ * Stefan Roese, esd gmbh germany, stefan.roese@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
++ */
++
++/*
++ * board/config.h - configuration options, board specific
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#define FLASH_8MB 1
++/*
++ * High Level Configuration Options
++ * (easy to change)
++ */
++
++#define CONFIG_405EP 1 /* This is a PPC405 CPU */
++#define CONFIG_4xx 1 /* ...member of PPC4xx family */
++#define CONFIG_EMETEC405 1 /* ...on a EMETEC405 board */
++
++#define CONFIG_BOARD_EARLY_INIT_F 1 /* call board_early_init_f() */
++#define CONFIG_MISC_INIT_R 1 /* call misc_init_r() */
++
++#define CONFIG_SYS_CLK_FREQ 25000000 /* external frequency to pll */
++
++#define CONFIG_BAUDRATE 115200
++#define CONFIG_BOOTDELAY 3 /* autoboot after 3 seconds */
++
++#undef CONFIG_BOOTARGS
++#undef CONFIG_BOOTCOMMAND
++#define CONFIG_EXTRA_ENV_SETTINGS \
++ "ramargs=setenv bootargs console=ttyS0,115200 " \
++ "root=/dev/ram rw\0" \
++ "flash_mem=run ramargs;" \
++ "bootm $(kernel_addr) $(ramdisk_addr)\0" \
++ "kernel_addr=ffC00000\0" \
++ "ramdisk_addr=ffCE0000\0" \
++ ""
++#define CONFIG_BOOTCOMMAND "run flash_mem"
++
++#define CFG_LOADS_BAUD_CHANGE 1 /* allow baudrate change */
++
++#define CONFIG_MII 1 /* MII PHY management */
++#define CONFIG_PHY_ADDR 0 /* PHY address */
++
++#define CONFIG_COMMANDS ( CONFIG_CMD_DFL | \
++ CFG_CMD_NET | \
++ CFG_CMD_DHCP | \
++ CFG_CMD_IRQ | \
++ CFG_CMD_ELF | \
++ CFG_CMD_I2C | \
++ CFG_CMD_PING | \
++ CFG_CMD_EEPROM )
++
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++#undef CONFIG_WATCHDOG /* watchdog disabled */
++
++#define CONFIG_SDRAM_BANK0 1 /* init onboard SDRAM bank 0 */
++
++/*
++ * Miscellaneous configurable options
++ */
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_PROMPT "=> " /* Monitor Command Prompt */
++
++#undef CFG_HUSH_PARSER /* use "hush" command parser */
++#ifdef CFG_HUSH_PARSER
++#define CFG_PROMPT_HUSH_PS2 "> "
++#endif
++
++#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_DEVICE_NULLDEV 1 /* include nulldev device */
++
++#define CFG_CONSOLE_INFO_QUIET 1 /* don't print console @ startup*/
++
++#define CFG_MEMTEST_START 0x0400000 /* memtest works on */
++#define CFG_MEMTEST_END 0x0C00000 /* 4 ... 12 MB in DRAM */
++
++#undef CFG_EXT_SERIAL_CLOCK /* no external serial clock used */
++#define CFG_IGNORE_405_UART_ERRATA_59 /* ignore ppc405gp errata #59 */
++#define CFG_BASE_BAUD 691200
++
++/* The following table includes the supported baudrates */
++#define CFG_BAUDRATE_TABLE \
++ { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, \
++ 57600, 115200, 230400, 460800, 921600 }
++
++#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_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */
++
++#define CONFIG_VERSION_VARIABLE 1 /* include version env variable */
++
++#define CFG_RX_ETH_BUFFER 16 /* use 16 rx buffer on 405 emac */
++
++/* Ethernet stuff */
++#define CONFIG_ENV_OVERWRITE /* Let the user to change the Ethernet MAC addresses */
++#define CONFIG_ETHADDR 00:50:C2:1E:AF:FE
++
++#define CONFIG_IPADDR 192.168.0.50
++#define CONFIG_NETMASK 255.255.255.0
++#define CONFIG_SERVERIP 192.168.0.1
++
++/*-----------------------------------------------------------------------
++ * PCI stuff
++ *-----------------------------------------------------------------------
++ */
++#define PCI_HOST_ADAPTER 0 // configure as 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 CFG_PCI_SUBSYS_VENDORID 0x0000 // PCI Vendor ID: IBM
++#define CFG_PCI_SUBSYS_DEVICEID 0x0000 // PCI Device ID: 405GP
++#define CFG_PCI_PTM1LA 0x00000000 // point to sdram
++#define CFG_PCI_PTM1MS 0x80000001 // 2GB, enable hard-wired to 1
++#define CFG_PCI_PTM1PCI 0x00000000 // Host: use this pci address
++#define CFG_PCI_PTM2LA 0x00000000 // disabled
++#define CFG_PCI_PTM2MS 0x00000000 // disabled
++#define CFG_PCI_PTM2PCI 0x00000000 // Host: use this pci address
++
++/*-----------------------------------------------------------------------
++ * Start addresses for the final memory configuration
++ * (Set up by the startup code)
++ * Please note that CFG_SDRAM_BASE _must_ start at 0
++ */
++
++/*
++ * Flash configuration (8,16 or 32 MB)
++ * TEXT base always at 0xFFF00000
++ * ENV_ADDR always at 0xFFF40000
++ * FLASH_BASE at 0xFE000000 for 32 MB
++ * 0xFF000000 for 16 MB
++ * 0xFF800000 for 8 MB
++ * 0xFFC00000 for 4 MB
++ */
++
++#define CFG_SDRAM_BASE 0x00000000
++#define CFG_FLASH_BASE 0xFFFC0000
++#define CFG_MONITOR_BASE CFG_FLASH_BASE
++#define CFG_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Monitor */
++#define CFG_MALLOC_LEN (256 * 1024) /* Reserve 256 kB for malloc() */
++
++/*
++ * 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 */
++/*-----------------------------------------------------------------------
++ * FLASH organization
++ */
++#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
++#define CFG_MAX_FLASH_SECT 256 /* max number of sectors on one chip */
++
++#define CFG_FLASH_ERASE_TOUT 120000 /* Timeout for Flash Erase (in ms) */
++#define CFG_FLASH_WRITE_TOUT 1000 /* Timeout for Flash Write (in ms) */
++
++#define CFG_FLASH_WORD_SIZE unsigned short /* flash word size (width) */
++#define CFG_FLASH_ADDR0 0x5555 /* 1st address for flash config cycles */
++#define CFG_FLASH_ADDR1 0x2AAA /* 2nd address for flash config cycles */
++/*
++ * The following defines are added for buggy IOP480 byte interface.
++ * All other boards should use the standard values (CPCI405 etc.)
++ */
++#define CFG_FLASH_READ0 0x0000 /* 0 is standard */
++#define CFG_FLASH_READ1 0x0001 /* 1 is standard */
++#define CFG_FLASH_READ2 0x0002 /* 2 is standard */
++
++#define CFG_FLASH_EMPTY_INFO /* print 'E' for empty sector on flinfo */
++
++/*
++#define CFG_ENV_IS_IN_FLASH 1
++//Address and size of Primary Environment Sector
++#define CFG_ENV_ADDR 0xFFFFA000
++#define CFG_ENV_SIZE 0x2000
++*/
++
++/*-----------------------------------------------------------------------
++ * Environment Variable setup
++ */
++#define CFG_ENV_IS_IN_EEPROM 1 // use EEPROM for environment vars
++#define CFG_ENV_OFFSET 0x100 // environment starts at the beginning of the EEPROM
++#define CFG_ENV_SIZE 0x700 // 2048 bytes may be used for env vars
++
++/*-----------------------------------------------------------------------
++ * I2C EEPROM (CAT24WC16) for environment
++ */
++#define CONFIG_HARD_I2C // I2c with hardware support
++#define CFG_I2C_SPEED 400000 // I2C speed and slave address
++#define CFG_I2C_SLAVE 0x7F
++
++#define CFG_I2C_EEPROM_ADDR 0x50 // EEPROM CAT28WC08
++#define CFG_I2C_EEPROM_ADDR_LEN 1 // Bytes of address
++
++#define CFG_I2C_EEPROM_ADDR_OVERFLOW 0x07
++#define CFG_EEPROM_PAGE_WRITE_BITS 4 // The Catalyst CAT24WC08 has
++ // 16 byte page write mode using
++ // last 4 bits of the address
++#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 10 // and takes up to 10 msec
++#define CFG_EEPROM_PAGE_WRITE_ENABLE
++
++/*-----------------------------------------------------------------------
++ * Cache Configuration
++ */
++#define CFG_DCACHE_SIZE 16384 /* For IBM 405 CPUs, older 405 ppc's */
++ /* have only 8kB, 16kB is save here */
++#define CFG_CACHELINE_SIZE 32 /* ... */
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */
++#endif
++
++/*
++ * Init Memory Controller:
++ *
++ * BR0/1 and OR0/1 (FLASH)
++ */
++
++#if FLASH_8MB == 1
++#define FLASH_BASE0_PRELIM 0xFF800000 /* FLASH bank #0 */
++#else
++#define FLASH_BASE0_PRELIM 0xFFC00000 /* FLASH bank #0 */
++#endif
++
++/*-----------------------------------------------------------------------
++ * External Bus Controller (EBC) Setup
++ */
++
++/* Memory Bank 0 (Flash Bank 0) initialization */
++#if FLASH_8MB == 1
++#define CFG_EBC_PB0AP 0x92015480
++#define CFG_EBC_PB0CR 0xFFC5B000 /* BAS=0xFFC,BS=8MB,BU=R/W,BW=16bit */
++#else
++#define CFG_EBC_PB0AP 0x92015480
++#define CFG_EBC_PB0CR 0xFFC5A000 /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
++#endif
++
++/*-----------------------------------------------------------------------
++ * Definitions for initial stack pointer and data area (in data cache)
++ */
++/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
++#define CFG_TEMP_STACK_OCM 1
++
++/* On Chip Memory location */
++#define CFG_OCM_DATA_ADDR 0xF8000000
++#define CFG_OCM_DATA_SIZE 0x1000
++#define CFG_INIT_RAM_ADDR CFG_OCM_DATA_ADDR /* inside of SDRAM */
++#define CFG_INIT_RAM_END CFG_OCM_DATA_SIZE /* End of used area in RAM */
++
++#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
++
++/*-----------------------------------------------------------------------
++ * Definitions for GPIO setup (PPC405EP specific)
++ *
++ * GPIO0[0] - External Bus Controller BLAST output
++ * GPIO0[1-9] - Instruction trace outputs -> GPIO
++ * GPIO0[10-13] - External Bus Controller CS_1 - CS_4 outputs
++ * GPIO0[14-16] - External Bus Controller ABUS3-ABUS5 outputs -> GPIO
++ * GPIO0[17-23] - External Interrupts IRQ0 - IRQ6 inputs
++ * GPIO0[24-27] - UART0 control signal inputs/outputs
++ * GPIO0[28-29] - UART1 data signal input/output
++ * GPIO0[30-31] - EMAC0 and EMAC1 reject packet inputs
++ */
++#define CFG_GPIO0_OSRH 0x40000550
++#define CFG_GPIO0_OSRL 0x00000110
++#define CFG_GPIO0_ISR1H 0x00000000
++#define CFG_GPIO0_ISR1L 0x15555445
++#define CFG_GPIO0_TSRH 0x00000000
++#define CFG_GPIO0_TSRL 0x00000000
++#define CFG_GPIO0_TCR 0xF7FE0014
++
++/*
++ * Internal Definitions
++ *
++ * Boot Flags
++ */
++#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
++#define BOOTFLAG_WARM 0x02 /* Software reboot */
++
++#define PLL_CPUDIV_1 0x00000000
++#define PLL_PLBDIV_2 0x00010000
++#define PLL_OPBDIV_2 0x00001000
++
++#define PLL_EXTBUSDIV_4 0x00000200
++
++#define PLL_MALDIV_1 0x00000000
++#define PLL_PCIDIV_2 0x00000001
++#define PLL_PCIDIV_4 0x00000003
++
++#define PLL_FBKDIV_8 0x00800000
++
++#define PLL_FWDDIVA_4 0x00040000
++#define PLL_FWDDIVB_4 0x00004000
++#define PLL_TUNE_15_M_40 0x0000023E /* 14 < M <= 40 */
++#define PLL_TUNE_VCO_LOW 0x00000000 /* 500MHz <= VCO <= 800MHz */
++
++#define PLLMR0_200_100_50_25 (PLL_CPUDIV_1 | PLL_PLBDIV_2 | \
++ PLL_OPBDIV_2 | PLL_EXTBUSDIV_4 | \
++ PLL_MALDIV_1 | PLL_PCIDIV_4)
++#define PLLMR1_200_100_50_25 (PLL_FBKDIV_8 | \
++ PLL_FWDDIVA_4 | PLL_FWDDIVB_4 | \
++ PLL_TUNE_15_M_40 | PLL_TUNE_VCO_LOW)
++/*
++ * Default speed selection (cpu_plb_opb_ebc) in mhz.
++ * This value will be set if iic boot eprom is disabled.
++ */
++#define PLLMR0_DEFAULT PLLMR0_200_100_50_25
++#define PLLMR1_DEFAULT PLLMR1_200_100_50_25
++
++#endif /* __CONFIG_H */
+diff -uNr u-boot-1.1.2/include/configs/EMETEC405.h.old u-boot-emetec-1.1.2/include/configs/EMETEC405.h.old
+--- u-boot-1.1.2/include/configs/EMETEC405.h.old 1970-01-01 02:00:00.000000000 +0200
++++ u-boot-emetec-1.1.2/include/configs/EMETEC405.h.old 2005-03-17 23:00:33.000000000 +0200
+@@ -0,0 +1,349 @@
++/*
++ * (C) Copyright 2001-2003
++ * Stefan Roese, esd gmbh germany, stefan.roese@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
++ */
++
++/*
++ * board/config.h - configuration options, board specific
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++/*
++ * High Level Configuration Options
++ * (easy to change)
++ */
++
++#define CONFIG_405EP 1 /* This is a PPC405 CPU */
++#define CONFIG_4xx 1 /* ...member of PPC4xx family */
++#define CONFIG_EMETEC405 1 /* ...on a EMETEC405 board */
++
++#define CONFIG_BOARD_EARLY_INIT_F 1 /* call board_early_init_f() */
++#define CONFIG_MISC_INIT_R 1 /* call misc_init_r() */
++
++#define CONFIG_SYS_CLK_FREQ 25000000 /* external frequency to pll */
++
++#define CONFIG_BAUDRATE 115200
++#define CONFIG_BOOTDELAY 3 /* autoboot after 3 seconds */
++
++#undef CONFIG_BOOTARGS
++#undef CONFIG_BOOTCOMMAND
++
++#define CONFIG_PREBOOT /* enable preboot variable */
++
++#define CFG_LOADS_BAUD_CHANGE 1 /* allow baudrate change */
++
++#define CONFIG_MII 1 /* MII PHY management */
++#define CONFIG_PHY_ADDR 0 /* PHY address */
++#define CONFIG_LXT971_NO_SLEEP 1 /* disable sleep mode in LXT971 */
++
++/*
++#define CONFIG_PHY_CLK_FREQ EMAC_STACR_CLK_66MHZ // 66 MHz OPB clock
++*/
++
++#define CONFIG_COMMANDS ( CONFIG_CMD_DFL | \
++ CFG_CMD_DHCP | \
++ CFG_CMD_IRQ | \
++ CFG_CMD_ELF | \
++ CFG_CMD_I2C | \
++ CFG_CMD_MII | \
++ CFG_CMD_PING | \
++ CFG_CMD_EEPROM )
++
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++#undef CONFIG_WATCHDOG /* watchdog disabled */
++
++#define CONFIG_SDRAM_BANK0 1 /* init onboard SDRAM bank 0 */
++
++/*
++ * Miscellaneous configurable options
++ */
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_PROMPT "=> " /* Monitor Command Prompt */
++
++#undef CFG_HUSH_PARSER /* use "hush" command parser */
++#ifdef CFG_HUSH_PARSER
++#define CFG_PROMPT_HUSH_PS2 "> "
++#endif
++
++#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_DEVICE_NULLDEV 1 /* include nulldev device */
++
++#define CFG_CONSOLE_INFO_QUIET 1 /* don't print console @ startup*/
++
++#define CFG_MEMTEST_START 0x0400000 /* memtest works on */
++#define CFG_MEMTEST_END 0x0C00000 /* 4 ... 12 MB in DRAM */
++
++#undef CFG_EXT_SERIAL_CLOCK /* no external serial clock used */
++#define CFG_IGNORE_405_UART_ERRATA_59 /* ignore ppc405gp errata #59 */
++#define CFG_BASE_BAUD 691200
++#undef CONFIG_UART1_CONSOLE /* define for uart1 as console */
++
++/* The following table includes the supported baudrates */
++#define CFG_BAUDRATE_TABLE \
++ { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, \
++ 57600, 115200, 230400, 460800, 921600 }
++
++#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_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */
++
++#define CONFIG_VERSION_VARIABLE 1 /* include version env variable */
++
++#define CFG_RX_ETH_BUFFER 16 /* use 16 rx buffer on 405 emac */
++
++/* Ethernet stuff */
++#define CONFIG_ENV_OVERWRITE /* Let the user to change the Ethernet MAC addresses */
++#define CONFIG_ETHADDR 00:50:C2:1E:AF:FE
++#define CONFIG_HAS_ETH1
++#define CONFIG_ETH1ADDR 00:50:C2:1E:AF:FD
++
++#define CONFIG_IPADDR 192.168.0.50
++#define CONFIG_IP1ADDR 192.168.0.51
++#define CONFIG_NETMASK 255.255.255.0
++#define CONFIG_SERVERIP 192.168.0.1
++
++/*-----------------------------------------------------------------------
++ * PCI stuff
++ *-----------------------------------------------------------------------
++ */
++#define PCI_HOST_ADAPTER 0 /* configure as pci adapter */
++#define PCI_HOST_FORCE 1 /* configure as pci host */
++#define PCI_HOST_AUTO 2 /* detected via arbiter enable */
++
++#undef CONFIG_PCI /* include pci support */
++#define CONFIG_PCI_HOST PCI_HOST_HOST /* select pci host function */
++#undef CONFIG_PCI_PNP /* do pci plug-and-play */
++ /* resource configuration */
++
++#undef CONFIG_PCI_SCAN_SHOW /* print pci devices @ startup */
++
++#define CFG_PCI_SUBSYS_VENDORID 0x12FE /* PCI Vendor ID: esd gmbh */
++#define CFG_PCI_SUBSYS_DEVICEID 0x0405 /* PCI Device ID: CPCI-405 */
++#define CFG_PCI_CLASSCODE 0x0b20 /* PCI Class Code: Processor/PPC*/
++#define CFG_PCI_PTM1LA 0x00000000 /* point to sdram */
++#define CFG_PCI_PTM1MS 0xfc000001 /* 64MB, enable hard-wired to 1 */
++#define CFG_PCI_PTM1PCI 0x00000000 /* Host: use this pci address */
++#define CFG_PCI_PTM2LA 0xffc00000 /* point to flash */
++#define CFG_PCI_PTM2MS 0xffc00001 /* 4MB, enable */
++#define CFG_PCI_PTM2PCI 0x04000000 /* Host: use this pci address */
++
++/*-----------------------------------------------------------------------
++ * Start addresses for the final memory configuration
++ * (Set up by the startup code)
++ * Please note that CFG_SDRAM_BASE _must_ start at 0
++ */
++#define CFG_SDRAM_BASE 0x00000000
++#define CFG_FLASH_BASE 0xFFFC0000
++#define CFG_MONITOR_BASE CFG_FLASH_BASE
++#define CFG_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Monitor */
++#define CFG_MALLOC_LEN (256 * 1024) /* Reserve 256 kB for malloc() */
++
++/*
++ * 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 */
++/*-----------------------------------------------------------------------
++ * FLASH organization
++ */
++#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
++#define CFG_MAX_FLASH_SECT 256 /* max number of sectors on one chip */
++
++#define CFG_FLASH_ERASE_TOUT 120000 /* Timeout for Flash Erase (in ms) */
++#define CFG_FLASH_WRITE_TOUT 1000 /* Timeout for Flash Write (in ms) */
++
++#define CFG_FLASH_WORD_SIZE unsigned short /* flash word size (width) */
++#define CFG_FLASH_ADDR0 0x5555 /* 1st address for flash config cycles */
++#define CFG_FLASH_ADDR1 0x2AAA /* 2nd address for flash config cycles */
++/*
++ * The following defines are added for buggy IOP480 byte interface.
++ * All other boards should use the standard values (CPCI405 etc.)
++ */
++#define CFG_FLASH_READ0 0x0000 /* 0 is standard */
++#define CFG_FLASH_READ1 0x0001 /* 1 is standard */
++#define CFG_FLASH_READ2 0x0002 /* 2 is standard */
++
++#define CFG_FLASH_EMPTY_INFO /* print 'E' for empty sector on flinfo */
++
++#if 0 /* test-only */
++#define CFG_JFFS2_FIRST_BANK 0 /* use for JFFS2 */
++#define CFG_JFFS2_NUM_BANKS 1 /* ! second bank contains U-Boot */
++#endif
++
++/*-----------------------------------------------------------------------
++ * Environment Variable setup
++ */
++#define CFG_ENV_IS_IN_EEPROM 1 /* use EEPROM for environment vars */
++#define CFG_ENV_OFFSET 0x100 /* environment starts at the beginning of the EEPROM */
++#define CFG_ENV_SIZE 0x700 /* 2048 bytes may be used for env vars*/
++ /* total size of a CAT24WC16 is 2048 bytes */
++
++#define CFG_NVRAM_BASE_ADDR 0xF0000500 /* NVRAM base address */
++#define CFG_NVRAM_SIZE 242 /* NVRAM size */
++
++/*-----------------------------------------------------------------------
++ * I2C EEPROM (CAT24WC16) for environment
++ */
++#define CONFIG_HARD_I2C /* I2c with hardware support */
++#define CFG_I2C_SPEED 400000 /* I2C speed and slave address */
++#define CFG_I2C_SLAVE 0x7F
++
++#define CFG_I2C_EEPROM_ADDR 0x50 /* EEPROM CAT28WC08 */
++#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 4 /* The Catalyst CAT24WC08 has */
++ /* 16 byte page write mode using*/
++ /* last 4 bits of the address */
++#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 10 /* and takes up to 10 msec */
++#define CFG_EEPROM_PAGE_WRITE_ENABLE
++
++/*-----------------------------------------------------------------------
++ * Cache Configuration
++ */
++#define CFG_DCACHE_SIZE 16384 /* For IBM 405 CPUs, older 405 ppc's */
++ /* have only 8kB, 16kB is save here */
++#define CFG_CACHELINE_SIZE 32 /* ... */
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */
++#endif
++
++/*
++ * Init Memory Controller:
++ *
++ * BR0/1 and OR0/1 (FLASH)
++ */
++
++#define FLASH_BASE0_PRELIM 0xFFC00000 /* FLASH bank #0 */
++
++/*-----------------------------------------------------------------------
++ * External Bus Controller (EBC) Setup
++ */
++
++/* Memory Bank 0 (Flash Bank 0, NOR-FLASH) initialization */
++#define CFG_EBC_PB0AP 0x92015480
++#define CFG_EBC_PB0CR 0xFFC5A000 /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
++
++#define DUART0_BA 0xF0000000 /* DUART Base Address */
++#define DUART1_BA 0xF0000008 /* DUART Base Address */
++#define DUART2_BA 0xF0000010 /* DUART Base Address */
++#define DUART3_BA 0xF0000018 /* DUART Base Address */
++
++/*-----------------------------------------------------------------------
++ * FPGA stuff
++ */
++#define CFG_FPGA_SPARTAN2 1 /* using Xilinx Spartan 2 now */
++#define CFG_FPGA_MAX_SIZE 128*1024 /* 128kByte is enough for XC2S50E*/
++
++/* FPGA program pin configuration */
++#define CFG_FPGA_PRG 0x04000000 /* FPGA program pin (ppc output) */
++#define CFG_FPGA_CLK 0x02000000 /* FPGA clk pin (ppc output) */
++#define CFG_FPGA_DATA 0x01000000 /* FPGA data pin (ppc output) */
++#define CFG_FPGA_INIT 0x00010000 /* FPGA init pin (ppc input) */
++#define CFG_FPGA_DONE 0x00008000 /* FPGA done pin (ppc input) */
++
++/*-----------------------------------------------------------------------
++ * Definitions for initial stack pointer and data area (in data cache)
++ */
++/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
++#define CFG_TEMP_STACK_OCM 1
++
++/* On Chip Memory location */
++#define CFG_OCM_DATA_ADDR 0xF8000000
++#define CFG_OCM_DATA_SIZE 0x1000
++#define CFG_INIT_RAM_ADDR CFG_OCM_DATA_ADDR /* inside of SDRAM */
++#define CFG_INIT_RAM_END CFG_OCM_DATA_SIZE /* End of used area in RAM */
++
++#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
++
++/*-----------------------------------------------------------------------
++ * Definitions for GPIO setup (PPC405EP specific)
++ *
++ * GPIO0[0] - External Bus Controller BLAST output
++ * GPIO0[1-9] - Instruction trace outputs -> GPIO
++ * GPIO0[10-13] - External Bus Controller CS_1 - CS_4 outputs
++ * GPIO0[14-16] - External Bus Controller ABUS3-ABUS5 outputs -> GPIO
++ * GPIO0[17-23] - External Interrupts IRQ0 - IRQ6 inputs
++ * GPIO0[24-27] - UART0 control signal inputs/outputs
++ * GPIO0[28-29] - UART1 data signal input/output
++ * GPIO0[30-31] - EMAC0 and EMAC1 reject packet inputs
++ */
++#define CFG_GPIO0_OSRH 0x40000550
++#define CFG_GPIO0_OSRL 0x00000110
++#define CFG_GPIO0_ISR1H 0x00000000
++#define CFG_GPIO0_ISR1L 0x15555445
++#define CFG_GPIO0_TSRH 0x00000000
++#define CFG_GPIO0_TSRL 0x00000000
++#define CFG_GPIO0_TCR 0xF7FE0014
++
++/*
++ * Internal Definitions
++ *
++ * Boot Flags
++ */
++#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
++#define BOOTFLAG_WARM 0x02 /* Software reboot */
++
++#define PLL_CPUDIV_1 0x00000000
++#define PLL_PLBDIV_2 0x00010000
++#define PLL_OPBDIV_2 0x00001000
++#define PLL_EXTBUSDIV_3 0x00000100
++#define PLL_MALDIV_1 0x00000000
++#define PLL_PCIDIV_4 0x00000003
++
++#define PLL_FBKDIV_8 0x00800000
++#define PLL_FWDDIVA_4 0x00040000
++#define PLL_FWDDIVB_4 0x00004000
++#define PLL_TUNE_15_M_40 0x0000023E /* 14 < M <= 40 */
++#define PLL_TUNE_VCO_LOW 0x00000000 /* 500MHz <= VCO <= 800MHz */
++
++#define PLLMR0_200_100_50_25 (PLL_CPUDIV_1 | PLL_PLBDIV_2 | \
++ PLL_OPBDIV_2 | PLL_EXTBUSDIV_3 | \
++ PLL_MALDIV_1 | PLL_PCIDIV_4)
++#define PLLMR1_200_100_50_25 (PLL_FBKDIV_8 | \
++ PLL_FWDDIVA_4 | PLL_FWDDIVB_4 | \
++ PLL_TUNE_15_M_40 | PLL_TUNE_VCO_LOW)
++/*
++ * Default speed selection (cpu_plb_opb_ebc) in mhz.
++ * This value will be set if iic boot eprom is disabled.
++ */
++#define PLLMR0_DEFAULT PLLMR0_200_100_50_25
++#define PLLMR1_DEFAULT PLLMR1_200_100_50_25
++
++#endif /* __CONFIG_H */
+diff -uNr u-boot-1.1.2/include/configs/HUB405.h u-boot-emetec-1.1.2/include/configs/HUB405.h
+--- u-boot-1.1.2/include/configs/HUB405.h 2004-12-31 11:32:53.000000000 +0200
++++ u-boot-emetec-1.1.2/include/configs/HUB405.h 2005-03-11 22:19:12.000000000 +0200
+@@ -35,7 +35,7 @@
+
+ #define CONFIG_405EP 1 /* This is a PPC405 CPU */
+ #define CONFIG_4xx 1 /* ...member of PPC4xx family */
+-#define CONFIG_HUB405 1 /* ...on a HUB405 board */
++#define CONFIG_EMETEC405 1 /* ...on a EMETEC405 board */
+
+ #define CONFIG_BOARD_EARLY_INIT_F 1 /* call board_early_init_f() */
+ #define CONFIG_MISC_INIT_R 1 /* call misc_init_r() */
+diff -uNr u-boot-1.1.2/include/flash.h u-boot-emetec-1.1.2/include/flash.h
+--- u-boot-1.1.2/include/flash.h 2004-12-16 20:01:48.000000000 +0200
++++ u-boot-emetec-1.1.2/include/flash.h 2005-05-25 10:04:56.000000000 +0300
+@@ -229,7 +229,11 @@
+
+ #define STM_ID_x800AB 0x005B005B /* M29W800AB ID (8M = 512K x 16 ) */
+ #define STM_ID_29W320DT 0x22CA22CA /* M29W320DT ID (32 M, top boot sector) */
+-#define STM_ID_29W320DB 0x22CB22CB /* M29W320DB ID (32 M, bottom boot sect) */
++#define STM_ID_29W320DB 0x22CB22CB /* M29W320DB ID (32 M, bottom boot sect)*/
++
++#define STM_ID_29W640DT 0x22DE22DE /* M29W640DT ID (64 M, top boot sector) */
++#define STM_ID_29W640DB 0x22DF22DF /* M29W640DB ID (64 M, bottom boot sect)*/
++
+ #define STM_ID_29W040B 0x00E300E3 /* M29W040B ID (4M = 512K x 8) */
+
+ #define INTEL_ID_28F016S 0x66a066a0 /* 28F016S[VS] ID (16M = 512k x 16) */
+@@ -328,6 +332,8 @@
+ #define FLASH_STM800AB 0x0051 /* STM M29WF800AB ( 8M = 512K x 16 ) */
+ #define FLASH_STMW320DT 0x0052 /* STM M29W320DT (32 M, top boot sector) */
+ #define FLASH_STMW320DB 0x0053 /* STM M29W320DB (32 M, bottom boot sect)*/
++#define FLASH_STMW640DT 0x0054 /* STM M29W640DT (64 M, top boot sector) */
++#define FLASH_STMW640DB 0x0055 /* STM M29W640DB (64 M, bottom boot sect)*/
+ #define FLASH_STM320DB 0x00CB /* STM M29W320DB (4M = 64K x 64, bottom)*/
+ #define FLASH_STM800DT 0x00D7 /* STM M29W800DT (1M = 64K x 16, top) */
+ #define FLASH_STM800DB 0x005B /* STM M29W800DB (1M = 64K x 16, bottom)*/
+diff -uNr u-boot-1.1.2/include/net.h u-boot-emetec-1.1.2/include/net.h
+--- u-boot-1.1.2/include/net.h 2004-10-10 00:56:21.000000000 +0300
++++ u-boot-emetec-1.1.2/include/net.h 2005-04-27 23:16:40.000000000 +0300
+@@ -331,9 +331,9 @@
+ #define NETLOOP_SUCCESS 3
+ #define NETLOOP_FAIL 4
+
+-#ifdef CONFIG_NET_MULTI
++/* #ifdef CONFIG_NET_MULTI */
+ extern int NetRestartWrap; /* Tried all network devices */
+-#endif
++/* #endif */
+
+ typedef enum { BOOTP, RARP, ARP, TFTP, DHCP, PING, DNS, NFS, CDP, NETCONS } proto_t;
+
+diff -uNr u-boot-1.1.2/lib_ppc/board.c u-boot-emetec-1.1.2/lib_ppc/board.c
+--- u-boot-1.1.2/lib_ppc/board.c 2004-12-31 11:32:54.000000000 +0200
++++ u-boot-emetec-1.1.2/lib_ppc/board.c 2005-04-27 23:03:33.000000000 +0300
+@@ -970,7 +970,8 @@
+ nand_init(); /* go init the NAND */
+ #endif
+
+-#if (CONFIG_COMMANDS & CFG_CMD_NET) && defined(CONFIG_NET_MULTI)
++
++#if (CONFIG_COMMANDS & CFG_CMD_NET) /* && defined(CONFIG_NET_MULTI) */
+ WATCHDOG_RESET ();
+ puts ("Net: ");
+ eth_initialize (bd);
+diff -uNr u-boot-1.1.2/loadftp.sh u-boot-emetec-1.1.2/loadftp.sh
+--- u-boot-1.1.2/loadftp.sh 1970-01-01 02:00:00.000000000 +0200
++++ u-boot-emetec-1.1.2/loadftp.sh 2005-04-25 21:30:54.000000000 +0300
+@@ -0,0 +1 @@
++cp u-boot.bin /home/ftp/uboot.bin
+diff -uNr u-boot-1.1.2/loadwww.sh u-boot-emetec-1.1.2/loadwww.sh
+--- u-boot-1.1.2/loadwww.sh 1970-01-01 02:00:00.000000000 +0200
++++ u-boot-emetec-1.1.2/loadwww.sh 2005-03-12 13:06:19.000000000 +0200
+@@ -0,0 +1,2 @@
++#!/bin/bash
++rsync -vzr --rsh='ssh -l admin -p 5522' /home/admin/uboot/ admin@mhaber.net:/home/admin/uboot
+diff -uNr u-boot-1.1.2/net/eth.c u-boot-emetec-1.1.2/net/eth.c
+--- u-boot-1.1.2/net/eth.c 2004-12-16 19:49:38.000000000 +0200
++++ u-boot-emetec-1.1.2/net/eth.c 2005-05-06 18:04:08.000000000 +0300
+@@ -25,7 +25,7 @@
+ #include <command.h>
+ #include <net.h>
+
+-#if (CONFIG_COMMANDS & CFG_CMD_NET) && defined(CONFIG_NET_MULTI)
++#if (CONFIG_COMMANDS & CFG_CMD_NET) /* && defined(CONFIG_NET_MULTI) */
+
+ #ifdef CFG_GT_6426x
+ extern int gt6426x_eth_initialize(bd_t *bis);
+@@ -126,10 +126,13 @@
+ #ifdef CONFIG_DB64460
+ mv6446x_eth_initialize(bis);
+ #endif
++
+ #if defined(CONFIG_405GP) || defined(CONFIG_405EP) || \
+ ( defined(CONFIG_440) && !defined(CONFIG_NET_MULTI) )
+ ppc_4xx_eth_initialize(bis);
++ eth_number=1;
+ #endif
++
+ #if defined(CONFIG_440) && defined(CONFIG_NET_MULTI)
+ ppc_440x_eth_initialize(bis);
+ #endif
+@@ -197,6 +200,7 @@
+ rtl8169_initialize(bis);
+ #endif
+
++#if defined(CONFIG_NET_MULTI)
+ if (!eth_devices) {
+ puts ("No ethernet found.\n");
+ } else {
+@@ -248,7 +252,6 @@
+ dev = dev->next;
+ } while(dev != eth_devices);
+
+-#ifdef CONFIG_NET_MULTI
+ /* update current ethernet name */
+ if (eth_current) {
+ char *act = getenv("ethact");
+@@ -256,14 +259,14 @@
+ setenv("ethact", eth_current->name);
+ } else
+ setenv("ethact", NULL);
+-#endif
+-
+ putc ('\n');
+ }
++#endif
+
+ return eth_number;
+ }
+
++#ifdef CONFIG_NET_MULTI
+ void eth_set_enetaddr(int num, char *addr) {
+ struct eth_device *dev;
+ unsigned char enetaddr[6];
+@@ -362,21 +365,20 @@
+
+ eth_current = eth_current->next;
+
+-#ifdef CONFIG_NET_MULTI
++//#ifdef CONFIG_NET_MULTI
+ /* update current ethernet name */
+ {
+ char *act = getenv("ethact");
+ if (act == NULL || strcmp(act, eth_current->name) != 0)
+ setenv("ethact", eth_current->name);
+ }
+-#endif
++//#endif
+
+ if (first_failed == eth_current) {
+ NetRestartWrap = 1;
+ }
+ }
+
+-#ifdef CONFIG_NET_MULTI
+ void eth_set_current(void)
+ {
+ char *act;
+@@ -397,10 +399,11 @@
+
+ setenv("ethact", eth_current->name);
+ }
+-#endif
+
+ char *eth_get_name (void)
+ {
+ return (eth_current ? eth_current->name : "unknown");
+ }
+ #endif
++
++#endif
+diff -uNr u-boot-1.1.2/net/net.c u-boot-emetec-1.1.2/net/net.c
+--- u-boot-1.1.2/net/net.c 2004-10-12 01:51:14.000000000 +0300
++++ u-boot-emetec-1.1.2/net/net.c 2005-04-27 23:34:20.000000000 +0300
+@@ -126,11 +126,11 @@
+ { 0x01, 0x00, 0x0c, 0xcc, 0xcc, 0xcc };
+ #endif
+ int NetState; /* Network loop state */
+-#ifdef CONFIG_NET_MULTI
++/* #ifdef CONFIG_NET_MULTI */
+ int NetRestartWrap = 0; /* Tried all network devices */
+ static int NetRestarted = 0; /* Network loop restarted */
+ static int NetDevExists = 0; /* At least one device configured */
+-#endif
++/* #endif */
+
+ /* XXX in both little & big endian machines 0xFFFF == ntohs(-1) */
+ ushort NetOurVLAN = 0xFFFF; /* default is without VLAN */
+diff -uNr u-boot-1.1.2/patches/arm_flags.patch u-boot-emetec-1.1.2/patches/arm_flags.patch
+--- u-boot-1.1.2/patches/arm_flags.patch 2007-04-20 00:01:06.000000000 +0300
++++ u-boot-emetec-1.1.2/patches/arm_flags.patch 1970-01-01 02:00:00.000000000 +0200
+@@ -1,15 +0,0 @@
+-
+-#
+-# Patch managed by http://www.holgerschurig.de/patcher.html
+-#
+-
+---- u-boot-1.1.2/cpu/pxa/config.mk~armflags
+-+++ u-boot-1.1.2/cpu/pxa/config.mk
+-@@ -23,6 +23,6 @@
+- #
+-
+- PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8 \
+-- -mshort-load-bytes -msoft-float
+-+ -msoft-float
+-
+- PLATFORM_CPPFLAGS += -mapcs-32 -march=armv4 -mtune=strongarm1100
+diff -uNr u-boot-1.1.2/patches/series u-boot-emetec-1.1.2/patches/series
+--- u-boot-1.1.2/patches/series 2007-04-20 00:01:06.000000000 +0300
++++ u-boot-emetec-1.1.2/patches/series 1970-01-01 02:00:00.000000000 +0200
+@@ -1 +0,0 @@
+-arm_flags.patch -p1
+diff -uNr u-boot-1.1.2/lib_ppc/board.c new-uboot-1.1.2/lib_ppc/board.c
+--- u-boot-1.1.2/lib_ppc/board.c 2005-04-27 23:03:33.000000000 +0300
++++ new-uboot-1.1.2/lib_ppc/board.c 2007-04-20 00:55:16.000000000 +0300
+@@ -347,6 +347,7 @@
+
+ bd_t *bd;
+ ulong len, addr, addr_sp;
++ ulong *s;
+ gd_t *id;
+ init_fnc_t **init_fnc_ptr;
+ #ifdef CONFIG_PRAM
+@@ -466,8 +467,10 @@
+ */
+ addr_sp -= 16;
+ addr_sp &= ~0xF;
+- *((ulong *) addr_sp)-- = 0;
+- *((ulong *) addr_sp)-- = 0;
++ s = (ulong *)addr_sp;
++ *s-- = 0;
++ *s-- = 0;
++ addr_sp = (ulong)s;
+ debug ("Stack Pointer at: %08lx\n", addr_sp);
+
+ /*
+diff -uNr u-boot-1.1.2/net/net.c new-uboot-1.1.2/net/net.c
+--- u-boot-1.1.2/net/net.c 2005-04-27 23:34:20.000000000 +0300
++++ new-uboot-1.1.2/net/net.c 2007-04-20 01:00:26.000000000 +0300
+@@ -1491,14 +1491,17 @@
+ unsigned
+ NetCksum(uchar * ptr, int len)
+ {
+- ulong xsum;
+
+- xsum = 0;
+- while (len-- > 0)
+- xsum += *((ushort *)ptr)++;
+- xsum = (xsum & 0xffff) + (xsum >> 16);
+- xsum = (xsum & 0xffff) + (xsum >> 16);
+- return (xsum & 0xffff);
++ ulong xsum;
++ ushort *p = (ushort *)ptr;
++
++ xsum = 0;
++ while (len-- > 0)
++ xsum += *p++;
++ xsum = (xsum & 0xffff) + (xsum >> 16);
++ xsum = (xsum & 0xffff) + (xsum >> 16);
++ return (xsum & 0xffff);
++
+ }
+
+ int
+diff -uNr u-boot-1.1.2/net/tftp.c new-uboot-1.1.2/net/tftp.c
+--- u-boot-1.1.2/net/tftp.c 2004-04-16 00:48:55.000000000 +0300
++++ new-uboot-1.1.2/net/tftp.c 2005-12-16 18:39:27.000000000 +0200
+@@ -58,7 +58,7 @@
+ static char *tftp_filename;
+
+ #ifdef CFG_DIRECT_FLASH_TFTP
+-extern flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
++extern flash_info_t flash_info[];
+ #endif
+
+ static __inline__ void
+@@ -78,7 +78,7 @@
+ }
+
+ if (rc) { /* Flash is destination for this packet */
+- rc = flash_write ((uchar *)src, (ulong)(load_addr+offset), len);
++ rc = flash_write ((char *)src, (ulong)(load_addr+offset), len);
+ if (rc) {
+ flash_perror (rc);
+ NetState = NETLOOP_FAIL;
+@@ -106,6 +106,7 @@
+ volatile uchar * pkt;
+ volatile uchar * xp;
+ int len = 0;
++ volatile ushort *s;
+
+ /*
+ * We will always be sending some sort of packet, so
+@@ -117,7 +118,9 @@
+
+ case STATE_RRQ:
+ xp = pkt;
+- *((ushort *)pkt)++ = htons(TFTP_RRQ);
++ s = (ushort *)pkt;
++ *s++ = htons(TFTP_RRQ);
++ pkt = (uchar *)s;
+ strcpy ((char *)pkt, tftp_filename);
+ pkt += strlen(tftp_filename) + 1;
+ strcpy ((char *)pkt, "octet");
+@@ -135,15 +138,19 @@
+ case STATE_DATA:
+ case STATE_OACK:
+ xp = pkt;
+- *((ushort *)pkt)++ = htons(TFTP_ACK);
+- *((ushort *)pkt)++ = htons(TftpBlock);
++ s = (ushort *)pkt;
++ *s++ = htons(TFTP_ACK);
++ *s++ = htons(TftpBlock);
++ pkt = (uchar *)s;
+ len = pkt - xp;
+ break;
+
+ case STATE_TOO_LARGE:
+ xp = pkt;
+- *((ushort *)pkt)++ = htons(TFTP_ERROR);
+- *((ushort *)pkt)++ = htons(3);
++ s = (ushort *)pkt;
++ *s++ = htons(TFTP_ERROR);
++ *s++ = htons(3);
++ pkt = (uchar *)s;
+ strcpy ((char *)pkt, "File too large");
+ pkt += 14 /*strlen("File too large")*/ + 1;
+ len = pkt - xp;
+@@ -151,8 +158,10 @@
+
+ case STATE_BAD_MAGIC:
+ xp = pkt;
+- *((ushort *)pkt)++ = htons(TFTP_ERROR);
+- *((ushort *)pkt)++ = htons(2);
++ s = (ushort *)pkt;
++ *s++ = htons(TFTP_ERROR);
++ *s++ = htons(2);
++ pkt = (uchar *)s;
+ strcpy ((char *)pkt, "File has bad magic");
+ pkt += 18 /*strlen("File has bad magic")*/ + 1;
+ len = pkt - xp;
+@@ -167,6 +176,7 @@
+ TftpHandler (uchar * pkt, unsigned dest, unsigned src, unsigned len)
+ {
+ ushort proto;
++ ushort *s;
+
+ if (dest != TftpOurPort) {
+ return;
+@@ -180,7 +190,9 @@
+ }
+ len -= 2;
+ /* warning: don't use increment (++) in ntohs() macros!! */
+- proto = *((ushort *)pkt)++;
++ s = (ushort *)pkt;
++ proto = *s++;
++ pkt = (uchar *)s;
+ switch (ntohs(proto)) {
+
+ case TFTP_RRQ:
+@@ -301,14 +313,16 @@
+ void
+ TftpStart (void)
+ {
+- if (BootFile[0] == '\0') {
+- IPaddr_t OurIP = ntohl(NetOurIP);
++#ifdef CONFIG_TFTP_PORT
++ char *ep; /* Environment pointer */
++#endif
+
++ if (BootFile[0] == '\0') {
+ sprintf(default_filename, "%02lX%02lX%02lX%02lX.img",
+- OurIP & 0xFF,
+- (OurIP >> 8) & 0xFF,
+- (OurIP >> 16) & 0xFF,
+- (OurIP >> 24) & 0xFF );
++ NetOurIP & 0xFF,
++ (NetOurIP >> 8) & 0xFF,
++ (NetOurIP >> 16) & 0xFF,
++ (NetOurIP >> 24) & 0xFF );
+ tftp_filename = default_filename;
+
+ printf ("*** Warning: no boot file name; using '%s'\n",
+@@ -354,7 +368,16 @@
+ TftpServerPort = WELL_KNOWN_PORT;
+ TftpTimeoutCount = 0;
+ TftpState = STATE_RRQ;
++ /* Use a pseudo-random port unless a specific port is set */
+ TftpOurPort = 1024 + (get_timer(0) % 3072);
++#ifdef CONFIG_TFTP_PORT
++ if ((ep = getenv("tftpdstp")) != NULL) {
++ TftpServerPort = simple_strtol(ep, NULL, 10);
++ }
++ if ((ep = getenv("tftpsrcp")) != NULL) {
++ TftpOurPort= simple_strtol(ep, NULL, 10);
++ }
++#endif
+ TftpBlock = 0;
+
+ /* zero out server ether in case the server ip has changed */
+diff -uNr u-boot-1.1.2/board/emetec405/flash.c new-uboot-1.1.2/board/emetec405/flash.c
+--- u-boot-1.1.2/board/emetec405/flash.c 2007-04-20 00:40:26.000000000 +0300
++++ new-uboot-1.1.2/board/emetec405/flash.c 2007-04-20 00:41:11.000000000 +0300
+@@ -31,6 +31,7 @@
+ */
+ static ulong flash_get_size (vu_long * addr, flash_info_t * info);
+ static void flash_get_offsets (ulong base, flash_info_t * info);
++static int write_word (flash_info_t *info, ulong dest, ulong data);
+
+ /*-----------------------------------------------------------------------
+ */
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-dht-walnut-df2.patch b/packages/uboot/u-boot-1.1.4/u-boot-dht-walnut-df2.patch
new file mode 100644
index 0000000000..d919ea504e
--- /dev/null
+++ b/packages/uboot/u-boot-1.1.4/u-boot-dht-walnut-df2.patch
@@ -0,0 +1,186 @@
+diff --git a/board/amcc/walnut/walnut.c b/board/amcc/walnut/walnut.c
+index f1a96a6..86bcc65 100644
+--- a/board/amcc/walnut/walnut.c
++++ b/board/amcc/walnut/walnut.c
+@@ -73,7 +73,11 @@ int checkboard(void)
+ if (pvr == PVR_405GPR_RB) {
+ puts("Board: Sycamore - AMCC PPC405GPr Evaluation Board");
+ } else {
++#ifdef CONFIG_DHT_WALNUT
++ puts("Board: DHT Walnut");
++#else
+ puts("Board: Walnut - AMCC PPC405GP Evaluation Board");
++#endif
+ }
+
+ if (s != NULL) {
+diff --git a/cpu/ppc4xx/spd_sdram.c b/cpu/ppc4xx/spd_sdram.c
+index ebd5f39..1c4c4b1 100644
+--- a/cpu/ppc4xx/spd_sdram.c
++++ b/cpu/ppc4xx/spd_sdram.c
+@@ -398,19 +398,24 @@ long int spd_sdram(int(read_spd)(uint ad
+
+ tmp = SDRAM0_BXCR_SZ(bank_code) | SDRAM0_BXCR_AM(mode) | 1;
+ sdram0_b0cr = (bank_size * 0) | tmp;
+-#ifndef CONFIG_405EP /* not on PPC405EP */
++#if defined(CONFIG_405EP)
++ /* PPC405EP chip only supports two SDRAM banks */
++ if (bank_cnt > 1)
++ sdram0_b1cr = (bank_size * 1) | tmp;
++ if (bank_cnt > 2)
++ total_size = 2 * bank_size;
++#elif defined(CONFIG_DHT_WALNUT)
++ if (bank_cnt > 1) {
++ sdram0_b2cr = (bank_size * 1) | tmp;
++ total_size = 2 * bank_size;
++ }
++#else
+ if (bank_cnt > 1)
+ sdram0_b2cr = (bank_size * 1) | tmp;
+ if (bank_cnt > 2)
+ sdram0_b1cr = (bank_size * 2) | tmp;
+ if (bank_cnt > 3)
+ sdram0_b3cr = (bank_size * 3) | tmp;
+-#else
+- /* PPC405EP chip only supports two SDRAM banks */
+- if (bank_cnt > 1)
+- sdram0_b1cr = (bank_size * 1) | tmp;
+- if (bank_cnt > 2)
+- total_size = 2 * bank_size;
+ #endif
+
+ /*
+diff --git a/drivers/pci_auto.c b/drivers/pci_auto.c
+index 3302457..7f6d33a 100644
+--- a/drivers/pci_auto.c
++++ b/drivers/pci_auto.c
+@@ -296,10 +296,12 @@ int pciauto_config_device(struct pci_con
+
+ case PCI_CLASS_STORAGE_IDE:
+ pci_hose_read_config_byte(hose, dev, PCI_CLASS_PROG, &prg_iface);
++#ifndef CONFIG_DHT_WALNUT
+ if (!(prg_iface & PCIAUTO_IDE_MODE_MASK)) {
+ DEBUGF("PCI Autoconfig: Skipping legacy mode IDE controller\n");
+ return sub_bus;
+ }
++#endif
+
+ pciauto_setup_device(hose, dev, 6, hose->pci_mem, hose->pci_io);
+ break;
+diff --git a/include/configs/walnut.h b/include/configs/walnut.h
+index 1171ee5..df9e8ac 100644
+--- a/include/configs/walnut.h
++++ b/include/configs/walnut.h
+@@ -37,6 +37,7 @@
+ #define CONFIG_4xx 1 /* ...member of PPC4xx family */
+ #define CONFIG_WALNUT 1 /* ...on a WALNUT board */
+ /* ...and on a SYCAMORE board */
++#define CONFIG_DHT_WALNUT 1 /* Just like a walnut, but .... */
+
+ #define CONFIG_BOARD_EARLY_INIT_F 1 /* Call board_early_init_f */
+
+@@ -88,10 +89,36 @@
+ #define CFG_LOADS_BAUD_CHANGE 1 /* allow baudrate change */
+
+ #define CONFIG_MII 1 /* MII PHY management */
++#ifdef CONFIG_DHT_WALNUT
++#define CONFIG_ETHADDR de:ad:be:ef:00:00
++#define CONFIG_ENV_OVERWRITE 1
++#define CONFIG_PHY_ADDR 9 /* PHY address */
++#else
+ #define CONFIG_PHY_ADDR 1 /* PHY address */
++#endif
+
+ #define CONFIG_RTC_DS174x 1 /* use DS1743 RTC in Walnut */
+
++#ifdef CONFIG_DHT_WALNUT
++#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
++ CFG_CMD_ASKENV | \
++ CFG_CMD_DATE | \
++ CFG_CMD_DHCP | \
++ CFG_CMD_DIAG | \
++ 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_REGINFO | \
++ CFG_CMD_SDRAM | \
++ CFG_CMD_IDE | \
++ CFG_CMD_BEDBUG | \
++ CFG_CMD_SNTP )
++#else
+ #define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
+ CFG_CMD_ASKENV | \
+ CFG_CMD_DATE | \
+@@ -108,6 +135,7 @@
+ CFG_CMD_REGINFO | \
+ CFG_CMD_SDRAM | \
+ CFG_CMD_SNTP )
++#endif
+
+ /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+ #include <cmd_confdefs.h>
+@@ -151,7 +179,7 @@
+ #define CFG_BAUDRATE_TABLE \
+ {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400}
+
+-#define CFG_LOAD_ADDR 0x100000 /* default load address */
++#define CFG_LOAD_ADDR 0x200000 /* default load address */
+ #define CFG_EXTBDINFO 1 /* To use extended board_into (bd_t) */
+
+ #define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */
+@@ -198,6 +226,50 @@
+ #define CFG_PCI_PTM2MS 0x00000000 /* disabled */
+ #define CFG_PCI_PTM2PCI 0x04000000 /* Host: use this pci address */
+
++#ifdef CONFIG_DHT_WALNUT
++/***********************************************************************
++ * External peripheral base address
++ ***********************************************************************/
++#define CFG_ISA_IO_BASE_ADDRESS 0xE8000000
++
++/************************************************************
++ * IDE/ATA stuff
++ ************************************************************/
++#define CFG_IDE_MAXBUS 1 /* max. 2 IDE busses */
++#define CFG_IDE_MAXDEVICE (CFG_IDE_MAXBUS*2) /* max. 2 per IDE bus */
++
++#define CFG_ATA_BASE_ADDR CFG_ISA_IO_BASE_ADDRESS /* base address */
++#define CFG_ATA_IDE0_OFFSET 0x01F0 /* ide0 offset */
++#define CFG_ATA_DATA_OFFSET 0 /* data reg offset */
++#define CFG_ATA_REG_OFFSET 0 /* reg offset */
++#define CFG_ATA_ALT_OFFSET 0x200 /* alternate register offset */
++
++#undef CONFIG_IDE_8xx_DIRECT /* no pcmcia interface required */
++#undef CONFIG_IDE_LED /* no led for ide supported */
++#undef CONFIG_IDE_RESET /* no reset for ide supported */
++
++#define CONFIG_LBA48 1
++#define CONFIG_MAC_PARTITION 1
++#define CONFIG_DOS_PARTITION 1
++#define CONFIG_ISO_PARTITION 1
++
++#define CONFIG_SUPPORT_VFAT
++
++/************************************************************
++ * ATAPI support (experimental)
++ ************************************************************/
++#define CONFIG_ATAPI /* enable ATAPI Support */
++
++/************************************************************
++ * SCSI support (experimental) only SYM53C8xx supported
++ ************************************************************/
++#define CONFIG_SCSI_SYM53C8XX
++#define CFG_SCSI_MAX_LUN 8 /* number of supported LUNs */
++#define CFG_SCSI_MAX_SCSI_ID 7 /* maximum SCSI ID (0..6) */
++#define CFG_SCSI_MAX_DEVICE CFG_SCSI_MAX_SCSI_ID * CFG_SCSI_MAX_LUN /* maximum Target devices */
++#define CFG_SCSI_SPIN_UP_TIME 2
++#endif
++
+ /*-----------------------------------------------------------------------
+ * Start addresses for the final memory configuration
+ * (Set up by the startup code)
diff --git a/packages/uboot/u-boot-1.1.6/.mtn2git_empty b/packages/uboot/u-boot-1.1.6/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uboot/u-boot-1.1.6/.mtn2git_empty
diff --git a/packages/uboot/u-boot-1.1.6/devkit-idp.patch b/packages/uboot/u-boot-1.1.6/devkit-idp.patch
new file mode 100644
index 0000000000..1460c3d1f0
--- /dev/null
+++ b/packages/uboot/u-boot-1.1.6/devkit-idp.patch
@@ -0,0 +1,28 @@
+Index: u-boot-1.1.6/board/pxa255_idp/memsetup.S
+===================================================================
+--- u-boot-1.1.6.orig/board/pxa255_idp/memsetup.S
++++ u-boot-1.1.6/board/pxa255_idp/memsetup.S
+@@ -41,8 +41,8 @@ DRAM_SIZE: .long CFG_DRAM_SIZE
+ /*
+ * Memory setup
+ */
+-.globl memsetup
+-memsetup:
++.globl lowlevel_init
++lowlevel_init:
+
+ mov r10, lr
+
+Index: u-boot-1.1.6/include/configs/pxa255_idp.h
+===================================================================
+--- u-boot-1.1.6.orig/include/configs/pxa255_idp.h
++++ u-boot-1.1.6/include/configs/pxa255_idp.h
+@@ -41,7 +41,7 @@
+ * If we are developing, we might want to start armboot from ram
+ * so we MUST NOT initialize critical regs like mem-timing ...
+ */
+-#define CONFIG_INIT_CRITICAL /* undef for developing */
++#undef CONFIG_INIT_CRITICAL /* undef for developing */
+
+ /*
+ * define the following to enable debug blinks. A debug blink function
diff --git a/packages/uboot/u-boot-1.2.0/.mtn2git_empty b/packages/uboot/u-boot-1.2.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uboot/u-boot-1.2.0/.mtn2git_empty
diff --git a/packages/uboot/u-boot-1.2.0/defconfig_lsppchd b/packages/uboot/u-boot-1.2.0/defconfig_lsppchd
new file mode 100644
index 0000000000..5919f5eb2c
--- /dev/null
+++ b/packages/uboot/u-boot-1.2.0/defconfig_lsppchd
@@ -0,0 +1,500 @@
+/*
+ * Copyright (C) 2006 Mihai Georgian <u-boot@linuxnotincluded.org.uk>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 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
+#endif
+
+/*-----------------------------------------------------------------------
+ * User configurable settings:
+ * Mandatory settings:
+ * CONFIG_IPADDR_LS - the IP address of the LinkStation
+ * CONFIG_SERVERIP_LS - the address of the server for NFS/TFTP/DHCP/BOOTP
+ * Optional settins:
+ * CONFIG_NCIP_LS - the adress of the computer running net console
+ * if not configured, it will be set to
+ * CONFIG_SERVERIP_LS
+ */
+
+#define CONFIG_IPADDR_LS 192.168.11.150
+#define CONFIG_SERVERIP_LS 192.168.11.149
+
+#if !defined(CONFIG_IPADDR_LS) || !defined(CONFIG_SERVERIP_LS)
+#error Both CONFIG_IPADDR_LS and CONFIG_SERVERIP_LS must be defined
+#endif
+
+#if !defined(CONFIG_NCIP_LS)
+#define CONFIG_NCIP_LS CONFIG_SERVERIP_LS
+#endif
+
+/*----------------------------------------------------------------------
+ * DO NOT CHANGE ANYTHING BELOW, UNLESS YOU KNOW WHAT YOU ARE DOING
+ *---------------------------------------------------------------------*/
+
+#define CONFIG_MPC8245 1
+#define CONFIG_LINKSTATION 1
+
+/*---------------------------------------
+ * Supported models
+ *
+ * LinkStation HDLAN /KuroBox Standard (CONFIG_HLAN)
+ * LinkStation old model (CONFIG_LAN) - totally untested
+ * LinkStation HGLAN / KuroBox HG (CONFIG_HGLAN)
+ *
+ * Models not supported yet
+ * TeraStatin (CONFIG_HTGL)
+ */
+
+#if defined(CONFIG_HLAN) || defined(CONFIG_LAN)
+#define CONFIG_IDENT_STRING " LinkStation / KuroBox"
+#elif defined(CONFIG_HGLAN)
+#define CONFIG_IDENT_STRING " LinkStation HG / KuroBox HG"
+#elif defined(CONFIG_HTGL)
+#define CONFIG_IDENT_STRING " TeraStation"
+#else
+#error No LinkStation model defined
+#endif
+
+#define CONFIG_BOOTDELAY 10
+#define CONFIG_ZERO_BOOTDELAY_CHECK
+#undef CONFIG_BOOT_RETRY_TIME
+
+#define CONFIG_AUTOBOOT_KEYED
+#define CONFIG_AUTOBOOT_PROMPT "Boot in %02d seconds ('s' to stop)..."
+#define CONFIG_AUTOBOOT_STOP_STR "s"
+
+#define CONFIG_COMMANDS (CFG_CMD_BDI | \
+ CFG_CMD_LOADS | \
+ CFG_CMD_LOADB | \
+ CFG_CMD_FLASH | \
+ CFG_CMD_MEMORY | \
+ CFG_CMD_NET | \
+ CFG_CMD_ENV | \
+ CFG_CMD_IDE | \
+ CFG_CMD_PCI | \
+ CFG_CMD_BOOTD | \
+ CFG_CMD_CONSOLE | \
+ CFG_CMD_RUN | \
+ CFG_CMD_ECHO | \
+ CFG_CMD_DHCP | \
+ CFG_CMD_PING | \
+ CFG_CMD_NFS | \
+ CFG_CMD_EXT2 )
+#define CONFIG_BOOTP_MASK CONFIG_BOOTP_ALL
+
+#define CONFIG_OF_FLAT_TREE 1
+
+#ifdef CONFIG_OF_FLAT_TREE
+#define OF_CPU "PowerPC,603e"
+#define OF_SOC "soc10x@80000000"
+#define OF_STDOUT_PATH "/soc10x/serial@80004600"
+#endif
+
+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+#include <cmd_confdefs.h>
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CFG_LONGHELP /* undef to save memory */
+#define CFG_PROMPT "=> " /* Monitor Command Prompt */
+#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
+
+#define CFG_PBSIZE (CFG_CBSIZE + sizeof(CFG_PROMPT) + 16)
+#define CFG_MAXARGS 16 /* Max number of command args */
+#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
+#define CFG_LOAD_ADDR 0x00800000 /* Default load address: 8 MB */
+
+//#define CONFIG_BOOTCOMMAND "run nfsboot"
+#define CONFIG_BOOTCOMMAND "run bootcmd1"
+#define CONFIG_BOOTARGS "root=/dev/sda1 netconsole=6666@192.168.11.150/,@192.168.11.149/ rtc-rs5c372.probe=0,0x32"
+#define CONFIG_NFSBOOTCOMMAND "bootp;run nfsargs;bootm"
+
+#define CFG_CONSOLE_IS_IN_ENV
+
+#define XMK_STR(x) #x
+#define MK_STR(x) XMK_STR(x)
+
+#if defined(CONFIG_HLAN) || defined(CONFIG_LAN)
+#define UBFILE "share/u-boot/u-boot-hd.flash.bin"
+#elif defined(CONFIG_HGLAN)
+#define UBFILE "share/u-boot/u-boot-hg.flash.bin"
+#elif defined(CONFIG_HTGL)
+#define UBFILE "share/u-boot/u-boot-ht.flash.bin"
+#else
+#error No LinkStation model defined
+#endif
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ "autoload=no\0" \
+ "stdin=nc\0" \
+ "stdout=nc\0" \
+ "stderr=nc\0" \
+ "ipaddr="MK_STR(CONFIG_IPADDR_LS)"\0" \
+ "netmask=255.255.255.0\0" \
+ "serverip="MK_STR(CONFIG_SERVERIP_LS)"\0" \
+ "ncip="MK_STR(CONFIG_NCIP_LS)"\0" \
+ "netretry=no\0" \
+ "nc=setenv stdin nc;setenv stdout nc;setenv stderr nc\0" \
+ "ser=setenv stdin serial;setenv stdout serial;setenv stderr serial\0" \
+ "ldaddr=800000\0" \
+ "hdpart=0:1\0" \
+ "hdfile=boot/uImage\0" \
+ "hdload=echo Loading ${hdpart}:${hdfile};ext2load ide ${hdpart} ${ldaddr} ${hdfile};ext2load ide ${hdpart} 7f0000 boot/kuroboxHD.dtb\0" \
+ "boothd=setenv bootargs " CONFIG_BOOTARGS ";bootm ${ldaddr} - 7f0000\0" \
+ "hdboot=run hdload boothd\0" \
+ "flboot=setenv bootargs root=/dev/hda1;bootm ffc00000\0" \
+ "emboot=setenv bootargs root=/dev/ram0;bootm ffc00000\0" \
+ "nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} " \
+ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off\0" \
+ "bootretry=30\0" \
+ "bootcmd1=run hdboot;run flboot\0" \
+ "bootcmd2=run flboot\0" \
+ "bootcmd3=run emboot\0" \
+ "writeng=protect off fff70000 fff7ffff;era fff70000 fff7ffff;mw.l 800000 4e474e47 1;cp.b 800000 fff70000 4\0" \
+ "writeok=protect off fff70000 fff7ffff;era fff70000 fff7ffff;mw.l 800000 4f4b4f4b 1;cp.b 800000 fff70000 4\0" \
+ "ubpart=0:1\0" \
+ "ubfile="UBFILE"\0" \
+ "ubload=echo Loading ${ubpart}:${ubfile};ext2load ide ${ubpart} ${ldaddr} ${ubfile}\0" \
+ "ubsaddr=fff00000\0" \
+ "ubeaddr=fff2ffff\0" \
+ "ubflash=protect off ${ubsaddr} ${ubeaddr};era ${ubsaddr} ${ubeaddr};cp.b ${ldaddr} ${ubsaddr} ${filesize};cmp.b ${ldaddr} ${ubsaddr} ${filesize}\0" \
+ "upgrade=run ubload ubflash\0"
+
+/*-----------------------------------------------------------------------
+ * PCI stuff
+ */
+#define CONFIG_PCI
+#undef CONFIG_PCI_PNP
+#define CONFIG_PCI_SCAN_SHOW
+
+#ifndef CONFIG_PCI_PNP
+/* Keep the following defines in sync with the BAT mappings */
+
+#define PCI_ETH_IOADDR 0xbfff00
+#define PCI_ETH_MEMADDR 0xbffffc00
+#define PCI_IDE_IOADDR 0xbffed0
+#define PCI_IDE_MEMADDR 0xbffffb00
+#define PCI_USB0_IOADDR 0
+#define PCI_USB0_MEMADDR 0xbfffe000
+#define PCI_USB1_IOADDR 0
+#define PCI_USB1_MEMADDR 0xbfffd000
+#define PCI_USB2_IOADDR 0
+#define PCI_USB2_MEMADDR 0xbfffcf00
+
+#endif
+
+/*-----------------------------------------------------------------------
+ * Ethernet stuff
+ */
+#define CONFIG_NET_MULTI
+
+#if defined(CONFIG_LAN) || defined(CONFIG_HLAN)
+#define CONFIG_TULIP
+#define CONFIG_TULIP_USE_IO
+#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
+#define CONFIG_RTL8169
+#endif
+
+#define CONFIG_NET_RETRY_COUNT 5
+
+#define CONFIG_NETCONSOLE
+
+/*-----------------------------------------------------------------------
+ * Start addresses for the final memory configuration
+ * (Set up by the startup code)
+ * Please note that CFG_SDRAM_BASE _must_ start at 0
+ */
+#define CFG_SDRAM_BASE 0x00000000
+
+#define CFG_FLASH_BASE 0xFFC00000
+#define CFG_MONITOR_BASE TEXT_BASE
+
+#define CFG_RESET_ADDRESS 0xFFF00100
+#define CFG_EUMB_ADDR 0x80000000
+#define CFG_PCI_MEM_ADDR 0xB0000000
+#define CFG_MISC_REGION_ADDR 0xFE000000
+
+#define CFG_MONITOR_LEN 0x00040000 /* 256 kB */
+#define CFG_MALLOC_LEN (512 << 10) /* Reserve some kB for malloc() */
+
+#define CFG_MEMTEST_START 0x00100000 /* memtest works on */
+#define CFG_MEMTEST_END 0x00800000 /* 1M ... 8M in DRAM */
+
+/* Maximum amount of RAM */
+#if defined(CONFIG_HLAN) || defined(CONFIG_LAN)
+#define CFG_MAX_RAM_SIZE 0x04000000 /* 64MB of SDRAM */
+#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
+#define CFG_MAX_RAM_SIZE 0x08000000 /* 128MB of SDRAM */
+#else
+#error Unknown LinkStation type
+#endif
+
+/*-----------------------------------------------------------------------
+ * Change TEXT_BASE in bord/linkstation/config.mk to get a RAM build
+ *
+ * RAM based builds are for testing purposes. A Linux module, uloader.o,
+ * exists to load U-Boot and pass control to it
+ *
+ * Always do "make clean" after changing the build type
+ */
+#if CFG_MONITOR_BASE < CFG_FLASH_BASE
+#define CFG_RAMBOOT
+#endif
+
+/*-----------------------------------------------------------------------
+ * Definitions for initial stack pointer and data area
+ */
+#if 1 /* RAM is available when the first C function is called */
+#define CFG_INIT_RAM_ADDR (CFG_SDRAM_BASE + CFG_MAX_RAM_SIZE - 0x1000)
+#else
+#define CFG_INIT_RAM_ADDR 0x40000000
+#endif
+#define CFG_INIT_RAM_END 0x1000
+#define CFG_GBL_DATA_SIZE 128
+#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
+
+/*----------------------------------------------------------------------
+ * Serial configuration
+ */
+#define CONFIG_CONS_INDEX 1
+#define CONFIG_BAUDRATE 57600
+#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
+
+#define CFG_NS16550
+#define CFG_NS16550_SERIAL
+
+#define CFG_NS16550_REG_SIZE 1
+
+#define CFG_NS16550_CLK get_bus_freq(0)
+
+#define CFG_NS16550_COM1 (CFG_EUMB_ADDR + 0x4600) /* Console port */
+#define CFG_NS16550_COM2 (CFG_EUMB_ADDR + 0x4500) /* AVR port */
+
+/*
+ * Low Level Configuration Settings
+ * (address mappings, register initial values, etc.)
+ * You should know what you are doing if you make changes here.
+ * For the detail description refer to the MPC8245 user's manual.
+ *
+ * Unless indicated otherwise, the values are
+ * taken from the orignal Linkstation boot code
+ *
+ * Most of the low level configuration setttings are normally used
+ * in cpu/mpc824x/cpu_init.c which is NOT used by this implementation.
+ * Low level initialisation is done in board/linkstation/early_init.S
+ * The values below are included for reference purpose only
+ */
+
+/* FIXME: 32.768 MHz is the crystal frequency but */
+/* the real frequency is lower by about 0.75% */
+#define CONFIG_SYS_CLK_FREQ 32768000
+#define CFG_HZ 1000
+
+/* Bit-field values for MCCR1. */
+#define CFG_ROMNAL 0
+#define CFG_ROMFAL 11
+
+#define CFG_BANK0_ROW 2 /* Only bank 0 used: 13 x n x 4 */
+#define CFG_BANK1_ROW 0
+#define CFG_BANK2_ROW 0
+#define CFG_BANK3_ROW 0
+#define CFG_BANK4_ROW 0
+#define CFG_BANK5_ROW 0
+#define CFG_BANK6_ROW 0
+#define CFG_BANK7_ROW 0
+
+/* Bit-field values for MCCR2. */
+#define CFG_TSWAIT 0
+#define CFG_REFINT 1400
+
+/* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4. */
+#define CFG_BSTOPRE 121
+
+/* Bit-field values for MCCR3. */
+#define CFG_REFREC 7
+
+/* Bit-field values for MCCR4. */
+#define CFG_PRETOACT 2
+#define CFG_ACTTOPRE 5 /* Original value was 2 */
+#define CFG_ACTORW 2
+#define CFG_SDMODE_CAS_LAT 2 /* For 100MHz bus. Use 3 for 133MHz */
+#define CFG_REGISTERD_TYPE_BUFFER 1
+#define CFG_EXTROM 1 /* Original setting but there is no EXTROM */
+#define CFG_REGDIMM 0
+#define CFG_DBUS_SIZE2 1
+#define CFG_SDMODE_WRAP 0
+
+#define CFG_PGMAX 0x32 /* All boards use this setting. Original 0x92 */
+#define CFG_SDRAM_DSCD 0x30
+
+/* Memory bank settings.
+ * Only bits 20-29 are actually used from these vales to set the
+ * start/end addresses. The upper two bits will always be 0, and the lower
+ * 20 bits will be 0x00000 for a start address, or 0xfffff for an end
+ * address. Refer to the MPC8240 book.
+ */
+
+#define CFG_BANK0_START 0x00000000
+#define CFG_BANK0_END (CFG_MAX_RAM_SIZE - 1)
+#define CFG_BANK0_ENABLE 1
+#define CFG_BANK1_START 0x3ff00000
+#define CFG_BANK1_END 0x3fffffff
+#define CFG_BANK1_ENABLE 0
+#define CFG_BANK2_START 0x3ff00000
+#define CFG_BANK2_END 0x3fffffff
+#define CFG_BANK2_ENABLE 0
+#define CFG_BANK3_START 0x3ff00000
+#define CFG_BANK3_END 0x3fffffff
+#define CFG_BANK3_ENABLE 0
+#define CFG_BANK4_START 0x3ff00000
+#define CFG_BANK4_END 0x3fffffff
+#define CFG_BANK4_ENABLE 0
+#define CFG_BANK5_START 0x3ff00000
+#define CFG_BANK5_END 0x3fffffff
+#define CFG_BANK5_ENABLE 0
+#define CFG_BANK6_START 0x3ff00000
+#define CFG_BANK6_END 0x3fffffff
+#define CFG_BANK6_ENABLE 0
+#define CFG_BANK7_START 0x3ff00000
+#define CFG_BANK7_END 0x3fffffff
+#define CFG_BANK7_ENABLE 0
+
+#define CFG_ODCR 0x95 /* 0x15 or 0x95 ? */
+
+/*----------------------------------------------------------------------
+ * Initial BAT mappings
+ */
+
+/* NOTES:
+ * 1) GUARDED and WRITETHROUGH not allowed in IBATS
+ * 2) CACHEINHIBIT and WRITETHROUGH not allowed together in same BAT
+ */
+
+/* SDRAM */
+#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
+#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_128M | BATU_VS | BATU_VP)
+
+#define CFG_DBAT0L CFG_IBAT0L
+#define CFG_DBAT0U CFG_IBAT0U
+
+/* EUMB: 1MB of address space */
+#define CFG_IBAT1L (CFG_EUMB_ADDR | BATL_PP_10 | BATL_CACHEINHIBIT)
+#define CFG_IBAT1U (CFG_EUMB_ADDR | BATU_BL_1M | BATU_VS | BATU_VP)
+
+#define CFG_DBAT1L (CFG_IBAT1L | BATL_GUARDEDSTORAGE)
+#define CFG_DBAT1U CFG_IBAT1U
+
+/* PCI Mem: 256MB of address space */
+#define CFG_IBAT2L (CFG_PCI_MEM_ADDR | BATL_PP_10 | BATL_CACHEINHIBIT)
+#define CFG_IBAT2U (CFG_PCI_MEM_ADDR | BATU_BL_256M | BATU_VS | BATU_VP)
+
+#define CFG_DBAT2L (CFG_IBAT2L | BATL_GUARDEDSTORAGE)
+#define CFG_DBAT2U CFG_IBAT2U
+
+/* PCI and local ROM/Flash: last 32MB of address space */
+#define CFG_IBAT3L (CFG_MISC_REGION_ADDR | BATL_PP_10 | BATL_CACHEINHIBIT)
+#define CFG_IBAT3U (CFG_MISC_REGION_ADDR | BATU_BL_32M | BATU_VS | BATU_VP)
+
+#define CFG_DBAT3L (CFG_IBAT3L | BATL_GUARDEDSTORAGE)
+#define CFG_DBAT3U CFG_IBAT3U
+
+/*
+ * 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.
+ *
+ * FIXME: This doesn't appear to be true for the newer kernels
+ * which map more that 8 MB
+ */
+#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */
+
+/*-----------------------------------------------------------------------
+ * FLASH organization
+ */
+#undef CFG_FLASH_PROTECTION
+#define CFG_MAX_FLASH_BANKS 1 /* Max number of flash banks */
+#define CFG_MAX_FLASH_SECT 72 /* Max number of sectors per flash */
+
+#define CFG_FLASH_ERASE_TOUT 12000
+#define CFG_FLASH_WRITE_TOUT 1000
+
+
+#define CFG_ENV_IS_IN_FLASH
+/*
+ * The original LinkStation flash organisation uses
+ * 448 kB (0xFFF00000 - 0xFFF6FFFF) for the boot loader
+ * We use the last sector of this area to store the environment
+ * which leaves max. 384 kB for the U-Boot itself
+ */
+#define CFG_ENV_ADDR 0xFFF60000
+#define CFG_ENV_SIZE 0x00010000
+#define CFG_ENV_SECT_SIZE 0x00010000
+
+/*-----------------------------------------------------------------------
+ * Cache Configuration
+ */
+#define CFG_CACHELINE_SIZE 32
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */
+#endif
+
+/*-----------------------------------------------------------------------
+ * IDE/ATA definitions
+ */
+#undef CONFIG_IDE_LED /* No IDE LED */
+#define CONFIG_IDE_RESET /* no reset for ide supported */
+#define CONFIG_IDE_PREINIT /* check for units */
+#define CONFIG_LBA48 /* 48 bit LBA supported */
+
+#if defined(CONFIG_LAN) || defined(CONFIG_HLAN) || defined(CONFIG_HGLAN)
+#define CFG_IDE_MAXBUS 1 /* Scan only 1 IDE bus */
+#define CFG_IDE_MAXDEVICE 1 /* Only 1 drive per IDE bus */
+#elif defined(CONFIG_HGTL)
+#define CFG_IDE_MAXBUS 2 /* Max. 2 IDE busses */
+#define CFG_IDE_MAXDEVICE 2 /* max. 2 drives per IDE bus */
+#else
+#error Config IDE: Unknown LinkStation type
+#endif
+
+#define CFG_ATA_BASE_ADDR 0
+
+#define CFG_ATA_DATA_OFFSET 0 /* Offset for data I/O */
+#define CFG_ATA_REG_OFFSET 0 /* Offset for normal registers */
+#define CFG_ATA_ALT_OFFSET 0 /* Offset for alternate registers */
+
+/*-----------------------------------------------------------------------
+ * Partitions and file system
+ */
+#define CONFIG_DOS_PARTITION
+
+/*-----------------------------------------------------------------------
+ * Internal Definitions
+ *
+ * Boot Flags
+ */
+#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
+#define BOOTFLAG_WARM 0x02 /* Software reboot */
+
+#endif /* __CONFIG_H */
+
+/* vim: set ts=4: */
diff --git a/packages/uboot/u-boot-1.2.0/defconfig_lsppchg b/packages/uboot/u-boot-1.2.0/defconfig_lsppchg
new file mode 100644
index 0000000000..b9943b4c76
--- /dev/null
+++ b/packages/uboot/u-boot-1.2.0/defconfig_lsppchg
@@ -0,0 +1,500 @@
+/*
+ * Copyright (C) 2006 Mihai Georgian <u-boot@linuxnotincluded.org.uk>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 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
+#endif
+
+/*-----------------------------------------------------------------------
+ * User configurable settings:
+ * Mandatory settings:
+ * CONFIG_IPADDR_LS - the IP address of the LinkStation
+ * CONFIG_SERVERIP_LS - the address of the server for NFS/TFTP/DHCP/BOOTP
+ * Optional settins:
+ * CONFIG_NCIP_LS - the adress of the computer running net console
+ * if not configured, it will be set to
+ * CONFIG_SERVERIP_LS
+ */
+
+#define CONFIG_IPADDR_LS 192.168.11.150
+#define CONFIG_SERVERIP_LS 192.168.11.149
+
+#if !defined(CONFIG_IPADDR_LS) || !defined(CONFIG_SERVERIP_LS)
+#error Both CONFIG_IPADDR_LS and CONFIG_SERVERIP_LS must be defined
+#endif
+
+#if !defined(CONFIG_NCIP_LS)
+#define CONFIG_NCIP_LS CONFIG_SERVERIP_LS
+#endif
+
+/*----------------------------------------------------------------------
+ * DO NOT CHANGE ANYTHING BELOW, UNLESS YOU KNOW WHAT YOU ARE DOING
+ *---------------------------------------------------------------------*/
+
+#define CONFIG_MPC8245 1
+#define CONFIG_LINKSTATION 1
+
+/*---------------------------------------
+ * Supported models
+ *
+ * LinkStation HDLAN /KuroBox Standard (CONFIG_HLAN)
+ * LinkStation old model (CONFIG_LAN) - totally untested
+ * LinkStation HGLAN / KuroBox HG (CONFIG_HGLAN)
+ *
+ * Models not supported yet
+ * TeraStatin (CONFIG_HTGL)
+ */
+
+#if defined(CONFIG_HLAN) || defined(CONFIG_LAN)
+#define CONFIG_IDENT_STRING " LinkStation / KuroBox"
+#elif defined(CONFIG_HGLAN)
+#define CONFIG_IDENT_STRING " LinkStation HG / KuroBox HG"
+#elif defined(CONFIG_HTGL)
+#define CONFIG_IDENT_STRING " TeraStation"
+#else
+#error No LinkStation model defined
+#endif
+
+#define CONFIG_BOOTDELAY 10
+#define CONFIG_ZERO_BOOTDELAY_CHECK
+#undef CONFIG_BOOT_RETRY_TIME
+
+#define CONFIG_AUTOBOOT_KEYED
+#define CONFIG_AUTOBOOT_PROMPT "Boot in %02d seconds ('s' to stop)..."
+#define CONFIG_AUTOBOOT_STOP_STR "s"
+
+#define CONFIG_COMMANDS (CFG_CMD_BDI | \
+ CFG_CMD_LOADS | \
+ CFG_CMD_LOADB | \
+ CFG_CMD_FLASH | \
+ CFG_CMD_MEMORY | \
+ CFG_CMD_NET | \
+ CFG_CMD_ENV | \
+ CFG_CMD_IDE | \
+ CFG_CMD_PCI | \
+ CFG_CMD_BOOTD | \
+ CFG_CMD_CONSOLE | \
+ CFG_CMD_RUN | \
+ CFG_CMD_ECHO | \
+ CFG_CMD_DHCP | \
+ CFG_CMD_PING | \
+ CFG_CMD_NFS | \
+ CFG_CMD_EXT2 )
+#define CONFIG_BOOTP_MASK CONFIG_BOOTP_ALL
+
+#define CONFIG_OF_FLAT_TREE 1
+
+#ifdef CONFIG_OF_FLAT_TREE
+#define OF_CPU "PowerPC,603e"
+#define OF_SOC "soc10x@80000000"
+#define OF_STDOUT_PATH "/soc10x/serial@80004600"
+#endif
+
+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+#include <cmd_confdefs.h>
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CFG_LONGHELP /* undef to save memory */
+#define CFG_PROMPT "=> " /* Monitor Command Prompt */
+#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
+
+#define CFG_PBSIZE (CFG_CBSIZE + sizeof(CFG_PROMPT) + 16)
+#define CFG_MAXARGS 16 /* Max number of command args */
+#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
+#define CFG_LOAD_ADDR 0x00800000 /* Default load address: 8 MB */
+
+//#define CONFIG_BOOTCOMMAND "run nfsboot"
+#define CONFIG_BOOTCOMMAND "run bootcmd1"
+#define CONFIG_BOOTARGS "root=/dev/sda1 netconsole=6666@192.168.11.150/,@192.168.11.149/ rtc-rs5c372.probe=0,0x32"
+#define CONFIG_NFSBOOTCOMMAND "bootp;run nfsargs;bootm"
+
+#define CFG_CONSOLE_IS_IN_ENV
+
+#define XMK_STR(x) #x
+#define MK_STR(x) XMK_STR(x)
+
+#if defined(CONFIG_HLAN) || defined(CONFIG_LAN)
+#define UBFILE "share/u-boot/u-boot-hd.flash.bin"
+#elif defined(CONFIG_HGLAN)
+#define UBFILE "share/u-boot/u-boot-hg.flash.bin"
+#elif defined(CONFIG_HTGL)
+#define UBFILE "share/u-boot/u-boot-ht.flash.bin"
+#else
+#error No LinkStation model defined
+#endif
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ "autoload=no\0" \
+ "stdin=nc\0" \
+ "stdout=nc\0" \
+ "stderr=nc\0" \
+ "ipaddr="MK_STR(CONFIG_IPADDR_LS)"\0" \
+ "netmask=255.255.255.0\0" \
+ "serverip="MK_STR(CONFIG_SERVERIP_LS)"\0" \
+ "ncip="MK_STR(CONFIG_NCIP_LS)"\0" \
+ "netretry=no\0" \
+ "nc=setenv stdin nc;setenv stdout nc;setenv stderr nc\0" \
+ "ser=setenv stdin serial;setenv stdout serial;setenv stderr serial\0" \
+ "ldaddr=800000\0" \
+ "hdpart=0:1\0" \
+ "hdfile=boot/uImage\0" \
+ "hdload=echo Loading ${hdpart}:${hdfile};ext2load ide ${hdpart} ${ldaddr} ${hdfile};ext2load ide ${hdpart} 7f0000 boot/kuroboxHG.dtb\0" \
+ "boothd=setenv bootargs " CONFIG_BOOTARGS ";bootm ${ldaddr} - 7f0000\0" \
+ "hdboot=run hdload boothd\0" \
+ "flboot=setenv bootargs root=/dev/hda1;bootm ffc00000\0" \
+ "emboot=setenv bootargs root=/dev/ram0;bootm ffc00000\0" \
+ "nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} " \
+ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off\0" \
+ "bootretry=30\0" \
+ "bootcmd1=run hdboot;run flboot\0" \
+ "bootcmd2=run flboot\0" \
+ "bootcmd3=run emboot\0" \
+ "writeng=protect off fff70000 fff7ffff;era fff70000 fff7ffff;mw.l 800000 4e474e47 1;cp.b 800000 fff70000 4\0" \
+ "writeok=protect off fff70000 fff7ffff;era fff70000 fff7ffff;mw.l 800000 4f4b4f4b 1;cp.b 800000 fff70000 4\0" \
+ "ubpart=0:1\0" \
+ "ubfile="UBFILE"\0" \
+ "ubload=echo Loading ${ubpart}:${ubfile};ext2load ide ${ubpart} ${ldaddr} ${ubfile}\0" \
+ "ubsaddr=fff00000\0" \
+ "ubeaddr=fff2ffff\0" \
+ "ubflash=protect off ${ubsaddr} ${ubeaddr};era ${ubsaddr} ${ubeaddr};cp.b ${ldaddr} ${ubsaddr} ${filesize};cmp.b ${ldaddr} ${ubsaddr} ${filesize}\0" \
+ "upgrade=run ubload ubflash\0"
+
+/*-----------------------------------------------------------------------
+ * PCI stuff
+ */
+#define CONFIG_PCI
+#undef CONFIG_PCI_PNP
+#define CONFIG_PCI_SCAN_SHOW
+
+#ifndef CONFIG_PCI_PNP
+/* Keep the following defines in sync with the BAT mappings */
+
+#define PCI_ETH_IOADDR 0xbfff00
+#define PCI_ETH_MEMADDR 0xbffffc00
+#define PCI_IDE_IOADDR 0xbffed0
+#define PCI_IDE_MEMADDR 0xbffffb00
+#define PCI_USB0_IOADDR 0
+#define PCI_USB0_MEMADDR 0xbfffe000
+#define PCI_USB1_IOADDR 0
+#define PCI_USB1_MEMADDR 0xbfffd000
+#define PCI_USB2_IOADDR 0
+#define PCI_USB2_MEMADDR 0xbfffcf00
+
+#endif
+
+/*-----------------------------------------------------------------------
+ * Ethernet stuff
+ */
+#define CONFIG_NET_MULTI
+
+#if defined(CONFIG_LAN) || defined(CONFIG_HLAN)
+#define CONFIG_TULIP
+#define CONFIG_TULIP_USE_IO
+#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
+#define CONFIG_RTL8169
+#endif
+
+#define CONFIG_NET_RETRY_COUNT 5
+
+#define CONFIG_NETCONSOLE
+
+/*-----------------------------------------------------------------------
+ * Start addresses for the final memory configuration
+ * (Set up by the startup code)
+ * Please note that CFG_SDRAM_BASE _must_ start at 0
+ */
+#define CFG_SDRAM_BASE 0x00000000
+
+#define CFG_FLASH_BASE 0xFFC00000
+#define CFG_MONITOR_BASE TEXT_BASE
+
+#define CFG_RESET_ADDRESS 0xFFF00100
+#define CFG_EUMB_ADDR 0x80000000
+#define CFG_PCI_MEM_ADDR 0xB0000000
+#define CFG_MISC_REGION_ADDR 0xFE000000
+
+#define CFG_MONITOR_LEN 0x00040000 /* 256 kB */
+#define CFG_MALLOC_LEN (512 << 10) /* Reserve some kB for malloc() */
+
+#define CFG_MEMTEST_START 0x00100000 /* memtest works on */
+#define CFG_MEMTEST_END 0x00800000 /* 1M ... 8M in DRAM */
+
+/* Maximum amount of RAM */
+#if defined(CONFIG_HLAN) || defined(CONFIG_LAN)
+#define CFG_MAX_RAM_SIZE 0x04000000 /* 64MB of SDRAM */
+#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
+#define CFG_MAX_RAM_SIZE 0x08000000 /* 128MB of SDRAM */
+#else
+#error Unknown LinkStation type
+#endif
+
+/*-----------------------------------------------------------------------
+ * Change TEXT_BASE in bord/linkstation/config.mk to get a RAM build
+ *
+ * RAM based builds are for testing purposes. A Linux module, uloader.o,
+ * exists to load U-Boot and pass control to it
+ *
+ * Always do "make clean" after changing the build type
+ */
+#if CFG_MONITOR_BASE < CFG_FLASH_BASE
+#define CFG_RAMBOOT
+#endif
+
+/*-----------------------------------------------------------------------
+ * Definitions for initial stack pointer and data area
+ */
+#if 1 /* RAM is available when the first C function is called */
+#define CFG_INIT_RAM_ADDR (CFG_SDRAM_BASE + CFG_MAX_RAM_SIZE - 0x1000)
+#else
+#define CFG_INIT_RAM_ADDR 0x40000000
+#endif
+#define CFG_INIT_RAM_END 0x1000
+#define CFG_GBL_DATA_SIZE 128
+#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
+
+/*----------------------------------------------------------------------
+ * Serial configuration
+ */
+#define CONFIG_CONS_INDEX 1
+#define CONFIG_BAUDRATE 57600
+#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
+
+#define CFG_NS16550
+#define CFG_NS16550_SERIAL
+
+#define CFG_NS16550_REG_SIZE 1
+
+#define CFG_NS16550_CLK get_bus_freq(0)
+
+#define CFG_NS16550_COM1 (CFG_EUMB_ADDR + 0x4600) /* Console port */
+#define CFG_NS16550_COM2 (CFG_EUMB_ADDR + 0x4500) /* AVR port */
+
+/*
+ * Low Level Configuration Settings
+ * (address mappings, register initial values, etc.)
+ * You should know what you are doing if you make changes here.
+ * For the detail description refer to the MPC8245 user's manual.
+ *
+ * Unless indicated otherwise, the values are
+ * taken from the orignal Linkstation boot code
+ *
+ * Most of the low level configuration setttings are normally used
+ * in cpu/mpc824x/cpu_init.c which is NOT used by this implementation.
+ * Low level initialisation is done in board/linkstation/early_init.S
+ * The values below are included for reference purpose only
+ */
+
+/* FIXME: 32.768 MHz is the crystal frequency but */
+/* the real frequency is lower by about 0.75% */
+#define CONFIG_SYS_CLK_FREQ 32768000
+#define CFG_HZ 1000
+
+/* Bit-field values for MCCR1. */
+#define CFG_ROMNAL 0
+#define CFG_ROMFAL 11
+
+#define CFG_BANK0_ROW 2 /* Only bank 0 used: 13 x n x 4 */
+#define CFG_BANK1_ROW 0
+#define CFG_BANK2_ROW 0
+#define CFG_BANK3_ROW 0
+#define CFG_BANK4_ROW 0
+#define CFG_BANK5_ROW 0
+#define CFG_BANK6_ROW 0
+#define CFG_BANK7_ROW 0
+
+/* Bit-field values for MCCR2. */
+#define CFG_TSWAIT 0
+#define CFG_REFINT 1400
+
+/* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4. */
+#define CFG_BSTOPRE 121
+
+/* Bit-field values for MCCR3. */
+#define CFG_REFREC 7
+
+/* Bit-field values for MCCR4. */
+#define CFG_PRETOACT 2
+#define CFG_ACTTOPRE 5 /* Original value was 2 */
+#define CFG_ACTORW 2
+#define CFG_SDMODE_CAS_LAT 2 /* For 100MHz bus. Use 3 for 133MHz */
+#define CFG_REGISTERD_TYPE_BUFFER 1
+#define CFG_EXTROM 1 /* Original setting but there is no EXTROM */
+#define CFG_REGDIMM 0
+#define CFG_DBUS_SIZE2 1
+#define CFG_SDMODE_WRAP 0
+
+#define CFG_PGMAX 0x32 /* All boards use this setting. Original 0x92 */
+#define CFG_SDRAM_DSCD 0x30
+
+/* Memory bank settings.
+ * Only bits 20-29 are actually used from these vales to set the
+ * start/end addresses. The upper two bits will always be 0, and the lower
+ * 20 bits will be 0x00000 for a start address, or 0xfffff for an end
+ * address. Refer to the MPC8240 book.
+ */
+
+#define CFG_BANK0_START 0x00000000
+#define CFG_BANK0_END (CFG_MAX_RAM_SIZE - 1)
+#define CFG_BANK0_ENABLE 1
+#define CFG_BANK1_START 0x3ff00000
+#define CFG_BANK1_END 0x3fffffff
+#define CFG_BANK1_ENABLE 0
+#define CFG_BANK2_START 0x3ff00000
+#define CFG_BANK2_END 0x3fffffff
+#define CFG_BANK2_ENABLE 0
+#define CFG_BANK3_START 0x3ff00000
+#define CFG_BANK3_END 0x3fffffff
+#define CFG_BANK3_ENABLE 0
+#define CFG_BANK4_START 0x3ff00000
+#define CFG_BANK4_END 0x3fffffff
+#define CFG_BANK4_ENABLE 0
+#define CFG_BANK5_START 0x3ff00000
+#define CFG_BANK5_END 0x3fffffff
+#define CFG_BANK5_ENABLE 0
+#define CFG_BANK6_START 0x3ff00000
+#define CFG_BANK6_END 0x3fffffff
+#define CFG_BANK6_ENABLE 0
+#define CFG_BANK7_START 0x3ff00000
+#define CFG_BANK7_END 0x3fffffff
+#define CFG_BANK7_ENABLE 0
+
+#define CFG_ODCR 0x95 /* 0x15 or 0x95 ? */
+
+/*----------------------------------------------------------------------
+ * Initial BAT mappings
+ */
+
+/* NOTES:
+ * 1) GUARDED and WRITETHROUGH not allowed in IBATS
+ * 2) CACHEINHIBIT and WRITETHROUGH not allowed together in same BAT
+ */
+
+/* SDRAM */
+#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
+#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_128M | BATU_VS | BATU_VP)
+
+#define CFG_DBAT0L CFG_IBAT0L
+#define CFG_DBAT0U CFG_IBAT0U
+
+/* EUMB: 1MB of address space */
+#define CFG_IBAT1L (CFG_EUMB_ADDR | BATL_PP_10 | BATL_CACHEINHIBIT)
+#define CFG_IBAT1U (CFG_EUMB_ADDR | BATU_BL_1M | BATU_VS | BATU_VP)
+
+#define CFG_DBAT1L (CFG_IBAT1L | BATL_GUARDEDSTORAGE)
+#define CFG_DBAT1U CFG_IBAT1U
+
+/* PCI Mem: 256MB of address space */
+#define CFG_IBAT2L (CFG_PCI_MEM_ADDR | BATL_PP_10 | BATL_CACHEINHIBIT)
+#define CFG_IBAT2U (CFG_PCI_MEM_ADDR | BATU_BL_256M | BATU_VS | BATU_VP)
+
+#define CFG_DBAT2L (CFG_IBAT2L | BATL_GUARDEDSTORAGE)
+#define CFG_DBAT2U CFG_IBAT2U
+
+/* PCI and local ROM/Flash: last 32MB of address space */
+#define CFG_IBAT3L (CFG_MISC_REGION_ADDR | BATL_PP_10 | BATL_CACHEINHIBIT)
+#define CFG_IBAT3U (CFG_MISC_REGION_ADDR | BATU_BL_32M | BATU_VS | BATU_VP)
+
+#define CFG_DBAT3L (CFG_IBAT3L | BATL_GUARDEDSTORAGE)
+#define CFG_DBAT3U CFG_IBAT3U
+
+/*
+ * 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.
+ *
+ * FIXME: This doesn't appear to be true for the newer kernels
+ * which map more that 8 MB
+ */
+#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */
+
+/*-----------------------------------------------------------------------
+ * FLASH organization
+ */
+#undef CFG_FLASH_PROTECTION
+#define CFG_MAX_FLASH_BANKS 1 /* Max number of flash banks */
+#define CFG_MAX_FLASH_SECT 72 /* Max number of sectors per flash */
+
+#define CFG_FLASH_ERASE_TOUT 12000
+#define CFG_FLASH_WRITE_TOUT 1000
+
+
+#define CFG_ENV_IS_IN_FLASH
+/*
+ * The original LinkStation flash organisation uses
+ * 448 kB (0xFFF00000 - 0xFFF6FFFF) for the boot loader
+ * We use the last sector of this area to store the environment
+ * which leaves max. 384 kB for the U-Boot itself
+ */
+#define CFG_ENV_ADDR 0xFFF60000
+#define CFG_ENV_SIZE 0x00010000
+#define CFG_ENV_SECT_SIZE 0x00010000
+
+/*-----------------------------------------------------------------------
+ * Cache Configuration
+ */
+#define CFG_CACHELINE_SIZE 32
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */
+#endif
+
+/*-----------------------------------------------------------------------
+ * IDE/ATA definitions
+ */
+#undef CONFIG_IDE_LED /* No IDE LED */
+#define CONFIG_IDE_RESET /* no reset for ide supported */
+#define CONFIG_IDE_PREINIT /* check for units */
+#define CONFIG_LBA48 /* 48 bit LBA supported */
+
+#if defined(CONFIG_LAN) || defined(CONFIG_HLAN) || defined(CONFIG_HGLAN)
+#define CFG_IDE_MAXBUS 1 /* Scan only 1 IDE bus */
+#define CFG_IDE_MAXDEVICE 1 /* Only 1 drive per IDE bus */
+#elif defined(CONFIG_HGTL)
+#define CFG_IDE_MAXBUS 2 /* Max. 2 IDE busses */
+#define CFG_IDE_MAXDEVICE 2 /* max. 2 drives per IDE bus */
+#else
+#error Config IDE: Unknown LinkStation type
+#endif
+
+#define CFG_ATA_BASE_ADDR 0
+
+#define CFG_ATA_DATA_OFFSET 0 /* Offset for data I/O */
+#define CFG_ATA_REG_OFFSET 0 /* Offset for normal registers */
+#define CFG_ATA_ALT_OFFSET 0 /* Offset for alternate registers */
+
+/*-----------------------------------------------------------------------
+ * Partitions and file system
+ */
+#define CONFIG_DOS_PARTITION
+
+/*-----------------------------------------------------------------------
+ * Internal Definitions
+ *
+ * Boot Flags
+ */
+#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
+#define BOOTFLAG_WARM 0x02 /* Software reboot */
+
+#endif /* __CONFIG_H */
+
+/* vim: set ts=4: */
diff --git a/packages/uboot-utils/env-Makefile.patch b/packages/uboot/u-boot-1.2.0/env-Makefile.patch
index ad3a6b39a3..ad3a6b39a3 100644
--- a/packages/uboot-utils/env-Makefile.patch
+++ b/packages/uboot/u-boot-1.2.0/env-Makefile.patch
diff --git a/packages/uboot/u-boot-1.2.0/fic-gta01/.mtn2git_empty b/packages/uboot/u-boot-1.2.0/fic-gta01/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uboot/u-boot-1.2.0/fic-gta01/.mtn2git_empty
diff --git a/packages/uboot/u-boot-1.2.0/fic-gta01/fw_env.config b/packages/uboot/u-boot-1.2.0/fic-gta01/fw_env.config
new file mode 100644
index 0000000000..9fe07672c5
--- /dev/null
+++ b/packages/uboot/u-boot-1.2.0/fic-gta01/fw_env.config
@@ -0,0 +1,6 @@
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundand
+# environment sector is assumed present.
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd1 0x0000 0x4000 0x4000
diff --git a/packages/uboot-utils/fw_env.c.patch b/packages/uboot/u-boot-1.2.0/fw_env.c.patch
index 62f364ad4a..62f364ad4a 100644
--- a/packages/uboot-utils/fw_env.c.patch
+++ b/packages/uboot/u-boot-1.2.0/fw_env.c.patch
diff --git a/packages/uboot/u-boot-1.2.0/fw_env.config b/packages/uboot/u-boot-1.2.0/fw_env.config
new file mode 100644
index 0000000000..2432bd866c
--- /dev/null
+++ b/packages/uboot/u-boot-1.2.0/fw_env.config
@@ -0,0 +1,7 @@
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundand
+# environment sector is assumed present.
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd1 0x0000 0x4000 0x4000
+/dev/mtd2 0x0000 0x4000 0x4000
diff --git a/packages/uboot/u-boot-1.2.0/kurobox_powerpc-20061105_target.gitdiff b/packages/uboot/u-boot-1.2.0/kurobox_powerpc-20061105_target.gitdiff
new file mode 100644
index 0000000000..02027b1062
--- /dev/null
+++ b/packages/uboot/u-boot-1.2.0/kurobox_powerpc-20061105_target.gitdiff
@@ -0,0 +1,2286 @@
+diff --git a/arch/powerpc/boot/dts/kuroboxHG.dts b/arch/powerpc/boot/dts/kuroboxHG.dts
+new file mode 100644
+index 0000000..6c76ef6
+--- /dev/null
++++ b/arch/powerpc/boot/dts/kuroboxHG.dts
+@@ -0,0 +1,183 @@
++/*
++ * Device Tree Souce for Buffalo KuroboxHG
++ *
++ * Based on sandpoint.dts
++ *
++ * 2006 (c) G. Liakhovetski <g.liakhovetski@gmx.de>
++ *
++ * This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++
++XXXX add flash parts, rtc, ??
++
++build with: "dtc -f -I dts -O dtb -o kuroboxHG.dtb -V 16 kuroboxHG.dts"
++
++
++ */
++
++/ {
++ linux,phandle = <1000>;
++ model = "KuroboxHG";
++ compatible = "linkstation";
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ cpus {
++ linux,phandle = <2000>;
++ #cpus = <1>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ PowerPC,603e { /* Really 8241 */
++ linux,phandle = <2100>;
++ linux,boot-cpu;
++ device_type = "cpu";
++ reg = <0>;
++ clock-frequency = <fdad680>; /* Fixed by bootwrapper */
++ timebase-frequency = <1F04000>; /* Fixed by bootwrapper */
++ bus-frequency = <0>; /* From bootloader */
++ /* Following required by dtc but not used */
++ i-cache-line-size = <0>;
++ d-cache-line-size = <0>;
++ i-cache-size = <4000>;
++ d-cache-size = <4000>;
++ };
++ };
++
++ memory {
++ linux,phandle = <3000>;
++ device_type = "memory";
++ reg = <00000000 08000000>;
++ };
++
++ soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */
++ linux,phandle = <4000>;
++ #address-cells = <1>;
++ #size-cells = <1>;
++ #interrupt-cells = <2>;
++ device_type = "soc";
++ compatible = "mpc10x";
++ store-gathering = <0>; /* 0 == off, !0 == on */
++ reg = <80000000 00100000>;
++ ranges = <80000000 80000000 70000000 /* pci mem space */
++ fc000000 fc000000 00100000 /* EUMB */
++ fe000000 fe000000 00c00000 /* pci i/o space */
++ fec00000 fec00000 00300000 /* pci cfg regs */
++ fef00000 fef00000 00100000>; /* pci iack */
++
++ dma@80001100 {
++ linux,phandle = <4100>;
++ #interrupt-cells = <1>;
++ #address-cells = <1>;
++ #size-cells = <1>;
++ device_type = "dma";
++ compatible = "fsl-dma";
++ clock-frequency = <0>;
++ reg = <80001100 24>;
++ interrupts = <6 0>;
++ interrupt-parent = <4400>;
++ };
++
++ dma@80001200 {
++ linux,phandle = <4200>;
++ #interrupt-cells = <1>;
++ #address-cells = <1>;
++ #size-cells = <1>;
++ device_type = "dma";
++ compatible = "fsl-dma";
++ clock-frequency = <0>;
++ reg = <80001200 24>;
++ interrupts = <7 0>;
++ interrupt-parent = <4400>;
++ };
++
++ i2c@80003000 {
++ linux,phandle = <4300>;
++ device_type = "i2c";
++ compatible = "fsl-i2c";
++ clock-frequency = <0>;
++ reg = <80003000 1000>;
++ interrupts = <5 2>;
++ interrupt-parent = <4400>;
++ };
++
++ serial@80004500 {
++ linux,phandle = <4511>;
++ device_type = "serial";
++ compatible = "ns16550";
++ reg = <80004500 8>;
++ clock-frequency = <7c044a8>;
++ current-speed = <2580>;
++ interrupts = <9 2>;
++ interrupt-parent = <4400>;
++ };
++
++ serial@80004600 {
++ linux,phandle = <4512>;
++ device_type = "serial";
++ compatible = "ns16550";
++ reg = <80004600 8>;
++ clock-frequency = <7c044a8>;
++ current-speed = <e100>;
++ interrupts = <a 0>;
++ interrupt-parent = <4400>;
++ };
++
++ pic@80040000 {
++ linux,phandle = <4400>;
++ #interrupt-cells = <2>;
++ #address-cells = <0>;
++ device_type = "open-pic";
++ compatible = "chrp,open-pic";
++ interrupt-controller;
++ reg = <80040000 40000>;
++ clock-frequency = <0>; /* ??? */
++ built-in;
++ };
++
++ pci@fec00000 {
++ linux,phandle = <4500>;
++ #address-cells = <3>;
++ #size-cells = <2>;
++ #interrupt-cells = <1>;
++ device_type = "pci";
++ compatible = "mpc10x-pci";
++ reg = <fec00000 400000>;
++ ranges = <01000000 0 0 fe000000 0 00c00000
++ 02000000 0 80000000 80000000 0 70000000>;
++ bus-range = <0 ff>;
++ clock-frequency = <7f28155>;
++ interrupt-parent = <4400>;
++ interrupt-map-mask = <f800 0 0 7>;
++ interrupt-map = <
++ /* IDSEL 0x11 - IRQ0 ETH */
++ 5800 0 0 1 4400 0 1
++ 5800 0 0 2 4400 1 1
++ 5800 0 0 3 4400 2 1
++ 5800 0 0 4 4400 3 1
++ /* IDSEL 0x12 - IRQ1 IDE0 */
++ 6000 0 0 1 4400 1 1
++ 6000 0 0 2 4400 2 1
++ 6000 0 0 3 4400 3 1
++ 6000 0 0 4 4400 0 1
++ /* IDSEL 0x13 - IRQ4 IDE1 */
++ 6800 0 0 1 4400 3 1
++ 6800 0 0 2 4400 0 1
++ 6800 0 0 3 4400 1 1
++ 6800 0 0 4 4400 2 1
++ /* IDSEL 0x14 - IRQ3 USB2.0 */
++ 7000 0 0 1 4400 3 1
++ 7000 0 0 2 4400 3 1
++ 7000 0 0 3 4400 3 1
++ 7000 0 0 4 4400 3 1
++ /* IDSEL 0x15 - IRQ2 fan ctrl*/
++ 7800 0 0 1 4400 2 1
++ 7800 0 0 2 4400 3 1
++ 7800 0 0 3 4400 0 1
++ 7800 0 0 4 4400 1 1
++ >;
++ };
++ };
++};
+diff --git a/arch/powerpc/configs/kuroboxhg_defconfig b/arch/powerpc/configs/kuroboxhg_defconfig
+new file mode 100644
+index 0000000..136632f
+--- /dev/null
++++ b/arch/powerpc/configs/kuroboxhg_defconfig
+@@ -0,0 +1,1577 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.19-rc2
++# Wed Nov 1 16:56:07 2006
++#
++# CONFIG_PPC64 is not set
++CONFIG_PPC32=y
++CONFIG_PPC_MERGE=y
++CONFIG_MMU=y
++CONFIG_GENERIC_HARDIRQS=y
++CONFIG_IRQ_PER_CPU=y
++CONFIG_RWSEM_XCHGADD_ALGORITHM=y
++CONFIG_GENERIC_HWEIGHT=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
++CONFIG_GENERIC_FIND_NEXT_BIT=y
++CONFIG_PPC=y
++CONFIG_EARLY_PRINTK=y
++CONFIG_GENERIC_NVRAM=y
++CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
++CONFIG_ARCH_MAY_HAVE_PC_FDC=y
++CONFIG_PPC_OF=y
++CONFIG_PPC_UDBG_16550=y
++# CONFIG_GENERIC_TBSYNC is not set
++CONFIG_AUDIT_ARCH=y
++# CONFIG_DEFAULT_UIMAGE is not set
++
++#
++# Processor support
++#
++CONFIG_CLASSIC32=y
++# CONFIG_PPC_52xx is not set
++# CONFIG_PPC_82xx is not set
++# CONFIG_PPC_83xx is not set
++# CONFIG_PPC_85xx is not set
++# CONFIG_PPC_86xx is not set
++# CONFIG_40x is not set
++# CONFIG_44x is not set
++# CONFIG_8xx is not set
++# CONFIG_E200 is not set
++CONFIG_6xx=y
++CONFIG_PPC_FPU=y
++# CONFIG_ALTIVEC is not set
++CONFIG_PPC_STD_MMU=y
++CONFIG_PPC_STD_MMU_32=y
++# CONFIG_SMP is not set
++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
++
++#
++# Code maturity level options
++#
++CONFIG_EXPERIMENTAL=y
++CONFIG_BROKEN_ON_SMP=y
++CONFIG_INIT_ENV_ARG_LIMIT=32
++
++#
++# General setup
++#
++CONFIG_LOCALVERSION="-kuroboxHG"
++CONFIG_LOCALVERSION_AUTO=y
++CONFIG_SWAP=y
++CONFIG_SYSVIPC=y
++# CONFIG_IPC_NS is not set
++CONFIG_POSIX_MQUEUE=y
++# 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=y
++CONFIG_IKCONFIG_PROC=y
++# CONFIG_RELAY is not set
++CONFIG_INITRAMFS_SOURCE=""
++# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
++CONFIG_SYSCTL=y
++# CONFIG_EMBEDDED is not set
++# CONFIG_SYSCTL_SYSCALL is not set
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_ALL is not set
++# 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_SLAB=y
++CONFIG_VM_EVENT_COUNTERS=y
++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 is not set
++# 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=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"
++
++#
++# Platform support
++#
++# CONFIG_PPC_MULTIPLATFORM is not set
++CONFIG_EMBEDDED6xx=y
++# CONFIG_APUS is not set
++# CONFIG_PPC_CELL is not set
++# CONFIG_PPC_CELL_NATIVE is not set
++# CONFIG_PPC_RTAS is not set
++# CONFIG_MMIO_NVRAM is not set
++# CONFIG_PPC_MPC106 is not set
++# CONFIG_PPC_970_NAP is not set
++# CONFIG_CPU_FREQ is not set
++# CONFIG_TAU is not set
++# CONFIG_KATANA is not set
++# CONFIG_WILLOW is not set
++# CONFIG_CPCI690 is not set
++# CONFIG_POWERPMC250 is not set
++# CONFIG_CHESTNUT is not set
++# CONFIG_SPRUCE is not set
++# CONFIG_HDPU is not set
++# CONFIG_EV64260 is not set
++# CONFIG_LOPEC is not set
++# CONFIG_MVME5100 is not set
++# CONFIG_PPLUS is not set
++# CONFIG_PRPMC750 is not set
++# CONFIG_PRPMC800 is not set
++# CONFIG_SANDPOINT is not set
++CONFIG_LINKSTATION=y
++# CONFIG_MPC7448HPC2 is not set
++# CONFIG_RADSTONE_PPC7D is not set
++# CONFIG_PAL4 is not set
++# CONFIG_GEMINI is not set
++# CONFIG_EST8260 is not set
++# CONFIG_SBC82xx is not set
++# CONFIG_SBS8260 is not set
++# CONFIG_RPX8260 is not set
++# CONFIG_TQM8260 is not set
++# CONFIG_ADS8272 is not set
++# CONFIG_PQ2FADS is not set
++# CONFIG_LITE5200 is not set
++# CONFIG_EV64360 is not set
++CONFIG_PPC_GEN550=y
++CONFIG_MPC10X_BRIDGE=y
++CONFIG_MPC10X_OPENPIC=y
++# CONFIG_MPC10X_STORE_GATHERING is not set
++# CONFIG_WANT_EARLY_SERIAL is not set
++CONFIG_MPIC=y
++
++#
++# Kernel options
++#
++# CONFIG_HIGHMEM is not set
++CONFIG_HZ_100=y
++# CONFIG_HZ_250 is not set
++# CONFIG_HZ_1000 is not set
++CONFIG_HZ=100
++CONFIG_PREEMPT_NONE=y
++# CONFIG_PREEMPT_VOLUNTARY is not set
++# CONFIG_PREEMPT is not set
++CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_MISC is not set
++CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
++CONFIG_ARCH_FLATMEM_ENABLE=y
++CONFIG_ARCH_POPULATES_NODE_MAP=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 is not set
++CONFIG_SPLIT_PTLOCK_CPUS=4
++# CONFIG_RESOURCES_64BIT is not set
++CONFIG_PROC_DEVICETREE=y
++CONFIG_CMDLINE_BOOL=y
++CONFIG_CMDLINE="console=ttyS1,57600 root=/dev/sdd1 netconsole=@192.168.1.7/eth0,@192.168.1.1/00:50:BF:A4:59:71 rtc-rs5c372.probe=0,0x32"
++# CONFIG_PM is not set
++# CONFIG_SECCOMP is not set
++CONFIG_ISA_DMA_API=y
++
++#
++# Bus options
++#
++CONFIG_GENERIC_ISA_DMA=y
++# CONFIG_MPIC_WEIRD is not set
++# CONFIG_PPC_I8259 is not set
++CONFIG_PPC_INDIRECT_PCI=y
++CONFIG_FSL_SOC=y
++CONFIG_PCI=y
++CONFIG_PCI_DOMAINS=y
++# CONFIG_PCIEPORTBUS is not set
++# CONFIG_PCI_MULTITHREAD_PROBE is not set
++# CONFIG_PCI_DEBUG is not set
++
++#
++# PCCARD (PCMCIA/CardBus) support
++#
++# CONFIG_PCCARD is not set
++
++#
++# PCI Hotplug Support
++#
++# CONFIG_HOTPLUG_PCI is not set
++
++#
++# Advanced setup
++#
++# CONFIG_ADVANCED_OPTIONS is not set
++
++#
++# Default settings for advanced configuration options are used
++#
++CONFIG_HIGHMEM_START=0xfe000000
++CONFIG_LOWMEM_SIZE=0x30000000
++CONFIG_KERNEL_START=0xc0000000
++CONFIG_TASK_SIZE=0x80000000
++CONFIG_BOOT_LOAD=0x00800000
++
++#
++# 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=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"
++
++#
++# IP: Virtual Server Configuration
++#
++# CONFIG_IP_VS 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=y
++# CONFIG_NETFILTER_DEBUG is not set
++
++#
++# 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 is not set
++# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
++# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
++# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
++# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
++CONFIG_NETFILTER_XT_MATCH_ESP=m
++# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
++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 is not set
++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
++# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
++# CONFIG_NETFILTER_XT_MATCH_REALM is not set
++# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
++CONFIG_NETFILTER_XT_MATCH_STATE=m
++# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
++# CONFIG_NETFILTER_XT_MATCH_STRING is not set
++# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
++
++#
++# 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 is not set
++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 is not set
++# CONFIG_IP_NF_PPTP is not set
++# CONFIG_IP_NF_H323 is not set
++# CONFIG_IP_NF_SIP is not set
++# CONFIG_IP_NF_QUEUE is not set
++CONFIG_IP_NF_IPTABLES=m
++CONFIG_IP_NF_MATCH_IPRANGE=m
++# CONFIG_IP_NF_MATCH_TOS is not set
++# CONFIG_IP_NF_MATCH_RECENT is not set
++# CONFIG_IP_NF_MATCH_ECN is not set
++# CONFIG_IP_NF_MATCH_AH is not set
++# CONFIG_IP_NF_MATCH_TTL is not set
++# CONFIG_IP_NF_MATCH_OWNER is not set
++# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
++# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
++CONFIG_IP_NF_FILTER=m
++CONFIG_IP_NF_TARGET_REJECT=m
++# CONFIG_IP_NF_TARGET_LOG is not set
++# CONFIG_IP_NF_TARGET_ULOG is not set
++# CONFIG_IP_NF_TARGET_TCPMSS is not set
++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 is not set
++CONFIG_IP_NF_NAT_IRC=m
++CONFIG_IP_NF_NAT_FTP=m
++CONFIG_IP_NF_NAT_TFTP=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
++
++#
++# 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_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=m
++CONFIG_IEEE80211_DEBUG=y
++CONFIG_IEEE80211_CRYPT_WEP=m
++CONFIG_IEEE80211_CRYPT_CCMP=m
++CONFIG_IEEE80211_CRYPT_TKIP=m
++CONFIG_IEEE80211_SOFTMAC=m
++CONFIG_IEEE80211_SOFTMAC_DEBUG=y
++CONFIG_WIRELESS_EXT=y
++
++#
++# Device Drivers
++#
++
++#
++# Generic Driver Options
++#
++CONFIG_STANDALONE=y
++CONFIG_PREVENT_FIRMWARE_BUILD=y
++CONFIG_FW_LOADER=m
++# CONFIG_DEBUG_DRIVER is not set
++# 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 is not set
++# CONFIG_MTD_CMDLINE_PARTS is not set
++
++#
++# User Modules And Translation Layers
++#
++CONFIG_MTD_CHAR=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=y
++CONFIG_MTD_GEN_PROBE=y
++CONFIG_MTD_CFI_ADV_OPTIONS=y
++CONFIG_MTD_CFI_NOSWAP=y
++# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
++# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
++CONFIG_MTD_CFI_GEOMETRY=y
++CONFIG_MTD_MAP_BANK_WIDTH_1=y
++# CONFIG_MTD_MAP_BANK_WIDTH_2 is not set
++# 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 is not set
++# CONFIG_MTD_CFI_I4 is not set
++# CONFIG_MTD_CFI_I8 is not set
++# CONFIG_MTD_OTP 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
++# CONFIG_MTD_OBSOLETE_CHIPS is not set
++
++#
++# Mapping drivers for chip access
++#
++# CONFIG_MTD_COMPLEX_MAPPINGS is not set
++CONFIG_MTD_PHYSMAP=y
++CONFIG_MTD_PHYSMAP_START=0xffc00000
++CONFIG_MTD_PHYSMAP_LEN=0x400000
++CONFIG_MTD_PHYSMAP_BANKWIDTH=1
++# 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_DEV_FD 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=y
++CONFIG_BLK_DEV_RAM_COUNT=2
++CONFIG_BLK_DEV_RAM_SIZE=8192
++CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
++CONFIG_BLK_DEV_INITRD=y
++# CONFIG_CDROM_PKTCDVD is not set
++# CONFIG_ATA_OVER_ETH is not set
++
++#
++# 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 is not set
++# CONFIG_CHR_DEV_OSST is not set
++# CONFIG_BLK_DEV_SR is not set
++CONFIG_CHR_DEV_SG=y
++# CONFIG_CHR_DEV_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 is not set
++# CONFIG_SCSI_SAS_ATTRS is not set
++# CONFIG_SCSI_SAS_LIBSAS 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_ACARD is not set
++# CONFIG_SCSI_AACRAID is not set
++# CONFIG_SCSI_AIC7XXX is not set
++# CONFIG_SCSI_AIC7XXX_OLD is not set
++# CONFIG_SCSI_AIC79XX is not set
++# CONFIG_SCSI_AIC94XX is not set
++# CONFIG_SCSI_DPT_I2O is not set
++# CONFIG_SCSI_ARCMSR is not set
++# CONFIG_MEGARAID_NEWGEN is not set
++# CONFIG_MEGARAID_LEGACY is not set
++# CONFIG_MEGARAID_SAS is not set
++# CONFIG_SCSI_HPTIOP is not set
++# CONFIG_SCSI_BUSLOGIC is not set
++# CONFIG_SCSI_DMX3191D is not set
++# CONFIG_SCSI_EATA is not set
++# CONFIG_SCSI_FUTURE_DOMAIN is not set
++# CONFIG_SCSI_GDTH is not set
++# CONFIG_SCSI_IPS is not set
++# CONFIG_SCSI_INITIO is not set
++# CONFIG_SCSI_INIA100 is not set
++# CONFIG_SCSI_STEX is not set
++# CONFIG_SCSI_SYM53C8XX_2 is not set
++# CONFIG_SCSI_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=y
++# 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 is not set
++# CONFIG_SATA_VITESSE is not set
++# CONFIG_PATA_ALI is not set
++# CONFIG_PATA_AMD is not set
++# CONFIG_PATA_ARTOP is not set
++# 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=y
++# CONFIG_PATA_SIS is not set
++# CONFIG_PATA_VIA is not set
++# CONFIG_PATA_WINBOND is not set
++
++#
++# Multi-device support (RAID and LVM)
++#
++# CONFIG_MD 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
++
++#
++# Macintosh device drivers
++#
++# CONFIG_WINDFARM 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
++#
++
++#
++# Ethernet (10 or 100Mbit)
++#
++# CONFIG_NET_ETHERNET 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=y
++# CONFIG_R8169_NAPI is not set
++# CONFIG_SIS190 is not set
++# CONFIG_SKGE is not set
++# CONFIG_SKY2 is not set
++# CONFIG_SK98LIN is not set
++# 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_AIRO 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 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 is not set
++# CONFIG_SLIP is not set
++# 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
++
++#
++# Telephony Support
++#
++# CONFIG_PHONE is not set
++
++#
++# Input device support
++#
++CONFIG_INPUT=y
++# CONFIG_INPUT_FF_MEMLESS 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=m
++# 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_UINPUT=m
++
++#
++# Hardware I/O ports
++#
++CONFIG_SERIO=y
++# CONFIG_SERIO_I8042 is not set
++CONFIG_SERIO_SERPORT=y
++# CONFIG_SERIO_PCIPS2 is not set
++# 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_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_PCI=y
++CONFIG_SERIAL_8250_NR_UARTS=4
++CONFIG_SERIAL_8250_RUNTIME_UARTS=4
++# CONFIG_SERIAL_8250_EXTENDED is not set
++
++#
++# Non-8250 serial port support
++#
++CONFIG_SERIAL_CORE=y
++CONFIG_SERIAL_CORE_CONSOLE=y
++# CONFIG_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=y
++# CONFIG_NVRAM is not set
++# CONFIG_GEN_RTC 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_AGP is not set
++# 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=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_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_MPC=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=m
++# CONFIG_SENSORS_PCF8574 is not set
++# CONFIG_SENSORS_PCA9539 is not set
++# CONFIG_SENSORS_PCF8591 is not set
++# CONFIG_SENSORS_M41T00 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=y
++# CONFIG_HWMON_VID is not set
++# 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 is not set
++# 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_HWMON_DEBUG_CHIP is not set
++
++#
++# Misc devices
++#
++# CONFIG_TIFM_CORE is not set
++
++#
++# Multimedia devices
++#
++# CONFIG_VIDEO_DEV is not set
++
++#
++# Digital Video Broadcasting Devices
++#
++# CONFIG_DVB is not set
++# CONFIG_USB_DABUSB is not set
++
++#
++# Graphics support
++#
++CONFIG_FIRMWARE_EDID=y
++# CONFIG_FB is not set
++
++#
++# Console display driver support
++#
++# CONFIG_VGA_CONSOLE is not set
++CONFIG_DUMMY_CONSOLE=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_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 is not set
++# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
++# CONFIG_USB_EHCI_TT_NEWSCHED is not set
++# CONFIG_USB_ISP116X_HCD is not set
++CONFIG_USB_OHCI_HCD=y
++# CONFIG_USB_OHCI_BIG_ENDIAN is not set
++CONFIG_USB_OHCI_LITTLE_ENDIAN=y
++# CONFIG_USB_UHCI_HCD is not set
++# 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=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 Input Devices
++#
++# CONFIG_USB_HID is not set
++
++#
++# USB HID Boot Protocol drivers
++#
++# CONFIG_USB_KBD is not set
++# 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 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
++# CONFIG_USB_TRANCEVIBRATOR is not set
++
++#
++# USB Imaging devices
++#
++# CONFIG_USB_MDC800 is not set
++# CONFIG_USB_MICROTEK is not set
++
++#
++# USB Network Adapters
++#
++# CONFIG_USB_CATC is not set
++# CONFIG_USB_KAWETH is not set
++# CONFIG_USB_PEGASUS is not set
++# CONFIG_USB_RTL8150 is not set
++# CONFIG_USB_USBNET is not set
++CONFIG_USB_MON=y
++
++#
++# USB port drivers
++#
++
++#
++# USB Serial Converter support
++#
++CONFIG_USB_SERIAL=y
++CONFIG_USB_SERIAL_CONSOLE=y
++# CONFIG_USB_SERIAL_GENERIC is not set
++# CONFIG_USB_SERIAL_AIRCABLE is not set
++# CONFIG_USB_SERIAL_AIRPRIME is not set
++# CONFIG_USB_SERIAL_ARK3116 is not set
++# CONFIG_USB_SERIAL_BELKIN is not set
++# CONFIG_USB_SERIAL_WHITEHEAT is not set
++# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
++# CONFIG_USB_SERIAL_CP2101 is not set
++# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
++# CONFIG_USB_SERIAL_EMPEG is not set
++CONFIG_USB_SERIAL_FTDI_SIO=y
++# CONFIG_USB_SERIAL_FUNSOFT is not set
++# CONFIG_USB_SERIAL_VISOR is not set
++# CONFIG_USB_SERIAL_IPAQ is not set
++# CONFIG_USB_SERIAL_IR is not set
++# CONFIG_USB_SERIAL_EDGEPORT is not set
++# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
++# CONFIG_USB_SERIAL_GARMIN is not set
++# CONFIG_USB_SERIAL_IPW is not set
++# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
++# CONFIG_USB_SERIAL_KEYSPAN is not set
++# CONFIG_USB_SERIAL_KLSI is not set
++# CONFIG_USB_SERIAL_KOBIL_SCT is not set
++# CONFIG_USB_SERIAL_MCT_U232 is not set
++# CONFIG_USB_SERIAL_MOS7840 is not set
++# CONFIG_USB_SERIAL_NAVMAN is not set
++# CONFIG_USB_SERIAL_PL2303 is not set
++# CONFIG_USB_SERIAL_HP4X is not set
++# CONFIG_USB_SERIAL_SAFE is not set
++# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
++# CONFIG_USB_SERIAL_TI is not set
++# CONFIG_USB_SERIAL_CYBERJACK is not set
++# CONFIG_USB_SERIAL_XIRCOM is not set
++# CONFIG_USB_SERIAL_OPTION is not set
++# CONFIG_USB_SERIAL_OMNINET is not set
++
++#
++# 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_LED is not set
++# CONFIG_USB_CYPRESS_CY7C63 is not set
++# CONFIG_USB_CYTHERM is not set
++# CONFIG_USB_PHIDGET is not set
++# CONFIG_USB_IDMOUSE is not set
++# CONFIG_USB_FTDI_ELAN is not set
++# CONFIG_USB_APPLEDISPLAY is not set
++# CONFIG_USB_SISUSBVGA is not set
++# CONFIG_USB_LD is not set
++# CONFIG_USB_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
++
++#
++# LED devices
++#
++# CONFIG_NEW_LEDS is not set
++
++#
++# LED drivers
++#
++
++#
++# LED Triggers
++#
++
++#
++# InfiniBand support
++#
++# CONFIG_INFINIBAND is not set
++
++#
++# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
++#
++
++#
++# 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 is not set
++# CONFIG_RTC_DRV_DS1307 is not set
++# CONFIG_RTC_DRV_DS1553 is not set
++# CONFIG_RTC_DRV_ISL1208 is not set
++# CONFIG_RTC_DRV_DS1672 is not set
++# CONFIG_RTC_DRV_DS1742 is not set
++# CONFIG_RTC_DRV_PCF8563 is not set
++# CONFIG_RTC_DRV_PCF8583 is not set
++CONFIG_RTC_DRV_RS5C372=y
++# CONFIG_RTC_DRV_M48T86 is not set
++# CONFIG_RTC_DRV_TEST is not set
++# CONFIG_RTC_DRV_V3020 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=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 is not set
++# 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="iso8859-1"
++CONFIG_NTFS_FS=m
++# CONFIG_NTFS_DEBUG is not set
++# CONFIG_NTFS_RW is not set
++
++#
++# Pseudo filesystems
++#
++CONFIG_PROC_FS=y
++CONFIG_PROC_KCORE=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 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=y
++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 is not set
++CONFIG_NFSD_TCP=y
++CONFIG_ROOT_NFS=y
++CONFIG_LOCKD=y
++CONFIG_LOCKD_V4=y
++CONFIG_EXPORTFS=m
++CONFIG_NFS_ACL_SUPPORT=y
++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 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=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=m
++
++#
++# Library routines
++#
++# CONFIG_CRC_CCITT is not set
++# CONFIG_CRC16 is not set
++CONFIG_CRC32=y
++CONFIG_LIBCRC32C=m
++CONFIG_ZLIB_INFLATE=m
++CONFIG_ZLIB_DEFLATE=m
++CONFIG_PLIST=y
++
++#
++# Instrumentation Support
++#
++CONFIG_PROFILING=y
++CONFIG_OPROFILE=m
++
++#
++# Kernel hacking
++#
++# CONFIG_PRINTK_TIME is not set
++CONFIG_ENABLE_MUST_CHECK=y
++CONFIG_MAGIC_SYSRQ=y
++# CONFIG_UNUSED_SYMBOLS is not set
++CONFIG_DEBUG_KERNEL=y
++CONFIG_LOG_BUF_SHIFT=14
++CONFIG_DETECT_SOFTLOCKUP=y
++# CONFIG_SCHEDSTATS 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_RWSEMS 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_INFO is not set
++# CONFIG_DEBUG_FS is not set
++# CONFIG_DEBUG_VM is not set
++# CONFIG_DEBUG_LIST is not set
++CONFIG_FORCED_INLINING=y
++# CONFIG_HEADERS_CHECK is not set
++# CONFIG_RCU_TORTURE_TEST is not set
++# CONFIG_DEBUGGER is not set
++# CONFIG_BDI_SWITCH is not set
++# CONFIG_BOOTX_TEXT is not set
++# CONFIG_SERIAL_TEXT_DEBUG is not set
++# CONFIG_PPC_EARLY_DEBUG 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_MANAGER=m
++# CONFIG_CRYPTO_HMAC is not set
++# CONFIG_CRYPTO_NULL is not set
++CONFIG_CRYPTO_MD4=m
++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_ECB is not set
++# CONFIG_CRYPTO_CBC 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 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_TEST is not set
++
++#
++# Hardware crypto devices
++#
+diff --git a/arch/powerpc/platforms/embedded6xx/Kconfig b/arch/powerpc/platforms/embedded6xx/Kconfig
+index 234a861..c1c6748 100644
+--- a/arch/powerpc/platforms/embedded6xx/Kconfig
++++ b/arch/powerpc/platforms/embedded6xx/Kconfig
+@@ -76,6 +76,15 @@ config PRPMC800
+ Select SANDPOINT if configuring for a Motorola Sandpoint X3
+ (any flavor).
+
++config LINKSTATION
++ bool "Linkstation / Kurobox(HG) from Buffalo"
++ select MPIC
++ select FSL_SOC
++ select PPC_UDBG_16550 if SERIAL_8250
++ help
++ Select LINKSTATION if configuring for a PPC-based Linkstation
++ (LS-1) or Kurobox(HG) from Buffalo Technologies.
++
+ config MPC7448HPC2
+ bool "Freescale MPC7448HPC2(Taiga)"
+ select TSI108_BRIDGE
+@@ -210,7 +219,7 @@ config PPC_GEN550
+ depends on SANDPOINT || SPRUCE || PPLUS || \
+ PRPMC750 || PRPMC800 || LOPEC || \
+ (EV64260 && !SERIAL_MPSC) || CHESTNUT || RADSTONE_PPC7D || \
+- 83xx
++ 83xx || LINKSTATION
+ default y
+
+ config FORCE
+@@ -284,13 +293,13 @@ config HARRIER
+
+ config MPC10X_BRIDGE
+ bool
+- depends on POWERPMC250 || LOPEC || SANDPOINT
++ depends on POWERPMC250 || LOPEC || SANDPOINT || LINKSTATION
+ select PPC_INDIRECT_PCI
+ default y
+
+ config MPC10X_OPENPIC
+ bool
+- depends on POWERPMC250 || LOPEC || SANDPOINT
++ depends on POWERPMC250 || LOPEC || SANDPOINT || LINKSTATION
+ default y
+
+ config MPC10X_STORE_GATHERING
+diff --git a/arch/powerpc/platforms/embedded6xx/Makefile b/arch/powerpc/platforms/embedded6xx/Makefile
+index fa499fe..1f3edc7 100644
+--- a/arch/powerpc/platforms/embedded6xx/Makefile
++++ b/arch/powerpc/platforms/embedded6xx/Makefile
+@@ -3,3 +3,4 @@ #
+ #
+ obj-$(CONFIG_MPC7448HPC2) += mpc7448_hpc2.o
+ obj-$(CONFIG_SANDPOINT) += sandpoint.o
++obj-$(CONFIG_LINKSTATION) += linkstation.o ls_uart.o
+diff --git a/arch/powerpc/platforms/embedded6xx/linkstation.c b/arch/powerpc/platforms/embedded6xx/linkstation.c
+new file mode 100644
+index 0000000..30bcb5b
+--- /dev/null
++++ b/arch/powerpc/platforms/embedded6xx/linkstation.c
+@@ -0,0 +1,254 @@
++/*
++ * arch/powerpc/platforms/embedded6xx/linkstation.c
++ *
++ * Board setup routines for the Buffalo Linkstation / Kurobox Platform.
++ *
++ * Author: Mark A. Greer
++ * mgreer@mvista.com
++ *
++ * 2000-2003 (c) MontaVista Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++
++#include <linux/stddef.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/errno.h>
++#include <linux/reboot.h>
++#include <linux/pci.h>
++#include <linux/kdev_t.h>
++#include <linux/major.h>
++#include <linux/initrd.h>
++#include <linux/console.h>
++#include <linux/delay.h>
++#include <linux/ide.h>
++#include <linux/seq_file.h>
++#include <linux/root_dev.h>
++#include <linux/serial.h>
++#include <linux/tty.h> /* for linux/serial_core.h */
++#include <linux/serial_core.h>
++#include <linux/serial_reg.h>
++#include <linux/serial_8250.h>
++#include <linux/mtd/physmap.h>
++
++#include <asm/system.h>
++#include <asm/pgtable.h>
++#include <asm/page.h>
++#include <asm/time.h>
++#include <asm/dma.h>
++#include <asm/io.h>
++#include <asm/machdep.h>
++#include <asm/prom.h>
++#include <asm/smp.h>
++#include <asm/vga.h>
++#include <asm/i8259.h>
++#include <asm/mpic.h>
++#include <asm/todc.h>
++#include <asm/bootinfo.h>
++#include <asm/mpc10x.h>
++#include <asm/pci-bridge.h>
++#include <asm/ppc_sys.h>
++
++static struct mtd_partition linkstation_physmap_partitions[] = {
++ {
++ .name = "mtd_firmimg",
++ .offset = 0x000000,
++ .size = 0x300000,
++ },
++ {
++ .name = "mtd_bootcode",
++ .offset = 0x300000,
++ .size = 0x70000,
++ },
++ {
++ .name = "mtd_status",
++ .offset = 0x370000,
++ .size = 0x10000,
++ },
++ {
++ .name = "mtd_conf",
++ .offset = 0x380000,
++ .size = 0x80000,
++ },
++ {
++ .name = "mtd_allflash",
++ .offset = 0x000000,
++ .size = 0x400000,
++ },
++ {
++ .name = "mtd_data",
++ .offset = 0x310000,
++ .size = 0xf0000,
++ },
++};
++
++/*
++ * Buffalo linkstation interrupt routing.
++ */
++
++void __init linkstation_pcibios_fixup(void)
++{
++ struct pci_dev *dev = NULL;
++
++ for_each_pci_dev(dev)
++ pci_read_irq_line(dev);
++}
++
++static int __init add_bridge(struct device_node *dev)
++{
++ int len;
++ struct pci_controller *hose;
++ int *bus_range;
++
++ printk("Adding PCI host bridge %s\n", dev->full_name);
++
++ bus_range = (int *) get_property(dev, "bus-range", &len);
++ if (bus_range == NULL || len < 2 * sizeof(int))
++ printk(KERN_WARNING "Can't get bus-range for %s, assume"
++ " bus 0\n", dev->full_name);
++
++ hose = pcibios_alloc_controller();
++ if (hose == NULL)
++ return -ENOMEM;
++ hose->first_busno = bus_range ? bus_range[0] : 0;
++ hose->last_busno = bus_range ? bus_range[1] : 0xff;
++ hose->arch_data = dev;
++ setup_indirect_pci(hose, 0xfec00000, 0xfee00000);
++
++ /* Interpret the "ranges" property */
++ /* This also maps the I/O region and sets isa_io/mem_base */
++ pci_process_bridge_OF_ranges(hose, dev, 1);
++
++ return 0;
++}
++
++static void __init linkstation_setup_arch(void)
++{
++ struct device_node *np;
++#ifdef CONFIG_MTD_PHYSMAP
++ physmap_set_partitions(linkstation_physmap_partitions,
++ ARRAY_SIZE(linkstation_physmap_partitions));
++#endif
++
++#ifdef CONFIG_BLK_DEV_INITRD
++ if (initrd_start)
++ ROOT_DEV = Root_RAM0;
++ else
++#endif
++#ifdef CONFIG_ROOT_NFS
++ ROOT_DEV = Root_NFS;
++#else
++ ROOT_DEV = Root_HDA1;
++#endif
++
++ /* Lookup PCI host bridges */
++ for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
++ add_bridge(np);
++
++ ppc_md.pci_swizzle = common_swizzle;
++
++ printk(KERN_INFO "BUFFALO Network Attached Storage Series\n");
++ printk(KERN_INFO "(C) 2002-2005 BUFFALO INC.\n");
++}
++
++/*
++ * Interrupt setup and service. Interrrupts on the linkstation come
++ * from the four PCI slots plus onboard 8241 devices: I2C, DUART.
++ */
++static void __init linkstation_init_IRQ(void)
++{
++ struct mpic *mpic;
++ struct device_node *dnp;
++ void *prop;
++ int size;
++ phys_addr_t paddr;
++
++ dnp = of_find_node_by_type(NULL, "open-pic");
++ if (dnp == NULL)
++ return;
++
++ prop = (struct device_node *)get_property(dnp, "reg", &size);
++ paddr = (phys_addr_t)of_translate_address(dnp, prop);
++
++ mpic = mpic_alloc(dnp, paddr, MPIC_PRIMARY | MPIC_WANTS_RESET, 4, 32, " EPIC ");
++ BUG_ON(mpic == NULL);
++
++ /* PCI IRQs */
++ mpic_assign_isu(mpic, 0, paddr + 0x10200);
++
++ /* I2C */
++ mpic_assign_isu(mpic, 1, paddr + 0x11000);
++
++ /* ttyS0, ttyS1 */
++ mpic_assign_isu(mpic, 2, paddr + 0x11100);
++
++ mpic_init(mpic);
++}
++
++extern void avr_uart_configure(void);
++extern void avr_uart_send(const char);
++
++static void linkstation_restart(char *cmd)
++{
++ local_irq_disable();
++
++ /* Reset system via AVR */
++ avr_uart_configure();
++ /* Send reboot command */
++ avr_uart_send('C');
++
++ for(;;) /* Spin until reset happens */
++ avr_uart_send('G'); /* "kick" */
++}
++
++static void linkstation_power_off(void)
++{
++ local_irq_disable();
++
++ avr_uart_configure();
++ /* send shutdown command */
++ avr_uart_send('E');
++
++ for(;;) /* Spin until power-off happens */
++ avr_uart_send('G'); /* "kick" */
++ /* NOTREACHED */
++}
++
++static void linkstation_halt(void)
++{
++ linkstation_power_off();
++ /* NOTREACHED */
++}
++
++static void linkstation_show_cpuinfo(struct seq_file *m)
++{
++ seq_printf(m, "vendor\t\t: Buffalo Technology\n");
++ seq_printf(m, "machine\t\t: Linkstation I/Kurobox(HG)\n");
++}
++
++static int __init linkstation_probe(void)
++{
++ unsigned long root;
++
++ root = of_get_flat_dt_root();
++
++ if (!of_flat_dt_is_compatible(root, "linkstation"))
++ return 0;
++ return 1;
++}
++
++define_machine(linkstation){
++ .name = "Buffalo Linkstation",
++ .probe = linkstation_probe,
++ .setup_arch = linkstation_setup_arch,
++ .init_IRQ = linkstation_init_IRQ,
++ .show_cpuinfo = linkstation_show_cpuinfo,
++ .pcibios_fixup = linkstation_pcibios_fixup,
++ .get_irq = mpic_get_irq,
++ .restart = linkstation_restart,
++ .power_off = linkstation_power_off,
++ .halt = linkstation_halt,
++ .calibrate_decr = generic_calibrate_decr,
++};
+diff --git a/arch/powerpc/platforms/embedded6xx/ls_uart.c b/arch/powerpc/platforms/embedded6xx/ls_uart.c
+new file mode 100644
+index 0000000..b640115
+--- /dev/null
++++ b/arch/powerpc/platforms/embedded6xx/ls_uart.c
+@@ -0,0 +1,131 @@
++#include <linux/workqueue.h>
++#include <linux/string.h>
++#include <linux/delay.h>
++#include <linux/serial_reg.h>
++#include <linux/serial_8250.h>
++#include <asm/io.h>
++#include <asm/mpc10x.h>
++#include <asm/ppc_sys.h>
++#include <asm/prom.h>
++#include <asm/termbits.h>
++
++static void __iomem *avr_addr;
++static unsigned long avr_clock;
++
++static struct work_struct wd_work;
++
++static void wd_stop(void *unused)
++{
++ const char string[] = "AAAAFFFFJJJJ>>>>VVVV>>>>ZZZZVVVVKKKK";
++ int i = 0, rescue = 8;
++ int len = strlen(string);
++
++ while (rescue--) {
++ int j;
++ char lsr = in_8(avr_addr + UART_LSR);
++
++ if (lsr & (UART_LSR_THRE | UART_LSR_TEMT)) {
++ for (j = 0; j < 16 && i < len; j++, i++)
++ out_8(avr_addr + UART_TX, string[i]);
++ if (i == len) {
++ /* Read "OK" back: 4ms for the last "KKKK"
++ plus a couple bytes back */
++ msleep(7);
++ printk("linkstation: disarming the AVR watchdog: ");
++ while (in_8(avr_addr + UART_LSR) & UART_LSR_DR)
++ printk("%c", in_8(avr_addr + UART_RX));
++ break;
++ }
++ }
++ msleep(17);
++ }
++ printk("\n");
++}
++
++#define AVR_QUOT(clock) ((clock) + 8 * 9600) / (16 * 9600)
++
++void avr_uart_configure(void)
++{
++ unsigned char cval = UART_LCR_WLEN8;
++ unsigned int quot = AVR_QUOT(avr_clock);
++
++ if (!avr_addr || !avr_clock)
++ return;
++
++ out_8(avr_addr + UART_LCR, cval); /* initialise UART */
++ out_8(avr_addr + UART_MCR, 0);
++ out_8(avr_addr + UART_IER, 0);
++
++ cval |= UART_LCR_STOP | UART_LCR_PARITY | UART_LCR_EPAR;
++
++ out_8(avr_addr + UART_LCR, cval); /* Set character format */
++
++ out_8(avr_addr + UART_LCR, cval | UART_LCR_DLAB); /* set DLAB */
++ out_8(avr_addr + UART_DLL, quot & 0xff); /* LS of divisor */
++ out_8(avr_addr + UART_DLM, quot >> 8); /* MS of divisor */
++ out_8(avr_addr + UART_LCR, cval); /* reset DLAB */
++ out_8(avr_addr + UART_FCR, UART_FCR_ENABLE_FIFO); /* enable FIFO */
++}
++
++void avr_uart_send(const char c)
++{
++ if (!avr_addr || !avr_clock)
++ return;
++
++ out_8(avr_addr + UART_TX, c);
++ out_8(avr_addr + UART_TX, c);
++ out_8(avr_addr + UART_TX, c);
++ out_8(avr_addr + UART_TX, c);
++}
++
++static void __init ls_uart_init(void)
++{
++ local_irq_disable();
++
++#ifndef CONFIG_SERIAL_8250
++ out_8(avr_addr + UART_FCR, UART_FCR_ENABLE_FIFO); /* enable FIFO */
++ out_8(avr_addr + UART_FCR, UART_FCR_ENABLE_FIFO |
++ UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT); /* clear FIFOs */
++ out_8(avr_addr + UART_FCR, 0);
++ out_8(avr_addr + UART_IER, 0);
++
++ /* Clear up interrupts */
++ (void) in_8(avr_addr + UART_LSR);
++ (void) in_8(avr_addr + UART_RX);
++ (void) in_8(avr_addr + UART_IIR);
++ (void) in_8(avr_addr + UART_MSR);
++#endif
++ avr_uart_configure();
++
++ local_irq_enable();
++}
++
++static int __init ls_uarts_init(void)
++{
++ struct device_node *avr;
++ phys_addr_t phys_addr;
++ int len;
++
++ avr = of_find_node_by_path("/soc10x/serial@80004500");
++ if (!avr)
++ return -EINVAL;
++
++ avr_clock = *(u32*)get_property(avr, "clock-frequency", &len);
++ phys_addr = ((u32*)get_property(avr, "reg", &len))[0];
++
++ if (!avr_clock || !phys_addr)
++ return -EINVAL;
++
++ avr_addr = ioremap(phys_addr, 32);
++ if (!avr_addr)
++ return -EFAULT;
++
++ ls_uart_init();
++
++ INIT_WORK(&wd_work, wd_stop, NULL);
++ schedule_work(&wd_work);
++
++ return 0;
++}
++
++late_initcall(ls_uarts_init);
+diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
+index f1c7575..25cd8de 100644
+--- a/drivers/net/r8169.c
++++ b/drivers/net/r8169.c
+@@ -1396,41 +1396,6 @@ static void rtl8169_netpoll(struct net_d
+ }
+ #endif
+
+-static void __rtl8169_set_mac_addr(struct net_device *dev, void __iomem *ioaddr)
+-{
+- unsigned int i, j;
+-
+- RTL_W8(Cfg9346, Cfg9346_Unlock);
+- for (i = 0; i < 2; i++) {
+- __le32 l = 0;
+-
+- for (j = 0; j < 4; j++) {
+- l <<= 8;
+- l |= dev->dev_addr[4*i + j];
+- }
+- RTL_W32(MAC0 + 4*i, cpu_to_be32(l));
+- }
+- RTL_W8(Cfg9346, Cfg9346_Lock);
+-}
+-
+-static int rtl8169_set_mac_addr(struct net_device *dev, void *p)
+-{
+- struct rtl8169_private *tp = netdev_priv(dev);
+- struct sockaddr *addr = p;
+-
+- if (!is_valid_ether_addr(addr->sa_data))
+- return -EINVAL;
+-
+- memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
+-
+- if (netif_running(dev)) {
+- spin_lock_irq(&tp->lock);
+- __rtl8169_set_mac_addr(dev, tp->mmio_addr);
+- spin_unlock_irq(&tp->lock);
+- }
+- return 0;
+-}
+-
+ static void rtl8169_release_board(struct pci_dev *pdev, struct net_device *dev,
+ void __iomem *ioaddr)
+ {
+@@ -1680,7 +1645,6 @@ rtl8169_init_one(struct pci_dev *pdev, c
+ dev->stop = rtl8169_close;
+ dev->tx_timeout = rtl8169_tx_timeout;
+ dev->set_multicast_list = rtl8169_set_rx_mode;
+- dev->set_mac_address = rtl8169_set_mac_addr;
+ dev->watchdog_timeo = RTL8169_TX_TIMEOUT;
+ dev->irq = pdev->irq;
+ dev->base_addr = (unsigned long) ioaddr;
+@@ -1928,8 +1892,6 @@ rtl8169_hw_start(struct net_device *dev)
+ /* Enable all known interrupts by setting the interrupt mask. */
+ RTL_W16(IntrMask, rtl8169_intr_mask);
+
+- __rtl8169_set_mac_addr(dev, ioaddr);
+-
+ netif_start_queue(dev);
+ }
+
diff --git a/packages/uboot/u-boot-1.2.0/qnap.diff b/packages/uboot/u-boot-1.2.0/qnap.diff
new file mode 100644
index 0000000000..b9ac34e6a8
--- /dev/null
+++ b/packages/uboot/u-boot-1.2.0/qnap.diff
@@ -0,0 +1,1089 @@
+--- u-boot-1.2.0.vanilla/board/qnap/config.mk 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.2.0/board/qnap/config.mk 2007-02-26 01:55:37.000000000 +0100
+@@ -0,0 +1,35 @@
++#
++# (C) Copyright 2000, 2001
++# 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
++#
++# Valid values for TEXT_BASE are:
++#
++# Standard configuration
++# 0xFFF00000 boot from flash
++#
++# Standard configuration
++# 0xFFF60000 chain boot from flash
++#
++
++
++TEXT_BASE = 0xFFF60000
++
++PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
+--- u-boot-1.2.0.vanilla/board/qnap/ide.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.2.0/board/qnap/ide.c 2007-02-26 01:55:37.000000000 +0100
+@@ -0,0 +1,67 @@
++/*
++ * (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
++ */
++
++ #include <common.h>
++
++#ifdef CFG_CMD_IDE
++#include <ata.h>
++#include <ide.h>
++#include <pci.h>
++
++extern ulong ide_bus_offset[CFG_IDE_MAXBUS];
++extern struct pci_controller hose;
++
++int ide_preinit (void)
++{
++ int status;
++ pci_dev_t devbusfn;
++ int l;
++
++ status = 1;
++ for (l = 0; l < CFG_IDE_MAXBUS; l++) {
++ ide_bus_offset[l] = -ATA_STATUS;
++ }
++ devbusfn = pci_find_device (0x1095, 0x3512, 0);
++
++ if (devbusfn != -1) {
++
++ status = 0;
++
++ pci_read_config_dword (devbusfn, PCI_BASE_ADDRESS_0,
++ (u32 *) &ide_bus_offset[0]);
++ ide_bus_offset[0] &= 0xfffffffe;
++ ide_bus_offset[0] = pci_hose_bus_to_phys(&hose,
++ ide_bus_offset[0] & 0xfffffffe,
++ PCI_REGION_IO);
++
++ pci_read_config_dword (devbusfn, PCI_BASE_ADDRESS_2,
++ (u32 *) &ide_bus_offset[1]);
++ ide_bus_offset[1] &= 0xfffffffe;
++ ide_bus_offset[1] = pci_hose_bus_to_phys(&hose,
++ ide_bus_offset[1] & 0xfffffffe,
++ PCI_REGION_IO);
++ }
++ return (status);
++}
++
++#endif /* of CONFIG_CMDS_IDE */
+--- u-boot-1.2.0.vanilla/board/qnap/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.2.0/board/qnap/Makefile 2007-02-26 01:55:37.000000000 +0100
+@@ -0,0 +1,40 @@
++#
++# (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
++#
++
++include $(TOPDIR)/config.mk
++
++LIB = lib$(BOARD).a
++
++OBJS = $(BOARD).o ide.o
++
++$(LIB): .depend $(OBJS)
++ $(AR) crv $@ $(OBJS)
++
++#########################################################################
++
++.depend: Makefile $(OBJS:.o=.c)
++ $(CC) -M $(CFLAGS) $(OBJS:.o=.c) > $@
++
++sinclude .depend
++
++#########################################################################
+--- u-boot-1.2.0.vanilla/board/qnap/qnap.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.2.0/board/qnap/qnap.c 2007-02-26 01:55:37.000000000 +0100
+@@ -0,0 +1,126 @@
++/*
++ * Copyright (C) 2006 Andrew Luyten <u-boot@luyten.org.uk>
++ *
++ * Copyright (C) 2000
++ * Rob Taylor, Flying Pig Systems. robt@flyingpig.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
++ *
++ */
++
++#include <common.h>
++#include <mpc824x.h>
++#include <pci.h>
++
++int checkboard (void)
++{
++ ulong busfreq = get_bus_freq(0);
++ char buf[32];
++
++ printf("Board: QNAP TS-101/TS-201 local bus at %s MHz\n", strmhz(buf, busfreq));
++ return 0;
++}
++
++
++long int initdram (int board_type)
++{
++ long size;
++ long new_bank0_end;
++ long mear1;
++ long emear1;
++
++ size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE);
++
++ new_bank0_end = size - 1;
++ mear1 = mpc824x_mpc107_getreg(MEAR1);
++ emear1 = mpc824x_mpc107_getreg(EMEAR1);
++ mear1 = (mear1 & 0xFFFFFF00) |
++ ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
++ emear1 = (emear1 & 0xFFFFFF00) |
++ ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
++ mpc824x_mpc107_setreg(MEAR1, mear1);
++ mpc824x_mpc107_setreg(EMEAR1, emear1);
++
++ return (size);
++}
++
++/*
++ * Initialize PCI Devices, report devices found.
++ */
++#ifndef CONFIG_PCI_PNP
++
++static struct pci_config_table pci_qnap_config_table[] = {
++ /* vendor, device, class */
++ /* bus, dev, func */
++
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0f, 0, /* RTL8110SC or Intel 82540EM */
++ /* Gigabit ethernet controller */
++ pci_cfgfunc_config_device, { PCI_ETH_IOADDR,
++ PCI_ETH_MEMADDR,
++ PCI_COMMAND_IO |
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0d, 0, /* SII3512 */
++ /* SATA controller */
++ pci_cfgfunc_config_device, { PCI_IDE_IOADDR,
++ PCI_IDE_MEMADDR,
++ PCI_COMMAND_IO |
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0e, 0, /* D720101 USB controller, 1st USB 1.1 */
++ pci_cfgfunc_config_device, { PCI_USB0_IOADDR,
++ PCI_USB0_MEMADDR,
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0e, 1, /* D720101 USB controller, 2nd USB 1.1 */
++ pci_cfgfunc_config_device, { PCI_USB1_IOADDR,
++ PCI_USB1_MEMADDR,
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0e, 2, /* D720101 USB controller, USB 2.0 */
++ pci_cfgfunc_config_device, { PCI_USB2_IOADDR,
++ PCI_USB2_MEMADDR,
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++ { }
++};
++#endif
++
++struct pci_controller hose = {
++#ifndef CONFIG_PCI_PNP
++ config_table: pci_qnap_config_table,
++#endif
++};
++
++void pci_init_board(void)
++{
++ pci_mpc824x_init(&hose);
++
++ /* Reset USB 1.1 !/
++ out_le32(PCI_USB0_MEMADDR+8, 1);
++ out_le32(PCI_USB1_MEMADDR+8, 1);
++ */
++}
+--- u-boot-1.2.0.vanilla/board/qnap/README 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.2.0/board/qnap/README 2007-02-26 01:55:37.000000000 +0100
+@@ -0,0 +1,10 @@
++*This port of U-Boot will run on a QNAP TS-101/TS-201 NAS*
++Andrew Luyten (u-boot@luyten.org.uk)
++
++Adapted from a Linkstation port by Mihai Georgian
++http://http://www.linuxnotincluded.org.uk/
++
++Adapted from Motorola Sandpoint 3 development system equipped with
++a Unity X4 PPMC card (MPC8240 CPU) only. It is a snapshot of work
++in progress and far from being completed.
++Thomas Koeller
+--- u-boot-1.2.0.vanilla/board/qnap/u-boot.lds 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.2.0/board/qnap/u-boot.lds 2007-02-26 01:55:37.000000000 +0100
+@@ -0,0 +1,136 @@
++/*
++ * (C) Copyright 2001
++ * 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
++{
++ /* 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/mpc824x/start.o (.text)
++ lib_ppc/board.o (.text)
++ lib_ppc/ppcstring.o (.text)
++ lib_generic/vsprintf.o (.text)
++ lib_generic/crc32.o (.text)
++ lib_generic/zlib.o (.text)
++
++ . = DEFINED(env_offset) ? env_offset : .;
++ common/environment.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 = .);
++}
+--- u-boot-1.2.0.vanilla/cpu/mpc824x/cpu.c 2007-01-07 00:13:11.000000000 +0100
++++ u-boot-1.2.0/cpu/mpc824x/cpu.c 2007-02-26 01:55:37.000000000 +0100
+@@ -44,7 +44,11 @@
+ break;
+
+ case CPU_TYPE_8245:
++#ifdef CONFIG_MPC8241
++ puts ("MPC8241"); /* impossible to distinguish using chip registers */
++#else
+ puts ("MPC8245");
++#endif
+ break;
+
+ default:
+--- u-boot-1.2.0.vanilla/drivers/rtl8169.c 2007-01-07 00:13:11.000000000 +0100
++++ u-boot-1.2.0/drivers/rtl8169.c 2007-02-26 01:55:37.000000000 +0100
+@@ -48,7 +48,10 @@
+ *
+ * Indent Options: indent -kr -i8
+ ***************************************************************************/
+-
++/*
++ * 26 August 2006 Mihai Georgian <u-boot@linuxnotincluded.org.uk>
++ * Modified to use le32_to_cpu and cpu_to_le32 properly
++ */
+ #include <common.h>
+ #include <malloc.h>
+ #include <net.h>
+@@ -68,6 +71,7 @@
+ static u32 ioaddr;
+
+ /* Condensed operations for readability. */
++#define virt_to_bus(addr) cpu_to_le32(addr)
+ #define virt_to_le32desc(addr) cpu_to_le32(virt_to_bus(addr))
+ #define le32desc_to_virt(addr) bus_to_virt(le32_to_cpu(addr))
+
+@@ -247,8 +251,15 @@
+ u8 version; /* depend on RTL8169 docs */
+ u32 RxConfigMask; /* should clear the bits supported by this chip */
+ } rtl_chip_info[] = {
+- {"RTL-8169", 0x00, 0xff7e1880,},
+- {"RTL-8169", 0x04, 0xff7e1880,},
++ {"RTL8169", 0x00, 0xff7e1880,},
++ {"RTL8169s/8110s", 0x02, 0xff7e1880,},
++ {"RTL8169s/8110s", 0x04, 0xff7e1880,},
++ {"RTL8169sb/8110sb", 0x10, 0xff7e1880,},
++ {"RTL8169sc/8110sc", 0x18, 0xff7e1880,},
++ {"RTL8168b/8111sb", 0x30, 0xff7e1880,},
++ {"RTL8168b/8111sb", 0x38, 0xff7e1880,},
++ {"RTL8101e", 0x34, 0xff7e1880,},
++ {"RTL8100e", 0x32, 0xff7e1880,},
+ };
+
+ enum _DescStatusBit {
+@@ -315,6 +326,7 @@
+
+ static struct pci_device_id supported[] = {
+ {PCI_VENDOR_ID_REALTEK, 0x8169},
++ {PCI_VENDOR_ID_REALTEK, 0x8167},
+ {}
+ };
+
+@@ -383,13 +395,15 @@
+ for (i = ARRAY_SIZE(rtl_chip_info) - 1; i >= 0; i--){
+ if (tmp == rtl_chip_info[i].version) {
+ tpc->chipset = i;
++ printf ("%s... ", rtl_chip_info[i].name);
+ goto match;
+ }
+ }
+
+ /* if unknown chip, assume array element #0, original RTL-8169 in this case */
+ printf("PCI device %s: unknown chip version, assuming RTL-8169\n", dev->name);
+- printf("PCI device: TxConfig = 0x%hX\n", (unsigned long) RTL_R32(TxConfig));
++ printf("PCI device: TxConfig = 0x%lX\n", (unsigned long) RTL_R32(TxConfig));
++
+ tpc->chipset = 0;
+
+ match:
+@@ -413,23 +427,23 @@
+ ioaddr = dev->iobase;
+
+ cur_rx = tpc->cur_rx;
+- if ((tpc->RxDescArray[cur_rx].status & OWNbit) == 0) {
+- if (!(tpc->RxDescArray[cur_rx].status & RxRES)) {
++ if ((le32_to_cpu(tpc->RxDescArray[cur_rx].status) & OWNbit) == 0) {
++ if (!(le32_to_cpu(tpc->RxDescArray[cur_rx].status) & RxRES)) {
+ unsigned char rxdata[RX_BUF_LEN];
+- length = (int) (tpc->RxDescArray[cur_rx].
+- status & 0x00001FFF) - 4;
++ length = (int) (le32_to_cpu(tpc->RxDescArray[cur_rx].
++ status) & 0x00001FFF) - 4;
+
+ memcpy(rxdata, tpc->RxBufferRing[cur_rx], length);
+ NetReceive(rxdata, length);
+
+ if (cur_rx == NUM_RX_DESC - 1)
+ tpc->RxDescArray[cur_rx].status =
+- (OWNbit | EORbit) + RX_BUF_SIZE;
++ cpu_to_le32((OWNbit | EORbit) + RX_BUF_SIZE);
+ else
+ tpc->RxDescArray[cur_rx].status =
+- OWNbit + RX_BUF_SIZE;
++ cpu_to_le32(OWNbit + RX_BUF_SIZE);
+ tpc->RxDescArray[cur_rx].buf_addr =
+- virt_to_bus(tpc->RxBufferRing[cur_rx]);
++ cpu_to_le32((u32)tpc->RxBufferRing[cur_rx]);
+ } else {
+ puts("Error Rx");
+ }
+@@ -454,6 +468,7 @@
+ u8 *ptxb;
+ int entry = tpc->cur_tx % NUM_TX_DESC;
+ u32 len = length;
++ int ret;
+
+ #ifdef DEBUG_RTL8169_TX
+ int stime = currticks();
+@@ -465,39 +480,46 @@
+
+ /* point to the current txb incase multiple tx_rings are used */
+ ptxb = tpc->Tx_skbuff[entry * MAX_ETH_FRAME_SIZE];
++#ifdef DEBUG_RTL8169_TX
++ printf("ptxb: %08X, length: %d\n", ptxb, (int)length);
++#endif
+ memcpy(ptxb, (char *)packet, (int)length);
+
+ while (len < ETH_ZLEN)
+ ptxb[len++] = '\0';
+
+- tpc->TxDescArray[entry].buf_addr = virt_to_bus(ptxb);
++ tpc->TxDescArray[entry].buf_addr = cpu_to_le32((u32)ptxb);
+ if (entry != (NUM_TX_DESC - 1)) {
+ tpc->TxDescArray[entry].status =
+- (OWNbit | FSbit | LSbit) | ((len > ETH_ZLEN) ?
+- len : ETH_ZLEN);
++ cpu_to_le32((OWNbit | FSbit | LSbit) |
++ ((len > ETH_ZLEN) ? len : ETH_ZLEN));
+ } else {
+ tpc->TxDescArray[entry].status =
+- (OWNbit | EORbit | FSbit | LSbit) |
+- ((len > ETH_ZLEN) ? length : ETH_ZLEN);
++ cpu_to_le32((OWNbit | EORbit | FSbit | LSbit) |
++ ((len > ETH_ZLEN) ? len : ETH_ZLEN));
+ }
+ RTL_W8(TxPoll, 0x40); /* set polling bit */
+
+ tpc->cur_tx++;
+ to = currticks() + TX_TIMEOUT;
+- while ((tpc->TxDescArray[entry].status & OWNbit) && (currticks() < to)); /* wait */
++ while ((le32_to_cpu(tpc->TxDescArray[entry].status) & OWNbit)
++ && (currticks() < to)); /* wait */
+
+ if (currticks() >= to) {
+ #ifdef DEBUG_RTL8169_TX
+ puts ("tx timeout/error\n");
+ printf ("%s elapsed time : %d\n", __FUNCTION__, currticks()-stime);
+ #endif
+- return 0;
++ ret = 0;
+ } else {
+ #ifdef DEBUG_RTL8169_TX
+ puts("tx done\n");
+ #endif
+- return length;
++ ret = length;
+ }
++ /* Delay to make net console (nc) work properly */
++ udelay(20);
++ return ret;
+ }
+
+ static void rtl8169_set_rx_mode(struct eth_device *dev)
+@@ -564,8 +586,8 @@
+
+ tpc->cur_rx = 0;
+
+- RTL_W32(TxDescStartAddr, virt_to_le32desc(tpc->TxDescArray));
+- RTL_W32(RxDescStartAddr, virt_to_le32desc(tpc->RxDescArray));
++ RTL_W32(TxDescStartAddr, virt_to_le32desc((u32)tpc->TxDescArray));
++ RTL_W32(RxDescStartAddr, virt_to_le32desc((u32)tpc->RxDescArray));
+ RTL_W8(Cfg9346, Cfg9346_Lock);
+ udelay(10);
+
+@@ -603,13 +625,14 @@
+ for (i = 0; i < NUM_RX_DESC; i++) {
+ if (i == (NUM_RX_DESC - 1))
+ tpc->RxDescArray[i].status =
+- (OWNbit | EORbit) + RX_BUF_SIZE;
++ cpu_to_le32((OWNbit | EORbit) + RX_BUF_SIZE);
+ else
+- tpc->RxDescArray[i].status = OWNbit + RX_BUF_SIZE;
++ tpc->RxDescArray[i].status =
++ cpu_to_le32(OWNbit + RX_BUF_SIZE);
+
+ tpc->RxBufferRing[i] = &rxb[i * RX_BUF_SIZE];
+ tpc->RxDescArray[i].buf_addr =
+- virt_to_bus(tpc->RxBufferRing[i]);
++ cpu_to_le32((u32)tpc->RxBufferRing[i]);
+ }
+
+ #ifdef DEBUG_RTL8169
+@@ -620,7 +643,7 @@
+ /**************************************************************************
+ RESET - Finish setting up the ethernet interface
+ ***************************************************************************/
+-static void rtl_reset(struct eth_device *dev, bd_t *bis)
++static int rtl_reset(struct eth_device *dev, bd_t *bis)
+ {
+ int i;
+ u8 diff;
+@@ -635,21 +658,27 @@
+ if (tpc->TxDescArrays == 0)
+ puts("Allot Error");
+ /* Tx Desscriptor needs 256 bytes alignment; */
+- TxPhyAddr = virt_to_bus(tpc->TxDescArrays);
++ TxPhyAddr = (u32)tpc->TxDescArrays;
+ diff = 256 - (TxPhyAddr - ((TxPhyAddr >> 8) << 8));
+ TxPhyAddr += diff;
+ tpc->TxDescArray = (struct TxDesc *) (tpc->TxDescArrays + diff);
++#ifdef DEBUG_RTL8169
++ printf("tpc->TxDescArray: %08X\n", tpc->TxDescArray);
++#endif
+
+ tpc->RxDescArrays = rx_ring;
+ /* Rx Desscriptor needs 256 bytes alignment; */
+- RxPhyAddr = virt_to_bus(tpc->RxDescArrays);
++ RxPhyAddr = (u32)tpc->RxDescArrays;
+ diff = 256 - (RxPhyAddr - ((RxPhyAddr >> 8) << 8));
+ RxPhyAddr += diff;
+ tpc->RxDescArray = (struct RxDesc *) (tpc->RxDescArrays + diff);
++#ifdef DEBUG_RTL8169
++ printf("tpc->RxDescArray: %08X\n", tpc->RxDescArray);
++#endif
+
+ if (tpc->TxDescArrays == NULL || tpc->RxDescArrays == NULL) {
+ puts("Allocate RxDescArray or TxDescArray failed\n");
+- return;
++ return 0;
+ }
+
+ rtl8169_init_ring(dev);
+@@ -669,6 +698,7 @@
+ #ifdef DEBUG_RTL8169
+ printf ("%s elapsed time : %d\n", __FUNCTION__, currticks()-stime);
+ #endif
++ return 1;
+ }
+
+ /**************************************************************************
+@@ -733,7 +763,7 @@
+
+ /* Get MAC address. FIXME: read EEPROM */
+ for (i = 0; i < MAC_ADDR_LEN; i++)
+- dev->enetaddr[i] = RTL_R8(MAC0 + i);
++ bis->bi_enetaddr[i] = dev->enetaddr[i] = RTL_R8(MAC0 + i);
+
+ #ifdef DEBUG_RTL8169
+ printf("MAC Address");
+@@ -814,17 +844,14 @@
+ if (option & _1000bpsF) {
+ #ifdef DEBUG_RTL8169
+ printf("%s: 1000Mbps Full-duplex operation.\n",
+- dev->name);
++ dev->name);
+ #endif
+ } else {
+ #ifdef DEBUG_RTL8169
+- printf
+- ("%s: %sMbps %s-duplex operation.\n",
+- dev->name,
+- (option & _100bps) ? "100" :
+- "10",
+- (option & FullDup) ? "Full" :
+- "Half");
++ printf("%s: %sMbps %s-duplex operation.\n",
++ dev->name,
++ (option & _100bps) ? "100" : "10",
++ (option & FullDup) ? "Full" : "Half");
+ #endif
+ }
+ break;
+@@ -886,3 +913,5 @@
+ }
+
+ #endif
++
++/* vim: set ts=4: */
+--- u-boot-1.2.0.vanilla/include/configs/qnap.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.2.0/include/configs/qnap.h 2007-02-26 01:55:37.000000000 +0100
+@@ -0,0 +1,354 @@
++/*
++ * Copyright (C) 2006 Andrew Luyten <u-boot@luyten.org.uk>
++ *
++ * 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
++ */
++
++/* ------------------------------------------------------------------------- */
++
++/*
++ * board/config.h - configuration options, board specific
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++/*
++ * High Level Configuration Options
++ * (easy to change)
++ */
++
++#define CONFIG_MPC824X 1
++#define CONFIG_MPC8245 1
++#define CONFIG_MPC8241 1
++
++#define CONFIG_IDENT_STRING " OpenTS(c)"
++#define CONFIG_TIMESTAMP
++#define CFG_HUSH_PARSER 1
++#define CFG_PROMPT_HUSH_PS2 "turbostation> "
++#define CONFIG_BOOTDELAY 3
++
++
++/*----------------------------------------------------------------------
++ * Define supported commands
++ */
++
++#define CONFIG_COMMANDS ( \
++ CONFIG_CMD_DFL | \
++ CFG_CMD_ELF | \
++ CFG_CMD_I2C | \
++ CFG_CMD_PING | \
++ CFG_CMD_DHCP | \
++ CFG_CMD_IDE | \
++ CFG_CMD_EXT2 | \
++ CFG_CMD_DATE | \
++ CFG_CMD_PCI )
++
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++
++/*-----------------------------------------------------------------------
++ * Miscellaneous configurable options
++ */
++
++#define CFG_LONGHELP 1 /* undef to save memory */
++#define CFG_PROMPT "=> " /* Monitor Command Prompt*/
++#define CFG_CBSIZE 256 /* Console I/O Buffer Size*/
++#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_LOAD_ADDR 0x00100000 /* default load address */
++#define CFG_HZ 1000 /* decrementer freq:1 ms ticks*/
++
++
++/*-----------------------------------------------------------------------
++ * PCI
++ *
++ */
++
++#define CONFIG_PCI
++#undef CONFIG_PCI_PNP
++
++#define PCI_ETH_IOADDR 0xbffe00
++#define PCI_ETH_MEMADDR 0xbfffce00
++
++#define PCI_IDE_IOADDR 0xbfffd0
++#define PCI_IDE_MEMADDR 0xbffffe00
++
++#define PCI_USB0_IOADDR 0
++#define PCI_USB0_MEMADDR 0xbfffe000
++#define PCI_USB1_IOADDR 0
++#define PCI_USB1_MEMADDR 0xbfffd000
++#define PCI_USB2_IOADDR 0
++#define PCI_USB2_MEMADDR 0xbfffcf00
++
++
++/*-----------------------------------------------------------------------
++ * Start addresses for the final memory configuration
++ * (Set up by the startup code)
++ */
++
++#define CFG_SDRAM_BASE 0x00000000
++#define CFG_MONITOR_BASE TEXT_BASE
++#undef CFG_RAMBOOT
++
++#define CFG_PCI_MEM_ADDR 0xB0000000
++#define CFG_EUMB_ADDR 0xFC000000
++#define CFG_FLASH_BASE 0xFF000000
++
++#define CFG_RESET_ADDRESS 0xFFF00100
++
++#define CFG_MONITOR_LEN (256 << 10)
++#define CFG_MALLOC_LEN (512 << 10)
++
++#define CFG_MEMTEST_START 0x00000000 /* memtest works on */
++#define CFG_MEMTEST_END 0x04000000 /* 0 ... 32 MB in DRAM */
++#define CFG_MAX_RAM_SIZE 0x10000000 /* up to 256M of SDRAM */
++
++
++/*-----------------------------------------------------------------------
++ * Definitions for initial stack pointer and data area
++ */
++
++#define CFG_INIT_RAM_ADDR 0x40000000
++#define CFG_INIT_RAM_END 0x1000
++#define CFG_GBL_DATA_SIZE 128
++#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
++
++
++/*-----------------------------------------------------------------------
++ * FLASH organization
++ */
++
++#define CFG_FLASH_CFI 1
++#define CFG_FLASH_CFI_DRIVER 1 /* Use the common driver */
++#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
++#define CFG_MAX_FLASH_SECT 128 /* max number of sectors on one chip*/
++#define CFG_FLASH_EMPTY_INFO /* print 'E' for empty sector on flinfo */
++#define CFG_FLASH_USE_BUFFER_WRITE /* faster writes */
++
++#define CFG_ENV_IS_IN_FLASH 1
++#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x00FA0000)
++#define CFG_ENV_SECT_SIZE 0x00020000 /* Total Size of Environment Sector*/
++
++
++/*-----------------------------------------------------------------------
++ * Gigabit Ethernet
++ */
++
++#define CONFIG_NET_MULTI
++#define CONFIG_RTL8169
++
++
++/*-----------------------------------------------------------------------
++ * Filesystems
++ */
++
++#define CONFIG_MAC_PARTITION
++#define CONFIG_DOS_PARTITION
++//#define CONFIG_ISO_PARTITION
++
++
++/*-----------------------------------------------------------------------
++ * IDE/ATA
++ */
++
++#undef CONFIG_IDE_8xx_DIRECT /* no pcmcia interface required */
++#undef CONFIG_IDE_LED /* no led for ide supported */
++#undef CONFIG_IDE_RESET /* no reset for ide supported */
++#undef CONFIG_ATAPI /* no ATAPI support */
++
++#define CONFIG_IDE_PREINIT /* To set up MMIO adresses */
++#define CONFIG_LBA48 /* Large disk support */
++
++#define CFG_IDE_MAXBUS 2 /* Two channels x 1 device each */
++#define CFG_IDE_MAXDEVICE (CFG_IDE_MAXBUS*1)
++
++#define CFG_ATA_BASE_ADDR 0x0000 /* Set up in board specific code */
++#define CFG_ATA_DATA_OFFSET 0x0000 /* Offset for data I/O */
++#define CFG_ATA_REG_OFFSET 0x0000 /* Offset for normal register accesses */
++#define CFG_ATA_ALT_OFFSET 0x0000 /* Offset for alternate registers */
++
++
++/*----------------------------------------------------------------------
++ * On Chip Serial configuration
++ */
++
++#define CONFIG_CONS_INDEX 1
++#define CONFIG_BAUDRATE 115200
++#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
++
++#define CFG_NS16550
++#define CFG_NS16550_SERIAL
++
++#define CFG_NS16550_REG_SIZE 1
++#define CFG_NS16550_CLK get_bus_freq(0)
++
++#define CFG_NS16550_COM1 (CFG_EUMB_ADDR + 0x4500) /* Console port */
++#define CFG_NS16550_COM2 (CFG_EUMB_ADDR + 0x4600) /* PIC ? */
++
++
++/*----------------------------------------------------------------------
++ * i2c support configuration
++ */
++
++#define CONFIG_HARD_I2C 1 /* To enable I2C support */
++#undef CONFIG_SOFT_I2C /* I2C bit-banged */
++#define CFG_I2C_SPEED 400000 /* I2C speed and slave address */
++#define CFG_I2C_SLAVE 0x7F
++
++#define CONFIG_RTC_RS5C372A /* Real-time clock chip */
++
++
++/*----------------------------------------------------------------------
++ * Low Level Configuration Settings
++ * (address mappings, register initial values, etc.)
++ * You should know what you are doing if you make changes here.
++ */
++
++#define CONFIG_SYS_CLK_FREQ 33333333 /* external frequency to pll */
++
++#define CFG_ROMNAL 7 /*rom/flash next access time */
++#define CFG_ROMFAL 11 /*rom/flash access time */
++
++#define CFG_REFINT 430 /* no of clock cycles between CBR refresh cycles */
++
++/* the following are for SDRAM only*/
++#define CFG_BSTOPRE 121 /* Burst To Precharge, sets open page interval */
++#define CFG_REFREC 8 /* Refresh to activate interval */
++#define CFG_RDLAT 4 /* data latency from read command */
++#define CFG_PRETOACT 3 /* Precharge to activate interval */
++#define CFG_ACTTOPRE 5 /* Activate to Precharge interval */
++#define CFG_ACTORW 3 /* Activate to R/W */
++#define CFG_SDMODE_CAS_LAT 3 /* SDMODE CAS latency */
++#define CFG_SDMODE_WRAP 0 /* SDMODE wrap type */
++
++#define CFG_REGISTERD_TYPE_BUFFER 1
++#define CFG_EXTROM 1
++#define CFG_REGDIMM 0
++
++
++/*----------------------------------------------------------------------
++ * memory bank settings
++ *
++ * only bits 20-29 are actually used from these vales to set the
++ * start/end address the upper two bits will be 0, and the lower 20
++ * bits will be set to 0x00000 for a start address, or 0xfffff for an
++ * end address
++ */
++
++#define CFG_BANK0_START 0x00000000
++#define CFG_BANK0_END (CFG_MAX_RAM_SIZE - 1)
++#define CFG_BANK0_ENABLE 1
++#define CFG_BANK1_START 0x3ff00000
++#define CFG_BANK1_END 0x3fffffff
++#define CFG_BANK1_ENABLE 0
++#define CFG_BANK2_START 0x3ff00000
++#define CFG_BANK2_END 0x3fffffff
++#define CFG_BANK2_ENABLE 0
++#define CFG_BANK3_START 0x3ff00000
++#define CFG_BANK3_END 0x3fffffff
++#define CFG_BANK3_ENABLE 0
++#define CFG_BANK4_START 0x00000000
++#define CFG_BANK4_END 0x00000000
++#define CFG_BANK4_ENABLE 0
++#define CFG_BANK5_START 0x00000000
++#define CFG_BANK5_END 0x00000000
++#define CFG_BANK5_ENABLE 0
++#define CFG_BANK6_START 0x00000000
++#define CFG_BANK6_END 0x00000000
++#define CFG_BANK6_ENABLE 0
++#define CFG_BANK7_START 0x00000000
++#define CFG_BANK7_END 0x00000000
++#define CFG_BANK7_ENABLE 0
++
++
++/*
++ * Memory bank enable bitmask, specifying which of the banks defined above
++ are actually present. MSB is for bank #7, LSB is for bank #0.
++ */
++#define CFG_BANK_ENABLE 0x01
++
++#define CFG_ODCR 0xff /* configures line driver impedances, */
++ /* see 8240 book for bit definitions */
++#define CFG_PGMAX 0x32 /* how long the 8240 retains the */
++ /* currently accessed page in memory */
++ /* see 8240 book for details */
++#define CFG_DBUS_SIZE2 1
++#define CFG_BANK0_ROW 2
++
++
++/*----------------------------------------------------------------------
++ * Initial BAT mappings
++ */
++
++/* SDRAM 0 - 256MB */
++#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
++
++/* stack in DCACHE @ 1GB (no backing mem) */
++#define CFG_IBAT1L (CFG_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT1U (CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
++
++/* PCI memory */
++#define CFG_IBAT2L (CFG_PCI_MEM_ADDR | BATL_PP_10 | BATL_CACHEINHIBIT)
++#define CFG_IBAT2U (CFG_PCI_MEM_ADDR | BATU_BL_256M | BATU_VS | BATU_VP)
++
++/* Flash, config addrs, etc */
++#define CFG_IBAT3L (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
++#define CFG_IBAT3U (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
++
++#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
++
++/*
++ * 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_CACHELINE_SIZE 32 /* For MPC8240 CPU */
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++# define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */
++#endif
++
++
++/*-----------------------------------------------------------------------
++ * Internal Definitions
++ *
++ * Boot Flags
++ */
++#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
++#define BOOTFLAG_WARM 0x02 /* Software reboot */
++
++
++#endif /* __CONFIG_H */
+--- u-boot-1.2.0.vanilla/Makefile 2007-01-07 00:13:11.000000000 +0100
++++ u-boot-1.2.0/Makefile 2007-02-26 01:55:37.000000000 +0100
+@@ -1296,6 +1296,9 @@
+ PN62_config: unconfig
+ @$(MKCONFIG) $(@:_config=) ppc mpc824x pn62
+
++qnap_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc824x qnap
++
+ Sandpoint8240_config: unconfig
+ @$(MKCONFIG) $(@:_config=) ppc mpc824x sandpoint
+
diff --git a/packages/uboot-utils/tools-Makefile.patch b/packages/uboot/u-boot-1.2.0/tools-Makefile.patch
index a44bc917d6..a44bc917d6 100644
--- a/packages/uboot-utils/tools-Makefile.patch
+++ b/packages/uboot/u-boot-1.2.0/tools-Makefile.patch
diff --git a/packages/uboot/u-boot-1.2.0/turbostation/.mtn2git_empty b/packages/uboot/u-boot-1.2.0/turbostation/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uboot/u-boot-1.2.0/turbostation/.mtn2git_empty
diff --git a/packages/uboot/u-boot-1.2.0/turbostation/fw_env.config b/packages/uboot/u-boot-1.2.0/turbostation/fw_env.config
new file mode 100644
index 0000000000..2432bd866c
--- /dev/null
+++ b/packages/uboot/u-boot-1.2.0/turbostation/fw_env.config
@@ -0,0 +1,7 @@
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundand
+# environment sector is assumed present.
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd1 0x0000 0x4000 0x4000
+/dev/mtd2 0x0000 0x4000 0x4000
diff --git a/packages/uboot/u-boot-1.2.0/u-boot-kurobox-fdt.patch b/packages/uboot/u-boot-1.2.0/u-boot-kurobox-fdt.patch
new file mode 100644
index 0000000000..182c3785c7
--- /dev/null
+++ b/packages/uboot/u-boot-1.2.0/u-boot-kurobox-fdt.patch
@@ -0,0 +1,29 @@
+diff -ur u-boot-86xx-kuro_clean/include/configs/linkstation.h u-boot-86xx-kuro_flash/include/configs/linkstation.h
+--- u-boot-86xx-kuro_clean/include/configs/linkstation.h 2006-11-06 22:05:38.000000000 +0100
++++ u-boot-86xx-kuro_flash/include/configs/linkstation.h 2006-10-28 11:27:42.000000000 +0200
+@@ -101,6 +101,14 @@
+ CFG_CMD_EXT2 )
+ #define CONFIG_BOOTP_MASK CONFIG_BOOTP_ALL
+
++#define CONFIG_OF_FLAT_TREE 1
++
++#ifdef CONFIG_OF_FLAT_TREE
++#define OF_CPU "PowerPC,603e"
++#define OF_SOC "soc10x@80000000"
++#define OF_STDOUT_PATH "/soc10x/serial@80004600"
++#endif
++
+ /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+ #include <cmd_confdefs.h>
+
+@@ -151,8 +159,8 @@
+ "ldaddr=800000\0" \
+ "hdpart=0:1\0" \
+ "hdfile=boot/vmlinux.UBoot\0" \
+- "hdload=echo Loading ${hdpart}:${hdfile};ext2load ide ${hdpart} ${ldaddr} ${hdfile}\0" \
+- "boothd=setenv bootargs root=/dev/hda1;bootm ${ldaddr}\0" \
++ "hdload=echo Loading ${hdpart}:${hdfile};ext2load ide ${hdpart} ${ldaddr} ${hdfile};ext2load ide ${hdpart} 7f0000 boot/kuroboxHG.dtb\0" \
++ "boothd=setenv bootargs " CONFIG_BOOTARGS ";bootm ${ldaddr} - 7f0000\0" \
+ "hdboot=run hdload boothd\0" \
+ "flboot=setenv bootargs root=/dev/hda1;bootm ffc00000\0" \
+ "emboot=setenv bootargs root=/dev/ram0;bootm ffc00000\0" \
diff --git a/packages/uboot/u-boot-1.2.0/u-boot-kurobox.patch b/packages/uboot/u-boot-1.2.0/u-boot-kurobox.patch
new file mode 100644
index 0000000000..79f7a8e48a
--- /dev/null
+++ b/packages/uboot/u-boot-1.2.0/u-boot-kurobox.patch
@@ -0,0 +1,5595 @@
+diff -urN u-boot-86xx/MAKEALL u-boot-86xx-kuro_clean/MAKEALL
+--- u-boot-86xx/MAKEALL 2006-10-13 00:27:12.000000000 +0200
++++ u-boot-86xx-kuro_clean/MAKEALL 2006-11-06 22:13:16.000000000 +0100
+@@ -106,9 +106,9 @@
+ LIST_824x=" \
+ A3000 barco BMW CPC45 \
+ CU824 debris eXalion HIDDEN_DRAGON \
+- MOUSSE MUSENKI MVBLUE \
+- OXC PN62 Sandpoint8240 Sandpoint8245 \
+- sbc8240 SL8245 utx8245 \
++ linkstation linkstationhg MOUSSE MUSENKI \
++ MVBLUE OXC PN62 Sandpoint8240 \
++ Sandpoint8245 sbc8240 SL8245 utx8245 \
+ "
+
+ #########################################################################
+diff -urN u-boot-86xx/Makefile u-boot-86xx-kuro_clean/Makefile
+--- u-boot-86xx/Makefile 2006-10-13 00:27:12.000000000 +0200
++++ u-boot-86xx-kuro_clean/Makefile 2006-11-06 22:15:20.000000000 +0100
+@@ -122,7 +122,7 @@
+ CROSS_COMPILE =
+ else
+ ifeq ($(ARCH),ppc)
+-CROSS_COMPILE = powerpc-linux-
++CROSS_COMPILE = ppc_6xx-
+ endif
+ ifeq ($(ARCH),arm)
+ CROSS_COMPILE = arm-linux-
+@@ -237,6 +237,40 @@
+
+ all: $(ALL)
+
++LSMODEL := $(shell head -n 1 include/config.h)
++
++linkstation_HGLAN_RAM: include/config.h
++ @[ -n "$(findstring HGLAN_RAM, $(LSMODEL))" ] || \
++ { echo "Bad configuration: $(LSMODEL)" ; \
++ exit 1 ; \
++ }
++ @make all
++ @mv u-boot.bin u-boot-hg.ram.bin
++
++linkstation_HGLAN: include/config.h
++ @[ -n "$(findstring HGLAN_ROM, $(LSMODEL))" ] || \
++ { echo "Bad configuration: $(LSMODEL)" ; \
++ exit 1 ; \
++ }
++ @make all
++ @mv u-boot.bin u-boot-hg.flash.bin
++
++linkstation_HDLAN_RAM: include/config.h
++ @[ -n "$(findstring HDLAN_RAM, $(LSMODEL))" ] || \
++ { echo "Bad configuration: $(LSMODEL)" ; \
++ exit 1 ; \
++ }
++ @make all
++ @mv u-boot.bin u-boot-hd.ram.bin
++
++linkstation_HDLAN: include/config.h
++ @[ -n "$(findstring HDLAN_ROM, $(LSMODEL))" ] || \
++ { echo "Bad configuration: $(LSMODEL)" ; \
++ exit 1 ; \
++ }
++ @make all
++ @mv u-boot.bin u-boot-hd.flash.bin
++
+ $(obj)u-boot.hex: $(obj)u-boot
+ $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@
+
+@@ -317,6 +351,10 @@
+
+ #########################################################################
+ else
++linkstation_HGLAN_RAM \
++linkstation_HGLAN \
++linkstation_HDLAN_RAM \
++linkstation_HDLAN \
+ all $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \
+ $(obj)u-boot.img $(obj)u-boot.dis $(obj)u-boot \
+ $(SUBDIRS) version gdbtools updater env depend \
+@@ -1262,6 +1300,38 @@
+ kvme080_config: unconfig
+ @$(MKCONFIG) $(@:_config=) ppc mpc824x kvme080 etin
+
++linkstation_HGLAN_RAM_config: mrproper
++ @>include/config.h ; \
++ echo "/* HGLAN_RAM */" >>include/config.h ; \
++ echo "#define CONFIG_HGLAN 1" >>include/config.h ; \
++ echo "TEXT_BASE = 0x07F00000" >board/linkstation/config.tmp ; \
++ ./mkconfig -a linkstation ppc mpc824x linkstation ; \
++ echo "LinkStation HGLAN -- RAM BUILD ..."
++
++linkstation_HGLAN_config: mrproper
++ @>include/config.h ; \
++ echo "/* HGLAN_ROM */" >>include/config.h ; \
++ echo "#define CONFIG_HGLAN 1" >>include/config.h ; \
++ echo "TEXT_BASE = 0xFFF00000" >board/linkstation/config.tmp ; \
++ ./mkconfig -a linkstation ppc mpc824x linkstation ; \
++ echo "LinkStation HGLAN -- ROM BUILD ..."
++
++linkstation_HDLAN_RAM_config: mrproper
++ @>include/config.h ; \
++ echo "/* HDLAN_RAM */" >>include/config.h ; \
++ echo "#define CONFIG_HLAN 1" >>include/config.h ; \
++ echo "TEXT_BASE = 0x03F00000" >board/linkstation/config.tmp ; \
++ ./mkconfig -a linkstation ppc mpc824x linkstation ; \
++ echo "LinkStation HDLAN -- RAM BUILD ..."
++
++linkstation_HDLAN_config: mrproper
++ @>include/config.h ; \
++ echo "/* HDLAN_ROM */" >>include/config.h ; \
++ echo "#define CONFIG_HLAN 1" >>include/config.h ; \
++ echo "TEXT_BASE = 0xFFF00000" >board/linkstation/config.tmp ; \
++ ./mkconfig -a linkstation ppc mpc824x linkstation ; \
++ echo "LinkStation HDLAN -- ROM BUILD ..."
++
+ MOUSSE_config: unconfig
+ @$(MKCONFIG) $(@:_config=) ppc mpc824x mousse
+
+diff -urN u-boot-86xx/board/linkstation/INSTALL u-boot-86xx-kuro_clean/board/linkstation/INSTALL
+--- u-boot-86xx/board/linkstation/INSTALL 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/board/linkstation/INSTALL 2006-11-06 22:05:38.000000000 +0100
+@@ -0,0 +1,631 @@
++
++ Installing U-Boot for LinkStation
++
++ For U-Boot port version 2.1.0
++ 16 September 2006
++
++ Copyright (c) 2006 Mihai Georgian
++
++ Permission is granted to copy, distribute and/or modify this document under
++ the terms of the [1]GNU Free Documentation License, Version 1.2 or any later
++ version published by the Free Software Foundation; with no Invariant
++ Sections, no Front-Cover Texts, and no Back-Cover Texts. The full text of
++ the license can be obtained by clicking on the above link.
++
++ No liability for the contents of this document can be accepted. The
++ information in this document is provided in good faith but no warranty can
++ be made for its accuracy and the author does not take any responsibility.
++ Use the concepts, examples and information at your own risk. There may be
++ errors and inaccuracies, that could be damaging to your system.
++
++ Use of a term in this document should not be regarded as affecting the
++ validity of any trademark or service mark. Naming of particular products or
++ brands should not be seen as endorsements.
++ _________________________________________________________________
++
++ WARNING
++
++ Flashing the LinkStation with unauthorised firmare voids your warranty. When
++ installing firmware on an embedded computer things can and, sometimes, do go
++ wrong. The power can go down in the middle of the flash operation or the
++ flash write can fail rendering your LinkStation unusable. Please read this
++ entire page carefully before attempting to install U-Boot.
++
++ If you are not prepared to lose your LinkStation, do not attempt to install
++ U-Boot
++
++ Introduction
++
++ U-Boot for the LinkStation is distributed as a source patch against
++ u-boot-1.1.4. To compile it you will need either a cross toolchain installed
++ on your PC or native development tools installed on your LinkStation. These
++ instructions assume that you are running Linux on a X86 PC and that you are
++ using a cross toolchain.
++
++ To allow testing of U-Boot on your LinkStation without burning it into
++ flash, a kernel module named uloader.o is provided. Uloader allows you to
++ use Linux to load a RAM build of U-Boot and start it. The RAM build of
++ U-Boot is very close to the ROM build. The only differences are the absence
++ of the basic initialisation code (which cannot run from RAM) and the link
++ address. It is strongly recommended that you test U-Boot on your LinkStation
++ using a RAM build before building the ROM version and attempting to burn it
++ into flash. Once you have the RAM build up and running you can use it to
++ install (burn) the ROM version.
++
++ Supported Hardware
++
++ The LinkStation port of U-Boot described in this document supports the
++ following PowerPC based models:
++ 1. LinkStation version 1 (model HD-HLAN-1)
++ 2. KuroBox standard
++ 3. LinkStation HG (model HD-HGLAN)
++ 4. KuroBox HG
++
++ This version of U-Boot will certainly not work on the the LinkStation
++ version 2 (model HD-HLAN-2) as the LinkStation version 2 is based on a MIPS
++ processor. The MIPS processor is completely different from the PowerPC
++ processor and attempting to flash a LinkStation version 2 with PowerPC
++ firmware it is guaranteed to make it completely unusable.
++
++ Get telnet Access
++
++ Try to connect to your LinkStation using telnet. If you see the telnet
++ command prompt, read [2]CGI Exploit (PowerPC) original method of Hacking the
++ LinkStation about how to get telnet access.
++
++ If the above method doesn't work for you, read [3]Turn your LinkStation into
++ a Kuro Box (PowerPC) for other methods to get telnet access.
++
++ The above methods do not work for the LinkStation HG. For this model, the
++ only solution is to load a telnet-enabled version of the firmware. Read the
++ pages about [4]OpenLink and the [5]firmware flasher
++
++ You can also try to flash [6]a modified version of the original firmware.
++
++ Install the Serial Console
++
++ Installing the serial console is not an absolute requirement and it will
++ void your warranty. U-Boot can be installed and controlled without it.
++ However, the serial console will give you the best control over both U-Boot
++ and Linux.
++
++ Read [7]Add a Serial port to the PowerPC Linkstation to learn how to install
++ the serial console.
++
++ Install netcat (nc)
++
++ If you haven't installed the serial console you will need to install netcat
++ (nc). Netcat is a networking utility which reads and writes data across
++ network connections, using the TCP/IP protocol. It comes standard with most
++ Linux distributions. For more information, visit the netcat home page
++ [8]http://netcat.sourceforge.net or [9]http://www.vulnwatch.org/netcat for
++ the Windows version.
++
++ Get the ELDK
++
++ If you don't have a cross toolchain installed, download the DENX Embedded
++ Linux Development Kit (ELDK) from
++ [10]http://ftp.sunet.se/pub/Linux/distributions/eldk/3.1.1/ppc-linux-x86/iso
++ /ppc-2005-03-07.iso, install it and spend some time getting familiar with
++ it.
++
++ Preparation
++
++ Create the build directory and set the environment variable UBOOT_BUILD to
++ the path to it
++ # mkdir <your_build_directory>
++ # export UBOOT_BUILD=<your_build_directory>
++ # cd $UBOOT_BUILD
++ Download the tarball for u-boot-1.1.4 from
++ [11]ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.4.tar.bz2
++ Download the LinkStation patch, [12]u-boot-1.1.4-list-2.1.0.diff.gz
++ Download the uloader module for your LinkStation / KuroBox model.
++ * For the LinkStation 1 / KuroBox standard, download
++ [13]uloader-2.4.17.tar.gz
++ * For the LinkStation HG / KuroBox HG, download [14]uloader-2.4.20.tar.gz
++
++ Untar u-boot-1.1.4 and apply the patch.
++ # tar xjf u-boot-1.1.4.tar.bz2
++ # cd u-boot-1.1.4
++ # gunzip ../u-boot-1.1.4-list-2.01.diff.gz | patch -p1
++
++ Untar the uloader archive for your LinkStation / KuroBox model. The archive
++ contains the source code, a binary module compiled for the original
++ LinkStation kernel and a simple bash script to load and start a RAM build of
++ U-Boot.
++
++ The binary in uloader-2.4.17.tar.gz has been compiled against
++ 2.4.17_mvl21-sandpoint. Use only on the LinkStation 1 / KuroBox standard.
++ The binary in uloader-2.4.20.tar.gz has been compiled against
++ 2.4.20_mvl31-ppc_linkstation. Use only on the LinkStation HG / KuroBog HG.
++ If you have a different kernel version, you may need to recompile the module
++ for your kernel. Compiling the module requires a fully configured kernel
++ source tree. It is recommended to use the same gcc version as the one used
++ to compile the kernel. There is a small but important difference between the
++ two uloader source archives. The difference is the U-Boot load address. If
++ you compile uloader for the LinkStation 1 / KuroBox standard, use the
++ sources in uloader-2.4.17.tar.gz. If you compile for the LinkStation HG /
++ KuroBox HG, use the sources in uloader-2.4.20.tar.gz. In both cases you
++ need to modify the Makefile to match your development environment.
++
++ LinkStation 1 / KuroBox standard
++ # cd ..
++ # tar xzf uloader-2.4.17.tar.gz
++ # cd u-boot-1.1.4
++
++ LinkStation HG / KuroBox HG
++ # cd ..
++ # tar xzf uloader-2.4.20.tar.gz
++ # cd u-boot-1.1.4
++
++ Source your ELDK environment
++ # . <path_to_your_ELDK>/config_6xx
++
++ Configure
++
++ Edit include/configs/linkstation.h and set the following variables for your
++ environment:
++
++ CONFIG_IPADDR_LS - the IP address of your LinkStation while running
++ U-Boot (mandatory). The default address is
++ 192.168.11.150.
++ CONFIG_SERVERIP_LS - the IP address of the NFS/TFTP/DHCP/BOOTP server,
++ normally the address of your Linux PC (mandatory).
++ The default address is 192.168.11.149.
++ CONFIG_NCIP_LS - the address of the computer running netcat (nc),
++ normally the address of your Linux PC (optional).
++ If the define is missing, CONFIG_NCIP_LS will be
++ set to the same value as CONFIG_SERVERIP_LS
++
++ RAM Build
++
++ For LinkStation 1 / KuroBox standard run:
++ make linkstation_HDLAN_RAM_config
++ make linkstation_HDLAN_RAM
++
++ The name of the resulting binary is u-boot-hd.ram.bin
++
++ For LinkStation HG / KuroBox HG run:
++ make linkstation_HGLAN_RAM_config
++ make linkstation_HGLAN_RAM
++
++ The name of the resulting binary is u-boot-hg.ram.bin
++
++ Net Console
++
++ The net console is the U-Boot driver which uses the UDP protocol with a
++ default port of 6666 to send the console output to and receive the console
++ input from a remote computer. You need to run netcat on the remote computer
++ to communicate with the U-Boot net console. The communication is
++ bidirectional. Netcat will display on your screen the console output
++ received from U-Boot and will send your keyboard input back to U-Boot.
++
++ If U-Boot cannot contact the remote computer, it switches the console to the
++ serial port. To show that it changed the console, U-Boot makes the HDD LED
++ blink with the pattern corresponding to the serial console (see The Reset
++ Button below). The timeout period is 20 sec.
++
++ Minimal Console
++
++ U-Boot for the LinkStation is designed to allow some control over the boot
++ process even in the absence of a console. For this, it uses the power button
++ (the big button at the front) and the reset button (the small red button at
++ the back).
++
++ Before installing U-Boot, when the LinkStation is switched on, the power LED
++ starts blinking, the original boot loader starts executing and, very
++ quickly, it starts booting the kernel from flash. If U-Boot is installed,
++ the power LED will change from blinking quickly to blinking very slowly. The
++ blink pattern is the same as the one used to indicate sleep mode in normal
++ operation. When the power LED starts blinking slowly at boot, U-Boot has
++ taken over and it is counting down the boot delay before booting the kernel.
++ The default boot delay is 10 sec. From the moment when the power LED starts
++ blinking slowly and for the duration of the boot delay, you can control the
++ boot process with the power and reset buttons.
++
++ The Power Button
++
++ If you push the power button and keep it pressed for more than 1 sec, the
++ boot process will stop and the LinkStation will wait for a command. A
++ stopped boot process is indicated by the power LED being lit solid. The
++ effect is the same a pressing 's' on the console.
++
++ A long push of the power button acts as a toggle. If the boot delay count
++ down is in progress, a long push of the power button stops the boot process.
++ If the boot process is stopped (U-Boot is at the command prompt, even if you
++ can't see it), a long push of the power button restarts the boot process
++ resetting the boot delay to its original value. The restart of the boot
++ process is indicated by the power LED blinking slowly.
++
++ By default U-Boot supports three pre-configured boot commands:
++ 1. The first boot command will attempt to load and boot a file named
++ boot/vmlinux.UBoot from the first hard disk partition, /dev/hda1. The
++ file can be in any of the U-Boot bootable formats but uImage is the
++ preferred format. If the file is missing or corrupted, U-Boot will fall
++ back to booting the original kernel from flash.
++ 2. The second boot command will boot the original kernel from flash.
++ Please note that the original kernel for the LinkStation 1 / KuroBox
++ standard has a bug in the function that calibrates the decrementer and
++ it will stop for up to 180 sec during boot. This bug is not an U-Boot
++ bug but a kernel bug which is uncovered by the fact that U-Boot
++ activates the decrementer where the original boot loader does not.
++ The original kernel for LinkStation HG / KuroBox HG does not suffer from
++ the above problem.
++ 3. The third boot command will attempt to boot in emergency mode (EM). It
++ does this by passing the argument root=/dev/ram0 to the kernel.
++ LinkStation / LinkStation HG owners should avoid booting in EM mode as
++ the root password for this mode on the LinkStation is unknown.
++ The original kernel for the LinkStation / KuroBox standard and for some
++ of the earlier LinkStation HG / KuroBox HG models ignores the root
++ argument. These models will boot normally from the on-board flash when
++ the EM boot command is used. Read the section on EM mode if your
++ LinkStation HG / KuroBox HG has a kernel that doesn't boot in EM mode
++ using this boot command.
++
++ You can cycle through the boot commands with the power button.
++
++ To see which of the three commands U-Boot is going to execute, press the
++ power button quickly. The HDD LED (the third from the top) will start
++ blinking. The number of times the LED blinks, shows the number of the active
++ boot command. For example, a pattern short on - short off - short on - long
++ off, means that the boot command number 2 is active. U-Boot will repeat the
++ blinking cycle for a total duration of about 5 sec counting from the moment
++ the power button is released.
++
++ A short press of the power button while the HDD LED is blinking will advance
++ the boot command to the next one.
++
++ Changing the boot command does not change the boot status. If the boot is
++ stopped, it will not be restarted. If the boot is in progress, it will not
++ be stopped but the boot delay will be reset to the original value.
++
++ The Reset Button
++
++ Two consoles are currently configured, the serial console and the net
++ console. The first console is the serial console and the second console is
++ the net console (nc). The net console is the default console.
++
++ The reset button can be used, similarly to the power button, to switch
++ consoles. A press on the reset button (here, it doesn't matter how long you
++ keep the button pressed) displays the currently active console using the HDD
++ LED. Repeatedly pressing the reset button while the HDD LED is blinking will
++ toggle between the two consoles. The blinking pattern is different from the
++ one showing the boot command. The pattern which shows that the second (net)
++ console is active is short off - short on - short off - long on. U-Boot will
++ repeat the blinking cycle for a total duration of about 5 sec counting from
++ the moment the reset button is released.
++
++ Load and Test
++
++ Mount the LinkStation SMB public share and copy the following files to it:
++
++ For LinkStation 1 / KuroBox standard
++ # mount -t smbfs -o password="" //<your_linkstation_name_or_ip>/share/mnt
++ # cp u-boot-hd.ram.bin /mnt
++ # cp ../uloader-2.4.17/uloader.o /mnt
++ # cp ../uloader-2.4.17/u-boot-load-hd.sh /mnt
++ # umount /mmt
++
++ For LinkStation HG / KuroBox HG
++ # mount -t smbfs -o password="" //<your_linkstation_name_or_ip>/share/mnt
++ # cp u-boot-hg.ram.bin /mnt
++ # cp ../uloader-2.4.20/uloader.o /mnt
++ # cp ../uloader-2.4.20/u-boot-load-hg.sh /mnt
++ # umount /mmt
++
++ If you installed the serial port, open another window and use minicom to
++ connect to your LinkStation serial console. The serial port settings are
++ 57600,N,8, the same as the settings used by the original Linux kernel.
++
++ Start netcat to communicate with the U-Boot net console. Open another window
++ and run board/linkstation/nc.sh. Nc.sh is a simple script which invokes
++ netcat with the correct options. To quit nc, press ^T (control-T).
++ # cd $UBOOT_BUILD/u-boot-1.1.4
++ # board/linkstation/nc.sh <ip_of_your_linkstation>
++
++ Where <ip_of_your_linkstation> is CONFIG_IPADDR_LS (see Configure U-Boot
++ above). When you run nc.sh nothing will be written to the screen. This is
++ normal as Linux is not using the net console.
++
++ From your original window, use telnet to connect to the LinkStation and
++ launch U-Boot. Replace lshg in the example below with the name / IP address
++ of your LinkStation. Replace myroot with the login you created when you
++ gained telnet access. For LinkStation 1 / KuroBox standard, use
++ u-boot-load-hd.sh instead of u-boot-load-hg.sh. Type the commands shown in
++ bold.
++ # telnet lshg
++ Trying 192.168.0.58...
++ Connected to lshg.
++ Escape character is '^]'.
++ BUFFALO INC. Link Station series HD-HGLAN (IEMITSU)
++ HD-HGLAN6C5 login: myroot
++ Linux (none) 2.4.20_mvl31-ppc_linkstation #3 Thu May 19 13:34:18 JST 2005
++ ppc unknown
++ root@HD-HGLAN6C5:~# cd /mnt/share
++ root@HD-HGLAN6C5:/mnt/share# ./u-boot-load-hg.sh
++ root@HD-HGLAN6C5:/mnt/share# exit
++ Connection closed by foreign host.
++ #
++
++ If you have a serial console you should see the initial U-Boot startup
++ messages. Even if the default console is the net console, U-Boot still sends
++ the console output to the serial port until it initialises the network
++ controller.
++ U-Boot 1.1.4 LiSt 2.1.0 (Sep 12 2006 - 23:09:44) LinkStation HG / KuroBox HG
++ CPU: MPC8245 Revision 1.4 at 262.144 MHz: 16 kB I-Cache 16 kB D-Cache
++ DRAM: 128 MB
++ FLASH: 4 MB
++ *** Warning - bad CRC, using default environment
++ 00 0b 10ec 8169 0200 ff
++ 00 0c 1283 8212 0180 ff
++ 00 0e 1033 0035 0c03 ff
++ 00 0e 1033 0035 0c03 ff
++ 00 0e 1033 00e0 0c03 ff
++ Net: RTL8169#0
++
++ Watch the net console window. After a few seconds, time needed by U-Boot to
++ initialise the network controller and the IDE controller you should see the
++ U-Boot messages.
++ U-Boot 1.1.4 LiSt 2.1.0 (Sep 12 2006 - 23:09:44) LinkStation HG / KuroBox HG
++ IDE: Bus 0: OK
++ Device 0: Model: Maxtor 7Y250P0 Firm: YAR41BW0 Ser#: Y62W8PDE
++ Type: Hard Disk
++ Supports 48-bit addressing
++ Capacity: 239372.4 MB = 233.7 GB (490234752 x 512)
++ Boot in 10 seconds ('s' to stop)...
++
++ Press 's' on your keyboard to stop the boot process.
++
++ If you want to use the serial console, watch the power LED of your
++ LinkStation. When it starts blinking very slowly, use the power button to
++ stop the boot process. Wait for the power LED to go dim and press and hold
++ the power button until the LED lights up brightly indicating that the boot
++ process has stopped. Now press the reset button twice and you should see the
++ U-Boot command prompt (=>) in your minicom window. You can now control
++ U-Boot from the minicom window.
++
++ Using u-boot-load-hd.sh / u-boot-load-hg.sh leads to the above results on
++ devices with the original software. On some LinkStations with modified
++ software, reboot has been modified to send a reboot command to the AVR.
++ This is indicated by the fast blinking of the power LED immediately after
++ running u-boot-load-hd.sh / u-boot-load-hg.sh. Once the AVR receives a
++ reboot command, the reboot process cannot be stopped. The AVR will reboot
++ the LinkStation 5 min after receiving the reboot command.
++ If you find yourself in the above situation you can still test U-Boot by
++ booting your LinkStation with the AVR disabled. Press and hold the reset
++ button and then press the power button. All LEDs will start flashing but
++ your LinkStation will boot normally. Now you can use the procedure
++ described above with one caveat: the AVR being disabled, pressing the
++ buttons will have no effect so you will not be able to test the behaviour
++ of the minimal console.
++
++ Once you get the U-Boot command prompt, start testing it. Read the
++ [15]U-Boot documentation and try each command you are interested in.
++
++ Keep in mind that U-Boot interprets all input number as hex numbers. If, for
++ example, you type 256, U-Boot will interpret it as 598 decimal.
++
++ When you are testing memory write commands, do not attempt to write to the
++ first MB of memory (0x00000000 to 0x00100000) as you will be overwriting the
++ exception vectors and U-Boot will crash.
++
++ An important command is flinfo which displays information about the flash
++ chip. If the information displayed is correct for your flash, test the flash
++ erase and flash write commands. To do this, you will need to find an empty
++ sector, one for which each byte is 0xFF. Hint: check the last flash sector
++ first, chances are that it's empty. When you are testing commands that write
++ to the flash, always remember that you can write a single byte but you can
++ only erase whole sectors.
++
++ Be very careful not to write to the flash memory range 0xFFC00000 to
++ 0xFFF7FFFF. This area contains the Linux kernel, the initial RAM disk used
++ for EM mode, the bootloader and the configuration sector (which holds the
++ "OKOK" or "NGNG" pattern). The range 0xFFF80000 to 0xFFFFFFFF is the user
++ area and, in most cases, is empty. Always check using the U-Boot command md
++ (memory display) if the flash area you intend to use is empty (all bytes are
++ 0xFF). For more information about the flash organisation, read
++ [16]PPCFlashROM for the LinkStation 1 / KuroBox standard or [17]HGFlashROM
++ for the LinkStation HG / KuroBox HG.
++
++ ROM Build
++
++ Once you are happy with the RAM build, you are ready for the ROM build.
++
++ For LinkStation 1 / KuroBox standard run:
++ make linkstation_HDLAN_config
++ make linkstation_HDLAN
++
++ The name of the resulting binary is u-boot-hd.flash.bin
++
++ For LinkStation HG / KuroBox HG run:
++ make linkstation_HGLAN_config
++ make linkstation_HGLAN
++
++ The name of the resulting binary is u-boot-hg.flash.bin
++
++ Install
++
++ Do not attempt to flash from U-Boot if the power LED is blinking. Your
++ LinkStation is likely to reboot and you will end up with a "brick"
++ Test the flash commands thoroughly before deciding to burn U-Boot into
++ flash. Write at least 128 kB to the flash to test potential timeout
++ problems
++ The flash routines in this version of U-Boot for the LinkStation should be
++ able to identify and handle any CFI flash which uses the AMD standard
++ command set. However, they were tested only on a LinkStation with a Fujitsu
++ MBM29PL32TM flash chip and on a LinkStation HG with a ST Micro M29DW324DB
++ flash chip.
++ Be very careful not to flash your hardware with the wrong U-Boot build.
++ Flashing any RAM build or flashing a ROM build for the LinkStation 1 /
++ KuroBox standard into the LinkStation HG / KuroBox HG or viceversa will
++ "brick" your device. This is especially true if you are flashing from Linux
++ as U-Boot has safety checks to avoid flashing the wrong build.
++
++ Flashing U-Boot from U-Boot
++
++ The RAM build of U-Boot can be used to load and flash the ROM build. This is
++ the preferred method.
++
++ Boot your LinkStation normally. Open a telnet session and create a directory
++ to hold the U-Boot flash image.
++ root@linkstation:~# cd /mnt/share
++ root@linkstation:/mnt/share# mkdir u-boot
++
++ Copy the U-Boot flash image to your LinkStation SMB share in the directory
++ u-boot.
++
++ Load the RAM build of U-Boot and at the U-Boot command prompt type:
++ => run upgrade
++
++ U-Boot will attempt to load the ROM build from the directory share/u-boot/
++ on the third partition of the hard drive. If the load is successful, it will
++ do the following:
++ 1. unprotect the bootloader area;
++ 2. erase the bootloader area;
++ 3. copy the loaded file to the bootloader area;
++ 4. verify the copy;
++
++ Here is the output of run upgrade
++ => run upgrade
++ Loading 0:3:share/u-boot/u-boot-hg.flash.bin
++ 174668 bytes read
++ Un-Protected 3 sectors
++ Flash erase: first = 55 @ 0xfff00000
++ last = 57 @ 0xfff20000
++ Flash erase: Done
++ Erased 3 sectors
++ Copy to Flash... done
++ Total of 174668 bytes were the same
++ =>
++
++ When the above sequence finishes, U-Boot returns to the command prompt (=>).
++
++ Depending on your flash chip, the flash operation can take a long time. Wait
++ patiently and do not try to power down or otherwise interrupt the flash or
++ you will end up with a "brick".
++
++ Reboot:
++ => reset
++
++ The power LED should start blinking slowly and, if you have a serial
++ console, you should see the U-Boot startup messages. Your LinkStation is now
++ running U-Boot.
++
++ Flashing U-Boot from Linux
++
++ Connect to your LinkStation using either the serial port or telnet.
++
++ For LinkStation 1 / KuroBox standard run:
++ # cd /mnt/share/u-boot
++ # dd if=u-boot-hd.flash.bin of=/dev/fl2 bs=1k
++ # cmp u-boot.bin /dev/fl2
++
++ For LinkStation HG / KuroBox HG run:
++ # cd /mnt/share/u-boot
++ # dd if=u-boot-hg.flash.bin of=/dev/mtd1 bs=1k
++ # cmp u-boot.bin /dev/mtd1
++
++ The above commands for LinkStation HG / KuroBox HG will work on devices with
++ the original kernel version 2.4.20 but might to work on earlier devices
++ using kernel version 2.4.17. Please check which device corresponds to the
++ bootloader partition on your hardware.
++
++ If the Flash Fails
++
++ If the flash was not written correctly but U-Boot returns at the command
++ prompt, try to re-run run upgrade.
++
++ If the same happens when you attempt to install U-Boot from Linux, try to dd
++ again.
++
++ If your flash fails completely, for example due to a power failure, all is
++ not completely lost. You can still use a JTAG cable to re-flash your
++ Linkstation. Unfortunately, this is a relatively complicated and expensive
++ solution as it involves acquiring or building the JTAG cable and soldering
++ the header for it on the LinkStation motherboard. For more information on
++ how to use a JTAG cable with the LinkStation you can visit
++ [18]www.linkstationwiki.net and [19]www.kurobox.com/mwiki.
++
++ EM Mode
++
++ Warning for the LinkStation / LinkStation HG users
++
++ Do not attempt to boot into EM mode using the method described here. The
++ password for the EM mode is unknown for all LinkStation models.
++
++ Once you have U-Boot installed in the on-board flash, you can boot in EM
++ mode even if the third boot command described above doesn't work.
++
++ Stop the boot countdown by pressing 's' in your net console window and, at
++ the U-Boot command prompt, run:
++ => run writeng
++ => run flboot
++
++ The above commands write "NGNG" to 0xFFF70000 and boot from the on-board
++ flash. To revert to normal boot by writing "OKOK" to 0xFFF70000, run:
++ => run writeok
++ => boot
++
++ Advanced configuration
++
++ The initial U-Boot configuration can be changed by editing the file
++ include/configs/linkstation.h.
++
++ In all the examples below, please note the backslash-zero (\0) at the end of
++ the strings and the space-backslash ( \) at the end of each lines and do not
++ change them.
++
++ Change the name of the default boot file
++
++ Search for the lines containing:
++ "hdpart=0:1\0" \
++ "hdfile=boot/vmlinux.UBoot\0" \
++
++ and change them to the values you want. Partition 0:1 means disk 0,
++ partition 1. Obviously, you can only change the partition number as there is
++ only one disk. The name of the file must be given relative to the root of
++ the partition.
++
++ Change the default console to the serial console
++
++ Search for the lines containing:
++ "stdin=nc\0" \
++ "stdout=nc\0" \
++ "stderr=nc\0" \
++
++ and change them to:
++ "stdin=serial\0" \
++ "stdout=serial\0" \
++ "stderr=serial\0" \
++
++ Change the default boot command to boot from flash
++
++ Search for the lines containing:
++ "bootcmd1=run hdboot;run flboot\0" \
++ "bootcmd2=run flboot\0" \
++
++ and change them to:
++ "bootcmd1=run flboot\0" \
++ "bootcmd2=run hdboot;run flboot\0" \
++
++References
++
++ 1. http://www.linuxnotincluded.org.uk/fdl.txt
++ 2. http://www.linkstationwiki.net/index.php?title=CGI_Exploit_%28PowerPC%29_original_method_of_Hacking_the_LinkStation
++ 3. http://www.linkstationwiki.net/index.php?title=Turn_your_LinkStation_into_a_Kuro_Box_%28PowerPC%29
++ 4. http://linkstationwiki.net/index.php?title=OpenLink
++ 5. http://linkstationwiki.net/index.php?title=The_LinkStation_firmware_flasher
++ 6. http://downloads.linkstationwiki.net/snapshots/HD-HGLAN_149_100_telnet.zip
++ 7. http://www.linkstationwiki.net/index.php?title=Add_a_Serial_port_to_the_PowerPC_Linkstation
++ 8. http://netcat.sourceforge.net/
++ 9. http://www.vulnwatch.org/netcat
++ 10. http://ftp.sunet.se/pub/Linux/distributions/eldk/3.1.1/ppc-linux-x86/iso/ppc-2005-03-07.iso
++ 11. ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.4.tar.bz2
++ 12. http://www.linuxnotincluded.org.uk/linkstation/downloads/u-boot-1.1.4-list-2.1.0.diff.gz
++ 13. http://www.linuxnotincluded.org.uk/linkstation/downloads/uloader-2.4.17.tar.gz
++ 14. http://www.linuxnotincluded.org.uk/linkstation/downloads/uloader-2.4.20.tar.gz
++ 15. http://www.denx.de/wiki/DULG/Manual
++ 16. http://linkstationwiki.net/index.php?title=Information/PPCFlashROM
++ 17. http://linkstationwiki.net/index.php?title=Information/HGFlashROM
++ 18. http://www.linkstationwiki.net/
++ 19. http://www.kurobox.com/mwiki
+diff -urN u-boot-86xx/board/linkstation/Makefile u-boot-86xx-kuro_clean/board/linkstation/Makefile
+--- u-boot-86xx/board/linkstation/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/board/linkstation/Makefile 2006-11-06 22:05:38.000000000 +0100
+@@ -0,0 +1,41 @@
++#
++# (C) Copyright 2001
++# 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 = lib$(BOARD).a
++
++OBJS = $(BOARD).o flash.o ide.o hwctl.o bootls.o avr.o
++SOBJS = early_init.o
++
++$(LIB): .depend $(OBJS) $(SOBJS)
++ $(AR) crv $@ $(OBJS) $(SOBJS)
++
++#########################################################################
++
++.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
++ $(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
++
++sinclude .depend
++
++#########################################################################
+diff -urN u-boot-86xx/board/linkstation/avr.c u-boot-86xx-kuro_clean/board/linkstation/avr.c
+--- u-boot-86xx/board/linkstation/avr.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/board/linkstation/avr.c 2006-11-06 22:05:38.000000000 +0100
+@@ -0,0 +1,307 @@
++/*
++ * avr.c
++ *
++ * AVR functions
++ *
++ * Copyright (C) 2006 Mihai Georgian <u-boot@linuxnotincluded.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 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 <ns16550.h>
++#include <console.h>
++
++/* Button codes from the AVR */
++#define PWRR 0x20 /* Power button release */
++#define PWRP 0x21 /* Power button push */
++#define RESR 0x22 /* Reset button release */
++#define RESP 0x23 /* Reset button push */
++#define AVRINIT 0x33 /* Init complete */
++#define AVRRESET 0x31 /* Reset request */
++
++/* LED commands */
++#define PWRBLINKSTRT '[' /* Blink power LED */
++#define PWRBLINKSTOP 'Z' /* Solid power LED */
++#define HDDLEDON 'W' /* HDD LED on */
++#define HDDLEDOFF 'V' /* HDD LED off */
++#define HDDBLINKSTRT 'Y' /* HDD LED start blink */
++#define HDDBLINKSTOP 'X' /* HDD LED stop blink */
++
++/* Timings for LEDs blinking to show choice */
++#define PULSETIME 250 /* msecs */
++#define LONGPAUSE (5 * PULSETIME)
++
++/* Button press times */
++#define PUSHHOLD 1000 /* msecs */
++#define NOBUTTON (6 * (LONGPAUSE+PULSETIME))
++
++/* Boot and console choices */
++#define MAX_BOOT_CHOICE 3
++
++static char *consoles[] = {
++ "serial",
++#if defined(CONFIG_NETCONSOLE)
++ "nc",
++#endif
++};
++#define MAX_CONS_CHOICE (sizeof(consoles)/sizeof(char *))
++
++#if !defined(CONFIG_NETCONSOLE)
++#define DEF_CONS_CHOICE 0
++#else
++#define DEF_CONS_CHOICE 1
++#endif
++
++#define perror(fmt,args...) printf("%s: ",__FUNCTION__);printf(fmt,##args)
++
++extern void miconCntl_SendCmd(unsigned char dat);
++extern void miconCntl_DisWDT(void);
++
++static int boot_stop;
++
++static int boot_choice = 1;
++static int cons_choice = DEF_CONS_CHOICE;
++
++static char envbuffer[16];
++
++void init_AVR_DUART (void)
++{
++ NS16550_t AVR_port = (NS16550_t) CFG_NS16550_COM2;
++ int clock_divisor = CFG_NS16550_CLK / 16 / 9600;
++
++ /*
++ * AVR port init sequence taken from
++ * the original Linkstation init code
++ * Normal U-Boot serial reinit doesn't
++ * work because the AVR uses even parity
++ */
++ AVR_port->lcr = 0x00;
++ AVR_port->ier = 0x00;
++ AVR_port->lcr = LCR_BKSE;
++ AVR_port->dll = clock_divisor & 0xff;
++ AVR_port->dlm = (clock_divisor >> 8) & 0xff;
++ AVR_port->lcr = LCR_WLS_8 | LCR_PEN | LCR_EPS;
++ AVR_port->mcr = 0x00;
++ AVR_port->fcr = FCR_FIFO_EN | FCR_RXSR | FCR_TXSR;
++
++ miconCntl_DisWDT();
++
++ boot_stop = 0;
++ miconCntl_SendCmd(PWRBLINKSTRT);
++}
++
++void hw_watchdog_reset (void)
++{
++}
++
++static inline int avr_tstc(void)
++{
++ return (NS16550_tstc((NS16550_t)CFG_NS16550_COM2));
++}
++
++static inline char avr_getc(void)
++{
++ return (NS16550_getc((NS16550_t)CFG_NS16550_COM2));
++}
++
++static int push_timeout(char button_code)
++{
++ ulong push_start = get_timer(0);
++ while (get_timer(push_start) <= PUSHHOLD)
++ if (avr_tstc() && avr_getc() == button_code)
++ return 0;
++ return 1;
++}
++
++static void next_boot_choice(void)
++{
++ ulong return_start;
++ ulong pulse_start;
++ int on_times;
++ int button_on;
++ int led_state;
++ char c;
++
++ button_on = 0;
++ return_start = get_timer(0);
++
++ on_times = boot_choice;
++ led_state = 0;
++ miconCntl_SendCmd(HDDLEDOFF);
++ pulse_start = get_timer(0);
++
++ while (get_timer(return_start) <= NOBUTTON || button_on)
++ {
++ if (avr_tstc()) {
++ c = avr_getc();
++ if (c == PWRP)
++ button_on = 1;
++ else if (c == PWRR) {
++ button_on = 0;
++ return_start = get_timer(0);
++ if (++boot_choice > MAX_BOOT_CHOICE)
++ boot_choice = 1;
++ sprintf(envbuffer, "bootcmd%d", boot_choice);
++ if (getenv(envbuffer)) {
++ sprintf(envbuffer, "run bootcmd%d", boot_choice);
++ setenv("bootcmd", envbuffer);
++ }
++ on_times = boot_choice;
++ led_state = 1;
++ miconCntl_SendCmd(HDDLEDON);
++ pulse_start = get_timer(0);
++ } else {
++ perror("Unexpected code: 0x%02X\n", c);
++ }
++ }
++ if (on_times && get_timer(pulse_start) > PULSETIME) {
++ if (led_state == 1) {
++ --on_times;
++ led_state = 0;
++ miconCntl_SendCmd(HDDLEDOFF);
++ } else {
++ led_state = 1;
++ miconCntl_SendCmd(HDDLEDON);
++ }
++ pulse_start = get_timer(0);
++ }
++ if (!on_times && get_timer(pulse_start) > LONGPAUSE) {
++ on_times = boot_choice;
++ led_state = 1;
++ miconCntl_SendCmd(HDDLEDON);
++ pulse_start = get_timer(0);
++ }
++ }
++ if (led_state)
++ miconCntl_SendCmd(HDDLEDOFF);
++}
++
++void next_cons_choice(int console)
++{
++ ulong return_start;
++ ulong pulse_start;
++ int on_times;
++ int button_on;
++ int led_state;
++ char c;
++ device_t *idev;
++ device_t *odev;
++
++ button_on = 0;
++ cons_choice = console;
++ return_start = get_timer(0);
++
++ on_times = cons_choice+1;
++ led_state = 1;
++ miconCntl_SendCmd(HDDLEDON);
++ pulse_start = get_timer(0);
++
++ while (get_timer(return_start) <= NOBUTTON || button_on)
++ {
++ if (avr_tstc()) {
++ c = avr_getc();
++ if (c == RESP)
++ button_on = 1;
++ else if (c == RESR) {
++ button_on = 0;
++ return_start = get_timer(0);
++ cons_choice = (cons_choice + 1) % MAX_CONS_CHOICE;
++ idev = search_device(DEV_FLAGS_INPUT, consoles[cons_choice]);
++ odev = search_device(DEV_FLAGS_OUTPUT, consoles[cons_choice]);
++ console_setfile (stdin, idev);
++ console_setfile (stdout, odev);
++ console_setfile (stderr, odev);
++ on_times = cons_choice+1;
++ led_state = 0;
++ miconCntl_SendCmd(HDDLEDOFF);
++ pulse_start = get_timer(0);
++ } else {
++ perror("Unexpected code: 0x%02X\n", c);
++ }
++ }
++ if (on_times && get_timer(pulse_start) > PULSETIME) {
++ if (led_state == 0) {
++ --on_times;
++ led_state = 1;
++ miconCntl_SendCmd(HDDLEDON);
++ } else {
++ led_state = 0;
++ miconCntl_SendCmd(HDDLEDOFF);
++ }
++ pulse_start = get_timer(0);
++ }
++ if (!on_times && get_timer(pulse_start) > LONGPAUSE) {
++ on_times = cons_choice+1;
++ led_state = 0;
++ miconCntl_SendCmd(HDDLEDOFF);
++ pulse_start = get_timer(0);
++ }
++ }
++ if (led_state);
++ miconCntl_SendCmd(HDDLEDOFF);
++}
++
++int avr_input(void)
++{
++ char avr_button;
++ int ret;
++
++ if (!avr_tstc())
++ return 0;
++
++ avr_button = avr_getc();
++ switch (avr_button) {
++ case PWRP:
++ if (push_timeout(PWRR)) {
++ /* Timeout before power button release */
++ boot_stop = ~boot_stop;
++ if (boot_stop)
++ miconCntl_SendCmd(PWRBLINKSTOP);
++ else
++ miconCntl_SendCmd(PWRBLINKSTRT);
++ /* Wait for power button release */
++ while (avr_getc() != PWRR)
++ ;
++ }
++ else
++ /* Power button released */
++ next_boot_choice();
++ break;
++ case RESP:
++ /* Wait for Reset button release */
++ while (avr_getc() != RESR)
++ ;
++ next_cons_choice(cons_choice);
++ break;
++ case AVRINIT:
++ return 0;
++ default:
++ perror("Unexpected code: 0x%02X\n", avr_button);
++ return 0;
++ }
++ if (boot_stop)
++ return (-3);
++ else
++ return (-2);
++}
++
++void avr_StopBoot(void)
++{
++ boot_stop = ~0;
++ miconCntl_SendCmd(PWRBLINKSTOP);
++}
++
++/* vim: set ts=4: */
+diff -urN u-boot-86xx/board/linkstation/bootls.c u-boot-86xx-kuro_clean/board/linkstation/bootls.c
+--- u-boot-86xx/board/linkstation/bootls.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/board/linkstation/bootls.c 2006-11-06 22:05:38.000000000 +0100
+@@ -0,0 +1,304 @@
++/*
++ * bootls.c
++ *
++ * Boot a Linkstation kernel of type firmimg.bin
++ *
++ * U-Boot loader code for Linkstation kernel. A file of type firmimg.bin
++ * consists of a header, immediately followed by a compressed kernel image,
++ * followed by a compressed initrd image.
++ *
++ * Copyright (C) 2006 Mihai Georgian <u-boot@linuxnotincluded.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 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
++ *
++ * Derived from:
++ *
++ * arch/ppc/common/misc-simple.c (linux-2.4.17_mvl21-sandpoint)
++ * Author: Matt Porter <mporter@mvista.com>
++ * Derived from arch/ppc/boot/prep/misc.c
++ * 2001 (c) MontaVista, Software, Inc.
++ *
++ * common/cmd_bootm.c (u-boot-1.1.4)
++ * (C) Copyright 2000-2002
++ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++ *
++ */
++
++#include <common.h>
++#include <command.h>
++
++#include "firminfo.h"
++
++#define _ALIGN(addr,size) (((addr)+size-1)&(~(size-1)))
++
++struct bi_record {
++ unsigned long tag; /* tag ID */
++ unsigned long size; /* size of record (in bytes) */
++ unsigned long data[0]; /* data */
++};
++
++#define BI_FIRST 0x1010 /* first record - marker */
++#define BI_LAST 0x1011 /* last record - marker */
++
++extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
++extern int gunzip(void *, int, unsigned char *, int *);
++
++/*
++ * output BYTE data
++ */
++static inline void outb(volatile unsigned char *addr, int val)
++{
++ asm volatile("eieio");
++ asm volatile("stb%U0%X0 %1,%0; sync; isync" : "=m" (*addr) : "r" (val));
++}
++
++unsigned long checksum_check(unsigned char* addr, unsigned long size)
++{
++ long *laddr = (long *)addr;
++ unsigned long sum = 0,remain = 0;
++ int i;
++ while(size>=4) {
++ sum += *laddr;
++ laddr++;
++ size -= 4;
++ }
++ addr = (unsigned char*)laddr;
++ for(i=0;i<4;++i) {
++ remain = remain << 8;
++ if(size>i) remain += *addr;
++ addr++;
++ }
++ sum += remain;
++ return sum;
++}
++
++void do_boot_lskernel (cmd_tbl_t *cmdtp,
++ int flag,
++ int argc,
++ char *argv[],
++ unsigned long load_addr,
++ unsigned long *len_ptr,
++ int verify)
++{
++ DECLARE_GLOBAL_DATA_PTR;
++
++ char *zimage_start;
++ int zimage_size;
++ unsigned long initrd_start;
++ unsigned long initrd_end;
++ unsigned long sp;
++ unsigned long cmd_start;
++ unsigned long cmd_end;
++ char *cmdline;
++ char *s;
++ bd_t *kbd;
++ void (*kernel)(bd_t *, ulong, ulong, ulong, ulong);
++ unsigned long iflag;
++ struct firminfo *info = (struct firminfo *)load_addr;
++ struct bi_record *rec;
++
++ int i;
++ char *flashstr="FLASH";
++
++ for (i=0; i <= 4; i++)
++ if (info->subver[i] != flashstr[i]) {
++ puts ("Not a Linkstation kernel\n");
++ return;
++ }
++
++ printf("\n******* Product Information *******\n");
++ printf("----------------------------------\n");
++
++ printf("Product Name: %s\n", info->firmname);
++ printf(" VER: %d.%02d\n", info->ver_major, info->ver_minor);
++ printf(" Date: %d/%d/%d %d:%d:%d\n",
++ info->year+1900, info->mon, info->day,
++ info->hour,info->min,info->sec);
++ printf("----------------------------------\n");
++
++ if (verify) {
++ printf("Verifying checksum... ");
++ if (checksum_check((unsigned char*)info, info->size) != 0) {
++ printf("Failed!: checksum %08X, expecting 0\n",
++ checksum_check((unsigned char*)info, info->size));
++ return; /* Returns on error */
++ } else
++ printf("OK\n");
++ }
++
++ zimage_start = (char*)info + info->kernel_offset;
++ zimage_size = (int)info->kernel_size;
++ iflag = disable_interrupts();
++ puts("Uncompressing kernel...");
++ if (gunzip(0, 0x400000, zimage_start, &zimage_size) != 0) {
++ puts ("Failed! MUST reset board to recover\n");
++ do_reset (cmdtp, flag, argc, argv);
++ } else
++ puts("done.\n");
++
++ /*
++ * Allocate space for command line and board info - the
++ * address should be as high as possible within the reach of
++ * the kernel (see CFG_BOOTMAPSZ settings), but in unused
++ * memory, which means far enough below the current stack
++ * pointer.
++ */
++
++ asm( "mr %0,1": "=r"(sp) : );
++ debug ("## Current stack ends at 0x%08lX ", sp);
++ sp -= 2048; /* just to be sure */
++ if (sp > CFG_BOOTMAPSZ)
++ sp = CFG_BOOTMAPSZ;
++ sp &= ~0xF;
++ debug ("=> set upper limit to 0x%08lX\n", sp);
++
++ cmdline = (char *)((sp - CFG_BARGSIZE) & ~0xF);
++ if ((s = getenv("bootargs")) == NULL)
++ s = "root=/dev/hda1";
++ strcpy (cmdline, s);
++ cmd_start = (ulong)&cmdline[0];
++ cmd_end = cmd_start + strlen(cmdline);
++ debug ("## cmdline at 0x%08lX ... 0x%08lX\n", cmd_start, cmd_end);
++
++ kbd = (bd_t *)(((ulong)cmdline - sizeof(bd_t)) & ~0xF);
++ *kbd = *(gd->bd);
++ if ((s = getenv ("clocks_in_mhz")) != NULL) {
++ /* convert all clock information to MHz */
++ kbd->bi_intfreq /= 1000000L;
++ kbd->bi_busfreq /= 1000000L;
++ }
++
++ kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong))0x4;
++
++ if (info->initrd_size > 0) {
++ initrd_start = (unsigned long)((char*)info + info->initrd_offset);
++ initrd_end = initrd_start + info->initrd_size;
++ if(initrd_start > 0xffc00000 && initrd_end < 0xffefffff) {
++ unsigned long nsp;
++ unsigned long data;
++
++ data = initrd_start;
++ /*
++ * the inital ramdisk does not need to be within
++ * CFG_BOOTMAPSZ as it is not accessed until after
++ * the mm system is initialised.
++ *
++ * do the stack bottom calculation again and see if
++ * the initrd will fit just below the monitor stack
++ * bottom without overwriting the area allocated
++ * above for command line args and board info.
++ */
++ asm( "mr %0,1": "=r"(nsp) : );
++ nsp -= 2048; /* just to be sure */
++ nsp &= ~0xF;
++ nsp -= info->initrd_size;
++ nsp &= ~(4096 - 1); /* align on page */
++ initrd_start = nsp;
++ initrd_end = initrd_start + info->initrd_size;
++ printf ("Loading Ramdisk at 0x%08lX, end 0x%08lX ... ",
++ initrd_start, initrd_end);
++ memmove ((void *)initrd_start, (void *)data, info->initrd_size);
++ puts ("OK\n");
++ }
++ } else {
++ initrd_start = 0;
++ initrd_end = 0;
++ }
++
++ /*
++ * The kernel looks for this structure even if
++ * the information in it is replaced by the
++ * Linkstation kernel
++ */
++ rec = (struct bi_record *)_ALIGN((unsigned long)zimage_size +
++ (1 << 20) - 1,(1 << 20));
++ rec->tag = BI_FIRST;
++ rec->size = sizeof(struct bi_record);
++ rec = (struct bi_record *)((unsigned long)rec + rec->size);
++ rec->tag = BI_LAST;
++ rec->size = sizeof(struct bi_record);
++
++#if defined(CONFIG_HLAN) || defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
++ // kernel load done.
++ outb(0x80004500, 0x49); // send signal
++ outb(0x80004500, 0x49); // send signal
++ outb(0x80004500, 0x49); // send signal
++ outb(0x80004500, 0x49); // send signal
++#endif
++#if defined(CONFIG_HGLAN)
++ // full speed
++ udelay(10000); /* 10 msec */
++ outb(0x80004500, 0x5D); // send signal
++ outb(0x80004500, 0x5D); // send signal
++ outb(0x80004500, 0x5D); // send signal
++ outb(0x80004500, 0x5D); // send signal
++#endif
++#if defined(CONFIG_HTGL)
++ // LINK/ACT led controll
++ outb(0x80004500, 0x61); // a
++ outb(0x80004500, 0x61); // a
++ outb(0x80004500, 0x39); // 9
++ outb(0x80004500, 0x31); // 1
++ outb(0x80004500, 0x39); // 9
++ outb(0x80004500, 0x30); // 0
++ outb(0x80004500, 0x92); // 1000Mbps down
++ outb(0x80004500, 0x92); // 1000Mbps down
++
++ udelay(10000); /* 10 msec */
++ outb(0x80004500, 0x61); // a
++ outb(0x80004500, 0x61); // a
++ outb(0x80004500, 0x39); // 9
++ outb(0x80004500, 0x30); // 0
++ outb(0x80004500, 0x39); // 9
++ outb(0x80004500, 0x30); // 0
++ outb(0x80004500, 0x90); // 100Mbps down
++ outb(0x80004500, 0x90); // 100Mbps down
++
++ udelay(10000); /* 10 msec */
++ outb(0x80004500, 0x61); // a
++ outb(0x80004500, 0x61); // a
++ outb(0x80004500, 0x38); // 8
++ outb(0x80004500, 0x46); // F
++ outb(0x80004500, 0x39); // 9
++ outb(0x80004500, 0x30); // 0
++ outb(0x80004500, 0x8E); // 10Mbps down
++ outb(0x80004500, 0x8E); // 10Mbps down
++
++ udelay(10000); /* 10 msec */
++ outb(0x80004500, 0x5F); // _
++ outb(0x80004500, 0x5F); // _
++#endif
++
++/*
++ * This is what the original boot loader sends
++ * just before jumping to the kernel start
++ */
++ outb(0xFF000001, 0xFF);
++
++ puts("Booting the kernel\n");
++
++ /*
++ * 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)((bd_t *)0xFF000001, initrd_start, initrd_end, cmd_start, cmd_end);
++}
++
++/* vim: set ts=4: */
+diff -urN u-boot-86xx/board/linkstation/config.mk u-boot-86xx-kuro_clean/board/linkstation/config.mk
+--- u-boot-86xx/board/linkstation/config.mk 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/board/linkstation/config.mk 2006-11-06 22:05:38.000000000 +0100
+@@ -0,0 +1,50 @@
++#
++# (C) Copyright 2001-2003
++# 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
++#
++
++# LinkStation/LinkStation-HG:
++#
++# Valid values for TEXT_BASE are:
++#
++# Standard configuration - all models
++# 0xFFF00000 boot from flash
++#
++# Test configuration (boot from RAM using uloader.o)
++# LinkStation HD-HLAN and KuroBox Standard
++# 0x03F00000 boot from RAM
++# LinkStation HD-HGLAN and KuroBox HG
++# 0x07F00000 boot from RAM
++#
++
++sinclude $(TOPDIR)/board/$(BOARDDIR)/config.tmp
++
++ifndef TEXT_BASE
++# For flash image - all models
++TEXT_BASE = 0xFFF00000
++# For RAM image
++# HLAN and LAN
++#TEXT_BASE = 0x03F00000
++# HGLAN and HGTL
++#TEXT_BASE = 0x07F00000
++endif
++
++PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
+diff -urN u-boot-86xx/board/linkstation/early_init.S u-boot-86xx-kuro_clean/board/linkstation/early_init.S
+--- u-boot-86xx/board/linkstation/early_init.S 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/board/linkstation/early_init.S 2006-11-06 22:05:38.000000000 +0100
+@@ -0,0 +1,432 @@
++/*
++ * board/linkstation/early_init.S
++ *
++ * Begin at some arbitrary location in RAM or Flash
++ * Initialize core registers
++ * Configure memory controller (Not executing from RAM)
++ * Initialize UARTs
++ * Simple RAM test (currently suspended)
++ *
++ * Copyright (C) 2006 Mihai Georgian <u-boot@linuxnotincluded.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 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
++ *
++ * Modified for U-Boot from arch/ppc/boot/linkstation/head.S from
++ * the GPL code for the Buffalo Terastation, derived in its turn from:
++ *
++ * arch/ppc/boot/sandpoint/head.S
++ *
++ * Initial board bringup code for Motorola SPS Sandpoint test platform
++ *
++ * Author: Mark A. Greer
++ * mgreer@mvista.com
++ * Derived from arch/ppc/boot/pcore/head.S (mporter@mvista.com)
++ *
++ * Copyright 2001 MontaVista Software Inc.
++ */
++
++#include <config.h>
++#include <ppc_asm.tmpl>
++#include <mpc824x.h>
++#include <ppc_defs.h>
++#include <asm/cache.h>
++
++#if defined(CONFIG_LAN) || defined(CONFIG_HLAN)
++#define RAM_SIZE 0x04000000
++#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
++#define RAM_SIZE 0x08000000
++#endif
++
++#define UART1 0x80004500
++#define UART1_IER 0x80004501
++#define UART1_FCR 0x80004502
++#define UART1_LCR 0x80004503
++#define UART1_DCR 0x80004511
++#define UART2 0x80004600
++#define UART2_IER 0x80004601
++#define UART2_FCR 0x80004602
++#define UART2_LCR 0x80004603
++#define UART2_DCR 0x80004611
++
++#define WM32(address,data) \
++ lis r3, address@h; \
++ ori r3, r3, address@l; \
++ lis r4, data@h; \
++ ori r4, r4, data@l; \
++ stw r4, 0x0000(r3); \
++ sync; \
++ isync;
++
++#define WM16(address,data) \
++ lis r3, address@h; \
++ ori r3, r3, address@l; \
++ li r4, data; \
++ sth r4, 0x0000(r3); \
++ sync; \
++ isync;
++
++#define WM8(address,data) \
++ lis r3, address@h; \
++ ori r3, r3, address@l; \
++ li r4, data; \
++ stb r4, 0(r3); \
++ sync; \
++ isync;
++
++ .text
++
++ .globl early_init_f
++early_init_f:
++/*
++ * Configure core registers
++ */
++
++ /* Establish default MSR value, exception prefix 0xFFF */
++ li r3,MSR_IP|MSR_FP
++ mtmsr r3
++
++ /* Clear BATS */
++ li r8,0
++ mtspr DBAT0U,r8
++ mtspr DBAT0L,r8
++ mtspr DBAT1U,r8
++ mtspr DBAT1L,r8
++ mtspr DBAT2U,r8
++ mtspr DBAT2L,r8
++ mtspr DBAT3U,r8
++ mtspr DBAT3L,r8
++ mtspr IBAT0U,r8
++ mtspr IBAT0L,r8
++ mtspr IBAT1U,r8
++ mtspr IBAT1L,r8
++ mtspr IBAT2U,r8
++ mtspr IBAT2L,r8
++ mtspr IBAT3U,r8
++ mtspr IBAT3L,r8
++ isync
++ sync
++ sync
++
++ /* Set segment registers */
++ lis r8, 0x0000
++ isync
++ mtsr SR0,r8
++ mtsr SR1,r8
++ mtsr SR2,r8
++ mtsr SR3,r8
++ mtsr SR4,r8
++ mtsr SR5,r8
++ mtsr SR6,r8
++ mtsr SR7,r8
++ mtsr SR8,r8
++ mtsr SR9,r8
++ mtsr SR10,r8
++ mtsr SR11,r8
++ mtsr SR12,r8
++ mtsr SR13,r8
++ mtsr SR14,r8
++ mtsr SR15,r8
++ isync
++ sync
++ sync
++
++ /* Disable L1 icache/dcache */
++ li r4,0x0000
++ isync
++ mtspr HID0,r4
++ sync
++ isync
++
++ /* Flash Invalidate L1 icache/dcache */
++
++ ori r4,r4,0x8000
++ ori r8,r4,0x0800
++ isync
++ mtspr HID0,r8
++ sync
++ isync
++
++ /* Older cores need to manually clear ICFI bit */
++
++ mtspr HID0,r4
++ sync
++ isync
++
++#if !defined(CFG_RAMBOOT)
++melco_config_start:
++ /* --- CPU Configration registor setting for LinkStation --- */
++ WM32(0x80041020,0x000000a0) /* Reset EPIC */
++
++ /* errata for latency timer */
++ WM32(0xFEC00000,0x0d000080)
++ WM8(0xFEE00001,0x20)
++ /* cash size */
++ WM32(0xFEC00000,0x0c000080)
++ WM8(0xFEE00000,0x08)
++ /* PCI configuration command register */
++ WM32(0xFEC00000,0x04000080)
++ WM16(0xFEE00000,0x0600)
++ /* Processor interface configuration register 1 */
++ WM32(0xFEC00000,0xa8000080)
++ /* WM32(0xFEE00000,0xd8131400) */
++ lis r3, 0xFEE00000@h
++ ori r3, r3, 0xFEE00000@l
++
++ lwz r5, 0(r3) /* load PCIR1 Config */
++ lis r4, 0x0
++ ori r4, r4, 0x1000
++ and r5, r4, r5 /* Get Bit20(RCS0) */
++
++ lis r4, 0xd8130400@h
++ ori r4, r4, 0xd8130400@l
++ or r4, r4, r5 /* Save (RCS0) */
++
++ stw r4, 0x0000(r3)
++ sync
++ isync
++
++ /* Processor interface configuration register 2 */
++ WM32(0xFEC00000,0xac000080)
++ WM32(0xFEE00000,0x00000004)
++ /* Embeded Utility Memory Block Base Address register */
++ WM32(0xFEC00000,0x78000080)
++ WM32(0xFEE00000,0x00000080)
++ /* Address map B option register */
++ WM32(0xFEC00000,0xe0000080)
++ WM8(0xFEE00000,0x20) /* DLL_RESET on */
++
++ /* Address map B option register */
++ WM32(0xFEC00000,0xe0000080)
++ WM8(0xFEE00000,0xc0)
++ /* PCI arbiter control register */
++ WM32(0xFEC00000,0x46000080)
++ WM16(0xFEE00002,0x00c0)
++
++ /* Added to use the high drive strength for the memory selects & addressing */
++ WM32(0xFEC00000,0x73000080)
++ /* WM8(0xFEE00003,0x15) */ /*0x17*/
++ /* Motorola Errata refer to User's Manual Errata#19 */
++ /* WM8(0xFEE00003,0xD5) */
++ WM8(0xFEE00003,0x95)
++
++ /* set miscellaneous I/O control register 1 */
++ WM32(0xFEC00000,0x76000080)
++ WM8(0xFEE00002,0x00) /*0x02*/
++ /* set miscellaneous I/O control register 2 */
++ WM32(0xFEC00000,0x77000080)
++ WM8(0xFEE00003,0x30) /* 0x30 */
++
++ /* init memory controller */
++ WM32(0xFEC00000,0x80000080)
++ WM32(0xFEE00000,0x00FFFFFF)
++
++ WM32(0xFEC00000,0x84000080)
++ WM32(0xFEE00000,0xFFFFFFFF)
++
++ WM32(0xFEC00000,0x90000080)
++#if defined(CONFIG_LAN) || defined(CONFIG_HLAN)
++ WM32(0xFEE00000,0x3FFFFFFF) /* 64MB */
++#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
++ WM32(0xFEE00000,0x7FFFFFFF) /* 128MB */
++#endif
++
++ WM32(0xFEC00000,0x94000080)
++ WM32(0xFEE00000,0xFFFFFFFF)
++
++ WM32(0xFEC00000,0x88000080)
++ WM32(0xFEE00000,0x00030303)
++ /* EMSAR2 */
++ WM32(0xFEC00000,0x8C000080)
++ WM32(0xFEE00000,0x03030303)
++ /* select EMSER1 */
++ WM32(0xFEC00000,0x98000080)
++ WM32(0xFEE00000,0x00030303)
++ /* select EMSER2 */
++ WM32(0xFEC00000,0x9C000080)
++ WM32(0xFEE00000,0x03030303)
++
++ /* MMCR1 */
++ WM32(0xFEC00000,0xf0000080)
++#if defined(CONFIG_LAN) || defined(CONFIG_HLAN)
++ WM32(0xFEE00000,0x0200E005) /* bank 0 13xnx4 */
++#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
++ WM32(0xFEE00000,0x0200E005) /* bank 0 13xnx4 */
++#endif
++ /* MCCR2 */
++ WM32(0xFEC00000,0xf4000080)
++#if defined(CONFIG_LAN) || defined(CONFIG_HLAN)
++ WM32(0xFEE00000,0xe0150000) /* 100MHz Memory bus */
++#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
++ WM32(0xFEE00000,0x80150000) /* 133MHz Memory bus */
++#endif
++ /* MCCR3 */
++ WM32(0xFEC00000,0xf8000080)
++ WM32(0xFEE00000,0x00000077) /* BSTOPRE_M =7 / REFREC=8 */
++
++ /* MCCR4 */
++ WM32(0xFEC00000,0xfc000080)
++#if defined(CONFIG_LAN) || defined(CONFIG_HLAN)
++ WM32(0xFEE00000,0x29233222) /* CAS latency=2, burst length=8, Ext Rom=eable */
++#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
++ WM32(0xFEE00000,0x29323222) /* CAS latency=3, burst length=4, Ext Rom=eable */
++#endif
++
++ /* Output driver control register */
++ WM32(0xFEC00000,0x73000080)
++ WM8(0xFEE00003,0x15) /* for all 40 ohm */
++ /* CLK driver Control Register */
++ WM32(0xFEC00000,0x74000080)
++ WM16(0xFEE00000,0x7078)
++ /* select MBEN */
++ WM32(0xFEC00000,0xa0000080)
++ WM8(0xFEE00000, 0x01)
++ /* MPM */
++ WM32(0xFEC00000,0xa3000080)
++#if defined(CONFIG_LAN) || defined(CONFIG_HLAN)
++ WM8(0xFEE00003,0xF2) /* PGMAX = 242 */
++#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
++ WM8(0xFEE00003,0xC9) /* PGMAX = 201 */
++#endif
++ /* ERCR s */
++ WM32(0xFEC00000,0xd0000080) /* ; select ERCR1 */
++ WM32(0xFEE00000,0xffffff85)
++ WM32(0xFEC00000,0xd4000080) /* ; select ERCR2 */
++ WM32(0xFEE00000,0xffffff05)
++ WM32(0xFEC00000,0xd8000080) /* ; select ERCR3 */
++ WM32(0xFEE00000,0x0000f80f)
++ WM32(0xFEC00000,0xdc000080) /* ; select ERCR4 */
++ WM32(0xFEE00000,0x0e000000)
++
++ /* MCCR1 */
++ WM32(0xFEC00000,0xf0000080)
++ WM32(0xFEE00000,0x0200E805) /* 11 + 3 clock wait MEMGO on */
++
++ /* Init UART for AVR */
++ WM8(UART1_LCR,0x00) /* clear LCR */
++ WM8(UART1_IER,0x00) /* disable interrupt */
++ WM8(UART1_LCR,0x80) /* set LCR[DLAB] bit */
++ WM8(UART1_DCR,0x01) /* set DUART mode */
++#if defined(CONFIG_LAN) || defined(CONFIG_HLAN)
++ WM8(UART1, 0x8B) /* set DLL(baudrate 9600bps, 100MHz) */
++ WM8(UART1_IER,0x02) /* set DLM(baudrate 9600bps, 100MHz) */
++#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
++ WM8(UART1, 0x61) /* set DLL(baudrate 9600bps, 133MHz) */
++ WM8(UART1_IER,0x03) /* set DLM(baudrate 9600bps, 133MHz) */
++#endif
++ WM8(UART1_LCR,0x1b) /* set 8data, 1stop, even parity */
++ WM8(UART1, 0x00) /* clear MCR */
++ WM8(UART1_FCR,0x07) /* clear & enable FIFO */
++
++ /* Init UART for CONSOLE */
++ WM8(UART2_LCR,0x00) /* clear LCR */
++ WM8(UART2_IER,0x00) /* disable interrupt */
++ WM8(UART2_LCR,0x80) /* set LCR[DLAB] bit */
++ WM8(UART1_DCR,0x01) /* set DUART mode */
++#if defined(CONFIG_LAN) || defined(CONFIG_HLAN)
++ WM8(UART2, 0x6C) /* set DLL(baudrate 57600bps, 100MHz) */
++ WM8(UART2_IER,0x00) /* set DLM(baudrate 57600bps, 100MHz) */
++#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
++ WM8(UART2, 0x90) /* set DLL(baudrate 57600bps, 133MHz) */
++ WM8(UART2_IER,0x00) /* set DLM(baudrate 57600bps, 133MHz) */
++#endif
++ WM8(UART2_LCR,0x03) /* set 8data, 1stop, non parity */
++ WM8(UART2, 0x00) /* clear MCR */
++ WM8(UART2_FCR,0x07) /* clear & enable FIFO */
++#endif /* !defined (CFG_RAMBOOT)
++
++ /* PCI Command Register initialize */
++ lis r3, 0x8000
++ ori r3, r3, 0x0004
++ lis r4, 0xFEC0
++ ori r4, r4, 0x0000
++ stwbrx r4, 0, r3
++ sync
++ isync
++
++ li r6, 0x0006
++ lis r5, 0xFEE0
++ ori r5, r5, 0x0000
++ sthbrx r5, 0, r6
++ sync
++ isync
++
++#if !defined(CFG_RAMBOOT)
++check_ram:
++ /* Wait 1 sec for AVR become enable */
++ li r3,1000
++ mulli r3,r3,1000
++ mulli r4,r3,1000 /* nanoseconds */
++ addi r4,r4,39
++ li r5,40 /* 40ns if for 100 Mhz bus */
++ divw r4,r4,r5 /* BUS ticks */
++1: mftbu r5
++ mftb r6
++ mftbu r7
++ cmp 0,r5,r7
++ bne 1b /* Get [synced] base time */
++ addc r9,r6,r4 /* Compute end time */
++ addze r8,r5
++2: mftbu r5
++ cmp 0,r5,r8
++ blt 2b
++ bgt 3f
++ mftb r6
++ cmp 0,r6,r9
++ blt 2b
++#if 1
++3:
++#else
++ /* Check RAM */
++ /* set start address(0x00000000) */
++3: xor r4,r4,r4
++ lis r5, RAM_SIZE@h
++ ori r5, r5, RAM_SIZE@l
++ lis r6, 0xaaaa /* mask pattern a */
++ ori r6, r6, 0xaaaa
++ lis r7, 0x5555 /* mask pattern b */
++ ori r7, r7, 0x5555
++ lis r8, 0x0000 /* check step size */
++ ori r8, r8, 0x0100
++check_ram_loop:
++ cmp 0,r4,r5
++ beq check_ram_end
++ stw r6,0(r4)
++ isync
++ lwz r3,0(r4)
++ isync
++ cmp 0,r3,r6
++ bne ram_error
++ stw r7,0x00fc(r4)
++ isync
++ lwz r3,0x00fc(r4)
++ isync
++ cmp 0,r3,r7
++ bne ram_error
++ add r4,r4,r8
++ b check_ram_loop
++ram_error:
++#if defined(CONFIG_LAN)
++ WM8(UART1,0x39) /* ram error */
++#elif defined(CONFIG_HGLAN) ||defined(CONFIG_HLAN) || defined(CONFIG_HTGL)
++ WM8(UART1,0x6F) /* ram error */
++#endif
++ b ram_error
++check_ram_end:
++#endif /* #if 1 */
++#endif /* !defined (CFG_RAMBOOT) */
++
++/* The instruction cache is enabled and the data cache is disabled */
++ blr
+diff -urN u-boot-86xx/board/linkstation/firminfo.h u-boot-86xx-kuro_clean/board/linkstation/firminfo.h
+--- u-boot-86xx/board/linkstation/firminfo.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/board/linkstation/firminfo.h 2006-11-06 22:05:38.000000000 +0100
+@@ -0,0 +1,27 @@
++#define FIRMNAME_MAX 31
++#define SUBVERSION_MAX 31
++#define FIRMINFO_VER 1
++
++struct firminfo {
++ unsigned long info_ver;
++ unsigned long firmid;
++ char firmname[FIRMNAME_MAX+1];
++ char subver[SUBVERSION_MAX+1];
++ unsigned short ver_major;
++ unsigned short ver_minor;
++ unsigned short build;
++ char year;
++ char mon;
++ char day;
++ char hour;
++ char min;
++ char sec;
++ unsigned long size;
++ unsigned long chksum;
++
++ unsigned long kernel_offset;
++ unsigned long kernel_size;
++ unsigned long initrd_offset;
++ unsigned long initrd_size;
++ } __attribute((aligned(4)));
++// ----------------------------------------------------
+diff -urN u-boot-86xx/board/linkstation/flash.c u-boot-86xx-kuro_clean/board/linkstation/flash.c
+--- u-boot-86xx/board/linkstation/flash.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/board/linkstation/flash.c 2006-11-06 22:05:38.000000000 +0100
+@@ -0,0 +1,893 @@
++/*
++ * flash.c
++ *
++ * Flash device interface for LinkStation
++ * Supports CFI flash devices using the AMD standard command set
++ *
++ * Copyright (C) 2006 Mihai Georgin <u-boot@linuxnotincluded.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 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 the MTD code from the Linux kernel
++ *
++ * Based on include/melco/flashd.c (linux-2.4.17_mvl21-sandpoint)
++ * Copyright (C) 2001-2004 BUFFALO INC.
++ */
++#include <common.h>
++#include <asm/io.h>
++#include <mpc824x.h>
++
++#if 0
++#define DEBUG_CFI
++#endif
++
++#undef debug
++#ifdef DEBUG_CFI
++#define debug(fmt,args...) printf(fmt,##args)
++#else
++#define debug(fmt,args...)
++#endif /* DEBUG_CFI */
++
++#if CFG_MAX_FLASH_BANKS > 1
++#error Only 1 flash bank supported
++#endif
++
++#define perror(fmt,args...) printf("%s: ",__FUNCTION__);printf(fmt,##args)
++
++#define MAX_ERASE_REGIONS 4
++
++#define P_ID_NONE 0
++#define P_ID_INTEL_EXT 1
++#define P_ID_AMD_STD 2
++#define P_ID_INTEL_STD 3
++#define P_ID_AMD_EXT 4
++#define P_ID_MITSUBISHI_STD 256
++#define P_ID_MITSUBISHI_EXT 257
++#define P_ID_RESERVED 65535
++
++#define CFI_DEVICETYPE_X8 (8 / 8)
++#define CFI_DEVICETYPE_X16 (16 / 8)
++
++#define FLASH_DATA_MASK 0xFF
++
++#define FUJ_MANUFACT_LS (FUJ_MANUFACT & FLASH_DATA_MASK)
++#define STM_MANUFACT_LS (STM_MANUFACT & FLASH_DATA_MASK)
++#define MX_MANUFACT_LS (MX_MANUFACT & FLASH_DATA_MASK)
++
++/* Unknown manufacturer */
++#define FLASH_MAN_UNKNOWN 0xFFFF0000
++
++/* Fujitsu MBM29PL320MT which is using the same */
++/* codes as the AMD Am29LV320MT "mirror" flash */
++#define AMD_ID_MIRROR_LS (AMD_ID_MIRROR & FLASH_DATA_MASK)
++#define AMD_ID_LV320T_2_LS (AMD_ID_LV320T_2 & FLASH_DATA_MASK)
++#define AMD_ID_LV320T_3_LS (AMD_ID_LV320T_3 & FLASH_DATA_MASK)
++
++/* ST Micro M29W320DT and M29W320DB */
++#define STM_ID_29W320DT_LS (STM_ID_29W320DT & FLASH_DATA_MASK)
++#define STM_ID_29W320DB_LS (STM_ID_29W320DB & FLASH_DATA_MASK)
++
++/* ST Micro M29DW324DT and M29DW324DB */
++#define STM_ID_29W324DT_LS (STM_ID_29W324DT & FLASH_DATA_MASK)
++#define STM_ID_29W324DB_LS (STM_ID_29W324DB & FLASH_DATA_MASK)
++
++/* Macronix MX29LV320T */
++#define MX_ID_LV320T_LS (MX_ID_LV320T & FLASH_DATA_MASK)
++
++/* Basic Query Structure */
++struct cfi_ident {
++ __u8 qry[3];
++ __u16 P_ID;
++ __u16 P_ADR;
++ __u16 A_ID;
++ __u16 A_ADR;
++ __u8 VccMin;
++ __u8 VccMax;
++ __u8 VppMin;
++ __u8 VppMax;
++ __u8 WordWriteTimeoutTyp;
++ __u8 BufWriteTimeoutTyp;
++ __u8 BlockEraseTimeoutTyp;
++ __u8 ChipEraseTimeoutTyp;
++ __u8 WordWriteTimeoutMax;
++ __u8 BufWriteTimeoutMax;
++ __u8 BlockEraseTimeoutMax;
++ __u8 ChipEraseTimeoutMax;
++ __u8 DevSize;
++ __u16 InterfaceDesc;
++ __u16 MaxBufWriteSize;
++ __u8 NumEraseRegions;
++ __u32 EraseRegionInfo[MAX_ERASE_REGIONS];
++} __attribute__((packed));
++
++struct cfi_private {
++ __u32 base;
++ int device_type;
++ int addr_unlock1;
++ int addr_unlock2;
++ struct cfi_ident *cfiq;
++ int mfr;
++ int id[3]; /* Supports AMD MirrorBit flash */
++ char *flash_name;
++ int wrd_wr_time;
++ int buf_wr_time;
++ int erase_time;
++ int (*blk_erase)(flash_info_t *info, int s_first, int s_last);
++ int (*blk_write)(flash_info_t *info, __u8 *buf, __u32 addr, int sz);
++};
++
++static inline __u8 cfi_read8(__u32 addr)
++{
++ return (*(volatile __u8 *)(addr));
++}
++
++static inline void cfi_write8(__u8 val, __u32 addr)
++{
++ *(volatile __u8 *)(addr) = val;
++ sync();
++}
++
++/*
++ * Sends a CFI command to a bank of flash for the given type.
++ * Returns the offset to the sent command
++ */
++static inline __u32 cfi_cmd(__u8 cmd, __u32 cmd_addr, __u32 base, int type)
++{
++ __u32 addr;
++
++ addr = base + cmd_addr * type;
++ if (cmd_addr * type == 0x554)
++ ++addr;
++
++ cfi_write8(cmd, addr);
++
++ return addr - base;
++}
++
++static inline __u8 cfi_read_query(__u32 addr)
++{
++ return cfi_read8(addr);
++}
++
++flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
++static struct cfi_private cfis;
++static struct cfi_ident cfi_idents;
++static struct cfi_private *cfi;
++
++static int cfi_probe_chip(struct cfi_private *cfi);
++static unsigned long cfi_amdstd_setup(struct cfi_private *cfi, int primary);
++static void print_cfi_ident(struct cfi_ident *);
++static int flash_amdstd_erase(flash_info_t *info, int s_first, int s_last);
++static int flash_amdstd_wbuff(flash_info_t *info, __u8 *buf, __u32 addr,int sz);
++static int flash_amdstd_wubyp(flash_info_t *info, __u8 *buf, __u32 addr,int sz);
++static int flash_amdstd_write(flash_info_t *info, __u8 *buf, __u32 addr,int sz);
++
++
++
++unsigned long flash_init(void)
++{
++ unsigned long flash_size;
++ __u16 type;
++
++ debug("%s\n", __FUNCTION__);
++
++ cfi = &cfis;
++ memset(cfi, 0, sizeof(struct cfi_private));
++
++ cfi->base = CFG_FLASH_BASE;
++
++ /* Identify CFI chip */
++ /* Probe for X8 device first */
++ cfi->device_type = CFI_DEVICETYPE_X8;
++ if (cfi_probe_chip(cfi)) {
++ /* The probe didn't like it */
++ /* so probe for X16/X8 device */
++ cfi->device_type = CFI_DEVICETYPE_X16;
++ if (cfi_probe_chip(cfi)) {
++ /* The probe didn't like it */
++ return 0UL;
++ }
++ }
++
++ /* Check if it is AMD standard cmd set */
++ type = cfi->cfiq->P_ID;
++ if (type == P_ID_AMD_STD)
++ flash_size = cfi_amdstd_setup(cfi, 1);
++ else {
++ perror("Primary cmd set is not AMD std. Trying alternate.\n");
++ flash_size = 0;
++ }
++ if (!flash_size) {
++ type = cfi->cfiq->A_ID;
++ if (type == P_ID_AMD_STD)
++ flash_size = cfi_amdstd_setup(cfi, 0);
++ else {
++ perror("Alternate cmd set is not AMD std.\n");
++ return 0UL;
++ }
++ }
++
++ if (flash_size && flash_size == 4*1024*1024) {
++ /* Flash protection ON by default */
++ flash_protect(FLAG_PROTECT_SET, cfi->base, cfi->base+flash_size-1, flash_info);
++
++ return flash_size;
++ }
++
++ if (flash_size) {
++ perror("Unsupported flash size: %d\n", flash_size);
++ } else {
++ perror("Vendor Command Set not supported\n");
++ printf("Primary: 0x%04X, Alternate: 0x%04X\n",
++ cfi->cfiq->P_ID, cfi->cfiq->A_ID);
++ }
++ return 0UL;
++}
++
++void flash_print_info(flash_info_t *info)
++{
++ int i;
++
++ debug("%s\n", __FUNCTION__);
++
++ printf("Flash chip: %s\n\n",
++ cfi->flash_name?cfi->flash_name:"UNKNOWN");
++ print_cfi_ident(cfi->cfiq);
++ printf("\nActual values used by U-Boot:\n");
++ printf("Word write timeout: %6d ms\n", cfi->wrd_wr_time);
++ printf("Buffer write timeout: %6d ms\n", cfi->buf_wr_time);
++ printf("Sector erase timeout: %6d ms\n", cfi->erase_time);
++ printf("\nSize: %ld MiB in %d Sectors\n",info->size>>20,info->sector_count);
++ printf (" Sector Start Addresses:");
++ for (i=0; i<info->sector_count; i++) {
++ if (!(i % 5))
++ printf ("\n ");
++ printf (" %08lX%s", info->start[i], info->protect[i]?" (RO)" : " (RW)");
++ }
++ printf ("\n");
++}
++
++int flash_erase(flash_info_t *info, int s_first, int s_last)
++{
++ return (*(cfi->blk_erase))(info, s_first, s_last);
++}
++
++int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
++{
++ return (*(cfi->blk_write))(info, src, addr, cnt);
++}
++
++static int cfi_probe_chip(struct cfi_private *cfi)
++{
++ int ofs_factor = cfi->device_type;
++ __u32 base = cfi->base;
++ int num_erase_regions, scount;
++ int i;
++
++ debug("%s\n", __FUNCTION__);
++
++ cfi_cmd(0xF0, 0x00, base, cfi->device_type);
++ cfi_cmd(0x98, 0x55, base, cfi->device_type);
++
++ if (cfi_read8(base + ofs_factor * 0x10) != 'Q' ||
++ cfi_read8(base + ofs_factor * 0x11) != 'R' ||
++ cfi_read8(base + ofs_factor * 0x12) != 'Y') {
++ debug("Not a CFI flash\n");
++ /* Put the chip back into read array mode */
++ cfi_cmd(0xF0, 0x00, base, cfi->device_type);
++ return -1;
++ }
++
++ num_erase_regions = cfi_read_query(base + 0x2C * ofs_factor);
++ if (!num_erase_regions) {
++ perror("No erase regions\n");
++ /* Put the chip back into read read array mode */
++ cfi_cmd(0xF0, 0x00, base, cfi->device_type);
++ return -1;
++ }
++ if (num_erase_regions > MAX_ERASE_REGIONS) {
++ perror("Number of erase regions (%d) > MAX_ERASE_REGIONS (%d)\n",
++ num_erase_regions, MAX_ERASE_REGIONS);
++ /* Put the chip back into read read array mode */
++ cfi_cmd(0xF0, 0x00, base, cfi->device_type);
++ return -1;
++ }
++
++ cfi->cfiq = &cfi_idents;
++ memset(cfi->cfiq, 0, sizeof(struct cfi_ident));
++ debug("cfi->cfiq: 0x%08X\n", cfi->cfiq);
++
++ /* Read the CFI info structure */
++ for (i=0; i < sizeof(struct cfi_ident) + num_erase_regions * 4; i++)
++ ((__u8 *)cfi->cfiq)[i] = cfi_read_query(base + (0x10 + i) * ofs_factor);
++
++ /* Do any necessary byteswapping */
++ cfi->cfiq->P_ID = __le16_to_cpu(cfi->cfiq->P_ID);
++ cfi->cfiq->P_ADR = __le16_to_cpu(cfi->cfiq->P_ADR);
++ cfi->cfiq->A_ID = __le16_to_cpu(cfi->cfiq->A_ID);
++ cfi->cfiq->A_ADR = __le16_to_cpu(cfi->cfiq->A_ADR);
++ cfi->cfiq->InterfaceDesc = __le16_to_cpu(cfi->cfiq->InterfaceDesc);
++ cfi->cfiq->MaxBufWriteSize = __le16_to_cpu(cfi->cfiq->MaxBufWriteSize);
++
++#if 0
++ /* Dump the information therein */
++ print_cfi_ident(cfi->cfiq);
++#endif
++
++ scount = 0;
++ for (i=0; i<cfi->cfiq->NumEraseRegions; i++) {
++ cfi->cfiq->EraseRegionInfo[i] = __le32_to_cpu(cfi->cfiq->EraseRegionInfo[i]);
++ scount += (cfi->cfiq->EraseRegionInfo[i] & 0xFFFF) + 1;
++ debug(" Erase Region #%d: sector size 0x%4.4X bytes, %d sectors\n",
++ i, (cfi->cfiq->EraseRegionInfo[i] >> 8) & ~0xFF,
++ (cfi->cfiq->EraseRegionInfo[i] & 0xFFFF) + 1);
++ }
++ /* Put it back into Read Mode */
++ cfi_cmd(0xF0, 0, base, cfi->device_type);
++
++ if (scount > CFG_MAX_FLASH_SECT) {
++ perror("Number of sectors (%d) > CFG_MAX_FLASH_SECT (%d)\n",
++ scount, CFG_MAX_FLASH_SECT);
++ return -1;
++ }
++
++ debug("Found x%d device in 8-bit mode\n", cfi->device_type*8);
++
++ return 0;
++}
++
++static char *vendorname(__u16 vendor)
++{
++ switch (vendor) {
++ case P_ID_NONE:
++ return "None";
++ case P_ID_INTEL_EXT:
++ return "Intel/Sharp Extended";
++ case P_ID_AMD_STD:
++ return "AMD/Fujitsu Standard";
++ case P_ID_INTEL_STD:
++ return "Intel/Sharp Standard";
++ case P_ID_AMD_EXT:
++ return "AMD/Fujitsu Extended";
++ case P_ID_MITSUBISHI_STD:
++ return "Mitsubishi Standard";
++ case P_ID_MITSUBISHI_EXT:
++ return "Mitsubishi Extended";
++ case P_ID_RESERVED:
++ return "Not Allowed / Reserved for Future Use";
++ default:
++ return "Unknown";
++ }
++}
++
++static void print_cfi_ident(struct cfi_ident *cfip)
++{
++ printf("CFI Query Results:\n");
++ printf("Primary Vendor Command Set: 0x%4.4X (%s)\n",
++ cfip->P_ID, vendorname(cfip->P_ID));
++ if (cfip->P_ADR)
++ printf("Primary Algorithm Table at 0x%4.4X\n", cfip->P_ADR);
++ else
++ printf("No Primary Algorithm Table\n");
++
++ printf("Alternate Vendor Command Set: 0x%4.4X (%s)\n",
++ cfip->A_ID, vendorname(cfip->A_ID));
++ if (cfip->A_ADR)
++ printf("Alternate Algorithm Table at 0x%4.4X\n", cfip->A_ADR);
++ else
++ printf("No Alternate Algorithm Table\n");
++
++ printf("Vcc Min.: %d.%d V\n", cfip->VccMin >> 4, cfip->VccMin & 0xF);
++ printf("Vcc Max.: %d.%d V\n", cfip->VccMax >> 4, cfip->VccMax & 0xF);
++ if (cfip->VppMin) {
++ printf("Vpp Min.: %d.%d V\n", cfip->VppMin >> 4, cfip->VppMin & 0xF);
++ printf("Vpp Max.: %d.%d V\n", cfip->VppMax >> 4, cfip->VppMax & 0xF);
++ }
++ else
++ printf("No Vpp line\n");
++
++ printf("Typical byte/word write timeout: %d us\n",
++ 1<<cfip->WordWriteTimeoutTyp);
++ printf("Maximum byte/word write timeout: %d us\n",
++ (1<<cfip->WordWriteTimeoutMax) * (1<<cfip->WordWriteTimeoutTyp));
++
++ if (cfip->BufWriteTimeoutTyp || cfip->BufWriteTimeoutMax) {
++ printf("Typical full buffer write timeout: %d us\n",
++ 1<<cfip->BufWriteTimeoutTyp);
++ printf("Maximum full buffer write timeout: %d us\n",
++ (1<<cfip->BufWriteTimeoutMax) * (1<<cfip->BufWriteTimeoutTyp));
++ }
++ else
++ printf("Full buffer write not supported\n");
++
++ printf("Typical block erase timeout: %d ms\n",
++ 1<<cfip->BlockEraseTimeoutTyp);
++ printf("Maximum block erase timeout: %d ms\n",
++ (1<<cfip->BlockEraseTimeoutMax) * (1<<cfip->BlockEraseTimeoutTyp));
++ if (cfip->ChipEraseTimeoutTyp || cfip->ChipEraseTimeoutMax) {
++ printf("Typical chip erase timeout: %d ms\n",
++ 1<<cfip->ChipEraseTimeoutTyp);
++ printf("Maximum chip erase timeout: %d ms\n",
++ (1<<cfip->ChipEraseTimeoutMax) * (1<<cfip->ChipEraseTimeoutTyp));
++ }
++ else
++ printf("Chip erase not supported\n");
++
++ printf("Device size: 0x%X bytes (%d MiB)\n",
++ 1 << cfip->DevSize, 1 << (cfip->DevSize - 20));
++ printf("Flash Device Interface description: 0x%4.4X\n",cfip->InterfaceDesc);
++ switch(cfip->InterfaceDesc) {
++ case 0:
++ printf(" - x8-only asynchronous interface\n");
++ break;
++ case 1:
++ printf(" - x16-only asynchronous interface\n");
++ break;
++ case 2:
++ printf(" - x8 / x16 via BYTE# with asynchronous interface\n");
++ break;
++ case 3:
++ printf(" - x32-only asynchronous interface\n");
++ break;
++ case 65535:
++ printf(" - Not Allowed / Reserved\n");
++ break;
++ default:
++ printf(" - Unknown\n");
++ break;
++ }
++ printf("Max. bytes in buffer write: %d\n", 1 << cfip->MaxBufWriteSize);
++ printf("Number of Erase Block Regions: %d\n", cfip->NumEraseRegions);
++}
++
++static unsigned long cfi_amdstd_setup(struct cfi_private *cfi, int primary)
++{
++ flash_info_t *info = &flash_info[0];
++ __u32 base = cfi->base;
++ int ofs_factor = cfi->device_type;
++ __u32 addr_et = primary?cfi->cfiq->P_ADR:cfi->cfiq->A_ADR;
++ __u8 major, minor, bootloc;
++ __u32 offset, ernum, ersize;
++ int i, j;
++
++ /* Put the chip into read array mode */
++ cfi_cmd(0xF0, 0x00, base, cfi->device_type);
++ /* Autoselect */
++ cfi_cmd(0xAA, 0x555, base, cfi->device_type);
++ cfi_cmd(0x55, 0x2AA, base, cfi->device_type);
++ cfi_cmd(0x90, 0x555, base, cfi->device_type);
++ /* Read manufacturer and device id */
++ cfi->mfr = cfi_read_query(base + 0x00 * ofs_factor);
++ if ((cfi->id[0] = cfi_read_query(base + 0x01 * ofs_factor)) == 0x7E) {
++ cfi->id[1] = cfi_read_query(base + 0x0E * ofs_factor);
++ cfi->id[2] = cfi_read_query(base + 0x0F * ofs_factor);
++ }
++ /* Put the chip into read array mode */
++ cfi_cmd(0xF0, 0x00, base, cfi->device_type);
++
++ /* Put the chip into read query mode */
++ cfi_cmd(0x98, 0x55, base, cfi->device_type);
++ /* Find the boot block location and swap the erase regions as necessary */
++ major = cfi_read_query(base + (addr_et + 3) * ofs_factor);
++ minor = cfi_read_query(base + (addr_et + 4) * ofs_factor);
++ debug(" Amd/Fujitsu Extended Query Table v%c.%c at 0x%4.4X\n",
++ major, minor, addr_et);
++
++ if (((major << 8) | minor) < 0x3131) {
++ /* CFI version 1.0 => don't trust bootloc */
++ if (cfi->id[0] & 0x80) {
++ printf("Device ID is 0x%02X. Assuming broken CFI table.\n",
++ cfi->id[0]);
++ bootloc = 3; /* top boot */
++ } else
++ bootloc = 2; /* bottom boot */
++ } else
++ bootloc = cfi_read_query(base + (addr_et + 0xF) * ofs_factor);
++
++ if (bootloc == 3 && cfi->cfiq->NumEraseRegions > 1) {
++ debug("Top boot block. Swapping erase regions.\n");
++ for (i=0; i<cfi->cfiq->NumEraseRegions / 2; i++) {
++ int j = (cfi->cfiq->NumEraseRegions-1)-i;
++ __u32 swap;
++
++ swap = cfi->cfiq->EraseRegionInfo[i];
++ cfi->cfiq->EraseRegionInfo[i] = cfi->cfiq->EraseRegionInfo[j];
++ cfi->cfiq->EraseRegionInfo[j] = swap;
++ }
++ }
++
++ /* Put the chip into read array mode */
++ cfi_cmd(0xF0, 0x00, base, cfi->device_type);
++
++ switch (cfi->device_type) {
++ case CFI_DEVICETYPE_X8:
++ /* X8 chip */
++ cfi->addr_unlock1 = 0x555;
++ cfi->addr_unlock2 = 0x2AA;
++ break;
++ case CFI_DEVICETYPE_X16:
++ /* X16 chip in X8 mode */
++ cfi->addr_unlock1 = 0xAAA;
++ cfi->addr_unlock2 = 0x555;
++ break;
++ default:
++ perror("Unsupported device type %d\n", cfi->device_type);
++ return 0UL;
++ }
++
++ cfi->wrd_wr_time = 1 << cfi->cfiq->WordWriteTimeoutTyp;
++ cfi->wrd_wr_time *= 1 << cfi->cfiq->WordWriteTimeoutMax;
++ /* Word write time is in us, convert to ms */
++ cfi->wrd_wr_time = cfi->wrd_wr_time / 1000 + 1;
++ if (cfi->wrd_wr_time == 1)
++ /* Account for the timer resolution which is 1 ms */
++ cfi->wrd_wr_time = 2;
++ cfi->buf_wr_time = 1 << cfi->cfiq->BufWriteTimeoutTyp;
++ cfi->buf_wr_time *= 1 << cfi->cfiq->BufWriteTimeoutMax;
++ /* Buffer write time is in us, convert to ms */
++ cfi->buf_wr_time = cfi->buf_wr_time / 1000 + 1;
++ if (cfi->buf_wr_time == 1)
++ /* Account for the timer resolution which is 1 ms */
++ cfi->buf_wr_time = 2;
++ cfi->erase_time = 1 << cfi->cfiq->BlockEraseTimeoutTyp;
++ cfi->erase_time *= 1 << cfi->cfiq->BlockEraseTimeoutMax;
++
++ info->size = (1 << cfi->cfiq->DevSize);
++
++ info->sector_count = 0;
++ offset = CFG_FLASH_BASE;
++ for (i=0; i < cfi->cfiq->NumEraseRegions; i++) {
++ ersize = ((cfi->cfiq->EraseRegionInfo[i] >> 8) & ~0xFF);
++ ernum = (cfi->cfiq->EraseRegionInfo[i] & 0xFFFF) + 1;
++
++ for (j=0; j < ernum; j++) {
++ info->start[info->sector_count + j] = offset;
++ offset += ersize;
++ }
++
++ info->sector_count += ernum;
++ }
++
++ switch (cfi->mfr) {
++ case FUJ_MANUFACT_LS:
++ info->flash_id = FLASH_MAN_FUJ;
++ switch (cfi->id[0]) {
++ case AMD_ID_MIRROR_LS:
++ if (cfi->id[1] == AMD_ID_LV320T_2_LS &&
++ cfi->id[2] == AMD_ID_LV320T_3_LS) {
++ info->flash_id += FLASH_AMLV320T;
++ cfi->blk_write = flash_amdstd_wbuff;
++ cfi->flash_name = "FUJITSU MBM29PL32TM";
++ } else
++ info->flash_id += FLASH_UNKNOWN;
++ break;
++ default:
++ info->flash_id += FLASH_UNKNOWN;
++ break;
++ }
++ break;
++ case STM_MANUFACT_LS:
++ info->flash_id = FLASH_MAN_STM;
++ switch (cfi->id[0]) {
++ case STM_ID_29W320DT_LS:
++ info->flash_id += FLASH_STMW320DT;
++ cfi->blk_write = flash_amdstd_wubyp;
++ cfi->flash_name = "STMICRO M29W320DT";
++ break;
++ case STM_ID_29W320DB_LS:
++ info->flash_id += FLASH_STMW320DB;
++ cfi->blk_write = flash_amdstd_wubyp;
++ cfi->flash_name = "STMICRO M29W320DB";
++ break;
++ case STM_ID_29W324DT_LS:
++ info->flash_id += FLASH_STMW324DT;
++ cfi->blk_write = flash_amdstd_wubyp;
++ cfi->flash_name = "STMICRO M29W324DT";
++ break;
++ case STM_ID_29W324DB_LS:
++ info->flash_id += FLASH_STMW324DB;
++ cfi->blk_write = flash_amdstd_wubyp;
++ cfi->flash_name = "STMICRO M29W324DB";
++ break;
++ default:
++ info->flash_id += FLASH_UNKNOWN;
++ break;
++ }
++ break;
++ case MX_MANUFACT_LS:
++ info->flash_id = FLASH_MAN_MX;
++ switch (cfi->id[0]) {
++ case MX_ID_LV320T_LS:
++ info->flash_id += FLASH_MXLV320T;
++ cfi->blk_write = flash_amdstd_write;
++ cfi->flash_name = "MXIC MX29LV320T";
++ break;
++ default:
++ info->flash_id += FLASH_UNKNOWN;
++ break;
++ }
++ break;
++ default:
++ info->flash_id = FLASH_AMD_COMP;
++ break;
++ }
++
++ if ((info->flash_id & FLASH_TYPEMASK) == FLASH_UNKNOWN) {
++ /* Unknown but supported CFI flash */
++ cfi->flash_name = NULL;
++ if (cfi->cfiq->MaxBufWriteSize)
++ cfi->blk_write = flash_amdstd_wbuff;
++ else
++ cfi->blk_write = flash_amdstd_write;
++ }
++
++ cfi->blk_erase = flash_amdstd_erase;
++
++ return info->size;
++}
++
++#define BIT(x) (1<<x)
++/*
++ * Check the flash command state
++ */
++static int flash_amdstd_state(__u32 addr, __u32 target, int timeout)
++{
++ __u32 start_time = get_timer(0);
++ __u32 data;
++
++ debug("%s\n", __FUNCTION__);
++
++ do {
++ data = cfi_read8(addr);
++ if((data & BIT(7)) == (target & BIT(7)))
++ return 0;
++ if(data & BIT(5)) {
++ data = cfi_read8(addr);
++ if((data & BIT(7)) == (target & BIT(7)))
++ return 0;
++ else
++ return -1;
++ }
++ } while (get_timer(start_time) < timeout);
++ return -1;
++}
++
++/*
++ * Verify data written to flash
++ */
++static int flash_amdstd_vrfy(flash_info_t *info, __u8 *buf, __u32 addr, int sz)
++{
++ __u32 base = cfi->base;
++ __u8 *faddr;
++ long i;
++
++ debug("%s\n", __FUNCTION__);
++
++ faddr = (__u8 *)addr;
++ for(i=0; i < sz; i++) {
++ if(faddr[i] != buf[i]) {
++ printf("Flash Write verify fail at %08x. ", &faddr[i]);
++ printf("Expecting: %02X, Actual: %02X\n", faddr[i], buf[i]);
++ printf("Retrying...");
++ cfi_cmd(0xAA, cfi->addr_unlock1, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0x55, cfi->addr_unlock2, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0xA0, cfi->addr_unlock1, base, CFI_DEVICETYPE_X8);
++ cfi_write8(buf[i], (__u32)&faddr[i]);
++ if (flash_amdstd_state((__u32)&faddr[i], buf[i], cfi->wrd_wr_time)) {
++ printf("failed again\n");
++ cfi_cmd(0xF0, 0, base, CFI_DEVICETYPE_X8);
++ return 1;
++ } else
++ printf("suceeded\n");
++ }
++ }
++ return 0;
++}
++
++/*
++ * Erase flash sectors
++ */
++static int flash_amdstd_erase(flash_info_t *info, int s_first, int s_last)
++{
++ int prot, sect, nsect, flag;
++ __u32 l_sect;
++ __u32 base = cfi->base;
++
++ debug("%s\n", __FUNCTION__);
++
++ if (!info->size) {
++ printf ("Flash erase: Can't erase unsupported flash\n");
++ return 1;
++ }
++
++ if (s_first < 0 || s_first > s_last ||
++ s_first > (info->sector_count - 1) ||
++ s_last > (info->sector_count - 1)) {
++ printf ("Flash erase: no sectors to erase\n");
++ return 1;
++ }
++
++ printf("\nFlash erase: first = %d @ 0x%08lx\n",
++ s_first, info->start[s_first]);
++ printf(" last = %d @ 0x%08lx\n", s_last, info->start[s_last]);
++
++ nsect = s_last - s_first + 1;
++ for (prot = 0, sect=s_first; sect<=s_last; ++sect)
++ if (info->protect[sect])
++ prot++;
++ if (prot) {
++ if (prot == nsect) {
++ printf("Warning: All requested sectors are protected!\n");
++ printf(" No sectors to erase\n");
++ return 1;
++ }
++ else
++ printf("Warning: %d protected sectors will not be erased!\n", prot);
++ }
++ cfi_cmd(0xF0, 0x00, base, CFI_DEVICETYPE_X8);
++ udelay(1000);
++
++ /* Disable interrupts which might cause a timeout here */
++ flag = disable_interrupts();
++
++ cfi_cmd(0xAA, cfi->addr_unlock1, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0x55, cfi->addr_unlock2, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0x80, cfi->addr_unlock1, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0xAA, cfi->addr_unlock1, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0x55, cfi->addr_unlock2, base, CFI_DEVICETYPE_X8);
++ for (sect = s_first; sect <= s_last; sect++)
++ if (!info->protect[sect]) {
++ l_sect = info->start[sect];
++ cfi_write8(0x30, l_sect);
++ }
++ /* Erase begins 50us after the last sector address */
++ udelay(50);
++
++ /* All erase commands sent, enable interrupts */
++ if (flag)
++ enable_interrupts();
++
++ if (flash_amdstd_state(l_sect, 0xff, cfi->erase_time * nsect)) {
++ printf("Flash erase: Timeout\n");
++ cfi_cmd(0xF0, 0x00, base, CFI_DEVICETYPE_X8);
++ return 1;
++ }
++ printf("Flash erase: Done\n");
++ return 0;
++}
++
++/*
++ * Write to flash using Write Buffer programming
++ */
++static int flash_amdstd_wbuff(flash_info_t *info, __u8 *buf, __u32 addr, int sz)
++{
++ __u32 base = cfi->base;
++ __u32 wbufsz;
++ __u32 size, wsize, waddr, saddr;
++ __u8 *wbuf;
++ int i;
++
++ debug("%s\n", __FUNCTION__);
++
++ size = sz;
++ wbuf = buf;
++ wbufsz = 1 << cfi->cfiq->MaxBufWriteSize;
++
++ waddr = (addr + wbufsz - 1) & ~(wbufsz - 1);
++ if (waddr > addr)
++ wsize = waddr-addr;
++ else
++ wsize = wbufsz;
++ if (wsize > size)
++ wsize = size;
++ waddr = addr;
++
++ while (size > 0) {
++ for (i = 0; i < info->sector_count; i++)
++ if (waddr < info->start[i])
++ break;
++ saddr = info->start[i-1];
++
++ cfi_cmd(0xAA, cfi->addr_unlock1, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0x55, cfi->addr_unlock2, base, CFI_DEVICETYPE_X8);
++ cfi_write8(0x25, saddr);
++ cfi_write8(wsize-1, saddr);
++ for (i = 0; i < wsize; i++)
++ cfi_write8(*wbuf++, waddr++);
++ cfi_write8(0x29, saddr);
++
++ if (flash_amdstd_state(waddr-1, *(wbuf-1), cfi->buf_wr_time)) {
++ printf("Flash write buffer: Timeout\n");
++ cfi_cmd(0xF0, 0x00, base, CFI_DEVICETYPE_X8);
++ return 1;
++ }
++
++ size -= wsize;
++ if ((wsize = wbufsz) > size)
++ wsize = size;
++ }
++
++ return flash_amdstd_vrfy(info, buf, addr, sz);
++}
++
++/*
++ * Write to flash using Unlock Bypass command sequence
++ */
++static int flash_amdstd_wubyp(flash_info_t *info, __u8 *buf, __u32 addr, int sz)
++{
++ __u32 base = cfi->base;
++ __u32 waddr;
++ long i;
++
++ debug("%s\n", __FUNCTION__);
++
++ waddr = addr;
++
++ cfi_cmd(0xAA, cfi->addr_unlock1, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0x55, cfi->addr_unlock2, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0x20, cfi->addr_unlock1, base, CFI_DEVICETYPE_X8);
++
++ for(i=0; i < sz; i++) {
++ cfi_write8(0xA0, waddr);
++ cfi_write8(buf[i], waddr);
++ if (flash_amdstd_state(waddr, buf[i], cfi->wrd_wr_time)) {
++ printf("Flash unlock bypass write: Timeout\n");
++ cfi_cmd(0x90, 0, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0x00, 0, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0xF0, 0, base, CFI_DEVICETYPE_X8);
++ return 1;
++ }
++ waddr++;
++ }
++ cfi_cmd(0x90, 0, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0x00, 0, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0xF0, 0, base, CFI_DEVICETYPE_X8);
++
++ return flash_amdstd_vrfy(info, buf, addr, sz);
++}
++
++/*
++ * Write to flash using Word/Byte Program command sequence
++ */
++static int flash_amdstd_write(flash_info_t *info, __u8 *buf, __u32 addr, int sz)
++{
++ __u32 base = cfi->base;
++ __u32 waddr;
++ long i;
++
++ debug("%s\n", __FUNCTION__);
++
++ waddr = addr;
++
++ cfi_cmd(0xF0, 0, base, CFI_DEVICETYPE_X8);
++ for (i = 0; i < sz; i++) {
++ cfi_cmd(0xAA, cfi->addr_unlock1, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0x55, cfi->addr_unlock2, base, CFI_DEVICETYPE_X8);
++ cfi_cmd(0xA0, cfi->addr_unlock1, base, CFI_DEVICETYPE_X8);
++ cfi_write8(buf[i], waddr);
++ if (flash_amdstd_state(waddr, buf[i], cfi->wrd_wr_time)) {
++ printf("Flash write: Timeout\n");
++ cfi_cmd(0xF0, 0, base, CFI_DEVICETYPE_X8);
++ return 1;
++ }
++ waddr++;
++ }
++ cfi_cmd(0xF0, 0, base, CFI_DEVICETYPE_X8);
++
++ return flash_amdstd_vrfy(info, buf, addr, sz);
++}
++
++/* vim: set ts=4: */
+diff -urN u-boot-86xx/board/linkstation/hwctl.c u-boot-86xx-kuro_clean/board/linkstation/hwctl.c
+--- u-boot-86xx/board/linkstation/hwctl.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/board/linkstation/hwctl.c 2006-11-06 22:05:38.000000000 +0100
+@@ -0,0 +1,258 @@
++/*
++ * hwctl.c
++ *
++ * LinkStation HW Control Driver
++ *
++ * Copyright (C) 2001-2004 BUFFALO INC.
++ *
++ * This software may be used and distributed according to the terms of
++ * the GNU General Public License (GPL), incorporated herein by reference.
++ * Drivers based on or derived from this code fall under the GPL and must
++ * retain the authorship, copyright and license notice. This file is not
++ * a complete program and may only be used when the entire operating
++ * system is licensed under the GPL.
++ *
++ */
++
++#include <config.h>
++#include <common.h>
++#include <command.h>
++
++#define mdelay(n) udelay((n)*1000)
++
++#define AVR_PORT CFG_NS16550_COM2
++extern void udelay(unsigned long usec);
++
++
++// output BYTE data
++static inline void out_b(volatile unsigned char *addr, int val)
++{
++ __asm__ __volatile__("stb%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val));
++}
++
++#if 0
++// PWR,DISK_FULL/STATUS,DIAG LED controll
++void blink_led(unsigned char state)
++{
++#ifdef CONFIG_HTGL
++ switch (state)
++ {
++ case FLASH_CLEAR_START:
++ case FLASH_UPDATE_START:
++ out_b(AVR_PORT, 0x61);
++ out_b(AVR_PORT, 0x61);
++ out_b(AVR_PORT, 0x38);
++ out_b(AVR_PORT, 0x30);
++ out_b(AVR_PORT, 0x34);
++ out_b(AVR_PORT, 0x31);
++ mdelay(10);
++ out_b(AVR_PORT, 0x61);
++ out_b(AVR_PORT, 0x61);
++ out_b(AVR_PORT, 0x38);
++ out_b(AVR_PORT, 0x31);
++ out_b(AVR_PORT, 0x34);
++ out_b(AVR_PORT, 0x31);
++ mdelay(10);
++ out_b(AVR_PORT, 0x71);
++ out_b(AVR_PORT, 0x71);
++// out_b(AVR_PORT, 0x71);
++// out_b(AVR_PORT, 0x71);
++ mdelay(10);
++ out_b(AVR_PORT, 0x73);
++ out_b(AVR_PORT, 0x73);
++// out_b(AVR_PORT, 0x73);
++// out_b(AVR_PORT, 0x73);
++ mdelay(10);
++ break;
++ case FLASH_CLEAR_END:
++ case FLASH_UPDATE_END:
++ out_b(AVR_PORT, 0x70);
++ out_b(AVR_PORT, 0x70);
++// out_b(AVR_PORT, 0x70);
++// out_b(AVR_PORT, 0x70);
++ mdelay(10);
++ out_b(AVR_PORT, 0x72);
++ out_b(AVR_PORT, 0x72);
++// out_b(AVR_PORT, 0x72);
++// out_b(AVR_PORT, 0x72);
++ mdelay(10);
++ break;
++ case RAID_RESYNC_START:
++ break;
++ case RAID_RESYNC_END:
++ break;
++ default:
++ out_b(AVR_PORT, state);
++ out_b(AVR_PORT, state);
++ out_b(AVR_PORT, state);
++ out_b(AVR_PORT, state);
++ break;
++ }
++#else
++ out_b(AVR_PORT, state);
++ out_b(AVR_PORT, state);
++ out_b(AVR_PORT, state);
++ out_b(AVR_PORT, state);
++#endif
++
++}
++#endif
++
++// 2005.5.10 BUFFALO add
++//--------------------------------------------------------------
++static inline void miconCntl_SendUart(unsigned char dat)
++{
++ out_b((char *)AVR_PORT, dat);
++ udelay(1000);
++}
++
++//--------------------------------------------------------------
++void miconCntl_SendCmd(unsigned char dat)
++{
++ int i;
++
++ for (i=0; i<4; i++){
++ miconCntl_SendUart(dat);
++ }
++}
++
++//--------------------------------------------------------------
++void miconCntl_FanLow(void)
++{
++ debug("%s\n",__FUNCTION__);
++#ifdef CONFIG_HTGL
++ miconCntl_SendCmd(0x5C);
++#endif
++}
++//--------------------------------------------------------------
++void miconCntl_FanHigh(void)
++{
++ debug("%s\n",__FUNCTION__);
++#ifdef CONFIG_HTGL
++ miconCntl_SendCmd(0x5D);
++#endif
++}
++
++//--------------------------------------------------------------
++//1000Mbps
++void miconCntl_Eth1000M(int up)
++{
++ debug("%s (%d)\n",__FUNCTION__,up);
++#ifdef CONFIG_HTGL
++ if (up){
++ miconCntl_SendCmd(0x93);
++ }else{
++ miconCntl_SendCmd(0x92);
++ }
++#else
++ if (up){
++ miconCntl_SendCmd(0x5D);
++ }else{
++ miconCntl_SendCmd(0x5C);
++ }
++#endif
++}
++//--------------------------------------------------------------
++//100Mbps
++void miconCntl_Eth100M(int up)
++{
++ debug("%s (%d)\n",__FUNCTION__,up);
++#ifdef CONFIG_HTGL
++ if (up){
++ miconCntl_SendCmd(0x91);
++ }else{
++ miconCntl_SendCmd(0x90);
++ }
++#else
++ if (up){
++ miconCntl_SendCmd(0x5C);
++ }
++#endif
++}
++//--------------------------------------------------------------
++//10Mbps
++void miconCntl_Eth10M(int up)
++{
++ debug("%s (%d)\n",__FUNCTION__,up);
++#ifdef CONFIG_HTGL
++ if (up){
++ miconCntl_SendCmd(0x8F);
++ }else{
++ miconCntl_SendCmd(0x8E);
++ }
++#else
++ if (up){
++ miconCntl_SendCmd(0x5C);
++ }
++#endif
++}
++//--------------------------------------------------------------
++//��������
++void miconCntl_5f(void)
++{
++ debug("%s\n",__FUNCTION__);
++ miconCntl_SendCmd(0x5F);
++ mdelay(100);
++}
++
++//--------------------------------------------------------------
++// "reboot start" signal
++void miconCntl_Reboot(void)
++{
++ debug("%s\n",__FUNCTION__);
++ miconCntl_SendCmd(0x43);
++}
++#if 0
++//--------------------------------------------------------------
++// Raid recovery start
++void miconCntl_RadiRecovery(void)
++{
++ debug("%s\n",__FUNCTION__);
++#ifdef CONFIG_HTGL
++ miconCntl_SendUart(0x61); // a
++ miconCntl_SendUart(0x61); // a
++ miconCntl_SendUart(0x38); // 8
++ miconCntl_SendUart(0x30); // 0
++ miconCntl_SendUart(0x34); // 4
++ miconCntl_SendUart(0x31); // 1
++ miconCntl_SendCmd(0x71); // q
++#endif
++}
++//--------------------------------------------------------------
++// Raid recovery finish
++void miconCntl_RadiRecoveryFin(void)
++{
++ debug("%s\n",__FUNCTION__);
++#ifdef CONFIG_HTGL
++ miconCntl_SendCmd(0x70);
++#endif
++}
++#endif
++
++// ---------------------------------------------------------------
++// Disable watchdog timer
++void miconCntl_DisWDT(void)
++{
++ debug("%s\n",__FUNCTION__);
++ miconCntl_SendCmd(0x41); // A
++ miconCntl_SendCmd(0x46); // F
++ miconCntl_SendCmd(0x4A); // J
++ miconCntl_SendCmd(0x3E); // >
++ miconCntl_SendCmd(0x56); // V
++ miconCntl_SendCmd(0x3E); // >
++ miconCntl_SendCmd(0x5A); // Z
++ miconCntl_SendCmd(0x56); // V
++ miconCntl_SendCmd(0x4B); // K
++}
++// ---------------------------------------------------------------
++// U-Boot calls this function
++int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
++{
++ disable_interrupts();
++ miconCntl_Reboot();
++ while (1)
++ miconCntl_SendUart(0x47); /* Wait for reboot */
++
++}
++
++/* vim: set ts=4: */
+diff -urN u-boot-86xx/board/linkstation/ide.c u-boot-86xx-kuro_clean/board/linkstation/ide.c
+--- u-boot-86xx/board/linkstation/ide.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/board/linkstation/ide.c 2006-11-06 22:05:38.000000000 +0100
+@@ -0,0 +1,101 @@
++/*
++ * (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
++ *
++ */
++/* ide.c - ide support functions */
++
++
++#include <common.h>
++
++#ifdef CFG_CMD_IDE
++#include <ata.h>
++#include <ide.h>
++#include <pci.h>
++
++#define IT8212_PCI_CpuCONTROL 0x5e
++#define IT8212_PCI_PciModeCONTROL 0x50
++#define IT8212_PCI_IdeIoCONFIG 0x40
++#define IT8212_PCI_IdeBusSkewCONTROL 0x4c
++#define IT8212_PCI_IdeDrivingCURRENT 0x42
++
++extern ulong ide_bus_offset[CFG_IDE_MAXBUS];
++extern struct pci_controller hose;
++
++int ide_preinit (void)
++{
++ int status;
++ pci_dev_t devbusfn;
++ int l;
++
++ status = 1;
++ for (l = 0; l < CFG_IDE_MAXBUS; l++) {
++ ide_bus_offset[l] = -ATA_STATUS;
++ }
++ devbusfn = pci_find_device (PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_SII_680, 0);
++ if (devbusfn == -1)
++ devbusfn = pci_find_device (PCI_VENDOR_ID_ITE,PCI_DEVICE_ID_ITE_8212,0);
++ if (devbusfn != -1) {
++ status = 0;
++
++ pci_read_config_dword (devbusfn, PCI_BASE_ADDRESS_0,
++ (u32 *) &ide_bus_offset[0]);
++ ide_bus_offset[0] &= 0xfffffffe;
++ ide_bus_offset[0] = pci_hose_bus_to_phys(&hose,
++ ide_bus_offset[0] & 0xfffffffe,
++ PCI_REGION_IO);
++ pci_read_config_dword (devbusfn, PCI_BASE_ADDRESS_2,
++ (u32 *) &ide_bus_offset[1]);
++ ide_bus_offset[1] &= 0xfffffffe;
++ ide_bus_offset[1] = pci_hose_bus_to_phys(&hose,
++ ide_bus_offset[1] & 0xfffffffe,
++ PCI_REGION_IO);
++ }
++
++ if (pci_find_device (PCI_VENDOR_ID_ITE, PCI_DEVICE_ID_ITE_8212, 0) != -1) {
++ pci_write_config_byte(devbusfn, IT8212_PCI_CpuCONTROL, 0x01);
++ pci_write_config_byte(devbusfn, IT8212_PCI_PciModeCONTROL, 0x00);
++ pci_write_config_word(devbusfn, PCI_COMMAND, 0x0047);
++#ifdef CONFIG_IT8212_SECONDARY_ENABLE
++ pci_write_config_word(devbusfn, IT8212_PCI_IdeIoCONFIG, 0xA0F3);
++#else
++ pci_write_config_word(devbusfn, IT8212_PCI_IdeIoCONFIG, 0x8031);
++#endif
++ pci_write_config_dword(devbusfn, IT8212_PCI_IdeBusSkewCONTROL, 0x02040204);
++// __LS_COMMENT__ BUFFALO changed 2004.11.10 changed for EMI
++ pci_write_config_byte(devbusfn, IT8212_PCI_IdeDrivingCURRENT, 0x36); // 10mA
++// pci_write_config_byte(dev, IT8212_PCI_IdeDrivingCURRENT, 0x09); // 4mA
++// pci_write_config_byte(dev, IT8212_PCI_IdeDrivingCURRENT, 0x12); // 6mA
++// pci_write_config_byte(dev, IT8212_PCI_IdeDrivingCURRENT, 0x24); // 6mA,2mA
++// pci_write_config_byte(dev, IT8212_PCI_IdeDrivingCURRENT, 0x2D); // 8mA,4mA
++ pci_write_config_byte(devbusfn, PCI_LATENCY_TIMER, 0x00);
++ }
++
++ return (status);
++}
++
++void ide_set_reset (int flag) {
++ return;
++}
++
++#endif /* of CONFIG_CMDS_IDE */
++
++/* vim: set ts=4: */
+diff -urN u-boot-86xx/board/linkstation/linkstation.c u-boot-86xx-kuro_clean/board/linkstation/linkstation.c
+--- u-boot-86xx/board/linkstation/linkstation.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/board/linkstation/linkstation.c 2006-11-06 22:05:38.000000000 +0100
+@@ -0,0 +1,127 @@
++/*
++ * linkstation.c
++ *
++ * Misc LinkStation specific functions
++ *
++ * Copyright (C) 2006 Mihai Georgin <u-boot@linuxnotincluded.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 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 <version.h>
++#include <common.h>
++#include <mpc824x.h>
++#include <asm/io.h>
++#include <ns16550.h>
++
++#ifdef CONFIG_PCI
++#include <pci.h>
++#endif
++
++extern void init_AVR_DUART(void);
++extern void hw_watchdog_reset(void);
++
++int checkboard (void)
++{
++ DECLARE_GLOBAL_DATA_PTR;
++ ulong busfreq = get_bus_freq (0);
++ char buf[32];
++ char *p;
++ bd_t *bd = gd->bd;
++
++ init_AVR_DUART();
++ hw_watchdog_reset();
++
++ if ((p = getenv ("console_nr")) != NULL) {
++ unsigned long con_nr = simple_strtoul (p, NULL, 10) & 3;
++
++ bd->bi_baudrate &= ~3;
++ bd->bi_baudrate |= con_nr & 3;
++ }
++ return 0;
++}
++
++long int initdram (int board_type)
++{
++ return (get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE));
++}
++
++/*
++ * Initialize PCI Devices
++ */
++#ifdef CONFIG_PCI
++
++#ifndef CONFIG_PCI_PNP
++
++static struct pci_config_table pci_linkstation_config_table[] = {
++ /* vendor, device, class */
++ /* bus, dev, func */
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0b, 0, /* AN983B or RTL8110S */
++ /* ethernet controller */
++ pci_cfgfunc_config_device, { PCI_ETH_IOADDR,
++ PCI_ETH_MEMADDR,
++ PCI_COMMAND_IO |
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0c, 0, /* SII680 or IT8211AF */
++ /* ide controller */
++ pci_cfgfunc_config_device, { PCI_IDE_IOADDR,
++ PCI_IDE_MEMADDR,
++ PCI_COMMAND_IO |
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0e, 0, /* D720101 USB controller, 1st USB 1.1 */
++ pci_cfgfunc_config_device, { PCI_USB0_IOADDR,
++ PCI_USB0_MEMADDR,
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0e, 1, /* D720101 USB controller, 2nd USB 1.1 */
++ pci_cfgfunc_config_device, { PCI_USB1_IOADDR,
++ PCI_USB1_MEMADDR,
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0e, 2, /* D720101 USB controller, USB 2.0 */
++ pci_cfgfunc_config_device, { PCI_USB2_IOADDR,
++ PCI_USB2_MEMADDR,
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++ { }
++};
++#endif
++
++struct pci_controller hose = {
++#ifndef CONFIG_PCI_PNP
++ config_table:pci_linkstation_config_table,
++#endif
++};
++
++void pci_init_board (void)
++{
++ pci_mpc824x_init (&hose);
++
++ /* Reset USB 1.1 */
++ out_le32(PCI_USB0_MEMADDR+8, 1);
++ out_le32(PCI_USB1_MEMADDR+8, 1);
++
++}
++#endif /* CONFIG_PCI */
++
++/* vim: set ts=4: */
+diff -urN u-boot-86xx/board/linkstation/nc.sh u-boot-86xx-kuro_clean/board/linkstation/nc.sh
+--- u-boot-86xx/board/linkstation/nc.sh 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/board/linkstation/nc.sh 2006-11-06 22:05:38.000000000 +0100
+@@ -0,0 +1,10 @@
++#! /bin/bash
++
++[ $# = 1 ] || { echo "Usage: $0 target_ip" >&2 ; exit 1 ; }
++TARGET_IP=$1
++
++stty -icanon -echo intr ^T
++#nc -u -l -p 6666 < /dev/null &
++nc -u -p 6666 -v -v ${TARGET_IP} 6666
++stty icanon echo intr ^C
++
+diff -urN u-boot-86xx/board/linkstation/u-boot.lds u-boot-86xx-kuro_clean/board/linkstation/u-boot.lds
+--- u-boot-86xx/board/linkstation/u-boot.lds 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/board/linkstation/u-boot.lds 2006-11-06 22:05:38.000000000 +0100
+@@ -0,0 +1,138 @@
++/*
++ * (C) Copyright 2001
++ * 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(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib); SEARCH_DIR(/usr/lib/gcc-lib/ppc-linux/3.3.3);
++*/
++/* 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/mpc824x/start.o (.text)
++ lib_ppc/board.o (.text)
++ lib_ppc/ppcstring.o (.text)
++ lib_generic/vsprintf.o (.text)
++ lib_generic/crc32.o (.text)
++ lib_generic/zlib.o (.text)
++
++ . = DEFINED(env_offset) ? env_offset : .;
++ common/environment.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 = .);
++}
+diff -urN u-boot-86xx/common/cmd_bootm.c u-boot-86xx-kuro_clean/common/cmd_bootm.c
+--- u-boot-86xx/common/cmd_bootm.c 2006-10-13 00:27:16.000000000 +0200
++++ u-boot-86xx-kuro_clean/common/cmd_bootm.c 2006-11-06 22:05:38.000000000 +0100
+@@ -193,6 +193,12 @@
+ verify = 0;
+ } else
+ #endif /* __I386__ */
++#ifdef CONFIG_LINKSTATION
++ extern boot_os_Fcn do_boot_lskernel;
++ do_boot_lskernel(cmdtp, flag, argc, argv,
++ addr, NULL, verify);
++ return 1; /* Only returns on error */
++#endif
+ {
+ puts ("Bad Magic Number\n");
+ SHOW_BOOT_PROGRESS (-1);
+diff -urN u-boot-86xx/common/cmd_ext2.c u-boot-86xx-kuro_clean/common/cmd_ext2.c
+--- u-boot-86xx/common/cmd_ext2.c 2006-10-13 00:27:16.000000000 +0200
++++ u-boot-86xx-kuro_clean/common/cmd_ext2.c 2006-11-06 22:05:38.000000000 +0100
+@@ -283,7 +283,8 @@
+ sprintf(buf, "%lX", filelen);
+ setenv("filesize", buf);
+
+- return(filelen);
++// return(filelen);
++ return(0);
+ }
+
+ U_BOOT_CMD(
+diff -urN u-boot-86xx/common/console.c u-boot-86xx-kuro_clean/common/console.c
+--- u-boot-86xx/common/console.c 2006-10-13 00:27:16.000000000 +0200
++++ u-boot-86xx-kuro_clean/common/console.c 2006-11-06 22:05:38.000000000 +0100
+@@ -48,7 +48,7 @@
+
+ #endif /* CFG_CONSOLE_IS_IN_ENV */
+
+-static int console_setfile (int file, device_t * dev)
++int console_setfile (int file, device_t * dev)
+ {
+ int error = 0;
+
+@@ -444,22 +444,27 @@
+ gd->flags |= GD_FLG_DEVINIT; /* device initialization completed */
+
+ #ifndef CFG_CONSOLE_INFO_QUIET
++ if (strcmp(stdio_devices[stdout]->name, "serial")) {
++ extern char version_string[];
++ printf ("\n%s\n", version_string);
++ }
++
+ /* Print information */
+- puts ("In: ");
++ puts ("stdin : ");
+ if (stdio_devices[stdin] == NULL) {
+ puts ("No input devices available!\n");
+ } else {
+ printf ("%s\n", stdio_devices[stdin]->name);
+ }
+
+- puts ("Out: ");
++ puts ("stdout: ");
+ if (stdio_devices[stdout] == NULL) {
+ puts ("No output devices available!\n");
+ } else {
+ printf ("%s\n", stdio_devices[stdout]->name);
+ }
+
+- puts ("Err: ");
++ puts ("stderr: ");
+ if (stdio_devices[stderr] == NULL) {
+ puts ("No error devices available!\n");
+ } else {
+diff -urN u-boot-86xx/common/main.c u-boot-86xx-kuro_clean/common/main.c
+--- u-boot-86xx/common/main.c 2006-10-13 00:27:16.000000000 +0200
++++ u-boot-86xx-kuro_clean/common/main.c 2006-11-06 22:05:38.000000000 +0100
+@@ -84,6 +84,11 @@
+ extern void mdm_init(void); /* defined in board.c */
+ #endif
+
++#ifdef CONFIG_LINKSTATION
++extern int avr_input(void);
++extern void avr_StopBoot(void);
++#endif
++
+ /***************************************************************************
+ * Watch for 'delay' seconds for autoboot stop or autoboot delay string.
+ * returns: 0 - no key string, allow autoboot
+@@ -162,7 +167,14 @@
+ /* In order to keep up with incoming data, check timeout only
+ * when catch up.
+ */
++ uint64_t onesec = endtick(1);
++ int bootremain = bootdelay;
+ while (!abort && get_ticks() <= etime) {
++ if (get_ticks() >= onesec) {
++ onesec = endtick(1);
++ putc('\r');
++ printf (CONFIG_AUTOBOOT_PROMPT, --bootremain);
++ }
+ for (i = 0; i < sizeof(delaykey) / sizeof(delaykey[0]); i ++) {
+ if (delaykey[i].len > 0 &&
+ presskey_len >= delaykey[i].len &&
+@@ -183,6 +195,20 @@
+ }
+ }
+
++#ifdef CONFIG_LINKSTATION
++ int avr_action = avr_input();
++ if (avr_action == -3)
++ /* Abort boot */
++ abort = 1;
++ else if (avr_action == -2) {
++ /* Restart boot */
++ putc('\r');
++ printf (CONFIG_AUTOBOOT_PROMPT, bootdelay);
++ etime = endtick(bootdelay);
++ onesec = endtick(1);
++ bootremain = bootdelay;
++ }
++#endif
+ if (tstc()) {
+ if (presskey_len < presskey_max) {
+ presskey [presskey_len ++] = getc();
+@@ -195,6 +221,7 @@
+ }
+ }
+ }
++ putc('\n');
+ # if DEBUG_BOOTKEYS
+ if (!abort)
+ puts ("key timeout\n");
+@@ -411,6 +438,10 @@
+ int prev = disable_ctrlc(1); /* disable Control C checking */
+ # endif
+
++#ifdef CONFIG_LINKSTATION
++ s = getenv("bootcmd"); /* bootcmd can change (see avr.c) */
++#endif
++
+ # ifndef CFG_HUSH_PARSER
+ run_command (s, 0);
+ # else
+@@ -445,6 +476,10 @@
+ }
+ #endif
+
++#ifdef CONFIG_LINKSTATION
++ avr_StopBoot();
++#endif
++
+ /*
+ * Main Loop for Monitor Command Processing
+ */
+@@ -469,6 +504,10 @@
+ strcpy (lastcommand, console_buffer);
+ else if (len == 0)
+ flag |= CMD_FLAG_REPEAT;
++#ifdef CONFIG_LINKSTATION
++ else if (len == -2)
++ return;
++#endif
+ #ifdef CONFIG_BOOT_RETRY_TIME
+ else if (len == -2) {
+ /* -2 means timed out, retry autoboot
+@@ -978,6 +1017,15 @@
+ show_activity(0);
+ }
+ #endif
++#ifdef CONFIG_LINKSTATION
++ while (!tstc()) {
++ int avr_ret = avr_input();
++ if (avr_ret == -2)
++ return (-2);
++ else if (avr_ret > 0)
++ return avr_ret;
++ }
++#endif
+ c = getc();
+
+ /*
+diff -urN u-boot-86xx/cpu/mpc824x/cpu.c u-boot-86xx-kuro_clean/cpu/mpc824x/cpu.c
+--- u-boot-86xx/cpu/mpc824x/cpu.c 2006-10-13 00:27:17.000000000 +0200
++++ u-boot-86xx-kuro_clean/cpu/mpc824x/cpu.c 2006-11-06 22:05:38.000000000 +0100
+@@ -92,6 +92,7 @@
+
+ /*------------------------------------------------------------------- */
+
++#ifndef CONFIG_LINKSTATION
+ int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ {
+ ulong msr, addr;
+@@ -125,6 +126,7 @@
+ return 1;
+
+ }
++#endif
+
+ /* ------------------------------------------------------------------------- */
+
+diff -urN u-boot-86xx/cpu/mpc824x/start.S u-boot-86xx-kuro_clean/cpu/mpc824x/start.S
+--- u-boot-86xx/cpu/mpc824x/start.S 2006-10-13 00:27:17.000000000 +0200
++++ u-boot-86xx-kuro_clean/cpu/mpc824x/start.S 2006-11-06 22:05:38.000000000 +0100
+@@ -130,7 +130,7 @@
+
+
+ in_flash:
+-#if defined(CONFIG_BMW)
++#if defined(CONFIG_BMW) || defined(CONFIG_LINKSTATION)
+ bl early_init_f /* Must be ASM: no stack yet! */
+ #endif
+ /*
+@@ -155,6 +155,7 @@
+ mtspr HID0, r2
+ sync
+
++#if !defined(CONFIG_LINKSTATION)
+ /* Allocate Initial RAM in data cache.
+ */
+ lis r3, CFG_INIT_RAM_ADDR@h
+@@ -175,6 +176,7 @@
+ ori r3, r3, 0x0080
+ sync
+ mtspr 1011, r3
++#endif /* !CONFIG_LINKSTATION */
+ #endif /* !CONFIG_BMW */
+ /*
+ * Thisk the stack pointer *somewhere* sensible. Doesnt
+@@ -195,7 +197,9 @@
+ GET_GOT /* initialize GOT access */
+
+ /* r3: IMMR */
++#if !defined(CONFIG_LINKSTATION)
+ bl cpu_init_f /* run low-level CPU init code (from Flash) */
++#endif
+
+ mr r3, r21
+ /* r3: BOOTFLAG */
+@@ -475,7 +479,7 @@
+ mr r10, r5 /* Save copy of Destination Address */
+
+ mr r3, r5 /* Destination Address */
+-#ifdef CFG_RAMBOOT
++#if defined(CFG_RAMBOOT) && !defined(CONFIG_LINKSTATION)
+ lis r4, CFG_SDRAM_BASE@h /* Source Address */
+ ori r4, r4, CFG_SDRAM_BASE@l
+ #else
+@@ -689,6 +693,14 @@
+ cmplw 0, r7, r8
+ blt 4b
+
++ mfmsr r7 /* Exception prefix 0x000 */
++ li r8,0
++ ori r8,r8,MSR_IP
++ andc r7,r7,r8
++ SYNC
++ mtmsr r7
++ SYNC
++
+ mtlr r4 /* restore link register */
+ blr
+
+diff -urN u-boot-86xx/drivers/dc2114x.c u-boot-86xx-kuro_clean/drivers/dc2114x.c
+--- u-boot-86xx/drivers/dc2114x.c 2006-10-13 00:27:17.000000000 +0200
++++ u-boot-86xx-kuro_clean/drivers/dc2114x.c 2006-11-06 22:05:38.000000000 +0100
+@@ -27,14 +27,20 @@
+ #include <net.h>
+ #include <pci.h>
+
++#if 0
++#define DEBUG_TRACE
++#define DEBUG_TULIP
++#endif
++
+ #undef DEBUG_SROM
+ #undef DEBUG_SROM2
+
+ #undef UPDATE_SROM
+
+-/* PCI Registers.
++/*
++ * PCI Registers.
+ */
+-#define PCI_CFDA_PSM 0x43
++#define PCI_CFDA_PSM 0x43
+
+ #define CFRV_RN 0x000000f0 /* Revision Number */
+
+@@ -43,10 +49,12 @@
+
+ #define DC2114x_BRK 0x0020 /* CFRV break between DC21142 & DC21143 */
+
+-/* Ethernet chip registers.
++/*
++ * Ethernet chip registers.
+ */
+ #define DE4X5_BMR 0x000 /* Bus Mode Register */
+ #define DE4X5_TPD 0x008 /* Transmit Poll Demand Reg */
++#define DE4X5_RPD 0x010 /* Receive Poll Demand Reg */
+ #define DE4X5_RRBA 0x018 /* RX Ring Base Address Reg */
+ #define DE4X5_TRBA 0x020 /* TX Ring Base Address Reg */
+ #define DE4X5_STS 0x028 /* Status Register */
+@@ -54,7 +62,8 @@
+ #define DE4X5_SICR 0x068 /* SIA Connectivity Register */
+ #define DE4X5_APROM 0x048 /* Ethernet Address PROM */
+
+-/* Register bits.
++/*
++ * Register bits.
+ */
+ #define BMR_SWR 0x00000001 /* Software Reset */
+ #define STS_TS 0x00700000 /* Transmit Process State */
+@@ -64,8 +73,10 @@
+ #define OMR_PS 0x00040000 /* Port Select */
+ #define OMR_SDP 0x02000000 /* SD Polarity - MUST BE ASSERTED */
+ #define OMR_PM 0x00000080 /* Pass All Multicast */
++#define OMR_PMS 0x00000040 /* Promiscuous */
+
+-/* Descriptor bits.
++/*
++ * Descriptor bits.
+ */
+ #define R_OWN 0x80000000 /* Own Bit */
+ #define RD_RER 0x02000000 /* Receive End Of Ring */
+@@ -85,10 +96,10 @@
+
+ #define SROM_HWADD 0x0014 /* Hardware Address offset in SROM */
+ #define SROM_RD 0x00004000 /* Read from Boot ROM */
+-#define EE_DATA_WRITE 0x04 /* EEPROM chip data in. */
++#define EE_DATA_WRITE 0x04 /* EEPROM chip data in. */
+ #define EE_WRITE_0 0x4801
+ #define EE_WRITE_1 0x4805
+-#define EE_DATA_READ 0x08 /* EEPROM chip data out. */
++#define EE_DATA_READ 0x08 /* EEPROM chip data out. */
+ #define SROM_SR 0x00000800 /* Select Serial ROM when set */
+
+ #define DT_IN 0x00000004 /* Serial Data In */
+@@ -97,6 +108,36 @@
+
+ #define POLL_DEMAND 1
+
++#ifndef PCI_VENDOR_ID_ADMTEK
++# define PCI_VENDOR_ID_ADMTEK 0x1317
++#endif
++#ifndef PCI_DEVICE_ID_ADMTEK_AN983B
++# define PCI_DEVICE_ID_ADMTEK_AN983B 0x985
++#endif
++
++/* The chip types have been taken from linux-2.4.31
++ * drivers/net/tulip/tulip.h
++ * Only COMET is used for now
++ */
++enum chips {
++ DC21040 = 0,
++ DC21041 = 1,
++ DC21140 = 2,
++ DC21142 = 3, DC21143 = 3,
++ LC82C168,
++ MX98713,
++ MX98715,
++ MX98725,
++ AX88140,
++ PNIC2,
++ COMET,
++ COMPEX9881,
++ I21145,
++ DM910X,
++ CONEXANT,
++};
++static int chip_idx = DC21143;
++
+ #ifdef CONFIG_TULIP_FIX_DAVICOM
+ #define RESET_DM9102(dev) {\
+ unsigned long i;\
+@@ -108,58 +149,63 @@
+ #else
+ #define RESET_DE4X5(dev) {\
+ int i;\
+- i=INL(dev, DE4X5_BMR);\
+- udelay(1000);\
++ i=0x01A04000;\
+ OUTL(dev, i | BMR_SWR, DE4X5_BMR);\
+ udelay(1000);\
+ OUTL(dev, i, DE4X5_BMR);\
+ udelay(1000);\
+- for (i=0;i<5;i++) {INL(dev, DE4X5_BMR); udelay(10000);}\
+- udelay(1000);\
+ }
+ #endif
+
+ #define START_DE4X5(dev) {\
+- s32 omr; \
++ u32 omr; \
+ omr = INL(dev, DE4X5_OMR);\
+ omr |= OMR_ST | OMR_SR;\
+ OUTL(dev, omr, DE4X5_OMR); /* Enable the TX and/or RX */\
+ }
+
+ #define STOP_DE4X5(dev) {\
+- s32 omr; \
++ u32 omr; \
+ omr = INL(dev, DE4X5_OMR);\
+ omr &= ~(OMR_ST|OMR_SR);\
+ OUTL(dev, omr, DE4X5_OMR); /* Disable the TX and/or RX */ \
+ }
+
+-#define NUM_RX_DESC PKTBUFSRX
++#define NUM_RX_DESC 4
+ #ifndef CONFIG_TULIP_FIX_DAVICOM
+- #define NUM_TX_DESC 1 /* Number of TX descriptors */
++ #define NUM_TX_DESC 2 /* Number of TX descriptors */
+ #else
+ #define NUM_TX_DESC 4
+ #endif
+-#define RX_BUFF_SZ PKTSIZE_ALIGN
++#define BUFLEN 1536
+
+ #define TOUT_LOOP 1000000
+
+ #define SETUP_FRAME_LEN 192
+ #define ETH_ALEN 6
++#define ETH_ZLEN 60
+
+ struct de4x5_desc {
+- volatile s32 status;
++ volatile u32 status;
+ u32 des1;
+ u32 buf;
+ u32 next;
+ };
+
+-static struct de4x5_desc rx_ring[NUM_RX_DESC] __attribute__ ((aligned(32))); /* RX descriptor ring */
+-static struct de4x5_desc tx_ring[NUM_TX_DESC] __attribute__ ((aligned(32))); /* TX descriptor ring */
+-static int rx_new; /* RX descriptor ring pointer */
+-static int tx_new; /* TX descriptor ring pointer */
++/* Note: transmit and receive buffers must be longword aligned and
++ longword divisable */
+
+-static char rxRingSize;
+-static char txRingSize;
++/* TX descriptor ring */
++static struct de4x5_desc tx_ring[NUM_TX_DESC] __attribute__ ((aligned(4)));
++/* TX buffer */
++static unsigned char txb[BUFLEN] __attribute__ ((aligned(32)));
++
++/* RX descriptor ring */
++static struct de4x5_desc rx_ring[NUM_RX_DESC] __attribute__ ((aligned(4)));
++/* RX buffers */
++static unsigned char rxb[NUM_RX_DESC * BUFLEN] __attribute__ ((aligned(32)));
++
++static int rx_new; /* RX descriptor ring pointer */
+
+ #if defined(UPDATE_SROM) || !defined(CONFIG_TULIP_FIX_DAVICOM)
+ static void sendto_srom(struct eth_device* dev, u_int command, u_long addr);
+@@ -204,6 +250,7 @@
+ static struct pci_device_id supported[] = {
+ { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TULIP_FAST },
+ { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21142 },
++ { PCI_VENDOR_ID_ADMTEK, PCI_DEVICE_ID_ADMTEK_AN983B },
+ #ifdef CONFIG_TULIP_FIX_DAVICOM
+ { PCI_VENDOR_ID_DAVICOM, PCI_DEVICE_ID_DAVICOM_DM9102A },
+ #endif
+@@ -214,29 +261,44 @@
+ {
+ int idx=0;
+ int card_number = 0;
+- unsigned int cfrv;
++ unsigned int cfrv;
+ unsigned char timer;
+- pci_dev_t devbusfn;
++ pci_dev_t devbusfn;
+ unsigned int iobase;
+ unsigned short status;
+ struct eth_device* dev;
++ u16 vendor;
++ u16 device;
+
++#ifdef DEBUG_TULIP
++ printf("%s\n", __FUNCTION__);
++#endif
+ while(1) {
+ devbusfn = pci_find_devices(supported, idx++);
+ if (devbusfn == -1) {
+ break;
+ }
++ pci_read_config_word(devbusfn, PCI_VENDOR_ID, &vendor);
++ pci_read_config_word(devbusfn, PCI_DEVICE_ID, &device);
+
+- /* Get the chip configuration revision register. */
+- pci_read_config_dword(devbusfn, PCI_REVISION_ID, &cfrv);
++ debug("dc21x4x: devbusfn: %08lX, VID: %08lX, DID: %08lX\n",
++ devbusfn, vendor, device);
++
++ if (vendor == PCI_VENDOR_ID_ADMTEK && \
++ device == PCI_DEVICE_ID_ADMTEK_AN983B) {
++ chip_idx = COMET;
++ } else {
++ /* Get the chip configuration revision register. */
++ pci_read_config_dword(devbusfn, PCI_REVISION_ID, &cfrv);
+
+ #ifndef CONFIG_TULIP_FIX_DAVICOM
+- if ((cfrv & CFRV_RN) < DC2114x_BRK ) {
+- printf("Error: The chip is not DC21143.\n");
+- continue;
+- }
++ if ((cfrv & CFRV_RN) < DC2114x_BRK ) {
++ printf("Error: The chip is not DC21143.\n");
++ idx++;
++ continue;
++ }
+ #endif
+-
++ }
+ pci_read_config_word(devbusfn, PCI_COMMAND, &status);
+ status |=
+ #ifdef CONFIG_TULIP_USE_IO
+@@ -286,7 +348,10 @@
+ #ifdef CONFIG_TULIP_FIX_DAVICOM
+ sprintf(dev->name, "Davicom#%d", card_number);
+ #else
+- sprintf(dev->name, "dc21x4x#%d", card_number);
++ if (chip_idx == COMET)
++ sprintf(dev->name, "COMET#%d", card_number);
++ else
++ sprintf(dev->name, "dc21x4x#%d", card_number);
+ #endif
+
+ #ifdef CONFIG_TULIP_USE_IO
+@@ -303,8 +368,6 @@
+ /* Ensure we're not sleeping. */
+ pci_write_config_byte(devbusfn, PCI_CFDA_PSM, WAKEUP);
+
+- udelay(10 * 1000);
+-
+ #ifndef CONFIG_TULIP_FIX_DAVICOM
+ read_hw_addr(dev, bis);
+ #endif
+@@ -321,8 +384,9 @@
+ int i;
+ int devbusfn = (int) dev->priv;
+
+- /* Ensure we're not sleeping. */
+- pci_write_config_byte(devbusfn, PCI_CFDA_PSM, WAKEUP);
++#if defined(DEBUG_TULIP) || defined(DEBUG_TRACE)
++ serial_printf("%0lu %s\n", get_timer(0), __FUNCTION__);
++#endif
+
+ #ifdef CONFIG_TULIP_FIX_DAVICOM
+ RESET_DM9102(dev);
+@@ -330,57 +394,71 @@
+ RESET_DE4X5(dev);
+ #endif
+
+- if ((INL(dev, DE4X5_STS) & (STS_TS | STS_RS)) != 0) {
+- printf("Error: Cannot reset ethernet controller.\n");
+- return 0;
+- }
+-
+ #ifdef CONFIG_TULIP_SELECT_MEDIA
+ dc21x4x_select_media(dev);
+ #else
+- OUTL(dev, OMR_SDP | OMR_PS | OMR_PM, DE4X5_OMR);
++ if (chip_idx == COMET) {
++ /* No multicast */
++ OUTL(dev, 0, 0xAC);
++ OUTL(dev, 0, 0xB0);
++ } else {
++ OUTL(dev, OMR_SDP | OMR_PS | OMR_PM, DE4X5_OMR);
++ }
+ #endif
+
+ for (i = 0; i < NUM_RX_DESC; i++) {
+ rx_ring[i].status = cpu_to_le32(R_OWN);
+- rx_ring[i].des1 = cpu_to_le32(RX_BUFF_SZ);
+- rx_ring[i].buf = cpu_to_le32(phys_to_bus((u32) NetRxPackets[i]));
+-#ifdef CONFIG_TULIP_FIX_DAVICOM
+- rx_ring[i].next = cpu_to_le32(phys_to_bus((u32) &rx_ring[(i+1) % NUM_RX_DESC]));
+-#else
+- rx_ring[i].next = 0;
+-#endif
++ rx_ring[i].des1 = cpu_to_le32(BUFLEN);
++ rx_ring[i].buf = cpu_to_le32(phys_to_bus((u32)&rxb[i * BUFLEN]));
++ rx_ring[i].next = cpu_to_le32(phys_to_bus((u32)&rx_ring[i+1]));
+ }
++ /* Write the end of list marker to the descriptor lists. */
++ rx_ring[NUM_RX_DESC - 1].des1 |= cpu_to_le32(RD_RER);
++ rx_ring[NUM_RX_DESC - 1].next = cpu_to_le32(phys_to_bus((u32)&rx_ring[0]));
+
+- for (i=0; i < NUM_TX_DESC; i++) {
+- tx_ring[i].status = 0;
+- tx_ring[i].des1 = 0;
+- tx_ring[i].buf = 0;
++ /* Point to the first descriptor */
++ rx_new = 0;
+
+-#ifdef CONFIG_TULIP_FIX_DAVICOM
+- tx_ring[i].next = cpu_to_le32(phys_to_bus((u32) &tx_ring[(i+1) % NUM_TX_DESC]));
+-#else
+- tx_ring[i].next = 0;
+-#endif
+- }
++ /* We only use 1 transmit buffer, but we use 2 descriptors so
++ transmit engines have somewhere to point to if they feel the need */
+
+- rxRingSize = NUM_RX_DESC;
+- txRingSize = NUM_TX_DESC;
++ tx_ring[0].status = 0;
++ tx_ring[0].des1 = 0;
++ tx_ring[0].buf = cpu_to_le32(phys_to_bus((u32)&txb[0]));
++ tx_ring[0].next = cpu_to_le32(phys_to_bus((u32)&tx_ring[1]));
++
++ /* this descriptor should never get used, since it will never be owned
++ by the machine (status will always == 0) */
++
++ tx_ring[1].status = 0;
++ tx_ring[1].des1 = 0;
++ tx_ring[1].buf = cpu_to_le32(phys_to_bus((u32)&txb[0]));
++ tx_ring[1].next = cpu_to_le32(phys_to_bus((u32)&tx_ring[0]));
+
+ /* Write the end of list marker to the descriptor lists. */
+- rx_ring[rxRingSize - 1].des1 |= cpu_to_le32(RD_RER);
+- tx_ring[txRingSize - 1].des1 |= cpu_to_le32(TD_TER);
++ tx_ring[1].des1 |= cpu_to_le32(TD_TER);
+
+ /* Tell the adapter where the TX/RX rings are located. */
+- OUTL(dev, phys_to_bus((u32) &rx_ring), DE4X5_RRBA);
+- OUTL(dev, phys_to_bus((u32) &tx_ring), DE4X5_TRBA);
++ OUTL(dev, phys_to_bus((u32) &rx_ring[0]), DE4X5_RRBA);
++ OUTL(dev, phys_to_bus((u32) &tx_ring[0]), DE4X5_TRBA);
++
++ if (chip_idx == COMET) {
++ /* Bit 18 (0x00040000) is reserved in the AN983B */
++ /* datasheet, but it is used by the tulip driver */
++ OUTL(dev, (INL(dev, (DE4X5_OMR)) & ~(OMR_PMS | OMR_PM)) | OMR_PS, DE4X5_OMR);
++ /* Enable automatic Tx underrun recovery */
++ OUTL(dev, INL(dev, 0x88) | 1, 0x88);
++// OUTL(dev, INL(dev, 0x88) | 0x19, 0x88);
++ }
+
+ START_DE4X5(dev);
+
+- tx_new = 0;
+- rx_new = 0;
++ /* Start receiving */
++ OUTL(dev, POLL_DEMAND, DE4X5_RPD);
+
+- send_setup_frame(dev, bis);
++ if (chip_idx != COMET) { /* No setup frame needed by COMET */
++ send_setup_frame(dev, bis);
++ }
+
+ return 1;
+ }
+@@ -389,90 +467,117 @@
+ {
+ int status = -1;
+ int i;
++ u32 len = length;
+
+ if (length <= 0) {
+ printf("%s: bad packet size: %d\n", dev->name, length);
+ goto Done;
+ }
+
+- for(i = 0; tx_ring[tx_new].status & cpu_to_le32(T_OWN); i++) {
++ for(i = 0; tx_ring[0].status & cpu_to_le32(T_OWN); i++) {
+ if (i >= TOUT_LOOP) {
+- printf("%s: tx error buffer not ready\n", dev->name);
++ printf(".%s: Tx not ready\n", dev->name);
+ goto Done;
+ }
+ }
+
+- tx_ring[tx_new].buf = cpu_to_le32(phys_to_bus((u32) packet));
+- tx_ring[tx_new].des1 = cpu_to_le32(TD_TER | TD_LS | TD_FS | length);
+- tx_ring[tx_new].status = cpu_to_le32(T_OWN);
++ /* Disable the TX */
++ OUTL(dev, INL(dev, DE4X5_OMR) & ~OMR_ST, DE4X5_OMR);
++
++ memcpy(txb, (char*)packet, length);
++
++ /* setup the transmit descriptor */
++ tx_ring[0].des1 = cpu_to_le32(TD_LS | TD_FS | length);
++ tx_ring[0].status = cpu_to_le32(T_OWN);
+
++ /* Point to transmit descriptor */
++ OUTL(dev, phys_to_bus((u32) &tx_ring[0]), DE4X5_TRBA);
++
++ /* Enable the TX */
++ OUTL(dev, INL(dev, DE4X5_OMR) | OMR_ST, DE4X5_OMR);
++
++ /* Immediate transmit demand */
+ OUTL(dev, POLL_DEMAND, DE4X5_TPD);
+
+- for(i = 0; tx_ring[tx_new].status & cpu_to_le32(T_OWN); i++) {
++ for(i = 0; tx_ring[0].status & cpu_to_le32(T_OWN); i++) {
+ if (i >= TOUT_LOOP) {
+- printf(".%s: tx buffer not ready\n", dev->name);
++ printf(".%s: Tx Timeout\n", dev->name);
+ goto Done;
+ }
+ }
+
+- if (le32_to_cpu(tx_ring[tx_new].status) & TD_ES) {
+-#if 0 /* test-only */
++#ifdef DEBUG_TRACE
++ serial_printf("%0lu Tx L2: %d P: %04X IP: %08X\n",
++ get_timer(0), i, *((u16 *)(packet+0xC)),
++ *((u32 *)(packet+0x1E)));
++#endif
++
++ if (le32_to_cpu(tx_ring[0].status) & TD_ES) {
++#if 1 /* test-only */
+ printf("TX error status = 0x%08X\n",
+- le32_to_cpu(tx_ring[tx_new].status));
++ le32_to_cpu(tx_ring[0].status));
+ #endif
+- tx_ring[tx_new].status = 0x0;
++ tx_ring[0].status = 0x0;
+ goto Done;
+ }
+
+ status = length;
+
+ Done:
+- tx_new = (tx_new+1) % NUM_TX_DESC;
+ return status;
+ }
+
+ static int dc21x4x_recv(struct eth_device* dev)
+ {
+- s32 status;
++ u32 status;
++ int rx_prv;
+ int length = 0;
+
+- for ( ; ; ) {
+- status = (s32)le32_to_cpu(rx_ring[rx_new].status);
++#ifdef DEBUG_TULIP
++ u32 csr5 = INL(dev, DE4X5_STS);
++ if ((csr5 & STS_RS) != 0x00060000) {
++ OUTL(dev, 0x0001ffff, DE4X5_STS);
++ printf("Receive status: 0x%08X\n", csr5);
++ }
++#endif
+
+- if (status & R_OWN) {
+- break;
+- }
++ status = (u32)le32_to_cpu(rx_ring[rx_new].status);
++ if (status & R_OWN)
++ return 0;
+
+- if (status & RD_LS) {
+- /* Valid frame status.
+- */
+- if (status & RD_ES) {
+-
+- /* There was an error.
+- */
+- printf("RX error status = 0x%08X\n", status);
+- } else {
+- /* A valid frame received.
+- */
+- length = (le32_to_cpu(rx_ring[rx_new].status) >> 16);
+-
+- /* Pass the packet up to the protocol
+- * layers.
+- */
+- NetReceive(NetRxPackets[rx_new], length - 4);
+- }
++#ifdef DEBUG_TULIP
++ printf("recv status: 0x%08X\n", status);
++#endif
+
+- /* Change buffer ownership for this frame, back
+- * to the adapter.
+- */
++ if (status & RD_LS) {
++#ifdef DEBUG_TRACE
++ serial_printf("rx: %d status: %08X\n", rx_new, status);
++#endif
++ /* Valid frame status */
++ if (status & RD_ES) {
++ /* There was an error */
++ printf("RX error status = 0x%08X\n", status);
+ rx_ring[rx_new].status = cpu_to_le32(R_OWN);
+- }
++ } else {
++ /* Received valid frame */
++ length = (int)(le32_to_cpu(rx_ring[rx_new].status) >> 16);
++
++ /* Pass the packet up to the protocol layers. */
++ unsigned char rxdata[BUFLEN];
++ memcpy(rxdata, rxb + rx_new * BUFLEN, length - 4);
+
+- /* Update entry information.
+- */
+- rx_new = (rx_new + 1) % rxRingSize;
++ /* Give buffer ownership for this
++ * frame back to the adapter */
++ rx_ring[rx_new].status = cpu_to_le32(R_OWN);
++
++ /* Pass the received packet to the upper layer */
++ NetReceive(rxdata, length - 4);
++ }
+ }
+
++ /* Update current descriptor index */
++ rx_new = (rx_new + 1) % NUM_RX_DESC;
++
+ return length;
+ }
+
+@@ -480,10 +585,12 @@
+ {
+ int devbusfn = (int) dev->priv;
+
++#ifdef DEBUG_TULIP
++ printf("%s\n", __FUNCTION__);
++#endif
+ STOP_DE4X5(dev);
+ OUTL(dev, 0, DE4X5_SICR);
+
+- pci_write_config_byte(devbusfn, PCI_CFDA_PSM, SLEEP);
+ }
+
+ static void send_setup_frame(struct eth_device* dev, bd_t *bis)
+@@ -501,30 +608,29 @@
+ }
+ }
+
+- for(i = 0; tx_ring[tx_new].status & cpu_to_le32(T_OWN); i++) {
++ for(i = 0; tx_ring[0].status & cpu_to_le32(T_OWN); i++) {
+ if (i >= TOUT_LOOP) {
+ printf("%s: tx error buffer not ready\n", dev->name);
+ goto Done;
+ }
+ }
+
+- tx_ring[tx_new].buf = cpu_to_le32(phys_to_bus((u32) &setup_frame[0]));
+- tx_ring[tx_new].des1 = cpu_to_le32(TD_TER | TD_SET| SETUP_FRAME_LEN);
+- tx_ring[tx_new].status = cpu_to_le32(T_OWN);
++ tx_ring[0].buf = cpu_to_le32(phys_to_bus((u32) &setup_frame[0]));
++ tx_ring[0].des1 = cpu_to_le32(TD_TER | TD_SET| SETUP_FRAME_LEN);
++ tx_ring[0].status = cpu_to_le32(T_OWN);
+
+ OUTL(dev, POLL_DEMAND, DE4X5_TPD);
+
+- for(i = 0; tx_ring[tx_new].status & cpu_to_le32(T_OWN); i++) {
++ for(i = 0; tx_ring[0].status & cpu_to_le32(T_OWN); i++) {
+ if (i >= TOUT_LOOP) {
+ printf("%s: tx buffer not ready\n", dev->name);
+ goto Done;
+ }
+ }
+
+- if (le32_to_cpu(tx_ring[tx_new].status) != 0x7FFFFFFF) {
+- printf("TX error status2 = 0x%08X\n", le32_to_cpu(tx_ring[tx_new].status));
++ if (le32_to_cpu(tx_ring[0].status) != 0x7FFFFFFF) {
++ printf("TX error status2 = 0x%08X\n", le32_to_cpu(tx_ring[0].status));
+ }
+- tx_new = (tx_new+1) % NUM_TX_DESC;
+
+ Done:
+ return;
+@@ -543,7 +649,7 @@
+ static int
+ getfrom_srom(struct eth_device* dev, u_long addr)
+ {
+- s32 tmp;
++ u32 tmp;
+
+ tmp = INL(dev, addr);
+ udelay(1);
+@@ -708,19 +814,27 @@
+ #ifndef CONFIG_TULIP_FIX_DAVICOM
+ static void read_hw_addr(struct eth_device *dev, bd_t *bis)
+ {
+- u_short tmp, *p = (u_short *)(&dev->enetaddr[0]);
+- int i, j = 0;
+-
+- for (i = 0; i < (ETH_ALEN >> 1); i++) {
+- tmp = read_srom(dev, DE4X5_APROM, ((SROM_HWADD >> 1) + i));
+- *p = le16_to_cpu(tmp);
+- j += *p++;
+- }
+-
+- if ((j == 0) || (j == 0x2fffd)) {
+- memset (dev->enetaddr, 0, ETH_ALEN);
+- debug ("Warning: can't read HW address from SROM.\n");
+- goto Done;
++ if (chip_idx == COMET) {
++ /* COMET reads the ehernet address directly from the EEPROM */
++ *(u32 *)dev->enetaddr = cpu_to_le32(INL(dev, 0xA4));
++ *(u16 *)(dev->enetaddr+4) = cpu_to_le16(INL(dev, 0xA8));
++ *(u32 *)bis->bi_enetaddr = *(u32 *)dev->enetaddr;
++ *(u16 *)(bis->bi_enetaddr+4) = *(u16 *)(dev->enetaddr+4);
++ } else {
++ u_short tmp, *p = (u_short *)(&dev->enetaddr[0]);
++ int i, j = 0;
++
++ for (i = 0; i < (ETH_ALEN >> 1); i++) {
++ tmp=read_srom(dev, DE4X5_APROM, ((SROM_HWADD >> 1)+i));
++ *p = le16_to_cpu(tmp);
++ j += *p++;
++ }
++
++ if ((j == 0) || (j == 0x2fffd)) {
++ memset (dev->enetaddr, 0, ETH_ALEN);
++ debug ("Warning: can't read HW address from SROM.\n");
++ goto Done;
++ }
+ }
+
+ return;
+@@ -769,3 +883,5 @@
+ #endif /* UPDATE_SROM */
+
+ #endif /* CFG_CMD_NET && CONFIG_NET_MULTI && CONFIG_TULIP */
++
++/* vim: set ts=4: */
+diff -urN u-boot-86xx/drivers/netconsole.c u-boot-86xx-kuro_clean/drivers/netconsole.c
+--- u-boot-86xx/drivers/netconsole.c 2006-10-13 00:27:17.000000000 +0200
++++ u-boot-86xx-kuro_clean/drivers/netconsole.c 2006-11-06 22:05:38.000000000 +0100
+@@ -27,6 +27,7 @@
+
+ #include <command.h>
+ #include <devices.h>
++#include <console.h>
+ #include <net.h>
+
+ DECLARE_GLOBAL_DATA_PTR;
+@@ -124,6 +125,26 @@
+ output_packet_len = len;
+ NetLoop (NETCONS); /* wait for arp reply and send packet */
+ output_packet_len = 0;
++#if defined(CFG_CONSOLE_IS_IN_ENV) || defined(CONFIG_SILENT_CONSOLE)
++ if (NetState == NETLOOP_FAIL) {
++ /* ARP failed, fail back to serial console */
++ device_t *idev;
++ device_t *odev;
++
++ idev = search_device(DEV_FLAGS_INPUT, "serial");
++ odev = search_device(DEV_FLAGS_OUTPUT, "serial");
++
++ console_setfile (stdin, idev);
++ console_setfile (stdout, odev);
++ console_setfile (stderr, odev);
++
++#if defined(CONFIG_LINKSTATION)
++ void next_cons_choice(int console);
++ /* Console 0 is the serial console */
++ next_cons_choice(0);
++#endif
++ }
++#endif
+ return;
+ }
+
+@@ -236,7 +257,8 @@
+
+ input_recursion = 1;
+
+- net_timeout = 1;
++// net_timeout = 1;
++ net_timeout = 50;
+ NetLoop (NETCONS); /* kind of poll */
+
+ input_recursion = 0;
+diff -urN u-boot-86xx/drivers/rtl8169.c u-boot-86xx-kuro_clean/drivers/rtl8169.c
+--- u-boot-86xx/drivers/rtl8169.c 2006-10-13 00:27:17.000000000 +0200
++++ u-boot-86xx-kuro_clean/drivers/rtl8169.c 2006-11-06 22:05:38.000000000 +0100
+@@ -48,7 +48,10 @@
+ *
+ * Indent Options: indent -kr -i8
+ ***************************************************************************/
+-
++/*
++ * 26 August 2006 Mihai Georgian <u-boot@linuxnotincluded.org.uk>
++ * Modified to use le32_to_cpu and cpu_to_le32 properly
++ */
+ #include <common.h>
+ #include <malloc.h>
+ #include <net.h>
+@@ -68,6 +71,7 @@
+ static u32 ioaddr;
+
+ /* Condensed operations for readability. */
++#define virt_to_bus(addr) cpu_to_le32(addr)
+ #define virt_to_le32desc(addr) cpu_to_le32(virt_to_bus(addr))
+ #define le32desc_to_virt(addr) bus_to_virt(le32_to_cpu(addr))
+
+@@ -413,23 +417,23 @@
+ ioaddr = dev->iobase;
+
+ cur_rx = tpc->cur_rx;
+- if ((tpc->RxDescArray[cur_rx].status & OWNbit) == 0) {
+- if (!(tpc->RxDescArray[cur_rx].status & RxRES)) {
++ if ((le32_to_cpu(tpc->RxDescArray[cur_rx].status) & OWNbit) == 0) {
++ if (!(le32_to_cpu(tpc->RxDescArray[cur_rx].status) & RxRES)) {
+ unsigned char rxdata[RX_BUF_LEN];
+- length = (int) (tpc->RxDescArray[cur_rx].
+- status & 0x00001FFF) - 4;
++ length = (int) (le32_to_cpu(tpc->RxDescArray[cur_rx].
++ status) & 0x00001FFF) - 4;
+
+ memcpy(rxdata, tpc->RxBufferRing[cur_rx], length);
+ NetReceive(rxdata, length);
+
+ if (cur_rx == NUM_RX_DESC - 1)
+ tpc->RxDescArray[cur_rx].status =
+- (OWNbit | EORbit) + RX_BUF_SIZE;
++ cpu_to_le32((OWNbit | EORbit) + RX_BUF_SIZE);
+ else
+ tpc->RxDescArray[cur_rx].status =
+- OWNbit + RX_BUF_SIZE;
++ cpu_to_le32(OWNbit + RX_BUF_SIZE);
+ tpc->RxDescArray[cur_rx].buf_addr =
+- virt_to_bus(tpc->RxBufferRing[cur_rx]);
++ cpu_to_le32(tpc->RxBufferRing[cur_rx]);
+ } else {
+ puts("Error Rx");
+ }
+@@ -454,6 +458,7 @@
+ u8 *ptxb;
+ int entry = tpc->cur_tx % NUM_TX_DESC;
+ u32 len = length;
++ int ret;
+
+ #ifdef DEBUG_RTL8169_TX
+ int stime = currticks();
+@@ -465,39 +470,46 @@
+
+ /* point to the current txb incase multiple tx_rings are used */
+ ptxb = tpc->Tx_skbuff[entry * MAX_ETH_FRAME_SIZE];
++#ifdef DEBUG_RTL8169_TX
++ printf("ptxb: %08X, length: %d\n", ptxb, (int)length);
++#endif
+ memcpy(ptxb, (char *)packet, (int)length);
+
+ while (len < ETH_ZLEN)
+ ptxb[len++] = '\0';
+
+- tpc->TxDescArray[entry].buf_addr = virt_to_bus(ptxb);
++ tpc->TxDescArray[entry].buf_addr = cpu_to_le32(ptxb);
+ if (entry != (NUM_TX_DESC - 1)) {
+ tpc->TxDescArray[entry].status =
+- (OWNbit | FSbit | LSbit) | ((len > ETH_ZLEN) ?
+- len : ETH_ZLEN);
++ cpu_to_le32((OWNbit | FSbit | LSbit) |
++ ((len > ETH_ZLEN) ? len : ETH_ZLEN));
+ } else {
+ tpc->TxDescArray[entry].status =
+- (OWNbit | EORbit | FSbit | LSbit) |
+- ((len > ETH_ZLEN) ? length : ETH_ZLEN);
++ cpu_to_le32((OWNbit | EORbit | FSbit | LSbit) |
++ ((len > ETH_ZLEN) ? len : ETH_ZLEN));
+ }
+ RTL_W8(TxPoll, 0x40); /* set polling bit */
+
+ tpc->cur_tx++;
+ to = currticks() + TX_TIMEOUT;
+- while ((tpc->TxDescArray[entry].status & OWNbit) && (currticks() < to)); /* wait */
++ while ((le32_to_cpu(tpc->TxDescArray[entry].status) & OWNbit)
++ && (currticks() < to)); /* wait */
+
+ if (currticks() >= to) {
+ #ifdef DEBUG_RTL8169_TX
+ puts ("tx timeout/error\n");
+ printf ("%s elapsed time : %d\n", __FUNCTION__, currticks()-stime);
+ #endif
+- return 0;
++ ret = 0;
+ } else {
+ #ifdef DEBUG_RTL8169_TX
+ puts("tx done\n");
+ #endif
+- return length;
++ ret = length;
+ }
++ /* Delay to make net console (nc) work properly */
++ udelay(20);
++ return ret;
+ }
+
+ static void rtl8169_set_rx_mode(struct eth_device *dev)
+@@ -603,13 +615,14 @@
+ for (i = 0; i < NUM_RX_DESC; i++) {
+ if (i == (NUM_RX_DESC - 1))
+ tpc->RxDescArray[i].status =
+- (OWNbit | EORbit) + RX_BUF_SIZE;
++ cpu_to_le32((OWNbit | EORbit) + RX_BUF_SIZE);
+ else
+- tpc->RxDescArray[i].status = OWNbit + RX_BUF_SIZE;
++ tpc->RxDescArray[i].status =
++ cpu_to_le32(OWNbit + RX_BUF_SIZE);
+
+ tpc->RxBufferRing[i] = &rxb[i * RX_BUF_SIZE];
+ tpc->RxDescArray[i].buf_addr =
+- virt_to_bus(tpc->RxBufferRing[i]);
++ cpu_to_le32(tpc->RxBufferRing[i]);
+ }
+
+ #ifdef DEBUG_RTL8169
+@@ -635,17 +648,23 @@
+ if (tpc->TxDescArrays == 0)
+ puts("Allot Error");
+ /* Tx Desscriptor needs 256 bytes alignment; */
+- TxPhyAddr = virt_to_bus(tpc->TxDescArrays);
++ TxPhyAddr = tpc->TxDescArrays;
+ diff = 256 - (TxPhyAddr - ((TxPhyAddr >> 8) << 8));
+ TxPhyAddr += diff;
+ tpc->TxDescArray = (struct TxDesc *) (tpc->TxDescArrays + diff);
++#ifdef DEBUG_RTL8169
++ printf("tpc->TxDescArray: %08X\n", tpc->TxDescArray);
++#endif
+
+ tpc->RxDescArrays = rx_ring;
+ /* Rx Desscriptor needs 256 bytes alignment; */
+- RxPhyAddr = virt_to_bus(tpc->RxDescArrays);
++ RxPhyAddr = tpc->RxDescArrays;
+ diff = 256 - (RxPhyAddr - ((RxPhyAddr >> 8) << 8));
+ RxPhyAddr += diff;
+ tpc->RxDescArray = (struct RxDesc *) (tpc->RxDescArrays + diff);
++#ifdef DEBUG_RTL8169
++ printf("tpc->RxDescArray: %08X\n", tpc->RxDescArray);
++#endif
+
+ if (tpc->TxDescArrays == NULL || tpc->RxDescArrays == NULL) {
+ puts("Allocate RxDescArray or TxDescArray failed\n");
+@@ -733,7 +752,7 @@
+
+ /* Get MAC address. FIXME: read EEPROM */
+ for (i = 0; i < MAC_ADDR_LEN; i++)
+- dev->enetaddr[i] = RTL_R8(MAC0 + i);
++ bis->bi_enetaddr[i] = dev->enetaddr[i] = RTL_R8(MAC0 + i);
+
+ #ifdef DEBUG_RTL8169
+ printf("MAC Address");
+@@ -805,33 +824,68 @@
+ PHY_Enable_Auto_Nego | PHY_Restart_Auto_Nego);
+ udelay(100);
+
++#ifdef CONFIG_LINKSTATION
++void miconCntl_FanLow(void);
++void miconCntl_FanHigh(void);
++void miconCntl_Eth1000M(int up);
++void miconCntl_Eth100M(int up);
++void miconCntl_Eth10M(int up);
++void miconCntl_5f(void);
++
++ miconCntl_FanLow();
++#endif
++
+ /* wait for auto-negotiation process */
+ for (i = 10000; i > 0; i--) {
+ /* check if auto-negotiation complete */
+ if (mdio_read(PHY_STAT_REG) & PHY_Auto_Neco_Comp) {
+ udelay(100);
+ option = RTL_R8(PHYstatus);
++#if defined(CONFIG_LINKSTATION) && defined(CONFIG_HTGL)
+ if (option & _1000bpsF) {
+ #ifdef DEBUG_RTL8169
+ printf("%s: 1000Mbps Full-duplex operation.\n",
+ dev->name);
+ #endif
+- } else {
++ miconCntl_Eth1000M(1);
++ } else if (option & _100bps) {
++#ifdef DEBUG_RTL8169
++ printf("%s: 100Mbps %s-duplexoperation.\n",
++ dev->name,
++ (option & FullDup) ? "Full" : "Half");
++#endif
++ miconCntl_Eth100M(1);
++ } else if (option & _10bps) {
+ #ifdef DEBUG_RTL8169
+ printf
+- ("%s: %sMbps %s-duplex operation.\n",
++ ("%s: 10Mbps %s-duplex operation.\n",
+ dev->name,
+- (option & _100bps) ? "100" :
+- "10",
+- (option & FullDup) ? "Full" :
+- "Half");
++ (option & FullDup) ? "Full" : "Half");
++#endif
++ miconCntl_Eth100M(1);
++ }
++ miconCntl_5f();
++#else /* !defined(CONFIG_LINKSTATION) || !defined(CONFIG_HTGL) */
++ if (option & _1000bpsF) {
++#ifdef DEBUG_RTL8169
++ printf("%s: 1000Mbps Full-duplex operation.\n",
++ dev->name);
++#endif
++ miconCntl_FanHigh();
++ } else {
++#ifdef DEBUG_RTL8169
++ printk("%s: %sMbps %s-duplex operation.\n",
++ dev->name,
++ (option & _100bps) ? "100" : "10",
++ (option & FullDup) ? "Full" : "Half");
+ #endif
+ }
++#endif
+ break;
+ } else {
+ udelay(100);
+ }
+- } /* end for-loop to wait for auto-negotiation process */
++ } /* end for-loop to wait for auto-negotiation process */
+
+ } else {
+ udelay(100);
+@@ -886,3 +940,5 @@
+ }
+
+ #endif
++
++/* vim: set ts=4: */
+diff -urN u-boot-86xx/fs/ext2/ext2fs.c u-boot-86xx-kuro_clean/fs/ext2/ext2fs.c
+--- u-boot-86xx/fs/ext2/ext2fs.c 2006-10-13 00:27:17.000000000 +0200
++++ u-boot-86xx-kuro_clean/fs/ext2/ext2fs.c 2006-11-06 22:05:38.000000000 +0100
+@@ -35,6 +35,8 @@
+
+ /* Magic value used to identify an ext2 filesystem. */
+ #define EXT2_MAGIC 0xEF53
++/* Magic value used to identify Buffalo's idea of ext2 */
++#define LINKSTATION_MAGIC 0xEF54
+ /* Amount of indirect blocks in an inode. */
+ #define INDIRECT_BLOCKS 12
+ /* Maximum lenght of a pathname. */
+@@ -851,7 +853,8 @@
+ goto fail;
+ }
+ /* Make sure this is an ext2 filesystem. */
+- if (__le16_to_cpu (data->sblock.magic) != EXT2_MAGIC) {
++ if ((__le16_to_cpu (data->sblock.magic) != EXT2_MAGIC) &&
++ (__le16_to_cpu (data->sblock.magic) != LINKSTATION_MAGIC)) {
+ goto fail;
+ }
+ data->diropen.data = data;
+diff -urN u-boot-86xx/include/configs/linkstation.h u-boot-86xx-kuro_clean/include/configs/linkstation.h
+--- u-boot-86xx/include/configs/linkstation.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-86xx-kuro_clean/include/configs/linkstation.h 2006-11-06 22:30:33.000000000 +0100
+@@ -0,0 +1,492 @@
++/*
++ * Copyright (C) 2006 Mihai Georgian <u-boot@linuxnotincluded.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 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
++#endif
++
++/*-----------------------------------------------------------------------
++ * User configurable settings:
++ * Mandatory settings:
++ * CONFIG_IPADDR_LS - the IP address of the LinkStation
++ * CONFIG_SERVERIP_LS - the address of the server for NFS/TFTP/DHCP/BOOTP
++ * Optional settins:
++ * CONFIG_NCIP_LS - the adress of the computer running net console
++ * if not configured, it will be set to
++ * CONFIG_SERVERIP_LS
++ */
++
++#define CONFIG_IPADDR_LS 192.168.11.150
++#define CONFIG_SERVERIP_LS 192.168.11.149
++
++#if !defined(CONFIG_IPADDR_LS) || !defined(CONFIG_SERVERIP_LS)
++#error Both CONFIG_IPADDR_LS and CONFIG_SERVERIP_LS must be defined
++#endif
++
++#if !defined(CONFIG_NCIP_LS)
++#define CONFIG_NCIP_LS CONFIG_SERVERIP_LS
++#endif
++
++/*----------------------------------------------------------------------
++ * DO NOT CHANGE ANYTHING BELOW, UNLESS YOU KNOW WHAT YOU ARE DOING
++ *---------------------------------------------------------------------*/
++
++#define CONFIG_MPC8245 1
++#define CONFIG_LINKSTATION 1
++
++/*---------------------------------------
++ * Supported models
++ *
++ * LinkStation HDLAN /KuroBox Standard (CONFIG_HLAN)
++ * LinkStation old model (CONFIG_LAN) - totally untested
++ * LinkStation HGLAN / KuroBox HG (CONFIG_HGLAN)
++ *
++ * Models not supported yet
++ * TeraStatin (CONFIG_HTGL)
++ */
++
++#if defined(CONFIG_HLAN) || defined(CONFIG_LAN)
++#define CONFIG_IDENT_STRING " LinkStation / KuroBox"
++#elif defined(CONFIG_HGLAN)
++#define CONFIG_IDENT_STRING " LinkStation HG / KuroBox HG"
++#elif defined(CONFIG_HTGL)
++#define CONFIG_IDENT_STRING " TeraStation"
++#else
++#error No LinkStation model defined
++#endif
++
++#define CONFIG_BOOTDELAY 10
++#define CONFIG_ZERO_BOOTDELAY_CHECK
++#undef CONFIG_BOOT_RETRY_TIME
++
++#define CONFIG_AUTOBOOT_KEYED
++#define CONFIG_AUTOBOOT_PROMPT "Boot in %02d seconds ('s' to stop)..."
++#define CONFIG_AUTOBOOT_STOP_STR "s"
++
++#define CONFIG_COMMANDS (CFG_CMD_BDI | \
++ CFG_CMD_LOADS | \
++ CFG_CMD_LOADB | \
++ CFG_CMD_FLASH | \
++ CFG_CMD_MEMORY | \
++ CFG_CMD_NET | \
++ CFG_CMD_ENV | \
++ CFG_CMD_IDE | \
++ CFG_CMD_PCI | \
++ CFG_CMD_BOOTD | \
++ CFG_CMD_CONSOLE | \
++ CFG_CMD_RUN | \
++ CFG_CMD_ECHO | \
++ CFG_CMD_DHCP | \
++ CFG_CMD_PING | \
++ CFG_CMD_NFS | \
++ CFG_CMD_EXT2 )
++#define CONFIG_BOOTP_MASK CONFIG_BOOTP_ALL
++
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++/*
++ * Miscellaneous configurable options
++ */
++#define CFG_LONGHELP /* undef to save memory */
++#define CFG_PROMPT "=> " /* Monitor Command Prompt */
++#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
++
++#define CFG_PBSIZE (CFG_CBSIZE + sizeof(CFG_PROMPT) + 16)
++#define CFG_MAXARGS 16 /* Max number of command args */
++#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
++#define CFG_LOAD_ADDR 0x00800000 /* Default load address: 8 MB */
++
++//#define CONFIG_BOOTCOMMAND "run nfsboot"
++#define CONFIG_BOOTCOMMAND "run bootcmd1"
++#define CONFIG_BOOTARGS "root=/dev/hda1"
++#define CONFIG_NFSBOOTCOMMAND "bootp;run nfsargs;bootm"
++
++#define CFG_CONSOLE_IS_IN_ENV
++
++#define XMK_STR(x) #x
++#define MK_STR(x) XMK_STR(x)
++
++#if defined(CONFIG_HLAN) || defined(CONFIG_LAN)
++#define UBFILE "share/u-boot/u-boot-hd.flash.bin"
++#elif defined(CONFIG_HGLAN)
++#define UBFILE "share/u-boot/u-boot-hg.flash.bin"
++#elif defined(CONFIG_HTGL)
++#define UBFILE "share/u-boot/u-boot-ht.flash.bin"
++#else
++#error No LinkStation model defined
++#endif
++
++#define CONFIG_EXTRA_ENV_SETTINGS \
++ "autoload=no\0" \
++ "stdin=nc\0" \
++ "stdout=nc\0" \
++ "stderr=nc\0" \
++ "ipaddr="MK_STR(CONFIG_IPADDR_LS)"\0" \
++ "netmask=255.255.255.0\0" \
++ "serverip="MK_STR(CONFIG_SERVERIP_LS)"\0" \
++ "ncip="MK_STR(CONFIG_NCIP_LS)"\0" \
++ "netretry=no\0" \
++ "nc=setenv stdin nc;setenv stdout nc;setenv stderr nc\0" \
++ "ser=setenv stdin serial;setenv stdout serial;setenv stderr serial\0" \
++ "ldaddr=800000\0" \
++ "hdpart=0:1\0" \
++ "hdfile=boot/vmlinux.UBoot\0" \
++ "hdload=echo Loading ${hdpart}:${hdfile};ext2load ide ${hdpart} ${ldaddr} ${hdfile}\0" \
++ "boothd=setenv bootargs root=/dev/hda1;bootm ${ldaddr}\0" \
++ "hdboot=run hdload boothd\0" \
++ "flboot=setenv bootargs root=/dev/hda1;bootm ffc00000\0" \
++ "emboot=setenv bootargs root=/dev/ram0;bootm ffc00000\0" \
++ "nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} " \
++ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off\0" \
++ "bootretry=30\0" \
++ "bootcmd1=run hdboot;run flboot\0" \
++ "bootcmd2=run flboot\0" \
++ "bootcmd3=run emboot\0" \
++ "writeng=protect off fff70000 fff7ffff;era fff70000 fff7ffff;mw.l 800000 4e474e47 1;cp.b 800000 fff70000 4\0" \
++ "writeok=protect off fff70000 fff7ffff;era fff70000 fff7ffff;mw.l 800000 4f4b4f4b 1;cp.b 800000 fff70000 4\0" \
++ "ubpart=0:3\0" \
++ "ubfile="UBFILE"\0" \
++ "ubload=echo Loading ${ubpart}:${ubfile};ext2load ide ${ubpart} ${ldaddr} ${ubfile}\0" \
++ "ubsaddr=fff00000\0" \
++ "ubeaddr=fff2ffff\0" \
++ "ubflash=protect off ${ubsaddr} ${ubeaddr};era ${ubsaddr} ${ubeaddr};cp.b ${ldaddr} ${ubsaddr} ${filesize};cmp.b ${ldaddr} ${ubsaddr} ${filesize}\0" \
++ "upgrade=run ubload ubflash\0"
++
++/*-----------------------------------------------------------------------
++ * PCI stuff
++ */
++#define CONFIG_PCI
++#undef CONFIG_PCI_PNP
++#define CONFIG_PCI_SCAN_SHOW
++
++#ifndef CONFIG_PCI_PNP
++/* Keep the following defines in sync with the BAT mappings */
++
++#define PCI_ETH_IOADDR 0xbfff00
++#define PCI_ETH_MEMADDR 0xbffffc00
++#define PCI_IDE_IOADDR 0xbffed0
++#define PCI_IDE_MEMADDR 0xbffffb00
++#define PCI_USB0_IOADDR 0
++#define PCI_USB0_MEMADDR 0xbfffe000
++#define PCI_USB1_IOADDR 0
++#define PCI_USB1_MEMADDR 0xbfffd000
++#define PCI_USB2_IOADDR 0
++#define PCI_USB2_MEMADDR 0xbfffcf00
++
++#endif
++
++/*-----------------------------------------------------------------------
++ * Ethernet stuff
++ */
++#define CONFIG_NET_MULTI
++
++#if defined(CONFIG_LAN) || defined(CONFIG_HLAN)
++#define CONFIG_TULIP
++#define CONFIG_TULIP_USE_IO
++#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
++#define CONFIG_RTL8169
++#endif
++
++#define CONFIG_NET_RETRY_COUNT 5
++
++#define CONFIG_NETCONSOLE
++
++/*-----------------------------------------------------------------------
++ * Start addresses for the final memory configuration
++ * (Set up by the startup code)
++ * Please note that CFG_SDRAM_BASE _must_ start at 0
++ */
++#define CFG_SDRAM_BASE 0x00000000
++
++#define CFG_FLASH_BASE 0xFFC00000
++#define CFG_MONITOR_BASE TEXT_BASE
++
++#define CFG_RESET_ADDRESS 0xFFF00100
++#define CFG_EUMB_ADDR 0x80000000
++#define CFG_PCI_MEM_ADDR 0xB0000000
++#define CFG_MISC_REGION_ADDR 0xFE000000
++
++#define CFG_MONITOR_LEN 0x00040000 /* 256 kB */
++#define CFG_MALLOC_LEN (512 << 10) /* Reserve some kB for malloc() */
++
++#define CFG_MEMTEST_START 0x00100000 /* memtest works on */
++#define CFG_MEMTEST_END 0x00800000 /* 1M ... 8M in DRAM */
++
++/* Maximum amount of RAM */
++#if defined(CONFIG_HLAN) || defined(CONFIG_LAN)
++#define CFG_MAX_RAM_SIZE 0x04000000 /* 64MB of SDRAM */
++#elif defined(CONFIG_HGLAN) || defined(CONFIG_HTGL)
++#define CFG_MAX_RAM_SIZE 0x08000000 /* 128MB of SDRAM */
++#else
++#error Unknown LinkStation type
++#endif
++
++/*-----------------------------------------------------------------------
++ * Change TEXT_BASE in bord/linkstation/config.mk to get a RAM build
++ *
++ * RAM based builds are for testing purposes. A Linux module, uloader.o,
++ * exists to load U-Boot and pass control to it
++ *
++ * Always do "make clean" after changing the build type
++ */
++#if CFG_MONITOR_BASE < CFG_FLASH_BASE
++#define CFG_RAMBOOT
++#endif
++
++/*-----------------------------------------------------------------------
++ * Definitions for initial stack pointer and data area
++ */
++#if 1 /* RAM is available when the first C function is called */
++#define CFG_INIT_RAM_ADDR (CFG_SDRAM_BASE + CFG_MAX_RAM_SIZE - 0x1000)
++#else
++#define CFG_INIT_RAM_ADDR 0x40000000
++#endif
++#define CFG_INIT_RAM_END 0x1000
++#define CFG_GBL_DATA_SIZE 128
++#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
++
++/*----------------------------------------------------------------------
++ * Serial configuration
++ */
++#define CONFIG_CONS_INDEX 1
++#define CONFIG_BAUDRATE 57600
++#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
++
++#define CFG_NS16550
++#define CFG_NS16550_SERIAL
++
++#define CFG_NS16550_REG_SIZE 1
++
++#define CFG_NS16550_CLK get_bus_freq(0)
++
++#define CFG_NS16550_COM1 (CFG_EUMB_ADDR + 0x4600) /* Console port */
++#define CFG_NS16550_COM2 (CFG_EUMB_ADDR + 0x4500) /* AVR port */
++
++/*
++ * Low Level Configuration Settings
++ * (address mappings, register initial values, etc.)
++ * You should know what you are doing if you make changes here.
++ * For the detail description refer to the MPC8245 user's manual.
++ *
++ * Unless indicated otherwise, the values are
++ * taken from the orignal Linkstation boot code
++ *
++ * Most of the low level configuration setttings are normally used
++ * in cpu/mpc824x/cpu_init.c which is NOT used by this implementation.
++ * Low level initialisation is done in board/linkstation/early_init.S
++ * The values below are included for reference purpose only
++ */
++
++/* FIXME: 32.768 MHz is the crystal frequency but */
++/* the real frequency is lower by about 0.75% */
++#define CONFIG_SYS_CLK_FREQ 32768000
++#define CFG_HZ 1000
++
++/* Bit-field values for MCCR1. */
++#define CFG_ROMNAL 0
++#define CFG_ROMFAL 11
++
++#define CFG_BANK0_ROW 2 /* Only bank 0 used: 13 x n x 4 */
++#define CFG_BANK1_ROW 0
++#define CFG_BANK2_ROW 0
++#define CFG_BANK3_ROW 0
++#define CFG_BANK4_ROW 0
++#define CFG_BANK5_ROW 0
++#define CFG_BANK6_ROW 0
++#define CFG_BANK7_ROW 0
++
++/* Bit-field values for MCCR2. */
++#define CFG_TSWAIT 0
++#define CFG_REFINT 1400
++
++/* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4. */
++#define CFG_BSTOPRE 121
++
++/* Bit-field values for MCCR3. */
++#define CFG_REFREC 7
++
++/* Bit-field values for MCCR4. */
++#define CFG_PRETOACT 2
++#define CFG_ACTTOPRE 5 /* Original value was 2 */
++#define CFG_ACTORW 2
++#define CFG_SDMODE_CAS_LAT 2 /* For 100MHz bus. Use 3 for 133MHz */
++#define CFG_REGISTERD_TYPE_BUFFER 1
++#define CFG_EXTROM 1 /* Original setting but there is no EXTROM */
++#define CFG_REGDIMM 0
++#define CFG_DBUS_SIZE2 1
++#define CFG_SDMODE_WRAP 0
++
++#define CFG_PGMAX 0x32 /* All boards use this setting. Original 0x92 */
++#define CFG_SDRAM_DSCD 0x30
++
++/* Memory bank settings.
++ * Only bits 20-29 are actually used from these vales to set the
++ * start/end addresses. The upper two bits will always be 0, and the lower
++ * 20 bits will be 0x00000 for a start address, or 0xfffff for an end
++ * address. Refer to the MPC8240 book.
++ */
++
++#define CFG_BANK0_START 0x00000000
++#define CFG_BANK0_END (CFG_MAX_RAM_SIZE - 1)
++#define CFG_BANK0_ENABLE 1
++#define CFG_BANK1_START 0x3ff00000
++#define CFG_BANK1_END 0x3fffffff
++#define CFG_BANK1_ENABLE 0
++#define CFG_BANK2_START 0x3ff00000
++#define CFG_BANK2_END 0x3fffffff
++#define CFG_BANK2_ENABLE 0
++#define CFG_BANK3_START 0x3ff00000
++#define CFG_BANK3_END 0x3fffffff
++#define CFG_BANK3_ENABLE 0
++#define CFG_BANK4_START 0x3ff00000
++#define CFG_BANK4_END 0x3fffffff
++#define CFG_BANK4_ENABLE 0
++#define CFG_BANK5_START 0x3ff00000
++#define CFG_BANK5_END 0x3fffffff
++#define CFG_BANK5_ENABLE 0
++#define CFG_BANK6_START 0x3ff00000
++#define CFG_BANK6_END 0x3fffffff
++#define CFG_BANK6_ENABLE 0
++#define CFG_BANK7_START 0x3ff00000
++#define CFG_BANK7_END 0x3fffffff
++#define CFG_BANK7_ENABLE 0
++
++#define CFG_ODCR 0x95 /* 0x15 or 0x95 ? */
++
++/*----------------------------------------------------------------------
++ * Initial BAT mappings
++ */
++
++/* NOTES:
++ * 1) GUARDED and WRITETHROUGH not allowed in IBATS
++ * 2) CACHEINHIBIT and WRITETHROUGH not allowed together in same BAT
++ */
++
++/* SDRAM */
++#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_128M | BATU_VS | BATU_VP)
++
++#define CFG_DBAT0L CFG_IBAT0L
++#define CFG_DBAT0U CFG_IBAT0U
++
++/* EUMB: 1MB of address space */
++#define CFG_IBAT1L (CFG_EUMB_ADDR | BATL_PP_10 | BATL_CACHEINHIBIT)
++#define CFG_IBAT1U (CFG_EUMB_ADDR | BATU_BL_1M | BATU_VS | BATU_VP)
++
++#define CFG_DBAT1L (CFG_IBAT1L | BATL_GUARDEDSTORAGE)
++#define CFG_DBAT1U CFG_IBAT1U
++
++/* PCI Mem: 256MB of address space */
++#define CFG_IBAT2L (CFG_PCI_MEM_ADDR | BATL_PP_10 | BATL_CACHEINHIBIT)
++#define CFG_IBAT2U (CFG_PCI_MEM_ADDR | BATU_BL_256M | BATU_VS | BATU_VP)
++
++#define CFG_DBAT2L (CFG_IBAT2L | BATL_GUARDEDSTORAGE)
++#define CFG_DBAT2U CFG_IBAT2U
++
++/* PCI and local ROM/Flash: last 32MB of address space */
++#define CFG_IBAT3L (CFG_MISC_REGION_ADDR | BATL_PP_10 | BATL_CACHEINHIBIT)
++#define CFG_IBAT3U (CFG_MISC_REGION_ADDR | BATU_BL_32M | BATU_VS | BATU_VP)
++
++#define CFG_DBAT3L (CFG_IBAT3L | BATL_GUARDEDSTORAGE)
++#define CFG_DBAT3U CFG_IBAT3U
++
++/*
++ * 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.
++ *
++ * FIXME: This doesn't appear to be true for the newer kernels
++ * which map more that 8 MB
++ */
++#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */
++
++/*-----------------------------------------------------------------------
++ * FLASH organization
++ */
++#undef CFG_FLASH_PROTECTION
++#define CFG_MAX_FLASH_BANKS 1 /* Max number of flash banks */
++#define CFG_MAX_FLASH_SECT 72 /* Max number of sectors per flash */
++
++#define CFG_FLASH_ERASE_TOUT 12000
++#define CFG_FLASH_WRITE_TOUT 1000
++
++
++#define CFG_ENV_IS_IN_FLASH
++/*
++ * The original LinkStation flash organisation uses
++ * 448 kB (0xFFF00000 - 0xFFF6FFFF) for the boot loader
++ * We use the last sector of this area to store the environment
++ * which leaves max. 384 kB for the U-Boot itself
++ */
++#define CFG_ENV_ADDR 0xFFF60000
++#define CFG_ENV_SIZE 0x00010000
++#define CFG_ENV_SECT_SIZE 0x00010000
++
++/*-----------------------------------------------------------------------
++ * Cache Configuration
++ */
++#define CFG_CACHELINE_SIZE 32
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */
++#endif
++
++/*-----------------------------------------------------------------------
++ * IDE/ATA definitions
++ */
++#undef CONFIG_IDE_LED /* No IDE LED */
++#define CONFIG_IDE_RESET /* no reset for ide supported */
++#define CONFIG_IDE_PREINIT /* check for units */
++#define CONFIG_LBA48 /* 48 bit LBA supported */
++
++#if defined(CONFIG_LAN) || defined(CONFIG_HLAN) || defined(CONFIG_HGLAN)
++#define CFG_IDE_MAXBUS 1 /* Scan only 1 IDE bus */
++#define CFG_IDE_MAXDEVICE 1 /* Only 1 drive per IDE bus */
++#elif defined(CONFIG_HGTL)
++#define CFG_IDE_MAXBUS 2 /* Max. 2 IDE busses */
++#define CFG_IDE_MAXDEVICE 2 /* max. 2 drives per IDE bus */
++#else
++#error Config IDE: Unknown LinkStation type
++#endif
++
++#define CFG_ATA_BASE_ADDR 0
++
++#define CFG_ATA_DATA_OFFSET 0 /* Offset for data I/O */
++#define CFG_ATA_REG_OFFSET 0 /* Offset for normal registers */
++#define CFG_ATA_ALT_OFFSET 0 /* Offset for alternate registers */
++
++/*-----------------------------------------------------------------------
++ * Partitions and file system
++ */
++#define CONFIG_DOS_PARTITION
++
++/*-----------------------------------------------------------------------
++ * Internal Definitions
++ *
++ * Boot Flags
++ */
++#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
++#define BOOTFLAG_WARM 0x02 /* Software reboot */
++
++#endif /* __CONFIG_H */
++
++/* vim: set ts=4: */
+diff -urN u-boot-86xx/include/devices.h u-boot-86xx-kuro_clean/include/devices.h
+--- u-boot-86xx/include/devices.h 2006-10-13 00:27:18.000000000 +0200
++++ u-boot-86xx-kuro_clean/include/devices.h 2006-11-06 22:05:38.000000000 +0100
+@@ -93,6 +93,7 @@
+ int devices_init (void);
+ int devices_done (void);
+ int device_deregister(char *devname);
++int console_setfile (int file, device_t * dev);
+ #ifdef CONFIG_LCD
+ int drv_lcd_init (void);
+ #endif
+@@ -111,5 +112,8 @@
+ #ifdef CONFIG_NETCONSOLE
+ int drv_nc_init (void);
+ #endif
++#if defined(CFG_CONSOLE_IS_IN_ENV) || defined(CONFIG_SPLASH_SCREEN) || defined(CONFIG_SILENT_CONSOLE)
++device_t *search_device (int flags, char *name);
++#endif
+
+ #endif /* _DEVICES_H_ */
+diff -urN u-boot-86xx/include/flash.h u-boot-86xx-kuro_clean/include/flash.h
+--- u-boot-86xx/include/flash.h 2006-10-13 00:27:18.000000000 +0200
++++ u-boot-86xx-kuro_clean/include/flash.h 2006-11-06 22:05:38.000000000 +0100
+@@ -215,6 +215,8 @@
+
+ #define AMD_ID_LV320B_2 0x221A221A /* 2d ID word for AM29LV320MB at 0x38 */
+ #define AMD_ID_LV320B_3 0x22002200 /* 3d ID word for AM29LV320MB at 0x3c */
++#define AMD_ID_LV320T_2 0x221A221A /* 2d ID word for AM29LV320MT at 0x38 */
++#define AMD_ID_LV320T_3 0x22012201 /* 3d ID word for AM29LV320MT at 0x3c */
+
+ #define AMD_ID_LV640U 0x22D722D7 /* 29LV640U ID (64 M, uniform sectors) */
+ #define AMD_ID_LV650U 0x22D722D7 /* 29LV650U ID (64 M, uniform sectors) */
+@@ -246,6 +248,8 @@
+ #define STM_ID_x800AB 0x005B005B /* M29W800AB ID (8M = 512K x 16 ) */
+ #define STM_ID_29W320DT 0x22CA22CA /* M29W320DT ID (32 M, top boot sector) */
+ #define STM_ID_29W320DB 0x22CB22CB /* M29W320DB ID (32 M, bottom boot sect) */
++#define STM_ID_29W324DT 0x225C225C /* M29W324DT ID (32 M, top boot sector) */
++#define STM_ID_29W324DB 0x225D225D /* M29W324DB ID (32 M, bottom boot sect) */
+ #define STM_ID_29W040B 0x00E300E3 /* M29W040B ID (4M = 512K x 8) */
+ #define FLASH_PSD4256GV 0x00E9 /* PSD4256 Flash and CPLD combination */
+
+@@ -353,6 +357,8 @@
+ #define FLASH_STM800AB 0x0051 /* STM M29WF800AB ( 8M = 512K x 16 ) */
+ #define FLASH_STMW320DT 0x0052 /* STM M29W320DT (32 M, top boot sector) */
+ #define FLASH_STMW320DB 0x0053 /* STM M29W320DB (32 M, bottom boot sect)*/
++#define FLASH_STMW324DT 0x005C /* STM M29W320DT (32 M, top boot sector) */
++#define FLASH_STMW324DB 0x005D /* STM M29W320DB (32 M, bottom boot sect)*/
+ #define FLASH_STM320DB 0x00CB /* STM M29W320DB (4M = 64K x 64, bottom)*/
+ #define FLASH_STM800DT 0x00D7 /* STM M29W800DT (1M = 64K x 16, top) */
+ #define FLASH_STM800DB 0x005B /* STM M29W800DB (1M = 64K x 16, bottom)*/
+diff -urN u-boot-86xx/include/pci_ids.h u-boot-86xx-kuro_clean/include/pci_ids.h
+--- u-boot-86xx/include/pci_ids.h 2006-10-13 00:27:18.000000000 +0200
++++ u-boot-86xx-kuro_clean/include/pci_ids.h 2006-11-06 22:05:38.000000000 +0100
+@@ -1473,6 +1473,8 @@
+ #define PCI_DEVICE_ID_ITE_IT8172G_AUDIO 0x0801
+ #define PCI_DEVICE_ID_ITE_IT8181 0x8181
+ #define PCI_DEVICE_ID_ITE_8872 0x8872
++#define PCI_DEVICE_ID_ITE_8211 0x8211
++#define PCI_DEVICE_ID_ITE_8212 0x8212
+
+ #define PCI_DEVICE_ID_ITE_IT8330G_0 0xe886
+
+diff -urN u-boot-86xx/lib_ppc/board.c u-boot-86xx-kuro_clean/lib_ppc/board.c
+--- u-boot-86xx/lib_ppc/board.c 2006-10-13 00:27:19.000000000 +0200
++++ u-boot-86xx-kuro_clean/lib_ppc/board.c 2006-11-06 22:05:38.000000000 +0100
+@@ -439,6 +439,10 @@
+ */
+ addr -= len;
+ addr &= ~(4096 - 1);
++#ifdef CONFIG_LINKSTATION
++ /* U-Boot code at 1 MB boundary to make it easier to debug */
++ addr &= ~(1048576 - 1);
++#endif
+ #ifdef CONFIG_E500
+ /* round down to next 64 kB limit so that IVPR stays aligned */
+ addr &= ~(65536 - 1);
+@@ -895,8 +899,10 @@
+ /* Initialize the jump table for applications */
+ jumptable_init ();
+
++#if !defined(CONFIG_LINKSTATION)
+ /* Initialize the console (after the relocation and devices init) */
+ console_init_r ();
++#endif
+
+ #if defined(CONFIG_CCM) || \
+ defined(CONFIG_COGENT) || \
+@@ -949,6 +955,7 @@
+ if ((s = getenv ("loadaddr")) != NULL) {
+ load_addr = simple_strtoul (s, NULL, 16);
+ }
++ debug("load_addr: %08lx\n", load_addr);
+ #if (CONFIG_COMMANDS & CFG_CMD_NET)
+ if ((s = getenv ("bootfile")) != NULL) {
+ copy_filename (BootFile, s, sizeof (BootFile));
+@@ -998,6 +1005,11 @@
+ reset_phy ();
+ #endif
+
++#if defined(CONFIG_LINKSTATION)
++ /* The LinkStation uses the net console by default */
++ console_init_r ();
++#endif
++
+ #ifdef CONFIG_POST
+ post_run (NULL, POST_RAM | post_bootmode_get(0));
+ #endif
+diff -urN u-boot-86xx/lib_ppc/interrupts.c u-boot-86xx-kuro_clean/lib_ppc/interrupts.c
+--- u-boot-86xx/lib_ppc/interrupts.c 2006-10-13 00:27:19.000000000 +0200
++++ u-boot-86xx-kuro_clean/lib_ppc/interrupts.c 2006-11-06 22:05:38.000000000 +0100
+@@ -40,7 +40,7 @@
+ #endif
+
+ extern int interrupt_init_cpu (unsigned *);
+-extern void timer_interrupt_cpu (struct pt_regs *);
++extern void timer_interrupt_cpu (struct pt_regs *, ulong timestamp);
+
+ static unsigned decrementer_count; /* count value for 1e6/HZ microseconds */
+
+@@ -111,7 +111,7 @@
+ void timer_interrupt (struct pt_regs *regs)
+ {
+ /* call cpu specific function from $(CPU)/interrupts.c */
+- timer_interrupt_cpu (regs);
++ timer_interrupt_cpu (regs, timestamp);
+
+ /* Restore Decrementer Count */
+ set_dec (decrementer_count);
+diff -urN u-boot-86xx/net/net.c u-boot-86xx-kuro_clean/net/net.c
+--- u-boot-86xx/net/net.c 2006-10-13 00:27:19.000000000 +0200
++++ u-boot-86xx-kuro_clean/net/net.c 2006-11-06 22:05:38.000000000 +0100
+@@ -641,6 +641,11 @@
+ {
+ uchar *pkt;
+
++#ifdef ET_DEBUG
++ printf("%s dest: %08lx, dport: %d, sport: %d, len: %d\n",
++ __FUNCTION__, dest, dport, sport, len);
++#endif
++
+ /* convert to new style broadcast */
+ if (dest == 0)
+ dest = 0xFFFFFFFF;
+@@ -758,6 +763,8 @@
+ IPaddr_t tmp;
+ volatile IP_t *ip = (volatile IP_t *)pkt;
+
++ if (!pkt && !dest && !src && !len) /* ARP packet */
++ return;
+ tmp = NetReadIP((void *)&ip->ip_src);
+ if (tmp != NetPingIP)
+ return;
+@@ -1146,7 +1153,7 @@
+ ushort cti = 0, vlanid = VLAN_NONE, myvlanid, mynvlanid;
+
+ #ifdef ET_DEBUG
+- printf("packet received\n");
++ printf("%s: packet received\n", __FUNCTION__);
+ #endif
+
+ NetRxPkt = inpkt;
+@@ -1171,10 +1178,6 @@
+
+ x = ntohs(et->et_protlen);
+
+-#ifdef ET_DEBUG
+- printf("packet received\n");
+-#endif
+-
+ if (x < 1514) {
+ /*
+ * Got a 802 packet. Check the other protocol field.
+@@ -1305,13 +1308,16 @@
+ /* matched waiting packet's address */
+ if (tmp == NetArpWaitReplyIP) {
+ #ifdef ET_DEBUG
+- puts ("Got it\n");
++ puts ("ARP reply IP matches original pkt IP\n");
+ #endif
+ /* save address for later use */
+ memcpy(NetArpWaitPacketMAC, &arp->ar_data[0], 6);
+
+ #ifdef CONFIG_NETCONSOLE
+- (*packetHandler)(0,0,0,0);
++ if (packetHandler)
++ (*packetHandler)(0,0,0,0);
++ else
++ printf("ARP: NULL packetHandler\n");
+ #endif
+ /* modify header, and transmit it */
+ memcpy(((Ethernet_t *)NetArpWaitTxPacket)->et_dest, NetArpWaitPacketMAC, 6);
+@@ -1354,7 +1360,10 @@
+ NetCopyIP(&NetServerIP, &arp->ar_data[ 6]);
+ memcpy (NetServerEther, &arp->ar_data[ 0], 6);
+
+- (*packetHandler)(0,0,0,0);
++ if (packetHandler)
++ (*packetHandler)(0,0,0,0);
++ else
++ printf("ARP: NULL packetHandler\n");
+ }
+ break;
+
+diff -urN u-boot-86xx/net/nfs.c u-boot-86xx-kuro_clean/net/nfs.c
+--- u-boot-86xx/net/nfs.c 2006-10-13 00:27:19.000000000 +0200
++++ u-boot-86xx-kuro_clean/net/nfs.c 2006-11-06 22:05:38.000000000 +0100
+@@ -29,7 +29,7 @@
+ #include "nfs.h"
+ #include "bootp.h"
+
+-/*#define NFS_DEBUG*/
++#undef NFS_DEBUG
+
+ #if ((CONFIG_COMMANDS & CFG_CMD_NET) && (CONFIG_COMMANDS & CFG_CMD_NFS))
+
+@@ -180,6 +180,9 @@
+ int sport;
+
+ id = ++rpc_id;
++#ifdef NFS_DEBUG
++ printf ("%s xid: %d, rpc_id: %d\n", __FUNCTION__, id, rpc_id);
++#endif
+ pkt.u.call.id = htonl(id);
+ pkt.u.call.type = htonl(MSG_CALL);
+ pkt.u.call.rpcvers = htonl(2); /* use RPC version 2 */
+@@ -213,6 +216,10 @@
+ {
+ uint32_t data[16];
+
++#ifdef NFS_DEBUG
++ printf ("%s\n", __FUNCTION__);
++#endif
++
+ data[0] = 0; data[1] = 0; /* auth credential */
+ data[2] = 0; data[3] = 0; /* auth verifier */
+ data[4] = htonl(prog);
+@@ -234,6 +241,10 @@
+ int len;
+ int pathlen;
+
++#ifdef NFS_DEBUG
++ printf ("%s\n", __FUNCTION__);
++#endif
++
+ pathlen = strlen (path);
+
+ p = &(data[0]);
+@@ -259,6 +270,10 @@
+ uint32_t *p;
+ int len;
+
++#ifdef NFS_DEBUG
++ printf ("%s\n", __FUNCTION__);
++#endif
++
+ if ((NfsSrvMountPort == -1) || (!fs_mounted)) {
+ /* Nothing mounted, nothing to umount */
+ return;
+@@ -286,6 +301,10 @@
+ uint32_t *p;
+ int len;
+
++#ifdef NFS_DEBUG
++ printf ("%s\n", __FUNCTION__);
++#endif
++
+ p = &(data[0]);
+ p = (uint32_t *)rpc_add_credentials ((long *)p);
+
+@@ -308,6 +327,10 @@
+ int len;
+ int fnamelen;
+
++#ifdef NFS_DEBUG
++ printf ("%s\n", __FUNCTION__);
++#endif
++
+ fnamelen = strlen (fname);
+
+ p = &(data[0]);
+@@ -335,6 +358,10 @@
+ uint32_t *p;
+ int len;
+
++#ifdef NFS_DEBUG
++ printf ("%s\n", __FUNCTION__);
++#endif
++
+ p = &(data[0]);
+ p = (uint32_t *)rpc_add_credentials ((long *)p);
+
+@@ -405,8 +432,13 @@
+
+ if (rpc_pkt.u.reply.rstatus ||
+ rpc_pkt.u.reply.verifier ||
+- rpc_pkt.u.reply.astatus ||
+ rpc_pkt.u.reply.astatus) {
++#ifdef NFS_DEBUG
++ printf ("rstatus: %d\n", rpc_pkt.u.reply.rstatus);
++ printf ("verifier: %08lx\n", rpc_pkt.u.reply.verifier);
++ printf ("v2: %08lx\n", rpc_pkt.u.reply.v2);
++ printf ("astatus: %d\n", rpc_pkt.u.reply.astatus);
++#endif
+ return -1;
+ }
+
+@@ -433,13 +465,24 @@
+
+ memcpy ((unsigned char *)&rpc_pkt, pkt, len);
+
+- if (ntohl(rpc_pkt.u.reply.id) != rpc_id)
++ if (ntohl(rpc_pkt.u.reply.id) != rpc_id) {
++#ifdef NFS_DEBUG
++ printf ("rpc_id error. expected: %d, got: %d\n", \
++ rpc_id, ntohl(rpc_pkt.u.reply.id));
++#endif
+ return -1;
++ }
+
+ if (rpc_pkt.u.reply.rstatus ||
+ rpc_pkt.u.reply.verifier ||
+ rpc_pkt.u.reply.astatus ||
+ rpc_pkt.u.reply.data[0]) {
++#ifdef NFS_DEBUG
++ printf ("rstatus: %d\n", rpc_pkt.u.reply.rstatus);
++ printf ("verifier: %08lx\n", rpc_pkt.u.reply.verifier);
++ printf ("astatus: %d\n", rpc_pkt.u.reply.astatus);
++ printf ("data[0]: %08lx\n", rpc_pkt.u.reply.data[0]);
++#endif
+ return -1;
+ }
+
+@@ -544,7 +587,7 @@
+ struct rpc_t rpc_pkt;
+ int rlen;
+
+-#ifdef NFS_DEBUG_nop
++#ifdef NFS_DEBUG
+ printf ("%s\n", __FUNCTION__);
+ #endif
+
+@@ -601,6 +644,8 @@
+ printf ("%s\n", __FUNCTION__);
+ #endif
+
++ if (!pkt && !dest && !src && !len) /* ARP packet */
++ return;
+ if (dest != NfsOurPort) return;
+
+ switch (NfsState) {
+diff -urN u-boot-86xx/tools/Makefile u-boot-86xx-kuro_clean/tools/Makefile
+--- u-boot-86xx/tools/Makefile 2006-10-13 00:27:19.000000000 +0200
++++ u-boot-86xx-kuro_clean/tools/Makefile 2006-11-06 22:18:42.000000000 +0100
+@@ -21,10 +21,10 @@
+ # MA 02111-1307 USA
+ #
+
+-BIN_FILES = img2srec$(SFX) mkimage$(SFX) envcrc$(SFX) gen_eth_addr$(SFX) bmp_logo$(SFX)
++BIN_FILES = img2srec$(SFX) mkimage$(SFX) envcrc$(SFX) gen_eth_addr$(SFX) bmp_logo$(SFX) ncb$(SFX)
+
+ OBJ_LINKS = environment.o crc32.o
+-OBJ_FILES = img2srec.o mkimage.o envcrc.o gen_eth_addr.o bmp_logo.o
++OBJ_FILES = img2srec.o mkimage.o envcrc.o gen_eth_addr.o bmp_logo.o ncb.o
+
+ ifeq ($(ARCH),mips)
+ BIN_FILES += inca-swap-bytes$(SFX)
diff --git a/packages/uboot/u-boot-1.2.0/uboot-qnap.diff b/packages/uboot/u-boot-1.2.0/uboot-qnap.diff
new file mode 100644
index 0000000000..2b2a17da7f
--- /dev/null
+++ b/packages/uboot/u-boot-1.2.0/uboot-qnap.diff
@@ -0,0 +1,1100 @@
+--- u-boot-1.2.0.vanilla/board/qnap/config.mk 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.2.0/board/qnap/config.mk 2007-02-26 01:55:37.000000000 +0100
+@@ -0,0 +1,35 @@
++#
++# (C) Copyright 2000, 2001
++# 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
++#
++# Valid values for TEXT_BASE are:
++#
++# Standard configuration
++# 0xFFF00000 boot from flash
++#
++# Standard configuration
++# 0xFFE60000 chain boot from flash
++#
++
++
++TEXT_BASE = 0xFFE60000
++
++PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
+--- u-boot-1.2.0.vanilla/board/qnap/ide.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.2.0/board/qnap/ide.c 2007-02-26 01:55:37.000000000 +0100
+@@ -0,0 +1,67 @@
++/*
++ * (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
++ */
++
++ #include <common.h>
++
++#ifdef CFG_CMD_IDE
++#include <ata.h>
++#include <ide.h>
++#include <pci.h>
++
++extern ulong ide_bus_offset[CFG_IDE_MAXBUS];
++extern struct pci_controller hose;
++
++int ide_preinit (void)
++{
++ int status;
++ pci_dev_t devbusfn;
++ int l;
++
++ status = 1;
++ for (l = 0; l < CFG_IDE_MAXBUS; l++) {
++ ide_bus_offset[l] = -ATA_STATUS;
++ }
++ devbusfn = pci_find_device (0x1095, 0x3512, 0);
++
++ if (devbusfn != -1) {
++
++ status = 0;
++
++ pci_read_config_dword (devbusfn, PCI_BASE_ADDRESS_0,
++ (u32 *) &ide_bus_offset[0]);
++ ide_bus_offset[0] &= 0xfffffffe;
++ ide_bus_offset[0] = pci_hose_bus_to_phys(&hose,
++ ide_bus_offset[0] & 0xfffffffe,
++ PCI_REGION_IO);
++
++ pci_read_config_dword (devbusfn, PCI_BASE_ADDRESS_2,
++ (u32 *) &ide_bus_offset[1]);
++ ide_bus_offset[1] &= 0xfffffffe;
++ ide_bus_offset[1] = pci_hose_bus_to_phys(&hose,
++ ide_bus_offset[1] & 0xfffffffe,
++ PCI_REGION_IO);
++ }
++ return (status);
++}
++
++#endif /* of CONFIG_CMDS_IDE */
+--- u-boot-1.2.0.vanilla/board/qnap/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.2.0/board/qnap/Makefile 2007-02-26 01:55:37.000000000 +0100
+@@ -0,0 +1,40 @@
++#
++# (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
++#
++
++include $(TOPDIR)/config.mk
++
++LIB = lib$(BOARD).a
++
++OBJS = $(BOARD).o ide.o
++
++$(LIB): .depend $(OBJS)
++ $(AR) crv $@ $(OBJS)
++
++#########################################################################
++
++.depend: Makefile $(OBJS:.o=.c)
++ $(CC) -M $(CFLAGS) $(OBJS:.o=.c) > $@
++
++sinclude .depend
++
++#########################################################################
+--- u-boot-1.2.0.vanilla/board/qnap/qnap.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.2.0/board/qnap/qnap.c 2007-02-26 01:55:37.000000000 +0100
+@@ -0,0 +1,126 @@
++/*
++ * Copyright (C) 2006 Andrew Luyten <u-boot@luyten.org.uk>
++ *
++ * Copyright (C) 2000
++ * Rob Taylor, Flying Pig Systems. robt@flyingpig.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
++ *
++ */
++
++#include <common.h>
++#include <mpc824x.h>
++#include <pci.h>
++
++int checkboard (void)
++{
++ ulong busfreq = get_bus_freq(0);
++ char buf[32];
++
++ printf("Board: QNAP TS-101/TS-201 local bus at %s MHz\n", strmhz(buf, busfreq));
++ return 0;
++}
++
++
++long int initdram (int board_type)
++{
++ long size;
++ long new_bank0_end;
++ long mear1;
++ long emear1;
++
++ size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE);
++
++ new_bank0_end = size - 1;
++ mear1 = mpc824x_mpc107_getreg(MEAR1);
++ emear1 = mpc824x_mpc107_getreg(EMEAR1);
++ mear1 = (mear1 & 0xFFFFFF00) |
++ ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
++ emear1 = (emear1 & 0xFFFFFF00) |
++ ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
++ mpc824x_mpc107_setreg(MEAR1, mear1);
++ mpc824x_mpc107_setreg(EMEAR1, emear1);
++
++ return (size);
++}
++
++/*
++ * Initialize PCI Devices, report devices found.
++ */
++#ifndef CONFIG_PCI_PNP
++
++static struct pci_config_table pci_qnap_config_table[] = {
++ /* vendor, device, class */
++ /* bus, dev, func */
++
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0f, 0, /* RTL8110SC or Intel 82540EM */
++ /* Gigabit ethernet controller */
++ pci_cfgfunc_config_device, { PCI_ETH_IOADDR,
++ PCI_ETH_MEMADDR,
++ PCI_COMMAND_IO |
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0d, 0, /* SII3512 */
++ /* SATA controller */
++ pci_cfgfunc_config_device, { PCI_IDE_IOADDR,
++ PCI_IDE_MEMADDR,
++ PCI_COMMAND_IO |
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0e, 0, /* D720101 USB controller, 1st USB 1.1 */
++ pci_cfgfunc_config_device, { PCI_USB0_IOADDR,
++ PCI_USB0_MEMADDR,
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0e, 1, /* D720101 USB controller, 2nd USB 1.1 */
++ pci_cfgfunc_config_device, { PCI_USB1_IOADDR,
++ PCI_USB1_MEMADDR,
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
++ PCI_ANY_ID, 0x0e, 2, /* D720101 USB controller, USB 2.0 */
++ pci_cfgfunc_config_device, { PCI_USB2_IOADDR,
++ PCI_USB2_MEMADDR,
++ PCI_COMMAND_MEMORY |
++ PCI_COMMAND_MASTER }},
++ { }
++};
++#endif
++
++struct pci_controller hose = {
++#ifndef CONFIG_PCI_PNP
++ config_table: pci_qnap_config_table,
++#endif
++};
++
++void pci_init_board(void)
++{
++ pci_mpc824x_init(&hose);
++
++ /* Reset USB 1.1 !/
++ out_le32(PCI_USB0_MEMADDR+8, 1);
++ out_le32(PCI_USB1_MEMADDR+8, 1);
++ */
++}
+--- u-boot-1.2.0.vanilla/board/qnap/README 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.2.0/board/qnap/README 2007-02-26 01:55:37.000000000 +0100
+@@ -0,0 +1,10 @@
++*This port of U-Boot will run on a QNAP TS-101/TS-201 NAS*
++Andrew Luyten (u-boot@luyten.org.uk)
++
++Adapted from a Linkstation port by Mihai Georgian
++http://http://www.linuxnotincluded.org.uk/
++
++Adapted from Motorola Sandpoint 3 development system equipped with
++a Unity X4 PPMC card (MPC8240 CPU) only. It is a snapshot of work
++in progress and far from being completed.
++Thomas Koeller
+--- u-boot-1.2.0.vanilla/board/qnap/u-boot.lds 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.2.0/board/qnap/u-boot.lds 2007-02-26 01:55:37.000000000 +0100
+@@ -0,0 +1,136 @@
++/*
++ * (C) Copyright 2001
++ * 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
++{
++ /* 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/mpc824x/start.o (.text)
++ lib_ppc/board.o (.text)
++ lib_ppc/ppcstring.o (.text)
++ lib_generic/vsprintf.o (.text)
++ lib_generic/crc32.o (.text)
++ lib_generic/zlib.o (.text)
++
++ . = DEFINED(env_offset) ? env_offset : .;
++ common/environment.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 = .);
++}
+--- u-boot-1.2.0.vanilla/cpu/mpc824x/cpu.c 2007-01-07 00:13:11.000000000 +0100
++++ u-boot-1.2.0/cpu/mpc824x/cpu.c 2007-02-26 01:55:37.000000000 +0100
+@@ -44,7 +44,11 @@
+ break;
+
+ case CPU_TYPE_8245:
++#ifdef CONFIG_MPC8241
++ puts ("MPC8241"); /* impossible to distinguish using chip registers */
++#else
+ puts ("MPC8245");
++#endif
+ break;
+
+ default:
+--- u-boot-1.2.0.vanilla/drivers/rtl8169.c 2007-01-07 00:13:11.000000000 +0100
++++ u-boot-1.2.0/drivers/rtl8169.c 2007-02-26 01:55:37.000000000 +0100
+@@ -48,7 +48,10 @@
+ *
+ * Indent Options: indent -kr -i8
+ ***************************************************************************/
+-
++/*
++ * 26 August 2006 Mihai Georgian <u-boot@linuxnotincluded.org.uk>
++ * Modified to use le32_to_cpu and cpu_to_le32 properly
++ */
+ #include <common.h>
+ #include <malloc.h>
+ #include <net.h>
+@@ -68,6 +71,7 @@
+ static u32 ioaddr;
+
+ /* Condensed operations for readability. */
++#define virt_to_bus(addr) cpu_to_le32(addr)
+ #define virt_to_le32desc(addr) cpu_to_le32(virt_to_bus(addr))
+ #define le32desc_to_virt(addr) bus_to_virt(le32_to_cpu(addr))
+
+@@ -247,8 +251,15 @@
+ u8 version; /* depend on RTL8169 docs */
+ u32 RxConfigMask; /* should clear the bits supported by this chip */
+ } rtl_chip_info[] = {
+- {"RTL-8169", 0x00, 0xff7e1880,},
+- {"RTL-8169", 0x04, 0xff7e1880,},
++ {"RTL8169", 0x00, 0xff7e1880,},
++ {"RTL8169s/8110s", 0x02, 0xff7e1880,},
++ {"RTL8169s/8110s", 0x04, 0xff7e1880,},
++ {"RTL8169sb/8110sb", 0x10, 0xff7e1880,},
++ {"RTL8169sc/8110sc", 0x18, 0xff7e1880,},
++ {"RTL8168b/8111sb", 0x30, 0xff7e1880,},
++ {"RTL8168b/8111sb", 0x38, 0xff7e1880,},
++ {"RTL8101e", 0x34, 0xff7e1880,},
++ {"RTL8100e", 0x32, 0xff7e1880,},
+ };
+
+ enum _DescStatusBit {
+@@ -315,6 +326,7 @@
+
+ static struct pci_device_id supported[] = {
+ {PCI_VENDOR_ID_REALTEK, 0x8169},
++ {PCI_VENDOR_ID_REALTEK, 0x8167},
+ {}
+ };
+
+@@ -383,13 +395,15 @@
+ for (i = ARRAY_SIZE(rtl_chip_info) - 1; i >= 0; i--){
+ if (tmp == rtl_chip_info[i].version) {
+ tpc->chipset = i;
++ printf ("%s... ", rtl_chip_info[i].name);
+ goto match;
+ }
+ }
+
+ /* if unknown chip, assume array element #0, original RTL-8169 in this case */
+ printf("PCI device %s: unknown chip version, assuming RTL-8169\n", dev->name);
+- printf("PCI device: TxConfig = 0x%hX\n", (unsigned long) RTL_R32(TxConfig));
++ printf("PCI device: TxConfig = 0x%lX\n", (unsigned long) RTL_R32(TxConfig));
++
+ tpc->chipset = 0;
+
+ match:
+@@ -413,23 +427,23 @@
+ ioaddr = dev->iobase;
+
+ cur_rx = tpc->cur_rx;
+- if ((tpc->RxDescArray[cur_rx].status & OWNbit) == 0) {
+- if (!(tpc->RxDescArray[cur_rx].status & RxRES)) {
++ if ((le32_to_cpu(tpc->RxDescArray[cur_rx].status) & OWNbit) == 0) {
++ if (!(le32_to_cpu(tpc->RxDescArray[cur_rx].status) & RxRES)) {
+ unsigned char rxdata[RX_BUF_LEN];
+- length = (int) (tpc->RxDescArray[cur_rx].
+- status & 0x00001FFF) - 4;
++ length = (int) (le32_to_cpu(tpc->RxDescArray[cur_rx].
++ status) & 0x00001FFF) - 4;
+
+ memcpy(rxdata, tpc->RxBufferRing[cur_rx], length);
+ NetReceive(rxdata, length);
+
+ if (cur_rx == NUM_RX_DESC - 1)
+ tpc->RxDescArray[cur_rx].status =
+- (OWNbit | EORbit) + RX_BUF_SIZE;
++ cpu_to_le32((OWNbit | EORbit) + RX_BUF_SIZE);
+ else
+ tpc->RxDescArray[cur_rx].status =
+- OWNbit + RX_BUF_SIZE;
++ cpu_to_le32(OWNbit + RX_BUF_SIZE);
+ tpc->RxDescArray[cur_rx].buf_addr =
+- virt_to_bus(tpc->RxBufferRing[cur_rx]);
++ cpu_to_le32((u32)tpc->RxBufferRing[cur_rx]);
+ } else {
+ puts("Error Rx");
+ }
+@@ -454,6 +468,7 @@
+ u8 *ptxb;
+ int entry = tpc->cur_tx % NUM_TX_DESC;
+ u32 len = length;
++ int ret;
+
+ #ifdef DEBUG_RTL8169_TX
+ int stime = currticks();
+@@ -465,39 +480,46 @@
+
+ /* point to the current txb incase multiple tx_rings are used */
+ ptxb = tpc->Tx_skbuff[entry * MAX_ETH_FRAME_SIZE];
++#ifdef DEBUG_RTL8169_TX
++ printf("ptxb: %08X, length: %d\n", ptxb, (int)length);
++#endif
+ memcpy(ptxb, (char *)packet, (int)length);
+
+ while (len < ETH_ZLEN)
+ ptxb[len++] = '\0';
+
+- tpc->TxDescArray[entry].buf_addr = virt_to_bus(ptxb);
++ tpc->TxDescArray[entry].buf_addr = cpu_to_le32((u32)ptxb);
+ if (entry != (NUM_TX_DESC - 1)) {
+ tpc->TxDescArray[entry].status =
+- (OWNbit | FSbit | LSbit) | ((len > ETH_ZLEN) ?
+- len : ETH_ZLEN);
++ cpu_to_le32((OWNbit | FSbit | LSbit) |
++ ((len > ETH_ZLEN) ? len : ETH_ZLEN));
+ } else {
+ tpc->TxDescArray[entry].status =
+- (OWNbit | EORbit | FSbit | LSbit) |
+- ((len > ETH_ZLEN) ? length : ETH_ZLEN);
++ cpu_to_le32((OWNbit | EORbit | FSbit | LSbit) |
++ ((len > ETH_ZLEN) ? len : ETH_ZLEN));
+ }
+ RTL_W8(TxPoll, 0x40); /* set polling bit */
+
+ tpc->cur_tx++;
+ to = currticks() + TX_TIMEOUT;
+- while ((tpc->TxDescArray[entry].status & OWNbit) && (currticks() < to)); /* wait */
++ while ((le32_to_cpu(tpc->TxDescArray[entry].status) & OWNbit)
++ && (currticks() < to)); /* wait */
+
+ if (currticks() >= to) {
+ #ifdef DEBUG_RTL8169_TX
+ puts ("tx timeout/error\n");
+ printf ("%s elapsed time : %d\n", __FUNCTION__, currticks()-stime);
+ #endif
+- return 0;
++ ret = 0;
+ } else {
+ #ifdef DEBUG_RTL8169_TX
+ puts("tx done\n");
+ #endif
+- return length;
++ ret = length;
+ }
++ /* Delay to make net console (nc) work properly */
++ udelay(20);
++ return ret;
+ }
+
+ static void rtl8169_set_rx_mode(struct eth_device *dev)
+@@ -564,8 +586,8 @@
+
+ tpc->cur_rx = 0;
+
+- RTL_W32(TxDescStartAddr, virt_to_le32desc(tpc->TxDescArray));
+- RTL_W32(RxDescStartAddr, virt_to_le32desc(tpc->RxDescArray));
++ RTL_W32(TxDescStartAddr, virt_to_le32desc((u32)tpc->TxDescArray));
++ RTL_W32(RxDescStartAddr, virt_to_le32desc((u32)tpc->RxDescArray));
+ RTL_W8(Cfg9346, Cfg9346_Lock);
+ udelay(10);
+
+@@ -603,13 +625,14 @@
+ for (i = 0; i < NUM_RX_DESC; i++) {
+ if (i == (NUM_RX_DESC - 1))
+ tpc->RxDescArray[i].status =
+- (OWNbit | EORbit) + RX_BUF_SIZE;
++ cpu_to_le32((OWNbit | EORbit) + RX_BUF_SIZE);
+ else
+- tpc->RxDescArray[i].status = OWNbit + RX_BUF_SIZE;
++ tpc->RxDescArray[i].status =
++ cpu_to_le32(OWNbit + RX_BUF_SIZE);
+
+ tpc->RxBufferRing[i] = &rxb[i * RX_BUF_SIZE];
+ tpc->RxDescArray[i].buf_addr =
+- virt_to_bus(tpc->RxBufferRing[i]);
++ cpu_to_le32((u32)tpc->RxBufferRing[i]);
+ }
+
+ #ifdef DEBUG_RTL8169
+@@ -620,7 +643,7 @@
+ /**************************************************************************
+ RESET - Finish setting up the ethernet interface
+ ***************************************************************************/
+-static void rtl_reset(struct eth_device *dev, bd_t *bis)
++static int rtl_reset(struct eth_device *dev, bd_t *bis)
+ {
+ int i;
+ u8 diff;
+@@ -635,21 +658,27 @@
+ if (tpc->TxDescArrays == 0)
+ puts("Allot Error");
+ /* Tx Desscriptor needs 256 bytes alignment; */
+- TxPhyAddr = virt_to_bus(tpc->TxDescArrays);
++ TxPhyAddr = (u32)tpc->TxDescArrays;
+ diff = 256 - (TxPhyAddr - ((TxPhyAddr >> 8) << 8));
+ TxPhyAddr += diff;
+ tpc->TxDescArray = (struct TxDesc *) (tpc->TxDescArrays + diff);
++#ifdef DEBUG_RTL8169
++ printf("tpc->TxDescArray: %08X\n", tpc->TxDescArray);
++#endif
+
+ tpc->RxDescArrays = rx_ring;
+ /* Rx Desscriptor needs 256 bytes alignment; */
+- RxPhyAddr = virt_to_bus(tpc->RxDescArrays);
++ RxPhyAddr = (u32)tpc->RxDescArrays;
+ diff = 256 - (RxPhyAddr - ((RxPhyAddr >> 8) << 8));
+ RxPhyAddr += diff;
+ tpc->RxDescArray = (struct RxDesc *) (tpc->RxDescArrays + diff);
++#ifdef DEBUG_RTL8169
++ printf("tpc->RxDescArray: %08X\n", tpc->RxDescArray);
++#endif
+
+ if (tpc->TxDescArrays == NULL || tpc->RxDescArrays == NULL) {
+ puts("Allocate RxDescArray or TxDescArray failed\n");
+- return;
++ return 0;
+ }
+
+ rtl8169_init_ring(dev);
+@@ -669,6 +698,7 @@
+ #ifdef DEBUG_RTL8169
+ printf ("%s elapsed time : %d\n", __FUNCTION__, currticks()-stime);
+ #endif
++ return 1;
+ }
+
+ /**************************************************************************
+@@ -733,7 +763,7 @@
+
+ /* Get MAC address. FIXME: read EEPROM */
+ for (i = 0; i < MAC_ADDR_LEN; i++)
+- dev->enetaddr[i] = RTL_R8(MAC0 + i);
++ bis->bi_enetaddr[i] = dev->enetaddr[i] = RTL_R8(MAC0 + i);
+
+ #ifdef DEBUG_RTL8169
+ printf("MAC Address");
+@@ -814,17 +844,14 @@
+ if (option & _1000bpsF) {
+ #ifdef DEBUG_RTL8169
+ printf("%s: 1000Mbps Full-duplex operation.\n",
+- dev->name);
++ dev->name);
+ #endif
+ } else {
+ #ifdef DEBUG_RTL8169
+- printf
+- ("%s: %sMbps %s-duplex operation.\n",
+- dev->name,
+- (option & _100bps) ? "100" :
+- "10",
+- (option & FullDup) ? "Full" :
+- "Half");
++ printf("%s: %sMbps %s-duplex operation.\n",
++ dev->name,
++ (option & _100bps) ? "100" : "10",
++ (option & FullDup) ? "Full" : "Half");
+ #endif
+ }
+ break;
+@@ -886,3 +913,5 @@
+ }
+
+ #endif
++
++/* vim: set ts=4: */
+Index: u-boot-1.2.0/include/configs/qnap.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-1.2.0/include/configs/qnap.h 2007-04-07 21:56:55.376393000 +0200
+@@ -0,0 +1,363 @@
++/*
++ * Copyright (C) 2006 Andrew Luyten <u-boot@luyten.org.uk>
++ *
++ * 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
++ */
++
++/* ------------------------------------------------------------------------- */
++
++/*
++ * board/config.h - configuration options, board specific
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++/*
++ * High Level Configuration Options
++ * (easy to change)
++ */
++
++#define CONFIG_MPC824X 1
++#define CONFIG_MPC8245 1
++#define CONFIG_MPC8241 1
++
++#define CONFIG_IDENT_STRING " OpenTS(c)"
++#define CONFIG_TIMESTAMP
++#define CFG_HUSH_PARSER 1
++#define CFG_PROMPT_HUSH_PS2 "turbostation> "
++#define CONFIG_BOOTDELAY 3
++
++
++/*----------------------------------------------------------------------
++ * Define supported commands
++ */
++
++#define CONFIG_COMMANDS ( \
++ CONFIG_CMD_DFL | \
++ CFG_CMD_ELF | \
++ CFG_CMD_I2C | \
++ CFG_CMD_PING | \
++ CFG_CMD_DHCP | \
++ CFG_CMD_IDE | \
++ CFG_CMD_EXT2 | \
++ CFG_CMD_DATE | \
++ CFG_CMD_PCI )
++
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++
++/*-----------------------------------------------------------------------
++ * Miscellaneous configurable options
++ */
++
++#define CFG_LONGHELP 1 /* undef to save memory */
++#define CFG_PROMPT "=> " /* Monitor Command Prompt*/
++#define CFG_CBSIZE 256 /* Console I/O Buffer Size*/
++#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_LOAD_ADDR 0x00100000 /* default load address */
++#define CFG_HZ 1000 /* decrementer freq:1 ms ticks*/
++
++
++/*-----------------------------------------------------------------------
++ * PCI
++ *
++ */
++
++#define CONFIG_PCI
++#undef CONFIG_PCI_PNP
++
++#define PCI_ETH_IOADDR 0xbffe00
++#define PCI_ETH_MEMADDR 0xbfffce00
++
++#define PCI_IDE_IOADDR 0xbfffd0
++#define PCI_IDE_MEMADDR 0xbffffe00
++
++#define PCI_USB0_IOADDR 0
++#define PCI_USB0_MEMADDR 0xbfffe000
++#define PCI_USB1_IOADDR 0
++#define PCI_USB1_MEMADDR 0xbfffd000
++#define PCI_USB2_IOADDR 0
++#define PCI_USB2_MEMADDR 0xbfffcf00
++
++
++/*-----------------------------------------------------------------------
++ * Start addresses for the final memory configuration
++ * (Set up by the startup code)
++ */
++
++#define CFG_SDRAM_BASE 0x00000000
++#define CFG_MONITOR_BASE TEXT_BASE
++#undef CFG_RAMBOOT
++
++#define CFG_PCI_MEM_ADDR 0xB0000000
++#define CFG_EUMB_ADDR 0xFC000000
++#define CFG_FLASH_BASE 0xFF000000
++
++#define CFG_RESET_ADDRESS 0xFFF00100
++
++#define CFG_MONITOR_LEN (256 << 10)
++#define CFG_MALLOC_LEN (512 << 10)
++
++#define CFG_MEMTEST_START 0x00000000 /* memtest works on */
++#define CFG_MEMTEST_END 0x04000000 /* 0 ... 32 MB in DRAM */
++#define CFG_MAX_RAM_SIZE 0x10000000 /* up to 256M of SDRAM */
++
++
++/*-----------------------------------------------------------------------
++ * Definitions for initial stack pointer and data area
++ */
++
++#define CFG_INIT_RAM_ADDR 0x40000000
++#define CFG_INIT_RAM_END 0x1000
++#define CFG_GBL_DATA_SIZE 128
++#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
++
++
++/*-----------------------------------------------------------------------
++ * FLASH organization
++ */
++
++#define CFG_FLASH_CFI 1
++#define CFG_FLASH_CFI_DRIVER 1 /* Use the common driver */
++#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
++#define CFG_MAX_FLASH_SECT 128 /* max number of sectors on one chip*/
++#define CFG_FLASH_EMPTY_INFO /* print 'E' for empty sector on flinfo */
++#define CFG_FLASH_USE_BUFFER_WRITE /* faster writes */
++
++#define CFG_ENV_IS_IN_FLASH 1
++#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x00EA0000)
++#define CFG_ENV_SECT_SIZE 0x00020000 /* Total Size of Environment Sector*/
++
++
++/*-----------------------------------------------------------------------
++ * Gigabit Ethernet
++ */
++
++#define CONFIG_NET_MULTI
++#define CONFIG_RTL8169
++
++
++/*-----------------------------------------------------------------------
++ * Filesystems
++ */
++
++#define CONFIG_MAC_PARTITION
++#define CONFIG_DOS_PARTITION
++//#define CONFIG_ISO_PARTITION
++
++
++/*-----------------------------------------------------------------------
++ * IDE/ATA
++ */
++
++#undef CONFIG_IDE_8xx_DIRECT /* no pcmcia interface required */
++#undef CONFIG_IDE_LED /* no led for ide supported */
++#undef CONFIG_IDE_RESET /* no reset for ide supported */
++#undef CONFIG_ATAPI /* no ATAPI support */
++
++#define CONFIG_IDE_PREINIT /* To set up MMIO adresses */
++#define CONFIG_LBA48 /* Large disk support */
++
++#define CFG_IDE_MAXBUS 2 /* Two channels x 1 device each */
++#define CFG_IDE_MAXDEVICE (CFG_IDE_MAXBUS*1)
++
++#define CFG_ATA_BASE_ADDR 0x0000 /* Set up in board specific code */
++#define CFG_ATA_DATA_OFFSET 0x0000 /* Offset for data I/O */
++#define CFG_ATA_REG_OFFSET 0x0000 /* Offset for normal register accesses */
++#define CFG_ATA_ALT_OFFSET 0x0000 /* Offset for alternate registers */
++
++
++/*----------------------------------------------------------------------
++ * On Chip Serial configuration
++ */
++
++#define CONFIG_CONS_INDEX 1
++#define CONFIG_BAUDRATE 115200
++#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
++
++#define CFG_NS16550
++#define CFG_NS16550_SERIAL
++
++#define CFG_NS16550_REG_SIZE 1
++#define CFG_NS16550_CLK get_bus_freq(0)
++
++#define CFG_NS16550_COM1 (CFG_EUMB_ADDR + 0x4500) /* Console port */
++#define CFG_NS16550_COM2 (CFG_EUMB_ADDR + 0x4600) /* PIC ? */
++
++
++/*----------------------------------------------------------------------
++ * i2c support configuration
++ */
++
++#define CONFIG_HARD_I2C 1 /* To enable I2C support */
++#undef CONFIG_SOFT_I2C /* I2C bit-banged */
++#define CFG_I2C_SPEED 400000 /* I2C speed and slave address */
++#define CFG_I2C_SLAVE 0x7F
++
++#define CONFIG_RTC_RS5C372A /* Real-time clock chip */
++
++
++/*----------------------------------------------------------------------
++ * Low Level Configuration Settings
++ * (address mappings, register initial values, etc.)
++ * You should know what you are doing if you make changes here.
++ */
++
++#define CONFIG_SYS_CLK_FREQ 33333333 /* external frequency to pll */
++
++#define CFG_ROMNAL 7 /*rom/flash next access time */
++#define CFG_ROMFAL 11 /*rom/flash access time */
++
++#define CFG_REFINT 430 /* no of clock cycles between CBR refresh cycles */
++
++/* the following are for SDRAM only*/
++#define CFG_BSTOPRE 121 /* Burst To Precharge, sets open page interval */
++#define CFG_REFREC 8 /* Refresh to activate interval */
++#define CFG_RDLAT 4 /* data latency from read command */
++#define CFG_PRETOACT 3 /* Precharge to activate interval */
++#define CFG_ACTTOPRE 5 /* Activate to Precharge interval */
++#define CFG_ACTORW 3 /* Activate to R/W */
++#define CFG_SDMODE_CAS_LAT 3 /* SDMODE CAS latency */
++#define CFG_SDMODE_WRAP 0 /* SDMODE wrap type */
++
++#define CFG_REGISTERD_TYPE_BUFFER 1
++#define CFG_EXTROM 1
++#define CFG_REGDIMM 0
++
++
++/*----------------------------------------------------------------------
++ * memory bank settings
++ *
++ * only bits 20-29 are actually used from these vales to set the
++ * start/end address the upper two bits will be 0, and the lower 20
++ * bits will be set to 0x00000 for a start address, or 0xfffff for an
++ * end address
++ */
++
++#define CFG_BANK0_START 0x00000000
++#define CFG_BANK0_END (CFG_MAX_RAM_SIZE - 1)
++#define CFG_BANK0_ENABLE 1
++#define CFG_BANK1_START 0x3ff00000
++#define CFG_BANK1_END 0x3fffffff
++#define CFG_BANK1_ENABLE 0
++#define CFG_BANK2_START 0x3ff00000
++#define CFG_BANK2_END 0x3fffffff
++#define CFG_BANK2_ENABLE 0
++#define CFG_BANK3_START 0x3ff00000
++#define CFG_BANK3_END 0x3fffffff
++#define CFG_BANK3_ENABLE 0
++#define CFG_BANK4_START 0x00000000
++#define CFG_BANK4_END 0x00000000
++#define CFG_BANK4_ENABLE 0
++#define CFG_BANK5_START 0x00000000
++#define CFG_BANK5_END 0x00000000
++#define CFG_BANK5_ENABLE 0
++#define CFG_BANK6_START 0x00000000
++#define CFG_BANK6_END 0x00000000
++#define CFG_BANK6_ENABLE 0
++#define CFG_BANK7_START 0x00000000
++#define CFG_BANK7_END 0x00000000
++#define CFG_BANK7_ENABLE 0
++
++
++/*
++ * Memory bank enable bitmask, specifying which of the banks defined above
++ are actually present. MSB is for bank #7, LSB is for bank #0.
++ */
++#define CFG_BANK_ENABLE 0x01
++
++#define CFG_ODCR 0xff /* configures line driver impedances, */
++ /* see 8240 book for bit definitions */
++#define CFG_PGMAX 0x32 /* how long the 8240 retains the */
++ /* currently accessed page in memory */
++ /* see 8240 book for details */
++#define CFG_DBUS_SIZE2 1
++#define CFG_BANK0_ROW 2
++
++
++/*----------------------------------------------------------------------
++ * Initial BAT mappings
++ */
++
++/* SDRAM 0 - 256MB */
++#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
++
++/* stack in DCACHE @ 1GB (no backing mem) */
++#define CFG_IBAT1L (CFG_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
++#define CFG_IBAT1U (CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
++
++/* PCI memory */
++#define CFG_IBAT2L (CFG_PCI_MEM_ADDR | BATL_PP_10 | BATL_CACHEINHIBIT)
++#define CFG_IBAT2U (CFG_PCI_MEM_ADDR | BATU_BL_256M | BATU_VS | BATU_VP)
++
++/* Flash, config addrs, etc */
++#define CFG_IBAT3L (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
++#define CFG_IBAT3U (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
++
++#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
++
++/*
++ * 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_CACHELINE_SIZE 32 /* For MPC8240 CPU */
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++# define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */
++#endif
++
++
++/*-----------------------------------------------------------------------
++ * Internal Definitions
++ *
++ * Boot Flags
++ */
++#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
++#define BOOTFLAG_WARM 0x02 /* Software reboot */
++
++/* pass open firmware flat tree */
++#define CONFIG_OF_FLAT_TREE 1
++
++/* maximum size of the flat tree (8K) */
++#define OF_FLAT_TREE_MAX_SIZE 8192
++
++#define OF_CPU "PowerPC,603e"
++#define OF_STDOUT_PATH "/soc10x/serial@fc004500"
++
++#endif /* __CONFIG_H */
++
+--- u-boot-1.2.0.vanilla/Makefile 2007-01-07 00:13:11.000000000 +0100
++++ u-boot-1.2.0/Makefile 2007-02-26 01:55:37.000000000 +0100
+@@ -1296,6 +1296,9 @@
+ PN62_config: unconfig
+ @$(MKCONFIG) $(@:_config=) ppc mpc824x pn62
+
++qnap_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc824x qnap
++
+ Sandpoint8240_config: unconfig
+ @$(MKCONFIG) $(@:_config=) ppc mpc824x sandpoint
+
diff --git a/packages/uboot/u-boot-LABEL.2006.06.30.2020/nohelloworld.patch b/packages/uboot/u-boot-LABEL.2006.06.30.2020/nohelloworld.patch
deleted file mode 100644
index d98cefe28e..0000000000
--- a/packages/uboot/u-boot-LABEL.2006.06.30.2020/nohelloworld.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Index: git/examples/Makefile
-===================================================================
---- git.orig/examples/Makefile 2006-10-20 09:53:20.000000000 +0200
-+++ git/examples/Makefile 2006-10-20 10:17:55.658554000 +0200
-@@ -59,9 +59,6 @@
-
- include $(TOPDIR)/config.mk
-
--SREC = hello_world.srec
--BIN = hello_world.bin hello_world
--
- ifeq ($(CPU),mpc8xx)
- SREC = test_burst.srec
- BIN = test_burst.bin test_burst
diff --git a/packages/uboot/u-boot-mkimage-gta01-native_svn.bb b/packages/uboot/u-boot-mkimage-gta01-native_svn.bb
new file mode 100644
index 0000000000..7c10d653bc
--- /dev/null
+++ b/packages/uboot/u-boot-mkimage-gta01-native_svn.bb
@@ -0,0 +1,18 @@
+require uboot-gta01_svn.bb
+
+PROVIDES = ""
+TARGET_LDFLAGS = ""
+
+do_compile () {
+ chmod +x board/neo1973/gta01/split_by_variant.sh
+ oe_runmake gta01bv3_config
+ oe_runmake clean
+ oe_runmake tools
+}
+
+do_deploy () {
+ install -m 0755 tools/mkimage ${STAGING_BINDIR_NATIVE}/uboot-mkimage
+}
+
+do_deploy[dirs] = "${S}"
+addtask deploy before do_package after do_install
diff --git a/packages/uboot/u-boot.inc b/packages/uboot/u-boot.inc
new file mode 100644
index 0000000000..d9b2f7b7c9
--- /dev/null
+++ b/packages/uboot/u-boot.inc
@@ -0,0 +1,31 @@
+DESCRIPTION = "U-boot bootloader"
+HOMEPAGE = "http://u-boot.sf.net"
+SECTION = "bootloaders"
+PRIORITY = "optional"
+LICENSE = "GPL"
+PROVIDES = "virtual/bootloader"
+
+EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
+
+UBOOT_MACHINE ?= "${MACHINE}_config"
+UBOOT_IMAGE = "u-boot-${MACHINE}-${PV}-${PR}.bin"
+
+do_compile () {
+ unset LDFLAGS
+ unset CFLAGS
+ unset CPPFLAGS
+ oe_runmake ${UBOOT_MACHINE}
+ oe_runmake all
+}
+
+do_deploy () {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install ${S}/u-boot.bin ${DEPLOY_DIR_IMAGE}/${UBOOT_IMAGE}
+}
+do_deploy[dirs] = "${S}"
+addtask deploy before do_build after do_compile
+
+do_stage() {
+ install -d ${STAGING_BINDIR_NATIVE}
+ install -m755 tools/mkimage ${STAGING_BINDIR_NATIVE}/
+}
diff --git a/packages/uboot/u-boot_1.1.2.bb b/packages/uboot/u-boot_1.1.2.bb
index 6b87cf9c05..da8da74ad5 100644
--- a/packages/uboot/u-boot_1.1.2.bb
+++ b/packages/uboot/u-boot_1.1.2.bb
@@ -1,8 +1,5 @@
-DESCRIPTION = "U-boot bootloader"
-PROVIDES = "virtual/bootloader"
-SECTION = "bootloader"
-PRIORITY = "optional"
-LICENSE = "GPL"
+PR = "r1"
+require u-boot.inc
SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.bz2 \
file://arm_flags.patch;patch=1 "
@@ -11,15 +8,16 @@ SRC_URI_append_mnci = "file://mnci.patch;patch=1 \
file://mnci-jffs2.patch;patch=1 \
file://cmd-arm-linux.patch;patch=1 \
file://command-names.patch;patch=1"
+
+SRC_URI_append_magicbox = "file://u-boot-emetec.patch;patch=1 "
+
# TODO: SRC_URI_append_rt3000
-EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
TARGET_LDFLAGS = ""
-UBOOT_MACHINE ?= "${MACHINE}_config"
UBOOT_MACHINE_mnci = "mnci_config"
UBOOT_MACHINE_vibren = "pxa255_idp_config"
-UBOOT_IMAGE = "u-boot-${MACHINE}-${PV}-${PR}.bin"
+UBOOT_MACHINE_magicbox = "EMETEC405_config"
inherit base
@@ -28,18 +26,6 @@ do_compile () {
oe_runmake all
}
-do_stage() {
- install -m755 tools/mkimage ${STAGING_BINDIR_NATIVE}
-}
-
-do_deploy () {
- install -d ${DEPLOY_DIR_IMAGE}
- install ${S}/u-boot.bin ${DEPLOY_DIR_IMAGE}/${UBOOT_IMAGE}
-}
-do_deploy[dirs] = "${S}"
-addtask deploy before do_build after do_compile
-
-
#########################################################
RDEPENDS_append_mnci = " hwctrl"
diff --git a/packages/uboot/u-boot_1.1.4.bb b/packages/uboot/u-boot_1.1.4.bb
index ca6baece4c..5c158f2401 100644
--- a/packages/uboot/u-boot_1.1.4.bb
+++ b/packages/uboot/u-boot_1.1.4.bb
@@ -1,8 +1,4 @@
-DESCRIPTION = "U-boot bootloader"
-PROVIDES = "virtual/bootloader"
-SECTION = "bootloader"
-PRIORITY = "optional"
-LICENSE = "GPL"
+require u-boot.inc
DEFAULT_PREFERENCE = "-1"
@@ -30,13 +26,9 @@ SRC_URI_append_dht-walnut= "\
file://u-boot-dht-walnut-df2.patch;patch=1"
-EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
EXTRA_OEMAKE_gumstix = "CROSS_COMPILE=${TARGET_PREFIX} GUMSTIX_400MHZ=${GUMSTIX_400MHZ}"
TARGET_LDFLAGS = ""
-UBOOT_MACHINE ?= "${MACHINE}_config"
-UBOOT_IMAGE = "u-boot-${MACHINE}-${PV}-${PR}.bin"
-
UBOOT_MACHINE_dht-walnut = "walnut_config"
def gumstix_mhz(d):
@@ -55,14 +47,3 @@ do_compile () {
oe_runmake ${UBOOT_MACHINE}
oe_runmake all
}
-
-do_stage() {
- install -m755 tools/mkimage ${STAGING_BINDIR_NATIVE}
-}
-
-do_deploy () {
- install -d ${DEPLOY_DIR_IMAGE}
- install ${S}/u-boot.bin ${DEPLOY_DIR_IMAGE}/${UBOOT_IMAGE}
-}
-do_deploy[dirs] = "${S}"
-addtask deploy before do_build after do_compile
diff --git a/packages/uboot/u-boot_1.1.6.bb b/packages/uboot/u-boot_1.1.6.bb
new file mode 100644
index 0000000000..7bd09c6f35
--- /dev/null
+++ b/packages/uboot/u-boot_1.1.6.bb
@@ -0,0 +1,8 @@
+require u-boot.inc
+
+PR = "r1"
+
+SRC_URI = "ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.6.tar.bz2 \
+ file://devkit-idp.patch;patch=1"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/packages/uboot/u-boot_1.2.0.bb b/packages/uboot/u-boot_1.2.0.bb
new file mode 100644
index 0000000000..f1075bb00b
--- /dev/null
+++ b/packages/uboot/u-boot_1.2.0.bb
@@ -0,0 +1,25 @@
+require u-boot.inc
+
+PR = "r2"
+
+SRC_URI = "ftp://ftp.denx.de/pub/u-boot/u-boot-1.2.0.tar.bz2 \
+ "
+SRC_URI_append_turbostation = "file://qnap.diff;patch=1"
+
+SRC_URI_append_lsppchg = "file://u-boot-kurobox.patch;patch=1 \
+ file://u-boot-kurobox-fdt.patch;patch=1 \
+ file://defconfig_lsppchg"
+
+SRC_URI_append_lsppchd = "file://u-boot-kurobox.patch;patch=1 \
+ file://u-boot-kurobox-fdt.patch;patch=1 \
+ file://defconfig_lsppchg"
+
+do_compile_prepend_lsppchg () {
+ cp ${WORKDIR}/defconfig_lsppchg ${S}/include/configs/linkstation.h
+}
+
+do_compile_prepend_lsppchd () {
+ cp ${WORKDIR}/defconfig_lsppchd ${S}/include/configs/linkstation.h
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/packages/uboot/u-boot_LABEL.2006.06.30.2020.bb b/packages/uboot/u-boot_LABEL.2006.06.30.2020.bb
deleted file mode 100644
index 361d9c876b..0000000000
--- a/packages/uboot/u-boot_LABEL.2006.06.30.2020.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-DESCRIPTION = "U-boot bootloader"
-PROVIDES = "virtual/bootloader"
-SECTION = "bootloader"
-PRIORITY = "optional"
-LICENSE = "GPL"
-
-PR = "r2"
-
-TAG = "${@bb.data.getVar('PV',d,1).replace('.', '_')}"
-
-SRC_URI = "git://www.denx.de/git/u-boot.git;protocol=git;tag=${TAG} \
- file://nohelloworld.patch;patch=1"
-# file://config.patch;patch=1"
-
-SRC_URI_append_navman-icn330 = " http://www.duff.dk/navman/navman-u-boot-2006-30-2020.patch;patch=1"
-
-S = "${WORKDIR}/git"
-
-#EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX} CFLAGS="" CPPFLAGS="" LDFLAGS="""
-EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
-
-UBOOT_MACHINE ?= "${MACHINE}_config"
-UBOOT_IMAGE = "u-boot-${MACHINE}-${PV}-${PR}.bin"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-#inherit base
-
-do_compile () {
- unset LDFLAGS
- unset CFLAGS
- unset CPPFLAGS
- oe_runmake ${UBOOT_MACHINE}
- oe_runmake all
-}
-
-do_stage() {
- install -m755 tools/mkimage ${STAGING_BINDIR_NATIVE}
-}
-
-do_deploy () {
- install -d ${DEPLOY_DIR_IMAGE}
- install ${S}/u-boot.bin ${DEPLOY_DIR_IMAGE}/${UBOOT_IMAGE}
-}
-do_deploy[dirs] = "${S}"
-addtask deploy before do_build after do_compile
diff --git a/packages/uboot/u-boot_git.bb b/packages/uboot/u-boot_git.bb
new file mode 100644
index 0000000000..9362b62041
--- /dev/null
+++ b/packages/uboot/u-boot_git.bb
@@ -0,0 +1,11 @@
+require u-boot.inc
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "git://www.denx.de/git/u-boot.git;protocol=git "
+
+S = "${WORKDIR}/git"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+#inherit base
diff --git a/packages/uboot/uboot-devkitidp-pxa255_cvs.bb b/packages/uboot/uboot-devkitidp-pxa255_cvs.bb
deleted file mode 100644
index a41d5d7082..0000000000
--- a/packages/uboot/uboot-devkitidp-pxa255_cvs.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require uboot_cvs.bb
-
-UBOOT_MACHINE = "pxa255_idp_config"
-SRC_URI += "ftp://ftp.accelent.com/pxa255_idp/uboot/u-boot-1.1.2-cvs20050818-r2-pxa255idp1.patch;patch=1"
diff --git a/packages/uboot/uboot-gta01_svn.bb b/packages/uboot/uboot-gta01_svn.bb
new file mode 100644
index 0000000000..d026efccc1
--- /dev/null
+++ b/packages/uboot/uboot-gta01_svn.bb
@@ -0,0 +1,58 @@
+DESCRIPTION = "U-boot bootloader w/ Neo1973 (GTA01) support"
+AUTHOR = "Harald Welte <laforge@openmoko.org>"
+LICENSE = "GPL"
+SECTION = "bootloader"
+PRIORITY = "optional"
+PV = "1.2.0+svn${SRCDATE}"
+PR = "r3"
+
+PROVIDES = "virtual/bootloader"
+S = "${WORKDIR}/git"
+
+SRC_URI = "git://www.denx.de/git/u-boot.git/;protocol=git \
+ svn://svn.openmoko.org/trunk/src/target/u-boot;module=patches;proto=http \
+ file://fix-arm920t-eabi.patch;patch=1"
+
+EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
+TARGET_LDFLAGS = ""
+UBOOT_MACHINES = "gta01v3 gta01v4 gta01bv2 gta01bv3"
+
+do_quilt() {
+ mv ${WORKDIR}/patches ${S}/patches
+ cd ${S}
+ quilt push -av
+ rm -Rf patches .pc
+}
+
+do_compile () {
+ chmod +x board/neo1973/split_by_variant.sh
+ for type in ram nand
+ do
+ for mach in ${UBOOT_MACHINES}
+ do
+ oe_runmake ${mach}_config
+ oe_runmake clean
+ if [ ${type} == "ram" ]; then
+ echo 'PLATFORM_RELFLAGS += -DBUILD_FOR_RAM' >> board/neo1973/config.tmp
+ fi
+ oe_runmake all
+ mv u-boot.bin u-boot_${mach}_${type}.bin
+ done
+ done
+}
+
+do_deploy () {
+ install -d ${DEPLOY_DIR_IMAGE}
+ for type in nand ram
+ do
+ for mach in ${UBOOT_MACHINES}
+ do
+ install ${S}/u-boot_${mach}_${type}.bin ${DEPLOY_DIR_IMAGE}/u-boot_${type}-${mach}-${DATETIME}.bin
+ done
+ done
+ install -m 0755 tools/mkimage ${STAGING_BINDIR_NATIVE}/uboot-mkimage
+}
+
+do_deploy[dirs] = "${S}"
+addtask deploy before do_build after do_compile
+addtask quilt before do_patch after do_unpack
diff --git a/packages/uboot/uboot-qt2410_0.0+cvs20061030.bb b/packages/uboot/uboot-qt2410_0.0+cvs20061030.bb
new file mode 100644
index 0000000000..102030f147
--- /dev/null
+++ b/packages/uboot/uboot-qt2410_0.0+cvs20061030.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "U-boot bootloader w/ armzone qt2410 support"
+SECTION = "bootloader"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCDATE := "${PV}"
+PR = "r0"
+
+PROVIDES = "virtual/bootloader"
+S = "${WORKDIR}/git"
+
+SRC_URI = "git://www.denx.de/git/u-boot.git/;protocol=git \
+ file://u-boot-20061030-qt2410-gta01.patch;patch=1 \
+ file://qt2410_*.h"
+
+EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
+TARGET_LDFLAGS = ""
+UBOOT_MACHINE = "qt2410_config"
+
+inherit base
+
+do_compile () {
+ for type in nand ram
+ do
+ install -m 0644 ${WORKDIR}/qt2410_${type}.h include/configs/qt2410.h
+ oe_runmake ${UBOOT_MACHINE}
+ oe_runmake all
+ mv u-boot.bin u-boot_$type.bin
+ done
+}
+
+do_deploy () {
+ install -d ${DEPLOY_DIR_IMAGE}
+ for type in nand ram
+ do
+ install ${S}/u-boot_$type.bin ${DEPLOY_DIR_IMAGE}/u-boot_$type-${MACHINE}-${DATETIME}.bin
+ done
+ install -m 0755 tools/mkimage ${STAGING_BINDIR}/uboot-mkimage
+}
+
+do_deploy[dirs] = "${S}"
+addtask deploy before do_build after do_compile
diff --git a/packages/uboot/uboot-utils_1.2.0.bb b/packages/uboot/uboot-utils_1.2.0.bb
new file mode 100644
index 0000000000..8a5d7dce3c
--- /dev/null
+++ b/packages/uboot/uboot-utils_1.2.0.bb
@@ -0,0 +1,43 @@
+DESCRIPTION = "U-boot bootloader OS env. access tools for PPC"
+SECTION = "bootloaders"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "mtd-utils"
+PR = "r5"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/u-boot/u-boot-${PV}.tar.bz2 \
+ file://fw_env.c.patch;patch=1 \
+ file://tools-Makefile.patch;patch=1 \
+ file://env-Makefile.patch;patch=1 \
+ file://fw_env.config"
+
+S = "${WORKDIR}/u-boot-${PV}"
+EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
+TARGET_LDFLAGS = ""
+
+UBOOT_MACHINE ?= "${MACHINE}_config"
+
+inherit base
+
+do_configure() {
+ :
+}
+
+do_compile () {
+ oe_runmake Sandpoint8240_config
+ oe_runmake tools
+}
+
+# install mkimage for the kernel makefile
+do_stage() {
+ install -d ${STAGING_BINDIR_NATIVE}
+ install -m 755 ${S}/tools/mkimage ${STAGING_BINDIR_NATIVE}/
+}
+
+do_install () {
+ install -d ${D}/sbin
+ install -d ${D}${sysconfdir}
+ install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config
+ install -m 755 ${S}/tools/env/fw_printenv ${D}/sbin/fw_printenv
+ install -m 755 ${S}/tools/env/fw_printenv ${D}/sbin/fw_setenv
+}
diff --git a/packages/uboot/uboot_cvs.bb b/packages/uboot/uboot_cvs.bb
deleted file mode 100644
index 617babcf4a..0000000000
--- a/packages/uboot/uboot_cvs.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-DESCRIPTION = "U-boot bootloader"
-SECTION = "bootloader"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PV = "0.0+cvs${SRCDATE}"
-PR = "r2"
-
-PROVIDES = "virtual/bootloader"
-
-S = "${WORKDIR}/u-boot"
-
-SRC_URI = "cvs://anonymous@u-boot.cvs.sourceforge.net/cvsroot/u-boot;module=u-boot \
- file://arm_flags.patch;patch=1"
-
-EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
-TARGET_LDFLAGS = ""
-UBOOT_MACHINE ?= "${MACHINE}"
-
-inherit base
-
-do_compile () {
- oe_runmake ${UBOOT_MACHINE}
- oe_runmake all
-}
-
-do_deploy () {
- install -d ${DEPLOY_DIR_IMAGE}
- install ${S}/u-boot.bin ${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}-${DATETIME}.bin
-}
-do_deploy[dirs] = "${S}"
-addtask deploy before do_build after do_compile
diff --git a/packages/uclibc/uclibc-0.9.28/i486/.mtn2git_empty b/packages/uclibc/uclibc-0.9.28/i486/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/i486/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-0.9.28/i486/uClibc.config b/packages/uclibc/uclibc-0.9.28/i486/uClibc.config
new file mode 100644
index 0000000000..1c21623b57
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/i486/uClibc.config
@@ -0,0 +1,177 @@
+#
+# Automatically generated make config: don't edit
+#
+# 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_i386=y
+# TARGET_i960 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_x86_64 is not set
+
+#
+# Target Architecture Features and Options
+#
+HAVE_ELF=y
+ARCH_SUPPORTS_LITTLE_ENDIAN=y
+TARGET_ARCH="i486"
+# CONFIG_GENERIC_386 is not set
+# 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=y
+# 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
+ARCH_LITTLE_ENDIAN=y
+# ARCH_BIG_ENDIAN is not set
+# ARCH_HAS_NO_MMU is not set
+ARCH_HAS_MMU=y
+UCLIBC_HAS_FLOATS=y
+HAS_FPU=y
+DO_C99_MATH=y
+KERNEL_SOURCE="/home/kergoth/code/user/oe/build-colinux/tmp/cross/i686-linux-uclibc/include"
+C_SYMBOL_PREFIX=""
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+# HAVE_NO_PIC is not set
+DOPIC=y
+# HAVE_NO_SHARED is not set
+HAVE_SHARED=y
+# ARCH_HAS_NO_LDSO is not set
+BUILD_UCLIBC_LDSO=y
+# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
+LDSO_LDD_SUPPORT=y
+LDSO_CACHE_SUPPORT=y
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_BASE_FILENAME="ld.so"
+LDSO_RUNPATH=y
+# DL_FINI_CRT_COMPAT is not set
+UCLIBC_CTOR_DTOR=y
+# HAS_NO_THREADS is not set
+UCLIBC_HAS_THREADS=y
+PTHREADS_DEBUG_SUPPORT=y
+UCLIBC_HAS_LFS=y
+# UCLIBC_STATIC_LDCONFIG is not set
+# MALLOC is not set
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+MALLOC_GLIBC_COMPAT=y
+UCLIBC_DYNAMIC_ATEXIT=y
+HAS_SHADOW=y
+UNIX98PTY_ONLY=y
+ASSUME_DEVPTS=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+
+#
+# Networking Support
+#
+UCLIBC_HAS_IPV6=y
+UCLIBC_HAS_RPC=y
+UCLIBC_HAS_FULL_RPC=y
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+UCLIBC_HAS_LOCALE=y
+UCLIBC_PREGENERATED_LOCALE_DATA=y
+# UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA is not set
+UCLIBC_HAS_XLOCALE=y
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_DIGIT_GROUPING=y
+UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+UCLIBC_HAS_STDIO_BUFSIZ_256=y
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_4096 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_GLOB=y
+
+#
+# Library Installation Options
+#
+SHARED_LIB_LOADER_PREFIX="$(DEVEL_PREFIX)/lib"
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="//usr"
+
+#
+# uClibc security related options
+#
+# UCLIBC_SECURITY is not set
+
+#
+# uClibc development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+# DODEBUG is not set
+# DODEBUG_PT is not set
+# DOASSERTS is not set
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+WARNINGS="-Wall"
+# UCLIBC_MJN3_ONLY is not set
diff --git a/packages/uclibc/uclibc-0.9.28/i586/.mtn2git_empty b/packages/uclibc/uclibc-0.9.28/i586/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/i586/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-0.9.28/i586/uClibc.config b/packages/uclibc/uclibc-0.9.28/i586/uClibc.config
new file mode 100644
index 0000000000..930e84521a
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/i586/uClibc.config
@@ -0,0 +1,172 @@
+#
+# Automatically generated make config: don't edit
+#
+# 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_i386=y
+# TARGET_i960 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_x86_64 is not set
+
+#
+# Target Architecture Features and Options
+#
+HAVE_ELF=y
+ARCH_SUPPORTS_LITTLE_ENDIAN=y
+TARGET_ARCH="i386"
+# CONFIG_GENERIC_386 is not set
+# 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=y
+# 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
+ARCH_LITTLE_ENDIAN=y
+# ARCH_BIG_ENDIAN is not set
+# ARCH_HAS_NO_MMU is not set
+ARCH_HAS_MMU=y
+UCLIBC_HAS_FLOATS=y
+HAS_FPU=y
+DO_C99_MATH=y
+KERNEL_SOURCE="/work/oplinux-0.2/tmp/uclibc/cross/i586-linux-uclibc"
+C_SYMBOL_PREFIX=""
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+# HAVE_NO_PIC is not set
+DOPIC=y
+# HAVE_NO_SHARED is not set
+HAVE_SHARED=y
+# ARCH_HAS_NO_LDSO is not set
+BUILD_UCLIBC_LDSO=y
+# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
+LDSO_LDD_SUPPORT=y
+LDSO_CACHE_SUPPORT=y
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_BASE_FILENAME="ld.so"
+LDSO_RUNPATH=y
+# DL_FINI_CRT_COMPAT is not set
+UCLIBC_CTOR_DTOR=y
+# HAS_NO_THREADS is not set
+UCLIBC_HAS_THREADS=y
+PTHREADS_DEBUG_SUPPORT=y
+UCLIBC_HAS_LFS=y
+# UCLIBC_STATIC_LDCONFIG is not set
+# MALLOC is not set
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+MALLOC_GLIBC_COMPAT=y
+UCLIBC_DYNAMIC_ATEXIT=y
+HAS_SHADOW=y
+UNIX98PTY_ONLY=y
+ASSUME_DEVPTS=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+
+#
+# Networking Support
+#
+UCLIBC_HAS_IPV6=y
+UCLIBC_HAS_RPC=y
+UCLIBC_HAS_FULL_RPC=y
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+UCLIBC_HAS_STDIO_BUFSIZ_256=y
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_4096 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_GLOB=y
+
+#
+# Library Installation Options
+#
+SHARED_LIB_LOADER_PREFIX="/lib"
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="//usr"
+
+#
+# uClibc security related options
+#
+# UCLIBC_SECURITY is not set
+
+#
+# uClibc development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+# DODEBUG is not set
+# DODEBUG_PT is not set
+# DOASSERTS is not set
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+WARNINGS="-Wall"
+# UCLIBC_MJN3_ONLY is not set
diff --git a/packages/uclibc/uclibc-0.9.28/powerpc/.mtn2git_empty b/packages/uclibc/uclibc-0.9.28/powerpc/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/powerpc/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-0.9.28/powerpc/uClibc.config b/packages/uclibc/uclibc-0.9.28/powerpc/uClibc.config
new file mode 100644
index 0000000000..8a12c10961
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/powerpc/uClibc.config
@@ -0,0 +1,180 @@
+#
+# Automatically generated make config: don't edit
+# Tue Feb 6 19:17:06 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 is not set
+# 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=y
+# 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="powerpc"
+FORCE_OPTIONS_FOR_ARCH=y
+ARCH_BIG_ENDIAN=y
+
+#
+# Using Big Endian
+#
+ARCH_HAS_MMU=y
+ARCH_USE_MMU=y
+UCLIBC_HAS_FLOATS=y
+UCLIBC_HAS_FPU=y
+DO_C99_MATH=y
+KERNEL_SOURCE="/proj/oplinux-0.2/op-linux/branches/oplinux-0.2/efika/build/tmp/cross/powerpc-linux-uclibc"
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+# HAVE_NO_PIC is not set
+DOPIC=y
+# HAVE_NO_SHARED is not set
+# ARCH_HAS_NO_LDSO is not set
+HAVE_SHARED=y
+# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
+LDSO_LDD_SUPPORT=y
+LDSO_CACHE_SUPPORT=y
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_BASE_FILENAME="ld.so"
+# UCLIBC_STATIC_LDCONFIG is not set
+LDSO_RUNPATH=y
+UCLIBC_CTOR_DTOR=y
+# HAS_NO_THREADS is not set
+UCLIBC_HAS_THREADS=y
+PTHREADS_DEBUG_SUPPORT=y
+LINUXTHREADS_OLD=y
+UCLIBC_HAS_LFS=y
+# MALLOC is not set
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+MALLOC_GLIBC_COMPAT=y
+UCLIBC_DYNAMIC_ATEXIT=y
+COMPAT_ATEXIT=y
+# UCLIBC_SUSV3_LEGACY is not set
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS___PROGNAME=y
+UNIX98PTY_ONLY=y
+ASSUME_DEVPTS=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+
+#
+# Networking Support
+#
+UCLIBC_HAS_IPV6=y
+UCLIBC_HAS_RPC=y
+UCLIBC_HAS_FULL_RPC=y
+UCLIBC_HAS_REENTRANT_RPC=y
+UCLIBC_USE_NETLINK=y
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+UCLIBC_HAS_STDIO_BUFSIZ_256=y
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_4096 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_REGEX_OLD=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_FNMATCH_OLD=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_GLOB=y
+# UCLIBC_HAS_GNU_GLOB is not set
+
+#
+# Library Installation Options
+#
+SHARED_LIB_LOADER_PREFIX="/lib"
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="//usr"
+
+#
+# Security options
+#
+# UCLIBC_BUILD_PIE is not set
+# UCLIBC_HAS_ARC4RANDOM is not set
+# HAVE_NO_SSP is not set
+# UCLIBC_HAS_SSP is not set
+UCLIBC_BUILD_RELRO=y
+# UCLIBC_BUILD_NOW is not set
+UCLIBC_BUILD_NOEXECSTACK=y
+
+#
+# uClibc development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+# DODEBUG is not set
+# DODEBUG_PT is not set
+DOSTRIP=y
+# DOASSERTS is not set
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+# UCLIBC_MALLOC_DEBUGGING is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
+# DOMULTI is not set
+# UCLIBC_MJN3_ONLY is not set
diff --git a/packages/uclibc/uclibc-cvs/i486/.mtn2git_empty b/packages/uclibc/uclibc-cvs/i486/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-cvs/i486/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-cvs/i486/uClibc.config b/packages/uclibc/uclibc-cvs/i486/uClibc.config
new file mode 100644
index 0000000000..896d65ab20
--- /dev/null
+++ b/packages/uclibc/uclibc-cvs/i486/uClibc.config
@@ -0,0 +1,197 @@
+#
+# Automatically generated make config: don't edit
+# Fri Dec 22 23:09:11 2006
+#
+# 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 is not set
+# CONFIG_386 is not set
+CONFIG_486=y
+# 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
+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_SOURCE="/usr/src/oplinux/oplinux-0.2/dht/build/tmp/cross/i486-linux-uclibc"
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+# HAVE_NO_PIC is not set
+DOPIC=y
+# HAVE_NO_SHARED is not set
+# ARCH_HAS_NO_LDSO is not set
+HAVE_SHARED=y
+# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
+LDSO_LDD_SUPPORT=y
+LDSO_CACHE_SUPPORT=y
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_BASE_FILENAME="ld.so"
+# UCLIBC_STATIC_LDCONFIG is not set
+LDSO_RUNPATH=y
+UCLIBC_CTOR_DTOR=y
+# HAS_NO_THREADS is not set
+UCLIBC_HAS_THREADS=y
+PTHREADS_DEBUG_SUPPORT=y
+LINUXTHREADS_OLD=y
+UCLIBC_HAS_LFS=y
+# MALLOC is not set
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+MALLOC_GLIBC_COMPAT=y
+UCLIBC_DYNAMIC_ATEXIT=y
+COMPAT_ATEXIT=y
+UCLIBC_SUSV3_LEGACY=y
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS___PROGNAME=y
+UNIX98PTY_ONLY=y
+ASSUME_DEVPTS=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+
+#
+# Networking Support
+#
+UCLIBC_HAS_IPV6=y
+UCLIBC_HAS_RPC=y
+UCLIBC_HAS_FULL_RPC=y
+UCLIBC_HAS_REENTRANT_RPC=y
+UCLIBC_USE_NETLINK=y
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+UCLIBC_HAS_STDIO_BUFSIZ_256=y
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_4096 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_REGEX_OLD=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_FNMATCH_OLD=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_GLOB=y
+# UCLIBC_HAS_GNU_GLOB is not set
+
+#
+# Library Installation Options
+#
+SHARED_LIB_LOADER_PREFIX="/lib"
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="//usr"
+
+#
+# Security options
+#
+# UCLIBC_BUILD_PIE is not set
+# UCLIBC_HAS_ARC4RANDOM is not set
+# HAVE_NO_SSP is not set
+# UCLIBC_HAS_SSP is not set
+UCLIBC_BUILD_RELRO=y
+UCLIBC_BUILD_NOW=y
+UCLIBC_BUILD_NOEXECSTACK=y
+
+#
+# uClibc development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+# DODEBUG is not set
+# DODEBUG_PT is not set
+DOSTRIP=y
+# DOASSERTS is not set
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+# UCLIBC_MALLOC_DEBUGGING is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
+# DOMULTI is not set
+# UCLIBC_MJN3_ONLY is not set
diff --git a/packages/uclibc/uclibc-cvs/i586/.mtn2git_empty b/packages/uclibc/uclibc-cvs/i586/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-cvs/i586/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-cvs/i586/uClibc.config b/packages/uclibc/uclibc-cvs/i586/uClibc.config
new file mode 100644
index 0000000000..d1bf538902
--- /dev/null
+++ b/packages/uclibc/uclibc-cvs/i586/uClibc.config
@@ -0,0 +1,197 @@
+#
+# Automatically generated make config: don't edit
+# Sat Feb 24 08:24:11 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 is not set
+# 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=y
+# 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
+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_SOURCE="/work/oplinux-0.2/tmp/uclibc/cross/i586-linux-uclibc"
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+# HAVE_NO_PIC is not set
+DOPIC=y
+# HAVE_NO_SHARED is not set
+# ARCH_HAS_NO_LDSO is not set
+HAVE_SHARED=y
+# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
+LDSO_LDD_SUPPORT=y
+LDSO_CACHE_SUPPORT=y
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_BASE_FILENAME="ld.so"
+# UCLIBC_STATIC_LDCONFIG is not set
+LDSO_RUNPATH=y
+UCLIBC_CTOR_DTOR=y
+# HAS_NO_THREADS is not set
+UCLIBC_HAS_THREADS=y
+PTHREADS_DEBUG_SUPPORT=y
+LINUXTHREADS_OLD=y
+UCLIBC_HAS_LFS=y
+# MALLOC is not set
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+MALLOC_GLIBC_COMPAT=y
+UCLIBC_DYNAMIC_ATEXIT=y
+COMPAT_ATEXIT=y
+# UCLIBC_SUSV3_LEGACY is not set
+UCLIBC_HAS_SHADOW=y
+# UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set
+UCLIBC_HAS___PROGNAME=y
+UNIX98PTY_ONLY=y
+ASSUME_DEVPTS=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+
+#
+# Networking Support
+#
+UCLIBC_HAS_IPV6=y
+UCLIBC_HAS_RPC=y
+UCLIBC_HAS_FULL_RPC=y
+# UCLIBC_HAS_REENTRANT_RPC is not set
+# UCLIBC_USE_NETLINK is not set
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+UCLIBC_HAS_STDIO_BUFSIZ_256=y
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_4096 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_REGEX_OLD=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_FNMATCH_OLD=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_GLOB=y
+# UCLIBC_HAS_GNU_GLOB is not set
+
+#
+# Library Installation Options
+#
+SHARED_LIB_LOADER_PREFIX="/lib"
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="//usr"
+
+#
+# Security options
+#
+# UCLIBC_BUILD_PIE is not set
+# UCLIBC_HAS_ARC4RANDOM is not set
+# HAVE_NO_SSP is not set
+# UCLIBC_HAS_SSP is not set
+UCLIBC_BUILD_RELRO=y
+UCLIBC_BUILD_NOW=y
+UCLIBC_BUILD_NOEXECSTACK=y
+
+#
+# uClibc development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+# DODEBUG is not set
+# DODEBUG_PT is not set
+DOSTRIP=y
+# DOASSERTS is not set
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+# UCLIBC_MALLOC_DEBUGGING is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
+# DOMULTI is not set
+# UCLIBC_MJN3_ONLY is not set
diff --git a/packages/uclibc/uclibc-cvs/magicbox/.mtn2git_empty b/packages/uclibc/uclibc-cvs/magicbox/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-cvs/magicbox/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-cvs/magicbox/uClibc.config b/packages/uclibc/uclibc-cvs/magicbox/uClibc.config
new file mode 100644
index 0000000000..6542d49fd0
--- /dev/null
+++ b/packages/uclibc/uclibc-cvs/magicbox/uClibc.config
@@ -0,0 +1,181 @@
+#
+# Automatically generated make config: don't edit
+# Thu May 3 00:20:29 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 is not set
+# 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=y
+# 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="powerpc"
+FORCE_OPTIONS_FOR_ARCH=y
+ARCH_BIG_ENDIAN=y
+
+#
+# Using Big Endian
+#
+ARCH_HAS_MMU=y
+ARCH_USE_MMU=y
+UCLIBC_HAS_FLOATS=y
+# UCLIBC_HAS_FPU is not set
+UCLIBC_HAS_SOFT_FLOAT=y
+DO_C99_MATH=y
+KERNEL_SOURCE="/proj/oplinux-0.2/tmp/uclibc/cross/powerpc-linux-uclibc"
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+# HAVE_NO_PIC is not set
+DOPIC=y
+# HAVE_NO_SHARED is not set
+# ARCH_HAS_NO_LDSO is not set
+HAVE_SHARED=y
+# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
+LDSO_LDD_SUPPORT=y
+LDSO_CACHE_SUPPORT=y
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_BASE_FILENAME="ld.so"
+# UCLIBC_STATIC_LDCONFIG is not set
+LDSO_RUNPATH=y
+UCLIBC_CTOR_DTOR=y
+# HAS_NO_THREADS is not set
+UCLIBC_HAS_THREADS=y
+PTHREADS_DEBUG_SUPPORT=y
+LINUXTHREADS_OLD=y
+UCLIBC_HAS_LFS=y
+# MALLOC is not set
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+MALLOC_GLIBC_COMPAT=y
+UCLIBC_DYNAMIC_ATEXIT=y
+COMPAT_ATEXIT=y
+UCLIBC_SUSV3_LEGACY=y
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS___PROGNAME=y
+UNIX98PTY_ONLY=y
+ASSUME_DEVPTS=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+
+#
+# Networking Support
+#
+UCLIBC_HAS_IPV6=y
+UCLIBC_HAS_RPC=y
+UCLIBC_HAS_FULL_RPC=y
+UCLIBC_HAS_REENTRANT_RPC=y
+UCLIBC_USE_NETLINK=y
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+UCLIBC_HAS_STDIO_BUFSIZ_256=y
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_4096 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_REGEX_OLD=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_FNMATCH_OLD=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_GLOB=y
+# UCLIBC_HAS_GNU_GLOB is not set
+
+#
+# Library Installation Options
+#
+SHARED_LIB_LOADER_PREFIX="/lib"
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="//usr"
+
+#
+# Security options
+#
+# UCLIBC_BUILD_PIE is not set
+# UCLIBC_HAS_ARC4RANDOM is not set
+# HAVE_NO_SSP is not set
+# UCLIBC_HAS_SSP is not set
+UCLIBC_BUILD_RELRO=y
+# UCLIBC_BUILD_NOW is not set
+UCLIBC_BUILD_NOEXECSTACK=y
+
+#
+# uClibc development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+# DODEBUG is not set
+# DODEBUG_PT is not set
+DOSTRIP=y
+# DOASSERTS is not set
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+# UCLIBC_MALLOC_DEBUGGING is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
+# DOMULTI is not set
+# UCLIBC_MJN3_ONLY is not set
diff --git a/packages/uclibc/uclibc-cvs/powerpc/.mtn2git_empty b/packages/uclibc/uclibc-cvs/powerpc/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-cvs/powerpc/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-cvs/powerpc/uClibc.config b/packages/uclibc/uclibc-cvs/powerpc/uClibc.config
new file mode 100644
index 0000000000..8a12c10961
--- /dev/null
+++ b/packages/uclibc/uclibc-cvs/powerpc/uClibc.config
@@ -0,0 +1,180 @@
+#
+# Automatically generated make config: don't edit
+# Tue Feb 6 19:17:06 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 is not set
+# 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=y
+# 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="powerpc"
+FORCE_OPTIONS_FOR_ARCH=y
+ARCH_BIG_ENDIAN=y
+
+#
+# Using Big Endian
+#
+ARCH_HAS_MMU=y
+ARCH_USE_MMU=y
+UCLIBC_HAS_FLOATS=y
+UCLIBC_HAS_FPU=y
+DO_C99_MATH=y
+KERNEL_SOURCE="/proj/oplinux-0.2/op-linux/branches/oplinux-0.2/efika/build/tmp/cross/powerpc-linux-uclibc"
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+# HAVE_NO_PIC is not set
+DOPIC=y
+# HAVE_NO_SHARED is not set
+# ARCH_HAS_NO_LDSO is not set
+HAVE_SHARED=y
+# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
+LDSO_LDD_SUPPORT=y
+LDSO_CACHE_SUPPORT=y
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_BASE_FILENAME="ld.so"
+# UCLIBC_STATIC_LDCONFIG is not set
+LDSO_RUNPATH=y
+UCLIBC_CTOR_DTOR=y
+# HAS_NO_THREADS is not set
+UCLIBC_HAS_THREADS=y
+PTHREADS_DEBUG_SUPPORT=y
+LINUXTHREADS_OLD=y
+UCLIBC_HAS_LFS=y
+# MALLOC is not set
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+MALLOC_GLIBC_COMPAT=y
+UCLIBC_DYNAMIC_ATEXIT=y
+COMPAT_ATEXIT=y
+# UCLIBC_SUSV3_LEGACY is not set
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS___PROGNAME=y
+UNIX98PTY_ONLY=y
+ASSUME_DEVPTS=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+
+#
+# Networking Support
+#
+UCLIBC_HAS_IPV6=y
+UCLIBC_HAS_RPC=y
+UCLIBC_HAS_FULL_RPC=y
+UCLIBC_HAS_REENTRANT_RPC=y
+UCLIBC_USE_NETLINK=y
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+UCLIBC_HAS_STDIO_BUFSIZ_256=y
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_4096 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_REGEX_OLD=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_FNMATCH_OLD=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_GLOB=y
+# UCLIBC_HAS_GNU_GLOB is not set
+
+#
+# Library Installation Options
+#
+SHARED_LIB_LOADER_PREFIX="/lib"
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="//usr"
+
+#
+# Security options
+#
+# UCLIBC_BUILD_PIE is not set
+# UCLIBC_HAS_ARC4RANDOM is not set
+# HAVE_NO_SSP is not set
+# UCLIBC_HAS_SSP is not set
+UCLIBC_BUILD_RELRO=y
+# UCLIBC_BUILD_NOW is not set
+UCLIBC_BUILD_NOEXECSTACK=y
+
+#
+# uClibc development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+# DODEBUG is not set
+# DODEBUG_PT is not set
+DOSTRIP=y
+# DOASSERTS is not set
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+# UCLIBC_MALLOC_DEBUGGING is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
+# DOMULTI is not set
+# UCLIBC_MJN3_ONLY is not set
diff --git a/packages/uclibc/uclibc.inc b/packages/uclibc/uclibc.inc
index d81cfc636a..15004c4b9a 100644
--- a/packages/uclibc/uclibc.inc
+++ b/packages/uclibc/uclibc.inc
@@ -72,8 +72,10 @@ EXTRA_OEMAKE_task_do_populate_staging = "${OEMAKE_NO_CC}"
EXTRA_OEMAKE_task_do_package = "${OEMAKE_NO_CC}"
KERNEL_SOURCE = "${CROSS_DIR}/${TARGET_SYS}/include"
+KERNEL_HEADERS = "${CROSS_DIR}/${TARGET_SYS}/include"
configmangle = 's,^KERNEL_SOURCE=.*,KERNEL_SOURCE="${KERNEL_SOURCE}",g; \
+ s,^KERNEL_HEADERS=.*,KERNEL_HEADERS="${KERNEL_HEADERS}",g; \
s,^RUNTIME_PREFIX=.*,RUNTIME_PREFIX="/",g; \
s,^DEVEL_PREFIX=.*,DEVEL_PREFIX="/${prefix}",g; \
s,^SHARED_LIB_LOADER_PATH=.*,SHARED_LIB_LOADER_PATH="/lib",; \
diff --git a/packages/uclibc/uclibc_0.9.28.bb b/packages/uclibc/uclibc_0.9.28.bb
index 807fcb8a67..4cc39fcd07 100644
--- a/packages/uclibc/uclibc_0.9.28.bb
+++ b/packages/uclibc/uclibc_0.9.28.bb
@@ -1,5 +1,5 @@
DEFAULT_PREFERENCE = "1"
-PR = "r7"
+PR = "r9"
require uclibc.inc
diff --git a/packages/uclibc/uclibc_svn.bb b/packages/uclibc/uclibc_svn.bb
index 48b1785a14..86fab657bd 100644
--- a/packages/uclibc/uclibc_svn.bb
+++ b/packages/uclibc/uclibc_svn.bb
@@ -8,7 +8,7 @@
#
UCLIBC_BASE ?= "0.9.28"
PV = "${UCLIBC_BASE}+svn${SRCDATE}"
-PR = "r3"
+PR = "r5"
#DEFAULT_PREFERENCE is 0 (empty), releases have a preference of 1 so take
# precedence.
diff --git a/packages/udev/udev_092.bb b/packages/udev/udev_092.bb
index 92e37de4f7..7f6685d926 100644
--- a/packages/udev/udev_092.bb
+++ b/packages/udev/udev_092.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "udev is a daemon which dynamically creates and removes device nod
the hotplug package and requires a kernel not older than 2.6.12."
RPROVIDES = "hotplug"
-PR = "r15"
+PR = "r16"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
file://noasmlinkage.patch;patch=1 \
@@ -28,7 +28,8 @@ EXTRA_OEMAKE += "libudevdir=/lib/udev libdir=${base_libdir} prefix="
do_install () {
install -d ${D}${usrsbindir} \
- ${D}${sbindir}
+ ${D}${sbindir} \
+ ${D}${sysconfdir}
oe_runmake 'DESTDIR=${D}' INSTALL=install install
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
@@ -68,9 +69,9 @@ pkg_postinst_append() {
if test "$mp" = "/"
then
root_partition="$dev"
- echo "$root_partition" >> /etc/udev/mount.blacklist
+ echo "$root_partition" >> ${sysconfdir}/udev/mount.blacklist
fi
- done < /etc/fstab
+ done < ${sysconfdir}/fstab
}
diff --git a/packages/udev/udev_097.bb b/packages/udev/udev_097.bb
index 84c414fd0d..2af5556dbd 100644
--- a/packages/udev/udev_097.bb
+++ b/packages/udev/udev_097.bb
@@ -8,7 +8,7 @@ used to detect the type of a file system and read its metadata."
DESCRIPTION_libvolume-id-dev = "libvolume_id development headers, \
needed to link programs with libvolume_id."
-PR = "r6"
+PR = "r7"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
file://noasmlinkage.patch;patch=1 \
@@ -30,7 +30,8 @@ EXTRA_OEMAKE += "libudevdir=/lib/udev libdir=${base_libdir} prefix="
do_install () {
install -d ${D}${usrsbindir} \
- ${D}${sbindir}
+ ${D}${sbindir} \
+ ${D}${sysconfdir}
oe_runmake 'DESTDIR=${D}' INSTALL=install install
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
@@ -68,9 +69,9 @@ pkg_postinst_append() {
if test "$mp" = "/"
then
root_partition="$dev"
- echo "$root_partition" >> /etc/udev/mount.blacklist
+ echo "$root_partition" >> ${sysconfdir}/udev/mount.blacklist
fi
- done < /etc/fstab
+ done < ${sysconfdir}/fstab
}
diff --git a/packages/udev/udev_100.bb b/packages/udev/udev_100.bb
index 288157ef3f..bef4cb7301 100644
--- a/packages/udev/udev_100.bb
+++ b/packages/udev/udev_100.bb
@@ -9,7 +9,7 @@ used to detect the type of a file system and read its metadata."
DESCRIPTION_libvolume-id-dev = "libvolume_id development headers, \
needed to link programs with libvolume_id."
-PR = "r5"
+PR = "r6"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
file://noasmlinkage.patch;patch=1 \
@@ -31,7 +31,8 @@ EXTRA_OEMAKE += "libudevdir=/lib/udev libdir=${base_libdir} prefix="
do_install () {
install -d ${D}${usrsbindir} \
- ${D}${sbindir}
+ ${D}${sbindir} \
+ ${D}${sysconfdir}
oe_runmake 'DESTDIR=${D}' INSTALL=install install
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
@@ -69,9 +70,9 @@ pkg_postinst_append() {
if test "$mp" = "/"
then
root_partition="$dev"
- echo "$root_partition" >> /etc/udev/mount.blacklist
+ echo "$root_partition" >> ${sysconfdir}/udev/mount.blacklist
fi
- done < /etc/fstab
+ done < ${sysconfdir}/fstab
}
diff --git a/packages/uicmoc/uicmoc4-native-4.2.3/.mtn2git_empty b/packages/uicmoc/uicmoc4-native-4.2.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uicmoc/uicmoc4-native-4.2.3/.mtn2git_empty
diff --git a/packages/uicmoc/uicmoc4-native-4.1.1/fix-mkspecs.patch b/packages/uicmoc/uicmoc4-native-4.2.3/fix-mkspecs.patch
index 491edde370..491edde370 100644
--- a/packages/uicmoc/uicmoc4-native-4.1.1/fix-mkspecs.patch
+++ b/packages/uicmoc/uicmoc4-native-4.2.3/fix-mkspecs.patch
diff --git a/packages/uicmoc/uicmoc4-native_4.1.1.bb b/packages/uicmoc/uicmoc4-native_4.1.1.bb
deleted file mode 100644
index 59bdd1bc40..0000000000
--- a/packages/uicmoc/uicmoc4-native_4.1.1.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-DESCRIPTION = "User-Interface-, Meta-Object-, and Resource Compiler for Qt/[X11|Mac|Embedded] version 4.x"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "GPL QPL"
-PR = "r0"
-
-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.2.3.bb b/packages/uicmoc/uicmoc4-native_4.2.3.bb
new file mode 100644
index 0000000000..341b092e29
--- /dev/null
+++ b/packages/uicmoc/uicmoc4-native_4.2.3.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "User-Interface-, Meta-Object-, and Resource Compiler for Qt/[X11|Mac|Embedded] version 4.x"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPL QPL"
+
+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/uim/uim-native_1.2.1.bb b/packages/uim/uim-native_1.3.1.bb
index 5249ac6394..5249ac6394 100644
--- a/packages/uim/uim-native_1.2.1.bb
+++ b/packages/uim/uim-native_1.3.1.bb
diff --git a/packages/uim/uim.inc b/packages/uim/uim.inc
index a4b0215896..94eb11d332 100644
--- a/packages/uim/uim.inc
+++ b/packages/uim/uim.inc
@@ -1,12 +1,11 @@
DESCRIPTION = "A multilingual user input method library"
HOMEPAGE = "http://uim.freedesktop.org/"
LICENSE = "GPL"
-SECTION = "libs/inputmethod"
-PR = "r0"
+SECTION = "inputmethods"
EXTRA_OECONF += "--disable-applet \
--disable-emacs \
- --without-qt \
+# --without-qt \
--without-scim \
--without-m17nlib \
--without-prime \
@@ -14,6 +13,4 @@ EXTRA_OECONF += "--disable-applet \
--without-mana \
--without-eb"
-SRC_URI = "http://uim.freedesktop.org/releases/uim-${PV}.tar.bz2"
-
-S = "${WORKDIR}/uim-${PV}"
+SRC_URI = "http://uim.freedesktop.org/releases/uim/stable/uim-${PV}.tar.bz2"
diff --git a/packages/uim/uim_1.2.1.bb b/packages/uim/uim_1.2.1.bb
deleted file mode 100644
index 5d82945df7..0000000000
--- a/packages/uim/uim_1.2.1.bb
+++ /dev/null
@@ -1,142 +0,0 @@
-require uim.inc
-DEPENDS = "gtk+ uim-native anthy fontconfig libxft xt glib-2.0 ncurses"
-
-SRC_URI += "file://uim-module-manager.patch;patch=1"
-
-S = "${WORKDIR}/uim-${PV}"
-
-do_stage() {
- autotools_stage_all
-}
-
-inherit autotools pkgconfig
-
-PACKAGES = "uim-xim uim-utils uim-skk uim-gtk2.0 uim-fep uim-common uim-anthy libuim0 libuim-dev"
-
-LEAD_SONAME = "libuim.so.1"
-RDEPENDS_uim = "libuim0"
-
-DESCRIPTION_libuim-dev = "Development files for uim"
-FILES_libuim-dev = "${libdir}/libuim*.a \
- ${libdir}/libuim*.la \
- ${libdir}/libuim*.so \
- ${includedir}/uim \
- ${libdir}/pkgconfig/uim.pc"
-
-DESCRIPTION_libuim0 = "Simple and flexible input method collection and library"
-FILES_libuim0 = "${libdir}/uim/plugin/libuim-custom-enabler.* \
- ${libdir}/libuim-custom.so.* \
- ${datadir}/locale/ja/LC_MESSAGES/uim.mo \
- ${datadir}/locale/fr/LC_MESSAGES/uim.mo \
- ${datadir}/locale/ko/LC_MESSAGES/uim.mo \
- ${libdir}/libuim.so.*"
-
-DESCRIPTION_uim-anthy = "Anthy plugin for uim"
-FILES_uim-anthy = "${libdir}/uim/plugin/libuim-anthy.* \
- ${datadir}/uim/anthy*.scm"
-
-pkg_postinst_uim-anthy() {
-#! /bin/sh
-set -e
-if [ -f /usr/bin/uim-module-manager ]; then
- /usr/bin/uim-module-manager --register anthy --path /etc/uim
-fi
-}
-
-pkg_postrm_uim-anthy() {
-#! /bin/sh
-set -e
-if [ -f /usr/bin/uim-module-manager ]; then
- /usr/bin/uim-module-manager --path /etc/uim --unregister anthy
-fi
-}
-
-pkg_prerm_uim-anthy() {
-#! /bin/sh
-set -e
-if [ -f /usr/bin/uim-module-manager ]; then
- /usr/bin/uim-module-manager --register anthy --path /etc/uim
-fi
-}
-
-DESCRIPTION_uim-fep = "uim Front End Processor"
-FILES_uim-fep = "${bindir}/uim-fep*"
-
-DESCRIPTION_uim-gtk2.0 = "GTK+2.x immodule for uim"
-FILES_uim-gtk2.0 = "${libdir}/gtk-2.0 \
- ${bindir}/uim-toolbar-gtk* \
- ${bindir}/uim-*-gtk \
- ${bindir}/uim-input-pad-ja \
- ${datadir}/uim/helperdata/uim-dict-ui.xml"
-
-pkg_postinst_uim-gtk2.0() {
-#! /bin/sh
-set -e
-gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
-}
-
-#pkg_postrm_uim-gtk2.0() {
-##! /bin/sh
-#set -e
-#/usr/sbin/update-gtk-immodules
-#}
-
-DESCRIPTION_uim-skk = "SKK plugin for uim"
-FILES_uim-skk = "${libdir}/uim/plugin/libuim-skk.* \
- ${datadir}/uim/skk*.scm"
-
-pkg_postinst_uim-skk() {
-#! /bin/sh
-set -e
-if [ -f /usr/bin/uim-module-manager ]; then
- /usr/bin/uim-module-manager --register skk --path /etc/uim
-fi
-}
-
-pkg_postrm_uim-skk() {
-#! /bin/sh
-set -e
-if [ -f /usr/bin/uim-module-manager ]; then
- /usr/bin/uim-module-manager --path /etc/uim --unregister skk
-fi
-}
-
-DESCRIPTION_uim-utils = "Utilities for uim"
-FILES_uim-utils = "${bindir}/uim-sh \
- ${bindir}/uim-module-manager \
- ${libexecdir}/uim-helper-server"
-
-DESCRIPTION_uim-xim = "A bridge between uim and XIM"
-FILES_uim-xim = "${bindir}/uim-xim \
- ${libexecdir}/uim-candwin-gtk \
- ${datadir}/man/man1/uim-xim.1 \
- ${sysconfdir}/X11/xinit/xinput.d/uim*"
-
-# to .xinitrc, or .xsession
-#pkg_postinst_uim-xim() {
-#GTK_IM_MODULE=uim ; export GTK_IM_MODULE
-#QT_IM_MODULE=uim ; export QT_IM_MODULE
-#uim-xim &
-#XMODIFIERS=@im=uim ; export XMODIFIERS
-#}
-
-DESCRIPTION_uim-common = "Common files for uim"
-FILES_uim-common = "${datadir}/uim/pixmaps/*.png \
- ${datadir}/uim"
-pkg_postinst_uim-common() {
-#! /bin/sh
-set -e
-if [ -f /usr/bin/uim-module-manager ]; then
- /usr/bin/uim-module-manager --path /etc/uim --register \
- tutcode tcode hangul viqr ipa-x-sampa latin byeoru
-fi
-}
-
-pkg_prerm_uim-common() {
-#! /bin/sh
-set -e
-if [ -f /usr/bin/uim-module-manager ]; then
- /usr/bin/uim-module-manager --path /etc/uim --register \
- tutcode tcode hangul viqr ipa-x-sampa latin byeoru
-fi
-}
diff --git a/packages/uim/uim_1.3.1.bb b/packages/uim/uim_1.3.1.bb
new file mode 100644
index 0000000000..e5ddcd0737
--- /dev/null
+++ b/packages/uim/uim_1.3.1.bb
@@ -0,0 +1,145 @@
+require uim.inc
+DEPENDS = "gtk+ uim-native anthy fontconfig libxft xt glib-2.0 ncurses"
+SECTION_uim-gtk2.0 = "x11/inputmethods"
+PR = "r1"
+
+SRC_URI += "file://uim-module-manager.patch;patch=1"
+
+inherit autotools pkgconfig
+
+PACKAGES = "uim-xim uim-utils uim-skk uim-gtk2.0 uim-fep uim-common uim-anthy libuim0 libuim-dev"
+
+LEAD_SONAME = "libuim.so.1"
+RDEPENDS_uim = "libuim0"
+RDEPENDS_uim-anthy = "virtual/japanese-font"
+
+DESCRIPTION_libuim0 = "Simple and flexible input method collection and library"
+SECTION_libuim0 = "libs/inputmethods"
+FILES_libuim0 = "${libdir}/uim/plugin/libuim-custom-enabler.* \
+ ${libdir}/libuim-custom.so.* \
+ ${datadir}/locale/ja/LC_MESSAGES/uim.mo \
+ ${datadir}/locale/fr/LC_MESSAGES/uim.mo \
+ ${datadir}/locale/ko/LC_MESSAGES/uim.mo \
+ ${libdir}/libuim.so.*"
+
+DESCRIPTION_libuim-dev = "Development files for uim"
+SECTION_libuim-dev = "devel/libs"
+FILES_libuim-dev = "${libdir}/libuim*.a \
+ ${libdir}/libuim*.la \
+ ${libdir}/libuim*.so \
+ ${includedir}/uim \
+ ${libdir}/pkgconfig/uim.pc"
+
+DESCRIPTION_uim-anthy = "Anthy plugin for uim"
+FILES_uim-anthy = "${libdir}/uim/plugin/libuim-anthy.* \
+ ${datadir}/uim/anthy*.scm"
+
+pkg_postinst_uim-anthy() {
+#! /bin/sh
+set -e
+if [ -f /usr/bin/uim-module-manager ]; then
+ /usr/bin/uim-module-manager --register anthy --path /etc/uim
+fi
+}
+
+pkg_postrm_uim-anthy() {
+#! /bin/sh
+set -e
+if [ -f /usr/bin/uim-module-manager ]; then
+ /usr/bin/uim-module-manager --path /etc/uim --unregister anthy
+fi
+}
+
+pkg_prerm_uim-anthy() {
+#! /bin/sh
+set -e
+if [ -f /usr/bin/uim-module-manager ]; then
+ /usr/bin/uim-module-manager --register anthy --path /etc/uim
+fi
+}
+
+DESCRIPTION_uim-fep = "uim Front End Processor"
+FILES_uim-fep = "${bindir}/uim-fep*"
+
+DESCRIPTION_uim-gtk2.0 = "GTK+2.x immodule for uim"
+FILES_uim-gtk2.0 = "${libdir}/gtk-2.0 \
+ ${bindir}/uim-toolbar-gtk* \
+ ${bindir}/uim-*-gtk \
+ ${bindir}/uim-input-pad-ja \
+ ${datadir}/uim/helperdata/uim-dict-ui.xml"
+
+pkg_postinst_uim-gtk2.0() {
+#! /bin/sh
+set -e
+gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
+}
+
+#pkg_postrm_uim-gtk2.0() {
+##! /bin/sh
+#set -e
+#/usr/sbin/update-gtk-immodules
+#}
+
+DESCRIPTION_uim-skk = "SKK plugin for uim"
+FILES_uim-skk = "${libdir}/uim/plugin/libuim-skk.* \
+ ${datadir}/uim/skk*.scm"
+
+pkg_postinst_uim-skk() {
+#! /bin/sh
+set -e
+if [ -f /usr/bin/uim-module-manager ]; then
+ /usr/bin/uim-module-manager --register skk --path /etc/uim
+fi
+}
+
+pkg_postrm_uim-skk() {
+#! /bin/sh
+set -e
+if [ -f /usr/bin/uim-module-manager ]; then
+ /usr/bin/uim-module-manager --path /etc/uim --unregister skk
+fi
+}
+
+DESCRIPTION_uim-utils = "Utilities for uim"
+FILES_uim-utils = "${bindir}/uim-sh \
+ ${bindir}/uim-module-manager \
+ ${libexecdir}/uim-helper-server"
+
+DESCRIPTION_uim-xim = "A bridge between uim and XIM"
+FILES_uim-xim = "${bindir}/uim-xim \
+ ${libexecdir}/uim-candwin-gtk \
+ ${datadir}/man/man1/uim-xim.1 \
+ ${sysconfdir}/X11/xinit/xinput.d/uim*"
+
+# to .xinitrc, or .xsession
+#pkg_postinst_uim-xim() {
+#GTK_IM_MODULE=uim ; export GTK_IM_MODULE
+#QT_IM_MODULE=uim ; export QT_IM_MODULE
+#uim-xim &
+#XMODIFIERS=@im=uim ; export XMODIFIERS
+#}
+
+DESCRIPTION_uim-common = "Common files for uim"
+FILES_uim-common = "${datadir}/uim/pixmaps/*.png \
+ ${datadir}/uim"
+pkg_postinst_uim-common() {
+#! /bin/sh
+set -e
+if [ -f /usr/bin/uim-module-manager ]; then
+ /usr/bin/uim-module-manager --path /etc/uim --register \
+ tutcode tcode hangul viqr ipa-x-sampa latin byeoru
+fi
+}
+
+pkg_prerm_uim-common() {
+#! /bin/sh
+set -e
+if [ -f /usr/bin/uim-module-manager ]; then
+ /usr/bin/uim-module-manager --path /etc/uim --register \
+ tutcode tcode hangul viqr ipa-x-sampa latin byeoru
+fi
+}
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/upslug/upslug-native_1.0.bb b/packages/upslug/upslug-native_1.0.bb
index 729f176a75..02c41eb42b 100644
--- a/packages/upslug/upslug-native_1.0.bb
+++ b/packages/upslug/upslug-native_1.0.bb
@@ -5,7 +5,7 @@ DESCRIPTION = "NSLU2 binary upload tool"
HOMEPAGE = "http://www.nslu2-linux.org/wiki/Main/UpSlug"
SECTION = "console/network"
PRIORITY = "optional"
-LICENSE = "GPL-2"
+LICENSE = "GPLv2"
COMPATIBLE_MACHINE = "nslu2"
SRC_TAG = "UPSLUG_${@'_'.join(bb.data.getVar('PV',d,1).split('.'))}"
diff --git a/packages/upslug/upslug-native_cvs.bb b/packages/upslug/upslug-native_cvs.bb
index 95b340c589..e0d7f2b708 100644
--- a/packages/upslug/upslug-native_cvs.bb
+++ b/packages/upslug/upslug-native_cvs.bb
@@ -5,7 +5,7 @@ DESCRIPTION = "NSLU2 binary upload tool"
HOMEPAGE = "http://www.nslu2-linux.org/wiki/Main/UpSlug"
SECTION = "console/network"
PRIORITY = "optional"
-LICENSE = "GPL-2"
+LICENSE = "GPLv2"
COMPATIBLE_MACHINE = "nslu2"
# Use releases in preference
diff --git a/packages/upstart/.mtn2git_empty b/packages/upstart/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/upstart/.mtn2git_empty
diff --git a/packages/upstart/files/.mtn2git_empty b/packages/upstart/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/upstart/files/.mtn2git_empty
diff --git a/packages/upstart/files/autoconf_version.patch b/packages/upstart/files/autoconf_version.patch
new file mode 100644
index 0000000000..73b19879fb
--- /dev/null
+++ b/packages/upstart/files/autoconf_version.patch
@@ -0,0 +1,12 @@
+Index: upstart-0.3.8/configure.ac
+===================================================================
+--- upstart-0.3.8.orig/configure.ac 2007-05-09 22:02:14.000000000 +0200
++++ upstart-0.3.8/configure.ac 2007-05-09 22:02:24.000000000 +0200
+@@ -1,6 +1,6 @@
+ # Process this file with autoconf to produce a configure script.
+
+-AC_PREREQ(2.60)
++AC_PREREQ(2.59)
+ AC_INIT([upstart], [0.3.8], [upstart-devel@lists.ubuntu.com])
+ AC_COPYRIGHT([[Copyright © 2007 Canonical Ltd.]])
+ AC_CONFIG_SRCDIR([init/main.c])
diff --git a/packages/upstart/upstart.inc b/packages/upstart/upstart.inc
new file mode 100644
index 0000000000..59f21c9ed5
--- /dev/null
+++ b/packages/upstart/upstart.inc
@@ -0,0 +1,26 @@
+SECTION = "base"
+PRIORITY = "optional"
+DEPENDS = ""
+DESCRIPTION = "Event driven system init"
+LICENSE = "GPL"
+
+inherit autotools pkgconfig
+
+# --enable-compat builds halt, reboot, shutdown tools
+EXTRA_OECONF += "--enable-compat"
+
+do_stage () {
+ autotools_stage_all
+}
+
+# libupstart can be used for upstart event generation from other programs.
+# However it is not used by upstart itself, so package it seperately.
+PACKAGES =+ "libupstart libupstart-dev"
+FILES_libupstart += "${libdir}/libupstart.so.*"
+FILES_libupstart-dev += "${libdir}/libupstart.* ${includedir}/upstart/"
+
+# upstart-sysvcompat provides Sys V Init compatible tools: halt, reboot,
+# shutdown, telinit. These might be needed by other scripts.
+PACKAGES =+ "upstart-sysvcompat upstart-sysvtools-doc"
+FILES_upstart-sysvcompat += "${sbindir}/reboot ${sbindir}/halt ${sbindir}/shutdown ${sbindir}/telinit"
+FILES_upstart-sysvcompat-doc += "${mandir}/*/reboot.* ${mandir}/*/halt.* ${mandir}/*/shutdown.* ${mandir}/*/telinit.*"
diff --git a/packages/upstart/upstart_0.3.8.bb b/packages/upstart/upstart_0.3.8.bb
new file mode 100644
index 0000000000..5a4cf872a8
--- /dev/null
+++ b/packages/upstart/upstart_0.3.8.bb
@@ -0,0 +1,7 @@
+require upstart.inc
+
+SRC_URI = "http://upstart.ubuntu.com/download/0.3/upstart-${PV}.tar.bz2 \
+file://autoconf_version.patch;patch=1"
+
+PR = "r1"
+
diff --git a/packages/usrp/files/fix_compile_h.patch b/packages/usrp/files/fix_compile_h.patch
new file mode 100644
index 0000000000..02ba7e44a0
--- /dev/null
+++ b/packages/usrp/files/fix_compile_h.patch
@@ -0,0 +1,13 @@
+Index: gnuradio/trunk/usrp/host/lib/fusb_linux.cc
+===================================================================
+--- gnuradio/trunk/usrp/host/lib/fusb_linux.cc (revision 3534)
++++ gnuradio/trunk/usrp/host/lib/fusb_linux.cc (revision 3886)
+@@ -28,5 +28,7 @@
+ #include <usb.h> // libusb header
+ #include <stdexcept>
++#ifdef HAVE_LINUX_COMPILER_H
+ #include <linux/compiler.h>
++#endif
+ #include <linux/usbdevice_fs.h> // interface to kernel portion of user mode usb driver
+ #include <sys/ioctl.h>
+
diff --git a/packages/usrp/usrp_0.12.bb b/packages/usrp/usrp_0.12.bb
index 5fc6969f8c..b47ea9b62e 100644
--- a/packages/usrp/usrp_0.12.bb
+++ b/packages/usrp/usrp_0.12.bb
@@ -7,13 +7,17 @@ RDEPENDS = "python-core"
PR = "r0"
SRC_URI = "ftp://ftp.gnu.org/gnu/gnuradio/usrp-${PV}.tar.gz \
- file://usb11.patch;patch=1" \
+ file://fix_compile_h.patch;patch=1;pnum=3 \
file://install_test.patch;patch=1"
+SRC_URI_append_omap5912osk = "file://usb11.patch;patch=1"
+
S = "${WORKDIR}/usrp-${PV}"
inherit autotools pkgconfig
+CXXFLAGS_powerpc += "-lstdc++"
+
export BUILD_SYS := "${BUILD_SYS}"
export HOST_SYS := "${HOST_SYS}"
@@ -32,5 +36,6 @@ do_stage () {
install -m 644 firmware/include/usrp_spi_defs.h ${STAGING_INCDIR}
}
-PACKAGES += "python-pyursp"
-FILES_python-pyursp = "${libdir}/python*"
+PACKAGES += "python-pyusrp-dbg python-pyusrp"
+FILES_python-pyusrp-dbg = "${libdir}/python*/site-packages/.debug"
+FILES_python-pyusrp = "${libdir}/python*"
diff --git a/packages/util-linux/files/glibc-umount2.patch b/packages/util-linux/files/glibc-umount2.patch
new file mode 100644
index 0000000000..3da3a85cfc
--- /dev/null
+++ b/packages/util-linux/files/glibc-umount2.patch
@@ -0,0 +1,18 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 10sparcumount.dpatch by Jeff Bailey <jbailey@ubuntu.com>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Sparc and Arm have umount2 in glibc.
+
+@DPATCH@
+--- util-linux/mount/umount.c 2005-05-20 11:39:07.000000000 +0000
++++ util-linux/mount/umount.c 2005-05-20 11:39:15.000000000 +0000
+@@ -31,7 +31,7 @@
+ #include <arpa/inet.h>
+ #endif
+
+-#if defined(MNT_FORCE) && !defined(__sparc__) && !defined(__arm__)
++#if defined(MNT_FORCE)
+ /* Interesting ... it seems libc knows about MNT_FORCE and presumably
+ about umount2 as well -- need not do anything */
+ #else /* MNT_FORCE */
diff --git a/packages/util-linux/util-linux_2.12r.bb b/packages/util-linux/util-linux_2.12r.bb
index 32cbadae64..0409f61b74 100644
--- a/packages/util-linux/util-linux_2.12r.bb
+++ b/packages/util-linux/util-linux_2.12r.bb
@@ -2,5 +2,6 @@ require util-linux.inc
SRC_URI += "file://util-linux_2.12r-12.diff.gz;patch=1"
SRC_URI += "file://glibc-fix.patch;patch=1"
+SRC_URI += "file://glibc-umount2.patch;patch=1"
-PR = "r10"
+PR = "r11"
diff --git a/packages/uucp/uucp_1.07.bb b/packages/uucp/uucp_1.07.bb
index 948f251e70..7247ecbabe 100644
--- a/packages/uucp/uucp_1.07.bb
+++ b/packages/uucp/uucp_1.07.bb
@@ -1,6 +1,7 @@
DESCRIPTION = "UUCP is used to transfer mail, news and random files between systems which are not connected by more modern networks. The communication can be made via modems, direct (hard-wired) serial connections or via an IP connection."
LICENSE = "GPLv2"
SECTION = "console"
+PR = "r1"
inherit autotools
@@ -11,6 +12,9 @@ do_configure() {
oe_runconf
}
+do_install_append() {
+ fakeroot install -d -g uucp -o uucp ${D}/usr/spool/uucp
+}
PACKAGES =+ "cu"
-FILES_cu = "${bindir}/cu"
+FILES_cu = "${bindir}/cu /usr/spool"
diff --git a/packages/valgrind/valgrind_3.2.3.bb b/packages/valgrind/valgrind_3.2.3.bb
new file mode 100644
index 0000000000..6cc835a9f4
--- /dev/null
+++ b/packages/valgrind/valgrind_3.2.3.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Valgrind memory debugger"
+HOMEPAGE = "http://www.valgrind.org/"
+SECTION = "devel"
+LICENSE = "GPL"
+DEPENDS = "virtual/libx11"
+PR = "r0"
+
+SRC_URI = "http://www.valgrind.org/downloads/valgrind-${PV}.tar.bz2"
+
+inherit autotools
+
+EXTRA_OECONF = "--enable-tls"
+
+COMPATIBLE_HOST = "^i.86.*-linux"
+
+FILES_${PN}-dbg += "/usr/lib/valgrind/x86-linux/.debug"
diff --git a/packages/vincent/.mtn2git_empty b/packages/vincent/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/vincent/.mtn2git_empty
diff --git a/packages/vincent/vincent_svn.bb b/packages/vincent/vincent_svn.bb
new file mode 100644
index 0000000000..87e111875a
--- /dev/null
+++ b/packages/vincent/vincent_svn.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Vincent OpenGL-ES library "
+HOMEPAGE = "http://sourceforge.net/projects/ogl-es/"
+LICENSE = "BSD"
+
+PV = "0.0+svn${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "svn://svn.sourceforge.net/svnroot/ogl-es/branches;module=linux_nokia_770;proto=https"
+
+S = "${WORKDIR}/linux_nokia_770/ogles/projects/linux-x11"
+
+TOP = "${WORKDIR}/linux_nokia_770/ogles/"
+
+inherit autotools pkgconfig
+
+# PACKAGES = ${PN}
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/GLES
+
+ install -m 0644 ${TOP}/include/ug.h ${STAGING_INCDIR}
+ install -m 0644 ${TOP}/include/GLES/* ${STAGING_INCDIR}/GLES/
+
+ oe_libinstall -so libvincent ${STAGING_LIBDIR}
+}
diff --git a/packages/vino/vino_2.16.0.bb b/packages/vino/vino_2.16.0.bb
index a7639a248d..b2d1a5fb08 100644
--- a/packages/vino/vino_2.16.0.bb
+++ b/packages/vino/vino_2.16.0.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Vino is an integrated VNC server for GNOME."
LICENSE = "GPLv2"
-DEPENDS = "libgnomeui libglade gnome-keyring esound-gpe dbus-glib libxml2 gnutls gnome-vfs"
+DEPENDS = "libgnomeui libglade gnome-keyring esound dbus-glib libxml2 gnutls gnome-vfs"
inherit gnome gconf
diff --git a/packages/void11/.mtn2git_empty b/packages/void11/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/void11/.mtn2git_empty
diff --git a/packages/void11/files/.mtn2git_empty b/packages/void11/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/void11/files/.mtn2git_empty
diff --git a/packages/void11/files/oezc.patch b/packages/void11/files/oezc.patch
new file mode 100644
index 0000000000..998f14c44e
--- /dev/null
+++ b/packages/void11/files/oezc.patch
@@ -0,0 +1,112 @@
+diff -urN void11-0.2.0/console/Makefile void11-0.2.0-zc/console/Makefile
+--- void11-0.2.0/console/Makefile 2004-01-08 05:05:56.000000000 -0500
++++ void11-0.2.0-zc/console/Makefile 2007-03-04 12:47:44.000000000 -0500
+@@ -11,7 +11,6 @@
+
+ $(PROG): $(PROGOBJ)
+ $(CC) $(CFLAGS) $(PROGOBJ) $(LIB) -o $@
+- $(STRIP) $@
+
+ clean:
+ $(RM) $(PROGOBJ) $(PROG) *~
+diff -urN void11-0.2.0/console/void11_hopper void11-0.2.0-zc/console/void11_hopper
+--- void11-0.2.0/console/void11_hopper 2003-03-14 22:25:02.000000000 -0500
++++ void11-0.2.0-zc/console/void11_hopper 2007-03-04 12:50:20.000000000 -0500
+@@ -1,3 +1,8 @@
+ #!/bin/sh
++iwconfig wlan0 essid test
++smallsleep 0.5
++iwpriv wlan0 hostapd 1
++smallsleep 0.5
+ iwconfig wlan0 mode master
+-while(true); do for i in $(seq 1 14); do iwconfig wlan0 channel $i; sleep 0.2; echo -n "$i. "; done; done 2>/dev/null
++#while(true); do for i in $(seq 1 14); do iwconfig wlan0 channel $i; sleep 0.2; echo -n "$i. "; done; done 2>/dev/null
++while(true); do for i in $(seq 1 11); do iwconfig wlan0 channel $i; smallsleep 0.2; echo -n "$i. "; done; done
+diff -urN void11-0.2.0/lib/Makefile void11-0.2.0-zc/lib/Makefile
+--- void11-0.2.0/lib/Makefile 2004-01-08 05:04:37.000000000 -0500
++++ void11-0.2.0-zc/lib/Makefile 2007-03-04 13:19:18.000000000 -0500
+@@ -11,7 +11,7 @@
+
+ $(LIB): $(LIBOBJ) $(HEADER)
+ rm -f $@ || true
+- gcc -shared -o $@ $(LIBOBJ)
++ ${CC} -shared -o $@ $(LIBOBJ)
+
+ clean:
+ $(RM) $(PROGOBJ) $(LIBOBJ) $(LIB) *~
+diff -urN void11-0.2.0/Makefile void11-0.2.0-zc/Makefile
+--- void11-0.2.0/Makefile 2004-01-08 06:49:00.000000000 -0500
++++ void11-0.2.0-zc/Makefile 2007-03-04 13:13:58.000000000 -0500
+@@ -2,7 +2,7 @@
+
+ include $(VOID11_TOPDIR)/Rules.make
+
+-SUBDIRS = lib
++SUBDIRS = lib smallsleep
+ CONFIG =
+
+ ifdef USECONSOLE
+@@ -19,6 +19,9 @@
+ lib:
+ @$(MAKE) -C $(VOID11_TOPDIR)/$@ -f Makefile VOID11_TOPDIR=$(VOID11_TOPDIR)
+
++smallsleep:
++ @$(MAKE) -C $(VOID11_TOPDIR)/$@ -f Makefile VOID11_TOPDIR=$(VOID11_TOPDIR)
++
+ console: lib
+ @$(MAKE) -C $(VOID11_TOPDIR)/$@ -f Makefile VOID11_TOPDIR=$(VOID11_TOPDIR)
+
+diff -urN void11-0.2.0/Rules.make void11-0.2.0-zc/Rules.make
+--- void11-0.2.0/Rules.make 2004-01-08 05:03:40.000000000 -0500
++++ void11-0.2.0-zc/Rules.make 2007-03-04 13:18:14.000000000 -0500
+@@ -11,5 +11,4 @@
+
+ MKDIR = mkdir -p
+ CP = cp -f
+-STRIP = strip -x
+-CC = gcc
++# CC = gcc
+diff -urN void11-0.2.0/smallsleep/Makefile void11-0.2.0-zc/smallsleep/Makefile
+--- void11-0.2.0/smallsleep/Makefile 1969-12-31 19:00:00.000000000 -0500
++++ void11-0.2.0-zc/smallsleep/Makefile 2007-03-04 12:57:27.000000000 -0500
+@@ -0,0 +1,10 @@
++CFLAGS = -g -O3 -Wall
++
++all: smallsleep
++
++smallsleep: smallsleep.c
++ $(CC) $(CFLAGS) smallsleep.c -o smallsleep
++
++install:
++ install -d /sbin
++ install -m 755 smallsleep /sbin
+diff -urN void11-0.2.0/smallsleep/smallsleep.c void11-0.2.0-zc/smallsleep/smallsleep.c
+--- void11-0.2.0/smallsleep/smallsleep.c 1969-12-31 19:00:00.000000000 -0500
++++ void11-0.2.0-zc/smallsleep/smallsleep.c 2007-03-04 12:57:27.000000000 -0500
+@@ -0,0 +1,26 @@
++#include <unistd.h> // for usleep
++#include <stdio.h> // for printf()
++#include <stdlib.h> // for atof()
++
++/* compile with
++gcc -g -Wall -o smallsleep smallsleep.c
++*/
++
++#define MICROSECONDS_IN_SECONDS 1000000
++
++int main (int argc, const char *argv[])
++{
++ if (argc != 2) {
++ fprintf (stderr, "usage: %s time-in-seconds\n", argv[0]);
++ fprintf (stderr, " (decimal values are OK for the time)\n");
++ return (1);
++ }
++
++ float fraction;
++ fraction = atof (argv[1]);
++
++ usleep (fraction * MICROSECONDS_IN_SECONDS);
++
++ return (0);
++
++} // main
diff --git a/packages/void11/void11_0.2.0.bb b/packages/void11/void11_0.2.0.bb
new file mode 100644
index 0000000000..2f4d5f2af9
--- /dev/null
+++ b/packages/void11/void11_0.2.0.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "void11"
+HOMEPAGE = "http://www.wlsec.net/void11"
+SECTION = "console/network"
+LICENSE = "GPL"
+FILES_${PN} += "${libdir}/libvoid11.so"
+
+SRC_URI = "http://www.wirelessdefence.org/Contents/Files/void11-0.2.0.tar.bz2;md5sum=1c5b3e3e70916de74c2932c7f3e46d9e \
+ http://hostap.epitest.fi/releases/hostapd-0.1.3.tar.gz;md5sum=54563fb51f143c4bf26ddec2516e8f9f \
+ file://oezc.patch;patch=1;pnum=1"
+
+S = "${WORKDIR}/void11-0.2.0"
+
+inherit autotools
+
+do_compile () {
+ oe_runmake USECONSOLE=1 HOSTAPD_PATH=${WORKDIR}/hostapd-0.1.3
+}
+
+do_install () {
+ install -d ${D}/${sbindir}
+ install -d ${D}/${libdir}
+ install -m 0755 lib/libvoid11.so ${D}/${libdir}
+ install -m 0755 console/void11_hopper ${D}/${sbindir}
+ install -m 0755 smallsleep/smallsleep ${D}/${sbindir}
+ install -m 0755 console/void11_penetration ${D}/${sbindir}
+}
diff --git a/packages/vorbis-tools/vorbis-tools-1.0.1/remove-deprecated-curl-option.patch b/packages/vorbis-tools/vorbis-tools-1.0.1/remove-deprecated-curl-option.patch
new file mode 100644
index 0000000000..6261ac175c
--- /dev/null
+++ b/packages/vorbis-tools/vorbis-tools-1.0.1/remove-deprecated-curl-option.patch
@@ -0,0 +1,13 @@
+Index: vorbis-tools-1.0.1/ogg123/http_transport.c
+===================================================================
+--- vorbis-tools-1.0.1.orig/ogg123/http_transport.c
++++ vorbis-tools-1.0.1/ogg123/http_transport.c
+@@ -113,7 +113,7 @@ void set_curl_opts (http_private_t *priv
+ if (inputOpts.ProxyTunnel)
+ curl_easy_setopt (handle, CURLOPT_HTTPPROXYTUNNEL, inputOpts.ProxyTunnel);
+ */
+- curl_easy_setopt(handle, CURLOPT_MUTE, 1);
++ /* curl_easy_setopt(handle, CURLOPT_MUTE, 1); */
+ curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, private->error);
+ curl_easy_setopt(handle, CURLOPT_PROGRESSFUNCTION, progress_callback);
+ curl_easy_setopt(handle, CURLOPT_PROGRESSDATA, private);
diff --git a/packages/vorbis-tools/vorbis-tools_1.0.1.bb b/packages/vorbis-tools/vorbis-tools_1.0.1.bb
index 7b8a75dd3b..9991156dcd 100644
--- a/packages/vorbis-tools/vorbis-tools_1.0.1.bb
+++ b/packages/vorbis-tools/vorbis-tools_1.0.1.bb
@@ -1,13 +1,14 @@
-LICENSE = "GPL"
-DEPENDS = "libogg libvorbis libao curl"
-DESCRIPTION = " vorbis-tools contains oggenc (an encoder), ogg123 (a playback tool), \
+DESCRIPTION = "vorbis-tools contains oggenc (an encoder), ogg123 (a playback tool), \
ogginfo (displays ogg information), vcut (ogg file splitter), and \
vorbiscomment (ogg comment editor)."
-
+LICENSE = "GPL"
+DEPENDS = "libogg libvorbis libao curl"
SECTION = "console/multimedia"
+PR = "r1"
SRC_URI = "http://www.vorbis.com/files/${PV}/unix/vorbis-tools-${PV}.tar.gz \
- file://m4.patch;patch=1"
+ file://m4.patch;patch=1 \
+ file://remove-deprecated-curl-option.patch;patch=1"
inherit autotools
diff --git a/packages/vte/vte_0.11.15.bb b/packages/vte/vte_0.11.15.bb
index 7b1c7c803c..274cd81070 100644
--- a/packages/vte/vte_0.11.15.bb
+++ b/packages/vte/vte_0.11.15.bb
@@ -1,7 +1,9 @@
LICENSE = "LGPL"
+PR = "r1"
inherit gnome
+EXTRA_OECONF = "--disable-gtk-doc"
do_stage() {
autotools_stage_all
diff --git a/packages/webcam-server/.mtn2git_empty b/packages/webcam-server/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/webcam-server/.mtn2git_empty
diff --git a/packages/webcam-server/webcam-server_0.50.bb b/packages/webcam-server/webcam-server_0.50.bb
new file mode 100644
index 0000000000..737ef75977
--- /dev/null
+++ b/packages/webcam-server/webcam-server_0.50.bb
@@ -0,0 +1,23 @@
+#! /bin/sh
+#
+# 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)
+#
+# Filename: Untitled
+# Date: 20070317 (YMD)
+
+DESCRIPTION = "webcam_server is a program that allows others to view your webcam from a web browser."
+MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
+HOMEPAGE = "http://webcamserver.sourceforge.net/"
+LICENSE = "GPL"
+
+######################################################################################
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/webcamserver/webcam_server-${PV}.tar.gz"
+
+S = "${WORKDIR}/webcam_server-${PV}"
+
+######################################################################################
+
+inherit autotools
diff --git a/packages/wireless-tools/wireless-tools_29-pre10.bb b/packages/wireless-tools/wireless-tools_29-pre10.bb
index 8e4b9d7754..febe662602 100644
--- a/packages/wireless-tools/wireless-tools_29-pre10.bb
+++ b/packages/wireless-tools/wireless-tools_29-pre10.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html"
SECTION = "base"
PRIORITY = "optional"
LICENSE = "GPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.pre10.tar.gz \
file://man.patch;patch=1 \
@@ -29,14 +29,17 @@ do_stage() {
}
do_install() {
- oe_runmake PREFIX=${D} install-iwmulticall install-dynamic
+ oe_runmake PREFIX=${D} install-iwmulticall install-dynamic install-man install-hdr
+ install -d ${D}${sbindir}
+ install -m 0755 ifrename ${D}${sbindir}/ifrename
install -d ${D}${sysconfdir}/network/if-pre-up.d
install ${WORKDIR}/wireless-tools.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/wireless-tools
}
-PACKAGES = "libiw libiw-dev libiw-doc ${PN} ${PN}-doc ${PN}-dbg"
+PACKAGES = "libiw libiw-dev libiw-doc ifrename ${PN} ${PN}-doc ${PN}-dbg "
FILES_libiw = "${libdir}/*.so.*"
FILES_libiw-dev = "${libdir}/*.a ${libdir}/*.so ${includedir}"
FILES_libiw-doc = "${mandir}/man7"
-FILES_${PN} = "${bindir} ${sbindir} ${base_sbindir} ${base_bindir} ${sysconfdir}/network"
+FILES_ifrename = "${sbindir}/ifrename"
+FILES_${PN} = "${bindir} ${sbindir}/iw* ${base_sbindir} ${base_bindir} ${sysconfdir}/network"
FILES_${PN}-doc = "${mandir}/man8"
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.7/.mtn2git_empty b/packages/wlan-ng/wlan-ng-modules-0.2.7/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules-0.2.7/.mtn2git_empty
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.7/only-the-modules.patch b/packages/wlan-ng/wlan-ng-modules-0.2.7/only-the-modules.patch
new file mode 100644
index 0000000000..abb3b137da
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules-0.2.7/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
new file mode 100644
index 0000000000..169b72dd0b
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules_0.2.7.bb
@@ -0,0 +1,6 @@
+require wlan-ng-modules.inc
+
+SRC_URI += "ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-${PV}.tar.bz2"
+
+S = "${WORKDIR}/linux-wlan-ng-${PV}"
+
diff --git a/packages/wlan-ng/wlan-ng-utils-0.2.7/.mtn2git_empty b/packages/wlan-ng/wlan-ng-utils-0.2.7/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils-0.2.7/.mtn2git_empty
diff --git a/packages/wlan-ng/wlan-ng-utils-0.2.7/config.in b/packages/wlan-ng/wlan-ng-utils-0.2.7/config.in
new file mode 100644
index 0000000000..be01488a92
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils-0.2.7/config.in
@@ -0,0 +1,21 @@
+WLAN_VERSION=0
+WLAN_PATCHLEVEL=2
+WLAN_SUBLEVEL=3
+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.7/only-the-utils.patch b/packages/wlan-ng/wlan-ng-utils-0.2.7/only-the-utils.patch
new file mode 100644
index 0000000000..af1f442a4c
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils-0.2.7/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.7.bb b/packages/wlan-ng/wlan-ng-utils_0.2.7.bb
new file mode 100644
index 0000000000..929f67fe16
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils_0.2.7.bb
@@ -0,0 +1,69 @@
+DESCRIPTION = "linux-wlan-ng userland utilities"
+HOMEPAGE = "http://www.linux-wlan.org"
+SECTION = "kernel/userland"
+DEPENDS = "virtual/kernel"
+LICENSE = "GPL"
+
+SRC_URI = "ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-${PV}.tar.bz2 \
+ file://only-the-utils.patch;patch=1 \
+ file://scripts-makefile-hostcc.patch;patch=1 \
+ file://pcmciasrc.patch;patch=1 \
+ file://hostldflags.patch;patch=1 \
+ file://wlan-ng.modutils \
+ file://wlan.agent \
+ file://usbctl \
+ file://resume \
+ file://pre-up \
+ file://post-down \
+ file://config.in"
+S = "${WORKDIR}/linux-wlan-ng-${PV}"
+
+# yeah, it's kind of backwards, but otherwise the config step will fail
+inherit module
+
+do_configure() {
+ install -m 0655 ${WORKDIR}/config.in ${S}/config.in
+ oe_runmake LINUX_SRC=${KERNEL_SOURCE} auto_config
+
+ if grep CONFIG_PCMCIA=[ym] ${STAGING_KERNEL_DIR}/kernel-config; then
+ echo "PRISM2_PCMCIA=y" >> config.mk
+ echo "WLAN_KERN_PCMCIA=y" >> config.mk
+ fi
+ echo "TARGET_ROOT_ON_HOST=${D}/" >> config.mk
+ echo "FIRMWARE_DIR=/etc/wlan" >> config.mk
+ echo "TARGET_MODDIR=${D}/lib/modules/${KERNEL_VERSION}/wlan-ng" >> config.mk
+ echo "TARGET_INST_EXEDIR=${D}/sbin" >> config.mk
+ echo "RC_DIR=${sysconfdir}/" >> config.mk
+ echo "CC=${CC}" >> config.mk
+ echo "LD=${LD}" >> config.mk
+
+ # Shut up, you broken buildsystem
+ install -m 0655 config.mk src/prism2/config.mk
+ install -d src/prism2/driver/include
+ ln -sf ${S}/src/include/wlan src/prism2/driver/include/wlan
+ ln -sf ${S}/src/prism2/include/prism2 src/prism2/driver/include/prism2
+}
+
+do_compile() {
+ oe_runmake all
+}
+
+do_install() {
+ oe_runmake install
+ mkdir -p ${D}${sysconfdir}/modutils/
+ mkdir -p ${D}${sysconfdir}/hotplug/
+ mkdir -p ${D}${base_sbindir}/
+ install -m 0644 ${WORKDIR}/wlan-ng.modutils ${D}${sysconfdir}/modutils/wlan-ng.conf
+ install -m 0755 ${WORKDIR}/wlan.agent ${D}${sysconfdir}/hotplug/wlan.agent
+ install -d ${D}${sysconfdir}/network/if-pre-up.d
+ install -m 0755 ${WORKDIR}/pre-up ${D}${sysconfdir}/network/if-pre-up.d/wlan-ng
+ install -d ${D}${sysconfdir}/network/if-post-down.d
+ install -m 0755 ${WORKDIR}/post-down ${D}${sysconfdir}/network/if-post-down.d/wlan-ng
+ install -d ${D}${sysconfdir}/apm/resume.d
+ install -m 0755 ${WORKDIR}/resume ${D}${sysconfdir}/apm/resume.d/wlan-ng
+ install -m 0755 ${WORKDIR}/usbctl ${D}${base_sbindir}/usbctl
+ install -d ${D}${mandir}/man1
+ install -m 0644 ${S}/man/*.1 ${D}${mandir}/man1/
+}
+
+FILES_${PN} = "/etc /sbin"
diff --git a/packages/wpa-supplicant/wpa-supplicant-0.5.inc b/packages/wpa-supplicant/wpa-supplicant-0.5.inc
new file mode 100644
index 0000000000..28f355c612
--- /dev/null
+++ b/packages/wpa-supplicant/wpa-supplicant-0.5.inc
@@ -0,0 +1,74 @@
+DESCRIPTION = "A Client for Wi-Fi Protected Access (WPA)."
+SECTION = "network"
+LICENSE = "GPL"
+HOMEPAGE = "http://hostap.epitest.fi/wpa_supplicant/"
+DEPENDS = "gnutls ${@base_contains("COMBINED_FEATURES", "pci", "madwifi-ng", "",d)}"
+
+#we introduce MY_ARCH to get 'armv5te' as arch instead of the misleading 'arm' on armv5te builds
+MY_ARCH := "${PACKAGE_ARCH}"
+PACKAGE_ARCH = "${@base_contains('COMBINED_FEATURES', 'pci', '${MACHINE_ARCH}', '${MY_ARCH}', d)}"
+
+DEFAULT_PREFERENCE = "-2"
+
+SRC_URI = "http://hostap.epitest.fi/releases/wpa_supplicant-${PV}.tar.gz \
+ file://defconfig-gnutls \
+ file://init.sh \
+ file://gnutlsfix.patch;patch=1 \
+ file://defaults-sane \
+ file://wpa-supplicant.sh \
+ file://wpa_supplicant.conf \
+ file://wpa_supplicant.conf-sane"
+
+S = "${WORKDIR}/wpa_supplicant-${PV}"
+
+PACKAGES_prepend = "wpa-supplicant-passphrase wpa-supplicant-cli "
+FILES_wpa-supplicant-passphrase = "/usr/sbin/wpa_passphrase"
+FILES_wpa-supplicant-cli = "/usr/sbin/wpa_cli"
+
+RRECOMMENDS_${PN} = "wpa-supplicant-passphrase wpa-supplicant-cli"
+
+INITSCRIPT_NAME = "wpa"
+INITSCRIPT_PARAMS = "defaults 10"
+inherit update-rc.d
+
+export HAS_PCI = "${@base_contains('COMBINED_FEATURES', 'pci', 1, 0,d)}"
+
+do_configure () {
+ install -m 0755 ${WORKDIR}/defconfig-gnutls .config
+
+ if [ "x$HAS_PCI" == "x1" ] ; then
+ echo "CONFIG_DRIVER_MADWIFI=y" >> .config
+ echo "CFLAGS += -I${STAGING_INCDIR}/madwifi-ng" >> .config
+ fi
+}
+
+do_compile () {
+ make
+}
+
+do_install () {
+ install -d ${D}${sbindir}
+ install -m 755 wpa_supplicant ${D}${sbindir}
+ install -m 755 wpa_passphrase ${D}${sbindir}
+ install -m 755 wpa_cli ${D}${sbindir}
+
+ install -d ${D}${localstatedir}/run/wpa_supplicant
+
+ install -d ${D}${docdir}/wpa_supplicant
+ install -m 644 README ${WORKDIR}/wpa_supplicant.conf ${D}${docdir}/wpa_supplicant
+
+ install -d ${D}${sysconfdir}/init.d
+ install -m 700 ${WORKDIR}/init.sh ${D}${sysconfdir}/init.d/wpa
+
+ install -d ${D}${sysconfdir}/default
+ install -m 600 ${WORKDIR}/defaults-sane ${D}${sysconfdir}/default/wpa
+ install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant.conf
+
+ install -d ${D}${sysconfdir}/network/if-pre-up.d/
+ install -d ${D}${sysconfdir}/network/if-post-down.d/
+ install -d ${D}${sysconfdir}/network/if-down.d/
+ install -m 644 ${WORKDIR}/wpa_supplicant.conf ${D}${sysconfdir}
+ install -m 755 ${WORKDIR}/wpa-supplicant.sh ${D}${sysconfdir}/network/if-pre-up.d/wpa-supplicant
+ cd ${D}${sysconfdir}/network/ && \
+ ln -sf ../if-pre-up.d/wpa-supplicant if-post-down.d/wpa-supplicant
+}
diff --git a/packages/wpa-supplicant/wpa-supplicant/.mtn2git_empty b/packages/wpa-supplicant/wpa-supplicant/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/wpa-supplicant/wpa-supplicant/.mtn2git_empty
diff --git a/packages/wpa-supplicant/wpa-supplicant-0.5.5/gnutlsfix.patch b/packages/wpa-supplicant/wpa-supplicant/gnutlsfix.patch
index 795306bb35..795306bb35 100644
--- a/packages/wpa-supplicant/wpa-supplicant-0.5.5/gnutlsfix.patch
+++ b/packages/wpa-supplicant/wpa-supplicant/gnutlsfix.patch
diff --git a/packages/wpa-supplicant/wpa-supplicant_0.5.1.bb b/packages/wpa-supplicant/wpa-supplicant_0.5.1.bb
deleted file mode 100644
index 52eb62d848..0000000000
--- a/packages/wpa-supplicant/wpa-supplicant_0.5.1.bb
+++ /dev/null
@@ -1,56 +0,0 @@
-DESCRIPTION = "A Client for Wi-Fi Protected Access (WPA)."
-SECTION = "network"
-LICENSE = "GPL"
-HOMEPAGE = "http://hostap.epitest.fi/wpa_supplicant/"
-DEPENDS = "gnutls madwifi-ng"
-
-PR = "r5"
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI = "http://hostap.epitest.fi/releases/wpa_supplicant-${PV}.tar.gz \
- file://defconfig-gnutls \
- file://init.sh \
- file://defaults-sane \
- file://wpa_supplicant.conf \
- file://wpa_supplicant.conf-sane"
-
-S = "${WORKDIR}/wpa_supplicant-${PV}"
-
-PACKAGES_prepend = "wpa-supplicant-passphrase wpa-supplicant-cli "
-FILES_wpa-supplicant-passphrase = "/usr/sbin/wpa_passphrase"
-FILES_wpa-supplicant-cli = "/usr/sbin/wpa_cli"
-
-RRECOMMENDS_${PN} = "wpa-supplicant-passphrase wpa-supplicant-cli"
-
-INITSCRIPT_NAME = "wpa"
-INITSCRIPT_PARAMS = "defaults 10"
-inherit update-rc.d
-
-do_configure () {
- install -m 0755 ${WORKDIR}/defconfig-gnutls .config
- echo "CONFIG_DRIVER_MADWIFI=y" >> .config
- echo "CFLAGS += -I${STAGING_INCDIR}/madwifi-ng" >> .config
-}
-
-do_compile () {
- make
-}
-
-do_install () {
- install -d ${D}${sbindir}
- install -m 755 wpa_supplicant ${D}${sbindir}
- install -m 755 wpa_passphrase ${D}${sbindir}
- install -m 755 wpa_cli ${D}${sbindir}
-
- install -d ${D}${localstatedir}/run/wpa_supplicant
-
- install -d ${D}${docdir}/wpa_supplicant
- install -m 644 README ${WORKDIR}/wpa_supplicant.conf ${D}${docdir}/wpa_supplicant
-
- install -d ${D}${sysconfdir}/init.d
- install -m 700 ${WORKDIR}/init.sh ${D}${sysconfdir}/init.d/wpa
-
- install -d ${D}${sysconfdir}/default
- install -m 600 ${WORKDIR}/defaults-sane ${D}${sysconfdir}/default/wpa
- install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant.conf
-}
diff --git a/packages/wpa-supplicant/wpa-supplicant_0.5.5.bb b/packages/wpa-supplicant/wpa-supplicant_0.5.5.bb
index 46ff13e3f0..67a5b99b0f 100644
--- a/packages/wpa-supplicant/wpa-supplicant_0.5.5.bb
+++ b/packages/wpa-supplicant/wpa-supplicant_0.5.5.bb
@@ -1,65 +1,3 @@
-DESCRIPTION = "A Client for Wi-Fi Protected Access (WPA)."
-SECTION = "network"
-LICENSE = "GPL"
-HOMEPAGE = "http://hostap.epitest.fi/wpa_supplicant/"
-DEPENDS = "gnutls ${@base_contains("COMBINED_FEATURES", "pci", "madwifi-ng", "",d)}"
+require wpa-supplicant-0.5.inc
-#we introduce MY_ARCH to get 'armv5te' as arch instead of the misleading 'arm' on armv5te builds
-MY_ARCH := "${PACKAGE_ARCH}"
-PACKAGE_ARCH = "${@base_contains('COMBINED_FEATURES', 'pci', '${MACHINE_ARCH}', '${MY_ARCH}', d)}"
-
-DEFAULT_PREFERENCE = "-2"
-
-SRC_URI = "http://hostap.epitest.fi/releases/wpa_supplicant-${PV}.tar.gz \
- file://defconfig-gnutls \
- file://init.sh \
- file://gnutlsfix.patch;patch=1 \
- file://defaults-sane \
- file://wpa_supplicant.conf \
- file://wpa_supplicant.conf-sane"
-
-S = "${WORKDIR}/wpa_supplicant-${PV}"
-
-PACKAGES_prepend = "wpa-supplicant-passphrase wpa-supplicant-cli "
-FILES_wpa-supplicant-passphrase = "/usr/sbin/wpa_passphrase"
-FILES_wpa-supplicant-cli = "/usr/sbin/wpa_cli"
-
-RRECOMMENDS_${PN} = "wpa-supplicant-passphrase wpa-supplicant-cli"
-
-INITSCRIPT_NAME = "wpa"
-INITSCRIPT_PARAMS = "defaults 10"
-inherit update-rc.d
-
-export HAS_PCI = "${@base_contains('COMBINED_FEATURES', 'pci', 1, 0,d)}"
-
-do_configure () {
- install -m 0755 ${WORKDIR}/defconfig-gnutls .config
-
- if [ "x$HAS_PCI" == "x1" ] ; then
- echo "CONFIG_DRIVER_MADWIFI=y" >> .config
- echo "CFLAGS += -I${STAGING_INCDIR}/madwifi-ng" >> .config
- fi
-}
-
-do_compile () {
- make
-}
-
-do_install () {
- install -d ${D}${sbindir}
- install -m 755 wpa_supplicant ${D}${sbindir}
- install -m 755 wpa_passphrase ${D}${sbindir}
- install -m 755 wpa_cli ${D}${sbindir}
-
- install -d ${D}${localstatedir}/run/wpa_supplicant
-
- install -d ${D}${docdir}/wpa_supplicant
- install -m 644 README ${WORKDIR}/wpa_supplicant.conf ${D}${docdir}/wpa_supplicant
-
- install -d ${D}${sysconfdir}/init.d
- install -m 700 ${WORKDIR}/init.sh ${D}${sysconfdir}/init.d/wpa
-
- install -d ${D}${sysconfdir}/default
- install -m 600 ${WORKDIR}/defaults-sane ${D}${sysconfdir}/default/wpa
- install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant.conf
-}
+PR = "r1"
diff --git a/packages/wpa-supplicant/wpa-supplicant_0.5.7.bb b/packages/wpa-supplicant/wpa-supplicant_0.5.7.bb
new file mode 100644
index 0000000000..6594bbfdbe
--- /dev/null
+++ b/packages/wpa-supplicant/wpa-supplicant_0.5.7.bb
@@ -0,0 +1 @@
+require wpa-supplicant-0.5.inc
diff --git a/packages/wv/.mtn2git_empty b/packages/wv/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/wv/.mtn2git_empty
diff --git a/packages/wv/wv_1.2.0.bb b/packages/wv/wv_1.2.0.bb
new file mode 100644
index 0000000000..10c3264766
--- /dev/null
+++ b/packages/wv/wv_1.2.0.bb
@@ -0,0 +1,12 @@
+LICENSE = "GPLv2"
+
+SRC_URI = "http://switch.dl.sourceforge.net/sourceforge/wvware/wv-${PV}.tar.gz"
+
+S = "${WORKDIR}/${PN}-${PV}"
+
+inherit autotools pkgconfig
+
+do_stage () {
+ autotools_stage_all
+}
+
diff --git a/packages/xaos/.mtn2git_empty b/packages/xaos/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xaos/.mtn2git_empty
diff --git a/packages/xaos/files/.mtn2git_empty b/packages/xaos/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xaos/files/.mtn2git_empty
diff --git a/packages/xaos/files/fix-aalib-configure.patch b/packages/xaos/files/fix-aalib-configure.patch
new file mode 100644
index 0000000000..120d85b6fe
--- /dev/null
+++ b/packages/xaos/files/fix-aalib-configure.patch
@@ -0,0 +1,81 @@
+Index: XaoS-3.2.3/configure.in
+===================================================================
+--- XaoS-3.2.3.orig/configure.in
++++ XaoS-3.2.3/configure.in
+@@ -130,25 +130,7 @@ if test -z "`${CC-cc} -mno-ieee-fp -c co
+ rm -f conftest*
+ ])])
+
+-AC_DEFUN(AC_PROG_AALIB_VER_OK,
+-[AC_CACHE_CHECK(whether aalib version >= 1.4, ac_aalib_ver_ok,
+-[echo '#include <aalib.h>
+-#include <aalib.h>
+-void f(){
+-#if AA_LIB_VERSIONCODE < 104000
+-#error aa_lib is probably buggy
+-/* I am using SuSE 7.3 and 8.0. Both contains version 1.3,
+- * however they report 102000 version code.
+- */
+-#endif
+-}' > conftest.c
+-if test -z "`${CC-cc} -c conftest.c 2>&1`"; then
+- ac_aalib_ver_ok=yes
+- else
+- ac_aalib_ver_ok=no
+- fi
+- rm -f conftest*
+-])])
++ac_aalib_ver_ok=yes
+
+ AC_DEFUN(PROG_CC_SWITCH1,
+ [AC_CACHE_CHECK(whether ${CC-cc} accepts -$1, ac_$2,
+@@ -478,7 +460,6 @@ AC_DEFUN(AC_AALIB, [
+ AC_CHECK_LIB(aa, aa_init)
+ if test "x$ac_cv_lib_aa_aa_init" = xyes; then
+ AC_MSG_RESULT(Found aalib on $1/aalib.h)
+- AC_PROG_AALIB_VER_OK
+ if test $ac_aalib_ver_ok = yes; then
+ #LIBS="$LIBS $2"
+ x11_linked=yes
+@@ -616,22 +597,22 @@ if test "$aa_driver_test" = yes; then
+ dnl Replace `main' with a function in -lm:
+ AC_CHECK_LIB(slang, SLsmg_init_smg)
+
+- AC_NCURSES(/usr/include, ncurses.h, , -I/usr/include/ncurses , "ncurses on /usr/include")
+- AC_NCURSES(/usr/include/ncurses, ncurses.h, , -I/usr/include/ncurses, "ncurses on /usr/include/ncurses")
+- AC_NCURSES(/usr/local/include, ncurses.h, ,-L/usr/local/lib, -I/usr/local/include, "ncurses on /usr/local")
+- AC_NCURSES(/usr/local/include/ncurses, ncurses.h, -L/usr/local/lib -L/usr/local/lib/ncurses, -I/usr/local/include/ncurses, "ncurses on /usr/local/include/ncurses")
++ AC_NCURSES(/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include, ncurses.h, , -I/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include/ncurses , "ncurses on /home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include")
++ AC_NCURSES(/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include/ncurses, ncurses.h, , -I/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include/ncurses, "ncurses on /home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include/ncurses")
++ AC_NCURSES(/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include, ncurses.h, ,-L/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/lib, -I/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include, "ncurses on /usr/local")
++ AC_NCURSES(/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include/ncurses, ncurses.h, -L/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/lib -L/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/lib/ncurses, -I/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include/ncurses, "ncurses on /home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include/ncurses")
+
+- AC_NCURSES(/usr/local/include/ncurses, curses.h, -L/usr/local/lib, -I/usr/local/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/local/.../ncurses")
++ AC_NCURSES(/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include/ncurses, curses.h, -L/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/lib, -I/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/local/.../ncurses")
+
+- AC_NCURSES(/usr/include/ncurses, curses.h, , -I/usr/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/include/ncurses")
+- AC_CURSES(/usr/include, curses.h, , , "curses on /usr/include")
++ AC_NCURSES(/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include/ncurses, curses.h, , -I/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include/ncurses")
++ AC_CURSES(/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include, curses.h, , , "curses on /home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include")
+
+ dnl
+ dnl We couldn't find ncurses, try SysV curses
+ dnl
+ if $search_ncurses
+ then
+- AC_EGREP_HEADER(init_color, /usr/include/curses.h,
++ AC_EGREP_HEADER(init_color, /home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include/curses.h,
+ AC_USE_SYSV_CURSES)
+ fi
+
+@@ -653,8 +634,8 @@ if test "$aa_driver_test" = yes; then
+ LIBS="$LIBS $X_EXTRA_LIBS $X_LIBS"
+ CFLAGS="$CFLAGS $X_CFLAGS"
+ fi
+- AC_AALIB(/usr/include, , )
+- AC_AALIB(/usr/local/include, -L/usr/local/lib, -I/usr/local/include)
++ AC_AALIB(/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include, , )
++ AC_AALIB(/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include, -L/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/lib, -I/home/papercrane/oe/oz354.build/tmp/staging/arm-linux/include)
+ for name in ../aalib-*.*
+ do
+ AC_AALIB($name,"-L$name","-I$name")
diff --git a/packages/xaos/files/fix-build.patch b/packages/xaos/files/fix-build.patch
new file mode 100644
index 0000000000..064c0fb853
--- /dev/null
+++ b/packages/xaos/files/fix-build.patch
@@ -0,0 +1,61 @@
+Index: XaoS-3.2.3/src/util/xstdio.c
+===================================================================
+--- XaoS-3.2.3.orig/src/util/xstdio.c
++++ XaoS-3.2.3/src/util/xstdio.c
+@@ -1,3 +1,4 @@
++#define DATAPATH "/usr/share/XaoS"
+ #ifndef _plan9_
+ #include <string.h>
+ #if defined(__EMX__) || defined(__APPLE__)
+Index: XaoS-3.2.3/src/engine/formulas.c
+===================================================================
+--- XaoS-3.2.3.orig/src/engine/formulas.c
++++ XaoS-3.2.3/src/engine/formulas.c
+@@ -69,6 +69,8 @@
+ #endif
+
+
++#include "../include/complex.h"
++
+ CONST char *CONST incolorname[] = {
+ "0",
+ "zmag",
+Index: XaoS-3.2.3/src/engine/plane.c
+===================================================================
+--- XaoS-3.2.3.orig/src/engine/plane.c
++++ XaoS-3.2.3/src/engine/plane.c
+@@ -53,6 +53,8 @@ CONST char *CONST planename[] = {
+ };
+
+
++#include "../include/complex.h"
++
+ REGISTERS (3)
+ void recalculate (int plane, number_t * x1, number_t * y1)
+ {
+Index: XaoS-3.2.3/src/engine/fractal.c
+===================================================================
+--- XaoS-3.2.3.orig/src/engine/fractal.c
++++ XaoS-3.2.3/src/engine/fractal.c
+@@ -66,6 +66,8 @@
+ #endif
+ #include <xerror.h>
+
++#include "../include/complex.h"
++
+ struct symetryinfo2 cursymetry;
+ struct palette cpalette;
+ struct image cimage;
+Index: XaoS-3.2.3/src/engine/zoom.c
+===================================================================
+--- XaoS-3.2.3.orig/src/engine/zoom.c
++++ XaoS-3.2.3/src/engine/zoom.c
+@@ -69,6 +69,8 @@
+ #define gettext(STRING) STRING
+ #endif
+
++#include "../include/complex.h"
++
+ #define ASIZE 16
+ #define ALIGN(x) (((x)+ASIZE-1)&(~(ASIZE-1)))
+ static int nsymetrized;
diff --git a/packages/xaos/xaos_3.2.3.bb b/packages/xaos/xaos_3.2.3.bb
new file mode 100644
index 0000000000..22cedeb296
--- /dev/null
+++ b/packages/xaos/xaos_3.2.3.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "GNU XaoS, a realtime fractal generator zoomer"
+HOMEPAGE = "http://wmi.math.u-szeged.hu/xaos/doku.php"
+SECTION = "graphics"
+LICENSE = "GPLv2"
+DEPENDS = "aalib libx11 zlib libpng"
+RDEPENDS += "libxxf86dga"
+PR = "r0"
+
+SRC_URI = "http://easynews.dl.sourceforge.net/sourceforge/xaos/XaoS-3.2.3.tar.gz \
+ file://fix-build.patch;patch=1 \
+ file://fix-aalib-configure.patch;patch=1"
+
+S = "${WORKDIR}/XaoS-${PV}"
+
+inherit autotools
+
+EXTRA_OECONF = "--disable-nls"
+#--with-x --with-ncurses=${STAGING_INCDIR} --with-dga-driver=no --with-x11-driver=no --with-aa-driver=yes
+
+do_configure_prepend() {
+ sed -i 's~/usr/include~${STAGING_INCDIR}~' ${S}/configure.in
+ sed -i 's~/usr/local/include~${STAGING_INCDIR}~' ${S}/configure.in
+ sed -i 's~/usr/lib~${STAGING_LIBDIR}~' ${S}/configure.in
+ sed -i 's~/usr/local/lib~${STAGING_LIBDIR}~' ${S}/configure.in
+}
+
+FILES_${PN} = "${bindir} ${datadir}/XaoS/catalogs"
+
+CFLAGS = "-L${STAGING_LIBDIR}"
diff --git a/packages/xcb/libxcb_0.9.93.bb b/packages/xcb/libxcb_0.9.93.bb
new file mode 100644
index 0000000000..2046e53721
--- /dev/null
+++ b/packages/xcb/libxcb_0.9.93.bb
@@ -0,0 +1,47 @@
+DESCRIPTION = "XCB: an X protocol C binding"
+SECTION = "x11/libs"
+LICENSE = "MIT-X"
+HOMEPAGE = "http://xcb.freedesktop.org"
+PR = "r2"
+
+PARALLEL_MAKE = ""
+DEPENDS = "xcb-proto libxau libxslt-native"
+# DEPENDS += "xsltproc-native gperf-native"
+
+SRC_URI = "http://xcb.freedesktop.org/dist/libxcb-${PV}.tar.bz2"
+
+PACKAGES =+ "libxcb-composite libxcb-damage libxcb-dpms libxcb-glx \
+ libxcb-randr libxcb-record libxcb-render libxcb-res \
+ libxcb-screensaver libxcb-shape libxcb-shm libxcb-sync \
+ libxcb-xevie libxcb-xf86dri libxcb-xfixes libxcb-xinerama \
+ libxcb-xlib libxcb-xprint libxcb-xtest libxcb-xv libxcb-xvmc"
+
+FILES_${PN} = "${libdir}/libxcb.so.*"
+#FILES_${PN}-dev = "${libdir}/libxcb.* ${libdir}/pkgconfig/*.pc ${includedir}/xcb/*.h"
+FILES_libxcb-composite = "${libdir}/libxcb-composite.so.*"
+FILES_libxcb-damage = "${libdir}/libxcb-damage.so.*"
+FILES_libxcb-dpms = "${libdir}/libxcb-dpms.so.*"
+FILES_libxcb-glx = "${libdir}/libxcb-glx.so.*"
+FILES_libxcb-randr = "${libdir}/libxcb-randr.so.*"
+FILES_libxcb-record = "${libdir}/libxcb-record.so.*"
+FILES_libxcb-render = "${libdir}/libxcb-render.so.*"
+FILES_libxcb-res = "${libdir}/libxcb-res.so.*"
+FILES_libxcb-screensaver = "${libdir}/libxcb-screensaver.so.*"
+FILES_libxcb-shape = "${libdir}/libxcb-shape.so.*"
+FILES_libxcb-shm = "${libdir}/libxcb-shm.so.*"
+FILES_libxcb-sync = "${libdir}/libxcb-sync.so.*"
+FILES_libxcb-xevie = "${libdir}/libxcb-xevie.so.*"
+FILES_libxcb-xf86dri = "${libdir}/libxcb-xf86dri.so.*"
+FILES_libxcb-xfixes = "${libdir}/libxcb-xfixes.so.*"
+FILES_libxcb-xinerama = "${libdir}/libxcb-xinerama.so.*"
+FILES_libxcb-xlib = "${libdir}/libxcb-xlib.so.*"
+FILES_libxcb-xprint = "${libdir}/libxcb-xprint.so.*"
+FILES_libxcb-xtest = "${libdir}/libxcb-xtest.so.*"
+FILES_libxcb-xv = "${libdir}/libxcb-xv.so.*"
+FILES_libxcb-xvmc = "${libdir}/libxcb-xvmc.so.*"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/xcb/xcb-proto_0.9.93.bb b/packages/xcb/xcb-proto_0.9.93.bb
new file mode 100644
index 0000000000..f7f4160d5b
--- /dev/null
+++ b/packages/xcb/xcb-proto_0.9.93.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "XCB: an X protocol C binding"
+SECTION = "x11/libs"
+LICENSE = "MIT-X"
+HOMEPAGE = "http://xcb.freedesktop.org"
+PR = "r0"
+
+SRC_URI = "http://xcb.freedesktop.org/dist/xcb-proto-${PV}.tar.bz2"
+
+inherit autotools pkgconfig
+
+FILES_${PN}-dev += "${datadir}/xcb/*.xml ${datadir}/xcb/xcb.xsd"
+
+do_stage() {
+ oe_runmake DESTDIR="${D}" install
+ mkdir -p ${STAGING_LIBDIR}/pkgconfig
+ install ${D}${libdir}/pkgconfig/xcb-proto.pc ${STAGING_LIBDIR}/pkgconfig
+ mkdir -p ${STAGING_DATADIR}/xcb
+ install ${D}${datadir}/xcb/*.xml ${STAGING_DATADIR}/xcb
+}
diff --git a/packages/xcb/xcb-util_0.2.bb b/packages/xcb/xcb-util_0.2.bb
new file mode 100644
index 0000000000..b0efa9f669
--- /dev/null
+++ b/packages/xcb/xcb-util_0.2.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "XCB: an X protocol C binding"
+SECTION = "x11/libs"
+LICENSE = "MIT-X"
+HOMEPAGE = "http://xcb.freedesktop.org"
+PR = "r0"
+
+DEPENDS = "libxcb"
+# DEPENDS += "gperf-native"
+
+PARALLEL_MAKE = ""
+
+SRC_URI = "http://xcb.freedesktop.org/dist/xcb-util-${PV}.tar.bz2"
+
+PACKAGES = "libxcbatom libxcbatom-dev libxcbaux libxcbaux-dev libxcbevent libxcbevent-dev libxcbicccm libxcbicccm-dev \
+ libxcbimage libxcbimage-dev libxcbkeysyms libxcbkeysyms-dev libxcbproperty libxcbproperty-dev \
+ libxcbreply libxcbreply-dev libxcbwm libxcbwm-dev"
+
+FILES_libxcbatom = "${libdir}/libXCBAtom.so.*"
+FILES_libxcbatom-dev = "${libdir}/libXCBAtom.* ${libdir}/pkgconfig/xcb-atom.pc ${includedir}/X11/XCB/xcb_atom.h"
+FILES_libxcbaux = "${libdir}/libXCBAux.so.*"
+FILES_libxcbaux-dev = "${libdir}/libXCBAux.* ${libdir}/pkgconfig/xcb-aux.pc ${includedir}/X11/XCB/xcb_aux.h"
+FILES_libxcbevent = "${libdir}/libXCBEvent.so.*"
+FILES_libxcbevent-dev = "${libdir}/libXCBEvent.* ${libdir}/pkgconfig/xcb-event.pc ${includedir}/X11/XCB/xcb_event.h"
+FILES_libxcbicccm = "${libdir}/libXCBICCCM.so.*"
+FILES_libxcbicccm-dev = "${libdir}/libICCCM.* ${libdir}/pkgconfig/xcb-icccm.pc ${includedir}/X11/XCB/xcb_icccm.h"
+FILES_libxcbimage = "${libdir}/libXCBImage.so.*"
+FILES_libxcbimage-dev = "${libdir}/libXCBImage.* ${libdir}/pkgconfig/xcb-image.pc ${includedir}/X11/XCB/xcb_image.h"
+FILES_libxcbkeysyms = "${libdir}/libXCBKeysyms.so.*"
+FILES_libxcbkeysyms-dev = "${libdir}/libXCBKeysyms.* ${libdir}/pkgconfig/xcb-keysyms.pc ${includedir}/X11/XCB/xcb_keysyms.h"
+FILES_libxcbproperty = "${libdir}/libXCBProperty.so.*"
+FILES_libxcbproperty-dev = "${libdir}/libXCBProperty.* ${libdir}/pkgconfig/xcb-property.pc ${includedir}/X11/XCB/xcb_property.h"
+FILES_libxcbreply = "${libdir}/libXCBReply.so.*"
+FILES_libxcbreply-dev = "${libdir}/libXCBReply.* ${libdir}/pkgconfig/xcb-reply.pc ${includedir}/X11/XCB/xcb_reply.h"
+FILES_libxcbwm = "${libdir}/libXCBWM.so.*"
+FILES_libxcbwm-dev = "${libdir}/libXCBWM.* ${libdir}/pkgconfig/xcb-wm.pc ${includedir}/X11/XCB/xcb_wm.h"
+
+inherit autotools pkgconfig
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/xerces-c/xerces-c_2.6.0.bb b/packages/xerces-c/xerces-c_2.6.0.bb
index c76e3fc9b6..fe0677f54f 100644
--- a/packages/xerces-c/xerces-c_2.6.0.bb
+++ b/packages/xerces-c/xerces-c_2.6.0.bb
@@ -1,13 +1,9 @@
-PR = "r0"
DESCRIPTION = "Xerces-c xml"
-SECTION = "libs"
+SECTION = "libs"
PRIORITY = "optional"
LICENSE = "MIT"
-
-
-
-S="${WORKDIR}/xerces-c-src_2_6_0"
+S = "${WORKDIR}/xerces-c-src_2_6_0"
SRC_URI = "http://www.axint.net/apache/xml/xerces-c/xerces-c-src_2_6_0.tar.gz"
diff --git a/packages/xerces-c/xerces-c_2.7.0.bb b/packages/xerces-c/xerces-c_2.7.0.bb
index 86f88450cd..8fdab80180 100644
--- a/packages/xerces-c/xerces-c_2.7.0.bb
+++ b/packages/xerces-c/xerces-c_2.7.0.bb
@@ -1,13 +1,9 @@
-PR = "r0"
DESCRIPTION = "Xerces-c xml"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "MIT"
-
-
-
-S="${WORKDIR}/xerces-c-src_2_7_0"
+S = "${WORKDIR}/xerces-c-src_2_7_0"
SRC_URI = "http://www.axint.net/apache/xml/xerces-c/source/xerces-c-src_2_7_0.tar.gz"
diff --git a/packages/xfce-mcs-manager/xfce-mcs-manager.inc b/packages/xfce-mcs-manager/xfce-mcs-manager.inc
deleted file mode 100644
index d913910d69..0000000000
--- a/packages/xfce-mcs-manager/xfce-mcs-manager.inc
+++ /dev/null
@@ -1,24 +0,0 @@
-# xfce-mcs-manager OE build file
-# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
-# Released under the MIT license (see packages/COPYING)
-
-DESCRIPTION="XFCE4 Settings manager."
-DEPENDS="libxfcegui4 libxfce4mcs"
-SECTION = "x11"
-
-inherit xfce
-
-do_stage() {
- install -d ${STAGING_INCDIR}/xfce4
- install -d ${STAGING_INCDIR}/xfce4/xfce-mcs-manager
- install -m 644 xfce-mcs-manager/manager-plugin.h ${STAGING_INCDIR}/xfce4/xfce-mcs-manager
-}
-
-# xfce-mcs-manager.pc uses ${libdir} to indicate where the mcs plugins live
-# the standard pkgconfig mangling was confusing us. Mangling is not required
-# for this particular .pc, so the following will suffice:
-
-do_stage_append () {
- install -d ${PKG_CONFIG_PATH}
- install -m 0644 ${S}/xfce-mcs-manager/xfce-mcs-manager.pc ${PKG_CONFIG_PATH}/xfce-mcs-manager.pc
-}
diff --git a/packages/xfce-mcs-manager/xfce-mcs-manager_4.2.3.bb b/packages/xfce-mcs-manager/xfce-mcs-manager_4.3.99.2.bb
index de5cf2b012..de5cf2b012 100644
--- a/packages/xfce-mcs-manager/xfce-mcs-manager_4.2.3.bb
+++ b/packages/xfce-mcs-manager/xfce-mcs-manager_4.3.99.2.bb
diff --git a/packages/xfce-mcs-plugins/xfce-mcs-plugins_4.2.3.bb b/packages/xfce-mcs-plugins/xfce-mcs-plugins_4.3.99.2.bb
index 02ad97e860..02ad97e860 100644
--- a/packages/xfce-mcs-plugins/xfce-mcs-plugins_4.2.3.bb
+++ b/packages/xfce-mcs-plugins/xfce-mcs-plugins_4.3.99.2.bb
diff --git a/packages/xfce-utils/xfce-utils.inc b/packages/xfce-utils/xfce-utils.inc
deleted file mode 100644
index 3de7625940..0000000000
--- a/packages/xfce-utils/xfce-utils.inc
+++ /dev/null
@@ -1,26 +0,0 @@
-# xfce-utils OE build file
-# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
-# Released under the MIT license (see packages/COPYING)
-
-DESCRIPTION="XFCE4 Utilities"
-DEPENDS = "virtual/libx11 libxfcegui4 xfce-mcs-manager"
-inherit xfce
-
-FILES_${PN} += " /usr/share/xfce4/AUTHORS \
- /usr/share/xfce4/BSD \
- /usr/share/xfce4/COPYING \
- /usr/share/xfce4/GPL \
- /usr/share/xfce4/INFO \
- /usr/share/xfce4/LGPL \
- /usr/share/xfce4/AUTHORS.html \
- /usr/share/xfce4/BSD.html \
- /usr/share/xfce4/COPYING.html \
- /usr/share/xfce4/GPL.html \
- /usr/share/xfce4/INFO.html \
- /usr/share/xfce4/LGPL.html"
-
-PACKAGES += "${PN}-mcs-plugins"
-FILES_${PN}-mcs-plugins = "/usr/lib/xfce4/mcs-plugins/"
-
-# NOTE: This package takes a --with-browser for the default browser
-# NOTE: Works with gdm also gtkhtml
diff --git a/packages/xfce-utils/xfce-utils_4.3.99.2.bb b/packages/xfce-utils/xfce-utils_4.3.99.2.bb
new file mode 100644
index 0000000000..472ba68a14
--- /dev/null
+++ b/packages/xfce-utils/xfce-utils_4.3.99.2.bb
@@ -0,0 +1,6 @@
+# xfce-utils OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+PR = "r2"
+require ${PN}.inc
diff --git a/packages/xfce/.mtn2git_empty b/packages/xfce/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xfce/.mtn2git_empty
diff --git a/packages/xfce/exo_0.3.2.bb b/packages/xfce/exo_0.3.2.bb
new file mode 100644
index 0000000000..6bf0e1292f
--- /dev/null
+++ b/packages/xfce/exo_0.3.2.bb
@@ -0,0 +1,17 @@
+
+DEPENDS = "libxfce4util xfce-mcs-manager hal liburi-perl-native python-native"
+
+inherit pkgconfig xfce
+
+SRC_URI = "http://www.us.xfce.org/archive/xfce-4.4.1/src/exo-0.3.2.tar.bz2"
+
+# Note: Python checking is broken
+
+do_stage() {
+ autotools_stage_all
+}
+
+FILES_${PN} += "${datadir}/xfce4/ \
+ ${libdir}/xfce4/mcs-plugins/exo-preferred-applications-settings.so"
+FILES_${PN}-dev += "${libdir}/xfce4/mcs-plugins/exo-preferred-applications-settings.*"
+FILES_${PN}-dbg += "${libdir}/xfce4/mcs-plugins/.debug/exo-preferred-applications-settings.*"
diff --git a/packages/xfce/gtk-xfce-engine_2.4.1.bb b/packages/xfce/gtk-xfce-engine_2.4.1.bb
new file mode 100644
index 0000000000..bcfecaf53b
--- /dev/null
+++ b/packages/xfce/gtk-xfce-engine_2.4.1.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "XFCE theme for GTK"
+
+inherit xfce
+
+SRC_URI = "http://www.us.xfce.org/archive/xfce-4.4.1/src/gtk-xfce-engine-${PV}.tar.bz2"
+
+FILES_${PN} += "${libdir}/gtk-2.0/*/engines/libxfce.so \
+ ${datadir}/themes/"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/*/engines/.debug"
diff --git a/packages/libxfce4mcs/libxfce4mcs.inc b/packages/xfce/libxfce4mcs.inc
index 19268fc9b3..19268fc9b3 100644
--- a/packages/libxfce4mcs/libxfce4mcs.inc
+++ b/packages/xfce/libxfce4mcs.inc
diff --git a/packages/xfce/libxfce4mcs_4.4.1.bb b/packages/xfce/libxfce4mcs_4.4.1.bb
new file mode 100644
index 0000000000..07d7a95ae1
--- /dev/null
+++ b/packages/xfce/libxfce4mcs_4.4.1.bb
@@ -0,0 +1,5 @@
+# libxfce4mcs OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+require ${PN}.inc
diff --git a/packages/xfce/libxfce4util.inc b/packages/xfce/libxfce4util.inc
new file mode 100644
index 0000000000..d5dd6d6565
--- /dev/null
+++ b/packages/xfce/libxfce4util.inc
@@ -0,0 +1,26 @@
+# libxfce4util OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+DESCRIPTION = "Basic utility library for Xfce4"
+SECTION = "x11/libs"
+LICENSE = "GPL"
+DEPENDS = "glib-2.0 xfce4-dev-tools"
+
+inherit xfce pkgconfig
+
+MACROS="m4/X11.m4 m4/debug.m4 m4/depends.m4 m4/i18n.m4"
+
+do_stage() {
+ install -d ${STAGING_LIBDIR} ${STAGING_INCDIR}/libxfce4util
+ # The line below expands to the list of headers that native makefile
+ # would install. Complain and/or fix if it's not portable enough
+ for file in $(eval $(make -n -C libxfce4util install|grep "^list='[^.]\\+.h"|cut -d\; -f1); echo $list); do
+ install -m 644 libxfce4util/$file ${STAGING_INCDIR}/libxfce4util
+ done
+
+ oe_libinstall -C libxfce4util -so libxfce4util ${STAGING_LIBDIR}
+
+}
+
+FILES_${PN}-dev += " ${datadir}/xfce4/m4"
diff --git a/packages/xfce/libxfce4util_4.4.1.bb b/packages/xfce/libxfce4util_4.4.1.bb
new file mode 100644
index 0000000000..70f5ddac93
--- /dev/null
+++ b/packages/xfce/libxfce4util_4.4.1.bb
@@ -0,0 +1,5 @@
+# libxfce4util OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+require ${PN}.inc
diff --git a/packages/libxfcegui4/libxfcegui4.inc b/packages/xfce/libxfcegui4.inc
index 714e365af4..714e365af4 100644
--- a/packages/libxfcegui4/libxfcegui4.inc
+++ b/packages/xfce/libxfcegui4.inc
diff --git a/packages/xfce/libxfcegui4_4.4.1.bb b/packages/xfce/libxfcegui4_4.4.1.bb
new file mode 100644
index 0000000000..2def53685a
--- /dev/null
+++ b/packages/xfce/libxfcegui4_4.4.1.bb
@@ -0,0 +1,5 @@
+# libxfcegui4 OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+require ${PN}.inc
diff --git a/packages/xfce/mousepad_0.2.12.bb b/packages/xfce/mousepad_0.2.12.bb
new file mode 100644
index 0000000000..670a28dbd7
--- /dev/null
+++ b/packages/xfce/mousepad_0.2.12.bb
@@ -0,0 +1,6 @@
+DESCRIPTION = "Text editor for Xfce based on Leafpad"
+DEPENDS = "libxfce4util xfce-mcs-manager hal liburi-perl-native python-native"
+
+inherit xfce
+
+SRC_URI = "http://www.us.xfce.org/archive/xfce-4.4.1/src/mousepad-${PV}.tar.bz2"
diff --git a/packages/xfce/orage_4.4.1.bb b/packages/xfce/orage_4.4.1.bb
new file mode 100644
index 0000000000..b8f5284454
--- /dev/null
+++ b/packages/xfce/orage_4.4.1.bb
@@ -0,0 +1,5 @@
+DESCRIPTION = "Calendar application for the Xfce Desktop Environment"
+DEPENDS = "libxfcegui4 exo libxml-parser-perl-native xfce4-panel xfce-mcs-manager"
+RREPLACES = "xfcalendar"
+
+inherit xfce
diff --git a/packages/xfce/thunar_0.8.0.bb b/packages/xfce/thunar_0.8.0.bb
new file mode 100644
index 0000000000..ea739e4cde
--- /dev/null
+++ b/packages/xfce/thunar_0.8.0.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "File manager for the Xfce Desktop Environment"
+DEPENDS = "libxfcegui4 exo dbus-glib libexif xfce4-panel libice libsm"
+
+inherit xfce
+
+SRC_URI = "http://thunar.xfce.org/download/sources/Thunar/0.8.0/Thunar-0.8.0.tar.bz2"
+
+S = "${WORKDIR}/Thunar-${PV}/"
+
+FILES_${PN} += "${libdir}/thunarx-1/*.so \
+ ${datadir}/dbus-1 \
+ ${datadir}/thumbnailers \
+ ${datadir}/Thunar \
+ ${datadir}/xfce4"
+FILES_${PN}-dbg += "${libdir}/thunarx-1/.debug/"
diff --git a/packages/xfce/xfce-mcs-manager.inc b/packages/xfce/xfce-mcs-manager.inc
new file mode 100644
index 0000000000..c50bf0ca64
--- /dev/null
+++ b/packages/xfce/xfce-mcs-manager.inc
@@ -0,0 +1,25 @@
+# xfce-mcs-manager OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+DESCRIPTION="XFCE4 Settings manager."
+DEPENDS="libxfcegui4 libxfce4mcs"
+SECTION = "x11"
+PR = "r1"
+
+inherit xfce
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/xfce4
+ install -d ${STAGING_INCDIR}/xfce4/xfce-mcs-manager
+ install -m 644 xfce-mcs-manager/manager-plugin.h ${STAGING_INCDIR}/xfce4/xfce-mcs-manager
+}
+
+# xfce-mcs-manager.pc uses ${libdir} to indicate where the mcs plugins live
+# the standard pkgconfig mangling was confusing us. Mangling is not required
+# for this particular .pc, so the following will suffice:
+
+do_stage_append () {
+ install -d ${PKG_CONFIG_PATH}
+ sed -e 's:${includedir}:${STAGING_INCDIR}:;' ${S}/xfce-mcs-manager/xfce-mcs-manager.pc >${PKG_CONFIG_PATH}/xfce-mcs-manager.pc
+}
diff --git a/packages/xfce/xfce-mcs-manager_4.4.1.bb b/packages/xfce/xfce-mcs-manager_4.4.1.bb
new file mode 100644
index 0000000000..de5cf2b012
--- /dev/null
+++ b/packages/xfce/xfce-mcs-manager_4.4.1.bb
@@ -0,0 +1,5 @@
+# xfce-mcs-manager OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+require ${PN}.inc
diff --git a/packages/xfce-mcs-plugins/xfce-mcs-plugins.inc b/packages/xfce/xfce-mcs-plugins.inc
index b5b4505e98..b5b4505e98 100644
--- a/packages/xfce-mcs-plugins/xfce-mcs-plugins.inc
+++ b/packages/xfce/xfce-mcs-plugins.inc
diff --git a/packages/xfce/xfce-mcs-plugins_4.4.1.bb b/packages/xfce/xfce-mcs-plugins_4.4.1.bb
new file mode 100644
index 0000000000..02ad97e860
--- /dev/null
+++ b/packages/xfce/xfce-mcs-plugins_4.4.1.bb
@@ -0,0 +1,5 @@
+# xfce-mcs-plugins OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+require ${PN}.inc
diff --git a/packages/xfce/xfce-terminal_0.2.6.bb b/packages/xfce/xfce-terminal_0.2.6.bb
new file mode 100644
index 0000000000..07a8eb6eb5
--- /dev/null
+++ b/packages/xfce/xfce-terminal_0.2.6.bb
@@ -0,0 +1,8 @@
+DESCRIPTION = "Terminal emulator for the Xfce desktop environment"
+DEPENDS = "exo vte dbus-glib gtk+"
+
+inherit xfce
+
+SRC_URI = "http://www.us.xfce.org/archive/xfce-4.4.1/src/Terminal-${PV}.tar.bz2"
+
+S = "${WORKDIR}/Terminal-${PV}"
diff --git a/packages/xfce/xfce-utils.inc b/packages/xfce/xfce-utils.inc
new file mode 100644
index 0000000000..0b191194d7
--- /dev/null
+++ b/packages/xfce/xfce-utils.inc
@@ -0,0 +1,29 @@
+# xfce-utils OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+DESCRIPTION="XFCE4 Utilities"
+DEPENDS = "virtual/libx11 libxfcegui4 xfce-mcs-manager"
+inherit xfce
+
+FILES_${PN} += " \
+ ${bindir}/* \
+ ${datadir}/dbus-1/* \
+ ${datadir}/xfce4/AUTHORS \
+ ${datadir}/xfce4/BSD \
+ ${datadir}/xfce4/COPYING \
+ ${datadir}/xfce4/GPL \
+ ${datadir}/xfce4/INFO \
+ ${datadir}/xfce4/LGPL \
+ ${datadir}/xfce4/AUTHORS.html \
+ ${datadir}/xfce4/BSD.html \
+ ${datadir}/xfce4/COPYING.html \
+ ${datadir}/xfce4/GPL.html \
+ ${datadir}/xfce4/INFO.html \
+ ${datadir}/xfce4/LGPL.html"
+
+PACKAGES =+ "${PN}-mcs-plugins"
+FILES_${PN}-mcs-plugins = "${libdir}/xfce4/mcs-plugins/"
+
+# NOTE: This package takes a --with-browser for the default browser
+# NOTE: Works with gdm also gtkhtml
diff --git a/packages/xfce-utils/xfce-utils_4.2.2.bb b/packages/xfce/xfce-utils_4.4.1.bb
index 57909f2c2d..57909f2c2d 100644
--- a/packages/xfce-utils/xfce-utils_4.2.2.bb
+++ b/packages/xfce/xfce-utils_4.4.1.bb
diff --git a/packages/xfce4-goodies/xfce4-appfinder.inc b/packages/xfce/xfce4-appfinder.inc
index 0d102f3bd0..0d102f3bd0 100644
--- a/packages/xfce4-goodies/xfce4-appfinder.inc
+++ b/packages/xfce/xfce4-appfinder.inc
diff --git a/packages/xfce4-goodies/xfce4-appfinder_4.2.2.bb b/packages/xfce/xfce4-appfinder_4.4.1.bb
index f7c97970d5..f7c97970d5 100644
--- a/packages/xfce4-goodies/xfce4-appfinder_4.2.2.bb
+++ b/packages/xfce/xfce4-appfinder_4.4.1.bb
diff --git a/packages/xfce/xfce4-dev-tools.inc b/packages/xfce/xfce4-dev-tools.inc
new file mode 100644
index 0000000000..03f64e39e5
--- /dev/null
+++ b/packages/xfce/xfce4-dev-tools.inc
@@ -0,0 +1,12 @@
+DESCRIPTION = "Xfce4 development tools"
+SECTION = "x11/libs"
+LICENSE = "GPL"
+
+inherit xfce pkgconfig
+
+do_stage() {
+ install -d ${STAGING_DATADIR}/aclocal
+ install -m 644 m4macros/*.m4 ${STAGING_DATADIR}/aclocal/
+}
+
+FILES_${PN}-dev += " ${datadir}/xfce4/dev-tools/m4macros/*.m4"
diff --git a/packages/xfce/xfce4-dev-tools_4.4.0.bb b/packages/xfce/xfce4-dev-tools_4.4.0.bb
new file mode 100644
index 0000000000..bd54419686
--- /dev/null
+++ b/packages/xfce/xfce4-dev-tools_4.4.0.bb
@@ -0,0 +1 @@
+require ${PN}.inc
diff --git a/packages/xfce/xfce4-icon-theme_4.4.1.bb b/packages/xfce/xfce4-icon-theme_4.4.1.bb
new file mode 100644
index 0000000000..69d9dacbac
--- /dev/null
+++ b/packages/xfce/xfce4-icon-theme_4.4.1.bb
@@ -0,0 +1,6 @@
+DESCRIPTION = "Rodent vector icon theme used by XFCE"
+PACKAGE_ARCH = "all"
+
+inherit xfce
+
+FILES_${PN} += "${datadir}/xfce4"
diff --git a/packages/xfce4-goodies/xfce4-mixer.inc b/packages/xfce/xfce4-mixer.inc
index a923489f32..a923489f32 100644
--- a/packages/xfce4-goodies/xfce4-mixer.inc
+++ b/packages/xfce/xfce4-mixer.inc
diff --git a/packages/xfce4-goodies/xfce4-mixer_4.2.2.bb b/packages/xfce/xfce4-mixer_4.4.1.bb
index 6dd3c0565b..6dd3c0565b 100644
--- a/packages/xfce4-goodies/xfce4-mixer_4.2.2.bb
+++ b/packages/xfce/xfce4-mixer_4.4.1.bb
diff --git a/packages/xfce4-panel/xfce4-panel.inc b/packages/xfce/xfce4-panel.inc
index e43807540e..e43807540e 100644
--- a/packages/xfce4-panel/xfce4-panel.inc
+++ b/packages/xfce/xfce4-panel.inc
diff --git a/packages/xfce4-panel/xfce4-panel_4.2.2.bb b/packages/xfce/xfce4-panel_4.4.1.bb
index 18dce6fa3c..18dce6fa3c 100644
--- a/packages/xfce4-panel/xfce4-panel_4.2.2.bb
+++ b/packages/xfce/xfce4-panel_4.4.1.bb
diff --git a/packages/xfce/xfce4-session_4.4.1.bb b/packages/xfce/xfce4-session_4.4.1.bb
new file mode 100644
index 0000000000..a572b80f55
--- /dev/null
+++ b/packages/xfce/xfce4-session_4.4.1.bb
@@ -0,0 +1,4 @@
+DESCRIPTION = "Calendar application for the Xfce Desktop Environment"
+DEPENDS = "libxfcegui4 libxfce4util xfce-mcs-manager dbus"
+
+inherit xfce
diff --git a/packages/xfce/xfdesktop.inc b/packages/xfce/xfdesktop.inc
new file mode 100644
index 0000000000..e3e64ef355
--- /dev/null
+++ b/packages/xfce/xfdesktop.inc
@@ -0,0 +1,14 @@
+# xfdesktop OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+DESCRIPTION="xfce4 Desktop Background Manager"
+SECTION = "x11/base"
+DEPENDS = "virtual/libx11 libxfcegui4 libxfce4mcs libxml2 xfce4-panel"
+
+inherit xfce
+PACKAGES += "xfdesktop-backdrops ${PN}-mcs-plugins"
+
+FILES_xfdesktop-backdrops="${datadir}/xfce4/backdrops/*"
+FILES_${PN}-mcs-plugins += "${libdir}/xfce4/mcs-plugins/*.so"
+FILES_${PN} += "${libdir}/xfce4/panel-plugins/*.so"
diff --git a/packages/xfdesktop/xfdesktop_4.2.2.bb b/packages/xfce/xfdesktop_4.4.1.bb
index d7af836791..d7af836791 100644
--- a/packages/xfdesktop/xfdesktop_4.2.2.bb
+++ b/packages/xfce/xfdesktop_4.4.1.bb
diff --git a/packages/xfprint/xfprint_4.2.0.bb b/packages/xfce/xfprint_4.4.1.bb
index 7e349ce881..7e349ce881 100644
--- a/packages/xfprint/xfprint_4.2.0.bb
+++ b/packages/xfce/xfprint_4.4.1.bb
diff --git a/packages/xfwm4-themes/xfwm4-themes.inc b/packages/xfce/xfwm4-themes.inc
index c60edc5b83..c60edc5b83 100644
--- a/packages/xfwm4-themes/xfwm4-themes.inc
+++ b/packages/xfce/xfwm4-themes.inc
diff --git a/packages/xfwm4-themes/xfwm4-themes_4.2.2.bb b/packages/xfce/xfwm4-themes_4.4.1.bb
index 9f67ad2ed9..9f67ad2ed9 100644
--- a/packages/xfwm4-themes/xfwm4-themes_4.2.2.bb
+++ b/packages/xfce/xfwm4-themes_4.4.1.bb
diff --git a/packages/xfwm4/xfwm4.inc b/packages/xfce/xfwm4.inc
index e7e5bc1862..e7e5bc1862 100644
--- a/packages/xfwm4/xfwm4.inc
+++ b/packages/xfce/xfwm4.inc
diff --git a/packages/xfce/xfwm4_4.4.1.bb b/packages/xfce/xfwm4_4.4.1.bb
new file mode 100644
index 0000000000..2fc47e641e
--- /dev/null
+++ b/packages/xfce/xfwm4_4.4.1.bb
@@ -0,0 +1,6 @@
+# xfwm4 OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+PR="r1"
+require ${PN}.inc
diff --git a/packages/xfce4-panel/xfce4-panel_4.3.99.2.bb b/packages/xfce4-panel/xfce4-panel_4.3.99.2.bb
new file mode 100644
index 0000000000..18dce6fa3c
--- /dev/null
+++ b/packages/xfce4-panel/xfce4-panel_4.3.99.2.bb
@@ -0,0 +1,6 @@
+# xfce4-panel OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+PR="r1"
+require ${PN}.inc
diff --git a/packages/xfdesktop/xfdesktop.inc b/packages/xfdesktop/xfdesktop.inc
deleted file mode 100644
index 380832d7c3..0000000000
--- a/packages/xfdesktop/xfdesktop.inc
+++ /dev/null
@@ -1,16 +0,0 @@
-# xfdesktop OE build file
-# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
-# Released under the MIT license (see packages/COPYING)
-
-DESCRIPTION="xfce4 Desktop Background Manager"
-SECTION = "x11/base"
-DEPENDS = "virtual/libx11 libxfcegui4 libxfce4mcs libxml2"
-
-inherit xfce
-PACKAGES += "xfdesktop-backdrops ${PN}-mcs-plugins"
-
-FILES_xfdesktop-backdrops="${datadir}/xfce4/backdrops/*"
-FILES_${PN}-mcs-plugins += "${libdir}/xfce4/mcs-plugins/*.so"
-FILES_${PN} += "${libdir}/xfce4/panel-plugins/*.so"
-
-
diff --git a/packages/xfdesktop/xfdesktop_4.3.99.2.bb b/packages/xfdesktop/xfdesktop_4.3.99.2.bb
new file mode 100644
index 0000000000..d7af836791
--- /dev/null
+++ b/packages/xfdesktop/xfdesktop_4.3.99.2.bb
@@ -0,0 +1,6 @@
+# xfdesktop OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+PR = "r1"
+require ${PN}.inc
diff --git a/packages/xffm/xffm_4.3.99.2.bb b/packages/xffm/xffm_4.3.99.2.bb
new file mode 100644
index 0000000000..c098e1c96b
--- /dev/null
+++ b/packages/xffm/xffm_4.3.99.2.bb
@@ -0,0 +1,5 @@
+# xffm OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+require ${PN}.inc
diff --git a/packages/xfprint/xfprint_4.3.99.2.bb b/packages/xfprint/xfprint_4.3.99.2.bb
new file mode 100644
index 0000000000..7e349ce881
--- /dev/null
+++ b/packages/xfprint/xfprint_4.3.99.2.bb
@@ -0,0 +1,9 @@
+# xfprint OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+DESCRIPTION="XFCE4 Print Manager"
+SECTION = "x11/base"
+
+DEPENDS="libxfcegui4"
+inherit xfce
diff --git a/packages/xfsprogs/xfsprogs_2.8.16.bb b/packages/xfsprogs/xfsprogs_2.8.16.bb
index 60cc6a2994..603b6cbb08 100644
--- a/packages/xfsprogs/xfsprogs_2.8.16.bb
+++ b/packages/xfsprogs/xfsprogs_2.8.16.bb
@@ -2,7 +2,8 @@ DESCRIPTION = "XFS Filesystem Utilities"
HOMEPAGE = "http://oss.sgi.com/projects/xfs"
LICENSE = "GPL"
SECTION = "base"
-PR = "r0"
+PR = "r2"
+DEPENDS = "e2fsprogs-libs"
SRC_URI = "ftp://oss.sgi.com/projects/xfs/download/download/cmd_tars/xfsprogs_2.8.16-1.tar.gz"
@@ -11,7 +12,7 @@ inherit autotools
EXTRA_OECONF = "--enable-gettext=no"
do_configure () {
- export LIBTOOL="${STAGING_BINDIR}/${HOST_SYS}-libtool"
+ export LIBTOOL="${STAGING_BINDIR_NATIVE}/${HOST_SYS}-libtool"
export DEBUG="-DNDEBUG"
oe_runconf
}
diff --git a/packages/xfwm4-themes/xfwm4-themes_4.3.99.2.bb b/packages/xfwm4-themes/xfwm4-themes_4.3.99.2.bb
new file mode 100644
index 0000000000..9f67ad2ed9
--- /dev/null
+++ b/packages/xfwm4-themes/xfwm4-themes_4.3.99.2.bb
@@ -0,0 +1,5 @@
+# xfwm4-themes OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+require ${PN}.inc
diff --git a/packages/xfwm4/xfwm4_4.3.99.2.bb b/packages/xfwm4/xfwm4_4.3.99.2.bb
new file mode 100644
index 0000000000..e1feff01f1
--- /dev/null
+++ b/packages/xfwm4/xfwm4_4.3.99.2.bb
@@ -0,0 +1,5 @@
+# xfwm4 OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+require ${PN}.inc
diff --git a/packages/xoo/files/.mtn2git_empty b/packages/xoo/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xoo/files/.mtn2git_empty
diff --git a/packages/xoo/files/gta01.png b/packages/xoo/files/gta01.png
new file mode 100644
index 0000000000..e0aae82051
--- /dev/null
+++ b/packages/xoo/files/gta01.png
Binary files differ
diff --git a/packages/xoo/files/gta01.xml b/packages/xoo/files/gta01.xml
new file mode 100644
index 0000000000..877a91f180
--- /dev/null
+++ b/packages/xoo/files/gta01.xml
@@ -0,0 +1,7 @@
+<skin>
+ <device
+ img="gta01.png"
+ width="680" height="689"
+ display_width="480" display_height="640" display_depth="16"
+ display_x="98" display_y="22" />
+</skin>
diff --git a/packages/xoo/xoo_svn.bb b/packages/xoo/xoo_svn.bb
index 992d918316..71a39b057d 100644
--- a/packages/xoo/xoo_svn.bb
+++ b/packages/xoo/xoo_svn.bb
@@ -7,7 +7,16 @@ DEPENDS = "virtual/libx11 libxtst gtk+ libglade"
PV = "0.7+svn${SRCDATE}"
PR = "r1"
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=Xoo;proto=http"
+SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=Xoo;proto=http \
+ file://*.png \
+ file://*.xml"
S = "${WORKDIR}/Xoo"
inherit autotools
+
+do_install_append() {
+ for i in ${WORKDIR}/*.png ${WORKDIR}/*.xml; do
+ install -m 0644 $i ${D}${datadir}/${PN}/
+ done
+}
+
diff --git a/packages/xorg-app/appres_1.0.1.bb b/packages/xorg-app/appres_1.0.1.bb
new file mode 100644
index 0000000000..4b6447a82e
--- /dev/null
+++ b/packages/xorg-app/appres_1.0.1.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+DESCRIPTION = "The appres program prints the resources seen by an application."
+
+DEPENDS += " virtual/libx11 libxt"
+
diff --git a/packages/xorg-app/beforelight_1.0.2.bb b/packages/xorg-app/beforelight_1.0.2.bb
new file mode 100644
index 0000000000..a83c84eb79
--- /dev/null
+++ b/packages/xorg-app/beforelight_1.0.2.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " virtual/libx11 libxscrnsaver libxt libxaw libxt"
+
diff --git a/packages/xorg-app/editres_1.0.2.bb b/packages/xorg-app/editres_1.0.2.bb
new file mode 100644
index 0000000000..e5bf19bd71
--- /dev/null
+++ b/packages/xorg-app/editres_1.0.2.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " virtual/libx11 libxt libxmu libxaw"
+
diff --git a/packages/xorg-app/fonttosfnt_1.0.3.bb b/packages/xorg-app/fonttosfnt_1.0.3.bb
new file mode 100644
index 0000000000..8b7d7be108
--- /dev/null
+++ b/packages/xorg-app/fonttosfnt_1.0.3.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " xproto freetype libfontenc"
+
diff --git a/packages/xorg-app/luit_1.0.2.bb b/packages/xorg-app/luit_1.0.2.bb
new file mode 100644
index 0000000000..67fc3266ae
--- /dev/null
+++ b/packages/xorg-app/luit_1.0.2.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " zlib zlib virtual/libx11 libfontenc"
+
diff --git a/packages/xorg-app/mkfontdir-native_1.0.3.bb b/packages/xorg-app/mkfontdir-native_1.0.3.bb
new file mode 100644
index 0000000000..c4c5e5d259
--- /dev/null
+++ b/packages/xorg-app/mkfontdir-native_1.0.3.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "X mkfontdir app"
+SECTION = "x11/applications"
+LICENSE = "MIT-X"
+
+PE = "1"
+
+S="${WORKDIR}/mkfontdir-${PV}"
+SRC_URI = "${XORG_MIRROR}/X11R7.1/src/app/mkfontdir-${PV}.tar.bz2"
+
+DEPENDS = "util-macros-native"
+inherit native autotools pkgconfig
diff --git a/packages/xorg-app/mkfontdir-native_X11R7.0-1.0.1.bb b/packages/xorg-app/mkfontdir-native_X11R7.0-1.0.1.bb
index b322350e03..0787a7ced7 100644
--- a/packages/xorg-app/mkfontdir-native_X11R7.0-1.0.1.bb
+++ b/packages/xorg-app/mkfontdir-native_X11R7.0-1.0.1.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "X mkfontdir app"
-SECTION = "x11/apps"
+SECTION = "x11/applications"
LICENSE = "MIT-X"
S="${WORKDIR}/mkfontdir-${PV}"
diff --git a/packages/xorg-app/mkfontdir-native_X11R7.1-1.0.2.bb b/packages/xorg-app/mkfontdir-native_X11R7.1-1.0.2.bb
index 3ec30fde48..0eb85010b9 100644
--- a/packages/xorg-app/mkfontdir-native_X11R7.1-1.0.2.bb
+++ b/packages/xorg-app/mkfontdir-native_X11R7.1-1.0.2.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "X mkfontdir app"
-SECTION = "x11/apps"
+SECTION = "x11/applications"
LICENSE = "MIT-X"
S="${WORKDIR}/mkfontdir-${PV}"
diff --git a/packages/xorg-app/mkfontdir_1.0.3.bb b/packages/xorg-app/mkfontdir_1.0.3.bb
new file mode 100644
index 0000000000..cf7839586f
--- /dev/null
+++ b/packages/xorg-app/mkfontdir_1.0.3.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+
+PE = "1"
+#DESCRIPTION = ""
+
+#DEPENDS += " "
+
diff --git a/packages/xorg-app/mkfontscale-native_X11R7.0-1.0.1.bb b/packages/xorg-app/mkfontscale-native_X11R7.0-1.0.1.bb
index 051a9e5f63..5bbab6a5fd 100644
--- a/packages/xorg-app/mkfontscale-native_X11R7.0-1.0.1.bb
+++ b/packages/xorg-app/mkfontscale-native_X11R7.0-1.0.1.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "X mkfontscale app"
-SECTION = "x11/apps"
+SECTION = "x11/applications"
LICENSE = "MIT-X"
S="${WORKDIR}/mkfontscale-${PV}"
diff --git a/packages/xorg-app/sessreg_1.0.2.bb b/packages/xorg-app/sessreg_1.0.2.bb
new file mode 100644
index 0000000000..dc281b41b0
--- /dev/null
+++ b/packages/xorg-app/sessreg_1.0.2.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " virtual/libx11"
+
diff --git a/packages/xorg-app/setxkbmap_1.0.3.bb b/packages/xorg-app/setxkbmap_1.0.3.bb
new file mode 100644
index 0000000000..9b97cf437a
--- /dev/null
+++ b/packages/xorg-app/setxkbmap_1.0.3.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " libxkbfile virtual/libx11"
+
diff --git a/packages/xorg-app/twm_1.0.3.bb b/packages/xorg-app/twm_1.0.3.bb
new file mode 100644
index 0000000000..b8e75b2bbd
--- /dev/null
+++ b/packages/xorg-app/twm_1.0.3.bb
@@ -0,0 +1,11 @@
+require xorg-app-common.inc
+PE = "1"
+
+DESCRIPTION = "tiny window manager"
+
+DEPENDS += " virtual/libx11 libxext libxt libxmu"
+
+ALTERNATIVE_PATH = "${bindir}/twm"
+ALTERNATIVE_NAME = "x-window-manager"
+ALTERNATIVE_LINK = "${bindir}/x-window-manager"
+ALTERNATIVE_PRIORITY = "1"
diff --git a/packages/xorg-app/xauth_1.0.2.bb b/packages/xorg-app/xauth_1.0.2.bb
new file mode 100644
index 0000000000..45aaafb1ce
--- /dev/null
+++ b/packages/xorg-app/xauth_1.0.2.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " virtual/libx11 libxau libxext libxmu"
+
diff --git a/packages/xorg-app/xdbedizzy_1.0.2.bb b/packages/xorg-app/xdbedizzy_1.0.2.bb
new file mode 100644
index 0000000000..43d5a4bbb8
--- /dev/null
+++ b/packages/xorg-app/xdbedizzy_1.0.2.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " libxp libxprintutil libxp libxau libxext"
+
diff --git a/packages/xorg-app/xdm_1.1.3.bb b/packages/xorg-app/xdm_1.1.3.bb
new file mode 100644
index 0000000000..5df9fdd7bf
--- /dev/null
+++ b/packages/xorg-app/xdm_1.1.3.bb
@@ -0,0 +1,8 @@
+require xorg-app-common.inc
+PE = "1"
+
+DESCRIPTION = "X display manager"
+
+DEPENDS += " libxmu libxinerama libxpm libxdmcp libxau virtual/libx11 libxext libxdmcp libxt libxaw"
+
+EXTRA_OECONF += " --with-random-device=/dev/urandom"
diff --git a/packages/xorg-app/xdm_1.1.4.bb b/packages/xorg-app/xdm_1.1.4.bb
new file mode 100644
index 0000000000..7b4195e3d8
--- /dev/null
+++ b/packages/xorg-app/xdm_1.1.4.bb
@@ -0,0 +1,8 @@
+require xorg-app-common.inc
+PE = "1"
+
+DESCRIPTION = "X display manager"
+
+DEPENDS += " libxmu libxinerama libxpm libxdmcp libxau virtual/libx11 libxext libxdmcp libxt"
+
+EXTRA_OECONF += " --with-random-device=/dev/urandom"
diff --git a/packages/xorg-app/xdpyinfo_1.0.2.bb b/packages/xorg-app/xdpyinfo_1.0.2.bb
new file mode 100644
index 0000000000..62825e5a0f
--- /dev/null
+++ b/packages/xorg-app/xdpyinfo_1.0.2.bb
@@ -0,0 +1,11 @@
+require xorg-app-common.inc
+PE = "1"
+
+DESCRIPTION = "X display information utility"
+LICENSE = "MIT"
+
+DEPENDS += " libxtst libxext virtual/libx11 libxxf86vm libxxf86dga libxxf86misc libxi libxrender libxinerama libdmx libxp"
+
+SRC_URI += "file://disable-xkb.patch;patch=1"
+
+EXTRA_OECONF = "--disable-xkb"
diff --git a/packages/xorg-app/xf86dga_1.0.2.bb b/packages/xorg-app/xf86dga_1.0.2.bb
new file mode 100644
index 0000000000..462797a68d
--- /dev/null
+++ b/packages/xorg-app/xf86dga_1.0.2.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " virtual/libx11 libxxf86dga libxt libxaw libxmu"
+
diff --git a/packages/xorg-app/xfs_1.0.4.bb b/packages/xorg-app/xfs_1.0.4.bb
new file mode 100644
index 0000000000..b6db0f9b81
--- /dev/null
+++ b/packages/xorg-app/xfs_1.0.4.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+DESCRIPTION = "X fontserver"
+
+DEPENDS += " libfs libxfont xtrans"
+
diff --git a/packages/xorg-app/xinit_1.0.3.bb b/packages/xorg-app/xinit_1.0.3.bb
new file mode 100644
index 0000000000..155bfc7c43
--- /dev/null
+++ b/packages/xorg-app/xinit_1.0.3.bb
@@ -0,0 +1,8 @@
+require xorg-app-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " virtual/libx11"
+FILES_${PN} += " /usr/lib/X11/xinit"
+
diff --git a/packages/xorg-app/xmodmap_1.0.2.bb b/packages/xorg-app/xmodmap_1.0.2.bb
new file mode 100644
index 0000000000..b934ebfa48
--- /dev/null
+++ b/packages/xorg-app/xmodmap_1.0.2.bb
@@ -0,0 +1,8 @@
+require xorg-app-common.inc
+PE = "1"
+
+DESCRIPTION = "utility for modifying keymaps and pointer button mappings in X"
+LICENSE = "MIT"
+
+DEPENDS += " virtual/libx11"
+
diff --git a/packages/xorg-app/xorg-app-common.inc b/packages/xorg-app/xorg-app-common.inc
index 27a1dd2bfa..a33d107675 100644
--- a/packages/xorg-app/xorg-app-common.inc
+++ b/packages/xorg-app/xorg-app-common.inc
@@ -1,11 +1,12 @@
DESCRIPTION = "X application"
HOMEPAGE = "http://www.x.org"
-SECTION = "x11/apps"
+SECTION = "x11/applications"
LICENSE = "MIT-X"
-#DEPENDS = ""
+DEPENDS = "util-macros"
XORG_PN = "${PN}"
-SRC_URI = "${XORG_MIRROR}/${@bb.data.getVar('PV', d, 1)[0:7]}/src/app/${XORG_PN}-${PV}.tar.bz2"
+XORG_RELEASE = "${@["individual",bb.data.getVar('PV', d, 1)[0:7]+"/src"][bb.data.getVar('PV', d, 1)[0:4] == "X11R"]}"
+SRC_URI = "${XORG_MIRROR}/${XORG_RELEASE}/app/${XORG_PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${XORG_PN}-${PV}"
FILES_${PN} += " /usr/lib/X11/${XORG_PN}"
diff --git a/packages/xorg-app/xprop_1.0.2.bb b/packages/xorg-app/xprop_1.0.2.bb
new file mode 100644
index 0000000000..8623021717
--- /dev/null
+++ b/packages/xorg-app/xprop_1.0.2.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " libxmu virtual/libx11"
+
diff --git a/packages/xorg-app/xrandr_1.2.0.bb b/packages/xorg-app/xrandr_1.2.0.bb
new file mode 100644
index 0000000000..57bd51fd65
--- /dev/null
+++ b/packages/xorg-app/xrandr_1.2.0.bb
@@ -0,0 +1,8 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "X Resize and Rotate extension command."
+LICENSE= "BSD-X"
+
+DEPENDS += " libxrandr libxrender virtual/libx11"
+PE = "1"
+
diff --git a/packages/xorg-app/xrdb_1.0.3.bb b/packages/xorg-app/xrdb_1.0.3.bb
new file mode 100644
index 0000000000..d8a3cee728
--- /dev/null
+++ b/packages/xorg-app/xrdb_1.0.3.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "X server resource database utility"
+LICENSE = "xrdb"
+
+DEPENDS += " libxmu virtual/libx11 libxext"
+PE = "1"
diff --git a/packages/xorg-app/xterm_207.bb b/packages/xorg-app/xterm_207.bb
index b1291037b4..5d02234b35 100644
--- a/packages/xorg-app/xterm_207.bb
+++ b/packages/xorg-app/xterm_207.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "xterm app"
-SECTION = "x11/apps"
+SECTION = "x11/applications"
LICENSE = "MIT-X"
DEPENDS = "libxaw xproto virtual/libx11 xextproto xext xau libxpm ncurses"
diff --git a/packages/xorg-doc/xorg-doc-common.inc b/packages/xorg-doc/xorg-doc-common.inc
index de47e60df1..4c3d6e8987 100644
--- a/packages/xorg-doc/xorg-doc-common.inc
+++ b/packages/xorg-doc/xorg-doc-common.inc
@@ -5,7 +5,8 @@ LICENSE = "MIT-X"
#DEPENDS = ""
XORG_PN = "${PN}"
-SRC_URI = "${XORG_MIRROR}/${@bb.data.getVar('PV', d, 1)[0:7]}/src/doc/${XORG_PN}-${PV}.tar.bz2"
+XORG_RELEASE = "${@["individual",bb.data.getVar('PV', d, 1)[0:7]+"/src"][bb.data.getVar('PV', d, 1)[0:4] == "X11R"]}"
+SRC_URI = "${XORG_MIRROR}/${XORG_RELEASE}/doc/${XORG_PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${XORG_PN}-${PV}"
inherit autotools pkgconfig
diff --git a/packages/xorg-doc/xorg-sgml-doctools_1.1.1.bb b/packages/xorg-doc/xorg-sgml-doctools_1.1.1.bb
new file mode 100644
index 0000000000..18a3ef964a
--- /dev/null
+++ b/packages/xorg-doc/xorg-sgml-doctools_1.1.1.bb
@@ -0,0 +1,8 @@
+require xorg-doc-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
+
+FILES_${PN} += " /usr/share/X11/sgml"
diff --git a/packages/xorg-driver/xf86-input-evdev_1.1.5.bb b/packages/xorg-driver/xf86-input-evdev_1.1.5.bb
new file mode 100644
index 0000000000..8260dd6a60
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-evdev_1.1.5.bb
@@ -0,0 +1,7 @@
+require xorg-driver-input.inc
+
+PE = "1"
+#DESCRIPTION = ""
+
+DEPENDS += " kbproto"
+
diff --git a/packages/xorg-driver/xf86-input-keyboard_1.1.1.bb b/packages/xorg-driver/xf86-input-keyboard_1.1.1.bb
new file mode 100644
index 0000000000..b4ef6c683e
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-keyboard_1.1.1.bb
@@ -0,0 +1,7 @@
+require xorg-driver-input.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " kbproto"
+
diff --git a/packages/xorg-driver/xf86-input-keyboard_1.2.0.bb b/packages/xorg-driver/xf86-input-keyboard_1.2.0.bb
new file mode 100644
index 0000000000..b4ef6c683e
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-keyboard_1.2.0.bb
@@ -0,0 +1,7 @@
+require xorg-driver-input.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " kbproto"
+
diff --git a/packages/xorg-driver/xf86-input-mouse_1.1.2.bb b/packages/xorg-driver/xf86-input-mouse_1.1.2.bb
new file mode 100644
index 0000000000..eb464ad5a6
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-mouse_1.1.2.bb
@@ -0,0 +1,7 @@
+require xorg-driver-input.inc
+PE = "1"
+
+DESCRIPTION = "Mouse Support in X11"
+
+#DEPENDS += " "
+
diff --git a/packages/xorg-driver/xf86-input-mouse_1.2.1.bb b/packages/xorg-driver/xf86-input-mouse_1.2.1.bb
new file mode 100644
index 0000000000..eb464ad5a6
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-mouse_1.2.1.bb
@@ -0,0 +1,7 @@
+require xorg-driver-input.inc
+PE = "1"
+
+DESCRIPTION = "Mouse Support in X11"
+
+#DEPENDS += " "
+
diff --git a/packages/xorg-driver/xf86-input-penmount_1.2.0.bb b/packages/xorg-driver/xf86-input-penmount_1.2.0.bb
new file mode 100644
index 0000000000..f6032bceaa
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-penmount_1.2.0.bb
@@ -0,0 +1,7 @@
+require xorg-driver-input.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
+
diff --git a/packages/xorg-driver/xf86-video-ati_6.6.3.bb b/packages/xorg-driver/xf86-video-ati_6.6.3.bb
new file mode 100644
index 0000000000..994b8b6a3c
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-ati_6.6.3.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-fbdev_0.3.1.bb b/packages/xorg-driver/xf86-video-fbdev_0.3.1.bb
new file mode 100644
index 0000000000..843aa707b7
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-fbdev_0.3.1.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
diff --git a/packages/xorg-driver/xf86-video-i128_1.1.0.6.bb b/packages/xorg-driver/xf86-video-i128_1.1.0.6.bb
new file mode 100644
index 0000000000..89cedc8b1a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-i128_1.1.0.6.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+DESCRIPTION = "Number Nine I128 for X11"
+
+#DEPENDS += " "
diff --git a/packages/xorg-driver/xf86-video-i810_1.6.5.bb b/packages/xorg-driver/xf86-video-i810_1.6.5.bb
new file mode 100644
index 0000000000..198985f247
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-i810_1.6.5.bb
@@ -0,0 +1,7 @@
+require xorg-driver-video.inc
+PE = "1"
+
+DESCRIPTION = "I810 for X11"
+
+DEPENDS += " virtual/libx11 libxvmc drm xf86driproto"
+
diff --git a/packages/xorg-driver/xf86-video-newport_0.2.1.bb b/packages/xorg-driver/xf86-video-newport_0.2.1.bb
new file mode 100644
index 0000000000..b9f88fcc6f
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-newport_0.2.1.bb
@@ -0,0 +1,7 @@
+require xorg-driver-video.inc
+PE = "1"
+
+DESCRIPTION = "This is an unaccelerated driver for the SGI newport cards."
+
+#DEPENDS += " "
+
diff --git a/packages/xorg-driver/xf86-video-nsc_2.8.2.bb b/packages/xorg-driver/xf86-video-nsc_2.8.2.bb
new file mode 100644
index 0000000000..9fc4277ad8
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-nsc_2.8.2.bb
@@ -0,0 +1,7 @@
+require xorg-driver-video.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " xf86dgaproto"
+
diff --git a/packages/xorg-driver/xf86-video-nv_1.2.2.1.bb b/packages/xorg-driver/xf86-video-nv_1.2.2.1.bb
new file mode 100644
index 0000000000..843aa707b7
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-nv_1.2.2.1.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
diff --git a/packages/xorg-driver/xf86-video-rendition_4.1.3.bb b/packages/xorg-driver/xf86-video-rendition_4.1.3.bb
new file mode 100644
index 0000000000..e6c89a8c74
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-rendition_4.1.3.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+DESCRIPTION = "X11 driver supporting cards based on the V1000 or the V2x00."
+
+#DEPENDS += " "
diff --git a/packages/xorg-driver/xf86-video-s3_0.5.0.bb b/packages/xorg-driver/xf86-video-s3_0.5.0.bb
new file mode 100644
index 0000000000..843aa707b7
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-s3_0.5.0.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
diff --git a/packages/xorg-driver/xf86-video-savage_2.1.2.bb b/packages/xorg-driver/xf86-video-savage_2.1.2.bb
new file mode 100644
index 0000000000..999b319b23
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-savage_2.1.2.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " drm xf86driproto"
diff --git a/packages/xorg-driver/xf86-video-siliconmotion_1.5.1.bb b/packages/xorg-driver/xf86-video-siliconmotion_1.5.1.bb
new file mode 100644
index 0000000000..a6f3a5c2c4
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-siliconmotion_1.5.1.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+
+PE = "1"
+#DESCRIPTION = ""
+
+#DEPENDS += " "
diff --git a/packages/xorg-driver/xf86-video-sis_0.9.3.bb b/packages/xorg-driver/xf86-video-sis_0.9.3.bb
new file mode 100644
index 0000000000..ab53a64646
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-sis_0.9.3.bb
@@ -0,0 +1,7 @@
+require xorg-driver-video.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " xineramaproto xf86miscproto xf86dgaproto drm xf86driproto"
+
diff --git a/packages/xorg-driver/xf86-video-tdfx_1.3.0.bb b/packages/xorg-driver/xf86-video-tdfx_1.3.0.bb
new file mode 100644
index 0000000000..999b319b23
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-tdfx_1.3.0.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " drm xf86driproto"
diff --git a/packages/xorg-driver/xf86-video-trident_1.2.3.bb b/packages/xorg-driver/xf86-video-trident_1.2.3.bb
new file mode 100644
index 0000000000..065e64dfb1
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-trident_1.2.3.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " xf86dgaproto"
diff --git a/packages/xorg-driver/xf86-video-tseng_1.1.1.bb b/packages/xorg-driver/xf86-video-tseng_1.1.1.bb
new file mode 100644
index 0000000000..843aa707b7
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-tseng_1.1.1.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
diff --git a/packages/xorg-driver/xf86-video-vesa/.mtn2git_empty b/packages/xorg-driver/xf86-video-vesa/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-vesa/.mtn2git_empty
diff --git a/packages/xorg-driver/xf86-video-vesa/fix-includepath.patch b/packages/xorg-driver/xf86-video-vesa/fix-includepath.patch
new file mode 100644
index 0000000000..c8a79c055b
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-vesa/fix-includepath.patch
@@ -0,0 +1,13 @@
+Index: xf86-video-vesa-X11R7.1-1.2.0/configure.ac
+===================================================================
+--- xf86-video-vesa-X11R7.1-1.2.0.orig/configure.ac 2007-01-07 19:28:00.000000000 +0100
++++ xf86-video-vesa-X11R7.1-1.2.0/configure.ac 2007-01-07 19:28:02.000000000 +0100
+@@ -57,7 +57,7 @@
+ sdkdir=$(pkg-config --variable=sdkdir xorg-server)
+
+ CFLAGS="$CFLAGS $XORG_CFLAGS "' -I$(top_srcdir)/src'
+-INCLUDES="$XORG_INCS -I${sdkdir} "'-I$(top_srcdir)/src -I$(prefix)/include'
++INCLUDES="$XORG_INCS -I${sdkdir} "'-I$(top_srcdir)/src'
+ AC_SUBST([CFLAGS])
+ AC_SUBST([INCLUDES])
+
diff --git a/packages/xorg-driver/xf86-video-vesa_1.3.0.bb b/packages/xorg-driver/xf86-video-vesa_1.3.0.bb
new file mode 100644
index 0000000000..1e6760c3dc
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-vesa_1.3.0.bb
@@ -0,0 +1,8 @@
+require xorg-driver-video.inc
+PE = "1"
+
+SRC_URI += "file://fix-includepath.patch;patch=1"
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
diff --git a/packages/xorg-driver/xf86-video-vesa_X11R7.1-1.2.0.bb b/packages/xorg-driver/xf86-video-vesa_X11R7.1-1.2.0.bb
index a87a5f7a56..c04d4b4346 100644
--- a/packages/xorg-driver/xf86-video-vesa_X11R7.1-1.2.0.bb
+++ b/packages/xorg-driver/xf86-video-vesa_X11R7.1-1.2.0.bb
@@ -1,5 +1,7 @@
require xorg-driver-video.inc
+SRC_URI += "file://fix-includepath.patch;patch=1"
+
#DESCRIPTION = ""
#DEPENDS += " "
diff --git a/packages/xorg-driver/xf86-video-via_0.2.2.bb b/packages/xorg-driver/xf86-video-via_0.2.2.bb
new file mode 100644
index 0000000000..a3ce7324c3
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-via_0.2.2.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " drm xf86driproto libxvmc"
diff --git a/packages/xorg-driver/xf86-video-vmware_10.14.1.bb b/packages/xorg-driver/xf86-video-vmware_10.14.1.bb
new file mode 100644
index 0000000000..c8169407cb
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-vmware_10.14.1.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+DESCRIPTION = "X11 driver for VMware SVGA Device"
+
+#DEPENDS += " "
diff --git a/packages/xorg-driver/xf86-video-voodoo_1.1.1.bb b/packages/xorg-driver/xf86-video-voodoo_1.1.1.bb
new file mode 100644
index 0000000000..bfceb2995c
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-voodoo_1.1.1.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+PE = "1"
+
+DESCRIPTION = "X11 driver for Voodoo/Voodoo2"
+
+DEPENDS += " xf86dgaproto"
diff --git a/packages/xorg-driver/xorg-driver-common.inc b/packages/xorg-driver/xorg-driver-common.inc
index 4f36f2be17..8053e6c236 100644
--- a/packages/xorg-driver/xorg-driver-common.inc
+++ b/packages/xorg-driver/xorg-driver-common.inc
@@ -2,15 +2,18 @@ DESCRIPTION = "X driver"
HOMEPAGE = "http://www.x.org"
SECTION = "x11/drivers"
LICENSE = "MIT-X"
+PR = "r1"
DEPENDS = "randrproto xorg-server xproto"
XORG_PN = "${PN}"
-SRC_URI = "${XORG_MIRROR}/${@bb.data.getVar('PV', d, 1)[0:7]}/src/driver/${XORG_PN}-${PV}.tar.bz2"
+XORG_RELEASE = "${@["individual",bb.data.getVar('PV', d, 1)[0:7]+"/src"][bb.data.getVar('PV', d, 1)[0:4] == "X11R"]}"
+SRC_URI = "${XORG_MIRROR}/${XORG_RELEASE}/driver/${XORG_PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${XORG_PN}-${PV}"
FILES_${PN} += " ${libdir}/xorg/modules"
+FILES_${PN}-dbg += "${libdir}/xorg/modules/*/.debug"
inherit autotools pkgconfig
diff --git a/packages/xorg-font/encodings_1.0.2.bb b/packages/xorg-font/encodings_1.0.2.bb
new file mode 100644
index 0000000000..da67d037aa
--- /dev/null
+++ b/packages/xorg-font/encodings_1.0.2.bb
@@ -0,0 +1,8 @@
+require xorg-font-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS = "mkfontscale-native"
+RDEPENDS = ""
+
diff --git a/packages/xorg-font/xorg-font-common.inc b/packages/xorg-font/xorg-font-common.inc
index 137ee0917f..148437a3e3 100644
--- a/packages/xorg-font/xorg-font-common.inc
+++ b/packages/xorg-font/xorg-font-common.inc
@@ -6,7 +6,8 @@ DEPENDS = " encodings font-alias font-util-native mkfontdir-native mkfontscale-n
RDEPENDS = "encodings font-util font-alias"
XORG_PN = "${PN}"
-SRC_URI = "${XORG_MIRROR}/${@bb.data.getVar('PV', d, 1)[0:7]}/src/font/${XORG_PN}-${PV}.tar.bz2"
+XORG_RELEASE = "${@["individual",bb.data.getVar('PV', d, 1)[0:7]+"/src"][bb.data.getVar('PV', d, 1)[0:4] == "X11R"]}"
+SRC_URI = "${XORG_MIRROR}/${XORG_RELEASE}/font/${XORG_PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${XORG_PN}-${PV}"
inherit autotools pkgconfig
diff --git a/packages/xorg-lib/diet-x11/makekeys.diff b/packages/xorg-lib/diet-x11/makekeys.diff
new file mode 100644
index 0000000000..cea08725ec
--- /dev/null
+++ b/packages/xorg-lib/diet-x11/makekeys.diff
@@ -0,0 +1,12 @@
+diff -Nru libX11-X11R7.1-1.0.1.org/src/util/makekeys.c libX11-X11R7.1-1.0.1/src/util/makekeys.c
+--- libX11-X11R7.1-1.0.1.org/src/util/makekeys.c 2007-03-08 14:34:34.000000000 +0100
++++ libX11-X11R7.1-1.0.1/src/util/makekeys.c 2007-03-08 14:34:58.000000000 +0100
+@@ -49,7 +49,7 @@
+ KeySym val;
+ } info[KTNUM];
+
+-#define MIN_REHASH 10
++#define MIN_REHASH 15
+ #define MATCHES 10
+
+ char tab[KTNUM];
diff --git a/packages/xorg-lib/diet-x11_1.1.1.bb b/packages/xorg-lib/diet-x11_1.1.1.bb
new file mode 100644
index 0000000000..8dc3174a16
--- /dev/null
+++ b/packages/xorg-lib/diet-x11_1.1.1.bb
@@ -0,0 +1,11 @@
+SECTION = "x11/base"
+require libx11_${PV}.bb
+
+EXTRA_OECONF += "--disable-udc --enable-xcms --disable-xlocale --disable-xkb"
+CFLAGS += "-D_GNU_SOURCE"
+
+SRC_URI += "file://X18NCMSstubs.diff;patch=1 \
+ file://fix-disable-xlocale.diff;patch=1 \
+ file://fix-utf8-wrong-define.patch;patch=1 \
+ file://xim.patch;patch=1 \
+ file://xchar2b.patch;patch=1"
diff --git a/packages/xorg-lib/diet-x11_X11R7.1-1.0.1.bb b/packages/xorg-lib/diet-x11_X11R7.1-1.0.1.bb
index e2b6e442ba..52e01dde75 100644
--- a/packages/xorg-lib/diet-x11_X11R7.1-1.0.1.bb
+++ b/packages/xorg-lib/diet-x11_X11R7.1-1.0.1.bb
@@ -1,10 +1,10 @@
SECTION = "x11/base"
require libx11_${PV}.bb
-EXTRA_OECONF += "--disable-udc --disable-xcms --disable-xlocale --disable-xkb"
+EXTRA_OECONF += "--disable-udc --enable-xcms --disable-xlocale --disable-xkb"
CFLAGS += "-D_GNU_SOURCE"
-PR = "r2"
+PR = "r4"
SRC_URI += "file://X18NCMSstubs.diff;patch=1 \
file://fix-disable-xlocale.diff;patch=1 \
diff --git a/packages/xorg-lib/libfontenc_1.0.4.bb b/packages/xorg-lib/libfontenc_1.0.4.bb
new file mode 100644
index 0000000000..afb7ffe10e
--- /dev/null
+++ b/packages/xorg-lib/libfontenc_1.0.4.bb
@@ -0,0 +1,9 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X fontenc library (used by libxfont)."
+LICENSE = "BSD-X"
+PRIORITY = "optional"
+
+DEPENDS += " zlib xproto"
+
diff --git a/packages/xorg-lib/libice_1.0.3.bb b/packages/xorg-lib/libice_1.0.3.bb
new file mode 100644
index 0000000000..28d0885370
--- /dev/null
+++ b/packages/xorg-lib/libice_1.0.3.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+
+PE = "1"
+
+DESCRIPTION = "X11 ICE library"
+PRIORITY = "optional"
+
+DEPENDS += " xproto xtrans"
+PROVIDES = "ice"
+
+XORG_PN = "libICE"
+
diff --git a/packages/xorg-lib/libsm_1.0.2.bb b/packages/xorg-lib/libsm_1.0.2.bb
new file mode 100644
index 0000000000..e5113dfc76
--- /dev/null
+++ b/packages/xorg-lib/libsm_1.0.2.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "Session management library"
+PRIORITY = "optional"
+
+DEPENDS += " libice xproto xtrans"
+
+XORG_PN = "libSM"
+
diff --git a/packages/xorg-lib/libx11/makekeys.diff b/packages/xorg-lib/libx11/makekeys.diff
new file mode 100644
index 0000000000..cea08725ec
--- /dev/null
+++ b/packages/xorg-lib/libx11/makekeys.diff
@@ -0,0 +1,12 @@
+diff -Nru libX11-X11R7.1-1.0.1.org/src/util/makekeys.c libX11-X11R7.1-1.0.1/src/util/makekeys.c
+--- libX11-X11R7.1-1.0.1.org/src/util/makekeys.c 2007-03-08 14:34:34.000000000 +0100
++++ libX11-X11R7.1-1.0.1/src/util/makekeys.c 2007-03-08 14:34:58.000000000 +0100
+@@ -49,7 +49,7 @@
+ KeySym val;
+ } info[KTNUM];
+
+-#define MIN_REHASH 10
++#define MIN_REHASH 15
+ #define MATCHES 10
+
+ char tab[KTNUM];
diff --git a/packages/xorg-lib/libx11_1.1.1.bb b/packages/xorg-lib/libx11_1.1.1.bb
new file mode 100644
index 0000000000..45f524df58
--- /dev/null
+++ b/packages/xorg-lib/libx11_1.1.1.bb
@@ -0,0 +1,27 @@
+require xorg-lib-common.inc
+PE = "1"
+PR = "r1"
+
+DESCRIPTION = "Base X libs."
+
+DEPENDS += " bigreqsproto xproto xextproto xtrans libxau xcmiscproto \
+ libxcb libxdmcp xf86bigfontproto kbproto inputproto"
+PROVIDES = "virtual/libx11"
+RPROVIDES = "virtual/libx11"
+
+XORG_PN = "libX11"
+
+PACKAGES =+ "libx11-xcb"
+
+FILES_${PN} += "${datadir}/X11/XKeysymDB ${datadir}/X11/XErrorDB ${libdir}/X11/Xcms.txt"
+FILES_${PN}-locale += "${datadir}/X11/locale ${libdir}/X11/locale"
+FILES_${PN}-xcb = "${libdir}/libX11-xcb.so.*"
+
+do_compile() {
+ (
+ unset CC LD CXX CCLD CFLAGS CPPFLAGS LDFLAGS CXXFLAGS
+ cd src/util; touch makekeys-makekeys.o ; ${BUILD_CC} ${BUILD_CFLAGS} makekeys.c -o makekeys
+ ) || exit 1
+ rm -f ${STAGING_INCDIR}/X11/Xlib.h
+ oe_runmake
+}
diff --git a/packages/xorg-lib/libx11_X11R7.1-1.0.1.bb b/packages/xorg-lib/libx11_X11R7.1-1.0.1.bb
index 7ed04075c8..c6a701d9cb 100644
--- a/packages/xorg-lib/libx11_X11R7.1-1.0.1.bb
+++ b/packages/xorg-lib/libx11_X11R7.1-1.0.1.bb
@@ -1,8 +1,9 @@
require xorg-lib-common.inc
-PR = "r1"
+PR = "r4"
DESCRIPTION = "Base X libs."
+SRC_URI += "file://makekeys.diff;patch=1"
DEPENDS += " bigreqsproto xproto xextproto xtrans libxau xcmiscproto \
libxdmcp xf86bigfontproto kbproto inputproto"
@@ -17,7 +18,7 @@ FILES_${PN}-locale += "${datadir}/X11/locale ${libdir}/X11/locale"
do_compile() {
(
unset CC LD CXX CCLD CFLAGS CPPFLAGS LDFLAGS CXXFLAGS
- cd src/util; touch makekeys-makekeys.o ; ${BUILD_CC} makekeys.c -o makekeys
+ cd src/util; touch makekeys-makekeys.o ; ${BUILD_CC} ${BUILD_CFLAGS} makekeys.c -o makekeys
) || exit 1
rm -f ${STAGING_INCDIR}/X11/Xlib.h
oe_runmake
diff --git a/packages/xorg-lib/libxau_1.0.3.bb b/packages/xorg-lib/libxau_1.0.3.bb
new file mode 100644
index 0000000000..dcde9b4da2
--- /dev/null
+++ b/packages/xorg-lib/libxau_1.0.3.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "A Sample Authorization Protocol for X"
+PRIORITY = "optional"
+
+DEPENDS += " xproto"
+PROVIDES = "xau"
+
+XORG_PN = "libXau"
+
diff --git a/packages/xorg-lib/libxaw_1.0.3.bb b/packages/xorg-lib/libxaw_1.0.3.bb
new file mode 100644
index 0000000000..7e7f91b82f
--- /dev/null
+++ b/packages/xorg-lib/libxaw_1.0.3.bb
@@ -0,0 +1,21 @@
+require xorg-lib-common.inc
+
+DESCRIPTION = "Xaw is the X Athena Widget Set."
+DEPENDS += " xproto virtual/libx11 libxext xextproto libxt libxmu libxpm libxp printproto libxau"
+PROVIDES = "xaw"
+PE = "1"
+
+XORG_PN = "libXaw"
+
+do_stage () {
+ autotools_stage_all
+ ln -sf libXaw6.so.6 ${STAGING_LIBDIR}/libXaw.so.6
+ ln -sf libXaw7.so.7 ${STAGING_LIBDIR}/libXaw.so.7
+ ln -sf libXaw7.so.7 ${STAGING_LIBDIR}/libXaw.so
+}
+
+PACKAGES =+ "libxaw6 libxaw7 libxaw8"
+
+FILES_libxaw6 = "${libdir}/libXaw6.so.6*"
+FILES_libxaw7 = "${libdir}/libXaw7.so.7*"
+FILES_libxaw8 = "${libdir}/libXaw8.so.8*"
diff --git a/packages/xorg-lib/libxaw_X11R7.1-1.0.2.bb b/packages/xorg-lib/libxaw_X11R7.1-1.0.2.bb
index 3961042a2d..ff240607cb 100644
--- a/packages/xorg-lib/libxaw_X11R7.1-1.0.2.bb
+++ b/packages/xorg-lib/libxaw_X11R7.1-1.0.2.bb
@@ -1,9 +1,9 @@
require xorg-lib-common.inc
DESCRIPTION = "Xaw is the X Athena Widget Set."
-
DEPENDS += " xproto virtual/libx11 libxext xextproto libxt libxmu libxpm libxp printproto libxau"
PROVIDES = "xaw"
+PR = "r1"
XORG_PN = "libXaw"
@@ -13,3 +13,9 @@ do_stage () {
ln -sf libXaw7.so.7 ${STAGING_LIBDIR}/libXaw.so.7
ln -sf libXaw7.so.7 ${STAGING_LIBDIR}/libXaw.so
}
+
+PACKAGES =+ "libxaw6 libxaw7 libxaw8"
+
+FILES_libxaw6 = "${libdir}/libXaw6.so.6*"
+FILES_libxaw7 = "${libdir}/libXaw7.so.7*"
+FILES_libxaw8 = "${libdir}/libXaw8.so.8*"
diff --git a/packages/xorg-lib/libxcomposite_0.3.1.bb b/packages/xorg-lib/libxcomposite_0.3.1.bb
new file mode 100644
index 0000000000..71842d4a4d
--- /dev/null
+++ b/packages/xorg-lib/libxcomposite_0.3.1.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Composite extension library."
+LICENSE= "BSD-X"
+
+DEPENDS += " compositeproto virtual/libx11 libxfixes"
+PROVIDES = "xcomposite"
+
+XORG_PN = "libXcomposite"
+
+SRC_URI += " file://change-include-order.patch;patch=1"
diff --git a/packages/xorg-lib/libxcomposite_X11R7.1-0.3.bb b/packages/xorg-lib/libxcomposite_X11R7.1-0.3.bb
index 4cab60a531..70d0917887 100644
--- a/packages/xorg-lib/libxcomposite_X11R7.1-0.3.bb
+++ b/packages/xorg-lib/libxcomposite_X11R7.1-0.3.bb
@@ -3,7 +3,7 @@ require xorg-lib-common.inc
DESCRIPTION = "X Composite extension library."
LICENSE= "BSD-X"
-DEPENDS += " compositeproto virtual/libx11 libxfixes"
+DEPENDS += " compositeproto virtual/libx11 libxfixes libxext"
PROVIDES = "xcomposite"
XORG_PN = "libXcomposite"
diff --git a/packages/xorg-lib/libxcursor_1.1.8.bb b/packages/xorg-lib/libxcursor_1.1.8.bb
new file mode 100644
index 0000000000..bf795757f6
--- /dev/null
+++ b/packages/xorg-lib/libxcursor_1.1.8.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Cursor library"
+LICENSE= "BSD-X"
+
+DEPENDS += " libxrender libxfixes virtual/libx11 fixesproto"
+
+XORG_PN = "libXcursor"
+
+FILES_${PN} += "${libdir}/libXcursor.so"
diff --git a/packages/xorg-lib/libxdamage_1.0.4.bb b/packages/xorg-lib/libxdamage_1.0.4.bb
new file mode 100644
index 0000000000..dd6fc42df6
--- /dev/null
+++ b/packages/xorg-lib/libxdamage_1.0.4.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Damage extension library."
+LICENSE= "BSD-X"
+
+DEPENDS += " virtual/libx11 damageproto libxfixes fixesproto xextproto"
+PROVIDES = "xdamage"
+
+XORG_PN = "libXdamage"
+
diff --git a/packages/xorg-lib/libxdmcp-native_1.0.2.bb b/packages/xorg-lib/libxdmcp-native_1.0.2.bb
new file mode 100644
index 0000000000..2438a7b599
--- /dev/null
+++ b/packages/xorg-lib/libxdmcp-native_1.0.2.bb
@@ -0,0 +1,11 @@
+SECTION = "x11/libs"
+PRIORITY = "optional"
+LICENSE = "BSD-X"
+PE = "1"
+
+DEPENDS = "xproto-native util-macros-native"
+
+SRC_URI = "${XORG_MIRROR}/individual/lib/libXdmcp-${PV}.tar.bz2"
+S = "${WORKDIR}/libXdmcp-${PV}"
+
+inherit native autotools pkgconfig
diff --git a/packages/xorg-lib/libxdmcp_1.0.2.bb b/packages/xorg-lib/libxdmcp_1.0.2.bb
new file mode 100644
index 0000000000..109c5b5615
--- /dev/null
+++ b/packages/xorg-lib/libxdmcp_1.0.2.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Display Manager Control Protocol library."
+PRIORITY = "optional"
+
+DEPENDS += " xproto"
+PROVIDES = "xdmcp"
+
+XORG_PN = "libXdmcp"
+
diff --git a/packages/xorg-lib/libxevie_1.0.2.bb b/packages/xorg-lib/libxevie_1.0.2.bb
new file mode 100644
index 0000000000..06985bd112
--- /dev/null
+++ b/packages/xorg-lib/libxevie_1.0.2.bb
@@ -0,0 +1,9 @@
+require xorg-lib-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " xproto virtual/libx11 xextproto libxext evieext"
+
+XORG_PN = "libXevie"
+
diff --git a/packages/xorg-lib/libxext_1.0.2.bb b/packages/xorg-lib/libxext_1.0.2.bb
new file mode 100644
index 0000000000..a64067e2ad
--- /dev/null
+++ b/packages/xorg-lib/libxext_1.0.2.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Server Extension library"
+PRIORITY = "optional"
+
+DEPENDS += " xproto virtual/libx11 xextproto libxau"
+PROVIDES = "xext"
+
+XORG_PN = "libXext"
+
diff --git a/packages/xorg-lib/libxfixes_4.0.3.bb b/packages/xorg-lib/libxfixes_4.0.3.bb
new file mode 100644
index 0000000000..cffe56a03a
--- /dev/null
+++ b/packages/xorg-lib/libxfixes_4.0.3.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Fixes extension library."
+LICENSE= "BSD-X"
+
+DEPENDS += " virtual/libx11 xproto fixesproto xextproto"
+
+XORG_PN = "libXfixes"
+
diff --git a/packages/xorg-lib/libxfont-native_X11R7.1-1.2.0.bb b/packages/xorg-lib/libxfont-native_X11R7.1-1.2.0.bb
new file mode 100644
index 0000000000..073b54f7cf
--- /dev/null
+++ b/packages/xorg-lib/libxfont-native_X11R7.1-1.2.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "X font library (used by the X server)."
+SECTION = "x11/libs"
+PRIORITY = "optional"
+LICENSE = "BSD-X"
+
+DEPENDS = "xproto-native zlib-native fontcacheproto-native fontsproto-native libfontenc-native xtrans-native freetype-native util-macros-native"
+
+SRC_URI = "${XORG_MIRROR}/individual/lib/libXfont-1.2.0.tar.bz2"
+S = "${WORKDIR}/libXfont-1.2.0"
+
+inherit native autotools pkgconfig
+
diff --git a/packages/xorg-lib/libxfont_1.2.7.bb b/packages/xorg-lib/libxfont_1.2.7.bb
new file mode 100644
index 0000000000..cc855c0106
--- /dev/null
+++ b/packages/xorg-lib/libxfont_1.2.7.bb
@@ -0,0 +1,14 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X font library (used by the X server)."
+LICENSE= "BSD-X"
+PRIORITY = "optional"
+
+SRC_URI += "file://no-scalable-crash.patch;patch=1"
+
+DEPENDS += " freetype fontcacheproto zlib xproto xtrans fontsproto libfontenc"
+PROVIDES = "xfont"
+
+XORG_PN = "libXfont"
+
diff --git a/packages/xorg-lib/libxfont_1.2.8.bb b/packages/xorg-lib/libxfont_1.2.8.bb
new file mode 100644
index 0000000000..cc855c0106
--- /dev/null
+++ b/packages/xorg-lib/libxfont_1.2.8.bb
@@ -0,0 +1,14 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X font library (used by the X server)."
+LICENSE= "BSD-X"
+PRIORITY = "optional"
+
+SRC_URI += "file://no-scalable-crash.patch;patch=1"
+
+DEPENDS += " freetype fontcacheproto zlib xproto xtrans fontsproto libfontenc"
+PROVIDES = "xfont"
+
+XORG_PN = "libXfont"
+
diff --git a/packages/xorg-lib/libxfontcache_1.0.4.bb b/packages/xorg-lib/libxfontcache_1.0.4.bb
new file mode 100644
index 0000000000..1e45867950
--- /dev/null
+++ b/packages/xorg-lib/libxfontcache_1.0.4.bb
@@ -0,0 +1,9 @@
+require xorg-lib-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+DEPENDS += " virtual/libx11 libxext xextproto fontcacheproto"
+
+XORG_PN = "libXfontcache"
+
diff --git a/packages/xorg-lib/libxft_X11R7.0-2.1.12.bb b/packages/xorg-lib/libxft_X11R7.0-2.1.12.bb
new file mode 100644
index 0000000000..5ae8247296
--- /dev/null
+++ b/packages/xorg-lib/libxft_X11R7.0-2.1.12.bb
@@ -0,0 +1,23 @@
+require xorg-lib-common.inc
+
+SRC_URI = "${XORG_MIRROR}/individual/lib/libXft-2.1.12.tar.bz2"
+S = "${WORKDIR}/${XORG_PN}-2.1.12"
+
+
+DESCRIPTION = "X FreeType library. Client-side fonts with FreeType."
+
+DEPENDS += " libxrender freetype fontconfig"
+PROVIDES = "xft"
+
+XORG_PN = "libXft"
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la \
+ ${libdir}/*.a ${libdir}/pkgconfig \
+ ${datadir}/aclocal ${bindir} ${sbindir}"
+
+python do_package() {
+ if bb.data.getVar('DEBIAN_NAMES', d, 1):
+ bb.data.setVar('PKG_${PN}', 'libxft2', d)
+ bb.build.exec_func('package_do_package', d)
+}
diff --git a/packages/xorg-lib/libxi_1.0.2.bb b/packages/xorg-lib/libxi_1.0.2.bb
new file mode 100644
index 0000000000..84c67f5ae3
--- /dev/null
+++ b/packages/xorg-lib/libxi_1.0.2.bb
@@ -0,0 +1,9 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Input extension library."
+
+DEPENDS += " xproto virtual/libx11 xextproto libxext inputproto"
+
+XORG_PN = "libXi"
+
diff --git a/packages/xorg-lib/libxi_1.1.0.bb b/packages/xorg-lib/libxi_1.1.0.bb
new file mode 100644
index 0000000000..84c67f5ae3
--- /dev/null
+++ b/packages/xorg-lib/libxi_1.1.0.bb
@@ -0,0 +1,9 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Input extension library."
+
+DEPENDS += " xproto virtual/libx11 xextproto libxext inputproto"
+
+XORG_PN = "libXi"
+
diff --git a/packages/xorg-lib/libxinerama_1.0.2.bb b/packages/xorg-lib/libxinerama_1.0.2.bb
new file mode 100644
index 0000000000..9bfe62ae07
--- /dev/null
+++ b/packages/xorg-lib/libxinerama_1.0.2.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+
+DESCRIPTION = "Xinerama library"
+PRIORITY = "optional"
+PE = "1"
+
+DEPENDS += " virtual/libx11 libxext xextproto xineramaproto"
+PROVIDES = "xinerama"
+
+XORG_PN = "libXinerama"
+
diff --git a/packages/xorg-lib/libxkbfile_1.0.4.bb b/packages/xorg-lib/libxkbfile_1.0.4.bb
new file mode 100644
index 0000000000..2d9b778d02
--- /dev/null
+++ b/packages/xorg-lib/libxkbfile_1.0.4.bb
@@ -0,0 +1,9 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X11 keyboard library"
+LICENSE= "GPL"
+PRIORITY = "optional"
+
+DEPENDS += " virtual/libx11 kbproto"
+
diff --git a/packages/xorg-lib/libxmu_1.0.3.bb b/packages/xorg-lib/libxmu_1.0.3.bb
new file mode 100644
index 0000000000..e055874b3d
--- /dev/null
+++ b/packages/xorg-lib/libxmu_1.0.3.bb
@@ -0,0 +1,17 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Window System miscellaneous utility library"
+PRIORITY = "optional"
+
+DEPENDS += " libxt libxext xextproto virtual/libx11"
+PROVIDES = "xmu"
+
+XORG_PN = "libXmu"
+
+PACKAGES =+ "libxmuu libxmuu-dev"
+
+FILES_libxmuu = "${libdir}/libXmuu.so.*"
+FILES_libxmuu-dev = "${libdir}/libXmuu.so"
+
+LEAD_SONAME = "libXmu"
diff --git a/packages/xorg-lib/libxpm_3.5.6.bb b/packages/xorg-lib/libxpm_3.5.6.bb
new file mode 100644
index 0000000000..60779da43f
--- /dev/null
+++ b/packages/xorg-lib/libxpm_3.5.6.bb
@@ -0,0 +1,14 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Pixmap library."
+PRIORITY = "optional"
+LICENSE = "X-BSD"
+
+DEPENDS += " xproto virtual/libx11 libxt libxext xextproto"
+
+XORG_PN = "libXpm"
+
+PACKAGES =+ "sxpm cxpm"
+FILES_cxpm = "${bindir}/cxpm"
+FILES_sxpm = "${bindir}/sxpm"
diff --git a/packages/xorg-lib/libxrandr_1.1.2.bb b/packages/xorg-lib/libxrandr_1.1.2.bb
new file mode 100644
index 0000000000..18e5deffb8
--- /dev/null
+++ b/packages/xorg-lib/libxrandr_1.1.2.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Resize and Rotate extension library."
+LICENSE = "BSD-X"
+
+DEPENDS += " virtual/libx11 randrproto libxext xextproto libxrender renderproto"
+
+XORG_PN = "libXrandr"
+
diff --git a/packages/xorg-lib/libxrandr_1.2.1.bb b/packages/xorg-lib/libxrandr_1.2.1.bb
new file mode 100644
index 0000000000..18e5deffb8
--- /dev/null
+++ b/packages/xorg-lib/libxrandr_1.2.1.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Resize and Rotate extension library."
+LICENSE = "BSD-X"
+
+DEPENDS += " virtual/libx11 randrproto libxext xextproto libxrender renderproto"
+
+XORG_PN = "libXrandr"
+
diff --git a/packages/xorg-lib/libxrender_0.9.2.bb b/packages/xorg-lib/libxrender_0.9.2.bb
new file mode 100644
index 0000000000..b1372d3dac
--- /dev/null
+++ b/packages/xorg-lib/libxrender_0.9.2.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Render extension library."
+LICENSE = "BSD-X"
+
+DEPENDS += " virtual/libx11 renderproto"
+
+XORG_PN = "libXrender"
+
diff --git a/packages/xorg-lib/libxres_1.0.3.bb b/packages/xorg-lib/libxres_1.0.3.bb
new file mode 100644
index 0000000000..b9d2fd68ce
--- /dev/null
+++ b/packages/xorg-lib/libxres_1.0.3.bb
@@ -0,0 +1,9 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Resource usage library."
+
+DEPENDS += " virtual/libx11 libxext xextproto resourceproto"
+
+XORG_PN = "libXres"
+
diff --git a/packages/xorg-lib/libxscrnsaver_1.1.2.bb b/packages/xorg-lib/libxscrnsaver_1.1.2.bb
new file mode 100644
index 0000000000..163ca199c1
--- /dev/null
+++ b/packages/xorg-lib/libxscrnsaver_1.1.2.bb
@@ -0,0 +1,14 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X screen saver extension library."
+LICENSE = "GPL"
+
+DEPENDS += " virtual/libx11 libxext xextproto scrnsaverproto"
+
+XORG_PN = "libXScrnSaver"
+
+PROVIDES = "libxss"
+RREPLACES = "libxss"
+
+#CFLAGS_append += " -I ${S}/include/X11/XprintUtil -I ${S}/include/X11/extensions"
diff --git a/packages/xorg-lib/libxt_1.0.4.bb b/packages/xorg-lib/libxt_1.0.4.bb
new file mode 100644
index 0000000000..e67590bdf1
--- /dev/null
+++ b/packages/xorg-lib/libxt_1.0.4.bb
@@ -0,0 +1,20 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Toolkit Intrinsics"
+PRIORITY = "optional"
+
+DEPENDS += " libsm virtual/libx11 xproto kbproto"
+PROVIDES = "xt"
+
+XORG_PN = "libXt"
+
+EXTRA_OECONF="--enable-malloc0returnsnull --disable-install-makestrs --disable-xkb"
+
+do_compile() {
+ (
+ unset CC LD CXX CCLD
+ oe_runmake -C util 'XT_CFLAGS=' '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}' makestrs
+ ) || exit 1
+ oe_runmake
+}
diff --git a/packages/xorg-lib/libxt_1.0.5.bb b/packages/xorg-lib/libxt_1.0.5.bb
new file mode 100644
index 0000000000..e67590bdf1
--- /dev/null
+++ b/packages/xorg-lib/libxt_1.0.5.bb
@@ -0,0 +1,20 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Toolkit Intrinsics"
+PRIORITY = "optional"
+
+DEPENDS += " libsm virtual/libx11 xproto kbproto"
+PROVIDES = "xt"
+
+XORG_PN = "libXt"
+
+EXTRA_OECONF="--enable-malloc0returnsnull --disable-install-makestrs --disable-xkb"
+
+do_compile() {
+ (
+ unset CC LD CXX CCLD
+ oe_runmake -C util 'XT_CFLAGS=' '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}' makestrs
+ ) || exit 1
+ oe_runmake
+}
diff --git a/packages/xorg-lib/libxv_1.0.3.bb b/packages/xorg-lib/libxv_1.0.3.bb
new file mode 100644
index 0000000000..0d045940e3
--- /dev/null
+++ b/packages/xorg-lib/libxv_1.0.3.bb
@@ -0,0 +1,9 @@
+require xorg-lib-common.inc
+
+DESCRIPTION = "X Video extension library."
+LICENSE = "GPL"
+
+DEPENDS += " virtual/libx11 libxext xextproto videoproto"
+
+XORG_PN = "libXv"
+
diff --git a/packages/xorg-lib/libxvmc_1.0.4.bb b/packages/xorg-lib/libxvmc_1.0.4.bb
new file mode 100644
index 0000000000..54aaa895ff
--- /dev/null
+++ b/packages/xorg-lib/libxvmc_1.0.4.bb
@@ -0,0 +1,9 @@
+require xorg-lib-common.inc
+PE = "1"
+
+DESCRIPTION = "X Video Motion Compensation extension library."
+
+DEPENDS += " virtual/libx11 libxext libxv xextproto videoproto"
+
+XORG_PN = "libXvMC"
+
diff --git a/packages/xorg-lib/xorg-lib-common.inc b/packages/xorg-lib/xorg-lib-common.inc
index 0c6c1388d2..e1f783e352 100644
--- a/packages/xorg-lib/xorg-lib-common.inc
+++ b/packages/xorg-lib/xorg-lib-common.inc
@@ -4,7 +4,8 @@ LICENSE = "MIT-X"
DEPENDS = "util-macros xorg-headers-native"
XORG_PN = "${PN}"
-SRC_URI = "${XORG_MIRROR}/${@bb.data.getVar('PV', d, 1)[0:7]}/src/lib/${XORG_PN}-${PV}.tar.bz2"
+XORG_RELEASE = "${@["individual",bb.data.getVar('PV', d, 1)[0:7]+"/src"][bb.data.getVar('PV', d, 1)[0:4] == "X11R"]}"
+SRC_URI = "${XORG_MIRROR}/${XORG_RELEASE}/lib/${XORG_PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${XORG_PN}-${PV}"
inherit autotools pkgconfig
diff --git a/packages/xorg-lib/xtrans_1.0.3.bb b/packages/xorg-lib/xtrans_1.0.3.bb
new file mode 100644
index 0000000000..e32509a5c4
--- /dev/null
+++ b/packages/xorg-lib/xtrans_1.0.3.bb
@@ -0,0 +1,9 @@
+require xorg-lib-common.inc
+PE = "1"
+
+SRC_URI += "file://fix-missing-includepath.patch;patch=1"
+
+DESCRIPTION = "network API translation layer to \
+insulate X applications and libraries from OS \
+network vageries."
+
diff --git a/packages/xorg-proto/damageproto_1.1.0.bb b/packages/xorg-proto/damageproto_1.1.0.bb
new file mode 100644
index 0000000000..ae54c06a64
--- /dev/null
+++ b/packages/xorg-proto/damageproto_1.1.0.bb
@@ -0,0 +1,8 @@
+require xorg-proto-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
+
+CONFLICTS = "damageext"
diff --git a/packages/xorg-proto/glproto_1.4.8.bb b/packages/xorg-proto/glproto_1.4.8.bb
new file mode 100644
index 0000000000..7a4888d489
--- /dev/null
+++ b/packages/xorg-proto/glproto_1.4.8.bb
@@ -0,0 +1,6 @@
+require xorg-proto-common.inc
+PE="1"
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
diff --git a/packages/xorg-proto/inputproto_1.4.1.bb b/packages/xorg-proto/inputproto_1.4.1.bb
new file mode 100644
index 0000000000..40af1d2115
--- /dev/null
+++ b/packages/xorg-proto/inputproto_1.4.1.bb
@@ -0,0 +1,4 @@
+require xorg-proto-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
diff --git a/packages/xorg-proto/inputproto_X11R7.1-1.4.bb b/packages/xorg-proto/inputproto_X11R7.1-1.4.bb
new file mode 100644
index 0000000000..26260c401e
--- /dev/null
+++ b/packages/xorg-proto/inputproto_X11R7.1-1.4.bb
@@ -0,0 +1,4 @@
+require xorg-proto-common.inc
+
+SRC_URI = "${XORG_MIRROR}/individual/proto/inputproto-1.4.tar.gz"
+S = "${WORKDIR}/${XORG_PN}-1.4"
diff --git a/packages/xorg-proto/randrproto_1.2.1.bb b/packages/xorg-proto/randrproto_1.2.1.bb
new file mode 100644
index 0000000000..1116da8f93
--- /dev/null
+++ b/packages/xorg-proto/randrproto_1.2.1.bb
@@ -0,0 +1,8 @@
+require xorg-proto-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
+
+CONFLICTS = "randrext"
diff --git a/packages/xorg-proto/xorg-proto-common.inc b/packages/xorg-proto/xorg-proto-common.inc
index 017e8755a8..1dc4f12fc7 100644
--- a/packages/xorg-proto/xorg-proto-common.inc
+++ b/packages/xorg-proto/xorg-proto-common.inc
@@ -5,7 +5,8 @@ LICENSE = "MIT-X"
#DEPENDS = ""
XORG_PN = "${PN}"
-SRC_URI = "${XORG_MIRROR}/${@bb.data.getVar('PV', d, 1)[0:7]}/src/proto/${XORG_PN}-${PV}.tar.bz2"
+XORG_RELEASE = "${@["individual",bb.data.getVar('PV', d, 1)[0:7]+"/src"][bb.data.getVar('PV', d, 1)[0:4] == "X11R"]}"
+SRC_URI = "${XORG_MIRROR}/${XORG_RELEASE}/proto/${XORG_PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${XORG_PN}-${PV}"
inherit autotools pkgconfig
diff --git a/packages/xorg-proto/xproto-native_7.0.10.bb b/packages/xorg-proto/xproto-native_7.0.10.bb
new file mode 100644
index 0000000000..12a58b5a0a
--- /dev/null
+++ b/packages/xorg-proto/xproto-native_7.0.10.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "X protocol headers"
+SECTION = "x11/libs"
+LICENSE= "MIT-X"
+PE = "1"
+
+SRC_URI = "${XORG_MIRROR}/individual/proto/xproto-${PV}.tar.bz2"
+S = "${WORKDIR}/xproto-${PV}"
+
+inherit native autotools pkgconfig
diff --git a/packages/xorg-proto/xproto_7.0.10.bb b/packages/xorg-proto/xproto_7.0.10.bb
new file mode 100644
index 0000000000..3f598df1bb
--- /dev/null
+++ b/packages/xorg-proto/xproto_7.0.10.bb
@@ -0,0 +1,6 @@
+require xorg-proto-common.inc
+PE = "1"
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
diff --git a/packages/xorg-proto/xproto_X11R7.1-7.0.8.bb b/packages/xorg-proto/xproto_X11R7.1-7.0.8.bb
new file mode 100644
index 0000000000..a901c5b61b
--- /dev/null
+++ b/packages/xorg-proto/xproto_X11R7.1-7.0.8.bb
@@ -0,0 +1,10 @@
+require xorg-proto-common.inc
+
+XORG_PN = "${PN}"
+SRC_URI = "${XORG_MIRROR}/development/X11R7.2-RC3/proto/${XORG_PN}-7.0.9.tar.gz"
+S = "${WORKDIR}/${XORG_PN}-7.0.9"
+
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
diff --git a/packages/xorg-util/files/.mtn2git_empty b/packages/xorg-util/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xorg-util/files/.mtn2git_empty
diff --git a/packages/xorg-util/files/unbreak_cross_compile.patch b/packages/xorg-util/files/unbreak_cross_compile.patch
new file mode 100644
index 0000000000..fd84aade1e
--- /dev/null
+++ b/packages/xorg-util/files/unbreak_cross_compile.patch
@@ -0,0 +1,26 @@
+---
+ xorg-macros.m4.in | 4 ----
+ 1 file changed, 4 deletions(-)
+
+Index: util-macros-1.1.5/xorg-macros.m4.in
+===================================================================
+--- util-macros-1.1.5.orig/xorg-macros.m4.in 2006-11-08 14:23:10.000000000 +0000
++++ util-macros-1.1.5/xorg-macros.m4.in 2007-01-31 15:28:55.000000000 +0000
+@@ -194,8 +194,6 @@ AC_DEFUN([XORG_CHECK_LINUXDOC],[
+ XORG_SGML_PATH=$prefix/share/sgml
+ HAVE_DEFS_ENT=
+
+-AC_CHECK_FILE([$XORG_SGML_PATH/X11/defs.ent], [HAVE_DEFS_ENT=yes])
+-
+ AC_PATH_PROG(LINUXDOC, linuxdoc)
+ AC_PATH_PROG(PS2PDF, ps2pdf)
+
+@@ -250,8 +248,6 @@ BUILDPDFDOC=no
+ BUILDPSDOC=no
+ BUILDHTMLDOC=no
+
+-AC_CHECK_FILE([$XORG_SGML_PATH/X11/defs.ent], [HAVE_DEFS_ENT=yes])
+-
+ AC_PATH_PROG(DOCBOOKPS, docbook2ps)
+ AC_PATH_PROG(DOCBOOKPDF, docbook2pdf)
+ AC_PATH_PROG(DOCBOOKHTML, docbook2html)
diff --git a/packages/xorg-util/util-macros-native_X11R7.1-1.1.5.bb b/packages/xorg-util/util-macros-native_X11R7.1-1.1.5.bb
new file mode 100644
index 0000000000..64e0550571
--- /dev/null
+++ b/packages/xorg-util/util-macros-native_X11R7.1-1.1.5.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "X autotools macros"
+SECTION = "x11/libs"
+LICENSE= "Xorg"
+
+SRC_URI = "${XORG_MIRROR}/individual/util/util-macros-1.1.5.tar.bz2 \
+ file://unbreak_cross_compile.patch;patch=1 "
+
+S = "${WORKDIR}/util-macros-1.1.5"
+
+inherit native autotools pkgconfig
+
diff --git a/packages/xorg-util/util-macros_X11R7.1-1.1.5.bb b/packages/xorg-util/util-macros_X11R7.1-1.1.5.bb
new file mode 100644
index 0000000000..06dd0a5d73
--- /dev/null
+++ b/packages/xorg-util/util-macros_X11R7.1-1.1.5.bb
@@ -0,0 +1,10 @@
+require xorg-util-common.inc
+
+DESCRIPTION = "X autotools macros"
+
+PR = "r1"
+
+SRC_URI = "${XORG_MIRROR}/individual/util/${XORG_PN}-1.1.5.tar.gz \
+ file://unbreak_cross_compile.patch;patch=1 "
+S = "${WORKDIR}/${XORG_PN}-1.1.5"
+
diff --git a/packages/xorg-xserver/xorg-xserver-common.inc b/packages/xorg-xserver/xorg-xserver-common.inc
index e6c81841b7..634d6eb835 100644
--- a/packages/xorg-xserver/xorg-xserver-common.inc
+++ b/packages/xorg-xserver/xorg-xserver-common.inc
@@ -2,38 +2,45 @@ HOMEPAGE = "http://www.x.org"
SECTION = "x11/base"
LICENSE = "MIT-X"
-RPROVIDES = "virtual/xserver"
+RPROVIDES_${PN} = "virtual/xserver"
PROVIDES = "virtual/xserver"
+MESA_VER ?= "6.5"
+
DEPENDS = "fontconfig freetype flex-native lbxutil kbproto \
-xf86driproto drm glproto randrproto renderproto fixesproto damageproto \
+xf86driproto libdrm glproto randrproto renderproto fixesproto damageproto \
xcmiscproto xextproto xproto xf86miscproto xf86vidmodeproto xf86bigfontproto \
scrnsaverproto bigreqsproto resourceproto fontsproto inputproto \
xf86dgaproto videoproto compositeproto trapproto recordproto dmxproto \
resourceproto xineramaproto xtrans evieext libxkbfile libxfont libxau \
libfontenc libxdmcp libxxf86vm libxaw libxmu libxt libxpm libxext libx11 \
-libxkbui libxxf86misc libxi libdmx libxtst libxres mesa"
+libxkbui libxxf86misc libxi libdmx libxtst libxres mesa mkfontscale-native"
-RDEPENDS="rgb"
+RDEPENDS_${PN} = "rgb"
XORG_PN = "xorg-server"
-SRC_URI = "${XORG_MIRROR}/${@bb.data.getVar('PV', d, 1)[0:7]}/src/xserver/${XORG_PN}-${PV}.tar.bz2 \
+XORG_RELEASE = "${@["individual",bb.data.getVar('PV', d, 1)[0:7]+"/src"][bb.data.getVar('PV', d, 1)[0:4] == "X11R"]}"
+SRC_URI = "${XORG_MIRROR}/${XORG_RELEASE}/xserver/${XORG_PN}-${PV}.tar.bz2 \
+ ${SOURCEFORGE_MIRROR}/mesa3d/MesaLib-${MESA_VER}.tar.bz2 \
file://xorg.conf"
S = "${WORKDIR}/${XORG_PN}-${PV}"
inherit autotools pkgconfig
+EXTRA_OECONF = "--disable-builddocs --with-mesa-source=${WORKDIR}/Mesa-${MESA_VER}"
-EXTRA_OECONF = "--disable-builddocs"
-
-PACKAGES =+ "${PN}-xprint ${PN}-xvfb ${PN}-utils"
+PACKAGES =+ "${PN}-xprint ${PN}-xvfb ${PN}-utils ${PN}-xnest ${PN}-dmx"
-FILES_${PN}-xprint = "${libdir}/X11/xserver/*/print"
+FILES_${PN}-xprint = "${libdir}/X11/xserver/*/print ${bindir}/Xprt"
FILES_${PN}-xvfb = "${bindir}/Xvfb"
+FILES_${PN}-xnest = "${bindir}/Xnest"
+FILES_${PN}-dmx = "${bindir}/Xdmx ${bindir}/dmx* ${bindir}/xdmxconfig ${bindir}/xdmx ${bindir}/vdltodmx"
FILES_${PN}-utils = "${bindir}/scanpci ${bindir}/pcitweak ${bindir}/ioport ${bindir}/in[bwl] ${bindir}/out[bwl] ${bindir}/mmap[rw] ${bindir}/gtf ${bindir}/getconfig ${bindir}/getconfig.pl"
-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} = "${bindir} ${libdir}/X11/Options ${libdir}/X11/Cards ${libdir}/X11/getconfig ${libdir}/X11/etc ${libdir}/xserver/SecurityPolicy ${libdir}/xorg/modules/*.so ${libdir}/xorg/modules/*/*.so /etc/X11"
FILES_${PN}-doc += "${libdir}/X11/doc /usr/share/X11/xkb/compiled/README.compiled"
+FILES_${PN}-dbg += "${libdir}/xorg/modules/.debug ${libdir}/xorg/modules/*/.debug"
+FILES_${PN}-dev += "${libdir}/xorg/modules/*.la ${libdir}/xorg/modules/*/*.la"
do_stage() {
autotools_stage_all
diff --git a/packages/xorg-xserver/xserver-kdrive-1.2.0/.mtn2git_empty b/packages/xorg-xserver/xserver-kdrive-1.2.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.2.0/.mtn2git_empty
diff --git a/packages/xorg-xserver/xserver-kdrive/disable-xf86-dga-xorgcfg-git.patch b/packages/xorg-xserver/xserver-kdrive-1.2.0/disable-xf86-dga-xorgcfg.patch
index 4b7e41e3e9..4b7e41e3e9 100644
--- a/packages/xorg-xserver/xserver-kdrive/disable-xf86-dga-xorgcfg-git.patch
+++ b/packages/xorg-xserver/xserver-kdrive-1.2.0/disable-xf86-dga-xorgcfg.patch
diff --git a/packages/xorg-xserver/xserver-kdrive-1.2.0/enable-epson.patch b/packages/xorg-xserver/xserver-kdrive-1.2.0/enable-epson.patch
new file mode 100644
index 0000000000..8ec3a37c78
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.2.0/enable-epson.patch
@@ -0,0 +1,11 @@
+Index: xorg-server-1.2.0/hw/kdrive/Makefile.am
+===================================================================
+--- xorg-server-1.2.0.orig/hw/kdrive/Makefile.am 2007-03-28 17:11:38.000000000 +0200
++++ xorg-server-1.2.0/hw/kdrive/Makefile.am 2007-03-28 17:12:28.000000000 +0200
+@@ -1,5 +1,5 @@
+ if KDRIVEFBDEV
+-FBDEV_SUBDIRS = fbdev
++FBDEV_SUBDIRS = fbdev epson
+ endif
+
+ if KDRIVEIMAGEON
diff --git a/packages/xorg-xserver/xserver-kdrive-1.2.0/enable-tslib.patch b/packages/xorg-xserver/xserver-kdrive-1.2.0/enable-tslib.patch
new file mode 100644
index 0000000000..9a59530ed3
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.2.0/enable-tslib.patch
@@ -0,0 +1,12 @@
+Index: xorg-server-1.2.0/configure.ac
+===================================================================
+--- xorg-server-1.2.0.orig/configure.ac 2007-03-29 13:28:10.000000000 +0200
++++ xorg-server-1.2.0/configure.ac 2007-03-29 13:28:35.000000000 +0200
+@@ -1517,6 +1517,7 @@
+ AC_MSG_ERROR([tslib must be installed to build the tslib driver. See http://tslib.berlios.de/])
+ fi
+ AC_DEFINE(TSLIB, 1, [Have tslib support])
++ AC_DEFINE(TOUCHSCREEN, 1, [Have touchscreen support])
+ fi
+
+ # damage shadow extension glx (NOTYET) fb mi
diff --git a/packages/xorg-xserver/xserver-kdrive-1.2.0/enable-xcalibrate.patch b/packages/xorg-xserver/xserver-kdrive-1.2.0/enable-xcalibrate.patch
new file mode 100644
index 0000000000..11931f83d6
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.2.0/enable-xcalibrate.patch
@@ -0,0 +1,51 @@
+Index: xorg-server-1.2.0/mi/miinitext.c
+===================================================================
+--- xorg-server-1.2.0.orig/mi/miinitext.c 2007-01-23 06:39:17.000000000 +0100
++++ xorg-server-1.2.0/mi/miinitext.c 2007-03-30 11:28:44.000000000 +0200
+@@ -372,6 +372,9 @@
+ #ifdef DMXEXT
+ extern void DMXExtensionInit(INITARGS);
+ #endif
++#ifdef XCALIBRATE
++extern void XCalibrateExtensionInit(INITARGS);
++#endif
+ #ifdef XEVIE
+ extern void XevieExtensionInit(INITARGS);
+ #endif
+@@ -663,6 +666,9 @@
+ #ifdef DAMAGE
+ if (!noDamageExtension) DamageExtensionInit();
+ #endif
++#ifdef XCALIBRATE
++ XCalibrateExtensionInit ();
++#endif
+ }
+
+ void
+Index: xorg-server-1.2.0/include/kdrive-config.h.in
+===================================================================
+--- xorg-server-1.2.0.orig/include/kdrive-config.h.in 2007-03-30 11:31:07.000000000 +0200
++++ xorg-server-1.2.0/include/kdrive-config.h.in 2007-03-30 11:34:09.000000000 +0200
+@@ -22,6 +22,9 @@
+ /* Support tslib touchscreen abstraction library */
+ #undef TSLIB
+
++/* Build XCalibrate extension */
++#undef XCALIBRATE
++
+ /* Verbose debugging output hilarity */
+ #undef DEBUG
+
+Index: xorg-server-1.2.0/configure.ac
+===================================================================
+--- xorg-server-1.2.0.orig/configure.ac 2007-03-30 12:47:25.000000000 +0200
++++ xorg-server-1.2.0/configure.ac 2007-03-30 12:39:01.000000000 +0200
+@@ -1540,7 +1540,7 @@
+ ;;
+ esac
+ KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a'
+- KDRIVE_LIBS="$DIX_LIB $KDRIVE_LIB $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB $TSLIB_LIBS"
++ KDRIVE_LIBS="$DIX_LIB $KDRIVE_LIB $KDRIVE_PURE_LIBS $KDRIVE_OS_LIB $KDRIVE_STUB_LIB $TSLIB_LIBS"
+
+ # check if we can build Xephyr
+ PKG_CHECK_MODULES(XEPHYR, x11 xext xfont xau xdmcp, [xephyr="yes"], [xephyr="no"])
diff --git a/packages/xorg-xserver/xserver-kdrive-1.2.0/optional-xkb.patch b/packages/xorg-xserver/xserver-kdrive-1.2.0/optional-xkb.patch
new file mode 100644
index 0000000000..a580b500b7
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.2.0/optional-xkb.patch
@@ -0,0 +1,58 @@
+Index: xorg-server-1.2.0/Makefile.am
+===================================================================
+--- xorg-server-1.2.0.orig/Makefile.am 2007-01-23 06:39:15.000000000 +0100
++++ xorg-server-1.2.0/Makefile.am 2007-03-28 20:26:19.000000000 +0200
+@@ -30,6 +30,10 @@
+ XINPUT_DIR=Xi
+ endif
+
++if XKB
++XKB_DIR=xkb
++endif
++
+ if DBE
+ DBE_DIR=dbe
+ endif
+@@ -46,7 +50,7 @@
+ randr \
+ render \
+ $(XINPUT_DIR) \
+- xkb \
++ $(XKB_DIR) \
+ $(DBE_DIR) \
+ $(MFB_DIR) \
+ $(AFB_DIR) \
+Index: xorg-server-1.2.0/configure.ac
+===================================================================
+--- xorg-server-1.2.0.orig/configure.ac 2007-01-23 06:39:15.000000000 +0100
++++ xorg-server-1.2.0/configure.ac 2007-03-28 20:27:13.000000000 +0200
+@@ -428,6 +428,7 @@
+ AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMSExtension=$enableval], [DPMSExtension=yes])
+ AC_ARG_ENABLE(xinput, AS_HELP_STRING([--disable-xinput], [Build XInput Extension (default: enabled)]), [XINPUT=$enableval], [XINPUT=yes])
+ AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes])
++AC_ARG_ENABLE(xkb, AS_HELP_STRING([--disable-xkb], [Build XKB (default: enabled)]), [XKB=$enableval], [XKB=yes])
+
+ dnl DDXes.
+ AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
+@@ -754,12 +755,15 @@
+
+ AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
+
+-AC_DEFINE(XKB, 1, [Build XKB])
+-AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
+-AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
+-REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
+-XKB_LIB='$(top_builddir)/xkb/libxkb.la'
+-XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
++AM_CONDITIONAL(XKB, [test "x$XKB" = xyes])
++if test "x$XKB" = xyes; then
++ AC_DEFINE(XKB, 1, [Build XKB])
++ AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
++ AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
++ REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
++ XKB_LIB='$(top_builddir)/xkb/libxkb.la'
++ XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
++fi
+
+ AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1,
+ [Do not have `strcasecmp'.]))
diff --git a/packages/xorg-xserver/xserver-kdrive-common.inc b/packages/xorg-xserver/xserver-kdrive-common.inc
new file mode 100644
index 0000000000..02df9d2d4e
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-common.inc
@@ -0,0 +1,124 @@
+LICENSE = "MIT"
+DEPENDS = "compositeproto damageproto fixesproto recordproto resourceproto scrnsaverproto videoproto xextproto xproto \
+ libxau libxext libxdmcp libxfont libxrandr tslib virtual/libsdl virtual/libx11 xtrans"
+
+PROVIDES = "virtual/xserver"
+RPROVIDES = "virtual/xserver"
+PACKAGES =+ "xserver-kdrive-fbdev \
+ xserver-kdrive-sdl \
+ xserver-kdrive-fake \
+ xserver-kdrive-xephyr \
+ xserver-kdrive-epson \
+ xserver-kdrive-ati \
+ xserver-kdrive-chips \
+ xserver-kdrive-i810 \
+ xserver-kdrive-mach64 \
+ xserver-kdrive-mga \
+ xserver-kdrive-neomagic \
+ xserver-kdrive-nvidia \
+ xserver-kdrive-pm2 \
+ xserver-kdrive-r128 \
+ xserver-kdrive-smi \
+ xserver-kdrive-vesa \
+ xserver-kdrive-via \
+ xserver-kdrive-w100 \
+ "
+
+SECTION = "x11/base"
+DESCRIPTION = "X server from freedesktop.org"
+DESCRIPTION_xserver-kdrive-fbdev = "X server from freedesktop.org, supporting generic framebuffer devices"
+DESCRIPTION_xserver-kdrive-fake = "Fake X server"
+DESCRIPTION_xserver-kdrive-xephyr = "X server in an X window"
+DESCRIPTION_xserver-kdrive-epson = "X server from freedesktop.org, supporting Epson S1D13806 devices"
+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-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"
+DESCRIPTION_xserver-kdrive-mach64 = "X server from freedesktop.org, supporting mach64 chipsets"
+DESCRIPTION_xserver-kdrive-mga = "X server from freedesktop.org, supporting mga chipsets"
+DESCRIPTION_xserver-kdrive-neomagic = "X server from freedesktop.org, supporting neomagic chipsets"
+DESCRIPTION_xserver-kdrive-nvidia = "X server from freedesktop.org, supporting nvidia devices"
+DESCRIPTION_xserver-kdrive-pm2 = "X server from freedesktop.org, supporting Permedia2 chipsets"
+DESCRIPTION_xserver-kdrive-r128 = "X server from freedesktop.org, supporting rage128 chipsets"
+DESCRIPTION_xserver-kdrive-smi = "X server from freedesktop.org, supporting Silicon Motion devices"
+DESCRIPTION_xserver-kdrive-vesa = "X server from freedesktop.org, supporting any card with a VESA, VGA or even EGA BIOS. x86 hardware only"
+DESCRIPTION_xserver-kdrive-via = "X server from freedesktop.org, supporting VIA chipsets"
+
+FILES_${PN} += "${libdir}/xserver/SecurityPolicy"
+
+FILES_xserver-kdrive-fbdev = "${bindir}/Xfbdev"
+FILES_xserver-kdrive-fake = "${bindir}/Xfake"
+FILES_xserver-kdrive-xephyr = "${bindir}/Xephyr"
+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-chips = "${bindir}/Xchips"
+FILES_xserver-kdrive-i810 = "${bindir}/Xi810"
+FILES_xserver-kdrive-imageon = "${bindir}/Ximageon"
+FILES_xserver-kdrive-mach64 = "${bindir}/Xmach64"
+FILES_xserver-kdrive-mga = "${bindir}/Xmga"
+FILES_xserver-kdrive-neomagic = "${bindir}/Xneomagic"
+FILES_xserver-kdrive-nvidia = "${bindir}/Xnvidia"
+FILES_xserver-kdrive-pm2 = "${bindir}/Xpm2"
+FILES_xserver-kdrive-r128 = "${bindir}/Xr128"
+FILES_xserver-kdrive-smi = "${bindir}/Xsmi"
+FILES_xserver-kdrive-vesa = "${bindir}/Xvesa"
+FILES_xserver-kdrive-via = "${bindir}/Xvia"
+
+RDEPENDS_xserver-kdrive-fbdev = "${PN}"
+RDEPENDS_xserver-kdrive-fake = "${PN}"
+RDEPENDS_xserver-kdrive-xephyr = "${PN}"
+RDEPENDS_xserver-kdrive-epson = "${PN}"
+RDEPENDS_xserver-kdrive-sdl = "${PN}"
+RDEPENDS_xserver-kdrive-w100 = "${PN}"
+RDEPENDS_xserver-kdrive-ati = "${PN}"
+RDEPENDS_xserver-kdrive-chips = "${PN}"
+RDEPENDS_xserver-kdrive-i810 = "${PN}"
+RDEPENDS_xserver-kdrive-mach64 = "${PN}"
+RDEPENDS_xserver-kdrive-mga = "${PN}"
+RDEPENDS_xserver-kdrive-neomagic = "${PN}"
+RDEPENDS_xserver-kdrive-nvidia = "${PN}"
+RDEPENDS_xserver-kdrive-pm2 = "${PN}"
+RDEPENDS_xserver-kdrive-r128 = "${PN}"
+RDEPENDS_xserver-kdrive-smi = "${PN}"
+RDEPENDS_xserver-kdrive-vesa = "${PN}"
+RDEPENDS_xserver-kdrive-via = "${PN}"
+
+SRC_URI ?= "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
+ ${KDRIVE_COMMON_PATCHES}"
+KDRIVE_COMMON_PATCHES = " \
+ file://kmode.patch;patch=1 \
+ file://disable-apm.patch;patch=1 \
+ file://no-serial-probing.patch;patch=1 \
+ file://kdrive-evdev.patch;patch=1 \
+ file://kdrive-use-evdev.patch;patch=1 \
+ file://fbdev-not-fix.patch;patch=1 \
+ file://enable-builtin-fonts.patch;patch=1 \
+ file://disable-xf86-dga-xorgcfg.patch;patch=1 \
+ file://optional-xkb.patch;patch=1 \
+ file://enable-epson.patch;patch=1 \
+ file://enable-tslib.patch;patch=1 \
+ file://kmode-palm.patch;patch=1 \
+ "
+
+SRC_URI_append_mnci = " file://onlyfb.patch;patch=1"
+SRC_URI_append_poodle = " file://xserver-kdrive-poodle.patch;patch=1"
+PACKAGE_ARCH_poodle = "poodle"
+
+inherit autotools pkgconfig
+
+ARM_INSTRUCTION_SET = "arm"
+
+EXTRA_OECONF = "--enable-composite --enable-kdrive \
+ --disable-dga --disable-dri --disable-xinerama \
+ --disable-xf86misc --disable-xf86vidmode \
+ --disable-xorg --disable-xorgcfg \
+ --disable-xkb --disable-xnest --disable-xvfb \
+ --disable-xevie --disable-xprint --disable-xtrap \
+ --disable-dmx ${W100_OECONF} ${IMAGEON_OECONF} \
+ --with-default-font-path=built-ins \
+ --enable-tslib --enable-xcalibrate \
+ ac_cv_file__usr_share_X11_sgml_defs_ent=no"
diff --git a/packages/xorg-xserver/xserver-kdrive-imageon_X11R7.1-1.1.0.bb b/packages/xorg-xserver/xserver-kdrive-imageon_X11R7.1-1.1.0.bb
new file mode 100644
index 0000000000..106d5405a6
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-imageon_X11R7.1-1.1.0.bb
@@ -0,0 +1,52 @@
+DESCRIPTION = "X server for Imageon Cards from freedesktop.org"
+DESCRIPTION_xserver-kdrive-imageon = "X server from freedesktop.org, supporting the ATI imageon 100 chipset"
+
+COMPATIBLE_MACHINE = "(c7x0|hx4700)"
+
+SECTION = "x11/base"
+LICENSE = "MIT"
+
+DEPENDS = "tslib xproto libxdmcp xextproto xtrans libxau virtual/libx11 libxext libxrandr fixesproto damageproto libxfont resourceproto compositeproto xcalibrateext recordproto videoproto scrnsaverproto"
+
+PROVIDES = "virtual/xserver"
+RPROVIDES = "virtual/xserver"
+
+PR = "r1"
+
+FILESPATH = "${FILE_DIRNAME}/xserver-kdrive"
+
+SRC_URI = "http://ftp.x.org/pub/X11R7.1/src/xserver/xorg-server-X11R7.1-1.1.0.tar.bz2 \
+ file://kmode.patch;patch=1 \
+ file://disable-apm.patch;patch=1 \
+ file://no-serial-probing.patch;patch=1 \
+ file://kdrive-evdev.patch;patch=1 \
+ file://kdrive-use-evdev.patch;patch=1 \
+ file://fbdev-not-fix.patch;patch=1 \
+ file://enable-builtin-fonts.patch;patch=1 \
+ file://optional-xkb.patch;patch=1 \
+ file://disable-xf86-dga-xorgcfg.patch;patch=1 \
+ file://enable-tslib.patch;patch=1 \
+ file://xcalibrate.patch;patch=1 \
+ file://kdrive-vidmemarea.patch;patch=1 \
+ file://kdrive-imageon.patch;patch=1"
+
+S = "${WORKDIR}/xorg-server-X11R7.1-1.1.0"
+
+inherit autotools pkgconfig
+
+ARM_INSTRUCTION_SET = "arm"
+W100_OECONF_arm = "--enable-imageon"
+
+EXTRA_OECONF = "--enable-composite --enable-kdrive \
+ --disable-dga --disable-dri --disable-xinerama \
+ --disable-xf86misc --disable-xf86vidmode \
+ --disable-xorg --disable-xorgcfg \
+ --disable-xkb --disable-xnest --disable-xvfb \
+ --disable-xevie --disable-xprint --disable-xtrap \
+ --disable-dmx ${W100_OECONF} \
+ --with-default-font-path=built-ins \
+ --enable-tslib --enable-xcalibrate \
+ ac_cv_file__usr_share_X11_sgml_defs_ent=no"
+
+FILES_${PN} = "${libdir}/xserver/SecurityPolicy \
+ ${bindir}/Ximageon"
diff --git a/packages/xorg-xserver/xserver-kdrive/build-fix-panoramix.patch b/packages/xorg-xserver/xserver-kdrive/build-fix-panoramix.patch
new file mode 100644
index 0000000000..f919b48f0e
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive/build-fix-panoramix.patch
@@ -0,0 +1,18 @@
+Index: git/composite/compext.c
+===================================================================
+--- git.orig/composite/compext.c 2007-03-28 16:25:12.000000000 +0200
++++ git/composite/compext.c 2007-03-28 16:25:15.000000000 +0200
+@@ -696,11 +696,13 @@
+ if (GetPictureScreenIfSet(pScreen) == NULL)
+ return;
+ }
++#ifdef PANORAMIX
+ /* Xinerama's rewriting of window drawing before Composite gets to it
+ * breaks Composite.
+ */
+ if (!noPanoramiXExtension)
+ return;
++#endif
+
+ CompositeClientWindowType = CreateNewResourceType (FreeCompositeClientWindow);
+ if (!CompositeClientWindowType)
diff --git a/packages/xorg-xserver/xserver-kdrive/devfs.patch b/packages/xorg-xserver/xserver-kdrive/devfs.patch
deleted file mode 100644
index a6238126c0..0000000000
--- a/packages/xorg-xserver/xserver-kdrive/devfs.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- xserver/hw/kdrive/linux/linux.c~devfs
-+++ xserver/hw/kdrive/linux/linux.c
-@@ -82,10 +82,10 @@
- vtno = kdVirtualTerminal;
- else
- {
-- if ((fd = open("/dev/tty0",O_WRONLY,0)) < 0)
-+ if ((fd = open("/dev/vc/0",O_WRONLY,0)) < 0)
- {
- FatalError(
-- "LinuxInit: Cannot open /dev/tty0 (%s)\n",
-+ "LinuxInit: Cannot open /dev/tty/0 (%s)\n",
- strerror(errno));
- }
- if ((ioctl(fd, VT_OPENQRY, &vtno) < 0) ||
-@@ -96,7 +96,7 @@
- }
- close(fd);
-
-- sprintf(vtname,"/dev/tty%d",vtno); /* /dev/tty1-64 */
-+ sprintf(vtname,"/dev/vc/%d",vtno); /* /dev/tty1-64 */
-
- if ((LinuxConsoleFd = open(vtname, O_RDWR|O_NDELAY, 0)) < 0)
- {
-@@ -113,7 +113,7 @@
- *
- * Why is this needed?
- */
-- LinuxCheckChown ("/dev/tty0");
-+ LinuxCheckChown ("/dev/vc/0");
- /*
- * Linux doesn't switch to an active vt after the last close of a vt,
- * so we do this ourselves by remembering which is active now.
-@@ -453,7 +453,7 @@
- activeVT = -1;
- }
- close(LinuxConsoleFd); /* make the vt-manager happy */
-- fd = open ("/dev/tty0", O_RDWR|O_NDELAY, 0);
-+ fd = open ("/dev/vc/0", O_RDWR|O_NDELAY, 0);
- if (fd >= 0)
- {
- memset (&vts, '\0', sizeof (vts)); /* valgrind */
diff --git a/packages/xorg-xserver/xserver-kdrive/kdrive-imageon.patch b/packages/xorg-xserver/xserver-kdrive/kdrive-imageon.patch
new file mode 100644
index 0000000000..f4272f80e0
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive/kdrive-imageon.patch
@@ -0,0 +1,8851 @@
+# Author: Manuel Teira <manuel.teira@telefonica.net> (sirfred in #oe)
+# Description: New driver for the Imageon ATI Card. Implementing:
+# -Hardware solid fills
+# -Hardware bitblt
+# -Hardware cursors
+# -XV Extension
+# -Internal and External Imageon offscreen memory support
+# -Hardware RandR rotation (without using a shadow framebuffer)
+# -Support for RandR mode changing
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- xorg-server-X11R7.1-1.1.0.work/configure.ac~kdrive-imageon
++++ xorg-server-X11R7.1-1.1.0.work/configure.ac
+@@ -435,6 +435,7 @@
+ AC_ARG_ENABLE(kdrive, AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no])
+ AC_ARG_ENABLE(xephyr, AS_HELP_STRING([--enable-xephyr], [Build the kdrive Xephyr server (default: auto)]), [XEPHYR=$enableval], [XEPHYR=auto])
+ AC_ARG_ENABLE(xsdl, AS_HELP_STRING([--enable-xsdl], [Build the kdrive Xsdl server (default: auto)]), [XSDL=$enableval], [XSDL=auto])
++AC_ARG_ENABLE(imageon, AS_HELP_STRING([--enable-imageon], [Build the kdrive Ximageon server (default: no)]), [KDRIVEIMAGEON=$enableval], [KDRIVEIMAGEON=no])
+ dnl xprint
+ AC_ARG_ENABLE(freetype, AS_HELP_STRING([ --enable-freetype], [Build Xprint FreeType backend (default: yes)]), [XP_USE_FREETYPE=$enableval],[XP_USE_FREETYPE=no])
+ AC_ARG_WITH(freetype-config, AS_HELP_STRING([ --with-freetype-config=PROG], [Use FreeType configuration program PROG (default: auto)]), freetype_config=$withval, freetype_config=auto)
+@@ -1509,6 +1510,11 @@
+ AC_SUBST([XSDL_INCS])
+
+
++AM_CONDITIONAL(KDRIVEIMAGEON, [test "x$KDRIVEIMAGEON" = xyes])
++if test "x$KDRIVEIMAGEON" = xyes; then
++ AC_DEFINE(KDRIVEIMAGEON, 1, [Build Ximageon server])
++fi
++
+ dnl these only go in xkb-config.h (which is shared by the Xorg and Xnest servers)
+ AC_DEFINE(__XKBDEFRULES__, "xorg", [Default XKB rules])
+ AC_DEFINE_DIR(XKB_BASE_DIRECTORY, XKBPATH, [Path to XKB data])
+@@ -1750,6 +1756,7 @@
+ hw/kdrive/epson/Makefile
+ hw/kdrive/fake/Makefile
+ hw/kdrive/fbdev/Makefile
++hw/kdrive/imageon/Makefile
+ hw/kdrive/i810/Makefile
+ hw/kdrive/linux/Makefile
+ hw/kdrive/mach64/Makefile
+--- xorg-server-X11R7.1-1.1.0.work/hw/kdrive/Makefile.am~kdrive-imageon
++++ xorg-server-X11R7.1-1.1.0.work/hw/kdrive/Makefile.am
+@@ -1,18 +1,9 @@
+-if KDRIVEVESA
+-VESA_SUBDIRS = vesa ati chips epson i810 mach64 mga neomagic nvidia pm2 r128 \
+- smi via
+-endif
+-
+ if KDRIVEFBDEV
+ FBDEV_SUBDIRS = fbdev
+ endif
+
+-if XSDLSERVER
+-XSDL_SUBDIRS = sdl
+-endif
+-
+-if XEPHYR
+-XEPHYR_SUBDIRS = ephyr
++if KDRIVEIMAGEON
++IMAGEON_SUBDIRS = imageon
+ endif
+
+ SUBDIRS = \
+@@ -20,9 +11,9 @@
+ linux \
+ $(XSDL_SUBDIRS) \
+ $(FBDEV_SUBDIRS) \
++ $(IMAGEON_SUBDIRS) \
+ $(VESA_SUBDIRS) \
+- $(XEPHYR_SUBDIRS) \
+- fake
++ $(XEPHYR_SUBDIRS)
+
+ DIST_SUBDIRS = vesa ati chips epson i810 mach64 mga neomagic nvidia pm2 r128 \
+ smi via fbdev sdl ephyr src linux fake sis300
+--- /dev/null
++++ xorg-server-X11R7.1-1.1.0.work/hw/kdrive/imageon/Makefile.am
+@@ -0,0 +1,47 @@
++if KDRIVEFBDEV
++FBDEV_INCLUDES =-I$(top_srcdir)/hw/kdrive/fbdev
++FBDEV_LIBS = $(top_builddir)/hw/kdrive/fbdev/libfbdev.a
++endif
++
++INCLUDES = \
++ @KDRIVE_INCS@ \
++ $(FBDEV_INCLUDES) \
++ @KDRIVE_CFLAGS@
++
++bin_PROGRAMS = Ximageon
++
++if TSLIB
++TSLIB_FLAG = -lts
++endif
++
++noinst_LIBRARIES = libimageon.a
++
++libimageon_a_SOURCES = \
++ imageon.h \
++ imageon_regs.h \
++ imageon_const.h \
++ imageon.c \
++ imageon_cursor.c \
++ imageon_draw.c \
++ imageon_support.c \
++ imageon_video.c
++
++
++
++Ximageon_SOURCES = \
++ imageon_stub.c
++
++W100_LIBS = \
++ libimageon.a \
++ $(FBDEV_LIBS) \
++ @KDRIVE_LIBS@
++
++Ximageon_LDADD = \
++ $(W100_LIBS) \
++ @XSERVER_LIBS@ \
++ $(TSLIB_FLAG)
++
++
++Ximageon_DEPENDENCIES = \
++ libimageon.a \
++ $(FBDEV_LIBS)
+--- /dev/null
++++ xorg-server-X11R7.1-1.1.0.work/hw/kdrive/imageon/imageon.c
+@@ -0,0 +1,606 @@
++/*
++ * Copyright © 2007 Manuel Teira
++ *
++ * 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 Manuel Teira not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Manuel Teira makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * MANUEL TEIRA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL MANUEL TEIRA 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 "imageon.h"
++#include "imageon_regs.h"
++#include "imageon_support.h"
++
++W100CardEntry w100_cards[] = {
++ {0x1002, 0x5644, 0, "ATI Imageon 3200"},
++ {0x1002, 0x5741, W100XVSupport, "ATI Imageon 100"},
++ {0x1002, 0x5744, 0, "ATI Imageon 3220"},
++ {0, 0, 0, NULL}
++};
++
++W100ModeSpec w100_modes[] = {
++ {800, 600, 16, W100_EXTMEM, FALSE},
++ {640, 480, 16, W100_EXTMEM, FALSE},
++ {320, 240, 16, W100_INTMEM, FALSE},
++ { 0, 0, 0, 0, FALSE}
++};
++
++W100StartupInfo w100StartupInfo;
++
++extern void (*tslib_transform_coords)(long *x, long *y, void *closure);
++extern void *tslib_transform_closure;
++
++static void
++W100Startup(W100CardInfo *w100c)
++{
++ int i;
++ DBG_IMAGEON(("--W100Startup\n"));
++ W100ModeSpec *modes;
++ /* Take the current graphics mode */
++ if (!W100GetFbMode(w100c, &w100StartupInfo.mode)) {
++ ErrorF("(E) Unable to get current mode\n");
++ }
++ w100StartupInfo.randr = W100GetRotation(w100c);
++ w100StartupInfo.portrait = w100StartupInfo.mode.width < w100StartupInfo.mode.height;
++
++ /* Test the valid modes */
++ for (modes = w100_modes; modes->width; modes++) {
++ modes->supported = W100CheckFbMode(w100c, modes);
++ }
++
++ DBG_IMAGEON(("Startup Mode: %dx%d@%d, rot: %d, portrait: %s\n",
++ w100StartupInfo.mode.width,
++ w100StartupInfo.mode.height,
++ w100StartupInfo.mode.bpp,
++ w100StartupInfo.randr,
++ w100StartupInfo.portrait ? "Yes" : "No"));
++
++ /* Tell the kernel to never switch off external memory */
++ W100SysFsSet(w100c, W100_SYSFS_BASE "extmem", "1");
++
++ /* Disable framebuffer accel */
++ W100SysFsSet(w100c, W100_SYSFS_BASE "accel", "0");
++
++ /* Enable fastsysclk */
++ W100SysFsSet(w100c, W100_SYSFS_BASE "fastpllclk", "1");
++
++}
++
++
++static Bool
++W100Map(KdCardInfo * card, W100CardInfo *w100c)
++{
++ DBG_IMAGEON(("--W100Map\n"));
++ w100c->mem_base = (CARD8 *) KdMapDevice(W100_MEM_BASE, W100_MEM_SIZE);
++
++ if (w100c->mem_base == NULL) {
++ return FALSE;
++ }
++
++ w100c->reg_base = w100c->mem_base + W100_REG_OFFSET;
++
++ /*
++ * It doesn't matter mapping all the area as registers.
++ * There's only difference when HAVE_ASM_MTRR_H is defined.
++ * So, this call is doing nothing.
++ */
++ KdSetMappedMode(W100_MEM_BASE, W100_MEM_SIZE, KD_MAPPED_MODE_REGISTERS);
++
++ return TRUE;
++}
++
++static void
++W100Unmap(KdCardInfo * card, W100CardInfo *w100c)
++{
++ DBG_IMAGEON(("--W100Unmap\n"));
++ if (w100c->mem_base) {
++ KdResetMappedMode(W100_MEM_BASE, W100_MEM_SIZE,
++ KD_MAPPED_MODE_REGISTERS);
++ KdUnmapDevice((void *) w100c->mem_base, W100_MEM_SIZE);
++ w100c->mem_base = w100c->reg_base = 0;
++ }
++}
++
++static void W100MemSetup(W100CardInfo *w100c)
++{
++ int reg_value;
++ int int_start, int_size;
++ int ext_start, ext_size;
++ int i;
++ DBG_IMAGEON(("--W100MemSetup\n"));
++
++ for (i = 0; i < w100c->num_memareas; i++) {
++ xfree(w100c->memareas[i]);
++ }
++ xfree(w100c->memareas);
++
++ reg_value = MMIO_IN32(mmMC_FB_LOCATION);
++ int_start = (reg_value & 0xffff) << 8;
++ int_size = (((reg_value >> 16) & 0xffff) - (reg_value & 0xffff)) << 8;
++ DBG_IMAGEON(("(I) MC_FB_LOCATION: 0x%08x. Start: 0x%08x, size: %d\n",
++ reg_value, int_start, int_size));
++
++ reg_value = MMIO_IN32(mmMC_EXT_MEM_LOCATION);
++ ext_start = (reg_value & 0xffff) << 8;
++ ext_size = (((reg_value >> 16) & 0xffff) - (reg_value & 0xffff)) << 8;
++ DBG_IMAGEON(("(I) MC_EXT_MEM_LOCATION: 0x%08x. Start: 0x%08x, size: %d\n",
++ reg_value, ext_start, ext_size));
++
++ w100c->num_memareas = (ext_size > 0) ? 2 : 1;
++ w100c->memareas = xcalloc(sizeof(W100MemArea *), w100c->num_memareas);
++
++ w100c->memareas[W100_INTMEM] = xcalloc(sizeof(W100MemArea), 1);
++ w100c->memareas[W100_INTMEM]->priority = KD_VIDMEM_MAXPRIO;
++ w100c->memareas[W100_INTMEM]->start = (CARD8 *) int_start;
++ w100c->memareas[W100_INTMEM]->size = int_size;
++
++ if (w100c->num_memareas == 2) {
++ w100c->memareas[W100_EXTMEM] = xcalloc(sizeof(W100MemArea), 1);
++ w100c->memareas[W100_EXTMEM]->priority = KD_VIDMEM_MINPRIO;
++ w100c->memareas[W100_EXTMEM]->start = (CARD8 *) ext_start;
++ w100c->memareas[W100_EXTMEM]->size = ext_size;
++ }
++
++ for (i = 0; i < w100c->num_memareas; i++) {
++ DBG_IMAGEON(("(I) Memory mapped at 0x%08x(0x%08x), size %d bytes\n",
++ W100_CARD2HOST(w100c->memareas[i]->start),
++ w100c->memareas[i]->start,
++ w100c->memareas[i]->size));
++ }
++
++}
++
++static Bool
++W100CardInit(KdCardInfo * card)
++{
++ W100CardInfo *w100c;
++
++ W100CardEntry *model = &w100_cards[0];
++ static Bool initialized = FALSE;
++
++ DBG_IMAGEON(("--W100CardInit\n"));
++
++ w100c = xcalloc(sizeof(W100CardInfo), 1);
++ if (w100c == NULL)
++ return FALSE;
++
++ if (!fbdevInitialize(card, &w100c->fbdev)) {
++ return FALSE;
++ }
++
++ if (!W100Map(card, w100c)) {
++ xfree(w100c);
++ return FALSE;
++ }
++ card->driver = w100c;
++
++ while (model->name) {
++ if (model->device == card->attr.deviceID) {
++ w100c->card_id = model;
++ break;
++ }
++ model++;
++ }
++
++ ErrorF("(I) Using ATI card: %s\n", w100c->card_id->name);
++
++ if (!initialized) {
++ initialized = TRUE;
++ W100Startup(w100c);
++ }
++
++ w100c->hw_window.mode = W100GetModeSpec(w100c, &w100StartupInfo.mode);
++ w100c->hw_window.randr = w100StartupInfo.randr;
++
++ tslib_transform_closure = w100c;
++ tslib_transform_coords = W100TransformTsLibCoordinates;
++ return TRUE;
++}
++
++
++static void
++W100CardFini(KdCardInfo * card)
++{
++ W100CardInfo *w100c = (W100CardInfo *) card->driver;
++
++ DBG_IMAGEON(("--W100CardFini\n"));
++ W100Unmap(card, w100c);
++ fbdevCardFini(card);
++}
++
++static void
++W100Setup(KdScreenInfo *screen)
++{
++ W100CardInfo(screen);
++ W100MemArea *mem;
++ KdMouseMatrix m;
++ int fb_size, i;
++
++ DBG_IMAGEON(("--W100Setup\n"));
++
++ /* Adjust mode */
++ w100c->hw_window.width = screen->width;
++ w100c->hw_window.height = screen->height;
++ w100c->hw_window.bpp = screen->fb[0].bitsPerPixel;
++ W100SetupGraphicWindow(w100c);
++
++ /* Get some register values */
++ w100c->regs.ENG_CNTL = MMIO_IN32(mmENG_CNTL);
++ w100c->regs.VIDEO_CTRL = MMIO_IN32(mmVIDEO_CTRL);
++ w100c->regs.GRAPHIC_H_DISP = MMIO_IN32(mmGRAPHIC_H_DISP);
++ w100c->regs.GRAPHIC_V_DISP = MMIO_IN32(mmGRAPHIC_V_DISP);
++ w100c->regs.DISP_DEBUG2 = MMIO_IN32(mmDISP_DEBUG2);
++
++ W100MemSetup(w100c);
++
++ /* Clear the VideoMemAreas set up by the framebuffer initialization */
++ for (i = 0; i < screen->num_videomem_areas; i++) {
++ xfree(screen->videomem_areas[i]);
++ }
++ xfree(screen->videomem_areas);
++
++ screen->videomem_areas = xcalloc(sizeof(KdVideoMemArea *),
++ w100c->num_memareas);
++ screen->num_videomem_areas = w100c->num_memareas;
++
++ screen->fb[0].byteStride = screen->width * screen->fb[0].bitsPerPixel / 8;
++ fb_size = screen->fb[0].byteStride * screen->height;
++
++ DBG_IMAGEON(("(I) Framebuffer required size: %d bytes\n", fb_size));
++
++ for (i = 0; i < w100c->num_memareas; i++) {
++ mem = w100c->memareas[i];
++ screen->videomem_areas[i] = xcalloc(sizeof(KdVideoMemArea), 1);
++ screen->videomem_areas[i]->priority = mem->priority;
++ screen->videomem_areas[i]->base = W100_CARD2HOST(mem->start);
++ screen->videomem_areas[i]->size = mem->size;
++ if (w100c->hw_window.mode->fbpool == i) {
++ DBG_IMAGEON(("(I) FrameBuffer in w100 memzone 0x%08x(0x%08x)\n",
++ W100_CARD2HOST(mem->start), mem->start));
++ screen->videomem_areas[i]->available_offset = fb_size;
++ screen->fb[0].frameBuffer = W100_CARD2HOST(mem->start);
++ } else {
++ screen->videomem_areas[i]->available_offset = 0;
++ }
++ DBG_IMAGEON(("New videomem_area(priority:%d, start:0x%08x, size:%d, available_offset:%d\n",
++ screen->videomem_areas[i]->priority,
++ screen->videomem_areas[i]->base,
++ screen->videomem_areas[i]->size,
++ screen->videomem_areas[i]->available_offset));
++ }
++
++
++ w100c->hw_window.offset = W100_HOST2CARD(screen->fb[0].frameBuffer);
++
++ KdComputeMouseMatrix(&m, screen->randr,
++ w100StartupInfo.portrait ?
++ W100_MIN(screen->width, screen->height) :
++ W100_MAX(screen->width, screen->height),
++ w100StartupInfo.portrait ?
++ W100_MAX(screen->width, screen->height) :
++ W100_MIN(screen->width, screen->height));
++
++ KdSetMouseMatrix(&m);
++
++ DBG_IMAGEON(("Window(width:%d,height:%d,bpp:%d,offset:0x%08x"
++ "(0x%08x), randr:%d)\n",
++ w100c->hw_window.width,
++ w100c->hw_window.height,
++ w100c->hw_window.bpp,
++ w100c->hw_window.offset,
++ screen->fb[0].frameBuffer,
++ w100c->hw_window.randr));
++
++}
++
++static Bool
++W100ScreenInit(KdScreenInfo * screen)
++{
++ W100ScreenInfo *w100s;
++ W100CardInfo(screen);
++ Bool success = FALSE;
++
++ DBG_IMAGEON(("--W100ScreenInit\n"));
++ w100s = xcalloc(sizeof(W100ScreenInfo), 1);
++ if (w100s == NULL)
++ return FALSE;
++
++ w100s->w100c = w100c;
++ w100s->screen = screen;
++ screen->driver = w100s;
++
++ success = fbdevScreenInitialize(screen, &w100s->fbdev);
++
++ if (!success) {
++ screen->driver = NULL;
++ xfree(w100s);
++ return FALSE;
++ }
++
++ W100Setup(screen);
++
++ return TRUE;
++}
++
++static void
++W100ScreenFini(KdScreenInfo * screen)
++{
++ W100ScreenInfo *w100s = (W100ScreenInfo *) screen->driver;
++ DBG_IMAGEON(("--W100ScreenFini\n"));
++ fbdevScreenFini(screen);
++ xfree(w100s);
++ screen->driver = 0;
++}
++
++static Bool
++W100InitScreen(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++
++ DBG_IMAGEON(("--W100InitScreen\n"));
++ if (w100c->card_id->caps & W100XVSupport) {
++ W100InitVideo(pScreen);
++ }
++ return fbdevInitScreen(pScreen);
++}
++
++#ifdef RANDR
++
++static Bool W100RandRSetConfig(ScreenPtr pScreen,
++ Rotation randr,
++ int rate,
++ RRScreenSizePtr pSize)
++{
++ KdScreenPriv(pScreen);
++ KdScreenInfo *screen = pScreenPriv->screen;
++ W100CardInfo(pScreenPriv);
++ Bool screenEnabled = pScreenPriv->enabled;
++
++ DBG_IMAGEON(("--W100RandRSetConfig(randr:%d,pSize:%dx%d)\n",
++ randr, pSize->width, pSize->height));
++
++ if (screenEnabled) {
++ KdDisableScreen(pScreen);
++ }
++
++ if (randr & (RR_Rotate_0|RR_Rotate_180)) {
++ pScreen->mmWidth = screen->width_mm;
++ pScreen->mmHeight = screen->height_mm;
++ pScreen->width = pSize->width;
++ pScreen->height = pSize->height;
++ } else {
++ pScreen->mmWidth = screen->height_mm;
++ pScreen->mmHeight = screen->width_mm;
++ pScreen->width = pSize->height;
++ pScreen->height = pSize->width;
++ }
++
++ screen->randr = randr;
++ screen->width = pScreen->width;
++ screen->height = pScreen->height;
++ w100c->hw_window.randr = KdSubRotation(w100StartupInfo.randr, randr);
++ w100c->hw_window.mode = W100GetBestMode(w100c, pScreen->width, pScreen->height);
++
++ KdOffscreenSwapOut(screen->pScreen);
++
++ W100Setup(screen);
++
++ DBG_IMAGEON(("ModifyPixMapHeader(width:%d,height:%d,depth:%d,bpp:%d,bs:%d,fb:0x%08x)\n", pScreen->width, pScreen->height,
++ screen->fb[0].depth,
++ screen->fb[0].bitsPerPixel,
++ screen->fb[0].byteStride,
++ screen->fb[0].frameBuffer));
++
++
++ (*pScreen->ModifyPixmapHeader) (fbGetScreenPixmap(pScreen),
++ pScreen->width,
++ pScreen->height,
++ screen->fb[0].depth,
++ screen->fb[0].bitsPerPixel,
++ screen->fb[0].byteStride,
++ screen->fb[0].frameBuffer);
++
++
++ if (screenEnabled) {
++ KdEnableScreen(pScreen);
++ }
++ return TRUE;
++}
++
++static Bool W100RandRGetInfo(ScreenPtr pScreen, Rotation *rotations)
++{
++ KdScreenPriv(pScreen);
++ KdScreenInfo *screen = pScreenPriv->screen;
++ W100CardInfo(pScreenPriv);
++ RRScreenSizePtr pSize;
++ Rotation randr;
++ W100ModeSpec *modes;
++ int i;
++
++ DBG_IMAGEON(("--W100RandRGetInfo\n"));
++
++ *rotations = RR_Rotate_All;
++
++ for (modes = w100_modes; modes->width; modes++) {
++ if (modes->supported) {
++ pSize = RRRegisterSize(pScreen,
++ modes->width,
++ modes->height,
++ screen->width_mm,
++ screen->height_mm);
++ if (modes == w100c->hw_window.mode) {
++ RRSetCurrentConfig(pScreen, screen->randr, 0, pSize);
++ }
++ }
++ }
++
++ return TRUE;
++}
++
++static Bool W100RandRInit(ScreenPtr pScreen)
++{
++ rrScrPrivPtr pScrPriv = rrGetScrPriv(pScreen);
++ DBG_IMAGEON(("--W100RandRInit\n"));
++ pScrPriv->rrSetConfig = W100RandRSetConfig;
++ pScrPriv->rrGetInfo = W100RandRGetInfo;
++ return TRUE;
++}
++
++#endif
++
++static Bool
++W100FinishInitScreen(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ DBG_IMAGEON(("--W100FinishInitScreen\n"));
++ if (!fbdevFinishInitScreen(pScreen))
++ return FALSE;
++
++#ifdef RANDR
++ if (!W100RandRInit(pScreen))
++ return FALSE;
++#endif
++ return TRUE;
++}
++
++static Bool
++W100CreateResources(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++
++ return fbdevCreateResources(pScreen);
++}
++
++static void
++W100Preserve(KdCardInfo * card)
++{
++ W100CardInfo *w100c = card->driver;
++ DBG_IMAGEON(("--W100Preserve\n"));
++
++ fbdevPreserve(card);
++}
++
++static void
++W100Restore(KdCardInfo * card)
++{
++ W100CardInfo *w100c = card->driver;
++ DBG_IMAGEON(("--W100Restore\n"));
++ fbdevRestore(card);
++}
++
++static Bool
++W100DPMS(ScreenPtr pScreen, int mode)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ DBG_IMAGEON(("--W100DPMS\n"));
++ return fbdevDPMS(pScreen, mode);
++}
++
++static Bool
++W100Enable(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++
++ DBG_IMAGEON(("--W100Enable\n"));
++
++ /*
++ if (!fbdevEnable(pScreen))
++ return FALSE;
++ */
++
++ if (w100c->mem_base == NULL) {
++ if (!W100Map(pScreenPriv->screen->card, w100c)) {
++ return FALSE;
++ }
++ W100Setup(pScreenPriv->screen);
++ }
++ W100SetupGraphicEngine(w100c);
++
++ graphic_offset_u go;
++ go.val = MMIO_IN32(mmGRAPHIC_OFFSET);
++ DBG_IMAGEON(("Graphic offset is 0x%08x(0x%08x)\n",
++ go.f.graphic_offset,
++ W100_CARD2HOST(go.f.graphic_offset)));
++
++
++ return TRUE;
++}
++
++static void
++W100Disable(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ DBG_IMAGEON(("--W100Disable\n"));
++ //W100Unmap(pScreenPriv->card, w100c);
++
++ fbdevDisable(pScreen);
++}
++
++static void
++W100GetColors(ScreenPtr pScreen, int fb, int n, xColorItem * pdefs)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++
++ fbdevGetColors(pScreen, fb, n, pdefs);
++}
++
++static void
++W100PutColors(ScreenPtr pScreen, int fb, int n, xColorItem * pdefs)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++
++ fbdevPutColors(pScreen, fb, n, pdefs);
++}
++
++KdCardFuncs W100Funcs = {
++ W100CardInit, /* cardinit */
++ W100ScreenInit, /* scrinit */
++ W100InitScreen, /* initScreen */
++ W100FinishInitScreen, /* finishInitScreen */
++ W100CreateResources, /* createRes */
++ W100Preserve, /* preserve */
++ W100Enable, /* enable */
++ W100DPMS, /* dpms */
++ W100Disable, /* disable */
++ W100Restore, /* restore */
++ W100ScreenFini, /* scrfini */
++ W100CardFini, /* cardfini */
++
++ W100CursorInit, /* initCursor */
++ W100CursorEnable, /* enableCursor */
++ W100CursorDisable, /* disableCursor */
++ W100CursorFini, /* finiCursor */
++ W100RecolorCursor, /* recolorCursor */
++
++ W100InitAccel, /* initAccel */
++ W100EnableAccel, /* enableAccel */
++ W100DisableAccel, /* disableAccel */
++ W100FiniAccel, /* finiAccel */
++
++ W100GetColors, /* getColors */
++ W100PutColors, /* putColors */
++};
+--- /dev/null
++++ xorg-server-X11R7.1-1.1.0.work/hw/kdrive/imageon/imageon_const.h
+@@ -0,0 +1,161 @@
++/*
++ * Copyright © 2007 Manuel Teira
++ *
++ * 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 Manuel Teira not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Manuel Teira makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * MANUEL TEIRA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL MANUEL TEIRA 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 __IMAGEON_CONST_H__
++#define __IMAGEON_CONST_H__
++
++// DP_GUI_MASTER_CNTL.GMC_Brush_DataType
++// DP_DATATYPE.Brush_DataType
++#define DP_BRUSH_8x8MONOOPA 0 //8x8 mono pattern (expanded to frgd, bkgd)
++#define DP_BRUSH_8x8MONOTRA 1 //8x8 mono pattern (expanded to frgd, leave_alone)
++#define DP_PEN_32x1MONOOPA 6 //32x1 mono pattern (expanded to frgd, bkgd)
++#define DP_PEN_32x1MONOTRA 7 //32x1 mono pattern (expanded to frgd, leave_alone)
++#define DP_BRUSH_8x8COLOR 10 //8x8 color pattern
++#define DP_BRUSH_SOLIDCOLOR 13 //solid color pattern (frgd)
++#define DP_BRUSH_NONE 15 //no brush used
++
++#define SIZE_BRUSH_8x8MONO 2
++#define SIZE_PEN_32x1MONO 1
++#define SIZE_BRUSH_8x8COLOR_8 16
++#define SIZE_BRUSH_8x8COLOR_16 32
++#define MAX_BRUSH_SIZE SIZE_BRUSH_8x8COLOR_16
++
++// DP_GUI_MASTER_CNTL.GMC_Dst_DataType
++// DP_DATATYPE.Dp_Dst_DataType
++#define DP_DST_8BPP 2 // 8 bpp grey scale
++#define DP_DST_16BPP_1555 3 //16 bpp aRGB 1555
++#define DP_DST_16BPP_444 5 //16 bpp aRGB 4444
++
++// DP_GUI_MASTER_CNTL.GMC_Src_DataType
++// DP_DATATYPE.Dp_Src_DataType
++#define DP_SRC_1BPP_OPA 0 //mono (expanded to frgd, bkgd)
++#define DP_SRC_1BPP_TRA 1 //mono (expanded to frgd, leave_alone)
++#define DP_SRC_COLOR_SAME_AS_DST 3 //color (same as DST)
++#define DP_SRC_SOLID_COLOR_BLT 4 //solid color for Blt (use frgd)
++#define DP_SRC_4BPP 5 //4 bpp
++#define DP_SRC_12BPP_PACKED 6 //12 bpp packed
++
++// DP_GUI_MASTER_CNTL.GMC_Byte_Pix_Order
++// DP_DATATYPE.Dp_Byte_Pix_Order
++#define DP_PIX_ORDER_MSB2LSB 0 //monochrome pixel order from MSBit to LSBit
++#define DP_PIX_ORDER_LSB2MSB 1 //monochrome pixel order from LSBit to MSBit
++
++// DP_GUI_MASTER_CNTL.GMC_Dp_Src_Source
++#define DP_SRC_MEM_LINEAR 1 //loaded from memory (linear trajectory)
++#define DP_SRC_MEM_RECTANGULAR 2 //loaded from memory (rectangular trajectory)
++#define DP_SRC_HOSTDATA_BIT 3 //loaded from hostdata (linear trajectory)
++#define DP_SRC_HOSTDATA_BYTE 4 //loaded from hostdata (linear trajectory & byte-aligned)
++
++// DP_GUI_MASTER_CNTL.GMC_Dp_Op
++#define DP_OP_ROP 0
++#define DP_OP_ARITHMETIC 1
++
++// E2_ARITHMETIC_CNTL.opcode
++#define E2_OPC_GLBALP_ADD_SRC2 0
++#define E2_OPC_GLBALP_SUB_SRC2 1
++#define E2_OPC_SRC1_ADD_SRC2 2
++#define E2_OPC_SRC1_SUB_SRC2 3
++#define E2_OPC_DST_SADDBLEND_SRC2 4
++#define E2_OPC_DST_CADDBLEND_SRC2 5
++#define E2_OPC_DST_CSUBBLEND_SRC2 6
++#define E2_OPC_LF_SRC2 7
++#define E2_OPC_SCALE_SRC2 8
++#define E2_OPC_STRETCH_SRC2 9
++#define E2_OPC_SRC1_4BPPCPYWEXP 10
++#define E2_OPC_MC1 11
++#define E2_OPC_MC2 12
++#define E2_OPC_MC1_IDCT 13
++#define E2_OPC_MC2_IDCT 14
++#define E2_OPC_IDCT_ONLY_IFRAME 15
++
++// E2_ARITHMETIC_CNTL.clamp
++#define E2_CLAMP_OFF 0
++#define E2_CLAMP_ON 1
++
++// E2_ARITHMETIC_CNTL.rounding
++#define E2_ROUNDING_TRUNCATE 0
++#define E2_ROUNDING_TO_INFINITY 1
++
++// E2_ARITHMETIC_CNTL.srcblend
++#define E2_SRCBLEND_GLOBALALPHA 0
++#define E2_SRCBLEND_ZERO 1
++#define E2_SRCBLEND_SRC2ALPHA 2
++#define E2_SRCBLEND_DSTALPHA 3
++#define E2_SRCBLEND_ALPHA1PLANE 4
++
++// E2_ARITHMETIC_CNTL.destblend
++#define E2_DSTBLEND_GLOBALALPHA 0
++#define E2_DSTBLEND_ZERO 1
++#define E2_DSTBLEND_SRC2ALPHA 2
++#define E2_DSTBLEND_DSTALPHA 3
++#define E2_DSTBLEND_ALPHA1PLANE 4
++
++// LCD_FORMAT.lcd_type
++#define LCDTYPE_TFT333 0
++#define LCDTYPE_TFT444 1
++#define LCDTYPE_TFT555 2
++#define LCDTYPE_TFT666 3
++#define LCDTYPE_COLSTNPACK4 4
++#define LCDTYPE_COLSTNPACK8F1 5
++#define LCDTYPE_COLSTNPACK8F2 6
++#define LCDTYPE_COLSTNPACK16 7
++#define LCDTYPE_MONSTNPACK4 8
++#define LCDTYPE_MONSTNPACK8 9
++
++// CP_RB_CNTL.rb_bufsz
++#define RB_SIZE_2K 8
++#define RB_SIZE_4K 9
++#define RB_SIZE_8K 10
++#define RB_SIZE_16K 11
++#define RB_SIZE_32K 12
++#define RB_SIZE_64K 13
++
++// GRAPHIC_CTRL.color_depth
++#define COLOR_DEPTH_1BPP 0
++#define COLOR_DEPTH_2BPP 1
++#define COLOR_DEPTH_4BPP 2
++#define COLOR_DEPTH_8BPP 3
++#define COLOR_DEPTH_332 4
++#define COLOR_DEPTH_A444 5
++#define COLOR_DEPTH_A555 6
++
++// VIDEO_CTRL.video_mode
++#define VIDEO_MODE_422 0
++#define VIDEO_MODE_420 1
++
++// CLR_CMP_CNTL.cmp_fcn_src
++#define CMP_FCN_SRC_NEQ 4
++#define CMP_FCN_SRC_EQ 5
++
++// CLR_CMP_CNTL.cmp_src
++#define CMP_SRC_SRC 1
++
++// Overlay formats
++#define OVLFORMAT_YUV422 (6)
++#define OVLFORMAT_YUV420 (7)
++#define OVLFORMAT_RGB565 (5)
++#define OVLFORMAT_EQU_DISPLAY (8)
++
++#define W100_CLK_SRC_XTAL 0
++#define W100_CLK_SRC_PLL 1
++
++#endif
+--- /dev/null
++++ xorg-server-X11R7.1-1.1.0.work/hw/kdrive/imageon/imageon_cursor.c
+@@ -0,0 +1,566 @@
++/*
++ * Copyright © 2007 Manuel Teira
++ *
++ * 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 Manuel Teira not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Manuel Teira makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * MANUEL TEIRA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL MANUEL TEIRA 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 "cursorstr.h"
++#include "imageon.h"
++#include "imageon_regs.h"
++
++#define W100_CURSOR_HEIGHT (16)
++#define W100_CURSOR_PITCH (4)
++#define W100_CURSOR_WIDTH (16)
++#define W100_CURSOR_SIZE W100_CURSOR_PITCH * W100_CURSOR_WIDTH
++
++static CARD16 expand2bpp[256];
++
++static CARD16 spread_byte(CARD8 b)
++{
++ CARD16 s = b;
++
++ s = ((s & 0x00f0) << 4) | (s & 0x000f);
++ s = ((s & 0x0c0c) << 2) | (s & 0x0303);
++ s = ((s & 0x2222) << 1) | (s & 0x1111);
++ return s;
++}
++
++static void W100InitExpansionTable()
++{
++ int i;
++ for (i = 0; i < 256; i++) {
++ expand2bpp[i] = spread_byte(i);
++ }
++}
++
++#define BigEndian(v) \
++ (((v & 0x000000ff) << 24) | \
++ ((v & 0x0000ff00) << 8) | \
++ ((v & 0x00ff0000) >> 8) | \
++ ((v & 0xff000000) >> 24))
++
++#define PixelOffset(x, y) \
++ (((y) * W100_CURSOR_PITCH + ((x) / 4)) >> 2)
++
++#define PixelShift(x, y) \
++ (2 * ((x) % W100_CURSOR_WIDTH))
++
++#define PixelMask(x, y) \
++ ((0xc0000000) >> PixelShift(x, y))
++
++#define PixelVal(src, x, y) \
++ ((*(src + PixelOffset(x, y)) & PixelMask(x, y)) >> (30 - PixelShift(x, y)))
++
++#define SetPixelVal(ptr, x, y, val) \
++ *(((CARD32 *)(ptr)) + PixelOffset(x, y)) = \
++ *(((CARD32 *)(ptr)) + PixelOffset(x, y)) & ~PixelMask(x, y) | \
++ ((val) & 0x03) << (30 - PixelShift(x2, y2))
++
++#define DUMP_CURSOR(src) do { \
++ int x; \
++ int y; \
++ for (y = 0; y < W100_CURSOR_HEIGHT; y++) { \
++ DBG_IMAGEON(("Line %02d: ", y)); \
++ for (x = 0; x < W100_CURSOR_WIDTH; x++) { \
++ DBG_IMAGEON(("%d", PixelVal(src,x,y))); \
++ } \
++ DBG_IMAGEON(("\n")); \
++ } \
++ DBG_IMAGEON((".\n")); \
++} while (0)
++
++static void
++W100RotateCursor(int randr, CARD32 *src, CARD32 *dst)
++{
++ int x1, y1, x2, y2;
++
++ switch (randr & RR_Rotate_All) {
++ case RR_Rotate_0:
++ x1 = 0;
++ y1 = 0;
++ for (y2 = 0; y2 < W100_CURSOR_HEIGHT; y2++) {
++ for (x2 = W100_CURSOR_WIDTH - 1; x2 >= 0; --x2) {
++ SetPixelVal(dst, x2, y2, PixelVal(src, x1, y1));
++ ++x1;
++ if (x1 >= W100_CURSOR_WIDTH) {
++ x1 = 0;
++ ++y1;
++ }
++ }
++ }
++ break;
++ case RR_Rotate_90:
++ x1 = 0;
++ y1 = 0;
++ for (x2 = W100_CURSOR_WIDTH - 1; x2 >= 0; --x2) {
++ for (y2 = W100_CURSOR_HEIGHT - 1; y2 >=0; --y2) {
++ SetPixelVal(dst, x2, y2, PixelVal(src, x1, y1));
++ ++x1;
++ if (x1 >= W100_CURSOR_WIDTH) {
++ x1 = 0;
++ ++y1;
++ }
++ }
++ }
++ break;
++ case RR_Rotate_180:
++ x1 = 0;
++ y1 = 0;
++ for (y2 = W100_CURSOR_HEIGHT - 1; y2 >= 0; --y2) {
++ for (x2 = 0; x2 < W100_CURSOR_WIDTH; x2++) {
++ SetPixelVal(dst, x2, y2, PixelVal(src, x1, y1));
++ ++x1;
++ if (x1 >= W100_CURSOR_WIDTH) {
++ x1 = 0;
++ ++y1;
++ }
++ }
++ }
++ break;
++ case RR_Rotate_270:
++ x1 = 0;
++ y1 = 0;
++ for (x2 = 0; x2 < W100_CURSOR_WIDTH; x2++) {
++ for (y2 = 0; y2 < W100_CURSOR_HEIGHT; y2++) {
++ SetPixelVal(dst, x2, y2, PixelVal(src, x1, y1));
++ ++x1;
++ if (x1 >= W100_CURSOR_WIDTH) {
++ x1 = 0;
++ ++y1;
++ }
++ }
++ }
++ break;
++ }
++}
++
++static void
++W100SetCursorColors(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ W100ScreenInfo(pScreenPriv);
++ W100Cursor *pCurPriv = &w100s->cursor;
++ CursorPtr pCursor = pCurPriv->pCursor;
++ CursorBitsPtr bits = pCursor->bits;
++ cursor_color_u fgcolor;
++ cursor_color_u bgcolor;
++
++ fgcolor.f.cur_color_r = pCursor->foreRed >> 8;
++ fgcolor.f.cur_color_g = pCursor->foreGreen >> 8;
++ fgcolor.f.cur_color_b = pCursor->foreBlue >> 8;
++
++ bgcolor.f.cur_color_r = pCursor->backRed >> 8;
++ bgcolor.f.cur_color_g = pCursor->backGreen >> 8;
++ bgcolor.f.cur_color_b = pCursor->backBlue >> 8;
++
++ DBG_IMAGEON(("W100SetCursorColors fg(%02x,%02x,%02x), bg(%02x,%02x,%02x)\n",
++ fgcolor.f.cur_color_r,
++ fgcolor.f.cur_color_g,
++ fgcolor.f.cur_color_b,
++ bgcolor.f.cur_color_r,
++ bgcolor.f.cur_color_g,
++ bgcolor.f.cur_color_b));
++
++ W100DisableDisplayUpdate(w100c);
++ MMIO_OUT32(mmCURSOR1_COLOR0, bgcolor.val);
++ MMIO_OUT32(mmCURSOR1_COLOR1, fgcolor.val);
++ W100EnableDisplayUpdate(w100c);
++
++}
++
++static void
++W100LoadCursor(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ W100ScreenInfo(pScreenPriv);
++ W100Cursor *pCurPriv = &w100s->cursor;
++ CursorPtr pCursor = pCurPriv->pCursor;
++ CursorBitsPtr bits = pCursor->bits;
++ CARD32 *dst;
++ CARD8 tmpCursor0[W100_CURSOR_SIZE];
++ CARD8 tmpCursor1[W100_CURSOR_SIZE];
++ CARD32 expValue, expMask;
++ CARD32 *src;
++ CARD32 *mask;
++ int lwsrc;
++ int line, i;
++ int h, w;
++
++
++ pCurPriv->pCursor = pCursor;
++ pCurPriv->xhot = bits->xhot;
++ pCurPriv->yhot = bits->yhot;
++
++ memset(tmpCursor0, 0xaa, W100_CURSOR_SIZE);
++
++ h = bits->height;
++ w = bits->width;
++ if (h > W100_CURSOR_HEIGHT) {
++ h = W100_CURSOR_HEIGHT;
++ }
++
++ if (w > W100_CURSOR_WIDTH) {
++ w = W100_CURSOR_WIDTH;
++ }
++
++ src = (CARD32*) bits->source;
++ dst = (CARD32*) tmpCursor0;
++ mask = (CARD32*) bits->mask;
++
++ lwsrc = BitmapBytePad(bits->width) >> 2;
++
++ for (line = 0; line < h; line++) {
++ for (i = 0; i < lwsrc; i++) {
++ expValue =
++ (expand2bpp[src[i] & 0xff]) |
++ (expand2bpp[(src[i] >> 8) & 0xff] << 16);
++ expMask =
++ (expand2bpp[mask[i] & 0xff]) |
++ (expand2bpp[(mask[i] >> 8) & 0xff] << 16);
++ expMask |= (expMask << 1); /* Expand 01 -> 11, 00 -> 00 */
++ dst[i] = (0xaaaaaaaa & ~expMask) | (expValue & expMask);
++ }
++ src += lwsrc;
++ mask += lwsrc;
++ dst += lwsrc;
++ }
++
++ /* Rotate the pixmap to get the correct orientation */
++ W100RotateCursor(w100c->hw_window.randr,
++ (CARD32*) tmpCursor0,
++ (CARD32*) tmpCursor1);
++
++ DUMP_CURSOR((CARD32*)tmpCursor1);
++ /* Correct endianness */
++ src = (CARD32*) tmpCursor1;
++ dst = (CARD32*) (pCurPriv->area->vidmem->base + pCurPriv->area->offset);
++ DBG_IMAGEON(("W100LoadCursor(xhot:%d,yhot:%d,width:%d,height:%d) dst(0x%08x)\n",
++ bits->xhot, bits->yhot,
++ bits->width, bits->height,
++ dst));
++
++ for (line = 0; line < h; line++) {
++ for (i = 0; i < lwsrc; i++) {
++ dst[i] = BigEndian(src[i]);
++ }
++ src += lwsrc;
++ dst += lwsrc;
++ }
++
++ W100SetCursorColors(pScreen);
++}
++
++static void
++W100UnloadCursor(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ W100ScreenInfo(pScreenPriv);
++ cursor_h_pos_u hpos;
++ W100Cursor *pCurPriv = &w100s->cursor;
++
++ DBG_IMAGEON(("W100UnloadCursor pCurPriv:%p\n", pCurPriv));
++
++ hpos.val = pCurPriv->hpos;
++ hpos.f.cur_en = 0;
++
++ W100DisableDisplayUpdate(w100c);
++ MMIO_OUT32(mmCURSOR1_H_POS, hpos.val);
++ W100EnableDisplayUpdate(w100c);
++ pCurPriv->hpos = hpos.val;
++}
++
++static void
++W100MoveCursor(ScreenPtr pScreen, int x, int y)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ W100ScreenInfo(pScreenPriv);
++ W100Cursor *pCurPriv = &w100s->cursor;
++ int xoffs, yoffs;
++ cursor_offset_u cursor_offset;
++ cursor_h_pos_u hpos;
++ cursor_v_pos_u vpos;
++ graphic_h_disp_u graphic_hdisp;
++ graphic_v_disp_u graphic_vdisp;
++ int tx, ty, tw, th;
++
++
++ if (!pCurPriv->has_cursor) {
++ return;
++ }
++ if (!pScreenPriv->enabled) {
++ return;
++ }
++
++ graphic_hdisp.val = w100c->regs.GRAPHIC_H_DISP;
++ graphic_vdisp.val = w100c->regs.GRAPHIC_V_DISP;
++ xoffs = 0;
++ yoffs = 0;
++ x -= pCurPriv->xhot;
++ y -= pCurPriv->yhot;
++ tx = W100MapToHWX(w100c, x, y, pCurPriv->width, pCurPriv->height);
++ ty = W100MapToHWY(w100c, x, y, pCurPriv->width, pCurPriv->height);
++ tw = W100MapToHWW(w100c, x, y, pCurPriv->width, pCurPriv->height);
++ th = W100MapToHWH(w100c, x, y, pCurPriv->width, pCurPriv->height);
++
++ if (tx < 0) {
++ xoffs = -tx;
++ tw -= xoffs;
++ tx = 0;
++ }
++
++ if (ty < 0) {
++ yoffs = -ty;
++ th -= yoffs;
++ ty = 0;
++ }
++
++ hpos.f.cur_h_start = graphic_hdisp.f.graphic_h_start + tx;
++ hpos.f.cur_h_end = hpos.f.cur_h_start + tw;
++ hpos.f.cur_en = 1;
++ vpos.f.cur_v_start = graphic_vdisp.f.graphic_v_start + ty;
++ vpos.f.cur_v_end = vpos.f.cur_v_start + th;
++ cursor_offset.f.cur_x_offset = xoffs;
++ cursor_offset.f.cur_y_offset = yoffs;
++ cursor_offset.f.cur_offset = (CARD32)
++ W100_HOST2CARD(pCurPriv->area->vidmem->base
++ + pCurPriv->area->offset);
++ DBG_IMAGEON(("W100MoveCursor dst(x:%d,y:%d),"
++ "mapped(x:%d,y:%d,xoffs:%d,yoffs:%d)\n",
++ x, y, tx, ty, xoffs, yoffs));
++
++ W100DisableDisplayUpdate(w100c);
++ MMIO_OUT32(mmCURSOR1_OFFSET, cursor_offset.val);
++ MMIO_OUT32(mmCURSOR1_V_POS, vpos.val);
++ MMIO_OUT32(mmCURSOR1_H_POS, hpos.val);
++ W100EnableDisplayUpdate(w100c);
++
++ pCurPriv->hpos = hpos.val;
++ pCurPriv->vpos = vpos.val;
++ pCurPriv->coffset = cursor_offset.val;
++
++}
++
++static Bool
++W100RealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ W100ScreenInfo(pScreenPriv);
++ W100Cursor *pCurPriv = &w100s->cursor;
++ DBG_IMAGEON(("W100RealizeCursor\n"));
++
++ if (!pScreenPriv->enabled) {
++ return TRUE;
++ }
++
++ if (pCursor && pCurPriv->pCursor == pCursor) {
++ int x, y;
++ miPointerPosition(&x, &y);
++ W100LoadCursor(pScreen);
++ W100MoveCursor(pScreen, x, y);
++ }
++ return TRUE;
++}
++
++
++static Bool
++W100UnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
++{
++ DBG_IMAGEON(("W100UnrealizeCursor\n"));
++ return TRUE;
++}
++
++
++static void
++W100SetCursor(ScreenPtr pScreen, CursorPtr pCursor, int x, int y)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ W100ScreenInfo(pScreenPriv);
++ W100Cursor *pCurPriv = &w100s->cursor;
++
++ pCurPriv->pCursor = pCursor;
++
++ if (!pScreenPriv->enabled) {
++ return;
++ }
++
++ if (pCursor) {
++ W100LoadCursor(pScreen);
++ W100MoveCursor(pScreen, x, y);
++ } else {
++ W100UnloadCursor(pScreen);
++ }
++}
++
++
++miPointerSpriteFuncRec W100PointerSpriteFuncs = {
++ W100RealizeCursor,
++ W100UnrealizeCursor,
++ W100SetCursor,
++ W100MoveCursor,
++};
++
++static void
++W100QueryBestSize(int class, unsigned short *pwidth, unsigned short *pheight,
++ ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100ScreenInfo(pScreenPriv);
++ W100Cursor *pCurPriv = &w100s->cursor;
++
++ switch (class) {
++ case CursorShape:
++ if (*pwidth > pCurPriv->width) {
++ *pwidth = pCurPriv->width;
++ }
++ if (*pheight > pCurPriv->height) {
++ *pheight = pCurPriv->height;
++ }
++ if (*pwidth > pScreen->width) {
++ *pwidth = pScreen->width;
++ }
++ if (*pheight > pScreen->height) {
++ *pheight = pScreen->height;
++ }
++ break;
++ default:
++ fbQueryBestSize(class, pwidth, pheight, pScreen);
++ break;
++ }
++}
++
++static void
++W100CursorSave(ScreenPtr pScreen, KdOffscreenArea *area)
++{
++ KdScreenPriv(pScreen);
++ W100ScreenInfo(pScreenPriv);
++ W100Cursor *pCurPriv = &w100s->cursor;
++ DBG_IMAGEON(("W100CursorSave\n"));
++
++ pCurPriv->area = NULL;
++}
++
++void
++W100CursorEnable(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ W100ScreenInfo(pScreenPriv);
++ W100Cursor *pCurPriv = &w100s->cursor;
++
++ if (!pCurPriv->has_cursor) {
++ return;
++ }
++
++ DBG_IMAGEON(("W100CursorEnable\n"));
++
++ if (pCurPriv->area == NULL) {
++ pCurPriv->area = KdOffscreenAlloc(pScreen,
++ W100_CURSOR_SIZE, 0, TRUE,
++ W100CursorSave, w100s);
++ }
++ if (pCurPriv->area == NULL) {
++ FatalError("Couldn't allocate offscreen memory for cursor.\n");
++ } else {
++ DBG_IMAGEON(("Cursor memory at 0x%08x(0x%08x)\n",
++ pCurPriv->area->vidmem->base + pCurPriv->area->offset,
++ W100_HOST2CARD(pCurPriv->area->vidmem->base
++ + pCurPriv->area->offset)));
++ }
++ if (pCurPriv->pCursor) {
++ int x, y;
++ miPointerPosition(&x, &y);
++ W100LoadCursor(pScreen);
++ W100MoveCursor(pScreen, x, y);
++ } else {
++ W100UnloadCursor(pScreen);
++ }
++}
++
++
++void
++W100CursorDisable(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ W100ScreenInfo(pScreenPriv);
++ W100Cursor *pCurPriv = &w100s->cursor;
++ DBG_IMAGEON(("W100CursorDisable\n"));
++
++ if (!pScreenPriv->enabled || !pCurPriv->has_cursor) {
++ return;
++ }
++
++ if (pCurPriv->pCursor) {
++ W100UnloadCursor(pScreen);
++ }
++
++ pCurPriv->area = NULL;
++}
++
++Bool
++W100CursorInit(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ W100ScreenInfo(pScreenPriv);
++ W100Cursor *pCurPriv = &w100s->cursor;
++
++ DBG_IMAGEON(("W100CursorInit\n"));
++
++ pCurPriv->width = W100_CURSOR_WIDTH;
++ pCurPriv->height = W100_CURSOR_HEIGHT;
++ pScreen->QueryBestSize = W100QueryBestSize;
++ miPointerInitialize(pScreen,
++ &W100PointerSpriteFuncs,
++ &kdPointerScreenFuncs,
++ FALSE);
++ pCurPriv->has_cursor = TRUE;
++ pCurPriv->pCursor = NULL;
++ W100InitExpansionTable();
++ return TRUE;
++}
++
++
++void
++W100RecolorCursor(ScreenPtr pScreen, int ndef, xColorItem *pdef)
++{
++ return;
++}
++
++
++void
++W100CursorFini(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100ScreenInfo(pScreenPriv);
++ W100Cursor *pCurPriv = &w100s->cursor;
++
++ pCurPriv->has_cursor = FALSE;
++ pCurPriv->pCursor = NULL;
++}
+--- /dev/null
++++ xorg-server-X11R7.1-1.1.0.work/hw/kdrive/imageon/imageon_draw.c
+@@ -0,0 +1,237 @@
++/*
++ * Copyright © 2007 Manuel Teira
++ *
++ * 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 Manuel Teira not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Manuel Teira makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * MANUEL TEIRA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL MANUEL TEIRA 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 "imageon.h"
++#include "imageon_regs.h"
++#include "imageon_const.h"
++#include "imageon_support.h"
++#include "kaa.h"
++
++static W100CardInfo *currentCard;
++
++void
++W100WaitMarker(ScreenPtr pScreen, int marker)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ W100WaitIdle(w100c);
++}
++
++Bool
++W100PrepareSolid(PixmapPtr pPix, int alu, Pixel pm, Pixel fg)
++{
++ KdScreenPriv(pPix->drawable.pScreen);
++ W100ScreenInfo(pScreenPriv);
++ W100CardInfo(pScreenPriv);
++ int fifoEntries = 4;
++
++ DBG_IMAGEON(("W100PrepareSolid(alu:%d, pm:0x%08x, fg:%d)\n",
++ alu, pm, fg));
++
++ W100ResetContext(w100c);
++ W100SetPixelMask(w100c, pm);
++
++ if (W100SetDestinationPixmap(pPix)) {
++ if (w100c->ctx.mask.enable) {
++ ++fifoEntries;
++ }
++ if (W100WaitCmdFifoEntries(w100c, fifoEntries)) {
++ MMIO_OUT32(mmDP_GUI_MASTER_CNTL, W100ComputeSolidGmc(w100c, alu));
++ MMIO_OUT32(mmDST_PITCH, w100c->ctx.dst.pitch);
++ MMIO_OUT32(mmDST_OFFSET, w100c->ctx.dst.offset);
++ MMIO_OUT32(mmDP_BRUSH_FRGD_CLR, fg);
++
++ if (w100c->ctx.mask.enable) {
++ MMIO_OUT32(mmDP_WRITE_MSK, pm);
++ }
++ currentCard = w100c;
++ return TRUE;
++ }
++ }
++ ErrorF("Error in W100PrepareSolid\n");
++ return FALSE;
++}
++
++void
++W100Solid(int x1, int y1, int x2, int y2)
++{
++ W100CardInfo *w100c = currentCard;
++ DBG_IMAGEON(("W100Solid(x1:%d,y1:%d,x2:%d,y2:%d)\n", x1, y1, x2, y2));
++
++ if (W100WaitCmdFifoEntries(w100c, 2)) {
++ MMIO_OUT32(mmDST_Y_X, (y1 << 16) | x1);
++ MMIO_OUT32(mmDST_HEIGHT_WIDTH, ((y2 - y1) << 16) | (x2 - x1));
++ } else {
++ ErrorF("Error in W100Solid\n");
++ }
++}
++
++void
++W100DoneSolid(void)
++{
++}
++
++
++Bool
++W100PrepareCopy(PixmapPtr pSrc, PixmapPtr pDst,
++ int dx, int dy, int alu, Pixel pm)
++{
++ KdScreenPriv(pDst->drawable.pScreen);
++ W100ScreenInfo(pScreenPriv);
++ W100CardInfo(pScreenPriv);
++ dp_datatype_u datatype;
++
++ int fifoEntries = 6;
++
++ W100ResetContext(w100c);
++ W100SetPixelMask(w100c, pm);
++ W100SetXForm(w100c, dx, dy);
++
++ if (W100SetSourcePixmap(pSrc) && W100SetDestinationPixmap(pDst)) {
++ DBG_IMAGEON(("W100PrepareCopy(src(pitch:%d,offset:0x%08x),"
++ "dst(pitch:%d,offset:0x%08x))\n",
++ w100c->ctx.src.pitch,
++ w100c->ctx.src.offset,
++ w100c->ctx.dst.pitch,
++ w100c->ctx.dst.offset));
++ if (w100c->ctx.mask.enable) {
++ ++fifoEntries;
++ }
++
++ if (W100WaitCmdFifoEntries(w100c, fifoEntries)) {
++ MMIO_OUT32(mmSRC_PITCH, w100c->ctx.src.pitch);
++ MMIO_OUT32(mmSRC_OFFSET, w100c->ctx.src.offset);
++ MMIO_OUT32(mmDST_PITCH, w100c->ctx.dst.pitch);
++ MMIO_OUT32(mmDST_OFFSET, w100c->ctx.dst.offset);
++ MMIO_OUT32(mmDP_GUI_MASTER_CNTL, W100ComputeCopyGmc(w100c, alu));
++ if (w100c->ctx.mask.enable) {
++ MMIO_OUT32(mmDP_WRITE_MSK, pm);
++ }
++ MMIO_OUT32(mmDP_CNTL, w100c->ctx.xform.dataPath);
++ currentCard = w100c;
++ return TRUE;
++ }
++ }
++ ErrorF("Error in W100PrepareCopy\n");
++ return FALSE;
++}
++
++void
++W100Copy(int srcX, int srcY, int dstX, int dstY, int w, int h)
++{
++ W100CardInfo *w100c = currentCard;
++ DBG_IMAGEON(("W100Copy(src(x:%d,y:%d),dst(x:%d,y:%d),w:%d,h:%d)\n",
++ srcX, srcY,
++ dstX, dstY,
++ w, h));
++ if (w100c->ctx.xform.dx < 0) {
++ dstX += w - 1;
++ srcX += w - 1;
++ }
++
++ if (w100c->ctx.xform.dy < 0) {
++ dstY += h - 1;
++ srcY += h - 1;
++ }
++
++ if (W100WaitCmdFifoEntries(w100c, 3)) {
++ MMIO_OUT32(mmSRC_Y_X, (srcY << 16) | srcX);
++ MMIO_OUT32(mmDST_Y_X, (dstY << 16) | dstX);
++ MMIO_OUT32(mmDST_HEIGHT_WIDTH, (h << 16) | w);
++ } else {
++ ErrorF("Error in W100Copy\n");
++ }
++}
++
++void
++W100DoneCopy(void)
++{
++}
++
++Bool
++W100InitAccel(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100ScreenInfo(pScreenPriv);
++
++
++ DBG_IMAGEON(("--W100InitAccel: %d/%d depth/bpp\n",
++ pScreenPriv->screen->fb[0].depth,
++ pScreenPriv->screen->fb[0].bitsPerPixel));
++
++ memset(&w100s->kaa, 0, sizeof(KaaScreenInfoRec));
++ w100s->kaa.waitMarker = W100WaitMarker;
++ w100s->kaa.PrepareSolid = W100PrepareSolid;
++ w100s->kaa.Solid = W100Solid;
++ w100s->kaa.DoneSolid = W100DoneSolid;
++ w100s->kaa.PrepareCopy = W100PrepareCopy;
++ w100s->kaa.Copy = W100Copy;
++ w100s->kaa.DoneCopy = W100DoneCopy;
++
++ w100s->kaa.flags |= KAA_OFFSCREEN_PIXMAPS;
++ /* Offset alignment, not sure if this is enought */
++ w100s->kaa.offsetAlign = 0;
++ w100s->kaa.pitchAlign = 16;
++
++ if (!kaaDrawInit(pScreen, &w100s->kaa)) {
++ return FALSE;
++ }
++ DBG_IMAGEON(("KAA flags: 0x%08x\n", w100s->kaa.flags));
++ return TRUE;
++}
++
++void
++W100EnableAccel(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100ScreenInfo(pScreenPriv);
++ W100CardInfo(pScreenPriv);
++
++ DBG_IMAGEON(("--W100EnableAccel\n"));
++
++ w100s->kaa.PrepareBlend = NULL;
++ w100s->kaa.Blend = NULL;
++ w100s->kaa.DoneBlend = NULL;
++ w100s->kaa.CheckComposite = NULL;
++ w100s->kaa.PrepareComposite = NULL;
++ w100s->kaa.Composite = NULL;
++ w100s->kaa.DoneComposite = NULL;
++ w100s->kaa.UploadToScreen = NULL;
++ w100s->kaa.UploadToScratch = NULL;
++ kaaMarkSync(pScreen);
++}
++
++void
++W100DisableAccel(ScreenPtr pScreen)
++{
++ DBG_IMAGEON(("--W100DisableAccel\n"));
++}
++
++void
++W100FiniAccel(ScreenPtr pScreen)
++{
++ DBG_IMAGEON(("--W100FiniAccel\n"));
++}
+--- /dev/null
++++ xorg-server-X11R7.1-1.1.0.work/hw/kdrive/imageon/imageon.h
+@@ -0,0 +1,261 @@
++/*
++ * Copyright © 2007 Manuel Teira
++ *
++ * 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 Manuel Teira not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Manuel Teira makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * MANUEL TEIRA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL MANUEL TEIRA 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 _IMAGEON_H_
++#define _IMAGEON_H_
++
++#ifdef HAVE_CONFIG_H
++#include <kdrive-config.h>
++#endif
++
++#include <fbdev.h>
++
++#include <kxv.h>
++
++#define DEBUG_IMAGEON 0
++#if DEBUG_IMAGEON
++#define DBG_IMAGEON(a) ErrorF a
++#else
++#define DBG_IMAGEON(a)
++#endif
++
++
++#define W100_MEM_BASE (0x08000000)
++#define W100_REG_OFFSET (0x00010000)
++#define W100_REG_BASE (W100_MEM_BASE + W100_REG_OFFSET)
++#define W100_MEM_SIZE (0x01000000)
++#define W100_REG_SIZE (0x00002000)
++#define W100_CMDFIFO_SIZE (16)
++
++#define W100_CARD2HOST(x) (w100c->mem_base + (CARD32)(x))
++#define W100_HOST2CARD(x) ((x) - (CARD32)(w100c->mem_base))
++#define W100_MEMAREAS (2)
++#define W100_INTMEM (0)
++#define W100_EXTMEM (1)
++
++#define W100_SYSFS_BASE "/sys/bus/platform/devices/w100fb/"
++
++#define MMIO_OUT32(a, v) (*(VOL32 *)((w100c->reg_base) + (a)) = (v))
++#define MMIO_IN32(a) (*(VOL32 *)((w100c->reg_base) + (a)))
++
++#define W100_MAX(x, y) ((x) > (y) ? x : y)
++#define W100_MIN(x, y) ((x) < (y) ? x : y)
++
++#define W100_ALIGN(q, a) ((q + a - 1) & ~(a - 1))
++
++#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))
++
++typedef volatile CARD8 VOL8;
++typedef volatile CARD16 VOL16;
++typedef volatile CARD32 VOL32;
++
++typedef struct _W100CardEntry {
++ CARD16 vendor;
++ CARD16 device;
++ CARD8 caps;
++ char *name;
++} W100CardEntry;
++
++
++typedef enum _W100Caps {
++ W100XVSupport = 1
++} W100Caps;
++
++typedef struct _W100ModeSpec {
++ CARD16 width;
++ CARD16 height;
++ CARD8 bpp;
++ CARD8 fbpool;
++ Bool supported;
++} W100ModeSpec;
++
++typedef struct _W100Mode {
++ CARD16 width;
++ CARD16 height;
++ CARD8 bpp;
++} W100Mode;
++
++typedef struct _W100MemArea {
++ CARD8 *start;
++ CARD32 size;
++ CARD8 priority;
++} W100MemArea;
++
++typedef struct _W100StartupInfo {
++ W100CardEntry *card_id;
++ W100Mode mode;
++ Bool portrait;
++ int randr;
++} W100StartupInfo;
++
++typedef struct _W100CardInfo {
++ FbdevPriv fbdev;
++ W100CardEntry *card_id;
++ CARD8 *mem_base;
++ CARD8 *reg_base;
++ W100MemArea **memareas;
++ int num_memareas;
++ int cmdfifo_entries;
++ struct {
++ CARD32 ENG_CNTL;
++ CARD32 VIDEO_CTRL;
++ CARD32 GRAPHIC_H_DISP;
++ CARD32 GRAPHIC_V_DISP;
++ CARD32 DISP_DEBUG2;
++ } regs;
++ struct {
++ CARD8 *offset;
++ CARD16 width;
++ CARD16 height;
++ int randr;
++ W100ModeSpec *mode;
++ CARD8 bpp;
++ } hw_window;
++ CARD8 last_dst_videomem;
++ CARD8 last_src_videomem;
++ struct {
++ struct {
++ CARD8 datatype;
++ CARD32 pitch;
++ CARD32 offset;
++ CARD8 videomem;
++ } dst;
++ struct {
++ CARD8 datatype;
++ CARD32 pitch;
++ CARD32 offset;
++ CARD8 videomem;
++ } src;
++ struct {
++ int dx;
++ int dy;
++ int randr;
++ Bool mirror;
++ CARD32 dataPath;
++ } xform;
++ struct {
++ Pixel pm;
++ Bool enable;
++ } mask;
++ } ctx;
++} W100CardInfo;
++
++#define W100GetCardInfo(kd) ((W100CardInfo *) ((kd)->card->driver))
++#define W100CardInfo(kd) W100CardInfo *w100c = W100GetCardInfo(kd)
++
++typedef struct _W100Cursor {
++ int width, height;
++ int xhot, yhot;
++ Bool has_cursor;
++ CursorPtr pCursor;
++ KdOffscreenArea *area;
++ CARD32 vpos;
++ CARD32 hpos;
++ CARD32 coffset;
++} W100Cursor;
++
++typedef struct _W100ScreenInfo {
++ FbdevScrPriv fbdev;
++ KaaScreenInfoRec kaa;
++ W100CardInfo *w100c;
++ KdScreenInfo *screen;
++ KdVideoAdaptorPtr pAdaptor;
++ W100Cursor cursor;
++} W100ScreenInfo;
++
++#define W100GetScreenInfo(kd) ((W100ScreenInfo *) ((kd)->screen->driver))
++#define W100ScreenInfo(kd) W100ScreenInfo *w100s = W100GetScreenInfo(kd)
++
++typedef enum _W100VideoStatus {
++ W100_OVERLAY_ON = 1,
++ W100_OVERLAY_CONFIGURED = 2
++} W100VideoStatus;
++
++
++typedef struct _W100PortPriv {
++ CARD32 videoStatus;
++ CARD32 videoCtrl;
++ RegionRec clip;
++ KdOffscreenArea *offSurface;
++ CARD32 offSize;
++ KdOffscreenArea *ovlSurface;
++ CARD32 ovlSize;
++ CARD32 YPlaneOffset;
++ CARD32 UPlaneOffset;
++ CARD32 VPlaneOffset;
++ CARD32 colorKey;
++ CARD8 brightness;
++ CARD32 maxOverlaySize;
++ CARD16 ovlX;
++ CARD16 ovlY;
++ CARD16 ovlWidth;
++ CARD16 ovlHeight;
++ CARD8 videoHorExp;
++ CARD8 videoVerExp;
++ int id;
++} W100PortPrivRec, *W100PortPrivPtr;
++
++extern KdCardFuncs W100Funcs;
++
++/* imageon_draw.c */
++void W100WaitMarker(ScreenPtr pScreen, int marker);
++Bool W100PrepareSolid(PixmapPtr pPix, int alu, Pixel pm, Pixel fg);
++void W100Solid(int x1, int y1, int x2, int y2);
++Bool W100PrepareCopy(PixmapPtr pSrc, PixmapPtr pDst,
++ int dx, int dy, int alu, Pixel pm);
++void W100Copy(int srcX, int srcY, int dstX, int dstY, int w, int h);
++void W100DoneCopy(void);
++Bool W100InitAccel(ScreenPtr pScreen);
++void W100EnableAccel(ScreenPtr pScreen);
++void W100DisableAccel(ScreenPtr pScreen);
++void W100FiniAccel(ScreenPtr pScreen);
++/* imageon_cursor.c */
++void W100CursorEnable(ScreenPtr pScreen);
++void W100CursorDisable(ScreenPtr pScreen);
++Bool W100CursorInit(ScreenPtr pScreen);
++void W100RecolorCursor(ScreenPtr pScreen, int ndef, xColorItem * pdef);
++void W100CursorFini(ScreenPtr pScreen);
++
++
++
++
++#endif /* _IMAGEON_H_ */
+--- /dev/null
++++ xorg-server-X11R7.1-1.1.0.work/hw/kdrive/imageon/imageon_regs.h
+@@ -0,0 +1,4155 @@
++/*
++ * Copyright © 2007 Manuel Teira
++ *
++ * 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 Manuel Teira not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Manuel Teira makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * MANUEL TEIRA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL MANUEL TEIRA 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 __IMAGEON_REGS_H__
++#define __IMAGEON_REGS_H__
++
++/* Block CIF Start: */
++#define mmCHIP_ID 0x0000
++#define mmREVISION_ID 0x0004
++#define mmWRAP_BUF_A 0x0008
++#define mmWRAP_BUF_B 0x000C
++#define mmWRAP_TOP_DIR 0x0010
++#define mmWRAP_START_DIR 0x0014
++#define mmCIF_CNTL 0x0018
++#define mmCFGREG_BASE 0x001C
++#define mmCIF_IO 0x0020
++#define mmCIF_READ_DBG 0x0024
++#define mmCIF_WRITE_DBG 0x0028
++#define cfgIND_ADDR_A_0 0x0000
++#define cfgIND_ADDR_A_1 0x0001
++#define cfgIND_ADDR_A_2 0x0002
++#define cfgIND_DATA_A 0x0003
++#define cfgREG_BASE 0x0004
++#define cfgINTF_CNTL 0x0005
++#define cfgSTATUS 0x0006
++#define cfgCPU_DEFAULTS 0x0007
++#define cfgIND_ADDR_B_0 0x0008
++#define cfgIND_ADDR_B_1 0x0009
++#define cfgIND_ADDR_B_2 0x000A
++#define cfgIND_DATA_B 0x000B
++#define cfgPM4_RPTR 0x000C
++#define cfgSCRATCH 0x000D
++#define cfgPM4_WRPTR_0 0x000E
++#define cfgPM4_WRPTR_1 0x000F
++/* Block CIF End: */
++
++/* Block CP Start: */
++#define mmCP_RB_CNTL 0x0210
++#define mmCP_RB_BASE 0x0214
++#define mmCP_RB_RPTR_ADDR 0x0218
++#define mmCP_RB_RPTR 0x021C
++#define mmCP_RB_RPTR_WR 0x02F8
++#define mmCP_RB_WPTR 0x0220
++#define mmCP_IB_BASE 0x0228
++#define mmCP_IB_BUFSZ 0x022C
++#define mmCP_CSQ_CNTL 0x0230
++#define mmCP_CSQ_APER_PRIMARY 0x0300
++#define mmCP_CSQ_APER_INDIRECT 0x0340
++#define mmCP_ME_CNTL 0x0240
++#define mmCP_ME_RAM_ADDR 0x0244
++#define mmCP_ME_RAM_RADDR 0x0248
++#define mmCP_ME_RAM_DATAH 0x024C
++#define mmCP_ME_RAM_DATAL 0x0250
++#define mmCP_DEBUG 0x025C
++#define mmSCRATCH_REG0 0x0260
++#define mmSCRATCH_REG1 0x0264
++#define mmSCRATCH_REG2 0x0268
++#define mmSCRATCH_REG3 0x026C
++#define mmSCRATCH_REG4 0x0270
++#define mmSCRATCH_REG5 0x0274
++#define mmSCRATCH_UMSK 0x0280
++#define mmSCRATCH_ADDR 0x0284
++#define mmCP_CSQ_ADDR 0x02E4
++#define mmCP_CSQ_DATA 0x02E8
++#define mmCP_CSQ_STAT 0x02EC
++#define mmCP_STAT 0x02F0
++#define mmGEN_INT_CNTL 0x0200
++#define mmGEN_INT_STATUS 0x0204
++/* Block CP End: */
++
++/* Block DISPLAY Start: */
++#define mmLCD_FORMAT 0x0410
++#define mmGRAPHIC_CTRL 0x0414
++#define mmGRAPHIC_OFFSET 0x0418
++#define mmGRAPHIC_PITCH 0x041C
++#define mmCRTC_TOTAL 0x0420
++#define mmACTIVE_H_DISP 0x0424
++#define mmACTIVE_V_DISP 0x0428
++#define mmGRAPHIC_H_DISP 0x042C
++#define mmGRAPHIC_V_DISP 0x0430
++#define mmVIDEO_CTRL 0x0434
++#define mmGRAPHIC_KEY 0x0438
++#define mmVIDEO_Y_OFFSET 0x043C
++#define mmVIDEO_Y_PITCH 0x0440
++#define mmVIDEO_U_OFFSET 0x0444
++#define mmVIDEO_U_PITCH 0x0448
++#define mmVIDEO_V_OFFSET 0x044C
++#define mmVIDEO_V_PITCH 0x0450
++#define mmVIDEO_H_POS 0x0454
++#define mmVIDEO_V_POS 0x0458
++#define mmBRIGHTNESS_CNTL 0x045C
++#define mmCURSOR1_OFFSET 0x0460
++#define mmCURSOR1_H_POS 0x0464
++#define mmCURSOR1_V_POS 0x0468
++#define mmCURSOR1_COLOR0 0x046C
++#define mmCURSOR1_COLOR1 0x0470
++#define mmCURSOR2_OFFSET 0x0474
++#define mmCURSOR2_H_POS 0x0478
++#define mmCURSOR2_V_POS 0x047C
++#define mmCURSOR2_COLOR0 0x0480
++#define mmCURSOR2_COLOR1 0x0484
++#define mmDISP_INT_CNTL 0x0488
++#define mmCRTC_SS 0x048C
++#define mmCRTC_LS 0x0490
++#define mmCRTC_REV 0x0494
++#define mmCRTC_DCLK 0x049C
++#define mmCRTC_GS 0x04A0
++#define mmCRTC_VPOS_GS 0x04A4
++#define mmCRTC_GCLK 0x04A8
++#define mmCRTC_GOE 0x04AC
++#define mmCRTC_FRAME 0x04B0
++#define mmCRTC_FRAME_VPOS 0x04B4
++#define mmGPIO_DATA 0x04B8
++#define mmGPIO_CNTL1 0x04BC
++#define mmGPIO_CNTL2 0x04C0
++#define mmLCDD_CNTL1 0x04C4
++#define mmLCDD_CNTL2 0x04C8
++#define mmGENLCD_CNTL1 0x04CC
++#define mmGENLCD_CNTL2 0x04D0
++#define mmDISP_DEBUG 0x04D4
++#define mmDISP_DB_BUF_CNTL 0x04D8
++#define mmDISP_CRC_SIG 0x04DC
++#define mmCRTC_DEFAULT_COUNT 0x04E0
++#define mmLCD_BACKGROUND_COLOR 0x04E4
++#define mmCRTC_PS2 0x04E8
++#define mmCRTC_PS2_VPOS 0x04EC
++#define mmCRTC_PS1_ACTIVE 0x04F0
++#define mmCRTC_PS1_NACTIVE 0x04F4
++#define mmCRTC_GCLK_EXT 0x04F8
++#define mmCRTC_ALW 0x04FC
++#define mmCRTC_ALW_VPOS 0x0500
++#define mmCRTC_PSK 0x0504
++#define mmCRTC_PSK_HPOS 0x0508
++#define mmCRTC_CV4_START 0x050C
++#define mmCRTC_CV4_END 0x0510
++#define mmCRTC_CV4_HPOS 0x0514
++#define mmCRTC_ECK 0x051C
++#define mmREFRESH_CNTL 0x0520
++#define mmGENLCD_CNTL3 0x0524
++#define mmGPIO_DATA2 0x0528
++#define mmGPIO_CNTL3 0x052C
++#define mmGPIO_CNTL4 0x0530
++#define mmCHIP_STRAP 0x0534
++#define mmDISP_DEBUG2 0x0538
++#define mmDEBUG_BUS_CNTL 0x053C
++#define mmGAMMA_VALUE1 0x0540
++#define mmGAMMA_VALUE2 0x0544
++#define mmGAMMA_SLOPE 0x0548
++#define mmGEN_STATUS 0x054C
++#define mmHW_INT 0x0550
++/* Block DISPLAY End: */
++
++/* Block GFX Start: */
++#define mmDST_OFFSET 0x1004
++#define mmDST_PITCH 0x1008
++#define mmDST_PITCH_OFFSET 0x102C
++#define mmDST_X 0x101C
++#define mmDST_Y 0x1020
++#define mmDST_X_Y 0x1194
++#define mmDST_Y_X 0x1038
++#define mmDST_WIDTH 0x100C
++#define mmDST_HEIGHT 0x1010
++#define mmDST_WIDTH_HEIGHT 0x1198
++#define mmDST_HEIGHT_WIDTH 0x103C
++#define mmDST_HEIGHT_WIDTH_8 0x118C
++#define mmDST_HEIGHT_Y 0x11A0
++#define mmDST_WIDTH_X 0x1188
++#define mmDST_WIDTH_X_INCY 0x119C
++#define mmDST_LINE_START 0x1090
++#define mmDST_LINE_END 0x1094
++#define mmBRUSH_OFFSET 0x108C
++#define mmBRUSH_Y_X 0x1074
++#define mmDP_BRUSH_FRGD_CLR 0x107C
++#define mmDP_BRUSH_BKGD_CLR 0x1078
++#define mmSRC2_OFFSET 0x1060
++#define mmSRC2_PITCH 0x1064
++#define mmSRC2_PITCH_OFFSET 0x1068
++#define mmSRC2_X 0x1050
++#define mmSRC2_Y 0x1054
++#define mmSRC2_X_Y 0x1058
++#define mmSRC2_WIDTH 0x1080
++#define mmSRC2_HEIGHT 0x1084
++#define mmSRC2_INC 0x1088
++#define mmSRC_OFFSET 0x11AC
++#define mmSRC_PITCH 0x11B0
++#define mmSRC_PITCH_OFFSET 0x1028
++#define mmSRC_X 0x1014
++#define mmSRC_Y 0x1018
++#define mmSRC_X_Y 0x1190
++#define mmSRC_Y_X 0x1034
++#define mmSRC_WIDTH 0x1040
++#define mmSRC_HEIGHT 0x1044
++#define mmSRC_INC 0x1048
++#define mmHOST_DATA0 0x13C0
++#define mmHOST_DATA1 0x13C4
++#define mmHOST_DATA2 0x13C8
++#define mmHOST_DATA3 0x13CC
++#define mmHOST_DATA4 0x13D0
++#define mmHOST_DATA5 0x13D4
++#define mmHOST_DATA6 0x13D8
++#define mmHOST_DATA7 0x13DC
++#define mmHOST_DATA_LAST 0x13E0
++#define mmDP_SRC_FRGD_CLR 0x1240
++#define mmDP_SRC_BKGD_CLR 0x1244
++#define mmSC_LEFT 0x1140
++#define mmSC_RIGHT 0x1144
++#define mmSC_TOP 0x1148
++#define mmSC_BOTTOM 0x114C
++#define mmSRC_SC_RIGHT 0x1154
++#define mmSRC_SC_BOTTOM 0x115C
++#define mmDP_CNTL 0x11C8
++#define mmDP_CNTL_DST_DIR 0x11CC
++#define mmDP_DATATYPE 0x12C4
++#define mmDP_MIX 0x12C8
++#define mmDP_WRITE_MSK 0x12CC
++#define mmCLR_CMP_CLR_SRC 0x1234
++#define mmCLR_CMP_CLR_DST 0x1238
++#define mmCLR_CMP_CNTL 0x1230
++#define mmCLR_CMP_MSK 0x123C
++#define mmDEFAULT_PITCH_OFFSET 0x10A0
++#define mmDEFAULT_SC_BOTTOM_RIGHT 0x10A8
++#define mmDEFAULT2_SC_BOTTOM_RIGHT 0x10AC
++#define mmREF1_PITCH_OFFSET 0x10B8
++#define mmREF2_PITCH_OFFSET 0x10BC
++#define mmREF3_PITCH_OFFSET 0x10C0
++#define mmREF4_PITCH_OFFSET 0x10C4
++#define mmREF5_PITCH_OFFSET 0x10C8
++#define mmREF6_PITCH_OFFSET 0x10CC
++#define mmDP_GUI_MASTER_CNTL 0x106C
++#define mmSC_TOP_LEFT 0x11BC
++#define mmSC_BOTTOM_RIGHT 0x11C0
++#define mmSRC_SC_BOTTOM_RIGHT 0x11C4
++#define mmGLOBAL_ALPHA 0x1210
++#define mmFILTER_COEF 0x1214
++#define mmMVC_CNTL_START 0x11E0
++#define mmE2_ARITHMETIC_CNTL 0x1220
++#define mmDEBUG0 0x1280
++#define mmDEBUG1 0x1284
++#define mmDEBUG2 0x1288
++#define mmDEBUG3 0x128C
++#define mmDEBUG4 0x1290
++#define mmDEBUG5 0x1294
++#define mmDEBUG6 0x1298
++#define mmDEBUG7 0x129C
++#define mmDEBUG8 0x12A0
++#define mmDEBUG9 0x12A4
++#define mmDEBUG10 0x12A8
++#define mmDEBUG11 0x12AC
++#define mmDEBUG12 0x12B0
++#define mmDEBUG13 0x12B4
++#define mmDEBUG14 0x12B8
++#define mmDEBUG15 0x12BC
++#define mmENG_CNTL 0x13E8
++#define mmENG_PERF_CNT 0x13F0
++/* Block GFX End: */
++
++/* Block IDCT Start: */
++#define mmIDCT_RUNS 0x0C00
++#define mmIDCT_LEVELS 0x0C04
++#define mmIDCT_CONTROL 0x0C3C
++#define mmIDCT_AUTH_CONTROL 0x0C08
++#define mmIDCT_AUTH 0x0C0C
++/* Block IDCT End: */
++
++/* Block MC Start: */
++#define mmMEM_CNTL 0x0180
++#define mmMEM_ARB 0x0184
++#define mmMC_FB_LOCATION 0x0188
++#define mmMEM_EXT_CNTL 0x018C
++#define mmMC_EXT_MEM_LOCATION 0x0190
++#define mmMEM_EXT_TIMING_CNTL 0x0194
++#define mmMEM_SDRAM_MODE_REG 0x0198
++#define mmMEM_IO_CNTL 0x019C
++#define mmMC_DEBUG 0x01A0
++#define mmMC_BIST_CTRL 0x01A4
++#define mmMC_BIST_COLLAR_READ 0x01A8
++#define mmTC_MISMATCH 0x01AC
++#define mmMC_PERF_MON_CNTL 0x01B0
++#define mmMC_PERF_COUNTERS 0x01B4
++/* Block MC End: */
++
++/* Block RBBM Start: */
++#define mmWAIT_UNTIL 0x1400
++#define mmISYNC_CNTL 0x1404
++#define mmRBBM_GUICNTL 0x1408
++#define mmRBBM_STATUS 0x0140
++#define mmRBBM_STATUS_alt_1 0x140C
++#define mmRBBM_CNTL 0x0144
++#define mmRBBM_SOFT_RESET 0x0148
++#define mmNQWAIT_UNTIL 0x0150
++#define mmRBBM_DEBUG 0x016C
++#define mmRBBM_CMDFIFO_ADDR 0x0170
++#define mmRBBM_CMDFIFO_DATAL 0x0174
++#define mmRBBM_CMDFIFO_DATAH 0x0178
++#define mmRBBM_CMDFIFO_STAT 0x017C
++/* Block RBBM End: */
++
++/* Block CG Start: */
++#define mmCLK_PIN_CNTL 0x0080
++#define mmPLL_REF_FB_DIV 0x0084
++#define mmPLL_CNTL 0x0088
++#define mmSCLK_CNTL 0x008C
++#define mmPCLK_CNTL 0x0090
++#define mmCLK_TEST_CNTL 0x0094
++#define mmPWRMGT_CNTL 0x0098
++#define mmPWRMGT_STATUS 0x009C
++/* Block CG End: */
++
++/* default value definitions */
++#define defCHIP_ID 0x00001002
++#define defREVISION_ID 0x00000000
++#define defWRAP_BUF_A 0x01000000
++#define defWRAP_BUF_B 0x01000000
++#define defWRAP_TOP_DIR 0x00000000
++#define defWRAP_START_DIR 0x00000000
++//#define defCIF_CNTL 0x00082900
++#define defCIF_CNTL 0x00182d00 //??updated by Tobey Z.for Sharp,Oct11,2002
++#define defCFGREG_BASE 0x00000000
++//#define defCIF_IO 0x000c0800
++#define defCIF_IO 0x000C0902 //??updated by Tobey Z.for Sharp,Oct11,2002
++#define defCIF_READ_DBG 0x00018223
++#define defCIF_WRITE_DBG 0x00002100
++#define defIND_ADDR_A_0 0x00000000
++#define defIND_ADDR_A_1 0x00000000
++#define defIND_ADDR_A_2 0x00000000
++#define defIND_DATA_A 0x00000000
++#define defREG_BASE 0x00000001
++#define defINTF_CNTL 0x00000011
++#define defSTATUS 0x00000000
++#define defCPU_DEFAULTS 0x00000006
++#define defIND_ADDR_B_0 0x00000000
++#define defIND_ADDR_B_1 0x00000000
++#define defIND_ADDR_B_2 0x00000000
++#define defIND_DATA_B 0x00000000
++#define defPM4_RPTR 0x00000000
++#define defSCRATCH 0x00000000
++#define defPM4_WRPTR_0 0x00000000
++#define defPM4_WRPTR_1 0x00000000
++#define defCP_RB_CNTL 0x00000000
++#define defCP_RB_BASE 0x00000000
++#define defCP_RB_RPTR_ADDR 0x00000000
++#define defCP_RB_RPTR 0x00000000
++#define defCP_RB_RPTR_WR 0x00000000
++#define defCP_RB_WPTR 0x00000000
++#define defCP_IB_BASE 0x00000000
++#define defCP_IB_BUFSZ 0x00000000
++#define defCP_CSQ_CNTL 0x00000000
++#define defCP_CSQ_APER_PRIMARY 0x00000000
++#define defCP_CSQ_APER_INDIRECT 0x00000000
++#define defCP_ME_CNTL 0x40000000
++#define defCP_ME_RAM_ADDR 0x00000000
++#define defCP_ME_RAM_RADDR 0x00000000
++#define defCP_ME_RAM_DATAH 0x00000000
++#define defCP_ME_RAM_DATAL 0x00000000
++#define defCP_DEBUG 0x00000000
++#define defSCRATCH_REG0 0x00000000
++#define defSCRATCH_REG1 0x00000000
++#define defSCRATCH_REG2 0x00000000
++#define defSCRATCH_REG3 0x00000000
++#define defSCRATCH_REG4 0x00000000
++#define defSCRATCH_REG5 0x00000000
++#define defSCRATCH_UMSK 0x00000000
++#define defSCRATCH_ADDR 0x00000000
++#define defCP_CSQ_ADDR 0x00000000
++#define defCP_CSQ_DATA 0x00000000
++#define defCP_CSQ_STAT 0x00000000
++#define defCP_STAT 0x00000000
++#define defGEN_INT_CNTL 0x00000000
++#define defGEN_INT_STATUS_rd 0x00080000
++#define defGEN_INT_STATUS_wr 0x00000000
++#define defLCD_FORMAT 0x00000000
++#define defGRAPHIC_CTRL 0x00000000
++#define defGRAPHIC_OFFSET 0x00000000
++#define defGRAPHIC_PITCH 0x00000000
++#define defCRTC_TOTAL 0x00000000
++#define defACTIVE_H_DISP 0x00000000
++#define defACTIVE_V_DISP 0x00000000
++#define defGRAPHIC_H_DISP 0x00000000
++#define defGRAPHIC_V_DISP 0x00000000
++#define defVIDEO_CTRL 0x00000000
++#define defGRAPHIC_KEY 0x00000000
++#define defVIDEO_Y_OFFSET 0x00000000
++#define defVIDEO_Y_PITCH 0x00000000
++#define defVIDEO_U_OFFSET 0x00000000
++#define defVIDEO_U_PITCH 0x00000000
++#define defVIDEO_V_OFFSET 0x00000000
++#define defVIDEO_V_PITCH 0x00000000
++#define defVIDEO_H_POS 0x00000000
++#define defVIDEO_V_POS 0x00000000
++#define defBRIGHTNESS_CNTL 0x00000000
++#define defCURSOR1_OFFSET 0x00000000
++#define defCURSOR1_H_POS 0x00000000
++#define defCURSOR1_V_POS 0x00000000
++#define defCURSOR1_COLOR0 0x00000000
++#define defCURSOR1_COLOR1 0x00000000
++#define defCURSOR2_OFFSET 0x00000000
++#define defCURSOR2_H_POS 0x00000000
++#define defCURSOR2_V_POS 0x00000000
++#define defCURSOR2_COLOR0 0x00000000
++#define defCURSOR2_COLOR1 0x00000000
++#define defDISP_INT_CNTL 0x00000000
++#define defCRTC_SS 0x00000000
++#define defCRTC_LS 0x00000000
++#define defCRTC_REV 0x00000000
++#define defCRTC_DCLK 0x00000000
++#define defCRTC_GS 0x00000000
++#define defCRTC_VPOS_GS 0x00000000
++#define defCRTC_GCLK 0x00000000
++#define defCRTC_GOE 0x00000000
++#define defCRTC_FRAME 0x00000000
++#define defCRTC_FRAME_VPOS 0x00000000
++#define defGPIO_DATA 0x00000000
++#define defGPIO_CNTL1 0xff00ff00
++#define defGPIO_CNTL2 0x00000000
++#define defLCDD_CNTL1 0x0000ffff
++#define defLCDD_CNTL2 0x00000000
++#define defGENLCD_CNTL1 0x00aaa002
++#define defGENLCD_CNTL2 0x00000002
++#define defDISP_DEBUG 0x00000000
++#define defDISP_DB_BUF_CNTL_rd 0x00000000
++#define defDISP_DB_BUF_CNTL_wr 0x00000000
++#define defDISP_CRC_SIG 0x00000000
++#define defCRTC_DEFAULT_COUNT 0x00000000
++#define defLCD_BACKGROUND_COLOR 0x00000000
++#define defCRTC_PS2 0x00000000
++#define defCRTC_PS2_VPOS 0x00000000
++#define defCRTC_PS1_ACTIVE 0x00000000
++#define defCRTC_PS1_NACTIVE 0x00000000
++#define defCRTC_GCLK_EXT 0x00000000
++#define defCRTC_ALW 0x00000000
++#define defCRTC_ALW_VPOS 0x00000000
++#define defCRTC_PSK 0x00000000
++#define defCRTC_PSK_HPOS 0x00000000
++#define defCRTC_CV4_START 0x00000000
++#define defCRTC_CV4_END 0x00000000
++#define defCRTC_CV4_HPOS 0x00000000
++#define defCRTC_ECK 0x00000000
++#define defREFRESH_CNTL 0x00000000
++#define defGENLCD_CNTL3 0x000002aa
++#define defGPIO_DATA2 0x00000000
++#define defGPIO_CNTL3 0x00000000
++#define defGPIO_CNTL4 0x00000000
++#define defCHIP_STRAP 0x00000000
++#define defDISP_DEBUG2 0x00000000
++#define defDEBUG_BUS_CNTL 0x00000000
++#define defGAMMA_VALUE1 0x00000000
++#define defGAMMA_VALUE2 0x00000000
++#define defGAMMA_SLOPE 0x00000000
++#define defGEN_STATUS 0x00000000
++#define defHW_INT 0x00000000
++#define defDST_OFFSET 0x00000000
++#define defDST_PITCH 0x00000000
++#define defDST_PITCH_OFFSET 0x00000000
++#define defDST_X 0x00000000
++#define defDST_Y 0x00000000
++#define defDST_X_Y 0x00000000
++#define defDST_Y_X 0x00000000
++#define defDST_WIDTH 0x00000000
++#define defDST_HEIGHT 0x00000000
++#define defDST_WIDTH_HEIGHT 0x00000000
++#define defDST_HEIGHT_WIDTH 0x00000000
++#define defDST_HEIGHT_WIDTH_8 0x00000000
++#define defDST_HEIGHT_Y 0x00000000
++#define defDST_WIDTH_X 0x00000000
++#define defDST_WIDTH_X_INCY 0x00000000
++#define defDST_LINE_START 0x00000000
++#define defDST_LINE_END 0x00000000
++#define defBRUSH_OFFSET 0x00000000
++#define defBRUSH_Y_X 0x00000000
++#define defDP_BRUSH_FRGD_CLR 0x00000000
++#define defDP_BRUSH_BKGD_CLR 0x00000000
++#define defSRC2_OFFSET 0x00000000
++#define defSRC2_PITCH 0x00000000
++#define defSRC2_PITCH_OFFSET 0x00000000
++#define defSRC2_X 0x00000000
++#define defSRC2_Y 0x00000000
++#define defSRC2_X_Y 0x00000000
++#define defSRC2_WIDTH 0x00000000
++#define defSRC2_HEIGHT 0x00000000
++#define defSRC2_INC 0x00000000
++#define defSRC_OFFSET 0x00000000
++#define defSRC_PITCH 0x00000000
++#define defSRC_PITCH_OFFSET 0x00000000
++#define defSRC_X 0x00000000
++#define defSRC_Y 0x00000000
++#define defSRC_X_Y 0x00000000
++#define defSRC_Y_X 0x00000000
++#define defSRC_WIDTH 0x00000000
++#define defSRC_HEIGHT 0x00000000
++#define defSRC_INC 0x00000000
++#define defHOST_DATA0 0x00000000
++#define defHOST_DATA1 0x00000000
++#define defHOST_DATA2 0x00000000
++#define defHOST_DATA3 0x00000000
++#define defHOST_DATA4 0x00000000
++#define defHOST_DATA5 0x00000000
++#define defHOST_DATA6 0x00000000
++#define defHOST_DATA7 0x00000000
++#define defHOST_DATA_LAST 0x00000000
++#define defDP_SRC_FRGD_CLR 0x00000000
++#define defDP_SRC_BKGD_CLR 0x00000000
++#define defSC_LEFT 0x00000000
++#define defSC_RIGHT 0x00000000
++#define defSC_TOP 0x00000000
++#define defSC_BOTTOM 0x00000000
++#define defSRC_SC_RIGHT 0x00000000
++#define defSRC_SC_BOTTOM 0x00000000
++#define defDP_CNTL 0x00000000
++#define defDP_CNTL_DST_DIR 0x00000000
++#define defDP_DATATYPE 0x00000000
++#define defDP_MIX 0x00000000
++#define defDP_WRITE_MSK 0x00000000
++#define defCLR_CMP_CLR_SRC 0x00000000
++#define defCLR_CMP_CLR_DST 0x00000000
++#define defCLR_CMP_CNTL 0x00000000
++#define defCLR_CMP_MSK 0x00000000
++#define defDEFAULT_PITCH_OFFSET 0x00000000
++#define defDEFAULT_SC_BOTTOM_RIGHT 0x00000000
++#define defDEFAULT2_SC_BOTTOM_RIGHT 0x00000000
++#define defREF1_PITCH_OFFSET 0x00000000
++#define defREF2_PITCH_OFFSET 0x00000000
++#define defREF3_PITCH_OFFSET 0x00000000
++#define defREF4_PITCH_OFFSET 0x00000000
++#define defREF5_PITCH_OFFSET 0x00000000
++#define defREF6_PITCH_OFFSET 0x00000000
++#define defDP_GUI_MASTER_CNTL 0x00000000
++#define defSC_TOP_LEFT 0x00000000
++#define defSC_BOTTOM_RIGHT 0x00000000
++#define defSRC_SC_BOTTOM_RIGHT 0x00000000
++#define defGLOBAL_ALPHA 0x00000000
++#define defFILTER_COEF 0x00000000
++#define defMVC_CNTL_START 0x00000000
++#define defE2_ARITHMETIC_CNTL 0x00000000
++#define defDEBUG0 0x00000000
++#define defDEBUG1 0x00000000
++#define defDEBUG2 0x00000000
++#define defDEBUG3 0x00000000
++#define defDEBUG4 0x00000000
++#define defDEBUG5 0x00000000
++#define defDEBUG6 0x00000000
++#define defDEBUG7 0x00000000
++#define defDEBUG8 0x00000000
++#define defDEBUG9 0x00000000
++#define defDEBUG10 0x00000000
++#define defDEBUG11 0x00000000
++#define defDEBUG12 0x00000000
++#define defDEBUG13 0x00000000
++#define defDEBUG14 0x00000000
++#define defDEBUG15 0x00000000
++#define defENG_CNTL 0x00000003
++#define defENG_PERF_CNT 0x00000000
++#define defIDCT_RUNS 0x00000000
++#define defIDCT_LEVELS 0x00000000
++#define defIDCT_CONTROL 0x00000000
++#define defIDCT_AUTH_CONTROL 0x00000000
++#define defIDCT_AUTH 0x00000000
++#define defMEM_CNTL 0x00000006
++#define defMEM_ARB 0x00000000
++#define defMC_FB_LOCATION 0x00ff0000
++#define defMEM_EXT_CNTL 0x00040010
++#define defMC_EXT_MEM_LOCATION 0x07ff0000
++#define defMEM_EXT_TIMING_CNTL 0x00140c73
++#define defMEM_SDRAM_MODE_REG 0x00050000
++#define defMEM_IO_CNTL 0x00ff00ff
++#define defMC_DEBUG 0x00000000
++#define defMC_BIST_CTRL 0x00000000
++#define defMC_BIST_COLLAR_READ 0x00000000
++#define defTC_MISMATCH 0x00000000
++#define defMC_PERF_MON_CNTL 0x00000000
++#define defMC_PERF_COUNTERS 0x00000000
++#define defWAIT_UNTIL 0xc5cdcdcd
++#define defISYNC_CNTL 0x00000000
++#define defRBBM_GUICNTL 0x00000000
++#define defRBBM_STATUS 0x81cdcd40
++#define defRBBM_CNTL 0x0000000f
++#define defRBBM_SOFT_RESET 0x00000000
++#define defNQWAIT_UNTIL 0x00000001
++#define defRBBM_DEBUG 0x00000000
++#define defRBBM_CMDFIFO_ADDR 0x0000000d
++#define defRBBM_CMDFIFO_DATAL 0xcdcdcdcd
++#define defRBBM_CMDFIFO_DATAH 0x00000dcd
++#define defRBBM_CMDFIFO_STAT 0x00000d0d
++#define defCLK_PIN_CNTL 0x0000003f
++#define defPLL_REF_FB_DIV 0x5a500000
++#define defPLL_CNTL 0x4b000203
++#define defSCLK_CNTL 0x00ff0300
++#define defPCLK_CNTL 0x00010000
++#define defCLK_TEST_CNTL 0x00000000
++#define defPWRMGT_CNTL 0x00000004
++#define defPWRMGT_STATUS 0x00000001
++
++#define CFG_BASE_BOOT_DEFAULT 0x0
++#define CFG_BASE_VALUE 0x0
++#define REG_BASE_BOOT_DEFAULT 0x01
++#define REG_BASE_VALUE 0x10000
++#define MEM_INT_BASE_VALUE 0x100000
++#define MEM_INT_TOP_VALUE_W100 0x15ffff
++#define MEM_EXT_BASE_VALUE 0x800000
++#define MEM_EXT_TOP_VALUE 0x9fffff
++#define WRAP_BUF_BASE_VALUE 0x80000
++#define WRAP_BUF_TOP_VALUE 0xbffff
++
++
++/* data structure definitions */
++
++typedef struct _chip_id_t {
++ unsigned long vendor_id : 16;
++ unsigned long device_id : 16;
++ } chip_id_t;
++
++typedef union {
++ unsigned long val : 32;
++ chip_id_t f;
++} chip_id_u;
++
++typedef struct _revision_id_t {
++ unsigned long minor_rev_id : 4;
++ unsigned long major_rev_id : 4;
++ unsigned long : 24;
++ } revision_id_t;
++
++typedef union {
++ unsigned long val : 32;
++ revision_id_t f;
++} revision_id_u;
++
++typedef struct _wrap_buf_a_t {
++ unsigned long offset_addr_a : 24;
++ unsigned long block_size_a : 3;
++ unsigned long : 5;
++ } wrap_buf_a_t;
++
++typedef union {
++ unsigned long val : 32;
++ wrap_buf_a_t f;
++} wrap_buf_a_u;
++
++typedef struct _wrap_buf_b_t {
++ unsigned long offset_addr_b : 24;
++ unsigned long block_size_b : 3;
++ unsigned long : 5;
++ } wrap_buf_b_t;
++
++typedef union {
++ unsigned long val : 32;
++ wrap_buf_b_t f;
++} wrap_buf_b_u;
++
++typedef struct _wrap_top_dir_t {
++ unsigned long top_addr : 23;
++ unsigned long : 9;
++ } wrap_top_dir_t;
++
++typedef union {
++ unsigned long val : 32;
++ wrap_top_dir_t f;
++} wrap_top_dir_u;
++
++typedef struct _wrap_start_dir_t {
++ unsigned long start_addr : 23;
++ unsigned long : 9;
++ } wrap_start_dir_t;
++
++typedef union {
++ unsigned long val : 32;
++ wrap_start_dir_t f;
++} wrap_start_dir_u;
++
++typedef struct _cif_cntl_t {
++ unsigned long swap_reg : 2;
++ unsigned long swap_fbuf_1 : 2;
++ unsigned long swap_fbuf_2 : 2;
++ unsigned long swap_fbuf_3 : 2;
++ unsigned long pmi_int_disable : 1;
++ unsigned long pmi_schmen_disable : 1;
++ unsigned long intb_oe : 1;
++ unsigned long en_wait_to_compensate_dq_prop_dly : 1;
++ unsigned long compensate_wait_rd_size : 2;
++ unsigned long wait_asserted_timeout_val : 2;
++ unsigned long wait_masked_val : 2;
++ unsigned long en_wait_timeout : 1;
++ unsigned long en_one_clk_setup_before_wait : 1;
++ unsigned long interrupt_active_high : 1;
++ unsigned long en_overwrite_straps : 1;
++ unsigned long strap_wait_active_hi : 1;
++ unsigned long lat_busy_count : 2;
++ unsigned long lat_rd_pm4_sclk_busy : 1;
++ unsigned long dis_system_bits : 1;
++ unsigned long dis_mr : 1;
++ unsigned long cif_spare_1 : 4;
++ } cif_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ cif_cntl_t f;
++} cif_cntl_u;
++
++typedef struct _cfgreg_base_t {
++ unsigned long cfgreg_base : 24;
++ unsigned long : 8;
++ } cfgreg_base_t;
++
++typedef union {
++ unsigned long val : 32;
++ cfgreg_base_t f;
++} cfgreg_base_u;
++
++typedef struct _cif_io_t {
++ unsigned long dq_srp : 1;
++ unsigned long dq_srn : 1;
++ unsigned long dq_sp : 4;
++ unsigned long dq_sn : 4;
++ unsigned long waitb_srp : 1;
++ unsigned long waitb_srn : 1;
++ unsigned long waitb_sp : 4;
++ unsigned long waitb_sn : 4;
++ unsigned long intb_srp : 1;
++ unsigned long intb_srn : 1;
++ unsigned long intb_sp : 4;
++ unsigned long intb_sn : 4;
++ unsigned long : 2;
++ } cif_io_t;
++
++typedef union {
++ unsigned long val : 32;
++ cif_io_t f;
++} cif_io_u;
++
++typedef struct _cif_read_dbg_t {
++ unsigned long unpacker_pre_fetch_trig_gen : 2;
++ unsigned long dly_second_rd_fetch_trig : 1;
++ unsigned long rst_rd_burst_id : 1;
++ unsigned long dis_rd_burst_id : 1;
++ unsigned long en_block_rd_when_packer_is_not_emp : 1;
++ unsigned long dis_pre_fetch_cntl_sm : 1;
++ unsigned long rbbm_chrncy_dis : 1;
++ unsigned long rbbm_rd_after_wr_lat : 2;
++ unsigned long dis_be_during_rd : 1;
++ unsigned long one_clk_invalidate_pulse : 1;
++ unsigned long dis_chnl_priority : 1;
++ unsigned long rst_read_path_a_pls : 1;
++ unsigned long rst_read_path_b_pls : 1;
++ unsigned long dis_reg_rd_fetch_trig : 1;
++ unsigned long dis_rd_fetch_trig_from_ind_addr : 1;
++ unsigned long dis_rd_same_byte_to_trig_fetch : 1;
++ unsigned long dis_dir_wrap : 1;
++ unsigned long dis_ring_buf_to_force_dec : 1;
++ unsigned long dis_addr_comp_in_16bit : 1;
++ unsigned long clr_w : 1;
++ unsigned long err_rd_tag_is_3 : 1;
++ unsigned long err_load_when_ful_a : 1;
++ unsigned long err_load_when_ful_b : 1;
++ unsigned long : 7;
++ } cif_read_dbg_t;
++
++typedef union {
++ unsigned long val : 32;
++ cif_read_dbg_t f;
++} cif_read_dbg_u;
++
++typedef struct _cif_write_dbg_t {
++ unsigned long packer_timeout_count : 2;
++ unsigned long en_upper_load_cond : 1;
++ unsigned long en_chnl_change_cond : 1;
++ unsigned long dis_addr_comp_cond : 1;
++ unsigned long dis_load_same_byte_addr_cond : 1;
++ unsigned long dis_timeout_cond : 1;
++ unsigned long dis_timeout_during_rbbm : 1;
++ unsigned long dis_packer_ful_during_rbbm_timeout : 1;
++ unsigned long en_dword_split_to_rbbm : 1;
++ unsigned long en_dummy_val : 1;
++ unsigned long dummy_val_sel : 1;
++ unsigned long mask_pm4_wrptr_dec : 1;
++ unsigned long dis_mc_clean_cond : 1;
++ unsigned long err_two_reqi_during_ful : 1;
++ unsigned long err_reqi_during_idle_clk : 1;
++ unsigned long err_global : 1;
++ unsigned long en_wr_buf_dbg_load : 1;
++ unsigned long en_wr_buf_dbg_path : 1;
++ unsigned long sel_wr_buf_byte : 3;
++ unsigned long dis_rd_flush_wr : 1;
++ unsigned long dis_packer_ful_cond : 1;
++ unsigned long dis_invalidate_by_ops_chnl : 1;
++ unsigned long en_halt_when_reqi_err : 1;
++ unsigned long cif_spare_2 : 5;
++ unsigned long : 1;
++ } cif_write_dbg_t;
++
++typedef union {
++ unsigned long val : 32;
++ cif_write_dbg_t f;
++} cif_write_dbg_u;
++
++typedef struct _ind_addr_a_0_t {
++ unsigned char ind_addr_a_0 : 8;
++ } ind_addr_a_0_t;
++
++typedef union {
++ unsigned char val : 8;
++ ind_addr_a_0_t f;
++} ind_addr_a_0_u;
++
++typedef struct _ind_addr_a_1_t {
++ unsigned char ind_addr_a_1 : 8;
++ } ind_addr_a_1_t;
++
++typedef union {
++ unsigned char val : 8;
++ ind_addr_a_1_t f;
++} ind_addr_a_1_u;
++
++typedef struct _ind_addr_a_2_t {
++ unsigned char ind_addr_a_2 : 8;
++ } ind_addr_a_2_t;
++
++typedef union {
++ unsigned char val : 8;
++ ind_addr_a_2_t f;
++} ind_addr_a_2_u;
++
++typedef struct _ind_data_a_t {
++ unsigned char ind_data_a : 8;
++ } ind_data_a_t;
++
++typedef union {
++ unsigned char val : 8;
++ ind_data_a_t f;
++} ind_data_a_u;
++
++typedef struct _reg_base_t {
++ unsigned char reg_base : 8;
++ } reg_base_t;
++
++typedef union {
++ unsigned char val : 8;
++ reg_base_t f;
++} reg_base_u;
++
++typedef struct _intf_cntl_t {
++ unsigned char ad_inc_a : 1;
++ unsigned char ring_buf_a : 1;
++ unsigned char rd_fetch_trigger_a : 1;
++ unsigned char rd_data_rdy_a : 1;
++ unsigned char ad_inc_b : 1;
++ unsigned char ring_buf_b : 1;
++ unsigned char rd_fetch_trigger_b : 1;
++ unsigned char rd_data_rdy_b : 1;
++ } intf_cntl_t;
++
++typedef union {
++ unsigned char val : 8;
++ intf_cntl_t f;
++} intf_cntl_u;
++
++typedef struct _status_t {
++ unsigned char wr_fifo_available_space : 2;
++ unsigned char fbuf_wr_pipe_emp : 1;
++ unsigned char soft_reset : 1;
++ unsigned char system_pwm_mode : 2;
++ unsigned char mem_access_dis : 1;
++ unsigned char en_pre_fetch : 1;
++ } status_t;
++
++typedef union {
++ unsigned char val : 8;
++ status_t f;
++} status_u;
++
++typedef struct _cpu_defaults_t {
++ unsigned char unpack_rd_data : 1;
++ unsigned char access_ind_addr_a : 1;
++ unsigned char access_ind_addr_b : 1;
++ unsigned char access_scratch_reg : 1;
++ unsigned char pack_wr_data : 1;
++ unsigned char transition_size : 1;
++ unsigned char en_read_buf_mode : 1;
++ unsigned char rd_fetch_scratch : 1;
++ } cpu_defaults_t;
++
++typedef union {
++ unsigned char val : 8;
++ cpu_defaults_t f;
++} cpu_defaults_u;
++
++typedef struct _ind_addr_b_0_t {
++ unsigned char ind_addr_b_0 : 8;
++ } ind_addr_b_0_t;
++
++typedef union {
++ unsigned char val : 8;
++ ind_addr_b_0_t f;
++} ind_addr_b_0_u;
++
++typedef struct _ind_addr_b_1_t {
++ unsigned char ind_addr_b_1 : 8;
++ } ind_addr_b_1_t;
++
++typedef union {
++ unsigned char val : 8;
++ ind_addr_b_1_t f;
++} ind_addr_b_1_u;
++
++typedef struct _ind_addr_b_2_t {
++ unsigned char ind_addr_b_2 : 8;
++ } ind_addr_b_2_t;
++
++typedef union {
++ unsigned char val : 8;
++ ind_addr_b_2_t f;
++} ind_addr_b_2_u;
++
++typedef struct _ind_data_b_t {
++ unsigned char ind_data_b : 8;
++ } ind_data_b_t;
++
++typedef union {
++ unsigned char val : 8;
++ ind_data_b_t f;
++} ind_data_b_u;
++
++typedef struct _pm4_rptr_t {
++ unsigned char pm4_rptr : 8;
++ } pm4_rptr_t;
++
++typedef union {
++ unsigned char val : 8;
++ pm4_rptr_t f;
++} pm4_rptr_u;
++
++typedef struct _scratch_t {
++ unsigned char scratch : 8;
++ } scratch_t;
++
++typedef union {
++ unsigned char val : 8;
++ scratch_t f;
++} scratch_u;
++
++typedef struct _pm4_wrptr_0_t {
++ unsigned char pm4_wrptr_0 : 8;
++ } pm4_wrptr_0_t;
++
++typedef union {
++ unsigned char val : 8;
++ pm4_wrptr_0_t f;
++} pm4_wrptr_0_u;
++
++typedef struct _pm4_wrptr_1_t {
++ unsigned char pm4_wrptr_1 : 6;
++ unsigned char rd_fetch_pm4_rptr : 1;
++ unsigned char wrptr_atomic_update_w : 1;
++ } pm4_wrptr_1_t;
++
++typedef union {
++ unsigned char val : 8;
++ pm4_wrptr_1_t f;
++} pm4_wrptr_1_u;
++
++typedef struct _cp_rb_cntl_t {
++ unsigned long rb_bufsz : 6;
++ unsigned long : 2;
++ unsigned long rb_blksz : 6;
++ unsigned long : 2;
++ unsigned long buf_swap : 2;
++ unsigned long max_fetch : 2;
++ unsigned long : 7;
++ unsigned long rb_no_update : 1;
++ unsigned long : 3;
++ unsigned long rb_rptr_wr_ena : 1;
++ } cp_rb_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_rb_cntl_t f;
++} cp_rb_cntl_u;
++
++typedef struct _cp_rb_base_t {
++ unsigned long : 2;
++ unsigned long rb_base : 22;
++ unsigned long : 8;
++ } cp_rb_base_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_rb_base_t f;
++} cp_rb_base_u;
++
++typedef struct _cp_rb_rptr_addr_t {
++ unsigned long rb_rptr_swap : 2;
++ unsigned long rb_rptr_addr : 22;
++ unsigned long : 8;
++ } cp_rb_rptr_addr_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_rb_rptr_addr_t f;
++} cp_rb_rptr_addr_u;
++
++typedef struct _cp_rb_rptr_t {
++ unsigned long rb_rptr : 23;
++ unsigned long : 9;
++ } cp_rb_rptr_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_rb_rptr_t f;
++} cp_rb_rptr_u;
++
++typedef struct _cp_rb_rptr_wr_t {
++ unsigned long rb_rptr_wr : 23;
++ unsigned long : 9;
++ } cp_rb_rptr_wr_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_rb_rptr_wr_t f;
++} cp_rb_rptr_wr_u;
++
++typedef struct _cp_rb_wptr_t {
++ unsigned long rb_wptr : 23;
++ unsigned long : 9;
++ } cp_rb_wptr_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_rb_wptr_t f;
++} cp_rb_wptr_u;
++
++typedef struct _cp_ib_base_t {
++ unsigned long : 2;
++ unsigned long ib_base : 22;
++ unsigned long : 8;
++ } cp_ib_base_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_ib_base_t f;
++} cp_ib_base_u;
++
++typedef struct _cp_ib_bufsz_t {
++ unsigned long ib_bufsz : 23;
++ unsigned long : 9;
++ } cp_ib_bufsz_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_ib_bufsz_t f;
++} cp_ib_bufsz_u;
++
++typedef struct _cp_csq_cntl_t {
++ unsigned long csq_cnt_primary : 8;
++ unsigned long csq_cnt_indirect : 8;
++ unsigned long : 12;
++ unsigned long csq_mode : 4;
++ } cp_csq_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_csq_cntl_t f;
++} cp_csq_cntl_u;
++
++typedef struct _cp_csq_aper_primary_t {
++ unsigned long cp_csq_aper_primary : 32;
++ } cp_csq_aper_primary_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_csq_aper_primary_t f;
++} cp_csq_aper_primary_u;
++
++typedef struct _cp_csq_aper_indirect_t {
++ unsigned long cp_csq_aper_indirect : 32;
++ } cp_csq_aper_indirect_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_csq_aper_indirect_t f;
++} cp_csq_aper_indirect_u;
++
++typedef struct _cp_me_cntl_t {
++ unsigned long me_stat : 16;
++ unsigned long me_statmux : 5;
++ unsigned long : 8;
++ unsigned long me_busy : 1;
++ unsigned long me_mode : 1;
++ unsigned long me_step : 1;
++ } cp_me_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_me_cntl_t f;
++} cp_me_cntl_u;
++
++typedef struct _cp_me_ram_addr_t {
++ unsigned long me_ram_addr : 8;
++ unsigned long : 24;
++ } cp_me_ram_addr_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_me_ram_addr_t f;
++} cp_me_ram_addr_u;
++
++typedef struct _cp_me_ram_raddr_t {
++ unsigned long me_ram_raddr : 8;
++ unsigned long : 24;
++ } cp_me_ram_raddr_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_me_ram_raddr_t f;
++} cp_me_ram_raddr_u;
++
++typedef struct _cp_me_ram_datah_t {
++ unsigned long me_ram_datah : 6;
++ unsigned long : 26;
++ } cp_me_ram_datah_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_me_ram_datah_t f;
++} cp_me_ram_datah_u;
++
++typedef struct _cp_me_ram_datal_t {
++ unsigned long me_ram_datal : 32;
++ } cp_me_ram_datal_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_me_ram_datal_t f;
++} cp_me_ram_datal_u;
++
++typedef struct _cp_debug_t {
++ unsigned long cp_debug : 32;
++ } cp_debug_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_debug_t f;
++} cp_debug_u;
++
++typedef struct _scratch_reg0_t {
++ unsigned long scratch_reg0 : 32;
++ } scratch_reg0_t;
++
++typedef union {
++ unsigned long val : 32;
++ scratch_reg0_t f;
++} scratch_reg0_u;
++
++typedef struct _scratch_reg1_t {
++ unsigned long scratch_reg1 : 32;
++ } scratch_reg1_t;
++
++typedef union {
++ unsigned long val : 32;
++ scratch_reg1_t f;
++} scratch_reg1_u;
++
++typedef struct _scratch_reg2_t {
++ unsigned long scratch_reg2 : 32;
++ } scratch_reg2_t;
++
++typedef union {
++ unsigned long val : 32;
++ scratch_reg2_t f;
++} scratch_reg2_u;
++
++typedef struct _scratch_reg3_t {
++ unsigned long scratch_reg3 : 32;
++ } scratch_reg3_t;
++
++typedef union {
++ unsigned long val : 32;
++ scratch_reg3_t f;
++} scratch_reg3_u;
++
++typedef struct _scratch_reg4_t {
++ unsigned long scratch_reg4 : 32;
++ } scratch_reg4_t;
++
++typedef union {
++ unsigned long val : 32;
++ scratch_reg4_t f;
++} scratch_reg4_u;
++
++typedef struct _scratch_reg5_t {
++ unsigned long scratch_reg5 : 32;
++ } scratch_reg5_t;
++
++typedef union {
++ unsigned long val : 32;
++ scratch_reg5_t f;
++} scratch_reg5_u;
++
++typedef struct _scratch_umsk_t {
++ unsigned long scratch_umsk : 6;
++ unsigned long : 10;
++ unsigned long scratch_swap : 2;
++ unsigned long : 14;
++ } scratch_umsk_t;
++
++typedef union {
++ unsigned long val : 32;
++ scratch_umsk_t f;
++} scratch_umsk_u;
++
++typedef struct _scratch_addr_t {
++ unsigned long : 5;
++ unsigned long scratch_addr : 27;
++ } scratch_addr_t;
++
++typedef union {
++ unsigned long val : 32;
++ scratch_addr_t f;
++} scratch_addr_u;
++
++typedef struct _cp_csq_addr_t {
++ unsigned long : 2;
++ unsigned long csq_addr : 8;
++ unsigned long : 22;
++ } cp_csq_addr_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_csq_addr_t f;
++} cp_csq_addr_u;
++
++typedef struct _cp_csq_data_t {
++ unsigned long csq_data : 32;
++ } cp_csq_data_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_csq_data_t f;
++} cp_csq_data_u;
++
++typedef struct _cp_csq_stat_t {
++ unsigned long csq_rptr_primary : 8;
++ unsigned long csq_wptr_primary : 8;
++ unsigned long csq_rptr_indirect : 8;
++ unsigned long csq_wptr_indirect : 8;
++ } cp_csq_stat_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_csq_stat_t f;
++} cp_csq_stat_u;
++
++typedef struct _cp_stat_t {
++ unsigned long mru_busy : 1;
++ unsigned long mwu_busy : 1;
++ unsigned long rsiu_busy : 1;
++ unsigned long rciu_busy : 1;
++ unsigned long : 5;
++ unsigned long csf_primary_busy : 1;
++ unsigned long csf_indirect_busy : 1;
++ unsigned long csq_primary_busy : 1;
++ unsigned long csq_indirect_busy : 1;
++ unsigned long csi_busy : 1;
++ unsigned long : 14;
++ unsigned long guidma_busy : 1;
++ unsigned long viddma_busy : 1;
++ unsigned long cmdstrm_busy : 1;
++ unsigned long cp_busy : 1;
++ } cp_stat_t;
++
++typedef union {
++ unsigned long val : 32;
++ cp_stat_t f;
++} cp_stat_u;
++
++typedef struct _gen_int_cntl_t {
++ unsigned long crtc_vblank_mask : 1;
++ unsigned long crtc_vline_mask : 1;
++ unsigned long crtc_hwint1_mask : 1;
++ unsigned long crtc_hwint2_mask : 1;
++ unsigned long : 15;
++ unsigned long gui_idle_mask : 1;
++ unsigned long : 8;
++ unsigned long pm4_idle_int_mask : 1;
++ unsigned long dvi_i2c_int_mask : 1;
++ unsigned long : 2;
++ } gen_int_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ gen_int_cntl_t f;
++} gen_int_cntl_u;
++
++typedef struct _gen_int_status_rd_t {
++ unsigned long crtc_vblank_stat : 1;
++ unsigned long crtc_vline_stat : 1;
++ unsigned long crtc_hwint1_stat : 1;
++ unsigned long crtc_hwint2_stat : 1;
++ unsigned long : 15;
++ unsigned long gui_idle_stat : 1;
++ unsigned long : 8;
++ unsigned long pm4_idle_int_stat : 1;
++ unsigned long dvi_i2c_int_stat : 1;
++ unsigned long : 2;
++ } gen_int_status_rd_t;
++
++typedef union {
++ unsigned long val : 32;
++ gen_int_status_rd_t f;
++} gen_int_status_rd_u;
++
++typedef struct _gen_int_status_wr_t {
++ unsigned long crtc_vblank_stat_ak : 1;
++ unsigned long crtc_vline_stat_ak : 1;
++ unsigned long crtc_hwint1_stat_ak : 1;
++ unsigned long crtc_hwint2_stat_ak : 1;
++ unsigned long : 15;
++ unsigned long gui_idle_stat_ak : 1;
++ unsigned long : 8;
++ unsigned long pm4_idle_int_ak : 1;
++ unsigned long dvi_i2c_int_ak : 1;
++ unsigned long : 2;
++ } gen_int_status_wr_t;
++
++typedef union {
++ unsigned long val : 32;
++ gen_int_status_wr_t f;
++} gen_int_status_wr_u;
++
++typedef struct _lcd_format_t {
++ unsigned long lcd_type : 4;
++ unsigned long color_to_mono : 1;
++ unsigned long data_inv : 1;
++ unsigned long stn_fm : 2;
++ unsigned long tft_fm : 2;
++ unsigned long scan_lr_en : 1;
++ unsigned long scan_ud_en : 1;
++ unsigned long pol_inv : 1;
++ unsigned long rst_fm : 1;
++ unsigned long yuv_to_rgb : 1;
++ unsigned long hr_tft : 1;
++ unsigned long ulc_panel : 1;
++ unsigned long : 15;
++ } lcd_format_t;
++
++typedef union {
++ unsigned long val : 32;
++ lcd_format_t f;
++} lcd_format_u;
++
++typedef struct _graphic_ctrl_t {
++ unsigned long color_depth : 3;
++ unsigned long portrait_mode : 2;
++ unsigned long low_power_on : 1;
++ unsigned long req_freq : 4;
++ unsigned long en_crtc : 1;
++ unsigned long en_graphic_req : 1;
++ unsigned long en_graphic_crtc : 1;
++ unsigned long total_req_graphic : 9;
++ unsigned long lcd_pclk_on : 1;
++ unsigned long lcd_sclk_on : 1;
++ unsigned long pclk_running : 1;
++ unsigned long sclk_running : 1;
++ unsigned long : 6;
++ } graphic_ctrl_t;
++
++typedef union {
++ unsigned long val : 32;
++ graphic_ctrl_t f;
++} graphic_ctrl_u;
++
++typedef struct _graphic_offset_t {
++ unsigned long graphic_offset : 24;
++ unsigned long : 8;
++ } graphic_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ graphic_offset_t f;
++} graphic_offset_u;
++
++typedef struct _graphic_pitch_t {
++ unsigned long graphic_pitch : 11;
++ unsigned long : 21;
++ } graphic_pitch_t;
++
++typedef union {
++ unsigned long val : 32;
++ graphic_pitch_t f;
++} graphic_pitch_u;
++
++typedef struct _crtc_total_t {
++ unsigned long crtc_h_total : 10;
++ unsigned long : 6;
++ unsigned long crtc_v_total : 10;
++ unsigned long : 6;
++ } crtc_total_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_total_t f;
++} crtc_total_u;
++
++typedef struct _active_h_disp_t {
++ unsigned long active_h_start : 10;
++ unsigned long : 6;
++ unsigned long active_h_end : 10;
++ unsigned long : 6;
++ } active_h_disp_t;
++
++typedef union {
++ unsigned long val : 32;
++ active_h_disp_t f;
++} active_h_disp_u;
++
++typedef struct _active_v_disp_t {
++ unsigned long active_v_start : 10;
++ unsigned long : 6;
++ unsigned long active_v_end : 10;
++ unsigned long : 6;
++ } active_v_disp_t;
++
++typedef union {
++ unsigned long val : 32;
++ active_v_disp_t f;
++} active_v_disp_u;
++
++typedef struct _graphic_h_disp_t {
++ unsigned long graphic_h_start : 10;
++ unsigned long : 6;
++ unsigned long graphic_h_end : 10;
++ unsigned long : 6;
++ } graphic_h_disp_t;
++
++typedef union {
++ unsigned long val : 32;
++ graphic_h_disp_t f;
++} graphic_h_disp_u;
++
++typedef struct _graphic_v_disp_t {
++ unsigned long graphic_v_start : 10;
++ unsigned long : 6;
++ unsigned long graphic_v_end : 10;
++ unsigned long : 6;
++ } graphic_v_disp_t;
++
++typedef union {
++ unsigned long val : 32;
++ graphic_v_disp_t f;
++} graphic_v_disp_u;
++
++typedef struct _video_ctrl_t {
++ unsigned long video_mode : 1;
++ unsigned long keyer_en : 1;
++ unsigned long en_video_req : 1;
++ unsigned long en_graphic_req_video : 1;
++ unsigned long en_video_crtc : 1;
++ unsigned long video_hor_exp : 2;
++ unsigned long video_ver_exp : 2;
++ unsigned long uv_combine : 1;
++ unsigned long total_req_video : 9;
++ unsigned long video_ch_sel : 1;
++ unsigned long video_portrait : 2;
++ unsigned long yuv2rgb_en : 1;
++ unsigned long yuv2rgb_option : 1;
++ unsigned long video_inv_hor : 1;
++ unsigned long video_inv_ver : 1;
++ unsigned long gamma_sel : 2;
++ unsigned long dis_limit : 1;
++ unsigned long en_uv_hblend : 1;
++ unsigned long rgb_gamma_sel : 2;
++ } video_ctrl_t;
++
++typedef union {
++ unsigned long val : 32;
++ video_ctrl_t f;
++} video_ctrl_u;
++
++typedef struct _graphic_key_t {
++ unsigned long keyer_color : 16;
++ unsigned long keyer_mask : 16;
++ } graphic_key_t;
++
++typedef union {
++ unsigned long val : 32;
++ graphic_key_t f;
++} graphic_key_u;
++
++typedef struct _video_y_offset_t {
++ unsigned long y_offset : 24;
++ unsigned long : 8;
++ } video_y_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ video_y_offset_t f;
++} video_y_offset_u;
++
++typedef struct _video_y_pitch_t {
++ unsigned long y_pitch : 11;
++ unsigned long : 21;
++ } video_y_pitch_t;
++
++typedef union {
++ unsigned long val : 32;
++ video_y_pitch_t f;
++} video_y_pitch_u;
++
++typedef struct _video_u_offset_t {
++ unsigned long u_offset : 24;
++ unsigned long : 8;
++ } video_u_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ video_u_offset_t f;
++} video_u_offset_u;
++
++typedef struct _video_u_pitch_t {
++ unsigned long u_pitch : 11;
++ unsigned long : 21;
++ } video_u_pitch_t;
++
++typedef union {
++ unsigned long val : 32;
++ video_u_pitch_t f;
++} video_u_pitch_u;
++
++typedef struct _video_v_offset_t {
++ unsigned long v_offset : 24;
++ unsigned long : 8;
++ } video_v_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ video_v_offset_t f;
++} video_v_offset_u;
++
++typedef struct _video_v_pitch_t {
++ unsigned long v_pitch : 11;
++ unsigned long : 21;
++ } video_v_pitch_t;
++
++typedef union {
++ unsigned long val : 32;
++ video_v_pitch_t f;
++} video_v_pitch_u;
++
++typedef struct _video_h_pos_t {
++ unsigned long video_h_start : 10;
++ unsigned long : 6;
++ unsigned long video_h_end : 10;
++ unsigned long : 6;
++ } video_h_pos_t;
++
++typedef union {
++ unsigned long val : 32;
++ video_h_pos_t f;
++} video_h_pos_u;
++
++typedef struct _video_v_pos_t {
++ unsigned long video_v_start : 10;
++ unsigned long : 6;
++ unsigned long video_v_end : 10;
++ unsigned long : 6;
++ } video_v_pos_t;
++
++typedef union {
++ unsigned long val : 32;
++ video_v_pos_t f;
++} video_v_pos_u;
++
++typedef struct _brightness_cntl_t {
++ unsigned long brightness : 7;
++ unsigned long : 25;
++ } brightness_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ brightness_cntl_t f;
++} brightness_cntl_u;
++
++typedef struct _cursor1_offset_t {
++ unsigned long cur1_offset : 24;
++ unsigned long cur1_x_offset : 4;
++ unsigned long cur1_y_offset : 4;
++ } cursor1_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor1_offset_t f;
++} cursor1_offset_u;
++
++typedef struct _cursor1_h_pos_t {
++ unsigned long cur1_h_start : 10;
++ unsigned long : 6;
++ unsigned long cur1_h_end : 10;
++ unsigned long : 5;
++ unsigned long cur1_en : 1;
++ } cursor1_h_pos_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor1_h_pos_t f;
++} cursor1_h_pos_u;
++
++typedef struct _cursor1_v_pos_t {
++ unsigned long cur1_v_start : 10;
++ unsigned long : 6;
++ unsigned long cur1_v_end : 10;
++ unsigned long : 6;
++ } cursor1_v_pos_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor1_v_pos_t f;
++} cursor1_v_pos_u;
++
++typedef struct _cursor1_color0_t {
++ unsigned long cur1_color0_r : 8;
++ unsigned long cur1_color0_g : 8;
++ unsigned long cur1_color0_b : 8;
++ unsigned long : 8;
++ } cursor1_color0_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor1_color0_t f;
++} cursor1_color0_u;
++
++typedef struct _cursor1_color1_t {
++ unsigned long cur1_color1_r : 8;
++ unsigned long cur1_color1_g : 8;
++ unsigned long cur1_color1_b : 8;
++ unsigned long : 8;
++ } cursor1_color1_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor1_color1_t f;
++} cursor1_color1_u;
++
++typedef struct _cursor2_offset_t {
++ unsigned long cur2_offset : 24;
++ unsigned long cur2_x_offset : 4;
++ unsigned long cur2_y_offset : 4;
++ } cursor2_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor2_offset_t f;
++} cursor2_offset_u;
++
++typedef struct _cursor2_h_pos_t {
++ unsigned long cur2_h_start : 10;
++ unsigned long : 6;
++ unsigned long cur2_h_end : 10;
++ unsigned long : 5;
++ unsigned long cur2_en : 1;
++ } cursor2_h_pos_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor2_h_pos_t f;
++} cursor2_h_pos_u;
++
++typedef struct _cursor2_v_pos_t {
++ unsigned long cur2_v_start : 10;
++ unsigned long : 6;
++ unsigned long cur2_v_end : 10;
++ unsigned long : 6;
++ } cursor2_v_pos_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor2_v_pos_t f;
++} cursor2_v_pos_u;
++
++typedef struct _cursor2_color0_t {
++ unsigned long cur2_color0_r : 8;
++ unsigned long cur2_color0_g : 8;
++ unsigned long cur2_color0_b : 8;
++ unsigned long : 8;
++ } cursor2_color0_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor2_color0_t f;
++} cursor2_color0_u;
++
++typedef struct _cursor2_color1_t {
++ unsigned long cur2_color1_r : 8;
++ unsigned long cur2_color1_g : 8;
++ unsigned long cur2_color1_b : 8;
++ unsigned long : 8;
++ } cursor2_color1_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor2_color1_t f;
++} cursor2_color1_u;
++
++typedef struct _disp_int_cntl_t {
++ unsigned long vline_int_pos : 10;
++ unsigned long : 6;
++ unsigned long hpos_int_pos : 10;
++ unsigned long : 4;
++ unsigned long vblank_int_pol : 1;
++ unsigned long frame_int_pol : 1;
++ } disp_int_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ disp_int_cntl_t f;
++} disp_int_cntl_u;
++
++typedef struct _crtc_ss_t {
++ unsigned long ss_start : 10;
++ unsigned long : 6;
++ unsigned long ss_end : 10;
++ unsigned long : 2;
++ unsigned long ss_align : 1;
++ unsigned long ss_pol : 1;
++ unsigned long ss_run_mode : 1;
++ unsigned long ss_en : 1;
++ } crtc_ss_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_ss_t f;
++} crtc_ss_u;
++
++typedef struct _crtc_ls_t {
++ unsigned long ls_start : 10;
++ unsigned long : 6;
++ unsigned long ls_end : 10;
++ unsigned long : 2;
++ unsigned long ls_align : 1;
++ unsigned long ls_pol : 1;
++ unsigned long ls_run_mode : 1;
++ unsigned long ls_en : 1;
++ } crtc_ls_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_ls_t f;
++} crtc_ls_u;
++
++typedef struct _crtc_rev_t {
++ unsigned long rev_pos : 10;
++ unsigned long : 6;
++ unsigned long rev_align : 1;
++ unsigned long rev_freq_nref : 5;
++ unsigned long rev_en : 1;
++ unsigned long : 9;
++ } crtc_rev_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_rev_t f;
++} crtc_rev_u;
++
++typedef struct _crtc_dclk_t {
++ unsigned long dclk_start : 10;
++ unsigned long : 6;
++ unsigned long dclk_end : 10;
++ unsigned long : 1;
++ unsigned long dclk_run_mode : 2;
++ unsigned long dclk_pol : 1;
++ unsigned long dclk_align : 1;
++ unsigned long dclk_en : 1;
++ } crtc_dclk_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_dclk_t f;
++} crtc_dclk_u;
++
++typedef struct _crtc_gs_t {
++ unsigned long gs_start : 10;
++ unsigned long : 6;
++ unsigned long gs_end : 10;
++ unsigned long : 3;
++ unsigned long gs_align : 1;
++ unsigned long gs_pol : 1;
++ unsigned long gs_en : 1;
++ } crtc_gs_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_gs_t f;
++} crtc_gs_u;
++
++typedef struct _crtc_vpos_gs_t {
++ unsigned long gs_vpos_start : 10;
++ unsigned long : 6;
++ unsigned long gs_vpos_end : 10;
++ unsigned long : 6;
++ } crtc_vpos_gs_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_vpos_gs_t f;
++} crtc_vpos_gs_u;
++
++typedef struct _crtc_gclk_t {
++ unsigned long gclk_start : 10;
++ unsigned long : 6;
++ unsigned long gclk_end : 10;
++ unsigned long : 3;
++ unsigned long gclk_align : 1;
++ unsigned long gclk_pol : 1;
++ unsigned long gclk_en : 1;
++ } crtc_gclk_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_gclk_t f;
++} crtc_gclk_u;
++
++typedef struct _crtc_goe_t {
++ unsigned long goe_start : 10;
++ unsigned long : 6;
++ unsigned long goe_end : 10;
++ unsigned long : 3;
++ unsigned long goe_align : 1;
++ unsigned long goe_pol : 1;
++ unsigned long goe_en : 1;
++ } crtc_goe_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_goe_t f;
++} crtc_goe_u;
++
++typedef struct _crtc_frame_t {
++ unsigned long crtc_fr_start : 10;
++ unsigned long : 6;
++ unsigned long crtc_fr_end : 10;
++ unsigned long : 4;
++ unsigned long crtc_frame_en : 1;
++ unsigned long crtc_frame_align : 1;
++ } crtc_frame_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_frame_t f;
++} crtc_frame_u;
++
++typedef struct _crtc_frame_vpos_t {
++ unsigned long crtc_fr_vpos : 10;
++ unsigned long : 22;
++ } crtc_frame_vpos_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_frame_vpos_t f;
++} crtc_frame_vpos_u;
++
++typedef struct _gpio_data_t {
++ unsigned long gio_out : 16;
++ unsigned long gio_in : 16;
++ } gpio_data_t;
++
++typedef union {
++ unsigned long val : 32;
++ gpio_data_t f;
++} gpio_data_u;
++
++typedef struct _gpio_cntl1_t {
++ unsigned long gio_pd : 16;
++ unsigned long gio_schmen : 16;
++ } gpio_cntl1_t;
++
++typedef union {
++ unsigned long val : 32;
++ gpio_cntl1_t f;
++} gpio_cntl1_u;
++
++typedef struct _gpio_cntl2_t {
++ unsigned long gio_oe : 16;
++ unsigned long gio_srp : 1;
++ unsigned long gio_srn : 1;
++ unsigned long gio_sp : 4;
++ unsigned long gio_sn : 4;
++ unsigned long : 6;
++ } gpio_cntl2_t;
++
++typedef union {
++ unsigned long val : 32;
++ gpio_cntl2_t f;
++} gpio_cntl2_u;
++
++typedef struct _lcdd_cntl1_t {
++ unsigned long lcdd_pd : 18;
++ unsigned long lcdd_srp : 1;
++ unsigned long lcdd_srn : 1;
++ unsigned long lcdd_sp : 4;
++ unsigned long lcdd_sn : 4;
++ unsigned long lcdd_align : 1;
++ unsigned long : 3;
++ } lcdd_cntl1_t;
++
++typedef union {
++ unsigned long val : 32;
++ lcdd_cntl1_t f;
++} lcdd_cntl1_u;
++
++typedef struct _lcdd_cntl2_t {
++ unsigned long lcdd_oe : 18;
++ unsigned long : 14;
++ } lcdd_cntl2_t;
++
++typedef union {
++ unsigned long val : 32;
++ lcdd_cntl2_t f;
++} lcdd_cntl2_u;
++
++typedef struct _genlcd_cntl1_t {
++ unsigned long dclk_oe : 1;
++ unsigned long dclk_pd : 1;
++ unsigned long dclk_srp : 1;
++ unsigned long dclk_srn : 1;
++ unsigned long dclk_sp : 4;
++ unsigned long dclk_sn : 4;
++ unsigned long ss_oe : 1;
++ unsigned long ss_pd : 1;
++ unsigned long ls_oe : 1;
++ unsigned long ls_pd : 1;
++ unsigned long gs_oe : 1;
++ unsigned long gs_pd : 1;
++ unsigned long goe_oe : 1;
++ unsigned long goe_pd : 1;
++ unsigned long rev_oe : 1;
++ unsigned long rev_pd : 1;
++ unsigned long frame_oe : 1;
++ unsigned long frame_pd : 1;
++ unsigned long : 8;
++ } genlcd_cntl1_t;
++
++typedef union {
++ unsigned long val : 32;
++ genlcd_cntl1_t f;
++} genlcd_cntl1_u;
++
++typedef struct _genlcd_cntl2_t {
++ unsigned long gclk_oe : 1;
++ unsigned long gclk_pd : 1;
++ unsigned long gclk_srp : 1;
++ unsigned long gclk_srn : 1;
++ unsigned long gclk_sp : 4;
++ unsigned long gclk_sn : 4;
++ unsigned long genlcd_srp : 1;
++ unsigned long genlcd_srn : 1;
++ unsigned long genlcd_sp : 4;
++ unsigned long genlcd_sn : 4;
++ unsigned long : 10;
++ } genlcd_cntl2_t;
++
++typedef union {
++ unsigned long val : 32;
++ genlcd_cntl2_t f;
++} genlcd_cntl2_u;
++
++typedef struct _disp_debug_t {
++ unsigned long disp_debug : 32;
++ } disp_debug_t;
++
++typedef union {
++ unsigned long val : 32;
++ disp_debug_t f;
++} disp_debug_u;
++
++typedef struct _disp_db_buf_cntl_rd_t {
++ unsigned long en_db_buf : 1;
++ unsigned long update_db_buf_done : 1;
++ unsigned long db_buf_cntl : 6;
++ unsigned long : 24;
++ } disp_db_buf_cntl_rd_t;
++
++typedef union {
++ unsigned long val : 32;
++ disp_db_buf_cntl_rd_t f;
++} disp_db_buf_cntl_rd_u;
++
++typedef struct _disp_db_buf_cntl_wr_t {
++ unsigned long en_db_buf : 1;
++ unsigned long update_db_buf : 1;
++ unsigned long db_buf_cntl : 6;
++ unsigned long : 24;
++ } disp_db_buf_cntl_wr_t;
++
++typedef union {
++ unsigned long val : 32;
++ disp_db_buf_cntl_wr_t f;
++} disp_db_buf_cntl_wr_u;
++
++typedef struct _disp_crc_sig_t {
++ unsigned long crc_sig_r : 6;
++ unsigned long crc_sig_g : 6;
++ unsigned long crc_sig_b : 6;
++ unsigned long crc_cont_en : 1;
++ unsigned long crc_en : 1;
++ unsigned long crc_mask_en : 1;
++ unsigned long crc_sig_cntl : 6;
++ unsigned long : 5;
++ } disp_crc_sig_t;
++
++typedef union {
++ unsigned long val : 32;
++ disp_crc_sig_t f;
++} disp_crc_sig_u;
++
++typedef struct _crtc_default_count_t {
++ unsigned long crtc_hcount_def : 10;
++ unsigned long : 6;
++ unsigned long crtc_vcount_def : 10;
++ unsigned long : 6;
++ } crtc_default_count_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_default_count_t f;
++} crtc_default_count_u;
++
++typedef struct _lcd_background_color_t {
++ unsigned long lcd_bg_red : 8;
++ unsigned long lcd_bg_green : 8;
++ unsigned long lcd_bg_blue : 8;
++ unsigned long : 8;
++ } lcd_background_color_t;
++
++typedef union {
++ unsigned long val : 32;
++ lcd_background_color_t f;
++} lcd_background_color_u;
++
++typedef struct _crtc_ps2_t {
++ unsigned long ps2_start : 10;
++ unsigned long : 6;
++ unsigned long ps2_end : 10;
++ unsigned long : 4;
++ unsigned long ps2_pol : 1;
++ unsigned long ps2_en : 1;
++ } crtc_ps2_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_ps2_t f;
++} crtc_ps2_u;
++
++typedef struct _crtc_ps2_vpos_t {
++ unsigned long ps2_vpos_start : 10;
++ unsigned long : 6;
++ unsigned long ps2_vpos_end : 10;
++ unsigned long : 6;
++ } crtc_ps2_vpos_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_ps2_vpos_t f;
++} crtc_ps2_vpos_u;
++
++typedef struct _crtc_ps1_active_t {
++ unsigned long ps1_h_start : 10;
++ unsigned long : 6;
++ unsigned long ps1_h_end : 10;
++ unsigned long : 3;
++ unsigned long ps1_pol : 1;
++ unsigned long ps1_en : 1;
++ unsigned long ps1_use_nactive : 1;
++ } crtc_ps1_active_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_ps1_active_t f;
++} crtc_ps1_active_u;
++
++typedef struct _crtc_ps1_nactive_t {
++ unsigned long ps1_h_start_na : 10;
++ unsigned long : 6;
++ unsigned long ps1_h_end_na : 10;
++ unsigned long : 5;
++ unsigned long ps1_en_na : 1;
++ } crtc_ps1_nactive_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_ps1_nactive_t f;
++} crtc_ps1_nactive_u;
++
++typedef struct _crtc_gclk_ext_t {
++ unsigned long gclk_alter_start : 10;
++ unsigned long : 6;
++ unsigned long gclk_alter_width : 2;
++ unsigned long gclk_en_alter : 1;
++ unsigned long gclk_db_width : 2;
++ unsigned long : 11;
++ } crtc_gclk_ext_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_gclk_ext_t f;
++} crtc_gclk_ext_u;
++
++typedef struct _crtc_alw_t {
++ unsigned long alw_hstart : 10;
++ unsigned long : 6;
++ unsigned long alw_hend : 10;
++ unsigned long : 4;
++ unsigned long alw_delay : 1;
++ unsigned long alw_en : 1;
++ } crtc_alw_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_alw_t f;
++} crtc_alw_u;
++
++typedef struct _crtc_alw_vpos_t {
++ unsigned long alw_vstart : 10;
++ unsigned long : 6;
++ unsigned long alw_vend : 10;
++ unsigned long : 6;
++ } crtc_alw_vpos_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_alw_vpos_t f;
++} crtc_alw_vpos_u;
++
++typedef struct _crtc_psk_t {
++ unsigned long psk_vstart : 10;
++ unsigned long : 6;
++ unsigned long psk_vend : 10;
++ unsigned long : 4;
++ unsigned long psk_pol : 1;
++ unsigned long psk_en : 1;
++ } crtc_psk_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_psk_t f;
++} crtc_psk_u;
++
++typedef struct _crtc_psk_hpos_t {
++ unsigned long psk_hstart : 10;
++ unsigned long : 6;
++ unsigned long psk_hend : 10;
++ unsigned long : 6;
++ } crtc_psk_hpos_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_psk_hpos_t f;
++} crtc_psk_hpos_u;
++
++typedef struct _crtc_cv4_start_t {
++ unsigned long cv4_vstart : 10;
++ unsigned long : 20;
++ unsigned long cv4_pol : 1;
++ unsigned long cv4_en : 1;
++ } crtc_cv4_start_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_cv4_start_t f;
++} crtc_cv4_start_u;
++
++typedef struct _crtc_cv4_end_t {
++ unsigned long cv4_vend1 : 10;
++ unsigned long : 6;
++ unsigned long cv4_vend2 : 10;
++ unsigned long : 6;
++ } crtc_cv4_end_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_cv4_end_t f;
++} crtc_cv4_end_u;
++
++typedef struct _crtc_cv4_hpos_t {
++ unsigned long cv4_hstart : 10;
++ unsigned long : 6;
++ unsigned long cv4_hend : 10;
++ unsigned long : 6;
++ } crtc_cv4_hpos_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_cv4_hpos_t f;
++} crtc_cv4_hpos_u;
++
++typedef struct _crtc_eck_t {
++ unsigned long eck_freq1 : 3;
++ unsigned long eck_en : 1;
++ unsigned long : 28;
++ } crtc_eck_t;
++
++typedef union {
++ unsigned long val : 32;
++ crtc_eck_t f;
++} crtc_eck_u;
++
++typedef struct _refresh_cntl_t {
++ unsigned long ref_frame : 3;
++ unsigned long nref_frame : 5;
++ unsigned long ref_cntl : 1;
++ unsigned long stop_sm_nref : 1;
++ unsigned long stop_req_nref : 1;
++ unsigned long : 21;
++ } refresh_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ refresh_cntl_t f;
++} refresh_cntl_u;
++
++typedef struct _genlcd_cntl3_t {
++ unsigned long ps1_oe : 1;
++ unsigned long ps1_pd : 1;
++ unsigned long ps2_oe : 1;
++ unsigned long ps2_pd : 1;
++ unsigned long rev2_oe : 1;
++ unsigned long rev2_pd : 1;
++ unsigned long awl_oe : 1;
++ unsigned long awl_pd : 1;
++ unsigned long dinv_oe : 1;
++ unsigned long dinv_pd : 1;
++ unsigned long psk_out : 1;
++ unsigned long psd_out : 1;
++ unsigned long eck_out : 1;
++ unsigned long cv4_out : 1;
++ unsigned long ps1_out : 1;
++ unsigned long ps2_out : 1;
++ unsigned long rev_out : 1;
++ unsigned long rev2_out : 1;
++ unsigned long : 14;
++ } genlcd_cntl3_t;
++
++typedef union {
++ unsigned long val : 32;
++ genlcd_cntl3_t f;
++} genlcd_cntl3_u;
++
++typedef struct _gpio_data2_t {
++ unsigned long gio2_out : 16;
++ unsigned long gio2_in : 16;
++ } gpio_data2_t;
++
++typedef union {
++ unsigned long val : 32;
++ gpio_data2_t f;
++} gpio_data2_u;
++
++typedef struct _gpio_cntl3_t {
++ unsigned long gio2_pd : 16;
++ unsigned long gio2_schmen : 16;
++ } gpio_cntl3_t;
++
++typedef union {
++ unsigned long val : 32;
++ gpio_cntl3_t f;
++} gpio_cntl3_u;
++
++typedef struct _gpio_cntl4_t {
++ unsigned long gio2_oe : 16;
++ unsigned long : 16;
++ } gpio_cntl4_t;
++
++typedef union {
++ unsigned long val : 32;
++ gpio_cntl4_t f;
++} gpio_cntl4_u;
++
++typedef struct _chip_strap_t {
++ unsigned long config_strap : 8;
++ unsigned long pkg_strap : 1;
++ unsigned long : 23;
++ } chip_strap_t;
++
++typedef union {
++ unsigned long val : 32;
++ chip_strap_t f;
++} chip_strap_u;
++
++typedef struct _disp_debug2_t {
++ unsigned long disp_debug2 : 32;
++ } disp_debug2_t;
++
++typedef union {
++ unsigned long val : 32;
++ disp_debug2_t f;
++} disp_debug2_u;
++
++typedef struct _debug_bus_cntl_t {
++ unsigned long debug_testmux : 4;
++ unsigned long debug_testsel : 4;
++ unsigned long debug_gioa_sel : 2;
++ unsigned long debug_giob_sel : 2;
++ unsigned long debug_clk_sel : 1;
++ unsigned long debug_clk_inv : 1;
++ unsigned long : 2;
++ unsigned long debug_bus : 16;
++ } debug_bus_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug_bus_cntl_t f;
++} debug_bus_cntl_u;
++
++typedef struct _gamma_value1_t {
++ unsigned long gamma1 : 8;
++ unsigned long gamma2 : 8;
++ unsigned long gamma3 : 8;
++ unsigned long gamma4 : 8;
++ } gamma_value1_t;
++
++typedef union {
++ unsigned long val : 32;
++ gamma_value1_t f;
++} gamma_value1_u;
++
++typedef struct _gamma_value2_t {
++ unsigned long gamma5 : 8;
++ unsigned long gamma6 : 8;
++ unsigned long gamma7 : 8;
++ unsigned long gamma8 : 8;
++ } gamma_value2_t;
++
++typedef union {
++ unsigned long val : 32;
++ gamma_value2_t f;
++} gamma_value2_u;
++
++typedef struct _gamma_slope_t {
++ unsigned long slope1 : 3;
++ unsigned long slope2 : 3;
++ unsigned long slope3 : 3;
++ unsigned long slope4 : 3;
++ unsigned long slope5 : 3;
++ unsigned long slope6 : 3;
++ unsigned long slope7 : 3;
++ unsigned long slope8 : 3;
++ unsigned long : 8;
++ } gamma_slope_t;
++
++typedef union {
++ unsigned long val : 32;
++ gamma_slope_t f;
++} gamma_slope_u;
++
++typedef struct _gen_status_t {
++ unsigned long status : 16;
++ unsigned long : 16;
++ } gen_status_t;
++
++typedef union {
++ unsigned long val : 32;
++ gen_status_t f;
++} gen_status_u;
++
++typedef struct _hw_int_t {
++ unsigned long hwint1_pos : 5;
++ unsigned long hwint2_pos : 5;
++ unsigned long hwint1_pol : 1;
++ unsigned long hwint2_pol : 1;
++ unsigned long hwint1_en_db : 1;
++ unsigned long hwint2_en_db : 1;
++ unsigned long : 18;
++ } hw_int_t;
++
++typedef union {
++ unsigned long val : 32;
++ hw_int_t f;
++} hw_int_u;
++
++typedef struct _dst_offset_t {
++ unsigned long dst_offset : 24;
++ unsigned long : 8;
++ } dst_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_offset_t f;
++} dst_offset_u;
++
++typedef struct _dst_pitch_t {
++ unsigned long dst_pitch : 14;
++ unsigned long mc_dst_pitch_mul : 2;
++ unsigned long : 16;
++ } dst_pitch_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_pitch_t f;
++} dst_pitch_u;
++
++typedef struct _dst_pitch_offset_t {
++ unsigned long dst_offset : 20;
++ unsigned long dst_pitch : 10;
++ unsigned long mc_dst_pitch_mul : 2;
++ } dst_pitch_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_pitch_offset_t f;
++} dst_pitch_offset_u;
++
++typedef struct _dst_x_t {
++ unsigned long dst_x : 14;
++ unsigned long : 18;
++ } dst_x_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_x_t f;
++} dst_x_u;
++
++typedef struct _dst_y_t {
++ unsigned long dst_y : 14;
++ unsigned long : 18;
++ } dst_y_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_y_t f;
++} dst_y_u;
++
++typedef struct _dst_x_y_t {
++ unsigned long dst_y : 14;
++ unsigned long : 2;
++ unsigned long dst_x : 14;
++ unsigned long : 2;
++ } dst_x_y_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_x_y_t f;
++} dst_x_y_u;
++
++typedef struct _dst_y_x_t {
++ unsigned long dst_x : 14;
++ unsigned long : 2;
++ unsigned long dst_y : 14;
++ unsigned long : 2;
++ } dst_y_x_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_y_x_t f;
++} dst_y_x_u;
++
++typedef struct _dst_width_t {
++ unsigned long dst_width_b0 : 8;
++ unsigned long dst_width_b1 : 6;
++ unsigned long : 18;
++ } dst_width_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_width_t f;
++} dst_width_u;
++
++typedef struct _dst_height_t {
++ unsigned long dst_height : 14;
++ unsigned long : 18;
++ } dst_height_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_height_t f;
++} dst_height_u;
++
++typedef struct _dst_width_height_t {
++ unsigned long dst_height : 14;
++ unsigned long : 2;
++ unsigned long dst_width_b0 : 8;
++ unsigned long dst_width_b1 : 6;
++ unsigned long : 2;
++ } dst_width_height_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_width_height_t f;
++} dst_width_height_u;
++
++typedef struct _dst_height_width_t {
++ unsigned long dst_width_b0 : 8;
++ unsigned long dst_width_b1 : 6;
++ unsigned long : 2;
++ unsigned long dst_height : 14;
++ unsigned long : 2;
++ } dst_height_width_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_height_width_t f;
++} dst_height_width_u;
++
++typedef struct _dst_height_width_8_t {
++ unsigned long : 16;
++ unsigned long dst_width_b0 : 8;
++ unsigned long dst_height : 8;
++ } dst_height_width_8_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_height_width_8_t f;
++} dst_height_width_8_u;
++
++typedef struct _dst_height_y_t {
++ unsigned long dst_y : 14;
++ unsigned long : 2;
++ unsigned long dst_height : 14;
++ unsigned long : 2;
++ } dst_height_y_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_height_y_t f;
++} dst_height_y_u;
++
++typedef struct _dst_width_x_t {
++ unsigned long dst_x : 14;
++ unsigned long : 2;
++ unsigned long dst_width_b0 : 8;
++ unsigned long dst_width_b1 : 6;
++ unsigned long : 2;
++ } dst_width_x_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_width_x_t f;
++} dst_width_x_u;
++
++typedef struct _dst_width_x_incy_t {
++ unsigned long dst_x : 14;
++ unsigned long : 2;
++ unsigned long dst_width_b0 : 8;
++ unsigned long dst_width_b1 : 6;
++ unsigned long : 2;
++ } dst_width_x_incy_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_width_x_incy_t f;
++} dst_width_x_incy_u;
++
++typedef struct _dst_line_start_t {
++ unsigned long dst_start_x : 14;
++ unsigned long : 2;
++ unsigned long dst_start_y : 14;
++ unsigned long : 2;
++ } dst_line_start_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_line_start_t f;
++} dst_line_start_u;
++
++typedef struct _dst_line_end_t {
++ unsigned long dst_end_x : 14;
++ unsigned long : 2;
++ unsigned long dst_end_y_b0 : 8;
++ unsigned long dst_end_y_b1 : 6;
++ unsigned long : 2;
++ } dst_line_end_t;
++
++typedef union {
++ unsigned long val : 32;
++ dst_line_end_t f;
++} dst_line_end_u;
++
++typedef struct _brush_offset_t {
++ unsigned long brush_offset : 24;
++ unsigned long : 8;
++ } brush_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ brush_offset_t f;
++} brush_offset_u;
++
++typedef struct _brush_y_x_t {
++ unsigned long brush_x : 5;
++ unsigned long : 3;
++ unsigned long brush_y : 3;
++ unsigned long : 21;
++ } brush_y_x_t;
++
++typedef union {
++ unsigned long val : 32;
++ brush_y_x_t f;
++} brush_y_x_u;
++
++typedef struct _dp_brush_frgd_clr_t {
++ unsigned long dp_brush_frgd_clr : 32;
++ } dp_brush_frgd_clr_t;
++
++typedef union {
++ unsigned long val : 32;
++ dp_brush_frgd_clr_t f;
++} dp_brush_frgd_clr_u;
++
++typedef struct _dp_brush_bkgd_clr_t {
++ unsigned long dp_brush_bkgd_clr : 32;
++ } dp_brush_bkgd_clr_t;
++
++typedef union {
++ unsigned long val : 32;
++ dp_brush_bkgd_clr_t f;
++} dp_brush_bkgd_clr_u;
++
++typedef struct _src2_offset_t {
++ unsigned long src2_offset : 24;
++ unsigned long : 8;
++ } src2_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ src2_offset_t f;
++} src2_offset_u;
++
++typedef struct _src2_pitch_t {
++ unsigned long src2_pitch : 14;
++ unsigned long src2_pitch_mul : 2;
++ unsigned long : 16;
++ } src2_pitch_t;
++
++typedef union {
++ unsigned long val : 32;
++ src2_pitch_t f;
++} src2_pitch_u;
++
++typedef struct _src2_pitch_offset_t {
++ unsigned long src2_offset : 20;
++ unsigned long : 2;
++ unsigned long src2_pitch : 8;
++ unsigned long src2_pitch_mul : 2;
++ } src2_pitch_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ src2_pitch_offset_t f;
++} src2_pitch_offset_u;
++
++typedef struct _src2_x_t {
++ unsigned long src_x : 14;
++ unsigned long : 18;
++ } src2_x_t;
++
++typedef union {
++ unsigned long val : 32;
++ src2_x_t f;
++} src2_x_u;
++
++typedef struct _src2_y_t {
++ unsigned long src_y : 14;
++ unsigned long : 18;
++ } src2_y_t;
++
++typedef union {
++ unsigned long val : 32;
++ src2_y_t f;
++} src2_y_u;
++
++typedef struct _src2_x_y_t {
++ unsigned long src_y : 14;
++ unsigned long : 2;
++ unsigned long src_x : 14;
++ unsigned long : 2;
++ } src2_x_y_t;
++
++typedef union {
++ unsigned long val : 32;
++ src2_x_y_t f;
++} src2_x_y_u;
++
++typedef struct _src2_width_t {
++ unsigned long src2_width : 14;
++ unsigned long : 18;
++ } src2_width_t;
++
++typedef union {
++ unsigned long val : 32;
++ src2_width_t f;
++} src2_width_u;
++
++typedef struct _src2_height_t {
++ unsigned long src2_height : 14;
++ unsigned long : 18;
++ } src2_height_t;
++
++typedef union {
++ unsigned long val : 32;
++ src2_height_t f;
++} src2_height_u;
++
++typedef struct _src2_inc_t {
++ unsigned long src2_xinc : 6;
++ unsigned long : 2;
++ unsigned long src2_yinc : 6;
++ unsigned long : 18;
++ } src2_inc_t;
++
++typedef union {
++ unsigned long val : 32;
++ src2_inc_t f;
++} src2_inc_u;
++
++typedef struct _src_offset_t {
++ unsigned long src_offset : 24;
++ unsigned long : 8;
++ } src_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ src_offset_t f;
++} src_offset_u;
++
++typedef struct _src_pitch_t {
++ unsigned long src_pitch : 14;
++ unsigned long src_pitch_mul : 2;
++ unsigned long : 16;
++ } src_pitch_t;
++
++typedef union {
++ unsigned long val : 32;
++ src_pitch_t f;
++} src_pitch_u;
++
++typedef struct _src_pitch_offset_t {
++ unsigned long src_offset : 20;
++ unsigned long src_pitch : 10;
++ unsigned long src_pitch_mul : 2;
++ } src_pitch_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ src_pitch_offset_t f;
++} src_pitch_offset_u;
++
++typedef struct _src_x_t {
++ unsigned long src_x : 14;
++ unsigned long : 18;
++ } src_x_t;
++
++typedef union {
++ unsigned long val : 32;
++ src_x_t f;
++} src_x_u;
++
++typedef struct _src_y_t {
++ unsigned long src_y : 14;
++ unsigned long : 18;
++ } src_y_t;
++
++typedef union {
++ unsigned long val : 32;
++ src_y_t f;
++} src_y_u;
++
++typedef struct _src_x_y_t {
++ unsigned long src_y : 14;
++ unsigned long : 2;
++ unsigned long src_x : 14;
++ unsigned long : 2;
++ } src_x_y_t;
++
++typedef union {
++ unsigned long val : 32;
++ src_x_y_t f;
++} src_x_y_u;
++
++typedef struct _src_y_x_t {
++ unsigned long src_x : 14;
++ unsigned long : 2;
++ unsigned long src_y : 14;
++ unsigned long : 2;
++ } src_y_x_t;
++
++typedef union {
++ unsigned long val : 32;
++ src_y_x_t f;
++} src_y_x_u;
++
++typedef struct _src_width_t {
++ unsigned long src_width : 14;
++ unsigned long : 18;
++ } src_width_t;
++
++typedef union {
++ unsigned long val : 32;
++ src_width_t f;
++} src_width_u;
++
++typedef struct _src_height_t {
++ unsigned long src_height : 14;
++ unsigned long : 18;
++ } src_height_t;
++
++typedef union {
++ unsigned long val : 32;
++ src_height_t f;
++} src_height_u;
++
++typedef struct _src_inc_t {
++ unsigned long src_xinc : 6;
++ unsigned long : 2;
++ unsigned long src_yinc : 6;
++ unsigned long : 18;
++ } src_inc_t;
++
++typedef union {
++ unsigned long val : 32;
++ src_inc_t f;
++} src_inc_u;
++
++typedef struct _host_data0_t {
++ unsigned long host_data : 32;
++ } host_data0_t;
++
++typedef union {
++ unsigned long val : 32;
++ host_data0_t f;
++} host_data0_u;
++
++typedef struct _host_data1_t {
++ unsigned long host_data : 32;
++ } host_data1_t;
++
++typedef union {
++ unsigned long val : 32;
++ host_data1_t f;
++} host_data1_u;
++
++typedef struct _host_data2_t {
++ unsigned long host_data : 32;
++ } host_data2_t;
++
++typedef union {
++ unsigned long val : 32;
++ host_data2_t f;
++} host_data2_u;
++
++typedef struct _host_data3_t {
++ unsigned long host_data : 32;
++ } host_data3_t;
++
++typedef union {
++ unsigned long val : 32;
++ host_data3_t f;
++} host_data3_u;
++
++typedef struct _host_data4_t {
++ unsigned long host_data : 32;
++ } host_data4_t;
++
++typedef union {
++ unsigned long val : 32;
++ host_data4_t f;
++} host_data4_u;
++
++typedef struct _host_data5_t {
++ unsigned long host_data : 32;
++ } host_data5_t;
++
++typedef union {
++ unsigned long val : 32;
++ host_data5_t f;
++} host_data5_u;
++
++typedef struct _host_data6_t {
++ unsigned long host_data : 32;
++ } host_data6_t;
++
++typedef union {
++ unsigned long val : 32;
++ host_data6_t f;
++} host_data6_u;
++
++typedef struct _host_data7_t {
++ unsigned long host_data : 32;
++ } host_data7_t;
++
++typedef union {
++ unsigned long val : 32;
++ host_data7_t f;
++} host_data7_u;
++
++typedef struct _host_data_last_t {
++ unsigned long host_data_last : 32;
++ } host_data_last_t;
++
++typedef union {
++ unsigned long val : 32;
++ host_data_last_t f;
++} host_data_last_u;
++
++typedef struct _dp_src_frgd_clr_t {
++ unsigned long dp_src_frgd_clr : 32;
++ } dp_src_frgd_clr_t;
++
++typedef union {
++ unsigned long val : 32;
++ dp_src_frgd_clr_t f;
++} dp_src_frgd_clr_u;
++
++typedef struct _dp_src_bkgd_clr_t {
++ unsigned long dp_src_bkgd_clr : 32;
++ } dp_src_bkgd_clr_t;
++
++typedef union {
++ unsigned long val : 32;
++ dp_src_bkgd_clr_t f;
++} dp_src_bkgd_clr_u;
++
++typedef struct _sc_left_t {
++ unsigned long sc_left : 14;
++ unsigned long : 18;
++ } sc_left_t;
++
++typedef union {
++ unsigned long val : 32;
++ sc_left_t f;
++} sc_left_u;
++
++typedef struct _sc_right_t {
++ unsigned long sc_right : 14;
++ unsigned long : 18;
++ } sc_right_t;
++
++typedef union {
++ unsigned long val : 32;
++ sc_right_t f;
++} sc_right_u;
++
++typedef struct _sc_top_t {
++ unsigned long sc_top : 14;
++ unsigned long : 18;
++ } sc_top_t;
++
++typedef union {
++ unsigned long val : 32;
++ sc_top_t f;
++} sc_top_u;
++
++typedef struct _sc_bottom_t {
++ unsigned long sc_bottom : 14;
++ unsigned long : 18;
++ } sc_bottom_t;
++
++typedef union {
++ unsigned long val : 32;
++ sc_bottom_t f;
++} sc_bottom_u;
++
++typedef struct _src_sc_right_t {
++ unsigned long sc_right : 14;
++ unsigned long : 18;
++ } src_sc_right_t;
++
++typedef union {
++ unsigned long val : 32;
++ src_sc_right_t f;
++} src_sc_right_u;
++
++typedef struct _src_sc_bottom_t {
++ unsigned long sc_bottom : 14;
++ unsigned long : 18;
++ } src_sc_bottom_t;
++
++typedef union {
++ unsigned long val : 32;
++ src_sc_bottom_t f;
++} src_sc_bottom_u;
++
++typedef struct _dp_cntl_t {
++ unsigned long dst_x_dir : 1;
++ unsigned long dst_y_dir : 1;
++ unsigned long src_x_dir : 1;
++ unsigned long src_y_dir : 1;
++ unsigned long dst_major_x : 1;
++ unsigned long src_major_x : 1;
++ unsigned long : 26;
++ } dp_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ dp_cntl_t f;
++} dp_cntl_u;
++
++typedef struct _dp_cntl_dst_dir_t {
++ unsigned long : 15;
++ unsigned long dst_y_dir : 1;
++ unsigned long : 15;
++ unsigned long dst_x_dir : 1;
++ } dp_cntl_dst_dir_t;
++
++typedef union {
++ unsigned long val : 32;
++ dp_cntl_dst_dir_t f;
++} dp_cntl_dst_dir_u;
++
++typedef struct _dp_datatype_t {
++ unsigned long dp_dst_datatype : 4;
++ unsigned long : 4;
++ unsigned long dp_brush_datatype : 4;
++ unsigned long dp_src2_type : 1;
++ unsigned long dp_src2_datatype : 3;
++ unsigned long dp_src_datatype : 3;
++ unsigned long : 11;
++ unsigned long dp_byte_pix_order : 1;
++ unsigned long : 1;
++ } dp_datatype_t;
++
++typedef union {
++ unsigned long val : 32;
++ dp_datatype_t f;
++} dp_datatype_u;
++
++typedef struct _dp_mix_t {
++ unsigned long : 8;
++ unsigned long dp_src_source : 3;
++ unsigned long dp_src2_source : 3;
++ unsigned long : 2;
++ unsigned long dp_rop3 : 8;
++ unsigned long dp_op : 1;
++ unsigned long : 7;
++ } dp_mix_t;
++
++typedef union {
++ unsigned long val : 32;
++ dp_mix_t f;
++} dp_mix_u;
++
++typedef struct _dp_write_msk_t {
++ unsigned long dp_write_msk : 32;
++ } dp_write_msk_t;
++
++typedef union {
++ unsigned long val : 32;
++ dp_write_msk_t f;
++} dp_write_msk_u;
++
++typedef struct _clr_cmp_clr_src_t {
++ unsigned long clr_cmp_clr_src : 32;
++ } clr_cmp_clr_src_t;
++
++typedef union {
++ unsigned long val : 32;
++ clr_cmp_clr_src_t f;
++} clr_cmp_clr_src_u;
++
++typedef struct _clr_cmp_clr_dst_t {
++ unsigned long clr_cmp_clr_dst : 32;
++ } clr_cmp_clr_dst_t;
++
++typedef union {
++ unsigned long val : 32;
++ clr_cmp_clr_dst_t f;
++} clr_cmp_clr_dst_u;
++
++typedef struct _clr_cmp_cntl_t {
++ unsigned long clr_cmp_fcn_src : 3;
++ unsigned long : 5;
++ unsigned long clr_cmp_fcn_dst : 3;
++ unsigned long : 13;
++ unsigned long clr_cmp_src : 2;
++ unsigned long : 6;
++ } clr_cmp_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ clr_cmp_cntl_t f;
++} clr_cmp_cntl_u;
++
++typedef struct _clr_cmp_msk_t {
++ unsigned long clr_cmp_msk : 32;
++ } clr_cmp_msk_t;
++
++typedef union {
++ unsigned long val : 32;
++ clr_cmp_msk_t f;
++} clr_cmp_msk_u;
++
++typedef struct _default_pitch_offset_t {
++ unsigned long default_offset : 20;
++ unsigned long default_pitch : 10;
++ unsigned long : 2;
++ } default_pitch_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ default_pitch_offset_t f;
++} default_pitch_offset_u;
++
++typedef struct _default_sc_bottom_right_t {
++ unsigned long default_sc_right : 14;
++ unsigned long : 2;
++ unsigned long default_sc_bottom : 14;
++ unsigned long : 2;
++ } default_sc_bottom_right_t;
++
++typedef union {
++ unsigned long val : 32;
++ default_sc_bottom_right_t f;
++} default_sc_bottom_right_u;
++
++typedef struct _default2_sc_bottom_right_t {
++ unsigned long default_sc_right : 14;
++ unsigned long : 2;
++ unsigned long default_sc_bottom : 14;
++ unsigned long : 2;
++ } default2_sc_bottom_right_t;
++
++typedef union {
++ unsigned long val : 32;
++ default2_sc_bottom_right_t f;
++} default2_sc_bottom_right_u;
++
++typedef struct _ref1_pitch_offset_t {
++ unsigned long offset : 20;
++ unsigned long : 2;
++ unsigned long pitch : 8;
++ unsigned long : 2;
++ } ref1_pitch_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ ref1_pitch_offset_t f;
++} ref1_pitch_offset_u;
++
++typedef struct _ref2_pitch_offset_t {
++ unsigned long offset : 20;
++ unsigned long : 2;
++ unsigned long pitch : 8;
++ unsigned long : 2;
++ } ref2_pitch_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ ref2_pitch_offset_t f;
++} ref2_pitch_offset_u;
++
++typedef struct _ref3_pitch_offset_t {
++ unsigned long offset : 20;
++ unsigned long : 2;
++ unsigned long pitch : 8;
++ unsigned long : 2;
++ } ref3_pitch_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ ref3_pitch_offset_t f;
++} ref3_pitch_offset_u;
++
++typedef struct _ref4_pitch_offset_t {
++ unsigned long offset : 20;
++ unsigned long : 2;
++ unsigned long pitch : 8;
++ unsigned long : 2;
++ } ref4_pitch_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ ref4_pitch_offset_t f;
++} ref4_pitch_offset_u;
++
++typedef struct _ref5_pitch_offset_t {
++ unsigned long offset : 20;
++ unsigned long : 2;
++ unsigned long pitch : 8;
++ unsigned long : 2;
++ } ref5_pitch_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ ref5_pitch_offset_t f;
++} ref5_pitch_offset_u;
++
++typedef struct _ref6_pitch_offset_t {
++ unsigned long offset : 20;
++ unsigned long : 2;
++ unsigned long pitch : 8;
++ unsigned long : 2;
++ } ref6_pitch_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ ref6_pitch_offset_t f;
++} ref6_pitch_offset_u;
++
++typedef struct _dp_gui_master_cntl_t {
++ unsigned long gmc_src_pitch_offset_cntl : 1;
++ unsigned long gmc_dst_pitch_offset_cntl : 1;
++ unsigned long gmc_src_clipping : 1;
++ unsigned long gmc_dst_clipping : 1;
++ unsigned long gmc_brush_datatype : 4;
++ unsigned long gmc_dst_datatype : 4;
++ unsigned long gmc_src_datatype : 3;
++ unsigned long gmc_byte_pix_order : 1;
++ unsigned long gmc_default_sel : 1;
++ unsigned long gmc_rop3 : 8;
++ unsigned long gmc_dp_src_source : 3;
++ unsigned long gmc_clr_cmp_fcn_dis : 1;
++ unsigned long : 1;
++ unsigned long gmc_wr_msk_dis : 1;
++ unsigned long gmc_dp_op : 1;
++ } dp_gui_master_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ dp_gui_master_cntl_t f;
++} dp_gui_master_cntl_u;
++
++typedef struct _sc_top_left_t {
++ unsigned long sc_left : 14;
++ unsigned long : 2;
++ unsigned long sc_top : 14;
++ unsigned long : 2;
++ } sc_top_left_t;
++
++typedef union {
++ unsigned long val : 32;
++ sc_top_left_t f;
++} sc_top_left_u;
++
++typedef struct _sc_bottom_right_t {
++ unsigned long sc_right : 14;
++ unsigned long : 2;
++ unsigned long sc_bottom : 14;
++ unsigned long : 2;
++ } sc_bottom_right_t;
++
++typedef union {
++ unsigned long val : 32;
++ sc_bottom_right_t f;
++} sc_bottom_right_u;
++
++typedef struct _src_sc_bottom_right_t {
++ unsigned long sc_right : 14;
++ unsigned long : 2;
++ unsigned long sc_bottom : 14;
++ unsigned long : 2;
++ } src_sc_bottom_right_t;
++
++typedef union {
++ unsigned long val : 32;
++ src_sc_bottom_right_t f;
++} src_sc_bottom_right_u;
++
++typedef struct _global_alpha_t {
++ unsigned long alpha_r : 8;
++ unsigned long alpha_g : 8;
++ unsigned long alpha_b : 8;
++ unsigned long alpha_a : 8;
++ } global_alpha_t;
++
++typedef union {
++ unsigned long val : 32;
++ global_alpha_t f;
++} global_alpha_u;
++
++typedef struct _filter_coef_t {
++ unsigned long c_4 : 4;
++ unsigned long c_3 : 4;
++ unsigned long c_2 : 4;
++ unsigned long c_1 : 4;
++ unsigned long c1 : 4;
++ unsigned long c2 : 4;
++ unsigned long c3 : 4;
++ unsigned long c4 : 4;
++ } filter_coef_t;
++
++typedef union {
++ unsigned long val : 32;
++ filter_coef_t f;
++} filter_coef_u;
++
++typedef struct _mvc_cntl_start_t {
++ unsigned long mc_cntl_src_1_index : 4;
++ unsigned long mc_cntl_dst_offset : 20;
++ unsigned long mc_dst_pitch_mul : 2;
++ unsigned long mc_cntl_src_2_index : 3;
++ unsigned long mc_cntl_width_height_sel : 3;
++ } mvc_cntl_start_t;
++
++typedef union {
++ unsigned long val : 32;
++ mvc_cntl_start_t f;
++} mvc_cntl_start_u;
++
++typedef struct _e2_arithmetic_cntl_t {
++ unsigned long opcode : 5;
++ unsigned long shiftright : 4;
++ unsigned long clamp : 1;
++ unsigned long rounding : 2;
++ unsigned long filter_n : 3;
++ unsigned long : 1;
++ unsigned long srcblend_inv : 1;
++ unsigned long srcblend : 4;
++ unsigned long : 3;
++ unsigned long dstblend_inv : 1;
++ unsigned long dstblend : 4;
++ unsigned long dst_signed : 1;
++ unsigned long autoinc : 1;
++ unsigned long : 1;
++ } e2_arithmetic_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ e2_arithmetic_cntl_t f;
++} e2_arithmetic_cntl_u;
++
++typedef struct _debug0_t {
++ unsigned long debug0_r : 8;
++ unsigned long : 8;
++ unsigned long debug0_rw : 8;
++ unsigned long : 8;
++ } debug0_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug0_t f;
++} debug0_u;
++
++typedef struct _debug1_t {
++ unsigned long debug1_r : 8;
++ unsigned long : 8;
++ unsigned long debug1_rw : 8;
++ unsigned long : 8;
++ } debug1_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug1_t f;
++} debug1_u;
++
++typedef struct _debug2_t {
++ unsigned long debug2_r : 8;
++ unsigned long : 8;
++ unsigned long debug2_rw : 8;
++ unsigned long : 8;
++ } debug2_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug2_t f;
++} debug2_u;
++
++typedef struct _debug3_t {
++ unsigned long : 32;
++ } debug3_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug3_t f;
++} debug3_u;
++
++typedef struct _debug4_t {
++ unsigned long : 32;
++ } debug4_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug4_t f;
++} debug4_u;
++
++typedef struct _debug5_t {
++ unsigned long : 32;
++ } debug5_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug5_t f;
++} debug5_u;
++
++typedef struct _debug6_t {
++ unsigned long : 32;
++ } debug6_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug6_t f;
++} debug6_u;
++
++typedef struct _debug7_t {
++ unsigned long : 32;
++ } debug7_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug7_t f;
++} debug7_u;
++
++typedef struct _debug8_t {
++ unsigned long : 32;
++ } debug8_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug8_t f;
++} debug8_u;
++
++typedef struct _debug9_t {
++ unsigned long : 32;
++ } debug9_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug9_t f;
++} debug9_u;
++
++typedef struct _debug10_t {
++ unsigned long : 32;
++ } debug10_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug10_t f;
++} debug10_u;
++
++typedef struct _debug11_t {
++ unsigned long : 32;
++ } debug11_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug11_t f;
++} debug11_u;
++
++typedef struct _debug12_t {
++ unsigned long : 32;
++ } debug12_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug12_t f;
++} debug12_u;
++
++typedef struct _debug13_t {
++ unsigned long : 32;
++ } debug13_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug13_t f;
++} debug13_u;
++
++typedef struct _debug14_t {
++ unsigned long : 32;
++ } debug14_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug14_t f;
++} debug14_u;
++
++typedef struct _debug15_t {
++ unsigned long : 32;
++ } debug15_t;
++
++typedef union {
++ unsigned long val : 32;
++ debug15_t f;
++} debug15_u;
++
++typedef struct _eng_cntl_t {
++ unsigned long erc_reg_rd_ws : 1;
++ unsigned long erc_reg_wr_ws : 1;
++ unsigned long erc_idle_reg_wr : 1;
++ unsigned long dis_engine_triggers : 1;
++ unsigned long dis_rop_src_uses_dst_w_h : 1;
++ unsigned long dis_src_uses_dst_dirmaj : 1;
++ unsigned long : 6;
++ unsigned long force_3dclk_when_2dclk : 1;
++ unsigned long : 19;
++ } eng_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ eng_cntl_t f;
++} eng_cntl_u;
++
++typedef struct _eng_perf_cnt_t {
++ unsigned long perf_cnt : 20;
++ unsigned long perf_sel : 4;
++ unsigned long perf_en : 1;
++ unsigned long : 3;
++ unsigned long perf_clr : 1;
++ unsigned long : 3;
++ } eng_perf_cnt_t;
++
++typedef union {
++ unsigned long val : 32;
++ eng_perf_cnt_t f;
++} eng_perf_cnt_u;
++
++typedef struct _idct_runs_t {
++ unsigned long idct_runs_3 : 8;
++ unsigned long idct_runs_2 : 8;
++ unsigned long idct_runs_1 : 8;
++ unsigned long idct_runs_0 : 8;
++ } idct_runs_t;
++
++typedef union {
++ unsigned long val : 32;
++ idct_runs_t f;
++} idct_runs_u;
++
++typedef struct _idct_levels_t {
++ unsigned long idct_level_hi : 16;
++ unsigned long idct_level_lo : 16;
++ } idct_levels_t;
++
++typedef union {
++ unsigned long val : 32;
++ idct_levels_t f;
++} idct_levels_u;
++
++typedef struct _idct_control_t {
++ unsigned long idct_ctl_luma_rd_format : 2;
++ unsigned long idct_ctl_chroma_rd_format : 2;
++ unsigned long idct_ctl_scan_pattern : 1;
++ unsigned long idct_ctl_intra : 1;
++ unsigned long idct_ctl_flush : 1;
++ unsigned long idct_ctl_passthru : 1;
++ unsigned long idct_ctl_sw_reset : 1;
++ unsigned long idct_ctl_constreq : 1;
++ unsigned long idct_ctl_scramble : 1;
++ unsigned long idct_ctl_alt_scan : 1;
++ unsigned long : 20;
++ } idct_control_t;
++
++typedef union {
++ unsigned long val : 32;
++ idct_control_t f;
++} idct_control_u;
++
++typedef struct _idct_auth_control_t {
++ unsigned long control_bits : 32;
++ } idct_auth_control_t;
++
++typedef union {
++ unsigned long val : 32;
++ idct_auth_control_t f;
++} idct_auth_control_u;
++
++typedef struct _idct_auth_t {
++ unsigned long auth : 32;
++ } idct_auth_t;
++
++typedef union {
++ unsigned long val : 32;
++ idct_auth_t f;
++} idct_auth_u;
++
++typedef struct _mem_cntl_t {
++ unsigned long : 1;
++ unsigned long en_mem_ch1 : 1;
++ unsigned long en_mem_ch2 : 1;
++ unsigned long int_mem_mapping : 1;
++ unsigned long : 28;
++ } mem_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ mem_cntl_t f;
++} mem_cntl_u;
++
++typedef struct _mem_arb_t {
++ unsigned long disp_time_slot : 4;
++ unsigned long disp_timer : 4;
++ unsigned long arb_option : 1;
++ unsigned long : 23;
++ } mem_arb_t;
++
++typedef union {
++ unsigned long val : 32;
++ mem_arb_t f;
++} mem_arb_u;
++
++typedef struct _mc_fb_location_t {
++ unsigned long mc_fb_start : 16;
++ unsigned long mc_fb_top : 16;
++ } mc_fb_location_t;
++
++typedef union {
++ unsigned long val : 32;
++ mc_fb_location_t f;
++} mc_fb_location_u;
++
++typedef struct _mem_ext_cntl_t {
++ unsigned long mem_ext_enable : 1;
++ unsigned long mem_ap_enable : 1;
++ unsigned long mem_addr_mapping : 2;
++ unsigned long mem_wdoe_cntl : 2;
++ unsigned long mem_wdoe_extend : 1;
++ unsigned long : 1;
++ unsigned long mem_page_timer : 8;
++ unsigned long mem_dynamic_cke : 1;
++ unsigned long mem_sdram_tri_en : 1;
++ unsigned long mem_self_refresh_en : 1;
++ unsigned long mem_power_down : 1;
++ unsigned long mem_hw_power_down_en : 1;
++ unsigned long mem_power_down_stat : 1;
++ unsigned long : 3;
++ unsigned long mem_pd_mck : 1;
++ unsigned long mem_pd_ma : 1;
++ unsigned long mem_pd_mdq : 1;
++ unsigned long mem_tristate_mck : 1;
++ unsigned long mem_tristate_ma : 1;
++ unsigned long mem_tristate_mcke : 1;
++ unsigned long mem_invert_mck : 1;
++ } mem_ext_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ mem_ext_cntl_t f;
++} mem_ext_cntl_u;
++
++typedef struct _mc_ext_mem_location_t {
++ unsigned long mc_ext_mem_start : 16;
++ unsigned long mc_ext_mem_top : 16;
++ } mc_ext_mem_location_t;
++
++typedef union {
++ unsigned long val : 32;
++ mc_ext_mem_location_t f;
++} mc_ext_mem_location_u;
++
++typedef struct _mem_ext_timing_cntl_t {
++ unsigned long mem_trp : 2;
++ unsigned long mem_trcd : 2;
++ unsigned long mem_tras : 3;
++ unsigned long : 1;
++ unsigned long mem_trrd : 2;
++ unsigned long mem_tr2w : 2;
++ unsigned long mem_twr : 2;
++ unsigned long : 4;
++ unsigned long mem_twr_mode : 1;
++ unsigned long : 1;
++ unsigned long mem_refresh_dis : 1;
++ unsigned long : 3;
++ unsigned long mem_refresh_rate : 8;
++ } mem_ext_timing_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ mem_ext_timing_cntl_t f;
++} mem_ext_timing_cntl_u;
++
++typedef struct _mem_sdram_mode_reg_t {
++ unsigned long mem_mode_reg : 14;
++ unsigned long : 2;
++ unsigned long mem_read_latency : 2;
++ unsigned long mem_schmen_latency : 2;
++ unsigned long mem_cas_latency : 2;
++ unsigned long mem_schmen_extend : 1;
++ unsigned long : 8;
++ unsigned long mem_sdram_reset : 1;
++ } mem_sdram_mode_reg_t;
++
++typedef union {
++ unsigned long val : 32;
++ mem_sdram_mode_reg_t f;
++} mem_sdram_mode_reg_u;
++
++typedef struct _mem_io_cntl_t {
++ unsigned long mem_sn_mck : 4;
++ unsigned long mem_sn_ma : 4;
++ unsigned long mem_sn_mdq : 4;
++ unsigned long mem_srn_mck : 1;
++ unsigned long mem_srn_ma : 1;
++ unsigned long mem_srn_mdq : 1;
++ unsigned long : 1;
++ unsigned long mem_sp_mck : 4;
++ unsigned long mem_sp_ma : 4;
++ unsigned long mem_sp_mdq : 4;
++ unsigned long mem_srp_mck : 1;
++ unsigned long mem_srp_ma : 1;
++ unsigned long mem_srp_mdq : 1;
++ unsigned long : 1;
++ } mem_io_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ mem_io_cntl_t f;
++} mem_io_cntl_u;
++
++typedef struct _mc_debug_t {
++ unsigned long mc_debug : 32;
++ } mc_debug_t;
++
++typedef union {
++ unsigned long val : 32;
++ mc_debug_t f;
++} mc_debug_u;
++
++typedef struct _mc_bist_ctrl_t {
++ unsigned long mc_bist_ctrl : 32;
++ } mc_bist_ctrl_t;
++
++typedef union {
++ unsigned long val : 32;
++ mc_bist_ctrl_t f;
++} mc_bist_ctrl_u;
++
++typedef struct _mc_bist_collar_read_t {
++ unsigned long mc_bist_collar_read : 32;
++ } mc_bist_collar_read_t;
++
++typedef union {
++ unsigned long val : 32;
++ mc_bist_collar_read_t f;
++} mc_bist_collar_read_u;
++
++typedef struct _tc_mismatch_t {
++ unsigned long tc_mismatch : 24;
++ unsigned long : 8;
++ } tc_mismatch_t;
++
++typedef union {
++ unsigned long val : 32;
++ tc_mismatch_t f;
++} tc_mismatch_u;
++
++typedef struct _mc_perf_mon_cntl_t {
++ unsigned long clr_perf : 1;
++ unsigned long en_perf : 1;
++ unsigned long : 2;
++ unsigned long perf_op_a : 2;
++ unsigned long perf_op_b : 2;
++ unsigned long : 8;
++ unsigned long monitor_period : 8;
++ unsigned long perf_count_a_overflow : 1;
++ unsigned long perf_count_b_overflow : 1;
++ unsigned long : 6;
++ } mc_perf_mon_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ mc_perf_mon_cntl_t f;
++} mc_perf_mon_cntl_u;
++
++typedef struct _mc_perf_counters_t {
++ unsigned long mc_perf_counter_a : 16;
++ unsigned long mc_perf_counter_b : 16;
++ } mc_perf_counters_t;
++
++typedef union {
++ unsigned long val : 32;
++ mc_perf_counters_t f;
++} mc_perf_counters_u;
++
++typedef struct _wait_until_t {
++ unsigned long wait_crtc_pflip : 1;
++ unsigned long wait_re_crtc_vline : 1;
++ unsigned long wait_fe_crtc_vline : 1;
++ unsigned long wait_crtc_vline : 1;
++ unsigned long wait_dma_viph0_idle : 1;
++ unsigned long wait_dma_viph1_idle : 1;
++ unsigned long wait_dma_viph2_idle : 1;
++ unsigned long wait_dma_viph3_idle : 1;
++ unsigned long wait_dma_vid_idle : 1;
++ unsigned long wait_dma_gui_idle : 1;
++ unsigned long wait_cmdfifo : 1;
++ unsigned long wait_ov0_flip : 1;
++ unsigned long wait_ov0_slicedone : 1;
++ unsigned long : 1;
++ unsigned long wait_2d_idle : 1;
++ unsigned long wait_3d_idle : 1;
++ unsigned long wait_2d_idleclean : 1;
++ unsigned long wait_3d_idleclean : 1;
++ unsigned long wait_host_idleclean : 1;
++ unsigned long wait_extern_sig : 1;
++ unsigned long cmdfifo_entries : 7;
++ unsigned long : 3;
++ unsigned long wait_both_crtc_pflip : 1;
++ unsigned long eng_display_select : 1;
++ } wait_until_t;
++
++typedef union {
++ unsigned long val : 32;
++ wait_until_t f;
++} wait_until_u;
++
++typedef struct _isync_cntl_t {
++ unsigned long isync_any2d_idle3d : 1;
++ unsigned long isync_any3d_idle2d : 1;
++ unsigned long isync_trig2d_idle3d : 1;
++ unsigned long isync_trig3d_idle2d : 1;
++ unsigned long isync_wait_idlegui : 1;
++ unsigned long isync_cpscratch_idlegui : 1;
++ unsigned long : 26;
++ } isync_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ isync_cntl_t f;
++} isync_cntl_u;
++
++typedef struct _rbbm_guicntl_t {
++ unsigned long host_data_swap : 2;
++ unsigned long : 30;
++ } rbbm_guicntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ rbbm_guicntl_t f;
++} rbbm_guicntl_u;
++
++typedef struct _rbbm_status_t {
++ unsigned long cmdfifo_avail : 7;
++ unsigned long : 1;
++ unsigned long hirq_on_rbb : 1;
++ unsigned long cprq_on_rbb : 1;
++ unsigned long cfrq_on_rbb : 1;
++ unsigned long hirq_in_rtbuf : 1;
++ unsigned long cprq_in_rtbuf : 1;
++ unsigned long cfrq_in_rtbuf : 1;
++ unsigned long cf_pipe_busy : 1;
++ unsigned long eng_ev_busy : 1;
++ unsigned long cp_cmdstrm_busy : 1;
++ unsigned long e2_busy : 1;
++ unsigned long rb2d_busy : 1;
++ unsigned long rb3d_busy : 1;
++ unsigned long se_busy : 1;
++ unsigned long re_busy : 1;
++ unsigned long tam_busy : 1;
++ unsigned long tdm_busy : 1;
++ unsigned long pb_busy : 1;
++ unsigned long : 6;
++ unsigned long gui_active : 1;
++ } rbbm_status_t;
++
++typedef union {
++ unsigned long val : 32;
++ rbbm_status_t f;
++} rbbm_status_u;
++
++typedef struct _rbbm_cntl_t {
++ unsigned long rb_settle : 4;
++ unsigned long abortclks_hi : 3;
++ unsigned long : 1;
++ unsigned long abortclks_cp : 3;
++ unsigned long : 1;
++ unsigned long abortclks_cfifo : 3;
++ unsigned long : 2;
++ unsigned long cpq_data_swap : 1;
++ unsigned long : 3;
++ unsigned long no_abort_idct : 1;
++ unsigned long no_abort_bios : 1;
++ unsigned long no_abort_fb : 1;
++ unsigned long no_abort_cp : 1;
++ unsigned long no_abort_hi : 1;
++ unsigned long no_abort_hdp : 1;
++ unsigned long no_abort_mc : 1;
++ unsigned long no_abort_aic : 1;
++ unsigned long no_abort_vip : 1;
++ unsigned long no_abort_disp : 1;
++ unsigned long no_abort_cg : 1;
++ } rbbm_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ rbbm_cntl_t f;
++} rbbm_cntl_u;
++
++typedef struct _rbbm_soft_reset_t {
++ unsigned long soft_reset_cp : 1;
++ unsigned long soft_reset_hi : 1;
++ unsigned long reserved3 : 3;
++ unsigned long soft_reset_e2 : 1;
++ unsigned long reserved2 : 2;
++ unsigned long soft_reset_mc : 1;
++ unsigned long reserved1 : 2;
++ unsigned long soft_reset_disp : 1;
++ unsigned long soft_reset_cg : 1;
++ unsigned long : 19;
++ } rbbm_soft_reset_t;
++
++typedef union {
++ unsigned long val : 32;
++ rbbm_soft_reset_t f;
++} rbbm_soft_reset_u;
++
++typedef struct _nqwait_until_t {
++ unsigned long wait_gui_idle : 1;
++ unsigned long : 31;
++ } nqwait_until_t;
++
++typedef union {
++ unsigned long val : 32;
++ nqwait_until_t f;
++} nqwait_until_u;
++
++typedef struct _rbbm_debug_t {
++ unsigned long rbbm_debug : 32;
++ } rbbm_debug_t;
++
++typedef union {
++ unsigned long val : 32;
++ rbbm_debug_t f;
++} rbbm_debug_u;
++
++typedef struct _rbbm_cmdfifo_addr_t {
++ unsigned long cmdfifo_addr : 6;
++ unsigned long : 26;
++ } rbbm_cmdfifo_addr_t;
++
++typedef union {
++ unsigned long val : 32;
++ rbbm_cmdfifo_addr_t f;
++} rbbm_cmdfifo_addr_u;
++
++typedef struct _rbbm_cmdfifo_datal_t {
++ unsigned long cmdfifo_datal : 32;
++ } rbbm_cmdfifo_datal_t;
++
++typedef union {
++ unsigned long val : 32;
++ rbbm_cmdfifo_datal_t f;
++} rbbm_cmdfifo_datal_u;
++
++typedef struct _rbbm_cmdfifo_datah_t {
++ unsigned long cmdfifo_datah : 12;
++ unsigned long : 20;
++ } rbbm_cmdfifo_datah_t;
++
++typedef union {
++ unsigned long val : 32;
++ rbbm_cmdfifo_datah_t f;
++} rbbm_cmdfifo_datah_u;
++
++typedef struct _rbbm_cmdfifo_stat_t {
++ unsigned long cmdfifo_rptr : 6;
++ unsigned long : 2;
++ unsigned long cmdfifo_wptr : 6;
++ unsigned long : 18;
++ } rbbm_cmdfifo_stat_t;
++
++typedef union {
++ unsigned long val : 32;
++ rbbm_cmdfifo_stat_t f;
++} rbbm_cmdfifo_stat_u;
++
++typedef struct _clk_pin_cntl_t {
++ unsigned long osc_en : 1;
++ unsigned long osc_gain : 5;
++ unsigned long dont_use_xtalin : 1;
++ unsigned long xtalin_pm_en : 1;
++ unsigned long xtalin_dbl_en : 1;
++ unsigned long : 7;
++ unsigned long cg_debug : 16;
++ } clk_pin_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ clk_pin_cntl_t f;
++} clk_pin_cntl_u;
++
++typedef struct _pll_ref_fb_div_t {
++ unsigned long pll_ref_div : 4;
++ unsigned long : 4;
++ unsigned long pll_fb_div_int : 6;
++ unsigned long : 2;
++ unsigned long pll_fb_div_frac : 3;
++ unsigned long : 1;
++ unsigned long pll_reset_time : 4;
++ unsigned long pll_lock_time : 8;
++ } pll_ref_fb_div_t;
++
++typedef union {
++ unsigned long val : 32;
++ pll_ref_fb_div_t f;
++} pll_ref_fb_div_u;
++
++typedef struct _pll_cntl_t {
++ unsigned long pll_pwdn : 1;
++ unsigned long pll_reset : 1;
++ unsigned long pll_pm_en : 1;
++ unsigned long pll_mode : 1;
++ unsigned long pll_refclk_sel : 1;
++ unsigned long pll_fbclk_sel : 1;
++ unsigned long pll_tcpoff : 1;
++ unsigned long pll_pcp : 3;
++ unsigned long pll_pvg : 3;
++ unsigned long pll_vcofr : 1;
++ unsigned long pll_ioffset : 2;
++ unsigned long pll_pecc_mode : 2;
++ unsigned long pll_pecc_scon : 2;
++ unsigned long pll_dactal : 4;
++ unsigned long pll_cp_clip : 2;
++ unsigned long pll_conf : 3;
++ unsigned long pll_mbctrl : 2;
++ unsigned long pll_ring_off : 1;
++ } pll_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ pll_cntl_t f;
++} pll_cntl_u;
++
++typedef struct _sclk_cntl_t {
++ unsigned long sclk_src_sel : 2;
++ unsigned long : 2;
++ unsigned long sclk_post_div_fast : 4;
++ unsigned long sclk_clkon_hys : 3;
++ unsigned long sclk_post_div_slow : 4;
++ unsigned long disp_cg_ok2switch_en : 1;
++ unsigned long sclk_force_reg : 1;
++ unsigned long sclk_force_disp : 1;
++ unsigned long sclk_force_mc : 1;
++ unsigned long sclk_force_extmc : 1;
++ unsigned long sclk_force_cp : 1;
++ unsigned long sclk_force_e2 : 1;
++ unsigned long sclk_force_e3 : 1;
++ unsigned long sclk_force_idct : 1;
++ unsigned long sclk_force_bist : 1;
++ unsigned long busy_extend_cp : 1;
++ unsigned long busy_extend_e2 : 1;
++ unsigned long busy_extend_e3 : 1;
++ unsigned long busy_extend_idct : 1;
++ unsigned long : 3;
++ } sclk_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ sclk_cntl_t f;
++} sclk_cntl_u;
++
++typedef struct _pclk_cntl_t {
++ unsigned long pclk_src_sel : 2;
++ unsigned long : 2;
++ unsigned long pclk_post_div : 4;
++ unsigned long : 8;
++ unsigned long pclk_force_disp : 1;
++ unsigned long : 15;
++ } pclk_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ pclk_cntl_t f;
++} pclk_cntl_u;
++
++typedef struct _clk_test_cntl_t {
++ unsigned long testclk_sel : 4;
++ unsigned long : 3;
++ unsigned long start_check_freq : 1;
++ unsigned long tstcount_rst : 1;
++ unsigned long : 15;
++ unsigned long test_count : 8;
++ } clk_test_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ clk_test_cntl_t f;
++} clk_test_cntl_u;
++
++typedef struct _pwrmgt_cntl_t {
++ unsigned long pwm_enable : 1;
++ unsigned long : 1;
++ unsigned long pwm_mode_req : 2;
++ unsigned long pwm_wakeup_cond : 2;
++ unsigned long pwm_fast_noml_hw_en : 1;
++ unsigned long pwm_noml_fast_hw_en : 1;
++ unsigned long pwm_fast_noml_cond : 4;
++ unsigned long pwm_noml_fast_cond : 4;
++ unsigned long pwm_idle_timer : 8;
++ unsigned long pwm_busy_timer : 8;
++ } pwrmgt_cntl_t;
++
++typedef union {
++ unsigned long val : 32;
++ pwrmgt_cntl_t f;
++} pwrmgt_cntl_u;
++
++typedef struct _pwrmgt_status_t {
++ unsigned long pwm_mode : 2;
++ unsigned long : 30;
++ } pwrmgt_status_t;
++
++typedef union {
++ unsigned long val : 32;
++ pwrmgt_status_t f;
++} pwrmgt_status_u;
++
++typedef struct _cursor_offset_t {
++ unsigned long cur_offset : 24;
++ unsigned long cur_x_offset : 4;
++ unsigned long cur_y_offset : 4;
++} cursor_offset_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor_offset_t f;
++} cursor_offset_u;
++
++typedef struct _cursor_h_pos_t {
++ unsigned long cur_h_start : 10;
++ unsigned long : 6;
++ unsigned long cur_h_end : 10;
++ unsigned long : 5;
++ unsigned long cur_en : 1;
++} cursor_h_pos_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor_h_pos_t f;
++} cursor_h_pos_u;
++
++typedef struct _cursor_v_pos_t {
++ unsigned long cur_v_start : 10;
++ unsigned long : 6;
++ unsigned long cur_v_end : 10;
++ unsigned long : 6;
++} cursor_v_pos_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor_v_pos_t f;
++} cursor_v_pos_u;
++
++typedef struct _cursor_color_t {
++ unsigned long cur_color_r : 8;
++ unsigned long cur_color_g : 8;
++ unsigned long cur_color_b : 8;
++ unsigned long : 8;
++} cursor_color_t;
++
++typedef union {
++ unsigned long val : 32;
++ cursor_color_t f;
++} cursor_color_u;
++
++#endif
+--- /dev/null
++++ xorg-server-X11R7.1-1.1.0.work/hw/kdrive/imageon/imageon_stub.c
+@@ -0,0 +1,95 @@
++/*
++ * Copyright © 2007 Manuel Teira
++ *
++ * 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 Manuel Teira not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Manuel Teira makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * MANUEL TEIRA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL MANUEL TEIRA 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 "imageon.h"
++#include "imageon_regs.h"
++#include "klinux.h"
++
++extern W100CardEntry w100_cards[];
++
++static Bool
++FindW100(CARD16 vendor, CARD16 device, KdCardAttr * attr)
++{
++ CARD8 *mmio;
++ CARD32 chip_id;
++ Bool found = FALSE;
++
++ mmio = KdMapDevice(W100_REG_BASE, W100_REG_SIZE);
++ KdSetMappedMode((CARD32) mmio, W100_REG_SIZE,
++ KD_MAPPED_MODE_REGISTERS);
++
++ chip_id = (*(VOL32 *)(mmio + mmCHIP_ID));
++ if ((vendor | (device << 16)) == chip_id) {
++ ErrorF("(I) Found W100 Chip ID: %08x\n\n", chip_id);
++ attr->deviceID = device;
++ attr->vendorID = vendor;
++ found = TRUE;
++ }
++ KdUnmapDevice(mmio, W100_REG_SIZE);
++ return found;
++}
++
++
++void
++InitCard(char *name)
++{
++ int i;
++ W100CardEntry *entry;
++ KdCardAttr attr;
++
++ for (entry = w100_cards; entry->name; entry++) {
++ if (FindW100(entry->vendor, entry->device, &attr)) {
++ KdCardInfoAdd(&W100Funcs, &attr, 0);
++ break;
++ }
++ }
++}
++
++void
++InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
++{
++ KdInitOutput(pScreenInfo, argc, argv);
++}
++
++void
++InitInput(int argc, char **argv)
++{
++ KdInitInput(&LinuxMouseFuncs, &LinuxKeyboardFuncs);
++#ifdef TOUCHSCREEN
++ KdAddMouseDriver(&TsFuncs);
++#endif
++}
++
++void
++ddxUseMsg(void)
++{
++ KdUseMsg();
++}
++
++int
++ddxProcessArgument(int argc, char **argv, int i)
++{
++ return KdProcessArgument(argc, argv, i);
++}
+--- /dev/null
++++ xorg-server-X11R7.1-1.1.0.work/hw/kdrive/imageon/imageon_support.c
+@@ -0,0 +1,1438 @@
++/*
++ * Copyright © 2007 Manuel Teira
++ *
++ * 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 Manuel Teira not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Manuel Teira makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * MANUEL TEIRA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL MANUEL TEIRA 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 <sys/time.h>
++
++#include "imageon.h"
++#include "imageon_regs.h"
++#include "imageon_const.h"
++
++CARD8 W100SolidRop[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 */
++};
++
++CARD8 W100BltRop[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 */
++};
++
++extern W100ModeSpec w100_modes[];
++extern W100StartupInfo w100StartupInfo;
++
++void W100DisableDisplayUpdate(W100CardInfo *w100c)
++{
++ disp_db_buf_cntl_wr_u disp_db_buf_cntl;
++
++ disp_db_buf_cntl.f.db_buf_cntl = 30;
++ disp_db_buf_cntl.f.en_db_buf = 0;
++ disp_db_buf_cntl.f.update_db_buf = 0;
++ MMIO_OUT32(mmDISP_DB_BUF_CNTL, disp_db_buf_cntl.val);
++}
++
++void W100EnableDisplayUpdate(W100CardInfo *w100c)
++{
++ disp_db_buf_cntl_wr_u disp_db_buf_cntl;
++
++ disp_db_buf_cntl.f.db_buf_cntl = 30;
++ disp_db_buf_cntl.f.en_db_buf = 1;
++ disp_db_buf_cntl.f.update_db_buf = 1;
++ MMIO_OUT32(mmDISP_DB_BUF_CNTL, disp_db_buf_cntl.val);
++}
++
++void W100SetupGraphicEngine(W100CardInfo *w100c)
++{
++ eng_cntl_u eng_cntl;
++ sc_bottom_right_u bottomright;
++ rbbm_cntl_u rbbm_cntl;
++ dst_pitch_u dpitch;
++ dst_offset_u doffset;
++ src_pitch_u spitch;
++ src_offset_u soffset;
++ sc_top_left_u tl;
++ sc_bottom_right_u br;
++ src_sc_bottom_right_u srcbr;
++ dp_gui_master_cntl_u gmc;
++ dp_mix_u dp_mix;
++ dp_cntl_u dp_cntl;
++ dp_datatype_u dp_datatype;
++
++ DBG_IMAGEON(("W100SetupGraphicEngine(offset:%p, pitch:%d)\n",
++ w100c->hw_window.offset,
++ w100c->hw_window.width));
++
++ eng_cntl.val = MMIO_IN32(mmENG_CNTL);
++ eng_cntl.f.erc_reg_wr_ws = 0;
++ MMIO_OUT32(mmENG_CNTL, eng_cntl.val);
++
++ rbbm_cntl.val = 0;
++ rbbm_cntl.f.abortclks_hi = 4;
++ rbbm_cntl.f.abortclks_cp = 4;
++ rbbm_cntl.f.abortclks_cfifo = 2;
++ MMIO_OUT32(mmRBBM_CNTL, rbbm_cntl.val);
++
++ bottomright.val = 0;
++ bottomright.f.sc_bottom = 0x1fff;
++ bottomright.f.sc_right = 0x1fff;
++ MMIO_OUT32(mmDEFAULT_SC_BOTTOM_RIGHT, bottomright.val);
++
++ dpitch.val = 0;
++ dpitch.f.dst_pitch = w100c->hw_window.width;
++ MMIO_OUT32(mmDST_PITCH, dpitch.val);
++
++ doffset.val = 0;
++ doffset.f.dst_offset = (CARD32) w100c->hw_window.offset;
++ MMIO_OUT32(mmDST_OFFSET, doffset.val);
++
++ spitch.val = 0;
++ spitch.f.src_pitch = w100c->hw_window.width;
++ MMIO_OUT32(mmSRC_PITCH, spitch.val);
++ soffset.val = 0;
++ soffset.f.src_offset = (CARD32) w100c->hw_window.offset;
++ MMIO_OUT32(mmSRC_OFFSET, soffset.val);
++
++ tl.f.sc_left = tl.f.sc_top = 0;
++ br.f.sc_right = br.f.sc_bottom = 0x1fff;
++ MMIO_OUT32(mmSC_TOP_LEFT, tl.val);
++ MMIO_OUT32(mmSC_BOTTOM_RIGHT, br.val);
++
++ srcbr.f.sc_right = srcbr.f.sc_bottom = 0x1fff;
++ MMIO_OUT32(mmSRC_SC_BOTTOM_RIGHT, br.val);
++
++ gmc.val = dp_datatype.val = dp_mix.val = dp_cntl.val = 0;
++
++ dp_cntl.f.dst_x_dir = 1;
++ dp_cntl.f.dst_y_dir = 1;
++ dp_cntl.f.src_x_dir = 1;
++ dp_cntl.f.src_y_dir = 1;
++ dp_cntl.f.dst_major_x = 1;
++ dp_cntl.f.src_major_x = 1;
++ MMIO_OUT32(mmDP_CNTL, dp_cntl.val);
++
++ gmc.f.gmc_src_pitch_offset_cntl = 1;
++ gmc.f.gmc_dst_pitch_offset_cntl = 1;
++ gmc.f.gmc_src_clipping = 1;
++ gmc.f.gmc_dst_clipping = 1;
++ gmc.f.gmc_brush_datatype = DP_BRUSH_SOLIDCOLOR;
++ gmc.f.gmc_dst_datatype = DP_DST_16BPP_1555;
++ gmc.f.gmc_src_datatype = DP_SRC_SOLID_COLOR_BLT;
++ gmc.f.gmc_byte_pix_order = DP_PIX_ORDER_LSB2MSB;
++ gmc.f.gmc_default_sel = 0;
++ gmc.f.gmc_rop3 = W100SolidRop[GXcopy];
++ gmc.f.gmc_dp_src_source = DP_SRC_MEM_RECTANGULAR;
++ gmc.f.gmc_clr_cmp_fcn_dis = 1;
++ gmc.f.gmc_wr_msk_dis = 1;
++ gmc.f.gmc_dp_op = DP_OP_ROP;
++ MMIO_OUT32(mmDP_GUI_MASTER_CNTL, gmc.val);
++
++ dp_datatype.f.dp_dst_datatype = gmc.f.gmc_dst_datatype;
++ dp_datatype.f.dp_brush_datatype = gmc.f.gmc_brush_datatype;
++ dp_datatype.f.dp_src2_type = 0;
++ dp_datatype.f.dp_src2_datatype = gmc.f.gmc_src_datatype;
++ dp_datatype.f.dp_src_datatype = gmc.f.gmc_src_datatype;
++ dp_datatype.f.dp_byte_pix_order = gmc.f.gmc_byte_pix_order;
++ MMIO_OUT32(mmDP_DATATYPE, dp_datatype.val);
++
++ dp_mix.f.dp_src_source = gmc.f.gmc_dp_src_source;
++ dp_mix.f.dp_src2_source = gmc.f.gmc_dp_src_source;
++ dp_mix.f.dp_rop3 = gmc.f.gmc_rop3;
++ dp_mix.f.dp_op = gmc.f.gmc_dp_op;
++ MMIO_OUT32(mmDP_MIX, dp_mix.val);
++}
++
++void W100ResetGraphicEngine(W100CardInfo *w100c)
++{
++ rbbm_soft_reset_u sreset;
++ sclk_cntl_u sclk_cntl;
++ CARD32 restore_sclk;
++
++ ErrorF("->W100ResetGraphicEngine\n");
++ sclk_cntl.val = restore_sclk = MMIO_IN32(mmSCLK_CNTL);
++
++ sclk_cntl.f.sclk_force_e2 = 1;
++ sclk_cntl.f.sclk_force_e3 = 1;
++ sclk_cntl.f.sclk_force_idct = 1;
++ MMIO_OUT32(mmSCLK_CNTL, sclk_cntl.val);
++
++ sreset.val = 0;
++ sreset.f.soft_reset_e2 = 1;
++ MMIO_OUT32(mmRBBM_SOFT_RESET, sreset.val);
++ sreset.f.soft_reset_e2 = 0;
++ MMIO_OUT32(mmRBBM_SOFT_RESET, 0);
++
++ MMIO_OUT32(mmSCLK_CNTL, restore_sclk);
++ ErrorF("<-W100ResetGraphicEngine\n");
++}
++
++W100ModeSpec *W100GetModeSpec(W100CardInfo *w100c, W100Mode *mode)
++{
++ W100ModeSpec *modes;
++ for (modes = w100_modes; modes->width; modes++) {
++ if ((modes->bpp == mode->bpp) &&
++ (((modes->width == mode->width) &&
++ (modes->height == mode->height)) ||
++ ((modes->width == mode->height) &&
++ (modes->height == mode->width)))) {
++ return modes;
++ }
++ }
++ ErrorF("No matching mode spec for %dx%d@%d\n",
++ mode->width, mode->height, mode->bpp);
++ return NULL;
++}
++
++W100ModeSpec *W100GetBestMode(W100CardInfo *w100c, int width, int height)
++{
++ unsigned int best_x = 0xffffffff;
++ unsigned int best_y = 0xffffffff;
++ W100ModeSpec *modes, *best_mode = NULL;
++ for (modes = w100_modes; modes->width; modes++) {
++ if (modes->supported) {
++ if (((modes->width >= width) && (modes->width < best_x)) &&
++ ((modes->height >= height) && (modes->height < best_y))) {
++ best_mode = modes;
++ best_x = modes->width;
++ best_y = modes->height;
++ } else if (((modes->width >= height) && (modes->width < best_y)) &&
++ ((modes->height >= width) && (modes->height < best_x))) {
++ best_mode = modes;
++ best_x = modes->height;
++ best_y = modes->width;
++ }
++ }
++ }
++ if (!best_mode) {
++ ErrorF("No matching mode spec for %dx%d\n", width, height);
++ }
++ return best_mode;
++}
++
++Bool W100GetFbMode(W100CardInfo *w100c, W100Mode *mode)
++{
++ struct fb_var_screeninfo vinfo;
++ int i;
++
++ if (ioctl(w100c->fbdev.fd, FBIOGET_VSCREENINFO, &vinfo) != 0) {
++ ErrorF("Unable to get framebuffer mode\n");
++ return FALSE;
++ }
++
++ mode->width = vinfo.xres;
++ mode->height = vinfo.yres;
++ mode->bpp = vinfo.bits_per_pixel;
++}
++
++Bool W100CheckFbMode(W100CardInfo *w100c, W100ModeSpec *modes)
++{
++ struct fb_var_screeninfo vinfo;
++
++ vinfo.xres = vinfo.xres_virtual = modes->width;
++ vinfo.yres = vinfo.yres_virtual = modes->height;
++ vinfo.bits_per_pixel = modes->bpp;
++ vinfo.activate = FB_ACTIVATE_TEST;
++
++ if (ioctl(w100c->fbdev.fd, FBIOPUT_VSCREENINFO, &vinfo) != 0) {
++ ErrorF("(W) Mode %dx%d@%d not supported\n",
++ vinfo.xres,
++ vinfo.yres,
++ vinfo.bits_per_pixel);
++ return FALSE;
++ }
++ DBG_IMAGEON(("(I) Mode %dx%d@%d supported\n",
++ vinfo.xres,
++ vinfo.yres,
++ vinfo.bits_per_pixel));
++ return TRUE;
++}
++
++Bool W100SetFbMode(W100CardInfo *w100c)
++{
++ struct fb_var_screeninfo vinfo;
++ int randr = KdSubRotation(w100c->hw_window.randr, w100StartupInfo.randr);
++
++ if (randr & (RR_Rotate_0 | RR_Rotate_180)) {
++ vinfo.xres = vinfo.xres_virtual = w100c->hw_window.mode->width;
++ vinfo.yres = vinfo.yres_virtual = w100c->hw_window.mode->height;
++ } else {
++ vinfo.xres = vinfo.xres_virtual = w100c->hw_window.mode->height;
++ vinfo.yres = vinfo.yres_virtual = w100c->hw_window.mode->width;
++ }
++ vinfo.bits_per_pixel = w100c->hw_window.mode->bpp;
++ vinfo.activate = FB_ACTIVATE_NOW;
++ int flip = (w100c->hw_window.randr > RR_Rotate_90) ? 1 : 0;
++
++ DBG_IMAGEON(("Asking framebuffer for mode %dx%d@%d. Flipped:%d\n",
++ vinfo.xres, vinfo.yres, vinfo.bits_per_pixel, flip));
++ if (ioctl(w100c->fbdev.fd, FBIOPUT_VSCREENINFO, &vinfo) != 0) {
++ ErrorF("Error setting mode %dx%d@%d\n",
++ vinfo.xres,
++ vinfo.yres,
++ vinfo.bits_per_pixel);
++ return FALSE;
++ }
++ W100SysFsSet(w100c, W100_SYSFS_BASE "flip", flip ? "1" : "0");
++ return TRUE;
++}
++
++void W100SetupGraphicWindow(W100CardInfo *w100c)
++{
++ DBG_IMAGEON(("W100SetupGraphicWindow(width:%d,height:%d,randr:%d)\n",
++ w100c->hw_window.width,
++ w100c->hw_window.height,
++ w100c->hw_window.randr));
++
++ if (!W100SetFbMode(w100c)) {
++ ErrorF("Error Setting Graphic Window\n");
++ }
++}
++
++void W100EnableGraphicWindow(W100CardInfo *w100c)
++{
++ graphic_ctrl_u gc;
++
++ gc.val = MMIO_IN32(mmGRAPHIC_CTRL);
++ gc.f.en_graphic_crtc = 1;
++ gc.f.en_graphic_req = 1;
++ W100DisableDisplayUpdate(w100c);
++ MMIO_OUT32(mmGRAPHIC_CTRL, gc.val);
++ W100EnableDisplayUpdate(w100c);
++}
++
++void W100DisableGraphicWindow(W100CardInfo *w100c)
++{
++ graphic_ctrl_u gc;
++
++ gc.val = MMIO_IN32(mmGRAPHIC_CTRL);
++ gc.f.en_graphic_crtc = 0;
++ gc.f.en_graphic_req = 0;
++ W100DisableDisplayUpdate(w100c);
++ MMIO_OUT32(mmGRAPHIC_CTRL, gc.val);
++ W100EnableDisplayUpdate(w100c);
++}
++
++inline Bool W100WaitCmdFifoEntries(W100CardInfo *w100c, int entries)
++{
++ rbbm_status_u rbbmStatus;
++ TIMEOUT_LOCALS;
++
++ if (entries > W100_CMDFIFO_SIZE)
++ return FALSE;
++
++ if (entries <= w100c->cmdfifo_entries) {
++ w100c->cmdfifo_entries -= entries;
++ return TRUE;
++ }
++
++ WHILE_NOT_TIMEOUT(.2) {
++ rbbmStatus.val = MMIO_IN32(mmRBBM_STATUS);
++ w100c->cmdfifo_entries = rbbmStatus.f.cmdfifo_avail;
++ if (w100c->cmdfifo_entries >= entries) {
++ break;
++ }
++ }
++ if (TIMEDOUT()) {
++ ErrorF("Not enough CMDFIFO entries: %d (%d needed)\n",
++ w100c->cmdfifo_entries, entries);
++ return FALSE;
++ }
++ w100c->cmdfifo_entries -= entries;
++ return TRUE;
++}
++
++Bool W100WaitIdle(W100CardInfo *w100c)
++{
++ rbbm_status_u rbbm_status;
++ TIMEOUT_LOCALS;
++
++ DBG_IMAGEON(("W100WaitIdle\n"));
++ if (!W100WaitCmdFifoEntries(w100c, W100_CMDFIFO_SIZE)) {
++ return FALSE;
++ }
++
++ WHILE_NOT_TIMEOUT(.2) {
++ rbbm_status.val = MMIO_IN32(mmRBBM_STATUS);
++ if (rbbm_status.f.gui_active == 0) {
++ break;
++ }
++ }
++ if (TIMEDOUT()) {
++ ErrorF("Timeout waiting for idle. rbbm_status: 0x%08x\n"
++ " .cmdfifo_avail : %d\n"
++ " .cf_pipe_busy : %d\n"
++ " .eng_ev_busy : %d\n"
++ " .cp_cmdstrm_busy : %d\n"
++ " .e2_busy : %d\n"
++ " .rb2d_busy : %d\n"
++ " .rb3d_busy : %d\n"
++ " .se_busy : %d\n"
++ " .re_busy : %d\n"
++ " .tam_busy : %d\n"
++ " .tdm_busy : %d\n"
++ " .pb_busy : %d\n"
++ " .gui_active : %d\n",
++ rbbm_status.val,
++ rbbm_status.f.cmdfifo_avail,
++ rbbm_status.f.cf_pipe_busy,
++ rbbm_status.f.eng_ev_busy,
++ rbbm_status.f.cp_cmdstrm_busy,
++ rbbm_status.f.e2_busy,
++ rbbm_status.f.rb2d_busy,
++ rbbm_status.f.rb3d_busy,
++ rbbm_status.f.se_busy,
++ rbbm_status.f.re_busy,
++ rbbm_status.f.tam_busy,
++ rbbm_status.f.tdm_busy,
++ rbbm_status.f.pb_busy,
++ rbbm_status.f.gui_active);
++ ErrorF("Last context: src(datatype:%d,pitch:%d,offset:0x%08x)\n"
++ " dst(datatype:%d,pitch:%d,offset:0x%08x)\n"
++ " xform(dx:%d,dy:%d)\n"
++ " mask(pm:0x%08x,enable:%d)\n",
++ w100c->ctx.src.datatype,
++ w100c->ctx.src.pitch,
++ w100c->ctx.src.offset,
++ w100c->ctx.dst.datatype,
++ w100c->ctx.dst.pitch,
++ w100c->ctx.dst.offset,
++ w100c->ctx.xform.dx,
++ w100c->ctx.xform.dy,
++ w100c->ctx.mask.pm,
++ w100c->ctx.mask.enable);
++
++ return FALSE;
++ }
++
++ return TRUE;
++}
++
++void W100ResetContext(W100CardInfo *w100c)
++{
++ w100c->ctx.dst.datatype = DP_DST_16BPP_1555;
++ w100c->ctx.dst.pitch = 0;
++ w100c->ctx.dst.offset = 0;
++ w100c->ctx.dst.videomem = 0;
++
++ w100c->ctx.src.datatype = DP_SRC_COLOR_SAME_AS_DST;
++ w100c->ctx.src.pitch = 0;
++ w100c->ctx.src.offset = 0;
++ w100c->ctx.src.videomem = 0;
++
++ w100c->ctx.xform.dx = 0;
++ w100c->ctx.xform.dy = 0;
++ w100c->ctx.xform.randr = 0;
++ w100c->ctx.xform.mirror = FALSE;
++ w100c->ctx.xform.dataPath = 0x0000003f;
++
++ w100c->ctx.mask.pm = 0;
++ w100c->ctx.mask.enable = FALSE;
++}
++
++CARD32 W100ComputeSolidGmc(W100CardInfo *w100c, CARD8 alu)
++{
++ dp_gui_master_cntl_u gmc;
++
++ gmc.val = 0;
++ gmc.f.gmc_dst_pitch_offset_cntl = 1;
++ gmc.f.gmc_dst_clipping = 0;
++ gmc.f.gmc_brush_datatype = DP_BRUSH_SOLIDCOLOR;
++ gmc.f.gmc_dst_datatype = w100c->ctx.dst.datatype;
++ gmc.f.gmc_dp_op = DP_OP_ROP;
++ gmc.f.gmc_byte_pix_order = DP_PIX_ORDER_LSB2MSB;
++ gmc.f.gmc_dp_src_source = DP_SRC_MEM_RECTANGULAR;
++ gmc.f.gmc_rop3 = W100SolidRop[alu];
++ gmc.f.gmc_clr_cmp_fcn_dis = 1;
++ if (w100c->ctx.mask.enable) {
++ gmc.f.gmc_wr_msk_dis = 0;
++ } else {
++ gmc.f.gmc_wr_msk_dis = 1;
++ }
++ return gmc.val;
++}
++
++CARD32 W100ComputeCopyGmc(W100CardInfo *w100c, CARD8 alu)
++{
++ dp_gui_master_cntl_u gmc;
++
++ gmc.val = 0;
++ gmc.f.gmc_src_pitch_offset_cntl = 1;
++ gmc.f.gmc_dst_pitch_offset_cntl = 1;
++ gmc.f.gmc_dst_clipping = 0;
++ gmc.f.gmc_src_clipping = 0;
++ gmc.f.gmc_src_datatype = w100c->ctx.src.datatype;
++ gmc.f.gmc_dp_src_source = DP_SRC_MEM_RECTANGULAR;
++ gmc.f.gmc_brush_datatype = DP_BRUSH_NONE;
++ gmc.f.gmc_dst_datatype = w100c->ctx.dst.datatype;
++ gmc.f.gmc_dp_op = DP_OP_ROP;
++ gmc.f.gmc_byte_pix_order = DP_PIX_ORDER_LSB2MSB;
++ gmc.f.gmc_rop3 = W100BltRop[alu];
++ gmc.f.gmc_clr_cmp_fcn_dis = 1;
++ if (w100c->ctx.mask.enable) {
++ gmc.f.gmc_wr_msk_dis = 0;
++ } else {
++ gmc.f.gmc_wr_msk_dis = 1;
++ }
++ return gmc.val;
++}
++
++CARD32 W100ComputeAritGmc(W100CardInfo *w100c, CARD8 alu)
++{
++ dp_gui_master_cntl_u gmc;
++
++ gmc.val = 0;
++ gmc.f.gmc_src_pitch_offset_cntl = 1;
++ gmc.f.gmc_dst_pitch_offset_cntl = 1;
++ gmc.f.gmc_dst_clipping = 0;
++ gmc.f.gmc_src_clipping = 0;
++ gmc.f.gmc_src_datatype = w100c->ctx.src.datatype;
++ gmc.f.gmc_dst_datatype = w100c->ctx.dst.datatype;
++ gmc.f.gmc_dp_src_source = DP_SRC_MEM_RECTANGULAR;
++ gmc.f.gmc_brush_datatype = DP_BRUSH_NONE;
++ gmc.f.gmc_dp_op = DP_OP_ARITHMETIC;
++ gmc.f.gmc_byte_pix_order = DP_PIX_ORDER_LSB2MSB;
++ gmc.f.gmc_rop3 = W100BltRop[alu];
++ gmc.f.gmc_clr_cmp_fcn_dis = 1;
++ if (w100c->ctx.mask.enable) {
++ gmc.f.gmc_wr_msk_dis = 0;
++ } else {
++ gmc.f.gmc_wr_msk_dis = 1;
++ }
++ return gmc.val;
++}
++
++void W100SetXForm(W100CardInfo *w100c, int dx, int dy)
++{
++ dp_cntl_u dp_cntl;
++
++ w100c->ctx.xform.dx = dx;
++ w100c->ctx.xform.dy = dy;
++
++ dp_cntl.val = 0;
++ dp_cntl.f.src_x_dir = 1;
++ dp_cntl.f.src_y_dir = 1;
++ dp_cntl.f.src_major_x = 1;
++ dp_cntl.f.dst_major_x = 1;
++
++ if (dx >= 0) {
++ dp_cntl.f.dst_x_dir = 1;
++ } else {
++ dp_cntl.f.dst_x_dir = 0;
++ }
++ if (dy >= 0) {
++ dp_cntl.f.dst_y_dir = 1;
++ } else {
++ dp_cntl.f.dst_y_dir = 0;
++ }
++ w100c->ctx.xform.dataPath = dp_cntl.val;
++}
++
++void W100SetRotation(W100CardInfo *w100c,
++ int randr,
++ Bool mirror)
++{
++ dp_cntl_u dp_cntl;
++ w100c->ctx.xform.randr = randr;
++ w100c->ctx.xform.mirror = mirror;
++ dp_cntl.val = 0;
++ dp_cntl.f.src_x_dir = 1;
++ dp_cntl.f.src_y_dir = 1;
++ dp_cntl.f.src_major_x = 1;
++
++
++ switch (randr & RR_Rotate_All) {
++ case RR_Rotate_0:
++ dp_cntl.f.dst_x_dir = mirror ? 0 : 1;
++ dp_cntl.f.dst_y_dir = 1;
++ dp_cntl.f.dst_major_x = 1;
++ break;
++ case RR_Rotate_90:
++ dp_cntl.f.dst_x_dir = 0;
++ dp_cntl.f.dst_y_dir = mirror ? 0 : 1;
++ dp_cntl.f.dst_major_x = 0;
++ break;
++ case RR_Rotate_180:
++ dp_cntl.f.dst_x_dir = mirror ? 1 : 0;
++ dp_cntl.f.dst_y_dir = 0;
++ dp_cntl.f.dst_major_x = 1;
++ break;
++ case RR_Rotate_270:
++ dp_cntl.f.dst_x_dir = 1;
++ dp_cntl.f.dst_y_dir = mirror ? 1 : 0;
++ dp_cntl.f.dst_major_x = 0;
++ break;
++ }
++ w100c->ctx.xform.dataPath = dp_cntl.val;
++}
++
++void W100SetPixelMask(W100CardInfo *w100c, Pixel mask)
++{
++ if (mask != 0xffffffff) {
++ w100c->ctx.mask.enable = TRUE;
++ w100c->ctx.mask.pm = mask;
++ } else {
++ w100c->ctx.mask.enable = FALSE;
++ }
++
++}
++
++Bool W100SetSource(KdScreenInfo *screen,
++ CARD32 srcPitch,
++ CARD32 srcOffset,
++ CARD8 bpp)
++{
++ W100CardInfo(screen);
++ int i;
++ w100c->ctx.src.pitch = srcPitch * 8 / bpp;
++ switch (bpp) {
++ case 1:
++ w100c->ctx.src.datatype = DP_SRC_1BPP_OPA;
++ break;
++ case 4:
++ w100c->ctx.src.datatype = DP_SRC_4BPP;
++ break;
++ case 12:
++ w100c->ctx.src.datatype = DP_SRC_12BPP_PACKED;
++ break;
++ case 8:
++ case 16:
++ w100c->ctx.src.datatype = DP_SRC_COLOR_SAME_AS_DST;
++ break;
++ default:
++ return FALSE;
++ }
++
++ for (i = 0; i < screen->num_videomem_areas; i++) {
++ KdVideoMemArea *vidmem = screen->videomem_areas[i];
++ if ((((CARD8*)srcOffset) >= vidmem->base) &&
++ (((CARD8*)srcOffset) <= (vidmem->base + vidmem->size))) {
++ w100c->ctx.src.offset = (CARD32) W100_HOST2CARD(srcOffset);
++ if (w100c->last_src_videomem != i) {
++ W100WaitIdle(w100c);
++ }
++ w100c->last_src_videomem = i;
++ DBG_IMAGEON(("Setting src(pitch:%d,offset:0x%08x,type:%d)\n",
++ w100c->ctx.src.pitch,
++ w100c->ctx.src.offset,
++ w100c->ctx.src.datatype));
++ return TRUE;
++ }
++ }
++ return FALSE;
++}
++
++Bool W100SetDestination(KdScreenInfo *screen,
++ CARD32 dstPitch,
++ CARD32 dstOffset,
++ CARD8 bpp)
++{
++ W100CardInfo(screen);
++ int i;
++ w100c->ctx.dst.pitch = dstPitch * 8 / bpp;
++ switch (bpp) {
++ case 8:
++ w100c->ctx.dst.datatype = DP_DST_8BPP;
++ break;
++ case 16:
++ w100c->ctx.dst.datatype = DP_DST_16BPP_1555;
++ break;
++ default:
++ return FALSE;
++ }
++
++ for (i = 0; i < screen->num_videomem_areas; i++) {
++ KdVideoMemArea *vidmem = screen->videomem_areas[i];
++ if ((((CARD8*)dstOffset) >= vidmem->base) &&
++ (((CARD8*)dstOffset) <= (vidmem->base + vidmem->size))) {
++ w100c->ctx.dst.offset = (CARD32) W100_HOST2CARD(dstOffset);
++ if (w100c->last_dst_videomem != i) {
++ W100WaitIdle(w100c);
++ }
++ w100c->last_dst_videomem = i;
++ DBG_IMAGEON(("Setting dst(pitch:%d,offset:0x%08x,type:%d)\n",
++ w100c->ctx.dst.pitch,
++ w100c->ctx.dst.offset,
++ w100c->ctx.dst.datatype));
++ return TRUE;
++ }
++ }
++ return FALSE;
++}
++
++Bool W100SetSourcePixmap(PixmapPtr pPix)
++{
++ KdScreenPriv(pPix->drawable.pScreen);
++
++ return W100SetSource(pScreenPriv->screen,
++ pPix->devKind,
++ (CARD32) pPix->devPrivate.ptr,
++ pPix->drawable.bitsPerPixel);
++}
++
++Bool W100SetDestinationPixmap(PixmapPtr pPix)
++{
++ KdScreenPriv(pPix->drawable.pScreen);
++
++ return W100SetDestination(pScreenPriv->screen,
++ pPix->devKind,
++ (CARD32) pPix->devPrivate.ptr,
++ pPix->drawable.bitsPerPixel);
++}
++
++int W100MapToHWX(W100CardInfo *w100c,
++ int x, int y, int w, int h)
++{
++ int tx;
++ switch (w100c->hw_window.randr & RR_Rotate_All) {
++ case RR_Rotate_0:
++ tx = x;
++ break;
++ case RR_Rotate_90:
++ tx = w100c->hw_window.height - (y + h);
++ break;
++ case RR_Rotate_180:
++ tx = w100c->hw_window.width - (x + w);
++ break;
++ case RR_Rotate_270:
++ tx = y;
++ break;
++ default:
++ tx = x;
++ }
++ return tx;
++}
++
++int W100MapToHWY(W100CardInfo *w100c,
++ int x, int y, int w, int h)
++{
++ int ty;
++ switch (w100c->hw_window.randr & RR_Rotate_All) {
++ case RR_Rotate_0:
++ ty = y;
++ break;
++ case RR_Rotate_90:
++ ty = x;
++ break;
++ case RR_Rotate_180:
++ ty = w100c->hw_window.height - (y + h);
++ break;
++ case RR_Rotate_270:
++ ty = w100c->hw_window.width - (x + w);
++ break;
++ default:
++ ty = y;
++ }
++ return ty;
++}
++
++int W100MapToHWW(W100CardInfo *w100c,
++ int x, int y, int w, int h)
++{
++ int tw;
++ switch (w100c->hw_window.randr & RR_Rotate_All) {
++ case RR_Rotate_0:
++ case RR_Rotate_180:
++ tw = w;
++ break;
++ case RR_Rotate_90:
++ case RR_Rotate_270:
++ tw = h;
++ break;
++ }
++ return tw;
++}
++
++int W100MapToHWH(W100CardInfo *w100c,
++ int x, int y, int w, int h)
++{
++ int th;
++ switch (w100c->hw_window.randr & RR_Rotate_All) {
++ case RR_Rotate_0:
++ case RR_Rotate_180:
++ th = h;
++ break;
++ case RR_Rotate_90:
++ case RR_Rotate_270:
++ th = w;
++ break;
++ }
++ return th;
++}
++
++CARD16 W100XformX(W100CardInfo *w100c,
++ CARD16 x, CARD16 y, CARD16 w, CARD16 h)
++{
++ CARD16 tx;
++ switch (w100c->ctx.xform.randr & RR_Rotate_All) {
++ case RR_Rotate_0:
++ if (w100c->ctx.xform.mirror) {
++ tx = x + w - 1;
++ } else {
++ tx = x;
++ }
++ break;
++ case RR_Rotate_90:
++ tx = x + h - 1;
++ break;
++ case RR_Rotate_180:
++ if (w100c->ctx.xform.mirror) {
++ tx = x;
++ } else {
++ tx = x + w - 1;
++ }
++ break;
++ case RR_Rotate_270:
++ default:
++ tx = x;
++ break;
++ }
++ return tx;
++}
++
++CARD16 W100XformY(W100CardInfo *w100c,
++ CARD16 x, CARD16 y, CARD16 w, CARD16 h)
++{
++ CARD16 ty;
++ switch (w100c->ctx.xform.randr & RR_Rotate_All) {
++ case RR_Rotate_0:
++ ty = y;
++ break;
++ case RR_Rotate_90:
++ if (w100c->ctx.xform.mirror) {
++ ty = y + w - 1;
++ } else {
++ ty = y;
++ }
++ break;
++ case RR_Rotate_180:
++ ty = y + h - 1;
++ break;
++ case RR_Rotate_270:
++ default:
++ if (w100c->ctx.xform.mirror) {
++ ty = y;
++ } else {
++ ty = y + w - 1;
++ }
++ break;
++ }
++ return ty;
++}
++
++CARD16 W100XformW(W100CardInfo *w100c,
++ CARD16 x, CARD16 y, CARD16 w, CARD16 h)
++{
++ CARD16 tw;
++
++ switch (w100c->ctx.xform.randr & RR_Rotate_All) {
++ case RR_Rotate_0:
++ case RR_Rotate_180:
++ default:
++ tw = w;
++ break;
++ case RR_Rotate_90:
++ case RR_Rotate_270:
++ tw = h;
++ break;
++ }
++ return tw;
++}
++
++CARD16 W100XformH(W100CardInfo *w100c,
++ CARD16 x, CARD16 y, CARD16 w, CARD16 h)
++{
++ CARD16 th;
++
++ switch (w100c->ctx.xform.randr & RR_Rotate_All) {
++ case RR_Rotate_0:
++ case RR_Rotate_180:
++ default:
++ th = h;
++ break;
++ case RR_Rotate_90:
++ case RR_Rotate_270:
++ th = w;
++ break;
++ }
++ return th;
++}
++
++CARD8 W100GetScaler(CARD16 dstsize, CARD16 srcsize)
++{
++ return W100_MAX(1, W100_MIN(31, ((16 * srcsize) + dstsize - 1) / dstsize));
++
++}
++
++CARD16 W100ApplyScaler(CARD16 srcsize, CARD8 scaler)
++{
++ return ((srcsize * 16) + (scaler - 1)) / scaler;
++}
++
++
++static void W100Blt(KdScreenInfo *screen,
++ int randr,
++ int bpp,
++ CARD32 srcOffset,
++ CARD16 srcW,
++ CARD16 srcH,
++ CARD16 srcPitch,
++ CARD32 dstOffset,
++ CARD16 dstPitch,
++ CARD16 dstX,
++ CARD16 dstY)
++{
++ ScreenPtr pScreen = screen->pScreen;
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ CARD16 x, y, w, h;
++ int fifoEntries = 9;
++ Bool hasXForm = FALSE;
++ eng_cntl_u eng_cntl;
++ src_x_y_u src_x_y;
++ dst_x_y_u dst_x_y;
++ src_width_u src_width;
++ src_height_u src_height;
++ dst_width_height_u dst_width_height;
++
++ DBG_IMAGEON(("W100Blt(randr:%d,bpp:%d,srcOffset:0x%08x,"
++ "srcW:%d,srcH:%d,srcPitch:%d,dstOffset:0x%08x,"
++ "dstPitch:%d,dstX:%d,dstY:%d)\n",
++ randr, bpp, srcOffset, srcW, srcH,
++ srcPitch, dstOffset, dstPitch, dstX, dstY));
++
++ if (randr & (RR_Rotate_90|RR_Rotate_270)) {
++ hasXForm = TRUE;
++ eng_cntl.val = w100c->regs.ENG_CNTL;
++ eng_cntl.f.dis_rop_src_uses_dst_w_h = 1;
++ eng_cntl.f.dis_src_uses_dst_dirmaj = 1;
++ fifoEntries += 4;
++ }
++
++ W100ResetContext(w100c);
++ W100SetRotation(w100c, randr, FALSE);
++ W100SetSource(screen, srcPitch, srcOffset, bpp);
++ W100SetDestination(screen, dstPitch, dstOffset, bpp);
++
++ x = W100XformX(w100c, dstX, dstY, srcW, srcH);
++ y = W100XformY(w100c, dstX, dstY, srcW, srcH);
++ w = W100XformW(w100c, dstX, dstY, srcW, srcH);
++ h = W100XformH(w100c, dstX, dstY, srcW, srcH);
++
++ src_x_y.f.src_y = 0;
++ src_x_y.f.src_x = 0;
++ dst_x_y.f.dst_x = x;
++ dst_x_y.f.dst_y = y;
++ src_width.f.src_width = srcW;
++ src_height.f.src_height = srcH;
++ dst_width_height.f.dst_height = h;
++ dst_width_height.f.dst_width_b0 = w & 0xff;
++ dst_width_height.f.dst_width_b1 = (w >> 8) & 0x3f;
++
++ if (W100WaitCmdFifoEntries(w100c, fifoEntries)) {
++ MMIO_OUT32(mmDST_PITCH, w100c->ctx.dst.pitch);
++ MMIO_OUT32(mmDST_OFFSET, w100c->ctx.dst.offset);
++ MMIO_OUT32(mmSRC_PITCH, w100c->ctx.src.pitch);
++ MMIO_OUT32(mmSRC_OFFSET, w100c->ctx.src.offset);
++ MMIO_OUT32(mmDP_GUI_MASTER_CNTL, W100ComputeCopyGmc(w100c, GXcopy));
++ MMIO_OUT32(mmDP_CNTL, w100c->ctx.xform.dataPath);
++ if (hasXForm) {
++ MMIO_OUT32(mmENG_CNTL, eng_cntl.val);
++ MMIO_OUT32(mmSRC_WIDTH, src_width.val);
++ MMIO_OUT32(mmSRC_HEIGHT, src_height.val);
++ }
++ MMIO_OUT32(mmSRC_X_Y, src_x_y.val);
++ MMIO_OUT32(mmDST_X_Y, dst_x_y.val);
++ MMIO_OUT32(mmDST_WIDTH_HEIGHT, dst_width_height.val);
++ /* Restore state */
++ if (hasXForm) {
++ MMIO_OUT32(mmENG_CNTL, w100c->regs.ENG_CNTL);
++ }
++ } else {
++ ErrorF("Unable to perform Blitting\n");
++ }
++}
++
++static void W100StretchBlt(KdScreenInfo *screen,
++ int randr,
++ int bpp,
++ CARD32 srcOffset,
++ CARD16 srcW,
++ CARD16 srcH,
++ CARD16 srcPitch,
++ CARD32 dstOffset,
++ CARD16 dstPitch,
++ CARD16 dstX,
++ CARD16 dstY,
++ CARD8 xscaler,
++ CARD8 yscaler)
++{
++ ScreenPtr pScreen = screen->pScreen;
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ CARD16 x, y, w, h, sw, sh;
++ Bool hasXForm = FALSE;
++ dp_datatype_u dp_datatype;
++ dp_mix_u dp_mix;
++ eng_cntl_u eng_cntl;
++ e2_arithmetic_cntl_u e2;
++ src_inc_u src_inc;
++ src_x_y_u src_x_y;
++ dst_x_y_u dst_x_y;
++ src_width_u src_width;
++ src_height_u src_height;
++ dst_width_height_u dst_width_height;
++ int firstStage = 10;
++ int secondStage = 10;
++
++ DBG_IMAGEON(("W100StretchBlt(randr:%d,bpp:%d,srcOffset:0x%08x,"
++ "srcW:%d,srcH:%d,srcPitch:%d,dstOffset:0x%08x,"
++ "dstPitch:%d,dstX:%d,dstY:%d,xscaler:%d,yscaler:%d)\n",
++ randr, bpp, srcOffset, srcW, srcH,
++ srcPitch, dstOffset, dstPitch,
++ dstX, dstY, xscaler, yscaler));
++
++ if (randr & (RR_Rotate_90|RR_Rotate_270)) {
++ hasXForm = TRUE;
++ eng_cntl.val = w100c->regs.ENG_CNTL;
++ eng_cntl.f.dis_rop_src_uses_dst_w_h = 1;
++ eng_cntl.f.dis_src_uses_dst_dirmaj = 1;
++ ++firstStage;
++ ++secondStage;
++ }
++
++ W100ResetContext(w100c);
++ W100SetRotation(w100c, randr, FALSE);
++ W100SetSource(screen, srcPitch, srcOffset, bpp);
++ W100SetDestination(screen, dstPitch, dstOffset, bpp);
++
++ src_inc.val = 0;
++ src_inc.f.src_xinc = xscaler;
++ src_inc.f.src_yinc = yscaler;
++
++ dp_datatype.val = 0;
++ dp_datatype.f.dp_brush_datatype = DP_BRUSH_SOLIDCOLOR;
++ dp_datatype.f.dp_dst_datatype = w100c->ctx.dst.datatype;
++ dp_datatype.f.dp_src_datatype = w100c->ctx.src.datatype;
++ dp_datatype.f.dp_byte_pix_order = DP_PIX_ORDER_LSB2MSB;
++
++ dp_mix.val = 0;
++ dp_mix.f.dp_op = DP_OP_ARITHMETIC;
++ dp_mix.f.dp_src_source = DP_SRC_MEM_RECTANGULAR;
++ dp_mix.f.dp_rop3 = W100BltRop[GXcopy];
++
++ e2.val = 0;
++ e2.f.opcode = E2_OPC_STRETCH_SRC2;
++ e2.f.srcblend = E2_SRCBLEND_ZERO;
++ e2.f.dstblend = E2_DSTBLEND_ZERO;
++
++ sw = W100ApplyScaler(srcW, xscaler);
++ sh = W100ApplyScaler(srcH, yscaler);
++
++ x = W100XformX(w100c, dstX, dstY, sw, sh);
++ y = W100XformY(w100c, dstX, dstY, sw, sh);
++ w = W100XformW(w100c, dstX, dstY, sw, sh);
++ h = W100XformH(w100c, dstX, dstY, sw, sh);
++
++ src_x_y.f.src_y = 0;
++ src_x_y.f.src_x = 0;
++ dst_x_y.f.dst_x = x;
++ dst_x_y.f.dst_y = y;
++ src_width.f.src_width = sw + 1;
++ src_height.f.src_height = sh;
++ dst_width_height.f.dst_height = h;
++ dst_width_height.f.dst_width_b0 = w & 0xff;
++ dst_width_height.f.dst_width_b1 = (w >> 8) & 0x3f;
++
++
++ if (W100WaitCmdFifoEntries(w100c, firstStage)) {
++ /* Set Source */
++ MMIO_OUT32(mmSRC_PITCH, w100c->ctx.src.pitch);
++ MMIO_OUT32(mmSRC_OFFSET, w100c->ctx.src.offset);
++
++ /* Set Destination */
++ MMIO_OUT32(mmDST_PITCH, w100c->ctx.dst.pitch);
++ MMIO_OUT32(mmDST_OFFSET, w100c->ctx.dst.offset);
++
++ /* Prepare for Stretch Operation */
++ MMIO_OUT32(mmDP_GUI_MASTER_CNTL, W100ComputeAritGmc(w100c, GXcopy));
++ MMIO_OUT32(mmDP_DATATYPE, dp_datatype.val);
++ MMIO_OUT32(mmDP_MIX, dp_mix.val);
++ MMIO_OUT32(mmE2_ARITHMETIC_CNTL, e2.val);
++
++ /* Set Data Trajectory */
++ if (hasXForm) {
++ MMIO_OUT32(mmENG_CNTL, eng_cntl.val);
++ }
++ MMIO_OUT32(mmDP_CNTL, w100c->ctx.xform.dataPath);
++ } else {
++ ErrorF("Error preparing for Stretch operation\n");
++ return;
++ }
++
++ if (W100WaitCmdFifoEntries(w100c, secondStage)) {
++ /* Perform blitting */
++ MMIO_OUT32(mmSRC_X_Y, src_x_y.val);
++ MMIO_OUT32(mmDST_X_Y, dst_x_y.val);
++ MMIO_OUT32(mmSRC_WIDTH, src_width.val);
++ MMIO_OUT32(mmSRC_HEIGHT, src_height.val);
++ MMIO_OUT32(mmSRC_INC, src_inc.val);
++ MMIO_OUT32(mmDST_WIDTH_HEIGHT, dst_width_height.val);
++ /* Restore state */
++ if (hasXForm) {
++ MMIO_OUT32(mmENG_CNTL, w100c->regs.ENG_CNTL);
++ }
++ } else {
++ ErrorF("Error performing Stretch operation\n");
++ }
++}
++
++static void W100ScaledBlt(KdScreenInfo *screen,
++ int randr,
++ int bpp,
++ CARD32 srcOffset,
++ CARD16 srcW,
++ CARD16 srcH,
++ CARD16 srcPitch,
++ CARD32 dstOffset,
++ CARD16 dstPitch,
++ CARD16 dstX,
++ CARD16 dstY,
++ CARD8 xscaler,
++ CARD8 yscaler)
++{
++ ScreenPtr pScreen = screen->pScreen;
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ CARD16 x, y, w, h, sw, sh;
++ Bool hasXForm = FALSE;
++ dp_datatype_u dp_datatype;
++ dp_mix_u dp_mix;
++ eng_cntl_u eng_cntl;
++ e2_arithmetic_cntl_u e2;
++ src_inc_u src_inc;
++ src_x_y_u src_x_y;
++ src2_x_y_u src2_x_y;
++ dst_x_y_u dst_x_y;
++ src_width_u src_width;
++ src_height_u src_height;
++ dst_width_height_u dst_width_height;
++ int firstStage = 11;
++ int secondStage = 11;
++
++ DBG_IMAGEON(("W100ScaledBlt(randr:%d,bpp:%d,srcOffset:0x%08x,"
++ "srcW:%d,srcH:%d,srcPitch:%d,dstOffset:0x%08x,"
++ "dstPitch:%d,dstX:%d,dstY:%d,xscaler:%d,yscaler:%d)\n",
++ randr, bpp, srcOffset, srcW, srcH,
++ srcPitch, dstOffset, dstPitch,
++ dstX, dstY, xscaler, yscaler));
++
++ if (randr & (RR_Rotate_90|RR_Rotate_270)) {
++ hasXForm = TRUE;
++ eng_cntl.val = w100c->regs.ENG_CNTL;
++ eng_cntl.f.dis_rop_src_uses_dst_w_h = 1;
++ eng_cntl.f.dis_src_uses_dst_dirmaj = 1;
++ ++firstStage;
++ ++secondStage;
++ }
++
++ W100ResetContext(w100c);
++ W100SetRotation(w100c, randr, FALSE);
++ W100SetSource(screen, srcPitch, srcOffset, bpp);
++ W100SetDestination(screen, dstPitch, dstOffset, bpp);
++
++ src_inc.val = 0;
++ src_inc.f.src_xinc = xscaler;
++ src_inc.f.src_yinc = yscaler;
++
++ dp_datatype.val = 0;
++ dp_datatype.f.dp_brush_datatype = DP_BRUSH_SOLIDCOLOR;
++ dp_datatype.f.dp_src2_type = 1;
++ dp_datatype.f.dp_dst_datatype = w100c->ctx.dst.datatype;
++ dp_datatype.f.dp_src2_datatype = w100c->ctx.src.datatype;
++ dp_datatype.f.dp_src_datatype = w100c->ctx.src.datatype;
++ dp_datatype.f.dp_byte_pix_order = DP_PIX_ORDER_LSB2MSB;
++
++ dp_mix.val = 0;
++ dp_mix.f.dp_op = DP_OP_ARITHMETIC;
++ dp_mix.f.dp_src_source = DP_SRC_MEM_RECTANGULAR;
++ dp_mix.f.dp_src2_source = DP_SRC_MEM_RECTANGULAR;
++ dp_mix.f.dp_rop3 = W100BltRop[GXcopy];
++
++ e2.val = 0;
++ e2.f.opcode = E2_OPC_SCALE_SRC2;
++ e2.f.srcblend = E2_SRCBLEND_ZERO;
++ e2.f.dstblend = E2_DSTBLEND_ZERO;
++
++ sw = W100ApplyScaler(srcW, xscaler);
++ sh = W100ApplyScaler(srcH, yscaler);
++
++ x = W100XformX(w100c, dstX, dstY, sw, sh);
++ y = W100XformY(w100c, dstX, dstY, sw, sh);
++ w = W100XformW(w100c, dstX, dstY, sw, sh);
++ h = W100XformH(w100c, dstX, dstY, sw, sh);
++
++ src_x_y.f.src_y = 0;
++ src_x_y.f.src_x = 0;
++ src2_x_y.f.src_y = 0 + 4;
++ src2_x_y.f.src_x = 0;
++ dst_x_y.f.dst_x = x;
++ dst_x_y.f.dst_y = y;
++ src_width.f.src_width = sw + 1;
++ src_height.f.src_height = sh;
++ dst_width_height.f.dst_height = h;
++ dst_width_height.f.dst_width_b0 = w & 0xff;
++ dst_width_height.f.dst_width_b1 = (w >> 8) & 0x3f;
++
++ if (W100WaitCmdFifoEntries(w100c, firstStage)) {
++ /* Set Source */
++ MMIO_OUT32(mmSRC_PITCH, w100c->ctx.src.pitch);
++ MMIO_OUT32(mmSRC_OFFSET, w100c->ctx.src.offset);
++
++ /* Set Destination */
++ MMIO_OUT32(mmDST_PITCH, w100c->ctx.dst.pitch);
++ MMIO_OUT32(mmDST_OFFSET, w100c->ctx.dst.offset);
++ /* Set second source */
++ MMIO_OUT32(mmSRC2_PITCH, w100c->ctx.src.pitch);
++ MMIO_OUT32(mmSRC2_OFFSET, w100c->ctx.src.offset);
++
++ /* Prepare for Stretch Operation */
++ MMIO_OUT32(mmDP_GUI_MASTER_CNTL, W100ComputeAritGmc(w100c, GXcopy));
++ MMIO_OUT32(mmDP_DATATYPE, dp_datatype.val);
++ MMIO_OUT32(mmDP_MIX, dp_mix.val);
++ MMIO_OUT32(mmE2_ARITHMETIC_CNTL, e2.val);
++ /* Set Data Trajectory */
++ if (hasXForm) {
++ MMIO_OUT32(mmENG_CNTL, eng_cntl.val);
++ }
++ MMIO_OUT32(mmDP_CNTL, w100c->ctx.xform.dataPath);
++ } else {
++ ErrorF("Unable to prepare for Scaled Blitting\n");
++ return;
++ }
++ if (W100WaitCmdFifoEntries(w100c, secondStage)) {
++ /* Perform blitting */
++ MMIO_OUT32(mmSRC_X_Y, src_x_y.val);
++ MMIO_OUT32(mmSRC2_X_Y, src2_x_y.val);
++ MMIO_OUT32(mmSRC2_WIDTH, src_width.val);
++ MMIO_OUT32(mmSRC2_HEIGHT, src_height.val);
++ MMIO_OUT32(mmSRC_INC, src_inc.val);
++ MMIO_OUT32(mmSRC2_INC, src_inc.val);
++ MMIO_OUT32(mmDST_X_Y, dst_x_y.val);
++ MMIO_OUT32(mmSRC_WIDTH, src_width.val);
++ MMIO_OUT32(mmSRC_HEIGHT, src_height.val);
++ MMIO_OUT32(mmDST_WIDTH_HEIGHT, dst_width_height.val);
++ /* Restore state */
++ if (hasXForm) {
++ MMIO_OUT32(mmENG_CNTL, w100c->regs.ENG_CNTL);
++ }
++ /* Without this, solid blitting is no longer working correctly */
++ dp_datatype.f.dp_src2_type = 0;
++ MMIO_OUT32(mmDP_DATATYPE, dp_datatype.val);
++ } else {
++ ErrorF("Unable to perform Scaled Blitting\n");
++ }
++}
++
++void W100PlanarBlt(KdScreenInfo *screen,
++ int planes,
++ int bpp,
++ int randr,
++ KdOffscreenArea *src,
++ int srcW,
++ int srcPitch,
++ int srcH,
++ KdOffscreenArea *dst,
++ int planeOffsets[],
++ int dstW,
++ int dstPitch,
++ int dstH,
++ int dstX,
++ int dstY)
++{
++ ScreenPtr pScreen = screen->pScreen;
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ W100ScreenInfo(pScreenPriv);
++ CARD8 *srcOffset, *dstBase, *dstOffset;
++ int xoffs, yoffs;
++ unsigned int subsampling[] = {0, 1, 1};
++ int plane;
++ int stretch = ((srcW != dstW) || (srcH != dstH));
++ CARD8 xscaler, yscaler;
++
++ DBG_IMAGEON(("W100PlanarBlt(planes:%d,bpp:%d,randr:%d,"
++ "src(w:%d,pitch:%d,h:%d),"
++ "dst(w:%d,pitch:%d,h:%d,x:%d,y:%d)\n",
++ planes, bpp, randr,
++ srcW, srcPitch, srcH,
++ dstW, dstPitch, dstH, dstX, dstY));
++
++ if (stretch) {
++ xscaler = W100GetScaler(dstW, srcW);
++ yscaler = W100GetScaler(dstH, srcH);
++ xoffs = yoffs = 0;
++ if (xscaler != 16 || yscaler != 16) {
++ xoffs = (dstW - W100ApplyScaler(srcW, xscaler)) / 2;
++ yoffs = (dstH - W100ApplyScaler(srcH, yscaler)) / 2;
++ DBG_IMAGEON(("Stretching with xscaler:%d,yscaler:%d,"
++ "xoffs:%d,yoffs:%d\n",
++ xscaler, yscaler, xoffs, yoffs));
++ } else {
++ xoffs = yoffs = 0;
++ stretch = FALSE;
++ }
++ }
++
++ srcOffset = src->vidmem->base + src->offset;
++ dstBase = dst->vidmem->base + dst->offset;
++ for (plane = 0; plane < planes; plane++) {
++ dstOffset = dstBase + planeOffsets[plane];
++ if (stretch) {
++ W100ScaledBlt(screen, randr, bpp,
++ (CARD32) srcOffset,
++ srcW >> subsampling[plane],
++ srcH >> subsampling[plane],
++ srcPitch >> subsampling[plane],
++ (CARD32) dstOffset,
++ dstPitch >> subsampling[plane],
++ (dstX + xoffs) >> subsampling[plane],
++ (dstY + yoffs) >> subsampling[plane],
++ xscaler, yscaler);
++ } else {
++ W100Blt(screen, randr, bpp,
++ (CARD32) srcOffset,
++ srcW >> subsampling[plane],
++ srcH >> subsampling[plane],
++ srcPitch >> subsampling[plane],
++ (CARD32) dstOffset,
++ dstPitch >> subsampling[plane],
++ dstX >> subsampling[plane],
++ dstY >> subsampling[plane]);
++ }
++ srcOffset += (srcPitch * srcH) >> (subsampling[plane] * 2);
++ }
++}
++
++void W100SetBrightness(W100CardInfo *w100c, CARD8 value)
++{
++ brightness_cntl_u brightness;
++ brightness.val = 0;
++ brightness.f.brightness = value;
++ MMIO_OUT32(mmBRIGHTNESS_CNTL, brightness.val);
++}
++
++CARD8 W100GetBrightness(W100CardInfo *w100c)
++{
++ brightness_cntl_u brightness;
++ brightness.val = MMIO_IN32(mmBRIGHTNESS_CNTL);
++ return brightness.f.brightness;
++}
++
++int W100GetRotation(W100CardInfo *w100c)
++{
++ graphic_ctrl_u gc;
++ int randr;
++
++ gc.val = MMIO_IN32(mmGRAPHIC_CTRL);
++
++ switch (gc.f.portrait_mode) {
++ case 0:
++ randr = RR_Rotate_0;
++ break;
++ case 1:
++ randr = RR_Rotate_90;
++ break;
++ case 2:
++ randr = RR_Rotate_270;
++ break;
++ case 3:
++ randr = RR_Rotate_180;
++ break;
++ }
++ return randr;
++}
++
++Bool W100SysFsSet(W100CardInfo *w100c, const char *path, const char *value)
++{
++ FILE *fd;
++ if ((fd = fopen(path, "w")) == NULL) {
++ ErrorF("(E) Error in W100SysFsSet: Unable to open '%s'\n", path);
++ return FALSE;
++ }
++ fprintf(fd, "%s", value);
++ fclose(fd);
++ return TRUE;
++}
++
++Bool W100SysFsGet(W100CardInfo *w100c, const char *path, char *value)
++{
++ FILE *fd;
++ if ((fd = fopen(path, "r")) == NULL) {
++ ErrorF("(E) Error in W100SysFsGet: Unable to open '%s'\n", path);
++ return FALSE;
++ }
++ fscanf(fd, "%s", value);
++ fclose(fd);
++ return TRUE;
++}
++
++void W100TransformTsLibCoordinates(long *x, long *y, void *closure)
++{
++ W100CardInfo *w100c = closure;
++
++ if (w100c->hw_window.mode->width == 320) {
++ *x >>= 1;
++ *y >>= 1;
++ }
++}
++
++
+--- /dev/null
++++ xorg-server-X11R7.1-1.1.0.work/hw/kdrive/imageon/imageon_video.c
+@@ -0,0 +1,1051 @@
++/*
++ * Copyright © 2007 Manuel Teira
++ *
++ * 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 Manuel Teira not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Manuel Teira makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * MANUEL TEIRA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL MANUEL TEIRA 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 "imageon.h"
++#include "imageon_regs.h"
++#include "imageon_support.h"
++#include "imageon_const.h"
++#include "kaa.h"
++
++#include <X11/extensions/Xv.h>
++#include "fourcc.h"
++
++static Atom xvBrightness;
++static Atom xvMaxOverlaySize;
++static Atom xvColorKey;
++
++#define IMAGE_MAX_WIDTH 720
++#define IMAGE_MAX_HEIGHT 576
++
++#define W_ALIGN 0
++#define H_ALIGN 0
++
++#define OVL_W_ALIGN 16
++#define OVL_H_ALIGN 16
++
++#define OVL_MAX_SIZE 196608
++
++static KdVideoEncodingRec DummyEncoding[1] = {
++ {0, "XV_IMAGE", IMAGE_MAX_WIDTH, IMAGE_MAX_HEIGHT, {1, 1}}
++};
++
++#define NUM_IMAGES (4)
++static KdImageRec Images[NUM_IMAGES] = {
++ XVIMAGE_YUY2,
++ XVIMAGE_YV12,
++ XVIMAGE_I420,
++ XVIMAGE_UYVY
++};
++
++#define NUM_FORMATS (3)
++static KdVideoFormatRec Formats[NUM_FORMATS] = {
++ {15, TrueColor},
++ {16, TrueColor},
++ {24, TrueColor}
++};
++
++#define NUM_ATTRIBUTES (3)
++static KdAttributeRec Attributes[NUM_ATTRIBUTES] = {
++ {XvSettable | XvGettable, 0, (1 << 16) - 1, "XV_COLORKEY"},
++ {XvSettable | XvGettable, 0, 127, "XV_BRIGHTNESS"},
++ {XvSettable | XvGettable, 0, 392960, "XV_MAXOVERLAYSIZE"}
++};
++
++#define MAKE_ATOM(a) MakeAtom(a, sizeof(a) - 1, TRUE)
++
++#define NUM_OVL_RESIZERS (10)
++static struct {
++ CARD8 xfactor;
++ CARD8 yfactor;
++} ovlResizers[10] = {
++ { 0, 0 },
++ { 1, 0 },
++ { 0, 1 },
++ { 1, 1 },
++ { 2, 1 },
++ { 1, 2 },
++ { 2, 2 },
++ { 3, 2 },
++ { 2, 3 },
++ { 3, 3 }
++};
++
++static void W100ClearSurface(KdScreenInfo *screen,
++ KdOffscreenArea *area,
++ CARD16 x,
++ CARD16 y,
++ CARD16 pitch,
++ CARD16 width,
++ CARD16 height,
++ int id)
++{
++ W100CardInfo(screen);
++ int nplanes;
++ unsigned int subsampling[] = {0, 1, 1};
++ unsigned int zero[] = {0, 0x80, 0x80};
++ int bpp;
++ int plane;
++ CARD8 *dstOffset = area->vidmem->base + area->offset;
++
++ switch (id) {
++ case FOURCC_UYVY:
++ case FOURCC_YUY2:
++ nplanes = 1;
++ bpp = 16;
++ break;
++ case FOURCC_YV12:
++ case FOURCC_I420:
++ nplanes = 3;
++ bpp = 8;
++ }
++
++ DBG_IMAGEON(("Clearing surface with planes:%d, bpp:%d, pitch:%d, height:%d\n",
++ nplanes, bpp, pitch, height));
++
++ W100ResetContext(w100c);
++ for (plane = 0; plane < nplanes; plane++) {
++ W100SetDestination(screen,
++ pitch >> subsampling[plane],
++ (CARD32) dstOffset,
++ bpp);
++ if (W100WaitCmdFifoEntries(w100c, 6)) {
++ MMIO_OUT32(mmDST_PITCH, w100c->ctx.dst.pitch);
++ MMIO_OUT32(mmDST_OFFSET, w100c->ctx.dst.offset);
++ MMIO_OUT32(mmDP_GUI_MASTER_CNTL,
++ W100ComputeSolidGmc(w100c, GXcopy));
++ MMIO_OUT32(mmDP_BRUSH_FRGD_CLR, zero[plane]);
++ MMIO_OUT32(mmDST_Y_X, 0);
++ MMIO_OUT32(mmDST_HEIGHT_WIDTH, (height << 16) | width);
++ } else {
++ ErrorF("Error clearing surface\n");
++ break;
++ }
++ dstOffset += (pitch * height) >> (subsampling[plane] * 2);
++ }
++}
++
++static void W100OverlaySetup(KdScreenInfo *screen)
++{
++ W100ScreenInfo *w100s = screen->driver;
++ W100CardInfo(screen);
++ W100PortPrivPtr pPortPriv = w100s->pAdaptor->pPortPrivates[0].ptr;
++
++ video_ctrl_u video_ctrl;
++ video_y_offset_u video_y_offset;
++ video_y_pitch_u video_y_pitch;
++ video_u_offset_u video_u_offset;
++ video_u_pitch_u video_u_pitch;
++ video_v_offset_u video_v_offset;
++ video_v_pitch_u video_v_pitch;
++ graphic_key_u graphic_key;
++ video_h_pos_u video_hpos;
++ video_v_pos_u video_vpos;
++ graphic_h_disp_u graphic_h_disp;
++ graphic_v_disp_u graphic_v_disp;
++
++ CARD16 w, h;
++
++ DBG_IMAGEON(("W100OverlaySetup(ovlX:%d,ovlY:%d,ovlWidth:%d,ovlHeight:%d,"
++ "videoHorExp:%d,videoVerExp:%d,YPlane:0x%08x,UPlane:0x%08x,"
++ "VPlane:0x%08x)\n",
++ pPortPriv->ovlX, pPortPriv->ovlY,
++ pPortPriv->ovlWidth, pPortPriv->ovlHeight,
++ pPortPriv->videoHorExp, pPortPriv->videoVerExp,
++ pPortPriv->YPlaneOffset, pPortPriv->UPlaneOffset,
++ pPortPriv->VPlaneOffset));
++
++ if (pPortPriv->videoStatus & W100_OVERLAY_CONFIGURED) {
++ return;
++ }
++
++ w = pPortPriv->ovlWidth << pPortPriv->videoHorExp;
++ h = pPortPriv->ovlHeight << pPortPriv->videoVerExp;
++
++ video_ctrl.val = w100c->regs.VIDEO_CTRL;
++
++ video_ctrl.f.video_inv_hor = 0;
++ video_ctrl.f.video_inv_ver = 0;
++ video_ctrl.f.yuv2rgb_option = 0;
++ video_ctrl.f.video_hor_exp = pPortPriv->videoHorExp;
++ video_ctrl.f.video_ver_exp = pPortPriv->videoVerExp;
++ video_ctrl.f.video_ch_sel = 0;
++
++ video_ctrl.f.yuv2rgb_en = 1;
++ //Only support this, by the moment
++ video_ctrl.f.video_mode = OVLFORMAT_YUV420;
++
++ video_y_pitch.f.y_pitch = pPortPriv->ovlWidth;
++ video_u_pitch.f.u_pitch = pPortPriv->ovlWidth >> 1;
++ video_v_pitch.f.v_pitch = pPortPriv->ovlWidth >> 1;
++
++ /*
++ video_y_offset.f.y_offset = pPortPriv->YPlaneOffset +
++ video_y_pitch.f.y_pitch * pPortPriv->ovlY + pPortPriv->ovlX;
++ video_u_offset.f.u_offset = pPortPriv->UPlaneOffset +
++ video_u_pitch.f.u_pitch * pPortPriv->ovlY + (pPortPriv->ovlX / 2);
++ video_v_offset.f.v_offset = pPortPriv->VPlaneOffset +
++ video_v_pitch.f.v_pitch * pPortPriv->ovlY + (pPortPriv->ovlX / 2);
++ */
++
++ video_y_offset.f.y_offset = pPortPriv->YPlaneOffset;
++ video_u_offset.f.u_offset = pPortPriv->UPlaneOffset;
++ video_v_offset.f.v_offset = pPortPriv->VPlaneOffset;
++
++ graphic_key.val = 0;
++ graphic_key.f.keyer_color = pPortPriv->colorKey;
++ graphic_key.f.keyer_mask = 0xffffUL;
++ video_ctrl.f.keyer_en = 1;
++
++ graphic_h_disp.val = w100c->regs.GRAPHIC_H_DISP;
++ graphic_v_disp.val = w100c->regs.GRAPHIC_V_DISP;
++
++ video_hpos.f.video_h_start = graphic_h_disp.f.graphic_h_start
++ + pPortPriv->ovlX;
++ video_hpos.f.video_h_end = video_hpos.f.video_h_start + w;
++ video_vpos.f.video_v_start = graphic_v_disp.f.graphic_v_start
++ + pPortPriv->ovlY;
++ video_vpos.f.video_v_end = video_vpos.f.video_v_start + h;
++ if (video_hpos.f.video_h_end > graphic_h_disp.f.graphic_h_end) {
++ w = graphic_h_disp.f.graphic_h_end - video_hpos.f.video_h_start;
++ }
++
++ //This is possibly not valid for non planar modes
++ video_ctrl.f.total_req_video = (w + 3) / 4;
++
++ W100DisableDisplayUpdate(w100c);
++ //This need to be tuned deeply, to get an stable
++ //overlay image
++ MMIO_OUT32(mmDISP_DEBUG2,
++ (w100c->regs.DISP_DEBUG2 & ~0xff000000) | 0x80000000 );
++ MMIO_OUT32(mmGRAPHIC_KEY, graphic_key.val);
++ MMIO_OUT32(mmVIDEO_Y_OFFSET, video_y_offset.val);
++ MMIO_OUT32(mmVIDEO_Y_PITCH, video_y_pitch.val);
++ MMIO_OUT32(mmVIDEO_U_OFFSET, video_u_offset.val);
++ MMIO_OUT32(mmVIDEO_U_PITCH, video_u_pitch.val);
++ MMIO_OUT32(mmVIDEO_V_OFFSET, video_v_offset.val);
++ MMIO_OUT32(mmVIDEO_V_PITCH, video_v_pitch.val);
++ MMIO_OUT32(mmVIDEO_CTRL, video_ctrl.val);
++ MMIO_OUT32(mmVIDEO_H_POS, video_hpos.val);
++ MMIO_OUT32(mmVIDEO_V_POS, video_vpos.val);
++ W100EnableDisplayUpdate(w100c);
++
++ pPortPriv->videoCtrl = video_ctrl.val;
++ pPortPriv->videoStatus |= W100_OVERLAY_CONFIGURED;
++}
++
++static void W100OverlayEnable(KdScreenInfo *screen)
++{
++ W100ScreenInfo *w100s = screen->driver;
++ W100CardInfo(screen);
++ W100PortPrivPtr pPortPriv = w100s->pAdaptor->pPortPrivates[0].ptr;
++ video_ctrl_u video_ctrl;
++
++ DBG_IMAGEON(("W100OverlayEnable()\n"));
++
++ if (!(pPortPriv->videoStatus & W100_OVERLAY_CONFIGURED)) {
++ W100OverlaySetup(screen);
++ }
++
++ video_ctrl.val = pPortPriv->videoCtrl;
++ video_ctrl.f.en_video_req = 1;
++ video_ctrl.f.en_video_crtc = 1;
++ video_ctrl.f.en_graphic_req_video = 1;
++ W100DisableDisplayUpdate(w100c);
++ MMIO_OUT32(mmVIDEO_CTRL, video_ctrl.val);
++ W100EnableDisplayUpdate(w100c);
++ pPortPriv->videoCtrl = video_ctrl.val;
++ pPortPriv->videoStatus |= W100_OVERLAY_ON;
++}
++
++static void W100OverlayDisable(KdScreenInfo *screen)
++{
++ DBG_IMAGEON(("W100OverlayDisable()\n"));
++ W100ScreenInfo *w100s = screen->driver;
++ W100CardInfo(screen);
++ W100PortPrivPtr pPortPriv = w100s->pAdaptor->pPortPrivates[0].ptr;
++
++ video_ctrl_u video_ctrl;
++
++ video_ctrl.val = pPortPriv->videoCtrl;
++ video_ctrl.f.en_video_req = 0;
++ video_ctrl.f.en_video_crtc = 0;
++ video_ctrl.f.en_graphic_req_video = 0;
++ W100DisableDisplayUpdate(w100c);
++ MMIO_OUT32(mmVIDEO_CTRL, video_ctrl.val);
++ W100EnableDisplayUpdate(w100c);
++ pPortPriv->videoCtrl = video_ctrl.val;
++ pPortPriv->videoStatus &= ~W100_OVERLAY_ON;
++}
++
++static void W100VideoSave(ScreenPtr pScreen, KdOffscreenArea *area)
++{
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ W100ScreenInfo(pScreenPriv);
++ W100PortPrivPtr pPortPriv = w100s->pAdaptor->pPortPrivates[0].ptr;
++
++ if (pPortPriv->offSurface == area) {
++ pPortPriv->offSurface = NULL;
++ pPortPriv->offSize = 0;
++ }
++ if (pPortPriv->ovlSurface == area) {
++ pPortPriv->ovlSurface = NULL;
++ pPortPriv->ovlSize = 0;
++ }
++}
++
++static void W100HostPlanarData(KdScreenInfo *screen,
++ int id,
++ CARD8 *src,
++ KdOffscreenArea *dst,
++ CARD32 srcPitch, CARD32 srcHeight,
++ CARD32 dstPitch, CARD32 dstHeight,
++ CARD16 srcX, CARD16 srcY,
++ CARD16 dstX, CARD16 dstY,
++ CARD16 w, CARD16 h)
++{
++ CARD8 *dstBase = dst->vidmem->base + dst->offset;
++ CARD8 *dstPtr;
++ CARD8 *srcPtr;
++ int i;
++
++ srcPtr = src + (srcY * srcPitch) + srcX;
++ dstPtr = dstBase + (dstY * dstPitch) + dstX;
++
++ DBG_IMAGEON(("W100HostPlanarData(src(pitch:%d,offset:0x%08x,x:%d,y:%d),"
++ "dst(pitch:%d,offset:0x%08x,x:%d,y:%d), w:%d,h:%d)\n",
++ srcPitch, srcPtr, srcX, srcY,
++ dstPitch, dstPtr, dstX, dstY,
++ w, h));
++
++ /* Copy Y plane */
++ for (i = 0; i < h; i++) {
++ memcpy(dstPtr, srcPtr, w);
++ dstPtr += dstPitch;
++ srcPtr += srcPitch;
++ }
++ /* Copy U plane */
++ dstPtr = dstBase + (dstHeight * dstPitch) //Start of U Plane
++ + (dstX >> 1) //X Offset
++ + ((dstY * dstPitch) >> 2); //Y Offset
++ if (id == FOURCC_I420) {
++ srcPtr = src + (srcHeight * srcPitch) //Start of U Plane
++ + (srcX >> 1) //X Offset
++ + ((srcY * srcPitch) >> 2); //Y Offset
++ } else {
++ srcPtr = src + ((5 * srcHeight * srcPitch) / 4) //Start of U Plane
++ + (srcX >> 1) //X Offset
++ + ((srcY * srcPitch) >> 2); //Y Offset
++ }
++ for (i = 0; i < (h >> 1); i++) {
++ memcpy(dstPtr, srcPtr, w >> 1); //U Plane scanline
++ srcPtr += srcPitch >> 1;
++ dstPtr += dstPitch >> 1;
++ }
++
++ /* Copy V plane */
++ dstPtr = dstBase + ((5 * dstHeight * dstPitch) / 4) //Start of V Plane
++ + (dstX >> 1) //X Offset
++ + ((dstY * dstPitch) >> 2); //Y Offset
++ if (id == FOURCC_I420) {
++ srcPtr = src + ((5 * srcHeight * srcPitch) / 4) //Start of V Plane
++ + (srcX >> 1) //X Offset
++ + ((srcY * srcPitch) >> 2); //Y Offset
++ } else {
++ srcPtr = src + (srcHeight * srcPitch) //Start of V Plane
++ + (srcX >> 1) //X Offset
++ + ((srcY * srcPitch) >> 2); //Y Offset
++ }
++ for (i = 0; i < (h >> 1); i++) {
++ memcpy(dstPtr, srcPtr, w >> 1); //V Plane scanline
++ srcPtr += srcPitch >> 1;
++ dstPtr += dstPitch >> 1;
++ }
++}
++
++static void W100HostPackedData(KdScreenInfo *screen,
++ int id,
++ CARD8 *src,
++ KdOffscreenArea *dst,
++ CARD32 srcPitch,
++ CARD32 dstPitch,
++ CARD16 srcX, CARD16 srcY,
++ CARD16 dstX, CARD16 dstY,
++ CARD16 w, CARD16 h)
++{
++ CARD8 *dstBase = dst->vidmem->base + dst->offset;
++ CARD8 *dstPtr = dstBase + (dstY * dstPitch) + (dstX << 1);
++ CARD8 *srcPtr = src + (srcY + srcPitch) + (srcX << 1);
++
++ DBG_IMAGEON(("W100HostPackedData(src(pitch:%d,offset:0x%08x,x:%d,y:%d),"
++ "dst(pitch:%d,offset:0x%08x,x:%d,y:%d), w:%d,h:%d)\n",
++ srcPitch, srcPtr, srcX, srcY,
++ dstPitch, dstPtr, dstX, dstY,
++ w, h));
++ while(h--) {
++ memcpy(dstPtr, srcPtr, (w << 1)); /* 16bpp assumed */
++ srcPtr += srcPitch;
++ dstPtr += dstPitch;
++ }
++}
++
++
++static void W100StopVideo(KdScreenInfo *screen, pointer data, Bool exit)
++{
++ W100CardInfo(screen);
++ W100PortPrivPtr pPriv = (W100PortPrivPtr)data;
++
++ DBG_IMAGEON(("W100StopVideo(exit:%d)\n", exit));
++
++ REGION_EMPTY(screen->pScreen, &pPriv->clip);
++
++ if (exit) {
++ if (pPriv->videoStatus & W100_OVERLAY_ON) {
++ W100OverlayDisable(screen);
++ }
++ if (pPriv->offSurface) {
++ KdOffscreenFree(screen->pScreen, pPriv->offSurface);
++ pPriv->offSurface = NULL;
++ pPriv->offSize = 0;
++ }
++ if (pPriv->ovlSurface) {
++ KdOffscreenFree(screen->pScreen, pPriv->ovlSurface);
++ pPriv->ovlSurface = NULL;
++ pPriv->ovlSize = 0;
++ }
++ pPriv->videoStatus &= ~W100_OVERLAY_ON;
++ } else {
++ if (pPriv->videoStatus & W100_OVERLAY_ON) {
++ W100OverlayDisable(screen);
++ pPriv->videoStatus &= ~W100_OVERLAY_ON;
++ }
++ }
++}
++
++static int W100SetPortAttribute(KdScreenInfo *screen,
++ Atom attribute,
++ int value,
++ pointer data)
++{
++ W100CardInfo(screen);
++ W100PortPrivPtr pPriv = (W100PortPrivPtr)data;
++
++ if (attribute == xvBrightness) {
++ DBG_IMAGEON(("Setting Brightness attribute to %d\n", value));
++ W100SetBrightness(w100c, value);
++ pPriv->brightness = value;
++ } else if (attribute == xvMaxOverlaySize) {
++ DBG_IMAGEON(("Setting MaxOverlaySize to %d\n", value));
++ pPriv->maxOverlaySize = value;
++ } else if (attribute == xvColorKey) {
++ DBG_IMAGEON(("Setting ColorKey attribute to %d\n", value));
++ pPriv->colorKey = value;
++ }
++ return Success;
++}
++
++static int W100GetPortAttribute(KdScreenInfo *screen,
++ Atom attribute,
++ int *value,
++ pointer data)
++{
++ W100CardInfo(screen);
++ W100PortPrivPtr pPriv = (W100PortPrivPtr)data;
++
++ if (attribute == xvBrightness) {
++ DBG_IMAGEON(("Getting Brightness attribute\n"));
++ *value = pPriv->brightness;
++ } else if (attribute == xvMaxOverlaySize) {
++ *value = pPriv->maxOverlaySize;
++ DBG_IMAGEON(("Getting Contrast attribute\n"));
++ } else if (attribute == xvColorKey) {
++ DBG_IMAGEON(("Getting ColorKey attribute\n"));
++ *value = pPriv->colorKey;
++ }
++ return Success;
++}
++
++static void W100QueryBestSize(KdScreenInfo *screen,
++ Bool motion,
++ short vid_w, short vid_h, /*Video dimensions */
++ short drw_w, short drw_h, /*Drawable dimensions */
++ unsigned int *p_w, unsigned int *p_h,
++ pointer data)
++{
++ DBG_IMAGEON(("W100QueryBestSize(vid_w:%d,vid_h:%d,drw_w:%d,drw_h:%d)\n",
++ vid_w, vid_h, drw_w, drw_h));
++ int xscaler = W100GetScaler(drw_w, vid_w);
++ int yscaler = W100GetScaler(drw_h, vid_h);
++ *p_w = W100ApplyScaler(vid_w, xscaler);
++ *p_h = W100ApplyScaler(vid_h, yscaler);
++}
++
++static int W100QueryImageAttributes(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;
++ }
++
++ if (W_ALIGN) {
++ *w = (*w + (W_ALIGN - 1)) & ~(W_ALIGN - 1);
++ }
++ if (H_ALIGN) {
++ *h = (*h + (H_ALIGN - 1)) & ~(H_ALIGN - 1);
++ }
++
++ if (offsets) {
++ offsets[0] = 0;
++ }
++
++ switch (id) {
++ /* Planar formats */
++ 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;
++ /* Packed Formats */
++ case FOURCC_UYVY:
++ case FOURCC_YUY2:
++ default:
++ size = *w << 1;
++ if (pitches) pitches[0] = size;
++ size *= *h;
++ break;
++ }
++ return size;
++}
++
++
++static void W100ClipVideo(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 int W100PutImage(KdScreenInfo *screen,
++ DrawablePtr pDraw, /* Destination drawable */
++ short src_x, short src_y, /* Source coordinates */
++ short drw_x, short drw_y, /* Destination coordinates */
++ short src_w, short src_h, /* Source rectangle to put */
++ short drw_w, short drw_h, /* Destination size */
++ int id, /* FOURCC id */
++ unsigned char *buf, /* Source data */
++ short width, /* Source width */
++ short height, /* Source height */
++ Bool sync, /* Sync before returning */
++ RegionPtr clipBoxes,
++ pointer data)
++{
++ ScreenPtr pScreen = screen->pScreen;
++ KdScreenPriv(pScreen);
++ W100CardInfo(pScreenPriv);
++ W100ScreenInfo(pScreenPriv);
++ W100PortPrivPtr pPortPriv = (W100PortPrivPtr)data;
++ CARD32 baseAddr;
++ int randr = w100c->hw_window.randr;
++ int offWidth, offHeight;
++ int ovlWidth, ovlHeight;
++ int ovlX, ovlY;
++ int dstX, dstY;
++ int offSize;
++ int ovlSize;
++ int planes;
++ int bpp;
++ int i;
++ INT32 x1, x2, y1, y2;
++ BoxRec dstBox;
++ int planeOffsets[3];
++
++
++ DBG_IMAGEON(("W100PutImage(src(x:%d,y:%d,w:%d,h:%d),"
++ "drw(x:%d,y:%d,w:%d,h:%d),"
++ "width:%d,height:%d)\n",
++ src_x,src_y,src_w,src_h,
++ drw_x,drw_y,drw_w,drw_h,
++ width, height));
++
++ /* 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;
++
++ W100ClipVideo(&dstBox, &x1, &x2, &y1, &y2,
++ REGION_EXTENTS(pScreen, clipBoxes),
++ width, height);
++
++ if ((x1 >= x2) || (y1 >= y2)) {
++ return Success;
++ }
++
++ src_w = (x2 - x1) >> 16;
++ src_h = (y2 - y1) >> 16;
++ drw_w = dstBox.x2 - dstBox.x1;
++ drw_h = dstBox.y2 - dstBox.y1;
++ drw_x = dstBox.x1;
++ drw_y = dstBox.y1;
++ src_x = x1 >> 16;
++ src_y = y1 >> 16;
++
++ /* Calculate dimensions for offscren and overlay surfaces */
++ offWidth = src_w;
++ offHeight = src_h;
++
++ ovlX = W100MapToHWX(w100c, drw_x, drw_y, drw_w, drw_h);
++ ovlY = W100MapToHWY(w100c, drw_x, drw_y, drw_w, drw_h);
++
++ for (i = 0; i < NUM_OVL_RESIZERS; i++) {
++ CARD16 candidate_w = drw_w >> ovlResizers[i].xfactor;
++ CARD16 candidate_h = drw_h >> ovlResizers[i].yfactor;
++
++ switch (randr & RR_Rotate_All) {
++ case RR_Rotate_0:
++ ovlWidth = W100_ALIGN(candidate_w, OVL_W_ALIGN);
++ ovlHeight = W100_ALIGN(candidate_h, OVL_H_ALIGN);
++ dstX = 0;
++ dstY = 0;
++ pPortPriv->videoHorExp = ovlResizers[i].xfactor;
++ pPortPriv->videoVerExp = ovlResizers[i].yfactor;
++ break;
++ case RR_Rotate_180:
++ ovlWidth = W100_ALIGN(candidate_w, OVL_W_ALIGN);
++ ovlHeight = W100_ALIGN(candidate_h, OVL_H_ALIGN);
++ dstX = ovlWidth - candidate_w;
++ dstY = ovlHeight - candidate_h;
++ pPortPriv->videoHorExp = ovlResizers[i].xfactor;
++ pPortPriv->videoVerExp = ovlResizers[i].yfactor;
++ break;
++ case RR_Rotate_90:
++ ovlWidth = W100_ALIGN(candidate_h, OVL_W_ALIGN);
++ ovlHeight = W100_ALIGN(candidate_w, OVL_H_ALIGN);
++ dstX = (ovlWidth - candidate_h) / 2;
++ dstY = (ovlHeight - candidate_w) / 2;
++ pPortPriv->videoHorExp = ovlResizers[i].yfactor;
++ pPortPriv->videoVerExp = ovlResizers[i].xfactor;
++ break;
++ case RR_Rotate_270:
++ ovlWidth = W100_ALIGN(candidate_h, OVL_W_ALIGN);
++ ovlHeight = W100_ALIGN(candidate_w, OVL_H_ALIGN);
++ dstX = 0;
++ dstY = ovlHeight - candidate_w;
++ pPortPriv->videoHorExp = ovlResizers[i].yfactor;
++ pPortPriv->videoVerExp = ovlResizers[i].xfactor;
++ break;
++ }
++
++ /* Calculate sizes for the surfaces */
++ switch (id) {
++ case FOURCC_YV12:
++ case FOURCC_I420:
++ offSize = (3 * offWidth * offHeight) / 2;
++ ovlSize = (3 * ovlWidth * ovlHeight) / 2;
++ planes = 3;
++ planeOffsets[0] = 0;
++ planeOffsets[1] = ovlWidth * ovlHeight;
++ planeOffsets[2] = (5 * (ovlWidth * ovlHeight)) / 4;
++ bpp = 8;
++ break;
++ case FOURCC_UYVY:
++ case FOURCC_YUY2:
++ offSize = offWidth * offHeight * 2;
++ ovlSize = ovlWidth * ovlHeight * 2;
++ planes = 1;
++ planeOffsets[0] = 0;
++ bpp = 16;
++ break;
++ }
++ if (ovlSize <= pPortPriv->maxOverlaySize) {
++ DBG_IMAGEON(("Using %dx%d overlay surface (%d bytes). "
++ "Resizer(xfactor:%d,yfactor:%d)\n",
++ ovlWidth, ovlHeight, ovlSize,
++ ovlResizers[i].xfactor, ovlResizers[i].yfactor));
++ drw_w = candidate_w;
++ drw_h = candidate_h;
++ break;
++ }
++ }
++
++ /* Reallocate the surfaces, if existing ones are not valid.
++ * If overlay surface is not valid, dump both ones, to give
++ * ovlSurface more chances to get internal memory
++ */
++ if (pPortPriv->ovlSurface && ovlSize != pPortPriv->ovlSize) {
++ DBG_IMAGEON(("Freeing overlay and offscreen surfaces\n"));
++ KdOffscreenFree(screen->pScreen, pPortPriv->ovlSurface);
++ KdOffscreenFree(screen->pScreen, pPortPriv->offSurface);
++ pPortPriv->ovlSurface = NULL;
++ pPortPriv->offSurface = NULL;
++ }
++
++ if (pPortPriv->offSurface && offSize != pPortPriv->offSize) {
++ DBG_IMAGEON(("Freeing offscreen surface\n"));
++ KdOffscreenFree(screen->pScreen, pPortPriv->offSurface);
++ pPortPriv->offSurface = NULL;
++ }
++
++ if (!pPortPriv->ovlSurface) {
++ pPortPriv->ovlSurface = KdOffscreenAllocPrio(screen->pScreen,
++ ovlSize, 0, TRUE,
++ W100VideoSave,
++ pPortPriv,
++ KD_VIDMEM_MAXPRIO,
++ KD_VIDMEM_MAXPRIO,
++ TRUE);
++ if (!pPortPriv->ovlSurface) {
++ ErrorF("Using non internal memory to overlay. "
++ "Expected bad performance\n");
++ pPortPriv->ovlSurface = KdOffscreenAlloc(screen->pScreen,
++ ovlSize, 0, TRUE,
++ W100VideoSave,
++ pPortPriv);
++ }
++ if (!pPortPriv->ovlSurface) {
++ ErrorF("Unable to allocate %d bytes for overlay surface\n",
++ ovlSize);
++ return BadAlloc;
++ }
++
++ pPortPriv->ovlSize = ovlSize;
++ W100ClearSurface(screen, pPortPriv->ovlSurface,
++ 0, 0, (ovlWidth * bpp / 8),
++ ovlWidth, ovlHeight, id);
++ }
++
++ if (!pPortPriv->offSurface) {
++ pPortPriv->offSurface = KdOffscreenAlloc(screen->pScreen,
++ offSize, 0, TRUE,
++ W100VideoSave,
++ pPortPriv);
++ if (!pPortPriv->offSurface) {
++ ErrorF("Unable to allocate %d bytes for offscreen surface\n",
++ offSize);
++ return BadAlloc;
++ }
++ pPortPriv->offSize = offSize;
++ }
++
++ /* Copy the data into the offscreen surface */
++ W100WaitIdle(w100c);
++
++ switch (id) {
++ case FOURCC_YV12:
++ case FOURCC_I420:
++ W100HostPlanarData(screen, //screen
++ id, //id
++ buf, //src
++ pPortPriv->offSurface, //dst
++ width, //srcPitch
++ height, //srcHeight
++ offWidth, //dstPitch
++ offHeight, //dstHeight
++ src_x, //srcX
++ src_y, //srcY
++ 0, //dstX
++ 0, //dstY
++ src_w, //w
++ src_h); //h
++ break;
++ case FOURCC_UYVY:
++ case FOURCC_YUY2:
++ W100HostPackedData(screen, //screen
++ id, //id
++ buf, //src
++ pPortPriv->offSurface, //dst
++ width << 1, //srcPitch
++ offWidth << 1, //dstPitch
++ src_x, //srcX
++ src_y, //srcY
++ 0, //dstX
++ 0, //dstY
++ src_w, //w
++ src_h); //h
++ break;
++ }
++
++ /* Update cliplist */
++ if(!REGION_EQUAL(screen->pScreen, &pPortPriv->clip, clipBoxes)) {
++ REGION_COPY(screen->pScreen, &pPortPriv->clip, clipBoxes);
++ KXVPaintRegion(pDraw, &pPortPriv->clip, pPortPriv->colorKey);
++ }
++
++ /* Calculate the incard offsets for the different planes */
++ baseAddr = (CARD32) W100_HOST2CARD(pPortPriv->ovlSurface->vidmem->base +
++ pPortPriv->ovlSurface->offset);
++ switch (id) {
++ case FOURCC_YV12:
++ case FOURCC_I420:
++ pPortPriv->YPlaneOffset = baseAddr + planeOffsets[0];
++ pPortPriv->UPlaneOffset = baseAddr + planeOffsets[1];
++ pPortPriv->VPlaneOffset = baseAddr + planeOffsets[2];
++ break;
++ case FOURCC_UYVY:
++ case FOURCC_YUY2:
++ pPortPriv->YPlaneOffset = baseAddr + planeOffsets[0];
++ pPortPriv->UPlaneOffset = 0;
++ pPortPriv->VPlaneOffset = 0;
++ }
++
++ DBG_IMAGEON(("Offsets(Y:0x%08x,U:0x%08x,V:0x%08x)\n",
++ pPortPriv->YPlaneOffset,
++ pPortPriv->UPlaneOffset,
++ pPortPriv->VPlaneOffset));
++
++
++ /* Blit from offSurface to ovlSurface taking into account
++ * the randr needed transformation
++ */
++ W100DisableDisplayUpdate(w100c);
++ W100PlanarBlt(screen, planes, bpp, randr,
++ pPortPriv->offSurface,
++ src_w, offWidth * bpp / 8, src_h,
++ pPortPriv->ovlSurface, planeOffsets,
++ drw_w, ovlWidth * bpp / 8, drw_h,
++ dstX, dstY);
++ W100EnableDisplayUpdate(w100c);
++
++
++ if ((pPortPriv->ovlWidth != ovlWidth) ||
++ (pPortPriv->ovlHeight != ovlHeight) ||
++ (pPortPriv->ovlX != ovlX) ||
++ (pPortPriv->ovlY != ovlY) ||
++ (pPortPriv->id != id)) {
++ pPortPriv->videoStatus &= ~W100_OVERLAY_CONFIGURED;
++ W100OverlayDisable(screen);
++ }
++ /* Enable overlay */
++ pPortPriv->ovlWidth = ovlWidth;
++ pPortPriv->ovlHeight = ovlHeight;
++ pPortPriv->ovlX = ovlX;
++ pPortPriv->ovlY = ovlY;
++ pPortPriv->id = id;
++ W100OverlayEnable(screen);
++
++ return Success;
++}
++
++static KdVideoAdaptorPtr
++W100SetupImageVideo(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100ScreenInfo(pScreenPriv);
++ W100CardInfo(pScreenPriv);
++ KdVideoAdaptorPtr adaptor;
++ W100PortPrivPtr pPortPriv;
++
++ adaptor = xcalloc(1, sizeof(KdVideoAdaptorRec)
++ + sizeof(W100PortPrivRec)
++ + sizeof(DevUnion));
++ if (adaptor == NULL) {
++ return NULL;
++ }
++
++ adaptor->type = XvWindowMask | XvInputMask | XvImageMask;
++ adaptor->flags = VIDEO_OVERLAID_IMAGES | VIDEO_CLIP_TO_VIEWPORT;
++ adaptor->name = "ATI (C) Imageon Video Overlay";
++ adaptor->nEncodings = 1;
++ adaptor->pEncodings = DummyEncoding;
++ adaptor->nFormats = NUM_FORMATS;
++ adaptor->pFormats = Formats;
++ adaptor->nPorts = 1;
++ adaptor->pPortPrivates = (DevUnion*)(&adaptor[1]);
++
++ pPortPriv = (W100PortPrivPtr)(&adaptor->pPortPrivates[1]);
++
++ adaptor->pPortPrivates[0].ptr = (pointer)(pPortPriv);
++
++ adaptor->nAttributes = NUM_ATTRIBUTES;
++ adaptor->pAttributes = Attributes;
++ adaptor->pImages = Images;
++ adaptor->nImages = NUM_IMAGES;
++ adaptor->PutVideo = NULL;
++ adaptor->PutStill = NULL;
++ adaptor->GetVideo = NULL;
++ adaptor->GetStill = NULL;
++ adaptor->StopVideo = W100StopVideo;
++ adaptor->SetPortAttribute = W100SetPortAttribute;
++ adaptor->GetPortAttribute = W100GetPortAttribute;
++ adaptor->QueryBestSize = W100QueryBestSize;
++ adaptor->PutImage = W100PutImage;
++ adaptor->ReputImage = NULL;
++ adaptor->QueryImageAttributes = W100QueryImageAttributes;
++
++ REGION_INIT(pScreen, &pPortPriv->clip, NullBox, 0);
++
++ w100s->pAdaptor = adaptor;
++
++ xvBrightness = MAKE_ATOM("XV_BRIGHTNESS");
++ xvColorKey = MAKE_ATOM("XV_COLORKEY");
++ xvMaxOverlaySize = MAKE_ATOM("XV_MAXOVERLAYSIZE");
++
++ pPortPriv->maxOverlaySize = OVL_MAX_SIZE;
++ pPortPriv->colorKey = 0xff00;
++ pPortPriv->brightness = W100GetBrightness(w100c);
++ return adaptor;
++}
++
++Bool W100InitVideo(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100ScreenInfo(pScreenPriv);
++ W100CardInfo(pScreenPriv);
++ KdScreenInfo *screen = pScreenPriv->screen;
++ KdVideoAdaptorPtr *adaptors, *newAdaptors = NULL;
++ KdVideoAdaptorPtr newAdaptor = NULL;
++ int num_adaptors;
++
++ w100s->pAdaptor = NULL;
++
++ if (w100c->reg_base == NULL)
++ return FALSE;
++
++ num_adaptors = KdXVListGenericAdaptors(screen, &adaptors);
++
++ newAdaptor = W100SetupImageVideo(pScreen);
++
++ if (newAdaptor) {
++ 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
++W100FiniVideo(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ W100ScreenInfo(pScreenPriv);
++ KdVideoAdaptorPtr adaptor = w100s->pAdaptor;
++ W100PortPrivPtr pPortPriv;
++ int i;
++
++ if (!adaptor)
++ return;
++
++ pPortPriv = (W100PortPrivPtr)(&adaptor->pPortPrivates[0].ptr);
++ REGION_UNINIT(pScreen, &pPortPriv->clip);
++
++ xfree(adaptor);
++ w100s->pAdaptor = NULL;
++}
++
+--- /dev/null
++++ xorg-server-X11R7.1-1.1.0.work/hw/kdrive/imageon/imageon_support.h
+@@ -0,0 +1,98 @@
++/*
++ * Copyright © 2007 Manuel Teira
++ *
++ * 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 Manuel Teira not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Manuel Teira makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * MANUEL TEIRA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL MANUEL TEIRA 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 _IMAGEON_SUPPORT_H_
++#define _IMAGEON_SUPPORT_H
++
++#include "imageon.h"
++
++extern CARD8 W100SolidRop[16];
++extern CARD8 W100BltRop[16];
++
++void W100DisableDisplayUpdate(W100CardInfo *w100c);
++void W100EnableDisplayUpdate(W100CardInfo *w100c);
++void W100SetupGraphicEngine(W100CardInfo *w100c);
++void W100ResetGraphicEngine(W100CardInfo *w100c);
++void W100SetupGraphicWindow(W100CardInfo *w100c);
++void W100EnableGraphicWindow(W100CardInfo *w100c);
++void W100DisableGraphicWindow(W100CardInfo *w100c);
++inline Bool W100WaitCmdFifoEntries(W100CardInfo *w100c, int entries);
++Bool W100WaitIdle(W100CardInfo *w100c);
++void W100ResetContext(W100CardInfo *w100c);
++CARD32 W100ComputeSolidGmc(W100CardInfo *w100c, CARD8 alu);
++CARD32 W100ComputeCopyGmc(W100CardInfo *w100c, CARD8 alu);
++CARD32 W100ComputeAritGmc(W100CardInfo *w100c, CARD8 alu);
++void W100SetXForm(W100CardInfo *w100c, int dx, int dy);
++void W100SetRotation(W100CardInfo *w100c, int randr, Bool mirror);
++void W100SetPixelMask(W100CardInfo *w100c, Pixel mask);
++Bool W100SetSource(KdScreenInfo *screen, CARD32 srcPitch,
++ CARD32 srcOffset, CARD8 bpp);
++Bool W100SetDestination(KdScreenInfo *screen, CARD32 dstPitch,
++ CARD32 dstOffset, CARD8 bpp);
++Bool W100SetSourcePixmap(PixmapPtr pPix);
++Bool W100SetDestinationPixmap(PixmapPtr pPix);
++int W100MapToHWX(W100CardInfo *w100c,
++ int x, int y, int w, int h);
++int W100MapToHWY(W100CardInfo *w100c,
++ int x, int y, int w, int h);
++int W100MapToHWW(W100CardInfo *w100c,
++ int x, int y, int w, int h);
++int W100MapToHWH(W100CardInfo *w100c,
++ int x, int y, int w, int h);
++CARD16 W100XformX(W100CardInfo *w100c, CARD16 x, CARD16 y, CARD16 w, CARD16 h);
++CARD16 W100XformY(W100CardInfo *w100c, CARD16 x, CARD16 y, CARD16 w, CARD16 h);
++CARD16 W100XformW(W100CardInfo *w100c, CARD16 x, CARD16 y, CARD16 w, CARD16 h);
++CARD16 W100XformH(W100CardInfo *w100c, CARD16 x, CARD16 y, CARD16 w, CARD16 h);
++CARD8 W100GetScaler(CARD16 dstsize, CARD16 srcsize);
++CARD16 W100ApplyScaler(CARD16 srcsize, CARD8 scaler);
++static void W100Blt(KdScreenInfo *screen, int randr, int bpp,
++ CARD32 srcOffset, CARD16 srcW, CARD16 srcH, CARD16 srcPitch,
++ CARD32 dstOffset, CARD16 dstPitch,
++ CARD16 dstX, CARD16 dstY);
++static void W100StretchBlt(KdScreenInfo *screen, int randr, int bpp,
++ CARD32 srcOffset, CARD16 srcW, CARD16 srcH,
++ CARD16 srcPitch,
++ CARD32 dstOffset, CARD16 dstPitch,
++ CARD16 dstX, CARD16 dstY,
++ CARD8 xscaler, CARD8 yscaler);
++static void W100ScaledBlt(KdScreenInfo *screen, int randr, int bpp,
++ CARD32 srcOffset, CARD16 srcW, CARD16 srcH,
++ CARD16 srcPitch,
++ CARD32 dstOffset, CARD16 dstPitch,
++ CARD16 dstX, CARD16 dstY,
++ CARD8 xscaler, CARD8 yscaler);
++void W100PlanarBlt(KdScreenInfo *screen, int planes, int bpp, int randr,
++ KdOffscreenArea *src, int srcW, int srcPitch, int srcH,
++ KdOffscreenArea *dst, int planeOffsets[],
++ int dstW, int dstPitch, int dstH,
++ int dstX, int dstY);
++CARD8 W100GetBrightness(W100CardInfo *w100c);
++void W100SetBrightness(W100CardInfo *w100c, CARD8 value);
++int W100GetRotation(W100CardInfo *w100c);
++W100ModeSpec *W100GetModeSpec(W100CardInfo *w100c, W100Mode *mode);
++Bool W100GetFbMode(W100CardInfo *w100c, W100Mode *mode);
++Bool W100CheckFbMode(W100CardInfo *w100c, W100ModeSpec *modes);
++W100ModeSpec *W100GetBestMode(W100CardInfo *w100c, int width, int height);
++void W100TransformTsLibCoordinates(long *x, long *y, void *closure);
++Bool W100SysFsGet(W100CardInfo *w100c, const char *path, char *value);
++Bool W100SysFsSet(W100CardInfo *w100c, const char *path, const char *value);
++#endif
+--- xorg-server-X11R7.1-1.1.0.work/hw/kdrive/linux/tslib.c~kdrive-imageon
++++ xorg-server-X11R7.1-1.1.0.work/hw/kdrive/linux/tslib.c
+@@ -92,6 +92,10 @@
+ void (*tslib_raw_event_hook)(int x, int y, int pressure, void *closure);
+ void *tslib_raw_event_closure;
+
++/* To support randr hot resolution change */
++void (*tslib_transform_coords)(long *x, long *y, void *closure);
++void *tslib_transform_closure;
++
+ int TsInputType = 0;
+ int KdTsPhyScreen = 0; /* XXX Togo .. */
+
+@@ -121,7 +125,9 @@
+ flags = (event.pressure) ? KD_BUTTON_1 : 0;
+ x = event.x;
+ y = event.y;
+-
++ if (tslib_transform_coords) {
++ tslib_transform_coords(&x, &y, tslib_transform_closure);
++ }
+ KdEnqueueMouseEvent (mi, flags, x, y);
+ }
+ }
diff --git a/packages/xorg-xserver/xserver-kdrive/kdrive-vidmemarea.patch b/packages/xorg-xserver/xserver-kdrive/kdrive-vidmemarea.patch
new file mode 100644
index 0000000000..ed5b6f05cb
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive/kdrive-vidmemarea.patch
@@ -0,0 +1,756 @@
+
+# Author : Manuel Teira <manuel.teira@telefonica.net> (sirfred in #oe)
+# Description: Support for multiple memory video zones in kdrive. Make offscreen
+# areas aware of the memory video zone it belongs to. Change the fbdev driver to
+# honour this new model.
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kdrive.c~kdrive-vidmemarea
++++ xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kdrive.c
+@@ -908,9 +908,10 @@
+ ret = (*pScreen->CloseScreen) (index, pScreen);
+ else
+ ret = TRUE;
+-
+- if (screen->off_screen_base < screen->memory_size)
+- KdOffscreenFini (pScreen);
++
++ if (KdHasOffscreen(screen)) {
++ KdOffscreenFini(pScreen);
++ }
+
+ if (pScreenPriv->dpmsState != KD_DPMS_NORMAL)
+ (*card->cfuncs->dpms) (pScreen, KD_DPMS_NORMAL);
+@@ -1219,8 +1220,9 @@
+ if (!(*card->cfuncs->initAccel) (pScreen))
+ screen->dumb = TRUE;
+
+- if (screen->off_screen_base < screen->memory_size)
+- KdOffscreenInit (pScreen);
++ if (KdHasOffscreen(screen)) {
++ KdOffscreenInit(pScreen);
++ }
+
+ #ifdef PSEUDO8
+ (void) p8Init (pScreen, PSEUDO8_USE_DEFAULT);
+--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kdrive.h~kdrive-vidmemarea
++++ xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kdrive.h
+@@ -63,6 +63,9 @@
+ #define KD_MAX_CARD_ADDRESS 8
+ #endif
+
++#define KD_VIDMEM_MINPRIO 0
++#define KD_VIDMEM_MAXPRIO 255
++
+ /*
+ * Configuration information per video card
+ */
+@@ -115,6 +118,13 @@
+
+ typedef void (*KdOffscreenSaveProc) (ScreenPtr pScreen, KdOffscreenArea *area);
+
++typedef struct _KdVideoMemArea {
++ CARD8 priority;
++ CARD8 *base;
++ CARD32 size;
++ CARD32 available_offset;
++} KdVideoMemArea;
++
+ typedef enum _KdOffscreenState {
+ KdOffscreenAvail,
+ KdOffscreenRemovable,
+@@ -127,7 +137,8 @@
+ int size;
+ int score;
+ pointer privData;
+-
++ KdVideoMemArea *vidmem;
++ int pool;
+ KdOffscreenSaveProc save;
+
+ KdOffscreenState state;
+@@ -138,6 +149,7 @@
+ #define RR_Rotate_All (RR_Rotate_0|RR_Rotate_90|RR_Rotate_180|RR_Rotate_270)
+ #define RR_Reflect_All (RR_Reflect_X|RR_Reflect_Y)
+
++
+ typedef struct _KdScreenInfo {
+ struct _KdScreenInfo *next;
+ KdCardInfo *card;
+@@ -155,9 +167,8 @@
+ int mynum;
+ DDXPointRec origin;
+ KdFrameBuffer fb[KD_MAX_FB];
+- CARD8 *memory_base;
+- unsigned long memory_size;
+- unsigned long off_screen_base;
++ KdVideoMemArea **videomem_areas;
++ int num_videomem_areas;
+ } KdScreenInfo;
+
+ typedef struct _KdCardFuncs {
+@@ -187,7 +198,6 @@
+
+ void (*getColors) (ScreenPtr, int, int, xColorItem *);
+ void (*putColors) (ScreenPtr, int, int, xColorItem *);
+-
+ } KdCardFuncs;
+
+ #define KD_MAX_PSEUDO_DEPTH 8
+@@ -203,7 +213,8 @@
+
+ int dpmsState;
+
+- KdOffscreenArea *off_screen_areas;
++ KdOffscreenArea **offscreen_pools;
++ int num_offscreen_pools;
+
+ ColormapPtr pInstalledmap[KD_MAX_FB]; /* current colormap */
+ xColorItem systemPalette[KD_MAX_PSEUDO_SIZE];/* saved windows colors */
+@@ -881,6 +892,15 @@
+ KdOffscreenInit (ScreenPtr pScreen);
+
+ KdOffscreenArea *
++KdOffscreenAllocPrio (ScreenPtr pScreen, int size, int align,
++ Bool locked,
++ KdOffscreenSaveProc save,
++ pointer privData,
++ int minPriority,
++ int maxPriority,
++ Bool allowEviction);
++
++KdOffscreenArea *
+ KdOffscreenAlloc (ScreenPtr pScreen, int size, int align,
+ Bool locked,
+ KdOffscreenSaveProc save,
+--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kaa.c~kdrive-vidmemarea
++++ xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kaa.c
+@@ -160,7 +160,7 @@
+ pPixmap->drawable.width,
+ pPixmap->drawable.height));
+ pPixmap->devKind = pitch;
+- pPixmap->devPrivate.ptr = (pointer) ((CARD8 *) pScreenPriv->screen->memory_base + pKaaPixmap->area->offset);
++ pPixmap->devPrivate.ptr = (pointer) ((CARD8 *) pKaaPixmap->area->vidmem->base + pKaaPixmap->area->offset);
+ pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
+ return TRUE;
+ }
+@@ -198,7 +198,7 @@
+
+ dst = pPixmap->devPrivate.ptr;
+ dst_pitch = pPixmap->devKind;
+-
++
+ bytes = src_pitch < dst_pitch ? src_pitch : dst_pitch;
+
+ kaaWaitSync (pPixmap->drawable.pScreen);
+@@ -336,10 +336,16 @@
+ {
+ ScreenPtr pScreen = p->drawable.pScreen;
+ KdScreenPriv(pScreen);
++ int index;
+
+- return ((unsigned long) ((CARD8 *) p->devPrivate.ptr -
+- (CARD8 *) pScreenPriv->screen->memory_base) <
+- pScreenPriv->screen->memory_size);
++ for (index = 0; index < pScreenPriv->screen->num_videomem_areas; index++) {
++ KdVideoMemArea *vidmem = pScreenPriv->screen->videomem_areas[index];
++ if ((((CARD8 *)p->devPrivate.ptr) >= vidmem->base) &&
++ (((CARD8 *)p->devPrivate.ptr) <= (vidmem->base + vidmem->size))) {
++ return TRUE;
++ }
++ }
++ return FALSE;
+ }
+
+ PixmapPtr
+@@ -1060,6 +1066,7 @@
+ KdCheckPaintWindow (pWin, pRegion, what);
+ }
+
++
+ Bool
+ kaaDrawInit (ScreenPtr pScreen,
+ KaaScreenInfoPtr pScreenInfo)
+@@ -1109,7 +1116,7 @@
+ * Hookup offscreen pixmaps
+ */
+ if ((pKaaScr->info->flags & KAA_OFFSCREEN_PIXMAPS) &&
+- screen->off_screen_base < screen->memory_size)
++ KdHasOffscreen(screen))
+ {
+ if (!AllocatePixmapPrivate(pScreen, kaaPixmapPrivateIndex,
+ sizeof (KaaPixmapPrivRec)))
+--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/koffscreen.c~kdrive-vidmemarea
++++ xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/koffscreen.c
+@@ -41,16 +41,20 @@
+ {
+ KdScreenPriv (pScreen);
+ KdOffscreenArea *prev = 0, *area;
+-
+- assert (pScreenPriv->screen->off_screen_areas->area.offset == 0);
+- for (area = pScreenPriv->off_screen_areas; area; area = area->next)
+- {
+- if (prev)
+- assert (prev->offset + prev->size == area->offset);
++ int index;
++
++ for (index = 0; index < pScreenPriv->num_offscreen_pools; index++) {
++ area = pScreenPriv->offscreen_pools[index];
++ assert (area->vidmem->available_offset - area.offset == 0);
++ while(area) {
++ if (prev)
++ assert (prev->offset + prev->size == area->offset);
+
+- prev = area;
++ prev = area;
++ area = area->next;
++ }
++ assert (prev->offset + prev->size == prev->vidmem->size);
+ }
+- assert (prev->offset + prev->size == pScreenPriv->screen->memory_size);
+ }
+ #else
+ #define KdOffscreenValidate(s)
+@@ -65,101 +69,133 @@
+ }
+
+ KdOffscreenArea *
+-KdOffscreenAlloc (ScreenPtr pScreen, int size, int align,
+- Bool locked,
+- KdOffscreenSaveProc save,
+- pointer privData)
++KdOffscreenAllocPrio (ScreenPtr pScreen, int size, int align,
++ Bool locked,
++ KdOffscreenSaveProc save,
++ pointer privData,
++ int minPriority,
++ int maxPriority,
++ Bool allowEviction)
+ {
+ KdOffscreenArea *area, *begin, *best;
+ KdScreenPriv (pScreen);
+ int tmp, real_size = 0, best_score;
++ int index;
++ Bool canFit = FALSE;
+
+- KdOffscreenValidate (pScreen);
+ if (!align)
+ align = 1;
+
+ if (!size)
+ {
+- DBG_OFFSCREEN (("Alloc 0x%x -> EMPTY\n", size));
++ DBG_OFFSCREEN(("Alloc 0x%x -> EMPTY\n", size));
+ return NULL;
+ }
+
+ /* throw out requests that cannot fit */
+- if (size > (pScreenPriv->screen->memory_size - pScreenPriv->screen->off_screen_base))
+- {
+- DBG_OFFSCREEN (("Alloc 0x%x -> TOBIG\n", size));
+- return NULL;
++ for (index = 0; index < pScreenPriv->screen->num_videomem_areas; index++) {
++ KdVideoMemArea *vidmem = pScreenPriv->screen->videomem_areas[index];
++ if ((vidmem->priority <= maxPriority) &&
++ (vidmem->priority >= minPriority)) {
++ if (size <= (vidmem->size - vidmem->available_offset)) {
++ canFit = TRUE;
++ break;
++ }
++ }
+ }
+-
+- /* Try to find a free space that'll fit. */
+- for (area = pScreenPriv->off_screen_areas; area; area = area->next)
++ if (!canFit)
+ {
+- /* skip allocated areas */
+- if (area->state != KdOffscreenAvail)
+- continue;
++ DBG_OFFSCREEN(("Alloc 0x%x -> TOOBIG\n", size));
++ return NULL;
++ }
+
+- /* adjust size to match alignment requirement */
+- real_size = size;
+- tmp = area->offset % align;
+- if (tmp)
+- real_size += (align - tmp);
+-
+- /* does it fit? */
+- if (real_size <= area->size)
+- break;
++ for (index = 0; index < pScreenPriv->num_offscreen_pools; index++) {
++ /* Look just in the head, as all the areas of the pool have
++ the same vidmem */
++ area = pScreenPriv->offscreen_pools[index];
++ if ((area->vidmem->priority > maxPriority) ||
++ (area->vidmem->priority < minPriority))
++ continue;
++
++ /* Try to find a free space that'll fit. */
++ for (area = pScreenPriv->offscreen_pools[index]; area;
++ area = area->next) {
++ /* skip allocated areas */
++ if (area->state != KdOffscreenAvail)
++ continue;
++
++ /* adjust size to match alignment requirement */
++ real_size = size;
++ tmp = area->offset % align;
++ if (tmp)
++ real_size += (align - tmp);
++
++ /* does it fit? */
++ if (real_size <= area->size)
++ break;
++ }
++ if (area)
++ break;
+ }
+-
+- if (!area)
+- {
++
++ if (!area && allowEviction) {
+ /*
+ * Kick out existing users to make space.
+ *
+ * First, locate a region which can hold the desired object.
+ */
++ for (index = 0; index < pScreenPriv->num_offscreen_pools; index++) {
++ if ((area->vidmem->priority > maxPriority) ||
++ (area->vidmem->priority < minPriority))
++ continue;
+
+- /* prev points at the first object to boot */
+- best = NULL;
+- best_score = MAXINT;
+- for (begin = pScreenPriv->off_screen_areas; begin != NULL;
+- begin = begin->next)
+- {
+- int avail, score;
+- KdOffscreenArea *scan;
++ /* prev points at the first object to boot */
++ best = NULL;
++ best_score = MAXINT;
+
+- if (begin->state == KdOffscreenLocked)
+- continue;
++ for (begin = pScreenPriv->offscreen_pools[index]; begin != NULL;
++ begin = begin->next) {
++ int avail, score;
++ KdOffscreenArea *scan;
+
+- /* adjust size to match alignment requirement */
+- real_size = size;
+- tmp = begin->offset % align;
+- if (tmp)
+- real_size += (align - tmp);
++ if (begin->state == KdOffscreenLocked)
++ continue;
++
++ /* adjust size to match alignment requirement */
++ real_size = size;
++ tmp = begin->offset % align;
++ if (tmp)
++ real_size += (align - tmp);
+
+- avail = 0;
+- score = 0;
+- /* now see if we can make room here, and how "costly" it'll be. */
+- for (scan = begin; scan != NULL; scan = scan->next)
+- {
+- if (scan->state == KdOffscreenLocked) {
+- /* Can't make room here, start after this locked area. */
+- begin = scan->next;
+- break;
+- }
+- /* Score should only be non-zero for KdOffscreenRemovable */
+- score += scan->score;
+- avail += scan->size;
+- if (avail >= real_size)
+- break;
+- }
+- /* Is it the best option we've found so far? */
+- if (avail >= real_size && score < best_score) {
+- best = begin;
+- best_score = score;
+- }
+- }
+- area = best;
+- if (!area)
+- {
++ avail = 0;
++ score = 0;
++ /* now see if we can make room here,
++ and how "costly" it'll be. */
++ for (scan = begin; scan != NULL; scan = scan->next) {
++ if (scan->state == KdOffscreenLocked) {
++ /* Can't make room here,
++ start after this locked area. */
++ begin = scan->next;
++ break;
++ }
++ /* Score should only be non-zero for KdOffscreenRemovable */
++ score += scan->score;
++ avail += scan->size;
++ if (avail >= real_size)
++ break;
++ }
++ /* Is it the best option we've found so far? */
++ if (avail >= real_size && score < best_score) {
++ best = begin;
++ best_score = score;
++ }
++ }
++ area = best;
++ if (area)
++ break;
++ }
++
++ if (!area) {
+ DBG_OFFSCREEN (("Alloc 0x%x -> NOSPACE\n", size));
+ /* Could not allocate memory */
+ KdOffscreenValidate (pScreen);
+@@ -180,16 +216,14 @@
+ /*
+ * Now get the system to merge the other needed areas together
+ */
+- while (area->size < real_size)
+- {
+- assert (area->next && area->next->state == KdOffscreenRemovable);
++ while (area->size < real_size) {
++ assert (area->next && area->next->state == KdOffscreenRemovable);
+ (void) KdOffscreenKickOut (pScreen, area->next);
+ }
+ }
+-
++
+ /* save extra space in new area */
+- if (real_size < area->size)
+- {
++ if (real_size < area->size) {
+ KdOffscreenArea *new_area = xalloc (sizeof (KdOffscreenArea));
+ if (!new_area)
+ return NULL;
+@@ -198,9 +232,14 @@
+ new_area->state = KdOffscreenAvail;
+ new_area->save = 0;
+ new_area->score = 0;
++ new_area->vidmem = area->vidmem;
++ new_area->pool = area->pool;
+ new_area->next = area->next;
+ area->next = new_area;
+ area->size = real_size;
++ DBG_OFFSCREEN (("New OffscreenArea at %p (offset:0x%08x, size:0x%08x, pool:%d\n", area, area->offset, area->size, area->pool));
++
++
+ }
+ /*
+ * Mark this area as in use
+@@ -212,42 +251,80 @@
+ area->privData = privData;
+ area->save = save;
+ area->score = 0;
+-
++
+ area->save_offset = area->offset;
+ {
+ int tmp = area->offset % align;
+ if (tmp)
+ area->offset += (align - tmp);
+ }
+-
++
+ KdOffscreenValidate (pScreen);
+
+ DBG_OFFSCREEN (("Alloc 0x%x -> 0x%x\n", size, area->offset));
+ return area;
+ }
+
++Bool
++KdHasOffscreen(KdScreenInfo *screen)
++{
++ int index;
++ DBG_OFFSCREEN (("KdHasOffscreen\n"));
++
++ for (index = 0; index < screen->num_videomem_areas; index++) {
++ KdVideoMemArea *vidmem = screen->videomem_areas[index];
++ if (vidmem->available_offset < vidmem->size) {
++ return TRUE;
++ }
++ }
++ return FALSE;
++}
++
++KdOffscreenArea *
++KdOffscreenAlloc (ScreenPtr pScreen, int size, int align,
++ Bool locked,
++ KdOffscreenSaveProc save,
++ pointer privData)
++{
++ DBG_OFFSCREEN (("KdOffscreenAlloc(size:%d, align:%d, locked:%d)\n",
++ size, align, locked));
++ return KdOffscreenAllocPrio(pScreen, size, align,
++ locked,
++ save,
++ privData,
++ KD_VIDMEM_MINPRIO,
++ KD_VIDMEM_MAXPRIO,
++ TRUE);
++}
++
+ void
+ KdOffscreenSwapOut (ScreenPtr pScreen)
+ {
+ KdScreenPriv (pScreen);
++ int index;
++
++ DBG_OFFSCREEN (("KdOffscreenSwapOut\n"));
+
+ KdOffscreenValidate (pScreen);
+- /* loop until a single free area spans the space */
+- for (;;)
+- {
+- KdOffscreenArea *area = pScreenPriv->off_screen_areas;
++
++ for (index = 0; index < pScreenPriv->num_offscreen_pools; index++) {
++ /* loop until a single free area spans the space */
++ for (;;)
++ {
++ KdOffscreenArea *area = pScreenPriv->offscreen_pools[index];
+
+- if (!area)
+- break;
+- if (area->state == KdOffscreenAvail)
+- {
+- area = area->next;
+- if (!area)
+- break;
+- }
+- assert (area->state != KdOffscreenAvail);
+- (void) KdOffscreenKickOut (pScreen, area);
+- KdOffscreenValidate (pScreen);
++ if (!area)
++ break;
++ if (area->state == KdOffscreenAvail)
++ {
++ area = area->next;
++ if (!area)
++ break;
++ }
++ assert (area->state != KdOffscreenAvail);
++ (void) KdOffscreenKickOut (pScreen, area);
++ KdOffscreenValidate (pScreen);
++ }
+ }
+ KdOffscreenValidate (pScreen);
+ KdOffscreenFini (pScreen);
+@@ -256,6 +333,8 @@
+ void
+ KdOffscreenSwapIn (ScreenPtr pScreen)
+ {
++ KdScreenPriv (pScreen);
++ DBG_OFFSCREEN (("KdOffscreenSwapIn\n"));
+ KdOffscreenInit (pScreen);
+ }
+
+@@ -264,7 +343,7 @@
+ KdOffscreenMerge (KdOffscreenArea *area)
+ {
+ KdOffscreenArea *next = area->next;
+-
++ //DBG_OFFSCREEN (("KdOffscreenMerge %p\n", area));
+ /* account for space */
+ area->size += next->size;
+ /* frob pointer */
+@@ -278,8 +357,9 @@
+ KdScreenPriv(pScreen);
+ KdOffscreenArea *next = area->next;
+ KdOffscreenArea *prev;
+-
+- DBG_OFFSCREEN (("Free 0x%x -> 0x%x\n", area->size, area->offset));
++
++ DBG_OFFSCREEN (("KdOffscreenFree 0x%x -> 0x%x\n",
++ area->size, area->offset));
+ KdOffscreenValidate (pScreen);
+
+ area->state = KdOffscreenAvail;
+@@ -290,10 +370,11 @@
+ /*
+ * Find previous area
+ */
+- if (area == pScreenPriv->off_screen_areas)
++ if (area == pScreenPriv->offscreen_pools[area->pool])
+ prev = 0;
+ else
+- for (prev = pScreenPriv->off_screen_areas; prev; prev = prev->next)
++ for (prev = pScreenPriv->offscreen_pools[area->pool];
++ prev; prev = prev->next)
+ if (prev->next == area)
+ break;
+
+@@ -317,21 +398,30 @@
+ {
+ KaaPixmapPriv (pPixmap);
+ KdScreenPriv (pPixmap->drawable.pScreen);
++ int index;
+ static int iter = 0;
+
++
+ if (!pKaaPixmap->area)
+ return;
+
++ /*
++ DBG_OFFSCREEN(("KdOffscreenMarkUsed(offset:0x%08x, pool:%d)\n",
++ pKaaPixmap->area->offset,
++ pKaaPixmap->area->pool));
++ */
+ /* The numbers here are arbitrary. We may want to tune these. */
+ pKaaPixmap->area->score += 100;
+ if (++iter == 10) {
+ KdOffscreenArea *area;
+- for (area = pScreenPriv->off_screen_areas; area != NULL;
+- area = area->next)
+- {
+- if (area->state == KdOffscreenRemovable)
+- area->score = (area->score * 7) / 8;
+- }
++ for (index = 0; index < pScreenPriv->num_offscreen_pools; index++) {
++ for (area = pScreenPriv->offscreen_pools[index]; area != NULL;
++ area = area->next)
++ {
++ if (area->state == KdOffscreenRemovable)
++ area->score = (area->score * 7) / 8;
++ }
++ }
+ }
+ }
+
+@@ -340,23 +430,41 @@
+ {
+ KdScreenPriv (pScreen);
+ KdOffscreenArea *area;
++ KdVideoMemArea *vidmem;
++ int index, num_offscreen;
+
+- /* Allocate a big free area */
+- area = xalloc (sizeof (KdOffscreenArea));
++ DBG_OFFSCREEN (("KdOffscreenInit\n"));
++ num_offscreen = 0;
++ pScreenPriv->num_offscreen_pools = 0;
++ pScreenPriv->offscreen_pools = NULL;
+
+- if (!area)
+- return FALSE;
++ for (index = 0; index < pScreenPriv->screen->num_videomem_areas; index++) {
++ vidmem = pScreenPriv->screen->videomem_areas[index];
++ DBG_OFFSCREEN (("Searching vidmemarea base:0x%p, size:0x%08x, available_offset:0x%08x\n", vidmem->base, vidmem->size, vidmem->available_offset));
++ if (vidmem->available_offset < vidmem->size) {
++ pScreenPriv->offscreen_pools = xrealloc(pScreenPriv->offscreen_pools,
++ sizeof(KdOffscreenArea*) * (pScreenPriv->num_offscreen_pools + 1));
++ if (!pScreenPriv->offscreen_pools) {
++ return FALSE;
++ }
++ pScreenPriv->offscreen_pools[pScreenPriv->num_offscreen_pools] =
++ area = xcalloc(sizeof(KdOffscreenArea), 1);
++ if (!area)
++ return FALSE;
++
++ area->state = KdOffscreenAvail;
++ area->vidmem = vidmem;
++ area->offset = vidmem->available_offset;
++ area->size = vidmem->size - vidmem->available_offset;
++ area->save = 0;
++ area->pool = pScreenPriv->num_offscreen_pools;
++ area->next = NULL;
++ area->score = 0;
++ pScreenPriv->num_offscreen_pools++;
++ DBG_OFFSCREEN (("New OffscreenArea at %p (offset:0x%08x, size:0x%08x, pool:%d)\n", area, area->offset, area->size, area->pool));
++ }
++ }
+
+- area->state = KdOffscreenAvail;
+- area->offset = pScreenPriv->screen->off_screen_base;
+- area->size = pScreenPriv->screen->memory_size - area->offset;
+- area->save = 0;
+- area->next = NULL;
+- area->score = 0;
+-
+- /* Add it to the free areas */
+- pScreenPriv->off_screen_areas = area;
+-
+ KdOffscreenValidate (pScreen);
+
+ return TRUE;
+@@ -367,11 +475,17 @@
+ {
+ KdScreenPriv (pScreen);
+ KdOffscreenArea *area;
+-
+- /* just free all of the area records */
+- while ((area = pScreenPriv->off_screen_areas))
+- {
+- pScreenPriv->off_screen_areas = area->next;
+- xfree (area);
++ int index;
++
++ DBG_OFFSCREEN (("KdOffscreenFini\n"));
++ for (index = 0; index < pScreenPriv->num_offscreen_pools; index++) {
++ /* just free all of the area records */
++ while ((area = pScreenPriv->offscreen_pools[index])) {
++ pScreenPriv->offscreen_pools[index] = area->next;
++ xfree (area);
++ }
+ }
++ xfree(pScreenPriv->offscreen_pools);
++ pScreenPriv->offscreen_pools = NULL;
++ pScreenPriv->num_offscreen_pools = 0;
+ }
+--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/fbdev/fbdev.c~kdrive-vidmemarea
++++ xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/fbdev/fbdev.c
+@@ -330,6 +330,7 @@
+ FbdevScrPriv *scrpriv = screen->driver;
+ KdMouseMatrix m;
+ FbdevPriv *priv = screen->card->driver;
++ KdVideoMemArea *vidmem;
+
+ if (scrpriv->randr != RR_Rotate_0)
+ scrpriv->shadow = TRUE;
+@@ -342,15 +343,20 @@
+
+ screen->width = priv->var.xres;
+ screen->height = priv->var.yres;
+- screen->memory_base = (CARD8 *) (priv->fb);
+- screen->memory_size = priv->fix.smem_len;
++ screen->videomem_areas = xcalloc(sizeof(KdVideoMemArea*), 1);
++ screen->videomem_areas[0] = vidmem = xcalloc(sizeof(KdVideoMemArea), 1);
++ screen->num_videomem_areas = 1;
++
++ vidmem->priority = KD_VIDMEM_MINPRIO;
++ vidmem->base = (CARD8 *) (priv->fb);
++ vidmem->size = priv->fix.smem_len;
+
+ if (scrpriv->shadow)
+ {
+ if (!KdShadowFbAlloc (screen, 0,
+ scrpriv->randr & (RR_Rotate_90|RR_Rotate_270)))
+ return FALSE;
+- screen->off_screen_base = screen->memory_size;
++ vidmem->available_offset = vidmem->size;
+ }
+ else
+ {
+@@ -358,7 +364,7 @@
+ screen->fb[0].pixelStride = (priv->fix.line_length * 8 /
+ priv->var.bits_per_pixel);
+ screen->fb[0].frameBuffer = (CARD8 *) (priv->fb);
+- screen->off_screen_base = screen->fb[0].byteStride * screen->height;
++ vidmem->available_offset = screen->fb[0].byteStride * screen->height;
+ }
+
+ return TRUE;
diff --git a/packages/xorg-xserver/xserver-kdrive/kmode-palm.patch b/packages/xorg-xserver/xserver-kdrive/kmode-palm.patch
new file mode 100644
index 0000000000..255e707b55
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive/kmode-palm.patch
@@ -0,0 +1,34 @@
+--- kmode.c 2006-05-03 19:48:42.000000000 +0200
++++ xserver/hw/kdrive/src/kmode.c 2006-05-03 19:50:43.000000000 +0200
+@@ -32,6 +32,31 @@
+ /* H V Hz KHz */
+ /* FP BP BLANK POLARITY */
+
++ /* Treo 650 */
++
++ { 320, 320, 64, 16256,
++ 17, 12, 32, KdSyncNegative,
++ 1, 11, 14, KdSyncNegative,
++ },
++
++ { 320, 320, 64, 0,
++ 0, 0, 0, KdSyncNegative,
++ 0, 0, 0, KdSyncNegative,
++ },
++
++ /* LifeDrive/T3/TX modes */
++
++ { 320, 480, 64, 16256,
++ 17, 12, 32, KdSyncNegative,
++ 1, 11, 14, KdSyncNegative,
++ },
++
++ { 480, 320, 64, 0,
++ 0, 0, 0, KdSyncNegative,
++ 0, 0, 0, KdSyncNegative,
++ },
++
++
+ /* IPAQ modeline:
+ *
+ * Modeline "320x240" 5.7222 320 337 340 352 240 241 244 254"
diff --git a/packages/xorg-xserver/xserver-kdrive/w100-fix-offscreen-bmp.patch b/packages/xorg-xserver/xserver-kdrive/w100-fix-offscreen-bmp.patch
new file mode 100644
index 0000000000..39bc22c6b3
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive/w100-fix-offscreen-bmp.patch
@@ -0,0 +1,15 @@
+Patch suggested by Manuel Teira to actually enable offscreen pixmap
+acceleration in Xw100. Value 16 is empirical, works well on hx4700,
+but in case of issues, consider double it (other accelerated drivers
+use bigger values than 16).
+
+--- xorg-server-1.2.0/hw/kdrive/w100/ati_draw.c.org 2007-04-04 10:28:57.000000000 +0000
++++ xorg-server-1.2.0/hw/kdrive/w100/ati_draw.c 2007-04-06 14:43:40.000000000 +0000
+@@ -433,6 +433,7 @@
+ * or kaaPixmapUseScreen. But this is probably caused by some bug in this
+ * driver... */
+ atis->kaa.flags |= KAA_OFFSCREEN_PIXMAPS;
++ atis->kaa.pitchAlign = 16;
+ if (!kaaDrawInit(pScreen, &atis->kaa))
+ return FALSE;
+
diff --git a/packages/xorg-xserver/xserver-kdrive_1.2.0.bb b/packages/xorg-xserver/xserver-kdrive_1.2.0.bb
new file mode 100644
index 0000000000..2ba1b09923
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive_1.2.0.bb
@@ -0,0 +1,19 @@
+require xserver-kdrive-common.inc
+
+DEPENDS += "libxkbfile libxcalibrate"
+
+PE = "1"
+PR = "r6"
+
+SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
+ ${KDRIVE_COMMON_PATCHES} \
+ file://enable-xcalibrate.patch;patch=1 \
+ file://w100.patch;patch=1 \
+ file://w100-fix-offscreen-bmp.patch;patch=1 \
+ "
+
+S = "${WORKDIR}/xorg-server-${PV}"
+
+W100_OECONF = "--disable-w100"
+W100_OECONF_arm = "--enable-w100"
+
diff --git a/packages/xorg-xserver/xserver-kdrive_X11R7.1-1.1.0.bb b/packages/xorg-xserver/xserver-kdrive_X11R7.1-1.1.0.bb
index 64a49aed68..3f97527553 100644
--- a/packages/xorg-xserver/xserver-kdrive_X11R7.1-1.1.0.bb
+++ b/packages/xorg-xserver/xserver-kdrive_X11R7.1-1.1.0.bb
@@ -1,71 +1,18 @@
-LICENSE = "MIT"
-DEPENDS = "tslib virtual/libsdl xproto libxdmcp xextproto xtrans libxau virtual/libx11 libxext libxrandr fixesproto damageproto libxfont resourceproto compositeproto xcalibrateext recordproto videoproto scrnsaverproto"
+require xserver-kdrive-common.inc
-PR = "r5"
+DEPENDS += "xcalibrateext"
-PROVIDES = "virtual/xserver"
-RPROVIDES = "virtual/xserver"
-PACKAGES =+ "xserver-kdrive-fbdev xserver-kdrive-sdl xserver-kdrive-fake xserver-kdrive-xephyr xserver-kdrive-epson xserver-kdrive-w100"
-SECTION = "x11/base"
-DESCRIPTION = "X server from freedesktop.org"
-DESCRIPTION_xserver-kdrive-fbdev = "X server from freedesktop.org, supporting generic framebuffer devices"
-DESCRIPTION_xserver-kdrive-fake = "Fake X server"
-DESCRIPTION_xserver-kdrive-xephyr = "X server in an X window"
-DESCRIPTION_xserver-kdrive-epson = "X server from freedesktop.org, supporting Epson S1D13806 devices"
-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"
+PR = "r10"
-FILES_${PN} += "${libdir}/xserver/SecurityPolicy"
+PACKAGES =+ "xserver-kdrive-w100"
-FILES_xserver-kdrive-fbdev = "${bindir}/Xfbdev"
-FILES_xserver-kdrive-fake = "${bindir}/Xfake"
-FILES_xserver-kdrive-xephyr = "${bindir}/Xephyr"
-FILES_xserver-kdrive-epson = "${bindir}/Xepson"
-FILES_xserver-kdrive-sdl = "${bindir}/Xsdl"
-FILES_xserver-kdrive-w100 = "${bindir}/Xw100"
-
-RDEPENDS_xserver-kdrive-fbdev = "${PN}"
-RDEPENDS_xserver-kdrive-fake = "${PN}"
-RDEPENDS_xserver-kdrive-xephyr = "${PN}"
-RDEPENDS_xserver-kdrive-epson = "${PN}"
-RDEPENDS_xserver-kdrive-sdl = "${PN}"
-RDEPENDS_xserver-kdrive-w100 = "${PN}"
-
-SRC_URI = "http://ftp.x.org/pub/X11R7.1/src/xserver/xorg-server-X11R7.1-1.1.0.tar.bz2 \
- file://kmode.patch;patch=1 \
- file://disable-apm.patch;patch=1 \
- file://no-serial-probing.patch;patch=1 \
- file://kdrive-evdev.patch;patch=1 \
- file://kdrive-use-evdev.patch;patch=1 \
- file://fbdev-not-fix.patch;patch=1 \
- file://enable-builtin-fonts.patch;patch=1 \
- file://optional-xkb.patch;patch=1 \
- file://enable-epson.patch;patch=1 \
- file://disable-xf86-dga-xorgcfg.patch;patch=1 \
+SRC_URI = "${XORG_MIRROR}/X11R7.1/src/xserver/xorg-server-${PV}.tar.bz2 \
+ ${KDRIVE_COMMON_PATCHES} \
+ file://xcalibrate.patch;patch=1 \
file://w100.patch;patch=1 \
- file://enable-tslib.patch;patch=1 \
- file://xcalibrate.patch;patch=1"
-
-SRC_URI_append_mnci = " file://onlyfb.patch;patch=1"
-SRC_URI_append_poodle = " file://xserver-kdrive-poodle.patch;patch=1"
-PACKAGE_ARCH_poodle = "poodle"
+ "
-S = "${WORKDIR}/xorg-server-X11R7.1-1.1.0"
-
-inherit autotools pkgconfig
-
-ARM_INSTRUCTION_SET = "arm"
+S = "${WORKDIR}/xorg-server-${PV}"
W100_OECONF = "--disable-w100"
W100_OECONF_arm = "--enable-w100"
-
-EXTRA_OECONF = "--enable-composite --enable-kdrive \
- --disable-dga --disable-dri --disable-xinerama \
- --disable-xf86misc --disable-xf86vidmode \
- --disable-xorg --disable-xorgcfg \
- --disable-xkb --disable-xnest --disable-xvfb \
- --disable-xevie --disable-xprint --disable-xtrap \
- --disable-dmx ${W100_OECONF} \
- --with-default-font-path=built-ins \
- --enable-tslib --enable-xcalibrate \
- ac_cv_file__usr_share_X11_sgml_defs_ent=no"
diff --git a/packages/xorg-xserver/xserver-kdrive_git.bb b/packages/xorg-xserver/xserver-kdrive_git.bb
index 0fc9ec1997..74d0aed432 100644
--- a/packages/xorg-xserver/xserver-kdrive_git.bb
+++ b/packages/xorg-xserver/xserver-kdrive_git.bb
@@ -1,71 +1,18 @@
-PV = "1.1.0+git${SRCDATE}"
DEFAULT_PREFERENCE = "-2"
-PR = "r7"
+require xserver-kdrive-common.inc
-LICENSE = "MIT"
-DEPENDS = "tslib virtual/libsdl libxkbfile xproto libxdmcp xextproto xtrans libxau virtual/libx11 libxext libxrandr fixesproto damageproto libxfont resourceproto compositeproto libxcalibrate recordproto videoproto scrnsaverproto"
+DEPENDS += "libxkbfile libxcalibrate"
-PROVIDES = "virtual/xserver"
-RPROVIDES = "virtual/xserver"
-PACKAGES =+ "xserver-kdrive-fbdev xserver-kdrive-sdl xserver-kdrive-fake xserver-kdrive-xephyr xserver-kdrive-epson xserver-kdrive-w100"
-SECTION = "x11/base"
-DESCRIPTION = "X server from freedesktop.org"
-DESCRIPTION_xserver-kdrive-fbdev = "X server from freedesktop.org, supporting generic framebuffer devices"
-DESCRIPTION_xserver-kdrive-fake = "Fake X server"
-DESCRIPTION_xserver-kdrive-xephyr = "X server in an X window"
-DESCRIPTION_xserver-kdrive-epson = "X server from freedesktop.org, supporting Epson S1D13806 devices"
-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"
-
-FILES_${PN} += "${libdir}/xserver/SecurityPolicy"
-
-FILES_xserver-kdrive-fbdev = "${bindir}/Xfbdev"
-FILES_xserver-kdrive-fake = "${bindir}/Xfake"
-FILES_xserver-kdrive-xephyr = "${bindir}/Xephyr"
-FILES_xserver-kdrive-epson = "${bindir}/Xepson"
-FILES_xserver-kdrive-sdl = "${bindir}/Xsdl"
-FILES_xserver-kdrive-w100 = "${bindir}/Xw100"
-
-RDEPENDS_xserver-kdrive-fbdev = "${PN}"
-RDEPENDS_xserver-kdrive-fake = "${PN}"
-RDEPENDS_xserver-kdrive-xephyr = "${PN}"
-RDEPENDS_xserver-kdrive-epson = "${PN}"
-RDEPENDS_xserver-kdrive-sdl = "${PN}"
-RDEPENDS_xserver-kdrive-w100 = "${PN}"
+PE = "1"
+PV = "1.2.0+git${SRCDATE}"
+PR = "r8"
SRC_URI = "git://anongit.freedesktop.org/xorg/xserver;protocol=git \
- file://kmode.patch;patch=1 \
- file://disable-apm.patch;patch=1 \
- file://no-serial-probing.patch;patch=1 \
- file://kdrive-evdev.patch;patch=1 \
- file://kdrive-use-evdev.patch;patch=1 \
- file://fbdev-not-fix.patch;patch=1 \
- file://enable-builtin-fonts.patch;patch=1 \
- file://optional-xkb.patch;patch=1 \
+ ${KDRIVE_COMMON_PATCHES} \
+ file://disable-xf86-dga-xorgcfg-1.2.patch;patch=1 \
file://enable-epson.patch;patch=1 \
- file://disable-xf86-dga-xorgcfg-git.patch;patch=1 \
- file://w100.patch;patch=1 \
+ file://build-fix-panoramix.patch;patch=1 \
"
-SRC_URI_append_mnci = " file://onlyfb.patch;patch=1"
-SRC_URI_append_poodle = " file://xserver-kdrive-poodle.patch;patch=1"
-PACKAGE_ARCH_poodle = "poodle"
-
S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig
-
-W100_OECONF = "--disable-w100"
-W100_OECONF_arm = "--enable-w100"
-
-EXTRA_OECONF = "--enable-composite --enable-kdrive \
- --disable-dga --disable-dri --disable-xinerama \
- --disable-xf86misc --disable-xf86vidmode \
- --disable-xorg --disable-xorgcfg \
- --disable-xkb --disable-xnest --disable-xvfb \
- --disable-xevie --disable-xprint --disable-xtrap \
- --disable-dmx ${W100_OECONF} \
- --with-default-font-path=built-ins \
- --enable-tslib --enable-xcalibrate \
- ac_cv_file__usr_share_X11_sgml_defs_ent=no"
diff --git a/packages/xorg-xserver/xserver-xorg_1.2.0.bb b/packages/xorg-xserver/xserver-xorg_1.2.0.bb
new file mode 100644
index 0000000000..900c3266cb
--- /dev/null
+++ b/packages/xorg-xserver/xserver-xorg_1.2.0.bb
@@ -0,0 +1,10 @@
+require xorg-xserver-common.inc
+PE = "1"
+
+SRC_URI += "file://drmfix.patch;patch=1"
+
+EXTRA_OECONF += " ac_cv_file__usr_share_X11_sgml_defs_ent=no "
+
+#DESCRIPTION = ""
+
+#DEPENDS += " "
diff --git a/packages/xorg-xserver/xserver-xorg_X11R7.0-1.0.1.bb b/packages/xorg-xserver/xserver-xorg_X11R7.0-1.0.1.bb
index 2a7ba03431..e91a50a603 100644
--- a/packages/xorg-xserver/xserver-xorg_X11R7.0-1.0.1.bb
+++ b/packages/xorg-xserver/xserver-xorg_X11R7.0-1.0.1.bb
@@ -1,5 +1,7 @@
require xorg-xserver-common.inc
+PR = "r3"
+
#DESCRIPTION = ""
#DEPENDS += " "
diff --git a/packages/xorg-xserver/xserver-xorg_X11R7.1-1.1.0.bb b/packages/xorg-xserver/xserver-xorg_X11R7.1-1.1.0.bb
index 3db5c640c7..3c29684394 100644
--- a/packages/xorg-xserver/xserver-xorg_X11R7.1-1.1.0.bb
+++ b/packages/xorg-xserver/xserver-xorg_X11R7.1-1.1.0.bb
@@ -2,6 +2,8 @@ require xorg-xserver-common.inc
SRC_URI += "file://drmfix.patch;patch=1"
+PR = "r3"
+
EXTRA_OECONF += " ac_cv_file__usr_share_X11_sgml_defs_ent=no "
#DESCRIPTION = ""
diff --git a/packages/xournal/files/no-printing.diff b/packages/xournal/files/no-printing.diff
deleted file mode 100644
index 7a4724e696..0000000000
--- a/packages/xournal/files/no-printing.diff
+++ /dev/null
@@ -1,178 +0,0 @@
-diff -ru xournal-0.2/configure.in xournal-0.2.noprint/configure.in
---- xournal-0.2/configure.in 2006-01-29 22:25:10.000000000 +0000
-+++ xournal-0.2.noprint/configure.in 2006-03-17 13:08:01.000000000 +0000
-@@ -10,11 +10,16 @@
- AM_PROG_CC_STDC
- AC_HEADER_STDC
-
--pkg_modules="gtk+-2.0 >= 2.4.0 libgnomecanvas-2.0 >= 2.4.0 libgnomeprintui-2.2 >= 2.0.0"
-+pkg_modules="gtk+-2.0 >= 2.4.0 libgnomecanvas-2.0 >= 2.4.0"
- PKG_CHECK_MODULES(PACKAGE, [$pkg_modules])
- AC_SUBST(PACKAGE_CFLAGS)
- AC_SUBST(PACKAGE_LIBS)
-
-+#PKG_CHECK_MODULES(GNOMEPRINT, libgnomeprintui-2.2 >= 2.0.0
-+#AC_SUBST(GNOMEPRINT_CFLAGS)
-+#AC_SUBST(GNOMEPRINT_LIBS)
-+AM_CONDITIONAL(ENABLE_PRINTING, false)
-+
- AC_OUTPUT([
- Makefile
- src/Makefile
-diff -ru xournal-0.2/src/main.c xournal-0.2.noprint/src/main.c
---- xournal-0.2/src/main.c 2006-01-29 22:22:52.000000000 +0000
-+++ xournal-0.2.noprint/src/main.c 2006-03-17 13:14:50.000000000 +0000
-@@ -28,7 +28,9 @@
-
- void hide_unimplemented(void)
- {
-+#if ENABLE_PRINTING
- gtk_widget_hide(GET_COMPONENT("filePrintOptions"));
-+#endif
- gtk_widget_hide(GET_COMPONENT("journalFlatten"));
- gtk_widget_hide(GET_COMPONENT("papercolorOther"));
- gtk_widget_hide(GET_COMPONENT("journalApplyAllPages"));
-diff -ru xournal-0.2/src/Makefile.am xournal-0.2.noprint/src/Makefile.am
---- xournal-0.2/src/Makefile.am 2005-12-14 20:54:42.000000000 +0000
-+++ xournal-0.2.noprint/src/Makefile.am 2006-03-17 13:07:47.000000000 +0000
-@@ -7,12 +7,16 @@
-
- bin_PROGRAMS = xournal
-
-+if ENABLE_PRINTING
-+PRINT_SOURCE = xo-print.c xo-print.h
-+endif
-+
- xournal_SOURCES = \
- main.c xournal.h \
- xo-misc.c xo-misc.h \
- xo-file.c xo-file.h \
- xo-paint.c xo-paint.h \
-- xo-print.c xo-print.h \
-+ $(PRINT_SOURCE) \
- xo-support.c xo-support.h \
- xo-interface.c xo-interface.h \
- xo-callbacks.c xo-callbacks.h
-diff -ru xournal-0.2/src/xo-callbacks.c xournal-0.2.noprint/src/xo-callbacks.c
---- xournal-0.2/src/xo-callbacks.c 2006-01-29 19:39:22.000000000 +0000
-+++ xournal-0.2.noprint/src/xo-callbacks.c 2006-03-17 13:12:01.000000000 +0000
-@@ -7,7 +7,9 @@
- #include <gtk/gtk.h>
- #include <libgnomecanvas/libgnomecanvas.h>
- #include <time.h>
-+#if ENABLE_PRINTING
- #include <libgnomeprintui/gnome-print-dialog.h>
-+#endif
- #include <glib/gstdio.h>
-
- #include "xournal.h"
-@@ -17,7 +19,9 @@
- #include "xo-misc.h"
- #include "xo-file.h"
- #include "xo-paint.h"
-+#if ENABLE_PRINTING
- #include "xo-print.h"
-+#endif
-
- void
- on_fileNew_activate (GtkMenuItem *menuitem,
-@@ -261,7 +265,7 @@
-
- }
-
--
-+#if ENABLE_PRINTING
- void
- on_filePrint_activate (GtkMenuItem *menuitem,
- gpointer user_data)
-@@ -407,7 +411,7 @@
-
- g_free(filename);
- }
--
-+#endif
-
- void
- on_fileQuit_activate (GtkMenuItem *menuitem,
-diff -ru xournal-0.2/src/xo-callbacks.h xournal-0.2.noprint/src/xo-callbacks.h
---- xournal-0.2/src/xo-callbacks.h 2006-01-26 20:47:00.000000000 +0000
-+++ xournal-0.2.noprint/src/xo-callbacks.h 2006-03-17 13:08:45.000000000 +0000
-@@ -24,6 +24,7 @@
- on_filePrintOptions_activate (GtkMenuItem *menuitem,
- gpointer user_data);
-
-+#if ENABLE_PRINTING
- void
- on_filePrint_activate (GtkMenuItem *menuitem,
- gpointer user_data);
-@@ -32,6 +33,8 @@
- on_filePrintPDF_activate (GtkMenuItem *menuitem,
- gpointer user_data);
-
-+#endif
-+
- void
- on_fileQuit_activate (GtkMenuItem *menuitem,
- gpointer user_data);
-diff -ru xournal-0.2/src/xo-interface.c xournal-0.2.noprint/src/xo-interface.c
---- xournal-0.2/src/xo-interface.c 2006-01-29 18:58:25.000000000 +0000
-+++ xournal-0.2.noprint/src/xo-interface.c 2006-03-17 13:11:31.000000000 +0000
-@@ -41,10 +41,12 @@
- GtkWidget *fileSave;
- GtkWidget *fileSaveAs;
- GtkWidget *separator1;
-+#if ENABLE_PRINTING
- GtkWidget *filePrintOptions;
- GtkWidget *image501;
- GtkWidget *filePrint;
- GtkWidget *filePrintPDF;
-+#endif
- GtkWidget *separator2;
- GtkWidget *fileQuit;
- GtkWidget *menuEdit;
-@@ -327,6 +329,7 @@
- gtk_container_add (GTK_CONTAINER (menuFile_menu), separator1);
- gtk_widget_set_sensitive (separator1, FALSE);
-
-+#if ENABLE_PRINTING
- filePrintOptions = gtk_image_menu_item_new_with_mnemonic ("Print Options");
- gtk_widget_show (filePrintOptions);
- gtk_container_add (GTK_CONTAINER (menuFile_menu), filePrintOptions);
-@@ -347,6 +350,7 @@
- gtk_widget_show (separator2);
- gtk_container_add (GTK_CONTAINER (menuFile_menu), separator2);
- gtk_widget_set_sensitive (separator2, FALSE);
-+#endif
-
- fileQuit = gtk_image_menu_item_new_from_stock ("gtk-quit", accel_group);
- gtk_widget_show (fileQuit);
-@@ -1522,6 +1526,7 @@
- g_signal_connect ((gpointer) fileSaveAs, "activate",
- G_CALLBACK (on_fileSaveAs_activate),
- NULL);
-+#if ENABLE_PRINTING
- g_signal_connect ((gpointer) filePrintOptions, "activate",
- G_CALLBACK (on_filePrintOptions_activate),
- NULL);
-@@ -1531,6 +1536,7 @@
- g_signal_connect ((gpointer) filePrintPDF, "activate",
- G_CALLBACK (on_filePrintPDF_activate),
- NULL);
-+#endif
- g_signal_connect ((gpointer) fileQuit, "activate",
- G_CALLBACK (on_fileQuit_activate),
- NULL);
-@@ -1941,11 +1947,13 @@
- GLADE_HOOKUP_OBJECT (winMain, fileSave, "fileSave");
- GLADE_HOOKUP_OBJECT (winMain, fileSaveAs, "fileSaveAs");
- GLADE_HOOKUP_OBJECT (winMain, separator1, "separator1");
-+#if ENABLE_PRINTING
- GLADE_HOOKUP_OBJECT (winMain, filePrintOptions, "filePrintOptions");
- GLADE_HOOKUP_OBJECT (winMain, image501, "image501");
- GLADE_HOOKUP_OBJECT (winMain, filePrint, "filePrint");
- GLADE_HOOKUP_OBJECT (winMain, filePrintPDF, "filePrintPDF");
- GLADE_HOOKUP_OBJECT (winMain, separator2, "separator2");
-+#endif
- GLADE_HOOKUP_OBJECT (winMain, fileQuit, "fileQuit");
- GLADE_HOOKUP_OBJECT (winMain, menuEdit, "menuEdit");
- GLADE_HOOKUP_OBJECT (winMain, menuEdit_menu, "menuEdit_menu");
diff --git a/packages/xournal/files/xournal.desktop b/packages/xournal/files/xournal.desktop
new file mode 100644
index 0000000000..52dde1e47c
--- /dev/null
+++ b/packages/xournal/files/xournal.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Version=0.3.3
+Type=Application
+Name=Xournal
+Comment=Notetaking tool
+Exec=/usr/bin/xournal
+Icon=/usr/share/xournal/pixmaps/xournal.png
+Terminal=false
+
diff --git a/packages/xournal/xournal_0.2.bb b/packages/xournal/xournal_0.2.bb
deleted file mode 100644
index 6a4b6839b4..0000000000
--- a/packages/xournal/xournal_0.2.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-HOMEPAGE = "http://xournal.sf.net/"
-DESCRIPTION = "Xournal is an application for notetaking, sketching, keeping a journal using a stylus."
-DEPENDS = "gtk+ libgnomecanvas"
-SECTION = "x11"
-LICENSE = "GPL"
-PR = "r1"
-
-SRC_URI = "http://xournal.sourceforge.net/xournal-0.2.tar.gz \
- file://no-printing.diff;patch=1"
-
-inherit autotools pkgconfig
diff --git a/packages/xournal/xournal_0.3.1.bb b/packages/xournal/xournal_0.3.1.bb
deleted file mode 100644
index 077036b686..0000000000
--- a/packages/xournal/xournal_0.3.1.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-HOMEPAGE = "http://xournal.sf.net/"
-DESCRIPTION = "Xournal is an application for notetaking, sketching, keeping a journal using a stylus."
-DEPENDS = "gtk+ libgnomecanvas"
-SECTION = "x11"
-LICENSE = "GPL"
-PR = "r0"
-
-SRC_URI = "http://xournal.sourceforge.net/xournal-0.3.1.tar.gz \
- "
-
-inherit autotools pkgconfig
diff --git a/packages/xournal/xournal_0.3.3.bb b/packages/xournal/xournal_0.3.3.bb
new file mode 100644
index 0000000000..5a8a1b74b7
--- /dev/null
+++ b/packages/xournal/xournal_0.3.3.bb
@@ -0,0 +1,17 @@
+HOMEPAGE = "http://xournal.sf.net/"
+DESCRIPTION = "Xournal is an application for notetaking, sketching, keeping a journal using a stylus."
+DEPENDS = "gtk+ libgnomecanvas libgnomeprintui"
+SECTION = "x11"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://xournal.sourceforge.net/xournal-${PV}.tar.gz \
+ file://xournal.desktop"
+
+inherit autotools pkgconfig
+
+do_install_append () {
+ install -d ${D}${datadir}/applications/
+ install -m 0644 ${WORKDIR}/xournal.desktop ${D}${datadir}/applications/
+}
+
diff --git a/packages/xscreensaver/xscreensaver_4.16.bb b/packages/xscreensaver/xscreensaver_4.16.bb
index 9b424461ba..7696c4733c 100644
--- a/packages/xscreensaver/xscreensaver_4.16.bb
+++ b/packages/xscreensaver/xscreensaver_4.16.bb
@@ -2,21 +2,20 @@
# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
# Released under the MIT license (see packages/COPYING)
+DESCRIPTION = "*The* screensaver package for X11"
+HOMEPAGE = "http://www.jwz.org/xscreensaver/"
+SECTION = "x11-misc"
+LICENSE = "BSD"
+DEPENDS = "intltool virtual/libx11 gtk+ libxml2 libglade"
+PR = "r1"
+
BROKEN = "1"
# upstream is at 4.22 now - patches do not apply
-SRC_URI="http://www.jwz.org/xscreensaver/xscreensaver-${PV}.tar.gz \
- file://fixes.patch;patch=1 \
- file://configure.patch;patch=1 \
- file://XScreenSaver"
-
-DESCRIPTION="*The* screensaver package for X11"
-LICENSE="BSD"
-HOMEPAGE="http://www.jwz.org/xscreensaver/"
-PR = "r1"
-SECTION="x11-misc"
-
-DEPENDS = "intltool virtual/libx11 gtk+ libxml2 libglade"
+SRC_URI = "http://www.jwz.org/xscreensaver/xscreensaver-${PV}.tar.gz \
+ file://fixes.patch;patch=1 \
+ file://configure.patch;patch=1 \
+ file://XScreenSaver"
# xscreensaver-demo is a glade app
LDFLAGS_append = " -Wl,--export-dynamic"
diff --git a/packages/xscreensaver/xscreensaver_4.22.bb b/packages/xscreensaver/xscreensaver_4.22.bb
index 3b951fdeeb..6c2776d6aa 100644
--- a/packages/xscreensaver/xscreensaver_4.22.bb
+++ b/packages/xscreensaver/xscreensaver_4.22.bb
@@ -2,19 +2,17 @@
# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
# Released under the MIT license (see packages/COPYING)
-SRC_URI="http://www.jwz.org/xscreensaver/xscreensaver-${PV}.tar.gz \
- file://fixes.patch;patch=1 \
- file://configure.in.patch;patch=1 \
- file://XScreenSaver"
-
-DESCRIPTION="*The* screensaver package for X11"
-LICENSE="BSD"
-HOMEPAGE="http://www.jwz.org/xscreensaver/"
-PR = "r0"
-SECTION="x11-misc"
-
+DESCRIPTION = "*The* screensaver package for X11"
+HOMEPAGE = "http://www.jwz.org/xscreensaver/"
+SECTION = "x11-misc"
+LICENSE = "BSD"
DEPENDS = "intltool virtual/libx11 gtk+ libxml2 libglade"
+SRC_URI = "http://www.jwz.org/xscreensaver/xscreensaver-${PV}.tar.gz \
+ file://fixes.patch;patch=1 \
+ file://configure.in.patch;patch=1 \
+ file://XScreenSaver"
+
# xscreensaver-demo is a glade app
LDFLAGS_append = " -Wl,--export-dynamic"
diff --git a/packages/xserver-common/files/calibrate-only-if-ts.patch b/packages/xserver-common/files/calibrate-only-if-ts.patch
new file mode 100644
index 0000000000..7be808ba04
--- /dev/null
+++ b/packages/xserver-common/files/calibrate-only-if-ts.patch
@@ -0,0 +1,9 @@
+--- a/run-calibrate.sh.org 2006-10-12 10:19:42.000000000 +0000
++++ b/run-calibrate.sh 2007-02-09 17:54:55.000000000 +0000
+@@ -1,3 +1,5 @@
+ #! /bin/sh
+
+-exec xtscal
++if [ -e /dev/input/touchscreen0 ]; then
++ exec xtscal
++fi
diff --git a/packages/xserver-common/files/xserver-imageon.patch b/packages/xserver-common/files/xserver-imageon.patch
new file mode 100644
index 0000000000..6a0447a31f
--- /dev/null
+++ b/packages/xserver-common/files/xserver-imageon.patch
@@ -0,0 +1,14 @@
+Index: xserver-common-1.13/X11/Xserver
+===================================================================
+--- xserver-common-1.13.orig/X11/Xserver
++++ xserver-common-1.13/X11/Xserver
+@@ -17,6 +17,9 @@ fi
+ if [ -f /usr/bin/Xw100 ]; then
+ XSERVER=Xw100
+ fi
++if [ -f /usr/bin/Ximageon ]; then
++ XSERVER=Ximageon
++fi
+
+ . /etc/profile
+
diff --git a/packages/xserver-common/xserver-common.inc b/packages/xserver-common/xserver-common.inc
new file mode 100644
index 0000000000..229fb4d374
--- /dev/null
+++ b/packages/xserver-common/xserver-common.inc
@@ -0,0 +1,9 @@
+DESCRIPTION = "Common X11 scripts and support files"
+LICENSE = "GPL"
+SECTION = "x11"
+RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo xtscal"
+
+PACKAGE_ARCH = "all"
+
+# we are using a gpe-style Makefile
+inherit gpe
diff --git a/packages/xserver-common/xserver-common_1.10.bb b/packages/xserver-common/xserver-common_1.10.bb
index fecdfbc8a3..69e92ecdf3 100644
--- a/packages/xserver-common/xserver-common_1.10.bb
+++ b/packages/xserver-common/xserver-common_1.10.bb
@@ -1,13 +1,6 @@
-DESCRIPTION = "Common X11 scripts and support files"
-LICENSE = "GPL"
-SECTION = "x11"
-RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo xtscal"
-PR = "r2"
-
-PACKAGE_ARCH = "all"
+require xserver-common.inc
-# we are using a gpe-style Makefile
-inherit gpe
+PR = "r2"
SRC_URI_append = " file://setDPI.sh \
file://calibrate_zaurusd.patch;patch=1 \
diff --git a/packages/xserver-common/xserver-common_1.11.bb b/packages/xserver-common/xserver-common_1.11.bb
index 47f9f2b184..6b384699fc 100644
--- a/packages/xserver-common/xserver-common_1.11.bb
+++ b/packages/xserver-common/xserver-common_1.11.bb
@@ -1,13 +1,4 @@
-DESCRIPTION = "Common X11 scripts and support files"
-LICENSE = "GPL"
-SECTION = "x11"
-RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo xtscal"
-PR = "r0"
-
-PACKAGE_ARCH = "all"
-
-# we are using a gpe-style Makefile
-inherit gpe
+require xserver-common.inc
SRC_URI_append = " file://setDPI.sh \
file://calibrate_zaurusd.patch;patch=1 \
diff --git a/packages/xserver-common/xserver-common_1.12.bb b/packages/xserver-common/xserver-common_1.12.bb
index b02ad3f317..dc91d7da68 100644
--- a/packages/xserver-common/xserver-common_1.12.bb
+++ b/packages/xserver-common/xserver-common_1.12.bb
@@ -1,13 +1,6 @@
-DESCRIPTION = "Common X11 scripts and support files"
-LICENSE = "GPL"
-SECTION = "x11"
-RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo xtscal"
-PR = "r1"
-
-PACKAGE_ARCH = "all"
+require xserver-common.inc
-# we are using a gpe-style Makefile
-inherit gpe
+PR = "r1"
SRC_URI_append = " file://setDPI.sh \
file://rxvt-less-pink.diff;patch=1"
diff --git a/packages/xserver-common/xserver-common_1.13.bb b/packages/xserver-common/xserver-common_1.13.bb
index d14cad725b..599af1d6f7 100644
--- a/packages/xserver-common/xserver-common_1.13.bb
+++ b/packages/xserver-common/xserver-common_1.13.bb
@@ -1,15 +1,10 @@
-DESCRIPTION = "Common X11 scripts and support files"
-LICENSE = "GPL"
-SECTION = "x11"
-RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo xtscal"
-PR = "r0"
+require xserver-common.inc
-PACKAGE_ARCH = "all"
+PR = "r2"
-# we are using a gpe-style Makefile
-inherit gpe
-
-SRC_URI_append = " file://setDPI.sh"
+SRC_URI_append = " file://setDPI.sh \
+ file://xserver-imageon.patch;patch=1 \
+ file://calibrate-only-if-ts.patch;patch=1"
do_install_append() {
install -m 0755 "${WORKDIR}/setDPI.sh" "${D}/etc/X11/Xinit.d/50setdpi"
diff --git a/packages/xserver-common/xserver-common_1.14.bb b/packages/xserver-common/xserver-common_1.14.bb
new file mode 100644
index 0000000000..48320ba006
--- /dev/null
+++ b/packages/xserver-common/xserver-common_1.14.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Common X11 scripts and support files"
+LICENSE = "GPL"
+SECTION = "x11"
+RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo"
+PR = "r2"
+
+PACKAGE_ARCH = "all"
+
+# we are using a gpe-style Makefile
+inherit gpe
+
+SRC_URI_append = " file://setDPI.sh \
+ file://xserver-imageon.patch;patch=1 \
+ file://calibrate-only-if-ts.patch;patch=1"
+
+do_install_append() {
+ install -m 0755 "${WORKDIR}/setDPI.sh" "${D}/etc/X11/Xinit.d/50setdpi"
+}
diff --git a/packages/xserver-common/xserver-common_1.15.bb b/packages/xserver-common/xserver-common_1.15.bb
new file mode 100644
index 0000000000..48320ba006
--- /dev/null
+++ b/packages/xserver-common/xserver-common_1.15.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Common X11 scripts and support files"
+LICENSE = "GPL"
+SECTION = "x11"
+RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo"
+PR = "r2"
+
+PACKAGE_ARCH = "all"
+
+# we are using a gpe-style Makefile
+inherit gpe
+
+SRC_URI_append = " file://setDPI.sh \
+ file://xserver-imageon.patch;patch=1 \
+ file://calibrate-only-if-ts.patch;patch=1"
+
+do_install_append() {
+ install -m 0755 "${WORKDIR}/setDPI.sh" "${D}/etc/X11/Xinit.d/50setdpi"
+}
diff --git a/packages/xserver-common/xserver-common_1.16.bb b/packages/xserver-common/xserver-common_1.16.bb
new file mode 100644
index 0000000000..48320ba006
--- /dev/null
+++ b/packages/xserver-common/xserver-common_1.16.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Common X11 scripts and support files"
+LICENSE = "GPL"
+SECTION = "x11"
+RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo"
+PR = "r2"
+
+PACKAGE_ARCH = "all"
+
+# we are using a gpe-style Makefile
+inherit gpe
+
+SRC_URI_append = " file://setDPI.sh \
+ file://xserver-imageon.patch;patch=1 \
+ file://calibrate-only-if-ts.patch;patch=1"
+
+do_install_append() {
+ install -m 0755 "${WORKDIR}/setDPI.sh" "${D}/etc/X11/Xinit.d/50setdpi"
+}
diff --git a/packages/xserver-common/xserver-common_1.3.bb b/packages/xserver-common/xserver-common_1.3.bb
index 8980ae2f9f..af2fb894b5 100644
--- a/packages/xserver-common/xserver-common_1.3.bb
+++ b/packages/xserver-common/xserver-common_1.3.bb
@@ -1,11 +1,3 @@
-DESCRIPTION = "Common X11 scripts and support files"
-LICENSE = "GPL"
-SECTION = "x11"
-RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo xtscal"
-PR = "r1"
-
-PACKAGE_ARCH = "all"
-
-# we are using a gpe-style Makefile
-inherit gpe
+require xserver-common.inc
+PR = "r1"
diff --git a/packages/xserver-common/xserver-common_1.8.bb b/packages/xserver-common/xserver-common_1.8.bb
index 9e9c9d2e5e..249576f6da 100644
--- a/packages/xserver-common/xserver-common_1.8.bb
+++ b/packages/xserver-common/xserver-common_1.8.bb
@@ -1,13 +1,6 @@
-DESCRIPTION = "Common X11 scripts and support files"
-LICENSE = "GPL"
-SECTION = "x11"
-RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo xtscal"
-PR = "r2"
-
-PACKAGE_ARCH = "all"
+require xserver-common.inc
-# we are using a gpe-style Makefile
-inherit gpe
+PR = "r2"
SRC_URI_append = " file://setDPI.sh \
file://calibrate_zaurusd.patch;patch=1"
diff --git a/packages/xserver-common/xserver-common_1.9.bb b/packages/xserver-common/xserver-common_1.9.bb
index 78fe512ff7..a8343a8548 100644
--- a/packages/xserver-common/xserver-common_1.9.bb
+++ b/packages/xserver-common/xserver-common_1.9.bb
@@ -1,13 +1,6 @@
-DESCRIPTION = "Common X11 scripts and support files"
-LICENSE = "GPL"
-SECTION = "x11"
-RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo xtscal"
-PR = "r2"
-
-PACKAGE_ARCH = "all"
+require xserver-common.inc
-# we are using a gpe-style Makefile
-inherit gpe
+PR = "r2"
SRC_URI_append = " file://setDPI.sh \
file://calibrate_zaurusd.patch;patch=1 \
diff --git a/packages/xserver-common/xserver-common_svn.bb b/packages/xserver-common/xserver-common_svn.bb
index ca9f3a7be6..e272ac1a87 100644
--- a/packages/xserver-common/xserver-common_svn.bb
+++ b/packages/xserver-common/xserver-common_svn.bb
@@ -1,20 +1,9 @@
-DESCRIPTION = "Common X11 scripts and support files"
-LICENSE = "GPL"
-SECTION = "x11"
-PV = "1.12+svn${SRCDATE}"
-PR = "r0"
-
-PACKAGE_ARCH = "all"
+require xserver-common.inc
DEFAULT_PREFERENCE = "-1"
DEPENDS = "xmodmap xrandr xdpyinfo xtscal"
-RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo xtscal"
-
-
-# we are using a gpe-style Makefile
-inherit gpe
-
+PV = "1.12+svn${SRCDATE}"
S = "${WORKDIR}/xserver-common"
SRC_URI = "${GPE_SVN} \
diff --git a/packages/xserver-kdrive-common/.mtn2git_empty b/packages/xserver-kdrive-common/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xserver-kdrive-common/.mtn2git_empty
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/.mtn2git_empty b/packages/xserver-kdrive-common/xserver-kdrive-common/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/.mtn2git_empty
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/.mtn2git_empty b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/.mtn2git_empty
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/.mtn2git_empty b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/.mtn2git_empty
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xdefaults b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xdefaults
new file mode 100644
index 0000000000..f5b69dd516
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xdefaults
@@ -0,0 +1,3 @@
+Rxvt*scrollBar_right: true
+Rxvt*font: xft:Mono:pixelsize=9
+
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xinit b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xinit
new file mode 100644
index 0000000000..f566ffe5be
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xinit
@@ -0,0 +1,16 @@
+#!/bin/sh
+#
+
+export USER=root
+export HOME=/home/root
+if [ ! -d $HOME ] && [ -d /root ]; then
+ HOME=/root
+fi
+export XAPPLRESDIR=/usr/X11R6/lib/app-defaults
+export XFILESEARCHPATH=./%N%S%C.ad:/usr/X11R6/lib/X11/%L/%T/%N%S%C:/usr/X11R6/lib/X11/%l/%T/%N%S%C:/usr/X11R6/lib/X11/%T/%N%S%C:./%N%S.ad:/usr/X11R6/lib/X11/%L/%T/%N%S:/usr/X11R6/lib/X11/%l/%T/%N%S:/usr/X11R6/lib/X11/%T/%N%S:/usr/local/lib/X11/app-defaults/%N%S%C.ad
+
+export PATH=$PATH:/usr/X11R6/bin
+
+SYSSESSIONDIR=/etc/X11/Xinit.d
+
+exec run-parts $SYSSESSIONDIR
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xserver b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xserver
new file mode 100644
index 0000000000..8b75496ba6
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xserver
@@ -0,0 +1,111 @@
+#!/bin/sh
+#
+
+# note xinit needs full server path
+XSERVER=/usr/bin/Xipaq
+if [ -f /usr/bin/Xfbdev ]; then
+ XSERVER=/usr/bin/Xfbdev
+fi
+if [ -f /usr/bin/Xepson ]; then
+ XSERVER=/usr/bin/Xepson
+fi
+if [ -f /usr/bin/Xorg ]; then
+ XSERVER=/usr/bin/Xorg
+fi
+if [ -f /usr/bin/Xomap ]; then
+ XSERVER=/usr/bin/Xomap
+fi
+if [ -f /usr/bin/Xw100 ]; then
+ XSERVER=Xw100
+fi
+if [ -f /usr/bin/Ximageon ]; then
+ XSERVER=Ximageon
+fi
+
+. /etc/profile
+
+
+
+fallback_screen_arg() {
+ geom=`fbset | grep geometry`
+ w=`echo $geom | awk '{ print $2 }'`
+ h=`echo $geom | awk '{ print $3 }'`
+ b=`echo $geom | awk '{ print $6 }'`
+ echo -n "${w}x${h}x${b}"
+}
+
+module_id() {
+ ## used to read from assets, but sometimes assets is corrupted
+ # grep "Module ID" /proc/hal/assets | sed "s/.*://"
+ ## used to read from /proc/hal/model, but that is removed in 2.6
+ # echo ' iPAQ' `cat /proc/hal/model`
+ awk 'BEGIN { FS=": " } /Hardware/ { print $2 } ' </proc/cpuinfo
+}
+
+export USER=root
+
+ARGS=" -br -pn"
+
+# use ucb 1x00 touchscreen if present
+if [ -z "$TSLIB_TSDEVICE" ] && [ -e /dev/touchscreen/ucb1x00 ]; then
+ ARGS="$ARGS -mouse /dev/touchscreen/ucb1x00"
+fi
+
+# use usb mouse if present
+# Xorg doesn't support "-mouse" option, and uses /dev/input/mice automatically
+if [ -z "$TSLIB_TSDEVICE" ] && [ -e /dev/input/mice ] && [ "$XSERVER" != "Xorg" ]; then
+ ARGS="$ARGS -mouse /dev/input/mice"
+fi
+
+# start off server in conventional location.
+case `module_id` in
+ "HP iPAQ H3100" | "HP iPAQ H3800")
+ ARGS="$ARGS -dpi 100 -rgba vrgb -screen 320x240@90" ;;
+ "HP iPAQ H3600" | "HP iPAQ H3700" | "HP iPAQ H3900")
+ ARGS="$ARGS -dpi 100 -rgba vbgr -screen 320x240@270" ;;
+ "HP iPAQ H5400" | "HP iPAQ H2200")
+ ARGS="$ARGS -dpi 100 -rgba rgb" ;;
+ "HP iPAQ HX4700")
+ ARGS="$ARGS -dpi 200" ;;
+ "Ramses")
+ # What is this "vt2" in aid of?
+ ARGS="$ARGS -dpi 100 -rgba vrgb -screen 320x240@90 vt2" ;;
+ # both 'Sharp-Collie' and just 'Collie' have been reported
+ *Poodle)
+ ARGS="$ARGS -dpi 100 -rgba vrgb -screen 320x240@270" ;;
+ *Collie)
+ ARGS="$ARGS -dpi 100 -rgba vrgb -screen 320x240@270"
+ ;;
+ "SHARP Shepherd" | "SHARP Husky" | "SHARP Corgi")
+ ARGS="$ARGS -dpi 200 -rgba rgb" ;;
+ "SHARP Spitz" | "SHARP Akita" | "SHARP Borzoi")
+ ARGS="$ARGS -dpi 200 -rgba rgb -screen 480x640@270" ;;
+ "Simpad")
+ ARGS="$ARGS -dpi 100 -rgba rgb" ;;
+ "Generic OMAP1510/1610/1710")
+ ARGS="$ARGS -dpi 220 -mouse /dev/input/event0" ;;
+ "Cellon C8000 Board")
+ ARGS="$ARGS -dpi 100 -screen 240x320,10,1" ;;
+ "HTC Universal")
+ ARGS="$ARGS -dpi 100 -screen 480x640@270" ;;
+ "ARM-IntegratorCP" | "ARM-Versatile PB")
+ ARGS="$ARGS -rgba vrgb" ;;
+ "Compulab CM-x270")
+ modprobe mbxfb
+ ARGS="$ARGS -fb /dev/fb1"
+ ;;
+ "GTA01")
+ #we set 100 dpi for the time being, should the -dpi 285
+ ARGS="$ARGS -dpi 100 -screen 480x640" ;;
+ *)
+ # Its a device we dont know about - in which case force
+ # kdrive to use the current framebuffer geometry otherwise
+ # it will defualt to trying to achieve 1024x768
+ S=`fallback_screen_arg`
+ ARGS="$ARGS -screen $S"
+ ;;
+esac
+
+DISPLAY=':0'
+
+exec xinit /etc/X11/Xsession -- $XSERVER $DISPLAY $ARGS $*
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession
new file mode 100644
index 0000000000..a438e13050
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+HOME_VOLATILE=/home/$USER/ramdisk
+export HOME_VOLATILE
+
+if [ -f /usr/bin/dbus-launch ]; then
+ ## test for an existing bus daemon, just to be safe
+ if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
+ ## if not found, launch a new one
+ eval `dbus-launch --auto-syntax --exit-with-session`
+ echo "D-BUS per-session daemon address is: $DBUS_SESSION_BUS_ADDRESS"
+ fi
+fi
+
+. /etc/profile
+
+if [ -f $HOME/.profile ]; then
+ . $HOME/.profile
+fi
+
+SYSSESSIONDIR=/etc/X11/Xsession.d
+
+run-parts $SYSSESSIONDIR
+
+exit 0
+
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/.mtn2git_empty b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/.mtn2git_empty
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/30xTs_Calibrate b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/30xTs_Calibrate
new file mode 100644
index 0000000000..8e6a8b22cb
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/30xTs_Calibrate
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+while [ ! -z $TSLIB_TSDEVICE ] && [ ! -f /etc/pointercal ]
+do
+ /usr/bin/xtscal
+done
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/60xXDefaults b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/60xXDefaults
new file mode 100644
index 0000000000..d3a284d8da
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/60xXDefaults
@@ -0,0 +1,4 @@
+#!/bin/sh
+if [ -e $HOME/.Xdefaults ]; then
+ xrdb -merge -nocpp < $HOME/.Xdefaults
+fi
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/90xXWindowManager b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/90xXWindowManager
new file mode 100644
index 0000000000..b2b65a0993
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/90xXWindowManager
@@ -0,0 +1,8 @@
+#!/bin/sh
+if [ -x $HOME/.Xsession ]; then
+ exec $HOME/.Xsession
+else
+ exec /usr/bin/x-window-manager
+fi
+
+
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb b/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb
new file mode 100644
index 0000000000..88ed2e84b3
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Common X11 scripts"
+LICENSE = "GPL"
+SECTION = "x11"
+RDEPENDS_${PN} = "xmodmap libxrandr xdpyinfo xtscal xinit"
+PR = "r11"
+
+SRC_URI = "file://etc"
+S = ${WORKDIR}
+
+PACKAGE_ARCH = "all"
+
+do_install() {
+ cp -R ${S}/etc ${D}/etc
+ rm -fR ${D}/etc/.svn
+ rm -fR ${D}/etc/*/.svn
+ rm -fR ${D}/etc/*/*/.svn
+ chmod -R 755 ${D}/etc
+}
diff --git a/packages/xserver-kdrive-common/xserver-nodm-init.bb b/packages/xserver-kdrive-common/xserver-nodm-init.bb
new file mode 100644
index 0000000000..cea9f0cb28
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-nodm-init.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Simple Xserver Init Script (no dm)"
+LICENSE = "GPL"
+SECTION = "x11"
+PRIORITY = "optional"
+PR = "r8"
+
+SRC_URI = "file://xserver-nodm"
+S = ${WORKDIR}
+
+PACKAGE_ARCH = "all"
+
+do_install() {
+ install -d ${D}/etc
+ install -d ${D}/etc/init.d
+ install xserver-nodm ${D}/etc/init.d
+}
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "xserver-nodm"
+INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
diff --git a/packages/xserver-kdrive-common/xserver-nodm-init/.mtn2git_empty b/packages/xserver-kdrive-common/xserver-nodm-init/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-nodm-init/.mtn2git_empty
diff --git a/packages/xserver-kdrive-common/xserver-nodm-init/xserver-nodm b/packages/xserver-kdrive-common/xserver-nodm-init/xserver-nodm
new file mode 100755
index 0000000000..a56edaa15b
--- /dev/null
+++ b/packages/xserver-kdrive-common/xserver-nodm-init/xserver-nodm
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+killproc() { # kill the named process(es)
+ pid=`/bin/ps -e x |
+ /bin/grep $1 |
+ /bin/grep -v grep |
+ /bin/sed -e 's/^ *//' -e 's/ .*//'`
+ [ "$pid" != "" ] && kill $pid
+}
+
+for x in $(cat /proc/cmdline); do
+ case $x in
+ x11=false)
+ echo "X Server disabled"
+ exit 0;
+ ;;
+ esac
+done
+
+case "$1" in
+ start)
+ # We don't want this script to block the rest of the boot process
+ if [ "$2" != "background" ]; then
+ $0 $1 background &
+ else
+ . /etc/profile
+
+ echo "Starting Xserver"
+ /etc/X11/Xserver &
+ fi
+ ;;
+
+ stop)
+ echo "Stopping XServer"
+ killproc xinit
+ ;;
+
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+
+ *)
+ echo "usage: $0 { start | stop | restart }"
+ ;;
+esac
+
+exit 0
diff --git a/packages/xtscal/xtscal.inc b/packages/xtscal/xtscal.inc
new file mode 100644
index 0000000000..220c262a9f
--- /dev/null
+++ b/packages/xtscal/xtscal.inc
@@ -0,0 +1,8 @@
+DESCRIPTION = "Touchscreen calibration utility"
+SECTION = "x11/base"
+LICENSE = "GPL"
+DEPENDS = "virtual/libx11 libxft libxrandr xcalibrate"
+
+SRC_URI = "${GPE_MIRROR}/xtscal-${PV}.tar.bz2"
+
+inherit autotools
diff --git a/packages/xtscal/xtscal/xtscal-cxk.patch b/packages/xtscal/xtscal/xtscal-cxk.patch
index 1cab8efb57..fbca56abd7 100644
--- a/packages/xtscal/xtscal/xtscal-cxk.patch
+++ b/packages/xtscal/xtscal/xtscal-cxk.patch
@@ -1,11 +1,25 @@
---- xtscal-0.6.3/xtscal.in~ 2004-09-10 12:10:36.000000000 -0700
-+++ xtscal-0.6.3/xtscal.in 2005-08-04 09:26:46.000000000 -0700
-@@ -8,7 +8,7 @@
+--- xtscal-0.6.3/xtscal.in~
++++ xtscal-0.6.3/xtscal.in
+@@ -1,16 +1,15 @@
+ #!/bin/sh
+
+ module_id() {
+- # Get model name
+- echo `grep "^Hardware" /proc/cpuinfo | sed -e "s/.*: *//" | tr a-z A-Z`
++ awk 'BEGIN { FS=": " } /Hardware/ { print $2 }' </proc/cpuinfo | tr a-z A-Z
+ }
+
case `module_id` in
- "HP IPAQ H3100" | "HP IPAQ H3800" )
- ARGS="-rotate 90" ;;
+- "HP IPAQ H3100" | "HP IPAQ H3800" )
+- ARGS="-rotate 90" ;;
- "HP IPAQ H3600" | "HP IPAQ H3700" | "HP IPAQ H3900" | *COLLIE | *POODLE)
-+ "HP IPAQ H3600" | "HP IPAQ H3700" | "HP IPAQ H3900" | *COLLIE | *POODLE | *SPITZ | *AKITA | *BORZOI)
- ARGS="-rotate 270" ;;
- # H2200: works without rotation
+- ARGS="-rotate 270" ;;
+- # H2200: works without rotation
++ "HP IPAQ H3100" | "HP IPAQ H3800" )
++ ARGS="-rotate 90" ;;
++ "HP IPAQ H3600" | "HP IPAQ H3700" | "HP IPAQ H3900" | "HTC UNIVERSAL" | *COLLIE | *POODLE | *SPITZ | *AKITA | *BORZOI)
++ ARGS="-rotate 270" ;;
++ # H2200: works without rotation
esac
+
+ # the things we do for autoconf
diff --git a/packages/xtscal/xtscal_0.4.bb b/packages/xtscal/xtscal_0.4.bb
index 60ad48eaa3..20e11bd54e 100644
--- a/packages/xtscal/xtscal_0.4.bb
+++ b/packages/xtscal/xtscal_0.4.bb
@@ -1,8 +1 @@
-DESCRIPTION = "Touchscreen calibration utility"
-SECTION = "x11/base"
-LICENSE = "GPL"
-DEPENDS = "virtual/libx11 libxft libxrandr"
-
-SRC_URI = "${GPE_MIRROR}/xtscal-${PV}.tar.bz2"
-
-inherit autotools
+require xtscal.inc
diff --git a/packages/xtscal/xtscal_0.5.1.bb b/packages/xtscal/xtscal_0.5.1.bb
index 33dcfe1d80..ac9fcffab7 100644
--- a/packages/xtscal/xtscal_0.5.1.bb
+++ b/packages/xtscal/xtscal_0.5.1.bb
@@ -1,11 +1,5 @@
-DESCRIPTION = "Touchscreen calibration utility"
-SECTION = "x11/base"
-LICENSE = "GPL"
-DEPENDS = "virtual/libx11 libxft libxrandr xcalibrate"
+require xtscal.inc
PR = "r1"
-SRC_URI = "${GPE_MIRROR}/xtscal-${PV}.tar.bz2 \
- file://xtscal-poodle.patch;patch=1"
-
-inherit autotools
+SRC_URI += "file://xtscal-poodle.patch;patch=1"
diff --git a/packages/xtscal/xtscal_0.5.bb b/packages/xtscal/xtscal_0.5.bb
index 220c262a9f..20e11bd54e 100644
--- a/packages/xtscal/xtscal_0.5.bb
+++ b/packages/xtscal/xtscal_0.5.bb
@@ -1,8 +1 @@
-DESCRIPTION = "Touchscreen calibration utility"
-SECTION = "x11/base"
-LICENSE = "GPL"
-DEPENDS = "virtual/libx11 libxft libxrandr xcalibrate"
-
-SRC_URI = "${GPE_MIRROR}/xtscal-${PV}.tar.bz2"
-
-inherit autotools
+require xtscal.inc
diff --git a/packages/xtscal/xtscal_0.6.3.bb b/packages/xtscal/xtscal_0.6.3.bb
index 443b487065..c19fcaf93d 100644
--- a/packages/xtscal/xtscal_0.6.3.bb
+++ b/packages/xtscal/xtscal_0.6.3.bb
@@ -1,12 +1,5 @@
-LICENSE = "GPL"
-DESCRIPTION = "Touchscreen calibration utility"
-SECTION = "x11/base"
+require xtscal.inc
-DEPENDS = "virtual/libx11 libxft libxrandr xcalibrate"
+PR = "r5"
-PR = "r1"
-
-SRC_URI = "${GPE_MIRROR}/xtscal-${PV}.tar.bz2 \
- file://xtscal-cxk.patch;patch=1"
-
-inherit autotools
+SRC_URI += "file://xtscal-cxk.patch;patch=1"
diff --git a/packages/yeaphone/.mtn2git_empty b/packages/yeaphone/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/yeaphone/.mtn2git_empty
diff --git a/packages/yeaphone/yeaphone_0.1.bb b/packages/yeaphone/yeaphone_0.1.bb
new file mode 100644
index 0000000000..2612b37e9a
--- /dev/null
+++ b/packages/yeaphone/yeaphone_0.1.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "A VoIP SIP phone for the Yealink USB handset"
+HOMEPAGE = "http://www.devbase.at/voip/"
+MAINTAINER = "Thomas Reitmayr <treitmayr@yahoo.com>"
+LICENSE = "GPLv2"
+PRIORITY = "optional"
+DEPENDS = "liblinphone"
+RDEPENDS = "liblinphone"
+RRECOMMENDS = "\
+ linphonec \
+ kernel-module-yealink \
+ kernel-module-usbhid \
+ kernel-module-snd-usb-audio \
+ "
+
+PR = "r3"
+
+SRC_URI = "http://download.devbase.at/voip/yeaphone-${PV}.tar.gz"
+
+S = "${WORKDIR}/yeaphone-${PV}"
+
+inherit autotools
diff --git a/packages/zaurus-updater/encdec-updater.bb b/packages/zaurus-updater/encdec-updater.bb
index 797a762ebf..c03e9b4454 100644
--- a/packages/zaurus-updater/encdec-updater.bb
+++ b/packages/zaurus-updater/encdec-updater.bb
@@ -1,6 +1,6 @@
SECTION = "console/utils"
LICENSE = "GPL"
-DESCRIPTION = "A tool to encode and decode the Sharp Zaurus updater.sh skript"
+DESCRIPTION = "A tool to encode and decode the Sharp Zaurus updater.sh script"
SRC_URI = "file://encdec-updater.c"
diff --git a/packages/zd1211/zd1211-firmware_1.3.bb b/packages/zd1211/zd1211-firmware_1.3.bb
new file mode 100644
index 0000000000..e6f006971d
--- /dev/null
+++ b/packages/zd1211/zd1211-firmware_1.3.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "ZyDAS ZD1211 Firmware"
+HOMEPAGE = "http://zd1211.ath.cx/"
+SECTION = "net"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/zd1211/zd1211-firmware1.3.tar.bz2"
+
+S = "${WORKDIR}/${PN}"
+
+do_install() {
+ install -d -m 0755 ${D}/lib/firmware/zd1211
+ install -m 0644 ${S}/zd1211* ${D}/lib/firmware/zd1211/
+}
+
+FILES_${PN} = "/lib/firmware"
diff --git a/packages/zd1211/zd1211-r85/.mtn2git_empty b/packages/zd1211/zd1211-r85/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/zd1211/zd1211-r85/.mtn2git_empty
diff --git a/packages/zd1211/zd1211-r85/makefile-unslung.patch b/packages/zd1211/zd1211-r85/makefile-unslung.patch
new file mode 100644
index 0000000000..bc189e823f
--- /dev/null
+++ b/packages/zd1211/zd1211-r85/makefile-unslung.patch
@@ -0,0 +1,48 @@
+--- zd1211-driver-r83.orig/Makefile 2006-07-09 04:59:42.000000000 -0500
++++ zd1211-driver-r83/Makefile 2006-10-21 16:27:41.000000000 -0500
+@@ -4,25 +4,25 @@
+ #
+ #
+
+-CC=gcc
+-CPP=g++
+-LD=ld
++CC ?= gcc
++CPP ?= g++
++LD ?= ld
+ rM=rm -f -r
+
+ VERSION := $(shell uname -r)
+-MODPATH := /lib/modules/$(VERSION)
++MODPATH ?= /lib/modules/$(VERSION)
+
+ # if the kernel is 2.6.x, turn on this
+-KERN_26=y
++#KERN_26=y
+
+-KERNEL_SOURCE=$(MODPATH)/source
++KERNEL_SOURCE ?= $(MODPATH)/source
+ #KERNEL_SOURCE=/usr/src/linux
+
+ # set to 1 for zd1211b
+ ZD1211REV_B=0
+
+ SRC_DIR=src
+-DEFINES=-D__KERNEL__ -DMODULE=1
++DEFINES ?= -D__KERNEL__ -DMODULE=1
+
+
+
+@@ -228,9 +228,9 @@
+ depmod -a $(VERSION)
+
+ #for apdbg
+- gcc -o apdbg apdbg.c
+- chmod +x apdbg
+- cp ./apdbg /sbin/apdbg
++# gcc -o apdbg apdbg.c
++# chmod +x apdbg
++# cp ./apdbg /sbin/apdbg
+
+ clean:
+ rm -rf .tmp_versions .*.cmd *.ko *.mod.c *.mod.o *.o $(SRC_DIR)/*.o $(SRC_DIR)/.*.o.cmd
diff --git a/packages/zd1211/zd1211-r85/makefile.patch b/packages/zd1211/zd1211-r85/makefile.patch
new file mode 100644
index 0000000000..adc2bd416d
--- /dev/null
+++ b/packages/zd1211/zd1211-r85/makefile.patch
@@ -0,0 +1,47 @@
+--- zd1211-driver-r83/Makefile.orig 2006-09-02 16:00:00.000000000 +0200
++++ zd1211-driver-r83/Makefile 2006-09-02 16:01:57.000000000 +0200
+@@ -4,10 +4,10 @@
+ #
+ #
+
+-CC=gcc
+-CPP=g++
+-LD=ld
+-rM=rm -f -r
++#CC=gcc
++#CPP=g++
++#LD=ld
++#rM=rm -f -r
+
+ VERSION := $(shell uname -r)
+ MODPATH := /lib/modules/$(VERSION)
+@@ -15,14 +15,14 @@
+ # if the kernel is 2.6.x, turn on this
+ KERN_26=y
+
+-KERNEL_SOURCE=$(MODPATH)/source
++KERNEL_SOURCE ?= $(MODPATH)/source
+ #KERNEL_SOURCE=/usr/src/linux
+
+ # set to 1 for zd1211b
+ ZD1211REV_B=0
+
+ SRC_DIR=src
+-DEFINES=-D__KERNEL__ -DMODULE=1
++DEFINES ?= -D__KERNEL__ -DMODULE=1
+
+
+
+@@ -228,9 +228,9 @@
+ depmod -a $(VERSION)
+
+ #for apdbg
+- gcc -o apdbg apdbg.c
+- chmod +x apdbg
+- cp ./apdbg /sbin/apdbg
++# gcc -o apdbg apdbg.c
++# chmod +x apdbg
++# cp ./apdbg /sbin/apdbg
+
+ clean:
+ rm -rf .tmp_versions .*.cmd *.ko *.mod.c *.mod.o *.o $(SRC_DIR)/*.o $(SRC_DIR)/.*.o.cmd
diff --git a/packages/zd1211/zd1211-r85/unslung-iwpriv-hack.patch b/packages/zd1211/zd1211-r85/unslung-iwpriv-hack.patch
new file mode 100644
index 0000000000..64f3806140
--- /dev/null
+++ b/packages/zd1211/zd1211-r85/unslung-iwpriv-hack.patch
@@ -0,0 +1,19 @@
+--- zd1211-driver-r74/src/zd1205.c~ 2006-04-16 09:42:15.000000000 -0500
++++ zd1211-driver-r74/src/zd1205.c 2006-04-27 12:29:03.000000000 -0500
+@@ -349,8 +349,14 @@
+ { SIOCIWFIRSTPRIV + 0xA, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "connect" },
+ { SIOCIWFIRSTPRIV + 0xB, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_mac_mode" },
+ { SIOCIWFIRSTPRIV + 0xC, 0, IW_PRIV_TYPE_CHAR | 12, "get_mac_mode" },
+- { SIOCIWFIRSTPRIV + 0xD, 0, 0, "save_conf" /* has been removed */ },
+- { SIOCIWFIRSTPRIV + 0xE, 0, 0, "load_conf" /* has been removed */ },
++// HACK HACK HACK - The following two lines are commented out in order to make
++// iwpriv work on Unslung (2.4.22 kernel) - this kernel's Wireless Extensions
++// can only handle up to 16 iwpriv entries in this structure. Yes, the correct
++// fix is to patch the Wireless Extensions in the Unslung kernel. This hack
++// should be removed when that's actually done. ~mwester 27APR2006
++// { SIOCIWFIRSTPRIV + 0xD, 0, 0, "save_conf" /* has been removed */ },
++// { SIOCIWFIRSTPRIV + 0xE, 0, 0, "load_conf" /* has been removed */ },
++// End of HACK
+ { SIOCIWFIRSTPRIV + 0xF, 0, IW_PRIV_TYPE_CHAR | 14, "get_Region" },
+ { SIOCIWFIRSTPRIV + 0x9,IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_Region" },
+ };
diff --git a/packages/zd1211/zd1211-r85/unslung-writel-logging.patch b/packages/zd1211/zd1211-r85/unslung-writel-logging.patch
new file mode 100644
index 0000000000..00d54d7d68
--- /dev/null
+++ b/packages/zd1211/zd1211-r85/unslung-writel-logging.patch
@@ -0,0 +1,14 @@
+--- zd1211-driver-r74/src/zd1211.c~ 2006-04-09 12:28:06.000000000 -0500
++++ zd1211-driver-r74/src/zd1211.c 2006-04-27 12:38:55.000000000 -0500
+@@ -652,7 +652,10 @@
+ count++;
+
+ if (count > 5) {
+- printk(KERN_ERR "1211_readl failed for 5 attempts...Very Serious");
++// You are going to see this often enough on Unslung that we might as well put it in
++// the syslog and fix it so it has a nl on the end. Sigh. ~mwester, 27APR06
++//
++ printk(KERN_ERR "1211_readl failed for 5 attempts...Very Serious\n");
+ break;
+ }
+ }
diff --git a/packages/zd1211/zd1211_r85.bb b/packages/zd1211/zd1211_r85.bb
new file mode 100644
index 0000000000..d0d875c842
--- /dev/null
+++ b/packages/zd1211/zd1211_r85.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "Driver for zd1211 family of wireless USB Dongles"
+HOMEPAGE = "http://zd1211.ath.cx/"
+SECTION = "kernel/modules"
+PRIORITY = "optional"
+LICENSE = "GPL"
+RDEPENDS = "wireless-tools"
+PR = "r1"
+
+SRC_URI = "http://zd1211.ath.cx/download/zd1211-driver-${PV}.tgz \
+ file://makefile.patch;patch=1"
+SRC_URI_unslung = "http://zd1211.ath.cx/download/zd1211-driver-${PV}.tgz \
+ file://makefile-unslung.patch;patch=1 \
+ file://unslung-iwpriv-hack.patch;patch=1 \
+ file://unslung-writel-logging.patch;patch=1"
+
+S = "${WORKDIR}/zd1211-driver-${PV}"
+
+inherit module
+
+do_compile () {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS CC LD CPP
+ oe_runmake 'MODPATH={D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net' \
+ 'KERNEL_SOURCE=${STAGING_KERNEL_DIR}' \
+ 'KDIR=${STAGING_KERNEL_DIR}' \
+ 'KERNEL_VERSION=${KERNEL_VERSION}' \
+ 'CC=${KERNEL_CC}' \
+ 'LD=${KERNEL_LD}'
+}
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net
+ install -m 0644 ${S}/zd1211*${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net
+}
diff --git a/packages/zip/zip-native_2.31.bb b/packages/zip/zip-native_2.31.bb
deleted file mode 100644
index fde61efcb7..0000000000
--- a/packages/zip/zip-native_2.31.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SECTION = "console/utils"
-inherit native
-require zip_${PV}.bb
-S = "${WORKDIR}/zip-${PV}"
-
-do_stage() {
- install -d ${STAGING_BINDIR}
- install zip zipnote zipsplit zipcloak ${STAGING_BINDIR}
-}
diff --git a/packages/zip/zip-native_2.32.bb b/packages/zip/zip-native_2.32.bb
index fde61efcb7..cfa4272378 100644
--- a/packages/zip/zip-native_2.32.bb
+++ b/packages/zip/zip-native_2.32.bb
@@ -1,6 +1,7 @@
-SECTION = "console/utils"
-inherit native
require zip_${PV}.bb
+
+inherit native
+
S = "${WORKDIR}/zip-${PV}"
do_stage() {
diff --git a/packages/zip/zip.inc b/packages/zip/zip.inc
index b66b4b217f..8d04bd5f61 100644
--- a/packages/zip/zip.inc
+++ b/packages/zip/zip.inc
@@ -1,6 +1,9 @@
+DESCRIPTION = "Archiver for .zip files"
SECTION = "console/utils"
-SRC_URI = "http://ftp.info-zip.org/pub/infozip/src/zip${@bb.data.getVar('PV',d,1).replace('.', '')}.tar.gz"
LICENSE = "Info-ZIP"
+
+SRC_URI = "http://ftp.info-zip.org/pub/infozip/src/zip${@bb.data.getVar('PV',d,1).replace('.', '')}.tar.gz"
+
EXTRA_OEMAKE = "'CC=${CC}' 'BIND=${CC}' 'AS=${CC} -c' 'CPP=${CPP}' \
'CFLAGS=-I. -DUNIX ${CFLAGS}' 'INSTALL=install' \
'BINFLAGS=0755' 'INSTALL_D=install -d'"
diff --git a/packages/zip/zip_2.31.bb b/packages/zip/zip_2.31.bb
deleted file mode 100644
index b8c4ae9da0..0000000000
--- a/packages/zip/zip_2.31.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require zip.inc
-PR="r0"
diff --git a/packages/zip/zip_2.32.bb b/packages/zip/zip_2.32.bb
index b8c4ae9da0..4e01db84c7 100644
--- a/packages/zip/zip_2.32.bb
+++ b/packages/zip/zip_2.32.bb
@@ -1,2 +1,3 @@
require zip.inc
-PR="r0"
+
+PR="r1"
diff --git a/packages/zlib/files/visibility.patch b/packages/zlib/files/visibility.patch
deleted file mode 100644
index ba1a2a6fef..0000000000
--- a/packages/zlib/files/visibility.patch
+++ /dev/null
@@ -1,1022 +0,0 @@
---- tmp/work/arm-linux-uclibc/zlib-1.2.2-r5/zlib-1.2.2/adler32.c 2003-11-17 15:24:27.000000000 -0600
-+++ zlib-1.2.2/adler32.c 2005-02-28 19:04:09.000000000 -0600
-@@ -44,7 +44,7 @@
- #endif
-
- /* ========================================================================= */
--uLong ZEXPORT adler32(adler, buf, len)
-+ZEXPORT uLong adler32(adler, buf, len)
- uLong adler;
- const Bytef *buf;
- uInt len;
---- tmp/work/arm-linux-uclibc/zlib-1.2.2-r5/zlib-1.2.2/compress.c 2003-07-07 00:37:56.000000000 -0500
-+++ zlib-1.2.2/compress.c 2005-02-28 19:04:09.000000000 -0600
-@@ -19,7 +19,7 @@
- memory, Z_BUF_ERROR if there was not enough room in the output buffer,
- Z_STREAM_ERROR if the level parameter is invalid.
- */
--int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
-+ZEXPORT int compress2 (dest, destLen, source, sourceLen, level)
- Bytef *dest;
- uLongf *destLen;
- const Bytef *source;
-@@ -59,7 +59,7 @@
-
- /* ===========================================================================
- */
--int ZEXPORT compress (dest, destLen, source, sourceLen)
-+ZEXPORT int compress (dest, destLen, source, sourceLen)
- Bytef *dest;
- uLongf *destLen;
- const Bytef *source;
-@@ -72,7 +72,7 @@
- If the default memLevel or windowBits for deflateInit() is changed, then
- this function needs to be updated.
- */
--uLong ZEXPORT compressBound (sourceLen)
-+ZEXPORT uLong compressBound (sourceLen)
- uLong sourceLen;
- {
- return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + 11;
---- tmp/work/arm-linux-uclibc/zlib-1.2.2-r5/zlib-1.2.2/crc32.c 2004-10-03 21:29:30.000000000 -0500
-+++ zlib-1.2.2/crc32.c 2005-02-28 19:04:09.000000000 -0600
-@@ -198,7 +198,7 @@
- /* =========================================================================
- * This function can be used by asm versions of crc32()
- */
--const unsigned long FAR * ZEXPORT get_crc_table()
-+ZEXPORT const unsigned long FAR * get_crc_table()
- {
- #ifdef DYNAMIC_CRC_TABLE
- if (crc_table_empty)
-@@ -212,7 +212,7 @@
- #define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
-
- /* ========================================================================= */
--unsigned long ZEXPORT crc32(crc, buf, len)
-+ZEXPORT unsigned long crc32(crc, buf, len)
- unsigned long crc;
- const unsigned char FAR *buf;
- unsigned len;
---- tmp/work/arm-linux-uclibc/zlib-1.2.2-r5/zlib-1.2.2/deflate.c 2004-09-15 09:28:14.000000000 -0500
-+++ zlib-1.2.2/deflate.c 2005-02-28 19:04:09.000000000 -0600
-@@ -201,7 +201,7 @@
- zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head));
-
- /* ========================================================================= */
--int ZEXPORT deflateInit_(strm, level, version, stream_size)
-+ZEXPORT int deflateInit_(strm, level, version, stream_size)
- z_streamp strm;
- int level;
- const char *version;
-@@ -213,7 +213,7 @@
- }
-
- /* ========================================================================= */
--int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
-+ZEXPORT int deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
- version, stream_size)
- z_streamp strm;
- int level;
-@@ -311,7 +311,7 @@
- }
-
- /* ========================================================================= */
--int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
-+ZEXPORT int deflateSetDictionary (strm, dictionary, dictLength)
- z_streamp strm;
- const Bytef *dictionary;
- uInt dictLength;
-@@ -355,7 +355,7 @@
- }
-
- /* ========================================================================= */
--int ZEXPORT deflateReset (strm)
-+ZEXPORT int deflateReset (strm)
- z_streamp strm;
- {
- deflate_state *s;
-@@ -391,7 +391,7 @@
- }
-
- /* ========================================================================= */
--int ZEXPORT deflatePrime (strm, bits, value)
-+ZEXPORT int deflatePrime (strm, bits, value)
- z_streamp strm;
- int bits;
- int value;
-@@ -403,7 +403,7 @@
- }
-
- /* ========================================================================= */
--int ZEXPORT deflateParams(strm, level, strategy)
-+ZEXPORT int deflateParams(strm, level, strategy)
- z_streamp strm;
- int level;
- int strategy;
-@@ -457,7 +457,7 @@
- * But even the conservative upper bound of about 14% expansion does not
- * seem onerous for output buffer allocation.
- */
--uLong ZEXPORT deflateBound(strm, sourceLen)
-+ZEXPORT uLong deflateBound(strm, sourceLen)
- z_streamp strm;
- uLong sourceLen;
- {
-@@ -520,7 +520,7 @@
- }
-
- /* ========================================================================= */
--int ZEXPORT deflate (strm, flush)
-+ZEXPORT int deflate (strm, flush)
- z_streamp strm;
- int flush;
- {
-@@ -696,7 +696,7 @@
- }
-
- /* ========================================================================= */
--int ZEXPORT deflateEnd (strm)
-+ZEXPORT int deflateEnd (strm)
- z_streamp strm;
- {
- int status;
-@@ -726,7 +726,7 @@
- * To simplify the source, this is not supported for 16-bit MSDOS (which
- * doesn't have enough memory anyway to duplicate compression states).
- */
--int ZEXPORT deflateCopy (dest, source)
-+ZEXPORT int deflateCopy (dest, source)
- z_streamp dest;
- z_streamp source;
- {
---- tmp/work/arm-linux-uclibc/zlib-1.2.2-r5/zlib-1.2.2/gzio.c 2004-10-03 21:30:37.000000000 -0500
-+++ zlib-1.2.2/gzio.c 2005-02-28 19:06:11.000000000 -0600
-@@ -205,7 +205,7 @@
- /* ===========================================================================
- Opens a gzip (.gz) file for reading or writing.
- */
--gzFile ZEXPORT gzopen (path, mode)
-+ZEXPORT gzFile gzopen (path, mode)
- const char *path;
- const char *mode;
- {
-@@ -216,7 +216,7 @@
- Associate a gzFile with the file descriptor fd. fd is not dup'ed here
- to mimic the behavio(u)r of fdopen.
- */
--gzFile ZEXPORT gzdopen (fd, mode)
-+ZEXPORT gzFile gzdopen (fd, mode)
- int fd;
- const char *mode;
- {
-@@ -231,7 +231,7 @@
- /* ===========================================================================
- * Update the compression level and strategy
- */
--int ZEXPORT gzsetparams (file, level, strategy)
-+ZEXPORT int gzsetparams (file, level, strategy)
- gzFile file;
- int level;
- int strategy;
-@@ -391,7 +391,7 @@
- Reads the given number of uncompressed bytes from the compressed file.
- gzread returns the number of bytes actually read (0 for end of file).
- */
--int ZEXPORT gzread (file, buf, len)
-+ZEXPORT int gzread (file, buf, len)
- gzFile file;
- voidp buf;
- unsigned len;
-@@ -500,7 +500,7 @@
- Reads one byte from the compressed file. gzgetc returns this byte
- or -1 in case of end of file or error.
- */
--int ZEXPORT gzgetc(file)
-+ZEXPORT int gzgetc(file)
- gzFile file;
- {
- unsigned char c;
-@@ -512,7 +512,7 @@
- /* ===========================================================================
- Push one byte back onto the stream.
- */
--int ZEXPORT gzungetc(c, file)
-+ZEXPORT int gzungetc(c, file)
- int c;
- gzFile file;
- {
-@@ -537,7 +537,7 @@
-
- The current implementation is not optimized at all.
- */
--char * ZEXPORT gzgets(file, buf, len)
-+ZEXPORT char * gzgets(file, buf, len)
- gzFile file;
- char *buf;
- int len;
-@@ -556,7 +556,7 @@
- Writes the given number of uncompressed bytes into the compressed file.
- gzwrite returns the number of bytes actually written (0 in case of error).
- */
--int ZEXPORT gzwrite (file, buf, len)
-+ZEXPORT int gzwrite (file, buf, len)
- gzFile file;
- voidpc buf;
- unsigned len;
-@@ -600,7 +600,7 @@
- #ifdef STDC
- #include <stdarg.h>
-
--int ZEXPORTVA gzprintf (gzFile file, const char *format, /* args */ ...)
-+ZEXPORTVA int gzprintf (gzFile file, const char *format, /* args */ ...)
- {
- char buf[Z_PRINTF_BUFSIZE];
- va_list va;
-@@ -634,7 +634,7 @@
- }
- #else /* not ANSI C */
-
--int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
-+ZEXPORT intVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
- a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
- gzFile file;
- const char *format;
-@@ -675,7 +675,7 @@
- Writes c, converted to an unsigned char, into the compressed file.
- gzputc returns the value that was written, or -1 in case of error.
- */
--int ZEXPORT gzputc(file, c)
-+ZEXPORT int gzputc(file, c)
- gzFile file;
- int c;
- {
-@@ -690,7 +690,7 @@
- the terminating null character.
- gzputs returns the number of characters written, or -1 in case of error.
- */
--int ZEXPORT gzputs(file, s)
-+ZEXPORT int gzputs(file, s)
- gzFile file;
- const char *s;
- {
-@@ -743,7 +743,7 @@
- return s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
- }
-
--int ZEXPORT gzflush (file, flush)
-+ZEXPORT int gzflush (file, flush)
- gzFile file;
- int flush;
- {
-@@ -764,7 +764,7 @@
- SEEK_END is not implemented, returns error.
- In this version of the library, gzseek can be extremely slow.
- */
--z_off_t ZEXPORT gzseek (file, offset, whence)
-+ZEXPORT z_off_t gzseek (file, offset, whence)
- gzFile file;
- z_off_t offset;
- int whence;
-@@ -854,7 +854,7 @@
- /* ===========================================================================
- Rewinds input file.
- */
--int ZEXPORT gzrewind (file)
-+ZEXPORT int gzrewind (file)
- gzFile file;
- {
- gz_stream *s = (gz_stream*)file;
-@@ -878,7 +878,7 @@
- given compressed file. This position represents a number of bytes in the
- uncompressed data stream.
- */
--z_off_t ZEXPORT gztell (file)
-+ZEXPORT z_off_t gztell (file)
- gzFile file;
- {
- return gzseek(file, 0L, SEEK_CUR);
-@@ -888,7 +888,7 @@
- Returns 1 when EOF has previously been detected reading the given
- input stream, otherwise zero.
- */
--int ZEXPORT gzeof (file)
-+ZEXPORT int gzeof (file)
- gzFile file;
- {
- gz_stream *s = (gz_stream*)file;
-@@ -938,7 +938,7 @@
- Flushes all pending output if necessary, closes the compressed file
- and deallocates all the (de)compression state.
- */
--int ZEXPORT gzclose (file)
-+ZEXPORT int gzclose (file)
- gzFile file;
- {
- int err;
-@@ -967,7 +967,7 @@
- errnum is set to Z_ERRNO and the application may consult errno
- to get the exact error code.
- */
--const char * ZEXPORT gzerror (file, errnum)
-+ZEXPORT const char * gzerror (file, errnum)
- gzFile file;
- int *errnum;
- {
-@@ -997,7 +997,7 @@
- /* ===========================================================================
- Clear the error and end-of-file flags, and do the same for the real file.
- */
--void ZEXPORT gzclearerr (file)
-+ZEXPORT void gzclearerr (file)
- gzFile file;
- {
- gz_stream *s = (gz_stream*)file;
---- tmp/work/arm-linux-uclibc/zlib-1.2.2-r5/zlib-1.2.2/infback.c 2004-10-03 21:31:20.000000000 -0500
-+++ zlib-1.2.2/infback.c 2005-02-28 19:04:09.000000000 -0600
-@@ -25,7 +25,7 @@
- windowBits is in the range 8..15, and window is a user-supplied
- window and output buffer that is 2**windowBits bytes.
- */
--int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size)
-+ZEXPORT int inflateBackInit_(strm, windowBits, window, version, stream_size)
- z_stream FAR *strm;
- int windowBits;
- unsigned char FAR *window;
-@@ -237,7 +237,7 @@
- inflateBack() can also return Z_STREAM_ERROR if the input parameters
- are not correct, i.e. strm is Z_NULL or the state was not initialized.
- */
--int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc)
-+ZEXPORT int inflateBack(strm, in, in_desc, out, out_desc)
- z_stream FAR *strm;
- in_func in;
- void FAR *in_desc;
-@@ -610,7 +610,7 @@
- return ret;
- }
-
--int ZEXPORT inflateBackEnd(strm)
-+ZEXPORT int inflateBackEnd(strm)
- z_stream FAR *strm;
- {
- if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
---- tmp/work/arm-linux-uclibc/zlib-1.2.2-r5/zlib-1.2.2/inflate.c 2004-10-03 21:33:51.000000000 -0500
-+++ zlib-1.2.2/inflate.c 2005-02-28 19:04:09.000000000 -0600
-@@ -100,7 +100,7 @@
- local unsigned syncsearch OF((unsigned FAR *have, unsigned char FAR *buf,
- unsigned len));
-
--int ZEXPORT inflateReset(strm)
-+ZEXPORT int inflateReset(strm)
- z_streamp strm;
- {
- struct inflate_state FAR *state;
-@@ -122,7 +122,7 @@
- return Z_OK;
- }
-
--int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size)
-+ZEXPORT int inflateInit2_(strm, windowBits, version, stream_size)
- z_streamp strm;
- int windowBits;
- const char *version;
-@@ -165,7 +165,7 @@
- return inflateReset(strm);
- }
-
--int ZEXPORT inflateInit_(strm, version, stream_size)
-+ZEXPORT int inflateInit_(strm, version, stream_size)
- z_streamp strm;
- const char *version;
- int stream_size;
-@@ -532,7 +532,7 @@
- will return Z_BUF_ERROR if it has not reached the end of the stream.
- */
-
--int ZEXPORT inflate(strm, flush)
-+ZEXPORT int inflate(strm, flush)
- z_streamp strm;
- int flush;
- {
-@@ -1085,7 +1085,7 @@
- return ret;
- }
-
--int ZEXPORT inflateEnd(strm)
-+ZEXPORT int inflateEnd(strm)
- z_streamp strm;
- {
- struct inflate_state FAR *state;
-@@ -1099,7 +1099,7 @@
- return Z_OK;
- }
-
--int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength)
-+ZEXPORT int inflateSetDictionary(strm, dictionary, dictLength)
- z_streamp strm;
- const Bytef *dictionary;
- uInt dictLength;
-@@ -1171,7 +1171,7 @@
- return next;
- }
-
--int ZEXPORT inflateSync(strm)
-+ZEXPORT int inflateSync(strm)
- z_streamp strm;
- {
- unsigned len; /* number of bytes to look at or looked at */
-@@ -1222,7 +1222,7 @@
- block. When decompressing, PPP checks that at the end of input packet,
- inflate is waiting for these length bytes.
- */
--int ZEXPORT inflateSyncPoint(strm)
-+ZEXPORT int inflateSyncPoint(strm)
- z_streamp strm;
- {
- struct inflate_state FAR *state;
-@@ -1232,7 +1232,7 @@
- return state->mode == STORED && state->bits == 0;
- }
-
--int ZEXPORT inflateCopy(dest, source)
-+ZEXPORT int inflateCopy(dest, source)
- z_streamp dest;
- z_streamp source;
- {
---- tmp/work/arm-linux-uclibc/zlib-1.2.2-r5/zlib-1.2.2/uncompr.c 2003-07-07 00:36:56.000000000 -0500
-+++ zlib-1.2.2/uncompr.c 2005-02-28 19:04:09.000000000 -0600
-@@ -23,7 +23,7 @@
- enough memory, Z_BUF_ERROR if there was not enough room in the output
- buffer, or Z_DATA_ERROR if the input data was corrupted.
- */
--int ZEXPORT uncompress (dest, destLen, source, sourceLen)
-+ZEXPORT int uncompress (dest, destLen, source, sourceLen)
- Bytef *dest;
- uLongf *destLen;
- const Bytef *source;
---- tmp/work/arm-linux-uclibc/zlib-1.2.2-r5/zlib-1.2.2/zconf.in.h 2004-05-30 15:38:00.000000000 -0500
-+++ zlib-1.2.2/zconf.in.h 2005-02-28 19:04:09.000000000 -0600
-@@ -198,11 +198,9 @@
- */
- # ifdef ZLIB_DLL
- # if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
--# ifdef ZLIB_INTERNAL
--# define ZEXTERN extern __declspec(dllexport)
--# else
--# define ZEXTERN extern __declspec(dllimport)
--# endif
-+# define ZDLLLOCAL __declspec(dllimport)
-+# define ZDLLPUBLIC __declspec(dllexport)
-+# define ZEXTERN extern
- # endif
- # endif /* ZLIB_DLL */
- /* If building or using zlib with the WINAPI/WINAPIV calling convention,
-@@ -223,30 +221,45 @@
- # define ZEXPORTVA FAR CDECL
- # endif
- # endif
--#endif
--
--#if defined (__BEOS__)
-+#elif defined (__BEOS__)
- # ifdef ZLIB_DLL
--# ifdef ZLIB_INTERNAL
--# define ZEXPORT __declspec(dllexport)
--# define ZEXPORTVA __declspec(dllexport)
--# else
--# define ZEXPORT __declspec(dllimport)
--# define ZEXPORTVA __declspec(dllimport)
--# endif
-+# define ZDLLIMPORT __declspec(dllimport)
-+# define ZDLLPUBLIC __declspec(dllexport)
-+# define ZDLLLOCAL
-+# endif
-+#else
-+# define ZDLLIMPORT
-+# ifdef GCC_HASCLASSVISIBILITY
-+# define ZDLLLOCAL __attribute__ ((visibility("hidden")))
-+# define ZDLLPUBLIC __attribute__ ((visibility("default")))
-+# else
-+# define ZDLLLOCAL
-+# define ZDLLPUBLIC
- # endif
- #endif
-
- #ifndef ZEXTERN
- # define ZEXTERN extern
- #endif
--#ifndef ZEXPORT
--# define ZEXPORT
--#endif
--#ifndef ZEXPORTVA
--# define ZEXPORTVA
-+#ifdef ZLIB_INTERNAL
-+# ifndef ZLIB_DLL
-+# define ZEXPORT
-+# define ZEXPORTVA
-+# endif
-+# ifndef ZEXPORT
-+# define ZEXPORT ZDLLPUBLIC
-+# endif
-+# ifndef ZEXPORTVA
-+# define ZEXPORTVA ZDLLPUBLIC
-+# endif
-+#else
-+# ifndef ZEXPORT
-+# define ZEXPORT ZDLLIMPORT
-+# endif
-+# ifndef ZEXPORTVA
-+# define ZEXPORTVA ZDLLIMPORT
-+# endif
- #endif
--
- #ifndef FAR
- # define FAR
- #endif
---- tmp/work/arm-linux-uclibc/zlib-1.2.2-r5/zlib-1.2.2/zlib.h 2004-10-03 21:57:26.000000000 -0500
-+++ zlib-1.2.2/zlib.h 2005-02-28 19:04:09.000000000 -0600
-@@ -184,7 +184,7 @@
-
- /* basic functions */
-
--ZEXTERN const char * ZEXPORT zlibVersion OF((void));
-+ZEXTERN ZEXPORT const char * zlibVersion OF((void));
- /* The application can compare zlibVersion and ZLIB_VERSION for consistency.
- If the first character differs, the library code actually used is
- not compatible with the zlib.h header file used by the application.
-@@ -192,7 +192,7 @@
- */
-
- /*
--ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
-+ZEXTERN ZEXPORT int deflateInit OF((z_streamp strm, int level));
-
- Initializes the internal stream state for compression. The fields
- zalloc, zfree and opaque must be initialized before by the caller.
-@@ -214,7 +214,7 @@
- */
-
-
--ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
-+ZEXTERN ZEXPORT int deflate OF((z_streamp strm, int flush));
- /*
- deflate compresses as much data as possible, and stops when the input
- buffer becomes empty or the output buffer becomes full. It may introduce some
-@@ -296,7 +296,7 @@
- */
-
-
--ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
-+ZEXTERN ZEXPORT int deflateEnd OF((z_streamp strm));
- /*
- All dynamically allocated data structures for this stream are freed.
- This function discards any unprocessed input and does not flush any
-@@ -311,7 +311,7 @@
-
-
- /*
--ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
-+ZEXTERN ZEXPORT int inflateInit OF((z_streamp strm));
-
- Initializes the internal stream state for decompression. The fields
- next_in, avail_in, zalloc, zfree and opaque must be initialized before by
-@@ -331,7 +331,7 @@
- */
-
-
--ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
-+ZEXTERN ZEXPORT int inflate OF((z_streamp strm, int flush));
- /*
- inflate decompresses as much data as possible, and stops when the input
- buffer becomes empty or the output buffer becomes full. It may introduce
-@@ -430,7 +430,7 @@
- */
-
-
--ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
-+ZEXTERN ZEXPORT int inflateEnd OF((z_streamp strm));
- /*
- All dynamically allocated data structures for this stream are freed.
- This function discards any unprocessed input and does not flush any
-@@ -448,7 +448,7 @@
- */
-
- /*
--ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
-+ZEXTERN ZEXPORT int deflateInit2 OF((z_streamp strm,
- int level,
- int method,
- int windowBits,
-@@ -504,7 +504,7 @@
- not perform any compression: this will be done by deflate().
- */
-
--ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
-+ZEXTERN ZEXPORT int deflateSetDictionary OF((z_streamp strm,
- const Bytef *dictionary,
- uInt dictLength));
- /*
-@@ -541,7 +541,7 @@
- perform any compression: this will be done by deflate().
- */
-
--ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
-+ZEXTERN ZEXPORT int deflateCopy OF((z_streamp dest,
- z_streamp source));
- /*
- Sets the destination stream as a complete copy of the source stream.
-@@ -559,7 +559,7 @@
- destination.
- */
-
--ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
-+ZEXTERN ZEXPORT int deflateReset OF((z_streamp strm));
- /*
- This function is equivalent to deflateEnd followed by deflateInit,
- but does not free and reallocate all the internal compression state.
-@@ -570,7 +570,7 @@
- stream state was inconsistent (such as zalloc or state being NULL).
- */
-
--ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
-+ZEXTERN ZEXPORT int deflateParams OF((z_streamp strm,
- int level,
- int strategy));
- /*
-@@ -591,7 +591,7 @@
- if strm->avail_out was zero.
- */
-
--ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
-+ZEXTERN ZEXPORT uLong deflateBound OF((z_streamp strm,
- uLong sourceLen));
- /*
- deflateBound() returns an upper bound on the compressed size after
-@@ -600,7 +600,7 @@
- for deflation in a single pass, and so would be called before deflate().
- */
-
--ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
-+ZEXTERN ZEXPORT int deflatePrime OF((z_streamp strm,
- int bits,
- int value));
- /*
-@@ -617,7 +617,7 @@
- */
-
- /*
--ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
-+ZEXTERN ZEXPORT int inflateInit2 OF((z_streamp strm,
- int windowBits));
-
- This is another version of inflateInit with an extra parameter. The
-@@ -659,7 +659,7 @@
- modified, but next_out and avail_out are unchanged.)
- */
-
--ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
-+ZEXTERN ZEXPORT int inflateSetDictionary OF((z_streamp strm,
- const Bytef *dictionary,
- uInt dictLength));
- /*
-@@ -678,7 +678,7 @@
- inflate().
- */
-
--ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
-+ZEXTERN ZEXPORT int inflateSync OF((z_streamp strm));
- /*
- Skips invalid compressed data until a full flush point (see above the
- description of deflate with Z_FULL_FLUSH) can be found, or until all
-@@ -693,7 +693,7 @@
- until success or end of the input data.
- */
-
--ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
-+ZEXTERN ZEXPORT int inflateCopy OF((z_streamp dest,
- z_streamp source));
- /*
- Sets the destination stream as a complete copy of the source stream.
-@@ -709,7 +709,7 @@
- destination.
- */
-
--ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
-+ZEXTERN ZEXPORT int inflateReset OF((z_streamp strm));
- /*
- This function is equivalent to inflateEnd followed by inflateInit,
- but does not free and reallocate all the internal decompression state.
-@@ -720,7 +720,7 @@
- */
-
- /*
--ZEXTERN int ZEXPORT inflateBackInit OF((z_stream FAR *strm, int windowBits,
-+ZEXTERN ZEXPORT int inflateBackInit OF((z_stream FAR *strm, int windowBits,
- unsigned char FAR *window));
-
- Initialize the internal stream state for decompression using inflateBack()
-@@ -744,7 +744,7 @@
- typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
- typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
-
--ZEXTERN int ZEXPORT inflateBack OF((z_stream FAR *strm,
-+ZEXTERN ZEXPORT int inflateBack OF((z_stream FAR *strm,
- in_func in, void FAR *in_desc,
- out_func out, void FAR *out_desc));
- /*
-@@ -813,7 +813,7 @@
- that inflateBack() cannot return Z_OK.
- */
-
--ZEXTERN int ZEXPORT inflateBackEnd OF((z_stream FAR *strm));
-+ZEXTERN ZEXPORT int inflateBackEnd OF((z_stream FAR *strm));
- /*
- All memory allocated by inflateBackInit() is freed.
-
-@@ -821,7 +821,7 @@
- state was inconsistent.
- */
-
--ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
-+ZEXTERN ZEXPORT uLong zlibCompileFlags OF((void));
- /* Return flags indicating compile-time options.
-
- Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
-@@ -873,7 +873,7 @@
- utility functions can easily be modified if you need special options.
- */
-
--ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen,
-+ZEXTERN ZEXPORT int compress OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen));
- /*
- Compresses the source buffer into the destination buffer. sourceLen is
-@@ -888,7 +888,7 @@
- buffer.
- */
-
--ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
-+ZEXTERN ZEXPORT int compress2 OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen,
- int level));
- /*
-@@ -904,14 +904,14 @@
- Z_STREAM_ERROR if the level parameter is invalid.
- */
-
--ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
-+ZEXTERN ZEXPORT uLong compressBound OF((uLong sourceLen));
- /*
- compressBound() returns an upper bound on the compressed size after
- compress() or compress2() on sourceLen bytes. It would be used before
- a compress() or compress2() call to allocate the destination buffer.
- */
-
--ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
-+ZEXTERN ZEXPORT int uncompress OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen));
- /*
- Decompresses the source buffer into the destination buffer. sourceLen is
-@@ -932,7 +932,7 @@
-
- typedef voidp gzFile;
-
--ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
-+ZEXTERN ZEXPORT gzFile gzopen OF((const char *path, const char *mode));
- /*
- Opens a gzip (.gz) file for reading or writing. The mode parameter
- is as in fopen ("rb" or "wb") but can also include a compression level
-@@ -949,7 +949,7 @@
- can be checked to distinguish the two cases (if errno is zero, the
- zlib error is Z_MEM_ERROR). */
-
--ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
-+ZEXTERN ZEXPORT gzFile gzdopen OF((int fd, const char *mode));
- /*
- gzdopen() associates a gzFile with the file descriptor fd. File
- descriptors are obtained from calls like open, dup, creat, pipe or
-@@ -962,7 +962,7 @@
- the (de)compression state.
- */
-
--ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
-+ZEXTERN ZEXPORT int gzsetparams OF((gzFile file, int level, int strategy));
- /*
- Dynamically update the compression level or strategy. See the description
- of deflateInit2 for the meaning of these parameters.
-@@ -970,7 +970,7 @@
- opened for writing.
- */
-
--ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
-+ZEXTERN ZEXPORT int gzread OF((gzFile file, voidp buf, unsigned len));
- /*
- Reads the given number of uncompressed bytes from the compressed file.
- If the input file was not in gzip format, gzread copies the given number
-@@ -978,7 +978,7 @@
- gzread returns the number of uncompressed bytes actually read (0 for
- end of file, -1 for error). */
-
--ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
-+ZEXTERN ZEXPORT int gzwrite OF((gzFile file,
- voidpc buf, unsigned len));
- /*
- Writes the given number of uncompressed bytes into the compressed file.
-@@ -986,7 +986,7 @@
- (0 in case of error).
- */
-
--ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...));
-+ZEXTERN ZEXPORTVA int gzprintf OF((gzFile file, const char *format, ...));
- /*
- Converts, formats, and writes the args to the compressed file under
- control of the format string, as in fprintf. gzprintf returns the number of
-@@ -999,14 +999,14 @@
- because the secure snprintf() or vsnprintf() functions were not available.
- */
-
--ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
-+ZEXTERN ZEXPORT int gzputs OF((gzFile file, const char *s));
- /*
- Writes the given null-terminated string to the compressed file, excluding
- the terminating null character.
- gzputs returns the number of characters written, or -1 in case of error.
- */
-
--ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
-+ZEXTERN ZEXPORT char * gzgets OF((gzFile file, char *buf, int len));
- /*
- Reads bytes from the compressed file until len-1 characters are read, or
- a newline character is read and transferred to buf, or an end-of-file
-@@ -1015,19 +1015,19 @@
- gzgets returns buf, or Z_NULL in case of error.
- */
-
--ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
-+ZEXTERN ZEXPORT int gzputc OF((gzFile file, int c));
- /*
- Writes c, converted to an unsigned char, into the compressed file.
- gzputc returns the value that was written, or -1 in case of error.
- */
-
--ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
-+ZEXTERN ZEXPORT int gzgetc OF((gzFile file));
- /*
- Reads one byte from the compressed file. gzgetc returns this byte
- or -1 in case of end of file or error.
- */
-
--ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
-+ZEXTERN ZEXPORT int gzungetc OF((int c, gzFile file));
- /*
- Push one character back onto the stream to be read again later.
- Only one character of push-back is allowed. gzungetc() returns the
-@@ -1037,7 +1037,7 @@
- or gzrewind().
- */
-
--ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
-+ZEXTERN ZEXPORT int gzflush OF((gzFile file, int flush));
- /*
- Flushes all pending output into the compressed file. The parameter
- flush is as in the deflate() function. The return value is the zlib
-@@ -1047,7 +1047,7 @@
- degrade compression.
- */
-
--ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
-+ZEXTERN ZEXPORT z_off_t gzseek OF((gzFile file,
- z_off_t offset, int whence));
- /*
- Sets the starting position for the next gzread or gzwrite on the
-@@ -1065,14 +1065,14 @@
- would be before the current position.
- */
-
--ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
-+ZEXTERN ZEXPORT int gzrewind OF((gzFile file));
- /*
- Rewinds the given file. This function is supported only for reading.
-
- gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
- */
-
--ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
-+ZEXTERN ZEXPORT z_off_t gztell OF((gzFile file));
- /*
- Returns the starting position for the next gzread or gzwrite on the
- given compressed file. This position represents a number of bytes in the
-@@ -1081,20 +1081,20 @@
- gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
- */
-
--ZEXTERN int ZEXPORT gzeof OF((gzFile file));
-+ZEXTERN ZEXPORT int gzeof OF((gzFile file));
- /*
- Returns 1 when EOF has previously been detected reading the given
- input stream, otherwise zero.
- */
-
--ZEXTERN int ZEXPORT gzclose OF((gzFile file));
-+ZEXTERN ZEXPORT int gzclose OF((gzFile file));
- /*
- Flushes all pending output if necessary, closes the compressed file
- and deallocates all the (de)compression state. The return value is the zlib
- error number (see function gzerror below).
- */
-
--ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
-+ZEXTERN ZEXPORT const char * gzerror OF((gzFile file, int *errnum));
- /*
- Returns the error message for the last error which occurred on the
- given compressed file. errnum is set to zlib error number. If an
-@@ -1103,7 +1103,7 @@
- to get the exact error code.
- */
-
--ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
-+ZEXTERN ZEXPORT void gzclearerr OF((gzFile file));
- /*
- Clears the error and end-of-file flags for file. This is analogous to the
- clearerr() function in stdio. This is useful for continuing to read a gzip
-@@ -1118,7 +1118,7 @@
- compression library.
- */
-
--ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
-+ZEXTERN ZEXPORT uLong adler32 OF((uLong adler, const Bytef *buf, uInt len));
-
- /*
- Update a running Adler-32 checksum with the bytes buf[0..len-1] and
-@@ -1135,7 +1135,7 @@
- if (adler != original_adler) error();
- */
-
--ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
-+ZEXTERN ZEXPORT uLong crc32 OF((uLong crc, const Bytef *buf, uInt len));
- /*
- Update a running crc with the bytes buf[0..len-1] and return the updated
- crc. If buf is NULL, this function returns the required initial value
-@@ -1157,17 +1157,17 @@
- /* deflateInit and inflateInit are macros to allow checking the zlib version
- * and the compiler's view of z_stream:
- */
--ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
-+ZEXTERN ZEXPORT int deflateInit_ OF((z_streamp strm, int level,
- const char *version, int stream_size));
--ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
-+ZEXTERN ZEXPORT int inflateInit_ OF((z_streamp strm,
- const char *version, int stream_size));
--ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
-+ZEXTERN ZEXPORT int deflateInit2_ OF((z_streamp strm, int level, int method,
- int windowBits, int memLevel,
- int strategy, const char *version,
- int stream_size));
--ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
-+ZEXTERN ZEXPORT int inflateInit2_ OF((z_streamp strm, int windowBits,
- const char *version, int stream_size));
--ZEXTERN int ZEXPORT inflateBackInit_ OF((z_stream FAR *strm, int windowBits,
-+ZEXTERN ZEXPORT int inflateBackInit_ OF((z_stream FAR *strm, int windowBits,
- unsigned char FAR *window,
- const char *version,
- int stream_size));
-@@ -1189,9 +1189,9 @@
- struct internal_state {int dummy;}; /* hack for buggy compilers */
- #endif
-
--ZEXTERN const char * ZEXPORT zError OF((int));
--ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z));
--ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void));
-+ZEXTERN ZEXPORT const char * zError OF((int));
-+ZEXTERN ZEXPORT int inflateSyncPoint OF((z_streamp z));
-+ZEXTERN ZEXPORT const uLongf * get_crc_table OF((void));
-
- #ifdef __cplusplus
- }
---- tmp/work/arm-linux-uclibc/zlib-1.2.2-r5/zlib-1.2.2/zutil.c 2003-08-27 21:34:34.000000000 -0500
-+++ zlib-1.2.2/zutil.c 2005-02-28 19:04:09.000000000 -0600
-@@ -28,12 +28,12 @@
- ""};
-
-
--const char * ZEXPORT zlibVersion()
-+ZEXPORT const char * zlibVersion()
- {
- return ZLIB_VERSION;
- }
-
--uLong ZEXPORT zlibCompileFlags()
-+ZEXPORT uLong zlibCompileFlags()
- {
- uLong flags;
-
-@@ -134,7 +134,7 @@
- /* exported to allow conversion of error code to string for compress() and
- * uncompress()
- */
--const char * ZEXPORT zError(err)
-+ZEXPORT const char * zError(err)
- int err;
- {
- return ERR_MSG(err);
diff --git a/packages/zlib/files/zlib_1.2.2-8.diff.gz b/packages/zlib/files/zlib_1.2.2-8.diff.gz
deleted file mode 100644
index c850141973..0000000000
--- a/packages/zlib/files/zlib_1.2.2-8.diff.gz
+++ /dev/null
Binary files differ
diff --git a/packages/zlib/zlib-native_1.1.4.bb b/packages/zlib/zlib-native_1.1.4.bb
deleted file mode 100644
index eb551364ac..0000000000
--- a/packages/zlib/zlib-native_1.1.4.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-SECTION = "libs"
-require zlib_${PV}.bb
-inherit native
-DEPENDS = ""
diff --git a/packages/zlib/zlib-native_1.2.2.bb b/packages/zlib/zlib-native_1.2.2.bb
deleted file mode 100644
index eb551364ac..0000000000
--- a/packages/zlib/zlib-native_1.2.2.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-SECTION = "libs"
-require zlib_${PV}.bb
-inherit native
-DEPENDS = ""
diff --git a/packages/zlib/zlib_1.1.4.bb b/packages/zlib/zlib_1.1.4.bb
deleted file mode 100644
index 768b1bc91a..0000000000
--- a/packages/zlib/zlib_1.1.4.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-DESCRIPTION = "Zlib Compression Library"
-SECTION = "libs"
-PRIORITY = "required"
-HOMEPAGE = "http://www.gzip.org/zlib/"
-LICENSE = "zlib"
-PR = "r1"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/libpng/zlib-${PV}.tar.gz"
-
-S = "${WORKDIR}/zlib-${PV}"
-
-export LDSHARED = "${CC} -shared -Wl,-soname,libz.so.1"
-LDFLAGS_append = " -L. -lz"
-CFLAGS_prepend = "-fPIC "
-AR_append = " rc"
-EXTRA_OEMAKE = ""
-
-do_compile() {
- ./configure --prefix=${prefix} --exec_prefix=${exec_prefix} --shared --libdir=${libdir} --includedir=${includedir}
- oe_runmake -e MAKEFLAGS="" libz.so.${PV} libz.a
-}
-
-do_stage() {
- install -m 0644 zlib.h ${STAGING_INCDIR}/zlib.h
- install -m 0644 zconf.h ${STAGING_INCDIR}/zconf.h
- oe_libinstall -a -so libz ${STAGING_LIBDIR}
-}
-
-do_install() {
- install -d ${D}${prefix} ${D}${includedir} ${D}${libdir}
- oe_runmake "prefix=${D}${prefix}" "includedir=${D}${includedir}" \
- "libdir=${D}${libdir}" install
-}
diff --git a/packages/zlib/zlib_1.2.2.bb b/packages/zlib/zlib_1.2.2.bb
deleted file mode 100644
index 1f543f04b4..0000000000
--- a/packages/zlib/zlib_1.2.2.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-DESCRIPTION = "Zlib Compression Library"
-SECTION = "libs"
-PRIORITY = "required"
-HOMEPAGE = "http://www.gzip.org/zlib/"
-LICENSE = "zlib"
-PR = "r6"
-
-SRC_URI = "http://www.libpng.org/pub/png/src/zlib-${PV}.tar.gz \
- file://visibility.patch;patch=1 \
- file://zlib_1.2.2-8.diff.gz;patch=1 "
-S = "${WORKDIR}/zlib-${PV}"
-
-export LDSHARED = "${CC} -shared -Wl,-soname,libz.so.1"
-LDFLAGS_append = " -L. -lz"
-CFLAGS_prepend = "-fPIC -DZLIB_DLL "
-AR_append = " rc"
-EXTRA_OEMAKE = ""
-
-do_compile() {
- ./configure --prefix=${prefix} --exec_prefix=${exec_prefix} --shared --libdir=${libdir} --includedir=${includedir}
- oe_runmake -e MAKEFLAGS="" libz.so.${PV} libz.a
-}
-
-do_stage() {
- install -m 0644 zlib.h ${STAGING_INCDIR}/zlib.h
- install -m 0644 zconf.h ${STAGING_INCDIR}/zconf.h
- oe_libinstall -a -so libz ${STAGING_LIBDIR}
-}
-
-do_install() {
- install -d ${D}${prefix} ${D}${includedir} ${D}${libdir}
- oe_runmake "prefix=${D}${prefix}" \
- "exec_prefix=${D}${exec_prefix}" \
- "man3dir=${D}${mandir}/man3" \
- "includedir=${D}${includedir}" \
- "libdir=${D}${libdir}" install
-}
diff --git a/packages/zsafe/zsafe_2.1.3.bb b/packages/zsafe/zsafe_2.1.3.bb
index 80d0392b76..3f6fa7c2b1 100644
--- a/packages/zsafe/zsafe_2.1.3.bb
+++ b/packages/zsafe/zsafe_2.1.3.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Password manager"
-SECTION = "opie/applications"
+SECTION = "opie/applications"
PRIORITY = "optional"
LICENSE = "GPL"
RCONFLICTS = "opie-zsafe"
diff --git a/packages/zudoku/zudoku_1.1.bb b/packages/zudoku/zudoku_1.1.bb
index 46c64ebb6e..e9eb09741a 100644
--- a/packages/zudoku/zudoku_1.1.bb
+++ b/packages/zudoku/zudoku_1.1.bb
@@ -5,6 +5,7 @@ LICENSE = "GPL"
SECTION = "opie/games"
APPTYPE = "binary"
APPDESKTOP = "${WORKDIR}"
+PR = "r1"
SRC_URI = "http://www.vanille.de/mirror/zudoku-${PV}.tar.gz \
file://zudoku.html \
@@ -13,6 +14,7 @@ SRC_URI = "http://www.vanille.de/mirror/zudoku-${PV}.tar.gz \
inherit opie
EXTRA_QMAKEVARS_POST += "TARGET=zudoku"
+LDFLAGS += "-lstdc++"
do_install() {
install -d ${D}${palmtopdir}/help/en/html
diff --git a/removal.txt b/removal.txt
index 17b7639586..fb5b8e4298 100644
--- a/removal.txt
+++ b/removal.txt
@@ -26,3 +26,8 @@ Reason: Obsoleted by task-base
Proposed by: Koen Kooi
Note: Moved to packages/obsolete/tasks on 2006-12-22
+Package Name: libmpeg2 (not mpeg2dec!)
+Removal Date: 2007-03-15
+Maintainer: unknown, checked in from BK repo, no updates after that
+Reason: mpeg2dec provides libmpeg2, see bug 375
+Proposed by: Laibsch
diff --git a/site/arm-common b/site/arm-common
new file mode 100644
index 0000000000..6ed62fd459
--- /dev/null
+++ b/site/arm-common
@@ -0,0 +1,236 @@
+ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_slashed_symlink=yes}
+ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
+ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
+ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
+ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
+ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
+ac_cv_sctp=${ac_cv_sctp=no}
+
+# apache
+ac_cv_func_pthread_key_delete=${ac_cv_func_pthread_key_delete=yes}
+apr_cv_process_shared_works=${apr_cv_process_shared_works=no}
+ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
+apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
+
+# bash
+ac_cv_c_long_double=${ac_cv_c_long_double=yes}
+bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t=yes}
+bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=missing}
+bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no}
+bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no}
+bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=yes}
+bash_cv_sys_siglist=${bash_cv_sys_siglist=yes}
+bash_cv_dup2_broken=${bash_cv_dup2_broken=no}
+bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no}
+bash_cv_type_rlimit=${bash_cv_type_rlimit=rlim_t}
+bash_cv_getenv_redef=${bash_cv_getenv_redef=yes}
+bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=yes}
+bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen=no}
+bash_cv_printf_a_format=${bash_cv_printf_a_format=yes}
+bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no}
+bash_cv_job_control_missing=${bash_cv_job_control_missing=present}
+bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present}
+bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs=no}
+ac_cv_have_decl_sys_siglist=${ac_cv_have_decl_sys_siglist=yes}
+
+# coreutils
+utils_cv_sys_open_max=${utils_cv_sys_open_max=1019}
+
+# cvs
+cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
+
+# db (sleepycat)
+db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
+db_cv_sprintf_count=${db_cv_sprintf_count=yes}
+db_cv_path_ar=${db_cv_path_ar=/usr/bin/ar}
+db_cv_path_chmod=${db_cv_path_chmod=/bin/chmod}
+db_cv_path_cp=${db_cv_path_cp=/bin/cp}
+db_cv_path_ln=${db_cv_path_ln=/bin/ln}
+db_cv_path_mkdir=${db_cv_path_mkdir=/bin/mkdir}
+db_cv_path_ranlib=${db_cv_path_ranlib=/usr/bin/ranlib}
+db_cv_path_rm=${db_cv_path_rm=/bin/rm}
+db_cv_path_sh=${db_cv_path_sh=/bin/sh}
+db_cv_path_strip=${db_cv_path_strip=/usr/bin/strip}
+db_cv_align_t=${db_cv_align_t='unsigned long long'}
+db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
+db_cv_mutex=${db_cv_mutex=no}
+db_cv_posixmutexes=${db_cv_posixmutexes=no}
+db_cv_uimutexes=${db_cv_uimutexes=no}
+
+# D-BUS
+ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+
+# edb
+db_cv_spinlocks=${db_cv_spinlocks=no}
+
+# ettercap
+ettercap_cv_type_socklen_t=${ettercap_cv_type_socklen_t=yes}
+
+# fget
+compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
+compat_cv_func_basename_works=${compat_cv_func_basename_works=no}
+compat_cv_func_dirname_works=${compat_cv_func_dirname_works=no}
+
+# fnmatch
+ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
+
+# gettext
+am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+# glib
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_uscore=${glib_cv_uscore=no}
+glib_cv_va_copy=${glib_cv_va_copy=yes}
+glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
+glib_cv___va_copy=${glib_cv___va_copy=yes}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
+ac_cv_func_getpwuid_r=${ac_cv_func_getpwuid_r=yes}
+glib_cv_sys_pthread_mutex_trylock_posix=${glib_cv_sys_pthread_mutex_trylock_posix=yes}
+glib_cv_sys_pthread_getspecific_posix=${glib_cv_sys_pthread_getspecific_posix=yes}
+glib_cv_sys_pthread_cond_timedwait_posix=${glib_cv_sys_pthread_cond_timedwait_posix=yes}
+
+# glib-2.0
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_intmax_t=${glib_cv_sizeof_intmax_t=8}
+glib_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4}
+glib_cv_sizeof_size_t=${glib_cv_sizeof_size_t=4}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_sys_use_pid_niceness_surrogate=${glib_cv_sys_use_pid_niceness_surrogate=yes}
+glib_cv_strlcpy=${glib_cv_strlcpy=no}
+ac_cv_func_printf_unix98=${ac_cv_func_printf_unix98=yes}
+ac_cv_func_snprintf_c99=${ac_cv_func_snprintf_c99=yes}
+ac_cv_func_vsnprintf_c99=${ac_cv_func_vsnprintf_c99=yes}
+glib_cv_compliant_posix_memalign=${glib_cv_compliant_posix_memalign=1}
+
+# httppc
+ac_cv_strerror_r_SUSv3=${ac_cv_strerror_r_SUSv3=no}
+
+# ipsec-tools
+ac_cv_va_copy=${ac_cv_va_copy=yes}
+ac_cv___va_copy=${ac_cv___va_copy=yes}
+ac_cv_va_val_copy=${ac_cv_va_val_copy=yes}
+racoon_cv_bug_getaddrinfo=${racoon_cv_bug_getaddrinfo=no}
+
+# jikes
+ac_cv_sizeof_wchar_t=4
+
+# lftp
+ac_cv_need_trio=${ac_cv_need_trio=no}
+lftp_cv_va_copy=${lftp_cv_va_copy=yes}
+lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
+lftp_cv___va_copy=${lftp_cv___va_copy=yes}
+
+# libesmtp
+acx_working_snprintf=${acx_working_snprintf=yes}
+
+# libidl
+libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
+
+# libnet
+ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
+
+# libpcap
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+# libxfce4util
+with_broken_putenv=${with_broken_putenv=no}
+
+# links
+ac_cv_lib_png_png_create_info_struct=${ac_cv_lib_png_png_create_info_struct=yes}
+
+# mono
+cv_mono_sizeof_sunpath=108
+
+# mysql
+mysql_cv_func_atomic_sub=${mysql_cv_func_atomic_sub=no}
+mysql_cv_func_atomic_add=${mysql_cv_func_atomic_add=no}
+ac_cv_conv_longlong_to_float=${ac_cv_conv_longlong_to_float=yes}
+
+# nano
+ac_cv_regexec_segfault_emptystr=${ac_cv_regexec_segfault_emptystr=no}
+nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
+
+# ORBit2
+ac_cv_alignof_CORBA_boolean=1
+ac_cv_alignof_CORBA_char=1
+ac_cv_alignof_CORBA_double=4
+ac_cv_alignof_CORBA_float=4
+ac_cv_alignof_CORBA_long=4
+ac_cv_alignof_CORBA_long_double=4
+ac_cv_alignof_CORBA_long_long=4
+ac_cv_alignof_CORBA_octet=1
+ac_cv_alignof_CORBA_pointer=4
+ac_cv_alignof_CORBA_short=2
+ac_cv_alignof_CORBA_struct=4
+ac_cv_alignof_CORBA_wchar=2
+ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo=yes}
+
+# php
+ac_cv_pread=${ac_cv_pread=no}
+ac_cv_pwrite=${ac_cv_pwrite=no}
+php_cv_lib_cookie_io_functions_use_off64_t=${php_cv_lib_cookie_io_functions_use_off64_t=yes}
+
+# rsync
+rsync_cv_HAVE_BROKEN_LARGEFILE=${rsync_cv_HAVE_BROKEN_LARGEFILE=no}
+rsync_cv_HAVE_SOCKETPAIR=${rsync_cv_HAVE_SOCKETPAIR=yes}
+rsync_cv_HAVE_LONGLONG=${rsync_cv_HAVE_LONGLONG=yes}
+rsync_cv_HAVE_OFF64_T=${rsync_cv_HAVE_OFF64_T=no}
+rsync_cv_HAVE_SHORT_INO_T=${rsync_cv_HAVE_SHORT_INO_T=no}
+rsync_cv_HAVE_UNSIGNED_CHAR=${rsync_cv_HAVE_UNSIGNED_CHAR=no}
+rsync_cv_HAVE_BROKEN_READDIR=${rsync_cv_HAVE_BROKEN_READDIR=no}
+rsync_cv_HAVE_GETTIMEOFDAY_TZ=${rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+rsync_cv_HAVE_C99_VSNPRINTF=${rsync_cv_HAVE_C99_VSNPRINTF=yes}
+rsync_cv_HAVE_SECURE_MKSTEMP=${rsync_cv_HAVE_SECURE_MKSTEMP=yes}
+rsync_cv_REPLACE_INET_NTOA=${rsync_cv_REPLACE_INET_NTOA=no}
+rsync_cv_REPLACE_INET_ATON=${rsync_cv_REPLACE_INET_ATON=no}
+
+# screen
+screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
+screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
+screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
+screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
+screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
+screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
+screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
+screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
+screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
+
+# slrn
+slrn_cv___va_copy=${slrn_cv___va_copy=yes}
+slrn_cv_va_copy=${slrn_cv_va_copy=yes}
+slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
+ac_cv_func_realloc_works=${ac_cv_func_realloc_works=yes}
+ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes}
+ac_cv_func_malloc_works=${ac_cv_func_malloc_works=yes}
+ac_cv_func_malloc_0_nonnull=${ac_cv_func_malloc_0_nonnull=yes}
+
+# socat
+ac_cv_ispeed_offset=${ac_cv_ispeed_offset=13}
+sc_cv_termios_ispeed=${sc_cv_termios_ispeed=yes}
+
+# ssh
+ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
+ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
+ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
+ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
+ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=yes}
+
+# startup-notification
+lf_cv_sane_realloc=yes
+
+# sudo
+sudo_cv_uid_t_len=${sudo_cv_uid_t_len=10}
+
+# xffm
+jm_cv_func_working_readdir=yes
+
diff --git a/site/arm-linux b/site/arm-linux
index 32b5c5403f..f891400f67 100644
--- a/site/arm-linux
+++ b/site/arm-linux
@@ -21,6 +21,7 @@ ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
ac_cv_sizeof_short_int=${ac_cv_sizeof_short_int=2}
ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=4}
ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4}
+ac_cv_sizeof_long_p=${ac_cv_sizeof_long_p=4}
ac_cv_sizeof_float=${ac_cv_sizeof_float=4}
ac_cv_sizeof_double=${ac_cv_sizeof_double=8}
ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8}
@@ -37,268 +38,120 @@ ac_cv_uchar=${ac_cv_uchar=no}
ac_cv_uint=${ac_cv_uint=yes}
ac_cv_ulong=${ac_cv_ulong=yes}
ac_cv_ushort=${ac_cv_ushort=yes}
-
-mr_cv_target_elf=${mr_cv_target_elf=yes}
-
ac_cv_time_r_type=${ac_cv_time_r_type=POSIX}
-# apache
-ac_cv_func_pthread_key_delete=${ac_cv_func_pthread_key_delete=yes}
-apr_cv_process_shared_works=${apr_cv_process_shared_works=no}
-ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
-
-ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
-ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
-ac_cv_sctp=${ac_cv_sctp=no}
-
-# ssh
-ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
-ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
-ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
-ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
-ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=yes}
-
-# coreutils
-utils_cv_sys_open_max=${utils_cv_sys_open_max=1019}
-
-# libpcap
-ac_cv_linux_vers=${ac_cv_linux_vers=2}
-
-# nano
-ac_cv_regexec_segfault_emptystr=${ac_cv_regexec_segfault_emptystr=no}
-nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
-
-# libnet
-ac_cv_libnet_endianess=${ac_cv_libnet_endianess=lil}
-ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
-
-# screen
-screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
-screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
-screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
-screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
-screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
-screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
-screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
-screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
-screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
-
-ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_slashed_symlink=yes}
-ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
-ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
-ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
-
-# socat
-ac_cv_ispeed_offset=${ac_cv_ispeed_offset=13}
-sc_cv_termios_ispeed=${sc_cv_termios_ispeed=yes}
-
-# links
-ac_cv_lib_png_png_create_info_struct=${ac_cv_lib_png_png_create_info_struct=yes}
-
# samba
+samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=${samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes}
+samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=${samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no}
+samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=${samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no}
+samba_cv_HAVE_BROKEN_GETGROUPS=${samba_cv_HAVE_BROKEN_GETGROUPS=no}
+samba_cv_HAVE_BROKEN_LINUX_SENDFILE=${samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes}
+samba_cv_HAVE_BROKEN_READDIR=${samba_cv_HAVE_BROKEN_READDIR=yes}
+samba_cv_HAVE_BROKEN_READDIR_NAME=${samba_cv_HAVE_BROKEN_READDIR_NAME=no}
+samba_cv_HAVE_C99_VSNPRINTF=${samba_cv_HAVE_C99_VSNPRINTF=yes}
+samba_cv_HAVE_DEV64_T=${samba_cv_HAVE_DEV64_T=no}
+samba_cv_HAVE_DEVICE_MAJOR_FN=${samba_cv_HAVE_DEVICE_MAJOR_FN=yes}
+samba_cv_HAVE_DEVICE_MINOR_FN=${samba_cv_HAVE_DEVICE_MINOR_FN=yes}
+samba_cv_HAVE_DQB_FSOFTLIMIT=${samba_cv_HAVE_DQB_FSOFTLIMIT=no}
+samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=${samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes}
+samba_cv_HAVE_FAM_H=${samba_cv_HAVE_FAM_H=no}
+samba_cv_HAVE_FCNTL_LOCK=${samba_cv_HAVE_FCNTL_LOCK=yes}
+samba_cv_HAVE_FTRUNCATE_EXTEND=${samba_cv_HAVE_FTRUNCATE_EXTEND=yes}
+samba_cv_HAVE_FUNCTION_MACRO=${samba_cv_HAVE_FUNCTION_MACRO=yes}
samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+samba_cv_HAVE_IFACE_AIX=${samba_cv_HAVE_IFACE_AIX=no}
samba_cv_HAVE_IFACE_IFCONF=${samba_cv_HAVE_IFACE_IFCONF=yes}
+samba_cv_HAVE_INO64_T=${samba_cv_HAVE_INO64_T=no}
+samba_cv_HAVE_INT16_FROM_RPC_RPC_H=${samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no}
+samba_cv_HAVE_INT32_FROM_RPC_RPC_H=${samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no}
+samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=${samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes}
+samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=${samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no}
+samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=${samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes}
+samba_cv_HAVE_KERNEL_SHARE_MODES=${samba_cv_HAVE_KERNEL_SHARE_MODES=yes}
+samba_cv_HAVE_MAKEDEV=${samba_cv_HAVE_MAKEDEV=yes}
+samba_cv_HAVE_MMAP=${samba_cv_HAVE_MMAP=yes}
+samba_cv_HAVE_NATIVE_ICONV=${samba_cv_HAVE_NATIVE_ICONV=yes}
+samba_cv_HAVE_OFF64_T=${samba_cv_HAVE_OFF64_T=no}
+samba_cv_HAVE_ROOT=${samba_cv_HAVE_ROOT=yes}
+samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=${samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no}
+samba_cv_HAVE_SECURE_MKSTEMP=${samba_cv_HAVE_SECURE_MKSTEMP=yes}
+samba_cv_HAVE_SENDFILE=${samba_cv_HAVE_SENDFILE=yes}
+samba_cv_HAVE_SENDFILE64=${samba_cv_HAVE_SENDFILE64=yes}
+samba_cv_HAVE_SOCK_SIN_LEN=${samba_cv_HAVE_SOCK_SIN_LEN=no}
+samba_cv_HAVE_STAT_ST_BLKSIZE=${samba_cv_HAVE_STAT_ST_BLKSIZE=yes}
+samba_cv_HAVE_STAT_ST_BLOCKS=${samba_cv_HAVE_STAT_ST_BLOCKS=yes}
+samba_cv_HAVE_STRUCT_DIR64=${samba_cv_HAVE_STRUCT_DIR64=no}
+samba_cv_HAVE_STRUCT_DIRENT64=${samba_cv_HAVE_STRUCT_DIRENT64=yes}
+samba_cv_HAVE_STRUCT_FLOCK64=${samba_cv_HAVE_STRUCT_FLOCK64=yes}
+samba_cv_HAVE_TRUNCATED_SALT=${samba_cv_HAVE_TRUNCATED_SALT=no}
+samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=${samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no}
+samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=${samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no}
+samba_cv_HAVE_UNSIGNED_CHAR=${samba_cv_HAVE_UNSIGNED_CHAR=yes}
+samba_cv_HAVE_UTIMBUF=${samba_cv_HAVE_UTIMBUF=yes}
+samba_cv_HAVE_UT_UT_ADDR=${samba_cv_HAVE_UT_UT_ADDR=yes}
+samba_cv_HAVE_UT_UT_EXIT=${samba_cv_HAVE_UT_UT_EXIT=yes}
+samba_cv_HAVE_UT_UT_HOST=${samba_cv_HAVE_UT_UT_HOST=yes}
+samba_cv_HAVE_UT_UT_ID=${samba_cv_HAVE_UT_UT_ID=yes}
+samba_cv_HAVE_UT_UT_NAME=${samba_cv_HAVE_UT_UT_NAME=yes}
+samba_cv_HAVE_UT_UT_PID=${samba_cv_HAVE_UT_UT_PID=yes}
+samba_cv_HAVE_UT_UT_TIME=${samba_cv_HAVE_UT_UT_TIME=yes}
+samba_cv_HAVE_UT_UT_TV=${samba_cv_HAVE_UT_UT_TV=yes}
+samba_cv_HAVE_UT_UT_TYPE=${samba_cv_HAVE_UT_UT_TYPE=yes}
+samba_cv_HAVE_UT_UT_USER=${samba_cv_HAVE_UT_UT_USER=yes}
+samba_cv_HAVE_UX_UT_SYSLEN=${samba_cv_HAVE_UX_UT_SYSLEN=no}
+samba_cv_HAVE_VA_COPY=${samba_cv_HAVE_VA_COPY=yes}
+samba_cv_HAVE_WORKING_AF_LOCAL=${samba_cv_HAVE_WORKING_AF_LOCAL=yes}
+samba_cv_HAVE_Werror=${samba_cv_HAVE_Werror=yes}
+samba_cv_PUTUTLINE_RETURNS_UTMP=${samba_cv_PUTUTLINE_RETURNS_UTMP=yes}
+samba_cv_QUOTA_WORKS=${samba_cv_QUOTA_WORKS=yes}
+samba_cv_REALPATH_TAKES_NULL=${samba_cv_REALPATH_TAKES_NULL=yes}
+samba_cv_REPLACE_GETPASS=${samba_cv_REPLACE_GETPASS=yes}
+samba_cv_REPLACE_INET_NTOA=${samba_cv_REPLACE_INET_NTOA=no}
+samba_cv_REPLACE_READDIR=${samba_cv_REPLACE_READDIR=no}
+samba_cv_RUN_QUOTA_TESTS=${samba_cv_RUN_QUOTA_TESTS=yes}
+samba_cv_SEEKDIR_RETURNS_VOID=${samba_cv_SEEKDIR_RETURNS_VOID=yes}
+samba_cv_SIZEOF_DEV_T=${samba_cv_SIZEOF_DEV_T=yes}
+samba_cv_SIZEOF_INO_T=${samba_cv_SIZEOF_INO_T=yes}
+samba_cv_SIZEOF_OFF_T=${samba_cv_SIZEOF_OFF_T=yes}
+samba_cv_SYSCONF_SC_NGROUPS_MAX=${samba_cv_SYSCONF_SC_NGROUPS_MAX=yes}
+samba_cv_SYSCONF_SC_NPROCESSORS_ONLN=${samba_cv_SYSCONF_SC_NPROCESSORS_ONLN=yes}
+samba_cv_SYSCONF_SC_NPROC_ONLN=${samba_cv_SYSCONF_SC_NPROC_ONLN=no}
+samba_cv_SYSCONF_SC_PAGESIZE=${samba_cv_SYSCONF_SC_PAGESIZE=yes}
+samba_cv_SYSQUOTA_FOUND=${samba_cv_SYSQUOTA_FOUND=yes}
+samba_cv_SYSQUOTA_WORKS=${samba_cv_SYSQUOTA_WORKS=yes}
+samba_cv_SYSQUOTA_WORKS_XFS=${samba_cv_SYSQUOTA_WORKS_XFS=yes}
+samba_cv_TRY_QUOTAS=${samba_cv_TRY_QUOTAS=no}
+samba_cv_TRY_SYS_QUOTAS=${samba_cv_TRY_SYS_QUOTAS=yes}
+samba_cv_USE_SETRESUID=${samba_cv_USE_SETRESUID=yes}
+samba_cv_WE_USE_SYS_QUOTAS=${samba_cv_WE_USE_SYS_QUOTAS=yes}
+samba_cv_WITH_AFS=${samba_cv_WITH_AFS=no}
+samba_cv_WITH_FAKE_KASERVER=${samba_cv_WITH_FAKE_KASERVER=no}
+samba_cv_WITH_QUOTAS=${samba_cv_WITH_QUOTAS=auto}
+samba_cv_WITH_SYS_QUOTAS=${samba_cv_WITH_SYS_QUOTAS=auto}
+samba_cv_WITH_VFS_AFSACL=${samba_cv_WITH_VFS_AFSACL=no}
+samba_cv_compiler_supports_ll=${samba_cv_compiler_supports_ll=yes}
+samba_cv_found_xfs_header=${samba_cv_found_xfs_header=yes}
+samba_cv_have_longlong=${samba_cv_have_longlong=yes}
+samba_cv_have_setresgid=${samba_cv_have_setresgid=yes}
+samba_cv_have_setresuid=${samba_cv_have_setresuid=yes}
+samba_cv_immediate_structures=${samba_cv_immediate_structures=yes}
+samba_cv_optimize_out_funcation_calls=${samba_cv_optimize_out_funcation_calls=yes}
+samba_cv_sig_atomic_t=${samba_cv_sig_atomic_t=yes}
+samba_cv_socklen_t=${samba_cv_socklen_t=yes}
+samba_cv_struct_timespec=${samba_cv_struct_timespec=yes}
+samba_cv_sysquotas_file=${samba_cv_sysquotas_file=lib/sysquotas_linux.c}
+samba_cv_unixsocket=${samba_cv_unixsocket=yes}
+samba_cv_volatile=${samba_cv_volatile=yes}
+
+#older sambe defines
samba_cv_HAVE_IFACE_IFREQ=${samba_cv_HAVE_IFACE_IFREQ=yes}
samba_cv_USE_SETEUID=${samba_cv_USE_SETEUID=yes}
-samba_cv_USE_SETRESUID=${samba_cv_USE_SETRESUID=yes}
samba_cv_USE_SETREUID=${samba_cv_USE_SETREUID=yes}
samba_cv_USE_SETUIDX=${samba_cv_USE_SETUIDX=yes}
-samba_cv_have_setresgid=${samba_cv_have_setresgid=yes}
-samba_cv_have_setresuid=${samba_cv_have_setresuid=yes}
-samba_cv_HAVE_SENDFILE=${samba_cv_HAVE_SENDFILE=yes}
-samba_cv_HAVE_SENDFILE64=${samba_cv_HAVE_SENDFILE64=yes}
-samba_cv_HAVE_SECURE_MKSTEMP=${samba_cv_HAVE_SECURE_MKSTEMP=yes}
-samba_cv_HAVE_MMAP=${samba_cv_HAVE_MMAP=yes}
-samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=${samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes}
-samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=${samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes}
-samba_cv_HAVE_KERNEL_SHARE_MODES=${samba_cv_HAVE_KERNEL_SHARE_MODES=yes}
samba_cv_LINUX_LFS_SUPPORT=${samba_cv_LINUX_LFS_SUPPORT=yes}
-
-# sleepycat db
-db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
-db_cv_sprintf_count=${db_cv_sprintf_count=yes}
-db_cv_path_ar=${db_cv_path_ar=/usr/bin/ar}
-db_cv_path_chmod=${db_cv_path_chmod=/bin/chmod}
-db_cv_path_cp=${db_cv_path_cp=/bin/cp}
-db_cv_path_ln=${db_cv_path_ln=/bin/ln}
-db_cv_path_mkdir=${db_cv_path_mkdir=/bin/mkdir}
-db_cv_path_ranlib=${db_cv_path_ranlib=/usr/bin/ranlib}
-db_cv_path_rm=${db_cv_path_rm=/bin/rm}
-db_cv_path_sh=${db_cv_path_sh=/bin/sh}
-db_cv_path_strip=${db_cv_path_strip=/usr/bin/strip}
-db_cv_align_t=${db_cv_align_t='unsigned long long'}
-db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
-db_cv_mutex=${db_cv_mutex=no}
-db_cv_posixmutexes=${db_cv_posixmutexes=no}
-db_cv_uimutexes=${db_cv_uimutexes=no}
-
-# php
-ac_cv_pread=${ac_cv_pread=no}
-ac_cv_pwrite=${ac_cv_pwrite=no}
-php_cv_lib_cookie_io_functions_use_off64_t=${php_cv_lib_cookie_io_functions_use_off64_t=yes}
-
-# glib
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
-glib_cv_stack_grows=${glib_cv_stack_grows=no}
-glib_cv_uscore=${glib_cv_uscore=no}
-glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
-glib_cv_has__inline=${glib_cv_has__inline=yes}
-glib_cv_has__inline__=${glib_cv_has__inline__=yes}
-glib_cv_hasinline=${glib_cv_hasinline=yes}
-glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_uscore=${glib_cv_uscore=no}
-glib_cv_va_copy=${glib_cv_va_copy=no}
-glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
-glib_cv___va_copy=${glib_cv___va_copy=yes}
-glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
-ac_cv_func_getpwuid_r=${ac_cv_func_getpwuid_r=yes}
-glib_cv_sys_pthread_mutex_trylock_posix=${glib_cv_sys_pthread_mutex_trylock_posix=yes}
-glib_cv_sys_pthread_getspecific_posix=${glib_cv_sys_pthread_getspecific_posix=yes}
-glib_cv_sys_pthread_cond_timedwait_posix=${glib_cv_sys_pthread_cond_timedwait_posix=yes}
-
-# ettercap
-ettercap_cv_type_socklen_t=${ettercap_cv_type_socklen_t=yes}
-
-# libesmtp
-acx_working_snprintf=${acx_working_snprintf=yes}
-
-# D-BUS
-ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
-
-# glib 2.0
-glib_cv_long_long_format=${glib_cv_long_long_format=ll}
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_sizeof_intmax_t=${glib_cv_sizeof_intmax_t=8}
-glib_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4}
-glib_cv_sizeof_size_t=${glib_cv_sizeof_size_t=4}
-glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
-glib_cv_sys_use_pid_niceness_surrogate=${glib_cv_sys_use_pid_niceness_surrogate=yes}
-
-glib_cv_strlcpy=${glib_cv_strlcpy=no}
-
-# httppc
-ac_cv_strerror_r_SUSv3=${ac_cv_strerror_r_SUSv3=no}
-
-# jikes
-ac_cv_sizeof_wchar_t=4
-
-# lftp
-ac_cv_file___dev_ptc_=yes
-ac_cv_need_trio=${ac_cv_need_trio=no}
-lftp_cv_va_copy=${lftp_cv_va_copy=no}
-lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
-lftp_cv___va_copy=${lftp_cv___va_copy=yes}
-
-# edb
-db_cv_spinlocks=${db_cv_spinlocks=no}
-
-# fget
-compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
-compat_cv_func_basename_works=${compat_cv_func_basename_works=no}
-compat_cv_func_dirname_works=${compat_cv_func_dirname_works=no}
-
-# slrn
-slrn_cv___va_copy=${slrn_cv___va_copy=yes}
-slrn_cv_va_copy=${slrn_cv_va_copy=no}
-slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
-ac_cv_func_realloc_works=${ac_cv_func_realloc_works=yes}
-ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes}
-ac_cv_func_malloc_works=${ac_cv_func_malloc_works=yes}
-ac_cv_func_malloc_0_nonnull=${ac_cv_func_malloc_0_nonnull=yes}
-
-# startup-notification
-lf_cv_sane_realloc=yes
-
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
-# ORBit2
-ac_cv_alignof_CORBA_boolean=1
-ac_cv_alignof_CORBA_char=1
-ac_cv_alignof_CORBA_double=4
-ac_cv_alignof_CORBA_float=4
-ac_cv_alignof_CORBA_long=4
-ac_cv_alignof_CORBA_long_double=4
-ac_cv_alignof_CORBA_long_long=4
-ac_cv_alignof_CORBA_octet=1
-ac_cv_alignof_CORBA_pointer=4
-ac_cv_alignof_CORBA_short=2
-ac_cv_alignof_CORBA_struct=4
-ac_cv_alignof_CORBA_wchar=2
-ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo=yes}
-
-# cvs
-cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
-
-# bash
-ac_cv_c_long_double=${ac_cv_c_long_double=yes}
-bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t=yes}
-bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=missing}
-bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no}
-bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no}
-bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=yes}
-bash_cv_sys_siglist=${bash_cv_sys_siglist=yes}
-bash_cv_dup2_broken=${bash_cv_dup2_broken=no}
-bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no}
-bash_cv_type_rlimit=${bash_cv_type_rlimit=rlim_t}
-bash_cv_getenv_redef=${bash_cv_getenv_redef=yes}
-bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=yes}
-bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen=no}
-bash_cv_printf_a_format=${bash_cv_printf_a_format=yes}
-bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no}
-bash_cv_job_control_missing=${bash_cv_job_control_missing=present}
-bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present}
-bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs=no}
-ac_cv_have_decl_sys_siglist=${ac_cv_have_decl_sys_siglist=yes}
-
-# mono
-cv_mono_sizeof_sunpath=108
-
-# mysql
-mysql_cv_func_atomic_sub=${mysql_cv_func_atomic_sub=no}
-mysql_cv_func_atomic_add=${mysql_cv_func_atomic_add=no}
-ac_cv_conv_longlong_to_float=${ac_cv_conv_longlong_to_float=yes}
-
-# gettext
-am_cv_func_working_getline=${am_cv_func_working_getline=yes}
-
-# fnmatch
-ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
-
-# rsync
-rsync_cv_HAVE_BROKEN_LARGEFILE=${rsync_cv_HAVE_BROKEN_LARGEFILE=no}
-rsync_cv_HAVE_SOCKETPAIR=${rsync_cv_HAVE_SOCKETPAIR=yes}
-rsync_cv_HAVE_LONGLONG=${rsync_cv_HAVE_LONGLONG=yes}
-rsync_cv_HAVE_OFF64_T=${rsync_cv_HAVE_OFF64_T=no}
-rsync_cv_HAVE_SHORT_INO_T=${rsync_cv_HAVE_SHORT_INO_T=no}
-rsync_cv_HAVE_UNSIGNED_CHAR=${rsync_cv_HAVE_UNSIGNED_CHAR=no}
-rsync_cv_HAVE_BROKEN_READDIR=${rsync_cv_HAVE_BROKEN_READDIR=no}
-rsync_cv_HAVE_GETTIMEOFDAY_TZ=${rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes}
-rsync_cv_HAVE_C99_VSNPRINTF=${rsync_cv_HAVE_C99_VSNPRINTF=yes}
-rsync_cv_HAVE_SECURE_MKSTEMP=${rsync_cv_HAVE_SECURE_MKSTEMP=yes}
-rsync_cv_REPLACE_INET_NTOA=${rsync_cv_REPLACE_INET_NTOA=no}
-rsync_cv_REPLACE_INET_ATON=${rsync_cv_REPLACE_INET_ATON=no}
-
-# sudo
-sudo_cv_uid_t_len=${sudo_cv_uid_t_len=10}
-
-# ipsec-tools
-ac_cv_va_copy=${ac_cv_va_copy=no}
-ac_cv_va_val_copy=${ac_cv_va_val_copy=yes}
-ac_cv___va_copy=${ac_cv___va_copy=yes}
-racoon_cv_bug_getaddrinfo=${racoon_cv_bug_getaddrinfo=no}
-
-# libxfce4util
-with_broken_putenv=${with_broken_putenv=no}
-
-# xffm
-jm_cv_func_working_readdir=yes
-
# dpkg
-dpkg_cv_va_copy=${ac_cv_va_copy=no}
+dpkg_cv_va_copy=${ac_cv_va_copy=yes}
dpkg_cv___va_copy=${ac_cv___va_copy=yes}
# enca
@@ -310,8 +163,9 @@ clamav_av_have_in_port_t=${clamav_av_have_in_port_t=yes}
clamav_av_have_in_addr_t=${clamav_av_have_in_addr_t=yes}
ac_cv_func_mmap_fixed_mapped=${ac_cv_func_mmap_fixed_mapped=yes}
-#dbus
+# dbus
ac_cv_have_abstract_sockets=${ac_cv_have_abstract_sockets=no}
-#apache
-apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
+# lftp
+ac_cv_file___dev_ptc_=yes
+
diff --git a/site/arm-linux-uclibc b/site/arm-linux-uclibc
index ae50b743e3..81d2c54aae 100644
--- a/site/arm-linux-uclibc
+++ b/site/arm-linux-uclibc
@@ -23,63 +23,8 @@ ac_cv_uint=${ac_cv_uint=yes}
ac_cv_ulong=${ac_cv_ulong=yes}
ac_cv_ushort=${ac_cv_ushort=yes}
-mr_cv_target_elf=${mr_cv_target_elf=yes}
-
ac_cv_time_r_type=${ac_cv_time_r_type=POSIX}
-# apache
-ac_cv_func_pthread_key_delete=${ac_cv_func_pthread_key_delete=yes}
-apr_cv_process_shared_works=${apr_cv_process_shared_works=no}
-ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
-
-ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
-ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
-ac_cv_sctp=${ac_cv_sctp=no}
-
-# ssh
-ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
-ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
-ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
-ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
-ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=yes}
-
-# coreutils
-utils_cv_sys_open_max=${utils_cv_sys_open_max=1019}
-
-# libpcap
-ac_cv_linux_vers=${ac_cv_linux_vers=2}
-
-# nano
-ac_cv_regexec_segfault_emptystr=${ac_cv_regexec_segfault_emptystr=no}
-nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
-
-# libnet
-ac_cv_libnet_endianess=${ac_cv_libnet_endianess=lil}
-ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
-
-# screen
-screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
-screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
-screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
-screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
-screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
-screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
-screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
-screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
-screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
-
-ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_slashed_symlink=yes}
-ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
-ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
-ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
-
-# socat
-ac_cv_ispeed_offset=${ac_cv_ispeed_offset=13}
-sc_cv_termios_ispeed=${sc_cv_termios_ispeed=yes}
-
-# links
-ac_cv_lib_png_png_create_info_struct=${ac_cv_lib_png_png_create_info_struct=yes}
-
# samba
samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=${samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes}
samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=${samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no}
@@ -170,178 +115,3 @@ samba_cv_socklen_t=${samba_cv_socklen_t=yes}
samba_cv_unixsocket=${samba_cv_unixsocket=yes}
samba_cv_volatile=${samba_cv_volatile=yes}
-# sleepycat db
-db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
-db_cv_sprintf_count=${db_cv_sprintf_count=yes}
-db_cv_path_ar=${db_cv_path_ar=/usr/bin/ar}
-db_cv_path_chmod=${db_cv_path_chmod=/bin/chmod}
-db_cv_path_cp=${db_cv_path_cp=/bin/cp}
-db_cv_path_ln=${db_cv_path_ln=/bin/ln}
-db_cv_path_mkdir=${db_cv_path_mkdir=/bin/mkdir}
-db_cv_path_ranlib=${db_cv_path_ranlib=/usr/bin/ranlib}
-db_cv_path_rm=${db_cv_path_rm=/bin/rm}
-db_cv_path_sh=${db_cv_path_sh=/bin/sh}
-db_cv_path_strip=${db_cv_path_strip=/usr/bin/strip}
-db_cv_align_t=${db_cv_align_t='unsigned long long'}
-db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
-db_cv_mutex=${db_cv_mutex=no}
-db_cv_posixmutexes=${db_cv_posixmutexes=no}
-db_cv_uimutexes=${db_cv_uimutexes=no}
-
-# php
-ac_cv_pread=${ac_cv_pread=no}
-ac_cv_pwrite=${ac_cv_pwrite=no}
-php_cv_lib_cookie_io_functions_use_off64_t=${php_cv_lib_cookie_io_functions_use_off64_t=yes}
-
-# glib
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
-glib_cv_stack_grows=${glib_cv_stack_grows=no}
-glib_cv_uscore=${glib_cv_uscore=no}
-glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
-glib_cv_has__inline=${glib_cv_has__inline=yes}
-glib_cv_has__inline__=${glib_cv_has__inline__=yes}
-glib_cv_hasinline=${glib_cv_hasinline=yes}
-glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_uscore=${glib_cv_uscore=no}
-glib_cv_va_copy=${glib_cv_va_copy=no}
-glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
-glib_cv___va_copy=${glib_cv___va_copy=yes}
-glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
-ac_cv_func_getpwuid_r=${ac_cv_func_getpwuid_r=yes}
-glib_cv_sys_pthread_mutex_trylock_posix=${glib_cv_sys_pthread_mutex_trylock_posix=yes}
-glib_cv_sys_pthread_getspecific_posix=${glib_cv_sys_pthread_getspecific_posix=yes}
-glib_cv_sys_pthread_cond_timedwait_posix=${glib_cv_sys_pthread_cond_timedwait_posix=yes}
-
-# ettercap
-ettercap_cv_type_socklen_t=${ettercap_cv_type_socklen_t=yes}
-
-# libesmtp
-acx_working_snprintf=${acx_working_snprintf=yes}
-
-# D-BUS
-ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
-
-# glib 2.0
-glib_cv_long_long_format=${glib_cv_long_long_format=ll}
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_sizeof_intmax_t=${glib_cv_sizeof_intmax_t=8}
-glib_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4}
-glib_cv_sizeof_size_t=${glib_cv_sizeof_size_t=4}
-glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
-glib_cv_sys_use_pid_niceness_surrogate=${glib_cv_sys_use_pid_niceness_surrogate=yes}
-
-glib_cv_strlcpy=${glib_cv_strlcpy=no}
-
-# httppc
-ac_cv_strerror_r_SUSv3=${ac_cv_strerror_r_SUSv3=no}
-
-# lftp
-ac_cv_need_trio=${ac_cv_need_trio=no}
-lftp_cv_va_copy=${lftp_cv_va_copy=no}
-lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
-lftp_cv___va_copy=${lftp_cv___va_copy=yes}
-
-# edb
-db_cv_spinlocks=${db_cv_spinlocks=no}
-
-# fget
-compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
-compat_cv_func_basename_works=${compat_cv_func_basename_works=no}
-compat_cv_func_dirname_works=${compat_cv_func_dirname_works=no}
-
-# slrn
-slrn_cv___va_copy=${slrn_cv___va_copy=yes}
-slrn_cv_va_copy=${slrn_cv_va_copy=no}
-slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
-ac_cv_func_realloc_works=${ac_cv_func_realloc_works=yes}
-ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes}
-ac_cv_func_malloc_works=${ac_cv_func_malloc_works=yes}
-ac_cv_func_malloc_0_nonnull=${ac_cv_func_malloc_0_nonnull=yes}
-
-# startup-notification
-lf_cv_sane_realloc=yes
-
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
-# ORBit2
-ac_cv_alignof_CORBA_boolean=1
-ac_cv_alignof_CORBA_char=1
-ac_cv_alignof_CORBA_double=4
-ac_cv_alignof_CORBA_float=4
-ac_cv_alignof_CORBA_long=4
-ac_cv_alignof_CORBA_long_double=4
-ac_cv_alignof_CORBA_long_long=4
-ac_cv_alignof_CORBA_octet=1
-ac_cv_alignof_CORBA_pointer=4
-ac_cv_alignof_CORBA_short=2
-ac_cv_alignof_CORBA_struct=4
-ac_cv_alignof_CORBA_wchar=2
-ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo=yes}
-
-# cvs
-cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
-
-# bash
-ac_cv_c_long_double=${ac_cv_c_long_double=yes}
-bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t=yes}
-bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=missing}
-bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no}
-bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no}
-bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=yes}
-bash_cv_sys_siglist=${bash_cv_sys_siglist=yes}
-bash_cv_dup2_broken=${bash_cv_dup2_broken=no}
-bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no}
-bash_cv_type_rlimit=${bash_cv_type_rlimit=rlim_t}
-bash_cv_getenv_redef=${bash_cv_getenv_redef=yes}
-bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=yes}
-bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen=no}
-bash_cv_printf_a_format=${bash_cv_printf_a_format=yes}
-bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no}
-bash_cv_job_control_missing=${bash_cv_job_control_missing=present}
-bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present}
-bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs=no}
-ac_cv_have_decl_sys_siglist=${ac_cv_have_decl_sys_siglist=yes}
-
-# mysql
-mysql_cv_func_atomic_sub=${mysql_cv_func_atomic_sub=no}
-mysql_cv_func_atomic_add=${mysql_cv_func_atomic_add=no}
-ac_cv_conv_longlong_to_float=${ac_cv_conv_longlong_to_float=yes}
-
-# gettext
-am_cv_func_working_getline=${am_cv_func_working_getline=yes}
-
-# fnmatch
-ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
-
-# rsync
-rsync_cv_HAVE_BROKEN_LARGEFILE=${rsync_cv_HAVE_BROKEN_LARGEFILE=no}
-rsync_cv_HAVE_SOCKETPAIR=${rsync_cv_HAVE_SOCKETPAIR=yes}
-rsync_cv_HAVE_LONGLONG=${rsync_cv_HAVE_LONGLONG=yes}
-rsync_cv_HAVE_OFF64_T=${rsync_cv_HAVE_OFF64_T=no}
-rsync_cv_HAVE_SHORT_INO_T=${rsync_cv_HAVE_SHORT_INO_T=no}
-rsync_cv_HAVE_UNSIGNED_CHAR=${rsync_cv_HAVE_UNSIGNED_CHAR=no}
-rsync_cv_HAVE_BROKEN_READDIR=${rsync_cv_HAVE_BROKEN_READDIR=no}
-rsync_cv_HAVE_GETTIMEOFDAY_TZ=${rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes}
-rsync_cv_HAVE_C99_VSNPRINTF=${rsync_cv_HAVE_C99_VSNPRINTF=yes}
-rsync_cv_HAVE_SECURE_MKSTEMP=${rsync_cv_HAVE_SECURE_MKSTEMP=yes}
-rsync_cv_REPLACE_INET_NTOA=${rsync_cv_REPLACE_INET_NTOA=no}
-rsync_cv_REPLACE_INET_ATON=${rsync_cv_REPLACE_INET_ATON=no}
-
-# sudo
-sudo_cv_uid_t_len=${sudo_cv_uid_t_len=10}
-
-# ipsec-tools
-ac_cv_va_copy=${ac_cv_va_copy=no}
-ac_cv_va_val_copy=${ac_cv_va_val_copy=yes}
-ac_cv___va_copy=${ac_cv___va_copy=yes}
-racoon_cv_bug_getaddrinfo=${racoon_cv_bug_getaddrinfo=no}
-
-# libxfce4util
-with_broken_putenv=${with_broken_putenv=no}
-
-# xffm
-jm_cv_func_working_readdir=yes
-
diff --git a/site/armeb-linux b/site/armeb-linux
index 6631ee0cfb..1b170ab191 100644
--- a/site/armeb-linux
+++ b/site/armeb-linux
@@ -26,63 +26,8 @@ ac_cv_uint=${ac_cv_uint=yes}
ac_cv_ulong=${ac_cv_ulong=yes}
ac_cv_ushort=${ac_cv_ushort=yes}
-mr_cv_target_elf=${mr_cv_target_elf=yes}
-
ac_cv_time_r_type=${ac_cv_time_r_type=POSIX}
-# apache
-ac_cv_func_pthread_key_delete=${ac_cv_func_pthread_key_delete=yes}
-apr_cv_process_shared_works=${apr_cv_process_shared_works=no}
-ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
-
-ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
-ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
-ac_cv_sctp=${ac_cv_sctp=no}
-
-# ssh
-ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
-ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
-ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
-ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
-ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=yes}
-
-# coreutils
-utils_cv_sys_open_max=${utils_cv_sys_open_max=1019}
-
-# libpcap
-ac_cv_linux_vers=${ac_cv_linux_vers=2}
-
-# nano
-ac_cv_regexec_segfault_emptystr=${ac_cv_regexec_segfault_emptystr=no}
-nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
-
-# libnet
-ac_cv_libnet_endianess=${ac_cv_libnet_endianess=big}
-ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
-
-# screen
-screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
-screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
-screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
-screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
-screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
-screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
-screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
-screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
-screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
-
-ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_slashed_symlink=yes}
-ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
-ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
-ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
-
-# socat
-ac_cv_ispeed_offset=${ac_cv_ispeed_offset=13}
-sc_cv_termios_ispeed=${sc_cv_termios_ispeed=yes}
-
-# links
-ac_cv_lib_png_png_create_info_struct=${ac_cv_lib_png_png_create_info_struct=yes}
-
# samba
samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
samba_cv_HAVE_IFACE_IFCONF=${samba_cv_HAVE_IFACE_IFCONF=yes}
@@ -106,179 +51,3 @@ samba_cv_SIZEOF_OFF_T=${samba_cv_SIZEOF_OFF_T=yes}
samba_cv_SIZEOF_INO_T=${samba_cv_SIZEOF_INO_T=yes}
samba_cv_HAVE_STRUCT_FLOCK64=${samba_cv_HAVE_STRUCT_FLOCK64=yes}
-
-# sleepycat db
-db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
-db_cv_sprintf_count=${db_cv_sprintf_count=yes}
-db_cv_path_ar=${db_cv_path_ar=/usr/bin/ar}
-db_cv_path_chmod=${db_cv_path_chmod=/bin/chmod}
-db_cv_path_cp=${db_cv_path_cp=/bin/cp}
-db_cv_path_ln=${db_cv_path_ln=/bin/ln}
-db_cv_path_mkdir=${db_cv_path_mkdir=/bin/mkdir}
-db_cv_path_ranlib=${db_cv_path_ranlib=/usr/bin/ranlib}
-db_cv_path_rm=${db_cv_path_rm=/bin/rm}
-db_cv_path_sh=${db_cv_path_sh=/bin/sh}
-db_cv_path_strip=${db_cv_path_strip=/usr/bin/strip}
-db_cv_align_t=${db_cv_align_t='unsigned long long'}
-db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
-db_cv_mutex=${db_cv_mutex=no}
-db_cv_posixmutexes=${db_cv_posixmutexes=no}
-db_cv_uimutexes=${db_cv_uimutexes=no}
-
-# php
-ac_cv_pread=${ac_cv_pread=no}
-ac_cv_pwrite=${ac_cv_pwrite=no}
-php_cv_lib_cookie_io_functions_use_off64_t=${php_cv_lib_cookie_io_functions_use_off64_t=yes}
-
-# glib
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
-glib_cv_stack_grows=${glib_cv_stack_grows=no}
-glib_cv_uscore=${glib_cv_uscore=no}
-glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
-glib_cv_has__inline=${glib_cv_has__inline=yes}
-glib_cv_has__inline__=${glib_cv_has__inline__=yes}
-glib_cv_hasinline=${glib_cv_hasinline=yes}
-glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_uscore=${glib_cv_uscore=no}
-glib_cv_va_copy=${glib_cv_va_copy=no}
-glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
-glib_cv___va_copy=${glib_cv___va_copy=yes}
-glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
-ac_cv_func_getpwuid_r=${ac_cv_func_getpwuid_r=yes}
-glib_cv_sys_pthread_mutex_trylock_posix=${glib_cv_sys_pthread_mutex_trylock_posix=yes}
-glib_cv_sys_pthread_getspecific_posix=${glib_cv_sys_pthread_getspecific_posix=yes}
-glib_cv_sys_pthread_cond_timedwait_posix=${glib_cv_sys_pthread_cond_timedwait_posix=yes}
-
-# ettercap
-ettercap_cv_type_socklen_t=${ettercap_cv_type_socklen_t=yes}
-
-# libesmtp
-acx_working_snprintf=${acx_working_snprintf=yes}
-
-# D-BUS
-ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
-
-# glib 2.0
-glib_cv_long_long_format=${glib_cv_long_long_format=ll}
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_sizeof_intmax_t=${glib_cv_sizeof_intmax_t=8}
-glib_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4}
-glib_cv_sizeof_size_t=${glib_cv_sizeof_size_t=4}
-glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
-glib_cv_sys_use_pid_niceness_surrogate=${glib_cv_sys_use_pid_niceness_surrogate=yes}
-
-glib_cv_strlcpy=${glib_cv_strlcpy=no}
-
-# httppc
-ac_cv_strerror_r_SUSv3=${ac_cv_strerror_r_SUSv3=no}
-
-# lftp
-ac_cv_need_trio=${ac_cv_need_trio=no}
-lftp_cv_va_copy=${lftp_cv_va_copy=no}
-lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
-lftp_cv___va_copy=${lftp_cv___va_copy=yes}
-
-# edb
-db_cv_spinlocks=${db_cv_spinlocks=no}
-
-# fget
-compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
-compat_cv_func_basename_works=${compat_cv_func_basename_works=no}
-compat_cv_func_dirname_works=${compat_cv_func_dirname_works=no}
-
-# slrn
-slrn_cv___va_copy=${slrn_cv___va_copy=yes}
-slrn_cv_va_copy=${slrn_cv_va_copy=no}
-slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
-ac_cv_func_realloc_works=${ac_cv_func_realloc_works=yes}
-ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes}
-ac_cv_func_malloc_works=${ac_cv_func_malloc_works=yes}
-ac_cv_func_malloc_0_nonnull=${ac_cv_func_malloc_0_nonnull=yes}
-
-# startup-notification
-lf_cv_sane_realloc=yes
-
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
-# ORBit2
-ac_cv_alignof_CORBA_boolean=1
-ac_cv_alignof_CORBA_char=1
-ac_cv_alignof_CORBA_double=4
-ac_cv_alignof_CORBA_float=4
-ac_cv_alignof_CORBA_long=4
-ac_cv_alignof_CORBA_long_double=4
-ac_cv_alignof_CORBA_long_long=4
-ac_cv_alignof_CORBA_octet=1
-ac_cv_alignof_CORBA_pointer=4
-ac_cv_alignof_CORBA_short=2
-ac_cv_alignof_CORBA_struct=4
-ac_cv_alignof_CORBA_wchar=2
-ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo=yes}
-
-# cvs
-cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
-
-# bash
-ac_cv_c_long_double=${ac_cv_c_long_double=yes}
-bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t=yes}
-bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=missing}
-bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no}
-bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no}
-bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=yes}
-bash_cv_sys_siglist=${bash_cv_sys_siglist=yes}
-bash_cv_dup2_broken=${bash_cv_dup2_broken=no}
-bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no}
-bash_cv_type_rlimit=${bash_cv_type_rlimit=rlim_t}
-bash_cv_getenv_redef=${bash_cv_getenv_redef=yes}
-bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=yes}
-bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen=no}
-bash_cv_printf_a_format=${bash_cv_printf_a_format=yes}
-bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no}
-bash_cv_job_control_missing=${bash_cv_job_control_missing=present}
-bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present}
-bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs=no}
-ac_cv_have_decl_sys_siglist=${ac_cv_have_decl_sys_siglist=yes}
-
-# mysql
-mysql_cv_func_atomic_sub=${mysql_cv_func_atomic_sub=no}
-mysql_cv_func_atomic_add=${mysql_cv_func_atomic_add=no}
-ac_cv_conv_longlong_to_float=${ac_cv_conv_longlong_to_float=yes}
-
-# gettext
-am_cv_func_working_getline=${am_cv_func_working_getline=yes}
-
-# fnmatch
-ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
-
-# rsync
-rsync_cv_HAVE_BROKEN_LARGEFILE=${rsync_cv_HAVE_BROKEN_LARGEFILE=no}
-rsync_cv_HAVE_SOCKETPAIR=${rsync_cv_HAVE_SOCKETPAIR=yes}
-rsync_cv_HAVE_LONGLONG=${rsync_cv_HAVE_LONGLONG=yes}
-rsync_cv_HAVE_OFF64_T=${rsync_cv_HAVE_OFF64_T=no}
-rsync_cv_HAVE_SHORT_INO_T=${rsync_cv_HAVE_SHORT_INO_T=no}
-rsync_cv_HAVE_UNSIGNED_CHAR=${rsync_cv_HAVE_UNSIGNED_CHAR=no}
-rsync_cv_HAVE_BROKEN_READDIR=${rsync_cv_HAVE_BROKEN_READDIR=no}
-rsync_cv_HAVE_GETTIMEOFDAY_TZ=${rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes}
-rsync_cv_HAVE_C99_VSNPRINTF=${rsync_cv_HAVE_C99_VSNPRINTF=yes}
-rsync_cv_HAVE_SECURE_MKSTEMP=${rsync_cv_HAVE_SECURE_MKSTEMP=yes}
-rsync_cv_REPLACE_INET_NTOA=${rsync_cv_REPLACE_INET_NTOA=no}
-rsync_cv_REPLACE_INET_ATON=${rsync_cv_REPLACE_INET_ATON=no}
-
-# sudo
-sudo_cv_uid_t_len=${sudo_cv_uid_t_len=10}
-
-# ipsec-tools
-ac_cv_va_copy=${ac_cv_va_copy=no}
-ac_cv_va_val_copy=${ac_cv_va_val_copy=yes}
-ac_cv___va_copy=${ac_cv___va_copy=yes}
-racoon_cv_bug_getaddrinfo=${racoon_cv_bug_getaddrinfo=no}
-
-# libxfce4util
-with_broken_putenv=${with_broken_putenv=no}
-
-# xffm
-jm_cv_func_working_readdir=yes
-
diff --git a/site/armeb-linux-uclibc b/site/armeb-linux-uclibc
index f4e5e4faab..1ab44977dd 100644
--- a/site/armeb-linux-uclibc
+++ b/site/armeb-linux-uclibc
@@ -26,63 +26,8 @@ ac_cv_uint=${ac_cv_uint=yes}
ac_cv_ulong=${ac_cv_ulong=yes}
ac_cv_ushort=${ac_cv_ushort=yes}
-mr_cv_target_elf=${mr_cv_target_elf=yes}
-
ac_cv_time_r_type=${ac_cv_time_r_type=POSIX}
-# apache
-ac_cv_func_pthread_key_delete=${ac_cv_func_pthread_key_delete=yes}
-apr_cv_process_shared_works=${apr_cv_process_shared_works=no}
-ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
-
-ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
-ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
-ac_cv_sctp=${ac_cv_sctp=no}
-
-# ssh
-ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
-ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
-ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
-ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
-ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=yes}
-
-# coreutils
-utils_cv_sys_open_max=${utils_cv_sys_open_max=1019}
-
-# libpcap
-ac_cv_linux_vers=${ac_cv_linux_vers=2}
-
-# nano
-ac_cv_regexec_segfault_emptystr=${ac_cv_regexec_segfault_emptystr=no}
-nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
-
-# libnet
-ac_cv_libnet_endianess=${ac_cv_libnet_endianess=big}
-ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
-
-# screen
-screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
-screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
-screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
-screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
-screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
-screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
-screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
-screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
-screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
-
-ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_slashed_symlink=yes}
-ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
-ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
-ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
-
-# socat
-ac_cv_ispeed_offset=${ac_cv_ispeed_offset=13}
-sc_cv_termios_ispeed=${sc_cv_termios_ispeed=yes}
-
-# links
-ac_cv_lib_png_png_create_info_struct=${ac_cv_lib_png_png_create_info_struct=yes}
-
# samba
samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
samba_cv_HAVE_IFACE_IFCONF=${samba_cv_HAVE_IFACE_IFCONF=yes}
@@ -100,179 +45,3 @@ samba_cv_HAVE_MMAP=${samba_cv_HAVE_MMAP=yes}
samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=${samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes}
samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=${samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes}
samba_cv_HAVE_KERNEL_SHARE_MODES=${samba_cv_HAVE_KERNEL_SHARE_MODES=yes}
-
-# sleepycat db
-db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
-db_cv_sprintf_count=${db_cv_sprintf_count=yes}
-db_cv_path_ar=${db_cv_path_ar=/usr/bin/ar}
-db_cv_path_chmod=${db_cv_path_chmod=/bin/chmod}
-db_cv_path_cp=${db_cv_path_cp=/bin/cp}
-db_cv_path_ln=${db_cv_path_ln=/bin/ln}
-db_cv_path_mkdir=${db_cv_path_mkdir=/bin/mkdir}
-db_cv_path_ranlib=${db_cv_path_ranlib=/usr/bin/ranlib}
-db_cv_path_rm=${db_cv_path_rm=/bin/rm}
-db_cv_path_sh=${db_cv_path_sh=/bin/sh}
-db_cv_path_strip=${db_cv_path_strip=/usr/bin/strip}
-db_cv_align_t=${db_cv_align_t='unsigned long long'}
-db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
-db_cv_mutex=${db_cv_mutex=no}
-db_cv_posixmutexes=${db_cv_posixmutexes=no}
-db_cv_uimutexes=${db_cv_uimutexes=no}
-
-# php
-ac_cv_pread=${ac_cv_pread=no}
-ac_cv_pwrite=${ac_cv_pwrite=no}
-php_cv_lib_cookie_io_functions_use_off64_t=${php_cv_lib_cookie_io_functions_use_off64_t=yes}
-
-# glib
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
-glib_cv_stack_grows=${glib_cv_stack_grows=no}
-glib_cv_uscore=${glib_cv_uscore=no}
-glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
-glib_cv_has__inline=${glib_cv_has__inline=yes}
-glib_cv_has__inline__=${glib_cv_has__inline__=yes}
-glib_cv_hasinline=${glib_cv_hasinline=yes}
-glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_uscore=${glib_cv_uscore=no}
-glib_cv_va_copy=${glib_cv_va_copy=no}
-glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
-glib_cv___va_copy=${glib_cv___va_copy=yes}
-glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
-ac_cv_func_getpwuid_r=${ac_cv_func_getpwuid_r=yes}
-glib_cv_sys_pthread_mutex_trylock_posix=${glib_cv_sys_pthread_mutex_trylock_posix=yes}
-glib_cv_sys_pthread_getspecific_posix=${glib_cv_sys_pthread_getspecific_posix=yes}
-glib_cv_sys_pthread_cond_timedwait_posix=${glib_cv_sys_pthread_cond_timedwait_posix=yes}
-
-# ettercap
-ettercap_cv_type_socklen_t=${ettercap_cv_type_socklen_t=yes}
-
-# libesmtp
-acx_working_snprintf=${acx_working_snprintf=yes}
-
-# D-BUS
-ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
-
-# glib 2.0
-glib_cv_long_long_format=${glib_cv_long_long_format=ll}
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_sizeof_intmax_t=${glib_cv_sizeof_intmax_t=8}
-glib_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4}
-glib_cv_sizeof_size_t=${glib_cv_sizeof_size_t=4}
-glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
-glib_cv_sys_use_pid_niceness_surrogate=${glib_cv_sys_use_pid_niceness_surrogate=yes}
-
-glib_cv_strlcpy=${glib_cv_strlcpy=no}
-
-# httppc
-ac_cv_strerror_r_SUSv3=${ac_cv_strerror_r_SUSv3=no}
-
-# lftp
-ac_cv_need_trio=${ac_cv_need_trio=no}
-lftp_cv_va_copy=${lftp_cv_va_copy=no}
-lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
-lftp_cv___va_copy=${lftp_cv___va_copy=yes}
-
-# edb
-db_cv_spinlocks=${db_cv_spinlocks=no}
-
-# fget
-compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
-compat_cv_func_basename_works=${compat_cv_func_basename_works=no}
-compat_cv_func_dirname_works=${compat_cv_func_dirname_works=no}
-
-# slrn
-slrn_cv___va_copy=${slrn_cv___va_copy=yes}
-slrn_cv_va_copy=${slrn_cv_va_copy=no}
-slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
-ac_cv_func_realloc_works=${ac_cv_func_realloc_works=yes}
-ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes}
-ac_cv_func_malloc_works=${ac_cv_func_malloc_works=yes}
-ac_cv_func_malloc_0_nonnull=${ac_cv_func_malloc_0_nonnull=yes}
-
-# startup-notification
-lf_cv_sane_realloc=yes
-
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
-# ORBit2
-ac_cv_alignof_CORBA_boolean=1
-ac_cv_alignof_CORBA_char=1
-ac_cv_alignof_CORBA_double=4
-ac_cv_alignof_CORBA_float=4
-ac_cv_alignof_CORBA_long=4
-ac_cv_alignof_CORBA_long_double=4
-ac_cv_alignof_CORBA_long_long=4
-ac_cv_alignof_CORBA_octet=1
-ac_cv_alignof_CORBA_pointer=4
-ac_cv_alignof_CORBA_short=2
-ac_cv_alignof_CORBA_struct=4
-ac_cv_alignof_CORBA_wchar=2
-ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo=yes}
-
-# cvs
-cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
-
-# bash
-ac_cv_c_long_double=${ac_cv_c_long_double=yes}
-bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t=yes}
-bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=missing}
-bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no}
-bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no}
-bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=yes}
-bash_cv_sys_siglist=${bash_cv_sys_siglist=yes}
-bash_cv_dup2_broken=${bash_cv_dup2_broken=no}
-bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no}
-bash_cv_type_rlimit=${bash_cv_type_rlimit=rlim_t}
-bash_cv_getenv_redef=${bash_cv_getenv_redef=yes}
-bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=yes}
-bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen=no}
-bash_cv_printf_a_format=${bash_cv_printf_a_format=yes}
-bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no}
-bash_cv_job_control_missing=${bash_cv_job_control_missing=present}
-bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present}
-bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs=no}
-ac_cv_have_decl_sys_siglist=${ac_cv_have_decl_sys_siglist=yes}
-
-# mysql
-mysql_cv_func_atomic_sub=${mysql_cv_func_atomic_sub=no}
-mysql_cv_func_atomic_add=${mysql_cv_func_atomic_add=no}
-ac_cv_conv_longlong_to_float=${ac_cv_conv_longlong_to_float=yes}
-
-# gettext
-am_cv_func_working_getline=${am_cv_func_working_getline=yes}
-
-# fnmatch
-ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
-
-# rsync
-rsync_cv_HAVE_BROKEN_LARGEFILE=${rsync_cv_HAVE_BROKEN_LARGEFILE=no}
-rsync_cv_HAVE_SOCKETPAIR=${rsync_cv_HAVE_SOCKETPAIR=yes}
-rsync_cv_HAVE_LONGLONG=${rsync_cv_HAVE_LONGLONG=yes}
-rsync_cv_HAVE_OFF64_T=${rsync_cv_HAVE_OFF64_T=no}
-rsync_cv_HAVE_SHORT_INO_T=${rsync_cv_HAVE_SHORT_INO_T=no}
-rsync_cv_HAVE_UNSIGNED_CHAR=${rsync_cv_HAVE_UNSIGNED_CHAR=no}
-rsync_cv_HAVE_BROKEN_READDIR=${rsync_cv_HAVE_BROKEN_READDIR=no}
-rsync_cv_HAVE_GETTIMEOFDAY_TZ=${rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes}
-rsync_cv_HAVE_C99_VSNPRINTF=${rsync_cv_HAVE_C99_VSNPRINTF=yes}
-rsync_cv_HAVE_SECURE_MKSTEMP=${rsync_cv_HAVE_SECURE_MKSTEMP=yes}
-rsync_cv_REPLACE_INET_NTOA=${rsync_cv_REPLACE_INET_NTOA=no}
-rsync_cv_REPLACE_INET_ATON=${rsync_cv_REPLACE_INET_ATON=no}
-
-# sudo
-sudo_cv_uid_t_len=${sudo_cv_uid_t_len=10}
-
-# ipsec-tools
-ac_cv_va_copy=${ac_cv_va_copy=no}
-ac_cv_va_val_copy=${ac_cv_va_val_copy=yes}
-ac_cv___va_copy=${ac_cv___va_copy=yes}
-racoon_cv_bug_getaddrinfo=${racoon_cv_bug_getaddrinfo=no}
-
-# libxfce4util
-with_broken_putenv=${with_broken_putenv=no}
-
-# xffm
-jm_cv_func_working_readdir=yes
-
diff --git a/site/common b/site/common
new file mode 100644
index 0000000000..f73a36abed
--- /dev/null
+++ b/site/common
@@ -0,0 +1,2 @@
+# libelf
+mr_cv_target_elf=${mr_cv_target_elf=yes}
diff --git a/site/common-glibc b/site/common-glibc
new file mode 100644
index 0000000000..9358856856
--- /dev/null
+++ b/site/common-glibc
@@ -0,0 +1,6 @@
+# clamav
+clamav_av_func_working_snprintf_long=${clamav_av_func_working_snprintf_long=yes}
+clamav_av_have_in_port_t=${clamav_av_have_in_port_t=yes}
+clamav_av_have_in_addr_t=${clamav_av_have_in_addr_t=yes}
+ac_cv_func_mmap_fixed_mapped=${ac_cv_func_mmap_fixed_mapped=yes}
+
diff --git a/site/common-uclibc b/site/common-uclibc
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/site/common-uclibc
diff --git a/site/endian-big b/site/endian-big
index baa7161476..29edc8d94d 100644
--- a/site/endian-big
+++ b/site/endian-big
@@ -1,2 +1,5 @@
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
+
+# libnet
+ac_cv_libnet_endianess=${ac_cv_libnet_endianess=big}
diff --git a/site/endian-little b/site/endian-little
index c66db59f31..9fcf31b8b1 100644
--- a/site/endian-little
+++ b/site/endian-little
@@ -1,2 +1,6 @@
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
+
+# libnet
+ac_cv_libnet_endianess=${ac_cv_libnet_endianess=lil}
+
diff --git a/site/ix86-common b/site/ix86-common
index 6db5a6c5b0..96a36cf9c8 100644
--- a/site/ix86-common
+++ b/site/ix86-common
@@ -14,7 +14,9 @@ ac_cv_sizeof_unsigned_short=${ac_cv_sizeof_unsigned_short=2}
ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=4}
ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4}
+ac_cv_sizeof_long_p=${ac_cv_sizeof_long_p=4}
ac_cv_sizeof_float=${ac_cv_sizeof_float=4}
+ac_cv_sizeof_off_t=${ac_cv_sizeof_off_t=4}
ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void=yes}
ac_cv_func_getpwuid_r=${ac_cv_func_getpwuid_r=yes}
@@ -105,6 +107,9 @@ ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
dpkg_cv_va_copy=${ac_cv_va_copy=no}
dpkg_cv___va_copy=${ac_cv___va_copy=yes}
+# enca
+yeti_cv_func_scanf_modif_size_t=yes
+
# ettercap
ettercap_cv_type_socklen_t=${ettercap_cv_type_socklen_t=yes}
diff --git a/site/powerpc-common b/site/powerpc-common
new file mode 100644
index 0000000000..9b2d990380
--- /dev/null
+++ b/site/powerpc-common
@@ -0,0 +1,326 @@
+ac_cv_func_getpgrp_void=yes
+ac_cv_func_setpgrp_void=yes
+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_setvbuf_reversed=no
+ac_cv_sizeof___int64=${ac_cv_sizeof___int64=0}
+ac_cv_sizeof_bool=${ac_cv_sizeof_bool=1}
+ac_cv_sizeof_char=${ac_cv_sizeof_char=1}
+ac_cv_sizeof_double=${ac_cv_sizeof_double=8}
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+ac_cv_sizeof_int_p=${ac_cv_sizeof_int_p=4}
+ac_cv_sizeof_float=${ac_cv_sizeof_float=4}
+ac_cv_sizeof_long=${ac_cv_sizeof_long=4}
+ac_cv_sizeof_long_int=${ac_cv_sizeof_long_int=4}
+ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
+ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
+ac_cv_sizeof_unsigned_char=${ac_cv_sizeof_unsigned_char=1}
+ac_cv_sizeof_short_int=${ac_cv_sizeof_short_int=2}
+ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=4}
+ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4}
+ac_cv_sizeof_long_p=${ac_cv_sizeof_long_p=4}
+ac_cv_sizeof_wchar_t=${ac_cv_sizeof_wchar_t=4}
+ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8}
+ac_cv_sys_restartable_syscalls=yes
+ac_cv_type___int64=${ac_cv_type___int64=no}
+ac_cv_type_size_t=${ac_cv_type_size_t=yes}
+ac_cv_type_void_p=${ac_cv_type_void_p=yes}
+ac_cv_uchar=${ac_cv_uchar=no}
+ac_cv_uint=${ac_cv_uint=yes}
+ac_cv_ulong=${ac_cv_ulong=yes}
+ac_cv_ushort=${ac_cv_ushort=yes}
+ac_cv_time_r_type=${ac_cv_time_r_type=POSIX}
+cookie_io_functions_use_off64_t=${cookie_io_functions_use_off64_t=yes}
+
+
+# apache
+ac_cv_func_pthread_key_delete=${ac_cv_func_pthread_key_delete=yes}
+apr_cv_process_shared_works=${apr_cv_process_shared_works=no}
+ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
+
+ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
+ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
+ac_cv_sctp=${ac_cv_sctp=no}
+
+# ssh
+ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
+ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
+ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
+ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
+ac_cv_type_struct_timespec=${ac_cv_type_struct_timespec=yes}
+ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=yes}
+
+# coreutils
+utils_cv_sys_open_max=${utils_cv_sys_open_max=1019}
+
+# libpcap
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+# nano
+ac_cv_regexec_segfault_emptystr=${ac_cv_regexec_segfault_emptystr=no}
+nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
+
+
+# libnet
+ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
+
+# screen
+screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
+screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
+screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
+screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
+screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
+screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
+screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
+screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
+screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
+
+ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_slashed_symlink=yes}
+ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
+ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
+ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
+
+# socat
+ac_cv_ispeed_offset=${ac_cv_ispeed_offset=13}
+sc_cv_termios_ispeed=${sc_cv_termios_ispeed=yes}
+
+# links
+ac_cv_lib_png_png_create_info_struct=${ac_cv_lib_png_png_create_info_struct=yes}
+
+# sleepycat db
+db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
+db_cv_sprintf_count=${db_cv_sprintf_count=yes}
+db_cv_path_ar=${db_cv_path_ar=/usr/bin/ar}
+db_cv_path_chmod=${db_cv_path_chmod=/bin/chmod}
+db_cv_path_cp=${db_cv_path_cp=/bin/cp}
+db_cv_path_ln=${db_cv_path_ln=/bin/ln}
+db_cv_path_mkdir=${db_cv_path_mkdir=/bin/mkdir}
+db_cv_path_ranlib=${db_cv_path_ranlib=/usr/bin/ranlib}
+db_cv_path_rm=${db_cv_path_rm=/bin/rm}
+db_cv_path_sh=${db_cv_path_sh=/bin/sh}
+db_cv_path_strip=${db_cv_path_strip=/usr/bin/strip}
+db_cv_align_t=${db_cv_align_t='unsigned long long'}
+db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
+db_cv_mutex=${db_cv_mutex=no}
+db_cv_posixmutexes=${db_cv_posixmutexes=no}
+db_cv_uimutexes=${db_cv_uimutexes=no}
+
+# php
+ac_cv_pread=${ac_cv_pread=no}
+ac_cv_pwrite=${ac_cv_pwrite=no}
+php_cv_lib_cookie_io_functions_use_off64_t=${php_cv_lib_cookie_io_functions_use_off64_t=yes}
+
+# glib
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_uscore=${glib_cv_uscore=no}
+glib_cv_va_copy=${glib_cv_va_copy=no}
+glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
+glib_cv___va_copy=${glib_cv___va_copy=yes}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
+ac_cv_func_getpwuid_r=${ac_cv_func_getpwuid_r=yes}
+glib_cv_sys_pthread_mutex_trylock_posix=${glib_cv_sys_pthread_mutex_trylock_posix=yes}
+glib_cv_sys_pthread_getspecific_posix=${glib_cv_sys_pthread_getspecific_posix=yes}
+glib_cv_sys_pthread_cond_timedwait_posix=${glib_cv_sys_pthread_cond_timedwait_posix=yes}
+
+# ettercap
+ettercap_cv_type_socklen_t=${ettercap_cv_type_socklen_t=yes}
+
+# libesmtp
+acx_working_snprintf=${acx_working_snprintf=yes}
+
+# D-BUS
+ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+
+# glib 2.0
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_intmax_t=${glib_cv_sizeof_intmax_t=8}
+glib_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4}
+glib_cv_sizeof_size_t=${glib_cv_sizeof_size_t=4}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_sys_use_pid_niceness_surrogate=${glib_cv_sys_use_pid_niceness_surrogate=yes}
+
+glib_cv_strlcpy=${glib_cv_strlcpy=no}
+
+# httppc
+ac_cv_strerror_r_SUSv3=${ac_cv_strerror_r_SUSv3=no}
+
+# lftp
+ac_cv_need_trio=${ac_cv_need_trio=no}
+lftp_cv_va_copy=${lftp_cv_va_copy=no}
+lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
+lftp_cv___va_copy=${lftp_cv___va_copy=yes}
+
+# edb
+db_cv_spinlocks=${db_cv_spinlocks=no}
+
+# fget
+compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
+compat_cv_func_basename_works=${compat_cv_func_basename_works=no}
+compat_cv_func_dirname_works=${compat_cv_func_dirname_works=no}
+
+# slrn
+slrn_cv___va_copy=${slrn_cv___va_copy=yes}
+slrn_cv_va_copy=${slrn_cv_va_copy=no}
+slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
+ac_cv_func_realloc_works=${ac_cv_func_realloc_works=yes}
+ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes}
+ac_cv_func_malloc_works=${ac_cv_func_malloc_works=yes}
+ac_cv_func_malloc_0_nonnull=${ac_cv_func_malloc_0_nonnull=yes}
+
+# startup-notification
+lf_cv_sane_realloc=yes
+
+# libidl
+libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
+
+# ORBit2
+ac_cv_alignof_CORBA_boolean=1
+ac_cv_alignof_CORBA_char=1
+ac_cv_alignof_CORBA_double=4
+ac_cv_alignof_CORBA_float=4
+ac_cv_alignof_CORBA_long=4
+ac_cv_alignof_CORBA_long_double=4
+ac_cv_alignof_CORBA_long_long=4
+ac_cv_alignof_CORBA_octet=1
+ac_cv_alignof_CORBA_pointer=4
+ac_cv_alignof_CORBA_short=2
+ac_cv_alignof_CORBA_struct=4
+ac_cv_alignof_CORBA_wchar=2
+ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo=yes}
+
+# cvs
+cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
+
+# bash
+ac_cv_c_long_double=${ac_cv_c_long_double=yes}
+bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t=yes}
+bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=missing}
+bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no}
+bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no}
+bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=yes}
+bash_cv_sys_siglist=${bash_cv_sys_siglist=yes}
+bash_cv_dup2_broken=${bash_cv_dup2_broken=no}
+bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no}
+bash_cv_type_rlimit=${bash_cv_type_rlimit=rlim_t}
+bash_cv_getenv_redef=${bash_cv_getenv_redef=yes}
+bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=yes}
+bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen=no}
+bash_cv_printf_a_format=${bash_cv_printf_a_format=yes}
+bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no}
+bash_cv_job_control_missing=${bash_cv_job_control_missing=present}
+bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present}
+bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs=no}
+ac_cv_have_decl_sys_siglist=${ac_cv_have_decl_sys_siglist=yes}
+
+# openssh
+ac_cv_have_broken_dirname=${ac_cv_have_broken_dirname='yes'}
+ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_have_space_d_name_in_struct_dirent='no'}
+ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf='no'}
+ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug='yes'}
+ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr='no'}
+ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr='yes'}
+
+# vim
+ac_cv_sizeof_int=${ac_cv_sizeof_int='4'}
+
+#modphp
+ac_cv_c_bigendian_php=${ac_cv_c_bigendian_php=yes}
+ac_cv_sizeof_ptrdiff_t=${ac_cv_sizeof_ptrdiff_t=0}
+ac_cv_func_dlopen=${ac_cv_func_dlopen=yes}
+lt_cv_dlopen_self=${lt_cv_dlopen_self=yes}
+
+# apache2 (note other apache stanza in this file)
+ap_void_ptr_lt_long=${ap_void_ptr_lt_long=no}
+apr_cv_use_lfs64=${apr_cv_use_lfs64=yes}
+apr_cv_epoll=${apr_cv_epoll=yes}
+apr_cv_pthreads_cflags=${apr_cv_pthreads_cflags=-pthread}
+apr_cv_pthreads_lib=${apr_cv_pthreads_lib=-lpthread}
+apr_cv_mutex_recursive=${apr_cv_mutex_recursive=yes}
+ac_cv_func_mmap=${ac_cv_func_mmap=yes}
+ac_cv_file__dev_zero=${ac_cv_file__dev_zero=yes}
+ac_cv_sizeof_off_t=${ac_cv_sizeof_off_t=4}
+ac_cv_sizeof_pid_t=${ac_cv_sizeof_pid_t=4}
+ac_cv_socklen_t=${ac_cv_socklen_t=yes}
+ac_cv_struct_rlimit=${ac_cv_struct_rlimit=yes}
+ac_cv_negative_eai=${ac_cv_negative_eai=yes}
+apr_cv_gai_addrconfig=${apr_cv_gai_addrconfig=no}
+ac_cv_o_nonblock_inherited=${ac_cv_o_nonblock_inherited=no}
+apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
+
+# binutils (libiberty)
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+ac_cv_type_int=${ac_cv_type_int=yes}
+ac_cv_type_uintptr_t=${ac_cv_type_uintptr_t=yes}
+liberty_cv_uint64=${liberty_cv_uint64=uint64_t}
+
+#samba
+ac_cv_func_memcmp_working=${ac_cv_func_memcmp_working=yes}
+fu_cv_sys_stat_statvfs64=${fu_cv_sys_stat_statvfs64=yes}
+samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=${samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no}
+samba_cv_HAVE_BROKEN_GETGROUPS=${samba_cv_HAVE_BROKEN_GETGROUPS=no}
+samba_cv_HAVE_BROKEN_READDIR=${samba_cv_HAVE_BROKEN_READDIR=yes}
+samba_cv_HAVE_BROKEN_READDIR_NAME=${samba_cv_HAVE_BROKEN_READDIR_NAME=no}
+samba_cv_HAVE_C99_VSNPRINTF=${samba_cv_HAVE_C99_VSNPRINTF=yes}
+samba_cv_HAVE_DEV64_T=${samba_cv_HAVE_DEV64_T=no}
+samba_cv_HAVE_DEVICE_MAJOR_FN=${samba_cv_HAVE_DEVICE_MAJOR_FN=yes}
+samba_cv_HAVE_DEVICE_MINOR_FN=${samba_cv_HAVE_DEVICE_MINOR_FN=yes}
+samba_cv_HAVE_FCNTL_LOCK=${samba_cv_HAVE_FCNTL_LOCK=yes}
+samba_cv_HAVE_FTRUNCATE_EXTEND=${samba_cv_HAVE_FTRUNCATE_EXTEND=yes}
+samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+samba_cv_HAVE_IFACE_AIX=${samba_cv_HAVE_IFACE_AIX=no}
+samba_cv_HAVE_IFACE_IFCONF=${samba_cv_HAVE_IFACE_IFCONF=yes}
+samba_cv_HAVE_IFACE_IFREQ=${samba_cv_HAVE_IFACE_IFREQ=yes}
+samba_cv_HAVE_INO64_T=${samba_cv_HAVE_INO64_T=no}
+samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=${samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes}
+samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=${samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes}
+samba_cv_HAVE_KERNEL_SHARE_MODES=${samba_cv_HAVE_KERNEL_SHARE_MODES=yes}
+samba_cv_HAVE_MAKEDEV=${samba_cv_HAVE_MAKEDEV=yes}
+samba_cv_HAVE_MMAP=${samba_cv_HAVE_MMAP=yes}
+samba_cv_HAVE_OFF64_T=${samba_cv_HAVE_OFF64_T=no}
+samba_cv_HAVE_SECURE_MKSTEMP=${samba_cv_HAVE_SECURE_MKSTEMP=yes}
+samba_cv_HAVE_SENDFILE64=${samba_cv_HAVE_SENDFILE64=yes}
+samba_cv_HAVE_SENDFILE=${samba_cv_HAVE_SENDFILE=yes}
+samba_cv_HAVE_STRUCT_FLOCK64=${samba_cv_HAVE_STRUCT_FLOCK64=yes}
+samba_cv_HAVE_TRUNCATED_SALT=${samba_cv_HAVE_TRUNCATED_SALT=no}
+samba_cv_HAVE_UNSIGNED_CHAR=${samba_cv_HAVE_UNSIGNED_CHAR=yes}
+samba_cv_HAVE_WORKING_AF_LOCAL=${samba_cv_HAVE_WORKING_AF_LOCAL=yes}
+samba_cv_LINUX_LFS_SUPPORT=${samba_cv_LINUX_LFS_SUPPORT=yes}
+samba_cv_REALPATH_TAKES_NULL=${samba_cv_REALPATH_TAKES_NULL=yes}
+samba_cv_REPLACE_INET_NTOA=${samba_cv_REPLACE_INET_NTOA=no}
+samba_cv_REPLACE_READDIR=${samba_cv_REPLACE_READDIR=no}
+samba_cv_SIZEOF_DEV_T=${samba_cv_SIZEOF_DEV_T=yes}
+samba_cv_SIZEOF_INO_T=${samba_cv_SIZEOF_INO_T=yes}
+samba_cv_SIZEOF_OFF_T=${samba_cv_SIZEOF_OFF_T=yes}
+samba_cv_STAT_STATVFS64=${samba_cv_STAT_STATVFS64=yes}
+samba_cv_USE_SETEUID=${samba_cv_USE_SETEUID=yes}
+samba_cv_USE_SETRESUID=${samba_cv_USE_SETRESUID=yes}
+samba_cv_USE_SETREUID=${samba_cv_USE_SETREUID=yes}
+samba_cv_USE_SETUIDX=${samba_cv_USE_SETUIDX=yes}
+samba_cv_have_longlong=${samba_cv_have_longlong=yes}
+samba_cv_have_setresgid=${samba_cv_have_setresgid=yes}
+samba_cv_have_setresuid=${samba_cv_have_setresuid=yes}
+
+#monotone
+ac_cv_sync_with_stdio=${ac_cv_sync_with_stdio=yes}
+ac_cv_sync_with_stdio_2=${ac_cv_sync_with_stdio_2=yes}
+
+# mysql
+mysql_cv_func_atomic_sub=${mysql_cv_func_atomic_sub=no}
+mysql_cv_func_atomic_add=${mysql_cv_func_atomic_add=no}
+ac_cv_conv_longlong_to_float=${ac_cv_conv_longlong_to_float=yes}
+
+# sudo
+sudo_cv_uid_t_len=${sudo_cv_uid_t_len=10}
+
diff --git a/site/powerpc-linux b/site/powerpc-linux
index d3e079a4ed..bea14d5a75 100644
--- a/site/powerpc-linux
+++ b/site/powerpc-linux
@@ -1,315 +1,5 @@
-ac_cv_func_getpgrp_void=yes
-ac_cv_func_setpgrp_void=yes
-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_setvbuf_reversed=no
-ac_cv_sizeof___int64=${ac_cv_sizeof___int64=0}
-ac_cv_sizeof_char=${ac_cv_sizeof_char=1}
-ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
-ac_cv_sizeof_long=${ac_cv_sizeof_long=4}
-ac_cv_sizeof_long_int=${ac_cv_sizeof_long_int=4}
-ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
-ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
-ac_cv_sizeof_short_int=${ac_cv_sizeof_short_int=2}
-ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=4}
-ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4}
-ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8}
-
-ac_cv_sys_restartable_syscalls=yes
-ac_cv_type___int64=${ac_cv_type___int64=no}
-ac_cv_type_size_t=${ac_cv_type_size_t=yes}
-ac_cv_type_void_p=${ac_cv_type_void_p=yes}
-ac_cv_uchar=${ac_cv_uchar=no}
-ac_cv_uint=${ac_cv_uint=yes}
-ac_cv_ulong=${ac_cv_ulong=yes}
-ac_cv_ushort=${ac_cv_ushort=yes}
-
-mr_cv_target_elf=${mr_cv_target_elf=yes}
-
-ac_cv_time_r_type=${ac_cv_time_r_type=POSIX}
-cookie_io_functions_use_off64_t=${cookie_io_functions_use_off64_t=yes}
-
# libc
libc_cv_ppc_machine=${libc_cv_ppc_machine=yes}
libc_cv_mlong_double_128ibm=${libc_cv_mlong_double_128ibm=yes}
libc_cv_mabi_ibmlongdouble=${libc_cv_mabi_ibmlongdouble=yes}
libc_cv_mlong_double_128=${libc_cv_mlong_double_128=yes}
-
-# apache
-ac_cv_func_pthread_key_delete=${ac_cv_func_pthread_key_delete=yes}
-apr_cv_process_shared_works=${apr_cv_process_shared_works=no}
-ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
-
-ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
-ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
-ac_cv_sctp=${ac_cv_sctp=no}
-
-# ssh
-ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
-ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
-ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
-ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
-ac_cv_type_struct_timespec=${ac_cv_type_struct_timespec=yes}
-ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=yes}
-
-# coreutils
-utils_cv_sys_open_max=${utils_cv_sys_open_max=1019}
-
-# libpcap
-ac_cv_linux_vers=${ac_cv_linux_vers=2}
-
-# nano
-ac_cv_regexec_segfault_emptystr=${ac_cv_regexec_segfault_emptystr=no}
-nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
-
-# libnet
-ac_cv_libnet_endianess=${ac_cv_libnet_endianess=big}
-ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
-
-# screen
-screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
-screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
-screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
-screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
-screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
-screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
-screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
-screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
-screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
-
-ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_slashed_symlink=yes}
-ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
-ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
-ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
-
-# socat
-ac_cv_ispeed_offset=${ac_cv_ispeed_offset=13}
-sc_cv_termios_ispeed=${sc_cv_termios_ispeed=yes}
-
-# links
-ac_cv_lib_png_png_create_info_struct=${ac_cv_lib_png_png_create_info_struct=yes}
-
-# sleepycat db
-db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
-db_cv_sprintf_count=${db_cv_sprintf_count=yes}
-db_cv_path_ar=${db_cv_path_ar=/usr/bin/ar}
-db_cv_path_chmod=${db_cv_path_chmod=/bin/chmod}
-db_cv_path_cp=${db_cv_path_cp=/bin/cp}
-db_cv_path_ln=${db_cv_path_ln=/bin/ln}
-db_cv_path_mkdir=${db_cv_path_mkdir=/bin/mkdir}
-db_cv_path_ranlib=${db_cv_path_ranlib=/usr/bin/ranlib}
-db_cv_path_rm=${db_cv_path_rm=/bin/rm}
-db_cv_path_sh=${db_cv_path_sh=/bin/sh}
-db_cv_path_strip=${db_cv_path_strip=/usr/bin/strip}
-db_cv_align_t=${db_cv_align_t='unsigned long long'}
-db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
-db_cv_mutex=${db_cv_mutex=no}
-db_cv_posixmutexes=${db_cv_posixmutexes=no}
-db_cv_uimutexes=${db_cv_uimutexes=no}
-
-# php
-ac_cv_pread=${ac_cv_pread=no}
-ac_cv_pwrite=${ac_cv_pwrite=no}
-php_cv_lib_cookie_io_functions_use_off64_t=${php_cv_lib_cookie_io_functions_use_off64_t=yes}
-
-# glib
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
-glib_cv_stack_grows=${glib_cv_stack_grows=no}
-glib_cv_uscore=${glib_cv_uscore=no}
-glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
-glib_cv_has__inline=${glib_cv_has__inline=yes}
-glib_cv_has__inline__=${glib_cv_has__inline__=yes}
-glib_cv_hasinline=${glib_cv_hasinline=yes}
-glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_uscore=${glib_cv_uscore=no}
-glib_cv_va_copy=${glib_cv_va_copy=no}
-glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
-glib_cv___va_copy=${glib_cv___va_copy=yes}
-glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
-ac_cv_func_getpwuid_r=${ac_cv_func_getpwuid_r=yes}
-glib_cv_sys_pthread_mutex_trylock_posix=${glib_cv_sys_pthread_mutex_trylock_posix=yes}
-glib_cv_sys_pthread_getspecific_posix=${glib_cv_sys_pthread_getspecific_posix=yes}
-glib_cv_sys_pthread_cond_timedwait_posix=${glib_cv_sys_pthread_cond_timedwait_posix=yes}
-
-# ettercap
-ettercap_cv_type_socklen_t=${ettercap_cv_type_socklen_t=yes}
-
-# libesmtp
-acx_working_snprintf=${acx_working_snprintf=yes}
-
-# D-BUS
-ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
-
-# glib 2.0
-glib_cv_long_long_format=${glib_cv_long_long_format=ll}
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_sizeof_intmax_t=${glib_cv_sizeof_intmax_t=8}
-glib_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4}
-glib_cv_sizeof_size_t=${glib_cv_sizeof_size_t=4}
-glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
-glib_cv_sys_use_pid_niceness_surrogate=${glib_cv_sys_use_pid_niceness_surrogate=yes}
-
-glib_cv_strlcpy=${glib_cv_strlcpy=no}
-
-# httppc
-ac_cv_strerror_r_SUSv3=${ac_cv_strerror_r_SUSv3=no}
-
-# lftp
-ac_cv_need_trio=${ac_cv_need_trio=no}
-lftp_cv_va_copy=${lftp_cv_va_copy=no}
-lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
-lftp_cv___va_copy=${lftp_cv___va_copy=yes}
-
-# edb
-db_cv_spinlocks=${db_cv_spinlocks=no}
-
-# fget
-compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
-compat_cv_func_basename_works=${compat_cv_func_basename_works=no}
-compat_cv_func_dirname_works=${compat_cv_func_dirname_works=no}
-
-# slrn
-slrn_cv___va_copy=${slrn_cv___va_copy=yes}
-slrn_cv_va_copy=${slrn_cv_va_copy=no}
-slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
-ac_cv_func_realloc_works=${ac_cv_func_realloc_works=yes}
-ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes}
-ac_cv_func_malloc_works=${ac_cv_func_malloc_works=yes}
-ac_cv_func_malloc_0_nonnull=${ac_cv_func_malloc_0_nonnull=yes}
-
-# startup-notification
-lf_cv_sane_realloc=yes
-
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
-# ORBit2
-ac_cv_alignof_CORBA_boolean=1
-ac_cv_alignof_CORBA_char=1
-ac_cv_alignof_CORBA_double=4
-ac_cv_alignof_CORBA_float=4
-ac_cv_alignof_CORBA_long=4
-ac_cv_alignof_CORBA_long_double=4
-ac_cv_alignof_CORBA_long_long=4
-ac_cv_alignof_CORBA_octet=1
-ac_cv_alignof_CORBA_pointer=4
-ac_cv_alignof_CORBA_short=2
-ac_cv_alignof_CORBA_struct=4
-ac_cv_alignof_CORBA_wchar=2
-ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo=yes}
-
-# cvs
-cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
-
-# bash
-ac_cv_c_long_double=${ac_cv_c_long_double=yes}
-bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t=yes}
-bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=missing}
-bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no}
-bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no}
-bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=yes}
-bash_cv_sys_siglist=${bash_cv_sys_siglist=yes}
-bash_cv_dup2_broken=${bash_cv_dup2_broken=no}
-bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no}
-bash_cv_type_rlimit=${bash_cv_type_rlimit=rlim_t}
-bash_cv_getenv_redef=${bash_cv_getenv_redef=yes}
-bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=yes}
-bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen=no}
-bash_cv_printf_a_format=${bash_cv_printf_a_format=yes}
-bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no}
-bash_cv_job_control_missing=${bash_cv_job_control_missing=present}
-bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present}
-bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs=no}
-ac_cv_have_decl_sys_siglist=${ac_cv_have_decl_sys_siglist=yes}
-
-# openssh
-ac_cv_have_broken_dirname=${ac_cv_have_broken_dirname='yes'}
-ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_have_space_d_name_in_struct_dirent='no'}
-ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf='no'}
-ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug='yes'}
-ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr='no'}
-ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr='yes'}
-
-# vim
-ac_cv_sizeof_int=${ac_cv_sizeof_int='4'}
-
-#modphp
-ac_cv_c_bigendian_php=${ac_cv_c_bigendian_php=yes}
-ac_cv_sizeof_ptrdiff_t=${ac_cv_sizeof_ptrdiff_t=0}
-ac_cv_func_dlopen=${ac_cv_func_dlopen=yes}
-lt_cv_dlopen_self=${lt_cv_dlopen_self=yes}
-
-# apache2 (note other apache stanza in this file)
-ap_void_ptr_lt_long=${ap_void_ptr_lt_long=no}
-apr_cv_use_lfs64=${apr_cv_use_lfs64=yes}
-apr_cv_epoll=${apr_cv_epoll=yes}
-apr_cv_pthreads_cflags=${apr_cv_pthreads_cflags=-pthread}
-apr_cv_pthreads_lib=${apr_cv_pthreads_lib=-lpthread}
-apr_cv_mutex_recursive=${apr_cv_mutex_recursive=yes}
-ac_cv_func_mmap=${ac_cv_func_mmap=yes}
-ac_cv_file__dev_zero=${ac_cv_file__dev_zero=yes}
-ac_cv_sizeof_off_t=${ac_cv_sizeof_off_t=4}
-ac_cv_sizeof_pid_t=${ac_cv_sizeof_pid_t=4}
-ac_cv_socklen_t=${ac_cv_socklen_t=yes}
-ac_cv_struct_rlimit=${ac_cv_struct_rlimit=yes}
-ac_cv_negative_eai=${ac_cv_negative_eai=yes}
-apr_cv_gai_addrconfig=${apr_cv_gai_addrconfig=no}
-ac_cv_o_nonblock_inherited=${ac_cv_o_nonblock_inherited=no}
-apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
-
-# binutils (libiberty)
-ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
-ac_cv_type_int=${ac_cv_type_int=yes}
-ac_cv_type_uintptr_t=${ac_cv_type_uintptr_t=yes}
-liberty_cv_uint64=${liberty_cv_uint64=uint64_t}
-
-#samba
-ac_cv_func_memcmp_working=${ac_cv_func_memcmp_working=yes}
-fu_cv_sys_stat_statvfs64=${fu_cv_sys_stat_statvfs64=yes}
-samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=${samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no}
-samba_cv_HAVE_BROKEN_GETGROUPS=${samba_cv_HAVE_BROKEN_GETGROUPS=no}
-samba_cv_HAVE_BROKEN_READDIR=${samba_cv_HAVE_BROKEN_READDIR=yes}
-samba_cv_HAVE_BROKEN_READDIR_NAME=${samba_cv_HAVE_BROKEN_READDIR_NAME=no}
-samba_cv_HAVE_C99_VSNPRINTF=${samba_cv_HAVE_C99_VSNPRINTF=yes}
-samba_cv_HAVE_DEV64_T=${samba_cv_HAVE_DEV64_T=no}
-samba_cv_HAVE_DEVICE_MAJOR_FN=${samba_cv_HAVE_DEVICE_MAJOR_FN=yes}
-samba_cv_HAVE_DEVICE_MINOR_FN=${samba_cv_HAVE_DEVICE_MINOR_FN=yes}
-samba_cv_HAVE_FCNTL_LOCK=${samba_cv_HAVE_FCNTL_LOCK=yes}
-samba_cv_HAVE_FTRUNCATE_EXTEND=${samba_cv_HAVE_FTRUNCATE_EXTEND=yes}
-samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
-samba_cv_HAVE_IFACE_AIX=${samba_cv_HAVE_IFACE_AIX=no}
-samba_cv_HAVE_IFACE_IFCONF=${samba_cv_HAVE_IFACE_IFCONF=yes}
-samba_cv_HAVE_IFACE_IFREQ=${samba_cv_HAVE_IFACE_IFREQ=yes}
-samba_cv_HAVE_INO64_T=${samba_cv_HAVE_INO64_T=no}
-samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=${samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes}
-samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=${samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes}
-samba_cv_HAVE_KERNEL_SHARE_MODES=${samba_cv_HAVE_KERNEL_SHARE_MODES=yes}
-samba_cv_HAVE_MAKEDEV=${samba_cv_HAVE_MAKEDEV=yes}
-samba_cv_HAVE_MMAP=${samba_cv_HAVE_MMAP=yes}
-samba_cv_HAVE_OFF64_T=${samba_cv_HAVE_OFF64_T=no}
-samba_cv_HAVE_SECURE_MKSTEMP=${samba_cv_HAVE_SECURE_MKSTEMP=yes}
-samba_cv_HAVE_SENDFILE64=${samba_cv_HAVE_SENDFILE64=yes}
-samba_cv_HAVE_SENDFILE=${samba_cv_HAVE_SENDFILE=yes}
-samba_cv_HAVE_STRUCT_FLOCK64=${samba_cv_HAVE_STRUCT_FLOCK64=yes}
-samba_cv_HAVE_TRUNCATED_SALT=${samba_cv_HAVE_TRUNCATED_SALT=no}
-samba_cv_HAVE_UNSIGNED_CHAR=${samba_cv_HAVE_UNSIGNED_CHAR=yes}
-samba_cv_HAVE_WORKING_AF_LOCAL=${samba_cv_HAVE_WORKING_AF_LOCAL=yes}
-samba_cv_LINUX_LFS_SUPPORT=${samba_cv_LINUX_LFS_SUPPORT=yes}
-samba_cv_REALPATH_TAKES_NULL=${samba_cv_REALPATH_TAKES_NULL=yes}
-samba_cv_REPLACE_INET_NTOA=${samba_cv_REPLACE_INET_NTOA=no}
-samba_cv_REPLACE_READDIR=${samba_cv_REPLACE_READDIR=no}
-samba_cv_SIZEOF_DEV_T=${samba_cv_SIZEOF_DEV_T=yes}
-samba_cv_SIZEOF_INO_T=${samba_cv_SIZEOF_INO_T=yes}
-samba_cv_SIZEOF_OFF_T=${samba_cv_SIZEOF_OFF_T=yes}
-samba_cv_STAT_STATVFS64=${samba_cv_STAT_STATVFS64=yes}
-samba_cv_USE_SETEUID=${samba_cv_USE_SETEUID=yes}
-samba_cv_USE_SETRESUID=${samba_cv_USE_SETRESUID=yes}
-samba_cv_USE_SETREUID=${samba_cv_USE_SETREUID=yes}
-samba_cv_USE_SETUIDX=${samba_cv_USE_SETUIDX=yes}
-samba_cv_have_longlong=${samba_cv_have_longlong=yes}
-samba_cv_have_setresgid=${samba_cv_have_setresgid=yes}
-samba_cv_have_setresuid=${samba_cv_have_setresuid=yes}
diff --git a/site/powerpc-linux-uclibc b/site/powerpc-linux-uclibc
index aa9fd6bba3..e69de29bb2 100644
--- a/site/powerpc-linux-uclibc
+++ b/site/powerpc-linux-uclibc
@@ -1,200 +0,0 @@
-ac_cv_func_getpgrp_void=yes
-ac_cv_func_setpgrp_void=yes
-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_setvbuf_reversed=no
-ac_cv_sizeof___int64=${ac_cv_sizeof___int64=0}
-ac_cv_sizeof_char=${ac_cv_sizeof_char=1}
-ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
-ac_cv_sizeof_long=${ac_cv_sizeof_long=4}
-ac_cv_sizeof_long_int=${ac_cv_sizeof_long_int=4}
-ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
-ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
-ac_cv_sizeof_short_int=${ac_cv_sizeof_short_int=2}
-ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=4}
-ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4}
-ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8}
-
-ac_cv_sys_restartable_syscalls=yes
-ac_cv_type___int64=${ac_cv_type___int64=no}
-ac_cv_type_size_t=${ac_cv_type_size_t=yes}
-ac_cv_type_void_p=${ac_cv_type_void_p=yes}
-ac_cv_uchar=${ac_cv_uchar=no}
-ac_cv_uint=${ac_cv_uint=yes}
-ac_cv_ulong=${ac_cv_ulong=yes}
-ac_cv_ushort=${ac_cv_ushort=yes}
-
-mr_cv_target_elf=${mr_cv_target_elf=yes}
-
-ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
-ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
-ac_cv_time_r_type=${ac_cv_time_r_type=POSIX}
-cookie_io_functions_use_off64_t=${cookie_io_functions_use_off64_t=yes}
-
-
-# apache
-ac_cv_func_pthread_key_delete=${ac_cv_func_pthread_key_delete=yes}
-apr_cv_process_shared_works=${apr_cv_process_shared_works=no}
-ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
-
-ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
-ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
-ac_cv_sctp=${ac_cv_sctp=no}
-
-# ssh
-ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
-ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
-ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
-ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
-ac_cv_type_struct_timespec=${ac_cv_type_struct_timespec=yes}
-ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=yes}
-
-# coreutils
-utils_cv_sys_open_max=${utils_cv_sys_open_max=1019}
-
-# libpcap
-ac_cv_linux_vers=${ac_cv_linux_vers=2}
-
-# nano
-ac_cv_regexec_segfault_emptystr=${ac_cv_regexec_segfault_emptystr=no}
-nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
-
-# libnet
-ac_cv_libnet_endianess=${ac_cv_libnet_endianess=big}
-
-
-
-# socat
-ac_cv_ispeed_offset=${ac_cv_ispeed_offset=13}
-sc_cv_termios_ispeed=${sc_cv_termios_ispeed=yes}
-
-# links
-ac_cv_lib_png_png_create_info_struct=${ac_cv_lib_png_png_create_info_struct=yes}
-
-# sleepycat db
-db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
-db_cv_sprintf_count=${db_cv_sprintf_count=yes}
-db_cv_path_ar=${db_cv_path_ar=/usr/bin/ar}
-db_cv_path_chmod=${db_cv_path_chmod=/bin/chmod}
-db_cv_path_cp=${db_cv_path_cp=/bin/cp}
-db_cv_path_ln=${db_cv_path_ln=/bin/ln}
-db_cv_path_mkdir=${db_cv_path_mkdir=/bin/mkdir}
-db_cv_path_ranlib=${db_cv_path_ranlib=/usr/bin/ranlib}
-db_cv_path_rm=${db_cv_path_rm=/bin/rm}
-db_cv_path_sh=${db_cv_path_sh=/bin/sh}
-db_cv_path_strip=${db_cv_path_strip=/usr/bin/strip}
-db_cv_align_t=${db_cv_align_t='unsigned long long'}
-db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
-db_cv_mutex=${db_cv_mutex=no}
-db_cv_posixmutexes=${db_cv_posixmutexes=no}
-db_cv_uimutexes=${db_cv_uimutexes=no}
-
-# php
-ac_cv_pread=${ac_cv_pread=no}
-ac_cv_pwrite=${ac_cv_pwrite=no}
-php_cv_lib_cookie_io_functions_use_off64_t=${php_cv_lib_cookie_io_functions_use_off64_t=yes}
-
-
-# ettercap
-ettercap_cv_type_socklen_t=${ettercap_cv_type_socklen_t=yes}
-
-# libesmtp
-acx_working_snprintf=${acx_working_snprintf=yes}
-
-# D-BUS
-ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
-
-# glib 2.0
-glib_cv_long_long_format=${glib_cv_long_long_format=ll}
-glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
-glib_cv_sizeof_intmax_t=${glib_cv_sizeof_intmax_t=8}
-glib_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4}
-glib_cv_sizeof_size_t=${glib_cv_sizeof_size_t=4}
-glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
-glib_cv_sys_use_pid_niceness_surrogate=${glib_cv_sys_use_pid_niceness_surrogate=yes}
-
-glib_cv_strlcpy=${glib_cv_strlcpy=no}
-
-# httppc
-ac_cv_strerror_r_SUSv3=${ac_cv_strerror_r_SUSv3=no}
-
-# lftp
-ac_cv_need_trio=${ac_cv_need_trio=no}
-lftp_cv_va_copy=${lftp_cv_va_copy=no}
-lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
-lftp_cv___va_copy=${lftp_cv___va_copy=yes}
-
-# edb
-db_cv_spinlocks=${db_cv_spinlocks=no}
-
-# fget
-compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
-compat_cv_func_basename_works=${compat_cv_func_basename_works=no}
-compat_cv_func_dirname_works=${compat_cv_func_dirname_works=no}
-
-# slrn
-slrn_cv___va_copy=${slrn_cv___va_copy=yes}
-slrn_cv_va_copy=${slrn_cv_va_copy=no}
-slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
-ac_cv_func_realloc_works=${ac_cv_func_realloc_works=yes}
-ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes}
-ac_cv_func_malloc_works=${ac_cv_func_malloc_works=yes}
-ac_cv_func_malloc_0_nonnull=${ac_cv_func_malloc_0_nonnull=yes}
-
-# startup-notification
-lf_cv_sane_realloc=yes
-
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
-# ORBit2
-ac_cv_alignof_CORBA_boolean=1
-ac_cv_alignof_CORBA_char=1
-ac_cv_alignof_CORBA_double=4
-ac_cv_alignof_CORBA_float=4
-ac_cv_alignof_CORBA_long=4
-ac_cv_alignof_CORBA_long_double=4
-ac_cv_alignof_CORBA_long_long=4
-ac_cv_alignof_CORBA_octet=1
-ac_cv_alignof_CORBA_pointer=4
-ac_cv_alignof_CORBA_short=2
-ac_cv_alignof_CORBA_struct=4
-ac_cv_alignof_CORBA_wchar=2
-ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo=yes}
-
-# cvs
-cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
-
-# bash
-ac_cv_c_long_double=${ac_cv_c_long_double=yes}
-bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t=yes}
-bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=missing}
-bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no}
-bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no}
-bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=yes}
-bash_cv_sys_siglist=${bash_cv_sys_siglist=yes}
-bash_cv_dup2_broken=${bash_cv_dup2_broken=no}
-bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no}
-bash_cv_type_rlimit=${bash_cv_type_rlimit=rlim_t}
-bash_cv_getenv_redef=${bash_cv_getenv_redef=yes}
-bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=yes}
-bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen=no}
-bash_cv_printf_a_format=${bash_cv_printf_a_format=yes}
-bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no}
-bash_cv_job_control_missing=${bash_cv_job_control_missing=present}
-bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present}
-bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs=no}
-ac_cv_have_decl_sys_siglist=${ac_cv_have_decl_sys_siglist=yes}
-
-# openssh
-ac_cv_have_broken_dirname=${ac_cv_have_broken_dirname='yes'}
-ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_have_space_d_name_in_struct_dirent='no'}
-ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf='no'}
-ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug='yes'}
-ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr='no'}
-ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr='yes'}
-
-# vim
-ac_cv_sizeof_int=${ac_cv_sizeof_int='4'}
diff --git a/site/sh-common b/site/sh-common
index da34d36015..76c464da20 100644
--- a/site/sh-common
+++ b/site/sh-common
@@ -30,13 +30,12 @@ ac_cv_uint=${ac_cv_uint=yes}
ac_cv_ulong=${ac_cv_ulong=yes}
ac_cv_ushort=${ac_cv_ushort=yes}
-mr_cv_target_elf=${mr_cv_target_elf=yes}
-
ac_cv_time_r_type=${ac_cv_time_r_type=POSIX}
# apache
ac_cv_func_pthread_key_delete=${ac_cv_func_pthread_key_delete=yes}
apr_cv_process_shared_works=${apr_cv_process_shared_works=no}
+apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
@@ -296,4 +295,3 @@ ac_cv_func_mmap_fixed_mapped=${ac_cv_func_mmap_fixed_mapped=yes}
# libnet
ac_cv_lbl_unaligned_fail=${ac_cv_lbl_unaligned_fail=no}
ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
-ac_cv_libnet_endianess=${ac_cv_libnet_endianess=lil}
diff --git a/site/sparc-linux b/site/sparc-linux
index 49abe7c389..491dc74bf4 100644
--- a/site/sparc-linux
+++ b/site/sparc-linux
@@ -22,14 +22,19 @@ ac_cv_sizeof_unsigned_long=${ac_cv_sizeof_unsigned_long=4}
ac_cv_sizeof_unsigned_long_long=${ac_cv_sizeof_unsigned_long_long=8}
ac_cv_sizeof_signed_char=${ac_cv_sizeof_signed_char=1}
+ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8}
+libc_cv_mlong_double_128ibm=${libc_cv_mlong_double_128ibm=yes}
+libc_cv_mlong_double_128=${libc_cv_mlong_double_128=yes}
+ac_cv_alignof_CORBA_long_double=4
+ac_cv_c_long_double=${ac_cv_c_long_double=yes}
+
+
ac_cv_sys_restartable_syscalls=yes
ac_cv_uchar=${ac_cv_uchar=no}
ac_cv_uint=${ac_cv_uint=yes}
ac_cv_ulong=${ac_cv_ulong=yes}
ac_cv_ushort=${ac_cv_ushort=yes}
-mr_cv_target_elf=${mr_cv_target_elf=yes}
-
ac_cv_time_r_type=${ac_cv_time_r_type=POSIX}
cookie_io_functions_use_off64_t=${cookie_io_functions_use_off64_t=yes}
@@ -39,3 +44,15 @@ am_cv_sys_posix_termios=${am_cv_sys_posix_termios=yes}
# gettext
am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+#glib
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_uscore=${glib_cv_uscore=no}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+
+#linux
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+#bash
+bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t=yes}
diff --git a/site/x86_64-linux b/site/x86_64-linux
index 1453a86b76..3c47a5654f 100644
--- a/site/x86_64-linux
+++ b/site/x86_64-linux
@@ -9,7 +9,6 @@ ac_cv_func_setpgrp_void=${ac_cv_func_setpgrp_void=yes}
ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no}
ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
-ac_cv_libnet_endianess=${ac_cv_libnet_endianess=lil}
ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
ac_cv_linux_vers=${ac_cv_linux_vers=2}
ac_cv_need_trio=${ac_cv_need_trio=no}
@@ -20,6 +19,7 @@ ac_cv_sizeof_long=${ac_cv_sizeof_long=8}
ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=16}
ac_cv_sizeof_long_int=${ac_cv_sizeof_long_int=8}
ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
+ac_cv_sizeof_off_t=${ac_cv_sizeof_off_t=8}
ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
ac_cv_sizeof_short_int=${ac_cv_sizeof_short_int=2}
ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=8}
@@ -29,7 +29,7 @@ bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t=yes}
db_cv_alignp_t=${db_cv_alignp_t='unsigned long long'}
db_cv_align_t=${db_cv_align_t='unsigned long long'}
db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
-db_cv_mutex=${db_cv_mutex=x86_64/gcc-assembly}}
+db_cv_mutex=${db_cv_mutex=POSIX/pthreads/library}
db_cv_path_ar=${db_cv_path_ar=/usr/bin/ar}
db_cv_path_chmod=${db_cv_path_chmod=/bin/chmod}
db_cv_path_cp=${db_cv_path_cp=/bin/cp}
@@ -62,7 +62,6 @@ glib_cv___va_copy=${glib_cv___va_copy=yes}
glib_cv_va_copy=${glib_cv_va_copy=yes}
glib_cv_va_val_copy=${glib_cv_va_val_copy=no}
lftp_cv_va_copy=${lftp_cv_va_copy=yes}
-mr_cv_target_elf=${mr_cv_target_elf=yes}
nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
samba_cv_HAVE_VA_COPY=${samba_cv_HAVE_VA_COPY=yes}
screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
diff --git a/site/x86_64-linux-uclibc b/site/x86_64-linux-uclibc
index 4e391b2c2e..fe235d05e2 100644
--- a/site/x86_64-linux-uclibc
+++ b/site/x86_64-linux-uclibc
@@ -9,7 +9,6 @@ ac_cv_func_setpgrp_void=${ac_cv_func_setpgrp_void=yes}
ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no}
ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
-ac_cv_libnet_endianess=${ac_cv_libnet_endianess=lil}
ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
ac_cv_linux_vers=${ac_cv_linux_vers=2}
ac_cv_need_trio=${ac_cv_need_trio=no}
@@ -62,7 +61,6 @@ glib_cv___va_copy=${glib_cv___va_copy=yes}
glib_cv_va_copy=${glib_cv_va_copy=yes}
glib_cv_va_val_copy=${glib_cv_va_val_copy=no}
lftp_cv_va_copy=${lftp_cv_va_copy=yes}
-mr_cv_target_elf=${mr_cv_target_elf=yes}
nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
samba_cv_HAVE_VA_COPY=${samba_cv_HAVE_VA_COPY=yes}
screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}